diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..9a196e3 --- /dev/null +++ b/.clang-format @@ -0,0 +1,217 @@ +--- +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortEnumsOnASingleLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: All +AllowShortLambdasOnASingleLine: All +AllowShortIfStatementsOnASingleLine: AllIfsAndElse +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Attach +BreakBeforeInheritanceComma: false +BreakInheritanceList: BeforeColon +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 0 +CommentPragmas: '^ IWYU pragma:' +QualifierAlignment: Leave +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DeriveLineEnding: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +PackConstructorInitializers: BinPack +BasedOnStyle: '' +ConstructorInitializerAllOnOneLineOrOnePerLine: false +AllowAllConstructorInitializersOnNextLine: true +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseLabels: false +IndentCaseBlocks: false +IndentGotoLabels: true +IndentPPDirectives: None +IndentExternBlock: AfterExternBlock +IndentRequiresClause: true +IndentWidth: 2 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertTrailingCommas: None +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +LambdaBodyIndentation: Signature +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +PenaltyIndentedWhitespace: 0 +PointerAlignment: Right +PPIndentWidth: -1 +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RequiresClausePosition: OwnLine +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceAroundPointerQualifiers: Default +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParentheses: false +SpacesInSquareBrackets: false +SpaceBeforeSquareBrackets: false +BitFieldColonSpacing: Both +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseCRLF: false +UseTab: Never +WhitespaceSensitiveMacros: + - STRINGIZE + - PP_STRINGIZE + - BOOST_PP_STRINGIZE + - NS_SWIFT_NAME + - CF_SWIFT_NAME +IndentWidth: 2 +... + diff --git a/.gitignore b/.gitignore index f676fde..b8dca54 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .git/ +.obj/ bin/ build/ *.o diff --git a/Makefile b/Makefile index 2c1f0c2..a167f2f 100755 --- a/Makefile +++ b/Makefile @@ -3,27 +3,40 @@ MAKEFLAGS = --jobs=$(PROCS) UNAME != uname -QFLAGS = -O3 -DDBG=0 -DED=1 -INFO = rel +# Options +# DBG --- build with debugging symbols and logging +# ED --- build with or without editor +# OPT --- Optimize + +QFLAGS := + +ifdef DBG + QFLAGS += -O0 -g -DDBG + INFO = dbg + + ifeq ($(CC),tcc) + QFLAGS += + endif + +else + QFLAGS += -O2 + INFO = rel + CC = gcc +endif + +ifdef OPT + QFLAGS += -flto +endif + +ifdef ED + QFLAGS += -DED +endif + PTYPE != uname -m -# Options -# DBG=0,1 --- build with debugging symbols and logging -# ED=0,1 --- build with or without editor +BIN = bin/$(CC)/$(INFO)/ - -ifeq ($(DBG), 1) - QFLAGS = -O0 -g -DDBG=1 -DED=1 - INFO = dbg -endif - -ifeq ($(ED), 0) - QFLAGS = -DED=0 - INFO = ed -endif - -BIN = bin/ -objprefix = $(BIN)obj/$(INFO) +objprefix = $(BIN)obj define prefix echo $(1) | tr " " "\n" | sed 's/.*/$(2)&$(3)/' @@ -36,76 +49,96 @@ define rm rm $${tmp} endef -define findindir - find $(1) -maxdepth 1 -type f -name '$(2)' -endef - # All other sources edirs != find source -type d -name include -edirs += source/engine source/engine/thirdparty/Nuklear -ehead != $(call findindir, source/engine,*.h) +subengs = sound 3d + +ifeq ($(DBG), 1) + subengs += debug +endif + +edirs += source/engine $(addprefix source/engine/, $(subengs)) source/engine/thirdparty/Nuklear +ehead != find source/engine source/engine/sound source/engine/debug -maxdepth 1 -type f -name *.h eobjects != find source/engine -type f -name '*.c' | sed -r 's|^(.*)\.c|$(objprefix)/\1.o|' # Gets all .c files and makes .o refs eobjects != $(call rm,$(eobjects),sqlite pl_mpeg_extract_frames pl_mpeg_player yugine nuklear) -includeflag != $(call prefix,$(edirs),-I) +engincs != find source/engine -maxdepth 1 -type d +includeflag != find source -type d -name include +includeflag += $(engincs) source/engine/thirdparty/Nuklear +includeflag := $(addprefix -I, $(includeflag)) -WARNING_FLAGS = -Wall -pedantic -Wextra -Wwrite-strings -Wno-incompatible-function-pointer-types -Wno-incompatible-pointer-types -Wno-unused-function +WARNING_FLAGS = -Wall -Wno-incompatible-function-pointer-types -Wno-unused-function# -pedantic -Wextra -Wwrite-strings -Wno-incompatible-function-pointer-types -Wno-incompatible-pointer-types -Wno-unused-function SEM = 0.0.1 -COM != git rev-parse --short HEAD +COM != fossil describe VER = $(SEM)-$(COM) -COMPILER_FLAGS = $(includeflag) $(QFLAGS) -MD $(WARNING_FLAGS) -DVER=\"$(VER)\" -DINFO=\"$(INFO)\" -c $< -o $@ +COMPILER_FLAGS = $(includeflag) $(QFLAGS) -MD $(WARNING_FLAGS) -I. -DCP_USE_DOUBLES=0 -DTINYSPLINE_FLOAT_PRECISION -DVER=\"$(VER)\" -DINFO=\"$(INFO)\" -c $< -o $@ -LIBPATH = -Lbin -L/usr/local/lib +LIBPATH = -L$(BIN) ifeq ($(OS), WIN32) - LINKER_FLAGS = $(QFLAGS) - ELIBS = engine pthread mruby glfw3 opengl32 gdi32 ws2_32 ole32 winmm setupapi m + LINKER_FLAGS = $(QFLAGS) -static + ELIBS = engine ucrt yughc glfw3 opengl32 gdi32 ws2_32 ole32 winmm setupapi m CLIBS = EXT = .exe else - LINKER_FLAGS = $(QFLAGS) - ELIBS = engine pthread yughc portaudio asound jack glfw3 c m dl + LINKER_FLAGS = $(QFLAGS) -L/usr/local/lib -pthread -rdynamic + ELIBS = engine pthread yughc quickjs glfw3 GL c m dl CLIBS = - EXT = endif -ELIBS != $(call prefix, $(ELIBS), -l) -ELIBS := $(CLIBS) $(ELIBS) +NAME = yugine$(EXT) +ELIBS != $(call prefix, $(ELIBS), -l) +CLIBS != $(call prefix, $(CLIBS), -l); objects = $(eobjects) DEPENDS = $(objects:.o=.d) -include $(DEPENDS) -yuginec = source/engine/yugine.c - ENGINE = $(BIN)libengine.a INCLUDE = $(BIN)include +SCRIPTS = $(shell ls source/scripts/*.js) + LINK = $(LIBPATH) $(LINKER_FLAGS) $(ELIBS) MYTAG = $(VER)_$(PTYPE)_$(INFO) -.PHONY: yugine +DIST = $(NAME)-$(MYTAG).tar.gz -yugine: $(objprefix)/source/engine/yugine.o $(ENGINE) - @echo $(CC) - @echo Linking yugine - $(CC) $< $(LINK) -o yugine +yugine: $(BIN)yugine + +$(NAME): $(BIN)$(NAME) + +$(BIN)$(NAME): $(objprefix)/source/engine/yugine.o $(ENGINE) $(BIN)libquickjs.a + @echo Linking $(NAME) + $(CC) $< $(LINK) -o $(BIN)$(NAME) @echo Finished build -dist: yugine - mkdir -p bin/dist - cp yugine bin/dist - cp -rf assets/fonts bin/dist - cp -rf source/scripts bin/dist - cp -rf source/shaders bin/dist - tar -czf yugine-$(MYTAG).tar.gz --directory bin/dist . +$(BIN)$(DIST): $(BIN)$(NAME) source/shaders/* $(SCRIPTS) assets/* + @echo Creating distribution $(DIST) + @mkdir -p $(BIN)dist + @cp $(BIN)$(NAME) $(BIN)dist + @cp -rf assets/* $(BIN)dist + @cp -rf source/shaders $(BIN)dist + @cp -r source/scripts $(BIN)dist + @tar czf $(DIST) --directory $(BIN)dist . + @mv $(DIST) $(BIN) -install: yugine - cp yugine ~/.local/bin +$(BIN)libquickjs.a: + make -C quickjs clean + make -C quickjs libquickjs.a libquickjs.lto.a CC=$(CC) + cp quickjs/libquickjs.* $(BIN) + +dist: $(BIN)$(DIST) + +install: $(BIN)$(DIST) + @echo Unpacking $(DIST) in $(DESTDIR) + @cp $(BIN)$(DIST) $(DESTDIR) + @tar xzf $(DESTDIR)/$(DIST) -C $(DESTDIR) + @rm $(DESTDIR)/$(DIST) $(ENGINE): $(eobjects) @echo Making library engine.a @@ -118,8 +151,12 @@ $(objprefix)/%.o:%.c @echo Making C object $@ @$(CC) $(COMPILER_FLAGS) +.PHONY: docs +docs: + asciidoctor docs/*.adoc + .PHONY: clean clean: @echo Cleaning project - @find $(BIN) -type f -delete - @rm -rf source/portaudio/build source/glfw/build + @rm -rf bin/* + @rm -f *.gz diff --git a/assets/data/gamecontrollerdb.txt b/assets/data/gamecontrollerdb.txt new file mode 100644 index 0000000..fecd09d --- /dev/null +++ b/assets/data/gamecontrollerdb.txt @@ -0,0 +1,1908 @@ +# Game Controller DB for SDL in 2.0.16 format +# Source: https://github.com/gabomdq/SDL_GameControllerDB + +# Windows +03000000300f00000a01000000000000,3 In 1 Conversion Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b8,x:b3,y:b0,platform:Windows, +03000000fa2d00000100000000000000,3dRudder Foot Motion Controller,leftx:a0,lefty:a1,rightx:a5,righty:a2,platform:Windows, +03000000d0160000040d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000d0160000050d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000d0160000060d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000d0160000070d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000d0160000600a000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000c82d00000031000000000000,8BitDo Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000531000000000000,8BitDo Adapter 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000951000000000000,8BitDo Dogbone,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a2,rightx:a3,righty:a5,start:b11,platform:Windows, +03000000008000000210000000000000,8BitDo F30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +030000003512000011ab000000000000,8BitDo F30 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000c82d00001028000000000000,8BitDo F30 Arcade Joystick,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d000011ab000000000000,8BitDo F30 Arcade Joystick,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000801000000900000000000000,8BitDo F30 Arcade Stick,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001038000000000000,8BitDo F30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000090000000000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001251000000000000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001151000000000000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000150000000000000,8BitDo M30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000151000000000000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a2,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000650000000000000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00005106000000000000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,guide:b2,leftshoulder:b8,lefttrigger:b9,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000310000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000451000000000000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a2,rightx:a3,righty:a5,start:b11,platform:Windows, +03000000c82d00002028000000000000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00008010000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d0000e002000000000000,8BitDo N30,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,start:b6,platform:Windows, +03000000c82d00000190000000000000,8BitDo N30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001590000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00006528000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000290000000000000,8BitDo N64,+rightx:b9,+righty:b3,-rightx:b4,-righty:b8,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,platform:Windows, +03000000c82d00003038000000000000,8BitDo N64,+rightx:b9,+righty:b3,-rightx:b4,-righty:b8,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,platform:Windows, +030000003512000012ab000000000000,8BitDo NES30,a:b2,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Windows, +03000000c82d000012ab000000000000,8BitDo NES30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000022000000090000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000203800000900000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00002038000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000751000000000000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000851000000000000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000360000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000361000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000660000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000131000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000231000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000331000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000431000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00002867000000000000,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a2,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a5,start:b10,x:b3,y:b4,platform:Windows, +03000000c82d00000130000000000000,8BitDo SF30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000060000000000000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000061000000000000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000102800000900000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d000021ab000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00003028000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +030000003512000020ab000000000000,8BitDo SN30,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000030000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000351000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a2,rightshoulder:b7,rightx:a3,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001290000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d000020ab000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00004028000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00006228000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000021000000000000,8BitDo SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000260000000000000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000261000000000000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001130000000000000,8BitDo Ultimate Wired,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001230000000000000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001330000000000000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000121000000000000,8BitDo Xbox One SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000a00500003232000000000000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001890000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00003032000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +030000008f0e00001200000000000000,Acme GA02,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000c01100000355000000000000,Acrux,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000fa190000f0ff000000000000,Acteck AGJ 3200,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d1180000402c000000000000,ADT1,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a3,rightx:a2,righty:a5,x:b3,y:b4,platform:Windows, +03000000341a00003608000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00000263000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001101000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001401000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001402000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001901000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001a01000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001301000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00001302000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00001304000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00001413000000000000,Afterglow Xbox Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00003901000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ab1200000103000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000000f9000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000100000008200000000000000,Akishop Customs PS360,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000007c1800000006000000000000,Alienware Dual Compatible PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000491900001904000000000000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +03000000710100001904000000000000,Amazon Luna Controller,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b8,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b4,rightstick:b7,rightx:a3,righty:a4,start:b6,x:b3,y:b2,platform:Windows, +03000000830500000160000000000000,Arcade,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b3,x:b4,y:b4,platform:Windows, +03000000120c0000100e000000000000,Armor 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000490b00004406000000000000,ASCII Seamic Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000869800002500000000000000,Astro C40 TR PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000a30c00002700000000000000,Astro City Mini,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000a30c00002800000000000000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000050b00000579000000000000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000050b00000679000000000000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000503200000110000000000000,Atari VCS Classic Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,start:b3,platform:Windows, +03000000503200000210000000000000,Atari VCS Modern Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows, +03000000e4150000103f000000000000,Batarang,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d6200000e557000000000000,Batarang PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000c01100001352000000000000,Battalife Joystick,a:b6,b:b7,back:b2,leftshoulder:b0,leftx:a0,lefty:a1,rightshoulder:b1,start:b3,x:b4,y:b5,platform:Windows, +030000006f0e00003201000000000000,Battlefield 4 PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ad1b000001f9000000000000,BB 070,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000002a79000000000000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000bc2000005250000000000000,Beitong G3,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:b9,rightx:a3,righty:a4,start:b15,x:b3,y:b4,platform:Windows, +030000000d0500000208000000000000,Belkin Nostromo N40,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000bc2000006012000000000000,Betop 2126F,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000bc2000000055000000000000,Betop BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000bc2000006312000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000bc2000006321000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000bc2000006412000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c01100000555000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c01100000655000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000790000000700000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000808300000300000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +030000006f0e00006401000000000000,BF One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +03000000300f00000202000000000000,Bigben,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a5,righty:a2,start:b7,x:b2,y:b3,platform:Windows, +030000006b1400000209000000000000,Bigben,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006b1400000055000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006b1400000103000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +03000000120c0000200e000000000000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000210e000000000000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f10e000000000000,Brook PS2 Adapter,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000310c000000000000,Brook Super Converter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000d81d00000b00000000000000,Buffalo BSGP1601 Series,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,platform:Windows, +030000005b1c00002400000000000000,Capcom Home Arcade Controller,a:b3,b:b4,back:b7,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b6,x:b0,y:b1,platform:Windows, +030000005b1c00002500000000000000,Capcom Home Arcade Controller,a:b3,b:b4,back:b7,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b6,x:b0,y:b1,platform:Windows, +030000006d04000042c2000000000000,ChillStream,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000e82000006058000000000000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000457500000401000000000000,Cobra,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000b0400003365000000000000,Competition Pro,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Windows, +030000004c050000c505000000000000,CronusMax Adapter,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000d814000007cd000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000d8140000cefa000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000260900008888000000000000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a4,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Windows, +030000003807000002cb000000000000,Cyborg,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000a306000022f6000000000000,Cyborg V.3 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000f806000000a3000000000000,DA Leader,a:b7,b:b6,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b0,leftstick:b8,lefttrigger:b1,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:b3,rightx:a2,righty:a3,start:b12,x:b4,y:b5,platform:Windows, +030000001a1c00000001000000000000,Datel Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000451300000830000000000000,Defender Game Racer X7,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000791d00000103000000000000,Dual Box Wii,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c0160000e105000000000000,Dual Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +030000004f040000070f000000000000,Dual Power,a:b8,b:b9,back:b4,dpdown:b1,dpleft:b2,dpright:b3,dpup:b0,leftshoulder:b13,leftstick:b6,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b12,rightstick:b7,righttrigger:b15,start:b5,x:b10,y:b11,platform:Windows, +030000004f04000012b3000000000000,Dual Power 3,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000004f04000020b3000000000000,Dual Trigger,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +03000000bd12000002e0000000000000,Dual Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows, +03000000ff1100003133000000000000,DualForce,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b1,platform:Windows, +030000008f0e00000910000000000000,DualShock 2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows, +03000000317300000100000000000000,DualShock 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +030000006f0e00003001000000000000,EA Sports PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000fc0400000250000000000000,Easy Grip,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +030000006e0500000a20000000000000,Elecom DUX60 MMO,a:b2,b:b3,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b14,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b15,righttrigger:b13,rightx:a3,righty:a4,start:b20,x:b0,y:b1,platform:Windows, +03000000b80500000410000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +03000000b80500000610000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +030000006e0500000520000000000000,Elecom P301U PlayStation Controller Adapter,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +03000000411200004450000000000000,Elecom U1012,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000320000000000000,Elecom U3613M,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000e20000000000000,Elecom U3912T,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000f20000000000000,Elecom U4013S,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500001320000000000000,Elecom U4113,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006e0500001020000000000000,Elecom U4113S,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000720000000000000,Elecom W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +030000007d0400000640000000000000,Eliminator AfterShock,a:b1,b:b2,back:b9,dpdown:+a3,dpleft:-a5,dpright:+a5,dpup:-a3,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a4,righty:a2,start:b8,x:b0,y:b3,platform:Windows, +03000000120c0000f61c000000000000,Elite,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000430b00000300000000000000,EMS Production PS2 Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000242f000000b7000000000000,ESM 9110,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Windows, +03000000101c0000181c000000000000,Essential,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b4,leftx:a1,lefty:a0,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +030000008f0e00000f31000000000000,EXEQ,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +03000000341a00000108000000000000,EXEQ RF Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006f0e00008401000000000000,Faceoff Deluxe Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00008001000000000000,Faceoff Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000021000000090000000000000,FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +0300000011040000c600000000000000,FC801,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000852100000201000000000000,FF GP1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ad1b000028f0000000000000,Fightpad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b00002ef0000000000000,Fightpad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000038f0000000000000,Fightpad TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03005036852100000000000000000000,Final Fantasy XIV Online Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000f806000001a3000000000000,Firestorm,a:b9,b:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b0,leftstick:b10,lefttrigger:b1,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,start:b12,x:b8,y:b4,platform:Windows, +03000000b50700000399000000000000,Firestorm 2,a:b2,b:b4,back:b10,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,righttrigger:b9,start:b11,x:b3,y:b5,platform:Windows, +03000000b50700001302000000000000,Firestorm D3,a:b0,b:b2,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,x:b1,y:b3,platform:Windows, +03000000b40400001024000000000000,Flydigi Apex,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000151900004000000000000000,Flydigi Vader 2,a:b27,b:b26,back:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b23,leftstick:b17,lefttrigger:b21,leftx:a0,lefty:a1,misc1:b15,paddle1:b11,paddle2:b10,paddle3:b13,paddle4:b12,rightshoulder:b22,rightstick:b16,righttrigger:b20,rightx:a3,righty:a4,start:b18,x:b25,y:b24,platform:Windows, +03000000b40400001124000000000000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b14,paddle1:b4,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b2,y:b3,platform:Windows, +03000000b40400001224000000000000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b2,paddle1:b16,paddle2:b17,paddle3:b14,paddle4:b15,rightshoulder:b7,rightstick:b13,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +030000008305000000a0000000000000,G08XU,a:b0,b:b1,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b5,x:b2,y:b3,platform:Windows, +0300000066f700000100000000000000,Game VIB Joystick,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows, +03000000260900002625000000000000,GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,lefttrigger:a4,leftx:a0,lefty:a1,righttrigger:a5,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Windows, +03000000341a000005f7000000000000,GameCube Controller,a:b2,b:b3,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b1,y:b0,platform:Windows, +03000000430b00000500000000000000,GameCube Controller,a:b0,b:b2,dpdown:b10,dpleft:b8,dpright:b9,dpup:b11,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a3,rightx:a5,righty:a2,start:b7,x:b1,y:b3,platform:Windows, +03000000790000004718000000000000,GameCube Controller,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000790000004618000000000000,GameCube Controller Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +030000008f0e00000d31000000000000,Gamepad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ac0500003d03000000000000,GameSir G3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000ac0500005b05000000000000,GameSir G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000ac0500002d02000000000000,GameSir G4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000ac0500004d04000000000000,GameSir G4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000ac0500001a06000000000000,GameSir-T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +030000004c0e00001035000000000000,Gamester,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00001110000000000000,GameStick Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +0300000047530000616d000000000000,GameStop,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000c01100000140000000000000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000b62500000100000000000000,Gametel GT004 01,a:b3,b:b0,dpdown:b10,dpleft:b9,dpright:b8,dpup:b11,leftshoulder:b4,rightshoulder:b5,start:b7,x:b1,y:b2,platform:Windows, +030000008f0e00001411000000000000,Gamo2 Divaller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000a857000000000000,Gator Claw,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000c9110000f055000000000000,GC100XF,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000008305000009a0000000000000,Genius,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000008305000031b0000000000000,Genius Maxfire Blaze 3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000451300000010000000000000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000005c1a00003330000000000000,Genius MaxFire Grandias 12V,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000300f00000b01000000000000,GGE909 Recoil,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000f0250000c283000000000000,Gioteck PlayStation Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f025000021c1000000000000,Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f025000031c1000000000000,Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f0250000c383000000000000,Gioteck VX2 PlayStation Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f0250000c483000000000000,Gioteck VX2 PlayStation Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000004f04000026b3000000000000,GP XID,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +0300000079000000d418000000000000,GPD Win,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c6240000025b000000000000,GPX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000007d0400000840000000000000,Gravis Destroyer Tilt,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,x:b0,y:b3,platform:Windows, +030000007d0400000540000000000000,Gravis Eliminator Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000280400000140000000000000,Gravis GamePad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a3,dpup:-a4,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000008f0e00000610000000000000,GreenAsia,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a5,righty:a2,start:b11,x:b3,y:b0,platform:Windows, +03000000ac0500006b05000000000000,GT2a,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000341a00000302000000000000,Hama Scorpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00004900000000000000,Hatsune Miku Sho PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000001008000001e1000000000000,Havit HV G60,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b0,platform:Windows, +030000000d0f00000c00000000000000,HEXT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d81400000862000000000000,HitBox Edition Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, +03000000632500002605000000000000,HJD X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +030000000d0f00000a00000000000000,Hori DOA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00008500000000000000,Hori Fighting Commander 2016 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002500000000000000,Hori Fighting Commander 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002d00000000000000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005f00000000000000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005e00000000000000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00008400000000000000,Hori Fighting Commander 5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005100000000000000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00008600000000000000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f0000ba00000000000000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00008800000000000000,Hori Fighting Stick mini 4 (PS3),a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows, +030000000d0f00008700000000000000,Hori Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00001000000000000000,Hori Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00003200000000000000,Hori Fightstick 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000c000000000000000,Hori Fightstick 4,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00000d00000000000000,Hori Fightstick EX2,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00003701000000000000,Hori Fightstick Mini,a:b1,b:b0,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Windows, +030000000d0f00004000000000000000,Hori Fightstick Mini 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002100000000000000,Hori Fightstick V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002700000000000000,Hori Fightstick V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000a000000000000000,Hori Grip TAC4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b13,x:b0,y:b3,platform:Windows, +030000000d0f0000a500000000000000,Hori Miku Project Diva X HD PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000a600000000000000,Hori Miku Project Diva X HD PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00000101000000000000,Hori Mini Hatsune Miku FT,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005400000000000000,Hori Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00000900000000000000,Hori Pad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00004d00000000000000,Hori Pad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00003801000000000000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,platform:Windows, +030000000d0f00009200000000000000,Hori Pokken Tournament DX Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002301000000000000,Hori PS4 Controller Light,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +030000000d0f00001100000000000000,Hori Real Arcade Pro 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002600000000000000,Hori Real Arcade Pro 3P,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00004b00000000000000,Hori Real Arcade Pro 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006a00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006b00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00008a00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00008b00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006f00000000000000,Hori Real Arcade Pro 4 VLX,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00007000000000000000,Hori Real Arcade Pro 4 VLX,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00003d00000000000000,Hori Real Arcade Pro N3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b10,leftstick:b4,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b6,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000ae00000000000000,Hori Real Arcade Pro N4,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00008c00000000000000,Hori Real Arcade Pro P4,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f0000aa00000000000000,Hori Real Arcade Pro S,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000d800000000000000,Hori Real Arcade Pro S,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00002200000000000000,Hori Real Arcade Pro V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005b00000000000000,Hori Real Arcade Pro V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005c00000000000000,Hori Real Arcade Pro V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000af00000000000000,Hori Real Arcade Pro VHS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00001b00000000000000,Hori Real Arcade Pro VX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000002f5000000000000,Hori Real Arcade Pro VX,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00009c00000000000000,Hori TAC Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000c900000000000000,Hori Taiko Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000c100000000000000,Horipad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006400000000000000,Horipad 3TP,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00001300000000000000,Horipad 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005500000000000000,Horipad 4 FPS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006e00000000000000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006600000000000000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00004200000000000000,Horipad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000ad1b000001f5000000000000,Horipad EXT2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f0000ee00000000000000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006700000000000000,Horipad One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f0000dc00000000000000,Horipad Switch,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000242e00000b20000000000000,Hyperkin Admiral N64 Controller,+rightx:b11,+righty:b13,-rightx:b8,-righty:b12,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,platform:Windows, +03000000242e0000ff0b000000000000,Hyperkin N64 Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,platform:Windows, +03000000790000004e95000000000000,Hyperkin N64 Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a5,righty:a2,start:b9,platform:Windows, +03000000242e00006a38000000000000,Hyperkin Trooper 2,a:b0,b:b1,back:b4,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b3,start:b5,platform:Windows, +03000000d81d00000e00000000000000,iBuffalo AC02 Arcade Joystick,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,rightx:a2,righty:a5,start:b8,x:b4,y:b5,platform:Windows, +03000000d81d00000f00000000000000,iBuffalo BSGP1204 Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d81d00001000000000000000,iBuffalo BSGP1204P Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000005c0a00000285000000000000,iDroidCon,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b6,platform:Windows, +03000000696400006964000000000000,iDroidCon Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000b50700001403000000000000,Impact Black,a:b2,b:b3,back:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +030000006f0e00002401000000000000,Injustice Fightstick PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000830500005130000000000000,InterAct ActionPad,a:b0,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000ef0500000300000000000000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows, +03000000fd0500000230000000000000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a5,start:b11,x:b0,y:b1,platform:Windows, +03000000fd0500000030000000000000,Interact GoPad,a:b3,b:b4,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Windows, +03000000fd0500003902000000000000,InterAct Hammerhead,a:b3,b:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b2,lefttrigger:b8,rightshoulder:b7,rightstick:b5,righttrigger:b9,start:b10,x:b0,y:b1,platform:Windows, +03000000fd0500002a26000000000000,InterAct Hammerhead FX,a:b3,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b0,y:b1,platform:Windows, +03000000fd0500002f26000000000000,InterAct Hammerhead FX,a:b4,b:b5,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b1,y:b2,platform:Windows, +03000000fd0500005302000000000000,InterAct ProPad,a:b3,b:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Windows, +03000000ac0500002c02000000000000,Ipega Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000491900000204000000000000,Ipega PG9023,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000491900000304000000000000,Ipega PG9087,+righty:+a5,-righty:-a4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,start:b11,x:b3,y:b4,platform:Windows, +030000007e0500000620000000000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Windows, +030000007e0500000720000000000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows, +03000000250900000017000000000000,Joypad Adapter,a:b2,b:b1,back:b9,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b8,x:b3,y:b0,platform:Windows, +03000000bd12000003c0000000000000,Joypad Alpha Shock,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ff1100004033000000000000,JPD FFB,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a2,start:b15,x:b3,y:b0,platform:Windows, +03000000242f00002d00000000000000,JYS Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000242f00008a00000000000000,JYS Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows, +03000000c4100000c082000000000000,KADE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000828200000180000000000000,Keio,a:b4,b:b5,back:b8,leftshoulder:b2,lefttrigger:b3,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b9,x:b0,y:b1,platform:Windows, +03000000790000000200000000000000,King PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000bd12000001e0000000000000,Leadership,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +030000006f0e00000103000000000000,Logic3,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00000104000000000000,Logic3,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000008f0e00001300000000000000,Logic3,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000006d040000d1ca000000000000,Logitech ChillStream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d040000d2ca000000000000,Logitech Cordless Precision,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d04000011c2000000000000,Logitech Cordless Wingman,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b2,righttrigger:b7,rightx:a3,righty:a4,x:b4,platform:Windows, +030000006d04000016c2000000000000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d0400001dc2000000000000,Logitech F310,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006d04000018c2000000000000,Logitech F510,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d0400001ec2000000000000,Logitech F510,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006d04000019c2000000000000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d0400001fc2000000000000,Logitech F710,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006d0400001ac2000000000000,Logitech Precision,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000006d04000009c2000000000000,Logitech WingMan,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, +030000006d0400000bc2000000000000,Logitech WingMan Action Pad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b8,lefttrigger:a5~,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:a2~,start:b8,x:b3,y:b4,platform:Windows, +030000006d0400000ac2000000000000,Logitech WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Windows, +03000000380700005645000000000000,Lynx,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000222200006000000000000000,Macally,a:b1,b:b2,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b33,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700003888000000000000,Mad Catz Arcade Fightstick TE S Plus PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008532000000000000,Mad Catz Arcade Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700006352000000000000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700006652000000000000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000380700005032000000000000,Mad Catz Fightpad Pro PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700005082000000000000,Mad Catz Fightpad Pro PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008031000000000000,Mad Catz FightStick Alpha PS3 ,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000003807000038b7000000000000,Mad Catz Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03000000380700008433000000000000,Mad Catz Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008483000000000000,Mad Catz Fightstick TE S PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008134000000000000,Mad Catz Fightstick TE2 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008184000000000000,Mad Catz Fightstick TE2 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,leftstick:b10,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700006252000000000000,Mad Catz Micro CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008232000000000000,Mad Catz PlayStation Brawlpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008731000000000000,Mad Catz PlayStation Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000003807000056a8000000000000,Mad Catz PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700001888000000000000,Mad Catz SFIV Fightstick PS3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000380700008081000000000000,Mad Catz SFV Arcade Fightstick Alpha PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700001847000000000000,Mad Catz Street Fighter 4 Xbox 360 FightStick,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03000000380700008034000000000000,Mad Catz TE2 PS3 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008084000000000000,Mad Catz TE2 PS4 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000002a0600001024000000000000,Matricom,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows, +030000009f000000adbb000000000000,MaxJoypad Virtual Controller,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900000128000000000000,Mayflash Arcade Stick,a:b1,b:b2,back:b8,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b5,y:b6,platform:Windows, +030000008f0e00001330000000000000,Mayflash Controller Adapter,a:b1,b:b2,back:b8,dpdown:h0.8,dpleft:h0.2,dpright:h0.1,dpup:h0.4,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3~,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000242f00003700000000000000,Mayflash F101,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000790000003018000000000000,Mayflash F300 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000242f00003900000000000000,Mayflash F300 Elite Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000790000004418000000000000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000790000004318000000000000,Mayflash GameCube Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000242f00007300000000000000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows, +0300000079000000d218000000000000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d620000010a7000000000000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000790000007918000000000000,Mayflash N64 Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,righttrigger:b7,rightx:a3,righty:a2,start:b8,platform:Windows, +030000008f0e00001030000000000000,Mayflash Saturn Adapter,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:b7,rightshoulder:b6,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +0300000025090000e803000000000000,Mayflash Wii Classic Adapter,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:a5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +03000000790000000318000000000000,Mayflash Wii DolphinBar,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +03000000790000000018000000000000,Mayflash Wii U Pro Adapter,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000790000002418000000000000,Mega Drive Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b2,start:b9,x:b3,y:b4,platform:Windows, +0300000079000000ae18000000000000,Mega Drive Controller,a:b0,b:b1,back:b7,dpdown:b14,dpleft:b15,dpright:b13,dpup:b2,rightshoulder:b6,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000c0160000990a000000000000,Mega Drive Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,righttrigger:b2,start:b3,platform:Windows, +030000005e0400002800000000000000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,y:b0,platform:Windows, +030000005e0400000300000000000000,Microsoft SideWinder,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, +030000005e0400000700000000000000,Microsoft SideWinder,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +030000005e0400000e00000000000000,Microsoft SideWinder Freestyle Pro,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,start:b8,x:b3,y:b4,platform:Windows, +030000005e0400002700000000000000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,righttrigger:b5,x:b2,y:b3,platform:Windows, +03000000280d00000202000000000000,Miller Lite Cantroller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,start:b5,x:b2,y:b3,platform:Windows, +03000000ad1b000023f0000000000000,MLG,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a6,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000ad1b00003ef0000000000000,MLG Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03000000380700006382000000000000,MLG PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ffff00000000000000000000,Mocute M053,a:b3,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b11,leftstick:b7,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b6,righttrigger:b4,rightx:a3,righty:a4,start:b8,x:b1,y:b0,platform:Windows, +03000000d6200000e589000000000000,Moga 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000007162000000000000,Moga Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +03000000d6200000ad0d000000000000,Moga Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c62400002a89000000000000,Moga XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c62400002b89000000000000,Moga XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c62400001a89000000000000,Moga XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c62400001b89000000000000,Moga XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000250900006688000000000000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000091200004488000000000000,MUSIA PlayStation 2 Input Display,a:b0,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b6,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b7,righttrigger:b11,rightx:a2,righty:a3,start:b5,x:b1,y:b3,platform:Windows, +03000000f70600000100000000000000,N64 Adaptoid,+rightx:b2,+righty:b1,-rightx:b4,-righty:b5,a:b0,b:b3,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,platform:Windows, +030000006b140000010c000000000000,Nacon GC 400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006b1400001106000000000000,Nacon Revolution 3 PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000006b140000100d000000000000,Nacon Revolution Infinity PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006b140000080d000000000000,Nacon Revolution Unlimited Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000bd12000001c0000000000000,Nebular,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000eb0300000000000000000000,NeGcon Adapter,a:a2,b:b13,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,lefttrigger:a4,leftx:a1,righttrigger:b11,start:b3,x:a3,y:b12,platform:Windows, +0300000038070000efbe000000000000,NEO SE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +0300000092120000474e000000000000,NeoGeo X Arcade Stick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b3,y:b2,platform:Windows, +03000000921200004b46000000000000,NES 2 port Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b11,platform:Windows, +03000000000f00000100000000000000,NES Controller,a:b1,b:b0,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Windows, +03000000921200004346000000000000,NES Controller,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Windows, +03000000790000004518000000000000,NEXILUX GameCube Controller Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +030000001008000001e5000000000000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Windows, +03000000050b00000045000000000000,Nexus,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Windows, +03000000152000000182000000000000,NGDS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000000d0500000308000000000000,Nostromo N45,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Windows, +030000007e0500001920000000000000,NSO N64 Controller,+rightx:b8,+righty:b2,-rightx:b3,-righty:b7,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Windows, +030000007e0500001720000000000000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b15,start:b9,x:b2,y:b3,platform:Windows, +03000000550900001472000000000000,NVIDIA Controller,a:b11,b:b10,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b5,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b4,righttrigger:a5,rightx:a3,righty:a6,start:b3,x:b9,y:b8,platform:Windows, +03000000550900001072000000000000,NVIDIA Shield,a:b9,b:b8,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b3,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b2,righttrigger:a4,rightx:a2,righty:a5,start:b0,x:b7,y:b6,platform:Windows, +030000005509000000b4000000000000,NVIDIA Virtual,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000120c00000288000000000000,Nyko Air Flo Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000004b120000014d000000000000,Nyko Airflo,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a3,leftstick:a0,lefttrigger:b6,rightshoulder:b5,rightstick:a2,righttrigger:b7,start:b9,x:b2,y:b3,platform:Windows, +03000000d62000001d57000000000000,Nyko Airflo PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000791d00000900000000000000,Nyko Playpad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000782300000a10000000000000,Onlive Controller,a:b15,b:b14,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b11,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b13,y:b12,platform:Windows, +030000000d0f00000401000000000000,Onyx,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000008916000001fd000000000000,Onza CE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a3,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000008916000000fd000000000000,Onza TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000006d57000000000000,OPP PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006b14000001a1000000000000,Orange Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000362800000100000000000000,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a3,righty:a4,x:b1,y:b2,platform:Windows, +03000000120c0000f60e000000000000,P4 Gamepad,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b7,rightshoulder:b4,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, +03000000790000002201000000000000,PC Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000006f0e00008501000000000000,PDP Fightpad Pro,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b0,platform:Windows, +030000006f0e00000901000000000000,PDP PS3 Versus Fighting,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000008f0e00004100000000000000,PlaySega,a:b1,b:b0,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b4,y:b3,platform:Windows, +03000000666600006706000000000000,PlayStation Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Windows, +03000000e30500009605000000000000,PlayStation Adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +030000004c050000da0c000000000000,PlayStation Classic Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000632500002306000000000000,PlayStation Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows, +03000000f0250000c183000000000000,PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d9040000160f000000000000,PlayStation Controller Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +030000004c0500003713000000000000,PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000d62000006dca000000000000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +0300000062060000d570000000000000,PowerA PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d620000013a7000000000000,PowerA Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d04000084ca000000000000,Precision,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000d62000009557000000000000,Pro Elite PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000c62400001a53000000000000,Pro Ex Mini,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000009f31000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d6200000c757000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000110e000000000000,Pro5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000100800000100000000000000,PS1 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +030000008f0e00007530000000000000,PS1 Controller,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b1,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000100800000300000000000000,PS2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000250900000088000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900006888000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b6,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900008888000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +030000006b1400000303000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000009d0d00001330000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000151a00006222000000000000,PS2 Dual Plus Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000120a00000100000000000000,PS3 Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000120c00001307000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c00001cf1000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f90e000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000250900000118000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900000218000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900000500000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows, +030000004c0500006802000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b10,lefttrigger:a3~,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:a4~,rightx:a2,righty:a5,start:b8,x:b3,y:b0,platform:Windows, +030000004f1f00000800000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000632500007505000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000888800000803000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Windows, +03000000888800000804000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Windows, +030000008f0e00000300000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +030000008f0e00001431000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ba2200002010000000000000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b2,platform:Windows, +03000000120c00000807000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000111e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000121e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000130e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000150e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000180e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000181e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000191e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c00001e0e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000a957000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000aa57000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f21c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f31c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f41c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f51c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f70e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000160e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000001a1e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004c050000a00b000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000004c050000cc09000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004c050000e60c000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000004c050000f20d000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000830500005020000000000000,PSX,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b2,y:b3,platform:Windows, +03000000300f00000111000000000000,Qanba 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00000211000000000000,Qanba 2P,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000300f00000011000000000000,Qanba Arcade Stick 1008,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b10,x:b0,y:b3,platform:Windows, +03000000300f00001611000000000000,Qanba Arcade Stick 4018,a:b1,b:b2,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows, +03000000222c00000025000000000000,Qanba Dragon Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000222c00000020000000000000,Qanba Drone Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001211000000000000,Qanba Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001210000000000000,Qanba Joystick Plus,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows, +03000000341a00000104000000000000,Qanba Joystick Q4RAF,a:b5,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b1,y:b2,platform:Windows, +03000000222c00000223000000000000,Qanba Obsidian Arcade Stick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000222c00000023000000000000,Qanba Obsidian Arcade Stick PS4,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000008a2400006682000000000000,R1 Mobile Controller,a:b3,b:b1,back:b7,leftx:a0,lefty:a1,start:b6,x:b4,y:b0,platform:Windows, +03000000086700006626000000000000,RadioShack,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +03000000ff1100004733000000000000,Ramox FPS Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b0,platform:Windows, +030000009b2800002300000000000000,Raphnet 3DO Adapter,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b2,start:b3,platform:Windows, +030000009b2800006900000000000000,Raphnet 3DO Adapter,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b2,start:b3,platform:Windows, +030000009b2800000800000000000000,Raphnet Dreamcast Adapter,a:b2,b:b1,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,lefttrigger:a2,leftx:a0,righttrigger:a3,righty:a1,start:b3,x:b10,y:b9,platform:Windows, +030000009b2800003200000000000000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows, +030000009b2800006000000000000000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows, +030000009b2800001800000000000000,Raphnet Jaguar Adapter,a:b2,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b10,start:b3,x:b11,y:b12,platform:Windows, +030000009b2800006300000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows, +030000009b2800000200000000000000,Raphnet NES Adapter,a:b7,b:b6,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,start:b4,platform:Windows, +030000009b2800004400000000000000,Raphnet PS1 and PS2 Adapter,a:b1,b:b2,back:b5,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b9,rightx:a3,righty:a4,start:b4,x:b0,y:b3,platform:Windows, +030000009b2800004300000000000000,Raphnet Saturn,a:b0,b:b1,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, +030000009b2800000500000000000000,Raphnet Saturn Adapter 2.0,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, +030000009b2800000300000000000000,Raphnet SNES Adapter,a:b0,b:b4,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +030000009b2800005600000000000000,Raphnet SNES Adapter,a:b1,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800005700000000000000,Raphnet SNES Adapter,a:b1,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800001e00000000000000,Raphnet Vectrex Adapter,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a1,lefty:a2,x:b2,y:b3,platform:Windows, +030000009b2800002b00000000000000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800002c00000000000000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800008000000000000000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Windows, +03000000321500000003000000000000,Razer Hydra,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000f8270000bf0b000000000000,Razer Kishi,a:b6,b:b7,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b18,leftshoulder:b12,leftstick:b19,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b13,rightstick:b20,righttrigger:b15,rightx:a2,righty:a5,start:b17,x:b9,y:b10,platform:Windows, +03000000321500000204000000000000,Razer Panthera PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000104000000000000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000010000000000000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000507000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000321500000707000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000321500000710000000000000,Razer Raiju TE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000a10000000000000,Razer Raiju TE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000410000000000000,Razer Raiju UE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000910000000000000,Razer Raiju UE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000011000000000000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000009000000000000,Razer Serval,+lefty:+a2,-lefty:-a1,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,leftx:a0,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000921200004547000000000000,Retro Bit Sega Genesis Controller Adapter,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b6,x:b3,y:b4,platform:Windows, +03000000790000001100000000000000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, +03000000830500006020000000000000,Retro Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b8,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03000000bd12000013d0000000000000,Retrolink Sega Saturn Classic Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,lefttrigger:b6,rightshoulder:b2,righttrigger:b7,start:b8,x:b3,y:b4,platform:Windows, +03000000bd12000015d0000000000000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000341200000400000000000000,RetroUSB N64 RetroPort,+rightx:b8,+righty:b10,-rightx:b9,-righty:b11,a:b7,b:b6,dpdown:b2,dpleft:b1,dpright:b0,dpup:b3,leftshoulder:b13,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b12,start:b4,platform:Windows, +0300000000f000000300000000000000,RetroUSB RetroPad,a:b1,b:b5,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows, +0300000000f00000f100000000000000,RetroUSB Super RetroPort,a:b1,b:b5,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows, +03000000830500000960000000000000,Revenger,a:b0,b:b1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b3,x:b4,y:b5,platform:Windows, +030000006b140000010d000000000000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000006b140000020d000000000000,Revolution Pro Controller 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000006b140000130d000000000000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001f01000000000000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00004601000000000000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c6240000fefa000000000000,Rock Candy Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00001e01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00002801000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00002f01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00008701000000000000,Rock Candy Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000050b0000e318000000000000,ROG Chakram,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b0000e518000000000000,ROG Chakram,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b00005819000000000000,ROG Chakram Core,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b0000181a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b00001a1a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b00001c1a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +030000004f04000001d0000000000000,Rumble Force,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000008916000000fe000000000000,Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c6240000045d000000000000,Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000a30600001af5000000000000,Saitek Cyborg,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000a306000023f6000000000000,Saitek Cyborg V.1 Game,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001201000000000000,Saitek Dual Analog,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000a30600000701000000000000,Saitek P220,a:b2,b:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,x:b0,y:b1,platform:Windows, +03000000a30600000cff000000000000,Saitek P2500 Force Rumble,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b0,y:b1,platform:Windows, +03000000a30600000d5f000000000000,Saitek P2600,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Windows, +03000000a30600000dff000000000000,Saitek P2600,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b8,x:b0,y:b3,platform:Windows, +03000000a30600000c04000000000000,Saitek P2900,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000a306000018f5000000000000,Saitek P3200,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001001000000000000,Saitek P480 Rumble,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000a30600000901000000000000,Saitek P880,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b8,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b5,rightx:a3,righty:a2,x:b0,y:b1,platform:Windows, +03000000a30600000b04000000000000,Saitek P990,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000a30600002106000000000000,Saitek PS1000 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000a306000020f6000000000000,Saitek PS2700 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001101000000000000,Saitek Rumble,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000e804000000a0000000000000,Samsung EIGP20,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c01100000252000000000000,Sanwa Easy Grip,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000c01100004350000000000000,Sanwa Micro Grip P3,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,x:b3,y:b2,platform:Windows, +03000000411200004550000000000000,Sanwa Micro Grip Pro,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a1,righty:a2,start:b9,x:b1,y:b3,platform:Windows, +03000000c01100004150000000000000,Sanwa Micro Grip Pro,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +03000000c01100004450000000000000,Sanwa Online Grip,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b11,righttrigger:b9,rightx:a3,righty:a2,start:b14,x:b3,y:b4,platform:Windows, +03000000730700000401000000000000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Windows, +03000000830500006120000000000000,Sanwa Smart Grip II,a:b0,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,x:b1,y:b3,platform:Windows, +03000000c01100000051000000000000,Satechi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +030000004f04000028b3000000000000,Score A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000952e00002577000000000000,Scuf PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000a30c00002500000000000000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Windows, +03000000a30c00002400000000000000,Sega Mega Drive Mini 6B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +0300000000050000289b000000000000,Sega Saturn Adapter,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, +0300000000f000000800000000000000,Sega Saturn Controller,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b7,righttrigger:b3,start:b0,x:b5,y:b6,platform:Windows, +03000000730700000601000000000000,Sega Saturn Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000b40400000a01000000000000,Sega Saturn Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, +030000003b07000004a1000000000000,SFX,a:b0,b:b2,back:b7,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b5,start:b8,x:b1,y:b3,platform:Windows, +03000000f82100001900000000000000,Shogun Bros Chameleon X1,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000120c00001c1e000000000000,SnakeByte 4S PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +0300000003040000c197000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +0300000081170000960a000000000000,SNES Controller,a:b4,b:b0,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b5,y:b1,platform:Windows, +03000000811700009d0a000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +030000008b2800000300000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +03000000921200004653000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +03000000ff000000cb01000000000000,Sony PlayStation Portable,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000341a00000208000000000000,Speedlink 6555,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:-a4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a3,righty:a2,start:b7,x:b2,y:b3,platform:Windows, +03000000341a00000908000000000000,Speedlink 6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000380700001722000000000000,Speedlink Competition Pro,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,x:b2,y:b3,platform:Windows, +030000008f0e00000800000000000000,Speedlink Strike FX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c01100000591000000000000,Speedlink Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d11800000094000000000000,Stadia Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b11,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows, +03000000de280000fc11000000000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000de280000ff11000000000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000120c0000160e000000000000,Steel Play Metaltech PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000110100001914000000000000,SteelSeries,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000381000001214000000000000,SteelSeries Free,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows, +03000000110100003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000381000003014000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000381000003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000381000001814000000000000,SteelSeries Stratus XL,a:b0,b:b1,back:b18,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b19,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b2,y:b3,platform:Windows, +03000000790000001c18000000000000,STK 7024X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000380700003847000000000000,Street Fighter Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,start:b7,x:b2,y:b3,platform:Windows, +030000001f08000001e4000000000000,Super Famicom Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000790000000418000000000000,Super Famicom Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b33,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000341200001300000000000000,Super Racer,a:b2,b:b3,back:b8,leftshoulder:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b7,x:b0,y:b1,platform:Windows, +03000000d620000011a7000000000000,Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000f600000000000000,Switch Hori Pad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000457500002211000000000000,Szmy Power PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000004f0400000ab1000000000000,T16000M,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b10,x:b2,y:b3,platform:Windows, +030000000d0f00007b00000000000000,TAC GEAR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000e40a00000207000000000000,Taito Egret II Mini Controller,a:b4,b:b2,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b9,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Windows, +03000000d814000001a0000000000000,TE Kitty,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000fa1900000706000000000000,Team 5,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000b50700001203000000000000,Techmobility X6-38V,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000ba2200000701000000000000,Technology Innovation PS2 Adapter,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b2,platform:Windows, +03000000c61100001000000000000000,Tencent Xianyou Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,x:b3,y:b4,platform:Windows, +03000000790000002601000000000000,TGZ,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +03000000591c00002400000000000000,THEC64 Joystick,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000591c00002600000000000000,THEGamepad,a:b2,b:b1,back:b6,leftx:a0,lefty:a1,start:b7,x:b3,y:b0,platform:Windows, +030000004f04000015b3000000000000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000004f04000023b3000000000000,Thrustmaster Dual Trigger PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004f0400000ed0000000000000,ThrustMaster eSwap Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004f04000008d0000000000000,ThrustMaster Ferrari 150 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Windows, +030000004f04000004b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000004f04000003d0000000000000,ThrustMaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:a3,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:a4,rightstick:b11,righttrigger:b5,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004f04000009d0000000000000,ThrustMaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d04000088ca000000000000,Thunderpad,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000666600000288000000000000,TigerGame PlayStation Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000666600000488000000000000,TigerGame PlayStation Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +030000004f04000007d0000000000000,TMini,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000571d00002100000000000000,Tomee NES Controller Adapter,a:b1,b:b0,back:b2,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,start:b3,platform:Windows, +03000000571d00002000000000000000,Tomee SNES Controller Adapter,a:b0,b:b1,back:b6,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000006000000000000000,Tournament PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000c01100000055000000000000,Tronsmart,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000005f140000c501000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000b80500000210000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000004f04000087b6000000000000,TWCS Throttle,dpdown:b8,dpleft:b9,dpright:b7,dpup:b6,leftstick:b5,lefttrigger:-a5,leftx:a0,lefty:a1,righttrigger:+a5,platform:Windows, +03000000411200000450000000000000,Twin Shock,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Windows, +03000000d90400000200000000000000,TwinShock PS2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000151900005678000000000000,Uniplay U6,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000101c0000171c000000000000,uRage Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000000b0400003065000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +03000000242f00006e00000000000000,USB Controller,a:b1,b:b4,back:b10,leftshoulder:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b7,rightx:a2,righty:a5,start:b11,x:b0,y:b3,platform:Windows, +03000000300f00000701000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000341a00002308000000000000,USB Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000666600000188000000000000,USB Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +030000006b1400000203000000000000,USB Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000790000000a00000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000b404000081c6000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +03000000b50700001503000000000000,USB Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000bd12000012d0000000000000,USB Controller,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000ff1100004133000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000632500002305000000000000,USB Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000790000001a18000000000000,Venom,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000790000001b18000000000000,Venom Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00000302000000000000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00000702000000000000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +0300000034120000adbe000000000000,vJoy Device,a:b0,b:b1,back:b15,dpdown:b6,dpleft:b7,dpright:b8,dpup:b5,guide:b16,leftshoulder:b9,leftstick:b13,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b14,righttrigger:b12,rightx:a3,righty:a4,start:b4,x:b2,y:b3,platform:Windows, +03000000120c0000ab57000000000000,Warrior Joypad JS083,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000007e0500003003000000000000,Wii U Pro,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,leftshoulder:b6,leftstick:b11,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b12,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +0300000032150000030a000000000000,Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +0300000032150000140a000000000000,Wolverine,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000002e160000efbe000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,rightshoulder:b5,righttrigger:b11,start:b7,x:b2,y:b3,platform:Windows, +03000000380700001647000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000380700002045000000000000,Xbox 360 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700002644000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a2,righty:a5,start:b8,x:b2,y:b3,platform:Windows, +03000000380700002647000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000003807000026b7000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000380700003647000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a7,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400001907000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400008e02000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400009102000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000000fd000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000001fd000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000016f0000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b00008e02000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c62400000053000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c6240000fdfa000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000380700002847000000000000,Xbox 360 Fightpad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000a102000000000000,Xbox 360 Wireless Receiver,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400000a0b000000000000,Xbox Adaptive Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000120c00000a88000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a2,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000120c00001088000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2~,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5~,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000002a0600002000000000000000,Xbox Controller,a:b0,b:b1,back:b13,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftshoulder:b5,leftstick:b14,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b15,righttrigger:b7,rightx:a2,righty:a5,start:b12,x:b2,y:b3,platform:Windows, +03000000300f00008888000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:b13,dpleft:b10,dpright:b11,dpup:b12,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000380700001645000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000380700002645000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000380700003645000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000380700008645000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400000202000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000005e0400008502000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400008702000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b7,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000005e0400008902000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b10,leftstick:b8,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b9,righttrigger:b4,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00006300000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400000c0b000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000d102000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000dd02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000e002000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000e302000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000ea02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000fd02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000ff02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e0000a802000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e0000c802000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c62400003a54000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000130b000000000000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000341a00000608000000000000,Xeox,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000450c00002043000000000000,Xeox SL6556BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006f0e00000300000000000000,XGear,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a5,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000172700004431000000000000,Xiaomi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a7,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000172700003350000000000000,Xiaomi XMGP01YM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000bc2000005060000000000000,Xiaomi XMGP01YM,+lefty:+a2,+righty:+a5,-lefty:-a1,-righty:-a4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,start:b11,x:b3,y:b4,platform:Windows, +xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000007d0400000340000000000000,Xterminator Digital Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:-a4,lefttrigger:+a4,leftx:a0,lefty:a1,paddle1:b7,paddle2:b6,rightshoulder:b5,rightstick:b9,righttrigger:b2,rightx:a3,righty:a5,start:b8,x:b3,y:b4,platform:Windows, +03000000790000004f18000000000000,ZDT Android Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000120c00000500000000000000,Zeroplus Adapter,a:b2,b:b1,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b0,righttrigger:b5,rightx:a3,righty:a2,start:b8,x:b3,y:b0,platform:Windows, +03000000120c0000101e000000000000,Zeroplus P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, + +# Mac OS X +030000008f0e00000300000009010000,2 In 1 Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000c82d00000031000001000000,8BitDo Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000531000000020000,8BitDo Adapter 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000951000000010000,8BitDo Dogbone,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Mac OS X, +03000000c82d00000090000001000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001038000000010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001251000000010000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001251000000020000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001151000000010000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001151000000020000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000a30c00002400000006020000,8BitDo M30,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,guide:b9,leftshoulder:b6,lefttrigger:b5,rightshoulder:b4,righttrigger:b7,start:b8,x:b3,y:b0,platform:Mac OS X, +03000000c82d00000151000000010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000650000001000000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00005106000000010000,8BitDo M30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b2,leftshoulder:b6,lefttrigger:a5,rightshoulder:b7,righttrigger:a4,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000451000000010000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Mac OS X, +03000000c82d00001590000001000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +030000003512000012ab000001000000,8BitDo NES30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d000012ab000001000000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00002028000000010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000022000000090000001000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000203800000900000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000190000001000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000751000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000851000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000660000000010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000660000000020000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000131000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000231000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000331000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000431000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00002867000000010000,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b3,y:b4,platform:Mac OS X, +03000000102800000900000000000000,8BitDo SFC30 Joystick,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000351000000010000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001290000001000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00004028000000010000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000160000001000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000161000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000260000001000000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000261000000010000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001130000000020000,8BitDo Ultimate Wired,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001330000001000000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001330000000020000,8BitDo Ultimate Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000a00500003232000008010000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000a00500003232000009010000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001890000001000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a31,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000491900001904000001010000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000710100001904000000010000,Amazon Luna Controller,a:b0,b:b1,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X, +03000000a30c00002700000003030000,Astro City Mini,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000a30c00002800000003030000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000050b00000579000000010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b42,paddle1:b9,paddle2:b11,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X, +03000000050b00000679000000010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b23,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X, +03000000503200000110000047010000,Atari VCS Classic Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b3,start:b2,platform:Mac OS X, +03000000503200000210000047010000,Atari VCS Modern Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000c62400001a89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X, +03000000c62400001b89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000d62000002a79000000010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000120c0000200e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000120c0000210e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000008305000031b0000000000000,Cideko AK08b,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000d8140000cecf000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000260900008888000088020000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000a306000022f6000001030000,Cyborg V3 Rumble Pad PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000791d00000103000009010000,Dual Box Wii Classic Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000006e0500000720000010020000,Elecom JC-W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Mac OS X, +030000006f0e00008401000003010000,Faceoff Premiere Wired Pro Controller for Nintendo Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b13,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000151900004000000001000000,Flydigi Vader 2,a:b14,b:b15,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Mac OS X, +03000000b40400001124000001040000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b14,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000b40400001224000003030000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b2,paddle1:b16,paddle2:b17,paddle3:b14,paddle4:b15,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000790000004618000000010000,GameCube Controller Adapter,a:b4,b:b0,dpdown:b56,dpleft:b60,dpright:b52,dpup:b48,lefttrigger:a12,leftx:a0,lefty:a4,rightshoulder:b28,righttrigger:a16,rightx:a20,righty:a8,start:b36,x:b8,y:b12,platform:Mac OS X, +03000000ac0500001a06000002020000,GameSir-T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000ad1b000001f9000000000000,Gamestop BB070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000c01100000140000000010000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006f0e00000102000000000000,GameStop Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000ff1100003133000007010000,GameWare PC Control Pad,a:b2,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Mac OS X, +030000007d0400000540000001010000,Gravis Eliminator Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000280400000140000000020000,Gravis GamePad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000008f0e00000300000007010000,GreenAsia Joystick,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Mac OS X, +030000000d0f00002d00000000100000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005f00000000000000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005f00000000010000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005e00000000000000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005e00000000010000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00008400000000010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00008500000000010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000341a00000302000014010000,Hori Fighting Stick Mini,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00008800000000010000,Hori Fighting Stick mini 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00008700000000010000,Hori Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00004d00000000000000,Hori Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00003801000008010000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,platform:Mac OS X, +030000000d0f00009200000000010000,Hori Pokken Tournament DX Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f0000aa00000072050000,Hori Real Arcade Pro,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000000d0f00000002000015010000,Hori Switch Split Pad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00006e00000000010000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00006600000000010000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00006600000000000000,Horipad FPS Plus 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f0000ee00000000010000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000242e0000ff0b000000010000,Hyperkin N64 Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,platform:Mac OS X, +03000000790000004e95000000010000,Hyperkin N64 Controller Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a5,righty:a2,start:b9,platform:Mac OS X, +03000000830500006020000000000000,iBuffalo Gamepad,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Mac OS X, +03000000ef0500000300000000020000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Mac OS X, +03000000fd0500000030000010010000,Interact GoPad,a:b3,b:b4,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Mac OS X, +030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Mac OS X, +030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000242f00002d00000007010000,JYS Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000006d04000019c2000000000000,Logitech Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000016c2000000020000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000016c2000000030000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000016c2000014040000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000016c2000000000000,Logitech F310,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000018c2000000000000,Logitech F510,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000019c2000005030000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d0400001fc2000000000000,Logitech F710,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000006d04000018c2000000010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700005032000000010000,Mad Catz PS3 Fightpad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700008433000000010000,Mad Catz PS3 Fightstick TE S Plus,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700005082000000010000,Mad Catz PS4 Fightpad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700008483000000010000,Mad Catz PS4 Fightstick TE S Plus,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000790000000600000007010000,Marvo GT-004,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000008f0e00001330000011010000,Mayflash Controller Adapter,a:b2,b:b4,back:b16,dpdown:h0.8,dpleft:h0.2,dpright:h0.1,dpup:h0.4,leftshoulder:b12,lefttrigger:b16,leftx:a0,lefty:a2,rightshoulder:b14,rightx:a6~,righty:a4,start:b18,x:b0,y:b6,platform:Mac OS X, +03000000790000004318000000010000,Mayflash GameCube Adapter,a:b4,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a12,leftx:a0,lefty:a4,rightshoulder:b28,righttrigger:a16,rightx:a20,righty:a8,start:b36,x:b8,y:b12,platform:Mac OS X, +03000000790000004418000000010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000242f00007300000000020000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Mac OS X, +0300000079000000d218000026010000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000d620000010a7000003010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000008f0e00001030000011010000,Mayflash Saturn Adapter,a:b0,b:b2,dpdown:b28,dpleft:b30,dpright:b26,dpup:b24,leftshoulder:b10,lefttrigger:b14,rightshoulder:b12,righttrigger:b4,start:b18,x:b6,y:b8,platform:Mac OS X, +0300000025090000e803000000000000,Mayflash Wii Classic Adapter,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Mac OS X, +03000000790000000318000000010000,Mayflash Wii DolphinBar,a:b8,b:b12,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b44,leftshoulder:b16,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b4,platform:Mac OS X, +03000000790000000018000000000000,Mayflash Wii U Pro Adapter,a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X, +03000000790000000018000000010000,Mayflash Wii U Pro Adapter,a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X, +030000005e0400002800000002010000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,y:b0,platform:Mac OS X, +030000005e0400000300000006010000,Microsoft SideWinder,a:b0,b:b1,back:b9,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Mac OS X, +030000005e0400000700000006010000,Microsoft SideWinder,a:b0,b:b1,back:b8,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Mac OS X, +030000005e0400002700000001010000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,righttrigger:b5,x:b2,y:b3,platform:Mac OS X, +03000000d62000007162000001000000,Moga Pro 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X, +03000000c62400002a89000000010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c62400002b89000000010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000632500007505000000020000,NeoGeo mini PAD Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000921200004b46000003020000,NES 2-port Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b11,platform:Mac OS X, +030000001008000001e5000006010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000d620000011a7000000020000,Nintendo Switch Core Plus Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000d620000011a7000010050000,Nintendo Switch PowerA Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +030000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +050000007e05000009200000ff070000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b3,y:b2,platform:Mac OS X, +030000007e0500001920000001000000,NSO N64 Controller,+rightx:b8,+righty:b7,-rightx:b3,-righty:b2,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Mac OS X, +030000007e0500001720000001000000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b15,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000550900001472000025050000,NVIDIA Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Mac OS X, +030000004b120000014d000000010000,Nyko Airflo EX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Mac OS X, +030000006f0e00000901000002010000,PDP PS3 Versus Fighting,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000008f0e00000300000000000000,Piranha Xtreme PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000666600006706000088020000,PlayStation Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Mac OS X, +030000004c050000da0c000000010000,PlayStation Classic Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +030000004c0500003713000000010000,PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000d62000006dca000000010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000100800000300000006010000,PS2 Adapter,a:b2,b:b1,back:b8,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, +030000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, +030000004c0500006802000072050000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, +030000004c050000a00b000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +050000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000005e040000e002000001000000,PXN P30 Pro Mobile,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000222c00000225000000010000,Qanba Dragon Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000222c00000020000000010000,Qanba Drone Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000008916000000fd000000000000,Razer Onza TE,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000321500000204000000010000,Razer Panthera PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000104000000010000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000010000000010000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000507000001010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000321500000011000000010000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000009000000020000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, +030000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, +0300000032150000030a000000000000,Razer Wildcat,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000632500008005000000010000,Redgear,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000000d0f0000c100000072050000,Retro Bit Sega Genesis 6B Controller,a:b2,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b8,rightshoulder:b6,righttrigger:b7,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000921200004547000000020000,Retro Bit Sega Genesis Controller Adapter,a:b0,b:b2,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,lefttrigger:b14,rightshoulder:b10,righttrigger:b4,start:b12,x:b6,y:b8,platform:Mac OS X, +03000000790000001100000000000000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000790000001100000005010000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b4,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000830500006020000000010000,Retro Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b8,righttrigger:b9,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000790000001100000006010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000341200000400000000000000,RetroUSB N64 RetroPort,+rightx:b8,+righty:b10,-rightx:b9,-righty:b11,a:b7,b:b6,dpdown:b2,dpleft:b1,dpright:b0,dpup:b3,leftshoulder:b13,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b12,start:b4,platform:Mac OS X, +030000006b140000010d000000010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006b140000130d000000010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c0500006802000002100000,Rii RK707,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b2,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b3,righttrigger:b9,rightx:a2,righty:a3,start:b1,x:b15,y:b12,platform:Mac OS X, +03000000c6240000fefa000000000000,Rock Candy PS3,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000006f0e00008701000005010000,Rock Candy Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000e804000000a000001b010000,Samsung EIGP20,a:b1,b:b3,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b11,leftx:a1,lefty:a3,rightshoulder:b12,rightx:a4,righty:a5,start:b16,x:b7,y:b9,platform:Mac OS X, +03000000730700000401000000010000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Mac OS X, +03000000a30c00002500000006020000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Mac OS X, +03000000811700007e05000000000000,Sega Saturn,a:b2,b:b4,dpdown:b16,dpleft:b15,dpright:b14,dpup:b17,leftshoulder:b8,lefttrigger:a5,leftx:a0,lefty:a2,rightshoulder:b9,righttrigger:a4,start:b13,x:b0,y:b6,platform:Mac OS X, +03000000b40400000a01000000000000,Sega Saturn,a:b0,b:b1,back:b5,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b2,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Mac OS X, +030000003512000021ab000000000000,SFC30 Joystick,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +0300000000f00000f100000000000000,SNES RetroPort,a:b2,b:b3,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,rightshoulder:b7,start:b6,x:b0,y:b1,platform:Mac OS X, +030000004c050000a00b000000000000,Sony DualShock 4 Adapter,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c050000cc09000000000000,Sony DualShock 4 V2,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000d11800000094000000010000,Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, +030000005e0400008e02000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000110100002014000000000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X, +03000000110100002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X, +03000000381000002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X, +05000000484944204465766963650000,SteelSeries Nimbus Plus,a:b0,b:b1,back:b15,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b14,x:b2,y:b3,platform:Mac OS X, +050000004e696d6275732b0000000000,SteelSeries Nimbus Plus,a:b0,b:b1,back:b15,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b14,x:b2,y:b3,platform:Mac OS X, +03000000381000003014000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000381000003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000110100001714000000000000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,platform:Mac OS X, +03000000110100001714000020010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,platform:Mac OS X, +030000000d0f0000f600000000010000,Switch Hori Pad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000457500002211000000010000,SZMY Power PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000790000001c18000003100000,TGZ Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000591c00002400000021000000,THEC64 Joystick,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000591c00002600000021000000,THEGamepad,a:b2,b:b1,back:b6,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Mac OS X, +030000004f04000015b3000000000000,Thrustmaster Dual Analog 3.2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Mac OS X, +030000004f0400000ed0000000020000,ThrustMaster eSwap Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Mac OS X, +03000000571d00002100000021000000,Tomee NES Controller Adapter,a:b1,b:b0,back:b2,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,start:b3,platform:Mac OS X, +03000000bd12000015d0000000010000,Tomee Retro Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000bd12000015d0000000000000,Tomee SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000571d00002000000021000000,Tomee SNES Controller Adapter,a:b0,b:b1,back:b6,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Mac OS X, +030000005f140000c501000000020000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000100800000100000000000000,Twin USB Joystick,a:b4,b:b2,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b12,leftstick:b20,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b14,rightstick:b22,righttrigger:b10,rightx:a6,righty:a4,start:b18,x:b6,y:b0,platform:Mac OS X, +03000000632500002605000000010000,Uberwith Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000151900005678000010010000,Uniplay U6,a:b3,b:b6,back:b25,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b17,leftstick:b31,lefttrigger:b21,leftx:a1,lefty:a3,rightshoulder:b19,rightstick:b33,righttrigger:b23,rightx:a4,righty:a5,start:b27,x:b11,y:b13,platform:Mac OS X, +030000006f0e00000302000025040000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006f0e00000702000003060000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,back:b7,dpdown:b3,dpleft:b0,dpright:b1,dpup:b2,guide:b8,leftshoulder:b11,lefttrigger:b12,leftx:a0,lefty:a1,start:b6,x:b10,y:b9,platform:Mac OS X, +050000005769696d6f74652028313800,Wii U Pro Controller,a:b16,b:b15,back:b7,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b8,leftshoulder:b19,leftstick:b23,lefttrigger:b21,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b24,righttrigger:b22,rightx:a2,righty:a3,start:b6,x:b18,y:b17,platform:Mac OS X, +030000005e0400008e02000000000000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000006f0e00000104000000000000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000c6240000045d000000000000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e0400000a0b000000000000,Xbox Adaptive Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000050b000003090000,Xbox Elite Controller Series 2,a:b0,b:b1,back:b31,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b53,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000011050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000200b000011050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000200b000013050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000200b000015050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000d102000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000dd02000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000e002000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X, +030000005e040000e002000003090000,Xbox One Controller,a:b0,b:b1,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000e302000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000ea02000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000fd02000003090000,Xbox One Controller,a:b0,b:b1,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c62400003a54000000000000,Xbox One PowerA Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000130b000001050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000009050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000013050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000015050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000172700004431000029010000,XiaoMi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000120c0000100e000000010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000120c0000101e000000010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, + +# Linux +030000005e0400008e02000020010000,8BitDo Adapter,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c82d00000031000011010000,8BitDo Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000951000000010000,8BitDo Dogbone,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Linux, +03000000021000000090000011010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000090000011010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00001038000000010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001251000011010000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00001251000000010000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001151000011010000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00001151000000010000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000151000000010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000650000011010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00005106000000010000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000451000000010000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Linux, +03000000c82d00001590000011010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000008000000210000011010000,8BitDo NES30,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000c82d00000310000011010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00008010000000010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux, +03000000022000000090000011010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000190000011010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000203800000900000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00002038000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000751000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:a8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00000851000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:a8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000660000011010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000660000000010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000631000014010000,8BitDo Pro 2 Wired Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c82d00001030000011010000,8BitDo Pro 2 Wired Controller,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000020000000000000,8BitDo Pro 2 Wired Controller for Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +06000000c82d00000020000006010000,8BitDo Pro 2 Wired Controller for Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c82d00000131000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000231000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000331000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000431000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00002867000000010000,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b3,y:b4,platform:Linux, +05000000c82d00000060000000010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000061000000010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +030000003512000012ab000010010000,8BitDo SFC30,a:b2,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Linux, +030000003512000021ab000010010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d000021ab000010010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +05000000102800000900000000010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00003028000000010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000351000000010000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000160000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001290000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000161000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00006228000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000260000011010000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000261000000010000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000202800000900000000010000,8BitDo SNES30,a:b1,b:b0,back:b10,dpdown:b122,dpleft:b119,dpright:b120,dpup:b117,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001130000011010000,8BitDo Ultimate Wired,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000760000011010000,8BitDo Ultimate Wireless,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001230000011010000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001330000011010000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000121000011010000,8BitDo Xbox One SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00000121000000010000,8BitDo Xbox One SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000a00500003232000001000000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux, +05000000a00500003232000008010000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001890000011010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +050000005e040000e002000030110000,8BitDo Zero 2,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux, +05000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c01100000355000011010000,Acrux Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00003901000000430000,Afterglow Prismatic Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00003901000013020000,Afterglow Prismatic Controller 048-007-NA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00001302000000010000,Afterglow Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00003901000020060000,Afterglow Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000100000008200000011010000,Akishop Customs PS360,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000007c1800000006000010010000,Alienware Dual Compatible Game PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Linux, +05000000491900000204000021000000,Amazon Fire Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b17,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b12,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000491900001904000011010000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux, +05000000710100001904000000010000,Amazon Luna Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, +03000000790000003018000011010000,Arcade Fightstick F300,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000a30c00002700000011010000,Astro City Mini,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000a30c00002800000011010000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +05000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux, +05000000050b00000045000040000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux, +03000000050b00000579000011010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b36,paddle1:b52,paddle2:b53,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000050b00000679000000010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b21,paddle1:b22,paddle2:b23,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000503200000110000000000000,Atari Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +03000000503200000110000011010000,Atari Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +05000000503200000110000000000000,Atari Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +05000000503200000110000044010000,Atari Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +05000000503200000110000046010000,Atari Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +03000000503200000210000000000000,Atari Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Linux, +03000000503200000210000011010000,Atari Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +05000000503200000210000000000000,Atari Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +05000000503200000210000045010000,Atari Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +05000000503200000210000046010000,Atari Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +05000000503200000210000047010000,Atari VCS Modern Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:-a4,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Linux, +03000000c62400001b89000011010000,BDA MOGA XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000d62000002a79000011010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000c21100000791000011010000,Be1 GC101 Controller 1.03,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000c31100000791000011010000,Be1 GC101 Controller 1.03,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000005e0400008e02000003030000,Be1 GC101 Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000bc2000004d50000011010000,BEITONG A1T2 BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000bc2000000055000001000000,BETOP AX1 BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000bc2000006412000011010000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b30,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006b1400000209000011010000,Bigben,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000120c0000200e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000120c0000210e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000120c0000f70e000011010000,Brook Universal Fighting Board,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000e82000006058000001010000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000000b0400003365000000010000,Competition Pro,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Linux, +03000000260900008888000000010000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Linux, +03000000a306000022f6000011010000,Cyborg V3 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000791d00000103000010010000,Dual Box Wii Classic Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006f0e00003001000001010000,EA Sports PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000c11100000191000011010000,EasySMX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000242f00009100000000010000,EasySMX ESM-9101,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006e0500000320000010010000,Elecom U3613M,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux, +030000006e0500000720000010010000,Elecom W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Linux, +030000007d0400000640000010010000,Eliminator AfterShock,a:b1,b:b2,back:b9,dpdown:+a3,dpleft:-a5,dpright:+a5,dpup:-a3,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a4,righty:a2,start:b8,x:b0,y:b3,platform:Linux, +03000000430b00000300000000010000,EMS Production PS2 Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a5,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +03005036852100000201000010010000,Final Fantasy XIV Online Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000b40400001124000011010000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b14,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000b40400001224000011010000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b2,paddle1:b16,paddle2:b17,paddle3:b14,paddle4:b15,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000151900004000000001000000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b14,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000007e0500003703000000000000,GameCube Adapter,a:b0,b:b1,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +19000000030000000300000002030000,GameForce Controller,a:b1,b:b0,back:b8,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b14,lefttrigger:b6,leftx:a1,lefty:a0,rightshoulder:b5,rightstick:b15,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +03000000ac0500005b05000010010000,GameSir G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000bc2000000055000011010000,GameSir G3w,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000558500001b06000010010000,GameSir G4 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000ac0500002d0200001b010000,GameSir G4s,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b33,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000bc2000005656000011010000,GameSir T4w,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000ac0500001a06000011010000,GameSir-T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000006f0e00000104000000010000,Gamestop Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000008f0e00000800000010010000,Gasia PlayStation Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000451300000010000010010000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +190000004b4800000010000000010000,GO-Advance Controller,a:b1,b:b0,back:b10,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,leftshoulder:b4,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b13,start:b15,x:b2,y:b3,platform:Linux, +190000004b4800000010000001010000,GO-Advance Controller,a:b1,b:b0,back:b12,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftshoulder:b4,leftstick:b13,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b16,righttrigger:b15,start:b17,x:b2,y:b3,platform:Linux, +190000004b4800000011000000010000,GO-Super Controller,a:b1,b:b0,back:b12,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b16,leftshoulder:b4,leftstick:b14,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b15,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b2,y:b3,platform:Linux, +03000000f0250000c183000010010000,Goodbetterbest Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +0300000079000000d418000000010000,GPD Win 2 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000007d0400000540000000010000,Gravis Eliminator Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000280400000140000000010000,Gravis GamePad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000008f0e00000610000000010000,GreenAsia Electronics Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Linux, +030000008f0e00001200000010010000,GreenAsia Joystick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +0500000047532067616d657061640000,GS gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000f0250000c383000010010000,GT VX2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +06000000adde0000efbe000002010000,Hidromancer Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d81400000862000011010000,HitBox PS3 PC Analog Mode,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b12,x:b0,y:b3,platform:Linux, +03000000c9110000f055000011010000,HJC Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000632500002605000010010000,HJDX,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000000d0f00000d00000000010000,Hori,a:b0,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b3,rightshoulder:b7,start:b9,x:b1,y:b2,platform:Linux, +030000000d0f00006d00000020010000,Hori EDGE 301,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:+a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00008400000011010000,Hori Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00005f00000011010000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00005e00000011010000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00005001000009040000,Hori Fighting Commander OCTA Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00008500000010010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00008600000002010000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000000d0f00003701000013010000,Hori Fighting Stick Mini,a:b1,b:b0,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b3,y:b2,platform:Linux, +030000000d0f00008800000011010000,Hori Fighting Stick mini 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00008700000011010000,Hori Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,rightstick:b11,righttrigger:a4,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00001000000011010000,Hori Fightstick 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000ad1b000003f5000033050000,Hori Fightstick VX,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b8,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux, +030000000d0f00004d00000011010000,Hori Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00003801000011010000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,platform:Linux, +030000000d0f00009200000011010000,Hori Pokken Tournament DX Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f0000aa00000011010000,Hori Real Arcade Pro,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000000d0f00001100000011010000,Hori Real Arcade Pro 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00002200000011010000,Hori Real Arcade Pro 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00006a00000011010000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00006b00000011010000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00001600000000010000,Hori Real Arcade Pro EXSE,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux, +030000000d0f00008501000015010000,Hori Switch Split Pad Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00006e00000011010000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00006600000011010000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f0000ee00000011010000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00006700000001010000,Horipad One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f0000c100000011010000,Horipad S,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +050000000d0f0000f600000001000000,Horipad Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000341a000005f7000010010000,HuiJia GameCube Controller Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux, +05000000242e00000b20000001000000,Hyperkin Admiral N64 Controller,+rightx:b11,+righty:b13,-rightx:b8,-righty:b12,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,platform:Linux, +03000000242e0000ff0b000011010000,Hyperkin N64 Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,platform:Linux, +03000000242e00006a38000010010000,Hyperkin Trooper 2,a:b0,b:b1,back:b4,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b3,start:b5,platform:Linux, +03000000242e00008816000001010000,Hyperkin X91,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000f00300008d03000011010000,HyperX Clutch,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000830500006020000010010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux, +050000006964726f69643a636f6e0000,idroidcon Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000b50700001503000010010000,Impact,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000d80400008200000003000000,IMS PCU0,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b5,x:b3,y:b2,platform:Linux, +03000000120c00000500000010010000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux, +03000000ef0500000300000000010000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux, +03000000fd0500000030000000010000,InterAct GoPad,a:b3,b:b4,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Linux, +03000000fd0500002a26000000010000,InterAct HammerHead FX,a:b3,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b2,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux, +0500000049190000020400001b010000,Ipega PG 9069,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b161,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000632500007505000011010000,Ipega PG 9099,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +0500000049190000030400001b010000,Ipega PG9099,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000491900000204000000000000,Ipega PG9118,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000300f00001001000010010000,Jess Tech Dual Analog Rumble,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000300f00000b01000010010000,Jess Tech GGE909 PC Recoil,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +03000000ba2200002010000001010000,Jess Technology Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Linux, +050000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Linux, +030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux, +050000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux, +03000000bd12000003c0000010010000,Joypad Alpha Shock,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000242f00002d00000011010000,JYS Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000242f00008a00000011010000,JYS Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux, +030000006f0e00000103000000020000,Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d040000d1ca000000000000,Logitech Chillstream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d04000016c2000010010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d04000016c2000011010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d0400001dc2000014400000,Logitech F310,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d0400001ec2000019200000,Logitech F510,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d0400001ec2000020200000,Logitech F510,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d04000019c2000011010000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d0400001fc2000005030000,Logitech F710,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d04000018c2000010010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b10,rightx:a3,righty:a4,start:b8,x:b3,y:b4,platform:Linux, +030000006d0400000ac2000010010000,Logitech WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Linux, +05000000380700006652000025010000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008532000010010000,Mad Catz Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000380700005032000011010000,Mad Catz Fightpad Pro PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700005082000011010000,Mad Catz Fightpad Pro PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000ad1b00002ef0000090040000,Mad Catz Fightpad SFxT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux, +03000000380700008034000011010000,Mad Catz Fightstick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008084000011010000,Mad Catz Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008433000011010000,Mad Catz Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008483000011010000,Mad Catz Fightstick TE S PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000380700001888000010010000,Mad Catz Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700003888000010010000,Mad Catz Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:a0,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700001647000010040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000380700003847000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000ad1b000016f0000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000120c00000500000000010000,Manta Dualshock 2,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +030000008f0e00001330000010010000,Mayflash Controller Adapter,a:b1,b:b2,back:b8,dpdown:h0.8,dpleft:h0.2,dpright:h0.1,dpup:h0.4,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3~,righty:a2,start:b9,x:b0,y:b3,platform:Linux, +03000000790000004318000010010000,Mayflash GameCube Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +03000000790000004418000010010000,Mayflash GameCube Controller,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +03000000242f00007300000011010000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux, +0300000079000000d218000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000d620000010a7000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000242f0000f700000001010000,Mayflash Magic S Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000008f0e00001030000010010000,Mayflash Saturn Adapter,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:b7,rightshoulder:b6,righttrigger:b2,start:b9,x:b3,y:b4,platform:Linux, +0300000025090000e803000001010000,Mayflash Wii Classic Adapter,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:a5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, +03000000790000000318000011010000,Mayflash Wii DolphinBar,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Linux, +03000000790000000018000011010000,Mayflash Wii U Pro Adapter,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000b50700001203000010010000,Mega World Logic 3 Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000b50700004f00000000010000,Mega World Logic 3 Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Linux, +03000000780000000600000010010000,Microntek Joystick,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +030000005e0400002800000000010000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,y:b0,platform:Linux, +030000005e0400000300000000010000,Microsoft SideWinder,a:b0,b:b1,back:b9,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Linux, +030000005e0400000700000000010000,Microsoft SideWinder,a:b0,b:b1,back:b8,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Linux, +030000005e0400000e00000000010000,Microsoft SideWinder Freestyle Pro,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Linux, +030000005e0400002700000000010000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,righttrigger:b5,x:b2,y:b3,platform:Linux, +030000005e0400008502000000010000,Microsoft Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, +030000005e0400008902000021010000,Microsoft Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, +030000005e0400008e02000001000000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.1,dpleft:h0.2,dpright:h0.8,dpup:h0.4,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000004010000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000056210000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000062230000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000d102000001010000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000d102000003020000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000dd02000003020000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000ea02000008040000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000120b000009050000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000e302000003020000,Microsoft Xbox One Elite,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000000b000008040000,Microsoft Xbox One Elite 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000050b000003090000,Microsoft Xbox One Elite 2,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000005e040000120b00000b050000,Microsoft Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000030000000300000002000000,Miroof,a:b1,b:b0,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux, +050000004d4f435554452d3035335800,Mocute 053X,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +05000000e80400006e0400001b010000,Mocute 053X M59,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000004d4f435554452d3035305800,Mocute 054X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000d6200000e589000001000000,Moga 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, +05000000d6200000ad0d000001000000,Moga Pro,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, +05000000d62000007162000001000000,Moga Pro 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, +03000000c62400002b89000011010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c62400002a89000000010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b22,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c62400001a89000000010000,MOGA XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000250900006688000000010000,MP8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, +030000005e0400008e02000010020000,MSI GC20 V2,a:b0,b:b1,back:b6,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006b1400000906000014010000,Nacon Asymmetric Wireless PS4 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006b140000010c000010010000,Nacon GC 400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000853200000706000012010000,Nacon GC-100,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00000900000010010000,Natec Genesis P44,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000004f1f00000800000011010000,NeoGeo PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +0300000092120000474e000000010000,NeoGeo X Arcade Stick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b3,y:b2,platform:Linux, +03000000790000004518000010010000,Nexilux GameCube Controller Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +030000001008000001e5000010010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Linux, +060000007e0500003713000000000000,Nintendo 3DS,a:b0,b:b1,back:b8,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, +030000009b2800008000000020020000,Nintendo Classic Controller,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Linux, +030000007e0500003703000000016800,Nintendo GameCube Controller,a:b0,b:b2,dpdown:b6,dpleft:b4,dpright:b5,dpup:b7,lefttrigger:a4,leftx:a0,lefty:a1~,rightshoulder:b9,righttrigger:a5,rightx:a2,righty:a3~,start:b8,x:b1,y:b3,platform:Linux, +03000000790000004618000010010000,Nintendo GameCube Controller Adapter,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a5~,righty:a2~,start:b9,x:b2,y:b3,platform:Linux, +060000004e696e74656e646f20537700,Nintendo Switch Combined Joy-Cons,a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +060000007e0500000620000000000000,Nintendo Switch Combined Joy-Cons,a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +060000007e0500000820000000000000,Nintendo Switch Combined Joy-Cons,a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +050000004c69632050726f20436f6e00,Nintendo Switch Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +050000007e0500000620000001800000,Nintendo Switch Left Joy-Con,a:b16,b:b15,back:b4,leftshoulder:b6,leftstick:b12,leftx:a1,lefty:a0~,rightshoulder:b8,start:b9,x:b14,y:b17,platform:Linux, +03000000d620000013a7000011010000,Nintendo Switch PowerA Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000d620000011a7000011010000,Nintendo Switch PowerA Core Plus Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000007e0500000920000000026803,Nintendo Switch Pro Controller,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Linux, +030000007e0500000920000011810000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +050000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +050000007e0500000920000001800000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +050000007e0500000720000001800000,Nintendo Switch Right Joy-Con,a:b1,b:b2,back:b9,leftshoulder:b4,leftstick:b10,leftx:a1~,lefty:a0,rightshoulder:b6,start:b8,x:b0,y:b3,platform:Linux, +05000000010000000100000003000000,Nintendo Wii Remote,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +050000007e0500003003000001000000,Nintendo Wii U Pro Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, +030000000d0500000308000010010000,Nostromo n45 Dual Analog,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Linux, +030000007e0500001920000011810000,NSO N64 Controller,+rightx:b10,+righty:b8,-rightx:b9,-righty:b7,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b3,lefttrigger:b2,leftx:a0,lefty:a1,misc1:b12,rightshoulder:b4,righttrigger:b5,start:b6,platform:Linux, +050000007e0500001920000001000000,NSO N64 Controller,+rightx:b8,+righty:b7,-rightx:b3,-righty:b2,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Linux, +050000007e0500001920000001800000,NSO N64 Controller,+rightx:b10,+righty:b8,-rightx:b9,-righty:b7,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b3,lefttrigger:b2,leftx:a0,lefty:a1,misc1:b12,rightshoulder:b4,righttrigger:b5,start:b6,platform:Linux, +030000007e0500001720000011810000,NSO SNES Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux, +050000007e0500001720000001000000,NSO SNES Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:b7,rightshoulder:b6,righttrigger:b8,start:b10,x:b3,y:b2,platform:Linux, +050000007e0500001720000001800000,NSO SNES Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux, +03000000550900001072000011010000,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b8,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000550900001472000011010000,NVIDIA Controller v01.04,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux, +05000000550900001472000001000000,NVIDIA Controller v01.04,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux, +03000000451300000830000010010000,NYKO CORE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +19000000010000000100000001010000,ODROID Go 2,a:b1,b:b0,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,guide:b10,leftshoulder:b4,leftstick:b12,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b13,righttrigger:b14,start:b15,x:b2,y:b3,platform:Linux, +19000000010000000200000011000000,ODROID Go 2,a:b1,b:b0,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b12,leftshoulder:b4,leftstick:b14,lefttrigger:b13,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b15,righttrigger:b16,start:b17,x:b2,y:b3,platform:Linux, +03000000c0160000dc27000001010000,OnyxSoft Dual JoyDivision,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b6,x:b2,y:b3,platform:Linux, +05000000362800000100000002010000,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux, +05000000362800000100000003010000,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux, +05000000362800000100000004010000,OUYA Controller,a:b0,b:b3,back:b14,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a3,righty:a4,start:b16,x:b1,y:b2,platform:Linux, +03000000830500005020000010010000,Padix Rockfire PlayStation Bridge,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b2,y:b3,platform:Linux, +03000000ff1100003133000010010000,PC Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006f0e0000b802000001010000,PDP Afterglow Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000b802000013020000,PDP Afterglow Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00006401000001010000,PDP Battlefield One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000d702000006640000,PDP Black Camo Wired Xbox Series X Controller,a:b0,b:b1,back:b6,dpdown:b13,dpleft:b14,dpright:b13,dpup:b14,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00003101000000010000,PDP EA Sports Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00008001000011010000,PDP Faceoff Nintendo Switch Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e0000c802000012010000,PDP Kingdom Hearts Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00008501000011010000,PDP Nintendo Switch Fightpad Pro,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006f0e00002801000011010000,PDP PS3 Rock Candy Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00000901000011010000,PDP PS3 Versus Fighting,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000ad1b000004f9000000010000,PDP Xbox 360 Versus Fighting,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000a802000023020000,PDP Xbox One Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000006f0e0000a702000023020000,PDP Xbox One Raven Black,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000d802000006640000,PDP Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000666600006706000000010000,PlayStation Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Linux, +030000004c050000da0c000011010000,PlayStation Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000d9040000160f000000010000,PlayStation Controller Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +030000004c0500003713000011010000,PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000c62400000053000000010000,PowerA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c62400003a54000001010000,PowerA 1428124-01,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000140000001010000,PowerA Fusion Pro 2 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c62400001a53000000010000,PowerA Mini Pro Ex,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000006dca000011010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000c62400001a58000001010000,PowerA Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000220000001010000,PowerA Xbox One Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux, +03000000d62000000228000001010000,PowerA Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c62400001a54000001010000,PowerA Xbox One Mini Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000240000001010000,PowerA Xbox One Spectra Infinity,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000f20000001010000,PowerA Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d040000d2ca000011010000,Precision Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000ff1100004133000010010000,PS2 Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000341a00003608000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000004c0500006802000010010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +030000004c0500006802000010810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +030000004c0500006802000011810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000005f1400003102000010010000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006f0e00001402000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000008f0e00000300000010010000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +050000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +050000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:a12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:a13,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +050000004c0500006802000000800000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c0500006802000000810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +05000000504c415953544154494f4e00,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +060000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +030000004c050000a00b000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004c050000a00b000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004c050000c405000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004c050000cc09000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004c050000cc09000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +03000000c01100000140000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +050000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +050000004c050000c405000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000c405000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +050000004c050000cc09000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000cc09000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c050000e60c000011010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000004c050000e60c000011810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c050000f20d000011010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +050000004c050000e60c000000810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000300f00001211000011010000,Qanba Arcade Joystick,a:b2,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b9,x:b1,y:b3,platform:Linux, +03000000222c00000225000011010000,Qanba Dragon Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000222c00000025000011010000,Qanba Dragon Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000222c00000020000011010000,Qanba Drone Arcade PS4 Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000300f00001210000010010000,Qanba Joystick Plus,a:b0,b:b1,back:b8,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,start:b9,x:b2,y:b3,platform:Linux, +03000000222c00000223000011010000,Qanba Obsidian Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000222c00000023000011010000,Qanba Obsidian Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000009b2800000300000001010000,Raphnet 4nes4snes,a:b0,b:b4,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Linux, +030000009b2800004200000001010000,Raphnet Dual NES Adapter,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Linux, +030000009b2800003200000001010000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux, +030000009b2800006000000001010000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux, +030000008916000001fd000024010000,Razer Onza Classic Edition,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000321500000204000011010000,Razer Panthera PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000104000011010000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000810000011010000,Razer Panthera PS4 Evo Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000010000011010000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000507000000010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000321500000a10000001000000,Razer Raiju Tournament Edition,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000011000011010000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000008916000000fe000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c6240000045d000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c6240000045d000025010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000321500000009000011010000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +050000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +0300000032150000030a000001010000,Razer Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000790000001100000010010000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Linux, +190000004b4800000111000000010000,RetroGame Joypad,a:b1,b:b0,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +0300000081170000990a000001010000,Retronic Adapter,a:b0,leftx:a0,lefty:a1,platform:Linux, +0300000000f000000300000000010000,RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux, +00000000526574726f53746f6e653200,RetroStone 2 Controller,a:b1,b:b0,back:b10,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,righttrigger:b9,start:b11,x:b4,y:b3,platform:Linux, +03000000341200000400000000010000,RetroUSB N64 RetroPort,+rightx:b8,+righty:b10,-rightx:b9,-righty:b11,a:b7,b:b6,dpdown:b2,dpleft:b1,dpright:b0,dpup:b3,leftshoulder:b13,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b12,start:b4,platform:Linux, +030000006b140000010d000011010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000006b140000130d000011010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00001f01000000010000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00001e01000011010000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00008701000011010000,Rock Candy Switch Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000c6240000fefa000000010000,Rock Candy Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00004601000001010000,Rock Candy Xbox One Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000a306000023f6000011010000,Saitek Cyborg V1 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000a30600001005000000010000,Saitek P150,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b2,righttrigger:b5,x:b3,y:b4,platform:Linux, +03000000a30600000701000000010000,Saitek P220,a:b2,b:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,x:b0,y:b1,platform:Linux, +03000000a30600000cff000010010000,Saitek P2500 Force Rumble,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b0,y:b1,platform:Linux, +03000000a30600000c04000011010000,Saitek P2900,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b12,x:b0,y:b3,platform:Linux, +03000000a306000018f5000010010000,Saitek P3200 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000300f00001201000010010000,Saitek P380,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000a30600000901000000010000,Saitek P880,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,x:b0,y:b1,platform:Linux, +03000000a30600000b04000000010000,Saitek P990 Dual Analog,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Linux, +03000000a306000020f6000011010000,Saitek PS2700 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +05000000e804000000a000001b010000,Samsung EIGP20,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000d81d00000e00000010010000,Savior,a:b0,b:b1,back:b8,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,start:b9,x:b4,y:b5,platform:Linux, +03000000a30c00002500000011010000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Linux, +03000000790000001100000011010000,Sega Saturn,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b4,start:b9,x:b0,y:b3,platform:Linux, +03000000790000002201000011010000,Sega Saturn,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux, +03000000b40400000a01000000010000,Sega Saturn,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Linux, +030000001f08000001e4000010010000,SFC Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000632500002305000010010000,ShanWan Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000f025000021c1000010010000,Shanwan Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000632500007505000010010000,Shanwan PS3 PC,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000bc2000000055000010010000,Shanwan PS3 PC ,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000341a00000908000010010000,SL6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +050000004c050000cc09000001000000,Sony DualShock 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000ff000000cb01000010010000,Sony PlayStation Portable,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux, +03000000250900000500000000010000,Sony PS2 pad with SmartJoy Adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, +030000005e0400008e02000073050000,Speedlink Torid,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000020200000,SpeedLink Xeox Pro Analog,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d11800000094000011010000,Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +05000000d11800000094000000010000,Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800000112000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800000112000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:+a5,dpleft:-a4,dpright:+a4,dpup:-a5,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,paddle1:b15,paddle2:b16,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux, +03000000de2800000211000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800000211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b16,paddle2:b15,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux, +03000000de2800004211000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800004211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,paddle1:b16,paddle2:b15,rightshoulder:b7,righttrigger:a6,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux, +03000000de280000fc11000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +05000000de2800000212000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800000512000010010000,Steam Deck,a:b3,b:b4,back:b11,dpdown:b17,dpleft:b18,dpright:b19,dpup:b16,guide:b13,leftshoulder:b7,leftstick:b14,lefttrigger:a9,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b15,righttrigger:a8,rightx:a2,righty:a3,start:b12,x:b5,y:b6,platform:Linux, +03000000de280000ff11000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000004e696d6275732b0000000000,SteelSeries Nimbus Plus,a:b0,b:b1,back:b10,guide:b11,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b12,x:b2,y:b3,platform:Linux, +03000000381000003014000075010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000381000003114000075010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +0500000011010000311400001b010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b32,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000110100001914000009010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000ad1b000038f0000090040000,Street Fighter IV Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000003b07000004a1000000010000,Suncom SFX Plus,a:b0,b:b2,back:b7,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b9,righttrigger:b5,start:b8,x:b1,y:b3,platform:Linux, +03000000666600000488000000010000,Super Joy Box 5 Pro,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, +0300000000f00000f100000000010000,Super RetroPort,a:b1,b:b5,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux, +030000008f0e00000d31000010010000,SZMY Power 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000457500000401000011010000,SZMY Power DS4 Wired Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000457500002211000010010000,SZMY Power Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000008f0e00001431000010010000,SZMY Power PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000ba2200000701000001010000,Technology Innovation PS2 Adapter,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b2,platform:Linux, +03000000790000001c18000011010000,TGZ Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000004f04000015b3000001010000,Thrustmaster Dual Analog 3.2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +030000004f04000015b3000010010000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +030000004f04000020b3000010010000,Thrustmaster Dual Trigger,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +030000004f04000023b3000000010000,Thrustmaster Dual Trigger PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004f0400000ed0000011010000,Thrustmaster eSwap Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000b50700000399000000010000,Thrustmaster Firestorm Digital 2,a:b2,b:b4,back:b11,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b0,righttrigger:b9,start:b1,x:b3,y:b5,platform:Linux, +030000004f04000003b3000010010000,Thrustmaster Firestorm Dual Analog 2,a:b0,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b9,rightx:a2,righty:a3,x:b1,y:b3,platform:Linux, +030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Linux, +030000004f04000004b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +030000004f04000026b3000002040000,Thrustmaster GP XID,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c6240000025b000002020000,Thrustmaster GPX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000004f04000008d0000000010000,Thrustmaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004f04000009d0000000010000,Thrustmaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000004f04000007d0000000010000,Thrustmaster T Mini,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000004f04000012b3000010010000,Thrustmaster Vibrating Gamepad,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +03000000571d00002000000010010000,Tomee SNES Adapter,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux, +03000000bd12000015d0000010010000,Tomee SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000d814000007cd000011010000,Toodles 2008 Chimp PC PS3,a:b0,b:b1,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux, +030000005e0400008e02000070050000,Torid,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c01100000591000011010000,Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000680a00000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux, +03000000780300000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux, +03000000e00d00000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux, +03000000f00600000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux, +030000005f140000c501000010010000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000100800000100000010010000,Twin PS2 Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +03000000151900005678000010010000,Uniplay U6,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000100800000300000010010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +03000000790000000600000007010000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux, +03000000790000001100000000010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:a0,dpleft:a1,dpright:a2,dpup:a4,start:b9,platform:Linux, +030000006f0e00000302000011010000,Victrix Pro Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00000702000011010000,Victrix Pro Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +05000000ac0500003232000001000000,VR Box Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +05000000434f4d4d414e440000000000,VX Gaming Command Series,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +0000000058626f782033363020576900,Xbox 360 Controller,a:b0,b:b1,back:b14,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b7,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux, +030000005e0400001907000000010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000010010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000014010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400009102000007010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000a102000000010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000a102000007010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000000010000,Xbox 360 EasySMX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000a102000014010000,Xbox 360 Receiver,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400000202000000010000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, +030000006f0e00001304000000010000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000ffff0000ffff000000010000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, +0000000058626f782047616d65706100,Xbox Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400000a0b000005040000,Xbox One Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, +030000005e040000d102000002010000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000ea02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000ea02000001030000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000e002000003090000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000fd02000003090000,Xbox One Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000fd02000030110000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000e302000002090000,Xbox One Elite,a:b0,b:b1,back:b136,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000220b000013050000,Xbox One Elite 2 Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000050b000002090000,Xbox One Elite Series 2,a:b0,b:b1,back:b136,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +060000005e040000ea0200000b050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000ea0200000d050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000001050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000005050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000007050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000009050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b00000d050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b00000f050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000001050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000007050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000009050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000011050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000013050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000015050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +060000005e040000120b000007050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000120b00000b050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000200b000013050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000450c00002043000010010000,XEOX SL6556 BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +05000000172700004431000029010000,XiaoMi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Linux, +03000000c0160000e105000001010000,XinMo Dual Arcade,a:b4,b:b3,back:b6,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b9,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b1,y:b0,platform:Linux, +xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000120c0000100e000011010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000120c0000101e000011010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, + +# Android +38653964633230666463343334313533,8BitDo Adapter,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +36666264316630653965636634386234,8BitDo Adapter 2,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38426974446f20417263616465205374,8BitDo Arcade Stick,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b5,leftshoulder:b9,lefttrigger:a4,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +61393962646434393836356631636132,8BitDo Arcade Stick,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +64323139346131306233636562663738,8BitDo Arcade Stick,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +64643565386136613265663236636564,8BitDo Arcade Stick,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +33313433353539306634656436353432,8BitDo Dogbone,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38426974446f20446f67626f6e65204d,8BitDo Dogbone,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, +34343439373236623466343934376233,8BitDo FC30 Pro,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b28,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b29,righttrigger:b7,start:b5,x:b30,y:b2,platform:Android, +38426974446f2038426974446f204c69,8BitDo Lite,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +30643332373663313263316637356631,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f204c6974652032000000,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +62656331626461363634633735353032,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38393936616436383062666232653338,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f204c6974652053450000,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +39356430616562366466646636643435,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000006500000ffff3f00,8BitDo M30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b17,leftshoulder:b9,lefttrigger:a5,rightshoulder:b10,righttrigger:a4,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000051060000ffff3f00,8BitDo M30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b17,leftshoulder:b9,lefttrigger:a4,rightshoulder:b10,righttrigger:a5,start:b6,x:b3,y:b2,platform:Android, +32323161363037623637326438643634,8BitDo M30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +33656266353630643966653238646264,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,start:b10,x:b19,y:b2,platform:Android, +38426974446f204d3330204d6f646b69,8BitDo M30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39366630663062373237616566353437,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,start:b6,x:b2,y:b3,platform:Android, +64653533313537373934323436343563,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,start:b6,x:b2,y:b3,platform:Android, +66356438346136366337386437653934,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,start:b18,x:b19,y:b2,platform:Android, +66393064393162303732356665666366,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,start:b6,x:b2,y:b3,platform:Android, +33663431326134333366393233616633,8BitDo N30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, +38426974446f204e3330204d6f646b69,8BitDo N30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, +05000000c82d000015900000ffff3f00,8BitDo N30 Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000065280000ffff3f00,8BitDo N30 Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +050000000220000000900000ffff3f00,8BitDo NES30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +050000002038000009000000ffff3f00,8BitDo NES30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38313433643131656262306631373166,8BitDo P30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38326536643339353865323063616339,8BitDo P30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38426974446f2050333020636c617373,8BitDo P30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35376664343164386333616535333434,8BitDo Pro 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,start:b10,x:b19,y:b2,platform:Android, +38426974446f2038426974446f205072,8BitDo Pro 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f2050726f203200000000,8BitDo Pro 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +62373739366537363166326238653463,8BitDo Pro 2,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b3,y:b2,platform:Android, +38386464613034326435626130396565,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f2038426974446f205265,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +66303230343038613365623964393766,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f20533330204d6f646b69,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66316462353561376330346462316137,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000c82d000000600000ffff3f00,8BitDo SF30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000000610000ffff3f00,8BitDo SF30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974646f20534633302050726f00,8BitDo SF30 Pro,a:b1,b:b0,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b17,platform:Android, +61623334636338643233383735326439,8BitDo SFC30,a:b0,b:b1,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b3,rightshoulder:b31,start:b5,x:b30,y:b2,platform:Android, +05000000c82d000012900000ffff3f00,8BitDo SN30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000062280000ffff3f00,8BitDo SN30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +38316230613931613964356666353839,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f20534e3330204d6f646b,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +65323563303231646531383162646335,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +35383531346263653330306238353131,8BitDo SN30 PP,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000c82d000001600000ffff3f00,8BitDo SN30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000002600000ffff0f00,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +36653638656632326235346264663661,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +38303232393133383836366330346462,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +38346630346135363335366265656666,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f20534e33302050726f2b,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +536f6e7920436f6d707574657220456e,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66306331643531333230306437353936,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +050000002028000009000000ffff3f00,8BitDo SNES30,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +050000003512000020ab000000780f00,8BitDo SNES30,a:b21,b:b20,back:b30,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b26,rightshoulder:b27,start:b31,x:b24,y:b23,platform:Android, +33666663316164653937326237613331,8BitDo Zero,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +38426974646f205a65726f2047616d65,8BitDo Zero,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +05000000c82d000018900000ffff0f00,8BitDo Zero 2,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000030320000ffff0f00,8BitDo Zero 2,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +33663434393362303033616630346337,8BitDo Zero 2,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftx:a0,lefty:a1,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +34656330626361666438323266633963,8BitDo Zero 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b20,start:b10,x:b19,y:b2,platform:Android, +63396666386564393334393236386630,8BitDo Zero 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +63633435623263373466343461646430,8BitDo Zero 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +32333634613735616163326165323731,Amazon Luna Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, +417374726f2063697479206d696e6920,Astro City Mini,a:b23,b:b22,back:b29,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b25,righttrigger:b26,start:b30,x:b24,y:b21,platform:Android, +35643263313264386134376362363435,Atari VCS Classic Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,start:b6,platform:Android, +32353831643566306563643065356239,Atari VCS Modern Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +32303165626138343962363666346165,Brook Mars PS4 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +38383337343564366131323064613561,Brook Mars PS4 Controller,a:b1,b:b19,back:b17,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +34313430343161653665353737323365,Elecom JC-W01U,a:b23,b:b24,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, +4875694a6961204a432d573031550000,Elecom JC-W01U,a:b23,b:b24,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, +30363230653635633863366338623265,Evo VR,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,x:b2,y:b3,platform:Android, +05000000b404000011240000dfff3f00,Flydigi Vader 2,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,paddle1:b17,paddle2:b18,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000bc20000000550000ffff3f00,GameSir G3w,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +34323662653333636330306631326233,Google Nexus,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35383633353935396534393230616564,Google Stadia Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000d6020000e5890000dfff3f00,GPD XD Plus,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android, +05000000d6020000e5890000dfff3f80,GPD XD Plus,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a3,rightx:a4,righty:a5,start:b6,x:b2,y:b3,platform:Android, +66633030656131663837396562323935,Hori Battle,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +35623466343433653739346434636330,Hori Fighting Commander 3 Pro,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +484f524920434f2e2c4c54442e203130,Hori Fighting Commander 3 Pro,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b20,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b9,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +484f524920434f2e2c4c544420205041,Hori Gem Pad 3,a:b1,b:b17,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b0,y:b2,platform:Android, +65656436646661313232656661616130,Hori PC Engine Mini Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b18,platform:Android, +31303433326562636431653534636633,Hori Real Arcade Pro 3,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +32656664353964393561366362333636,Hori Switch Split Pad Pro,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +30306539356238653637313730656134,HORIPAD Switch Pro Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +48797065726b696e2050616400000000,Hyperkin Admiral N64 Controller,+rightx:b6,+righty:b7,-rightx:b17,-righty:b5,a:b1,b:b0,leftshoulder:b3,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b20,start:b18,platform:Android, +62333331353131353034386136626636,Hyperkin Admiral N64 Controller,+rightx:b6,+righty:b7,-rightx:b17,-righty:b5,a:b1,b:b0,leftshoulder:b3,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b20,start:b18,platform:Android, +31306635363562663834633739396333,Hyperkin N64 Adapter,a:b1,b:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +5368616e57616e202020202048797065,Hyperkin N64 Adapter,a:b1,b:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +0500000083050000602000000ffe0000,iBuffalo SNES Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b15,rightshoulder:b16,start:b10,x:b2,y:b3,platform:Android, +64306137363261396266353433303531,InterAct GoPad,a:b24,b:b25,leftshoulder:b23,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,x:b21,y:b22,platform:Android, +532e542e442e20496e74657261637420,InterAct HammerHead FX,a:b23,b:b24,back:b30,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,leftstick:b22,lefttrigger:b28,leftx:a0,lefty:a1,rightshoulder:b27,rightstick:b25,righttrigger:b29,rightx:a2,righty:a3,start:b31,x:b20,y:b21,platform:Android, +65346535636333663931613264643164,Joy-Con,a:b21,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b23,y:b24,platform:Android, +33346566643039343630376565326335,Joy-Con (L),a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, +35313531613435623366313835326238,Joy-Con (L),a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, +4a6f792d436f6e20284c290000000000,Joy-Con (L),a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, +38383665633039363066383334653465,Joy-Con (R),a:b0,b:b1,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +39363561613936303237333537383931,Joy-Con (R),a:b0,b:b1,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +4a6f792d436f6e202852290000000000,Joy-Con (R),a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +39656136363638323036303865326464,JYS Aapter,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +63316564383539663166353034616434,JYS Adapter,a:b1,b:b3,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b0,y:b2,platform:Android, +64623163333561643339623235373232,Logitech F310,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35623364393661626231343866613337,Logitech F710,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4c6f6769746563682047616d65706164,Logitech F710,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +64396331333230326333313330336533,Logitech F710,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39653365373864633935383236363438,Logitech G Cloud,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4~,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5~,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +416d617a6f6e2047616d6520436f6e74,Luna Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +4c756e612047616d6570616400000000,Luna Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30363066623539323534363639323363,Magic NS,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +31353762393935386662336365626334,Magic NS,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +39623565346366623931666633323530,Magic NS,a:b1,b:b3,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b0,y:b2,platform:Android, +6d6179666c617368206c696d69746564,Mayflash GameCube Adapter,a:b22,b:b21,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a5,righty:a2,start:b30,x:b23,y:b24,platform:Android, +436f6e74726f6c6c6572000000000000,Mayflash N64 Adapter,a:b1,b:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +65666330633838383061313633326461,Mayflash N64 Adapter,a:b1,b:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +37316565396364386635383230353365,Mayflash Saturn Adapter,a:b21,b:b22,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, +4875694a696120205553422047616d65,Mayflash Saturn Adapter,a:b21,b:b22,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, +535a4d792d706f776572204c54442043,Mayflash Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b31,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, +30653962643666303631376438373532,Mayflash Wii DolphinBar,a:b23,b:b24,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b0,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, +39346131396233376535393665363161,Mayflash Wii U Pro Adapter,a:b22,b:b23,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,leftstick:b31,lefttrigger:b27,rightshoulder:b26,rightstick:b0,righttrigger:b28,rightx:a0,righty:a1,start:b30,x:b21,y:b24,platform:Android, +31323564663862633234646330373138,Mega Drive,a:b23,b:b22,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b25,righttrigger:b26,start:b30,x:b24,y:b21,platform:Android, +37333564393261653735306132613061,Mega Drive,a:b21,b:b22,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, +64363363336633363736393038313464,Mega Drive,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b2,y:b3,platform:Android, +33323763323132376537376266393366,Microsoft Dual Strike,a:b24,b:b23,back:b25,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b27,lefttrigger:b29,rightshoulder:b78,rightx:a0,righty:a1~,start:b26,x:b22,y:b21,platform:Android, +30306461613834333439303734316539,Microsoft SideWinder Pro,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b20,lefttrigger:b9,rightshoulder:b19,righttrigger:b10,start:b17,x:b2,y:b3,platform:Android, +32386235353630393033393135613831,Microsoft Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4d4f435554452d303533582d4d35312d,Mocute 053X,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +33343361376163623438613466616531,Mocute M053,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39306635663061636563316166303966,Mocute M053,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +7573622067616d657061642020202020,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Android, +050000007e05000009200000ffff0f00,Nintendo Switch Pro Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b17,y:b2,platform:Android, +34323437396534643531326161633738,Nintendo Switch Pro Controller,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,misc1:b5,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +50726f20436f6e74726f6c6c65720000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b2,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b10,rightx:a2,righty:a3,start:b18,y:b3,platform:Android, +36326533353166323965623661303933,NSO N64 Controller,+rightx:b17,+righty:b10,-rightx:b2,-righty:b19,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,righttrigger:b15,start:b18,platform:Android, +4e363420436f6e74726f6c6c65720000,NSO N64 Controller,+rightx:b17,+righty:b10,-rightx:b2,-righty:b19,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,righttrigger:b15,start:b18,platform:Android, +534e455320436f6e74726f6c6c657200,NSO SNES Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +64623863346133633561626136366634,NSO SNES Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +050000005509000003720000cf7f3f00,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005509000010720000ffff3f00,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005509000014720000df7f3f00,NVIDIA Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android, +050000005509000014720000df7f3f80,NVIDIA Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a3,rightx:a4,righty:a5,start:b6,x:b2,y:b3,platform:Android, +37336435666338653565313731303834,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4e564944494120436f72706f72617469,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +61363931656135336130663561616264,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39383335313438623439373538343266,OUYA Controller,a:b0,b:b2,dpdown:b18,dpleft:b15,dpright:b16,dpup:b17,leftshoulder:b3,leftstick:b9,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,x:b1,y:b19,platform:Android, +4f5559412047616d6520436f6e74726f,OUYA Controller,a:b0,b:b2,dpdown:b18,dpleft:b15,dpright:b6,dpup:b17,leftshoulder:b3,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b19,platform:Android, +506572666f726d616e63652044657369,PDP PS3 Rock Candy Controller,a:b1,b:b17,back:h0.2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b0,y:b2,platform:Android, +62653335326261303663356263626339,PlayStation Classic Controller,a:b19,b:b1,back:b17,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,lefttrigger:b3,rightshoulder:b10,righttrigger:b20,start:b18,x:b2,y:b0,platform:Android, +536f6e7920496e746572616374697665,PlayStation Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +576972656c65737320436f6e74726f6c,PlayStation Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +61653962353232366130326530363061,Pokken,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,rightshoulder:b20,righttrigger:b10,start:b18,x:b0,y:b2,platform:Android, +32666633663735353234363064386132,PS2,a:b23,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a3,righty:a2,start:b30,x:b24,y:b21,platform:Android, +050000004c05000068020000dfff3f00,PS3 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +536f6e7920504c415953544154494f4e,PS3 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +61363034663839376638653463633865,PS3 Controller,a:b0,b:b1,back:b15,dpdown:a14,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66366539656564653432353139356536,PS3 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66383132326164626636313737373037,PS3 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c050000c405000000783f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c050000c4050000fffe3f00,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000004c050000c4050000fffe3f80,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a3,rightx:a4,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000004c050000c4050000ffff3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c050000cc090000fffe3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c050000cc090000ffff3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30303839663330346632363232623138,PS4 Controller,a:b1,b:b17,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +31326235383662333266633463653332,PS4 Controller,a:b1,b:b16,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b17,x:b0,y:b2,platform:Android, +31373231336561636235613666323035,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +31663838336334393132303338353963,PS4 Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +34613139376634626133336530386430,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35643031303033326130316330353564,PS4 Controller,a:b1,b:b17,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +37626233336235343937333961353732,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +37626464343430636562316661643863,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38393161636261653636653532386639,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +63313733393535663339656564343962,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +63393662363836383439353064663939,PS4 Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65366465656364636137653363376531,PS4 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +66613532303965383534396638613230,PS4 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +050000004c050000e60c0000fffe3f00,PS5 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000004c050000e60c0000fffe3f80,PS5 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a3,rightx:a4,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000004c050000e60c0000ffff3f00,PS5 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +32346465346533616263386539323932,PS5 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +32633532643734376632656664383733,PS5 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +37363764353731323963323639666565,PS5 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +61303162353165316365336436343139,PS5 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +64336263393933626535303339616332,Qanba 4RAF,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b20,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b9,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +36626666353861663864336130363137,Razer Junglecat,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000f8270000bf0b0000ffff3f00,Razer Kishi,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +62653861643333663663383332396665,Razer Kishi,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000003215000005070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000003215000007070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000003215000000090000bf7f3f00,Razer Serval,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, +5a6869587520526574726f2042697420,Retro Bit Saturn Controller,a:b21,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b26,rightshoulder:b27,righttrigger:b28,start:b30,x:b23,y:b24,platform:Android, +32417865732031314b6579732047616d,Retro Bit SNES Controller,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +36313938306539326233393732613361,Retro Bit SNES Controller,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +526574726f466c616720576972656420,Retro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b17,rightshoulder:b18,start:b10,x:b2,y:b3,platform:Android, +61343739353764363165343237303336,Retro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b17,lefttrigger:b18,leftx:a0,lefty:a1,start:b10,x:b2,y:b3,platform:Android, +38653130373365613538333235303036,Retroid Pocket 2,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +64363363336633363736393038313463,Retrolink,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b6,platform:Android, +37393234373533633333323633646531,RetroUSB N64 RetroPort,+rightx:b17,+righty:b15,-rightx:b18,-righty:b6,a:b10,b:b9,dpdown:b19,dpleft:b1,dpright:b0,dpup:b2,leftshoulder:b7,lefttrigger:b20,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Android, +5365616c6965436f6d707574696e6720,RetroUSB N64 RetroPort,+rightx:b17,+righty:b15,-rightx:b18,-righty:b6,a:b10,b:b9,dpdown:b19,dpleft:b1,dpright:b0,dpup:b2,leftshoulder:b7,lefttrigger:b20,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Android, +526574726f5553422e636f6d20534e45,RetroUSB SNES RetroPort,a:b1,b:b20,back:b19,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b2,x:b0,y:b3,platform:Android, +64643037633038386238303966376137,RetroUSB SNES RetroPort,a:b1,b:b20,back:b19,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b2,x:b0,y:b3,platform:Android, +37656564346533643138636436356230,Rock Candy Switch Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +33373336396634316434323337666361,RumblePad 2,a:b22,b:b23,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b24,platform:Android, +36363537303435333566386638366333,Samsung EIGP20,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +53616d73756e672047616d6520506164,Samsung EIGP20,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66386565396238363534313863353065,Sanwa PlayOnline Mobile,a:b21,b:b22,back:b23,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b24,platform:Android, +32383165316333383766336338373261,Saturn,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:a4,righttrigger:a5,x:b2,y:b3,platform:Android, +38613865396530353338373763623431,Saturn,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,lefttrigger:b10,rightshoulder:b20,righttrigger:b19,start:b17,x:b2,y:b3,platform:Android, +61316232336262373631343137633631,Saturn,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:a4,righttrigger:a5,x:b2,y:b3,platform:Android, +30353835333338613130373363646337,SG H510,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +66386262366536653765333235343634,SG H510,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, +66633132393363353531373465633064,SG H510,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +62653761636366393366613135366338,SN30 PP,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38376662666661636265313264613039,SNES,a:b0,b:b1,back:b9,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b3,rightshoulder:b20,start:b10,x:b19,y:b2,platform:Android, +5346432f555342205061640000000000,SNES Adapter,a:b0,b:b1,back:b9,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b3,rightshoulder:b20,start:b10,x:b19,y:b2,platform:Android, +5553422047616d657061642000000000,SNES Controller,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +63303964303462366136616266653561,Sony PSP,a:b21,b:b22,back:b27,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,leftx:a0,lefty:a1,rightshoulder:b26,start:b28,x:b23,y:b24,platform:Android, +63376637643462343766333462383235,Sony Vita,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a3,righty:a4,start:b18,x:b0,y:b2,platform:Android, +476f6f676c65204c4c43205374616469,Stadia Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +5374616469614e3848532d6532633400,Stadia Controller,a:b0,b:b1,back:b15,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android, +05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android, +0500000011010000201400000f7e0f00,SteelSeries Nimbus,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,x:b19,y:b2,platform:Android, +35306436396437373135383665646464,SteelSeries Nimbus Plus,a:b0,b:b1,leftshoulder:b3,leftstick:b17,lefttrigger:b9,leftx:a0,rightshoulder:b20,rightstick:b18,righttrigger:b10,rightx:a2,x:b19,y:b2,platform:Android, +54475a20436f6e74726f6c6c65720000,TGZ Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +62363434353532386238336663643836,TGZ Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +37323236633763666465316365313236,THEC64 Joystick,a:b21,b:b22,back:b27,leftshoulder:b25,leftx:a0,lefty:a1,rightshoulder:b26,start:b27,x:b23,y:b24,platform:Android, +38346162326232346533316164363336,THEGamepad,a:b23,b:b22,back:b27,leftshoulder:b25,leftx:a0,lefty:a1,rightshoulder:b26,start:b28,x:b24,y:b21,platform:Android, +050000004f0400000ed00000fffe3f00,ThrustMaster eSwap Pro Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +5477696e20555342204a6f7973746963,Twin Joystick,a:b22,b:b21,back:b28,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,leftstick:b30,lefttrigger:b24,leftx:a0,lefty:a1,rightshoulder:b27,rightstick:b31,righttrigger:b25,rightx:a3,righty:a2,start:b29,x:b23,y:b20,platform:Android, +30623739343039643830333266346439,Valve Steam Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,paddle1:b24,paddle2:b23,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +31643365666432386133346639383937,Valve Steam Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,paddle1:b24,paddle2:b23,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30386438313564306161393537333663,Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, +33333034646336346339646538643633,Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, +050000005e0400008e02000000783f00,Xbox 360 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30396232393162346330326334636566,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38313038323730383864666463383533,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +58626f782033363020576972656c6573,Xbox 360 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65353331386662343338643939643636,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65613532386633373963616462363038,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +47656e6572696320582d426f78207061,Xbox Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4d6963726f736f667420582d426f7820,Xbox Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +64633436313965656664373634323364,Xbox Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e04000091020000ff073f00,Xbox One Controller,a:b0,b:b1,back:b4,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +050000005e04000091020000ff073f80,Xbox One Controller,a:b0,b:b1,back:b4,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000e00200000ffe3f00,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b17,y:b2,platform:Android, +050000005e040000e00200000ffe3f80,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a2,righty:a3,start:b10,x:b17,y:b2,platform:Android, +050000005e040000e0020000ffff3f00,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b4,leftshoulder:b3,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b17,y:b2,platform:Android, +050000005e040000e0020000ffff3f80,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b4,leftshoulder:b3,leftstick:b8,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b7,righttrigger:a5,rightx:a2,righty:a3,start:b10,x:b17,y:b2,platform:Android, +050000005e040000fd020000ffff3f00,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +33356661323266333733373865656366,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +34356136633366613530316338376136,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,x:b17,y:b2,platform:Android, +35623965373264386238353433656138,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +36616131643361333337396261666433,Xbox One Controller,a:b0,b:b1,back:b15,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +58626f7820576972656c65737320436f,Xbox One Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000000b000000783f00,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +050000005e040000000b000000783f80,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000050b0000ffff3f00,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a6,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000e002000000783f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000ea02000000783f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000fd020000ff7f3f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000120b000000783f00,Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +050000005e040000120b000000783f80,Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000130b0000ffff3f00,Xbox Series Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65633038363832353634653836396239,Xbox Series Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000001727000044310000ffff3f00,XiaoMi Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a6,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android, + +# iOS +05000000ac0500000100000000006d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS, +05000000ac050000010000004f066d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS, +05000000ac05000001000000cf076d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS, +05000000ac05000001000000df076d01,*,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +05000000ac05000001000000ff076d01,*,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +05000000ac0500000200000000006d02,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b2,y:b3,platform:iOS, +05000000ac050000020000004f066d02,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b2,y:b3,platform:iOS, +050000008a35000003010000ff070000,Backbone One,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000008a35000004010000ff070000,Backbone One,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +4d466947616d65706164010000000000,MFi Extended Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:iOS, +4d466947616d65706164020000000000,MFi Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b6,x:b2,y:b3,platform:iOS, +050000007e050000062000000f060000,Nintendo Switch Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b2,leftshoulder:b4,rightshoulder:b5,x:b1,y:b3,platform:iOS, +050000007e050000062000004f060000,Nintendo Switch Joy-Con (L),+leftx:h0.1,+lefty:h0.2,-leftx:h0.4,-lefty:h0.8,dpdown:b2,dpleft:b0,dpright:b3,dpup:b1,leftshoulder:b4,misc1:b6,rightshoulder:b5,platform:iOS, +050000007e05000008200000df070000,Nintendo Switch Joy-Con (L/R),a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000007e0500000e200000df070000,Nintendo Switch Joy-Con (L/R),a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:iOS, +050000007e050000072000004f060000,Nintendo Switch Joy-Con (R),+rightx:h0.4,+righty:h0.8,-rightx:h0.1,-righty:h0.2,a:b1,b:b0,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b3,y:b2,platform:iOS, +050000007e05000009200000df870000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b10,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:iOS, +050000007e05000009200000ff870000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000004c050000cc090000df070000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000004c050000cc090000df870001,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000004c050000cc090000ff070000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000004c050000cc090000ff870001,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,touchpad:b11,x:b2,y:b3,platform:iOS, +050000004c050000cc090000ff876d01,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000004c050000e60c0000df870000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,touchpad:b10,x:b2,y:b3,platform:iOS, +050000004c050000e60c0000ff870000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,touchpad:b11,x:b2,y:b3,platform:iOS, +05000000ac0500000300000000006d03,Remote,a:b0,b:b2,leftx:a0,lefty:a1,platform:iOS, +05000000ac0500000300000043006d03,Remote,a:b0,b:b2,leftx:a0,lefty:a1,platform:iOS, +05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:iOS, +05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:iOS, +050000005e040000050b0000df070001,Xbox Elite Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b10,paddle2:b12,paddle3:b11,paddle4:b13,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000005e040000050b0000ff070001,Xbox Elite Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b13,paddle3:b12,paddle4:b14,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000005e040000e0020000df070000,Xbox One Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000005e040000e0020000ff070000,Xbox One Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000005e040000130b0000df870001,Xbox Series X Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b10,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000005e040000130b0000ff870001,Xbox Series X Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, diff --git a/assets/fonts/LessPerfectDOSVGA.ttf b/assets/fonts/LessPerfectDOSVGA.ttf new file mode 100644 index 0000000..6aaf28c Binary files /dev/null and b/assets/fonts/LessPerfectDOSVGA.ttf differ diff --git a/assets/fonts/dos.font b/assets/fonts/dos.font new file mode 100644 index 0000000..03f6a9d --- /dev/null +++ b/assets/fonts/dos.font @@ -0,0 +1,4 @@ +(font + :path "LessPerfectDOSVGA.ttf" + :size 16 + ) diff --git a/assets/icons/icons8-bug-16.png b/assets/icons/icons8-bug-16.png new file mode 100644 index 0000000..2e40ca0 Binary files /dev/null and b/assets/icons/icons8-bug-16.png differ diff --git a/assets/icons/icons8-console-16.png b/assets/icons/icons8-console-16.png new file mode 100644 index 0000000..c3fc8c2 Binary files /dev/null and b/assets/icons/icons8-console-16.png differ diff --git a/assets/icons/icons8-factory-16.png b/assets/icons/icons8-factory-16.png new file mode 100644 index 0000000..504762f Binary files /dev/null and b/assets/icons/icons8-factory-16.png differ diff --git a/assets/icons/icons8-gear-16.png b/assets/icons/icons8-gear-16.png new file mode 100644 index 0000000..62503f4 Binary files /dev/null and b/assets/icons/icons8-gear-16.png differ diff --git a/assets/icons/icons8-light-switch-16.png b/assets/icons/icons8-light-switch-16.png new file mode 100644 index 0000000..b2f65ca Binary files /dev/null and b/assets/icons/icons8-light-switch-16.png differ diff --git a/assets/icons/icons8-lock-16.png b/assets/icons/icons8-lock-16.png new file mode 100644 index 0000000..26823fa Binary files /dev/null and b/assets/icons/icons8-lock-16.png differ diff --git a/assets/icons/icons8-music-16.png b/assets/icons/icons8-music-16.png new file mode 100644 index 0000000..87e1d46 Binary files /dev/null and b/assets/icons/icons8-music-16.png differ diff --git a/assets/icons/icons8-pause-16.png b/assets/icons/icons8-pause-16.png new file mode 100644 index 0000000..eaa584e Binary files /dev/null and b/assets/icons/icons8-pause-16.png differ diff --git a/assets/icons/icons8-radio-tower-16.png b/assets/icons/icons8-radio-tower-16.png new file mode 100644 index 0000000..00bf15e Binary files /dev/null and b/assets/icons/icons8-radio-tower-16.png differ diff --git a/assets/icons/icons8-record-16.png b/assets/icons/icons8-record-16.png new file mode 100644 index 0000000..b3547c4 Binary files /dev/null and b/assets/icons/icons8-record-16.png differ diff --git a/assets/icons/icons8-resume-button-16.png b/assets/icons/icons8-resume-button-16.png new file mode 100644 index 0000000..8454c52 Binary files /dev/null and b/assets/icons/icons8-resume-button-16.png differ diff --git a/assets/icons/icons8-shuffle-16.png b/assets/icons/icons8-shuffle-16.png new file mode 100644 index 0000000..73ad01e Binary files /dev/null and b/assets/icons/icons8-shuffle-16.png differ diff --git a/assets/icons/icons8-skip-to-start-16.png b/assets/icons/icons8-skip-to-start-16.png new file mode 100644 index 0000000..2d7437a Binary files /dev/null and b/assets/icons/icons8-skip-to-start-16.png differ diff --git a/assets/icons/icons8-spotlight-16.png b/assets/icons/icons8-spotlight-16.png new file mode 100644 index 0000000..aa0712e Binary files /dev/null and b/assets/icons/icons8-spotlight-16.png differ diff --git a/assets/icons/no_tex.png b/assets/icons/no_tex.png new file mode 100644 index 0000000..bb980b9 Binary files /dev/null and b/assets/icons/no_tex.png differ diff --git a/docs/2d.md b/docs/2d.md deleted file mode 100644 index dbe6264..0000000 --- a/docs/2d.md +++ /dev/null @@ -1,13 +0,0 @@ -# Yugine 2D Tooling - -## 2D game editing -2D game levels take place on a 2D plane. Objects can be on layers from -127 to 127. When you start editing, you begin with placing objects on layer 0.This makes it easy to add foreground and background graphics. In addition, each layer has a parallax value from -127 to 127. A parallax value of 1 means the sprite moves at a 1:1 ratio with the camera, ie, if the camera "moves" one pixel to the right, the object will appear to move 1 pixel to the left across the screen. Positive parallax values denote faster movement, so a parallax value of 100 indicates the object will move 100 pixels to the left if the camera moves 1 pixel to the right. Negative parallax values indicate slower movement, so a value of -100 indicates that the object will move 1 pixel to the left for every 100 pixels to the right the camera moves. A parallax value of 0 indicates the object will not move when the camera moves. This might be used for static stars in the background of a space level, for example. - -If two sprites on the same layer overlap, it is undefined behavior. Be sure they do not overlap! - -Instead of selecting what layer each element is on, it might be useful to group them. Gameobject fields can be set to a specific layer. You can choose to have each object's layer determined by its type instead of individually. For example, in a platformer it often makes sense to have all Monsters and the Player on the same layer. - -There are three viewing modes in 2D mode: -- Game view: how the level will be seen when the game is run. -- Layer view: View only one layer at a time. -- Onion view: View a selected layer; all layers behind that layer are drawn as normal, and all layers on top are drawn transparently. diff --git a/docs/3d.md b/docs/3d.md deleted file mode 100644 index c743953..0000000 --- a/docs/3d.md +++ /dev/null @@ -1,11 +0,0 @@ -# Yugine 3D Tooling - - Yowza! 3D graphical features include: - - ### Rendering - A forward rendering pipeline with MSAA options. - - ### Debug modes - Grid drawing is handled as three separate axises. Most game engines enable the X and Z axis drawing to create a 2D grid on the ground. Each axis has markers for a set number of units so you can orient yourself whereever you are in the game world. You set these markers. - - If you only enable the X axis grid, there will just be a line along the X axis that shows you the units you're at. X and Z enabled create a 2D grid on the ground; X, Y and Z enabled create a grid going into the sky as well as the grid along theh ground. \ No newline at end of file diff --git a/docs/editor.md b/docs/editor.md index e69de29..5b0a550 100644 --- a/docs/editor.md +++ b/docs/editor.md @@ -0,0 +1,183 @@ +# Yugine Editor + +The main editor view is made up of objects. Each object can have a +number of components attached to it. When an object is selected, its +name, position, and list of components are listed. + +## Basic controls +|Ctrl-Z|Undo| +|Ctrl-Shift-Z|Redo| +|Ctrl-A|Select all| +|Ctrl-S|Save| +|Ctrl-N|New| +|Ctrl-O|Open level| +|Ctrl-X|Cut| +|Ctrl-C|Copy| +|Ctrl-V|Paste| +|Alt-O|Add level to current level| +|Alt-A|or Alt-P Add a prefab| +|Ctrl-I|Objects on the level| +|Ctrl-E|Asset viewer. When on a component like a sprite, serves to select that sprite's texture| +|Ctrl-[|Downsize grid| +|Ctrl-]|Upsize grid| +|Backtick|REPL| +|Ctrl-[1-9]|to set camera positions| +|[1-9]|to recall camera positions| +|0|Set camera to home view| +|ESC|quit| +|Alt-1|Normal view| +|Alt-2|Wireframe view| +|Shift-Middle|Set editor cursor to mouse position (Cursor affects how objects rotate)| +|Shift-Ctrl-Middle|Set cursor to object selection| +|Shift-Right|Remove cursor| + +## Editor Mode select + +|Alt-F1|Basic mode| +|Alt-F2|Brush mode| + - Clicking will place what is on clipboard + +## Object controls + +|G|Translate| +|Alt-G|Snap objects to cursor| +|S|Scale| +|R|Rotate| +|Ctrl-P|Save object changes to prefab| +|Ctrl-shift-P|Save object changes as a unique prefab ("Parent")| +|Ctrl-shift-T|Save object changes to a side prefab ("Type")| +|Ctrl-J|Bake name to expose to level script| +|Alt-J|Remove baked name| +|Ctrl-Y|Show obj chain| +|Alt-Y|Start prototype explorer| +|Ctrl-U|Revert object or component to match prototype| +|Alt-U|Make object unique. If a level, allows setting of internal object position and rotation.| +|Ctrl-shift-G|Save group as a level| +|Arrows|Translate 1 px| +|Shift-Arrows|Translate 10 px| +|Tab|Select component| +|F|Zoom to object(s)| +|Ctrl-F|Focus on a selected sublevel. Edit and save it in place.| +|Ctrl-Shift-F|Go up one level in the editing chain.| +|M|Flip horizontally| +|Ctrl-M|Flip vertically| +|Ctrl-D|Duplicate| +|H|Hide| +|Ctrl-H|Unhide all| +|T|Lock| +|Alt-T|Unlock all| +|Q|Toggle component help| +|Ctrl-Shift-Alt-Click|Set object center| + +## Mouse controls + +|Left|Select| +|Middle|Quick grab| +|Right|Unselect| + +## Level controls +|Ctrl-L|Open level script| + +## Game controls +|F1|Debug draw| +|F2|Config menu| +|F3|Show bounding boxes| +|F4|Show gizmos| +|F5|Start| +|F6|Pause| +|F7|Stop| +|F10|Toggle slow motion| + +== Components +Components all have their own set of controls. Many act similar to +objects. If a component has a position attribute, it will react as +expected to object grabbing; same with scaling, rotation, and so on. + +If a component uses an asset, the asset viewer will serve to pick new +assets for it. + +## Spline controls +|Ctrl-click|Add a point| +|Shift-click|remove a point| +|+,-|Increase or decrease spline segments| +|Ctrl-+,-|Increase or decrease spline degrees. Put this to 1 for the spline to go point to point| +|Alt-B,V|Increase or decrease spline thickness| + +.Collider controls +|Alt-S|Toggle sensor| + +## Yugine Programming + +### Object functions + +* start(): Called when the object is created, before the first update is ran +* update(dt): Called once per frame +* physupdate(dt): Called once per physics calculation +* stop(): Called when the object is killed +* collide(hit): Called when this object collides with another. If on a collider, specific to that collider + - hit.hit: Gameobject ID of what's being hit + - hit.velocity: Velocity of impact + - hit.normal: Normal of impact + +### Colliders +Colliders visually look different based on their status. Objects can +be in one of three states + +- Dynamic: respond to physics +- Kinematic: modeled with infinite momentum. An "unstoppable force" +controlled by a user. +- Static: modeled with infinite mass. An "immovable object" that +shouldn't move. + +Objects can then have colliders on them, each collider being a sensor, +or solid. Sensors respond to collision signals, while solid ones also +do not let objects through. + + + +### Input +Input works by adding functions to an object, and then "controlling" +them. The format for a function is "input_[key]_[action]". [Action] +can be any of + +- down: Called once per frame the key is down +- pressed: Called when the key is pressed +- released: called when the key is released + +For example, "input_p_pressed()" will be called when p is pressed, and not again +until it is released and pressed again. + +### Your game + +When the engine runs, it executes config.js, and then game.js. A +window should be created in config.js, and custom code for prototypes +should be executed. + +game.js is the place to open your first level. + +### Levels + +A level is a collection of objects. A level has a script associated +with it. The script is ran when the level is loaded. + +Levels can be added to other levels. Each is independent and unique. +In this way, complicated behavior can easily be added up. For example, +a world might have a door that opens with a lever. The door and lever +can be saved off as their own level, and the level script can contain +the code that causes the door to open when the lever is thrown. Then, +as many door-lever levels can be added to your game as you want. + +The two primary ways to add objects to the game are World.spawn, and +Level.add. World.spawn creates a single object in the world, Level.add +adds an entire level, along with its script. + +Levels also can be checked for "completion". A level can be loaded +over many frames, and only have all of its contents appear once it's +finished loading. World.spawn is immediate. + +Level.clear removes the level from the game world. + +.Level scripting +Each level has a script which is ran when the level is loaded, or the +game is played. A single object declared in it called "scene" can be +used to expose itself to the rest of the game. diff --git a/docs/game.md b/docs/game.md new file mode 100644 index 0000000..2a29c5f --- /dev/null +++ b/docs/game.md @@ -0,0 +1,138 @@ +# Yugine + +The yugine essentially is made of a sequence of levels. Levels can be +nested, they can be streamed in, or loaded one at a time. Levels are +made of levels. + +Different "modes" of using the engine has unique sequences of level +loading orders. Each level has an associated script file. Level +loading functions call the script file, as well as the level file. The +level file can be considered to be a container of objects that the +associated script file can access. + +* Game start + 1. Engine scripts + 2. config.js + 3. game.lvl & game.js + +* Editor + 1. Engine scripts + 2. config.js + 3. editor.js + +* Editor play + * F5 debug.lvl. Used for custom debug level testing. If doesn't exist, game.lvl is loaded. + * F6 game.lvl + * F7 Currently edited level + +While playing ... + +* F7 Stop + +## Level model +The game world is made up of objects. Levels are collections of +objects. The topmost level is called "World". Objects are spawned into +a specific level. If none are explicitly given, objects are spawned +into World. Objects in turn are made up of components - sprites, +colliders, and so on. Accessing an object might go like this: + +World.level1.enemy1.sprite.path = "brick.png"; + +To set the image of enemy1 in level 1's sprite. + +### Level functions +|name| description| +|---|---| +|levels| a list of all levels loaded in this one| +|objects| a list of all objects belonging to this level (objects + levels)| +|object_count| objects.length()| +|spawn(type)| creates an object from the supplied type in the level| +|create()| creates an empty level inside of this one| +|loadfile(file)| loads file as a level inside of this one; returns it. Mainly for editor| +|loadlevel(file)| loads file as a level and does running required for gameplay| +|load(level_json)| clears this level and spawns all objects specified in the level_json| +|clear()| kills all objects in this level| +|kill()| cleans up the level and kills it| + +## Objects +Objects are things that exist in the game world. + +|name| description| +|---|---| +|level| the level this object belongs to| +|pos| the global position| +|relpos| the position relative to its level| +angle| the global angle| +|relangle| angle relative to its level| +|velocity| velocity of the object| +|angularvelocity| angular velocity of the object| +|alive| true if the object is valid| +|varname| the variable name of the object (used for friendly naming)| +|friction| physics attribnute| +|elasticity| physics attribute| +|flipx| true if the object is flipped on its x axis| +|flipy| true if the object is mirrored on its y axis| +|body| the internal gameobject id of the object| +|controlled| true if the object is controlled by something| +|phys| set to dynamic; kinematic; or static; explained below| +|moi| the moment of inertia of the object| +|mass| mass of the object| +|visible| true if the object is visible. Set to false to disable all visible features belonging to it| +|in_air()| true if the object is not on the ground| +|on_ground()| !in_air()| +|layer| collision layer for the physics engine| +|draw_layer| draw order. higher numbers draw on top of lower ones| +|scale| change to make the object larger or smaller| +|from| the object this object was created from| +|boundingbox| the boundingbox of this object in world dimensions| +|push(vec)| push this object each frame with vec velocity| +|width| the boundingbox defined width| +|height| the boundingbox defined height| +|kill| destroy the object| +|stop| ???| +|world2this(pos)| return the pos in world coordinates to relative this object| +|this2world(pos)| return the pos in this coordinates relative to the world| +|make(props, level)| instantiate an object based on this, with additional props, in level| + +## Editor related object features + +|gizmo| path to an image to draw in editor mode| + +## Functions for object control + +|clone(name; ext)| create a copy of this object and extend it with ext; does not spawn| +|instadup()| create an exact duplicate of this object in the World| +|revert()| remove everything that makes the object unique; make it exactly like what it was spawned from| + +## Physics +All objects belong to the physics engine, but may be totally ignored by it. + +|static| does not and will not move| +|dynamic| moves under the auspices of the physics engine| +|kinematic| moves under the auspices of the player or other control mechanism| + +Physics properties work as such + +|mass| affects how much a given force will move an object| +|elasticity| affects momentum loss on collisions; multiplicative between two objects for each collision; 1 for no loss; 0 for total stoppage; >1 for a chaotic increasing entropy simulation| +|friction| affects momentum loss when rubbing against another surface; multiplicative between the two objects| + +## Textures & images +A sprite is a display of a specific texture in the game world. The +underlying texture has values associated with it, like how it should +be rendered: is it a sprite, is it a texture, does it have mipmaps, +etc. Textures are all file based, and are only accessed through the +explicit path to their associated image file. + +## Finding & Addressing Objects + + +## Editor & Debugging +Although intertwined, debugging functions and the editor are separate entities. + +### Debugging +Debugging functions are mapped to the F buttons, and are always available during gameplay in a debug build. Pressing the F button toggles the feature; pressing it with ALT shows a legend for that feature; pressing it with CTRL shows additional info + +|F1| Draw physics info| +|F3| Draw bounding boxes| +|F12| Drawing gui debugging info| diff --git a/docs/gameobject.md b/docs/gameobject.md deleted file mode 100644 index 535d73a..0000000 --- a/docs/gameobject.md +++ /dev/null @@ -1,13 +0,0 @@ -# Yugine Gameobjects - -## The world - -A game is defined by the world. The "world" is a list of gameobjects. Each gameobject has a unique ID it can be referenced by. Gameobjects have a position and rotation in the world - -## Components -Components are part of a gameobjects. Different components, and varying values on those components, are what make game objects unique. - -## Prefabs -A "prefab" is simply a gameobject blueprint. It defines the gameobject and all of its components. - -Prefabs have a hierarchy you can trace. Each prefab descendent can have modified values compared to its parent. When the parent changes, the lower prefabs change, too, IF they have no altered the given value from the parent. \ No newline at end of file diff --git a/docs/gui.md b/docs/gui.md deleted file mode 100644 index b0a5b25..0000000 --- a/docs/gui.md +++ /dev/null @@ -1,22 +0,0 @@ -# Yugine GUI - -The GUI is a 2D layer which is always on top of everything and does not move with the camera. The GUI acts like a sub level, each element can have a layer value from -127 to 127 to indicate its draw position. If two GUI elements on the same layer overlap, it is undefined behavior. - - A "Subgui" has its own layer order from -127 to 127. It itself is on one layer of the base GUI. - - ### GUI Scripting - Each GUI element has a "Draw" boolean. If it is true, the GUI draws. If a Subgui's 'Draw' is set to 'True', it and all of its subelements draw. - - Each GUI element has a script to allow it to hook into a component of the game. When it draws, its script is executed. Any component of the GUI element can be set in its script. A simple thing to do would be for a text script's instruction to be to set the value of the text to the player's health. - - The GUI has read only access to the game state. Each gameobject has a boolean for "GUI". If set to 'True', that gameobject becomes readable by the GUI. It is accessed as 'gameobjectname->...'. The GUI can read all elements of the struct. - -### GUI animations - Each GUI element has a set number of animation slots which can be utilized. - - - Start: Animation that is played once when the GUI element is set to Draw. - - Repeat: Animation that is always played on a loop when the GUI element is Drawing, after the Start animation is finished. - - Hover: Looped animation played when the GUI element is selected. - - Quit: SIngle play animation when Draw is set to False. - - In addition, there are 'Seconds' fields for Start-Repeat, Repeat-Hover, Hover-Repeat, and Hover-Quit. This field represents the time it takes to transition from one animation to the next. If set to 0, the animation immediately jumps to the beginning of the next animation. If set to a number, the GUI element will smoothly interpolate from its ending state to the beginning of the first frame of the next animation. For example, if a HUD element is bouncing up and down on hover, when you go to the next element the bouncing element jumps to its static state. It can instead smoothly return to where it started using this field. \ No newline at end of file diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 00a439f..0000000 --- a/docs/index.md +++ /dev/null @@ -1,273 +0,0 @@ -# The Yugine NAME TBD -The Yugine is an engine for people who can code. If you learn to code, you will be rewarded with the ability to make games way faster than you can with any other tool. - -## Compiling -The main component of the Yugine is the library that enables the engine, yugine.a. Use this to create variations on the engine. The standard engine is a single "engine.c" file that enables all systems and initiates a standard game loop. It's compiled with a simple command, "tcc engine.c -o engine -static -lyugine -Iyugine". The editor that ships with it is compiled similarly. The editor and engine files should include preprocessor macros at the top of the files to customize the engine. - -The engine is supposed to be extendable with C code easily. - -### Included compiler -The yugine includes a C compiler with it. Objects can be scripted with direct C, for extremely fast performance. Each time you press "play", the C is compiled and executed as if it's part of the original engine. The C "scripts" are compiled using the embedded TCC (tiny C compiler). - -### Why C instead of C++??? Or anything else that's "easier"??? -C is the most simple programming language there is. Simple as. - -## It's an operating system -A game engine is like an operating system. You have low level code managing threads, loading files when needed, and so on. Then you have a higher level interpreted language for manipulating it (like a standard OS terminal/command line). That's all this is; multiple little C programs for manipulating stuff that makes a game work, and a scripting language used to string them together at 300 FPS. - -There are multiple levels on which the engine can be modified. Like most game engines, you can create games with it; UNLIKE most game engines, it is as easy to make game editors as it is to make the games themselves. This makes making games faster and easier, of any sort. - -### Modifying code -The Yugine is the most generic version of the engine. It calls the engine library and runs everything as standard as possible. It is a simple short file that calls the standard basic API to get the engine running. You can hook into the engine API to make your own core engine; call the editor or not, change the rendering schedule, when input is gathered, etc. - -### Editing in-engine -In the engine, you make objects. These can be scripted with Scheme. - -## Scheme -The crown jewel idea behind this engine is its integration with Scheme. It's the scripting language for the engine, selected to be implemented for its extreme versatility and decent speed. Our Scheme implementation is faster than Lua, but multitudes more expressive, and, eventually, can compile down to C for distribution. If you're going to use a scripting language instead of C, choose one that's as far away from C as possible. - -### Game languages -Computer game development would be benefitted greatly by a similar number of languages used by an OS (for example: C, regex, sed, awk, make, bash scripting ...). Some day in the future we have languages for all the things we need them for, but in the mean time, Scheme is extremely good for developing little computer languages, and is the principal reason for its use in the engine. The Zork games and many following Infocom games were developed with a language made using Lisp, for example. It would be doable to recreate SCUMM using Scheme and incorporate it into a game with modern graphics. Wow! - -Usually you have some cumbersome UI to input data into complicated structures to get the following things to work. Because, in Scheme. data is code and code is data, it's much more natural to express this stuff as written commands. -- Game scripting. Calling library functions and making things in the game move. -- AI. Lisp is known as an AI language, and here it is used to make writing AI easier than ever. Instead of clunky GUI behavior trees with lines, you can write out what you want your enemies to behave like. -- Cutscenes. One of the first big game softwares I worked on was a cutscene maker. You could tell characters to move here or there, then say this line, then ask a question; I had to implement some crude form of coroutines and the ability to loop back around to previous points in the dialogue depending on what a player did. No more! For directly included in the language of scheme are continuations! And coroutines can be implemented in a mere 4 lines of code. Best of all, instead of little islands of data connected with arrows (don't they always end up like this?) you can write it like it's supposed to be written: a little (movie) script. -- Formatting text. Scheme gives a natural way to write formatted text. No more opening and closing braces for your various text formatting, now it's all (). Plus, since data is code and code is data, you don't even need any code hooks to grab data like a player's name. The entire engine, every object in it, and any data associated with those objects, are available to be rendered as text. - -## Kernel side and user side -The "kernel" of the engine and the "user side" operate on totally different planes. Data has to be transformed to work on one side or the other anyway, so we make maximal use of that. Most game engines are at a tug of war with themselves, where on one hand you want to code in such a way to keep the processor happy (long arrays of the same operation on the same data type!), while also coding in a way to keep the designers happy (object model). C++ tried to get the best of both worlds, but instead it sucks. Jon Blow is doing something interesting with Jai, where you can swap between these two "views". I hope this turns out well, but I'm convinced that you should just separate systems level programming and user level programming from each other. Hence, C and Scheme, polar opposite languages. - -In this engine, all data is internally represented in CPU optimal formatting. When you are poking around in Scheme, though, the data is put into the view of the objects they compose. You can edit freely in a way that makes the most sense for how games are composed, without sacrificing an ounce of speed. - -## Compiling -Various subsystems in the engine, including the editor, can be stripped at compile time. Running make creates the editor with all subsystems in place. If you instead run make with -- EDITOR=0 - Removes all editor functionality. - - DEBUG=0 -Removes writing debug logs, measuring FPS, the ability to draw physics shapes, various debugging viewmodes, etc. - -It is intended for a script to be written to invoke make with whichever specifications you need. - -The following commands can remove subsystems which a specific game might not need. In the editor, running the "COMPILE INFO" command will tell you which flags you can set to OFF for the game you are currently editing. These are pulled out of the game to increase speed, rather than to decrease size (so anything which it doesn't matter for performance if it is left in is not presented as an option) -- 3D=0 - Removes 3D rendering - - AUDIO=0 -etc ... - -## Basic usage - -If the editor is run, you are presented with a list of projects. If there are no projects listed, one can browse to an empty folder to create a project. If a project is selected, it opens. The editor.info file contains a list of paths for all known projects. If the editor is launched while in a game path, the editor starts immediately editing that game. - -Each project has a game.project file that specifies info about the game, including which engine version the game was built with, which version of the game it is, and graphical settings. The game starts by loading the level specified in this file (set during editing). If the computer the game is run on cannot use a specified graphics setting, the game automatically applies what it thinks would work best (ie if the target is 1080p and the computer is 720p, it assumes fullscreen and so sets the resolution to 720p). - -## Scenes - -A "scene" is a list of classes and starting values for those classes. - -This is the an improved godot, but with some extra features and focus: -- More tools to actually make the game -- First class localization tools -- Easier to work with - -## Controls -### EDITOR -Middle mouse - select object - -Space - Toggle global/local transform - -1 - Render mode LIT -2 - Render mode UNLIT -3 - Render mode WIRE -4 - Show directional shadow map -5 - Toggle gizmos visible -6 - Toggle physics visible -7 - Toggle detail lighting (only albedo) -8 - Lighting only (lit only with gray material) -9 - POV Depth map -0 - Ambient occlusion - -(UE4 viewmodes: https://docs.unrealengine.com/4.26/en-US/BuildingWorlds/LevelEditor/Viewports/ViewModes/) - -CTRL + D - Duplicate object - -Delete - delete object - -F2 - Rename object - -G - Translate object -R - Rotate object -T - Scale object - -F3 - Toggle game stats display -F4 - Toggle hierarchy menu -F5 - Toggle lighting menu -F6 - Toggle game settings menu -F7 - Viewmode menu - -H - Toggle object hidden -K - Toggle grid visible - -F - Focus on model - -Y - Reload shaders - -## Gameobject -A gameobject is anything with a transform. - -Only one level deep inheritance. Each object inherits GameObject. Then, that object defines in its constructor how it looks. What mesh does it use, etc (if it uses a mesh). - -Gameobjects are completely defined in the source code. A designer can only add gameobjects to the game world; a programmer must add components together to create new gameobjects. - -## Object data -Prefabs and import data are sidecar files. They sit right next to the .c and .h files and are named instances you can load. For a prefab of point light, you have point_light.1.prefab - -Import data also sits right next to the asset in the file directory. The name for asset.jpg is asset.import - -## Resources -On engine startup, links to all assets are placed in a hidden .resources folder at the root of the project. Any content in the assets folder will get a symlink in the .resources folder. Humans shouldn't edit the .resources folder. There is one file in the resource folder for each asset found in the assets folder. They also define import options for the assets. - -Filetypes include: -*Images* -.png -.jpg -.tif - -*Sounds* -.wav -.aiff -.voc -.mod -.midi -.ogg -.mp3 -.flac - -*3D Models* -.gltf - -*Shaders* -.glsl - -*Fonts* -.ttf -.bff (bitmap font) - -And yugine generated things: -.yugh (level) -.prefab (An object with some defined characteristics) - -# Internals -## Render pipeline - -3D rendering goes as the following: -Textures ---> -Model----------------> Static actor -Meshes -----> -Raw dataCombination of dataGame world spawn of it - -## Resources -Assets you add are used as resources in the game engine. Each asset has a number of "contexts". You decide how each context is handled for each asset. There are also default contexts you can set. As an example, a .png file can be used as a exture, as a sprite, as a font, as an animation, and so on. It can be used for one of these or more than one. When you use an image as a texture, in most game engines you create the texture and link the image to it; in ours, you simply use the image, and the game uses the appropriate context for the situation. - -### Resource Views -There is a single resource panel which you can then filter based on what you want to see. You can filter by: -File type: .png, .jpg, ... -Resource type: image, video, model, ... -Resource context: texture, sprite, ... (They're only listed here if they are actually used in the game as one of these) - -Plus, you can filter by folder. Most of the time I browse by filter and a search, but you can also filter by grouped objects. So a goblin might have a model, a texture, and some audio files. You can view everything that belongs to the goblin prefab. - -### 3D cursor -In this 3d game engine, you're editing in 3d. Makes sense to have a 3d cursor to do so! - -SPHERE SELECT -Left click, and then use the mouse wheel to enlarge your selection sphere. Release the left mouse to select everything in the sphere. - -CUBE SELECT -Left click and drag to draw a square on any surface. Scroll UP to increase the selection volume out from the surface, and scroll DOWN to decrease it (and even make it negative). - -## Real time editing -You can edit levels in real time with work partners. Start a server and send your partner your IP address and server password. They will gain the ability to edit your game. The host can remove editors from the server, ban them, and restrict their editing privledges (edit, play). Each editor in the room has a color assigned to them. When they select an object to move, the object is shaded their color and their name is overlayed so you know who is editing what. - -When the edits are done, the host can distribute his copy of the game to everybody else, or they can click the download button to get the edits in full. - -## Levels -A level can be either 3D or 2D. All levels feature familiar drag and drop editing, scripting, and so on. - - -## Device view: specifics on resolution, screen sizes, and color gamuts -You can emulate devices on your screen to see what it will physically look like on the target device. This is particularly useful for devices smaller than your editing screen, like tablets and the play date. You can also emulate device color gamuts. When editing, images will be scaled to fit the target device, based on the project target. For example, on a 4k project, a 200 pixel wide sprite will be rendered as a 100 pixel wide sprite when viewed on a 2k device emulator. - -PlayDate: 400x240 pixels, 2.7 inches/68mm, 1 bit color. - -This preview window has a free camera you can view the current scene with. It cannot be zoomed like the main editor can be. The window cannot be resized; it is determined by the selected device settings. - -### Color scopes -The engine has a standard array of colorscopes for the user. - -## Playing the game -When the Play button is selected, the device window becomes what you play the game on. - -## Baking -Baking assets involves converting assets for use on a target device or platform. When a game is played, the engine will scale sprites in real time. If the assets have been baked, it will instead use the scaled assets. Baking sprites means to resize them to to not waste space on the target platform's screen, as well as pack them into atlases. Sounds need to be converted for each platform as well. In the bake menu, select a platform and device to bake the assets for. Once the platform and device have been baked, the game can be exported for that platform. - -## Exporting -An exported game varies by platform, but generally it is basically a single big blob file of all the game's assets with the platform's executable as a sidecar. All baked assets for a platform are put inside of the blob file, and the executable expects the blob file to be next to it. - -Game folder - - engine.exe - - content.blob - - ### Blob file - - struct blob -- - int blobid (identifies this as a blob) - - - int files (number of assets the blob contains) - - - int gameversion - - - int engineverison -- offset array[int files] (array of hashed values of the filepaths containing the byte offset of the data - - data - - To get a filepath's data from the blob, the filepath is hashed, then it is looked up in the offset array. The data can be grabbed by copying it from the start of it to the start of the next file (ie file[hash+1]), because the data is stored in offset array order. - - ### Patching - A patch can be created in the engine. To create a patch, specify the last release you want to patch from, and then export a blob. The new blob will contain only modified files compared with the old blob. Place the patch blob next to the old blob. When an asset is searched for, it will be searched for first in the new blob, and if not found will be searched for in the old blob. If an asset is found in neither, it will be searched for in the filepath. - - If another patch is made, all three blobs must be present (ie patch 1.3 requires the 1.2 patch which requires the base game). - - The game code comes with the ability to merge patches as a CLI. It merges everything into a blob for the most recent patch, ie updates the 1.3<-1.2<-base blobs to a 1.3 blob. - - ### Expansions - Expansions are delivered as their own blobs, with their own patch paths. When an expansion blob is exported, if its blob is placed in the directory with the game runtime, it will be pulled in when the game starts. The main blob should be patched to accomodate "knowing" if the expansion is present or not, so you can for example add a new menu item on the start menu if an expansion is present. - - ### Selecting assets for export - Starting with the game start level, all assets required for it to run are marked for export. Then scripts are investigated: if they include a reference to a level, or asset, or other script, all of these are looked at and their referenced assets pulled in. In this way, nothing that is not seen in the running game will be pulled into the blob. Any test levels will not be included in the export (unless you reference it somewhere in the game) - - To give somebody a development build, simply zip up the entire project and give it to them. - - ## Physics - Each gameobject has a value field that represents what it is, from 0 to 15. Objects which move should be checked as "Kinematic", which then reveals two more bitmask fields: a 16 bit bitmask to represent what it should send trigger events to, and a 16 bit bitmask to represent what it should be blocked by. The 16 fields can freely be renamed by the game designer. Gameobjects can only be one thing. - - For example, bit 1 may be assigned to Environment. A tree would have bit 1 on its object field set to True. The player would then assign bit 1 on its Block block bitfield to "true", so that it cannot walk through the environment. Bit 2 you may assign to Triggers. The player would assign its Trigger bit 2 to true so that it recieves "Hit" events without actually being stopped by it. - - Sometimes, two non stationary objects can collide. As long as EITHER object has their Block bit set for the other object, a collision occurs and each object recieves a Block message. A trigger message is only sent to either object if they are set to recieve trigger events. - - ### Physics properties - Objects have - - ## Scripting - Each gameobject has a script attached to it. When the gameobject is selected, its script appears in the Script window. - - ## GUI - - ## The gamestate - The gamestate is a global variable that holds all of the current information for the game. Various elements of the game engine has access to the gamestate in different capacities. The GUI can read the entire game state; a player can read and write his own status onto the gamestate. - - ## AI - - - ## Yugh scheme - Yugh scheme is the style of scheme used for scripting in game events. It is built on top of S7 scheme. - - Scheme hooks into the engine are highly abstracted away from the engine code. For example, the command "move" takes a single value as units/second. No matter if it is called in the update loop, or the physics loop, the given number will be multiplied by the relevant delta to make it work the same either way. In addition, if used on a static object, the object won't move; if used on a kinematic object it will move as expected; and if used on a dynamic object it will add the given number as a velocity, pushing the dynamic object instead of taking complete control. - - Rather than overriding hooks into engine loops, there are distinct scripts for every hook you can want. If you don't write script into them, they won't be used. There are hooks into rendering loops, animation states (for example, footfall moments in an animatio to play sounds), and more. diff --git a/docs/input.md b/docs/input.md new file mode 100644 index 0000000..af76b9a --- /dev/null +++ b/docs/input.md @@ -0,0 +1,2 @@ +# Yugine Input Guide + diff --git a/docs/scripting.md b/docs/scripting.md index 05a583e..b053104 100644 --- a/docs/scripting.md +++ b/docs/scripting.md @@ -1,3 +1,11 @@ -# Yugine Scripting +# Yugine Scripting Guide -Scripting is done with mruby. MAY CHANGE. \ No newline at end of file +All objects in the Yugine can have an associated script. This script can perform setup, teardown, and handles responses for the object. + +|function|description| +|---|---| +|setup|called before the object is loaded| +|start|called when the object is loaded| +|update(dt)|called once per game frame| +|physupdate(dt)|called once per physics tick| +|stop|called when the object is killed| \ No newline at end of file diff --git a/docs/video.md b/docs/video.md new file mode 100644 index 0000000..adb1513 --- /dev/null +++ b/docs/video.md @@ -0,0 +1,10 @@ +# Yugine video playing + +Yugine plays the open source MPEG-TS muxer, using MPEG1 video and MP2 audio. + +MPEG-1 video works best at about 1.5 Mbit/s, in SD [720x480] video. +For HD [1920x1080] video, use 9 Mbit/s. + +ffmpeg -i "input.video" -vcodec mpeg1video -b:v 1.5M -s 720x480 -acodec mp2 "out.ts" +ffmpeg -i "input.video" -vcodec mpeg1video -b:v 9M -s 1920x1080 -acodec mp2 "out.ts" + diff --git a/quickjs/Changelog b/quickjs/Changelog new file mode 100644 index 0000000..c09af91 --- /dev/null +++ b/quickjs/Changelog @@ -0,0 +1,148 @@ +2021-03-27: + +- faster Array.prototype.push and Array.prototype.unshift +- added JS_UpdateStackTop() +- fixed Windows console +- misc bug fixes + +2020-11-08: + +- improved function parameter initializers +- added std.setenv(), std.unsetenv() and std.getenviron() +- added JS_EvalThis() +- misc bug fixes + +2020-09-06: + +- added logical assignment operators +- added IsHTMLDDA support +- faster for-of loops +- os.Worker now takes a module filename as parameter +- qjsc: added -D option to compile dynamically loaded modules or workers +- misc bug fixes + +2020-07-05: + +- modified JS_GetPrototype() to return a live value +- REPL: support unicode characters larger than 16 bits +- added os.Worker +- improved object serialization +- added std.parseExtJSON +- misc bug fixes + +2020-04-12: + +- added cross realm support +- added AggregateError and Promise.any +- added env, uid and gid options in os.exec() +- misc bug fixes + +2020-03-16: + +- reworked error handling in std and os libraries: suppressed I/O + exceptions in std FILE functions and return a positive errno value + when it is explicit +- output exception messages to stderr +- added std.loadFile(), std.strerror(), std.FILE.prototype.tello() +- added JS_GetRuntimeOpaque(), JS_SetRuntimeOpaque(), JS_NewUint32() +- updated to Unicode 13.0.0 +- misc bug fixes + +2020-01-19: + +- keep CONFIG_BIGNUM in the makefile +- added os.chdir() +- qjs: added -I option +- more memory checks in the bignum operations +- modified operator overloading semantics to be closer to the TC39 + proposal +- suppressed "use bigint" mode. Simplified "use math" mode +- BigDecimal: changed suffix from 'd' to 'm' +- misc bug fixes + +2020-01-05: + +- always compile the bignum code. Added '--bignum' option to qjs. +- added BigDecimal +- added String.prototype.replaceAll +- misc bug fixes + +2019-12-21: + +- added nullish coalescing operator (ES2020) +- added optional chaining (ES2020) +- removed recursions in garbage collector +- test stack overflow in the parser +- improved backtrace logic +- added JS_SetHostPromiseRejectionTracker() +- allow exotic constructors +- improved c++ compatibility +- misc bug fixes + +2019-10-27: + +- added example of C class in a module (examples/test_point.js) +- added JS_GetTypedArrayBuffer() +- misc bug fixes + +2019-09-18: + +- added os.exec and other system calls +- exported JS_ValueToAtom() +- qjsc: added 'qjsc_' prefix to the generated C identifiers +- added cross-compilation support +- misc bug fixes + +2019-09-01: + +- added globalThis +- documented JS_EVAL_FLAG_COMPILE_ONLY +- added import.meta.url and import.meta.main +- added 'debugger' statement +- misc bug fixes + +2019-08-18: + +- added os.realpath, os.getcwd, os.mkdir, os.stat, os.lstat, + os.readlink, os.readdir, os.utimes, std.popen +- module autodetection +- added import.meta +- misc bug fixes + +2019-08-10: + +- added public class fields and private class fields, methods and + accessors (TC39 proposal) +- changed JS_ToCStringLen() prototype +- qjsc: handle '-' in module names and modules with the same filename +- added std.urlGet +- exported JS_GetOwnPropertyNames() and JS_GetOwnProperty() +- exported some bigint C functions +- added support for eshost in run-test262 +- misc bug fixes + +2019-07-28: + +- added dynamic import +- added Promise.allSettled +- added String.prototype.matchAll +- added Object.fromEntries +- reduced number of ticks in await +- added BigInt support in Atomics +- exported JS_NewPromiseCapability() +- misc async function and async generator fixes +- enabled hashbang support by default + +2019-07-21: + +- updated test262 tests +- updated to Unicode version 12.1.0 +- fixed missing Date object in qjsc +- fixed multi-context creation +- misc ES2020 related fixes +- simplified power and division operators in bignum extension +- fixed several crash conditions + +2019-07-09: + +- first public release diff --git a/quickjs/LICENSE b/quickjs/LICENSE new file mode 100644 index 0000000..2c8fdeb --- /dev/null +++ b/quickjs/LICENSE @@ -0,0 +1,22 @@ +QuickJS Javascript Engine + +Copyright (c) 2017-2021 Fabrice Bellard +Copyright (c) 2017-2021 Charlie Gordon + +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. diff --git a/quickjs/Makefile b/quickjs/Makefile new file mode 100644 index 0000000..a53c96f --- /dev/null +++ b/quickjs/Makefile @@ -0,0 +1,470 @@ +# +# QuickJS Javascript Engine +# +# Copyright (c) 2017-2021 Fabrice Bellard +# Copyright (c) 2017-2021 Charlie Gordon +# +# 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. + +ifeq ($(shell uname -s),Darwin) +CONFIG_DARWIN=y +endif +# Windows cross compilation from Linux +#CONFIG_WIN32=y +# use link time optimization (smaller and faster executables but slower build) +CONFIG_LTO=y +# consider warnings as errors (for development) +#CONFIG_WERROR=y +# force 32 bit build for some utilities +#CONFIG_M32=y + +ifdef CONFIG_DARWIN +# use clang instead of gcc +CONFIG_CLANG=y +CONFIG_DEFAULT_AR=y +endif + +# installation directory +prefix=/usr/local + +# use the gprof profiler +#CONFIG_PROFILE=y +# use address sanitizer +#CONFIG_ASAN=y +# include the code for BigInt/BigFloat/BigDecimal and math mode +#CONFIG_BIGNUM=y + +OBJDIR=.obj + +ifdef CONFIG_WIN32 + ifdef CONFIG_M32 + CROSS_PREFIX=i686-w64-mingw32- + else + CROSS_PREFIX=x86_64-w64-mingw32- + endif + EXE=.exe +else + CROSS_PREFIX= + EXE= +endif +ifdef CONFIG_CLANG + HOST_CC=clang + CC=$(CROSS_PREFIX)clang + CFLAGS=-g -Wall -MMD -MF $(OBJDIR)/$(@F).d + CFLAGS += -Wextra + CFLAGS += -Wno-sign-compare + CFLAGS += -Wno-missing-field-initializers + CFLAGS += -Wundef -Wuninitialized + CFLAGS += -Wunused -Wno-unused-parameter + CFLAGS += -Wwrite-strings + CFLAGS += -Wchar-subscripts -funsigned-char + CFLAGS += -MMD -MF $(OBJDIR)/$(@F).d + ifdef CONFIG_DEFAULT_AR + AR=$(CROSS_PREFIX)ar + else + ifdef CONFIG_LTO + AR=$(CROSS_PREFIX)llvm-ar + else + AR=$(CROSS_PREFIX)ar + endif + endif +else + HOST_CC=gcc + CC=$(CROSS_PREFIX)gcc + CFLAGS=-g -Wall -MMD -MF $(OBJDIR)/$(@F).d + CFLAGS += -Wno-array-bounds -Wno-format-truncation + ifdef CONFIG_LTO + AR=$(CROSS_PREFIX)gcc-ar + else + AR=$(CROSS_PREFIX)ar + endif +endif +STRIP=$(CROSS_PREFIX)strip +ifdef CONFIG_WERROR +CFLAGS+=-Werror +endif +DEFINES:=-D_GNU_SOURCE -DCONFIG_VERSION=\"$(shell cat VERSION)\" +ifdef CONFIG_BIGNUM +DEFINES+=-DCONFIG_BIGNUM +endif +ifdef CONFIG_WIN32 +DEFINES+=-D__USE_MINGW_ANSI_STDIO # for standard snprintf behavior +endif + +CFLAGS+=$(DEFINES) +CFLAGS_DEBUG=$(CFLAGS) -O0 +CFLAGS_SMALL=$(CFLAGS) -Os +CFLAGS_OPT=$(CFLAGS) -O2 +CFLAGS_NOLTO:=$(CFLAGS_OPT) +LDFLAGS=-g +ifdef CONFIG_LTO +CFLAGS_SMALL+=-flto +CFLAGS_OPT+=-flto +LDFLAGS+=-flto +endif +ifdef CONFIG_PROFILE +CFLAGS+=-p +LDFLAGS+=-p +endif +ifdef CONFIG_ASAN +CFLAGS+=-fsanitize=address -fno-omit-frame-pointer +LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer +endif +ifdef CONFIG_WIN32 +LDEXPORT= +else +LDEXPORT=-rdynamic +endif + +PROGS=qjs$(EXE) qjsc$(EXE) run-test262 +ifneq ($(CROSS_PREFIX),) +QJSC_CC=gcc +QJSC=./host-qjsc +PROGS+=$(QJSC) +else +QJSC_CC=$(CC) +QJSC=./qjsc$(EXE) +endif +ifndef CONFIG_WIN32 +PROGS+=qjscalc +endif +ifdef CONFIG_M32 +PROGS+=qjs32 qjs32_s +endif +PROGS+=libquickjs.a +ifdef CONFIG_LTO +PROGS+=libquickjs.lto.a +endif + +# examples +ifeq ($(CROSS_PREFIX),) +ifdef CONFIG_ASAN +PROGS+= +else +PROGS+=examples/hello examples/hello_module examples/test_fib +ifndef CONFIG_DARWIN +PROGS+=examples/fib.so examples/point.so +endif +endif +endif + +all: $(OBJDIR) $(OBJDIR)/quickjs.check.o $(OBJDIR)/qjs.check.o $(PROGS) + +QJS_LIB_OBJS=$(OBJDIR)/quickjs.o $(OBJDIR)/libregexp.o $(OBJDIR)/libunicode.o $(OBJDIR)/cutils.o $(OBJDIR)/quickjs-libc.o + +QJS_OBJS=$(OBJDIR)/qjs.o $(OBJDIR)/repl.o $(QJS_LIB_OBJS) +ifdef CONFIG_BIGNUM +QJS_LIB_OBJS+=$(OBJDIR)/libbf.o +QJS_OBJS+=$(OBJDIR)/qjscalc.o +endif + +HOST_LIBS=-lm -ldl -lpthread +LIBS=-lm +ifndef CONFIG_WIN32 +LIBS+=-ldl -lpthread +endif +LIBS+=$(EXTRA_LIBS) + +$(OBJDIR): + mkdir -p $(OBJDIR) $(OBJDIR)/examples $(OBJDIR)/tests + +qjs$(EXE): $(QJS_OBJS) + $(CC) $(LDFLAGS) $(LDEXPORT) -o $@ $^ $(LIBS) + +qjs-debug$(EXE): $(patsubst %.o, %.debug.o, $(QJS_OBJS)) + $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + +qjsc$(EXE): $(OBJDIR)/qjsc.o $(QJS_LIB_OBJS) + $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + +ifneq ($(CROSS_PREFIX),) + +$(QJSC): $(OBJDIR)/qjsc.host.o \ + $(patsubst %.o, %.host.o, $(QJS_LIB_OBJS)) + $(HOST_CC) $(LDFLAGS) -o $@ $^ $(HOST_LIBS) + +endif #CROSS_PREFIX + +QJSC_DEFINES:=-DCONFIG_CC=\"$(QJSC_CC)\" -DCONFIG_PREFIX=\"$(prefix)\" +ifdef CONFIG_LTO +QJSC_DEFINES+=-DCONFIG_LTO +endif +QJSC_HOST_DEFINES:=-DCONFIG_CC=\"$(HOST_CC)\" -DCONFIG_PREFIX=\"$(prefix)\" + +$(OBJDIR)/qjsc.o: CFLAGS+=$(QJSC_DEFINES) +$(OBJDIR)/qjsc.host.o: CFLAGS+=$(QJSC_HOST_DEFINES) + +qjs32: $(patsubst %.o, %.m32.o, $(QJS_OBJS)) + $(CC) -m32 $(LDFLAGS) $(LDEXPORT) -o $@ $^ $(LIBS) + +qjs32_s: $(patsubst %.o, %.m32s.o, $(QJS_OBJS)) + $(CC) -m32 $(LDFLAGS) -o $@ $^ $(LIBS) + @size $@ + +qjscalc: qjs + ln -sf $< $@ + +ifdef CONFIG_LTO +LTOEXT=.lto +else +LTOEXT= +endif + +libquickjs$(LTOEXT).a: $(QJS_LIB_OBJS) + $(AR) rcs $@ $^ + +ifdef CONFIG_LTO +libquickjs.a: $(patsubst %.o, %.nolto.o, $(QJS_LIB_OBJS)) + $(AR) rcs $@ $^ +endif # CONFIG_LTO + +repl.c: $(QJSC) repl.js + $(QJSC) -c -o $@ -m repl.js + +qjscalc.c: $(QJSC) qjscalc.js + $(QJSC) -fbignum -c -o $@ qjscalc.js + +ifneq ($(wildcard unicode/UnicodeData.txt),) +$(OBJDIR)/libunicode.o $(OBJDIR)/libunicode.m32.o $(OBJDIR)/libunicode.m32s.o \ + $(OBJDIR)/libunicode.nolto.o: libunicode-table.h + +libunicode-table.h: unicode_gen + ./unicode_gen unicode $@ +endif + +run-test262: $(OBJDIR)/run-test262.o $(QJS_LIB_OBJS) + $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + +run-test262-debug: $(patsubst %.o, %.debug.o, $(OBJDIR)/run-test262.o $(QJS_LIB_OBJS)) + $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + +run-test262-32: $(patsubst %.o, %.m32.o, $(OBJDIR)/run-test262.o $(QJS_LIB_OBJS)) + $(CC) -m32 $(LDFLAGS) -o $@ $^ $(LIBS) + +# object suffix order: nolto, [m32|m32s] + +$(OBJDIR)/%.o: %.c | $(OBJDIR) + $(CC) $(CFLAGS_OPT) -c -o $@ $< + +$(OBJDIR)/%.host.o: %.c | $(OBJDIR) + $(HOST_CC) $(CFLAGS_OPT) -c -o $@ $< + +$(OBJDIR)/%.pic.o: %.c | $(OBJDIR) + $(CC) $(CFLAGS_OPT) -fPIC -DJS_SHARED_LIBRARY -c -o $@ $< + +$(OBJDIR)/%.nolto.o: %.c | $(OBJDIR) + $(CC) $(CFLAGS_NOLTO) -c -o $@ $< + +$(OBJDIR)/%.m32.o: %.c | $(OBJDIR) + $(CC) -m32 $(CFLAGS_OPT) -c -o $@ $< + +$(OBJDIR)/%.m32s.o: %.c | $(OBJDIR) + $(CC) -m32 $(CFLAGS_SMALL) -c -o $@ $< + +$(OBJDIR)/%.debug.o: %.c | $(OBJDIR) + $(CC) $(CFLAGS_DEBUG) -c -o $@ $< + +$(OBJDIR)/%.check.o: %.c | $(OBJDIR) + $(CC) $(CFLAGS) -DCONFIG_CHECK_JSVALUE -c -o $@ $< + +regexp_test: libregexp.c libunicode.c cutils.c + $(CC) $(LDFLAGS) $(CFLAGS) -DTEST -o $@ libregexp.c libunicode.c cutils.c $(LIBS) + +unicode_gen: $(OBJDIR)/unicode_gen.host.o $(OBJDIR)/cutils.host.o libunicode.c unicode_gen_def.h + $(HOST_CC) $(LDFLAGS) $(CFLAGS) -o $@ $(OBJDIR)/unicode_gen.host.o $(OBJDIR)/cutils.host.o + +clean: + rm -f repl.c qjscalc.c out.c + rm -f *.a *.o *.d *~ unicode_gen regexp_test $(PROGS) + rm -f hello.c test_fib.c + rm -f examples/*.so tests/*.so + rm -rf $(OBJDIR)/ *.dSYM/ qjs-debug + rm -rf run-test262-debug run-test262-32 + +install: all + mkdir -p "$(DESTDIR)$(prefix)/bin" + $(STRIP) qjs qjsc + install -m755 qjs qjsc "$(DESTDIR)$(prefix)/bin" + ln -sf qjs "$(DESTDIR)$(prefix)/bin/qjscalc" + mkdir -p "$(DESTDIR)$(prefix)/lib/quickjs" + install -m644 libquickjs.a "$(DESTDIR)$(prefix)/lib/quickjs" +ifdef CONFIG_LTO + install -m644 libquickjs.lto.a "$(DESTDIR)$(prefix)/lib/quickjs" +endif + mkdir -p "$(DESTDIR)$(prefix)/include/quickjs" + install -m644 quickjs.h quickjs-libc.h "$(DESTDIR)$(prefix)/include/quickjs" + +############################################################################### +# examples + +# example of static JS compilation +HELLO_SRCS=examples/hello.js +HELLO_OPTS=-fno-string-normalize -fno-map -fno-promise -fno-typedarray \ + -fno-typedarray -fno-regexp -fno-json -fno-eval -fno-proxy \ + -fno-date -fno-module-loader +ifdef CONFIG_BIGNUM +HELLO_OPTS+=-fno-bigint +endif + +hello.c: $(QJSC) $(HELLO_SRCS) + $(QJSC) -e $(HELLO_OPTS) -o $@ $(HELLO_SRCS) + +ifdef CONFIG_M32 +examples/hello: $(OBJDIR)/hello.m32s.o $(patsubst %.o, %.m32s.o, $(QJS_LIB_OBJS)) + $(CC) -m32 $(LDFLAGS) -o $@ $^ $(LIBS) +else +examples/hello: $(OBJDIR)/hello.o $(QJS_LIB_OBJS) + $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) +endif + +# example of static JS compilation with modules +HELLO_MODULE_SRCS=examples/hello_module.js +HELLO_MODULE_OPTS=-fno-string-normalize -fno-map -fno-promise -fno-typedarray \ + -fno-typedarray -fno-regexp -fno-json -fno-eval -fno-proxy \ + -fno-date -m +examples/hello_module: $(QJSC) libquickjs$(LTOEXT).a $(HELLO_MODULE_SRCS) + $(QJSC) $(HELLO_MODULE_OPTS) -o $@ $(HELLO_MODULE_SRCS) + +# use of an external C module (static compilation) + +test_fib.c: $(QJSC) examples/test_fib.js + $(QJSC) -e -M examples/fib.so,fib -m -o $@ examples/test_fib.js + +examples/test_fib: $(OBJDIR)/test_fib.o $(OBJDIR)/examples/fib.o libquickjs$(LTOEXT).a + $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + +examples/fib.so: $(OBJDIR)/examples/fib.pic.o + $(CC) $(LDFLAGS) -shared -o $@ $^ + +examples/point.so: $(OBJDIR)/examples/point.pic.o + $(CC) $(LDFLAGS) -shared -o $@ $^ + +############################################################################### +# documentation + +DOCS=doc/quickjs.pdf doc/quickjs.html doc/jsbignum.pdf doc/jsbignum.html + +build_doc: $(DOCS) + +clean_doc: + rm -f $(DOCS) + +doc/%.pdf: doc/%.texi + texi2pdf --clean -o $@ -q $< + +doc/%.html.pre: doc/%.texi + makeinfo --html --no-headers --no-split --number-sections -o $@ $< + +doc/%.html: doc/%.html.pre + sed -e 's||\n|' < $< > $@ + +############################################################################### +# tests + +ifndef CONFIG_DARWIN +test: tests/bjson.so examples/point.so +endif +ifdef CONFIG_M32 +test: qjs32 +endif + +test: qjs + ./qjs tests/test_closure.js + ./qjs tests/test_language.js + ./qjs tests/test_builtin.js + ./qjs tests/test_loop.js + ./qjs tests/test_std.js + ./qjs tests/test_worker.js +ifndef CONFIG_DARWIN +ifdef CONFIG_BIGNUM + ./qjs --bignum tests/test_bjson.js +else + ./qjs tests/test_bjson.js +endif + ./qjs examples/test_point.js +endif +ifdef CONFIG_BIGNUM + ./qjs --bignum tests/test_op_overloading.js + ./qjs --bignum tests/test_bignum.js + ./qjs --qjscalc tests/test_qjscalc.js +endif +ifdef CONFIG_M32 + ./qjs32 tests/test_closure.js + ./qjs32 tests/test_language.js + ./qjs32 tests/test_builtin.js + ./qjs32 tests/test_loop.js + ./qjs32 tests/test_std.js + ./qjs32 tests/test_worker.js +ifdef CONFIG_BIGNUM + ./qjs32 --bignum tests/test_op_overloading.js + ./qjs32 --bignum tests/test_bignum.js + ./qjs32 --qjscalc tests/test_qjscalc.js +endif +endif + +stats: qjs qjs32 + ./qjs -qd + ./qjs32 -qd + +microbench: qjs + ./qjs tests/microbench.js + +microbench-32: qjs32 + ./qjs32 tests/microbench.js + +# ES5 tests (obsolete) +test2o: run-test262 + time ./run-test262 -m -c test262o.conf + +test2o-32: run-test262-32 + time ./run-test262-32 -m -c test262o.conf + +test2o-update: run-test262 + ./run-test262 -u -c test262o.conf + +# Test262 tests +test2-default: run-test262 + time ./run-test262 -m -c test262.conf + +test2: run-test262 + time ./run-test262 -m -c test262.conf -a + +test2-32: run-test262-32 + time ./run-test262-32 -m -c test262.conf -a + +test2-update: run-test262 + ./run-test262 -u -c test262.conf -a + +test2-check: run-test262 + time ./run-test262 -m -c test262.conf -E -a + +testall: all test microbench test2o test2 + +testall-32: all test-32 microbench-32 test2o-32 test2-32 + +testall-complete: testall testall-32 + +bench-v8: qjs + make -C tests/bench-v8 + ./qjs -d tests/bench-v8/combined.js + +tests/bjson.so: $(OBJDIR)/tests/bjson.pic.o + $(CC) $(LDFLAGS) -shared -o $@ $^ $(LIBS) + +-include $(wildcard $(OBJDIR)/*.d) diff --git a/quickjs/TODO b/quickjs/TODO new file mode 100644 index 0000000..2a3b3c3 --- /dev/null +++ b/quickjs/TODO @@ -0,0 +1,70 @@ +Bugs: +- modules: better error handling with cyclic module references + +Misc ideas: +- use custom printf to avoid compatibility issues with floating point numbers +- consistent naming for preprocessor defines +- unify coding style and naming conventions +- use names from the ECMA spec in library implementation +- use byte code emitters with typed arguments (for clarity) +- use 2 bytecode DynBufs in JSFunctionDef, one for reading, one for writing + and use the same wrappers in all phases +- use more generic method for line numbers in resolve_variables and resolve_labels +- use custom timezone support to avoid C library compatibility issues + +Memory: +- use memory pools for objects, etc? +- test border cases for max number of atoms, object properties, string length +- add emergency malloc mode for out of memory exceptions. +- test all DynBuf memory errors +- test all js_realloc memory errors +- improve JS_ComputeMemoryUsage() with more info + +Built-in standard library: +- BSD sockets +- modules: use realpath in module name normalizer and put it in quickjs-libc +- modules: if no ".", use a well known module loading path ? +- get rid of __loadScript, use more common name + +REPL: +- debugger +- readline: support MS Windows terminal +- readline: handle dynamic terminal resizing +- readline: handle double width unicode characters +- multiline editing +- runtime object and function inspectors +- interactive object browser +- use more generic approach to display evaluation results +- improve directive handling: dispatch, colorize, completion... +- save history +- close all predefined methods in repl.js and jscalc.js + +Optimization ideas: +- 64-bit atoms in 64-bit mode ? +- 64-bit small bigint in 64-bit mode ? +- reuse stack slots for disjoint scopes, if strip +- add heuristic to avoid some cycles in closures +- small String (0-2 charcodes) with immediate storage +- perform static string concatenation at compile time +- optimize string concatenation with ropes or miniropes? +- add implicit numeric strings for Uint32 numbers? +- optimize `s += a + b`, `s += a.b` and similar simple expressions +- ensure string canonical representation and optimise comparisons and hashes? +- remove JSObject.first_weak_ref, use bit+context based hashed array for weak references +- property access optimization on the global object, functions, + prototypes and special non extensible objects. +- create object literals with the correct length by backpatching length argument +- remove redundant set_loc_uninitialized/check_uninitialized opcodes +- peephole optim: push_atom_value, to_propkey -> push_atom_value +- peephole optim: put_loc x, get_loc_check x -> set_loc x +- convert slow array to fast array when all properties != length are numeric +- optimize destructuring assignments for global and local variables +- implement some form of tail-call-optimization +- optimize OP_apply +- optimize f(...b) + +Test262o: 0/11262 errors, 463 excluded +Test262o commit: 7da91bceb9ce7613f87db47ddd1292a2dda58b42 (es5-tests branch) + +Result: 35/75280 errors, 909 excluded, 585 skipped +Test262 commit: 31126581e7290f9233c29cefd93f66c6ac78f1c9 diff --git a/quickjs/VERSION b/quickjs/VERSION new file mode 100644 index 0000000..22ffec1 --- /dev/null +++ b/quickjs/VERSION @@ -0,0 +1 @@ +2021-03-27 diff --git a/quickjs/cutils.c b/quickjs/cutils.c new file mode 100644 index 0000000..a02fb76 --- /dev/null +++ b/quickjs/cutils.c @@ -0,0 +1,631 @@ +/* + * C utilities + * + * Copyright (c) 2017 Fabrice Bellard + * Copyright (c) 2018 Charlie Gordon + * + * 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. + */ +#include +#include +#include +#include + +#include "cutils.h" + +void pstrcpy(char *buf, int buf_size, const char *str) +{ + int c; + char *q = buf; + + if (buf_size <= 0) + return; + + for(;;) { + c = *str++; + if (c == 0 || q >= buf + buf_size - 1) + break; + *q++ = c; + } + *q = '\0'; +} + +/* strcat and truncate. */ +char *pstrcat(char *buf, int buf_size, const char *s) +{ + int len; + len = strlen(buf); + if (len < buf_size) + pstrcpy(buf + len, buf_size - len, s); + return buf; +} + +int strstart(const char *str, const char *val, const char **ptr) +{ + const char *p, *q; + p = str; + q = val; + while (*q != '\0') { + if (*p != *q) + return 0; + p++; + q++; + } + if (ptr) + *ptr = p; + return 1; +} + +int has_suffix(const char *str, const char *suffix) +{ + size_t len = strlen(str); + size_t slen = strlen(suffix); + return (len >= slen && !memcmp(str + len - slen, suffix, slen)); +} + +/* Dynamic buffer package */ + +static void *dbuf_default_realloc(void *opaque, void *ptr, size_t size) +{ + return realloc(ptr, size); +} + +void dbuf_init2(DynBuf *s, void *opaque, DynBufReallocFunc *realloc_func) +{ + memset(s, 0, sizeof(*s)); + if (!realloc_func) + realloc_func = dbuf_default_realloc; + s->opaque = opaque; + s->realloc_func = realloc_func; +} + +void dbuf_init(DynBuf *s) +{ + dbuf_init2(s, NULL, NULL); +} + +/* return < 0 if error */ +int dbuf_realloc(DynBuf *s, size_t new_size) +{ + size_t size; + uint8_t *new_buf; + if (new_size > s->allocated_size) { + if (s->error) + return -1; + size = s->allocated_size * 3 / 2; + if (size > new_size) + new_size = size; + new_buf = s->realloc_func(s->opaque, s->buf, new_size); + if (!new_buf) { + s->error = TRUE; + return -1; + } + s->buf = new_buf; + s->allocated_size = new_size; + } + return 0; +} + +int dbuf_write(DynBuf *s, size_t offset, const uint8_t *data, size_t len) +{ + size_t end; + end = offset + len; + if (dbuf_realloc(s, end)) + return -1; + memcpy(s->buf + offset, data, len); + if (end > s->size) + s->size = end; + return 0; +} + +int dbuf_put(DynBuf *s, const uint8_t *data, size_t len) +{ + if (unlikely((s->size + len) > s->allocated_size)) { + if (dbuf_realloc(s, s->size + len)) + return -1; + } + memcpy(s->buf + s->size, data, len); + s->size += len; + return 0; +} + +int dbuf_put_self(DynBuf *s, size_t offset, size_t len) +{ + if (unlikely((s->size + len) > s->allocated_size)) { + if (dbuf_realloc(s, s->size + len)) + return -1; + } + memcpy(s->buf + s->size, s->buf + offset, len); + s->size += len; + return 0; +} + +int dbuf_putc(DynBuf *s, uint8_t c) +{ + return dbuf_put(s, &c, 1); +} + +int dbuf_putstr(DynBuf *s, const char *str) +{ + return dbuf_put(s, (const uint8_t *)str, strlen(str)); +} + +int __attribute__((format(printf, 2, 3))) dbuf_printf(DynBuf *s, + const char *fmt, ...) +{ + va_list ap; + char buf[128]; + int len; + + va_start(ap, fmt); + len = vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + if (len < sizeof(buf)) { + /* fast case */ + return dbuf_put(s, (uint8_t *)buf, len); + } else { + if (dbuf_realloc(s, s->size + len + 1)) + return -1; + va_start(ap, fmt); + vsnprintf((char *)(s->buf + s->size), s->allocated_size - s->size, + fmt, ap); + va_end(ap); + s->size += len; + } + return 0; +} + +void dbuf_free(DynBuf *s) +{ + /* we test s->buf as a fail safe to avoid crashing if dbuf_free() + is called twice */ + if (s->buf) { + s->realloc_func(s->opaque, s->buf, 0); + } + memset(s, 0, sizeof(*s)); +} + +/* Note: at most 31 bits are encoded. At most UTF8_CHAR_LEN_MAX bytes + are output. */ +int unicode_to_utf8(uint8_t *buf, unsigned int c) +{ + uint8_t *q = buf; + + if (c < 0x80) { + *q++ = c; + } else { + if (c < 0x800) { + *q++ = (c >> 6) | 0xc0; + } else { + if (c < 0x10000) { + *q++ = (c >> 12) | 0xe0; + } else { + if (c < 0x00200000) { + *q++ = (c >> 18) | 0xf0; + } else { + if (c < 0x04000000) { + *q++ = (c >> 24) | 0xf8; + } else if (c < 0x80000000) { + *q++ = (c >> 30) | 0xfc; + *q++ = ((c >> 24) & 0x3f) | 0x80; + } else { + return 0; + } + *q++ = ((c >> 18) & 0x3f) | 0x80; + } + *q++ = ((c >> 12) & 0x3f) | 0x80; + } + *q++ = ((c >> 6) & 0x3f) | 0x80; + } + *q++ = (c & 0x3f) | 0x80; + } + return q - buf; +} + +static const unsigned int utf8_min_code[5] = { + 0x80, 0x800, 0x10000, 0x00200000, 0x04000000, +}; + +static const unsigned char utf8_first_code_mask[5] = { + 0x1f, 0xf, 0x7, 0x3, 0x1, +}; + +/* return -1 if error. *pp is not updated in this case. max_len must + be >= 1. The maximum length for a UTF8 byte sequence is 6 bytes. */ +int unicode_from_utf8(const uint8_t *p, int max_len, const uint8_t **pp) +{ + int l, c, b, i; + + c = *p++; + if (c < 0x80) { + *pp = p; + return c; + } + switch(c) { + case 0xc0: case 0xc1: case 0xc2: case 0xc3: + case 0xc4: case 0xc5: case 0xc6: case 0xc7: + case 0xc8: case 0xc9: case 0xca: case 0xcb: + case 0xcc: case 0xcd: case 0xce: case 0xcf: + case 0xd0: case 0xd1: case 0xd2: case 0xd3: + case 0xd4: case 0xd5: case 0xd6: case 0xd7: + case 0xd8: case 0xd9: case 0xda: case 0xdb: + case 0xdc: case 0xdd: case 0xde: case 0xdf: + l = 1; + break; + case 0xe0: case 0xe1: case 0xe2: case 0xe3: + case 0xe4: case 0xe5: case 0xe6: case 0xe7: + case 0xe8: case 0xe9: case 0xea: case 0xeb: + case 0xec: case 0xed: case 0xee: case 0xef: + l = 2; + break; + case 0xf0: case 0xf1: case 0xf2: case 0xf3: + case 0xf4: case 0xf5: case 0xf6: case 0xf7: + l = 3; + break; + case 0xf8: case 0xf9: case 0xfa: case 0xfb: + l = 4; + break; + case 0xfc: case 0xfd: + l = 5; + break; + default: + return -1; + } + /* check that we have enough characters */ + if (l > (max_len - 1)) + return -1; + c &= utf8_first_code_mask[l - 1]; + for(i = 0; i < l; i++) { + b = *p++; + if (b < 0x80 || b >= 0xc0) + return -1; + c = (c << 6) | (b & 0x3f); + } + if (c < utf8_min_code[l - 1]) + return -1; + *pp = p; + return c; +} + +#if 0 + +#if defined(EMSCRIPTEN) || defined(__ANDROID__) + +static void *rqsort_arg; +static int (*rqsort_cmp)(const void *, const void *, void *); + +static int rqsort_cmp2(const void *p1, const void *p2) +{ + return rqsort_cmp(p1, p2, rqsort_arg); +} + +/* not reentrant, but not needed with emscripten */ +void rqsort(void *base, size_t nmemb, size_t size, + int (*cmp)(const void *, const void *, void *), + void *arg) +{ + rqsort_arg = arg; + rqsort_cmp = cmp; + qsort(base, nmemb, size, rqsort_cmp2); +} + +#endif + +#else + +typedef void (*exchange_f)(void *a, void *b, size_t size); +typedef int (*cmp_f)(const void *, const void *, void *opaque); + +static void exchange_bytes(void *a, void *b, size_t size) { + uint8_t *ap = (uint8_t *)a; + uint8_t *bp = (uint8_t *)b; + + while (size-- != 0) { + uint8_t t = *ap; + *ap++ = *bp; + *bp++ = t; + } +} + +static void exchange_one_byte(void *a, void *b, size_t size) { + uint8_t *ap = (uint8_t *)a; + uint8_t *bp = (uint8_t *)b; + uint8_t t = *ap; + *ap = *bp; + *bp = t; +} + +static void exchange_int16s(void *a, void *b, size_t size) { + uint16_t *ap = (uint16_t *)a; + uint16_t *bp = (uint16_t *)b; + + for (size /= sizeof(uint16_t); size-- != 0;) { + uint16_t t = *ap; + *ap++ = *bp; + *bp++ = t; + } +} + +static void exchange_one_int16(void *a, void *b, size_t size) { + uint16_t *ap = (uint16_t *)a; + uint16_t *bp = (uint16_t *)b; + uint16_t t = *ap; + *ap = *bp; + *bp = t; +} + +static void exchange_int32s(void *a, void *b, size_t size) { + uint32_t *ap = (uint32_t *)a; + uint32_t *bp = (uint32_t *)b; + + for (size /= sizeof(uint32_t); size-- != 0;) { + uint32_t t = *ap; + *ap++ = *bp; + *bp++ = t; + } +} + +static void exchange_one_int32(void *a, void *b, size_t size) { + uint32_t *ap = (uint32_t *)a; + uint32_t *bp = (uint32_t *)b; + uint32_t t = *ap; + *ap = *bp; + *bp = t; +} + +static void exchange_int64s(void *a, void *b, size_t size) { + uint64_t *ap = (uint64_t *)a; + uint64_t *bp = (uint64_t *)b; + + for (size /= sizeof(uint64_t); size-- != 0;) { + uint64_t t = *ap; + *ap++ = *bp; + *bp++ = t; + } +} + +static void exchange_one_int64(void *a, void *b, size_t size) { + uint64_t *ap = (uint64_t *)a; + uint64_t *bp = (uint64_t *)b; + uint64_t t = *ap; + *ap = *bp; + *bp = t; +} + +static void exchange_int128s(void *a, void *b, size_t size) { + uint64_t *ap = (uint64_t *)a; + uint64_t *bp = (uint64_t *)b; + + for (size /= sizeof(uint64_t) * 2; size-- != 0; ap += 2, bp += 2) { + uint64_t t = ap[0]; + uint64_t u = ap[1]; + ap[0] = bp[0]; + ap[1] = bp[1]; + bp[0] = t; + bp[1] = u; + } +} + +static void exchange_one_int128(void *a, void *b, size_t size) { + uint64_t *ap = (uint64_t *)a; + uint64_t *bp = (uint64_t *)b; + uint64_t t = ap[0]; + uint64_t u = ap[1]; + ap[0] = bp[0]; + ap[1] = bp[1]; + bp[0] = t; + bp[1] = u; +} + +static inline exchange_f exchange_func(const void *base, size_t size) { + switch (((uintptr_t)base | (uintptr_t)size) & 15) { + case 0: + if (size == sizeof(uint64_t) * 2) + return exchange_one_int128; + else + return exchange_int128s; + case 8: + if (size == sizeof(uint64_t)) + return exchange_one_int64; + else + return exchange_int64s; + case 4: + case 12: + if (size == sizeof(uint32_t)) + return exchange_one_int32; + else + return exchange_int32s; + case 2: + case 6: + case 10: + case 14: + if (size == sizeof(uint16_t)) + return exchange_one_int16; + else + return exchange_int16s; + default: + if (size == 1) + return exchange_one_byte; + else + return exchange_bytes; + } +} + +static void heapsortx(void *base, size_t nmemb, size_t size, cmp_f cmp, void *opaque) +{ + uint8_t *basep = (uint8_t *)base; + size_t i, n, c, r; + exchange_f swap = exchange_func(base, size); + + if (nmemb > 1) { + i = (nmemb / 2) * size; + n = nmemb * size; + + while (i > 0) { + i -= size; + for (r = i; (c = r * 2 + size) < n; r = c) { + if (c < n - size && cmp(basep + c, basep + c + size, opaque) <= 0) + c += size; + if (cmp(basep + r, basep + c, opaque) > 0) + break; + swap(basep + r, basep + c, size); + } + } + for (i = n - size; i > 0; i -= size) { + swap(basep, basep + i, size); + + for (r = 0; (c = r * 2 + size) < i; r = c) { + if (c < i - size && cmp(basep + c, basep + c + size, opaque) <= 0) + c += size; + if (cmp(basep + r, basep + c, opaque) > 0) + break; + swap(basep + r, basep + c, size); + } + } + } +} + +static inline void *med3(void *a, void *b, void *c, cmp_f cmp, void *opaque) +{ + return cmp(a, b, opaque) < 0 ? + (cmp(b, c, opaque) < 0 ? b : (cmp(a, c, opaque) < 0 ? c : a )) : + (cmp(b, c, opaque) > 0 ? b : (cmp(a, c, opaque) < 0 ? a : c )); +} + +/* pointer based version with local stack and insertion sort threshhold */ +void rqsort(void *base, size_t nmemb, size_t size, cmp_f cmp, void *opaque) +{ + struct { uint8_t *base; size_t count; int depth; } stack[50], *sp = stack; + uint8_t *ptr, *pi, *pj, *plt, *pgt, *top, *m; + size_t m4, i, lt, gt, span, span2; + int c, depth; + exchange_f swap = exchange_func(base, size); + exchange_f swap_block = exchange_func(base, size | 128); + + if (nmemb < 2 || size <= 0) + return; + + sp->base = (uint8_t *)base; + sp->count = nmemb; + sp->depth = 0; + sp++; + + while (sp > stack) { + sp--; + ptr = sp->base; + nmemb = sp->count; + depth = sp->depth; + + while (nmemb > 6) { + if (++depth > 50) { + /* depth check to ensure worst case logarithmic time */ + heapsortx(ptr, nmemb, size, cmp, opaque); + nmemb = 0; + break; + } + /* select median of 3 from 1/4, 1/2, 3/4 positions */ + /* should use median of 5 or 9? */ + m4 = (nmemb >> 2) * size; + m = med3(ptr + m4, ptr + 2 * m4, ptr + 3 * m4, cmp, opaque); + swap(ptr, m, size); /* move the pivot to the start or the array */ + i = lt = 1; + pi = plt = ptr + size; + gt = nmemb; + pj = pgt = top = ptr + nmemb * size; + for (;;) { + while (pi < pj && (c = cmp(ptr, pi, opaque)) >= 0) { + if (c == 0) { + swap(plt, pi, size); + lt++; + plt += size; + } + i++; + pi += size; + } + while (pi < (pj -= size) && (c = cmp(ptr, pj, opaque)) <= 0) { + if (c == 0) { + gt--; + pgt -= size; + swap(pgt, pj, size); + } + } + if (pi >= pj) + break; + swap(pi, pj, size); + i++; + pi += size; + } + /* array has 4 parts: + * from 0 to lt excluded: elements identical to pivot + * from lt to pi excluded: elements smaller than pivot + * from pi to gt excluded: elements greater than pivot + * from gt to n excluded: elements identical to pivot + */ + /* move elements identical to pivot in the middle of the array: */ + /* swap values in ranges [0..lt[ and [i-lt..i[ + swapping the smallest span between lt and i-lt is sufficient + */ + span = plt - ptr; + span2 = pi - plt; + lt = i - lt; + if (span > span2) + span = span2; + swap_block(ptr, pi - span, span); + /* swap values in ranges [gt..top[ and [i..top-(top-gt)[ + swapping the smallest span between top-gt and gt-i is sufficient + */ + span = top - pgt; + span2 = pgt - pi; + pgt = top - span2; + gt = nmemb - (gt - i); + if (span > span2) + span = span2; + swap_block(pi, top - span, span); + + /* now array has 3 parts: + * from 0 to lt excluded: elements smaller than pivot + * from lt to gt excluded: elements identical to pivot + * from gt to n excluded: elements greater than pivot + */ + /* stack the larger segment and keep processing the smaller one + to minimize stack use for pathological distributions */ + if (lt > nmemb - gt) { + sp->base = ptr; + sp->count = lt; + sp->depth = depth; + sp++; + ptr = pgt; + nmemb -= gt; + } else { + sp->base = pgt; + sp->count = nmemb - gt; + sp->depth = depth; + sp++; + nmemb = lt; + } + } + /* Use insertion sort for small fragments */ + for (pi = ptr + size, top = ptr + nmemb * size; pi < top; pi += size) { + for (pj = pi; pj > ptr && cmp(pj - size, pj, opaque) > 0; pj -= size) + swap(pj, pj - size, size); + } + } +} + +#endif diff --git a/quickjs/cutils.h b/quickjs/cutils.h new file mode 100644 index 0000000..31f7cd8 --- /dev/null +++ b/quickjs/cutils.h @@ -0,0 +1,297 @@ +/* + * C utilities + * + * Copyright (c) 2017 Fabrice Bellard + * Copyright (c) 2018 Charlie Gordon + * + * 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. + */ +#ifndef CUTILS_H +#define CUTILS_H + +#include +#include + +/* set if CPU is big endian */ +#undef WORDS_BIGENDIAN + +#define likely(x) __builtin_expect(!!(x), 1) +#define unlikely(x) __builtin_expect(!!(x), 0) +#define force_inline inline __attribute__((always_inline)) +#define no_inline __attribute__((noinline)) +#define __maybe_unused __attribute__((unused)) + +#define xglue(x, y) x ## y +#define glue(x, y) xglue(x, y) +#define stringify(s) tostring(s) +#define tostring(s) #s + +#ifndef offsetof +#define offsetof(type, field) ((size_t) &((type *)0)->field) +#endif +#ifndef countof +#define countof(x) (sizeof(x) / sizeof((x)[0])) +#endif + +typedef int BOOL; + +#ifndef FALSE +enum { + FALSE = 0, + TRUE = 1, +}; +#endif + +void pstrcpy(char *buf, int buf_size, const char *str); +char *pstrcat(char *buf, int buf_size, const char *s); +int strstart(const char *str, const char *val, const char **ptr); +int has_suffix(const char *str, const char *suffix); + +static inline int max_int(int a, int b) +{ + if (a > b) + return a; + else + return b; +} + +static inline int min_int(int a, int b) +{ + if (a < b) + return a; + else + return b; +} + +static inline uint32_t max_uint32(uint32_t a, uint32_t b) +{ + if (a > b) + return a; + else + return b; +} + +static inline uint32_t min_uint32(uint32_t a, uint32_t b) +{ + if (a < b) + return a; + else + return b; +} + +static inline int64_t max_int64(int64_t a, int64_t b) +{ + if (a > b) + return a; + else + return b; +} + +static inline int64_t min_int64(int64_t a, int64_t b) +{ + if (a < b) + return a; + else + return b; +} + +/* WARNING: undefined if a = 0 */ +static inline int clz32(unsigned int a) +{ + return __builtin_clz(a); +} + +/* WARNING: undefined if a = 0 */ +static inline int clz64(uint64_t a) +{ + return __builtin_clzll(a); +} + +/* WARNING: undefined if a = 0 */ +static inline int ctz32(unsigned int a) +{ + return __builtin_ctz(a); +} + +/* WARNING: undefined if a = 0 */ +static inline int ctz64(uint64_t a) +{ + return __builtin_ctzll(a); +} + +struct __attribute__((packed)) packed_u64 { + uint64_t v; +}; + +struct __attribute__((packed)) packed_u32 { + uint32_t v; +}; + +struct __attribute__((packed)) packed_u16 { + uint16_t v; +}; + +static inline uint64_t get_u64(const uint8_t *tab) +{ + return ((const struct packed_u64 *)tab)->v; +} + +static inline int64_t get_i64(const uint8_t *tab) +{ + return (int64_t)((const struct packed_u64 *)tab)->v; +} + +static inline void put_u64(uint8_t *tab, uint64_t val) +{ + ((struct packed_u64 *)tab)->v = val; +} + +static inline uint32_t get_u32(const uint8_t *tab) +{ + return ((const struct packed_u32 *)tab)->v; +} + +static inline int32_t get_i32(const uint8_t *tab) +{ + return (int32_t)((const struct packed_u32 *)tab)->v; +} + +static inline void put_u32(uint8_t *tab, uint32_t val) +{ + ((struct packed_u32 *)tab)->v = val; +} + +static inline uint32_t get_u16(const uint8_t *tab) +{ + return ((const struct packed_u16 *)tab)->v; +} + +static inline int32_t get_i16(const uint8_t *tab) +{ + return (int16_t)((const struct packed_u16 *)tab)->v; +} + +static inline void put_u16(uint8_t *tab, uint16_t val) +{ + ((struct packed_u16 *)tab)->v = val; +} + +static inline uint32_t get_u8(const uint8_t *tab) +{ + return *tab; +} + +static inline int32_t get_i8(const uint8_t *tab) +{ + return (int8_t)*tab; +} + +static inline void put_u8(uint8_t *tab, uint8_t val) +{ + *tab = val; +} + +static inline uint16_t bswap16(uint16_t x) +{ + return (x >> 8) | (x << 8); +} + +static inline uint32_t bswap32(uint32_t v) +{ + return ((v & 0xff000000) >> 24) | ((v & 0x00ff0000) >> 8) | + ((v & 0x0000ff00) << 8) | ((v & 0x000000ff) << 24); +} + +static inline uint64_t bswap64(uint64_t v) +{ + return ((v & ((uint64_t)0xff << (7 * 8))) >> (7 * 8)) | + ((v & ((uint64_t)0xff << (6 * 8))) >> (5 * 8)) | + ((v & ((uint64_t)0xff << (5 * 8))) >> (3 * 8)) | + ((v & ((uint64_t)0xff << (4 * 8))) >> (1 * 8)) | + ((v & ((uint64_t)0xff << (3 * 8))) << (1 * 8)) | + ((v & ((uint64_t)0xff << (2 * 8))) << (3 * 8)) | + ((v & ((uint64_t)0xff << (1 * 8))) << (5 * 8)) | + ((v & ((uint64_t)0xff << (0 * 8))) << (7 * 8)); +} + +/* XXX: should take an extra argument to pass slack information to the caller */ +typedef void *DynBufReallocFunc(void *opaque, void *ptr, size_t size); + +typedef struct DynBuf { + uint8_t *buf; + size_t size; + size_t allocated_size; + BOOL error; /* true if a memory allocation error occurred */ + DynBufReallocFunc *realloc_func; + void *opaque; /* for realloc_func */ +} DynBuf; + +void dbuf_init(DynBuf *s); +void dbuf_init2(DynBuf *s, void *opaque, DynBufReallocFunc *realloc_func); +int dbuf_realloc(DynBuf *s, size_t new_size); +int dbuf_write(DynBuf *s, size_t offset, const uint8_t *data, size_t len); +int dbuf_put(DynBuf *s, const uint8_t *data, size_t len); +int dbuf_put_self(DynBuf *s, size_t offset, size_t len); +int dbuf_putc(DynBuf *s, uint8_t c); +int dbuf_putstr(DynBuf *s, const char *str); +static inline int dbuf_put_u16(DynBuf *s, uint16_t val) +{ + return dbuf_put(s, (uint8_t *)&val, 2); +} +static inline int dbuf_put_u32(DynBuf *s, uint32_t val) +{ + return dbuf_put(s, (uint8_t *)&val, 4); +} +static inline int dbuf_put_u64(DynBuf *s, uint64_t val) +{ + return dbuf_put(s, (uint8_t *)&val, 8); +} +int __attribute__((format(printf, 2, 3))) dbuf_printf(DynBuf *s, + const char *fmt, ...); +void dbuf_free(DynBuf *s); +static inline BOOL dbuf_error(DynBuf *s) { + return s->error; +} +static inline void dbuf_set_error(DynBuf *s) +{ + s->error = TRUE; +} + +#define UTF8_CHAR_LEN_MAX 6 + +int unicode_to_utf8(uint8_t *buf, unsigned int c); +int unicode_from_utf8(const uint8_t *p, int max_len, const uint8_t **pp); + +static inline int from_hex(int c) +{ + if (c >= '0' && c <= '9') + return c - '0'; + else if (c >= 'A' && c <= 'F') + return c - 'A' + 10; + else if (c >= 'a' && c <= 'f') + return c - 'a' + 10; + else + return -1; +} + +void rqsort(void *base, size_t nmemb, size_t size, + int (*cmp)(const void *, const void *, void *), + void *arg); + +#endif /* CUTILS_H */ diff --git a/quickjs/doc/jsbignum.texi b/quickjs/doc/jsbignum.texi new file mode 100644 index 0000000..079d920 --- /dev/null +++ b/quickjs/doc/jsbignum.texi @@ -0,0 +1,589 @@ +\input texinfo + +@iftex +@afourpaper +@headings double +@end iftex + +@titlepage +@afourpaper +@sp 7 +@center @titlefont{Javascript Bignum Extensions} +@sp 3 +@center Version 2020-01-11 +@sp 3 +@center Author: Fabrice Bellard +@end titlepage + +@setfilename jsbignum.info +@settitle Javascript Bignum Extensions + +@contents + +@chapter Introduction + +The Bignum extensions add the following features to the Javascript +language while being 100% backward compatible: + +@itemize + +@item Operator overloading with a dispatch logic inspired from the proposal available at @url{https://github.com/tc39/proposal-operator-overloading/}. + +@item Arbitrarily large floating point numbers (@code{BigFloat}) in base 2 using the IEEE 754 semantics. + +@item Arbitrarily large floating point numbers (@code{BigDecimal}) in base 10 based on the proposal available at +@url{https://github.com/littledan/proposal-bigdecimal}. + +@item @code{math} mode: arbitrarily large integers and floating point numbers are available by default. The integer division and power can be overloaded for example to return a fraction. The modulo operator (@code{%}) is defined as the Euclidian +remainder. @code{^} is an alias to the power operator +(@code{**}). @code{^^} is used as the exclusive or operator. + +@end itemize + +The extensions are independent from each other except the @code{math} +mode which relies on BigFloat and operator overloading. + +@chapter Operator overloading + +Operator overloading is inspired from the proposal available at +@url{https://github.com/tc39/proposal-operator-overloading/}. It +implements the same dispatch logic but finds the operator sets by +looking at the @code{Symbol.operatorSet} property in the objects. The +changes were done in order to simplify the implementation. + +More precisely, the following modifications were made: + +@itemize + +@item @code{with operators from} is not supported. Operator overloading is always enabled. + +@item The dispatch is not based on a static @code{[[OperatorSet]]} field in all instances. Instead, a dynamic lookup of the @code{Symbol.operatorSet} property is done. This property is typically added in the prototype of each object. + +@item @code{Operators.create(...dictionaries)} is used to create a new OperatorSet object. The @code{Operators} function is supported as an helper to be closer to the TC39 proposal. + +@item @code{[]} cannot be overloaded. + +@item In math mode, the BigInt division and power operators can be overloaded with @code{Operators.updateBigIntOperators(dictionary)}. + +@end itemize + +@chapter BigInt extensions + +A few properties are added to the BigInt object: + +@table @code + +@item tdiv(a, b) +Return @math{trunc(a/b)}. @code{b = 0} raises a RangeError +exception. + +@item fdiv(a, b) +Return @math{\lfloor a/b \rfloor}. @code{b = 0} raises a RangeError +exception. + +@item cdiv(a, b) +Return @math{\lceil a/b \rceil}. @code{b = 0} raises a RangeError +exception. + +@item ediv(a, b) +Return @math{sgn(b) \lfloor a/{|b|} \rfloor} (Euclidian +division). @code{b = 0} raises a RangeError exception. + +@item tdivrem(a, b) +@item fdivrem(a, b) +@item cdivrem(a, b) +@item edivrem(a, b) +Return an array of two elements. The first element is the quotient, +the second is the remainder. The same rounding is done as the +corresponding division operation. + +@item sqrt(a) +Return @math{\lfloor \sqrt(a) \rfloor}. A RangeError exception is +raised if @math{a < 0}. + +@item sqrtrem(a) +Return an array of two elements. The first element is @math{\lfloor +\sqrt{a} \rfloor}. The second element is @math{a-\lfloor \sqrt{a} +\rfloor^2}. A RangeError exception is raised if @math{a < 0}. + +@item floorLog2(a) +Return -1 if @math{a \leq 0} otherwise return @math{\lfloor \log2(a) \rfloor}. + +@item ctz(a) +Return the number of trailing zeros in the two's complement binary representation of a. Return -1 if @math{a=0}. + +@end table + +@chapter BigFloat + +@section Introduction + +This extension adds the @code{BigFloat} primitive type. The +@code{BigFloat} type represents floating point numbers in base 2 +with the IEEE 754 semantics. A floating +point number is represented as a sign, mantissa and exponent. The +special values @code{NaN}, @code{+/-Infinity}, @code{+0} and @code{-0} +are supported. The mantissa and exponent can have any bit length with +an implementation specific minimum and maximum. + +@section Floating point rounding + +Each floating point operation operates with infinite precision and +then rounds the result according to the specified floating point +environment (@code{BigFloatEnv} object). The status flags of the +environment are also set according to the result of the operation. + +If no floating point environment is provided, the global floating +point environment is used. + +The rounding mode of the global floating point environment is always +@code{RNDN} (``round to nearest with ties to even'')@footnote{The +rationale is that the rounding mode changes must always be +explicit.}. The status flags of the global environment cannot be +read@footnote{The rationale is to avoid side effects for the built-in +operators.}. The precision of the global environment is +@code{BigFloatEnv.prec}. The number of exponent bits of the global +environment is @code{BigFloatEnv.expBits}. The global environment +subnormal flag is set to @code{true}. + +For example, @code{prec = 53} and @code{ expBits = 11} exactly give +the same precision as the IEEE 754 64 bit floating point format. The +default precision is @code{prec = 113} and @code{ expBits = 15} (IEEE +754 128 bit floating point format). + +The global floating point environment can only be modified temporarily +when calling a function (see @code{BigFloatEnv.setPrec}). Hence a +function can change the global floating point environment for its +callees but not for its caller. + +@section Operators + +The builtin operators are extended so that a BigFloat is returned if +at least one operand is a BigFloat. The computations are always done +with infinite precision and rounded according to the global floating +point environment. + +@code{typeof} applied on a @code{BigFloat} returns @code{bigfloat}. + +BigFloat can be compared with all the other numeric types and the +result follows the expected mathematical relations. + +However, since BigFloat and Number are different types they are never +equal when using the strict comparison operators (e.g. @code{0.0 === +0.0l} is false). + +@section BigFloat literals + +BigFloat literals are floating point numbers with a trailing @code{l} +suffix. BigFloat literals have an infinite precision. They are rounded +according to the global floating point environment when they are +evaluated.@footnote{Base 10 floating point literals cannot usually be +exactly represented as base 2 floating point number. In order to +ensure that the literal is represented accurately with the current +precision, it must be evaluated at runtime.} + +@section Builtin Object changes + +@subsection @code{BigFloat} function + +The @code{BigFloat} function cannot be invoked as a constructor. When +invoked as a function: the parameter is converted to a primitive +type. If the result is a numeric type, it is converted to BigFloat +without rounding. If the result is a string, it is converted to +BigFloat using the precision of the global floating point environment. + +@code{BigFloat} properties: + +@table @code + +@item LN2 +@item PI +Getter. Return the value of the corresponding mathematical constant +rounded to nearest, ties to even with the current global +precision. The constant values are cached for small precisions. + +@item MIN_VALUE +@item MAX_VALUE +@item EPSILON +Getter. Return the minimum, maximum and epsilon @code{BigFloat} values +(same definition as the corresponding @code{Number} constants). + +@item fpRound(a[, e]) +Round the floating point number @code{a} according to the floating +point environment @code{e} or the global environment if @code{e} is +undefined. + +@item parseFloat(a[, radix[, e]]) +Parse the string @code{a} as a floating point number in radix +@code{radix}. The radix is 0 (default) or from 2 to 36. The radix 0 +means radix 10 unless there is a hexadecimal or binary prefix. The +result is rounded according to the floating point environment @code{e} +or the global environment if @code{e} is undefined. + +@item isFinite(a) +Return true if @code{a} is a finite bigfloat. + +@item isNaN(a) +Return true if @code{a} is a NaN bigfloat. + +@item add(a, b[, e]) +@item sub(a, b[, e]) +@item mul(a, b[, e]) +@item div(a, b[, e]) +Perform the specified floating point operation and round the floating +point number @code{a} according to the floating point environment +@code{e} or the global environment if @code{e} is undefined. If +@code{e} is specified, the floating point status flags are updated. + +@item floor(x) +@item ceil(x) +@item round(x) +@item trunc(x) +Round to an integer. No additional rounding is performed. + +@item abs(x) +Return the absolute value of x. No additional rounding is performed. + +@item fmod(x, y[, e]) +@item remainder(x, y[, e]) +Floating point remainder. The quotient is truncated to zero (fmod) or +to the nearest integer with ties to even (remainder). @code{e} is an +optional floating point environment. + +@item sqrt(x[, e]) +Square root. Return a rounded floating point number. @code{e} is an +optional floating point environment. + +@item sin(x[, e]) +@item cos(x[, e]) +@item tan(x[, e]) +@item asin(x[, e]) +@item acos(x[, e]) +@item atan(x[, e]) +@item atan2(x, y[, e]) +@item exp(x[, e]) +@item log(x[, e]) +@item pow(x, y[, e]) +Transcendental operations. Return a rounded floating point +number. @code{e} is an optional floating point environment. + +@end table + +@subsection @code{BigFloat.prototype} + +The following properties are modified: + +@table @code +@item valueOf() +Return the bigfloat primitive value corresponding to @code{this}. + +@item toString(radix) + +For floating point numbers: + +@itemize +@item +If the radix is a power of two, the conversion is done with infinite +precision. +@item +Otherwise, the number is rounded to nearest with ties to even using +the global precision. It is then converted to string using the minimum +number of digits so that its conversion back to a floating point using +the global precision and round to nearest gives the same number. + +@end itemize + +The exponent letter is @code{e} for base 10, @code{p} for bases 2, 8, +16 with a binary exponent and @code{@@} for the other bases. + +@item toPrecision(p, rnd_mode = BigFloatEnv.RNDNA, radix = 10) +@item toFixed(p, rnd_mode = BigFloatEnv.RNDNA, radix = 10) +@item toExponential(p, rnd_mode = BigFloatEnv.RNDNA, radix = 10) +Same semantics as the corresponding @code{Number} functions with +BigFloats. There is no limit on the accepted precision @code{p}. The +rounding mode and radix can be optionally specified. The radix must be +between 2 and 36. + +@end table + +@subsection @code{BigFloatEnv} constructor + +The @code{BigFloatEnv([p, [,rndMode]]} constructor cannot be invoked as a +function. The floating point environment contains: + +@itemize +@item the mantissa precision in bits + +@item the exponent size in bits assuming an IEEE 754 representation; + +@item the subnormal flag (if true, subnormal floating point numbers can +be generated by the floating point operations). + +@item the rounding mode + +@item the floating point status. The status flags can only be set by the floating point operations. They can be reset with @code{BigFloatEnv.prototype.clearStatus()} or with the various status flag setters. + +@end itemize + +@code{new BigFloatEnv([p, [,rndMode]]} creates a new floating point +environment. The status flags are reset. If no parameter is given the +precision, exponent bits and subnormal flags are copied from the +global floating point environment. Otherwise, the precision is set to +@code{p}, the number of exponent bits is set to @code{expBitsMax} and the +subnormal flags is set to @code{false}. If @code{rndMode} is +@code{undefined}, the rounding mode is set to @code{RNDN}. + +@code{BigFloatEnv} properties: + +@table @code + +@item prec +Getter. Return the precision in bits of the global floating point +environment. The initial value is @code{113}. + +@item expBits +Getter. Return the exponent size in bits of the global floating point +environment assuming an IEEE 754 representation. The initial value is +@code{15}. + +@item setPrec(f, p[, e]) +Set the precision of the global floating point environment to @code{p} +and the exponent size to @code{e} then call the function +@code{f}. Then the Float precision and exponent size are reset to +their precious value and the return value of @code{f} is returned (or +an exception is raised if @code{f} raised an exception). If @code{e} +is @code{undefined} it is set to @code{BigFloatEnv.expBitsMax}. + +@item precMin +Read-only integer. Return the minimum allowed precision. Must be at least 2. + +@item precMax +Read-only integer. Return the maximum allowed precision. Must be at least 113. + +@item expBitsMin +Read-only integer. Return the minimum allowed exponent size in +bits. Must be at least 3. + +@item expBitsMax +Read-only integer. Return the maximum allowed exponent size in +bits. Must be at least 15. + +@item RNDN +Read-only integer. Round to nearest, with ties to even rounding mode. + +@item RNDZ +Read-only integer. Round to zero rounding mode. + +@item RNDD +Read-only integer. Round to -Infinity rounding mode. + +@item RNDU +Read-only integer. Round to +Infinity rounding mode. + +@item RNDNA +Read-only integer. Round to nearest, with ties away from zero rounding mode. + +@item RNDA +Read-only integer. Round away from zero rounding mode. + +@item RNDF@footnote{Could be removed in case a deterministic behavior for floating point operations is required.} +Read-only integer. Faithful rounding mode. The result is +non-deterministically rounded to -Infinity or +Infinity. This rounding +mode usually gives a faster and deterministic running time for the +floating point operations. + +@end table + +@code{BigFloatEnv.prototype} properties: + +@table @code + +@item prec +Getter and setter (Integer). Return or set the precision in bits. + +@item expBits +Getter and setter (Integer). Return or set the exponent size in bits +assuming an IEEE 754 representation. + +@item rndMode +Getter and setter (Integer). Return or set the rounding mode. + +@item subnormal +Getter and setter (Boolean). subnormal flag. It is false when +@code{expBits = expBitsMax}. + +@item clearStatus() +Clear the status flags. + +@item invalidOperation +@item divideByZero +@item overflow +@item underflow +@item inexact +Getter and setter (Boolean). Status flags. + +@end table + +@chapter BigDecimal + +This extension adds the @code{BigDecimal} primitive type. The +@code{BigDecimal} type represents floating point numbers in base +10. It is inspired from the proposal available at +@url{https://github.com/littledan/proposal-bigdecimal}. + +The @code{BigDecimal} floating point numbers are always normalized and +finite. There is no concept of @code{-0}, @code{Infinity} or +@code{NaN}. By default, all the computations are done with infinite +precision. + +@section Operators + +The following builtin operators support BigDecimal: + +@table @code + +@item + +@item - +@item * +Both operands must be BigDecimal. The result is computed with infinite +precision. +@item % +Both operands must be BigDecimal. The result is computed with infinite +precision. A range error is throws in case of division by zero. + +@item / +Both operands must be BigDecimal. A range error is throws in case of +division by zero or if the result cannot be represented with infinite +precision (use @code{BigDecimal.div} to specify the rounding). + +@item ** +Both operands must be BigDecimal. The exponent must be a positive +integer. The result is computed with infinite precision. + +@item === +When one of the operand is a BigDecimal, return true if both operands +are a BigDecimal and if they are equal. + +@item == +@item != +@item <= +@item >= +@item < +@item > + +Numerical comparison. When one of the operand is not a BigDecimal, it is +converted to BigDecimal by using ToString(). Hence comparisons between +Number and BigDecimal do not use the exact mathematical value of the +Number value. + +@end table + +@section BigDecimal literals + +BigDecimal literals are decimal floating point numbers with a trailing +@code{m} suffix. + +@section Builtin Object changes + +@subsection The @code{BigDecimal} function. + +It returns @code{0m} if no parameter is provided. Otherwise the first +parameter is converted to a bigdecimal by using ToString(). Hence +Number values are not converted to their exact numerical value as +BigDecimal. + +@subsection Properties of the @code{BigDecimal} object + +@table @code + +@item add(a, b[, e]) +@item sub(a, b[, e]) +@item mul(a, b[, e]) +@item div(a, b[, e]) +@item mod(a, b[, e]) +@item sqrt(a, e) +@item round(a, e) +Perform the specified floating point operation and round the floating +point result according to the rounding object @code{e}. If the +rounding object is not present, the operation is executed with +infinite precision. + +For @code{div}, a @code{RangeError} exception is thrown in case of +division by zero or if the result cannot be represented with infinite +precision if no rounding object is present. + +For @code{sqrt}, a range error is thrown if @code{a} is less than +zero. + +The rounding object must contain the following properties: +@code{roundingMode} is a string specifying the rounding mode +(@code{"floor"}, @code{"ceiling"}, @code{"down"}, @code{"up"}, +@code{"half-even"}, @code{"half-up"}). Either +@code{maximumSignificantDigits} or @code{maximumFractionDigits} must +be present to specify respectively the number of significant digits +(must be >= 1) or the number of digits after the decimal point (must +be >= 0). + +@end table + +@subsection Properties of the @code{BigDecimal.prototype} object + +@table @code +@item valueOf() +Return the bigdecimal primitive value corresponding to @code{this}. + +@item toString() +Convert @code{this} to a string with infinite precision in base 10. + +@item toPrecision(p, rnd_mode = "half-up") +@item toFixed(p, rnd_mode = "half-up") +@item toExponential(p, rnd_mode = "half-up") +Convert the BigDecimal @code{this} to string with the specified +precision @code{p}. There is no limit on the accepted precision +@code{p}. The rounding mode can be optionally +specified. @code{toPrecision} outputs either in decimal fixed notation +or in decimal exponential notation with a @code{p} digits of +precision. @code{toExponential} outputs in decimal exponential +notation with @code{p} digits after the decimal point. @code{toFixed} +outputs in decimal notation with @code{p} digits after the decimal +point. + +@end table + +@chapter Math mode + +A new @emph{math mode} is enabled with the @code{"use math"} +directive. It propagates the same way as the @emph{strict mode}. It is +designed so that arbitrarily large integers and floating point numbers +are available by default. In order to minimize the number of changes +in the Javascript semantics, integers are represented either as Number +or BigInt depending on their magnitude. Floating point numbers are +always represented as BigFloat. + +The following changes are made to the Javascript semantics: + +@itemize + +@item Floating point literals (i.e. number with a decimal point or an exponent) are @code{BigFloat} by default (i.e. a @code{l} suffix is implied). Hence @code{typeof 1.0 === "bigfloat"}. + +@item Integer literals (i.e. numbers without a decimal point or an exponent) with or without the @code{n} suffix are @code{BigInt} if their value cannot be represented as a safe integer. A safe integer is defined as a integer whose absolute value is smaller or equal to @code{2**53-1}. Hence @code{typeof 1 === "number "}, @code{typeof 1n === "number"} but @code{typeof 9007199254740992 === "bigint" }. + +@item All the bigint builtin operators and functions are modified so that their result is returned as a Number if it is a safe integer. Otherwise the result stays a BigInt. + +@item The builtin operators are modified so that they return an exact result (which can be a BigInt) if their operands are safe integers. Operands between Number and BigInt are accepted provided the Number operand is a safe integer. The integer power with a negative exponent returns a BigFloat as result. The integer division returns a BigFloat as result. + +@item The @code{^} operator is an alias to the power operator (@code{**}). + +@item The power operator (both @code{^} and @code{**}) grammar is modified so that @code{-2^2} is allowed and yields @code{-4}. + +@item The logical xor operator is still available with the @code{^^} operator. + +@item The modulo operator (@code{%}) returns the Euclidian remainder (always positive) instead of the truncated remainder. + +@item The integer division operator can be overloaded with @code{Operators.updateBigIntOperators(dictionary)}. + +@item The integer power operator with a non zero negative exponent can be overloaded with @code{Operators.updateBigIntOperators(dictionary)}. + +@end itemize + +@bye diff --git a/quickjs/doc/quickjs.texi b/quickjs/doc/quickjs.texi new file mode 100644 index 0000000..9eb6354 --- /dev/null +++ b/quickjs/doc/quickjs.texi @@ -0,0 +1,1097 @@ +\input texinfo + +@iftex +@afourpaper +@headings double +@end iftex + +@titlepage +@afourpaper +@sp 7 +@center @titlefont{QuickJS Javascript Engine} +@sp 3 +@end titlepage + +@setfilename spec.info +@settitle QuickJS Javascript Engine + +@contents + +@chapter Introduction + +QuickJS is a small and embeddable Javascript engine. It supports the +ES2020 specification +@footnote{@url{https://tc39.es/ecma262/}} +including modules, asynchronous generators, proxies and BigInt. + +It supports mathematical extensions such as big decimal float float +numbers (BigDecimal), big binary floating point numbers (BigFloat), +and operator overloading. + +@section Main Features + +@itemize + +@item Small and easily embeddable: just a few C files, no external dependency, 210 KiB of x86 code for a simple ``hello world'' program. + +@item Fast interpreter with very low startup time: runs the 69000 tests of the ECMAScript Test Suite@footnote{@url{https://github.com/tc39/test262}} in about 95 seconds on a single core of a desktop PC. The complete life cycle of a runtime instance completes in less than 300 microseconds. + +@item Almost complete ES2020 support including modules, asynchronous +generators and full Annex B support (legacy web compatibility). Many +features from the upcoming ES2021 specification +@footnote{@url{https://tc39.github.io/ecma262/}} are also supported. + +@item Passes nearly 100% of the ECMAScript Test Suite tests when selecting the ES2020 features. + +@item Compile Javascript sources to executables with no external dependency. + +@item Garbage collection using reference counting (to reduce memory usage and have deterministic behavior) with cycle removal. + +@item Mathematical extensions: BigDecimal, BigFloat, operator overloading, bigint mode, math mode. + +@item Command line interpreter with contextual colorization and completion implemented in Javascript. + +@item Small built-in standard library with C library wrappers. + +@end itemize + +@chapter Usage + +@section Installation + +A Makefile is provided to compile the engine on Linux or MacOS/X. A +preliminary Windows support is available thru cross compilation on a +Linux host with the MingGW tools. + +Edit the top of the @code{Makefile} if you wish to select specific +options then run @code{make}. + +You can type @code{make install} as root if you wish to install the binaries and support files to +@code{/usr/local} (this is not necessary to use QuickJS). + +@section Quick start + +@code{qjs} is the command line interpreter (Read-Eval-Print Loop). You can pass +Javascript files and/or expressions as arguments to execute them: + +@example +./qjs examples/hello.js +@end example + +@code{qjsc} is the command line compiler: + +@example +./qjsc -o hello examples/hello.js +./hello +@end example + +generates a @code{hello} executable with no external dependency. + +@section Command line options + +@subsection @code{qjs} interpreter + +@verbatim +usage: qjs [options] [file [args]] +@end verbatim + +Options are: +@table @code +@item -h +@item --help +List options. + +@item -e @code{EXPR} +@item --eval @code{EXPR} +Evaluate EXPR. + +@item -i +@item --interactive +Go to interactive mode (it is not the default when files are provided on the command line). + +@item -m +@item --module +Load as ES6 module (default=autodetect). A module is autodetected if +the filename extension is @code{.mjs} or if the first keyword of the +source is @code{import}. + +@item --script +Load as ES6 script (default=autodetect). + +@item --bignum +Enable the bignum extensions: BigDecimal object, BigFloat object and +the @code{"use math"} directive. + +@item -I file +@item --include file +Include an additional file. + +@end table + +Advanced options are: + +@table @code +@item --std +Make the @code{std} and @code{os} modules available to the loaded +script even if it is not a module. + +@item -d +@item --dump +Dump the memory usage stats. + +@item -q +@item --quit +just instantiate the interpreter and quit. + +@end table + +@subsection @code{qjsc} compiler + +@verbatim +usage: qjsc [options] [files] +@end verbatim + +Options are: +@table @code +@item -c +Only output bytecode in a C file. The default is to output an executable file. +@item -e +Output @code{main()} and bytecode in a C file. The default is to output an +executable file. +@item -o output +Set the output filename (default = @file{out.c} or @file{a.out}). + +@item -N cname +Set the C name of the generated data. + +@item -m +Compile as Javascript module (default=autodetect). + +@item -D module_name +Compile a dynamically loaded module and its dependencies. This option +is needed when your code uses the @code{import} keyword or the +@code{os.Worker} constructor because the compiler cannot statically +find the name of the dynamically loaded modules. + +@item -M module_name[,cname] +Add initialization code for an external C module. See the +@code{c_module} example. + +@item -x +Byte swapped output (only used for cross compilation). + +@item -flto +Use link time optimization. The compilation is slower but the +executable is smaller and faster. This option is automatically set +when the @code{-fno-x} options are used. + +@item -fno-[eval|string-normalize|regexp|json|proxy|map|typedarray|promise|bigint] +Disable selected language features to produce a smaller executable file. + +@item -fbignum +Enable the bignum extensions: BigDecimal object, BigFloat object and +the @code{"use math"} directive. + +@end table + +@section @code{qjscalc} application + +The @code{qjscalc} application is a superset of the @code{qjs} +command line interpreter implementing a Javascript calculator with +arbitrarily large integer and floating point numbers, fractions, +complex numbers, polynomials and matrices. The source code is in +@file{qjscalc.js}. More documentation and a web version are available at +@url{http://numcalc.com}. + +@section Built-in tests + +Run @code{make test} to run the few built-in tests included in the +QuickJS archive. + +@section Test262 (ECMAScript Test Suite) + +A test262 runner is included in the QuickJS archive. The test262 tests +can be installed in the QuickJS source directory with: + +@example +git clone https://github.com/tc39/test262.git test262 +cd test262 +patch -p1 < ../tests/test262.patch +cd .. +@end example + +The patch adds the implementation specific @code{harness} functions +and optimizes the inefficient RegExp character classes and Unicode +property escapes tests (the tests themselves are not modified, only a +slow string initialization function is optimized). + +The tests can be run with +@example +make test2 +@end example + +The configuration files @code{test262.conf} +(resp. @code{test262o.conf} for the old ES5.1 tests@footnote{The old +ES5.1 tests can be extracted with @code{git clone --single-branch +--branch es5-tests https://github.com/tc39/test262.git test262o}})) +contain the options to run the various tests. Tests can be excluded +based on features or filename. + +The file @code{test262_errors.txt} contains the current list of +errors. The runner displays a message when a new error appears or when +an existing error is corrected or modified. Use the @code{-u} option +to update the current list of errors (or @code{make test2-update}). + +The file @code{test262_report.txt} contains the logs of all the +tests. It is useful to have a clearer analysis of a particular +error. In case of crash, the last line corresponds to the failing +test. + +Use the syntax @code{./run-test262 -c test262.conf -f filename.js} to +run a single test. Use the syntax @code{./run-test262 -c test262.conf +N} to start testing at test number @code{N}. + +For more information, run @code{./run-test262} to see the command line +options of the test262 runner. + +@code{run-test262} accepts the @code{-N} option to be invoked from +@code{test262-harness}@footnote{@url{https://github.com/bterlson/test262-harness}} +thru @code{eshost}. Unless you want to compare QuickJS with other +engines under the same conditions, we do not recommend to run the +tests this way as it is much slower (typically half an hour instead of +about 100 seconds). + +@chapter Specifications + +@section Language support + +@subsection ES2020 support + +The ES2020 specification is almost fully supported including the Annex +B (legacy web compatibility) and the Unicode related features. + +The following features are not supported yet: + +@itemize + +@item Tail calls@footnote{We believe the current specification of tails calls is too complicated and presents limited practical interests.} + +@end itemize + +@subsection ECMA402 + +ECMA402 (Internationalization API) is not supported. + +@subsection Extensions + +@itemize + +@item The directive @code{"use strip"} indicates that the debug information (including the source code of the functions) should not be retained to save memory. As @code{"use strict"}, the directive can be global to a script or local to a function. + +@item The first line of a script beginning with @code{#!} is ignored. + +@end itemize + +@subsection Mathematical extensions + +The mathematical extensions are fully backward compatible with +standard Javascript. See @code{jsbignum.pdf} for more information. + +@itemize + +@item @code{BigDecimal} support: arbitrary large floating point numbers in base 10. + +@item @code{BigFloat} support: arbitrary large floating point numbers in base 2. + +@item Operator overloading. + +@item The directive @code{"use bigint"} enables the bigint mode where integers are @code{BigInt} by default. + +@item The directive @code{"use math"} enables the math mode where the division and power operators on integers produce fractions. Floating point literals are @code{BigFloat} by default and integers are @code{BigInt} by default. + +@end itemize + +@section Modules + +ES6 modules are fully supported. The default name resolution is the +following: + +@itemize + +@item Module names with a leading @code{.} or @code{..} are relative +to the current module path. + +@item Module names without a leading @code{.} or @code{..} are system +modules, such as @code{std} or @code{os}. + +@item Module names ending with @code{.so} are native modules using the +QuickJS C API. + +@end itemize + +@section Standard library + +The standard library is included by default in the command line +interpreter. It contains the two modules @code{std} and @code{os} and +a few global objects. + +@subsection Global objects + +@table @code +@item scriptArgs +Provides the command line arguments. The first argument is the script name. +@item print(...args) +Print the arguments separated by spaces and a trailing newline. +@item console.log(...args) +Same as print(). + +@end table + +@subsection @code{std} module + +The @code{std} module provides wrappers to the libc @file{stdlib.h} +and @file{stdio.h} and a few other utilities. + +Available exports: + +@table @code + +@item exit(n) +Exit the process. + +@item evalScript(str, options = undefined) +Evaluate the string @code{str} as a script (global +eval). @code{options} is an optional object containing the following +optional properties: + + @table @code + @item backtrace_barrier + Boolean (default = false). If true, error backtraces do not list the + stack frames below the evalScript. + @end table + +@item loadScript(filename) +Evaluate the file @code{filename} as a script (global eval). + +@item loadFile(filename) +Load the file @code{filename} and return it as a string assuming UTF-8 +encoding. Return @code{null} in case of I/O error. + +@item open(filename, flags, errorObj = undefined) +Open a file (wrapper to the libc @code{fopen()}). Return the FILE +object or @code{null} in case of I/O error. If @code{errorObj} is not +undefined, set its @code{errno} property to the error code or to 0 if +no error occured. + +@item popen(command, flags, errorObj = undefined) +Open a process by creating a pipe (wrapper to the libc +@code{popen()}). Return the FILE +object or @code{null} in case of I/O error. If @code{errorObj} is not +undefined, set its @code{errno} property to the error code or to 0 if +no error occured. + +@item fdopen(fd, flags, errorObj = undefined) +Open a file from a file handle (wrapper to the libc +@code{fdopen()}). Return the FILE +object or @code{null} in case of I/O error. If @code{errorObj} is not +undefined, set its @code{errno} property to the error code or to 0 if +no error occured. + +@item tmpfile(errorObj = undefined) +Open a temporary file. Return the FILE +object or @code{null} in case of I/O error. If @code{errorObj} is not +undefined, set its @code{errno} property to the error code or to 0 if +no error occured. + +@item puts(str) +Equivalent to @code{std.out.puts(str)}. + +@item printf(fmt, ...args) +Equivalent to @code{std.out.printf(fmt, ...args)}. + +@item sprintf(fmt, ...args) +Equivalent to the libc sprintf(). + +@item in +@item out +@item err +Wrappers to the libc file @code{stdin}, @code{stdout}, @code{stderr}. + +@item SEEK_SET +@item SEEK_CUR +@item SEEK_END +Constants for seek(). + +@item Error + +Enumeration object containing the integer value of common errors +(additional error codes may be defined): + + @table @code + @item EINVAL + @item EIO + @item EACCES + @item EEXIST + @item ENOSPC + @item ENOSYS + @item EBUSY + @item ENOENT + @item EPERM + @item EPIPE + @end table + +@item strerror(errno) +Return a string that describes the error @code{errno}. + +@item gc() +Manually invoke the cycle removal algorithm. The cycle removal +algorithm is automatically started when needed, so this function is +useful in case of specific memory constraints or for testing. + +@item getenv(name) +Return the value of the environment variable @code{name} or +@code{undefined} if it is not defined. + +@item setenv(name, value) +Set the value of the environment variable @code{name} to the string +@code{value}. + +@item unsetenv(name) +Delete the environment variable @code{name}. + +@item getenviron() +Return an object containing the environment variables as key-value pairs. + +@item urlGet(url, options = undefined) + +Download @code{url} using the @file{curl} command line +utility. @code{options} is an optional object containing the following +optional properties: + + @table @code + @item binary + Boolean (default = false). If true, the response is an ArrayBuffer + instead of a string. When a string is returned, the data is assumed + to be UTF-8 encoded. + + @item full + + Boolean (default = false). If true, return the an object contains + the properties @code{response} (response content), + @code{responseHeaders} (headers separated by CRLF), @code{status} + (status code). @code{response} is @code{null} is case of protocol or + network error. If @code{full} is false, only the response is + returned if the status is between 200 and 299. Otherwise @code{null} + is returned. + + @end table + +@item parseExtJSON(str) + + Parse @code{str} using a superset of @code{JSON.parse}. The + following extensions are accepted: + + @itemize + @item Single line and multiline comments + @item unquoted properties (ASCII-only Javascript identifiers) + @item trailing comma in array and object definitions + @item single quoted strings + @item @code{\f} and @code{\v} are accepted as space characters + @item leading plus in numbers + @item octal (@code{0o} prefix) and hexadecimal (@code{0x} prefix) numbers + @end itemize +@end table + +FILE prototype: + +@table @code +@item close() +Close the file. Return 0 if OK or @code{-errno} in case of I/O error. +@item puts(str) +Outputs the string with the UTF-8 encoding. +@item printf(fmt, ...args) +Formatted printf. + +The same formats as the standard C library @code{printf} are +supported. Integer format types (e.g. @code{%d}) truncate the Numbers +or BigInts to 32 bits. Use the @code{l} modifier (e.g. @code{%ld}) to +truncate to 64 bits. + +@item flush() +Flush the buffered file. +@item seek(offset, whence) +Seek to a give file position (whence is +@code{std.SEEK_*}). @code{offset} can be a number or a bigint. Return +0 if OK or @code{-errno} in case of I/O error. +@item tell() +Return the current file position. +@item tello() +Return the current file position as a bigint. +@item eof() +Return true if end of file. +@item fileno() +Return the associated OS handle. +@item error() +Return true if there was an error. +@item clearerr() +Clear the error indication. + +@item read(buffer, position, length) +Read @code{length} bytes from the file to the ArrayBuffer @code{buffer} at byte +position @code{position} (wrapper to the libc @code{fread}). + +@item write(buffer, position, length) +Write @code{length} bytes to the file from the ArrayBuffer @code{buffer} at byte +position @code{position} (wrapper to the libc @code{fwrite}). + +@item getline() +Return the next line from the file, assuming UTF-8 encoding, excluding +the trailing line feed. + +@item readAsString(max_size = undefined) +Read @code{max_size} bytes from the file and return them as a string +assuming UTF-8 encoding. If @code{max_size} is not present, the file +is read up its end. + +@item getByte() +Return the next byte from the file. Return -1 if the end of file is reached. + +@item putByte(c) +Write one byte to the file. +@end table + +@subsection @code{os} module + +The @code{os} module provides Operating System specific functions: + +@itemize +@item low level file access +@item signals +@item timers +@item asynchronous I/O +@item workers (threads) +@end itemize + +The OS functions usually return 0 if OK or an OS specific negative +error code. + +Available exports: + +@table @code +@item open(filename, flags, mode = 0o666) +Open a file. Return a handle or < 0 if error. + +@item O_RDONLY +@item O_WRONLY +@item O_RDWR +@item O_APPEND +@item O_CREAT +@item O_EXCL +@item O_TRUNC +POSIX open flags. + +@item O_TEXT +(Windows specific). Open the file in text mode. The default is binary mode. + +@item close(fd) +Close the file handle @code{fd}. + +@item seek(fd, offset, whence) +Seek in the file. Use @code{std.SEEK_*} for +@code{whence}. @code{offset} is either a number or a bigint. If +@code{offset} is a bigint, a bigint is returned too. + +@item read(fd, buffer, offset, length) +Read @code{length} bytes from the file handle @code{fd} to the +ArrayBuffer @code{buffer} at byte position @code{offset}. +Return the number of read bytes or < 0 if error. + +@item write(fd, buffer, offset, length) +Write @code{length} bytes to the file handle @code{fd} from the +ArrayBuffer @code{buffer} at byte position @code{offset}. +Return the number of written bytes or < 0 if error. + +@item isatty(fd) +Return @code{true} is @code{fd} is a TTY (terminal) handle. + +@item ttyGetWinSize(fd) +Return the TTY size as @code{[width, height]} or @code{null} if not available. + +@item ttySetRaw(fd) +Set the TTY in raw mode. + +@item remove(filename) +Remove a file. Return 0 if OK or @code{-errno}. + +@item rename(oldname, newname) +Rename a file. Return 0 if OK or @code{-errno}. + +@item realpath(path) +Return @code{[str, err]} where @code{str} is the canonicalized absolute +pathname of @code{path} and @code{err} the error code. + +@item getcwd() +Return @code{[str, err]} where @code{str} is the current working directory +and @code{err} the error code. + +@item chdir(path) +Change the current directory. Return 0 if OK or @code{-errno}. + +@item mkdir(path, mode = 0o777) +Create a directory at @code{path}. Return 0 if OK or @code{-errno}. + +@item stat(path) +@item lstat(path) + +Return @code{[obj, err]} where @code{obj} is an object containing the +file status of @code{path}. @code{err} is the error code. The +following fields are defined in @code{obj}: dev, ino, mode, nlink, +uid, gid, rdev, size, blocks, atime, mtime, ctime. The times are +specified in milliseconds since 1970. @code{lstat()} is the same as +@code{stat()} excepts that it returns information about the link +itself. + +@item S_IFMT +@item S_IFIFO +@item S_IFCHR +@item S_IFDIR +@item S_IFBLK +@item S_IFREG +@item S_IFSOCK +@item S_IFLNK +@item S_ISGID +@item S_ISUID +Constants to interpret the @code{mode} property returned by +@code{stat()}. They have the same value as in the C system header +@file{sys/stat.h}. + +@item utimes(path, atime, mtime) +Change the access and modification times of the file @code{path}. The +times are specified in milliseconds since 1970. Return 0 if OK or @code{-errno}. + +@item symlink(target, linkpath) +Create a link at @code{linkpath} containing the string @code{target}. Return 0 if OK or @code{-errno}. + +@item readlink(path) +Return @code{[str, err]} where @code{str} is the link target and @code{err} +the error code. + +@item readdir(path) +Return @code{[array, err]} where @code{array} is an array of strings +containing the filenames of the directory @code{path}. @code{err} is +the error code. + +@item setReadHandler(fd, func) +Add a read handler to the file handle @code{fd}. @code{func} is called +each time there is data pending for @code{fd}. A single read handler +per file handle is supported. Use @code{func = null} to remove the +handler. + +@item setWriteHandler(fd, func) +Add a write handler to the file handle @code{fd}. @code{func} is +called each time data can be written to @code{fd}. A single write +handler per file handle is supported. Use @code{func = null} to remove +the handler. + +@item signal(signal, func) +Call the function @code{func} when the signal @code{signal} +happens. Only a single handler per signal number is supported. Use +@code{null} to set the default handler or @code{undefined} to ignore +the signal. Signal handlers can only be defined in the main thread. + +@item SIGINT +@item SIGABRT +@item SIGFPE +@item SIGILL +@item SIGSEGV +@item SIGTERM +POSIX signal numbers. + +@item kill(pid, sig) +Send the signal @code{sig} to the process @code{pid}. + +@item exec(args[, options]) +Execute a process with the arguments @code{args}. @code{options} is an +object containing optional parameters: + + @table @code + @item block + Boolean (default = true). If true, wait until the process is + terminated. In this case, @code{exec} return the exit code if positive + or the negated signal number if the process was interrupted by a + signal. If false, do not block and return the process id of the child. + + @item usePath + Boolean (default = true). If true, the file is searched in the + @code{PATH} environment variable. + + @item file + String (default = @code{args[0]}). Set the file to be executed. + + @item cwd + String. If present, set the working directory of the new process. + + @item stdin + @item stdout + @item stderr + If present, set the handle in the child for stdin, stdout or stderr. + + @item env + Object. If present, set the process environment from the object + key-value pairs. Otherwise use the same environment as the current + process. + + @item uid + Integer. If present, the process uid with @code{setuid}. + + @item gid + Integer. If present, the process gid with @code{setgid}. + + @end table + +@item waitpid(pid, options) +@code{waitpid} Unix system call. Return the array @code{[ret, +status]}. @code{ret} contains @code{-errno} in case of error. + +@item WNOHANG +Constant for the @code{options} argument of @code{waitpid}. + +@item dup(fd) +@code{dup} Unix system call. + +@item dup2(oldfd, newfd) +@code{dup2} Unix system call. + +@item pipe() +@code{pipe} Unix system call. Return two handles as @code{[read_fd, +write_fd]} or null in case of error. + +@item sleep(delay_ms) +Sleep during @code{delay_ms} milliseconds. + +@item setTimeout(func, delay) +Call the function @code{func} after @code{delay} ms. Return a handle +to the timer. + +@item clearTimeout(handle) +Cancel a timer. + +@item platform +Return a string representing the platform: @code{"linux"}, @code{"darwin"}, +@code{"win32"} or @code{"js"}. + +@item Worker(module_filename) +Constructor to create a new thread (worker) with an API close to the +@code{WebWorkers}. @code{module_filename} is a string specifying the +module filename which is executed in the newly created thread. As for +dynamically imported module, it is relative to the current script or +module path. Threads normally don't share any data and communicate +between each other with messages. Nested workers are not supported. An +example is available in @file{tests/test_worker.js}. + +The worker class has the following static properties: + + @table @code + @item parent + In the created worker, @code{Worker.parent} represents the parent + worker and is used to send or receive messages. + @end table + +The worker instances have the following properties: + + @table @code + @item postMessage(msg) + + Send a message to the corresponding worker. @code{msg} is cloned in + the destination worker using an algorithm similar to the @code{HTML} + structured clone algorithm. @code{SharedArrayBuffer} are shared + between workers. + + Current limitations: @code{Map} and @code{Set} are not supported + yet. + + @item onmessage + + Getter and setter. Set a function which is called each time a + message is received. The function is called with a single + argument. It is an object with a @code{data} property containing the + received message. The thread is not terminated if there is at least + one non @code{null} @code{onmessage} handler. + + @end table + +@end table + +@section QuickJS C API + +The C API was designed to be simple and efficient. The C API is +defined in the header @code{quickjs.h}. + +@subsection Runtime and contexts + +@code{JSRuntime} represents a Javascript runtime corresponding to an +object heap. Several runtimes can exist at the same time but they +cannot exchange objects. Inside a given runtime, no multi-threading is +supported. + +@code{JSContext} represents a Javascript context (or Realm). Each +JSContext has its own global objects and system objects. There can be +several JSContexts per JSRuntime and they can share objects, similar +to frames of the same origin sharing Javascript objects in a +web browser. + +@subsection JSValue + +@code{JSValue} represents a Javascript value which can be a primitive +type or an object. Reference counting is used, so it is important to +explicitly duplicate (@code{JS_DupValue()}, increment the reference +count) or free (@code{JS_FreeValue()}, decrement the reference count) +JSValues. + +@subsection C functions + +C functions can be created with +@code{JS_NewCFunction()}. @code{JS_SetPropertyFunctionList()} is a +shortcut to easily add functions, setters and getters properties to a +given object. + +Unlike other embedded Javascript engines, there is no implicit stack, +so C functions get their parameters as normal C parameters. As a +general rule, C functions take constant @code{JSValue}s as parameters +(so they don't need to free them) and return a newly allocated (=live) +@code{JSValue}. + +@subsection Exceptions + +Exceptions: most C functions can return a Javascript exception. It +must be explicitly tested and handled by the C code. The specific +@code{JSValue} @code{JS_EXCEPTION} indicates that an exception +occurred. The actual exception object is stored in the +@code{JSContext} and can be retrieved with @code{JS_GetException()}. + +@subsection Script evaluation + +Use @code{JS_Eval()} to evaluate a script or module source. + +If the script or module was compiled to bytecode with @code{qjsc}, it +can be evaluated by calling @code{js_std_eval_binary()}. The advantage +is that no compilation is needed so it is faster and smaller because +the compiler can be removed from the executable if no @code{eval} is +required. + +Note: the bytecode format is linked to a given QuickJS +version. Moreover, no security check is done before its +execution. Hence the bytecode should not be loaded from untrusted +sources. That's why there is no option to output the bytecode to a +binary file in @code{qjsc}. + +@subsection JS Classes + +C opaque data can be attached to a Javascript object. The type of the +C opaque data is determined with the class ID (@code{JSClassID}) of +the object. Hence the first step is to register a new class ID and JS +class (@code{JS_NewClassID()}, @code{JS_NewClass()}). Then you can +create objects of this class with @code{JS_NewObjectClass()} and get or +set the C opaque point with +@code{JS_GetOpaque()}/@code{JS_SetOpaque()}. + +When defining a new JS class, it is possible to declare a finalizer +which is called when the object is destroyed. The finalizer should be +used to release C resources. It is invalid to execute JS code from +it. A @code{gc_mark} method can be provided so that the cycle removal +algorithm can find the other objects referenced by this object. Other +methods are available to define exotic object behaviors. + +The Class ID are globally allocated (i.e. for all runtimes). The +JSClass are allocated per @code{JSRuntime}. @code{JS_SetClassProto()} +is used to define a prototype for a given class in a given +JSContext. @code{JS_NewObjectClass()} sets this prototype in the +created object. + +Examples are available in @file{quickjs-libc.c}. + +@subsection C Modules + +Native ES6 modules are supported and can be dynamically or statically +linked. Look at the @file{test_bjson} and @file{bjson.so} +examples. The standard library @file{quickjs-libc.c} is also a good example +of a native module. + +@subsection Memory handling + +Use @code{JS_SetMemoryLimit()} to set a global memory allocation limit +to a given JSRuntime. + +Custom memory allocation functions can be provided with +@code{JS_NewRuntime2()}. + +The maximum system stack size can be set with @code{JS_SetMaxStackSize()}. + +@subsection Execution timeout and interrupts + +Use @code{JS_SetInterruptHandler()} to set a callback which is +regularly called by the engine when it is executing code. This +callback can be used to implement an execution timeout. + +It is used by the command line interpreter to implement a +@code{Ctrl-C} handler. + +@chapter Internals + +@section Bytecode + +The compiler generates bytecode directly with no intermediate +representation such as a parse tree, hence it is very fast. Several +optimizations passes are done over the generated bytecode. + +A stack-based bytecode was chosen because it is simple and generates +compact code. + +For each function, the maximum stack size is computed at compile time so that +no runtime stack overflow tests are needed. + +A separate compressed line number table is maintained for the debug +information. + +Access to closure variables is optimized and is almost as fast as local +variables. + +Direct @code{eval} in strict mode is optimized. + +@section Executable generation + +@subsection @code{qjsc} compiler + +The @code{qjsc} compiler generates C sources from Javascript files. By +default the C sources are compiled with the system compiler +(@code{gcc} or @code{clang}). + +The generated C source contains the bytecode of the compiled functions +or modules. If a full complete executable is needed, it also +contains a @code{main()} function with the necessary C code to initialize the +Javascript engine and to load and execute the compiled functions and +modules. + +Javascript code can be mixed with C modules. + +In order to have smaller executables, specific Javascript features can +be disabled, in particular @code{eval} or the regular expressions. The +code removal relies on the Link Time Optimization of the system +compiler. + +@subsection Binary JSON + +@code{qjsc} works by compiling scripts or modules and then serializing +them to a binary format. A subset of this format (without functions or +modules) can be used as binary JSON. The example @file{test_bjson.js} +shows how to use it. + +Warning: the binary JSON format may change without notice, so it +should not be used to store persistent data. The @file{test_bjson.js} +example is only used to test the binary object format functions. + +@section Runtime + +@subsection Strings + +Strings are stored either as an 8 bit or a 16 bit array of +characters. Hence random access to characters is always fast. + +The C API provides functions to convert Javascript Strings to C UTF-8 encoded +strings. The most common case where the Javascript string contains +only ASCII characters involves no copying. + +@subsection Objects + +The object shapes (object prototype, property names and flags) are shared +between objects to save memory. + +Arrays with no holes (except at the end of the array) are optimized. + +TypedArray accesses are optimized. + +@subsection Atoms + +Object property names and some strings are stored as Atoms (unique +strings) to save memory and allow fast comparison. Atoms are +represented as a 32 bit integer. Half of the atom range is reserved for +immediate integer literals from @math{0} to @math{2^{31}-1}. + +@subsection Numbers + +Numbers are represented either as 32-bit signed integers or 64-bit IEEE-754 +floating point values. Most operations have fast paths for the 32-bit +integer case. + +@subsection Garbage collection + +Reference counting is used to free objects automatically and +deterministically. A separate cycle removal pass is done when the allocated +memory becomes too large. The cycle removal algorithm only uses the +reference counts and the object content, so no explicit garbage +collection roots need to be manipulated in the C code. + +@subsection JSValue + +It is a Javascript value which can be a primitive type (such as +Number, String, ...) or an Object. NaN boxing is used in the 32-bit version +to store 64-bit floating point numbers. The representation is +optimized so that 32-bit integers and reference counted values can be +efficiently tested. + +In 64-bit code, JSValue are 128-bit large and no NaN boxing is used. The +rationale is that in 64-bit code memory usage is less critical. + +In both cases (32 or 64 bits), JSValue exactly fits two CPU registers, +so it can be efficiently returned by C functions. + +@subsection Function call + +The engine is optimized so that function calls are fast. The system +stack holds the Javascript parameters and local variables. + +@section RegExp + +A specific regular expression engine was developed. It is both small +and efficient and supports all the ES2020 features including the +Unicode properties. As the Javascript compiler, it directly generates +bytecode without a parse tree. + +Backtracking with an explicit stack is used so that there is no +recursion on the system stack. Simple quantifiers are specifically +optimized to avoid recursions. + +Infinite recursions coming from quantifiers with empty terms are +avoided. + +The full regexp library weights about 15 KiB (x86 code), excluding the +Unicode library. + +@section Unicode + +A specific Unicode library was developed so that there is no +dependency on an external large Unicode library such as ICU. All the +Unicode tables are compressed while keeping a reasonable access +speed. + +The library supports case conversion, Unicode normalization, Unicode +script queries, Unicode general category queries and all Unicode +binary properties. + +The full Unicode library weights about 45 KiB (x86 code). + +@section BigInt, BigFloat, BigDecimal + +BigInt, BigFloat and BigDecimal are implemented with the @code{libbf} +library@footnote{@url{https://bellard.org/libbf}}. It weights about 90 +KiB (x86 code) and provides arbitrary precision IEEE 754 floating +point operations and transcendental functions with exact rounding. + +@chapter License + +QuickJS is released under the MIT license. + +Unless otherwise specified, the QuickJS sources are copyright Fabrice +Bellard and Charlie Gordon. + +@bye diff --git a/quickjs/examples/fib.c b/quickjs/examples/fib.c new file mode 100644 index 0000000..c77b705 --- /dev/null +++ b/quickjs/examples/fib.c @@ -0,0 +1,72 @@ +/* + * QuickJS: Example of C module + * + * Copyright (c) 2017-2018 Fabrice Bellard + * + * 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. + */ +#include "../quickjs.h" + +#define countof(x) (sizeof(x) / sizeof((x)[0])) + +static int fib(int n) +{ + if (n <= 0) + return 0; + else if (n == 1) + return 1; + else + return fib(n - 1) + fib(n - 2); +} + +static JSValue js_fib(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int n, res; + if (JS_ToInt32(ctx, &n, argv[0])) + return JS_EXCEPTION; + res = fib(n); + return JS_NewInt32(ctx, res); +} + +static const JSCFunctionListEntry js_fib_funcs[] = { + JS_CFUNC_DEF("fib", 1, js_fib ), +}; + +static int js_fib_init(JSContext *ctx, JSModuleDef *m) +{ + return JS_SetModuleExportList(ctx, m, js_fib_funcs, + countof(js_fib_funcs)); +} + +#ifdef JS_SHARED_LIBRARY +#define JS_INIT_MODULE js_init_module +#else +#define JS_INIT_MODULE js_init_module_fib +#endif + +JSModuleDef *JS_INIT_MODULE(JSContext *ctx, const char *module_name) +{ + JSModuleDef *m; + m = JS_NewCModule(ctx, module_name, js_fib_init); + if (!m) + return NULL; + JS_AddModuleExportList(ctx, m, js_fib_funcs, countof(js_fib_funcs)); + return m; +} diff --git a/quickjs/examples/fib_module.js b/quickjs/examples/fib_module.js new file mode 100644 index 0000000..6a81071 --- /dev/null +++ b/quickjs/examples/fib_module.js @@ -0,0 +1,10 @@ +/* fib module */ +export function fib(n) +{ + if (n <= 0) + return 0; + else if (n == 1) + return 1; + else + return fib(n - 1) + fib(n - 2); +} diff --git a/quickjs/examples/hello.js b/quickjs/examples/hello.js new file mode 100644 index 0000000..accefce --- /dev/null +++ b/quickjs/examples/hello.js @@ -0,0 +1 @@ +console.log("Hello World"); diff --git a/quickjs/examples/hello_module.js b/quickjs/examples/hello_module.js new file mode 100644 index 0000000..463660f --- /dev/null +++ b/quickjs/examples/hello_module.js @@ -0,0 +1,6 @@ +/* example of JS module */ + +import { fib } from "./fib_module.js"; + +console.log("Hello World"); +console.log("fib(10)=", fib(10)); diff --git a/quickjs/examples/pi_bigdecimal.js b/quickjs/examples/pi_bigdecimal.js new file mode 100644 index 0000000..6a416b7 --- /dev/null +++ b/quickjs/examples/pi_bigdecimal.js @@ -0,0 +1,68 @@ +/* + * PI computation in Javascript using the QuickJS bigdecimal type + * (decimal floating point) + */ +"use strict"; + +/* compute PI with a precision of 'prec' digits */ +function calc_pi(prec) { + const CHUD_A = 13591409m; + const CHUD_B = 545140134m; + const CHUD_C = 640320m; + const CHUD_C3 = 10939058860032000m; /* C^3/24 */ + const CHUD_DIGITS_PER_TERM = 14.18164746272548; /* log10(C/12)*3 */ + + /* return [P, Q, G] */ + function chud_bs(a, b, need_G) { + var c, P, Q, G, P1, Q1, G1, P2, Q2, G2, b1; + if (a == (b - 1n)) { + b1 = BigDecimal(b); + G = (2m * b1 - 1m) * (6m * b1 - 1m) * (6m * b1 - 5m); + P = G * (CHUD_B * b1 + CHUD_A); + if (b & 1n) + P = -P; + G = G; + Q = b1 * b1 * b1 * CHUD_C3; + } else { + c = (a + b) >> 1n; + [P1, Q1, G1] = chud_bs(a, c, true); + [P2, Q2, G2] = chud_bs(c, b, need_G); + P = P1 * Q2 + P2 * G1; + Q = Q1 * Q2; + if (need_G) + G = G1 * G2; + else + G = 0m; + } + return [P, Q, G]; + } + + var n, P, Q, G; + /* number of serie terms */ + n = BigInt(Math.ceil(prec / CHUD_DIGITS_PER_TERM)) + 10n; + [P, Q, G] = chud_bs(0n, n, false); + Q = BigDecimal.div(Q, (P + Q * CHUD_A), + { roundingMode: "half-even", + maximumSignificantDigits: prec }); + G = (CHUD_C / 12m) * BigDecimal.sqrt(CHUD_C, + { roundingMode: "half-even", + maximumSignificantDigits: prec }); + return Q * G; +} + +(function() { + var r, n_digits, n_bits; + if (typeof scriptArgs != "undefined") { + if (scriptArgs.length < 2) { + print("usage: pi n_digits"); + return; + } + n_digits = scriptArgs[1] | 0; + } else { + n_digits = 1000; + } + /* we add more digits to reduce the probability of bad rounding for + the last digits */ + r = calc_pi(n_digits + 20); + print(r.toFixed(n_digits, "down")); +})(); diff --git a/quickjs/examples/pi_bigfloat.js b/quickjs/examples/pi_bigfloat.js new file mode 100644 index 0000000..2bcda22 --- /dev/null +++ b/quickjs/examples/pi_bigfloat.js @@ -0,0 +1,66 @@ +/* + * PI computation in Javascript using the QuickJS bigfloat type + * (binary floating point) + */ +"use strict"; + +/* compute PI with a precision of 'prec' bits */ +function calc_pi() { + const CHUD_A = 13591409n; + const CHUD_B = 545140134n; + const CHUD_C = 640320n; + const CHUD_C3 = 10939058860032000n; /* C^3/24 */ + const CHUD_BITS_PER_TERM = 47.11041313821584202247; /* log2(C/12)*3 */ + + /* return [P, Q, G] */ + function chud_bs(a, b, need_G) { + var c, P, Q, G, P1, Q1, G1, P2, Q2, G2; + if (a == (b - 1n)) { + G = (2n * b - 1n) * (6n * b - 1n) * (6n * b - 5n); + P = BigFloat(G * (CHUD_B * b + CHUD_A)); + if (b & 1n) + P = -P; + G = BigFloat(G); + Q = BigFloat(b * b * b * CHUD_C3); + } else { + c = (a + b) >> 1n; + [P1, Q1, G1] = chud_bs(a, c, true); + [P2, Q2, G2] = chud_bs(c, b, need_G); + P = P1 * Q2 + P2 * G1; + Q = Q1 * Q2; + if (need_G) + G = G1 * G2; + else + G = 0l; + } + return [P, Q, G]; + } + + var n, P, Q, G; + /* number of serie terms */ + n = BigInt(Math.ceil(BigFloatEnv.prec / CHUD_BITS_PER_TERM)) + 10n; + [P, Q, G] = chud_bs(0n, n, false); + Q = Q / (P + Q * BigFloat(CHUD_A)); + G = BigFloat((CHUD_C / 12n)) * BigFloat.sqrt(BigFloat(CHUD_C)); + return Q * G; +} + +(function() { + var r, n_digits, n_bits; + if (typeof scriptArgs != "undefined") { + if (scriptArgs.length < 2) { + print("usage: pi n_digits"); + return; + } + n_digits = scriptArgs[1]; + } else { + n_digits = 1000; + } + n_bits = Math.ceil(n_digits * Math.log2(10)); + /* we add more bits to reduce the probability of bad rounding for + the last digits */ + BigFloatEnv.setPrec( () => { + r = calc_pi(); + print(r.toFixed(n_digits, BigFloatEnv.RNDZ)); + }, n_bits + 32); +})(); diff --git a/quickjs/examples/pi_bigint.js b/quickjs/examples/pi_bigint.js new file mode 100644 index 0000000..cbbb2c4 --- /dev/null +++ b/quickjs/examples/pi_bigint.js @@ -0,0 +1,118 @@ +/* + * PI computation in Javascript using the BigInt type + */ +"use strict"; + +/* return floor(log2(a)) for a > 0 and 0 for a = 0 */ +function floor_log2(a) +{ + var k_max, a1, k, i; + k_max = 0n; + while ((a >> (2n ** k_max)) != 0n) { + k_max++; + } + k = 0n; + a1 = a; + for(i = k_max - 1n; i >= 0n; i--) { + a1 = a >> (2n ** i); + if (a1 != 0n) { + a = a1; + k |= (1n << i); + } + } + return k; +} + +/* return ceil(log2(a)) for a > 0 */ +function ceil_log2(a) +{ + return floor_log2(a - 1n) + 1n; +} + +/* return floor(sqrt(a)) (not efficient but simple) */ +function int_sqrt(a) +{ + var l, u, s; + if (a == 0n) + return a; + l = ceil_log2(a); + u = 1n << ((l + 1n) / 2n); + /* u >= floor(sqrt(a)) */ + for(;;) { + s = u; + u = ((a / s) + s) / 2n; + if (u >= s) + break; + } + return s; +} + +/* return pi * 2**prec */ +function calc_pi(prec) { + const CHUD_A = 13591409n; + const CHUD_B = 545140134n; + const CHUD_C = 640320n; + const CHUD_C3 = 10939058860032000n; /* C^3/24 */ + const CHUD_BITS_PER_TERM = 47.11041313821584202247; /* log2(C/12)*3 */ + + /* return [P, Q, G] */ + function chud_bs(a, b, need_G) { + var c, P, Q, G, P1, Q1, G1, P2, Q2, G2; + if (a == (b - 1n)) { + G = (2n * b - 1n) * (6n * b - 1n) * (6n * b - 5n); + P = G * (CHUD_B * b + CHUD_A); + if (b & 1n) + P = -P; + Q = b * b * b * CHUD_C3; + } else { + c = (a + b) >> 1n; + [P1, Q1, G1] = chud_bs(a, c, true); + [P2, Q2, G2] = chud_bs(c, b, need_G); + P = P1 * Q2 + P2 * G1; + Q = Q1 * Q2; + if (need_G) + G = G1 * G2; + else + G = 0n; + } + return [P, Q, G]; + } + + var n, P, Q, G; + /* number of serie terms */ + n = BigInt(Math.ceil(Number(prec) / CHUD_BITS_PER_TERM)) + 10n; + [P, Q, G] = chud_bs(0n, n, false); + Q = (CHUD_C / 12n) * (Q << prec) / (P + Q * CHUD_A); + G = int_sqrt(CHUD_C << (2n * prec)); + return (Q * G) >> prec; +} + +function main(args) { + var r, n_digits, n_bits, out; + if (args.length < 1) { + print("usage: pi n_digits"); + return; + } + n_digits = args[0] | 0; + + /* we add more bits to reduce the probability of bad rounding for + the last digits */ + n_bits = BigInt(Math.ceil(n_digits * Math.log2(10))) + 32n; + r = calc_pi(n_bits); + r = ((10n ** BigInt(n_digits)) * r) >> n_bits; + out = r.toString(); + print(out[0] + "." + out.slice(1)); +} + +var args; +if (typeof scriptArgs != "undefined") { + args = scriptArgs; + args.shift(); +} else if (typeof arguments != "undefined") { + args = arguments; +} else { + /* default: 1000 digits */ + args=[1000]; +} + +main(args); diff --git a/quickjs/examples/point.c b/quickjs/examples/point.c new file mode 100644 index 0000000..fbe2ce1 --- /dev/null +++ b/quickjs/examples/point.c @@ -0,0 +1,151 @@ +/* + * QuickJS: Example of C module with a class + * + * Copyright (c) 2019 Fabrice Bellard + * + * 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. + */ +#include "../quickjs.h" +#include + +#define countof(x) (sizeof(x) / sizeof((x)[0])) + +/* Point Class */ + +typedef struct { + int x; + int y; +} JSPointData; + +static JSClassID js_point_class_id; + +static void js_point_finalizer(JSRuntime *rt, JSValue val) +{ + JSPointData *s = JS_GetOpaque(val, js_point_class_id); + /* Note: 's' can be NULL in case JS_SetOpaque() was not called */ + js_free_rt(rt, s); +} + +static JSValue js_point_ctor(JSContext *ctx, + JSValueConst new_target, + int argc, JSValueConst *argv) +{ + JSPointData *s; + JSValue obj = JS_UNDEFINED; + JSValue proto; + + s = js_mallocz(ctx, sizeof(*s)); + if (!s) + return JS_EXCEPTION; + if (JS_ToInt32(ctx, &s->x, argv[0])) + goto fail; + if (JS_ToInt32(ctx, &s->y, argv[1])) + goto fail; + /* using new_target to get the prototype is necessary when the + class is extended. */ + proto = JS_GetPropertyStr(ctx, new_target, "prototype"); + if (JS_IsException(proto)) + goto fail; + obj = JS_NewObjectProtoClass(ctx, proto, js_point_class_id); + JS_FreeValue(ctx, proto); + if (JS_IsException(obj)) + goto fail; + JS_SetOpaque(obj, s); + return obj; + fail: + js_free(ctx, s); + JS_FreeValue(ctx, obj); + return JS_EXCEPTION; +} + +static JSValue js_point_get_xy(JSContext *ctx, JSValueConst this_val, int magic) +{ + JSPointData *s = JS_GetOpaque2(ctx, this_val, js_point_class_id); + if (!s) + return JS_EXCEPTION; + if (magic == 0) + return JS_NewInt32(ctx, s->x); + else + return JS_NewInt32(ctx, s->y); +} + +static JSValue js_point_set_xy(JSContext *ctx, JSValueConst this_val, JSValue val, int magic) +{ + JSPointData *s = JS_GetOpaque2(ctx, this_val, js_point_class_id); + int v; + if (!s) + return JS_EXCEPTION; + if (JS_ToInt32(ctx, &v, val)) + return JS_EXCEPTION; + if (magic == 0) + s->x = v; + else + s->y = v; + return JS_UNDEFINED; +} + +static JSValue js_point_norm(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSPointData *s = JS_GetOpaque2(ctx, this_val, js_point_class_id); + if (!s) + return JS_EXCEPTION; + return JS_NewFloat64(ctx, sqrt((double)s->x * s->x + (double)s->y * s->y)); +} + +static JSClassDef js_point_class = { + "Point", + .finalizer = js_point_finalizer, +}; + +static const JSCFunctionListEntry js_point_proto_funcs[] = { + JS_CGETSET_MAGIC_DEF("x", js_point_get_xy, js_point_set_xy, 0), + JS_CGETSET_MAGIC_DEF("y", js_point_get_xy, js_point_set_xy, 1), + JS_CFUNC_DEF("norm", 0, js_point_norm), +}; + +static int js_point_init(JSContext *ctx, JSModuleDef *m) +{ + JSValue point_proto, point_class; + + /* create the Point class */ + JS_NewClassID(&js_point_class_id); + JS_NewClass(JS_GetRuntime(ctx), js_point_class_id, &js_point_class); + + point_proto = JS_NewObject(ctx); + JS_SetPropertyFunctionList(ctx, point_proto, js_point_proto_funcs, countof(js_point_proto_funcs)); + + point_class = JS_NewCFunction2(ctx, js_point_ctor, "Point", 2, JS_CFUNC_constructor, 0); + /* set proto.constructor and ctor.prototype */ + JS_SetConstructor(ctx, point_class, point_proto); + JS_SetClassProto(ctx, js_point_class_id, point_proto); + + JS_SetModuleExport(ctx, m, "Point", point_class); + return 0; +} + +JSModuleDef *js_init_module(JSContext *ctx, const char *module_name) +{ + JSModuleDef *m; + m = JS_NewCModule(ctx, module_name, js_point_init); + if (!m) + return NULL; + JS_AddModuleExport(ctx, m, "Point"); + return m; +} diff --git a/quickjs/examples/test_fib.js b/quickjs/examples/test_fib.js new file mode 100644 index 0000000..70d26bd --- /dev/null +++ b/quickjs/examples/test_fib.js @@ -0,0 +1,6 @@ +/* example of JS module importing a C module */ + +import { fib } from "./fib.so"; + +console.log("Hello World"); +console.log("fib(10)=", fib(10)); diff --git a/quickjs/examples/test_point.js b/quickjs/examples/test_point.js new file mode 100644 index 0000000..0659bc3 --- /dev/null +++ b/quickjs/examples/test_point.js @@ -0,0 +1,40 @@ +/* example of JS module importing a C module */ +import { Point } from "./point.so"; + +function assert(b, str) +{ + if (b) { + return; + } else { + throw Error("assertion failed: " + str); + } +} + +class ColorPoint extends Point { + constructor(x, y, color) { + super(x, y); + this.color = color; + } + get_color() { + return this.color; + } +}; + +function main() +{ + var pt, pt2; + + pt = new Point(2, 3); + assert(pt.x === 2); + assert(pt.y === 3); + pt.x = 4; + assert(pt.x === 4); + assert(pt.norm() == 5); + + pt2 = new ColorPoint(2, 3, 0xffffff); + assert(pt2.x === 2); + assert(pt2.color === 0xffffff); + assert(pt2.get_color() === 0xffffff); +} + +main(); diff --git a/quickjs/libbf.c b/quickjs/libbf.c new file mode 100644 index 0000000..fe1628e --- /dev/null +++ b/quickjs/libbf.c @@ -0,0 +1,8466 @@ +/* + * Tiny arbitrary precision floating point library + * + * Copyright (c) 2017-2021 Fabrice Bellard + * + * 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. + */ +#include +#include +#include +#include +#include +#include + +#ifdef __AVX2__ +#include +#endif + +#include "cutils.h" +#include "libbf.h" + +/* enable it to check the multiplication result */ +//#define USE_MUL_CHECK +/* enable it to use FFT/NTT multiplication */ +#define USE_FFT_MUL +/* enable decimal floating point support */ +#define USE_BF_DEC + +//#define inline __attribute__((always_inline)) + +#ifdef __AVX2__ +#define FFT_MUL_THRESHOLD 100 /* in limbs of the smallest factor */ +#else +#define FFT_MUL_THRESHOLD 100 /* in limbs of the smallest factor */ +#endif + +/* XXX: adjust */ +#define DIVNORM_LARGE_THRESHOLD 50 +#define UDIV1NORM_THRESHOLD 3 + +#if LIMB_BITS == 64 +#define FMT_LIMB1 "%" PRIx64 +#define FMT_LIMB "%016" PRIx64 +#define PRId_LIMB PRId64 +#define PRIu_LIMB PRIu64 + +#else + +#define FMT_LIMB1 "%x" +#define FMT_LIMB "%08x" +#define PRId_LIMB "d" +#define PRIu_LIMB "u" + +#endif + +typedef intptr_t mp_size_t; + +typedef int bf_op2_func_t(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags); + +#ifdef USE_FFT_MUL + +#define FFT_MUL_R_OVERLAP_A (1 << 0) +#define FFT_MUL_R_OVERLAP_B (1 << 1) +#define FFT_MUL_R_NORESIZE (1 << 2) + +static no_inline int fft_mul(bf_context_t *s, + bf_t *res, limb_t *a_tab, limb_t a_len, + limb_t *b_tab, limb_t b_len, int mul_flags); +static void fft_clear_cache(bf_context_t *s); +#endif +#ifdef USE_BF_DEC +static limb_t get_digit(const limb_t *tab, limb_t len, slimb_t pos); +#endif + + +/* could leading zeros */ +static inline int clz(limb_t a) +{ + if (a == 0) { + return LIMB_BITS; + } else { +#if LIMB_BITS == 64 + return clz64(a); +#else + return clz32(a); +#endif + } +} + +static inline int ctz(limb_t a) +{ + if (a == 0) { + return LIMB_BITS; + } else { +#if LIMB_BITS == 64 + return ctz64(a); +#else + return ctz32(a); +#endif + } +} + +static inline int ceil_log2(limb_t a) +{ + if (a <= 1) + return 0; + else + return LIMB_BITS - clz(a - 1); +} + +/* b must be >= 1 */ +static inline slimb_t ceil_div(slimb_t a, slimb_t b) +{ + if (a >= 0) + return (a + b - 1) / b; + else + return a / b; +} + +/* b must be >= 1 */ +static inline slimb_t floor_div(slimb_t a, slimb_t b) +{ + if (a >= 0) { + return a / b; + } else { + return (a - b + 1) / b; + } +} + +/* return r = a modulo b (0 <= r <= b - 1. b must be >= 1 */ +static inline limb_t smod(slimb_t a, slimb_t b) +{ + a = a % (slimb_t)b; + if (a < 0) + a += b; + return a; +} + +/* signed addition with saturation */ +static inline slimb_t sat_add(slimb_t a, slimb_t b) +{ + slimb_t r; + r = a + b; + /* overflow ? */ + if (((a ^ r) & (b ^ r)) < 0) + r = (a >> (LIMB_BITS - 1)) ^ (((limb_t)1 << (LIMB_BITS - 1)) - 1); + return r; +} + +#define malloc(s) malloc_is_forbidden(s) +#define free(p) free_is_forbidden(p) +#define realloc(p, s) realloc_is_forbidden(p, s) + +void bf_context_init(bf_context_t *s, bf_realloc_func_t *realloc_func, + void *realloc_opaque) +{ + memset(s, 0, sizeof(*s)); + s->realloc_func = realloc_func; + s->realloc_opaque = realloc_opaque; +} + +void bf_context_end(bf_context_t *s) +{ + bf_clear_cache(s); +} + +void bf_init(bf_context_t *s, bf_t *r) +{ + r->ctx = s; + r->sign = 0; + r->expn = BF_EXP_ZERO; + r->len = 0; + r->tab = NULL; +} + +/* return 0 if OK, -1 if alloc error */ +int bf_resize(bf_t *r, limb_t len) +{ + limb_t *tab; + + if (len != r->len) { + tab = bf_realloc(r->ctx, r->tab, len * sizeof(limb_t)); + if (!tab && len != 0) + return -1; + r->tab = tab; + r->len = len; + } + return 0; +} + +/* return 0 or BF_ST_MEM_ERROR */ +int bf_set_ui(bf_t *r, uint64_t a) +{ + r->sign = 0; + if (a == 0) { + r->expn = BF_EXP_ZERO; + bf_resize(r, 0); /* cannot fail */ + } +#if LIMB_BITS == 32 + else if (a <= 0xffffffff) +#else + else +#endif + { + int shift; + if (bf_resize(r, 1)) + goto fail; + shift = clz(a); + r->tab[0] = a << shift; + r->expn = LIMB_BITS - shift; + } +#if LIMB_BITS == 32 + else { + uint32_t a1, a0; + int shift; + if (bf_resize(r, 2)) + goto fail; + a0 = a; + a1 = a >> 32; + shift = clz(a1); + r->tab[0] = a0 << shift; + r->tab[1] = (a1 << shift) | (a0 >> (LIMB_BITS - shift)); + r->expn = 2 * LIMB_BITS - shift; + } +#endif + return 0; + fail: + bf_set_nan(r); + return BF_ST_MEM_ERROR; +} + +/* return 0 or BF_ST_MEM_ERROR */ +int bf_set_si(bf_t *r, int64_t a) +{ + int ret; + + if (a < 0) { + ret = bf_set_ui(r, -a); + r->sign = 1; + } else { + ret = bf_set_ui(r, a); + } + return ret; +} + +void bf_set_nan(bf_t *r) +{ + bf_resize(r, 0); /* cannot fail */ + r->expn = BF_EXP_NAN; + r->sign = 0; +} + +void bf_set_zero(bf_t *r, int is_neg) +{ + bf_resize(r, 0); /* cannot fail */ + r->expn = BF_EXP_ZERO; + r->sign = is_neg; +} + +void bf_set_inf(bf_t *r, int is_neg) +{ + bf_resize(r, 0); /* cannot fail */ + r->expn = BF_EXP_INF; + r->sign = is_neg; +} + +/* return 0 or BF_ST_MEM_ERROR */ +int bf_set(bf_t *r, const bf_t *a) +{ + if (r == a) + return 0; + if (bf_resize(r, a->len)) { + bf_set_nan(r); + return BF_ST_MEM_ERROR; + } + r->sign = a->sign; + r->expn = a->expn; + memcpy(r->tab, a->tab, a->len * sizeof(limb_t)); + return 0; +} + +/* equivalent to bf_set(r, a); bf_delete(a) */ +void bf_move(bf_t *r, bf_t *a) +{ + bf_context_t *s = r->ctx; + if (r == a) + return; + bf_free(s, r->tab); + *r = *a; +} + +static limb_t get_limbz(const bf_t *a, limb_t idx) +{ + if (idx >= a->len) + return 0; + else + return a->tab[idx]; +} + +/* get LIMB_BITS at bit position 'pos' in tab */ +static inline limb_t get_bits(const limb_t *tab, limb_t len, slimb_t pos) +{ + limb_t i, a0, a1; + int p; + + i = pos >> LIMB_LOG2_BITS; + p = pos & (LIMB_BITS - 1); + if (i < len) + a0 = tab[i]; + else + a0 = 0; + if (p == 0) { + return a0; + } else { + i++; + if (i < len) + a1 = tab[i]; + else + a1 = 0; + return (a0 >> p) | (a1 << (LIMB_BITS - p)); + } +} + +static inline limb_t get_bit(const limb_t *tab, limb_t len, slimb_t pos) +{ + slimb_t i; + i = pos >> LIMB_LOG2_BITS; + if (i < 0 || i >= len) + return 0; + return (tab[i] >> (pos & (LIMB_BITS - 1))) & 1; +} + +static inline limb_t limb_mask(int start, int last) +{ + limb_t v; + int n; + n = last - start + 1; + if (n == LIMB_BITS) + v = -1; + else + v = (((limb_t)1 << n) - 1) << start; + return v; +} + +static limb_t mp_scan_nz(const limb_t *tab, mp_size_t n) +{ + mp_size_t i; + for(i = 0; i < n; i++) { + if (tab[i] != 0) + return 1; + } + return 0; +} + +/* return != 0 if one bit between 0 and bit_pos inclusive is not zero. */ +static inline limb_t scan_bit_nz(const bf_t *r, slimb_t bit_pos) +{ + slimb_t pos; + limb_t v; + + pos = bit_pos >> LIMB_LOG2_BITS; + if (pos < 0) + return 0; + v = r->tab[pos] & limb_mask(0, bit_pos & (LIMB_BITS - 1)); + if (v != 0) + return 1; + pos--; + while (pos >= 0) { + if (r->tab[pos] != 0) + return 1; + pos--; + } + return 0; +} + +/* return the addend for rounding. Note that prec can be <= 0 (for + BF_FLAG_RADPNT_PREC) */ +static int bf_get_rnd_add(int *pret, const bf_t *r, limb_t l, + slimb_t prec, int rnd_mode) +{ + int add_one, inexact; + limb_t bit1, bit0; + + if (rnd_mode == BF_RNDF) { + bit0 = 1; /* faithful rounding does not honor the INEXACT flag */ + } else { + /* starting limb for bit 'prec + 1' */ + bit0 = scan_bit_nz(r, l * LIMB_BITS - 1 - bf_max(0, prec + 1)); + } + + /* get the bit at 'prec' */ + bit1 = get_bit(r->tab, l, l * LIMB_BITS - 1 - prec); + inexact = (bit1 | bit0) != 0; + + add_one = 0; + switch(rnd_mode) { + case BF_RNDZ: + break; + case BF_RNDN: + if (bit1) { + if (bit0) { + add_one = 1; + } else { + /* round to even */ + add_one = + get_bit(r->tab, l, l * LIMB_BITS - 1 - (prec - 1)); + } + } + break; + case BF_RNDD: + case BF_RNDU: + if (r->sign == (rnd_mode == BF_RNDD)) + add_one = inexact; + break; + case BF_RNDA: + add_one = inexact; + break; + case BF_RNDNA: + case BF_RNDF: + add_one = bit1; + break; + default: + abort(); + } + + if (inexact) + *pret |= BF_ST_INEXACT; + return add_one; +} + +static int bf_set_overflow(bf_t *r, int sign, limb_t prec, bf_flags_t flags) +{ + slimb_t i, l, e_max; + int rnd_mode; + + rnd_mode = flags & BF_RND_MASK; + if (prec == BF_PREC_INF || + rnd_mode == BF_RNDN || + rnd_mode == BF_RNDNA || + rnd_mode == BF_RNDA || + (rnd_mode == BF_RNDD && sign == 1) || + (rnd_mode == BF_RNDU && sign == 0)) { + bf_set_inf(r, sign); + } else { + /* set to maximum finite number */ + l = (prec + LIMB_BITS - 1) / LIMB_BITS; + if (bf_resize(r, l)) { + bf_set_nan(r); + return BF_ST_MEM_ERROR; + } + r->tab[0] = limb_mask((-prec) & (LIMB_BITS - 1), + LIMB_BITS - 1); + for(i = 1; i < l; i++) + r->tab[i] = (limb_t)-1; + e_max = (limb_t)1 << (bf_get_exp_bits(flags) - 1); + r->expn = e_max; + r->sign = sign; + } + return BF_ST_OVERFLOW | BF_ST_INEXACT; +} + +/* round to prec1 bits assuming 'r' is non zero and finite. 'r' is + assumed to have length 'l' (1 <= l <= r->len). Note: 'prec1' can be + infinite (BF_PREC_INF). 'ret' is 0 or BF_ST_INEXACT if the result + is known to be inexact. Can fail with BF_ST_MEM_ERROR in case of + overflow not returning infinity. */ +static int __bf_round(bf_t *r, limb_t prec1, bf_flags_t flags, limb_t l, + int ret) +{ + limb_t v, a; + int shift, add_one, rnd_mode; + slimb_t i, bit_pos, pos, e_min, e_max, e_range, prec; + + /* e_min and e_max are computed to match the IEEE 754 conventions */ + e_range = (limb_t)1 << (bf_get_exp_bits(flags) - 1); + e_min = -e_range + 3; + e_max = e_range; + + if (flags & BF_FLAG_RADPNT_PREC) { + /* 'prec' is the precision after the radix point */ + if (prec1 != BF_PREC_INF) + prec = r->expn + prec1; + else + prec = prec1; + } else if (unlikely(r->expn < e_min) && (flags & BF_FLAG_SUBNORMAL)) { + /* restrict the precision in case of potentially subnormal + result */ + assert(prec1 != BF_PREC_INF); + prec = prec1 - (e_min - r->expn); + } else { + prec = prec1; + } + + /* round to prec bits */ + rnd_mode = flags & BF_RND_MASK; + add_one = bf_get_rnd_add(&ret, r, l, prec, rnd_mode); + + if (prec <= 0) { + if (add_one) { + bf_resize(r, 1); /* cannot fail */ + r->tab[0] = (limb_t)1 << (LIMB_BITS - 1); + r->expn += 1 - prec; + ret |= BF_ST_UNDERFLOW | BF_ST_INEXACT; + return ret; + } else { + goto underflow; + } + } else if (add_one) { + limb_t carry; + + /* add one starting at digit 'prec - 1' */ + bit_pos = l * LIMB_BITS - 1 - (prec - 1); + pos = bit_pos >> LIMB_LOG2_BITS; + carry = (limb_t)1 << (bit_pos & (LIMB_BITS - 1)); + + for(i = pos; i < l; i++) { + v = r->tab[i] + carry; + carry = (v < carry); + r->tab[i] = v; + if (carry == 0) + break; + } + if (carry) { + /* shift right by one digit */ + v = 1; + for(i = l - 1; i >= pos; i--) { + a = r->tab[i]; + r->tab[i] = (a >> 1) | (v << (LIMB_BITS - 1)); + v = a; + } + r->expn++; + } + } + + /* check underflow */ + if (unlikely(r->expn < e_min)) { + if (flags & BF_FLAG_SUBNORMAL) { + /* if inexact, also set the underflow flag */ + if (ret & BF_ST_INEXACT) + ret |= BF_ST_UNDERFLOW; + } else { + underflow: + ret |= BF_ST_UNDERFLOW | BF_ST_INEXACT; + bf_set_zero(r, r->sign); + return ret; + } + } + + /* check overflow */ + if (unlikely(r->expn > e_max)) + return bf_set_overflow(r, r->sign, prec1, flags); + + /* keep the bits starting at 'prec - 1' */ + bit_pos = l * LIMB_BITS - 1 - (prec - 1); + i = bit_pos >> LIMB_LOG2_BITS; + if (i >= 0) { + shift = bit_pos & (LIMB_BITS - 1); + if (shift != 0) + r->tab[i] &= limb_mask(shift, LIMB_BITS - 1); + } else { + i = 0; + } + /* remove trailing zeros */ + while (r->tab[i] == 0) + i++; + if (i > 0) { + l -= i; + memmove(r->tab, r->tab + i, l * sizeof(limb_t)); + } + bf_resize(r, l); /* cannot fail */ + return ret; +} + +/* 'r' must be a finite number. */ +int bf_normalize_and_round(bf_t *r, limb_t prec1, bf_flags_t flags) +{ + limb_t l, v, a; + int shift, ret; + slimb_t i; + + // bf_print_str("bf_renorm", r); + l = r->len; + while (l > 0 && r->tab[l - 1] == 0) + l--; + if (l == 0) { + /* zero */ + r->expn = BF_EXP_ZERO; + bf_resize(r, 0); /* cannot fail */ + ret = 0; + } else { + r->expn -= (r->len - l) * LIMB_BITS; + /* shift to have the MSB set to '1' */ + v = r->tab[l - 1]; + shift = clz(v); + if (shift != 0) { + v = 0; + for(i = 0; i < l; i++) { + a = r->tab[i]; + r->tab[i] = (a << shift) | (v >> (LIMB_BITS - shift)); + v = a; + } + r->expn -= shift; + } + ret = __bf_round(r, prec1, flags, l, 0); + } + // bf_print_str("r_final", r); + return ret; +} + +/* return true if rounding can be done at precision 'prec' assuming + the exact result r is such that |r-a| <= 2^(EXP(a)-k). */ +/* XXX: check the case where the exponent would be incremented by the + rounding */ +int bf_can_round(const bf_t *a, slimb_t prec, bf_rnd_t rnd_mode, slimb_t k) +{ + BOOL is_rndn; + slimb_t bit_pos, n; + limb_t bit; + + if (a->expn == BF_EXP_INF || a->expn == BF_EXP_NAN) + return FALSE; + if (rnd_mode == BF_RNDF) { + return (k >= (prec + 1)); + } + if (a->expn == BF_EXP_ZERO) + return FALSE; + is_rndn = (rnd_mode == BF_RNDN || rnd_mode == BF_RNDNA); + if (k < (prec + 2)) + return FALSE; + bit_pos = a->len * LIMB_BITS - 1 - prec; + n = k - prec; + /* bit pattern for RNDN or RNDNA: 0111.. or 1000... + for other rounding modes: 000... or 111... + */ + bit = get_bit(a->tab, a->len, bit_pos); + bit_pos--; + n--; + bit ^= is_rndn; + /* XXX: slow, but a few iterations on average */ + while (n != 0) { + if (get_bit(a->tab, a->len, bit_pos) != bit) + return TRUE; + bit_pos--; + n--; + } + return FALSE; +} + +/* Cannot fail with BF_ST_MEM_ERROR. */ +int bf_round(bf_t *r, limb_t prec, bf_flags_t flags) +{ + if (r->len == 0) + return 0; + return __bf_round(r, prec, flags, r->len, 0); +} + +/* for debugging */ +static __maybe_unused void dump_limbs(const char *str, const limb_t *tab, limb_t n) +{ + limb_t i; + printf("%s: len=%" PRId_LIMB "\n", str, n); + for(i = 0; i < n; i++) { + printf("%" PRId_LIMB ": " FMT_LIMB "\n", + i, tab[i]); + } +} + +void mp_print_str(const char *str, const limb_t *tab, limb_t n) +{ + slimb_t i; + printf("%s= 0x", str); + for(i = n - 1; i >= 0; i--) { + if (i != (n - 1)) + printf("_"); + printf(FMT_LIMB, tab[i]); + } + printf("\n"); +} + +static __maybe_unused void mp_print_str_h(const char *str, + const limb_t *tab, limb_t n, + limb_t high) +{ + slimb_t i; + printf("%s= 0x", str); + printf(FMT_LIMB, high); + for(i = n - 1; i >= 0; i--) { + printf("_"); + printf(FMT_LIMB, tab[i]); + } + printf("\n"); +} + +/* for debugging */ +void bf_print_str(const char *str, const bf_t *a) +{ + slimb_t i; + printf("%s=", str); + + if (a->expn == BF_EXP_NAN) { + printf("NaN"); + } else { + if (a->sign) + putchar('-'); + if (a->expn == BF_EXP_ZERO) { + putchar('0'); + } else if (a->expn == BF_EXP_INF) { + printf("Inf"); + } else { + printf("0x0."); + for(i = a->len - 1; i >= 0; i--) + printf(FMT_LIMB, a->tab[i]); + printf("p%" PRId_LIMB, a->expn); + } + } + printf("\n"); +} + +/* compare the absolute value of 'a' and 'b'. Return < 0 if a < b, 0 + if a = b and > 0 otherwise. */ +int bf_cmpu(const bf_t *a, const bf_t *b) +{ + slimb_t i; + limb_t len, v1, v2; + + if (a->expn != b->expn) { + if (a->expn < b->expn) + return -1; + else + return 1; + } + len = bf_max(a->len, b->len); + for(i = len - 1; i >= 0; i--) { + v1 = get_limbz(a, a->len - len + i); + v2 = get_limbz(b, b->len - len + i); + if (v1 != v2) { + if (v1 < v2) + return -1; + else + return 1; + } + } + return 0; +} + +/* Full order: -0 < 0, NaN == NaN and NaN is larger than all other numbers */ +int bf_cmp_full(const bf_t *a, const bf_t *b) +{ + int res; + + if (a->expn == BF_EXP_NAN || b->expn == BF_EXP_NAN) { + if (a->expn == b->expn) + res = 0; + else if (a->expn == BF_EXP_NAN) + res = 1; + else + res = -1; + } else if (a->sign != b->sign) { + res = 1 - 2 * a->sign; + } else { + res = bf_cmpu(a, b); + if (a->sign) + res = -res; + } + return res; +} + +/* Standard floating point comparison: return 2 if one of the operands + is NaN (unordered) or -1, 0, 1 depending on the ordering assuming + -0 == +0 */ +int bf_cmp(const bf_t *a, const bf_t *b) +{ + int res; + + if (a->expn == BF_EXP_NAN || b->expn == BF_EXP_NAN) { + res = 2; + } else if (a->sign != b->sign) { + if (a->expn == BF_EXP_ZERO && b->expn == BF_EXP_ZERO) + res = 0; + else + res = 1 - 2 * a->sign; + } else { + res = bf_cmpu(a, b); + if (a->sign) + res = -res; + } + return res; +} + +/* Compute the number of bits 'n' matching the pattern: + a= X1000..0 + b= X0111..1 + + When computing a-b, the result will have at least n leading zero + bits. + + Precondition: a > b and a.expn - b.expn = 0 or 1 +*/ +static limb_t count_cancelled_bits(const bf_t *a, const bf_t *b) +{ + slimb_t bit_offset, b_offset, n; + int p, p1; + limb_t v1, v2, mask; + + bit_offset = a->len * LIMB_BITS - 1; + b_offset = (b->len - a->len) * LIMB_BITS - (LIMB_BITS - 1) + + a->expn - b->expn; + n = 0; + + /* first search the equals bits */ + for(;;) { + v1 = get_limbz(a, bit_offset >> LIMB_LOG2_BITS); + v2 = get_bits(b->tab, b->len, bit_offset + b_offset); + // printf("v1=" FMT_LIMB " v2=" FMT_LIMB "\n", v1, v2); + if (v1 != v2) + break; + n += LIMB_BITS; + bit_offset -= LIMB_BITS; + } + /* find the position of the first different bit */ + p = clz(v1 ^ v2) + 1; + n += p; + /* then search for '0' in a and '1' in b */ + p = LIMB_BITS - p; + if (p > 0) { + /* search in the trailing p bits of v1 and v2 */ + mask = limb_mask(0, p - 1); + p1 = bf_min(clz(v1 & mask), clz((~v2) & mask)) - (LIMB_BITS - p); + n += p1; + if (p1 != p) + goto done; + } + bit_offset -= LIMB_BITS; + for(;;) { + v1 = get_limbz(a, bit_offset >> LIMB_LOG2_BITS); + v2 = get_bits(b->tab, b->len, bit_offset + b_offset); + // printf("v1=" FMT_LIMB " v2=" FMT_LIMB "\n", v1, v2); + if (v1 != 0 || v2 != -1) { + /* different: count the matching bits */ + p1 = bf_min(clz(v1), clz(~v2)); + n += p1; + break; + } + n += LIMB_BITS; + bit_offset -= LIMB_BITS; + } + done: + return n; +} + +static int bf_add_internal(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags, int b_neg) +{ + const bf_t *tmp; + int is_sub, ret, cmp_res, a_sign, b_sign; + + a_sign = a->sign; + b_sign = b->sign ^ b_neg; + is_sub = a_sign ^ b_sign; + cmp_res = bf_cmpu(a, b); + if (cmp_res < 0) { + tmp = a; + a = b; + b = tmp; + a_sign = b_sign; /* b_sign is never used later */ + } + /* abs(a) >= abs(b) */ + if (cmp_res == 0 && is_sub && a->expn < BF_EXP_INF) { + /* zero result */ + bf_set_zero(r, (flags & BF_RND_MASK) == BF_RNDD); + ret = 0; + } else if (a->len == 0 || b->len == 0) { + ret = 0; + if (a->expn >= BF_EXP_INF) { + if (a->expn == BF_EXP_NAN) { + /* at least one operand is NaN */ + bf_set_nan(r); + } else if (b->expn == BF_EXP_INF && is_sub) { + /* infinities with different signs */ + bf_set_nan(r); + ret = BF_ST_INVALID_OP; + } else { + bf_set_inf(r, a_sign); + } + } else { + /* at least one zero and not subtract */ + bf_set(r, a); + r->sign = a_sign; + goto renorm; + } + } else { + slimb_t d, a_offset, b_bit_offset, i, cancelled_bits; + limb_t carry, v1, v2, u, r_len, carry1, precl, tot_len, z, sub_mask; + + r->sign = a_sign; + r->expn = a->expn; + d = a->expn - b->expn; + /* must add more precision for the leading cancelled bits in + subtraction */ + if (is_sub) { + if (d <= 1) + cancelled_bits = count_cancelled_bits(a, b); + else + cancelled_bits = 1; + } else { + cancelled_bits = 0; + } + + /* add two extra bits for rounding */ + precl = (cancelled_bits + prec + 2 + LIMB_BITS - 1) / LIMB_BITS; + tot_len = bf_max(a->len, b->len + (d + LIMB_BITS - 1) / LIMB_BITS); + r_len = bf_min(precl, tot_len); + if (bf_resize(r, r_len)) + goto fail; + a_offset = a->len - r_len; + b_bit_offset = (b->len - r_len) * LIMB_BITS + d; + + /* compute the bits before for the rounding */ + carry = is_sub; + z = 0; + sub_mask = -is_sub; + i = r_len - tot_len; + while (i < 0) { + slimb_t ap, bp; + BOOL inflag; + + ap = a_offset + i; + bp = b_bit_offset + i * LIMB_BITS; + inflag = FALSE; + if (ap >= 0 && ap < a->len) { + v1 = a->tab[ap]; + inflag = TRUE; + } else { + v1 = 0; + } + if (bp + LIMB_BITS > 0 && bp < (slimb_t)(b->len * LIMB_BITS)) { + v2 = get_bits(b->tab, b->len, bp); + inflag = TRUE; + } else { + v2 = 0; + } + if (!inflag) { + /* outside 'a' and 'b': go directly to the next value + inside a or b so that the running time does not + depend on the exponent difference */ + i = 0; + if (ap < 0) + i = bf_min(i, -a_offset); + /* b_bit_offset + i * LIMB_BITS + LIMB_BITS >= 1 + equivalent to + i >= ceil(-b_bit_offset + 1 - LIMB_BITS) / LIMB_BITS) + */ + if (bp + LIMB_BITS <= 0) + i = bf_min(i, (-b_bit_offset) >> LIMB_LOG2_BITS); + } else { + i++; + } + v2 ^= sub_mask; + u = v1 + v2; + carry1 = u < v1; + u += carry; + carry = (u < carry) | carry1; + z |= u; + } + /* and the result */ + for(i = 0; i < r_len; i++) { + v1 = get_limbz(a, a_offset + i); + v2 = get_bits(b->tab, b->len, b_bit_offset + i * LIMB_BITS); + v2 ^= sub_mask; + u = v1 + v2; + carry1 = u < v1; + u += carry; + carry = (u < carry) | carry1; + r->tab[i] = u; + } + /* set the extra bits for the rounding */ + r->tab[0] |= (z != 0); + + /* carry is only possible in add case */ + if (!is_sub && carry) { + if (bf_resize(r, r_len + 1)) + goto fail; + r->tab[r_len] = 1; + r->expn += LIMB_BITS; + } + renorm: + ret = bf_normalize_and_round(r, prec, flags); + } + return ret; + fail: + bf_set_nan(r); + return BF_ST_MEM_ERROR; +} + +static int __bf_add(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags) +{ + return bf_add_internal(r, a, b, prec, flags, 0); +} + +static int __bf_sub(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags) +{ + return bf_add_internal(r, a, b, prec, flags, 1); +} + +limb_t mp_add(limb_t *res, const limb_t *op1, const limb_t *op2, + limb_t n, limb_t carry) +{ + slimb_t i; + limb_t k, a, v, k1; + + k = carry; + for(i=0;i v; + v = a - k; + k = (v > a) | k1; + res[i] = v; + } + return k; +} + +/* compute 0 - op2 */ +static limb_t mp_neg(limb_t *res, const limb_t *op2, mp_size_t n, limb_t carry) +{ + int i; + limb_t k, a, v, k1; + + k = carry; + for(i=0;i v; + v = a - k; + k = (v > a) | k1; + res[i] = v; + } + return k; +} + +limb_t mp_sub_ui(limb_t *tab, limb_t b, mp_size_t n) +{ + mp_size_t i; + limb_t k, a, v; + + k=b; + for(i=0;i v; + tab[i] = a; + if (k == 0) + break; + } + return k; +} + +/* r = (a + high*B^n) >> shift. Return the remainder r (0 <= r < 2^shift). + 1 <= shift <= LIMB_BITS - 1 */ +static limb_t mp_shr(limb_t *tab_r, const limb_t *tab, mp_size_t n, + int shift, limb_t high) +{ + mp_size_t i; + limb_t l, a; + + assert(shift >= 1 && shift < LIMB_BITS); + l = high; + for(i = n - 1; i >= 0; i--) { + a = tab[i]; + tab_r[i] = (a >> shift) | (l << (LIMB_BITS - shift)); + l = a; + } + return l & (((limb_t)1 << shift) - 1); +} + +/* tabr[] = taba[] * b + l. Return the high carry */ +static limb_t mp_mul1(limb_t *tabr, const limb_t *taba, limb_t n, + limb_t b, limb_t l) +{ + limb_t i; + dlimb_t t; + + for(i = 0; i < n; i++) { + t = (dlimb_t)taba[i] * (dlimb_t)b + l; + tabr[i] = t; + l = t >> LIMB_BITS; + } + return l; +} + +/* tabr[] += taba[] * b, return the high word. */ +static limb_t mp_add_mul1(limb_t *tabr, const limb_t *taba, limb_t n, + limb_t b) +{ + limb_t i, l; + dlimb_t t; + + l = 0; + for(i = 0; i < n; i++) { + t = (dlimb_t)taba[i] * (dlimb_t)b + l + tabr[i]; + tabr[i] = t; + l = t >> LIMB_BITS; + } + return l; +} + +/* size of the result : op1_size + op2_size. */ +static void mp_mul_basecase(limb_t *result, + const limb_t *op1, limb_t op1_size, + const limb_t *op2, limb_t op2_size) +{ + limb_t i, r; + + result[op1_size] = mp_mul1(result, op1, op1_size, op2[0], 0); + for(i=1;i= FFT_MUL_THRESHOLD)) { + bf_t r_s, *r = &r_s; + r->tab = result; + /* XXX: optimize memory usage in API */ + if (fft_mul(s, r, (limb_t *)op1, op1_size, + (limb_t *)op2, op2_size, FFT_MUL_R_NORESIZE)) + return -1; + } else +#endif + { + mp_mul_basecase(result, op1, op1_size, op2, op2_size); + } + return 0; +} + +/* tabr[] -= taba[] * b. Return the value to substract to the high + word. */ +static limb_t mp_sub_mul1(limb_t *tabr, const limb_t *taba, limb_t n, + limb_t b) +{ + limb_t i, l; + dlimb_t t; + + l = 0; + for(i = 0; i < n; i++) { + t = tabr[i] - (dlimb_t)taba[i] * (dlimb_t)b - l; + tabr[i] = t; + l = -(t >> LIMB_BITS); + } + return l; +} + +/* WARNING: d must be >= 2^(LIMB_BITS-1) */ +static inline limb_t udiv1norm_init(limb_t d) +{ + limb_t a0, a1; + a1 = -d - 1; + a0 = -1; + return (((dlimb_t)a1 << LIMB_BITS) | a0) / d; +} + +/* return the quotient and the remainder in '*pr'of 'a1*2^LIMB_BITS+a0 + / d' with 0 <= a1 < d. */ +static inline limb_t udiv1norm(limb_t *pr, limb_t a1, limb_t a0, + limb_t d, limb_t d_inv) +{ + limb_t n1m, n_adj, q, r, ah; + dlimb_t a; + n1m = ((slimb_t)a0 >> (LIMB_BITS - 1)); + n_adj = a0 + (n1m & d); + a = (dlimb_t)d_inv * (a1 - n1m) + n_adj; + q = (a >> LIMB_BITS) + a1; + /* compute a - q * r and update q so that the remainder is\ + between 0 and d - 1 */ + a = ((dlimb_t)a1 << LIMB_BITS) | a0; + a = a - (dlimb_t)q * d - d; + ah = a >> LIMB_BITS; + q += 1 + ah; + r = (limb_t)a + (ah & d); + *pr = r; + return q; +} + +/* b must be >= 1 << (LIMB_BITS - 1) */ +static limb_t mp_div1norm(limb_t *tabr, const limb_t *taba, limb_t n, + limb_t b, limb_t r) +{ + slimb_t i; + + if (n >= UDIV1NORM_THRESHOLD) { + limb_t b_inv; + b_inv = udiv1norm_init(b); + for(i = n - 1; i >= 0; i--) { + tabr[i] = udiv1norm(&r, r, taba[i], b, b_inv); + } + } else { + dlimb_t a1; + for(i = n - 1; i >= 0; i--) { + a1 = ((dlimb_t)r << LIMB_BITS) | taba[i]; + tabr[i] = a1 / b; + r = a1 % b; + } + } + return r; +} + +static int mp_divnorm_large(bf_context_t *s, + limb_t *tabq, limb_t *taba, limb_t na, + const limb_t *tabb, limb_t nb); + +/* base case division: divides taba[0..na-1] by tabb[0..nb-1]. tabb[nb + - 1] must be >= 1 << (LIMB_BITS - 1). na - nb must be >= 0. 'taba' + is modified and contains the remainder (nb limbs). tabq[0..na-nb] + contains the quotient with tabq[na - nb] <= 1. */ +static int mp_divnorm(bf_context_t *s, limb_t *tabq, limb_t *taba, limb_t na, + const limb_t *tabb, limb_t nb) +{ + limb_t r, a, c, q, v, b1, b1_inv, n, dummy_r; + slimb_t i, j; + + b1 = tabb[nb - 1]; + if (nb == 1) { + taba[0] = mp_div1norm(tabq, taba, na, b1, 0); + return 0; + } + n = na - nb; + if (bf_min(n, nb) >= DIVNORM_LARGE_THRESHOLD) { + return mp_divnorm_large(s, tabq, taba, na, tabb, nb); + } + + if (n >= UDIV1NORM_THRESHOLD) + b1_inv = udiv1norm_init(b1); + else + b1_inv = 0; + + /* first iteration: the quotient is only 0 or 1 */ + q = 1; + for(j = nb - 1; j >= 0; j--) { + if (taba[n + j] != tabb[j]) { + if (taba[n + j] < tabb[j]) + q = 0; + break; + } + } + tabq[n] = q; + if (q) { + mp_sub(taba + n, taba + n, tabb, nb, 0); + } + + for(i = n - 1; i >= 0; i--) { + if (unlikely(taba[i + nb] >= b1)) { + q = -1; + } else if (b1_inv) { + q = udiv1norm(&dummy_r, taba[i + nb], taba[i + nb - 1], b1, b1_inv); + } else { + dlimb_t al; + al = ((dlimb_t)taba[i + nb] << LIMB_BITS) | taba[i + nb - 1]; + q = al / b1; + r = al % b1; + } + r = mp_sub_mul1(taba + i, tabb, nb, q); + + v = taba[i + nb]; + a = v - r; + c = (a > v); + taba[i + nb] = a; + + if (c != 0) { + /* negative result */ + for(;;) { + q--; + c = mp_add(taba + i, taba + i, tabb, nb, 0); + /* propagate carry and test if positive result */ + if (c != 0) { + if (++taba[i + nb] == 0) { + break; + } + } + } + } + tabq[i] = q; + } + return 0; +} + +/* compute r=B^(2*n)/a such as a*r < B^(2*n) < a*r + 2 with n >= 1. 'a' + has n limbs with a[n-1] >= B/2 and 'r' has n+1 limbs with r[n] = 1. + + See Modern Computer Arithmetic by Richard P. Brent and Paul + Zimmermann, algorithm 3.5 */ +int mp_recip(bf_context_t *s, limb_t *tabr, const limb_t *taba, limb_t n) +{ + mp_size_t l, h, k, i; + limb_t *tabxh, *tabt, c, *tabu; + + if (n <= 2) { + /* return ceil(B^(2*n)/a) - 1 */ + /* XXX: could avoid allocation */ + tabu = bf_malloc(s, sizeof(limb_t) * (2 * n + 1)); + tabt = bf_malloc(s, sizeof(limb_t) * (n + 2)); + if (!tabt || !tabu) + goto fail; + for(i = 0; i < 2 * n; i++) + tabu[i] = 0; + tabu[2 * n] = 1; + if (mp_divnorm(s, tabt, tabu, 2 * n + 1, taba, n)) + goto fail; + for(i = 0; i < n + 1; i++) + tabr[i] = tabt[i]; + if (mp_scan_nz(tabu, n) == 0) { + /* only happens for a=B^n/2 */ + mp_sub_ui(tabr, 1, n + 1); + } + } else { + l = (n - 1) / 2; + h = n - l; + /* n=2p -> l=p-1, h = p + 1, k = p + 3 + n=2p+1-> l=p, h = p + 1; k = p + 2 + */ + tabt = bf_malloc(s, sizeof(limb_t) * (n + h + 1)); + tabu = bf_malloc(s, sizeof(limb_t) * (n + 2 * h - l + 2)); + if (!tabt || !tabu) + goto fail; + tabxh = tabr + l; + if (mp_recip(s, tabxh, taba + l, h)) + goto fail; + if (mp_mul(s, tabt, taba, n, tabxh, h + 1)) /* n + h + 1 limbs */ + goto fail; + while (tabt[n + h] != 0) { + mp_sub_ui(tabxh, 1, h + 1); + c = mp_sub(tabt, tabt, taba, n, 0); + mp_sub_ui(tabt + n, c, h + 1); + } + /* T = B^(n+h) - T */ + mp_neg(tabt, tabt, n + h + 1, 0); + tabt[n + h]++; + if (mp_mul(s, tabu, tabt + l, n + h + 1 - l, tabxh, h + 1)) + goto fail; + /* n + 2*h - l + 2 limbs */ + k = 2 * h - l; + for(i = 0; i < l; i++) + tabr[i] = tabu[i + k]; + mp_add(tabr + l, tabr + l, tabu + 2 * h, h, 0); + } + bf_free(s, tabt); + bf_free(s, tabu); + return 0; + fail: + bf_free(s, tabt); + bf_free(s, tabu); + return -1; +} + +/* return -1, 0 or 1 */ +static int mp_cmp(const limb_t *taba, const limb_t *tabb, mp_size_t n) +{ + mp_size_t i; + for(i = n - 1; i >= 0; i--) { + if (taba[i] != tabb[i]) { + if (taba[i] < tabb[i]) + return -1; + else + return 1; + } + } + return 0; +} + +//#define DEBUG_DIVNORM_LARGE +//#define DEBUG_DIVNORM_LARGE2 + +/* subquadratic divnorm */ +static int mp_divnorm_large(bf_context_t *s, + limb_t *tabq, limb_t *taba, limb_t na, + const limb_t *tabb, limb_t nb) +{ + limb_t *tabb_inv, nq, *tabt, i, n; + nq = na - nb; +#ifdef DEBUG_DIVNORM_LARGE + printf("na=%d nb=%d nq=%d\n", (int)na, (int)nb, (int)nq); + mp_print_str("a", taba, na); + mp_print_str("b", tabb, nb); +#endif + assert(nq >= 1); + n = nq; + if (nq < nb) + n++; + tabb_inv = bf_malloc(s, sizeof(limb_t) * (n + 1)); + tabt = bf_malloc(s, sizeof(limb_t) * 2 * (n + 1)); + if (!tabb_inv || !tabt) + goto fail; + + if (n >= nb) { + for(i = 0; i < n - nb; i++) + tabt[i] = 0; + for(i = 0; i < nb; i++) + tabt[i + n - nb] = tabb[i]; + } else { + /* truncate B: need to increment it so that the approximate + inverse is smaller that the exact inverse */ + for(i = 0; i < n; i++) + tabt[i] = tabb[i + nb - n]; + if (mp_add_ui(tabt, 1, n)) { + /* tabt = B^n : tabb_inv = B^n */ + memset(tabb_inv, 0, n * sizeof(limb_t)); + tabb_inv[n] = 1; + goto recip_done; + } + } + if (mp_recip(s, tabb_inv, tabt, n)) + goto fail; + recip_done: + /* Q=A*B^-1 */ + if (mp_mul(s, tabt, tabb_inv, n + 1, taba + na - (n + 1), n + 1)) + goto fail; + + for(i = 0; i < nq + 1; i++) + tabq[i] = tabt[i + 2 * (n + 1) - (nq + 1)]; +#ifdef DEBUG_DIVNORM_LARGE + mp_print_str("q", tabq, nq + 1); +#endif + + bf_free(s, tabt); + bf_free(s, tabb_inv); + tabb_inv = NULL; + + /* R=A-B*Q */ + tabt = bf_malloc(s, sizeof(limb_t) * (na + 1)); + if (!tabt) + goto fail; + if (mp_mul(s, tabt, tabq, nq + 1, tabb, nb)) + goto fail; + /* we add one more limb for the result */ + mp_sub(taba, taba, tabt, nb + 1, 0); + bf_free(s, tabt); + /* the approximated quotient is smaller than than the exact one, + hence we may have to increment it */ +#ifdef DEBUG_DIVNORM_LARGE2 + int cnt = 0; + static int cnt_max; +#endif + for(;;) { + if (taba[nb] == 0 && mp_cmp(taba, tabb, nb) < 0) + break; + taba[nb] -= mp_sub(taba, taba, tabb, nb, 0); + mp_add_ui(tabq, 1, nq + 1); +#ifdef DEBUG_DIVNORM_LARGE2 + cnt++; +#endif + } +#ifdef DEBUG_DIVNORM_LARGE2 + if (cnt > cnt_max) { + cnt_max = cnt; + printf("\ncnt=%d nq=%d nb=%d\n", cnt_max, (int)nq, (int)nb); + } +#endif + return 0; + fail: + bf_free(s, tabb_inv); + bf_free(s, tabt); + return -1; +} + +int bf_mul(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags) +{ + int ret, r_sign; + + if (a->len < b->len) { + const bf_t *tmp = a; + a = b; + b = tmp; + } + r_sign = a->sign ^ b->sign; + /* here b->len <= a->len */ + if (b->len == 0) { + if (a->expn == BF_EXP_NAN || b->expn == BF_EXP_NAN) { + bf_set_nan(r); + ret = 0; + } else if (a->expn == BF_EXP_INF || b->expn == BF_EXP_INF) { + if ((a->expn == BF_EXP_INF && b->expn == BF_EXP_ZERO) || + (a->expn == BF_EXP_ZERO && b->expn == BF_EXP_INF)) { + bf_set_nan(r); + ret = BF_ST_INVALID_OP; + } else { + bf_set_inf(r, r_sign); + ret = 0; + } + } else { + bf_set_zero(r, r_sign); + ret = 0; + } + } else { + bf_t tmp, *r1 = NULL; + limb_t a_len, b_len, precl; + limb_t *a_tab, *b_tab; + + a_len = a->len; + b_len = b->len; + + if ((flags & BF_RND_MASK) == BF_RNDF) { + /* faithful rounding does not require using the full inputs */ + precl = (prec + 2 + LIMB_BITS - 1) / LIMB_BITS; + a_len = bf_min(a_len, precl); + b_len = bf_min(b_len, precl); + } + a_tab = a->tab + a->len - a_len; + b_tab = b->tab + b->len - b_len; + +#ifdef USE_FFT_MUL + if (b_len >= FFT_MUL_THRESHOLD) { + int mul_flags = 0; + if (r == a) + mul_flags |= FFT_MUL_R_OVERLAP_A; + if (r == b) + mul_flags |= FFT_MUL_R_OVERLAP_B; + if (fft_mul(r->ctx, r, a_tab, a_len, b_tab, b_len, mul_flags)) + goto fail; + } else +#endif + { + if (r == a || r == b) { + bf_init(r->ctx, &tmp); + r1 = r; + r = &tmp; + } + if (bf_resize(r, a_len + b_len)) { + fail: + bf_set_nan(r); + ret = BF_ST_MEM_ERROR; + goto done; + } + mp_mul_basecase(r->tab, a_tab, a_len, b_tab, b_len); + } + r->sign = r_sign; + r->expn = a->expn + b->expn; + ret = bf_normalize_and_round(r, prec, flags); + done: + if (r == &tmp) + bf_move(r1, &tmp); + } + return ret; +} + +/* multiply 'r' by 2^e */ +int bf_mul_2exp(bf_t *r, slimb_t e, limb_t prec, bf_flags_t flags) +{ + slimb_t e_max; + if (r->len == 0) + return 0; + e_max = ((limb_t)1 << BF_EXT_EXP_BITS_MAX) - 1; + e = bf_max(e, -e_max); + e = bf_min(e, e_max); + r->expn += e; + return __bf_round(r, prec, flags, r->len, 0); +} + +/* Return e such as a=m*2^e with m odd integer. return 0 if a is zero, + Infinite or Nan. */ +slimb_t bf_get_exp_min(const bf_t *a) +{ + slimb_t i; + limb_t v; + int k; + + for(i = 0; i < a->len; i++) { + v = a->tab[i]; + if (v != 0) { + k = ctz(v); + return a->expn - (a->len - i) * LIMB_BITS + k; + } + } + return 0; +} + +/* a and b must be finite numbers with a >= 0 and b > 0. 'q' is the + integer defined as floor(a/b) and r = a - q * b. */ +static void bf_tdivremu(bf_t *q, bf_t *r, + const bf_t *a, const bf_t *b) +{ + if (bf_cmpu(a, b) < 0) { + bf_set_ui(q, 0); + bf_set(r, a); + } else { + bf_div(q, a, b, bf_max(a->expn - b->expn + 1, 2), BF_RNDZ); + bf_rint(q, BF_RNDZ); + bf_mul(r, q, b, BF_PREC_INF, BF_RNDZ); + bf_sub(r, a, r, BF_PREC_INF, BF_RNDZ); + } +} + +static int __bf_div(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags) +{ + bf_context_t *s = r->ctx; + int ret, r_sign; + limb_t n, nb, precl; + + r_sign = a->sign ^ b->sign; + if (a->expn >= BF_EXP_INF || b->expn >= BF_EXP_INF) { + if (a->expn == BF_EXP_NAN || b->expn == BF_EXP_NAN) { + bf_set_nan(r); + return 0; + } else if (a->expn == BF_EXP_INF && b->expn == BF_EXP_INF) { + bf_set_nan(r); + return BF_ST_INVALID_OP; + } else if (a->expn == BF_EXP_INF) { + bf_set_inf(r, r_sign); + return 0; + } else { + bf_set_zero(r, r_sign); + return 0; + } + } else if (a->expn == BF_EXP_ZERO) { + if (b->expn == BF_EXP_ZERO) { + bf_set_nan(r); + return BF_ST_INVALID_OP; + } else { + bf_set_zero(r, r_sign); + return 0; + } + } else if (b->expn == BF_EXP_ZERO) { + bf_set_inf(r, r_sign); + return BF_ST_DIVIDE_ZERO; + } + + /* number of limbs of the quotient (2 extra bits for rounding) */ + precl = (prec + 2 + LIMB_BITS - 1) / LIMB_BITS; + nb = b->len; + n = bf_max(a->len, precl); + + { + limb_t *taba, na; + slimb_t d; + + na = n + nb; + taba = bf_malloc(s, (na + 1) * sizeof(limb_t)); + if (!taba) + goto fail; + d = na - a->len; + memset(taba, 0, d * sizeof(limb_t)); + memcpy(taba + d, a->tab, a->len * sizeof(limb_t)); + if (bf_resize(r, n + 1)) + goto fail1; + if (mp_divnorm(s, r->tab, taba, na, b->tab, nb)) { + fail1: + bf_free(s, taba); + goto fail; + } + /* see if non zero remainder */ + if (mp_scan_nz(taba, nb)) + r->tab[0] |= 1; + bf_free(r->ctx, taba); + r->expn = a->expn - b->expn + LIMB_BITS; + r->sign = r_sign; + ret = bf_normalize_and_round(r, prec, flags); + } + return ret; + fail: + bf_set_nan(r); + return BF_ST_MEM_ERROR; +} + +/* division and remainder. + + rnd_mode is the rounding mode for the quotient. The additional + rounding mode BF_RND_EUCLIDIAN is supported. + + 'q' is an integer. 'r' is rounded with prec and flags (prec can be + BF_PREC_INF). +*/ +int bf_divrem(bf_t *q, bf_t *r, const bf_t *a, const bf_t *b, + limb_t prec, bf_flags_t flags, int rnd_mode) +{ + bf_t a1_s, *a1 = &a1_s; + bf_t b1_s, *b1 = &b1_s; + int q_sign, ret; + BOOL is_ceil, is_rndn; + + assert(q != a && q != b); + assert(r != a && r != b); + assert(q != r); + + if (a->len == 0 || b->len == 0) { + bf_set_zero(q, 0); + if (a->expn == BF_EXP_NAN || b->expn == BF_EXP_NAN) { + bf_set_nan(r); + return 0; + } else if (a->expn == BF_EXP_INF || b->expn == BF_EXP_ZERO) { + bf_set_nan(r); + return BF_ST_INVALID_OP; + } else { + bf_set(r, a); + return bf_round(r, prec, flags); + } + } + + q_sign = a->sign ^ b->sign; + is_rndn = (rnd_mode == BF_RNDN || rnd_mode == BF_RNDNA); + switch(rnd_mode) { + default: + case BF_RNDZ: + case BF_RNDN: + case BF_RNDNA: + is_ceil = FALSE; + break; + case BF_RNDD: + is_ceil = q_sign; + break; + case BF_RNDU: + is_ceil = q_sign ^ 1; + break; + case BF_RNDA: + is_ceil = TRUE; + break; + case BF_DIVREM_EUCLIDIAN: + is_ceil = a->sign; + break; + } + + a1->expn = a->expn; + a1->tab = a->tab; + a1->len = a->len; + a1->sign = 0; + + b1->expn = b->expn; + b1->tab = b->tab; + b1->len = b->len; + b1->sign = 0; + + /* XXX: could improve to avoid having a large 'q' */ + bf_tdivremu(q, r, a1, b1); + if (bf_is_nan(q) || bf_is_nan(r)) + goto fail; + + if (r->len != 0) { + if (is_rndn) { + int res; + b1->expn--; + res = bf_cmpu(r, b1); + b1->expn++; + if (res > 0 || + (res == 0 && + (rnd_mode == BF_RNDNA || + get_bit(q->tab, q->len, q->len * LIMB_BITS - q->expn)))) { + goto do_sub_r; + } + } else if (is_ceil) { + do_sub_r: + ret = bf_add_si(q, q, 1, BF_PREC_INF, BF_RNDZ); + ret |= bf_sub(r, r, b1, BF_PREC_INF, BF_RNDZ); + if (ret & BF_ST_MEM_ERROR) + goto fail; + } + } + + r->sign ^= a->sign; + q->sign = q_sign; + return bf_round(r, prec, flags); + fail: + bf_set_nan(q); + bf_set_nan(r); + return BF_ST_MEM_ERROR; +} + +int bf_rem(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags, int rnd_mode) +{ + bf_t q_s, *q = &q_s; + int ret; + + bf_init(r->ctx, q); + ret = bf_divrem(q, r, a, b, prec, flags, rnd_mode); + bf_delete(q); + return ret; +} + +static inline int bf_get_limb(slimb_t *pres, const bf_t *a, int flags) +{ +#if LIMB_BITS == 32 + return bf_get_int32(pres, a, flags); +#else + return bf_get_int64(pres, a, flags); +#endif +} + +int bf_remquo(slimb_t *pq, bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags, int rnd_mode) +{ + bf_t q_s, *q = &q_s; + int ret; + + bf_init(r->ctx, q); + ret = bf_divrem(q, r, a, b, prec, flags, rnd_mode); + bf_get_limb(pq, q, BF_GET_INT_MOD); + bf_delete(q); + return ret; +} + +static __maybe_unused inline limb_t mul_mod(limb_t a, limb_t b, limb_t m) +{ + dlimb_t t; + t = (dlimb_t)a * (dlimb_t)b; + return t % m; +} + +#if defined(USE_MUL_CHECK) +static limb_t mp_mod1(const limb_t *tab, limb_t n, limb_t m, limb_t r) +{ + slimb_t i; + dlimb_t t; + + for(i = n - 1; i >= 0; i--) { + t = ((dlimb_t)r << LIMB_BITS) | tab[i]; + r = t % m; + } + return r; +} +#endif + +static const uint16_t sqrt_table[192] = { +128,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,144,145,146,147,148,149,150,150,151,152,153,154,155,155,156,157,158,159,160,160,161,162,163,163,164,165,166,167,167,168,169,170,170,171,172,173,173,174,175,176,176,177,178,178,179,180,181,181,182,183,183,184,185,185,186,187,187,188,189,189,190,191,192,192,193,193,194,195,195,196,197,197,198,199,199,200,201,201,202,203,203,204,204,205,206,206,207,208,208,209,209,210,211,211,212,212,213,214,214,215,215,216,217,217,218,218,219,219,220,221,221,222,222,223,224,224,225,225,226,226,227,227,228,229,229,230,230,231,231,232,232,233,234,234,235,235,236,236,237,237,238,238,239,240,240,241,241,242,242,243,243,244,244,245,245,246,246,247,247,248,248,249,249,250,250,251,251,252,252,253,253,254,254,255, +}; + +/* a >= 2^(LIMB_BITS - 2). Return (s, r) with s=floor(sqrt(a)) and + r=a-s^2. 0 <= r <= 2 * s */ +static limb_t mp_sqrtrem1(limb_t *pr, limb_t a) +{ + limb_t s1, r1, s, r, q, u, num; + + /* use a table for the 16 -> 8 bit sqrt */ + s1 = sqrt_table[(a >> (LIMB_BITS - 8)) - 64]; + r1 = (a >> (LIMB_BITS - 16)) - s1 * s1; + if (r1 > 2 * s1) { + r1 -= 2 * s1 + 1; + s1++; + } + + /* one iteration to get a 32 -> 16 bit sqrt */ + num = (r1 << 8) | ((a >> (LIMB_BITS - 32 + 8)) & 0xff); + q = num / (2 * s1); /* q <= 2^8 */ + u = num % (2 * s1); + s = (s1 << 8) + q; + r = (u << 8) | ((a >> (LIMB_BITS - 32)) & 0xff); + r -= q * q; + if ((slimb_t)r < 0) { + s--; + r += 2 * s + 1; + } + +#if LIMB_BITS == 64 + s1 = s; + r1 = r; + /* one more iteration for 64 -> 32 bit sqrt */ + num = (r1 << 16) | ((a >> (LIMB_BITS - 64 + 16)) & 0xffff); + q = num / (2 * s1); /* q <= 2^16 */ + u = num % (2 * s1); + s = (s1 << 16) + q; + r = (u << 16) | ((a >> (LIMB_BITS - 64)) & 0xffff); + r -= q * q; + if ((slimb_t)r < 0) { + s--; + r += 2 * s + 1; + } +#endif + *pr = r; + return s; +} + +/* return floor(sqrt(a)) */ +limb_t bf_isqrt(limb_t a) +{ + limb_t s, r; + int k; + + if (a == 0) + return 0; + k = clz(a) & ~1; + s = mp_sqrtrem1(&r, a << k); + s >>= (k >> 1); + return s; +} + +static limb_t mp_sqrtrem2(limb_t *tabs, limb_t *taba) +{ + limb_t s1, r1, s, q, u, a0, a1; + dlimb_t r, num; + int l; + + a0 = taba[0]; + a1 = taba[1]; + s1 = mp_sqrtrem1(&r1, a1); + l = LIMB_BITS / 2; + num = ((dlimb_t)r1 << l) | (a0 >> l); + q = num / (2 * s1); + u = num % (2 * s1); + s = (s1 << l) + q; + r = ((dlimb_t)u << l) | (a0 & (((limb_t)1 << l) - 1)); + if (unlikely((q >> l) != 0)) + r -= (dlimb_t)1 << LIMB_BITS; /* special case when q=2^l */ + else + r -= q * q; + if ((slimb_t)(r >> LIMB_BITS) < 0) { + s--; + r += 2 * (dlimb_t)s + 1; + } + tabs[0] = s; + taba[0] = r; + return r >> LIMB_BITS; +} + +//#define DEBUG_SQRTREM + +/* tmp_buf must contain (n / 2 + 1 limbs). *prh contains the highest + limb of the remainder. */ +static int mp_sqrtrem_rec(bf_context_t *s, limb_t *tabs, limb_t *taba, limb_t n, + limb_t *tmp_buf, limb_t *prh) +{ + limb_t l, h, rh, ql, qh, c, i; + + if (n == 1) { + *prh = mp_sqrtrem2(tabs, taba); + return 0; + } +#ifdef DEBUG_SQRTREM + mp_print_str("a", taba, 2 * n); +#endif + l = n / 2; + h = n - l; + if (mp_sqrtrem_rec(s, tabs + l, taba + 2 * l, h, tmp_buf, &qh)) + return -1; +#ifdef DEBUG_SQRTREM + mp_print_str("s1", tabs + l, h); + mp_print_str_h("r1", taba + 2 * l, h, qh); + mp_print_str_h("r2", taba + l, n, qh); +#endif + + /* the remainder is in taba + 2 * l. Its high bit is in qh */ + if (qh) { + mp_sub(taba + 2 * l, taba + 2 * l, tabs + l, h, 0); + } + /* instead of dividing by 2*s, divide by s (which is normalized) + and update q and r */ + if (mp_divnorm(s, tmp_buf, taba + l, n, tabs + l, h)) + return -1; + qh += tmp_buf[l]; + for(i = 0; i < l; i++) + tabs[i] = tmp_buf[i]; + ql = mp_shr(tabs, tabs, l, 1, qh & 1); + qh = qh >> 1; /* 0 or 1 */ + if (ql) + rh = mp_add(taba + l, taba + l, tabs + l, h, 0); + else + rh = 0; +#ifdef DEBUG_SQRTREM + mp_print_str_h("q", tabs, l, qh); + mp_print_str_h("u", taba + l, h, rh); +#endif + + mp_add_ui(tabs + l, qh, h); +#ifdef DEBUG_SQRTREM + mp_print_str_h("s2", tabs, n, sh); +#endif + + /* q = qh, tabs[l - 1 ... 0], r = taba[n - 1 ... l] */ + /* subtract q^2. if qh = 1 then q = B^l, so we can take shortcuts */ + if (qh) { + c = qh; + } else { + if (mp_mul(s, taba + n, tabs, l, tabs, l)) + return -1; + c = mp_sub(taba, taba, taba + n, 2 * l, 0); + } + rh -= mp_sub_ui(taba + 2 * l, c, n - 2 * l); + if ((slimb_t)rh < 0) { + mp_sub_ui(tabs, 1, n); + rh += mp_add_mul1(taba, tabs, n, 2); + rh += mp_add_ui(taba, 1, n); + } + *prh = rh; + return 0; +} + +/* 'taba' has 2*n limbs with n >= 1 and taba[2*n-1] >= 2 ^ (LIMB_BITS + - 2). Return (s, r) with s=floor(sqrt(a)) and r=a-s^2. 0 <= r <= 2 + * s. tabs has n limbs. r is returned in the lower n limbs of + taba. Its r[n] is the returned value of the function. */ +/* Algorithm from the article "Karatsuba Square Root" by Paul Zimmermann and + inspirated from its GMP implementation */ +int mp_sqrtrem(bf_context_t *s, limb_t *tabs, limb_t *taba, limb_t n) +{ + limb_t tmp_buf1[8]; + limb_t *tmp_buf; + mp_size_t n2; + int ret; + n2 = n / 2 + 1; + if (n2 <= countof(tmp_buf1)) { + tmp_buf = tmp_buf1; + } else { + tmp_buf = bf_malloc(s, sizeof(limb_t) * n2); + if (!tmp_buf) + return -1; + } + ret = mp_sqrtrem_rec(s, tabs, taba, n, tmp_buf, taba + n); + if (tmp_buf != tmp_buf1) + bf_free(s, tmp_buf); + return ret; +} + +/* Integer square root with remainder. 'a' must be an integer. r = + floor(sqrt(a)) and rem = a - r^2. BF_ST_INEXACT is set if the result + is inexact. 'rem' can be NULL if the remainder is not needed. */ +int bf_sqrtrem(bf_t *r, bf_t *rem1, const bf_t *a) +{ + int ret; + + if (a->len == 0) { + if (a->expn == BF_EXP_NAN) { + bf_set_nan(r); + } else if (a->expn == BF_EXP_INF && a->sign) { + goto invalid_op; + } else { + bf_set(r, a); + } + if (rem1) + bf_set_ui(rem1, 0); + ret = 0; + } else if (a->sign) { + invalid_op: + bf_set_nan(r); + if (rem1) + bf_set_ui(rem1, 0); + ret = BF_ST_INVALID_OP; + } else { + bf_t rem_s, *rem; + + bf_sqrt(r, a, (a->expn + 1) / 2, BF_RNDZ); + bf_rint(r, BF_RNDZ); + /* see if the result is exact by computing the remainder */ + if (rem1) { + rem = rem1; + } else { + rem = &rem_s; + bf_init(r->ctx, rem); + } + /* XXX: could avoid recomputing the remainder */ + bf_mul(rem, r, r, BF_PREC_INF, BF_RNDZ); + bf_neg(rem); + bf_add(rem, rem, a, BF_PREC_INF, BF_RNDZ); + if (bf_is_nan(rem)) { + ret = BF_ST_MEM_ERROR; + goto done; + } + if (rem->len != 0) { + ret = BF_ST_INEXACT; + } else { + ret = 0; + } + done: + if (!rem1) + bf_delete(rem); + } + return ret; +} + +int bf_sqrt(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) +{ + bf_context_t *s = a->ctx; + int ret; + + assert(r != a); + + if (a->len == 0) { + if (a->expn == BF_EXP_NAN) { + bf_set_nan(r); + } else if (a->expn == BF_EXP_INF && a->sign) { + goto invalid_op; + } else { + bf_set(r, a); + } + ret = 0; + } else if (a->sign) { + invalid_op: + bf_set_nan(r); + ret = BF_ST_INVALID_OP; + } else { + limb_t *a1; + slimb_t n, n1; + limb_t res; + + /* convert the mantissa to an integer with at least 2 * + prec + 4 bits */ + n = (2 * (prec + 2) + 2 * LIMB_BITS - 1) / (2 * LIMB_BITS); + if (bf_resize(r, n)) + goto fail; + a1 = bf_malloc(s, sizeof(limb_t) * 2 * n); + if (!a1) + goto fail; + n1 = bf_min(2 * n, a->len); + memset(a1, 0, (2 * n - n1) * sizeof(limb_t)); + memcpy(a1 + 2 * n - n1, a->tab + a->len - n1, n1 * sizeof(limb_t)); + if (a->expn & 1) { + res = mp_shr(a1, a1, 2 * n, 1, 0); + } else { + res = 0; + } + if (mp_sqrtrem(s, r->tab, a1, n)) { + bf_free(s, a1); + goto fail; + } + if (!res) { + res = mp_scan_nz(a1, n + 1); + } + bf_free(s, a1); + if (!res) { + res = mp_scan_nz(a->tab, a->len - n1); + } + if (res != 0) + r->tab[0] |= 1; + r->sign = 0; + r->expn = (a->expn + 1) >> 1; + ret = bf_round(r, prec, flags); + } + return ret; + fail: + bf_set_nan(r); + return BF_ST_MEM_ERROR; +} + +static no_inline int bf_op2(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags, bf_op2_func_t *func) +{ + bf_t tmp; + int ret; + + if (r == a || r == b) { + bf_init(r->ctx, &tmp); + ret = func(&tmp, a, b, prec, flags); + bf_move(r, &tmp); + } else { + ret = func(r, a, b, prec, flags); + } + return ret; +} + +int bf_add(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags) +{ + return bf_op2(r, a, b, prec, flags, __bf_add); +} + +int bf_sub(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags) +{ + return bf_op2(r, a, b, prec, flags, __bf_sub); +} + +int bf_div(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags) +{ + return bf_op2(r, a, b, prec, flags, __bf_div); +} + +int bf_mul_ui(bf_t *r, const bf_t *a, uint64_t b1, limb_t prec, + bf_flags_t flags) +{ + bf_t b; + int ret; + bf_init(r->ctx, &b); + ret = bf_set_ui(&b, b1); + ret |= bf_mul(r, a, &b, prec, flags); + bf_delete(&b); + return ret; +} + +int bf_mul_si(bf_t *r, const bf_t *a, int64_t b1, limb_t prec, + bf_flags_t flags) +{ + bf_t b; + int ret; + bf_init(r->ctx, &b); + ret = bf_set_si(&b, b1); + ret |= bf_mul(r, a, &b, prec, flags); + bf_delete(&b); + return ret; +} + +int bf_add_si(bf_t *r, const bf_t *a, int64_t b1, limb_t prec, + bf_flags_t flags) +{ + bf_t b; + int ret; + + bf_init(r->ctx, &b); + ret = bf_set_si(&b, b1); + ret |= bf_add(r, a, &b, prec, flags); + bf_delete(&b); + return ret; +} + +static int bf_pow_ui(bf_t *r, const bf_t *a, limb_t b, limb_t prec, + bf_flags_t flags) +{ + int ret, n_bits, i; + + assert(r != a); + if (b == 0) + return bf_set_ui(r, 1); + ret = bf_set(r, a); + n_bits = LIMB_BITS - clz(b); + for(i = n_bits - 2; i >= 0; i--) { + ret |= bf_mul(r, r, r, prec, flags); + if ((b >> i) & 1) + ret |= bf_mul(r, r, a, prec, flags); + } + return ret; +} + +static int bf_pow_ui_ui(bf_t *r, limb_t a1, limb_t b, + limb_t prec, bf_flags_t flags) +{ + bf_t a; + int ret; + + if (a1 == 10 && b <= LIMB_DIGITS) { + /* use precomputed powers. We do not round at this point + because we expect the caller to do it */ + ret = bf_set_ui(r, mp_pow_dec[b]); + } else { + bf_init(r->ctx, &a); + ret = bf_set_ui(&a, a1); + ret |= bf_pow_ui(r, &a, b, prec, flags); + bf_delete(&a); + } + return ret; +} + +/* convert to integer (infinite precision) */ +int bf_rint(bf_t *r, int rnd_mode) +{ + return bf_round(r, 0, rnd_mode | BF_FLAG_RADPNT_PREC); +} + +/* logical operations */ +#define BF_LOGIC_OR 0 +#define BF_LOGIC_XOR 1 +#define BF_LOGIC_AND 2 + +static inline limb_t bf_logic_op1(limb_t a, limb_t b, int op) +{ + switch(op) { + case BF_LOGIC_OR: + return a | b; + case BF_LOGIC_XOR: + return a ^ b; + default: + case BF_LOGIC_AND: + return a & b; + } +} + +static int bf_logic_op(bf_t *r, const bf_t *a1, const bf_t *b1, int op) +{ + bf_t b1_s, a1_s, *a, *b; + limb_t a_sign, b_sign, r_sign; + slimb_t l, i, a_bit_offset, b_bit_offset; + limb_t v1, v2, v1_mask, v2_mask, r_mask; + int ret; + + assert(r != a1 && r != b1); + + if (a1->expn <= 0) + a_sign = 0; /* minus zero is considered as positive */ + else + a_sign = a1->sign; + + if (b1->expn <= 0) + b_sign = 0; /* minus zero is considered as positive */ + else + b_sign = b1->sign; + + if (a_sign) { + a = &a1_s; + bf_init(r->ctx, a); + if (bf_add_si(a, a1, 1, BF_PREC_INF, BF_RNDZ)) { + b = NULL; + goto fail; + } + } else { + a = (bf_t *)a1; + } + + if (b_sign) { + b = &b1_s; + bf_init(r->ctx, b); + if (bf_add_si(b, b1, 1, BF_PREC_INF, BF_RNDZ)) + goto fail; + } else { + b = (bf_t *)b1; + } + + r_sign = bf_logic_op1(a_sign, b_sign, op); + if (op == BF_LOGIC_AND && r_sign == 0) { + /* no need to compute extra zeros for and */ + if (a_sign == 0 && b_sign == 0) + l = bf_min(a->expn, b->expn); + else if (a_sign == 0) + l = a->expn; + else + l = b->expn; + } else { + l = bf_max(a->expn, b->expn); + } + /* Note: a or b can be zero */ + l = (bf_max(l, 1) + LIMB_BITS - 1) / LIMB_BITS; + if (bf_resize(r, l)) + goto fail; + a_bit_offset = a->len * LIMB_BITS - a->expn; + b_bit_offset = b->len * LIMB_BITS - b->expn; + v1_mask = -a_sign; + v2_mask = -b_sign; + r_mask = -r_sign; + for(i = 0; i < l; i++) { + v1 = get_bits(a->tab, a->len, a_bit_offset + i * LIMB_BITS) ^ v1_mask; + v2 = get_bits(b->tab, b->len, b_bit_offset + i * LIMB_BITS) ^ v2_mask; + r->tab[i] = bf_logic_op1(v1, v2, op) ^ r_mask; + } + r->expn = l * LIMB_BITS; + r->sign = r_sign; + bf_normalize_and_round(r, BF_PREC_INF, BF_RNDZ); /* cannot fail */ + if (r_sign) { + if (bf_add_si(r, r, -1, BF_PREC_INF, BF_RNDZ)) + goto fail; + } + ret = 0; + done: + if (a == &a1_s) + bf_delete(a); + if (b == &b1_s) + bf_delete(b); + return ret; + fail: + bf_set_nan(r); + ret = BF_ST_MEM_ERROR; + goto done; +} + +/* 'a' and 'b' must be integers. Return 0 or BF_ST_MEM_ERROR. */ +int bf_logic_or(bf_t *r, const bf_t *a, const bf_t *b) +{ + return bf_logic_op(r, a, b, BF_LOGIC_OR); +} + +/* 'a' and 'b' must be integers. Return 0 or BF_ST_MEM_ERROR. */ +int bf_logic_xor(bf_t *r, const bf_t *a, const bf_t *b) +{ + return bf_logic_op(r, a, b, BF_LOGIC_XOR); +} + +/* 'a' and 'b' must be integers. Return 0 or BF_ST_MEM_ERROR. */ +int bf_logic_and(bf_t *r, const bf_t *a, const bf_t *b) +{ + return bf_logic_op(r, a, b, BF_LOGIC_AND); +} + +/* conversion between fixed size types */ + +typedef union { + double d; + uint64_t u; +} Float64Union; + +int bf_get_float64(const bf_t *a, double *pres, bf_rnd_t rnd_mode) +{ + Float64Union u; + int e, ret; + uint64_t m; + + ret = 0; + if (a->expn == BF_EXP_NAN) { + u.u = 0x7ff8000000000000; /* quiet nan */ + } else { + bf_t b_s, *b = &b_s; + + bf_init(a->ctx, b); + bf_set(b, a); + if (bf_is_finite(b)) { + ret = bf_round(b, 53, rnd_mode | BF_FLAG_SUBNORMAL | bf_set_exp_bits(11)); + } + if (b->expn == BF_EXP_INF) { + e = (1 << 11) - 1; + m = 0; + } else if (b->expn == BF_EXP_ZERO) { + e = 0; + m = 0; + } else { + e = b->expn + 1023 - 1; +#if LIMB_BITS == 32 + if (b->len == 2) { + m = ((uint64_t)b->tab[1] << 32) | b->tab[0]; + } else { + m = ((uint64_t)b->tab[0] << 32); + } +#else + m = b->tab[0]; +#endif + if (e <= 0) { + /* subnormal */ + m = m >> (12 - e); + e = 0; + } else { + m = (m << 1) >> 12; + } + } + u.u = m | ((uint64_t)e << 52) | ((uint64_t)b->sign << 63); + bf_delete(b); + } + *pres = u.d; + return ret; +} + +int bf_set_float64(bf_t *a, double d) +{ + Float64Union u; + uint64_t m; + int shift, e, sgn; + + u.d = d; + sgn = u.u >> 63; + e = (u.u >> 52) & ((1 << 11) - 1); + m = u.u & (((uint64_t)1 << 52) - 1); + if (e == ((1 << 11) - 1)) { + if (m != 0) { + bf_set_nan(a); + } else { + bf_set_inf(a, sgn); + } + } else if (e == 0) { + if (m == 0) { + bf_set_zero(a, sgn); + } else { + /* subnormal number */ + m <<= 12; + shift = clz64(m); + m <<= shift; + e = -shift; + goto norm; + } + } else { + m = (m << 11) | ((uint64_t)1 << 63); + norm: + a->expn = e - 1023 + 1; +#if LIMB_BITS == 32 + if (bf_resize(a, 2)) + goto fail; + a->tab[0] = m; + a->tab[1] = m >> 32; +#else + if (bf_resize(a, 1)) + goto fail; + a->tab[0] = m; +#endif + a->sign = sgn; + } + return 0; +fail: + bf_set_nan(a); + return BF_ST_MEM_ERROR; +} + +/* The rounding mode is always BF_RNDZ. Return BF_ST_INVALID_OP if there + is an overflow and 0 otherwise. */ +int bf_get_int32(int *pres, const bf_t *a, int flags) +{ + uint32_t v; + int ret; + if (a->expn >= BF_EXP_INF) { + ret = BF_ST_INVALID_OP; + if (flags & BF_GET_INT_MOD) { + v = 0; + } else if (a->expn == BF_EXP_INF) { + v = (uint32_t)INT32_MAX + a->sign; + } else { + v = INT32_MAX; + } + } else if (a->expn <= 0) { + v = 0; + ret = 0; + } else if (a->expn <= 31) { + v = a->tab[a->len - 1] >> (LIMB_BITS - a->expn); + if (a->sign) + v = -v; + ret = 0; + } else if (!(flags & BF_GET_INT_MOD)) { + ret = BF_ST_INVALID_OP; + if (a->sign) { + v = (uint32_t)INT32_MAX + 1; + if (a->expn == 32 && + (a->tab[a->len - 1] >> (LIMB_BITS - 32)) == v) { + ret = 0; + } + } else { + v = INT32_MAX; + } + } else { + v = get_bits(a->tab, a->len, a->len * LIMB_BITS - a->expn); + if (a->sign) + v = -v; + ret = 0; + } + *pres = v; + return ret; +} + +/* The rounding mode is always BF_RNDZ. Return BF_ST_INVALID_OP if there + is an overflow and 0 otherwise. */ +int bf_get_int64(int64_t *pres, const bf_t *a, int flags) +{ + uint64_t v; + int ret; + if (a->expn >= BF_EXP_INF) { + ret = BF_ST_INVALID_OP; + if (flags & BF_GET_INT_MOD) { + v = 0; + } else if (a->expn == BF_EXP_INF) { + v = (uint64_t)INT64_MAX + a->sign; + } else { + v = INT64_MAX; + } + } else if (a->expn <= 0) { + v = 0; + ret = 0; + } else if (a->expn <= 63) { +#if LIMB_BITS == 32 + if (a->expn <= 32) + v = a->tab[a->len - 1] >> (LIMB_BITS - a->expn); + else + v = (((uint64_t)a->tab[a->len - 1] << 32) | + get_limbz(a, a->len - 2)) >> (64 - a->expn); +#else + v = a->tab[a->len - 1] >> (LIMB_BITS - a->expn); +#endif + if (a->sign) + v = -v; + ret = 0; + } else if (!(flags & BF_GET_INT_MOD)) { + ret = BF_ST_INVALID_OP; + if (a->sign) { + uint64_t v1; + v = (uint64_t)INT64_MAX + 1; + if (a->expn == 64) { + v1 = a->tab[a->len - 1]; +#if LIMB_BITS == 32 + v1 = (v1 << 32) | get_limbz(a, a->len - 2); +#endif + if (v1 == v) + ret = 0; + } + } else { + v = INT64_MAX; + } + } else { + slimb_t bit_pos = a->len * LIMB_BITS - a->expn; + v = get_bits(a->tab, a->len, bit_pos); +#if LIMB_BITS == 32 + v |= (uint64_t)get_bits(a->tab, a->len, bit_pos + 32) << 32; +#endif + if (a->sign) + v = -v; + ret = 0; + } + *pres = v; + return ret; +} + +/* The rounding mode is always BF_RNDZ. Return BF_ST_INVALID_OP if there + is an overflow and 0 otherwise. */ +int bf_get_uint64(uint64_t *pres, const bf_t *a) +{ + uint64_t v; + int ret; + if (a->expn == BF_EXP_NAN) { + goto overflow; + } else if (a->expn <= 0) { + v = 0; + ret = 0; + } else if (a->sign) { + v = 0; + ret = BF_ST_INVALID_OP; + } else if (a->expn <= 64) { +#if LIMB_BITS == 32 + if (a->expn <= 32) + v = a->tab[a->len - 1] >> (LIMB_BITS - a->expn); + else + v = (((uint64_t)a->tab[a->len - 1] << 32) | + get_limbz(a, a->len - 2)) >> (64 - a->expn); +#else + v = a->tab[a->len - 1] >> (LIMB_BITS - a->expn); +#endif + ret = 0; + } else { + overflow: + v = UINT64_MAX; + ret = BF_ST_INVALID_OP; + } + *pres = v; + return ret; +} + +/* base conversion from radix */ + +static const uint8_t digits_per_limb_table[BF_RADIX_MAX - 1] = { +#if LIMB_BITS == 32 +32,20,16,13,12,11,10,10, 9, 9, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, +#else +64,40,32,27,24,22,21,20,19,18,17,17,16,16,16,15,15,15,14,14,14,14,13,13,13,13,13,13,13,12,12,12,12,12,12, +#endif +}; + +static limb_t get_limb_radix(int radix) +{ + int i, k; + limb_t radixl; + + k = digits_per_limb_table[radix - 2]; + radixl = radix; + for(i = 1; i < k; i++) + radixl *= radix; + return radixl; +} + +/* return != 0 if error */ +static int bf_integer_from_radix_rec(bf_t *r, const limb_t *tab, + limb_t n, int level, limb_t n0, + limb_t radix, bf_t *pow_tab) +{ + int ret; + if (n == 1) { + ret = bf_set_ui(r, tab[0]); + } else { + bf_t T_s, *T = &T_s, *B; + limb_t n1, n2; + + n2 = (((n0 * 2) >> (level + 1)) + 1) / 2; + n1 = n - n2; + // printf("level=%d n0=%ld n1=%ld n2=%ld\n", level, n0, n1, n2); + B = &pow_tab[level]; + if (B->len == 0) { + ret = bf_pow_ui_ui(B, radix, n2, BF_PREC_INF, BF_RNDZ); + if (ret) + return ret; + } + ret = bf_integer_from_radix_rec(r, tab + n2, n1, level + 1, n0, + radix, pow_tab); + if (ret) + return ret; + ret = bf_mul(r, r, B, BF_PREC_INF, BF_RNDZ); + if (ret) + return ret; + bf_init(r->ctx, T); + ret = bf_integer_from_radix_rec(T, tab, n2, level + 1, n0, + radix, pow_tab); + if (!ret) + ret = bf_add(r, r, T, BF_PREC_INF, BF_RNDZ); + bf_delete(T); + } + return ret; + // bf_print_str(" r=", r); +} + +/* return 0 if OK != 0 if memory error */ +static int bf_integer_from_radix(bf_t *r, const limb_t *tab, + limb_t n, limb_t radix) +{ + bf_context_t *s = r->ctx; + int pow_tab_len, i, ret; + limb_t radixl; + bf_t *pow_tab; + + radixl = get_limb_radix(radix); + pow_tab_len = ceil_log2(n) + 2; /* XXX: check */ + pow_tab = bf_malloc(s, sizeof(pow_tab[0]) * pow_tab_len); + if (!pow_tab) + return -1; + for(i = 0; i < pow_tab_len; i++) + bf_init(r->ctx, &pow_tab[i]); + ret = bf_integer_from_radix_rec(r, tab, n, 0, n, radixl, pow_tab); + for(i = 0; i < pow_tab_len; i++) { + bf_delete(&pow_tab[i]); + } + bf_free(s, pow_tab); + return ret; +} + +/* compute and round T * radix^expn. */ +int bf_mul_pow_radix(bf_t *r, const bf_t *T, limb_t radix, + slimb_t expn, limb_t prec, bf_flags_t flags) +{ + int ret, expn_sign, overflow; + slimb_t e, extra_bits, prec1, ziv_extra_bits; + bf_t B_s, *B = &B_s; + + if (T->len == 0) { + return bf_set(r, T); + } else if (expn == 0) { + ret = bf_set(r, T); + ret |= bf_round(r, prec, flags); + return ret; + } + + e = expn; + expn_sign = 0; + if (e < 0) { + e = -e; + expn_sign = 1; + } + bf_init(r->ctx, B); + if (prec == BF_PREC_INF) { + /* infinite precision: only used if the result is known to be exact */ + ret = bf_pow_ui_ui(B, radix, e, BF_PREC_INF, BF_RNDN); + if (expn_sign) { + ret |= bf_div(r, T, B, T->len * LIMB_BITS, BF_RNDN); + } else { + ret |= bf_mul(r, T, B, BF_PREC_INF, BF_RNDN); + } + } else { + ziv_extra_bits = 16; + for(;;) { + prec1 = prec + ziv_extra_bits; + /* XXX: correct overflow/underflow handling */ + /* XXX: rigorous error analysis needed */ + extra_bits = ceil_log2(e) * 2 + 1; + ret = bf_pow_ui_ui(B, radix, e, prec1 + extra_bits, BF_RNDN | BF_FLAG_EXT_EXP); + overflow = !bf_is_finite(B); + /* XXX: if bf_pow_ui_ui returns an exact result, can stop + after the next operation */ + if (expn_sign) + ret |= bf_div(r, T, B, prec1 + extra_bits, BF_RNDN | BF_FLAG_EXT_EXP); + else + ret |= bf_mul(r, T, B, prec1 + extra_bits, BF_RNDN | BF_FLAG_EXT_EXP); + if (ret & BF_ST_MEM_ERROR) + break; + if ((ret & BF_ST_INEXACT) && + !bf_can_round(r, prec, flags & BF_RND_MASK, prec1) && + !overflow) { + /* and more precision and retry */ + ziv_extra_bits = ziv_extra_bits + (ziv_extra_bits / 2); + } else { + /* XXX: need to use __bf_round() to pass the inexact + flag for the subnormal case */ + ret = bf_round(r, prec, flags) | (ret & BF_ST_INEXACT); + break; + } + } + } + bf_delete(B); + return ret; +} + +static inline int to_digit(int c) +{ + if (c >= '0' && c <= '9') + return c - '0'; + else if (c >= 'A' && c <= 'Z') + return c - 'A' + 10; + else if (c >= 'a' && c <= 'z') + return c - 'a' + 10; + else + return 36; +} + +/* add a limb at 'pos' and decrement pos. new space is created if + needed. Return 0 if OK, -1 if memory error */ +static int bf_add_limb(bf_t *a, slimb_t *ppos, limb_t v) +{ + slimb_t pos; + pos = *ppos; + if (unlikely(pos < 0)) { + limb_t new_size, d, *new_tab; + new_size = bf_max(a->len + 1, a->len * 3 / 2); + new_tab = bf_realloc(a->ctx, a->tab, sizeof(limb_t) * new_size); + if (!new_tab) + return -1; + a->tab = new_tab; + d = new_size - a->len; + memmove(a->tab + d, a->tab, a->len * sizeof(limb_t)); + a->len = new_size; + pos += d; + } + a->tab[pos--] = v; + *ppos = pos; + return 0; +} + +static int bf_tolower(int c) +{ + if (c >= 'A' && c <= 'Z') + c = c - 'A' + 'a'; + return c; +} + +static int strcasestart(const char *str, const char *val, const char **ptr) +{ + const char *p, *q; + p = str; + q = val; + while (*q != '\0') { + if (bf_tolower(*p) != *q) + return 0; + p++; + q++; + } + if (ptr) + *ptr = p; + return 1; +} + +static int bf_atof_internal(bf_t *r, slimb_t *pexponent, + const char *str, const char **pnext, int radix, + limb_t prec, bf_flags_t flags, BOOL is_dec) +{ + const char *p, *p_start; + int is_neg, radix_bits, exp_is_neg, ret, digits_per_limb, shift; + limb_t cur_limb; + slimb_t pos, expn, int_len, digit_count; + BOOL has_decpt, is_bin_exp; + bf_t a_s, *a; + + *pexponent = 0; + p = str; + if (!(flags & BF_ATOF_NO_NAN_INF) && radix <= 16 && + strcasestart(p, "nan", &p)) { + bf_set_nan(r); + ret = 0; + goto done; + } + is_neg = 0; + + if (p[0] == '+') { + p++; + p_start = p; + } else if (p[0] == '-') { + is_neg = 1; + p++; + p_start = p; + } else { + p_start = p; + } + if (p[0] == '0') { + if ((p[1] == 'x' || p[1] == 'X') && + (radix == 0 || radix == 16) && + !(flags & BF_ATOF_NO_HEX)) { + radix = 16; + p += 2; + } else if ((p[1] == 'o' || p[1] == 'O') && + radix == 0 && (flags & BF_ATOF_BIN_OCT)) { + p += 2; + radix = 8; + } else if ((p[1] == 'b' || p[1] == 'B') && + radix == 0 && (flags & BF_ATOF_BIN_OCT)) { + p += 2; + radix = 2; + } else { + goto no_prefix; + } + /* there must be a digit after the prefix */ + if (to_digit((uint8_t)*p) >= radix) { + bf_set_nan(r); + ret = 0; + goto done; + } + no_prefix: ; + } else { + if (!(flags & BF_ATOF_NO_NAN_INF) && radix <= 16 && + strcasestart(p, "inf", &p)) { + bf_set_inf(r, is_neg); + ret = 0; + goto done; + } + } + + if (radix == 0) + radix = 10; + if (is_dec) { + assert(radix == 10); + radix_bits = 0; + a = r; + } else if ((radix & (radix - 1)) != 0) { + radix_bits = 0; /* base is not a power of two */ + a = &a_s; + bf_init(r->ctx, a); + } else { + radix_bits = ceil_log2(radix); + a = r; + } + + /* skip leading zeros */ + /* XXX: could also skip zeros after the decimal point */ + while (*p == '0') + p++; + + if (radix_bits) { + shift = digits_per_limb = LIMB_BITS; + } else { + radix_bits = 0; + shift = digits_per_limb = digits_per_limb_table[radix - 2]; + } + cur_limb = 0; + bf_resize(a, 1); + pos = 0; + has_decpt = FALSE; + int_len = digit_count = 0; + for(;;) { + limb_t c; + if (*p == '.' && (p > p_start || to_digit(p[1]) < radix)) { + if (has_decpt) + break; + has_decpt = TRUE; + int_len = digit_count; + p++; + } + c = to_digit(*p); + if (c >= radix) + break; + digit_count++; + p++; + if (radix_bits) { + shift -= radix_bits; + if (shift <= 0) { + cur_limb |= c >> (-shift); + if (bf_add_limb(a, &pos, cur_limb)) + goto mem_error; + if (shift < 0) + cur_limb = c << (LIMB_BITS + shift); + else + cur_limb = 0; + shift += LIMB_BITS; + } else { + cur_limb |= c << shift; + } + } else { + cur_limb = cur_limb * radix + c; + shift--; + if (shift == 0) { + if (bf_add_limb(a, &pos, cur_limb)) + goto mem_error; + shift = digits_per_limb; + cur_limb = 0; + } + } + } + if (!has_decpt) + int_len = digit_count; + + /* add the last limb and pad with zeros */ + if (shift != digits_per_limb) { + if (radix_bits == 0) { + while (shift != 0) { + cur_limb *= radix; + shift--; + } + } + if (bf_add_limb(a, &pos, cur_limb)) { + mem_error: + ret = BF_ST_MEM_ERROR; + if (!radix_bits) + bf_delete(a); + bf_set_nan(r); + goto done; + } + } + + /* reset the next limbs to zero (we prefer to reallocate in the + renormalization) */ + memset(a->tab, 0, (pos + 1) * sizeof(limb_t)); + + if (p == p_start) { + ret = 0; + if (!radix_bits) + bf_delete(a); + bf_set_nan(r); + goto done; + } + + /* parse the exponent, if any */ + expn = 0; + is_bin_exp = FALSE; + if (((radix == 10 && (*p == 'e' || *p == 'E')) || + (radix != 10 && (*p == '@' || + (radix_bits && (*p == 'p' || *p == 'P'))))) && + p > p_start) { + is_bin_exp = (*p == 'p' || *p == 'P'); + p++; + exp_is_neg = 0; + if (*p == '+') { + p++; + } else if (*p == '-') { + exp_is_neg = 1; + p++; + } + for(;;) { + int c; + c = to_digit(*p); + if (c >= 10) + break; + if (unlikely(expn > ((BF_RAW_EXP_MAX - 2 - 9) / 10))) { + /* exponent overflow */ + if (exp_is_neg) { + bf_set_zero(r, is_neg); + ret = BF_ST_UNDERFLOW | BF_ST_INEXACT; + } else { + bf_set_inf(r, is_neg); + ret = BF_ST_OVERFLOW | BF_ST_INEXACT; + } + goto done; + } + p++; + expn = expn * 10 + c; + } + if (exp_is_neg) + expn = -expn; + } + if (is_dec) { + a->expn = expn + int_len; + a->sign = is_neg; + ret = bfdec_normalize_and_round((bfdec_t *)a, prec, flags); + } else if (radix_bits) { + /* XXX: may overflow */ + if (!is_bin_exp) + expn *= radix_bits; + a->expn = expn + (int_len * radix_bits); + a->sign = is_neg; + ret = bf_normalize_and_round(a, prec, flags); + } else { + limb_t l; + pos++; + l = a->len - pos; /* number of limbs */ + if (l == 0) { + bf_set_zero(r, is_neg); + ret = 0; + } else { + bf_t T_s, *T = &T_s; + + expn -= l * digits_per_limb - int_len; + bf_init(r->ctx, T); + if (bf_integer_from_radix(T, a->tab + pos, l, radix)) { + bf_set_nan(r); + ret = BF_ST_MEM_ERROR; + } else { + T->sign = is_neg; + if (flags & BF_ATOF_EXPONENT) { + /* return the exponent */ + *pexponent = expn; + ret = bf_set(r, T); + } else { + ret = bf_mul_pow_radix(r, T, radix, expn, prec, flags); + } + } + bf_delete(T); + } + bf_delete(a); + } + done: + if (pnext) + *pnext = p; + return ret; +} + +/* + Return (status, n, exp). 'status' is the floating point status. 'n' + is the parsed number. + + If (flags & BF_ATOF_EXPONENT) and if the radix is not a power of + two, the parsed number is equal to r * + (*pexponent)^radix. Otherwise *pexponent = 0. +*/ +int bf_atof2(bf_t *r, slimb_t *pexponent, + const char *str, const char **pnext, int radix, + limb_t prec, bf_flags_t flags) +{ + return bf_atof_internal(r, pexponent, str, pnext, radix, prec, flags, + FALSE); +} + +int bf_atof(bf_t *r, const char *str, const char **pnext, int radix, + limb_t prec, bf_flags_t flags) +{ + slimb_t dummy_exp; + return bf_atof_internal(r, &dummy_exp, str, pnext, radix, prec, flags, FALSE); +} + +/* base conversion to radix */ + +#if LIMB_BITS == 64 +#define RADIXL_10 UINT64_C(10000000000000000000) +#else +#define RADIXL_10 UINT64_C(1000000000) +#endif + +static const uint32_t inv_log2_radix[BF_RADIX_MAX - 1][LIMB_BITS / 32 + 1] = { +#if LIMB_BITS == 32 +{ 0x80000000, 0x00000000,}, +{ 0x50c24e60, 0xd4d4f4a7,}, +{ 0x40000000, 0x00000000,}, +{ 0x372068d2, 0x0a1ee5ca,}, +{ 0x3184648d, 0xb8153e7a,}, +{ 0x2d983275, 0x9d5369c4,}, +{ 0x2aaaaaaa, 0xaaaaaaab,}, +{ 0x28612730, 0x6a6a7a54,}, +{ 0x268826a1, 0x3ef3fde6,}, +{ 0x25001383, 0xbac8a744,}, +{ 0x23b46706, 0x82c0c709,}, +{ 0x229729f1, 0xb2c83ded,}, +{ 0x219e7ffd, 0xa5ad572b,}, +{ 0x20c33b88, 0xda7c29ab,}, +{ 0x20000000, 0x00000000,}, +{ 0x1f50b57e, 0xac5884b3,}, +{ 0x1eb22cc6, 0x8aa6e26f,}, +{ 0x1e21e118, 0x0c5daab2,}, +{ 0x1d9dcd21, 0x439834e4,}, +{ 0x1d244c78, 0x367a0d65,}, +{ 0x1cb40589, 0xac173e0c,}, +{ 0x1c4bd95b, 0xa8d72b0d,}, +{ 0x1bead768, 0x98f8ce4c,}, +{ 0x1b903469, 0x050f72e5,}, +{ 0x1b3b433f, 0x2eb06f15,}, +{ 0x1aeb6f75, 0x9c46fc38,}, +{ 0x1aa038eb, 0x0e3bfd17,}, +{ 0x1a593062, 0xb38d8c56,}, +{ 0x1a15f4c3, 0x2b95a2e6,}, +{ 0x19d630dc, 0xcc7ddef9,}, +{ 0x19999999, 0x9999999a,}, +{ 0x195fec80, 0x8a609431,}, +{ 0x1928ee7b, 0x0b4f22f9,}, +{ 0x18f46acf, 0x8c06e318,}, +{ 0x18c23246, 0xdc0a9f3d,}, +#else +{ 0x80000000, 0x00000000, 0x00000000,}, +{ 0x50c24e60, 0xd4d4f4a7, 0x021f57bc,}, +{ 0x40000000, 0x00000000, 0x00000000,}, +{ 0x372068d2, 0x0a1ee5ca, 0x19ea911b,}, +{ 0x3184648d, 0xb8153e7a, 0x7fc2d2e1,}, +{ 0x2d983275, 0x9d5369c4, 0x4dec1661,}, +{ 0x2aaaaaaa, 0xaaaaaaaa, 0xaaaaaaab,}, +{ 0x28612730, 0x6a6a7a53, 0x810fabde,}, +{ 0x268826a1, 0x3ef3fde6, 0x23e2566b,}, +{ 0x25001383, 0xbac8a744, 0x385a3349,}, +{ 0x23b46706, 0x82c0c709, 0x3f891718,}, +{ 0x229729f1, 0xb2c83ded, 0x15fba800,}, +{ 0x219e7ffd, 0xa5ad572a, 0xe169744b,}, +{ 0x20c33b88, 0xda7c29aa, 0x9bddee52,}, +{ 0x20000000, 0x00000000, 0x00000000,}, +{ 0x1f50b57e, 0xac5884b3, 0x70e28eee,}, +{ 0x1eb22cc6, 0x8aa6e26f, 0x06d1a2a2,}, +{ 0x1e21e118, 0x0c5daab1, 0x81b4f4bf,}, +{ 0x1d9dcd21, 0x439834e3, 0x81667575,}, +{ 0x1d244c78, 0x367a0d64, 0xc8204d6d,}, +{ 0x1cb40589, 0xac173e0c, 0x3b7b16ba,}, +{ 0x1c4bd95b, 0xa8d72b0d, 0x5879f25a,}, +{ 0x1bead768, 0x98f8ce4c, 0x66cc2858,}, +{ 0x1b903469, 0x050f72e5, 0x0cf5488e,}, +{ 0x1b3b433f, 0x2eb06f14, 0x8c89719c,}, +{ 0x1aeb6f75, 0x9c46fc37, 0xab5fc7e9,}, +{ 0x1aa038eb, 0x0e3bfd17, 0x1bd62080,}, +{ 0x1a593062, 0xb38d8c56, 0x7998ab45,}, +{ 0x1a15f4c3, 0x2b95a2e6, 0x46aed6a0,}, +{ 0x19d630dc, 0xcc7ddef9, 0x5aadd61b,}, +{ 0x19999999, 0x99999999, 0x9999999a,}, +{ 0x195fec80, 0x8a609430, 0xe1106014,}, +{ 0x1928ee7b, 0x0b4f22f9, 0x5f69791d,}, +{ 0x18f46acf, 0x8c06e318, 0x4d2aeb2c,}, +{ 0x18c23246, 0xdc0a9f3d, 0x3fe16970,}, +#endif +}; + +static const limb_t log2_radix[BF_RADIX_MAX - 1] = { +#if LIMB_BITS == 32 +0x20000000, +0x32b80347, +0x40000000, +0x4a4d3c26, +0x52b80347, +0x59d5d9fd, +0x60000000, +0x6570068e, +0x6a4d3c26, +0x6eb3a9f0, +0x72b80347, +0x766a008e, +0x79d5d9fd, +0x7d053f6d, +0x80000000, +0x82cc7edf, +0x8570068e, +0x87ef05ae, +0x8a4d3c26, +0x8c8ddd45, +0x8eb3a9f0, +0x90c10501, +0x92b80347, +0x949a784c, +0x966a008e, +0x982809d6, +0x99d5d9fd, +0x9b74948f, +0x9d053f6d, +0x9e88c6b3, +0xa0000000, +0xa16bad37, +0xa2cc7edf, +0xa4231623, +0xa570068e, +#else +0x2000000000000000, +0x32b803473f7ad0f4, +0x4000000000000000, +0x4a4d3c25e68dc57f, +0x52b803473f7ad0f4, +0x59d5d9fd5010b366, +0x6000000000000000, +0x6570068e7ef5a1e8, +0x6a4d3c25e68dc57f, +0x6eb3a9f01975077f, +0x72b803473f7ad0f4, +0x766a008e4788cbcd, +0x79d5d9fd5010b366, +0x7d053f6d26089673, +0x8000000000000000, +0x82cc7edf592262d0, +0x8570068e7ef5a1e8, +0x87ef05ae409a0289, +0x8a4d3c25e68dc57f, +0x8c8ddd448f8b845a, +0x8eb3a9f01975077f, +0x90c10500d63aa659, +0x92b803473f7ad0f4, +0x949a784bcd1b8afe, +0x966a008e4788cbcd, +0x982809d5be7072dc, +0x99d5d9fd5010b366, +0x9b74948f5532da4b, +0x9d053f6d26089673, +0x9e88c6b3626a72aa, +0xa000000000000000, +0xa16bad3758efd873, +0xa2cc7edf592262d0, +0xa4231623369e78e6, +0xa570068e7ef5a1e8, +#endif +}; + +/* compute floor(a*b) or ceil(a*b) with b = log2(radix) or + b=1/log2(radix). For is_inv = 0, strict accuracy is not guaranteed + when radix is not a power of two. */ +slimb_t bf_mul_log2_radix(slimb_t a1, unsigned int radix, int is_inv, + int is_ceil1) +{ + int is_neg; + limb_t a; + BOOL is_ceil; + + is_ceil = is_ceil1; + a = a1; + if (a1 < 0) { + a = -a; + is_neg = 1; + } else { + is_neg = 0; + } + is_ceil ^= is_neg; + if ((radix & (radix - 1)) == 0) { + int radix_bits; + /* radix is a power of two */ + radix_bits = ceil_log2(radix); + if (is_inv) { + if (is_ceil) + a += radix_bits - 1; + a = a / radix_bits; + } else { + a = a * radix_bits; + } + } else { + const uint32_t *tab; + limb_t b0, b1; + dlimb_t t; + + if (is_inv) { + tab = inv_log2_radix[radix - 2]; +#if LIMB_BITS == 32 + b1 = tab[0]; + b0 = tab[1]; +#else + b1 = ((limb_t)tab[0] << 32) | tab[1]; + b0 = (limb_t)tab[2] << 32; +#endif + t = (dlimb_t)b0 * (dlimb_t)a; + t = (dlimb_t)b1 * (dlimb_t)a + (t >> LIMB_BITS); + a = t >> (LIMB_BITS - 1); + } else { + b0 = log2_radix[radix - 2]; + t = (dlimb_t)b0 * (dlimb_t)a; + a = t >> (LIMB_BITS - 3); + } + /* a = floor(result) and 'result' cannot be an integer */ + a += is_ceil; + } + if (is_neg) + a = -a; + return a; +} + +/* 'n' is the number of output limbs */ +static int bf_integer_to_radix_rec(bf_t *pow_tab, + limb_t *out, const bf_t *a, limb_t n, + int level, limb_t n0, limb_t radixl, + unsigned int radixl_bits) +{ + limb_t n1, n2, q_prec; + int ret; + + assert(n >= 1); + if (n == 1) { + out[0] = get_bits(a->tab, a->len, a->len * LIMB_BITS - a->expn); + } else if (n == 2) { + dlimb_t t; + slimb_t pos; + pos = a->len * LIMB_BITS - a->expn; + t = ((dlimb_t)get_bits(a->tab, a->len, pos + LIMB_BITS) << LIMB_BITS) | + get_bits(a->tab, a->len, pos); + if (likely(radixl == RADIXL_10)) { + /* use division by a constant when possible */ + out[0] = t % RADIXL_10; + out[1] = t / RADIXL_10; + } else { + out[0] = t % radixl; + out[1] = t / radixl; + } + } else { + bf_t Q, R, *B, *B_inv; + int q_add; + bf_init(a->ctx, &Q); + bf_init(a->ctx, &R); + n2 = (((n0 * 2) >> (level + 1)) + 1) / 2; + n1 = n - n2; + B = &pow_tab[2 * level]; + B_inv = &pow_tab[2 * level + 1]; + ret = 0; + if (B->len == 0) { + /* compute BASE^n2 */ + ret |= bf_pow_ui_ui(B, radixl, n2, BF_PREC_INF, BF_RNDZ); + /* we use enough bits for the maximum possible 'n1' value, + i.e. n2 + 1 */ + ret |= bf_set_ui(&R, 1); + ret |= bf_div(B_inv, &R, B, (n2 + 1) * radixl_bits + 2, BF_RNDN); + } + // printf("%d: n1=% " PRId64 " n2=%" PRId64 "\n", level, n1, n2); + q_prec = n1 * radixl_bits; + ret |= bf_mul(&Q, a, B_inv, q_prec, BF_RNDN); + ret |= bf_rint(&Q, BF_RNDZ); + + ret |= bf_mul(&R, &Q, B, BF_PREC_INF, BF_RNDZ); + ret |= bf_sub(&R, a, &R, BF_PREC_INF, BF_RNDZ); + + if (ret & BF_ST_MEM_ERROR) + goto fail; + /* adjust if necessary */ + q_add = 0; + while (R.sign && R.len != 0) { + if (bf_add(&R, &R, B, BF_PREC_INF, BF_RNDZ)) + goto fail; + q_add--; + } + while (bf_cmpu(&R, B) >= 0) { + if (bf_sub(&R, &R, B, BF_PREC_INF, BF_RNDZ)) + goto fail; + q_add++; + } + if (q_add != 0) { + if (bf_add_si(&Q, &Q, q_add, BF_PREC_INF, BF_RNDZ)) + goto fail; + } + if (bf_integer_to_radix_rec(pow_tab, out + n2, &Q, n1, level + 1, n0, + radixl, radixl_bits)) + goto fail; + if (bf_integer_to_radix_rec(pow_tab, out, &R, n2, level + 1, n0, + radixl, radixl_bits)) { + fail: + bf_delete(&Q); + bf_delete(&R); + return -1; + } + bf_delete(&Q); + bf_delete(&R); + } + return 0; +} + +/* return 0 if OK != 0 if memory error */ +static int bf_integer_to_radix(bf_t *r, const bf_t *a, limb_t radixl) +{ + bf_context_t *s = r->ctx; + limb_t r_len; + bf_t *pow_tab; + int i, pow_tab_len, ret; + + r_len = r->len; + pow_tab_len = (ceil_log2(r_len) + 2) * 2; /* XXX: check */ + pow_tab = bf_malloc(s, sizeof(pow_tab[0]) * pow_tab_len); + if (!pow_tab) + return -1; + for(i = 0; i < pow_tab_len; i++) + bf_init(r->ctx, &pow_tab[i]); + + ret = bf_integer_to_radix_rec(pow_tab, r->tab, a, r_len, 0, r_len, radixl, + ceil_log2(radixl)); + + for(i = 0; i < pow_tab_len; i++) { + bf_delete(&pow_tab[i]); + } + bf_free(s, pow_tab); + return ret; +} + +/* a must be >= 0. 'P' is the wanted number of digits in radix + 'radix'. 'r' is the mantissa represented as an integer. *pE + contains the exponent. Return != 0 if memory error. */ +static int bf_convert_to_radix(bf_t *r, slimb_t *pE, + const bf_t *a, int radix, + limb_t P, bf_rnd_t rnd_mode, + BOOL is_fixed_exponent) +{ + slimb_t E, e, prec, extra_bits, ziv_extra_bits, prec0; + bf_t B_s, *B = &B_s; + int e_sign, ret, res; + + if (a->len == 0) { + /* zero case */ + *pE = 0; + return bf_set(r, a); + } + + if (is_fixed_exponent) { + E = *pE; + } else { + /* compute the new exponent */ + E = 1 + bf_mul_log2_radix(a->expn - 1, radix, TRUE, FALSE); + } + // bf_print_str("a", a); + // printf("E=%ld P=%ld radix=%d\n", E, P, radix); + + for(;;) { + e = P - E; + e_sign = 0; + if (e < 0) { + e = -e; + e_sign = 1; + } + /* Note: precision for log2(radix) is not critical here */ + prec0 = bf_mul_log2_radix(P, radix, FALSE, TRUE); + ziv_extra_bits = 16; + for(;;) { + prec = prec0 + ziv_extra_bits; + /* XXX: rigorous error analysis needed */ + extra_bits = ceil_log2(e) * 2 + 1; + ret = bf_pow_ui_ui(r, radix, e, prec + extra_bits, + BF_RNDN | BF_FLAG_EXT_EXP); + if (!e_sign) + ret |= bf_mul(r, r, a, prec + extra_bits, + BF_RNDN | BF_FLAG_EXT_EXP); + else + ret |= bf_div(r, a, r, prec + extra_bits, + BF_RNDN | BF_FLAG_EXT_EXP); + if (ret & BF_ST_MEM_ERROR) + return BF_ST_MEM_ERROR; + /* if the result is not exact, check that it can be safely + rounded to an integer */ + if ((ret & BF_ST_INEXACT) && + !bf_can_round(r, r->expn, rnd_mode, prec)) { + /* and more precision and retry */ + ziv_extra_bits = ziv_extra_bits + (ziv_extra_bits / 2); + continue; + } else { + ret = bf_rint(r, rnd_mode); + if (ret & BF_ST_MEM_ERROR) + return BF_ST_MEM_ERROR; + break; + } + } + if (is_fixed_exponent) + break; + /* check that the result is < B^P */ + /* XXX: do a fast approximate test first ? */ + bf_init(r->ctx, B); + ret = bf_pow_ui_ui(B, radix, P, BF_PREC_INF, BF_RNDZ); + if (ret) { + bf_delete(B); + return ret; + } + res = bf_cmpu(r, B); + bf_delete(B); + if (res < 0) + break; + /* try a larger exponent */ + E++; + } + *pE = E; + return 0; +} + +static void limb_to_a(char *buf, limb_t n, unsigned int radix, int len) +{ + int digit, i; + + if (radix == 10) { + /* specific case with constant divisor */ + for(i = len - 1; i >= 0; i--) { + digit = (limb_t)n % 10; + n = (limb_t)n / 10; + buf[i] = digit + '0'; + } + } else { + for(i = len - 1; i >= 0; i--) { + digit = (limb_t)n % radix; + n = (limb_t)n / radix; + if (digit < 10) + digit += '0'; + else + digit += 'a' - 10; + buf[i] = digit; + } + } +} + +/* for power of 2 radixes */ +static void limb_to_a2(char *buf, limb_t n, unsigned int radix_bits, int len) +{ + int digit, i; + unsigned int mask; + + mask = (1 << radix_bits) - 1; + for(i = len - 1; i >= 0; i--) { + digit = n & mask; + n >>= radix_bits; + if (digit < 10) + digit += '0'; + else + digit += 'a' - 10; + buf[i] = digit; + } +} + +/* 'a' must be an integer if the is_dec = FALSE or if the radix is not + a power of two. A dot is added before the 'dot_pos' digit. dot_pos + = n_digits does not display the dot. 0 <= dot_pos <= + n_digits. n_digits >= 1. */ +static void output_digits(DynBuf *s, const bf_t *a1, int radix, limb_t n_digits, + limb_t dot_pos, BOOL is_dec) +{ + limb_t i, v, l; + slimb_t pos, pos_incr; + int digits_per_limb, buf_pos, radix_bits, first_buf_pos; + char buf[65]; + bf_t a_s, *a; + + if (is_dec) { + digits_per_limb = LIMB_DIGITS; + a = (bf_t *)a1; + radix_bits = 0; + pos = a->len; + pos_incr = 1; + first_buf_pos = 0; + } else if ((radix & (radix - 1)) == 0) { + a = (bf_t *)a1; + radix_bits = ceil_log2(radix); + digits_per_limb = LIMB_BITS / radix_bits; + pos_incr = digits_per_limb * radix_bits; + /* digits are aligned relative to the radix point */ + pos = a->len * LIMB_BITS + smod(-a->expn, radix_bits); + first_buf_pos = 0; + } else { + limb_t n, radixl; + + digits_per_limb = digits_per_limb_table[radix - 2]; + radixl = get_limb_radix(radix); + a = &a_s; + bf_init(a1->ctx, a); + n = (n_digits + digits_per_limb - 1) / digits_per_limb; + if (bf_resize(a, n)) { + dbuf_set_error(s); + goto done; + } + if (bf_integer_to_radix(a, a1, radixl)) { + dbuf_set_error(s); + goto done; + } + radix_bits = 0; + pos = n; + pos_incr = 1; + first_buf_pos = pos * digits_per_limb - n_digits; + } + buf_pos = digits_per_limb; + i = 0; + while (i < n_digits) { + if (buf_pos == digits_per_limb) { + pos -= pos_incr; + if (radix_bits == 0) { + v = get_limbz(a, pos); + limb_to_a(buf, v, radix, digits_per_limb); + } else { + v = get_bits(a->tab, a->len, pos); + limb_to_a2(buf, v, radix_bits, digits_per_limb); + } + buf_pos = first_buf_pos; + first_buf_pos = 0; + } + if (i < dot_pos) { + l = dot_pos; + } else { + if (i == dot_pos) + dbuf_putc(s, '.'); + l = n_digits; + } + l = bf_min(digits_per_limb - buf_pos, l - i); + dbuf_put(s, (uint8_t *)(buf + buf_pos), l); + buf_pos += l; + i += l; + } + done: + if (a != a1) + bf_delete(a); +} + +static void *bf_dbuf_realloc(void *opaque, void *ptr, size_t size) +{ + bf_context_t *s = opaque; + return bf_realloc(s, ptr, size); +} + +/* return the length in bytes. A trailing '\0' is added */ +static char *bf_ftoa_internal(size_t *plen, const bf_t *a2, int radix, + limb_t prec, bf_flags_t flags, BOOL is_dec) +{ + bf_context_t *ctx = a2->ctx; + DynBuf s_s, *s = &s_s; + int radix_bits; + + // bf_print_str("ftoa", a2); + // printf("radix=%d\n", radix); + dbuf_init2(s, ctx, bf_dbuf_realloc); + if (a2->expn == BF_EXP_NAN) { + dbuf_putstr(s, "NaN"); + } else { + if (a2->sign) + dbuf_putc(s, '-'); + if (a2->expn == BF_EXP_INF) { + if (flags & BF_FTOA_JS_QUIRKS) + dbuf_putstr(s, "Infinity"); + else + dbuf_putstr(s, "Inf"); + } else { + int fmt, ret; + slimb_t n_digits, n, i, n_max, n1; + bf_t a1_s, *a1 = &a1_s; + + if ((radix & (radix - 1)) != 0) + radix_bits = 0; + else + radix_bits = ceil_log2(radix); + + fmt = flags & BF_FTOA_FORMAT_MASK; + bf_init(ctx, a1); + if (fmt == BF_FTOA_FORMAT_FRAC) { + if (is_dec || radix_bits != 0) { + if (bf_set(a1, a2)) + goto fail1; +#ifdef USE_BF_DEC + if (is_dec) { + if (bfdec_round((bfdec_t *)a1, prec, (flags & BF_RND_MASK) | BF_FLAG_RADPNT_PREC) & BF_ST_MEM_ERROR) + goto fail1; + n = a1->expn; + } else +#endif + { + if (bf_round(a1, prec * radix_bits, (flags & BF_RND_MASK) | BF_FLAG_RADPNT_PREC) & BF_ST_MEM_ERROR) + goto fail1; + n = ceil_div(a1->expn, radix_bits); + } + if (flags & BF_FTOA_ADD_PREFIX) { + if (radix == 16) + dbuf_putstr(s, "0x"); + else if (radix == 8) + dbuf_putstr(s, "0o"); + else if (radix == 2) + dbuf_putstr(s, "0b"); + } + if (a1->expn == BF_EXP_ZERO) { + dbuf_putstr(s, "0"); + if (prec > 0) { + dbuf_putstr(s, "."); + for(i = 0; i < prec; i++) { + dbuf_putc(s, '0'); + } + } + } else { + n_digits = prec + n; + if (n <= 0) { + /* 0.x */ + dbuf_putstr(s, "0."); + for(i = 0; i < -n; i++) { + dbuf_putc(s, '0'); + } + if (n_digits > 0) { + output_digits(s, a1, radix, n_digits, n_digits, is_dec); + } + } else { + output_digits(s, a1, radix, n_digits, n, is_dec); + } + } + } else { + size_t pos, start; + bf_t a_s, *a = &a_s; + + /* make a positive number */ + a->tab = a2->tab; + a->len = a2->len; + a->expn = a2->expn; + a->sign = 0; + + /* one more digit for the rounding */ + n = 1 + bf_mul_log2_radix(bf_max(a->expn, 0), radix, TRUE, TRUE); + n_digits = n + prec; + n1 = n; + if (bf_convert_to_radix(a1, &n1, a, radix, n_digits, + flags & BF_RND_MASK, TRUE)) + goto fail1; + start = s->size; + output_digits(s, a1, radix, n_digits, n, is_dec); + /* remove leading zeros because we allocated one more digit */ + pos = start; + while ((pos + 1) < s->size && s->buf[pos] == '0' && + s->buf[pos + 1] != '.') + pos++; + if (pos > start) { + memmove(s->buf + start, s->buf + pos, s->size - pos); + s->size -= (pos - start); + } + } + } else { +#ifdef USE_BF_DEC + if (is_dec) { + if (bf_set(a1, a2)) + goto fail1; + if (fmt == BF_FTOA_FORMAT_FIXED) { + n_digits = prec; + n_max = n_digits; + if (bfdec_round((bfdec_t *)a1, prec, (flags & BF_RND_MASK)) & BF_ST_MEM_ERROR) + goto fail1; + } else { + /* prec is ignored */ + prec = n_digits = a1->len * LIMB_DIGITS; + /* remove the trailing zero digits */ + while (n_digits > 1 && + get_digit(a1->tab, a1->len, prec - n_digits) == 0) { + n_digits--; + } + n_max = n_digits + 4; + } + n = a1->expn; + } else +#endif + if (radix_bits != 0) { + if (bf_set(a1, a2)) + goto fail1; + if (fmt == BF_FTOA_FORMAT_FIXED) { + slimb_t prec_bits; + n_digits = prec; + n_max = n_digits; + /* align to the radix point */ + prec_bits = prec * radix_bits - + smod(-a1->expn, radix_bits); + if (bf_round(a1, prec_bits, + (flags & BF_RND_MASK)) & BF_ST_MEM_ERROR) + goto fail1; + } else { + limb_t digit_mask; + slimb_t pos; + /* position of the digit before the most + significant digit in bits */ + pos = a1->len * LIMB_BITS + + smod(-a1->expn, radix_bits); + n_digits = ceil_div(pos, radix_bits); + /* remove the trailing zero digits */ + digit_mask = ((limb_t)1 << radix_bits) - 1; + while (n_digits > 1 && + (get_bits(a1->tab, a1->len, pos - n_digits * radix_bits) & digit_mask) == 0) { + n_digits--; + } + n_max = n_digits + 4; + } + n = ceil_div(a1->expn, radix_bits); + } else { + bf_t a_s, *a = &a_s; + + /* make a positive number */ + a->tab = a2->tab; + a->len = a2->len; + a->expn = a2->expn; + a->sign = 0; + + if (fmt == BF_FTOA_FORMAT_FIXED) { + n_digits = prec; + n_max = n_digits; + } else { + slimb_t n_digits_max, n_digits_min; + + assert(prec != BF_PREC_INF); + n_digits = 1 + bf_mul_log2_radix(prec, radix, TRUE, TRUE); + /* max number of digits for non exponential + notation. The rational is to have the same rule + as JS i.e. n_max = 21 for 64 bit float in base 10. */ + n_max = n_digits + 4; + if (fmt == BF_FTOA_FORMAT_FREE_MIN) { + bf_t b_s, *b = &b_s; + + /* find the minimum number of digits by + dichotomy. */ + /* XXX: inefficient */ + n_digits_max = n_digits; + n_digits_min = 1; + bf_init(ctx, b); + while (n_digits_min < n_digits_max) { + n_digits = (n_digits_min + n_digits_max) / 2; + if (bf_convert_to_radix(a1, &n, a, radix, n_digits, + flags & BF_RND_MASK, FALSE)) { + bf_delete(b); + goto fail1; + } + /* convert back to a number and compare */ + ret = bf_mul_pow_radix(b, a1, radix, n - n_digits, + prec, + (flags & ~BF_RND_MASK) | + BF_RNDN); + if (ret & BF_ST_MEM_ERROR) { + bf_delete(b); + goto fail1; + } + if (bf_cmpu(b, a) == 0) { + n_digits_max = n_digits; + } else { + n_digits_min = n_digits + 1; + } + } + bf_delete(b); + n_digits = n_digits_max; + } + } + if (bf_convert_to_radix(a1, &n, a, radix, n_digits, + flags & BF_RND_MASK, FALSE)) { + fail1: + bf_delete(a1); + goto fail; + } + } + if (a1->expn == BF_EXP_ZERO && + fmt != BF_FTOA_FORMAT_FIXED && + !(flags & BF_FTOA_FORCE_EXP)) { + /* just output zero */ + dbuf_putstr(s, "0"); + } else { + if (flags & BF_FTOA_ADD_PREFIX) { + if (radix == 16) + dbuf_putstr(s, "0x"); + else if (radix == 8) + dbuf_putstr(s, "0o"); + else if (radix == 2) + dbuf_putstr(s, "0b"); + } + if (a1->expn == BF_EXP_ZERO) + n = 1; + if ((flags & BF_FTOA_FORCE_EXP) || + n <= -6 || n > n_max) { + const char *fmt; + /* exponential notation */ + output_digits(s, a1, radix, n_digits, 1, is_dec); + if (radix_bits != 0 && radix <= 16) { + if (flags & BF_FTOA_JS_QUIRKS) + fmt = "p%+" PRId_LIMB; + else + fmt = "p%" PRId_LIMB; + dbuf_printf(s, fmt, (n - 1) * radix_bits); + } else { + if (flags & BF_FTOA_JS_QUIRKS) + fmt = "%c%+" PRId_LIMB; + else + fmt = "%c%" PRId_LIMB; + dbuf_printf(s, fmt, + radix <= 10 ? 'e' : '@', n - 1); + } + } else if (n <= 0) { + /* 0.x */ + dbuf_putstr(s, "0."); + for(i = 0; i < -n; i++) { + dbuf_putc(s, '0'); + } + output_digits(s, a1, radix, n_digits, n_digits, is_dec); + } else { + if (n_digits <= n) { + /* no dot */ + output_digits(s, a1, radix, n_digits, n_digits, is_dec); + for(i = 0; i < (n - n_digits); i++) + dbuf_putc(s, '0'); + } else { + output_digits(s, a1, radix, n_digits, n, is_dec); + } + } + } + } + bf_delete(a1); + } + } + dbuf_putc(s, '\0'); + if (dbuf_error(s)) + goto fail; + if (plen) + *plen = s->size - 1; + return (char *)s->buf; + fail: + bf_free(ctx, s->buf); + if (plen) + *plen = 0; + return NULL; +} + +char *bf_ftoa(size_t *plen, const bf_t *a, int radix, limb_t prec, + bf_flags_t flags) +{ + return bf_ftoa_internal(plen, a, radix, prec, flags, FALSE); +} + +/***************************************************************/ +/* transcendental functions */ + +/* Note: the algorithm is from MPFR */ +static void bf_const_log2_rec(bf_t *T, bf_t *P, bf_t *Q, limb_t n1, + limb_t n2, BOOL need_P) +{ + bf_context_t *s = T->ctx; + if ((n2 - n1) == 1) { + if (n1 == 0) { + bf_set_ui(P, 3); + } else { + bf_set_ui(P, n1); + P->sign = 1; + } + bf_set_ui(Q, 2 * n1 + 1); + Q->expn += 2; + bf_set(T, P); + } else { + limb_t m; + bf_t T1_s, *T1 = &T1_s; + bf_t P1_s, *P1 = &P1_s; + bf_t Q1_s, *Q1 = &Q1_s; + + m = n1 + ((n2 - n1) >> 1); + bf_const_log2_rec(T, P, Q, n1, m, TRUE); + bf_init(s, T1); + bf_init(s, P1); + bf_init(s, Q1); + bf_const_log2_rec(T1, P1, Q1, m, n2, need_P); + bf_mul(T, T, Q1, BF_PREC_INF, BF_RNDZ); + bf_mul(T1, T1, P, BF_PREC_INF, BF_RNDZ); + bf_add(T, T, T1, BF_PREC_INF, BF_RNDZ); + if (need_P) + bf_mul(P, P, P1, BF_PREC_INF, BF_RNDZ); + bf_mul(Q, Q, Q1, BF_PREC_INF, BF_RNDZ); + bf_delete(T1); + bf_delete(P1); + bf_delete(Q1); + } +} + +/* compute log(2) with faithful rounding at precision 'prec' */ +static void bf_const_log2_internal(bf_t *T, limb_t prec) +{ + limb_t w, N; + bf_t P_s, *P = &P_s; + bf_t Q_s, *Q = &Q_s; + + w = prec + 15; + N = w / 3 + 1; + bf_init(T->ctx, P); + bf_init(T->ctx, Q); + bf_const_log2_rec(T, P, Q, 0, N, FALSE); + bf_div(T, T, Q, prec, BF_RNDN); + bf_delete(P); + bf_delete(Q); +} + +/* PI constant */ + +#define CHUD_A 13591409 +#define CHUD_B 545140134 +#define CHUD_C 640320 +#define CHUD_BITS_PER_TERM 47 + +static void chud_bs(bf_t *P, bf_t *Q, bf_t *G, int64_t a, int64_t b, int need_g, + limb_t prec) +{ + bf_context_t *s = P->ctx; + int64_t c; + + if (a == (b - 1)) { + bf_t T0, T1; + + bf_init(s, &T0); + bf_init(s, &T1); + bf_set_ui(G, 2 * b - 1); + bf_mul_ui(G, G, 6 * b - 1, prec, BF_RNDN); + bf_mul_ui(G, G, 6 * b - 5, prec, BF_RNDN); + bf_set_ui(&T0, CHUD_B); + bf_mul_ui(&T0, &T0, b, prec, BF_RNDN); + bf_set_ui(&T1, CHUD_A); + bf_add(&T0, &T0, &T1, prec, BF_RNDN); + bf_mul(P, G, &T0, prec, BF_RNDN); + P->sign = b & 1; + + bf_set_ui(Q, b); + bf_mul_ui(Q, Q, b, prec, BF_RNDN); + bf_mul_ui(Q, Q, b, prec, BF_RNDN); + bf_mul_ui(Q, Q, (uint64_t)CHUD_C * CHUD_C * CHUD_C / 24, prec, BF_RNDN); + bf_delete(&T0); + bf_delete(&T1); + } else { + bf_t P2, Q2, G2; + + bf_init(s, &P2); + bf_init(s, &Q2); + bf_init(s, &G2); + + c = (a + b) / 2; + chud_bs(P, Q, G, a, c, 1, prec); + chud_bs(&P2, &Q2, &G2, c, b, need_g, prec); + + /* Q = Q1 * Q2 */ + /* G = G1 * G2 */ + /* P = P1 * Q2 + P2 * G1 */ + bf_mul(&P2, &P2, G, prec, BF_RNDN); + if (!need_g) + bf_set_ui(G, 0); + bf_mul(P, P, &Q2, prec, BF_RNDN); + bf_add(P, P, &P2, prec, BF_RNDN); + bf_delete(&P2); + + bf_mul(Q, Q, &Q2, prec, BF_RNDN); + bf_delete(&Q2); + if (need_g) + bf_mul(G, G, &G2, prec, BF_RNDN); + bf_delete(&G2); + } +} + +/* compute Pi with faithful rounding at precision 'prec' using the + Chudnovsky formula */ +static void bf_const_pi_internal(bf_t *Q, limb_t prec) +{ + bf_context_t *s = Q->ctx; + int64_t n, prec1; + bf_t P, G; + + /* number of serie terms */ + n = prec / CHUD_BITS_PER_TERM + 1; + /* XXX: precision analysis */ + prec1 = prec + 32; + + bf_init(s, &P); + bf_init(s, &G); + + chud_bs(&P, Q, &G, 0, n, 0, BF_PREC_INF); + + bf_mul_ui(&G, Q, CHUD_A, prec1, BF_RNDN); + bf_add(&P, &G, &P, prec1, BF_RNDN); + bf_div(Q, Q, &P, prec1, BF_RNDF); + + bf_set_ui(&P, CHUD_C); + bf_sqrt(&G, &P, prec1, BF_RNDF); + bf_mul_ui(&G, &G, (uint64_t)CHUD_C / 12, prec1, BF_RNDF); + bf_mul(Q, Q, &G, prec, BF_RNDN); + bf_delete(&P); + bf_delete(&G); +} + +static int bf_const_get(bf_t *T, limb_t prec, bf_flags_t flags, + BFConstCache *c, + void (*func)(bf_t *res, limb_t prec), int sign) +{ + limb_t ziv_extra_bits, prec1; + + ziv_extra_bits = 32; + for(;;) { + prec1 = prec + ziv_extra_bits; + if (c->prec < prec1) { + if (c->val.len == 0) + bf_init(T->ctx, &c->val); + func(&c->val, prec1); + c->prec = prec1; + } else { + prec1 = c->prec; + } + bf_set(T, &c->val); + T->sign = sign; + if (!bf_can_round(T, prec, flags & BF_RND_MASK, prec1)) { + /* and more precision and retry */ + ziv_extra_bits = ziv_extra_bits + (ziv_extra_bits / 2); + } else { + break; + } + } + return bf_round(T, prec, flags); +} + +static void bf_const_free(BFConstCache *c) +{ + bf_delete(&c->val); + memset(c, 0, sizeof(*c)); +} + +int bf_const_log2(bf_t *T, limb_t prec, bf_flags_t flags) +{ + bf_context_t *s = T->ctx; + return bf_const_get(T, prec, flags, &s->log2_cache, bf_const_log2_internal, 0); +} + +/* return rounded pi * (1 - 2 * sign) */ +static int bf_const_pi_signed(bf_t *T, int sign, limb_t prec, bf_flags_t flags) +{ + bf_context_t *s = T->ctx; + return bf_const_get(T, prec, flags, &s->pi_cache, bf_const_pi_internal, + sign); +} + +int bf_const_pi(bf_t *T, limb_t prec, bf_flags_t flags) +{ + return bf_const_pi_signed(T, 0, prec, flags); +} + +void bf_clear_cache(bf_context_t *s) +{ +#ifdef USE_FFT_MUL + fft_clear_cache(s); +#endif + bf_const_free(&s->log2_cache); + bf_const_free(&s->pi_cache); +} + +/* ZivFunc should compute the result 'r' with faithful rounding at + precision 'prec'. For efficiency purposes, the final bf_round() + does not need to be done in the function. */ +typedef int ZivFunc(bf_t *r, const bf_t *a, limb_t prec, void *opaque); + +static int bf_ziv_rounding(bf_t *r, const bf_t *a, + limb_t prec, bf_flags_t flags, + ZivFunc *f, void *opaque) +{ + int rnd_mode, ret; + slimb_t prec1, ziv_extra_bits; + + rnd_mode = flags & BF_RND_MASK; + if (rnd_mode == BF_RNDF) { + /* no need to iterate */ + f(r, a, prec, opaque); + ret = 0; + } else { + ziv_extra_bits = 32; + for(;;) { + prec1 = prec + ziv_extra_bits; + ret = f(r, a, prec1, opaque); + if (ret & (BF_ST_OVERFLOW | BF_ST_UNDERFLOW | BF_ST_MEM_ERROR)) { + /* overflow or underflow should never happen because + it indicates the rounding cannot be done correctly, + but we do not catch all the cases */ + return ret; + } + /* if the result is exact, we can stop */ + if (!(ret & BF_ST_INEXACT)) { + ret = 0; + break; + } + if (bf_can_round(r, prec, rnd_mode, prec1)) { + ret = BF_ST_INEXACT; + break; + } + ziv_extra_bits = ziv_extra_bits * 2; + // printf("ziv_extra_bits=%" PRId64 "\n", (int64_t)ziv_extra_bits); + } + } + if (r->len == 0) + return ret; + else + return __bf_round(r, prec, flags, r->len, ret); +} + +/* add (1 - 2*e_sign) * 2^e */ +static int bf_add_epsilon(bf_t *r, const bf_t *a, slimb_t e, int e_sign, + limb_t prec, int flags) +{ + bf_t T_s, *T = &T_s; + int ret; + /* small argument case: result = 1 + epsilon * sign(x) */ + bf_init(a->ctx, T); + bf_set_ui(T, 1); + T->sign = e_sign; + T->expn += e; + ret = bf_add(r, r, T, prec, flags); + bf_delete(T); + return ret; +} + +/* Compute the exponential using faithful rounding at precision 'prec'. + Note: the algorithm is from MPFR */ +static int bf_exp_internal(bf_t *r, const bf_t *a, limb_t prec, void *opaque) +{ + bf_context_t *s = r->ctx; + bf_t T_s, *T = &T_s; + slimb_t n, K, l, i, prec1; + + assert(r != a); + + /* argument reduction: + T = a - n*log(2) with 0 <= T < log(2) and n integer. + */ + bf_init(s, T); + if (a->expn <= -1) { + /* 0 <= abs(a) <= 0.5 */ + if (a->sign) + n = -1; + else + n = 0; + } else { + bf_const_log2(T, LIMB_BITS, BF_RNDZ); + bf_div(T, a, T, LIMB_BITS, BF_RNDD); + bf_get_limb(&n, T, 0); + } + + K = bf_isqrt((prec + 1) / 2); + l = (prec - 1) / K + 1; + /* XXX: precision analysis ? */ + prec1 = prec + (K + 2 * l + 18) + K + 8; + if (a->expn > 0) + prec1 += a->expn; + // printf("n=%ld K=%ld prec1=%ld\n", n, K, prec1); + + bf_const_log2(T, prec1, BF_RNDF); + bf_mul_si(T, T, n, prec1, BF_RNDN); + bf_sub(T, a, T, prec1, BF_RNDN); + + /* reduce the range of T */ + bf_mul_2exp(T, -K, BF_PREC_INF, BF_RNDZ); + + /* Taylor expansion around zero : + 1 + x + x^2/2 + ... + x^n/n! + = (1 + x * (1 + x/2 * (1 + ... (x/n)))) + */ + { + bf_t U_s, *U = &U_s; + + bf_init(s, U); + bf_set_ui(r, 1); + for(i = l ; i >= 1; i--) { + bf_set_ui(U, i); + bf_div(U, T, U, prec1, BF_RNDN); + bf_mul(r, r, U, prec1, BF_RNDN); + bf_add_si(r, r, 1, prec1, BF_RNDN); + } + bf_delete(U); + } + bf_delete(T); + + /* undo the range reduction */ + for(i = 0; i < K; i++) { + bf_mul(r, r, r, prec1, BF_RNDN | BF_FLAG_EXT_EXP); + } + + /* undo the argument reduction */ + bf_mul_2exp(r, n, BF_PREC_INF, BF_RNDZ | BF_FLAG_EXT_EXP); + + return BF_ST_INEXACT; +} + +/* crude overflow and underflow tests for exp(a). a_low <= a <= a_high */ +static int check_exp_underflow_overflow(bf_context_t *s, bf_t *r, + const bf_t *a_low, const bf_t *a_high, + limb_t prec, bf_flags_t flags) +{ + bf_t T_s, *T = &T_s; + bf_t log2_s, *log2 = &log2_s; + slimb_t e_min, e_max; + + if (a_high->expn <= 0) + return 0; + + e_max = (limb_t)1 << (bf_get_exp_bits(flags) - 1); + e_min = -e_max + 3; + if (flags & BF_FLAG_SUBNORMAL) + e_min -= (prec - 1); + + bf_init(s, T); + bf_init(s, log2); + bf_const_log2(log2, LIMB_BITS, BF_RNDU); + bf_mul_ui(T, log2, e_max, LIMB_BITS, BF_RNDU); + /* a_low > e_max * log(2) implies exp(a) > e_max */ + if (bf_cmp_lt(T, a_low) > 0) { + /* overflow */ + bf_delete(T); + bf_delete(log2); + return bf_set_overflow(r, 0, prec, flags); + } + /* a_high < (e_min - 2) * log(2) implies exp(a) < (e_min - 2) */ + bf_const_log2(log2, LIMB_BITS, BF_RNDD); + bf_mul_si(T, log2, e_min - 2, LIMB_BITS, BF_RNDD); + if (bf_cmp_lt(a_high, T)) { + int rnd_mode = flags & BF_RND_MASK; + + /* underflow */ + bf_delete(T); + bf_delete(log2); + if (rnd_mode == BF_RNDU) { + /* set the smallest value */ + bf_set_ui(r, 1); + r->expn = e_min; + } else { + bf_set_zero(r, 0); + } + return BF_ST_UNDERFLOW | BF_ST_INEXACT; + } + bf_delete(log2); + bf_delete(T); + return 0; +} + +int bf_exp(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) +{ + bf_context_t *s = r->ctx; + int ret; + assert(r != a); + if (a->len == 0) { + if (a->expn == BF_EXP_NAN) { + bf_set_nan(r); + } else if (a->expn == BF_EXP_INF) { + if (a->sign) + bf_set_zero(r, 0); + else + bf_set_inf(r, 0); + } else { + bf_set_ui(r, 1); + } + return 0; + } + + ret = check_exp_underflow_overflow(s, r, a, a, prec, flags); + if (ret) + return ret; + if (a->expn < 0 && (-a->expn) >= (prec + 2)) { + /* small argument case: result = 1 + epsilon * sign(x) */ + bf_set_ui(r, 1); + return bf_add_epsilon(r, r, -(prec + 2), a->sign, prec, flags); + } + + return bf_ziv_rounding(r, a, prec, flags, bf_exp_internal, NULL); +} + +static int bf_log_internal(bf_t *r, const bf_t *a, limb_t prec, void *opaque) +{ + bf_context_t *s = r->ctx; + bf_t T_s, *T = &T_s; + bf_t U_s, *U = &U_s; + bf_t V_s, *V = &V_s; + slimb_t n, prec1, l, i, K; + + assert(r != a); + + bf_init(s, T); + /* argument reduction 1 */ + /* T=a*2^n with 2/3 <= T <= 4/3 */ + { + bf_t U_s, *U = &U_s; + bf_set(T, a); + n = T->expn; + T->expn = 0; + /* U= ~ 2/3 */ + bf_init(s, U); + bf_set_ui(U, 0xaaaaaaaa); + U->expn = 0; + if (bf_cmp_lt(T, U)) { + T->expn++; + n--; + } + bf_delete(U); + } + // printf("n=%ld\n", n); + // bf_print_str("T", T); + + /* XXX: precision analysis */ + /* number of iterations for argument reduction 2 */ + K = bf_isqrt((prec + 1) / 2); + /* order of Taylor expansion */ + l = prec / (2 * K) + 1; + /* precision of the intermediate computations */ + prec1 = prec + K + 2 * l + 32; + + bf_init(s, U); + bf_init(s, V); + + /* Note: cancellation occurs here, so we use more precision (XXX: + reduce the precision by computing the exact cancellation) */ + bf_add_si(T, T, -1, BF_PREC_INF, BF_RNDN); + + /* argument reduction 2 */ + for(i = 0; i < K; i++) { + /* T = T / (1 + sqrt(1 + T)) */ + bf_add_si(U, T, 1, prec1, BF_RNDN); + bf_sqrt(V, U, prec1, BF_RNDF); + bf_add_si(U, V, 1, prec1, BF_RNDN); + bf_div(T, T, U, prec1, BF_RNDN); + } + + { + bf_t Y_s, *Y = &Y_s; + bf_t Y2_s, *Y2 = &Y2_s; + bf_init(s, Y); + bf_init(s, Y2); + + /* compute ln(1+x) = ln((1+y)/(1-y)) with y=x/(2+x) + = y + y^3/3 + ... + y^(2*l + 1) / (2*l+1) + with Y=Y^2 + = y*(1+Y/3+Y^2/5+...) = y*(1+Y*(1/3+Y*(1/5 + ...))) + */ + bf_add_si(Y, T, 2, prec1, BF_RNDN); + bf_div(Y, T, Y, prec1, BF_RNDN); + + bf_mul(Y2, Y, Y, prec1, BF_RNDN); + bf_set_ui(r, 0); + for(i = l; i >= 1; i--) { + bf_set_ui(U, 1); + bf_set_ui(V, 2 * i + 1); + bf_div(U, U, V, prec1, BF_RNDN); + bf_add(r, r, U, prec1, BF_RNDN); + bf_mul(r, r, Y2, prec1, BF_RNDN); + } + bf_add_si(r, r, 1, prec1, BF_RNDN); + bf_mul(r, r, Y, prec1, BF_RNDN); + bf_delete(Y); + bf_delete(Y2); + } + bf_delete(V); + bf_delete(U); + + /* multiplication by 2 for the Taylor expansion and undo the + argument reduction 2*/ + bf_mul_2exp(r, K + 1, BF_PREC_INF, BF_RNDZ); + + /* undo the argument reduction 1 */ + bf_const_log2(T, prec1, BF_RNDF); + bf_mul_si(T, T, n, prec1, BF_RNDN); + bf_add(r, r, T, prec1, BF_RNDN); + + bf_delete(T); + return BF_ST_INEXACT; +} + +int bf_log(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) +{ + bf_context_t *s = r->ctx; + bf_t T_s, *T = &T_s; + + assert(r != a); + if (a->len == 0) { + if (a->expn == BF_EXP_NAN) { + bf_set_nan(r); + return 0; + } else if (a->expn == BF_EXP_INF) { + if (a->sign) { + bf_set_nan(r); + return BF_ST_INVALID_OP; + } else { + bf_set_inf(r, 0); + return 0; + } + } else { + bf_set_inf(r, 1); + return 0; + } + } + if (a->sign) { + bf_set_nan(r); + return BF_ST_INVALID_OP; + } + bf_init(s, T); + bf_set_ui(T, 1); + if (bf_cmp_eq(a, T)) { + bf_set_zero(r, 0); + bf_delete(T); + return 0; + } + bf_delete(T); + + return bf_ziv_rounding(r, a, prec, flags, bf_log_internal, NULL); +} + +/* x and y finite and x > 0 */ +static int bf_pow_generic(bf_t *r, const bf_t *x, limb_t prec, void *opaque) +{ + bf_context_t *s = r->ctx; + const bf_t *y = opaque; + bf_t T_s, *T = &T_s; + limb_t prec1; + + bf_init(s, T); + /* XXX: proof for the added precision */ + prec1 = prec + 32; + bf_log(T, x, prec1, BF_RNDF | BF_FLAG_EXT_EXP); + bf_mul(T, T, y, prec1, BF_RNDF | BF_FLAG_EXT_EXP); + if (bf_is_nan(T)) + bf_set_nan(r); + else + bf_exp_internal(r, T, prec1, NULL); /* no overflow/underlow test needed */ + bf_delete(T); + return BF_ST_INEXACT; +} + +/* x and y finite, x > 0, y integer and y fits on one limb */ +static int bf_pow_int(bf_t *r, const bf_t *x, limb_t prec, void *opaque) +{ + bf_context_t *s = r->ctx; + const bf_t *y = opaque; + bf_t T_s, *T = &T_s; + limb_t prec1; + int ret; + slimb_t y1; + + bf_get_limb(&y1, y, 0); + if (y1 < 0) + y1 = -y1; + /* XXX: proof for the added precision */ + prec1 = prec + ceil_log2(y1) * 2 + 8; + ret = bf_pow_ui(r, x, y1 < 0 ? -y1 : y1, prec1, BF_RNDN | BF_FLAG_EXT_EXP); + if (y->sign) { + bf_init(s, T); + bf_set_ui(T, 1); + ret |= bf_div(r, T, r, prec1, BF_RNDN | BF_FLAG_EXT_EXP); + bf_delete(T); + } + return ret; +} + +/* x must be a finite non zero float. Return TRUE if there is a + floating point number r such as x=r^(2^n) and return this floating + point number 'r'. Otherwise return FALSE and r is undefined. */ +static BOOL check_exact_power2n(bf_t *r, const bf_t *x, slimb_t n) +{ + bf_context_t *s = r->ctx; + bf_t T_s, *T = &T_s; + slimb_t e, i, er; + limb_t v; + + /* x = m*2^e with m odd integer */ + e = bf_get_exp_min(x); + /* fast check on the exponent */ + if (n > (LIMB_BITS - 1)) { + if (e != 0) + return FALSE; + er = 0; + } else { + if ((e & (((limb_t)1 << n) - 1)) != 0) + return FALSE; + er = e >> n; + } + /* every perfect odd square = 1 modulo 8 */ + v = get_bits(x->tab, x->len, x->len * LIMB_BITS - x->expn + e); + if ((v & 7) != 1) + return FALSE; + + bf_init(s, T); + bf_set(T, x); + T->expn -= e; + for(i = 0; i < n; i++) { + if (i != 0) + bf_set(T, r); + if (bf_sqrtrem(r, NULL, T) != 0) + return FALSE; + } + r->expn += er; + return TRUE; +} + +/* prec = BF_PREC_INF is accepted for x and y integers and y >= 0 */ +int bf_pow(bf_t *r, const bf_t *x, const bf_t *y, limb_t prec, bf_flags_t flags) +{ + bf_context_t *s = r->ctx; + bf_t T_s, *T = &T_s; + bf_t ytmp_s; + BOOL y_is_int, y_is_odd; + int r_sign, ret, rnd_mode; + slimb_t y_emin; + + if (x->len == 0 || y->len == 0) { + if (y->expn == BF_EXP_ZERO) { + /* pow(x, 0) = 1 */ + bf_set_ui(r, 1); + } else if (x->expn == BF_EXP_NAN) { + bf_set_nan(r); + } else { + int cmp_x_abs_1; + bf_set_ui(r, 1); + cmp_x_abs_1 = bf_cmpu(x, r); + if (cmp_x_abs_1 == 0 && (flags & BF_POW_JS_QUIRKS) && + (y->expn >= BF_EXP_INF)) { + bf_set_nan(r); + } else if (cmp_x_abs_1 == 0 && + (!x->sign || y->expn != BF_EXP_NAN)) { + /* pow(1, y) = 1 even if y = NaN */ + /* pow(-1, +/-inf) = 1 */ + } else if (y->expn == BF_EXP_NAN) { + bf_set_nan(r); + } else if (y->expn == BF_EXP_INF) { + if (y->sign == (cmp_x_abs_1 > 0)) { + bf_set_zero(r, 0); + } else { + bf_set_inf(r, 0); + } + } else { + y_emin = bf_get_exp_min(y); + y_is_odd = (y_emin == 0); + if (y->sign == (x->expn == BF_EXP_ZERO)) { + bf_set_inf(r, y_is_odd & x->sign); + if (y->sign) { + /* pow(0, y) with y < 0 */ + return BF_ST_DIVIDE_ZERO; + } + } else { + bf_set_zero(r, y_is_odd & x->sign); + } + } + } + return 0; + } + bf_init(s, T); + bf_set(T, x); + y_emin = bf_get_exp_min(y); + y_is_int = (y_emin >= 0); + rnd_mode = flags & BF_RND_MASK; + if (x->sign) { + if (!y_is_int) { + bf_set_nan(r); + bf_delete(T); + return BF_ST_INVALID_OP; + } + y_is_odd = (y_emin == 0); + r_sign = y_is_odd; + /* change the directed rounding mode if the sign of the result + is changed */ + if (r_sign && (rnd_mode == BF_RNDD || rnd_mode == BF_RNDU)) + flags ^= 1; + bf_neg(T); + } else { + r_sign = 0; + } + + bf_set_ui(r, 1); + if (bf_cmp_eq(T, r)) { + /* abs(x) = 1: nothing more to do */ + ret = 0; + } else { + /* check the overflow/underflow cases */ + { + bf_t al_s, *al = &al_s; + bf_t ah_s, *ah = &ah_s; + limb_t precl = LIMB_BITS; + + bf_init(s, al); + bf_init(s, ah); + /* compute bounds of log(abs(x)) * y with a low precision */ + /* XXX: compute bf_log() once */ + /* XXX: add a fast test before this slow test */ + bf_log(al, T, precl, BF_RNDD); + bf_log(ah, T, precl, BF_RNDU); + bf_mul(al, al, y, precl, BF_RNDD ^ y->sign); + bf_mul(ah, ah, y, precl, BF_RNDU ^ y->sign); + ret = check_exp_underflow_overflow(s, r, al, ah, prec, flags); + bf_delete(al); + bf_delete(ah); + if (ret) + goto done; + } + + if (y_is_int) { + slimb_t T_bits, e; + int_pow: + T_bits = T->expn - bf_get_exp_min(T); + if (T_bits == 1) { + /* pow(2^b, y) = 2^(b*y) */ + bf_mul_si(T, y, T->expn - 1, LIMB_BITS, BF_RNDZ); + bf_get_limb(&e, T, 0); + bf_set_ui(r, 1); + ret = bf_mul_2exp(r, e, prec, flags); + } else if (prec == BF_PREC_INF) { + slimb_t y1; + /* specific case for infinite precision (integer case) */ + bf_get_limb(&y1, y, 0); + assert(!y->sign); + /* x must be an integer, so abs(x) >= 2 */ + if (y1 >= ((slimb_t)1 << BF_EXP_BITS_MAX)) { + bf_delete(T); + return bf_set_overflow(r, 0, BF_PREC_INF, flags); + } + ret = bf_pow_ui(r, T, y1, BF_PREC_INF, BF_RNDZ); + } else { + if (y->expn <= 31) { + /* small enough power: use exponentiation in all cases */ + } else if (y->sign) { + /* cannot be exact */ + goto general_case; + } else { + if (rnd_mode == BF_RNDF) + goto general_case; /* no need to track exact results */ + /* see if the result has a chance to be exact: + if x=a*2^b (a odd), x^y=a^y*2^(b*y) + x^y needs a precision of at least floor_log2(a)*y bits + */ + bf_mul_si(r, y, T_bits - 1, LIMB_BITS, BF_RNDZ); + bf_get_limb(&e, r, 0); + if (prec < e) + goto general_case; + } + ret = bf_ziv_rounding(r, T, prec, flags, bf_pow_int, (void *)y); + } + } else { + if (rnd_mode != BF_RNDF) { + bf_t *y1; + if (y_emin < 0 && check_exact_power2n(r, T, -y_emin)) { + /* the problem is reduced to a power to an integer */ +#if 0 + printf("\nn=%" PRId64 "\n", -(int64_t)y_emin); + bf_print_str("T", T); + bf_print_str("r", r); +#endif + bf_set(T, r); + y1 = &ytmp_s; + y1->tab = y->tab; + y1->len = y->len; + y1->sign = y->sign; + y1->expn = y->expn - y_emin; + y = y1; + goto int_pow; + } + } + general_case: + ret = bf_ziv_rounding(r, T, prec, flags, bf_pow_generic, (void *)y); + } + } + done: + bf_delete(T); + r->sign = r_sign; + return ret; +} + +/* compute sqrt(-2*x-x^2) to get |sin(x)| from cos(x) - 1. */ +static void bf_sqrt_sin(bf_t *r, const bf_t *x, limb_t prec1) +{ + bf_context_t *s = r->ctx; + bf_t T_s, *T = &T_s; + bf_init(s, T); + bf_set(T, x); + bf_mul(r, T, T, prec1, BF_RNDN); + bf_mul_2exp(T, 1, BF_PREC_INF, BF_RNDZ); + bf_add(T, T, r, prec1, BF_RNDN); + bf_neg(T); + bf_sqrt(r, T, prec1, BF_RNDF); + bf_delete(T); +} + +static int bf_sincos(bf_t *s, bf_t *c, const bf_t *a, limb_t prec) +{ + bf_context_t *s1 = a->ctx; + bf_t T_s, *T = &T_s; + bf_t U_s, *U = &U_s; + bf_t r_s, *r = &r_s; + slimb_t K, prec1, i, l, mod, prec2; + int is_neg; + + assert(c != a && s != a); + + bf_init(s1, T); + bf_init(s1, U); + bf_init(s1, r); + + /* XXX: precision analysis */ + K = bf_isqrt(prec / 2); + l = prec / (2 * K) + 1; + prec1 = prec + 2 * K + l + 8; + + /* after the modulo reduction, -pi/4 <= T <= pi/4 */ + if (a->expn <= -1) { + /* abs(a) <= 0.25: no modulo reduction needed */ + bf_set(T, a); + mod = 0; + } else { + slimb_t cancel; + cancel = 0; + for(;;) { + prec2 = prec1 + a->expn + cancel; + bf_const_pi(U, prec2, BF_RNDF); + bf_mul_2exp(U, -1, BF_PREC_INF, BF_RNDZ); + bf_remquo(&mod, T, a, U, prec2, BF_RNDN, BF_RNDN); + // printf("T.expn=%ld prec2=%ld\n", T->expn, prec2); + if (mod == 0 || (T->expn != BF_EXP_ZERO && + (T->expn + prec2) >= (prec1 - 1))) + break; + /* increase the number of bits until the precision is good enough */ + cancel = bf_max(-T->expn, (cancel + 1) * 3 / 2); + } + mod &= 3; + } + + is_neg = T->sign; + + /* compute cosm1(x) = cos(x) - 1 */ + bf_mul(T, T, T, prec1, BF_RNDN); + bf_mul_2exp(T, -2 * K, BF_PREC_INF, BF_RNDZ); + + /* Taylor expansion: + -x^2/2 + x^4/4! - x^6/6! + ... + */ + bf_set_ui(r, 1); + for(i = l ; i >= 1; i--) { + bf_set_ui(U, 2 * i - 1); + bf_mul_ui(U, U, 2 * i, BF_PREC_INF, BF_RNDZ); + bf_div(U, T, U, prec1, BF_RNDN); + bf_mul(r, r, U, prec1, BF_RNDN); + bf_neg(r); + if (i != 1) + bf_add_si(r, r, 1, prec1, BF_RNDN); + } + bf_delete(U); + + /* undo argument reduction: + cosm1(2*x)= 2*(2*cosm1(x)+cosm1(x)^2) + */ + for(i = 0; i < K; i++) { + bf_mul(T, r, r, prec1, BF_RNDN); + bf_mul_2exp(r, 1, BF_PREC_INF, BF_RNDZ); + bf_add(r, r, T, prec1, BF_RNDN); + bf_mul_2exp(r, 1, BF_PREC_INF, BF_RNDZ); + } + bf_delete(T); + + if (c) { + if ((mod & 1) == 0) { + bf_add_si(c, r, 1, prec1, BF_RNDN); + } else { + bf_sqrt_sin(c, r, prec1); + c->sign = is_neg ^ 1; + } + c->sign ^= mod >> 1; + } + if (s) { + if ((mod & 1) == 0) { + bf_sqrt_sin(s, r, prec1); + s->sign = is_neg; + } else { + bf_add_si(s, r, 1, prec1, BF_RNDN); + } + s->sign ^= mod >> 1; + } + bf_delete(r); + return BF_ST_INEXACT; +} + +static int bf_cos_internal(bf_t *r, const bf_t *a, limb_t prec, void *opaque) +{ + return bf_sincos(NULL, r, a, prec); +} + +int bf_cos(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) +{ + if (a->len == 0) { + if (a->expn == BF_EXP_NAN) { + bf_set_nan(r); + return 0; + } else if (a->expn == BF_EXP_INF) { + bf_set_nan(r); + return BF_ST_INVALID_OP; + } else { + bf_set_ui(r, 1); + return 0; + } + } + + /* small argument case: result = 1+r(x) with r(x) = -x^2/2 + + O(X^4). We assume r(x) < 2^(2*EXP(x) - 1). */ + if (a->expn < 0) { + slimb_t e; + e = 2 * a->expn - 1; + if (e < -(prec + 2)) { + bf_set_ui(r, 1); + return bf_add_epsilon(r, r, e, 1, prec, flags); + } + } + + return bf_ziv_rounding(r, a, prec, flags, bf_cos_internal, NULL); +} + +static int bf_sin_internal(bf_t *r, const bf_t *a, limb_t prec, void *opaque) +{ + return bf_sincos(r, NULL, a, prec); +} + +int bf_sin(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) +{ + if (a->len == 0) { + if (a->expn == BF_EXP_NAN) { + bf_set_nan(r); + return 0; + } else if (a->expn == BF_EXP_INF) { + bf_set_nan(r); + return BF_ST_INVALID_OP; + } else { + bf_set_zero(r, a->sign); + return 0; + } + } + + /* small argument case: result = x+r(x) with r(x) = -x^3/6 + + O(X^5). We assume r(x) < 2^(3*EXP(x) - 2). */ + if (a->expn < 0) { + slimb_t e; + e = sat_add(2 * a->expn, a->expn - 2); + if (e < a->expn - bf_max(prec + 2, a->len * LIMB_BITS + 2)) { + bf_set(r, a); + return bf_add_epsilon(r, r, e, 1 - a->sign, prec, flags); + } + } + + return bf_ziv_rounding(r, a, prec, flags, bf_sin_internal, NULL); +} + +static int bf_tan_internal(bf_t *r, const bf_t *a, limb_t prec, void *opaque) +{ + bf_context_t *s = r->ctx; + bf_t T_s, *T = &T_s; + limb_t prec1; + + /* XXX: precision analysis */ + prec1 = prec + 8; + bf_init(s, T); + bf_sincos(r, T, a, prec1); + bf_div(r, r, T, prec1, BF_RNDF); + bf_delete(T); + return BF_ST_INEXACT; +} + +int bf_tan(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) +{ + assert(r != a); + if (a->len == 0) { + if (a->expn == BF_EXP_NAN) { + bf_set_nan(r); + return 0; + } else if (a->expn == BF_EXP_INF) { + bf_set_nan(r); + return BF_ST_INVALID_OP; + } else { + bf_set_zero(r, a->sign); + return 0; + } + } + + /* small argument case: result = x+r(x) with r(x) = x^3/3 + + O(X^5). We assume r(x) < 2^(3*EXP(x) - 1). */ + if (a->expn < 0) { + slimb_t e; + e = sat_add(2 * a->expn, a->expn - 1); + if (e < a->expn - bf_max(prec + 2, a->len * LIMB_BITS + 2)) { + bf_set(r, a); + return bf_add_epsilon(r, r, e, a->sign, prec, flags); + } + } + + return bf_ziv_rounding(r, a, prec, flags, bf_tan_internal, NULL); +} + +/* if add_pi2 is true, add pi/2 to the result (used for acos(x) to + avoid cancellation) */ +static int bf_atan_internal(bf_t *r, const bf_t *a, limb_t prec, + void *opaque) +{ + bf_context_t *s = r->ctx; + BOOL add_pi2 = (BOOL)(intptr_t)opaque; + bf_t T_s, *T = &T_s; + bf_t U_s, *U = &U_s; + bf_t V_s, *V = &V_s; + bf_t X2_s, *X2 = &X2_s; + int cmp_1; + slimb_t prec1, i, K, l; + + /* XXX: precision analysis */ + K = bf_isqrt((prec + 1) / 2); + l = prec / (2 * K) + 1; + prec1 = prec + K + 2 * l + 32; + // printf("prec=%d K=%d l=%d prec1=%d\n", (int)prec, (int)K, (int)l, (int)prec1); + + bf_init(s, T); + cmp_1 = (a->expn >= 1); /* a >= 1 */ + if (cmp_1) { + bf_set_ui(T, 1); + bf_div(T, T, a, prec1, BF_RNDN); + } else { + bf_set(T, a); + } + + /* abs(T) <= 1 */ + + /* argument reduction */ + + bf_init(s, U); + bf_init(s, V); + bf_init(s, X2); + for(i = 0; i < K; i++) { + /* T = T / (1 + sqrt(1 + T^2)) */ + bf_mul(U, T, T, prec1, BF_RNDN); + bf_add_si(U, U, 1, prec1, BF_RNDN); + bf_sqrt(V, U, prec1, BF_RNDN); + bf_add_si(V, V, 1, prec1, BF_RNDN); + bf_div(T, T, V, prec1, BF_RNDN); + } + + /* Taylor series: + x - x^3/3 + ... + (-1)^ l * y^(2*l + 1) / (2*l+1) + */ + bf_mul(X2, T, T, prec1, BF_RNDN); + bf_set_ui(r, 0); + for(i = l; i >= 1; i--) { + bf_set_si(U, 1); + bf_set_ui(V, 2 * i + 1); + bf_div(U, U, V, prec1, BF_RNDN); + bf_neg(r); + bf_add(r, r, U, prec1, BF_RNDN); + bf_mul(r, r, X2, prec1, BF_RNDN); + } + bf_neg(r); + bf_add_si(r, r, 1, prec1, BF_RNDN); + bf_mul(r, r, T, prec1, BF_RNDN); + + /* undo the argument reduction */ + bf_mul_2exp(r, K, BF_PREC_INF, BF_RNDZ); + + bf_delete(U); + bf_delete(V); + bf_delete(X2); + + i = add_pi2; + if (cmp_1 > 0) { + /* undo the inversion : r = sign(a)*PI/2 - r */ + bf_neg(r); + i += 1 - 2 * a->sign; + } + /* add i*(pi/2) with -1 <= i <= 2 */ + if (i != 0) { + bf_const_pi(T, prec1, BF_RNDF); + if (i != 2) + bf_mul_2exp(T, -1, BF_PREC_INF, BF_RNDZ); + T->sign = (i < 0); + bf_add(r, T, r, prec1, BF_RNDN); + } + + bf_delete(T); + return BF_ST_INEXACT; +} + +int bf_atan(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) +{ + bf_context_t *s = r->ctx; + bf_t T_s, *T = &T_s; + int res; + + if (a->len == 0) { + if (a->expn == BF_EXP_NAN) { + bf_set_nan(r); + return 0; + } else if (a->expn == BF_EXP_INF) { + /* -PI/2 or PI/2 */ + bf_const_pi_signed(r, a->sign, prec, flags); + bf_mul_2exp(r, -1, BF_PREC_INF, BF_RNDZ); + return BF_ST_INEXACT; + } else { + bf_set_zero(r, a->sign); + return 0; + } + } + + bf_init(s, T); + bf_set_ui(T, 1); + res = bf_cmpu(a, T); + bf_delete(T); + if (res == 0) { + /* short cut: abs(a) == 1 -> +/-pi/4 */ + bf_const_pi_signed(r, a->sign, prec, flags); + bf_mul_2exp(r, -2, BF_PREC_INF, BF_RNDZ); + return BF_ST_INEXACT; + } + + /* small argument case: result = x+r(x) with r(x) = -x^3/3 + + O(X^5). We assume r(x) < 2^(3*EXP(x) - 1). */ + if (a->expn < 0) { + slimb_t e; + e = sat_add(2 * a->expn, a->expn - 1); + if (e < a->expn - bf_max(prec + 2, a->len * LIMB_BITS + 2)) { + bf_set(r, a); + return bf_add_epsilon(r, r, e, 1 - a->sign, prec, flags); + } + } + + return bf_ziv_rounding(r, a, prec, flags, bf_atan_internal, (void *)FALSE); +} + +static int bf_atan2_internal(bf_t *r, const bf_t *y, limb_t prec, void *opaque) +{ + bf_context_t *s = r->ctx; + const bf_t *x = opaque; + bf_t T_s, *T = &T_s; + limb_t prec1; + int ret; + + if (y->expn == BF_EXP_NAN || x->expn == BF_EXP_NAN) { + bf_set_nan(r); + return 0; + } + + /* compute atan(y/x) assumming inf/inf = 1 and 0/0 = 0 */ + bf_init(s, T); + prec1 = prec + 32; + if (y->expn == BF_EXP_INF && x->expn == BF_EXP_INF) { + bf_set_ui(T, 1); + T->sign = y->sign ^ x->sign; + } else if (y->expn == BF_EXP_ZERO && x->expn == BF_EXP_ZERO) { + bf_set_zero(T, y->sign ^ x->sign); + } else { + bf_div(T, y, x, prec1, BF_RNDF); + } + ret = bf_atan(r, T, prec1, BF_RNDF); + + if (x->sign) { + /* if x < 0 (it includes -0), return sign(y)*pi + atan(y/x) */ + bf_const_pi(T, prec1, BF_RNDF); + T->sign = y->sign; + bf_add(r, r, T, prec1, BF_RNDN); + ret |= BF_ST_INEXACT; + } + + bf_delete(T); + return ret; +} + +int bf_atan2(bf_t *r, const bf_t *y, const bf_t *x, + limb_t prec, bf_flags_t flags) +{ + return bf_ziv_rounding(r, y, prec, flags, bf_atan2_internal, (void *)x); +} + +static int bf_asin_internal(bf_t *r, const bf_t *a, limb_t prec, void *opaque) +{ + bf_context_t *s = r->ctx; + BOOL is_acos = (BOOL)(intptr_t)opaque; + bf_t T_s, *T = &T_s; + limb_t prec1, prec2; + + /* asin(x) = atan(x/sqrt(1-x^2)) + acos(x) = pi/2 - asin(x) */ + prec1 = prec + 8; + /* increase the precision in x^2 to compensate the cancellation in + (1-x^2) if x is close to 1 */ + /* XXX: use less precision when possible */ + if (a->expn >= 0) + prec2 = BF_PREC_INF; + else + prec2 = prec1; + bf_init(s, T); + bf_mul(T, a, a, prec2, BF_RNDN); + bf_neg(T); + bf_add_si(T, T, 1, prec2, BF_RNDN); + + bf_sqrt(r, T, prec1, BF_RNDN); + bf_div(T, a, r, prec1, BF_RNDN); + if (is_acos) + bf_neg(T); + bf_atan_internal(r, T, prec1, (void *)(intptr_t)is_acos); + bf_delete(T); + return BF_ST_INEXACT; +} + +int bf_asin(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) +{ + bf_context_t *s = r->ctx; + bf_t T_s, *T = &T_s; + int res; + + if (a->len == 0) { + if (a->expn == BF_EXP_NAN) { + bf_set_nan(r); + return 0; + } else if (a->expn == BF_EXP_INF) { + bf_set_nan(r); + return BF_ST_INVALID_OP; + } else { + bf_set_zero(r, a->sign); + return 0; + } + } + bf_init(s, T); + bf_set_ui(T, 1); + res = bf_cmpu(a, T); + bf_delete(T); + if (res > 0) { + bf_set_nan(r); + return BF_ST_INVALID_OP; + } + + /* small argument case: result = x+r(x) with r(x) = x^3/6 + + O(X^5). We assume r(x) < 2^(3*EXP(x) - 2). */ + if (a->expn < 0) { + slimb_t e; + e = sat_add(2 * a->expn, a->expn - 2); + if (e < a->expn - bf_max(prec + 2, a->len * LIMB_BITS + 2)) { + bf_set(r, a); + return bf_add_epsilon(r, r, e, a->sign, prec, flags); + } + } + + return bf_ziv_rounding(r, a, prec, flags, bf_asin_internal, (void *)FALSE); +} + +int bf_acos(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags) +{ + bf_context_t *s = r->ctx; + bf_t T_s, *T = &T_s; + int res; + + if (a->len == 0) { + if (a->expn == BF_EXP_NAN) { + bf_set_nan(r); + return 0; + } else if (a->expn == BF_EXP_INF) { + bf_set_nan(r); + return BF_ST_INVALID_OP; + } else { + bf_const_pi(r, prec, flags); + bf_mul_2exp(r, -1, BF_PREC_INF, BF_RNDZ); + return BF_ST_INEXACT; + } + } + bf_init(s, T); + bf_set_ui(T, 1); + res = bf_cmpu(a, T); + bf_delete(T); + if (res > 0) { + bf_set_nan(r); + return BF_ST_INVALID_OP; + } else if (res == 0 && a->sign == 0) { + bf_set_zero(r, 0); + return 0; + } + + return bf_ziv_rounding(r, a, prec, flags, bf_asin_internal, (void *)TRUE); +} + +/***************************************************************/ +/* decimal floating point numbers */ + +#ifdef USE_BF_DEC + +#define adddq(r1, r0, a1, a0) \ + do { \ + limb_t __t = r0; \ + r0 += (a0); \ + r1 += (a1) + (r0 < __t); \ + } while (0) + +#define subdq(r1, r0, a1, a0) \ + do { \ + limb_t __t = r0; \ + r0 -= (a0); \ + r1 -= (a1) + (r0 > __t); \ + } while (0) + +#if LIMB_BITS == 64 + +/* Note: we assume __int128 is available */ +#define muldq(r1, r0, a, b) \ + do { \ + unsigned __int128 __t; \ + __t = (unsigned __int128)(a) * (unsigned __int128)(b); \ + r0 = __t; \ + r1 = __t >> 64; \ + } while (0) + +#define divdq(q, r, a1, a0, b) \ + do { \ + unsigned __int128 __t; \ + limb_t __b = (b); \ + __t = ((unsigned __int128)(a1) << 64) | (a0); \ + q = __t / __b; \ + r = __t % __b; \ + } while (0) + +#else + +#define muldq(r1, r0, a, b) \ + do { \ + uint64_t __t; \ + __t = (uint64_t)(a) * (uint64_t)(b); \ + r0 = __t; \ + r1 = __t >> 32; \ + } while (0) + +#define divdq(q, r, a1, a0, b) \ + do { \ + uint64_t __t; \ + limb_t __b = (b); \ + __t = ((uint64_t)(a1) << 32) | (a0); \ + q = __t / __b; \ + r = __t % __b; \ + } while (0) + +#endif /* LIMB_BITS != 64 */ + +static inline __maybe_unused limb_t shrd(limb_t low, limb_t high, long shift) +{ + if (shift != 0) + low = (low >> shift) | (high << (LIMB_BITS - shift)); + return low; +} + +static inline __maybe_unused limb_t shld(limb_t a1, limb_t a0, long shift) +{ + if (shift != 0) + return (a1 << shift) | (a0 >> (LIMB_BITS - shift)); + else + return a1; +} + +#if LIMB_DIGITS == 19 + +/* WARNING: hardcoded for b = 1e19. It is assumed that: + 0 <= a1 < 2^63 */ +#define divdq_base(q, r, a1, a0)\ +do {\ + uint64_t __a0, __a1, __t0, __t1, __b = BF_DEC_BASE; \ + __a0 = a0;\ + __a1 = a1;\ + __t0 = __a1;\ + __t0 = shld(__t0, __a0, 1);\ + muldq(q, __t1, __t0, UINT64_C(17014118346046923173)); \ + muldq(__t1, __t0, q, __b);\ + subdq(__a1, __a0, __t1, __t0);\ + subdq(__a1, __a0, 1, __b * 2); \ + __t0 = (slimb_t)__a1 >> 1; \ + q += 2 + __t0;\ + adddq(__a1, __a0, 0, __b & __t0);\ + q += __a1; \ + __a0 += __b & __a1; \ + r = __a0;\ +} while(0) + +#elif LIMB_DIGITS == 9 + +/* WARNING: hardcoded for b = 1e9. It is assumed that: + 0 <= a1 < 2^29 */ +#define divdq_base(q, r, a1, a0)\ +do {\ + uint32_t __t0, __t1, __b = BF_DEC_BASE; \ + __t0 = a1;\ + __t1 = a0;\ + __t0 = (__t0 << 3) | (__t1 >> (32 - 3)); \ + muldq(q, __t1, __t0, 2305843009U);\ + r = a0 - q * __b;\ + __t1 = (r >= __b);\ + q += __t1;\ + if (__t1)\ + r -= __b;\ +} while(0) + +#endif + +/* fast integer division by a fixed constant */ + +typedef struct FastDivData { + limb_t m1; /* multiplier */ + int8_t shift1; + int8_t shift2; +} FastDivData; + +/* From "Division by Invariant Integers using Multiplication" by + Torborn Granlund and Peter L. Montgomery */ +/* d must be != 0 */ +static inline __maybe_unused void fast_udiv_init(FastDivData *s, limb_t d) +{ + int l; + limb_t q, r, m1; + if (d == 1) + l = 0; + else + l = 64 - clz64(d - 1); + divdq(q, r, ((limb_t)1 << l) - d, 0, d); + (void)r; + m1 = q + 1; + // printf("d=%lu l=%d m1=0x%016lx\n", d, l, m1); + s->m1 = m1; + s->shift1 = l; + if (s->shift1 > 1) + s->shift1 = 1; + s->shift2 = l - 1; + if (s->shift2 < 0) + s->shift2 = 0; +} + +static inline limb_t fast_udiv(limb_t a, const FastDivData *s) +{ + limb_t t0, t1; + muldq(t1, t0, s->m1, a); + t0 = (a - t1) >> s->shift1; + return (t1 + t0) >> s->shift2; +} + +/* contains 10^i */ +const limb_t mp_pow_dec[LIMB_DIGITS + 1] = { + 1U, + 10U, + 100U, + 1000U, + 10000U, + 100000U, + 1000000U, + 10000000U, + 100000000U, + 1000000000U, +#if LIMB_BITS == 64 + 10000000000U, + 100000000000U, + 1000000000000U, + 10000000000000U, + 100000000000000U, + 1000000000000000U, + 10000000000000000U, + 100000000000000000U, + 1000000000000000000U, + 10000000000000000000U, +#endif +}; + +/* precomputed from fast_udiv_init(10^i) */ +static const FastDivData mp_pow_div[LIMB_DIGITS + 1] = { +#if LIMB_BITS == 32 + { 0x00000001, 0, 0 }, + { 0x9999999a, 1, 3 }, + { 0x47ae147b, 1, 6 }, + { 0x0624dd30, 1, 9 }, + { 0xa36e2eb2, 1, 13 }, + { 0x4f8b588f, 1, 16 }, + { 0x0c6f7a0c, 1, 19 }, + { 0xad7f29ac, 1, 23 }, + { 0x5798ee24, 1, 26 }, + { 0x12e0be83, 1, 29 }, +#else + { 0x0000000000000001, 0, 0 }, + { 0x999999999999999a, 1, 3 }, + { 0x47ae147ae147ae15, 1, 6 }, + { 0x0624dd2f1a9fbe77, 1, 9 }, + { 0xa36e2eb1c432ca58, 1, 13 }, + { 0x4f8b588e368f0847, 1, 16 }, + { 0x0c6f7a0b5ed8d36c, 1, 19 }, + { 0xad7f29abcaf48579, 1, 23 }, + { 0x5798ee2308c39dfa, 1, 26 }, + { 0x12e0be826d694b2f, 1, 29 }, + { 0xb7cdfd9d7bdbab7e, 1, 33 }, + { 0x5fd7fe17964955fe, 1, 36 }, + { 0x19799812dea11198, 1, 39 }, + { 0xc25c268497681c27, 1, 43 }, + { 0x6849b86a12b9b01f, 1, 46 }, + { 0x203af9ee756159b3, 1, 49 }, + { 0xcd2b297d889bc2b7, 1, 53 }, + { 0x70ef54646d496893, 1, 56 }, + { 0x2725dd1d243aba0f, 1, 59 }, + { 0xd83c94fb6d2ac34d, 1, 63 }, +#endif +}; + +/* divide by 10^shift with 0 <= shift <= LIMB_DIGITS */ +static inline limb_t fast_shr_dec(limb_t a, int shift) +{ + return fast_udiv(a, &mp_pow_div[shift]); +} + +/* division and remainder by 10^shift */ +#define fast_shr_rem_dec(q, r, a, shift) q = fast_shr_dec(a, shift), r = a - q * mp_pow_dec[shift] + +limb_t mp_add_dec(limb_t *res, const limb_t *op1, const limb_t *op2, + mp_size_t n, limb_t carry) +{ + limb_t base = BF_DEC_BASE; + mp_size_t i; + limb_t k, a, v; + + k=carry; + for(i=0;i v; + if (k) + a += base; + res[i] = a; + } + return k; +} + +limb_t mp_sub_ui_dec(limb_t *tab, limb_t b, mp_size_t n) +{ + limb_t base = BF_DEC_BASE; + mp_size_t i; + limb_t k, v, a; + + k=b; + for(i=0;i v; + if (k) + a += base; + tab[i]=a; + if (k == 0) + break; + } + return k; +} + +/* taba[] = taba[] * b + l. 0 <= b, l <= base - 1. Return the high carry */ +limb_t mp_mul1_dec(limb_t *tabr, const limb_t *taba, mp_size_t n, + limb_t b, limb_t l) +{ + mp_size_t i; + limb_t t0, t1, r; + + for(i = 0; i < n; i++) { + muldq(t1, t0, taba[i], b); + adddq(t1, t0, 0, l); + divdq_base(l, r, t1, t0); + tabr[i] = r; + } + return l; +} + +/* tabr[] += taba[] * b. 0 <= b <= base - 1. Return the value to add + to the high word */ +limb_t mp_add_mul1_dec(limb_t *tabr, const limb_t *taba, mp_size_t n, + limb_t b) +{ + mp_size_t i; + limb_t l, t0, t1, r; + + l = 0; + for(i = 0; i < n; i++) { + muldq(t1, t0, taba[i], b); + adddq(t1, t0, 0, l); + adddq(t1, t0, 0, tabr[i]); + divdq_base(l, r, t1, t0); + tabr[i] = r; + } + return l; +} + +/* tabr[] -= taba[] * b. 0 <= b <= base - 1. Return the value to + substract to the high word. */ +limb_t mp_sub_mul1_dec(limb_t *tabr, const limb_t *taba, mp_size_t n, + limb_t b) +{ + limb_t base = BF_DEC_BASE; + mp_size_t i; + limb_t l, t0, t1, r, a, v, c; + + /* XXX: optimize */ + l = 0; + for(i = 0; i < n; i++) { + muldq(t1, t0, taba[i], b); + adddq(t1, t0, 0, l); + divdq_base(l, r, t1, t0); + v = tabr[i]; + a = v - r; + c = a > v; + if (c) + a += base; + /* never bigger than base because r = 0 when l = base - 1 */ + l += c; + tabr[i] = a; + } + return l; +} + +/* size of the result : op1_size + op2_size. */ +void mp_mul_basecase_dec(limb_t *result, + const limb_t *op1, mp_size_t op1_size, + const limb_t *op2, mp_size_t op2_size) +{ + mp_size_t i; + limb_t r; + + result[op1_size] = mp_mul1_dec(result, op1, op1_size, op2[0], 0); + + for(i=1;i> 1; + if (r) + r = base_div2; + for(i = na - 1; i >= 0; i--) { + t0 = taba[i]; + tabr[i] = (t0 >> 1) + r; + r = 0; + if (t0 & 1) + r = base_div2; + } + if (r) + r = 1; + } else +#endif + if (na >= UDIV1NORM_THRESHOLD) { + shift = clz(b); + if (shift == 0) { + /* normalized case: b >= 2^(LIMB_BITS-1) */ + limb_t b_inv; + b_inv = udiv1norm_init(b); + for(i = na - 1; i >= 0; i--) { + muldq(t1, t0, r, base); + adddq(t1, t0, 0, taba[i]); + q = udiv1norm(&r, t1, t0, b, b_inv); + tabr[i] = q; + } + } else { + limb_t b_inv; + b <<= shift; + b_inv = udiv1norm_init(b); + for(i = na - 1; i >= 0; i--) { + muldq(t1, t0, r, base); + adddq(t1, t0, 0, taba[i]); + t1 = (t1 << shift) | (t0 >> (LIMB_BITS - shift)); + t0 <<= shift; + q = udiv1norm(&r, t1, t0, b, b_inv); + r >>= shift; + tabr[i] = q; + } + } + } else { + for(i = na - 1; i >= 0; i--) { + muldq(t1, t0, r, base); + adddq(t1, t0, 0, taba[i]); + divdq(q, r, t1, t0, b); + tabr[i] = q; + } + } + return r; +} + +static __maybe_unused void mp_print_str_dec(const char *str, + const limb_t *tab, slimb_t n) +{ + slimb_t i; + printf("%s=", str); + for(i = n - 1; i >= 0; i--) { + if (i != n - 1) + printf("_"); + printf("%0*" PRIu_LIMB, LIMB_DIGITS, tab[i]); + } + printf("\n"); +} + +static __maybe_unused void mp_print_str_h_dec(const char *str, + const limb_t *tab, slimb_t n, + limb_t high) +{ + slimb_t i; + printf("%s=", str); + printf("%0*" PRIu_LIMB, LIMB_DIGITS, high); + for(i = n - 1; i >= 0; i--) { + printf("_"); + printf("%0*" PRIu_LIMB, LIMB_DIGITS, tab[i]); + } + printf("\n"); +} + +//#define DEBUG_DIV_SLOW + +#define DIV_STATIC_ALLOC_LEN 16 + +/* return q = a / b and r = a % b. + + taba[na] must be allocated if tabb1[nb - 1] < B / 2. tabb1[nb - 1] + must be != zero. na must be >= nb. 's' can be NULL if tabb1[nb - 1] + >= B / 2. + + The remainder is is returned in taba and contains nb libms. tabq + contains na - nb + 1 limbs. No overlap is permitted. + + Running time of the standard method: (na - nb + 1) * nb + Return 0 if OK, -1 if memory alloc error +*/ +/* XXX: optimize */ +static int mp_div_dec(bf_context_t *s, limb_t *tabq, + limb_t *taba, mp_size_t na, + const limb_t *tabb1, mp_size_t nb) +{ + limb_t base = BF_DEC_BASE; + limb_t r, mult, t0, t1, a, c, q, v, *tabb; + mp_size_t i, j; + limb_t static_tabb[DIV_STATIC_ALLOC_LEN]; + +#ifdef DEBUG_DIV_SLOW + mp_print_str_dec("a", taba, na); + mp_print_str_dec("b", tabb1, nb); +#endif + + /* normalize tabb */ + r = tabb1[nb - 1]; + assert(r != 0); + i = na - nb; + if (r >= BF_DEC_BASE / 2) { + mult = 1; + tabb = (limb_t *)tabb1; + q = 1; + for(j = nb - 1; j >= 0; j--) { + if (taba[i + j] != tabb[j]) { + if (taba[i + j] < tabb[j]) + q = 0; + break; + } + } + tabq[i] = q; + if (q) { + mp_sub_dec(taba + i, taba + i, tabb, nb, 0); + } + i--; + } else { + mult = base / (r + 1); + if (likely(nb <= DIV_STATIC_ALLOC_LEN)) { + tabb = static_tabb; + } else { + tabb = bf_malloc(s, sizeof(limb_t) * nb); + if (!tabb) + return -1; + } + mp_mul1_dec(tabb, tabb1, nb, mult, 0); + taba[na] = mp_mul1_dec(taba, taba, na, mult, 0); + } + +#ifdef DEBUG_DIV_SLOW + printf("mult=" FMT_LIMB "\n", mult); + mp_print_str_dec("a_norm", taba, na + 1); + mp_print_str_dec("b_norm", tabb, nb); +#endif + + for(; i >= 0; i--) { + if (unlikely(taba[i + nb] >= tabb[nb - 1])) { + /* XXX: check if it is really possible */ + q = base - 1; + } else { + muldq(t1, t0, taba[i + nb], base); + adddq(t1, t0, 0, taba[i + nb - 1]); + divdq(q, r, t1, t0, tabb[nb - 1]); + } + // printf("i=%d q1=%ld\n", i, q); + + r = mp_sub_mul1_dec(taba + i, tabb, nb, q); + // mp_dump("r1", taba + i, nb, bd); + // printf("r2=%ld\n", r); + + v = taba[i + nb]; + a = v - r; + c = a > v; + if (c) + a += base; + taba[i + nb] = a; + + if (c != 0) { + /* negative result */ + for(;;) { + q--; + c = mp_add_dec(taba + i, taba + i, tabb, nb, 0); + /* propagate carry and test if positive result */ + if (c != 0) { + if (++taba[i + nb] == base) { + break; + } + } + } + } + tabq[i] = q; + } + +#ifdef DEBUG_DIV_SLOW + mp_print_str_dec("q", tabq, na - nb + 1); + mp_print_str_dec("r", taba, nb); +#endif + + /* remove the normalization */ + if (mult != 1) { + mp_div1_dec(taba, taba, nb, mult, 0); + if (unlikely(tabb != static_tabb)) + bf_free(s, tabb); + } + return 0; +} + +/* divide by 10^shift */ +static limb_t mp_shr_dec(limb_t *tab_r, const limb_t *tab, mp_size_t n, + limb_t shift, limb_t high) +{ + mp_size_t i; + limb_t l, a, q, r; + + assert(shift >= 1 && shift < LIMB_DIGITS); + l = high; + for(i = n - 1; i >= 0; i--) { + a = tab[i]; + fast_shr_rem_dec(q, r, a, shift); + tab_r[i] = q + l * mp_pow_dec[LIMB_DIGITS - shift]; + l = r; + } + return l; +} + +/* multiply by 10^shift */ +static limb_t mp_shl_dec(limb_t *tab_r, const limb_t *tab, mp_size_t n, + limb_t shift, limb_t low) +{ + mp_size_t i; + limb_t l, a, q, r; + + assert(shift >= 1 && shift < LIMB_DIGITS); + l = low; + for(i = 0; i < n; i++) { + a = tab[i]; + fast_shr_rem_dec(q, r, a, LIMB_DIGITS - shift); + tab_r[i] = r * mp_pow_dec[shift] + l; + l = q; + } + return l; +} + +static limb_t mp_sqrtrem2_dec(limb_t *tabs, limb_t *taba) +{ + int k; + dlimb_t a, b, r; + limb_t taba1[2], s, r0, r1; + + /* convert to binary and normalize */ + a = (dlimb_t)taba[1] * BF_DEC_BASE + taba[0]; + k = clz(a >> LIMB_BITS) & ~1; + b = a << k; + taba1[0] = b; + taba1[1] = b >> LIMB_BITS; + mp_sqrtrem2(&s, taba1); + s >>= (k >> 1); + /* convert the remainder back to decimal */ + r = a - (dlimb_t)s * (dlimb_t)s; + divdq_base(r1, r0, r >> LIMB_BITS, r); + taba[0] = r0; + tabs[0] = s; + return r1; +} + +//#define DEBUG_SQRTREM_DEC + +/* tmp_buf must contain (n / 2 + 1 limbs) */ +static limb_t mp_sqrtrem_rec_dec(limb_t *tabs, limb_t *taba, limb_t n, + limb_t *tmp_buf) +{ + limb_t l, h, rh, ql, qh, c, i; + + if (n == 1) + return mp_sqrtrem2_dec(tabs, taba); +#ifdef DEBUG_SQRTREM_DEC + mp_print_str_dec("a", taba, 2 * n); +#endif + l = n / 2; + h = n - l; + qh = mp_sqrtrem_rec_dec(tabs + l, taba + 2 * l, h, tmp_buf); +#ifdef DEBUG_SQRTREM_DEC + mp_print_str_dec("s1", tabs + l, h); + mp_print_str_h_dec("r1", taba + 2 * l, h, qh); + mp_print_str_h_dec("r2", taba + l, n, qh); +#endif + + /* the remainder is in taba + 2 * l. Its high bit is in qh */ + if (qh) { + mp_sub_dec(taba + 2 * l, taba + 2 * l, tabs + l, h, 0); + } + /* instead of dividing by 2*s, divide by s (which is normalized) + and update q and r */ + mp_div_dec(NULL, tmp_buf, taba + l, n, tabs + l, h); + qh += tmp_buf[l]; + for(i = 0; i < l; i++) + tabs[i] = tmp_buf[i]; + ql = mp_div1_dec(tabs, tabs, l, 2, qh & 1); + qh = qh >> 1; /* 0 or 1 */ + if (ql) + rh = mp_add_dec(taba + l, taba + l, tabs + l, h, 0); + else + rh = 0; +#ifdef DEBUG_SQRTREM_DEC + mp_print_str_h_dec("q", tabs, l, qh); + mp_print_str_h_dec("u", taba + l, h, rh); +#endif + + mp_add_ui_dec(tabs + l, qh, h); +#ifdef DEBUG_SQRTREM_DEC + mp_print_str_dec("s2", tabs, n); +#endif + + /* q = qh, tabs[l - 1 ... 0], r = taba[n - 1 ... l] */ + /* subtract q^2. if qh = 1 then q = B^l, so we can take shortcuts */ + if (qh) { + c = qh; + } else { + mp_mul_basecase_dec(taba + n, tabs, l, tabs, l); + c = mp_sub_dec(taba, taba, taba + n, 2 * l, 0); + } + rh -= mp_sub_ui_dec(taba + 2 * l, c, n - 2 * l); + if ((slimb_t)rh < 0) { + mp_sub_ui_dec(tabs, 1, n); + rh += mp_add_mul1_dec(taba, tabs, n, 2); + rh += mp_add_ui_dec(taba, 1, n); + } + return rh; +} + +/* 'taba' has 2*n limbs with n >= 1 and taba[2*n-1] >= B/4. Return (s, + r) with s=floor(sqrt(a)) and r=a-s^2. 0 <= r <= 2 * s. tabs has n + limbs. r is returned in the lower n limbs of taba. Its r[n] is the + returned value of the function. */ +int mp_sqrtrem_dec(bf_context_t *s, limb_t *tabs, limb_t *taba, limb_t n) +{ + limb_t tmp_buf1[8]; + limb_t *tmp_buf; + mp_size_t n2; + n2 = n / 2 + 1; + if (n2 <= countof(tmp_buf1)) { + tmp_buf = tmp_buf1; + } else { + tmp_buf = bf_malloc(s, sizeof(limb_t) * n2); + if (!tmp_buf) + return -1; + } + taba[n] = mp_sqrtrem_rec_dec(tabs, taba, n, tmp_buf); + if (tmp_buf != tmp_buf1) + bf_free(s, tmp_buf); + return 0; +} + +/* return the number of leading zero digits, from 0 to LIMB_DIGITS */ +static int clz_dec(limb_t a) +{ + if (a == 0) + return LIMB_DIGITS; + switch(LIMB_BITS - 1 - clz(a)) { + case 0: /* 1-1 */ + return LIMB_DIGITS - 1; + case 1: /* 2-3 */ + return LIMB_DIGITS - 1; + case 2: /* 4-7 */ + return LIMB_DIGITS - 1; + case 3: /* 8-15 */ + if (a < 10) + return LIMB_DIGITS - 1; + else + return LIMB_DIGITS - 2; + case 4: /* 16-31 */ + return LIMB_DIGITS - 2; + case 5: /* 32-63 */ + return LIMB_DIGITS - 2; + case 6: /* 64-127 */ + if (a < 100) + return LIMB_DIGITS - 2; + else + return LIMB_DIGITS - 3; + case 7: /* 128-255 */ + return LIMB_DIGITS - 3; + case 8: /* 256-511 */ + return LIMB_DIGITS - 3; + case 9: /* 512-1023 */ + if (a < 1000) + return LIMB_DIGITS - 3; + else + return LIMB_DIGITS - 4; + case 10: /* 1024-2047 */ + return LIMB_DIGITS - 4; + case 11: /* 2048-4095 */ + return LIMB_DIGITS - 4; + case 12: /* 4096-8191 */ + return LIMB_DIGITS - 4; + case 13: /* 8192-16383 */ + if (a < 10000) + return LIMB_DIGITS - 4; + else + return LIMB_DIGITS - 5; + case 14: /* 16384-32767 */ + return LIMB_DIGITS - 5; + case 15: /* 32768-65535 */ + return LIMB_DIGITS - 5; + case 16: /* 65536-131071 */ + if (a < 100000) + return LIMB_DIGITS - 5; + else + return LIMB_DIGITS - 6; + case 17: /* 131072-262143 */ + return LIMB_DIGITS - 6; + case 18: /* 262144-524287 */ + return LIMB_DIGITS - 6; + case 19: /* 524288-1048575 */ + if (a < 1000000) + return LIMB_DIGITS - 6; + else + return LIMB_DIGITS - 7; + case 20: /* 1048576-2097151 */ + return LIMB_DIGITS - 7; + case 21: /* 2097152-4194303 */ + return LIMB_DIGITS - 7; + case 22: /* 4194304-8388607 */ + return LIMB_DIGITS - 7; + case 23: /* 8388608-16777215 */ + if (a < 10000000) + return LIMB_DIGITS - 7; + else + return LIMB_DIGITS - 8; + case 24: /* 16777216-33554431 */ + return LIMB_DIGITS - 8; + case 25: /* 33554432-67108863 */ + return LIMB_DIGITS - 8; + case 26: /* 67108864-134217727 */ + if (a < 100000000) + return LIMB_DIGITS - 8; + else + return LIMB_DIGITS - 9; +#if LIMB_BITS == 64 + case 27: /* 134217728-268435455 */ + return LIMB_DIGITS - 9; + case 28: /* 268435456-536870911 */ + return LIMB_DIGITS - 9; + case 29: /* 536870912-1073741823 */ + if (a < 1000000000) + return LIMB_DIGITS - 9; + else + return LIMB_DIGITS - 10; + case 30: /* 1073741824-2147483647 */ + return LIMB_DIGITS - 10; + case 31: /* 2147483648-4294967295 */ + return LIMB_DIGITS - 10; + case 32: /* 4294967296-8589934591 */ + return LIMB_DIGITS - 10; + case 33: /* 8589934592-17179869183 */ + if (a < 10000000000) + return LIMB_DIGITS - 10; + else + return LIMB_DIGITS - 11; + case 34: /* 17179869184-34359738367 */ + return LIMB_DIGITS - 11; + case 35: /* 34359738368-68719476735 */ + return LIMB_DIGITS - 11; + case 36: /* 68719476736-137438953471 */ + if (a < 100000000000) + return LIMB_DIGITS - 11; + else + return LIMB_DIGITS - 12; + case 37: /* 137438953472-274877906943 */ + return LIMB_DIGITS - 12; + case 38: /* 274877906944-549755813887 */ + return LIMB_DIGITS - 12; + case 39: /* 549755813888-1099511627775 */ + if (a < 1000000000000) + return LIMB_DIGITS - 12; + else + return LIMB_DIGITS - 13; + case 40: /* 1099511627776-2199023255551 */ + return LIMB_DIGITS - 13; + case 41: /* 2199023255552-4398046511103 */ + return LIMB_DIGITS - 13; + case 42: /* 4398046511104-8796093022207 */ + return LIMB_DIGITS - 13; + case 43: /* 8796093022208-17592186044415 */ + if (a < 10000000000000) + return LIMB_DIGITS - 13; + else + return LIMB_DIGITS - 14; + case 44: /* 17592186044416-35184372088831 */ + return LIMB_DIGITS - 14; + case 45: /* 35184372088832-70368744177663 */ + return LIMB_DIGITS - 14; + case 46: /* 70368744177664-140737488355327 */ + if (a < 100000000000000) + return LIMB_DIGITS - 14; + else + return LIMB_DIGITS - 15; + case 47: /* 140737488355328-281474976710655 */ + return LIMB_DIGITS - 15; + case 48: /* 281474976710656-562949953421311 */ + return LIMB_DIGITS - 15; + case 49: /* 562949953421312-1125899906842623 */ + if (a < 1000000000000000) + return LIMB_DIGITS - 15; + else + return LIMB_DIGITS - 16; + case 50: /* 1125899906842624-2251799813685247 */ + return LIMB_DIGITS - 16; + case 51: /* 2251799813685248-4503599627370495 */ + return LIMB_DIGITS - 16; + case 52: /* 4503599627370496-9007199254740991 */ + return LIMB_DIGITS - 16; + case 53: /* 9007199254740992-18014398509481983 */ + if (a < 10000000000000000) + return LIMB_DIGITS - 16; + else + return LIMB_DIGITS - 17; + case 54: /* 18014398509481984-36028797018963967 */ + return LIMB_DIGITS - 17; + case 55: /* 36028797018963968-72057594037927935 */ + return LIMB_DIGITS - 17; + case 56: /* 72057594037927936-144115188075855871 */ + if (a < 100000000000000000) + return LIMB_DIGITS - 17; + else + return LIMB_DIGITS - 18; + case 57: /* 144115188075855872-288230376151711743 */ + return LIMB_DIGITS - 18; + case 58: /* 288230376151711744-576460752303423487 */ + return LIMB_DIGITS - 18; + case 59: /* 576460752303423488-1152921504606846975 */ + if (a < 1000000000000000000) + return LIMB_DIGITS - 18; + else + return LIMB_DIGITS - 19; +#endif + default: + return 0; + } +} + +/* for debugging */ +void bfdec_print_str(const char *str, const bfdec_t *a) +{ + slimb_t i; + printf("%s=", str); + + if (a->expn == BF_EXP_NAN) { + printf("NaN"); + } else { + if (a->sign) + putchar('-'); + if (a->expn == BF_EXP_ZERO) { + putchar('0'); + } else if (a->expn == BF_EXP_INF) { + printf("Inf"); + } else { + printf("0."); + for(i = a->len - 1; i >= 0; i--) + printf("%0*" PRIu_LIMB, LIMB_DIGITS, a->tab[i]); + printf("e%" PRId_LIMB, a->expn); + } + } + printf("\n"); +} + +/* return != 0 if one digit between 0 and bit_pos inclusive is not zero. */ +static inline limb_t scan_digit_nz(const bfdec_t *r, slimb_t bit_pos) +{ + slimb_t pos; + limb_t v, q; + int shift; + + if (bit_pos < 0) + return 0; + pos = (limb_t)bit_pos / LIMB_DIGITS; + shift = (limb_t)bit_pos % LIMB_DIGITS; + fast_shr_rem_dec(q, v, r->tab[pos], shift + 1); + (void)q; + if (v != 0) + return 1; + pos--; + while (pos >= 0) { + if (r->tab[pos] != 0) + return 1; + pos--; + } + return 0; +} + +static limb_t get_digit(const limb_t *tab, limb_t len, slimb_t pos) +{ + slimb_t i; + int shift; + i = floor_div(pos, LIMB_DIGITS); + if (i < 0 || i >= len) + return 0; + shift = pos - i * LIMB_DIGITS; + return fast_shr_dec(tab[i], shift) % 10; +} + +#if 0 +static limb_t get_digits(const limb_t *tab, limb_t len, slimb_t pos) +{ + limb_t a0, a1; + int shift; + slimb_t i; + + i = floor_div(pos, LIMB_DIGITS); + shift = pos - i * LIMB_DIGITS; + if (i >= 0 && i < len) + a0 = tab[i]; + else + a0 = 0; + if (shift == 0) { + return a0; + } else { + i++; + if (i >= 0 && i < len) + a1 = tab[i]; + else + a1 = 0; + return fast_shr_dec(a0, shift) + + fast_urem(a1, &mp_pow_div[LIMB_DIGITS - shift]) * + mp_pow_dec[shift]; + } +} +#endif + +/* return the addend for rounding. Note that prec can be <= 0 for bf_rint() */ +static int bfdec_get_rnd_add(int *pret, const bfdec_t *r, limb_t l, + slimb_t prec, int rnd_mode) +{ + int add_one, inexact; + limb_t digit1, digit0; + + // bfdec_print_str("get_rnd_add", r); + if (rnd_mode == BF_RNDF) { + digit0 = 1; /* faithful rounding does not honor the INEXACT flag */ + } else { + /* starting limb for bit 'prec + 1' */ + digit0 = scan_digit_nz(r, l * LIMB_DIGITS - 1 - bf_max(0, prec + 1)); + } + + /* get the digit at 'prec' */ + digit1 = get_digit(r->tab, l, l * LIMB_DIGITS - 1 - prec); + inexact = (digit1 | digit0) != 0; + + add_one = 0; + switch(rnd_mode) { + case BF_RNDZ: + break; + case BF_RNDN: + if (digit1 == 5) { + if (digit0) { + add_one = 1; + } else { + /* round to even */ + add_one = + get_digit(r->tab, l, l * LIMB_DIGITS - 1 - (prec - 1)) & 1; + } + } else if (digit1 > 5) { + add_one = 1; + } + break; + case BF_RNDD: + case BF_RNDU: + if (r->sign == (rnd_mode == BF_RNDD)) + add_one = inexact; + break; + case BF_RNDNA: + case BF_RNDF: + add_one = (digit1 >= 5); + break; + case BF_RNDA: + add_one = inexact; + break; + default: + abort(); + } + + if (inexact) + *pret |= BF_ST_INEXACT; + return add_one; +} + +/* round to prec1 bits assuming 'r' is non zero and finite. 'r' is + assumed to have length 'l' (1 <= l <= r->len). prec1 can be + BF_PREC_INF. BF_FLAG_SUBNORMAL is not supported. Cannot fail with + BF_ST_MEM_ERROR. + */ +static int __bfdec_round(bfdec_t *r, limb_t prec1, bf_flags_t flags, limb_t l) +{ + int shift, add_one, rnd_mode, ret; + slimb_t i, bit_pos, pos, e_min, e_max, e_range, prec; + + /* XXX: align to IEEE 754 2008 for decimal numbers ? */ + e_range = (limb_t)1 << (bf_get_exp_bits(flags) - 1); + e_min = -e_range + 3; + e_max = e_range; + + if (flags & BF_FLAG_RADPNT_PREC) { + /* 'prec' is the precision after the decimal point */ + if (prec1 != BF_PREC_INF) + prec = r->expn + prec1; + else + prec = prec1; + } else if (unlikely(r->expn < e_min) && (flags & BF_FLAG_SUBNORMAL)) { + /* restrict the precision in case of potentially subnormal + result */ + assert(prec1 != BF_PREC_INF); + prec = prec1 - (e_min - r->expn); + } else { + prec = prec1; + } + + /* round to prec bits */ + rnd_mode = flags & BF_RND_MASK; + ret = 0; + add_one = bfdec_get_rnd_add(&ret, r, l, prec, rnd_mode); + + if (prec <= 0) { + if (add_one) { + bfdec_resize(r, 1); /* cannot fail because r is non zero */ + r->tab[0] = BF_DEC_BASE / 10; + r->expn += 1 - prec; + ret |= BF_ST_UNDERFLOW | BF_ST_INEXACT; + return ret; + } else { + goto underflow; + } + } else if (add_one) { + limb_t carry; + + /* add one starting at digit 'prec - 1' */ + bit_pos = l * LIMB_DIGITS - 1 - (prec - 1); + pos = bit_pos / LIMB_DIGITS; + carry = mp_pow_dec[bit_pos % LIMB_DIGITS]; + carry = mp_add_ui_dec(r->tab + pos, carry, l - pos); + if (carry) { + /* shift right by one digit */ + mp_shr_dec(r->tab + pos, r->tab + pos, l - pos, 1, 1); + r->expn++; + } + } + + /* check underflow */ + if (unlikely(r->expn < e_min)) { + if (flags & BF_FLAG_SUBNORMAL) { + /* if inexact, also set the underflow flag */ + if (ret & BF_ST_INEXACT) + ret |= BF_ST_UNDERFLOW; + } else { + underflow: + bfdec_set_zero(r, r->sign); + ret |= BF_ST_UNDERFLOW | BF_ST_INEXACT; + return ret; + } + } + + /* check overflow */ + if (unlikely(r->expn > e_max)) { + bfdec_set_inf(r, r->sign); + ret |= BF_ST_OVERFLOW | BF_ST_INEXACT; + return ret; + } + + /* keep the bits starting at 'prec - 1' */ + bit_pos = l * LIMB_DIGITS - 1 - (prec - 1); + i = floor_div(bit_pos, LIMB_DIGITS); + if (i >= 0) { + shift = smod(bit_pos, LIMB_DIGITS); + if (shift != 0) { + r->tab[i] = fast_shr_dec(r->tab[i], shift) * + mp_pow_dec[shift]; + } + } else { + i = 0; + } + /* remove trailing zeros */ + while (r->tab[i] == 0) + i++; + if (i > 0) { + l -= i; + memmove(r->tab, r->tab + i, l * sizeof(limb_t)); + } + bfdec_resize(r, l); /* cannot fail */ + return ret; +} + +/* Cannot fail with BF_ST_MEM_ERROR. */ +int bfdec_round(bfdec_t *r, limb_t prec, bf_flags_t flags) +{ + if (r->len == 0) + return 0; + return __bfdec_round(r, prec, flags, r->len); +} + +/* 'r' must be a finite number. Cannot fail with BF_ST_MEM_ERROR. */ +int bfdec_normalize_and_round(bfdec_t *r, limb_t prec1, bf_flags_t flags) +{ + limb_t l, v; + int shift, ret; + + // bfdec_print_str("bf_renorm", r); + l = r->len; + while (l > 0 && r->tab[l - 1] == 0) + l--; + if (l == 0) { + /* zero */ + r->expn = BF_EXP_ZERO; + bfdec_resize(r, 0); /* cannot fail */ + ret = 0; + } else { + r->expn -= (r->len - l) * LIMB_DIGITS; + /* shift to have the MSB set to '1' */ + v = r->tab[l - 1]; + shift = clz_dec(v); + if (shift != 0) { + mp_shl_dec(r->tab, r->tab, l, shift, 0); + r->expn -= shift; + } + ret = __bfdec_round(r, prec1, flags, l); + } + // bf_print_str("r_final", r); + return ret; +} + +int bfdec_set_ui(bfdec_t *r, uint64_t v) +{ +#if LIMB_BITS == 32 + if (v >= BF_DEC_BASE * BF_DEC_BASE) { + if (bfdec_resize(r, 3)) + goto fail; + r->tab[0] = v % BF_DEC_BASE; + v /= BF_DEC_BASE; + r->tab[1] = v % BF_DEC_BASE; + r->tab[2] = v / BF_DEC_BASE; + r->expn = 3 * LIMB_DIGITS; + } else +#endif + if (v >= BF_DEC_BASE) { + if (bfdec_resize(r, 2)) + goto fail; + r->tab[0] = v % BF_DEC_BASE; + r->tab[1] = v / BF_DEC_BASE; + r->expn = 2 * LIMB_DIGITS; + } else { + if (bfdec_resize(r, 1)) + goto fail; + r->tab[0] = v; + r->expn = LIMB_DIGITS; + } + r->sign = 0; + return bfdec_normalize_and_round(r, BF_PREC_INF, 0); + fail: + bfdec_set_nan(r); + return BF_ST_MEM_ERROR; +} + +int bfdec_set_si(bfdec_t *r, int64_t v) +{ + int ret; + if (v < 0) { + ret = bfdec_set_ui(r, -v); + r->sign = 1; + } else { + ret = bfdec_set_ui(r, v); + } + return ret; +} + +static int bfdec_add_internal(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, bf_flags_t flags, int b_neg) +{ + bf_context_t *s = r->ctx; + int is_sub, cmp_res, a_sign, b_sign, ret; + + a_sign = a->sign; + b_sign = b->sign ^ b_neg; + is_sub = a_sign ^ b_sign; + cmp_res = bfdec_cmpu(a, b); + if (cmp_res < 0) { + const bfdec_t *tmp; + tmp = a; + a = b; + b = tmp; + a_sign = b_sign; /* b_sign is never used later */ + } + /* abs(a) >= abs(b) */ + if (cmp_res == 0 && is_sub && a->expn < BF_EXP_INF) { + /* zero result */ + bfdec_set_zero(r, (flags & BF_RND_MASK) == BF_RNDD); + ret = 0; + } else if (a->len == 0 || b->len == 0) { + ret = 0; + if (a->expn >= BF_EXP_INF) { + if (a->expn == BF_EXP_NAN) { + /* at least one operand is NaN */ + bfdec_set_nan(r); + ret = 0; + } else if (b->expn == BF_EXP_INF && is_sub) { + /* infinities with different signs */ + bfdec_set_nan(r); + ret = BF_ST_INVALID_OP; + } else { + bfdec_set_inf(r, a_sign); + } + } else { + /* at least one zero and not subtract */ + if (bfdec_set(r, a)) + return BF_ST_MEM_ERROR; + r->sign = a_sign; + goto renorm; + } + } else { + slimb_t d, a_offset, b_offset, i, r_len; + limb_t carry; + limb_t *b1_tab; + int b_shift; + mp_size_t b1_len; + + d = a->expn - b->expn; + + /* XXX: not efficient in time and memory if the precision is + not infinite */ + r_len = bf_max(a->len, b->len + (d + LIMB_DIGITS - 1) / LIMB_DIGITS); + if (bfdec_resize(r, r_len)) + goto fail; + r->sign = a_sign; + r->expn = a->expn; + + a_offset = r_len - a->len; + for(i = 0; i < a_offset; i++) + r->tab[i] = 0; + for(i = 0; i < a->len; i++) + r->tab[a_offset + i] = a->tab[i]; + + b_shift = d % LIMB_DIGITS; + if (b_shift == 0) { + b1_len = b->len; + b1_tab = (limb_t *)b->tab; + } else { + b1_len = b->len + 1; + b1_tab = bf_malloc(s, sizeof(limb_t) * b1_len); + if (!b1_tab) + goto fail; + b1_tab[0] = mp_shr_dec(b1_tab + 1, b->tab, b->len, b_shift, 0) * + mp_pow_dec[LIMB_DIGITS - b_shift]; + } + b_offset = r_len - (b->len + (d + LIMB_DIGITS - 1) / LIMB_DIGITS); + + if (is_sub) { + carry = mp_sub_dec(r->tab + b_offset, r->tab + b_offset, + b1_tab, b1_len, 0); + if (carry != 0) { + carry = mp_sub_ui_dec(r->tab + b_offset + b1_len, carry, + r_len - (b_offset + b1_len)); + assert(carry == 0); + } + } else { + carry = mp_add_dec(r->tab + b_offset, r->tab + b_offset, + b1_tab, b1_len, 0); + if (carry != 0) { + carry = mp_add_ui_dec(r->tab + b_offset + b1_len, carry, + r_len - (b_offset + b1_len)); + } + if (carry != 0) { + if (bfdec_resize(r, r_len + 1)) { + if (b_shift != 0) + bf_free(s, b1_tab); + goto fail; + } + r->tab[r_len] = 1; + r->expn += LIMB_DIGITS; + } + } + if (b_shift != 0) + bf_free(s, b1_tab); + renorm: + ret = bfdec_normalize_and_round(r, prec, flags); + } + return ret; + fail: + bfdec_set_nan(r); + return BF_ST_MEM_ERROR; +} + +static int __bfdec_add(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, + bf_flags_t flags) +{ + return bfdec_add_internal(r, a, b, prec, flags, 0); +} + +static int __bfdec_sub(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, + bf_flags_t flags) +{ + return bfdec_add_internal(r, a, b, prec, flags, 1); +} + +int bfdec_add(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, + bf_flags_t flags) +{ + return bf_op2((bf_t *)r, (bf_t *)a, (bf_t *)b, prec, flags, + (bf_op2_func_t *)__bfdec_add); +} + +int bfdec_sub(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, + bf_flags_t flags) +{ + return bf_op2((bf_t *)r, (bf_t *)a, (bf_t *)b, prec, flags, + (bf_op2_func_t *)__bfdec_sub); +} + +int bfdec_mul(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, + bf_flags_t flags) +{ + int ret, r_sign; + + if (a->len < b->len) { + const bfdec_t *tmp = a; + a = b; + b = tmp; + } + r_sign = a->sign ^ b->sign; + /* here b->len <= a->len */ + if (b->len == 0) { + if (a->expn == BF_EXP_NAN || b->expn == BF_EXP_NAN) { + bfdec_set_nan(r); + ret = 0; + } else if (a->expn == BF_EXP_INF || b->expn == BF_EXP_INF) { + if ((a->expn == BF_EXP_INF && b->expn == BF_EXP_ZERO) || + (a->expn == BF_EXP_ZERO && b->expn == BF_EXP_INF)) { + bfdec_set_nan(r); + ret = BF_ST_INVALID_OP; + } else { + bfdec_set_inf(r, r_sign); + ret = 0; + } + } else { + bfdec_set_zero(r, r_sign); + ret = 0; + } + } else { + bfdec_t tmp, *r1 = NULL; + limb_t a_len, b_len; + limb_t *a_tab, *b_tab; + + a_len = a->len; + b_len = b->len; + a_tab = a->tab; + b_tab = b->tab; + + if (r == a || r == b) { + bfdec_init(r->ctx, &tmp); + r1 = r; + r = &tmp; + } + if (bfdec_resize(r, a_len + b_len)) { + bfdec_set_nan(r); + ret = BF_ST_MEM_ERROR; + goto done; + } + mp_mul_basecase_dec(r->tab, a_tab, a_len, b_tab, b_len); + r->sign = r_sign; + r->expn = a->expn + b->expn; + ret = bfdec_normalize_and_round(r, prec, flags); + done: + if (r == &tmp) + bfdec_move(r1, &tmp); + } + return ret; +} + +int bfdec_mul_si(bfdec_t *r, const bfdec_t *a, int64_t b1, limb_t prec, + bf_flags_t flags) +{ + bfdec_t b; + int ret; + bfdec_init(r->ctx, &b); + ret = bfdec_set_si(&b, b1); + ret |= bfdec_mul(r, a, &b, prec, flags); + bfdec_delete(&b); + return ret; +} + +int bfdec_add_si(bfdec_t *r, const bfdec_t *a, int64_t b1, limb_t prec, + bf_flags_t flags) +{ + bfdec_t b; + int ret; + + bfdec_init(r->ctx, &b); + ret = bfdec_set_si(&b, b1); + ret |= bfdec_add(r, a, &b, prec, flags); + bfdec_delete(&b); + return ret; +} + +static int __bfdec_div(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, + limb_t prec, bf_flags_t flags) +{ + int ret, r_sign; + limb_t n, nb, precl; + + r_sign = a->sign ^ b->sign; + if (a->expn >= BF_EXP_INF || b->expn >= BF_EXP_INF) { + if (a->expn == BF_EXP_NAN || b->expn == BF_EXP_NAN) { + bfdec_set_nan(r); + return 0; + } else if (a->expn == BF_EXP_INF && b->expn == BF_EXP_INF) { + bfdec_set_nan(r); + return BF_ST_INVALID_OP; + } else if (a->expn == BF_EXP_INF) { + bfdec_set_inf(r, r_sign); + return 0; + } else { + bfdec_set_zero(r, r_sign); + return 0; + } + } else if (a->expn == BF_EXP_ZERO) { + if (b->expn == BF_EXP_ZERO) { + bfdec_set_nan(r); + return BF_ST_INVALID_OP; + } else { + bfdec_set_zero(r, r_sign); + return 0; + } + } else if (b->expn == BF_EXP_ZERO) { + bfdec_set_inf(r, r_sign); + return BF_ST_DIVIDE_ZERO; + } + + nb = b->len; + if (prec == BF_PREC_INF) { + /* infinite precision: return BF_ST_INVALID_OP if not an exact + result */ + /* XXX: check */ + precl = nb + 1; + } else if (flags & BF_FLAG_RADPNT_PREC) { + /* number of digits after the decimal point */ + /* XXX: check (2 extra digits for rounding + 2 digits) */ + precl = (bf_max(a->expn - b->expn, 0) + 2 + + prec + 2 + LIMB_DIGITS - 1) / LIMB_DIGITS; + } else { + /* number of limbs of the quotient (2 extra digits for rounding) */ + precl = (prec + 2 + LIMB_DIGITS - 1) / LIMB_DIGITS; + } + n = bf_max(a->len, precl); + + { + limb_t *taba, na, i; + slimb_t d; + + na = n + nb; + taba = bf_malloc(r->ctx, (na + 1) * sizeof(limb_t)); + if (!taba) + goto fail; + d = na - a->len; + memset(taba, 0, d * sizeof(limb_t)); + memcpy(taba + d, a->tab, a->len * sizeof(limb_t)); + if (bfdec_resize(r, n + 1)) + goto fail1; + if (mp_div_dec(r->ctx, r->tab, taba, na, b->tab, nb)) { + fail1: + bf_free(r->ctx, taba); + goto fail; + } + /* see if non zero remainder */ + for(i = 0; i < nb; i++) { + if (taba[i] != 0) + break; + } + bf_free(r->ctx, taba); + if (i != nb) { + if (prec == BF_PREC_INF) { + bfdec_set_nan(r); + return BF_ST_INVALID_OP; + } else { + r->tab[0] |= 1; + } + } + r->expn = a->expn - b->expn + LIMB_DIGITS; + r->sign = r_sign; + ret = bfdec_normalize_and_round(r, prec, flags); + } + return ret; + fail: + bfdec_set_nan(r); + return BF_ST_MEM_ERROR; +} + +int bfdec_div(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, + bf_flags_t flags) +{ + return bf_op2((bf_t *)r, (bf_t *)a, (bf_t *)b, prec, flags, + (bf_op2_func_t *)__bfdec_div); +} + +/* a and b must be finite numbers with a >= 0 and b > 0. 'q' is the + integer defined as floor(a/b) and r = a - q * b. */ +static void bfdec_tdivremu(bf_context_t *s, bfdec_t *q, bfdec_t *r, + const bfdec_t *a, const bfdec_t *b) +{ + if (bfdec_cmpu(a, b) < 0) { + bfdec_set_ui(q, 0); + bfdec_set(r, a); + } else { + bfdec_div(q, a, b, 0, BF_RNDZ | BF_FLAG_RADPNT_PREC); + bfdec_mul(r, q, b, BF_PREC_INF, BF_RNDZ); + bfdec_sub(r, a, r, BF_PREC_INF, BF_RNDZ); + } +} + +/* division and remainder. + + rnd_mode is the rounding mode for the quotient. The additional + rounding mode BF_RND_EUCLIDIAN is supported. + + 'q' is an integer. 'r' is rounded with prec and flags (prec can be + BF_PREC_INF). +*/ +int bfdec_divrem(bfdec_t *q, bfdec_t *r, const bfdec_t *a, const bfdec_t *b, + limb_t prec, bf_flags_t flags, int rnd_mode) +{ + bf_context_t *s = q->ctx; + bfdec_t a1_s, *a1 = &a1_s; + bfdec_t b1_s, *b1 = &b1_s; + bfdec_t r1_s, *r1 = &r1_s; + int q_sign, res; + BOOL is_ceil, is_rndn; + + assert(q != a && q != b); + assert(r != a && r != b); + assert(q != r); + + if (a->len == 0 || b->len == 0) { + bfdec_set_zero(q, 0); + if (a->expn == BF_EXP_NAN || b->expn == BF_EXP_NAN) { + bfdec_set_nan(r); + return 0; + } else if (a->expn == BF_EXP_INF || b->expn == BF_EXP_ZERO) { + bfdec_set_nan(r); + return BF_ST_INVALID_OP; + } else { + bfdec_set(r, a); + return bfdec_round(r, prec, flags); + } + } + + q_sign = a->sign ^ b->sign; + is_rndn = (rnd_mode == BF_RNDN || rnd_mode == BF_RNDNA); + switch(rnd_mode) { + default: + case BF_RNDZ: + case BF_RNDN: + case BF_RNDNA: + is_ceil = FALSE; + break; + case BF_RNDD: + is_ceil = q_sign; + break; + case BF_RNDU: + is_ceil = q_sign ^ 1; + break; + case BF_RNDA: + is_ceil = TRUE; + break; + case BF_DIVREM_EUCLIDIAN: + is_ceil = a->sign; + break; + } + + a1->expn = a->expn; + a1->tab = a->tab; + a1->len = a->len; + a1->sign = 0; + + b1->expn = b->expn; + b1->tab = b->tab; + b1->len = b->len; + b1->sign = 0; + + // bfdec_print_str("a1", a1); + // bfdec_print_str("b1", b1); + /* XXX: could improve to avoid having a large 'q' */ + bfdec_tdivremu(s, q, r, a1, b1); + if (bfdec_is_nan(q) || bfdec_is_nan(r)) + goto fail; + // bfdec_print_str("q", q); + // bfdec_print_str("r", r); + + if (r->len != 0) { + if (is_rndn) { + bfdec_init(s, r1); + if (bfdec_set(r1, r)) + goto fail; + if (bfdec_mul_si(r1, r1, 2, BF_PREC_INF, BF_RNDZ)) { + bfdec_delete(r1); + goto fail; + } + res = bfdec_cmpu(r1, b); + bfdec_delete(r1); + if (res > 0 || + (res == 0 && + (rnd_mode == BF_RNDNA || + (get_digit(q->tab, q->len, q->len * LIMB_DIGITS - q->expn) & 1) != 0))) { + goto do_sub_r; + } + } else if (is_ceil) { + do_sub_r: + res = bfdec_add_si(q, q, 1, BF_PREC_INF, BF_RNDZ); + res |= bfdec_sub(r, r, b1, BF_PREC_INF, BF_RNDZ); + if (res & BF_ST_MEM_ERROR) + goto fail; + } + } + + r->sign ^= a->sign; + q->sign = q_sign; + return bfdec_round(r, prec, flags); + fail: + bfdec_set_nan(q); + bfdec_set_nan(r); + return BF_ST_MEM_ERROR; +} + +int bfdec_rem(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, + bf_flags_t flags, int rnd_mode) +{ + bfdec_t q_s, *q = &q_s; + int ret; + + bfdec_init(r->ctx, q); + ret = bfdec_divrem(q, r, a, b, prec, flags, rnd_mode); + bfdec_delete(q); + return ret; +} + +/* convert to integer (infinite precision) */ +int bfdec_rint(bfdec_t *r, int rnd_mode) +{ + return bfdec_round(r, 0, rnd_mode | BF_FLAG_RADPNT_PREC); +} + +int bfdec_sqrt(bfdec_t *r, const bfdec_t *a, limb_t prec, bf_flags_t flags) +{ + bf_context_t *s = a->ctx; + int ret, k; + limb_t *a1, v; + slimb_t n, n1, prec1; + limb_t res; + + assert(r != a); + + if (a->len == 0) { + if (a->expn == BF_EXP_NAN) { + bfdec_set_nan(r); + } else if (a->expn == BF_EXP_INF && a->sign) { + goto invalid_op; + } else { + bfdec_set(r, a); + } + ret = 0; + } else if (a->sign || prec == BF_PREC_INF) { + invalid_op: + bfdec_set_nan(r); + ret = BF_ST_INVALID_OP; + } else { + if (flags & BF_FLAG_RADPNT_PREC) { + prec1 = bf_max(floor_div(a->expn + 1, 2) + prec, 1); + } else { + prec1 = prec; + } + /* convert the mantissa to an integer with at least 2 * + prec + 4 digits */ + n = (2 * (prec1 + 2) + 2 * LIMB_DIGITS - 1) / (2 * LIMB_DIGITS); + if (bfdec_resize(r, n)) + goto fail; + a1 = bf_malloc(s, sizeof(limb_t) * 2 * n); + if (!a1) + goto fail; + n1 = bf_min(2 * n, a->len); + memset(a1, 0, (2 * n - n1) * sizeof(limb_t)); + memcpy(a1 + 2 * n - n1, a->tab + a->len - n1, n1 * sizeof(limb_t)); + if (a->expn & 1) { + res = mp_shr_dec(a1, a1, 2 * n, 1, 0); + } else { + res = 0; + } + /* normalize so that a1 >= B^(2*n)/4. Not need for n = 1 + because mp_sqrtrem2_dec already does it */ + k = 0; + if (n > 1) { + v = a1[2 * n - 1]; + while (v < BF_DEC_BASE / 4) { + k++; + v *= 4; + } + if (k != 0) + mp_mul1_dec(a1, a1, 2 * n, 1 << (2 * k), 0); + } + if (mp_sqrtrem_dec(s, r->tab, a1, n)) { + bf_free(s, a1); + goto fail; + } + if (k != 0) + mp_div1_dec(r->tab, r->tab, n, 1 << k, 0); + if (!res) { + res = mp_scan_nz(a1, n + 1); + } + bf_free(s, a1); + if (!res) { + res = mp_scan_nz(a->tab, a->len - n1); + } + if (res != 0) + r->tab[0] |= 1; + r->sign = 0; + r->expn = (a->expn + 1) >> 1; + ret = bfdec_round(r, prec, flags); + } + return ret; + fail: + bfdec_set_nan(r); + return BF_ST_MEM_ERROR; +} + +/* The rounding mode is always BF_RNDZ. Return BF_ST_OVERFLOW if there + is an overflow and 0 otherwise. No memory error is possible. */ +int bfdec_get_int32(int *pres, const bfdec_t *a) +{ + uint32_t v; + int ret; + if (a->expn >= BF_EXP_INF) { + ret = 0; + if (a->expn == BF_EXP_INF) { + v = (uint32_t)INT32_MAX + a->sign; + /* XXX: return overflow ? */ + } else { + v = INT32_MAX; + } + } else if (a->expn <= 0) { + v = 0; + ret = 0; + } else if (a->expn <= 9) { + v = fast_shr_dec(a->tab[a->len - 1], LIMB_DIGITS - a->expn); + if (a->sign) + v = -v; + ret = 0; + } else if (a->expn == 10) { + uint64_t v1; + uint32_t v_max; +#if LIMB_BITS == 64 + v1 = fast_shr_dec(a->tab[a->len - 1], LIMB_DIGITS - a->expn); +#else + v1 = (uint64_t)a->tab[a->len - 1] * 10 + + get_digit(a->tab, a->len, (a->len - 1) * LIMB_DIGITS - 1); +#endif + v_max = (uint32_t)INT32_MAX + a->sign; + if (v1 > v_max) { + v = v_max; + ret = BF_ST_OVERFLOW; + } else { + v = v1; + if (a->sign) + v = -v; + ret = 0; + } + } else { + v = (uint32_t)INT32_MAX + a->sign; + ret = BF_ST_OVERFLOW; + } + *pres = v; + return ret; +} + +/* power to an integer with infinite precision */ +int bfdec_pow_ui(bfdec_t *r, const bfdec_t *a, limb_t b) +{ + int ret, n_bits, i; + + assert(r != a); + if (b == 0) + return bfdec_set_ui(r, 1); + ret = bfdec_set(r, a); + n_bits = LIMB_BITS - clz(b); + for(i = n_bits - 2; i >= 0; i--) { + ret |= bfdec_mul(r, r, r, BF_PREC_INF, BF_RNDZ); + if ((b >> i) & 1) + ret |= bfdec_mul(r, r, a, BF_PREC_INF, BF_RNDZ); + } + return ret; +} + +char *bfdec_ftoa(size_t *plen, const bfdec_t *a, limb_t prec, bf_flags_t flags) +{ + return bf_ftoa_internal(plen, (const bf_t *)a, 10, prec, flags, TRUE); +} + +int bfdec_atof(bfdec_t *r, const char *str, const char **pnext, + limb_t prec, bf_flags_t flags) +{ + slimb_t dummy_exp; + return bf_atof_internal((bf_t *)r, &dummy_exp, str, pnext, 10, prec, + flags, TRUE); +} + +#endif /* USE_BF_DEC */ + +#ifdef USE_FFT_MUL +/***************************************************************/ +/* Integer multiplication with FFT */ + +/* or LIMB_BITS at bit position 'pos' in tab */ +static inline void put_bits(limb_t *tab, limb_t len, slimb_t pos, limb_t val) +{ + limb_t i; + int p; + + i = pos >> LIMB_LOG2_BITS; + p = pos & (LIMB_BITS - 1); + if (i < len) + tab[i] |= val << p; + if (p != 0) { + i++; + if (i < len) { + tab[i] |= val >> (LIMB_BITS - p); + } + } +} + +#if defined(__AVX2__) + +typedef double NTTLimb; + +/* we must have: modulo >= 1 << NTT_MOD_LOG2_MIN */ +#define NTT_MOD_LOG2_MIN 50 +#define NTT_MOD_LOG2_MAX 51 +#define NB_MODS 5 +#define NTT_PROOT_2EXP 39 +static const int ntt_int_bits[NB_MODS] = { 254, 203, 152, 101, 50, }; + +static const limb_t ntt_mods[NB_MODS] = { 0x00073a8000000001, 0x0007858000000001, 0x0007a38000000001, 0x0007a68000000001, 0x0007fd8000000001, +}; + +static const limb_t ntt_proot[2][NB_MODS] = { + { 0x00056198d44332c8, 0x0002eb5d640aad39, 0x00047e31eaa35fd0, 0x0005271ac118a150, 0x00075e0ce8442bd5, }, + { 0x000461169761bcc5, 0x0002dac3cb2da688, 0x0004abc97751e3bf, 0x000656778fc8c485, 0x0000dc6469c269fa, }, +}; + +static const limb_t ntt_mods_cr[NB_MODS * (NB_MODS - 1) / 2] = { + 0x00020e4da740da8e, 0x0004c3dc09c09c1d, 0x000063bd097b4271, 0x000799d8f18f18fd, + 0x0005384222222264, 0x000572b07c1f07fe, 0x00035cd08888889a, + 0x00066015555557e3, 0x000725960b60b623, + 0x0002fc1fa1d6ce12, +}; + +#else + +typedef limb_t NTTLimb; + +#if LIMB_BITS == 64 + +#define NTT_MOD_LOG2_MIN 61 +#define NTT_MOD_LOG2_MAX 62 +#define NB_MODS 5 +#define NTT_PROOT_2EXP 51 +static const int ntt_int_bits[NB_MODS] = { 307, 246, 185, 123, 61, }; + +static const limb_t ntt_mods[NB_MODS] = { 0x28d8000000000001, 0x2a88000000000001, 0x2ed8000000000001, 0x3508000000000001, 0x3aa8000000000001, +}; + +static const limb_t ntt_proot[2][NB_MODS] = { + { 0x1b8ea61034a2bea7, 0x21a9762de58206fb, 0x02ca782f0756a8ea, 0x278384537a3e50a1, 0x106e13fee74ce0ab, }, + { 0x233513af133e13b8, 0x1d13140d1c6f75f1, 0x12cde57f97e3eeda, 0x0d6149e23cbe654f, 0x36cd204f522a1379, }, +}; + +static const limb_t ntt_mods_cr[NB_MODS * (NB_MODS - 1) / 2] = { + 0x08a9ed097b425eea, 0x18a44aaaaaaaaab3, 0x2493f57f57f57f5d, 0x126b8d0649a7f8d4, + 0x09d80ed7303b5ccc, 0x25b8bcf3cf3cf3d5, 0x2ce6ce63398ce638, + 0x0e31fad40a57eb59, 0x02a3529fd4a7f52f, + 0x3a5493e93e93e94a, +}; + +#elif LIMB_BITS == 32 + +/* we must have: modulo >= 1 << NTT_MOD_LOG2_MIN */ +#define NTT_MOD_LOG2_MIN 29 +#define NTT_MOD_LOG2_MAX 30 +#define NB_MODS 5 +#define NTT_PROOT_2EXP 20 +static const int ntt_int_bits[NB_MODS] = { 148, 119, 89, 59, 29, }; + +static const limb_t ntt_mods[NB_MODS] = { 0x0000000032b00001, 0x0000000033700001, 0x0000000036d00001, 0x0000000037300001, 0x000000003e500001, +}; + +static const limb_t ntt_proot[2][NB_MODS] = { + { 0x0000000032525f31, 0x0000000005eb3b37, 0x00000000246eda9f, 0x0000000035f25901, 0x00000000022f5768, }, + { 0x00000000051eba1a, 0x00000000107be10e, 0x000000001cd574e0, 0x00000000053806e6, 0x000000002cd6bf98, }, +}; + +static const limb_t ntt_mods_cr[NB_MODS * (NB_MODS - 1) / 2] = { + 0x000000000449559a, 0x000000001eba6ca9, 0x000000002ec18e46, 0x000000000860160b, + 0x000000000d321307, 0x000000000bf51120, 0x000000000f662938, + 0x000000000932ab3e, 0x000000002f40eef8, + 0x000000002e760905, +}; + +#endif /* LIMB_BITS */ + +#endif /* !AVX2 */ + +#if defined(__AVX2__) +#define NTT_TRIG_K_MAX 18 +#else +#define NTT_TRIG_K_MAX 19 +#endif + +typedef struct BFNTTState { + bf_context_t *ctx; + + /* used for mul_mod_fast() */ + limb_t ntt_mods_div[NB_MODS]; + + limb_t ntt_proot_pow[NB_MODS][2][NTT_PROOT_2EXP + 1]; + limb_t ntt_proot_pow_inv[NB_MODS][2][NTT_PROOT_2EXP + 1]; + NTTLimb *ntt_trig[NB_MODS][2][NTT_TRIG_K_MAX + 1]; + /* 1/2^n mod m */ + limb_t ntt_len_inv[NB_MODS][NTT_PROOT_2EXP + 1][2]; +#if defined(__AVX2__) + __m256d ntt_mods_cr_vec[NB_MODS * (NB_MODS - 1) / 2]; + __m256d ntt_mods_vec[NB_MODS]; + __m256d ntt_mods_inv_vec[NB_MODS]; +#else + limb_t ntt_mods_cr_inv[NB_MODS * (NB_MODS - 1) / 2]; +#endif +} BFNTTState; + +static NTTLimb *get_trig(BFNTTState *s, int k, int inverse, int m_idx); + +/* add modulo with up to (LIMB_BITS-1) bit modulo */ +static inline limb_t add_mod(limb_t a, limb_t b, limb_t m) +{ + limb_t r; + r = a + b; + if (r >= m) + r -= m; + return r; +} + +/* sub modulo with up to LIMB_BITS bit modulo */ +static inline limb_t sub_mod(limb_t a, limb_t b, limb_t m) +{ + limb_t r; + r = a - b; + if (r > a) + r += m; + return r; +} + +/* return (r0+r1*B) mod m + precondition: 0 <= r0+r1*B < 2^(64+NTT_MOD_LOG2_MIN) +*/ +static inline limb_t mod_fast(dlimb_t r, + limb_t m, limb_t m_inv) +{ + limb_t a1, q, t0, r1, r0; + + a1 = r >> NTT_MOD_LOG2_MIN; + + q = ((dlimb_t)a1 * m_inv) >> LIMB_BITS; + r = r - (dlimb_t)q * m - m * 2; + r1 = r >> LIMB_BITS; + t0 = (slimb_t)r1 >> 1; + r += m & t0; + r0 = r; + r1 = r >> LIMB_BITS; + r0 += m & r1; + return r0; +} + +/* faster version using precomputed modulo inverse. + precondition: 0 <= a * b < 2^(64+NTT_MOD_LOG2_MIN) */ +static inline limb_t mul_mod_fast(limb_t a, limb_t b, + limb_t m, limb_t m_inv) +{ + dlimb_t r; + r = (dlimb_t)a * (dlimb_t)b; + return mod_fast(r, m, m_inv); +} + +static inline limb_t init_mul_mod_fast(limb_t m) +{ + dlimb_t t; + assert(m < (limb_t)1 << NTT_MOD_LOG2_MAX); + assert(m >= (limb_t)1 << NTT_MOD_LOG2_MIN); + t = (dlimb_t)1 << (LIMB_BITS + NTT_MOD_LOG2_MIN); + return t / m; +} + +/* Faster version used when the multiplier is constant. 0 <= a < 2^64, + 0 <= b < m. */ +static inline limb_t mul_mod_fast2(limb_t a, limb_t b, + limb_t m, limb_t b_inv) +{ + limb_t r, q; + + q = ((dlimb_t)a * (dlimb_t)b_inv) >> LIMB_BITS; + r = a * b - q * m; + if (r >= m) + r -= m; + return r; +} + +/* Faster version used when the multiplier is constant. 0 <= a < 2^64, + 0 <= b < m. Let r = a * b mod m. The return value is 'r' or 'r + + m'. */ +static inline limb_t mul_mod_fast3(limb_t a, limb_t b, + limb_t m, limb_t b_inv) +{ + limb_t r, q; + + q = ((dlimb_t)a * (dlimb_t)b_inv) >> LIMB_BITS; + r = a * b - q * m; + return r; +} + +static inline limb_t init_mul_mod_fast2(limb_t b, limb_t m) +{ + return ((dlimb_t)b << LIMB_BITS) / m; +} + +#ifdef __AVX2__ + +static inline limb_t ntt_limb_to_int(NTTLimb a, limb_t m) +{ + slimb_t v; + v = a; + if (v < 0) + v += m; + if (v >= m) + v -= m; + return v; +} + +static inline NTTLimb int_to_ntt_limb(limb_t a, limb_t m) +{ + return (slimb_t)a; +} + +static inline NTTLimb int_to_ntt_limb2(limb_t a, limb_t m) +{ + if (a >= (m / 2)) + a -= m; + return (slimb_t)a; +} + +/* return r + m if r < 0 otherwise r. */ +static inline __m256d ntt_mod1(__m256d r, __m256d m) +{ + return _mm256_blendv_pd(r, r + m, r); +} + +/* input: abs(r) < 2 * m. Output: abs(r) < m */ +static inline __m256d ntt_mod(__m256d r, __m256d mf, __m256d m2f) +{ + return _mm256_blendv_pd(r, r + m2f, r) - mf; +} + +/* input: abs(a*b) < 2 * m^2, output: abs(r) < m */ +static inline __m256d ntt_mul_mod(__m256d a, __m256d b, __m256d mf, + __m256d m_inv) +{ + __m256d r, q, ab1, ab0, qm0, qm1; + ab1 = a * b; + q = _mm256_round_pd(ab1 * m_inv, 0); /* round to nearest */ + qm1 = q * mf; + qm0 = _mm256_fmsub_pd(q, mf, qm1); /* low part */ + ab0 = _mm256_fmsub_pd(a, b, ab1); /* low part */ + r = (ab1 - qm1) + (ab0 - qm0); + return r; +} + +static void *bf_aligned_malloc(bf_context_t *s, size_t size, size_t align) +{ + void *ptr; + void **ptr1; + ptr = bf_malloc(s, size + sizeof(void *) + align - 1); + if (!ptr) + return NULL; + ptr1 = (void **)(((uintptr_t)ptr + sizeof(void *) + align - 1) & + ~(align - 1)); + ptr1[-1] = ptr; + return ptr1; +} + +static void bf_aligned_free(bf_context_t *s, void *ptr) +{ + if (!ptr) + return; + bf_free(s, ((void **)ptr)[-1]); +} + +static void *ntt_malloc(BFNTTState *s, size_t size) +{ + return bf_aligned_malloc(s->ctx, size, 64); +} + +static void ntt_free(BFNTTState *s, void *ptr) +{ + bf_aligned_free(s->ctx, ptr); +} + +static no_inline int ntt_fft(BFNTTState *s, + NTTLimb *out_buf, NTTLimb *in_buf, + NTTLimb *tmp_buf, int fft_len_log2, + int inverse, int m_idx) +{ + limb_t nb_blocks, fft_per_block, p, k, n, stride_in, i, j; + NTTLimb *tab_in, *tab_out, *tmp, *trig; + __m256d m_inv, mf, m2f, c, a0, a1, b0, b1; + limb_t m; + int l; + + m = ntt_mods[m_idx]; + + m_inv = _mm256_set1_pd(1.0 / (double)m); + mf = _mm256_set1_pd(m); + m2f = _mm256_set1_pd(m * 2); + + n = (limb_t)1 << fft_len_log2; + assert(n >= 8); + stride_in = n / 2; + + tab_in = in_buf; + tab_out = tmp_buf; + trig = get_trig(s, fft_len_log2, inverse, m_idx); + if (!trig) + return -1; + p = 0; + for(k = 0; k < stride_in; k += 4) { + a0 = _mm256_load_pd(&tab_in[k]); + a1 = _mm256_load_pd(&tab_in[k + stride_in]); + c = _mm256_load_pd(trig); + trig += 4; + b0 = ntt_mod(a0 + a1, mf, m2f); + b1 = ntt_mul_mod(a0 - a1, c, mf, m_inv); + a0 = _mm256_permute2f128_pd(b0, b1, 0x20); + a1 = _mm256_permute2f128_pd(b0, b1, 0x31); + a0 = _mm256_permute4x64_pd(a0, 0xd8); + a1 = _mm256_permute4x64_pd(a1, 0xd8); + _mm256_store_pd(&tab_out[p], a0); + _mm256_store_pd(&tab_out[p + 4], a1); + p += 2 * 4; + } + tmp = tab_in; + tab_in = tab_out; + tab_out = tmp; + + trig = get_trig(s, fft_len_log2 - 1, inverse, m_idx); + if (!trig) + return -1; + p = 0; + for(k = 0; k < stride_in; k += 4) { + a0 = _mm256_load_pd(&tab_in[k]); + a1 = _mm256_load_pd(&tab_in[k + stride_in]); + c = _mm256_setr_pd(trig[0], trig[0], trig[1], trig[1]); + trig += 2; + b0 = ntt_mod(a0 + a1, mf, m2f); + b1 = ntt_mul_mod(a0 - a1, c, mf, m_inv); + a0 = _mm256_permute2f128_pd(b0, b1, 0x20); + a1 = _mm256_permute2f128_pd(b0, b1, 0x31); + _mm256_store_pd(&tab_out[p], a0); + _mm256_store_pd(&tab_out[p + 4], a1); + p += 2 * 4; + } + tmp = tab_in; + tab_in = tab_out; + tab_out = tmp; + + nb_blocks = n / 4; + fft_per_block = 4; + + l = fft_len_log2 - 2; + while (nb_blocks != 2) { + nb_blocks >>= 1; + p = 0; + k = 0; + trig = get_trig(s, l, inverse, m_idx); + if (!trig) + return -1; + for(i = 0; i < nb_blocks; i++) { + c = _mm256_set1_pd(trig[0]); + trig++; + for(j = 0; j < fft_per_block; j += 4) { + a0 = _mm256_load_pd(&tab_in[k + j]); + a1 = _mm256_load_pd(&tab_in[k + j + stride_in]); + b0 = ntt_mod(a0 + a1, mf, m2f); + b1 = ntt_mul_mod(a0 - a1, c, mf, m_inv); + _mm256_store_pd(&tab_out[p + j], b0); + _mm256_store_pd(&tab_out[p + j + fft_per_block], b1); + } + k += fft_per_block; + p += 2 * fft_per_block; + } + fft_per_block <<= 1; + l--; + tmp = tab_in; + tab_in = tab_out; + tab_out = tmp; + } + + tab_out = out_buf; + for(k = 0; k < stride_in; k += 4) { + a0 = _mm256_load_pd(&tab_in[k]); + a1 = _mm256_load_pd(&tab_in[k + stride_in]); + b0 = ntt_mod(a0 + a1, mf, m2f); + b1 = ntt_mod(a0 - a1, mf, m2f); + _mm256_store_pd(&tab_out[k], b0); + _mm256_store_pd(&tab_out[k + stride_in], b1); + } + return 0; +} + +static void ntt_vec_mul(BFNTTState *s, + NTTLimb *tab1, NTTLimb *tab2, limb_t fft_len_log2, + int k_tot, int m_idx) +{ + limb_t i, c_inv, n, m; + __m256d m_inv, mf, a, b, c; + + m = ntt_mods[m_idx]; + c_inv = s->ntt_len_inv[m_idx][k_tot][0]; + m_inv = _mm256_set1_pd(1.0 / (double)m); + mf = _mm256_set1_pd(m); + c = _mm256_set1_pd(int_to_ntt_limb(c_inv, m)); + n = (limb_t)1 << fft_len_log2; + for(i = 0; i < n; i += 4) { + a = _mm256_load_pd(&tab1[i]); + b = _mm256_load_pd(&tab2[i]); + a = ntt_mul_mod(a, b, mf, m_inv); + a = ntt_mul_mod(a, c, mf, m_inv); + _mm256_store_pd(&tab1[i], a); + } +} + +static no_inline void mul_trig(NTTLimb *buf, + limb_t n, limb_t c1, limb_t m, limb_t m_inv1) +{ + limb_t i, c2, c3, c4; + __m256d c, c_mul, a0, mf, m_inv; + assert(n >= 2); + + mf = _mm256_set1_pd(m); + m_inv = _mm256_set1_pd(1.0 / (double)m); + + c2 = mul_mod_fast(c1, c1, m, m_inv1); + c3 = mul_mod_fast(c2, c1, m, m_inv1); + c4 = mul_mod_fast(c2, c2, m, m_inv1); + c = _mm256_setr_pd(1, int_to_ntt_limb(c1, m), + int_to_ntt_limb(c2, m), int_to_ntt_limb(c3, m)); + c_mul = _mm256_set1_pd(int_to_ntt_limb(c4, m)); + for(i = 0; i < n; i += 4) { + a0 = _mm256_load_pd(&buf[i]); + a0 = ntt_mul_mod(a0, c, mf, m_inv); + _mm256_store_pd(&buf[i], a0); + c = ntt_mul_mod(c, c_mul, mf, m_inv); + } +} + +#else + +static void *ntt_malloc(BFNTTState *s, size_t size) +{ + return bf_malloc(s->ctx, size); +} + +static void ntt_free(BFNTTState *s, void *ptr) +{ + bf_free(s->ctx, ptr); +} + +static inline limb_t ntt_limb_to_int(NTTLimb a, limb_t m) +{ + if (a >= m) + a -= m; + return a; +} + +static inline NTTLimb int_to_ntt_limb(slimb_t a, limb_t m) +{ + return a; +} + +static no_inline int ntt_fft(BFNTTState *s, NTTLimb *out_buf, NTTLimb *in_buf, + NTTLimb *tmp_buf, int fft_len_log2, + int inverse, int m_idx) +{ + limb_t nb_blocks, fft_per_block, p, k, n, stride_in, i, j, m, m2; + NTTLimb *tab_in, *tab_out, *tmp, a0, a1, b0, b1, c, *trig, c_inv; + int l; + + m = ntt_mods[m_idx]; + m2 = 2 * m; + n = (limb_t)1 << fft_len_log2; + nb_blocks = n; + fft_per_block = 1; + stride_in = n / 2; + tab_in = in_buf; + tab_out = tmp_buf; + l = fft_len_log2; + while (nb_blocks != 2) { + nb_blocks >>= 1; + p = 0; + k = 0; + trig = get_trig(s, l, inverse, m_idx); + if (!trig) + return -1; + for(i = 0; i < nb_blocks; i++) { + c = trig[0]; + c_inv = trig[1]; + trig += 2; + for(j = 0; j < fft_per_block; j++) { + a0 = tab_in[k + j]; + a1 = tab_in[k + j + stride_in]; + b0 = add_mod(a0, a1, m2); + b1 = a0 - a1 + m2; + b1 = mul_mod_fast3(b1, c, m, c_inv); + tab_out[p + j] = b0; + tab_out[p + j + fft_per_block] = b1; + } + k += fft_per_block; + p += 2 * fft_per_block; + } + fft_per_block <<= 1; + l--; + tmp = tab_in; + tab_in = tab_out; + tab_out = tmp; + } + /* no twiddle in last step */ + tab_out = out_buf; + for(k = 0; k < stride_in; k++) { + a0 = tab_in[k]; + a1 = tab_in[k + stride_in]; + b0 = add_mod(a0, a1, m2); + b1 = sub_mod(a0, a1, m2); + tab_out[k] = b0; + tab_out[k + stride_in] = b1; + } + return 0; +} + +static void ntt_vec_mul(BFNTTState *s, + NTTLimb *tab1, NTTLimb *tab2, int fft_len_log2, + int k_tot, int m_idx) +{ + limb_t i, norm, norm_inv, a, n, m, m_inv; + + m = ntt_mods[m_idx]; + m_inv = s->ntt_mods_div[m_idx]; + norm = s->ntt_len_inv[m_idx][k_tot][0]; + norm_inv = s->ntt_len_inv[m_idx][k_tot][1]; + n = (limb_t)1 << fft_len_log2; + for(i = 0; i < n; i++) { + a = tab1[i]; + /* need to reduce the range so that the product is < + 2^(LIMB_BITS+NTT_MOD_LOG2_MIN) */ + if (a >= m) + a -= m; + a = mul_mod_fast(a, tab2[i], m, m_inv); + a = mul_mod_fast3(a, norm, m, norm_inv); + tab1[i] = a; + } +} + +static no_inline void mul_trig(NTTLimb *buf, + limb_t n, limb_t c_mul, limb_t m, limb_t m_inv) +{ + limb_t i, c0, c_mul_inv; + + c0 = 1; + c_mul_inv = init_mul_mod_fast2(c_mul, m); + for(i = 0; i < n; i++) { + buf[i] = mul_mod_fast(buf[i], c0, m, m_inv); + c0 = mul_mod_fast2(c0, c_mul, m, c_mul_inv); + } +} + +#endif /* !AVX2 */ + +static no_inline NTTLimb *get_trig(BFNTTState *s, + int k, int inverse, int m_idx) +{ + NTTLimb *tab; + limb_t i, n2, c, c_mul, m, c_mul_inv; + + if (k > NTT_TRIG_K_MAX) + return NULL; + + tab = s->ntt_trig[m_idx][inverse][k]; + if (tab) + return tab; + n2 = (limb_t)1 << (k - 1); + m = ntt_mods[m_idx]; +#ifdef __AVX2__ + tab = ntt_malloc(s, sizeof(NTTLimb) * n2); +#else + tab = ntt_malloc(s, sizeof(NTTLimb) * n2 * 2); +#endif + if (!tab) + return NULL; + c = 1; + c_mul = s->ntt_proot_pow[m_idx][inverse][k]; + c_mul_inv = s->ntt_proot_pow_inv[m_idx][inverse][k]; + for(i = 0; i < n2; i++) { +#ifdef __AVX2__ + tab[i] = int_to_ntt_limb2(c, m); +#else + tab[2 * i] = int_to_ntt_limb(c, m); + tab[2 * i + 1] = init_mul_mod_fast2(c, m); +#endif + c = mul_mod_fast2(c, c_mul, m, c_mul_inv); + } + s->ntt_trig[m_idx][inverse][k] = tab; + return tab; +} + +void fft_clear_cache(bf_context_t *s1) +{ + int m_idx, inverse, k; + BFNTTState *s = s1->ntt_state; + if (s) { + for(m_idx = 0; m_idx < NB_MODS; m_idx++) { + for(inverse = 0; inverse < 2; inverse++) { + for(k = 0; k < NTT_TRIG_K_MAX + 1; k++) { + if (s->ntt_trig[m_idx][inverse][k]) { + ntt_free(s, s->ntt_trig[m_idx][inverse][k]); + s->ntt_trig[m_idx][inverse][k] = NULL; + } + } + } + } +#if defined(__AVX2__) + bf_aligned_free(s1, s); +#else + bf_free(s1, s); +#endif + s1->ntt_state = NULL; + } +} + +#define STRIP_LEN 16 + +/* dst = buf1, src = buf2 */ +static int ntt_fft_partial(BFNTTState *s, NTTLimb *buf1, + int k1, int k2, limb_t n1, limb_t n2, int inverse, + limb_t m_idx) +{ + limb_t i, j, c_mul, c0, m, m_inv, strip_len, l; + NTTLimb *buf2, *buf3; + + buf2 = NULL; + buf3 = ntt_malloc(s, sizeof(NTTLimb) * n1); + if (!buf3) + goto fail; + if (k2 == 0) { + if (ntt_fft(s, buf1, buf1, buf3, k1, inverse, m_idx)) + goto fail; + } else { + strip_len = STRIP_LEN; + buf2 = ntt_malloc(s, sizeof(NTTLimb) * n1 * strip_len); + if (!buf2) + goto fail; + m = ntt_mods[m_idx]; + m_inv = s->ntt_mods_div[m_idx]; + c0 = s->ntt_proot_pow[m_idx][inverse][k1 + k2]; + c_mul = 1; + assert((n2 % strip_len) == 0); + for(j = 0; j < n2; j += strip_len) { + for(i = 0; i < n1; i++) { + for(l = 0; l < strip_len; l++) { + buf2[i + l * n1] = buf1[i * n2 + (j + l)]; + } + } + for(l = 0; l < strip_len; l++) { + if (inverse) + mul_trig(buf2 + l * n1, n1, c_mul, m, m_inv); + if (ntt_fft(s, buf2 + l * n1, buf2 + l * n1, buf3, k1, inverse, m_idx)) + goto fail; + if (!inverse) + mul_trig(buf2 + l * n1, n1, c_mul, m, m_inv); + c_mul = mul_mod_fast(c_mul, c0, m, m_inv); + } + + for(i = 0; i < n1; i++) { + for(l = 0; l < strip_len; l++) { + buf1[i * n2 + (j + l)] = buf2[i + l *n1]; + } + } + } + ntt_free(s, buf2); + } + ntt_free(s, buf3); + return 0; + fail: + ntt_free(s, buf2); + ntt_free(s, buf3); + return -1; +} + + +/* dst = buf1, src = buf2, tmp = buf3 */ +static int ntt_conv(BFNTTState *s, NTTLimb *buf1, NTTLimb *buf2, + int k, int k_tot, limb_t m_idx) +{ + limb_t n1, n2, i; + int k1, k2; + + if (k <= NTT_TRIG_K_MAX) { + k1 = k; + } else { + /* recursive split of the FFT */ + k1 = bf_min(k / 2, NTT_TRIG_K_MAX); + } + k2 = k - k1; + n1 = (limb_t)1 << k1; + n2 = (limb_t)1 << k2; + + if (ntt_fft_partial(s, buf1, k1, k2, n1, n2, 0, m_idx)) + return -1; + if (ntt_fft_partial(s, buf2, k1, k2, n1, n2, 0, m_idx)) + return -1; + if (k2 == 0) { + ntt_vec_mul(s, buf1, buf2, k, k_tot, m_idx); + } else { + for(i = 0; i < n1; i++) { + ntt_conv(s, buf1 + i * n2, buf2 + i * n2, k2, k_tot, m_idx); + } + } + if (ntt_fft_partial(s, buf1, k1, k2, n1, n2, 1, m_idx)) + return -1; + return 0; +} + + +static no_inline void limb_to_ntt(BFNTTState *s, + NTTLimb *tabr, limb_t fft_len, + const limb_t *taba, limb_t a_len, int dpl, + int first_m_idx, int nb_mods) +{ + slimb_t i, n; + dlimb_t a, b; + int j, shift; + limb_t base_mask1, a0, a1, a2, r, m, m_inv; + +#if 0 + for(i = 0; i < a_len; i++) { + printf("%" PRId64 ": " FMT_LIMB "\n", + (int64_t)i, taba[i]); + } +#endif + memset(tabr, 0, sizeof(NTTLimb) * fft_len * nb_mods); + shift = dpl & (LIMB_BITS - 1); + if (shift == 0) + base_mask1 = -1; + else + base_mask1 = ((limb_t)1 << shift) - 1; + n = bf_min(fft_len, (a_len * LIMB_BITS + dpl - 1) / dpl); + for(i = 0; i < n; i++) { + a0 = get_bits(taba, a_len, i * dpl); + if (dpl <= LIMB_BITS) { + a0 &= base_mask1; + a = a0; + } else { + a1 = get_bits(taba, a_len, i * dpl + LIMB_BITS); + if (dpl <= (LIMB_BITS + NTT_MOD_LOG2_MIN)) { + a = a0 | ((dlimb_t)(a1 & base_mask1) << LIMB_BITS); + } else { + if (dpl > 2 * LIMB_BITS) { + a2 = get_bits(taba, a_len, i * dpl + LIMB_BITS * 2) & + base_mask1; + } else { + a1 &= base_mask1; + a2 = 0; + } + // printf("a=0x%016lx%016lx%016lx\n", a2, a1, a0); + a = (a0 >> (LIMB_BITS - NTT_MOD_LOG2_MAX + NTT_MOD_LOG2_MIN)) | + ((dlimb_t)a1 << (NTT_MOD_LOG2_MAX - NTT_MOD_LOG2_MIN)) | + ((dlimb_t)a2 << (LIMB_BITS + NTT_MOD_LOG2_MAX - NTT_MOD_LOG2_MIN)); + a0 &= ((limb_t)1 << (LIMB_BITS - NTT_MOD_LOG2_MAX + NTT_MOD_LOG2_MIN)) - 1; + } + } + for(j = 0; j < nb_mods; j++) { + m = ntt_mods[first_m_idx + j]; + m_inv = s->ntt_mods_div[first_m_idx + j]; + r = mod_fast(a, m, m_inv); + if (dpl > (LIMB_BITS + NTT_MOD_LOG2_MIN)) { + b = ((dlimb_t)r << (LIMB_BITS - NTT_MOD_LOG2_MAX + NTT_MOD_LOG2_MIN)) | a0; + r = mod_fast(b, m, m_inv); + } + tabr[i + j * fft_len] = int_to_ntt_limb(r, m); + } + } +} + +#if defined(__AVX2__) + +#define VEC_LEN 4 + +typedef union { + __m256d v; + double d[4]; +} VecUnion; + +static no_inline void ntt_to_limb(BFNTTState *s, limb_t *tabr, limb_t r_len, + const NTTLimb *buf, int fft_len_log2, int dpl, + int nb_mods) +{ + const limb_t *mods = ntt_mods + NB_MODS - nb_mods; + const __m256d *mods_cr_vec, *mf, *m_inv; + VecUnion y[NB_MODS]; + limb_t u[NB_MODS], carry[NB_MODS], fft_len, base_mask1, r; + slimb_t i, len, pos; + int j, k, l, shift, n_limb1, p; + dlimb_t t; + + j = NB_MODS * (NB_MODS - 1) / 2 - nb_mods * (nb_mods - 1) / 2; + mods_cr_vec = s->ntt_mods_cr_vec + j; + mf = s->ntt_mods_vec + NB_MODS - nb_mods; + m_inv = s->ntt_mods_inv_vec + NB_MODS - nb_mods; + + shift = dpl & (LIMB_BITS - 1); + if (shift == 0) + base_mask1 = -1; + else + base_mask1 = ((limb_t)1 << shift) - 1; + n_limb1 = ((unsigned)dpl - 1) / LIMB_BITS; + for(j = 0; j < NB_MODS; j++) + carry[j] = 0; + for(j = 0; j < NB_MODS; j++) + u[j] = 0; /* avoid warnings */ + memset(tabr, 0, sizeof(limb_t) * r_len); + fft_len = (limb_t)1 << fft_len_log2; + len = bf_min(fft_len, (r_len * LIMB_BITS + dpl - 1) / dpl); + len = (len + VEC_LEN - 1) & ~(VEC_LEN - 1); + i = 0; + while (i < len) { + for(j = 0; j < nb_mods; j++) + y[j].v = *(__m256d *)&buf[i + fft_len * j]; + + /* Chinese remainder to get mixed radix representation */ + l = 0; + for(j = 0; j < nb_mods - 1; j++) { + y[j].v = ntt_mod1(y[j].v, mf[j]); + for(k = j + 1; k < nb_mods; k++) { + y[k].v = ntt_mul_mod(y[k].v - y[j].v, + mods_cr_vec[l], mf[k], m_inv[k]); + l++; + } + } + y[j].v = ntt_mod1(y[j].v, mf[j]); + + for(p = 0; p < VEC_LEN; p++) { + /* back to normal representation */ + u[0] = (int64_t)y[nb_mods - 1].d[p]; + l = 1; + for(j = nb_mods - 2; j >= 1; j--) { + r = (int64_t)y[j].d[p]; + for(k = 0; k < l; k++) { + t = (dlimb_t)u[k] * mods[j] + r; + r = t >> LIMB_BITS; + u[k] = t; + } + u[l] = r; + l++; + } + /* XXX: for nb_mods = 5, l should be 4 */ + + /* last step adds the carry */ + r = (int64_t)y[0].d[p]; + for(k = 0; k < l; k++) { + t = (dlimb_t)u[k] * mods[j] + r + carry[k]; + r = t >> LIMB_BITS; + u[k] = t; + } + u[l] = r + carry[l]; + +#if 0 + printf("%" PRId64 ": ", i); + for(j = nb_mods - 1; j >= 0; j--) { + printf(" %019" PRIu64, u[j]); + } + printf("\n"); +#endif + + /* write the digits */ + pos = i * dpl; + for(j = 0; j < n_limb1; j++) { + put_bits(tabr, r_len, pos, u[j]); + pos += LIMB_BITS; + } + put_bits(tabr, r_len, pos, u[n_limb1] & base_mask1); + /* shift by dpl digits and set the carry */ + if (shift == 0) { + for(j = n_limb1 + 1; j < nb_mods; j++) + carry[j - (n_limb1 + 1)] = u[j]; + } else { + for(j = n_limb1; j < nb_mods - 1; j++) { + carry[j - n_limb1] = (u[j] >> shift) | + (u[j + 1] << (LIMB_BITS - shift)); + } + carry[nb_mods - 1 - n_limb1] = u[nb_mods - 1] >> shift; + } + i++; + } + } +} +#else +static no_inline void ntt_to_limb(BFNTTState *s, limb_t *tabr, limb_t r_len, + const NTTLimb *buf, int fft_len_log2, int dpl, + int nb_mods) +{ + const limb_t *mods = ntt_mods + NB_MODS - nb_mods; + const limb_t *mods_cr, *mods_cr_inv; + limb_t y[NB_MODS], u[NB_MODS], carry[NB_MODS], fft_len, base_mask1, r; + slimb_t i, len, pos; + int j, k, l, shift, n_limb1; + dlimb_t t; + + j = NB_MODS * (NB_MODS - 1) / 2 - nb_mods * (nb_mods - 1) / 2; + mods_cr = ntt_mods_cr + j; + mods_cr_inv = s->ntt_mods_cr_inv + j; + + shift = dpl & (LIMB_BITS - 1); + if (shift == 0) + base_mask1 = -1; + else + base_mask1 = ((limb_t)1 << shift) - 1; + n_limb1 = ((unsigned)dpl - 1) / LIMB_BITS; + for(j = 0; j < NB_MODS; j++) + carry[j] = 0; + for(j = 0; j < NB_MODS; j++) + u[j] = 0; /* avoid warnings */ + memset(tabr, 0, sizeof(limb_t) * r_len); + fft_len = (limb_t)1 << fft_len_log2; + len = bf_min(fft_len, (r_len * LIMB_BITS + dpl - 1) / dpl); + for(i = 0; i < len; i++) { + for(j = 0; j < nb_mods; j++) { + y[j] = ntt_limb_to_int(buf[i + fft_len * j], mods[j]); + } + + /* Chinese remainder to get mixed radix representation */ + l = 0; + for(j = 0; j < nb_mods - 1; j++) { + for(k = j + 1; k < nb_mods; k++) { + limb_t m; + m = mods[k]; + /* Note: there is no overflow in the sub_mod() because + the modulos are sorted by increasing order */ + y[k] = mul_mod_fast2(y[k] - y[j] + m, + mods_cr[l], m, mods_cr_inv[l]); + l++; + } + } + + /* back to normal representation */ + u[0] = y[nb_mods - 1]; + l = 1; + for(j = nb_mods - 2; j >= 1; j--) { + r = y[j]; + for(k = 0; k < l; k++) { + t = (dlimb_t)u[k] * mods[j] + r; + r = t >> LIMB_BITS; + u[k] = t; + } + u[l] = r; + l++; + } + + /* last step adds the carry */ + r = y[0]; + for(k = 0; k < l; k++) { + t = (dlimb_t)u[k] * mods[j] + r + carry[k]; + r = t >> LIMB_BITS; + u[k] = t; + } + u[l] = r + carry[l]; + +#if 0 + printf("%" PRId64 ": ", (int64_t)i); + for(j = nb_mods - 1; j >= 0; j--) { + printf(" " FMT_LIMB, u[j]); + } + printf("\n"); +#endif + + /* write the digits */ + pos = i * dpl; + for(j = 0; j < n_limb1; j++) { + put_bits(tabr, r_len, pos, u[j]); + pos += LIMB_BITS; + } + put_bits(tabr, r_len, pos, u[n_limb1] & base_mask1); + /* shift by dpl digits and set the carry */ + if (shift == 0) { + for(j = n_limb1 + 1; j < nb_mods; j++) + carry[j - (n_limb1 + 1)] = u[j]; + } else { + for(j = n_limb1; j < nb_mods - 1; j++) { + carry[j - n_limb1] = (u[j] >> shift) | + (u[j + 1] << (LIMB_BITS - shift)); + } + carry[nb_mods - 1 - n_limb1] = u[nb_mods - 1] >> shift; + } + } +} +#endif + +static int ntt_static_init(bf_context_t *s1) +{ + BFNTTState *s; + int inverse, i, j, k, l; + limb_t c, c_inv, c_inv2, m, m_inv; + + if (s1->ntt_state) + return 0; +#if defined(__AVX2__) + s = bf_aligned_malloc(s1, sizeof(*s), 64); +#else + s = bf_malloc(s1, sizeof(*s)); +#endif + if (!s) + return -1; + memset(s, 0, sizeof(*s)); + s1->ntt_state = s; + s->ctx = s1; + + for(j = 0; j < NB_MODS; j++) { + m = ntt_mods[j]; + m_inv = init_mul_mod_fast(m); + s->ntt_mods_div[j] = m_inv; +#if defined(__AVX2__) + s->ntt_mods_vec[j] = _mm256_set1_pd(m); + s->ntt_mods_inv_vec[j] = _mm256_set1_pd(1.0 / (double)m); +#endif + c_inv2 = (m + 1) / 2; /* 1/2 */ + c_inv = 1; + for(i = 0; i <= NTT_PROOT_2EXP; i++) { + s->ntt_len_inv[j][i][0] = c_inv; + s->ntt_len_inv[j][i][1] = init_mul_mod_fast2(c_inv, m); + c_inv = mul_mod_fast(c_inv, c_inv2, m, m_inv); + } + + for(inverse = 0; inverse < 2; inverse++) { + c = ntt_proot[inverse][j]; + for(i = 0; i < NTT_PROOT_2EXP; i++) { + s->ntt_proot_pow[j][inverse][NTT_PROOT_2EXP - i] = c; + s->ntt_proot_pow_inv[j][inverse][NTT_PROOT_2EXP - i] = + init_mul_mod_fast2(c, m); + c = mul_mod_fast(c, c, m, m_inv); + } + } + } + + l = 0; + for(j = 0; j < NB_MODS - 1; j++) { + for(k = j + 1; k < NB_MODS; k++) { +#if defined(__AVX2__) + s->ntt_mods_cr_vec[l] = _mm256_set1_pd(int_to_ntt_limb2(ntt_mods_cr[l], + ntt_mods[k])); +#else + s->ntt_mods_cr_inv[l] = init_mul_mod_fast2(ntt_mods_cr[l], + ntt_mods[k]); +#endif + l++; + } + } + return 0; +} + +int bf_get_fft_size(int *pdpl, int *pnb_mods, limb_t len) +{ + int dpl, fft_len_log2, n_bits, nb_mods, dpl_found, fft_len_log2_found; + int int_bits, nb_mods_found; + limb_t cost, min_cost; + + min_cost = -1; + dpl_found = 0; + nb_mods_found = 4; + fft_len_log2_found = 0; + for(nb_mods = 3; nb_mods <= NB_MODS; nb_mods++) { + int_bits = ntt_int_bits[NB_MODS - nb_mods]; + dpl = bf_min((int_bits - 4) / 2, + 2 * LIMB_BITS + 2 * NTT_MOD_LOG2_MIN - NTT_MOD_LOG2_MAX); + for(;;) { + fft_len_log2 = ceil_log2((len * LIMB_BITS + dpl - 1) / dpl); + if (fft_len_log2 > NTT_PROOT_2EXP) + goto next; + n_bits = fft_len_log2 + 2 * dpl; + if (n_bits <= int_bits) { + cost = ((limb_t)(fft_len_log2 + 1) << fft_len_log2) * nb_mods; + // printf("n=%d dpl=%d: cost=%" PRId64 "\n", nb_mods, dpl, (int64_t)cost); + if (cost < min_cost) { + min_cost = cost; + dpl_found = dpl; + nb_mods_found = nb_mods; + fft_len_log2_found = fft_len_log2; + } + break; + } + dpl--; + if (dpl == 0) + break; + } + next: ; + } + if (!dpl_found) + abort(); + /* limit dpl if possible to reduce fixed cost of limb/NTT conversion */ + if (dpl_found > (LIMB_BITS + NTT_MOD_LOG2_MIN) && + ((limb_t)(LIMB_BITS + NTT_MOD_LOG2_MIN) << fft_len_log2_found) >= + len * LIMB_BITS) { + dpl_found = LIMB_BITS + NTT_MOD_LOG2_MIN; + } + *pnb_mods = nb_mods_found; + *pdpl = dpl_found; + return fft_len_log2_found; +} + +/* return 0 if OK, -1 if memory error */ +static no_inline int fft_mul(bf_context_t *s1, + bf_t *res, limb_t *a_tab, limb_t a_len, + limb_t *b_tab, limb_t b_len, int mul_flags) +{ + BFNTTState *s; + int dpl, fft_len_log2, j, nb_mods, reduced_mem; + slimb_t len, fft_len; + NTTLimb *buf1, *buf2, *ptr; +#if defined(USE_MUL_CHECK) + limb_t ha, hb, hr, h_ref; +#endif + + if (ntt_static_init(s1)) + return -1; + s = s1->ntt_state; + + /* find the optimal number of digits per limb (dpl) */ + len = a_len + b_len; + fft_len_log2 = bf_get_fft_size(&dpl, &nb_mods, len); + fft_len = (uint64_t)1 << fft_len_log2; + // printf("len=%" PRId64 " fft_len_log2=%d dpl=%d\n", len, fft_len_log2, dpl); +#if defined(USE_MUL_CHECK) + ha = mp_mod1(a_tab, a_len, BF_CHKSUM_MOD, 0); + hb = mp_mod1(b_tab, b_len, BF_CHKSUM_MOD, 0); +#endif + if ((mul_flags & (FFT_MUL_R_OVERLAP_A | FFT_MUL_R_OVERLAP_B)) == 0) { + if (!(mul_flags & FFT_MUL_R_NORESIZE)) + bf_resize(res, 0); + } else if (mul_flags & FFT_MUL_R_OVERLAP_B) { + limb_t *tmp_tab, tmp_len; + /* it is better to free 'b' first */ + tmp_tab = a_tab; + a_tab = b_tab; + b_tab = tmp_tab; + tmp_len = a_len; + a_len = b_len; + b_len = tmp_len; + } + buf1 = ntt_malloc(s, sizeof(NTTLimb) * fft_len * nb_mods); + if (!buf1) + return -1; + limb_to_ntt(s, buf1, fft_len, a_tab, a_len, dpl, + NB_MODS - nb_mods, nb_mods); + if ((mul_flags & (FFT_MUL_R_OVERLAP_A | FFT_MUL_R_OVERLAP_B)) == + FFT_MUL_R_OVERLAP_A) { + if (!(mul_flags & FFT_MUL_R_NORESIZE)) + bf_resize(res, 0); + } + reduced_mem = (fft_len_log2 >= 14); + if (!reduced_mem) { + buf2 = ntt_malloc(s, sizeof(NTTLimb) * fft_len * nb_mods); + if (!buf2) + goto fail; + limb_to_ntt(s, buf2, fft_len, b_tab, b_len, dpl, + NB_MODS - nb_mods, nb_mods); + if (!(mul_flags & FFT_MUL_R_NORESIZE)) + bf_resize(res, 0); /* in case res == b */ + } else { + buf2 = ntt_malloc(s, sizeof(NTTLimb) * fft_len); + if (!buf2) + goto fail; + } + for(j = 0; j < nb_mods; j++) { + if (reduced_mem) { + limb_to_ntt(s, buf2, fft_len, b_tab, b_len, dpl, + NB_MODS - nb_mods + j, 1); + ptr = buf2; + } else { + ptr = buf2 + fft_len * j; + } + if (ntt_conv(s, buf1 + fft_len * j, ptr, + fft_len_log2, fft_len_log2, j + NB_MODS - nb_mods)) + goto fail; + } + if (!(mul_flags & FFT_MUL_R_NORESIZE)) + bf_resize(res, 0); /* in case res == b and reduced mem */ + ntt_free(s, buf2); + buf2 = NULL; + if (!(mul_flags & FFT_MUL_R_NORESIZE)) { + if (bf_resize(res, len)) + goto fail; + } + ntt_to_limb(s, res->tab, len, buf1, fft_len_log2, dpl, nb_mods); + ntt_free(s, buf1); +#if defined(USE_MUL_CHECK) + hr = mp_mod1(res->tab, len, BF_CHKSUM_MOD, 0); + h_ref = mul_mod(ha, hb, BF_CHKSUM_MOD); + if (hr != h_ref) { + printf("ntt_mul_error: len=%" PRId_LIMB " fft_len_log2=%d dpl=%d nb_mods=%d\n", + len, fft_len_log2, dpl, nb_mods); + // printf("ha=0x" FMT_LIMB" hb=0x" FMT_LIMB " hr=0x" FMT_LIMB " expected=0x" FMT_LIMB "\n", ha, hb, hr, h_ref); + exit(1); + } +#endif + return 0; + fail: + ntt_free(s, buf1); + ntt_free(s, buf2); + return -1; +} + +#else /* USE_FFT_MUL */ + +int bf_get_fft_size(int *pdpl, int *pnb_mods, limb_t len) +{ + return 0; +} + +#endif /* !USE_FFT_MUL */ diff --git a/quickjs/libbf.h b/quickjs/libbf.h new file mode 100644 index 0000000..48e9d95 --- /dev/null +++ b/quickjs/libbf.h @@ -0,0 +1,535 @@ +/* + * Tiny arbitrary precision floating point library + * + * Copyright (c) 2017-2021 Fabrice Bellard + * + * 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. + */ +#ifndef LIBBF_H +#define LIBBF_H + +#include +#include + +#if INTPTR_MAX >= INT64_MAX +#define LIMB_LOG2_BITS 6 +#else +#define LIMB_LOG2_BITS 5 +#endif + +#define LIMB_BITS (1 << LIMB_LOG2_BITS) + +#if LIMB_BITS == 64 +typedef __int128 int128_t; +typedef unsigned __int128 uint128_t; +typedef int64_t slimb_t; +typedef uint64_t limb_t; +typedef uint128_t dlimb_t; +#define BF_RAW_EXP_MIN INT64_MIN +#define BF_RAW_EXP_MAX INT64_MAX + +#define LIMB_DIGITS 19 +#define BF_DEC_BASE UINT64_C(10000000000000000000) + +#else + +typedef int32_t slimb_t; +typedef uint32_t limb_t; +typedef uint64_t dlimb_t; +#define BF_RAW_EXP_MIN INT32_MIN +#define BF_RAW_EXP_MAX INT32_MAX + +#define LIMB_DIGITS 9 +#define BF_DEC_BASE 1000000000U + +#endif + +/* in bits */ +/* minimum number of bits for the exponent */ +#define BF_EXP_BITS_MIN 3 +/* maximum number of bits for the exponent */ +#define BF_EXP_BITS_MAX (LIMB_BITS - 3) +/* extended range for exponent, used internally */ +#define BF_EXT_EXP_BITS_MAX (BF_EXP_BITS_MAX + 1) +/* minimum possible precision */ +#define BF_PREC_MIN 2 +/* minimum possible precision */ +#define BF_PREC_MAX (((limb_t)1 << (LIMB_BITS - 2)) - 2) +/* some operations support infinite precision */ +#define BF_PREC_INF (BF_PREC_MAX + 1) /* infinite precision */ + +#if LIMB_BITS == 64 +#define BF_CHKSUM_MOD (UINT64_C(975620677) * UINT64_C(9795002197)) +#else +#define BF_CHKSUM_MOD 975620677U +#endif + +#define BF_EXP_ZERO BF_RAW_EXP_MIN +#define BF_EXP_INF (BF_RAW_EXP_MAX - 1) +#define BF_EXP_NAN BF_RAW_EXP_MAX + +/* +/-zero is represented with expn = BF_EXP_ZERO and len = 0, + +/-infinity is represented with expn = BF_EXP_INF and len = 0, + NaN is represented with expn = BF_EXP_NAN and len = 0 (sign is ignored) + */ +typedef struct { + struct bf_context_t *ctx; + int sign; + slimb_t expn; + limb_t len; + limb_t *tab; +} bf_t; + +typedef struct { + /* must be kept identical to bf_t */ + struct bf_context_t *ctx; + int sign; + slimb_t expn; + limb_t len; + limb_t *tab; +} bfdec_t; + +typedef enum { + BF_RNDN, /* round to nearest, ties to even */ + BF_RNDZ, /* round to zero */ + BF_RNDD, /* round to -inf (the code relies on (BF_RNDD xor BF_RNDU) = 1) */ + BF_RNDU, /* round to +inf */ + BF_RNDNA, /* round to nearest, ties away from zero */ + BF_RNDA, /* round away from zero */ + BF_RNDF, /* faithful rounding (nondeterministic, either RNDD or RNDU, + inexact flag is always set) */ +} bf_rnd_t; + +/* allow subnormal numbers. Only available if the number of exponent + bits is <= BF_EXP_BITS_USER_MAX and prec != BF_PREC_INF. */ +#define BF_FLAG_SUBNORMAL (1 << 3) +/* 'prec' is the precision after the radix point instead of the whole + mantissa. Can only be used with bf_round() and + bfdec_[add|sub|mul|div|sqrt|round](). */ +#define BF_FLAG_RADPNT_PREC (1 << 4) + +#define BF_RND_MASK 0x7 +#define BF_EXP_BITS_SHIFT 5 +#define BF_EXP_BITS_MASK 0x3f + +/* shortcut for bf_set_exp_bits(BF_EXT_EXP_BITS_MAX) */ +#define BF_FLAG_EXT_EXP (BF_EXP_BITS_MASK << BF_EXP_BITS_SHIFT) + +/* contains the rounding mode and number of exponents bits */ +typedef uint32_t bf_flags_t; + +typedef void *bf_realloc_func_t(void *opaque, void *ptr, size_t size); + +typedef struct { + bf_t val; + limb_t prec; +} BFConstCache; + +typedef struct bf_context_t { + void *realloc_opaque; + bf_realloc_func_t *realloc_func; + BFConstCache log2_cache; + BFConstCache pi_cache; + struct BFNTTState *ntt_state; +} bf_context_t; + +static inline int bf_get_exp_bits(bf_flags_t flags) +{ + int e; + e = (flags >> BF_EXP_BITS_SHIFT) & BF_EXP_BITS_MASK; + if (e == BF_EXP_BITS_MASK) + return BF_EXP_BITS_MAX + 1; + else + return BF_EXP_BITS_MAX - e; +} + +static inline bf_flags_t bf_set_exp_bits(int n) +{ + return ((BF_EXP_BITS_MAX - n) & BF_EXP_BITS_MASK) << BF_EXP_BITS_SHIFT; +} + +/* returned status */ +#define BF_ST_INVALID_OP (1 << 0) +#define BF_ST_DIVIDE_ZERO (1 << 1) +#define BF_ST_OVERFLOW (1 << 2) +#define BF_ST_UNDERFLOW (1 << 3) +#define BF_ST_INEXACT (1 << 4) +/* indicate that a memory allocation error occured. NaN is returned */ +#define BF_ST_MEM_ERROR (1 << 5) + +#define BF_RADIX_MAX 36 /* maximum radix for bf_atof() and bf_ftoa() */ + +static inline slimb_t bf_max(slimb_t a, slimb_t b) +{ + if (a > b) + return a; + else + return b; +} + +static inline slimb_t bf_min(slimb_t a, slimb_t b) +{ + if (a < b) + return a; + else + return b; +} + +void bf_context_init(bf_context_t *s, bf_realloc_func_t *realloc_func, + void *realloc_opaque); +void bf_context_end(bf_context_t *s); +/* free memory allocated for the bf cache data */ +void bf_clear_cache(bf_context_t *s); + +static inline void *bf_realloc(bf_context_t *s, void *ptr, size_t size) +{ + return s->realloc_func(s->realloc_opaque, ptr, size); +} + +/* 'size' must be != 0 */ +static inline void *bf_malloc(bf_context_t *s, size_t size) +{ + return bf_realloc(s, NULL, size); +} + +static inline void bf_free(bf_context_t *s, void *ptr) +{ + /* must test ptr otherwise equivalent to malloc(0) */ + if (ptr) + bf_realloc(s, ptr, 0); +} + +void bf_init(bf_context_t *s, bf_t *r); + +static inline void bf_delete(bf_t *r) +{ + bf_context_t *s = r->ctx; + /* we accept to delete a zeroed bf_t structure */ + if (s && r->tab) { + bf_realloc(s, r->tab, 0); + } +} + +static inline void bf_neg(bf_t *r) +{ + r->sign ^= 1; +} + +static inline int bf_is_finite(const bf_t *a) +{ + return (a->expn < BF_EXP_INF); +} + +static inline int bf_is_nan(const bf_t *a) +{ + return (a->expn == BF_EXP_NAN); +} + +static inline int bf_is_zero(const bf_t *a) +{ + return (a->expn == BF_EXP_ZERO); +} + +static inline void bf_memcpy(bf_t *r, const bf_t *a) +{ + *r = *a; +} + +int bf_set_ui(bf_t *r, uint64_t a); +int bf_set_si(bf_t *r, int64_t a); +void bf_set_nan(bf_t *r); +void bf_set_zero(bf_t *r, int is_neg); +void bf_set_inf(bf_t *r, int is_neg); +int bf_set(bf_t *r, const bf_t *a); +void bf_move(bf_t *r, bf_t *a); +int bf_get_float64(const bf_t *a, double *pres, bf_rnd_t rnd_mode); +int bf_set_float64(bf_t *a, double d); + +int bf_cmpu(const bf_t *a, const bf_t *b); +int bf_cmp_full(const bf_t *a, const bf_t *b); +int bf_cmp(const bf_t *a, const bf_t *b); +static inline int bf_cmp_eq(const bf_t *a, const bf_t *b) +{ + return bf_cmp(a, b) == 0; +} + +static inline int bf_cmp_le(const bf_t *a, const bf_t *b) +{ + return bf_cmp(a, b) <= 0; +} + +static inline int bf_cmp_lt(const bf_t *a, const bf_t *b) +{ + return bf_cmp(a, b) < 0; +} + +int bf_add(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, bf_flags_t flags); +int bf_sub(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, bf_flags_t flags); +int bf_add_si(bf_t *r, const bf_t *a, int64_t b1, limb_t prec, bf_flags_t flags); +int bf_mul(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, bf_flags_t flags); +int bf_mul_ui(bf_t *r, const bf_t *a, uint64_t b1, limb_t prec, bf_flags_t flags); +int bf_mul_si(bf_t *r, const bf_t *a, int64_t b1, limb_t prec, + bf_flags_t flags); +int bf_mul_2exp(bf_t *r, slimb_t e, limb_t prec, bf_flags_t flags); +int bf_div(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, bf_flags_t flags); +#define BF_DIVREM_EUCLIDIAN BF_RNDF +int bf_divrem(bf_t *q, bf_t *r, const bf_t *a, const bf_t *b, + limb_t prec, bf_flags_t flags, int rnd_mode); +int bf_rem(bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags, int rnd_mode); +int bf_remquo(slimb_t *pq, bf_t *r, const bf_t *a, const bf_t *b, limb_t prec, + bf_flags_t flags, int rnd_mode); +/* round to integer with infinite precision */ +int bf_rint(bf_t *r, int rnd_mode); +int bf_round(bf_t *r, limb_t prec, bf_flags_t flags); +int bf_sqrtrem(bf_t *r, bf_t *rem1, const bf_t *a); +int bf_sqrt(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags); +slimb_t bf_get_exp_min(const bf_t *a); +int bf_logic_or(bf_t *r, const bf_t *a, const bf_t *b); +int bf_logic_xor(bf_t *r, const bf_t *a, const bf_t *b); +int bf_logic_and(bf_t *r, const bf_t *a, const bf_t *b); + +/* additional flags for bf_atof */ +/* do not accept hex radix prefix (0x or 0X) if radix = 0 or radix = 16 */ +#define BF_ATOF_NO_HEX (1 << 16) +/* accept binary (0b or 0B) or octal (0o or 0O) radix prefix if radix = 0 */ +#define BF_ATOF_BIN_OCT (1 << 17) +/* Do not parse NaN or Inf */ +#define BF_ATOF_NO_NAN_INF (1 << 18) +/* return the exponent separately */ +#define BF_ATOF_EXPONENT (1 << 19) + +int bf_atof(bf_t *a, const char *str, const char **pnext, int radix, + limb_t prec, bf_flags_t flags); +/* this version accepts prec = BF_PREC_INF and returns the radix + exponent */ +int bf_atof2(bf_t *r, slimb_t *pexponent, + const char *str, const char **pnext, int radix, + limb_t prec, bf_flags_t flags); +int bf_mul_pow_radix(bf_t *r, const bf_t *T, limb_t radix, + slimb_t expn, limb_t prec, bf_flags_t flags); + + +/* Conversion of floating point number to string. Return a null + terminated string or NULL if memory error. *plen contains its + length if plen != NULL. The exponent letter is "e" for base 10, + "p" for bases 2, 8, 16 with a binary exponent and "@" for the other + bases. */ + +#define BF_FTOA_FORMAT_MASK (3 << 16) + +/* fixed format: prec significant digits rounded with (flags & + BF_RND_MASK). Exponential notation is used if too many zeros are + needed.*/ +#define BF_FTOA_FORMAT_FIXED (0 << 16) +/* fractional format: prec digits after the decimal point rounded with + (flags & BF_RND_MASK) */ +#define BF_FTOA_FORMAT_FRAC (1 << 16) +/* free format: + + For binary radices with bf_ftoa() and for bfdec_ftoa(): use the minimum + number of digits to represent 'a'. The precision and the rounding + mode are ignored. + + For the non binary radices with bf_ftoa(): use as many digits as + necessary so that bf_atof() return the same number when using + precision 'prec', rounding to nearest and the subnormal + configuration of 'flags'. The result is meaningful only if 'a' is + already rounded to 'prec' bits. If the subnormal flag is set, the + exponent in 'flags' must also be set to the desired exponent range. +*/ +#define BF_FTOA_FORMAT_FREE (2 << 16) +/* same as BF_FTOA_FORMAT_FREE but uses the minimum number of digits + (takes more computation time). Identical to BF_FTOA_FORMAT_FREE for + binary radices with bf_ftoa() and for bfdec_ftoa(). */ +#define BF_FTOA_FORMAT_FREE_MIN (3 << 16) + +/* force exponential notation for fixed or free format */ +#define BF_FTOA_FORCE_EXP (1 << 20) +/* add 0x prefix for base 16, 0o prefix for base 8 or 0b prefix for + base 2 if non zero value */ +#define BF_FTOA_ADD_PREFIX (1 << 21) +/* return "Infinity" instead of "Inf" and add a "+" for positive + exponents */ +#define BF_FTOA_JS_QUIRKS (1 << 22) + +char *bf_ftoa(size_t *plen, const bf_t *a, int radix, limb_t prec, + bf_flags_t flags); + +/* modulo 2^n instead of saturation. NaN and infinity return 0 */ +#define BF_GET_INT_MOD (1 << 0) +int bf_get_int32(int *pres, const bf_t *a, int flags); +int bf_get_int64(int64_t *pres, const bf_t *a, int flags); +int bf_get_uint64(uint64_t *pres, const bf_t *a); + +/* the following functions are exported for testing only. */ +void mp_print_str(const char *str, const limb_t *tab, limb_t n); +void bf_print_str(const char *str, const bf_t *a); +int bf_resize(bf_t *r, limb_t len); +int bf_get_fft_size(int *pdpl, int *pnb_mods, limb_t len); +int bf_normalize_and_round(bf_t *r, limb_t prec1, bf_flags_t flags); +int bf_can_round(const bf_t *a, slimb_t prec, bf_rnd_t rnd_mode, slimb_t k); +slimb_t bf_mul_log2_radix(slimb_t a1, unsigned int radix, int is_inv, + int is_ceil1); +int mp_mul(bf_context_t *s, limb_t *result, + const limb_t *op1, limb_t op1_size, + const limb_t *op2, limb_t op2_size); +limb_t mp_add(limb_t *res, const limb_t *op1, const limb_t *op2, + limb_t n, limb_t carry); +limb_t mp_add_ui(limb_t *tab, limb_t b, size_t n); +int mp_sqrtrem(bf_context_t *s, limb_t *tabs, limb_t *taba, limb_t n); +int mp_recip(bf_context_t *s, limb_t *tabr, const limb_t *taba, limb_t n); +limb_t bf_isqrt(limb_t a); + +/* transcendental functions */ +int bf_const_log2(bf_t *T, limb_t prec, bf_flags_t flags); +int bf_const_pi(bf_t *T, limb_t prec, bf_flags_t flags); +int bf_exp(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags); +int bf_log(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags); +#define BF_POW_JS_QUIRKS (1 << 16) /* (+/-1)^(+/-Inf) = NaN, 1^NaN = NaN */ +int bf_pow(bf_t *r, const bf_t *x, const bf_t *y, limb_t prec, bf_flags_t flags); +int bf_cos(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags); +int bf_sin(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags); +int bf_tan(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags); +int bf_atan(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags); +int bf_atan2(bf_t *r, const bf_t *y, const bf_t *x, + limb_t prec, bf_flags_t flags); +int bf_asin(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags); +int bf_acos(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags); + +/* decimal floating point */ + +static inline void bfdec_init(bf_context_t *s, bfdec_t *r) +{ + bf_init(s, (bf_t *)r); +} +static inline void bfdec_delete(bfdec_t *r) +{ + bf_delete((bf_t *)r); +} + +static inline void bfdec_neg(bfdec_t *r) +{ + r->sign ^= 1; +} + +static inline int bfdec_is_finite(const bfdec_t *a) +{ + return (a->expn < BF_EXP_INF); +} + +static inline int bfdec_is_nan(const bfdec_t *a) +{ + return (a->expn == BF_EXP_NAN); +} + +static inline int bfdec_is_zero(const bfdec_t *a) +{ + return (a->expn == BF_EXP_ZERO); +} + +static inline void bfdec_memcpy(bfdec_t *r, const bfdec_t *a) +{ + bf_memcpy((bf_t *)r, (const bf_t *)a); +} + +int bfdec_set_ui(bfdec_t *r, uint64_t a); +int bfdec_set_si(bfdec_t *r, int64_t a); + +static inline void bfdec_set_nan(bfdec_t *r) +{ + bf_set_nan((bf_t *)r); +} +static inline void bfdec_set_zero(bfdec_t *r, int is_neg) +{ + bf_set_zero((bf_t *)r, is_neg); +} +static inline void bfdec_set_inf(bfdec_t *r, int is_neg) +{ + bf_set_inf((bf_t *)r, is_neg); +} +static inline int bfdec_set(bfdec_t *r, const bfdec_t *a) +{ + return bf_set((bf_t *)r, (bf_t *)a); +} +static inline void bfdec_move(bfdec_t *r, bfdec_t *a) +{ + bf_move((bf_t *)r, (bf_t *)a); +} +static inline int bfdec_cmpu(const bfdec_t *a, const bfdec_t *b) +{ + return bf_cmpu((const bf_t *)a, (const bf_t *)b); +} +static inline int bfdec_cmp_full(const bfdec_t *a, const bfdec_t *b) +{ + return bf_cmp_full((const bf_t *)a, (const bf_t *)b); +} +static inline int bfdec_cmp(const bfdec_t *a, const bfdec_t *b) +{ + return bf_cmp((const bf_t *)a, (const bf_t *)b); +} +static inline int bfdec_cmp_eq(const bfdec_t *a, const bfdec_t *b) +{ + return bfdec_cmp(a, b) == 0; +} +static inline int bfdec_cmp_le(const bfdec_t *a, const bfdec_t *b) +{ + return bfdec_cmp(a, b) <= 0; +} +static inline int bfdec_cmp_lt(const bfdec_t *a, const bfdec_t *b) +{ + return bfdec_cmp(a, b) < 0; +} + +int bfdec_add(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, + bf_flags_t flags); +int bfdec_sub(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, + bf_flags_t flags); +int bfdec_add_si(bfdec_t *r, const bfdec_t *a, int64_t b1, limb_t prec, + bf_flags_t flags); +int bfdec_mul(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, + bf_flags_t flags); +int bfdec_mul_si(bfdec_t *r, const bfdec_t *a, int64_t b1, limb_t prec, + bf_flags_t flags); +int bfdec_div(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, + bf_flags_t flags); +int bfdec_divrem(bfdec_t *q, bfdec_t *r, const bfdec_t *a, const bfdec_t *b, + limb_t prec, bf_flags_t flags, int rnd_mode); +int bfdec_rem(bfdec_t *r, const bfdec_t *a, const bfdec_t *b, limb_t prec, + bf_flags_t flags, int rnd_mode); +int bfdec_rint(bfdec_t *r, int rnd_mode); +int bfdec_sqrt(bfdec_t *r, const bfdec_t *a, limb_t prec, bf_flags_t flags); +int bfdec_round(bfdec_t *r, limb_t prec, bf_flags_t flags); +int bfdec_get_int32(int *pres, const bfdec_t *a); +int bfdec_pow_ui(bfdec_t *r, const bfdec_t *a, limb_t b); + +char *bfdec_ftoa(size_t *plen, const bfdec_t *a, limb_t prec, bf_flags_t flags); +int bfdec_atof(bfdec_t *r, const char *str, const char **pnext, + limb_t prec, bf_flags_t flags); + +/* the following functions are exported for testing only. */ +extern const limb_t mp_pow_dec[LIMB_DIGITS + 1]; +void bfdec_print_str(const char *str, const bfdec_t *a); +static inline int bfdec_resize(bfdec_t *r, limb_t len) +{ + return bf_resize((bf_t *)r, len); +} +int bfdec_normalize_and_round(bfdec_t *r, limb_t prec1, bf_flags_t flags); + +#endif /* LIBBF_H */ diff --git a/quickjs/libregexp-opcode.h b/quickjs/libregexp-opcode.h new file mode 100644 index 0000000..f90c23b --- /dev/null +++ b/quickjs/libregexp-opcode.h @@ -0,0 +1,58 @@ +/* + * Regular Expression Engine + * + * Copyright (c) 2017-2018 Fabrice Bellard + * + * 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. + */ + +#ifdef DEF + +DEF(invalid, 1) /* never used */ +DEF(char, 3) +DEF(char32, 5) +DEF(dot, 1) +DEF(any, 1) /* same as dot but match any character including line terminator */ +DEF(line_start, 1) +DEF(line_end, 1) +DEF(goto, 5) +DEF(split_goto_first, 5) +DEF(split_next_first, 5) +DEF(match, 1) +DEF(save_start, 2) /* save start position */ +DEF(save_end, 2) /* save end position, must come after saved_start */ +DEF(save_reset, 3) /* reset save positions */ +DEF(loop, 5) /* decrement the top the stack and goto if != 0 */ +DEF(push_i32, 5) /* push integer on the stack */ +DEF(drop, 1) +DEF(word_boundary, 1) +DEF(not_word_boundary, 1) +DEF(back_reference, 2) +DEF(backward_back_reference, 2) /* must come after back_reference */ +DEF(range, 3) /* variable length */ +DEF(range32, 3) /* variable length */ +DEF(lookahead, 5) +DEF(negative_lookahead, 5) +DEF(push_char_pos, 1) /* push the character position on the stack */ +DEF(bne_char_pos, 5) /* pop one stack element and jump if equal to the character + position */ +DEF(prev, 1) /* go to the previous char */ +DEF(simple_greedy_quant, 17) + +#endif /* DEF */ diff --git a/quickjs/libregexp.c b/quickjs/libregexp.c new file mode 100644 index 0000000..379bfc7 --- /dev/null +++ b/quickjs/libregexp.c @@ -0,0 +1,2610 @@ +/* + * Regular Expression Engine + * + * Copyright (c) 2017-2018 Fabrice Bellard + * + * 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. + */ +#include +#include +#include +#include +#include +#include + +#include "cutils.h" +#include "libregexp.h" + +/* + TODO: + + - Add full unicode canonicalize rules for character ranges (not + really useful but needed for exact "ignorecase" compatibility). + + - Add a lock step execution mode (=linear time execution guaranteed) + when the regular expression is "simple" i.e. no backreference nor + complicated lookahead. The opcodes are designed for this execution + model. +*/ + +#if defined(TEST) +#define DUMP_REOP +#endif + +typedef enum { +#define DEF(id, size) REOP_ ## id, +#include "libregexp-opcode.h" +#undef DEF + REOP_COUNT, +} REOPCodeEnum; + +#define CAPTURE_COUNT_MAX 255 +#define STACK_SIZE_MAX 255 + +/* unicode code points */ +#define CP_LS 0x2028 +#define CP_PS 0x2029 + +#define TMP_BUF_SIZE 128 + +typedef struct { + DynBuf byte_code; + const uint8_t *buf_ptr; + const uint8_t *buf_end; + const uint8_t *buf_start; + int re_flags; + BOOL is_utf16; + BOOL ignore_case; + BOOL dotall; + int capture_count; + int total_capture_count; /* -1 = not computed yet */ + int has_named_captures; /* -1 = don't know, 0 = no, 1 = yes */ + void *opaque; + DynBuf group_names; + union { + char error_msg[TMP_BUF_SIZE]; + char tmp_buf[TMP_BUF_SIZE]; + } u; +} REParseState; + +typedef struct { +#ifdef DUMP_REOP + const char *name; +#endif + uint8_t size; +} REOpCode; + +static const REOpCode reopcode_info[REOP_COUNT] = { +#ifdef DUMP_REOP +#define DEF(id, size) { #id, size }, +#else +#define DEF(id, size) { size }, +#endif +#include "libregexp-opcode.h" +#undef DEF +}; + +#define RE_HEADER_FLAGS 0 +#define RE_HEADER_CAPTURE_COUNT 1 +#define RE_HEADER_STACK_SIZE 2 + +#define RE_HEADER_LEN 7 + +static inline int is_digit(int c) { + return c >= '0' && c <= '9'; +} + +/* insert 'len' bytes at position 'pos'. Return < 0 if error. */ +static int dbuf_insert(DynBuf *s, int pos, int len) +{ + if (dbuf_realloc(s, s->size + len)) + return -1; + memmove(s->buf + pos + len, s->buf + pos, s->size - pos); + s->size += len; + return 0; +} + +/* canonicalize with the specific JS regexp rules */ +static uint32_t lre_canonicalize(uint32_t c, BOOL is_utf16) +{ + uint32_t res[LRE_CC_RES_LEN_MAX]; + int len; + if (is_utf16) { + if (likely(c < 128)) { + if (c >= 'A' && c <= 'Z') + c = c - 'A' + 'a'; + } else { + lre_case_conv(res, c, 2); + c = res[0]; + } + } else { + if (likely(c < 128)) { + if (c >= 'a' && c <= 'z') + c = c - 'a' + 'A'; + } else { + /* legacy regexp: to upper case if single char >= 128 */ + len = lre_case_conv(res, c, FALSE); + if (len == 1 && res[0] >= 128) + c = res[0]; + } + } + return c; +} + +static const uint16_t char_range_d[] = { + 1, + 0x0030, 0x0039 + 1, +}; + +/* code point ranges for Zs,Zl or Zp property */ +static const uint16_t char_range_s[] = { + 10, + 0x0009, 0x000D + 1, + 0x0020, 0x0020 + 1, + 0x00A0, 0x00A0 + 1, + 0x1680, 0x1680 + 1, + 0x2000, 0x200A + 1, + /* 2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;; */ + /* 2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;; */ + 0x2028, 0x2029 + 1, + 0x202F, 0x202F + 1, + 0x205F, 0x205F + 1, + 0x3000, 0x3000 + 1, + /* FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;; */ + 0xFEFF, 0xFEFF + 1, +}; + +BOOL lre_is_space(int c) +{ + int i, n, low, high; + n = (countof(char_range_s) - 1) / 2; + for(i = 0; i < n; i++) { + low = char_range_s[2 * i + 1]; + if (c < low) + return FALSE; + high = char_range_s[2 * i + 2]; + if (c < high) + return TRUE; + } + return FALSE; +} + +uint32_t const lre_id_start_table_ascii[4] = { + /* $ A-Z _ a-z */ + 0x00000000, 0x00000010, 0x87FFFFFE, 0x07FFFFFE +}; + +uint32_t const lre_id_continue_table_ascii[4] = { + /* $ 0-9 A-Z _ a-z */ + 0x00000000, 0x03FF0010, 0x87FFFFFE, 0x07FFFFFE +}; + + +static const uint16_t char_range_w[] = { + 4, + 0x0030, 0x0039 + 1, + 0x0041, 0x005A + 1, + 0x005F, 0x005F + 1, + 0x0061, 0x007A + 1, +}; + +#define CLASS_RANGE_BASE 0x40000000 + +typedef enum { + CHAR_RANGE_d, + CHAR_RANGE_D, + CHAR_RANGE_s, + CHAR_RANGE_S, + CHAR_RANGE_w, + CHAR_RANGE_W, +} CharRangeEnum; + +static const uint16_t *char_range_table[] = { + char_range_d, + char_range_s, + char_range_w, +}; + +static int cr_init_char_range(REParseState *s, CharRange *cr, uint32_t c) +{ + BOOL invert; + const uint16_t *c_pt; + int len, i; + + invert = c & 1; + c_pt = char_range_table[c >> 1]; + len = *c_pt++; + cr_init(cr, s->opaque, lre_realloc); + for(i = 0; i < len * 2; i++) { + if (cr_add_point(cr, c_pt[i])) + goto fail; + } + if (invert) { + if (cr_invert(cr)) + goto fail; + } + return 0; + fail: + cr_free(cr); + return -1; +} + +static int cr_canonicalize(CharRange *cr) +{ + CharRange a; + uint32_t pt[2]; + int i, ret; + + cr_init(&a, cr->mem_opaque, lre_realloc); + pt[0] = 'a'; + pt[1] = 'z' + 1; + ret = cr_op(&a, cr->points, cr->len, pt, 2, CR_OP_INTER); + if (ret) + goto fail; + /* convert to upper case */ + /* XXX: the generic unicode case would be much more complicated + and not really useful */ + for(i = 0; i < a.len; i++) { + a.points[i] += 'A' - 'a'; + } + /* Note: for simplicity we keep the lower case ranges */ + ret = cr_union1(cr, a.points, a.len); + fail: + cr_free(&a); + return ret; +} + +#ifdef DUMP_REOP +static __maybe_unused void lre_dump_bytecode(const uint8_t *buf, + int buf_len) +{ + int pos, len, opcode, bc_len, re_flags, i; + uint32_t val; + + assert(buf_len >= RE_HEADER_LEN); + + re_flags= buf[0]; + bc_len = get_u32(buf + 3); + assert(bc_len + RE_HEADER_LEN <= buf_len); + printf("flags: 0x%x capture_count=%d stack_size=%d\n", + re_flags, buf[1], buf[2]); + if (re_flags & LRE_FLAG_NAMED_GROUPS) { + const char *p; + p = (char *)buf + RE_HEADER_LEN + bc_len; + printf("named groups: "); + for(i = 1; i < buf[1]; i++) { + if (i != 1) + printf(","); + printf("<%s>", p); + p += strlen(p) + 1; + } + printf("\n"); + assert(p == (char *)(buf + buf_len)); + } + printf("bytecode_len=%d\n", bc_len); + + buf += RE_HEADER_LEN; + pos = 0; + while (pos < bc_len) { + printf("%5u: ", pos); + opcode = buf[pos]; + len = reopcode_info[opcode].size; + if (opcode >= REOP_COUNT) { + printf(" invalid opcode=0x%02x\n", opcode); + break; + } + if ((pos + len) > bc_len) { + printf(" buffer overflow (opcode=0x%02x)\n", opcode); + break; + } + printf("%s", reopcode_info[opcode].name); + switch(opcode) { + case REOP_char: + val = get_u16(buf + pos + 1); + if (val >= ' ' && val <= 126) + printf(" '%c'", val); + else + printf(" 0x%04x", val); + break; + case REOP_char32: + val = get_u32(buf + pos + 1); + if (val >= ' ' && val <= 126) + printf(" '%c'", val); + else + printf(" 0x%08x", val); + break; + case REOP_goto: + case REOP_split_goto_first: + case REOP_split_next_first: + case REOP_loop: + case REOP_lookahead: + case REOP_negative_lookahead: + case REOP_bne_char_pos: + val = get_u32(buf + pos + 1); + val += (pos + 5); + printf(" %u", val); + break; + case REOP_simple_greedy_quant: + printf(" %u %u %u %u", + get_u32(buf + pos + 1) + (pos + 17), + get_u32(buf + pos + 1 + 4), + get_u32(buf + pos + 1 + 8), + get_u32(buf + pos + 1 + 12)); + break; + case REOP_save_start: + case REOP_save_end: + case REOP_back_reference: + case REOP_backward_back_reference: + printf(" %u", buf[pos + 1]); + break; + case REOP_save_reset: + printf(" %u %u", buf[pos + 1], buf[pos + 2]); + break; + case REOP_push_i32: + val = get_u32(buf + pos + 1); + printf(" %d", val); + break; + case REOP_range: + { + int n, i; + n = get_u16(buf + pos + 1); + len += n * 4; + for(i = 0; i < n * 2; i++) { + val = get_u16(buf + pos + 3 + i * 2); + printf(" 0x%04x", val); + } + } + break; + case REOP_range32: + { + int n, i; + n = get_u16(buf + pos + 1); + len += n * 8; + for(i = 0; i < n * 2; i++) { + val = get_u32(buf + pos + 3 + i * 4); + printf(" 0x%08x", val); + } + } + break; + default: + break; + } + printf("\n"); + pos += len; + } +} +#endif + +static void re_emit_op(REParseState *s, int op) +{ + dbuf_putc(&s->byte_code, op); +} + +/* return the offset of the u32 value */ +static int re_emit_op_u32(REParseState *s, int op, uint32_t val) +{ + int pos; + dbuf_putc(&s->byte_code, op); + pos = s->byte_code.size; + dbuf_put_u32(&s->byte_code, val); + return pos; +} + +static int re_emit_goto(REParseState *s, int op, uint32_t val) +{ + int pos; + dbuf_putc(&s->byte_code, op); + pos = s->byte_code.size; + dbuf_put_u32(&s->byte_code, val - (pos + 4)); + return pos; +} + +static void re_emit_op_u8(REParseState *s, int op, uint32_t val) +{ + dbuf_putc(&s->byte_code, op); + dbuf_putc(&s->byte_code, val); +} + +static void re_emit_op_u16(REParseState *s, int op, uint32_t val) +{ + dbuf_putc(&s->byte_code, op); + dbuf_put_u16(&s->byte_code, val); +} + +static int __attribute__((format(printf, 2, 3))) re_parse_error(REParseState *s, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vsnprintf(s->u.error_msg, sizeof(s->u.error_msg), fmt, ap); + va_end(ap); + return -1; +} + +static int re_parse_out_of_memory(REParseState *s) +{ + return re_parse_error(s, "out of memory"); +} + +/* If allow_overflow is false, return -1 in case of + overflow. Otherwise return INT32_MAX. */ +static int parse_digits(const uint8_t **pp, BOOL allow_overflow) +{ + const uint8_t *p; + uint64_t v; + int c; + + p = *pp; + v = 0; + for(;;) { + c = *p; + if (c < '0' || c > '9') + break; + v = v * 10 + c - '0'; + if (v >= INT32_MAX) { + if (allow_overflow) + v = INT32_MAX; + else + return -1; + } + p++; + } + *pp = p; + return v; +} + +static int re_parse_expect(REParseState *s, const uint8_t **pp, int c) +{ + const uint8_t *p; + p = *pp; + if (*p != c) + return re_parse_error(s, "expecting '%c'", c); + p++; + *pp = p; + return 0; +} + +/* Parse an escape sequence, *pp points after the '\': + allow_utf16 value: + 0 : no UTF-16 escapes allowed + 1 : UTF-16 escapes allowed + 2 : UTF-16 escapes allowed and escapes of surrogate pairs are + converted to a unicode character (unicode regexp case). + + Return the unicode char and update *pp if recognized, + return -1 if malformed escape, + return -2 otherwise. */ +int lre_parse_escape(const uint8_t **pp, int allow_utf16) +{ + const uint8_t *p; + uint32_t c; + + p = *pp; + c = *p++; + switch(c) { + case 'b': + c = '\b'; + break; + case 'f': + c = '\f'; + break; + case 'n': + c = '\n'; + break; + case 'r': + c = '\r'; + break; + case 't': + c = '\t'; + break; + case 'v': + c = '\v'; + break; + case 'x': + case 'u': + { + int h, n, i; + uint32_t c1; + + if (*p == '{' && allow_utf16) { + p++; + c = 0; + for(;;) { + h = from_hex(*p++); + if (h < 0) + return -1; + c = (c << 4) | h; + if (c > 0x10FFFF) + return -1; + if (*p == '}') + break; + } + p++; + } else { + if (c == 'x') { + n = 2; + } else { + n = 4; + } + + c = 0; + for(i = 0; i < n; i++) { + h = from_hex(*p++); + if (h < 0) { + return -1; + } + c = (c << 4) | h; + } + if (c >= 0xd800 && c < 0xdc00 && + allow_utf16 == 2 && p[0] == '\\' && p[1] == 'u') { + /* convert an escaped surrogate pair into a + unicode char */ + c1 = 0; + for(i = 0; i < 4; i++) { + h = from_hex(p[2 + i]); + if (h < 0) + break; + c1 = (c1 << 4) | h; + } + if (i == 4 && c1 >= 0xdc00 && c1 < 0xe000) { + p += 6; + c = (((c & 0x3ff) << 10) | (c1 & 0x3ff)) + 0x10000; + } + } + } + } + break; + case '0': case '1': case '2': case '3': + case '4': case '5': case '6': case '7': + c -= '0'; + if (allow_utf16 == 2) { + /* only accept \0 not followed by digit */ + if (c != 0 || is_digit(*p)) + return -1; + } else { + /* parse a legacy octal sequence */ + uint32_t v; + v = *p - '0'; + if (v > 7) + break; + c = (c << 3) | v; + p++; + if (c >= 32) + break; + v = *p - '0'; + if (v > 7) + break; + c = (c << 3) | v; + p++; + } + break; + default: + return -2; + } + *pp = p; + return c; +} + +#ifdef CONFIG_ALL_UNICODE +/* XXX: we use the same chars for name and value */ +static BOOL is_unicode_char(int c) +{ + return ((c >= '0' && c <= '9') || + (c >= 'A' && c <= 'Z') || + (c >= 'a' && c <= 'z') || + (c == '_')); +} + +static int parse_unicode_property(REParseState *s, CharRange *cr, + const uint8_t **pp, BOOL is_inv) +{ + const uint8_t *p; + char name[64], value[64]; + char *q; + BOOL script_ext; + int ret; + + p = *pp; + if (*p != '{') + return re_parse_error(s, "expecting '{' after \\p"); + p++; + q = name; + while (is_unicode_char(*p)) { + if ((q - name) >= sizeof(name) - 1) + goto unknown_property_name; + *q++ = *p++; + } + *q = '\0'; + q = value; + if (*p == '=') { + p++; + while (is_unicode_char(*p)) { + if ((q - value) >= sizeof(value) - 1) + return re_parse_error(s, "unknown unicode property value"); + *q++ = *p++; + } + } + *q = '\0'; + if (*p != '}') + return re_parse_error(s, "expecting '}'"); + p++; + // printf("name=%s value=%s\n", name, value); + + if (!strcmp(name, "Script") || !strcmp(name, "sc")) { + script_ext = FALSE; + goto do_script; + } else if (!strcmp(name, "Script_Extensions") || !strcmp(name, "scx")) { + script_ext = TRUE; + do_script: + cr_init(cr, s->opaque, lre_realloc); + ret = unicode_script(cr, value, script_ext); + if (ret) { + cr_free(cr); + if (ret == -2) + return re_parse_error(s, "unknown unicode script"); + else + goto out_of_memory; + } + } else if (!strcmp(name, "General_Category") || !strcmp(name, "gc")) { + cr_init(cr, s->opaque, lre_realloc); + ret = unicode_general_category(cr, value); + if (ret) { + cr_free(cr); + if (ret == -2) + return re_parse_error(s, "unknown unicode general category"); + else + goto out_of_memory; + } + } else if (value[0] == '\0') { + cr_init(cr, s->opaque, lre_realloc); + ret = unicode_general_category(cr, name); + if (ret == -1) { + cr_free(cr); + goto out_of_memory; + } + if (ret < 0) { + ret = unicode_prop(cr, name); + if (ret) { + cr_free(cr); + if (ret == -2) + goto unknown_property_name; + else + goto out_of_memory; + } + } + } else { + unknown_property_name: + return re_parse_error(s, "unknown unicode property name"); + } + + if (is_inv) { + if (cr_invert(cr)) { + cr_free(cr); + return -1; + } + } + *pp = p; + return 0; + out_of_memory: + return re_parse_out_of_memory(s); +} +#endif /* CONFIG_ALL_UNICODE */ + +/* return -1 if error otherwise the character or a class range + (CLASS_RANGE_BASE). In case of class range, 'cr' is + initialized. Otherwise, it is ignored. */ +static int get_class_atom(REParseState *s, CharRange *cr, + const uint8_t **pp, BOOL inclass) +{ + const uint8_t *p; + uint32_t c; + int ret; + + p = *pp; + + c = *p; + switch(c) { + case '\\': + p++; + if (p >= s->buf_end) + goto unexpected_end; + c = *p++; + switch(c) { + case 'd': + c = CHAR_RANGE_d; + goto class_range; + case 'D': + c = CHAR_RANGE_D; + goto class_range; + case 's': + c = CHAR_RANGE_s; + goto class_range; + case 'S': + c = CHAR_RANGE_S; + goto class_range; + case 'w': + c = CHAR_RANGE_w; + goto class_range; + case 'W': + c = CHAR_RANGE_W; + class_range: + if (cr_init_char_range(s, cr, c)) + return -1; + c = CLASS_RANGE_BASE; + break; + case 'c': + c = *p; + if ((c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (((c >= '0' && c <= '9') || c == '_') && + inclass && !s->is_utf16)) { /* Annex B.1.4 */ + c &= 0x1f; + p++; + } else if (s->is_utf16) { + goto invalid_escape; + } else { + /* otherwise return '\' and 'c' */ + p--; + c = '\\'; + } + break; +#ifdef CONFIG_ALL_UNICODE + case 'p': + case 'P': + if (s->is_utf16) { + if (parse_unicode_property(s, cr, &p, (c == 'P'))) + return -1; + c = CLASS_RANGE_BASE; + break; + } + /* fall thru */ +#endif + default: + p--; + ret = lre_parse_escape(&p, s->is_utf16 * 2); + if (ret >= 0) { + c = ret; + } else { + if (ret == -2 && *p != '\0' && strchr("^$\\.*+?()[]{}|/", *p)) { + /* always valid to escape these characters */ + goto normal_char; + } else if (s->is_utf16) { + invalid_escape: + return re_parse_error(s, "invalid escape sequence in regular expression"); + } else { + /* just ignore the '\' */ + goto normal_char; + } + } + break; + } + break; + case '\0': + if (p >= s->buf_end) { + unexpected_end: + return re_parse_error(s, "unexpected end"); + } + /* fall thru */ + default: + normal_char: + /* normal char */ + if (c >= 128) { + c = unicode_from_utf8(p, UTF8_CHAR_LEN_MAX, &p); + if ((unsigned)c > 0xffff && !s->is_utf16) { + /* XXX: should handle non BMP-1 code points */ + return re_parse_error(s, "malformed unicode char"); + } + } else { + p++; + } + break; + } + *pp = p; + return c; +} + +static int re_emit_range(REParseState *s, const CharRange *cr) +{ + int len, i; + uint32_t high; + + len = (unsigned)cr->len / 2; + if (len >= 65535) + return re_parse_error(s, "too many ranges"); + if (len == 0) { + /* not sure it can really happen. Emit a match that is always + false */ + re_emit_op_u32(s, REOP_char32, -1); + } else { + high = cr->points[cr->len - 1]; + if (high == UINT32_MAX) + high = cr->points[cr->len - 2]; + if (high <= 0xffff) { + /* can use 16 bit ranges with the conversion that 0xffff = + infinity */ + re_emit_op_u16(s, REOP_range, len); + for(i = 0; i < cr->len; i += 2) { + dbuf_put_u16(&s->byte_code, cr->points[i]); + high = cr->points[i + 1] - 1; + if (high == UINT32_MAX - 1) + high = 0xffff; + dbuf_put_u16(&s->byte_code, high); + } + } else { + re_emit_op_u16(s, REOP_range32, len); + for(i = 0; i < cr->len; i += 2) { + dbuf_put_u32(&s->byte_code, cr->points[i]); + dbuf_put_u32(&s->byte_code, cr->points[i + 1] - 1); + } + } + } + return 0; +} + +static int re_parse_char_class(REParseState *s, const uint8_t **pp) +{ + const uint8_t *p; + uint32_t c1, c2; + CharRange cr_s, *cr = &cr_s; + CharRange cr1_s, *cr1 = &cr1_s; + BOOL invert; + + cr_init(cr, s->opaque, lre_realloc); + p = *pp; + p++; /* skip '[' */ + invert = FALSE; + if (*p == '^') { + p++; + invert = TRUE; + } + for(;;) { + if (*p == ']') + break; + c1 = get_class_atom(s, cr1, &p, TRUE); + if ((int)c1 < 0) + goto fail; + if (*p == '-' && p[1] != ']') { + const uint8_t *p0 = p + 1; + if (c1 >= CLASS_RANGE_BASE) { + if (s->is_utf16) { + cr_free(cr1); + goto invalid_class_range; + } + /* Annex B: match '-' character */ + goto class_atom; + } + c2 = get_class_atom(s, cr1, &p0, TRUE); + if ((int)c2 < 0) + goto fail; + if (c2 >= CLASS_RANGE_BASE) { + cr_free(cr1); + if (s->is_utf16) { + goto invalid_class_range; + } + /* Annex B: match '-' character */ + goto class_atom; + } + p = p0; + if (c2 < c1) { + invalid_class_range: + re_parse_error(s, "invalid class range"); + goto fail; + } + if (cr_union_interval(cr, c1, c2)) + goto memory_error; + } else { + class_atom: + if (c1 >= CLASS_RANGE_BASE) { + int ret; + ret = cr_union1(cr, cr1->points, cr1->len); + cr_free(cr1); + if (ret) + goto memory_error; + } else { + if (cr_union_interval(cr, c1, c1)) + goto memory_error; + } + } + } + if (s->ignore_case) { + if (cr_canonicalize(cr)) + goto memory_error; + } + if (invert) { + if (cr_invert(cr)) + goto memory_error; + } + if (re_emit_range(s, cr)) + goto fail; + cr_free(cr); + p++; /* skip ']' */ + *pp = p; + return 0; + memory_error: + re_parse_out_of_memory(s); + fail: + cr_free(cr); + return -1; +} + +/* Return: + 1 if the opcodes in bc_buf[] always advance the character pointer. + 0 if the character pointer may not be advanced. + -1 if the code may depend on side effects of its previous execution (backreference) +*/ +static int re_check_advance(const uint8_t *bc_buf, int bc_buf_len) +{ + int pos, opcode, ret, len, i; + uint32_t val, last; + BOOL has_back_reference; + uint8_t capture_bitmap[CAPTURE_COUNT_MAX]; + + ret = -2; /* not known yet */ + pos = 0; + has_back_reference = FALSE; + memset(capture_bitmap, 0, sizeof(capture_bitmap)); + + while (pos < bc_buf_len) { + opcode = bc_buf[pos]; + len = reopcode_info[opcode].size; + switch(opcode) { + case REOP_range: + val = get_u16(bc_buf + pos + 1); + len += val * 4; + goto simple_char; + case REOP_range32: + val = get_u16(bc_buf + pos + 1); + len += val * 8; + goto simple_char; + case REOP_char: + case REOP_char32: + case REOP_dot: + case REOP_any: + simple_char: + if (ret == -2) + ret = 1; + break; + case REOP_line_start: + case REOP_line_end: + case REOP_push_i32: + case REOP_push_char_pos: + case REOP_drop: + case REOP_word_boundary: + case REOP_not_word_boundary: + case REOP_prev: + /* no effect */ + break; + case REOP_save_start: + case REOP_save_end: + val = bc_buf[pos + 1]; + capture_bitmap[val] |= 1; + break; + case REOP_save_reset: + { + val = bc_buf[pos + 1]; + last = bc_buf[pos + 2]; + while (val < last) + capture_bitmap[val++] |= 1; + } + break; + case REOP_back_reference: + case REOP_backward_back_reference: + val = bc_buf[pos + 1]; + capture_bitmap[val] |= 2; + has_back_reference = TRUE; + break; + default: + /* safe behvior: we cannot predict the outcome */ + if (ret == -2) + ret = 0; + break; + } + pos += len; + } + if (has_back_reference) { + /* check if there is back reference which references a capture + made in the some code */ + for(i = 0; i < CAPTURE_COUNT_MAX; i++) { + if (capture_bitmap[i] == 3) + return -1; + } + } + if (ret == -2) + ret = 0; + return ret; +} + +/* return -1 if a simple quantifier cannot be used. Otherwise return + the number of characters in the atom. */ +static int re_is_simple_quantifier(const uint8_t *bc_buf, int bc_buf_len) +{ + int pos, opcode, len, count; + uint32_t val; + + count = 0; + pos = 0; + while (pos < bc_buf_len) { + opcode = bc_buf[pos]; + len = reopcode_info[opcode].size; + switch(opcode) { + case REOP_range: + val = get_u16(bc_buf + pos + 1); + len += val * 4; + goto simple_char; + case REOP_range32: + val = get_u16(bc_buf + pos + 1); + len += val * 8; + goto simple_char; + case REOP_char: + case REOP_char32: + case REOP_dot: + case REOP_any: + simple_char: + count++; + break; + case REOP_line_start: + case REOP_line_end: + case REOP_word_boundary: + case REOP_not_word_boundary: + break; + default: + return -1; + } + pos += len; + } + return count; +} + +/* '*pp' is the first char after '<' */ +static int re_parse_group_name(char *buf, int buf_size, + const uint8_t **pp, BOOL is_utf16) +{ + const uint8_t *p; + uint32_t c; + char *q; + + p = *pp; + q = buf; + for(;;) { + c = *p; + if (c == '\\') { + p++; + if (*p != 'u') + return -1; + c = lre_parse_escape(&p, is_utf16 * 2); + } else if (c == '>') { + break; + } else if (c >= 128) { + c = unicode_from_utf8(p, UTF8_CHAR_LEN_MAX, &p); + } else { + p++; + } + if (c > 0x10FFFF) + return -1; + if (q == buf) { + if (!lre_js_is_ident_first(c)) + return -1; + } else { + if (!lre_js_is_ident_next(c)) + return -1; + } + if ((q - buf + UTF8_CHAR_LEN_MAX + 1) > buf_size) + return -1; + if (c < 128) { + *q++ = c; + } else { + q += unicode_to_utf8((uint8_t*)q, c); + } + } + if (q == buf) + return -1; + *q = '\0'; + p++; + *pp = p; + return 0; +} + +/* if capture_name = NULL: return the number of captures + 1. + Otherwise, return the capture index corresponding to capture_name + or -1 if none */ +static int re_parse_captures(REParseState *s, int *phas_named_captures, + const char *capture_name) +{ + const uint8_t *p; + int capture_index; + char name[TMP_BUF_SIZE]; + + capture_index = 1; + *phas_named_captures = 0; + for (p = s->buf_start; p < s->buf_end; p++) { + switch (*p) { + case '(': + if (p[1] == '?') { + if (p[2] == '<' && p[3] != '=' && p[3] != '!') { + *phas_named_captures = 1; + /* potential named capture */ + if (capture_name) { + p += 3; + if (re_parse_group_name(name, sizeof(name), &p, + s->is_utf16) == 0) { + if (!strcmp(name, capture_name)) + return capture_index; + } + } + capture_index++; + if (capture_index >= CAPTURE_COUNT_MAX) + goto done; + } + } else { + capture_index++; + if (capture_index >= CAPTURE_COUNT_MAX) + goto done; + } + break; + case '\\': + p++; + break; + case '[': + for (p += 1 + (*p == ']'); p < s->buf_end && *p != ']'; p++) { + if (*p == '\\') + p++; + } + break; + } + } + done: + if (capture_name) + return -1; + else + return capture_index; +} + +static int re_count_captures(REParseState *s) +{ + if (s->total_capture_count < 0) { + s->total_capture_count = re_parse_captures(s, &s->has_named_captures, + NULL); + } + return s->total_capture_count; +} + +static BOOL re_has_named_captures(REParseState *s) +{ + if (s->has_named_captures < 0) + re_count_captures(s); + return s->has_named_captures; +} + +static int find_group_name(REParseState *s, const char *name) +{ + const char *p, *buf_end; + size_t len, name_len; + int capture_index; + + name_len = strlen(name); + p = (char *)s->group_names.buf; + buf_end = (char *)s->group_names.buf + s->group_names.size; + capture_index = 1; + while (p < buf_end) { + len = strlen(p); + if (len == name_len && memcmp(name, p, name_len) == 0) + return capture_index; + p += len + 1; + capture_index++; + } + return -1; +} + +static int re_parse_disjunction(REParseState *s, BOOL is_backward_dir); + +static int re_parse_term(REParseState *s, BOOL is_backward_dir) +{ + const uint8_t *p; + int c, last_atom_start, quant_min, quant_max, last_capture_count; + BOOL greedy, add_zero_advance_check, is_neg, is_backward_lookahead; + CharRange cr_s, *cr = &cr_s; + + last_atom_start = -1; + last_capture_count = 0; + p = s->buf_ptr; + c = *p; + switch(c) { + case '^': + p++; + re_emit_op(s, REOP_line_start); + break; + case '$': + p++; + re_emit_op(s, REOP_line_end); + break; + case '.': + p++; + last_atom_start = s->byte_code.size; + last_capture_count = s->capture_count; + if (is_backward_dir) + re_emit_op(s, REOP_prev); + re_emit_op(s, s->dotall ? REOP_any : REOP_dot); + if (is_backward_dir) + re_emit_op(s, REOP_prev); + break; + case '{': + if (s->is_utf16) { + return re_parse_error(s, "syntax error"); + } else if (!is_digit(p[1])) { + /* Annex B: we accept '{' not followed by digits as a + normal atom */ + goto parse_class_atom; + } else { + const uint8_t *p1 = p + 1; + /* Annex B: error if it is like a repetition count */ + parse_digits(&p1, TRUE); + if (*p1 == ',') { + p1++; + if (is_digit(*p1)) { + parse_digits(&p1, TRUE); + } + } + if (*p1 != '}') { + goto parse_class_atom; + } + } + /* fall thru */ + case '*': + case '+': + case '?': + return re_parse_error(s, "nothing to repeat"); + case '(': + if (p[1] == '?') { + if (p[2] == ':') { + p += 3; + last_atom_start = s->byte_code.size; + last_capture_count = s->capture_count; + s->buf_ptr = p; + if (re_parse_disjunction(s, is_backward_dir)) + return -1; + p = s->buf_ptr; + if (re_parse_expect(s, &p, ')')) + return -1; + } else if ((p[2] == '=' || p[2] == '!')) { + is_neg = (p[2] == '!'); + is_backward_lookahead = FALSE; + p += 3; + goto lookahead; + } else if (p[2] == '<' && + (p[3] == '=' || p[3] == '!')) { + int pos; + is_neg = (p[3] == '!'); + is_backward_lookahead = TRUE; + p += 4; + /* lookahead */ + lookahead: + /* Annex B allows lookahead to be used as an atom for + the quantifiers */ + if (!s->is_utf16 && !is_backward_lookahead) { + last_atom_start = s->byte_code.size; + last_capture_count = s->capture_count; + } + pos = re_emit_op_u32(s, REOP_lookahead + is_neg, 0); + s->buf_ptr = p; + if (re_parse_disjunction(s, is_backward_lookahead)) + return -1; + p = s->buf_ptr; + if (re_parse_expect(s, &p, ')')) + return -1; + re_emit_op(s, REOP_match); + /* jump after the 'match' after the lookahead is successful */ + if (dbuf_error(&s->byte_code)) + return -1; + put_u32(s->byte_code.buf + pos, s->byte_code.size - (pos + 4)); + } else if (p[2] == '<') { + p += 3; + if (re_parse_group_name(s->u.tmp_buf, sizeof(s->u.tmp_buf), + &p, s->is_utf16)) { + return re_parse_error(s, "invalid group name"); + } + if (find_group_name(s, s->u.tmp_buf) > 0) { + return re_parse_error(s, "duplicate group name"); + } + /* group name with a trailing zero */ + dbuf_put(&s->group_names, (uint8_t *)s->u.tmp_buf, + strlen(s->u.tmp_buf) + 1); + s->has_named_captures = 1; + goto parse_capture; + } else { + return re_parse_error(s, "invalid group"); + } + } else { + int capture_index; + p++; + /* capture without group name */ + dbuf_putc(&s->group_names, 0); + parse_capture: + if (s->capture_count >= CAPTURE_COUNT_MAX) + return re_parse_error(s, "too many captures"); + last_atom_start = s->byte_code.size; + last_capture_count = s->capture_count; + capture_index = s->capture_count++; + re_emit_op_u8(s, REOP_save_start + is_backward_dir, + capture_index); + + s->buf_ptr = p; + if (re_parse_disjunction(s, is_backward_dir)) + return -1; + p = s->buf_ptr; + + re_emit_op_u8(s, REOP_save_start + 1 - is_backward_dir, + capture_index); + + if (re_parse_expect(s, &p, ')')) + return -1; + } + break; + case '\\': + switch(p[1]) { + case 'b': + case 'B': + re_emit_op(s, REOP_word_boundary + (p[1] != 'b')); + p += 2; + break; + case 'k': + { + const uint8_t *p1; + int dummy_res; + + p1 = p; + if (p1[2] != '<') { + /* annex B: we tolerate invalid group names in non + unicode mode if there is no named capture + definition */ + if (s->is_utf16 || re_has_named_captures(s)) + return re_parse_error(s, "expecting group name"); + else + goto parse_class_atom; + } + p1 += 3; + if (re_parse_group_name(s->u.tmp_buf, sizeof(s->u.tmp_buf), + &p1, s->is_utf16)) { + if (s->is_utf16 || re_has_named_captures(s)) + return re_parse_error(s, "invalid group name"); + else + goto parse_class_atom; + } + c = find_group_name(s, s->u.tmp_buf); + if (c < 0) { + /* no capture name parsed before, try to look + after (inefficient, but hopefully not common */ + c = re_parse_captures(s, &dummy_res, s->u.tmp_buf); + if (c < 0) { + if (s->is_utf16 || re_has_named_captures(s)) + return re_parse_error(s, "group name not defined"); + else + goto parse_class_atom; + } + } + p = p1; + } + goto emit_back_reference; + case '0': + p += 2; + c = 0; + if (s->is_utf16) { + if (is_digit(*p)) { + return re_parse_error(s, "invalid decimal escape in regular expression"); + } + } else { + /* Annex B.1.4: accept legacy octal */ + if (*p >= '0' && *p <= '7') { + c = *p++ - '0'; + if (*p >= '0' && *p <= '7') { + c = (c << 3) + *p++ - '0'; + } + } + } + goto normal_char; + case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': + case '9': + { + const uint8_t *q = ++p; + + c = parse_digits(&p, FALSE); + if (c < 0 || (c >= s->capture_count && c >= re_count_captures(s))) { + if (!s->is_utf16) { + /* Annex B.1.4: accept legacy octal */ + p = q; + if (*p <= '7') { + c = 0; + if (*p <= '3') + c = *p++ - '0'; + if (*p >= '0' && *p <= '7') { + c = (c << 3) + *p++ - '0'; + if (*p >= '0' && *p <= '7') { + c = (c << 3) + *p++ - '0'; + } + } + } else { + c = *p++; + } + goto normal_char; + } + return re_parse_error(s, "back reference out of range in regular expression"); + } + emit_back_reference: + last_atom_start = s->byte_code.size; + last_capture_count = s->capture_count; + re_emit_op_u8(s, REOP_back_reference + is_backward_dir, c); + } + break; + default: + goto parse_class_atom; + } + break; + case '[': + last_atom_start = s->byte_code.size; + last_capture_count = s->capture_count; + if (is_backward_dir) + re_emit_op(s, REOP_prev); + if (re_parse_char_class(s, &p)) + return -1; + if (is_backward_dir) + re_emit_op(s, REOP_prev); + break; + case ']': + case '}': + if (s->is_utf16) + return re_parse_error(s, "syntax error"); + goto parse_class_atom; + default: + parse_class_atom: + c = get_class_atom(s, cr, &p, FALSE); + if ((int)c < 0) + return -1; + normal_char: + last_atom_start = s->byte_code.size; + last_capture_count = s->capture_count; + if (is_backward_dir) + re_emit_op(s, REOP_prev); + if (c >= CLASS_RANGE_BASE) { + int ret; + /* Note: canonicalization is not needed */ + ret = re_emit_range(s, cr); + cr_free(cr); + if (ret) + return -1; + } else { + if (s->ignore_case) + c = lre_canonicalize(c, s->is_utf16); + if (c <= 0xffff) + re_emit_op_u16(s, REOP_char, c); + else + re_emit_op_u32(s, REOP_char32, c); + } + if (is_backward_dir) + re_emit_op(s, REOP_prev); + break; + } + + /* quantifier */ + if (last_atom_start >= 0) { + c = *p; + switch(c) { + case '*': + p++; + quant_min = 0; + quant_max = INT32_MAX; + goto quantifier; + case '+': + p++; + quant_min = 1; + quant_max = INT32_MAX; + goto quantifier; + case '?': + p++; + quant_min = 0; + quant_max = 1; + goto quantifier; + case '{': + { + const uint8_t *p1 = p; + /* As an extension (see ES6 annex B), we accept '{' not + followed by digits as a normal atom */ + if (!is_digit(p[1])) { + if (s->is_utf16) + goto invalid_quant_count; + break; + } + p++; + quant_min = parse_digits(&p, TRUE); + quant_max = quant_min; + if (*p == ',') { + p++; + if (is_digit(*p)) { + quant_max = parse_digits(&p, TRUE); + if (quant_max < quant_min) { + invalid_quant_count: + return re_parse_error(s, "invalid repetition count"); + } + } else { + quant_max = INT32_MAX; /* infinity */ + } + } + if (*p != '}' && !s->is_utf16) { + /* Annex B: normal atom if invalid '{' syntax */ + p = p1; + break; + } + if (re_parse_expect(s, &p, '}')) + return -1; + } + quantifier: + greedy = TRUE; + if (*p == '?') { + p++; + greedy = FALSE; + } + if (last_atom_start < 0) { + return re_parse_error(s, "nothing to repeat"); + } + if (greedy) { + int len, pos; + + if (quant_max > 0) { + /* specific optimization for simple quantifiers */ + if (dbuf_error(&s->byte_code)) + goto out_of_memory; + len = re_is_simple_quantifier(s->byte_code.buf + last_atom_start, + s->byte_code.size - last_atom_start); + if (len > 0) { + re_emit_op(s, REOP_match); + + if (dbuf_insert(&s->byte_code, last_atom_start, 17)) + goto out_of_memory; + pos = last_atom_start; + s->byte_code.buf[pos++] = REOP_simple_greedy_quant; + put_u32(&s->byte_code.buf[pos], + s->byte_code.size - last_atom_start - 17); + pos += 4; + put_u32(&s->byte_code.buf[pos], quant_min); + pos += 4; + put_u32(&s->byte_code.buf[pos], quant_max); + pos += 4; + put_u32(&s->byte_code.buf[pos], len); + pos += 4; + goto done; + } + } + + if (dbuf_error(&s->byte_code)) + goto out_of_memory; + add_zero_advance_check = (re_check_advance(s->byte_code.buf + last_atom_start, + s->byte_code.size - last_atom_start) == 0); + } else { + add_zero_advance_check = FALSE; + } + + { + int len, pos; + len = s->byte_code.size - last_atom_start; + if (quant_min == 0) { + /* need to reset the capture in case the atom is + not executed */ + if (last_capture_count != s->capture_count) { + if (dbuf_insert(&s->byte_code, last_atom_start, 3)) + goto out_of_memory; + s->byte_code.buf[last_atom_start++] = REOP_save_reset; + s->byte_code.buf[last_atom_start++] = last_capture_count; + s->byte_code.buf[last_atom_start++] = s->capture_count - 1; + } + if (quant_max == 0) { + s->byte_code.size = last_atom_start; + } else if (quant_max == 1) { + if (dbuf_insert(&s->byte_code, last_atom_start, 5)) + goto out_of_memory; + s->byte_code.buf[last_atom_start] = REOP_split_goto_first + + greedy; + put_u32(s->byte_code.buf + last_atom_start + 1, len); + } else if (quant_max == INT32_MAX) { + if (dbuf_insert(&s->byte_code, last_atom_start, 5 + add_zero_advance_check)) + goto out_of_memory; + s->byte_code.buf[last_atom_start] = REOP_split_goto_first + + greedy; + put_u32(s->byte_code.buf + last_atom_start + 1, + len + 5 + add_zero_advance_check); + if (add_zero_advance_check) { + /* avoid infinite loop by stoping the + recursion if no advance was made in the + atom (only works if the atom has no + side effect) */ + s->byte_code.buf[last_atom_start + 1 + 4] = REOP_push_char_pos; + re_emit_goto(s, REOP_bne_char_pos, last_atom_start); + } else { + re_emit_goto(s, REOP_goto, last_atom_start); + } + } else { + if (dbuf_insert(&s->byte_code, last_atom_start, 10)) + goto out_of_memory; + pos = last_atom_start; + s->byte_code.buf[pos++] = REOP_push_i32; + put_u32(s->byte_code.buf + pos, quant_max); + pos += 4; + s->byte_code.buf[pos++] = REOP_split_goto_first + greedy; + put_u32(s->byte_code.buf + pos, len + 5); + re_emit_goto(s, REOP_loop, last_atom_start + 5); + re_emit_op(s, REOP_drop); + } + } else if (quant_min == 1 && quant_max == INT32_MAX && + !add_zero_advance_check) { + re_emit_goto(s, REOP_split_next_first - greedy, + last_atom_start); + } else { + if (quant_min == 1) { + /* nothing to add */ + } else { + if (dbuf_insert(&s->byte_code, last_atom_start, 5)) + goto out_of_memory; + s->byte_code.buf[last_atom_start] = REOP_push_i32; + put_u32(s->byte_code.buf + last_atom_start + 1, + quant_min); + last_atom_start += 5; + re_emit_goto(s, REOP_loop, last_atom_start); + re_emit_op(s, REOP_drop); + } + if (quant_max == INT32_MAX) { + pos = s->byte_code.size; + re_emit_op_u32(s, REOP_split_goto_first + greedy, + len + 5 + add_zero_advance_check); + if (add_zero_advance_check) + re_emit_op(s, REOP_push_char_pos); + /* copy the atom */ + dbuf_put_self(&s->byte_code, last_atom_start, len); + if (add_zero_advance_check) + re_emit_goto(s, REOP_bne_char_pos, pos); + else + re_emit_goto(s, REOP_goto, pos); + } else if (quant_max > quant_min) { + re_emit_op_u32(s, REOP_push_i32, quant_max - quant_min); + pos = s->byte_code.size; + re_emit_op_u32(s, REOP_split_goto_first + greedy, len + 5); + /* copy the atom */ + dbuf_put_self(&s->byte_code, last_atom_start, len); + + re_emit_goto(s, REOP_loop, pos); + re_emit_op(s, REOP_drop); + } + } + last_atom_start = -1; + } + break; + default: + break; + } + } + done: + s->buf_ptr = p; + return 0; + out_of_memory: + return re_parse_out_of_memory(s); +} + +static int re_parse_alternative(REParseState *s, BOOL is_backward_dir) +{ + const uint8_t *p; + int ret; + size_t start, term_start, end, term_size; + + start = s->byte_code.size; + for(;;) { + p = s->buf_ptr; + if (p >= s->buf_end) + break; + if (*p == '|' || *p == ')') + break; + term_start = s->byte_code.size; + ret = re_parse_term(s, is_backward_dir); + if (ret) + return ret; + if (is_backward_dir) { + /* reverse the order of the terms (XXX: inefficient, but + speed is not really critical here) */ + end = s->byte_code.size; + term_size = end - term_start; + if (dbuf_realloc(&s->byte_code, end + term_size)) + return -1; + memmove(s->byte_code.buf + start + term_size, + s->byte_code.buf + start, + end - start); + memcpy(s->byte_code.buf + start, s->byte_code.buf + end, + term_size); + } + } + return 0; +} + +static int re_parse_disjunction(REParseState *s, BOOL is_backward_dir) +{ + int start, len, pos; + + if (lre_check_stack_overflow(s->opaque, 0)) + return re_parse_error(s, "stack overflow"); + + start = s->byte_code.size; + if (re_parse_alternative(s, is_backward_dir)) + return -1; + while (*s->buf_ptr == '|') { + s->buf_ptr++; + + len = s->byte_code.size - start; + + /* insert a split before the first alternative */ + if (dbuf_insert(&s->byte_code, start, 5)) { + return re_parse_out_of_memory(s); + } + s->byte_code.buf[start] = REOP_split_next_first; + put_u32(s->byte_code.buf + start + 1, len + 5); + + pos = re_emit_op_u32(s, REOP_goto, 0); + + if (re_parse_alternative(s, is_backward_dir)) + return -1; + + /* patch the goto */ + len = s->byte_code.size - (pos + 4); + put_u32(s->byte_code.buf + pos, len); + } + return 0; +} + +/* the control flow is recursive so the analysis can be linear */ +static int compute_stack_size(const uint8_t *bc_buf, int bc_buf_len) +{ + int stack_size, stack_size_max, pos, opcode, len; + uint32_t val; + + stack_size = 0; + stack_size_max = 0; + bc_buf += RE_HEADER_LEN; + bc_buf_len -= RE_HEADER_LEN; + pos = 0; + while (pos < bc_buf_len) { + opcode = bc_buf[pos]; + len = reopcode_info[opcode].size; + assert(opcode < REOP_COUNT); + assert((pos + len) <= bc_buf_len); + switch(opcode) { + case REOP_push_i32: + case REOP_push_char_pos: + stack_size++; + if (stack_size > stack_size_max) { + if (stack_size > STACK_SIZE_MAX) + return -1; + stack_size_max = stack_size; + } + break; + case REOP_drop: + case REOP_bne_char_pos: + assert(stack_size > 0); + stack_size--; + break; + case REOP_range: + val = get_u16(bc_buf + pos + 1); + len += val * 4; + break; + case REOP_range32: + val = get_u16(bc_buf + pos + 1); + len += val * 8; + break; + } + pos += len; + } + return stack_size_max; +} + +/* 'buf' must be a zero terminated UTF-8 string of length buf_len. + Return NULL if error and allocate an error message in *perror_msg, + otherwise the compiled bytecode and its length in plen. +*/ +uint8_t *lre_compile(int *plen, char *error_msg, int error_msg_size, + const char *buf, size_t buf_len, int re_flags, + void *opaque) +{ + REParseState s_s, *s = &s_s; + int stack_size; + BOOL is_sticky; + + memset(s, 0, sizeof(*s)); + s->opaque = opaque; + s->buf_ptr = (const uint8_t *)buf; + s->buf_end = s->buf_ptr + buf_len; + s->buf_start = s->buf_ptr; + s->re_flags = re_flags; + s->is_utf16 = ((re_flags & LRE_FLAG_UTF16) != 0); + is_sticky = ((re_flags & LRE_FLAG_STICKY) != 0); + s->ignore_case = ((re_flags & LRE_FLAG_IGNORECASE) != 0); + s->dotall = ((re_flags & LRE_FLAG_DOTALL) != 0); + s->capture_count = 1; + s->total_capture_count = -1; + s->has_named_captures = -1; + + dbuf_init2(&s->byte_code, opaque, lre_realloc); + dbuf_init2(&s->group_names, opaque, lre_realloc); + + dbuf_putc(&s->byte_code, re_flags); /* first element is the flags */ + dbuf_putc(&s->byte_code, 0); /* second element is the number of captures */ + dbuf_putc(&s->byte_code, 0); /* stack size */ + dbuf_put_u32(&s->byte_code, 0); /* bytecode length */ + + if (!is_sticky) { + /* iterate thru all positions (about the same as .*?( ... ) ) + . We do it without an explicit loop so that lock step + thread execution will be possible in an optimized + implementation */ + re_emit_op_u32(s, REOP_split_goto_first, 1 + 5); + re_emit_op(s, REOP_any); + re_emit_op_u32(s, REOP_goto, -(5 + 1 + 5)); + } + re_emit_op_u8(s, REOP_save_start, 0); + + if (re_parse_disjunction(s, FALSE)) { + error: + dbuf_free(&s->byte_code); + dbuf_free(&s->group_names); + pstrcpy(error_msg, error_msg_size, s->u.error_msg); + *plen = 0; + return NULL; + } + + re_emit_op_u8(s, REOP_save_end, 0); + + re_emit_op(s, REOP_match); + + if (*s->buf_ptr != '\0') { + re_parse_error(s, "extraneous characters at the end"); + goto error; + } + + if (dbuf_error(&s->byte_code)) { + re_parse_out_of_memory(s); + goto error; + } + + stack_size = compute_stack_size(s->byte_code.buf, s->byte_code.size); + if (stack_size < 0) { + re_parse_error(s, "too many imbricated quantifiers"); + goto error; + } + + s->byte_code.buf[RE_HEADER_CAPTURE_COUNT] = s->capture_count; + s->byte_code.buf[RE_HEADER_STACK_SIZE] = stack_size; + put_u32(s->byte_code.buf + 3, s->byte_code.size - RE_HEADER_LEN); + + /* add the named groups if needed */ + if (s->group_names.size > (s->capture_count - 1)) { + dbuf_put(&s->byte_code, s->group_names.buf, s->group_names.size); + s->byte_code.buf[RE_HEADER_FLAGS] |= LRE_FLAG_NAMED_GROUPS; + } + dbuf_free(&s->group_names); + +#ifdef DUMP_REOP + lre_dump_bytecode(s->byte_code.buf, s->byte_code.size); +#endif + + error_msg[0] = '\0'; + *plen = s->byte_code.size; + return s->byte_code.buf; +} + +static BOOL is_line_terminator(uint32_t c) +{ + return (c == '\n' || c == '\r' || c == CP_LS || c == CP_PS); +} + +static BOOL is_word_char(uint32_t c) +{ + return ((c >= '0' && c <= '9') || + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c == '_')); +} + +#define GET_CHAR(c, cptr, cbuf_end) \ + do { \ + if (cbuf_type == 0) { \ + c = *cptr++; \ + } else { \ + uint32_t __c1; \ + c = *(uint16_t *)cptr; \ + cptr += 2; \ + if (c >= 0xd800 && c < 0xdc00 && \ + cbuf_type == 2 && cptr < cbuf_end) { \ + __c1 = *(uint16_t *)cptr; \ + if (__c1 >= 0xdc00 && __c1 < 0xe000) { \ + c = (((c & 0x3ff) << 10) | (__c1 & 0x3ff)) + 0x10000; \ + cptr += 2; \ + } \ + } \ + } \ + } while (0) + +#define PEEK_CHAR(c, cptr, cbuf_end) \ + do { \ + if (cbuf_type == 0) { \ + c = cptr[0]; \ + } else { \ + uint32_t __c1; \ + c = ((uint16_t *)cptr)[0]; \ + if (c >= 0xd800 && c < 0xdc00 && \ + cbuf_type == 2 && (cptr + 2) < cbuf_end) { \ + __c1 = ((uint16_t *)cptr)[1]; \ + if (__c1 >= 0xdc00 && __c1 < 0xe000) { \ + c = (((c & 0x3ff) << 10) | (__c1 & 0x3ff)) + 0x10000; \ + } \ + } \ + } \ + } while (0) + +#define PEEK_PREV_CHAR(c, cptr, cbuf_start) \ + do { \ + if (cbuf_type == 0) { \ + c = cptr[-1]; \ + } else { \ + uint32_t __c1; \ + c = ((uint16_t *)cptr)[-1]; \ + if (c >= 0xdc00 && c < 0xe000 && \ + cbuf_type == 2 && (cptr - 4) >= cbuf_start) { \ + __c1 = ((uint16_t *)cptr)[-2]; \ + if (__c1 >= 0xd800 && __c1 < 0xdc00 ) { \ + c = (((__c1 & 0x3ff) << 10) | (c & 0x3ff)) + 0x10000; \ + } \ + } \ + } \ + } while (0) + +#define GET_PREV_CHAR(c, cptr, cbuf_start) \ + do { \ + if (cbuf_type == 0) { \ + cptr--; \ + c = cptr[0]; \ + } else { \ + uint32_t __c1; \ + cptr -= 2; \ + c = ((uint16_t *)cptr)[0]; \ + if (c >= 0xdc00 && c < 0xe000 && \ + cbuf_type == 2 && cptr > cbuf_start) { \ + __c1 = ((uint16_t *)cptr)[-1]; \ + if (__c1 >= 0xd800 && __c1 < 0xdc00 ) { \ + cptr -= 2; \ + c = (((__c1 & 0x3ff) << 10) | (c & 0x3ff)) + 0x10000; \ + } \ + } \ + } \ + } while (0) + +#define PREV_CHAR(cptr, cbuf_start) \ + do { \ + if (cbuf_type == 0) { \ + cptr--; \ + } else { \ + cptr -= 2; \ + if (cbuf_type == 2) { \ + c = ((uint16_t *)cptr)[0]; \ + if (c >= 0xdc00 && c < 0xe000 && cptr > cbuf_start) { \ + c = ((uint16_t *)cptr)[-1]; \ + if (c >= 0xd800 && c < 0xdc00) \ + cptr -= 2; \ + } \ + } \ + } \ + } while (0) + +typedef uintptr_t StackInt; + +typedef enum { + RE_EXEC_STATE_SPLIT, + RE_EXEC_STATE_LOOKAHEAD, + RE_EXEC_STATE_NEGATIVE_LOOKAHEAD, + RE_EXEC_STATE_GREEDY_QUANT, +} REExecStateEnum; + +typedef struct REExecState { + REExecStateEnum type : 8; + uint8_t stack_len; + size_t count; /* only used for RE_EXEC_STATE_GREEDY_QUANT */ + const uint8_t *cptr; + const uint8_t *pc; + void *buf[0]; +} REExecState; + +typedef struct { + const uint8_t *cbuf; + const uint8_t *cbuf_end; + /* 0 = 8 bit chars, 1 = 16 bit chars, 2 = 16 bit chars, UTF-16 */ + int cbuf_type; + int capture_count; + int stack_size_max; + BOOL multi_line; + BOOL ignore_case; + BOOL is_utf16; + void *opaque; /* used for stack overflow check */ + + size_t state_size; + uint8_t *state_stack; + size_t state_stack_size; + size_t state_stack_len; +} REExecContext; + +static int push_state(REExecContext *s, + uint8_t **capture, + StackInt *stack, size_t stack_len, + const uint8_t *pc, const uint8_t *cptr, + REExecStateEnum type, size_t count) +{ + REExecState *rs; + uint8_t *new_stack; + size_t new_size, i, n; + StackInt *stack_buf; + + if (unlikely((s->state_stack_len + 1) > s->state_stack_size)) { + /* reallocate the stack */ + new_size = s->state_stack_size * 3 / 2; + if (new_size < 8) + new_size = 8; + new_stack = lre_realloc(s->opaque, s->state_stack, new_size * s->state_size); + if (!new_stack) + return -1; + s->state_stack_size = new_size; + s->state_stack = new_stack; + } + rs = (REExecState *)(s->state_stack + s->state_stack_len * s->state_size); + s->state_stack_len++; + rs->type = type; + rs->count = count; + rs->stack_len = stack_len; + rs->cptr = cptr; + rs->pc = pc; + n = 2 * s->capture_count; + for(i = 0; i < n; i++) + rs->buf[i] = capture[i]; + stack_buf = (StackInt *)(rs->buf + n); + for(i = 0; i < stack_len; i++) + stack_buf[i] = stack[i]; + return 0; +} + +/* return 1 if match, 0 if not match or -1 if error. */ +static intptr_t lre_exec_backtrack(REExecContext *s, uint8_t **capture, + StackInt *stack, int stack_len, + const uint8_t *pc, const uint8_t *cptr, + BOOL no_recurse) +{ + int opcode, ret; + int cbuf_type; + uint32_t val, c; + const uint8_t *cbuf_end; + + cbuf_type = s->cbuf_type; + cbuf_end = s->cbuf_end; + + for(;;) { + // printf("top=%p: pc=%d\n", th_list.top, (int)(pc - (bc_buf + RE_HEADER_LEN))); + opcode = *pc++; + switch(opcode) { + case REOP_match: + { + REExecState *rs; + if (no_recurse) + return (intptr_t)cptr; + ret = 1; + goto recurse; + no_match: + if (no_recurse) + return 0; + ret = 0; + recurse: + for(;;) { + if (s->state_stack_len == 0) + return ret; + rs = (REExecState *)(s->state_stack + + (s->state_stack_len - 1) * s->state_size); + if (rs->type == RE_EXEC_STATE_SPLIT) { + if (!ret) { + pop_state: + memcpy(capture, rs->buf, + sizeof(capture[0]) * 2 * s->capture_count); + pop_state1: + pc = rs->pc; + cptr = rs->cptr; + stack_len = rs->stack_len; + memcpy(stack, rs->buf + 2 * s->capture_count, + stack_len * sizeof(stack[0])); + s->state_stack_len--; + break; + } + } else if (rs->type == RE_EXEC_STATE_GREEDY_QUANT) { + if (!ret) { + uint32_t char_count, i; + memcpy(capture, rs->buf, + sizeof(capture[0]) * 2 * s->capture_count); + stack_len = rs->stack_len; + memcpy(stack, rs->buf + 2 * s->capture_count, + stack_len * sizeof(stack[0])); + pc = rs->pc; + cptr = rs->cptr; + /* go backward */ + char_count = get_u32(pc + 12); + for(i = 0; i < char_count; i++) { + PREV_CHAR(cptr, s->cbuf); + } + pc = (pc + 16) + (int)get_u32(pc); + rs->cptr = cptr; + rs->count--; + if (rs->count == 0) { + s->state_stack_len--; + } + break; + } + } else { + ret = ((rs->type == RE_EXEC_STATE_LOOKAHEAD && ret) || + (rs->type == RE_EXEC_STATE_NEGATIVE_LOOKAHEAD && !ret)); + if (ret) { + /* keep the capture in case of positive lookahead */ + if (rs->type == RE_EXEC_STATE_LOOKAHEAD) + goto pop_state1; + else + goto pop_state; + } + } + s->state_stack_len--; + } + } + break; + case REOP_char32: + val = get_u32(pc); + pc += 4; + goto test_char; + case REOP_char: + val = get_u16(pc); + pc += 2; + test_char: + if (cptr >= cbuf_end) + goto no_match; + GET_CHAR(c, cptr, cbuf_end); + if (s->ignore_case) { + c = lre_canonicalize(c, s->is_utf16); + } + if (val != c) + goto no_match; + break; + case REOP_split_goto_first: + case REOP_split_next_first: + { + const uint8_t *pc1; + + val = get_u32(pc); + pc += 4; + if (opcode == REOP_split_next_first) { + pc1 = pc + (int)val; + } else { + pc1 = pc; + pc = pc + (int)val; + } + ret = push_state(s, capture, stack, stack_len, + pc1, cptr, RE_EXEC_STATE_SPLIT, 0); + if (ret < 0) + return -1; + break; + } + case REOP_lookahead: + case REOP_negative_lookahead: + val = get_u32(pc); + pc += 4; + ret = push_state(s, capture, stack, stack_len, + pc + (int)val, cptr, + RE_EXEC_STATE_LOOKAHEAD + opcode - REOP_lookahead, + 0); + if (ret < 0) + return -1; + break; + + case REOP_goto: + val = get_u32(pc); + pc += 4 + (int)val; + break; + case REOP_line_start: + if (cptr == s->cbuf) + break; + if (!s->multi_line) + goto no_match; + PEEK_PREV_CHAR(c, cptr, s->cbuf); + if (!is_line_terminator(c)) + goto no_match; + break; + case REOP_line_end: + if (cptr == cbuf_end) + break; + if (!s->multi_line) + goto no_match; + PEEK_CHAR(c, cptr, cbuf_end); + if (!is_line_terminator(c)) + goto no_match; + break; + case REOP_dot: + if (cptr == cbuf_end) + goto no_match; + GET_CHAR(c, cptr, cbuf_end); + if (is_line_terminator(c)) + goto no_match; + break; + case REOP_any: + if (cptr == cbuf_end) + goto no_match; + GET_CHAR(c, cptr, cbuf_end); + break; + case REOP_save_start: + case REOP_save_end: + val = *pc++; + assert(val < s->capture_count); + capture[2 * val + opcode - REOP_save_start] = (uint8_t *)cptr; + break; + case REOP_save_reset: + { + uint32_t val2; + val = pc[0]; + val2 = pc[1]; + pc += 2; + assert(val2 < s->capture_count); + while (val <= val2) { + capture[2 * val] = NULL; + capture[2 * val + 1] = NULL; + val++; + } + } + break; + case REOP_push_i32: + val = get_u32(pc); + pc += 4; + stack[stack_len++] = val; + break; + case REOP_drop: + stack_len--; + break; + case REOP_loop: + val = get_u32(pc); + pc += 4; + if (--stack[stack_len - 1] != 0) { + pc += (int)val; + } + break; + case REOP_push_char_pos: + stack[stack_len++] = (uintptr_t)cptr; + break; + case REOP_bne_char_pos: + val = get_u32(pc); + pc += 4; + if (stack[--stack_len] != (uintptr_t)cptr) + pc += (int)val; + break; + case REOP_word_boundary: + case REOP_not_word_boundary: + { + BOOL v1, v2; + /* char before */ + if (cptr == s->cbuf) { + v1 = FALSE; + } else { + PEEK_PREV_CHAR(c, cptr, s->cbuf); + v1 = is_word_char(c); + } + /* current char */ + if (cptr >= cbuf_end) { + v2 = FALSE; + } else { + PEEK_CHAR(c, cptr, cbuf_end); + v2 = is_word_char(c); + } + if (v1 ^ v2 ^ (REOP_not_word_boundary - opcode)) + goto no_match; + } + break; + case REOP_back_reference: + case REOP_backward_back_reference: + { + const uint8_t *cptr1, *cptr1_end, *cptr1_start; + uint32_t c1, c2; + + val = *pc++; + if (val >= s->capture_count) + goto no_match; + cptr1_start = capture[2 * val]; + cptr1_end = capture[2 * val + 1]; + if (!cptr1_start || !cptr1_end) + break; + if (opcode == REOP_back_reference) { + cptr1 = cptr1_start; + while (cptr1 < cptr1_end) { + if (cptr >= cbuf_end) + goto no_match; + GET_CHAR(c1, cptr1, cptr1_end); + GET_CHAR(c2, cptr, cbuf_end); + if (s->ignore_case) { + c1 = lre_canonicalize(c1, s->is_utf16); + c2 = lre_canonicalize(c2, s->is_utf16); + } + if (c1 != c2) + goto no_match; + } + } else { + cptr1 = cptr1_end; + while (cptr1 > cptr1_start) { + if (cptr == s->cbuf) + goto no_match; + GET_PREV_CHAR(c1, cptr1, cptr1_start); + GET_PREV_CHAR(c2, cptr, s->cbuf); + if (s->ignore_case) { + c1 = lre_canonicalize(c1, s->is_utf16); + c2 = lre_canonicalize(c2, s->is_utf16); + } + if (c1 != c2) + goto no_match; + } + } + } + break; + case REOP_range: + { + int n; + uint32_t low, high, idx_min, idx_max, idx; + + n = get_u16(pc); /* n must be >= 1 */ + pc += 2; + if (cptr >= cbuf_end) + goto no_match; + GET_CHAR(c, cptr, cbuf_end); + if (s->ignore_case) { + c = lre_canonicalize(c, s->is_utf16); + } + idx_min = 0; + low = get_u16(pc + 0 * 4); + if (c < low) + goto no_match; + idx_max = n - 1; + high = get_u16(pc + idx_max * 4 + 2); + /* 0xffff in for last value means +infinity */ + if (unlikely(c >= 0xffff) && high == 0xffff) + goto range_match; + if (c > high) + goto no_match; + while (idx_min <= idx_max) { + idx = (idx_min + idx_max) / 2; + low = get_u16(pc + idx * 4); + high = get_u16(pc + idx * 4 + 2); + if (c < low) + idx_max = idx - 1; + else if (c > high) + idx_min = idx + 1; + else + goto range_match; + } + goto no_match; + range_match: + pc += 4 * n; + } + break; + case REOP_range32: + { + int n; + uint32_t low, high, idx_min, idx_max, idx; + + n = get_u16(pc); /* n must be >= 1 */ + pc += 2; + if (cptr >= cbuf_end) + goto no_match; + GET_CHAR(c, cptr, cbuf_end); + if (s->ignore_case) { + c = lre_canonicalize(c, s->is_utf16); + } + idx_min = 0; + low = get_u32(pc + 0 * 8); + if (c < low) + goto no_match; + idx_max = n - 1; + high = get_u32(pc + idx_max * 8 + 4); + if (c > high) + goto no_match; + while (idx_min <= idx_max) { + idx = (idx_min + idx_max) / 2; + low = get_u32(pc + idx * 8); + high = get_u32(pc + idx * 8 + 4); + if (c < low) + idx_max = idx - 1; + else if (c > high) + idx_min = idx + 1; + else + goto range32_match; + } + goto no_match; + range32_match: + pc += 8 * n; + } + break; + case REOP_prev: + /* go to the previous char */ + if (cptr == s->cbuf) + goto no_match; + PREV_CHAR(cptr, s->cbuf); + break; + case REOP_simple_greedy_quant: + { + uint32_t next_pos, quant_min, quant_max; + size_t q; + intptr_t res; + const uint8_t *pc1; + + next_pos = get_u32(pc); + quant_min = get_u32(pc + 4); + quant_max = get_u32(pc + 8); + pc += 16; + pc1 = pc; + pc += (int)next_pos; + + q = 0; + for(;;) { + res = lre_exec_backtrack(s, capture, stack, stack_len, + pc1, cptr, TRUE); + if (res == -1) + return res; + if (!res) + break; + cptr = (uint8_t *)res; + q++; + if (q >= quant_max && quant_max != INT32_MAX) + break; + } + if (q < quant_min) + goto no_match; + if (q > quant_min) { + /* will examine all matches down to quant_min */ + ret = push_state(s, capture, stack, stack_len, + pc1 - 16, cptr, + RE_EXEC_STATE_GREEDY_QUANT, + q - quant_min); + if (ret < 0) + return -1; + } + } + break; + default: + abort(); + } + } +} + +/* Return 1 if match, 0 if not match or -1 if error. cindex is the + starting position of the match and must be such as 0 <= cindex <= + clen. */ +int lre_exec(uint8_t **capture, + const uint8_t *bc_buf, const uint8_t *cbuf, int cindex, int clen, + int cbuf_type, void *opaque) +{ + REExecContext s_s, *s = &s_s; + int re_flags, i, alloca_size, ret; + StackInt *stack_buf; + + re_flags = bc_buf[RE_HEADER_FLAGS]; + s->multi_line = (re_flags & LRE_FLAG_MULTILINE) != 0; + s->ignore_case = (re_flags & LRE_FLAG_IGNORECASE) != 0; + s->is_utf16 = (re_flags & LRE_FLAG_UTF16) != 0; + s->capture_count = bc_buf[RE_HEADER_CAPTURE_COUNT]; + s->stack_size_max = bc_buf[RE_HEADER_STACK_SIZE]; + s->cbuf = cbuf; + s->cbuf_end = cbuf + (clen << cbuf_type); + s->cbuf_type = cbuf_type; + if (s->cbuf_type == 1 && s->is_utf16) + s->cbuf_type = 2; + s->opaque = opaque; + + s->state_size = sizeof(REExecState) + + s->capture_count * sizeof(capture[0]) * 2 + + s->stack_size_max * sizeof(stack_buf[0]); + s->state_stack = NULL; + s->state_stack_len = 0; + s->state_stack_size = 0; + + for(i = 0; i < s->capture_count * 2; i++) + capture[i] = NULL; + alloca_size = s->stack_size_max * sizeof(stack_buf[0]); + stack_buf = alloca(alloca_size); + ret = lre_exec_backtrack(s, capture, stack_buf, 0, bc_buf + RE_HEADER_LEN, + cbuf + (cindex << cbuf_type), FALSE); + lre_realloc(s->opaque, s->state_stack, 0); + return ret; +} + +int lre_get_capture_count(const uint8_t *bc_buf) +{ + return bc_buf[RE_HEADER_CAPTURE_COUNT]; +} + +int lre_get_flags(const uint8_t *bc_buf) +{ + return bc_buf[RE_HEADER_FLAGS]; +} + +/* Return NULL if no group names. Otherwise, return a pointer to + 'capture_count - 1' zero terminated UTF-8 strings. */ +const char *lre_get_groupnames(const uint8_t *bc_buf) +{ + uint32_t re_bytecode_len; + if ((lre_get_flags(bc_buf) & LRE_FLAG_NAMED_GROUPS) == 0) + return NULL; + re_bytecode_len = get_u32(bc_buf + 3); + return (const char *)(bc_buf + 7 + re_bytecode_len); +} + +#ifdef TEST + +BOOL lre_check_stack_overflow(void *opaque, size_t alloca_size) +{ + return FALSE; +} + +void *lre_realloc(void *opaque, void *ptr, size_t size) +{ + return realloc(ptr, size); +} + +int main(int argc, char **argv) +{ + int len, ret, i; + uint8_t *bc; + char error_msg[64]; + uint8_t *capture[CAPTURE_COUNT_MAX * 2]; + const char *input; + int input_len, capture_count; + + if (argc < 3) { + printf("usage: %s regexp input\n", argv[0]); + exit(1); + } + bc = lre_compile(&len, error_msg, sizeof(error_msg), argv[1], + strlen(argv[1]), 0, NULL); + if (!bc) { + fprintf(stderr, "error: %s\n", error_msg); + exit(1); + } + + input = argv[2]; + input_len = strlen(input); + + ret = lre_exec(capture, bc, (uint8_t *)input, 0, input_len, 0, NULL); + printf("ret=%d\n", ret); + if (ret == 1) { + capture_count = lre_get_capture_count(bc); + for(i = 0; i < 2 * capture_count; i++) { + uint8_t *ptr; + ptr = capture[i]; + printf("%d: ", i); + if (!ptr) + printf(""); + else + printf("%u", (int)(ptr - (uint8_t *)input)); + printf("\n"); + } + } + return 0; +} +#endif diff --git a/quickjs/libregexp.h b/quickjs/libregexp.h new file mode 100644 index 0000000..9aedb7e --- /dev/null +++ b/quickjs/libregexp.h @@ -0,0 +1,92 @@ +/* + * Regular Expression Engine + * + * Copyright (c) 2017-2018 Fabrice Bellard + * + * 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. + */ +#ifndef LIBREGEXP_H +#define LIBREGEXP_H + +#include + +#include "libunicode.h" + +#define LRE_BOOL int /* for documentation purposes */ + +#define LRE_FLAG_GLOBAL (1 << 0) +#define LRE_FLAG_IGNORECASE (1 << 1) +#define LRE_FLAG_MULTILINE (1 << 2) +#define LRE_FLAG_DOTALL (1 << 3) +#define LRE_FLAG_UTF16 (1 << 4) +#define LRE_FLAG_STICKY (1 << 5) + +#define LRE_FLAG_NAMED_GROUPS (1 << 7) /* named groups are present in the regexp */ + +uint8_t *lre_compile(int *plen, char *error_msg, int error_msg_size, + const char *buf, size_t buf_len, int re_flags, + void *opaque); +int lre_get_capture_count(const uint8_t *bc_buf); +int lre_get_flags(const uint8_t *bc_buf); +const char *lre_get_groupnames(const uint8_t *bc_buf); +int lre_exec(uint8_t **capture, + const uint8_t *bc_buf, const uint8_t *cbuf, int cindex, int clen, + int cbuf_type, void *opaque); + +int lre_parse_escape(const uint8_t **pp, int allow_utf16); +LRE_BOOL lre_is_space(int c); + +/* must be provided by the user */ +LRE_BOOL lre_check_stack_overflow(void *opaque, size_t alloca_size); +void *lre_realloc(void *opaque, void *ptr, size_t size); + +/* JS identifier test */ +extern uint32_t const lre_id_start_table_ascii[4]; +extern uint32_t const lre_id_continue_table_ascii[4]; + +static inline int lre_js_is_ident_first(int c) +{ + if ((uint32_t)c < 128) { + return (lre_id_start_table_ascii[c >> 5] >> (c & 31)) & 1; + } else { +#ifdef CONFIG_ALL_UNICODE + return lre_is_id_start(c); +#else + return !lre_is_space(c); +#endif + } +} + +static inline int lre_js_is_ident_next(int c) +{ + if ((uint32_t)c < 128) { + return (lre_id_continue_table_ascii[c >> 5] >> (c & 31)) & 1; + } else { + /* ZWNJ and ZWJ are accepted in identifiers */ +#ifdef CONFIG_ALL_UNICODE + return lre_is_id_continue(c) || c == 0x200C || c == 0x200D; +#else + return !lre_is_space(c) || c == 0x200C || c == 0x200D; +#endif + } +} + +#undef LRE_BOOL + +#endif /* LIBREGEXP_H */ diff --git a/quickjs/libunicode-table.h b/quickjs/libunicode-table.h new file mode 100644 index 0000000..1727525 --- /dev/null +++ b/quickjs/libunicode-table.h @@ -0,0 +1,4449 @@ +/* Compressed unicode tables */ +/* Automatically generated file - do not edit */ + +#include + +static const uint32_t case_conv_table1[370] = { + 0x00209a30, 0x00309a00, 0x005a8173, 0x00601730, + 0x006c0730, 0x006f81b3, 0x00701700, 0x007c0700, + 0x007f8100, 0x00803040, 0x009801c3, 0x00988190, + 0x00990640, 0x009c9040, 0x00a481b4, 0x00a52e40, + 0x00bc0130, 0x00bc8640, 0x00bf8170, 0x00c00100, + 0x00c08130, 0x00c10440, 0x00c30130, 0x00c38240, + 0x00c48230, 0x00c58240, 0x00c70130, 0x00c78130, + 0x00c80130, 0x00c88240, 0x00c98130, 0x00ca0130, + 0x00ca8100, 0x00cb0130, 0x00cb8130, 0x00cc0240, + 0x00cd0100, 0x00ce0130, 0x00ce8130, 0x00cf0100, + 0x00cf8130, 0x00d00640, 0x00d30130, 0x00d38240, + 0x00d48130, 0x00d60240, 0x00d70130, 0x00d78240, + 0x00d88230, 0x00d98440, 0x00db8130, 0x00dc0240, + 0x00de0240, 0x00df8100, 0x00e20350, 0x00e38350, + 0x00e50350, 0x00e69040, 0x00ee8100, 0x00ef1240, + 0x00f801b4, 0x00f88350, 0x00fa0240, 0x00fb0130, + 0x00fb8130, 0x00fc2840, 0x01100130, 0x01111240, + 0x011d0131, 0x011d8240, 0x011e8130, 0x011f0131, + 0x011f8201, 0x01208240, 0x01218130, 0x01220130, + 0x01228130, 0x01230a40, 0x01280101, 0x01288101, + 0x01290101, 0x01298100, 0x012a0100, 0x012b0200, + 0x012c8100, 0x012d8100, 0x012e0101, 0x01300100, + 0x01308101, 0x01318100, 0x01328101, 0x01330101, + 0x01340100, 0x01348100, 0x01350101, 0x01358101, + 0x01360101, 0x01378100, 0x01388101, 0x01390100, + 0x013a8100, 0x013e8101, 0x01400100, 0x01410101, + 0x01418100, 0x01438101, 0x01440100, 0x01448100, + 0x01450200, 0x01460100, 0x01490100, 0x014e8101, + 0x014f0101, 0x01a28173, 0x01b80440, 0x01bb0240, + 0x01bd8300, 0x01bf8130, 0x01c30130, 0x01c40330, + 0x01c60130, 0x01c70230, 0x01c801d0, 0x01c89130, + 0x01d18930, 0x01d60100, 0x01d68300, 0x01d801d3, + 0x01d89100, 0x01e10173, 0x01e18900, 0x01e60100, + 0x01e68200, 0x01e78130, 0x01e80173, 0x01e88173, + 0x01ea8173, 0x01eb0173, 0x01eb8100, 0x01ec1840, + 0x01f80173, 0x01f88173, 0x01f90100, 0x01f98100, + 0x01fa01a0, 0x01fa8173, 0x01fb8240, 0x01fc8130, + 0x01fd0240, 0x01fe8330, 0x02001030, 0x02082030, + 0x02182000, 0x02281000, 0x02302240, 0x02453640, + 0x02600130, 0x02608e40, 0x02678100, 0x02686040, + 0x0298a630, 0x02b0a600, 0x02c381b5, 0x08502631, + 0x08638131, 0x08668131, 0x08682b00, 0x087e8300, + 0x09d05011, 0x09f80610, 0x09fc0620, 0x0e400174, + 0x0e408174, 0x0e410174, 0x0e418174, 0x0e420174, + 0x0e428174, 0x0e430174, 0x0e438180, 0x0e440180, + 0x0e482b30, 0x0e5e8330, 0x0ebc8101, 0x0ebe8101, + 0x0ec70101, 0x0f007e40, 0x0f3f1840, 0x0f4b01b5, + 0x0f4b81b6, 0x0f4c01b6, 0x0f4c81b6, 0x0f4d01b7, + 0x0f4d8180, 0x0f4f0130, 0x0f506040, 0x0f800800, + 0x0f840830, 0x0f880600, 0x0f8c0630, 0x0f900800, + 0x0f940830, 0x0f980800, 0x0f9c0830, 0x0fa00600, + 0x0fa40630, 0x0fa801b0, 0x0fa88100, 0x0fa901d3, + 0x0fa98100, 0x0faa01d3, 0x0faa8100, 0x0fab01d3, + 0x0fab8100, 0x0fac8130, 0x0fad8130, 0x0fae8130, + 0x0faf8130, 0x0fb00800, 0x0fb40830, 0x0fb80200, + 0x0fb90400, 0x0fbb0200, 0x0fbc0201, 0x0fbd0201, + 0x0fbe0201, 0x0fc008b7, 0x0fc40867, 0x0fc808b8, + 0x0fcc0868, 0x0fd008b8, 0x0fd40868, 0x0fd80200, + 0x0fd901b9, 0x0fd981b1, 0x0fda01b9, 0x0fdb01b1, + 0x0fdb81d7, 0x0fdc0230, 0x0fdd0230, 0x0fde0161, + 0x0fdf0173, 0x0fe101b9, 0x0fe181b2, 0x0fe201ba, + 0x0fe301b2, 0x0fe381d8, 0x0fe40430, 0x0fe60162, + 0x0fe80200, 0x0fe901d0, 0x0fe981d0, 0x0feb01b0, + 0x0feb81d0, 0x0fec0230, 0x0fed0230, 0x0ff00201, + 0x0ff101d3, 0x0ff181d3, 0x0ff201ba, 0x0ff28101, + 0x0ff301b0, 0x0ff381d3, 0x0ff40230, 0x0ff50230, + 0x0ff60131, 0x0ff901ba, 0x0ff981b2, 0x0ffa01bb, + 0x0ffb01b2, 0x0ffb81d9, 0x0ffc0230, 0x0ffd0230, + 0x0ffe0162, 0x109301a0, 0x109501a0, 0x109581a0, + 0x10990131, 0x10a70101, 0x10b01031, 0x10b81001, + 0x10c18240, 0x125b1a31, 0x12681a01, 0x16003031, + 0x16183001, 0x16300240, 0x16310130, 0x16318130, + 0x16320130, 0x16328100, 0x16330100, 0x16338640, + 0x16368130, 0x16370130, 0x16378130, 0x16380130, + 0x16390240, 0x163a8240, 0x163f0230, 0x16406440, + 0x16758440, 0x16790240, 0x16802600, 0x16938100, + 0x16968100, 0x53202e40, 0x53401c40, 0x53910e40, + 0x53993e40, 0x53bc8440, 0x53be8130, 0x53bf0a40, + 0x53c58240, 0x53c68130, 0x53c80440, 0x53ca0101, + 0x53cb1440, 0x53d50130, 0x53d58130, 0x53d60130, + 0x53d68130, 0x53d70130, 0x53d80130, 0x53d88130, + 0x53d90130, 0x53d98131, 0x53da1040, 0x53e20131, + 0x53e28130, 0x53e30130, 0x53e38440, 0x53e80240, + 0x53eb0440, 0x53fa8240, 0x55a98101, 0x55b85020, + 0x7d8001b2, 0x7d8081b2, 0x7d8101b2, 0x7d8181da, + 0x7d8201da, 0x7d8281b3, 0x7d8301b3, 0x7d8981bb, + 0x7d8a01bb, 0x7d8a81bb, 0x7d8b01bc, 0x7d8b81bb, + 0x7f909a31, 0x7fa09a01, 0x82002831, 0x82142801, + 0x82582431, 0x826c2401, 0x82b80b31, 0x82be0f31, + 0x82c60731, 0x82ca0231, 0x82cb8b01, 0x82d18f01, + 0x82d98701, 0x82dd8201, 0x86403331, 0x86603301, + 0x8c502031, 0x8c602001, 0xb7202031, 0xb7302001, + 0xf4802231, 0xf4912201, +}; + +static const uint8_t case_conv_table2[370] = { + 0x01, 0x00, 0x9c, 0x06, 0x07, 0x4d, 0x03, 0x04, + 0x10, 0x00, 0x8f, 0x0b, 0x00, 0x00, 0x11, 0x00, + 0x08, 0x00, 0x53, 0x4a, 0x51, 0x00, 0x52, 0x00, + 0x53, 0x00, 0x3a, 0x54, 0x55, 0x00, 0x57, 0x59, + 0x3f, 0x5d, 0x5c, 0x00, 0x46, 0x61, 0x63, 0x42, + 0x64, 0x00, 0x66, 0x00, 0x68, 0x00, 0x6a, 0x00, + 0x6c, 0x00, 0x6e, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x00, 0x93, 0x00, 0x00, 0x20, + 0x35, 0x00, 0x27, 0x00, 0x21, 0x00, 0x24, 0x22, + 0x2a, 0x00, 0x13, 0x6b, 0x6d, 0x00, 0x26, 0x24, + 0x27, 0x14, 0x16, 0x18, 0x1b, 0x1c, 0x3e, 0x1e, + 0x3f, 0x1f, 0x39, 0x3d, 0x22, 0x21, 0x41, 0x1e, + 0x40, 0x25, 0x25, 0x26, 0x28, 0x20, 0x2a, 0x48, + 0x2c, 0x43, 0x2e, 0x4b, 0x30, 0x4c, 0x32, 0x44, + 0x42, 0x99, 0x00, 0x00, 0x95, 0x8f, 0x7d, 0x7e, + 0x83, 0x84, 0x12, 0x80, 0x82, 0x76, 0x77, 0x12, + 0x7b, 0xa3, 0x7c, 0x78, 0x79, 0x8a, 0x92, 0x98, + 0xa6, 0xa0, 0x85, 0x00, 0x9a, 0xa1, 0x93, 0x75, + 0x33, 0x95, 0x00, 0x8e, 0x00, 0x74, 0x99, 0x98, + 0x97, 0x96, 0x00, 0x00, 0x9e, 0x00, 0x9c, 0x00, + 0xa1, 0xa0, 0x15, 0x2e, 0x2f, 0x30, 0xb4, 0xb5, + 0x4f, 0xaa, 0xa9, 0x12, 0x14, 0x1e, 0x21, 0x22, + 0x22, 0x2a, 0x34, 0x35, 0xa6, 0xa7, 0x36, 0x1f, + 0x49, 0x00, 0x00, 0x97, 0x01, 0x5a, 0xda, 0x1d, + 0x36, 0x05, 0x00, 0xc4, 0xc3, 0xc6, 0xc5, 0xc8, + 0xc7, 0xca, 0xc9, 0xcc, 0xcb, 0xc4, 0xd5, 0x45, + 0xd6, 0x42, 0xd7, 0x46, 0xd8, 0xce, 0xd0, 0xd2, + 0xd4, 0xda, 0xd9, 0xee, 0xf6, 0xfe, 0x0e, 0x07, + 0x0f, 0x80, 0x9f, 0x00, 0x21, 0x80, 0xa3, 0xed, + 0x00, 0xc0, 0x40, 0xc6, 0x60, 0xe7, 0xdb, 0xe6, + 0x99, 0xc0, 0x00, 0x00, 0x06, 0x60, 0xdc, 0x29, + 0xfd, 0x15, 0x12, 0x06, 0x16, 0xf8, 0xdd, 0x06, + 0x15, 0x12, 0x84, 0x08, 0xc6, 0x16, 0xff, 0xdf, + 0x03, 0xc0, 0x40, 0x00, 0x46, 0x60, 0xde, 0xe0, + 0x6d, 0x37, 0x38, 0x39, 0x15, 0x14, 0x17, 0x16, + 0x00, 0x1a, 0x19, 0x1c, 0x1b, 0x00, 0x5f, 0xb7, + 0x65, 0x44, 0x47, 0x00, 0x4f, 0x62, 0x4e, 0x50, + 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xa3, 0xa4, + 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00, + 0x00, 0x5a, 0x00, 0x47, 0x00, 0x5b, 0x56, 0x58, + 0x60, 0x5e, 0x70, 0x69, 0x6f, 0x4e, 0x00, 0x3b, + 0x67, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x45, 0xa8, + 0x8a, 0x8b, 0x8c, 0xab, 0xac, 0x58, 0x58, 0xaf, + 0x94, 0xb0, 0x6f, 0xb2, 0x5d, 0x5c, 0x5f, 0x5e, + 0x61, 0x60, 0x66, 0x67, 0x68, 0x69, 0x62, 0x63, + 0x64, 0x65, 0x6b, 0x6a, 0x6d, 0x6c, 0x6f, 0x6e, + 0x71, 0x70, +}; + +static const uint16_t case_conv_ext[58] = { + 0x0399, 0x0308, 0x0301, 0x03a5, 0x0313, 0x0300, 0x0342, 0x0391, + 0x0397, 0x03a9, 0x0046, 0x0049, 0x004c, 0x0053, 0x0069, 0x0307, + 0x02bc, 0x004e, 0x004a, 0x030c, 0x0535, 0x0552, 0x0048, 0x0331, + 0x0054, 0x0057, 0x030a, 0x0059, 0x0041, 0x02be, 0x1f08, 0x1f80, + 0x1f28, 0x1f90, 0x1f68, 0x1fa0, 0x1fba, 0x0386, 0x1fb3, 0x1fca, + 0x0389, 0x1fc3, 0x03a1, 0x1ffa, 0x038f, 0x1ff3, 0x0544, 0x0546, + 0x053b, 0x054e, 0x053d, 0x03b8, 0x0462, 0xa64a, 0x1e60, 0x03c9, + 0x006b, 0x00e5, +}; + +static const uint8_t unicode_prop_Cased1_table[188] = { + 0x40, 0xa9, 0x80, 0x8e, 0x80, 0xfc, 0x80, 0xd3, + 0x80, 0x8c, 0x80, 0x8d, 0x81, 0x8d, 0x02, 0x80, + 0xe1, 0x80, 0x91, 0x85, 0x9a, 0x01, 0x00, 0x01, + 0x11, 0x00, 0x01, 0x04, 0x08, 0x01, 0x08, 0x30, + 0x08, 0x01, 0x15, 0x20, 0x00, 0x39, 0x99, 0x31, + 0x9d, 0x84, 0x40, 0x94, 0x80, 0xd6, 0x82, 0xa6, + 0x80, 0x41, 0x62, 0x80, 0xa6, 0x80, 0x57, 0x76, + 0xf8, 0x02, 0x80, 0x8f, 0x80, 0xb0, 0x40, 0xdb, + 0x08, 0x80, 0x41, 0xd0, 0x80, 0x8c, 0x80, 0x8f, + 0x8c, 0xe4, 0x03, 0x01, 0x89, 0x00, 0x14, 0x28, + 0x10, 0x11, 0x02, 0x01, 0x18, 0x0b, 0x24, 0x4b, + 0x26, 0x01, 0x01, 0x86, 0xe5, 0x80, 0x60, 0x79, + 0xb6, 0x81, 0x40, 0x91, 0x81, 0xbd, 0x88, 0x94, + 0x05, 0x80, 0x98, 0x80, 0xa2, 0x00, 0x80, 0xa1, + 0x82, 0x43, 0x34, 0xa2, 0x06, 0x80, 0x8c, 0x60, + 0x5c, 0x16, 0x01, 0x10, 0xa9, 0x80, 0x88, 0x60, + 0xcc, 0x44, 0xd4, 0x80, 0xc6, 0x01, 0x08, 0x09, + 0x0b, 0x80, 0x8b, 0x00, 0x06, 0x80, 0xc0, 0x03, + 0x0f, 0x06, 0x80, 0x9b, 0x03, 0x04, 0x00, 0x16, + 0x80, 0x41, 0x53, 0x81, 0x98, 0x80, 0x98, 0x80, + 0x9e, 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80, + 0x9e, 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x07, + 0x47, 0x33, 0x89, 0x80, 0x93, 0x52, 0x10, 0x99, + 0x85, 0x99, 0x85, 0x99, +}; + +static const uint8_t unicode_prop_Cased1_index[18] = { + 0xb9, 0x02, 0xe0, 0xa0, 0x1e, 0x40, 0x9e, 0xa6, + 0x40, 0x55, 0xd4, 0x61, 0xfb, 0xd6, 0x21, 0x8a, + 0xf1, 0x01, +}; + +static const uint8_t unicode_prop_Case_Ignorable_table[720] = { + 0xa6, 0x05, 0x80, 0x8a, 0x80, 0xa2, 0x00, 0x80, + 0xc6, 0x03, 0x00, 0x03, 0x01, 0x81, 0x41, 0xf6, + 0x40, 0xbf, 0x19, 0x18, 0x88, 0x08, 0x80, 0x40, + 0xfa, 0x86, 0x40, 0xce, 0x04, 0x80, 0xb0, 0xac, + 0x00, 0x01, 0x01, 0x00, 0xab, 0x80, 0x8a, 0x85, + 0x89, 0x8a, 0x00, 0xa2, 0x80, 0x89, 0x94, 0x8f, + 0x80, 0xe4, 0x38, 0x89, 0x03, 0xa0, 0x00, 0x80, + 0x9d, 0x9a, 0xda, 0x8a, 0xb9, 0x8a, 0x18, 0x08, + 0x97, 0x97, 0xaa, 0x82, 0xab, 0x06, 0x0d, 0x87, + 0xa8, 0xb9, 0xb6, 0x00, 0x03, 0x3b, 0x02, 0x86, + 0x89, 0x81, 0x8c, 0x80, 0x8e, 0x80, 0xb9, 0x03, + 0x1f, 0x80, 0x93, 0x81, 0x99, 0x01, 0x81, 0xb8, + 0x03, 0x0b, 0x09, 0x12, 0x80, 0x9d, 0x0a, 0x80, + 0x8a, 0x81, 0xb8, 0x03, 0x20, 0x0b, 0x80, 0x93, + 0x81, 0x95, 0x28, 0x80, 0xb9, 0x01, 0x00, 0x1f, + 0x06, 0x81, 0x8a, 0x81, 0x9d, 0x80, 0xbc, 0x80, + 0x8b, 0x80, 0xb1, 0x02, 0x80, 0xb6, 0x00, 0x14, + 0x10, 0x1e, 0x81, 0x8a, 0x81, 0x9c, 0x80, 0xb9, + 0x01, 0x05, 0x04, 0x81, 0x93, 0x81, 0x9b, 0x81, + 0xb8, 0x0b, 0x1f, 0x80, 0x93, 0x81, 0x9c, 0x80, + 0xc7, 0x06, 0x10, 0x80, 0xd9, 0x01, 0x86, 0x8a, + 0x88, 0xe1, 0x01, 0x88, 0x88, 0x00, 0x85, 0xc9, + 0x81, 0x9a, 0x00, 0x00, 0x80, 0xb6, 0x8d, 0x04, + 0x01, 0x84, 0x8a, 0x80, 0xa3, 0x88, 0x80, 0xe5, + 0x18, 0x28, 0x09, 0x81, 0x98, 0x0b, 0x82, 0x8f, + 0x83, 0x8c, 0x01, 0x0d, 0x80, 0x8e, 0x80, 0xdd, + 0x80, 0x42, 0x5f, 0x82, 0x43, 0xb1, 0x82, 0x9c, + 0x81, 0x9d, 0x81, 0x9d, 0x81, 0xbf, 0x08, 0x37, + 0x01, 0x8a, 0x10, 0x20, 0xac, 0x84, 0xb2, 0x80, + 0xc0, 0x81, 0xa1, 0x80, 0xf5, 0x13, 0x81, 0x88, + 0x05, 0x82, 0x40, 0xda, 0x09, 0x80, 0xb9, 0x00, + 0x30, 0x00, 0x01, 0x3d, 0x89, 0x08, 0xa6, 0x07, + 0x9e, 0xb0, 0x83, 0xaf, 0x00, 0x20, 0x04, 0x80, + 0xa7, 0x88, 0x8b, 0x81, 0x9f, 0x19, 0x08, 0x82, + 0xb7, 0x00, 0x0a, 0x00, 0x82, 0xb9, 0x39, 0x81, + 0xbf, 0x85, 0xd1, 0x10, 0x8c, 0x06, 0x18, 0x28, + 0x11, 0xb1, 0xbe, 0x8c, 0x80, 0xa1, 0xe4, 0x41, + 0xbc, 0x00, 0x82, 0x8a, 0x82, 0x8c, 0x82, 0x8c, + 0x82, 0x8c, 0x81, 0x8b, 0x27, 0x81, 0x89, 0x01, + 0x01, 0x84, 0xb0, 0x20, 0x89, 0x00, 0x8c, 0x80, + 0x8f, 0x8c, 0xb2, 0xa0, 0x4b, 0x8a, 0x81, 0xf0, + 0x82, 0xfc, 0x80, 0x8e, 0x80, 0xdf, 0x9f, 0xae, + 0x80, 0x41, 0xd4, 0x80, 0xa3, 0x1a, 0x24, 0x80, + 0xdc, 0x85, 0xdc, 0x82, 0x60, 0x6f, 0x15, 0x80, + 0x44, 0xe1, 0x85, 0x41, 0x0d, 0x80, 0xe1, 0x18, + 0x89, 0x00, 0x9b, 0x83, 0xcf, 0x81, 0x8d, 0xa1, + 0xcd, 0x80, 0x96, 0x82, 0xe6, 0x12, 0x0f, 0x02, + 0x03, 0x80, 0x98, 0x0c, 0x80, 0x40, 0x96, 0x81, + 0x99, 0x91, 0x8c, 0x80, 0xa5, 0x87, 0x98, 0x8a, + 0xad, 0x82, 0xaf, 0x01, 0x19, 0x81, 0x90, 0x80, + 0x94, 0x81, 0xc1, 0x29, 0x09, 0x81, 0x8b, 0x07, + 0x80, 0xa2, 0x80, 0x8a, 0x80, 0xb2, 0x00, 0x11, + 0x0c, 0x08, 0x80, 0x9a, 0x80, 0x8d, 0x0c, 0x08, + 0x80, 0xe3, 0x84, 0x88, 0x82, 0xf8, 0x01, 0x03, + 0x80, 0x60, 0x4f, 0x2f, 0x80, 0x40, 0x92, 0x90, + 0x42, 0x3c, 0x8f, 0x10, 0x8b, 0x8f, 0xa1, 0x01, + 0x80, 0x40, 0xa8, 0x06, 0x05, 0x80, 0x8a, 0x80, + 0xa2, 0x00, 0x80, 0xae, 0x80, 0xac, 0x81, 0xc2, + 0x80, 0x94, 0x82, 0x42, 0x00, 0x80, 0x40, 0xe1, + 0x80, 0x40, 0x94, 0x84, 0x44, 0x04, 0x28, 0xa9, + 0x80, 0x88, 0x42, 0x45, 0x10, 0x0c, 0x83, 0xa7, + 0x13, 0x80, 0x40, 0xa4, 0x81, 0x42, 0x3c, 0x83, + 0x41, 0x82, 0x81, 0x40, 0x98, 0x8a, 0xb0, 0x83, + 0xfa, 0x80, 0xb5, 0x8e, 0xa8, 0x01, 0x81, 0x89, + 0x82, 0xb0, 0x19, 0x09, 0x03, 0x80, 0x89, 0x80, + 0xb1, 0x82, 0xa3, 0x20, 0x87, 0xbd, 0x80, 0x8b, + 0x81, 0xb3, 0x88, 0x89, 0x19, 0x80, 0xde, 0x11, + 0x00, 0x0d, 0x80, 0x40, 0x9f, 0x02, 0x87, 0x94, + 0x81, 0xb8, 0x0a, 0x80, 0xa4, 0x32, 0x84, 0x40, + 0xc2, 0x39, 0x10, 0x80, 0x96, 0x80, 0xd3, 0x28, + 0x03, 0x08, 0x81, 0x40, 0xed, 0x1d, 0x08, 0x81, + 0x9a, 0x81, 0xd4, 0x39, 0x00, 0x81, 0xe9, 0x00, + 0x01, 0x28, 0x80, 0xe4, 0x11, 0x18, 0x84, 0x41, + 0x02, 0x88, 0x01, 0x40, 0xff, 0x08, 0x03, 0x80, + 0x40, 0x8f, 0x19, 0x0b, 0x80, 0x9f, 0x89, 0xa7, + 0x29, 0x1f, 0x80, 0x88, 0x29, 0x82, 0xad, 0x8c, + 0x01, 0x41, 0x95, 0x30, 0x28, 0x80, 0xd1, 0x95, + 0x0e, 0x01, 0x01, 0xf9, 0x2a, 0x00, 0x08, 0x30, + 0x80, 0xc7, 0x0a, 0x00, 0x80, 0x41, 0x5a, 0x81, + 0x55, 0x3a, 0x88, 0x60, 0x36, 0xb6, 0x84, 0xba, + 0x86, 0x88, 0x83, 0x44, 0x0a, 0x80, 0xbe, 0x90, + 0xbf, 0x08, 0x81, 0x60, 0x40, 0x0a, 0x18, 0x30, + 0x81, 0x4c, 0x9d, 0x08, 0x83, 0x52, 0x5b, 0xad, + 0x81, 0x96, 0x42, 0x1f, 0x82, 0x88, 0x8f, 0x0e, + 0x9d, 0x83, 0x40, 0x93, 0x82, 0x47, 0xba, 0xb6, + 0x83, 0xb1, 0x38, 0x8d, 0x80, 0x95, 0x20, 0x8e, + 0x45, 0x4f, 0x30, 0x90, 0x0e, 0x01, 0x04, 0x41, + 0x04, 0x8d, 0x41, 0x6f, 0x80, 0xbc, 0x83, 0x45, + 0xdf, 0x86, 0xec, 0x87, 0x4a, 0xae, 0x84, 0x6c, + 0x0c, 0x00, 0x80, 0x9d, 0xdf, 0xff, 0x40, 0xef, +}; + +static const uint8_t unicode_prop_Case_Ignorable_index[69] = { + 0xbe, 0x05, 0x00, 0xfe, 0x07, 0x00, 0x52, 0x0a, + 0xa0, 0xc1, 0x0b, 0x00, 0x82, 0x0d, 0x00, 0x3f, + 0x10, 0x80, 0xd4, 0x17, 0x40, 0xcf, 0x1a, 0x20, + 0xf5, 0x1c, 0x00, 0x80, 0x20, 0x00, 0x16, 0xa0, + 0x00, 0xc6, 0xa8, 0x00, 0xc2, 0xaa, 0x60, 0x56, + 0xfe, 0x20, 0xb1, 0x07, 0x01, 0x82, 0x10, 0x21, + 0x02, 0x13, 0x21, 0xb8, 0x16, 0x61, 0x97, 0x1a, + 0x01, 0x37, 0x6b, 0x21, 0x8c, 0xd1, 0x01, 0xd7, + 0xe8, 0x41, 0xf0, 0x01, 0x0e, +}; + +static const uint8_t unicode_prop_ID_Start_table[1079] = { + 0xc0, 0x99, 0x85, 0x99, 0xae, 0x80, 0x89, 0x03, + 0x04, 0x96, 0x80, 0x9e, 0x80, 0x41, 0xc9, 0x83, + 0x8b, 0x8d, 0x26, 0x00, 0x80, 0x40, 0x80, 0x20, + 0x09, 0x18, 0x05, 0x00, 0x10, 0x00, 0x93, 0x80, + 0xd2, 0x80, 0x40, 0x8a, 0x87, 0x40, 0xa5, 0x80, + 0xa5, 0x08, 0x85, 0xa8, 0xc6, 0x9a, 0x1b, 0xac, + 0xaa, 0xa2, 0x08, 0xe2, 0x00, 0x8e, 0x0e, 0x81, + 0x89, 0x11, 0x80, 0x8f, 0x00, 0x9d, 0x9c, 0xd8, + 0x8a, 0x80, 0x97, 0xa0, 0x88, 0x0b, 0x04, 0x95, + 0x18, 0x88, 0x02, 0x80, 0x96, 0x98, 0x86, 0x8a, + 0x84, 0x97, 0x05, 0x90, 0xa9, 0xb9, 0xb5, 0x10, + 0x91, 0x06, 0x89, 0x8e, 0x8f, 0x1f, 0x09, 0x81, + 0x95, 0x06, 0x00, 0x13, 0x10, 0x8f, 0x80, 0x8c, + 0x08, 0x82, 0x8d, 0x81, 0x89, 0x07, 0x2b, 0x09, + 0x95, 0x06, 0x01, 0x01, 0x01, 0x9e, 0x18, 0x80, + 0x92, 0x82, 0x8f, 0x88, 0x02, 0x80, 0x95, 0x06, + 0x01, 0x04, 0x10, 0x91, 0x80, 0x8e, 0x81, 0x96, + 0x80, 0x8a, 0x39, 0x09, 0x95, 0x06, 0x01, 0x04, + 0x10, 0x9d, 0x08, 0x82, 0x8e, 0x80, 0x90, 0x00, + 0x2a, 0x10, 0x1a, 0x08, 0x00, 0x0a, 0x0a, 0x12, + 0x8b, 0x95, 0x80, 0xb3, 0x38, 0x10, 0x96, 0x80, + 0x8f, 0x10, 0x99, 0x11, 0x01, 0x81, 0x9d, 0x03, + 0x38, 0x10, 0x96, 0x80, 0x89, 0x04, 0x10, 0x9e, + 0x08, 0x81, 0x8e, 0x81, 0x90, 0x88, 0x02, 0x80, + 0xa8, 0x08, 0x8f, 0x04, 0x17, 0x82, 0x97, 0x2c, + 0x91, 0x82, 0x97, 0x80, 0x88, 0x00, 0x0e, 0xb9, + 0xaf, 0x01, 0x8b, 0x86, 0xb9, 0x08, 0x00, 0x20, + 0x97, 0x00, 0x80, 0x89, 0x01, 0x88, 0x01, 0x20, + 0x80, 0x94, 0x83, 0x9f, 0x80, 0xbe, 0x38, 0xa3, + 0x9a, 0x84, 0xf2, 0xaa, 0x93, 0x80, 0x8f, 0x2b, + 0x1a, 0x02, 0x0e, 0x13, 0x8c, 0x8b, 0x80, 0x90, + 0xa5, 0x00, 0x20, 0x81, 0xaa, 0x80, 0x41, 0x4c, + 0x03, 0x0e, 0x00, 0x03, 0x81, 0xa8, 0x03, 0x81, + 0xa0, 0x03, 0x0e, 0x00, 0x03, 0x81, 0x8e, 0x80, + 0xb8, 0x03, 0x81, 0xc2, 0xa4, 0x8f, 0x8f, 0xd5, + 0x0d, 0x82, 0x42, 0x6b, 0x81, 0x90, 0x80, 0x99, + 0x84, 0xca, 0x82, 0x8a, 0x86, 0x91, 0x8c, 0x92, + 0x8d, 0x91, 0x8d, 0x8c, 0x02, 0x8e, 0xb3, 0xa2, + 0x03, 0x80, 0xc2, 0xd8, 0x86, 0xa8, 0x00, 0x84, + 0xc5, 0x89, 0x9e, 0xb0, 0x9d, 0x0c, 0x8a, 0xab, + 0x83, 0x99, 0xb5, 0x96, 0x88, 0xb4, 0xd1, 0x80, + 0xdc, 0xae, 0x90, 0x87, 0xb5, 0x9d, 0x8c, 0x81, + 0x89, 0xab, 0x99, 0xa3, 0xa8, 0x82, 0x89, 0xa3, + 0x81, 0x88, 0x86, 0xaa, 0x0a, 0xa8, 0x18, 0x28, + 0x0a, 0x04, 0x40, 0xbf, 0xbf, 0x41, 0x15, 0x0d, + 0x81, 0xa5, 0x0d, 0x0f, 0x00, 0x00, 0x00, 0x80, + 0x9e, 0x81, 0xb4, 0x06, 0x00, 0x12, 0x06, 0x13, + 0x0d, 0x83, 0x8c, 0x22, 0x06, 0xf3, 0x80, 0x8c, + 0x80, 0x8f, 0x8c, 0xe4, 0x03, 0x01, 0x89, 0x00, + 0x0d, 0x28, 0x00, 0x00, 0x80, 0x8f, 0x0b, 0x24, + 0x18, 0x90, 0xa8, 0x4a, 0x76, 0x40, 0xe4, 0x2b, + 0x11, 0x8b, 0xa5, 0x00, 0x20, 0x81, 0xb7, 0x30, + 0x8f, 0x96, 0x88, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x86, 0x42, 0x25, 0x82, 0x98, 0x88, + 0x34, 0x0c, 0x83, 0xd5, 0x1c, 0x80, 0xd9, 0x03, + 0x84, 0xaa, 0x80, 0xdd, 0x90, 0x9f, 0xaf, 0x8f, + 0x41, 0xff, 0x59, 0xbf, 0xbf, 0x60, 0x56, 0x8c, + 0xc2, 0xad, 0x81, 0x41, 0x0c, 0x82, 0x8f, 0x89, + 0x81, 0x93, 0xae, 0x8f, 0x9e, 0x81, 0xcf, 0xa6, + 0x88, 0x81, 0xe6, 0x81, 0xbf, 0x21, 0x00, 0x04, + 0x97, 0x8f, 0x02, 0x03, 0x80, 0x96, 0x9c, 0xb3, + 0x8d, 0xb1, 0xbd, 0x2a, 0x00, 0x81, 0x8a, 0x9b, + 0x89, 0x96, 0x98, 0x9c, 0x86, 0xae, 0x9b, 0x80, + 0x8f, 0x20, 0x89, 0x89, 0x20, 0xa8, 0x96, 0x10, + 0x87, 0x93, 0x96, 0x10, 0x82, 0xb1, 0x00, 0x11, + 0x0c, 0x08, 0x00, 0x97, 0x11, 0x8a, 0x32, 0x8b, + 0x29, 0x29, 0x85, 0x88, 0x30, 0x30, 0xaa, 0x80, + 0x8d, 0x85, 0xf2, 0x9c, 0x60, 0x2b, 0xa3, 0x8b, + 0x96, 0x83, 0xb0, 0x60, 0x21, 0x03, 0x41, 0x6d, + 0x81, 0xe9, 0xa5, 0x86, 0x8b, 0x24, 0x00, 0x89, + 0x80, 0x8c, 0x04, 0x00, 0x01, 0x01, 0x80, 0xeb, + 0xa0, 0x41, 0x6a, 0x91, 0xbf, 0x81, 0xb5, 0xa7, + 0x8b, 0xf3, 0x20, 0x40, 0x86, 0xa3, 0x99, 0x85, + 0x99, 0x8a, 0xd8, 0x15, 0x0d, 0x0d, 0x0a, 0xa2, + 0x8b, 0x80, 0x99, 0x80, 0x92, 0x01, 0x80, 0x8e, + 0x81, 0x8d, 0xa1, 0xfa, 0xc4, 0xb4, 0x41, 0x0a, + 0x9c, 0x82, 0xb0, 0xae, 0x9f, 0x8c, 0x9d, 0x84, + 0xa5, 0x89, 0x9d, 0x81, 0xa3, 0x1f, 0x04, 0xa9, + 0x40, 0x9d, 0x91, 0xa3, 0x83, 0xa3, 0x83, 0xa7, + 0x87, 0xb3, 0x8b, 0x8a, 0x80, 0x8e, 0x06, 0x01, + 0x80, 0x8a, 0x80, 0x8e, 0x06, 0x01, 0xc2, 0x41, + 0x36, 0x88, 0x95, 0x89, 0x87, 0x97, 0x28, 0xa9, + 0x80, 0x88, 0xc4, 0x29, 0x00, 0xab, 0x01, 0x10, + 0x81, 0x96, 0x89, 0x96, 0x88, 0x9e, 0xc0, 0x92, + 0x01, 0x89, 0x95, 0x89, 0x99, 0xc5, 0xb7, 0x29, + 0xbf, 0x80, 0x8e, 0x18, 0x10, 0x9c, 0xa9, 0x9c, + 0x82, 0x9c, 0xa2, 0x38, 0x9b, 0x9a, 0xb5, 0x89, + 0x95, 0x89, 0x92, 0x8c, 0x91, 0xed, 0xc8, 0xb6, + 0xb2, 0x8c, 0xb2, 0x8c, 0xa3, 0x41, 0x5b, 0xa9, + 0x29, 0xcd, 0x9c, 0x89, 0x07, 0x95, 0xa9, 0x91, + 0xad, 0x94, 0x9a, 0x96, 0x8b, 0xb4, 0xb8, 0x09, + 0x80, 0x8c, 0xac, 0x9f, 0x98, 0x99, 0xa3, 0x9c, + 0x01, 0x07, 0xa2, 0x10, 0x8b, 0xaf, 0x8d, 0x83, + 0x94, 0x00, 0x80, 0xa2, 0x91, 0x80, 0x98, 0xd3, + 0x30, 0x00, 0x18, 0x8e, 0x80, 0x89, 0x86, 0xae, + 0xa5, 0x39, 0x09, 0x95, 0x06, 0x01, 0x04, 0x10, + 0x91, 0x80, 0x8b, 0x84, 0x40, 0x9d, 0xb4, 0x91, + 0x83, 0x93, 0x82, 0x9d, 0xaf, 0x93, 0x08, 0x80, + 0x40, 0xb7, 0xae, 0xa8, 0x83, 0xa3, 0xaf, 0x93, + 0x80, 0xba, 0xaa, 0x8c, 0x80, 0xc6, 0x9a, 0xa4, + 0x86, 0x40, 0xb8, 0xab, 0xf3, 0xbf, 0x9e, 0x39, + 0x01, 0x38, 0x08, 0x97, 0x8e, 0x00, 0x80, 0xdd, + 0x39, 0xa6, 0x8f, 0x00, 0x80, 0x9b, 0x80, 0x89, + 0xa7, 0x30, 0x94, 0x80, 0x8a, 0xad, 0x92, 0x80, + 0x91, 0xc8, 0x41, 0x06, 0x88, 0x80, 0xa4, 0x90, + 0x80, 0xb0, 0x9d, 0xef, 0x30, 0x08, 0xa5, 0x94, + 0x80, 0x98, 0x28, 0x08, 0x9f, 0x8d, 0x80, 0x41, + 0x46, 0x92, 0x40, 0xbc, 0x80, 0xce, 0x43, 0x99, + 0xe5, 0xee, 0x90, 0x40, 0xc3, 0x4a, 0x4b, 0xe0, + 0x8e, 0x44, 0x2e, 0x4f, 0xd0, 0x42, 0x46, 0x60, + 0x21, 0xb8, 0x42, 0x38, 0x86, 0x9e, 0x90, 0xce, + 0x90, 0x9d, 0x91, 0xaf, 0x8f, 0x83, 0x9e, 0x94, + 0x84, 0x92, 0x42, 0xaf, 0xbf, 0xff, 0xca, 0x20, + 0xc1, 0x8c, 0xbf, 0x08, 0x80, 0x9b, 0x57, 0xf7, + 0x87, 0x44, 0xd5, 0xa9, 0x88, 0x60, 0x22, 0xe6, + 0x18, 0x30, 0x08, 0x41, 0x22, 0xac, 0x82, 0x90, + 0x1f, 0x41, 0x8b, 0x49, 0x03, 0xea, 0x84, 0x8c, + 0x82, 0x88, 0x86, 0x89, 0x57, 0x65, 0xd4, 0x80, + 0xc6, 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b, 0x00, + 0x06, 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80, 0x9b, + 0x03, 0x04, 0x00, 0x16, 0x80, 0x41, 0x53, 0x81, + 0x98, 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80, + 0x9e, 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80, + 0x9e, 0x80, 0x98, 0x07, 0x47, 0x33, 0x9e, 0x41, + 0xe0, 0xac, 0x89, 0x86, 0x8f, 0x80, 0x41, 0x40, + 0x9d, 0x91, 0xab, 0x44, 0xf3, 0x30, 0x18, 0x08, + 0x8e, 0x80, 0x40, 0xc4, 0xba, 0xc3, 0x30, 0x44, + 0xb3, 0x18, 0x9a, 0x01, 0x00, 0x08, 0x80, 0x89, + 0x03, 0x00, 0x00, 0x28, 0x18, 0x00, 0x00, 0x02, + 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x0b, 0x06, 0x03, 0x03, 0x00, 0x80, 0x89, + 0x80, 0x90, 0x22, 0x04, 0x80, 0x90, 0x51, 0x43, + 0x60, 0xa6, 0xdf, 0x9f, 0x50, 0x38, 0x86, 0x40, + 0xdd, 0x81, 0x56, 0x81, 0x8d, 0x5d, 0x30, 0x4c, + 0x1e, 0x42, 0x1d, 0x45, 0xe1, 0x53, 0x4a, +}; + +static const uint8_t unicode_prop_ID_Start_index[102] = { + 0xf6, 0x03, 0x20, 0xa6, 0x07, 0x00, 0xa9, 0x09, + 0x20, 0xb1, 0x0a, 0x00, 0xba, 0x0b, 0x20, 0x3b, + 0x0d, 0x20, 0xc7, 0x0e, 0x20, 0x49, 0x12, 0x00, + 0x9b, 0x16, 0x00, 0xac, 0x19, 0x00, 0xc0, 0x1d, + 0x80, 0x80, 0x20, 0x20, 0x70, 0x2d, 0x00, 0x00, + 0x32, 0x00, 0xda, 0xa7, 0x00, 0x4c, 0xaa, 0x20, + 0xc7, 0xd7, 0x20, 0xfc, 0xfd, 0x20, 0x9d, 0x02, + 0x21, 0x96, 0x05, 0x01, 0xf3, 0x08, 0x01, 0xb3, + 0x0c, 0x21, 0x73, 0x11, 0x61, 0x3e, 0x13, 0x01, + 0x47, 0x17, 0x21, 0x9e, 0x1a, 0x01, 0x9a, 0x23, + 0x01, 0x78, 0x6b, 0x01, 0xfc, 0xb2, 0x61, 0x3a, + 0xd5, 0x01, 0x2d, 0xe1, 0x41, 0x33, 0xee, 0x01, + 0xe0, 0xa6, 0x62, 0x4b, 0x13, 0x03, +}; + +static const uint8_t unicode_prop_ID_Continue1_table[640] = { + 0xaf, 0x89, 0xa4, 0x80, 0xd6, 0x80, 0x42, 0x47, + 0xef, 0x96, 0x80, 0x40, 0xfa, 0x84, 0x41, 0x08, + 0xac, 0x00, 0x01, 0x01, 0x00, 0xc7, 0x8a, 0xaf, + 0x9e, 0x28, 0xe4, 0x31, 0x29, 0x08, 0x19, 0x89, + 0x96, 0x80, 0x9d, 0x9a, 0xda, 0x8a, 0x8e, 0x89, + 0xa0, 0x88, 0x88, 0x80, 0x97, 0x18, 0x88, 0x02, + 0x04, 0xaa, 0x82, 0xbb, 0x87, 0xa9, 0x97, 0x80, + 0xa0, 0xb5, 0x10, 0x91, 0x06, 0x89, 0x09, 0x89, + 0x90, 0x82, 0xb7, 0x00, 0x31, 0x09, 0x82, 0x88, + 0x80, 0x89, 0x09, 0x89, 0x8d, 0x01, 0x82, 0xb7, + 0x00, 0x23, 0x09, 0x12, 0x80, 0x93, 0x8b, 0x10, + 0x8a, 0x82, 0xb7, 0x00, 0x38, 0x10, 0x82, 0x93, + 0x09, 0x89, 0x89, 0x28, 0x82, 0xb7, 0x00, 0x31, + 0x09, 0x16, 0x82, 0x89, 0x09, 0x89, 0x91, 0x80, + 0xba, 0x22, 0x10, 0x83, 0x88, 0x80, 0x8d, 0x89, + 0x8f, 0x84, 0xb6, 0x00, 0x30, 0x10, 0x1e, 0x81, + 0x8a, 0x09, 0x89, 0x90, 0x82, 0xb7, 0x00, 0x30, + 0x10, 0x1e, 0x81, 0x8a, 0x09, 0x89, 0x8f, 0x83, + 0xb6, 0x08, 0x30, 0x10, 0x83, 0x88, 0x80, 0x89, + 0x09, 0x89, 0x90, 0x82, 0xc5, 0x03, 0x28, 0x00, + 0x3d, 0x89, 0x09, 0xbc, 0x01, 0x86, 0x8b, 0x38, + 0x89, 0xd6, 0x01, 0x88, 0x8a, 0x29, 0x89, 0xbd, + 0x0d, 0x89, 0x8a, 0x00, 0x00, 0x03, 0x81, 0xb0, + 0x93, 0x01, 0x84, 0x8a, 0x80, 0xa3, 0x88, 0x80, + 0xe3, 0x93, 0x80, 0x89, 0x8b, 0x1b, 0x10, 0x11, + 0x32, 0x83, 0x8c, 0x8b, 0x80, 0x8e, 0x42, 0xbe, + 0x82, 0x88, 0x88, 0x43, 0x9f, 0x83, 0x9b, 0x82, + 0x9c, 0x81, 0x9d, 0x81, 0xbf, 0x9f, 0x88, 0x01, + 0x89, 0xa0, 0x10, 0x8a, 0x40, 0x8e, 0x80, 0xf5, + 0x8b, 0x83, 0x8b, 0x89, 0x89, 0xff, 0x8a, 0xbb, + 0x84, 0xb8, 0x89, 0x80, 0x9c, 0x81, 0x8a, 0x85, + 0x89, 0x95, 0x8d, 0x80, 0x8f, 0xb0, 0x84, 0xae, + 0x90, 0x8a, 0x89, 0x90, 0x88, 0x8b, 0x82, 0x9d, + 0x8c, 0x81, 0x89, 0xab, 0x8d, 0xaf, 0x93, 0x87, + 0x89, 0x85, 0x89, 0xf5, 0x10, 0x94, 0x18, 0x28, + 0x0a, 0x40, 0xc5, 0xbf, 0x42, 0x3e, 0x81, 0x92, + 0x80, 0xfa, 0x8c, 0x18, 0x82, 0x8b, 0x4b, 0xfd, + 0x82, 0x40, 0x8c, 0x80, 0xdf, 0x9f, 0x42, 0x29, + 0x85, 0xe8, 0x81, 0x60, 0x75, 0x84, 0x89, 0xc4, + 0x03, 0x89, 0x9f, 0x81, 0xcf, 0x81, 0x41, 0x0f, + 0x02, 0x03, 0x80, 0x96, 0x23, 0x80, 0xd2, 0x81, + 0xb1, 0x91, 0x89, 0x89, 0x85, 0x91, 0x8c, 0x8a, + 0x9b, 0x87, 0x98, 0x8c, 0xab, 0x83, 0xae, 0x8d, + 0x8e, 0x89, 0x8a, 0x80, 0x89, 0x89, 0xae, 0x8d, + 0x8b, 0x07, 0x09, 0x89, 0xa0, 0x82, 0xb1, 0x00, + 0x11, 0x0c, 0x08, 0x80, 0xa8, 0x24, 0x81, 0x40, + 0xeb, 0x38, 0x09, 0x89, 0x60, 0x4f, 0x23, 0x80, + 0x42, 0xe0, 0x8f, 0x8f, 0x8f, 0x11, 0x97, 0x82, + 0x40, 0xbf, 0x89, 0xa4, 0x80, 0x42, 0xbc, 0x80, + 0x40, 0xe1, 0x80, 0x40, 0x94, 0x84, 0x41, 0x24, + 0x89, 0x45, 0x56, 0x10, 0x0c, 0x83, 0xa7, 0x13, + 0x80, 0x40, 0xa4, 0x81, 0x42, 0x3c, 0x1f, 0x89, + 0x41, 0x70, 0x81, 0x40, 0x98, 0x8a, 0xb0, 0x83, + 0xf9, 0x82, 0xb4, 0x8e, 0x9e, 0x8a, 0x09, 0x89, + 0x83, 0xac, 0x8a, 0x30, 0xac, 0x89, 0x2a, 0xa3, + 0x8d, 0x80, 0x89, 0x21, 0xab, 0x80, 0x8b, 0x82, + 0xaf, 0x8d, 0x3b, 0x80, 0x8b, 0xd1, 0x8b, 0x28, + 0x40, 0x9f, 0x8b, 0x84, 0x89, 0x2b, 0xb6, 0x08, + 0x31, 0x09, 0x82, 0x88, 0x80, 0x89, 0x09, 0x32, + 0x84, 0x40, 0xbf, 0x91, 0x88, 0x89, 0x18, 0xd0, + 0x93, 0x8b, 0x89, 0x40, 0xd4, 0x31, 0x88, 0x9a, + 0x81, 0xd1, 0x90, 0x8e, 0x89, 0xd0, 0x8c, 0x87, + 0x89, 0xd2, 0x8e, 0x83, 0x89, 0x40, 0xf1, 0x8e, + 0x40, 0xa4, 0x89, 0xc5, 0x28, 0x09, 0x18, 0x00, + 0x81, 0x8b, 0x89, 0xf6, 0x31, 0x32, 0x80, 0x9b, + 0x89, 0xa7, 0x30, 0x1f, 0x80, 0x88, 0x8a, 0xad, + 0x8f, 0x41, 0x94, 0x38, 0x87, 0x8f, 0x89, 0xb7, + 0x95, 0x80, 0x8d, 0xf9, 0x2a, 0x00, 0x08, 0x30, + 0x07, 0x89, 0xaf, 0x20, 0x08, 0x27, 0x89, 0x41, + 0x48, 0x83, 0x60, 0x4b, 0x68, 0x89, 0xd5, 0x89, + 0xa5, 0x84, 0xba, 0x86, 0x98, 0x89, 0x43, 0xf4, + 0x00, 0xb6, 0x33, 0xd0, 0x80, 0x8a, 0x81, 0x60, + 0x4c, 0xaa, 0x81, 0x52, 0x60, 0xad, 0x81, 0x96, + 0x42, 0x1d, 0x22, 0x2f, 0x39, 0x86, 0x9d, 0x83, + 0x40, 0x93, 0x82, 0x45, 0x88, 0xb1, 0x41, 0xff, + 0xb6, 0x83, 0xb1, 0x38, 0x8d, 0x80, 0x95, 0x20, + 0x8e, 0x45, 0x4f, 0x30, 0x90, 0x0e, 0x01, 0x04, + 0x41, 0x04, 0x86, 0x88, 0x89, 0x41, 0x63, 0x80, + 0xbc, 0x8d, 0x45, 0xd5, 0x86, 0xec, 0x34, 0x89, + 0x52, 0x95, 0x89, 0x6c, 0x05, 0x05, 0x40, 0xef, +}; + +static const uint8_t unicode_prop_ID_Continue1_index[60] = { + 0xfa, 0x06, 0x00, 0x70, 0x09, 0x00, 0xf0, 0x0a, + 0x40, 0x57, 0x0c, 0x00, 0xf0, 0x0d, 0x40, 0xc7, + 0x0f, 0x00, 0xea, 0x17, 0x20, 0x45, 0x1b, 0x20, + 0x55, 0x20, 0x20, 0x0c, 0xa8, 0x60, 0x37, 0xaa, + 0x00, 0x50, 0xfe, 0x00, 0x3a, 0x0d, 0x01, 0x83, + 0x11, 0x01, 0xc4, 0x14, 0x21, 0x44, 0x19, 0x21, + 0x5a, 0x1d, 0x41, 0x9f, 0xbc, 0x61, 0xb0, 0xda, + 0x21, 0xf0, 0x01, 0x0e, +}; + +#ifdef CONFIG_ALL_UNICODE + +static const uint8_t unicode_cc_table[881] = { + 0xb2, 0xcf, 0xd4, 0x00, 0xe8, 0x03, 0xdc, 0x00, + 0xe8, 0x00, 0xd8, 0x04, 0xdc, 0x01, 0xca, 0x03, + 0xdc, 0x01, 0xca, 0x0a, 0xdc, 0x04, 0x01, 0x03, + 0xdc, 0xc7, 0x00, 0xf0, 0xc0, 0x02, 0xdc, 0xc2, + 0x01, 0xdc, 0x80, 0xc2, 0x03, 0xdc, 0xc0, 0x00, + 0xe8, 0x01, 0xdc, 0xc0, 0x41, 0xe9, 0x00, 0xea, + 0x41, 0xe9, 0x00, 0xea, 0x00, 0xe9, 0xcc, 0xb0, + 0xe2, 0xc4, 0xb0, 0xd8, 0x00, 0xdc, 0xc3, 0x00, + 0xdc, 0xc2, 0x00, 0xde, 0x00, 0xdc, 0xc5, 0x05, + 0xdc, 0xc1, 0x00, 0xdc, 0xc1, 0x00, 0xde, 0x00, + 0xe4, 0xc0, 0x49, 0x0a, 0x43, 0x13, 0x80, 0x00, + 0x17, 0x80, 0x41, 0x18, 0x80, 0xc0, 0x00, 0xdc, + 0x80, 0x00, 0x12, 0xb0, 0x17, 0xc7, 0x42, 0x1e, + 0xaf, 0x47, 0x1b, 0xc1, 0x01, 0xdc, 0xc4, 0x00, + 0xdc, 0xc1, 0x00, 0xdc, 0x8f, 0x00, 0x23, 0xb0, + 0x34, 0xc6, 0x81, 0xc3, 0x00, 0xdc, 0xc0, 0x81, + 0xc1, 0x80, 0x00, 0xdc, 0xc1, 0x00, 0xdc, 0xa2, + 0x00, 0x24, 0x9d, 0xc0, 0x00, 0xdc, 0xc1, 0x00, + 0xdc, 0xc1, 0x02, 0xdc, 0xc0, 0x01, 0xdc, 0xc0, + 0x00, 0xdc, 0xc2, 0x00, 0xdc, 0xc0, 0x00, 0xdc, + 0xc0, 0x00, 0xdc, 0xc0, 0x00, 0xdc, 0xc1, 0xb0, + 0x6f, 0xc6, 0x00, 0xdc, 0xc0, 0x88, 0x00, 0xdc, + 0x97, 0xc3, 0x80, 0xc8, 0x80, 0xc2, 0x80, 0xc4, + 0xaa, 0x02, 0xdc, 0xb0, 0x0b, 0xc0, 0x02, 0xdc, + 0xc3, 0xa9, 0xc4, 0x04, 0xdc, 0xcd, 0x80, 0x00, + 0xdc, 0xc1, 0x00, 0xdc, 0xc1, 0x00, 0xdc, 0xc2, + 0x02, 0xdc, 0x42, 0x1b, 0xc2, 0x00, 0xdc, 0xc1, + 0x01, 0xdc, 0xc4, 0xb0, 0x0b, 0x00, 0x07, 0x8f, + 0x00, 0x09, 0x82, 0xc0, 0x00, 0xdc, 0xc1, 0xb0, + 0x36, 0x00, 0x07, 0x8f, 0x00, 0x09, 0xaf, 0xc0, + 0xb0, 0x0c, 0x00, 0x07, 0x8f, 0x00, 0x09, 0xb0, + 0x3d, 0x00, 0x07, 0x8f, 0x00, 0x09, 0xb0, 0x3d, + 0x00, 0x07, 0x8f, 0x00, 0x09, 0xb0, 0x4e, 0x00, + 0x09, 0xb0, 0x3d, 0x00, 0x07, 0x8f, 0x00, 0x09, + 0x86, 0x00, 0x54, 0x00, 0x5b, 0xb0, 0x34, 0x00, + 0x07, 0x8f, 0x00, 0x09, 0xb0, 0x3c, 0x01, 0x09, + 0x8f, 0x00, 0x09, 0xb0, 0x4b, 0x00, 0x09, 0xb0, + 0x3c, 0x01, 0x67, 0x00, 0x09, 0x8c, 0x03, 0x6b, + 0xb0, 0x3b, 0x01, 0x76, 0x00, 0x09, 0x8c, 0x03, + 0x7a, 0xb0, 0x1b, 0x01, 0xdc, 0x9a, 0x00, 0xdc, + 0x80, 0x00, 0xdc, 0x80, 0x00, 0xd8, 0xb0, 0x06, + 0x41, 0x81, 0x80, 0x00, 0x84, 0x84, 0x03, 0x82, + 0x81, 0x00, 0x82, 0x80, 0xc1, 0x00, 0x09, 0x80, + 0xc1, 0xb0, 0x0d, 0x00, 0xdc, 0xb0, 0x3f, 0x00, + 0x07, 0x80, 0x01, 0x09, 0xb0, 0x21, 0x00, 0xdc, + 0xb2, 0x9e, 0xc2, 0xb3, 0x83, 0x01, 0x09, 0x9d, + 0x00, 0x09, 0xb0, 0x6c, 0x00, 0x09, 0x89, 0xc0, + 0xb0, 0x9a, 0x00, 0xe4, 0xb0, 0x5e, 0x00, 0xde, + 0xc0, 0x00, 0xdc, 0xb0, 0xaa, 0xc0, 0x00, 0xdc, + 0xb0, 0x16, 0x00, 0x09, 0x93, 0xc7, 0x81, 0x00, + 0xdc, 0xaf, 0xc4, 0x05, 0xdc, 0xc1, 0x00, 0xdc, + 0x80, 0x01, 0xdc, 0xc1, 0x01, 0xdc, 0xc4, 0x00, + 0xdc, 0xc3, 0xb0, 0x34, 0x00, 0x07, 0x8e, 0x00, + 0x09, 0xa5, 0xc0, 0x00, 0xdc, 0xc6, 0xb0, 0x05, + 0x01, 0x09, 0xb0, 0x09, 0x00, 0x07, 0x8a, 0x01, + 0x09, 0xb0, 0x12, 0x00, 0x07, 0xb0, 0x67, 0xc2, + 0x41, 0x00, 0x04, 0xdc, 0xc1, 0x03, 0xdc, 0xc0, + 0x41, 0x00, 0x05, 0x01, 0x83, 0x00, 0xdc, 0x85, + 0xc0, 0x82, 0xc1, 0xb0, 0x95, 0xc1, 0x00, 0xdc, + 0xc6, 0x00, 0xdc, 0xc1, 0x00, 0xea, 0x00, 0xd6, + 0x00, 0xdc, 0x00, 0xca, 0xe4, 0x00, 0xe8, 0x01, + 0xe4, 0x00, 0xdc, 0x00, 0xda, 0xc0, 0x00, 0xe9, + 0x00, 0xdc, 0xc0, 0x00, 0xdc, 0xb2, 0x9f, 0xc1, + 0x01, 0x01, 0xc3, 0x02, 0x01, 0xc1, 0x83, 0xc0, + 0x82, 0x01, 0x01, 0xc0, 0x00, 0xdc, 0xc0, 0x01, + 0x01, 0x03, 0xdc, 0xc0, 0xb8, 0x03, 0xcd, 0xc2, + 0xb0, 0x5c, 0x00, 0x09, 0xb0, 0x2f, 0xdf, 0xb1, + 0xf9, 0x00, 0xda, 0x00, 0xe4, 0x00, 0xe8, 0x00, + 0xde, 0x01, 0xe0, 0xb0, 0x38, 0x01, 0x08, 0xb8, + 0x6d, 0xa3, 0xc0, 0x83, 0xc9, 0x9f, 0xc1, 0xb0, + 0x1f, 0xc1, 0xb0, 0xe3, 0x00, 0x09, 0xa4, 0x00, + 0x09, 0xb0, 0x66, 0x00, 0x09, 0x9a, 0xd1, 0xb0, + 0x08, 0x02, 0xdc, 0xa4, 0x00, 0x09, 0xb0, 0x2e, + 0x00, 0x07, 0x8b, 0x00, 0x09, 0xb0, 0xbe, 0xc0, + 0x80, 0xc1, 0x00, 0xdc, 0x81, 0xc1, 0x84, 0xc1, + 0x80, 0xc0, 0xb0, 0x03, 0x00, 0x09, 0xb0, 0xc5, + 0x00, 0x09, 0xb8, 0x46, 0xff, 0x00, 0x1a, 0xb2, + 0xd0, 0xc6, 0x06, 0xdc, 0xc1, 0xb3, 0x9c, 0x00, + 0xdc, 0xb0, 0xb1, 0x00, 0xdc, 0xb0, 0x64, 0xc4, + 0xb6, 0x61, 0x00, 0xdc, 0x80, 0xc0, 0xa7, 0xc0, + 0x00, 0x01, 0x00, 0xdc, 0x83, 0x00, 0x09, 0xb0, + 0x74, 0xc0, 0x00, 0xdc, 0xb2, 0x0c, 0xc3, 0xb1, + 0x52, 0xc1, 0xb0, 0x68, 0x01, 0xdc, 0xc2, 0x00, + 0xdc, 0xc0, 0x03, 0xdc, 0xb0, 0x00, 0xc0, 0x00, + 0xdc, 0xc0, 0x00, 0xdc, 0xb0, 0x8f, 0x00, 0x09, + 0xa8, 0x00, 0x09, 0x8d, 0x00, 0x09, 0xb0, 0x08, + 0x00, 0x09, 0x00, 0x07, 0xb0, 0x14, 0xc2, 0xaf, + 0x01, 0x09, 0xb0, 0x0d, 0x00, 0x07, 0xb0, 0x1b, + 0x00, 0x09, 0x88, 0x00, 0x07, 0xb0, 0x39, 0x00, + 0x09, 0x00, 0x07, 0xb0, 0x81, 0x00, 0x07, 0x00, + 0x09, 0xb0, 0x1f, 0x01, 0x07, 0x8f, 0x00, 0x09, + 0x97, 0xc6, 0x82, 0xc4, 0xb0, 0x9c, 0x00, 0x09, + 0x82, 0x00, 0x07, 0x96, 0xc0, 0xb0, 0x32, 0x00, + 0x09, 0x00, 0x07, 0xb0, 0xca, 0x00, 0x09, 0x00, + 0x07, 0xb0, 0x4d, 0x00, 0x09, 0xb0, 0x45, 0x00, + 0x09, 0x00, 0x07, 0xb0, 0x42, 0x00, 0x09, 0xb0, + 0xdc, 0x00, 0x09, 0x00, 0x07, 0xb0, 0xd1, 0x01, + 0x09, 0x83, 0x00, 0x07, 0xb0, 0x6b, 0x00, 0x09, + 0xb0, 0x22, 0x00, 0x09, 0x91, 0x00, 0x09, 0xb0, + 0x20, 0x00, 0x09, 0xb1, 0x74, 0x00, 0x09, 0xb0, + 0xd1, 0x00, 0x07, 0x80, 0x01, 0x09, 0xb0, 0x20, + 0x00, 0x09, 0xb8, 0x45, 0x27, 0x04, 0x01, 0xb0, + 0x0a, 0xc6, 0xb4, 0x88, 0x01, 0x06, 0xb8, 0x44, + 0x7b, 0x00, 0x01, 0xb8, 0x0c, 0x95, 0x01, 0xd8, + 0x02, 0x01, 0x82, 0x00, 0xe2, 0x04, 0xd8, 0x87, + 0x07, 0xdc, 0x81, 0xc4, 0x01, 0xdc, 0x9d, 0xc3, + 0xb0, 0x63, 0xc2, 0xb8, 0x05, 0x8a, 0xc6, 0x80, + 0xd0, 0x81, 0xc6, 0x80, 0xc1, 0x80, 0xc4, 0xb0, + 0xd4, 0xc6, 0xb1, 0x46, 0xc0, 0xb0, 0x0c, 0xc3, + 0xb5, 0xaf, 0x06, 0xdc, 0xb0, 0x3c, 0xc5, 0x00, + 0x07, +}; + +static const uint8_t unicode_cc_index[84] = { + 0x4d, 0x03, 0x00, 0x97, 0x05, 0x20, 0xc6, 0x05, + 0x00, 0xe7, 0x06, 0x00, 0x45, 0x07, 0x00, 0x9c, + 0x08, 0x00, 0x4d, 0x09, 0x00, 0x3c, 0x0b, 0x00, + 0x3d, 0x0d, 0x00, 0x36, 0x0f, 0x00, 0x38, 0x10, + 0x20, 0x3a, 0x19, 0x00, 0xcb, 0x1a, 0x20, 0xd3, + 0x1c, 0x00, 0xcf, 0x1d, 0x00, 0xe2, 0x20, 0x00, + 0x2e, 0x30, 0x20, 0x2b, 0xa9, 0x20, 0xed, 0xab, + 0x00, 0x39, 0x0a, 0x01, 0x84, 0x0f, 0x21, 0xc0, + 0x11, 0x01, 0x43, 0x14, 0x01, 0x39, 0x18, 0x21, + 0x42, 0x1d, 0x21, 0x67, 0xd1, 0x01, 0x30, 0xe1, + 0x21, 0x4b, 0xe9, 0x01, +}; + +static const uint32_t unicode_decomp_table1[693] = { + 0x00280081, 0x002a0097, 0x002a8081, 0x002bc097, + 0x002c8115, 0x002d0097, 0x002d4081, 0x002e0097, + 0x002e4115, 0x002f0199, 0x00302016, 0x00400842, + 0x00448a42, 0x004a0442, 0x004c0096, 0x004c8117, + 0x004d0242, 0x004e4342, 0x004fc12f, 0x0050c342, + 0x005240bf, 0x00530342, 0x00550942, 0x005a0842, + 0x005e0096, 0x005e4342, 0x005fc081, 0x00680142, + 0x006bc142, 0x00710185, 0x0071c317, 0x00734844, + 0x00778344, 0x00798342, 0x007b02be, 0x007c4197, + 0x007d0142, 0x007e0444, 0x00800e42, 0x00878142, + 0x00898744, 0x00ac0483, 0x00b60317, 0x00b80283, + 0x00d00214, 0x00d10096, 0x00dd0080, 0x00de8097, + 0x00df8080, 0x00e10097, 0x00e1413e, 0x00e1c080, + 0x00e204be, 0x00ea83ae, 0x00f282ae, 0x00f401ad, + 0x00f4c12e, 0x00f54103, 0x00fc0303, 0x00fe4081, + 0x0100023e, 0x0101c0be, 0x010301be, 0x010640be, + 0x010e40be, 0x0114023e, 0x0115c0be, 0x011701be, + 0x011d8144, 0x01304144, 0x01340244, 0x01358144, + 0x01368344, 0x01388344, 0x013a8644, 0x013e0144, + 0x0161c085, 0x018882ae, 0x019d422f, 0x01b00184, + 0x01b4c084, 0x024a4084, 0x024c4084, 0x024d0084, + 0x0256042e, 0x0272c12e, 0x02770120, 0x0277c084, + 0x028cc084, 0x028d8084, 0x029641ae, 0x02978084, + 0x02d20084, 0x02d2c12e, 0x02d70120, 0x02e50084, + 0x02f281ae, 0x03120084, 0x03300084, 0x0331c122, + 0x0332812e, 0x035281ae, 0x03768084, 0x037701ae, + 0x038cc085, 0x03acc085, 0x03b7012f, 0x03c30081, + 0x03d0c084, 0x03d34084, 0x03d48084, 0x03d5c084, + 0x03d70084, 0x03da4084, 0x03dcc084, 0x03dd412e, + 0x03ddc085, 0x03de0084, 0x03de4085, 0x03e04084, + 0x03e4c084, 0x03e74084, 0x03e88084, 0x03e9c084, + 0x03eb0084, 0x03ee4084, 0x04098084, 0x043f0081, + 0x06c18484, 0x06c48084, 0x06cec184, 0x06d00120, + 0x06d0c084, 0x074b0383, 0x074cc41f, 0x074f1783, + 0x075e0081, 0x0766d283, 0x07801d44, 0x078e8942, + 0x07931844, 0x079f0d42, 0x07a58216, 0x07a68085, + 0x07a6c0be, 0x07a80d44, 0x07aea044, 0x07c00122, + 0x07c08344, 0x07c20122, 0x07c28344, 0x07c40122, + 0x07c48244, 0x07c60122, 0x07c68244, 0x07c8113e, + 0x07d08244, 0x07d20122, 0x07d28244, 0x07d40122, + 0x07d48344, 0x07d64c3e, 0x07dc4080, 0x07dc80be, + 0x07dcc080, 0x07dd00be, 0x07dd4080, 0x07dd80be, + 0x07ddc080, 0x07de00be, 0x07de4080, 0x07de80be, + 0x07dec080, 0x07df00be, 0x07df4080, 0x07e00820, + 0x07e40820, 0x07e80820, 0x07ec05be, 0x07eec080, + 0x07ef00be, 0x07ef4097, 0x07ef8080, 0x07efc117, + 0x07f0443e, 0x07f24080, 0x07f280be, 0x07f2c080, + 0x07f303be, 0x07f4c080, 0x07f582ae, 0x07f6c080, + 0x07f7433e, 0x07f8c080, 0x07f903ae, 0x07fac080, + 0x07fb013e, 0x07fb8102, 0x07fc83be, 0x07fe4080, + 0x07fe80be, 0x07fec080, 0x07ff00be, 0x07ff4080, + 0x07ff8097, 0x0800011e, 0x08008495, 0x08044081, + 0x0805c097, 0x08090081, 0x08094097, 0x08098099, + 0x080bc081, 0x080cc085, 0x080d00b1, 0x080d8085, + 0x080dc0b1, 0x080f0197, 0x0811c197, 0x0815c0b3, + 0x0817c081, 0x081c0595, 0x081ec081, 0x081f0215, + 0x0820051f, 0x08228583, 0x08254415, 0x082a0097, + 0x08400119, 0x08408081, 0x0840c0bf, 0x08414119, + 0x0841c081, 0x084240bf, 0x0842852d, 0x08454081, + 0x08458097, 0x08464295, 0x08480097, 0x08484099, + 0x08488097, 0x08490081, 0x08498080, 0x084a0081, + 0x084a8102, 0x084b0495, 0x084d421f, 0x084e4081, + 0x084ec099, 0x084f0283, 0x08514295, 0x08540119, + 0x0854809b, 0x0854c619, 0x0857c097, 0x08580081, + 0x08584097, 0x08588099, 0x0858c097, 0x08590081, + 0x08594097, 0x08598099, 0x0859c09b, 0x085a0097, + 0x085a4081, 0x085a8097, 0x085ac099, 0x085b0295, + 0x085c4097, 0x085c8099, 0x085cc097, 0x085d0081, + 0x085d4097, 0x085d8099, 0x085dc09b, 0x085e0097, + 0x085e4081, 0x085e8097, 0x085ec099, 0x085f0215, + 0x08624099, 0x0866813e, 0x086b80be, 0x087341be, + 0x088100be, 0x088240be, 0x088300be, 0x088901be, + 0x088b0085, 0x088b40b1, 0x088bc085, 0x088c00b1, + 0x089040be, 0x089100be, 0x0891c1be, 0x089801be, + 0x089b42be, 0x089d0144, 0x089e0144, 0x08a00144, + 0x08a10144, 0x08a20144, 0x08ab023e, 0x08b80244, + 0x08ba8220, 0x08ca411e, 0x0918049f, 0x091a4523, + 0x091cc097, 0x091d04a5, 0x091f452b, 0x0921c09b, + 0x092204a1, 0x09244525, 0x0926c099, 0x09270d25, + 0x092d8d1f, 0x09340d1f, 0x093a8081, 0x0a8300b3, + 0x0a9d0099, 0x0a9d4097, 0x0a9d8099, 0x0ab700be, + 0x0b1f0115, 0x0b5bc081, 0x0ba7c081, 0x0bbcc081, + 0x0bc004ad, 0x0bc244ad, 0x0bc484ad, 0x0bc6f383, + 0x0be0852d, 0x0be31d03, 0x0bf1882d, 0x0c000081, + 0x0c0d8283, 0x0c130b84, 0x0c194284, 0x0c1c0122, + 0x0c1cc122, 0x0c1d8122, 0x0c1e4122, 0x0c1f0122, + 0x0c250084, 0x0c26c123, 0x0c278084, 0x0c27c085, + 0x0c2b0b84, 0x0c314284, 0x0c340122, 0x0c34c122, + 0x0c358122, 0x0c364122, 0x0c370122, 0x0c3d0084, + 0x0c3dc220, 0x0c3f8084, 0x0c3fc085, 0x0c4c4a2d, + 0x0c51451f, 0x0c53ca9f, 0x0c5915ad, 0x0c648703, + 0x0c800741, 0x0c838089, 0x0c83c129, 0x0c8441a9, + 0x0c850089, 0x0c854129, 0x0c85c2a9, 0x0c870089, + 0x0c87408f, 0x0c87808d, 0x0c881241, 0x0c910203, + 0x0c940099, 0x0c9444a3, 0x0c968323, 0x0c98072d, + 0x0c9b84af, 0x0c9dc2a1, 0x0c9f00b5, 0x0c9f40b3, + 0x0c9f8085, 0x0ca01883, 0x0cac4223, 0x0cad4523, + 0x0cafc097, 0x0cb004a1, 0x0cb241a5, 0x0cb30097, + 0x0cb34099, 0x0cb38097, 0x0cb3c099, 0x0cb417ad, + 0x0cbfc085, 0x0cc001b3, 0x0cc0c0b1, 0x0cc100b3, + 0x0cc14131, 0x0cc1c0b5, 0x0cc200b3, 0x0cc241b1, + 0x0cc30133, 0x0cc38131, 0x0cc40085, 0x0cc440b1, + 0x0cc48133, 0x0cc50085, 0x0cc540b5, 0x0cc580b7, + 0x0cc5c0b5, 0x0cc600b1, 0x0cc64135, 0x0cc6c0b3, + 0x0cc701b1, 0x0cc7c0b3, 0x0cc800b5, 0x0cc840b3, + 0x0cc881b1, 0x0cc9422f, 0x0cca4131, 0x0ccac0b5, + 0x0ccb00b1, 0x0ccb40b3, 0x0ccb80b5, 0x0ccbc0b1, + 0x0ccc012f, 0x0ccc80b5, 0x0cccc0b3, 0x0ccd00b5, + 0x0ccd40b1, 0x0ccd80b5, 0x0ccdc085, 0x0cce02b1, + 0x0ccf40b3, 0x0ccf80b1, 0x0ccfc085, 0x0cd001b1, + 0x0cd0c0b3, 0x0cd101b1, 0x0cd1c0b5, 0x0cd200b3, + 0x0cd24085, 0x0cd280b5, 0x0cd2c085, 0x0cd30133, + 0x0cd381b1, 0x0cd440b3, 0x0cd48085, 0x0cd4c0b1, + 0x0cd500b3, 0x0cd54085, 0x0cd580b5, 0x0cd5c0b1, + 0x0cd60521, 0x0cd88525, 0x0cdb02a5, 0x0cdc4099, + 0x0cdc8117, 0x0cdd0099, 0x0cdd4197, 0x0cde0127, + 0x0cde8285, 0x0cdfc089, 0x0ce0043f, 0x0ce20099, + 0x0ce2409b, 0x0ce283bf, 0x0ce44219, 0x0ce54205, + 0x0ce6433f, 0x0ce7c131, 0x0ce84085, 0x0ce881b1, + 0x0ce94085, 0x0ce98107, 0x0cea0089, 0x0cea4097, + 0x0cea8219, 0x0ceb809d, 0x0cebc08d, 0x0cec083f, + 0x0cf00105, 0x0cf0809b, 0x0cf0c197, 0x0cf1809b, + 0x0cf1c099, 0x0cf20517, 0x0cf48099, 0x0cf4c117, + 0x0cf54119, 0x0cf5c097, 0x0cf6009b, 0x0cf64099, + 0x0cf68217, 0x0cf78119, 0x0cf804a1, 0x0cfa4525, + 0x0cfcc525, 0x0cff4125, 0x0cffc099, 0x29a70103, + 0x29dc0081, 0x29fc8195, 0x29fe0103, 0x2ad70203, + 0x2ada4081, 0x3e401482, 0x3e4a7f82, 0x3e6a3f82, + 0x3e8aa102, 0x3e9b0110, 0x3e9c2f82, 0x3eb3c590, + 0x3ec00197, 0x3ec0c119, 0x3ec1413f, 0x3ec4c2af, + 0x3ec74184, 0x3ec804ad, 0x3eca4081, 0x3eca8304, + 0x3ecc03a0, 0x3ece02a0, 0x3ecf8084, 0x3ed00120, + 0x3ed0c120, 0x3ed184ae, 0x3ed3c085, 0x3ed4312d, + 0x3ef4cbad, 0x3efa892f, 0x3eff022d, 0x3f002f2f, + 0x3f1782a5, 0x3f18c0b1, 0x3f1907af, 0x3f1cffaf, + 0x3f3c81a5, 0x3f3d64af, 0x3f542031, 0x3f649b31, + 0x3f7c0131, 0x3f7c83b3, 0x3f7e40b1, 0x3f7e80bd, + 0x3f7ec0bb, 0x3f7f00b3, 0x3f840503, 0x3f8c01ad, + 0x3f8cc315, 0x3f8e462d, 0x3f91cc03, 0x3f97c695, + 0x3f9c01af, 0x3f9d0085, 0x3f9d852f, 0x3fa03aad, + 0x3fbd442f, 0x3fc06f1f, 0x3fd7c11f, 0x3fd85fad, + 0x3fe80081, 0x3fe84f1f, 0x3ff0831f, 0x3ff2831f, + 0x3ff4831f, 0x3ff6819f, 0x3ff80783, 0x41e04d83, + 0x41e70f91, 0x44268192, 0x442ac092, 0x444b8112, + 0x44d2c112, 0x452ec212, 0x456e8112, 0x464e0092, + 0x74578392, 0x746ec312, 0x75000d1f, 0x75068d1f, + 0x750d0d1f, 0x7513839f, 0x7515891f, 0x751a0d1f, + 0x75208d1f, 0x75271015, 0x752f439f, 0x7531459f, + 0x75340d1f, 0x753a8d1f, 0x75410395, 0x7543441f, + 0x7545839f, 0x75478d1f, 0x754e0795, 0x7552839f, + 0x75548d1f, 0x755b0d1f, 0x75618d1f, 0x75680d1f, + 0x756e8d1f, 0x75750d1f, 0x757b8d1f, 0x75820d1f, + 0x75888d1f, 0x758f0d1f, 0x75958d1f, 0x759c0d1f, + 0x75a28d1f, 0x75a90103, 0x75aa089f, 0x75ae4081, + 0x75ae839f, 0x75b04081, 0x75b08c9f, 0x75b6c081, + 0x75b7032d, 0x75b8889f, 0x75bcc081, 0x75bd039f, + 0x75bec081, 0x75bf0c9f, 0x75c54081, 0x75c5832d, + 0x75c7089f, 0x75cb4081, 0x75cb839f, 0x75cd4081, + 0x75cd8c9f, 0x75d3c081, 0x75d4032d, 0x75d5889f, + 0x75d9c081, 0x75da039f, 0x75dbc081, 0x75dc0c9f, + 0x75e24081, 0x75e2832d, 0x75e4089f, 0x75e84081, + 0x75e8839f, 0x75ea4081, 0x75ea8c9f, 0x75f0c081, + 0x75f1042d, 0x75f3851f, 0x75f6051f, 0x75f8851f, + 0x75fb051f, 0x75fd851f, 0x7b80022d, 0x7b814dad, + 0x7b884203, 0x7b89c081, 0x7b8a452d, 0x7b8d0403, + 0x7b908081, 0x7b91dc03, 0x7ba0052d, 0x7ba2c8ad, + 0x7ba84483, 0x7baac8ad, 0x7c400097, 0x7c404521, + 0x7c440d25, 0x7c4a8087, 0x7c4ac115, 0x7c4b4117, + 0x7c4c0d1f, 0x7c528217, 0x7c538099, 0x7c53c097, + 0x7c5a8197, 0x7c640097, 0x7c80012f, 0x7c808081, + 0x7c841603, 0x7c9004c1, 0x7c940103, 0x7efc051f, + 0xbe0001ac, 0xbe00d110, 0xbe0947ac, 0xbe0d3910, + 0xbe29872c, 0xbe2d022c, 0xbe2e3790, 0xbe49ff90, + 0xbe69bc10, +}; + +static const uint16_t unicode_decomp_table2[693] = { + 0x0020, 0x0000, 0x0061, 0x0002, 0x0004, 0x0006, 0x03bc, 0x0008, + 0x000a, 0x000c, 0x0015, 0x0095, 0x00a5, 0x00b9, 0x00c1, 0x00c3, + 0x00c7, 0x00cb, 0x00d1, 0x00d7, 0x00dd, 0x00e0, 0x00e6, 0x00f8, + 0x0108, 0x010a, 0x0073, 0x0110, 0x0112, 0x0114, 0x0120, 0x012c, + 0x0144, 0x014d, 0x0153, 0x0162, 0x0168, 0x016a, 0x0176, 0x0192, + 0x0194, 0x01a9, 0x01bb, 0x01c7, 0x01d1, 0x01d5, 0x02b9, 0x01d7, + 0x003b, 0x01d9, 0x01db, 0x00b7, 0x01e1, 0x01fc, 0x020c, 0x0218, + 0x021d, 0x0223, 0x0227, 0x03a3, 0x0233, 0x023f, 0x0242, 0x024b, + 0x024e, 0x0251, 0x025d, 0x0260, 0x0269, 0x026c, 0x026f, 0x0275, + 0x0278, 0x0281, 0x028a, 0x029c, 0x029f, 0x02a3, 0x02af, 0x02b9, + 0x02c5, 0x02c9, 0x02cd, 0x02d1, 0x02d5, 0x02e7, 0x02ed, 0x02f1, + 0x02f5, 0x02f9, 0x02fd, 0x0305, 0x0309, 0x030d, 0x0313, 0x0317, + 0x031b, 0x0323, 0x0327, 0x032b, 0x032f, 0x0335, 0x033d, 0x0341, + 0x0349, 0x034d, 0x0351, 0x0f0b, 0x0357, 0x035b, 0x035f, 0x0363, + 0x0367, 0x036b, 0x036f, 0x0373, 0x0379, 0x037d, 0x0381, 0x0385, + 0x0389, 0x038d, 0x0391, 0x0395, 0x0399, 0x039d, 0x03a1, 0x10dc, + 0x03a5, 0x03c9, 0x03cd, 0x03d9, 0x03dd, 0x03e1, 0x03ef, 0x03f1, + 0x043d, 0x044f, 0x0499, 0x04f0, 0x0502, 0x054a, 0x0564, 0x056c, + 0x0570, 0x0573, 0x059a, 0x05fa, 0x05fe, 0x0607, 0x060b, 0x0614, + 0x0618, 0x061e, 0x0622, 0x0628, 0x068e, 0x0694, 0x0698, 0x069e, + 0x06a2, 0x06ab, 0x03ac, 0x06f3, 0x03ad, 0x06f6, 0x03ae, 0x06f9, + 0x03af, 0x06fc, 0x03cc, 0x06ff, 0x03cd, 0x0702, 0x03ce, 0x0705, + 0x0709, 0x070d, 0x0711, 0x0386, 0x0732, 0x0735, 0x03b9, 0x0737, + 0x073b, 0x0388, 0x0753, 0x0389, 0x0756, 0x0390, 0x076b, 0x038a, + 0x0777, 0x03b0, 0x0789, 0x038e, 0x0799, 0x079f, 0x07a3, 0x038c, + 0x07b8, 0x038f, 0x07bb, 0x00b4, 0x07be, 0x07c0, 0x07c2, 0x2010, + 0x07cb, 0x002e, 0x07cd, 0x07cf, 0x0020, 0x07d2, 0x07d6, 0x07db, + 0x07df, 0x07e4, 0x07ea, 0x07f0, 0x0020, 0x07f6, 0x2212, 0x0801, + 0x0805, 0x0807, 0x081d, 0x0825, 0x0827, 0x0043, 0x082d, 0x0830, + 0x0190, 0x0836, 0x0839, 0x004e, 0x0845, 0x0847, 0x084c, 0x084e, + 0x0851, 0x005a, 0x03a9, 0x005a, 0x0853, 0x0857, 0x0860, 0x0069, + 0x0862, 0x0865, 0x086f, 0x0874, 0x087a, 0x087e, 0x08a2, 0x0049, + 0x08a4, 0x08a6, 0x08a9, 0x0056, 0x08ab, 0x08ad, 0x08b0, 0x08b4, + 0x0058, 0x08b6, 0x08b8, 0x08bb, 0x08c0, 0x08c2, 0x08c5, 0x0076, + 0x08c7, 0x08c9, 0x08cc, 0x08d0, 0x0078, 0x08d2, 0x08d4, 0x08d7, + 0x08db, 0x08de, 0x08e4, 0x08e7, 0x08f0, 0x08f3, 0x08f6, 0x08f9, + 0x0902, 0x0906, 0x090b, 0x090f, 0x0914, 0x0917, 0x091a, 0x0923, + 0x092c, 0x093b, 0x093e, 0x0941, 0x0944, 0x0947, 0x094a, 0x0956, + 0x095c, 0x0960, 0x0962, 0x0964, 0x0968, 0x096a, 0x0970, 0x0978, + 0x097c, 0x0980, 0x0986, 0x0989, 0x098f, 0x0991, 0x0030, 0x0993, + 0x0999, 0x099c, 0x099e, 0x09a1, 0x09a4, 0x2d61, 0x6bcd, 0x9f9f, + 0x09a6, 0x09b1, 0x09bc, 0x09c7, 0x0a95, 0x0aa1, 0x0b15, 0x0020, + 0x0b27, 0x0b31, 0x0b8d, 0x0ba1, 0x0ba5, 0x0ba9, 0x0bad, 0x0bb1, + 0x0bb5, 0x0bb9, 0x0bbd, 0x0bc1, 0x0bc5, 0x0c21, 0x0c35, 0x0c39, + 0x0c3d, 0x0c41, 0x0c45, 0x0c49, 0x0c4d, 0x0c51, 0x0c55, 0x0c59, + 0x0c6f, 0x0c71, 0x0c73, 0x0ca0, 0x0cbc, 0x0cdc, 0x0ce4, 0x0cec, + 0x0cf4, 0x0cfc, 0x0d04, 0x0d0c, 0x0d14, 0x0d22, 0x0d2e, 0x0d7a, + 0x0d82, 0x0d85, 0x0d89, 0x0d8d, 0x0d9d, 0x0db1, 0x0db5, 0x0dbc, + 0x0dc2, 0x0dc6, 0x0e28, 0x0e2c, 0x0e30, 0x0e32, 0x0e36, 0x0e3c, + 0x0e3e, 0x0e41, 0x0e43, 0x0e46, 0x0e77, 0x0e7b, 0x0e89, 0x0e8e, + 0x0e94, 0x0e9c, 0x0ea3, 0x0ea9, 0x0eb4, 0x0ebe, 0x0ec6, 0x0eca, + 0x0ecf, 0x0ed9, 0x0edd, 0x0ee4, 0x0eec, 0x0ef3, 0x0ef8, 0x0f04, + 0x0f0a, 0x0f15, 0x0f1b, 0x0f22, 0x0f28, 0x0f33, 0x0f3d, 0x0f45, + 0x0f4c, 0x0f51, 0x0f57, 0x0f5e, 0x0f63, 0x0f69, 0x0f70, 0x0f76, + 0x0f7d, 0x0f82, 0x0f89, 0x0f8d, 0x0f9e, 0x0fa4, 0x0fa9, 0x0fad, + 0x0fb8, 0x0fbe, 0x0fc9, 0x0fd0, 0x0fd6, 0x0fda, 0x0fe1, 0x0fe5, + 0x0fef, 0x0ffa, 0x1000, 0x1004, 0x1009, 0x100f, 0x1013, 0x101a, + 0x101f, 0x1023, 0x1029, 0x102f, 0x1032, 0x1036, 0x1039, 0x103f, + 0x1045, 0x1059, 0x1061, 0x1079, 0x107c, 0x1080, 0x1095, 0x10a1, + 0x10b1, 0x10c3, 0x10cb, 0x10cf, 0x10da, 0x10de, 0x10ea, 0x10f2, + 0x10f4, 0x1100, 0x1105, 0x1111, 0x1141, 0x1149, 0x114d, 0x1153, + 0x1157, 0x115a, 0x116e, 0x1171, 0x1175, 0x117b, 0x117d, 0x1181, + 0x1184, 0x118c, 0x1192, 0x1196, 0x119c, 0x11a2, 0x11a8, 0x11ab, + 0xa76f, 0x11af, 0x11b2, 0x11b6, 0x028d, 0x11be, 0x1210, 0x130e, + 0x140c, 0x1490, 0x1495, 0x1553, 0x156c, 0x1572, 0x1578, 0x157e, + 0x158a, 0x1596, 0x002b, 0x15a1, 0x15b9, 0x15bd, 0x15c1, 0x15c5, + 0x15c9, 0x15cd, 0x15e1, 0x15e5, 0x1649, 0x1662, 0x1688, 0x168e, + 0x174c, 0x1752, 0x1757, 0x1777, 0x1877, 0x187d, 0x1911, 0x19d3, + 0x1a77, 0x1a7f, 0x1a9d, 0x1aa2, 0x1ab6, 0x1ac0, 0x1ac6, 0x1ada, + 0x1adf, 0x1ae5, 0x1af3, 0x1b23, 0x1b30, 0x1b38, 0x1b3c, 0x1b52, + 0x1bc9, 0x1bdb, 0x1bdd, 0x1bdf, 0x3164, 0x1c20, 0x1c22, 0x1c24, + 0x1c26, 0x1c28, 0x1c2a, 0x1c48, 0x1c7e, 0x1cc4, 0x1cd2, 0x1cd7, + 0x1ce0, 0x1ce9, 0x1cfb, 0x1d04, 0x1d09, 0x1d29, 0x1d44, 0x1d46, + 0x1d48, 0x1d4a, 0x1d4c, 0x1d4e, 0x1d50, 0x1d52, 0x1d72, 0x1d74, + 0x1d76, 0x1d78, 0x1d7a, 0x1d81, 0x1d83, 0x1d85, 0x1d87, 0x1d96, + 0x1d98, 0x1d9a, 0x1d9c, 0x1d9e, 0x1da0, 0x1da2, 0x1da4, 0x1da6, + 0x1da8, 0x1daa, 0x1dac, 0x1dae, 0x1db0, 0x1db2, 0x1db6, 0x03f4, + 0x1db8, 0x2207, 0x1dba, 0x2202, 0x1dbc, 0x1dc4, 0x03f4, 0x1dc6, + 0x2207, 0x1dc8, 0x2202, 0x1dca, 0x1dd2, 0x03f4, 0x1dd4, 0x2207, + 0x1dd6, 0x2202, 0x1dd8, 0x1de0, 0x03f4, 0x1de2, 0x2207, 0x1de4, + 0x2202, 0x1de6, 0x1dee, 0x03f4, 0x1df0, 0x2207, 0x1df2, 0x2202, + 0x1df4, 0x1dfe, 0x1e00, 0x1e02, 0x1e04, 0x1e06, 0x1e08, 0x1e0e, + 0x1e2b, 0x062d, 0x1e33, 0x1e3f, 0x062c, 0x1e4f, 0x1ebf, 0x1ecb, + 0x1ede, 0x1ef0, 0x1f03, 0x1f05, 0x1f09, 0x1f0f, 0x1f15, 0x1f17, + 0x1f1b, 0x1f1d, 0x1f25, 0x1f28, 0x1f2a, 0x1f30, 0x1f32, 0x30b5, + 0x1f38, 0x1f90, 0x1fa6, 0x1faa, 0x1fac, 0x1fb1, 0x1ffe, 0x200f, + 0x2110, 0x2120, 0x2126, 0x2220, 0x233e, +}; + +static const uint8_t unicode_decomp_data[9292] = { + 0x20, 0x88, 0x20, 0x84, 0x32, 0x33, 0x20, 0x81, + 0x20, 0xa7, 0x31, 0x6f, 0x31, 0xd0, 0x34, 0x31, + 0xd0, 0x32, 0x33, 0xd0, 0x34, 0x41, 0x80, 0x41, + 0x81, 0x41, 0x82, 0x41, 0x83, 0x41, 0x88, 0x41, + 0x8a, 0x00, 0x00, 0x43, 0xa7, 0x45, 0x80, 0x45, + 0x81, 0x45, 0x82, 0x45, 0x88, 0x49, 0x80, 0x49, + 0x81, 0x49, 0x82, 0x49, 0x88, 0x00, 0x00, 0x4e, + 0x83, 0x4f, 0x80, 0x4f, 0x81, 0x4f, 0x82, 0x4f, + 0x83, 0x4f, 0x88, 0x00, 0x00, 0x00, 0x00, 0x55, + 0x80, 0x55, 0x81, 0x55, 0x82, 0x55, 0x88, 0x59, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, 0x61, + 0x81, 0x61, 0x82, 0x61, 0x83, 0x61, 0x88, 0x61, + 0x8a, 0x00, 0x00, 0x63, 0xa7, 0x65, 0x80, 0x65, + 0x81, 0x65, 0x82, 0x65, 0x88, 0x69, 0x80, 0x69, + 0x81, 0x69, 0x82, 0x69, 0x88, 0x00, 0x00, 0x6e, + 0x83, 0x6f, 0x80, 0x6f, 0x81, 0x6f, 0x82, 0x6f, + 0x83, 0x6f, 0x88, 0x00, 0x00, 0x00, 0x00, 0x75, + 0x80, 0x75, 0x81, 0x75, 0x82, 0x75, 0x88, 0x79, + 0x81, 0x00, 0x00, 0x79, 0x88, 0x41, 0x84, 0x41, + 0x86, 0x41, 0xa8, 0x43, 0x81, 0x43, 0x82, 0x43, + 0x87, 0x43, 0x8c, 0x44, 0x8c, 0x45, 0x84, 0x45, + 0x86, 0x45, 0x87, 0x45, 0xa8, 0x45, 0x8c, 0x47, + 0x82, 0x47, 0x86, 0x47, 0x87, 0x47, 0xa7, 0x48, + 0x82, 0x49, 0x83, 0x49, 0x84, 0x49, 0x86, 0x49, + 0xa8, 0x49, 0x87, 0x49, 0x4a, 0x69, 0x6a, 0x4a, + 0x82, 0x4b, 0xa7, 0x4c, 0x81, 0x4c, 0xa7, 0x4c, + 0x8c, 0x4c, 0x00, 0x00, 0x6b, 0x20, 0x6b, 0x4e, + 0x81, 0x4e, 0xa7, 0x4e, 0x8c, 0xbc, 0x02, 0x6e, + 0x4f, 0x84, 0x4f, 0x86, 0x4f, 0x8b, 0x52, 0x81, + 0x52, 0xa7, 0x52, 0x8c, 0x53, 0x81, 0x53, 0x82, + 0x53, 0xa7, 0x53, 0x8c, 0x54, 0xa7, 0x54, 0x8c, + 0x55, 0x83, 0x55, 0x84, 0x55, 0x86, 0x55, 0x8a, + 0x55, 0x8b, 0x55, 0xa8, 0x57, 0x82, 0x59, 0x82, + 0x59, 0x88, 0x5a, 0x81, 0x5a, 0x87, 0x5a, 0x8c, + 0x4f, 0x9b, 0x55, 0x9b, 0x44, 0x00, 0x7d, 0x01, + 0x44, 0x00, 0x7e, 0x01, 0x64, 0x00, 0x7e, 0x01, + 0x4c, 0x4a, 0x4c, 0x6a, 0x6c, 0x6a, 0x4e, 0x4a, + 0x4e, 0x6a, 0x6e, 0x6a, 0x41, 0x00, 0x8c, 0x49, + 0x00, 0x8c, 0x4f, 0x00, 0x8c, 0x55, 0x00, 0x8c, + 0xdc, 0x00, 0x84, 0xdc, 0x00, 0x81, 0xdc, 0x00, + 0x8c, 0xdc, 0x00, 0x80, 0xc4, 0x00, 0x84, 0x26, + 0x02, 0x84, 0xc6, 0x00, 0x84, 0x47, 0x8c, 0x4b, + 0x8c, 0x4f, 0xa8, 0xea, 0x01, 0x84, 0xeb, 0x01, + 0x84, 0xb7, 0x01, 0x8c, 0x92, 0x02, 0x8c, 0x6a, + 0x00, 0x8c, 0x44, 0x5a, 0x44, 0x7a, 0x64, 0x7a, + 0x47, 0x81, 0x4e, 0x00, 0x80, 0xc5, 0x00, 0x81, + 0xc6, 0x00, 0x81, 0xd8, 0x00, 0x81, 0x41, 0x8f, + 0x41, 0x91, 0x45, 0x8f, 0x45, 0x91, 0x49, 0x8f, + 0x49, 0x91, 0x4f, 0x8f, 0x4f, 0x91, 0x52, 0x8f, + 0x52, 0x91, 0x55, 0x8f, 0x55, 0x91, 0x53, 0xa6, + 0x54, 0xa6, 0x48, 0x8c, 0x41, 0x00, 0x87, 0x45, + 0x00, 0xa7, 0xd6, 0x00, 0x84, 0xd5, 0x00, 0x84, + 0x4f, 0x00, 0x87, 0x2e, 0x02, 0x84, 0x59, 0x00, + 0x84, 0x68, 0x00, 0x66, 0x02, 0x6a, 0x00, 0x72, + 0x00, 0x79, 0x02, 0x7b, 0x02, 0x81, 0x02, 0x77, + 0x00, 0x79, 0x00, 0x20, 0x86, 0x20, 0x87, 0x20, + 0x8a, 0x20, 0xa8, 0x20, 0x83, 0x20, 0x8b, 0x63, + 0x02, 0x6c, 0x00, 0x73, 0x00, 0x78, 0x00, 0x95, + 0x02, 0x80, 0x81, 0x00, 0x93, 0x88, 0x81, 0x20, + 0xc5, 0x20, 0x81, 0xa8, 0x00, 0x81, 0x91, 0x03, + 0x81, 0x95, 0x03, 0x81, 0x97, 0x03, 0x81, 0x99, + 0x03, 0x81, 0x00, 0x00, 0x00, 0x9f, 0x03, 0x81, + 0x00, 0x00, 0x00, 0xa5, 0x03, 0x81, 0xa9, 0x03, + 0x81, 0xca, 0x03, 0x81, 0x01, 0x03, 0x98, 0x07, + 0xa4, 0x07, 0xb0, 0x00, 0xb4, 0x00, 0xb6, 0x00, + 0xb8, 0x00, 0xca, 0x00, 0x01, 0x03, 0xb8, 0x07, + 0xc4, 0x07, 0xbe, 0x00, 0xc4, 0x00, 0xc8, 0x00, + 0xa5, 0x03, 0x0d, 0x13, 0x00, 0x01, 0x03, 0xd1, + 0x00, 0xd1, 0x07, 0xc6, 0x03, 0xc0, 0x03, 0xba, + 0x03, 0xc1, 0x03, 0xc2, 0x03, 0x00, 0x00, 0x98, + 0x03, 0xb5, 0x03, 0x15, 0x04, 0x80, 0x15, 0x04, + 0x88, 0x00, 0x00, 0x00, 0x13, 0x04, 0x81, 0x06, + 0x04, 0x88, 0x1a, 0x04, 0x81, 0x18, 0x04, 0x80, + 0x23, 0x04, 0x86, 0x18, 0x04, 0x86, 0x38, 0x04, + 0x86, 0x35, 0x04, 0x80, 0x35, 0x04, 0x88, 0x00, + 0x00, 0x00, 0x33, 0x04, 0x81, 0x56, 0x04, 0x88, + 0x3a, 0x04, 0x81, 0x38, 0x04, 0x80, 0x43, 0x04, + 0x86, 0x74, 0x04, 0x8f, 0x16, 0x04, 0x86, 0x10, + 0x04, 0x86, 0x10, 0x04, 0x88, 0x15, 0x04, 0x86, + 0xd8, 0x04, 0x88, 0x16, 0x04, 0x88, 0x17, 0x04, + 0x88, 0x18, 0x04, 0x84, 0x18, 0x04, 0x88, 0x1e, + 0x04, 0x88, 0xe8, 0x04, 0x88, 0x2d, 0x04, 0x88, + 0x23, 0x04, 0x84, 0x23, 0x04, 0x88, 0x23, 0x04, + 0x8b, 0x27, 0x04, 0x88, 0x2b, 0x04, 0x88, 0x65, + 0x05, 0x82, 0x05, 0x27, 0x06, 0x00, 0x2c, 0x00, + 0x2d, 0x21, 0x2d, 0x00, 0x2e, 0x23, 0x2d, 0x27, + 0x06, 0x00, 0x4d, 0x21, 0x4d, 0xa0, 0x4d, 0x23, + 0x4d, 0xd5, 0x06, 0x54, 0x06, 0x00, 0x00, 0x00, + 0x00, 0xc1, 0x06, 0x54, 0x06, 0xd2, 0x06, 0x54, + 0x06, 0x28, 0x09, 0x3c, 0x09, 0x30, 0x09, 0x3c, + 0x09, 0x33, 0x09, 0x3c, 0x09, 0x15, 0x09, 0x00, + 0x27, 0x01, 0x27, 0x02, 0x27, 0x07, 0x27, 0x0c, + 0x27, 0x0d, 0x27, 0x16, 0x27, 0x1a, 0x27, 0xbe, + 0x09, 0x09, 0x00, 0x09, 0x19, 0xa1, 0x09, 0xbc, + 0x09, 0xaf, 0x09, 0xbc, 0x09, 0x32, 0x0a, 0x3c, + 0x0a, 0x38, 0x0a, 0x3c, 0x0a, 0x16, 0x0a, 0x00, + 0x26, 0x01, 0x26, 0x06, 0x26, 0x2b, 0x0a, 0x3c, + 0x0a, 0x47, 0x0b, 0x56, 0x0b, 0x3e, 0x0b, 0x09, + 0x00, 0x09, 0x19, 0x21, 0x0b, 0x3c, 0x0b, 0x92, + 0x0b, 0xd7, 0x0b, 0xbe, 0x0b, 0x08, 0x00, 0x09, + 0x00, 0x08, 0x19, 0x46, 0x0c, 0x56, 0x0c, 0xbf, + 0x0c, 0xd5, 0x0c, 0xc6, 0x0c, 0xd5, 0x0c, 0xc2, + 0x0c, 0x04, 0x00, 0x08, 0x13, 0x3e, 0x0d, 0x08, + 0x00, 0x09, 0x00, 0x08, 0x19, 0xd9, 0x0d, 0xca, + 0x0d, 0xca, 0x0d, 0x0f, 0x05, 0x12, 0x00, 0x0f, + 0x15, 0x4d, 0x0e, 0x32, 0x0e, 0xcd, 0x0e, 0xb2, + 0x0e, 0x99, 0x0e, 0x12, 0x00, 0x12, 0x08, 0x42, + 0x0f, 0xb7, 0x0f, 0x4c, 0x0f, 0xb7, 0x0f, 0x51, + 0x0f, 0xb7, 0x0f, 0x56, 0x0f, 0xb7, 0x0f, 0x5b, + 0x0f, 0xb7, 0x0f, 0x40, 0x0f, 0xb5, 0x0f, 0x71, + 0x0f, 0x72, 0x0f, 0x71, 0x0f, 0x00, 0x03, 0x41, + 0x0f, 0xb2, 0x0f, 0x81, 0x0f, 0xb3, 0x0f, 0x80, + 0x0f, 0xb3, 0x0f, 0x81, 0x0f, 0x71, 0x0f, 0x80, + 0x0f, 0x92, 0x0f, 0xb7, 0x0f, 0x9c, 0x0f, 0xb7, + 0x0f, 0xa1, 0x0f, 0xb7, 0x0f, 0xa6, 0x0f, 0xb7, + 0x0f, 0xab, 0x0f, 0xb7, 0x0f, 0x90, 0x0f, 0xb5, + 0x0f, 0x25, 0x10, 0x2e, 0x10, 0x05, 0x1b, 0x35, + 0x1b, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1b, 0x35, + 0x1b, 0x00, 0x00, 0x00, 0x00, 0x09, 0x1b, 0x35, + 0x1b, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x1b, 0x35, + 0x1b, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x1b, 0x35, + 0x1b, 0x11, 0x1b, 0x35, 0x1b, 0x3a, 0x1b, 0x35, + 0x1b, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x1b, 0x35, + 0x1b, 0x3e, 0x1b, 0x35, 0x1b, 0x42, 0x1b, 0x35, + 0x1b, 0x41, 0x00, 0xc6, 0x00, 0x42, 0x00, 0x00, + 0x00, 0x44, 0x00, 0x45, 0x00, 0x8e, 0x01, 0x47, + 0x00, 0x4f, 0x00, 0x22, 0x02, 0x50, 0x00, 0x52, + 0x00, 0x54, 0x00, 0x55, 0x00, 0x57, 0x00, 0x61, + 0x00, 0x50, 0x02, 0x51, 0x02, 0x02, 0x1d, 0x62, + 0x00, 0x64, 0x00, 0x65, 0x00, 0x59, 0x02, 0x5b, + 0x02, 0x5c, 0x02, 0x67, 0x00, 0x00, 0x00, 0x6b, + 0x00, 0x6d, 0x00, 0x4b, 0x01, 0x6f, 0x00, 0x54, + 0x02, 0x16, 0x1d, 0x17, 0x1d, 0x70, 0x00, 0x74, + 0x00, 0x75, 0x00, 0x1d, 0x1d, 0x6f, 0x02, 0x76, + 0x00, 0x25, 0x1d, 0xb2, 0x03, 0xb3, 0x03, 0xb4, + 0x03, 0xc6, 0x03, 0xc7, 0x03, 0x69, 0x00, 0x72, + 0x00, 0x75, 0x00, 0x76, 0x00, 0xb2, 0x03, 0xb3, + 0x03, 0xc1, 0x03, 0xc6, 0x03, 0xc7, 0x03, 0x52, + 0x02, 0x63, 0x00, 0x55, 0x02, 0xf0, 0x00, 0x5c, + 0x02, 0x66, 0x00, 0x5f, 0x02, 0x61, 0x02, 0x65, + 0x02, 0x68, 0x02, 0x69, 0x02, 0x6a, 0x02, 0x7b, + 0x1d, 0x9d, 0x02, 0x6d, 0x02, 0x85, 0x1d, 0x9f, + 0x02, 0x71, 0x02, 0x70, 0x02, 0x72, 0x02, 0x73, + 0x02, 0x74, 0x02, 0x75, 0x02, 0x78, 0x02, 0x82, + 0x02, 0x83, 0x02, 0xab, 0x01, 0x89, 0x02, 0x8a, + 0x02, 0x1c, 0x1d, 0x8b, 0x02, 0x8c, 0x02, 0x7a, + 0x00, 0x90, 0x02, 0x91, 0x02, 0x92, 0x02, 0xb8, + 0x03, 0x41, 0x00, 0xa5, 0x42, 0x00, 0x87, 0x42, + 0x00, 0xa3, 0x42, 0x00, 0xb1, 0xc7, 0x00, 0x81, + 0x44, 0x00, 0x87, 0x44, 0x00, 0xa3, 0x44, 0x00, + 0xb1, 0x44, 0x00, 0xa7, 0x44, 0x00, 0xad, 0x12, + 0x01, 0x80, 0x12, 0x01, 0x81, 0x45, 0x00, 0xad, + 0x45, 0x00, 0xb0, 0x28, 0x02, 0x86, 0x46, 0x00, + 0x87, 0x47, 0x00, 0x84, 0x48, 0x00, 0x87, 0x48, + 0x00, 0xa3, 0x48, 0x00, 0x88, 0x48, 0x00, 0xa7, + 0x48, 0x00, 0xae, 0x49, 0x00, 0xb0, 0xcf, 0x00, + 0x81, 0x4b, 0x00, 0x81, 0x4b, 0x00, 0xa3, 0x4b, + 0x00, 0xb1, 0x4c, 0x00, 0xa3, 0x36, 0x1e, 0x84, + 0x4c, 0xb1, 0x4c, 0xad, 0x4d, 0x81, 0x4d, 0x87, + 0x4d, 0xa3, 0x4e, 0x87, 0x4e, 0xa3, 0x4e, 0xb1, + 0x4e, 0xad, 0xd5, 0x00, 0x81, 0xd5, 0x00, 0x88, + 0x4c, 0x01, 0x80, 0x4c, 0x01, 0x81, 0x50, 0x00, + 0x81, 0x50, 0x00, 0x87, 0x52, 0x00, 0x87, 0x52, + 0x00, 0xa3, 0x5a, 0x1e, 0x84, 0x52, 0x00, 0xb1, + 0x53, 0x00, 0x87, 0x53, 0x00, 0xa3, 0x5a, 0x01, + 0x87, 0x60, 0x01, 0x87, 0x62, 0x1e, 0x87, 0x54, + 0x00, 0x87, 0x54, 0x00, 0xa3, 0x54, 0x00, 0xb1, + 0x54, 0x00, 0xad, 0x55, 0x00, 0xa4, 0x55, 0x00, + 0xb0, 0x55, 0x00, 0xad, 0x68, 0x01, 0x81, 0x6a, + 0x01, 0x88, 0x56, 0x83, 0x56, 0xa3, 0x57, 0x80, + 0x57, 0x81, 0x57, 0x88, 0x57, 0x87, 0x57, 0xa3, + 0x58, 0x87, 0x58, 0x88, 0x59, 0x87, 0x5a, 0x82, + 0x5a, 0xa3, 0x5a, 0xb1, 0x68, 0xb1, 0x74, 0x88, + 0x77, 0x8a, 0x79, 0x8a, 0x61, 0x00, 0xbe, 0x02, + 0x7f, 0x01, 0x87, 0x41, 0x00, 0xa3, 0x41, 0x00, + 0x89, 0xc2, 0x00, 0x81, 0xc2, 0x00, 0x80, 0xc2, + 0x00, 0x89, 0xc2, 0x00, 0x83, 0xa0, 0x1e, 0x82, + 0x02, 0x01, 0x81, 0x02, 0x01, 0x80, 0x02, 0x01, + 0x89, 0x02, 0x01, 0x83, 0xa0, 0x1e, 0x86, 0x45, + 0x00, 0xa3, 0x45, 0x00, 0x89, 0x45, 0x00, 0x83, + 0xca, 0x00, 0x81, 0xca, 0x00, 0x80, 0xca, 0x00, + 0x89, 0xca, 0x00, 0x83, 0xb8, 0x1e, 0x82, 0x49, + 0x00, 0x89, 0x49, 0x00, 0xa3, 0x4f, 0x00, 0xa3, + 0x4f, 0x00, 0x89, 0xd4, 0x00, 0x81, 0xd4, 0x00, + 0x80, 0xd4, 0x00, 0x89, 0xd4, 0x00, 0x83, 0xcc, + 0x1e, 0x82, 0xa0, 0x01, 0x81, 0xa0, 0x01, 0x80, + 0xa0, 0x01, 0x89, 0xa0, 0x01, 0x83, 0xa0, 0x01, + 0xa3, 0x55, 0x00, 0xa3, 0x55, 0x00, 0x89, 0xaf, + 0x01, 0x81, 0xaf, 0x01, 0x80, 0xaf, 0x01, 0x89, + 0xaf, 0x01, 0x83, 0xaf, 0x01, 0xa3, 0x59, 0x00, + 0x80, 0x59, 0x00, 0xa3, 0x59, 0x00, 0x89, 0x59, + 0x00, 0x83, 0xb1, 0x03, 0x13, 0x03, 0x00, 0x1f, + 0x80, 0x00, 0x1f, 0x81, 0x00, 0x1f, 0xc2, 0x91, + 0x03, 0x13, 0x03, 0x08, 0x1f, 0x80, 0x08, 0x1f, + 0x81, 0x08, 0x1f, 0xc2, 0xb5, 0x03, 0x13, 0x03, + 0x10, 0x1f, 0x80, 0x10, 0x1f, 0x81, 0x95, 0x03, + 0x13, 0x03, 0x18, 0x1f, 0x80, 0x18, 0x1f, 0x81, + 0xb7, 0x03, 0x93, 0xb7, 0x03, 0x94, 0x20, 0x1f, + 0x80, 0x21, 0x1f, 0x80, 0x20, 0x1f, 0x81, 0x21, + 0x1f, 0x81, 0x20, 0x1f, 0xc2, 0x21, 0x1f, 0xc2, + 0x97, 0x03, 0x93, 0x97, 0x03, 0x94, 0x28, 0x1f, + 0x80, 0x29, 0x1f, 0x80, 0x28, 0x1f, 0x81, 0x29, + 0x1f, 0x81, 0x28, 0x1f, 0xc2, 0x29, 0x1f, 0xc2, + 0xb9, 0x03, 0x93, 0xb9, 0x03, 0x94, 0x30, 0x1f, + 0x80, 0x31, 0x1f, 0x80, 0x30, 0x1f, 0x81, 0x31, + 0x1f, 0x81, 0x30, 0x1f, 0xc2, 0x31, 0x1f, 0xc2, + 0x99, 0x03, 0x93, 0x99, 0x03, 0x94, 0x38, 0x1f, + 0x80, 0x39, 0x1f, 0x80, 0x38, 0x1f, 0x81, 0x39, + 0x1f, 0x81, 0x38, 0x1f, 0xc2, 0x39, 0x1f, 0xc2, + 0xbf, 0x03, 0x93, 0xbf, 0x03, 0x94, 0x40, 0x1f, + 0x80, 0x40, 0x1f, 0x81, 0x9f, 0x03, 0x13, 0x03, + 0x48, 0x1f, 0x80, 0x48, 0x1f, 0x81, 0xc5, 0x03, + 0x13, 0x03, 0x50, 0x1f, 0x80, 0x50, 0x1f, 0x81, + 0x50, 0x1f, 0xc2, 0xa5, 0x03, 0x94, 0x00, 0x00, + 0x00, 0x59, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x59, + 0x1f, 0x81, 0x00, 0x00, 0x00, 0x59, 0x1f, 0xc2, + 0xc9, 0x03, 0x93, 0xc9, 0x03, 0x94, 0x60, 0x1f, + 0x80, 0x61, 0x1f, 0x80, 0x60, 0x1f, 0x81, 0x61, + 0x1f, 0x81, 0x60, 0x1f, 0xc2, 0x61, 0x1f, 0xc2, + 0xa9, 0x03, 0x93, 0xa9, 0x03, 0x94, 0x68, 0x1f, + 0x80, 0x69, 0x1f, 0x80, 0x68, 0x1f, 0x81, 0x69, + 0x1f, 0x81, 0x68, 0x1f, 0xc2, 0x69, 0x1f, 0xc2, + 0xb1, 0x03, 0x80, 0xb5, 0x03, 0x80, 0xb7, 0x03, + 0x80, 0xb9, 0x03, 0x80, 0xbf, 0x03, 0x80, 0xc5, + 0x03, 0x80, 0xc9, 0x03, 0x80, 0x00, 0x1f, 0x45, + 0x03, 0x20, 0x1f, 0x45, 0x03, 0x60, 0x1f, 0x45, + 0x03, 0xb1, 0x03, 0x86, 0xb1, 0x03, 0x84, 0x70, + 0x1f, 0xc5, 0xb1, 0x03, 0xc5, 0xac, 0x03, 0xc5, + 0x00, 0x00, 0x00, 0xb1, 0x03, 0xc2, 0xb6, 0x1f, + 0xc5, 0x91, 0x03, 0x86, 0x91, 0x03, 0x84, 0x91, + 0x03, 0x80, 0x91, 0x03, 0xc5, 0x20, 0x93, 0x20, + 0x93, 0x20, 0xc2, 0xa8, 0x00, 0xc2, 0x74, 0x1f, + 0xc5, 0xb7, 0x03, 0xc5, 0xae, 0x03, 0xc5, 0x00, + 0x00, 0x00, 0xb7, 0x03, 0xc2, 0xc6, 0x1f, 0xc5, + 0x95, 0x03, 0x80, 0x97, 0x03, 0x80, 0x97, 0x03, + 0xc5, 0xbf, 0x1f, 0x80, 0xbf, 0x1f, 0x81, 0xbf, + 0x1f, 0xc2, 0xb9, 0x03, 0x86, 0xb9, 0x03, 0x84, + 0xca, 0x03, 0x80, 0x00, 0x03, 0xb9, 0x42, 0xca, + 0x42, 0x99, 0x06, 0x99, 0x04, 0x99, 0x00, 0xfe, + 0x1f, 0x80, 0xfe, 0x1f, 0x81, 0xfe, 0x1f, 0xc2, + 0xc5, 0x03, 0x86, 0xc5, 0x03, 0x84, 0xcb, 0x03, + 0x80, 0x00, 0x03, 0xc1, 0x13, 0xc1, 0x14, 0xc5, + 0x42, 0xcb, 0x42, 0xa5, 0x06, 0xa5, 0x04, 0xa5, + 0x00, 0xa1, 0x03, 0x94, 0xa8, 0x00, 0x80, 0x85, + 0x03, 0x60, 0x00, 0x7c, 0x1f, 0xc5, 0xc9, 0x03, + 0xc5, 0xce, 0x03, 0xc5, 0x00, 0x00, 0x00, 0xc9, + 0x03, 0xc2, 0xf6, 0x1f, 0xc5, 0x9f, 0x03, 0x80, + 0xa9, 0x03, 0x80, 0xa9, 0x03, 0xc5, 0x20, 0x94, + 0x02, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0xb3, 0x2e, 0x2e, 0x2e, + 0x2e, 0x2e, 0x32, 0x20, 0x32, 0x20, 0x32, 0x20, + 0x00, 0x00, 0x00, 0x35, 0x20, 0x35, 0x20, 0x35, + 0x20, 0x00, 0x00, 0x00, 0x21, 0x21, 0x00, 0x00, + 0x20, 0x85, 0x3f, 0x3f, 0x3f, 0x21, 0x21, 0x3f, + 0x32, 0x20, 0x00, 0x00, 0x00, 0x00, 0x30, 0x69, + 0x00, 0x00, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x2b, 0x3d, 0x28, 0x29, 0x6e, 0x30, 0x00, 0x2b, + 0x00, 0x12, 0x22, 0x3d, 0x00, 0x28, 0x00, 0x29, + 0x00, 0x00, 0x00, 0x61, 0x00, 0x65, 0x00, 0x6f, + 0x00, 0x78, 0x00, 0x59, 0x02, 0x68, 0x6b, 0x6c, + 0x6d, 0x6e, 0x70, 0x73, 0x74, 0x52, 0x73, 0x61, + 0x2f, 0x63, 0x61, 0x2f, 0x73, 0xb0, 0x00, 0x43, + 0x63, 0x2f, 0x6f, 0x63, 0x2f, 0x75, 0xb0, 0x00, + 0x46, 0x48, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, + 0xdf, 0x01, 0x01, 0x04, 0x24, 0x4e, 0x6f, 0x50, + 0x51, 0x52, 0x52, 0x52, 0x53, 0x4d, 0x54, 0x45, + 0x4c, 0x54, 0x4d, 0x4b, 0x00, 0xc5, 0x00, 0x42, + 0x43, 0x00, 0x65, 0x45, 0x46, 0x00, 0x4d, 0x6f, + 0xd0, 0x05, 0x46, 0x41, 0x58, 0xc0, 0x03, 0xb3, + 0x03, 0x93, 0x03, 0xa0, 0x03, 0x11, 0x22, 0x44, + 0x64, 0x65, 0x69, 0x6a, 0x31, 0xd0, 0x37, 0x31, + 0xd0, 0x39, 0x31, 0xd0, 0x31, 0x30, 0x31, 0xd0, + 0x33, 0x32, 0xd0, 0x33, 0x31, 0xd0, 0x35, 0x32, + 0xd0, 0x35, 0x33, 0xd0, 0x35, 0x34, 0xd0, 0x35, + 0x31, 0xd0, 0x36, 0x35, 0xd0, 0x36, 0x31, 0xd0, + 0x38, 0x33, 0xd0, 0x38, 0x35, 0xd0, 0x38, 0x37, + 0xd0, 0x38, 0x31, 0xd0, 0x49, 0x49, 0x49, 0x49, + 0x49, 0x49, 0x56, 0x56, 0x49, 0x56, 0x49, 0x49, + 0x56, 0x49, 0x49, 0x49, 0x49, 0x58, 0x58, 0x49, + 0x58, 0x49, 0x49, 0x4c, 0x43, 0x44, 0x4d, 0x69, + 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x76, 0x76, + 0x69, 0x76, 0x69, 0x69, 0x76, 0x69, 0x69, 0x69, + 0x69, 0x78, 0x78, 0x69, 0x78, 0x69, 0x69, 0x6c, + 0x63, 0x64, 0x6d, 0x30, 0xd0, 0x33, 0x90, 0x21, + 0xb8, 0x92, 0x21, 0xb8, 0x94, 0x21, 0xb8, 0xd0, + 0x21, 0xb8, 0xd4, 0x21, 0xb8, 0xd2, 0x21, 0xb8, + 0x03, 0x22, 0xb8, 0x08, 0x22, 0xb8, 0x0b, 0x22, + 0xb8, 0x23, 0x22, 0xb8, 0x00, 0x00, 0x00, 0x25, + 0x22, 0xb8, 0x2b, 0x22, 0x2b, 0x22, 0x2b, 0x22, + 0x00, 0x00, 0x00, 0x2e, 0x22, 0x2e, 0x22, 0x2e, + 0x22, 0x00, 0x00, 0x00, 0x3c, 0x22, 0xb8, 0x43, + 0x22, 0xb8, 0x45, 0x22, 0xb8, 0x00, 0x00, 0x00, + 0x48, 0x22, 0xb8, 0x3d, 0x00, 0xb8, 0x00, 0x00, + 0x00, 0x61, 0x22, 0xb8, 0x4d, 0x22, 0xb8, 0x3c, + 0x00, 0xb8, 0x3e, 0x00, 0xb8, 0x64, 0x22, 0xb8, + 0x65, 0x22, 0xb8, 0x72, 0x22, 0xb8, 0x76, 0x22, + 0xb8, 0x7a, 0x22, 0xb8, 0x82, 0x22, 0xb8, 0x86, + 0x22, 0xb8, 0xa2, 0x22, 0xb8, 0xa8, 0x22, 0xb8, + 0xa9, 0x22, 0xb8, 0xab, 0x22, 0xb8, 0x7c, 0x22, + 0xb8, 0x91, 0x22, 0xb8, 0xb2, 0x22, 0x38, 0x03, + 0x08, 0x30, 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x32, 0x30, 0x28, 0x00, 0x31, 0x00, 0x29, 0x00, + 0x28, 0x00, 0x31, 0x00, 0x30, 0x00, 0x29, 0x00, + 0x28, 0x32, 0x30, 0x29, 0x31, 0x00, 0x2e, 0x00, + 0x31, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x32, 0x30, + 0x2e, 0x28, 0x00, 0x61, 0x00, 0x29, 0x00, 0x41, + 0x00, 0x61, 0x00, 0x2b, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x3a, 0x3a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, + 0x3d, 0xdd, 0x2a, 0xb8, 0x6a, 0x56, 0x00, 0x4e, + 0x00, 0x28, 0x36, 0x3f, 0x59, 0x85, 0x8c, 0xa0, + 0xba, 0x3f, 0x51, 0x00, 0x26, 0x2c, 0x43, 0x57, + 0x6c, 0xa1, 0xb6, 0xc1, 0x9b, 0x52, 0x00, 0x5e, + 0x7a, 0x7f, 0x9d, 0xa6, 0xc1, 0xce, 0xe7, 0xb6, + 0x53, 0xc8, 0x53, 0xe3, 0x53, 0xd7, 0x56, 0x1f, + 0x57, 0xeb, 0x58, 0x02, 0x59, 0x0a, 0x59, 0x15, + 0x59, 0x27, 0x59, 0x73, 0x59, 0x50, 0x5b, 0x80, + 0x5b, 0xf8, 0x5b, 0x0f, 0x5c, 0x22, 0x5c, 0x38, + 0x5c, 0x6e, 0x5c, 0x71, 0x5c, 0xdb, 0x5d, 0xe5, + 0x5d, 0xf1, 0x5d, 0xfe, 0x5d, 0x72, 0x5e, 0x7a, + 0x5e, 0x7f, 0x5e, 0xf4, 0x5e, 0xfe, 0x5e, 0x0b, + 0x5f, 0x13, 0x5f, 0x50, 0x5f, 0x61, 0x5f, 0x73, + 0x5f, 0xc3, 0x5f, 0x08, 0x62, 0x36, 0x62, 0x4b, + 0x62, 0x2f, 0x65, 0x34, 0x65, 0x87, 0x65, 0x97, + 0x65, 0xa4, 0x65, 0xb9, 0x65, 0xe0, 0x65, 0xe5, + 0x65, 0xf0, 0x66, 0x08, 0x67, 0x28, 0x67, 0x20, + 0x6b, 0x62, 0x6b, 0x79, 0x6b, 0xb3, 0x6b, 0xcb, + 0x6b, 0xd4, 0x6b, 0xdb, 0x6b, 0x0f, 0x6c, 0x14, + 0x6c, 0x34, 0x6c, 0x6b, 0x70, 0x2a, 0x72, 0x36, + 0x72, 0x3b, 0x72, 0x3f, 0x72, 0x47, 0x72, 0x59, + 0x72, 0x5b, 0x72, 0xac, 0x72, 0x84, 0x73, 0x89, + 0x73, 0xdc, 0x74, 0xe6, 0x74, 0x18, 0x75, 0x1f, + 0x75, 0x28, 0x75, 0x30, 0x75, 0x8b, 0x75, 0x92, + 0x75, 0x76, 0x76, 0x7d, 0x76, 0xae, 0x76, 0xbf, + 0x76, 0xee, 0x76, 0xdb, 0x77, 0xe2, 0x77, 0xf3, + 0x77, 0x3a, 0x79, 0xb8, 0x79, 0xbe, 0x79, 0x74, + 0x7a, 0xcb, 0x7a, 0xf9, 0x7a, 0x73, 0x7c, 0xf8, + 0x7c, 0x36, 0x7f, 0x51, 0x7f, 0x8a, 0x7f, 0xbd, + 0x7f, 0x01, 0x80, 0x0c, 0x80, 0x12, 0x80, 0x33, + 0x80, 0x7f, 0x80, 0x89, 0x80, 0xe3, 0x81, 0x00, + 0x07, 0x10, 0x19, 0x29, 0x38, 0x3c, 0x8b, 0x8f, + 0x95, 0x4d, 0x86, 0x6b, 0x86, 0x40, 0x88, 0x4c, + 0x88, 0x63, 0x88, 0x7e, 0x89, 0x8b, 0x89, 0xd2, + 0x89, 0x00, 0x8a, 0x37, 0x8c, 0x46, 0x8c, 0x55, + 0x8c, 0x78, 0x8c, 0x9d, 0x8c, 0x64, 0x8d, 0x70, + 0x8d, 0xb3, 0x8d, 0xab, 0x8e, 0xca, 0x8e, 0x9b, + 0x8f, 0xb0, 0x8f, 0xb5, 0x8f, 0x91, 0x90, 0x49, + 0x91, 0xc6, 0x91, 0xcc, 0x91, 0xd1, 0x91, 0x77, + 0x95, 0x80, 0x95, 0x1c, 0x96, 0xb6, 0x96, 0xb9, + 0x96, 0xe8, 0x96, 0x51, 0x97, 0x5e, 0x97, 0x62, + 0x97, 0x69, 0x97, 0xcb, 0x97, 0xed, 0x97, 0xf3, + 0x97, 0x01, 0x98, 0xa8, 0x98, 0xdb, 0x98, 0xdf, + 0x98, 0x96, 0x99, 0x99, 0x99, 0xac, 0x99, 0xa8, + 0x9a, 0xd8, 0x9a, 0xdf, 0x9a, 0x25, 0x9b, 0x2f, + 0x9b, 0x32, 0x9b, 0x3c, 0x9b, 0x5a, 0x9b, 0xe5, + 0x9c, 0x75, 0x9e, 0x7f, 0x9e, 0xa5, 0x9e, 0x00, + 0x16, 0x1e, 0x28, 0x2c, 0x54, 0x58, 0x69, 0x6e, + 0x7b, 0x96, 0xa5, 0xad, 0xe8, 0xf7, 0xfb, 0x12, + 0x30, 0x00, 0x00, 0x41, 0x53, 0x44, 0x53, 0x45, + 0x53, 0x4b, 0x30, 0x99, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x4d, 0x30, 0x99, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x4f, 0x30, 0x99, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x51, 0x30, 0x99, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x53, 0x30, 0x99, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x55, 0x30, 0x99, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x57, 0x30, 0x99, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x59, 0x30, 0x99, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x30, 0x99, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x5d, 0x30, 0x99, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x5f, 0x30, 0x99, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x61, 0x30, 0x99, 0x30, 0x64, 0x30, 0x99, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x66, 0x30, 0x99, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x68, 0x30, 0x99, + 0x30, 0x6f, 0x30, 0x99, 0x30, 0x72, 0x30, 0x99, + 0x30, 0x75, 0x30, 0x99, 0x30, 0x78, 0x30, 0x99, + 0x30, 0x7b, 0x30, 0x99, 0x30, 0x46, 0x30, 0x99, + 0x30, 0x20, 0x00, 0x99, 0x30, 0x9d, 0x30, 0x99, + 0x30, 0x88, 0x30, 0x8a, 0x30, 0xab, 0x30, 0x99, + 0x30, 0x00, 0x00, 0x00, 0x00, 0xad, 0x30, 0x99, + 0x30, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x30, 0x99, + 0x30, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x30, 0x99, + 0x30, 0x00, 0x00, 0x00, 0x00, 0xb3, 0x30, 0x99, + 0x30, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x30, 0x99, + 0x30, 0x00, 0x00, 0x00, 0x00, 0xb7, 0x30, 0x99, + 0x30, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x30, 0x99, + 0x30, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x30, 0x99, + 0x30, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x30, 0x99, + 0x30, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x30, 0x99, + 0x30, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x30, 0x99, + 0x30, 0xc4, 0x30, 0x99, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc6, 0x30, 0x99, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc8, 0x30, 0x99, 0x30, 0xcf, 0x30, 0x99, + 0x30, 0xd2, 0x30, 0x99, 0x30, 0xd5, 0x30, 0x99, + 0x30, 0xd8, 0x30, 0x99, 0x30, 0xdb, 0x30, 0x99, + 0x30, 0xa6, 0x30, 0x99, 0x30, 0xef, 0x30, 0x99, + 0x30, 0xfd, 0x30, 0x99, 0x30, 0xb3, 0x30, 0xc8, + 0x30, 0x00, 0x11, 0x00, 0x01, 0xaa, 0x02, 0xac, + 0xad, 0x03, 0x04, 0x05, 0xb0, 0xb1, 0xb2, 0xb3, + 0xb4, 0xb5, 0x1a, 0x06, 0x07, 0x08, 0x21, 0x09, + 0x11, 0x61, 0x11, 0x14, 0x11, 0x4c, 0x00, 0x01, + 0xb3, 0xb4, 0xb8, 0xba, 0xbf, 0xc3, 0xc5, 0x08, + 0xc9, 0xcb, 0x09, 0x0a, 0x0c, 0x0e, 0x0f, 0x13, + 0x15, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1e, 0x22, + 0x2c, 0x33, 0x38, 0xdd, 0xde, 0x43, 0x44, 0x45, + 0x70, 0x71, 0x74, 0x7d, 0x7e, 0x80, 0x8a, 0x8d, + 0x00, 0x4e, 0x8c, 0x4e, 0x09, 0x4e, 0xdb, 0x56, + 0x0a, 0x4e, 0x2d, 0x4e, 0x0b, 0x4e, 0x32, 0x75, + 0x59, 0x4e, 0x19, 0x4e, 0x01, 0x4e, 0x29, 0x59, + 0x30, 0x57, 0xba, 0x4e, 0x28, 0x00, 0x29, 0x00, + 0x00, 0x11, 0x02, 0x11, 0x03, 0x11, 0x05, 0x11, + 0x06, 0x11, 0x07, 0x11, 0x09, 0x11, 0x0b, 0x11, + 0x0c, 0x11, 0x0e, 0x11, 0x0f, 0x11, 0x10, 0x11, + 0x11, 0x11, 0x12, 0x11, 0x28, 0x00, 0x00, 0x11, + 0x61, 0x11, 0x29, 0x00, 0x28, 0x00, 0x02, 0x11, + 0x61, 0x11, 0x29, 0x00, 0x28, 0x00, 0x05, 0x11, + 0x61, 0x11, 0x29, 0x00, 0x28, 0x00, 0x09, 0x11, + 0x61, 0x11, 0x29, 0x00, 0x28, 0x00, 0x0b, 0x11, + 0x61, 0x11, 0x29, 0x00, 0x28, 0x00, 0x0e, 0x11, + 0x61, 0x11, 0x29, 0x00, 0x28, 0x00, 0x0c, 0x11, + 0x6e, 0x11, 0x29, 0x00, 0x28, 0x00, 0x0b, 0x11, + 0x69, 0x11, 0x0c, 0x11, 0x65, 0x11, 0xab, 0x11, + 0x29, 0x00, 0x28, 0x00, 0x0b, 0x11, 0x69, 0x11, + 0x12, 0x11, 0x6e, 0x11, 0x29, 0x00, 0x28, 0x00, + 0x29, 0x00, 0x00, 0x4e, 0x8c, 0x4e, 0x09, 0x4e, + 0xdb, 0x56, 0x94, 0x4e, 0x6d, 0x51, 0x03, 0x4e, + 0x6b, 0x51, 0x5d, 0x4e, 0x41, 0x53, 0x08, 0x67, + 0x6b, 0x70, 0x34, 0x6c, 0x28, 0x67, 0xd1, 0x91, + 0x1f, 0x57, 0xe5, 0x65, 0x2a, 0x68, 0x09, 0x67, + 0x3e, 0x79, 0x0d, 0x54, 0x79, 0x72, 0xa1, 0x8c, + 0x5d, 0x79, 0xb4, 0x52, 0xe3, 0x4e, 0x7c, 0x54, + 0x66, 0x5b, 0xe3, 0x76, 0x01, 0x4f, 0xc7, 0x8c, + 0x54, 0x53, 0x6d, 0x79, 0x11, 0x4f, 0xea, 0x81, + 0xf3, 0x81, 0x4f, 0x55, 0x7c, 0x5e, 0x87, 0x65, + 0x8f, 0x7b, 0x50, 0x54, 0x45, 0x32, 0x00, 0x31, + 0x00, 0x33, 0x00, 0x30, 0x00, 0x00, 0x11, 0x00, + 0x02, 0x03, 0x05, 0x06, 0x07, 0x09, 0x0b, 0x0c, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x00, 0x11, 0x00, + 0x61, 0x02, 0x61, 0x03, 0x61, 0x05, 0x61, 0x06, + 0x61, 0x07, 0x61, 0x09, 0x61, 0x0b, 0x61, 0x0c, + 0x61, 0x0e, 0x11, 0x61, 0x11, 0x00, 0x11, 0x0e, + 0x61, 0xb7, 0x00, 0x69, 0x0b, 0x11, 0x01, 0x63, + 0x00, 0x69, 0x0b, 0x11, 0x6e, 0x11, 0x00, 0x4e, + 0x8c, 0x4e, 0x09, 0x4e, 0xdb, 0x56, 0x94, 0x4e, + 0x6d, 0x51, 0x03, 0x4e, 0x6b, 0x51, 0x5d, 0x4e, + 0x41, 0x53, 0x08, 0x67, 0x6b, 0x70, 0x34, 0x6c, + 0x28, 0x67, 0xd1, 0x91, 0x1f, 0x57, 0xe5, 0x65, + 0x2a, 0x68, 0x09, 0x67, 0x3e, 0x79, 0x0d, 0x54, + 0x79, 0x72, 0xa1, 0x8c, 0x5d, 0x79, 0xb4, 0x52, + 0xd8, 0x79, 0x37, 0x75, 0x73, 0x59, 0x69, 0x90, + 0x2a, 0x51, 0x70, 0x53, 0xe8, 0x6c, 0x05, 0x98, + 0x11, 0x4f, 0x99, 0x51, 0x63, 0x6b, 0x0a, 0x4e, + 0x2d, 0x4e, 0x0b, 0x4e, 0xe6, 0x5d, 0xf3, 0x53, + 0x3b, 0x53, 0x97, 0x5b, 0x66, 0x5b, 0xe3, 0x76, + 0x01, 0x4f, 0xc7, 0x8c, 0x54, 0x53, 0x1c, 0x59, + 0x33, 0x00, 0x36, 0x00, 0x34, 0x00, 0x30, 0x00, + 0x35, 0x30, 0x31, 0x00, 0x08, 0x67, 0x31, 0x00, + 0x30, 0x00, 0x08, 0x67, 0x48, 0x67, 0x65, 0x72, + 0x67, 0x65, 0x56, 0x4c, 0x54, 0x44, 0xa2, 0x30, + 0x00, 0x02, 0x04, 0x06, 0x08, 0x09, 0x0b, 0x0d, + 0x0f, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1b, 0x1d, + 0x1f, 0x22, 0x24, 0x26, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x30, 0x33, 0x36, 0x39, 0x3c, 0x3d, + 0x3e, 0x3f, 0x40, 0x42, 0x44, 0x46, 0x47, 0x48, + 0x49, 0x4a, 0x4b, 0x4d, 0x4e, 0x4f, 0x50, 0xe4, + 0x4e, 0x8c, 0x54, 0xa1, 0x30, 0x01, 0x30, 0x5b, + 0x27, 0x01, 0x4a, 0x34, 0x00, 0x01, 0x52, 0x39, + 0x01, 0xa2, 0x30, 0x00, 0x5a, 0x49, 0xa4, 0x30, + 0x00, 0x27, 0x4f, 0x0c, 0xa4, 0x30, 0x00, 0x4f, + 0x1d, 0x02, 0x05, 0x4f, 0xa8, 0x30, 0x00, 0x11, + 0x07, 0x54, 0x21, 0xa8, 0x30, 0x00, 0x54, 0x03, + 0x54, 0xa4, 0x30, 0x06, 0x4f, 0x15, 0x06, 0x58, + 0x3c, 0x07, 0x00, 0x46, 0xab, 0x30, 0x00, 0x3e, + 0x18, 0x1d, 0x00, 0x42, 0x3f, 0x51, 0xac, 0x30, + 0x00, 0x41, 0x47, 0x00, 0x47, 0x32, 0xae, 0x30, + 0xac, 0x30, 0xae, 0x30, 0x00, 0x1d, 0x4e, 0xad, + 0x30, 0x00, 0x38, 0x3d, 0x4f, 0x01, 0x3e, 0x13, + 0x4f, 0xad, 0x30, 0xed, 0x30, 0xad, 0x30, 0x00, + 0x40, 0x03, 0x3c, 0x33, 0xad, 0x30, 0x00, 0x40, + 0x34, 0x4f, 0x1b, 0x3e, 0xad, 0x30, 0x00, 0x40, + 0x42, 0x16, 0x1b, 0xb0, 0x30, 0x00, 0x39, 0x30, + 0xa4, 0x30, 0x0c, 0x45, 0x3c, 0x24, 0x4f, 0x0b, + 0x47, 0x18, 0x00, 0x49, 0xaf, 0x30, 0x00, 0x3e, + 0x4d, 0x1e, 0xb1, 0x30, 0x00, 0x4b, 0x08, 0x02, + 0x3a, 0x19, 0x02, 0x4b, 0x2c, 0xa4, 0x30, 0x11, + 0x00, 0x0b, 0x47, 0xb5, 0x30, 0x00, 0x3e, 0x0c, + 0x47, 0x2b, 0xb0, 0x30, 0x07, 0x3a, 0x43, 0x00, + 0xb9, 0x30, 0x02, 0x3a, 0x08, 0x02, 0x3a, 0x0f, + 0x07, 0x43, 0x00, 0xb7, 0x30, 0x10, 0x00, 0x12, + 0x34, 0x11, 0x3c, 0x13, 0x17, 0xa4, 0x30, 0x2a, + 0x1f, 0x24, 0x2b, 0x00, 0x20, 0xbb, 0x30, 0x16, + 0x41, 0x00, 0x38, 0x0d, 0xc4, 0x30, 0x0d, 0x38, + 0x00, 0xd0, 0x30, 0x00, 0x2c, 0x1c, 0x1b, 0xa2, + 0x30, 0x32, 0x00, 0x17, 0x26, 0x49, 0xaf, 0x30, + 0x25, 0x00, 0x3c, 0xb3, 0x30, 0x21, 0x00, 0x20, + 0x38, 0xa1, 0x30, 0x34, 0x00, 0x48, 0x22, 0x28, + 0xa3, 0x30, 0x32, 0x00, 0x59, 0x25, 0xa7, 0x30, + 0x2f, 0x1c, 0x10, 0x00, 0x44, 0xd5, 0x30, 0x00, + 0x14, 0x1e, 0xaf, 0x30, 0x29, 0x00, 0x10, 0x4d, + 0x3c, 0xda, 0x30, 0xbd, 0x30, 0xb8, 0x30, 0x22, + 0x13, 0x1a, 0x20, 0x33, 0x0c, 0x22, 0x3b, 0x01, + 0x22, 0x44, 0x00, 0x21, 0x44, 0x07, 0xa4, 0x30, + 0x39, 0x00, 0x4f, 0x24, 0xc8, 0x30, 0x14, 0x23, + 0x00, 0xdb, 0x30, 0xf3, 0x30, 0xc9, 0x30, 0x14, + 0x2a, 0x00, 0x12, 0x33, 0x22, 0x12, 0x33, 0x2a, + 0xa4, 0x30, 0x3a, 0x00, 0x0b, 0x49, 0xa4, 0x30, + 0x3a, 0x00, 0x47, 0x3a, 0x1f, 0x2b, 0x3a, 0x47, + 0x0b, 0xb7, 0x30, 0x27, 0x3c, 0x00, 0x30, 0x3c, + 0xaf, 0x30, 0x30, 0x00, 0x3e, 0x44, 0xdf, 0x30, + 0xea, 0x30, 0xd0, 0x30, 0x0f, 0x1a, 0x00, 0x2c, + 0x1b, 0xe1, 0x30, 0xac, 0x30, 0xac, 0x30, 0x35, + 0x00, 0x1c, 0x47, 0x35, 0x50, 0x1c, 0x3f, 0xa2, + 0x30, 0x42, 0x5a, 0x27, 0x42, 0x5a, 0x49, 0x44, + 0x00, 0x51, 0xc3, 0x30, 0x27, 0x00, 0x05, 0x28, + 0xea, 0x30, 0xe9, 0x30, 0xd4, 0x30, 0x17, 0x00, + 0x28, 0xd6, 0x30, 0x15, 0x26, 0x00, 0x15, 0xec, + 0x30, 0xe0, 0x30, 0xb2, 0x30, 0x3a, 0x41, 0x16, + 0x00, 0x41, 0xc3, 0x30, 0x2c, 0x00, 0x05, 0x30, + 0x00, 0xb9, 0x70, 0x31, 0x00, 0x30, 0x00, 0xb9, + 0x70, 0x32, 0x00, 0x30, 0x00, 0xb9, 0x70, 0x68, + 0x50, 0x61, 0x64, 0x61, 0x41, 0x55, 0x62, 0x61, + 0x72, 0x6f, 0x56, 0x70, 0x63, 0x64, 0x6d, 0x64, + 0x00, 0x6d, 0x00, 0xb2, 0x00, 0x49, 0x00, 0x55, + 0x00, 0x73, 0x5e, 0x10, 0x62, 0x2d, 0x66, 0x8c, + 0x54, 0x27, 0x59, 0x63, 0x6b, 0x0e, 0x66, 0xbb, + 0x6c, 0x2a, 0x68, 0x0f, 0x5f, 0x1a, 0x4f, 0x3e, + 0x79, 0x70, 0x00, 0x41, 0x6e, 0x00, 0x41, 0xbc, + 0x03, 0x41, 0x6d, 0x00, 0x41, 0x6b, 0x00, 0x41, + 0x4b, 0x00, 0x42, 0x4d, 0x00, 0x42, 0x47, 0x00, + 0x42, 0x63, 0x61, 0x6c, 0x6b, 0x63, 0x61, 0x6c, + 0x70, 0x00, 0x46, 0x6e, 0x00, 0x46, 0xbc, 0x03, + 0x46, 0xbc, 0x03, 0x67, 0x6d, 0x00, 0x67, 0x6b, + 0x00, 0x67, 0x48, 0x00, 0x7a, 0x6b, 0x48, 0x7a, + 0x4d, 0x48, 0x7a, 0x47, 0x48, 0x7a, 0x54, 0x48, + 0x7a, 0xbc, 0x03, 0x13, 0x21, 0x6d, 0x00, 0x13, + 0x21, 0x64, 0x00, 0x13, 0x21, 0x6b, 0x00, 0x13, + 0x21, 0x66, 0x00, 0x6d, 0x6e, 0x00, 0x6d, 0xbc, + 0x03, 0x6d, 0x6d, 0x00, 0x6d, 0x63, 0x00, 0x6d, + 0x6b, 0x00, 0x6d, 0x63, 0x00, 0x0a, 0x0a, 0x4f, + 0x00, 0x0a, 0x4f, 0x6d, 0x00, 0xb2, 0x00, 0x63, + 0x00, 0x08, 0x0a, 0x4f, 0x0a, 0x0a, 0x50, 0x00, + 0x0a, 0x50, 0x6d, 0x00, 0xb3, 0x00, 0x6b, 0x00, + 0x6d, 0x00, 0xb3, 0x00, 0x6d, 0x00, 0x15, 0x22, + 0x73, 0x00, 0x6d, 0x00, 0x15, 0x22, 0x73, 0x00, + 0xb2, 0x00, 0x50, 0x61, 0x6b, 0x50, 0x61, 0x4d, + 0x50, 0x61, 0x47, 0x50, 0x61, 0x72, 0x61, 0x64, + 0x72, 0x61, 0x64, 0xd1, 0x73, 0x72, 0x00, 0x61, + 0x00, 0x64, 0x00, 0x15, 0x22, 0x73, 0x00, 0xb2, + 0x00, 0x70, 0x00, 0x73, 0x6e, 0x00, 0x73, 0xbc, + 0x03, 0x73, 0x6d, 0x00, 0x73, 0x70, 0x00, 0x56, + 0x6e, 0x00, 0x56, 0xbc, 0x03, 0x56, 0x6d, 0x00, + 0x56, 0x6b, 0x00, 0x56, 0x4d, 0x00, 0x56, 0x70, + 0x00, 0x57, 0x6e, 0x00, 0x57, 0xbc, 0x03, 0x57, + 0x6d, 0x00, 0x57, 0x6b, 0x00, 0x57, 0x4d, 0x00, + 0x57, 0x6b, 0x00, 0xa9, 0x03, 0x4d, 0x00, 0xa9, + 0x03, 0x61, 0x2e, 0x6d, 0x2e, 0x42, 0x71, 0x63, + 0x63, 0x63, 0x64, 0x43, 0xd1, 0x6b, 0x67, 0x43, + 0x6f, 0x2e, 0x64, 0x42, 0x47, 0x79, 0x68, 0x61, + 0x48, 0x50, 0x69, 0x6e, 0x4b, 0x4b, 0x4b, 0x4d, + 0x6b, 0x74, 0x6c, 0x6d, 0x6c, 0x6e, 0x6c, 0x6f, + 0x67, 0x6c, 0x78, 0x6d, 0x62, 0x6d, 0x69, 0x6c, + 0x6d, 0x6f, 0x6c, 0x50, 0x48, 0x70, 0x2e, 0x6d, + 0x2e, 0x50, 0x50, 0x4d, 0x50, 0x52, 0x73, 0x72, + 0x53, 0x76, 0x57, 0x62, 0x56, 0xd1, 0x6d, 0x41, + 0xd1, 0x6d, 0x31, 0x00, 0xe5, 0x65, 0x31, 0x00, + 0x30, 0x00, 0xe5, 0x65, 0x32, 0x00, 0x30, 0x00, + 0xe5, 0x65, 0x33, 0x00, 0x30, 0x00, 0xe5, 0x65, + 0x67, 0x61, 0x6c, 0x4a, 0x04, 0x4c, 0x04, 0x43, + 0x46, 0x51, 0x26, 0x01, 0x53, 0x01, 0x27, 0xa7, + 0x37, 0xab, 0x6b, 0x02, 0x52, 0xab, 0x48, 0x8c, + 0xf4, 0x66, 0xca, 0x8e, 0xc8, 0x8c, 0xd1, 0x6e, + 0x32, 0x4e, 0xe5, 0x53, 0x9c, 0x9f, 0x9c, 0x9f, + 0x51, 0x59, 0xd1, 0x91, 0x87, 0x55, 0x48, 0x59, + 0xf6, 0x61, 0x69, 0x76, 0x85, 0x7f, 0x3f, 0x86, + 0xba, 0x87, 0xf8, 0x88, 0x8f, 0x90, 0x02, 0x6a, + 0x1b, 0x6d, 0xd9, 0x70, 0xde, 0x73, 0x3d, 0x84, + 0x6a, 0x91, 0xf1, 0x99, 0x82, 0x4e, 0x75, 0x53, + 0x04, 0x6b, 0x1b, 0x72, 0x2d, 0x86, 0x1e, 0x9e, + 0x50, 0x5d, 0xeb, 0x6f, 0xcd, 0x85, 0x64, 0x89, + 0xc9, 0x62, 0xd8, 0x81, 0x1f, 0x88, 0xca, 0x5e, + 0x17, 0x67, 0x6a, 0x6d, 0xfc, 0x72, 0xce, 0x90, + 0x86, 0x4f, 0xb7, 0x51, 0xde, 0x52, 0xc4, 0x64, + 0xd3, 0x6a, 0x10, 0x72, 0xe7, 0x76, 0x01, 0x80, + 0x06, 0x86, 0x5c, 0x86, 0xef, 0x8d, 0x32, 0x97, + 0x6f, 0x9b, 0xfa, 0x9d, 0x8c, 0x78, 0x7f, 0x79, + 0xa0, 0x7d, 0xc9, 0x83, 0x04, 0x93, 0x7f, 0x9e, + 0xd6, 0x8a, 0xdf, 0x58, 0x04, 0x5f, 0x60, 0x7c, + 0x7e, 0x80, 0x62, 0x72, 0xca, 0x78, 0xc2, 0x8c, + 0xf7, 0x96, 0xd8, 0x58, 0x62, 0x5c, 0x13, 0x6a, + 0xda, 0x6d, 0x0f, 0x6f, 0x2f, 0x7d, 0x37, 0x7e, + 0x4b, 0x96, 0xd2, 0x52, 0x8b, 0x80, 0xdc, 0x51, + 0xcc, 0x51, 0x1c, 0x7a, 0xbe, 0x7d, 0xf1, 0x83, + 0x75, 0x96, 0x80, 0x8b, 0xcf, 0x62, 0x02, 0x6a, + 0xfe, 0x8a, 0x39, 0x4e, 0xe7, 0x5b, 0x12, 0x60, + 0x87, 0x73, 0x70, 0x75, 0x17, 0x53, 0xfb, 0x78, + 0xbf, 0x4f, 0xa9, 0x5f, 0x0d, 0x4e, 0xcc, 0x6c, + 0x78, 0x65, 0x22, 0x7d, 0xc3, 0x53, 0x5e, 0x58, + 0x01, 0x77, 0x49, 0x84, 0xaa, 0x8a, 0xba, 0x6b, + 0xb0, 0x8f, 0x88, 0x6c, 0xfe, 0x62, 0xe5, 0x82, + 0xa0, 0x63, 0x65, 0x75, 0xae, 0x4e, 0x69, 0x51, + 0xc9, 0x51, 0x81, 0x68, 0xe7, 0x7c, 0x6f, 0x82, + 0xd2, 0x8a, 0xcf, 0x91, 0xf5, 0x52, 0x42, 0x54, + 0x73, 0x59, 0xec, 0x5e, 0xc5, 0x65, 0xfe, 0x6f, + 0x2a, 0x79, 0xad, 0x95, 0x6a, 0x9a, 0x97, 0x9e, + 0xce, 0x9e, 0x9b, 0x52, 0xc6, 0x66, 0x77, 0x6b, + 0x62, 0x8f, 0x74, 0x5e, 0x90, 0x61, 0x00, 0x62, + 0x9a, 0x64, 0x23, 0x6f, 0x49, 0x71, 0x89, 0x74, + 0xca, 0x79, 0xf4, 0x7d, 0x6f, 0x80, 0x26, 0x8f, + 0xee, 0x84, 0x23, 0x90, 0x4a, 0x93, 0x17, 0x52, + 0xa3, 0x52, 0xbd, 0x54, 0xc8, 0x70, 0xc2, 0x88, + 0xaa, 0x8a, 0xc9, 0x5e, 0xf5, 0x5f, 0x7b, 0x63, + 0xae, 0x6b, 0x3e, 0x7c, 0x75, 0x73, 0xe4, 0x4e, + 0xf9, 0x56, 0xe7, 0x5b, 0xba, 0x5d, 0x1c, 0x60, + 0xb2, 0x73, 0x69, 0x74, 0x9a, 0x7f, 0x46, 0x80, + 0x34, 0x92, 0xf6, 0x96, 0x48, 0x97, 0x18, 0x98, + 0x8b, 0x4f, 0xae, 0x79, 0xb4, 0x91, 0xb8, 0x96, + 0xe1, 0x60, 0x86, 0x4e, 0xda, 0x50, 0xee, 0x5b, + 0x3f, 0x5c, 0x99, 0x65, 0x02, 0x6a, 0xce, 0x71, + 0x42, 0x76, 0xfc, 0x84, 0x7c, 0x90, 0x8d, 0x9f, + 0x88, 0x66, 0x2e, 0x96, 0x89, 0x52, 0x7b, 0x67, + 0xf3, 0x67, 0x41, 0x6d, 0x9c, 0x6e, 0x09, 0x74, + 0x59, 0x75, 0x6b, 0x78, 0x10, 0x7d, 0x5e, 0x98, + 0x6d, 0x51, 0x2e, 0x62, 0x78, 0x96, 0x2b, 0x50, + 0x19, 0x5d, 0xea, 0x6d, 0x2a, 0x8f, 0x8b, 0x5f, + 0x44, 0x61, 0x17, 0x68, 0x87, 0x73, 0x86, 0x96, + 0x29, 0x52, 0x0f, 0x54, 0x65, 0x5c, 0x13, 0x66, + 0x4e, 0x67, 0xa8, 0x68, 0xe5, 0x6c, 0x06, 0x74, + 0xe2, 0x75, 0x79, 0x7f, 0xcf, 0x88, 0xe1, 0x88, + 0xcc, 0x91, 0xe2, 0x96, 0x3f, 0x53, 0xba, 0x6e, + 0x1d, 0x54, 0xd0, 0x71, 0x98, 0x74, 0xfa, 0x85, + 0xa3, 0x96, 0x57, 0x9c, 0x9f, 0x9e, 0x97, 0x67, + 0xcb, 0x6d, 0xe8, 0x81, 0xcb, 0x7a, 0x20, 0x7b, + 0x92, 0x7c, 0xc0, 0x72, 0x99, 0x70, 0x58, 0x8b, + 0xc0, 0x4e, 0x36, 0x83, 0x3a, 0x52, 0x07, 0x52, + 0xa6, 0x5e, 0xd3, 0x62, 0xd6, 0x7c, 0x85, 0x5b, + 0x1e, 0x6d, 0xb4, 0x66, 0x3b, 0x8f, 0x4c, 0x88, + 0x4d, 0x96, 0x8b, 0x89, 0xd3, 0x5e, 0x40, 0x51, + 0xc0, 0x55, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x58, + 0x00, 0x00, 0x74, 0x66, 0x00, 0x00, 0x00, 0x00, + 0xde, 0x51, 0x2a, 0x73, 0xca, 0x76, 0x3c, 0x79, + 0x5e, 0x79, 0x65, 0x79, 0x8f, 0x79, 0x56, 0x97, + 0xbe, 0x7c, 0xbd, 0x7f, 0x00, 0x00, 0x12, 0x86, + 0x00, 0x00, 0xf8, 0x8a, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x90, 0xfd, 0x90, 0xef, 0x98, 0xfc, 0x98, + 0x28, 0x99, 0xb4, 0x9d, 0xde, 0x90, 0xb7, 0x96, + 0xae, 0x4f, 0xe7, 0x50, 0x4d, 0x51, 0xc9, 0x52, + 0xe4, 0x52, 0x51, 0x53, 0x9d, 0x55, 0x06, 0x56, + 0x68, 0x56, 0x40, 0x58, 0xa8, 0x58, 0x64, 0x5c, + 0x6e, 0x5c, 0x94, 0x60, 0x68, 0x61, 0x8e, 0x61, + 0xf2, 0x61, 0x4f, 0x65, 0xe2, 0x65, 0x91, 0x66, + 0x85, 0x68, 0x77, 0x6d, 0x1a, 0x6e, 0x22, 0x6f, + 0x6e, 0x71, 0x2b, 0x72, 0x22, 0x74, 0x91, 0x78, + 0x3e, 0x79, 0x49, 0x79, 0x48, 0x79, 0x50, 0x79, + 0x56, 0x79, 0x5d, 0x79, 0x8d, 0x79, 0x8e, 0x79, + 0x40, 0x7a, 0x81, 0x7a, 0xc0, 0x7b, 0xf4, 0x7d, + 0x09, 0x7e, 0x41, 0x7e, 0x72, 0x7f, 0x05, 0x80, + 0xed, 0x81, 0x79, 0x82, 0x79, 0x82, 0x57, 0x84, + 0x10, 0x89, 0x96, 0x89, 0x01, 0x8b, 0x39, 0x8b, + 0xd3, 0x8c, 0x08, 0x8d, 0xb6, 0x8f, 0x38, 0x90, + 0xe3, 0x96, 0xff, 0x97, 0x3b, 0x98, 0x75, 0x60, + 0xee, 0x42, 0x18, 0x82, 0x02, 0x26, 0x4e, 0xb5, + 0x51, 0x68, 0x51, 0x80, 0x4f, 0x45, 0x51, 0x80, + 0x51, 0xc7, 0x52, 0xfa, 0x52, 0x9d, 0x55, 0x55, + 0x55, 0x99, 0x55, 0xe2, 0x55, 0x5a, 0x58, 0xb3, + 0x58, 0x44, 0x59, 0x54, 0x59, 0x62, 0x5a, 0x28, + 0x5b, 0xd2, 0x5e, 0xd9, 0x5e, 0x69, 0x5f, 0xad, + 0x5f, 0xd8, 0x60, 0x4e, 0x61, 0x08, 0x61, 0x8e, + 0x61, 0x60, 0x61, 0xf2, 0x61, 0x34, 0x62, 0xc4, + 0x63, 0x1c, 0x64, 0x52, 0x64, 0x56, 0x65, 0x74, + 0x66, 0x17, 0x67, 0x1b, 0x67, 0x56, 0x67, 0x79, + 0x6b, 0xba, 0x6b, 0x41, 0x6d, 0xdb, 0x6e, 0xcb, + 0x6e, 0x22, 0x6f, 0x1e, 0x70, 0x6e, 0x71, 0xa7, + 0x77, 0x35, 0x72, 0xaf, 0x72, 0x2a, 0x73, 0x71, + 0x74, 0x06, 0x75, 0x3b, 0x75, 0x1d, 0x76, 0x1f, + 0x76, 0xca, 0x76, 0xdb, 0x76, 0xf4, 0x76, 0x4a, + 0x77, 0x40, 0x77, 0xcc, 0x78, 0xb1, 0x7a, 0xc0, + 0x7b, 0x7b, 0x7c, 0x5b, 0x7d, 0xf4, 0x7d, 0x3e, + 0x7f, 0x05, 0x80, 0x52, 0x83, 0xef, 0x83, 0x79, + 0x87, 0x41, 0x89, 0x86, 0x89, 0x96, 0x89, 0xbf, + 0x8a, 0xf8, 0x8a, 0xcb, 0x8a, 0x01, 0x8b, 0xfe, + 0x8a, 0xed, 0x8a, 0x39, 0x8b, 0x8a, 0x8b, 0x08, + 0x8d, 0x38, 0x8f, 0x72, 0x90, 0x99, 0x91, 0x76, + 0x92, 0x7c, 0x96, 0xe3, 0x96, 0x56, 0x97, 0xdb, + 0x97, 0xff, 0x97, 0x0b, 0x98, 0x3b, 0x98, 0x12, + 0x9b, 0x9c, 0x9f, 0x4a, 0x28, 0x44, 0x28, 0xd5, + 0x33, 0x9d, 0x3b, 0x18, 0x40, 0x39, 0x40, 0x49, + 0x52, 0xd0, 0x5c, 0xd3, 0x7e, 0x43, 0x9f, 0x8e, + 0x9f, 0x2a, 0xa0, 0x02, 0x66, 0x66, 0x66, 0x69, + 0x66, 0x6c, 0x66, 0x66, 0x69, 0x66, 0x66, 0x6c, + 0x7f, 0x01, 0x74, 0x73, 0x00, 0x74, 0x65, 0x05, + 0x0f, 0x11, 0x0f, 0x00, 0x0f, 0x06, 0x19, 0x11, + 0x0f, 0x08, 0xd9, 0x05, 0xb4, 0x05, 0x00, 0x00, + 0x00, 0x00, 0xf2, 0x05, 0xb7, 0x05, 0xd0, 0x05, + 0x12, 0x00, 0x03, 0x04, 0x0b, 0x0c, 0x0d, 0x18, + 0x1a, 0xe9, 0x05, 0xc1, 0x05, 0xe9, 0x05, 0xc2, + 0x05, 0x49, 0xfb, 0xc1, 0x05, 0x49, 0xfb, 0xc2, + 0x05, 0xd0, 0x05, 0xb7, 0x05, 0xd0, 0x05, 0xb8, + 0x05, 0xd0, 0x05, 0xbc, 0x05, 0xd8, 0x05, 0xbc, + 0x05, 0xde, 0x05, 0xbc, 0x05, 0xe0, 0x05, 0xbc, + 0x05, 0xe3, 0x05, 0xbc, 0x05, 0xb9, 0x05, 0x2d, + 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x31, + 0x03, 0x1c, 0x00, 0x18, 0x06, 0x22, 0x06, 0x2b, + 0x06, 0xd0, 0x05, 0xdc, 0x05, 0x71, 0x06, 0x00, + 0x00, 0x0a, 0x0a, 0x0a, 0x0a, 0x0d, 0x0d, 0x0d, + 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x09, 0x09, + 0x09, 0x0e, 0x0e, 0x0e, 0x0e, 0x08, 0x08, 0x08, + 0x08, 0x33, 0x33, 0x33, 0x33, 0x35, 0x35, 0x35, + 0x35, 0x13, 0x13, 0x13, 0x13, 0x12, 0x12, 0x12, + 0x12, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, + 0x16, 0x1c, 0x1c, 0x1b, 0x1b, 0x1d, 0x1d, 0x17, + 0x17, 0x27, 0x27, 0x20, 0x20, 0x38, 0x38, 0x38, + 0x38, 0x3e, 0x3e, 0x3e, 0x3e, 0x42, 0x42, 0x42, + 0x42, 0x40, 0x40, 0x40, 0x40, 0x49, 0x49, 0x4a, + 0x4a, 0x4a, 0x4a, 0x4f, 0x4f, 0x50, 0x50, 0x50, + 0x50, 0x4d, 0x4d, 0x4d, 0x4d, 0x61, 0x61, 0x62, + 0x62, 0x49, 0x06, 0x64, 0x64, 0x64, 0x64, 0x7e, + 0x7e, 0x7d, 0x7d, 0x7f, 0x7f, 0x2e, 0x82, 0x82, + 0x7c, 0x7c, 0x80, 0x80, 0x87, 0x87, 0x87, 0x87, + 0x00, 0x00, 0x26, 0x06, 0x00, 0x01, 0x00, 0x01, + 0x00, 0xaf, 0x00, 0xaf, 0x00, 0x22, 0x00, 0x22, + 0x00, 0xa1, 0x00, 0xa1, 0x00, 0xa0, 0x00, 0xa0, + 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xaa, 0x00, 0xaa, + 0x00, 0xaa, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, + 0xcc, 0x06, 0x00, 0x00, 0x00, 0x00, 0x26, 0x06, + 0x00, 0x06, 0x00, 0x07, 0x00, 0x1f, 0x00, 0x23, + 0x00, 0x24, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, + 0x02, 0x1f, 0x02, 0x23, 0x02, 0x24, 0x04, 0x06, + 0x04, 0x07, 0x04, 0x08, 0x04, 0x1f, 0x04, 0x23, + 0x04, 0x24, 0x05, 0x06, 0x05, 0x1f, 0x05, 0x23, + 0x05, 0x24, 0x06, 0x07, 0x06, 0x1f, 0x07, 0x06, + 0x07, 0x1f, 0x08, 0x06, 0x08, 0x07, 0x08, 0x1f, + 0x0d, 0x06, 0x0d, 0x07, 0x0d, 0x08, 0x0d, 0x1f, + 0x0f, 0x07, 0x0f, 0x1f, 0x10, 0x06, 0x10, 0x07, + 0x10, 0x08, 0x10, 0x1f, 0x11, 0x07, 0x11, 0x1f, + 0x12, 0x1f, 0x13, 0x06, 0x13, 0x1f, 0x14, 0x06, + 0x14, 0x1f, 0x1b, 0x06, 0x1b, 0x07, 0x1b, 0x08, + 0x1b, 0x1f, 0x1b, 0x23, 0x1b, 0x24, 0x1c, 0x07, + 0x1c, 0x1f, 0x1c, 0x23, 0x1c, 0x24, 0x1d, 0x01, + 0x1d, 0x06, 0x1d, 0x07, 0x1d, 0x08, 0x1d, 0x1e, + 0x1d, 0x1f, 0x1d, 0x23, 0x1d, 0x24, 0x1e, 0x06, + 0x1e, 0x07, 0x1e, 0x08, 0x1e, 0x1f, 0x1e, 0x23, + 0x1e, 0x24, 0x1f, 0x06, 0x1f, 0x07, 0x1f, 0x08, + 0x1f, 0x1f, 0x1f, 0x23, 0x1f, 0x24, 0x20, 0x06, + 0x20, 0x07, 0x20, 0x08, 0x20, 0x1f, 0x20, 0x23, + 0x20, 0x24, 0x21, 0x06, 0x21, 0x1f, 0x21, 0x23, + 0x21, 0x24, 0x24, 0x06, 0x24, 0x07, 0x24, 0x08, + 0x24, 0x1f, 0x24, 0x23, 0x24, 0x24, 0x0a, 0x4a, + 0x0b, 0x4a, 0x23, 0x4a, 0x20, 0x00, 0x4c, 0x06, + 0x51, 0x06, 0x51, 0x06, 0xff, 0x00, 0x1f, 0x26, + 0x06, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x1f, 0x00, + 0x20, 0x00, 0x23, 0x00, 0x24, 0x02, 0x0b, 0x02, + 0x0c, 0x02, 0x1f, 0x02, 0x20, 0x02, 0x23, 0x02, + 0x24, 0x04, 0x0b, 0x04, 0x0c, 0x04, 0x1f, 0x26, + 0x06, 0x04, 0x20, 0x04, 0x23, 0x04, 0x24, 0x05, + 0x0b, 0x05, 0x0c, 0x05, 0x1f, 0x05, 0x20, 0x05, + 0x23, 0x05, 0x24, 0x1b, 0x23, 0x1b, 0x24, 0x1c, + 0x23, 0x1c, 0x24, 0x1d, 0x01, 0x1d, 0x1e, 0x1d, + 0x1f, 0x1d, 0x23, 0x1d, 0x24, 0x1e, 0x1f, 0x1e, + 0x23, 0x1e, 0x24, 0x1f, 0x01, 0x1f, 0x1f, 0x20, + 0x0b, 0x20, 0x0c, 0x20, 0x1f, 0x20, 0x20, 0x20, + 0x23, 0x20, 0x24, 0x23, 0x4a, 0x24, 0x0b, 0x24, + 0x0c, 0x24, 0x1f, 0x24, 0x20, 0x24, 0x23, 0x24, + 0x24, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x1f, 0x00, 0x21, 0x02, 0x06, 0x02, 0x07, 0x02, + 0x08, 0x02, 0x1f, 0x02, 0x21, 0x04, 0x06, 0x04, + 0x07, 0x04, 0x08, 0x04, 0x1f, 0x04, 0x21, 0x05, + 0x1f, 0x06, 0x07, 0x06, 0x1f, 0x07, 0x06, 0x07, + 0x1f, 0x08, 0x06, 0x08, 0x1f, 0x0d, 0x06, 0x0d, + 0x07, 0x0d, 0x08, 0x0d, 0x1f, 0x0f, 0x07, 0x0f, + 0x08, 0x0f, 0x1f, 0x10, 0x06, 0x10, 0x07, 0x10, + 0x08, 0x10, 0x1f, 0x11, 0x07, 0x12, 0x1f, 0x13, + 0x06, 0x13, 0x1f, 0x14, 0x06, 0x14, 0x1f, 0x1b, + 0x06, 0x1b, 0x07, 0x1b, 0x08, 0x1b, 0x1f, 0x1c, + 0x07, 0x1c, 0x1f, 0x1d, 0x06, 0x1d, 0x07, 0x1d, + 0x08, 0x1d, 0x1e, 0x1d, 0x1f, 0x1e, 0x06, 0x1e, + 0x07, 0x1e, 0x08, 0x1e, 0x1f, 0x1e, 0x21, 0x1f, + 0x06, 0x1f, 0x07, 0x1f, 0x08, 0x1f, 0x1f, 0x20, + 0x06, 0x20, 0x07, 0x20, 0x08, 0x20, 0x1f, 0x20, + 0x21, 0x21, 0x06, 0x21, 0x1f, 0x21, 0x4a, 0x24, + 0x06, 0x24, 0x07, 0x24, 0x08, 0x24, 0x1f, 0x24, + 0x21, 0x00, 0x1f, 0x00, 0x21, 0x02, 0x1f, 0x02, + 0x21, 0x04, 0x1f, 0x04, 0x21, 0x05, 0x1f, 0x05, + 0x21, 0x0d, 0x1f, 0x0d, 0x21, 0x0e, 0x1f, 0x0e, + 0x21, 0x1d, 0x1e, 0x1d, 0x1f, 0x1e, 0x1f, 0x20, + 0x1f, 0x20, 0x21, 0x24, 0x1f, 0x24, 0x21, 0x40, + 0x06, 0x4e, 0x06, 0x51, 0x06, 0x27, 0x06, 0x10, + 0x22, 0x10, 0x23, 0x12, 0x22, 0x12, 0x23, 0x13, + 0x22, 0x13, 0x23, 0x0c, 0x22, 0x0c, 0x23, 0x0d, + 0x22, 0x0d, 0x23, 0x06, 0x22, 0x06, 0x23, 0x05, + 0x22, 0x05, 0x23, 0x07, 0x22, 0x07, 0x23, 0x0e, + 0x22, 0x0e, 0x23, 0x0f, 0x22, 0x0f, 0x23, 0x0d, + 0x05, 0x0d, 0x06, 0x0d, 0x07, 0x0d, 0x1e, 0x0d, + 0x0a, 0x0c, 0x0a, 0x0e, 0x0a, 0x0f, 0x0a, 0x10, + 0x22, 0x10, 0x23, 0x12, 0x22, 0x12, 0x23, 0x13, + 0x22, 0x13, 0x23, 0x0c, 0x22, 0x0c, 0x23, 0x0d, + 0x22, 0x0d, 0x23, 0x06, 0x22, 0x06, 0x23, 0x05, + 0x22, 0x05, 0x23, 0x07, 0x22, 0x07, 0x23, 0x0e, + 0x22, 0x0e, 0x23, 0x0f, 0x22, 0x0f, 0x23, 0x0d, + 0x05, 0x0d, 0x06, 0x0d, 0x07, 0x0d, 0x1e, 0x0d, + 0x0a, 0x0c, 0x0a, 0x0e, 0x0a, 0x0f, 0x0a, 0x0d, + 0x05, 0x0d, 0x06, 0x0d, 0x07, 0x0d, 0x1e, 0x0c, + 0x20, 0x0d, 0x20, 0x10, 0x1e, 0x0c, 0x05, 0x0c, + 0x06, 0x0c, 0x07, 0x0d, 0x05, 0x0d, 0x06, 0x0d, + 0x07, 0x10, 0x1e, 0x11, 0x1e, 0x00, 0x24, 0x00, + 0x24, 0x2a, 0x06, 0x00, 0x02, 0x1b, 0x00, 0x03, + 0x02, 0x00, 0x03, 0x02, 0x00, 0x03, 0x1b, 0x00, + 0x04, 0x1b, 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x03, + 0x00, 0x1b, 0x04, 0x02, 0x1b, 0x03, 0x02, 0x1b, + 0x03, 0x03, 0x1b, 0x20, 0x03, 0x1b, 0x1f, 0x09, + 0x03, 0x02, 0x09, 0x02, 0x03, 0x09, 0x02, 0x1f, + 0x09, 0x1b, 0x03, 0x09, 0x1b, 0x03, 0x09, 0x1b, + 0x02, 0x09, 0x1b, 0x1b, 0x09, 0x1b, 0x1b, 0x0b, + 0x03, 0x03, 0x0b, 0x03, 0x03, 0x0b, 0x1b, 0x1b, + 0x0a, 0x03, 0x1b, 0x0a, 0x03, 0x1b, 0x0a, 0x02, + 0x20, 0x0a, 0x1b, 0x04, 0x0a, 0x1b, 0x04, 0x0a, + 0x1b, 0x1b, 0x0a, 0x1b, 0x1b, 0x0c, 0x03, 0x1f, + 0x0c, 0x04, 0x1b, 0x0c, 0x04, 0x1b, 0x0d, 0x1b, + 0x03, 0x0d, 0x1b, 0x03, 0x0d, 0x1b, 0x1b, 0x0d, + 0x1b, 0x20, 0x0f, 0x02, 0x1b, 0x0f, 0x1b, 0x1b, + 0x0f, 0x1b, 0x1b, 0x0f, 0x1b, 0x1f, 0x10, 0x1b, + 0x1b, 0x10, 0x1b, 0x20, 0x10, 0x1b, 0x1f, 0x17, + 0x04, 0x1b, 0x17, 0x04, 0x1b, 0x18, 0x1b, 0x03, + 0x18, 0x1b, 0x1b, 0x1a, 0x03, 0x1b, 0x1a, 0x03, + 0x20, 0x1a, 0x03, 0x1f, 0x1a, 0x02, 0x02, 0x1a, + 0x02, 0x02, 0x1a, 0x04, 0x1b, 0x1a, 0x04, 0x1b, + 0x1a, 0x1b, 0x03, 0x1a, 0x1b, 0x03, 0x1b, 0x03, + 0x02, 0x1b, 0x03, 0x1b, 0x1b, 0x03, 0x20, 0x1b, + 0x02, 0x03, 0x1b, 0x02, 0x1b, 0x1b, 0x04, 0x02, + 0x1b, 0x04, 0x1b, 0x28, 0x06, 0x1d, 0x04, 0x06, + 0x1f, 0x1d, 0x04, 0x1f, 0x1d, 0x1d, 0x1e, 0x05, + 0x1d, 0x1e, 0x05, 0x21, 0x1e, 0x04, 0x1d, 0x1e, + 0x04, 0x1d, 0x1e, 0x04, 0x21, 0x1e, 0x1d, 0x22, + 0x1e, 0x1d, 0x21, 0x22, 0x1d, 0x1d, 0x22, 0x1d, + 0x1d, 0x00, 0x06, 0x22, 0x02, 0x04, 0x22, 0x02, + 0x04, 0x21, 0x02, 0x06, 0x22, 0x02, 0x06, 0x21, + 0x02, 0x1d, 0x22, 0x02, 0x1d, 0x21, 0x04, 0x1d, + 0x22, 0x04, 0x05, 0x21, 0x04, 0x1d, 0x21, 0x0b, + 0x06, 0x21, 0x0d, 0x05, 0x22, 0x0c, 0x05, 0x22, + 0x0e, 0x05, 0x22, 0x1c, 0x04, 0x22, 0x1c, 0x1d, + 0x22, 0x22, 0x05, 0x22, 0x22, 0x04, 0x22, 0x22, + 0x1d, 0x22, 0x1d, 0x1d, 0x22, 0x1a, 0x1d, 0x22, + 0x1e, 0x05, 0x22, 0x1a, 0x1d, 0x05, 0x1c, 0x05, + 0x1d, 0x11, 0x1d, 0x22, 0x1b, 0x1d, 0x22, 0x1e, + 0x04, 0x05, 0x1d, 0x06, 0x22, 0x1c, 0x04, 0x1d, + 0x1b, 0x1d, 0x1d, 0x1c, 0x04, 0x1d, 0x1e, 0x04, + 0x05, 0x04, 0x05, 0x22, 0x05, 0x04, 0x22, 0x1d, + 0x04, 0x22, 0x19, 0x1d, 0x22, 0x00, 0x05, 0x22, + 0x1b, 0x1d, 0x1d, 0x11, 0x04, 0x1d, 0x0d, 0x1d, + 0x1d, 0x0b, 0x06, 0x22, 0x1e, 0x04, 0x22, 0x35, + 0x06, 0x00, 0x0f, 0x9d, 0x0d, 0x0f, 0x9d, 0x27, + 0x06, 0x00, 0x1d, 0x1d, 0x20, 0x00, 0x1c, 0x01, + 0x0a, 0x1e, 0x06, 0x1e, 0x08, 0x0e, 0x1d, 0x12, + 0x1e, 0x0a, 0x0c, 0x21, 0x1d, 0x12, 0x1d, 0x23, + 0x20, 0x21, 0x0c, 0x1d, 0x1e, 0x35, 0x06, 0x00, + 0x0f, 0x14, 0x27, 0x06, 0x0e, 0x1d, 0x22, 0xff, + 0x00, 0x1d, 0x1d, 0x20, 0xff, 0x12, 0x1d, 0x23, + 0x20, 0xff, 0x21, 0x0c, 0x1d, 0x1e, 0x27, 0x06, + 0x05, 0x1d, 0xff, 0x05, 0x1d, 0x00, 0x1d, 0x20, + 0x27, 0x06, 0x0a, 0xa5, 0x00, 0x1d, 0x2c, 0x00, + 0x01, 0x30, 0x02, 0x30, 0x3a, 0x00, 0x3b, 0x00, + 0x21, 0x00, 0x3f, 0x00, 0x16, 0x30, 0x17, 0x30, + 0x26, 0x20, 0x13, 0x20, 0x12, 0x01, 0x00, 0x5f, + 0x5f, 0x28, 0x29, 0x7b, 0x7d, 0x08, 0x30, 0x0c, + 0x0d, 0x08, 0x09, 0x02, 0x03, 0x00, 0x01, 0x04, + 0x05, 0x06, 0x07, 0x5b, 0x00, 0x5d, 0x00, 0x3e, + 0x20, 0x3e, 0x20, 0x3e, 0x20, 0x3e, 0x20, 0x5f, + 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x2c, 0x00, 0x01, + 0x30, 0x2e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x3a, + 0x00, 0x3f, 0x00, 0x21, 0x00, 0x14, 0x20, 0x28, + 0x00, 0x29, 0x00, 0x7b, 0x00, 0x7d, 0x00, 0x14, + 0x30, 0x15, 0x30, 0x23, 0x26, 0x2a, 0x2b, 0x2d, + 0x3c, 0x3e, 0x3d, 0x00, 0x5c, 0x24, 0x25, 0x40, + 0x40, 0x06, 0xff, 0x0b, 0x00, 0x0b, 0xff, 0x0c, + 0x20, 0x00, 0x4d, 0x06, 0x40, 0x06, 0xff, 0x0e, + 0x00, 0x0e, 0xff, 0x0f, 0x00, 0x0f, 0xff, 0x10, + 0x00, 0x10, 0xff, 0x11, 0x00, 0x11, 0xff, 0x12, + 0x00, 0x12, 0x21, 0x06, 0x00, 0x01, 0x01, 0x02, + 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x05, + 0x05, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x08, + 0x08, 0x09, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, + 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0d, 0x0d, 0x0d, 0x0d, 0x0e, 0x0e, 0x0f, + 0x0f, 0x10, 0x10, 0x11, 0x11, 0x12, 0x12, 0x12, + 0x12, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, + 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, + 0x16, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, + 0x18, 0x19, 0x19, 0x19, 0x19, 0x20, 0x20, 0x20, + 0x20, 0x21, 0x21, 0x21, 0x21, 0x22, 0x22, 0x22, + 0x22, 0x23, 0x23, 0x23, 0x23, 0x24, 0x24, 0x24, + 0x24, 0x25, 0x25, 0x25, 0x25, 0x26, 0x26, 0x26, + 0x26, 0x27, 0x27, 0x28, 0x28, 0x29, 0x29, 0x29, + 0x29, 0x22, 0x06, 0x22, 0x00, 0x22, 0x00, 0x22, + 0x01, 0x22, 0x01, 0x22, 0x03, 0x22, 0x03, 0x22, + 0x05, 0x22, 0x05, 0x21, 0x00, 0x85, 0x29, 0x01, + 0x30, 0x01, 0x0b, 0x0c, 0x00, 0xfa, 0xf1, 0xa0, + 0xa2, 0xa4, 0xa6, 0xa8, 0xe2, 0xe4, 0xe6, 0xc2, + 0xfb, 0xa1, 0xa3, 0xa5, 0xa7, 0xa9, 0xaa, 0xac, + 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, + 0xbe, 0xc0, 0xc3, 0xc5, 0xc7, 0xc9, 0xca, 0xcb, + 0xcc, 0xcd, 0xce, 0xd1, 0xd4, 0xd7, 0xda, 0xdd, + 0xde, 0xdf, 0xe0, 0xe1, 0xe3, 0xe5, 0xe7, 0xe8, + 0xe9, 0xea, 0xeb, 0xec, 0xee, 0xf2, 0x98, 0x99, + 0x31, 0x31, 0x4f, 0x31, 0x55, 0x31, 0x5b, 0x31, + 0x61, 0x31, 0xa2, 0x00, 0xa3, 0x00, 0xac, 0x00, + 0xaf, 0x00, 0xa6, 0x00, 0xa5, 0x00, 0xa9, 0x20, + 0x00, 0x00, 0x02, 0x25, 0x90, 0x21, 0x91, 0x21, + 0x92, 0x21, 0x93, 0x21, 0xa0, 0x25, 0xcb, 0x25, + 0xd0, 0x02, 0xd1, 0x02, 0xe6, 0x00, 0x99, 0x02, + 0x53, 0x02, 0x00, 0x00, 0xa3, 0x02, 0x66, 0xab, + 0xa5, 0x02, 0xa4, 0x02, 0x56, 0x02, 0x57, 0x02, + 0x91, 0x1d, 0x58, 0x02, 0x5e, 0x02, 0xa9, 0x02, + 0x64, 0x02, 0x62, 0x02, 0x60, 0x02, 0x9b, 0x02, + 0x27, 0x01, 0x9c, 0x02, 0x67, 0x02, 0x84, 0x02, + 0xaa, 0x02, 0xab, 0x02, 0x6c, 0x02, 0x04, 0xdf, + 0x8e, 0xa7, 0x6e, 0x02, 0x05, 0xdf, 0x8e, 0x02, + 0x06, 0xdf, 0xf8, 0x00, 0x76, 0x02, 0x77, 0x02, + 0x71, 0x00, 0x7a, 0x02, 0x08, 0xdf, 0x7d, 0x02, + 0x7e, 0x02, 0x80, 0x02, 0xa8, 0x02, 0xa6, 0x02, + 0x67, 0xab, 0xa7, 0x02, 0x88, 0x02, 0x71, 0x2c, + 0x00, 0x00, 0x8f, 0x02, 0xa1, 0x02, 0xa2, 0x02, + 0x98, 0x02, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, + 0x0a, 0xdf, 0x1e, 0xdf, 0x41, 0x04, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x14, 0x99, 0x10, 0xba, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x9b, 0x10, 0xba, 0x10, + 0x05, 0x05, 0xa5, 0x10, 0xba, 0x10, 0x05, 0x31, + 0x11, 0x27, 0x11, 0x32, 0x11, 0x27, 0x11, 0x55, + 0x47, 0x13, 0x3e, 0x13, 0x47, 0x13, 0x57, 0x13, + 0x55, 0xb9, 0x14, 0xba, 0x14, 0xb9, 0x14, 0xb0, + 0x14, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x14, 0xbd, + 0x14, 0x55, 0x50, 0xb8, 0x15, 0xaf, 0x15, 0xb9, + 0x15, 0xaf, 0x15, 0x55, 0x35, 0x19, 0x30, 0x19, + 0x05, 0x57, 0xd1, 0x65, 0xd1, 0x58, 0xd1, 0x65, + 0xd1, 0x5f, 0xd1, 0x6e, 0xd1, 0x5f, 0xd1, 0x6f, + 0xd1, 0x5f, 0xd1, 0x70, 0xd1, 0x5f, 0xd1, 0x71, + 0xd1, 0x5f, 0xd1, 0x72, 0xd1, 0x55, 0x55, 0x55, + 0x05, 0xb9, 0xd1, 0x65, 0xd1, 0xba, 0xd1, 0x65, + 0xd1, 0xbb, 0xd1, 0x6e, 0xd1, 0xbc, 0xd1, 0x6e, + 0xd1, 0xbb, 0xd1, 0x6f, 0xd1, 0xbc, 0xd1, 0x6f, + 0xd1, 0x55, 0x55, 0x55, 0x41, 0x00, 0x61, 0x00, + 0x41, 0x00, 0x61, 0x00, 0x69, 0x00, 0x41, 0x00, + 0x61, 0x00, 0x41, 0x00, 0x43, 0x44, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x4a, 0x4b, 0x00, 0x00, 0x4e, + 0x4f, 0x50, 0x51, 0x00, 0x53, 0x54, 0x55, 0x56, + 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62, 0x63, 0x64, + 0x00, 0x66, 0x68, 0x00, 0x70, 0x00, 0x41, 0x00, + 0x61, 0x00, 0x41, 0x42, 0x00, 0x44, 0x45, 0x46, + 0x47, 0x4a, 0x00, 0x53, 0x00, 0x61, 0x00, 0x41, + 0x42, 0x00, 0x44, 0x45, 0x46, 0x47, 0x00, 0x49, + 0x4a, 0x4b, 0x4c, 0x4d, 0x00, 0x4f, 0x53, 0x00, + 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, + 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, + 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, + 0x61, 0x00, 0x31, 0x01, 0x37, 0x02, 0x91, 0x03, + 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24, 0x00, + 0x1f, 0x04, 0x20, 0x05, 0x91, 0x03, 0xa3, 0x03, + 0xb1, 0x03, 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04, + 0x20, 0x05, 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03, + 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05, + 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03, + 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05, 0x91, 0x03, + 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24, 0x00, + 0x1f, 0x04, 0x20, 0x05, 0x0b, 0x0c, 0x30, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x27, 0x06, 0x00, 0x01, 0x05, 0x08, 0x2a, 0x06, + 0x1e, 0x08, 0x03, 0x0d, 0x20, 0x19, 0x1a, 0x1b, + 0x1c, 0x09, 0x0f, 0x17, 0x0b, 0x18, 0x07, 0x0a, + 0x00, 0x01, 0x04, 0x06, 0x0c, 0x0e, 0x10, 0x44, + 0x90, 0x77, 0x45, 0x28, 0x06, 0x2c, 0x06, 0x00, + 0x00, 0x47, 0x06, 0x33, 0x06, 0x17, 0x10, 0x11, + 0x12, 0x13, 0x00, 0x06, 0x0e, 0x02, 0x0f, 0x34, + 0x06, 0x2a, 0x06, 0x2b, 0x06, 0x2e, 0x06, 0x00, + 0x00, 0x36, 0x06, 0x00, 0x00, 0x3a, 0x06, 0x2d, + 0x06, 0x00, 0x00, 0x4a, 0x06, 0x00, 0x00, 0x44, + 0x06, 0x00, 0x00, 0x46, 0x06, 0x33, 0x06, 0x39, + 0x06, 0x00, 0x00, 0x35, 0x06, 0x42, 0x06, 0x00, + 0x00, 0x34, 0x06, 0x00, 0x00, 0x00, 0x00, 0x2e, + 0x06, 0x00, 0x00, 0x36, 0x06, 0x00, 0x00, 0x3a, + 0x06, 0x00, 0x00, 0xba, 0x06, 0x00, 0x00, 0x6f, + 0x06, 0x00, 0x00, 0x28, 0x06, 0x2c, 0x06, 0x00, + 0x00, 0x47, 0x06, 0x00, 0x00, 0x00, 0x00, 0x2d, + 0x06, 0x37, 0x06, 0x4a, 0x06, 0x43, 0x06, 0x00, + 0x00, 0x45, 0x06, 0x46, 0x06, 0x33, 0x06, 0x39, + 0x06, 0x41, 0x06, 0x35, 0x06, 0x42, 0x06, 0x00, + 0x00, 0x34, 0x06, 0x2a, 0x06, 0x2b, 0x06, 0x2e, + 0x06, 0x00, 0x00, 0x36, 0x06, 0x38, 0x06, 0x3a, + 0x06, 0x6e, 0x06, 0x00, 0x00, 0xa1, 0x06, 0x27, + 0x06, 0x00, 0x01, 0x05, 0x08, 0x20, 0x21, 0x0b, + 0x06, 0x10, 0x23, 0x2a, 0x06, 0x1a, 0x1b, 0x1c, + 0x09, 0x0f, 0x17, 0x0b, 0x18, 0x07, 0x0a, 0x00, + 0x01, 0x04, 0x06, 0x0c, 0x0e, 0x10, 0x28, 0x06, + 0x2c, 0x06, 0x2f, 0x06, 0x00, 0x00, 0x48, 0x06, + 0x32, 0x06, 0x2d, 0x06, 0x37, 0x06, 0x4a, 0x06, + 0x2a, 0x06, 0x1a, 0x1b, 0x1c, 0x09, 0x0f, 0x17, + 0x0b, 0x18, 0x07, 0x0a, 0x00, 0x01, 0x04, 0x06, + 0x0c, 0x0e, 0x10, 0x30, 0x2e, 0x30, 0x00, 0x2c, + 0x00, 0x28, 0x00, 0x41, 0x00, 0x29, 0x00, 0x14, + 0x30, 0x53, 0x00, 0x15, 0x30, 0x43, 0x52, 0x43, + 0x44, 0x57, 0x5a, 0x41, 0x00, 0x48, 0x56, 0x4d, + 0x56, 0x53, 0x44, 0x53, 0x53, 0x50, 0x50, 0x56, + 0x57, 0x43, 0x4d, 0x43, 0x4d, 0x44, 0x4d, 0x52, + 0x44, 0x4a, 0x4b, 0x30, 0x30, 0x00, 0x68, 0x68, + 0x4b, 0x62, 0x57, 0x5b, 0xcc, 0x53, 0xc7, 0x30, + 0x8c, 0x4e, 0x1a, 0x59, 0xe3, 0x89, 0x29, 0x59, + 0xa4, 0x4e, 0x20, 0x66, 0x21, 0x71, 0x99, 0x65, + 0x4d, 0x52, 0x8c, 0x5f, 0x8d, 0x51, 0xb0, 0x65, + 0x1d, 0x52, 0x42, 0x7d, 0x1f, 0x75, 0xa9, 0x8c, + 0xf0, 0x58, 0x39, 0x54, 0x14, 0x6f, 0x95, 0x62, + 0x55, 0x63, 0x00, 0x4e, 0x09, 0x4e, 0x4a, 0x90, + 0xe6, 0x5d, 0x2d, 0x4e, 0xf3, 0x53, 0x07, 0x63, + 0x70, 0x8d, 0x53, 0x62, 0x81, 0x79, 0x7a, 0x7a, + 0x08, 0x54, 0x80, 0x6e, 0x09, 0x67, 0x08, 0x67, + 0x33, 0x75, 0x72, 0x52, 0xb6, 0x55, 0x4d, 0x91, + 0x14, 0x30, 0x15, 0x30, 0x2c, 0x67, 0x09, 0x4e, + 0x8c, 0x4e, 0x89, 0x5b, 0xb9, 0x70, 0x53, 0x62, + 0xd7, 0x76, 0xdd, 0x52, 0x57, 0x65, 0x97, 0x5f, + 0xef, 0x53, 0x30, 0x00, 0x38, 0x4e, 0x05, 0x00, + 0x09, 0x22, 0x01, 0x60, 0x4f, 0xae, 0x4f, 0xbb, + 0x4f, 0x02, 0x50, 0x7a, 0x50, 0x99, 0x50, 0xe7, + 0x50, 0xcf, 0x50, 0x9e, 0x34, 0x3a, 0x06, 0x4d, + 0x51, 0x54, 0x51, 0x64, 0x51, 0x77, 0x51, 0x1c, + 0x05, 0xb9, 0x34, 0x67, 0x51, 0x8d, 0x51, 0x4b, + 0x05, 0x97, 0x51, 0xa4, 0x51, 0xcc, 0x4e, 0xac, + 0x51, 0xb5, 0x51, 0xdf, 0x91, 0xf5, 0x51, 0x03, + 0x52, 0xdf, 0x34, 0x3b, 0x52, 0x46, 0x52, 0x72, + 0x52, 0x77, 0x52, 0x15, 0x35, 0x02, 0x00, 0x20, + 0x80, 0x80, 0x00, 0x08, 0x00, 0x00, 0xc7, 0x52, + 0x00, 0x02, 0x1d, 0x33, 0x3e, 0x3f, 0x50, 0x82, + 0x8a, 0x93, 0xac, 0xb6, 0xb8, 0xb8, 0xb8, 0x2c, + 0x0a, 0x70, 0x70, 0xca, 0x53, 0xdf, 0x53, 0x63, + 0x0b, 0xeb, 0x53, 0xf1, 0x53, 0x06, 0x54, 0x9e, + 0x54, 0x38, 0x54, 0x48, 0x54, 0x68, 0x54, 0xa2, + 0x54, 0xf6, 0x54, 0x10, 0x55, 0x53, 0x55, 0x63, + 0x55, 0x84, 0x55, 0x84, 0x55, 0x99, 0x55, 0xab, + 0x55, 0xb3, 0x55, 0xc2, 0x55, 0x16, 0x57, 0x06, + 0x56, 0x17, 0x57, 0x51, 0x56, 0x74, 0x56, 0x07, + 0x52, 0xee, 0x58, 0xce, 0x57, 0xf4, 0x57, 0x0d, + 0x58, 0x8b, 0x57, 0x32, 0x58, 0x31, 0x58, 0xac, + 0x58, 0xe4, 0x14, 0xf2, 0x58, 0xf7, 0x58, 0x06, + 0x59, 0x1a, 0x59, 0x22, 0x59, 0x62, 0x59, 0xa8, + 0x16, 0xea, 0x16, 0xec, 0x59, 0x1b, 0x5a, 0x27, + 0x5a, 0xd8, 0x59, 0x66, 0x5a, 0xee, 0x36, 0xfc, + 0x36, 0x08, 0x5b, 0x3e, 0x5b, 0x3e, 0x5b, 0xc8, + 0x19, 0xc3, 0x5b, 0xd8, 0x5b, 0xe7, 0x5b, 0xf3, + 0x5b, 0x18, 0x1b, 0xff, 0x5b, 0x06, 0x5c, 0x53, + 0x5f, 0x22, 0x5c, 0x81, 0x37, 0x60, 0x5c, 0x6e, + 0x5c, 0xc0, 0x5c, 0x8d, 0x5c, 0xe4, 0x1d, 0x43, + 0x5d, 0xe6, 0x1d, 0x6e, 0x5d, 0x6b, 0x5d, 0x7c, + 0x5d, 0xe1, 0x5d, 0xe2, 0x5d, 0x2f, 0x38, 0xfd, + 0x5d, 0x28, 0x5e, 0x3d, 0x5e, 0x69, 0x5e, 0x62, + 0x38, 0x83, 0x21, 0x7c, 0x38, 0xb0, 0x5e, 0xb3, + 0x5e, 0xb6, 0x5e, 0xca, 0x5e, 0x92, 0xa3, 0xfe, + 0x5e, 0x31, 0x23, 0x31, 0x23, 0x01, 0x82, 0x22, + 0x5f, 0x22, 0x5f, 0xc7, 0x38, 0xb8, 0x32, 0xda, + 0x61, 0x62, 0x5f, 0x6b, 0x5f, 0xe3, 0x38, 0x9a, + 0x5f, 0xcd, 0x5f, 0xd7, 0x5f, 0xf9, 0x5f, 0x81, + 0x60, 0x3a, 0x39, 0x1c, 0x39, 0x94, 0x60, 0xd4, + 0x26, 0xc7, 0x60, 0x02, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a, 0x00, + 0x00, 0x02, 0x08, 0x00, 0x80, 0x08, 0x00, 0x00, + 0x08, 0x80, 0x28, 0x80, 0x02, 0x00, 0x00, 0x02, + 0x48, 0x61, 0x00, 0x04, 0x06, 0x04, 0x32, 0x46, + 0x6a, 0x5c, 0x67, 0x96, 0xaa, 0xae, 0xc8, 0xd3, + 0x5d, 0x62, 0x00, 0x54, 0x77, 0xf3, 0x0c, 0x2b, + 0x3d, 0x63, 0xfc, 0x62, 0x68, 0x63, 0x83, 0x63, + 0xe4, 0x63, 0xf1, 0x2b, 0x22, 0x64, 0xc5, 0x63, + 0xa9, 0x63, 0x2e, 0x3a, 0x69, 0x64, 0x7e, 0x64, + 0x9d, 0x64, 0x77, 0x64, 0x6c, 0x3a, 0x4f, 0x65, + 0x6c, 0x65, 0x0a, 0x30, 0xe3, 0x65, 0xf8, 0x66, + 0x49, 0x66, 0x19, 0x3b, 0x91, 0x66, 0x08, 0x3b, + 0xe4, 0x3a, 0x92, 0x51, 0x95, 0x51, 0x00, 0x67, + 0x9c, 0x66, 0xad, 0x80, 0xd9, 0x43, 0x17, 0x67, + 0x1b, 0x67, 0x21, 0x67, 0x5e, 0x67, 0x53, 0x67, + 0xc3, 0x33, 0x49, 0x3b, 0xfa, 0x67, 0x85, 0x67, + 0x52, 0x68, 0x85, 0x68, 0x6d, 0x34, 0x8e, 0x68, + 0x1f, 0x68, 0x14, 0x69, 0x9d, 0x3b, 0x42, 0x69, + 0xa3, 0x69, 0xea, 0x69, 0xa8, 0x6a, 0xa3, 0x36, + 0xdb, 0x6a, 0x18, 0x3c, 0x21, 0x6b, 0xa7, 0x38, + 0x54, 0x6b, 0x4e, 0x3c, 0x72, 0x6b, 0x9f, 0x6b, + 0xba, 0x6b, 0xbb, 0x6b, 0x8d, 0x3a, 0x0b, 0x1d, + 0xfa, 0x3a, 0x4e, 0x6c, 0xbc, 0x3c, 0xbf, 0x6c, + 0xcd, 0x6c, 0x67, 0x6c, 0x16, 0x6d, 0x3e, 0x6d, + 0x77, 0x6d, 0x41, 0x6d, 0x69, 0x6d, 0x78, 0x6d, + 0x85, 0x6d, 0x1e, 0x3d, 0x34, 0x6d, 0x2f, 0x6e, + 0x6e, 0x6e, 0x33, 0x3d, 0xcb, 0x6e, 0xc7, 0x6e, + 0xd1, 0x3e, 0xf9, 0x6d, 0x6e, 0x6f, 0x5e, 0x3f, + 0x8e, 0x3f, 0xc6, 0x6f, 0x39, 0x70, 0x1e, 0x70, + 0x1b, 0x70, 0x96, 0x3d, 0x4a, 0x70, 0x7d, 0x70, + 0x77, 0x70, 0xad, 0x70, 0x25, 0x05, 0x45, 0x71, + 0x63, 0x42, 0x9c, 0x71, 0xab, 0x43, 0x28, 0x72, + 0x35, 0x72, 0x50, 0x72, 0x08, 0x46, 0x80, 0x72, + 0x95, 0x72, 0x35, 0x47, 0x02, 0x20, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, + 0x00, 0x02, 0x02, 0x80, 0x8a, 0x00, 0x00, 0x20, + 0x00, 0x08, 0x0a, 0x00, 0x80, 0x88, 0x80, 0x20, + 0x14, 0x48, 0x7a, 0x73, 0x8b, 0x73, 0xac, 0x3e, + 0xa5, 0x73, 0xb8, 0x3e, 0xb8, 0x3e, 0x47, 0x74, + 0x5c, 0x74, 0x71, 0x74, 0x85, 0x74, 0xca, 0x74, + 0x1b, 0x3f, 0x24, 0x75, 0x36, 0x4c, 0x3e, 0x75, + 0x92, 0x4c, 0x70, 0x75, 0x9f, 0x21, 0x10, 0x76, + 0xa1, 0x4f, 0xb8, 0x4f, 0x44, 0x50, 0xfc, 0x3f, + 0x08, 0x40, 0xf4, 0x76, 0xf3, 0x50, 0xf2, 0x50, + 0x19, 0x51, 0x33, 0x51, 0x1e, 0x77, 0x1f, 0x77, + 0x1f, 0x77, 0x4a, 0x77, 0x39, 0x40, 0x8b, 0x77, + 0x46, 0x40, 0x96, 0x40, 0x1d, 0x54, 0x4e, 0x78, + 0x8c, 0x78, 0xcc, 0x78, 0xe3, 0x40, 0x26, 0x56, + 0x56, 0x79, 0x9a, 0x56, 0xc5, 0x56, 0x8f, 0x79, + 0xeb, 0x79, 0x2f, 0x41, 0x40, 0x7a, 0x4a, 0x7a, + 0x4f, 0x7a, 0x7c, 0x59, 0xa7, 0x5a, 0xa7, 0x5a, + 0xee, 0x7a, 0x02, 0x42, 0xab, 0x5b, 0xc6, 0x7b, + 0xc9, 0x7b, 0x27, 0x42, 0x80, 0x5c, 0xd2, 0x7c, + 0xa0, 0x42, 0xe8, 0x7c, 0xe3, 0x7c, 0x00, 0x7d, + 0x86, 0x5f, 0x63, 0x7d, 0x01, 0x43, 0xc7, 0x7d, + 0x02, 0x7e, 0x45, 0x7e, 0x34, 0x43, 0x28, 0x62, + 0x47, 0x62, 0x59, 0x43, 0xd9, 0x62, 0x7a, 0x7f, + 0x3e, 0x63, 0x95, 0x7f, 0xfa, 0x7f, 0x05, 0x80, + 0xda, 0x64, 0x23, 0x65, 0x60, 0x80, 0xa8, 0x65, + 0x70, 0x80, 0x5f, 0x33, 0xd5, 0x43, 0xb2, 0x80, + 0x03, 0x81, 0x0b, 0x44, 0x3e, 0x81, 0xb5, 0x5a, + 0xa7, 0x67, 0xb5, 0x67, 0x93, 0x33, 0x9c, 0x33, + 0x01, 0x82, 0x04, 0x82, 0x9e, 0x8f, 0x6b, 0x44, + 0x91, 0x82, 0x8b, 0x82, 0x9d, 0x82, 0xb3, 0x52, + 0xb1, 0x82, 0xb3, 0x82, 0xbd, 0x82, 0xe6, 0x82, + 0x3c, 0x6b, 0xe5, 0x82, 0x1d, 0x83, 0x63, 0x83, + 0xad, 0x83, 0x23, 0x83, 0xbd, 0x83, 0xe7, 0x83, + 0x57, 0x84, 0x53, 0x83, 0xca, 0x83, 0xcc, 0x83, + 0xdc, 0x83, 0x36, 0x6c, 0x6b, 0x6d, 0x02, 0x00, + 0x00, 0x20, 0x22, 0x2a, 0xa0, 0x0a, 0x00, 0x20, + 0x80, 0x28, 0x00, 0xa8, 0x20, 0x20, 0x00, 0x02, + 0x80, 0x22, 0x02, 0x8a, 0x08, 0x00, 0xaa, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x28, 0xd5, 0x6c, + 0x2b, 0x45, 0xf1, 0x84, 0xf3, 0x84, 0x16, 0x85, + 0xca, 0x73, 0x64, 0x85, 0x2c, 0x6f, 0x5d, 0x45, + 0x61, 0x45, 0xb1, 0x6f, 0xd2, 0x70, 0x6b, 0x45, + 0x50, 0x86, 0x5c, 0x86, 0x67, 0x86, 0x69, 0x86, + 0xa9, 0x86, 0x88, 0x86, 0x0e, 0x87, 0xe2, 0x86, + 0x79, 0x87, 0x28, 0x87, 0x6b, 0x87, 0x86, 0x87, + 0xd7, 0x45, 0xe1, 0x87, 0x01, 0x88, 0xf9, 0x45, + 0x60, 0x88, 0x63, 0x88, 0x67, 0x76, 0xd7, 0x88, + 0xde, 0x88, 0x35, 0x46, 0xfa, 0x88, 0xbb, 0x34, + 0xae, 0x78, 0x66, 0x79, 0xbe, 0x46, 0xc7, 0x46, + 0xa0, 0x8a, 0xed, 0x8a, 0x8a, 0x8b, 0x55, 0x8c, + 0xa8, 0x7c, 0xab, 0x8c, 0xc1, 0x8c, 0x1b, 0x8d, + 0x77, 0x8d, 0x2f, 0x7f, 0x04, 0x08, 0xcb, 0x8d, + 0xbc, 0x8d, 0xf0, 0x8d, 0xde, 0x08, 0xd4, 0x8e, + 0x38, 0x8f, 0xd2, 0x85, 0xed, 0x85, 0x94, 0x90, + 0xf1, 0x90, 0x11, 0x91, 0x2e, 0x87, 0x1b, 0x91, + 0x38, 0x92, 0xd7, 0x92, 0xd8, 0x92, 0x7c, 0x92, + 0xf9, 0x93, 0x15, 0x94, 0xfa, 0x8b, 0x8b, 0x95, + 0x95, 0x49, 0xb7, 0x95, 0x77, 0x8d, 0xe6, 0x49, + 0xc3, 0x96, 0xb2, 0x5d, 0x23, 0x97, 0x45, 0x91, + 0x1a, 0x92, 0x6e, 0x4a, 0x76, 0x4a, 0xe0, 0x97, + 0x0a, 0x94, 0xb2, 0x4a, 0x96, 0x94, 0x0b, 0x98, + 0x0b, 0x98, 0x29, 0x98, 0xb6, 0x95, 0xe2, 0x98, + 0x33, 0x4b, 0x29, 0x99, 0xa7, 0x99, 0xc2, 0x99, + 0xfe, 0x99, 0xce, 0x4b, 0x30, 0x9b, 0x12, 0x9b, + 0x40, 0x9c, 0xfd, 0x9c, 0xce, 0x4c, 0xed, 0x4c, + 0x67, 0x9d, 0xce, 0xa0, 0xf8, 0x4c, 0x05, 0xa1, + 0x0e, 0xa2, 0x91, 0xa2, 0xbb, 0x9e, 0x56, 0x4d, + 0xf9, 0x9e, 0xfe, 0x9e, 0x05, 0x9f, 0x0f, 0x9f, + 0x16, 0x9f, 0x3b, 0x9f, 0x00, 0xa6, 0x02, 0x88, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x28, + 0x00, 0x08, 0xa0, 0x80, 0xa0, 0x80, 0x00, 0x80, + 0x80, 0x00, 0x0a, 0x88, 0x80, 0x00, 0x80, 0x00, + 0x20, 0x2a, 0x00, 0x80, +}; + +static const uint16_t unicode_comp_table[945] = { + 0x4a01, 0x49c0, 0x4a02, 0x0280, 0x0281, 0x0282, 0x0283, 0x02c0, + 0x02c2, 0x0a00, 0x0284, 0x2442, 0x0285, 0x07c0, 0x0980, 0x0982, + 0x2440, 0x2280, 0x02c4, 0x2282, 0x2284, 0x2286, 0x02c6, 0x02c8, + 0x02ca, 0x02cc, 0x0287, 0x228a, 0x02ce, 0x228c, 0x2290, 0x2292, + 0x228e, 0x0288, 0x0289, 0x028a, 0x2482, 0x0300, 0x0302, 0x0304, + 0x028b, 0x2480, 0x0308, 0x0984, 0x0986, 0x2458, 0x0a02, 0x0306, + 0x2298, 0x229a, 0x229e, 0x0900, 0x030a, 0x22a0, 0x030c, 0x030e, + 0x0840, 0x0310, 0x0312, 0x22a2, 0x22a6, 0x09c0, 0x22a4, 0x22a8, + 0x22aa, 0x028c, 0x028d, 0x028e, 0x0340, 0x0342, 0x0344, 0x0380, + 0x028f, 0x248e, 0x07c2, 0x0988, 0x098a, 0x2490, 0x0346, 0x22ac, + 0x0400, 0x22b0, 0x0842, 0x22b2, 0x0402, 0x22b4, 0x0440, 0x0444, + 0x22b6, 0x0442, 0x22c2, 0x22c0, 0x22c4, 0x22c6, 0x22c8, 0x0940, + 0x04c0, 0x0291, 0x22ca, 0x04c4, 0x22cc, 0x04c2, 0x22d0, 0x22ce, + 0x0292, 0x0293, 0x0294, 0x0295, 0x0540, 0x0542, 0x0a08, 0x0296, + 0x2494, 0x0544, 0x07c4, 0x098c, 0x098e, 0x06c0, 0x2492, 0x0844, + 0x2308, 0x230a, 0x0580, 0x230c, 0x0584, 0x0990, 0x0992, 0x230e, + 0x0582, 0x2312, 0x0586, 0x0588, 0x2314, 0x058c, 0x2316, 0x0998, + 0x058a, 0x231e, 0x0590, 0x2320, 0x099a, 0x058e, 0x2324, 0x2322, + 0x0299, 0x029a, 0x029b, 0x05c0, 0x05c2, 0x05c4, 0x029c, 0x24ac, + 0x05c6, 0x05c8, 0x07c6, 0x0994, 0x0996, 0x0700, 0x24aa, 0x2326, + 0x05ca, 0x232a, 0x2328, 0x2340, 0x2342, 0x2344, 0x2346, 0x05cc, + 0x234a, 0x2348, 0x234c, 0x234e, 0x2350, 0x24b8, 0x029d, 0x05ce, + 0x24be, 0x0a0c, 0x2352, 0x0600, 0x24bc, 0x24ba, 0x0640, 0x2354, + 0x0642, 0x0644, 0x2356, 0x2358, 0x02a0, 0x02a1, 0x02a2, 0x02a3, + 0x02c1, 0x02c3, 0x0a01, 0x02a4, 0x2443, 0x02a5, 0x07c1, 0x0981, + 0x0983, 0x2441, 0x2281, 0x02c5, 0x2283, 0x2285, 0x2287, 0x02c7, + 0x02c9, 0x02cb, 0x02cd, 0x02a7, 0x228b, 0x02cf, 0x228d, 0x2291, + 0x2293, 0x228f, 0x02a8, 0x02a9, 0x02aa, 0x2483, 0x0301, 0x0303, + 0x0305, 0x02ab, 0x2481, 0x0309, 0x0985, 0x0987, 0x2459, 0x0a03, + 0x0307, 0x2299, 0x229b, 0x229f, 0x0901, 0x030b, 0x22a1, 0x030d, + 0x030f, 0x0841, 0x0311, 0x0313, 0x22a3, 0x22a7, 0x09c1, 0x22a5, + 0x22a9, 0x22ab, 0x2380, 0x02ac, 0x02ad, 0x02ae, 0x0341, 0x0343, + 0x0345, 0x02af, 0x248f, 0x07c3, 0x0989, 0x098b, 0x2491, 0x0347, + 0x22ad, 0x0401, 0x0884, 0x22b1, 0x0843, 0x22b3, 0x0403, 0x22b5, + 0x0441, 0x0445, 0x22b7, 0x0443, 0x22c3, 0x22c1, 0x22c5, 0x22c7, + 0x22c9, 0x0941, 0x04c1, 0x02b1, 0x22cb, 0x04c5, 0x22cd, 0x04c3, + 0x22d1, 0x22cf, 0x02b2, 0x02b3, 0x02b4, 0x02b5, 0x0541, 0x0543, + 0x0a09, 0x02b6, 0x2495, 0x0545, 0x07c5, 0x098d, 0x098f, 0x06c1, + 0x2493, 0x0845, 0x2309, 0x230b, 0x0581, 0x230d, 0x0585, 0x0991, + 0x0993, 0x230f, 0x0583, 0x2313, 0x0587, 0x0589, 0x2315, 0x058d, + 0x2317, 0x0999, 0x058b, 0x231f, 0x2381, 0x0591, 0x2321, 0x099b, + 0x058f, 0x2325, 0x2323, 0x02b9, 0x02ba, 0x02bb, 0x05c1, 0x05c3, + 0x05c5, 0x02bc, 0x24ad, 0x05c7, 0x05c9, 0x07c7, 0x0995, 0x0997, + 0x0701, 0x24ab, 0x2327, 0x05cb, 0x232b, 0x2329, 0x2341, 0x2343, + 0x2345, 0x2347, 0x05cd, 0x234b, 0x2349, 0x2382, 0x234d, 0x234f, + 0x2351, 0x24b9, 0x02bd, 0x05cf, 0x24bf, 0x0a0d, 0x2353, 0x02bf, + 0x24bd, 0x2383, 0x24bb, 0x0641, 0x2355, 0x0643, 0x0645, 0x2357, + 0x2359, 0x3101, 0x0c80, 0x2e00, 0x2446, 0x2444, 0x244a, 0x2448, + 0x0800, 0x0942, 0x0944, 0x0804, 0x2288, 0x2486, 0x2484, 0x248a, + 0x2488, 0x22ae, 0x2498, 0x2496, 0x249c, 0x249a, 0x2300, 0x0a06, + 0x2302, 0x0a04, 0x0946, 0x07ce, 0x07ca, 0x07c8, 0x07cc, 0x2447, + 0x2445, 0x244b, 0x2449, 0x0801, 0x0943, 0x0945, 0x0805, 0x2289, + 0x2487, 0x2485, 0x248b, 0x2489, 0x22af, 0x2499, 0x2497, 0x249d, + 0x249b, 0x2301, 0x0a07, 0x2303, 0x0a05, 0x0947, 0x07cf, 0x07cb, + 0x07c9, 0x07cd, 0x2450, 0x244e, 0x2454, 0x2452, 0x2451, 0x244f, + 0x2455, 0x2453, 0x2294, 0x2296, 0x2295, 0x2297, 0x2304, 0x2306, + 0x2305, 0x2307, 0x2318, 0x2319, 0x231a, 0x231b, 0x232c, 0x232d, + 0x232e, 0x232f, 0x2400, 0x24a2, 0x24a0, 0x24a6, 0x24a4, 0x24a8, + 0x24a3, 0x24a1, 0x24a7, 0x24a5, 0x24a9, 0x24b0, 0x24ae, 0x24b4, + 0x24b2, 0x24b6, 0x24b1, 0x24af, 0x24b5, 0x24b3, 0x24b7, 0x0882, + 0x0880, 0x0881, 0x0802, 0x0803, 0x229c, 0x229d, 0x0a0a, 0x0a0b, + 0x0883, 0x0b40, 0x2c8a, 0x0c81, 0x2c89, 0x2c88, 0x2540, 0x2541, + 0x2d00, 0x2e07, 0x0d00, 0x2640, 0x2641, 0x2e80, 0x0d01, 0x26c8, + 0x26c9, 0x2f00, 0x2f84, 0x0d02, 0x2f83, 0x2f82, 0x0d40, 0x26d8, + 0x26d9, 0x3186, 0x0d04, 0x2740, 0x2741, 0x3100, 0x3086, 0x0d06, + 0x3085, 0x3084, 0x0d41, 0x2840, 0x3200, 0x0d07, 0x284f, 0x2850, + 0x3280, 0x2c84, 0x2e03, 0x2857, 0x0d42, 0x2c81, 0x2c80, 0x24c0, + 0x24c1, 0x2c86, 0x2c83, 0x28c0, 0x0d43, 0x25c0, 0x25c1, 0x2940, + 0x0d44, 0x26c0, 0x26c1, 0x2e05, 0x2e02, 0x29c0, 0x0d45, 0x2f05, + 0x2f04, 0x0d80, 0x26d0, 0x26d1, 0x2f80, 0x2a40, 0x0d82, 0x26e0, + 0x26e1, 0x3080, 0x3081, 0x2ac0, 0x0d83, 0x3004, 0x3003, 0x0d81, + 0x27c0, 0x27c1, 0x3082, 0x2b40, 0x0d84, 0x2847, 0x2848, 0x3184, + 0x3181, 0x2f06, 0x0d08, 0x2f81, 0x3005, 0x0d46, 0x3083, 0x3182, + 0x0e00, 0x0e01, 0x0f40, 0x1180, 0x1182, 0x0f03, 0x0f00, 0x11c0, + 0x0f01, 0x1140, 0x1202, 0x1204, 0x0f81, 0x1240, 0x0fc0, 0x1242, + 0x0f80, 0x1244, 0x1284, 0x0f82, 0x1286, 0x1288, 0x128a, 0x12c0, + 0x1282, 0x1181, 0x1183, 0x1043, 0x1040, 0x11c1, 0x1041, 0x1141, + 0x1203, 0x1205, 0x10c1, 0x1241, 0x1000, 0x1243, 0x10c0, 0x1245, + 0x1285, 0x10c2, 0x1287, 0x1289, 0x128b, 0x12c1, 0x1283, 0x1080, + 0x1100, 0x1101, 0x1200, 0x1201, 0x1280, 0x1281, 0x1340, 0x1341, + 0x1343, 0x1342, 0x1344, 0x13c2, 0x1400, 0x13c0, 0x1440, 0x1480, + 0x14c0, 0x1540, 0x1541, 0x1740, 0x1700, 0x1741, 0x17c0, 0x1800, + 0x1802, 0x1801, 0x1840, 0x1880, 0x1900, 0x18c0, 0x18c1, 0x1901, + 0x1940, 0x1942, 0x1941, 0x1980, 0x19c0, 0x19c2, 0x19c1, 0x1c80, + 0x1cc0, 0x1dc0, 0x1f80, 0x2000, 0x2002, 0x2004, 0x2006, 0x2008, + 0x2040, 0x2080, 0x2082, 0x20c0, 0x20c1, 0x2100, 0x22b8, 0x22b9, + 0x2310, 0x2311, 0x231c, 0x231d, 0x244c, 0x2456, 0x244d, 0x2457, + 0x248c, 0x248d, 0x249e, 0x249f, 0x2500, 0x2502, 0x2504, 0x2bc0, + 0x2501, 0x2503, 0x2505, 0x2bc1, 0x2bc2, 0x2bc3, 0x2bc4, 0x2bc5, + 0x2bc6, 0x2bc7, 0x2580, 0x2582, 0x2584, 0x2bc8, 0x2581, 0x2583, + 0x2585, 0x2bc9, 0x2bca, 0x2bcb, 0x2bcc, 0x2bcd, 0x2bce, 0x2bcf, + 0x2600, 0x2602, 0x2601, 0x2603, 0x2680, 0x2682, 0x2681, 0x2683, + 0x26c2, 0x26c4, 0x26c6, 0x2c00, 0x26c3, 0x26c5, 0x26c7, 0x2c01, + 0x2c02, 0x2c03, 0x2c04, 0x2c05, 0x2c06, 0x2c07, 0x26ca, 0x26cc, + 0x26ce, 0x2c08, 0x26cb, 0x26cd, 0x26cf, 0x2c09, 0x2c0a, 0x2c0b, + 0x2c0c, 0x2c0d, 0x2c0e, 0x2c0f, 0x26d2, 0x26d4, 0x26d6, 0x26d3, + 0x26d5, 0x26d7, 0x26da, 0x26dc, 0x26de, 0x26db, 0x26dd, 0x26df, + 0x2700, 0x2702, 0x2701, 0x2703, 0x2780, 0x2782, 0x2781, 0x2783, + 0x2800, 0x2802, 0x2804, 0x2801, 0x2803, 0x2805, 0x2842, 0x2844, + 0x2846, 0x2849, 0x284b, 0x284d, 0x2c40, 0x284a, 0x284c, 0x284e, + 0x2c41, 0x2c42, 0x2c43, 0x2c44, 0x2c45, 0x2c46, 0x2c47, 0x2851, + 0x2853, 0x2855, 0x2c48, 0x2852, 0x2854, 0x2856, 0x2c49, 0x2c4a, + 0x2c4b, 0x2c4c, 0x2c4d, 0x2c4e, 0x2c4f, 0x2c82, 0x2e01, 0x3180, + 0x2c87, 0x2f01, 0x2f02, 0x2f03, 0x2e06, 0x3185, 0x3000, 0x3001, + 0x3002, 0x4640, 0x4641, 0x4680, 0x46c0, 0x46c2, 0x46c1, 0x4700, + 0x4740, 0x4780, 0x47c0, 0x47c2, 0x4900, 0x4940, 0x4980, 0x4982, + 0x4a00, 0x49c2, 0x4a03, 0x4a04, 0x4a40, 0x4a41, 0x4a80, 0x4a81, + 0x4ac0, 0x4ac1, 0x4bc0, 0x4bc1, 0x4b00, 0x4b01, 0x4b40, 0x4b41, + 0x4bc2, 0x4bc3, 0x4b80, 0x4b81, 0x4b82, 0x4b83, 0x4c00, 0x4c01, + 0x4c02, 0x4c03, 0x5600, 0x5440, 0x5442, 0x5444, 0x5446, 0x5448, + 0x544a, 0x544c, 0x544e, 0x5450, 0x5452, 0x5454, 0x5456, 0x5480, + 0x5482, 0x5484, 0x54c0, 0x54c1, 0x5500, 0x5501, 0x5540, 0x5541, + 0x5580, 0x5581, 0x55c0, 0x55c1, 0x5680, 0x58c0, 0x5700, 0x5702, + 0x5704, 0x5706, 0x5708, 0x570a, 0x570c, 0x570e, 0x5710, 0x5712, + 0x5714, 0x5716, 0x5740, 0x5742, 0x5744, 0x5780, 0x5781, 0x57c0, + 0x57c1, 0x5800, 0x5801, 0x5840, 0x5841, 0x5880, 0x5881, 0x5900, + 0x5901, 0x5902, 0x5903, 0x5940, 0x8f40, 0x8f42, 0x8f80, 0x8fc0, + 0x8fc1, 0x9000, 0x9001, 0x9041, 0x9040, 0x9043, 0x9080, 0x9081, + 0x90c0, +}; + +typedef enum { + UNICODE_GC_Cn, + UNICODE_GC_Lu, + UNICODE_GC_Ll, + UNICODE_GC_Lt, + UNICODE_GC_Lm, + UNICODE_GC_Lo, + UNICODE_GC_Mn, + UNICODE_GC_Mc, + UNICODE_GC_Me, + UNICODE_GC_Nd, + UNICODE_GC_Nl, + UNICODE_GC_No, + UNICODE_GC_Sm, + UNICODE_GC_Sc, + UNICODE_GC_Sk, + UNICODE_GC_So, + UNICODE_GC_Pc, + UNICODE_GC_Pd, + UNICODE_GC_Ps, + UNICODE_GC_Pe, + UNICODE_GC_Pi, + UNICODE_GC_Pf, + UNICODE_GC_Po, + UNICODE_GC_Zs, + UNICODE_GC_Zl, + UNICODE_GC_Zp, + UNICODE_GC_Cc, + UNICODE_GC_Cf, + UNICODE_GC_Cs, + UNICODE_GC_Co, + UNICODE_GC_LC, + UNICODE_GC_L, + UNICODE_GC_M, + UNICODE_GC_N, + UNICODE_GC_S, + UNICODE_GC_P, + UNICODE_GC_Z, + UNICODE_GC_C, + UNICODE_GC_COUNT, +} UnicodeGCEnum; + +static const char unicode_gc_name_table[] = + "Cn,Unassigned" "\0" + "Lu,Uppercase_Letter" "\0" + "Ll,Lowercase_Letter" "\0" + "Lt,Titlecase_Letter" "\0" + "Lm,Modifier_Letter" "\0" + "Lo,Other_Letter" "\0" + "Mn,Nonspacing_Mark" "\0" + "Mc,Spacing_Mark" "\0" + "Me,Enclosing_Mark" "\0" + "Nd,Decimal_Number,digit" "\0" + "Nl,Letter_Number" "\0" + "No,Other_Number" "\0" + "Sm,Math_Symbol" "\0" + "Sc,Currency_Symbol" "\0" + "Sk,Modifier_Symbol" "\0" + "So,Other_Symbol" "\0" + "Pc,Connector_Punctuation" "\0" + "Pd,Dash_Punctuation" "\0" + "Ps,Open_Punctuation" "\0" + "Pe,Close_Punctuation" "\0" + "Pi,Initial_Punctuation" "\0" + "Pf,Final_Punctuation" "\0" + "Po,Other_Punctuation" "\0" + "Zs,Space_Separator" "\0" + "Zl,Line_Separator" "\0" + "Zp,Paragraph_Separator" "\0" + "Cc,Control,cntrl" "\0" + "Cf,Format" "\0" + "Cs,Surrogate" "\0" + "Co,Private_Use" "\0" + "LC,Cased_Letter" "\0" + "L,Letter" "\0" + "M,Mark,Combining_Mark" "\0" + "N,Number" "\0" + "S,Symbol" "\0" + "P,Punctuation,punct" "\0" + "Z,Separator" "\0" + "C,Other" "\0" +; + +static const uint8_t unicode_gc_table[3897] = { + 0xfa, 0x18, 0x17, 0x56, 0x0d, 0x56, 0x12, 0x13, + 0x16, 0x0c, 0x16, 0x11, 0x36, 0xe9, 0x02, 0x36, + 0x4c, 0x36, 0xe1, 0x12, 0x12, 0x16, 0x13, 0x0e, + 0x10, 0x0e, 0xe2, 0x12, 0x12, 0x0c, 0x13, 0x0c, + 0xfa, 0x19, 0x17, 0x16, 0x6d, 0x0f, 0x16, 0x0e, + 0x0f, 0x05, 0x14, 0x0c, 0x1b, 0x0f, 0x0e, 0x0f, + 0x0c, 0x2b, 0x0e, 0x02, 0x36, 0x0e, 0x0b, 0x05, + 0x15, 0x4b, 0x16, 0xe1, 0x0f, 0x0c, 0xc1, 0xe2, + 0x10, 0x0c, 0xe2, 0x00, 0xff, 0x30, 0x02, 0xff, + 0x08, 0x02, 0xff, 0x27, 0xbf, 0x22, 0x21, 0x02, + 0x5f, 0x5f, 0x21, 0x22, 0x61, 0x02, 0x21, 0x02, + 0x41, 0x42, 0x21, 0x02, 0x21, 0x02, 0x9f, 0x7f, + 0x02, 0x5f, 0x5f, 0x21, 0x02, 0x5f, 0x3f, 0x02, + 0x05, 0x3f, 0x22, 0x65, 0x01, 0x03, 0x02, 0x01, + 0x03, 0x02, 0x01, 0x03, 0x02, 0xff, 0x08, 0x02, + 0xff, 0x0a, 0x02, 0x01, 0x03, 0x02, 0x5f, 0x21, + 0x02, 0xff, 0x32, 0xa2, 0x21, 0x02, 0x21, 0x22, + 0x5f, 0x41, 0x02, 0xff, 0x00, 0xe2, 0x3c, 0x05, + 0xe2, 0x13, 0xe4, 0x0a, 0x6e, 0xe4, 0x04, 0xee, + 0x06, 0x84, 0xce, 0x04, 0x0e, 0x04, 0xee, 0x09, + 0xe6, 0x68, 0x7f, 0x04, 0x0e, 0x3f, 0x20, 0x04, + 0x42, 0x16, 0x01, 0x60, 0x2e, 0x01, 0x16, 0x41, + 0x00, 0x01, 0x00, 0x21, 0x02, 0xe1, 0x09, 0x00, + 0xe1, 0x01, 0xe2, 0x1b, 0x3f, 0x02, 0x41, 0x42, + 0xff, 0x10, 0x62, 0x3f, 0x0c, 0x5f, 0x3f, 0x02, + 0xe1, 0x2b, 0xe2, 0x28, 0xff, 0x1a, 0x0f, 0x86, + 0x28, 0xff, 0x2f, 0xff, 0x06, 0x02, 0xff, 0x58, + 0x00, 0xe1, 0x1e, 0x20, 0x04, 0xb6, 0xe2, 0x21, + 0x16, 0x11, 0x20, 0x2f, 0x0d, 0x00, 0xe6, 0x25, + 0x11, 0x06, 0x16, 0x26, 0x16, 0x26, 0x16, 0x06, + 0xe0, 0x00, 0xe5, 0x13, 0x60, 0x65, 0x36, 0xe0, + 0x03, 0xbb, 0x4c, 0x36, 0x0d, 0x36, 0x2f, 0xe6, + 0x03, 0x16, 0x1b, 0x56, 0xe5, 0x18, 0x04, 0xe5, + 0x02, 0xe6, 0x0d, 0xe9, 0x02, 0x76, 0x25, 0x06, + 0xe5, 0x5b, 0x16, 0x05, 0xc6, 0x1b, 0x0f, 0xa6, + 0x24, 0x26, 0x0f, 0x66, 0x25, 0xe9, 0x02, 0x45, + 0x2f, 0x05, 0xf6, 0x06, 0x00, 0x1b, 0x05, 0x06, + 0xe5, 0x16, 0xe6, 0x13, 0x20, 0xe5, 0x51, 0xe6, + 0x03, 0x05, 0xe0, 0x06, 0xe9, 0x02, 0xe5, 0x19, + 0xe6, 0x01, 0x24, 0x0f, 0x56, 0x04, 0x20, 0x06, + 0x2d, 0xe5, 0x0e, 0x66, 0x04, 0xe6, 0x01, 0x04, + 0x46, 0x04, 0x86, 0x20, 0xf6, 0x07, 0x00, 0xe5, + 0x11, 0x46, 0x20, 0x16, 0x00, 0xe5, 0x03, 0x80, + 0xe5, 0x10, 0x0e, 0xa5, 0x00, 0x3b, 0xa0, 0xe6, + 0x00, 0xe5, 0x21, 0x04, 0xe6, 0x10, 0x1b, 0xe6, + 0x18, 0x07, 0xe5, 0x2e, 0x06, 0x07, 0x06, 0x05, + 0x47, 0xe6, 0x00, 0x67, 0x06, 0x27, 0x05, 0xc6, + 0xe5, 0x02, 0x26, 0x36, 0xe9, 0x02, 0x16, 0x04, + 0xe5, 0x07, 0x06, 0x27, 0x00, 0xe5, 0x00, 0x20, + 0x25, 0x20, 0xe5, 0x0e, 0x00, 0xc5, 0x00, 0x05, + 0x40, 0x65, 0x20, 0x06, 0x05, 0x47, 0x66, 0x20, + 0x27, 0x20, 0x27, 0x06, 0x05, 0xe0, 0x00, 0x07, + 0x60, 0x25, 0x00, 0x45, 0x26, 0x20, 0xe9, 0x02, + 0x25, 0x2d, 0xab, 0x0f, 0x0d, 0x05, 0x16, 0x06, + 0x20, 0x26, 0x07, 0x00, 0xa5, 0x60, 0x25, 0x20, + 0xe5, 0x0e, 0x00, 0xc5, 0x00, 0x25, 0x00, 0x25, + 0x00, 0x25, 0x20, 0x06, 0x00, 0x47, 0x26, 0x60, + 0x26, 0x20, 0x46, 0x40, 0x06, 0xc0, 0x65, 0x00, + 0x05, 0xc0, 0xe9, 0x02, 0x26, 0x45, 0x06, 0x16, + 0xe0, 0x02, 0x26, 0x07, 0x00, 0xe5, 0x01, 0x00, + 0x45, 0x00, 0xe5, 0x0e, 0x00, 0xc5, 0x00, 0x25, + 0x00, 0x85, 0x20, 0x06, 0x05, 0x47, 0x86, 0x00, + 0x26, 0x07, 0x00, 0x27, 0x06, 0x20, 0x05, 0xe0, + 0x07, 0x25, 0x26, 0x20, 0xe9, 0x02, 0x16, 0x0d, + 0xc0, 0x05, 0xa6, 0x00, 0x06, 0x27, 0x00, 0xe5, + 0x00, 0x20, 0x25, 0x20, 0xe5, 0x0e, 0x00, 0xc5, + 0x00, 0x25, 0x00, 0x85, 0x20, 0x06, 0x05, 0x07, + 0x06, 0x07, 0x66, 0x20, 0x27, 0x20, 0x27, 0x06, + 0xc0, 0x26, 0x07, 0x60, 0x25, 0x00, 0x45, 0x26, + 0x20, 0xe9, 0x02, 0x0f, 0x05, 0xab, 0xe0, 0x02, + 0x06, 0x05, 0x00, 0xa5, 0x40, 0x45, 0x00, 0x65, + 0x40, 0x25, 0x00, 0x05, 0x00, 0x25, 0x40, 0x25, + 0x40, 0x45, 0x40, 0xe5, 0x04, 0x60, 0x27, 0x06, + 0x27, 0x40, 0x47, 0x00, 0x47, 0x06, 0x20, 0x05, + 0xa0, 0x07, 0xe0, 0x06, 0xe9, 0x02, 0x4b, 0xaf, + 0x0d, 0x0f, 0x80, 0x06, 0x47, 0x06, 0xe5, 0x00, + 0x00, 0x45, 0x00, 0xe5, 0x0f, 0x00, 0xe5, 0x08, + 0x20, 0x06, 0x05, 0x46, 0x67, 0x00, 0x46, 0x00, + 0x66, 0xc0, 0x26, 0x00, 0x45, 0x20, 0x05, 0x20, + 0x25, 0x26, 0x20, 0xe9, 0x02, 0xc0, 0x16, 0xcb, + 0x0f, 0x05, 0x06, 0x27, 0x16, 0xe5, 0x00, 0x00, + 0x45, 0x00, 0xe5, 0x0f, 0x00, 0xe5, 0x02, 0x00, + 0x85, 0x20, 0x06, 0x05, 0x07, 0x06, 0x87, 0x00, + 0x06, 0x27, 0x00, 0x27, 0x26, 0xc0, 0x27, 0xa0, + 0x25, 0x00, 0x25, 0x26, 0x20, 0xe9, 0x02, 0x00, + 0x25, 0xe0, 0x05, 0x26, 0x27, 0xe5, 0x01, 0x00, + 0x45, 0x00, 0xe5, 0x21, 0x26, 0x05, 0x47, 0x66, + 0x00, 0x47, 0x00, 0x47, 0x06, 0x05, 0x0f, 0x60, + 0x45, 0x07, 0xcb, 0x45, 0x26, 0x20, 0xe9, 0x02, + 0xeb, 0x01, 0x0f, 0xa5, 0x00, 0x06, 0x27, 0x00, + 0xe5, 0x0a, 0x40, 0xe5, 0x10, 0x00, 0xe5, 0x01, + 0x00, 0x05, 0x20, 0xc5, 0x40, 0x06, 0x60, 0x47, + 0x46, 0x00, 0x06, 0x00, 0xe7, 0x00, 0xa0, 0xe9, + 0x02, 0x20, 0x27, 0x16, 0xe0, 0x04, 0xe5, 0x28, + 0x06, 0x25, 0xc6, 0x60, 0x0d, 0xa5, 0x04, 0xe6, + 0x00, 0x16, 0xe9, 0x02, 0x36, 0xe0, 0x1d, 0x25, + 0x00, 0x05, 0x00, 0x85, 0x00, 0xe5, 0x10, 0x00, + 0x05, 0x00, 0xe5, 0x02, 0x06, 0x25, 0xe6, 0x01, + 0x05, 0x20, 0x85, 0x00, 0x04, 0x00, 0xa6, 0x20, + 0xe9, 0x02, 0x20, 0x65, 0xe0, 0x18, 0x05, 0x4f, + 0xf6, 0x07, 0x0f, 0x16, 0x4f, 0x26, 0xaf, 0xe9, + 0x02, 0xeb, 0x02, 0x0f, 0x06, 0x0f, 0x06, 0x0f, + 0x06, 0x12, 0x13, 0x12, 0x13, 0x27, 0xe5, 0x00, + 0x00, 0xe5, 0x1c, 0x60, 0xe6, 0x06, 0x07, 0x86, + 0x16, 0x26, 0x85, 0xe6, 0x03, 0x00, 0xe6, 0x1c, + 0x00, 0xef, 0x00, 0x06, 0xaf, 0x00, 0x2f, 0x96, + 0x6f, 0x36, 0xe0, 0x1d, 0xe5, 0x23, 0x27, 0x66, + 0x07, 0xa6, 0x07, 0x26, 0x27, 0x26, 0x05, 0xe9, + 0x02, 0xb6, 0xa5, 0x27, 0x26, 0x65, 0x46, 0x05, + 0x47, 0x25, 0xc7, 0x45, 0x66, 0xe5, 0x05, 0x06, + 0x27, 0x26, 0xa7, 0x06, 0x05, 0x07, 0xe9, 0x02, + 0x47, 0x06, 0x2f, 0xe1, 0x1e, 0x00, 0x01, 0x80, + 0x01, 0x20, 0xe2, 0x23, 0x16, 0x04, 0x42, 0xe5, + 0x80, 0xc1, 0x00, 0x65, 0x20, 0xc5, 0x00, 0x05, + 0x00, 0x65, 0x20, 0xe5, 0x21, 0x00, 0x65, 0x20, + 0xe5, 0x19, 0x00, 0x65, 0x20, 0xc5, 0x00, 0x05, + 0x00, 0x65, 0x20, 0xe5, 0x07, 0x00, 0xe5, 0x31, + 0x00, 0x65, 0x20, 0xe5, 0x3b, 0x20, 0x46, 0xf6, + 0x01, 0xeb, 0x0c, 0x40, 0xe5, 0x08, 0xef, 0x02, + 0xa0, 0xe1, 0x4e, 0x20, 0xa2, 0x20, 0x11, 0xe5, + 0x81, 0xe4, 0x0f, 0x16, 0xe5, 0x09, 0x17, 0xe5, + 0x12, 0x12, 0x13, 0x40, 0xe5, 0x43, 0x56, 0x4a, + 0xe5, 0x00, 0xc0, 0xe5, 0x0a, 0x46, 0x07, 0xe0, + 0x01, 0xe5, 0x0b, 0x26, 0x07, 0x36, 0xe0, 0x01, + 0xe5, 0x0a, 0x26, 0xe0, 0x04, 0xe5, 0x05, 0x00, + 0x45, 0x00, 0x26, 0xe0, 0x04, 0xe5, 0x2c, 0x26, + 0x07, 0xc6, 0xe7, 0x00, 0x06, 0x27, 0xe6, 0x03, + 0x56, 0x04, 0x56, 0x0d, 0x05, 0x06, 0x20, 0xe9, + 0x02, 0xa0, 0xeb, 0x02, 0xa0, 0xb6, 0x11, 0x76, + 0x46, 0x1b, 0x06, 0xe9, 0x02, 0xa0, 0xe5, 0x1b, + 0x04, 0xe5, 0x2d, 0xc0, 0x85, 0x26, 0xe5, 0x1a, + 0x06, 0x05, 0x80, 0xe5, 0x3e, 0xe0, 0x02, 0xe5, + 0x17, 0x00, 0x46, 0x67, 0x26, 0x47, 0x60, 0x27, + 0x06, 0xa7, 0x46, 0x60, 0x0f, 0x40, 0x36, 0xe9, + 0x02, 0xe5, 0x16, 0x20, 0x85, 0xe0, 0x03, 0xe5, + 0x24, 0x60, 0xe5, 0x12, 0xa0, 0xe9, 0x02, 0x0b, + 0x40, 0xef, 0x1a, 0xe5, 0x0f, 0x26, 0x27, 0x06, + 0x20, 0x36, 0xe5, 0x2d, 0x07, 0x06, 0x07, 0xc6, + 0x00, 0x06, 0x07, 0x06, 0x27, 0xe6, 0x00, 0xa7, + 0xe6, 0x02, 0x20, 0x06, 0xe9, 0x02, 0xa0, 0xe9, + 0x02, 0xa0, 0xd6, 0x04, 0xb6, 0x20, 0xe6, 0x06, + 0x08, 0xe6, 0x08, 0xe0, 0x29, 0x66, 0x07, 0xe5, + 0x27, 0x06, 0x07, 0x86, 0x07, 0x06, 0x87, 0x06, + 0x27, 0xe5, 0x00, 0x40, 0xe9, 0x02, 0xd6, 0xef, + 0x02, 0xe6, 0x01, 0xef, 0x01, 0x36, 0x00, 0x26, + 0x07, 0xe5, 0x16, 0x07, 0x66, 0x27, 0x26, 0x07, + 0x46, 0x25, 0xe9, 0x02, 0xe5, 0x24, 0x06, 0x07, + 0x26, 0x47, 0x06, 0x07, 0x46, 0x27, 0xe0, 0x00, + 0x76, 0xe5, 0x1c, 0xe7, 0x00, 0xe6, 0x00, 0x27, + 0x26, 0x40, 0x96, 0xe9, 0x02, 0x40, 0x45, 0xe9, + 0x02, 0xe5, 0x16, 0xa4, 0x36, 0xe2, 0x01, 0xc0, + 0xe1, 0x23, 0x20, 0x41, 0xf6, 0x00, 0xe0, 0x00, + 0x46, 0x16, 0xe6, 0x05, 0x07, 0xc6, 0x65, 0x06, + 0xa5, 0x06, 0x25, 0x07, 0x26, 0x05, 0x80, 0xe2, + 0x24, 0xe4, 0x37, 0xe2, 0x05, 0x04, 0xe2, 0x1a, + 0xe4, 0x1d, 0xe6, 0x38, 0xff, 0x80, 0x0e, 0xe2, + 0x00, 0xff, 0x5a, 0xe2, 0x00, 0xe1, 0x00, 0xa2, + 0x20, 0xa1, 0x20, 0xe2, 0x00, 0xe1, 0x00, 0xe2, + 0x00, 0xe1, 0x00, 0xa2, 0x20, 0xa1, 0x20, 0xe2, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x3f, 0xc2, 0xe1, 0x00, 0xe2, 0x06, 0x20, 0xe2, + 0x00, 0xe3, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0xe2, + 0x00, 0xe3, 0x00, 0x82, 0x00, 0x22, 0x61, 0x03, + 0x0e, 0x02, 0x4e, 0x42, 0x00, 0x22, 0x61, 0x03, + 0x4e, 0x62, 0x20, 0x22, 0x61, 0x00, 0x4e, 0xe2, + 0x00, 0x81, 0x4e, 0x20, 0x42, 0x00, 0x22, 0x61, + 0x03, 0x2e, 0x00, 0xf7, 0x03, 0x9b, 0xb1, 0x36, + 0x14, 0x15, 0x12, 0x34, 0x15, 0x12, 0x14, 0xf6, + 0x00, 0x18, 0x19, 0x9b, 0x17, 0xf6, 0x01, 0x14, + 0x15, 0x76, 0x30, 0x56, 0x0c, 0x12, 0x13, 0xf6, + 0x03, 0x0c, 0x16, 0x10, 0xf6, 0x02, 0x17, 0x9b, + 0x00, 0xfb, 0x02, 0x0b, 0x04, 0x20, 0xab, 0x4c, + 0x12, 0x13, 0x04, 0xeb, 0x02, 0x4c, 0x12, 0x13, + 0x00, 0xe4, 0x05, 0x40, 0xed, 0x19, 0xe0, 0x07, + 0xe6, 0x05, 0x68, 0x06, 0x48, 0xe6, 0x04, 0xe0, + 0x07, 0x2f, 0x01, 0x6f, 0x01, 0x2f, 0x02, 0x41, + 0x22, 0x41, 0x02, 0x0f, 0x01, 0x2f, 0x0c, 0x81, + 0xaf, 0x01, 0x0f, 0x01, 0x0f, 0x01, 0x0f, 0x61, + 0x0f, 0x02, 0x61, 0x02, 0x65, 0x02, 0x2f, 0x22, + 0x21, 0x8c, 0x3f, 0x42, 0x0f, 0x0c, 0x2f, 0x02, + 0x0f, 0xeb, 0x08, 0xea, 0x1b, 0x3f, 0x6a, 0x0b, + 0x2f, 0x60, 0x8c, 0x8f, 0x2c, 0x6f, 0x0c, 0x2f, + 0x0c, 0x2f, 0x0c, 0xcf, 0x0c, 0xef, 0x17, 0x2c, + 0x2f, 0x0c, 0x0f, 0x0c, 0xef, 0x17, 0xec, 0x80, + 0x84, 0xef, 0x00, 0x12, 0x13, 0x12, 0x13, 0xef, + 0x0c, 0x2c, 0xcf, 0x12, 0x13, 0xef, 0x49, 0x0c, + 0xef, 0x16, 0xec, 0x11, 0xef, 0x20, 0xac, 0xef, + 0x3d, 0xe0, 0x11, 0xef, 0x03, 0xe0, 0x0d, 0xeb, + 0x34, 0xef, 0x46, 0xeb, 0x0e, 0xef, 0x80, 0x2f, + 0x0c, 0xef, 0x01, 0x0c, 0xef, 0x2e, 0xec, 0x00, + 0xef, 0x67, 0x0c, 0xef, 0x80, 0x70, 0x12, 0x13, + 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, + 0x12, 0x13, 0x12, 0x13, 0xeb, 0x16, 0xef, 0x24, + 0x8c, 0x12, 0x13, 0xec, 0x17, 0x12, 0x13, 0x12, + 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0xec, + 0x08, 0xef, 0x80, 0x78, 0xec, 0x7b, 0x12, 0x13, + 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, + 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, + 0x12, 0x13, 0x12, 0x13, 0xec, 0x37, 0x12, 0x13, + 0x12, 0x13, 0xec, 0x18, 0x12, 0x13, 0xec, 0x80, + 0x7a, 0xef, 0x28, 0xec, 0x0d, 0x2f, 0xac, 0xef, + 0x1f, 0x20, 0xef, 0x18, 0x00, 0xef, 0x61, 0xe1, + 0x28, 0xe2, 0x28, 0x5f, 0x21, 0x22, 0xdf, 0x41, + 0x02, 0x3f, 0x02, 0x3f, 0x82, 0x24, 0x41, 0x02, + 0xff, 0x5a, 0x02, 0xaf, 0x7f, 0x46, 0x3f, 0x80, + 0x76, 0x0b, 0x36, 0xe2, 0x1e, 0x00, 0x02, 0x80, + 0x02, 0x20, 0xe5, 0x30, 0xc0, 0x04, 0x16, 0xe0, + 0x06, 0x06, 0xe5, 0x0f, 0xe0, 0x01, 0xc5, 0x00, + 0xc5, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xc5, 0x00, + 0xc5, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xe6, 0x18, + 0x36, 0x14, 0x15, 0x14, 0x15, 0x56, 0x14, 0x15, + 0x16, 0x14, 0x15, 0xf6, 0x01, 0x11, 0x36, 0x11, + 0x16, 0x14, 0x15, 0x36, 0x14, 0x15, 0x12, 0x13, + 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x96, 0x04, + 0xf6, 0x02, 0x31, 0x76, 0x11, 0x16, 0x12, 0xf6, + 0x05, 0x2f, 0x56, 0x12, 0x13, 0x12, 0x13, 0x12, + 0x13, 0x12, 0x13, 0x11, 0xe0, 0x1a, 0xef, 0x12, + 0x00, 0xef, 0x51, 0xe0, 0x04, 0xef, 0x80, 0x4e, + 0xe0, 0x12, 0xef, 0x04, 0x60, 0x17, 0x56, 0x0f, + 0x04, 0x05, 0x0a, 0x12, 0x13, 0x12, 0x13, 0x12, + 0x13, 0x12, 0x13, 0x12, 0x13, 0x2f, 0x12, 0x13, + 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x11, 0x12, + 0x33, 0x0f, 0xea, 0x01, 0x66, 0x27, 0x11, 0x84, + 0x2f, 0x4a, 0x04, 0x05, 0x16, 0x2f, 0x00, 0xe5, + 0x4e, 0x20, 0x26, 0x2e, 0x24, 0x05, 0x11, 0xe5, + 0x52, 0x16, 0x44, 0x05, 0x80, 0xe5, 0x23, 0x00, + 0xe5, 0x56, 0x00, 0x2f, 0x6b, 0xef, 0x02, 0xe5, + 0x18, 0xef, 0x1c, 0xe0, 0x04, 0xe5, 0x08, 0xef, + 0x17, 0x00, 0xeb, 0x02, 0xef, 0x16, 0xeb, 0x00, + 0x0f, 0xeb, 0x07, 0xef, 0x18, 0xeb, 0x02, 0xef, + 0x1f, 0xeb, 0x07, 0xef, 0x80, 0xb8, 0xe5, 0x99, + 0x38, 0xef, 0x38, 0xe5, 0xc0, 0x11, 0x8d, 0x04, + 0xe5, 0x83, 0xef, 0x40, 0xef, 0x2f, 0xe0, 0x01, + 0xe5, 0x20, 0xa4, 0x36, 0xe5, 0x80, 0x84, 0x04, + 0x56, 0xe5, 0x08, 0xe9, 0x02, 0x25, 0xe0, 0x0c, + 0xff, 0x26, 0x05, 0x06, 0x48, 0x16, 0xe6, 0x02, + 0x16, 0x04, 0xff, 0x14, 0x24, 0x26, 0xe5, 0x3e, + 0xea, 0x02, 0x26, 0xb6, 0xe0, 0x00, 0xee, 0x0f, + 0xe4, 0x01, 0x2e, 0xff, 0x06, 0x22, 0xff, 0x36, + 0x04, 0xe2, 0x00, 0x9f, 0xff, 0x02, 0x04, 0x2e, + 0x7f, 0x05, 0x7f, 0x22, 0xff, 0x0d, 0x61, 0x02, + 0x81, 0x02, 0xff, 0x07, 0x41, 0x02, 0x3f, 0x80, + 0x3f, 0x00, 0x02, 0x00, 0x02, 0x7f, 0xe0, 0x10, + 0x44, 0x3f, 0x05, 0x24, 0x02, 0xc5, 0x06, 0x45, + 0x06, 0x65, 0x06, 0xe5, 0x0f, 0x27, 0x26, 0x07, + 0x6f, 0x06, 0x40, 0xab, 0x2f, 0x0d, 0x0f, 0xa0, + 0xe5, 0x2c, 0x76, 0xe0, 0x00, 0x27, 0xe5, 0x2a, + 0xe7, 0x08, 0x26, 0xe0, 0x00, 0x36, 0xe9, 0x02, + 0xa0, 0xe6, 0x0a, 0xa5, 0x56, 0x05, 0x16, 0x25, + 0x06, 0xe9, 0x02, 0xe5, 0x14, 0xe6, 0x00, 0x36, + 0xe5, 0x0f, 0xe6, 0x03, 0x27, 0xe0, 0x03, 0x16, + 0xe5, 0x15, 0x40, 0x46, 0x07, 0xe5, 0x27, 0x06, + 0x27, 0x66, 0x27, 0x26, 0x47, 0xf6, 0x05, 0x00, + 0x04, 0xe9, 0x02, 0x60, 0x36, 0x85, 0x06, 0x04, + 0xe5, 0x01, 0xe9, 0x02, 0x85, 0x00, 0xe5, 0x21, + 0xa6, 0x27, 0x26, 0x27, 0x26, 0xe0, 0x01, 0x45, + 0x06, 0xe5, 0x00, 0x06, 0x07, 0x20, 0xe9, 0x02, + 0x20, 0x76, 0xe5, 0x08, 0x04, 0xa5, 0x4f, 0x05, + 0x07, 0x06, 0x07, 0xe5, 0x2a, 0x06, 0x05, 0x46, + 0x25, 0x26, 0x85, 0x26, 0x05, 0x06, 0x05, 0xe0, + 0x10, 0x25, 0x04, 0x36, 0xe5, 0x03, 0x07, 0x26, + 0x27, 0x36, 0x05, 0x24, 0x07, 0x06, 0xe0, 0x02, + 0xa5, 0x20, 0xa5, 0x20, 0xa5, 0xe0, 0x01, 0xc5, + 0x00, 0xc5, 0x00, 0xe2, 0x23, 0x0e, 0x64, 0xe2, + 0x01, 0x04, 0x2e, 0x60, 0xe2, 0x48, 0xe5, 0x1b, + 0x27, 0x06, 0x27, 0x06, 0x27, 0x16, 0x07, 0x06, + 0x20, 0xe9, 0x02, 0xa0, 0xe5, 0xab, 0x1c, 0xe0, + 0x04, 0xe5, 0x0f, 0x60, 0xe5, 0x29, 0x60, 0xfc, + 0x87, 0x78, 0xfd, 0x98, 0x78, 0xe5, 0x80, 0xe6, + 0x20, 0xe5, 0x62, 0xe0, 0x1e, 0xc2, 0xe0, 0x04, + 0x82, 0x80, 0x05, 0x06, 0xe5, 0x02, 0x0c, 0xe5, + 0x05, 0x00, 0x85, 0x00, 0x05, 0x00, 0x25, 0x00, + 0x25, 0x00, 0xe5, 0x64, 0xee, 0x09, 0xe0, 0x08, + 0xe5, 0x80, 0xe3, 0x13, 0x12, 0xef, 0x08, 0xe5, + 0x38, 0x20, 0xe5, 0x2e, 0xc0, 0x0f, 0xe0, 0x18, + 0xe5, 0x04, 0x0d, 0x4f, 0xe6, 0x08, 0xd6, 0x12, + 0x13, 0x16, 0xa0, 0xe6, 0x08, 0x16, 0x31, 0x30, + 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, + 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, + 0x36, 0x12, 0x13, 0x76, 0x50, 0x56, 0x00, 0x76, + 0x11, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x56, + 0x0c, 0x11, 0x4c, 0x00, 0x16, 0x0d, 0x36, 0x60, + 0x85, 0x00, 0xe5, 0x7f, 0x20, 0x1b, 0x00, 0x56, + 0x0d, 0x56, 0x12, 0x13, 0x16, 0x0c, 0x16, 0x11, + 0x36, 0xe9, 0x02, 0x36, 0x4c, 0x36, 0xe1, 0x12, + 0x12, 0x16, 0x13, 0x0e, 0x10, 0x0e, 0xe2, 0x12, + 0x12, 0x0c, 0x13, 0x0c, 0x12, 0x13, 0x16, 0x12, + 0x13, 0x36, 0xe5, 0x02, 0x04, 0xe5, 0x25, 0x24, + 0xe5, 0x17, 0x40, 0xa5, 0x20, 0xa5, 0x20, 0xa5, + 0x20, 0x45, 0x40, 0x2d, 0x0c, 0x0e, 0x0f, 0x2d, + 0x00, 0x0f, 0x6c, 0x2f, 0xe0, 0x02, 0x5b, 0x2f, + 0x20, 0xe5, 0x04, 0x00, 0xe5, 0x12, 0x00, 0xe5, + 0x0b, 0x00, 0x25, 0x00, 0xe5, 0x07, 0x20, 0xe5, + 0x06, 0xe0, 0x1a, 0xe5, 0x73, 0x80, 0x56, 0x60, + 0xeb, 0x25, 0x40, 0xef, 0x01, 0xea, 0x2d, 0x6b, + 0xef, 0x09, 0x2b, 0x4f, 0x00, 0xef, 0x05, 0x40, + 0x0f, 0xe0, 0x27, 0xef, 0x25, 0x06, 0xe0, 0x7a, + 0xe5, 0x15, 0x40, 0xe5, 0x29, 0xe0, 0x07, 0x06, + 0xeb, 0x13, 0x60, 0xe5, 0x18, 0x6b, 0xe0, 0x01, + 0xe5, 0x0c, 0x0a, 0xe5, 0x00, 0x0a, 0x80, 0xe5, + 0x1e, 0x86, 0x80, 0xe5, 0x16, 0x00, 0x16, 0xe5, + 0x1c, 0x60, 0xe5, 0x00, 0x16, 0x8a, 0xe0, 0x22, + 0xe1, 0x20, 0xe2, 0x20, 0xe5, 0x46, 0x20, 0xe9, + 0x02, 0xa0, 0xe1, 0x1c, 0x60, 0xe2, 0x1c, 0x60, + 0xe5, 0x20, 0xe0, 0x00, 0xe5, 0x2c, 0xe0, 0x03, + 0x16, 0xe1, 0x03, 0x00, 0xe1, 0x07, 0x00, 0xc1, + 0x00, 0x21, 0x00, 0xe2, 0x03, 0x00, 0xe2, 0x07, + 0x00, 0xc2, 0x00, 0x22, 0xe0, 0x3b, 0xe5, 0x80, + 0xaf, 0xe0, 0x01, 0xe5, 0x0e, 0xe0, 0x02, 0xe5, + 0x00, 0xe0, 0x10, 0xa4, 0x00, 0xe4, 0x22, 0x00, + 0xe4, 0x01, 0xe0, 0x3d, 0xa5, 0x20, 0x05, 0x00, + 0xe5, 0x24, 0x00, 0x25, 0x40, 0x05, 0x20, 0xe5, + 0x0f, 0x00, 0x16, 0xeb, 0x00, 0xe5, 0x0f, 0x2f, + 0xcb, 0xe5, 0x17, 0xe0, 0x00, 0xeb, 0x01, 0xe0, + 0x28, 0xe5, 0x0b, 0x00, 0x25, 0x80, 0x8b, 0xe5, + 0x0e, 0xab, 0x40, 0x16, 0xe5, 0x12, 0x80, 0x16, + 0xe0, 0x38, 0xe5, 0x30, 0x60, 0x2b, 0x25, 0xeb, + 0x08, 0x20, 0xeb, 0x26, 0x05, 0x46, 0x00, 0x26, + 0x80, 0x66, 0x65, 0x00, 0x45, 0x00, 0xe5, 0x15, + 0x20, 0x46, 0x60, 0x06, 0xeb, 0x01, 0xc0, 0xf6, + 0x01, 0xc0, 0xe5, 0x15, 0x2b, 0x16, 0xe5, 0x15, + 0x4b, 0xe0, 0x18, 0xe5, 0x00, 0x0f, 0xe5, 0x14, + 0x26, 0x60, 0x8b, 0xd6, 0xe0, 0x01, 0xe5, 0x2e, + 0x40, 0xd6, 0xe5, 0x0e, 0x20, 0xeb, 0x00, 0xe5, + 0x0b, 0x80, 0xeb, 0x00, 0xe5, 0x0a, 0xc0, 0x76, + 0xe0, 0x04, 0xcb, 0xe0, 0x48, 0xe5, 0x41, 0xe0, + 0x2f, 0xe1, 0x2b, 0xe0, 0x05, 0xe2, 0x2b, 0xc0, + 0xab, 0xe5, 0x1c, 0x66, 0xe0, 0x00, 0xe9, 0x02, + 0xe0, 0x80, 0x9e, 0xeb, 0x17, 0x00, 0xe5, 0x22, + 0x00, 0x26, 0x11, 0x20, 0x25, 0xe0, 0x46, 0xe5, + 0x15, 0xeb, 0x02, 0x05, 0xe0, 0x00, 0xe5, 0x0e, + 0xe6, 0x03, 0x6b, 0x96, 0xe0, 0x0e, 0xe5, 0x0a, + 0x66, 0x76, 0xe0, 0x1e, 0xe5, 0x0d, 0xcb, 0xe0, + 0x0c, 0xe5, 0x0f, 0xe0, 0x01, 0x07, 0x06, 0x07, + 0xe5, 0x2d, 0xe6, 0x07, 0xd6, 0x60, 0xeb, 0x0c, + 0xe9, 0x02, 0x06, 0x25, 0x26, 0x05, 0xe0, 0x01, + 0x46, 0x07, 0xe5, 0x25, 0x47, 0x66, 0x27, 0x26, + 0x36, 0x1b, 0x76, 0x06, 0xe0, 0x02, 0x1b, 0x20, + 0xe5, 0x11, 0xc0, 0xe9, 0x02, 0xa0, 0x46, 0xe5, + 0x1c, 0x86, 0x07, 0xe6, 0x00, 0x00, 0xe9, 0x02, + 0x76, 0x05, 0x27, 0x05, 0xe0, 0x00, 0xe5, 0x1b, + 0x06, 0x36, 0x05, 0xe0, 0x01, 0x26, 0x07, 0xe5, + 0x28, 0x47, 0xe6, 0x01, 0x27, 0x65, 0x76, 0x66, + 0x16, 0x07, 0x06, 0xe9, 0x02, 0x05, 0x16, 0x05, + 0x56, 0x00, 0xeb, 0x0c, 0xe0, 0x03, 0xe5, 0x0a, + 0x00, 0xe5, 0x11, 0x47, 0x46, 0x27, 0x06, 0x07, + 0x26, 0xb6, 0x06, 0xe0, 0x39, 0xc5, 0x00, 0x05, + 0x00, 0x65, 0x00, 0xe5, 0x07, 0x00, 0xe5, 0x02, + 0x16, 0xa0, 0xe5, 0x27, 0x06, 0x47, 0xe6, 0x00, + 0x80, 0xe9, 0x02, 0xa0, 0x26, 0x27, 0x00, 0xe5, + 0x00, 0x20, 0x25, 0x20, 0xe5, 0x0e, 0x00, 0xc5, + 0x00, 0x25, 0x00, 0x85, 0x00, 0x26, 0x05, 0x27, + 0x06, 0x67, 0x20, 0x27, 0x20, 0x47, 0x20, 0x05, + 0xa0, 0x07, 0x80, 0x85, 0x27, 0x20, 0xc6, 0x40, + 0x86, 0xe0, 0x80, 0x03, 0xe5, 0x2d, 0x47, 0xe6, + 0x00, 0x27, 0x46, 0x07, 0x06, 0x65, 0x96, 0xe9, + 0x02, 0x36, 0x00, 0x16, 0x06, 0x45, 0xe0, 0x16, + 0xe5, 0x28, 0x47, 0xa6, 0x07, 0x06, 0x67, 0x26, + 0x07, 0x26, 0x25, 0x16, 0x05, 0xe0, 0x00, 0xe9, + 0x02, 0xe0, 0x80, 0x1e, 0xe5, 0x27, 0x47, 0x66, + 0x20, 0x67, 0x26, 0x07, 0x26, 0xf6, 0x0f, 0x65, + 0x26, 0xe0, 0x1a, 0xe5, 0x28, 0x47, 0xe6, 0x00, + 0x27, 0x06, 0x07, 0x26, 0x56, 0x05, 0xe0, 0x03, + 0xe9, 0x02, 0xa0, 0xf6, 0x05, 0xe0, 0x0b, 0xe5, + 0x23, 0x06, 0x07, 0x06, 0x27, 0xa6, 0x07, 0x06, + 0x05, 0x16, 0xa0, 0xe9, 0x02, 0xe0, 0x2e, 0xe5, + 0x13, 0x20, 0x46, 0x27, 0x66, 0x07, 0x86, 0x60, + 0xe9, 0x02, 0x2b, 0x56, 0x0f, 0xc5, 0xe0, 0x80, + 0x31, 0xe5, 0x24, 0x47, 0xe6, 0x01, 0x07, 0x26, + 0x16, 0xe0, 0x5c, 0xe1, 0x18, 0xe2, 0x18, 0xe9, + 0x02, 0xeb, 0x01, 0xe0, 0x04, 0xe5, 0x00, 0x20, + 0x05, 0x20, 0xe5, 0x00, 0x00, 0x25, 0x00, 0xe5, + 0x10, 0xa7, 0x00, 0x27, 0x20, 0x26, 0x07, 0x06, + 0x05, 0x07, 0x05, 0x07, 0x06, 0x56, 0xe0, 0x01, + 0xe9, 0x02, 0xe0, 0x3e, 0xe5, 0x00, 0x20, 0xe5, + 0x1f, 0x47, 0x66, 0x20, 0x26, 0x67, 0x06, 0x05, + 0x16, 0x05, 0x07, 0xe0, 0x13, 0x05, 0xe6, 0x02, + 0xe5, 0x20, 0xa6, 0x07, 0x05, 0x66, 0xf6, 0x00, + 0x06, 0xe0, 0x00, 0x05, 0xa6, 0x27, 0x46, 0xe5, + 0x26, 0xe6, 0x05, 0x07, 0x26, 0x56, 0x05, 0x96, + 0xe0, 0x05, 0xe5, 0x41, 0xe0, 0x80, 0x7f, 0xe5, + 0x01, 0x00, 0xe5, 0x1d, 0x07, 0xc6, 0x00, 0xa6, + 0x07, 0x06, 0x05, 0x96, 0xe0, 0x02, 0xe9, 0x02, + 0xeb, 0x0b, 0x40, 0x36, 0xe5, 0x16, 0x20, 0xe6, + 0x0e, 0x00, 0x07, 0xc6, 0x07, 0x26, 0x07, 0x26, + 0xe0, 0x41, 0xc5, 0x00, 0x25, 0x00, 0xe5, 0x1e, + 0xa6, 0x40, 0x06, 0x00, 0x26, 0x00, 0xc6, 0x05, + 0x06, 0xe0, 0x00, 0xe9, 0x02, 0xa0, 0xa5, 0x00, + 0x25, 0x00, 0xe5, 0x18, 0x87, 0x00, 0x26, 0x00, + 0x27, 0x06, 0x07, 0x06, 0x05, 0xc0, 0xe9, 0x02, + 0xe0, 0x80, 0xae, 0xe5, 0x0b, 0x26, 0x27, 0x36, + 0xe0, 0x80, 0x2f, 0x05, 0xe0, 0x07, 0xeb, 0x0d, + 0xef, 0x00, 0x6d, 0xef, 0x09, 0xe0, 0x05, 0x16, + 0xe5, 0x83, 0x12, 0xe0, 0x5e, 0xea, 0x67, 0x00, + 0x96, 0xe0, 0x03, 0xe5, 0x80, 0x3c, 0xe0, 0x89, + 0xc4, 0xe5, 0x59, 0x36, 0xe0, 0x05, 0xe5, 0x83, + 0xa7, 0x00, 0xfb, 0x01, 0xe0, 0x8f, 0x3f, 0xe5, + 0x81, 0xbf, 0xe0, 0xa1, 0x31, 0xe5, 0x81, 0xb1, + 0xc0, 0xe5, 0x17, 0x00, 0xe9, 0x02, 0x60, 0x36, + 0xe5, 0x47, 0x00, 0xe9, 0x02, 0xa0, 0xe5, 0x16, + 0x20, 0x86, 0x16, 0xe0, 0x02, 0xe5, 0x28, 0xc6, + 0x96, 0x6f, 0x64, 0x16, 0x0f, 0xe0, 0x02, 0xe9, + 0x02, 0x00, 0xcb, 0x00, 0xe5, 0x0d, 0x80, 0xe5, + 0x0b, 0xe0, 0x82, 0x28, 0xe1, 0x18, 0xe2, 0x18, + 0xeb, 0x0f, 0x76, 0xe0, 0x5d, 0xe5, 0x43, 0x60, + 0x06, 0x05, 0xe7, 0x2f, 0xc0, 0x66, 0xe4, 0x05, + 0xe0, 0x38, 0x24, 0x16, 0x04, 0x06, 0xe0, 0x03, + 0x27, 0xe0, 0x06, 0xe5, 0x97, 0x70, 0xe0, 0x00, + 0xe5, 0x84, 0x4e, 0xe0, 0x22, 0xe5, 0x01, 0xe0, + 0xa2, 0x5f, 0x64, 0x00, 0xc4, 0x00, 0x24, 0x00, + 0xe5, 0x80, 0x9b, 0xe0, 0x25, 0x45, 0xe0, 0x09, + 0x65, 0xe0, 0x00, 0xe5, 0x81, 0x04, 0xe0, 0x88, + 0x7c, 0xe5, 0x63, 0x80, 0xe5, 0x05, 0x40, 0xe5, + 0x01, 0xc0, 0xe5, 0x02, 0x20, 0x0f, 0x26, 0x16, + 0x7b, 0xe0, 0x91, 0xd4, 0xe6, 0x26, 0x20, 0xe6, + 0x0f, 0xe0, 0x01, 0xef, 0x6c, 0xe0, 0x34, 0xef, + 0x80, 0x6e, 0xe0, 0x02, 0xef, 0x1f, 0x20, 0xef, + 0x34, 0x27, 0x46, 0x4f, 0xa7, 0xfb, 0x00, 0xe6, + 0x00, 0x2f, 0xc6, 0xef, 0x16, 0x66, 0xef, 0x35, + 0xe0, 0x0d, 0xef, 0x3a, 0x46, 0x0f, 0xe0, 0x80, + 0x12, 0xeb, 0x0c, 0xe0, 0x04, 0xef, 0x4f, 0xe0, + 0x01, 0xeb, 0x11, 0xe0, 0x7f, 0xe1, 0x12, 0xe2, + 0x12, 0xe1, 0x12, 0xc2, 0x00, 0xe2, 0x0a, 0xe1, + 0x12, 0xe2, 0x12, 0x01, 0x00, 0x21, 0x20, 0x01, + 0x20, 0x21, 0x20, 0x61, 0x00, 0xe1, 0x00, 0x62, + 0x00, 0x02, 0x00, 0xc2, 0x00, 0xe2, 0x03, 0xe1, + 0x12, 0xe2, 0x12, 0x21, 0x00, 0x61, 0x20, 0xe1, + 0x00, 0x00, 0xc1, 0x00, 0xe2, 0x12, 0x21, 0x00, + 0x61, 0x00, 0x81, 0x00, 0x01, 0x40, 0xc1, 0x00, + 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12, + 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12, + 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12, + 0xe2, 0x14, 0x20, 0xe1, 0x11, 0x0c, 0xe2, 0x11, + 0x0c, 0xa2, 0xe1, 0x11, 0x0c, 0xe2, 0x11, 0x0c, + 0xa2, 0xe1, 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2, + 0xe1, 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0xe1, + 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0x3f, 0x20, + 0xe9, 0x2a, 0xef, 0x81, 0x78, 0xe6, 0x2f, 0x6f, + 0xe6, 0x2a, 0xef, 0x00, 0x06, 0xef, 0x06, 0x06, + 0x2f, 0x96, 0xe0, 0x07, 0x86, 0x00, 0xe6, 0x07, + 0xe0, 0x83, 0xc8, 0xe2, 0x02, 0x05, 0xe2, 0x0c, + 0xe0, 0x80, 0x59, 0xc6, 0x00, 0xe6, 0x09, 0x20, + 0xc6, 0x00, 0x26, 0x00, 0x86, 0xe0, 0x80, 0x4d, + 0xe5, 0x25, 0x40, 0xc6, 0xc4, 0x20, 0xe9, 0x02, + 0x60, 0x05, 0x0f, 0xe0, 0x80, 0xb8, 0xe5, 0x16, + 0x06, 0xe0, 0x09, 0xe5, 0x24, 0x66, 0xe9, 0x02, + 0x80, 0x0d, 0xe0, 0x84, 0x58, 0xc5, 0x00, 0x65, + 0x00, 0x25, 0x00, 0xe5, 0x07, 0x00, 0xe5, 0x80, + 0x3d, 0x20, 0xeb, 0x01, 0xc6, 0xe0, 0x21, 0xe1, + 0x1a, 0xe2, 0x1a, 0xc6, 0x04, 0x60, 0xe9, 0x02, + 0x60, 0x36, 0xe0, 0x82, 0x89, 0xeb, 0x33, 0x0f, + 0x4b, 0x0d, 0x6b, 0xe0, 0x44, 0xeb, 0x25, 0x0f, + 0xeb, 0x07, 0xe0, 0x80, 0x3a, 0x65, 0x00, 0xe5, + 0x13, 0x00, 0x25, 0x00, 0x05, 0x20, 0x05, 0x00, + 0xe5, 0x02, 0x00, 0x65, 0x00, 0x05, 0x00, 0x05, + 0xa0, 0x05, 0x60, 0x05, 0x00, 0x05, 0x00, 0x05, + 0x00, 0x45, 0x00, 0x25, 0x00, 0x05, 0x20, 0x05, + 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, + 0x00, 0x25, 0x00, 0x05, 0x20, 0x65, 0x00, 0xc5, + 0x00, 0x65, 0x00, 0x65, 0x00, 0x05, 0x00, 0xe5, + 0x02, 0x00, 0xe5, 0x09, 0x80, 0x45, 0x00, 0x85, + 0x00, 0xe5, 0x09, 0xe0, 0x2c, 0x2c, 0xe0, 0x80, + 0x86, 0xef, 0x24, 0x60, 0xef, 0x5c, 0xe0, 0x04, + 0xef, 0x07, 0x20, 0xef, 0x07, 0x00, 0xef, 0x07, + 0x00, 0xef, 0x1d, 0xe0, 0x02, 0xeb, 0x05, 0xef, + 0x80, 0x19, 0xe0, 0x30, 0xef, 0x15, 0xe0, 0x05, + 0xef, 0x24, 0x60, 0xef, 0x01, 0xc0, 0x2f, 0xe0, + 0x06, 0xaf, 0xe0, 0x80, 0x12, 0xef, 0x80, 0x73, + 0x8e, 0xef, 0x82, 0x50, 0x80, 0xef, 0x08, 0x40, + 0xef, 0x05, 0x40, 0xef, 0x6c, 0xe0, 0x04, 0xef, + 0x51, 0xc0, 0xef, 0x04, 0x60, 0x0f, 0xe0, 0x07, + 0xef, 0x04, 0x60, 0xef, 0x30, 0xe0, 0x00, 0xef, + 0x02, 0xa0, 0xef, 0x20, 0xe0, 0x00, 0xef, 0x16, + 0x20, 0x2f, 0xe0, 0x46, 0xef, 0x80, 0xcc, 0xe0, + 0x04, 0xef, 0x06, 0x20, 0x8f, 0x40, 0x8f, 0x40, + 0xcf, 0xe0, 0x01, 0xef, 0x15, 0x40, 0xef, 0x03, + 0x80, 0xaf, 0xe0, 0x02, 0xef, 0x02, 0xa0, 0xef, + 0x00, 0xe0, 0x00, 0xcf, 0xe0, 0x01, 0xef, 0x80, + 0x0b, 0x00, 0xef, 0x2f, 0xe0, 0x1d, 0xe9, 0x02, + 0xe0, 0x83, 0x7e, 0xe5, 0xc0, 0x66, 0x58, 0xe0, + 0x18, 0xe5, 0x8f, 0xb1, 0xc0, 0xe5, 0x80, 0x56, + 0x20, 0xe5, 0x95, 0xfa, 0xe0, 0x06, 0xe5, 0x9c, + 0xa9, 0xe0, 0x8b, 0x97, 0xe5, 0x81, 0x96, 0xe0, + 0x85, 0x5a, 0xe5, 0x92, 0xc3, 0xe0, 0xca, 0xac, + 0x2e, 0x1b, 0xe0, 0x16, 0xfb, 0x58, 0xe0, 0x78, + 0xe6, 0x80, 0x68, 0xe0, 0xc0, 0xbd, 0x88, 0xfd, + 0xc0, 0xbf, 0x76, 0x20, 0xfd, 0xc0, 0xbf, 0x76, + 0x20, +}; + +typedef enum { + UNICODE_SCRIPT_Unknown, + UNICODE_SCRIPT_Adlam, + UNICODE_SCRIPT_Ahom, + UNICODE_SCRIPT_Anatolian_Hieroglyphs, + UNICODE_SCRIPT_Arabic, + UNICODE_SCRIPT_Armenian, + UNICODE_SCRIPT_Avestan, + UNICODE_SCRIPT_Balinese, + UNICODE_SCRIPT_Bamum, + UNICODE_SCRIPT_Bassa_Vah, + UNICODE_SCRIPT_Batak, + UNICODE_SCRIPT_Bengali, + UNICODE_SCRIPT_Bhaiksuki, + UNICODE_SCRIPT_Bopomofo, + UNICODE_SCRIPT_Brahmi, + UNICODE_SCRIPT_Braille, + UNICODE_SCRIPT_Buginese, + UNICODE_SCRIPT_Buhid, + UNICODE_SCRIPT_Canadian_Aboriginal, + UNICODE_SCRIPT_Carian, + UNICODE_SCRIPT_Caucasian_Albanian, + UNICODE_SCRIPT_Chakma, + UNICODE_SCRIPT_Cham, + UNICODE_SCRIPT_Cherokee, + UNICODE_SCRIPT_Chorasmian, + UNICODE_SCRIPT_Common, + UNICODE_SCRIPT_Coptic, + UNICODE_SCRIPT_Cuneiform, + UNICODE_SCRIPT_Cypriot, + UNICODE_SCRIPT_Cyrillic, + UNICODE_SCRIPT_Cypro_Minoan, + UNICODE_SCRIPT_Deseret, + UNICODE_SCRIPT_Devanagari, + UNICODE_SCRIPT_Dives_Akuru, + UNICODE_SCRIPT_Dogra, + UNICODE_SCRIPT_Duployan, + UNICODE_SCRIPT_Egyptian_Hieroglyphs, + UNICODE_SCRIPT_Elbasan, + UNICODE_SCRIPT_Elymaic, + UNICODE_SCRIPT_Ethiopic, + UNICODE_SCRIPT_Georgian, + UNICODE_SCRIPT_Glagolitic, + UNICODE_SCRIPT_Gothic, + UNICODE_SCRIPT_Grantha, + UNICODE_SCRIPT_Greek, + UNICODE_SCRIPT_Gujarati, + UNICODE_SCRIPT_Gunjala_Gondi, + UNICODE_SCRIPT_Gurmukhi, + UNICODE_SCRIPT_Han, + UNICODE_SCRIPT_Hangul, + UNICODE_SCRIPT_Hanifi_Rohingya, + UNICODE_SCRIPT_Hanunoo, + UNICODE_SCRIPT_Hatran, + UNICODE_SCRIPT_Hebrew, + UNICODE_SCRIPT_Hiragana, + UNICODE_SCRIPT_Imperial_Aramaic, + UNICODE_SCRIPT_Inherited, + UNICODE_SCRIPT_Inscriptional_Pahlavi, + UNICODE_SCRIPT_Inscriptional_Parthian, + UNICODE_SCRIPT_Javanese, + UNICODE_SCRIPT_Kaithi, + UNICODE_SCRIPT_Kannada, + UNICODE_SCRIPT_Katakana, + UNICODE_SCRIPT_Kayah_Li, + UNICODE_SCRIPT_Kharoshthi, + UNICODE_SCRIPT_Khmer, + UNICODE_SCRIPT_Khojki, + UNICODE_SCRIPT_Khitan_Small_Script, + UNICODE_SCRIPT_Khudawadi, + UNICODE_SCRIPT_Lao, + UNICODE_SCRIPT_Latin, + UNICODE_SCRIPT_Lepcha, + UNICODE_SCRIPT_Limbu, + UNICODE_SCRIPT_Linear_A, + UNICODE_SCRIPT_Linear_B, + UNICODE_SCRIPT_Lisu, + UNICODE_SCRIPT_Lycian, + UNICODE_SCRIPT_Lydian, + UNICODE_SCRIPT_Makasar, + UNICODE_SCRIPT_Mahajani, + UNICODE_SCRIPT_Malayalam, + UNICODE_SCRIPT_Mandaic, + UNICODE_SCRIPT_Manichaean, + UNICODE_SCRIPT_Marchen, + UNICODE_SCRIPT_Masaram_Gondi, + UNICODE_SCRIPT_Medefaidrin, + UNICODE_SCRIPT_Meetei_Mayek, + UNICODE_SCRIPT_Mende_Kikakui, + UNICODE_SCRIPT_Meroitic_Cursive, + UNICODE_SCRIPT_Meroitic_Hieroglyphs, + UNICODE_SCRIPT_Miao, + UNICODE_SCRIPT_Modi, + UNICODE_SCRIPT_Mongolian, + UNICODE_SCRIPT_Mro, + UNICODE_SCRIPT_Multani, + UNICODE_SCRIPT_Myanmar, + UNICODE_SCRIPT_Nabataean, + UNICODE_SCRIPT_Nandinagari, + UNICODE_SCRIPT_New_Tai_Lue, + UNICODE_SCRIPT_Newa, + UNICODE_SCRIPT_Nko, + UNICODE_SCRIPT_Nushu, + UNICODE_SCRIPT_Nyiakeng_Puachue_Hmong, + UNICODE_SCRIPT_Ogham, + UNICODE_SCRIPT_Ol_Chiki, + UNICODE_SCRIPT_Old_Hungarian, + UNICODE_SCRIPT_Old_Italic, + UNICODE_SCRIPT_Old_North_Arabian, + UNICODE_SCRIPT_Old_Permic, + UNICODE_SCRIPT_Old_Persian, + UNICODE_SCRIPT_Old_Sogdian, + UNICODE_SCRIPT_Old_South_Arabian, + UNICODE_SCRIPT_Old_Turkic, + UNICODE_SCRIPT_Old_Uyghur, + UNICODE_SCRIPT_Oriya, + UNICODE_SCRIPT_Osage, + UNICODE_SCRIPT_Osmanya, + UNICODE_SCRIPT_Pahawh_Hmong, + UNICODE_SCRIPT_Palmyrene, + UNICODE_SCRIPT_Pau_Cin_Hau, + UNICODE_SCRIPT_Phags_Pa, + UNICODE_SCRIPT_Phoenician, + UNICODE_SCRIPT_Psalter_Pahlavi, + UNICODE_SCRIPT_Rejang, + UNICODE_SCRIPT_Runic, + UNICODE_SCRIPT_Samaritan, + UNICODE_SCRIPT_Saurashtra, + UNICODE_SCRIPT_Sharada, + UNICODE_SCRIPT_Shavian, + UNICODE_SCRIPT_Siddham, + UNICODE_SCRIPT_SignWriting, + UNICODE_SCRIPT_Sinhala, + UNICODE_SCRIPT_Sogdian, + UNICODE_SCRIPT_Sora_Sompeng, + UNICODE_SCRIPT_Soyombo, + UNICODE_SCRIPT_Sundanese, + UNICODE_SCRIPT_Syloti_Nagri, + UNICODE_SCRIPT_Syriac, + UNICODE_SCRIPT_Tagalog, + UNICODE_SCRIPT_Tagbanwa, + UNICODE_SCRIPT_Tai_Le, + UNICODE_SCRIPT_Tai_Tham, + UNICODE_SCRIPT_Tai_Viet, + UNICODE_SCRIPT_Takri, + UNICODE_SCRIPT_Tamil, + UNICODE_SCRIPT_Tangut, + UNICODE_SCRIPT_Telugu, + UNICODE_SCRIPT_Thaana, + UNICODE_SCRIPT_Thai, + UNICODE_SCRIPT_Tibetan, + UNICODE_SCRIPT_Tifinagh, + UNICODE_SCRIPT_Tirhuta, + UNICODE_SCRIPT_Tangsa, + UNICODE_SCRIPT_Toto, + UNICODE_SCRIPT_Ugaritic, + UNICODE_SCRIPT_Vai, + UNICODE_SCRIPT_Vithkuqi, + UNICODE_SCRIPT_Wancho, + UNICODE_SCRIPT_Warang_Citi, + UNICODE_SCRIPT_Yezidi, + UNICODE_SCRIPT_Yi, + UNICODE_SCRIPT_Zanabazar_Square, + UNICODE_SCRIPT_COUNT, +} UnicodeScriptEnum; + +static const char unicode_script_name_table[] = + "Adlam,Adlm" "\0" + "Ahom,Ahom" "\0" + "Anatolian_Hieroglyphs,Hluw" "\0" + "Arabic,Arab" "\0" + "Armenian,Armn" "\0" + "Avestan,Avst" "\0" + "Balinese,Bali" "\0" + "Bamum,Bamu" "\0" + "Bassa_Vah,Bass" "\0" + "Batak,Batk" "\0" + "Bengali,Beng" "\0" + "Bhaiksuki,Bhks" "\0" + "Bopomofo,Bopo" "\0" + "Brahmi,Brah" "\0" + "Braille,Brai" "\0" + "Buginese,Bugi" "\0" + "Buhid,Buhd" "\0" + "Canadian_Aboriginal,Cans" "\0" + "Carian,Cari" "\0" + "Caucasian_Albanian,Aghb" "\0" + "Chakma,Cakm" "\0" + "Cham,Cham" "\0" + "Cherokee,Cher" "\0" + "Chorasmian,Chrs" "\0" + "Common,Zyyy" "\0" + "Coptic,Copt,Qaac" "\0" + "Cuneiform,Xsux" "\0" + "Cypriot,Cprt" "\0" + "Cyrillic,Cyrl" "\0" + "Cypro_Minoan,Cpmn" "\0" + "Deseret,Dsrt" "\0" + "Devanagari,Deva" "\0" + "Dives_Akuru,Diak" "\0" + "Dogra,Dogr" "\0" + "Duployan,Dupl" "\0" + "Egyptian_Hieroglyphs,Egyp" "\0" + "Elbasan,Elba" "\0" + "Elymaic,Elym" "\0" + "Ethiopic,Ethi" "\0" + "Georgian,Geor" "\0" + "Glagolitic,Glag" "\0" + "Gothic,Goth" "\0" + "Grantha,Gran" "\0" + "Greek,Grek" "\0" + "Gujarati,Gujr" "\0" + "Gunjala_Gondi,Gong" "\0" + "Gurmukhi,Guru" "\0" + "Han,Hani" "\0" + "Hangul,Hang" "\0" + "Hanifi_Rohingya,Rohg" "\0" + "Hanunoo,Hano" "\0" + "Hatran,Hatr" "\0" + "Hebrew,Hebr" "\0" + "Hiragana,Hira" "\0" + "Imperial_Aramaic,Armi" "\0" + "Inherited,Zinh,Qaai" "\0" + "Inscriptional_Pahlavi,Phli" "\0" + "Inscriptional_Parthian,Prti" "\0" + "Javanese,Java" "\0" + "Kaithi,Kthi" "\0" + "Kannada,Knda" "\0" + "Katakana,Kana" "\0" + "Kayah_Li,Kali" "\0" + "Kharoshthi,Khar" "\0" + "Khmer,Khmr" "\0" + "Khojki,Khoj" "\0" + "Khitan_Small_Script,Kits" "\0" + "Khudawadi,Sind" "\0" + "Lao,Laoo" "\0" + "Latin,Latn" "\0" + "Lepcha,Lepc" "\0" + "Limbu,Limb" "\0" + "Linear_A,Lina" "\0" + "Linear_B,Linb" "\0" + "Lisu,Lisu" "\0" + "Lycian,Lyci" "\0" + "Lydian,Lydi" "\0" + "Makasar,Maka" "\0" + "Mahajani,Mahj" "\0" + "Malayalam,Mlym" "\0" + "Mandaic,Mand" "\0" + "Manichaean,Mani" "\0" + "Marchen,Marc" "\0" + "Masaram_Gondi,Gonm" "\0" + "Medefaidrin,Medf" "\0" + "Meetei_Mayek,Mtei" "\0" + "Mende_Kikakui,Mend" "\0" + "Meroitic_Cursive,Merc" "\0" + "Meroitic_Hieroglyphs,Mero" "\0" + "Miao,Plrd" "\0" + "Modi,Modi" "\0" + "Mongolian,Mong" "\0" + "Mro,Mroo" "\0" + "Multani,Mult" "\0" + "Myanmar,Mymr" "\0" + "Nabataean,Nbat" "\0" + "Nandinagari,Nand" "\0" + "New_Tai_Lue,Talu" "\0" + "Newa,Newa" "\0" + "Nko,Nkoo" "\0" + "Nushu,Nshu" "\0" + "Nyiakeng_Puachue_Hmong,Hmnp" "\0" + "Ogham,Ogam" "\0" + "Ol_Chiki,Olck" "\0" + "Old_Hungarian,Hung" "\0" + "Old_Italic,Ital" "\0" + "Old_North_Arabian,Narb" "\0" + "Old_Permic,Perm" "\0" + "Old_Persian,Xpeo" "\0" + "Old_Sogdian,Sogo" "\0" + "Old_South_Arabian,Sarb" "\0" + "Old_Turkic,Orkh" "\0" + "Old_Uyghur,Ougr" "\0" + "Oriya,Orya" "\0" + "Osage,Osge" "\0" + "Osmanya,Osma" "\0" + "Pahawh_Hmong,Hmng" "\0" + "Palmyrene,Palm" "\0" + "Pau_Cin_Hau,Pauc" "\0" + "Phags_Pa,Phag" "\0" + "Phoenician,Phnx" "\0" + "Psalter_Pahlavi,Phlp" "\0" + "Rejang,Rjng" "\0" + "Runic,Runr" "\0" + "Samaritan,Samr" "\0" + "Saurashtra,Saur" "\0" + "Sharada,Shrd" "\0" + "Shavian,Shaw" "\0" + "Siddham,Sidd" "\0" + "SignWriting,Sgnw" "\0" + "Sinhala,Sinh" "\0" + "Sogdian,Sogd" "\0" + "Sora_Sompeng,Sora" "\0" + "Soyombo,Soyo" "\0" + "Sundanese,Sund" "\0" + "Syloti_Nagri,Sylo" "\0" + "Syriac,Syrc" "\0" + "Tagalog,Tglg" "\0" + "Tagbanwa,Tagb" "\0" + "Tai_Le,Tale" "\0" + "Tai_Tham,Lana" "\0" + "Tai_Viet,Tavt" "\0" + "Takri,Takr" "\0" + "Tamil,Taml" "\0" + "Tangut,Tang" "\0" + "Telugu,Telu" "\0" + "Thaana,Thaa" "\0" + "Thai,Thai" "\0" + "Tibetan,Tibt" "\0" + "Tifinagh,Tfng" "\0" + "Tirhuta,Tirh" "\0" + "Tangsa,Tnsa" "\0" + "Toto,Toto" "\0" + "Ugaritic,Ugar" "\0" + "Vai,Vaii" "\0" + "Vithkuqi,Vith" "\0" + "Wancho,Wcho" "\0" + "Warang_Citi,Wara" "\0" + "Yezidi,Yezi" "\0" + "Yi,Yiii" "\0" + "Zanabazar_Square,Zanb" "\0" +; + +static const uint8_t unicode_script_table[2690] = { + 0xc0, 0x19, 0x99, 0x46, 0x85, 0x19, 0x99, 0x46, + 0xae, 0x19, 0x80, 0x46, 0x8e, 0x19, 0x80, 0x46, + 0x84, 0x19, 0x96, 0x46, 0x80, 0x19, 0x9e, 0x46, + 0x80, 0x19, 0xe1, 0x60, 0x46, 0xa6, 0x19, 0x84, + 0x46, 0x84, 0x19, 0x81, 0x0d, 0x93, 0x19, 0xe0, + 0x0f, 0x38, 0x83, 0x2c, 0x80, 0x19, 0x82, 0x2c, + 0x01, 0x83, 0x2c, 0x80, 0x19, 0x80, 0x2c, 0x03, + 0x80, 0x2c, 0x80, 0x19, 0x80, 0x2c, 0x80, 0x19, + 0x82, 0x2c, 0x00, 0x80, 0x2c, 0x00, 0x93, 0x2c, + 0x00, 0xbe, 0x2c, 0x8d, 0x1a, 0x8f, 0x2c, 0xe0, + 0x24, 0x1d, 0x81, 0x38, 0xe0, 0x48, 0x1d, 0x00, + 0xa5, 0x05, 0x01, 0xb1, 0x05, 0x01, 0x82, 0x05, + 0x00, 0xb6, 0x35, 0x07, 0x9a, 0x35, 0x03, 0x85, + 0x35, 0x0a, 0x84, 0x04, 0x80, 0x19, 0x85, 0x04, + 0x80, 0x19, 0x8d, 0x04, 0x80, 0x19, 0x82, 0x04, + 0x80, 0x19, 0x9f, 0x04, 0x80, 0x19, 0x89, 0x04, + 0x8a, 0x38, 0x99, 0x04, 0x80, 0x38, 0xe0, 0x0b, + 0x04, 0x80, 0x19, 0xa1, 0x04, 0x8d, 0x89, 0x00, + 0xbb, 0x89, 0x01, 0x82, 0x89, 0xaf, 0x04, 0xb1, + 0x93, 0x0d, 0xba, 0x64, 0x01, 0x82, 0x64, 0xad, + 0x7d, 0x01, 0x8e, 0x7d, 0x00, 0x9b, 0x51, 0x01, + 0x80, 0x51, 0x00, 0x8a, 0x89, 0x04, 0x9e, 0x04, + 0x00, 0x81, 0x04, 0x05, 0xc9, 0x04, 0x80, 0x19, + 0x9c, 0x04, 0xd0, 0x20, 0x83, 0x38, 0x8e, 0x20, + 0x81, 0x19, 0x99, 0x20, 0x83, 0x0b, 0x00, 0x87, + 0x0b, 0x01, 0x81, 0x0b, 0x01, 0x95, 0x0b, 0x00, + 0x86, 0x0b, 0x00, 0x80, 0x0b, 0x02, 0x83, 0x0b, + 0x01, 0x88, 0x0b, 0x01, 0x81, 0x0b, 0x01, 0x83, + 0x0b, 0x07, 0x80, 0x0b, 0x03, 0x81, 0x0b, 0x00, + 0x84, 0x0b, 0x01, 0x98, 0x0b, 0x01, 0x82, 0x2f, + 0x00, 0x85, 0x2f, 0x03, 0x81, 0x2f, 0x01, 0x95, + 0x2f, 0x00, 0x86, 0x2f, 0x00, 0x81, 0x2f, 0x00, + 0x81, 0x2f, 0x00, 0x81, 0x2f, 0x01, 0x80, 0x2f, + 0x00, 0x84, 0x2f, 0x03, 0x81, 0x2f, 0x01, 0x82, + 0x2f, 0x02, 0x80, 0x2f, 0x06, 0x83, 0x2f, 0x00, + 0x80, 0x2f, 0x06, 0x90, 0x2f, 0x09, 0x82, 0x2d, + 0x00, 0x88, 0x2d, 0x00, 0x82, 0x2d, 0x00, 0x95, + 0x2d, 0x00, 0x86, 0x2d, 0x00, 0x81, 0x2d, 0x00, + 0x84, 0x2d, 0x01, 0x89, 0x2d, 0x00, 0x82, 0x2d, + 0x00, 0x82, 0x2d, 0x01, 0x80, 0x2d, 0x0e, 0x83, + 0x2d, 0x01, 0x8b, 0x2d, 0x06, 0x86, 0x2d, 0x00, + 0x82, 0x72, 0x00, 0x87, 0x72, 0x01, 0x81, 0x72, + 0x01, 0x95, 0x72, 0x00, 0x86, 0x72, 0x00, 0x81, + 0x72, 0x00, 0x84, 0x72, 0x01, 0x88, 0x72, 0x01, + 0x81, 0x72, 0x01, 0x82, 0x72, 0x06, 0x82, 0x72, + 0x03, 0x81, 0x72, 0x00, 0x84, 0x72, 0x01, 0x91, + 0x72, 0x09, 0x81, 0x90, 0x00, 0x85, 0x90, 0x02, + 0x82, 0x90, 0x00, 0x83, 0x90, 0x02, 0x81, 0x90, + 0x00, 0x80, 0x90, 0x00, 0x81, 0x90, 0x02, 0x81, + 0x90, 0x02, 0x82, 0x90, 0x02, 0x8b, 0x90, 0x03, + 0x84, 0x90, 0x02, 0x82, 0x90, 0x00, 0x83, 0x90, + 0x01, 0x80, 0x90, 0x05, 0x80, 0x90, 0x0d, 0x94, + 0x90, 0x04, 0x8c, 0x92, 0x00, 0x82, 0x92, 0x00, + 0x96, 0x92, 0x00, 0x8f, 0x92, 0x01, 0x88, 0x92, + 0x00, 0x82, 0x92, 0x00, 0x83, 0x92, 0x06, 0x81, + 0x92, 0x00, 0x82, 0x92, 0x01, 0x80, 0x92, 0x01, + 0x83, 0x92, 0x01, 0x89, 0x92, 0x06, 0x88, 0x92, + 0x8c, 0x3d, 0x00, 0x82, 0x3d, 0x00, 0x96, 0x3d, + 0x00, 0x89, 0x3d, 0x00, 0x84, 0x3d, 0x01, 0x88, + 0x3d, 0x00, 0x82, 0x3d, 0x00, 0x83, 0x3d, 0x06, + 0x81, 0x3d, 0x05, 0x81, 0x3d, 0x00, 0x83, 0x3d, + 0x01, 0x89, 0x3d, 0x00, 0x81, 0x3d, 0x0c, 0x8c, + 0x50, 0x00, 0x82, 0x50, 0x00, 0xb2, 0x50, 0x00, + 0x82, 0x50, 0x00, 0x85, 0x50, 0x03, 0x8f, 0x50, + 0x01, 0x99, 0x50, 0x00, 0x82, 0x83, 0x00, 0x91, + 0x83, 0x02, 0x97, 0x83, 0x00, 0x88, 0x83, 0x00, + 0x80, 0x83, 0x01, 0x86, 0x83, 0x02, 0x80, 0x83, + 0x03, 0x85, 0x83, 0x00, 0x80, 0x83, 0x00, 0x87, + 0x83, 0x05, 0x89, 0x83, 0x01, 0x82, 0x83, 0x0b, + 0xb9, 0x94, 0x03, 0x80, 0x19, 0x9b, 0x94, 0x24, + 0x81, 0x45, 0x00, 0x80, 0x45, 0x00, 0x84, 0x45, + 0x00, 0x97, 0x45, 0x00, 0x80, 0x45, 0x00, 0x96, + 0x45, 0x01, 0x84, 0x45, 0x00, 0x80, 0x45, 0x00, + 0x85, 0x45, 0x01, 0x89, 0x45, 0x01, 0x83, 0x45, + 0x1f, 0xc7, 0x95, 0x00, 0xa3, 0x95, 0x03, 0xa6, + 0x95, 0x00, 0xa3, 0x95, 0x00, 0x8e, 0x95, 0x00, + 0x86, 0x95, 0x83, 0x19, 0x81, 0x95, 0x24, 0xe0, + 0x3f, 0x5f, 0xa5, 0x28, 0x00, 0x80, 0x28, 0x04, + 0x80, 0x28, 0x01, 0xaa, 0x28, 0x80, 0x19, 0x83, + 0x28, 0xe0, 0x9f, 0x31, 0xc8, 0x27, 0x00, 0x83, + 0x27, 0x01, 0x86, 0x27, 0x00, 0x80, 0x27, 0x00, + 0x83, 0x27, 0x01, 0xa8, 0x27, 0x00, 0x83, 0x27, + 0x01, 0xa0, 0x27, 0x00, 0x83, 0x27, 0x01, 0x86, + 0x27, 0x00, 0x80, 0x27, 0x00, 0x83, 0x27, 0x01, + 0x8e, 0x27, 0x00, 0xb8, 0x27, 0x00, 0x83, 0x27, + 0x01, 0xc2, 0x27, 0x01, 0x9f, 0x27, 0x02, 0x99, + 0x27, 0x05, 0xd5, 0x17, 0x01, 0x85, 0x17, 0x01, + 0xe2, 0x1f, 0x12, 0x9c, 0x67, 0x02, 0xca, 0x7c, + 0x82, 0x19, 0x8a, 0x7c, 0x06, 0x95, 0x8a, 0x08, + 0x80, 0x8a, 0x94, 0x33, 0x81, 0x19, 0x08, 0x93, + 0x11, 0x0b, 0x8c, 0x8b, 0x00, 0x82, 0x8b, 0x00, + 0x81, 0x8b, 0x0b, 0xdd, 0x41, 0x01, 0x89, 0x41, + 0x05, 0x89, 0x41, 0x05, 0x81, 0x5c, 0x81, 0x19, + 0x80, 0x5c, 0x80, 0x19, 0x93, 0x5c, 0x05, 0xd8, + 0x5c, 0x06, 0xaa, 0x5c, 0x04, 0xc5, 0x12, 0x09, + 0x9e, 0x48, 0x00, 0x8b, 0x48, 0x03, 0x8b, 0x48, + 0x03, 0x80, 0x48, 0x02, 0x8b, 0x48, 0x9d, 0x8c, + 0x01, 0x84, 0x8c, 0x0a, 0xab, 0x62, 0x03, 0x99, + 0x62, 0x05, 0x8a, 0x62, 0x02, 0x81, 0x62, 0x9f, + 0x41, 0x9b, 0x10, 0x01, 0x81, 0x10, 0xbe, 0x8d, + 0x00, 0x9c, 0x8d, 0x01, 0x8a, 0x8d, 0x05, 0x89, + 0x8d, 0x05, 0x8d, 0x8d, 0x01, 0x9e, 0x38, 0x30, + 0xcc, 0x07, 0x02, 0xae, 0x07, 0x00, 0xbf, 0x87, + 0xb3, 0x0a, 0x07, 0x83, 0x0a, 0xb7, 0x47, 0x02, + 0x8e, 0x47, 0x02, 0x82, 0x47, 0xaf, 0x68, 0x88, + 0x1d, 0x06, 0xaa, 0x28, 0x01, 0x82, 0x28, 0x87, + 0x87, 0x07, 0x82, 0x38, 0x80, 0x19, 0x8c, 0x38, + 0x80, 0x19, 0x86, 0x38, 0x83, 0x19, 0x80, 0x38, + 0x85, 0x19, 0x80, 0x38, 0x82, 0x19, 0x81, 0x38, + 0x80, 0x19, 0x04, 0xa5, 0x46, 0x84, 0x2c, 0x80, + 0x1d, 0xb0, 0x46, 0x84, 0x2c, 0x83, 0x46, 0x84, + 0x2c, 0x8c, 0x46, 0x80, 0x1d, 0xc5, 0x46, 0x80, + 0x2c, 0xbf, 0x38, 0xe0, 0x9f, 0x46, 0x95, 0x2c, + 0x01, 0x85, 0x2c, 0x01, 0xa5, 0x2c, 0x01, 0x85, + 0x2c, 0x01, 0x87, 0x2c, 0x00, 0x80, 0x2c, 0x00, + 0x80, 0x2c, 0x00, 0x80, 0x2c, 0x00, 0x9e, 0x2c, + 0x01, 0xb4, 0x2c, 0x00, 0x8e, 0x2c, 0x00, 0x8d, + 0x2c, 0x01, 0x85, 0x2c, 0x00, 0x92, 0x2c, 0x01, + 0x82, 0x2c, 0x00, 0x88, 0x2c, 0x00, 0x8b, 0x19, + 0x81, 0x38, 0xd6, 0x19, 0x00, 0x8a, 0x19, 0x80, + 0x46, 0x01, 0x8a, 0x19, 0x80, 0x46, 0x8e, 0x19, + 0x00, 0x8c, 0x46, 0x02, 0xa0, 0x19, 0x0e, 0xa0, + 0x38, 0x0e, 0xa5, 0x19, 0x80, 0x2c, 0x82, 0x19, + 0x81, 0x46, 0x85, 0x19, 0x80, 0x46, 0x9a, 0x19, + 0x80, 0x46, 0x90, 0x19, 0xa8, 0x46, 0x82, 0x19, + 0x03, 0xe2, 0x36, 0x19, 0x18, 0x8a, 0x19, 0x14, + 0xe3, 0x3f, 0x19, 0xe0, 0x9f, 0x0f, 0xe2, 0x13, + 0x19, 0x01, 0x9f, 0x19, 0x00, 0xe0, 0x08, 0x19, + 0xdf, 0x29, 0x9f, 0x46, 0xe0, 0x13, 0x1a, 0x04, + 0x86, 0x1a, 0xa5, 0x28, 0x00, 0x80, 0x28, 0x04, + 0x80, 0x28, 0x01, 0xb7, 0x96, 0x06, 0x81, 0x96, + 0x0d, 0x80, 0x96, 0x96, 0x27, 0x08, 0x86, 0x27, + 0x00, 0x86, 0x27, 0x00, 0x86, 0x27, 0x00, 0x86, + 0x27, 0x00, 0x86, 0x27, 0x00, 0x86, 0x27, 0x00, + 0x86, 0x27, 0x00, 0x86, 0x27, 0x00, 0x9f, 0x1d, + 0xdd, 0x19, 0x21, 0x99, 0x30, 0x00, 0xd8, 0x30, + 0x0b, 0xe0, 0x75, 0x30, 0x19, 0x8b, 0x19, 0x03, + 0x84, 0x19, 0x80, 0x30, 0x80, 0x19, 0x80, 0x30, + 0x98, 0x19, 0x88, 0x30, 0x83, 0x38, 0x81, 0x31, + 0x87, 0x19, 0x83, 0x30, 0x83, 0x19, 0x00, 0xd5, + 0x36, 0x01, 0x81, 0x38, 0x81, 0x19, 0x82, 0x36, + 0x80, 0x19, 0xd9, 0x3e, 0x81, 0x19, 0x82, 0x3e, + 0x04, 0xaa, 0x0d, 0x00, 0xdd, 0x31, 0x00, 0x8f, + 0x19, 0x9f, 0x0d, 0xa3, 0x19, 0x0b, 0x8f, 0x3e, + 0x9e, 0x31, 0x00, 0xbf, 0x19, 0x9e, 0x31, 0xd0, + 0x19, 0xae, 0x3e, 0x80, 0x19, 0xd7, 0x3e, 0xe0, + 0x47, 0x19, 0xf0, 0x09, 0x5f, 0x30, 0xbf, 0x19, + 0xf0, 0x41, 0x9f, 0x30, 0xe4, 0x2c, 0xa0, 0x02, + 0xb6, 0xa0, 0x08, 0xaf, 0x4b, 0xe0, 0xcb, 0x9b, + 0x13, 0xdf, 0x1d, 0xd7, 0x08, 0x07, 0xa1, 0x19, + 0xe0, 0x05, 0x46, 0x82, 0x19, 0xbf, 0x46, 0x04, + 0x81, 0x46, 0x00, 0x80, 0x46, 0x00, 0x84, 0x46, + 0x17, 0x8d, 0x46, 0xac, 0x88, 0x02, 0x89, 0x19, + 0x05, 0xb7, 0x78, 0x07, 0xc5, 0x7e, 0x07, 0x8b, + 0x7e, 0x05, 0x9f, 0x20, 0xad, 0x3f, 0x80, 0x19, + 0x80, 0x3f, 0xa3, 0x7b, 0x0a, 0x80, 0x7b, 0x9c, + 0x31, 0x02, 0xcd, 0x3b, 0x00, 0x80, 0x19, 0x89, + 0x3b, 0x03, 0x81, 0x3b, 0x9e, 0x5f, 0x00, 0xb6, + 0x16, 0x08, 0x8d, 0x16, 0x01, 0x89, 0x16, 0x01, + 0x83, 0x16, 0x9f, 0x5f, 0xc2, 0x8e, 0x17, 0x84, + 0x8e, 0x96, 0x56, 0x09, 0x85, 0x27, 0x01, 0x85, + 0x27, 0x01, 0x85, 0x27, 0x08, 0x86, 0x27, 0x00, + 0x86, 0x27, 0x00, 0xaa, 0x46, 0x80, 0x19, 0x88, + 0x46, 0x80, 0x2c, 0x83, 0x46, 0x81, 0x19, 0x03, + 0xcf, 0x17, 0xad, 0x56, 0x01, 0x89, 0x56, 0x05, + 0xf0, 0x1b, 0x43, 0x31, 0x0b, 0x96, 0x31, 0x03, + 0xb0, 0x31, 0x70, 0x10, 0xa3, 0xe1, 0x0d, 0x30, + 0x01, 0xe0, 0x09, 0x30, 0x25, 0x86, 0x46, 0x0b, + 0x84, 0x05, 0x04, 0x99, 0x35, 0x00, 0x84, 0x35, + 0x00, 0x80, 0x35, 0x00, 0x81, 0x35, 0x00, 0x81, + 0x35, 0x00, 0x89, 0x35, 0xe0, 0x12, 0x04, 0x0f, + 0xe1, 0x0a, 0x04, 0x81, 0x19, 0xcf, 0x04, 0x01, + 0xb5, 0x04, 0x06, 0x80, 0x04, 0x1f, 0x8f, 0x04, + 0x8f, 0x38, 0x89, 0x19, 0x05, 0x8d, 0x38, 0x81, + 0x1d, 0xa2, 0x19, 0x00, 0x92, 0x19, 0x00, 0x83, + 0x19, 0x03, 0x84, 0x04, 0x00, 0xe0, 0x26, 0x04, + 0x01, 0x80, 0x19, 0x00, 0x9f, 0x19, 0x99, 0x46, + 0x85, 0x19, 0x99, 0x46, 0x8a, 0x19, 0x89, 0x3e, + 0x80, 0x19, 0xac, 0x3e, 0x81, 0x19, 0x9e, 0x31, + 0x02, 0x85, 0x31, 0x01, 0x85, 0x31, 0x01, 0x85, + 0x31, 0x01, 0x82, 0x31, 0x02, 0x86, 0x19, 0x00, + 0x86, 0x19, 0x09, 0x84, 0x19, 0x01, 0x8b, 0x4a, + 0x00, 0x99, 0x4a, 0x00, 0x92, 0x4a, 0x00, 0x81, + 0x4a, 0x00, 0x8e, 0x4a, 0x01, 0x8d, 0x4a, 0x21, + 0xe0, 0x1a, 0x4a, 0x04, 0x82, 0x19, 0x03, 0xac, + 0x19, 0x02, 0x88, 0x19, 0xce, 0x2c, 0x00, 0x8c, + 0x19, 0x02, 0x80, 0x2c, 0x2e, 0xac, 0x19, 0x80, + 0x38, 0x60, 0x21, 0x9c, 0x4c, 0x02, 0xb0, 0x13, + 0x0e, 0x80, 0x38, 0x9a, 0x19, 0x03, 0xa3, 0x6a, + 0x08, 0x82, 0x6a, 0x9a, 0x2a, 0x04, 0xaa, 0x6c, + 0x04, 0x9d, 0x9a, 0x00, 0x80, 0x9a, 0xa3, 0x6d, + 0x03, 0x8d, 0x6d, 0x29, 0xcf, 0x1f, 0xaf, 0x80, + 0x9d, 0x74, 0x01, 0x89, 0x74, 0x05, 0xa3, 0x73, + 0x03, 0xa3, 0x73, 0x03, 0xa7, 0x25, 0x07, 0xb3, + 0x14, 0x0a, 0x80, 0x14, 0x8a, 0x9c, 0x00, 0x8e, + 0x9c, 0x00, 0x86, 0x9c, 0x00, 0x81, 0x9c, 0x00, + 0x8a, 0x9c, 0x00, 0x8e, 0x9c, 0x00, 0x86, 0x9c, + 0x00, 0x81, 0x9c, 0x42, 0xe0, 0xd6, 0x49, 0x08, + 0x95, 0x49, 0x09, 0x87, 0x49, 0x17, 0x85, 0x46, + 0x00, 0xa9, 0x46, 0x00, 0x88, 0x46, 0x44, 0x85, + 0x1c, 0x01, 0x80, 0x1c, 0x00, 0xab, 0x1c, 0x00, + 0x81, 0x1c, 0x02, 0x80, 0x1c, 0x01, 0x80, 0x1c, + 0x95, 0x37, 0x00, 0x88, 0x37, 0x9f, 0x76, 0x9e, + 0x60, 0x07, 0x88, 0x60, 0x2f, 0x92, 0x34, 0x00, + 0x81, 0x34, 0x04, 0x84, 0x34, 0x9b, 0x79, 0x02, + 0x80, 0x79, 0x99, 0x4d, 0x04, 0x80, 0x4d, 0x3f, + 0x9f, 0x59, 0x97, 0x58, 0x03, 0x93, 0x58, 0x01, + 0xad, 0x58, 0x83, 0x40, 0x00, 0x81, 0x40, 0x04, + 0x87, 0x40, 0x00, 0x82, 0x40, 0x00, 0x9c, 0x40, + 0x01, 0x82, 0x40, 0x03, 0x89, 0x40, 0x06, 0x88, + 0x40, 0x06, 0x9f, 0x6f, 0x9f, 0x6b, 0x1f, 0xa6, + 0x52, 0x03, 0x8b, 0x52, 0x08, 0xb5, 0x06, 0x02, + 0x86, 0x06, 0x95, 0x3a, 0x01, 0x87, 0x3a, 0x92, + 0x39, 0x04, 0x87, 0x39, 0x91, 0x7a, 0x06, 0x83, + 0x7a, 0x0b, 0x86, 0x7a, 0x4f, 0xc8, 0x70, 0x36, + 0xb2, 0x69, 0x0c, 0xb2, 0x69, 0x06, 0x85, 0x69, + 0xa7, 0x32, 0x07, 0x89, 0x32, 0x60, 0xc5, 0x9e, + 0x04, 0x00, 0xa9, 0x9f, 0x00, 0x82, 0x9f, 0x01, + 0x81, 0x9f, 0x4d, 0xa7, 0x6e, 0x07, 0xa9, 0x84, + 0x15, 0x99, 0x71, 0x25, 0x9b, 0x18, 0x13, 0x96, + 0x26, 0x08, 0xcd, 0x0e, 0x03, 0xa3, 0x0e, 0x08, + 0x80, 0x0e, 0xc2, 0x3c, 0x09, 0x80, 0x3c, 0x01, + 0x98, 0x85, 0x06, 0x89, 0x85, 0x05, 0xb4, 0x15, + 0x00, 0x91, 0x15, 0x07, 0xa6, 0x4f, 0x08, 0xdf, + 0x7f, 0x00, 0x93, 0x83, 0x0a, 0x91, 0x42, 0x00, + 0xab, 0x42, 0x40, 0x86, 0x5e, 0x00, 0x80, 0x5e, + 0x00, 0x83, 0x5e, 0x00, 0x8e, 0x5e, 0x00, 0x8a, + 0x5e, 0x05, 0xba, 0x44, 0x04, 0x89, 0x44, 0x05, + 0x83, 0x2b, 0x00, 0x87, 0x2b, 0x01, 0x81, 0x2b, + 0x01, 0x95, 0x2b, 0x00, 0x86, 0x2b, 0x00, 0x81, + 0x2b, 0x00, 0x84, 0x2b, 0x00, 0x80, 0x38, 0x88, + 0x2b, 0x01, 0x81, 0x2b, 0x01, 0x82, 0x2b, 0x01, + 0x80, 0x2b, 0x05, 0x80, 0x2b, 0x04, 0x86, 0x2b, + 0x01, 0x86, 0x2b, 0x02, 0x84, 0x2b, 0x60, 0x2a, + 0xdb, 0x63, 0x00, 0x84, 0x63, 0x1d, 0xc7, 0x97, + 0x07, 0x89, 0x97, 0x60, 0x45, 0xb5, 0x81, 0x01, + 0xa5, 0x81, 0x21, 0xc4, 0x5b, 0x0a, 0x89, 0x5b, + 0x05, 0x8c, 0x5c, 0x12, 0xb9, 0x8f, 0x05, 0x89, + 0x8f, 0x35, 0x9a, 0x02, 0x01, 0x8e, 0x02, 0x03, + 0x96, 0x02, 0x60, 0x58, 0xbb, 0x22, 0x60, 0x03, + 0xd2, 0x9e, 0x0b, 0x80, 0x9e, 0x86, 0x21, 0x01, + 0x80, 0x21, 0x01, 0x87, 0x21, 0x00, 0x81, 0x21, + 0x00, 0x9d, 0x21, 0x00, 0x81, 0x21, 0x01, 0x8b, + 0x21, 0x08, 0x89, 0x21, 0x45, 0x87, 0x61, 0x01, + 0xad, 0x61, 0x01, 0x8a, 0x61, 0x1a, 0xc7, 0xa1, + 0x07, 0xd2, 0x86, 0x0c, 0x8f, 0x12, 0xb8, 0x77, + 0x60, 0xa6, 0x88, 0x0c, 0x00, 0xac, 0x0c, 0x00, + 0x8d, 0x0c, 0x09, 0x9c, 0x0c, 0x02, 0x9f, 0x53, + 0x01, 0x95, 0x53, 0x00, 0x8d, 0x53, 0x48, 0x86, + 0x54, 0x00, 0x81, 0x54, 0x00, 0xab, 0x54, 0x02, + 0x80, 0x54, 0x00, 0x81, 0x54, 0x00, 0x88, 0x54, + 0x07, 0x89, 0x54, 0x05, 0x85, 0x2e, 0x00, 0x81, + 0x2e, 0x00, 0xa4, 0x2e, 0x00, 0x81, 0x2e, 0x00, + 0x85, 0x2e, 0x06, 0x89, 0x2e, 0x60, 0xd5, 0x98, + 0x4e, 0x60, 0x56, 0x80, 0x4b, 0x0e, 0xb1, 0x90, + 0x0c, 0x80, 0x90, 0xe3, 0x39, 0x1b, 0x60, 0x05, + 0xe0, 0x0e, 0x1b, 0x00, 0x84, 0x1b, 0x0a, 0xe0, + 0x63, 0x1b, 0x69, 0xeb, 0xe0, 0x02, 0x1e, 0x0c, + 0xe3, 0xce, 0x24, 0x00, 0x88, 0x24, 0x6f, 0x66, + 0xe1, 0xe6, 0x03, 0x70, 0x11, 0x58, 0xe1, 0xd8, + 0x08, 0x06, 0x9e, 0x5d, 0x00, 0x89, 0x5d, 0x03, + 0x81, 0x5d, 0xce, 0x98, 0x00, 0x89, 0x98, 0x05, + 0x9d, 0x09, 0x01, 0x85, 0x09, 0x09, 0xc5, 0x75, + 0x09, 0x89, 0x75, 0x00, 0x86, 0x75, 0x00, 0x94, + 0x75, 0x04, 0x92, 0x75, 0x62, 0x4f, 0xda, 0x55, + 0x60, 0x04, 0xca, 0x5a, 0x03, 0xb8, 0x5a, 0x06, + 0x90, 0x5a, 0x3f, 0x80, 0x91, 0x80, 0x65, 0x81, + 0x30, 0x80, 0x43, 0x0a, 0x81, 0x30, 0x0d, 0xf0, + 0x07, 0x97, 0x91, 0x07, 0xe2, 0x9f, 0x91, 0xe1, + 0x75, 0x43, 0x29, 0x88, 0x91, 0x70, 0x12, 0x86, + 0x83, 0x3e, 0x00, 0x86, 0x3e, 0x00, 0x81, 0x3e, + 0x00, 0x80, 0x3e, 0xe0, 0xbe, 0x36, 0x82, 0x3e, + 0x2c, 0x82, 0x36, 0x10, 0x83, 0x3e, 0x07, 0xe1, + 0x2b, 0x65, 0x68, 0xa3, 0xe0, 0x0a, 0x23, 0x04, + 0x8c, 0x23, 0x02, 0x88, 0x23, 0x06, 0x89, 0x23, + 0x01, 0x83, 0x23, 0x83, 0x19, 0x70, 0x01, 0xfb, + 0xad, 0x38, 0x01, 0x96, 0x38, 0x08, 0xe0, 0x13, + 0x19, 0x3b, 0xe0, 0x95, 0x19, 0x09, 0xa6, 0x19, + 0x01, 0xbd, 0x19, 0x82, 0x38, 0x90, 0x19, 0x87, + 0x38, 0x81, 0x19, 0x86, 0x38, 0x9d, 0x19, 0x83, + 0x38, 0xbc, 0x19, 0x14, 0xc5, 0x2c, 0x60, 0x39, + 0x93, 0x19, 0x0b, 0xd6, 0x19, 0x08, 0x98, 0x19, + 0x60, 0x26, 0xd4, 0x19, 0x00, 0xc6, 0x19, 0x00, + 0x81, 0x19, 0x01, 0x80, 0x19, 0x01, 0x81, 0x19, + 0x01, 0x83, 0x19, 0x00, 0x8b, 0x19, 0x00, 0x80, + 0x19, 0x00, 0x86, 0x19, 0x00, 0xc0, 0x19, 0x00, + 0x83, 0x19, 0x01, 0x87, 0x19, 0x00, 0x86, 0x19, + 0x00, 0x9b, 0x19, 0x00, 0x83, 0x19, 0x00, 0x84, + 0x19, 0x00, 0x80, 0x19, 0x02, 0x86, 0x19, 0x00, + 0xe0, 0xf3, 0x19, 0x01, 0xe0, 0xc3, 0x19, 0x01, + 0xb1, 0x19, 0xe2, 0x2b, 0x82, 0x0e, 0x84, 0x82, + 0x00, 0x8e, 0x82, 0x63, 0xef, 0x9e, 0x46, 0x60, + 0x80, 0x86, 0x29, 0x00, 0x90, 0x29, 0x01, 0x86, + 0x29, 0x00, 0x81, 0x29, 0x00, 0x84, 0x29, 0x60, + 0x74, 0xac, 0x66, 0x02, 0x8d, 0x66, 0x01, 0x89, + 0x66, 0x03, 0x81, 0x66, 0x60, 0xdf, 0x9e, 0x99, + 0x10, 0xb9, 0x9d, 0x04, 0x80, 0x9d, 0x64, 0x7f, + 0x86, 0x27, 0x00, 0x83, 0x27, 0x00, 0x81, 0x27, + 0x00, 0x8e, 0x27, 0x00, 0xe0, 0x64, 0x57, 0x01, + 0x8f, 0x57, 0x28, 0xcb, 0x01, 0x03, 0x89, 0x01, + 0x03, 0x81, 0x01, 0x62, 0xb0, 0xc3, 0x19, 0x4b, + 0xbc, 0x19, 0x60, 0x61, 0x83, 0x04, 0x00, 0x9a, + 0x04, 0x00, 0x81, 0x04, 0x00, 0x80, 0x04, 0x01, + 0x80, 0x04, 0x00, 0x89, 0x04, 0x00, 0x83, 0x04, + 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x05, 0x80, + 0x04, 0x03, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, + 0x80, 0x04, 0x00, 0x82, 0x04, 0x00, 0x81, 0x04, + 0x00, 0x80, 0x04, 0x01, 0x80, 0x04, 0x00, 0x80, + 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, + 0x80, 0x04, 0x00, 0x81, 0x04, 0x00, 0x80, 0x04, + 0x01, 0x83, 0x04, 0x00, 0x86, 0x04, 0x00, 0x83, + 0x04, 0x00, 0x83, 0x04, 0x00, 0x80, 0x04, 0x00, + 0x89, 0x04, 0x00, 0x90, 0x04, 0x04, 0x82, 0x04, + 0x00, 0x84, 0x04, 0x00, 0x90, 0x04, 0x33, 0x81, + 0x04, 0x60, 0xad, 0xab, 0x19, 0x03, 0xe0, 0x03, + 0x19, 0x0b, 0x8e, 0x19, 0x01, 0x8e, 0x19, 0x00, + 0x8e, 0x19, 0x00, 0xa4, 0x19, 0x09, 0xe0, 0x4d, + 0x19, 0x37, 0x99, 0x19, 0x80, 0x36, 0x81, 0x19, + 0x0c, 0xab, 0x19, 0x03, 0x88, 0x19, 0x06, 0x81, + 0x19, 0x0d, 0x85, 0x19, 0x60, 0x39, 0xe3, 0x77, + 0x19, 0x04, 0x8f, 0x19, 0x02, 0x8c, 0x19, 0x02, + 0xe0, 0x13, 0x19, 0x0b, 0xd8, 0x19, 0x06, 0x8b, + 0x19, 0x03, 0x80, 0x19, 0x0e, 0x8b, 0x19, 0x03, + 0xb7, 0x19, 0x07, 0x89, 0x19, 0x05, 0xa7, 0x19, + 0x07, 0x9d, 0x19, 0x01, 0x81, 0x19, 0x4d, 0xe0, + 0xf3, 0x19, 0x0b, 0x8d, 0x19, 0x01, 0x84, 0x19, + 0x02, 0x84, 0x19, 0x02, 0x86, 0x19, 0x08, 0x9c, + 0x19, 0x02, 0x8a, 0x19, 0x04, 0x85, 0x19, 0x09, + 0x89, 0x19, 0x05, 0x87, 0x19, 0x07, 0x86, 0x19, + 0x08, 0xe0, 0x32, 0x19, 0x00, 0xb6, 0x19, 0x24, + 0x89, 0x19, 0x63, 0xa5, 0xf0, 0x96, 0x7f, 0x30, + 0x1f, 0xef, 0xd8, 0x30, 0x06, 0xe0, 0x7d, 0x30, + 0x01, 0xf0, 0x06, 0x21, 0x30, 0x0d, 0xf0, 0x0c, + 0xd0, 0x30, 0x6b, 0xbe, 0xe1, 0xbd, 0x30, 0x65, + 0x81, 0xf0, 0x02, 0xea, 0x30, 0x7a, 0xdc, 0x55, + 0x80, 0x19, 0x1d, 0xdf, 0x19, 0x60, 0x1f, 0xe0, + 0x8f, 0x38, +}; + +static const uint8_t unicode_script_ext_table[828] = { + 0x82, 0xc1, 0x00, 0x00, 0x01, 0x2c, 0x01, 0x00, + 0x00, 0x01, 0x2c, 0x1c, 0x00, 0x0c, 0x01, 0x46, + 0x80, 0x92, 0x00, 0x00, 0x02, 0x1d, 0x6c, 0x00, + 0x02, 0x1d, 0x29, 0x01, 0x02, 0x1d, 0x46, 0x00, + 0x02, 0x1d, 0x29, 0x81, 0x03, 0x00, 0x00, 0x06, + 0x04, 0x64, 0x32, 0x89, 0x93, 0x9f, 0x0d, 0x00, + 0x00, 0x06, 0x04, 0x64, 0x32, 0x89, 0x93, 0x9f, + 0x00, 0x03, 0x04, 0x89, 0x93, 0x01, 0x00, 0x00, + 0x07, 0x01, 0x04, 0x64, 0x32, 0x89, 0x93, 0x9f, + 0x1f, 0x00, 0x00, 0x09, 0x01, 0x04, 0x51, 0x52, + 0x71, 0x7a, 0x32, 0x84, 0x89, 0x09, 0x00, 0x0a, + 0x02, 0x04, 0x89, 0x09, 0x00, 0x09, 0x03, 0x04, + 0x93, 0x9f, 0x05, 0x00, 0x00, 0x02, 0x04, 0x89, + 0x62, 0x00, 0x00, 0x02, 0x04, 0x32, 0x81, 0xfb, + 0x00, 0x00, 0x0d, 0x0b, 0x20, 0x2b, 0x2d, 0x2f, + 0x3d, 0x46, 0x50, 0x72, 0x7f, 0x90, 0x92, 0x97, + 0x00, 0x0c, 0x0b, 0x20, 0x2b, 0x2d, 0x2f, 0x3d, + 0x46, 0x50, 0x72, 0x90, 0x92, 0x97, 0x10, 0x00, + 0x00, 0x14, 0x0b, 0x20, 0x22, 0x2e, 0x54, 0x2b, + 0x2d, 0x2f, 0x3d, 0x4f, 0x50, 0x61, 0x72, 0x44, + 0x83, 0x88, 0x8f, 0x90, 0x92, 0x97, 0x00, 0x15, + 0x0b, 0x20, 0x22, 0x2e, 0x54, 0x2b, 0x2d, 0x2f, + 0x3d, 0x48, 0x4f, 0x50, 0x61, 0x72, 0x44, 0x83, + 0x88, 0x8f, 0x90, 0x92, 0x97, 0x09, 0x04, 0x20, + 0x22, 0x3c, 0x4f, 0x75, 0x00, 0x09, 0x03, 0x0b, + 0x15, 0x88, 0x75, 0x00, 0x09, 0x02, 0x2f, 0x5e, + 0x75, 0x00, 0x09, 0x02, 0x2d, 0x42, 0x80, 0x75, + 0x00, 0x0d, 0x02, 0x2b, 0x90, 0x80, 0x71, 0x00, + 0x09, 0x02, 0x3d, 0x61, 0x82, 0xcf, 0x00, 0x09, + 0x03, 0x15, 0x5f, 0x8c, 0x80, 0x30, 0x00, 0x00, + 0x02, 0x28, 0x46, 0x85, 0xb8, 0x00, 0x01, 0x04, + 0x11, 0x33, 0x8b, 0x8a, 0x80, 0x4a, 0x00, 0x01, + 0x02, 0x5c, 0x78, 0x00, 0x00, 0x00, 0x02, 0x5c, + 0x78, 0x84, 0x49, 0x00, 0x00, 0x04, 0x0b, 0x20, + 0x2b, 0x3d, 0x00, 0x01, 0x20, 0x00, 0x04, 0x0b, + 0x20, 0x2b, 0x3d, 0x00, 0x02, 0x20, 0x2b, 0x00, + 0x01, 0x20, 0x01, 0x02, 0x0b, 0x20, 0x00, 0x02, + 0x20, 0x7f, 0x00, 0x02, 0x0b, 0x20, 0x00, 0x02, + 0x20, 0x7f, 0x00, 0x06, 0x20, 0x3d, 0x50, 0x72, + 0x90, 0x92, 0x00, 0x01, 0x20, 0x01, 0x02, 0x20, + 0x7f, 0x01, 0x01, 0x20, 0x00, 0x02, 0x20, 0x7f, + 0x00, 0x02, 0x0b, 0x20, 0x06, 0x01, 0x20, 0x00, + 0x02, 0x20, 0x61, 0x00, 0x02, 0x0b, 0x20, 0x01, + 0x01, 0x20, 0x00, 0x02, 0x0b, 0x20, 0x03, 0x01, + 0x20, 0x00, 0x08, 0x0b, 0x20, 0x2b, 0x3d, 0x61, + 0x72, 0x92, 0x97, 0x00, 0x02, 0x20, 0x2b, 0x00, + 0x03, 0x20, 0x2b, 0x3d, 0x01, 0x02, 0x0b, 0x20, + 0x00, 0x01, 0x0b, 0x01, 0x02, 0x20, 0x2b, 0x00, + 0x01, 0x61, 0x80, 0x44, 0x00, 0x01, 0x01, 0x2c, + 0x35, 0x00, 0x00, 0x02, 0x1d, 0x89, 0x00, 0x00, + 0x00, 0x01, 0x89, 0x81, 0xb3, 0x00, 0x00, 0x02, + 0x46, 0x5c, 0x80, 0x3f, 0x00, 0x00, 0x03, 0x20, + 0x2b, 0x46, 0x8c, 0xd1, 0x00, 0x00, 0x02, 0x1d, + 0x29, 0x81, 0x3c, 0x00, 0x01, 0x06, 0x0d, 0x31, + 0x30, 0x36, 0x3e, 0xa0, 0x00, 0x05, 0x0d, 0x31, + 0x30, 0x36, 0x3e, 0x01, 0x00, 0x00, 0x01, 0x30, + 0x00, 0x00, 0x09, 0x06, 0x0d, 0x31, 0x30, 0x36, + 0x3e, 0xa0, 0x00, 0x00, 0x00, 0x05, 0x0d, 0x31, + 0x30, 0x36, 0x3e, 0x07, 0x06, 0x0d, 0x31, 0x30, + 0x36, 0x3e, 0xa0, 0x03, 0x05, 0x0d, 0x31, 0x30, + 0x36, 0x3e, 0x09, 0x00, 0x03, 0x02, 0x0d, 0x30, + 0x01, 0x00, 0x00, 0x05, 0x0d, 0x31, 0x30, 0x36, + 0x3e, 0x04, 0x02, 0x36, 0x3e, 0x00, 0x00, 0x00, + 0x05, 0x0d, 0x31, 0x30, 0x36, 0x3e, 0x03, 0x00, + 0x01, 0x03, 0x30, 0x36, 0x3e, 0x01, 0x01, 0x30, + 0x58, 0x00, 0x03, 0x02, 0x36, 0x3e, 0x02, 0x00, + 0x00, 0x02, 0x36, 0x3e, 0x59, 0x00, 0x00, 0x06, + 0x0d, 0x31, 0x30, 0x36, 0x3e, 0xa0, 0x00, 0x02, + 0x36, 0x3e, 0x80, 0x12, 0x00, 0x0f, 0x01, 0x30, + 0x1f, 0x00, 0x23, 0x01, 0x30, 0x3b, 0x00, 0x27, + 0x01, 0x30, 0x37, 0x00, 0x30, 0x01, 0x30, 0x0e, + 0x00, 0x0b, 0x01, 0x30, 0x32, 0x00, 0x00, 0x01, + 0x30, 0x57, 0x00, 0x18, 0x01, 0x30, 0x09, 0x00, + 0x04, 0x01, 0x30, 0x5f, 0x00, 0x1e, 0x01, 0x30, + 0xc0, 0x31, 0xef, 0x00, 0x00, 0x02, 0x1d, 0x29, + 0x80, 0x0f, 0x00, 0x07, 0x02, 0x30, 0x46, 0x80, + 0xa7, 0x00, 0x02, 0x0e, 0x20, 0x22, 0x2d, 0x2f, + 0x42, 0x3d, 0x3c, 0x4f, 0x50, 0x5b, 0x61, 0x44, + 0x8f, 0x97, 0x02, 0x0d, 0x20, 0x22, 0x2d, 0x2f, + 0x42, 0x3d, 0x3c, 0x4f, 0x5b, 0x61, 0x44, 0x8f, + 0x97, 0x03, 0x0b, 0x20, 0x22, 0x2d, 0x2f, 0x42, + 0x3c, 0x4f, 0x5b, 0x44, 0x8f, 0x97, 0x80, 0x36, + 0x00, 0x00, 0x02, 0x0b, 0x20, 0x00, 0x00, 0x00, + 0x02, 0x20, 0x90, 0x39, 0x00, 0x00, 0x03, 0x3f, + 0x46, 0x5f, 0x80, 0x1f, 0x00, 0x00, 0x02, 0x10, + 0x3b, 0xc0, 0x12, 0xed, 0x00, 0x01, 0x02, 0x04, + 0x64, 0x80, 0x31, 0x00, 0x00, 0x02, 0x04, 0x93, + 0x09, 0x00, 0x00, 0x02, 0x04, 0x93, 0x46, 0x00, + 0x01, 0x05, 0x0d, 0x31, 0x30, 0x36, 0x3e, 0x80, + 0x99, 0x00, 0x04, 0x06, 0x0d, 0x31, 0x30, 0x36, + 0x3e, 0xa0, 0x09, 0x00, 0x00, 0x02, 0x36, 0x3e, + 0x2c, 0x00, 0x01, 0x02, 0x36, 0x3e, 0x80, 0xdf, + 0x00, 0x01, 0x03, 0x1e, 0x1c, 0x4a, 0x00, 0x02, + 0x1c, 0x4a, 0x03, 0x00, 0x2c, 0x03, 0x1c, 0x49, + 0x4a, 0x02, 0x00, 0x08, 0x02, 0x1c, 0x4a, 0x81, + 0x1f, 0x00, 0x1b, 0x02, 0x04, 0x1a, 0x87, 0x75, + 0x00, 0x00, 0x02, 0x52, 0x71, 0x87, 0x8d, 0x00, + 0x00, 0x02, 0x2b, 0x90, 0x00, 0x00, 0x00, 0x02, + 0x2b, 0x90, 0x36, 0x00, 0x01, 0x02, 0x2b, 0x90, + 0x8c, 0x12, 0x00, 0x01, 0x02, 0x2b, 0x90, 0x00, + 0x00, 0x00, 0x02, 0x2b, 0x90, 0xc0, 0x5c, 0x4b, + 0x00, 0x03, 0x01, 0x23, 0x96, 0x3b, 0x00, 0x11, + 0x01, 0x30, 0x9e, 0x5d, 0x00, 0x01, 0x01, 0x30, + 0xce, 0xcd, 0x2d, 0x00, +}; + +static const uint8_t unicode_prop_Hyphen_table[28] = { + 0xac, 0x80, 0xfe, 0x80, 0x44, 0xdb, 0x80, 0x52, + 0x7a, 0x80, 0x48, 0x08, 0x81, 0x4e, 0x04, 0x80, + 0x42, 0xe2, 0x80, 0x60, 0xcd, 0x66, 0x80, 0x40, + 0xa8, 0x80, 0xd6, 0x80, +}; + +static const uint8_t unicode_prop_Other_Math_table[200] = { + 0xdd, 0x80, 0x43, 0x70, 0x11, 0x80, 0x99, 0x09, + 0x81, 0x5c, 0x1f, 0x80, 0x9a, 0x82, 0x8a, 0x80, + 0x9f, 0x83, 0x97, 0x81, 0x8d, 0x81, 0xc0, 0x8c, + 0x18, 0x11, 0x1c, 0x91, 0x03, 0x01, 0x89, 0x00, + 0x14, 0x28, 0x11, 0x09, 0x02, 0x05, 0x13, 0x24, + 0xca, 0x21, 0x18, 0x08, 0x08, 0x00, 0x21, 0x0b, + 0x0b, 0x91, 0x09, 0x00, 0x06, 0x00, 0x29, 0x41, + 0x21, 0x83, 0x40, 0xa7, 0x08, 0x80, 0x97, 0x80, + 0x90, 0x80, 0x41, 0xbc, 0x81, 0x8b, 0x88, 0x24, + 0x21, 0x09, 0x14, 0x8d, 0x00, 0x01, 0x85, 0x97, + 0x81, 0xb8, 0x00, 0x80, 0x9c, 0x83, 0x88, 0x81, + 0x41, 0x55, 0x81, 0x9e, 0x89, 0x41, 0x92, 0x95, + 0xbe, 0x83, 0x9f, 0x81, 0x60, 0xd4, 0x62, 0x00, + 0x03, 0x80, 0x40, 0xd2, 0x00, 0x80, 0x60, 0xd4, + 0xc0, 0xd4, 0x80, 0xc6, 0x01, 0x08, 0x09, 0x0b, + 0x80, 0x8b, 0x00, 0x06, 0x80, 0xc0, 0x03, 0x0f, + 0x06, 0x80, 0x9b, 0x03, 0x04, 0x00, 0x16, 0x80, + 0x41, 0x53, 0x81, 0x98, 0x80, 0x98, 0x80, 0x9e, + 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80, 0x9e, + 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x07, 0x81, + 0xb1, 0x55, 0xff, 0x18, 0x9a, 0x01, 0x00, 0x08, + 0x80, 0x89, 0x03, 0x00, 0x00, 0x28, 0x18, 0x00, + 0x00, 0x02, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x0b, 0x06, 0x03, 0x03, 0x00, + 0x80, 0x89, 0x80, 0x90, 0x22, 0x04, 0x80, 0x90, +}; + +static const uint8_t unicode_prop_Other_Alphabetic_table[417] = { + 0x43, 0x44, 0x80, 0x42, 0x69, 0x8d, 0x00, 0x01, + 0x01, 0x00, 0xc7, 0x8a, 0xaf, 0x8c, 0x06, 0x8f, + 0x80, 0xe4, 0x33, 0x19, 0x0b, 0x80, 0xa2, 0x80, + 0x9d, 0x8f, 0xe5, 0x8a, 0xe4, 0x0a, 0x88, 0x02, + 0x03, 0x40, 0xa6, 0x8b, 0x16, 0x85, 0x93, 0xb5, + 0x09, 0x8e, 0x01, 0x22, 0x89, 0x81, 0x9c, 0x82, + 0xb9, 0x31, 0x09, 0x81, 0x89, 0x80, 0x89, 0x81, + 0x9c, 0x82, 0xb9, 0x23, 0x09, 0x0b, 0x80, 0x9d, + 0x0a, 0x80, 0x8a, 0x82, 0xb9, 0x38, 0x10, 0x81, + 0x94, 0x81, 0x95, 0x13, 0x82, 0xb9, 0x31, 0x09, + 0x81, 0x88, 0x81, 0x89, 0x81, 0x9d, 0x80, 0xba, + 0x22, 0x10, 0x82, 0x89, 0x80, 0xa7, 0x83, 0xb9, + 0x30, 0x10, 0x17, 0x81, 0x8a, 0x81, 0x9c, 0x82, + 0xb9, 0x30, 0x10, 0x17, 0x81, 0x8a, 0x81, 0x9b, + 0x83, 0xb9, 0x30, 0x10, 0x82, 0x89, 0x80, 0x89, + 0x81, 0x9c, 0x82, 0xca, 0x28, 0x00, 0x87, 0x91, + 0x81, 0xbc, 0x01, 0x86, 0x91, 0x80, 0xe2, 0x01, + 0x28, 0x81, 0x8f, 0x80, 0x40, 0xa2, 0x90, 0x8a, + 0x8a, 0x80, 0xa3, 0xed, 0x8b, 0x00, 0x0b, 0x96, + 0x1b, 0x10, 0x11, 0x32, 0x83, 0x8c, 0x8b, 0x00, + 0x89, 0x83, 0x46, 0x73, 0x81, 0x9d, 0x81, 0x9d, + 0x81, 0x9d, 0x81, 0xc1, 0x92, 0x40, 0xbb, 0x81, + 0xa1, 0x80, 0xf5, 0x8b, 0x83, 0x88, 0x40, 0xdd, + 0x84, 0xb8, 0x89, 0x81, 0x93, 0xc9, 0x81, 0x8a, + 0x82, 0xb0, 0x84, 0xaf, 0x8e, 0xbb, 0x82, 0x9d, + 0x88, 0x09, 0xb8, 0x8a, 0xb1, 0x92, 0x41, 0xaf, + 0x8d, 0x46, 0xc0, 0xb3, 0x48, 0xf5, 0x9f, 0x60, + 0x78, 0x73, 0x87, 0xa1, 0x81, 0x41, 0x61, 0x07, + 0x80, 0x96, 0x84, 0xd7, 0x81, 0xb1, 0x8f, 0x00, + 0xb8, 0x80, 0xa5, 0x84, 0x9b, 0x8b, 0xac, 0x83, + 0xaf, 0x8b, 0xa4, 0x80, 0xc2, 0x8d, 0x8b, 0x07, + 0x81, 0xac, 0x82, 0xb1, 0x00, 0x11, 0x0c, 0x80, + 0xab, 0x24, 0x80, 0x40, 0xec, 0x87, 0x60, 0x4f, + 0x32, 0x80, 0x48, 0x56, 0x84, 0x46, 0x85, 0x10, + 0x0c, 0x83, 0x43, 0x13, 0x83, 0x41, 0x82, 0x81, + 0x41, 0x52, 0x82, 0xb4, 0x8d, 0xac, 0x81, 0x8c, + 0x80, 0xac, 0x88, 0x88, 0x80, 0xbc, 0x82, 0xa3, + 0x8b, 0x91, 0x81, 0xb8, 0x82, 0xaf, 0x8c, 0x8d, + 0x81, 0xdb, 0x88, 0x08, 0x28, 0x40, 0x9f, 0x89, + 0x96, 0x83, 0xb9, 0x31, 0x09, 0x81, 0x89, 0x80, + 0x89, 0x81, 0x40, 0xd0, 0x8c, 0x02, 0xe9, 0x91, + 0x40, 0xec, 0x31, 0x86, 0x9c, 0x81, 0xd1, 0x8e, + 0x00, 0xe9, 0x8a, 0xe6, 0x8d, 0x41, 0x00, 0x8c, + 0x40, 0xf6, 0x28, 0x09, 0x0a, 0x00, 0x80, 0x40, + 0x8d, 0x31, 0x2b, 0x80, 0x9b, 0x89, 0xa9, 0x20, + 0x83, 0x91, 0x8a, 0xad, 0x8d, 0x41, 0x96, 0x38, + 0x86, 0xd2, 0x95, 0x80, 0x8d, 0xf9, 0x2a, 0x00, + 0x08, 0x10, 0x02, 0x80, 0xc1, 0x20, 0x08, 0x83, + 0x41, 0x5b, 0x83, 0x60, 0x50, 0x57, 0x00, 0xb6, + 0x33, 0xdc, 0x81, 0x60, 0x4c, 0xab, 0x80, 0x60, + 0x23, 0x60, 0x30, 0x90, 0x0e, 0x01, 0x04, 0x49, + 0x1b, 0x80, 0x47, 0xe7, 0x99, 0x85, 0x99, 0x85, + 0x99, +}; + +static const uint8_t unicode_prop_Other_Lowercase_table[59] = { + 0x40, 0xa9, 0x80, 0x8e, 0x80, 0x41, 0xf4, 0x88, + 0x31, 0x9d, 0x84, 0xdf, 0x80, 0xb3, 0x80, 0x59, + 0xb0, 0xbe, 0x8c, 0x80, 0xa1, 0xa4, 0x42, 0xb0, + 0x80, 0x8c, 0x80, 0x8f, 0x8c, 0x40, 0xd2, 0x8f, + 0x43, 0x4f, 0x99, 0x47, 0x91, 0x81, 0x60, 0x7a, + 0x1d, 0x81, 0x40, 0xd1, 0x80, 0x40, 0x86, 0x81, + 0x43, 0x61, 0x83, 0x60, 0x5c, 0x1f, 0x01, 0x10, + 0xa9, 0x80, 0x88, +}; + +static const uint8_t unicode_prop_Other_Uppercase_table[15] = { + 0x60, 0x21, 0x5f, 0x8f, 0x43, 0x45, 0x99, 0x61, + 0xcc, 0x5f, 0x99, 0x85, 0x99, 0x85, 0x99, +}; + +static const uint8_t unicode_prop_Other_Grapheme_Extend_table[65] = { + 0x49, 0xbd, 0x80, 0x97, 0x80, 0x41, 0x65, 0x80, + 0x97, 0x80, 0xe5, 0x80, 0x97, 0x80, 0x40, 0xe9, + 0x80, 0x91, 0x81, 0xe6, 0x80, 0x97, 0x80, 0xf6, + 0x80, 0x8e, 0x80, 0x4d, 0x54, 0x80, 0x44, 0xd5, + 0x80, 0x50, 0x20, 0x81, 0x60, 0xcf, 0x6d, 0x81, + 0x53, 0x9d, 0x80, 0x97, 0x80, 0x41, 0x57, 0x80, + 0x8b, 0x80, 0x40, 0xf0, 0x80, 0x43, 0x7f, 0x80, + 0x60, 0xb8, 0x33, 0x07, 0x84, 0x6c, 0x2e, 0xac, + 0xdf, +}; + +static const uint8_t unicode_prop_Other_Default_Ignorable_Code_Point_table[32] = { + 0x43, 0x4e, 0x80, 0x4e, 0x0e, 0x81, 0x46, 0x52, + 0x81, 0x48, 0xae, 0x80, 0x50, 0xfd, 0x80, 0x60, + 0xce, 0x3a, 0x80, 0xce, 0x88, 0x6d, 0x00, 0x06, + 0x00, 0x9d, 0xdf, 0xff, 0x40, 0xef, 0x4e, 0x0f, +}; + +static const uint8_t unicode_prop_Other_ID_Start_table[11] = { + 0x58, 0x84, 0x81, 0x48, 0x90, 0x80, 0x94, 0x80, + 0x4f, 0x6b, 0x81, +}; + +static const uint8_t unicode_prop_Other_ID_Continue_table[12] = { + 0x40, 0xb6, 0x80, 0x42, 0xce, 0x80, 0x4f, 0xe0, + 0x88, 0x46, 0x67, 0x80, +}; + +static const uint8_t unicode_prop_Prepended_Concatenation_Mark_table[19] = { + 0x45, 0xff, 0x85, 0x40, 0xd6, 0x80, 0xb0, 0x80, + 0x41, 0x7f, 0x81, 0xcf, 0x80, 0x61, 0x07, 0xd9, + 0x80, 0x8e, 0x80, +}; + +static const uint8_t unicode_prop_XID_Start1_table[31] = { + 0x43, 0x79, 0x80, 0x4a, 0xb7, 0x80, 0xfe, 0x80, + 0x60, 0x21, 0xe6, 0x81, 0x60, 0xcb, 0xc0, 0x85, + 0x41, 0x95, 0x81, 0xf3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x41, 0x1e, 0x81, +}; + +static const uint8_t unicode_prop_XID_Continue1_table[23] = { + 0x43, 0x79, 0x80, 0x60, 0x2d, 0x1f, 0x81, 0x60, + 0xcb, 0xc0, 0x85, 0x41, 0x95, 0x81, 0xf3, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +}; + +static const uint8_t unicode_prop_Changes_When_Titlecased1_table[22] = { + 0x41, 0xc3, 0x08, 0x08, 0x81, 0xa4, 0x81, 0x4e, + 0xdc, 0xaa, 0x0a, 0x4e, 0x87, 0x3f, 0x3f, 0x87, + 0x8b, 0x80, 0x8e, 0x80, 0xae, 0x80, +}; + +static const uint8_t unicode_prop_Changes_When_Casefolded1_table[33] = { + 0x40, 0xde, 0x80, 0xcf, 0x80, 0x97, 0x80, 0x44, + 0x3c, 0x80, 0x59, 0x11, 0x80, 0x40, 0xe4, 0x3f, + 0x3f, 0x87, 0x89, 0x11, 0x05, 0x02, 0x11, 0x80, + 0xa9, 0x11, 0x80, 0x60, 0xdb, 0x07, 0x86, 0x8b, + 0x84, +}; + +static const uint8_t unicode_prop_Changes_When_NFKC_Casefolded1_table[448] = { + 0x40, 0x9f, 0x06, 0x00, 0x01, 0x00, 0x01, 0x12, + 0x10, 0x82, 0x9f, 0x80, 0xcf, 0x01, 0x80, 0x8b, + 0x07, 0x80, 0xfb, 0x01, 0x01, 0x80, 0xa5, 0x80, + 0x40, 0xbb, 0x88, 0x9e, 0x29, 0x84, 0xda, 0x08, + 0x81, 0x89, 0x80, 0xa3, 0x04, 0x02, 0x04, 0x08, + 0x80, 0xc9, 0x82, 0x9c, 0x80, 0x41, 0x93, 0x80, + 0x40, 0x93, 0x80, 0xd7, 0x83, 0x42, 0xde, 0x87, + 0xfb, 0x08, 0x80, 0xd2, 0x01, 0x80, 0xa1, 0x11, + 0x80, 0x40, 0xfc, 0x81, 0x42, 0xd4, 0x80, 0xfe, + 0x80, 0xa7, 0x81, 0xad, 0x80, 0xb5, 0x80, 0x88, + 0x03, 0x03, 0x03, 0x80, 0x8b, 0x80, 0x88, 0x00, + 0x26, 0x80, 0x90, 0x80, 0x88, 0x03, 0x03, 0x03, + 0x80, 0x8b, 0x80, 0x41, 0x41, 0x80, 0xe1, 0x81, + 0x46, 0x52, 0x81, 0xd4, 0x84, 0x45, 0x1b, 0x10, + 0x8a, 0x80, 0x91, 0x80, 0x9b, 0x8c, 0x80, 0xa1, + 0xa4, 0x40, 0xd9, 0x80, 0x40, 0xd5, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0x3f, 0x87, + 0x89, 0x11, 0x04, 0x00, 0x29, 0x04, 0x12, 0x80, + 0x88, 0x12, 0x80, 0x88, 0x11, 0x11, 0x04, 0x08, + 0x8f, 0x00, 0x20, 0x8b, 0x12, 0x2a, 0x08, 0x0b, + 0x00, 0x07, 0x82, 0x8c, 0x06, 0x92, 0x81, 0x9a, + 0x80, 0x8c, 0x8a, 0x80, 0xd6, 0x18, 0x10, 0x8a, + 0x01, 0x0c, 0x0a, 0x00, 0x10, 0x11, 0x02, 0x06, + 0x05, 0x1c, 0x85, 0x8f, 0x8f, 0x8f, 0x88, 0x80, + 0x40, 0xa1, 0x08, 0x81, 0x40, 0xf7, 0x81, 0x41, + 0x34, 0xd5, 0x99, 0x9a, 0x45, 0x20, 0x80, 0xe6, + 0x82, 0xe4, 0x80, 0x41, 0x9e, 0x81, 0x40, 0xf0, + 0x80, 0x41, 0x2e, 0x80, 0xd2, 0x80, 0x8b, 0x40, + 0xd5, 0xa9, 0x80, 0xb4, 0x00, 0x82, 0xdf, 0x09, + 0x80, 0xde, 0x80, 0xb0, 0xdd, 0x82, 0x8d, 0xdf, + 0x9e, 0x80, 0xa7, 0x87, 0xae, 0x80, 0x41, 0x7f, + 0x60, 0x72, 0x9b, 0x81, 0x40, 0xd1, 0x80, 0x40, + 0x80, 0x12, 0x81, 0x43, 0x61, 0x83, 0x88, 0x80, + 0x60, 0x4d, 0x95, 0x41, 0x0d, 0x08, 0x00, 0x81, + 0x89, 0x00, 0x00, 0x09, 0x82, 0xc3, 0x81, 0xe9, + 0xa5, 0x86, 0x8b, 0x24, 0x00, 0x97, 0x04, 0x00, + 0x01, 0x01, 0x80, 0xeb, 0xa0, 0x41, 0x6a, 0x91, + 0xbf, 0x81, 0xb5, 0xa7, 0x8c, 0x82, 0x99, 0x95, + 0x94, 0x81, 0x8b, 0x80, 0x92, 0x03, 0x1a, 0x00, + 0x80, 0x40, 0x86, 0x08, 0x80, 0x9f, 0x99, 0x40, + 0x83, 0x15, 0x0d, 0x0d, 0x0a, 0x16, 0x06, 0x80, + 0x88, 0x47, 0x87, 0x20, 0xa9, 0x80, 0x88, 0x60, + 0xb4, 0xe4, 0x83, 0x54, 0xb9, 0x86, 0x8d, 0x87, + 0xbf, 0x85, 0x42, 0x3e, 0xd4, 0x80, 0xc6, 0x01, + 0x08, 0x09, 0x0b, 0x80, 0x8b, 0x00, 0x06, 0x80, + 0xc0, 0x03, 0x0f, 0x06, 0x80, 0x9b, 0x03, 0x04, + 0x00, 0x16, 0x80, 0x41, 0x53, 0x81, 0x41, 0x23, + 0x81, 0xb1, 0x55, 0xff, 0x18, 0x9a, 0x01, 0x00, + 0x08, 0x80, 0x89, 0x03, 0x00, 0x00, 0x28, 0x18, + 0x00, 0x00, 0x02, 0x01, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x0b, 0x06, 0x03, 0x03, + 0x00, 0x80, 0x89, 0x80, 0x90, 0x22, 0x04, 0x80, + 0x90, 0x42, 0x43, 0x8a, 0x84, 0x9e, 0x80, 0x9f, + 0x99, 0x82, 0xa2, 0x80, 0xee, 0x82, 0x8c, 0xab, + 0x83, 0x88, 0x31, 0x49, 0x9d, 0x89, 0x60, 0xfc, + 0x05, 0x42, 0x1d, 0x6b, 0x05, 0xe1, 0x4f, 0xff, +}; + +static const uint8_t unicode_prop_ASCII_Hex_Digit_table[5] = { + 0xaf, 0x89, 0x35, 0x99, 0x85, +}; + +static const uint8_t unicode_prop_Bidi_Control_table[10] = { + 0x46, 0x1b, 0x80, 0x59, 0xf0, 0x81, 0x99, 0x84, + 0xb6, 0x83, +}; + +static const uint8_t unicode_prop_Dash_table[55] = { + 0xac, 0x80, 0x45, 0x5b, 0x80, 0xb2, 0x80, 0x4e, + 0x40, 0x80, 0x44, 0x04, 0x80, 0x48, 0x08, 0x85, + 0xbc, 0x80, 0xa6, 0x80, 0x8e, 0x80, 0x41, 0x85, + 0x80, 0x4c, 0x03, 0x01, 0x80, 0x9e, 0x0b, 0x80, + 0x9b, 0x80, 0x41, 0xbd, 0x80, 0x92, 0x80, 0xee, + 0x80, 0x60, 0xcd, 0x8f, 0x81, 0xa4, 0x80, 0x89, + 0x80, 0x40, 0xa8, 0x80, 0x4f, 0x9e, 0x80, +}; + +static const uint8_t unicode_prop_Deprecated_table[23] = { + 0x41, 0x48, 0x80, 0x45, 0x28, 0x80, 0x49, 0x02, + 0x00, 0x80, 0x48, 0x28, 0x81, 0x48, 0xc4, 0x85, + 0x42, 0xb8, 0x81, 0x6d, 0xdc, 0xd5, 0x80, +}; + +static const uint8_t unicode_prop_Diacritic_table[391] = { + 0xdd, 0x00, 0x80, 0xc6, 0x05, 0x03, 0x01, 0x81, + 0x41, 0xf6, 0x40, 0x9e, 0x07, 0x25, 0x90, 0x0b, + 0x80, 0x88, 0x81, 0x40, 0xfc, 0x84, 0x40, 0xd0, + 0x80, 0xb6, 0x90, 0x80, 0x9a, 0x00, 0x01, 0x00, + 0x40, 0x85, 0x3b, 0x81, 0x40, 0x85, 0x0b, 0x0a, + 0x82, 0xc2, 0x9a, 0xda, 0x8a, 0xb9, 0x8a, 0xa1, + 0x81, 0xfd, 0x87, 0xa8, 0x89, 0x8f, 0x9b, 0xbc, + 0x80, 0x8f, 0x02, 0x83, 0x9b, 0x80, 0xc9, 0x80, + 0x8f, 0x80, 0xed, 0x80, 0x8f, 0x80, 0xed, 0x80, + 0x8f, 0x80, 0xae, 0x82, 0xbb, 0x80, 0x8f, 0x06, + 0x80, 0xf6, 0x80, 0xed, 0x80, 0x8f, 0x80, 0xed, + 0x80, 0x8f, 0x80, 0xec, 0x81, 0x8f, 0x80, 0xfb, + 0x80, 0xfb, 0x28, 0x80, 0xea, 0x80, 0x8c, 0x84, + 0xca, 0x81, 0x9a, 0x00, 0x00, 0x03, 0x81, 0xc1, + 0x10, 0x81, 0xbd, 0x80, 0xef, 0x00, 0x81, 0xa7, + 0x0b, 0x84, 0x98, 0x30, 0x80, 0x89, 0x81, 0x42, + 0xc0, 0x82, 0x43, 0xb3, 0x81, 0x40, 0xb2, 0x8a, + 0x88, 0x80, 0x41, 0x5a, 0x82, 0x41, 0x38, 0x39, + 0x80, 0xaf, 0x8e, 0x81, 0x8a, 0xe7, 0x80, 0x8e, + 0x80, 0xa5, 0x88, 0xb5, 0x81, 0x40, 0x89, 0x81, + 0xbf, 0x85, 0xd1, 0x98, 0x18, 0x28, 0x0a, 0xb1, + 0xbe, 0xd8, 0x8b, 0xa4, 0x8a, 0x41, 0xbc, 0x00, + 0x82, 0x8a, 0x82, 0x8c, 0x82, 0x8c, 0x82, 0x8c, + 0x81, 0x4c, 0xef, 0x82, 0x41, 0x3c, 0x80, 0x41, + 0xf9, 0x85, 0xe8, 0x83, 0xde, 0x80, 0x60, 0x75, + 0x71, 0x80, 0x8b, 0x08, 0x80, 0x9b, 0x81, 0xd1, + 0x81, 0x8d, 0xa1, 0xe5, 0x82, 0xec, 0x81, 0x40, + 0xc9, 0x80, 0x9a, 0x91, 0xb8, 0x83, 0xa3, 0x80, + 0xde, 0x80, 0x8b, 0x80, 0xa3, 0x80, 0x40, 0x94, + 0x82, 0xc0, 0x83, 0xb2, 0x80, 0xe3, 0x84, 0x88, + 0x82, 0xff, 0x81, 0x60, 0x4f, 0x2f, 0x80, 0x43, + 0x00, 0x8f, 0x41, 0x0d, 0x00, 0x80, 0xae, 0x80, + 0xac, 0x81, 0xc2, 0x80, 0x42, 0xfb, 0x80, 0x44, + 0x9e, 0x28, 0xa9, 0x80, 0x88, 0x43, 0x29, 0x81, + 0x42, 0x3a, 0x85, 0x42, 0x1d, 0x8a, 0xb0, 0x83, + 0x40, 0xbf, 0x80, 0xa8, 0x80, 0xc7, 0x81, 0xf7, + 0x81, 0xbd, 0x80, 0xcb, 0x80, 0x88, 0x82, 0xe7, + 0x81, 0x40, 0xb1, 0x81, 0xd0, 0x80, 0x8f, 0x80, + 0x97, 0x32, 0x84, 0x40, 0xcc, 0x02, 0x80, 0xfa, + 0x81, 0x40, 0xfa, 0x81, 0xfd, 0x80, 0xf5, 0x81, + 0xf2, 0x80, 0x41, 0x0c, 0x81, 0x41, 0x01, 0x0b, + 0x80, 0x40, 0x9b, 0x80, 0xd2, 0x80, 0x91, 0x80, + 0xd0, 0x80, 0x41, 0xa4, 0x80, 0x41, 0x01, 0x00, + 0x81, 0xd0, 0x80, 0x60, 0x4d, 0x57, 0x84, 0xba, + 0x86, 0x44, 0x57, 0x90, 0xcf, 0x81, 0x60, 0x3f, + 0xfd, 0x18, 0x30, 0x81, 0x5f, 0x00, 0xad, 0x81, + 0x96, 0x42, 0x1f, 0x12, 0x2f, 0x39, 0x86, 0x9d, + 0x83, 0x4f, 0x81, 0x86, 0x41, 0x76, 0x80, 0xbc, + 0x83, 0x45, 0xdf, 0x86, 0xec, 0x10, 0x82, +}; + +static const uint8_t unicode_prop_Extender_table[92] = { + 0x40, 0xb6, 0x80, 0x42, 0x17, 0x81, 0x43, 0x6d, + 0x80, 0x41, 0xb8, 0x80, 0x43, 0x59, 0x80, 0x42, + 0xef, 0x80, 0xfe, 0x80, 0x49, 0x42, 0x80, 0xb7, + 0x80, 0x42, 0x62, 0x80, 0x41, 0x8d, 0x80, 0xc3, + 0x80, 0x53, 0x88, 0x80, 0xaa, 0x84, 0xe6, 0x81, + 0xdc, 0x82, 0x60, 0x6f, 0x15, 0x80, 0x45, 0xf5, + 0x80, 0x43, 0xc1, 0x80, 0x95, 0x80, 0x40, 0x88, + 0x80, 0xeb, 0x80, 0x94, 0x81, 0x60, 0x54, 0x7a, + 0x80, 0x48, 0x0f, 0x81, 0x4b, 0xd9, 0x80, 0x42, + 0x67, 0x82, 0x44, 0xce, 0x80, 0x60, 0x50, 0xa8, + 0x81, 0x44, 0x9b, 0x08, 0x80, 0x60, 0x71, 0x57, + 0x81, 0x48, 0x05, 0x82, +}; + +static const uint8_t unicode_prop_Hex_Digit_table[12] = { + 0xaf, 0x89, 0x35, 0x99, 0x85, 0x60, 0xfe, 0xa8, + 0x89, 0x35, 0x99, 0x85, +}; + +static const uint8_t unicode_prop_IDS_Binary_Operator_table[5] = { + 0x60, 0x2f, 0xef, 0x09, 0x87, +}; + +static const uint8_t unicode_prop_IDS_Trinary_Operator_table[4] = { + 0x60, 0x2f, 0xf1, 0x81, +}; + +static const uint8_t unicode_prop_Ideographic_table[66] = { + 0x60, 0x30, 0x05, 0x81, 0x98, 0x88, 0x8d, 0x82, + 0x43, 0xc4, 0x59, 0xbf, 0xbf, 0x60, 0x51, 0xff, + 0x60, 0x58, 0xff, 0x41, 0x6d, 0x81, 0xe9, 0x60, + 0x75, 0x09, 0x80, 0x9a, 0x57, 0xf7, 0x87, 0x44, + 0xd5, 0xa9, 0x88, 0x60, 0x24, 0x66, 0x41, 0x8b, + 0x60, 0x4d, 0x03, 0x60, 0xa6, 0xdf, 0x9f, 0x50, + 0x38, 0x86, 0x40, 0xdd, 0x81, 0x56, 0x81, 0x8d, + 0x5d, 0x30, 0x4c, 0x1e, 0x42, 0x1d, 0x45, 0xe1, + 0x53, 0x4a, +}; + +static const uint8_t unicode_prop_Join_Control_table[4] = { + 0x60, 0x20, 0x0b, 0x81, +}; + +static const uint8_t unicode_prop_Logical_Order_Exception_table[15] = { + 0x4e, 0x3f, 0x84, 0xfa, 0x84, 0x4a, 0xef, 0x11, + 0x80, 0x60, 0x90, 0xf9, 0x09, 0x00, 0x81, +}; + +static const uint8_t unicode_prop_Noncharacter_Code_Point_table[71] = { + 0x60, 0xfd, 0xcf, 0x9f, 0x42, 0x0d, 0x81, 0x60, + 0xff, 0xfd, 0x81, 0x60, 0xff, 0xfd, 0x81, 0x60, + 0xff, 0xfd, 0x81, 0x60, 0xff, 0xfd, 0x81, 0x60, + 0xff, 0xfd, 0x81, 0x60, 0xff, 0xfd, 0x81, 0x60, + 0xff, 0xfd, 0x81, 0x60, 0xff, 0xfd, 0x81, 0x60, + 0xff, 0xfd, 0x81, 0x60, 0xff, 0xfd, 0x81, 0x60, + 0xff, 0xfd, 0x81, 0x60, 0xff, 0xfd, 0x81, 0x60, + 0xff, 0xfd, 0x81, 0x60, 0xff, 0xfd, 0x81, 0x60, + 0xff, 0xfd, 0x81, 0x60, 0xff, 0xfd, 0x81, +}; + +static const uint8_t unicode_prop_Pattern_Syntax_table[58] = { + 0xa0, 0x8e, 0x89, 0x86, 0x99, 0x18, 0x80, 0x99, + 0x83, 0xa1, 0x30, 0x00, 0x08, 0x00, 0x0b, 0x03, + 0x02, 0x80, 0x96, 0x80, 0x9e, 0x80, 0x5f, 0x17, + 0x97, 0x87, 0x8e, 0x81, 0x92, 0x80, 0x89, 0x41, + 0x30, 0x42, 0xcf, 0x40, 0x9f, 0x42, 0x75, 0x9d, + 0x44, 0x6b, 0x41, 0xff, 0xff, 0x41, 0x80, 0x13, + 0x98, 0x8e, 0x80, 0x60, 0xcd, 0x0c, 0x81, 0x41, + 0x04, 0x81, +}; + +static const uint8_t unicode_prop_Pattern_White_Space_table[11] = { + 0x88, 0x84, 0x91, 0x80, 0xe3, 0x80, 0x5f, 0x87, + 0x81, 0x97, 0x81, +}; + +static const uint8_t unicode_prop_Quotation_Mark_table[31] = { + 0xa1, 0x03, 0x80, 0x40, 0x82, 0x80, 0x8e, 0x80, + 0x5f, 0x5b, 0x87, 0x98, 0x81, 0x4e, 0x06, 0x80, + 0x41, 0xc8, 0x83, 0x8c, 0x82, 0x60, 0xce, 0x20, + 0x83, 0x40, 0xbc, 0x03, 0x80, 0xd9, 0x81, +}; + +static const uint8_t unicode_prop_Radical_table[9] = { + 0x60, 0x2e, 0x7f, 0x99, 0x80, 0xd8, 0x8b, 0x40, + 0xd5, +}; + +static const uint8_t unicode_prop_Regional_Indicator_table[4] = { + 0x61, 0xf1, 0xe5, 0x99, +}; + +static const uint8_t unicode_prop_Sentence_Terminal_table[194] = { + 0xa0, 0x80, 0x8b, 0x80, 0x8f, 0x80, 0x45, 0x48, + 0x80, 0x40, 0x92, 0x82, 0x40, 0xb3, 0x80, 0xaa, + 0x82, 0x40, 0xf5, 0x80, 0xbc, 0x00, 0x02, 0x81, + 0x41, 0x24, 0x81, 0x46, 0xe3, 0x81, 0x43, 0x15, + 0x03, 0x81, 0x43, 0x04, 0x80, 0x40, 0xc5, 0x81, + 0x40, 0xcb, 0x04, 0x80, 0x41, 0x39, 0x81, 0x41, + 0x61, 0x83, 0x40, 0xad, 0x09, 0x81, 0x9c, 0x81, + 0x40, 0xbb, 0x81, 0xc0, 0x81, 0x43, 0xbb, 0x81, + 0x88, 0x82, 0x4d, 0xe3, 0x80, 0x8c, 0x80, 0x95, + 0x81, 0x41, 0xac, 0x80, 0x60, 0x74, 0xfb, 0x80, + 0x41, 0x0d, 0x81, 0x40, 0xe2, 0x02, 0x80, 0x41, + 0x7d, 0x81, 0xd5, 0x81, 0xde, 0x80, 0x40, 0x97, + 0x81, 0x40, 0x92, 0x82, 0x40, 0x8f, 0x81, 0x40, + 0xf8, 0x80, 0x60, 0x52, 0x65, 0x02, 0x81, 0x40, + 0xa8, 0x80, 0x8b, 0x80, 0x8f, 0x80, 0xc0, 0x80, + 0x4a, 0xf3, 0x81, 0x44, 0xfc, 0x84, 0xab, 0x83, + 0x40, 0xbc, 0x81, 0xf4, 0x83, 0xfe, 0x82, 0x40, + 0x80, 0x0d, 0x80, 0x8f, 0x81, 0xd7, 0x08, 0x81, + 0xeb, 0x80, 0x41, 0xa0, 0x81, 0x41, 0x74, 0x0c, + 0x8e, 0xe8, 0x81, 0x40, 0xf8, 0x82, 0x42, 0x04, + 0x00, 0x80, 0x40, 0xfa, 0x81, 0xd6, 0x81, 0x41, + 0xa3, 0x81, 0x42, 0xb3, 0x81, 0x60, 0x4b, 0x74, + 0x81, 0x40, 0x84, 0x80, 0xc0, 0x81, 0x8a, 0x80, + 0x43, 0x52, 0x80, 0x60, 0x4e, 0x05, 0x80, 0x5d, + 0xe7, 0x80, +}; + +static const uint8_t unicode_prop_Soft_Dotted_table[74] = { + 0xe8, 0x81, 0x40, 0xc3, 0x80, 0x41, 0x18, 0x80, + 0x9d, 0x80, 0xb3, 0x80, 0x93, 0x80, 0x41, 0x3f, + 0x80, 0xe1, 0x00, 0x80, 0x59, 0x08, 0x80, 0xb2, + 0x80, 0x8c, 0x02, 0x80, 0x40, 0x83, 0x80, 0x40, + 0x9c, 0x80, 0x41, 0xa4, 0x80, 0x40, 0xd5, 0x81, + 0x4b, 0x31, 0x80, 0x61, 0xa7, 0xa4, 0x81, 0xb1, + 0x81, 0xb1, 0x81, 0xb1, 0x81, 0xb1, 0x81, 0xb1, + 0x81, 0xb1, 0x81, 0xb1, 0x81, 0xb1, 0x81, 0xb1, + 0x81, 0xb1, 0x81, 0xb1, 0x81, 0xb1, 0x81, 0x48, + 0x85, 0x80, +}; + +static const uint8_t unicode_prop_Terminal_Punctuation_table[246] = { + 0xa0, 0x80, 0x89, 0x00, 0x80, 0x8a, 0x0a, 0x80, + 0x43, 0x3d, 0x07, 0x80, 0x42, 0x00, 0x80, 0xb8, + 0x80, 0xc7, 0x80, 0x8d, 0x00, 0x82, 0x40, 0xb3, + 0x80, 0xaa, 0x8a, 0x00, 0x40, 0xea, 0x81, 0xb5, + 0x8e, 0x9e, 0x80, 0x41, 0x04, 0x81, 0x44, 0xf3, + 0x81, 0x40, 0xab, 0x03, 0x85, 0x41, 0x36, 0x81, + 0x43, 0x14, 0x87, 0x43, 0x04, 0x80, 0xfb, 0x82, + 0xc6, 0x81, 0x40, 0x9c, 0x12, 0x80, 0xa6, 0x19, + 0x81, 0x41, 0x39, 0x81, 0x41, 0x61, 0x83, 0x40, + 0xad, 0x08, 0x82, 0x9c, 0x81, 0x40, 0xbb, 0x84, + 0xbd, 0x81, 0x43, 0xbb, 0x81, 0x88, 0x82, 0x4d, + 0xe3, 0x80, 0x8c, 0x03, 0x80, 0x89, 0x00, 0x0a, + 0x81, 0x41, 0xab, 0x81, 0x60, 0x74, 0xfa, 0x81, + 0x41, 0x0c, 0x82, 0x40, 0xe2, 0x84, 0x41, 0x7d, + 0x81, 0xd5, 0x81, 0xde, 0x80, 0x40, 0x96, 0x82, + 0x40, 0x92, 0x82, 0xfe, 0x80, 0x8f, 0x81, 0x40, + 0xf8, 0x80, 0x60, 0x52, 0x63, 0x10, 0x83, 0x40, + 0xa8, 0x80, 0x89, 0x00, 0x80, 0x8a, 0x0a, 0x80, + 0xc0, 0x01, 0x80, 0x44, 0x39, 0x80, 0xaf, 0x80, + 0x44, 0x85, 0x80, 0x40, 0xc6, 0x80, 0x41, 0x35, + 0x81, 0x40, 0x97, 0x85, 0xc3, 0x85, 0xd8, 0x83, + 0x43, 0xb7, 0x84, 0xab, 0x83, 0x40, 0xbc, 0x86, + 0xef, 0x83, 0xfe, 0x82, 0x40, 0x80, 0x0d, 0x80, + 0x8f, 0x81, 0xd7, 0x84, 0xeb, 0x80, 0x41, 0xa0, + 0x82, 0x8b, 0x81, 0x41, 0x65, 0x1a, 0x8e, 0xe8, + 0x81, 0x40, 0xf8, 0x82, 0x42, 0x04, 0x00, 0x80, + 0x40, 0xfa, 0x81, 0xd6, 0x0b, 0x81, 0x41, 0x9d, + 0x82, 0xac, 0x80, 0x42, 0x84, 0x81, 0x45, 0x76, + 0x84, 0x60, 0x45, 0xf8, 0x81, 0x40, 0x84, 0x80, + 0xc0, 0x82, 0x89, 0x80, 0x43, 0x51, 0x81, 0x60, + 0x4e, 0x05, 0x80, 0x5d, 0xe6, 0x83, +}; + +static const uint8_t unicode_prop_Unified_Ideograph_table[42] = { + 0x60, 0x33, 0xff, 0x59, 0xbf, 0xbf, 0x60, 0x51, + 0xff, 0x60, 0x5a, 0x0d, 0x08, 0x00, 0x81, 0x89, + 0x00, 0x00, 0x09, 0x82, 0x61, 0x05, 0xd5, 0x60, + 0xa6, 0xdf, 0x9f, 0x50, 0x38, 0x86, 0x40, 0xdd, + 0x81, 0x56, 0x81, 0x8d, 0x5d, 0x30, 0x54, 0x1e, + 0x53, 0x4a, +}; + +static const uint8_t unicode_prop_Variation_Selector_table[13] = { + 0x58, 0x0a, 0x10, 0x80, 0x60, 0xe5, 0xef, 0x8f, + 0x6d, 0x02, 0xef, 0x40, 0xef, +}; + +static const uint8_t unicode_prop_White_Space_table[22] = { + 0x88, 0x84, 0x91, 0x80, 0xe3, 0x80, 0x99, 0x80, + 0x55, 0xde, 0x80, 0x49, 0x7e, 0x8a, 0x9c, 0x0c, + 0x80, 0xae, 0x80, 0x4f, 0x9f, 0x80, +}; + +static const uint8_t unicode_prop_Bidi_Mirrored_table[173] = { + 0xa7, 0x81, 0x91, 0x00, 0x80, 0x9b, 0x00, 0x80, + 0x9c, 0x00, 0x80, 0xac, 0x80, 0x8e, 0x80, 0x4e, + 0x7d, 0x83, 0x47, 0x5c, 0x81, 0x49, 0x9b, 0x81, + 0x89, 0x81, 0xb5, 0x81, 0x8d, 0x81, 0x40, 0xb0, + 0x80, 0x40, 0xbf, 0x1a, 0x2a, 0x02, 0x0a, 0x18, + 0x18, 0x00, 0x03, 0x88, 0x20, 0x80, 0x91, 0x23, + 0x88, 0x08, 0x00, 0x39, 0x9e, 0x0b, 0x20, 0x88, + 0x09, 0x92, 0x21, 0x88, 0x21, 0x0b, 0x97, 0x81, + 0x8f, 0x3b, 0x93, 0x0e, 0x81, 0x44, 0x3c, 0x8d, + 0xc9, 0x01, 0x18, 0x08, 0x14, 0x1c, 0x12, 0x8d, + 0x41, 0x92, 0x95, 0x0d, 0x80, 0x8d, 0x38, 0x35, + 0x10, 0x1c, 0x01, 0x0c, 0x18, 0x02, 0x09, 0x89, + 0x29, 0x81, 0x8b, 0x92, 0x03, 0x08, 0x00, 0x08, + 0x03, 0x21, 0x2a, 0x97, 0x81, 0x8a, 0x0b, 0x18, + 0x09, 0x0b, 0xaa, 0x0f, 0x80, 0xa7, 0x20, 0x00, + 0x14, 0x22, 0x18, 0x14, 0x00, 0x40, 0xff, 0x80, + 0x42, 0x02, 0x1a, 0x08, 0x81, 0x8d, 0x09, 0x89, + 0xaa, 0x87, 0x41, 0xaa, 0x89, 0x0f, 0x60, 0xce, + 0x3c, 0x2c, 0x81, 0x40, 0xa1, 0x81, 0x91, 0x00, + 0x80, 0x9b, 0x00, 0x80, 0x9c, 0x00, 0x00, 0x08, + 0x81, 0x60, 0xd7, 0x76, 0x80, 0xb8, 0x80, 0xb8, + 0x80, 0xb8, 0x80, 0xb8, 0x80, +}; + +static const uint8_t unicode_prop_Emoji_table[239] = { + 0xa2, 0x05, 0x04, 0x89, 0xee, 0x03, 0x80, 0x5f, + 0x8c, 0x80, 0x8b, 0x80, 0x40, 0xd7, 0x80, 0x95, + 0x80, 0xd9, 0x85, 0x8e, 0x81, 0x41, 0x6e, 0x81, + 0x8b, 0x80, 0x40, 0xa5, 0x80, 0x98, 0x8a, 0x1a, + 0x40, 0xc6, 0x80, 0x40, 0xe6, 0x81, 0x89, 0x80, + 0x88, 0x80, 0xb9, 0x18, 0x84, 0x88, 0x01, 0x01, + 0x09, 0x03, 0x01, 0x00, 0x09, 0x02, 0x02, 0x0f, + 0x14, 0x00, 0x04, 0x8b, 0x8a, 0x09, 0x00, 0x08, + 0x80, 0x91, 0x01, 0x81, 0x91, 0x28, 0x00, 0x0a, + 0x0c, 0x01, 0x0b, 0x81, 0x8a, 0x0c, 0x09, 0x04, + 0x08, 0x00, 0x81, 0x93, 0x0c, 0x28, 0x19, 0x03, + 0x01, 0x01, 0x28, 0x01, 0x00, 0x00, 0x05, 0x02, + 0x05, 0x80, 0x89, 0x81, 0x8e, 0x01, 0x03, 0x00, + 0x03, 0x10, 0x80, 0x8a, 0x81, 0xaf, 0x82, 0x88, + 0x80, 0x8d, 0x80, 0x8d, 0x80, 0x41, 0x73, 0x81, + 0x41, 0xce, 0x82, 0x92, 0x81, 0xb2, 0x03, 0x80, + 0x44, 0xd9, 0x80, 0x8b, 0x80, 0x42, 0x58, 0x00, + 0x80, 0x61, 0xbd, 0x69, 0x80, 0x40, 0xc9, 0x80, + 0x40, 0x9f, 0x81, 0x8b, 0x81, 0x8d, 0x01, 0x89, + 0xca, 0x99, 0x01, 0x96, 0x80, 0x93, 0x01, 0x88, + 0x94, 0x81, 0x40, 0xad, 0xa1, 0x81, 0xef, 0x09, + 0x02, 0x81, 0xd2, 0x0a, 0x80, 0x41, 0x06, 0x80, + 0xbe, 0x8a, 0x28, 0x97, 0x31, 0x0f, 0x8b, 0x01, + 0x19, 0x03, 0x81, 0x8c, 0x09, 0x07, 0x81, 0x88, + 0x04, 0x82, 0x8b, 0x17, 0x11, 0x00, 0x03, 0x05, + 0x02, 0x05, 0xd5, 0xaf, 0xc5, 0x27, 0x0a, 0x84, + 0x88, 0x10, 0x01, 0x10, 0x81, 0x89, 0x40, 0xe2, + 0x8b, 0x18, 0x41, 0x1a, 0xae, 0x80, 0x89, 0x80, + 0x40, 0xb8, 0xef, 0x22, 0x22, 0x86, 0x88, 0x9c, + 0x82, 0x8a, 0x25, 0x89, 0x89, 0x2f, 0x3e, +}; + +static const uint8_t unicode_prop_Emoji_Component_table[28] = { + 0xa2, 0x05, 0x04, 0x89, 0x5f, 0xd2, 0x80, 0x40, + 0xd4, 0x80, 0x60, 0xdd, 0x2a, 0x80, 0x60, 0xf3, + 0xd5, 0x99, 0x41, 0xfa, 0x84, 0x45, 0xaf, 0x83, + 0x6c, 0x06, 0x6b, 0xdf, +}; + +static const uint8_t unicode_prop_Emoji_Modifier_table[4] = { + 0x61, 0xf3, 0xfa, 0x84, +}; + +static const uint8_t unicode_prop_Emoji_Modifier_Base_table[71] = { + 0x60, 0x26, 0x1c, 0x80, 0x40, 0xda, 0x80, 0x8f, + 0x83, 0x61, 0xcc, 0x76, 0x80, 0xbb, 0x11, 0x01, + 0x82, 0xf4, 0x09, 0x8a, 0x94, 0x92, 0x10, 0x1a, + 0x02, 0x30, 0x00, 0x97, 0x80, 0x40, 0xc8, 0x0b, + 0x80, 0x94, 0x03, 0x81, 0x40, 0xad, 0x12, 0x84, + 0xd2, 0x80, 0x8f, 0x82, 0x88, 0x80, 0x8a, 0x80, + 0x42, 0x3e, 0x01, 0x07, 0x3d, 0x80, 0x88, 0x89, + 0x0a, 0xb7, 0x80, 0xbc, 0x08, 0x08, 0x80, 0x90, + 0x10, 0x8c, 0x40, 0xe4, 0x82, 0xa9, 0x86, +}; + +static const uint8_t unicode_prop_Emoji_Presentation_table[145] = { + 0x60, 0x23, 0x19, 0x81, 0x40, 0xcc, 0x1a, 0x01, + 0x80, 0x42, 0x08, 0x81, 0x94, 0x81, 0xb1, 0x8b, + 0xaa, 0x80, 0x92, 0x80, 0x8c, 0x07, 0x81, 0x90, + 0x0c, 0x0f, 0x04, 0x80, 0x94, 0x06, 0x08, 0x03, + 0x01, 0x06, 0x03, 0x81, 0x9b, 0x80, 0xa2, 0x00, + 0x03, 0x10, 0x80, 0xbc, 0x82, 0x97, 0x80, 0x8d, + 0x80, 0x43, 0x5a, 0x81, 0xb2, 0x03, 0x80, 0x61, + 0xc4, 0xad, 0x80, 0x40, 0xc9, 0x80, 0x40, 0xbd, + 0x01, 0x89, 0xca, 0x99, 0x00, 0x97, 0x80, 0x93, + 0x01, 0x20, 0x82, 0x94, 0x81, 0x40, 0xad, 0xa0, + 0x8b, 0x88, 0x80, 0xc5, 0x80, 0x95, 0x8b, 0xaa, + 0x1c, 0x8b, 0x90, 0x10, 0x82, 0xc6, 0x00, 0x80, + 0x40, 0xba, 0x81, 0xbe, 0x8c, 0x18, 0x97, 0x91, + 0x80, 0x99, 0x81, 0x8c, 0x80, 0xd5, 0xd4, 0xaf, + 0xc5, 0x28, 0x12, 0x0a, 0x22, 0x8a, 0x0e, 0x88, + 0x40, 0xe2, 0x8b, 0x18, 0x41, 0x1a, 0xae, 0x80, + 0x89, 0x80, 0x40, 0xb8, 0xef, 0x22, 0x22, 0x86, + 0x88, 0x9c, 0x82, 0x8a, 0x25, 0x89, 0x89, 0x2f, + 0x3e, +}; + +static const uint8_t unicode_prop_Extended_Pictographic_table[156] = { + 0x40, 0xa8, 0x03, 0x80, 0x5f, 0x8c, 0x80, 0x8b, + 0x80, 0x40, 0xd7, 0x80, 0x95, 0x80, 0xd9, 0x85, + 0x8e, 0x81, 0x41, 0x6e, 0x81, 0x8b, 0x80, 0xde, + 0x80, 0xc5, 0x80, 0x98, 0x8a, 0x1a, 0x40, 0xc6, + 0x80, 0x40, 0xe6, 0x81, 0x89, 0x80, 0x88, 0x80, + 0xb9, 0x18, 0x28, 0x8b, 0x80, 0xf1, 0x89, 0xf5, + 0x81, 0x8a, 0x00, 0x00, 0x28, 0x10, 0x28, 0x89, + 0x81, 0x8e, 0x01, 0x03, 0x00, 0x03, 0x10, 0x80, + 0x8a, 0x84, 0xac, 0x82, 0x88, 0x80, 0x8d, 0x80, + 0x8d, 0x80, 0x41, 0x73, 0x81, 0x41, 0xce, 0x82, + 0x92, 0x81, 0xb2, 0x03, 0x80, 0x44, 0xd9, 0x80, + 0x8b, 0x80, 0x42, 0x58, 0x00, 0x80, 0x61, 0xbd, + 0x65, 0x40, 0xff, 0x8c, 0x82, 0x9e, 0x80, 0xbb, + 0x85, 0x8b, 0x81, 0x8d, 0x01, 0x89, 0x91, 0xb8, + 0x9a, 0x8e, 0x89, 0x80, 0x93, 0x01, 0x88, 0x03, + 0x88, 0x41, 0xb1, 0x84, 0x41, 0x3d, 0x87, 0x41, + 0x09, 0xaf, 0xff, 0xf3, 0x8b, 0xd4, 0xaa, 0x8b, + 0x83, 0xb7, 0x87, 0x89, 0x85, 0xa7, 0x87, 0x9d, + 0xd1, 0x8b, 0xae, 0x80, 0x89, 0x80, 0x41, 0xb8, + 0x40, 0xff, 0x43, 0xfd, +}; + +static const uint8_t unicode_prop_Default_Ignorable_Code_Point_table[51] = { + 0x40, 0xac, 0x80, 0x42, 0xa0, 0x80, 0x42, 0xcb, + 0x80, 0x4b, 0x41, 0x81, 0x46, 0x52, 0x81, 0xd4, + 0x84, 0x47, 0xfa, 0x84, 0x99, 0x84, 0xb0, 0x8f, + 0x50, 0xf3, 0x80, 0x60, 0xcc, 0x9a, 0x8f, 0x40, + 0xee, 0x80, 0x40, 0x9f, 0x80, 0xce, 0x88, 0x60, + 0xbc, 0xa6, 0x83, 0x54, 0xce, 0x87, 0x6c, 0x2e, + 0x84, 0x4f, 0xff, +}; + +typedef enum { + UNICODE_PROP_Hyphen, + UNICODE_PROP_Other_Math, + UNICODE_PROP_Other_Alphabetic, + UNICODE_PROP_Other_Lowercase, + UNICODE_PROP_Other_Uppercase, + UNICODE_PROP_Other_Grapheme_Extend, + UNICODE_PROP_Other_Default_Ignorable_Code_Point, + UNICODE_PROP_Other_ID_Start, + UNICODE_PROP_Other_ID_Continue, + UNICODE_PROP_Prepended_Concatenation_Mark, + UNICODE_PROP_ID_Continue1, + UNICODE_PROP_XID_Start1, + UNICODE_PROP_XID_Continue1, + UNICODE_PROP_Changes_When_Titlecased1, + UNICODE_PROP_Changes_When_Casefolded1, + UNICODE_PROP_Changes_When_NFKC_Casefolded1, + UNICODE_PROP_ASCII_Hex_Digit, + UNICODE_PROP_Bidi_Control, + UNICODE_PROP_Dash, + UNICODE_PROP_Deprecated, + UNICODE_PROP_Diacritic, + UNICODE_PROP_Extender, + UNICODE_PROP_Hex_Digit, + UNICODE_PROP_IDS_Binary_Operator, + UNICODE_PROP_IDS_Trinary_Operator, + UNICODE_PROP_Ideographic, + UNICODE_PROP_Join_Control, + UNICODE_PROP_Logical_Order_Exception, + UNICODE_PROP_Noncharacter_Code_Point, + UNICODE_PROP_Pattern_Syntax, + UNICODE_PROP_Pattern_White_Space, + UNICODE_PROP_Quotation_Mark, + UNICODE_PROP_Radical, + UNICODE_PROP_Regional_Indicator, + UNICODE_PROP_Sentence_Terminal, + UNICODE_PROP_Soft_Dotted, + UNICODE_PROP_Terminal_Punctuation, + UNICODE_PROP_Unified_Ideograph, + UNICODE_PROP_Variation_Selector, + UNICODE_PROP_White_Space, + UNICODE_PROP_Bidi_Mirrored, + UNICODE_PROP_Emoji, + UNICODE_PROP_Emoji_Component, + UNICODE_PROP_Emoji_Modifier, + UNICODE_PROP_Emoji_Modifier_Base, + UNICODE_PROP_Emoji_Presentation, + UNICODE_PROP_Extended_Pictographic, + UNICODE_PROP_Default_Ignorable_Code_Point, + UNICODE_PROP_ID_Start, + UNICODE_PROP_Case_Ignorable, + UNICODE_PROP_ASCII, + UNICODE_PROP_Alphabetic, + UNICODE_PROP_Any, + UNICODE_PROP_Assigned, + UNICODE_PROP_Cased, + UNICODE_PROP_Changes_When_Casefolded, + UNICODE_PROP_Changes_When_Casemapped, + UNICODE_PROP_Changes_When_Lowercased, + UNICODE_PROP_Changes_When_NFKC_Casefolded, + UNICODE_PROP_Changes_When_Titlecased, + UNICODE_PROP_Changes_When_Uppercased, + UNICODE_PROP_Grapheme_Base, + UNICODE_PROP_Grapheme_Extend, + UNICODE_PROP_ID_Continue, + UNICODE_PROP_Lowercase, + UNICODE_PROP_Math, + UNICODE_PROP_Uppercase, + UNICODE_PROP_XID_Continue, + UNICODE_PROP_XID_Start, + UNICODE_PROP_Cased1, + UNICODE_PROP_COUNT, +} UnicodePropertyEnum; + +static const char unicode_prop_name_table[] = + "ASCII_Hex_Digit,AHex" "\0" + "Bidi_Control,Bidi_C" "\0" + "Dash" "\0" + "Deprecated,Dep" "\0" + "Diacritic,Dia" "\0" + "Extender,Ext" "\0" + "Hex_Digit,Hex" "\0" + "IDS_Binary_Operator,IDSB" "\0" + "IDS_Trinary_Operator,IDST" "\0" + "Ideographic,Ideo" "\0" + "Join_Control,Join_C" "\0" + "Logical_Order_Exception,LOE" "\0" + "Noncharacter_Code_Point,NChar" "\0" + "Pattern_Syntax,Pat_Syn" "\0" + "Pattern_White_Space,Pat_WS" "\0" + "Quotation_Mark,QMark" "\0" + "Radical" "\0" + "Regional_Indicator,RI" "\0" + "Sentence_Terminal,STerm" "\0" + "Soft_Dotted,SD" "\0" + "Terminal_Punctuation,Term" "\0" + "Unified_Ideograph,UIdeo" "\0" + "Variation_Selector,VS" "\0" + "White_Space,space" "\0" + "Bidi_Mirrored,Bidi_M" "\0" + "Emoji" "\0" + "Emoji_Component,EComp" "\0" + "Emoji_Modifier,EMod" "\0" + "Emoji_Modifier_Base,EBase" "\0" + "Emoji_Presentation,EPres" "\0" + "Extended_Pictographic,ExtPict" "\0" + "Default_Ignorable_Code_Point,DI" "\0" + "ID_Start,IDS" "\0" + "Case_Ignorable,CI" "\0" + "ASCII" "\0" + "Alphabetic,Alpha" "\0" + "Any" "\0" + "Assigned" "\0" + "Cased" "\0" + "Changes_When_Casefolded,CWCF" "\0" + "Changes_When_Casemapped,CWCM" "\0" + "Changes_When_Lowercased,CWL" "\0" + "Changes_When_NFKC_Casefolded,CWKCF" "\0" + "Changes_When_Titlecased,CWT" "\0" + "Changes_When_Uppercased,CWU" "\0" + "Grapheme_Base,Gr_Base" "\0" + "Grapheme_Extend,Gr_Ext" "\0" + "ID_Continue,IDC" "\0" + "Lowercase,Lower" "\0" + "Math" "\0" + "Uppercase,Upper" "\0" + "XID_Continue,XIDC" "\0" + "XID_Start,XIDS" "\0" +; + +static const uint8_t * const unicode_prop_table[] = { + unicode_prop_Hyphen_table, + unicode_prop_Other_Math_table, + unicode_prop_Other_Alphabetic_table, + unicode_prop_Other_Lowercase_table, + unicode_prop_Other_Uppercase_table, + unicode_prop_Other_Grapheme_Extend_table, + unicode_prop_Other_Default_Ignorable_Code_Point_table, + unicode_prop_Other_ID_Start_table, + unicode_prop_Other_ID_Continue_table, + unicode_prop_Prepended_Concatenation_Mark_table, + unicode_prop_ID_Continue1_table, + unicode_prop_XID_Start1_table, + unicode_prop_XID_Continue1_table, + unicode_prop_Changes_When_Titlecased1_table, + unicode_prop_Changes_When_Casefolded1_table, + unicode_prop_Changes_When_NFKC_Casefolded1_table, + unicode_prop_ASCII_Hex_Digit_table, + unicode_prop_Bidi_Control_table, + unicode_prop_Dash_table, + unicode_prop_Deprecated_table, + unicode_prop_Diacritic_table, + unicode_prop_Extender_table, + unicode_prop_Hex_Digit_table, + unicode_prop_IDS_Binary_Operator_table, + unicode_prop_IDS_Trinary_Operator_table, + unicode_prop_Ideographic_table, + unicode_prop_Join_Control_table, + unicode_prop_Logical_Order_Exception_table, + unicode_prop_Noncharacter_Code_Point_table, + unicode_prop_Pattern_Syntax_table, + unicode_prop_Pattern_White_Space_table, + unicode_prop_Quotation_Mark_table, + unicode_prop_Radical_table, + unicode_prop_Regional_Indicator_table, + unicode_prop_Sentence_Terminal_table, + unicode_prop_Soft_Dotted_table, + unicode_prop_Terminal_Punctuation_table, + unicode_prop_Unified_Ideograph_table, + unicode_prop_Variation_Selector_table, + unicode_prop_White_Space_table, + unicode_prop_Bidi_Mirrored_table, + unicode_prop_Emoji_table, + unicode_prop_Emoji_Component_table, + unicode_prop_Emoji_Modifier_table, + unicode_prop_Emoji_Modifier_Base_table, + unicode_prop_Emoji_Presentation_table, + unicode_prop_Extended_Pictographic_table, + unicode_prop_Default_Ignorable_Code_Point_table, + unicode_prop_ID_Start_table, + unicode_prop_Case_Ignorable_table, +}; + +static const uint16_t unicode_prop_len_table[] = { + countof(unicode_prop_Hyphen_table), + countof(unicode_prop_Other_Math_table), + countof(unicode_prop_Other_Alphabetic_table), + countof(unicode_prop_Other_Lowercase_table), + countof(unicode_prop_Other_Uppercase_table), + countof(unicode_prop_Other_Grapheme_Extend_table), + countof(unicode_prop_Other_Default_Ignorable_Code_Point_table), + countof(unicode_prop_Other_ID_Start_table), + countof(unicode_prop_Other_ID_Continue_table), + countof(unicode_prop_Prepended_Concatenation_Mark_table), + countof(unicode_prop_ID_Continue1_table), + countof(unicode_prop_XID_Start1_table), + countof(unicode_prop_XID_Continue1_table), + countof(unicode_prop_Changes_When_Titlecased1_table), + countof(unicode_prop_Changes_When_Casefolded1_table), + countof(unicode_prop_Changes_When_NFKC_Casefolded1_table), + countof(unicode_prop_ASCII_Hex_Digit_table), + countof(unicode_prop_Bidi_Control_table), + countof(unicode_prop_Dash_table), + countof(unicode_prop_Deprecated_table), + countof(unicode_prop_Diacritic_table), + countof(unicode_prop_Extender_table), + countof(unicode_prop_Hex_Digit_table), + countof(unicode_prop_IDS_Binary_Operator_table), + countof(unicode_prop_IDS_Trinary_Operator_table), + countof(unicode_prop_Ideographic_table), + countof(unicode_prop_Join_Control_table), + countof(unicode_prop_Logical_Order_Exception_table), + countof(unicode_prop_Noncharacter_Code_Point_table), + countof(unicode_prop_Pattern_Syntax_table), + countof(unicode_prop_Pattern_White_Space_table), + countof(unicode_prop_Quotation_Mark_table), + countof(unicode_prop_Radical_table), + countof(unicode_prop_Regional_Indicator_table), + countof(unicode_prop_Sentence_Terminal_table), + countof(unicode_prop_Soft_Dotted_table), + countof(unicode_prop_Terminal_Punctuation_table), + countof(unicode_prop_Unified_Ideograph_table), + countof(unicode_prop_Variation_Selector_table), + countof(unicode_prop_White_Space_table), + countof(unicode_prop_Bidi_Mirrored_table), + countof(unicode_prop_Emoji_table), + countof(unicode_prop_Emoji_Component_table), + countof(unicode_prop_Emoji_Modifier_table), + countof(unicode_prop_Emoji_Modifier_Base_table), + countof(unicode_prop_Emoji_Presentation_table), + countof(unicode_prop_Extended_Pictographic_table), + countof(unicode_prop_Default_Ignorable_Code_Point_table), + countof(unicode_prop_ID_Start_table), + countof(unicode_prop_Case_Ignorable_table), +}; + +#endif /* CONFIG_ALL_UNICODE */ diff --git a/quickjs/libunicode.c b/quickjs/libunicode.c new file mode 100644 index 0000000..63c12a0 --- /dev/null +++ b/quickjs/libunicode.c @@ -0,0 +1,1556 @@ +/* + * Unicode utilities + * + * Copyright (c) 2017-2018 Fabrice Bellard + * + * 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. + */ +#include +#include +#include +#include +#include + +#include "cutils.h" +#include "libunicode.h" +#include "libunicode-table.h" + +enum { + RUN_TYPE_U, + RUN_TYPE_L, + RUN_TYPE_UF, + RUN_TYPE_LF, + RUN_TYPE_UL, + RUN_TYPE_LSU, + RUN_TYPE_U2L_399_EXT2, + RUN_TYPE_UF_D20, + RUN_TYPE_UF_D1_EXT, + RUN_TYPE_U_EXT, + RUN_TYPE_LF_EXT, + RUN_TYPE_U_EXT2, + RUN_TYPE_L_EXT2, + RUN_TYPE_U_EXT3, +}; + +/* conv_type: + 0 = to upper + 1 = to lower + 2 = case folding (= to lower with modifications) +*/ +int lre_case_conv(uint32_t *res, uint32_t c, int conv_type) +{ + if (c < 128) { + if (conv_type) { + if (c >= 'A' && c <= 'Z') { + c = c - 'A' + 'a'; + } + } else { + if (c >= 'a' && c <= 'z') { + c = c - 'a' + 'A'; + } + } + } else { + uint32_t v, code, data, type, len, a, is_lower; + int idx, idx_min, idx_max; + + is_lower = (conv_type != 0); + idx_min = 0; + idx_max = countof(case_conv_table1) - 1; + while (idx_min <= idx_max) { + idx = (unsigned)(idx_max + idx_min) / 2; + v = case_conv_table1[idx]; + code = v >> (32 - 17); + len = (v >> (32 - 17 - 7)) & 0x7f; + if (c < code) { + idx_max = idx - 1; + } else if (c >= code + len) { + idx_min = idx + 1; + } else { + type = (v >> (32 - 17 - 7 - 4)) & 0xf; + data = ((v & 0xf) << 8) | case_conv_table2[idx]; + switch(type) { + case RUN_TYPE_U: + case RUN_TYPE_L: + case RUN_TYPE_UF: + case RUN_TYPE_LF: + if (conv_type == (type & 1) || + (type >= RUN_TYPE_UF && conv_type == 2)) { + c = c - code + (case_conv_table1[data] >> (32 - 17)); + } + break; + case RUN_TYPE_UL: + a = c - code; + if ((a & 1) != (1 - is_lower)) + break; + c = (a ^ 1) + code; + break; + case RUN_TYPE_LSU: + a = c - code; + if (a == 1) { + c += 2 * is_lower - 1; + } else if (a == (1 - is_lower) * 2) { + c += (2 * is_lower - 1) * 2; + } + break; + case RUN_TYPE_U2L_399_EXT2: + if (!is_lower) { + res[0] = c - code + case_conv_ext[data >> 6]; + res[1] = 0x399; + return 2; + } else { + c = c - code + case_conv_ext[data & 0x3f]; + } + break; + case RUN_TYPE_UF_D20: + if (conv_type == 1) + break; + c = data + (conv_type == 2) * 0x20; + break; + case RUN_TYPE_UF_D1_EXT: + if (conv_type == 1) + break; + c = case_conv_ext[data] + (conv_type == 2); + break; + case RUN_TYPE_U_EXT: + case RUN_TYPE_LF_EXT: + if (is_lower != (type - RUN_TYPE_U_EXT)) + break; + c = case_conv_ext[data]; + break; + case RUN_TYPE_U_EXT2: + case RUN_TYPE_L_EXT2: + if (conv_type != (type - RUN_TYPE_U_EXT2)) + break; + res[0] = c - code + case_conv_ext[data >> 6]; + res[1] = case_conv_ext[data & 0x3f]; + return 2; + default: + case RUN_TYPE_U_EXT3: + if (conv_type != 0) + break; + res[0] = case_conv_ext[data >> 8]; + res[1] = case_conv_ext[(data >> 4) & 0xf]; + res[2] = case_conv_ext[data & 0xf]; + return 3; + } + break; + } + } + } + res[0] = c; + return 1; +} + +static uint32_t get_le24(const uint8_t *ptr) +{ +#if defined(__x86__) || defined(__x86_64__) + return *(uint16_t *)ptr | (ptr[2] << 16); +#else + return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16); +#endif +} + +#define UNICODE_INDEX_BLOCK_LEN 32 + +/* return -1 if not in table, otherwise the offset in the block */ +static int get_index_pos(uint32_t *pcode, uint32_t c, + const uint8_t *index_table, int index_table_len) +{ + uint32_t code, v; + int idx_min, idx_max, idx; + + idx_min = 0; + v = get_le24(index_table); + code = v & ((1 << 21) - 1); + if (c < code) { + *pcode = 0; + return 0; + } + idx_max = index_table_len - 1; + code = get_le24(index_table + idx_max * 3); + if (c >= code) + return -1; + /* invariant: tab[idx_min] <= c < tab2[idx_max] */ + while ((idx_max - idx_min) > 1) { + idx = (idx_max + idx_min) / 2; + v = get_le24(index_table + idx * 3); + code = v & ((1 << 21) - 1); + if (c < code) { + idx_max = idx; + } else { + idx_min = idx; + } + } + v = get_le24(index_table + idx_min * 3); + *pcode = v & ((1 << 21) - 1); + return (idx_min + 1) * UNICODE_INDEX_BLOCK_LEN + (v >> 21); +} + +static BOOL lre_is_in_table(uint32_t c, const uint8_t *table, + const uint8_t *index_table, int index_table_len) +{ + uint32_t code, b, bit; + int pos; + const uint8_t *p; + + pos = get_index_pos(&code, c, index_table, index_table_len); + if (pos < 0) + return FALSE; /* outside the table */ + p = table + pos; + bit = 0; + for(;;) { + b = *p++; + if (b < 64) { + code += (b >> 3) + 1; + if (c < code) + return bit; + bit ^= 1; + code += (b & 7) + 1; + } else if (b >= 0x80) { + code += b - 0x80 + 1; + } else if (b < 0x60) { + code += (((b - 0x40) << 8) | p[0]) + 1; + p++; + } else { + code += (((b - 0x60) << 16) | (p[0] << 8) | p[1]) + 1; + p += 2; + } + if (c < code) + return bit; + bit ^= 1; + } +} + +BOOL lre_is_cased(uint32_t c) +{ + uint32_t v, code, len; + int idx, idx_min, idx_max; + + idx_min = 0; + idx_max = countof(case_conv_table1) - 1; + while (idx_min <= idx_max) { + idx = (unsigned)(idx_max + idx_min) / 2; + v = case_conv_table1[idx]; + code = v >> (32 - 17); + len = (v >> (32 - 17 - 7)) & 0x7f; + if (c < code) { + idx_max = idx - 1; + } else if (c >= code + len) { + idx_min = idx + 1; + } else { + return TRUE; + } + } + return lre_is_in_table(c, unicode_prop_Cased1_table, + unicode_prop_Cased1_index, + sizeof(unicode_prop_Cased1_index) / 3); +} + +BOOL lre_is_case_ignorable(uint32_t c) +{ + return lre_is_in_table(c, unicode_prop_Case_Ignorable_table, + unicode_prop_Case_Ignorable_index, + sizeof(unicode_prop_Case_Ignorable_index) / 3); +} + +/* character range */ + +static __maybe_unused void cr_dump(CharRange *cr) +{ + int i; + for(i = 0; i < cr->len; i++) + printf("%d: 0x%04x\n", i, cr->points[i]); +} + +static void *cr_default_realloc(void *opaque, void *ptr, size_t size) +{ + return realloc(ptr, size); +} + +void cr_init(CharRange *cr, void *mem_opaque, DynBufReallocFunc *realloc_func) +{ + cr->len = cr->size = 0; + cr->points = NULL; + cr->mem_opaque = mem_opaque; + cr->realloc_func = realloc_func ? realloc_func : cr_default_realloc; +} + +void cr_free(CharRange *cr) +{ + cr->realloc_func(cr->mem_opaque, cr->points, 0); +} + +int cr_realloc(CharRange *cr, int size) +{ + int new_size; + uint32_t *new_buf; + + if (size > cr->size) { + new_size = max_int(size, cr->size * 3 / 2); + new_buf = cr->realloc_func(cr->mem_opaque, cr->points, + new_size * sizeof(cr->points[0])); + if (!new_buf) + return -1; + cr->points = new_buf; + cr->size = new_size; + } + return 0; +} + +int cr_copy(CharRange *cr, const CharRange *cr1) +{ + if (cr_realloc(cr, cr1->len)) + return -1; + memcpy(cr->points, cr1->points, sizeof(cr->points[0]) * cr1->len); + cr->len = cr1->len; + return 0; +} + +/* merge consecutive intervals and remove empty intervals */ +static void cr_compress(CharRange *cr) +{ + int i, j, k, len; + uint32_t *pt; + + pt = cr->points; + len = cr->len; + i = 0; + j = 0; + k = 0; + while ((i + 1) < len) { + if (pt[i] == pt[i + 1]) { + /* empty interval */ + i += 2; + } else { + j = i; + while ((j + 3) < len && pt[j + 1] == pt[j + 2]) + j += 2; + /* just copy */ + pt[k] = pt[i]; + pt[k + 1] = pt[j + 1]; + k += 2; + i = j + 2; + } + } + cr->len = k; +} + +/* union or intersection */ +int cr_op(CharRange *cr, const uint32_t *a_pt, int a_len, + const uint32_t *b_pt, int b_len, int op) +{ + int a_idx, b_idx, is_in; + uint32_t v; + + a_idx = 0; + b_idx = 0; + for(;;) { + /* get one more point from a or b in increasing order */ + if (a_idx < a_len && b_idx < b_len) { + if (a_pt[a_idx] < b_pt[b_idx]) { + goto a_add; + } else if (a_pt[a_idx] == b_pt[b_idx]) { + v = a_pt[a_idx]; + a_idx++; + b_idx++; + } else { + goto b_add; + } + } else if (a_idx < a_len) { + a_add: + v = a_pt[a_idx++]; + } else if (b_idx < b_len) { + b_add: + v = b_pt[b_idx++]; + } else { + break; + } + /* add the point if the in/out status changes */ + switch(op) { + case CR_OP_UNION: + is_in = (a_idx & 1) | (b_idx & 1); + break; + case CR_OP_INTER: + is_in = (a_idx & 1) & (b_idx & 1); + break; + case CR_OP_XOR: + is_in = (a_idx & 1) ^ (b_idx & 1); + break; + default: + abort(); + } + if (is_in != (cr->len & 1)) { + if (cr_add_point(cr, v)) + return -1; + } + } + cr_compress(cr); + return 0; +} + +int cr_union1(CharRange *cr, const uint32_t *b_pt, int b_len) +{ + CharRange a = *cr; + int ret; + cr->len = 0; + cr->size = 0; + cr->points = NULL; + ret = cr_op(cr, a.points, a.len, b_pt, b_len, CR_OP_UNION); + cr_free(&a); + return ret; +} + +int cr_invert(CharRange *cr) +{ + int len; + len = cr->len; + if (cr_realloc(cr, len + 2)) + return -1; + memmove(cr->points + 1, cr->points, len * sizeof(cr->points[0])); + cr->points[0] = 0; + cr->points[len + 1] = UINT32_MAX; + cr->len = len + 2; + cr_compress(cr); + return 0; +} + +#ifdef CONFIG_ALL_UNICODE + +BOOL lre_is_id_start(uint32_t c) +{ + return lre_is_in_table(c, unicode_prop_ID_Start_table, + unicode_prop_ID_Start_index, + sizeof(unicode_prop_ID_Start_index) / 3); +} + +BOOL lre_is_id_continue(uint32_t c) +{ + return lre_is_id_start(c) || + lre_is_in_table(c, unicode_prop_ID_Continue1_table, + unicode_prop_ID_Continue1_index, + sizeof(unicode_prop_ID_Continue1_index) / 3); +} + +#define UNICODE_DECOMP_LEN_MAX 18 + +typedef enum { + DECOMP_TYPE_C1, /* 16 bit char */ + DECOMP_TYPE_L1, /* 16 bit char table */ + DECOMP_TYPE_L2, + DECOMP_TYPE_L3, + DECOMP_TYPE_L4, + DECOMP_TYPE_L5, /* XXX: not used */ + DECOMP_TYPE_L6, /* XXX: could remove */ + DECOMP_TYPE_L7, /* XXX: could remove */ + DECOMP_TYPE_LL1, /* 18 bit char table */ + DECOMP_TYPE_LL2, + DECOMP_TYPE_S1, /* 8 bit char table */ + DECOMP_TYPE_S2, + DECOMP_TYPE_S3, + DECOMP_TYPE_S4, + DECOMP_TYPE_S5, + DECOMP_TYPE_I1, /* increment 16 bit char value */ + DECOMP_TYPE_I2_0, + DECOMP_TYPE_I2_1, + DECOMP_TYPE_I3_1, + DECOMP_TYPE_I3_2, + DECOMP_TYPE_I4_1, + DECOMP_TYPE_I4_2, + DECOMP_TYPE_B1, /* 16 bit base + 8 bit offset */ + DECOMP_TYPE_B2, + DECOMP_TYPE_B3, + DECOMP_TYPE_B4, + DECOMP_TYPE_B5, + DECOMP_TYPE_B6, + DECOMP_TYPE_B7, + DECOMP_TYPE_B8, + DECOMP_TYPE_B18, + DECOMP_TYPE_LS2, + DECOMP_TYPE_PAT3, + DECOMP_TYPE_S2_UL, + DECOMP_TYPE_LS2_UL, +} DecompTypeEnum; + +static uint32_t unicode_get_short_code(uint32_t c) +{ + static const uint16_t unicode_short_table[2] = { 0x2044, 0x2215 }; + + if (c < 0x80) + return c; + else if (c < 0x80 + 0x50) + return c - 0x80 + 0x300; + else + return unicode_short_table[c - 0x80 - 0x50]; +} + +static uint32_t unicode_get_lower_simple(uint32_t c) +{ + if (c < 0x100 || (c >= 0x410 && c <= 0x42f)) + c += 0x20; + else + c++; + return c; +} + +static uint16_t unicode_get16(const uint8_t *p) +{ + return p[0] | (p[1] << 8); +} + +static int unicode_decomp_entry(uint32_t *res, uint32_t c, + int idx, uint32_t code, uint32_t len, + uint32_t type) +{ + uint32_t c1; + int l, i, p; + const uint8_t *d; + + if (type == DECOMP_TYPE_C1) { + res[0] = unicode_decomp_table2[idx]; + return 1; + } else { + d = unicode_decomp_data + unicode_decomp_table2[idx]; + switch(type) { + case DECOMP_TYPE_L1: + case DECOMP_TYPE_L2: + case DECOMP_TYPE_L3: + case DECOMP_TYPE_L4: + case DECOMP_TYPE_L5: + case DECOMP_TYPE_L6: + case DECOMP_TYPE_L7: + l = type - DECOMP_TYPE_L1 + 1; + d += (c - code) * l * 2; + for(i = 0; i < l; i++) { + if ((res[i] = unicode_get16(d + 2 * i)) == 0) + return 0; + } + return l; + case DECOMP_TYPE_LL1: + case DECOMP_TYPE_LL2: + { + uint32_t k, p; + l = type - DECOMP_TYPE_LL1 + 1; + k = (c - code) * l; + p = len * l * 2; + for(i = 0; i < l; i++) { + c1 = unicode_get16(d + 2 * k) | + (((d[p + (k / 4)] >> ((k % 4) * 2)) & 3) << 16); + if (!c1) + return 0; + res[i] = c1; + k++; + } + } + return l; + case DECOMP_TYPE_S1: + case DECOMP_TYPE_S2: + case DECOMP_TYPE_S3: + case DECOMP_TYPE_S4: + case DECOMP_TYPE_S5: + l = type - DECOMP_TYPE_S1 + 1; + d += (c - code) * l; + for(i = 0; i < l; i++) { + if ((res[i] = unicode_get_short_code(d[i])) == 0) + return 0; + } + return l; + case DECOMP_TYPE_I1: + l = 1; + p = 0; + goto decomp_type_i; + case DECOMP_TYPE_I2_0: + case DECOMP_TYPE_I2_1: + case DECOMP_TYPE_I3_1: + case DECOMP_TYPE_I3_2: + case DECOMP_TYPE_I4_1: + case DECOMP_TYPE_I4_2: + l = 2 + ((type - DECOMP_TYPE_I2_0) >> 1); + p = ((type - DECOMP_TYPE_I2_0) & 1) + (l > 2); + decomp_type_i: + for(i = 0; i < l; i++) { + c1 = unicode_get16(d + 2 * i); + if (i == p) + c1 += c - code; + res[i] = c1; + } + return l; + case DECOMP_TYPE_B18: + l = 18; + goto decomp_type_b; + case DECOMP_TYPE_B1: + case DECOMP_TYPE_B2: + case DECOMP_TYPE_B3: + case DECOMP_TYPE_B4: + case DECOMP_TYPE_B5: + case DECOMP_TYPE_B6: + case DECOMP_TYPE_B7: + case DECOMP_TYPE_B8: + l = type - DECOMP_TYPE_B1 + 1; + decomp_type_b: + { + uint32_t c_min; + c_min = unicode_get16(d); + d += 2 + (c - code) * l; + for(i = 0; i < l; i++) { + c1 = d[i]; + if (c1 == 0xff) + c1 = 0x20; + else + c1 += c_min; + res[i] = c1; + } + } + return l; + case DECOMP_TYPE_LS2: + d += (c - code) * 3; + if (!(res[0] = unicode_get16(d))) + return 0; + res[1] = unicode_get_short_code(d[2]); + return 2; + case DECOMP_TYPE_PAT3: + res[0] = unicode_get16(d); + res[2] = unicode_get16(d + 2); + d += 4 + (c - code) * 2; + res[1] = unicode_get16(d); + return 3; + case DECOMP_TYPE_S2_UL: + case DECOMP_TYPE_LS2_UL: + c1 = c - code; + if (type == DECOMP_TYPE_S2_UL) { + d += c1 & ~1; + c = unicode_get_short_code(*d); + d++; + } else { + d += (c1 >> 1) * 3; + c = unicode_get16(d); + d += 2; + } + if (c1 & 1) + c = unicode_get_lower_simple(c); + res[0] = c; + res[1] = unicode_get_short_code(*d); + return 2; + } + } + return 0; +} + + +/* return the length of the decomposition (length <= + UNICODE_DECOMP_LEN_MAX) or 0 if no decomposition */ +static int unicode_decomp_char(uint32_t *res, uint32_t c, BOOL is_compat1) +{ + uint32_t v, type, is_compat, code, len; + int idx_min, idx_max, idx; + + idx_min = 0; + idx_max = countof(unicode_decomp_table1) - 1; + while (idx_min <= idx_max) { + idx = (idx_max + idx_min) / 2; + v = unicode_decomp_table1[idx]; + code = v >> (32 - 18); + len = (v >> (32 - 18 - 7)) & 0x7f; + // printf("idx=%d code=%05x len=%d\n", idx, code, len); + if (c < code) { + idx_max = idx - 1; + } else if (c >= code + len) { + idx_min = idx + 1; + } else { + is_compat = v & 1; + if (is_compat1 < is_compat) + break; + type = (v >> (32 - 18 - 7 - 6)) & 0x3f; + return unicode_decomp_entry(res, c, idx, code, len, type); + } + } + return 0; +} + +/* return 0 if no pair found */ +static int unicode_compose_pair(uint32_t c0, uint32_t c1) +{ + uint32_t code, len, type, v, idx1, d_idx, d_offset, ch; + int idx_min, idx_max, idx, d; + uint32_t pair[2]; + + idx_min = 0; + idx_max = countof(unicode_comp_table) - 1; + while (idx_min <= idx_max) { + idx = (idx_max + idx_min) / 2; + idx1 = unicode_comp_table[idx]; + + /* idx1 represent an entry of the decomposition table */ + d_idx = idx1 >> 6; + d_offset = idx1 & 0x3f; + v = unicode_decomp_table1[d_idx]; + code = v >> (32 - 18); + len = (v >> (32 - 18 - 7)) & 0x7f; + type = (v >> (32 - 18 - 7 - 6)) & 0x3f; + ch = code + d_offset; + unicode_decomp_entry(pair, ch, d_idx, code, len, type); + d = c0 - pair[0]; + if (d == 0) + d = c1 - pair[1]; + if (d < 0) { + idx_max = idx - 1; + } else if (d > 0) { + idx_min = idx + 1; + } else { + return ch; + } + } + return 0; +} + +/* return the combining class of character c (between 0 and 255) */ +static int unicode_get_cc(uint32_t c) +{ + uint32_t code, n, type, cc, c1, b; + int pos; + const uint8_t *p; + + pos = get_index_pos(&code, c, + unicode_cc_index, sizeof(unicode_cc_index) / 3); + if (pos < 0) + return 0; + p = unicode_cc_table + pos; + for(;;) { + b = *p++; + type = b >> 6; + n = b & 0x3f; + if (n < 48) { + } else if (n < 56) { + n = (n - 48) << 8; + n |= *p++; + n += 48; + } else { + n = (n - 56) << 8; + n |= *p++ << 8; + n |= *p++; + n += 48 + (1 << 11); + } + if (type <= 1) + p++; + c1 = code + n + 1; + if (c < c1) { + switch(type) { + case 0: + cc = p[-1]; + break; + case 1: + cc = p[-1] + c - code; + break; + case 2: + cc = 0; + break; + default: + case 3: + cc = 230; + break; + } + return cc; + } + code = c1; + } +} + +static void sort_cc(int *buf, int len) +{ + int i, j, k, cc, cc1, start, ch1; + + for(i = 0; i < len; i++) { + cc = unicode_get_cc(buf[i]); + if (cc != 0) { + start = i; + j = i + 1; + while (j < len) { + ch1 = buf[j]; + cc1 = unicode_get_cc(ch1); + if (cc1 == 0) + break; + k = j - 1; + while (k >= start) { + if (unicode_get_cc(buf[k]) <= cc1) + break; + buf[k + 1] = buf[k]; + k--; + } + buf[k + 1] = ch1; + j++; + } +#if 0 + printf("cc:"); + for(k = start; k < j; k++) { + printf(" %3d", unicode_get_cc(buf[k])); + } + printf("\n"); +#endif + i = j; + } + } +} + +static void to_nfd_rec(DynBuf *dbuf, + const int *src, int src_len, int is_compat) +{ + uint32_t c, v; + int i, l; + uint32_t res[UNICODE_DECOMP_LEN_MAX]; + + for(i = 0; i < src_len; i++) { + c = src[i]; + if (c >= 0xac00 && c < 0xd7a4) { + /* Hangul decomposition */ + c -= 0xac00; + dbuf_put_u32(dbuf, 0x1100 + c / 588); + dbuf_put_u32(dbuf, 0x1161 + (c % 588) / 28); + v = c % 28; + if (v != 0) + dbuf_put_u32(dbuf, 0x11a7 + v); + } else { + l = unicode_decomp_char(res, c, is_compat); + if (l) { + to_nfd_rec(dbuf, (int *)res, l, is_compat); + } else { + dbuf_put_u32(dbuf, c); + } + } + } +} + +/* return 0 if not found */ +static int compose_pair(uint32_t c0, uint32_t c1) +{ + /* Hangul composition */ + if (c0 >= 0x1100 && c0 < 0x1100 + 19 && + c1 >= 0x1161 && c1 < 0x1161 + 21) { + return 0xac00 + (c0 - 0x1100) * 588 + (c1 - 0x1161) * 28; + } else if (c0 >= 0xac00 && c0 < 0xac00 + 11172 && + (c0 - 0xac00) % 28 == 0 && + c1 >= 0x11a7 && c1 < 0x11a7 + 28) { + return c0 + c1 - 0x11a7; + } else { + return unicode_compose_pair(c0, c1); + } +} + +int unicode_normalize(uint32_t **pdst, const uint32_t *src, int src_len, + UnicodeNormalizationEnum n_type, + void *opaque, DynBufReallocFunc *realloc_func) +{ + int *buf, buf_len, i, p, starter_pos, cc, last_cc, out_len; + BOOL is_compat; + DynBuf dbuf_s, *dbuf = &dbuf_s; + + is_compat = n_type >> 1; + + dbuf_init2(dbuf, opaque, realloc_func); + if (dbuf_realloc(dbuf, sizeof(int) * src_len)) + goto fail; + + /* common case: latin1 is unaffected by NFC */ + if (n_type == UNICODE_NFC) { + for(i = 0; i < src_len; i++) { + if (src[i] >= 0x100) + goto not_latin1; + } + buf = (int *)dbuf->buf; + memcpy(buf, src, src_len * sizeof(int)); + *pdst = (uint32_t *)buf; + return src_len; + not_latin1: ; + } + + to_nfd_rec(dbuf, (const int *)src, src_len, is_compat); + if (dbuf_error(dbuf)) { + fail: + *pdst = NULL; + return -1; + } + buf = (int *)dbuf->buf; + buf_len = dbuf->size / sizeof(int); + + sort_cc(buf, buf_len); + + if (buf_len <= 1 || (n_type & 1) != 0) { + /* NFD / NFKD */ + *pdst = (uint32_t *)buf; + return buf_len; + } + + i = 1; + out_len = 1; + while (i < buf_len) { + /* find the starter character and test if it is blocked from + the character at 'i' */ + last_cc = unicode_get_cc(buf[i]); + starter_pos = out_len - 1; + while (starter_pos >= 0) { + cc = unicode_get_cc(buf[starter_pos]); + if (cc == 0) + break; + if (cc >= last_cc) + goto next; + last_cc = 256; + starter_pos--; + } + if (starter_pos >= 0 && + (p = compose_pair(buf[starter_pos], buf[i])) != 0) { + buf[starter_pos] = p; + i++; + } else { + next: + buf[out_len++] = buf[i++]; + } + } + *pdst = (uint32_t *)buf; + return out_len; +} + +/* char ranges for various unicode properties */ + +static int unicode_find_name(const char *name_table, const char *name) +{ + const char *p, *r; + int pos; + size_t name_len, len; + + p = name_table; + pos = 0; + name_len = strlen(name); + while (*p) { + for(;;) { + r = strchr(p, ','); + if (!r) + len = strlen(p); + else + len = r - p; + if (len == name_len && !memcmp(p, name, name_len)) + return pos; + p += len + 1; + if (!r) + break; + } + pos++; + } + return -1; +} + +/* 'cr' must be initialized and empty. Return 0 if OK, -1 if error, -2 + if not found */ +int unicode_script(CharRange *cr, + const char *script_name, BOOL is_ext) +{ + int script_idx; + const uint8_t *p, *p_end; + uint32_t c, c1, b, n, v, v_len, i, type; + CharRange cr1_s, *cr1; + CharRange cr2_s, *cr2 = &cr2_s; + BOOL is_common; + + script_idx = unicode_find_name(unicode_script_name_table, script_name); + if (script_idx < 0) + return -2; + /* Note: we remove the "Unknown" Script */ + script_idx += UNICODE_SCRIPT_Unknown + 1; + + is_common = (script_idx == UNICODE_SCRIPT_Common || + script_idx == UNICODE_SCRIPT_Inherited); + if (is_ext) { + cr1 = &cr1_s; + cr_init(cr1, cr->mem_opaque, cr->realloc_func); + cr_init(cr2, cr->mem_opaque, cr->realloc_func); + } else { + cr1 = cr; + } + + p = unicode_script_table; + p_end = unicode_script_table + countof(unicode_script_table); + c = 0; + while (p < p_end) { + b = *p++; + type = b >> 7; + n = b & 0x7f; + if (n < 96) { + } else if (n < 112) { + n = (n - 96) << 8; + n |= *p++; + n += 96; + } else { + n = (n - 112) << 16; + n |= *p++ << 8; + n |= *p++; + n += 96 + (1 << 12); + } + if (type == 0) + v = 0; + else + v = *p++; + c1 = c + n + 1; + if (v == script_idx) { + if (cr_add_interval(cr1, c, c1)) + goto fail; + } + c = c1; + } + + if (is_ext) { + /* add the script extensions */ + p = unicode_script_ext_table; + p_end = unicode_script_ext_table + countof(unicode_script_ext_table); + c = 0; + while (p < p_end) { + b = *p++; + if (b < 128) { + n = b; + } else if (b < 128 + 64) { + n = (b - 128) << 8; + n |= *p++; + n += 128; + } else { + n = (b - 128 - 64) << 16; + n |= *p++ << 8; + n |= *p++; + n += 128 + (1 << 14); + } + c1 = c + n + 1; + v_len = *p++; + if (is_common) { + if (v_len != 0) { + if (cr_add_interval(cr2, c, c1)) + goto fail; + } + } else { + for(i = 0; i < v_len; i++) { + if (p[i] == script_idx) { + if (cr_add_interval(cr2, c, c1)) + goto fail; + break; + } + } + } + p += v_len; + c = c1; + } + if (is_common) { + /* remove all the characters with script extensions */ + if (cr_invert(cr2)) + goto fail; + if (cr_op(cr, cr1->points, cr1->len, cr2->points, cr2->len, + CR_OP_INTER)) + goto fail; + } else { + if (cr_op(cr, cr1->points, cr1->len, cr2->points, cr2->len, + CR_OP_UNION)) + goto fail; + } + cr_free(cr1); + cr_free(cr2); + } + return 0; + fail: + if (is_ext) { + cr_free(cr1); + cr_free(cr2); + } + goto fail; +} + +#define M(id) (1U << UNICODE_GC_ ## id) + +static int unicode_general_category1(CharRange *cr, uint32_t gc_mask) +{ + const uint8_t *p, *p_end; + uint32_t c, c0, b, n, v; + + p = unicode_gc_table; + p_end = unicode_gc_table + countof(unicode_gc_table); + c = 0; + while (p < p_end) { + b = *p++; + n = b >> 5; + v = b & 0x1f; + if (n == 7) { + n = *p++; + if (n < 128) { + n += 7; + } else if (n < 128 + 64) { + n = (n - 128) << 8; + n |= *p++; + n += 7 + 128; + } else { + n = (n - 128 - 64) << 16; + n |= *p++ << 8; + n |= *p++; + n += 7 + 128 + (1 << 14); + } + } + c0 = c; + c += n + 1; + if (v == 31) { + /* run of Lu / Ll */ + b = gc_mask & (M(Lu) | M(Ll)); + if (b != 0) { + if (b == (M(Lu) | M(Ll))) { + goto add_range; + } else { + c0 += ((gc_mask & M(Ll)) != 0); + for(; c0 < c; c0 += 2) { + if (cr_add_interval(cr, c0, c0 + 1)) + return -1; + } + } + } + } else if ((gc_mask >> v) & 1) { + add_range: + if (cr_add_interval(cr, c0, c)) + return -1; + } + } + return 0; +} + +static int unicode_prop1(CharRange *cr, int prop_idx) +{ + const uint8_t *p, *p_end; + uint32_t c, c0, b, bit; + + p = unicode_prop_table[prop_idx]; + p_end = p + unicode_prop_len_table[prop_idx]; + c = 0; + bit = 0; + while (p < p_end) { + c0 = c; + b = *p++; + if (b < 64) { + c += (b >> 3) + 1; + if (bit) { + if (cr_add_interval(cr, c0, c)) + return -1; + } + bit ^= 1; + c0 = c; + c += (b & 7) + 1; + } else if (b >= 0x80) { + c += b - 0x80 + 1; + } else if (b < 0x60) { + c += (((b - 0x40) << 8) | p[0]) + 1; + p++; + } else { + c += (((b - 0x60) << 16) | (p[0] << 8) | p[1]) + 1; + p += 2; + } + if (bit) { + if (cr_add_interval(cr, c0, c)) + return -1; + } + bit ^= 1; + } + return 0; +} + +#define CASE_U (1 << 0) +#define CASE_L (1 << 1) +#define CASE_F (1 << 2) + +/* use the case conversion table to generate range of characters. + CASE_U: set char if modified by uppercasing, + CASE_L: set char if modified by lowercasing, + CASE_F: set char if modified by case folding, + */ +static int unicode_case1(CharRange *cr, int case_mask) +{ +#define MR(x) (1 << RUN_TYPE_ ## x) + const uint32_t tab_run_mask[3] = { + MR(U) | MR(UF) | MR(UL) | MR(LSU) | MR(U2L_399_EXT2) | MR(UF_D20) | + MR(UF_D1_EXT) | MR(U_EXT) | MR(U_EXT2) | MR(U_EXT3), + + MR(L) | MR(LF) | MR(UL) | MR(LSU) | MR(U2L_399_EXT2) | MR(LF_EXT) | MR(L_EXT2), + + MR(UF) | MR(LF) | MR(UL) | MR(LSU) | MR(U2L_399_EXT2) | MR(LF_EXT) | MR(UF_D20) | MR(UF_D1_EXT) | MR(LF_EXT), + }; +#undef MR + uint32_t mask, v, code, type, len, i, idx; + + if (case_mask == 0) + return 0; + mask = 0; + for(i = 0; i < 3; i++) { + if ((case_mask >> i) & 1) + mask |= tab_run_mask[i]; + } + for(idx = 0; idx < countof(case_conv_table1); idx++) { + v = case_conv_table1[idx]; + type = (v >> (32 - 17 - 7 - 4)) & 0xf; + code = v >> (32 - 17); + len = (v >> (32 - 17 - 7)) & 0x7f; + if ((mask >> type) & 1) { + // printf("%d: type=%d %04x %04x\n", idx, type, code, code + len - 1); + switch(type) { + case RUN_TYPE_UL: + if ((case_mask & CASE_U) && (case_mask & (CASE_L | CASE_F))) + goto def_case; + code += ((case_mask & CASE_U) != 0); + for(i = 0; i < len; i += 2) { + if (cr_add_interval(cr, code + i, code + i + 1)) + return -1; + } + break; + case RUN_TYPE_LSU: + if ((case_mask & CASE_U) && (case_mask & (CASE_L | CASE_F))) + goto def_case; + if (!(case_mask & CASE_U)) { + if (cr_add_interval(cr, code, code + 1)) + return -1; + } + if (cr_add_interval(cr, code + 1, code + 2)) + return -1; + if (case_mask & CASE_U) { + if (cr_add_interval(cr, code + 2, code + 3)) + return -1; + } + break; + default: + def_case: + if (cr_add_interval(cr, code, code + len)) + return -1; + break; + } + } + } + return 0; +} + +typedef enum { + POP_GC, + POP_PROP, + POP_CASE, + POP_UNION, + POP_INTER, + POP_XOR, + POP_INVERT, + POP_END, +} PropOPEnum; + +#define POP_STACK_LEN_MAX 4 + +static int unicode_prop_ops(CharRange *cr, ...) +{ + va_list ap; + CharRange stack[POP_STACK_LEN_MAX]; + int stack_len, op, ret, i; + uint32_t a; + + va_start(ap, cr); + stack_len = 0; + for(;;) { + op = va_arg(ap, int); + switch(op) { + case POP_GC: + assert(stack_len < POP_STACK_LEN_MAX); + a = va_arg(ap, int); + cr_init(&stack[stack_len++], cr->mem_opaque, cr->realloc_func); + if (unicode_general_category1(&stack[stack_len - 1], a)) + goto fail; + break; + case POP_PROP: + assert(stack_len < POP_STACK_LEN_MAX); + a = va_arg(ap, int); + cr_init(&stack[stack_len++], cr->mem_opaque, cr->realloc_func); + if (unicode_prop1(&stack[stack_len - 1], a)) + goto fail; + break; + case POP_CASE: + assert(stack_len < POP_STACK_LEN_MAX); + a = va_arg(ap, int); + cr_init(&stack[stack_len++], cr->mem_opaque, cr->realloc_func); + if (unicode_case1(&stack[stack_len - 1], a)) + goto fail; + break; + case POP_UNION: + case POP_INTER: + case POP_XOR: + { + CharRange *cr1, *cr2, *cr3; + assert(stack_len >= 2); + assert(stack_len < POP_STACK_LEN_MAX); + cr1 = &stack[stack_len - 2]; + cr2 = &stack[stack_len - 1]; + cr3 = &stack[stack_len++]; + cr_init(cr3, cr->mem_opaque, cr->realloc_func); + if (cr_op(cr3, cr1->points, cr1->len, + cr2->points, cr2->len, op - POP_UNION + CR_OP_UNION)) + goto fail; + cr_free(cr1); + cr_free(cr2); + *cr1 = *cr3; + stack_len -= 2; + } + break; + case POP_INVERT: + assert(stack_len >= 1); + if (cr_invert(&stack[stack_len - 1])) + goto fail; + break; + case POP_END: + goto done; + default: + abort(); + } + } + done: + assert(stack_len == 1); + ret = cr_copy(cr, &stack[0]); + cr_free(&stack[0]); + return ret; + fail: + for(i = 0; i < stack_len; i++) + cr_free(&stack[i]); + return -1; +} + +static const uint32_t unicode_gc_mask_table[] = { + M(Lu) | M(Ll) | M(Lt), /* LC */ + M(Lu) | M(Ll) | M(Lt) | M(Lm) | M(Lo), /* L */ + M(Mn) | M(Mc) | M(Me), /* M */ + M(Nd) | M(Nl) | M(No), /* N */ + M(Sm) | M(Sc) | M(Sk) | M(So), /* S */ + M(Pc) | M(Pd) | M(Ps) | M(Pe) | M(Pi) | M(Pf) | M(Po), /* P */ + M(Zs) | M(Zl) | M(Zp), /* Z */ + M(Cc) | M(Cf) | M(Cs) | M(Co) | M(Cn), /* C */ +}; + +/* 'cr' must be initialized and empty. Return 0 if OK, -1 if error, -2 + if not found */ +int unicode_general_category(CharRange *cr, const char *gc_name) +{ + int gc_idx; + uint32_t gc_mask; + + gc_idx = unicode_find_name(unicode_gc_name_table, gc_name); + if (gc_idx < 0) + return -2; + if (gc_idx <= UNICODE_GC_Co) { + gc_mask = (uint64_t)1 << gc_idx; + } else { + gc_mask = unicode_gc_mask_table[gc_idx - UNICODE_GC_LC]; + } + return unicode_general_category1(cr, gc_mask); +} + + +/* 'cr' must be initialized and empty. Return 0 if OK, -1 if error, -2 + if not found */ +int unicode_prop(CharRange *cr, const char *prop_name) +{ + int prop_idx, ret; + + prop_idx = unicode_find_name(unicode_prop_name_table, prop_name); + if (prop_idx < 0) + return -2; + prop_idx += UNICODE_PROP_ASCII_Hex_Digit; + + ret = 0; + switch(prop_idx) { + case UNICODE_PROP_ASCII: + if (cr_add_interval(cr, 0x00, 0x7f + 1)) + return -1; + break; + case UNICODE_PROP_Any: + if (cr_add_interval(cr, 0x00000, 0x10ffff + 1)) + return -1; + break; + case UNICODE_PROP_Assigned: + ret = unicode_prop_ops(cr, + POP_GC, M(Cn), + POP_INVERT, + POP_END); + break; + case UNICODE_PROP_Math: + ret = unicode_prop_ops(cr, + POP_GC, M(Sm), + POP_PROP, UNICODE_PROP_Other_Math, + POP_UNION, + POP_END); + break; + case UNICODE_PROP_Lowercase: + ret = unicode_prop_ops(cr, + POP_GC, M(Ll), + POP_PROP, UNICODE_PROP_Other_Lowercase, + POP_UNION, + POP_END); + break; + case UNICODE_PROP_Uppercase: + ret = unicode_prop_ops(cr, + POP_GC, M(Lu), + POP_PROP, UNICODE_PROP_Other_Uppercase, + POP_UNION, + POP_END); + break; + case UNICODE_PROP_Cased: + ret = unicode_prop_ops(cr, + POP_GC, M(Lu) | M(Ll) | M(Lt), + POP_PROP, UNICODE_PROP_Other_Uppercase, + POP_UNION, + POP_PROP, UNICODE_PROP_Other_Lowercase, + POP_UNION, + POP_END); + break; + case UNICODE_PROP_Alphabetic: + ret = unicode_prop_ops(cr, + POP_GC, M(Lu) | M(Ll) | M(Lt) | M(Lm) | M(Lo) | M(Nl), + POP_PROP, UNICODE_PROP_Other_Uppercase, + POP_UNION, + POP_PROP, UNICODE_PROP_Other_Lowercase, + POP_UNION, + POP_PROP, UNICODE_PROP_Other_Alphabetic, + POP_UNION, + POP_END); + break; + case UNICODE_PROP_Grapheme_Base: + ret = unicode_prop_ops(cr, + POP_GC, M(Cc) | M(Cf) | M(Cs) | M(Co) | M(Cn) | M(Zl) | M(Zp) | M(Me) | M(Mn), + POP_PROP, UNICODE_PROP_Other_Grapheme_Extend, + POP_UNION, + POP_INVERT, + POP_END); + break; + case UNICODE_PROP_Grapheme_Extend: + ret = unicode_prop_ops(cr, + POP_GC, M(Me) | M(Mn), + POP_PROP, UNICODE_PROP_Other_Grapheme_Extend, + POP_UNION, + POP_END); + break; + case UNICODE_PROP_XID_Start: + ret = unicode_prop_ops(cr, + POP_GC, M(Lu) | M(Ll) | M(Lt) | M(Lm) | M(Lo) | M(Nl), + POP_PROP, UNICODE_PROP_Other_ID_Start, + POP_UNION, + POP_PROP, UNICODE_PROP_Pattern_Syntax, + POP_PROP, UNICODE_PROP_Pattern_White_Space, + POP_UNION, + POP_PROP, UNICODE_PROP_XID_Start1, + POP_UNION, + POP_INVERT, + POP_INTER, + POP_END); + break; + case UNICODE_PROP_XID_Continue: + ret = unicode_prop_ops(cr, + POP_GC, M(Lu) | M(Ll) | M(Lt) | M(Lm) | M(Lo) | M(Nl) | + M(Mn) | M(Mc) | M(Nd) | M(Pc), + POP_PROP, UNICODE_PROP_Other_ID_Start, + POP_UNION, + POP_PROP, UNICODE_PROP_Other_ID_Continue, + POP_UNION, + POP_PROP, UNICODE_PROP_Pattern_Syntax, + POP_PROP, UNICODE_PROP_Pattern_White_Space, + POP_UNION, + POP_PROP, UNICODE_PROP_XID_Continue1, + POP_UNION, + POP_INVERT, + POP_INTER, + POP_END); + break; + case UNICODE_PROP_Changes_When_Uppercased: + ret = unicode_case1(cr, CASE_U); + break; + case UNICODE_PROP_Changes_When_Lowercased: + ret = unicode_case1(cr, CASE_L); + break; + case UNICODE_PROP_Changes_When_Casemapped: + ret = unicode_case1(cr, CASE_U | CASE_L | CASE_F); + break; + case UNICODE_PROP_Changes_When_Titlecased: + ret = unicode_prop_ops(cr, + POP_CASE, CASE_U, + POP_PROP, UNICODE_PROP_Changes_When_Titlecased1, + POP_XOR, + POP_END); + break; + case UNICODE_PROP_Changes_When_Casefolded: + ret = unicode_prop_ops(cr, + POP_CASE, CASE_F, + POP_PROP, UNICODE_PROP_Changes_When_Casefolded1, + POP_XOR, + POP_END); + break; + case UNICODE_PROP_Changes_When_NFKC_Casefolded: + ret = unicode_prop_ops(cr, + POP_CASE, CASE_F, + POP_PROP, UNICODE_PROP_Changes_When_NFKC_Casefolded1, + POP_XOR, + POP_END); + break; +#if 0 + case UNICODE_PROP_ID_Start: + ret = unicode_prop_ops(cr, + POP_GC, M(Lu) | M(Ll) | M(Lt) | M(Lm) | M(Lo) | M(Nl), + POP_PROP, UNICODE_PROP_Other_ID_Start, + POP_UNION, + POP_PROP, UNICODE_PROP_Pattern_Syntax, + POP_PROP, UNICODE_PROP_Pattern_White_Space, + POP_UNION, + POP_INVERT, + POP_INTER, + POP_END); + break; + case UNICODE_PROP_ID_Continue: + ret = unicode_prop_ops(cr, + POP_GC, M(Lu) | M(Ll) | M(Lt) | M(Lm) | M(Lo) | M(Nl) | + M(Mn) | M(Mc) | M(Nd) | M(Pc), + POP_PROP, UNICODE_PROP_Other_ID_Start, + POP_UNION, + POP_PROP, UNICODE_PROP_Other_ID_Continue, + POP_UNION, + POP_PROP, UNICODE_PROP_Pattern_Syntax, + POP_PROP, UNICODE_PROP_Pattern_White_Space, + POP_UNION, + POP_INVERT, + POP_INTER, + POP_END); + break; + case UNICODE_PROP_Case_Ignorable: + ret = unicode_prop_ops(cr, + POP_GC, M(Mn) | M(Cf) | M(Lm) | M(Sk), + POP_PROP, UNICODE_PROP_Case_Ignorable1, + POP_XOR, + POP_END); + break; +#else + /* we use the existing tables */ + case UNICODE_PROP_ID_Continue: + ret = unicode_prop_ops(cr, + POP_PROP, UNICODE_PROP_ID_Start, + POP_PROP, UNICODE_PROP_ID_Continue1, + POP_XOR, + POP_END); + break; +#endif + default: + if (prop_idx >= countof(unicode_prop_table)) + return -2; + ret = unicode_prop1(cr, prop_idx); + break; + } + return ret; +} + +#endif /* CONFIG_ALL_UNICODE */ diff --git a/quickjs/libunicode.h b/quickjs/libunicode.h new file mode 100644 index 0000000..cfa600a --- /dev/null +++ b/quickjs/libunicode.h @@ -0,0 +1,124 @@ +/* + * Unicode utilities + * + * Copyright (c) 2017-2018 Fabrice Bellard + * + * 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. + */ +#ifndef LIBUNICODE_H +#define LIBUNICODE_H + +#include + +#define LRE_BOOL int /* for documentation purposes */ + +/* define it to include all the unicode tables (40KB larger) */ +#define CONFIG_ALL_UNICODE + +#define LRE_CC_RES_LEN_MAX 3 + +typedef enum { + UNICODE_NFC, + UNICODE_NFD, + UNICODE_NFKC, + UNICODE_NFKD, +} UnicodeNormalizationEnum; + +int lre_case_conv(uint32_t *res, uint32_t c, int conv_type); +LRE_BOOL lre_is_cased(uint32_t c); +LRE_BOOL lre_is_case_ignorable(uint32_t c); + +/* char ranges */ + +typedef struct { + int len; /* in points, always even */ + int size; + uint32_t *points; /* points sorted by increasing value */ + void *mem_opaque; + void *(*realloc_func)(void *opaque, void *ptr, size_t size); +} CharRange; + +typedef enum { + CR_OP_UNION, + CR_OP_INTER, + CR_OP_XOR, +} CharRangeOpEnum; + +void cr_init(CharRange *cr, void *mem_opaque, void *(*realloc_func)(void *opaque, void *ptr, size_t size)); +void cr_free(CharRange *cr); +int cr_realloc(CharRange *cr, int size); +int cr_copy(CharRange *cr, const CharRange *cr1); + +static inline int cr_add_point(CharRange *cr, uint32_t v) +{ + if (cr->len >= cr->size) { + if (cr_realloc(cr, cr->len + 1)) + return -1; + } + cr->points[cr->len++] = v; + return 0; +} + +static inline int cr_add_interval(CharRange *cr, uint32_t c1, uint32_t c2) +{ + if ((cr->len + 2) > cr->size) { + if (cr_realloc(cr, cr->len + 2)) + return -1; + } + cr->points[cr->len++] = c1; + cr->points[cr->len++] = c2; + return 0; +} + +int cr_union1(CharRange *cr, const uint32_t *b_pt, int b_len); + +static inline int cr_union_interval(CharRange *cr, uint32_t c1, uint32_t c2) +{ + uint32_t b_pt[2]; + b_pt[0] = c1; + b_pt[1] = c2 + 1; + return cr_union1(cr, b_pt, 2); +} + +int cr_op(CharRange *cr, const uint32_t *a_pt, int a_len, + const uint32_t *b_pt, int b_len, int op); + +int cr_invert(CharRange *cr); + +#ifdef CONFIG_ALL_UNICODE + +LRE_BOOL lre_is_id_start(uint32_t c); +LRE_BOOL lre_is_id_continue(uint32_t c); + +int unicode_normalize(uint32_t **pdst, const uint32_t *src, int src_len, + UnicodeNormalizationEnum n_type, + void *opaque, void *(*realloc_func)(void *opaque, void *ptr, size_t size)); + +/* Unicode character range functions */ + +int unicode_script(CharRange *cr, + const char *script_name, LRE_BOOL is_ext); +int unicode_general_category(CharRange *cr, const char *gc_name); +int unicode_prop(CharRange *cr, const char *prop_name); + +#endif /* CONFIG_ALL_UNICODE */ + +#undef LRE_BOOL + +#endif /* LIBUNICODE_H */ diff --git a/quickjs/list.h b/quickjs/list.h new file mode 100644 index 0000000..0a1bc5a --- /dev/null +++ b/quickjs/list.h @@ -0,0 +1,100 @@ +/* + * Linux klist like system + * + * Copyright (c) 2016-2017 Fabrice Bellard + * + * 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. + */ +#ifndef LIST_H +#define LIST_H + +#ifndef NULL +#include +#endif + +struct list_head { + struct list_head *prev; + struct list_head *next; +}; + +#define LIST_HEAD_INIT(el) { &(el), &(el) } + +/* return the pointer of type 'type *' containing 'el' as field 'member' */ +#define list_entry(el, type, member) \ + ((type *)((uint8_t *)(el) - offsetof(type, member))) + +static inline void init_list_head(struct list_head *head) +{ + head->prev = head; + head->next = head; +} + +/* insert 'el' between 'prev' and 'next' */ +static inline void __list_add(struct list_head *el, + struct list_head *prev, struct list_head *next) +{ + prev->next = el; + el->prev = prev; + el->next = next; + next->prev = el; +} + +/* add 'el' at the head of the list 'head' (= after element head) */ +static inline void list_add(struct list_head *el, struct list_head *head) +{ + __list_add(el, head, head->next); +} + +/* add 'el' at the end of the list 'head' (= before element head) */ +static inline void list_add_tail(struct list_head *el, struct list_head *head) +{ + __list_add(el, head->prev, head); +} + +static inline void list_del(struct list_head *el) +{ + struct list_head *prev, *next; + prev = el->prev; + next = el->next; + prev->next = next; + next->prev = prev; + el->prev = NULL; /* fail safe */ + el->next = NULL; /* fail safe */ +} + +static inline int list_empty(struct list_head *el) +{ + return el->next == el; +} + +#define list_for_each(el, head) \ + for(el = (head)->next; el != (head); el = el->next) + +#define list_for_each_safe(el, el1, head) \ + for(el = (head)->next, el1 = el->next; el != (head); \ + el = el1, el1 = el->next) + +#define list_for_each_prev(el, head) \ + for(el = (head)->prev; el != (head); el = el->prev) + +#define list_for_each_prev_safe(el, el1, head) \ + for(el = (head)->prev, el1 = el->prev; el != (head); \ + el = el1, el1 = el->prev) + +#endif /* LIST_H */ diff --git a/quickjs/qjs.c b/quickjs/qjs.c new file mode 100644 index 0000000..e4a4a0a --- /dev/null +++ b/quickjs/qjs.c @@ -0,0 +1,570 @@ + /* + * QuickJS stand alone interpreter + * + * Copyright (c) 2017-2021 Fabrice Bellard + * Copyright (c) 2017-2021 Charlie Gordon + * + * 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. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if defined(__APPLE__) +#include +#elif defined(__linux__) +#include +#endif + +#include "cutils.h" +#include "quickjs-libc.h" + +extern const uint8_t qjsc_repl[]; +extern const uint32_t qjsc_repl_size; +#ifdef CONFIG_BIGNUM +extern const uint8_t qjsc_qjscalc[]; +extern const uint32_t qjsc_qjscalc_size; +static int bignum_ext; +#endif + +static int eval_buf(JSContext *ctx, const void *buf, int buf_len, + const char *filename, int eval_flags) +{ + JSValue val; + int ret; + + if ((eval_flags & JS_EVAL_TYPE_MASK) == JS_EVAL_TYPE_MODULE) { + /* for the modules, we compile then run to be able to set + import.meta */ + val = JS_Eval(ctx, buf, buf_len, filename, + eval_flags | JS_EVAL_FLAG_COMPILE_ONLY); + if (!JS_IsException(val)) { + js_module_set_import_meta(ctx, val, TRUE, TRUE); + val = JS_EvalFunction(ctx, val); + } + } else { + val = JS_Eval(ctx, buf, buf_len, filename, eval_flags); + } + if (JS_IsException(val)) { + js_std_dump_error(ctx); + ret = -1; + } else { + ret = 0; + } + JS_FreeValue(ctx, val); + return ret; +} + +static int eval_file(JSContext *ctx, const char *filename, int module) +{ + uint8_t *buf; + int ret, eval_flags; + size_t buf_len; + + buf = js_load_file(ctx, &buf_len, filename); + if (!buf) { + perror(filename); + exit(1); + } + + if (module < 0) { + module = (has_suffix(filename, ".mjs") || + JS_DetectModule((const char *)buf, buf_len)); + } + if (module) + eval_flags = JS_EVAL_TYPE_MODULE; + else + eval_flags = JS_EVAL_TYPE_GLOBAL; + ret = eval_buf(ctx, buf, buf_len, filename, eval_flags); + js_free(ctx, buf); + return ret; +} + +/* also used to initialize the worker context */ +static JSContext *JS_NewCustomContext(JSRuntime *rt) +{ + JSContext *ctx; + ctx = JS_NewContext(rt); + if (!ctx) + return NULL; +#ifdef CONFIG_BIGNUM + if (bignum_ext) { + JS_AddIntrinsicBigFloat(ctx); + JS_AddIntrinsicBigDecimal(ctx); + JS_AddIntrinsicOperators(ctx); + JS_EnableBignumExt(ctx, TRUE); + } +#endif + /* system modules */ + js_init_module_std(ctx, "std"); + js_init_module_os(ctx, "os"); + return ctx; +} + +#if defined(__APPLE__) +#define MALLOC_OVERHEAD 0 +#else +#define MALLOC_OVERHEAD 8 +#endif + +struct trace_malloc_data { + uint8_t *base; +}; + +static inline unsigned long long js_trace_malloc_ptr_offset(uint8_t *ptr, + struct trace_malloc_data *dp) +{ + return ptr - dp->base; +} + +/* default memory allocation functions with memory limitation */ +static inline size_t js_trace_malloc_usable_size(void *ptr) +{ +#if defined(__APPLE__) + return malloc_size(ptr); +#elif defined(_WIN32) + return _msize(ptr); +#elif defined(EMSCRIPTEN) + return 0; +#elif defined(__linux__) + return malloc_usable_size(ptr); +#else + /* change this to `return 0;` if compilation fails */ + return malloc_usable_size(ptr); +#endif +} + +static void +#ifdef _WIN32 +/* mingw printf is used */ +__attribute__((format(gnu_printf, 2, 3))) +#else +__attribute__((format(printf, 2, 3))) +#endif + js_trace_malloc_printf(JSMallocState *s, const char *fmt, ...) +{ + va_list ap; + int c; + + va_start(ap, fmt); + while ((c = *fmt++) != '\0') { + if (c == '%') { + /* only handle %p and %zd */ + if (*fmt == 'p') { + uint8_t *ptr = va_arg(ap, void *); + if (ptr == NULL) { + printf("NULL"); + } else { + printf("H%+06lld.%zd", + js_trace_malloc_ptr_offset(ptr, s->opaque), + js_trace_malloc_usable_size(ptr)); + } + fmt++; + continue; + } + if (fmt[0] == 'z' && fmt[1] == 'd') { + size_t sz = va_arg(ap, size_t); + printf("%zd", sz); + fmt += 2; + continue; + } + } + putc(c, stdout); + } + va_end(ap); +} + +static void js_trace_malloc_init(struct trace_malloc_data *s) +{ + free(s->base = malloc(8)); +} + +static void *js_trace_malloc(JSMallocState *s, size_t size) +{ + void *ptr; + + /* Do not allocate zero bytes: behavior is platform dependent */ + assert(size != 0); + + if (unlikely(s->malloc_size + size > s->malloc_limit)) + return NULL; + ptr = malloc(size); + js_trace_malloc_printf(s, "A %zd -> %p\n", size, ptr); + if (ptr) { + s->malloc_count++; + s->malloc_size += js_trace_malloc_usable_size(ptr) + MALLOC_OVERHEAD; + } + return ptr; +} + +static void js_trace_free(JSMallocState *s, void *ptr) +{ + if (!ptr) + return; + + js_trace_malloc_printf(s, "F %p\n", ptr); + s->malloc_count--; + s->malloc_size -= js_trace_malloc_usable_size(ptr) + MALLOC_OVERHEAD; + free(ptr); +} + +static void *js_trace_realloc(JSMallocState *s, void *ptr, size_t size) +{ + size_t old_size; + + if (!ptr) { + if (size == 0) + return NULL; + return js_trace_malloc(s, size); + } + old_size = js_trace_malloc_usable_size(ptr); + if (size == 0) { + js_trace_malloc_printf(s, "R %zd %p\n", size, ptr); + s->malloc_count--; + s->malloc_size -= old_size + MALLOC_OVERHEAD; + free(ptr); + return NULL; + } + if (s->malloc_size + size - old_size > s->malloc_limit) + return NULL; + + js_trace_malloc_printf(s, "R %zd %p", size, ptr); + + ptr = realloc(ptr, size); + js_trace_malloc_printf(s, " -> %p\n", ptr); + if (ptr) { + s->malloc_size += js_trace_malloc_usable_size(ptr) - old_size; + } + return ptr; +} + +static const JSMallocFunctions trace_mf = { + js_trace_malloc, + js_trace_free, + js_trace_realloc, +#if defined(__APPLE__) + malloc_size, +#elif defined(_WIN32) + (size_t (*)(const void *))_msize, +#elif defined(EMSCRIPTEN) + NULL, +#elif defined(__linux__) + (size_t (*)(const void *))malloc_usable_size, +#else + /* change this to `NULL,` if compilation fails */ + malloc_usable_size, +#endif +}; + +#define PROG_NAME "qjs" + +void help(void) +{ + printf("QuickJS version " CONFIG_VERSION "\n" + "usage: " PROG_NAME " [options] [file [args]]\n" + "-h --help list options\n" + "-e --eval EXPR evaluate EXPR\n" + "-i --interactive go to interactive mode\n" + "-m --module load as ES6 module (default=autodetect)\n" + " --script load as ES6 script (default=autodetect)\n" + "-I --include file include an additional file\n" + " --std make 'std' and 'os' available to the loaded script\n" +#ifdef CONFIG_BIGNUM + " --bignum enable the bignum extensions (BigFloat, BigDecimal)\n" + " --qjscalc load the QJSCalc runtime (default if invoked as qjscalc)\n" +#endif + "-T --trace trace memory allocation\n" + "-d --dump dump the memory usage stats\n" + " --memory-limit n limit the memory usage to 'n' bytes\n" + " --stack-size n limit the stack size to 'n' bytes\n" + " --unhandled-rejection dump unhandled promise rejections\n" + "-q --quit just instantiate the interpreter and quit\n"); + exit(1); +} + +int main(int argc, char **argv) +{ + JSRuntime *rt; + JSContext *ctx; + struct trace_malloc_data trace_data = { NULL }; + int optind; + char *expr = NULL; + int interactive = 0; + int dump_memory = 0; + int trace_memory = 0; + int empty_run = 0; + int module = -1; + int load_std = 0; + int dump_unhandled_promise_rejection = 0; + size_t memory_limit = 0; + char *include_list[32]; + int i, include_count = 0; +#ifdef CONFIG_BIGNUM + int load_jscalc; +#endif + size_t stack_size = 0; + +#ifdef CONFIG_BIGNUM + /* load jscalc runtime if invoked as 'qjscalc' */ + { + const char *p, *exename; + exename = argv[0]; + p = strrchr(exename, '/'); + if (p) + exename = p + 1; + load_jscalc = !strcmp(exename, "qjscalc"); + } +#endif + + /* cannot use getopt because we want to pass the command line to + the script */ + optind = 1; + while (optind < argc && *argv[optind] == '-') { + char *arg = argv[optind] + 1; + const char *longopt = ""; + /* a single - is not an option, it also stops argument scanning */ + if (!*arg) + break; + optind++; + if (*arg == '-') { + longopt = arg + 1; + arg += strlen(arg); + /* -- stops argument scanning */ + if (!*longopt) + break; + } + for (; *arg || *longopt; longopt = "") { + char opt = *arg; + if (opt) + arg++; + if (opt == 'h' || opt == '?' || !strcmp(longopt, "help")) { + help(); + continue; + } + if (opt == 'e' || !strcmp(longopt, "eval")) { + if (*arg) { + expr = arg; + break; + } + if (optind < argc) { + expr = argv[optind++]; + break; + } + fprintf(stderr, "qjs: missing expression for -e\n"); + exit(2); + } + if (opt == 'I' || !strcmp(longopt, "include")) { + if (optind >= argc) { + fprintf(stderr, "expecting filename"); + exit(1); + } + if (include_count >= countof(include_list)) { + fprintf(stderr, "too many included files"); + exit(1); + } + include_list[include_count++] = argv[optind++]; + continue; + } + if (opt == 'i' || !strcmp(longopt, "interactive")) { + interactive++; + continue; + } + if (opt == 'm' || !strcmp(longopt, "module")) { + module = 1; + continue; + } + if (!strcmp(longopt, "script")) { + module = 0; + continue; + } + if (opt == 'd' || !strcmp(longopt, "dump")) { + dump_memory++; + continue; + } + if (opt == 'T' || !strcmp(longopt, "trace")) { + trace_memory++; + continue; + } + if (!strcmp(longopt, "std")) { + load_std = 1; + continue; + } + if (!strcmp(longopt, "unhandled-rejection")) { + dump_unhandled_promise_rejection = 1; + continue; + } +#ifdef CONFIG_BIGNUM + if (!strcmp(longopt, "bignum")) { + bignum_ext = 1; + continue; + } + if (!strcmp(longopt, "qjscalc")) { + load_jscalc = 1; + continue; + } +#endif + if (opt == 'q' || !strcmp(longopt, "quit")) { + empty_run++; + continue; + } + if (!strcmp(longopt, "memory-limit")) { + if (optind >= argc) { + fprintf(stderr, "expecting memory limit"); + exit(1); + } + memory_limit = (size_t)strtod(argv[optind++], NULL); + continue; + } + if (!strcmp(longopt, "stack-size")) { + if (optind >= argc) { + fprintf(stderr, "expecting stack size"); + exit(1); + } + stack_size = (size_t)strtod(argv[optind++], NULL); + continue; + } + if (opt) { + fprintf(stderr, "qjs: unknown option '-%c'\n", opt); + } else { + fprintf(stderr, "qjs: unknown option '--%s'\n", longopt); + } + help(); + } + } + + if (load_jscalc) + bignum_ext = 1; + + if (trace_memory) { + js_trace_malloc_init(&trace_data); + rt = JS_NewRuntime2(&trace_mf, &trace_data); + } else { + rt = JS_NewRuntime(); + } + if (!rt) { + fprintf(stderr, "qjs: cannot allocate JS runtime\n"); + exit(2); + } + if (memory_limit != 0) + JS_SetMemoryLimit(rt, memory_limit); + if (stack_size != 0) + JS_SetMaxStackSize(rt, stack_size); + js_std_set_worker_new_context_func(JS_NewCustomContext); + js_std_init_handlers(rt); + ctx = JS_NewCustomContext(rt); + if (!ctx) { + fprintf(stderr, "qjs: cannot allocate JS context\n"); + exit(2); + } + + /* loader for ES6 modules */ + JS_SetModuleLoaderFunc(rt, NULL, js_module_loader, NULL); + + if (dump_unhandled_promise_rejection) { + JS_SetHostPromiseRejectionTracker(rt, js_std_promise_rejection_tracker, + NULL); + } + + if (!empty_run) { +#ifdef CONFIG_BIGNUM + if (load_jscalc) { + js_std_eval_binary(ctx, qjsc_qjscalc, qjsc_qjscalc_size, 0); + } +#endif + js_std_add_helpers(ctx, argc - optind, argv + optind); + + /* make 'std' and 'os' visible to non module code */ + if (load_std) { + const char *str = "import * as std from 'std';\n" + "import * as os from 'os';\n" + "globalThis.std = std;\n" + "globalThis.os = os;\n"; + eval_buf(ctx, str, strlen(str), "", JS_EVAL_TYPE_MODULE); + } + + for(i = 0; i < include_count; i++) { + if (eval_file(ctx, include_list[i], module)) + goto fail; + } + + if (expr) { + if (eval_buf(ctx, expr, strlen(expr), "", 0)) + goto fail; + } else + if (optind >= argc) { + /* interactive mode */ + interactive = 1; + } else { + const char *filename; + filename = argv[optind]; + if (eval_file(ctx, filename, module)) + goto fail; + } + if (interactive) { + js_std_eval_binary(ctx, qjsc_repl, qjsc_repl_size, 0); + } + js_std_loop(ctx); + } + + if (dump_memory) { + JSMemoryUsage stats; + JS_ComputeMemoryUsage(rt, &stats); + JS_DumpMemoryUsage(stdout, &stats, rt); + } + js_std_free_handlers(rt); + JS_FreeContext(ctx); + JS_FreeRuntime(rt); + + if (empty_run && dump_memory) { + clock_t t[5]; + double best[5]; + int i, j; + for (i = 0; i < 100; i++) { + t[0] = clock(); + rt = JS_NewRuntime(); + t[1] = clock(); + ctx = JS_NewContext(rt); + t[2] = clock(); + JS_FreeContext(ctx); + t[3] = clock(); + JS_FreeRuntime(rt); + t[4] = clock(); + for (j = 4; j > 0; j--) { + double ms = 1000.0 * (t[j] - t[j - 1]) / CLOCKS_PER_SEC; + if (i == 0 || best[j] > ms) + best[j] = ms; + } + } + printf("\nInstantiation times (ms): %.3f = %.3f+%.3f+%.3f+%.3f\n", + best[1] + best[2] + best[3] + best[4], + best[1], best[2], best[3], best[4]); + } + return 0; + fail: + js_std_free_handlers(rt); + JS_FreeContext(ctx); + JS_FreeRuntime(rt); + return 1; +} diff --git a/quickjs/qjsc.c b/quickjs/qjsc.c new file mode 100644 index 0000000..b9f1e4c --- /dev/null +++ b/quickjs/qjsc.c @@ -0,0 +1,762 @@ +/* + * QuickJS command line compiler + * + * Copyright (c) 2018-2021 Fabrice Bellard + * + * 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. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif + +#include "cutils.h" +#include "quickjs-libc.h" + +typedef struct { + char *name; + char *short_name; + int flags; +} namelist_entry_t; + +typedef struct namelist_t { + namelist_entry_t *array; + int count; + int size; +} namelist_t; + +typedef struct { + const char *option_name; + const char *init_name; +} FeatureEntry; + +static namelist_t cname_list; +static namelist_t cmodule_list; +static namelist_t init_module_list; +static uint64_t feature_bitmap; +static FILE *outfile; +static BOOL byte_swap; +static BOOL dynamic_export; +static const char *c_ident_prefix = "qjsc_"; + +#define FE_ALL (-1) + +static const FeatureEntry feature_list[] = { + { "date", "Date" }, + { "eval", "Eval" }, + { "string-normalize", "StringNormalize" }, + { "regexp", "RegExp" }, + { "json", "JSON" }, + { "proxy", "Proxy" }, + { "map", "MapSet" }, + { "typedarray", "TypedArrays" }, + { "promise", "Promise" }, +#define FE_MODULE_LOADER 9 + { "module-loader", NULL }, +#ifdef CONFIG_BIGNUM + { "bigint", "BigInt" }, +#endif +}; + +void namelist_add(namelist_t *lp, const char *name, const char *short_name, + int flags) +{ + namelist_entry_t *e; + if (lp->count == lp->size) { + size_t newsize = lp->size + (lp->size >> 1) + 4; + namelist_entry_t *a = + realloc(lp->array, sizeof(lp->array[0]) * newsize); + /* XXX: check for realloc failure */ + lp->array = a; + lp->size = newsize; + } + e = &lp->array[lp->count++]; + e->name = strdup(name); + if (short_name) + e->short_name = strdup(short_name); + else + e->short_name = NULL; + e->flags = flags; +} + +void namelist_free(namelist_t *lp) +{ + while (lp->count > 0) { + namelist_entry_t *e = &lp->array[--lp->count]; + free(e->name); + free(e->short_name); + } + free(lp->array); + lp->array = NULL; + lp->size = 0; +} + +namelist_entry_t *namelist_find(namelist_t *lp, const char *name) +{ + int i; + for(i = 0; i < lp->count; i++) { + namelist_entry_t *e = &lp->array[i]; + if (!strcmp(e->name, name)) + return e; + } + return NULL; +} + +static void get_c_name(char *buf, size_t buf_size, const char *file) +{ + const char *p, *r; + size_t len, i; + int c; + char *q; + + p = strrchr(file, '/'); + if (!p) + p = file; + else + p++; + r = strrchr(p, '.'); + if (!r) + len = strlen(p); + else + len = r - p; + pstrcpy(buf, buf_size, c_ident_prefix); + q = buf + strlen(buf); + for(i = 0; i < len; i++) { + c = p[i]; + if (!((c >= '0' && c <= '9') || + (c >= 'A' && c <= 'Z') || + (c >= 'a' && c <= 'z'))) { + c = '_'; + } + if ((q - buf) < buf_size - 1) + *q++ = c; + } + *q = '\0'; +} + +static void dump_hex(FILE *f, const uint8_t *buf, size_t len) +{ + size_t i, col; + col = 0; + for(i = 0; i < len; i++) { + fprintf(f, " 0x%02x,", buf[i]); + if (++col == 8) { + fprintf(f, "\n"); + col = 0; + } + } + if (col != 0) + fprintf(f, "\n"); +} + +static void output_object_code(JSContext *ctx, + FILE *fo, JSValueConst obj, const char *c_name, + BOOL load_only) +{ + uint8_t *out_buf; + size_t out_buf_len; + int flags; + flags = JS_WRITE_OBJ_BYTECODE; + if (byte_swap) + flags |= JS_WRITE_OBJ_BSWAP; + out_buf = JS_WriteObject(ctx, &out_buf_len, obj, flags); + if (!out_buf) { + js_std_dump_error(ctx); + exit(1); + } + + namelist_add(&cname_list, c_name, NULL, load_only); + + fprintf(fo, "const uint32_t %s_size = %u;\n\n", + c_name, (unsigned int)out_buf_len); + fprintf(fo, "const uint8_t %s[%u] = {\n", + c_name, (unsigned int)out_buf_len); + dump_hex(fo, out_buf, out_buf_len); + fprintf(fo, "};\n\n"); + + js_free(ctx, out_buf); +} + +static int js_module_dummy_init(JSContext *ctx, JSModuleDef *m) +{ + /* should never be called when compiling JS code */ + abort(); +} + +static void find_unique_cname(char *cname, size_t cname_size) +{ + char cname1[1024]; + int suffix_num; + size_t len, max_len; + assert(cname_size >= 32); + /* find a C name not matching an existing module C name by + adding a numeric suffix */ + len = strlen(cname); + max_len = cname_size - 16; + if (len > max_len) + cname[max_len] = '\0'; + suffix_num = 1; + for(;;) { + snprintf(cname1, sizeof(cname1), "%s_%d", cname, suffix_num); + if (!namelist_find(&cname_list, cname1)) + break; + suffix_num++; + } + pstrcpy(cname, cname_size, cname1); +} + +JSModuleDef *jsc_module_loader(JSContext *ctx, + const char *module_name, void *opaque) +{ + JSModuleDef *m; + namelist_entry_t *e; + + /* check if it is a declared C or system module */ + e = namelist_find(&cmodule_list, module_name); + if (e) { + /* add in the static init module list */ + namelist_add(&init_module_list, e->name, e->short_name, 0); + /* create a dummy module */ + m = JS_NewCModule(ctx, module_name, js_module_dummy_init); + } else if (has_suffix(module_name, ".so")) { + fprintf(stderr, "Warning: binary module '%s' will be dynamically loaded\n", module_name); + /* create a dummy module */ + m = JS_NewCModule(ctx, module_name, js_module_dummy_init); + /* the resulting executable will export its symbols for the + dynamic library */ + dynamic_export = TRUE; + } else { + size_t buf_len; + uint8_t *buf; + JSValue func_val; + char cname[1024]; + + buf = js_load_file(ctx, &buf_len, module_name); + if (!buf) { + JS_ThrowReferenceError(ctx, "could not load module filename '%s'", + module_name); + return NULL; + } + + /* compile the module */ + func_val = JS_Eval(ctx, (char *)buf, buf_len, module_name, + JS_EVAL_TYPE_MODULE | JS_EVAL_FLAG_COMPILE_ONLY); + js_free(ctx, buf); + if (JS_IsException(func_val)) + return NULL; + get_c_name(cname, sizeof(cname), module_name); + if (namelist_find(&cname_list, cname)) { + find_unique_cname(cname, sizeof(cname)); + } + output_object_code(ctx, outfile, func_val, cname, TRUE); + + /* the module is already referenced, so we must free it */ + m = JS_VALUE_GET_PTR(func_val); + JS_FreeValue(ctx, func_val); + } + return m; +} + +static void compile_file(JSContext *ctx, FILE *fo, + const char *filename, + const char *c_name1, + int module) +{ + uint8_t *buf; + char c_name[1024]; + int eval_flags; + JSValue obj; + size_t buf_len; + + buf = js_load_file(ctx, &buf_len, filename); + if (!buf) { + fprintf(stderr, "Could not load '%s'\n", filename); + exit(1); + } + eval_flags = JS_EVAL_FLAG_COMPILE_ONLY; + if (module < 0) { + module = (has_suffix(filename, ".mjs") || + JS_DetectModule((const char *)buf, buf_len)); + } + if (module) + eval_flags |= JS_EVAL_TYPE_MODULE; + else + eval_flags |= JS_EVAL_TYPE_GLOBAL; + obj = JS_Eval(ctx, (const char *)buf, buf_len, filename, eval_flags); + if (JS_IsException(obj)) { + js_std_dump_error(ctx); + exit(1); + } + js_free(ctx, buf); + if (c_name1) { + pstrcpy(c_name, sizeof(c_name), c_name1); + } else { + get_c_name(c_name, sizeof(c_name), filename); + } + output_object_code(ctx, fo, obj, c_name, FALSE); + JS_FreeValue(ctx, obj); +} + +static const char main_c_template1[] = + "int main(int argc, char **argv)\n" + "{\n" + " JSRuntime *rt;\n" + " JSContext *ctx;\n" + " rt = JS_NewRuntime();\n" + " js_std_set_worker_new_context_func(JS_NewCustomContext);\n" + " js_std_init_handlers(rt);\n" + ; + +static const char main_c_template2[] = + " js_std_loop(ctx);\n" + " JS_FreeContext(ctx);\n" + " JS_FreeRuntime(rt);\n" + " return 0;\n" + "}\n"; + +#define PROG_NAME "qjsc" + +void help(void) +{ + printf("QuickJS Compiler version " CONFIG_VERSION "\n" + "usage: " PROG_NAME " [options] [files]\n" + "\n" + "options are:\n" + "-c only output bytecode in a C file\n" + "-e output main() and bytecode in a C file (default = executable output)\n" + "-o output set the output filename\n" + "-N cname set the C name of the generated data\n" + "-m compile as Javascript module (default=autodetect)\n" + "-D module_name compile a dynamically loaded module or worker\n" + "-M module_name[,cname] add initialization code for an external C module\n" + "-x byte swapped output\n" + "-p prefix set the prefix of the generated C names\n" + "-S n set the maximum stack size to 'n' bytes (default=%d)\n", + JS_DEFAULT_STACK_SIZE); +#ifdef CONFIG_LTO + { + int i; + printf("-flto use link time optimization\n"); + printf("-fbignum enable bignum extensions\n"); + printf("-fno-["); + for(i = 0; i < countof(feature_list); i++) { + if (i != 0) + printf("|"); + printf("%s", feature_list[i].option_name); + } + printf("]\n" + " disable selected language features (smaller code size)\n"); + } +#endif + exit(1); +} + +#if defined(CONFIG_CC) && !defined(_WIN32) + +int exec_cmd(char **argv) +{ + int pid, status, ret; + + pid = fork(); + if (pid == 0) { + execvp(argv[0], argv); + exit(1); + } + + for(;;) { + ret = waitpid(pid, &status, 0); + if (ret == pid && WIFEXITED(status)) + break; + } + return WEXITSTATUS(status); +} + +static int output_executable(const char *out_filename, const char *cfilename, + BOOL use_lto, BOOL verbose, const char *exename) +{ + const char *argv[64]; + const char **arg, *bn_suffix, *lto_suffix; + char libjsname[1024]; + char exe_dir[1024], inc_dir[1024], lib_dir[1024], buf[1024], *p; + int ret; + + /* get the directory of the executable */ + pstrcpy(exe_dir, sizeof(exe_dir), exename); + p = strrchr(exe_dir, '/'); + if (p) { + *p = '\0'; + } else { + pstrcpy(exe_dir, sizeof(exe_dir), "."); + } + + /* if 'quickjs.h' is present at the same path as the executable, we + use it as include and lib directory */ + snprintf(buf, sizeof(buf), "%s/quickjs.h", exe_dir); + if (access(buf, R_OK) == 0) { + pstrcpy(inc_dir, sizeof(inc_dir), exe_dir); + pstrcpy(lib_dir, sizeof(lib_dir), exe_dir); + } else { + snprintf(inc_dir, sizeof(inc_dir), "%s/include/quickjs", CONFIG_PREFIX); + snprintf(lib_dir, sizeof(lib_dir), "%s/lib/quickjs", CONFIG_PREFIX); + } + + lto_suffix = ""; + bn_suffix = ""; + + arg = argv; + *arg++ = CONFIG_CC; + *arg++ = "-O2"; +#ifdef CONFIG_LTO + if (use_lto) { + *arg++ = "-flto"; + lto_suffix = ".lto"; + } +#endif + /* XXX: use the executable path to find the includes files and + libraries */ + *arg++ = "-D"; + *arg++ = "_GNU_SOURCE"; + *arg++ = "-I"; + *arg++ = inc_dir; + *arg++ = "-o"; + *arg++ = out_filename; + if (dynamic_export) + *arg++ = "-rdynamic"; + *arg++ = cfilename; + snprintf(libjsname, sizeof(libjsname), "%s/libquickjs%s%s.a", + lib_dir, bn_suffix, lto_suffix); + *arg++ = libjsname; + *arg++ = "-lm"; + *arg++ = "-ldl"; + *arg++ = "-lpthread"; + *arg = NULL; + + if (verbose) { + for(arg = argv; *arg != NULL; arg++) + printf("%s ", *arg); + printf("\n"); + } + + ret = exec_cmd((char **)argv); + unlink(cfilename); + return ret; +} +#else +static int output_executable(const char *out_filename, const char *cfilename, + BOOL use_lto, BOOL verbose, const char *exename) +{ + fprintf(stderr, "Executable output is not supported for this target\n"); + exit(1); + return 0; +} +#endif + + +typedef enum { + OUTPUT_C, + OUTPUT_C_MAIN, + OUTPUT_EXECUTABLE, +} OutputTypeEnum; + +int main(int argc, char **argv) +{ + int c, i, verbose; + const char *out_filename, *cname; + char cfilename[1024]; + FILE *fo; + JSRuntime *rt; + JSContext *ctx; + BOOL use_lto; + int module; + OutputTypeEnum output_type; + size_t stack_size; +#ifdef CONFIG_BIGNUM + BOOL bignum_ext = FALSE; +#endif + namelist_t dynamic_module_list; + + out_filename = NULL; + output_type = OUTPUT_EXECUTABLE; + cname = NULL; + feature_bitmap = FE_ALL; + module = -1; + byte_swap = FALSE; + verbose = 0; + use_lto = FALSE; + stack_size = 0; + memset(&dynamic_module_list, 0, sizeof(dynamic_module_list)); + + /* add system modules */ + namelist_add(&cmodule_list, "std", "std", 0); + namelist_add(&cmodule_list, "os", "os", 0); + + for(;;) { + c = getopt(argc, argv, "ho:cN:f:mxevM:p:S:D:"); + if (c == -1) + break; + switch(c) { + case 'h': + help(); + case 'o': + out_filename = optarg; + break; + case 'c': + output_type = OUTPUT_C; + break; + case 'e': + output_type = OUTPUT_C_MAIN; + break; + case 'N': + cname = optarg; + break; + case 'f': + { + const char *p; + p = optarg; + if (!strcmp(optarg, "lto")) { + use_lto = TRUE; + } else if (strstart(p, "no-", &p)) { + use_lto = TRUE; + for(i = 0; i < countof(feature_list); i++) { + if (!strcmp(p, feature_list[i].option_name)) { + feature_bitmap &= ~((uint64_t)1 << i); + break; + } + } + if (i == countof(feature_list)) + goto bad_feature; + } else +#ifdef CONFIG_BIGNUM + if (!strcmp(optarg, "bignum")) { + bignum_ext = TRUE; + } else +#endif + { + bad_feature: + fprintf(stderr, "unsupported feature: %s\n", optarg); + exit(1); + } + } + break; + case 'm': + module = 1; + break; + case 'M': + { + char *p; + char path[1024]; + char cname[1024]; + pstrcpy(path, sizeof(path), optarg); + p = strchr(path, ','); + if (p) { + *p = '\0'; + pstrcpy(cname, sizeof(cname), p + 1); + } else { + get_c_name(cname, sizeof(cname), path); + } + namelist_add(&cmodule_list, path, cname, 0); + } + break; + case 'D': + namelist_add(&dynamic_module_list, optarg, NULL, 0); + break; + case 'x': + byte_swap = TRUE; + break; + case 'v': + verbose++; + break; + case 'p': + c_ident_prefix = optarg; + break; + case 'S': + stack_size = (size_t)strtod(optarg, NULL); + break; + default: + break; + } + } + + if (optind >= argc) + help(); + + if (!out_filename) { + if (output_type == OUTPUT_EXECUTABLE) { + out_filename = "a.out"; + } else { + out_filename = "out.c"; + } + } + + if (output_type == OUTPUT_EXECUTABLE) { +#if defined(_WIN32) || defined(__ANDROID__) + /* XXX: find a /tmp directory ? */ + snprintf(cfilename, sizeof(cfilename), "out%d.c", getpid()); +#else + snprintf(cfilename, sizeof(cfilename), "/tmp/out%d.c", getpid()); +#endif + } else { + pstrcpy(cfilename, sizeof(cfilename), out_filename); + } + + fo = fopen(cfilename, "w"); + if (!fo) { + perror(cfilename); + exit(1); + } + outfile = fo; + + rt = JS_NewRuntime(); + ctx = JS_NewContext(rt); +#ifdef CONFIG_BIGNUM + if (bignum_ext) { + JS_AddIntrinsicBigFloat(ctx); + JS_AddIntrinsicBigDecimal(ctx); + JS_AddIntrinsicOperators(ctx); + JS_EnableBignumExt(ctx, TRUE); + } +#endif + + /* loader for ES6 modules */ + JS_SetModuleLoaderFunc(rt, NULL, jsc_module_loader, NULL); + + fprintf(fo, "/* File generated automatically by the QuickJS compiler. */\n" + "\n" + ); + + if (output_type != OUTPUT_C) { + fprintf(fo, "#include \"quickjs-libc.h\"\n" + "\n" + ); + } else { + fprintf(fo, "#include \n" + "\n" + ); + } + + for(i = optind; i < argc; i++) { + const char *filename = argv[i]; + compile_file(ctx, fo, filename, cname, module); + cname = NULL; + } + + for(i = 0; i < dynamic_module_list.count; i++) { + if (!jsc_module_loader(ctx, dynamic_module_list.array[i].name, NULL)) { + fprintf(stderr, "Could not load dynamic module '%s'\n", + dynamic_module_list.array[i].name); + exit(1); + } + } + + if (output_type != OUTPUT_C) { + fprintf(fo, + "static JSContext *JS_NewCustomContext(JSRuntime *rt)\n" + "{\n" + " JSContext *ctx = JS_NewContextRaw(rt);\n" + " if (!ctx)\n" + " return NULL;\n"); + /* add the basic objects */ + fprintf(fo, " JS_AddIntrinsicBaseObjects(ctx);\n"); + for(i = 0; i < countof(feature_list); i++) { + if ((feature_bitmap & ((uint64_t)1 << i)) && + feature_list[i].init_name) { + fprintf(fo, " JS_AddIntrinsic%s(ctx);\n", + feature_list[i].init_name); + } + } +#ifdef CONFIG_BIGNUM + if (bignum_ext) { + fprintf(fo, + " JS_AddIntrinsicBigFloat(ctx);\n" + " JS_AddIntrinsicBigDecimal(ctx);\n" + " JS_AddIntrinsicOperators(ctx);\n" + " JS_EnableBignumExt(ctx, 1);\n"); + } +#endif + /* add the precompiled modules (XXX: could modify the module + loader instead) */ + for(i = 0; i < init_module_list.count; i++) { + namelist_entry_t *e = &init_module_list.array[i]; + /* initialize the static C modules */ + + fprintf(fo, + " {\n" + " extern JSModuleDef *js_init_module_%s(JSContext *ctx, const char *name);\n" + " js_init_module_%s(ctx, \"%s\");\n" + " }\n", + e->short_name, e->short_name, e->name); + } + for(i = 0; i < cname_list.count; i++) { + namelist_entry_t *e = &cname_list.array[i]; + if (e->flags) { + fprintf(fo, " js_std_eval_binary(ctx, %s, %s_size, 1);\n", + e->name, e->name); + } + } + fprintf(fo, + " return ctx;\n" + "}\n\n"); + + fputs(main_c_template1, fo); + + if (stack_size != 0) { + fprintf(fo, " JS_SetMaxStackSize(rt, %u);\n", + (unsigned int)stack_size); + } + + /* add the module loader if necessary */ + if (feature_bitmap & (1 << FE_MODULE_LOADER)) { + fprintf(fo, " JS_SetModuleLoaderFunc(rt, NULL, js_module_loader, NULL);\n"); + } + + fprintf(fo, + " ctx = JS_NewCustomContext(rt);\n" + " js_std_add_helpers(ctx, argc, argv);\n"); + + for(i = 0; i < cname_list.count; i++) { + namelist_entry_t *e = &cname_list.array[i]; + if (!e->flags) { + fprintf(fo, " js_std_eval_binary(ctx, %s, %s_size, 0);\n", + e->name, e->name); + } + } + fputs(main_c_template2, fo); + } + + JS_FreeContext(ctx); + JS_FreeRuntime(rt); + + fclose(fo); + + if (output_type == OUTPUT_EXECUTABLE) { + return output_executable(out_filename, cfilename, use_lto, verbose, + argv[0]); + } + namelist_free(&cname_list); + namelist_free(&cmodule_list); + namelist_free(&init_module_list); + return 0; +} diff --git a/quickjs/qjscalc.js b/quickjs/qjscalc.js new file mode 100644 index 0000000..b1ad1e8 --- /dev/null +++ b/quickjs/qjscalc.js @@ -0,0 +1,2657 @@ +/* + * QuickJS Javascript Calculator + * + * Copyright (c) 2017-2020 Fabrice Bellard + * + * 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. + */ +"use strict"; +"use math"; + +var Integer, Float, Fraction, Complex, Mod, Polynomial, PolyMod, RationalFunction, Series, Matrix; + +(function(global) { + global.Integer = global.BigInt; + global.Float = global.BigFloat; + global.algebraicMode = true; + + /* add non enumerable properties */ + function add_props(obj, props) { + var i, val, prop, tab, desc; + tab = Reflect.ownKeys(props); + for(i = 0; i < tab.length; i++) { + prop = tab[i]; + desc = Object.getOwnPropertyDescriptor(props, prop); + desc.enumerable = false; + if ("value" in desc) { + if (typeof desc.value !== "function") { + desc.writable = false; + desc.configurable = false; + } + } else { + /* getter/setter */ + desc.configurable = false; + } + Object.defineProperty(obj, prop, desc); + } + } + + /* same as proto[Symbol.operatorSet] = Operators.create(..op_list) + but allow shortcuts: left: [], right: [] or both + */ + function operators_set(proto, ...op_list) + { + var new_op_list, i, a, j, b, k, obj, tab; + var fields = [ "left", "right" ]; + new_op_list = []; + for(i = 0; i < op_list.length; i++) { + a = op_list[i]; + if (a.left || a.right) { + tab = [ a.left, a.right ]; + delete a.left; + delete a.right; + for(k = 0; k < 2; k++) { + obj = tab[k]; + if (obj) { + if (!Array.isArray(obj)) { + obj = [ obj ]; + } + for(j = 0; j < obj.length; j++) { + b = {}; + Object.assign(b, a); + b[fields[k]] = obj[j]; + new_op_list.push(b); + } + } + } + } else { + new_op_list.push(a); + } + } + proto[Symbol.operatorSet] = + Operators.create.call(null, ...new_op_list); + } + + /* Integer */ + + function generic_pow(a, b) { + var r, is_neg, i; + if (!Integer.isInteger(b)) { + return exp(log(a) * b); + } + if (Array.isArray(a) && !(a instanceof Polynomial || + a instanceof Series)) { + r = idn(Matrix.check_square(a)); + } else { + r = 1; + } + if (b == 0) + return r; + is_neg = false; + if (b < 0) { + is_neg = true; + b = -b; + } + r = a; + for(i = Integer.floorLog2(b) - 1; i >= 0; i--) { + r *= r; + if ((b >> i) & 1) + r *= a; + } + if (is_neg) { + if (typeof r.inverse != "function") + throw "negative powers are not supported for this type"; + r = r.inverse(); + } + return r; + } + + var small_primes = [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499 ]; + + function miller_rabin_test(n, t) { + var d, r, s, i, j, a; + d = n - 1; + s = 0; + while ((d & 1) == 0) { + d >>= 1; + s++; + } + if (small_primes.length < t) + t = small_primes.length; + loop: for(j = 0; j < t; j++) { + a = small_primes[j]; + r = Integer.pmod(a, d, n); + if (r == 1 || r == (n - 1)) + continue; + for(i = 1; i < s; i++) { + r = (r * r) % n; + if (r == 1) + return false; + if (r == (n - 1)) + continue loop; + } + return false; /* n is composite */ + } + return true; /* n is probably prime with probability (1-0.5^t) */ + } + + function fact_rec(a, b) { /* assumes a <= b */ + var i, r; + if ((b - a) <= 5) { + r = a; + for(i = a + 1; i <= b; i++) + r *= i; + return r; + } else { + /* to avoid a quadratic running time it is better to + multiply numbers of similar size */ + i = (a + b) >> 1; + return fact_rec(a, i) * fact_rec(i + 1, b); + } + } + + /* math mode specific quirk to overload the integer division and power */ + Operators.updateBigIntOperators( + { + "/"(a, b) { + if (algebraicMode) { + return Fraction.toFraction(a, b); + } else { + return Float(a) / Float(b); + } + }, + "**"(a, b) { + if (algebraicMode) { + return generic_pow(a, b); + } else { + return Float(a) ** Float(b); + } + } + }); + + add_props(Integer, { + isInteger(a) { + /* integers are represented either as bigint or as number */ + return typeof a === "bigint" || + (typeof a === "number" && Number.isSafeInteger(a)); + }, + gcd(a, b) { + var r; + while (b != 0) { + r = a % b; + a = b; + b = r; + } + return a; + }, + fact(n) { + return n <= 0 ? 1 : fact_rec(1, n); + }, + /* binomial coefficient */ + comb(n, k) { + if (k < 0 || k > n) + return 0; + if (k > n - k) + k = n - k; + if (k == 0) + return 1; + return Integer.tdiv(fact_rec(n - k + 1, n), fact_rec(1, k)); + }, + /* inverse of x modulo y */ + invmod(x, y) { + var q, u, v, a, c, t; + u = x; + v = y; + c = 1; + a = 0; + while (u != 0) { + t = Integer.fdivrem(v, u); + q = t[0]; + v = u; + u = t[1]; + t = c; + c = a - q * c; + a = t; + } + /* v = gcd(x, y) */ + if (v != 1) + throw RangeError("not invertible"); + return a % y; + }, + /* return a ^ b modulo m */ + pmod(a, b, m) { + var r; + if (b == 0) + return 1; + if (b < 0) { + a = Integer.invmod(a, m); + b = -b; + } + r = 1; + for(;;) { + if (b & 1) { + r = (r * a) % m; + } + b >>= 1; + if (b == 0) + break; + a = (a * a) % m; + } + return r; + }, + + /* return true if n is prime (or probably prime with + probability 1-0.5^t) */ + isPrime(n, t) { + var i, d, n1; + if (!Integer.isInteger(n)) + throw TypeError("invalid type"); + if (n <= 1) + return false; + n1 = small_primes.length; + /* XXX: need Integer.sqrt() */ + for(i = 0; i < n1; i++) { + d = small_primes[i]; + if (d == n) + return true; + if (d > n) + return false; + if ((n % d) == 0) + return false; + } + if (n < d * d) + return true; + if (typeof t == "undefined") + t = 64; + return miller_rabin_test(n, t); + }, + nextPrime(n) { + if (!Integer.isInteger(n)) + throw TypeError("invalid type"); + if (n < 1) + n = 1; + for(;;) { + n++; + if (Integer.isPrime(n)) + return n; + } + }, + factor(n) { + var r, d; + if (!Integer.isInteger(n)) + throw TypeError("invalid type"); + r = []; + if (abs(n) <= 1) { + r.push(n); + return r; + } + if (n < 0) { + r.push(-1); + n = -n; + } + + while ((n % 2) == 0) { + n >>= 1; + r.push(2); + } + + d = 3; + while (n != 1) { + if (Integer.isPrime(n)) { + r.push(n); + break; + } + /* we are sure there is at least one divisor, so one test */ + for(;;) { + if ((n % d) == 0) + break; + d += 2; + } + for(;;) { + r.push(d); + n = Integer.tdiv(n, d); + if ((n % d) != 0) + break; + } + } + return r; + }, + }); + + add_props(Integer.prototype, { + inverse() { + return 1 / this; + }, + norm2() { + return this * this; + }, + abs() { + var v = this; + if (v < 0) + v = -v; + return v; + }, + conj() { + return this; + }, + arg() { + if (this >= 0) + return 0; + else + return Float.PI; + }, + exp() { + if (this == 0) + return 1; + else + return Float.exp(this); + }, + log() { + if (this == 1) + return 0; + else + return Float(this).log(); + }, + }); + + /* Fraction */ + + Fraction = function Fraction(a, b) + { + var d, r, obj; + + if (new.target) + throw TypeError("not a constructor"); + if (a instanceof Fraction) + return a; + if (!Integer.isInteger(a)) + throw TypeError("integer expected"); + if (typeof b === "undefined") { + b = 1; + } else { + if (!Integer.isInteger(b)) + throw TypeError("integer expected"); + if (b == 0) + throw RangeError("division by zero"); + d = Integer.gcd(a, b); + if (d != 1) { + a = Integer.tdiv(a, d); + b = Integer.tdiv(b, d); + } + + /* the fractions are normalized with den > 0 */ + if (b < 0) { + a = -a; + b = -b; + } + } + obj = Object.create(Fraction.prototype); + obj.num = a; + obj.den = b; + return obj; + } + + function fraction_add(a, b) { + a = Fraction(a); + b = Fraction(b); + return Fraction.toFraction(a.num * b.den + a.den * b.num, a.den * b.den); + } + function fraction_sub(a, b) { + a = Fraction(a); + b = Fraction(b); + return Fraction.toFraction(a.num * b.den - a.den * b.num, a.den * b.den); + } + function fraction_mul(a, b) { + a = Fraction(a); + b = Fraction(b); + return Fraction.toFraction(a.num * b.num, a.den * b.den); + } + function fraction_div(a, b) { + a = Fraction(a); + b = Fraction(b); + return Fraction.toFraction(a.num * b.den, a.den * b.num); + } + function fraction_mod(a, b) { + var a1 = Fraction(a); + var b1 = Fraction(b); + return a - Integer.ediv(a1.num * b1.den, a1.den * b1.num) * b; + } + function fraction_eq(a, b) { + a = Fraction(a); + b = Fraction(b); + /* we assume the fractions are normalized */ + return (a.num == b.num && a.den == b.den); + } + function fraction_lt(a, b) { + a = Fraction(a); + b = Fraction(b); + return (a.num * b.den < b.num * a.den); + } + + /* operators are needed for fractions */ + function float_add(a, b) { + return Float(a) + Float(b); + } + function float_sub(a, b) { + return Float(a) - Float(b); + } + function float_mul(a, b) { + return Float(a) * Float(b); + } + function float_div(a, b) { + return Float(a) / Float(b); + } + function float_mod(a, b) { + return Float(a) % Float(b); + } + function float_pow(a, b) { + return Float(a) ** Float(b); + } + function float_eq(a, b) { + /* XXX: may be better to use infinite precision for the comparison */ + return Float(a) === Float(b); + } + function float_lt(a, b) { + a = Float(a); + b = Float(b); + /* XXX: may be better to use infinite precision for the comparison */ + if (Float.isNaN(a) || Float.isNaN(b)) + return undefined; + else + return a < b; + } + + operators_set(Fraction.prototype, + { + "+": fraction_add, + "-": fraction_sub, + "*": fraction_mul, + "/": fraction_div, + "%": fraction_mod, + "**": generic_pow, + "==": fraction_eq, + "<": fraction_lt, + "pos"(a) { + return a; + }, + "neg"(a) { + return Fraction(-a.num, a.den); + }, + }, + { + left: [Number, BigInt], + right: [Number, BigInt], + "+": fraction_add, + "-": fraction_sub, + "*": fraction_mul, + "/": fraction_div, + "%": fraction_mod, + "**": generic_pow, + "==": fraction_eq, + "<": fraction_lt, + }, + { + left: Float, + right: Float, + "+": float_add, + "-": float_sub, + "*": float_mul, + "/": float_div, + "%": float_mod, + "**": float_pow, + "==": float_eq, + "<": float_lt, + }); + + add_props(Fraction, { + /* (internal use) simplify 'a' to an integer when possible */ + toFraction(a, b) { + var r = Fraction(a, b); + if (algebraicMode && r.den == 1) + return r.num; + else + return r; + }, + }); + + add_props(Fraction.prototype, { + [Symbol.toPrimitive](hint) { + if (hint === "string") { + return this.toString(); + } else { + return Float(this.num) / this.den; + } + }, + inverse() { + return Fraction(this.den, this.num); + }, + toString() { + return this.num + "/" + this.den; + }, + norm2() { + return this * this; + }, + abs() { + if (this.num < 0) + return -this; + else + return this; + }, + conj() { + return this; + }, + arg() { + if (this.num >= 0) + return 0; + else + return Float.PI; + }, + exp() { + return Float.exp(Float(this)); + }, + log() { + return Float(this).log(); + }, + }); + + /* Number (Float64) */ + + add_props(Number.prototype, { + inverse() { + return 1 / this; + }, + norm2() { + return this * this; + }, + abs() { + return Math.abs(this); + }, + conj() { + return this; + }, + arg() { + if (this >= 0) + return 0; + else + return Float.PI; + }, + exp() { + return Float.exp(this); + }, + log() { + if (this < 0) { + return Complex(this).log(); + } else { + return Float.log(this); + } + }, + }); + + /* Float */ + + var const_tab = []; + + /* we cache the constants for small precisions */ + function get_const(n) { + var t, c, p; + t = const_tab[n]; + p = BigFloatEnv.prec; + if (t && t.prec == p) { + return t.val; + } else { + switch(n) { + case 0: c = Float.exp(1); break; + case 1: c = Float.log(10); break; +// case 2: c = Float.log(2); break; + case 3: c = 1/Float.log(2); break; + case 4: c = 1/Float.log(10); break; +// case 5: c = Float.atan(1) * 4; break; + case 6: c = Float.sqrt(0.5); break; + case 7: c = Float.sqrt(2); break; + } + if (p <= 1024) { + const_tab[n] = { prec: p, val: c }; + } + return c; + } + } + + add_props(Float, { + isFloat(a) { + return typeof a === "number" || typeof a === "bigfloat"; + }, + bestappr(u, b) { + var num1, num0, den1, den0, u, num, den, n; + + if (typeof b === "undefined") + throw TypeError("second argument expected"); + num1 = 1; + num0 = 0; + den1 = 0; + den0 = 1; + for(;;) { + n = Integer(Float.floor(u)); + num = n * num1 + num0; + den = n * den1 + den0; + if (den > b) + break; + u = 1.0 / (u - n); + num0 = num1; + num1 = num; + den0 = den1; + den1 = den; + } + return Fraction(num1, den1); + }, + /* similar constants as Math.x */ + get E() { return get_const(0); }, + get LN10() { return get_const(1); }, +// get LN2() { return get_const(2); }, + get LOG2E() { return get_const(3); }, + get LOG10E() { return get_const(4); }, +// get PI() { return get_const(5); }, + get SQRT1_2() { return get_const(6); }, + get SQRT2() { return get_const(7); }, + }); + + add_props(Float.prototype, { + inverse() { + return 1.0 / this; + }, + norm2() { + return this * this; + }, + abs() { + return Float.abs(this); + }, + conj() { + return this; + }, + arg() { + if (this >= 0) + return 0; + else + return Float.PI; + }, + exp() { + return Float.exp(this); + }, + log() { + if (this < 0) { + return Complex(this).log(); + } else { + return Float.log(this); + } + }, + }); + + /* Complex */ + + Complex = function Complex(re, im) + { + var obj; + if (new.target) + throw TypeError("not a constructor"); + if (re instanceof Complex) + return re; + if (typeof im === "undefined") { + im = 0; + } + obj = Object.create(Complex.prototype); + obj.re = re; + obj.im = im; + return obj; + } + + + function complex_add(a, b) { + a = Complex(a); + b = Complex(b); + return Complex.toComplex(a.re + b.re, a.im + b.im); + } + function complex_sub(a, b) { + a = Complex(a); + b = Complex(b); + return Complex.toComplex(a.re - b.re, a.im - b.im); + } + function complex_mul(a, b) { + a = Complex(a); + b = Complex(b); + return Complex.toComplex(a.re * b.re - a.im * b.im, + a.re * b.im + a.im * b.re); + } + function complex_div(a, b) { + a = Complex(a); + b = Complex(b); + return a * b.inverse(); + } + function complex_eq(a, b) { + a = Complex(a); + b = Complex(b); + return a.re == b.re && a.im == b.im; + } + + operators_set(Complex.prototype, + { + "+": complex_add, + "-": complex_sub, + "*": complex_mul, + "/": complex_div, + "**": generic_pow, + "==": complex_eq, + "pos"(a) { + return a; + }, + "neg"(a) { + return Complex(-a.re, -a.im); + } + }, + { + left: [Number, BigInt, Float, Fraction], + right: [Number, BigInt, Float, Fraction], + "+": complex_add, + "-": complex_sub, + "*": complex_mul, + "/": complex_div, + "**": generic_pow, + "==": complex_eq, + }); + + add_props(Complex, { + /* simplify to real number when possible */ + toComplex(re, im) { + if (algebraicMode && im == 0) + return re; + else + return Complex(re, im); + }, + }); + + add_props(Complex.prototype, { + inverse() { + var c = this.norm2(); + return Complex(this.re / c, -this.im / c); + }, + toString() { + var v, s = "", a = this; + if (a.re != 0) + s += a.re.toString(); + if (a.im == 1) { + if (s != "") + s += "+"; + s += "I"; + } else if (a.im == -1) { + s += "-I"; + } else { + v = a.im.toString(); + if (v[0] != "-" && s != "") + s += "+"; + s += v + "*I"; + } + return s; + }, + norm2() { + return this.re * this.re + this.im * this.im; + }, + abs() { + return Float.sqrt(norm2(this)); + }, + conj() { + return Complex(this.re, -this.im); + }, + arg() { + return Float.atan2(this.im, this.re); + }, + exp() { + var arg = this.im, r = this.re.exp(); + return Complex(r * cos(arg), r * sin(arg)); + }, + log() { + return Complex(abs(this).log(), atan2(this.im, this.re)); + }, + }); + + /* Mod */ + + Mod = function Mod(a, m) { + var obj, t; + if (new.target) + throw TypeError("not a constructor"); + obj = Object.create(Mod.prototype); + if (Integer.isInteger(m)) { + if (m <= 0) + throw RangeError("the modulo cannot be <= 0"); + if (Integer.isInteger(a)) { + a %= m; + } else if (a instanceof Fraction) { + return Mod(a.num, m) / a.den; + } else { + throw TypeError("invalid types"); + } + } else { + throw TypeError("invalid types"); + } + obj.res = a; + obj.mod = m; + return obj; + }; + + function mod_add(a, b) { + if (!(a instanceof Mod)) { + return Mod(a + b.res, b.mod); + } else if (!(b instanceof Mod)) { + return Mod(a.res + b, a.mod); + } else { + if (a.mod != b.mod) + throw TypeError("different modulo for binary operator"); + return Mod(a.res + b.res, a.mod); + } + } + function mod_sub(a, b) { + if (!(a instanceof Mod)) { + return Mod(a - b.res, b.mod); + } else if (!(b instanceof Mod)) { + return Mod(a.res - b, a.mod); + } else { + if (a.mod != b.mod) + throw TypeError("different modulo for binary operator"); + return Mod(a.res - b.res, a.mod); + } + } + function mod_mul(a, b) { + if (!(a instanceof Mod)) { + return Mod(a * b.res, b.mod); + } else if (!(b instanceof Mod)) { + return Mod(a.res * b, a.mod); + } else { + if (a.mod != b.mod) + throw TypeError("different modulo for binary operator"); + return Mod(a.res * b.res, a.mod); + } + } + function mod_div(a, b) { + if (!(b instanceof Mod)) + b = Mod(b, a.mod); + return mod_mul(a, b.inverse()); + } + function mod_eq(a, b) { + return (a.mod == b.mod && a.res == b.res); + } + + operators_set(Mod.prototype, + { + "+": mod_add, + "-": mod_sub, + "*": mod_mul, + "/": mod_div, + "**": generic_pow, + "==": mod_eq, + "pos"(a) { + return a; + }, + "neg"(a) { + return Mod(-a.res, a.mod); + } + }, + { + left: [Number, BigInt, Float, Fraction], + right: [Number, BigInt, Float, Fraction], + "+": mod_add, + "-": mod_sub, + "*": mod_mul, + "/": mod_div, + "**": generic_pow, + }); + + add_props(Mod.prototype, { + inverse() { + var a = this, m = a.mod; + if (Integer.isInteger(m)) { + return Mod(Integer.invmod(a.res, m), m); + } else { + throw TypeError("unsupported type"); + } + }, + toString() { + return "Mod(" + this.res + "," + this.mod + ")"; + }, + }); + + /* Polynomial */ + + function polynomial_is_scalar(a) + { + if (typeof a === "number" || + typeof a === "bigint" || + typeof a === "bigfloat") + return true; + if (a instanceof Fraction || + a instanceof Complex || + a instanceof Mod) + return true; + return false; + } + + Polynomial = function Polynomial(a) + { + if (new.target) + throw TypeError("not a constructor"); + if (a instanceof Polynomial) { + return a; + } else if (Array.isArray(a)) { + if (a.length == 0) + a = [ 0 ]; + Object.setPrototypeOf(a, Polynomial.prototype); + return a.trim(); + } else if (polynomial_is_scalar(a)) { + a = [a]; + Object.setPrototypeOf(a, Polynomial.prototype); + return a; + } else { + throw TypeError("invalid type"); + } + } + + function number_need_paren(c) + { + return !(Integer.isInteger(c) || + Float.isFloat(c) || + c instanceof Fraction || + (c instanceof Complex && c.re == 0)); + } + + /* string for c*X^i */ + function monomial_toString(c, i) + { + var str1; + if (i == 0) { + str1 = c.toString(); + } else { + if (c == 1) { + str1 = ""; + } else if (c == -1) { + str1 = "-"; + } else { + if (number_need_paren(c)) { + str1 = "(" + c + ")"; + } else { + str1 = String(c); + } + str1 += "*"; + } + str1 += "X"; + if (i != 1) { + str1 += "^" + i; + } + } + return str1; + } + + /* find one complex root of 'p' starting from z at precision eps using + at most max_it iterations. Return null if could not find root. */ + function poly_root_laguerre1(p, z, max_it) + { + var p1, p2, i, z0, z1, z2, d, t0, t1, d1, d2, e, el, zl; + + d = p.deg(); + if (d == 1) { + /* monomial case */ + return -p[0] / p[1]; + } + /* trivial zero */ + if (p[0] == 0) + return 0.0; + + p1 = p.deriv(); + p2 = p1.deriv(); + el = 0.0; + zl = 0.0; + for(i = 0; i < max_it; i++) { + z0 = p.apply(z); + if (z0 == 0) + return z; /* simple exit case */ + + /* Ward stopping criteria */ + e = abs(z - zl); +// print("e", i, e); + if (i >= 2 && e >= el) { + if (abs(zl) < 1e-4) { + if (e < 1e-7) + return zl; + } else { + if (e < abs(zl) * 1e-3) + return zl; + } + } + el = e; + zl = z; + + z1 = p1.apply(z); + z2 = p2.apply(z); + t0 = (d - 1) * z1; + t0 = t0 * t0; + t1 = d * (d - 1) * z0 * z2; + t0 = sqrt(t0 - t1); + d1 = z1 + t0; + d2 = z1 - t0; + if (norm2(d2) > norm2(d1)) + d1 = d2; + if (d1 == 0) + return null; + z = z - d * z0 / d1; + } + return null; + } + + function poly_roots(p) + { + var d, i, roots, j, z, eps; + var start_points = [ 0.1, -1.4, 1.7 ]; + + if (!(p instanceof Polynomial)) + throw TypeError("polynomial expected"); + d = p.deg(); + if (d <= 0) + return []; + eps = 2.0 ^ (-BigFloatEnv.prec); + roots = []; + for(i = 0; i < d; i++) { + /* XXX: should select another start point if error */ + for(j = 0; j < 3; j++) { + z = poly_root_laguerre1(p, start_points[j], 100); + if (z !== null) + break; + } + if (j == 3) + throw RangeError("error in root finding algorithm"); + roots[i] = z; + p = Polynomial.divrem(p, X - z)[0]; + } + return roots; + } + + add_props(Polynomial.prototype, { + trim() { + var a = this, i; + i = a.length; + while (i > 1 && a[i - 1] == 0) + i--; + a.length = i; + return a; + }, + conj() { + var r, i, n, a; + a = this; + n = a.length; + r = []; + for(i = 0; i < n; i++) + r[i] = a[i].conj(); + return Polynomial(r); + }, + inverse() { + return RationalFunction(Polynomial([1]), this); + }, + toString() { + var i, str, str1, c, a = this; + if (a.length == 1) { + return a[0].toString(); + } + str=""; + for(i = a.length - 1; i >= 0; i--) { + c = a[i]; + if (c == 0 || + (c instanceof Mod) && c.res == 0) + continue; + str1 = monomial_toString(c, i); + if (str1[0] != "-") { + if (str != "") + str += "+"; + } + str += str1; + } + return str; + }, + deg() { + if (this.length == 1 && this[0] == 0) + return -Infinity; + else + return this.length - 1; + }, + apply(b) { + var i, n, r, a = this; + n = a.length - 1; + r = a[n]; + while (n > 0) { + n--; + r = r * b + a[n]; + } + return r; + }, + deriv() { + var a = this, n, r, i; + n = a.length; + if (n == 1) { + return Polynomial(0); + } else { + r = []; + for(i = 1; i < n; i++) { + r[i - 1] = i * a[i]; + } + return Polynomial(r); + } + }, + integ() { + var a = this, n, r, i; + n = a.length; + r = [0]; + for(i = 0; i < n; i++) { + r[i + 1] = a[i] / (i + 1); + } + return Polynomial(r); + }, + norm2() { + var a = this, n, r, i; + n = a.length; + r = 0; + for(i = 0; i < n; i++) { + r += a[i].norm2(); + } + return r; + }, + }); + + + function polynomial_add(a, b) { + var tmp, r, i, n1, n2; + a = Polynomial(a); + b = Polynomial(b); + if (a.length < b.length) { + tmp = a; + a = b; + b = tmp; + } + n1 = b.length; + n2 = a.length; + r = []; + for(i = 0; i < n1; i++) + r[i] = a[i] + b[i]; + for(i = n1; i < n2; i++) + r[i] = a[i]; + return Polynomial(r); + } + function polynomial_sub(a, b) { + return polynomial_add(a, -b); + } + function polynomial_mul(a, b) { + var i, j, n1, n2, n, r; + a = Polynomial(a); + b = Polynomial(b); + n1 = a.length; + n2 = b.length; + n = n1 + n2 - 1; + r = []; + for(i = 0; i < n; i++) + r[i] = 0; + for(i = 0; i < n1; i++) { + for(j = 0; j < n2; j++) { + r[i + j] += a[i] * b[j]; + } + } + return Polynomial(r); + } + function polynomial_div_scalar(a, b) { + return a * (1 / b); + } + function polynomial_div(a, b) + { + return RationalFunction(Polynomial(a), + Polynomial(b)); + } + function polynomial_mod(a, b) { + return Polynomial.divrem(a, b)[1]; + } + function polynomial_eq(a, b) { + var n, i; + n = a.length; + if (n != b.length) + return false; + for(i = 0; i < n; i++) { + if (a[i] != b[i]) + return false; + } + return true; + } + + operators_set(Polynomial.prototype, + { + "+": polynomial_add, + "-": polynomial_sub, + "*": polynomial_mul, + "/": polynomial_div, + "**": generic_pow, + "==": polynomial_eq, + "pos"(a) { + return a; + }, + "neg"(a) { + var r, i, n, a; + n = a.length; + r = []; + for(i = 0; i < n; i++) + r[i] = -a[i]; + return Polynomial(r); + }, + }, + { + left: [Number, BigInt, Float, Fraction, Complex, Mod], + "+": polynomial_add, + "-": polynomial_sub, + "*": polynomial_mul, + "/": polynomial_div, + "**": generic_pow, /* XXX: only for integer */ + }, + { + right: [Number, BigInt, Float, Fraction, Complex, Mod], + "+": polynomial_add, + "-": polynomial_sub, + "*": polynomial_mul, + "/": polynomial_div_scalar, + "**": generic_pow, /* XXX: only for integer */ + }); + + add_props(Polynomial, { + divrem(a, b) { + var n1, n2, i, j, q, r, n, c; + if (b.deg() < 0) + throw RangeError("division by zero"); + n1 = a.length; + n2 = b.length; + if (n1 < n2) + return [Polynomial([0]), a]; + r = Array.prototype.dup.call(a); + q = []; + n2--; + n = n1 - n2; + for(i = 0; i < n; i++) + q[i] = 0; + for(i = n - 1; i >= 0; i--) { + c = r[i + n2]; + if (c != 0) { + c = c / b[n2]; + r[i + n2] = 0; + for(j = 0; j < n2; j++) { + r[i + j] -= b[j] * c; + } + q[i] = c; + } + } + return [Polynomial(q), Polynomial(r)]; + }, + gcd(a, b) { + var t; + while (b.deg() >= 0) { + t = Polynomial.divrem(a, b); + a = b; + b = t[1]; + } + /* convert to monic form */ + return a / a[a.length - 1]; + }, + invmod(x, y) { + var q, u, v, a, c, t; + u = x; + v = y; + c = Polynomial([1]); + a = Polynomial([0]); + while (u.deg() >= 0) { + t = Polynomial.divrem(v, u); + q = t[0]; + v = u; + u = t[1]; + t = c; + c = a - q * c; + a = t; + } + /* v = gcd(x, y) */ + if (v.deg() > 0) + throw RangeError("not invertible"); + return Polynomial.divrem(a, y)[1]; + }, + roots(p) { + return poly_roots(p); + } + }); + + /* Polynomial Modulo Q */ + + PolyMod = function PolyMod(a, m) { + var obj, t; + if (new.target) + throw TypeError("not a constructor"); + obj = Object.create(PolyMod.prototype); + if (m instanceof Polynomial) { + if (m.deg() <= 0) + throw RangeError("the modulo cannot have a degree <= 0"); + if (a instanceof RationalFunction) { + return PolyMod(a.num, m) / a.den; + } else { + a = Polynomial(a); + t = Polynomial.divrem(a, m); + a = t[1]; + } + } else { + throw TypeError("invalid types"); + } + obj.res = a; + obj.mod = m; + return obj; + }; + + function polymod_add(a, b) { + if (!(a instanceof PolyMod)) { + return PolyMod(a + b.res, b.mod); + } else if (!(b instanceof PolyMod)) { + return PolyMod(a.res + b, a.mod); + } else { + if (a.mod != b.mod) + throw TypeError("different modulo for binary operator"); + return PolyMod(a.res + b.res, a.mod); + } + } + function polymod_sub(a, b) { + return polymod_add(a, -b); + } + function polymod_mul(a, b) { + if (!(a instanceof PolyMod)) { + return PolyMod(a * b.res, b.mod); + } else if (!(b instanceof PolyMod)) { + return PolyMod(a.res * b, a.mod); + } else { + if (a.mod != b.mod) + throw TypeError("different modulo for binary operator"); + return PolyMod(a.res * b.res, a.mod); + } + } + function polymod_div(a, b) { + if (!(b instanceof PolyMod)) + b = PolyMod(b, a.mod); + return polymod_mul(a, b.inverse()); + } + function polymod_eq(a, b) { + return (a.mod == b.mod && a.res == b.res); + } + + operators_set(PolyMod.prototype, + { + "+": polymod_add, + "-": polymod_sub, + "*": polymod_mul, + "/": polymod_div, + "**": generic_pow, + "==": polymod_eq, + "pos"(a) { + return a; + }, + "neg"(a) { + return PolyMod(-a.res, a.mod); + }, + }, + { + left: [Number, BigInt, Float, Fraction, Complex, Mod, Polynomial], + right: [Number, BigInt, Float, Fraction, Complex, Mod, Polynomial], + "+": polymod_add, + "-": polymod_sub, + "*": polymod_mul, + "/": polymod_div, + "**": generic_pow, /* XXX: only for integer */ + }); + + add_props(PolyMod.prototype, { + inverse() { + var a = this, m = a.mod; + if (m instanceof Polynomial) { + return PolyMod(Polynomial.invmod(a.res, m), m); + } else { + throw TypeError("unsupported type"); + } + }, + toString() { + return "PolyMod(" + this.res + "," + this.mod + ")"; + }, + }); + + /* Rational function */ + + RationalFunction = function RationalFunction(a, b) + { + var t, r, d, obj; + if (new.target) + throw TypeError("not a constructor"); + if (!(a instanceof Polynomial) || + !(b instanceof Polynomial)) + throw TypeError("polynomial expected"); + t = Polynomial.divrem(a, b); + r = t[1]; + if (r.deg() < 0) + return t[0]; /* no need for a fraction */ + d = Polynomial.gcd(b, r); + if (d.deg() > 0) { + a = Polynomial.divrem(a, d)[0]; + b = Polynomial.divrem(b, d)[0]; + } + obj = Object.create(RationalFunction.prototype); + obj.num = a; + obj.den = b; + return obj; + } + + add_props(RationalFunction.prototype, { + inverse() { + return RationalFunction(this.den, this.num); + }, + conj() { + return RationalFunction(this.num.conj(), this.den.conj()); + }, + toString() { + var str; + if (this.num.deg() <= 0 && + !number_need_paren(this.num[0])) + str = this.num.toString(); + else + str = "(" + this.num.toString() + ")"; + str += "/(" + this.den.toString() + ")" + return str; + }, + apply(b) { + return this.num.apply(b) / this.den.apply(b); + }, + deriv() { + var n = this.num, d = this.den; + return RationalFunction(n.deriv() * d - n * d.deriv(), d * d); + }, + }); + + function ratfunc_add(a, b) { + a = RationalFunction.toRationalFunction(a); + b = RationalFunction.toRationalFunction(b); + return RationalFunction(a.num * b.den + a.den * b.num, a.den * b.den); + } + function ratfunc_sub(a, b) { + a = RationalFunction.toRationalFunction(a); + b = RationalFunction.toRationalFunction(b); + return RationalFunction(a.num * b.den - a.den * b.num, a.den * b.den); + } + function ratfunc_mul(a, b) { + a = RationalFunction.toRationalFunction(a); + b = RationalFunction.toRationalFunction(b); + return RationalFunction(a.num * b.num, a.den * b.den); + } + function ratfunc_div(a, b) { + a = RationalFunction.toRationalFunction(a); + b = RationalFunction.toRationalFunction(b); + return RationalFunction(a.num * b.den, a.den * b.num); + } + function ratfunc_eq(a, b) { + a = RationalFunction.toRationalFunction(a); + b = RationalFunction.toRationalFunction(b); + /* we assume the fractions are normalized */ + return (a.num == b.num && a.den == b.den); + } + + operators_set(RationalFunction.prototype, + { + "+": ratfunc_add, + "-": ratfunc_sub, + "*": ratfunc_mul, + "/": ratfunc_div, + "**": generic_pow, + "==": ratfunc_eq, + "pos"(a) { + return a; + }, + "neg"(a) { + return RationalFunction(-this.num, this.den); + }, + }, + { + left: [Number, BigInt, Float, Fraction, Complex, Mod, Polynomial], + right: [Number, BigInt, Float, Fraction, Complex, Mod, Polynomial], + "+": ratfunc_add, + "-": ratfunc_sub, + "*": ratfunc_mul, + "/": ratfunc_div, + "**": generic_pow, /* should only be used with integers */ + }); + + add_props(RationalFunction, { + /* This function always return a RationalFunction object even + if it could simplified to a polynomial, so it is not + equivalent to RationalFunction(a) */ + toRationalFunction(a) { + var obj; + if (a instanceof RationalFunction) { + return a; + } else { + obj = Object.create(RationalFunction.prototype); + obj.num = Polynomial(a); + obj.den = Polynomial(1); + return obj; + } + }, + }); + + /* Power series */ + + /* 'a' is an array */ + function get_emin(a) { + var i, n; + n = a.length; + for(i = 0; i < n; i++) { + if (a[i] != 0) + return i; + } + return n; + }; + + function series_is_scalar_or_polynomial(a) + { + return polynomial_is_scalar(a) || + (a instanceof Polynomial); + } + + /* n is the maximum number of terms if 'a' is not a serie */ + Series = function Series(a, n) { + var emin, r, i; + + if (a instanceof Series) { + return a; + } else if (series_is_scalar_or_polynomial(a)) { + if (n <= 0) { + /* XXX: should still use the polynomial degree */ + return Series.zero(0, 0); + } else { + a = Polynomial(a); + emin = get_emin(a); + r = Series.zero(n, emin); + n = Math.min(a.length - emin, n); + for(i = 0; i < n; i++) + r[i] = a[i + emin]; + return r; + } + } else if (a instanceof RationalFunction) { + return Series(a.num, n) / a.den; + } else { + throw TypeError("invalid type"); + } + }; + + function series_add(v1, v2) { + var tmp, d, emin, n, r, i, j, v2_emin, c1, c2; + if (!(v1 instanceof Series)) { + tmp = v1; + v1 = v2; + v2 = tmp; + } + d = v1.emin + v1.length; + if (series_is_scalar_or_polynomial(v2)) { + v2 = Polynomial(v2); + if (d <= 0) + return v1; + v2_emin = 0; + } else if (v2 instanceof RationalFunction) { + /* compute the emin of the rational fonction */ + i = get_emin(v2.num) - get_emin(v2.den); + if (d <= i) + return v1; + /* compute the serie with the required terms */ + v2 = Series(v2, d - i); + v2_emin = v2.emin; + } else { + v2_emin = v2.emin; + d = Math.min(d, v2_emin + v2.length); + } + emin = Math.min(v1.emin, v2_emin); + n = d - emin; + r = Series.zero(n, emin); + /* XXX: slow */ + for(i = emin; i < d; i++) { + j = i - v1.emin; + if (j >= 0 && j < v1.length) + c1 = v1[j]; + else + c1 = 0; + j = i - v2_emin; + if (j >= 0 && j < v2.length) + c2 = v2[j]; + else + c2 = 0; + r[i - emin] = c1 + c2; + } + return r.trim(); + } + function series_sub(a, b) { + return series_add(a, -b); + } + function series_mul(v1, v2) { + var n, i, j, r, n, emin, n1, n2, k; + if (!(v1 instanceof Series)) + v1 = Series(v1, v2.length); + else if (!(v2 instanceof Series)) + v2 = Series(v2, v1.length); + emin = v1.emin + v2.emin; + n = Math.min(v1.length, v2.length); + n1 = v1.length; + n2 = v2.length; + r = Series.zero(n, emin); + for(i = 0; i < n1; i++) { + k = Math.min(n2, n - i); + for(j = 0; j < k; j++) { + r[i + j] += v1[i] * v2[j]; + } + } + return r.trim(); + } + function series_div(v1, v2) { + if (!(v2 instanceof Series)) + v2 = Series(v2, v1.length); + return series_mul(v1, v2.inverse()); + } + function series_pow(a, b) { + if (Integer.isInteger(b)) { + return generic_pow(a, b); + } else { + if (!(a instanceof Series)) + a = Series(a, b.length); + return exp(log(a) * b); + } + } + function series_eq(a, b) { + var n, i; + if (a.emin != b.emin) + return false; + n = a.length; + if (n != b.length) + return false; + for(i = 0; i < n; i++) { + if (a[i] != b[i]) + return false; + } + return true; + } + + operators_set(Series.prototype, + { + "+": series_add, + "-": series_sub, + "*": series_mul, + "/": series_div, + "**": series_pow, + "==": series_eq, + "pos"(a) { + return a; + }, + "neg"(a) { + var obj, n, i; + n = a.length; + obj = Series.zero(a.length, a.emin); + for(i = 0; i < n; i++) { + obj[i] = -a[i]; + } + return obj; + }, + }, + { + left: [Number, BigInt, Float, Fraction, Complex, Mod, Polynomial], + right: [Number, BigInt, Float, Fraction, Complex, Mod, Polynomial], + "+": series_add, + "-": series_sub, + "*": series_mul, + "/": series_div, + "**": series_pow, + }); + + add_props(Series.prototype, { + conj() { + var obj, n, i; + n = this.length; + obj = Series.zero(this.length, this.emin); + for(i = 0; i < n; i++) { + obj[i] = this[i].conj(); + } + return obj; + }, + inverse() { + var r, n, i, j, sum, v1 = this; + n = v1.length; + if (n == 0) + throw RangeError("division by zero"); + r = Series.zero(n, -v1.emin); + r[0] = 1 / v1[0]; + for(i = 1; i < n; i++) { + sum = 0; + for(j = 1; j <= i; j++) { + sum += v1[j] * r[i - j]; + } + r[i] = -sum * r[0]; + } + return r; + }, + /* remove leading zero terms */ + trim() { + var i, j, n, r, v1 = this; + n = v1.length; + i = 0; + while (i < n && v1[i] == 0) + i++; + if (i == 0) + return v1; + for(j = i; j < n; j++) + v1[j - i] = v1[j]; + v1.length = n - i; + v1.__proto__.emin += i; + return v1; + }, + toString() { + var i, j, str, str1, c, a = this, emin, n; + str=""; + emin = this.emin; + n = this.length; + for(j = 0; j < n; j++) { + i = j + emin; + c = a[j]; + if (c != 0) { + str1 = monomial_toString(c, i); + if (str1[0] != "-") { + if (str != "") + str += "+"; + } + str += str1; + } + } + if (str != "") + str += "+"; + str += "O(" + monomial_toString(1, n + emin) + ")"; + return str; + }, + apply(b) { + var i, n, r, a = this; + n = a.length; + if (n == 0) + return 0; + r = a[--n]; + while (n > 0) { + n--; + r = r * b + a[n]; + } + if (a.emin != 0) + r *= b ^ a.emin; + return r; + }, + deriv() { + var a = this, n = a.length, emin = a.emin, r, i, j; + if (n == 0 && emin == 0) { + return Series.zero(0, 0); + } else { + r = Series.zero(n, emin - 1); + for(i = 0; i < n; i++) { + j = emin + i; + if (j == 0) + r[i] = 0; + else + r[i] = j * a[i]; + } + return r.trim(); + } + }, + integ() { + var a = this, n = a.length, emin = a.emin, i, j, r; + r = Series.zero(n, emin + 1); + for(i = 0; i < n; i++) { + j = emin + i; + if (j == -1) { + if (a[i] != 0) + throw RangeError("cannot represent integ(1/X)"); + } else { + r[i] = a[i] / (j + 1); + } + } + return r.trim(); + }, + exp() { + var c, i, r, n, a = this; + if (a.emin < 0) + throw RangeError("negative exponent in exp"); + n = a.emin + a.length; + if (a.emin > 0 || a[0] == 0) { + c = 1; + } else { + c = global.exp(a[0]); + a -= a[0]; + } + r = Series.zero(n, 0); + for(i = 0; i < n; i++) { + r[i] = c / fact(i); + } + return r.apply(a); + }, + log() { + var a = this, r; + if (a.emin != 0) + throw RangeError("log argument must have a non zero constant term"); + r = integ(deriv(a) / a); + /* add the constant term */ + r += global.log(a[0]); + return r; + }, + }); + + add_props(Series, { + /* new series of length n and first exponent emin */ + zero(n, emin) { + var r, i, obj; + + r = []; + for(i = 0; i < n; i++) + r[i] = 0; + /* we return an array and store emin in its prototype */ + obj = Object.create(Series.prototype); + obj.emin = emin; + Object.setPrototypeOf(r, obj); + return r; + }, + O(a) { + function ErrorO() { + return TypeError("invalid O() argument"); + } + var n; + if (series_is_scalar_or_polynomial(a)) { + a = Polynomial(a); + n = a.deg(); + if (n < 0) + throw ErrorO(); + } else if (a instanceof RationalFunction) { + if (a.num.deg() != 0) + throw ErrorO(); + n = a.den.deg(); + if (n < 0) + throw ErrorO(); + n = -n; + } else + throw ErrorO(); + return Series.zero(0, n); + }, + }); + + /* Array (Matrix) */ + + Matrix = function Matrix(h, w) { + var i, j, r, rl; + if (typeof w === "undefined") + w = h; + r = []; + for(i = 0; i < h; i++) { + rl = []; + for(j = 0; j < w; j++) + rl[j] = 0; + r[i] = rl; + } + return r; + }; + + add_props(Matrix, { + idn(n) { + var r, i; + r = Matrix(n, n); + for(i = 0; i < n; i++) + r[i][i] = 1; + return r; + }, + diag(a) { + var r, i, n; + n = a.length; + r = Matrix(n, n); + for(i = 0; i < n; i++) + r[i][i] = a[i]; + return r; + }, + hilbert(n) { + var i, j, r; + r = Matrix(n); + for(i = 0; i < n; i++) { + for(j = 0; j < n; j++) { + r[i][j] = 1 / (1 + i + j); + } + } + return r; + }, + trans(a) { + var h, w, r, i, j; + if (!Array.isArray(a)) + throw TypeError("matrix expected"); + h = a.length; + if (!Array.isArray(a[0])) { + w = 1; + r = Matrix(w, h); + for(i = 0; i < h; i++) { + r[0][i] = a[i]; + } + } else { + w = a[0].length; + r = Matrix(w, h); + for(i = 0; i < h; i++) { + for(j = 0; j < w; j++) { + r[j][i] = a[i][j]; + } + } + } + return r; + }, + check_square(a) { + var a, n; + if (!Array.isArray(a)) + throw TypeError("array expected"); + n = a.length; + if (!Array.isArray(a[0]) || n != a[0].length) + throw TypeError("square matrix expected"); + return n; + }, + trace(a) { + var n, r, i; + n = Matrix.check_square(a); + r = a[0][0]; + for(i = 1; i < n; i++) { + r += a[i][i]; + } + return r; + }, + charpoly(a) { + var n, p, c, i, j, coef; + n = Matrix.check_square(a); + p = []; + for(i = 0; i < n + 1; i++) + p[i] = 0; + p[n] = 1; + c = Matrix.idn(n); + for(i = 0; i < n; i++) { + c = c * a; + coef = -trace(c) / (i + 1); + p[n - i - 1] = coef; + for(j = 0; j < n; j++) + c[j][j] += coef; + } + return Polynomial(p); + }, + eigenvals(a) { + return Polynomial.roots(Matrix.charpoly(a)); + }, + det(a) { + var n, i, j, k, s, src, v, c; + + n = Matrix.check_square(a); + s = 1; + src = a.dup(); + for(i=0;i") +DEF(_ret_, "") +DEF(_var_, "") +DEF(_arg_var_, "") +DEF(_with_, "") +DEF(lastIndex, "lastIndex") +DEF(target, "target") +DEF(index, "index") +DEF(input, "input") +DEF(defineProperties, "defineProperties") +DEF(apply, "apply") +DEF(join, "join") +DEF(concat, "concat") +DEF(split, "split") +DEF(construct, "construct") +DEF(getPrototypeOf, "getPrototypeOf") +DEF(setPrototypeOf, "setPrototypeOf") +DEF(isExtensible, "isExtensible") +DEF(preventExtensions, "preventExtensions") +DEF(has, "has") +DEF(deleteProperty, "deleteProperty") +DEF(defineProperty, "defineProperty") +DEF(getOwnPropertyDescriptor, "getOwnPropertyDescriptor") +DEF(ownKeys, "ownKeys") +DEF(add, "add") +DEF(done, "done") +DEF(next, "next") +DEF(values, "values") +DEF(source, "source") +DEF(flags, "flags") +DEF(global, "global") +DEF(unicode, "unicode") +DEF(raw, "raw") +DEF(new_target, "new.target") +DEF(this_active_func, "this.active_func") +DEF(home_object, "") +DEF(computed_field, "") +DEF(static_computed_field, "") /* must come after computed_fields */ +DEF(class_fields_init, "") +DEF(brand, "") +DEF(hash_constructor, "#constructor") +DEF(as, "as") +DEF(from, "from") +DEF(meta, "meta") +DEF(_default_, "*default*") +DEF(_star_, "*") +DEF(Module, "Module") +DEF(then, "then") +DEF(resolve, "resolve") +DEF(reject, "reject") +DEF(promise, "promise") +DEF(proxy, "proxy") +DEF(revoke, "revoke") +DEF(async, "async") +DEF(exec, "exec") +DEF(groups, "groups") +DEF(status, "status") +DEF(reason, "reason") +DEF(globalThis, "globalThis") +#ifdef CONFIG_BIGNUM +DEF(bigint, "bigint") +DEF(bigfloat, "bigfloat") +DEF(bigdecimal, "bigdecimal") +DEF(roundingMode, "roundingMode") +DEF(maximumSignificantDigits, "maximumSignificantDigits") +DEF(maximumFractionDigits, "maximumFractionDigits") +#endif +#ifdef CONFIG_ATOMICS +DEF(not_equal, "not-equal") +DEF(timed_out, "timed-out") +DEF(ok, "ok") +#endif +DEF(toJSON, "toJSON") +/* class names */ +DEF(Object, "Object") +DEF(Array, "Array") +DEF(Error, "Error") +DEF(Number, "Number") +DEF(String, "String") +DEF(Boolean, "Boolean") +DEF(Symbol, "Symbol") +DEF(Arguments, "Arguments") +DEF(Math, "Math") +DEF(JSON, "JSON") +DEF(Date, "Date") +DEF(Function, "Function") +DEF(GeneratorFunction, "GeneratorFunction") +DEF(ForInIterator, "ForInIterator") +DEF(RegExp, "RegExp") +DEF(ArrayBuffer, "ArrayBuffer") +DEF(SharedArrayBuffer, "SharedArrayBuffer") +/* must keep same order as class IDs for typed arrays */ +DEF(Uint8ClampedArray, "Uint8ClampedArray") +DEF(Int8Array, "Int8Array") +DEF(Uint8Array, "Uint8Array") +DEF(Int16Array, "Int16Array") +DEF(Uint16Array, "Uint16Array") +DEF(Int32Array, "Int32Array") +DEF(Uint32Array, "Uint32Array") +#ifdef CONFIG_BIGNUM +DEF(BigInt64Array, "BigInt64Array") +DEF(BigUint64Array, "BigUint64Array") +#endif +DEF(Float32Array, "Float32Array") +DEF(Float64Array, "Float64Array") +DEF(DataView, "DataView") +#ifdef CONFIG_BIGNUM +DEF(BigInt, "BigInt") +DEF(BigFloat, "BigFloat") +DEF(BigFloatEnv, "BigFloatEnv") +DEF(BigDecimal, "BigDecimal") +DEF(OperatorSet, "OperatorSet") +DEF(Operators, "Operators") +#endif +DEF(Map, "Map") +DEF(Set, "Set") /* Map + 1 */ +DEF(WeakMap, "WeakMap") /* Map + 2 */ +DEF(WeakSet, "WeakSet") /* Map + 3 */ +DEF(Map_Iterator, "Map Iterator") +DEF(Set_Iterator, "Set Iterator") +DEF(Array_Iterator, "Array Iterator") +DEF(String_Iterator, "String Iterator") +DEF(RegExp_String_Iterator, "RegExp String Iterator") +DEF(Generator, "Generator") +DEF(Proxy, "Proxy") +DEF(Promise, "Promise") +DEF(PromiseResolveFunction, "PromiseResolveFunction") +DEF(PromiseRejectFunction, "PromiseRejectFunction") +DEF(AsyncFunction, "AsyncFunction") +DEF(AsyncFunctionResolve, "AsyncFunctionResolve") +DEF(AsyncFunctionReject, "AsyncFunctionReject") +DEF(AsyncGeneratorFunction, "AsyncGeneratorFunction") +DEF(AsyncGenerator, "AsyncGenerator") +DEF(EvalError, "EvalError") +DEF(RangeError, "RangeError") +DEF(ReferenceError, "ReferenceError") +DEF(SyntaxError, "SyntaxError") +DEF(TypeError, "TypeError") +DEF(URIError, "URIError") +DEF(InternalError, "InternalError") +/* private symbols */ +DEF(Private_brand, "") +/* symbols */ +DEF(Symbol_toPrimitive, "Symbol.toPrimitive") +DEF(Symbol_iterator, "Symbol.iterator") +DEF(Symbol_match, "Symbol.match") +DEF(Symbol_matchAll, "Symbol.matchAll") +DEF(Symbol_replace, "Symbol.replace") +DEF(Symbol_search, "Symbol.search") +DEF(Symbol_split, "Symbol.split") +DEF(Symbol_toStringTag, "Symbol.toStringTag") +DEF(Symbol_isConcatSpreadable, "Symbol.isConcatSpreadable") +DEF(Symbol_hasInstance, "Symbol.hasInstance") +DEF(Symbol_species, "Symbol.species") +DEF(Symbol_unscopables, "Symbol.unscopables") +DEF(Symbol_asyncIterator, "Symbol.asyncIterator") +#ifdef CONFIG_BIGNUM +DEF(Symbol_operatorSet, "Symbol.operatorSet") +#endif + +#endif /* DEF */ diff --git a/quickjs/quickjs-libc.c b/quickjs/quickjs-libc.c new file mode 100644 index 0000000..e180dd0 --- /dev/null +++ b/quickjs/quickjs-libc.c @@ -0,0 +1,3927 @@ +/* + * QuickJS C library + * + * Copyright (c) 2017-2021 Fabrice Bellard + * Copyright (c) 2017-2021 Charlie Gordon + * + * 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. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if defined(_WIN32) +#include +#include +#include +#else +#include +#include +#include +#include + +#if defined(__APPLE__) +typedef sig_t sighandler_t; +#if !defined(environ) +#include +#define environ (*_NSGetEnviron()) +#endif +#endif /* __APPLE__ */ + +#endif + +#if !defined(_WIN32) +/* enable the os.Worker API. IT relies on POSIX threads */ +#define USE_WORKER +#endif + +#ifdef USE_WORKER +#include +#include +#endif + +#include "cutils.h" +#include "list.h" +#include "quickjs-libc.h" + +/* TODO: + - add socket calls +*/ + +typedef struct { + struct list_head link; + int fd; + JSValue rw_func[2]; +} JSOSRWHandler; + +typedef struct { + struct list_head link; + int sig_num; + JSValue func; +} JSOSSignalHandler; + +typedef struct { + struct list_head link; + BOOL has_object; + int64_t timeout; + JSValue func; +} JSOSTimer; + +typedef struct { + struct list_head link; + uint8_t *data; + size_t data_len; + /* list of SharedArrayBuffers, necessary to free the message */ + uint8_t **sab_tab; + size_t sab_tab_len; +} JSWorkerMessage; + +typedef struct { + int ref_count; +#ifdef USE_WORKER + pthread_mutex_t mutex; +#endif + struct list_head msg_queue; /* list of JSWorkerMessage.link */ + int read_fd; + int write_fd; +} JSWorkerMessagePipe; + +typedef struct { + struct list_head link; + JSWorkerMessagePipe *recv_pipe; + JSValue on_message_func; +} JSWorkerMessageHandler; + +typedef struct JSThreadState { + struct list_head os_rw_handlers; /* list of JSOSRWHandler.link */ + struct list_head os_signal_handlers; /* list JSOSSignalHandler.link */ + struct list_head os_timers; /* list of JSOSTimer.link */ + struct list_head port_list; /* list of JSWorkerMessageHandler.link */ + int eval_script_recurse; /* only used in the main thread */ + /* not used in the main thread */ + JSWorkerMessagePipe *recv_pipe, *send_pipe; +} JSThreadState; + +static uint64_t os_pending_signals; +static int (*os_poll_func)(JSContext *ctx); + +static void js_std_dbuf_init(JSContext *ctx, DynBuf *s) +{ + dbuf_init2(s, JS_GetRuntime(ctx), (DynBufReallocFunc *)js_realloc_rt); +} + +static BOOL my_isdigit(int c) +{ + return (c >= '0' && c <= '9'); +} + +static JSValue js_printf_internal(JSContext *ctx, + int argc, JSValueConst *argv, FILE *fp) +{ + char fmtbuf[32]; + uint8_t cbuf[UTF8_CHAR_LEN_MAX+1]; + JSValue res; + DynBuf dbuf; + const char *fmt_str; + const uint8_t *fmt, *fmt_end; + const uint8_t *p; + char *q; + int i, c, len, mod; + size_t fmt_len; + int32_t int32_arg; + int64_t int64_arg; + double double_arg; + const char *string_arg; + /* Use indirect call to dbuf_printf to prevent gcc warning */ + int (*dbuf_printf_fun)(DynBuf *s, const char *fmt, ...) = (void*)dbuf_printf; + + js_std_dbuf_init(ctx, &dbuf); + + if (argc > 0) { + fmt_str = JS_ToCStringLen(ctx, &fmt_len, argv[0]); + if (!fmt_str) + goto fail; + + i = 1; + fmt = (const uint8_t *)fmt_str; + fmt_end = fmt + fmt_len; + while (fmt < fmt_end) { + for (p = fmt; fmt < fmt_end && *fmt != '%'; fmt++) + continue; + dbuf_put(&dbuf, p, fmt - p); + if (fmt >= fmt_end) + break; + q = fmtbuf; + *q++ = *fmt++; /* copy '%' */ + + /* flags */ + for(;;) { + c = *fmt; + if (c == '0' || c == '#' || c == '+' || c == '-' || c == ' ' || + c == '\'') { + if (q >= fmtbuf + sizeof(fmtbuf) - 1) + goto invalid; + *q++ = c; + fmt++; + } else { + break; + } + } + /* width */ + if (*fmt == '*') { + if (i >= argc) + goto missing; + if (JS_ToInt32(ctx, &int32_arg, argv[i++])) + goto fail; + q += snprintf(q, fmtbuf + sizeof(fmtbuf) - q, "%d", int32_arg); + fmt++; + } else { + while (my_isdigit(*fmt)) { + if (q >= fmtbuf + sizeof(fmtbuf) - 1) + goto invalid; + *q++ = *fmt++; + } + } + if (*fmt == '.') { + if (q >= fmtbuf + sizeof(fmtbuf) - 1) + goto invalid; + *q++ = *fmt++; + if (*fmt == '*') { + if (i >= argc) + goto missing; + if (JS_ToInt32(ctx, &int32_arg, argv[i++])) + goto fail; + q += snprintf(q, fmtbuf + sizeof(fmtbuf) - q, "%d", int32_arg); + fmt++; + } else { + while (my_isdigit(*fmt)) { + if (q >= fmtbuf + sizeof(fmtbuf) - 1) + goto invalid; + *q++ = *fmt++; + } + } + } + + /* we only support the "l" modifier for 64 bit numbers */ + mod = ' '; + if (*fmt == 'l') { + mod = *fmt++; + } + + /* type */ + c = *fmt++; + if (q >= fmtbuf + sizeof(fmtbuf) - 1) + goto invalid; + *q++ = c; + *q = '\0'; + + switch (c) { + case 'c': + if (i >= argc) + goto missing; + if (JS_IsString(argv[i])) { + string_arg = JS_ToCString(ctx, argv[i++]); + if (!string_arg) + goto fail; + int32_arg = unicode_from_utf8((uint8_t *)string_arg, UTF8_CHAR_LEN_MAX, &p); + JS_FreeCString(ctx, string_arg); + } else { + if (JS_ToInt32(ctx, &int32_arg, argv[i++])) + goto fail; + } + /* handle utf-8 encoding explicitly */ + if ((unsigned)int32_arg > 0x10FFFF) + int32_arg = 0xFFFD; + /* ignore conversion flags, width and precision */ + len = unicode_to_utf8(cbuf, int32_arg); + dbuf_put(&dbuf, cbuf, len); + break; + + case 'd': + case 'i': + case 'o': + case 'u': + case 'x': + case 'X': + if (i >= argc) + goto missing; + if (JS_ToInt64Ext(ctx, &int64_arg, argv[i++])) + goto fail; + if (mod == 'l') { + /* 64 bit number */ +#if defined(_WIN32) + if (q >= fmtbuf + sizeof(fmtbuf) - 3) + goto invalid; + q[2] = q[-1]; + q[-1] = 'I'; + q[0] = '6'; + q[1] = '4'; + q[3] = '\0'; + dbuf_printf_fun(&dbuf, fmtbuf, (int64_t)int64_arg); +#else + if (q >= fmtbuf + sizeof(fmtbuf) - 2) + goto invalid; + q[1] = q[-1]; + q[-1] = q[0] = 'l'; + q[2] = '\0'; + dbuf_printf_fun(&dbuf, fmtbuf, (long long)int64_arg); +#endif + } else { + dbuf_printf_fun(&dbuf, fmtbuf, (int)int64_arg); + } + break; + + case 's': + if (i >= argc) + goto missing; + /* XXX: handle strings containing null characters */ + string_arg = JS_ToCString(ctx, argv[i++]); + if (!string_arg) + goto fail; + dbuf_printf_fun(&dbuf, fmtbuf, string_arg); + JS_FreeCString(ctx, string_arg); + break; + + case 'e': + case 'f': + case 'g': + case 'a': + case 'E': + case 'F': + case 'G': + case 'A': + if (i >= argc) + goto missing; + if (JS_ToFloat64(ctx, &double_arg, argv[i++])) + goto fail; + dbuf_printf_fun(&dbuf, fmtbuf, double_arg); + break; + + case '%': + dbuf_putc(&dbuf, '%'); + break; + + default: + /* XXX: should support an extension mechanism */ + invalid: + JS_ThrowTypeError(ctx, "invalid conversion specifier in format string"); + goto fail; + missing: + JS_ThrowReferenceError(ctx, "missing argument for conversion specifier"); + goto fail; + } + } + JS_FreeCString(ctx, fmt_str); + } + if (dbuf.error) { + res = JS_ThrowOutOfMemory(ctx); + } else { + if (fp) { + len = fwrite(dbuf.buf, 1, dbuf.size, fp); + res = JS_NewInt32(ctx, len); + } else { + res = JS_NewStringLen(ctx, (char *)dbuf.buf, dbuf.size); + } + } + dbuf_free(&dbuf); + return res; + +fail: + dbuf_free(&dbuf); + return JS_EXCEPTION; +} + +uint8_t *js_load_file(JSContext *ctx, size_t *pbuf_len, const char *filename) +{ + FILE *f; + uint8_t *buf; + size_t buf_len; + long lret; + + f = fopen(filename, "rb"); + if (!f) + return NULL; + if (fseek(f, 0, SEEK_END) < 0) + goto fail; + lret = ftell(f); + if (lret < 0) + goto fail; + /* XXX: on Linux, ftell() return LONG_MAX for directories */ + if (lret == LONG_MAX) { + errno = EISDIR; + goto fail; + } + buf_len = lret; + if (fseek(f, 0, SEEK_SET) < 0) + goto fail; + if (ctx) + buf = js_malloc(ctx, buf_len + 1); + else + buf = malloc(buf_len + 1); + if (!buf) + goto fail; + if (fread(buf, 1, buf_len, f) != buf_len) { + errno = EIO; + if (ctx) + js_free(ctx, buf); + else + free(buf); + fail: + fclose(f); + return NULL; + } + buf[buf_len] = '\0'; + fclose(f); + *pbuf_len = buf_len; + return buf; +} + +/* load and evaluate a file */ +static JSValue js_loadScript(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + uint8_t *buf; + const char *filename; + JSValue ret; + size_t buf_len; + + filename = JS_ToCString(ctx, argv[0]); + if (!filename) + return JS_EXCEPTION; + buf = js_load_file(ctx, &buf_len, filename); + if (!buf) { + JS_ThrowReferenceError(ctx, "could not load '%s'", filename); + JS_FreeCString(ctx, filename); + return JS_EXCEPTION; + } + ret = JS_Eval(ctx, (char *)buf, buf_len, filename, + JS_EVAL_TYPE_GLOBAL); + js_free(ctx, buf); + JS_FreeCString(ctx, filename); + return ret; +} + +/* load a file as a UTF-8 encoded string */ +static JSValue js_std_loadFile(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + uint8_t *buf; + const char *filename; + JSValue ret; + size_t buf_len; + + filename = JS_ToCString(ctx, argv[0]); + if (!filename) + return JS_EXCEPTION; + buf = js_load_file(ctx, &buf_len, filename); + JS_FreeCString(ctx, filename); + if (!buf) + return JS_NULL; + ret = JS_NewStringLen(ctx, (char *)buf, buf_len); + js_free(ctx, buf); + return ret; +} + +typedef JSModuleDef *(JSInitModuleFunc)(JSContext *ctx, + const char *module_name); + + +#if defined(_WIN32) +static JSModuleDef *js_module_loader_so(JSContext *ctx, + const char *module_name) +{ + JS_ThrowReferenceError(ctx, "shared library modules are not supported yet"); + return NULL; +} +#else +static JSModuleDef *js_module_loader_so(JSContext *ctx, + const char *module_name) +{ + JSModuleDef *m; + void *hd; + JSInitModuleFunc *init; + char *filename; + + if (!strchr(module_name, '/')) { + /* must add a '/' so that the DLL is not searched in the + system library paths */ + filename = js_malloc(ctx, strlen(module_name) + 2 + 1); + if (!filename) + return NULL; + strcpy(filename, "./"); + strcpy(filename + 2, module_name); + } else { + filename = (char *)module_name; + } + + /* C module */ + hd = dlopen(filename, RTLD_NOW | RTLD_LOCAL); + if (filename != module_name) + js_free(ctx, filename); + if (!hd) { + JS_ThrowReferenceError(ctx, "could not load module filename '%s' as shared library", + module_name); + goto fail; + } + + init = dlsym(hd, "js_init_module"); + if (!init) { + JS_ThrowReferenceError(ctx, "could not load module filename '%s': js_init_module not found", + module_name); + goto fail; + } + + m = init(ctx, module_name); + if (!m) { + JS_ThrowReferenceError(ctx, "could not load module filename '%s': initialization error", + module_name); + fail: + if (hd) + dlclose(hd); + return NULL; + } + return m; +} +#endif /* !_WIN32 */ + +int js_module_set_import_meta(JSContext *ctx, JSValueConst func_val, + JS_BOOL use_realpath, JS_BOOL is_main) +{ + JSModuleDef *m; + char buf[PATH_MAX + 16]; + JSValue meta_obj; + JSAtom module_name_atom; + const char *module_name; + + assert(JS_VALUE_GET_TAG(func_val) == JS_TAG_MODULE); + m = JS_VALUE_GET_PTR(func_val); + + module_name_atom = JS_GetModuleName(ctx, m); + module_name = JS_AtomToCString(ctx, module_name_atom); + JS_FreeAtom(ctx, module_name_atom); + if (!module_name) + return -1; + if (!strchr(module_name, ':')) { + strcpy(buf, "file://"); +#if !defined(_WIN32) + /* realpath() cannot be used with modules compiled with qjsc + because the corresponding module source code is not + necessarily present */ + if (use_realpath) { + char *res = realpath(module_name, buf + strlen(buf)); + if (!res) { + JS_ThrowTypeError(ctx, "realpath failure"); + JS_FreeCString(ctx, module_name); + return -1; + } + } else +#endif + { + pstrcat(buf, sizeof(buf), module_name); + } + } else { + pstrcpy(buf, sizeof(buf), module_name); + } + JS_FreeCString(ctx, module_name); + + meta_obj = JS_GetImportMeta(ctx, m); + if (JS_IsException(meta_obj)) + return -1; + JS_DefinePropertyValueStr(ctx, meta_obj, "url", + JS_NewString(ctx, buf), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, meta_obj, "main", + JS_NewBool(ctx, is_main), + JS_PROP_C_W_E); + JS_FreeValue(ctx, meta_obj); + return 0; +} + +JSModuleDef *js_module_loader(JSContext *ctx, + const char *module_name, void *opaque) +{ + JSModuleDef *m; + + if (has_suffix(module_name, ".so")) { + m = js_module_loader_so(ctx, module_name); + } else { + size_t buf_len; + uint8_t *buf; + JSValue func_val; + + buf = js_load_file(ctx, &buf_len, module_name); + if (!buf) { + JS_ThrowReferenceError(ctx, "could not load module filename '%s'", + module_name); + return NULL; + } + + /* compile the module */ + func_val = JS_Eval(ctx, (char *)buf, buf_len, module_name, + JS_EVAL_TYPE_MODULE | JS_EVAL_FLAG_COMPILE_ONLY); + js_free(ctx, buf); + if (JS_IsException(func_val)) + return NULL; + /* XXX: could propagate the exception */ + js_module_set_import_meta(ctx, func_val, TRUE, FALSE); + /* the module is already referenced, so we must free it */ + m = JS_VALUE_GET_PTR(func_val); + JS_FreeValue(ctx, func_val); + } + return m; +} + +static JSValue js_std_exit(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int status; + if (JS_ToInt32(ctx, &status, argv[0])) + status = -1; + exit(status); + return JS_UNDEFINED; +} + +static JSValue js_std_getenv(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *name, *str; + name = JS_ToCString(ctx, argv[0]); + if (!name) + return JS_EXCEPTION; + str = getenv(name); + JS_FreeCString(ctx, name); + if (!str) + return JS_UNDEFINED; + else + return JS_NewString(ctx, str); +} + +#if defined(_WIN32) +static void setenv(const char *name, const char *value, int overwrite) +{ + char *str; + size_t name_len, value_len; + name_len = strlen(name); + value_len = strlen(value); + str = malloc(name_len + 1 + value_len + 1); + memcpy(str, name, name_len); + str[name_len] = '='; + memcpy(str + name_len + 1, value, value_len); + str[name_len + 1 + value_len] = '\0'; + _putenv(str); + free(str); +} + +static void unsetenv(const char *name) +{ + setenv(name, "", TRUE); +} +#endif /* _WIN32 */ + +static JSValue js_std_setenv(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *name, *value; + name = JS_ToCString(ctx, argv[0]); + if (!name) + return JS_EXCEPTION; + value = JS_ToCString(ctx, argv[1]); + if (!value) { + JS_FreeCString(ctx, name); + return JS_EXCEPTION; + } + setenv(name, value, TRUE); + JS_FreeCString(ctx, name); + JS_FreeCString(ctx, value); + return JS_UNDEFINED; +} + +static JSValue js_std_unsetenv(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *name; + name = JS_ToCString(ctx, argv[0]); + if (!name) + return JS_EXCEPTION; + unsetenv(name); + JS_FreeCString(ctx, name); + return JS_UNDEFINED; +} + +/* return an object containing the list of the available environment + variables. */ +static JSValue js_std_getenviron(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + char **envp; + const char *name, *p, *value; + JSValue obj; + uint32_t idx; + size_t name_len; + JSAtom atom; + int ret; + + obj = JS_NewObject(ctx); + if (JS_IsException(obj)) + return JS_EXCEPTION; + envp = environ; + for(idx = 0; envp[idx] != NULL; idx++) { + name = envp[idx]; + p = strchr(name, '='); + name_len = p - name; + if (!p) + continue; + value = p + 1; + atom = JS_NewAtomLen(ctx, name, name_len); + if (atom == JS_ATOM_NULL) + goto fail; + ret = JS_DefinePropertyValue(ctx, obj, atom, JS_NewString(ctx, value), + JS_PROP_C_W_E); + JS_FreeAtom(ctx, atom); + if (ret < 0) + goto fail; + } + return obj; + fail: + JS_FreeValue(ctx, obj); + return JS_EXCEPTION; +} + +static JSValue js_std_gc(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JS_RunGC(JS_GetRuntime(ctx)); + return JS_UNDEFINED; +} + +static int interrupt_handler(JSRuntime *rt, void *opaque) +{ + return (os_pending_signals >> SIGINT) & 1; +} + +static int get_bool_option(JSContext *ctx, BOOL *pbool, + JSValueConst obj, + const char *option) +{ + JSValue val; + val = JS_GetPropertyStr(ctx, obj, option); + if (JS_IsException(val)) + return -1; + if (!JS_IsUndefined(val)) { + *pbool = JS_ToBool(ctx, val); + } + JS_FreeValue(ctx, val); + return 0; +} + +static JSValue js_evalScript(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSRuntime *rt = JS_GetRuntime(ctx); + JSThreadState *ts = JS_GetRuntimeOpaque(rt); + const char *str; + size_t len; + JSValue ret; + JSValueConst options_obj; + BOOL backtrace_barrier = FALSE; + int flags; + + if (argc >= 2) { + options_obj = argv[1]; + if (get_bool_option(ctx, &backtrace_barrier, options_obj, + "backtrace_barrier")) + return JS_EXCEPTION; + } + + str = JS_ToCStringLen(ctx, &len, argv[0]); + if (!str) + return JS_EXCEPTION; + if (!ts->recv_pipe && ++ts->eval_script_recurse == 1) { + /* install the interrupt handler */ + JS_SetInterruptHandler(JS_GetRuntime(ctx), interrupt_handler, NULL); + } + flags = JS_EVAL_TYPE_GLOBAL; + if (backtrace_barrier) + flags |= JS_EVAL_FLAG_BACKTRACE_BARRIER; + ret = JS_Eval(ctx, str, len, "", flags); + JS_FreeCString(ctx, str); + if (!ts->recv_pipe && --ts->eval_script_recurse == 0) { + /* remove the interrupt handler */ + JS_SetInterruptHandler(JS_GetRuntime(ctx), NULL, NULL); + os_pending_signals &= ~((uint64_t)1 << SIGINT); + /* convert the uncatchable "interrupted" error into a normal error + so that it can be caught by the REPL */ + if (JS_IsException(ret)) + JS_ResetUncatchableError(ctx); + } + return ret; +} + +static JSClassID js_std_file_class_id; + +typedef struct { + FILE *f; + BOOL close_in_finalizer; + BOOL is_popen; +} JSSTDFile; + +static void js_std_file_finalizer(JSRuntime *rt, JSValue val) +{ + JSSTDFile *s = JS_GetOpaque(val, js_std_file_class_id); + if (s) { + if (s->f && s->close_in_finalizer) { + if (s->is_popen) + pclose(s->f); + else + fclose(s->f); + } + js_free_rt(rt, s); + } +} + +static ssize_t js_get_errno(ssize_t ret) +{ + if (ret == -1) + ret = -errno; + return ret; +} + +static JSValue js_std_strerror(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int err; + if (JS_ToInt32(ctx, &err, argv[0])) + return JS_EXCEPTION; + return JS_NewString(ctx, strerror(err)); +} + +static JSValue js_std_parseExtJSON(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSValue obj; + const char *str; + size_t len; + + str = JS_ToCStringLen(ctx, &len, argv[0]); + if (!str) + return JS_EXCEPTION; + obj = JS_ParseJSON2(ctx, str, len, "", JS_PARSE_JSON_EXT); + JS_FreeCString(ctx, str); + return obj; +} + +static JSValue js_new_std_file(JSContext *ctx, FILE *f, + BOOL close_in_finalizer, + BOOL is_popen) +{ + JSSTDFile *s; + JSValue obj; + obj = JS_NewObjectClass(ctx, js_std_file_class_id); + if (JS_IsException(obj)) + return obj; + s = js_mallocz(ctx, sizeof(*s)); + if (!s) { + JS_FreeValue(ctx, obj); + return JS_EXCEPTION; + } + s->close_in_finalizer = close_in_finalizer; + s->is_popen = is_popen; + s->f = f; + JS_SetOpaque(obj, s); + return obj; +} + +static void js_set_error_object(JSContext *ctx, JSValue obj, int err) +{ + if (!JS_IsUndefined(obj)) { + JS_SetPropertyStr(ctx, obj, "errno", JS_NewInt32(ctx, err)); + } +} + +static JSValue js_std_open(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *filename, *mode = NULL; + FILE *f; + int err; + + filename = JS_ToCString(ctx, argv[0]); + if (!filename) + goto fail; + mode = JS_ToCString(ctx, argv[1]); + if (!mode) + goto fail; + if (mode[strspn(mode, "rwa+b")] != '\0') { + JS_ThrowTypeError(ctx, "invalid file mode"); + goto fail; + } + + f = fopen(filename, mode); + if (!f) + err = errno; + else + err = 0; + if (argc >= 3) + js_set_error_object(ctx, argv[2], err); + JS_FreeCString(ctx, filename); + JS_FreeCString(ctx, mode); + if (!f) + return JS_NULL; + return js_new_std_file(ctx, f, TRUE, FALSE); + fail: + JS_FreeCString(ctx, filename); + JS_FreeCString(ctx, mode); + return JS_EXCEPTION; +} + +static JSValue js_std_popen(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *filename, *mode = NULL; + FILE *f; + int err; + + filename = JS_ToCString(ctx, argv[0]); + if (!filename) + goto fail; + mode = JS_ToCString(ctx, argv[1]); + if (!mode) + goto fail; + if (mode[strspn(mode, "rw")] != '\0') { + JS_ThrowTypeError(ctx, "invalid file mode"); + goto fail; + } + + f = popen(filename, mode); + if (!f) + err = errno; + else + err = 0; + if (argc >= 3) + js_set_error_object(ctx, argv[2], err); + JS_FreeCString(ctx, filename); + JS_FreeCString(ctx, mode); + if (!f) + return JS_NULL; + return js_new_std_file(ctx, f, TRUE, TRUE); + fail: + JS_FreeCString(ctx, filename); + JS_FreeCString(ctx, mode); + return JS_EXCEPTION; +} + +static JSValue js_std_fdopen(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *mode; + FILE *f; + int fd, err; + + if (JS_ToInt32(ctx, &fd, argv[0])) + return JS_EXCEPTION; + mode = JS_ToCString(ctx, argv[1]); + if (!mode) + goto fail; + if (mode[strspn(mode, "rwa+")] != '\0') { + JS_ThrowTypeError(ctx, "invalid file mode"); + goto fail; + } + + f = fdopen(fd, mode); + if (!f) + err = errno; + else + err = 0; + if (argc >= 3) + js_set_error_object(ctx, argv[2], err); + JS_FreeCString(ctx, mode); + if (!f) + return JS_NULL; + return js_new_std_file(ctx, f, TRUE, FALSE); + fail: + JS_FreeCString(ctx, mode); + return JS_EXCEPTION; +} + +static JSValue js_std_tmpfile(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f; + f = tmpfile(); + if (argc >= 1) + js_set_error_object(ctx, argv[0], f ? 0 : errno); + if (!f) + return JS_NULL; + return js_new_std_file(ctx, f, TRUE, FALSE); +} + +static JSValue js_std_sprintf(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + return js_printf_internal(ctx, argc, argv, NULL); +} + +static JSValue js_std_printf(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + return js_printf_internal(ctx, argc, argv, stdout); +} + +static FILE *js_std_file_get(JSContext *ctx, JSValueConst obj) +{ + JSSTDFile *s = JS_GetOpaque2(ctx, obj, js_std_file_class_id); + if (!s) + return NULL; + if (!s->f) { + JS_ThrowTypeError(ctx, "invalid file handle"); + return NULL; + } + return s->f; +} + +static JSValue js_std_file_puts(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv, int magic) +{ + FILE *f; + int i; + const char *str; + size_t len; + + if (magic == 0) { + f = stdout; + } else { + f = js_std_file_get(ctx, this_val); + if (!f) + return JS_EXCEPTION; + } + + for(i = 0; i < argc; i++) { + str = JS_ToCStringLen(ctx, &len, argv[i]); + if (!str) + return JS_EXCEPTION; + fwrite(str, 1, len, f); + JS_FreeCString(ctx, str); + } + return JS_UNDEFINED; +} + +static JSValue js_std_file_close(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSSTDFile *s = JS_GetOpaque2(ctx, this_val, js_std_file_class_id); + int err; + if (!s) + return JS_EXCEPTION; + if (!s->f) + return JS_ThrowTypeError(ctx, "invalid file handle"); + if (s->is_popen) + err = js_get_errno(pclose(s->f)); + else + err = js_get_errno(fclose(s->f)); + s->f = NULL; + return JS_NewInt32(ctx, err); +} + +static JSValue js_std_file_printf(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f = js_std_file_get(ctx, this_val); + if (!f) + return JS_EXCEPTION; + return js_printf_internal(ctx, argc, argv, f); +} + +static JSValue js_std_file_flush(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f = js_std_file_get(ctx, this_val); + if (!f) + return JS_EXCEPTION; + fflush(f); + return JS_UNDEFINED; +} + +static JSValue js_std_file_tell(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv, int is_bigint) +{ + FILE *f = js_std_file_get(ctx, this_val); + int64_t pos; + if (!f) + return JS_EXCEPTION; +#if defined(__linux__) + pos = ftello(f); +#else + pos = ftell(f); +#endif + if (is_bigint) + return JS_NewBigInt64(ctx, pos); + else + return JS_NewInt64(ctx, pos); +} + +static JSValue js_std_file_seek(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f = js_std_file_get(ctx, this_val); + int64_t pos; + int whence, ret; + if (!f) + return JS_EXCEPTION; + if (JS_ToInt64Ext(ctx, &pos, argv[0])) + return JS_EXCEPTION; + if (JS_ToInt32(ctx, &whence, argv[1])) + return JS_EXCEPTION; +#if defined(__linux__) + ret = fseeko(f, pos, whence); +#else + ret = fseek(f, pos, whence); +#endif + if (ret < 0) + ret = -errno; + return JS_NewInt32(ctx, ret); +} + +static JSValue js_std_file_eof(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f = js_std_file_get(ctx, this_val); + if (!f) + return JS_EXCEPTION; + return JS_NewBool(ctx, feof(f)); +} + +static JSValue js_std_file_error(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f = js_std_file_get(ctx, this_val); + if (!f) + return JS_EXCEPTION; + return JS_NewBool(ctx, ferror(f)); +} + +static JSValue js_std_file_clearerr(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f = js_std_file_get(ctx, this_val); + if (!f) + return JS_EXCEPTION; + clearerr(f); + return JS_UNDEFINED; +} + +static JSValue js_std_file_fileno(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f = js_std_file_get(ctx, this_val); + if (!f) + return JS_EXCEPTION; + return JS_NewInt32(ctx, fileno(f)); +} + +static JSValue js_std_file_read_write(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv, int magic) +{ + FILE *f = js_std_file_get(ctx, this_val); + uint64_t pos, len; + size_t size, ret; + uint8_t *buf; + + if (!f) + return JS_EXCEPTION; + if (JS_ToIndex(ctx, &pos, argv[1])) + return JS_EXCEPTION; + if (JS_ToIndex(ctx, &len, argv[2])) + return JS_EXCEPTION; + buf = JS_GetArrayBuffer(ctx, &size, argv[0]); + if (!buf) + return JS_EXCEPTION; + if (pos + len > size) + return JS_ThrowRangeError(ctx, "read/write array buffer overflow"); + if (magic) + ret = fwrite(buf + pos, 1, len, f); + else + ret = fread(buf + pos, 1, len, f); + return JS_NewInt64(ctx, ret); +} + +/* XXX: could use less memory and go faster */ +static JSValue js_std_file_getline(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f = js_std_file_get(ctx, this_val); + int c; + DynBuf dbuf; + JSValue obj; + + if (!f) + return JS_EXCEPTION; + + js_std_dbuf_init(ctx, &dbuf); + for(;;) { + c = fgetc(f); + if (c == EOF) { + if (dbuf.size == 0) { + /* EOF */ + dbuf_free(&dbuf); + return JS_NULL; + } else { + break; + } + } + if (c == '\n') + break; + if (dbuf_putc(&dbuf, c)) { + dbuf_free(&dbuf); + return JS_ThrowOutOfMemory(ctx); + } + } + obj = JS_NewStringLen(ctx, (const char *)dbuf.buf, dbuf.size); + dbuf_free(&dbuf); + return obj; +} + +/* XXX: could use less memory and go faster */ +static JSValue js_std_file_readAsString(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f = js_std_file_get(ctx, this_val); + int c; + DynBuf dbuf; + JSValue obj; + uint64_t max_size64; + size_t max_size; + JSValueConst max_size_val; + + if (!f) + return JS_EXCEPTION; + + if (argc >= 1) + max_size_val = argv[0]; + else + max_size_val = JS_UNDEFINED; + max_size = (size_t)-1; + if (!JS_IsUndefined(max_size_val)) { + if (JS_ToIndex(ctx, &max_size64, max_size_val)) + return JS_EXCEPTION; + if (max_size64 < max_size) + max_size = max_size64; + } + + js_std_dbuf_init(ctx, &dbuf); + while (max_size != 0) { + c = fgetc(f); + if (c == EOF) + break; + if (dbuf_putc(&dbuf, c)) { + dbuf_free(&dbuf); + return JS_EXCEPTION; + } + max_size--; + } + obj = JS_NewStringLen(ctx, (const char *)dbuf.buf, dbuf.size); + dbuf_free(&dbuf); + return obj; +} + +static JSValue js_std_file_getByte(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f = js_std_file_get(ctx, this_val); + if (!f) + return JS_EXCEPTION; + return JS_NewInt32(ctx, fgetc(f)); +} + +static JSValue js_std_file_putByte(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f = js_std_file_get(ctx, this_val); + int c; + if (!f) + return JS_EXCEPTION; + if (JS_ToInt32(ctx, &c, argv[0])) + return JS_EXCEPTION; + c = fputc(c, f); + return JS_NewInt32(ctx, c); +} + +/* urlGet */ + +#define URL_GET_PROGRAM "curl -s -i" +#define URL_GET_BUF_SIZE 4096 + +static int http_get_header_line(FILE *f, char *buf, size_t buf_size, + DynBuf *dbuf) +{ + int c; + char *p; + + p = buf; + for(;;) { + c = fgetc(f); + if (c < 0) + return -1; + if ((p - buf) < buf_size - 1) + *p++ = c; + if (dbuf) + dbuf_putc(dbuf, c); + if (c == '\n') + break; + } + *p = '\0'; + return 0; +} + +static int http_get_status(const char *buf) +{ + const char *p = buf; + while (*p != ' ' && *p != '\0') + p++; + if (*p != ' ') + return 0; + while (*p == ' ') + p++; + return atoi(p); +} + +static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *url; + DynBuf cmd_buf; + DynBuf data_buf_s, *data_buf = &data_buf_s; + DynBuf header_buf_s, *header_buf = &header_buf_s; + char *buf; + size_t i, len; + int c, status; + JSValue response = JS_UNDEFINED, ret_obj; + JSValueConst options_obj; + FILE *f; + BOOL binary_flag, full_flag; + + url = JS_ToCString(ctx, argv[0]); + if (!url) + return JS_EXCEPTION; + + binary_flag = FALSE; + full_flag = FALSE; + + if (argc >= 2) { + options_obj = argv[1]; + + if (get_bool_option(ctx, &binary_flag, options_obj, "binary")) + goto fail_obj; + + if (get_bool_option(ctx, &full_flag, options_obj, "full")) { + fail_obj: + JS_FreeCString(ctx, url); + return JS_EXCEPTION; + } + } + + js_std_dbuf_init(ctx, &cmd_buf); + dbuf_printf(&cmd_buf, "%s ''", URL_GET_PROGRAM); + len = strlen(url); + for(i = 0; i < len; i++) { + c = url[i]; + if (c == '\'' || c == '\\') + dbuf_putc(&cmd_buf, '\\'); + dbuf_putc(&cmd_buf, c); + } + JS_FreeCString(ctx, url); + dbuf_putstr(&cmd_buf, "''"); + dbuf_putc(&cmd_buf, '\0'); + if (dbuf_error(&cmd_buf)) { + dbuf_free(&cmd_buf); + return JS_EXCEPTION; + } + // printf("%s\n", (char *)cmd_buf.buf); + f = popen((char *)cmd_buf.buf, "r"); + dbuf_free(&cmd_buf); + if (!f) { + return JS_ThrowTypeError(ctx, "could not start curl"); + } + + js_std_dbuf_init(ctx, data_buf); + js_std_dbuf_init(ctx, header_buf); + + buf = js_malloc(ctx, URL_GET_BUF_SIZE); + if (!buf) + goto fail; + + /* get the HTTP status */ + if (http_get_header_line(f, buf, URL_GET_BUF_SIZE, NULL) < 0) { + status = 0; + goto bad_header; + } + status = http_get_status(buf); + if (!full_flag && !(status >= 200 && status <= 299)) { + goto bad_header; + } + + /* wait until there is an empty line */ + for(;;) { + if (http_get_header_line(f, buf, URL_GET_BUF_SIZE, header_buf) < 0) { + bad_header: + response = JS_NULL; + goto done; + } + if (!strcmp(buf, "\r\n")) + break; + } + if (dbuf_error(header_buf)) + goto fail; + header_buf->size -= 2; /* remove the trailing CRLF */ + + /* download the data */ + for(;;) { + len = fread(buf, 1, URL_GET_BUF_SIZE, f); + if (len == 0) + break; + dbuf_put(data_buf, (uint8_t *)buf, len); + } + if (dbuf_error(data_buf)) + goto fail; + if (binary_flag) { + response = JS_NewArrayBufferCopy(ctx, + data_buf->buf, data_buf->size); + } else { + response = JS_NewStringLen(ctx, (char *)data_buf->buf, data_buf->size); + } + if (JS_IsException(response)) + goto fail; + done: + js_free(ctx, buf); + buf = NULL; + pclose(f); + f = NULL; + dbuf_free(data_buf); + data_buf = NULL; + + if (full_flag) { + ret_obj = JS_NewObject(ctx); + if (JS_IsException(ret_obj)) + goto fail; + JS_DefinePropertyValueStr(ctx, ret_obj, "response", + response, + JS_PROP_C_W_E); + if (!JS_IsNull(response)) { + JS_DefinePropertyValueStr(ctx, ret_obj, "responseHeaders", + JS_NewStringLen(ctx, (char *)header_buf->buf, + header_buf->size), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, ret_obj, "status", + JS_NewInt32(ctx, status), + JS_PROP_C_W_E); + } + } else { + ret_obj = response; + } + dbuf_free(header_buf); + return ret_obj; + fail: + if (f) + pclose(f); + js_free(ctx, buf); + if (data_buf) + dbuf_free(data_buf); + if (header_buf) + dbuf_free(header_buf); + JS_FreeValue(ctx, response); + return JS_EXCEPTION; +} + +static JSClassDef js_std_file_class = { + "FILE", + .finalizer = js_std_file_finalizer, +}; + +static const JSCFunctionListEntry js_std_error_props[] = { + /* various errno values */ +#define DEF(x) JS_PROP_INT32_DEF(#x, x, JS_PROP_CONFIGURABLE ) + DEF(EINVAL), + DEF(EIO), + DEF(EACCES), + DEF(EEXIST), + DEF(ENOSPC), + DEF(ENOSYS), + DEF(EBUSY), + DEF(ENOENT), + DEF(EPERM), + DEF(EPIPE), + DEF(EBADF), +#undef DEF +}; + +static const JSCFunctionListEntry js_std_funcs[] = { + JS_CFUNC_DEF("exit", 1, js_std_exit ), + JS_CFUNC_DEF("gc", 0, js_std_gc ), + JS_CFUNC_DEF("evalScript", 1, js_evalScript ), + JS_CFUNC_DEF("loadScript", 1, js_loadScript ), + JS_CFUNC_DEF("getenv", 1, js_std_getenv ), + JS_CFUNC_DEF("setenv", 1, js_std_setenv ), + JS_CFUNC_DEF("unsetenv", 1, js_std_unsetenv ), + JS_CFUNC_DEF("getenviron", 1, js_std_getenviron ), + JS_CFUNC_DEF("urlGet", 1, js_std_urlGet ), + JS_CFUNC_DEF("loadFile", 1, js_std_loadFile ), + JS_CFUNC_DEF("strerror", 1, js_std_strerror ), + JS_CFUNC_DEF("parseExtJSON", 1, js_std_parseExtJSON ), + + /* FILE I/O */ + JS_CFUNC_DEF("open", 2, js_std_open ), + JS_CFUNC_DEF("popen", 2, js_std_popen ), + JS_CFUNC_DEF("fdopen", 2, js_std_fdopen ), + JS_CFUNC_DEF("tmpfile", 0, js_std_tmpfile ), + JS_CFUNC_MAGIC_DEF("puts", 1, js_std_file_puts, 0 ), + JS_CFUNC_DEF("printf", 1, js_std_printf ), + JS_CFUNC_DEF("sprintf", 1, js_std_sprintf ), + JS_PROP_INT32_DEF("SEEK_SET", SEEK_SET, JS_PROP_CONFIGURABLE ), + JS_PROP_INT32_DEF("SEEK_CUR", SEEK_CUR, JS_PROP_CONFIGURABLE ), + JS_PROP_INT32_DEF("SEEK_END", SEEK_END, JS_PROP_CONFIGURABLE ), + JS_OBJECT_DEF("Error", js_std_error_props, countof(js_std_error_props), JS_PROP_CONFIGURABLE), +}; + +static const JSCFunctionListEntry js_std_file_proto_funcs[] = { + JS_CFUNC_DEF("close", 0, js_std_file_close ), + JS_CFUNC_MAGIC_DEF("puts", 1, js_std_file_puts, 1 ), + JS_CFUNC_DEF("printf", 1, js_std_file_printf ), + JS_CFUNC_DEF("flush", 0, js_std_file_flush ), + JS_CFUNC_MAGIC_DEF("tell", 0, js_std_file_tell, 0 ), + JS_CFUNC_MAGIC_DEF("tello", 0, js_std_file_tell, 1 ), + JS_CFUNC_DEF("seek", 2, js_std_file_seek ), + JS_CFUNC_DEF("eof", 0, js_std_file_eof ), + JS_CFUNC_DEF("fileno", 0, js_std_file_fileno ), + JS_CFUNC_DEF("error", 0, js_std_file_error ), + JS_CFUNC_DEF("clearerr", 0, js_std_file_clearerr ), + JS_CFUNC_MAGIC_DEF("read", 3, js_std_file_read_write, 0 ), + JS_CFUNC_MAGIC_DEF("write", 3, js_std_file_read_write, 1 ), + JS_CFUNC_DEF("getline", 0, js_std_file_getline ), + JS_CFUNC_DEF("readAsString", 0, js_std_file_readAsString ), + JS_CFUNC_DEF("getByte", 0, js_std_file_getByte ), + JS_CFUNC_DEF("putByte", 1, js_std_file_putByte ), + /* setvbuf, ... */ +}; + +static int js_std_init(JSContext *ctx, JSModuleDef *m) +{ + JSValue proto; + + /* FILE class */ + /* the class ID is created once */ + JS_NewClassID(&js_std_file_class_id); + /* the class is created once per runtime */ + JS_NewClass(JS_GetRuntime(ctx), js_std_file_class_id, &js_std_file_class); + proto = JS_NewObject(ctx); + JS_SetPropertyFunctionList(ctx, proto, js_std_file_proto_funcs, + countof(js_std_file_proto_funcs)); + JS_SetClassProto(ctx, js_std_file_class_id, proto); + + JS_SetModuleExportList(ctx, m, js_std_funcs, + countof(js_std_funcs)); + JS_SetModuleExport(ctx, m, "in", js_new_std_file(ctx, stdin, FALSE, FALSE)); + JS_SetModuleExport(ctx, m, "out", js_new_std_file(ctx, stdout, FALSE, FALSE)); + JS_SetModuleExport(ctx, m, "err", js_new_std_file(ctx, stderr, FALSE, FALSE)); + return 0; +} + +JSModuleDef *js_init_module_std(JSContext *ctx, const char *module_name) +{ + JSModuleDef *m; + m = JS_NewCModule(ctx, module_name, js_std_init); + if (!m) + return NULL; + JS_AddModuleExportList(ctx, m, js_std_funcs, countof(js_std_funcs)); + JS_AddModuleExport(ctx, m, "in"); + JS_AddModuleExport(ctx, m, "out"); + JS_AddModuleExport(ctx, m, "err"); + return m; +} + +/**********************************************************/ +/* 'os' object */ + +static JSValue js_os_open(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *filename; + int flags, mode, ret; + + filename = JS_ToCString(ctx, argv[0]); + if (!filename) + return JS_EXCEPTION; + if (JS_ToInt32(ctx, &flags, argv[1])) + goto fail; + if (argc >= 3 && !JS_IsUndefined(argv[2])) { + if (JS_ToInt32(ctx, &mode, argv[2])) { + fail: + JS_FreeCString(ctx, filename); + return JS_EXCEPTION; + } + } else { + mode = 0666; + } +#if defined(_WIN32) + /* force binary mode by default */ + if (!(flags & O_TEXT)) + flags |= O_BINARY; +#endif + ret = js_get_errno(open(filename, flags, mode)); + JS_FreeCString(ctx, filename); + return JS_NewInt32(ctx, ret); +} + +static JSValue js_os_close(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int fd, ret; + if (JS_ToInt32(ctx, &fd, argv[0])) + return JS_EXCEPTION; + ret = js_get_errno(close(fd)); + return JS_NewInt32(ctx, ret); +} + +static JSValue js_os_seek(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int fd, whence; + int64_t pos, ret; + BOOL is_bigint; + + if (JS_ToInt32(ctx, &fd, argv[0])) + return JS_EXCEPTION; + is_bigint = JS_IsBigInt(ctx, argv[1]); + if (JS_ToInt64Ext(ctx, &pos, argv[1])) + return JS_EXCEPTION; + if (JS_ToInt32(ctx, &whence, argv[2])) + return JS_EXCEPTION; + ret = lseek(fd, pos, whence); + if (ret == -1) + ret = -errno; + if (is_bigint) + return JS_NewBigInt64(ctx, ret); + else + return JS_NewInt64(ctx, ret); +} + +static JSValue js_os_read_write(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv, int magic) +{ + int fd; + uint64_t pos, len; + size_t size; + ssize_t ret; + uint8_t *buf; + + if (JS_ToInt32(ctx, &fd, argv[0])) + return JS_EXCEPTION; + if (JS_ToIndex(ctx, &pos, argv[2])) + return JS_EXCEPTION; + if (JS_ToIndex(ctx, &len, argv[3])) + return JS_EXCEPTION; + buf = JS_GetArrayBuffer(ctx, &size, argv[1]); + if (!buf) + return JS_EXCEPTION; + if (pos + len > size) + return JS_ThrowRangeError(ctx, "read/write array buffer overflow"); + if (magic) + ret = js_get_errno(write(fd, buf + pos, len)); + else + ret = js_get_errno(read(fd, buf + pos, len)); + return JS_NewInt64(ctx, ret); +} + +static JSValue js_os_isatty(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int fd; + if (JS_ToInt32(ctx, &fd, argv[0])) + return JS_EXCEPTION; + return JS_NewBool(ctx, (isatty(fd) != 0)); +} + +#if defined(_WIN32) +static JSValue js_os_ttyGetWinSize(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int fd; + HANDLE handle; + CONSOLE_SCREEN_BUFFER_INFO info; + JSValue obj; + + if (JS_ToInt32(ctx, &fd, argv[0])) + return JS_EXCEPTION; + handle = (HANDLE)_get_osfhandle(fd); + + if (!GetConsoleScreenBufferInfo(handle, &info)) + return JS_NULL; + obj = JS_NewArray(ctx); + if (JS_IsException(obj)) + return obj; + JS_DefinePropertyValueUint32(ctx, obj, 0, JS_NewInt32(ctx, info.dwSize.X), JS_PROP_C_W_E); + JS_DefinePropertyValueUint32(ctx, obj, 1, JS_NewInt32(ctx, info.dwSize.Y), JS_PROP_C_W_E); + return obj; +} + +/* Windows 10 built-in VT100 emulation */ +#define __ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 +#define __ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 + +static JSValue js_os_ttySetRaw(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int fd; + HANDLE handle; + + if (JS_ToInt32(ctx, &fd, argv[0])) + return JS_EXCEPTION; + handle = (HANDLE)_get_osfhandle(fd); + SetConsoleMode(handle, ENABLE_WINDOW_INPUT | __ENABLE_VIRTUAL_TERMINAL_INPUT); + _setmode(fd, _O_BINARY); + if (fd == 0) { + handle = (HANDLE)_get_osfhandle(1); /* corresponding output */ + SetConsoleMode(handle, ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT | __ENABLE_VIRTUAL_TERMINAL_PROCESSING); + } + return JS_UNDEFINED; +} +#else +static JSValue js_os_ttyGetWinSize(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int fd; + struct winsize ws; + JSValue obj; + + if (JS_ToInt32(ctx, &fd, argv[0])) + return JS_EXCEPTION; + if (ioctl(fd, TIOCGWINSZ, &ws) == 0 && + ws.ws_col >= 4 && ws.ws_row >= 4) { + obj = JS_NewArray(ctx); + if (JS_IsException(obj)) + return obj; + JS_DefinePropertyValueUint32(ctx, obj, 0, JS_NewInt32(ctx, ws.ws_col), JS_PROP_C_W_E); + JS_DefinePropertyValueUint32(ctx, obj, 1, JS_NewInt32(ctx, ws.ws_row), JS_PROP_C_W_E); + return obj; + } else { + return JS_NULL; + } +} + +static struct termios oldtty; + +static void term_exit(void) +{ + tcsetattr(0, TCSANOW, &oldtty); +} + +/* XXX: should add a way to go back to normal mode */ +static JSValue js_os_ttySetRaw(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + struct termios tty; + int fd; + + if (JS_ToInt32(ctx, &fd, argv[0])) + return JS_EXCEPTION; + + memset(&tty, 0, sizeof(tty)); + tcgetattr(fd, &tty); + oldtty = tty; + + tty.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP + |INLCR|IGNCR|ICRNL|IXON); + tty.c_oflag |= OPOST; + tty.c_lflag &= ~(ECHO|ECHONL|ICANON|IEXTEN); + tty.c_cflag &= ~(CSIZE|PARENB); + tty.c_cflag |= CS8; + tty.c_cc[VMIN] = 1; + tty.c_cc[VTIME] = 0; + + tcsetattr(fd, TCSANOW, &tty); + + atexit(term_exit); + return JS_UNDEFINED; +} + +#endif /* !_WIN32 */ + +static JSValue js_os_remove(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *filename; + int ret; + + filename = JS_ToCString(ctx, argv[0]); + if (!filename) + return JS_EXCEPTION; +#if defined(_WIN32) + { + struct stat st; + if (stat(filename, &st) == 0 && S_ISDIR(st.st_mode)) { + ret = rmdir(filename); + } else { + ret = unlink(filename); + } + } +#else + ret = remove(filename); +#endif + ret = js_get_errno(ret); + JS_FreeCString(ctx, filename); + return JS_NewInt32(ctx, ret); +} + +static JSValue js_os_rename(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *oldpath, *newpath; + int ret; + + oldpath = JS_ToCString(ctx, argv[0]); + if (!oldpath) + return JS_EXCEPTION; + newpath = JS_ToCString(ctx, argv[1]); + if (!newpath) { + JS_FreeCString(ctx, oldpath); + return JS_EXCEPTION; + } + ret = js_get_errno(rename(oldpath, newpath)); + JS_FreeCString(ctx, oldpath); + JS_FreeCString(ctx, newpath); + return JS_NewInt32(ctx, ret); +} + +static BOOL is_main_thread(JSRuntime *rt) +{ + JSThreadState *ts = JS_GetRuntimeOpaque(rt); + return !ts->recv_pipe; +} + +static JSOSRWHandler *find_rh(JSThreadState *ts, int fd) +{ + JSOSRWHandler *rh; + struct list_head *el; + + list_for_each(el, &ts->os_rw_handlers) { + rh = list_entry(el, JSOSRWHandler, link); + if (rh->fd == fd) + return rh; + } + return NULL; +} + +static void free_rw_handler(JSRuntime *rt, JSOSRWHandler *rh) +{ + int i; + list_del(&rh->link); + for(i = 0; i < 2; i++) { + JS_FreeValueRT(rt, rh->rw_func[i]); + } + js_free_rt(rt, rh); +} + +static JSValue js_os_setReadHandler(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv, int magic) +{ + JSRuntime *rt = JS_GetRuntime(ctx); + JSThreadState *ts = JS_GetRuntimeOpaque(rt); + JSOSRWHandler *rh; + int fd; + JSValueConst func; + + if (JS_ToInt32(ctx, &fd, argv[0])) + return JS_EXCEPTION; + func = argv[1]; + if (JS_IsNull(func)) { + rh = find_rh(ts, fd); + if (rh) { + JS_FreeValue(ctx, rh->rw_func[magic]); + rh->rw_func[magic] = JS_NULL; + if (JS_IsNull(rh->rw_func[0]) && + JS_IsNull(rh->rw_func[1])) { + /* remove the entry */ + free_rw_handler(JS_GetRuntime(ctx), rh); + } + } + } else { + if (!JS_IsFunction(ctx, func)) + return JS_ThrowTypeError(ctx, "not a function"); + rh = find_rh(ts, fd); + if (!rh) { + rh = js_mallocz(ctx, sizeof(*rh)); + if (!rh) + return JS_EXCEPTION; + rh->fd = fd; + rh->rw_func[0] = JS_NULL; + rh->rw_func[1] = JS_NULL; + list_add_tail(&rh->link, &ts->os_rw_handlers); + } + JS_FreeValue(ctx, rh->rw_func[magic]); + rh->rw_func[magic] = JS_DupValue(ctx, func); + } + return JS_UNDEFINED; +} + +static JSOSSignalHandler *find_sh(JSThreadState *ts, int sig_num) +{ + JSOSSignalHandler *sh; + struct list_head *el; + list_for_each(el, &ts->os_signal_handlers) { + sh = list_entry(el, JSOSSignalHandler, link); + if (sh->sig_num == sig_num) + return sh; + } + return NULL; +} + +static void free_sh(JSRuntime *rt, JSOSSignalHandler *sh) +{ + list_del(&sh->link); + JS_FreeValueRT(rt, sh->func); + js_free_rt(rt, sh); +} + +static void os_signal_handler(int sig_num) +{ + os_pending_signals |= ((uint64_t)1 << sig_num); +} + +#if defined(_WIN32) +typedef void (*sighandler_t)(int sig_num); +#endif + +static JSValue js_os_signal(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSRuntime *rt = JS_GetRuntime(ctx); + JSThreadState *ts = JS_GetRuntimeOpaque(rt); + JSOSSignalHandler *sh; + uint32_t sig_num; + JSValueConst func; + sighandler_t handler; + + if (!is_main_thread(rt)) + return JS_ThrowTypeError(ctx, "signal handler can only be set in the main thread"); + + if (JS_ToUint32(ctx, &sig_num, argv[0])) + return JS_EXCEPTION; + if (sig_num >= 64) + return JS_ThrowRangeError(ctx, "invalid signal number"); + func = argv[1]; + /* func = null: SIG_DFL, func = undefined, SIG_IGN */ + if (JS_IsNull(func) || JS_IsUndefined(func)) { + sh = find_sh(ts, sig_num); + if (sh) { + free_sh(JS_GetRuntime(ctx), sh); + } + if (JS_IsNull(func)) + handler = SIG_DFL; + else + handler = SIG_IGN; + signal(sig_num, handler); + } else { + if (!JS_IsFunction(ctx, func)) + return JS_ThrowTypeError(ctx, "not a function"); + sh = find_sh(ts, sig_num); + if (!sh) { + sh = js_mallocz(ctx, sizeof(*sh)); + if (!sh) + return JS_EXCEPTION; + sh->sig_num = sig_num; + list_add_tail(&sh->link, &ts->os_signal_handlers); + } + JS_FreeValue(ctx, sh->func); + sh->func = JS_DupValue(ctx, func); + signal(sig_num, os_signal_handler); + } + return JS_UNDEFINED; +} + +#if defined(__linux__) || defined(__APPLE__) +static int64_t get_time_ms(void) +{ + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return (uint64_t)ts.tv_sec * 1000 + (ts.tv_nsec / 1000000); +} +#else +/* more portable, but does not work if the date is updated */ +static int64_t get_time_ms(void) +{ + struct timeval tv; + gettimeofday(&tv, NULL); + return (int64_t)tv.tv_sec * 1000 + (tv.tv_usec / 1000); +} +#endif + +static void unlink_timer(JSRuntime *rt, JSOSTimer *th) +{ + if (th->link.prev) { + list_del(&th->link); + th->link.prev = th->link.next = NULL; + } +} + +static void free_timer(JSRuntime *rt, JSOSTimer *th) +{ + JS_FreeValueRT(rt, th->func); + js_free_rt(rt, th); +} + +static JSClassID js_os_timer_class_id; + +static void js_os_timer_finalizer(JSRuntime *rt, JSValue val) +{ + JSOSTimer *th = JS_GetOpaque(val, js_os_timer_class_id); + if (th) { + th->has_object = FALSE; + if (!th->link.prev) + free_timer(rt, th); + } +} + +static void js_os_timer_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func) +{ + JSOSTimer *th = JS_GetOpaque(val, js_os_timer_class_id); + if (th) { + JS_MarkValue(rt, th->func, mark_func); + } +} + +static JSValue js_os_setTimeout(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSRuntime *rt = JS_GetRuntime(ctx); + JSThreadState *ts = JS_GetRuntimeOpaque(rt); + int64_t delay; + JSValueConst func; + JSOSTimer *th; + JSValue obj; + + func = argv[0]; + if (!JS_IsFunction(ctx, func)) + return JS_ThrowTypeError(ctx, "not a function"); + if (JS_ToInt64(ctx, &delay, argv[1])) + return JS_EXCEPTION; + obj = JS_NewObjectClass(ctx, js_os_timer_class_id); + if (JS_IsException(obj)) + return obj; + th = js_mallocz(ctx, sizeof(*th)); + if (!th) { + JS_FreeValue(ctx, obj); + return JS_EXCEPTION; + } + th->has_object = TRUE; + th->timeout = get_time_ms() + delay; + th->func = JS_DupValue(ctx, func); + list_add_tail(&th->link, &ts->os_timers); + JS_SetOpaque(obj, th); + return obj; +} + +static JSValue js_os_clearTimeout(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSOSTimer *th = JS_GetOpaque2(ctx, argv[0], js_os_timer_class_id); + if (!th) + return JS_EXCEPTION; + unlink_timer(JS_GetRuntime(ctx), th); + return JS_UNDEFINED; +} + +static JSClassDef js_os_timer_class = { + "OSTimer", + .finalizer = js_os_timer_finalizer, + .gc_mark = js_os_timer_mark, +}; + +static void call_handler(JSContext *ctx, JSValueConst func) +{ + JSValue ret, func1; + /* 'func' might be destroyed when calling itself (if it frees the + handler), so must take extra care */ + func1 = JS_DupValue(ctx, func); + ret = JS_Call(ctx, func1, JS_UNDEFINED, 0, NULL); + JS_FreeValue(ctx, func1); + if (JS_IsException(ret)) + js_std_dump_error(ctx); + JS_FreeValue(ctx, ret); +} + +#if defined(_WIN32) + +static int js_os_poll(JSContext *ctx) +{ + JSRuntime *rt = JS_GetRuntime(ctx); + JSThreadState *ts = JS_GetRuntimeOpaque(rt); + int min_delay, console_fd; + int64_t cur_time, delay; + JSOSRWHandler *rh; + struct list_head *el; + + /* XXX: handle signals if useful */ + + if (list_empty(&ts->os_rw_handlers) && list_empty(&ts->os_timers)) + return -1; /* no more events */ + + /* XXX: only timers and basic console input are supported */ + if (!list_empty(&ts->os_timers)) { + cur_time = get_time_ms(); + min_delay = 10000; + list_for_each(el, &ts->os_timers) { + JSOSTimer *th = list_entry(el, JSOSTimer, link); + delay = th->timeout - cur_time; + if (delay <= 0) { + JSValue func; + /* the timer expired */ + func = th->func; + th->func = JS_UNDEFINED; + unlink_timer(rt, th); + if (!th->has_object) + free_timer(rt, th); + call_handler(ctx, func); + JS_FreeValue(ctx, func); + return 0; + } else if (delay < min_delay) { + min_delay = delay; + } + } + } else { + min_delay = -1; + } + + console_fd = -1; + list_for_each(el, &ts->os_rw_handlers) { + rh = list_entry(el, JSOSRWHandler, link); + if (rh->fd == 0 && !JS_IsNull(rh->rw_func[0])) { + console_fd = rh->fd; + break; + } + } + + if (console_fd >= 0) { + DWORD ti, ret; + HANDLE handle; + if (min_delay == -1) + ti = INFINITE; + else + ti = min_delay; + handle = (HANDLE)_get_osfhandle(console_fd); + ret = WaitForSingleObject(handle, ti); + if (ret == WAIT_OBJECT_0) { + list_for_each(el, &ts->os_rw_handlers) { + rh = list_entry(el, JSOSRWHandler, link); + if (rh->fd == console_fd && !JS_IsNull(rh->rw_func[0])) { + call_handler(ctx, rh->rw_func[0]); + /* must stop because the list may have been modified */ + break; + } + } + } + } else { + Sleep(min_delay); + } + return 0; +} +#else + +#ifdef USE_WORKER + +static void js_free_message(JSWorkerMessage *msg); + +/* return 1 if a message was handled, 0 if no message */ +static int handle_posted_message(JSRuntime *rt, JSContext *ctx, + JSWorkerMessageHandler *port) +{ + JSWorkerMessagePipe *ps = port->recv_pipe; + int ret; + struct list_head *el; + JSWorkerMessage *msg; + JSValue obj, data_obj, func, retval; + + pthread_mutex_lock(&ps->mutex); + if (!list_empty(&ps->msg_queue)) { + el = ps->msg_queue.next; + msg = list_entry(el, JSWorkerMessage, link); + + /* remove the message from the queue */ + list_del(&msg->link); + + if (list_empty(&ps->msg_queue)) { + uint8_t buf[16]; + int ret; + for(;;) { + ret = read(ps->read_fd, buf, sizeof(buf)); + if (ret >= 0) + break; + if (errno != EAGAIN && errno != EINTR) + break; + } + } + + pthread_mutex_unlock(&ps->mutex); + + data_obj = JS_ReadObject(ctx, msg->data, msg->data_len, + JS_READ_OBJ_SAB | JS_READ_OBJ_REFERENCE); + + js_free_message(msg); + + if (JS_IsException(data_obj)) + goto fail; + obj = JS_NewObject(ctx); + if (JS_IsException(obj)) { + JS_FreeValue(ctx, data_obj); + goto fail; + } + JS_DefinePropertyValueStr(ctx, obj, "data", data_obj, JS_PROP_C_W_E); + + /* 'func' might be destroyed when calling itself (if it frees the + handler), so must take extra care */ + func = JS_DupValue(ctx, port->on_message_func); + retval = JS_Call(ctx, func, JS_UNDEFINED, 1, (JSValueConst *)&obj); + JS_FreeValue(ctx, obj); + JS_FreeValue(ctx, func); + if (JS_IsException(retval)) { + fail: + js_std_dump_error(ctx); + } else { + JS_FreeValue(ctx, retval); + } + ret = 1; + } else { + pthread_mutex_unlock(&ps->mutex); + ret = 0; + } + return ret; +} +#else +static int handle_posted_message(JSRuntime *rt, JSContext *ctx, + JSWorkerMessageHandler *port) +{ + return 0; +} +#endif + +static int js_os_poll(JSContext *ctx) +{ + JSRuntime *rt = JS_GetRuntime(ctx); + JSThreadState *ts = JS_GetRuntimeOpaque(rt); + int ret, fd_max, min_delay; + int64_t cur_time, delay; + fd_set rfds, wfds; + JSOSRWHandler *rh; + struct list_head *el; + struct timeval tv, *tvp; + + /* only check signals in the main thread */ + if (!ts->recv_pipe && + unlikely(os_pending_signals != 0)) { + JSOSSignalHandler *sh; + uint64_t mask; + + list_for_each(el, &ts->os_signal_handlers) { + sh = list_entry(el, JSOSSignalHandler, link); + mask = (uint64_t)1 << sh->sig_num; + if (os_pending_signals & mask) { + os_pending_signals &= ~mask; + call_handler(ctx, sh->func); + return 0; + } + } + } + + if (list_empty(&ts->os_rw_handlers) && list_empty(&ts->os_timers) && + list_empty(&ts->port_list)) + return -1; /* no more events */ + + if (!list_empty(&ts->os_timers)) { + cur_time = get_time_ms(); + min_delay = 10000; + list_for_each(el, &ts->os_timers) { + JSOSTimer *th = list_entry(el, JSOSTimer, link); + delay = th->timeout - cur_time; + if (delay <= 0) { + JSValue func; + /* the timer expired */ + func = th->func; + th->func = JS_UNDEFINED; + unlink_timer(rt, th); + if (!th->has_object) + free_timer(rt, th); + call_handler(ctx, func); + JS_FreeValue(ctx, func); + return 0; + } else if (delay < min_delay) { + min_delay = delay; + } + } + tv.tv_sec = min_delay / 1000; + tv.tv_usec = (min_delay % 1000) * 1000; + tvp = &tv; + } else { + tvp = NULL; + } + + FD_ZERO(&rfds); + FD_ZERO(&wfds); + fd_max = -1; + list_for_each(el, &ts->os_rw_handlers) { + rh = list_entry(el, JSOSRWHandler, link); + fd_max = max_int(fd_max, rh->fd); + if (!JS_IsNull(rh->rw_func[0])) + FD_SET(rh->fd, &rfds); + if (!JS_IsNull(rh->rw_func[1])) + FD_SET(rh->fd, &wfds); + } + + list_for_each(el, &ts->port_list) { + JSWorkerMessageHandler *port = list_entry(el, JSWorkerMessageHandler, link); + if (!JS_IsNull(port->on_message_func)) { + JSWorkerMessagePipe *ps = port->recv_pipe; + fd_max = max_int(fd_max, ps->read_fd); + FD_SET(ps->read_fd, &rfds); + } + } + + ret = select(fd_max + 1, &rfds, &wfds, NULL, tvp); + if (ret > 0) { + list_for_each(el, &ts->os_rw_handlers) { + rh = list_entry(el, JSOSRWHandler, link); + if (!JS_IsNull(rh->rw_func[0]) && + FD_ISSET(rh->fd, &rfds)) { + call_handler(ctx, rh->rw_func[0]); + /* must stop because the list may have been modified */ + goto done; + } + if (!JS_IsNull(rh->rw_func[1]) && + FD_ISSET(rh->fd, &wfds)) { + call_handler(ctx, rh->rw_func[1]); + /* must stop because the list may have been modified */ + goto done; + } + } + + list_for_each(el, &ts->port_list) { + JSWorkerMessageHandler *port = list_entry(el, JSWorkerMessageHandler, link); + if (!JS_IsNull(port->on_message_func)) { + JSWorkerMessagePipe *ps = port->recv_pipe; + if (FD_ISSET(ps->read_fd, &rfds)) { + if (handle_posted_message(rt, ctx, port)) + goto done; + } + } + } + } + done: + return 0; +} +#endif /* !_WIN32 */ + +static JSValue make_obj_error(JSContext *ctx, + JSValue obj, + int err) +{ + JSValue arr; + if (JS_IsException(obj)) + return obj; + arr = JS_NewArray(ctx); + if (JS_IsException(arr)) + return JS_EXCEPTION; + JS_DefinePropertyValueUint32(ctx, arr, 0, obj, + JS_PROP_C_W_E); + JS_DefinePropertyValueUint32(ctx, arr, 1, JS_NewInt32(ctx, err), + JS_PROP_C_W_E); + return arr; +} + +static JSValue make_string_error(JSContext *ctx, + const char *buf, + int err) +{ + return make_obj_error(ctx, JS_NewString(ctx, buf), err); +} + +/* return [cwd, errorcode] */ +static JSValue js_os_getcwd(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + char buf[PATH_MAX]; + int err; + + if (!getcwd(buf, sizeof(buf))) { + buf[0] = '\0'; + err = errno; + } else { + err = 0; + } + return make_string_error(ctx, buf, err); +} + +static JSValue js_os_chdir(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *target; + int err; + + target = JS_ToCString(ctx, argv[0]); + if (!target) + return JS_EXCEPTION; + err = js_get_errno(chdir(target)); + JS_FreeCString(ctx, target); + return JS_NewInt32(ctx, err); +} + +static JSValue js_os_mkdir(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int mode, ret; + const char *path; + + if (argc >= 2) { + if (JS_ToInt32(ctx, &mode, argv[1])) + return JS_EXCEPTION; + } else { + mode = 0777; + } + path = JS_ToCString(ctx, argv[0]); + if (!path) + return JS_EXCEPTION; +#if defined(_WIN32) + (void)mode; + ret = js_get_errno(mkdir(path)); +#else + ret = js_get_errno(mkdir(path, mode)); +#endif + JS_FreeCString(ctx, path); + return JS_NewInt32(ctx, ret); +} + +/* return [array, errorcode] */ +static JSValue js_os_readdir(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *path; + DIR *f; + struct dirent *d; + JSValue obj; + int err; + uint32_t len; + + path = JS_ToCString(ctx, argv[0]); + if (!path) + return JS_EXCEPTION; + obj = JS_NewArray(ctx); + if (JS_IsException(obj)) { + JS_FreeCString(ctx, path); + return JS_EXCEPTION; + } + f = opendir(path); + if (!f) + err = errno; + else + err = 0; + JS_FreeCString(ctx, path); + if (!f) + goto done; + len = 0; + for(;;) { + errno = 0; + d = readdir(f); + if (!d) { + err = errno; + break; + } + JS_DefinePropertyValueUint32(ctx, obj, len++, + JS_NewString(ctx, d->d_name), + JS_PROP_C_W_E); + } + closedir(f); + done: + return make_obj_error(ctx, obj, err); +} + +#if !defined(_WIN32) +static int64_t timespec_to_ms(const struct timespec *tv) +{ + return (int64_t)tv->tv_sec * 1000 + (tv->tv_nsec / 1000000); +} +#endif + +/* return [obj, errcode] */ +static JSValue js_os_stat(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv, int is_lstat) +{ + const char *path; + int err, res; + struct stat st; + JSValue obj; + + path = JS_ToCString(ctx, argv[0]); + if (!path) + return JS_EXCEPTION; +#if defined(_WIN32) + res = stat(path, &st); +#else + if (is_lstat) + res = lstat(path, &st); + else + res = stat(path, &st); +#endif + JS_FreeCString(ctx, path); + if (res < 0) { + err = errno; + obj = JS_NULL; + } else { + err = 0; + obj = JS_NewObject(ctx); + if (JS_IsException(obj)) + return JS_EXCEPTION; + JS_DefinePropertyValueStr(ctx, obj, "dev", + JS_NewInt64(ctx, st.st_dev), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, obj, "ino", + JS_NewInt64(ctx, st.st_ino), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, obj, "mode", + JS_NewInt32(ctx, st.st_mode), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, obj, "nlink", + JS_NewInt64(ctx, st.st_nlink), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, obj, "uid", + JS_NewInt64(ctx, st.st_uid), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, obj, "gid", + JS_NewInt64(ctx, st.st_gid), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, obj, "rdev", + JS_NewInt64(ctx, st.st_rdev), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, obj, "size", + JS_NewInt64(ctx, st.st_size), + JS_PROP_C_W_E); +#if !defined(_WIN32) + JS_DefinePropertyValueStr(ctx, obj, "blocks", + JS_NewInt64(ctx, st.st_blocks), + JS_PROP_C_W_E); +#endif +#if defined(_WIN32) + JS_DefinePropertyValueStr(ctx, obj, "atime", + JS_NewInt64(ctx, (int64_t)st.st_atime * 1000), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, obj, "mtime", + JS_NewInt64(ctx, (int64_t)st.st_mtime * 1000), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, obj, "ctime", + JS_NewInt64(ctx, (int64_t)st.st_ctime * 1000), + JS_PROP_C_W_E); +#elif defined(__APPLE__) + JS_DefinePropertyValueStr(ctx, obj, "atime", + JS_NewInt64(ctx, timespec_to_ms(&st.st_atimespec)), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, obj, "mtime", + JS_NewInt64(ctx, timespec_to_ms(&st.st_mtimespec)), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, obj, "ctime", + JS_NewInt64(ctx, timespec_to_ms(&st.st_ctimespec)), + JS_PROP_C_W_E); +#else + JS_DefinePropertyValueStr(ctx, obj, "atime", + JS_NewInt64(ctx, timespec_to_ms(&st.st_atim)), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, obj, "mtime", + JS_NewInt64(ctx, timespec_to_ms(&st.st_mtim)), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, obj, "ctime", + JS_NewInt64(ctx, timespec_to_ms(&st.st_ctim)), + JS_PROP_C_W_E); +#endif + } + return make_obj_error(ctx, obj, err); +} + +#if !defined(_WIN32) +static void ms_to_timeval(struct timeval *tv, uint64_t v) +{ + tv->tv_sec = v / 1000; + tv->tv_usec = (v % 1000) * 1000; +} +#endif + +static JSValue js_os_utimes(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *path; + int64_t atime, mtime; + int ret; + + if (JS_ToInt64(ctx, &atime, argv[1])) + return JS_EXCEPTION; + if (JS_ToInt64(ctx, &mtime, argv[2])) + return JS_EXCEPTION; + path = JS_ToCString(ctx, argv[0]); + if (!path) + return JS_EXCEPTION; +#if defined(_WIN32) + { + struct _utimbuf times; + times.actime = atime / 1000; + times.modtime = mtime / 1000; + ret = js_get_errno(_utime(path, ×)); + } +#else + { + struct timeval times[2]; + ms_to_timeval(×[0], atime); + ms_to_timeval(×[1], mtime); + ret = js_get_errno(utimes(path, times)); + } +#endif + JS_FreeCString(ctx, path); + return JS_NewInt32(ctx, ret); +} + +/* sleep(delay_ms) */ +static JSValue js_os_sleep(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int64_t delay; + int ret; + + if (JS_ToInt64(ctx, &delay, argv[0])) + return JS_EXCEPTION; + if (delay < 0) + delay = 0; +#if defined(_WIN32) + { + if (delay > INT32_MAX) + delay = INT32_MAX; + Sleep(delay); + ret = 0; + } +#else + { + struct timespec ts; + + ts.tv_sec = delay / 1000; + ts.tv_nsec = (delay % 1000) * 1000000; + ret = js_get_errno(nanosleep(&ts, NULL)); + } +#endif + return JS_NewInt32(ctx, ret); +} + +#if defined(_WIN32) +static char *realpath(const char *path, char *buf) +{ + if (!_fullpath(buf, path, PATH_MAX)) { + errno = ENOENT; + return NULL; + } else { + return buf; + } +} +#endif + +/* return [path, errorcode] */ +static JSValue js_os_realpath(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *path; + char buf[PATH_MAX], *res; + int err; + + path = JS_ToCString(ctx, argv[0]); + if (!path) + return JS_EXCEPTION; + res = realpath(path, buf); + JS_FreeCString(ctx, path); + if (!res) { + buf[0] = '\0'; + err = errno; + } else { + err = 0; + } + return make_string_error(ctx, buf, err); +} + +#if !defined(_WIN32) +static JSValue js_os_symlink(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *target, *linkpath; + int err; + + target = JS_ToCString(ctx, argv[0]); + if (!target) + return JS_EXCEPTION; + linkpath = JS_ToCString(ctx, argv[1]); + if (!linkpath) { + JS_FreeCString(ctx, target); + return JS_EXCEPTION; + } + err = js_get_errno(symlink(target, linkpath)); + JS_FreeCString(ctx, target); + JS_FreeCString(ctx, linkpath); + return JS_NewInt32(ctx, err); +} + +/* return [path, errorcode] */ +static JSValue js_os_readlink(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + const char *path; + char buf[PATH_MAX]; + int err; + ssize_t res; + + path = JS_ToCString(ctx, argv[0]); + if (!path) + return JS_EXCEPTION; + res = readlink(path, buf, sizeof(buf) - 1); + if (res < 0) { + buf[0] = '\0'; + err = errno; + } else { + buf[res] = '\0'; + err = 0; + } + JS_FreeCString(ctx, path); + return make_string_error(ctx, buf, err); +} + +static char **build_envp(JSContext *ctx, JSValueConst obj) +{ + uint32_t len, i; + JSPropertyEnum *tab; + char **envp, *pair; + const char *key, *str; + JSValue val; + size_t key_len, str_len; + + if (JS_GetOwnPropertyNames(ctx, &tab, &len, obj, + JS_GPN_STRING_MASK | JS_GPN_ENUM_ONLY) < 0) + return NULL; + envp = js_mallocz(ctx, sizeof(envp[0]) * ((size_t)len + 1)); + if (!envp) + goto fail; + for(i = 0; i < len; i++) { + val = JS_GetProperty(ctx, obj, tab[i].atom); + if (JS_IsException(val)) + goto fail; + str = JS_ToCString(ctx, val); + JS_FreeValue(ctx, val); + if (!str) + goto fail; + key = JS_AtomToCString(ctx, tab[i].atom); + if (!key) { + JS_FreeCString(ctx, str); + goto fail; + } + key_len = strlen(key); + str_len = strlen(str); + pair = js_malloc(ctx, key_len + str_len + 2); + if (!pair) { + JS_FreeCString(ctx, key); + JS_FreeCString(ctx, str); + goto fail; + } + memcpy(pair, key, key_len); + pair[key_len] = '='; + memcpy(pair + key_len + 1, str, str_len); + pair[key_len + 1 + str_len] = '\0'; + envp[i] = pair; + JS_FreeCString(ctx, key); + JS_FreeCString(ctx, str); + } + done: + for(i = 0; i < len; i++) + JS_FreeAtom(ctx, tab[i].atom); + js_free(ctx, tab); + return envp; + fail: + if (envp) { + for(i = 0; i < len; i++) + js_free(ctx, envp[i]); + js_free(ctx, envp); + envp = NULL; + } + goto done; +} + +/* execvpe is not available on non GNU systems */ +static int my_execvpe(const char *filename, char **argv, char **envp) +{ + char *path, *p, *p_next, *p1; + char buf[PATH_MAX]; + size_t filename_len, path_len; + BOOL eacces_error; + + filename_len = strlen(filename); + if (filename_len == 0) { + errno = ENOENT; + return -1; + } + if (strchr(filename, '/')) + return execve(filename, argv, envp); + + path = getenv("PATH"); + if (!path) + path = (char *)"/bin:/usr/bin"; + eacces_error = FALSE; + p = path; + for(p = path; p != NULL; p = p_next) { + p1 = strchr(p, ':'); + if (!p1) { + p_next = NULL; + path_len = strlen(p); + } else { + p_next = p1 + 1; + path_len = p1 - p; + } + /* path too long */ + if ((path_len + 1 + filename_len + 1) > PATH_MAX) + continue; + memcpy(buf, p, path_len); + buf[path_len] = '/'; + memcpy(buf + path_len + 1, filename, filename_len); + buf[path_len + 1 + filename_len] = '\0'; + + execve(buf, argv, envp); + + switch(errno) { + case EACCES: + eacces_error = TRUE; + break; + case ENOENT: + case ENOTDIR: + break; + default: + return -1; + } + } + if (eacces_error) + errno = EACCES; + return -1; +} + +/* exec(args[, options]) -> exitcode */ +static JSValue js_os_exec(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSValueConst options, args = argv[0]; + JSValue val, ret_val; + const char **exec_argv, *file = NULL, *str, *cwd = NULL; + char **envp = environ; + uint32_t exec_argc, i; + int ret, pid, status; + BOOL block_flag = TRUE, use_path = TRUE; + static const char *std_name[3] = { "stdin", "stdout", "stderr" }; + int std_fds[3]; + uint32_t uid = -1, gid = -1; + + val = JS_GetPropertyStr(ctx, args, "length"); + if (JS_IsException(val)) + return JS_EXCEPTION; + ret = JS_ToUint32(ctx, &exec_argc, val); + JS_FreeValue(ctx, val); + if (ret) + return JS_EXCEPTION; + /* arbitrary limit to avoid overflow */ + if (exec_argc < 1 || exec_argc > 65535) { + return JS_ThrowTypeError(ctx, "invalid number of arguments"); + } + exec_argv = js_mallocz(ctx, sizeof(exec_argv[0]) * (exec_argc + 1)); + if (!exec_argv) + return JS_EXCEPTION; + for(i = 0; i < exec_argc; i++) { + val = JS_GetPropertyUint32(ctx, args, i); + if (JS_IsException(val)) + goto exception; + str = JS_ToCString(ctx, val); + JS_FreeValue(ctx, val); + if (!str) + goto exception; + exec_argv[i] = str; + } + exec_argv[exec_argc] = NULL; + + for(i = 0; i < 3; i++) + std_fds[i] = i; + + /* get the options, if any */ + if (argc >= 2) { + options = argv[1]; + + if (get_bool_option(ctx, &block_flag, options, "block")) + goto exception; + if (get_bool_option(ctx, &use_path, options, "usePath")) + goto exception; + + val = JS_GetPropertyStr(ctx, options, "file"); + if (JS_IsException(val)) + goto exception; + if (!JS_IsUndefined(val)) { + file = JS_ToCString(ctx, val); + JS_FreeValue(ctx, val); + if (!file) + goto exception; + } + + val = JS_GetPropertyStr(ctx, options, "cwd"); + if (JS_IsException(val)) + goto exception; + if (!JS_IsUndefined(val)) { + cwd = JS_ToCString(ctx, val); + JS_FreeValue(ctx, val); + if (!cwd) + goto exception; + } + + /* stdin/stdout/stderr handles */ + for(i = 0; i < 3; i++) { + val = JS_GetPropertyStr(ctx, options, std_name[i]); + if (JS_IsException(val)) + goto exception; + if (!JS_IsUndefined(val)) { + int fd; + ret = JS_ToInt32(ctx, &fd, val); + JS_FreeValue(ctx, val); + if (ret) + goto exception; + std_fds[i] = fd; + } + } + + val = JS_GetPropertyStr(ctx, options, "env"); + if (JS_IsException(val)) + goto exception; + if (!JS_IsUndefined(val)) { + envp = build_envp(ctx, val); + JS_FreeValue(ctx, val); + if (!envp) + goto exception; + } + + val = JS_GetPropertyStr(ctx, options, "uid"); + if (JS_IsException(val)) + goto exception; + if (!JS_IsUndefined(val)) { + ret = JS_ToUint32(ctx, &uid, val); + JS_FreeValue(ctx, val); + if (ret) + goto exception; + } + + val = JS_GetPropertyStr(ctx, options, "gid"); + if (JS_IsException(val)) + goto exception; + if (!JS_IsUndefined(val)) { + ret = JS_ToUint32(ctx, &gid, val); + JS_FreeValue(ctx, val); + if (ret) + goto exception; + } + } + + pid = fork(); + if (pid < 0) { + JS_ThrowTypeError(ctx, "fork error"); + goto exception; + } + if (pid == 0) { + /* child */ + int fd_max = sysconf(_SC_OPEN_MAX); + + /* remap the stdin/stdout/stderr handles if necessary */ + for(i = 0; i < 3; i++) { + if (std_fds[i] != i) { + if (dup2(std_fds[i], i) < 0) + _exit(127); + } + } + + for(i = 3; i < fd_max; i++) + close(i); + if (cwd) { + if (chdir(cwd) < 0) + _exit(127); + } + if (uid != -1) { + if (setuid(uid) < 0) + _exit(127); + } + if (gid != -1) { + if (setgid(gid) < 0) + _exit(127); + } + + if (!file) + file = exec_argv[0]; + if (use_path) + ret = my_execvpe(file, (char **)exec_argv, envp); + else + ret = execve(file, (char **)exec_argv, envp); + _exit(127); + } + /* parent */ + if (block_flag) { + for(;;) { + ret = waitpid(pid, &status, 0); + if (ret == pid) { + if (WIFEXITED(status)) { + ret = WEXITSTATUS(status); + break; + } else if (WIFSIGNALED(status)) { + ret = -WTERMSIG(status); + break; + } + } + } + } else { + ret = pid; + } + ret_val = JS_NewInt32(ctx, ret); + done: + JS_FreeCString(ctx, file); + JS_FreeCString(ctx, cwd); + for(i = 0; i < exec_argc; i++) + JS_FreeCString(ctx, exec_argv[i]); + js_free(ctx, exec_argv); + if (envp != environ) { + char **p; + p = envp; + while (*p != NULL) { + js_free(ctx, *p); + p++; + } + js_free(ctx, envp); + } + return ret_val; + exception: + ret_val = JS_EXCEPTION; + goto done; +} + +/* waitpid(pid, block) -> [pid, status] */ +static JSValue js_os_waitpid(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int pid, status, options, ret; + JSValue obj; + + if (JS_ToInt32(ctx, &pid, argv[0])) + return JS_EXCEPTION; + if (JS_ToInt32(ctx, &options, argv[1])) + return JS_EXCEPTION; + + ret = waitpid(pid, &status, options); + if (ret < 0) { + ret = -errno; + status = 0; + } + + obj = JS_NewArray(ctx); + if (JS_IsException(obj)) + return obj; + JS_DefinePropertyValueUint32(ctx, obj, 0, JS_NewInt32(ctx, ret), + JS_PROP_C_W_E); + JS_DefinePropertyValueUint32(ctx, obj, 1, JS_NewInt32(ctx, status), + JS_PROP_C_W_E); + return obj; +} + +/* pipe() -> [read_fd, write_fd] or null if error */ +static JSValue js_os_pipe(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int pipe_fds[2], ret; + JSValue obj; + + ret = pipe(pipe_fds); + if (ret < 0) + return JS_NULL; + obj = JS_NewArray(ctx); + if (JS_IsException(obj)) + return obj; + JS_DefinePropertyValueUint32(ctx, obj, 0, JS_NewInt32(ctx, pipe_fds[0]), + JS_PROP_C_W_E); + JS_DefinePropertyValueUint32(ctx, obj, 1, JS_NewInt32(ctx, pipe_fds[1]), + JS_PROP_C_W_E); + return obj; +} + +/* kill(pid, sig) */ +static JSValue js_os_kill(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int pid, sig, ret; + + if (JS_ToInt32(ctx, &pid, argv[0])) + return JS_EXCEPTION; + if (JS_ToInt32(ctx, &sig, argv[1])) + return JS_EXCEPTION; + ret = js_get_errno(kill(pid, sig)); + return JS_NewInt32(ctx, ret); +} + +/* dup(fd) */ +static JSValue js_os_dup(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int fd, ret; + + if (JS_ToInt32(ctx, &fd, argv[0])) + return JS_EXCEPTION; + ret = js_get_errno(dup(fd)); + return JS_NewInt32(ctx, ret); +} + +/* dup2(fd) */ +static JSValue js_os_dup2(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int fd, fd2, ret; + + if (JS_ToInt32(ctx, &fd, argv[0])) + return JS_EXCEPTION; + if (JS_ToInt32(ctx, &fd2, argv[1])) + return JS_EXCEPTION; + ret = js_get_errno(dup2(fd, fd2)); + return JS_NewInt32(ctx, ret); +} + +#endif /* !_WIN32 */ + +#ifdef USE_WORKER + +/* Worker */ + +typedef struct { + JSWorkerMessagePipe *recv_pipe; + JSWorkerMessagePipe *send_pipe; + JSWorkerMessageHandler *msg_handler; +} JSWorkerData; + +typedef struct { + char *filename; /* module filename */ + char *basename; /* module base name */ + JSWorkerMessagePipe *recv_pipe, *send_pipe; +} WorkerFuncArgs; + +typedef struct { + int ref_count; + uint64_t buf[0]; +} JSSABHeader; + +static JSClassID js_worker_class_id; +static JSContext *(*js_worker_new_context_func)(JSRuntime *rt); + +static int atomic_add_int(int *ptr, int v) +{ + return atomic_fetch_add((_Atomic(uint32_t) *)ptr, v) + v; +} + +/* shared array buffer allocator */ +static void *js_sab_alloc(void *opaque, size_t size) +{ + JSSABHeader *sab; + sab = malloc(sizeof(JSSABHeader) + size); + if (!sab) + return NULL; + sab->ref_count = 1; + return sab->buf; +} + +static void js_sab_free(void *opaque, void *ptr) +{ + JSSABHeader *sab; + int ref_count; + sab = (JSSABHeader *)((uint8_t *)ptr - sizeof(JSSABHeader)); + ref_count = atomic_add_int(&sab->ref_count, -1); + assert(ref_count >= 0); + if (ref_count == 0) { + free(sab); + } +} + +static void js_sab_dup(void *opaque, void *ptr) +{ + JSSABHeader *sab; + sab = (JSSABHeader *)((uint8_t *)ptr - sizeof(JSSABHeader)); + atomic_add_int(&sab->ref_count, 1); +} + +static JSWorkerMessagePipe *js_new_message_pipe(void) +{ + JSWorkerMessagePipe *ps; + int pipe_fds[2]; + + if (pipe(pipe_fds) < 0) + return NULL; + + ps = malloc(sizeof(*ps)); + if (!ps) { + close(pipe_fds[0]); + close(pipe_fds[1]); + return NULL; + } + ps->ref_count = 1; + init_list_head(&ps->msg_queue); + pthread_mutex_init(&ps->mutex, NULL); + ps->read_fd = pipe_fds[0]; + ps->write_fd = pipe_fds[1]; + return ps; +} + +static JSWorkerMessagePipe *js_dup_message_pipe(JSWorkerMessagePipe *ps) +{ + atomic_add_int(&ps->ref_count, 1); + return ps; +} + +static void js_free_message(JSWorkerMessage *msg) +{ + size_t i; + /* free the SAB */ + for(i = 0; i < msg->sab_tab_len; i++) { + js_sab_free(NULL, msg->sab_tab[i]); + } + free(msg->sab_tab); + free(msg->data); + free(msg); +} + +static void js_free_message_pipe(JSWorkerMessagePipe *ps) +{ + struct list_head *el, *el1; + JSWorkerMessage *msg; + int ref_count; + + if (!ps) + return; + + ref_count = atomic_add_int(&ps->ref_count, -1); + assert(ref_count >= 0); + if (ref_count == 0) { + list_for_each_safe(el, el1, &ps->msg_queue) { + msg = list_entry(el, JSWorkerMessage, link); + js_free_message(msg); + } + pthread_mutex_destroy(&ps->mutex); + close(ps->read_fd); + close(ps->write_fd); + free(ps); + } +} + +static void js_free_port(JSRuntime *rt, JSWorkerMessageHandler *port) +{ + if (port) { + js_free_message_pipe(port->recv_pipe); + JS_FreeValueRT(rt, port->on_message_func); + list_del(&port->link); + js_free_rt(rt, port); + } +} + +static void js_worker_finalizer(JSRuntime *rt, JSValue val) +{ + JSWorkerData *worker = JS_GetOpaque(val, js_worker_class_id); + if (worker) { + js_free_message_pipe(worker->recv_pipe); + js_free_message_pipe(worker->send_pipe); + js_free_port(rt, worker->msg_handler); + js_free_rt(rt, worker); + } +} + +static JSClassDef js_worker_class = { + "Worker", + .finalizer = js_worker_finalizer, +}; + +static void *worker_func(void *opaque) +{ + WorkerFuncArgs *args = opaque; + JSRuntime *rt; + JSThreadState *ts; + JSContext *ctx; + + rt = JS_NewRuntime(); + if (rt == NULL) { + fprintf(stderr, "JS_NewRuntime failure"); + exit(1); + } + js_std_init_handlers(rt); + + JS_SetModuleLoaderFunc(rt, NULL, js_module_loader, NULL); + + /* set the pipe to communicate with the parent */ + ts = JS_GetRuntimeOpaque(rt); + ts->recv_pipe = args->recv_pipe; + ts->send_pipe = args->send_pipe; + + /* function pointer to avoid linking the whole JS_NewContext() if + not needed */ + ctx = js_worker_new_context_func(rt); + if (ctx == NULL) { + fprintf(stderr, "JS_NewContext failure"); + } + + JS_SetCanBlock(rt, TRUE); + + js_std_add_helpers(ctx, -1, NULL); + + if (!JS_RunModule(ctx, args->basename, args->filename)) + js_std_dump_error(ctx); + free(args->filename); + free(args->basename); + free(args); + + js_std_loop(ctx); + + JS_FreeContext(ctx); + js_std_free_handlers(rt); + JS_FreeRuntime(rt); + return NULL; +} + +static JSValue js_worker_ctor_internal(JSContext *ctx, JSValueConst new_target, + JSWorkerMessagePipe *recv_pipe, + JSWorkerMessagePipe *send_pipe) +{ + JSValue obj = JS_UNDEFINED, proto; + JSWorkerData *s; + + /* create the object */ + if (JS_IsUndefined(new_target)) { + proto = JS_GetClassProto(ctx, js_worker_class_id); + } else { + proto = JS_GetPropertyStr(ctx, new_target, "prototype"); + if (JS_IsException(proto)) + goto fail; + } + obj = JS_NewObjectProtoClass(ctx, proto, js_worker_class_id); + JS_FreeValue(ctx, proto); + if (JS_IsException(obj)) + goto fail; + s = js_mallocz(ctx, sizeof(*s)); + if (!s) + goto fail; + s->recv_pipe = js_dup_message_pipe(recv_pipe); + s->send_pipe = js_dup_message_pipe(send_pipe); + + JS_SetOpaque(obj, s); + return obj; + fail: + JS_FreeValue(ctx, obj); + return JS_EXCEPTION; +} + +static JSValue js_worker_ctor(JSContext *ctx, JSValueConst new_target, + int argc, JSValueConst *argv) +{ + JSRuntime *rt = JS_GetRuntime(ctx); + WorkerFuncArgs *args = NULL; + pthread_t tid; + pthread_attr_t attr; + JSValue obj = JS_UNDEFINED; + int ret; + const char *filename = NULL, *basename; + JSAtom basename_atom; + + /* XXX: in order to avoid problems with resource liberation, we + don't support creating workers inside workers */ + if (!is_main_thread(rt)) + return JS_ThrowTypeError(ctx, "cannot create a worker inside a worker"); + + /* base name, assuming the calling function is a normal JS + function */ + basename_atom = JS_GetScriptOrModuleName(ctx, 1); + if (basename_atom == JS_ATOM_NULL) { + return JS_ThrowTypeError(ctx, "could not determine calling script or module name"); + } + basename = JS_AtomToCString(ctx, basename_atom); + JS_FreeAtom(ctx, basename_atom); + if (!basename) + goto fail; + + /* module name */ + filename = JS_ToCString(ctx, argv[0]); + if (!filename) + goto fail; + + args = malloc(sizeof(*args)); + if (!args) + goto oom_fail; + memset(args, 0, sizeof(*args)); + args->filename = strdup(filename); + args->basename = strdup(basename); + + /* ports */ + args->recv_pipe = js_new_message_pipe(); + if (!args->recv_pipe) + goto oom_fail; + args->send_pipe = js_new_message_pipe(); + if (!args->send_pipe) + goto oom_fail; + + obj = js_worker_ctor_internal(ctx, new_target, + args->send_pipe, args->recv_pipe); + if (JS_IsException(obj)) + goto fail; + + pthread_attr_init(&attr); + /* no join at the end */ + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + ret = pthread_create(&tid, &attr, worker_func, args); + pthread_attr_destroy(&attr); + if (ret != 0) { + JS_ThrowTypeError(ctx, "could not create worker"); + goto fail; + } + JS_FreeCString(ctx, basename); + JS_FreeCString(ctx, filename); + return obj; + oom_fail: + JS_ThrowOutOfMemory(ctx); + fail: + JS_FreeCString(ctx, basename); + JS_FreeCString(ctx, filename); + if (args) { + free(args->filename); + free(args->basename); + js_free_message_pipe(args->recv_pipe); + js_free_message_pipe(args->send_pipe); + free(args); + } + JS_FreeValue(ctx, obj); + return JS_EXCEPTION; +} + +static JSValue js_worker_postMessage(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSWorkerData *worker = JS_GetOpaque2(ctx, this_val, js_worker_class_id); + JSWorkerMessagePipe *ps; + size_t data_len, sab_tab_len, i; + uint8_t *data; + JSWorkerMessage *msg; + uint8_t **sab_tab; + + if (!worker) + return JS_EXCEPTION; + + data = JS_WriteObject2(ctx, &data_len, argv[0], + JS_WRITE_OBJ_SAB | JS_WRITE_OBJ_REFERENCE, + &sab_tab, &sab_tab_len); + if (!data) + return JS_EXCEPTION; + + msg = malloc(sizeof(*msg)); + if (!msg) + goto fail; + msg->data = NULL; + msg->sab_tab = NULL; + + /* must reallocate because the allocator may be different */ + msg->data = malloc(data_len); + if (!msg->data) + goto fail; + memcpy(msg->data, data, data_len); + msg->data_len = data_len; + + msg->sab_tab = malloc(sizeof(msg->sab_tab[0]) * sab_tab_len); + if (!msg->sab_tab) + goto fail; + memcpy(msg->sab_tab, sab_tab, sizeof(msg->sab_tab[0]) * sab_tab_len); + msg->sab_tab_len = sab_tab_len; + + js_free(ctx, data); + js_free(ctx, sab_tab); + + /* increment the SAB reference counts */ + for(i = 0; i < msg->sab_tab_len; i++) { + js_sab_dup(NULL, msg->sab_tab[i]); + } + + ps = worker->send_pipe; + pthread_mutex_lock(&ps->mutex); + /* indicate that data is present */ + if (list_empty(&ps->msg_queue)) { + uint8_t ch = '\0'; + int ret; + for(;;) { + ret = write(ps->write_fd, &ch, 1); + if (ret == 1) + break; + if (ret < 0 && (errno != EAGAIN || errno != EINTR)) + break; + } + } + list_add_tail(&msg->link, &ps->msg_queue); + pthread_mutex_unlock(&ps->mutex); + return JS_UNDEFINED; + fail: + if (msg) { + free(msg->data); + free(msg->sab_tab); + free(msg); + } + js_free(ctx, data); + js_free(ctx, sab_tab); + return JS_EXCEPTION; + +} + +static JSValue js_worker_set_onmessage(JSContext *ctx, JSValueConst this_val, + JSValueConst func) +{ + JSRuntime *rt = JS_GetRuntime(ctx); + JSThreadState *ts = JS_GetRuntimeOpaque(rt); + JSWorkerData *worker = JS_GetOpaque2(ctx, this_val, js_worker_class_id); + JSWorkerMessageHandler *port; + + if (!worker) + return JS_EXCEPTION; + + port = worker->msg_handler; + if (JS_IsNull(func)) { + if (port) { + js_free_port(rt, port); + worker->msg_handler = NULL; + } + } else { + if (!JS_IsFunction(ctx, func)) + return JS_ThrowTypeError(ctx, "not a function"); + if (!port) { + port = js_mallocz(ctx, sizeof(*port)); + if (!port) + return JS_EXCEPTION; + port->recv_pipe = js_dup_message_pipe(worker->recv_pipe); + port->on_message_func = JS_NULL; + list_add_tail(&port->link, &ts->port_list); + worker->msg_handler = port; + } + JS_FreeValue(ctx, port->on_message_func); + port->on_message_func = JS_DupValue(ctx, func); + } + return JS_UNDEFINED; +} + +static JSValue js_worker_get_onmessage(JSContext *ctx, JSValueConst this_val) +{ + JSWorkerData *worker = JS_GetOpaque2(ctx, this_val, js_worker_class_id); + JSWorkerMessageHandler *port; + if (!worker) + return JS_EXCEPTION; + port = worker->msg_handler; + if (port) { + return JS_DupValue(ctx, port->on_message_func); + } else { + return JS_NULL; + } +} + +static const JSCFunctionListEntry js_worker_proto_funcs[] = { + JS_CFUNC_DEF("postMessage", 1, js_worker_postMessage ), + JS_CGETSET_DEF("onmessage", js_worker_get_onmessage, js_worker_set_onmessage ), +}; + +#endif /* USE_WORKER */ + +void js_std_set_worker_new_context_func(JSContext *(*func)(JSRuntime *rt)) +{ +#ifdef USE_WORKER + js_worker_new_context_func = func; +#endif +} + +#if defined(_WIN32) +#define OS_PLATFORM "win32" +#elif defined(__APPLE__) +#define OS_PLATFORM "darwin" +#elif defined(EMSCRIPTEN) +#define OS_PLATFORM "js" +#else +#define OS_PLATFORM "linux" +#endif + +#define OS_FLAG(x) JS_PROP_INT32_DEF(#x, x, JS_PROP_CONFIGURABLE ) + +static const JSCFunctionListEntry js_os_funcs[] = { + JS_CFUNC_DEF("open", 2, js_os_open ), + OS_FLAG(O_RDONLY), + OS_FLAG(O_WRONLY), + OS_FLAG(O_RDWR), + OS_FLAG(O_APPEND), + OS_FLAG(O_CREAT), + OS_FLAG(O_EXCL), + OS_FLAG(O_TRUNC), +#if defined(_WIN32) + OS_FLAG(O_BINARY), + OS_FLAG(O_TEXT), +#endif + JS_CFUNC_DEF("close", 1, js_os_close ), + JS_CFUNC_DEF("seek", 3, js_os_seek ), + JS_CFUNC_MAGIC_DEF("read", 4, js_os_read_write, 0 ), + JS_CFUNC_MAGIC_DEF("write", 4, js_os_read_write, 1 ), + JS_CFUNC_DEF("isatty", 1, js_os_isatty ), + JS_CFUNC_DEF("ttyGetWinSize", 1, js_os_ttyGetWinSize ), + JS_CFUNC_DEF("ttySetRaw", 1, js_os_ttySetRaw ), + JS_CFUNC_DEF("remove", 1, js_os_remove ), + JS_CFUNC_DEF("rename", 2, js_os_rename ), + JS_CFUNC_MAGIC_DEF("setReadHandler", 2, js_os_setReadHandler, 0 ), + JS_CFUNC_MAGIC_DEF("setWriteHandler", 2, js_os_setReadHandler, 1 ), + JS_CFUNC_DEF("signal", 2, js_os_signal ), + OS_FLAG(SIGINT), + OS_FLAG(SIGABRT), + OS_FLAG(SIGFPE), + OS_FLAG(SIGILL), + OS_FLAG(SIGSEGV), + OS_FLAG(SIGTERM), +#if !defined(_WIN32) + OS_FLAG(SIGQUIT), + OS_FLAG(SIGPIPE), + OS_FLAG(SIGALRM), + OS_FLAG(SIGUSR1), + OS_FLAG(SIGUSR2), + OS_FLAG(SIGCHLD), + OS_FLAG(SIGCONT), + OS_FLAG(SIGSTOP), + OS_FLAG(SIGTSTP), + OS_FLAG(SIGTTIN), + OS_FLAG(SIGTTOU), +#endif + JS_CFUNC_DEF("setTimeout", 2, js_os_setTimeout ), + JS_CFUNC_DEF("clearTimeout", 1, js_os_clearTimeout ), + JS_PROP_STRING_DEF("platform", OS_PLATFORM, 0 ), + JS_CFUNC_DEF("getcwd", 0, js_os_getcwd ), + JS_CFUNC_DEF("chdir", 0, js_os_chdir ), + JS_CFUNC_DEF("mkdir", 1, js_os_mkdir ), + JS_CFUNC_DEF("readdir", 1, js_os_readdir ), + /* st_mode constants */ + OS_FLAG(S_IFMT), + OS_FLAG(S_IFIFO), + OS_FLAG(S_IFCHR), + OS_FLAG(S_IFDIR), + OS_FLAG(S_IFBLK), + OS_FLAG(S_IFREG), +#if !defined(_WIN32) + OS_FLAG(S_IFSOCK), + OS_FLAG(S_IFLNK), + OS_FLAG(S_ISGID), + OS_FLAG(S_ISUID), +#endif + JS_CFUNC_MAGIC_DEF("stat", 1, js_os_stat, 0 ), + JS_CFUNC_DEF("utimes", 3, js_os_utimes ), + JS_CFUNC_DEF("sleep", 1, js_os_sleep ), + JS_CFUNC_DEF("realpath", 1, js_os_realpath ), +#if !defined(_WIN32) + JS_CFUNC_MAGIC_DEF("lstat", 1, js_os_stat, 1 ), + JS_CFUNC_DEF("symlink", 2, js_os_symlink ), + JS_CFUNC_DEF("readlink", 1, js_os_readlink ), + JS_CFUNC_DEF("exec", 1, js_os_exec ), + JS_CFUNC_DEF("waitpid", 2, js_os_waitpid ), + OS_FLAG(WNOHANG), + JS_CFUNC_DEF("pipe", 0, js_os_pipe ), + JS_CFUNC_DEF("kill", 2, js_os_kill ), + JS_CFUNC_DEF("dup", 1, js_os_dup ), + JS_CFUNC_DEF("dup2", 2, js_os_dup2 ), +#endif +}; + +static int js_os_init(JSContext *ctx, JSModuleDef *m) +{ + os_poll_func = js_os_poll; + + /* OSTimer class */ + JS_NewClassID(&js_os_timer_class_id); + JS_NewClass(JS_GetRuntime(ctx), js_os_timer_class_id, &js_os_timer_class); + +#ifdef USE_WORKER + { + JSRuntime *rt = JS_GetRuntime(ctx); + JSThreadState *ts = JS_GetRuntimeOpaque(rt); + JSValue proto, obj; + /* Worker class */ + JS_NewClassID(&js_worker_class_id); + JS_NewClass(JS_GetRuntime(ctx), js_worker_class_id, &js_worker_class); + proto = JS_NewObject(ctx); + JS_SetPropertyFunctionList(ctx, proto, js_worker_proto_funcs, countof(js_worker_proto_funcs)); + + obj = JS_NewCFunction2(ctx, js_worker_ctor, "Worker", 1, + JS_CFUNC_constructor, 0); + JS_SetConstructor(ctx, obj, proto); + + JS_SetClassProto(ctx, js_worker_class_id, proto); + + /* set 'Worker.parent' if necessary */ + if (ts->recv_pipe && ts->send_pipe) { + JS_DefinePropertyValueStr(ctx, obj, "parent", + js_worker_ctor_internal(ctx, JS_UNDEFINED, ts->recv_pipe, ts->send_pipe), + JS_PROP_C_W_E); + } + + JS_SetModuleExport(ctx, m, "Worker", obj); + } +#endif /* USE_WORKER */ + + return JS_SetModuleExportList(ctx, m, js_os_funcs, + countof(js_os_funcs)); +} + +JSModuleDef *js_init_module_os(JSContext *ctx, const char *module_name) +{ + JSModuleDef *m; + m = JS_NewCModule(ctx, module_name, js_os_init); + if (!m) + return NULL; + JS_AddModuleExportList(ctx, m, js_os_funcs, countof(js_os_funcs)); +#ifdef USE_WORKER + JS_AddModuleExport(ctx, m, "Worker"); +#endif + return m; +} + +/**********************************************************/ + +static JSValue js_print(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + int i; + const char *str; + size_t len; + + for(i = 0; i < argc; i++) { + if (i != 0) + putchar(' '); + str = JS_ToCStringLen(ctx, &len, argv[i]); + if (!str) + return JS_EXCEPTION; + fwrite(str, 1, len, stdout); + JS_FreeCString(ctx, str); + } + putchar('\n'); + return JS_UNDEFINED; +} + +void js_std_add_helpers(JSContext *ctx, int argc, char **argv) +{ + JSValue global_obj, console, args; + int i; + + /* XXX: should these global definitions be enumerable? */ + global_obj = JS_GetGlobalObject(ctx); + + console = JS_NewObject(ctx); + JS_SetPropertyStr(ctx, console, "log", + JS_NewCFunction(ctx, js_print, "log", 1)); + JS_SetPropertyStr(ctx, global_obj, "console", console); + + /* same methods as the mozilla JS shell */ + if (argc >= 0) { + args = JS_NewArray(ctx); + for(i = 0; i < argc; i++) { + JS_SetPropertyUint32(ctx, args, i, JS_NewString(ctx, argv[i])); + } + JS_SetPropertyStr(ctx, global_obj, "scriptArgs", args); + } + + JS_SetPropertyStr(ctx, global_obj, "print", + JS_NewCFunction(ctx, js_print, "print", 1)); + JS_SetPropertyStr(ctx, global_obj, "__loadScript", + JS_NewCFunction(ctx, js_loadScript, "__loadScript", 1)); + + JS_FreeValue(ctx, global_obj); +} + +void js_std_init_handlers(JSRuntime *rt) +{ + JSThreadState *ts; + + ts = malloc(sizeof(*ts)); + if (!ts) { + fprintf(stderr, "Could not allocate memory for the worker"); + exit(1); + } + memset(ts, 0, sizeof(*ts)); + init_list_head(&ts->os_rw_handlers); + init_list_head(&ts->os_signal_handlers); + init_list_head(&ts->os_timers); + init_list_head(&ts->port_list); + + JS_SetRuntimeOpaque(rt, ts); + +#ifdef USE_WORKER + /* set the SharedArrayBuffer memory handlers */ + { + JSSharedArrayBufferFunctions sf; + memset(&sf, 0, sizeof(sf)); + sf.sab_alloc = js_sab_alloc; + sf.sab_free = js_sab_free; + sf.sab_dup = js_sab_dup; + JS_SetSharedArrayBufferFunctions(rt, &sf); + } +#endif +} + +void js_std_free_handlers(JSRuntime *rt) +{ + JSThreadState *ts = JS_GetRuntimeOpaque(rt); + struct list_head *el, *el1; + + list_for_each_safe(el, el1, &ts->os_rw_handlers) { + JSOSRWHandler *rh = list_entry(el, JSOSRWHandler, link); + free_rw_handler(rt, rh); + } + + list_for_each_safe(el, el1, &ts->os_signal_handlers) { + JSOSSignalHandler *sh = list_entry(el, JSOSSignalHandler, link); + free_sh(rt, sh); + } + + list_for_each_safe(el, el1, &ts->os_timers) { + JSOSTimer *th = list_entry(el, JSOSTimer, link); + unlink_timer(rt, th); + if (!th->has_object) + free_timer(rt, th); + } + +#ifdef USE_WORKER + /* XXX: free port_list ? */ + js_free_message_pipe(ts->recv_pipe); + js_free_message_pipe(ts->send_pipe); +#endif + + free(ts); + JS_SetRuntimeOpaque(rt, NULL); /* fail safe */ +} + +static void js_dump_obj(JSContext *ctx, FILE *f, JSValueConst val) +{ + const char *str; + + str = JS_ToCString(ctx, val); + if (str) { + fprintf(f, "%s\n", str); + JS_FreeCString(ctx, str); + } else { + fprintf(f, "[exception]\n"); + } +} + +static void js_std_dump_error1(JSContext *ctx, JSValueConst exception_val) +{ + JSValue val; + BOOL is_error; + + is_error = JS_IsError(ctx, exception_val); + js_dump_obj(ctx, stderr, exception_val); + if (is_error) { + val = JS_GetPropertyStr(ctx, exception_val, "stack"); + if (!JS_IsUndefined(val)) { + js_dump_obj(ctx, stderr, val); + } + JS_FreeValue(ctx, val); + } +} + +void js_std_dump_error(JSContext *ctx) +{ + JSValue exception_val; + + exception_val = JS_GetException(ctx); + js_std_dump_error1(ctx, exception_val); + JS_FreeValue(ctx, exception_val); +} + +void js_std_promise_rejection_tracker(JSContext *ctx, JSValueConst promise, + JSValueConst reason, + BOOL is_handled, void *opaque) +{ + if (!is_handled) { + fprintf(stderr, "Possibly unhandled promise rejection: "); + js_std_dump_error1(ctx, reason); + } +} + +/* main loop which calls the user JS callbacks */ +void js_std_loop(JSContext *ctx) +{ + JSContext *ctx1; + int err; + + for(;;) { + /* execute the pending jobs */ + for(;;) { + err = JS_ExecutePendingJob(JS_GetRuntime(ctx), &ctx1); + if (err <= 0) { + if (err < 0) { + js_std_dump_error(ctx1); + } + break; + } + } + + if (!os_poll_func || os_poll_func(ctx)) + break; + } +} + +void js_std_eval_binary(JSContext *ctx, const uint8_t *buf, size_t buf_len, + int load_only) +{ + JSValue obj, val; + obj = JS_ReadObject(ctx, buf, buf_len, JS_READ_OBJ_BYTECODE); + if (JS_IsException(obj)) + goto exception; + if (load_only) { + if (JS_VALUE_GET_TAG(obj) == JS_TAG_MODULE) { + js_module_set_import_meta(ctx, obj, FALSE, FALSE); + } + } else { + if (JS_VALUE_GET_TAG(obj) == JS_TAG_MODULE) { + if (JS_ResolveModule(ctx, obj) < 0) { + JS_FreeValue(ctx, obj); + goto exception; + } + js_module_set_import_meta(ctx, obj, FALSE, TRUE); + } + val = JS_EvalFunction(ctx, obj); + if (JS_IsException(val)) { + exception: + js_std_dump_error(ctx); + exit(1); + } + JS_FreeValue(ctx, val); + } +} diff --git a/quickjs/quickjs-libc.h b/quickjs/quickjs-libc.h new file mode 100644 index 0000000..fbbe5b0 --- /dev/null +++ b/quickjs/quickjs-libc.h @@ -0,0 +1,59 @@ +/* + * QuickJS C library + * + * Copyright (c) 2017-2018 Fabrice Bellard + * + * 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. + */ +#ifndef QUICKJS_LIBC_H +#define QUICKJS_LIBC_H + +#include +#include + +#include "quickjs.h" + +#ifdef __cplusplus +extern "C" { +#endif + +JSModuleDef *js_init_module_std(JSContext *ctx, const char *module_name); +JSModuleDef *js_init_module_os(JSContext *ctx, const char *module_name); +void js_std_add_helpers(JSContext *ctx, int argc, char **argv); +void js_std_loop(JSContext *ctx); +void js_std_init_handlers(JSRuntime *rt); +void js_std_free_handlers(JSRuntime *rt); +void js_std_dump_error(JSContext *ctx); +uint8_t *js_load_file(JSContext *ctx, size_t *pbuf_len, const char *filename); +int js_module_set_import_meta(JSContext *ctx, JSValueConst func_val, + JS_BOOL use_realpath, JS_BOOL is_main); +JSModuleDef *js_module_loader(JSContext *ctx, + const char *module_name, void *opaque); +void js_std_eval_binary(JSContext *ctx, const uint8_t *buf, size_t buf_len, + int flags); +void js_std_promise_rejection_tracker(JSContext *ctx, JSValueConst promise, + JSValueConst reason, + JS_BOOL is_handled, void *opaque); +void js_std_set_worker_new_context_func(JSContext *(*func)(JSRuntime *rt)); + +#ifdef __cplusplus +} /* extern "C" { */ +#endif + +#endif /* QUICKJS_LIBC_H */ diff --git a/quickjs/quickjs-opcode.h b/quickjs/quickjs-opcode.h new file mode 100644 index 0000000..c731a14 --- /dev/null +++ b/quickjs/quickjs-opcode.h @@ -0,0 +1,365 @@ +/* + * QuickJS opcode definitions + * + * Copyright (c) 2017-2018 Fabrice Bellard + * Copyright (c) 2017-2018 Charlie Gordon + * + * 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. + */ + +#ifdef FMT +FMT(none) +FMT(none_int) +FMT(none_loc) +FMT(none_arg) +FMT(none_var_ref) +FMT(u8) +FMT(i8) +FMT(loc8) +FMT(const8) +FMT(label8) +FMT(u16) +FMT(i16) +FMT(label16) +FMT(npop) +FMT(npopx) +FMT(npop_u16) +FMT(loc) +FMT(arg) +FMT(var_ref) +FMT(u32) +FMT(i32) +FMT(const) +FMT(label) +FMT(atom) +FMT(atom_u8) +FMT(atom_u16) +FMT(atom_label_u8) +FMT(atom_label_u16) +FMT(label_u16) +#undef FMT +#endif /* FMT */ + +#ifdef DEF + +#ifndef def +#define def(id, size, n_pop, n_push, f) DEF(id, size, n_pop, n_push, f) +#endif + +DEF(invalid, 1, 0, 0, none) /* never emitted */ + +/* push values */ +DEF( push_i32, 5, 0, 1, i32) +DEF( push_const, 5, 0, 1, const) +DEF( fclosure, 5, 0, 1, const) /* must follow push_const */ +DEF(push_atom_value, 5, 0, 1, atom) +DEF( private_symbol, 5, 0, 1, atom) +DEF( undefined, 1, 0, 1, none) +DEF( null, 1, 0, 1, none) +DEF( push_this, 1, 0, 1, none) /* only used at the start of a function */ +DEF( push_false, 1, 0, 1, none) +DEF( push_true, 1, 0, 1, none) +DEF( object, 1, 0, 1, none) +DEF( special_object, 2, 0, 1, u8) /* only used at the start of a function */ +DEF( rest, 3, 0, 1, u16) /* only used at the start of a function */ + +DEF( drop, 1, 1, 0, none) /* a -> */ +DEF( nip, 1, 2, 1, none) /* a b -> b */ +DEF( nip1, 1, 3, 2, none) /* a b c -> b c */ +DEF( dup, 1, 1, 2, none) /* a -> a a */ +DEF( dup1, 1, 2, 3, none) /* a b -> a a b */ +DEF( dup2, 1, 2, 4, none) /* a b -> a b a b */ +DEF( dup3, 1, 3, 6, none) /* a b c -> a b c a b c */ +DEF( insert2, 1, 2, 3, none) /* obj a -> a obj a (dup_x1) */ +DEF( insert3, 1, 3, 4, none) /* obj prop a -> a obj prop a (dup_x2) */ +DEF( insert4, 1, 4, 5, none) /* this obj prop a -> a this obj prop a */ +DEF( perm3, 1, 3, 3, none) /* obj a b -> a obj b */ +DEF( perm4, 1, 4, 4, none) /* obj prop a b -> a obj prop b */ +DEF( perm5, 1, 5, 5, none) /* this obj prop a b -> a this obj prop b */ +DEF( swap, 1, 2, 2, none) /* a b -> b a */ +DEF( swap2, 1, 4, 4, none) /* a b c d -> c d a b */ +DEF( rot3l, 1, 3, 3, none) /* x a b -> a b x */ +DEF( rot3r, 1, 3, 3, none) /* a b x -> x a b */ +DEF( rot4l, 1, 4, 4, none) /* x a b c -> a b c x */ +DEF( rot5l, 1, 5, 5, none) /* x a b c d -> a b c d x */ + +DEF(call_constructor, 3, 2, 1, npop) /* func new.target args -> ret. arguments are not counted in n_pop */ +DEF( call, 3, 1, 1, npop) /* arguments are not counted in n_pop */ +DEF( tail_call, 3, 1, 0, npop) /* arguments are not counted in n_pop */ +DEF( call_method, 3, 2, 1, npop) /* arguments are not counted in n_pop */ +DEF(tail_call_method, 3, 2, 0, npop) /* arguments are not counted in n_pop */ +DEF( array_from, 3, 0, 1, npop) /* arguments are not counted in n_pop */ +DEF( apply, 3, 3, 1, u16) +DEF( return, 1, 1, 0, none) +DEF( return_undef, 1, 0, 0, none) +DEF(check_ctor_return, 1, 1, 2, none) +DEF( check_ctor, 1, 0, 0, none) +DEF( check_brand, 1, 2, 2, none) /* this_obj func -> this_obj func */ +DEF( add_brand, 1, 2, 0, none) /* this_obj home_obj -> */ +DEF( return_async, 1, 1, 0, none) +DEF( throw, 1, 1, 0, none) +DEF( throw_error, 6, 0, 0, atom_u8) +DEF( eval, 5, 1, 1, npop_u16) /* func args... -> ret_val */ +DEF( apply_eval, 3, 2, 1, u16) /* func array -> ret_eval */ +DEF( regexp, 1, 2, 1, none) /* create a RegExp object from the pattern and a + bytecode string */ +DEF( get_super, 1, 1, 1, none) +DEF( import, 1, 1, 1, none) /* dynamic module import */ + +DEF( check_var, 5, 0, 1, atom) /* check if a variable exists */ +DEF( get_var_undef, 5, 0, 1, atom) /* push undefined if the variable does not exist */ +DEF( get_var, 5, 0, 1, atom) /* throw an exception if the variable does not exist */ +DEF( put_var, 5, 1, 0, atom) /* must come after get_var */ +DEF( put_var_init, 5, 1, 0, atom) /* must come after put_var. Used to initialize a global lexical variable */ +DEF( put_var_strict, 5, 2, 0, atom) /* for strict mode variable write */ + +DEF( get_ref_value, 1, 2, 3, none) +DEF( put_ref_value, 1, 3, 0, none) + +DEF( define_var, 6, 0, 0, atom_u8) +DEF(check_define_var, 6, 0, 0, atom_u8) +DEF( define_func, 6, 1, 0, atom_u8) +DEF( get_field, 5, 1, 1, atom) +DEF( get_field2, 5, 1, 2, atom) +DEF( put_field, 5, 2, 0, atom) +DEF( get_private_field, 1, 2, 1, none) /* obj prop -> value */ +DEF( put_private_field, 1, 3, 0, none) /* obj value prop -> */ +DEF(define_private_field, 1, 3, 1, none) /* obj prop value -> obj */ +DEF( get_array_el, 1, 2, 1, none) +DEF( get_array_el2, 1, 2, 2, none) /* obj prop -> obj value */ +DEF( put_array_el, 1, 3, 0, none) +DEF(get_super_value, 1, 3, 1, none) /* this obj prop -> value */ +DEF(put_super_value, 1, 4, 0, none) /* this obj prop value -> */ +DEF( define_field, 5, 2, 1, atom) +DEF( set_name, 5, 1, 1, atom) +DEF(set_name_computed, 1, 2, 2, none) +DEF( set_proto, 1, 2, 1, none) +DEF(set_home_object, 1, 2, 2, none) +DEF(define_array_el, 1, 3, 2, none) +DEF( append, 1, 3, 2, none) /* append enumerated object, update length */ +DEF(copy_data_properties, 2, 3, 3, u8) +DEF( define_method, 6, 2, 1, atom_u8) +DEF(define_method_computed, 2, 3, 1, u8) /* must come after define_method */ +DEF( define_class, 6, 2, 2, atom_u8) /* parent ctor -> ctor proto */ +DEF( define_class_computed, 6, 3, 3, atom_u8) /* field_name parent ctor -> field_name ctor proto (class with computed name) */ + +DEF( get_loc, 3, 0, 1, loc) +DEF( put_loc, 3, 1, 0, loc) /* must come after get_loc */ +DEF( set_loc, 3, 1, 1, loc) /* must come after put_loc */ +DEF( get_arg, 3, 0, 1, arg) +DEF( put_arg, 3, 1, 0, arg) /* must come after get_arg */ +DEF( set_arg, 3, 1, 1, arg) /* must come after put_arg */ +DEF( get_var_ref, 3, 0, 1, var_ref) +DEF( put_var_ref, 3, 1, 0, var_ref) /* must come after get_var_ref */ +DEF( set_var_ref, 3, 1, 1, var_ref) /* must come after put_var_ref */ +DEF(set_loc_uninitialized, 3, 0, 0, loc) +DEF( get_loc_check, 3, 0, 1, loc) +DEF( put_loc_check, 3, 1, 0, loc) /* must come after get_loc_check */ +DEF( put_loc_check_init, 3, 1, 0, loc) +DEF(get_var_ref_check, 3, 0, 1, var_ref) +DEF(put_var_ref_check, 3, 1, 0, var_ref) /* must come after get_var_ref_check */ +DEF(put_var_ref_check_init, 3, 1, 0, var_ref) +DEF( close_loc, 3, 0, 0, loc) +DEF( if_false, 5, 1, 0, label) +DEF( if_true, 5, 1, 0, label) /* must come after if_false */ +DEF( goto, 5, 0, 0, label) /* must come after if_true */ +DEF( catch, 5, 0, 1, label) +DEF( gosub, 5, 0, 0, label) /* used to execute the finally block */ +DEF( ret, 1, 1, 0, none) /* used to return from the finally block */ + +DEF( to_object, 1, 1, 1, none) +//DEF( to_string, 1, 1, 1, none) +DEF( to_propkey, 1, 1, 1, none) +DEF( to_propkey2, 1, 2, 2, none) + +DEF( with_get_var, 10, 1, 0, atom_label_u8) /* must be in the same order as scope_xxx */ +DEF( with_put_var, 10, 2, 1, atom_label_u8) /* must be in the same order as scope_xxx */ +DEF(with_delete_var, 10, 1, 0, atom_label_u8) /* must be in the same order as scope_xxx */ +DEF( with_make_ref, 10, 1, 0, atom_label_u8) /* must be in the same order as scope_xxx */ +DEF( with_get_ref, 10, 1, 0, atom_label_u8) /* must be in the same order as scope_xxx */ +DEF(with_get_ref_undef, 10, 1, 0, atom_label_u8) + +DEF( make_loc_ref, 7, 0, 2, atom_u16) +DEF( make_arg_ref, 7, 0, 2, atom_u16) +DEF(make_var_ref_ref, 7, 0, 2, atom_u16) +DEF( make_var_ref, 5, 0, 2, atom) + +DEF( for_in_start, 1, 1, 1, none) +DEF( for_of_start, 1, 1, 3, none) +DEF(for_await_of_start, 1, 1, 3, none) +DEF( for_in_next, 1, 1, 3, none) +DEF( for_of_next, 2, 3, 5, u8) +DEF(iterator_check_object, 1, 1, 1, none) +DEF(iterator_get_value_done, 1, 1, 2, none) +DEF( iterator_close, 1, 3, 0, none) +DEF(iterator_close_return, 1, 4, 4, none) +DEF( iterator_next, 1, 4, 4, none) +DEF( iterator_call, 2, 4, 5, u8) +DEF( initial_yield, 1, 0, 0, none) +DEF( yield, 1, 1, 2, none) +DEF( yield_star, 1, 1, 2, none) +DEF(async_yield_star, 1, 1, 2, none) +DEF( await, 1, 1, 1, none) + +/* arithmetic/logic operations */ +DEF( neg, 1, 1, 1, none) +DEF( plus, 1, 1, 1, none) +DEF( dec, 1, 1, 1, none) +DEF( inc, 1, 1, 1, none) +DEF( post_dec, 1, 1, 2, none) +DEF( post_inc, 1, 1, 2, none) +DEF( dec_loc, 2, 0, 0, loc8) +DEF( inc_loc, 2, 0, 0, loc8) +DEF( add_loc, 2, 1, 0, loc8) +DEF( not, 1, 1, 1, none) +DEF( lnot, 1, 1, 1, none) +DEF( typeof, 1, 1, 1, none) +DEF( delete, 1, 2, 1, none) +DEF( delete_var, 5, 0, 1, atom) + +DEF( mul, 1, 2, 1, none) +DEF( div, 1, 2, 1, none) +DEF( mod, 1, 2, 1, none) +DEF( add, 1, 2, 1, none) +DEF( sub, 1, 2, 1, none) +DEF( pow, 1, 2, 1, none) +DEF( shl, 1, 2, 1, none) +DEF( sar, 1, 2, 1, none) +DEF( shr, 1, 2, 1, none) +DEF( lt, 1, 2, 1, none) +DEF( lte, 1, 2, 1, none) +DEF( gt, 1, 2, 1, none) +DEF( gte, 1, 2, 1, none) +DEF( instanceof, 1, 2, 1, none) +DEF( in, 1, 2, 1, none) +DEF( eq, 1, 2, 1, none) +DEF( neq, 1, 2, 1, none) +DEF( strict_eq, 1, 2, 1, none) +DEF( strict_neq, 1, 2, 1, none) +DEF( and, 1, 2, 1, none) +DEF( xor, 1, 2, 1, none) +DEF( or, 1, 2, 1, none) +DEF(is_undefined_or_null, 1, 1, 1, none) +#ifdef CONFIG_BIGNUM +DEF( mul_pow10, 1, 2, 1, none) +DEF( math_mod, 1, 2, 1, none) +#endif +/* must be the last non short and non temporary opcode */ +DEF( nop, 1, 0, 0, none) + +/* temporary opcodes: never emitted in the final bytecode */ + +def( enter_scope, 3, 0, 0, u16) /* emitted in phase 1, removed in phase 2 */ +def( leave_scope, 3, 0, 0, u16) /* emitted in phase 1, removed in phase 2 */ + +def( label, 5, 0, 0, label) /* emitted in phase 1, removed in phase 3 */ + +def(scope_get_var_undef, 7, 0, 1, atom_u16) /* emitted in phase 1, removed in phase 2 */ +def( scope_get_var, 7, 0, 1, atom_u16) /* emitted in phase 1, removed in phase 2 */ +def( scope_put_var, 7, 1, 0, atom_u16) /* emitted in phase 1, removed in phase 2 */ +def(scope_delete_var, 7, 0, 1, atom_u16) /* emitted in phase 1, removed in phase 2 */ +def( scope_make_ref, 11, 0, 2, atom_label_u16) /* emitted in phase 1, removed in phase 2 */ +def( scope_get_ref, 7, 0, 2, atom_u16) /* emitted in phase 1, removed in phase 2 */ +def(scope_put_var_init, 7, 0, 2, atom_u16) /* emitted in phase 1, removed in phase 2 */ +def(scope_get_private_field, 7, 1, 1, atom_u16) /* obj -> value, emitted in phase 1, removed in phase 2 */ +def(scope_get_private_field2, 7, 1, 2, atom_u16) /* obj -> obj value, emitted in phase 1, removed in phase 2 */ +def(scope_put_private_field, 7, 1, 1, atom_u16) /* obj value ->, emitted in phase 1, removed in phase 2 */ + +def( set_class_name, 5, 1, 1, u32) /* emitted in phase 1, removed in phase 2 */ + +def( line_num, 5, 0, 0, u32) /* emitted in phase 1, removed in phase 3 */ + +#if SHORT_OPCODES +DEF( push_minus1, 1, 0, 1, none_int) +DEF( push_0, 1, 0, 1, none_int) +DEF( push_1, 1, 0, 1, none_int) +DEF( push_2, 1, 0, 1, none_int) +DEF( push_3, 1, 0, 1, none_int) +DEF( push_4, 1, 0, 1, none_int) +DEF( push_5, 1, 0, 1, none_int) +DEF( push_6, 1, 0, 1, none_int) +DEF( push_7, 1, 0, 1, none_int) +DEF( push_i8, 2, 0, 1, i8) +DEF( push_i16, 3, 0, 1, i16) +DEF( push_const8, 2, 0, 1, const8) +DEF( fclosure8, 2, 0, 1, const8) /* must follow push_const8 */ +DEF(push_empty_string, 1, 0, 1, none) + +DEF( get_loc8, 2, 0, 1, loc8) +DEF( put_loc8, 2, 1, 0, loc8) +DEF( set_loc8, 2, 1, 1, loc8) + +DEF( get_loc0, 1, 0, 1, none_loc) +DEF( get_loc1, 1, 0, 1, none_loc) +DEF( get_loc2, 1, 0, 1, none_loc) +DEF( get_loc3, 1, 0, 1, none_loc) +DEF( put_loc0, 1, 1, 0, none_loc) +DEF( put_loc1, 1, 1, 0, none_loc) +DEF( put_loc2, 1, 1, 0, none_loc) +DEF( put_loc3, 1, 1, 0, none_loc) +DEF( set_loc0, 1, 1, 1, none_loc) +DEF( set_loc1, 1, 1, 1, none_loc) +DEF( set_loc2, 1, 1, 1, none_loc) +DEF( set_loc3, 1, 1, 1, none_loc) +DEF( get_arg0, 1, 0, 1, none_arg) +DEF( get_arg1, 1, 0, 1, none_arg) +DEF( get_arg2, 1, 0, 1, none_arg) +DEF( get_arg3, 1, 0, 1, none_arg) +DEF( put_arg0, 1, 1, 0, none_arg) +DEF( put_arg1, 1, 1, 0, none_arg) +DEF( put_arg2, 1, 1, 0, none_arg) +DEF( put_arg3, 1, 1, 0, none_arg) +DEF( set_arg0, 1, 1, 1, none_arg) +DEF( set_arg1, 1, 1, 1, none_arg) +DEF( set_arg2, 1, 1, 1, none_arg) +DEF( set_arg3, 1, 1, 1, none_arg) +DEF( get_var_ref0, 1, 0, 1, none_var_ref) +DEF( get_var_ref1, 1, 0, 1, none_var_ref) +DEF( get_var_ref2, 1, 0, 1, none_var_ref) +DEF( get_var_ref3, 1, 0, 1, none_var_ref) +DEF( put_var_ref0, 1, 1, 0, none_var_ref) +DEF( put_var_ref1, 1, 1, 0, none_var_ref) +DEF( put_var_ref2, 1, 1, 0, none_var_ref) +DEF( put_var_ref3, 1, 1, 0, none_var_ref) +DEF( set_var_ref0, 1, 1, 1, none_var_ref) +DEF( set_var_ref1, 1, 1, 1, none_var_ref) +DEF( set_var_ref2, 1, 1, 1, none_var_ref) +DEF( set_var_ref3, 1, 1, 1, none_var_ref) + +DEF( get_length, 1, 1, 1, none) + +DEF( if_false8, 2, 1, 0, label8) +DEF( if_true8, 2, 1, 0, label8) /* must come after if_false8 */ +DEF( goto8, 2, 0, 0, label8) /* must come after if_true8 */ +DEF( goto16, 3, 0, 0, label16) + +DEF( call0, 1, 1, 1, npopx) +DEF( call1, 1, 1, 1, npopx) +DEF( call2, 1, 1, 1, npopx) +DEF( call3, 1, 1, 1, npopx) + +DEF( is_undefined, 1, 1, 1, none) +DEF( is_null, 1, 1, 1, none) +DEF(typeof_is_undefined, 1, 1, 1, none) +DEF( typeof_is_function, 1, 1, 1, none) +#endif + +#undef DEF +#undef def +#endif /* DEF */ diff --git a/quickjs/quickjs.c b/quickjs/quickjs.c new file mode 100644 index 0000000..7916013 --- /dev/null +++ b/quickjs/quickjs.c @@ -0,0 +1,54061 @@ +/* + * QuickJS Javascript Engine + * + * Copyright (c) 2017-2021 Fabrice Bellard + * Copyright (c) 2017-2021 Charlie Gordon + * + * 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. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if defined(__APPLE__) +#include +#elif defined(__linux__) +#include +#elif defined(__FreeBSD__) +#include +#endif + +#include "cutils.h" +#include "list.h" +#include "quickjs.h" +#include "libregexp.h" +#ifdef CONFIG_BIGNUM +#include "libbf.h" +#endif + +#define OPTIMIZE 1 +#define SHORT_OPCODES 1 +#if defined(EMSCRIPTEN) +#define DIRECT_DISPATCH 0 +#else +#define DIRECT_DISPATCH 1 +#endif + +#if defined(__APPLE__) +#define MALLOC_OVERHEAD 0 +#else +#define MALLOC_OVERHEAD 8 +#endif + +#if !defined(_WIN32) +/* define it if printf uses the RNDN rounding mode instead of RNDNA */ +#define CONFIG_PRINTF_RNDN +#endif + +/* define to include Atomics.* operations which depend on the OS + threads */ +#if !defined(EMSCRIPTEN) +#define CONFIG_ATOMICS +#endif + +#if !defined(EMSCRIPTEN) +/* enable stack limitation */ +#define CONFIG_STACK_CHECK +#endif + + +/* dump object free */ +//#define DUMP_FREE +//#define DUMP_CLOSURE +/* dump the bytecode of the compiled functions: combination of bits + 1: dump pass 3 final byte code + 2: dump pass 2 code + 4: dump pass 1 code + 8: dump stdlib functions + 16: dump bytecode in hex + 32: dump line number table + */ +//#define DUMP_BYTECODE (1) +/* dump the occurence of the automatic GC */ +//#define DUMP_GC +/* dump objects freed by the garbage collector */ +//#define DUMP_GC_FREE +/* dump objects leaking when freeing the runtime */ +//#define DUMP_LEAKS 1 +/* dump memory usage before running the garbage collector */ +//#define DUMP_MEM +//#define DUMP_OBJECTS /* dump objects in JS_FreeContext */ +//#define DUMP_ATOMS /* dump atoms in JS_FreeContext */ +//#define DUMP_SHAPES /* dump shapes in JS_FreeContext */ +//#define DUMP_MODULE_RESOLVE +//#define DUMP_PROMISE +//#define DUMP_READ_OBJECT + +/* test the GC by forcing it before each object allocation */ +//#define FORCE_GC_AT_MALLOC + +#ifdef CONFIG_ATOMICS +#include +#include +#include +#endif + +enum { + /* classid tag */ /* union usage | properties */ + JS_CLASS_OBJECT = 1, /* must be first */ + JS_CLASS_ARRAY, /* u.array | length */ + JS_CLASS_ERROR, + JS_CLASS_NUMBER, /* u.object_data */ + JS_CLASS_STRING, /* u.object_data */ + JS_CLASS_BOOLEAN, /* u.object_data */ + JS_CLASS_SYMBOL, /* u.object_data */ + JS_CLASS_ARGUMENTS, /* u.array | length */ + JS_CLASS_MAPPED_ARGUMENTS, /* | length */ + JS_CLASS_DATE, /* u.object_data */ + JS_CLASS_MODULE_NS, + JS_CLASS_C_FUNCTION, /* u.cfunc */ + JS_CLASS_BYTECODE_FUNCTION, /* u.func */ + JS_CLASS_BOUND_FUNCTION, /* u.bound_function */ + JS_CLASS_C_FUNCTION_DATA, /* u.c_function_data_record */ + JS_CLASS_GENERATOR_FUNCTION, /* u.func */ + JS_CLASS_FOR_IN_ITERATOR, /* u.for_in_iterator */ + JS_CLASS_REGEXP, /* u.regexp */ + JS_CLASS_ARRAY_BUFFER, /* u.array_buffer */ + JS_CLASS_SHARED_ARRAY_BUFFER, /* u.array_buffer */ + JS_CLASS_UINT8C_ARRAY, /* u.array (typed_array) */ + JS_CLASS_INT8_ARRAY, /* u.array (typed_array) */ + JS_CLASS_UINT8_ARRAY, /* u.array (typed_array) */ + JS_CLASS_INT16_ARRAY, /* u.array (typed_array) */ + JS_CLASS_UINT16_ARRAY, /* u.array (typed_array) */ + JS_CLASS_INT32_ARRAY, /* u.array (typed_array) */ + JS_CLASS_UINT32_ARRAY, /* u.array (typed_array) */ +#ifdef CONFIG_BIGNUM + JS_CLASS_BIG_INT64_ARRAY, /* u.array (typed_array) */ + JS_CLASS_BIG_UINT64_ARRAY, /* u.array (typed_array) */ +#endif + JS_CLASS_FLOAT32_ARRAY, /* u.array (typed_array) */ + JS_CLASS_FLOAT64_ARRAY, /* u.array (typed_array) */ + JS_CLASS_DATAVIEW, /* u.typed_array */ +#ifdef CONFIG_BIGNUM + JS_CLASS_BIG_INT, /* u.object_data */ + JS_CLASS_BIG_FLOAT, /* u.object_data */ + JS_CLASS_FLOAT_ENV, /* u.float_env */ + JS_CLASS_BIG_DECIMAL, /* u.object_data */ + JS_CLASS_OPERATOR_SET, /* u.operator_set */ +#endif + JS_CLASS_MAP, /* u.map_state */ + JS_CLASS_SET, /* u.map_state */ + JS_CLASS_WEAKMAP, /* u.map_state */ + JS_CLASS_WEAKSET, /* u.map_state */ + JS_CLASS_MAP_ITERATOR, /* u.map_iterator_data */ + JS_CLASS_SET_ITERATOR, /* u.map_iterator_data */ + JS_CLASS_ARRAY_ITERATOR, /* u.array_iterator_data */ + JS_CLASS_STRING_ITERATOR, /* u.array_iterator_data */ + JS_CLASS_REGEXP_STRING_ITERATOR, /* u.regexp_string_iterator_data */ + JS_CLASS_GENERATOR, /* u.generator_data */ + JS_CLASS_PROXY, /* u.proxy_data */ + JS_CLASS_PROMISE, /* u.promise_data */ + JS_CLASS_PROMISE_RESOLVE_FUNCTION, /* u.promise_function_data */ + JS_CLASS_PROMISE_REJECT_FUNCTION, /* u.promise_function_data */ + JS_CLASS_ASYNC_FUNCTION, /* u.func */ + JS_CLASS_ASYNC_FUNCTION_RESOLVE, /* u.async_function_data */ + JS_CLASS_ASYNC_FUNCTION_REJECT, /* u.async_function_data */ + JS_CLASS_ASYNC_FROM_SYNC_ITERATOR, /* u.async_from_sync_iterator_data */ + JS_CLASS_ASYNC_GENERATOR_FUNCTION, /* u.func */ + JS_CLASS_ASYNC_GENERATOR, /* u.async_generator_data */ + + JS_CLASS_INIT_COUNT, /* last entry for predefined classes */ +}; + +/* number of typed array types */ +#define JS_TYPED_ARRAY_COUNT (JS_CLASS_FLOAT64_ARRAY - JS_CLASS_UINT8C_ARRAY + 1) +static uint8_t const typed_array_size_log2[JS_TYPED_ARRAY_COUNT]; +#define typed_array_size_log2(classid) (typed_array_size_log2[(classid)- JS_CLASS_UINT8C_ARRAY]) + +typedef enum JSErrorEnum { + JS_EVAL_ERROR, + JS_RANGE_ERROR, + JS_REFERENCE_ERROR, + JS_SYNTAX_ERROR, + JS_TYPE_ERROR, + JS_URI_ERROR, + JS_INTERNAL_ERROR, + JS_AGGREGATE_ERROR, + + JS_NATIVE_ERROR_COUNT, /* number of different NativeError objects */ +} JSErrorEnum; + +#define JS_MAX_LOCAL_VARS 65536 +#define JS_STACK_SIZE_MAX 65534 +#define JS_STRING_LEN_MAX ((1 << 30) - 1) + +#define __exception __attribute__((warn_unused_result)) + +typedef struct JSShape JSShape; +typedef struct JSString JSString; +typedef struct JSString JSAtomStruct; + +typedef enum { + JS_GC_PHASE_NONE, + JS_GC_PHASE_DECREF, + JS_GC_PHASE_REMOVE_CYCLES, +} JSGCPhaseEnum; + +typedef enum OPCodeEnum OPCodeEnum; + +#ifdef CONFIG_BIGNUM +/* function pointers are used for numeric operations so that it is + possible to remove some numeric types */ +typedef struct { + JSValue (*to_string)(JSContext *ctx, JSValueConst val); + JSValue (*from_string)(JSContext *ctx, const char *buf, + int radix, int flags, slimb_t *pexponent); + int (*unary_arith)(JSContext *ctx, + JSValue *pres, OPCodeEnum op, JSValue op1); + int (*binary_arith)(JSContext *ctx, OPCodeEnum op, + JSValue *pres, JSValue op1, JSValue op2); + int (*compare)(JSContext *ctx, OPCodeEnum op, + JSValue op1, JSValue op2); + /* only for bigfloat: */ + JSValue (*mul_pow10_to_float64)(JSContext *ctx, const bf_t *a, + int64_t exponent); + int (*mul_pow10)(JSContext *ctx, JSValue *sp); +} JSNumericOperations; +#endif + +struct JSRuntime { + JSMallocFunctions mf; + JSMallocState malloc_state; + const char *rt_info; + + int atom_hash_size; /* power of two */ + int atom_count; + int atom_size; + int atom_count_resize; /* resize hash table at this count */ + uint32_t *atom_hash; + JSAtomStruct **atom_array; + int atom_free_index; /* 0 = none */ + + int class_count; /* size of class_array */ + JSClass *class_array; + + struct list_head context_list; /* list of JSContext.link */ + /* list of JSGCObjectHeader.link. List of allocated GC objects (used + by the garbage collector) */ + struct list_head gc_obj_list; + /* list of JSGCObjectHeader.link. Used during JS_FreeValueRT() */ + struct list_head gc_zero_ref_count_list; + struct list_head tmp_obj_list; /* used during GC */ + JSGCPhaseEnum gc_phase : 8; + size_t malloc_gc_threshold; +#ifdef DUMP_LEAKS + struct list_head string_list; /* list of JSString.link */ +#endif + /* stack limitation */ + uintptr_t stack_size; /* in bytes, 0 if no limit */ + uintptr_t stack_top; + uintptr_t stack_limit; /* lower stack limit */ + + JSValue current_exception; + /* true if inside an out of memory error, to avoid recursing */ + BOOL in_out_of_memory : 8; + + struct JSStackFrame *current_stack_frame; + + JSInterruptHandler *interrupt_handler; + void *interrupt_opaque; + + JSHostPromiseRejectionTracker *host_promise_rejection_tracker; + void *host_promise_rejection_tracker_opaque; + + struct list_head job_list; /* list of JSJobEntry.link */ + + JSModuleNormalizeFunc *module_normalize_func; + JSModuleLoaderFunc *module_loader_func; + void *module_loader_opaque; + + BOOL can_block : 8; /* TRUE if Atomics.wait can block */ + /* used to allocate, free and clone SharedArrayBuffers */ + JSSharedArrayBufferFunctions sab_funcs; + + /* Shape hash table */ + int shape_hash_bits; + int shape_hash_size; + int shape_hash_count; /* number of hashed shapes */ + JSShape **shape_hash; +#ifdef CONFIG_BIGNUM + bf_context_t bf_ctx; + JSNumericOperations bigint_ops; + JSNumericOperations bigfloat_ops; + JSNumericOperations bigdecimal_ops; + uint32_t operator_count; +#endif + void *user_opaque; +}; + +struct JSClass { + uint32_t class_id; /* 0 means free entry */ + JSAtom class_name; + JSClassFinalizer *finalizer; + JSClassGCMark *gc_mark; + JSClassCall *call; + /* pointers for exotic behavior, can be NULL if none are present */ + const JSClassExoticMethods *exotic; +}; + +#define JS_MODE_STRICT (1 << 0) +#define JS_MODE_STRIP (1 << 1) +#define JS_MODE_MATH (1 << 2) + +typedef struct JSStackFrame { + struct JSStackFrame *prev_frame; /* NULL if first stack frame */ + JSValue cur_func; /* current function, JS_UNDEFINED if the frame is detached */ + JSValue *arg_buf; /* arguments */ + JSValue *var_buf; /* variables */ + struct list_head var_ref_list; /* list of JSVarRef.link */ + const uint8_t *cur_pc; /* only used in bytecode functions : PC of the + instruction after the call */ + int arg_count; + int js_mode; /* 0 or JS_MODE_MATH for C functions */ + /* only used in generators. Current stack pointer value. NULL if + the function is running. */ + JSValue *cur_sp; +} JSStackFrame; + +typedef enum { + JS_GC_OBJ_TYPE_JS_OBJECT, + JS_GC_OBJ_TYPE_FUNCTION_BYTECODE, + JS_GC_OBJ_TYPE_SHAPE, + JS_GC_OBJ_TYPE_VAR_REF, + JS_GC_OBJ_TYPE_ASYNC_FUNCTION, + JS_GC_OBJ_TYPE_JS_CONTEXT, +} JSGCObjectTypeEnum; + +/* header for GC objects. GC objects are C data structures with a + reference count that can reference other GC objects. JS Objects are + a particular type of GC object. */ +struct JSGCObjectHeader { + int ref_count; /* must come first, 32-bit */ + JSGCObjectTypeEnum gc_obj_type : 4; + uint8_t mark : 4; /* used by the GC */ + uint8_t dummy1; /* not used by the GC */ + uint16_t dummy2; /* not used by the GC */ + struct list_head link; +}; + +typedef struct JSVarRef { + union { + JSGCObjectHeader header; /* must come first */ + struct { + int __gc_ref_count; /* corresponds to header.ref_count */ + uint8_t __gc_mark; /* corresponds to header.mark/gc_obj_type */ + + /* 0 : the JSVarRef is on the stack. header.link is an element + of JSStackFrame.var_ref_list. + 1 : the JSVarRef is detached. header.link has the normal meanning + */ + uint8_t is_detached : 1; + uint8_t is_arg : 1; + uint16_t var_idx; /* index of the corresponding function variable on + the stack */ + }; + }; + JSValue *pvalue; /* pointer to the value, either on the stack or + to 'value' */ + JSValue value; /* used when the variable is no longer on the stack */ +} JSVarRef; + +#ifdef CONFIG_BIGNUM +typedef struct JSFloatEnv { + limb_t prec; + bf_flags_t flags; + unsigned int status; +} JSFloatEnv; + +/* the same structure is used for big integers and big floats. Big + integers are never infinite or NaNs */ +typedef struct JSBigFloat { + JSRefCountHeader header; /* must come first, 32-bit */ + bf_t num; +} JSBigFloat; + +typedef struct JSBigDecimal { + JSRefCountHeader header; /* must come first, 32-bit */ + bfdec_t num; +} JSBigDecimal; +#endif + +typedef enum { + JS_AUTOINIT_ID_PROTOTYPE, + JS_AUTOINIT_ID_MODULE_NS, + JS_AUTOINIT_ID_PROP, +} JSAutoInitIDEnum; + +/* must be large enough to have a negligible runtime cost and small + enough to call the interrupt callback often. */ +#define JS_INTERRUPT_COUNTER_INIT 10000 + +struct JSContext { + JSGCObjectHeader header; /* must come first */ + JSRuntime *rt; + struct list_head link; + + uint16_t binary_object_count; + int binary_object_size; + + JSShape *array_shape; /* initial shape for Array objects */ + + JSValue *class_proto; + JSValue function_proto; + JSValue function_ctor; + JSValue array_ctor; + JSValue regexp_ctor; + JSValue promise_ctor; + JSValue native_error_proto[JS_NATIVE_ERROR_COUNT]; + JSValue iterator_proto; + JSValue async_iterator_proto; + JSValue array_proto_values; + JSValue throw_type_error; + JSValue eval_obj; + + JSValue global_obj; /* global object */ + JSValue global_var_obj; /* contains the global let/const definitions */ + + uint64_t random_state; +#ifdef CONFIG_BIGNUM + bf_context_t *bf_ctx; /* points to rt->bf_ctx, shared by all contexts */ + JSFloatEnv fp_env; /* global FP environment */ + BOOL bignum_ext : 8; /* enable math mode */ + BOOL allow_operator_overloading : 8; +#endif + /* when the counter reaches zero, JSRutime.interrupt_handler is called */ + int interrupt_counter; + BOOL is_error_property_enabled; + + struct list_head loaded_modules; /* list of JSModuleDef.link */ + + /* if NULL, RegExp compilation is not supported */ + JSValue (*compile_regexp)(JSContext *ctx, JSValueConst pattern, + JSValueConst flags); + /* if NULL, eval is not supported */ + JSValue (*eval_internal)(JSContext *ctx, JSValueConst this_obj, + const char *input, size_t input_len, + const char *filename, int flags, int scope_idx); + void *user_opaque; +}; + +typedef union JSFloat64Union { + double d; + uint64_t u64; + uint32_t u32[2]; +} JSFloat64Union; + +enum { + JS_ATOM_TYPE_STRING = 1, + JS_ATOM_TYPE_GLOBAL_SYMBOL, + JS_ATOM_TYPE_SYMBOL, + JS_ATOM_TYPE_PRIVATE, +}; + +enum { + JS_ATOM_HASH_SYMBOL, + JS_ATOM_HASH_PRIVATE, +}; + +typedef enum { + JS_ATOM_KIND_STRING, + JS_ATOM_KIND_SYMBOL, + JS_ATOM_KIND_PRIVATE, +} JSAtomKindEnum; + +#define JS_ATOM_HASH_MASK ((1 << 30) - 1) + +struct JSString { + JSRefCountHeader header; /* must come first, 32-bit */ + uint32_t len : 31; + uint8_t is_wide_char : 1; /* 0 = 8 bits, 1 = 16 bits characters */ + /* for JS_ATOM_TYPE_SYMBOL: hash = 0, atom_type = 3, + for JS_ATOM_TYPE_PRIVATE: hash = 1, atom_type = 3 + XXX: could change encoding to have one more bit in hash */ + uint32_t hash : 30; + uint8_t atom_type : 2; /* != 0 if atom, JS_ATOM_TYPE_x */ + uint32_t hash_next; /* atom_index for JS_ATOM_TYPE_SYMBOL */ +#ifdef DUMP_LEAKS + struct list_head link; /* string list */ +#endif + union { + uint8_t str8[0]; /* 8 bit strings will get an extra null terminator */ + uint16_t str16[0]; + } u; +}; + +typedef struct JSClosureVar { + uint8_t is_local : 1; + uint8_t is_arg : 1; + uint8_t is_const : 1; + uint8_t is_lexical : 1; + uint8_t var_kind : 4; /* see JSVarKindEnum */ + /* 8 bits available */ + uint16_t var_idx; /* is_local = TRUE: index to a normal variable of the + parent function. otherwise: index to a closure + variable of the parent function */ + JSAtom var_name; +} JSClosureVar; + +#define ARG_SCOPE_INDEX 1 +#define ARG_SCOPE_END (-2) + +typedef struct JSVarScope { + int parent; /* index into fd->scopes of the enclosing scope */ + int first; /* index into fd->vars of the last variable in this scope */ +} JSVarScope; + +typedef enum { + /* XXX: add more variable kinds here instead of using bit fields */ + JS_VAR_NORMAL, + JS_VAR_FUNCTION_DECL, /* lexical var with function declaration */ + JS_VAR_NEW_FUNCTION_DECL, /* lexical var with async/generator + function declaration */ + JS_VAR_CATCH, + JS_VAR_FUNCTION_NAME, /* function expression name */ + JS_VAR_PRIVATE_FIELD, + JS_VAR_PRIVATE_METHOD, + JS_VAR_PRIVATE_GETTER, + JS_VAR_PRIVATE_SETTER, /* must come after JS_VAR_PRIVATE_GETTER */ + JS_VAR_PRIVATE_GETTER_SETTER, /* must come after JS_VAR_PRIVATE_SETTER */ +} JSVarKindEnum; + +/* XXX: could use a different structure in bytecode functions to save + memory */ +typedef struct JSVarDef { + JSAtom var_name; + /* index into fd->scopes of this variable lexical scope */ + int scope_level; + /* during compilation: + - if scope_level = 0: scope in which the variable is defined + - if scope_level != 0: index into fd->vars of the next + variable in the same or enclosing lexical scope + in a bytecode function: + index into fd->vars of the next + variable in the same or enclosing lexical scope + */ + int scope_next; + uint8_t is_const : 1; + uint8_t is_lexical : 1; + uint8_t is_captured : 1; + uint8_t var_kind : 4; /* see JSVarKindEnum */ + /* only used during compilation: function pool index for lexical + variables with var_kind = + JS_VAR_FUNCTION_DECL/JS_VAR_NEW_FUNCTION_DECL or scope level of + the definition of the 'var' variables (they have scope_level = + 0) */ + int func_pool_idx : 24; /* only used during compilation : index in + the constant pool for hoisted function + definition */ +} JSVarDef; + +/* for the encoding of the pc2line table */ +#define PC2LINE_BASE (-1) +#define PC2LINE_RANGE 5 +#define PC2LINE_OP_FIRST 1 +#define PC2LINE_DIFF_PC_MAX ((255 - PC2LINE_OP_FIRST) / PC2LINE_RANGE) + +typedef enum JSFunctionKindEnum { + JS_FUNC_NORMAL = 0, + JS_FUNC_GENERATOR = (1 << 0), + JS_FUNC_ASYNC = (1 << 1), + JS_FUNC_ASYNC_GENERATOR = (JS_FUNC_GENERATOR | JS_FUNC_ASYNC), +} JSFunctionKindEnum; + +typedef struct JSFunctionBytecode { + JSGCObjectHeader header; /* must come first */ + uint8_t js_mode; + uint8_t has_prototype : 1; /* true if a prototype field is necessary */ + uint8_t has_simple_parameter_list : 1; + uint8_t is_derived_class_constructor : 1; + /* true if home_object needs to be initialized */ + uint8_t need_home_object : 1; + uint8_t func_kind : 2; + uint8_t new_target_allowed : 1; + uint8_t super_call_allowed : 1; + uint8_t super_allowed : 1; + uint8_t arguments_allowed : 1; + uint8_t has_debug : 1; + uint8_t backtrace_barrier : 1; /* stop backtrace on this function */ + uint8_t read_only_bytecode : 1; + /* XXX: 4 bits available */ + uint8_t *byte_code_buf; /* (self pointer) */ + int byte_code_len; + JSAtom func_name; + JSVarDef *vardefs; /* arguments + local variables (arg_count + var_count) (self pointer) */ + JSClosureVar *closure_var; /* list of variables in the closure (self pointer) */ + uint16_t arg_count; + uint16_t var_count; + uint16_t defined_arg_count; /* for length function property */ + uint16_t stack_size; /* maximum stack size */ + JSContext *realm; /* function realm */ + JSValue *cpool; /* constant pool (self pointer) */ + int cpool_count; + int closure_var_count; + struct { + /* debug info, move to separate structure to save memory? */ + JSAtom filename; + int line_num; + int source_len; + int pc2line_len; + uint8_t *pc2line_buf; + char *source; + } debug; +} JSFunctionBytecode; + +typedef struct JSBoundFunction { + JSValue func_obj; + JSValue this_val; + int argc; + JSValue argv[0]; +} JSBoundFunction; + +typedef enum JSIteratorKindEnum { + JS_ITERATOR_KIND_KEY, + JS_ITERATOR_KIND_VALUE, + JS_ITERATOR_KIND_KEY_AND_VALUE, +} JSIteratorKindEnum; + +typedef struct JSForInIterator { + JSValue obj; + BOOL is_array; + uint32_t array_length; + uint32_t idx; +} JSForInIterator; + +typedef struct JSRegExp { + JSString *pattern; + JSString *bytecode; /* also contains the flags */ +} JSRegExp; + +typedef struct JSProxyData { + JSValue target; + JSValue handler; + uint8_t is_func; + uint8_t is_revoked; +} JSProxyData; + +typedef struct JSArrayBuffer { + int byte_length; /* 0 if detached */ + uint8_t detached; + uint8_t shared; /* if shared, the array buffer cannot be detached */ + uint8_t *data; /* NULL if detached */ + struct list_head array_list; + void *opaque; + JSFreeArrayBufferDataFunc *free_func; +} JSArrayBuffer; + +typedef struct JSTypedArray { + struct list_head link; /* link to arraybuffer */ + JSObject *obj; /* back pointer to the TypedArray/DataView object */ + JSObject *buffer; /* based array buffer */ + uint32_t offset; /* offset in the array buffer */ + uint32_t length; /* length in the array buffer */ +} JSTypedArray; + +typedef struct JSAsyncFunctionState { + JSValue this_val; /* 'this' generator argument */ + int argc; /* number of function arguments */ + BOOL throw_flag; /* used to throw an exception in JS_CallInternal() */ + JSStackFrame frame; +} JSAsyncFunctionState; + +/* XXX: could use an object instead to avoid the + JS_TAG_ASYNC_FUNCTION tag for the GC */ +typedef struct JSAsyncFunctionData { + JSGCObjectHeader header; /* must come first */ + JSValue resolving_funcs[2]; + BOOL is_active; /* true if the async function state is valid */ + JSAsyncFunctionState func_state; +} JSAsyncFunctionData; + +typedef enum { + /* binary operators */ + JS_OVOP_ADD, + JS_OVOP_SUB, + JS_OVOP_MUL, + JS_OVOP_DIV, + JS_OVOP_MOD, + JS_OVOP_POW, + JS_OVOP_OR, + JS_OVOP_AND, + JS_OVOP_XOR, + JS_OVOP_SHL, + JS_OVOP_SAR, + JS_OVOP_SHR, + JS_OVOP_EQ, + JS_OVOP_LESS, + + JS_OVOP_BINARY_COUNT, + /* unary operators */ + JS_OVOP_POS = JS_OVOP_BINARY_COUNT, + JS_OVOP_NEG, + JS_OVOP_INC, + JS_OVOP_DEC, + JS_OVOP_NOT, + + JS_OVOP_COUNT, +} JSOverloadableOperatorEnum; + +typedef struct { + uint32_t operator_index; + JSObject *ops[JS_OVOP_BINARY_COUNT]; /* self operators */ +} JSBinaryOperatorDefEntry; + +typedef struct { + int count; + JSBinaryOperatorDefEntry *tab; +} JSBinaryOperatorDef; + +typedef struct { + uint32_t operator_counter; + BOOL is_primitive; /* OperatorSet for a primitive type */ + /* NULL if no operator is defined */ + JSObject *self_ops[JS_OVOP_COUNT]; /* self operators */ + JSBinaryOperatorDef left; + JSBinaryOperatorDef right; +} JSOperatorSetData; + +typedef struct JSReqModuleEntry { + JSAtom module_name; + JSModuleDef *module; /* used using resolution */ +} JSReqModuleEntry; + +typedef enum JSExportTypeEnum { + JS_EXPORT_TYPE_LOCAL, + JS_EXPORT_TYPE_INDIRECT, +} JSExportTypeEnum; + +typedef struct JSExportEntry { + union { + struct { + int var_idx; /* closure variable index */ + JSVarRef *var_ref; /* if != NULL, reference to the variable */ + } local; /* for local export */ + int req_module_idx; /* module for indirect export */ + } u; + JSExportTypeEnum export_type; + JSAtom local_name; /* '*' if export ns from. not used for local + export after compilation */ + JSAtom export_name; /* exported variable name */ +} JSExportEntry; + +typedef struct JSStarExportEntry { + int req_module_idx; /* in req_module_entries */ +} JSStarExportEntry; + +typedef struct JSImportEntry { + int var_idx; /* closure variable index */ + JSAtom import_name; + int req_module_idx; /* in req_module_entries */ +} JSImportEntry; + +struct JSModuleDef { + JSRefCountHeader header; /* must come first, 32-bit */ + JSAtom module_name; + struct list_head link; + + JSReqModuleEntry *req_module_entries; + int req_module_entries_count; + int req_module_entries_size; + + JSExportEntry *export_entries; + int export_entries_count; + int export_entries_size; + + JSStarExportEntry *star_export_entries; + int star_export_entries_count; + int star_export_entries_size; + + JSImportEntry *import_entries; + int import_entries_count; + int import_entries_size; + + JSValue module_ns; + JSValue func_obj; /* only used for JS modules */ + JSModuleInitFunc *init_func; /* only used for C modules */ + BOOL resolved : 8; + BOOL func_created : 8; + BOOL instantiated : 8; + BOOL evaluated : 8; + BOOL eval_mark : 8; /* temporary use during js_evaluate_module() */ + /* true if evaluation yielded an exception. It is saved in + eval_exception */ + BOOL eval_has_exception : 8; + JSValue eval_exception; + JSValue meta_obj; /* for import.meta */ +}; + +typedef struct JSJobEntry { + struct list_head link; + JSContext *ctx; + JSJobFunc *job_func; + int argc; + JSValue argv[0]; +} JSJobEntry; + +typedef struct JSProperty { + union { + JSValue value; /* JS_PROP_NORMAL */ + struct { /* JS_PROP_GETSET */ + JSObject *getter; /* NULL if undefined */ + JSObject *setter; /* NULL if undefined */ + } getset; + JSVarRef *var_ref; /* JS_PROP_VARREF */ + struct { /* JS_PROP_AUTOINIT */ + /* in order to use only 2 pointers, we compress the realm + and the init function pointer */ + uintptr_t realm_and_id; /* realm and init_id (JS_AUTOINIT_ID_x) + in the 2 low bits */ + void *opaque; + } init; + } u; +} JSProperty; + +#define JS_PROP_INITIAL_SIZE 2 +#define JS_PROP_INITIAL_HASH_SIZE 4 /* must be a power of two */ +#define JS_ARRAY_INITIAL_SIZE 2 + +typedef struct JSShapeProperty { + uint32_t hash_next : 26; /* 0 if last in list */ + uint32_t flags : 6; /* JS_PROP_XXX */ + JSAtom atom; /* JS_ATOM_NULL = free property entry */ +} JSShapeProperty; + +struct JSShape { + /* hash table of size hash_mask + 1 before the start of the + structure (see prop_hash_end()). */ + JSGCObjectHeader header; + /* true if the shape is inserted in the shape hash table. If not, + JSShape.hash is not valid */ + uint8_t is_hashed; + /* If true, the shape may have small array index properties 'n' with 0 + <= n <= 2^31-1. If false, the shape is guaranteed not to have + small array index properties */ + uint8_t has_small_array_index; + uint32_t hash; /* current hash value */ + uint32_t prop_hash_mask; + int prop_size; /* allocated properties */ + int prop_count; /* include deleted properties */ + int deleted_prop_count; + JSShape *shape_hash_next; /* in JSRuntime.shape_hash[h] list */ + JSObject *proto; + JSShapeProperty prop[0]; /* prop_size elements */ +}; + +struct JSObject { + union { + JSGCObjectHeader header; + struct { + int __gc_ref_count; /* corresponds to header.ref_count */ + uint8_t __gc_mark; /* corresponds to header.mark/gc_obj_type */ + + uint8_t extensible : 1; + uint8_t free_mark : 1; /* only used when freeing objects with cycles */ + uint8_t is_exotic : 1; /* TRUE if object has exotic property handlers */ + uint8_t fast_array : 1; /* TRUE if u.array is used for get/put (for JS_CLASS_ARRAY, JS_CLASS_ARGUMENTS and typed arrays) */ + uint8_t is_constructor : 1; /* TRUE if object is a constructor function */ + uint8_t is_uncatchable_error : 1; /* if TRUE, error is not catchable */ + uint8_t tmp_mark : 1; /* used in JS_WriteObjectRec() */ + uint8_t is_HTMLDDA : 1; /* specific annex B IsHtmlDDA behavior */ + uint16_t class_id; /* see JS_CLASS_x */ + }; + }; + /* byte offsets: 16/24 */ + JSShape *shape; /* prototype and property names + flag */ + JSProperty *prop; /* array of properties */ + /* byte offsets: 24/40 */ + struct JSMapRecord *first_weak_ref; /* XXX: use a bit and an external hash table? */ + /* byte offsets: 28/48 */ + union { + void *opaque; + struct JSBoundFunction *bound_function; /* JS_CLASS_BOUND_FUNCTION */ + struct JSCFunctionDataRecord *c_function_data_record; /* JS_CLASS_C_FUNCTION_DATA */ + struct JSForInIterator *for_in_iterator; /* JS_CLASS_FOR_IN_ITERATOR */ + struct JSArrayBuffer *array_buffer; /* JS_CLASS_ARRAY_BUFFER, JS_CLASS_SHARED_ARRAY_BUFFER */ + struct JSTypedArray *typed_array; /* JS_CLASS_UINT8C_ARRAY..JS_CLASS_DATAVIEW */ +#ifdef CONFIG_BIGNUM + struct JSFloatEnv *float_env; /* JS_CLASS_FLOAT_ENV */ + struct JSOperatorSetData *operator_set; /* JS_CLASS_OPERATOR_SET */ +#endif + struct JSMapState *map_state; /* JS_CLASS_MAP..JS_CLASS_WEAKSET */ + struct JSMapIteratorData *map_iterator_data; /* JS_CLASS_MAP_ITERATOR, JS_CLASS_SET_ITERATOR */ + struct JSArrayIteratorData *array_iterator_data; /* JS_CLASS_ARRAY_ITERATOR, JS_CLASS_STRING_ITERATOR */ + struct JSRegExpStringIteratorData *regexp_string_iterator_data; /* JS_CLASS_REGEXP_STRING_ITERATOR */ + struct JSGeneratorData *generator_data; /* JS_CLASS_GENERATOR */ + struct JSProxyData *proxy_data; /* JS_CLASS_PROXY */ + struct JSPromiseData *promise_data; /* JS_CLASS_PROMISE */ + struct JSPromiseFunctionData *promise_function_data; /* JS_CLASS_PROMISE_RESOLVE_FUNCTION, JS_CLASS_PROMISE_REJECT_FUNCTION */ + struct JSAsyncFunctionData *async_function_data; /* JS_CLASS_ASYNC_FUNCTION_RESOLVE, JS_CLASS_ASYNC_FUNCTION_REJECT */ + struct JSAsyncFromSyncIteratorData *async_from_sync_iterator_data; /* JS_CLASS_ASYNC_FROM_SYNC_ITERATOR */ + struct JSAsyncGeneratorData *async_generator_data; /* JS_CLASS_ASYNC_GENERATOR */ + struct { /* JS_CLASS_BYTECODE_FUNCTION: 12/24 bytes */ + /* also used by JS_CLASS_GENERATOR_FUNCTION, JS_CLASS_ASYNC_FUNCTION and JS_CLASS_ASYNC_GENERATOR_FUNCTION */ + struct JSFunctionBytecode *function_bytecode; + JSVarRef **var_refs; + JSObject *home_object; /* for 'super' access */ + } func; + struct { /* JS_CLASS_C_FUNCTION: 12/20 bytes */ + JSContext *realm; + JSCFunctionType c_function; + uint8_t length; + uint8_t cproto; + int16_t magic; + } cfunc; + /* array part for fast arrays and typed arrays */ + struct { /* JS_CLASS_ARRAY, JS_CLASS_ARGUMENTS, JS_CLASS_UINT8C_ARRAY..JS_CLASS_FLOAT64_ARRAY */ + union { + uint32_t size; /* JS_CLASS_ARRAY, JS_CLASS_ARGUMENTS */ + struct JSTypedArray *typed_array; /* JS_CLASS_UINT8C_ARRAY..JS_CLASS_FLOAT64_ARRAY */ + } u1; + union { + JSValue *values; /* JS_CLASS_ARRAY, JS_CLASS_ARGUMENTS */ + void *ptr; /* JS_CLASS_UINT8C_ARRAY..JS_CLASS_FLOAT64_ARRAY */ + int8_t *int8_ptr; /* JS_CLASS_INT8_ARRAY */ + uint8_t *uint8_ptr; /* JS_CLASS_UINT8_ARRAY, JS_CLASS_UINT8C_ARRAY */ + int16_t *int16_ptr; /* JS_CLASS_INT16_ARRAY */ + uint16_t *uint16_ptr; /* JS_CLASS_UINT16_ARRAY */ + int32_t *int32_ptr; /* JS_CLASS_INT32_ARRAY */ + uint32_t *uint32_ptr; /* JS_CLASS_UINT32_ARRAY */ + int64_t *int64_ptr; /* JS_CLASS_INT64_ARRAY */ + uint64_t *uint64_ptr; /* JS_CLASS_UINT64_ARRAY */ + float *float_ptr; /* JS_CLASS_FLOAT32_ARRAY */ + double *double_ptr; /* JS_CLASS_FLOAT64_ARRAY */ + } u; + uint32_t count; /* <= 2^31-1. 0 for a detached typed array */ + } array; /* 12/20 bytes */ + JSRegExp regexp; /* JS_CLASS_REGEXP: 8/16 bytes */ + JSValue object_data; /* for JS_SetObjectData(): 8/16/16 bytes */ + } u; + /* byte sizes: 40/48/72 */ +}; +enum { + __JS_ATOM_NULL = JS_ATOM_NULL, +#define DEF(name, str) JS_ATOM_ ## name, +#include "quickjs-atom.h" +#undef DEF + JS_ATOM_END, +}; +#define JS_ATOM_LAST_KEYWORD JS_ATOM_super +#define JS_ATOM_LAST_STRICT_KEYWORD JS_ATOM_yield + +static const char js_atom_init[] = +#define DEF(name, str) str "\0" +#include "quickjs-atom.h" +#undef DEF +; + +typedef enum OPCodeFormat { +#define FMT(f) OP_FMT_ ## f, +#define DEF(id, size, n_pop, n_push, f) +#include "quickjs-opcode.h" +#undef DEF +#undef FMT +} OPCodeFormat; + +enum OPCodeEnum { +#define FMT(f) +#define DEF(id, size, n_pop, n_push, f) OP_ ## id, +#define def(id, size, n_pop, n_push, f) +#include "quickjs-opcode.h" +#undef def +#undef DEF +#undef FMT + OP_COUNT, /* excluding temporary opcodes */ + /* temporary opcodes : overlap with the short opcodes */ + OP_TEMP_START = OP_nop + 1, + OP___dummy = OP_TEMP_START - 1, +#define FMT(f) +#define DEF(id, size, n_pop, n_push, f) +#define def(id, size, n_pop, n_push, f) OP_ ## id, +#include "quickjs-opcode.h" +#undef def +#undef DEF +#undef FMT + OP_TEMP_END, +}; + +static int JS_InitAtoms(JSRuntime *rt); +static JSAtom __JS_NewAtomInit(JSRuntime *rt, const char *str, int len, + int atom_type); +static void JS_FreeAtomStruct(JSRuntime *rt, JSAtomStruct *p); +static void free_function_bytecode(JSRuntime *rt, JSFunctionBytecode *b); +static JSValue js_call_c_function(JSContext *ctx, JSValueConst func_obj, + JSValueConst this_obj, + int argc, JSValueConst *argv, int flags); +static JSValue js_call_bound_function(JSContext *ctx, JSValueConst func_obj, + JSValueConst this_obj, + int argc, JSValueConst *argv, int flags); +static JSValue JS_CallInternal(JSContext *ctx, JSValueConst func_obj, + JSValueConst this_obj, JSValueConst new_target, + int argc, JSValue *argv, int flags); +static JSValue JS_CallConstructorInternal(JSContext *ctx, + JSValueConst func_obj, + JSValueConst new_target, + int argc, JSValue *argv, int flags); +static JSValue JS_CallFree(JSContext *ctx, JSValue func_obj, JSValueConst this_obj, + int argc, JSValueConst *argv); +static JSValue JS_InvokeFree(JSContext *ctx, JSValue this_val, JSAtom atom, + int argc, JSValueConst *argv); +static __exception int JS_ToArrayLengthFree(JSContext *ctx, uint32_t *plen, + JSValue val, BOOL is_array_ctor); +static JSValue JS_EvalObject(JSContext *ctx, JSValueConst this_obj, + JSValueConst val, int flags, int scope_idx); +JSValue __attribute__((format(printf, 2, 3))) JS_ThrowInternalError(JSContext *ctx, const char *fmt, ...); +static __maybe_unused void JS_DumpAtoms(JSRuntime *rt); +static __maybe_unused void JS_DumpString(JSRuntime *rt, + const JSString *p); +static __maybe_unused void JS_DumpObjectHeader(JSRuntime *rt); +static __maybe_unused void JS_DumpObject(JSRuntime *rt, JSObject *p); +static __maybe_unused void JS_DumpGCObject(JSRuntime *rt, JSGCObjectHeader *p); +static __maybe_unused void JS_DumpValueShort(JSRuntime *rt, + JSValueConst val); +static __maybe_unused void JS_DumpValue(JSContext *ctx, JSValueConst val); +static __maybe_unused void JS_PrintValue(JSContext *ctx, + const char *str, + JSValueConst val); +static __maybe_unused void JS_DumpShapes(JSRuntime *rt); +static JSValue js_function_apply(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv, int magic); +static void js_array_finalizer(JSRuntime *rt, JSValue val); +static void js_array_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_object_data_finalizer(JSRuntime *rt, JSValue val); +static void js_object_data_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_c_function_finalizer(JSRuntime *rt, JSValue val); +static void js_c_function_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_bytecode_function_finalizer(JSRuntime *rt, JSValue val); +static void js_bytecode_function_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_bound_function_finalizer(JSRuntime *rt, JSValue val); +static void js_bound_function_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_for_in_iterator_finalizer(JSRuntime *rt, JSValue val); +static void js_for_in_iterator_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_regexp_finalizer(JSRuntime *rt, JSValue val); +static void js_array_buffer_finalizer(JSRuntime *rt, JSValue val); +static void js_typed_array_finalizer(JSRuntime *rt, JSValue val); +static void js_typed_array_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_proxy_finalizer(JSRuntime *rt, JSValue val); +static void js_proxy_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_map_finalizer(JSRuntime *rt, JSValue val); +static void js_map_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_map_iterator_finalizer(JSRuntime *rt, JSValue val); +static void js_map_iterator_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_array_iterator_finalizer(JSRuntime *rt, JSValue val); +static void js_array_iterator_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_regexp_string_iterator_finalizer(JSRuntime *rt, JSValue val); +static void js_regexp_string_iterator_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_generator_finalizer(JSRuntime *rt, JSValue obj); +static void js_generator_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_promise_finalizer(JSRuntime *rt, JSValue val); +static void js_promise_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static void js_promise_resolve_function_finalizer(JSRuntime *rt, JSValue val); +static void js_promise_resolve_function_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +#ifdef CONFIG_BIGNUM +static void js_operator_set_finalizer(JSRuntime *rt, JSValue val); +static void js_operator_set_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +#endif +static JSValue JS_ToStringFree(JSContext *ctx, JSValue val); +static int JS_ToBoolFree(JSContext *ctx, JSValue val); +static int JS_ToInt32Free(JSContext *ctx, int32_t *pres, JSValue val); +static int JS_ToFloat64Free(JSContext *ctx, double *pres, JSValue val); +static int JS_ToUint8ClampFree(JSContext *ctx, int32_t *pres, JSValue val); +static JSValue js_compile_regexp(JSContext *ctx, JSValueConst pattern, + JSValueConst flags); +static JSValue js_regexp_constructor_internal(JSContext *ctx, JSValueConst ctor, + JSValue pattern, JSValue bc); +static void gc_decref(JSRuntime *rt); +static int JS_NewClass1(JSRuntime *rt, JSClassID class_id, + const JSClassDef *class_def, JSAtom name); + +typedef enum JSStrictEqModeEnum { + JS_EQ_STRICT, + JS_EQ_SAME_VALUE, + JS_EQ_SAME_VALUE_ZERO, +} JSStrictEqModeEnum; + +static BOOL js_strict_eq2(JSContext *ctx, JSValue op1, JSValue op2, + JSStrictEqModeEnum eq_mode); +static BOOL js_strict_eq(JSContext *ctx, JSValue op1, JSValue op2); +static BOOL js_same_value(JSContext *ctx, JSValueConst op1, JSValueConst op2); +static BOOL js_same_value_zero(JSContext *ctx, JSValueConst op1, JSValueConst op2); +static JSValue JS_ToObject(JSContext *ctx, JSValueConst val); +static JSValue JS_ToObjectFree(JSContext *ctx, JSValue val); +static JSProperty *add_property(JSContext *ctx, + JSObject *p, JSAtom prop, int prop_flags); +#ifdef CONFIG_BIGNUM +static void js_float_env_finalizer(JSRuntime *rt, JSValue val); +static JSValue JS_NewBigFloat(JSContext *ctx); +static inline bf_t *JS_GetBigFloat(JSValueConst val) +{ + JSBigFloat *p = JS_VALUE_GET_PTR(val); + return &p->num; +} +static JSValue JS_NewBigDecimal(JSContext *ctx); +static inline bfdec_t *JS_GetBigDecimal(JSValueConst val) +{ + JSBigDecimal *p = JS_VALUE_GET_PTR(val); + return &p->num; +} +static JSValue JS_NewBigInt(JSContext *ctx); +static inline bf_t *JS_GetBigInt(JSValueConst val) +{ + JSBigFloat *p = JS_VALUE_GET_PTR(val); + return &p->num; +} +static JSValue JS_CompactBigInt1(JSContext *ctx, JSValue val, + BOOL convert_to_safe_integer); +static JSValue JS_CompactBigInt(JSContext *ctx, JSValue val); +static int JS_ToBigInt64Free(JSContext *ctx, int64_t *pres, JSValue val); +static bf_t *JS_ToBigInt(JSContext *ctx, bf_t *buf, JSValueConst val); +static void JS_FreeBigInt(JSContext *ctx, bf_t *a, bf_t *buf); +static bf_t *JS_ToBigFloat(JSContext *ctx, bf_t *buf, JSValueConst val); +static JSValue JS_ToBigDecimalFree(JSContext *ctx, JSValue val, + BOOL allow_null_or_undefined); +static bfdec_t *JS_ToBigDecimal(JSContext *ctx, JSValueConst val); +#endif +JSValue JS_ThrowOutOfMemory(JSContext *ctx); +static JSValue JS_ThrowTypeErrorRevokedProxy(JSContext *ctx); +static JSValue js_proxy_getPrototypeOf(JSContext *ctx, JSValueConst obj); +static int js_proxy_setPrototypeOf(JSContext *ctx, JSValueConst obj, + JSValueConst proto_val, BOOL throw_flag); +static int js_proxy_isExtensible(JSContext *ctx, JSValueConst obj); +static int js_proxy_preventExtensions(JSContext *ctx, JSValueConst obj); +static int js_proxy_isArray(JSContext *ctx, JSValueConst obj); +static int JS_CreateProperty(JSContext *ctx, JSObject *p, + JSAtom prop, JSValueConst val, + JSValueConst getter, JSValueConst setter, + int flags); +static int js_string_memcmp(const JSString *p1, const JSString *p2, int len); +static void reset_weak_ref(JSRuntime *rt, JSObject *p); +static JSValue js_array_buffer_constructor3(JSContext *ctx, + JSValueConst new_target, + uint64_t len, JSClassID class_id, + uint8_t *buf, + JSFreeArrayBufferDataFunc *free_func, + void *opaque, BOOL alloc_flag); +static JSArrayBuffer *js_get_array_buffer(JSContext *ctx, JSValueConst obj); +static JSValue js_typed_array_constructor(JSContext *ctx, + JSValueConst this_val, + int argc, JSValueConst *argv, + int classid); +static BOOL typed_array_is_detached(JSContext *ctx, JSObject *p); +static uint32_t typed_array_get_length(JSContext *ctx, JSObject *p); +static JSValue JS_ThrowTypeErrorDetachedArrayBuffer(JSContext *ctx); +static JSVarRef *get_var_ref(JSContext *ctx, JSStackFrame *sf, int var_idx, + BOOL is_arg); +static JSValue js_generator_function_call(JSContext *ctx, JSValueConst func_obj, + JSValueConst this_obj, + int argc, JSValueConst *argv, + int flags); +static void js_async_function_resolve_finalizer(JSRuntime *rt, JSValue val); +static void js_async_function_resolve_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static JSValue JS_EvalInternal(JSContext *ctx, JSValueConst this_obj, + const char *input, size_t input_len, + const char *filename, int flags, int scope_idx); +static void js_free_module_def(JSContext *ctx, JSModuleDef *m); +static void js_mark_module_def(JSRuntime *rt, JSModuleDef *m, + JS_MarkFunc *mark_func); +static JSValue js_import_meta(JSContext *ctx); +static JSValue js_dynamic_import(JSContext *ctx, JSValueConst specifier); +static void free_var_ref(JSRuntime *rt, JSVarRef *var_ref); +static JSValue js_new_promise_capability(JSContext *ctx, + JSValue *resolving_funcs, + JSValueConst ctor); +static __exception int perform_promise_then(JSContext *ctx, + JSValueConst promise, + JSValueConst *resolve_reject, + JSValueConst *cap_resolving_funcs); +static JSValue js_promise_resolve(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv, int magic); +static int js_string_compare(JSContext *ctx, + const JSString *p1, const JSString *p2); +static JSValue JS_ToNumber(JSContext *ctx, JSValueConst val); +static int JS_SetPropertyValue(JSContext *ctx, JSValueConst this_obj, + JSValue prop, JSValue val, int flags); +static int JS_NumberIsInteger(JSContext *ctx, JSValueConst val); +static BOOL JS_NumberIsNegativeOrMinusZero(JSContext *ctx, JSValueConst val); +static JSValue JS_ToNumberFree(JSContext *ctx, JSValue val); +static int JS_GetOwnPropertyInternal(JSContext *ctx, JSPropertyDescriptor *desc, + JSObject *p, JSAtom prop); +static void js_free_desc(JSContext *ctx, JSPropertyDescriptor *desc); +static void async_func_mark(JSRuntime *rt, JSAsyncFunctionState *s, + JS_MarkFunc *mark_func); +static void JS_AddIntrinsicBasicObjects(JSContext *ctx); +static void js_free_shape(JSRuntime *rt, JSShape *sh); +static void js_free_shape_null(JSRuntime *rt, JSShape *sh); +static int js_shape_prepare_update(JSContext *ctx, JSObject *p, + JSShapeProperty **pprs); +static int init_shape_hash(JSRuntime *rt); +static __exception int js_get_length32(JSContext *ctx, uint32_t *pres, + JSValueConst obj); +static __exception int js_get_length64(JSContext *ctx, int64_t *pres, + JSValueConst obj); +static void free_arg_list(JSContext *ctx, JSValue *tab, uint32_t len); +static JSValue *build_arg_list(JSContext *ctx, uint32_t *plen, + JSValueConst array_arg); +static BOOL js_get_fast_array(JSContext *ctx, JSValueConst obj, + JSValue **arrpp, uint32_t *countp); +static JSValue JS_CreateAsyncFromSyncIterator(JSContext *ctx, + JSValueConst sync_iter); +static void js_c_function_data_finalizer(JSRuntime *rt, JSValue val); +static void js_c_function_data_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func); +static JSValue js_c_function_data_call(JSContext *ctx, JSValueConst func_obj, + JSValueConst this_val, + int argc, JSValueConst *argv, int flags); +static JSAtom js_symbol_to_atom(JSContext *ctx, JSValue val); +static void add_gc_object(JSRuntime *rt, JSGCObjectHeader *h, + JSGCObjectTypeEnum type); +static void remove_gc_object(JSGCObjectHeader *h); +static void js_async_function_free0(JSRuntime *rt, JSAsyncFunctionData *s); +static JSValue js_instantiate_prototype(JSContext *ctx, JSObject *p, JSAtom atom, void *opaque); +static JSValue js_module_ns_autoinit(JSContext *ctx, JSObject *p, JSAtom atom, + void *opaque); +static JSValue JS_InstantiateFunctionListItem2(JSContext *ctx, JSObject *p, + JSAtom atom, void *opaque); +void JS_SetUncatchableError(JSContext *ctx, JSValueConst val, BOOL flag); + +static const JSClassExoticMethods js_arguments_exotic_methods; +static const JSClassExoticMethods js_string_exotic_methods; +static const JSClassExoticMethods js_proxy_exotic_methods; +static const JSClassExoticMethods js_module_ns_exotic_methods; +static JSClassID js_class_id_alloc = JS_CLASS_INIT_COUNT; + +static void js_trigger_gc(JSRuntime *rt, size_t size) +{ + BOOL force_gc; +#ifdef FORCE_GC_AT_MALLOC + force_gc = TRUE; +#else + force_gc = ((rt->malloc_state.malloc_size + size) > + rt->malloc_gc_threshold); +#endif + if (force_gc) { +#ifdef DUMP_GC + printf("GC: size=%" PRIu64 "\n", + (uint64_t)rt->malloc_state.malloc_size); +#endif + JS_RunGC(rt); + rt->malloc_gc_threshold = rt->malloc_state.malloc_size + + (rt->malloc_state.malloc_size >> 1); + } +} + +static size_t js_malloc_usable_size_unknown(const void *ptr) +{ + return 0; +} + +void *js_malloc_rt(JSRuntime *rt, size_t size) +{ + return rt->mf.js_malloc(&rt->malloc_state, size); +} + +void js_free_rt(JSRuntime *rt, void *ptr) +{ + rt->mf.js_free(&rt->malloc_state, ptr); +} + +void *js_realloc_rt(JSRuntime *rt, void *ptr, size_t size) +{ + return rt->mf.js_realloc(&rt->malloc_state, ptr, size); +} + +size_t js_malloc_usable_size_rt(JSRuntime *rt, const void *ptr) +{ + return rt->mf.js_malloc_usable_size(ptr); +} + +void *js_mallocz_rt(JSRuntime *rt, size_t size) +{ + void *ptr; + ptr = js_malloc_rt(rt, size); + if (!ptr) + return NULL; + return memset(ptr, 0, size); +} + +#ifdef CONFIG_BIGNUM +/* called by libbf */ +static void *js_bf_realloc(void *opaque, void *ptr, size_t size) +{ + JSRuntime *rt = opaque; + return js_realloc_rt(rt, ptr, size); +} +#endif /* CONFIG_BIGNUM */ + +/* Throw out of memory in case of error */ +void *js_malloc(JSContext *ctx, size_t size) +{ + void *ptr; + ptr = js_malloc_rt(ctx->rt, size); + if (unlikely(!ptr)) { + JS_ThrowOutOfMemory(ctx); + return NULL; + } + return ptr; +} + +/* Throw out of memory in case of error */ +void *js_mallocz(JSContext *ctx, size_t size) +{ + void *ptr; + ptr = js_mallocz_rt(ctx->rt, size); + if (unlikely(!ptr)) { + JS_ThrowOutOfMemory(ctx); + return NULL; + } + return ptr; +} + +void js_free(JSContext *ctx, void *ptr) +{ + js_free_rt(ctx->rt, ptr); +} + +/* Throw out of memory in case of error */ +void *js_realloc(JSContext *ctx, void *ptr, size_t size) +{ + void *ret; + ret = js_realloc_rt(ctx->rt, ptr, size); + if (unlikely(!ret && size != 0)) { + JS_ThrowOutOfMemory(ctx); + return NULL; + } + return ret; +} + +/* store extra allocated size in *pslack if successful */ +void *js_realloc2(JSContext *ctx, void *ptr, size_t size, size_t *pslack) +{ + void *ret; + ret = js_realloc_rt(ctx->rt, ptr, size); + if (unlikely(!ret && size != 0)) { + JS_ThrowOutOfMemory(ctx); + return NULL; + } + if (pslack) { + size_t new_size = js_malloc_usable_size_rt(ctx->rt, ret); + *pslack = (new_size > size) ? new_size - size : 0; + } + return ret; +} + +size_t js_malloc_usable_size(JSContext *ctx, const void *ptr) +{ + return js_malloc_usable_size_rt(ctx->rt, ptr); +} + +/* Throw out of memory exception in case of error */ +char *js_strndup(JSContext *ctx, const char *s, size_t n) +{ + char *ptr; + ptr = js_malloc(ctx, n + 1); + if (ptr) { + memcpy(ptr, s, n); + ptr[n] = '\0'; + } + return ptr; +} + +char *js_strdup(JSContext *ctx, const char *str) +{ + return js_strndup(ctx, str, strlen(str)); +} + +static no_inline int js_realloc_array(JSContext *ctx, void **parray, + int elem_size, int *psize, int req_size) +{ + int new_size; + size_t slack; + void *new_array; + /* XXX: potential arithmetic overflow */ + new_size = max_int(req_size, *psize * 3 / 2); + new_array = js_realloc2(ctx, *parray, new_size * elem_size, &slack); + if (!new_array) + return -1; + new_size += slack / elem_size; + *psize = new_size; + *parray = new_array; + return 0; +} + +/* resize the array and update its size if req_size > *psize */ +static inline int js_resize_array(JSContext *ctx, void **parray, int elem_size, + int *psize, int req_size) +{ + if (unlikely(req_size > *psize)) + return js_realloc_array(ctx, parray, elem_size, psize, req_size); + else + return 0; +} + +static inline void js_dbuf_init(JSContext *ctx, DynBuf *s) +{ + dbuf_init2(s, ctx->rt, (DynBufReallocFunc *)js_realloc_rt); +} + +static inline int is_digit(int c) { + return c >= '0' && c <= '9'; +} + +typedef struct JSClassShortDef { + JSAtom class_name; + JSClassFinalizer *finalizer; + JSClassGCMark *gc_mark; +} JSClassShortDef; + +static JSClassShortDef const js_std_class_def[] = { + { JS_ATOM_Object, NULL, NULL }, /* JS_CLASS_OBJECT */ + { JS_ATOM_Array, js_array_finalizer, js_array_mark }, /* JS_CLASS_ARRAY */ + { JS_ATOM_Error, NULL, NULL }, /* JS_CLASS_ERROR */ + { JS_ATOM_Number, js_object_data_finalizer, js_object_data_mark }, /* JS_CLASS_NUMBER */ + { JS_ATOM_String, js_object_data_finalizer, js_object_data_mark }, /* JS_CLASS_STRING */ + { JS_ATOM_Boolean, js_object_data_finalizer, js_object_data_mark }, /* JS_CLASS_BOOLEAN */ + { JS_ATOM_Symbol, js_object_data_finalizer, js_object_data_mark }, /* JS_CLASS_SYMBOL */ + { JS_ATOM_Arguments, js_array_finalizer, js_array_mark }, /* JS_CLASS_ARGUMENTS */ + { JS_ATOM_Arguments, NULL, NULL }, /* JS_CLASS_MAPPED_ARGUMENTS */ + { JS_ATOM_Date, js_object_data_finalizer, js_object_data_mark }, /* JS_CLASS_DATE */ + { JS_ATOM_Object, NULL, NULL }, /* JS_CLASS_MODULE_NS */ + { JS_ATOM_Function, js_c_function_finalizer, js_c_function_mark }, /* JS_CLASS_C_FUNCTION */ + { JS_ATOM_Function, js_bytecode_function_finalizer, js_bytecode_function_mark }, /* JS_CLASS_BYTECODE_FUNCTION */ + { JS_ATOM_Function, js_bound_function_finalizer, js_bound_function_mark }, /* JS_CLASS_BOUND_FUNCTION */ + { JS_ATOM_Function, js_c_function_data_finalizer, js_c_function_data_mark }, /* JS_CLASS_C_FUNCTION_DATA */ + { JS_ATOM_GeneratorFunction, js_bytecode_function_finalizer, js_bytecode_function_mark }, /* JS_CLASS_GENERATOR_FUNCTION */ + { JS_ATOM_ForInIterator, js_for_in_iterator_finalizer, js_for_in_iterator_mark }, /* JS_CLASS_FOR_IN_ITERATOR */ + { JS_ATOM_RegExp, js_regexp_finalizer, NULL }, /* JS_CLASS_REGEXP */ + { JS_ATOM_ArrayBuffer, js_array_buffer_finalizer, NULL }, /* JS_CLASS_ARRAY_BUFFER */ + { JS_ATOM_SharedArrayBuffer, js_array_buffer_finalizer, NULL }, /* JS_CLASS_SHARED_ARRAY_BUFFER */ + { JS_ATOM_Uint8ClampedArray, js_typed_array_finalizer, js_typed_array_mark }, /* JS_CLASS_UINT8C_ARRAY */ + { JS_ATOM_Int8Array, js_typed_array_finalizer, js_typed_array_mark }, /* JS_CLASS_INT8_ARRAY */ + { JS_ATOM_Uint8Array, js_typed_array_finalizer, js_typed_array_mark }, /* JS_CLASS_UINT8_ARRAY */ + { JS_ATOM_Int16Array, js_typed_array_finalizer, js_typed_array_mark }, /* JS_CLASS_INT16_ARRAY */ + { JS_ATOM_Uint16Array, js_typed_array_finalizer, js_typed_array_mark }, /* JS_CLASS_UINT16_ARRAY */ + { JS_ATOM_Int32Array, js_typed_array_finalizer, js_typed_array_mark }, /* JS_CLASS_INT32_ARRAY */ + { JS_ATOM_Uint32Array, js_typed_array_finalizer, js_typed_array_mark }, /* JS_CLASS_UINT32_ARRAY */ +#ifdef CONFIG_BIGNUM + { JS_ATOM_BigInt64Array, js_typed_array_finalizer, js_typed_array_mark }, /* JS_CLASS_BIG_INT64_ARRAY */ + { JS_ATOM_BigUint64Array, js_typed_array_finalizer, js_typed_array_mark }, /* JS_CLASS_BIG_UINT64_ARRAY */ +#endif + { JS_ATOM_Float32Array, js_typed_array_finalizer, js_typed_array_mark }, /* JS_CLASS_FLOAT32_ARRAY */ + { JS_ATOM_Float64Array, js_typed_array_finalizer, js_typed_array_mark }, /* JS_CLASS_FLOAT64_ARRAY */ + { JS_ATOM_DataView, js_typed_array_finalizer, js_typed_array_mark }, /* JS_CLASS_DATAVIEW */ +#ifdef CONFIG_BIGNUM + { JS_ATOM_BigInt, js_object_data_finalizer, js_object_data_mark }, /* JS_CLASS_BIG_INT */ + { JS_ATOM_BigFloat, js_object_data_finalizer, js_object_data_mark }, /* JS_CLASS_BIG_FLOAT */ + { JS_ATOM_BigFloatEnv, js_float_env_finalizer, NULL }, /* JS_CLASS_FLOAT_ENV */ + { JS_ATOM_BigDecimal, js_object_data_finalizer, js_object_data_mark }, /* JS_CLASS_BIG_DECIMAL */ + { JS_ATOM_OperatorSet, js_operator_set_finalizer, js_operator_set_mark }, /* JS_CLASS_OPERATOR_SET */ +#endif + { JS_ATOM_Map, js_map_finalizer, js_map_mark }, /* JS_CLASS_MAP */ + { JS_ATOM_Set, js_map_finalizer, js_map_mark }, /* JS_CLASS_SET */ + { JS_ATOM_WeakMap, js_map_finalizer, js_map_mark }, /* JS_CLASS_WEAKMAP */ + { JS_ATOM_WeakSet, js_map_finalizer, js_map_mark }, /* JS_CLASS_WEAKSET */ + { JS_ATOM_Map_Iterator, js_map_iterator_finalizer, js_map_iterator_mark }, /* JS_CLASS_MAP_ITERATOR */ + { JS_ATOM_Set_Iterator, js_map_iterator_finalizer, js_map_iterator_mark }, /* JS_CLASS_SET_ITERATOR */ + { JS_ATOM_Array_Iterator, js_array_iterator_finalizer, js_array_iterator_mark }, /* JS_CLASS_ARRAY_ITERATOR */ + { JS_ATOM_String_Iterator, js_array_iterator_finalizer, js_array_iterator_mark }, /* JS_CLASS_STRING_ITERATOR */ + { JS_ATOM_RegExp_String_Iterator, js_regexp_string_iterator_finalizer, js_regexp_string_iterator_mark }, /* JS_CLASS_REGEXP_STRING_ITERATOR */ + { JS_ATOM_Generator, js_generator_finalizer, js_generator_mark }, /* JS_CLASS_GENERATOR */ +}; + +static int init_class_range(JSRuntime *rt, JSClassShortDef const *tab, + int start, int count) +{ + JSClassDef cm_s, *cm = &cm_s; + int i, class_id; + + for(i = 0; i < count; i++) { + class_id = i + start; + memset(cm, 0, sizeof(*cm)); + cm->finalizer = tab[i].finalizer; + cm->gc_mark = tab[i].gc_mark; + if (JS_NewClass1(rt, class_id, cm, tab[i].class_name) < 0) + return -1; + } + return 0; +} + +#ifdef CONFIG_BIGNUM +static JSValue JS_ThrowUnsupportedOperation(JSContext *ctx) +{ + return JS_ThrowTypeError(ctx, "unsupported operation"); +} + +static JSValue invalid_to_string(JSContext *ctx, JSValueConst val) +{ + return JS_ThrowUnsupportedOperation(ctx); +} + +static JSValue invalid_from_string(JSContext *ctx, const char *buf, + int radix, int flags, slimb_t *pexponent) +{ + return JS_NAN; +} + +static int invalid_unary_arith(JSContext *ctx, + JSValue *pres, OPCodeEnum op, JSValue op1) +{ + JS_FreeValue(ctx, op1); + JS_ThrowUnsupportedOperation(ctx); + return -1; +} + +static int invalid_binary_arith(JSContext *ctx, OPCodeEnum op, + JSValue *pres, JSValue op1, JSValue op2) +{ + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + JS_ThrowUnsupportedOperation(ctx); + return -1; +} + +static JSValue invalid_mul_pow10_to_float64(JSContext *ctx, const bf_t *a, + int64_t exponent) +{ + return JS_ThrowUnsupportedOperation(ctx); +} + +static int invalid_mul_pow10(JSContext *ctx, JSValue *sp) +{ + JS_ThrowUnsupportedOperation(ctx); + return -1; +} + +static void set_dummy_numeric_ops(JSNumericOperations *ops) +{ + ops->to_string = invalid_to_string; + ops->from_string = invalid_from_string; + ops->unary_arith = invalid_unary_arith; + ops->binary_arith = invalid_binary_arith; + ops->mul_pow10_to_float64 = invalid_mul_pow10_to_float64; + ops->mul_pow10 = invalid_mul_pow10; +} + +#endif /* CONFIG_BIGNUM */ + +#if !defined(CONFIG_STACK_CHECK) +/* no stack limitation */ +static inline uintptr_t js_get_stack_pointer(void) +{ + return 0; +} + +static inline BOOL js_check_stack_overflow(JSRuntime *rt, size_t alloca_size) +{ + return FALSE; +} +#else +/* Note: OS and CPU dependent */ +static inline uintptr_t js_get_stack_pointer(void) +{ + return (uintptr_t)__builtin_frame_address(0); +} + +static inline BOOL js_check_stack_overflow(JSRuntime *rt, size_t alloca_size) +{ + uintptr_t sp; + sp = js_get_stack_pointer() - alloca_size; + return unlikely(sp < rt->stack_limit); +} +#endif + +JSRuntime *JS_NewRuntime2(const JSMallocFunctions *mf, void *opaque) +{ + JSRuntime *rt; + JSMallocState ms; + + memset(&ms, 0, sizeof(ms)); + ms.opaque = opaque; + ms.malloc_limit = -1; + + rt = mf->js_malloc(&ms, sizeof(JSRuntime)); + if (!rt) + return NULL; + memset(rt, 0, sizeof(*rt)); + rt->mf = *mf; + if (!rt->mf.js_malloc_usable_size) { + /* use dummy function if none provided */ + rt->mf.js_malloc_usable_size = js_malloc_usable_size_unknown; + } + rt->malloc_state = ms; + rt->malloc_gc_threshold = 256 * 1024; + +#ifdef CONFIG_BIGNUM + bf_context_init(&rt->bf_ctx, js_bf_realloc, rt); + set_dummy_numeric_ops(&rt->bigint_ops); + set_dummy_numeric_ops(&rt->bigfloat_ops); + set_dummy_numeric_ops(&rt->bigdecimal_ops); +#endif + + init_list_head(&rt->context_list); + init_list_head(&rt->gc_obj_list); + init_list_head(&rt->gc_zero_ref_count_list); + rt->gc_phase = JS_GC_PHASE_NONE; + +#ifdef DUMP_LEAKS + init_list_head(&rt->string_list); +#endif + init_list_head(&rt->job_list); + + if (JS_InitAtoms(rt)) + goto fail; + + /* create the object, array and function classes */ + if (init_class_range(rt, js_std_class_def, JS_CLASS_OBJECT, + countof(js_std_class_def)) < 0) + goto fail; + rt->class_array[JS_CLASS_ARGUMENTS].exotic = &js_arguments_exotic_methods; + rt->class_array[JS_CLASS_STRING].exotic = &js_string_exotic_methods; + rt->class_array[JS_CLASS_MODULE_NS].exotic = &js_module_ns_exotic_methods; + + rt->class_array[JS_CLASS_C_FUNCTION].call = js_call_c_function; + rt->class_array[JS_CLASS_C_FUNCTION_DATA].call = js_c_function_data_call; + rt->class_array[JS_CLASS_BOUND_FUNCTION].call = js_call_bound_function; + rt->class_array[JS_CLASS_GENERATOR_FUNCTION].call = js_generator_function_call; + if (init_shape_hash(rt)) + goto fail; + + rt->stack_size = JS_DEFAULT_STACK_SIZE; + JS_UpdateStackTop(rt); + + rt->current_exception = JS_NULL; + + return rt; + fail: + JS_FreeRuntime(rt); + return NULL; +} + +void *JS_GetRuntimeOpaque(JSRuntime *rt) +{ + return rt->user_opaque; +} + +void JS_SetRuntimeOpaque(JSRuntime *rt, void *opaque) +{ + rt->user_opaque = opaque; +} + +/* default memory allocation functions with memory limitation */ +static inline size_t js_def_malloc_usable_size(void *ptr) +{ +#if defined(__APPLE__) + return malloc_size(ptr); +#elif defined(_WIN32) + return _msize(ptr); +#elif defined(EMSCRIPTEN) + return 0; +#elif defined(__linux__) + return malloc_usable_size(ptr); +#else + /* change this to `return 0;` if compilation fails */ + return malloc_usable_size(ptr); +#endif +} + +static void *js_def_malloc(JSMallocState *s, size_t size) +{ + void *ptr; + + /* Do not allocate zero bytes: behavior is platform dependent */ + assert(size != 0); + + if (unlikely(s->malloc_size + size > s->malloc_limit)) + return NULL; + + ptr = malloc(size); + if (!ptr) + return NULL; + + s->malloc_count++; + s->malloc_size += js_def_malloc_usable_size(ptr) + MALLOC_OVERHEAD; + return ptr; +} + +static void js_def_free(JSMallocState *s, void *ptr) +{ + if (!ptr) + return; + + s->malloc_count--; + s->malloc_size -= js_def_malloc_usable_size(ptr) + MALLOC_OVERHEAD; + free(ptr); +} + +static void *js_def_realloc(JSMallocState *s, void *ptr, size_t size) +{ + size_t old_size; + + if (!ptr) { + if (size == 0) + return NULL; + return js_def_malloc(s, size); + } + old_size = js_def_malloc_usable_size(ptr); + if (size == 0) { + s->malloc_count--; + s->malloc_size -= old_size + MALLOC_OVERHEAD; + free(ptr); + return NULL; + } + if (s->malloc_size + size - old_size > s->malloc_limit) + return NULL; + + ptr = realloc(ptr, size); + if (!ptr) + return NULL; + + s->malloc_size += js_def_malloc_usable_size(ptr) - old_size; + return ptr; +} + +static const JSMallocFunctions def_malloc_funcs = { + js_def_malloc, + js_def_free, + js_def_realloc, +#if defined(__APPLE__) + malloc_size, +#elif defined(_WIN32) + (size_t (*)(const void *))_msize, +#elif defined(EMSCRIPTEN) + NULL, +#elif defined(__linux__) + (size_t (*)(const void *))malloc_usable_size, +#else + /* change this to `NULL,` if compilation fails */ + malloc_usable_size, +#endif +}; + +JSRuntime *JS_NewRuntime(void) +{ + return JS_NewRuntime2(&def_malloc_funcs, NULL); +} + +void JS_SetMemoryLimit(JSRuntime *rt, size_t limit) +{ + rt->malloc_state.malloc_limit = limit; +} + +/* use -1 to disable automatic GC */ +void JS_SetGCThreshold(JSRuntime *rt, size_t gc_threshold) +{ + rt->malloc_gc_threshold = gc_threshold; +} + +#define malloc(s) malloc_is_forbidden(s) +#define free(p) free_is_forbidden(p) +#define realloc(p,s) realloc_is_forbidden(p,s) + +void JS_SetInterruptHandler(JSRuntime *rt, JSInterruptHandler *cb, void *opaque) +{ + rt->interrupt_handler = cb; + rt->interrupt_opaque = opaque; +} + +void JS_SetCanBlock(JSRuntime *rt, BOOL can_block) +{ + rt->can_block = can_block; +} + +void JS_SetSharedArrayBufferFunctions(JSRuntime *rt, + const JSSharedArrayBufferFunctions *sf) +{ + rt->sab_funcs = *sf; +} + +/* return 0 if OK, < 0 if exception */ +int JS_EnqueueJob(JSContext *ctx, JSJobFunc *job_func, + int argc, JSValueConst *argv) +{ + JSRuntime *rt = ctx->rt; + JSJobEntry *e; + int i; + + e = js_malloc(ctx, sizeof(*e) + argc * sizeof(JSValue)); + if (!e) + return -1; + e->ctx = ctx; + e->job_func = job_func; + e->argc = argc; + for(i = 0; i < argc; i++) { + e->argv[i] = JS_DupValue(ctx, argv[i]); + } + list_add_tail(&e->link, &rt->job_list); + return 0; +} + +BOOL JS_IsJobPending(JSRuntime *rt) +{ + return !list_empty(&rt->job_list); +} + +/* return < 0 if exception, 0 if no job pending, 1 if a job was + executed successfully. the context of the job is stored in '*pctx' */ +int JS_ExecutePendingJob(JSRuntime *rt, JSContext **pctx) +{ + JSContext *ctx; + JSJobEntry *e; + JSValue res; + int i, ret; + + if (list_empty(&rt->job_list)) { + *pctx = NULL; + return 0; + } + + /* get the first pending job and execute it */ + e = list_entry(rt->job_list.next, JSJobEntry, link); + list_del(&e->link); + ctx = e->ctx; + res = e->job_func(e->ctx, e->argc, (JSValueConst *)e->argv); + for(i = 0; i < e->argc; i++) + JS_FreeValue(ctx, e->argv[i]); + if (JS_IsException(res)) + ret = -1; + else + ret = 1; + JS_FreeValue(ctx, res); + js_free(ctx, e); + *pctx = ctx; + return ret; +} + +static inline uint32_t atom_get_free(const JSAtomStruct *p) +{ + return (uintptr_t)p >> 1; +} + +static inline BOOL atom_is_free(const JSAtomStruct *p) +{ + return (uintptr_t)p & 1; +} + +static inline JSAtomStruct *atom_set_free(uint32_t v) +{ + return (JSAtomStruct *)(((uintptr_t)v << 1) | 1); +} + +/* Note: the string contents are uninitialized */ +static JSString *js_alloc_string_rt(JSRuntime *rt, int max_len, int is_wide_char) +{ + JSString *str; + str = js_malloc_rt(rt, sizeof(JSString) + (max_len << is_wide_char) + 1 - is_wide_char); + if (unlikely(!str)) + return NULL; + str->header.ref_count = 1; + str->is_wide_char = is_wide_char; + str->len = max_len; + str->atom_type = 0; + str->hash = 0; /* optional but costless */ + str->hash_next = 0; /* optional */ +#ifdef DUMP_LEAKS + list_add_tail(&str->link, &rt->string_list); +#endif + return str; +} + +static JSString *js_alloc_string(JSContext *ctx, int max_len, int is_wide_char) +{ + JSString *p; + p = js_alloc_string_rt(ctx->rt, max_len, is_wide_char); + if (unlikely(!p)) { + JS_ThrowOutOfMemory(ctx); + return NULL; + } + return p; +} + +/* same as JS_FreeValueRT() but faster */ +static inline void js_free_string(JSRuntime *rt, JSString *str) +{ + if (--str->header.ref_count <= 0) { + if (str->atom_type) { + JS_FreeAtomStruct(rt, str); + } else { +#ifdef DUMP_LEAKS + list_del(&str->link); +#endif + js_free_rt(rt, str); + } + } +} + +void JS_SetRuntimeInfo(JSRuntime *rt, const char *s) +{ + if (rt) + rt->rt_info = s; +} + +void JS_FreeRuntime(JSRuntime *rt) +{ + struct list_head *el, *el1; + int i; + + JS_FreeValueRT(rt, rt->current_exception); + + list_for_each_safe(el, el1, &rt->job_list) { + JSJobEntry *e = list_entry(el, JSJobEntry, link); + for(i = 0; i < e->argc; i++) + JS_FreeValueRT(rt, e->argv[i]); + js_free_rt(rt, e); + } + init_list_head(&rt->job_list); + + JS_RunGC(rt); + +#ifdef DUMP_LEAKS + /* leaking objects */ + { + BOOL header_done; + JSGCObjectHeader *p; + int count; + + /* remove the internal refcounts to display only the object + referenced externally */ + list_for_each(el, &rt->gc_obj_list) { + p = list_entry(el, JSGCObjectHeader, link); + p->mark = 0; + } + gc_decref(rt); + + header_done = FALSE; + list_for_each(el, &rt->gc_obj_list) { + p = list_entry(el, JSGCObjectHeader, link); + if (p->ref_count != 0) { + if (!header_done) { + printf("Object leaks:\n"); + JS_DumpObjectHeader(rt); + header_done = TRUE; + } + JS_DumpGCObject(rt, p); + } + } + + count = 0; + list_for_each(el, &rt->gc_obj_list) { + p = list_entry(el, JSGCObjectHeader, link); + if (p->ref_count == 0) { + count++; + } + } + if (count != 0) + printf("Secondary object leaks: %d\n", count); + } +#endif + assert(list_empty(&rt->gc_obj_list)); + + /* free the classes */ + for(i = 0; i < rt->class_count; i++) { + JSClass *cl = &rt->class_array[i]; + if (cl->class_id != 0) { + JS_FreeAtomRT(rt, cl->class_name); + } + } + js_free_rt(rt, rt->class_array); + +#ifdef CONFIG_BIGNUM + bf_context_end(&rt->bf_ctx); +#endif + +#ifdef DUMP_LEAKS + /* only the atoms defined in JS_InitAtoms() should be left */ + { + BOOL header_done = FALSE; + + for(i = 0; i < rt->atom_size; i++) { + JSAtomStruct *p = rt->atom_array[i]; + if (!atom_is_free(p) /* && p->str*/) { + if (i >= JS_ATOM_END || p->header.ref_count != 1) { + if (!header_done) { + header_done = TRUE; + if (rt->rt_info) { + printf("%s:1: atom leakage:", rt->rt_info); + } else { + printf("Atom leaks:\n" + " %6s %6s %s\n", + "ID", "REFCNT", "NAME"); + } + } + if (rt->rt_info) { + printf(" "); + } else { + printf(" %6u %6u ", i, p->header.ref_count); + } + switch (p->atom_type) { + case JS_ATOM_TYPE_STRING: + JS_DumpString(rt, p); + break; + case JS_ATOM_TYPE_GLOBAL_SYMBOL: + printf("Symbol.for("); + JS_DumpString(rt, p); + printf(")"); + break; + case JS_ATOM_TYPE_SYMBOL: + if (p->hash == JS_ATOM_HASH_SYMBOL) { + printf("Symbol("); + JS_DumpString(rt, p); + printf(")"); + } else { + printf("Private("); + JS_DumpString(rt, p); + printf(")"); + } + break; + } + if (rt->rt_info) { + printf(":%u", p->header.ref_count); + } else { + printf("\n"); + } + } + } + } + if (rt->rt_info && header_done) + printf("\n"); + } +#endif + + /* free the atoms */ + for(i = 0; i < rt->atom_size; i++) { + JSAtomStruct *p = rt->atom_array[i]; + if (!atom_is_free(p)) { +#ifdef DUMP_LEAKS + list_del(&p->link); +#endif + js_free_rt(rt, p); + } + } + js_free_rt(rt, rt->atom_array); + js_free_rt(rt, rt->atom_hash); + js_free_rt(rt, rt->shape_hash); +#ifdef DUMP_LEAKS + if (!list_empty(&rt->string_list)) { + if (rt->rt_info) { + printf("%s:1: string leakage:", rt->rt_info); + } else { + printf("String leaks:\n" + " %6s %s\n", + "REFCNT", "VALUE"); + } + list_for_each_safe(el, el1, &rt->string_list) { + JSString *str = list_entry(el, JSString, link); + if (rt->rt_info) { + printf(" "); + } else { + printf(" %6u ", str->header.ref_count); + } + JS_DumpString(rt, str); + if (rt->rt_info) { + printf(":%u", str->header.ref_count); + } else { + printf("\n"); + } + list_del(&str->link); + js_free_rt(rt, str); + } + if (rt->rt_info) + printf("\n"); + } + { + JSMallocState *s = &rt->malloc_state; + if (s->malloc_count > 1) { + if (rt->rt_info) + printf("%s:1: ", rt->rt_info); + printf("Memory leak: %"PRIu64" bytes lost in %"PRIu64" block%s\n", + (uint64_t)(s->malloc_size - sizeof(JSRuntime)), + (uint64_t)(s->malloc_count - 1), &"s"[s->malloc_count == 2]); + } + } +#endif + + { + JSMallocState ms = rt->malloc_state; + rt->mf.js_free(&ms, rt); + } +} + +JSContext *JS_NewContextRaw(JSRuntime *rt) +{ + JSContext *ctx; + int i; + + ctx = js_mallocz_rt(rt, sizeof(JSContext)); + if (!ctx) + return NULL; + ctx->header.ref_count = 1; + add_gc_object(rt, &ctx->header, JS_GC_OBJ_TYPE_JS_CONTEXT); + + ctx->class_proto = js_malloc_rt(rt, sizeof(ctx->class_proto[0]) * + rt->class_count); + if (!ctx->class_proto) { + js_free_rt(rt, ctx); + return NULL; + } + ctx->rt = rt; + list_add_tail(&ctx->link, &rt->context_list); +#ifdef CONFIG_BIGNUM + ctx->bf_ctx = &rt->bf_ctx; + ctx->fp_env.prec = 113; + ctx->fp_env.flags = bf_set_exp_bits(15) | BF_RNDN | BF_FLAG_SUBNORMAL; +#endif + for(i = 0; i < rt->class_count; i++) + ctx->class_proto[i] = JS_NULL; + ctx->array_ctor = JS_NULL; + ctx->regexp_ctor = JS_NULL; + ctx->promise_ctor = JS_NULL; + init_list_head(&ctx->loaded_modules); + + JS_AddIntrinsicBasicObjects(ctx); + return ctx; +} + +JSContext *JS_NewContext(JSRuntime *rt) +{ + JSContext *ctx; + + ctx = JS_NewContextRaw(rt); + if (!ctx) + return NULL; + + JS_AddIntrinsicBaseObjects(ctx); + JS_AddIntrinsicDate(ctx); + JS_AddIntrinsicEval(ctx); + JS_AddIntrinsicStringNormalize(ctx); + JS_AddIntrinsicRegExp(ctx); + JS_AddIntrinsicJSON(ctx); + JS_AddIntrinsicProxy(ctx); + JS_AddIntrinsicMapSet(ctx); + JS_AddIntrinsicTypedArrays(ctx); + JS_AddIntrinsicPromise(ctx); +#ifdef CONFIG_BIGNUM + JS_AddIntrinsicBigInt(ctx); +#endif + return ctx; +} + +void *JS_GetContextOpaque(JSContext *ctx) +{ + return ctx->user_opaque; +} + +void JS_SetContextOpaque(JSContext *ctx, void *opaque) +{ + ctx->user_opaque = opaque; +} + +/* set the new value and free the old value after (freeing the value + can reallocate the object data) */ +static inline void set_value(JSContext *ctx, JSValue *pval, JSValue new_val) +{ + JSValue old_val; + old_val = *pval; + *pval = new_val; + JS_FreeValue(ctx, old_val); +} + +void JS_SetClassProto(JSContext *ctx, JSClassID class_id, JSValue obj) +{ + JSRuntime *rt = ctx->rt; + assert(class_id < rt->class_count); + set_value(ctx, &ctx->class_proto[class_id], obj); +} + +JSValue JS_GetClassProto(JSContext *ctx, JSClassID class_id) +{ + JSRuntime *rt = ctx->rt; + assert(class_id < rt->class_count); + return JS_DupValue(ctx, ctx->class_proto[class_id]); +} + +typedef enum JSFreeModuleEnum { + JS_FREE_MODULE_ALL, + JS_FREE_MODULE_NOT_RESOLVED, + JS_FREE_MODULE_NOT_EVALUATED, +} JSFreeModuleEnum; + +/* XXX: would be more efficient with separate module lists */ +static void js_free_modules(JSContext *ctx, JSFreeModuleEnum flag) +{ + struct list_head *el, *el1; + list_for_each_safe(el, el1, &ctx->loaded_modules) { + JSModuleDef *m = list_entry(el, JSModuleDef, link); + if (flag == JS_FREE_MODULE_ALL || + (flag == JS_FREE_MODULE_NOT_RESOLVED && !m->resolved) || + (flag == JS_FREE_MODULE_NOT_EVALUATED && !m->evaluated)) { + js_free_module_def(ctx, m); + } + } +} + +JSContext *JS_DupContext(JSContext *ctx) +{ + ctx->header.ref_count++; + return ctx; +} + +/* used by the GC */ +static void JS_MarkContext(JSRuntime *rt, JSContext *ctx, + JS_MarkFunc *mark_func) +{ + int i; + struct list_head *el; + + /* modules are not seen by the GC, so we directly mark the objects + referenced by each module */ + list_for_each(el, &ctx->loaded_modules) { + JSModuleDef *m = list_entry(el, JSModuleDef, link); + js_mark_module_def(rt, m, mark_func); + } + + JS_MarkValue(rt, ctx->global_obj, mark_func); + JS_MarkValue(rt, ctx->global_var_obj, mark_func); + + JS_MarkValue(rt, ctx->throw_type_error, mark_func); + JS_MarkValue(rt, ctx->eval_obj, mark_func); + + JS_MarkValue(rt, ctx->array_proto_values, mark_func); + for(i = 0; i < JS_NATIVE_ERROR_COUNT; i++) { + JS_MarkValue(rt, ctx->native_error_proto[i], mark_func); + } + for(i = 0; i < rt->class_count; i++) { + JS_MarkValue(rt, ctx->class_proto[i], mark_func); + } + JS_MarkValue(rt, ctx->iterator_proto, mark_func); + JS_MarkValue(rt, ctx->async_iterator_proto, mark_func); + JS_MarkValue(rt, ctx->promise_ctor, mark_func); + JS_MarkValue(rt, ctx->array_ctor, mark_func); + JS_MarkValue(rt, ctx->regexp_ctor, mark_func); + JS_MarkValue(rt, ctx->function_ctor, mark_func); + JS_MarkValue(rt, ctx->function_proto, mark_func); + + if (ctx->array_shape) + mark_func(rt, &ctx->array_shape->header); +} + +void JS_FreeContext(JSContext *ctx) +{ + JSRuntime *rt = ctx->rt; + int i; + + if (--ctx->header.ref_count > 0) + return; + assert(ctx->header.ref_count == 0); + +#ifdef DUMP_ATOMS + JS_DumpAtoms(ctx->rt); +#endif +#ifdef DUMP_SHAPES + JS_DumpShapes(ctx->rt); +#endif +#ifdef DUMP_OBJECTS + { + struct list_head *el; + JSGCObjectHeader *p; + printf("JSObjects: {\n"); + JS_DumpObjectHeader(ctx->rt); + list_for_each(el, &rt->gc_obj_list) { + p = list_entry(el, JSGCObjectHeader, link); + JS_DumpGCObject(rt, p); + } + printf("}\n"); + } +#endif +#ifdef DUMP_MEM + { + JSMemoryUsage stats; + JS_ComputeMemoryUsage(rt, &stats); + JS_DumpMemoryUsage(stdout, &stats, rt); + } +#endif + + js_free_modules(ctx, JS_FREE_MODULE_ALL); + + JS_FreeValue(ctx, ctx->global_obj); + JS_FreeValue(ctx, ctx->global_var_obj); + + JS_FreeValue(ctx, ctx->throw_type_error); + JS_FreeValue(ctx, ctx->eval_obj); + + JS_FreeValue(ctx, ctx->array_proto_values); + for(i = 0; i < JS_NATIVE_ERROR_COUNT; i++) { + JS_FreeValue(ctx, ctx->native_error_proto[i]); + } + for(i = 0; i < rt->class_count; i++) { + JS_FreeValue(ctx, ctx->class_proto[i]); + } + js_free_rt(rt, ctx->class_proto); + JS_FreeValue(ctx, ctx->iterator_proto); + JS_FreeValue(ctx, ctx->async_iterator_proto); + JS_FreeValue(ctx, ctx->promise_ctor); + JS_FreeValue(ctx, ctx->array_ctor); + JS_FreeValue(ctx, ctx->regexp_ctor); + JS_FreeValue(ctx, ctx->function_ctor); + JS_FreeValue(ctx, ctx->function_proto); + + js_free_shape_null(ctx->rt, ctx->array_shape); + + list_del(&ctx->link); + remove_gc_object(&ctx->header); + js_free_rt(ctx->rt, ctx); +} + +JSRuntime *JS_GetRuntime(JSContext *ctx) +{ + return ctx->rt; +} + +static void update_stack_limit(JSRuntime *rt) +{ + if (rt->stack_size == 0) { + rt->stack_limit = 0; /* no limit */ + } else { + rt->stack_limit = rt->stack_top - rt->stack_size; + } +} + +void JS_SetMaxStackSize(JSRuntime *rt, size_t stack_size) +{ + rt->stack_size = stack_size; + update_stack_limit(rt); +} + +void JS_UpdateStackTop(JSRuntime *rt) +{ + rt->stack_top = js_get_stack_pointer(); + update_stack_limit(rt); +} + +static inline BOOL is_strict_mode(JSContext *ctx) +{ + JSStackFrame *sf = ctx->rt->current_stack_frame; + return (sf && (sf->js_mode & JS_MODE_STRICT)); +} + +#ifdef CONFIG_BIGNUM +static inline BOOL is_math_mode(JSContext *ctx) +{ + JSStackFrame *sf = ctx->rt->current_stack_frame; + return (sf && (sf->js_mode & JS_MODE_MATH)); +} +#endif + +/* JSAtom support */ + +#define JS_ATOM_TAG_INT (1U << 31) +#define JS_ATOM_MAX_INT (JS_ATOM_TAG_INT - 1) +#define JS_ATOM_MAX ((1U << 30) - 1) + +/* return the max count from the hash size */ +#define JS_ATOM_COUNT_RESIZE(n) ((n) * 2) + +static inline BOOL __JS_AtomIsConst(JSAtom v) +{ +#if defined(DUMP_LEAKS) && DUMP_LEAKS > 1 + return (int32_t)v <= 0; +#else + return (int32_t)v < JS_ATOM_END; +#endif +} + +static inline BOOL __JS_AtomIsTaggedInt(JSAtom v) +{ + return (v & JS_ATOM_TAG_INT) != 0; +} + +static inline JSAtom __JS_AtomFromUInt32(uint32_t v) +{ + return v | JS_ATOM_TAG_INT; +} + +static inline uint32_t __JS_AtomToUInt32(JSAtom atom) +{ + return atom & ~JS_ATOM_TAG_INT; +} + +static inline int is_num(int c) +{ + return c >= '0' && c <= '9'; +} + +/* return TRUE if the string is a number n with 0 <= n <= 2^32-1 */ +static inline BOOL is_num_string(uint32_t *pval, const JSString *p) +{ + uint32_t n; + uint64_t n64; + int c, i, len; + + len = p->len; + if (len == 0 || len > 10) + return FALSE; + if (p->is_wide_char) + c = p->u.str16[0]; + else + c = p->u.str8[0]; + if (is_num(c)) { + if (c == '0') { + if (len != 1) + return FALSE; + n = 0; + } else { + n = c - '0'; + for(i = 1; i < len; i++) { + if (p->is_wide_char) + c = p->u.str16[i]; + else + c = p->u.str8[i]; + if (!is_num(c)) + return FALSE; + n64 = (uint64_t)n * 10 + (c - '0'); + if ((n64 >> 32) != 0) + return FALSE; + n = n64; + } + } + *pval = n; + return TRUE; + } else { + return FALSE; + } +} + +/* XXX: could use faster version ? */ +static inline uint32_t hash_string8(const uint8_t *str, size_t len, uint32_t h) +{ + size_t i; + + for(i = 0; i < len; i++) + h = h * 263 + str[i]; + return h; +} + +static inline uint32_t hash_string16(const uint16_t *str, + size_t len, uint32_t h) +{ + size_t i; + + for(i = 0; i < len; i++) + h = h * 263 + str[i]; + return h; +} + +static uint32_t hash_string(const JSString *str, uint32_t h) +{ + if (str->is_wide_char) + h = hash_string16(str->u.str16, str->len, h); + else + h = hash_string8(str->u.str8, str->len, h); + return h; +} + +static __maybe_unused void JS_DumpString(JSRuntime *rt, + const JSString *p) +{ + int i, c, sep; + + if (p == NULL) { + printf(""); + return; + } + printf("%d", p->header.ref_count); + sep = (p->header.ref_count == 1) ? '\"' : '\''; + putchar(sep); + for(i = 0; i < p->len; i++) { + if (p->is_wide_char) + c = p->u.str16[i]; + else + c = p->u.str8[i]; + if (c == sep || c == '\\') { + putchar('\\'); + putchar(c); + } else if (c >= ' ' && c <= 126) { + putchar(c); + } else if (c == '\n') { + putchar('\\'); + putchar('n'); + } else { + printf("\\u%04x", c); + } + } + putchar(sep); +} + +static __maybe_unused void JS_DumpAtoms(JSRuntime *rt) +{ + JSAtomStruct *p; + int h, i; + /* This only dumps hashed atoms, not JS_ATOM_TYPE_SYMBOL atoms */ + printf("JSAtom count=%d size=%d hash_size=%d:\n", + rt->atom_count, rt->atom_size, rt->atom_hash_size); + printf("JSAtom hash table: {\n"); + for(i = 0; i < rt->atom_hash_size; i++) { + h = rt->atom_hash[i]; + if (h) { + printf(" %d:", i); + while (h) { + p = rt->atom_array[h]; + printf(" "); + JS_DumpString(rt, p); + h = p->hash_next; + } + printf("\n"); + } + } + printf("}\n"); + printf("JSAtom table: {\n"); + for(i = 0; i < rt->atom_size; i++) { + p = rt->atom_array[i]; + if (!atom_is_free(p)) { + printf(" %d: { %d %08x ", i, p->atom_type, p->hash); + if (!(p->len == 0 && p->is_wide_char != 0)) + JS_DumpString(rt, p); + printf(" %d }\n", p->hash_next); + } + } + printf("}\n"); +} + +static int JS_ResizeAtomHash(JSRuntime *rt, int new_hash_size) +{ + JSAtomStruct *p; + uint32_t new_hash_mask, h, i, hash_next1, j, *new_hash; + + assert((new_hash_size & (new_hash_size - 1)) == 0); /* power of two */ + new_hash_mask = new_hash_size - 1; + new_hash = js_mallocz_rt(rt, sizeof(rt->atom_hash[0]) * new_hash_size); + if (!new_hash) + return -1; + for(i = 0; i < rt->atom_hash_size; i++) { + h = rt->atom_hash[i]; + while (h != 0) { + p = rt->atom_array[h]; + hash_next1 = p->hash_next; + /* add in new hash table */ + j = p->hash & new_hash_mask; + p->hash_next = new_hash[j]; + new_hash[j] = h; + h = hash_next1; + } + } + js_free_rt(rt, rt->atom_hash); + rt->atom_hash = new_hash; + rt->atom_hash_size = new_hash_size; + rt->atom_count_resize = JS_ATOM_COUNT_RESIZE(new_hash_size); + // JS_DumpAtoms(rt); + return 0; +} + +static int JS_InitAtoms(JSRuntime *rt) +{ + int i, len, atom_type; + const char *p; + + rt->atom_hash_size = 0; + rt->atom_hash = NULL; + rt->atom_count = 0; + rt->atom_size = 0; + rt->atom_free_index = 0; + if (JS_ResizeAtomHash(rt, 256)) /* there are at least 195 predefined atoms */ + return -1; + + p = js_atom_init; + for(i = 1; i < JS_ATOM_END; i++) { + if (i == JS_ATOM_Private_brand) + atom_type = JS_ATOM_TYPE_PRIVATE; + else if (i >= JS_ATOM_Symbol_toPrimitive) + atom_type = JS_ATOM_TYPE_SYMBOL; + else + atom_type = JS_ATOM_TYPE_STRING; + len = strlen(p); + if (__JS_NewAtomInit(rt, p, len, atom_type) == JS_ATOM_NULL) + return -1; + p = p + len + 1; + } + return 0; +} + +static JSAtom JS_DupAtomRT(JSRuntime *rt, JSAtom v) +{ + JSAtomStruct *p; + + if (!__JS_AtomIsConst(v)) { + p = rt->atom_array[v]; + p->header.ref_count++; + } + return v; +} + +JSAtom JS_DupAtom(JSContext *ctx, JSAtom v) +{ + JSRuntime *rt; + JSAtomStruct *p; + + if (!__JS_AtomIsConst(v)) { + rt = ctx->rt; + p = rt->atom_array[v]; + p->header.ref_count++; + } + return v; +} + +static JSAtomKindEnum JS_AtomGetKind(JSContext *ctx, JSAtom v) +{ + JSRuntime *rt; + JSAtomStruct *p; + + rt = ctx->rt; + if (__JS_AtomIsTaggedInt(v)) + return JS_ATOM_KIND_STRING; + p = rt->atom_array[v]; + switch(p->atom_type) { + case JS_ATOM_TYPE_STRING: + return JS_ATOM_KIND_STRING; + case JS_ATOM_TYPE_GLOBAL_SYMBOL: + return JS_ATOM_KIND_SYMBOL; + case JS_ATOM_TYPE_SYMBOL: + switch(p->hash) { + case JS_ATOM_HASH_SYMBOL: + return JS_ATOM_KIND_SYMBOL; + case JS_ATOM_HASH_PRIVATE: + return JS_ATOM_KIND_PRIVATE; + default: + abort(); + } + default: + abort(); + } +} + +static BOOL JS_AtomIsString(JSContext *ctx, JSAtom v) +{ + return JS_AtomGetKind(ctx, v) == JS_ATOM_KIND_STRING; +} + +static JSAtom js_get_atom_index(JSRuntime *rt, JSAtomStruct *p) +{ + uint32_t i = p->hash_next; /* atom_index */ + if (p->atom_type != JS_ATOM_TYPE_SYMBOL) { + JSAtomStruct *p1; + + i = rt->atom_hash[p->hash & (rt->atom_hash_size - 1)]; + p1 = rt->atom_array[i]; + while (p1 != p) { + assert(i != 0); + i = p1->hash_next; + p1 = rt->atom_array[i]; + } + } + return i; +} + +/* string case (internal). Return JS_ATOM_NULL if error. 'str' is + freed. */ +static JSAtom __JS_NewAtom(JSRuntime *rt, JSString *str, int atom_type) +{ + uint32_t h, h1, i; + JSAtomStruct *p; + int len; + +#if 0 + printf("__JS_NewAtom: "); JS_DumpString(rt, str); printf("\n"); +#endif + if (atom_type < JS_ATOM_TYPE_SYMBOL) { + /* str is not NULL */ + if (str->atom_type == atom_type) { + /* str is the atom, return its index */ + i = js_get_atom_index(rt, str); + /* reduce string refcount and increase atom's unless constant */ + if (__JS_AtomIsConst(i)) + str->header.ref_count--; + return i; + } + /* try and locate an already registered atom */ + len = str->len; + h = hash_string(str, atom_type); + h &= JS_ATOM_HASH_MASK; + h1 = h & (rt->atom_hash_size - 1); + i = rt->atom_hash[h1]; + while (i != 0) { + p = rt->atom_array[i]; + if (p->hash == h && + p->atom_type == atom_type && + p->len == len && + js_string_memcmp(p, str, len) == 0) { + if (!__JS_AtomIsConst(i)) + p->header.ref_count++; + goto done; + } + i = p->hash_next; + } + } else { + h1 = 0; /* avoid warning */ + if (atom_type == JS_ATOM_TYPE_SYMBOL) { + h = JS_ATOM_HASH_SYMBOL; + } else { + h = JS_ATOM_HASH_PRIVATE; + atom_type = JS_ATOM_TYPE_SYMBOL; + } + } + + if (rt->atom_free_index == 0) { + /* allow new atom entries */ + uint32_t new_size, start; + JSAtomStruct **new_array; + + /* alloc new with size progression 3/2: + 4 6 9 13 19 28 42 63 94 141 211 316 474 711 1066 1599 2398 3597 5395 8092 + preallocating space for predefined atoms (at least 195). + */ + new_size = max_int(211, rt->atom_size * 3 / 2); + if (new_size > JS_ATOM_MAX) + goto fail; + /* XXX: should use realloc2 to use slack space */ + new_array = js_realloc_rt(rt, rt->atom_array, sizeof(*new_array) * new_size); + if (!new_array) + goto fail; + /* Note: the atom 0 is not used */ + start = rt->atom_size; + if (start == 0) { + /* JS_ATOM_NULL entry */ + p = js_mallocz_rt(rt, sizeof(JSAtomStruct)); + if (!p) { + js_free_rt(rt, new_array); + goto fail; + } + p->header.ref_count = 1; /* not refcounted */ + p->atom_type = JS_ATOM_TYPE_SYMBOL; +#ifdef DUMP_LEAKS + list_add_tail(&p->link, &rt->string_list); +#endif + new_array[0] = p; + rt->atom_count++; + start = 1; + } + rt->atom_size = new_size; + rt->atom_array = new_array; + rt->atom_free_index = start; + for(i = start; i < new_size; i++) { + uint32_t next; + if (i == (new_size - 1)) + next = 0; + else + next = i + 1; + rt->atom_array[i] = atom_set_free(next); + } + } + + if (str) { + if (str->atom_type == 0) { + p = str; + p->atom_type = atom_type; + } else { + p = js_malloc_rt(rt, sizeof(JSString) + + (str->len << str->is_wide_char) + + 1 - str->is_wide_char); + if (unlikely(!p)) + goto fail; + p->header.ref_count = 1; + p->is_wide_char = str->is_wide_char; + p->len = str->len; +#ifdef DUMP_LEAKS + list_add_tail(&p->link, &rt->string_list); +#endif + memcpy(p->u.str8, str->u.str8, (str->len << str->is_wide_char) + + 1 - str->is_wide_char); + js_free_string(rt, str); + } + } else { + p = js_malloc_rt(rt, sizeof(JSAtomStruct)); /* empty wide string */ + if (!p) + return JS_ATOM_NULL; + p->header.ref_count = 1; + p->is_wide_char = 1; /* Hack to represent NULL as a JSString */ + p->len = 0; +#ifdef DUMP_LEAKS + list_add_tail(&p->link, &rt->string_list); +#endif + } + + /* use an already free entry */ + i = rt->atom_free_index; + rt->atom_free_index = atom_get_free(rt->atom_array[i]); + rt->atom_array[i] = p; + + p->hash = h; + p->hash_next = i; /* atom_index */ + p->atom_type = atom_type; + + rt->atom_count++; + + if (atom_type != JS_ATOM_TYPE_SYMBOL) { + p->hash_next = rt->atom_hash[h1]; + rt->atom_hash[h1] = i; + if (unlikely(rt->atom_count >= rt->atom_count_resize)) + JS_ResizeAtomHash(rt, rt->atom_hash_size * 2); + } + + // JS_DumpAtoms(rt); + return i; + + fail: + i = JS_ATOM_NULL; + done: + if (str) + js_free_string(rt, str); + return i; +} + +/* only works with zero terminated 8 bit strings */ +static JSAtom __JS_NewAtomInit(JSRuntime *rt, const char *str, int len, + int atom_type) +{ + JSString *p; + p = js_alloc_string_rt(rt, len, 0); + if (!p) + return JS_ATOM_NULL; + memcpy(p->u.str8, str, len); + p->u.str8[len] = '\0'; + return __JS_NewAtom(rt, p, atom_type); +} + +static JSAtom __JS_FindAtom(JSRuntime *rt, const char *str, size_t len, + int atom_type) +{ + uint32_t h, h1, i; + JSAtomStruct *p; + + h = hash_string8((const uint8_t *)str, len, JS_ATOM_TYPE_STRING); + h &= JS_ATOM_HASH_MASK; + h1 = h & (rt->atom_hash_size - 1); + i = rt->atom_hash[h1]; + while (i != 0) { + p = rt->atom_array[i]; + if (p->hash == h && + p->atom_type == JS_ATOM_TYPE_STRING && + p->len == len && + p->is_wide_char == 0 && + memcmp(p->u.str8, str, len) == 0) { + if (!__JS_AtomIsConst(i)) + p->header.ref_count++; + return i; + } + i = p->hash_next; + } + return JS_ATOM_NULL; +} + +static void JS_FreeAtomStruct(JSRuntime *rt, JSAtomStruct *p) +{ +#if 0 /* JS_ATOM_NULL is not refcounted: __JS_AtomIsConst() includes 0 */ + if (unlikely(i == JS_ATOM_NULL)) { + p->header.ref_count = INT32_MAX / 2; + return; + } +#endif + uint32_t i = p->hash_next; /* atom_index */ + if (p->atom_type != JS_ATOM_TYPE_SYMBOL) { + JSAtomStruct *p0, *p1; + uint32_t h0; + + h0 = p->hash & (rt->atom_hash_size - 1); + i = rt->atom_hash[h0]; + p1 = rt->atom_array[i]; + if (p1 == p) { + rt->atom_hash[h0] = p1->hash_next; + } else { + for(;;) { + assert(i != 0); + p0 = p1; + i = p1->hash_next; + p1 = rt->atom_array[i]; + if (p1 == p) { + p0->hash_next = p1->hash_next; + break; + } + } + } + } + /* insert in free atom list */ + rt->atom_array[i] = atom_set_free(rt->atom_free_index); + rt->atom_free_index = i; + /* free the string structure */ +#ifdef DUMP_LEAKS + list_del(&p->link); +#endif + js_free_rt(rt, p); + rt->atom_count--; + assert(rt->atom_count >= 0); +} + +static void __JS_FreeAtom(JSRuntime *rt, uint32_t i) +{ + JSAtomStruct *p; + + p = rt->atom_array[i]; + if (--p->header.ref_count > 0) + return; + JS_FreeAtomStruct(rt, p); +} + +/* Warning: 'p' is freed */ +static JSAtom JS_NewAtomStr(JSContext *ctx, JSString *p) +{ + JSRuntime *rt = ctx->rt; + uint32_t n; + if (is_num_string(&n, p)) { + if (n <= JS_ATOM_MAX_INT) { + js_free_string(rt, p); + return __JS_AtomFromUInt32(n); + } + } + /* XXX: should generate an exception */ + return __JS_NewAtom(rt, p, JS_ATOM_TYPE_STRING); +} + +JSAtom JS_NewAtomLen(JSContext *ctx, const char *str, size_t len) +{ + JSValue val; + + if (len == 0 || !is_digit(*str)) { + JSAtom atom = __JS_FindAtom(ctx->rt, str, len, JS_ATOM_TYPE_STRING); + if (atom) + return atom; + } + val = JS_NewStringLen(ctx, str, len); + if (JS_IsException(val)) + return JS_ATOM_NULL; + return JS_NewAtomStr(ctx, JS_VALUE_GET_STRING(val)); +} + +JSAtom JS_NewAtom(JSContext *ctx, const char *str) +{ + return JS_NewAtomLen(ctx, str, strlen(str)); +} + +JSAtom JS_NewAtomUInt32(JSContext *ctx, uint32_t n) +{ + if (n <= JS_ATOM_MAX_INT) { + return __JS_AtomFromUInt32(n); + } else { + char buf[11]; + JSValue val; + snprintf(buf, sizeof(buf), "%u", n); + val = JS_NewString(ctx, buf); + if (JS_IsException(val)) + return JS_ATOM_NULL; + return __JS_NewAtom(ctx->rt, JS_VALUE_GET_STRING(val), + JS_ATOM_TYPE_STRING); + } +} + +static JSAtom JS_NewAtomInt64(JSContext *ctx, int64_t n) +{ + if ((uint64_t)n <= JS_ATOM_MAX_INT) { + return __JS_AtomFromUInt32((uint32_t)n); + } else { + char buf[24]; + JSValue val; + snprintf(buf, sizeof(buf), "%" PRId64 , n); + val = JS_NewString(ctx, buf); + if (JS_IsException(val)) + return JS_ATOM_NULL; + return __JS_NewAtom(ctx->rt, JS_VALUE_GET_STRING(val), + JS_ATOM_TYPE_STRING); + } +} + +/* 'p' is freed */ +static JSValue JS_NewSymbol(JSContext *ctx, JSString *p, int atom_type) +{ + JSRuntime *rt = ctx->rt; + JSAtom atom; + atom = __JS_NewAtom(rt, p, atom_type); + if (atom == JS_ATOM_NULL) + return JS_ThrowOutOfMemory(ctx); + return JS_MKPTR(JS_TAG_SYMBOL, rt->atom_array[atom]); +} + +/* descr must be a non-numeric string atom */ +static JSValue JS_NewSymbolFromAtom(JSContext *ctx, JSAtom descr, + int atom_type) +{ + JSRuntime *rt = ctx->rt; + JSString *p; + + assert(!__JS_AtomIsTaggedInt(descr)); + assert(descr < rt->atom_size); + p = rt->atom_array[descr]; + JS_DupValue(ctx, JS_MKPTR(JS_TAG_STRING, p)); + return JS_NewSymbol(ctx, p, atom_type); +} + +#define ATOM_GET_STR_BUF_SIZE 64 + +/* Should only be used for debug. */ +static const char *JS_AtomGetStrRT(JSRuntime *rt, char *buf, int buf_size, + JSAtom atom) +{ + if (__JS_AtomIsTaggedInt(atom)) { + snprintf(buf, buf_size, "%u", __JS_AtomToUInt32(atom)); + } else { + JSAtomStruct *p; + assert(atom < rt->atom_size); + if (atom == JS_ATOM_NULL) { + snprintf(buf, buf_size, ""); + } else { + int i, c; + char *q; + JSString *str; + + q = buf; + p = rt->atom_array[atom]; + assert(!atom_is_free(p)); + str = p; + if (str) { + if (!str->is_wide_char) { + /* special case ASCII strings */ + c = 0; + for(i = 0; i < str->len; i++) { + c |= str->u.str8[i]; + } + if (c < 0x80) + return (const char *)str->u.str8; + } + for(i = 0; i < str->len; i++) { + if (str->is_wide_char) + c = str->u.str16[i]; + else + c = str->u.str8[i]; + if ((q - buf) >= buf_size - UTF8_CHAR_LEN_MAX) + break; + if (c < 128) { + *q++ = c; + } else { + q += unicode_to_utf8((uint8_t *)q, c); + } + } + } + *q = '\0'; + } + } + return buf; +} + +static const char *JS_AtomGetStr(JSContext *ctx, char *buf, int buf_size, JSAtom atom) +{ + return JS_AtomGetStrRT(ctx->rt, buf, buf_size, atom); +} + +static JSValue __JS_AtomToValue(JSContext *ctx, JSAtom atom, BOOL force_string) +{ + char buf[ATOM_GET_STR_BUF_SIZE]; + + if (__JS_AtomIsTaggedInt(atom)) { + snprintf(buf, sizeof(buf), "%u", __JS_AtomToUInt32(atom)); + return JS_NewString(ctx, buf); + } else { + JSRuntime *rt = ctx->rt; + JSAtomStruct *p; + assert(atom < rt->atom_size); + p = rt->atom_array[atom]; + if (p->atom_type == JS_ATOM_TYPE_STRING) { + goto ret_string; + } else if (force_string) { + if (p->len == 0 && p->is_wide_char != 0) { + /* no description string */ + p = rt->atom_array[JS_ATOM_empty_string]; + } + ret_string: + return JS_DupValue(ctx, JS_MKPTR(JS_TAG_STRING, p)); + } else { + return JS_DupValue(ctx, JS_MKPTR(JS_TAG_SYMBOL, p)); + } + } +} + +JSValue JS_AtomToValue(JSContext *ctx, JSAtom atom) +{ + return __JS_AtomToValue(ctx, atom, FALSE); +} + +JSValue JS_AtomToString(JSContext *ctx, JSAtom atom) +{ + return __JS_AtomToValue(ctx, atom, TRUE); +} + +/* return TRUE if the atom is an array index (i.e. 0 <= index <= + 2^32-2 and return its value */ +static BOOL JS_AtomIsArrayIndex(JSContext *ctx, uint32_t *pval, JSAtom atom) +{ + if (__JS_AtomIsTaggedInt(atom)) { + *pval = __JS_AtomToUInt32(atom); + return TRUE; + } else { + JSRuntime *rt = ctx->rt; + JSAtomStruct *p; + uint32_t val; + + assert(atom < rt->atom_size); + p = rt->atom_array[atom]; + if (p->atom_type == JS_ATOM_TYPE_STRING && + is_num_string(&val, p) && val != -1) { + *pval = val; + return TRUE; + } else { + *pval = 0; + return FALSE; + } + } +} + +/* This test must be fast if atom is not a numeric index (e.g. a + method name). Return JS_UNDEFINED if not a numeric + index. JS_EXCEPTION can also be returned. */ +static JSValue JS_AtomIsNumericIndex1(JSContext *ctx, JSAtom atom) +{ + JSRuntime *rt = ctx->rt; + JSAtomStruct *p1; + JSString *p; + int c, len, ret; + JSValue num, str; + + if (__JS_AtomIsTaggedInt(atom)) + return JS_NewInt32(ctx, __JS_AtomToUInt32(atom)); + assert(atom < rt->atom_size); + p1 = rt->atom_array[atom]; + if (p1->atom_type != JS_ATOM_TYPE_STRING) + return JS_UNDEFINED; + p = p1; + len = p->len; + if (p->is_wide_char) { + const uint16_t *r = p->u.str16, *r_end = p->u.str16 + len; + if (r >= r_end) + return JS_UNDEFINED; + c = *r; + if (c == '-') { + if (r >= r_end) + return JS_UNDEFINED; + r++; + c = *r; + /* -0 case is specific */ + if (c == '0' && len == 2) + goto minus_zero; + } + /* XXX: should test NaN, but the tests do not check it */ + if (!is_num(c)) { + /* XXX: String should be normalized, therefore 8-bit only */ + const uint16_t nfinity16[7] = { 'n', 'f', 'i', 'n', 'i', 't', 'y' }; + if (!(c =='I' && (r_end - r) == 8 && + !memcmp(r + 1, nfinity16, sizeof(nfinity16)))) + return JS_UNDEFINED; + } + } else { + const uint8_t *r = p->u.str8, *r_end = p->u.str8 + len; + if (r >= r_end) + return JS_UNDEFINED; + c = *r; + if (c == '-') { + if (r >= r_end) + return JS_UNDEFINED; + r++; + c = *r; + /* -0 case is specific */ + if (c == '0' && len == 2) { + minus_zero: + return __JS_NewFloat64(ctx, -0.0); + } + } + if (!is_num(c)) { + if (!(c =='I' && (r_end - r) == 8 && + !memcmp(r + 1, "nfinity", 7))) + return JS_UNDEFINED; + } + } + /* XXX: bignum: would be better to only accept integer to avoid + relying on current floating point precision */ + /* this is ECMA CanonicalNumericIndexString primitive */ + num = JS_ToNumber(ctx, JS_MKPTR(JS_TAG_STRING, p)); + if (JS_IsException(num)) + return num; + str = JS_ToString(ctx, num); + if (JS_IsException(str)) { + JS_FreeValue(ctx, num); + return str; + } + ret = js_string_compare(ctx, p, JS_VALUE_GET_STRING(str)); + JS_FreeValue(ctx, str); + if (ret == 0) { + return num; + } else { + JS_FreeValue(ctx, num); + return JS_UNDEFINED; + } +} + +/* return -1 if exception or TRUE/FALSE */ +static int JS_AtomIsNumericIndex(JSContext *ctx, JSAtom atom) +{ + JSValue num; + num = JS_AtomIsNumericIndex1(ctx, atom); + if (likely(JS_IsUndefined(num))) + return FALSE; + if (JS_IsException(num)) + return -1; + JS_FreeValue(ctx, num); + return TRUE; +} + +void JS_FreeAtom(JSContext *ctx, JSAtom v) +{ + if (!__JS_AtomIsConst(v)) + __JS_FreeAtom(ctx->rt, v); +} + +void JS_FreeAtomRT(JSRuntime *rt, JSAtom v) +{ + if (!__JS_AtomIsConst(v)) + __JS_FreeAtom(rt, v); +} + +/* return TRUE if 'v' is a symbol with a string description */ +static BOOL JS_AtomSymbolHasDescription(JSContext *ctx, JSAtom v) +{ + JSRuntime *rt; + JSAtomStruct *p; + + rt = ctx->rt; + if (__JS_AtomIsTaggedInt(v)) + return FALSE; + p = rt->atom_array[v]; + return (((p->atom_type == JS_ATOM_TYPE_SYMBOL && + p->hash == JS_ATOM_HASH_SYMBOL) || + p->atom_type == JS_ATOM_TYPE_GLOBAL_SYMBOL) && + !(p->len == 0 && p->is_wide_char != 0)); +} + +static __maybe_unused void print_atom(JSContext *ctx, JSAtom atom) +{ + char buf[ATOM_GET_STR_BUF_SIZE]; + const char *p; + int i; + + /* XXX: should handle embedded null characters */ + /* XXX: should move encoding code to JS_AtomGetStr */ + p = JS_AtomGetStr(ctx, buf, sizeof(buf), atom); + for (i = 0; p[i]; i++) { + int c = (unsigned char)p[i]; + if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || + (c == '_' || c == '$') || (c >= '0' && c <= '9' && i > 0))) + break; + } + if (i > 0 && p[i] == '\0') { + printf("%s", p); + } else { + putchar('"'); + printf("%.*s", i, p); + for (; p[i]; i++) { + int c = (unsigned char)p[i]; + if (c == '\"' || c == '\\') { + putchar('\\'); + putchar(c); + } else if (c >= ' ' && c <= 126) { + putchar(c); + } else if (c == '\n') { + putchar('\\'); + putchar('n'); + } else { + printf("\\u%04x", c); + } + } + putchar('\"'); + } +} + +/* free with JS_FreeCString() */ +const char *JS_AtomToCString(JSContext *ctx, JSAtom atom) +{ + JSValue str; + const char *cstr; + + str = JS_AtomToString(ctx, atom); + if (JS_IsException(str)) + return NULL; + cstr = JS_ToCString(ctx, str); + JS_FreeValue(ctx, str); + return cstr; +} + +/* return a string atom containing name concatenated with str1 */ +static JSAtom js_atom_concat_str(JSContext *ctx, JSAtom name, const char *str1) +{ + JSValue str; + JSAtom atom; + const char *cstr; + char *cstr2; + size_t len, len1; + + str = JS_AtomToString(ctx, name); + if (JS_IsException(str)) + return JS_ATOM_NULL; + cstr = JS_ToCStringLen(ctx, &len, str); + if (!cstr) + goto fail; + len1 = strlen(str1); + cstr2 = js_malloc(ctx, len + len1 + 1); + if (!cstr2) + goto fail; + memcpy(cstr2, cstr, len); + memcpy(cstr2 + len, str1, len1); + cstr2[len + len1] = '\0'; + atom = JS_NewAtomLen(ctx, cstr2, len + len1); + js_free(ctx, cstr2); + JS_FreeCString(ctx, cstr); + JS_FreeValue(ctx, str); + return atom; + fail: + JS_FreeCString(ctx, cstr); + JS_FreeValue(ctx, str); + return JS_ATOM_NULL; +} + +static JSAtom js_atom_concat_num(JSContext *ctx, JSAtom name, uint32_t n) +{ + char buf[16]; + snprintf(buf, sizeof(buf), "%u", n); + return js_atom_concat_str(ctx, name, buf); +} + +static inline BOOL JS_IsEmptyString(JSValueConst v) +{ + return JS_VALUE_GET_TAG(v) == JS_TAG_STRING && JS_VALUE_GET_STRING(v)->len == 0; +} + +/* JSClass support */ + +/* a new class ID is allocated if *pclass_id != 0 */ +JSClassID JS_NewClassID(JSClassID *pclass_id) +{ + JSClassID class_id; + /* XXX: make it thread safe */ + class_id = *pclass_id; + if (class_id == 0) { + class_id = js_class_id_alloc++; + *pclass_id = class_id; + } + return class_id; +} + +BOOL JS_IsRegisteredClass(JSRuntime *rt, JSClassID class_id) +{ + return (class_id < rt->class_count && + rt->class_array[class_id].class_id != 0); +} + +/* create a new object internal class. Return -1 if error, 0 if + OK. The finalizer can be NULL if none is needed. */ +static int JS_NewClass1(JSRuntime *rt, JSClassID class_id, + const JSClassDef *class_def, JSAtom name) +{ + int new_size, i; + JSClass *cl, *new_class_array; + struct list_head *el; + + if (class_id >= (1 << 16)) + return -1; + if (class_id < rt->class_count && + rt->class_array[class_id].class_id != 0) + return -1; + + if (class_id >= rt->class_count) { + new_size = max_int(JS_CLASS_INIT_COUNT, + max_int(class_id + 1, rt->class_count * 3 / 2)); + + /* reallocate the context class prototype array, if any */ + list_for_each(el, &rt->context_list) { + JSContext *ctx = list_entry(el, JSContext, link); + JSValue *new_tab; + new_tab = js_realloc_rt(rt, ctx->class_proto, + sizeof(ctx->class_proto[0]) * new_size); + if (!new_tab) + return -1; + for(i = rt->class_count; i < new_size; i++) + new_tab[i] = JS_NULL; + ctx->class_proto = new_tab; + } + /* reallocate the class array */ + new_class_array = js_realloc_rt(rt, rt->class_array, + sizeof(JSClass) * new_size); + if (!new_class_array) + return -1; + memset(new_class_array + rt->class_count, 0, + (new_size - rt->class_count) * sizeof(JSClass)); + rt->class_array = new_class_array; + rt->class_count = new_size; + } + cl = &rt->class_array[class_id]; + cl->class_id = class_id; + cl->class_name = JS_DupAtomRT(rt, name); + cl->finalizer = class_def->finalizer; + cl->gc_mark = class_def->gc_mark; + cl->call = class_def->call; + cl->exotic = class_def->exotic; + return 0; +} + +int JS_NewClass(JSRuntime *rt, JSClassID class_id, const JSClassDef *class_def) +{ + int ret, len; + JSAtom name; + + len = strlen(class_def->class_name); + name = __JS_FindAtom(rt, class_def->class_name, len, JS_ATOM_TYPE_STRING); + if (name == JS_ATOM_NULL) { + name = __JS_NewAtomInit(rt, class_def->class_name, len, JS_ATOM_TYPE_STRING); + if (name == JS_ATOM_NULL) + return -1; + } + ret = JS_NewClass1(rt, class_id, class_def, name); + JS_FreeAtomRT(rt, name); + return ret; +} + +static JSValue js_new_string8(JSContext *ctx, const uint8_t *buf, int len) +{ + JSString *str; + + if (len <= 0) { + return JS_AtomToString(ctx, JS_ATOM_empty_string); + } + str = js_alloc_string(ctx, len, 0); + if (!str) + return JS_EXCEPTION; + memcpy(str->u.str8, buf, len); + str->u.str8[len] = '\0'; + return JS_MKPTR(JS_TAG_STRING, str); +} + +static JSValue js_new_string16(JSContext *ctx, const uint16_t *buf, int len) +{ + JSString *str; + str = js_alloc_string(ctx, len, 1); + if (!str) + return JS_EXCEPTION; + memcpy(str->u.str16, buf, len * 2); + return JS_MKPTR(JS_TAG_STRING, str); +} + +static JSValue js_new_string_char(JSContext *ctx, uint16_t c) +{ + if (c < 0x100) { + uint8_t ch8 = c; + return js_new_string8(ctx, &ch8, 1); + } else { + uint16_t ch16 = c; + return js_new_string16(ctx, &ch16, 1); + } +} + +static JSValue js_sub_string(JSContext *ctx, JSString *p, int start, int end) +{ + int len = end - start; + if (start == 0 && end == p->len) { + return JS_DupValue(ctx, JS_MKPTR(JS_TAG_STRING, p)); + } + if (p->is_wide_char && len > 0) { + JSString *str; + int i; + uint16_t c = 0; + for (i = start; i < end; i++) { + c |= p->u.str16[i]; + } + if (c > 0xFF) + return js_new_string16(ctx, p->u.str16 + start, len); + + str = js_alloc_string(ctx, len, 0); + if (!str) + return JS_EXCEPTION; + for (i = 0; i < len; i++) { + str->u.str8[i] = p->u.str16[start + i]; + } + str->u.str8[len] = '\0'; + return JS_MKPTR(JS_TAG_STRING, str); + } else { + return js_new_string8(ctx, p->u.str8 + start, len); + } +} + +typedef struct StringBuffer { + JSContext *ctx; + JSString *str; + int len; + int size; + int is_wide_char; + int error_status; +} StringBuffer; + +/* It is valid to call string_buffer_end() and all string_buffer functions even + if string_buffer_init() or another string_buffer function returns an error. + If the error_status is set, string_buffer_end() returns JS_EXCEPTION. + */ +static int string_buffer_init2(JSContext *ctx, StringBuffer *s, int size, + int is_wide) +{ + s->ctx = ctx; + s->size = size; + s->len = 0; + s->is_wide_char = is_wide; + s->error_status = 0; + s->str = js_alloc_string(ctx, size, is_wide); + if (unlikely(!s->str)) { + s->size = 0; + return s->error_status = -1; + } +#ifdef DUMP_LEAKS + /* the StringBuffer may reallocate the JSString, only link it at the end */ + list_del(&s->str->link); +#endif + return 0; +} + +static inline int string_buffer_init(JSContext *ctx, StringBuffer *s, int size) +{ + return string_buffer_init2(ctx, s, size, 0); +} + +static void string_buffer_free(StringBuffer *s) +{ + js_free(s->ctx, s->str); + s->str = NULL; +} + +static int string_buffer_set_error(StringBuffer *s) +{ + js_free(s->ctx, s->str); + s->str = NULL; + s->size = 0; + s->len = 0; + return s->error_status = -1; +} + +static no_inline int string_buffer_widen(StringBuffer *s, int size) +{ + JSString *str; + size_t slack; + int i; + + if (s->error_status) + return -1; + + str = js_realloc2(s->ctx, s->str, sizeof(JSString) + (size << 1), &slack); + if (!str) + return string_buffer_set_error(s); + size += slack >> 1; + for(i = s->len; i-- > 0;) { + str->u.str16[i] = str->u.str8[i]; + } + s->is_wide_char = 1; + s->size = size; + s->str = str; + return 0; +} + +static no_inline int string_buffer_realloc(StringBuffer *s, int new_len, int c) +{ + JSString *new_str; + int new_size; + size_t new_size_bytes, slack; + + if (s->error_status) + return -1; + + if (new_len > JS_STRING_LEN_MAX) { + JS_ThrowInternalError(s->ctx, "string too long"); + return string_buffer_set_error(s); + } + new_size = min_int(max_int(new_len, s->size * 3 / 2), JS_STRING_LEN_MAX); + if (!s->is_wide_char && c >= 0x100) { + return string_buffer_widen(s, new_size); + } + new_size_bytes = sizeof(JSString) + (new_size << s->is_wide_char) + 1 - s->is_wide_char; + new_str = js_realloc2(s->ctx, s->str, new_size_bytes, &slack); + if (!new_str) + return string_buffer_set_error(s); + new_size = min_int(new_size + (slack >> s->is_wide_char), JS_STRING_LEN_MAX); + s->size = new_size; + s->str = new_str; + return 0; +} + +static no_inline int string_buffer_putc_slow(StringBuffer *s, uint32_t c) +{ + if (unlikely(s->len >= s->size)) { + if (string_buffer_realloc(s, s->len + 1, c)) + return -1; + } + if (s->is_wide_char) { + s->str->u.str16[s->len++] = c; + } else if (c < 0x100) { + s->str->u.str8[s->len++] = c; + } else { + if (string_buffer_widen(s, s->size)) + return -1; + s->str->u.str16[s->len++] = c; + } + return 0; +} + +/* 0 <= c <= 0xff */ +static int string_buffer_putc8(StringBuffer *s, uint32_t c) +{ + if (unlikely(s->len >= s->size)) { + if (string_buffer_realloc(s, s->len + 1, c)) + return -1; + } + if (s->is_wide_char) { + s->str->u.str16[s->len++] = c; + } else { + s->str->u.str8[s->len++] = c; + } + return 0; +} + +/* 0 <= c <= 0xffff */ +static int string_buffer_putc16(StringBuffer *s, uint32_t c) +{ + if (likely(s->len < s->size)) { + if (s->is_wide_char) { + s->str->u.str16[s->len++] = c; + return 0; + } else if (c < 0x100) { + s->str->u.str8[s->len++] = c; + return 0; + } + } + return string_buffer_putc_slow(s, c); +} + +/* 0 <= c <= 0x10ffff */ +static int string_buffer_putc(StringBuffer *s, uint32_t c) +{ + if (unlikely(c >= 0x10000)) { + /* surrogate pair */ + c -= 0x10000; + if (string_buffer_putc16(s, (c >> 10) + 0xd800)) + return -1; + c = (c & 0x3ff) + 0xdc00; + } + return string_buffer_putc16(s, c); +} + +static int string_get(const JSString *p, int idx) { + return p->is_wide_char ? p->u.str16[idx] : p->u.str8[idx]; +} + +static int string_getc(const JSString *p, int *pidx) +{ + int idx, c, c1; + idx = *pidx; + if (p->is_wide_char) { + c = p->u.str16[idx++]; + if (c >= 0xd800 && c < 0xdc00 && idx < p->len) { + c1 = p->u.str16[idx]; + if (c1 >= 0xdc00 && c1 < 0xe000) { + c = (((c & 0x3ff) << 10) | (c1 & 0x3ff)) + 0x10000; + idx++; + } + } + } else { + c = p->u.str8[idx++]; + } + *pidx = idx; + return c; +} + +static int string_buffer_write8(StringBuffer *s, const uint8_t *p, int len) +{ + int i; + + if (s->len + len > s->size) { + if (string_buffer_realloc(s, s->len + len, 0)) + return -1; + } + if (s->is_wide_char) { + for (i = 0; i < len; i++) { + s->str->u.str16[s->len + i] = p[i]; + } + s->len += len; + } else { + memcpy(&s->str->u.str8[s->len], p, len); + s->len += len; + } + return 0; +} + +static int string_buffer_write16(StringBuffer *s, const uint16_t *p, int len) +{ + int c = 0, i; + + for (i = 0; i < len; i++) { + c |= p[i]; + } + if (s->len + len > s->size) { + if (string_buffer_realloc(s, s->len + len, c)) + return -1; + } else if (!s->is_wide_char && c >= 0x100) { + if (string_buffer_widen(s, s->size)) + return -1; + } + if (s->is_wide_char) { + memcpy(&s->str->u.str16[s->len], p, len << 1); + s->len += len; + } else { + for (i = 0; i < len; i++) { + s->str->u.str8[s->len + i] = p[i]; + } + s->len += len; + } + return 0; +} + +/* appending an ASCII string */ +static int string_buffer_puts8(StringBuffer *s, const char *str) +{ + return string_buffer_write8(s, (const uint8_t *)str, strlen(str)); +} + +static int string_buffer_concat(StringBuffer *s, const JSString *p, + uint32_t from, uint32_t to) +{ + if (to <= from) + return 0; + if (p->is_wide_char) + return string_buffer_write16(s, p->u.str16 + from, to - from); + else + return string_buffer_write8(s, p->u.str8 + from, to - from); +} + +static int string_buffer_concat_value(StringBuffer *s, JSValueConst v) +{ + JSString *p; + JSValue v1; + int res; + + if (s->error_status) { + /* prevent exception overload */ + return -1; + } + if (unlikely(JS_VALUE_GET_TAG(v) != JS_TAG_STRING)) { + v1 = JS_ToString(s->ctx, v); + if (JS_IsException(v1)) + return string_buffer_set_error(s); + p = JS_VALUE_GET_STRING(v1); + res = string_buffer_concat(s, p, 0, p->len); + JS_FreeValue(s->ctx, v1); + return res; + } + p = JS_VALUE_GET_STRING(v); + return string_buffer_concat(s, p, 0, p->len); +} + +static int string_buffer_concat_value_free(StringBuffer *s, JSValue v) +{ + JSString *p; + int res; + + if (s->error_status) { + /* prevent exception overload */ + JS_FreeValue(s->ctx, v); + return -1; + } + if (unlikely(JS_VALUE_GET_TAG(v) != JS_TAG_STRING)) { + v = JS_ToStringFree(s->ctx, v); + if (JS_IsException(v)) + return string_buffer_set_error(s); + } + p = JS_VALUE_GET_STRING(v); + res = string_buffer_concat(s, p, 0, p->len); + JS_FreeValue(s->ctx, v); + return res; +} + +static int string_buffer_fill(StringBuffer *s, int c, int count) +{ + /* XXX: optimize */ + if (s->len + count > s->size) { + if (string_buffer_realloc(s, s->len + count, c)) + return -1; + } + while (count-- > 0) { + if (string_buffer_putc16(s, c)) + return -1; + } + return 0; +} + +static JSValue string_buffer_end(StringBuffer *s) +{ + JSString *str; + str = s->str; + if (s->error_status) + return JS_EXCEPTION; + if (s->len == 0) { + js_free(s->ctx, str); + s->str = NULL; + return JS_AtomToString(s->ctx, JS_ATOM_empty_string); + } + if (s->len < s->size) { + /* smaller size so js_realloc should not fail, but OK if it does */ + /* XXX: should add some slack to avoid unnecessary calls */ + /* XXX: might need to use malloc+free to ensure smaller size */ + str = js_realloc_rt(s->ctx->rt, str, sizeof(JSString) + + (s->len << s->is_wide_char) + 1 - s->is_wide_char); + if (str == NULL) + str = s->str; + s->str = str; + } + if (!s->is_wide_char) + str->u.str8[s->len] = 0; +#ifdef DUMP_LEAKS + list_add_tail(&str->link, &s->ctx->rt->string_list); +#endif + str->is_wide_char = s->is_wide_char; + str->len = s->len; + s->str = NULL; + return JS_MKPTR(JS_TAG_STRING, str); +} + +/* create a string from a UTF-8 buffer */ +JSValue JS_NewStringLen(JSContext *ctx, const char *buf, size_t buf_len) +{ + const uint8_t *p, *p_end, *p_start, *p_next; + uint32_t c; + StringBuffer b_s, *b = &b_s; + size_t len1; + + p_start = (const uint8_t *)buf; + p_end = p_start + buf_len; + p = p_start; + while (p < p_end && *p < 128) + p++; + len1 = p - p_start; + if (len1 > JS_STRING_LEN_MAX) + return JS_ThrowInternalError(ctx, "string too long"); + if (p == p_end) { + /* ASCII string */ + return js_new_string8(ctx, (const uint8_t *)buf, buf_len); + } else { + if (string_buffer_init(ctx, b, buf_len)) + goto fail; + string_buffer_write8(b, p_start, len1); + while (p < p_end) { + if (*p < 128) { + string_buffer_putc8(b, *p++); + } else { + /* parse utf-8 sequence, return 0xFFFFFFFF for error */ + c = unicode_from_utf8(p, p_end - p, &p_next); + if (c < 0x10000) { + p = p_next; + } else if (c <= 0x10FFFF) { + p = p_next; + /* surrogate pair */ + c -= 0x10000; + string_buffer_putc16(b, (c >> 10) + 0xd800); + c = (c & 0x3ff) + 0xdc00; + } else { + /* invalid char */ + c = 0xfffd; + /* skip the invalid chars */ + /* XXX: seems incorrect. Why not just use c = *p++; ? */ + while (p < p_end && (*p >= 0x80 && *p < 0xc0)) + p++; + if (p < p_end) { + p++; + while (p < p_end && (*p >= 0x80 && *p < 0xc0)) + p++; + } + } + string_buffer_putc16(b, c); + } + } + } + return string_buffer_end(b); + + fail: + string_buffer_free(b); + return JS_EXCEPTION; +} + +static JSValue JS_ConcatString3(JSContext *ctx, const char *str1, + JSValue str2, const char *str3) +{ + StringBuffer b_s, *b = &b_s; + int len1, len3; + JSString *p; + + if (unlikely(JS_VALUE_GET_TAG(str2) != JS_TAG_STRING)) { + str2 = JS_ToStringFree(ctx, str2); + if (JS_IsException(str2)) + goto fail; + } + p = JS_VALUE_GET_STRING(str2); + len1 = strlen(str1); + len3 = strlen(str3); + + if (string_buffer_init2(ctx, b, len1 + p->len + len3, p->is_wide_char)) + goto fail; + + string_buffer_write8(b, (const uint8_t *)str1, len1); + string_buffer_concat(b, p, 0, p->len); + string_buffer_write8(b, (const uint8_t *)str3, len3); + + JS_FreeValue(ctx, str2); + return string_buffer_end(b); + + fail: + JS_FreeValue(ctx, str2); + return JS_EXCEPTION; +} + +JSValue JS_NewString(JSContext *ctx, const char *str) +{ + return JS_NewStringLen(ctx, str, strlen(str)); +} + +JSValue JS_NewAtomString(JSContext *ctx, const char *str) +{ + JSAtom atom = JS_NewAtom(ctx, str); + if (atom == JS_ATOM_NULL) + return JS_EXCEPTION; + JSValue val = JS_AtomToString(ctx, atom); + JS_FreeAtom(ctx, atom); + return val; +} + +/* return (NULL, 0) if exception. */ +/* return pointer into a JSString with a live ref_count */ +/* cesu8 determines if non-BMP1 codepoints are encoded as 1 or 2 utf-8 sequences */ +const char *JS_ToCStringLen2(JSContext *ctx, size_t *plen, JSValueConst val1, BOOL cesu8) +{ + JSValue val; + JSString *str, *str_new; + int pos, len, c, c1; + uint8_t *q; + + if (JS_VALUE_GET_TAG(val1) != JS_TAG_STRING) { + val = JS_ToString(ctx, val1); + if (JS_IsException(val)) + goto fail; + } else { + val = JS_DupValue(ctx, val1); + } + + str = JS_VALUE_GET_STRING(val); + len = str->len; + if (!str->is_wide_char) { + const uint8_t *src = str->u.str8; + int count; + + /* count the number of non-ASCII characters */ + /* Scanning the whole string is required for ASCII strings, + and computing the number of non-ASCII bytes is less expensive + than testing each byte, hence this method is faster for ASCII + strings, which is the most common case. + */ + count = 0; + for (pos = 0; pos < len; pos++) { + count += src[pos] >> 7; + } + if (count == 0) { + if (plen) + *plen = len; + return (const char *)src; + } + str_new = js_alloc_string(ctx, len + count, 0); + if (!str_new) + goto fail; + q = str_new->u.str8; + for (pos = 0; pos < len; pos++) { + c = src[pos]; + if (c < 0x80) { + *q++ = c; + } else { + *q++ = (c >> 6) | 0xc0; + *q++ = (c & 0x3f) | 0x80; + } + } + } else { + const uint16_t *src = str->u.str16; + /* Allocate 3 bytes per 16 bit code point. Surrogate pairs may + produce 4 bytes but use 2 code points. + */ + str_new = js_alloc_string(ctx, len * 3, 0); + if (!str_new) + goto fail; + q = str_new->u.str8; + pos = 0; + while (pos < len) { + c = src[pos++]; + if (c < 0x80) { + *q++ = c; + } else { + if (c >= 0xd800 && c < 0xdc00) { + if (pos < len && !cesu8) { + c1 = src[pos]; + if (c1 >= 0xdc00 && c1 < 0xe000) { + pos++; + /* surrogate pair */ + c = (((c & 0x3ff) << 10) | (c1 & 0x3ff)) + 0x10000; + } else { + /* Keep unmatched surrogate code points */ + /* c = 0xfffd; */ /* error */ + } + } else { + /* Keep unmatched surrogate code points */ + /* c = 0xfffd; */ /* error */ + } + } + q += unicode_to_utf8(q, c); + } + } + } + + *q = '\0'; + str_new->len = q - str_new->u.str8; + JS_FreeValue(ctx, val); + if (plen) + *plen = str_new->len; + return (const char *)str_new->u.str8; + fail: + if (plen) + *plen = 0; + return NULL; +} + +void JS_FreeCString(JSContext *ctx, const char *ptr) +{ + JSString *p; + if (!ptr) + return; + /* purposely removing constness */ + p = (JSString *)(void *)(ptr - offsetof(JSString, u)); + JS_FreeValue(ctx, JS_MKPTR(JS_TAG_STRING, p)); +} + +static int memcmp16_8(const uint16_t *src1, const uint8_t *src2, int len) +{ + int c, i; + for(i = 0; i < len; i++) { + c = src1[i] - src2[i]; + if (c != 0) + return c; + } + return 0; +} + +static int memcmp16(const uint16_t *src1, const uint16_t *src2, int len) +{ + int c, i; + for(i = 0; i < len; i++) { + c = src1[i] - src2[i]; + if (c != 0) + return c; + } + return 0; +} + +static int js_string_memcmp(const JSString *p1, const JSString *p2, int len) +{ + int res; + + if (likely(!p1->is_wide_char)) { + if (likely(!p2->is_wide_char)) + res = memcmp(p1->u.str8, p2->u.str8, len); + else + res = -memcmp16_8(p2->u.str16, p1->u.str8, len); + } else { + if (!p2->is_wide_char) + res = memcmp16_8(p1->u.str16, p2->u.str8, len); + else + res = memcmp16(p1->u.str16, p2->u.str16, len); + } + return res; +} + +/* return < 0, 0 or > 0 */ +static int js_string_compare(JSContext *ctx, + const JSString *p1, const JSString *p2) +{ + int res, len; + len = min_int(p1->len, p2->len); + res = js_string_memcmp(p1, p2, len); + if (res == 0) { + if (p1->len == p2->len) + res = 0; + else if (p1->len < p2->len) + res = -1; + else + res = 1; + } + return res; +} + +static void copy_str16(uint16_t *dst, const JSString *p, int offset, int len) +{ + if (p->is_wide_char) { + memcpy(dst, p->u.str16 + offset, len * 2); + } else { + const uint8_t *src1 = p->u.str8 + offset; + int i; + + for(i = 0; i < len; i++) + dst[i] = src1[i]; + } +} + +static JSValue JS_ConcatString1(JSContext *ctx, + const JSString *p1, const JSString *p2) +{ + JSString *p; + uint32_t len; + int is_wide_char; + + len = p1->len + p2->len; + if (len > JS_STRING_LEN_MAX) + return JS_ThrowInternalError(ctx, "string too long"); + is_wide_char = p1->is_wide_char | p2->is_wide_char; + p = js_alloc_string(ctx, len, is_wide_char); + if (!p) + return JS_EXCEPTION; + if (!is_wide_char) { + memcpy(p->u.str8, p1->u.str8, p1->len); + memcpy(p->u.str8 + p1->len, p2->u.str8, p2->len); + p->u.str8[len] = '\0'; + } else { + copy_str16(p->u.str16, p1, 0, p1->len); + copy_str16(p->u.str16 + p1->len, p2, 0, p2->len); + } + return JS_MKPTR(JS_TAG_STRING, p); +} + +/* op1 and op2 are converted to strings. For convience, op1 or op2 = + JS_EXCEPTION are accepted and return JS_EXCEPTION. */ +static JSValue JS_ConcatString(JSContext *ctx, JSValue op1, JSValue op2) +{ + JSValue ret; + JSString *p1, *p2; + + if (unlikely(JS_VALUE_GET_TAG(op1) != JS_TAG_STRING)) { + op1 = JS_ToStringFree(ctx, op1); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + return JS_EXCEPTION; + } + } + if (unlikely(JS_VALUE_GET_TAG(op2) != JS_TAG_STRING)) { + op2 = JS_ToStringFree(ctx, op2); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + return JS_EXCEPTION; + } + } + p1 = JS_VALUE_GET_STRING(op1); + p2 = JS_VALUE_GET_STRING(op2); + + /* XXX: could also check if p1 is empty */ + if (p2->len == 0) { + goto ret_op1; + } + if (p1->header.ref_count == 1 && p1->is_wide_char == p2->is_wide_char + && js_malloc_usable_size(ctx, p1) >= sizeof(*p1) + ((p1->len + p2->len) << p2->is_wide_char) + 1 - p1->is_wide_char) { + /* Concatenate in place in available space at the end of p1 */ + if (p1->is_wide_char) { + memcpy(p1->u.str16 + p1->len, p2->u.str16, p2->len << 1); + p1->len += p2->len; + } else { + memcpy(p1->u.str8 + p1->len, p2->u.str8, p2->len); + p1->len += p2->len; + p1->u.str8[p1->len] = '\0'; + } + ret_op1: + JS_FreeValue(ctx, op2); + return op1; + } + ret = JS_ConcatString1(ctx, p1, p2); + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + return ret; +} + +/* Shape support */ + +static inline size_t get_shape_size(size_t hash_size, size_t prop_size) +{ + return hash_size * sizeof(uint32_t) + sizeof(JSShape) + + prop_size * sizeof(JSShapeProperty); +} + +static inline JSShape *get_shape_from_alloc(void *sh_alloc, size_t hash_size) +{ + return (JSShape *)(void *)((uint32_t *)sh_alloc + hash_size); +} + +static inline uint32_t *prop_hash_end(JSShape *sh) +{ + return (uint32_t *)sh; +} + +static inline void *get_alloc_from_shape(JSShape *sh) +{ + return prop_hash_end(sh) - ((intptr_t)sh->prop_hash_mask + 1); +} + +static inline JSShapeProperty *get_shape_prop(JSShape *sh) +{ + return sh->prop; +} + +static int init_shape_hash(JSRuntime *rt) +{ + rt->shape_hash_bits = 4; /* 16 shapes */ + rt->shape_hash_size = 1 << rt->shape_hash_bits; + rt->shape_hash_count = 0; + rt->shape_hash = js_mallocz_rt(rt, sizeof(rt->shape_hash[0]) * + rt->shape_hash_size); + if (!rt->shape_hash) + return -1; + return 0; +} + +/* same magic hash multiplier as the Linux kernel */ +static uint32_t shape_hash(uint32_t h, uint32_t val) +{ + return (h + val) * 0x9e370001; +} + +/* truncate the shape hash to 'hash_bits' bits */ +static uint32_t get_shape_hash(uint32_t h, int hash_bits) +{ + return h >> (32 - hash_bits); +} + +static uint32_t shape_initial_hash(JSObject *proto) +{ + uint32_t h; + h = shape_hash(1, (uintptr_t)proto); + if (sizeof(proto) > 4) + h = shape_hash(h, (uint64_t)(uintptr_t)proto >> 32); + return h; +} + +static int resize_shape_hash(JSRuntime *rt, int new_shape_hash_bits) +{ + int new_shape_hash_size, i; + uint32_t h; + JSShape **new_shape_hash, *sh, *sh_next; + + new_shape_hash_size = 1 << new_shape_hash_bits; + new_shape_hash = js_mallocz_rt(rt, sizeof(rt->shape_hash[0]) * + new_shape_hash_size); + if (!new_shape_hash) + return -1; + for(i = 0; i < rt->shape_hash_size; i++) { + for(sh = rt->shape_hash[i]; sh != NULL; sh = sh_next) { + sh_next = sh->shape_hash_next; + h = get_shape_hash(sh->hash, new_shape_hash_bits); + sh->shape_hash_next = new_shape_hash[h]; + new_shape_hash[h] = sh; + } + } + js_free_rt(rt, rt->shape_hash); + rt->shape_hash_bits = new_shape_hash_bits; + rt->shape_hash_size = new_shape_hash_size; + rt->shape_hash = new_shape_hash; + return 0; +} + +static void js_shape_hash_link(JSRuntime *rt, JSShape *sh) +{ + uint32_t h; + h = get_shape_hash(sh->hash, rt->shape_hash_bits); + sh->shape_hash_next = rt->shape_hash[h]; + rt->shape_hash[h] = sh; + rt->shape_hash_count++; +} + +static void js_shape_hash_unlink(JSRuntime *rt, JSShape *sh) +{ + uint32_t h; + JSShape **psh; + + h = get_shape_hash(sh->hash, rt->shape_hash_bits); + psh = &rt->shape_hash[h]; + while (*psh != sh) + psh = &(*psh)->shape_hash_next; + *psh = sh->shape_hash_next; + rt->shape_hash_count--; +} + +/* create a new empty shape with prototype 'proto' */ +static no_inline JSShape *js_new_shape2(JSContext *ctx, JSObject *proto, + int hash_size, int prop_size) +{ + JSRuntime *rt = ctx->rt; + void *sh_alloc; + JSShape *sh; + + /* resize the shape hash table if necessary */ + if (2 * (rt->shape_hash_count + 1) > rt->shape_hash_size) { + resize_shape_hash(rt, rt->shape_hash_bits + 1); + } + + sh_alloc = js_malloc(ctx, get_shape_size(hash_size, prop_size)); + if (!sh_alloc) + return NULL; + sh = get_shape_from_alloc(sh_alloc, hash_size); + sh->header.ref_count = 1; + add_gc_object(rt, &sh->header, JS_GC_OBJ_TYPE_SHAPE); + if (proto) + JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, proto)); + sh->proto = proto; + memset(prop_hash_end(sh) - hash_size, 0, sizeof(prop_hash_end(sh)[0]) * + hash_size); + sh->prop_hash_mask = hash_size - 1; + sh->prop_size = prop_size; + sh->prop_count = 0; + sh->deleted_prop_count = 0; + + /* insert in the hash table */ + sh->hash = shape_initial_hash(proto); + sh->is_hashed = TRUE; + sh->has_small_array_index = FALSE; + js_shape_hash_link(ctx->rt, sh); + return sh; +} + +static JSShape *js_new_shape(JSContext *ctx, JSObject *proto) +{ + return js_new_shape2(ctx, proto, JS_PROP_INITIAL_HASH_SIZE, + JS_PROP_INITIAL_SIZE); +} + +/* The shape is cloned. The new shape is not inserted in the shape + hash table */ +static JSShape *js_clone_shape(JSContext *ctx, JSShape *sh1) +{ + JSShape *sh; + void *sh_alloc, *sh_alloc1; + size_t size; + JSShapeProperty *pr; + uint32_t i, hash_size; + + hash_size = sh1->prop_hash_mask + 1; + size = get_shape_size(hash_size, sh1->prop_size); + sh_alloc = js_malloc(ctx, size); + if (!sh_alloc) + return NULL; + sh_alloc1 = get_alloc_from_shape(sh1); + memcpy(sh_alloc, sh_alloc1, size); + sh = get_shape_from_alloc(sh_alloc, hash_size); + sh->header.ref_count = 1; + add_gc_object(ctx->rt, &sh->header, JS_GC_OBJ_TYPE_SHAPE); + sh->is_hashed = FALSE; + if (sh->proto) { + JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, sh->proto)); + } + for(i = 0, pr = get_shape_prop(sh); i < sh->prop_count; i++, pr++) { + JS_DupAtom(ctx, pr->atom); + } + return sh; +} + +static JSShape *js_dup_shape(JSShape *sh) +{ + sh->header.ref_count++; + return sh; +} + +static void js_free_shape0(JSRuntime *rt, JSShape *sh) +{ + uint32_t i; + JSShapeProperty *pr; + + assert(sh->header.ref_count == 0); + if (sh->is_hashed) + js_shape_hash_unlink(rt, sh); + if (sh->proto != NULL) { + JS_FreeValueRT(rt, JS_MKPTR(JS_TAG_OBJECT, sh->proto)); + } + pr = get_shape_prop(sh); + for(i = 0; i < sh->prop_count; i++) { + JS_FreeAtomRT(rt, pr->atom); + pr++; + } + remove_gc_object(&sh->header); + js_free_rt(rt, get_alloc_from_shape(sh)); +} + +static void js_free_shape(JSRuntime *rt, JSShape *sh) +{ + if (unlikely(--sh->header.ref_count <= 0)) { + js_free_shape0(rt, sh); + } +} + +static void js_free_shape_null(JSRuntime *rt, JSShape *sh) +{ + if (sh) + js_free_shape(rt, sh); +} + +/* make space to hold at least 'count' properties */ +static no_inline int resize_properties(JSContext *ctx, JSShape **psh, + JSObject *p, uint32_t count) +{ + JSShape *sh; + uint32_t new_size, new_hash_size, new_hash_mask, i; + JSShapeProperty *pr; + void *sh_alloc; + intptr_t h; + + sh = *psh; + new_size = max_int(count, sh->prop_size * 3 / 2); + /* Reallocate prop array first to avoid crash or size inconsistency + in case of memory allocation failure */ + if (p) { + JSProperty *new_prop; + new_prop = js_realloc(ctx, p->prop, sizeof(new_prop[0]) * new_size); + if (unlikely(!new_prop)) + return -1; + p->prop = new_prop; + } + new_hash_size = sh->prop_hash_mask + 1; + while (new_hash_size < new_size) + new_hash_size = 2 * new_hash_size; + if (new_hash_size != (sh->prop_hash_mask + 1)) { + JSShape *old_sh; + /* resize the hash table and the properties */ + old_sh = sh; + sh_alloc = js_malloc(ctx, get_shape_size(new_hash_size, new_size)); + if (!sh_alloc) + return -1; + sh = get_shape_from_alloc(sh_alloc, new_hash_size); + list_del(&old_sh->header.link); + /* copy all the fields and the properties */ + memcpy(sh, old_sh, + sizeof(JSShape) + sizeof(sh->prop[0]) * old_sh->prop_count); + list_add_tail(&sh->header.link, &ctx->rt->gc_obj_list); + new_hash_mask = new_hash_size - 1; + sh->prop_hash_mask = new_hash_mask; + memset(prop_hash_end(sh) - new_hash_size, 0, + sizeof(prop_hash_end(sh)[0]) * new_hash_size); + for(i = 0, pr = sh->prop; i < sh->prop_count; i++, pr++) { + if (pr->atom != JS_ATOM_NULL) { + h = ((uintptr_t)pr->atom & new_hash_mask); + pr->hash_next = prop_hash_end(sh)[-h - 1]; + prop_hash_end(sh)[-h - 1] = i + 1; + } + } + js_free(ctx, get_alloc_from_shape(old_sh)); + } else { + /* only resize the properties */ + list_del(&sh->header.link); + sh_alloc = js_realloc(ctx, get_alloc_from_shape(sh), + get_shape_size(new_hash_size, new_size)); + if (unlikely(!sh_alloc)) { + /* insert again in the GC list */ + list_add_tail(&sh->header.link, &ctx->rt->gc_obj_list); + return -1; + } + sh = get_shape_from_alloc(sh_alloc, new_hash_size); + list_add_tail(&sh->header.link, &ctx->rt->gc_obj_list); + } + *psh = sh; + sh->prop_size = new_size; + return 0; +} + +/* remove the deleted properties. */ +static int compact_properties(JSContext *ctx, JSObject *p) +{ + JSShape *sh, *old_sh; + void *sh_alloc; + intptr_t h; + uint32_t new_hash_size, i, j, new_hash_mask, new_size; + JSShapeProperty *old_pr, *pr; + JSProperty *prop, *new_prop; + + sh = p->shape; + assert(!sh->is_hashed); + + new_size = max_int(JS_PROP_INITIAL_SIZE, + sh->prop_count - sh->deleted_prop_count); + assert(new_size <= sh->prop_size); + + new_hash_size = sh->prop_hash_mask + 1; + while ((new_hash_size / 2) >= new_size) + new_hash_size = new_hash_size / 2; + new_hash_mask = new_hash_size - 1; + + /* resize the hash table and the properties */ + old_sh = sh; + sh_alloc = js_malloc(ctx, get_shape_size(new_hash_size, new_size)); + if (!sh_alloc) + return -1; + sh = get_shape_from_alloc(sh_alloc, new_hash_size); + list_del(&old_sh->header.link); + memcpy(sh, old_sh, sizeof(JSShape)); + list_add_tail(&sh->header.link, &ctx->rt->gc_obj_list); + + memset(prop_hash_end(sh) - new_hash_size, 0, + sizeof(prop_hash_end(sh)[0]) * new_hash_size); + + j = 0; + old_pr = old_sh->prop; + pr = sh->prop; + prop = p->prop; + for(i = 0; i < sh->prop_count; i++) { + if (old_pr->atom != JS_ATOM_NULL) { + pr->atom = old_pr->atom; + pr->flags = old_pr->flags; + h = ((uintptr_t)old_pr->atom & new_hash_mask); + pr->hash_next = prop_hash_end(sh)[-h - 1]; + prop_hash_end(sh)[-h - 1] = j + 1; + prop[j] = prop[i]; + j++; + pr++; + } + old_pr++; + } + assert(j == (sh->prop_count - sh->deleted_prop_count)); + sh->prop_hash_mask = new_hash_mask; + sh->prop_size = new_size; + sh->deleted_prop_count = 0; + sh->prop_count = j; + + p->shape = sh; + js_free(ctx, get_alloc_from_shape(old_sh)); + + /* reduce the size of the object properties */ + new_prop = js_realloc(ctx, p->prop, sizeof(new_prop[0]) * new_size); + if (new_prop) + p->prop = new_prop; + return 0; +} + +static int add_shape_property(JSContext *ctx, JSShape **psh, + JSObject *p, JSAtom atom, int prop_flags) +{ + JSRuntime *rt = ctx->rt; + JSShape *sh = *psh; + JSShapeProperty *pr, *prop; + uint32_t hash_mask, new_shape_hash = 0; + intptr_t h; + + /* update the shape hash */ + if (sh->is_hashed) { + js_shape_hash_unlink(rt, sh); + new_shape_hash = shape_hash(shape_hash(sh->hash, atom), prop_flags); + } + + if (unlikely(sh->prop_count >= sh->prop_size)) { + if (resize_properties(ctx, psh, p, sh->prop_count + 1)) { + /* in case of error, reinsert in the hash table. + sh is still valid if resize_properties() failed */ + if (sh->is_hashed) + js_shape_hash_link(rt, sh); + return -1; + } + sh = *psh; + } + if (sh->is_hashed) { + sh->hash = new_shape_hash; + js_shape_hash_link(rt, sh); + } + /* Initialize the new shape property. + The object property at p->prop[sh->prop_count] is uninitialized */ + prop = get_shape_prop(sh); + pr = &prop[sh->prop_count++]; + pr->atom = JS_DupAtom(ctx, atom); + pr->flags = prop_flags; + sh->has_small_array_index |= __JS_AtomIsTaggedInt(atom); + /* add in hash table */ + hash_mask = sh->prop_hash_mask; + h = atom & hash_mask; + pr->hash_next = prop_hash_end(sh)[-h - 1]; + prop_hash_end(sh)[-h - 1] = sh->prop_count; + return 0; +} + +/* find a hashed empty shape matching the prototype. Return NULL if + not found */ +static JSShape *find_hashed_shape_proto(JSRuntime *rt, JSObject *proto) +{ + JSShape *sh1; + uint32_t h, h1; + + h = shape_initial_hash(proto); + h1 = get_shape_hash(h, rt->shape_hash_bits); + for(sh1 = rt->shape_hash[h1]; sh1 != NULL; sh1 = sh1->shape_hash_next) { + if (sh1->hash == h && + sh1->proto == proto && + sh1->prop_count == 0) { + return sh1; + } + } + return NULL; +} + +/* find a hashed shape matching sh + (prop, prop_flags). Return NULL if + not found */ +static JSShape *find_hashed_shape_prop(JSRuntime *rt, JSShape *sh, + JSAtom atom, int prop_flags) +{ + JSShape *sh1; + uint32_t h, h1, i, n; + + h = sh->hash; + h = shape_hash(h, atom); + h = shape_hash(h, prop_flags); + h1 = get_shape_hash(h, rt->shape_hash_bits); + for(sh1 = rt->shape_hash[h1]; sh1 != NULL; sh1 = sh1->shape_hash_next) { + /* we test the hash first so that the rest is done only if the + shapes really match */ + if (sh1->hash == h && + sh1->proto == sh->proto && + sh1->prop_count == ((n = sh->prop_count) + 1)) { + for(i = 0; i < n; i++) { + if (unlikely(sh1->prop[i].atom != sh->prop[i].atom) || + unlikely(sh1->prop[i].flags != sh->prop[i].flags)) + goto next; + } + if (unlikely(sh1->prop[n].atom != atom) || + unlikely(sh1->prop[n].flags != prop_flags)) + goto next; + return sh1; + } + next: ; + } + return NULL; +} + +static __maybe_unused void JS_DumpShape(JSRuntime *rt, int i, JSShape *sh) +{ + char atom_buf[ATOM_GET_STR_BUF_SIZE]; + int j; + + /* XXX: should output readable class prototype */ + printf("%5d %3d%c %14p %5d %5d", i, + sh->header.ref_count, " *"[sh->is_hashed], + (void *)sh->proto, sh->prop_size, sh->prop_count); + for(j = 0; j < sh->prop_count; j++) { + printf(" %s", JS_AtomGetStrRT(rt, atom_buf, sizeof(atom_buf), + sh->prop[j].atom)); + } + printf("\n"); +} + +static __maybe_unused void JS_DumpShapes(JSRuntime *rt) +{ + int i; + JSShape *sh; + struct list_head *el; + JSObject *p; + JSGCObjectHeader *gp; + + printf("JSShapes: {\n"); + printf("%5s %4s %14s %5s %5s %s\n", "SLOT", "REFS", "PROTO", "SIZE", "COUNT", "PROPS"); + for(i = 0; i < rt->shape_hash_size; i++) { + for(sh = rt->shape_hash[i]; sh != NULL; sh = sh->shape_hash_next) { + JS_DumpShape(rt, i, sh); + assert(sh->is_hashed); + } + } + /* dump non-hashed shapes */ + list_for_each(el, &rt->gc_obj_list) { + gp = list_entry(el, JSGCObjectHeader, link); + if (gp->gc_obj_type == JS_GC_OBJ_TYPE_JS_OBJECT) { + p = (JSObject *)gp; + if (!p->shape->is_hashed) { + JS_DumpShape(rt, -1, p->shape); + } + } + } + printf("}\n"); +} + +static JSValue JS_NewObjectFromShape(JSContext *ctx, JSShape *sh, JSClassID class_id) +{ + JSObject *p; + + js_trigger_gc(ctx->rt, sizeof(JSObject)); + p = js_malloc(ctx, sizeof(JSObject)); + if (unlikely(!p)) + goto fail; + p->class_id = class_id; + p->extensible = TRUE; + p->free_mark = 0; + p->is_exotic = 0; + p->fast_array = 0; + p->is_constructor = 0; + p->is_uncatchable_error = 0; + p->tmp_mark = 0; + p->is_HTMLDDA = 0; + p->first_weak_ref = NULL; + p->u.opaque = NULL; + p->shape = sh; + p->prop = js_malloc(ctx, sizeof(JSProperty) * sh->prop_size); + if (unlikely(!p->prop)) { + js_free(ctx, p); + fail: + js_free_shape(ctx->rt, sh); + return JS_EXCEPTION; + } + + switch(class_id) { + case JS_CLASS_OBJECT: + break; + case JS_CLASS_ARRAY: + { + JSProperty *pr; + p->is_exotic = 1; + p->fast_array = 1; + p->u.array.u.values = NULL; + p->u.array.count = 0; + p->u.array.u1.size = 0; + /* the length property is always the first one */ + if (likely(sh == ctx->array_shape)) { + pr = &p->prop[0]; + } else { + /* only used for the first array */ + /* cannot fail */ + pr = add_property(ctx, p, JS_ATOM_length, + JS_PROP_WRITABLE | JS_PROP_LENGTH); + } + pr->u.value = JS_NewInt32(ctx, 0); + } + break; + case JS_CLASS_C_FUNCTION: + p->prop[0].u.value = JS_UNDEFINED; + break; + case JS_CLASS_ARGUMENTS: + case JS_CLASS_UINT8C_ARRAY: + case JS_CLASS_INT8_ARRAY: + case JS_CLASS_UINT8_ARRAY: + case JS_CLASS_INT16_ARRAY: + case JS_CLASS_UINT16_ARRAY: + case JS_CLASS_INT32_ARRAY: + case JS_CLASS_UINT32_ARRAY: +#ifdef CONFIG_BIGNUM + case JS_CLASS_BIG_INT64_ARRAY: + case JS_CLASS_BIG_UINT64_ARRAY: +#endif + case JS_CLASS_FLOAT32_ARRAY: + case JS_CLASS_FLOAT64_ARRAY: + p->is_exotic = 1; + p->fast_array = 1; + p->u.array.u.ptr = NULL; + p->u.array.count = 0; + break; + case JS_CLASS_DATAVIEW: + p->u.array.u.ptr = NULL; + p->u.array.count = 0; + break; + case JS_CLASS_NUMBER: + case JS_CLASS_STRING: + case JS_CLASS_BOOLEAN: + case JS_CLASS_SYMBOL: + case JS_CLASS_DATE: +#ifdef CONFIG_BIGNUM + case JS_CLASS_BIG_INT: + case JS_CLASS_BIG_FLOAT: + case JS_CLASS_BIG_DECIMAL: +#endif + p->u.object_data = JS_UNDEFINED; + goto set_exotic; + case JS_CLASS_REGEXP: + p->u.regexp.pattern = NULL; + p->u.regexp.bytecode = NULL; + goto set_exotic; + default: + set_exotic: + if (ctx->rt->class_array[class_id].exotic) { + p->is_exotic = 1; + } + break; + } + p->header.ref_count = 1; + add_gc_object(ctx->rt, &p->header, JS_GC_OBJ_TYPE_JS_OBJECT); + return JS_MKPTR(JS_TAG_OBJECT, p); +} + +static JSObject *get_proto_obj(JSValueConst proto_val) +{ + if (JS_VALUE_GET_TAG(proto_val) != JS_TAG_OBJECT) + return NULL; + else + return JS_VALUE_GET_OBJ(proto_val); +} + +/* WARNING: proto must be an object or JS_NULL */ +JSValue JS_NewObjectProtoClass(JSContext *ctx, JSValueConst proto_val, + JSClassID class_id) +{ + JSShape *sh; + JSObject *proto; + + proto = get_proto_obj(proto_val); + sh = find_hashed_shape_proto(ctx->rt, proto); + if (likely(sh)) { + sh = js_dup_shape(sh); + } else { + sh = js_new_shape(ctx, proto); + if (!sh) + return JS_EXCEPTION; + } + return JS_NewObjectFromShape(ctx, sh, class_id); +} + +#if 0 +static JSValue JS_GetObjectData(JSContext *ctx, JSValueConst obj) +{ + JSObject *p; + + if (JS_VALUE_GET_TAG(obj) == JS_TAG_OBJECT) { + p = JS_VALUE_GET_OBJ(obj); + switch(p->class_id) { + case JS_CLASS_NUMBER: + case JS_CLASS_STRING: + case JS_CLASS_BOOLEAN: + case JS_CLASS_SYMBOL: + case JS_CLASS_DATE: +#ifdef CONFIG_BIGNUM + case JS_CLASS_BIG_INT: + case JS_CLASS_BIG_FLOAT: + case JS_CLASS_BIG_DECIMAL: +#endif + return JS_DupValue(ctx, p->u.object_data); + } + } + return JS_UNDEFINED; +} +#endif + +static int JS_SetObjectData(JSContext *ctx, JSValueConst obj, JSValue val) +{ + JSObject *p; + + if (JS_VALUE_GET_TAG(obj) == JS_TAG_OBJECT) { + p = JS_VALUE_GET_OBJ(obj); + switch(p->class_id) { + case JS_CLASS_NUMBER: + case JS_CLASS_STRING: + case JS_CLASS_BOOLEAN: + case JS_CLASS_SYMBOL: + case JS_CLASS_DATE: +#ifdef CONFIG_BIGNUM + case JS_CLASS_BIG_INT: + case JS_CLASS_BIG_FLOAT: + case JS_CLASS_BIG_DECIMAL: +#endif + JS_FreeValue(ctx, p->u.object_data); + p->u.object_data = val; + return 0; + } + } + JS_FreeValue(ctx, val); + if (!JS_IsException(obj)) + JS_ThrowTypeError(ctx, "invalid object type"); + return -1; +} + +JSValue JS_NewObjectClass(JSContext *ctx, int class_id) +{ + return JS_NewObjectProtoClass(ctx, ctx->class_proto[class_id], class_id); +} + +JSValue JS_NewObjectProto(JSContext *ctx, JSValueConst proto) +{ + return JS_NewObjectProtoClass(ctx, proto, JS_CLASS_OBJECT); +} + +JSValue JS_NewArray(JSContext *ctx) +{ + return JS_NewObjectFromShape(ctx, js_dup_shape(ctx->array_shape), + JS_CLASS_ARRAY); +} + +JSValue JS_NewObject(JSContext *ctx) +{ + /* inline JS_NewObjectClass(ctx, JS_CLASS_OBJECT); */ + return JS_NewObjectProtoClass(ctx, ctx->class_proto[JS_CLASS_OBJECT], JS_CLASS_OBJECT); +} + +static void js_function_set_properties(JSContext *ctx, JSValueConst func_obj, + JSAtom name, int len) +{ + /* ES6 feature non compatible with ES5.1: length is configurable */ + JS_DefinePropertyValue(ctx, func_obj, JS_ATOM_length, JS_NewInt32(ctx, len), + JS_PROP_CONFIGURABLE); + JS_DefinePropertyValue(ctx, func_obj, JS_ATOM_name, + JS_AtomToString(ctx, name), JS_PROP_CONFIGURABLE); +} + +static BOOL js_class_has_bytecode(JSClassID class_id) +{ + return (class_id == JS_CLASS_BYTECODE_FUNCTION || + class_id == JS_CLASS_GENERATOR_FUNCTION || + class_id == JS_CLASS_ASYNC_FUNCTION || + class_id == JS_CLASS_ASYNC_GENERATOR_FUNCTION); +} + +/* return NULL without exception if not a function or no bytecode */ +static JSFunctionBytecode *JS_GetFunctionBytecode(JSValueConst val) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(val) != JS_TAG_OBJECT) + return NULL; + p = JS_VALUE_GET_OBJ(val); + if (!js_class_has_bytecode(p->class_id)) + return NULL; + return p->u.func.function_bytecode; +} + +static void js_method_set_home_object(JSContext *ctx, JSValueConst func_obj, + JSValueConst home_obj) +{ + JSObject *p, *p1; + JSFunctionBytecode *b; + + if (JS_VALUE_GET_TAG(func_obj) != JS_TAG_OBJECT) + return; + p = JS_VALUE_GET_OBJ(func_obj); + if (!js_class_has_bytecode(p->class_id)) + return; + b = p->u.func.function_bytecode; + if (b->need_home_object) { + p1 = p->u.func.home_object; + if (p1) { + JS_FreeValue(ctx, JS_MKPTR(JS_TAG_OBJECT, p1)); + } + if (JS_VALUE_GET_TAG(home_obj) == JS_TAG_OBJECT) + p1 = JS_VALUE_GET_OBJ(JS_DupValue(ctx, home_obj)); + else + p1 = NULL; + p->u.func.home_object = p1; + } +} + +static JSValue js_get_function_name(JSContext *ctx, JSAtom name) +{ + JSValue name_str; + + name_str = JS_AtomToString(ctx, name); + if (JS_AtomSymbolHasDescription(ctx, name)) { + name_str = JS_ConcatString3(ctx, "[", name_str, "]"); + } + return name_str; +} + +/* Modify the name of a method according to the atom and + 'flags'. 'flags' is a bitmask of JS_PROP_HAS_GET and + JS_PROP_HAS_SET. Also set the home object of the method. + Return < 0 if exception. */ +static int js_method_set_properties(JSContext *ctx, JSValueConst func_obj, + JSAtom name, int flags, JSValueConst home_obj) +{ + JSValue name_str; + + name_str = js_get_function_name(ctx, name); + if (flags & JS_PROP_HAS_GET) { + name_str = JS_ConcatString3(ctx, "get ", name_str, ""); + } else if (flags & JS_PROP_HAS_SET) { + name_str = JS_ConcatString3(ctx, "set ", name_str, ""); + } + if (JS_IsException(name_str)) + return -1; + if (JS_DefinePropertyValue(ctx, func_obj, JS_ATOM_name, name_str, + JS_PROP_CONFIGURABLE) < 0) + return -1; + js_method_set_home_object(ctx, func_obj, home_obj); + return 0; +} + +/* Note: at least 'length' arguments will be readable in 'argv' */ +static JSValue JS_NewCFunction3(JSContext *ctx, JSCFunction *func, + const char *name, + int length, JSCFunctionEnum cproto, int magic, + JSValueConst proto_val) +{ + JSValue func_obj; + JSObject *p; + JSAtom name_atom; + + func_obj = JS_NewObjectProtoClass(ctx, proto_val, JS_CLASS_C_FUNCTION); + if (JS_IsException(func_obj)) + return func_obj; + p = JS_VALUE_GET_OBJ(func_obj); + p->u.cfunc.realm = JS_DupContext(ctx); + p->u.cfunc.c_function.generic = func; + p->u.cfunc.length = length; + p->u.cfunc.cproto = cproto; + p->u.cfunc.magic = magic; + p->is_constructor = (cproto == JS_CFUNC_constructor || + cproto == JS_CFUNC_constructor_magic || + cproto == JS_CFUNC_constructor_or_func || + cproto == JS_CFUNC_constructor_or_func_magic); + if (!name) + name = ""; + name_atom = JS_NewAtom(ctx, name); + js_function_set_properties(ctx, func_obj, name_atom, length); + JS_FreeAtom(ctx, name_atom); + return func_obj; +} + +/* Note: at least 'length' arguments will be readable in 'argv' */ +JSValue JS_NewCFunction2(JSContext *ctx, JSCFunction *func, + const char *name, + int length, JSCFunctionEnum cproto, int magic) +{ + return JS_NewCFunction3(ctx, func, name, length, cproto, magic, + ctx->function_proto); +} + +typedef struct JSCFunctionDataRecord { + JSCFunctionData *func; + uint8_t length; + uint8_t data_len; + uint16_t magic; + JSValue data[0]; +} JSCFunctionDataRecord; + +static void js_c_function_data_finalizer(JSRuntime *rt, JSValue val) +{ + JSCFunctionDataRecord *s = JS_GetOpaque(val, JS_CLASS_C_FUNCTION_DATA); + int i; + + if (s) { + for(i = 0; i < s->data_len; i++) { + JS_FreeValueRT(rt, s->data[i]); + } + js_free_rt(rt, s); + } +} + +static void js_c_function_data_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func) +{ + JSCFunctionDataRecord *s = JS_GetOpaque(val, JS_CLASS_C_FUNCTION_DATA); + int i; + + if (s) { + for(i = 0; i < s->data_len; i++) { + JS_MarkValue(rt, s->data[i], mark_func); + } + } +} + +static JSValue js_c_function_data_call(JSContext *ctx, JSValueConst func_obj, + JSValueConst this_val, + int argc, JSValueConst *argv, int flags) +{ + JSCFunctionDataRecord *s = JS_GetOpaque(func_obj, JS_CLASS_C_FUNCTION_DATA); + JSValueConst *arg_buf; + int i; + + /* XXX: could add the function on the stack for debug */ + if (unlikely(argc < s->length)) { + arg_buf = alloca(sizeof(arg_buf[0]) * s->length); + for(i = 0; i < argc; i++) + arg_buf[i] = argv[i]; + for(i = argc; i < s->length; i++) + arg_buf[i] = JS_UNDEFINED; + } else { + arg_buf = argv; + } + + return s->func(ctx, this_val, argc, arg_buf, s->magic, s->data); +} + +JSValue JS_NewCFunctionData(JSContext *ctx, JSCFunctionData *func, + int length, int magic, int data_len, + JSValueConst *data) +{ + JSCFunctionDataRecord *s; + JSValue func_obj; + int i; + + func_obj = JS_NewObjectProtoClass(ctx, ctx->function_proto, + JS_CLASS_C_FUNCTION_DATA); + if (JS_IsException(func_obj)) + return func_obj; + s = js_malloc(ctx, sizeof(*s) + data_len * sizeof(JSValue)); + if (!s) { + JS_FreeValue(ctx, func_obj); + return JS_EXCEPTION; + } + s->func = func; + s->length = length; + s->data_len = data_len; + s->magic = magic; + for(i = 0; i < data_len; i++) + s->data[i] = JS_DupValue(ctx, data[i]); + JS_SetOpaque(func_obj, s); + js_function_set_properties(ctx, func_obj, + JS_ATOM_empty_string, length); + return func_obj; +} + +static JSContext *js_autoinit_get_realm(JSProperty *pr) +{ + return (JSContext *)(pr->u.init.realm_and_id & ~3); +} + +static JSAutoInitIDEnum js_autoinit_get_id(JSProperty *pr) +{ + return pr->u.init.realm_and_id & 3; +} + +static void js_autoinit_free(JSRuntime *rt, JSProperty *pr) +{ + JS_FreeContext(js_autoinit_get_realm(pr)); +} + +static void js_autoinit_mark(JSRuntime *rt, JSProperty *pr, + JS_MarkFunc *mark_func) +{ + mark_func(rt, &js_autoinit_get_realm(pr)->header); +} + +static void free_property(JSRuntime *rt, JSProperty *pr, int prop_flags) +{ + if (unlikely(prop_flags & JS_PROP_TMASK)) { + if ((prop_flags & JS_PROP_TMASK) == JS_PROP_GETSET) { + if (pr->u.getset.getter) + JS_FreeValueRT(rt, JS_MKPTR(JS_TAG_OBJECT, pr->u.getset.getter)); + if (pr->u.getset.setter) + JS_FreeValueRT(rt, JS_MKPTR(JS_TAG_OBJECT, pr->u.getset.setter)); + } else if ((prop_flags & JS_PROP_TMASK) == JS_PROP_VARREF) { + free_var_ref(rt, pr->u.var_ref); + } else if ((prop_flags & JS_PROP_TMASK) == JS_PROP_AUTOINIT) { + js_autoinit_free(rt, pr); + } + } else { + JS_FreeValueRT(rt, pr->u.value); + } +} + +static force_inline JSShapeProperty *find_own_property1(JSObject *p, + JSAtom atom) +{ + JSShape *sh; + JSShapeProperty *pr, *prop; + intptr_t h; + sh = p->shape; + h = (uintptr_t)atom & sh->prop_hash_mask; + h = prop_hash_end(sh)[-h - 1]; + prop = get_shape_prop(sh); + while (h) { + pr = &prop[h - 1]; + if (likely(pr->atom == atom)) { + return pr; + } + h = pr->hash_next; + } + return NULL; +} + +static force_inline JSShapeProperty *find_own_property(JSProperty **ppr, + JSObject *p, + JSAtom atom) +{ + JSShape *sh; + JSShapeProperty *pr, *prop; + intptr_t h; + sh = p->shape; + h = (uintptr_t)atom & sh->prop_hash_mask; + h = prop_hash_end(sh)[-h - 1]; + prop = get_shape_prop(sh); + while (h) { + pr = &prop[h - 1]; + if (likely(pr->atom == atom)) { + *ppr = &p->prop[h - 1]; + /* the compiler should be able to assume that pr != NULL here */ + return pr; + } + h = pr->hash_next; + } + *ppr = NULL; + return NULL; +} + +/* indicate that the object may be part of a function prototype cycle */ +static void set_cycle_flag(JSContext *ctx, JSValueConst obj) +{ +} + +static void free_var_ref(JSRuntime *rt, JSVarRef *var_ref) +{ + if (var_ref) { + assert(var_ref->header.ref_count > 0); + if (--var_ref->header.ref_count == 0) { + if (var_ref->is_detached) { + JS_FreeValueRT(rt, var_ref->value); + remove_gc_object(&var_ref->header); + } else { + list_del(&var_ref->header.link); /* still on the stack */ + } + js_free_rt(rt, var_ref); + } + } +} + +static void js_array_finalizer(JSRuntime *rt, JSValue val) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + int i; + + for(i = 0; i < p->u.array.count; i++) { + JS_FreeValueRT(rt, p->u.array.u.values[i]); + } + js_free_rt(rt, p->u.array.u.values); +} + +static void js_array_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + int i; + + for(i = 0; i < p->u.array.count; i++) { + JS_MarkValue(rt, p->u.array.u.values[i], mark_func); + } +} + +static void js_object_data_finalizer(JSRuntime *rt, JSValue val) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + JS_FreeValueRT(rt, p->u.object_data); + p->u.object_data = JS_UNDEFINED; +} + +static void js_object_data_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + JS_MarkValue(rt, p->u.object_data, mark_func); +} + +static void js_c_function_finalizer(JSRuntime *rt, JSValue val) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + + if (p->u.cfunc.realm) + JS_FreeContext(p->u.cfunc.realm); +} + +static void js_c_function_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + + if (p->u.cfunc.realm) + mark_func(rt, &p->u.cfunc.realm->header); +} + +static void js_bytecode_function_finalizer(JSRuntime *rt, JSValue val) +{ + JSObject *p1, *p = JS_VALUE_GET_OBJ(val); + JSFunctionBytecode *b; + JSVarRef **var_refs; + int i; + + p1 = p->u.func.home_object; + if (p1) { + JS_FreeValueRT(rt, JS_MKPTR(JS_TAG_OBJECT, p1)); + } + b = p->u.func.function_bytecode; + if (b) { + var_refs = p->u.func.var_refs; + if (var_refs) { + for(i = 0; i < b->closure_var_count; i++) + free_var_ref(rt, var_refs[i]); + js_free_rt(rt, var_refs); + } + JS_FreeValueRT(rt, JS_MKPTR(JS_TAG_FUNCTION_BYTECODE, b)); + } +} + +static void js_bytecode_function_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + JSVarRef **var_refs = p->u.func.var_refs; + JSFunctionBytecode *b = p->u.func.function_bytecode; + int i; + + if (p->u.func.home_object) { + JS_MarkValue(rt, JS_MKPTR(JS_TAG_OBJECT, p->u.func.home_object), + mark_func); + } + if (b) { + if (var_refs) { + for(i = 0; i < b->closure_var_count; i++) { + JSVarRef *var_ref = var_refs[i]; + if (var_ref && var_ref->is_detached) { + mark_func(rt, &var_ref->header); + } + } + } + /* must mark the function bytecode because template objects may be + part of a cycle */ + JS_MarkValue(rt, JS_MKPTR(JS_TAG_FUNCTION_BYTECODE, b), mark_func); + } +} + +static void js_bound_function_finalizer(JSRuntime *rt, JSValue val) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + JSBoundFunction *bf = p->u.bound_function; + int i; + + JS_FreeValueRT(rt, bf->func_obj); + JS_FreeValueRT(rt, bf->this_val); + for(i = 0; i < bf->argc; i++) { + JS_FreeValueRT(rt, bf->argv[i]); + } + js_free_rt(rt, bf); +} + +static void js_bound_function_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + JSBoundFunction *bf = p->u.bound_function; + int i; + + JS_MarkValue(rt, bf->func_obj, mark_func); + JS_MarkValue(rt, bf->this_val, mark_func); + for(i = 0; i < bf->argc; i++) + JS_MarkValue(rt, bf->argv[i], mark_func); +} + +static void js_for_in_iterator_finalizer(JSRuntime *rt, JSValue val) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + JSForInIterator *it = p->u.for_in_iterator; + JS_FreeValueRT(rt, it->obj); + js_free_rt(rt, it); +} + +static void js_for_in_iterator_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + JSForInIterator *it = p->u.for_in_iterator; + JS_MarkValue(rt, it->obj, mark_func); +} + +static void free_object(JSRuntime *rt, JSObject *p) +{ + int i; + JSClassFinalizer *finalizer; + JSShape *sh; + JSShapeProperty *pr; + + p->free_mark = 1; /* used to tell the object is invalid when + freeing cycles */ + /* free all the fields */ + sh = p->shape; + pr = get_shape_prop(sh); + for(i = 0; i < sh->prop_count; i++) { + free_property(rt, &p->prop[i], pr->flags); + pr++; + } + js_free_rt(rt, p->prop); + /* as an optimization we destroy the shape immediately without + putting it in gc_zero_ref_count_list */ + js_free_shape(rt, sh); + + /* fail safe */ + p->shape = NULL; + p->prop = NULL; + + if (unlikely(p->first_weak_ref)) { + reset_weak_ref(rt, p); + } + + finalizer = rt->class_array[p->class_id].finalizer; + if (finalizer) + (*finalizer)(rt, JS_MKPTR(JS_TAG_OBJECT, p)); + + /* fail safe */ + p->class_id = 0; + p->u.opaque = NULL; + p->u.func.var_refs = NULL; + p->u.func.home_object = NULL; + + remove_gc_object(&p->header); + if (rt->gc_phase == JS_GC_PHASE_REMOVE_CYCLES && p->header.ref_count != 0) { + list_add_tail(&p->header.link, &rt->gc_zero_ref_count_list); + } else { + js_free_rt(rt, p); + } +} + +static void free_gc_object(JSRuntime *rt, JSGCObjectHeader *gp) +{ + switch(gp->gc_obj_type) { + case JS_GC_OBJ_TYPE_JS_OBJECT: + free_object(rt, (JSObject *)gp); + break; + case JS_GC_OBJ_TYPE_FUNCTION_BYTECODE: + free_function_bytecode(rt, (JSFunctionBytecode *)gp); + break; + default: + abort(); + } +} + +static void free_zero_refcount(JSRuntime *rt) +{ + struct list_head *el; + JSGCObjectHeader *p; + + rt->gc_phase = JS_GC_PHASE_DECREF; + for(;;) { + el = rt->gc_zero_ref_count_list.next; + if (el == &rt->gc_zero_ref_count_list) + break; + p = list_entry(el, JSGCObjectHeader, link); + assert(p->ref_count == 0); + free_gc_object(rt, p); + } + rt->gc_phase = JS_GC_PHASE_NONE; +} + +/* called with the ref_count of 'v' reaches zero. */ +void __JS_FreeValueRT(JSRuntime *rt, JSValue v) +{ + uint32_t tag = JS_VALUE_GET_TAG(v); + +#ifdef DUMP_FREE + { + printf("Freeing "); + if (tag == JS_TAG_OBJECT) { + JS_DumpObject(rt, JS_VALUE_GET_OBJ(v)); + } else { + JS_DumpValueShort(rt, v); + printf("\n"); + } + } +#endif + + switch(tag) { + case JS_TAG_STRING: + { + JSString *p = JS_VALUE_GET_STRING(v); + if (p->atom_type) { + JS_FreeAtomStruct(rt, p); + } else { +#ifdef DUMP_LEAKS + list_del(&p->link); +#endif + js_free_rt(rt, p); + } + } + break; + case JS_TAG_OBJECT: + case JS_TAG_FUNCTION_BYTECODE: + { + JSGCObjectHeader *p = JS_VALUE_GET_PTR(v); + if (rt->gc_phase != JS_GC_PHASE_REMOVE_CYCLES) { + list_del(&p->link); + list_add(&p->link, &rt->gc_zero_ref_count_list); + if (rt->gc_phase == JS_GC_PHASE_NONE) { + free_zero_refcount(rt); + } + } + } + break; + case JS_TAG_MODULE: + abort(); /* never freed here */ + break; +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_INT: + case JS_TAG_BIG_FLOAT: + { + JSBigFloat *bf = JS_VALUE_GET_PTR(v); + bf_delete(&bf->num); + js_free_rt(rt, bf); + } + break; + case JS_TAG_BIG_DECIMAL: + { + JSBigDecimal *bf = JS_VALUE_GET_PTR(v); + bfdec_delete(&bf->num); + js_free_rt(rt, bf); + } + break; +#endif + case JS_TAG_SYMBOL: + { + JSAtomStruct *p = JS_VALUE_GET_PTR(v); + JS_FreeAtomStruct(rt, p); + } + break; + default: + printf("__JS_FreeValue: unknown tag=%d\n", tag); + abort(); + } +} + +void __JS_FreeValue(JSContext *ctx, JSValue v) +{ + __JS_FreeValueRT(ctx->rt, v); +} + +/* garbage collection */ + +static void add_gc_object(JSRuntime *rt, JSGCObjectHeader *h, + JSGCObjectTypeEnum type) +{ + h->mark = 0; + h->gc_obj_type = type; + list_add_tail(&h->link, &rt->gc_obj_list); +} + +static void remove_gc_object(JSGCObjectHeader *h) +{ + list_del(&h->link); +} + +void JS_MarkValue(JSRuntime *rt, JSValueConst val, JS_MarkFunc *mark_func) +{ + if (JS_VALUE_HAS_REF_COUNT(val)) { + switch(JS_VALUE_GET_TAG(val)) { + case JS_TAG_OBJECT: + case JS_TAG_FUNCTION_BYTECODE: + mark_func(rt, JS_VALUE_GET_PTR(val)); + break; + default: + break; + } + } +} + +static void mark_children(JSRuntime *rt, JSGCObjectHeader *gp, + JS_MarkFunc *mark_func) +{ + switch(gp->gc_obj_type) { + case JS_GC_OBJ_TYPE_JS_OBJECT: + { + JSObject *p = (JSObject *)gp; + JSShapeProperty *prs; + JSShape *sh; + int i; + sh = p->shape; + mark_func(rt, &sh->header); + /* mark all the fields */ + prs = get_shape_prop(sh); + for(i = 0; i < sh->prop_count; i++) { + JSProperty *pr = &p->prop[i]; + if (prs->atom != JS_ATOM_NULL) { + if (prs->flags & JS_PROP_TMASK) { + if ((prs->flags & JS_PROP_TMASK) == JS_PROP_GETSET) { + if (pr->u.getset.getter) + mark_func(rt, &pr->u.getset.getter->header); + if (pr->u.getset.setter) + mark_func(rt, &pr->u.getset.setter->header); + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_VARREF) { + if (pr->u.var_ref->is_detached) { + /* Note: the tag does not matter + provided it is a GC object */ + mark_func(rt, &pr->u.var_ref->header); + } + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_AUTOINIT) { + js_autoinit_mark(rt, pr, mark_func); + } + } else { + JS_MarkValue(rt, pr->u.value, mark_func); + } + } + prs++; + } + + if (p->class_id != JS_CLASS_OBJECT) { + JSClassGCMark *gc_mark; + gc_mark = rt->class_array[p->class_id].gc_mark; + if (gc_mark) + gc_mark(rt, JS_MKPTR(JS_TAG_OBJECT, p), mark_func); + } + } + break; + case JS_GC_OBJ_TYPE_FUNCTION_BYTECODE: + /* the template objects can be part of a cycle */ + { + JSFunctionBytecode *b = (JSFunctionBytecode *)gp; + int i; + for(i = 0; i < b->cpool_count; i++) { + JS_MarkValue(rt, b->cpool[i], mark_func); + } + if (b->realm) + mark_func(rt, &b->realm->header); + } + break; + case JS_GC_OBJ_TYPE_VAR_REF: + { + JSVarRef *var_ref = (JSVarRef *)gp; + /* only detached variable referenced are taken into account */ + assert(var_ref->is_detached); + JS_MarkValue(rt, *var_ref->pvalue, mark_func); + } + break; + case JS_GC_OBJ_TYPE_ASYNC_FUNCTION: + { + JSAsyncFunctionData *s = (JSAsyncFunctionData *)gp; + if (s->is_active) + async_func_mark(rt, &s->func_state, mark_func); + JS_MarkValue(rt, s->resolving_funcs[0], mark_func); + JS_MarkValue(rt, s->resolving_funcs[1], mark_func); + } + break; + case JS_GC_OBJ_TYPE_SHAPE: + { + JSShape *sh = (JSShape *)gp; + if (sh->proto != NULL) { + mark_func(rt, &sh->proto->header); + } + } + break; + case JS_GC_OBJ_TYPE_JS_CONTEXT: + { + JSContext *ctx = (JSContext *)gp; + JS_MarkContext(rt, ctx, mark_func); + } + break; + default: + abort(); + } +} + +static void gc_decref_child(JSRuntime *rt, JSGCObjectHeader *p) +{ + assert(p->ref_count > 0); + p->ref_count--; + if (p->ref_count == 0 && p->mark == 1) { + list_del(&p->link); + list_add_tail(&p->link, &rt->tmp_obj_list); + } +} + +static void gc_decref(JSRuntime *rt) +{ + struct list_head *el, *el1; + JSGCObjectHeader *p; + + init_list_head(&rt->tmp_obj_list); + + /* decrement the refcount of all the children of all the GC + objects and move the GC objects with zero refcount to + tmp_obj_list */ + list_for_each_safe(el, el1, &rt->gc_obj_list) { + p = list_entry(el, JSGCObjectHeader, link); + assert(p->mark == 0); + mark_children(rt, p, gc_decref_child); + p->mark = 1; + if (p->ref_count == 0) { + list_del(&p->link); + list_add_tail(&p->link, &rt->tmp_obj_list); + } + } +} + +static void gc_scan_incref_child(JSRuntime *rt, JSGCObjectHeader *p) +{ + p->ref_count++; + if (p->ref_count == 1) { + /* ref_count was 0: remove from tmp_obj_list and add at the + end of gc_obj_list */ + list_del(&p->link); + list_add_tail(&p->link, &rt->gc_obj_list); + p->mark = 0; /* reset the mark for the next GC call */ + } +} + +static void gc_scan_incref_child2(JSRuntime *rt, JSGCObjectHeader *p) +{ + p->ref_count++; +} + +static void gc_scan(JSRuntime *rt) +{ + struct list_head *el; + JSGCObjectHeader *p; + + /* keep the objects with a refcount > 0 and their children. */ + list_for_each(el, &rt->gc_obj_list) { + p = list_entry(el, JSGCObjectHeader, link); + assert(p->ref_count > 0); + p->mark = 0; /* reset the mark for the next GC call */ + mark_children(rt, p, gc_scan_incref_child); + } + + /* restore the refcount of the objects to be deleted. */ + list_for_each(el, &rt->tmp_obj_list) { + p = list_entry(el, JSGCObjectHeader, link); + mark_children(rt, p, gc_scan_incref_child2); + } +} + +static void gc_free_cycles(JSRuntime *rt) +{ + struct list_head *el, *el1; + JSGCObjectHeader *p; +#ifdef DUMP_GC_FREE + BOOL header_done = FALSE; +#endif + + rt->gc_phase = JS_GC_PHASE_REMOVE_CYCLES; + + for(;;) { + el = rt->tmp_obj_list.next; + if (el == &rt->tmp_obj_list) + break; + p = list_entry(el, JSGCObjectHeader, link); + /* Only need to free the GC object associated with JS + values. The rest will be automatically removed because they + must be referenced by them. */ + switch(p->gc_obj_type) { + case JS_GC_OBJ_TYPE_JS_OBJECT: + case JS_GC_OBJ_TYPE_FUNCTION_BYTECODE: +#ifdef DUMP_GC_FREE + if (!header_done) { + printf("Freeing cycles:\n"); + JS_DumpObjectHeader(rt); + header_done = TRUE; + } + JS_DumpGCObject(rt, p); +#endif + free_gc_object(rt, p); + break; + default: + list_del(&p->link); + list_add_tail(&p->link, &rt->gc_zero_ref_count_list); + break; + } + } + rt->gc_phase = JS_GC_PHASE_NONE; + + list_for_each_safe(el, el1, &rt->gc_zero_ref_count_list) { + p = list_entry(el, JSGCObjectHeader, link); + assert(p->gc_obj_type == JS_GC_OBJ_TYPE_JS_OBJECT || + p->gc_obj_type == JS_GC_OBJ_TYPE_FUNCTION_BYTECODE); + js_free_rt(rt, p); + } + + init_list_head(&rt->gc_zero_ref_count_list); +} + +void JS_RunGC(JSRuntime *rt) +{ + /* decrement the reference of the children of each object. mark = + 1 after this pass. */ + gc_decref(rt); + + /* keep the GC objects with a non zero refcount and their childs */ + gc_scan(rt); + + /* free the GC objects in a cycle */ + gc_free_cycles(rt); +} + +/* Return false if not an object or if the object has already been + freed (zombie objects are visible in finalizers when freeing + cycles). */ +BOOL JS_IsLiveObject(JSRuntime *rt, JSValueConst obj) +{ + JSObject *p; + if (!JS_IsObject(obj)) + return FALSE; + p = JS_VALUE_GET_OBJ(obj); + return !p->free_mark; +} + +/* Compute memory used by various object types */ +/* XXX: poor man's approach to handling multiply referenced objects */ +typedef struct JSMemoryUsage_helper { + double memory_used_count; + double str_count; + double str_size; + int64_t js_func_count; + double js_func_size; + int64_t js_func_code_size; + int64_t js_func_pc2line_count; + int64_t js_func_pc2line_size; +} JSMemoryUsage_helper; + +static void compute_value_size(JSValueConst val, JSMemoryUsage_helper *hp); + +static void compute_jsstring_size(JSString *str, JSMemoryUsage_helper *hp) +{ + if (!str->atom_type) { /* atoms are handled separately */ + double s_ref_count = str->header.ref_count; + hp->str_count += 1 / s_ref_count; + hp->str_size += ((sizeof(*str) + (str->len << str->is_wide_char) + + 1 - str->is_wide_char) / s_ref_count); + } +} + +static void compute_bytecode_size(JSFunctionBytecode *b, JSMemoryUsage_helper *hp) +{ + int memory_used_count, js_func_size, i; + + memory_used_count = 0; + js_func_size = offsetof(JSFunctionBytecode, debug); + if (b->vardefs) { + js_func_size += (b->arg_count + b->var_count) * sizeof(*b->vardefs); + } + if (b->cpool) { + js_func_size += b->cpool_count * sizeof(*b->cpool); + for (i = 0; i < b->cpool_count; i++) { + JSValueConst val = b->cpool[i]; + compute_value_size(val, hp); + } + } + if (b->closure_var) { + js_func_size += b->closure_var_count * sizeof(*b->closure_var); + } + if (!b->read_only_bytecode && b->byte_code_buf) { + hp->js_func_code_size += b->byte_code_len; + } + if (b->has_debug) { + js_func_size += sizeof(*b) - offsetof(JSFunctionBytecode, debug); + if (b->debug.source) { + memory_used_count++; + js_func_size += b->debug.source_len + 1; + } + if (b->debug.pc2line_len) { + memory_used_count++; + hp->js_func_pc2line_count += 1; + hp->js_func_pc2line_size += b->debug.pc2line_len; + } + } + hp->js_func_size += js_func_size; + hp->js_func_count += 1; + hp->memory_used_count += memory_used_count; +} + +static void compute_value_size(JSValueConst val, JSMemoryUsage_helper *hp) +{ + switch(JS_VALUE_GET_TAG(val)) { + case JS_TAG_STRING: + compute_jsstring_size(JS_VALUE_GET_STRING(val), hp); + break; +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_INT: + case JS_TAG_BIG_FLOAT: + case JS_TAG_BIG_DECIMAL: + /* should track JSBigFloat usage */ + break; +#endif + } +} + +void JS_ComputeMemoryUsage(JSRuntime *rt, JSMemoryUsage *s) +{ + struct list_head *el, *el1; + int i; + JSMemoryUsage_helper mem = { 0 }, *hp = &mem; + + memset(s, 0, sizeof(*s)); + s->malloc_count = rt->malloc_state.malloc_count; + s->malloc_size = rt->malloc_state.malloc_size; + s->malloc_limit = rt->malloc_state.malloc_limit; + + s->memory_used_count = 2; /* rt + rt->class_array */ + s->memory_used_size = sizeof(JSRuntime) + sizeof(JSValue) * rt->class_count; + + list_for_each(el, &rt->context_list) { + JSContext *ctx = list_entry(el, JSContext, link); + JSShape *sh = ctx->array_shape; + s->memory_used_count += 2; /* ctx + ctx->class_proto */ + s->memory_used_size += sizeof(JSContext) + + sizeof(JSValue) * rt->class_count; + s->binary_object_count += ctx->binary_object_count; + s->binary_object_size += ctx->binary_object_size; + + /* the hashed shapes are counted separately */ + if (sh && !sh->is_hashed) { + int hash_size = sh->prop_hash_mask + 1; + s->shape_count++; + s->shape_size += get_shape_size(hash_size, sh->prop_size); + } + list_for_each(el1, &ctx->loaded_modules) { + JSModuleDef *m = list_entry(el1, JSModuleDef, link); + s->memory_used_count += 1; + s->memory_used_size += sizeof(*m); + if (m->req_module_entries) { + s->memory_used_count += 1; + s->memory_used_size += m->req_module_entries_count * sizeof(*m->req_module_entries); + } + if (m->export_entries) { + s->memory_used_count += 1; + s->memory_used_size += m->export_entries_count * sizeof(*m->export_entries); + for (i = 0; i < m->export_entries_count; i++) { + JSExportEntry *me = &m->export_entries[i]; + if (me->export_type == JS_EXPORT_TYPE_LOCAL && me->u.local.var_ref) { + /* potential multiple count */ + s->memory_used_count += 1; + compute_value_size(me->u.local.var_ref->value, hp); + } + } + } + if (m->star_export_entries) { + s->memory_used_count += 1; + s->memory_used_size += m->star_export_entries_count * sizeof(*m->star_export_entries); + } + if (m->import_entries) { + s->memory_used_count += 1; + s->memory_used_size += m->import_entries_count * sizeof(*m->import_entries); + } + compute_value_size(m->module_ns, hp); + compute_value_size(m->func_obj, hp); + } + } + + list_for_each(el, &rt->gc_obj_list) { + JSGCObjectHeader *gp = list_entry(el, JSGCObjectHeader, link); + JSObject *p; + JSShape *sh; + JSShapeProperty *prs; + + /* XXX: could count the other GC object types too */ + if (gp->gc_obj_type == JS_GC_OBJ_TYPE_FUNCTION_BYTECODE) { + compute_bytecode_size((JSFunctionBytecode *)gp, hp); + continue; + } else if (gp->gc_obj_type != JS_GC_OBJ_TYPE_JS_OBJECT) { + continue; + } + p = (JSObject *)gp; + sh = p->shape; + s->obj_count++; + if (p->prop) { + s->memory_used_count++; + s->prop_size += sh->prop_size * sizeof(*p->prop); + s->prop_count += sh->prop_count; + prs = get_shape_prop(sh); + for(i = 0; i < sh->prop_count; i++) { + JSProperty *pr = &p->prop[i]; + if (prs->atom != JS_ATOM_NULL && !(prs->flags & JS_PROP_TMASK)) { + compute_value_size(pr->u.value, hp); + } + prs++; + } + } + /* the hashed shapes are counted separately */ + if (!sh->is_hashed) { + int hash_size = sh->prop_hash_mask + 1; + s->shape_count++; + s->shape_size += get_shape_size(hash_size, sh->prop_size); + } + + switch(p->class_id) { + case JS_CLASS_ARRAY: /* u.array | length */ + case JS_CLASS_ARGUMENTS: /* u.array | length */ + s->array_count++; + if (p->fast_array) { + s->fast_array_count++; + if (p->u.array.u.values) { + s->memory_used_count++; + s->memory_used_size += p->u.array.count * + sizeof(*p->u.array.u.values); + s->fast_array_elements += p->u.array.count; + for (i = 0; i < p->u.array.count; i++) { + compute_value_size(p->u.array.u.values[i], hp); + } + } + } + break; + case JS_CLASS_NUMBER: /* u.object_data */ + case JS_CLASS_STRING: /* u.object_data */ + case JS_CLASS_BOOLEAN: /* u.object_data */ + case JS_CLASS_SYMBOL: /* u.object_data */ + case JS_CLASS_DATE: /* u.object_data */ +#ifdef CONFIG_BIGNUM + case JS_CLASS_BIG_INT: /* u.object_data */ + case JS_CLASS_BIG_FLOAT: /* u.object_data */ + case JS_CLASS_BIG_DECIMAL: /* u.object_data */ +#endif + compute_value_size(p->u.object_data, hp); + break; + case JS_CLASS_C_FUNCTION: /* u.cfunc */ + s->c_func_count++; + break; + case JS_CLASS_BYTECODE_FUNCTION: /* u.func */ + { + JSFunctionBytecode *b = p->u.func.function_bytecode; + JSVarRef **var_refs = p->u.func.var_refs; + /* home_object: object will be accounted for in list scan */ + if (var_refs) { + s->memory_used_count++; + s->js_func_size += b->closure_var_count * sizeof(*var_refs); + for (i = 0; i < b->closure_var_count; i++) { + if (var_refs[i]) { + double ref_count = var_refs[i]->header.ref_count; + s->memory_used_count += 1 / ref_count; + s->js_func_size += sizeof(*var_refs[i]) / ref_count; + /* handle non object closed values */ + if (var_refs[i]->pvalue == &var_refs[i]->value) { + /* potential multiple count */ + compute_value_size(var_refs[i]->value, hp); + } + } + } + } + } + break; + case JS_CLASS_BOUND_FUNCTION: /* u.bound_function */ + { + JSBoundFunction *bf = p->u.bound_function; + /* func_obj and this_val are objects */ + for (i = 0; i < bf->argc; i++) { + compute_value_size(bf->argv[i], hp); + } + s->memory_used_count += 1; + s->memory_used_size += sizeof(*bf) + bf->argc * sizeof(*bf->argv); + } + break; + case JS_CLASS_C_FUNCTION_DATA: /* u.c_function_data_record */ + { + JSCFunctionDataRecord *fd = p->u.c_function_data_record; + if (fd) { + for (i = 0; i < fd->data_len; i++) { + compute_value_size(fd->data[i], hp); + } + s->memory_used_count += 1; + s->memory_used_size += sizeof(*fd) + fd->data_len * sizeof(*fd->data); + } + } + break; + case JS_CLASS_REGEXP: /* u.regexp */ + compute_jsstring_size(p->u.regexp.pattern, hp); + compute_jsstring_size(p->u.regexp.bytecode, hp); + break; + + case JS_CLASS_FOR_IN_ITERATOR: /* u.for_in_iterator */ + { + JSForInIterator *it = p->u.for_in_iterator; + if (it) { + compute_value_size(it->obj, hp); + s->memory_used_count += 1; + s->memory_used_size += sizeof(*it); + } + } + break; + case JS_CLASS_ARRAY_BUFFER: /* u.array_buffer */ + case JS_CLASS_SHARED_ARRAY_BUFFER: /* u.array_buffer */ + { + JSArrayBuffer *abuf = p->u.array_buffer; + if (abuf) { + s->memory_used_count += 1; + s->memory_used_size += sizeof(*abuf); + if (abuf->data) { + s->memory_used_count += 1; + s->memory_used_size += abuf->byte_length; + } + } + } + break; + case JS_CLASS_GENERATOR: /* u.generator_data */ + case JS_CLASS_UINT8C_ARRAY: /* u.typed_array / u.array */ + case JS_CLASS_INT8_ARRAY: /* u.typed_array / u.array */ + case JS_CLASS_UINT8_ARRAY: /* u.typed_array / u.array */ + case JS_CLASS_INT16_ARRAY: /* u.typed_array / u.array */ + case JS_CLASS_UINT16_ARRAY: /* u.typed_array / u.array */ + case JS_CLASS_INT32_ARRAY: /* u.typed_array / u.array */ + case JS_CLASS_UINT32_ARRAY: /* u.typed_array / u.array */ +#ifdef CONFIG_BIGNUM + case JS_CLASS_BIG_INT64_ARRAY: /* u.typed_array / u.array */ + case JS_CLASS_BIG_UINT64_ARRAY: /* u.typed_array / u.array */ +#endif + case JS_CLASS_FLOAT32_ARRAY: /* u.typed_array / u.array */ + case JS_CLASS_FLOAT64_ARRAY: /* u.typed_array / u.array */ + case JS_CLASS_DATAVIEW: /* u.typed_array */ +#ifdef CONFIG_BIGNUM + case JS_CLASS_FLOAT_ENV: /* u.float_env */ +#endif + case JS_CLASS_MAP: /* u.map_state */ + case JS_CLASS_SET: /* u.map_state */ + case JS_CLASS_WEAKMAP: /* u.map_state */ + case JS_CLASS_WEAKSET: /* u.map_state */ + case JS_CLASS_MAP_ITERATOR: /* u.map_iterator_data */ + case JS_CLASS_SET_ITERATOR: /* u.map_iterator_data */ + case JS_CLASS_ARRAY_ITERATOR: /* u.array_iterator_data */ + case JS_CLASS_STRING_ITERATOR: /* u.array_iterator_data */ + case JS_CLASS_PROXY: /* u.proxy_data */ + case JS_CLASS_PROMISE: /* u.promise_data */ + case JS_CLASS_PROMISE_RESOLVE_FUNCTION: /* u.promise_function_data */ + case JS_CLASS_PROMISE_REJECT_FUNCTION: /* u.promise_function_data */ + case JS_CLASS_ASYNC_FUNCTION_RESOLVE: /* u.async_function_data */ + case JS_CLASS_ASYNC_FUNCTION_REJECT: /* u.async_function_data */ + case JS_CLASS_ASYNC_FROM_SYNC_ITERATOR: /* u.async_from_sync_iterator_data */ + case JS_CLASS_ASYNC_GENERATOR: /* u.async_generator_data */ + /* TODO */ + default: + /* XXX: class definition should have an opaque block size */ + if (p->u.opaque) { + s->memory_used_count += 1; + } + break; + } + } + s->obj_size += s->obj_count * sizeof(JSObject); + + /* hashed shapes */ + s->memory_used_count++; /* rt->shape_hash */ + s->memory_used_size += sizeof(rt->shape_hash[0]) * rt->shape_hash_size; + for(i = 0; i < rt->shape_hash_size; i++) { + JSShape *sh; + for(sh = rt->shape_hash[i]; sh != NULL; sh = sh->shape_hash_next) { + int hash_size = sh->prop_hash_mask + 1; + s->shape_count++; + s->shape_size += get_shape_size(hash_size, sh->prop_size); + } + } + + /* atoms */ + s->memory_used_count += 2; /* rt->atom_array, rt->atom_hash */ + s->atom_count = rt->atom_count; + s->atom_size = sizeof(rt->atom_array[0]) * rt->atom_size + + sizeof(rt->atom_hash[0]) * rt->atom_hash_size; + for(i = 0; i < rt->atom_size; i++) { + JSAtomStruct *p = rt->atom_array[i]; + if (!atom_is_free(p)) { + s->atom_size += (sizeof(*p) + (p->len << p->is_wide_char) + + 1 - p->is_wide_char); + } + } + s->str_count = round(mem.str_count); + s->str_size = round(mem.str_size); + s->js_func_count = mem.js_func_count; + s->js_func_size = round(mem.js_func_size); + s->js_func_code_size = mem.js_func_code_size; + s->js_func_pc2line_count = mem.js_func_pc2line_count; + s->js_func_pc2line_size = mem.js_func_pc2line_size; + s->memory_used_count += round(mem.memory_used_count) + + s->atom_count + s->str_count + + s->obj_count + s->shape_count + + s->js_func_count + s->js_func_pc2line_count; + s->memory_used_size += s->atom_size + s->str_size + + s->obj_size + s->prop_size + s->shape_size + + s->js_func_size + s->js_func_code_size + s->js_func_pc2line_size; +} + +void JS_DumpMemoryUsage(FILE *fp, const JSMemoryUsage *s, JSRuntime *rt) +{ + fprintf(fp, "QuickJS memory usage -- " +#ifdef CONFIG_BIGNUM + "BigNum " +#endif + CONFIG_VERSION " version, %d-bit, malloc limit: %"PRId64"\n\n", + (int)sizeof(void *) * 8, (int64_t)(ssize_t)s->malloc_limit); +#if 1 + if (rt) { + static const struct { + const char *name; + size_t size; + } object_types[] = { + { "JSRuntime", sizeof(JSRuntime) }, + { "JSContext", sizeof(JSContext) }, + { "JSObject", sizeof(JSObject) }, + { "JSString", sizeof(JSString) }, + { "JSFunctionBytecode", sizeof(JSFunctionBytecode) }, + }; + int i, usage_size_ok = 0; + for(i = 0; i < countof(object_types); i++) { + unsigned int size = object_types[i].size; + void *p = js_malloc_rt(rt, size); + if (p) { + unsigned int size1 = js_malloc_usable_size_rt(rt, p); + if (size1 >= size) { + usage_size_ok = 1; + fprintf(fp, " %3u + %-2u %s\n", + size, size1 - size, object_types[i].name); + } + js_free_rt(rt, p); + } + } + if (!usage_size_ok) { + fprintf(fp, " malloc_usable_size unavailable\n"); + } + { + int obj_classes[JS_CLASS_INIT_COUNT + 1] = { 0 }; + int class_id; + struct list_head *el; + list_for_each(el, &rt->gc_obj_list) { + JSGCObjectHeader *gp = list_entry(el, JSGCObjectHeader, link); + JSObject *p; + if (gp->gc_obj_type == JS_GC_OBJ_TYPE_JS_OBJECT) { + p = (JSObject *)gp; + obj_classes[min_uint32(p->class_id, JS_CLASS_INIT_COUNT)]++; + } + } + fprintf(fp, "\n" "JSObject classes\n"); + if (obj_classes[0]) + fprintf(fp, " %5d %2.0d %s\n", obj_classes[0], 0, "none"); + for (class_id = 1; class_id < JS_CLASS_INIT_COUNT; class_id++) { + if (obj_classes[class_id]) { + char buf[ATOM_GET_STR_BUF_SIZE]; + fprintf(fp, " %5d %2.0d %s\n", obj_classes[class_id], class_id, + JS_AtomGetStrRT(rt, buf, sizeof(buf), js_std_class_def[class_id - 1].class_name)); + } + } + if (obj_classes[JS_CLASS_INIT_COUNT]) + fprintf(fp, " %5d %2.0d %s\n", obj_classes[JS_CLASS_INIT_COUNT], 0, "other"); + } + fprintf(fp, "\n"); + } +#endif + fprintf(fp, "%-20s %8s %8s\n", "NAME", "COUNT", "SIZE"); + + if (s->malloc_count) { + fprintf(fp, "%-20s %8"PRId64" %8"PRId64" (%0.1f per block)\n", + "memory allocated", s->malloc_count, s->malloc_size, + (double)s->malloc_size / s->malloc_count); + fprintf(fp, "%-20s %8"PRId64" %8"PRId64" (%d overhead, %0.1f average slack)\n", + "memory used", s->memory_used_count, s->memory_used_size, + MALLOC_OVERHEAD, ((double)(s->malloc_size - s->memory_used_size) / + s->memory_used_count)); + } + if (s->atom_count) { + fprintf(fp, "%-20s %8"PRId64" %8"PRId64" (%0.1f per atom)\n", + "atoms", s->atom_count, s->atom_size, + (double)s->atom_size / s->atom_count); + } + if (s->str_count) { + fprintf(fp, "%-20s %8"PRId64" %8"PRId64" (%0.1f per string)\n", + "strings", s->str_count, s->str_size, + (double)s->str_size / s->str_count); + } + if (s->obj_count) { + fprintf(fp, "%-20s %8"PRId64" %8"PRId64" (%0.1f per object)\n", + "objects", s->obj_count, s->obj_size, + (double)s->obj_size / s->obj_count); + fprintf(fp, "%-20s %8"PRId64" %8"PRId64" (%0.1f per object)\n", + " properties", s->prop_count, s->prop_size, + (double)s->prop_count / s->obj_count); + fprintf(fp, "%-20s %8"PRId64" %8"PRId64" (%0.1f per shape)\n", + " shapes", s->shape_count, s->shape_size, + (double)s->shape_size / s->shape_count); + } + if (s->js_func_count) { + fprintf(fp, "%-20s %8"PRId64" %8"PRId64"\n", + "bytecode functions", s->js_func_count, s->js_func_size); + fprintf(fp, "%-20s %8"PRId64" %8"PRId64" (%0.1f per function)\n", + " bytecode", s->js_func_count, s->js_func_code_size, + (double)s->js_func_code_size / s->js_func_count); + if (s->js_func_pc2line_count) { + fprintf(fp, "%-20s %8"PRId64" %8"PRId64" (%0.1f per function)\n", + " pc2line", s->js_func_pc2line_count, + s->js_func_pc2line_size, + (double)s->js_func_pc2line_size / s->js_func_pc2line_count); + } + } + if (s->c_func_count) { + fprintf(fp, "%-20s %8"PRId64"\n", "C functions", s->c_func_count); + } + if (s->array_count) { + fprintf(fp, "%-20s %8"PRId64"\n", "arrays", s->array_count); + if (s->fast_array_count) { + fprintf(fp, "%-20s %8"PRId64"\n", " fast arrays", s->fast_array_count); + fprintf(fp, "%-20s %8"PRId64" %8"PRId64" (%0.1f per fast array)\n", + " elements", s->fast_array_elements, + s->fast_array_elements * (int)sizeof(JSValue), + (double)s->fast_array_elements / s->fast_array_count); + } + } + if (s->binary_object_count) { + fprintf(fp, "%-20s %8"PRId64" %8"PRId64"\n", + "binary objects", s->binary_object_count, s->binary_object_size); + } +} + +JSValue JS_GetGlobalObject(JSContext *ctx) +{ + return JS_DupValue(ctx, ctx->global_obj); +} + +/* WARNING: obj is freed */ +JSValue JS_Throw(JSContext *ctx, JSValue obj) +{ + JSRuntime *rt = ctx->rt; + JS_FreeValue(ctx, rt->current_exception); + rt->current_exception = obj; + return JS_EXCEPTION; +} + +/* return the pending exception (cannot be called twice). */ +JSValue JS_GetException(JSContext *ctx) +{ + JSValue val; + JSRuntime *rt = ctx->rt; + val = rt->current_exception; + rt->current_exception = JS_NULL; + return val; +} + +static void dbuf_put_leb128(DynBuf *s, uint32_t v) +{ + uint32_t a; + for(;;) { + a = v & 0x7f; + v >>= 7; + if (v != 0) { + dbuf_putc(s, a | 0x80); + } else { + dbuf_putc(s, a); + break; + } + } +} + +static void dbuf_put_sleb128(DynBuf *s, int32_t v1) +{ + uint32_t v = v1; + dbuf_put_leb128(s, (2 * v) ^ -(v >> 31)); +} + +static int get_leb128(uint32_t *pval, const uint8_t *buf, + const uint8_t *buf_end) +{ + const uint8_t *ptr = buf; + uint32_t v, a, i; + v = 0; + for(i = 0; i < 5; i++) { + if (unlikely(ptr >= buf_end)) + break; + a = *ptr++; + v |= (a & 0x7f) << (i * 7); + if (!(a & 0x80)) { + *pval = v; + return ptr - buf; + } + } + *pval = 0; + return -1; +} + +static int get_sleb128(int32_t *pval, const uint8_t *buf, + const uint8_t *buf_end) +{ + int ret; + uint32_t val; + ret = get_leb128(&val, buf, buf_end); + if (ret < 0) { + *pval = 0; + return -1; + } + *pval = (val >> 1) ^ -(val & 1); + return ret; +} + +static int find_line_num(JSContext *ctx, JSFunctionBytecode *b, + uint32_t pc_value) +{ + const uint8_t *p_end, *p; + int new_line_num, line_num, pc, v, ret; + unsigned int op; + + if (!b->has_debug || !b->debug.pc2line_buf) { + /* function was stripped */ + return -1; + } + + p = b->debug.pc2line_buf; + p_end = p + b->debug.pc2line_len; + pc = 0; + line_num = b->debug.line_num; + while (p < p_end) { + op = *p++; + if (op == 0) { + uint32_t val; + ret = get_leb128(&val, p, p_end); + if (ret < 0) + goto fail; + pc += val; + p += ret; + ret = get_sleb128(&v, p, p_end); + if (ret < 0) { + fail: + /* should never happen */ + return b->debug.line_num; + } + p += ret; + new_line_num = line_num + v; + } else { + op -= PC2LINE_OP_FIRST; + pc += (op / PC2LINE_RANGE); + new_line_num = line_num + (op % PC2LINE_RANGE) + PC2LINE_BASE; + } + if (pc_value < pc) + return line_num; + line_num = new_line_num; + } + return line_num; +} + +/* in order to avoid executing arbitrary code during the stack trace + generation, we only look at simple 'name' properties containing a + string. */ +static const char *get_func_name(JSContext *ctx, JSValueConst func) +{ + JSProperty *pr; + JSShapeProperty *prs; + JSValueConst val; + + if (JS_VALUE_GET_TAG(func) != JS_TAG_OBJECT) + return NULL; + prs = find_own_property(&pr, JS_VALUE_GET_OBJ(func), JS_ATOM_name); + if (!prs) + return NULL; + if ((prs->flags & JS_PROP_TMASK) != JS_PROP_NORMAL) + return NULL; + val = pr->u.value; + if (JS_VALUE_GET_TAG(val) != JS_TAG_STRING) + return NULL; + return JS_ToCString(ctx, val); +} + +#define JS_BACKTRACE_FLAG_SKIP_FIRST_LEVEL (1 << 0) +/* only taken into account if filename is provided */ +#define JS_BACKTRACE_FLAG_SINGLE_LEVEL (1 << 1) + +/* if filename != NULL, an additional level is added with the filename + and line number information (used for parse error). */ +static void build_backtrace(JSContext *ctx, JSValueConst error_obj, + const char *filename, int line_num, + int backtrace_flags) +{ + JSStackFrame *sf; + JSValue str; + DynBuf dbuf; + const char *func_name_str; + const char *str1; + JSObject *p; + BOOL backtrace_barrier; + + js_dbuf_init(ctx, &dbuf); + if (filename) { + dbuf_printf(&dbuf, " at %s", filename); + if (line_num != -1) + dbuf_printf(&dbuf, ":%d", line_num); + dbuf_putc(&dbuf, '\n'); + str = JS_NewString(ctx, filename); + JS_DefinePropertyValue(ctx, error_obj, JS_ATOM_fileName, str, + JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE); + JS_DefinePropertyValue(ctx, error_obj, JS_ATOM_lineNumber, JS_NewInt32(ctx, line_num), + JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE); + if (backtrace_flags & JS_BACKTRACE_FLAG_SINGLE_LEVEL) + goto done; + } + for(sf = ctx->rt->current_stack_frame; sf != NULL; sf = sf->prev_frame) { + if (backtrace_flags & JS_BACKTRACE_FLAG_SKIP_FIRST_LEVEL) { + backtrace_flags &= ~JS_BACKTRACE_FLAG_SKIP_FIRST_LEVEL; + continue; + } + func_name_str = get_func_name(ctx, sf->cur_func); + if (!func_name_str || func_name_str[0] == '\0') + str1 = ""; + else + str1 = func_name_str; + dbuf_printf(&dbuf, " at %s", str1); + JS_FreeCString(ctx, func_name_str); + + p = JS_VALUE_GET_OBJ(sf->cur_func); + backtrace_barrier = FALSE; + if (js_class_has_bytecode(p->class_id)) { + JSFunctionBytecode *b; + const char *atom_str; + int line_num1; + + b = p->u.func.function_bytecode; + backtrace_barrier = b->backtrace_barrier; + if (b->has_debug) { + line_num1 = find_line_num(ctx, b, + sf->cur_pc - b->byte_code_buf - 1); + atom_str = JS_AtomToCString(ctx, b->debug.filename); + dbuf_printf(&dbuf, " (%s", + atom_str ? atom_str : ""); + JS_FreeCString(ctx, atom_str); + if (line_num1 != -1) + dbuf_printf(&dbuf, ":%d", line_num1); + dbuf_putc(&dbuf, ')'); + } + } else { + dbuf_printf(&dbuf, " (native)"); + } + dbuf_putc(&dbuf, '\n'); + /* stop backtrace if JS_EVAL_FLAG_BACKTRACE_BARRIER was used */ + if (backtrace_barrier) + break; + } + done: + dbuf_putc(&dbuf, '\0'); + if (dbuf_error(&dbuf)) + str = JS_NULL; + else + str = JS_NewString(ctx, (char *)dbuf.buf); + dbuf_free(&dbuf); + JS_DefinePropertyValue(ctx, error_obj, JS_ATOM_stack, str, + JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE); +} + +/* Note: it is important that no exception is returned by this function */ +static BOOL is_backtrace_needed(JSContext *ctx, JSValueConst obj) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT) + return FALSE; + p = JS_VALUE_GET_OBJ(obj); + if (p->class_id != JS_CLASS_ERROR) + return FALSE; + if (find_own_property1(p, JS_ATOM_stack)) + return FALSE; + return TRUE; +} + +JSValue JS_NewError(JSContext *ctx) +{ + return JS_NewObjectClass(ctx, JS_CLASS_ERROR); +} + +static JSValue JS_ThrowError2(JSContext *ctx, JSErrorEnum error_num, + const char *fmt, va_list ap, BOOL add_backtrace) +{ + char buf[256]; + JSValue obj, ret; + + vsnprintf(buf, sizeof(buf), fmt, ap); + obj = JS_NewObjectProtoClass(ctx, ctx->native_error_proto[error_num], + JS_CLASS_ERROR); + if (unlikely(JS_IsException(obj))) { + /* out of memory: throw JS_NULL to avoid recursing */ + obj = JS_NULL; + } else { + JS_DefinePropertyValue(ctx, obj, JS_ATOM_message, + JS_NewString(ctx, buf), + JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE); + } + if (add_backtrace) { + build_backtrace(ctx, obj, NULL, 0, 0); + } + ret = JS_Throw(ctx, obj); + return ret; +} + +static JSValue JS_ThrowError(JSContext *ctx, JSErrorEnum error_num, + const char *fmt, va_list ap) +{ + JSRuntime *rt = ctx->rt; + JSStackFrame *sf; + BOOL add_backtrace; + + /* the backtrace is added later if called from a bytecode function */ + sf = rt->current_stack_frame; + add_backtrace = !rt->in_out_of_memory && + (!sf || (JS_GetFunctionBytecode(sf->cur_func) == NULL)); + return JS_ThrowError2(ctx, error_num, fmt, ap, add_backtrace); +} + +JSValue __attribute__((format(printf, 2, 3))) JS_ThrowSyntaxError(JSContext *ctx, const char *fmt, ...) +{ + JSValue val; + va_list ap; + + va_start(ap, fmt); + val = JS_ThrowError(ctx, JS_SYNTAX_ERROR, fmt, ap); + va_end(ap); + return val; +} + +JSValue __attribute__((format(printf, 2, 3))) JS_ThrowTypeError(JSContext *ctx, const char *fmt, ...) +{ + JSValue val; + va_list ap; + + va_start(ap, fmt); + val = JS_ThrowError(ctx, JS_TYPE_ERROR, fmt, ap); + va_end(ap); + return val; +} + +static int __attribute__((format(printf, 3, 4))) JS_ThrowTypeErrorOrFalse(JSContext *ctx, int flags, const char *fmt, ...) +{ + va_list ap; + + if ((flags & JS_PROP_THROW) || + ((flags & JS_PROP_THROW_STRICT) && is_strict_mode(ctx))) { + va_start(ap, fmt); + JS_ThrowError(ctx, JS_TYPE_ERROR, fmt, ap); + va_end(ap); + return -1; + } else { + return FALSE; + } +} + +/* never use it directly */ +static JSValue __attribute__((format(printf, 3, 4))) __JS_ThrowTypeErrorAtom(JSContext *ctx, JSAtom atom, const char *fmt, ...) +{ + char buf[ATOM_GET_STR_BUF_SIZE]; + return JS_ThrowTypeError(ctx, fmt, + JS_AtomGetStr(ctx, buf, sizeof(buf), atom)); +} + +/* never use it directly */ +static JSValue __attribute__((format(printf, 3, 4))) __JS_ThrowSyntaxErrorAtom(JSContext *ctx, JSAtom atom, const char *fmt, ...) +{ + char buf[ATOM_GET_STR_BUF_SIZE]; + return JS_ThrowSyntaxError(ctx, fmt, + JS_AtomGetStr(ctx, buf, sizeof(buf), atom)); +} + +/* %s is replaced by 'atom'. The macro is used so that gcc can check + the format string. */ +#define JS_ThrowTypeErrorAtom(ctx, fmt, atom) __JS_ThrowTypeErrorAtom(ctx, atom, fmt, "") +#define JS_ThrowSyntaxErrorAtom(ctx, fmt, atom) __JS_ThrowSyntaxErrorAtom(ctx, atom, fmt, "") + +static int JS_ThrowTypeErrorReadOnly(JSContext *ctx, int flags, JSAtom atom) +{ + if ((flags & JS_PROP_THROW) || + ((flags & JS_PROP_THROW_STRICT) && is_strict_mode(ctx))) { + JS_ThrowTypeErrorAtom(ctx, "'%s' is read-only", atom); + return -1; + } else { + return FALSE; + } +} + +JSValue __attribute__((format(printf, 2, 3))) JS_ThrowReferenceError(JSContext *ctx, const char *fmt, ...) +{ + JSValue val; + va_list ap; + + va_start(ap, fmt); + val = JS_ThrowError(ctx, JS_REFERENCE_ERROR, fmt, ap); + va_end(ap); + return val; +} + +JSValue __attribute__((format(printf, 2, 3))) JS_ThrowRangeError(JSContext *ctx, const char *fmt, ...) +{ + JSValue val; + va_list ap; + + va_start(ap, fmt); + val = JS_ThrowError(ctx, JS_RANGE_ERROR, fmt, ap); + va_end(ap); + return val; +} + +JSValue __attribute__((format(printf, 2, 3))) JS_ThrowInternalError(JSContext *ctx, const char *fmt, ...) +{ + JSValue val; + va_list ap; + + va_start(ap, fmt); + val = JS_ThrowError(ctx, JS_INTERNAL_ERROR, fmt, ap); + va_end(ap); + return val; +} + +JSValue JS_ThrowOutOfMemory(JSContext *ctx) +{ + JSRuntime *rt = ctx->rt; + if (!rt->in_out_of_memory) { + rt->in_out_of_memory = TRUE; + JS_ThrowInternalError(ctx, "out of memory"); + rt->in_out_of_memory = FALSE; + } + return JS_EXCEPTION; +} + +static JSValue JS_ThrowStackOverflow(JSContext *ctx) +{ + return JS_ThrowInternalError(ctx, "stack overflow"); +} + +static JSValue JS_ThrowTypeErrorNotAnObject(JSContext *ctx) +{ + return JS_ThrowTypeError(ctx, "not an object"); +} + +static JSValue JS_ThrowTypeErrorNotASymbol(JSContext *ctx) +{ + return JS_ThrowTypeError(ctx, "not a symbol"); +} + +static JSValue JS_ThrowReferenceErrorNotDefined(JSContext *ctx, JSAtom name) +{ + char buf[ATOM_GET_STR_BUF_SIZE]; + return JS_ThrowReferenceError(ctx, "'%s' is not defined", + JS_AtomGetStr(ctx, buf, sizeof(buf), name)); +} + +static JSValue JS_ThrowReferenceErrorUninitialized(JSContext *ctx, JSAtom name) +{ + char buf[ATOM_GET_STR_BUF_SIZE]; + return JS_ThrowReferenceError(ctx, "%s is not initialized", + name == JS_ATOM_NULL ? "lexical variable" : + JS_AtomGetStr(ctx, buf, sizeof(buf), name)); +} + +static JSValue JS_ThrowReferenceErrorUninitialized2(JSContext *ctx, + JSFunctionBytecode *b, + int idx, BOOL is_ref) +{ + JSAtom atom = JS_ATOM_NULL; + if (is_ref) { + atom = b->closure_var[idx].var_name; + } else { + /* not present if the function is stripped and contains no eval() */ + if (b->vardefs) + atom = b->vardefs[b->arg_count + idx].var_name; + } + return JS_ThrowReferenceErrorUninitialized(ctx, atom); +} + +static JSValue JS_ThrowTypeErrorInvalidClass(JSContext *ctx, int class_id) +{ + JSRuntime *rt = ctx->rt; + JSAtom name; + name = rt->class_array[class_id].class_name; + return JS_ThrowTypeErrorAtom(ctx, "%s object expected", name); +} + +static no_inline __exception int __js_poll_interrupts(JSContext *ctx) +{ + JSRuntime *rt = ctx->rt; + ctx->interrupt_counter = JS_INTERRUPT_COUNTER_INIT; + if (rt->interrupt_handler) { + if (rt->interrupt_handler(rt, rt->interrupt_opaque)) { + /* XXX: should set a specific flag to avoid catching */ + JS_ThrowInternalError(ctx, "interrupted"); + JS_SetUncatchableError(ctx, ctx->rt->current_exception, TRUE); + return -1; + } + } + return 0; +} + +static inline __exception int js_poll_interrupts(JSContext *ctx) +{ + if (unlikely(--ctx->interrupt_counter <= 0)) { + return __js_poll_interrupts(ctx); + } else { + return 0; + } +} + +/* return -1 (exception) or TRUE/FALSE */ +static int JS_SetPrototypeInternal(JSContext *ctx, JSValueConst obj, + JSValueConst proto_val, + BOOL throw_flag) +{ + JSObject *proto, *p, *p1; + JSShape *sh; + + if (throw_flag) { + if (JS_VALUE_GET_TAG(obj) == JS_TAG_NULL || + JS_VALUE_GET_TAG(obj) == JS_TAG_UNDEFINED) + goto not_obj; + } else { + if (JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT) + goto not_obj; + } + p = JS_VALUE_GET_OBJ(obj); + if (JS_VALUE_GET_TAG(proto_val) != JS_TAG_OBJECT) { + if (JS_VALUE_GET_TAG(proto_val) != JS_TAG_NULL) { + not_obj: + JS_ThrowTypeErrorNotAnObject(ctx); + return -1; + } + proto = NULL; + } else { + proto = JS_VALUE_GET_OBJ(proto_val); + } + + if (throw_flag && JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT) + return TRUE; + + if (unlikely(p->class_id == JS_CLASS_PROXY)) + return js_proxy_setPrototypeOf(ctx, obj, proto_val, throw_flag); + sh = p->shape; + if (sh->proto == proto) + return TRUE; + if (!p->extensible) { + if (throw_flag) { + JS_ThrowTypeError(ctx, "object is not extensible"); + return -1; + } else { + return FALSE; + } + } + if (proto) { + /* check if there is a cycle */ + p1 = proto; + do { + if (p1 == p) { + if (throw_flag) { + JS_ThrowTypeError(ctx, "circular prototype chain"); + return -1; + } else { + return FALSE; + } + } + /* Note: for Proxy objects, proto is NULL */ + p1 = p1->shape->proto; + } while (p1 != NULL); + JS_DupValue(ctx, proto_val); + } + + if (js_shape_prepare_update(ctx, p, NULL)) + return -1; + sh = p->shape; + if (sh->proto) + JS_FreeValue(ctx, JS_MKPTR(JS_TAG_OBJECT, sh->proto)); + sh->proto = proto; + return TRUE; +} + +/* return -1 (exception) or TRUE/FALSE */ +int JS_SetPrototype(JSContext *ctx, JSValueConst obj, JSValueConst proto_val) +{ + return JS_SetPrototypeInternal(ctx, obj, proto_val, TRUE); +} + +/* Only works for primitive types, otherwise return JS_NULL. */ +static JSValueConst JS_GetPrototypePrimitive(JSContext *ctx, JSValueConst val) +{ + switch(JS_VALUE_GET_NORM_TAG(val)) { +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_INT: + val = ctx->class_proto[JS_CLASS_BIG_INT]; + break; + case JS_TAG_BIG_FLOAT: + val = ctx->class_proto[JS_CLASS_BIG_FLOAT]; + break; + case JS_TAG_BIG_DECIMAL: + val = ctx->class_proto[JS_CLASS_BIG_DECIMAL]; + break; +#endif + case JS_TAG_INT: + case JS_TAG_FLOAT64: + val = ctx->class_proto[JS_CLASS_NUMBER]; + break; + case JS_TAG_BOOL: + val = ctx->class_proto[JS_CLASS_BOOLEAN]; + break; + case JS_TAG_STRING: + val = ctx->class_proto[JS_CLASS_STRING]; + break; + case JS_TAG_SYMBOL: + val = ctx->class_proto[JS_CLASS_SYMBOL]; + break; + case JS_TAG_OBJECT: + case JS_TAG_NULL: + case JS_TAG_UNDEFINED: + default: + val = JS_NULL; + break; + } + return val; +} + +/* Return an Object, JS_NULL or JS_EXCEPTION in case of Proxy object. */ +JSValue JS_GetPrototype(JSContext *ctx, JSValueConst obj) +{ + JSValue val; + if (JS_VALUE_GET_TAG(obj) == JS_TAG_OBJECT) { + JSObject *p; + p = JS_VALUE_GET_OBJ(obj); + if (unlikely(p->class_id == JS_CLASS_PROXY)) { + val = js_proxy_getPrototypeOf(ctx, obj); + } else { + p = p->shape->proto; + if (!p) + val = JS_NULL; + else + val = JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, p)); + } + } else { + val = JS_DupValue(ctx, JS_GetPrototypePrimitive(ctx, obj)); + } + return val; +} + +static JSValue JS_GetPrototypeFree(JSContext *ctx, JSValue obj) +{ + JSValue obj1; + obj1 = JS_GetPrototype(ctx, obj); + JS_FreeValue(ctx, obj); + return obj1; +} + +/* return TRUE, FALSE or (-1) in case of exception */ +static int JS_OrdinaryIsInstanceOf(JSContext *ctx, JSValueConst val, + JSValueConst obj) +{ + JSValue obj_proto; + JSObject *proto; + const JSObject *p, *proto1; + BOOL ret; + + if (!JS_IsFunction(ctx, obj)) + return FALSE; + p = JS_VALUE_GET_OBJ(obj); + if (p->class_id == JS_CLASS_BOUND_FUNCTION) { + JSBoundFunction *s = p->u.bound_function; + return JS_IsInstanceOf(ctx, val, s->func_obj); + } + + /* Only explicitly boxed values are instances of constructors */ + if (JS_VALUE_GET_TAG(val) != JS_TAG_OBJECT) + return FALSE; + obj_proto = JS_GetProperty(ctx, obj, JS_ATOM_prototype); + if (JS_VALUE_GET_TAG(obj_proto) != JS_TAG_OBJECT) { + if (!JS_IsException(obj_proto)) + JS_ThrowTypeError(ctx, "operand 'prototype' property is not an object"); + ret = -1; + goto done; + } + proto = JS_VALUE_GET_OBJ(obj_proto); + p = JS_VALUE_GET_OBJ(val); + for(;;) { + proto1 = p->shape->proto; + if (!proto1) { + /* slow case if proxy in the prototype chain */ + if (unlikely(p->class_id == JS_CLASS_PROXY)) { + JSValue obj1; + obj1 = JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, (JSObject *)p)); + for(;;) { + obj1 = JS_GetPrototypeFree(ctx, obj1); + if (JS_IsException(obj1)) { + ret = -1; + break; + } + if (JS_IsNull(obj1)) { + ret = FALSE; + break; + } + if (proto == JS_VALUE_GET_OBJ(obj1)) { + JS_FreeValue(ctx, obj1); + ret = TRUE; + break; + } + /* must check for timeout to avoid infinite loop */ + if (js_poll_interrupts(ctx)) { + JS_FreeValue(ctx, obj1); + ret = -1; + break; + } + } + } else { + ret = FALSE; + } + break; + } + p = proto1; + if (proto == p) { + ret = TRUE; + break; + } + } +done: + JS_FreeValue(ctx, obj_proto); + return ret; +} + +/* return TRUE, FALSE or (-1) in case of exception */ +int JS_IsInstanceOf(JSContext *ctx, JSValueConst val, JSValueConst obj) +{ + JSValue method; + + if (!JS_IsObject(obj)) + goto fail; + method = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_hasInstance); + if (JS_IsException(method)) + return -1; + if (!JS_IsNull(method) && !JS_IsUndefined(method)) { + JSValue ret; + ret = JS_CallFree(ctx, method, obj, 1, &val); + return JS_ToBoolFree(ctx, ret); + } + + /* legacy case */ + if (!JS_IsFunction(ctx, obj)) { + fail: + JS_ThrowTypeError(ctx, "invalid 'instanceof' right operand"); + return -1; + } + return JS_OrdinaryIsInstanceOf(ctx, val, obj); +} + +/* return the value associated to the autoinit property or an exception */ +typedef JSValue JSAutoInitFunc(JSContext *ctx, JSObject *p, JSAtom atom, void *opaque); + +static JSAutoInitFunc *js_autoinit_func_table[] = { + js_instantiate_prototype, /* JS_AUTOINIT_ID_PROTOTYPE */ + js_module_ns_autoinit, /* JS_AUTOINIT_ID_MODULE_NS */ + JS_InstantiateFunctionListItem2, /* JS_AUTOINIT_ID_PROP */ +}; + +/* warning: 'prs' is reallocated after it */ +static int JS_AutoInitProperty(JSContext *ctx, JSObject *p, JSAtom prop, + JSProperty *pr, JSShapeProperty *prs) +{ + JSValue val; + JSContext *realm; + JSAutoInitFunc *func; + + if (js_shape_prepare_update(ctx, p, &prs)) + return -1; + + realm = js_autoinit_get_realm(pr); + func = js_autoinit_func_table[js_autoinit_get_id(pr)]; + /* 'func' shall not modify the object properties 'pr' */ + val = func(realm, p, prop, pr->u.init.opaque); + js_autoinit_free(ctx->rt, pr); + prs->flags &= ~JS_PROP_TMASK; + pr->u.value = JS_UNDEFINED; + if (JS_IsException(val)) + return -1; + pr->u.value = val; + return 0; +} + +JSValue JS_GetPropertyInternal(JSContext *ctx, JSValueConst obj, + JSAtom prop, JSValueConst this_obj, + BOOL throw_ref_error) +{ + JSObject *p; + JSProperty *pr; + JSShapeProperty *prs; + uint32_t tag; + + tag = JS_VALUE_GET_TAG(obj); + if (unlikely(tag != JS_TAG_OBJECT)) { + switch(tag) { + case JS_TAG_NULL: + return JS_ThrowTypeErrorAtom(ctx, "cannot read property '%s' of null", prop); + case JS_TAG_UNDEFINED: + return JS_ThrowTypeErrorAtom(ctx, "cannot read property '%s' of undefined", prop); + case JS_TAG_EXCEPTION: + return JS_EXCEPTION; + case JS_TAG_STRING: + { + JSString *p1 = JS_VALUE_GET_STRING(obj); + if (__JS_AtomIsTaggedInt(prop)) { + uint32_t idx, ch; + idx = __JS_AtomToUInt32(prop); + if (idx < p1->len) { + if (p1->is_wide_char) + ch = p1->u.str16[idx]; + else + ch = p1->u.str8[idx]; + return js_new_string_char(ctx, ch); + } + } else if (prop == JS_ATOM_length) { + return JS_NewInt32(ctx, p1->len); + } + } + break; + default: + break; + } + /* cannot raise an exception */ + p = JS_VALUE_GET_OBJ(JS_GetPrototypePrimitive(ctx, obj)); + if (!p) + return JS_UNDEFINED; + } else { + p = JS_VALUE_GET_OBJ(obj); + } + + for(;;) { + prs = find_own_property(&pr, p, prop); + if (prs) { + /* found */ + if (unlikely(prs->flags & JS_PROP_TMASK)) { + if ((prs->flags & JS_PROP_TMASK) == JS_PROP_GETSET) { + if (unlikely(!pr->u.getset.getter)) { + return JS_UNDEFINED; + } else { + JSValue func = JS_MKPTR(JS_TAG_OBJECT, pr->u.getset.getter); + /* Note: the field could be removed in the getter */ + func = JS_DupValue(ctx, func); + return JS_CallFree(ctx, func, this_obj, 0, NULL); + } + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_VARREF) { + JSValue val = *pr->u.var_ref->pvalue; + if (unlikely(JS_IsUninitialized(val))) + return JS_ThrowReferenceErrorUninitialized(ctx, prs->atom); + return JS_DupValue(ctx, val); + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_AUTOINIT) { + /* Instantiate property and retry */ + if (JS_AutoInitProperty(ctx, p, prop, pr, prs)) + return JS_EXCEPTION; + continue; + } + } else { + return JS_DupValue(ctx, pr->u.value); + } + } + if (unlikely(p->is_exotic)) { + /* exotic behaviors */ + if (p->fast_array) { + if (__JS_AtomIsTaggedInt(prop)) { + uint32_t idx = __JS_AtomToUInt32(prop); + if (idx < p->u.array.count) { + /* we avoid duplicating the code */ + return JS_GetPropertyUint32(ctx, JS_MKPTR(JS_TAG_OBJECT, p), idx); + } else if (p->class_id >= JS_CLASS_UINT8C_ARRAY && + p->class_id <= JS_CLASS_FLOAT64_ARRAY) { + return JS_UNDEFINED; + } + } else if (p->class_id >= JS_CLASS_UINT8C_ARRAY && + p->class_id <= JS_CLASS_FLOAT64_ARRAY) { + int ret; + ret = JS_AtomIsNumericIndex(ctx, prop); + if (ret != 0) { + if (ret < 0) + return JS_EXCEPTION; + return JS_UNDEFINED; + } + } + } else { + const JSClassExoticMethods *em = ctx->rt->class_array[p->class_id].exotic; + if (em) { + if (em->get_property) { + JSValue obj1, retval; + /* XXX: should pass throw_ref_error */ + /* Note: if 'p' is a prototype, it can be + freed in the called function */ + obj1 = JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, p)); + retval = em->get_property(ctx, obj1, prop, this_obj); + JS_FreeValue(ctx, obj1); + return retval; + } + if (em->get_own_property) { + JSPropertyDescriptor desc; + int ret; + JSValue obj1; + + /* Note: if 'p' is a prototype, it can be + freed in the called function */ + obj1 = JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, p)); + ret = em->get_own_property(ctx, &desc, obj1, prop); + JS_FreeValue(ctx, obj1); + if (ret < 0) + return JS_EXCEPTION; + if (ret) { + if (desc.flags & JS_PROP_GETSET) { + JS_FreeValue(ctx, desc.setter); + return JS_CallFree(ctx, desc.getter, this_obj, 0, NULL); + } else { + return desc.value; + } + } + } + } + } + } + p = p->shape->proto; + if (!p) + break; + } + if (unlikely(throw_ref_error)) { + return JS_ThrowReferenceErrorNotDefined(ctx, prop); + } else { + return JS_UNDEFINED; + } +} + +static JSValue JS_ThrowTypeErrorPrivateNotFound(JSContext *ctx, JSAtom atom) +{ + return JS_ThrowTypeErrorAtom(ctx, "private class field '%s' does not exist", + atom); +} + +/* Private fields can be added even on non extensible objects or + Proxies */ +static int JS_DefinePrivateField(JSContext *ctx, JSValueConst obj, + JSValueConst name, JSValue val) +{ + JSObject *p; + JSShapeProperty *prs; + JSProperty *pr; + JSAtom prop; + + if (unlikely(JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT)) { + JS_ThrowTypeErrorNotAnObject(ctx); + goto fail; + } + /* safety check */ + if (unlikely(JS_VALUE_GET_TAG(name) != JS_TAG_SYMBOL)) { + JS_ThrowTypeErrorNotASymbol(ctx); + goto fail; + } + prop = js_symbol_to_atom(ctx, (JSValue)name); + p = JS_VALUE_GET_OBJ(obj); + prs = find_own_property(&pr, p, prop); + if (prs) { + JS_ThrowTypeErrorAtom(ctx, "private class field '%s' already exists", + prop); + goto fail; + } + pr = add_property(ctx, p, prop, JS_PROP_C_W_E); + if (unlikely(!pr)) { + fail: + JS_FreeValue(ctx, val); + return -1; + } + pr->u.value = val; + return 0; +} + +static JSValue JS_GetPrivateField(JSContext *ctx, JSValueConst obj, + JSValueConst name) +{ + JSObject *p; + JSShapeProperty *prs; + JSProperty *pr; + JSAtom prop; + + if (unlikely(JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT)) + return JS_ThrowTypeErrorNotAnObject(ctx); + /* safety check */ + if (unlikely(JS_VALUE_GET_TAG(name) != JS_TAG_SYMBOL)) + return JS_ThrowTypeErrorNotASymbol(ctx); + prop = js_symbol_to_atom(ctx, (JSValue)name); + p = JS_VALUE_GET_OBJ(obj); + prs = find_own_property(&pr, p, prop); + if (!prs) { + JS_ThrowTypeErrorPrivateNotFound(ctx, prop); + return JS_EXCEPTION; + } + return JS_DupValue(ctx, pr->u.value); +} + +static int JS_SetPrivateField(JSContext *ctx, JSValueConst obj, + JSValueConst name, JSValue val) +{ + JSObject *p; + JSShapeProperty *prs; + JSProperty *pr; + JSAtom prop; + + if (unlikely(JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT)) { + JS_ThrowTypeErrorNotAnObject(ctx); + goto fail; + } + /* safety check */ + if (unlikely(JS_VALUE_GET_TAG(name) != JS_TAG_SYMBOL)) { + JS_ThrowTypeErrorNotASymbol(ctx); + goto fail; + } + prop = js_symbol_to_atom(ctx, (JSValue)name); + p = JS_VALUE_GET_OBJ(obj); + prs = find_own_property(&pr, p, prop); + if (!prs) { + JS_ThrowTypeErrorPrivateNotFound(ctx, prop); + fail: + JS_FreeValue(ctx, val); + return -1; + } + set_value(ctx, &pr->u.value, val); + return 0; +} + +static int JS_AddBrand(JSContext *ctx, JSValueConst obj, JSValueConst home_obj) +{ + JSObject *p, *p1; + JSShapeProperty *prs; + JSProperty *pr; + JSValue brand; + JSAtom brand_atom; + + if (unlikely(JS_VALUE_GET_TAG(home_obj) != JS_TAG_OBJECT)) { + JS_ThrowTypeErrorNotAnObject(ctx); + return -1; + } + p = JS_VALUE_GET_OBJ(home_obj); + prs = find_own_property(&pr, p, JS_ATOM_Private_brand); + if (!prs) { + brand = JS_NewSymbolFromAtom(ctx, JS_ATOM_brand, JS_ATOM_TYPE_PRIVATE); + if (JS_IsException(brand)) + return -1; + /* if the brand is not present, add it */ + pr = add_property(ctx, p, JS_ATOM_Private_brand, JS_PROP_C_W_E); + if (!pr) { + JS_FreeValue(ctx, brand); + return -1; + } + pr->u.value = JS_DupValue(ctx, brand); + } else { + brand = JS_DupValue(ctx, pr->u.value); + } + brand_atom = js_symbol_to_atom(ctx, brand); + + if (unlikely(JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT)) { + JS_ThrowTypeErrorNotAnObject(ctx); + JS_FreeAtom(ctx, brand_atom); + return -1; + } + p1 = JS_VALUE_GET_OBJ(obj); + pr = add_property(ctx, p1, brand_atom, JS_PROP_C_W_E); + JS_FreeAtom(ctx, brand_atom); + if (!pr) + return -1; + pr->u.value = JS_UNDEFINED; + return 0; +} + +static int JS_CheckBrand(JSContext *ctx, JSValueConst obj, JSValueConst func) +{ + JSObject *p, *p1, *home_obj; + JSShapeProperty *prs; + JSProperty *pr; + JSValueConst brand; + + /* get the home object of 'func' */ + if (unlikely(JS_VALUE_GET_TAG(func) != JS_TAG_OBJECT)) { + not_obj: + JS_ThrowTypeErrorNotAnObject(ctx); + return -1; + } + p1 = JS_VALUE_GET_OBJ(func); + if (!js_class_has_bytecode(p1->class_id)) + goto not_obj; + home_obj = p1->u.func.home_object; + if (!home_obj) + goto not_obj; + prs = find_own_property(&pr, home_obj, JS_ATOM_Private_brand); + if (!prs) { + JS_ThrowTypeError(ctx, "expecting private field"); + return -1; + } + brand = pr->u.value; + /* safety check */ + if (unlikely(JS_VALUE_GET_TAG(brand) != JS_TAG_SYMBOL)) + goto not_obj; + + /* get the brand array of 'obj' */ + if (unlikely(JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT)) + goto not_obj; + p = JS_VALUE_GET_OBJ(obj); + prs = find_own_property(&pr, p, js_symbol_to_atom(ctx, (JSValue)brand)); + if (!prs) { + JS_ThrowTypeError(ctx, "invalid brand on object"); + return -1; + } + return 0; +} + +static uint32_t js_string_obj_get_length(JSContext *ctx, + JSValueConst obj) +{ + JSObject *p; + JSString *p1; + uint32_t len = 0; + + /* This is a class exotic method: obj class_id is JS_CLASS_STRING */ + p = JS_VALUE_GET_OBJ(obj); + if (JS_VALUE_GET_TAG(p->u.object_data) == JS_TAG_STRING) { + p1 = JS_VALUE_GET_STRING(p->u.object_data); + len = p1->len; + } + return len; +} + +static int num_keys_cmp(const void *p1, const void *p2, void *opaque) +{ + JSContext *ctx = opaque; + JSAtom atom1 = ((const JSPropertyEnum *)p1)->atom; + JSAtom atom2 = ((const JSPropertyEnum *)p2)->atom; + uint32_t v1, v2; + BOOL atom1_is_integer, atom2_is_integer; + + atom1_is_integer = JS_AtomIsArrayIndex(ctx, &v1, atom1); + atom2_is_integer = JS_AtomIsArrayIndex(ctx, &v2, atom2); + assert(atom1_is_integer && atom2_is_integer); + if (v1 < v2) + return -1; + else if (v1 == v2) + return 0; + else + return 1; +} + +static void js_free_prop_enum(JSContext *ctx, JSPropertyEnum *tab, uint32_t len) +{ + uint32_t i; + if (tab) { + for(i = 0; i < len; i++) + JS_FreeAtom(ctx, tab[i].atom); + js_free(ctx, tab); + } +} + +/* return < 0 in case if exception, 0 if OK. ptab and its atoms must + be freed by the user. */ +static int __exception JS_GetOwnPropertyNamesInternal(JSContext *ctx, + JSPropertyEnum **ptab, + uint32_t *plen, + JSObject *p, int flags) +{ + int i, j; + JSShape *sh; + JSShapeProperty *prs; + JSPropertyEnum *tab_atom, *tab_exotic; + JSAtom atom; + uint32_t num_keys_count, str_keys_count, sym_keys_count, atom_count; + uint32_t num_index, str_index, sym_index, exotic_count, exotic_keys_count; + BOOL is_enumerable, num_sorted; + uint32_t num_key; + JSAtomKindEnum kind; + + /* clear pointer for consistency in case of failure */ + *ptab = NULL; + *plen = 0; + + /* compute the number of returned properties */ + num_keys_count = 0; + str_keys_count = 0; + sym_keys_count = 0; + exotic_keys_count = 0; + exotic_count = 0; + tab_exotic = NULL; + sh = p->shape; + for(i = 0, prs = get_shape_prop(sh); i < sh->prop_count; i++, prs++) { + atom = prs->atom; + if (atom != JS_ATOM_NULL) { + is_enumerable = ((prs->flags & JS_PROP_ENUMERABLE) != 0); + kind = JS_AtomGetKind(ctx, atom); + if ((!(flags & JS_GPN_ENUM_ONLY) || is_enumerable) && + ((flags >> kind) & 1) != 0) { + /* need to raise an exception in case of the module + name space (implicit GetOwnProperty) */ + if (unlikely((prs->flags & JS_PROP_TMASK) == JS_PROP_VARREF) && + (flags & (JS_GPN_SET_ENUM | JS_GPN_ENUM_ONLY))) { + JSVarRef *var_ref = p->prop[i].u.var_ref; + if (unlikely(JS_IsUninitialized(*var_ref->pvalue))) { + JS_ThrowReferenceErrorUninitialized(ctx, prs->atom); + return -1; + } + } + if (JS_AtomIsArrayIndex(ctx, &num_key, atom)) { + num_keys_count++; + } else if (kind == JS_ATOM_KIND_STRING) { + str_keys_count++; + } else { + sym_keys_count++; + } + } + } + } + + if (p->is_exotic) { + if (p->fast_array) { + if (flags & JS_GPN_STRING_MASK) { + num_keys_count += p->u.array.count; + } + } else if (p->class_id == JS_CLASS_STRING) { + if (flags & JS_GPN_STRING_MASK) { + num_keys_count += js_string_obj_get_length(ctx, JS_MKPTR(JS_TAG_OBJECT, p)); + } + } else { + const JSClassExoticMethods *em = ctx->rt->class_array[p->class_id].exotic; + if (em && em->get_own_property_names) { + if (em->get_own_property_names(ctx, &tab_exotic, &exotic_count, + JS_MKPTR(JS_TAG_OBJECT, p))) + return -1; + for(i = 0; i < exotic_count; i++) { + atom = tab_exotic[i].atom; + kind = JS_AtomGetKind(ctx, atom); + if (((flags >> kind) & 1) != 0) { + is_enumerable = FALSE; + if (flags & (JS_GPN_SET_ENUM | JS_GPN_ENUM_ONLY)) { + JSPropertyDescriptor desc; + int res; + /* set the "is_enumerable" field if necessary */ + res = JS_GetOwnPropertyInternal(ctx, &desc, p, atom); + if (res < 0) { + js_free_prop_enum(ctx, tab_exotic, exotic_count); + return -1; + } + if (res) { + is_enumerable = + ((desc.flags & JS_PROP_ENUMERABLE) != 0); + js_free_desc(ctx, &desc); + } + tab_exotic[i].is_enumerable = is_enumerable; + } + if (!(flags & JS_GPN_ENUM_ONLY) || is_enumerable) { + exotic_keys_count++; + } + } + } + } + } + } + + /* fill them */ + + atom_count = num_keys_count + str_keys_count + sym_keys_count + exotic_keys_count; + /* avoid allocating 0 bytes */ + tab_atom = js_malloc(ctx, sizeof(tab_atom[0]) * max_int(atom_count, 1)); + if (!tab_atom) { + js_free_prop_enum(ctx, tab_exotic, exotic_count); + return -1; + } + + num_index = 0; + str_index = num_keys_count; + sym_index = str_index + str_keys_count; + + num_sorted = TRUE; + sh = p->shape; + for(i = 0, prs = get_shape_prop(sh); i < sh->prop_count; i++, prs++) { + atom = prs->atom; + if (atom != JS_ATOM_NULL) { + is_enumerable = ((prs->flags & JS_PROP_ENUMERABLE) != 0); + kind = JS_AtomGetKind(ctx, atom); + if ((!(flags & JS_GPN_ENUM_ONLY) || is_enumerable) && + ((flags >> kind) & 1) != 0) { + if (JS_AtomIsArrayIndex(ctx, &num_key, atom)) { + j = num_index++; + num_sorted = FALSE; + } else if (kind == JS_ATOM_KIND_STRING) { + j = str_index++; + } else { + j = sym_index++; + } + tab_atom[j].atom = JS_DupAtom(ctx, atom); + tab_atom[j].is_enumerable = is_enumerable; + } + } + } + + if (p->is_exotic) { + int len; + if (p->fast_array) { + if (flags & JS_GPN_STRING_MASK) { + len = p->u.array.count; + goto add_array_keys; + } + } else if (p->class_id == JS_CLASS_STRING) { + if (flags & JS_GPN_STRING_MASK) { + len = js_string_obj_get_length(ctx, JS_MKPTR(JS_TAG_OBJECT, p)); + add_array_keys: + for(i = 0; i < len; i++) { + tab_atom[num_index].atom = __JS_AtomFromUInt32(i); + if (tab_atom[num_index].atom == JS_ATOM_NULL) { + js_free_prop_enum(ctx, tab_atom, num_index); + return -1; + } + tab_atom[num_index].is_enumerable = TRUE; + num_index++; + } + } + } else { + /* Note: exotic keys are not reordered and comes after the object own properties. */ + for(i = 0; i < exotic_count; i++) { + atom = tab_exotic[i].atom; + is_enumerable = tab_exotic[i].is_enumerable; + kind = JS_AtomGetKind(ctx, atom); + if ((!(flags & JS_GPN_ENUM_ONLY) || is_enumerable) && + ((flags >> kind) & 1) != 0) { + tab_atom[sym_index].atom = atom; + tab_atom[sym_index].is_enumerable = is_enumerable; + sym_index++; + } else { + JS_FreeAtom(ctx, atom); + } + } + js_free(ctx, tab_exotic); + } + } + + assert(num_index == num_keys_count); + assert(str_index == num_keys_count + str_keys_count); + assert(sym_index == atom_count); + + if (num_keys_count != 0 && !num_sorted) { + rqsort(tab_atom, num_keys_count, sizeof(tab_atom[0]), num_keys_cmp, + ctx); + } + *ptab = tab_atom; + *plen = atom_count; + return 0; +} + +int JS_GetOwnPropertyNames(JSContext *ctx, JSPropertyEnum **ptab, + uint32_t *plen, JSValueConst obj, int flags) +{ + if (JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT) { + JS_ThrowTypeErrorNotAnObject(ctx); + return -1; + } + return JS_GetOwnPropertyNamesInternal(ctx, ptab, plen, + JS_VALUE_GET_OBJ(obj), flags); +} + +/* Return -1 if exception, + FALSE if the property does not exist, TRUE if it exists. If TRUE is + returned, the property descriptor 'desc' is filled present. */ +static int JS_GetOwnPropertyInternal(JSContext *ctx, JSPropertyDescriptor *desc, + JSObject *p, JSAtom prop) +{ + JSShapeProperty *prs; + JSProperty *pr; + +retry: + prs = find_own_property(&pr, p, prop); + if (prs) { + if (desc) { + desc->flags = prs->flags & JS_PROP_C_W_E; + desc->getter = JS_UNDEFINED; + desc->setter = JS_UNDEFINED; + desc->value = JS_UNDEFINED; + if (unlikely(prs->flags & JS_PROP_TMASK)) { + if ((prs->flags & JS_PROP_TMASK) == JS_PROP_GETSET) { + desc->flags |= JS_PROP_GETSET; + if (pr->u.getset.getter) + desc->getter = JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, pr->u.getset.getter)); + if (pr->u.getset.setter) + desc->setter = JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, pr->u.getset.setter)); + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_VARREF) { + JSValue val = *pr->u.var_ref->pvalue; + if (unlikely(JS_IsUninitialized(val))) { + JS_ThrowReferenceErrorUninitialized(ctx, prs->atom); + return -1; + } + desc->value = JS_DupValue(ctx, val); + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_AUTOINIT) { + /* Instantiate property and retry */ + if (JS_AutoInitProperty(ctx, p, prop, pr, prs)) + return -1; + goto retry; + } + } else { + desc->value = JS_DupValue(ctx, pr->u.value); + } + } else { + /* for consistency, send the exception even if desc is NULL */ + if (unlikely((prs->flags & JS_PROP_TMASK) == JS_PROP_VARREF)) { + if (unlikely(JS_IsUninitialized(*pr->u.var_ref->pvalue))) { + JS_ThrowReferenceErrorUninitialized(ctx, prs->atom); + return -1; + } + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_AUTOINIT) { + /* nothing to do: delay instantiation until actual value and/or attributes are read */ + } + } + return TRUE; + } + if (p->is_exotic) { + if (p->fast_array) { + /* specific case for fast arrays */ + if (__JS_AtomIsTaggedInt(prop)) { + uint32_t idx; + idx = __JS_AtomToUInt32(prop); + if (idx < p->u.array.count) { + if (desc) { + desc->flags = JS_PROP_WRITABLE | JS_PROP_ENUMERABLE | + JS_PROP_CONFIGURABLE; + desc->getter = JS_UNDEFINED; + desc->setter = JS_UNDEFINED; + desc->value = JS_GetPropertyUint32(ctx, JS_MKPTR(JS_TAG_OBJECT, p), idx); + } + return TRUE; + } + } + } else { + const JSClassExoticMethods *em = ctx->rt->class_array[p->class_id].exotic; + if (em && em->get_own_property) { + return em->get_own_property(ctx, desc, + JS_MKPTR(JS_TAG_OBJECT, p), prop); + } + } + } + return FALSE; +} + +int JS_GetOwnProperty(JSContext *ctx, JSPropertyDescriptor *desc, + JSValueConst obj, JSAtom prop) +{ + if (JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT) { + JS_ThrowTypeErrorNotAnObject(ctx); + return -1; + } + return JS_GetOwnPropertyInternal(ctx, desc, JS_VALUE_GET_OBJ(obj), prop); +} + +/* return -1 if exception (Proxy object only) or TRUE/FALSE */ +int JS_IsExtensible(JSContext *ctx, JSValueConst obj) +{ + JSObject *p; + + if (unlikely(JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT)) + return FALSE; + p = JS_VALUE_GET_OBJ(obj); + if (unlikely(p->class_id == JS_CLASS_PROXY)) + return js_proxy_isExtensible(ctx, obj); + else + return p->extensible; +} + +/* return -1 if exception (Proxy object only) or TRUE/FALSE */ +int JS_PreventExtensions(JSContext *ctx, JSValueConst obj) +{ + JSObject *p; + + if (unlikely(JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT)) + return FALSE; + p = JS_VALUE_GET_OBJ(obj); + if (unlikely(p->class_id == JS_CLASS_PROXY)) + return js_proxy_preventExtensions(ctx, obj); + p->extensible = FALSE; + return TRUE; +} + +/* return -1 if exception otherwise TRUE or FALSE */ +int JS_HasProperty(JSContext *ctx, JSValueConst obj, JSAtom prop) +{ + JSObject *p; + int ret; + JSValue obj1; + + if (unlikely(JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT)) + return FALSE; + p = JS_VALUE_GET_OBJ(obj); + for(;;) { + if (p->is_exotic) { + const JSClassExoticMethods *em = ctx->rt->class_array[p->class_id].exotic; + if (em && em->has_property) { + /* has_property can free the prototype */ + obj1 = JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, p)); + ret = em->has_property(ctx, obj1, prop); + JS_FreeValue(ctx, obj1); + return ret; + } + } + /* JS_GetOwnPropertyInternal can free the prototype */ + JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, p)); + ret = JS_GetOwnPropertyInternal(ctx, NULL, p, prop); + JS_FreeValue(ctx, JS_MKPTR(JS_TAG_OBJECT, p)); + if (ret != 0) + return ret; + if (p->class_id >= JS_CLASS_UINT8C_ARRAY && + p->class_id <= JS_CLASS_FLOAT64_ARRAY) { + ret = JS_AtomIsNumericIndex(ctx, prop); + if (ret != 0) { + if (ret < 0) + return -1; + return FALSE; + } + } + p = p->shape->proto; + if (!p) + break; + } + return FALSE; +} + +/* val must be a symbol */ +static JSAtom js_symbol_to_atom(JSContext *ctx, JSValue val) +{ + JSAtomStruct *p = JS_VALUE_GET_PTR(val); + return js_get_atom_index(ctx->rt, p); +} + +/* return JS_ATOM_NULL in case of exception */ +JSAtom JS_ValueToAtom(JSContext *ctx, JSValueConst val) +{ + JSAtom atom; + uint32_t tag; + tag = JS_VALUE_GET_TAG(val); + if (tag == JS_TAG_INT && + (uint32_t)JS_VALUE_GET_INT(val) <= JS_ATOM_MAX_INT) { + /* fast path for integer values */ + atom = __JS_AtomFromUInt32(JS_VALUE_GET_INT(val)); + } else if (tag == JS_TAG_SYMBOL) { + JSAtomStruct *p = JS_VALUE_GET_PTR(val); + atom = JS_DupAtom(ctx, js_get_atom_index(ctx->rt, p)); + } else { + JSValue str; + str = JS_ToPropertyKey(ctx, val); + if (JS_IsException(str)) + return JS_ATOM_NULL; + if (JS_VALUE_GET_TAG(str) == JS_TAG_SYMBOL) { + atom = js_symbol_to_atom(ctx, str); + } else { + atom = JS_NewAtomStr(ctx, JS_VALUE_GET_STRING(str)); + } + } + return atom; +} + +static JSValue JS_GetPropertyValue(JSContext *ctx, JSValueConst this_obj, + JSValue prop) +{ + JSAtom atom; + JSValue ret; + + if (likely(JS_VALUE_GET_TAG(this_obj) == JS_TAG_OBJECT && + JS_VALUE_GET_TAG(prop) == JS_TAG_INT)) { + JSObject *p; + uint32_t idx, len; + /* fast path for array access */ + p = JS_VALUE_GET_OBJ(this_obj); + idx = JS_VALUE_GET_INT(prop); + len = (uint32_t)p->u.array.count; + if (unlikely(idx >= len)) + goto slow_path; + switch(p->class_id) { + case JS_CLASS_ARRAY: + case JS_CLASS_ARGUMENTS: + return JS_DupValue(ctx, p->u.array.u.values[idx]); + case JS_CLASS_INT8_ARRAY: + return JS_NewInt32(ctx, p->u.array.u.int8_ptr[idx]); + case JS_CLASS_UINT8C_ARRAY: + case JS_CLASS_UINT8_ARRAY: + return JS_NewInt32(ctx, p->u.array.u.uint8_ptr[idx]); + case JS_CLASS_INT16_ARRAY: + return JS_NewInt32(ctx, p->u.array.u.int16_ptr[idx]); + case JS_CLASS_UINT16_ARRAY: + return JS_NewInt32(ctx, p->u.array.u.uint16_ptr[idx]); + case JS_CLASS_INT32_ARRAY: + return JS_NewInt32(ctx, p->u.array.u.int32_ptr[idx]); + case JS_CLASS_UINT32_ARRAY: + return JS_NewUint32(ctx, p->u.array.u.uint32_ptr[idx]); +#ifdef CONFIG_BIGNUM + case JS_CLASS_BIG_INT64_ARRAY: + return JS_NewBigInt64(ctx, p->u.array.u.int64_ptr[idx]); + case JS_CLASS_BIG_UINT64_ARRAY: + return JS_NewBigUint64(ctx, p->u.array.u.uint64_ptr[idx]); +#endif + case JS_CLASS_FLOAT32_ARRAY: + return __JS_NewFloat64(ctx, p->u.array.u.float_ptr[idx]); + case JS_CLASS_FLOAT64_ARRAY: + return __JS_NewFloat64(ctx, p->u.array.u.double_ptr[idx]); + default: + goto slow_path; + } + } else { + slow_path: + atom = JS_ValueToAtom(ctx, prop); + JS_FreeValue(ctx, prop); + if (unlikely(atom == JS_ATOM_NULL)) + return JS_EXCEPTION; + ret = JS_GetProperty(ctx, this_obj, atom); + JS_FreeAtom(ctx, atom); + return ret; + } +} + +JSValue JS_GetPropertyUint32(JSContext *ctx, JSValueConst this_obj, + uint32_t idx) +{ + return JS_GetPropertyValue(ctx, this_obj, JS_NewUint32(ctx, idx)); +} + +/* Check if an object has a generalized numeric property. Return value: + -1 for exception, + TRUE if property exists, stored into *pval, + FALSE if proprty does not exist. + */ +static int JS_TryGetPropertyInt64(JSContext *ctx, JSValueConst obj, int64_t idx, JSValue *pval) +{ + JSValue val = JS_UNDEFINED; + JSAtom prop; + int present; + + if (likely((uint64_t)idx <= JS_ATOM_MAX_INT)) { + /* fast path */ + present = JS_HasProperty(ctx, obj, __JS_AtomFromUInt32(idx)); + if (present > 0) { + val = JS_GetPropertyValue(ctx, obj, JS_NewInt32(ctx, idx)); + if (unlikely(JS_IsException(val))) + present = -1; + } + } else { + prop = JS_NewAtomInt64(ctx, idx); + present = -1; + if (likely(prop != JS_ATOM_NULL)) { + present = JS_HasProperty(ctx, obj, prop); + if (present > 0) { + val = JS_GetProperty(ctx, obj, prop); + if (unlikely(JS_IsException(val))) + present = -1; + } + JS_FreeAtom(ctx, prop); + } + } + *pval = val; + return present; +} + +static JSValue JS_GetPropertyInt64(JSContext *ctx, JSValueConst obj, int64_t idx) +{ + JSAtom prop; + JSValue val; + + if ((uint64_t)idx <= INT32_MAX) { + /* fast path for fast arrays */ + return JS_GetPropertyValue(ctx, obj, JS_NewInt32(ctx, idx)); + } + prop = JS_NewAtomInt64(ctx, idx); + if (prop == JS_ATOM_NULL) + return JS_EXCEPTION; + + val = JS_GetProperty(ctx, obj, prop); + JS_FreeAtom(ctx, prop); + return val; +} + +JSValue JS_GetPropertyStr(JSContext *ctx, JSValueConst this_obj, + const char *prop) +{ + JSAtom atom; + JSValue ret; + atom = JS_NewAtom(ctx, prop); + ret = JS_GetProperty(ctx, this_obj, atom); + JS_FreeAtom(ctx, atom); + return ret; +} + +/* Note: the property value is not initialized. Return NULL if memory + error. */ +static JSProperty *add_property(JSContext *ctx, + JSObject *p, JSAtom prop, int prop_flags) +{ + JSShape *sh, *new_sh; + + sh = p->shape; + if (sh->is_hashed) { + /* try to find an existing shape */ + new_sh = find_hashed_shape_prop(ctx->rt, sh, prop, prop_flags); + if (new_sh) { + /* matching shape found: use it */ + /* the property array may need to be resized */ + if (new_sh->prop_size != sh->prop_size) { + JSProperty *new_prop; + new_prop = js_realloc(ctx, p->prop, sizeof(p->prop[0]) * + new_sh->prop_size); + if (!new_prop) + return NULL; + p->prop = new_prop; + } + p->shape = js_dup_shape(new_sh); + js_free_shape(ctx->rt, sh); + return &p->prop[new_sh->prop_count - 1]; + } else if (sh->header.ref_count != 1) { + /* if the shape is shared, clone it */ + new_sh = js_clone_shape(ctx, sh); + if (!new_sh) + return NULL; + /* hash the cloned shape */ + new_sh->is_hashed = TRUE; + js_shape_hash_link(ctx->rt, new_sh); + js_free_shape(ctx->rt, p->shape); + p->shape = new_sh; + } + } + assert(p->shape->header.ref_count == 1); + if (add_shape_property(ctx, &p->shape, p, prop, prop_flags)) + return NULL; + return &p->prop[p->shape->prop_count - 1]; +} + +/* can be called on Array or Arguments objects. return < 0 if + memory alloc error. */ +static no_inline __exception int convert_fast_array_to_array(JSContext *ctx, + JSObject *p) +{ + JSProperty *pr; + JSShape *sh; + JSValue *tab; + uint32_t i, len, new_count; + + if (js_shape_prepare_update(ctx, p, NULL)) + return -1; + len = p->u.array.count; + /* resize the properties once to simplify the error handling */ + sh = p->shape; + new_count = sh->prop_count + len; + if (new_count > sh->prop_size) { + if (resize_properties(ctx, &p->shape, p, new_count)) + return -1; + } + + tab = p->u.array.u.values; + for(i = 0; i < len; i++) { + /* add_property cannot fail here but + __JS_AtomFromUInt32(i) fails for i > INT32_MAX */ + pr = add_property(ctx, p, __JS_AtomFromUInt32(i), JS_PROP_C_W_E); + pr->u.value = *tab++; + } + js_free(ctx, p->u.array.u.values); + p->u.array.count = 0; + p->u.array.u.values = NULL; /* fail safe */ + p->u.array.u1.size = 0; + p->fast_array = 0; + return 0; +} + +static int delete_property(JSContext *ctx, JSObject *p, JSAtom atom) +{ + JSShape *sh; + JSShapeProperty *pr, *lpr, *prop; + JSProperty *pr1; + uint32_t lpr_idx; + intptr_t h, h1; + + redo: + sh = p->shape; + h1 = atom & sh->prop_hash_mask; + h = prop_hash_end(sh)[-h1 - 1]; + prop = get_shape_prop(sh); + lpr = NULL; + lpr_idx = 0; /* prevent warning */ + while (h != 0) { + pr = &prop[h - 1]; + if (likely(pr->atom == atom)) { + /* found ! */ + if (!(pr->flags & JS_PROP_CONFIGURABLE)) + return FALSE; + /* realloc the shape if needed */ + if (lpr) + lpr_idx = lpr - get_shape_prop(sh); + if (js_shape_prepare_update(ctx, p, &pr)) + return -1; + sh = p->shape; + /* remove property */ + if (lpr) { + lpr = get_shape_prop(sh) + lpr_idx; + lpr->hash_next = pr->hash_next; + } else { + prop_hash_end(sh)[-h1 - 1] = pr->hash_next; + } + sh->deleted_prop_count++; + /* free the entry */ + pr1 = &p->prop[h - 1]; + free_property(ctx->rt, pr1, pr->flags); + JS_FreeAtom(ctx, pr->atom); + /* put default values */ + pr->flags = 0; + pr->atom = JS_ATOM_NULL; + pr1->u.value = JS_UNDEFINED; + + /* compact the properties if too many deleted properties */ + if (sh->deleted_prop_count >= 8 && + sh->deleted_prop_count >= ((unsigned)sh->prop_count / 2)) { + compact_properties(ctx, p); + } + return TRUE; + } + lpr = pr; + h = pr->hash_next; + } + + if (p->is_exotic) { + if (p->fast_array) { + uint32_t idx; + if (JS_AtomIsArrayIndex(ctx, &idx, atom) && + idx < p->u.array.count) { + if (p->class_id == JS_CLASS_ARRAY || + p->class_id == JS_CLASS_ARGUMENTS) { + /* Special case deleting the last element of a fast Array */ + if (idx == p->u.array.count - 1) { + JS_FreeValue(ctx, p->u.array.u.values[idx]); + p->u.array.count = idx; + return TRUE; + } + if (convert_fast_array_to_array(ctx, p)) + return -1; + goto redo; + } else { + return FALSE; + } + } + } else { + const JSClassExoticMethods *em = ctx->rt->class_array[p->class_id].exotic; + if (em && em->delete_property) { + return em->delete_property(ctx, JS_MKPTR(JS_TAG_OBJECT, p), atom); + } + } + } + /* not found */ + return TRUE; +} + +static int call_setter(JSContext *ctx, JSObject *setter, + JSValueConst this_obj, JSValue val, int flags) +{ + JSValue ret, func; + if (likely(setter)) { + func = JS_MKPTR(JS_TAG_OBJECT, setter); + /* Note: the field could be removed in the setter */ + func = JS_DupValue(ctx, func); + ret = JS_CallFree(ctx, func, this_obj, 1, (JSValueConst *)&val); + JS_FreeValue(ctx, val); + if (JS_IsException(ret)) + return -1; + JS_FreeValue(ctx, ret); + return TRUE; + } else { + JS_FreeValue(ctx, val); + if ((flags & JS_PROP_THROW) || + ((flags & JS_PROP_THROW_STRICT) && is_strict_mode(ctx))) { + JS_ThrowTypeError(ctx, "no setter for property"); + return -1; + } + return FALSE; + } +} + +/* set the array length and remove the array elements if necessary. */ +static int set_array_length(JSContext *ctx, JSObject *p, JSValue val, + int flags) +{ + uint32_t len, idx, cur_len; + int i, ret; + + /* Note: this call can reallocate the properties of 'p' */ + ret = JS_ToArrayLengthFree(ctx, &len, val, FALSE); + if (ret) + return -1; + /* JS_ToArrayLengthFree() must be done before the read-only test */ + if (unlikely(!(p->shape->prop[0].flags & JS_PROP_WRITABLE))) + return JS_ThrowTypeErrorReadOnly(ctx, flags, JS_ATOM_length); + + if (likely(p->fast_array)) { + uint32_t old_len = p->u.array.count; + if (len < old_len) { + for(i = len; i < old_len; i++) { + JS_FreeValue(ctx, p->u.array.u.values[i]); + } + p->u.array.count = len; + } + p->prop[0].u.value = JS_NewUint32(ctx, len); + } else { + /* Note: length is always a uint32 because the object is an + array */ + JS_ToUint32(ctx, &cur_len, p->prop[0].u.value); + if (len < cur_len) { + uint32_t d; + JSShape *sh; + JSShapeProperty *pr; + + d = cur_len - len; + sh = p->shape; + if (d <= sh->prop_count) { + JSAtom atom; + + /* faster to iterate */ + while (cur_len > len) { + atom = JS_NewAtomUInt32(ctx, cur_len - 1); + ret = delete_property(ctx, p, atom); + JS_FreeAtom(ctx, atom); + if (unlikely(!ret)) { + /* unlikely case: property is not + configurable */ + break; + } + cur_len--; + } + } else { + /* faster to iterate thru all the properties. Need two + passes in case one of the property is not + configurable */ + cur_len = len; + for(i = 0, pr = get_shape_prop(sh); i < sh->prop_count; + i++, pr++) { + if (pr->atom != JS_ATOM_NULL && + JS_AtomIsArrayIndex(ctx, &idx, pr->atom)) { + if (idx >= cur_len && + !(pr->flags & JS_PROP_CONFIGURABLE)) { + cur_len = idx + 1; + } + } + } + + for(i = 0, pr = get_shape_prop(sh); i < sh->prop_count; + i++, pr++) { + if (pr->atom != JS_ATOM_NULL && + JS_AtomIsArrayIndex(ctx, &idx, pr->atom)) { + if (idx >= cur_len) { + /* remove the property */ + delete_property(ctx, p, pr->atom); + /* WARNING: the shape may have been modified */ + sh = p->shape; + pr = get_shape_prop(sh) + i; + } + } + } + } + } else { + cur_len = len; + } + set_value(ctx, &p->prop[0].u.value, JS_NewUint32(ctx, cur_len)); + if (unlikely(cur_len > len)) { + return JS_ThrowTypeErrorOrFalse(ctx, flags, "not configurable"); + } + } + return TRUE; +} + +/* return -1 if exception */ +static int expand_fast_array(JSContext *ctx, JSObject *p, uint32_t new_len) +{ + uint32_t new_size; + size_t slack; + JSValue *new_array_prop; + /* XXX: potential arithmetic overflow */ + new_size = max_int(new_len, p->u.array.u1.size * 3 / 2); + new_array_prop = js_realloc2(ctx, p->u.array.u.values, sizeof(JSValue) * new_size, &slack); + if (!new_array_prop) + return -1; + new_size += slack / sizeof(*new_array_prop); + p->u.array.u.values = new_array_prop; + p->u.array.u1.size = new_size; + return 0; +} + +/* Preconditions: 'p' must be of class JS_CLASS_ARRAY, p->fast_array = + TRUE and p->extensible = TRUE */ +static int add_fast_array_element(JSContext *ctx, JSObject *p, + JSValue val, int flags) +{ + uint32_t new_len, array_len; + /* extend the array by one */ + /* XXX: convert to slow array if new_len > 2^31-1 elements */ + new_len = p->u.array.count + 1; + /* update the length if necessary. We assume that if the length is + not an integer, then if it >= 2^31. */ + if (likely(JS_VALUE_GET_TAG(p->prop[0].u.value) == JS_TAG_INT)) { + array_len = JS_VALUE_GET_INT(p->prop[0].u.value); + if (new_len > array_len) { + if (unlikely(!(get_shape_prop(p->shape)->flags & JS_PROP_WRITABLE))) { + JS_FreeValue(ctx, val); + return JS_ThrowTypeErrorReadOnly(ctx, flags, JS_ATOM_length); + } + p->prop[0].u.value = JS_NewInt32(ctx, new_len); + } + } + if (unlikely(new_len > p->u.array.u1.size)) { + if (expand_fast_array(ctx, p, new_len)) { + JS_FreeValue(ctx, val); + return -1; + } + } + p->u.array.u.values[new_len - 1] = val; + p->u.array.count = new_len; + return TRUE; +} + +static void js_free_desc(JSContext *ctx, JSPropertyDescriptor *desc) +{ + JS_FreeValue(ctx, desc->getter); + JS_FreeValue(ctx, desc->setter); + JS_FreeValue(ctx, desc->value); +} + +/* generic (and slower) version of JS_SetProperty() for + * Reflect.set(). 'obj' must be an object. */ +static int JS_SetPropertyGeneric(JSContext *ctx, + JSValueConst obj, JSAtom prop, + JSValue val, JSValueConst this_obj, + int flags) +{ + int ret; + JSPropertyDescriptor desc; + JSValue obj1; + JSObject *p; + + obj1 = JS_DupValue(ctx, obj); + for(;;) { + p = JS_VALUE_GET_OBJ(obj1); + if (p->is_exotic) { + const JSClassExoticMethods *em = ctx->rt->class_array[p->class_id].exotic; + if (em && em->set_property) { + ret = em->set_property(ctx, obj1, prop, + val, this_obj, flags); + JS_FreeValue(ctx, obj1); + JS_FreeValue(ctx, val); + return ret; + } + } + + ret = JS_GetOwnPropertyInternal(ctx, &desc, p, prop); + if (ret < 0) { + JS_FreeValue(ctx, obj1); + JS_FreeValue(ctx, val); + return ret; + } + if (ret) { + if (desc.flags & JS_PROP_GETSET) { + JSObject *setter; + if (JS_IsUndefined(desc.setter)) + setter = NULL; + else + setter = JS_VALUE_GET_OBJ(desc.setter); + ret = call_setter(ctx, setter, this_obj, val, flags); + JS_FreeValue(ctx, desc.getter); + JS_FreeValue(ctx, desc.setter); + JS_FreeValue(ctx, obj1); + return ret; + } else { + JS_FreeValue(ctx, desc.value); + if (!(desc.flags & JS_PROP_WRITABLE)) { + JS_FreeValue(ctx, obj1); + goto read_only_error; + } + } + break; + } + /* Note: at this point 'obj1' cannot be a proxy. XXX: may have + to check recursion */ + obj1 = JS_GetPrototypeFree(ctx, obj1); + if (JS_IsNull(obj1)) + break; + } + JS_FreeValue(ctx, obj1); + + if (!JS_IsObject(this_obj)) { + JS_FreeValue(ctx, val); + return JS_ThrowTypeErrorOrFalse(ctx, flags, "receiver is not an object"); + } + + p = JS_VALUE_GET_OBJ(this_obj); + + /* modify the property in this_obj if it already exists */ + ret = JS_GetOwnPropertyInternal(ctx, &desc, p, prop); + if (ret < 0) { + JS_FreeValue(ctx, val); + return ret; + } + if (ret) { + if (desc.flags & JS_PROP_GETSET) { + JS_FreeValue(ctx, desc.getter); + JS_FreeValue(ctx, desc.setter); + JS_FreeValue(ctx, val); + return JS_ThrowTypeErrorOrFalse(ctx, flags, "setter is forbidden"); + } else { + JS_FreeValue(ctx, desc.value); + if (!(desc.flags & JS_PROP_WRITABLE) || + p->class_id == JS_CLASS_MODULE_NS) { + read_only_error: + JS_FreeValue(ctx, val); + return JS_ThrowTypeErrorReadOnly(ctx, flags, prop); + } + } + ret = JS_DefineProperty(ctx, this_obj, prop, val, + JS_UNDEFINED, JS_UNDEFINED, + JS_PROP_HAS_VALUE); + JS_FreeValue(ctx, val); + return ret; + } + + ret = JS_CreateProperty(ctx, p, prop, val, JS_UNDEFINED, JS_UNDEFINED, + flags | + JS_PROP_HAS_VALUE | + JS_PROP_HAS_ENUMERABLE | + JS_PROP_HAS_WRITABLE | + JS_PROP_HAS_CONFIGURABLE | + JS_PROP_C_W_E); + JS_FreeValue(ctx, val); + return ret; +} + +/* return -1 in case of exception or TRUE or FALSE. Warning: 'val' is + freed by the function. 'flags' is a bitmask of JS_PROP_NO_ADD, + JS_PROP_THROW or JS_PROP_THROW_STRICT. If JS_PROP_NO_ADD is set, + the new property is not added and an error is raised. */ +int JS_SetPropertyInternal(JSContext *ctx, JSValueConst this_obj, + JSAtom prop, JSValue val, int flags) +{ + JSObject *p, *p1; + JSShapeProperty *prs; + JSProperty *pr; + uint32_t tag; + JSPropertyDescriptor desc; + int ret; +#if 0 + printf("JS_SetPropertyInternal: "); print_atom(ctx, prop); printf("\n"); +#endif + tag = JS_VALUE_GET_TAG(this_obj); + if (unlikely(tag != JS_TAG_OBJECT)) { + switch(tag) { + case JS_TAG_NULL: + JS_FreeValue(ctx, val); + JS_ThrowTypeErrorAtom(ctx, "cannot set property '%s' of null", prop); + return -1; + case JS_TAG_UNDEFINED: + JS_FreeValue(ctx, val); + JS_ThrowTypeErrorAtom(ctx, "cannot set property '%s' of undefined", prop); + return -1; + default: + /* even on a primitive type we can have setters on the prototype */ + p = NULL; + p1 = JS_VALUE_GET_OBJ(JS_GetPrototypePrimitive(ctx, this_obj)); + goto prototype_lookup; + } + } + p = JS_VALUE_GET_OBJ(this_obj); +retry: + prs = find_own_property(&pr, p, prop); + if (prs) { + if (likely((prs->flags & (JS_PROP_TMASK | JS_PROP_WRITABLE | + JS_PROP_LENGTH)) == JS_PROP_WRITABLE)) { + /* fast case */ + set_value(ctx, &pr->u.value, val); + return TRUE; + } else if (prs->flags & JS_PROP_LENGTH) { + assert(p->class_id == JS_CLASS_ARRAY); + assert(prop == JS_ATOM_length); + return set_array_length(ctx, p, val, flags); + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_GETSET) { + return call_setter(ctx, pr->u.getset.setter, this_obj, val, flags); + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_VARREF) { + /* JS_PROP_WRITABLE is always true for variable + references, but they are write protected in module name + spaces. */ + if (p->class_id == JS_CLASS_MODULE_NS) + goto read_only_prop; + set_value(ctx, pr->u.var_ref->pvalue, val); + return TRUE; + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_AUTOINIT) { + /* Instantiate property and retry (potentially useless) */ + if (JS_AutoInitProperty(ctx, p, prop, pr, prs)) { + JS_FreeValue(ctx, val); + return -1; + } + goto retry; + } else { + goto read_only_prop; + } + } + + p1 = p; + for(;;) { + if (p1->is_exotic) { + if (p1->fast_array) { + if (__JS_AtomIsTaggedInt(prop)) { + uint32_t idx = __JS_AtomToUInt32(prop); + if (idx < p1->u.array.count) { + if (unlikely(p == p1)) + return JS_SetPropertyValue(ctx, this_obj, JS_NewInt32(ctx, idx), val, flags); + else + break; + } else if (p1->class_id >= JS_CLASS_UINT8C_ARRAY && + p1->class_id <= JS_CLASS_FLOAT64_ARRAY) { + goto typed_array_oob; + } + } else if (p1->class_id >= JS_CLASS_UINT8C_ARRAY && + p1->class_id <= JS_CLASS_FLOAT64_ARRAY) { + ret = JS_AtomIsNumericIndex(ctx, prop); + if (ret != 0) { + if (ret < 0) { + JS_FreeValue(ctx, val); + return -1; + } + typed_array_oob: + val = JS_ToNumberFree(ctx, val); + JS_FreeValue(ctx, val); + if (JS_IsException(val)) + return -1; + return JS_ThrowTypeErrorOrFalse(ctx, flags, "out-of-bound numeric index"); + } + } + } else { + const JSClassExoticMethods *em = ctx->rt->class_array[p1->class_id].exotic; + if (em) { + JSValue obj1; + if (em->set_property) { + /* set_property can free the prototype */ + obj1 = JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, p1)); + ret = em->set_property(ctx, obj1, prop, + val, this_obj, flags); + JS_FreeValue(ctx, obj1); + JS_FreeValue(ctx, val); + return ret; + } + if (em->get_own_property) { + /* get_own_property can free the prototype */ + obj1 = JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, p1)); + ret = em->get_own_property(ctx, &desc, + obj1, prop); + JS_FreeValue(ctx, obj1); + if (ret < 0) { + JS_FreeValue(ctx, val); + return ret; + } + if (ret) { + if (desc.flags & JS_PROP_GETSET) { + JSObject *setter; + if (JS_IsUndefined(desc.setter)) + setter = NULL; + else + setter = JS_VALUE_GET_OBJ(desc.setter); + ret = call_setter(ctx, setter, this_obj, val, flags); + JS_FreeValue(ctx, desc.getter); + JS_FreeValue(ctx, desc.setter); + return ret; + } else { + JS_FreeValue(ctx, desc.value); + if (!(desc.flags & JS_PROP_WRITABLE)) + goto read_only_prop; + if (likely(p == p1)) { + ret = JS_DefineProperty(ctx, this_obj, prop, val, + JS_UNDEFINED, JS_UNDEFINED, + JS_PROP_HAS_VALUE); + JS_FreeValue(ctx, val); + return ret; + } else { + break; + } + } + } + } + } + } + } + p1 = p1->shape->proto; + prototype_lookup: + if (!p1) + break; + + retry2: + prs = find_own_property(&pr, p1, prop); + if (prs) { + if ((prs->flags & JS_PROP_TMASK) == JS_PROP_GETSET) { + return call_setter(ctx, pr->u.getset.setter, this_obj, val, flags); + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_AUTOINIT) { + /* Instantiate property and retry (potentially useless) */ + if (JS_AutoInitProperty(ctx, p1, prop, pr, prs)) + return -1; + goto retry2; + } else if (!(prs->flags & JS_PROP_WRITABLE)) { + read_only_prop: + JS_FreeValue(ctx, val); + return JS_ThrowTypeErrorReadOnly(ctx, flags, prop); + } + } + } + + if (unlikely(flags & JS_PROP_NO_ADD)) { + JS_FreeValue(ctx, val); + JS_ThrowReferenceErrorNotDefined(ctx, prop); + return -1; + } + + if (unlikely(!p)) { + JS_FreeValue(ctx, val); + return JS_ThrowTypeErrorOrFalse(ctx, flags, "not an object"); + } + + if (unlikely(!p->extensible)) { + JS_FreeValue(ctx, val); + return JS_ThrowTypeErrorOrFalse(ctx, flags, "object is not extensible"); + } + + if (p->is_exotic) { + if (p->class_id == JS_CLASS_ARRAY && p->fast_array && + __JS_AtomIsTaggedInt(prop)) { + uint32_t idx = __JS_AtomToUInt32(prop); + if (idx == p->u.array.count) { + /* fast case */ + return add_fast_array_element(ctx, p, val, flags); + } else { + goto generic_create_prop; + } + } else { + generic_create_prop: + ret = JS_CreateProperty(ctx, p, prop, val, JS_UNDEFINED, JS_UNDEFINED, + flags | + JS_PROP_HAS_VALUE | + JS_PROP_HAS_ENUMERABLE | + JS_PROP_HAS_WRITABLE | + JS_PROP_HAS_CONFIGURABLE | + JS_PROP_C_W_E); + JS_FreeValue(ctx, val); + return ret; + } + } + + pr = add_property(ctx, p, prop, JS_PROP_C_W_E); + if (unlikely(!pr)) { + JS_FreeValue(ctx, val); + return -1; + } + pr->u.value = val; + return TRUE; +} + +/* flags can be JS_PROP_THROW or JS_PROP_THROW_STRICT */ +static int JS_SetPropertyValue(JSContext *ctx, JSValueConst this_obj, + JSValue prop, JSValue val, int flags) +{ + if (likely(JS_VALUE_GET_TAG(this_obj) == JS_TAG_OBJECT && + JS_VALUE_GET_TAG(prop) == JS_TAG_INT)) { + JSObject *p; + uint32_t idx; + double d; + int32_t v; + + /* fast path for array access */ + p = JS_VALUE_GET_OBJ(this_obj); + idx = JS_VALUE_GET_INT(prop); + switch(p->class_id) { + case JS_CLASS_ARRAY: + if (unlikely(idx >= (uint32_t)p->u.array.count)) { + JSObject *p1; + JSShape *sh1; + + /* fast path to add an element to the array */ + if (idx != (uint32_t)p->u.array.count || + !p->fast_array || !p->extensible) + goto slow_path; + /* check if prototype chain has a numeric property */ + p1 = p->shape->proto; + while (p1 != NULL) { + sh1 = p1->shape; + if (p1->class_id == JS_CLASS_ARRAY) { + if (unlikely(!p1->fast_array)) + goto slow_path; + } else if (p1->class_id == JS_CLASS_OBJECT) { + if (unlikely(sh1->has_small_array_index)) + goto slow_path; + } else { + goto slow_path; + } + p1 = sh1->proto; + } + /* add element */ + return add_fast_array_element(ctx, p, val, flags); + } + set_value(ctx, &p->u.array.u.values[idx], val); + break; + case JS_CLASS_ARGUMENTS: + if (unlikely(idx >= (uint32_t)p->u.array.count)) + goto slow_path; + set_value(ctx, &p->u.array.u.values[idx], val); + break; + case JS_CLASS_UINT8C_ARRAY: + if (JS_ToUint8ClampFree(ctx, &v, val)) + return -1; + /* Note: the conversion can detach the typed array, so the + array bound check must be done after */ + if (unlikely(idx >= (uint32_t)p->u.array.count)) + goto ta_out_of_bound; + p->u.array.u.uint8_ptr[idx] = v; + break; + case JS_CLASS_INT8_ARRAY: + case JS_CLASS_UINT8_ARRAY: + if (JS_ToInt32Free(ctx, &v, val)) + return -1; + if (unlikely(idx >= (uint32_t)p->u.array.count)) + goto ta_out_of_bound; + p->u.array.u.uint8_ptr[idx] = v; + break; + case JS_CLASS_INT16_ARRAY: + case JS_CLASS_UINT16_ARRAY: + if (JS_ToInt32Free(ctx, &v, val)) + return -1; + if (unlikely(idx >= (uint32_t)p->u.array.count)) + goto ta_out_of_bound; + p->u.array.u.uint16_ptr[idx] = v; + break; + case JS_CLASS_INT32_ARRAY: + case JS_CLASS_UINT32_ARRAY: + if (JS_ToInt32Free(ctx, &v, val)) + return -1; + if (unlikely(idx >= (uint32_t)p->u.array.count)) + goto ta_out_of_bound; + p->u.array.u.uint32_ptr[idx] = v; + break; +#ifdef CONFIG_BIGNUM + case JS_CLASS_BIG_INT64_ARRAY: + case JS_CLASS_BIG_UINT64_ARRAY: + /* XXX: need specific conversion function */ + { + int64_t v; + if (JS_ToBigInt64Free(ctx, &v, val)) + return -1; + if (unlikely(idx >= (uint32_t)p->u.array.count)) + goto ta_out_of_bound; + p->u.array.u.uint64_ptr[idx] = v; + } + break; +#endif + case JS_CLASS_FLOAT32_ARRAY: + if (JS_ToFloat64Free(ctx, &d, val)) + return -1; + if (unlikely(idx >= (uint32_t)p->u.array.count)) + goto ta_out_of_bound; + p->u.array.u.float_ptr[idx] = d; + break; + case JS_CLASS_FLOAT64_ARRAY: + if (JS_ToFloat64Free(ctx, &d, val)) + return -1; + if (unlikely(idx >= (uint32_t)p->u.array.count)) { + ta_out_of_bound: + return JS_ThrowTypeErrorOrFalse(ctx, flags, "out-of-bound numeric index"); + } + p->u.array.u.double_ptr[idx] = d; + break; + default: + goto slow_path; + } + return TRUE; + } else { + JSAtom atom; + int ret; + slow_path: + atom = JS_ValueToAtom(ctx, prop); + JS_FreeValue(ctx, prop); + if (unlikely(atom == JS_ATOM_NULL)) { + JS_FreeValue(ctx, val); + return -1; + } + ret = JS_SetPropertyInternal(ctx, this_obj, atom, val, flags); + JS_FreeAtom(ctx, atom); + return ret; + } +} + +int JS_SetPropertyUint32(JSContext *ctx, JSValueConst this_obj, + uint32_t idx, JSValue val) +{ + return JS_SetPropertyValue(ctx, this_obj, JS_NewUint32(ctx, idx), val, + JS_PROP_THROW); +} + +int JS_SetPropertyInt64(JSContext *ctx, JSValueConst this_obj, + int64_t idx, JSValue val) +{ + JSAtom prop; + int res; + + if ((uint64_t)idx <= INT32_MAX) { + /* fast path for fast arrays */ + return JS_SetPropertyValue(ctx, this_obj, JS_NewInt32(ctx, idx), val, + JS_PROP_THROW); + } + prop = JS_NewAtomInt64(ctx, idx); + if (prop == JS_ATOM_NULL) { + JS_FreeValue(ctx, val); + return -1; + } + res = JS_SetProperty(ctx, this_obj, prop, val); + JS_FreeAtom(ctx, prop); + return res; +} + +int JS_SetPropertyStr(JSContext *ctx, JSValueConst this_obj, + const char *prop, JSValue val) +{ + JSAtom atom; + int ret; + atom = JS_NewAtom(ctx, prop); + ret = JS_SetPropertyInternal(ctx, this_obj, atom, val, JS_PROP_THROW); + JS_FreeAtom(ctx, atom); + return ret; +} + +/* compute the property flags. For each flag: (JS_PROP_HAS_x forces + it, otherwise def_flags is used) + Note: makes assumption about the bit pattern of the flags +*/ +static int get_prop_flags(int flags, int def_flags) +{ + int mask; + mask = (flags >> JS_PROP_HAS_SHIFT) & JS_PROP_C_W_E; + return (flags & mask) | (def_flags & ~mask); +} + +static int JS_CreateProperty(JSContext *ctx, JSObject *p, + JSAtom prop, JSValueConst val, + JSValueConst getter, JSValueConst setter, + int flags) +{ + JSProperty *pr; + int ret, prop_flags; + + /* add a new property or modify an existing exotic one */ + if (p->is_exotic) { + if (p->class_id == JS_CLASS_ARRAY) { + uint32_t idx, len; + + if (p->fast_array) { + if (__JS_AtomIsTaggedInt(prop)) { + idx = __JS_AtomToUInt32(prop); + if (idx == p->u.array.count) { + if (!p->extensible) + goto not_extensible; + if (flags & (JS_PROP_HAS_GET | JS_PROP_HAS_SET)) + goto convert_to_array; + prop_flags = get_prop_flags(flags, 0); + if (prop_flags != JS_PROP_C_W_E) + goto convert_to_array; + return add_fast_array_element(ctx, p, + JS_DupValue(ctx, val), flags); + } else { + goto convert_to_array; + } + } else if (JS_AtomIsArrayIndex(ctx, &idx, prop)) { + /* convert the fast array to normal array */ + convert_to_array: + if (convert_fast_array_to_array(ctx, p)) + return -1; + goto generic_array; + } + } else if (JS_AtomIsArrayIndex(ctx, &idx, prop)) { + JSProperty *plen; + JSShapeProperty *pslen; + generic_array: + /* update the length field */ + plen = &p->prop[0]; + JS_ToUint32(ctx, &len, plen->u.value); + if ((idx + 1) > len) { + pslen = get_shape_prop(p->shape); + if (unlikely(!(pslen->flags & JS_PROP_WRITABLE))) + return JS_ThrowTypeErrorReadOnly(ctx, flags, JS_ATOM_length); + /* XXX: should update the length after defining + the property */ + len = idx + 1; + set_value(ctx, &plen->u.value, JS_NewUint32(ctx, len)); + } + } + } else if (p->class_id >= JS_CLASS_UINT8C_ARRAY && + p->class_id <= JS_CLASS_FLOAT64_ARRAY) { + ret = JS_AtomIsNumericIndex(ctx, prop); + if (ret != 0) { + if (ret < 0) + return -1; + return JS_ThrowTypeErrorOrFalse(ctx, flags, "cannot create numeric index in typed array"); + } + } else if (!(flags & JS_PROP_NO_EXOTIC)) { + const JSClassExoticMethods *em = ctx->rt->class_array[p->class_id].exotic; + if (em) { + if (em->define_own_property) { + return em->define_own_property(ctx, JS_MKPTR(JS_TAG_OBJECT, p), + prop, val, getter, setter, flags); + } + ret = JS_IsExtensible(ctx, JS_MKPTR(JS_TAG_OBJECT, p)); + if (ret < 0) + return -1; + if (!ret) + goto not_extensible; + } + } + } + + if (!p->extensible) { + not_extensible: + return JS_ThrowTypeErrorOrFalse(ctx, flags, "object is not extensible"); + } + + if (flags & (JS_PROP_HAS_GET | JS_PROP_HAS_SET)) { + prop_flags = (flags & (JS_PROP_CONFIGURABLE | JS_PROP_ENUMERABLE)) | + JS_PROP_GETSET; + } else { + prop_flags = flags & JS_PROP_C_W_E; + } + pr = add_property(ctx, p, prop, prop_flags); + if (unlikely(!pr)) + return -1; + if (flags & (JS_PROP_HAS_GET | JS_PROP_HAS_SET)) { + pr->u.getset.getter = NULL; + if ((flags & JS_PROP_HAS_GET) && JS_IsFunction(ctx, getter)) { + pr->u.getset.getter = + JS_VALUE_GET_OBJ(JS_DupValue(ctx, getter)); + } + pr->u.getset.setter = NULL; + if ((flags & JS_PROP_HAS_SET) && JS_IsFunction(ctx, setter)) { + pr->u.getset.setter = + JS_VALUE_GET_OBJ(JS_DupValue(ctx, setter)); + } + } else { + if (flags & JS_PROP_HAS_VALUE) { + pr->u.value = JS_DupValue(ctx, val); + } else { + pr->u.value = JS_UNDEFINED; + } + } + return TRUE; +} + +/* return FALSE if not OK */ +static BOOL check_define_prop_flags(int prop_flags, int flags) +{ + BOOL has_accessor, is_getset; + + if (!(prop_flags & JS_PROP_CONFIGURABLE)) { + if ((flags & (JS_PROP_HAS_CONFIGURABLE | JS_PROP_CONFIGURABLE)) == + (JS_PROP_HAS_CONFIGURABLE | JS_PROP_CONFIGURABLE)) { + return FALSE; + } + if ((flags & JS_PROP_HAS_ENUMERABLE) && + (flags & JS_PROP_ENUMERABLE) != (prop_flags & JS_PROP_ENUMERABLE)) + return FALSE; + } + if (flags & (JS_PROP_HAS_VALUE | JS_PROP_HAS_WRITABLE | + JS_PROP_HAS_GET | JS_PROP_HAS_SET)) { + if (!(prop_flags & JS_PROP_CONFIGURABLE)) { + has_accessor = ((flags & (JS_PROP_HAS_GET | JS_PROP_HAS_SET)) != 0); + is_getset = ((prop_flags & JS_PROP_TMASK) == JS_PROP_GETSET); + if (has_accessor != is_getset) + return FALSE; + if (!has_accessor && !is_getset && !(prop_flags & JS_PROP_WRITABLE)) { + /* not writable: cannot set the writable bit */ + if ((flags & (JS_PROP_HAS_WRITABLE | JS_PROP_WRITABLE)) == + (JS_PROP_HAS_WRITABLE | JS_PROP_WRITABLE)) + return FALSE; + } + } + } + return TRUE; +} + +/* ensure that the shape can be safely modified */ +static int js_shape_prepare_update(JSContext *ctx, JSObject *p, + JSShapeProperty **pprs) +{ + JSShape *sh; + uint32_t idx = 0; /* prevent warning */ + + sh = p->shape; + if (sh->is_hashed) { + if (sh->header.ref_count != 1) { + if (pprs) + idx = *pprs - get_shape_prop(sh); + /* clone the shape (the resulting one is no longer hashed) */ + sh = js_clone_shape(ctx, sh); + if (!sh) + return -1; + js_free_shape(ctx->rt, p->shape); + p->shape = sh; + if (pprs) + *pprs = get_shape_prop(sh) + idx; + } else { + js_shape_hash_unlink(ctx->rt, sh); + sh->is_hashed = FALSE; + } + } + return 0; +} + +static int js_update_property_flags(JSContext *ctx, JSObject *p, + JSShapeProperty **pprs, int flags) +{ + if (flags != (*pprs)->flags) { + if (js_shape_prepare_update(ctx, p, pprs)) + return -1; + (*pprs)->flags = flags; + } + return 0; +} + +/* allowed flags: + JS_PROP_CONFIGURABLE, JS_PROP_WRITABLE, JS_PROP_ENUMERABLE + JS_PROP_HAS_GET, JS_PROP_HAS_SET, JS_PROP_HAS_VALUE, + JS_PROP_HAS_CONFIGURABLE, JS_PROP_HAS_WRITABLE, JS_PROP_HAS_ENUMERABLE, + JS_PROP_THROW, JS_PROP_NO_EXOTIC. + If JS_PROP_THROW is set, return an exception instead of FALSE. + if JS_PROP_NO_EXOTIC is set, do not call the exotic + define_own_property callback. + return -1 (exception), FALSE or TRUE. +*/ +int JS_DefineProperty(JSContext *ctx, JSValueConst this_obj, + JSAtom prop, JSValueConst val, + JSValueConst getter, JSValueConst setter, int flags) +{ + JSObject *p; + JSShapeProperty *prs; + JSProperty *pr; + int mask, res; + + if (JS_VALUE_GET_TAG(this_obj) != JS_TAG_OBJECT) { + JS_ThrowTypeErrorNotAnObject(ctx); + return -1; + } + p = JS_VALUE_GET_OBJ(this_obj); + + redo_prop_update: + prs = find_own_property(&pr, p, prop); + if (prs) { + /* the range of the Array length property is always tested before */ + if ((prs->flags & JS_PROP_LENGTH) && (flags & JS_PROP_HAS_VALUE)) { + uint32_t array_length; + if (JS_ToArrayLengthFree(ctx, &array_length, + JS_DupValue(ctx, val), FALSE)) { + return -1; + } + /* this code relies on the fact that Uint32 are never allocated */ + val = (JSValueConst)JS_NewUint32(ctx, array_length); + /* prs may have been modified */ + prs = find_own_property(&pr, p, prop); + assert(prs != NULL); + } + /* property already exists */ + if (!check_define_prop_flags(prs->flags, flags)) { + not_configurable: + return JS_ThrowTypeErrorOrFalse(ctx, flags, "property is not configurable"); + } + + if ((prs->flags & JS_PROP_TMASK) == JS_PROP_AUTOINIT) { + /* Instantiate property and retry */ + if (JS_AutoInitProperty(ctx, p, prop, pr, prs)) + return -1; + goto redo_prop_update; + } + + if (flags & (JS_PROP_HAS_VALUE | JS_PROP_HAS_WRITABLE | + JS_PROP_HAS_GET | JS_PROP_HAS_SET)) { + if (flags & (JS_PROP_HAS_GET | JS_PROP_HAS_SET)) { + JSObject *new_getter, *new_setter; + + if (JS_IsFunction(ctx, getter)) { + new_getter = JS_VALUE_GET_OBJ(getter); + } else { + new_getter = NULL; + } + if (JS_IsFunction(ctx, setter)) { + new_setter = JS_VALUE_GET_OBJ(setter); + } else { + new_setter = NULL; + } + + if ((prs->flags & JS_PROP_TMASK) != JS_PROP_GETSET) { + if (js_shape_prepare_update(ctx, p, &prs)) + return -1; + /* convert to getset */ + if ((prs->flags & JS_PROP_TMASK) == JS_PROP_VARREF) { + free_var_ref(ctx->rt, pr->u.var_ref); + } else { + JS_FreeValue(ctx, pr->u.value); + } + prs->flags = (prs->flags & + (JS_PROP_CONFIGURABLE | JS_PROP_ENUMERABLE)) | + JS_PROP_GETSET; + pr->u.getset.getter = NULL; + pr->u.getset.setter = NULL; + } else { + if (!(prs->flags & JS_PROP_CONFIGURABLE)) { + if ((flags & JS_PROP_HAS_GET) && + new_getter != pr->u.getset.getter) { + goto not_configurable; + } + if ((flags & JS_PROP_HAS_SET) && + new_setter != pr->u.getset.setter) { + goto not_configurable; + } + } + } + if (flags & JS_PROP_HAS_GET) { + if (pr->u.getset.getter) + JS_FreeValue(ctx, JS_MKPTR(JS_TAG_OBJECT, pr->u.getset.getter)); + if (new_getter) + JS_DupValue(ctx, getter); + pr->u.getset.getter = new_getter; + } + if (flags & JS_PROP_HAS_SET) { + if (pr->u.getset.setter) + JS_FreeValue(ctx, JS_MKPTR(JS_TAG_OBJECT, pr->u.getset.setter)); + if (new_setter) + JS_DupValue(ctx, setter); + pr->u.getset.setter = new_setter; + } + } else { + if ((prs->flags & JS_PROP_TMASK) == JS_PROP_GETSET) { + /* convert to data descriptor */ + if (js_shape_prepare_update(ctx, p, &prs)) + return -1; + if (pr->u.getset.getter) + JS_FreeValue(ctx, JS_MKPTR(JS_TAG_OBJECT, pr->u.getset.getter)); + if (pr->u.getset.setter) + JS_FreeValue(ctx, JS_MKPTR(JS_TAG_OBJECT, pr->u.getset.setter)); + prs->flags &= ~(JS_PROP_TMASK | JS_PROP_WRITABLE); + pr->u.value = JS_UNDEFINED; + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_VARREF) { + /* Note: JS_PROP_VARREF is always writable */ + } else { + if ((prs->flags & (JS_PROP_CONFIGURABLE | JS_PROP_WRITABLE)) == 0 && + (flags & JS_PROP_HAS_VALUE)) { + if (!js_same_value(ctx, val, pr->u.value)) { + goto not_configurable; + } else { + return TRUE; + } + } + } + if ((prs->flags & JS_PROP_TMASK) == JS_PROP_VARREF) { + if (flags & JS_PROP_HAS_VALUE) { + if (p->class_id == JS_CLASS_MODULE_NS) { + /* JS_PROP_WRITABLE is always true for variable + references, but they are write protected in module name + spaces. */ + if (!js_same_value(ctx, val, *pr->u.var_ref->pvalue)) + goto not_configurable; + } + /* update the reference */ + set_value(ctx, pr->u.var_ref->pvalue, + JS_DupValue(ctx, val)); + } + /* if writable is set to false, no longer a + reference (for mapped arguments) */ + if ((flags & (JS_PROP_HAS_WRITABLE | JS_PROP_WRITABLE)) == JS_PROP_HAS_WRITABLE) { + JSValue val1; + if (js_shape_prepare_update(ctx, p, &prs)) + return -1; + val1 = JS_DupValue(ctx, *pr->u.var_ref->pvalue); + free_var_ref(ctx->rt, pr->u.var_ref); + pr->u.value = val1; + prs->flags &= ~(JS_PROP_TMASK | JS_PROP_WRITABLE); + } + } else if (prs->flags & JS_PROP_LENGTH) { + if (flags & JS_PROP_HAS_VALUE) { + /* Note: no JS code is executable because + 'val' is guaranted to be a Uint32 */ + res = set_array_length(ctx, p, JS_DupValue(ctx, val), + flags); + } else { + res = TRUE; + } + /* still need to reset the writable flag if + needed. The JS_PROP_LENGTH is kept because the + Uint32 test is still done if the length + property is read-only. */ + if ((flags & (JS_PROP_HAS_WRITABLE | JS_PROP_WRITABLE)) == + JS_PROP_HAS_WRITABLE) { + prs = get_shape_prop(p->shape); + if (js_update_property_flags(ctx, p, &prs, + prs->flags & ~JS_PROP_WRITABLE)) + return -1; + } + return res; + } else { + if (flags & JS_PROP_HAS_VALUE) { + JS_FreeValue(ctx, pr->u.value); + pr->u.value = JS_DupValue(ctx, val); + } + if (flags & JS_PROP_HAS_WRITABLE) { + if (js_update_property_flags(ctx, p, &prs, + (prs->flags & ~JS_PROP_WRITABLE) | + (flags & JS_PROP_WRITABLE))) + return -1; + } + } + } + } + mask = 0; + if (flags & JS_PROP_HAS_CONFIGURABLE) + mask |= JS_PROP_CONFIGURABLE; + if (flags & JS_PROP_HAS_ENUMERABLE) + mask |= JS_PROP_ENUMERABLE; + if (js_update_property_flags(ctx, p, &prs, + (prs->flags & ~mask) | (flags & mask))) + return -1; + return TRUE; + } + + /* handle modification of fast array elements */ + if (p->fast_array) { + uint32_t idx; + uint32_t prop_flags; + if (p->class_id == JS_CLASS_ARRAY) { + if (__JS_AtomIsTaggedInt(prop)) { + idx = __JS_AtomToUInt32(prop); + if (idx < p->u.array.count) { + prop_flags = get_prop_flags(flags, JS_PROP_C_W_E); + if (prop_flags != JS_PROP_C_W_E) + goto convert_to_slow_array; + if (flags & (JS_PROP_HAS_GET | JS_PROP_HAS_SET)) { + convert_to_slow_array: + if (convert_fast_array_to_array(ctx, p)) + return -1; + else + goto redo_prop_update; + } + if (flags & JS_PROP_HAS_VALUE) { + set_value(ctx, &p->u.array.u.values[idx], JS_DupValue(ctx, val)); + } + return TRUE; + } + } + } else if (p->class_id >= JS_CLASS_UINT8C_ARRAY && + p->class_id <= JS_CLASS_FLOAT64_ARRAY) { + JSValue num; + int ret; + + if (!__JS_AtomIsTaggedInt(prop)) { + /* slow path with to handle all numeric indexes */ + num = JS_AtomIsNumericIndex1(ctx, prop); + if (JS_IsUndefined(num)) + goto typed_array_done; + if (JS_IsException(num)) + return -1; + ret = JS_NumberIsInteger(ctx, num); + if (ret < 0) { + JS_FreeValue(ctx, num); + return -1; + } + if (!ret) { + JS_FreeValue(ctx, num); + return JS_ThrowTypeErrorOrFalse(ctx, flags, "non integer index in typed array"); + } + ret = JS_NumberIsNegativeOrMinusZero(ctx, num); + JS_FreeValue(ctx, num); + if (ret) { + return JS_ThrowTypeErrorOrFalse(ctx, flags, "negative index in typed array"); + } + if (!__JS_AtomIsTaggedInt(prop)) + goto typed_array_oob; + } + idx = __JS_AtomToUInt32(prop); + /* if the typed array is detached, p->u.array.count = 0 */ + if (idx >= typed_array_get_length(ctx, p)) { + typed_array_oob: + return JS_ThrowTypeErrorOrFalse(ctx, flags, "out-of-bound index in typed array"); + } + prop_flags = get_prop_flags(flags, JS_PROP_ENUMERABLE | JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE); + if (flags & (JS_PROP_HAS_GET | JS_PROP_HAS_SET) || + prop_flags != (JS_PROP_ENUMERABLE | JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE)) { + return JS_ThrowTypeErrorOrFalse(ctx, flags, "invalid descriptor flags"); + } + if (flags & JS_PROP_HAS_VALUE) { + return JS_SetPropertyValue(ctx, this_obj, JS_NewInt32(ctx, idx), JS_DupValue(ctx, val), flags); + } + return TRUE; + typed_array_done: ; + } + } + + return JS_CreateProperty(ctx, p, prop, val, getter, setter, flags); +} + +static int JS_DefineAutoInitProperty(JSContext *ctx, JSValueConst this_obj, + JSAtom prop, JSAutoInitIDEnum id, + void *opaque, int flags) +{ + JSObject *p; + JSProperty *pr; + + if (JS_VALUE_GET_TAG(this_obj) != JS_TAG_OBJECT) + return FALSE; + + p = JS_VALUE_GET_OBJ(this_obj); + + if (find_own_property(&pr, p, prop)) { + /* property already exists */ + abort(); + return FALSE; + } + + /* Specialized CreateProperty */ + pr = add_property(ctx, p, prop, (flags & JS_PROP_C_W_E) | JS_PROP_AUTOINIT); + if (unlikely(!pr)) + return -1; + pr->u.init.realm_and_id = (uintptr_t)JS_DupContext(ctx); + assert((pr->u.init.realm_and_id & 3) == 0); + assert(id <= 3); + pr->u.init.realm_and_id |= id; + pr->u.init.opaque = opaque; + return TRUE; +} + +/* shortcut to add or redefine a new property value */ +int JS_DefinePropertyValue(JSContext *ctx, JSValueConst this_obj, + JSAtom prop, JSValue val, int flags) +{ + int ret; + ret = JS_DefineProperty(ctx, this_obj, prop, val, JS_UNDEFINED, JS_UNDEFINED, + flags | JS_PROP_HAS_VALUE | JS_PROP_HAS_CONFIGURABLE | JS_PROP_HAS_WRITABLE | JS_PROP_HAS_ENUMERABLE); + JS_FreeValue(ctx, val); + return ret; +} + +int JS_DefinePropertyValueValue(JSContext *ctx, JSValueConst this_obj, + JSValue prop, JSValue val, int flags) +{ + JSAtom atom; + int ret; + atom = JS_ValueToAtom(ctx, prop); + JS_FreeValue(ctx, prop); + if (unlikely(atom == JS_ATOM_NULL)) { + JS_FreeValue(ctx, val); + return -1; + } + ret = JS_DefinePropertyValue(ctx, this_obj, atom, val, flags); + JS_FreeAtom(ctx, atom); + return ret; +} + +int JS_DefinePropertyValueUint32(JSContext *ctx, JSValueConst this_obj, + uint32_t idx, JSValue val, int flags) +{ + return JS_DefinePropertyValueValue(ctx, this_obj, JS_NewUint32(ctx, idx), + val, flags); +} + +int JS_DefinePropertyValueInt64(JSContext *ctx, JSValueConst this_obj, + int64_t idx, JSValue val, int flags) +{ + return JS_DefinePropertyValueValue(ctx, this_obj, JS_NewInt64(ctx, idx), + val, flags); +} + +int JS_DefinePropertyValueStr(JSContext *ctx, JSValueConst this_obj, + const char *prop, JSValue val, int flags) +{ + JSAtom atom; + int ret; + atom = JS_NewAtom(ctx, prop); + ret = JS_DefinePropertyValue(ctx, this_obj, atom, val, flags); + JS_FreeAtom(ctx, atom); + return ret; +} + +/* shortcut to add getter & setter */ +int JS_DefinePropertyGetSet(JSContext *ctx, JSValueConst this_obj, + JSAtom prop, JSValue getter, JSValue setter, + int flags) +{ + int ret; + ret = JS_DefineProperty(ctx, this_obj, prop, JS_UNDEFINED, getter, setter, + flags | JS_PROP_HAS_GET | JS_PROP_HAS_SET | + JS_PROP_HAS_CONFIGURABLE | JS_PROP_HAS_ENUMERABLE); + JS_FreeValue(ctx, getter); + JS_FreeValue(ctx, setter); + return ret; +} + +static int JS_CreateDataPropertyUint32(JSContext *ctx, JSValueConst this_obj, + int64_t idx, JSValue val, int flags) +{ + return JS_DefinePropertyValueValue(ctx, this_obj, JS_NewInt64(ctx, idx), + val, flags | JS_PROP_CONFIGURABLE | + JS_PROP_ENUMERABLE | JS_PROP_WRITABLE); +} + + +/* return TRUE if 'obj' has a non empty 'name' string */ +static BOOL js_object_has_name(JSContext *ctx, JSValueConst obj) +{ + JSProperty *pr; + JSShapeProperty *prs; + JSValueConst val; + JSString *p; + + prs = find_own_property(&pr, JS_VALUE_GET_OBJ(obj), JS_ATOM_name); + if (!prs) + return FALSE; + if ((prs->flags & JS_PROP_TMASK) != JS_PROP_NORMAL) + return TRUE; + val = pr->u.value; + if (JS_VALUE_GET_TAG(val) != JS_TAG_STRING) + return TRUE; + p = JS_VALUE_GET_STRING(val); + return (p->len != 0); +} + +static int JS_DefineObjectName(JSContext *ctx, JSValueConst obj, + JSAtom name, int flags) +{ + if (name != JS_ATOM_NULL + && JS_IsObject(obj) + && !js_object_has_name(ctx, obj) + && JS_DefinePropertyValue(ctx, obj, JS_ATOM_name, JS_AtomToString(ctx, name), flags) < 0) { + return -1; + } + return 0; +} + +static int JS_DefineObjectNameComputed(JSContext *ctx, JSValueConst obj, + JSValueConst str, int flags) +{ + if (JS_IsObject(obj) && + !js_object_has_name(ctx, obj)) { + JSAtom prop; + JSValue name_str; + prop = JS_ValueToAtom(ctx, str); + if (prop == JS_ATOM_NULL) + return -1; + name_str = js_get_function_name(ctx, prop); + JS_FreeAtom(ctx, prop); + if (JS_IsException(name_str)) + return -1; + if (JS_DefinePropertyValue(ctx, obj, JS_ATOM_name, name_str, flags) < 0) + return -1; + } + return 0; +} + +#define DEFINE_GLOBAL_LEX_VAR (1 << 7) +#define DEFINE_GLOBAL_FUNC_VAR (1 << 6) + +static JSValue JS_ThrowSyntaxErrorVarRedeclaration(JSContext *ctx, JSAtom prop) +{ + return JS_ThrowSyntaxErrorAtom(ctx, "redeclaration of '%s'", prop); +} + +/* flags is 0, DEFINE_GLOBAL_LEX_VAR or DEFINE_GLOBAL_FUNC_VAR */ +/* XXX: could support exotic global object. */ +static int JS_CheckDefineGlobalVar(JSContext *ctx, JSAtom prop, int flags) +{ + JSObject *p; + JSShapeProperty *prs; + + p = JS_VALUE_GET_OBJ(ctx->global_obj); + prs = find_own_property1(p, prop); + /* XXX: should handle JS_PROP_AUTOINIT */ + if (flags & DEFINE_GLOBAL_LEX_VAR) { + if (prs && !(prs->flags & JS_PROP_CONFIGURABLE)) + goto fail_redeclaration; + } else { + if (!prs && !p->extensible) + goto define_error; + if (flags & DEFINE_GLOBAL_FUNC_VAR) { + if (prs) { + if (!(prs->flags & JS_PROP_CONFIGURABLE) && + ((prs->flags & JS_PROP_TMASK) == JS_PROP_GETSET || + ((prs->flags & (JS_PROP_WRITABLE | JS_PROP_ENUMERABLE)) != + (JS_PROP_WRITABLE | JS_PROP_ENUMERABLE)))) { + define_error: + JS_ThrowTypeErrorAtom(ctx, "cannot define variable '%s'", + prop); + return -1; + } + } + } + } + /* check if there already is a lexical declaration */ + p = JS_VALUE_GET_OBJ(ctx->global_var_obj); + prs = find_own_property1(p, prop); + if (prs) { + fail_redeclaration: + JS_ThrowSyntaxErrorVarRedeclaration(ctx, prop); + return -1; + } + return 0; +} + +/* def_flags is (0, DEFINE_GLOBAL_LEX_VAR) | + JS_PROP_CONFIGURABLE | JS_PROP_WRITABLE */ +/* XXX: could support exotic global object. */ +static int JS_DefineGlobalVar(JSContext *ctx, JSAtom prop, int def_flags) +{ + JSObject *p; + JSShapeProperty *prs; + JSProperty *pr; + JSValue val; + int flags; + + if (def_flags & DEFINE_GLOBAL_LEX_VAR) { + p = JS_VALUE_GET_OBJ(ctx->global_var_obj); + flags = JS_PROP_ENUMERABLE | (def_flags & JS_PROP_WRITABLE) | + JS_PROP_CONFIGURABLE; + val = JS_UNINITIALIZED; + } else { + p = JS_VALUE_GET_OBJ(ctx->global_obj); + flags = JS_PROP_ENUMERABLE | JS_PROP_WRITABLE | + (def_flags & JS_PROP_CONFIGURABLE); + val = JS_UNDEFINED; + } + prs = find_own_property1(p, prop); + if (prs) + return 0; + if (!p->extensible) + return 0; + pr = add_property(ctx, p, prop, flags); + if (unlikely(!pr)) + return -1; + pr->u.value = val; + return 0; +} + +/* 'def_flags' is 0 or JS_PROP_CONFIGURABLE. */ +/* XXX: could support exotic global object. */ +static int JS_DefineGlobalFunction(JSContext *ctx, JSAtom prop, + JSValueConst func, int def_flags) +{ + + JSObject *p; + JSShapeProperty *prs; + int flags; + + p = JS_VALUE_GET_OBJ(ctx->global_obj); + prs = find_own_property1(p, prop); + flags = JS_PROP_HAS_VALUE | JS_PROP_THROW; + if (!prs || (prs->flags & JS_PROP_CONFIGURABLE)) { + flags |= JS_PROP_ENUMERABLE | JS_PROP_WRITABLE | def_flags | + JS_PROP_HAS_CONFIGURABLE | JS_PROP_HAS_WRITABLE | JS_PROP_HAS_ENUMERABLE; + } + if (JS_DefineProperty(ctx, ctx->global_obj, prop, func, + JS_UNDEFINED, JS_UNDEFINED, flags) < 0) + return -1; + return 0; +} + +static JSValue JS_GetGlobalVar(JSContext *ctx, JSAtom prop, + BOOL throw_ref_error) +{ + JSObject *p; + JSShapeProperty *prs; + JSProperty *pr; + + /* no exotic behavior is possible in global_var_obj */ + p = JS_VALUE_GET_OBJ(ctx->global_var_obj); + prs = find_own_property(&pr, p, prop); + if (prs) { + /* XXX: should handle JS_PROP_TMASK properties */ + if (unlikely(JS_IsUninitialized(pr->u.value))) + return JS_ThrowReferenceErrorUninitialized(ctx, prs->atom); + return JS_DupValue(ctx, pr->u.value); + } + return JS_GetPropertyInternal(ctx, ctx->global_obj, prop, + ctx->global_obj, throw_ref_error); +} + +/* construct a reference to a global variable */ +static int JS_GetGlobalVarRef(JSContext *ctx, JSAtom prop, JSValue *sp) +{ + JSObject *p; + JSShapeProperty *prs; + JSProperty *pr; + + /* no exotic behavior is possible in global_var_obj */ + p = JS_VALUE_GET_OBJ(ctx->global_var_obj); + prs = find_own_property(&pr, p, prop); + if (prs) { + /* XXX: should handle JS_PROP_AUTOINIT properties? */ + /* XXX: conformance: do these tests in + OP_put_var_ref/OP_get_var_ref ? */ + if (unlikely(JS_IsUninitialized(pr->u.value))) { + JS_ThrowReferenceErrorUninitialized(ctx, prs->atom); + return -1; + } + if (unlikely(!(prs->flags & JS_PROP_WRITABLE))) { + return JS_ThrowTypeErrorReadOnly(ctx, JS_PROP_THROW, prop); + } + sp[0] = JS_DupValue(ctx, ctx->global_var_obj); + } else { + int ret; + ret = JS_HasProperty(ctx, ctx->global_obj, prop); + if (ret < 0) + return -1; + if (ret) { + sp[0] = JS_DupValue(ctx, ctx->global_obj); + } else { + sp[0] = JS_UNDEFINED; + } + } + sp[1] = JS_AtomToValue(ctx, prop); + return 0; +} + +/* use for strict variable access: test if the variable exists */ +static int JS_CheckGlobalVar(JSContext *ctx, JSAtom prop) +{ + JSObject *p; + JSShapeProperty *prs; + int ret; + + /* no exotic behavior is possible in global_var_obj */ + p = JS_VALUE_GET_OBJ(ctx->global_var_obj); + prs = find_own_property1(p, prop); + if (prs) { + ret = TRUE; + } else { + ret = JS_HasProperty(ctx, ctx->global_obj, prop); + if (ret < 0) + return -1; + } + return ret; +} + +/* flag = 0: normal variable write + flag = 1: initialize lexical variable + flag = 2: normal variable write, strict check was done before +*/ +static int JS_SetGlobalVar(JSContext *ctx, JSAtom prop, JSValue val, + int flag) +{ + JSObject *p; + JSShapeProperty *prs; + JSProperty *pr; + int flags; + + /* no exotic behavior is possible in global_var_obj */ + p = JS_VALUE_GET_OBJ(ctx->global_var_obj); + prs = find_own_property(&pr, p, prop); + if (prs) { + /* XXX: should handle JS_PROP_AUTOINIT properties? */ + if (flag != 1) { + if (unlikely(JS_IsUninitialized(pr->u.value))) { + JS_FreeValue(ctx, val); + JS_ThrowReferenceErrorUninitialized(ctx, prs->atom); + return -1; + } + if (unlikely(!(prs->flags & JS_PROP_WRITABLE))) { + JS_FreeValue(ctx, val); + return JS_ThrowTypeErrorReadOnly(ctx, JS_PROP_THROW, prop); + } + } + set_value(ctx, &pr->u.value, val); + return 0; + } + flags = JS_PROP_THROW_STRICT; + if (is_strict_mode(ctx)) + flags |= JS_PROP_NO_ADD; + return JS_SetPropertyInternal(ctx, ctx->global_obj, prop, val, flags); +} + +/* return -1, FALSE or TRUE. return FALSE if not configurable or + invalid object. return -1 in case of exception. + flags can be 0, JS_PROP_THROW or JS_PROP_THROW_STRICT */ +int JS_DeleteProperty(JSContext *ctx, JSValueConst obj, JSAtom prop, int flags) +{ + JSValue obj1; + JSObject *p; + int res; + + obj1 = JS_ToObject(ctx, obj); + if (JS_IsException(obj1)) + return -1; + p = JS_VALUE_GET_OBJ(obj1); + res = delete_property(ctx, p, prop); + JS_FreeValue(ctx, obj1); + if (res != FALSE) + return res; + if ((flags & JS_PROP_THROW) || + ((flags & JS_PROP_THROW_STRICT) && is_strict_mode(ctx))) { + JS_ThrowTypeError(ctx, "could not delete property"); + return -1; + } + return FALSE; +} + +int JS_DeletePropertyInt64(JSContext *ctx, JSValueConst obj, int64_t idx, int flags) +{ + JSAtom prop; + int res; + + if ((uint64_t)idx <= JS_ATOM_MAX_INT) { + /* fast path for fast arrays */ + return JS_DeleteProperty(ctx, obj, __JS_AtomFromUInt32(idx), flags); + } + prop = JS_NewAtomInt64(ctx, idx); + if (prop == JS_ATOM_NULL) + return -1; + res = JS_DeleteProperty(ctx, obj, prop, flags); + JS_FreeAtom(ctx, prop); + return res; +} + +BOOL JS_IsFunction(JSContext *ctx, JSValueConst val) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(val) != JS_TAG_OBJECT) + return FALSE; + p = JS_VALUE_GET_OBJ(val); + switch(p->class_id) { + case JS_CLASS_BYTECODE_FUNCTION: + return TRUE; + case JS_CLASS_PROXY: + return p->u.proxy_data->is_func; + default: + return (ctx->rt->class_array[p->class_id].call != NULL); + } +} + +BOOL JS_IsCFunction(JSContext *ctx, JSValueConst val, JSCFunction *func, int magic) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(val) != JS_TAG_OBJECT) + return FALSE; + p = JS_VALUE_GET_OBJ(val); + if (p->class_id == JS_CLASS_C_FUNCTION) + return (p->u.cfunc.c_function.generic == func && p->u.cfunc.magic == magic); + else + return FALSE; +} + +BOOL JS_IsConstructor(JSContext *ctx, JSValueConst val) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(val) != JS_TAG_OBJECT) + return FALSE; + p = JS_VALUE_GET_OBJ(val); + return p->is_constructor; +} + +BOOL JS_SetConstructorBit(JSContext *ctx, JSValueConst func_obj, BOOL val) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(func_obj) != JS_TAG_OBJECT) + return FALSE; + p = JS_VALUE_GET_OBJ(func_obj); + p->is_constructor = val; + return TRUE; +} + +BOOL JS_IsError(JSContext *ctx, JSValueConst val) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(val) != JS_TAG_OBJECT) + return FALSE; + p = JS_VALUE_GET_OBJ(val); + return (p->class_id == JS_CLASS_ERROR); +} + +/* used to avoid catching interrupt exceptions */ +BOOL JS_IsUncatchableError(JSContext *ctx, JSValueConst val) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(val) != JS_TAG_OBJECT) + return FALSE; + p = JS_VALUE_GET_OBJ(val); + return p->class_id == JS_CLASS_ERROR && p->is_uncatchable_error; +} + +void JS_SetUncatchableError(JSContext *ctx, JSValueConst val, BOOL flag) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(val) != JS_TAG_OBJECT) + return; + p = JS_VALUE_GET_OBJ(val); + if (p->class_id == JS_CLASS_ERROR) + p->is_uncatchable_error = flag; +} + +void JS_ResetUncatchableError(JSContext *ctx) +{ + JS_SetUncatchableError(ctx, ctx->rt->current_exception, FALSE); +} + +void JS_SetOpaque(JSValue obj, void *opaque) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(obj) == JS_TAG_OBJECT) { + p = JS_VALUE_GET_OBJ(obj); + p->u.opaque = opaque; + } +} + +/* return NULL if not an object of class class_id */ +void *JS_GetOpaque(JSValueConst obj, JSClassID class_id) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT) + return NULL; + p = JS_VALUE_GET_OBJ(obj); + if (p->class_id != class_id) + return NULL; + return p->u.opaque; +} + +void *JS_GetOpaque2(JSContext *ctx, JSValueConst obj, JSClassID class_id) +{ + void *p = JS_GetOpaque(obj, class_id); + if (unlikely(!p)) { + JS_ThrowTypeErrorInvalidClass(ctx, class_id); + } + return p; +} + +#define HINT_STRING 0 +#define HINT_NUMBER 1 +#define HINT_NONE 2 +/* don't try Symbol.toPrimitive */ +#define HINT_FORCE_ORDINARY (1 << 4) + +static JSValue JS_ToPrimitiveFree(JSContext *ctx, JSValue val, int hint) +{ + int i; + BOOL force_ordinary; + + JSAtom method_name; + JSValue method, ret; + if (JS_VALUE_GET_TAG(val) != JS_TAG_OBJECT) + return val; + force_ordinary = hint & HINT_FORCE_ORDINARY; + hint &= ~HINT_FORCE_ORDINARY; + if (!force_ordinary) { + method = JS_GetProperty(ctx, val, JS_ATOM_Symbol_toPrimitive); + if (JS_IsException(method)) + goto exception; + /* ECMA says *If exoticToPrim is not undefined* but tests in + test262 use null as a non callable converter */ + if (!JS_IsUndefined(method) && !JS_IsNull(method)) { + JSAtom atom; + JSValue arg; + switch(hint) { + case HINT_STRING: + atom = JS_ATOM_string; + break; + case HINT_NUMBER: + atom = JS_ATOM_number; + break; + default: + case HINT_NONE: + atom = JS_ATOM_default; + break; + } + arg = JS_AtomToString(ctx, atom); + ret = JS_CallFree(ctx, method, val, 1, (JSValueConst *)&arg); + JS_FreeValue(ctx, arg); + if (JS_IsException(ret)) + goto exception; + JS_FreeValue(ctx, val); + if (JS_VALUE_GET_TAG(ret) != JS_TAG_OBJECT) + return ret; + JS_FreeValue(ctx, ret); + return JS_ThrowTypeError(ctx, "toPrimitive"); + } + } + if (hint != HINT_STRING) + hint = HINT_NUMBER; + for(i = 0; i < 2; i++) { + if ((i ^ hint) == 0) { + method_name = JS_ATOM_toString; + } else { + method_name = JS_ATOM_valueOf; + } + method = JS_GetProperty(ctx, val, method_name); + if (JS_IsException(method)) + goto exception; + if (JS_IsFunction(ctx, method)) { + ret = JS_CallFree(ctx, method, val, 0, NULL); + if (JS_IsException(ret)) + goto exception; + if (JS_VALUE_GET_TAG(ret) != JS_TAG_OBJECT) { + JS_FreeValue(ctx, val); + return ret; + } + JS_FreeValue(ctx, ret); + } else { + JS_FreeValue(ctx, method); + } + } + JS_ThrowTypeError(ctx, "toPrimitive"); +exception: + JS_FreeValue(ctx, val); + return JS_EXCEPTION; +} + +static JSValue JS_ToPrimitive(JSContext *ctx, JSValueConst val, int hint) +{ + return JS_ToPrimitiveFree(ctx, JS_DupValue(ctx, val), hint); +} + +void JS_SetIsHTMLDDA(JSContext *ctx, JSValueConst obj) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT) + return; + p = JS_VALUE_GET_OBJ(obj); + p->is_HTMLDDA = TRUE; +} + +static inline BOOL JS_IsHTMLDDA(JSContext *ctx, JSValueConst obj) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT) + return FALSE; + p = JS_VALUE_GET_OBJ(obj); + return p->is_HTMLDDA; +} + +static int JS_ToBoolFree(JSContext *ctx, JSValue val) +{ + uint32_t tag = JS_VALUE_GET_TAG(val); + switch(tag) { + case JS_TAG_INT: + return JS_VALUE_GET_INT(val) != 0; + case JS_TAG_BOOL: + case JS_TAG_NULL: + case JS_TAG_UNDEFINED: + return JS_VALUE_GET_INT(val); + case JS_TAG_EXCEPTION: + return -1; + case JS_TAG_STRING: + { + BOOL ret = JS_VALUE_GET_STRING(val)->len != 0; + JS_FreeValue(ctx, val); + return ret; + } +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_INT: + case JS_TAG_BIG_FLOAT: + { + JSBigFloat *p = JS_VALUE_GET_PTR(val); + BOOL ret; + ret = p->num.expn != BF_EXP_ZERO && p->num.expn != BF_EXP_NAN; + JS_FreeValue(ctx, val); + return ret; + } + case JS_TAG_BIG_DECIMAL: + { + JSBigDecimal *p = JS_VALUE_GET_PTR(val); + BOOL ret; + ret = p->num.expn != BF_EXP_ZERO && p->num.expn != BF_EXP_NAN; + JS_FreeValue(ctx, val); + return ret; + } +#endif + case JS_TAG_OBJECT: + { + JSObject *p = JS_VALUE_GET_OBJ(val); + BOOL ret; + ret = !p->is_HTMLDDA; + JS_FreeValue(ctx, val); + return ret; + } + break; + default: + if (JS_TAG_IS_FLOAT64(tag)) { + double d = JS_VALUE_GET_FLOAT64(val); + return !isnan(d) && d != 0; + } else { + JS_FreeValue(ctx, val); + return TRUE; + } + } +} + +int JS_ToBool(JSContext *ctx, JSValueConst val) +{ + return JS_ToBoolFree(ctx, JS_DupValue(ctx, val)); +} + +static int skip_spaces(const char *pc) +{ + const uint8_t *p, *p_next, *p_start; + uint32_t c; + + p = p_start = (const uint8_t *)pc; + for (;;) { + c = *p; + if (c < 128) { + if (!((c >= 0x09 && c <= 0x0d) || (c == 0x20))) + break; + p++; + } else { + c = unicode_from_utf8(p, UTF8_CHAR_LEN_MAX, &p_next); + if (!lre_is_space(c)) + break; + p = p_next; + } + } + return p - p_start; +} + +static inline int to_digit(int c) +{ + if (c >= '0' && c <= '9') + return c - '0'; + else if (c >= 'A' && c <= 'Z') + return c - 'A' + 10; + else if (c >= 'a' && c <= 'z') + return c - 'a' + 10; + else + return 36; +} + +/* XXX: remove */ +static double js_strtod(const char *p, int radix, BOOL is_float) +{ + double d; + int c; + + if (!is_float || radix != 10) { + uint64_t n_max, n; + int int_exp, is_neg; + + is_neg = 0; + if (*p == '-') { + is_neg = 1; + p++; + } + + /* skip leading zeros */ + while (*p == '0') + p++; + n = 0; + if (radix == 10) + n_max = ((uint64_t)-1 - 9) / 10; /* most common case */ + else + n_max = ((uint64_t)-1 - (radix - 1)) / radix; + /* XXX: could be more precise */ + int_exp = 0; + while (*p != '\0') { + c = to_digit((uint8_t)*p); + if (c >= radix) + break; + if (n <= n_max) { + n = n * radix + c; + } else { + int_exp++; + } + p++; + } + d = n; + if (int_exp != 0) { + d *= pow(radix, int_exp); + } + if (is_neg) + d = -d; + } else { + d = strtod(p, NULL); + } + return d; +} + +#define ATOD_INT_ONLY (1 << 0) +/* accept Oo and Ob prefixes in addition to 0x prefix if radix = 0 */ +#define ATOD_ACCEPT_BIN_OCT (1 << 2) +/* accept O prefix as octal if radix == 0 and properly formed (Annex B) */ +#define ATOD_ACCEPT_LEGACY_OCTAL (1 << 4) +/* accept _ between digits as a digit separator */ +#define ATOD_ACCEPT_UNDERSCORES (1 << 5) +/* allow a suffix to override the type */ +#define ATOD_ACCEPT_SUFFIX (1 << 6) +/* default type */ +#define ATOD_TYPE_MASK (3 << 7) +#define ATOD_TYPE_FLOAT64 (0 << 7) +#define ATOD_TYPE_BIG_INT (1 << 7) +#define ATOD_TYPE_BIG_FLOAT (2 << 7) +#define ATOD_TYPE_BIG_DECIMAL (3 << 7) +/* assume bigint mode: floats are parsed as integers if no decimal + point nor exponent */ +#define ATOD_MODE_BIGINT (1 << 9) +/* accept -0x1 */ +#define ATOD_ACCEPT_PREFIX_AFTER_SIGN (1 << 10) + +#ifdef CONFIG_BIGNUM +static JSValue js_string_to_bigint(JSContext *ctx, const char *buf, + int radix, int flags, slimb_t *pexponent) +{ + bf_t a_s, *a = &a_s; + int ret; + JSValue val; + val = JS_NewBigInt(ctx); + if (JS_IsException(val)) + return val; + a = JS_GetBigInt(val); + ret = bf_atof(a, buf, NULL, radix, BF_PREC_INF, BF_RNDZ); + if (ret & BF_ST_MEM_ERROR) { + JS_FreeValue(ctx, val); + return JS_ThrowOutOfMemory(ctx); + } + val = JS_CompactBigInt1(ctx, val, (flags & ATOD_MODE_BIGINT) != 0); + return val; +} + +static JSValue js_string_to_bigfloat(JSContext *ctx, const char *buf, + int radix, int flags, slimb_t *pexponent) +{ + bf_t *a; + int ret; + JSValue val; + + val = JS_NewBigFloat(ctx); + if (JS_IsException(val)) + return val; + a = JS_GetBigFloat(val); + if (flags & ATOD_ACCEPT_SUFFIX) { + /* return the exponent to get infinite precision */ + ret = bf_atof2(a, pexponent, buf, NULL, radix, BF_PREC_INF, + BF_RNDZ | BF_ATOF_EXPONENT); + } else { + ret = bf_atof(a, buf, NULL, radix, ctx->fp_env.prec, + ctx->fp_env.flags); + } + if (ret & BF_ST_MEM_ERROR) { + JS_FreeValue(ctx, val); + return JS_ThrowOutOfMemory(ctx); + } + return val; +} + +static JSValue js_string_to_bigdecimal(JSContext *ctx, const char *buf, + int radix, int flags, slimb_t *pexponent) +{ + bfdec_t *a; + int ret; + JSValue val; + + val = JS_NewBigDecimal(ctx); + if (JS_IsException(val)) + return val; + a = JS_GetBigDecimal(val); + ret = bfdec_atof(a, buf, NULL, BF_PREC_INF, + BF_RNDZ | BF_ATOF_NO_NAN_INF); + if (ret & BF_ST_MEM_ERROR) { + JS_FreeValue(ctx, val); + return JS_ThrowOutOfMemory(ctx); + } + return val; +} + +#endif + +/* return an exception in case of memory error. Return JS_NAN if + invalid syntax */ +#ifdef CONFIG_BIGNUM +static JSValue js_atof2(JSContext *ctx, const char *str, const char **pp, + int radix, int flags, slimb_t *pexponent) +#else +static JSValue js_atof(JSContext *ctx, const char *str, const char **pp, + int radix, int flags) +#endif +{ + const char *p, *p_start; + int sep, is_neg; + BOOL is_float, has_legacy_octal; + int atod_type = flags & ATOD_TYPE_MASK; + char buf1[64], *buf; + int i, j, len; + BOOL buf_allocated = FALSE; + JSValue val; + + /* optional separator between digits */ + sep = (flags & ATOD_ACCEPT_UNDERSCORES) ? '_' : 256; + has_legacy_octal = FALSE; + + p = str; + p_start = p; + is_neg = 0; + if (p[0] == '+') { + p++; + p_start++; + if (!(flags & ATOD_ACCEPT_PREFIX_AFTER_SIGN)) + goto no_radix_prefix; + } else if (p[0] == '-') { + p++; + p_start++; + is_neg = 1; + if (!(flags & ATOD_ACCEPT_PREFIX_AFTER_SIGN)) + goto no_radix_prefix; + } + if (p[0] == '0') { + if ((p[1] == 'x' || p[1] == 'X') && + (radix == 0 || radix == 16)) { + p += 2; + radix = 16; + } else if ((p[1] == 'o' || p[1] == 'O') && + radix == 0 && (flags & ATOD_ACCEPT_BIN_OCT)) { + p += 2; + radix = 8; + } else if ((p[1] == 'b' || p[1] == 'B') && + radix == 0 && (flags & ATOD_ACCEPT_BIN_OCT)) { + p += 2; + radix = 2; + } else if ((p[1] >= '0' && p[1] <= '9') && + radix == 0 && (flags & ATOD_ACCEPT_LEGACY_OCTAL)) { + int i; + has_legacy_octal = TRUE; + sep = 256; + for (i = 1; (p[i] >= '0' && p[i] <= '7'); i++) + continue; + if (p[i] == '8' || p[i] == '9') + goto no_prefix; + p += 1; + radix = 8; + } else { + goto no_prefix; + } + /* there must be a digit after the prefix */ + if (to_digit((uint8_t)*p) >= radix) + goto fail; + no_prefix: ; + } else { + no_radix_prefix: + if (!(flags & ATOD_INT_ONLY) && + (atod_type == ATOD_TYPE_FLOAT64 || + atod_type == ATOD_TYPE_BIG_FLOAT) && + strstart(p, "Infinity", &p)) { +#ifdef CONFIG_BIGNUM + if (atod_type == ATOD_TYPE_BIG_FLOAT) { + bf_t *a; + val = JS_NewBigFloat(ctx); + if (JS_IsException(val)) + goto done; + a = JS_GetBigFloat(val); + bf_set_inf(a, is_neg); + } else +#endif + { + double d = 1.0 / 0.0; + if (is_neg) + d = -d; + val = JS_NewFloat64(ctx, d); + } + goto done; + } + } + if (radix == 0) + radix = 10; + is_float = FALSE; + p_start = p; + while (to_digit((uint8_t)*p) < radix + || (*p == sep && (radix != 10 || + p != p_start + 1 || p[-1] != '0') && + to_digit((uint8_t)p[1]) < radix)) { + p++; + } + if (!(flags & ATOD_INT_ONLY)) { + if (*p == '.' && (p > p_start || to_digit((uint8_t)p[1]) < radix)) { + is_float = TRUE; + p++; + if (*p == sep) + goto fail; + while (to_digit((uint8_t)*p) < radix || + (*p == sep && to_digit((uint8_t)p[1]) < radix)) + p++; + } + if (p > p_start && + (((*p == 'e' || *p == 'E') && radix == 10) || + ((*p == 'p' || *p == 'P') && (radix == 2 || radix == 8 || radix == 16)))) { + const char *p1 = p + 1; + is_float = TRUE; + if (*p1 == '+') { + p1++; + } else if (*p1 == '-') { + p1++; + } + if (is_digit((uint8_t)*p1)) { + p = p1 + 1; + while (is_digit((uint8_t)*p) || (*p == sep && is_digit((uint8_t)p[1]))) + p++; + } + } + } + if (p == p_start) + goto fail; + + buf = buf1; + buf_allocated = FALSE; + len = p - p_start; + if (unlikely((len + 2) > sizeof(buf1))) { + buf = js_malloc_rt(ctx->rt, len + 2); /* no exception raised */ + if (!buf) + goto mem_error; + buf_allocated = TRUE; + } + /* remove the separators and the radix prefixes */ + j = 0; + if (is_neg) + buf[j++] = '-'; + for (i = 0; i < len; i++) { + if (p_start[i] != '_') + buf[j++] = p_start[i]; + } + buf[j] = '\0'; + +#ifdef CONFIG_BIGNUM + if (flags & ATOD_ACCEPT_SUFFIX) { + if (*p == 'n') { + p++; + atod_type = ATOD_TYPE_BIG_INT; + } else if (*p == 'l') { + p++; + atod_type = ATOD_TYPE_BIG_FLOAT; + } else if (*p == 'm') { + p++; + atod_type = ATOD_TYPE_BIG_DECIMAL; + } else { + if (flags & ATOD_MODE_BIGINT) { + if (!is_float) + atod_type = ATOD_TYPE_BIG_INT; + if (has_legacy_octal) + goto fail; + } else { + if (is_float && radix != 10) + goto fail; + } + } + } else { + if (atod_type == ATOD_TYPE_FLOAT64) { + if (flags & ATOD_MODE_BIGINT) { + if (!is_float) + atod_type = ATOD_TYPE_BIG_INT; + if (has_legacy_octal) + goto fail; + } else { + if (is_float && radix != 10) + goto fail; + } + } + } + + switch(atod_type) { + case ATOD_TYPE_FLOAT64: + { + double d; + d = js_strtod(buf, radix, is_float); + /* return int or float64 */ + val = JS_NewFloat64(ctx, d); + } + break; + case ATOD_TYPE_BIG_INT: + if (has_legacy_octal || is_float) + goto fail; + val = ctx->rt->bigint_ops.from_string(ctx, buf, radix, flags, NULL); + break; + case ATOD_TYPE_BIG_FLOAT: + if (has_legacy_octal) + goto fail; + val = ctx->rt->bigfloat_ops.from_string(ctx, buf, radix, flags, + pexponent); + break; + case ATOD_TYPE_BIG_DECIMAL: + if (radix != 10) + goto fail; + val = ctx->rt->bigdecimal_ops.from_string(ctx, buf, radix, flags, NULL); + break; + default: + abort(); + } +#else + { + double d; + (void)has_legacy_octal; + if (is_float && radix != 10) + goto fail; + d = js_strtod(buf, radix, is_float); + val = JS_NewFloat64(ctx, d); + } +#endif + +done: + if (buf_allocated) + js_free_rt(ctx->rt, buf); + if (pp) + *pp = p; + return val; + fail: + val = JS_NAN; + goto done; + mem_error: + val = JS_ThrowOutOfMemory(ctx); + goto done; +} + +#ifdef CONFIG_BIGNUM +static JSValue js_atof(JSContext *ctx, const char *str, const char **pp, + int radix, int flags) +{ + return js_atof2(ctx, str, pp, radix, flags, NULL); +} +#endif + +typedef enum JSToNumberHintEnum { + TON_FLAG_NUMBER, + TON_FLAG_NUMERIC, +} JSToNumberHintEnum; + +static JSValue JS_ToNumberHintFree(JSContext *ctx, JSValue val, + JSToNumberHintEnum flag) +{ + uint32_t tag; + JSValue ret; + + redo: + tag = JS_VALUE_GET_NORM_TAG(val); + switch(tag) { +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_DECIMAL: + if (flag != TON_FLAG_NUMERIC) { + JS_FreeValue(ctx, val); + return JS_ThrowTypeError(ctx, "cannot convert bigdecimal to number"); + } + ret = val; + break; + case JS_TAG_BIG_INT: + if (flag != TON_FLAG_NUMERIC) { + JS_FreeValue(ctx, val); + return JS_ThrowTypeError(ctx, "cannot convert bigint to number"); + } + ret = val; + break; + case JS_TAG_BIG_FLOAT: + if (flag != TON_FLAG_NUMERIC) { + JS_FreeValue(ctx, val); + return JS_ThrowTypeError(ctx, "cannot convert bigfloat to number"); + } + ret = val; + break; +#endif + case JS_TAG_FLOAT64: + case JS_TAG_INT: + case JS_TAG_EXCEPTION: + ret = val; + break; + case JS_TAG_BOOL: + case JS_TAG_NULL: + ret = JS_NewInt32(ctx, JS_VALUE_GET_INT(val)); + break; + case JS_TAG_UNDEFINED: + ret = JS_NAN; + break; + case JS_TAG_OBJECT: + val = JS_ToPrimitiveFree(ctx, val, HINT_NUMBER); + if (JS_IsException(val)) + return JS_EXCEPTION; + goto redo; + case JS_TAG_STRING: + { + const char *str; + const char *p; + size_t len; + + str = JS_ToCStringLen(ctx, &len, val); + JS_FreeValue(ctx, val); + if (!str) + return JS_EXCEPTION; + p = str; + p += skip_spaces(p); + if ((p - str) == len) { + ret = JS_NewInt32(ctx, 0); + } else { + int flags = ATOD_ACCEPT_BIN_OCT; + ret = js_atof(ctx, p, &p, 0, flags); + if (!JS_IsException(ret)) { + p += skip_spaces(p); + if ((p - str) != len) { + JS_FreeValue(ctx, ret); + ret = JS_NAN; + } + } + } + JS_FreeCString(ctx, str); + } + break; + case JS_TAG_SYMBOL: + JS_FreeValue(ctx, val); + return JS_ThrowTypeError(ctx, "cannot convert symbol to number"); + default: + JS_FreeValue(ctx, val); + ret = JS_NAN; + break; + } + return ret; +} + +static JSValue JS_ToNumberFree(JSContext *ctx, JSValue val) +{ + return JS_ToNumberHintFree(ctx, val, TON_FLAG_NUMBER); +} + +static JSValue JS_ToNumericFree(JSContext *ctx, JSValue val) +{ + return JS_ToNumberHintFree(ctx, val, TON_FLAG_NUMERIC); +} + +static JSValue JS_ToNumeric(JSContext *ctx, JSValueConst val) +{ + return JS_ToNumericFree(ctx, JS_DupValue(ctx, val)); +} + +static __exception int __JS_ToFloat64Free(JSContext *ctx, double *pres, + JSValue val) +{ + double d; + uint32_t tag; + + val = JS_ToNumberFree(ctx, val); + if (JS_IsException(val)) { + *pres = JS_FLOAT64_NAN; + return -1; + } + tag = JS_VALUE_GET_NORM_TAG(val); + switch(tag) { + case JS_TAG_INT: + d = JS_VALUE_GET_INT(val); + break; + case JS_TAG_FLOAT64: + d = JS_VALUE_GET_FLOAT64(val); + break; +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_INT: + case JS_TAG_BIG_FLOAT: + { + JSBigFloat *p = JS_VALUE_GET_PTR(val); + /* XXX: there can be a double rounding issue with some + primitives (such as JS_ToUint8ClampFree()), but it is + not critical to fix it. */ + bf_get_float64(&p->num, &d, BF_RNDN); + JS_FreeValue(ctx, val); + } + break; +#endif + default: + abort(); + } + *pres = d; + return 0; +} + +static inline int JS_ToFloat64Free(JSContext *ctx, double *pres, JSValue val) +{ + uint32_t tag; + + tag = JS_VALUE_GET_TAG(val); + if (tag <= JS_TAG_NULL) { + *pres = JS_VALUE_GET_INT(val); + return 0; + } else if (JS_TAG_IS_FLOAT64(tag)) { + *pres = JS_VALUE_GET_FLOAT64(val); + return 0; + } else { + return __JS_ToFloat64Free(ctx, pres, val); + } +} + +int JS_ToFloat64(JSContext *ctx, double *pres, JSValueConst val) +{ + return JS_ToFloat64Free(ctx, pres, JS_DupValue(ctx, val)); +} + +static JSValue JS_ToNumber(JSContext *ctx, JSValueConst val) +{ + return JS_ToNumberFree(ctx, JS_DupValue(ctx, val)); +} + +/* same as JS_ToNumber() but return 0 in case of NaN/Undefined */ +static __maybe_unused JSValue JS_ToIntegerFree(JSContext *ctx, JSValue val) +{ + uint32_t tag; + JSValue ret; + + redo: + tag = JS_VALUE_GET_NORM_TAG(val); + switch(tag) { + case JS_TAG_INT: + case JS_TAG_BOOL: + case JS_TAG_NULL: + case JS_TAG_UNDEFINED: + ret = JS_NewInt32(ctx, JS_VALUE_GET_INT(val)); + break; + case JS_TAG_FLOAT64: + { + double d = JS_VALUE_GET_FLOAT64(val); + if (isnan(d)) { + ret = JS_NewInt32(ctx, 0); + } else { + /* convert -0 to +0 */ + d = trunc(d) + 0.0; + ret = JS_NewFloat64(ctx, d); + } + } + break; +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_FLOAT: + { + bf_t a_s, *a, r_s, *r = &r_s; + BOOL is_nan; + + a = JS_ToBigFloat(ctx, &a_s, val); + if (!bf_is_finite(a)) { + is_nan = bf_is_nan(a); + if (is_nan) + ret = JS_NewInt32(ctx, 0); + else + ret = JS_DupValue(ctx, val); + } else { + ret = JS_NewBigInt(ctx); + if (!JS_IsException(ret)) { + r = JS_GetBigInt(ret); + bf_set(r, a); + bf_rint(r, BF_RNDZ); + ret = JS_CompactBigInt(ctx, ret); + } + } + if (a == &a_s) + bf_delete(a); + JS_FreeValue(ctx, val); + } + break; +#endif + default: + val = JS_ToNumberFree(ctx, val); + if (JS_IsException(val)) + return val; + goto redo; + } + return ret; +} + +/* Note: the integer value is satured to 32 bits */ +static int JS_ToInt32SatFree(JSContext *ctx, int *pres, JSValue val) +{ + uint32_t tag; + int ret; + + redo: + tag = JS_VALUE_GET_NORM_TAG(val); + switch(tag) { + case JS_TAG_INT: + case JS_TAG_BOOL: + case JS_TAG_NULL: + case JS_TAG_UNDEFINED: + ret = JS_VALUE_GET_INT(val); + break; + case JS_TAG_EXCEPTION: + *pres = 0; + return -1; + case JS_TAG_FLOAT64: + { + double d = JS_VALUE_GET_FLOAT64(val); + if (isnan(d)) { + ret = 0; + } else { + if (d < INT32_MIN) + ret = INT32_MIN; + else if (d > INT32_MAX) + ret = INT32_MAX; + else + ret = (int)d; + } + } + break; +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_FLOAT: + { + JSBigFloat *p = JS_VALUE_GET_PTR(val); + bf_get_int32(&ret, &p->num, 0); + JS_FreeValue(ctx, val); + } + break; +#endif + default: + val = JS_ToNumberFree(ctx, val); + if (JS_IsException(val)) { + *pres = 0; + return -1; + } + goto redo; + } + *pres = ret; + return 0; +} + +int JS_ToInt32Sat(JSContext *ctx, int *pres, JSValueConst val) +{ + return JS_ToInt32SatFree(ctx, pres, JS_DupValue(ctx, val)); +} + +int JS_ToInt32Clamp(JSContext *ctx, int *pres, JSValueConst val, + int min, int max, int min_offset) +{ + int res = JS_ToInt32SatFree(ctx, pres, JS_DupValue(ctx, val)); + if (res == 0) { + if (*pres < min) { + *pres += min_offset; + if (*pres < min) + *pres = min; + } else { + if (*pres > max) + *pres = max; + } + } + return res; +} + +static int JS_ToInt64SatFree(JSContext *ctx, int64_t *pres, JSValue val) +{ + uint32_t tag; + + redo: + tag = JS_VALUE_GET_NORM_TAG(val); + switch(tag) { + case JS_TAG_INT: + case JS_TAG_BOOL: + case JS_TAG_NULL: + case JS_TAG_UNDEFINED: + *pres = JS_VALUE_GET_INT(val); + return 0; + case JS_TAG_EXCEPTION: + *pres = 0; + return -1; + case JS_TAG_FLOAT64: + { + double d = JS_VALUE_GET_FLOAT64(val); + if (isnan(d)) { + *pres = 0; + } else { + if (d < INT64_MIN) + *pres = INT64_MIN; + else if (d > INT64_MAX) + *pres = INT64_MAX; + else + *pres = (int64_t)d; + } + } + return 0; +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_FLOAT: + { + JSBigFloat *p = JS_VALUE_GET_PTR(val); + bf_get_int64(pres, &p->num, 0); + JS_FreeValue(ctx, val); + } + return 0; +#endif + default: + val = JS_ToNumberFree(ctx, val); + if (JS_IsException(val)) { + *pres = 0; + return -1; + } + goto redo; + } +} + +int JS_ToInt64Sat(JSContext *ctx, int64_t *pres, JSValueConst val) +{ + return JS_ToInt64SatFree(ctx, pres, JS_DupValue(ctx, val)); +} + +int JS_ToInt64Clamp(JSContext *ctx, int64_t *pres, JSValueConst val, + int64_t min, int64_t max, int64_t neg_offset) +{ + int res = JS_ToInt64SatFree(ctx, pres, JS_DupValue(ctx, val)); + if (res == 0) { + if (*pres < 0) + *pres += neg_offset; + if (*pres < min) + *pres = min; + else if (*pres > max) + *pres = max; + } + return res; +} + +/* Same as JS_ToInt32Free() but with a 64 bit result. Return (<0, 0) + in case of exception */ +static int JS_ToInt64Free(JSContext *ctx, int64_t *pres, JSValue val) +{ + uint32_t tag; + int64_t ret; + + redo: + tag = JS_VALUE_GET_NORM_TAG(val); + switch(tag) { + case JS_TAG_INT: + case JS_TAG_BOOL: + case JS_TAG_NULL: + case JS_TAG_UNDEFINED: + ret = JS_VALUE_GET_INT(val); + break; + case JS_TAG_FLOAT64: + { + JSFloat64Union u; + double d; + int e; + d = JS_VALUE_GET_FLOAT64(val); + u.d = d; + /* we avoid doing fmod(x, 2^64) */ + e = (u.u64 >> 52) & 0x7ff; + if (likely(e <= (1023 + 62))) { + /* fast case */ + ret = (int64_t)d; + } else if (e <= (1023 + 62 + 53)) { + uint64_t v; + /* remainder modulo 2^64 */ + v = (u.u64 & (((uint64_t)1 << 52) - 1)) | ((uint64_t)1 << 52); + ret = v << ((e - 1023) - 52); + /* take the sign into account */ + if (u.u64 >> 63) + ret = -ret; + } else { + ret = 0; /* also handles NaN and +inf */ + } + } + break; +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_FLOAT: + { + JSBigFloat *p = JS_VALUE_GET_PTR(val); + bf_get_int64(&ret, &p->num, BF_GET_INT_MOD); + JS_FreeValue(ctx, val); + } + break; +#endif + default: + val = JS_ToNumberFree(ctx, val); + if (JS_IsException(val)) { + *pres = 0; + return -1; + } + goto redo; + } + *pres = ret; + return 0; +} + +int JS_ToInt64(JSContext *ctx, int64_t *pres, JSValueConst val) +{ + return JS_ToInt64Free(ctx, pres, JS_DupValue(ctx, val)); +} + +int JS_ToInt64Ext(JSContext *ctx, int64_t *pres, JSValueConst val) +{ + if (JS_IsBigInt(ctx, val)) + return JS_ToBigInt64(ctx, pres, val); + else + return JS_ToInt64(ctx, pres, val); +} + +/* return (<0, 0) in case of exception */ +static int JS_ToInt32Free(JSContext *ctx, int32_t *pres, JSValue val) +{ + uint32_t tag; + int32_t ret; + + redo: + tag = JS_VALUE_GET_NORM_TAG(val); + switch(tag) { + case JS_TAG_INT: + case JS_TAG_BOOL: + case JS_TAG_NULL: + case JS_TAG_UNDEFINED: + ret = JS_VALUE_GET_INT(val); + break; + case JS_TAG_FLOAT64: + { + JSFloat64Union u; + double d; + int e; + d = JS_VALUE_GET_FLOAT64(val); + u.d = d; + /* we avoid doing fmod(x, 2^32) */ + e = (u.u64 >> 52) & 0x7ff; + if (likely(e <= (1023 + 30))) { + /* fast case */ + ret = (int32_t)d; + } else if (e <= (1023 + 30 + 53)) { + uint64_t v; + /* remainder modulo 2^32 */ + v = (u.u64 & (((uint64_t)1 << 52) - 1)) | ((uint64_t)1 << 52); + v = v << ((e - 1023) - 52 + 32); + ret = v >> 32; + /* take the sign into account */ + if (u.u64 >> 63) + ret = -ret; + } else { + ret = 0; /* also handles NaN and +inf */ + } + } + break; +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_FLOAT: + { + JSBigFloat *p = JS_VALUE_GET_PTR(val); + bf_get_int32(&ret, &p->num, BF_GET_INT_MOD); + JS_FreeValue(ctx, val); + } + break; +#endif + default: + val = JS_ToNumberFree(ctx, val); + if (JS_IsException(val)) { + *pres = 0; + return -1; + } + goto redo; + } + *pres = ret; + return 0; +} + +int JS_ToInt32(JSContext *ctx, int32_t *pres, JSValueConst val) +{ + return JS_ToInt32Free(ctx, pres, JS_DupValue(ctx, val)); +} + +static inline int JS_ToUint32Free(JSContext *ctx, uint32_t *pres, JSValue val) +{ + return JS_ToInt32Free(ctx, (int32_t *)pres, val); +} + +static int JS_ToUint8ClampFree(JSContext *ctx, int32_t *pres, JSValue val) +{ + uint32_t tag; + int res; + + redo: + tag = JS_VALUE_GET_NORM_TAG(val); + switch(tag) { + case JS_TAG_INT: + case JS_TAG_BOOL: + case JS_TAG_NULL: + case JS_TAG_UNDEFINED: + res = JS_VALUE_GET_INT(val); +#ifdef CONFIG_BIGNUM + int_clamp: +#endif + res = max_int(0, min_int(255, res)); + break; + case JS_TAG_FLOAT64: + { + double d = JS_VALUE_GET_FLOAT64(val); + if (isnan(d)) { + res = 0; + } else { + if (d < 0) + res = 0; + else if (d > 255) + res = 255; + else + res = lrint(d); + } + } + break; +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_FLOAT: + { + JSBigFloat *p = JS_VALUE_GET_PTR(val); + bf_t r_s, *r = &r_s; + bf_init(ctx->bf_ctx, r); + bf_set(r, &p->num); + bf_rint(r, BF_RNDN); + bf_get_int32(&res, r, 0); + bf_delete(r); + JS_FreeValue(ctx, val); + } + goto int_clamp; +#endif + default: + val = JS_ToNumberFree(ctx, val); + if (JS_IsException(val)) { + *pres = 0; + return -1; + } + goto redo; + } + *pres = res; + return 0; +} + +static __exception int JS_ToArrayLengthFree(JSContext *ctx, uint32_t *plen, + JSValue val, BOOL is_array_ctor) +{ + uint32_t tag, len; + + tag = JS_VALUE_GET_TAG(val); + switch(tag) { + case JS_TAG_INT: + case JS_TAG_BOOL: + case JS_TAG_NULL: + { + int v; + v = JS_VALUE_GET_INT(val); + if (v < 0) + goto fail; + len = v; + } + break; +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_INT: + case JS_TAG_BIG_FLOAT: + { + JSBigFloat *p = JS_VALUE_GET_PTR(val); + bf_t a; + BOOL res; + bf_get_int32((int32_t *)&len, &p->num, BF_GET_INT_MOD); + bf_init(ctx->bf_ctx, &a); + bf_set_ui(&a, len); + res = bf_cmp_eq(&a, &p->num); + bf_delete(&a); + JS_FreeValue(ctx, val); + if (!res) + goto fail; + } + break; +#endif + default: + if (JS_TAG_IS_FLOAT64(tag)) { + double d; + d = JS_VALUE_GET_FLOAT64(val); + len = (uint32_t)d; + if (len != d) + goto fail; + } else { + uint32_t len1; + + if (is_array_ctor) { + val = JS_ToNumberFree(ctx, val); + if (JS_IsException(val)) + return -1; + /* cannot recurse because val is a number */ + if (JS_ToArrayLengthFree(ctx, &len, val, TRUE)) + return -1; + } else { + /* legacy behavior: must do the conversion twice and compare */ + if (JS_ToUint32(ctx, &len, val)) { + JS_FreeValue(ctx, val); + return -1; + } + val = JS_ToNumberFree(ctx, val); + if (JS_IsException(val)) + return -1; + /* cannot recurse because val is a number */ + if (JS_ToArrayLengthFree(ctx, &len1, val, FALSE)) + return -1; + if (len1 != len) { + fail: + JS_ThrowRangeError(ctx, "invalid array length"); + return -1; + } + } + } + break; + } + *plen = len; + return 0; +} + +#define MAX_SAFE_INTEGER (((int64_t)1 << 53) - 1) + +static BOOL is_safe_integer(double d) +{ + return isfinite(d) && floor(d) == d && + fabs(d) <= (double)MAX_SAFE_INTEGER; +} + +int JS_ToIndex(JSContext *ctx, uint64_t *plen, JSValueConst val) +{ + int64_t v; + if (JS_ToInt64Sat(ctx, &v, val)) + return -1; + if (v < 0 || v > MAX_SAFE_INTEGER) { + JS_ThrowRangeError(ctx, "invalid array index"); + *plen = 0; + return -1; + } + *plen = v; + return 0; +} + +/* convert a value to a length between 0 and MAX_SAFE_INTEGER. + return -1 for exception */ +static __exception int JS_ToLengthFree(JSContext *ctx, int64_t *plen, + JSValue val) +{ + int res = JS_ToInt64Clamp(ctx, plen, val, 0, MAX_SAFE_INTEGER, 0); + JS_FreeValue(ctx, val); + return res; +} + +/* Note: can return an exception */ +static int JS_NumberIsInteger(JSContext *ctx, JSValueConst val) +{ + double d; + if (!JS_IsNumber(val)) + return FALSE; + if (unlikely(JS_ToFloat64(ctx, &d, val))) + return -1; + return isfinite(d) && floor(d) == d; +} + +static BOOL JS_NumberIsNegativeOrMinusZero(JSContext *ctx, JSValueConst val) +{ + uint32_t tag; + + tag = JS_VALUE_GET_NORM_TAG(val); + switch(tag) { + case JS_TAG_INT: + { + int v; + v = JS_VALUE_GET_INT(val); + return (v < 0); + } + case JS_TAG_FLOAT64: + { + JSFloat64Union u; + u.d = JS_VALUE_GET_FLOAT64(val); + return (u.u64 >> 63); + } +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_INT: + { + JSBigFloat *p = JS_VALUE_GET_PTR(val); + /* Note: integer zeros are not necessarily positive */ + return p->num.sign && !bf_is_zero(&p->num); + } + case JS_TAG_BIG_FLOAT: + { + JSBigFloat *p = JS_VALUE_GET_PTR(val); + return p->num.sign; + } + break; + case JS_TAG_BIG_DECIMAL: + { + JSBigDecimal *p = JS_VALUE_GET_PTR(val); + return p->num.sign; + } + break; +#endif + default: + return FALSE; + } +} + +#ifdef CONFIG_BIGNUM + +static JSValue js_bigint_to_string1(JSContext *ctx, JSValueConst val, int radix) +{ + JSValue ret; + bf_t a_s, *a; + char *str; + int saved_sign; + + a = JS_ToBigInt(ctx, &a_s, val); + if (!a) + return JS_EXCEPTION; + saved_sign = a->sign; + if (a->expn == BF_EXP_ZERO) + a->sign = 0; + str = bf_ftoa(NULL, a, radix, 0, BF_RNDZ | BF_FTOA_FORMAT_FRAC | + BF_FTOA_JS_QUIRKS); + a->sign = saved_sign; + JS_FreeBigInt(ctx, a, &a_s); + if (!str) + return JS_ThrowOutOfMemory(ctx); + ret = JS_NewString(ctx, str); + bf_free(ctx->bf_ctx, str); + return ret; +} + +static JSValue js_bigint_to_string(JSContext *ctx, JSValueConst val) +{ + return js_bigint_to_string1(ctx, val, 10); +} + +static JSValue js_ftoa(JSContext *ctx, JSValueConst val1, int radix, + limb_t prec, bf_flags_t flags) +{ + JSValue val, ret; + bf_t a_s, *a; + char *str; + int saved_sign; + + val = JS_ToNumeric(ctx, val1); + if (JS_IsException(val)) + return val; + a = JS_ToBigFloat(ctx, &a_s, val); + saved_sign = a->sign; + if (a->expn == BF_EXP_ZERO) + a->sign = 0; + flags |= BF_FTOA_JS_QUIRKS; + if ((flags & BF_FTOA_FORMAT_MASK) == BF_FTOA_FORMAT_FREE_MIN) { + /* Note: for floating point numbers with a radix which is not + a power of two, the current precision is used to compute + the number of digits. */ + if ((radix & (radix - 1)) != 0) { + bf_t r_s, *r = &r_s; + int prec, flags1; + /* must round first */ + if (JS_VALUE_GET_TAG(val) == JS_TAG_BIG_FLOAT) { + prec = ctx->fp_env.prec; + flags1 = ctx->fp_env.flags & + (BF_FLAG_SUBNORMAL | (BF_EXP_BITS_MASK << BF_EXP_BITS_SHIFT)); + } else { + prec = 53; + flags1 = bf_set_exp_bits(11) | BF_FLAG_SUBNORMAL; + } + bf_init(ctx->bf_ctx, r); + bf_set(r, a); + bf_round(r, prec, flags1 | BF_RNDN); + str = bf_ftoa(NULL, r, radix, prec, flags1 | flags); + bf_delete(r); + } else { + str = bf_ftoa(NULL, a, radix, BF_PREC_INF, flags); + } + } else { + str = bf_ftoa(NULL, a, radix, prec, flags); + } + a->sign = saved_sign; + if (a == &a_s) + bf_delete(a); + JS_FreeValue(ctx, val); + if (!str) + return JS_ThrowOutOfMemory(ctx); + ret = JS_NewString(ctx, str); + bf_free(ctx->bf_ctx, str); + return ret; +} + +static JSValue js_bigfloat_to_string(JSContext *ctx, JSValueConst val) +{ + return js_ftoa(ctx, val, 10, 0, BF_RNDN | BF_FTOA_FORMAT_FREE_MIN); +} + +static JSValue js_bigdecimal_to_string1(JSContext *ctx, JSValueConst val, + limb_t prec, int flags) +{ + JSValue ret; + bfdec_t *a; + char *str; + int saved_sign; + + a = JS_ToBigDecimal(ctx, val); + saved_sign = a->sign; + if (a->expn == BF_EXP_ZERO) + a->sign = 0; + str = bfdec_ftoa(NULL, a, prec, flags | BF_FTOA_JS_QUIRKS); + a->sign = saved_sign; + if (!str) + return JS_ThrowOutOfMemory(ctx); + ret = JS_NewString(ctx, str); + bf_free(ctx->bf_ctx, str); + return ret; +} + +static JSValue js_bigdecimal_to_string(JSContext *ctx, JSValueConst val) +{ + return js_bigdecimal_to_string1(ctx, val, 0, + BF_RNDZ | BF_FTOA_FORMAT_FREE); +} + +#endif /* CONFIG_BIGNUM */ + +/* 2 <= base <= 36 */ +static char *i64toa(char *buf_end, int64_t n, unsigned int base) +{ + char *q = buf_end; + int digit, is_neg; + + is_neg = 0; + if (n < 0) { + is_neg = 1; + n = -n; + } + *--q = '\0'; + do { + digit = (uint64_t)n % base; + n = (uint64_t)n / base; + if (digit < 10) + digit += '0'; + else + digit += 'a' - 10; + *--q = digit; + } while (n != 0); + if (is_neg) + *--q = '-'; + return q; +} + +/* buf1 contains the printf result */ +static void js_ecvt1(double d, int n_digits, int *decpt, int *sign, char *buf, + int rounding_mode, char *buf1, int buf1_size) +{ + if (rounding_mode != FE_TONEAREST) + fesetround(rounding_mode); + snprintf(buf1, buf1_size, "%+.*e", n_digits - 1, d); + if (rounding_mode != FE_TONEAREST) + fesetround(FE_TONEAREST); + *sign = (buf1[0] == '-'); + /* mantissa */ + buf[0] = buf1[1]; + if (n_digits > 1) + memcpy(buf + 1, buf1 + 3, n_digits - 1); + buf[n_digits] = '\0'; + /* exponent */ + *decpt = atoi(buf1 + n_digits + 2 + (n_digits > 1)) + 1; +} + +/* maximum buffer size for js_dtoa */ +#define JS_DTOA_BUF_SIZE 128 + +/* needed because ecvt usually limits the number of digits to + 17. Return the number of digits. */ +static int js_ecvt(double d, int n_digits, int *decpt, int *sign, char *buf, + BOOL is_fixed) +{ + int rounding_mode; + char buf_tmp[JS_DTOA_BUF_SIZE]; + + if (!is_fixed) { + unsigned int n_digits_min, n_digits_max; + /* find the minimum amount of digits (XXX: inefficient but simple) */ + n_digits_min = 1; + n_digits_max = 17; + while (n_digits_min < n_digits_max) { + n_digits = (n_digits_min + n_digits_max) / 2; + js_ecvt1(d, n_digits, decpt, sign, buf, FE_TONEAREST, + buf_tmp, sizeof(buf_tmp)); + if (strtod(buf_tmp, NULL) == d) { + /* no need to keep the trailing zeros */ + while (n_digits >= 2 && buf[n_digits - 1] == '0') + n_digits--; + n_digits_max = n_digits; + } else { + n_digits_min = n_digits + 1; + } + } + n_digits = n_digits_max; + rounding_mode = FE_TONEAREST; + } else { + rounding_mode = FE_TONEAREST; +#ifdef CONFIG_PRINTF_RNDN + { + char buf1[JS_DTOA_BUF_SIZE], buf2[JS_DTOA_BUF_SIZE]; + int decpt1, sign1, decpt2, sign2; + /* The JS rounding is specified as round to nearest ties away + from zero (RNDNA), but in printf the "ties" case is not + specified (for example it is RNDN for glibc, RNDNA for + Windows), so we must round manually. */ + js_ecvt1(d, n_digits + 1, &decpt1, &sign1, buf1, FE_TONEAREST, + buf_tmp, sizeof(buf_tmp)); + /* XXX: could use 2 digits to reduce the average running time */ + if (buf1[n_digits] == '5') { + js_ecvt1(d, n_digits + 1, &decpt1, &sign1, buf1, FE_DOWNWARD, + buf_tmp, sizeof(buf_tmp)); + js_ecvt1(d, n_digits + 1, &decpt2, &sign2, buf2, FE_UPWARD, + buf_tmp, sizeof(buf_tmp)); + if (memcmp(buf1, buf2, n_digits + 1) == 0 && decpt1 == decpt2) { + /* exact result: round away from zero */ + if (sign1) + rounding_mode = FE_DOWNWARD; + else + rounding_mode = FE_UPWARD; + } + } + } +#endif /* CONFIG_PRINTF_RNDN */ + } + js_ecvt1(d, n_digits, decpt, sign, buf, rounding_mode, + buf_tmp, sizeof(buf_tmp)); + return n_digits; +} + +static int js_fcvt1(char *buf, int buf_size, double d, int n_digits, + int rounding_mode) +{ + int n; + if (rounding_mode != FE_TONEAREST) + fesetround(rounding_mode); + n = snprintf(buf, buf_size, "%.*f", n_digits, d); + if (rounding_mode != FE_TONEAREST) + fesetround(FE_TONEAREST); + assert(n < buf_size); + return n; +} + +static void js_fcvt(char *buf, int buf_size, double d, int n_digits) +{ + int rounding_mode; + rounding_mode = FE_TONEAREST; +#ifdef CONFIG_PRINTF_RNDN + { + int n1, n2; + char buf1[JS_DTOA_BUF_SIZE]; + char buf2[JS_DTOA_BUF_SIZE]; + + /* The JS rounding is specified as round to nearest ties away from + zero (RNDNA), but in printf the "ties" case is not specified + (for example it is RNDN for glibc, RNDNA for Windows), so we + must round manually. */ + n1 = js_fcvt1(buf1, sizeof(buf1), d, n_digits + 1, FE_TONEAREST); + rounding_mode = FE_TONEAREST; + /* XXX: could use 2 digits to reduce the average running time */ + if (buf1[n1 - 1] == '5') { + n1 = js_fcvt1(buf1, sizeof(buf1), d, n_digits + 1, FE_DOWNWARD); + n2 = js_fcvt1(buf2, sizeof(buf2), d, n_digits + 1, FE_UPWARD); + if (n1 == n2 && memcmp(buf1, buf2, n1) == 0) { + /* exact result: round away from zero */ + if (buf1[0] == '-') + rounding_mode = FE_DOWNWARD; + else + rounding_mode = FE_UPWARD; + } + } + } +#endif /* CONFIG_PRINTF_RNDN */ + js_fcvt1(buf, buf_size, d, n_digits, rounding_mode); +} + +/* radix != 10 is only supported with flags = JS_DTOA_VAR_FORMAT */ +/* use as many digits as necessary */ +#define JS_DTOA_VAR_FORMAT (0 << 0) +/* use n_digits significant digits (1 <= n_digits <= 101) */ +#define JS_DTOA_FIXED_FORMAT (1 << 0) +/* force fractional format: [-]dd.dd with n_digits fractional digits */ +#define JS_DTOA_FRAC_FORMAT (2 << 0) +/* force exponential notation either in fixed or variable format */ +#define JS_DTOA_FORCE_EXP (1 << 2) + +/* XXX: slow and maybe not fully correct. Use libbf when it is fast enough. + XXX: radix != 10 is only supported for small integers +*/ +static void js_dtoa1(char *buf, double d, int radix, int n_digits, int flags) +{ + char *q; + + if (!isfinite(d)) { + if (isnan(d)) { + strcpy(buf, "NaN"); + } else { + q = buf; + if (d < 0) + *q++ = '-'; + strcpy(q, "Infinity"); + } + } else if (flags == JS_DTOA_VAR_FORMAT) { + int64_t i64; + char buf1[70], *ptr; + i64 = (int64_t)d; + if (d != i64 || i64 > MAX_SAFE_INTEGER || i64 < -MAX_SAFE_INTEGER) + goto generic_conv; + /* fast path for integers */ + ptr = i64toa(buf1 + sizeof(buf1), i64, radix); + strcpy(buf, ptr); + } else { + if (d == 0.0) + d = 0.0; /* convert -0 to 0 */ + if (flags == JS_DTOA_FRAC_FORMAT) { + js_fcvt(buf, JS_DTOA_BUF_SIZE, d, n_digits); + } else { + char buf1[JS_DTOA_BUF_SIZE]; + int sign, decpt, k, n, i, p, n_max; + BOOL is_fixed; + generic_conv: + is_fixed = ((flags & 3) == JS_DTOA_FIXED_FORMAT); + if (is_fixed) { + n_max = n_digits; + } else { + n_max = 21; + } + /* the number has k digits (k >= 1) */ + k = js_ecvt(d, n_digits, &decpt, &sign, buf1, is_fixed); + n = decpt; /* d=10^(n-k)*(buf1) i.e. d= < x.yyyy 10^(n-1) */ + q = buf; + if (sign) + *q++ = '-'; + if (flags & JS_DTOA_FORCE_EXP) + goto force_exp; + if (n >= 1 && n <= n_max) { + if (k <= n) { + memcpy(q, buf1, k); + q += k; + for(i = 0; i < (n - k); i++) + *q++ = '0'; + *q = '\0'; + } else { + /* k > n */ + memcpy(q, buf1, n); + q += n; + *q++ = '.'; + for(i = 0; i < (k - n); i++) + *q++ = buf1[n + i]; + *q = '\0'; + } + } else if (n >= -5 && n <= 0) { + *q++ = '0'; + *q++ = '.'; + for(i = 0; i < -n; i++) + *q++ = '0'; + memcpy(q, buf1, k); + q += k; + *q = '\0'; + } else { + force_exp: + /* exponential notation */ + *q++ = buf1[0]; + if (k > 1) { + *q++ = '.'; + for(i = 1; i < k; i++) + *q++ = buf1[i]; + } + *q++ = 'e'; + p = n - 1; + if (p >= 0) + *q++ = '+'; + sprintf(q, "%d", p); + } + } + } +} + +static JSValue js_dtoa(JSContext *ctx, + double d, int radix, int n_digits, int flags) +{ + char buf[JS_DTOA_BUF_SIZE]; + js_dtoa1(buf, d, radix, n_digits, flags); + return JS_NewString(ctx, buf); +} + +JSValue JS_ToStringInternal(JSContext *ctx, JSValueConst val, BOOL is_ToPropertyKey) +{ + uint32_t tag; + const char *str; + char buf[32]; + + tag = JS_VALUE_GET_NORM_TAG(val); + switch(tag) { + case JS_TAG_STRING: + return JS_DupValue(ctx, val); + case JS_TAG_INT: + snprintf(buf, sizeof(buf), "%d", JS_VALUE_GET_INT(val)); + str = buf; + goto new_string; + case JS_TAG_BOOL: + return JS_AtomToString(ctx, JS_VALUE_GET_BOOL(val) ? + JS_ATOM_true : JS_ATOM_false); + case JS_TAG_NULL: + return JS_AtomToString(ctx, JS_ATOM_null); + case JS_TAG_UNDEFINED: + return JS_AtomToString(ctx, JS_ATOM_undefined); + case JS_TAG_EXCEPTION: + return JS_EXCEPTION; + case JS_TAG_OBJECT: + { + JSValue val1, ret; + val1 = JS_ToPrimitive(ctx, val, HINT_STRING); + if (JS_IsException(val1)) + return val1; + ret = JS_ToStringInternal(ctx, val1, is_ToPropertyKey); + JS_FreeValue(ctx, val1); + return ret; + } + break; + case JS_TAG_FUNCTION_BYTECODE: + str = "[function bytecode]"; + goto new_string; + case JS_TAG_SYMBOL: + if (is_ToPropertyKey) { + return JS_DupValue(ctx, val); + } else { + return JS_ThrowTypeError(ctx, "cannot convert symbol to string"); + } + case JS_TAG_FLOAT64: + return js_dtoa(ctx, JS_VALUE_GET_FLOAT64(val), 10, 0, + JS_DTOA_VAR_FORMAT); +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_INT: + return ctx->rt->bigint_ops.to_string(ctx, val); + case JS_TAG_BIG_FLOAT: + return ctx->rt->bigfloat_ops.to_string(ctx, val); + case JS_TAG_BIG_DECIMAL: + return ctx->rt->bigdecimal_ops.to_string(ctx, val); +#endif + default: + str = "[unsupported type]"; + new_string: + return JS_NewString(ctx, str); + } +} + +JSValue JS_ToString(JSContext *ctx, JSValueConst val) +{ + return JS_ToStringInternal(ctx, val, FALSE); +} + +static JSValue JS_ToStringFree(JSContext *ctx, JSValue val) +{ + JSValue ret; + ret = JS_ToString(ctx, val); + JS_FreeValue(ctx, val); + return ret; +} + +static JSValue JS_ToLocaleStringFree(JSContext *ctx, JSValue val) +{ + if (JS_IsUndefined(val) || JS_IsNull(val)) + return JS_ToStringFree(ctx, val); + return JS_InvokeFree(ctx, val, JS_ATOM_toLocaleString, 0, NULL); +} + +JSValue JS_ToPropertyKey(JSContext *ctx, JSValueConst val) +{ + return JS_ToStringInternal(ctx, val, TRUE); +} + +static JSValue JS_ToStringCheckObject(JSContext *ctx, JSValueConst val) +{ + uint32_t tag = JS_VALUE_GET_TAG(val); + if (tag == JS_TAG_NULL || tag == JS_TAG_UNDEFINED) + return JS_ThrowTypeError(ctx, "null or undefined are forbidden"); + return JS_ToString(ctx, val); +} + +static JSValue JS_ToQuotedString(JSContext *ctx, JSValueConst val1) +{ + JSValue val; + JSString *p; + int i; + uint32_t c; + StringBuffer b_s, *b = &b_s; + char buf[16]; + + val = JS_ToStringCheckObject(ctx, val1); + if (JS_IsException(val)) + return val; + p = JS_VALUE_GET_STRING(val); + + if (string_buffer_init(ctx, b, p->len + 2)) + goto fail; + + if (string_buffer_putc8(b, '\"')) + goto fail; + for(i = 0; i < p->len; ) { + c = string_getc(p, &i); + switch(c) { + case '\t': + c = 't'; + goto quote; + case '\r': + c = 'r'; + goto quote; + case '\n': + c = 'n'; + goto quote; + case '\b': + c = 'b'; + goto quote; + case '\f': + c = 'f'; + goto quote; + case '\"': + case '\\': + quote: + if (string_buffer_putc8(b, '\\')) + goto fail; + if (string_buffer_putc8(b, c)) + goto fail; + break; + default: + if (c < 32 || (c >= 0xd800 && c < 0xe000)) { + snprintf(buf, sizeof(buf), "\\u%04x", c); + if (string_buffer_puts8(b, buf)) + goto fail; + } else { + if (string_buffer_putc(b, c)) + goto fail; + } + break; + } + } + if (string_buffer_putc8(b, '\"')) + goto fail; + JS_FreeValue(ctx, val); + return string_buffer_end(b); + fail: + JS_FreeValue(ctx, val); + string_buffer_free(b); + return JS_EXCEPTION; +} + +static __maybe_unused void JS_DumpObjectHeader(JSRuntime *rt) +{ + printf("%14s %4s %4s %14s %10s %s\n", + "ADDRESS", "REFS", "SHRF", "PROTO", "CLASS", "PROPS"); +} + +/* for debug only: dump an object without side effect */ +static __maybe_unused void JS_DumpObject(JSRuntime *rt, JSObject *p) +{ + uint32_t i; + char atom_buf[ATOM_GET_STR_BUF_SIZE]; + JSShape *sh; + JSShapeProperty *prs; + JSProperty *pr; + BOOL is_first = TRUE; + + /* XXX: should encode atoms with special characters */ + sh = p->shape; /* the shape can be NULL while freeing an object */ + printf("%14p %4d ", + (void *)p, + p->header.ref_count); + if (sh) { + printf("%3d%c %14p ", + sh->header.ref_count, + " *"[sh->is_hashed], + (void *)sh->proto); + } else { + printf("%3s %14s ", "-", "-"); + } + printf("%10s ", + JS_AtomGetStrRT(rt, atom_buf, sizeof(atom_buf), rt->class_array[p->class_id].class_name)); + if (p->is_exotic && p->fast_array) { + printf("[ "); + for(i = 0; i < p->u.array.count; i++) { + if (i != 0) + printf(", "); + switch (p->class_id) { + case JS_CLASS_ARRAY: + case JS_CLASS_ARGUMENTS: + JS_DumpValueShort(rt, p->u.array.u.values[i]); + break; + case JS_CLASS_UINT8C_ARRAY: + case JS_CLASS_INT8_ARRAY: + case JS_CLASS_UINT8_ARRAY: + case JS_CLASS_INT16_ARRAY: + case JS_CLASS_UINT16_ARRAY: + case JS_CLASS_INT32_ARRAY: + case JS_CLASS_UINT32_ARRAY: +#ifdef CONFIG_BIGNUM + case JS_CLASS_BIG_INT64_ARRAY: + case JS_CLASS_BIG_UINT64_ARRAY: +#endif + case JS_CLASS_FLOAT32_ARRAY: + case JS_CLASS_FLOAT64_ARRAY: + { + int size = 1 << typed_array_size_log2(p->class_id); + const uint8_t *b = p->u.array.u.uint8_ptr + i * size; + while (size-- > 0) + printf("%02X", *b++); + } + break; + } + } + printf(" ] "); + } + + if (sh) { + printf("{ "); + for(i = 0, prs = get_shape_prop(sh); i < sh->prop_count; i++, prs++) { + if (prs->atom != JS_ATOM_NULL) { + pr = &p->prop[i]; + if (!is_first) + printf(", "); + printf("%s: ", + JS_AtomGetStrRT(rt, atom_buf, sizeof(atom_buf), prs->atom)); + if ((prs->flags & JS_PROP_TMASK) == JS_PROP_GETSET) { + printf("[getset %p %p]", (void *)pr->u.getset.getter, + (void *)pr->u.getset.setter); + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_VARREF) { + printf("[varref %p]", (void *)pr->u.var_ref); + } else if ((prs->flags & JS_PROP_TMASK) == JS_PROP_AUTOINIT) { + printf("[autoinit %p %d %p]", + (void *)js_autoinit_get_realm(pr), + js_autoinit_get_id(pr), + (void *)pr->u.init.opaque); + } else { + JS_DumpValueShort(rt, pr->u.value); + } + is_first = FALSE; + } + } + printf(" }"); + } + + if (js_class_has_bytecode(p->class_id)) { + JSFunctionBytecode *b = p->u.func.function_bytecode; + JSVarRef **var_refs; + if (b->closure_var_count) { + var_refs = p->u.func.var_refs; + printf(" Closure:"); + for(i = 0; i < b->closure_var_count; i++) { + printf(" "); + JS_DumpValueShort(rt, var_refs[i]->value); + } + if (p->u.func.home_object) { + printf(" HomeObject: "); + JS_DumpValueShort(rt, JS_MKPTR(JS_TAG_OBJECT, p->u.func.home_object)); + } + } + } + printf("\n"); +} + +static __maybe_unused void JS_DumpGCObject(JSRuntime *rt, JSGCObjectHeader *p) +{ + if (p->gc_obj_type == JS_GC_OBJ_TYPE_JS_OBJECT) { + JS_DumpObject(rt, (JSObject *)p); + } else { + printf("%14p %4d ", + (void *)p, + p->ref_count); + switch(p->gc_obj_type) { + case JS_GC_OBJ_TYPE_FUNCTION_BYTECODE: + printf("[function bytecode]"); + break; + case JS_GC_OBJ_TYPE_SHAPE: + printf("[shape]"); + break; + case JS_GC_OBJ_TYPE_VAR_REF: + printf("[var_ref]"); + break; + case JS_GC_OBJ_TYPE_ASYNC_FUNCTION: + printf("[async_function]"); + break; + case JS_GC_OBJ_TYPE_JS_CONTEXT: + printf("[js_context]"); + break; + default: + printf("[unknown %d]", p->gc_obj_type); + break; + } + printf("\n"); + } +} + +static __maybe_unused void JS_DumpValueShort(JSRuntime *rt, + JSValueConst val) +{ + uint32_t tag = JS_VALUE_GET_NORM_TAG(val); + const char *str; + + switch(tag) { + case JS_TAG_INT: + printf("%d", JS_VALUE_GET_INT(val)); + break; + case JS_TAG_BOOL: + if (JS_VALUE_GET_BOOL(val)) + str = "true"; + else + str = "false"; + goto print_str; + case JS_TAG_NULL: + str = "null"; + goto print_str; + case JS_TAG_EXCEPTION: + str = "exception"; + goto print_str; + case JS_TAG_UNINITIALIZED: + str = "uninitialized"; + goto print_str; + case JS_TAG_UNDEFINED: + str = "undefined"; + print_str: + printf("%s", str); + break; + case JS_TAG_FLOAT64: + printf("%.14g", JS_VALUE_GET_FLOAT64(val)); + break; +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_INT: + { + JSBigFloat *p = JS_VALUE_GET_PTR(val); + char *str; + str = bf_ftoa(NULL, &p->num, 10, 0, + BF_RNDZ | BF_FTOA_FORMAT_FRAC); + printf("%sn", str); + bf_realloc(&rt->bf_ctx, str, 0); + } + break; + case JS_TAG_BIG_FLOAT: + { + JSBigFloat *p = JS_VALUE_GET_PTR(val); + char *str; + str = bf_ftoa(NULL, &p->num, 16, BF_PREC_INF, + BF_RNDZ | BF_FTOA_FORMAT_FREE | BF_FTOA_ADD_PREFIX); + printf("%sl", str); + bf_free(&rt->bf_ctx, str); + } + break; + case JS_TAG_BIG_DECIMAL: + { + JSBigDecimal *p = JS_VALUE_GET_PTR(val); + char *str; + str = bfdec_ftoa(NULL, &p->num, BF_PREC_INF, + BF_RNDZ | BF_FTOA_FORMAT_FREE); + printf("%sm", str); + bf_free(&rt->bf_ctx, str); + } + break; +#endif + case JS_TAG_STRING: + { + JSString *p; + p = JS_VALUE_GET_STRING(val); + JS_DumpString(rt, p); + } + break; + case JS_TAG_FUNCTION_BYTECODE: + { + JSFunctionBytecode *b = JS_VALUE_GET_PTR(val); + char buf[ATOM_GET_STR_BUF_SIZE]; + printf("[bytecode %s]", JS_AtomGetStrRT(rt, buf, sizeof(buf), b->func_name)); + } + break; + case JS_TAG_OBJECT: + { + JSObject *p = JS_VALUE_GET_OBJ(val); + JSAtom atom = rt->class_array[p->class_id].class_name; + char atom_buf[ATOM_GET_STR_BUF_SIZE]; + printf("[%s %p]", + JS_AtomGetStrRT(rt, atom_buf, sizeof(atom_buf), atom), (void *)p); + } + break; + case JS_TAG_SYMBOL: + { + JSAtomStruct *p = JS_VALUE_GET_PTR(val); + char atom_buf[ATOM_GET_STR_BUF_SIZE]; + printf("Symbol(%s)", + JS_AtomGetStrRT(rt, atom_buf, sizeof(atom_buf), js_get_atom_index(rt, p))); + } + break; + case JS_TAG_MODULE: + printf("[module]"); + break; + default: + printf("[unknown tag %d]", tag); + break; + } +} + +static __maybe_unused void JS_DumpValue(JSContext *ctx, + JSValueConst val) +{ + JS_DumpValueShort(ctx->rt, val); +} + +static __maybe_unused void JS_PrintValue(JSContext *ctx, + const char *str, + JSValueConst val) +{ + printf("%s=", str); + JS_DumpValueShort(ctx->rt, val); + printf("\n"); +} + +/* return -1 if exception (proxy case) or TRUE/FALSE */ +int JS_IsArray(JSContext *ctx, JSValueConst val) +{ + JSObject *p; + if (JS_VALUE_GET_TAG(val) == JS_TAG_OBJECT) { + p = JS_VALUE_GET_OBJ(val); + if (unlikely(p->class_id == JS_CLASS_PROXY)) + return js_proxy_isArray(ctx, val); + else + return p->class_id == JS_CLASS_ARRAY; + } else { + return FALSE; + } +} + +static double js_pow(double a, double b) +{ + if (unlikely(!isfinite(b)) && fabs(a) == 1) { + /* not compatible with IEEE 754 */ + return JS_FLOAT64_NAN; + } else { + return pow(a, b); + } +} + +#ifdef CONFIG_BIGNUM + +JSValue JS_NewBigInt64_1(JSContext *ctx, int64_t v) +{ + JSValue val; + bf_t *a; + val = JS_NewBigInt(ctx); + if (JS_IsException(val)) + return val; + a = JS_GetBigInt(val); + if (bf_set_si(a, v)) { + JS_FreeValue(ctx, val); + return JS_ThrowOutOfMemory(ctx); + } + return val; +} + +JSValue JS_NewBigInt64(JSContext *ctx, int64_t v) +{ + if (is_math_mode(ctx) && + v >= -MAX_SAFE_INTEGER && v <= MAX_SAFE_INTEGER) { + return JS_NewInt64(ctx, v); + } else { + return JS_NewBigInt64_1(ctx, v); + } +} + +JSValue JS_NewBigUint64(JSContext *ctx, uint64_t v) +{ + JSValue val; + if (is_math_mode(ctx) && v <= MAX_SAFE_INTEGER) { + val = JS_NewInt64(ctx, v); + } else { + bf_t *a; + val = JS_NewBigInt(ctx); + if (JS_IsException(val)) + return val; + a = JS_GetBigInt(val); + if (bf_set_ui(a, v)) { + JS_FreeValue(ctx, val); + return JS_ThrowOutOfMemory(ctx); + } + } + return val; +} + +/* if the returned bigfloat is allocated it is equal to + 'buf'. Otherwise it is a pointer to the bigfloat in 'val'. Return + NULL in case of error. */ +static bf_t *JS_ToBigFloat(JSContext *ctx, bf_t *buf, JSValueConst val) +{ + uint32_t tag; + bf_t *r; + JSBigFloat *p; + + tag = JS_VALUE_GET_NORM_TAG(val); + switch(tag) { + case JS_TAG_INT: + case JS_TAG_BOOL: + case JS_TAG_NULL: + r = buf; + bf_init(ctx->bf_ctx, r); + if (bf_set_si(r, JS_VALUE_GET_INT(val))) + goto fail; + break; + case JS_TAG_FLOAT64: + r = buf; + bf_init(ctx->bf_ctx, r); + if (bf_set_float64(r, JS_VALUE_GET_FLOAT64(val))) { + fail: + bf_delete(r); + return NULL; + } + break; + case JS_TAG_BIG_INT: + case JS_TAG_BIG_FLOAT: + p = JS_VALUE_GET_PTR(val); + r = &p->num; + break; + case JS_TAG_UNDEFINED: + default: + r = buf; + bf_init(ctx->bf_ctx, r); + bf_set_nan(r); + break; + } + return r; +} + +/* return NULL if invalid type */ +static bfdec_t *JS_ToBigDecimal(JSContext *ctx, JSValueConst val) +{ + uint32_t tag; + JSBigDecimal *p; + bfdec_t *r; + + tag = JS_VALUE_GET_NORM_TAG(val); + switch(tag) { + case JS_TAG_BIG_DECIMAL: + p = JS_VALUE_GET_PTR(val); + r = &p->num; + break; + default: + JS_ThrowTypeError(ctx, "bigdecimal expected"); + r = NULL; + break; + } + return r; +} + +/* return NaN if bad bigint literal */ +static JSValue JS_StringToBigInt(JSContext *ctx, JSValue val) +{ + const char *str, *p; + size_t len; + int flags; + + str = JS_ToCStringLen(ctx, &len, val); + JS_FreeValue(ctx, val); + if (!str) + return JS_EXCEPTION; + p = str; + p += skip_spaces(p); + if ((p - str) == len) { + val = JS_NewBigInt64(ctx, 0); + } else { + flags = ATOD_INT_ONLY | ATOD_ACCEPT_BIN_OCT | ATOD_TYPE_BIG_INT; + if (is_math_mode(ctx)) + flags |= ATOD_MODE_BIGINT; + val = js_atof(ctx, p, &p, 0, flags); + p += skip_spaces(p); + if (!JS_IsException(val)) { + if ((p - str) != len) { + JS_FreeValue(ctx, val); + val = JS_NAN; + } + } + } + JS_FreeCString(ctx, str); + return val; +} + +static JSValue JS_StringToBigIntErr(JSContext *ctx, JSValue val) +{ + val = JS_StringToBigInt(ctx, val); + if (JS_VALUE_IS_NAN(val)) + return JS_ThrowSyntaxError(ctx, "invalid bigint literal"); + return val; +} + +/* if the returned bigfloat is allocated it is equal to + 'buf'. Otherwise it is a pointer to the bigfloat in 'val'. */ +static bf_t *JS_ToBigIntFree(JSContext *ctx, bf_t *buf, JSValue val) +{ + uint32_t tag; + bf_t *r; + JSBigFloat *p; + + redo: + tag = JS_VALUE_GET_NORM_TAG(val); + switch(tag) { + case JS_TAG_INT: + case JS_TAG_NULL: + case JS_TAG_UNDEFINED: + if (!is_math_mode(ctx)) + goto fail; + /* fall tru */ + case JS_TAG_BOOL: + r = buf; + bf_init(ctx->bf_ctx, r); + bf_set_si(r, JS_VALUE_GET_INT(val)); + break; + case JS_TAG_FLOAT64: + { + double d = JS_VALUE_GET_FLOAT64(val); + if (!is_math_mode(ctx)) + goto fail; + if (!isfinite(d)) + goto fail; + r = buf; + bf_init(ctx->bf_ctx, r); + d = trunc(d); + bf_set_float64(r, d); + } + break; + case JS_TAG_BIG_INT: + p = JS_VALUE_GET_PTR(val); + r = &p->num; + break; + case JS_TAG_BIG_FLOAT: + if (!is_math_mode(ctx)) + goto fail; + p = JS_VALUE_GET_PTR(val); + if (!bf_is_finite(&p->num)) + goto fail; + r = buf; + bf_init(ctx->bf_ctx, r); + bf_set(r, &p->num); + bf_rint(r, BF_RNDZ); + JS_FreeValue(ctx, val); + break; + case JS_TAG_STRING: + val = JS_StringToBigIntErr(ctx, val); + if (JS_IsException(val)) + return NULL; + goto redo; + case JS_TAG_OBJECT: + val = JS_ToPrimitiveFree(ctx, val, HINT_NUMBER); + if (JS_IsException(val)) + return NULL; + goto redo; + default: + fail: + JS_FreeValue(ctx, val); + JS_ThrowTypeError(ctx, "cannot convert to bigint"); + return NULL; + } + return r; +} + +static bf_t *JS_ToBigInt(JSContext *ctx, bf_t *buf, JSValueConst val) +{ + return JS_ToBigIntFree(ctx, buf, JS_DupValue(ctx, val)); +} + +static __maybe_unused JSValue JS_ToBigIntValueFree(JSContext *ctx, JSValue val) +{ + if (JS_VALUE_GET_TAG(val) == JS_TAG_BIG_INT) { + return val; + } else { + bf_t a_s, *a, *r; + int ret; + JSValue res; + + res = JS_NewBigInt(ctx); + if (JS_IsException(res)) + return JS_EXCEPTION; + a = JS_ToBigIntFree(ctx, &a_s, val); + if (!a) { + JS_FreeValue(ctx, res); + return JS_EXCEPTION; + } + r = JS_GetBigInt(res); + ret = bf_set(r, a); + JS_FreeBigInt(ctx, a, &a_s); + if (ret) { + JS_FreeValue(ctx, res); + return JS_ThrowOutOfMemory(ctx); + } + return JS_CompactBigInt(ctx, res); + } +} + +/* free the bf_t allocated by JS_ToBigInt */ +static void JS_FreeBigInt(JSContext *ctx, bf_t *a, bf_t *buf) +{ + if (a == buf) { + bf_delete(a); + } else { + JSBigFloat *p = (JSBigFloat *)((uint8_t *)a - + offsetof(JSBigFloat, num)); + JS_FreeValue(ctx, JS_MKPTR(JS_TAG_BIG_FLOAT, p)); + } +} + +/* XXX: merge with JS_ToInt64Free with a specific flag */ +static int JS_ToBigInt64Free(JSContext *ctx, int64_t *pres, JSValue val) +{ + bf_t a_s, *a; + + a = JS_ToBigIntFree(ctx, &a_s, val); + if (!a) { + *pres = 0; + return -1; + } + bf_get_int64(pres, a, BF_GET_INT_MOD); + JS_FreeBigInt(ctx, a, &a_s); + return 0; +} + +int JS_ToBigInt64(JSContext *ctx, int64_t *pres, JSValueConst val) +{ + return JS_ToBigInt64Free(ctx, pres, JS_DupValue(ctx, val)); +} + +static JSBigFloat *js_new_bf(JSContext *ctx) +{ + JSBigFloat *p; + p = js_malloc(ctx, sizeof(*p)); + if (!p) + return NULL; + p->header.ref_count = 1; + bf_init(ctx->bf_ctx, &p->num); + return p; +} + +static JSValue JS_NewBigFloat(JSContext *ctx) +{ + JSBigFloat *p; + p = js_malloc(ctx, sizeof(*p)); + if (!p) + return JS_EXCEPTION; + p->header.ref_count = 1; + bf_init(ctx->bf_ctx, &p->num); + return JS_MKPTR(JS_TAG_BIG_FLOAT, p); +} + +static JSValue JS_NewBigDecimal(JSContext *ctx) +{ + JSBigDecimal *p; + p = js_malloc(ctx, sizeof(*p)); + if (!p) + return JS_EXCEPTION; + p->header.ref_count = 1; + bfdec_init(ctx->bf_ctx, &p->num); + return JS_MKPTR(JS_TAG_BIG_DECIMAL, p); +} + +static JSValue JS_NewBigInt(JSContext *ctx) +{ + JSBigFloat *p; + p = js_malloc(ctx, sizeof(*p)); + if (!p) + return JS_EXCEPTION; + p->header.ref_count = 1; + bf_init(ctx->bf_ctx, &p->num); + return JS_MKPTR(JS_TAG_BIG_INT, p); +} + +static JSValue JS_CompactBigInt1(JSContext *ctx, JSValue val, + BOOL convert_to_safe_integer) +{ + int64_t v; + bf_t *a; + + if (JS_VALUE_GET_TAG(val) != JS_TAG_BIG_INT) + return val; /* fail safe */ + a = JS_GetBigInt(val); + if (convert_to_safe_integer && bf_get_int64(&v, a, 0) == 0 && + v >= -MAX_SAFE_INTEGER && v <= MAX_SAFE_INTEGER) { + JS_FreeValue(ctx, val); + return JS_NewInt64(ctx, v); + } else if (a->expn == BF_EXP_ZERO && a->sign) { + JSBigFloat *p = JS_VALUE_GET_PTR(val); + assert(p->header.ref_count == 1); + a->sign = 0; + } + return val; +} + +/* Convert the big int to a safe integer if in math mode. normalize + the zero representation. Could also be used to convert the bigint + to a short bigint value. The reference count of the value must be + 1. Cannot fail */ +static JSValue JS_CompactBigInt(JSContext *ctx, JSValue val) +{ + return JS_CompactBigInt1(ctx, val, is_math_mode(ctx)); +} + +/* must be kept in sync with JSOverloadableOperatorEnum */ +/* XXX: use atoms ? */ +static const char js_overloadable_operator_names[JS_OVOP_COUNT][4] = { + "+", + "-", + "*", + "/", + "%", + "**", + "|", + "&", + "^", + "<<", + ">>", + ">>>", + "==", + "<", + "pos", + "neg", + "++", + "--", + "~", +}; + +static int get_ovop_from_opcode(OPCodeEnum op) +{ + switch(op) { + case OP_add: + return JS_OVOP_ADD; + case OP_sub: + return JS_OVOP_SUB; + case OP_mul: + return JS_OVOP_MUL; + case OP_div: + return JS_OVOP_DIV; + case OP_mod: + case OP_math_mod: + return JS_OVOP_MOD; + case OP_pow: + return JS_OVOP_POW; + case OP_or: + return JS_OVOP_OR; + case OP_and: + return JS_OVOP_AND; + case OP_xor: + return JS_OVOP_XOR; + case OP_shl: + return JS_OVOP_SHL; + case OP_sar: + return JS_OVOP_SAR; + case OP_shr: + return JS_OVOP_SHR; + case OP_eq: + case OP_neq: + return JS_OVOP_EQ; + case OP_lt: + case OP_lte: + case OP_gt: + case OP_gte: + return JS_OVOP_LESS; + case OP_plus: + return JS_OVOP_POS; + case OP_neg: + return JS_OVOP_NEG; + case OP_inc: + return JS_OVOP_INC; + case OP_dec: + return JS_OVOP_DEC; + default: + abort(); + } +} + +/* return NULL if not present */ +static JSObject *find_binary_op(JSBinaryOperatorDef *def, + uint32_t operator_index, + JSOverloadableOperatorEnum op) +{ + JSBinaryOperatorDefEntry *ent; + int i; + for(i = 0; i < def->count; i++) { + ent = &def->tab[i]; + if (ent->operator_index == operator_index) + return ent->ops[op]; + } + return NULL; +} + +/* return -1 if exception, 0 if no operator overloading, 1 if + overloaded operator called */ +static __exception int js_call_binary_op_fallback(JSContext *ctx, + JSValue *pret, + JSValueConst op1, + JSValueConst op2, + OPCodeEnum op, + BOOL is_numeric, + int hint) +{ + JSValue opset1_obj, opset2_obj, method, ret, new_op1, new_op2; + JSOperatorSetData *opset1, *opset2; + JSOverloadableOperatorEnum ovop; + JSObject *p; + JSValueConst args[2]; + + if (!ctx->allow_operator_overloading) + return 0; + + opset2_obj = JS_UNDEFINED; + opset1_obj = JS_GetProperty(ctx, op1, JS_ATOM_Symbol_operatorSet); + if (JS_IsException(opset1_obj)) + goto exception; + if (JS_IsUndefined(opset1_obj)) + return 0; + opset1 = JS_GetOpaque2(ctx, opset1_obj, JS_CLASS_OPERATOR_SET); + if (!opset1) + goto exception; + + opset2_obj = JS_GetProperty(ctx, op2, JS_ATOM_Symbol_operatorSet); + if (JS_IsException(opset2_obj)) + goto exception; + if (JS_IsUndefined(opset2_obj)) { + JS_FreeValue(ctx, opset1_obj); + return 0; + } + opset2 = JS_GetOpaque2(ctx, opset2_obj, JS_CLASS_OPERATOR_SET); + if (!opset2) + goto exception; + + if (opset1->is_primitive && opset2->is_primitive) { + JS_FreeValue(ctx, opset1_obj); + JS_FreeValue(ctx, opset2_obj); + return 0; + } + + ovop = get_ovop_from_opcode(op); + + if (opset1->operator_counter == opset2->operator_counter) { + p = opset1->self_ops[ovop]; + } else if (opset1->operator_counter > opset2->operator_counter) { + p = find_binary_op(&opset1->left, opset2->operator_counter, ovop); + } else { + p = find_binary_op(&opset2->right, opset1->operator_counter, ovop); + } + if (!p) { + JS_ThrowTypeError(ctx, "operator %s: no function defined", + js_overloadable_operator_names[ovop]); + goto exception; + } + + if (opset1->is_primitive) { + if (is_numeric) { + new_op1 = JS_ToNumeric(ctx, op1); + } else { + new_op1 = JS_ToPrimitive(ctx, op1, hint); + } + if (JS_IsException(new_op1)) + goto exception; + } else { + new_op1 = JS_DupValue(ctx, op1); + } + + if (opset2->is_primitive) { + if (is_numeric) { + new_op2 = JS_ToNumeric(ctx, op2); + } else { + new_op2 = JS_ToPrimitive(ctx, op2, hint); + } + if (JS_IsException(new_op2)) { + JS_FreeValue(ctx, new_op1); + goto exception; + } + } else { + new_op2 = JS_DupValue(ctx, op2); + } + + /* XXX: could apply JS_ToPrimitive() if primitive type so that the + operator function does not get a value object */ + + method = JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, p)); + if (ovop == JS_OVOP_LESS && (op == OP_lte || op == OP_gt)) { + args[0] = new_op2; + args[1] = new_op1; + } else { + args[0] = new_op1; + args[1] = new_op2; + } + ret = JS_CallFree(ctx, method, JS_UNDEFINED, 2, args); + JS_FreeValue(ctx, new_op1); + JS_FreeValue(ctx, new_op2); + if (JS_IsException(ret)) + goto exception; + if (ovop == JS_OVOP_EQ) { + BOOL res = JS_ToBoolFree(ctx, ret); + if (op == OP_neq) + res ^= 1; + ret = JS_NewBool(ctx, res); + } else if (ovop == JS_OVOP_LESS) { + if (JS_IsUndefined(ret)) { + ret = JS_FALSE; + } else { + BOOL res = JS_ToBoolFree(ctx, ret); + if (op == OP_lte || op == OP_gte) + res ^= 1; + ret = JS_NewBool(ctx, res); + } + } + JS_FreeValue(ctx, opset1_obj); + JS_FreeValue(ctx, opset2_obj); + *pret = ret; + return 1; + exception: + JS_FreeValue(ctx, opset1_obj); + JS_FreeValue(ctx, opset2_obj); + *pret = JS_UNDEFINED; + return -1; +} + +/* try to call the operation on the operatorSet field of 'obj'. Only + used for "/" and "**" on the BigInt prototype in math mode */ +static __exception int js_call_binary_op_simple(JSContext *ctx, + JSValue *pret, + JSValueConst obj, + JSValueConst op1, + JSValueConst op2, + OPCodeEnum op) +{ + JSValue opset1_obj, method, ret, new_op1, new_op2; + JSOperatorSetData *opset1; + JSOverloadableOperatorEnum ovop; + JSObject *p; + JSValueConst args[2]; + + opset1_obj = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_operatorSet); + if (JS_IsException(opset1_obj)) + goto exception; + if (JS_IsUndefined(opset1_obj)) + return 0; + opset1 = JS_GetOpaque2(ctx, opset1_obj, JS_CLASS_OPERATOR_SET); + if (!opset1) + goto exception; + ovop = get_ovop_from_opcode(op); + + p = opset1->self_ops[ovop]; + if (!p) { + JS_FreeValue(ctx, opset1_obj); + return 0; + } + + new_op1 = JS_ToNumeric(ctx, op1); + if (JS_IsException(new_op1)) + goto exception; + new_op2 = JS_ToNumeric(ctx, op2); + if (JS_IsException(new_op2)) { + JS_FreeValue(ctx, new_op1); + goto exception; + } + + method = JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, p)); + args[0] = new_op1; + args[1] = new_op2; + ret = JS_CallFree(ctx, method, JS_UNDEFINED, 2, args); + JS_FreeValue(ctx, new_op1); + JS_FreeValue(ctx, new_op2); + if (JS_IsException(ret)) + goto exception; + JS_FreeValue(ctx, opset1_obj); + *pret = ret; + return 1; + exception: + JS_FreeValue(ctx, opset1_obj); + *pret = JS_UNDEFINED; + return -1; +} + +/* return -1 if exception, 0 if no operator overloading, 1 if + overloaded operator called */ +static __exception int js_call_unary_op_fallback(JSContext *ctx, + JSValue *pret, + JSValueConst op1, + OPCodeEnum op) +{ + JSValue opset1_obj, method, ret; + JSOperatorSetData *opset1; + JSOverloadableOperatorEnum ovop; + JSObject *p; + + if (!ctx->allow_operator_overloading) + return 0; + + opset1_obj = JS_GetProperty(ctx, op1, JS_ATOM_Symbol_operatorSet); + if (JS_IsException(opset1_obj)) + goto exception; + if (JS_IsUndefined(opset1_obj)) + return 0; + opset1 = JS_GetOpaque2(ctx, opset1_obj, JS_CLASS_OPERATOR_SET); + if (!opset1) + goto exception; + if (opset1->is_primitive) { + JS_FreeValue(ctx, opset1_obj); + return 0; + } + + ovop = get_ovop_from_opcode(op); + + p = opset1->self_ops[ovop]; + if (!p) { + JS_ThrowTypeError(ctx, "no overloaded operator %s", + js_overloadable_operator_names[ovop]); + goto exception; + } + method = JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, p)); + ret = JS_CallFree(ctx, method, JS_UNDEFINED, 1, &op1); + if (JS_IsException(ret)) + goto exception; + JS_FreeValue(ctx, opset1_obj); + *pret = ret; + return 1; + exception: + JS_FreeValue(ctx, opset1_obj); + *pret = JS_UNDEFINED; + return -1; +} + +static JSValue throw_bf_exception(JSContext *ctx, int status) +{ + const char *str; + if (status & BF_ST_MEM_ERROR) + return JS_ThrowOutOfMemory(ctx); + if (status & BF_ST_DIVIDE_ZERO) { + str = "division by zero"; + } else if (status & BF_ST_INVALID_OP) { + str = "invalid operation"; + } else { + str = "integer overflow"; + } + return JS_ThrowRangeError(ctx, "%s", str); +} + +static int js_unary_arith_bigint(JSContext *ctx, + JSValue *pres, OPCodeEnum op, JSValue op1) +{ + bf_t a_s, *r, *a; + int ret, v; + JSValue res; + + if (op == OP_plus && !is_math_mode(ctx)) { + JS_ThrowTypeError(ctx, "bigint argument with unary +"); + JS_FreeValue(ctx, op1); + return -1; + } + res = JS_NewBigInt(ctx); + if (JS_IsException(res)) { + JS_FreeValue(ctx, op1); + return -1; + } + r = JS_GetBigInt(res); + a = JS_ToBigInt(ctx, &a_s, op1); + ret = 0; + switch(op) { + case OP_inc: + case OP_dec: + v = 2 * (op - OP_dec) - 1; + ret = bf_add_si(r, a, v, BF_PREC_INF, BF_RNDZ); + break; + case OP_plus: + ret = bf_set(r, a); + break; + case OP_neg: + ret = bf_set(r, a); + bf_neg(r); + break; + case OP_not: + ret = bf_add_si(r, a, 1, BF_PREC_INF, BF_RNDZ); + bf_neg(r); + break; + default: + abort(); + } + JS_FreeBigInt(ctx, a, &a_s); + JS_FreeValue(ctx, op1); + if (unlikely(ret)) { + JS_FreeValue(ctx, res); + throw_bf_exception(ctx, ret); + return -1; + } + res = JS_CompactBigInt(ctx, res); + *pres = res; + return 0; +} + +static int js_unary_arith_bigfloat(JSContext *ctx, + JSValue *pres, OPCodeEnum op, JSValue op1) +{ + bf_t a_s, *r, *a; + int ret, v; + JSValue res; + + if (op == OP_plus && !is_math_mode(ctx)) { + JS_ThrowTypeError(ctx, "bigfloat argument with unary +"); + JS_FreeValue(ctx, op1); + return -1; + } + + res = JS_NewBigFloat(ctx); + if (JS_IsException(res)) { + JS_FreeValue(ctx, op1); + return -1; + } + r = JS_GetBigFloat(res); + a = JS_ToBigFloat(ctx, &a_s, op1); + ret = 0; + switch(op) { + case OP_inc: + case OP_dec: + v = 2 * (op - OP_dec) - 1; + ret = bf_add_si(r, a, v, ctx->fp_env.prec, ctx->fp_env.flags); + break; + case OP_plus: + ret = bf_set(r, a); + break; + case OP_neg: + ret = bf_set(r, a); + bf_neg(r); + break; + default: + abort(); + } + if (a == &a_s) + bf_delete(a); + JS_FreeValue(ctx, op1); + if (unlikely(ret & BF_ST_MEM_ERROR)) { + JS_FreeValue(ctx, res); + throw_bf_exception(ctx, ret); + return -1; + } + *pres = res; + return 0; +} + +static int js_unary_arith_bigdecimal(JSContext *ctx, + JSValue *pres, OPCodeEnum op, JSValue op1) +{ + bfdec_t *r, *a; + int ret, v; + JSValue res; + + if (op == OP_plus && !is_math_mode(ctx)) { + JS_ThrowTypeError(ctx, "bigdecimal argument with unary +"); + JS_FreeValue(ctx, op1); + return -1; + } + + res = JS_NewBigDecimal(ctx); + if (JS_IsException(res)) { + JS_FreeValue(ctx, op1); + return -1; + } + r = JS_GetBigDecimal(res); + a = JS_ToBigDecimal(ctx, op1); + ret = 0; + switch(op) { + case OP_inc: + case OP_dec: + v = 2 * (op - OP_dec) - 1; + ret = bfdec_add_si(r, a, v, BF_PREC_INF, BF_RNDZ); + break; + case OP_plus: + ret = bfdec_set(r, a); + break; + case OP_neg: + ret = bfdec_set(r, a); + bfdec_neg(r); + break; + default: + abort(); + } + JS_FreeValue(ctx, op1); + if (unlikely(ret)) { + JS_FreeValue(ctx, res); + throw_bf_exception(ctx, ret); + return -1; + } + *pres = res; + return 0; +} + +static no_inline __exception int js_unary_arith_slow(JSContext *ctx, + JSValue *sp, + OPCodeEnum op) +{ + JSValue op1, val; + int v, ret; + uint32_t tag; + + op1 = sp[-1]; + /* fast path for float64 */ + if (JS_TAG_IS_FLOAT64(JS_VALUE_GET_TAG(op1))) + goto handle_float64; + if (JS_IsObject(op1)) { + ret = js_call_unary_op_fallback(ctx, &val, op1, op); + if (ret < 0) + return -1; + if (ret) { + JS_FreeValue(ctx, op1); + sp[-1] = val; + return 0; + } + } + + op1 = JS_ToNumericFree(ctx, op1); + if (JS_IsException(op1)) + goto exception; + tag = JS_VALUE_GET_TAG(op1); + switch(tag) { + case JS_TAG_INT: + { + int64_t v64; + v64 = JS_VALUE_GET_INT(op1); + switch(op) { + case OP_inc: + case OP_dec: + v = 2 * (op - OP_dec) - 1; + v64 += v; + break; + case OP_plus: + break; + case OP_neg: + if (v64 == 0) { + sp[-1] = __JS_NewFloat64(ctx, -0.0); + return 0; + } else { + v64 = -v64; + } + break; + default: + abort(); + } + sp[-1] = JS_NewInt64(ctx, v64); + } + break; + case JS_TAG_BIG_INT: + handle_bigint: + if (ctx->rt->bigint_ops.unary_arith(ctx, sp - 1, op, op1)) + goto exception; + break; + case JS_TAG_BIG_FLOAT: + if (ctx->rt->bigfloat_ops.unary_arith(ctx, sp - 1, op, op1)) + goto exception; + break; + case JS_TAG_BIG_DECIMAL: + if (ctx->rt->bigdecimal_ops.unary_arith(ctx, sp - 1, op, op1)) + goto exception; + break; + default: + handle_float64: + { + double d; + if (is_math_mode(ctx)) + goto handle_bigint; + d = JS_VALUE_GET_FLOAT64(op1); + switch(op) { + case OP_inc: + case OP_dec: + v = 2 * (op - OP_dec) - 1; + d += v; + break; + case OP_plus: + break; + case OP_neg: + d = -d; + break; + default: + abort(); + } + sp[-1] = __JS_NewFloat64(ctx, d); + } + break; + } + return 0; + exception: + sp[-1] = JS_UNDEFINED; + return -1; +} + +static __exception int js_post_inc_slow(JSContext *ctx, + JSValue *sp, OPCodeEnum op) +{ + JSValue op1; + + /* XXX: allow custom operators */ + op1 = sp[-1]; + op1 = JS_ToNumericFree(ctx, op1); + if (JS_IsException(op1)) { + sp[-1] = JS_UNDEFINED; + return -1; + } + sp[-1] = op1; + sp[0] = JS_DupValue(ctx, op1); + return js_unary_arith_slow(ctx, sp + 1, op - OP_post_dec + OP_dec); +} + +static no_inline int js_not_slow(JSContext *ctx, JSValue *sp) +{ + JSValue op1, val; + int ret; + + op1 = sp[-1]; + if (JS_IsObject(op1)) { + ret = js_call_unary_op_fallback(ctx, &val, op1, OP_not); + if (ret < 0) + return -1; + if (ret) { + JS_FreeValue(ctx, op1); + sp[-1] = val; + return 0; + } + } + + op1 = JS_ToNumericFree(ctx, op1); + if (JS_IsException(op1)) + goto exception; + if (is_math_mode(ctx) || JS_VALUE_GET_TAG(op1) == JS_TAG_BIG_INT) { + if (ctx->rt->bigint_ops.unary_arith(ctx, sp - 1, OP_not, op1)) + goto exception; + } else { + int32_t v1; + if (unlikely(JS_ToInt32Free(ctx, &v1, op1))) + goto exception; + sp[-1] = JS_NewInt32(ctx, ~v1); + } + return 0; + exception: + sp[-1] = JS_UNDEFINED; + return -1; +} + +static int js_binary_arith_bigfloat(JSContext *ctx, OPCodeEnum op, + JSValue *pres, JSValue op1, JSValue op2) +{ + bf_t a_s, b_s, *r, *a, *b; + int ret; + JSValue res; + + res = JS_NewBigFloat(ctx); + if (JS_IsException(res)) { + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + return -1; + } + r = JS_GetBigFloat(res); + a = JS_ToBigFloat(ctx, &a_s, op1); + b = JS_ToBigFloat(ctx, &b_s, op2); + bf_init(ctx->bf_ctx, r); + switch(op) { + case OP_add: + ret = bf_add(r, a, b, ctx->fp_env.prec, ctx->fp_env.flags); + break; + case OP_sub: + ret = bf_sub(r, a, b, ctx->fp_env.prec, ctx->fp_env.flags); + break; + case OP_mul: + ret = bf_mul(r, a, b, ctx->fp_env.prec, ctx->fp_env.flags); + break; + case OP_div: + ret = bf_div(r, a, b, ctx->fp_env.prec, ctx->fp_env.flags); + break; + case OP_math_mod: + /* Euclidian remainder */ + ret = bf_rem(r, a, b, ctx->fp_env.prec, ctx->fp_env.flags, + BF_DIVREM_EUCLIDIAN); + break; + case OP_mod: + ret = bf_rem(r, a, b, ctx->fp_env.prec, ctx->fp_env.flags, + BF_RNDZ); + break; + case OP_pow: + ret = bf_pow(r, a, b, ctx->fp_env.prec, + ctx->fp_env.flags | BF_POW_JS_QUIRKS); + break; + default: + abort(); + } + if (a == &a_s) + bf_delete(a); + if (b == &b_s) + bf_delete(b); + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + if (unlikely(ret & BF_ST_MEM_ERROR)) { + JS_FreeValue(ctx, res); + throw_bf_exception(ctx, ret); + return -1; + } + *pres = res; + return 0; +} + +static int js_binary_arith_bigint(JSContext *ctx, OPCodeEnum op, + JSValue *pres, JSValue op1, JSValue op2) +{ + bf_t a_s, b_s, *r, *a, *b; + int ret; + JSValue res; + + res = JS_NewBigInt(ctx); + if (JS_IsException(res)) + goto fail; + a = JS_ToBigInt(ctx, &a_s, op1); + if (!a) + goto fail; + b = JS_ToBigInt(ctx, &b_s, op2); + if (!b) { + JS_FreeBigInt(ctx, a, &a_s); + goto fail; + } + r = JS_GetBigInt(res); + ret = 0; + switch(op) { + case OP_add: + ret = bf_add(r, a, b, BF_PREC_INF, BF_RNDZ); + break; + case OP_sub: + ret = bf_sub(r, a, b, BF_PREC_INF, BF_RNDZ); + break; + case OP_mul: + ret = bf_mul(r, a, b, BF_PREC_INF, BF_RNDZ); + break; + case OP_div: + if (!is_math_mode(ctx)) { + bf_t rem_s, *rem = &rem_s; + bf_init(ctx->bf_ctx, rem); + ret = bf_divrem(r, rem, a, b, BF_PREC_INF, BF_RNDZ, + BF_RNDZ); + bf_delete(rem); + } else { + goto math_mode_div_pow; + } + break; + case OP_math_mod: + /* Euclidian remainder */ + ret = bf_rem(r, a, b, BF_PREC_INF, BF_RNDZ, + BF_DIVREM_EUCLIDIAN) & BF_ST_INVALID_OP; + break; + case OP_mod: + ret = bf_rem(r, a, b, BF_PREC_INF, BF_RNDZ, + BF_RNDZ) & BF_ST_INVALID_OP; + break; + case OP_pow: + if (b->sign) { + if (!is_math_mode(ctx)) { + ret = BF_ST_INVALID_OP; + } else { + math_mode_div_pow: + JS_FreeValue(ctx, res); + ret = js_call_binary_op_simple(ctx, &res, ctx->class_proto[JS_CLASS_BIG_INT], op1, op2, op); + if (ret != 0) { + JS_FreeBigInt(ctx, a, &a_s); + JS_FreeBigInt(ctx, b, &b_s); + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + if (ret < 0) { + return -1; + } else { + *pres = res; + return 0; + } + } + /* if no BigInt power operator defined, return a + bigfloat */ + res = JS_NewBigFloat(ctx); + if (JS_IsException(res)) { + JS_FreeBigInt(ctx, a, &a_s); + JS_FreeBigInt(ctx, b, &b_s); + goto fail; + } + r = JS_GetBigFloat(res); + if (op == OP_div) { + ret = bf_div(r, a, b, ctx->fp_env.prec, ctx->fp_env.flags) & BF_ST_MEM_ERROR; + } else { + ret = bf_pow(r, a, b, ctx->fp_env.prec, + ctx->fp_env.flags | BF_POW_JS_QUIRKS) & BF_ST_MEM_ERROR; + } + JS_FreeBigInt(ctx, a, &a_s); + JS_FreeBigInt(ctx, b, &b_s); + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + if (unlikely(ret)) { + JS_FreeValue(ctx, res); + throw_bf_exception(ctx, ret); + return -1; + } + *pres = res; + return 0; + } + } else { + ret = bf_pow(r, a, b, BF_PREC_INF, BF_RNDZ | BF_POW_JS_QUIRKS); + } + break; + + /* logical operations */ + case OP_shl: + case OP_sar: + { + slimb_t v2; +#if LIMB_BITS == 32 + bf_get_int32(&v2, b, 0); + if (v2 == INT32_MIN) + v2 = INT32_MIN + 1; +#else + bf_get_int64(&v2, b, 0); + if (v2 == INT64_MIN) + v2 = INT64_MIN + 1; +#endif + if (op == OP_sar) + v2 = -v2; + ret = bf_set(r, a); + ret |= bf_mul_2exp(r, v2, BF_PREC_INF, BF_RNDZ); + if (v2 < 0) { + ret |= bf_rint(r, BF_RNDD) & (BF_ST_OVERFLOW | BF_ST_MEM_ERROR); + } + } + break; + case OP_and: + ret = bf_logic_and(r, a, b); + break; + case OP_or: + ret = bf_logic_or(r, a, b); + break; + case OP_xor: + ret = bf_logic_xor(r, a, b); + break; + default: + abort(); + } + JS_FreeBigInt(ctx, a, &a_s); + JS_FreeBigInt(ctx, b, &b_s); + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + if (unlikely(ret)) { + JS_FreeValue(ctx, res); + throw_bf_exception(ctx, ret); + return -1; + } + *pres = JS_CompactBigInt(ctx, res); + return 0; + fail: + JS_FreeValue(ctx, res); + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + return -1; +} + +/* b must be a positive integer */ +static int js_bfdec_pow(bfdec_t *r, const bfdec_t *a, const bfdec_t *b) +{ + bfdec_t b1; + int32_t b2; + int ret; + + bfdec_init(b->ctx, &b1); + ret = bfdec_set(&b1, b); + if (ret) { + bfdec_delete(&b1); + return ret; + } + ret = bfdec_rint(&b1, BF_RNDZ); + if (ret) { + bfdec_delete(&b1); + return BF_ST_INVALID_OP; /* must be an integer */ + } + ret = bfdec_get_int32(&b2, &b1); + bfdec_delete(&b1); + if (ret) + return ret; /* overflow */ + if (b2 < 0) + return BF_ST_INVALID_OP; /* must be positive */ + return bfdec_pow_ui(r, a, b2); +} + +static int js_binary_arith_bigdecimal(JSContext *ctx, OPCodeEnum op, + JSValue *pres, JSValue op1, JSValue op2) +{ + bfdec_t *r, *a, *b; + int ret; + JSValue res; + + res = JS_NewBigDecimal(ctx); + if (JS_IsException(res)) + goto fail; + r = JS_GetBigDecimal(res); + + a = JS_ToBigDecimal(ctx, op1); + if (!a) + goto fail; + b = JS_ToBigDecimal(ctx, op2); + if (!b) + goto fail; + switch(op) { + case OP_add: + ret = bfdec_add(r, a, b, BF_PREC_INF, BF_RNDZ); + break; + case OP_sub: + ret = bfdec_sub(r, a, b, BF_PREC_INF, BF_RNDZ); + break; + case OP_mul: + ret = bfdec_mul(r, a, b, BF_PREC_INF, BF_RNDZ); + break; + case OP_div: + ret = bfdec_div(r, a, b, BF_PREC_INF, BF_RNDZ); + break; + case OP_math_mod: + /* Euclidian remainder */ + ret = bfdec_rem(r, a, b, BF_PREC_INF, BF_RNDZ, BF_DIVREM_EUCLIDIAN); + break; + case OP_mod: + ret = bfdec_rem(r, a, b, BF_PREC_INF, BF_RNDZ, BF_RNDZ); + break; + case OP_pow: + ret = js_bfdec_pow(r, a, b); + break; + default: + abort(); + } + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + if (unlikely(ret)) { + JS_FreeValue(ctx, res); + throw_bf_exception(ctx, ret); + return -1; + } + *pres = res; + return 0; + fail: + JS_FreeValue(ctx, res); + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + return -1; +} + +static no_inline __exception int js_binary_arith_slow(JSContext *ctx, JSValue *sp, + OPCodeEnum op) +{ + JSValue op1, op2, res; + uint32_t tag1, tag2; + int ret; + double d1, d2; + + op1 = sp[-2]; + op2 = sp[-1]; + tag1 = JS_VALUE_GET_NORM_TAG(op1); + tag2 = JS_VALUE_GET_NORM_TAG(op2); + /* fast path for float operations */ + if (tag1 == JS_TAG_FLOAT64 && tag2 == JS_TAG_FLOAT64) { + d1 = JS_VALUE_GET_FLOAT64(op1); + d2 = JS_VALUE_GET_FLOAT64(op2); + goto handle_float64; + } + + /* try to call an overloaded operator */ + if ((tag1 == JS_TAG_OBJECT && + (tag2 != JS_TAG_NULL && tag2 != JS_TAG_UNDEFINED)) || + (tag2 == JS_TAG_OBJECT && + (tag1 != JS_TAG_NULL && tag1 != JS_TAG_UNDEFINED))) { + ret = js_call_binary_op_fallback(ctx, &res, op1, op2, op, TRUE, 0); + if (ret != 0) { + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + if (ret < 0) { + goto exception; + } else { + sp[-2] = res; + return 0; + } + } + } + + op1 = JS_ToNumericFree(ctx, op1); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + op2 = JS_ToNumericFree(ctx, op2); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + goto exception; + } + tag1 = JS_VALUE_GET_NORM_TAG(op1); + tag2 = JS_VALUE_GET_NORM_TAG(op2); + + if (tag1 == JS_TAG_INT && tag2 == JS_TAG_INT) { + int32_t v1, v2; + int64_t v; + v1 = JS_VALUE_GET_INT(op1); + v2 = JS_VALUE_GET_INT(op2); + switch(op) { + case OP_sub: + v = (int64_t)v1 - (int64_t)v2; + break; + case OP_mul: + v = (int64_t)v1 * (int64_t)v2; + if (is_math_mode(ctx) && + (v < -MAX_SAFE_INTEGER || v > MAX_SAFE_INTEGER)) + goto handle_bigint; + if (v == 0 && (v1 | v2) < 0) { + sp[-2] = __JS_NewFloat64(ctx, -0.0); + return 0; + } + break; + case OP_div: + if (is_math_mode(ctx)) + goto handle_bigint; + sp[-2] = __JS_NewFloat64(ctx, (double)v1 / (double)v2); + return 0; + case OP_math_mod: + if (unlikely(v2 == 0)) { + throw_bf_exception(ctx, BF_ST_DIVIDE_ZERO); + goto exception; + } + v = (int64_t)v1 % (int64_t)v2; + if (v < 0) { + if (v2 < 0) + v -= v2; + else + v += v2; + } + break; + case OP_mod: + if (v1 < 0 || v2 <= 0) { + sp[-2] = JS_NewFloat64(ctx, fmod(v1, v2)); + return 0; + } else { + v = (int64_t)v1 % (int64_t)v2; + } + break; + case OP_pow: + if (!is_math_mode(ctx)) { + sp[-2] = JS_NewFloat64(ctx, js_pow(v1, v2)); + return 0; + } else { + goto handle_bigint; + } + break; + default: + abort(); + } + sp[-2] = JS_NewInt64(ctx, v); + } else if (tag1 == JS_TAG_BIG_DECIMAL || tag2 == JS_TAG_BIG_DECIMAL) { + if (ctx->rt->bigdecimal_ops.binary_arith(ctx, op, sp - 2, op1, op2)) + goto exception; + } else if (tag1 == JS_TAG_BIG_FLOAT || tag2 == JS_TAG_BIG_FLOAT) { + if (ctx->rt->bigfloat_ops.binary_arith(ctx, op, sp - 2, op1, op2)) + goto exception; + } else if (tag1 == JS_TAG_BIG_INT || tag2 == JS_TAG_BIG_INT) { + handle_bigint: + if (ctx->rt->bigint_ops.binary_arith(ctx, op, sp - 2, op1, op2)) + goto exception; + } else { + double dr; + /* float64 result */ + if (JS_ToFloat64Free(ctx, &d1, op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + if (JS_ToFloat64Free(ctx, &d2, op2)) + goto exception; + handle_float64: + if (is_math_mode(ctx) && is_safe_integer(d1) && is_safe_integer(d2)) + goto handle_bigint; + switch(op) { + case OP_sub: + dr = d1 - d2; + break; + case OP_mul: + dr = d1 * d2; + break; + case OP_div: + dr = d1 / d2; + break; + case OP_mod: + dr = fmod(d1, d2); + break; + case OP_math_mod: + d2 = fabs(d2); + dr = fmod(d1, d2); + /* XXX: loss of accuracy if dr < 0 */ + if (dr < 0) + dr += d2; + break; + case OP_pow: + dr = js_pow(d1, d2); + break; + default: + abort(); + } + sp[-2] = __JS_NewFloat64(ctx, dr); + } + return 0; + exception: + sp[-2] = JS_UNDEFINED; + sp[-1] = JS_UNDEFINED; + return -1; +} + +static no_inline __exception int js_add_slow(JSContext *ctx, JSValue *sp) +{ + JSValue op1, op2, res; + uint32_t tag1, tag2; + int ret; + + op1 = sp[-2]; + op2 = sp[-1]; + + tag1 = JS_VALUE_GET_NORM_TAG(op1); + tag2 = JS_VALUE_GET_NORM_TAG(op2); + /* fast path for float64 */ + if (tag1 == JS_TAG_FLOAT64 && tag2 == JS_TAG_FLOAT64) { + double d1, d2; + d1 = JS_VALUE_GET_FLOAT64(op1); + d2 = JS_VALUE_GET_FLOAT64(op2); + sp[-2] = __JS_NewFloat64(ctx, d1 + d2); + return 0; + } + + if (tag1 == JS_TAG_OBJECT || tag2 == JS_TAG_OBJECT) { + /* try to call an overloaded operator */ + if ((tag1 == JS_TAG_OBJECT && + (tag2 != JS_TAG_NULL && tag2 != JS_TAG_UNDEFINED && + tag2 != JS_TAG_STRING)) || + (tag2 == JS_TAG_OBJECT && + (tag1 != JS_TAG_NULL && tag1 != JS_TAG_UNDEFINED && + tag1 != JS_TAG_STRING))) { + ret = js_call_binary_op_fallback(ctx, &res, op1, op2, OP_add, + FALSE, HINT_NONE); + if (ret != 0) { + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + if (ret < 0) { + goto exception; + } else { + sp[-2] = res; + return 0; + } + } + } + + op1 = JS_ToPrimitiveFree(ctx, op1, HINT_NONE); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + + op2 = JS_ToPrimitiveFree(ctx, op2, HINT_NONE); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + goto exception; + } + tag1 = JS_VALUE_GET_NORM_TAG(op1); + tag2 = JS_VALUE_GET_NORM_TAG(op2); + } + + if (tag1 == JS_TAG_STRING || tag2 == JS_TAG_STRING) { + sp[-2] = JS_ConcatString(ctx, op1, op2); + if (JS_IsException(sp[-2])) + goto exception; + return 0; + } + + op1 = JS_ToNumericFree(ctx, op1); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + op2 = JS_ToNumericFree(ctx, op2); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + goto exception; + } + tag1 = JS_VALUE_GET_NORM_TAG(op1); + tag2 = JS_VALUE_GET_NORM_TAG(op2); + + if (tag1 == JS_TAG_INT && tag2 == JS_TAG_INT) { + int32_t v1, v2; + int64_t v; + v1 = JS_VALUE_GET_INT(op1); + v2 = JS_VALUE_GET_INT(op2); + v = (int64_t)v1 + (int64_t)v2; + sp[-2] = JS_NewInt64(ctx, v); + } else if (tag1 == JS_TAG_BIG_DECIMAL || tag2 == JS_TAG_BIG_DECIMAL) { + if (ctx->rt->bigdecimal_ops.binary_arith(ctx, OP_add, sp - 2, op1, op2)) + goto exception; + } else if (tag1 == JS_TAG_BIG_FLOAT || tag2 == JS_TAG_BIG_FLOAT) { + if (ctx->rt->bigfloat_ops.binary_arith(ctx, OP_add, sp - 2, op1, op2)) + goto exception; + } else if (tag1 == JS_TAG_BIG_INT || tag2 == JS_TAG_BIG_INT) { + handle_bigint: + if (ctx->rt->bigint_ops.binary_arith(ctx, OP_add, sp - 2, op1, op2)) + goto exception; + } else { + double d1, d2; + /* float64 result */ + if (JS_ToFloat64Free(ctx, &d1, op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + if (JS_ToFloat64Free(ctx, &d2, op2)) + goto exception; + if (is_math_mode(ctx) && is_safe_integer(d1) && is_safe_integer(d2)) + goto handle_bigint; + sp[-2] = __JS_NewFloat64(ctx, d1 + d2); + } + return 0; + exception: + sp[-2] = JS_UNDEFINED; + sp[-1] = JS_UNDEFINED; + return -1; +} + +static no_inline __exception int js_binary_logic_slow(JSContext *ctx, + JSValue *sp, + OPCodeEnum op) +{ + JSValue op1, op2, res; + int ret; + uint32_t tag1, tag2; + uint32_t v1, v2, r; + + op1 = sp[-2]; + op2 = sp[-1]; + tag1 = JS_VALUE_GET_NORM_TAG(op1); + tag2 = JS_VALUE_GET_NORM_TAG(op2); + + /* try to call an overloaded operator */ + if ((tag1 == JS_TAG_OBJECT && + (tag2 != JS_TAG_NULL && tag2 != JS_TAG_UNDEFINED)) || + (tag2 == JS_TAG_OBJECT && + (tag1 != JS_TAG_NULL && tag1 != JS_TAG_UNDEFINED))) { + ret = js_call_binary_op_fallback(ctx, &res, op1, op2, op, TRUE, 0); + if (ret != 0) { + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + if (ret < 0) { + goto exception; + } else { + sp[-2] = res; + return 0; + } + } + } + + op1 = JS_ToNumericFree(ctx, op1); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + op2 = JS_ToNumericFree(ctx, op2); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + goto exception; + } + + if (is_math_mode(ctx)) + goto bigint_op; + + tag1 = JS_VALUE_GET_TAG(op1); + tag2 = JS_VALUE_GET_TAG(op2); + if (tag1 == JS_TAG_BIG_INT || tag2 == JS_TAG_BIG_INT) { + if (tag1 != tag2) { + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + JS_ThrowTypeError(ctx, "both operands must be bigint"); + goto exception; + } else { + bigint_op: + if (ctx->rt->bigint_ops.binary_arith(ctx, op, sp - 2, op1, op2)) + goto exception; + } + } else { + if (unlikely(JS_ToInt32Free(ctx, (int32_t *)&v1, op1))) { + JS_FreeValue(ctx, op2); + goto exception; + } + if (unlikely(JS_ToInt32Free(ctx, (int32_t *)&v2, op2))) + goto exception; + switch(op) { + case OP_shl: + r = v1 << (v2 & 0x1f); + break; + case OP_sar: + r = (int)v1 >> (v2 & 0x1f); + break; + case OP_and: + r = v1 & v2; + break; + case OP_or: + r = v1 | v2; + break; + case OP_xor: + r = v1 ^ v2; + break; + default: + abort(); + } + sp[-2] = JS_NewInt32(ctx, r); + } + return 0; + exception: + sp[-2] = JS_UNDEFINED; + sp[-1] = JS_UNDEFINED; + return -1; +} + +/* Note: also used for bigint */ +static int js_compare_bigfloat(JSContext *ctx, OPCodeEnum op, + JSValue op1, JSValue op2) +{ + bf_t a_s, b_s, *a, *b; + int res; + + a = JS_ToBigFloat(ctx, &a_s, op1); + if (!a) { + JS_FreeValue(ctx, op2); + return -1; + } + b = JS_ToBigFloat(ctx, &b_s, op2); + if (!b) { + if (a == &a_s) + bf_delete(a); + JS_FreeValue(ctx, op1); + return -1; + } + switch(op) { + case OP_lt: + res = bf_cmp_lt(a, b); /* if NaN return false */ + break; + case OP_lte: + res = bf_cmp_le(a, b); /* if NaN return false */ + break; + case OP_gt: + res = bf_cmp_lt(b, a); /* if NaN return false */ + break; + case OP_gte: + res = bf_cmp_le(b, a); /* if NaN return false */ + break; + case OP_eq: + res = bf_cmp_eq(a, b); /* if NaN return false */ + break; + default: + abort(); + } + if (a == &a_s) + bf_delete(a); + if (b == &b_s) + bf_delete(b); + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + return res; +} + +static int js_compare_bigdecimal(JSContext *ctx, OPCodeEnum op, + JSValue op1, JSValue op2) +{ + bfdec_t *a, *b; + int res; + + /* Note: binary floats are converted to bigdecimal with + toString(). It is not mathematically correct but is consistent + with the BigDecimal() constructor behavior */ + op1 = JS_ToBigDecimalFree(ctx, op1, TRUE); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + return -1; + } + op2 = JS_ToBigDecimalFree(ctx, op2, TRUE); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + return -1; + } + a = JS_ToBigDecimal(ctx, op1); + b = JS_ToBigDecimal(ctx, op2); + + switch(op) { + case OP_lt: + res = bfdec_cmp_lt(a, b); /* if NaN return false */ + break; + case OP_lte: + res = bfdec_cmp_le(a, b); /* if NaN return false */ + break; + case OP_gt: + res = bfdec_cmp_lt(b, a); /* if NaN return false */ + break; + case OP_gte: + res = bfdec_cmp_le(b, a); /* if NaN return false */ + break; + case OP_eq: + res = bfdec_cmp_eq(a, b); /* if NaN return false */ + break; + default: + abort(); + } + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + return res; +} + +static no_inline int js_relational_slow(JSContext *ctx, JSValue *sp, + OPCodeEnum op) +{ + JSValue op1, op2, ret; + int res; + uint32_t tag1, tag2; + + op1 = sp[-2]; + op2 = sp[-1]; + tag1 = JS_VALUE_GET_NORM_TAG(op1); + tag2 = JS_VALUE_GET_NORM_TAG(op2); + /* try to call an overloaded operator */ + if ((tag1 == JS_TAG_OBJECT && + (tag2 != JS_TAG_NULL && tag2 != JS_TAG_UNDEFINED)) || + (tag2 == JS_TAG_OBJECT && + (tag1 != JS_TAG_NULL && tag1 != JS_TAG_UNDEFINED))) { + res = js_call_binary_op_fallback(ctx, &ret, op1, op2, op, + FALSE, HINT_NUMBER); + if (res != 0) { + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + if (res < 0) { + goto exception; + } else { + sp[-2] = ret; + return 0; + } + } + } + op1 = JS_ToPrimitiveFree(ctx, op1, HINT_NUMBER); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + op2 = JS_ToPrimitiveFree(ctx, op2, HINT_NUMBER); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + goto exception; + } + tag1 = JS_VALUE_GET_NORM_TAG(op1); + tag2 = JS_VALUE_GET_NORM_TAG(op2); + + if (tag1 == JS_TAG_STRING && tag2 == JS_TAG_STRING) { + JSString *p1, *p2; + p1 = JS_VALUE_GET_STRING(op1); + p2 = JS_VALUE_GET_STRING(op2); + res = js_string_compare(ctx, p1, p2); + switch(op) { + case OP_lt: + res = (res < 0); + break; + case OP_lte: + res = (res <= 0); + break; + case OP_gt: + res = (res > 0); + break; + default: + case OP_gte: + res = (res >= 0); + break; + } + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + } else if ((tag1 <= JS_TAG_NULL || tag1 == JS_TAG_FLOAT64) && + (tag2 <= JS_TAG_NULL || tag2 == JS_TAG_FLOAT64)) { + /* fast path for float64/int */ + goto float64_compare; + } else { + if (((tag1 == JS_TAG_BIG_INT && tag2 == JS_TAG_STRING) || + (tag2 == JS_TAG_BIG_INT && tag1 == JS_TAG_STRING)) && + !is_math_mode(ctx)) { + if (tag1 == JS_TAG_STRING) { + op1 = JS_StringToBigInt(ctx, op1); + if (JS_VALUE_GET_TAG(op1) != JS_TAG_BIG_INT) + goto invalid_bigint_string; + } + if (tag2 == JS_TAG_STRING) { + op2 = JS_StringToBigInt(ctx, op2); + if (JS_VALUE_GET_TAG(op2) != JS_TAG_BIG_INT) { + invalid_bigint_string: + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + res = FALSE; + goto done; + } + } + } else { + op1 = JS_ToNumericFree(ctx, op1); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + op2 = JS_ToNumericFree(ctx, op2); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + goto exception; + } + } + + tag1 = JS_VALUE_GET_NORM_TAG(op1); + tag2 = JS_VALUE_GET_NORM_TAG(op2); + + if (tag1 == JS_TAG_BIG_DECIMAL || tag2 == JS_TAG_BIG_DECIMAL) { + res = ctx->rt->bigdecimal_ops.compare(ctx, op, op1, op2); + if (res < 0) + goto exception; + } else if (tag1 == JS_TAG_BIG_FLOAT || tag2 == JS_TAG_BIG_FLOAT) { + res = ctx->rt->bigfloat_ops.compare(ctx, op, op1, op2); + if (res < 0) + goto exception; + } else if (tag1 == JS_TAG_BIG_INT || tag2 == JS_TAG_BIG_INT) { + res = ctx->rt->bigint_ops.compare(ctx, op, op1, op2); + if (res < 0) + goto exception; + } else { + double d1, d2; + + float64_compare: + /* can use floating point comparison */ + if (tag1 == JS_TAG_FLOAT64) { + d1 = JS_VALUE_GET_FLOAT64(op1); + } else { + d1 = JS_VALUE_GET_INT(op1); + } + if (tag2 == JS_TAG_FLOAT64) { + d2 = JS_VALUE_GET_FLOAT64(op2); + } else { + d2 = JS_VALUE_GET_INT(op2); + } + switch(op) { + case OP_lt: + res = (d1 < d2); /* if NaN return false */ + break; + case OP_lte: + res = (d1 <= d2); /* if NaN return false */ + break; + case OP_gt: + res = (d1 > d2); /* if NaN return false */ + break; + default: + case OP_gte: + res = (d1 >= d2); /* if NaN return false */ + break; + } + } + } + done: + sp[-2] = JS_NewBool(ctx, res); + return 0; + exception: + sp[-2] = JS_UNDEFINED; + sp[-1] = JS_UNDEFINED; + return -1; +} + +static BOOL tag_is_number(uint32_t tag) +{ + return (tag == JS_TAG_INT || tag == JS_TAG_BIG_INT || + tag == JS_TAG_FLOAT64 || tag == JS_TAG_BIG_FLOAT || + tag == JS_TAG_BIG_DECIMAL); +} + +static no_inline __exception int js_eq_slow(JSContext *ctx, JSValue *sp, + BOOL is_neq) +{ + JSValue op1, op2, ret; + int res; + uint32_t tag1, tag2; + + op1 = sp[-2]; + op2 = sp[-1]; + redo: + tag1 = JS_VALUE_GET_NORM_TAG(op1); + tag2 = JS_VALUE_GET_NORM_TAG(op2); + if (tag_is_number(tag1) && tag_is_number(tag2)) { + if (tag1 == JS_TAG_INT && tag2 == JS_TAG_INT) { + res = JS_VALUE_GET_INT(op1) == JS_VALUE_GET_INT(op2); + } else if ((tag1 == JS_TAG_FLOAT64 && + (tag2 == JS_TAG_INT || tag2 == JS_TAG_FLOAT64)) || + (tag2 == JS_TAG_FLOAT64 && + (tag1 == JS_TAG_INT || tag1 == JS_TAG_FLOAT64))) { + double d1, d2; + if (tag1 == JS_TAG_FLOAT64) { + d1 = JS_VALUE_GET_FLOAT64(op1); + } else { + d1 = JS_VALUE_GET_INT(op1); + } + if (tag2 == JS_TAG_FLOAT64) { + d2 = JS_VALUE_GET_FLOAT64(op2); + } else { + d2 = JS_VALUE_GET_INT(op2); + } + res = (d1 == d2); + } else if (tag1 == JS_TAG_BIG_DECIMAL || tag2 == JS_TAG_BIG_DECIMAL) { + res = ctx->rt->bigdecimal_ops.compare(ctx, OP_eq, op1, op2); + if (res < 0) + goto exception; + } else if (tag1 == JS_TAG_BIG_FLOAT || tag2 == JS_TAG_BIG_FLOAT) { + res = ctx->rt->bigfloat_ops.compare(ctx, OP_eq, op1, op2); + if (res < 0) + goto exception; + } else { + res = ctx->rt->bigint_ops.compare(ctx, OP_eq, op1, op2); + if (res < 0) + goto exception; + } + } else if (tag1 == tag2) { + if (tag1 == JS_TAG_OBJECT) { + /* try the fallback operator */ + res = js_call_binary_op_fallback(ctx, &ret, op1, op2, + is_neq ? OP_neq : OP_eq, + FALSE, HINT_NONE); + if (res != 0) { + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + if (res < 0) { + goto exception; + } else { + sp[-2] = ret; + return 0; + } + } + } + res = js_strict_eq2(ctx, op1, op2, JS_EQ_STRICT); + } else if ((tag1 == JS_TAG_NULL && tag2 == JS_TAG_UNDEFINED) || + (tag2 == JS_TAG_NULL && tag1 == JS_TAG_UNDEFINED)) { + res = TRUE; + } else if ((tag1 == JS_TAG_STRING && tag_is_number(tag2)) || + (tag2 == JS_TAG_STRING && tag_is_number(tag1))) { + + if ((tag1 == JS_TAG_BIG_INT || tag2 == JS_TAG_BIG_INT) && + !is_math_mode(ctx)) { + if (tag1 == JS_TAG_STRING) { + op1 = JS_StringToBigInt(ctx, op1); + if (JS_VALUE_GET_TAG(op1) != JS_TAG_BIG_INT) + goto invalid_bigint_string; + } + if (tag2 == JS_TAG_STRING) { + op2 = JS_StringToBigInt(ctx, op2); + if (JS_VALUE_GET_TAG(op2) != JS_TAG_BIG_INT) { + invalid_bigint_string: + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + res = FALSE; + goto done; + } + } + } else { + op1 = JS_ToNumericFree(ctx, op1); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + op2 = JS_ToNumericFree(ctx, op2); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + goto exception; + } + } + res = js_strict_eq(ctx, op1, op2); + } else if (tag1 == JS_TAG_BOOL) { + op1 = JS_NewInt32(ctx, JS_VALUE_GET_INT(op1)); + goto redo; + } else if (tag2 == JS_TAG_BOOL) { + op2 = JS_NewInt32(ctx, JS_VALUE_GET_INT(op2)); + goto redo; + } else if ((tag1 == JS_TAG_OBJECT && + (tag_is_number(tag2) || tag2 == JS_TAG_STRING || tag2 == JS_TAG_SYMBOL)) || + (tag2 == JS_TAG_OBJECT && + (tag_is_number(tag1) || tag1 == JS_TAG_STRING || tag1 == JS_TAG_SYMBOL))) { + + /* try the fallback operator */ + res = js_call_binary_op_fallback(ctx, &ret, op1, op2, + is_neq ? OP_neq : OP_eq, + FALSE, HINT_NONE); + if (res != 0) { + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + if (res < 0) { + goto exception; + } else { + sp[-2] = ret; + return 0; + } + } + + op1 = JS_ToPrimitiveFree(ctx, op1, HINT_NONE); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + op2 = JS_ToPrimitiveFree(ctx, op2, HINT_NONE); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + goto exception; + } + goto redo; + } else { + /* IsHTMLDDA object is equivalent to undefined for '==' and '!=' */ + if ((JS_IsHTMLDDA(ctx, op1) && + (tag2 == JS_TAG_NULL || tag2 == JS_TAG_UNDEFINED)) || + (JS_IsHTMLDDA(ctx, op2) && + (tag1 == JS_TAG_NULL || tag1 == JS_TAG_UNDEFINED))) { + res = TRUE; + } else { + res = FALSE; + } + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + } + done: + sp[-2] = JS_NewBool(ctx, res ^ is_neq); + return 0; + exception: + sp[-2] = JS_UNDEFINED; + sp[-1] = JS_UNDEFINED; + return -1; +} + +static no_inline int js_shr_slow(JSContext *ctx, JSValue *sp) +{ + JSValue op1, op2; + uint32_t v1, v2, r; + + op1 = sp[-2]; + op2 = sp[-1]; + op1 = JS_ToNumericFree(ctx, op1); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + op2 = JS_ToNumericFree(ctx, op2); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + goto exception; + } + /* XXX: could forbid >>> in bignum mode */ + if (!is_math_mode(ctx) && + (JS_VALUE_GET_TAG(op1) == JS_TAG_BIG_INT || + JS_VALUE_GET_TAG(op2) == JS_TAG_BIG_INT)) { + JS_ThrowTypeError(ctx, "bigint operands are forbidden for >>>"); + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + goto exception; + } + /* cannot give an exception */ + JS_ToUint32Free(ctx, &v1, op1); + JS_ToUint32Free(ctx, &v2, op2); + r = v1 >> (v2 & 0x1f); + sp[-2] = JS_NewUint32(ctx, r); + return 0; + exception: + sp[-2] = JS_UNDEFINED; + sp[-1] = JS_UNDEFINED; + return -1; +} + +static JSValue js_mul_pow10_to_float64(JSContext *ctx, const bf_t *a, + int64_t exponent) +{ + bf_t r_s, *r = &r_s; + double d; + int ret; + + /* always convert to Float64 */ + bf_init(ctx->bf_ctx, r); + ret = bf_mul_pow_radix(r, a, 10, exponent, + 53, bf_set_exp_bits(11) | BF_RNDN | + BF_FLAG_SUBNORMAL); + bf_get_float64(r, &d, BF_RNDN); + bf_delete(r); + if (ret & BF_ST_MEM_ERROR) + return JS_ThrowOutOfMemory(ctx); + else + return __JS_NewFloat64(ctx, d); +} + +static no_inline int js_mul_pow10(JSContext *ctx, JSValue *sp) +{ + bf_t a_s, *a, *r; + JSValue op1, op2, res; + int64_t e; + int ret; + + res = JS_NewBigFloat(ctx); + if (JS_IsException(res)) + return -1; + r = JS_GetBigFloat(res); + op1 = sp[-2]; + op2 = sp[-1]; + a = JS_ToBigFloat(ctx, &a_s, op1); + if (!a) + return -1; + if (JS_IsBigInt(ctx, op2)) { + ret = JS_ToBigInt64(ctx, &e, op2); + } else { + ret = JS_ToInt64(ctx, &e, op2); + } + if (ret) { + if (a == &a_s) + bf_delete(a); + JS_FreeValue(ctx, res); + return -1; + } + + bf_mul_pow_radix(r, a, 10, e, ctx->fp_env.prec, ctx->fp_env.flags); + if (a == &a_s) + bf_delete(a); + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + sp[-2] = res; + return 0; +} + +#else /* !CONFIG_BIGNUM */ + +static JSValue JS_ThrowUnsupportedBigint(JSContext *ctx) +{ + return JS_ThrowTypeError(ctx, "bigint is not supported"); +} + +JSValue JS_NewBigInt64(JSContext *ctx, int64_t v) +{ + return JS_ThrowUnsupportedBigint(ctx); +} + +JSValue JS_NewBigUint64(JSContext *ctx, uint64_t v) +{ + return JS_ThrowUnsupportedBigint(ctx); +} + +int JS_ToBigInt64(JSContext *ctx, int64_t *pres, JSValueConst val) +{ + JS_ThrowUnsupportedBigint(ctx); + *pres = 0; + return -1; +} + +static no_inline __exception int js_unary_arith_slow(JSContext *ctx, + JSValue *sp, + OPCodeEnum op) +{ + JSValue op1; + double d; + + op1 = sp[-1]; + if (unlikely(JS_ToFloat64Free(ctx, &d, op1))) { + sp[-1] = JS_UNDEFINED; + return -1; + } + switch(op) { + case OP_inc: + d++; + break; + case OP_dec: + d--; + break; + case OP_plus: + break; + case OP_neg: + d = -d; + break; + default: + abort(); + } + sp[-1] = JS_NewFloat64(ctx, d); + return 0; +} + +/* specific case necessary for correct return value semantics */ +static __exception int js_post_inc_slow(JSContext *ctx, + JSValue *sp, OPCodeEnum op) +{ + JSValue op1; + double d, r; + + op1 = sp[-1]; + if (unlikely(JS_ToFloat64Free(ctx, &d, op1))) { + sp[-1] = JS_UNDEFINED; + return -1; + } + r = d + 2 * (op - OP_post_dec) - 1; + sp[0] = JS_NewFloat64(ctx, r); + sp[-1] = JS_NewFloat64(ctx, d); + return 0; +} + +static no_inline __exception int js_binary_arith_slow(JSContext *ctx, JSValue *sp, + OPCodeEnum op) +{ + JSValue op1, op2; + double d1, d2, r; + + op1 = sp[-2]; + op2 = sp[-1]; + if (unlikely(JS_ToFloat64Free(ctx, &d1, op1))) { + JS_FreeValue(ctx, op2); + goto exception; + } + if (unlikely(JS_ToFloat64Free(ctx, &d2, op2))) { + goto exception; + } + switch(op) { + case OP_sub: + r = d1 - d2; + break; + case OP_mul: + r = d1 * d2; + break; + case OP_div: + r = d1 / d2; + break; + case OP_mod: + r = fmod(d1, d2); + break; + case OP_pow: + r = js_pow(d1, d2); + break; + default: + abort(); + } + sp[-2] = JS_NewFloat64(ctx, r); + return 0; + exception: + sp[-2] = JS_UNDEFINED; + sp[-1] = JS_UNDEFINED; + return -1; +} + +static no_inline __exception int js_add_slow(JSContext *ctx, JSValue *sp) +{ + JSValue op1, op2; + uint32_t tag1, tag2; + + op1 = sp[-2]; + op2 = sp[-1]; + tag1 = JS_VALUE_GET_TAG(op1); + tag2 = JS_VALUE_GET_TAG(op2); + if ((tag1 == JS_TAG_INT || JS_TAG_IS_FLOAT64(tag1)) && + (tag2 == JS_TAG_INT || JS_TAG_IS_FLOAT64(tag2))) { + goto add_numbers; + } else { + op1 = JS_ToPrimitiveFree(ctx, op1, HINT_NONE); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + op2 = JS_ToPrimitiveFree(ctx, op2, HINT_NONE); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + goto exception; + } + tag1 = JS_VALUE_GET_TAG(op1); + tag2 = JS_VALUE_GET_TAG(op2); + if (tag1 == JS_TAG_STRING || tag2 == JS_TAG_STRING) { + sp[-2] = JS_ConcatString(ctx, op1, op2); + if (JS_IsException(sp[-2])) + goto exception; + } else { + double d1, d2; + add_numbers: + if (JS_ToFloat64Free(ctx, &d1, op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + if (JS_ToFloat64Free(ctx, &d2, op2)) + goto exception; + sp[-2] = JS_NewFloat64(ctx, d1 + d2); + } + } + return 0; + exception: + sp[-2] = JS_UNDEFINED; + sp[-1] = JS_UNDEFINED; + return -1; +} + +static no_inline __exception int js_binary_logic_slow(JSContext *ctx, + JSValue *sp, + OPCodeEnum op) +{ + JSValue op1, op2; + uint32_t v1, v2, r; + + op1 = sp[-2]; + op2 = sp[-1]; + if (unlikely(JS_ToInt32Free(ctx, (int32_t *)&v1, op1))) { + JS_FreeValue(ctx, op2); + goto exception; + } + if (unlikely(JS_ToInt32Free(ctx, (int32_t *)&v2, op2))) + goto exception; + switch(op) { + case OP_shl: + r = v1 << (v2 & 0x1f); + break; + case OP_sar: + r = (int)v1 >> (v2 & 0x1f); + break; + case OP_and: + r = v1 & v2; + break; + case OP_or: + r = v1 | v2; + break; + case OP_xor: + r = v1 ^ v2; + break; + default: + abort(); + } + sp[-2] = JS_NewInt32(ctx, r); + return 0; + exception: + sp[-2] = JS_UNDEFINED; + sp[-1] = JS_UNDEFINED; + return -1; +} + +static no_inline int js_not_slow(JSContext *ctx, JSValue *sp) +{ + int32_t v1; + + if (unlikely(JS_ToInt32Free(ctx, &v1, sp[-1]))) { + sp[-1] = JS_UNDEFINED; + return -1; + } + sp[-1] = JS_NewInt32(ctx, ~v1); + return 0; +} + +static no_inline int js_relational_slow(JSContext *ctx, JSValue *sp, + OPCodeEnum op) +{ + JSValue op1, op2; + int res; + + op1 = sp[-2]; + op2 = sp[-1]; + op1 = JS_ToPrimitiveFree(ctx, op1, HINT_NUMBER); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + op2 = JS_ToPrimitiveFree(ctx, op2, HINT_NUMBER); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + goto exception; + } + if (JS_VALUE_GET_TAG(op1) == JS_TAG_STRING && + JS_VALUE_GET_TAG(op2) == JS_TAG_STRING) { + JSString *p1, *p2; + p1 = JS_VALUE_GET_STRING(op1); + p2 = JS_VALUE_GET_STRING(op2); + res = js_string_compare(ctx, p1, p2); + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + switch(op) { + case OP_lt: + res = (res < 0); + break; + case OP_lte: + res = (res <= 0); + break; + case OP_gt: + res = (res > 0); + break; + default: + case OP_gte: + res = (res >= 0); + break; + } + } else { + double d1, d2; + if (JS_ToFloat64Free(ctx, &d1, op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + if (JS_ToFloat64Free(ctx, &d2, op2)) + goto exception; + switch(op) { + case OP_lt: + res = (d1 < d2); /* if NaN return false */ + break; + case OP_lte: + res = (d1 <= d2); /* if NaN return false */ + break; + case OP_gt: + res = (d1 > d2); /* if NaN return false */ + break; + default: + case OP_gte: + res = (d1 >= d2); /* if NaN return false */ + break; + } + } + sp[-2] = JS_NewBool(ctx, res); + return 0; + exception: + sp[-2] = JS_UNDEFINED; + sp[-1] = JS_UNDEFINED; + return -1; +} + +static no_inline __exception int js_eq_slow(JSContext *ctx, JSValue *sp, + BOOL is_neq) +{ + JSValue op1, op2; + int tag1, tag2; + BOOL res; + + op1 = sp[-2]; + op2 = sp[-1]; + redo: + tag1 = JS_VALUE_GET_NORM_TAG(op1); + tag2 = JS_VALUE_GET_NORM_TAG(op2); + if (tag1 == tag2 || + (tag1 == JS_TAG_INT && tag2 == JS_TAG_FLOAT64) || + (tag2 == JS_TAG_INT && tag1 == JS_TAG_FLOAT64)) { + res = js_strict_eq(ctx, op1, op2); + } else if ((tag1 == JS_TAG_NULL && tag2 == JS_TAG_UNDEFINED) || + (tag2 == JS_TAG_NULL && tag1 == JS_TAG_UNDEFINED)) { + res = TRUE; + } else if ((tag1 == JS_TAG_STRING && (tag2 == JS_TAG_INT || + tag2 == JS_TAG_FLOAT64)) || + (tag2 == JS_TAG_STRING && (tag1 == JS_TAG_INT || + tag1 == JS_TAG_FLOAT64))) { + double d1; + double d2; + if (JS_ToFloat64Free(ctx, &d1, op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + if (JS_ToFloat64Free(ctx, &d2, op2)) + goto exception; + res = (d1 == d2); + } else if (tag1 == JS_TAG_BOOL) { + op1 = JS_NewInt32(ctx, JS_VALUE_GET_INT(op1)); + goto redo; + } else if (tag2 == JS_TAG_BOOL) { + op2 = JS_NewInt32(ctx, JS_VALUE_GET_INT(op2)); + goto redo; + } else if (tag1 == JS_TAG_OBJECT && + (tag2 == JS_TAG_INT || tag2 == JS_TAG_FLOAT64 || tag2 == JS_TAG_STRING || tag2 == JS_TAG_SYMBOL)) { + op1 = JS_ToPrimitiveFree(ctx, op1, HINT_NONE); + if (JS_IsException(op1)) { + JS_FreeValue(ctx, op2); + goto exception; + } + goto redo; + } else if (tag2 == JS_TAG_OBJECT && + (tag1 == JS_TAG_INT || tag1 == JS_TAG_FLOAT64 || tag1 == JS_TAG_STRING || tag1 == JS_TAG_SYMBOL)) { + op2 = JS_ToPrimitiveFree(ctx, op2, HINT_NONE); + if (JS_IsException(op2)) { + JS_FreeValue(ctx, op1); + goto exception; + } + goto redo; + } else { + /* IsHTMLDDA object is equivalent to undefined for '==' and '!=' */ + if ((JS_IsHTMLDDA(ctx, op1) && + (tag2 == JS_TAG_NULL || tag2 == JS_TAG_UNDEFINED)) || + (JS_IsHTMLDDA(ctx, op2) && + (tag1 == JS_TAG_NULL || tag1 == JS_TAG_UNDEFINED))) { + res = TRUE; + } else { + res = FALSE; + } + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + } + sp[-2] = JS_NewBool(ctx, res ^ is_neq); + return 0; + exception: + sp[-2] = JS_UNDEFINED; + sp[-1] = JS_UNDEFINED; + return -1; +} + +static no_inline int js_shr_slow(JSContext *ctx, JSValue *sp) +{ + JSValue op1, op2; + uint32_t v1, v2, r; + + op1 = sp[-2]; + op2 = sp[-1]; + if (unlikely(JS_ToUint32Free(ctx, &v1, op1))) { + JS_FreeValue(ctx, op2); + goto exception; + } + if (unlikely(JS_ToUint32Free(ctx, &v2, op2))) + goto exception; + r = v1 >> (v2 & 0x1f); + sp[-2] = JS_NewUint32(ctx, r); + return 0; + exception: + sp[-2] = JS_UNDEFINED; + sp[-1] = JS_UNDEFINED; + return -1; +} + +#endif /* !CONFIG_BIGNUM */ + +/* XXX: Should take JSValueConst arguments */ +static BOOL js_strict_eq2(JSContext *ctx, JSValue op1, JSValue op2, + JSStrictEqModeEnum eq_mode) +{ + BOOL res; + int tag1, tag2; + double d1, d2; + + tag1 = JS_VALUE_GET_NORM_TAG(op1); + tag2 = JS_VALUE_GET_NORM_TAG(op2); + switch(tag1) { + case JS_TAG_BOOL: + if (tag1 != tag2) { + res = FALSE; + } else { + res = JS_VALUE_GET_INT(op1) == JS_VALUE_GET_INT(op2); + goto done_no_free; + } + break; + case JS_TAG_NULL: + case JS_TAG_UNDEFINED: + res = (tag1 == tag2); + break; + case JS_TAG_STRING: + { + JSString *p1, *p2; + if (tag1 != tag2) { + res = FALSE; + } else { + p1 = JS_VALUE_GET_STRING(op1); + p2 = JS_VALUE_GET_STRING(op2); + res = (js_string_compare(ctx, p1, p2) == 0); + } + } + break; + case JS_TAG_SYMBOL: + { + JSAtomStruct *p1, *p2; + if (tag1 != tag2) { + res = FALSE; + } else { + p1 = JS_VALUE_GET_PTR(op1); + p2 = JS_VALUE_GET_PTR(op2); + res = (p1 == p2); + } + } + break; + case JS_TAG_OBJECT: + if (tag1 != tag2) + res = FALSE; + else + res = JS_VALUE_GET_OBJ(op1) == JS_VALUE_GET_OBJ(op2); + break; + case JS_TAG_INT: + d1 = JS_VALUE_GET_INT(op1); + if (tag2 == JS_TAG_INT) { + d2 = JS_VALUE_GET_INT(op2); + goto number_test; + } else if (tag2 == JS_TAG_FLOAT64) { + d2 = JS_VALUE_GET_FLOAT64(op2); + goto number_test; + } else { + res = FALSE; + } + break; + case JS_TAG_FLOAT64: + d1 = JS_VALUE_GET_FLOAT64(op1); + if (tag2 == JS_TAG_FLOAT64) { + d2 = JS_VALUE_GET_FLOAT64(op2); + } else if (tag2 == JS_TAG_INT) { + d2 = JS_VALUE_GET_INT(op2); + } else { + res = FALSE; + break; + } + number_test: + if (unlikely(eq_mode >= JS_EQ_SAME_VALUE)) { + JSFloat64Union u1, u2; + /* NaN is not always normalized, so this test is necessary */ + if (isnan(d1) || isnan(d2)) { + res = isnan(d1) == isnan(d2); + } else if (eq_mode == JS_EQ_SAME_VALUE_ZERO) { + res = (d1 == d2); /* +0 == -0 */ + } else { + u1.d = d1; + u2.d = d2; + res = (u1.u64 == u2.u64); /* +0 != -0 */ + } + } else { + res = (d1 == d2); /* if NaN return false and +0 == -0 */ + } + goto done_no_free; +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_INT: + { + bf_t a_s, *a, b_s, *b; + if (tag1 != tag2) { + res = FALSE; + break; + } + a = JS_ToBigFloat(ctx, &a_s, op1); + b = JS_ToBigFloat(ctx, &b_s, op2); + res = bf_cmp_eq(a, b); + if (a == &a_s) + bf_delete(a); + if (b == &b_s) + bf_delete(b); + } + break; + case JS_TAG_BIG_FLOAT: + { + JSBigFloat *p1, *p2; + const bf_t *a, *b; + if (tag1 != tag2) { + res = FALSE; + break; + } + p1 = JS_VALUE_GET_PTR(op1); + p2 = JS_VALUE_GET_PTR(op2); + a = &p1->num; + b = &p2->num; + if (unlikely(eq_mode >= JS_EQ_SAME_VALUE)) { + if (eq_mode == JS_EQ_SAME_VALUE_ZERO && + a->expn == BF_EXP_ZERO && b->expn == BF_EXP_ZERO) { + res = TRUE; + } else { + res = (bf_cmp_full(a, b) == 0); + } + } else { + res = bf_cmp_eq(a, b); + } + } + break; + case JS_TAG_BIG_DECIMAL: + { + JSBigDecimal *p1, *p2; + const bfdec_t *a, *b; + if (tag1 != tag2) { + res = FALSE; + break; + } + p1 = JS_VALUE_GET_PTR(op1); + p2 = JS_VALUE_GET_PTR(op2); + a = &p1->num; + b = &p2->num; + res = bfdec_cmp_eq(a, b); + } + break; +#endif + default: + res = FALSE; + break; + } + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + done_no_free: + return res; +} + +static BOOL js_strict_eq(JSContext *ctx, JSValue op1, JSValue op2) +{ + return js_strict_eq2(ctx, op1, op2, JS_EQ_STRICT); +} + +static BOOL js_same_value(JSContext *ctx, JSValueConst op1, JSValueConst op2) +{ + return js_strict_eq2(ctx, + JS_DupValue(ctx, op1), JS_DupValue(ctx, op2), + JS_EQ_SAME_VALUE); +} + +static BOOL js_same_value_zero(JSContext *ctx, JSValueConst op1, JSValueConst op2) +{ + return js_strict_eq2(ctx, + JS_DupValue(ctx, op1), JS_DupValue(ctx, op2), + JS_EQ_SAME_VALUE_ZERO); +} + +static no_inline int js_strict_eq_slow(JSContext *ctx, JSValue *sp, + BOOL is_neq) +{ + BOOL res; + res = js_strict_eq(ctx, sp[-2], sp[-1]); + sp[-2] = JS_NewBool(ctx, res ^ is_neq); + return 0; +} + +static __exception int js_operator_in(JSContext *ctx, JSValue *sp) +{ + JSValue op1, op2; + JSAtom atom; + int ret; + + op1 = sp[-2]; + op2 = sp[-1]; + + if (JS_VALUE_GET_TAG(op2) != JS_TAG_OBJECT) { + JS_ThrowTypeError(ctx, "invalid 'in' operand"); + return -1; + } + atom = JS_ValueToAtom(ctx, op1); + if (unlikely(atom == JS_ATOM_NULL)) + return -1; + ret = JS_HasProperty(ctx, op2, atom); + JS_FreeAtom(ctx, atom); + if (ret < 0) + return -1; + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + sp[-2] = JS_NewBool(ctx, ret); + return 0; +} + +static __exception int js_has_unscopable(JSContext *ctx, JSValueConst obj, + JSAtom atom) +{ + JSValue arr, val; + int ret; + + arr = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_unscopables); + if (JS_IsException(arr)) + return -1; + ret = 0; + if (JS_IsObject(arr)) { + val = JS_GetProperty(ctx, arr, atom); + ret = JS_ToBoolFree(ctx, val); + } + JS_FreeValue(ctx, arr); + return ret; +} + +static __exception int js_operator_instanceof(JSContext *ctx, JSValue *sp) +{ + JSValue op1, op2; + BOOL ret; + + op1 = sp[-2]; + op2 = sp[-1]; + ret = JS_IsInstanceOf(ctx, op1, op2); + if (ret < 0) + return ret; + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + sp[-2] = JS_NewBool(ctx, ret); + return 0; +} + +static __exception int js_operator_typeof(JSContext *ctx, JSValueConst op1) +{ + JSAtom atom; + uint32_t tag; + + tag = JS_VALUE_GET_NORM_TAG(op1); + switch(tag) { +#ifdef CONFIG_BIGNUM + case JS_TAG_BIG_INT: + atom = JS_ATOM_bigint; + break; + case JS_TAG_BIG_FLOAT: + atom = JS_ATOM_bigfloat; + break; + case JS_TAG_BIG_DECIMAL: + atom = JS_ATOM_bigdecimal; + break; +#endif + case JS_TAG_INT: + case JS_TAG_FLOAT64: + atom = JS_ATOM_number; + break; + case JS_TAG_UNDEFINED: + atom = JS_ATOM_undefined; + break; + case JS_TAG_BOOL: + atom = JS_ATOM_boolean; + break; + case JS_TAG_STRING: + atom = JS_ATOM_string; + break; + case JS_TAG_OBJECT: + { + JSObject *p; + p = JS_VALUE_GET_OBJ(op1); + if (unlikely(p->is_HTMLDDA)) + atom = JS_ATOM_undefined; + else if (JS_IsFunction(ctx, op1)) + atom = JS_ATOM_function; + else + goto obj_type; + } + break; + case JS_TAG_NULL: + obj_type: + atom = JS_ATOM_object; + break; + case JS_TAG_SYMBOL: + atom = JS_ATOM_symbol; + break; + default: + atom = JS_ATOM_unknown; + break; + } + return atom; +} + +static __exception int js_operator_delete(JSContext *ctx, JSValue *sp) +{ + JSValue op1, op2; + JSAtom atom; + int ret; + + op1 = sp[-2]; + op2 = sp[-1]; + atom = JS_ValueToAtom(ctx, op2); + if (unlikely(atom == JS_ATOM_NULL)) + return -1; + ret = JS_DeleteProperty(ctx, op1, atom, JS_PROP_THROW_STRICT); + JS_FreeAtom(ctx, atom); + if (unlikely(ret < 0)) + return -1; + JS_FreeValue(ctx, op1); + JS_FreeValue(ctx, op2); + sp[-2] = JS_NewBool(ctx, ret); + return 0; +} + +static JSValue js_throw_type_error(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + return JS_ThrowTypeError(ctx, "invalid property access"); +} + +/* XXX: not 100% compatible, but mozilla seems to use a similar + implementation to ensure that caller in non strict mode does not + throw (ES5 compatibility) */ +static JSValue js_function_proto_caller(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSFunctionBytecode *b = JS_GetFunctionBytecode(this_val); + if (!b || (b->js_mode & JS_MODE_STRICT) || !b->has_prototype) { + return js_throw_type_error(ctx, this_val, 0, NULL); + } + return JS_UNDEFINED; +} + +static JSValue js_function_proto_fileName(JSContext *ctx, + JSValueConst this_val) +{ + JSFunctionBytecode *b = JS_GetFunctionBytecode(this_val); + if (b && b->has_debug) { + return JS_AtomToString(ctx, b->debug.filename); + } + return JS_UNDEFINED; +} + +static JSValue js_function_proto_lineNumber(JSContext *ctx, + JSValueConst this_val) +{ + JSFunctionBytecode *b = JS_GetFunctionBytecode(this_val); + if (b && b->has_debug) { + return JS_NewInt32(ctx, b->debug.line_num); + } + return JS_UNDEFINED; +} + +static int js_arguments_define_own_property(JSContext *ctx, + JSValueConst this_obj, + JSAtom prop, JSValueConst val, + JSValueConst getter, JSValueConst setter, int flags) +{ + JSObject *p; + uint32_t idx; + p = JS_VALUE_GET_OBJ(this_obj); + /* convert to normal array when redefining an existing numeric field */ + if (p->fast_array && JS_AtomIsArrayIndex(ctx, &idx, prop) && + idx < p->u.array.count) { + if (convert_fast_array_to_array(ctx, p)) + return -1; + } + /* run the default define own property */ + return JS_DefineProperty(ctx, this_obj, prop, val, getter, setter, + flags | JS_PROP_NO_EXOTIC); +} + +static const JSClassExoticMethods js_arguments_exotic_methods = { + .define_own_property = js_arguments_define_own_property, +}; + +static JSValue js_build_arguments(JSContext *ctx, int argc, JSValueConst *argv) +{ + JSValue val, *tab; + JSProperty *pr; + JSObject *p; + int i; + + val = JS_NewObjectProtoClass(ctx, ctx->class_proto[JS_CLASS_OBJECT], + JS_CLASS_ARGUMENTS); + if (JS_IsException(val)) + return val; + p = JS_VALUE_GET_OBJ(val); + + /* add the length field (cannot fail) */ + pr = add_property(ctx, p, JS_ATOM_length, + JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE); + pr->u.value = JS_NewInt32(ctx, argc); + + /* initialize the fast array part */ + tab = NULL; + if (argc > 0) { + tab = js_malloc(ctx, sizeof(tab[0]) * argc); + if (!tab) { + JS_FreeValue(ctx, val); + return JS_EXCEPTION; + } + for(i = 0; i < argc; i++) { + tab[i] = JS_DupValue(ctx, argv[i]); + } + } + p->u.array.u.values = tab; + p->u.array.count = argc; + + JS_DefinePropertyValue(ctx, val, JS_ATOM_Symbol_iterator, + JS_DupValue(ctx, ctx->array_proto_values), + JS_PROP_CONFIGURABLE | JS_PROP_WRITABLE); + /* add callee property to throw a TypeError in strict mode */ + JS_DefineProperty(ctx, val, JS_ATOM_callee, JS_UNDEFINED, + ctx->throw_type_error, ctx->throw_type_error, + JS_PROP_HAS_GET | JS_PROP_HAS_SET); + return val; +} + +#define GLOBAL_VAR_OFFSET 0x40000000 +#define ARGUMENT_VAR_OFFSET 0x20000000 + +/* legacy arguments object: add references to the function arguments */ +static JSValue js_build_mapped_arguments(JSContext *ctx, int argc, + JSValueConst *argv, + JSStackFrame *sf, int arg_count) +{ + JSValue val; + JSProperty *pr; + JSObject *p; + int i; + + val = JS_NewObjectProtoClass(ctx, ctx->class_proto[JS_CLASS_OBJECT], + JS_CLASS_MAPPED_ARGUMENTS); + if (JS_IsException(val)) + return val; + p = JS_VALUE_GET_OBJ(val); + + /* add the length field (cannot fail) */ + pr = add_property(ctx, p, JS_ATOM_length, + JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE); + pr->u.value = JS_NewInt32(ctx, argc); + + for(i = 0; i < arg_count; i++) { + JSVarRef *var_ref; + var_ref = get_var_ref(ctx, sf, i, TRUE); + if (!var_ref) + goto fail; + pr = add_property(ctx, p, __JS_AtomFromUInt32(i), JS_PROP_C_W_E | JS_PROP_VARREF); + if (!pr) { + free_var_ref(ctx->rt, var_ref); + goto fail; + } + pr->u.var_ref = var_ref; + } + + /* the arguments not mapped to the arguments of the function can + be normal properties */ + for(i = arg_count; i < argc; i++) { + if (JS_DefinePropertyValueUint32(ctx, val, i, + JS_DupValue(ctx, argv[i]), + JS_PROP_C_W_E) < 0) + goto fail; + } + + JS_DefinePropertyValue(ctx, val, JS_ATOM_Symbol_iterator, + JS_DupValue(ctx, ctx->array_proto_values), + JS_PROP_CONFIGURABLE | JS_PROP_WRITABLE); + /* callee returns this function in non strict mode */ + JS_DefinePropertyValue(ctx, val, JS_ATOM_callee, + JS_DupValue(ctx, ctx->rt->current_stack_frame->cur_func), + JS_PROP_CONFIGURABLE | JS_PROP_WRITABLE); + return val; + fail: + JS_FreeValue(ctx, val); + return JS_EXCEPTION; +} + +static JSValue js_build_rest(JSContext *ctx, int first, int argc, JSValueConst *argv) +{ + JSValue val; + int i, ret; + + val = JS_NewArray(ctx); + if (JS_IsException(val)) + return val; + for (i = first; i < argc; i++) { + ret = JS_DefinePropertyValueUint32(ctx, val, i - first, + JS_DupValue(ctx, argv[i]), + JS_PROP_C_W_E); + if (ret < 0) { + JS_FreeValue(ctx, val); + return JS_EXCEPTION; + } + } + return val; +} + +static JSValue build_for_in_iterator(JSContext *ctx, JSValue obj) +{ + JSObject *p; + JSPropertyEnum *tab_atom; + int i; + JSValue enum_obj, obj1; + JSForInIterator *it; + uint32_t tag, tab_atom_count; + + tag = JS_VALUE_GET_TAG(obj); + if (tag != JS_TAG_OBJECT && tag != JS_TAG_NULL && tag != JS_TAG_UNDEFINED) { + obj = JS_ToObjectFree(ctx, obj); + } + + it = js_malloc(ctx, sizeof(*it)); + if (!it) { + JS_FreeValue(ctx, obj); + return JS_EXCEPTION; + } + enum_obj = JS_NewObjectProtoClass(ctx, JS_NULL, JS_CLASS_FOR_IN_ITERATOR); + if (JS_IsException(enum_obj)) { + js_free(ctx, it); + JS_FreeValue(ctx, obj); + return JS_EXCEPTION; + } + it->is_array = FALSE; + it->obj = obj; + it->idx = 0; + p = JS_VALUE_GET_OBJ(enum_obj); + p->u.for_in_iterator = it; + + if (tag == JS_TAG_NULL || tag == JS_TAG_UNDEFINED) + return enum_obj; + + /* fast path: assume no enumerable properties in the prototype chain */ + obj1 = JS_DupValue(ctx, obj); + for(;;) { + obj1 = JS_GetPrototypeFree(ctx, obj1); + if (JS_IsNull(obj1)) + break; + if (JS_IsException(obj1)) + goto fail; + if (JS_GetOwnPropertyNamesInternal(ctx, &tab_atom, &tab_atom_count, + JS_VALUE_GET_OBJ(obj1), + JS_GPN_STRING_MASK | JS_GPN_ENUM_ONLY)) { + JS_FreeValue(ctx, obj1); + goto fail; + } + js_free_prop_enum(ctx, tab_atom, tab_atom_count); + if (tab_atom_count != 0) { + JS_FreeValue(ctx, obj1); + goto slow_path; + } + /* must check for timeout to avoid infinite loop */ + if (js_poll_interrupts(ctx)) { + JS_FreeValue(ctx, obj1); + goto fail; + } + } + + p = JS_VALUE_GET_OBJ(obj); + + if (p->fast_array) { + JSShape *sh; + JSShapeProperty *prs; + /* check that there are no enumerable normal fields */ + sh = p->shape; + for(i = 0, prs = get_shape_prop(sh); i < sh->prop_count; i++, prs++) { + if (prs->flags & JS_PROP_ENUMERABLE) + goto normal_case; + } + /* for fast arrays, we only store the number of elements */ + it->is_array = TRUE; + it->array_length = p->u.array.count; + } else { + normal_case: + if (JS_GetOwnPropertyNamesInternal(ctx, &tab_atom, &tab_atom_count, p, + JS_GPN_STRING_MASK | JS_GPN_ENUM_ONLY)) + goto fail; + for(i = 0; i < tab_atom_count; i++) { + JS_SetPropertyInternal(ctx, enum_obj, tab_atom[i].atom, JS_NULL, 0); + } + js_free_prop_enum(ctx, tab_atom, tab_atom_count); + } + return enum_obj; + + slow_path: + /* non enumerable properties hide the enumerables ones in the + prototype chain */ + obj1 = JS_DupValue(ctx, obj); + for(;;) { + if (JS_GetOwnPropertyNamesInternal(ctx, &tab_atom, &tab_atom_count, + JS_VALUE_GET_OBJ(obj1), + JS_GPN_STRING_MASK | JS_GPN_SET_ENUM)) { + JS_FreeValue(ctx, obj1); + goto fail; + } + for(i = 0; i < tab_atom_count; i++) { + JS_DefinePropertyValue(ctx, enum_obj, tab_atom[i].atom, JS_NULL, + (tab_atom[i].is_enumerable ? + JS_PROP_ENUMERABLE : 0)); + } + js_free_prop_enum(ctx, tab_atom, tab_atom_count); + obj1 = JS_GetPrototypeFree(ctx, obj1); + if (JS_IsNull(obj1)) + break; + if (JS_IsException(obj1)) + goto fail; + /* must check for timeout to avoid infinite loop */ + if (js_poll_interrupts(ctx)) { + JS_FreeValue(ctx, obj1); + goto fail; + } + } + return enum_obj; + + fail: + JS_FreeValue(ctx, enum_obj); + return JS_EXCEPTION; +} + +/* obj -> enum_obj */ +static __exception int js_for_in_start(JSContext *ctx, JSValue *sp) +{ + sp[-1] = build_for_in_iterator(ctx, sp[-1]); + if (JS_IsException(sp[-1])) + return -1; + return 0; +} + +/* enum_obj -> enum_obj value done */ +static __exception int js_for_in_next(JSContext *ctx, JSValue *sp) +{ + JSValueConst enum_obj; + JSObject *p; + JSAtom prop; + JSForInIterator *it; + int ret; + + enum_obj = sp[-1]; + /* fail safe */ + if (JS_VALUE_GET_TAG(enum_obj) != JS_TAG_OBJECT) + goto done; + p = JS_VALUE_GET_OBJ(enum_obj); + if (p->class_id != JS_CLASS_FOR_IN_ITERATOR) + goto done; + it = p->u.for_in_iterator; + + for(;;) { + if (it->is_array) { + if (it->idx >= it->array_length) + goto done; + prop = __JS_AtomFromUInt32(it->idx); + it->idx++; + } else { + JSShape *sh = p->shape; + JSShapeProperty *prs; + if (it->idx >= sh->prop_count) + goto done; + prs = get_shape_prop(sh) + it->idx; + prop = prs->atom; + it->idx++; + if (prop == JS_ATOM_NULL || !(prs->flags & JS_PROP_ENUMERABLE)) + continue; + } + /* check if the property was deleted */ + ret = JS_HasProperty(ctx, it->obj, prop); + if (ret < 0) + return ret; + if (ret) + break; + } + /* return the property */ + sp[0] = JS_AtomToValue(ctx, prop); + sp[1] = JS_FALSE; + return 0; + done: + /* return the end */ + sp[0] = JS_UNDEFINED; + sp[1] = JS_TRUE; + return 0; +} + +static JSValue JS_GetIterator2(JSContext *ctx, JSValueConst obj, + JSValueConst method) +{ + JSValue enum_obj; + + enum_obj = JS_Call(ctx, method, obj, 0, NULL); + if (JS_IsException(enum_obj)) + return enum_obj; + if (!JS_IsObject(enum_obj)) { + JS_FreeValue(ctx, enum_obj); + return JS_ThrowTypeErrorNotAnObject(ctx); + } + return enum_obj; +} + +static JSValue JS_GetIterator(JSContext *ctx, JSValueConst obj, BOOL is_async) +{ + JSValue method, ret, sync_iter; + + if (is_async) { + method = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_asyncIterator); + if (JS_IsException(method)) + return method; + if (JS_IsUndefined(method) || JS_IsNull(method)) { + method = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_iterator); + if (JS_IsException(method)) + return method; + sync_iter = JS_GetIterator2(ctx, obj, method); + JS_FreeValue(ctx, method); + if (JS_IsException(sync_iter)) + return sync_iter; + ret = JS_CreateAsyncFromSyncIterator(ctx, sync_iter); + JS_FreeValue(ctx, sync_iter); + return ret; + } + } else { + method = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_iterator); + if (JS_IsException(method)) + return method; + } + if (!JS_IsFunction(ctx, method)) { + JS_FreeValue(ctx, method); + return JS_ThrowTypeError(ctx, "value is not iterable"); + } + ret = JS_GetIterator2(ctx, obj, method); + JS_FreeValue(ctx, method); + return ret; +} + +/* return *pdone = 2 if the iterator object is not parsed */ +static JSValue JS_IteratorNext2(JSContext *ctx, JSValueConst enum_obj, + JSValueConst method, + int argc, JSValueConst *argv, int *pdone) +{ + JSValue obj; + + /* fast path for the built-in iterators (avoid creating the + intermediate result object) */ + if (JS_IsObject(method)) { + JSObject *p = JS_VALUE_GET_OBJ(method); + if (p->class_id == JS_CLASS_C_FUNCTION && + p->u.cfunc.cproto == JS_CFUNC_iterator_next) { + JSCFunctionType func; + JSValueConst args[1]; + + /* in case the function expects one argument */ + if (argc == 0) { + args[0] = JS_UNDEFINED; + argv = args; + } + func = p->u.cfunc.c_function; + return func.iterator_next(ctx, enum_obj, argc, argv, + pdone, p->u.cfunc.magic); + } + } + obj = JS_Call(ctx, method, enum_obj, argc, argv); + if (JS_IsException(obj)) + goto fail; + if (!JS_IsObject(obj)) { + JS_FreeValue(ctx, obj); + JS_ThrowTypeError(ctx, "iterator must return an object"); + goto fail; + } + *pdone = 2; + return obj; + fail: + *pdone = FALSE; + return JS_EXCEPTION; +} + +static JSValue JS_IteratorNext(JSContext *ctx, JSValueConst enum_obj, + JSValueConst method, + int argc, JSValueConst *argv, BOOL *pdone) +{ + JSValue obj, value, done_val; + int done; + + obj = JS_IteratorNext2(ctx, enum_obj, method, argc, argv, &done); + if (JS_IsException(obj)) + goto fail; + if (done != 2) { + *pdone = done; + return obj; + } else { + done_val = JS_GetProperty(ctx, obj, JS_ATOM_done); + if (JS_IsException(done_val)) + goto fail; + *pdone = JS_ToBoolFree(ctx, done_val); + value = JS_UNDEFINED; + if (!*pdone) { + value = JS_GetProperty(ctx, obj, JS_ATOM_value); + } + JS_FreeValue(ctx, obj); + return value; + } + fail: + JS_FreeValue(ctx, obj); + *pdone = FALSE; + return JS_EXCEPTION; +} + +/* return < 0 in case of exception */ +static int JS_IteratorClose(JSContext *ctx, JSValueConst enum_obj, + BOOL is_exception_pending) +{ + JSValue method, ret, ex_obj; + int res; + + if (is_exception_pending) { + ex_obj = ctx->rt->current_exception; + ctx->rt->current_exception = JS_NULL; + res = -1; + } else { + ex_obj = JS_UNDEFINED; + res = 0; + } + method = JS_GetProperty(ctx, enum_obj, JS_ATOM_return); + if (JS_IsException(method)) { + res = -1; + goto done; + } + if (JS_IsUndefined(method) || JS_IsNull(method)) { + goto done; + } + ret = JS_CallFree(ctx, method, enum_obj, 0, NULL); + if (!is_exception_pending) { + if (JS_IsException(ret)) { + res = -1; + } else if (!JS_IsObject(ret)) { + JS_ThrowTypeErrorNotAnObject(ctx); + res = -1; + } + } + JS_FreeValue(ctx, ret); + done: + if (is_exception_pending) { + JS_Throw(ctx, ex_obj); + } + return res; +} + +/* obj -> enum_rec (3 slots) */ +static __exception int js_for_of_start(JSContext *ctx, JSValue *sp, + BOOL is_async) +{ + JSValue op1, obj, method; + op1 = sp[-1]; + obj = JS_GetIterator(ctx, op1, is_async); + if (JS_IsException(obj)) + return -1; + JS_FreeValue(ctx, op1); + sp[-1] = obj; + method = JS_GetProperty(ctx, obj, JS_ATOM_next); + if (JS_IsException(method)) + return -1; + sp[0] = method; + return 0; +} + +/* enum_rec [objs] -> enum_rec [objs] value done. There are 'offset' + objs. If 'done' is true or in case of exception, 'enum_rec' is set + to undefined. If 'done' is true, 'value' is always set to + undefined. */ +static __exception int js_for_of_next(JSContext *ctx, JSValue *sp, int offset) +{ + JSValue value = JS_UNDEFINED; + int done = 1; + + if (likely(!JS_IsUndefined(sp[offset]))) { + value = JS_IteratorNext(ctx, sp[offset], sp[offset + 1], 0, NULL, &done); + if (JS_IsException(value)) + done = -1; + if (done) { + /* value is JS_UNDEFINED or JS_EXCEPTION */ + /* replace the iteration object with undefined */ + JS_FreeValue(ctx, sp[offset]); + sp[offset] = JS_UNDEFINED; + if (done < 0) { + return -1; + } else { + JS_FreeValue(ctx, value); + value = JS_UNDEFINED; + } + } + } + sp[0] = value; + sp[1] = JS_NewBool(ctx, done); + return 0; +} + +static JSValue JS_IteratorGetCompleteValue(JSContext *ctx, JSValueConst obj, + BOOL *pdone) +{ + JSValue done_val, value; + BOOL done; + done_val = JS_GetProperty(ctx, obj, JS_ATOM_done); + if (JS_IsException(done_val)) + goto fail; + done = JS_ToBoolFree(ctx, done_val); + value = JS_GetProperty(ctx, obj, JS_ATOM_value); + if (JS_IsException(value)) + goto fail; + *pdone = done; + return value; + fail: + *pdone = FALSE; + return JS_EXCEPTION; +} + +static __exception int js_iterator_get_value_done(JSContext *ctx, JSValue *sp) +{ + JSValue obj, value; + BOOL done; + obj = sp[-1]; + if (!JS_IsObject(obj)) { + JS_ThrowTypeError(ctx, "iterator must return an object"); + return -1; + } + value = JS_IteratorGetCompleteValue(ctx, obj, &done); + if (JS_IsException(value)) + return -1; + JS_FreeValue(ctx, obj); + sp[-1] = value; + sp[0] = JS_NewBool(ctx, done); + return 0; +} + +static JSValue js_create_iterator_result(JSContext *ctx, + JSValue val, + BOOL done) +{ + JSValue obj; + obj = JS_NewObject(ctx); + if (JS_IsException(obj)) { + JS_FreeValue(ctx, val); + return obj; + } + if (JS_DefinePropertyValue(ctx, obj, JS_ATOM_value, + val, JS_PROP_C_W_E) < 0) { + goto fail; + } + if (JS_DefinePropertyValue(ctx, obj, JS_ATOM_done, + JS_NewBool(ctx, done), JS_PROP_C_W_E) < 0) { + fail: + JS_FreeValue(ctx, obj); + return JS_EXCEPTION; + } + return obj; +} + +static JSValue js_array_iterator_next(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv, + BOOL *pdone, int magic); + +static JSValue js_create_array_iterator(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv, int magic); + +static BOOL js_is_fast_array(JSContext *ctx, JSValueConst obj) +{ + /* Try and handle fast arrays explicitly */ + if (JS_VALUE_GET_TAG(obj) == JS_TAG_OBJECT) { + JSObject *p = JS_VALUE_GET_OBJ(obj); + if (p->class_id == JS_CLASS_ARRAY && p->fast_array) { + return TRUE; + } + } + return FALSE; +} + +/* Access an Array's internal JSValue array if available */ +static BOOL js_get_fast_array(JSContext *ctx, JSValueConst obj, + JSValue **arrpp, uint32_t *countp) +{ + /* Try and handle fast arrays explicitly */ + if (JS_VALUE_GET_TAG(obj) == JS_TAG_OBJECT) { + JSObject *p = JS_VALUE_GET_OBJ(obj); + if (p->class_id == JS_CLASS_ARRAY && p->fast_array) { + *countp = p->u.array.count; + *arrpp = p->u.array.u.values; + return TRUE; + } + } + return FALSE; +} + +static __exception int js_append_enumerate(JSContext *ctx, JSValue *sp) +{ + JSValue iterator, enumobj, method, value; + int is_array_iterator; + JSValue *arrp; + uint32_t i, count32, pos; + + if (JS_VALUE_GET_TAG(sp[-2]) != JS_TAG_INT) { + JS_ThrowInternalError(ctx, "invalid index for append"); + return -1; + } + + pos = JS_VALUE_GET_INT(sp[-2]); + + /* XXX: further optimisations: + - use ctx->array_proto_values? + - check if array_iterator_prototype next method is built-in and + avoid constructing actual iterator object? + - build this into js_for_of_start and use in all `for (x of o)` loops + */ + iterator = JS_GetProperty(ctx, sp[-1], JS_ATOM_Symbol_iterator); + if (JS_IsException(iterator)) + return -1; + is_array_iterator = JS_IsCFunction(ctx, iterator, + (JSCFunction *)js_create_array_iterator, + JS_ITERATOR_KIND_VALUE); + JS_FreeValue(ctx, iterator); + + enumobj = JS_GetIterator(ctx, sp[-1], FALSE); + if (JS_IsException(enumobj)) + return -1; + method = JS_GetProperty(ctx, enumobj, JS_ATOM_next); + if (JS_IsException(method)) { + JS_FreeValue(ctx, enumobj); + return -1; + } + if (is_array_iterator + && JS_IsCFunction(ctx, method, (JSCFunction *)js_array_iterator_next, 0) + && js_get_fast_array(ctx, sp[-1], &arrp, &count32)) { + uint32_t len; + if (js_get_length32(ctx, &len, sp[-1])) + goto exception; + /* if len > count32, the elements >= count32 might be read in + the prototypes and might have side effects */ + if (len != count32) + goto general_case; + /* Handle fast arrays explicitly */ + for (i = 0; i < count32; i++) { + if (JS_DefinePropertyValueUint32(ctx, sp[-3], pos++, + JS_DupValue(ctx, arrp[i]), JS_PROP_C_W_E) < 0) + goto exception; + } + } else { + general_case: + for (;;) { + BOOL done; + value = JS_IteratorNext(ctx, enumobj, method, 0, NULL, &done); + if (JS_IsException(value)) + goto exception; + if (done) { + /* value is JS_UNDEFINED */ + break; + } + if (JS_DefinePropertyValueUint32(ctx, sp[-3], pos++, value, JS_PROP_C_W_E) < 0) + goto exception; + } + } + /* Note: could raise an error if too many elements */ + sp[-2] = JS_NewInt32(ctx, pos); + JS_FreeValue(ctx, enumobj); + JS_FreeValue(ctx, method); + return 0; + +exception: + JS_IteratorClose(ctx, enumobj, TRUE); + JS_FreeValue(ctx, enumobj); + JS_FreeValue(ctx, method); + return -1; +} + +static __exception int JS_CopyDataProperties(JSContext *ctx, + JSValueConst target, + JSValueConst source, + JSValueConst excluded, + BOOL setprop) +{ + JSPropertyEnum *tab_atom; + JSValue val; + uint32_t i, tab_atom_count; + JSObject *p; + JSObject *pexcl = NULL; + int ret, gpn_flags; + JSPropertyDescriptor desc; + BOOL is_enumerable; + + if (JS_VALUE_GET_TAG(source) != JS_TAG_OBJECT) + return 0; + + if (JS_VALUE_GET_TAG(excluded) == JS_TAG_OBJECT) + pexcl = JS_VALUE_GET_OBJ(excluded); + + p = JS_VALUE_GET_OBJ(source); + + gpn_flags = JS_GPN_STRING_MASK | JS_GPN_SYMBOL_MASK | JS_GPN_ENUM_ONLY; + if (p->is_exotic) { + const JSClassExoticMethods *em = ctx->rt->class_array[p->class_id].exotic; + /* cannot use JS_GPN_ENUM_ONLY with e.g. proxies because it + introduces a visible change */ + if (em && em->get_own_property_names) { + gpn_flags &= ~JS_GPN_ENUM_ONLY; + } + } + if (JS_GetOwnPropertyNamesInternal(ctx, &tab_atom, &tab_atom_count, p, + gpn_flags)) + return -1; + + for (i = 0; i < tab_atom_count; i++) { + if (pexcl) { + ret = JS_GetOwnPropertyInternal(ctx, NULL, pexcl, tab_atom[i].atom); + if (ret) { + if (ret < 0) + goto exception; + continue; + } + } + if (!(gpn_flags & JS_GPN_ENUM_ONLY)) { + /* test if the property is enumerable */ + ret = JS_GetOwnPropertyInternal(ctx, &desc, p, tab_atom[i].atom); + if (ret < 0) + goto exception; + if (!ret) + continue; + is_enumerable = (desc.flags & JS_PROP_ENUMERABLE) != 0; + js_free_desc(ctx, &desc); + if (!is_enumerable) + continue; + } + val = JS_GetProperty(ctx, source, tab_atom[i].atom); + if (JS_IsException(val)) + goto exception; + if (setprop) + ret = JS_SetProperty(ctx, target, tab_atom[i].atom, val); + else + ret = JS_DefinePropertyValue(ctx, target, tab_atom[i].atom, val, + JS_PROP_C_W_E); + if (ret < 0) + goto exception; + } + js_free_prop_enum(ctx, tab_atom, tab_atom_count); + return 0; + exception: + js_free_prop_enum(ctx, tab_atom, tab_atom_count); + return -1; +} + +/* only valid inside C functions */ +static JSValueConst JS_GetActiveFunction(JSContext *ctx) +{ + return ctx->rt->current_stack_frame->cur_func; +} + +static JSVarRef *get_var_ref(JSContext *ctx, JSStackFrame *sf, + int var_idx, BOOL is_arg) +{ + JSVarRef *var_ref; + struct list_head *el; + + list_for_each(el, &sf->var_ref_list) { + var_ref = list_entry(el, JSVarRef, header.link); + if (var_ref->var_idx == var_idx && var_ref->is_arg == is_arg) { + var_ref->header.ref_count++; + return var_ref; + } + } + /* create a new one */ + var_ref = js_malloc(ctx, sizeof(JSVarRef)); + if (!var_ref) + return NULL; + var_ref->header.ref_count = 1; + var_ref->is_detached = FALSE; + var_ref->is_arg = is_arg; + var_ref->var_idx = var_idx; + list_add_tail(&var_ref->header.link, &sf->var_ref_list); + if (is_arg) + var_ref->pvalue = &sf->arg_buf[var_idx]; + else + var_ref->pvalue = &sf->var_buf[var_idx]; + var_ref->value = JS_UNDEFINED; + return var_ref; +} + +static JSValue js_closure2(JSContext *ctx, JSValue func_obj, + JSFunctionBytecode *b, + JSVarRef **cur_var_refs, + JSStackFrame *sf) +{ + JSObject *p; + JSVarRef **var_refs; + int i; + + p = JS_VALUE_GET_OBJ(func_obj); + p->u.func.function_bytecode = b; + p->u.func.home_object = NULL; + p->u.func.var_refs = NULL; + if (b->closure_var_count) { + var_refs = js_mallocz(ctx, sizeof(var_refs[0]) * b->closure_var_count); + if (!var_refs) + goto fail; + p->u.func.var_refs = var_refs; + for(i = 0; i < b->closure_var_count; i++) { + JSClosureVar *cv = &b->closure_var[i]; + JSVarRef *var_ref; + if (cv->is_local) { + /* reuse the existing variable reference if it already exists */ + var_ref = get_var_ref(ctx, sf, cv->var_idx, cv->is_arg); + if (!var_ref) + goto fail; + } else { + var_ref = cur_var_refs[cv->var_idx]; + var_ref->header.ref_count++; + } + var_refs[i] = var_ref; + } + } + return func_obj; + fail: + /* bfunc is freed when func_obj is freed */ + JS_FreeValue(ctx, func_obj); + return JS_EXCEPTION; +} + +static JSValue js_instantiate_prototype(JSContext *ctx, JSObject *p, JSAtom atom, void *opaque) +{ + JSValue obj, this_val; + int ret; + + this_val = JS_MKPTR(JS_TAG_OBJECT, p); + obj = JS_NewObject(ctx); + if (JS_IsException(obj)) + return JS_EXCEPTION; + set_cycle_flag(ctx, obj); + set_cycle_flag(ctx, this_val); + ret = JS_DefinePropertyValue(ctx, obj, JS_ATOM_constructor, + JS_DupValue(ctx, this_val), + JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE); + if (ret < 0) { + JS_FreeValue(ctx, obj); + return JS_EXCEPTION; + } + return obj; +} + +static const uint16_t func_kind_to_class_id[] = { + [JS_FUNC_NORMAL] = JS_CLASS_BYTECODE_FUNCTION, + [JS_FUNC_GENERATOR] = JS_CLASS_GENERATOR_FUNCTION, + [JS_FUNC_ASYNC] = JS_CLASS_ASYNC_FUNCTION, + [JS_FUNC_ASYNC_GENERATOR] = JS_CLASS_ASYNC_GENERATOR_FUNCTION, +}; + +static JSValue js_closure(JSContext *ctx, JSValue bfunc, + JSVarRef **cur_var_refs, + JSStackFrame *sf) +{ + JSFunctionBytecode *b; + JSValue func_obj; + JSAtom name_atom; + + b = JS_VALUE_GET_PTR(bfunc); + func_obj = JS_NewObjectClass(ctx, func_kind_to_class_id[b->func_kind]); + if (JS_IsException(func_obj)) { + JS_FreeValue(ctx, bfunc); + return JS_EXCEPTION; + } + func_obj = js_closure2(ctx, func_obj, b, cur_var_refs, sf); + if (JS_IsException(func_obj)) { + /* bfunc has been freed */ + goto fail; + } + name_atom = b->func_name; + if (name_atom == JS_ATOM_NULL) + name_atom = JS_ATOM_empty_string; + js_function_set_properties(ctx, func_obj, name_atom, + b->defined_arg_count); + + if (b->func_kind & JS_FUNC_GENERATOR) { + JSValue proto; + int proto_class_id; + /* generators have a prototype field which is used as + prototype for the generator object */ + if (b->func_kind == JS_FUNC_ASYNC_GENERATOR) + proto_class_id = JS_CLASS_ASYNC_GENERATOR; + else + proto_class_id = JS_CLASS_GENERATOR; + proto = JS_NewObjectProto(ctx, ctx->class_proto[proto_class_id]); + if (JS_IsException(proto)) + goto fail; + JS_DefinePropertyValue(ctx, func_obj, JS_ATOM_prototype, proto, + JS_PROP_WRITABLE); + } else if (b->has_prototype) { + /* add the 'prototype' property: delay instantiation to avoid + creating cycles for every javascript function. The prototype + object is created on the fly when first accessed */ + JS_SetConstructorBit(ctx, func_obj, TRUE); + JS_DefineAutoInitProperty(ctx, func_obj, JS_ATOM_prototype, + JS_AUTOINIT_ID_PROTOTYPE, NULL, + JS_PROP_WRITABLE); + } + return func_obj; + fail: + /* bfunc is freed when func_obj is freed */ + JS_FreeValue(ctx, func_obj); + return JS_EXCEPTION; +} + +#define JS_DEFINE_CLASS_HAS_HERITAGE (1 << 0) + +static int js_op_define_class(JSContext *ctx, JSValue *sp, + JSAtom class_name, int class_flags, + JSVarRef **cur_var_refs, + JSStackFrame *sf, BOOL is_computed_name) +{ + JSValue bfunc, parent_class, proto = JS_UNDEFINED; + JSValue ctor = JS_UNDEFINED, parent_proto = JS_UNDEFINED; + JSFunctionBytecode *b; + + parent_class = sp[-2]; + bfunc = sp[-1]; + + if (class_flags & JS_DEFINE_CLASS_HAS_HERITAGE) { + if (JS_IsNull(parent_class)) { + parent_proto = JS_NULL; + parent_class = JS_DupValue(ctx, ctx->function_proto); + } else { + if (!JS_IsConstructor(ctx, parent_class)) { + JS_ThrowTypeError(ctx, "parent class must be constructor"); + goto fail; + } + parent_proto = JS_GetProperty(ctx, parent_class, JS_ATOM_prototype); + if (JS_IsException(parent_proto)) + goto fail; + if (!JS_IsNull(parent_proto) && !JS_IsObject(parent_proto)) { + JS_ThrowTypeError(ctx, "parent prototype must be an object or null"); + goto fail; + } + } + } else { + /* parent_class is JS_UNDEFINED in this case */ + parent_proto = JS_DupValue(ctx, ctx->class_proto[JS_CLASS_OBJECT]); + parent_class = JS_DupValue(ctx, ctx->function_proto); + } + proto = JS_NewObjectProto(ctx, parent_proto); + if (JS_IsException(proto)) + goto fail; + + b = JS_VALUE_GET_PTR(bfunc); + assert(b->func_kind == JS_FUNC_NORMAL); + ctor = JS_NewObjectProtoClass(ctx, parent_class, + JS_CLASS_BYTECODE_FUNCTION); + if (JS_IsException(ctor)) + goto fail; + ctor = js_closure2(ctx, ctor, b, cur_var_refs, sf); + bfunc = JS_UNDEFINED; + if (JS_IsException(ctor)) + goto fail; + js_method_set_home_object(ctx, ctor, proto); + JS_SetConstructorBit(ctx, ctor, TRUE); + + JS_DefinePropertyValue(ctx, ctor, JS_ATOM_length, + JS_NewInt32(ctx, b->defined_arg_count), + JS_PROP_CONFIGURABLE); + + if (is_computed_name) { + if (JS_DefineObjectNameComputed(ctx, ctor, sp[-3], + JS_PROP_CONFIGURABLE) < 0) + goto fail; + } else { + if (JS_DefineObjectName(ctx, ctor, class_name, JS_PROP_CONFIGURABLE) < 0) + goto fail; + } + + /* the constructor property must be first. It can be overriden by + computed property names */ + if (JS_DefinePropertyValue(ctx, proto, JS_ATOM_constructor, + JS_DupValue(ctx, ctor), + JS_PROP_CONFIGURABLE | + JS_PROP_WRITABLE | JS_PROP_THROW) < 0) + goto fail; + /* set the prototype property */ + if (JS_DefinePropertyValue(ctx, ctor, JS_ATOM_prototype, + JS_DupValue(ctx, proto), JS_PROP_THROW) < 0) + goto fail; + set_cycle_flag(ctx, ctor); + set_cycle_flag(ctx, proto); + + JS_FreeValue(ctx, parent_proto); + JS_FreeValue(ctx, parent_class); + + sp[-2] = ctor; + sp[-1] = proto; + return 0; + fail: + JS_FreeValue(ctx, parent_class); + JS_FreeValue(ctx, parent_proto); + JS_FreeValue(ctx, bfunc); + JS_FreeValue(ctx, proto); + JS_FreeValue(ctx, ctor); + sp[-2] = JS_UNDEFINED; + sp[-1] = JS_UNDEFINED; + return -1; +} + +static void close_var_refs(JSRuntime *rt, JSStackFrame *sf) +{ + struct list_head *el, *el1; + JSVarRef *var_ref; + int var_idx; + + list_for_each_safe(el, el1, &sf->var_ref_list) { + var_ref = list_entry(el, JSVarRef, header.link); + var_idx = var_ref->var_idx; + if (var_ref->is_arg) + var_ref->value = JS_DupValueRT(rt, sf->arg_buf[var_idx]); + else + var_ref->value = JS_DupValueRT(rt, sf->var_buf[var_idx]); + var_ref->pvalue = &var_ref->value; + /* the reference is no longer to a local variable */ + var_ref->is_detached = TRUE; + add_gc_object(rt, &var_ref->header, JS_GC_OBJ_TYPE_VAR_REF); + } +} + +static void close_lexical_var(JSContext *ctx, JSStackFrame *sf, int idx, int is_arg) +{ + struct list_head *el, *el1; + JSVarRef *var_ref; + int var_idx = idx; + + list_for_each_safe(el, el1, &sf->var_ref_list) { + var_ref = list_entry(el, JSVarRef, header.link); + if (var_idx == var_ref->var_idx && var_ref->is_arg == is_arg) { + var_ref->value = JS_DupValue(ctx, sf->var_buf[var_idx]); + var_ref->pvalue = &var_ref->value; + list_del(&var_ref->header.link); + /* the reference is no longer to a local variable */ + var_ref->is_detached = TRUE; + add_gc_object(ctx->rt, &var_ref->header, JS_GC_OBJ_TYPE_VAR_REF); + } + } +} + +#define JS_CALL_FLAG_COPY_ARGV (1 << 1) +#define JS_CALL_FLAG_GENERATOR (1 << 2) + +static JSValue js_call_c_function(JSContext *ctx, JSValueConst func_obj, + JSValueConst this_obj, + int argc, JSValueConst *argv, int flags) +{ + JSRuntime *rt = ctx->rt; + JSCFunctionType func; + JSObject *p; + JSStackFrame sf_s, *sf = &sf_s, *prev_sf; + JSValue ret_val; + JSValueConst *arg_buf; + int arg_count, i; + JSCFunctionEnum cproto; + + p = JS_VALUE_GET_OBJ(func_obj); + cproto = p->u.cfunc.cproto; + arg_count = p->u.cfunc.length; + + /* better to always check stack overflow */ + if (js_check_stack_overflow(rt, sizeof(arg_buf[0]) * arg_count)) + return JS_ThrowStackOverflow(ctx); + + prev_sf = rt->current_stack_frame; + sf->prev_frame = prev_sf; + rt->current_stack_frame = sf; + ctx = p->u.cfunc.realm; /* change the current realm */ + +#ifdef CONFIG_BIGNUM + /* we only propagate the bignum mode as some runtime functions + test it */ + if (prev_sf) + sf->js_mode = prev_sf->js_mode & JS_MODE_MATH; + else + sf->js_mode = 0; +#else + sf->js_mode = 0; +#endif + sf->cur_func = (JSValue)func_obj; + sf->arg_count = argc; + arg_buf = argv; + + if (unlikely(argc < arg_count)) { + /* ensure that at least argc_count arguments are readable */ + arg_buf = alloca(sizeof(arg_buf[0]) * arg_count); + for(i = 0; i < argc; i++) + arg_buf[i] = argv[i]; + for(i = argc; i < arg_count; i++) + arg_buf[i] = JS_UNDEFINED; + sf->arg_count = arg_count; + } + sf->arg_buf = (JSValue*)arg_buf; + + func = p->u.cfunc.c_function; + switch(cproto) { + case JS_CFUNC_constructor: + case JS_CFUNC_constructor_or_func: + if (!(flags & JS_CALL_FLAG_CONSTRUCTOR)) { + if (cproto == JS_CFUNC_constructor) { + not_a_constructor: + ret_val = JS_ThrowTypeError(ctx, "must be called with new"); + break; + } else { + this_obj = JS_UNDEFINED; + } + } + /* here this_obj is new_target */ + /* fall thru */ + case JS_CFUNC_generic: + ret_val = func.generic(ctx, this_obj, argc, arg_buf); + break; + case JS_CFUNC_constructor_magic: + case JS_CFUNC_constructor_or_func_magic: + if (!(flags & JS_CALL_FLAG_CONSTRUCTOR)) { + if (cproto == JS_CFUNC_constructor_magic) { + goto not_a_constructor; + } else { + this_obj = JS_UNDEFINED; + } + } + /* fall thru */ + case JS_CFUNC_generic_magic: + ret_val = func.generic_magic(ctx, this_obj, argc, arg_buf, + p->u.cfunc.magic); + break; + case JS_CFUNC_getter: + ret_val = func.getter(ctx, this_obj); + break; + case JS_CFUNC_setter: + ret_val = func.setter(ctx, this_obj, arg_buf[0]); + break; + case JS_CFUNC_getter_magic: + ret_val = func.getter_magic(ctx, this_obj, p->u.cfunc.magic); + break; + case JS_CFUNC_setter_magic: + ret_val = func.setter_magic(ctx, this_obj, arg_buf[0], p->u.cfunc.magic); + break; + case JS_CFUNC_f_f: + { + double d1; + + if (unlikely(JS_ToFloat64(ctx, &d1, arg_buf[0]))) { + ret_val = JS_EXCEPTION; + break; + } + ret_val = JS_NewFloat64(ctx, func.f_f(d1)); + } + break; + case JS_CFUNC_f_f_f: + { + double d1, d2; + + if (unlikely(JS_ToFloat64(ctx, &d1, arg_buf[0]))) { + ret_val = JS_EXCEPTION; + break; + } + if (unlikely(JS_ToFloat64(ctx, &d2, arg_buf[1]))) { + ret_val = JS_EXCEPTION; + break; + } + ret_val = JS_NewFloat64(ctx, func.f_f_f(d1, d2)); + } + break; + case JS_CFUNC_iterator_next: + { + int done; + ret_val = func.iterator_next(ctx, this_obj, argc, arg_buf, + &done, p->u.cfunc.magic); + if (!JS_IsException(ret_val) && done != 2) { + ret_val = js_create_iterator_result(ctx, ret_val, done); + } + } + break; + default: + abort(); + } + + rt->current_stack_frame = sf->prev_frame; + return ret_val; +} + +static JSValue js_call_bound_function(JSContext *ctx, JSValueConst func_obj, + JSValueConst this_obj, + int argc, JSValueConst *argv, int flags) +{ + JSObject *p; + JSBoundFunction *bf; + JSValueConst *arg_buf, new_target; + int arg_count, i; + + p = JS_VALUE_GET_OBJ(func_obj); + bf = p->u.bound_function; + arg_count = bf->argc + argc; + if (js_check_stack_overflow(ctx->rt, sizeof(JSValue) * arg_count)) + return JS_ThrowStackOverflow(ctx); + arg_buf = alloca(sizeof(JSValue) * arg_count); + for(i = 0; i < bf->argc; i++) { + arg_buf[i] = bf->argv[i]; + } + for(i = 0; i < argc; i++) { + arg_buf[bf->argc + i] = argv[i]; + } + if (flags & JS_CALL_FLAG_CONSTRUCTOR) { + new_target = this_obj; + if (js_same_value(ctx, func_obj, new_target)) + new_target = bf->func_obj; + return JS_CallConstructor2(ctx, bf->func_obj, new_target, + arg_count, arg_buf); + } else { + return JS_Call(ctx, bf->func_obj, bf->this_val, + arg_count, arg_buf); + } +} + +/* argument of OP_special_object */ +typedef enum { + OP_SPECIAL_OBJECT_ARGUMENTS, + OP_SPECIAL_OBJECT_MAPPED_ARGUMENTS, + OP_SPECIAL_OBJECT_THIS_FUNC, + OP_SPECIAL_OBJECT_NEW_TARGET, + OP_SPECIAL_OBJECT_HOME_OBJECT, + OP_SPECIAL_OBJECT_VAR_OBJECT, + OP_SPECIAL_OBJECT_IMPORT_META, +} OPSpecialObjectEnum; + +#define FUNC_RET_AWAIT 0 +#define FUNC_RET_YIELD 1 +#define FUNC_RET_YIELD_STAR 2 + +/* argv[] is modified if (flags & JS_CALL_FLAG_COPY_ARGV) = 0. */ +static JSValue JS_CallInternal(JSContext *caller_ctx, JSValueConst func_obj, + JSValueConst this_obj, JSValueConst new_target, + int argc, JSValue *argv, int flags) +{ + JSRuntime *rt = caller_ctx->rt; + JSContext *ctx; + JSObject *p; + JSFunctionBytecode *b; + JSStackFrame sf_s, *sf = &sf_s; + const uint8_t *pc; + int opcode, arg_allocated_size, i; + JSValue *local_buf, *stack_buf, *var_buf, *arg_buf, *sp, ret_val, *pval; + JSVarRef **var_refs; + size_t alloca_size; + +#if !DIRECT_DISPATCH +#define SWITCH(pc) switch (opcode = *pc++) +#define CASE(op) case op +#define DEFAULT default +#define BREAK break +#else + static const void * const dispatch_table[256] = { +#define DEF(id, size, n_pop, n_push, f) && case_OP_ ## id, +#if SHORT_OPCODES +#define def(id, size, n_pop, n_push, f) +#else +#define def(id, size, n_pop, n_push, f) && case_default, +#endif +#include "quickjs-opcode.h" + [ OP_COUNT ... 255 ] = &&case_default + }; +#define SWITCH(pc) goto *dispatch_table[opcode = *pc++]; +#define CASE(op) case_ ## op +#define DEFAULT case_default +#define BREAK SWITCH(pc) +#endif + + if (js_poll_interrupts(caller_ctx)) + return JS_EXCEPTION; + if (unlikely(JS_VALUE_GET_TAG(func_obj) != JS_TAG_OBJECT)) { + if (flags & JS_CALL_FLAG_GENERATOR) { + JSAsyncFunctionState *s = JS_VALUE_GET_PTR(func_obj); + /* func_obj get contains a pointer to JSFuncAsyncState */ + /* the stack frame is already allocated */ + sf = &s->frame; + p = JS_VALUE_GET_OBJ(sf->cur_func); + b = p->u.func.function_bytecode; + ctx = b->realm; + var_refs = p->u.func.var_refs; + local_buf = arg_buf = sf->arg_buf; + var_buf = sf->var_buf; + stack_buf = sf->var_buf + b->var_count; + sp = sf->cur_sp; + sf->cur_sp = NULL; /* cur_sp is NULL if the function is running */ + pc = sf->cur_pc; + sf->prev_frame = rt->current_stack_frame; + rt->current_stack_frame = sf; + if (s->throw_flag) + goto exception; + else + goto restart; + } else { + goto not_a_function; + } + } + p = JS_VALUE_GET_OBJ(func_obj); + if (unlikely(p->class_id != JS_CLASS_BYTECODE_FUNCTION)) { + JSClassCall *call_func; + call_func = rt->class_array[p->class_id].call; + if (!call_func) { + not_a_function: + return JS_ThrowTypeError(caller_ctx, "not a function"); + } + return call_func(caller_ctx, func_obj, this_obj, argc, + (JSValueConst *)argv, flags); + } + b = p->u.func.function_bytecode; + + if (unlikely(argc < b->arg_count || (flags & JS_CALL_FLAG_COPY_ARGV))) { + arg_allocated_size = b->arg_count; + } else { + arg_allocated_size = 0; + } + + alloca_size = sizeof(JSValue) * (arg_allocated_size + b->var_count + + b->stack_size); + if (js_check_stack_overflow(rt, alloca_size)) + return JS_ThrowStackOverflow(caller_ctx); + + sf->js_mode = b->js_mode; + arg_buf = argv; + sf->arg_count = argc; + sf->cur_func = (JSValue)func_obj; + init_list_head(&sf->var_ref_list); + var_refs = p->u.func.var_refs; + + local_buf = alloca(alloca_size); + if (unlikely(arg_allocated_size)) { + int n = min_int(argc, b->arg_count); + arg_buf = local_buf; + for(i = 0; i < n; i++) + arg_buf[i] = JS_DupValue(caller_ctx, argv[i]); + for(; i < b->arg_count; i++) + arg_buf[i] = JS_UNDEFINED; + sf->arg_count = b->arg_count; + } + var_buf = local_buf + arg_allocated_size; + sf->var_buf = var_buf; + sf->arg_buf = arg_buf; + + for(i = 0; i < b->var_count; i++) + var_buf[i] = JS_UNDEFINED; + + stack_buf = var_buf + b->var_count; + sp = stack_buf; + pc = b->byte_code_buf; + sf->prev_frame = rt->current_stack_frame; + rt->current_stack_frame = sf; + ctx = b->realm; /* set the current realm */ + + restart: + for(;;) { + int call_argc; + JSValue *call_argv; + + SWITCH(pc) { + CASE(OP_push_i32): + *sp++ = JS_NewInt32(ctx, get_u32(pc)); + pc += 4; + BREAK; + CASE(OP_push_const): + *sp++ = JS_DupValue(ctx, b->cpool[get_u32(pc)]); + pc += 4; + BREAK; +#if SHORT_OPCODES + CASE(OP_push_minus1): + CASE(OP_push_0): + CASE(OP_push_1): + CASE(OP_push_2): + CASE(OP_push_3): + CASE(OP_push_4): + CASE(OP_push_5): + CASE(OP_push_6): + CASE(OP_push_7): + *sp++ = JS_NewInt32(ctx, opcode - OP_push_0); + BREAK; + CASE(OP_push_i8): + *sp++ = JS_NewInt32(ctx, get_i8(pc)); + pc += 1; + BREAK; + CASE(OP_push_i16): + *sp++ = JS_NewInt32(ctx, get_i16(pc)); + pc += 2; + BREAK; + CASE(OP_push_const8): + *sp++ = JS_DupValue(ctx, b->cpool[*pc++]); + BREAK; + CASE(OP_fclosure8): + *sp++ = js_closure(ctx, JS_DupValue(ctx, b->cpool[*pc++]), var_refs, sf); + if (unlikely(JS_IsException(sp[-1]))) + goto exception; + BREAK; + CASE(OP_push_empty_string): + *sp++ = JS_AtomToString(ctx, JS_ATOM_empty_string); + BREAK; + CASE(OP_get_length): + { + JSValue val; + + val = JS_GetProperty(ctx, sp[-1], JS_ATOM_length); + if (unlikely(JS_IsException(val))) + goto exception; + JS_FreeValue(ctx, sp[-1]); + sp[-1] = val; + } + BREAK; +#endif + CASE(OP_push_atom_value): + *sp++ = JS_AtomToValue(ctx, get_u32(pc)); + pc += 4; + BREAK; + CASE(OP_undefined): + *sp++ = JS_UNDEFINED; + BREAK; + CASE(OP_null): + *sp++ = JS_NULL; + BREAK; + CASE(OP_push_this): + /* OP_push_this is only called at the start of a function */ + { + JSValue val; + if (!(b->js_mode & JS_MODE_STRICT)) { + uint32_t tag = JS_VALUE_GET_TAG(this_obj); + if (likely(tag == JS_TAG_OBJECT)) + goto normal_this; + if (tag == JS_TAG_NULL || tag == JS_TAG_UNDEFINED) { + val = JS_DupValue(ctx, ctx->global_obj); + } else { + val = JS_ToObject(ctx, this_obj); + if (JS_IsException(val)) + goto exception; + } + } else { + normal_this: + val = JS_DupValue(ctx, this_obj); + } + *sp++ = val; + } + BREAK; + CASE(OP_push_false): + *sp++ = JS_FALSE; + BREAK; + CASE(OP_push_true): + *sp++ = JS_TRUE; + BREAK; + CASE(OP_object): + *sp++ = JS_NewObject(ctx); + if (unlikely(JS_IsException(sp[-1]))) + goto exception; + BREAK; + CASE(OP_special_object): + { + int arg = *pc++; + switch(arg) { + case OP_SPECIAL_OBJECT_ARGUMENTS: + *sp++ = js_build_arguments(ctx, argc, (JSValueConst *)argv); + if (unlikely(JS_IsException(sp[-1]))) + goto exception; + break; + case OP_SPECIAL_OBJECT_MAPPED_ARGUMENTS: + *sp++ = js_build_mapped_arguments(ctx, argc, (JSValueConst *)argv, + sf, min_int(argc, b->arg_count)); + if (unlikely(JS_IsException(sp[-1]))) + goto exception; + break; + case OP_SPECIAL_OBJECT_THIS_FUNC: + *sp++ = JS_DupValue(ctx, sf->cur_func); + break; + case OP_SPECIAL_OBJECT_NEW_TARGET: + *sp++ = JS_DupValue(ctx, new_target); + break; + case OP_SPECIAL_OBJECT_HOME_OBJECT: + { + JSObject *p1; + p1 = p->u.func.home_object; + if (unlikely(!p1)) + *sp++ = JS_UNDEFINED; + else + *sp++ = JS_DupValue(ctx, JS_MKPTR(JS_TAG_OBJECT, p1)); + } + break; + case OP_SPECIAL_OBJECT_VAR_OBJECT: + *sp++ = JS_NewObjectProto(ctx, JS_NULL); + if (unlikely(JS_IsException(sp[-1]))) + goto exception; + break; + case OP_SPECIAL_OBJECT_IMPORT_META: + *sp++ = js_import_meta(ctx); + if (unlikely(JS_IsException(sp[-1]))) + goto exception; + break; + default: + abort(); + } + } + BREAK; + CASE(OP_rest): + { + int first = get_u16(pc); + pc += 2; + *sp++ = js_build_rest(ctx, first, argc, (JSValueConst *)argv); + if (unlikely(JS_IsException(sp[-1]))) + goto exception; + } + BREAK; + + CASE(OP_drop): + JS_FreeValue(ctx, sp[-1]); + sp--; + BREAK; + CASE(OP_nip): + JS_FreeValue(ctx, sp[-2]); + sp[-2] = sp[-1]; + sp--; + BREAK; + CASE(OP_nip1): /* a b c -> b c */ + JS_FreeValue(ctx, sp[-3]); + sp[-3] = sp[-2]; + sp[-2] = sp[-1]; + sp--; + BREAK; + CASE(OP_dup): + sp[0] = JS_DupValue(ctx, sp[-1]); + sp++; + BREAK; + CASE(OP_dup2): /* a b -> a b a b */ + sp[0] = JS_DupValue(ctx, sp[-2]); + sp[1] = JS_DupValue(ctx, sp[-1]); + sp += 2; + BREAK; + CASE(OP_dup3): /* a b c -> a b c a b c */ + sp[0] = JS_DupValue(ctx, sp[-3]); + sp[1] = JS_DupValue(ctx, sp[-2]); + sp[2] = JS_DupValue(ctx, sp[-1]); + sp += 3; + BREAK; + CASE(OP_dup1): /* a b -> a a b */ + sp[0] = sp[-1]; + sp[-1] = JS_DupValue(ctx, sp[-2]); + sp++; + BREAK; + CASE(OP_insert2): /* obj a -> a obj a (dup_x1) */ + sp[0] = sp[-1]; + sp[-1] = sp[-2]; + sp[-2] = JS_DupValue(ctx, sp[0]); + sp++; + BREAK; + CASE(OP_insert3): /* obj prop a -> a obj prop a (dup_x2) */ + sp[0] = sp[-1]; + sp[-1] = sp[-2]; + sp[-2] = sp[-3]; + sp[-3] = JS_DupValue(ctx, sp[0]); + sp++; + BREAK; + CASE(OP_insert4): /* this obj prop a -> a this obj prop a */ + sp[0] = sp[-1]; + sp[-1] = sp[-2]; + sp[-2] = sp[-3]; + sp[-3] = sp[-4]; + sp[-4] = JS_DupValue(ctx, sp[0]); + sp++; + BREAK; + CASE(OP_perm3): /* obj a b -> a obj b (213) */ + { + JSValue tmp; + tmp = sp[-2]; + sp[-2] = sp[-3]; + sp[-3] = tmp; + } + BREAK; + CASE(OP_rot3l): /* x a b -> a b x (231) */ + { + JSValue tmp; + tmp = sp[-3]; + sp[-3] = sp[-2]; + sp[-2] = sp[-1]; + sp[-1] = tmp; + } + BREAK; + CASE(OP_rot4l): /* x a b c -> a b c x */ + { + JSValue tmp; + tmp = sp[-4]; + sp[-4] = sp[-3]; + sp[-3] = sp[-2]; + sp[-2] = sp[-1]; + sp[-1] = tmp; + } + BREAK; + CASE(OP_rot5l): /* x a b c d -> a b c d x */ + { + JSValue tmp; + tmp = sp[-5]; + sp[-5] = sp[-4]; + sp[-4] = sp[-3]; + sp[-3] = sp[-2]; + sp[-2] = sp[-1]; + sp[-1] = tmp; + } + BREAK; + CASE(OP_rot3r): /* a b x -> x a b (312) */ + { + JSValue tmp; + tmp = sp[-1]; + sp[-1] = sp[-2]; + sp[-2] = sp[-3]; + sp[-3] = tmp; + } + BREAK; + CASE(OP_perm4): /* obj prop a b -> a obj prop b */ + { + JSValue tmp; + tmp = sp[-2]; + sp[-2] = sp[-3]; + sp[-3] = sp[-4]; + sp[-4] = tmp; + } + BREAK; + CASE(OP_perm5): /* this obj prop a b -> a this obj prop b */ + { + JSValue tmp; + tmp = sp[-2]; + sp[-2] = sp[-3]; + sp[-3] = sp[-4]; + sp[-4] = sp[-5]; + sp[-5] = tmp; + } + BREAK; + CASE(OP_swap): /* a b -> b a */ + { + JSValue tmp; + tmp = sp[-2]; + sp[-2] = sp[-1]; + sp[-1] = tmp; + } + BREAK; + CASE(OP_swap2): /* a b c d -> c d a b */ + { + JSValue tmp1, tmp2; + tmp1 = sp[-4]; + tmp2 = sp[-3]; + sp[-4] = sp[-2]; + sp[-3] = sp[-1]; + sp[-2] = tmp1; + sp[-1] = tmp2; + } + BREAK; + + CASE(OP_fclosure): + { + JSValue bfunc = JS_DupValue(ctx, b->cpool[get_u32(pc)]); + pc += 4; + *sp++ = js_closure(ctx, bfunc, var_refs, sf); + if (unlikely(JS_IsException(sp[-1]))) + goto exception; + } + BREAK; +#if SHORT_OPCODES + CASE(OP_call0): + CASE(OP_call1): + CASE(OP_call2): + CASE(OP_call3): + call_argc = opcode - OP_call0; + goto has_call_argc; +#endif + CASE(OP_call): + CASE(OP_tail_call): + { + call_argc = get_u16(pc); + pc += 2; + goto has_call_argc; + has_call_argc: + call_argv = sp - call_argc; + sf->cur_pc = pc; + ret_val = JS_CallInternal(ctx, call_argv[-1], JS_UNDEFINED, + JS_UNDEFINED, call_argc, call_argv, 0); + if (unlikely(JS_IsException(ret_val))) + goto exception; + if (opcode == OP_tail_call) + goto done; + for(i = -1; i < call_argc; i++) + JS_FreeValue(ctx, call_argv[i]); + sp -= call_argc + 1; + *sp++ = ret_val; + } + BREAK; + CASE(OP_call_constructor): + { + call_argc = get_u16(pc); + pc += 2; + call_argv = sp - call_argc; + sf->cur_pc = pc; + ret_val = JS_CallConstructorInternal(ctx, call_argv[-2], + call_argv[-1], + call_argc, call_argv, 0); + if (unlikely(JS_IsException(ret_val))) + goto exception; + for(i = -2; i < call_argc; i++) + JS_FreeValue(ctx, call_argv[i]); + sp -= call_argc + 2; + *sp++ = ret_val; + } + BREAK; + CASE(OP_call_method): + CASE(OP_tail_call_method): + { + call_argc = get_u16(pc); + pc += 2; + call_argv = sp - call_argc; + sf->cur_pc = pc; + ret_val = JS_CallInternal(ctx, call_argv[-1], call_argv[-2], + JS_UNDEFINED, call_argc, call_argv, 0); + if (unlikely(JS_IsException(ret_val))) + goto exception; + if (opcode == OP_tail_call_method) + goto done; + for(i = -2; i < call_argc; i++) + JS_FreeValue(ctx, call_argv[i]); + sp -= call_argc + 2; + *sp++ = ret_val; + } + BREAK; + CASE(OP_array_from): + { + int i, ret; + + call_argc = get_u16(pc); + pc += 2; + ret_val = JS_NewArray(ctx); + if (unlikely(JS_IsException(ret_val))) + goto exception; + call_argv = sp - call_argc; + for(i = 0; i < call_argc; i++) { + ret = JS_DefinePropertyValue(ctx, ret_val, __JS_AtomFromUInt32(i), call_argv[i], + JS_PROP_C_W_E | JS_PROP_THROW); + call_argv[i] = JS_UNDEFINED; + if (ret < 0) { + JS_FreeValue(ctx, ret_val); + goto exception; + } + } + sp -= call_argc; + *sp++ = ret_val; + } + BREAK; + + CASE(OP_apply): + { + int magic; + magic = get_u16(pc); + pc += 2; + + ret_val = js_function_apply(ctx, sp[-3], 2, (JSValueConst *)&sp[-2], magic); + if (unlikely(JS_IsException(ret_val))) + goto exception; + JS_FreeValue(ctx, sp[-3]); + JS_FreeValue(ctx, sp[-2]); + JS_FreeValue(ctx, sp[-1]); + sp -= 3; + *sp++ = ret_val; + } + BREAK; + CASE(OP_return): + ret_val = *--sp; + goto done; + CASE(OP_return_undef): + ret_val = JS_UNDEFINED; + goto done; + + CASE(OP_check_ctor_return): + /* return TRUE if 'this' should be returned */ + if (!JS_IsObject(sp[-1])) { + if (!JS_IsUndefined(sp[-1])) { + JS_ThrowTypeError(caller_ctx, "derived class constructor must return an object or undefined"); + goto exception; + } + sp[0] = JS_TRUE; + } else { + sp[0] = JS_FALSE; + } + sp++; + BREAK; + CASE(OP_check_ctor): + if (JS_IsUndefined(new_target)) { + JS_ThrowTypeError(ctx, "class constructors must be invoked with 'new'"); + goto exception; + } + BREAK; + CASE(OP_check_brand): + if (JS_CheckBrand(ctx, sp[-2], sp[-1]) < 0) + goto exception; + BREAK; + CASE(OP_add_brand): + if (JS_AddBrand(ctx, sp[-2], sp[-1]) < 0) + goto exception; + JS_FreeValue(ctx, sp[-2]); + JS_FreeValue(ctx, sp[-1]); + sp -= 2; + BREAK; + + CASE(OP_throw): + JS_Throw(ctx, *--sp); + goto exception; + + CASE(OP_throw_error): +#define JS_THROW_VAR_RO 0 +#define JS_THROW_VAR_REDECL 1 +#define JS_THROW_VAR_UNINITIALIZED 2 +#define JS_THROW_ERROR_DELETE_SUPER 3 +#define JS_THROW_ERROR_ITERATOR_THROW 4 + { + JSAtom atom; + int type; + atom = get_u32(pc); + type = pc[4]; + pc += 5; + if (type == JS_THROW_VAR_RO) + JS_ThrowTypeErrorReadOnly(ctx, JS_PROP_THROW, atom); + else + if (type == JS_THROW_VAR_REDECL) + JS_ThrowSyntaxErrorVarRedeclaration(ctx, atom); + else + if (type == JS_THROW_VAR_UNINITIALIZED) + JS_ThrowReferenceErrorUninitialized(ctx, atom); + else + if (type == JS_THROW_ERROR_DELETE_SUPER) + JS_ThrowReferenceError(ctx, "unsupported reference to 'super'"); + else + if (type == JS_THROW_ERROR_ITERATOR_THROW) + JS_ThrowTypeError(ctx, "iterator does not have a throw method"); + else + JS_ThrowInternalError(ctx, "invalid throw var type %d", type); + } + goto exception; + + CASE(OP_eval): + { + JSValueConst obj; + int scope_idx; + call_argc = get_u16(pc); + scope_idx = get_u16(pc + 2) - 1; + pc += 4; + call_argv = sp - call_argc; + sf->cur_pc = pc; + if (js_same_value(ctx, call_argv[-1], ctx->eval_obj)) { + if (call_argc >= 1) + obj = call_argv[0]; + else + obj = JS_UNDEFINED; + ret_val = JS_EvalObject(ctx, JS_UNDEFINED, obj, + JS_EVAL_TYPE_DIRECT, scope_idx); + } else { + ret_val = JS_CallInternal(ctx, call_argv[-1], JS_UNDEFINED, + JS_UNDEFINED, call_argc, call_argv, 0); + } + if (unlikely(JS_IsException(ret_val))) + goto exception; + for(i = -1; i < call_argc; i++) + JS_FreeValue(ctx, call_argv[i]); + sp -= call_argc + 1; + *sp++ = ret_val; + } + BREAK; + /* could merge with OP_apply */ + CASE(OP_apply_eval): + { + int scope_idx; + uint32_t len; + JSValue *tab; + JSValueConst obj; + + scope_idx = get_u16(pc) - 1; + pc += 2; + tab = build_arg_list(ctx, &len, sp[-1]); + if (!tab) + goto exception; + if (js_same_value(ctx, sp[-2], ctx->eval_obj)) { + if (len >= 1) + obj = tab[0]; + else + obj = JS_UNDEFINED; + ret_val = JS_EvalObject(ctx, JS_UNDEFINED, obj, + JS_EVAL_TYPE_DIRECT, scope_idx); + } else { + ret_val = JS_Call(ctx, sp[-2], JS_UNDEFINED, len, + (JSValueConst *)tab); + } + free_arg_list(ctx, tab, len); + if (unlikely(JS_IsException(ret_val))) + goto exception; + JS_FreeValue(ctx, sp[-2]); + JS_FreeValue(ctx, sp[-1]); + sp -= 2; + *sp++ = ret_val; + } + BREAK; + + CASE(OP_regexp): + { + sp[-2] = js_regexp_constructor_internal(ctx, JS_UNDEFINED, + sp[-2], sp[-1]); + sp--; + } + BREAK; + + CASE(OP_get_super): + { + JSValue proto; + proto = JS_GetPrototype(ctx, sp[-1]); + if (JS_IsException(proto)) + goto exception; + JS_FreeValue(ctx, sp[-1]); + sp[-1] = proto; + } + BREAK; + + CASE(OP_import): + { + JSValue val; + val = js_dynamic_import(ctx, sp[-1]); + if (JS_IsException(val)) + goto exception; + JS_FreeValue(ctx, sp[-1]); + sp[-1] = val; + } + BREAK; + + CASE(OP_check_var): + { + int ret; + JSAtom atom; + atom = get_u32(pc); + pc += 4; + + ret = JS_CheckGlobalVar(ctx, atom); + if (ret < 0) + goto exception; + *sp++ = JS_NewBool(ctx, ret); + } + BREAK; + + CASE(OP_get_var_undef): + CASE(OP_get_var): + { + JSValue val; + JSAtom atom; + atom = get_u32(pc); + pc += 4; + + val = JS_GetGlobalVar(ctx, atom, opcode - OP_get_var_undef); + if (unlikely(JS_IsException(val))) + goto exception; + *sp++ = val; + } + BREAK; + + CASE(OP_put_var): + CASE(OP_put_var_init): + { + int ret; + JSAtom atom; + atom = get_u32(pc); + pc += 4; + + ret = JS_SetGlobalVar(ctx, atom, sp[-1], opcode - OP_put_var); + sp--; + if (unlikely(ret < 0)) + goto exception; + } + BREAK; + + CASE(OP_put_var_strict): + { + int ret; + JSAtom atom; + atom = get_u32(pc); + pc += 4; + + /* sp[-2] is JS_TRUE or JS_FALSE */ + if (unlikely(!JS_VALUE_GET_INT(sp[-2]))) { + JS_ThrowReferenceErrorNotDefined(ctx, atom); + goto exception; + } + ret = JS_SetGlobalVar(ctx, atom, sp[-1], 2); + sp -= 2; + if (unlikely(ret < 0)) + goto exception; + } + BREAK; + + CASE(OP_check_define_var): + { + JSAtom atom; + int flags; + atom = get_u32(pc); + flags = pc[4]; + pc += 5; + if (JS_CheckDefineGlobalVar(ctx, atom, flags)) + goto exception; + } + BREAK; + CASE(OP_define_var): + { + JSAtom atom; + int flags; + atom = get_u32(pc); + flags = pc[4]; + pc += 5; + if (JS_DefineGlobalVar(ctx, atom, flags)) + goto exception; + } + BREAK; + CASE(OP_define_func): + { + JSAtom atom; + int flags; + atom = get_u32(pc); + flags = pc[4]; + pc += 5; + if (JS_DefineGlobalFunction(ctx, atom, sp[-1], flags)) + goto exception; + JS_FreeValue(ctx, sp[-1]); + sp--; + } + BREAK; + + CASE(OP_get_loc): + { + int idx; + idx = get_u16(pc); + pc += 2; + sp[0] = JS_DupValue(ctx, var_buf[idx]); + sp++; + } + BREAK; + CASE(OP_put_loc): + { + int idx; + idx = get_u16(pc); + pc += 2; + set_value(ctx, &var_buf[idx], sp[-1]); + sp--; + } + BREAK; + CASE(OP_set_loc): + { + int idx; + idx = get_u16(pc); + pc += 2; + set_value(ctx, &var_buf[idx], JS_DupValue(ctx, sp[-1])); + } + BREAK; + CASE(OP_get_arg): + { + int idx; + idx = get_u16(pc); + pc += 2; + sp[0] = JS_DupValue(ctx, arg_buf[idx]); + sp++; + } + BREAK; + CASE(OP_put_arg): + { + int idx; + idx = get_u16(pc); + pc += 2; + set_value(ctx, &arg_buf[idx], sp[-1]); + sp--; + } + BREAK; + CASE(OP_set_arg): + { + int idx; + idx = get_u16(pc); + pc += 2; + set_value(ctx, &arg_buf[idx], JS_DupValue(ctx, sp[-1])); + } + BREAK; + +#if SHORT_OPCODES + CASE(OP_get_loc8): *sp++ = JS_DupValue(ctx, var_buf[*pc++]); BREAK; + CASE(OP_put_loc8): set_value(ctx, &var_buf[*pc++], *--sp); BREAK; + CASE(OP_set_loc8): set_value(ctx, &var_buf[*pc++], JS_DupValue(ctx, sp[-1])); BREAK; + + CASE(OP_get_loc0): *sp++ = JS_DupValue(ctx, var_buf[0]); BREAK; + CASE(OP_get_loc1): *sp++ = JS_DupValue(ctx, var_buf[1]); BREAK; + CASE(OP_get_loc2): *sp++ = JS_DupValue(ctx, var_buf[2]); BREAK; + CASE(OP_get_loc3): *sp++ = JS_DupValue(ctx, var_buf[3]); BREAK; + CASE(OP_put_loc0): set_value(ctx, &var_buf[0], *--sp); BREAK; + CASE(OP_put_loc1): set_value(ctx, &var_buf[1], *--sp); BREAK; + CASE(OP_put_loc2): set_value(ctx, &var_buf[2], *--sp); BREAK; + CASE(OP_put_loc3): set_value(ctx, &var_buf[3], *--sp); BREAK; + CASE(OP_set_loc0): set_value(ctx, &var_buf[0], JS_DupValue(ctx, sp[-1])); BREAK; + CASE(OP_set_loc1): set_value(ctx, &var_buf[1], JS_DupValue(ctx, sp[-1])); BREAK; + CASE(OP_set_loc2): set_value(ctx, &var_buf[2], JS_DupValue(ctx, sp[-1])); BREAK; + CASE(OP_set_loc3): set_value(ctx, &var_buf[3], JS_DupValue(ctx, sp[-1])); BREAK; + CASE(OP_get_arg0): *sp++ = JS_DupValue(ctx, arg_buf[0]); BREAK; + CASE(OP_get_arg1): *sp++ = JS_DupValue(ctx, arg_buf[1]); BREAK; + CASE(OP_get_arg2): *sp++ = JS_DupValue(ctx, arg_buf[2]); BREAK; + CASE(OP_get_arg3): *sp++ = JS_DupValue(ctx, arg_buf[3]); BREAK; + CASE(OP_put_arg0): set_value(ctx, &arg_buf[0], *--sp); BREAK; + CASE(OP_put_arg1): set_value(ctx, &arg_buf[1], *--sp); BREAK; + CASE(OP_put_arg2): set_value(ctx, &arg_buf[2], *--sp); BREAK; + CASE(OP_put_arg3): set_value(ctx, &arg_buf[3], *--sp); BREAK; + CASE(OP_set_arg0): set_value(ctx, &arg_buf[0], JS_DupValue(ctx, sp[-1])); BREAK; + CASE(OP_set_arg1): set_value(ctx, &arg_buf[1], JS_DupValue(ctx, sp[-1])); BREAK; + CASE(OP_set_arg2): set_value(ctx, &arg_buf[2], JS_DupValue(ctx, sp[-1])); BREAK; + CASE(OP_set_arg3): set_value(ctx, &arg_buf[3], JS_DupValue(ctx, sp[-1])); BREAK; + CASE(OP_get_var_ref0): *sp++ = JS_DupValue(ctx, *var_refs[0]->pvalue); BREAK; + CASE(OP_get_var_ref1): *sp++ = JS_DupValue(ctx, *var_refs[1]->pvalue); BREAK; + CASE(OP_get_var_ref2): *sp++ = JS_DupValue(ctx, *var_refs[2]->pvalue); BREAK; + CASE(OP_get_var_ref3): *sp++ = JS_DupValue(ctx, *var_refs[3]->pvalue); BREAK; + CASE(OP_put_var_ref0): set_value(ctx, var_refs[0]->pvalue, *--sp); BREAK; + CASE(OP_put_var_ref1): set_value(ctx, var_refs[1]->pvalue, *--sp); BREAK; + CASE(OP_put_var_ref2): set_value(ctx, var_refs[2]->pvalue, *--sp); BREAK; + CASE(OP_put_var_ref3): set_value(ctx, var_refs[3]->pvalue, *--sp); BREAK; + CASE(OP_set_var_ref0): set_value(ctx, var_refs[0]->pvalue, JS_DupValue(ctx, sp[-1])); BREAK; + CASE(OP_set_var_ref1): set_value(ctx, var_refs[1]->pvalue, JS_DupValue(ctx, sp[-1])); BREAK; + CASE(OP_set_var_ref2): set_value(ctx, var_refs[2]->pvalue, JS_DupValue(ctx, sp[-1])); BREAK; + CASE(OP_set_var_ref3): set_value(ctx, var_refs[3]->pvalue, JS_DupValue(ctx, sp[-1])); BREAK; +#endif + + CASE(OP_get_var_ref): + { + int idx; + JSValue val; + idx = get_u16(pc); + pc += 2; + val = *var_refs[idx]->pvalue; + sp[0] = JS_DupValue(ctx, val); + sp++; + } + BREAK; + CASE(OP_put_var_ref): + { + int idx; + idx = get_u16(pc); + pc += 2; + set_value(ctx, var_refs[idx]->pvalue, sp[-1]); + sp--; + } + BREAK; + CASE(OP_set_var_ref): + { + int idx; + idx = get_u16(pc); + pc += 2; + set_value(ctx, var_refs[idx]->pvalue, JS_DupValue(ctx, sp[-1])); + } + BREAK; + CASE(OP_get_var_ref_check): + { + int idx; + JSValue val; + idx = get_u16(pc); + pc += 2; + val = *var_refs[idx]->pvalue; + if (unlikely(JS_IsUninitialized(val))) { + JS_ThrowReferenceErrorUninitialized2(ctx, b, idx, TRUE); + goto exception; + } + sp[0] = JS_DupValue(ctx, val); + sp++; + } + BREAK; + CASE(OP_put_var_ref_check): + { + int idx; + idx = get_u16(pc); + pc += 2; + if (unlikely(JS_IsUninitialized(*var_refs[idx]->pvalue))) { + JS_ThrowReferenceErrorUninitialized2(ctx, b, idx, TRUE); + goto exception; + } + set_value(ctx, var_refs[idx]->pvalue, sp[-1]); + sp--; + } + BREAK; + CASE(OP_put_var_ref_check_init): + { + int idx; + idx = get_u16(pc); + pc += 2; + if (unlikely(!JS_IsUninitialized(*var_refs[idx]->pvalue))) { + JS_ThrowReferenceErrorUninitialized2(ctx, b, idx, TRUE); + goto exception; + } + set_value(ctx, var_refs[idx]->pvalue, sp[-1]); + sp--; + } + BREAK; + CASE(OP_set_loc_uninitialized): + { + int idx; + idx = get_u16(pc); + pc += 2; + set_value(ctx, &var_buf[idx], JS_UNINITIALIZED); + } + BREAK; + CASE(OP_get_loc_check): + { + int idx; + idx = get_u16(pc); + pc += 2; + if (unlikely(JS_IsUninitialized(var_buf[idx]))) { + JS_ThrowReferenceErrorUninitialized2(ctx, b, idx, FALSE); + goto exception; + } + sp[0] = JS_DupValue(ctx, var_buf[idx]); + sp++; + } + BREAK; + CASE(OP_put_loc_check): + { + int idx; + idx = get_u16(pc); + pc += 2; + if (unlikely(JS_IsUninitialized(var_buf[idx]))) { + JS_ThrowReferenceErrorUninitialized2(ctx, b, idx, FALSE); + goto exception; + } + set_value(ctx, &var_buf[idx], sp[-1]); + sp--; + } + BREAK; + CASE(OP_put_loc_check_init): + { + int idx; + idx = get_u16(pc); + pc += 2; + if (unlikely(!JS_IsUninitialized(var_buf[idx]))) { + JS_ThrowReferenceError(ctx, "'this' can be initialized only once"); + goto exception; + } + set_value(ctx, &var_buf[idx], sp[-1]); + sp--; + } + BREAK; + CASE(OP_close_loc): + { + int idx; + idx = get_u16(pc); + pc += 2; + close_lexical_var(ctx, sf, idx, FALSE); + } + BREAK; + + CASE(OP_make_loc_ref): + CASE(OP_make_arg_ref): + CASE(OP_make_var_ref_ref): + { + JSVarRef *var_ref; + JSProperty *pr; + JSAtom atom; + int idx; + atom = get_u32(pc); + idx = get_u16(pc + 4); + pc += 6; + *sp++ = JS_NewObjectProto(ctx, JS_NULL); + if (unlikely(JS_IsException(sp[-1]))) + goto exception; + if (opcode == OP_make_var_ref_ref) { + var_ref = var_refs[idx]; + var_ref->header.ref_count++; + } else { + var_ref = get_var_ref(ctx, sf, idx, opcode == OP_make_arg_ref); + if (!var_ref) + goto exception; + } + pr = add_property(ctx, JS_VALUE_GET_OBJ(sp[-1]), atom, + JS_PROP_WRITABLE | JS_PROP_VARREF); + if (!pr) { + free_var_ref(rt, var_ref); + goto exception; + } + pr->u.var_ref = var_ref; + *sp++ = JS_AtomToValue(ctx, atom); + } + BREAK; + CASE(OP_make_var_ref): + { + JSAtom atom; + atom = get_u32(pc); + pc += 4; + + if (JS_GetGlobalVarRef(ctx, atom, sp)) + goto exception; + sp += 2; + } + BREAK; + + CASE(OP_goto): + pc += (int32_t)get_u32(pc); + if (unlikely(js_poll_interrupts(ctx))) + goto exception; + BREAK; +#if SHORT_OPCODES + CASE(OP_goto16): + pc += (int16_t)get_u16(pc); + if (unlikely(js_poll_interrupts(ctx))) + goto exception; + BREAK; + CASE(OP_goto8): + pc += (int8_t)pc[0]; + if (unlikely(js_poll_interrupts(ctx))) + goto exception; + BREAK; +#endif + CASE(OP_if_true): + { + int res; + JSValue op1; + + op1 = sp[-1]; + pc += 4; + if ((uint32_t)JS_VALUE_GET_TAG(op1) <= JS_TAG_UNDEFINED) { + res = JS_VALUE_GET_INT(op1); + } else { + res = JS_ToBoolFree(ctx, op1); + } + sp--; + if (res) { + pc += (int32_t)get_u32(pc - 4) - 4; + } + if (unlikely(js_poll_interrupts(ctx))) + goto exception; + } + BREAK; + CASE(OP_if_false): + { + int res; + JSValue op1; + + op1 = sp[-1]; + pc += 4; + if ((uint32_t)JS_VALUE_GET_TAG(op1) <= JS_TAG_UNDEFINED) { + res = JS_VALUE_GET_INT(op1); + } else { + res = JS_ToBoolFree(ctx, op1); + } + sp--; + if (!res) { + pc += (int32_t)get_u32(pc - 4) - 4; + } + if (unlikely(js_poll_interrupts(ctx))) + goto exception; + } + BREAK; +#if SHORT_OPCODES + CASE(OP_if_true8): + { + int res; + JSValue op1; + + op1 = sp[-1]; + pc += 1; + if ((uint32_t)JS_VALUE_GET_TAG(op1) <= JS_TAG_UNDEFINED) { + res = JS_VALUE_GET_INT(op1); + } else { + res = JS_ToBoolFree(ctx, op1); + } + sp--; + if (res) { + pc += (int8_t)pc[-1] - 1; + } + if (unlikely(js_poll_interrupts(ctx))) + goto exception; + } + BREAK; + CASE(OP_if_false8): + { + int res; + JSValue op1; + + op1 = sp[-1]; + pc += 1; + if ((uint32_t)JS_VALUE_GET_TAG(op1) <= JS_TAG_UNDEFINED) { + res = JS_VALUE_GET_INT(op1); + } else { + res = JS_ToBoolFree(ctx, op1); + } + sp--; + if (!res) { + pc += (int8_t)pc[-1] - 1; + } + if (unlikely(js_poll_interrupts(ctx))) + goto exception; + } + BREAK; +#endif + CASE(OP_catch): + { + int32_t diff; + diff = get_u32(pc); + sp[0] = JS_NewCatchOffset(ctx, pc + diff - b->byte_code_buf); + sp++; + pc += 4; + } + BREAK; + CASE(OP_gosub): + { + int32_t diff; + diff = get_u32(pc); + /* XXX: should have a different tag to avoid security flaw */ + sp[0] = JS_NewInt32(ctx, pc + 4 - b->byte_code_buf); + sp++; + pc += diff; + } + BREAK; + CASE(OP_ret): + { + JSValue op1; + uint32_t pos; + op1 = sp[-1]; + if (unlikely(JS_VALUE_GET_TAG(op1) != JS_TAG_INT)) + goto ret_fail; + pos = JS_VALUE_GET_INT(op1); + if (unlikely(pos >= b->byte_code_len)) { + ret_fail: + JS_ThrowInternalError(ctx, "invalid ret value"); + goto exception; + } + sp--; + pc = b->byte_code_buf + pos; + } + BREAK; + + CASE(OP_for_in_start): + if (js_for_in_start(ctx, sp)) + goto exception; + BREAK; + CASE(OP_for_in_next): + if (js_for_in_next(ctx, sp)) + goto exception; + sp += 2; + BREAK; + CASE(OP_for_of_start): + if (js_for_of_start(ctx, sp, FALSE)) + goto exception; + sp += 1; + *sp++ = JS_NewCatchOffset(ctx, 0); + BREAK; + CASE(OP_for_of_next): + { + int offset = -3 - pc[0]; + pc += 1; + if (js_for_of_next(ctx, sp, offset)) + goto exception; + sp += 2; + } + BREAK; + CASE(OP_for_await_of_start): + if (js_for_of_start(ctx, sp, TRUE)) + goto exception; + sp += 1; + *sp++ = JS_NewCatchOffset(ctx, 0); + BREAK; + CASE(OP_iterator_get_value_done): + if (js_iterator_get_value_done(ctx, sp)) + goto exception; + sp += 1; + BREAK; + CASE(OP_iterator_check_object): + if (unlikely(!JS_IsObject(sp[-1]))) { + JS_ThrowTypeError(ctx, "iterator must return an object"); + goto exception; + } + BREAK; + + CASE(OP_iterator_close): + /* iter_obj next catch_offset -> */ + sp--; /* drop the catch offset to avoid getting caught by exception */ + JS_FreeValue(ctx, sp[-1]); /* drop the next method */ + sp--; + if (!JS_IsUndefined(sp[-1])) { + if (JS_IteratorClose(ctx, sp[-1], FALSE)) + goto exception; + JS_FreeValue(ctx, sp[-1]); + } + sp--; + BREAK; + CASE(OP_iterator_close_return): + { + JSValue ret_val; + /* iter_obj next catch_offset ... ret_val -> + ret_eval iter_obj next catch_offset */ + ret_val = *--sp; + while (sp > stack_buf && + JS_VALUE_GET_TAG(sp[-1]) != JS_TAG_CATCH_OFFSET) { + JS_FreeValue(ctx, *--sp); + } + if (unlikely(sp < stack_buf + 3)) { + JS_ThrowInternalError(ctx, "iterator_close_return"); + JS_FreeValue(ctx, ret_val); + goto exception; + } + sp[0] = sp[-1]; + sp[-1] = sp[-2]; + sp[-2] = sp[-3]; + sp[-3] = ret_val; + sp++; + } + BREAK; + + CASE(OP_iterator_next): + /* stack: iter_obj next catch_offset val */ + { + JSValue ret; + ret = JS_Call(ctx, sp[-3], sp[-4], + 1, (JSValueConst *)(sp - 1)); + if (JS_IsException(ret)) + goto exception; + JS_FreeValue(ctx, sp[-1]); + sp[-1] = ret; + } + BREAK; + + CASE(OP_iterator_call): + /* stack: iter_obj next catch_offset val */ + { + JSValue method, ret; + BOOL ret_flag; + int flags; + flags = *pc++; + method = JS_GetProperty(ctx, sp[-4], (flags & 1) ? + JS_ATOM_throw : JS_ATOM_return); + if (JS_IsException(method)) + goto exception; + if (JS_IsUndefined(method) || JS_IsNull(method)) { + ret_flag = TRUE; + } else { + if (flags & 2) { + /* no argument */ + ret = JS_CallFree(ctx, method, sp[-4], + 0, NULL); + } else { + ret = JS_CallFree(ctx, method, sp[-4], + 1, (JSValueConst *)(sp - 1)); + } + if (JS_IsException(ret)) + goto exception; + JS_FreeValue(ctx, sp[-1]); + sp[-1] = ret; + ret_flag = FALSE; + } + sp[0] = JS_NewBool(ctx, ret_flag); + sp += 1; + } + BREAK; + + CASE(OP_lnot): + { + int res; + JSValue op1; + + op1 = sp[-1]; + if ((uint32_t)JS_VALUE_GET_TAG(op1) <= JS_TAG_UNDEFINED) { + res = JS_VALUE_GET_INT(op1) != 0; + } else { + res = JS_ToBoolFree(ctx, op1); + } + sp[-1] = JS_NewBool(ctx, !res); + } + BREAK; + + CASE(OP_get_field): + { + JSValue val; + JSAtom atom; + atom = get_u32(pc); + pc += 4; + + val = JS_GetProperty(ctx, sp[-1], atom); + if (unlikely(JS_IsException(val))) + goto exception; + JS_FreeValue(ctx, sp[-1]); + sp[-1] = val; + } + BREAK; + + CASE(OP_get_field2): + { + JSValue val; + JSAtom atom; + atom = get_u32(pc); + pc += 4; + + val = JS_GetProperty(ctx, sp[-1], atom); + if (unlikely(JS_IsException(val))) + goto exception; + *sp++ = val; + } + BREAK; + + CASE(OP_put_field): + { + int ret; + JSAtom atom; + atom = get_u32(pc); + pc += 4; + + ret = JS_SetPropertyInternal(ctx, sp[-2], atom, sp[-1], + JS_PROP_THROW_STRICT); + JS_FreeValue(ctx, sp[-2]); + sp -= 2; + if (unlikely(ret < 0)) + goto exception; + } + BREAK; + + CASE(OP_private_symbol): + { + JSAtom atom; + JSValue val; + + atom = get_u32(pc); + pc += 4; + val = JS_NewSymbolFromAtom(ctx, atom, JS_ATOM_TYPE_PRIVATE); + if (JS_IsException(val)) + goto exception; + *sp++ = val; + } + BREAK; + + CASE(OP_get_private_field): + { + JSValue val; + + val = JS_GetPrivateField(ctx, sp[-2], sp[-1]); + JS_FreeValue(ctx, sp[-1]); + JS_FreeValue(ctx, sp[-2]); + sp[-2] = val; + sp--; + if (unlikely(JS_IsException(val))) + goto exception; + } + BREAK; + + CASE(OP_put_private_field): + { + int ret; + ret = JS_SetPrivateField(ctx, sp[-3], sp[-1], sp[-2]); + JS_FreeValue(ctx, sp[-3]); + JS_FreeValue(ctx, sp[-1]); + sp -= 3; + if (unlikely(ret < 0)) + goto exception; + } + BREAK; + + CASE(OP_define_private_field): + { + int ret; + ret = JS_DefinePrivateField(ctx, sp[-3], sp[-2], sp[-1]); + JS_FreeValue(ctx, sp[-2]); + sp -= 2; + if (unlikely(ret < 0)) + goto exception; + } + BREAK; + + CASE(OP_define_field): + { + int ret; + JSAtom atom; + atom = get_u32(pc); + pc += 4; + + ret = JS_DefinePropertyValue(ctx, sp[-2], atom, sp[-1], + JS_PROP_C_W_E | JS_PROP_THROW); + sp--; + if (unlikely(ret < 0)) + goto exception; + } + BREAK; + + CASE(OP_set_name): + { + int ret; + JSAtom atom; + atom = get_u32(pc); + pc += 4; + + ret = JS_DefineObjectName(ctx, sp[-1], atom, JS_PROP_CONFIGURABLE); + if (unlikely(ret < 0)) + goto exception; + } + BREAK; + CASE(OP_set_name_computed): + { + int ret; + ret = JS_DefineObjectNameComputed(ctx, sp[-1], sp[-2], JS_PROP_CONFIGURABLE); + if (unlikely(ret < 0)) + goto exception; + } + BREAK; + CASE(OP_set_proto): + { + JSValue proto; + proto = sp[-1]; + if (JS_IsObject(proto) || JS_IsNull(proto)) { + if (JS_SetPrototypeInternal(ctx, sp[-2], proto, TRUE) < 0) + goto exception; + } + JS_FreeValue(ctx, proto); + sp--; + } + BREAK; + CASE(OP_set_home_object): + js_method_set_home_object(ctx, sp[-1], sp[-2]); + BREAK; + CASE(OP_define_method): + CASE(OP_define_method_computed): + { + JSValue getter, setter, value; + JSValueConst obj; + JSAtom atom; + int flags, ret, op_flags; + BOOL is_computed; +#define OP_DEFINE_METHOD_METHOD 0 +#define OP_DEFINE_METHOD_GETTER 1 +#define OP_DEFINE_METHOD_SETTER 2 +#define OP_DEFINE_METHOD_ENUMERABLE 4 + + is_computed = (opcode == OP_define_method_computed); + if (is_computed) { + atom = JS_ValueToAtom(ctx, sp[-2]); + if (unlikely(atom == JS_ATOM_NULL)) + goto exception; + opcode += OP_define_method - OP_define_method_computed; + } else { + atom = get_u32(pc); + pc += 4; + } + op_flags = *pc++; + + obj = sp[-2 - is_computed]; + flags = JS_PROP_HAS_CONFIGURABLE | JS_PROP_CONFIGURABLE | + JS_PROP_HAS_ENUMERABLE | JS_PROP_THROW; + if (op_flags & OP_DEFINE_METHOD_ENUMERABLE) + flags |= JS_PROP_ENUMERABLE; + op_flags &= 3; + value = JS_UNDEFINED; + getter = JS_UNDEFINED; + setter = JS_UNDEFINED; + if (op_flags == OP_DEFINE_METHOD_METHOD) { + value = sp[-1]; + flags |= JS_PROP_HAS_VALUE | JS_PROP_HAS_WRITABLE | JS_PROP_WRITABLE; + } else if (op_flags == OP_DEFINE_METHOD_GETTER) { + getter = sp[-1]; + flags |= JS_PROP_HAS_GET; + } else { + setter = sp[-1]; + flags |= JS_PROP_HAS_SET; + } + ret = js_method_set_properties(ctx, sp[-1], atom, flags, obj); + if (ret >= 0) { + ret = JS_DefineProperty(ctx, obj, atom, value, + getter, setter, flags); + } + JS_FreeValue(ctx, sp[-1]); + if (is_computed) { + JS_FreeAtom(ctx, atom); + JS_FreeValue(ctx, sp[-2]); + } + sp -= 1 + is_computed; + if (unlikely(ret < 0)) + goto exception; + } + BREAK; + + CASE(OP_define_class): + CASE(OP_define_class_computed): + { + int class_flags; + JSAtom atom; + + atom = get_u32(pc); + class_flags = pc[4]; + pc += 5; + if (js_op_define_class(ctx, sp, atom, class_flags, + var_refs, sf, + (opcode == OP_define_class_computed)) < 0) + goto exception; + } + BREAK; + + CASE(OP_get_array_el): + { + JSValue val; + + val = JS_GetPropertyValue(ctx, sp[-2], sp[-1]); + JS_FreeValue(ctx, sp[-2]); + sp[-2] = val; + sp--; + if (unlikely(JS_IsException(val))) + goto exception; + } + BREAK; + + CASE(OP_get_array_el2): + { + JSValue val; + + val = JS_GetPropertyValue(ctx, sp[-2], sp[-1]); + sp[-1] = val; + if (unlikely(JS_IsException(val))) + goto exception; + } + BREAK; + + CASE(OP_get_ref_value): + { + JSValue val; + if (unlikely(JS_IsUndefined(sp[-2]))) { + JSAtom atom = JS_ValueToAtom(ctx, sp[-1]); + if (atom != JS_ATOM_NULL) { + JS_ThrowReferenceErrorNotDefined(ctx, atom); + JS_FreeAtom(ctx, atom); + } + goto exception; + } + val = JS_GetPropertyValue(ctx, sp[-2], + JS_DupValue(ctx, sp[-1])); + if (unlikely(JS_IsException(val))) + goto exception; + sp[0] = val; + sp++; + } + BREAK; + + CASE(OP_get_super_value): + { + JSValue val; + JSAtom atom; + atom = JS_ValueToAtom(ctx, sp[-1]); + if (unlikely(atom == JS_ATOM_NULL)) + goto exception; + val = JS_GetPropertyInternal(ctx, sp[-2], atom, sp[-3], FALSE); + JS_FreeAtom(ctx, atom); + if (unlikely(JS_IsException(val))) + goto exception; + JS_FreeValue(ctx, sp[-1]); + JS_FreeValue(ctx, sp[-2]); + JS_FreeValue(ctx, sp[-3]); + sp[-3] = val; + sp -= 2; + } + BREAK; + + CASE(OP_put_array_el): + { + int ret; + + ret = JS_SetPropertyValue(ctx, sp[-3], sp[-2], sp[-1], JS_PROP_THROW_STRICT); + JS_FreeValue(ctx, sp[-3]); + sp -= 3; + if (unlikely(ret < 0)) + goto exception; + } + BREAK; + + CASE(OP_put_ref_value): + { + int ret, flags; + flags = JS_PROP_THROW_STRICT; + if (unlikely(JS_IsUndefined(sp[-3]))) { + if (is_strict_mode(ctx)) { + JSAtom atom = JS_ValueToAtom(ctx, sp[-2]); + if (atom != JS_ATOM_NULL) { + JS_ThrowReferenceErrorNotDefined(ctx, atom); + JS_FreeAtom(ctx, atom); + } + goto exception; + } else { + sp[-3] = JS_DupValue(ctx, ctx->global_obj); + } + } else { + if (is_strict_mode(ctx)) + flags |= JS_PROP_NO_ADD; + } + ret = JS_SetPropertyValue(ctx, sp[-3], sp[-2], sp[-1], flags); + JS_FreeValue(ctx, sp[-3]); + sp -= 3; + if (unlikely(ret < 0)) + goto exception; + } + BREAK; + + CASE(OP_put_super_value): + { + int ret; + JSAtom atom; + if (JS_VALUE_GET_TAG(sp[-3]) != JS_TAG_OBJECT) { + JS_ThrowTypeErrorNotAnObject(ctx); + goto exception; + } + atom = JS_ValueToAtom(ctx, sp[-2]); + if (unlikely(atom == JS_ATOM_NULL)) + goto exception; + ret = JS_SetPropertyGeneric(ctx, sp[-3], atom, sp[-1], sp[-4], + JS_PROP_THROW_STRICT); + JS_FreeAtom(ctx, atom); + JS_FreeValue(ctx, sp[-4]); + JS_FreeValue(ctx, sp[-3]); + JS_FreeValue(ctx, sp[-2]); + sp -= 4; + if (ret < 0) + goto exception; + } + BREAK; + + CASE(OP_define_array_el): + { + int ret; + ret = JS_DefinePropertyValueValue(ctx, sp[-3], JS_DupValue(ctx, sp[-2]), sp[-1], + JS_PROP_C_W_E | JS_PROP_THROW); + sp -= 1; + if (unlikely(ret < 0)) + goto exception; + } + BREAK; + + CASE(OP_append): /* array pos enumobj -- array pos */ + { + if (js_append_enumerate(ctx, sp)) + goto exception; + JS_FreeValue(ctx, *--sp); + } + BREAK; + + CASE(OP_copy_data_properties): /* target source excludeList */ + { + /* stack offsets (-1 based): + 2 bits for target, + 3 bits for source, + 2 bits for exclusionList */ + int mask; + + mask = *pc++; + if (JS_CopyDataProperties(ctx, sp[-1 - (mask & 3)], + sp[-1 - ((mask >> 2) & 7)], + sp[-1 - ((mask >> 5) & 7)], 0)) + goto exception; + } + BREAK; + + CASE(OP_add): + { + JSValue op1, op2; + op1 = sp[-2]; + op2 = sp[-1]; + if (likely(JS_VALUE_IS_BOTH_INT(op1, op2))) { + int64_t r; + r = (int64_t)JS_VALUE_GET_INT(op1) + JS_VALUE_GET_INT(op2); + if (unlikely((int)r != r)) + goto add_slow; + sp[-2] = JS_NewInt32(ctx, r); + sp--; + } else if (JS_VALUE_IS_BOTH_FLOAT(op1, op2)) { + sp[-2] = __JS_NewFloat64(ctx, JS_VALUE_GET_FLOAT64(op1) + + JS_VALUE_GET_FLOAT64(op2)); + sp--; + } else { + add_slow: + if (js_add_slow(ctx, sp)) + goto exception; + sp--; + } + } + BREAK; + CASE(OP_add_loc): + { + JSValue *pv; + int idx; + idx = *pc; + pc += 1; + + pv = &var_buf[idx]; + if (likely(JS_VALUE_IS_BOTH_INT(*pv, sp[-1]))) { + int64_t r; + r = (int64_t)JS_VALUE_GET_INT(*pv) + + JS_VALUE_GET_INT(sp[-1]); + if (unlikely((int)r != r)) + goto add_loc_slow; + *pv = JS_NewInt32(ctx, r); + sp--; + } else if (JS_VALUE_GET_TAG(*pv) == JS_TAG_STRING) { + JSValue op1; + op1 = sp[-1]; + sp--; + op1 = JS_ToPrimitiveFree(ctx, op1, HINT_NONE); + if (JS_IsException(op1)) + goto exception; + op1 = JS_ConcatString(ctx, JS_DupValue(ctx, *pv), op1); + if (JS_IsException(op1)) + goto exception; + set_value(ctx, pv, op1); + } else { + JSValue ops[2]; + add_loc_slow: + /* In case of exception, js_add_slow frees ops[0] + and ops[1], so we must duplicate *pv */ + ops[0] = JS_DupValue(ctx, *pv); + ops[1] = sp[-1]; + sp--; + if (js_add_slow(ctx, ops + 2)) + goto exception; + set_value(ctx, pv, ops[0]); + } + } + BREAK; + CASE(OP_sub): + { + JSValue op1, op2; + op1 = sp[-2]; + op2 = sp[-1]; + if (likely(JS_VALUE_IS_BOTH_INT(op1, op2))) { + int64_t r; + r = (int64_t)JS_VALUE_GET_INT(op1) - JS_VALUE_GET_INT(op2); + if (unlikely((int)r != r)) + goto binary_arith_slow; + sp[-2] = JS_NewInt32(ctx, r); + sp--; + } else if (JS_VALUE_IS_BOTH_FLOAT(op1, op2)) { + sp[-2] = __JS_NewFloat64(ctx, JS_VALUE_GET_FLOAT64(op1) - + JS_VALUE_GET_FLOAT64(op2)); + sp--; + } else { + goto binary_arith_slow; + } + } + BREAK; + CASE(OP_mul): + { + JSValue op1, op2; + double d; + op1 = sp[-2]; + op2 = sp[-1]; + if (likely(JS_VALUE_IS_BOTH_INT(op1, op2))) { + int32_t v1, v2; + int64_t r; + v1 = JS_VALUE_GET_INT(op1); + v2 = JS_VALUE_GET_INT(op2); + r = (int64_t)v1 * v2; + if (unlikely((int)r != r)) { +#ifdef CONFIG_BIGNUM + if (unlikely(sf->js_mode & JS_MODE_MATH) && + (r < -MAX_SAFE_INTEGER || r > MAX_SAFE_INTEGER)) + goto binary_arith_slow; +#endif + d = (double)r; + goto mul_fp_res; + } + /* need to test zero case for -0 result */ + if (unlikely(r == 0 && (v1 | v2) < 0)) { + d = -0.0; + goto mul_fp_res; + } + sp[-2] = JS_NewInt32(ctx, r); + sp--; + } else if (JS_VALUE_IS_BOTH_FLOAT(op1, op2)) { +#ifdef CONFIG_BIGNUM + if (unlikely(sf->js_mode & JS_MODE_MATH)) + goto binary_arith_slow; +#endif + d = JS_VALUE_GET_FLOAT64(op1) * JS_VALUE_GET_FLOAT64(op2); + mul_fp_res: + sp[-2] = __JS_NewFloat64(ctx, d); + sp--; + } else { + goto binary_arith_slow; + } + } + BREAK; + CASE(OP_div): + { + JSValue op1, op2; + op1 = sp[-2]; + op2 = sp[-1]; + if (likely(JS_VALUE_IS_BOTH_INT(op1, op2))) { + int v1, v2; + if (unlikely(sf->js_mode & JS_MODE_MATH)) + goto binary_arith_slow; + v1 = JS_VALUE_GET_INT(op1); + v2 = JS_VALUE_GET_INT(op2); + sp[-2] = JS_NewFloat64(ctx, (double)v1 / (double)v2); + sp--; + } else { + goto binary_arith_slow; + } + } + BREAK; + CASE(OP_mod): +#ifdef CONFIG_BIGNUM + CASE(OP_math_mod): +#endif + { + JSValue op1, op2; + op1 = sp[-2]; + op2 = sp[-1]; + if (likely(JS_VALUE_IS_BOTH_INT(op1, op2))) { + int v1, v2, r; + v1 = JS_VALUE_GET_INT(op1); + v2 = JS_VALUE_GET_INT(op2); + /* We must avoid v2 = 0, v1 = INT32_MIN and v2 = + -1 and the cases where the result is -0. */ + if (unlikely(v1 < 0 || v2 <= 0)) + goto binary_arith_slow; + r = v1 % v2; + sp[-2] = JS_NewInt32(ctx, r); + sp--; + } else { + goto binary_arith_slow; + } + } + BREAK; + CASE(OP_pow): + binary_arith_slow: + if (js_binary_arith_slow(ctx, sp, opcode)) + goto exception; + sp--; + BREAK; + + CASE(OP_plus): + { + JSValue op1; + uint32_t tag; + op1 = sp[-1]; + tag = JS_VALUE_GET_TAG(op1); + if (tag == JS_TAG_INT || JS_TAG_IS_FLOAT64(tag)) { + } else { + if (js_unary_arith_slow(ctx, sp, opcode)) + goto exception; + } + } + BREAK; + CASE(OP_neg): + { + JSValue op1; + uint32_t tag; + int val; + double d; + op1 = sp[-1]; + tag = JS_VALUE_GET_TAG(op1); + if (tag == JS_TAG_INT) { + val = JS_VALUE_GET_INT(op1); + /* Note: -0 cannot be expressed as integer */ + if (unlikely(val == 0)) { + d = -0.0; + goto neg_fp_res; + } + if (unlikely(val == INT32_MIN)) { + d = -(double)val; + goto neg_fp_res; + } + sp[-1] = JS_NewInt32(ctx, -val); + } else if (JS_TAG_IS_FLOAT64(tag)) { + d = -JS_VALUE_GET_FLOAT64(op1); + neg_fp_res: + sp[-1] = __JS_NewFloat64(ctx, d); + } else { + if (js_unary_arith_slow(ctx, sp, opcode)) + goto exception; + } + } + BREAK; + CASE(OP_inc): + { + JSValue op1; + int val; + op1 = sp[-1]; + if (JS_VALUE_GET_TAG(op1) == JS_TAG_INT) { + val = JS_VALUE_GET_INT(op1); + if (unlikely(val == INT32_MAX)) + goto inc_slow; + sp[-1] = JS_NewInt32(ctx, val + 1); + } else { + inc_slow: + if (js_unary_arith_slow(ctx, sp, opcode)) + goto exception; + } + } + BREAK; + CASE(OP_dec): + { + JSValue op1; + int val; + op1 = sp[-1]; + if (JS_VALUE_GET_TAG(op1) == JS_TAG_INT) { + val = JS_VALUE_GET_INT(op1); + if (unlikely(val == INT32_MIN)) + goto dec_slow; + sp[-1] = JS_NewInt32(ctx, val - 1); + } else { + dec_slow: + if (js_unary_arith_slow(ctx, sp, opcode)) + goto exception; + } + } + BREAK; + CASE(OP_post_inc): + CASE(OP_post_dec): + if (js_post_inc_slow(ctx, sp, opcode)) + goto exception; + sp++; + BREAK; + CASE(OP_inc_loc): + { + JSValue op1; + int val; + int idx; + idx = *pc; + pc += 1; + + op1 = var_buf[idx]; + if (JS_VALUE_GET_TAG(op1) == JS_TAG_INT) { + val = JS_VALUE_GET_INT(op1); + if (unlikely(val == INT32_MAX)) + goto inc_loc_slow; + var_buf[idx] = JS_NewInt32(ctx, val + 1); + } else { + inc_loc_slow: + /* must duplicate otherwise the variable value may + be destroyed before JS code accesses it */ + op1 = JS_DupValue(ctx, op1); + if (js_unary_arith_slow(ctx, &op1 + 1, OP_inc)) + goto exception; + set_value(ctx, &var_buf[idx], op1); + } + } + BREAK; + CASE(OP_dec_loc): + { + JSValue op1; + int val; + int idx; + idx = *pc; + pc += 1; + + op1 = var_buf[idx]; + if (JS_VALUE_GET_TAG(op1) == JS_TAG_INT) { + val = JS_VALUE_GET_INT(op1); + if (unlikely(val == INT32_MIN)) + goto dec_loc_slow; + var_buf[idx] = JS_NewInt32(ctx, val - 1); + } else { + dec_loc_slow: + /* must duplicate otherwise the variable value may + be destroyed before JS code accesses it */ + op1 = JS_DupValue(ctx, op1); + if (js_unary_arith_slow(ctx, &op1 + 1, OP_dec)) + goto exception; + set_value(ctx, &var_buf[idx], op1); + } + } + BREAK; + CASE(OP_not): + { + JSValue op1; + op1 = sp[-1]; + if (JS_VALUE_GET_TAG(op1) == JS_TAG_INT) { + sp[-1] = JS_NewInt32(ctx, ~JS_VALUE_GET_INT(op1)); + } else { + if (js_not_slow(ctx, sp)) + goto exception; + } + } + BREAK; + + CASE(OP_shl): + { + JSValue op1, op2; + op1 = sp[-2]; + op2 = sp[-1]; + if (likely(JS_VALUE_IS_BOTH_INT(op1, op2))) { + uint32_t v1, v2; + v1 = JS_VALUE_GET_INT(op1); + v2 = JS_VALUE_GET_INT(op2); +#ifdef CONFIG_BIGNUM + { + int64_t r; + if (unlikely(sf->js_mode & JS_MODE_MATH)) { + if (v2 > 0x1f) + goto shl_slow; + r = (int64_t)v1 << v2; + if ((int)r != r) + goto shl_slow; + } else { + v2 &= 0x1f; + } + } +#else + v2 &= 0x1f; +#endif + sp[-2] = JS_NewInt32(ctx, v1 << v2); + sp--; + } else { +#ifdef CONFIG_BIGNUM + shl_slow: +#endif + if (js_binary_logic_slow(ctx, sp, opcode)) + goto exception; + sp--; + } + } + BREAK; + CASE(OP_shr): + { + JSValue op1, op2; + op1 = sp[-2]; + op2 = sp[-1]; + if (likely(JS_VALUE_IS_BOTH_INT(op1, op2))) { + uint32_t v2; + v2 = JS_VALUE_GET_INT(op2); + /* v1 >>> v2 retains its JS semantics if CONFIG_BIGNUM */ + v2 &= 0x1f; + sp[-2] = JS_NewUint32(ctx, + (uint32_t)JS_VALUE_GET_INT(op1) >> + v2); + sp--; + } else { + if (js_shr_slow(ctx, sp)) + goto exception; + sp--; + } + } + BREAK; + CASE(OP_sar): + { + JSValue op1, op2; + op1 = sp[-2]; + op2 = sp[-1]; + if (likely(JS_VALUE_IS_BOTH_INT(op1, op2))) { + uint32_t v2; + v2 = JS_VALUE_GET_INT(op2); +#ifdef CONFIG_BIGNUM + if (unlikely(v2 > 0x1f)) { + if (unlikely(sf->js_mode & JS_MODE_MATH)) + goto sar_slow; + else + v2 &= 0x1f; + } +#else + v2 &= 0x1f; +#endif + sp[-2] = JS_NewInt32(ctx, + (int)JS_VALUE_GET_INT(op1) >> v2); + sp--; + } else { +#ifdef CONFIG_BIGNUM + sar_slow: +#endif + if (js_binary_logic_slow(ctx, sp, opcode)) + goto exception; + sp--; + } + } + BREAK; + CASE(OP_and): + { + JSValue op1, op2; + op1 = sp[-2]; + op2 = sp[-1]; + if (likely(JS_VALUE_IS_BOTH_INT(op1, op2))) { + sp[-2] = JS_NewInt32(ctx, + JS_VALUE_GET_INT(op1) & + JS_VALUE_GET_INT(op2)); + sp--; + } else { + if (js_binary_logic_slow(ctx, sp, opcode)) + goto exception; + sp--; + } + } + BREAK; + CASE(OP_or): + { + JSValue op1, op2; + op1 = sp[-2]; + op2 = sp[-1]; + if (likely(JS_VALUE_IS_BOTH_INT(op1, op2))) { + sp[-2] = JS_NewInt32(ctx, + JS_VALUE_GET_INT(op1) | + JS_VALUE_GET_INT(op2)); + sp--; + } else { + if (js_binary_logic_slow(ctx, sp, opcode)) + goto exception; + sp--; + } + } + BREAK; + CASE(OP_xor): + { + JSValue op1, op2; + op1 = sp[-2]; + op2 = sp[-1]; + if (likely(JS_VALUE_IS_BOTH_INT(op1, op2))) { + sp[-2] = JS_NewInt32(ctx, + JS_VALUE_GET_INT(op1) ^ + JS_VALUE_GET_INT(op2)); + sp--; + } else { + if (js_binary_logic_slow(ctx, sp, opcode)) + goto exception; + sp--; + } + } + BREAK; + + +#define OP_CMP(opcode, binary_op, slow_call) \ + CASE(opcode): \ + { \ + JSValue op1, op2; \ + op1 = sp[-2]; \ + op2 = sp[-1]; \ + if (likely(JS_VALUE_IS_BOTH_INT(op1, op2))) { \ + sp[-2] = JS_NewBool(ctx, JS_VALUE_GET_INT(op1) binary_op JS_VALUE_GET_INT(op2)); \ + sp--; \ + } else { \ + if (slow_call) \ + goto exception; \ + sp--; \ + } \ + } \ + BREAK + + OP_CMP(OP_lt, <, js_relational_slow(ctx, sp, opcode)); + OP_CMP(OP_lte, <=, js_relational_slow(ctx, sp, opcode)); + OP_CMP(OP_gt, >, js_relational_slow(ctx, sp, opcode)); + OP_CMP(OP_gte, >=, js_relational_slow(ctx, sp, opcode)); + OP_CMP(OP_eq, ==, js_eq_slow(ctx, sp, 0)); + OP_CMP(OP_neq, !=, js_eq_slow(ctx, sp, 1)); + OP_CMP(OP_strict_eq, ==, js_strict_eq_slow(ctx, sp, 0)); + OP_CMP(OP_strict_neq, !=, js_strict_eq_slow(ctx, sp, 1)); + +#ifdef CONFIG_BIGNUM + CASE(OP_mul_pow10): + if (rt->bigfloat_ops.mul_pow10(ctx, sp)) + goto exception; + sp--; + BREAK; +#endif + CASE(OP_in): + if (js_operator_in(ctx, sp)) + goto exception; + sp--; + BREAK; + CASE(OP_instanceof): + if (js_operator_instanceof(ctx, sp)) + goto exception; + sp--; + BREAK; + CASE(OP_typeof): + { + JSValue op1; + JSAtom atom; + + op1 = sp[-1]; + atom = js_operator_typeof(ctx, op1); + JS_FreeValue(ctx, op1); + sp[-1] = JS_AtomToString(ctx, atom); + } + BREAK; + CASE(OP_delete): + if (js_operator_delete(ctx, sp)) + goto exception; + sp--; + BREAK; + CASE(OP_delete_var): + { + JSAtom atom; + int ret; + + atom = get_u32(pc); + pc += 4; + + ret = JS_DeleteProperty(ctx, ctx->global_obj, atom, 0); + if (unlikely(ret < 0)) + goto exception; + *sp++ = JS_NewBool(ctx, ret); + } + BREAK; + + CASE(OP_to_object): + if (JS_VALUE_GET_TAG(sp[-1]) != JS_TAG_OBJECT) { + ret_val = JS_ToObject(ctx, sp[-1]); + if (JS_IsException(ret_val)) + goto exception; + JS_FreeValue(ctx, sp[-1]); + sp[-1] = ret_val; + } + BREAK; + + CASE(OP_to_propkey): + switch (JS_VALUE_GET_TAG(sp[-1])) { + case JS_TAG_INT: + case JS_TAG_STRING: + case JS_TAG_SYMBOL: + break; + default: + ret_val = JS_ToPropertyKey(ctx, sp[-1]); + if (JS_IsException(ret_val)) + goto exception; + JS_FreeValue(ctx, sp[-1]); + sp[-1] = ret_val; + break; + } + BREAK; + + CASE(OP_to_propkey2): + /* must be tested first */ + if (unlikely(JS_IsUndefined(sp[-2]) || JS_IsNull(sp[-2]))) { + JS_ThrowTypeError(ctx, "value has no property"); + goto exception; + } + switch (JS_VALUE_GET_TAG(sp[-1])) { + case JS_TAG_INT: + case JS_TAG_STRING: + case JS_TAG_SYMBOL: + break; + default: + ret_val = JS_ToPropertyKey(ctx, sp[-1]); + if (JS_IsException(ret_val)) + goto exception; + JS_FreeValue(ctx, sp[-1]); + sp[-1] = ret_val; + break; + } + BREAK; +#if 0 + CASE(OP_to_string): + if (JS_VALUE_GET_TAG(sp[-1]) != JS_TAG_STRING) { + ret_val = JS_ToString(ctx, sp[-1]); + if (JS_IsException(ret_val)) + goto exception; + JS_FreeValue(ctx, sp[-1]); + sp[-1] = ret_val; + } + BREAK; +#endif + CASE(OP_with_get_var): + CASE(OP_with_put_var): + CASE(OP_with_delete_var): + CASE(OP_with_make_ref): + CASE(OP_with_get_ref): + CASE(OP_with_get_ref_undef): + { + JSAtom atom; + int32_t diff; + JSValue obj, val; + int ret, is_with; + atom = get_u32(pc); + diff = get_u32(pc + 4); + is_with = pc[8]; + pc += 9; + + obj = sp[-1]; + ret = JS_HasProperty(ctx, obj, atom); + if (unlikely(ret < 0)) + goto exception; + if (ret) { + if (is_with) { + ret = js_has_unscopable(ctx, obj, atom); + if (unlikely(ret < 0)) + goto exception; + if (ret) + goto no_with; + } + switch (opcode) { + case OP_with_get_var: + val = JS_GetProperty(ctx, obj, atom); + if (unlikely(JS_IsException(val))) + goto exception; + set_value(ctx, &sp[-1], val); + break; + case OP_with_put_var: + /* XXX: check if strict mode */ + ret = JS_SetPropertyInternal(ctx, obj, atom, sp[-2], + JS_PROP_THROW_STRICT); + JS_FreeValue(ctx, sp[-1]); + sp -= 2; + if (unlikely(ret < 0)) + goto exception; + break; + case OP_with_delete_var: + ret = JS_DeleteProperty(ctx, obj, atom, 0); + if (unlikely(ret < 0)) + goto exception; + JS_FreeValue(ctx, sp[-1]); + sp[-1] = JS_NewBool(ctx, ret); + break; + case OP_with_make_ref: + /* produce a pair object/propname on the stack */ + *sp++ = JS_AtomToValue(ctx, atom); + break; + case OP_with_get_ref: + /* produce a pair object/method on the stack */ + val = JS_GetProperty(ctx, obj, atom); + if (unlikely(JS_IsException(val))) + goto exception; + *sp++ = val; + break; + case OP_with_get_ref_undef: + /* produce a pair undefined/function on the stack */ + val = JS_GetProperty(ctx, obj, atom); + if (unlikely(JS_IsException(val))) + goto exception; + JS_FreeValue(ctx, sp[-1]); + sp[-1] = JS_UNDEFINED; + *sp++ = val; + break; + } + pc += diff - 5; + } else { + no_with: + /* if not jumping, drop the object argument */ + JS_FreeValue(ctx, sp[-1]); + sp--; + } + } + BREAK; + + CASE(OP_await): + ret_val = JS_NewInt32(ctx, FUNC_RET_AWAIT); + goto done_generator; + CASE(OP_yield): + ret_val = JS_NewInt32(ctx, FUNC_RET_YIELD); + goto done_generator; + CASE(OP_yield_star): + CASE(OP_async_yield_star): + ret_val = JS_NewInt32(ctx, FUNC_RET_YIELD_STAR); + goto done_generator; + CASE(OP_return_async): + CASE(OP_initial_yield): + ret_val = JS_UNDEFINED; + goto done_generator; + + CASE(OP_nop): + BREAK; + CASE(OP_is_undefined_or_null): + if (JS_VALUE_GET_TAG(sp[-1]) == JS_TAG_UNDEFINED || + JS_VALUE_GET_TAG(sp[-1]) == JS_TAG_NULL) { + goto set_true; + } else { + goto free_and_set_false; + } +#if SHORT_OPCODES + CASE(OP_is_undefined): + if (JS_VALUE_GET_TAG(sp[-1]) == JS_TAG_UNDEFINED) { + goto set_true; + } else { + goto free_and_set_false; + } + CASE(OP_is_null): + if (JS_VALUE_GET_TAG(sp[-1]) == JS_TAG_NULL) { + goto set_true; + } else { + goto free_and_set_false; + } + /* XXX: could merge to a single opcode */ + CASE(OP_typeof_is_undefined): + /* different from OP_is_undefined because of isHTMLDDA */ + if (js_operator_typeof(ctx, sp[-1]) == JS_ATOM_undefined) { + goto free_and_set_true; + } else { + goto free_and_set_false; + } + CASE(OP_typeof_is_function): + if (js_operator_typeof(ctx, sp[-1]) == JS_ATOM_function) { + goto free_and_set_true; + } else { + goto free_and_set_false; + } + free_and_set_true: + JS_FreeValue(ctx, sp[-1]); +#endif + set_true: + sp[-1] = JS_TRUE; + BREAK; + free_and_set_false: + JS_FreeValue(ctx, sp[-1]); + sp[-1] = JS_FALSE; + BREAK; + CASE(OP_invalid): + DEFAULT: + JS_ThrowInternalError(ctx, "invalid opcode: pc=%u opcode=0x%02x", + (int)(pc - b->byte_code_buf - 1), opcode); + goto exception; + } + } + exception: + if (is_backtrace_needed(ctx, rt->current_exception)) { + /* add the backtrace information now (it is not done + before if the exception happens in a bytecode + operation */ + sf->cur_pc = pc; + build_backtrace(ctx, rt->current_exception, NULL, 0, 0); + } + if (!JS_IsUncatchableError(ctx, rt->current_exception)) { + while (sp > stack_buf) { + JSValue val = *--sp; + JS_FreeValue(ctx, val); + if (JS_VALUE_GET_TAG(val) == JS_TAG_CATCH_OFFSET) { + int pos = JS_VALUE_GET_INT(val); + if (pos == 0) { + /* enumerator: close it with a throw */ + JS_FreeValue(ctx, sp[-1]); /* drop the next method */ + sp--; + JS_IteratorClose(ctx, sp[-1], TRUE); + } else { + *sp++ = rt->current_exception; + rt->current_exception = JS_NULL; + pc = b->byte_code_buf + pos; + goto restart; + } + } + } + } + ret_val = JS_EXCEPTION; + /* the local variables are freed by the caller in the generator + case. Hence the label 'done' should never be reached in a + generator function. */ + if (b->func_kind != JS_FUNC_NORMAL) { + done_generator: + sf->cur_pc = pc; + sf->cur_sp = sp; + } else { + done: + if (unlikely(!list_empty(&sf->var_ref_list))) { + /* variable references reference the stack: must close them */ + close_var_refs(rt, sf); + } + /* free the local variables and stack */ + for(pval = local_buf; pval < sp; pval++) { + JS_FreeValue(ctx, *pval); + } + } + rt->current_stack_frame = sf->prev_frame; + return ret_val; +} + +JSValue JS_Call(JSContext *ctx, JSValueConst func_obj, JSValueConst this_obj, + int argc, JSValueConst *argv) +{ + return JS_CallInternal(ctx, func_obj, this_obj, JS_UNDEFINED, + argc, (JSValue *)argv, JS_CALL_FLAG_COPY_ARGV); +} + +static JSValue JS_CallFree(JSContext *ctx, JSValue func_obj, JSValueConst this_obj, + int argc, JSValueConst *argv) +{ + JSValue res = JS_CallInternal(ctx, func_obj, this_obj, JS_UNDEFINED, + argc, (JSValue *)argv, JS_CALL_FLAG_COPY_ARGV); + JS_FreeValue(ctx, func_obj); + return res; +} + +/* warning: the refcount of the context is not incremented. Return + NULL in case of exception (case of revoked proxy only) */ +static JSContext *JS_GetFunctionRealm(JSContext *ctx, JSValueConst func_obj) +{ + JSObject *p; + JSContext *realm; + + if (JS_VALUE_GET_TAG(func_obj) != JS_TAG_OBJECT) + return ctx; + p = JS_VALUE_GET_OBJ(func_obj); + switch(p->class_id) { + case JS_CLASS_C_FUNCTION: + realm = p->u.cfunc.realm; + break; + case JS_CLASS_BYTECODE_FUNCTION: + case JS_CLASS_GENERATOR_FUNCTION: + case JS_CLASS_ASYNC_FUNCTION: + case JS_CLASS_ASYNC_GENERATOR_FUNCTION: + { + JSFunctionBytecode *b; + b = p->u.func.function_bytecode; + realm = b->realm; + } + break; + case JS_CLASS_PROXY: + { + JSProxyData *s = p->u.opaque; + if (!s) + return ctx; + if (s->is_revoked) { + JS_ThrowTypeErrorRevokedProxy(ctx); + return NULL; + } else { + realm = JS_GetFunctionRealm(ctx, s->target); + } + } + break; + case JS_CLASS_BOUND_FUNCTION: + { + JSBoundFunction *bf = p->u.bound_function; + realm = JS_GetFunctionRealm(ctx, bf->func_obj); + } + break; + default: + realm = ctx; + break; + } + return realm; +} + +static JSValue js_create_from_ctor(JSContext *ctx, JSValueConst ctor, + int class_id) +{ + JSValue proto, obj; + JSContext *realm; + + if (JS_IsUndefined(ctor)) { + proto = JS_DupValue(ctx, ctx->class_proto[class_id]); + } else { + proto = JS_GetProperty(ctx, ctor, JS_ATOM_prototype); + if (JS_IsException(proto)) + return proto; + if (!JS_IsObject(proto)) { + JS_FreeValue(ctx, proto); + realm = JS_GetFunctionRealm(ctx, ctor); + if (!realm) + return JS_EXCEPTION; + proto = JS_DupValue(ctx, realm->class_proto[class_id]); + } + } + obj = JS_NewObjectProtoClass(ctx, proto, class_id); + JS_FreeValue(ctx, proto); + return obj; +} + +/* argv[] is modified if (flags & JS_CALL_FLAG_COPY_ARGV) = 0. */ +static JSValue JS_CallConstructorInternal(JSContext *ctx, + JSValueConst func_obj, + JSValueConst new_target, + int argc, JSValue *argv, int flags) +{ + JSObject *p; + JSFunctionBytecode *b; + + if (js_poll_interrupts(ctx)) + return JS_EXCEPTION; + flags |= JS_CALL_FLAG_CONSTRUCTOR; + if (unlikely(JS_VALUE_GET_TAG(func_obj) != JS_TAG_OBJECT)) + goto not_a_function; + p = JS_VALUE_GET_OBJ(func_obj); + if (unlikely(!p->is_constructor)) + return JS_ThrowTypeError(ctx, "not a constructor"); + if (unlikely(p->class_id != JS_CLASS_BYTECODE_FUNCTION)) { + JSClassCall *call_func; + call_func = ctx->rt->class_array[p->class_id].call; + if (!call_func) { + not_a_function: + return JS_ThrowTypeError(ctx, "not a function"); + } + return call_func(ctx, func_obj, new_target, argc, + (JSValueConst *)argv, flags); + } + + b = p->u.func.function_bytecode; + if (b->is_derived_class_constructor) { + return JS_CallInternal(ctx, func_obj, JS_UNDEFINED, new_target, argc, argv, flags); + } else { + JSValue obj, ret; + /* legacy constructor behavior */ + obj = js_create_from_ctor(ctx, new_target, JS_CLASS_OBJECT); + if (JS_IsException(obj)) + return JS_EXCEPTION; + ret = JS_CallInternal(ctx, func_obj, obj, new_target, argc, argv, flags); + if (JS_VALUE_GET_TAG(ret) == JS_TAG_OBJECT || + JS_IsException(ret)) { + JS_FreeValue(ctx, obj); + return ret; + } else { + JS_FreeValue(ctx, ret); + return obj; + } + } +} + +JSValue JS_CallConstructor2(JSContext *ctx, JSValueConst func_obj, + JSValueConst new_target, + int argc, JSValueConst *argv) +{ + return JS_CallConstructorInternal(ctx, func_obj, new_target, + argc, (JSValue *)argv, + JS_CALL_FLAG_COPY_ARGV); +} + +JSValue JS_CallConstructor(JSContext *ctx, JSValueConst func_obj, + int argc, JSValueConst *argv) +{ + return JS_CallConstructorInternal(ctx, func_obj, func_obj, + argc, (JSValue *)argv, + JS_CALL_FLAG_COPY_ARGV); +} + +JSValue JS_Invoke(JSContext *ctx, JSValueConst this_val, JSAtom atom, + int argc, JSValueConst *argv) +{ + JSValue func_obj; + func_obj = JS_GetProperty(ctx, this_val, atom); + if (JS_IsException(func_obj)) + return func_obj; + return JS_CallFree(ctx, func_obj, this_val, argc, argv); +} + +static JSValue JS_InvokeFree(JSContext *ctx, JSValue this_val, JSAtom atom, + int argc, JSValueConst *argv) +{ + JSValue res = JS_Invoke(ctx, this_val, atom, argc, argv); + JS_FreeValue(ctx, this_val); + return res; +} + +/* JSAsyncFunctionState (used by generator and async functions) */ +static __exception int async_func_init(JSContext *ctx, JSAsyncFunctionState *s, + JSValueConst func_obj, JSValueConst this_obj, + int argc, JSValueConst *argv) +{ + JSObject *p; + JSFunctionBytecode *b; + JSStackFrame *sf; + int local_count, i, arg_buf_len, n; + + sf = &s->frame; + init_list_head(&sf->var_ref_list); + p = JS_VALUE_GET_OBJ(func_obj); + b = p->u.func.function_bytecode; + sf->js_mode = b->js_mode; + sf->cur_pc = b->byte_code_buf; + arg_buf_len = max_int(b->arg_count, argc); + local_count = arg_buf_len + b->var_count + b->stack_size; + sf->arg_buf = js_malloc(ctx, sizeof(JSValue) * max_int(local_count, 1)); + if (!sf->arg_buf) + return -1; + sf->cur_func = JS_DupValue(ctx, func_obj); + s->this_val = JS_DupValue(ctx, this_obj); + s->argc = argc; + sf->arg_count = arg_buf_len; + sf->var_buf = sf->arg_buf + arg_buf_len; + sf->cur_sp = sf->var_buf + b->var_count; + for(i = 0; i < argc; i++) + sf->arg_buf[i] = JS_DupValue(ctx, argv[i]); + n = arg_buf_len + b->var_count; + for(i = argc; i < n; i++) + sf->arg_buf[i] = JS_UNDEFINED; + return 0; +} + +static void async_func_mark(JSRuntime *rt, JSAsyncFunctionState *s, + JS_MarkFunc *mark_func) +{ + JSStackFrame *sf; + JSValue *sp; + + sf = &s->frame; + JS_MarkValue(rt, sf->cur_func, mark_func); + JS_MarkValue(rt, s->this_val, mark_func); + if (sf->cur_sp) { + /* if the function is running, cur_sp is not known so we + cannot mark the stack. Marking the variables is not needed + because a running function cannot be part of a removable + cycle */ + for(sp = sf->arg_buf; sp < sf->cur_sp; sp++) + JS_MarkValue(rt, *sp, mark_func); + } +} + +static void async_func_free(JSRuntime *rt, JSAsyncFunctionState *s) +{ + JSStackFrame *sf; + JSValue *sp; + + sf = &s->frame; + + /* close the closure variables. */ + close_var_refs(rt, sf); + + if (sf->arg_buf) { + /* cannot free the function if it is running */ + assert(sf->cur_sp != NULL); + for(sp = sf->arg_buf; sp < sf->cur_sp; sp++) { + JS_FreeValueRT(rt, *sp); + } + js_free_rt(rt, sf->arg_buf); + } + JS_FreeValueRT(rt, sf->cur_func); + JS_FreeValueRT(rt, s->this_val); +} + +static JSValue async_func_resume(JSContext *ctx, JSAsyncFunctionState *s) +{ + JSValue func_obj; + + if (js_check_stack_overflow(ctx->rt, 0)) + return JS_ThrowStackOverflow(ctx); + + /* the tag does not matter provided it is not an object */ + func_obj = JS_MKPTR(JS_TAG_INT, s); + return JS_CallInternal(ctx, func_obj, s->this_val, JS_UNDEFINED, + s->argc, s->frame.arg_buf, JS_CALL_FLAG_GENERATOR); +} + + +/* Generators */ + +typedef enum JSGeneratorStateEnum { + JS_GENERATOR_STATE_SUSPENDED_START, + JS_GENERATOR_STATE_SUSPENDED_YIELD, + JS_GENERATOR_STATE_SUSPENDED_YIELD_STAR, + JS_GENERATOR_STATE_EXECUTING, + JS_GENERATOR_STATE_COMPLETED, +} JSGeneratorStateEnum; + +typedef struct JSGeneratorData { + JSGeneratorStateEnum state; + JSAsyncFunctionState func_state; +} JSGeneratorData; + +static void free_generator_stack_rt(JSRuntime *rt, JSGeneratorData *s) +{ + if (s->state == JS_GENERATOR_STATE_COMPLETED) + return; + async_func_free(rt, &s->func_state); + s->state = JS_GENERATOR_STATE_COMPLETED; +} + +static void js_generator_finalizer(JSRuntime *rt, JSValue obj) +{ + JSGeneratorData *s = JS_GetOpaque(obj, JS_CLASS_GENERATOR); + + if (s) { + free_generator_stack_rt(rt, s); + js_free_rt(rt, s); + } +} + +static void free_generator_stack(JSContext *ctx, JSGeneratorData *s) +{ + free_generator_stack_rt(ctx->rt, s); +} + +static void js_generator_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + JSGeneratorData *s = p->u.generator_data; + + if (!s || s->state == JS_GENERATOR_STATE_COMPLETED) + return; + async_func_mark(rt, &s->func_state, mark_func); +} + +/* XXX: use enum */ +#define GEN_MAGIC_NEXT 0 +#define GEN_MAGIC_RETURN 1 +#define GEN_MAGIC_THROW 2 + +static JSValue js_generator_next(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv, + BOOL *pdone, int magic) +{ + JSGeneratorData *s = JS_GetOpaque(this_val, JS_CLASS_GENERATOR); + JSStackFrame *sf; + JSValue ret, func_ret; + + *pdone = TRUE; + if (!s) + return JS_ThrowTypeError(ctx, "not a generator"); + sf = &s->func_state.frame; + switch(s->state) { + default: + case JS_GENERATOR_STATE_SUSPENDED_START: + if (magic == GEN_MAGIC_NEXT) { + goto exec_no_arg; + } else { + free_generator_stack(ctx, s); + goto done; + } + break; + case JS_GENERATOR_STATE_SUSPENDED_YIELD_STAR: + case JS_GENERATOR_STATE_SUSPENDED_YIELD: + /* cur_sp[-1] was set to JS_UNDEFINED in the previous call */ + ret = JS_DupValue(ctx, argv[0]); + if (magic == GEN_MAGIC_THROW && + s->state == JS_GENERATOR_STATE_SUSPENDED_YIELD) { + JS_Throw(ctx, ret); + s->func_state.throw_flag = TRUE; + } else { + sf->cur_sp[-1] = ret; + sf->cur_sp[0] = JS_NewInt32(ctx, magic); + sf->cur_sp++; + exec_no_arg: + s->func_state.throw_flag = FALSE; + } + s->state = JS_GENERATOR_STATE_EXECUTING; + func_ret = async_func_resume(ctx, &s->func_state); + s->state = JS_GENERATOR_STATE_SUSPENDED_YIELD; + if (JS_IsException(func_ret)) { + /* finalize the execution in case of exception */ + free_generator_stack(ctx, s); + return func_ret; + } + if (JS_VALUE_GET_TAG(func_ret) == JS_TAG_INT) { + /* get the returned yield value at the top of the stack */ + ret = sf->cur_sp[-1]; + sf->cur_sp[-1] = JS_UNDEFINED; + if (JS_VALUE_GET_INT(func_ret) == FUNC_RET_YIELD_STAR) { + s->state = JS_GENERATOR_STATE_SUSPENDED_YIELD_STAR; + /* return (value, done) object */ + *pdone = 2; + } else { + *pdone = FALSE; + } + } else { + /* end of iterator */ + ret = sf->cur_sp[-1]; + sf->cur_sp[-1] = JS_UNDEFINED; + JS_FreeValue(ctx, func_ret); + free_generator_stack(ctx, s); + } + break; + case JS_GENERATOR_STATE_COMPLETED: + done: + /* execution is finished */ + switch(magic) { + default: + case GEN_MAGIC_NEXT: + ret = JS_UNDEFINED; + break; + case GEN_MAGIC_RETURN: + ret = JS_DupValue(ctx, argv[0]); + break; + case GEN_MAGIC_THROW: + ret = JS_Throw(ctx, JS_DupValue(ctx, argv[0])); + break; + } + break; + case JS_GENERATOR_STATE_EXECUTING: + ret = JS_ThrowTypeError(ctx, "cannot invoke a running generator"); + break; + } + return ret; +} + +static JSValue js_generator_function_call(JSContext *ctx, JSValueConst func_obj, + JSValueConst this_obj, + int argc, JSValueConst *argv, + int flags) +{ + JSValue obj, func_ret; + JSGeneratorData *s; + + s = js_mallocz(ctx, sizeof(*s)); + if (!s) + return JS_EXCEPTION; + s->state = JS_GENERATOR_STATE_SUSPENDED_START; + if (async_func_init(ctx, &s->func_state, func_obj, this_obj, argc, argv)) { + s->state = JS_GENERATOR_STATE_COMPLETED; + goto fail; + } + + /* execute the function up to 'OP_initial_yield' */ + func_ret = async_func_resume(ctx, &s->func_state); + if (JS_IsException(func_ret)) + goto fail; + JS_FreeValue(ctx, func_ret); + + obj = js_create_from_ctor(ctx, func_obj, JS_CLASS_GENERATOR); + if (JS_IsException(obj)) + goto fail; + JS_SetOpaque(obj, s); + return obj; + fail: + free_generator_stack_rt(ctx->rt, s); + js_free(ctx, s); + return JS_EXCEPTION; +} + +/* AsyncFunction */ + +static void js_async_function_terminate(JSRuntime *rt, JSAsyncFunctionData *s) +{ + if (s->is_active) { + async_func_free(rt, &s->func_state); + s->is_active = FALSE; + } +} + +static void js_async_function_free0(JSRuntime *rt, JSAsyncFunctionData *s) +{ + js_async_function_terminate(rt, s); + JS_FreeValueRT(rt, s->resolving_funcs[0]); + JS_FreeValueRT(rt, s->resolving_funcs[1]); + remove_gc_object(&s->header); + js_free_rt(rt, s); +} + +static void js_async_function_free(JSRuntime *rt, JSAsyncFunctionData *s) +{ + if (--s->header.ref_count == 0) { + js_async_function_free0(rt, s); + } +} + +static void js_async_function_resolve_finalizer(JSRuntime *rt, JSValue val) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + JSAsyncFunctionData *s = p->u.async_function_data; + if (s) { + js_async_function_free(rt, s); + } +} + +static void js_async_function_resolve_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func) +{ + JSObject *p = JS_VALUE_GET_OBJ(val); + JSAsyncFunctionData *s = p->u.async_function_data; + if (s) { + mark_func(rt, &s->header); + } +} + +static int js_async_function_resolve_create(JSContext *ctx, + JSAsyncFunctionData *s, + JSValue *resolving_funcs) +{ + int i; + JSObject *p; + + for(i = 0; i < 2; i++) { + resolving_funcs[i] = + JS_NewObjectProtoClass(ctx, ctx->function_proto, + JS_CLASS_ASYNC_FUNCTION_RESOLVE + i); + if (JS_IsException(resolving_funcs[i])) { + if (i == 1) + JS_FreeValue(ctx, resolving_funcs[0]); + return -1; + } + p = JS_VALUE_GET_OBJ(resolving_funcs[i]); + s->header.ref_count++; + p->u.async_function_data = s; + } + return 0; +} + +static void js_async_function_resume(JSContext *ctx, JSAsyncFunctionData *s) +{ + JSValue func_ret, ret2; + + func_ret = async_func_resume(ctx, &s->func_state); + if (JS_IsException(func_ret)) { + JSValue error; + fail: + error = JS_GetException(ctx); + ret2 = JS_Call(ctx, s->resolving_funcs[1], JS_UNDEFINED, + 1, (JSValueConst *)&error); + JS_FreeValue(ctx, error); + js_async_function_terminate(ctx->rt, s); + JS_FreeValue(ctx, ret2); /* XXX: what to do if exception ? */ + } else { + JSValue value; + value = s->func_state.frame.cur_sp[-1]; + s->func_state.frame.cur_sp[-1] = JS_UNDEFINED; + if (JS_IsUndefined(func_ret)) { + /* function returned */ + ret2 = JS_Call(ctx, s->resolving_funcs[0], JS_UNDEFINED, + 1, (JSValueConst *)&value); + JS_FreeValue(ctx, ret2); /* XXX: what to do if exception ? */ + JS_FreeValue(ctx, value); + js_async_function_terminate(ctx->rt, s); + } else { + JSValue promise, resolving_funcs[2], resolving_funcs1[2]; + int i, res; + + /* await */ + JS_FreeValue(ctx, func_ret); /* not used */ + promise = js_promise_resolve(ctx, ctx->promise_ctor, + 1, (JSValueConst *)&value, 0); + JS_FreeValue(ctx, value); + if (JS_IsException(promise)) + goto fail; + if (js_async_function_resolve_create(ctx, s, resolving_funcs)) { + JS_FreeValue(ctx, promise); + goto fail; + } + + /* Note: no need to create 'thrownawayCapability' as in + the spec */ + for(i = 0; i < 2; i++) + resolving_funcs1[i] = JS_UNDEFINED; + res = perform_promise_then(ctx, promise, + (JSValueConst *)resolving_funcs, + (JSValueConst *)resolving_funcs1); + JS_FreeValue(ctx, promise); + for(i = 0; i < 2; i++) + JS_FreeValue(ctx, resolving_funcs[i]); + if (res) + goto fail; + } + } +} + +static JSValue js_async_function_resolve_call(JSContext *ctx, + JSValueConst func_obj, + JSValueConst this_obj, + int argc, JSValueConst *argv, + int flags) +{ + JSObject *p = JS_VALUE_GET_OBJ(func_obj); + JSAsyncFunctionData *s = p->u.async_function_data; + BOOL is_reject = p->class_id - JS_CLASS_ASYNC_FUNCTION_RESOLVE; + JSValueConst arg; + + if (argc > 0) + arg = argv[0]; + else + arg = JS_UNDEFINED; + s->func_state.throw_flag = is_reject; + if (is_reject) { + JS_Throw(ctx, JS_DupValue(ctx, arg)); + } else { + /* return value of await */ + s->func_state.frame.cur_sp[-1] = JS_DupValue(ctx, arg); + } + js_async_function_resume(ctx, s); + return JS_UNDEFINED; +} + +static JSValue js_async_function_call(JSContext *ctx, JSValueConst func_obj, + JSValueConst this_obj, + int argc, JSValueConst *argv, int flags) +{ + JSValue promise; + JSAsyncFunctionData *s; + + s = js_mallocz(ctx, sizeof(*s)); + if (!s) + return JS_EXCEPTION; + s->header.ref_count = 1; + add_gc_object(ctx->rt, &s->header, JS_GC_OBJ_TYPE_ASYNC_FUNCTION); + s->is_active = FALSE; + s->resolving_funcs[0] = JS_UNDEFINED; + s->resolving_funcs[1] = JS_UNDEFINED; + + promise = JS_NewPromiseCapability(ctx, s->resolving_funcs); + if (JS_IsException(promise)) + goto fail; + + if (async_func_init(ctx, &s->func_state, func_obj, this_obj, argc, argv)) { + fail: + JS_FreeValue(ctx, promise); + js_async_function_free(ctx->rt, s); + return JS_EXCEPTION; + } + s->is_active = TRUE; + + js_async_function_resume(ctx, s); + + js_async_function_free(ctx->rt, s); + + return promise; +} + +/* AsyncGenerator */ + +typedef enum JSAsyncGeneratorStateEnum { + JS_ASYNC_GENERATOR_STATE_SUSPENDED_START, + JS_ASYNC_GENERATOR_STATE_SUSPENDED_YIELD, + JS_ASYNC_GENERATOR_STATE_SUSPENDED_YIELD_STAR, + JS_ASYNC_GENERATOR_STATE_EXECUTING, + JS_ASYNC_GENERATOR_STATE_AWAITING_RETURN, + JS_ASYNC_GENERATOR_STATE_COMPLETED, +} JSAsyncGeneratorStateEnum; + +typedef struct JSAsyncGeneratorRequest { + struct list_head link; + /* completion */ + int completion_type; /* GEN_MAGIC_x */ + JSValue result; + /* promise capability */ + JSValue promise; + JSValue resolving_funcs[2]; +} JSAsyncGeneratorRequest; + +typedef struct JSAsyncGeneratorData { + JSObject *generator; /* back pointer to the object (const) */ + JSAsyncGeneratorStateEnum state; + JSAsyncFunctionState func_state; + struct list_head queue; /* list of JSAsyncGeneratorRequest.link */ +} JSAsyncGeneratorData; + +static void js_async_generator_free(JSRuntime *rt, + JSAsyncGeneratorData *s) +{ + struct list_head *el, *el1; + JSAsyncGeneratorRequest *req; + + list_for_each_safe(el, el1, &s->queue) { + req = list_entry(el, JSAsyncGeneratorRequest, link); + JS_FreeValueRT(rt, req->result); + JS_FreeValueRT(rt, req->promise); + JS_FreeValueRT(rt, req->resolving_funcs[0]); + JS_FreeValueRT(rt, req->resolving_funcs[1]); + js_free_rt(rt, req); + } + if (s->state != JS_ASYNC_GENERATOR_STATE_COMPLETED && + s->state != JS_ASYNC_GENERATOR_STATE_AWAITING_RETURN) { + async_func_free(rt, &s->func_state); + } + js_free_rt(rt, s); +} + +static void js_async_generator_finalizer(JSRuntime *rt, JSValue obj) +{ + JSAsyncGeneratorData *s = JS_GetOpaque(obj, JS_CLASS_ASYNC_GENERATOR); + + if (s) { + js_async_generator_free(rt, s); + } +} + +static void js_async_generator_mark(JSRuntime *rt, JSValueConst val, + JS_MarkFunc *mark_func) +{ + JSAsyncGeneratorData *s = JS_GetOpaque(val, JS_CLASS_ASYNC_GENERATOR); + struct list_head *el; + JSAsyncGeneratorRequest *req; + if (s) { + list_for_each(el, &s->queue) { + req = list_entry(el, JSAsyncGeneratorRequest, link); + JS_MarkValue(rt, req->result, mark_func); + JS_MarkValue(rt, req->promise, mark_func); + JS_MarkValue(rt, req->resolving_funcs[0], mark_func); + JS_MarkValue(rt, req->resolving_funcs[1], mark_func); + } + if (s->state != JS_ASYNC_GENERATOR_STATE_COMPLETED && + s->state != JS_ASYNC_GENERATOR_STATE_AWAITING_RETURN) { + async_func_mark(rt, &s->func_state, mark_func); + } + } +} + +static JSValue js_async_generator_resolve_function(JSContext *ctx, + JSValueConst this_obj, + int argc, JSValueConst *argv, + int magic, JSValue *func_data); + +static int js_async_generator_resolve_function_create(JSContext *ctx, + JSValueConst generator, + JSValue *resolving_funcs, + BOOL is_resume_next) +{ + int i; + JSValue func; + + for(i = 0; i < 2; i++) { + func = JS_NewCFunctionData(ctx, js_async_generator_resolve_function, 1, + i + is_resume_next * 2, 1, &generator); + if (JS_IsException(func)) { + if (i == 1) + JS_FreeValue(ctx, resolving_funcs[0]); + return -1; + } + resolving_funcs[i] = func; + } + return 0; +} + +static int js_async_generator_await(JSContext *ctx, + JSAsyncGeneratorData *s, + JSValueConst value) +{ + JSValue promise, resolving_funcs[2], resolving_funcs1[2]; + int i, res; + + promise = js_promise_resolve(ctx, ctx->promise_ctor, + 1, &value, 0); + if (JS_IsException(promise)) + goto fail; + + if (js_async_generator_resolve_function_create(ctx, JS_MKPTR(JS_TAG_OBJECT, s->generator), + resolving_funcs, FALSE)) { + JS_FreeValue(ctx, promise); + goto fail; + } + + /* Note: no need to create 'thrownawayCapability' as in + the spec */ + for(i = 0; i < 2; i++) + resolving_funcs1[i] = JS_UNDEFINED; + res = perform_promise_then(ctx, promise, + (JSValueConst *)resolving_funcs, + (JSValueConst *)resolving_funcs1); + JS_FreeValue(ctx, promise); + for(i = 0; i < 2; i++) + JS_FreeValue(ctx, resolving_funcs[i]); + if (res) + goto fail; + return 0; + fail: + return -1; +} + +static void js_async_generator_resolve_or_reject(JSContext *ctx, + JSAsyncGeneratorData *s, + JSValueConst result, + int is_reject) +{ + JSAsyncGeneratorRequest *next; + JSValue ret; + + next = list_entry(s->queue.next, JSAsyncGeneratorRequest, link); + list_del(&next->link); + ret = JS_Call(ctx, next->resolving_funcs[is_reject], JS_UNDEFINED, 1, + &result); + JS_FreeValue(ctx, ret); + JS_FreeValue(ctx, next->result); + JS_FreeValue(ctx, next->promise); + JS_FreeValue(ctx, next->resolving_funcs[0]); + JS_FreeValue(ctx, next->resolving_funcs[1]); + js_free(ctx, next); +} + +static void js_async_generator_resolve(JSContext *ctx, + JSAsyncGeneratorData *s, + JSValueConst value, + BOOL done) +{ + JSValue result; + result = js_create_iterator_result(ctx, JS_DupValue(ctx, value), done); + /* XXX: better exception handling ? */ + js_async_generator_resolve_or_reject(ctx, s, result, 0); + JS_FreeValue(ctx, result); + } + +static void js_async_generator_reject(JSContext *ctx, + JSAsyncGeneratorData *s, + JSValueConst exception) +{ + js_async_generator_resolve_or_reject(ctx, s, exception, 1); +} + +static void js_async_generator_complete(JSContext *ctx, + JSAsyncGeneratorData *s) +{ + if (s->state != JS_ASYNC_GENERATOR_STATE_COMPLETED) { + s->state = JS_ASYNC_GENERATOR_STATE_COMPLETED; + async_func_free(ctx->rt, &s->func_state); + } +} + +static int js_async_generator_completed_return(JSContext *ctx, + JSAsyncGeneratorData *s, + JSValueConst value) +{ + JSValue promise, resolving_funcs[2], resolving_funcs1[2]; + int res; + + promise = js_promise_resolve(ctx, ctx->promise_ctor, + 1, (JSValueConst *)&value, 0); + if (JS_IsException(promise)) + return -1; + if (js_async_generator_resolve_function_create(ctx, + JS_MKPTR(JS_TAG_OBJECT, s->generator), + resolving_funcs1, + TRUE)) { + JS_FreeValue(ctx, promise); + return -1; + } + resolving_funcs[0] = JS_UNDEFINED; + resolving_funcs[1] = JS_UNDEFINED; + res = perform_promise_then(ctx, promise, + (JSValueConst *)resolving_funcs1, + (JSValueConst *)resolving_funcs); + JS_FreeValue(ctx, resolving_funcs1[0]); + JS_FreeValue(ctx, resolving_funcs1[1]); + JS_FreeValue(ctx, promise); + return res; +} + +static void js_async_generator_resume_next(JSContext *ctx, + JSAsyncGeneratorData *s) +{ + JSAsyncGeneratorRequest *next; + JSValue func_ret, value; + + for(;;) { + if (list_empty(&s->queue)) + break; + next = list_entry(s->queue.next, JSAsyncGeneratorRequest, link); + switch(s->state) { + case JS_ASYNC_GENERATOR_STATE_EXECUTING: + /* only happens when restarting execution after await() */ + goto resume_exec; + case JS_ASYNC_GENERATOR_STATE_AWAITING_RETURN: + goto done; + case JS_ASYNC_GENERATOR_STATE_SUSPENDED_START: + if (next->completion_type == GEN_MAGIC_NEXT) { + goto exec_no_arg; + } else { + js_async_generator_complete(ctx, s); + } + break; + case JS_ASYNC_GENERATOR_STATE_COMPLETED: + if (next->completion_type == GEN_MAGIC_NEXT) { + js_async_generator_resolve(ctx, s, JS_UNDEFINED, TRUE); + } else if (next->completion_type == GEN_MAGIC_RETURN) { + s->state = JS_ASYNC_GENERATOR_STATE_AWAITING_RETURN; + js_async_generator_completed_return(ctx, s, next->result); + goto done; + } else { + js_async_generator_reject(ctx, s, next->result); + } + goto done; + case JS_ASYNC_GENERATOR_STATE_SUSPENDED_YIELD: + case JS_ASYNC_GENERATOR_STATE_SUSPENDED_YIELD_STAR: + value = JS_DupValue(ctx, next->result); + if (next->completion_type == GEN_MAGIC_THROW && + s->state == JS_ASYNC_GENERATOR_STATE_SUSPENDED_YIELD) { + JS_Throw(ctx, value); + s->func_state.throw_flag = TRUE; + } else { + /* 'yield' returns a value. 'yield *' also returns a value + in case the 'throw' method is called */ + s->func_state.frame.cur_sp[-1] = value; + s->func_state.frame.cur_sp[0] = + JS_NewInt32(ctx, next->completion_type); + s->func_state.frame.cur_sp++; + exec_no_arg: + s->func_state.throw_flag = FALSE; + } + s->state = JS_ASYNC_GENERATOR_STATE_EXECUTING; + resume_exec: + func_ret = async_func_resume(ctx, &s->func_state); + if (JS_IsException(func_ret)) { + value = JS_GetException(ctx); + js_async_generator_complete(ctx, s); + js_async_generator_reject(ctx, s, value); + JS_FreeValue(ctx, value); + } else if (JS_VALUE_GET_TAG(func_ret) == JS_TAG_INT) { + int func_ret_code; + value = s->func_state.frame.cur_sp[-1]; + s->func_state.frame.cur_sp[-1] = JS_UNDEFINED; + func_ret_code = JS_VALUE_GET_INT(func_ret); + switch(func_ret_code) { + case FUNC_RET_YIELD: + case FUNC_RET_YIELD_STAR: + if (func_ret_code == FUNC_RET_YIELD_STAR) + s->state = JS_ASYNC_GENERATOR_STATE_SUSPENDED_YIELD_STAR; + else + s->state = JS_ASYNC_GENERATOR_STATE_SUSPENDED_YIELD; + js_async_generator_resolve(ctx, s, value, FALSE); + JS_FreeValue(ctx, value); + break; + case FUNC_RET_AWAIT: + js_async_generator_await(ctx, s, value); + JS_FreeValue(ctx, value); + goto done; + default: + abort(); + } + } else { + assert(JS_IsUndefined(func_ret)); + /* end of function */ + value = s->func_state.frame.cur_sp[-1]; + s->func_state.frame.cur_sp[-1] = JS_UNDEFINED; + js_async_generator_complete(ctx, s); + js_async_generator_resolve(ctx, s, value, TRUE); + JS_FreeValue(ctx, value); + } + break; + default: + abort(); + } + } + done: ; +} + +static JSValue js_async_generator_resolve_function(JSContext *ctx, + JSValueConst this_obj, + int argc, JSValueConst *argv, + int magic, JSValue *func_data) +{ + BOOL is_reject = magic & 1; + JSAsyncGeneratorData *s = JS_GetOpaque(func_data[0], JS_CLASS_ASYNC_GENERATOR); + JSValueConst arg = argv[0]; + + /* XXX: what if s == NULL */ + + if (magic >= 2) { + /* resume next case in AWAITING_RETURN state */ + assert(s->state == JS_ASYNC_GENERATOR_STATE_AWAITING_RETURN || + s->state == JS_ASYNC_GENERATOR_STATE_COMPLETED); + s->state = JS_ASYNC_GENERATOR_STATE_COMPLETED; + if (is_reject) { + js_async_generator_reject(ctx, s, arg); + } else { + js_async_generator_resolve(ctx, s, arg, TRUE); + } + } else { + /* restart function execution after await() */ + assert(s->state == JS_ASYNC_GENERATOR_STATE_EXECUTING); + s->func_state.throw_flag = is_reject; + if (is_reject) { + JS_Throw(ctx, JS_DupValue(ctx, arg)); + } else { + /* return value of await */ + s->func_state.frame.cur_sp[-1] = JS_DupValue(ctx, arg); + } + js_async_generator_resume_next(ctx, s); + } + return JS_UNDEFINED; +} + +/* magic = GEN_MAGIC_x */ +static JSValue js_async_generator_next(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv, + int magic) +{ + JSAsyncGeneratorData *s = JS_GetOpaque(this_val, JS_CLASS_ASYNC_GENERATOR); + JSValue promise, resolving_funcs[2]; + JSAsyncGeneratorRequest *req; + + promise = JS_NewPromiseCapability(ctx, resolving_funcs); + if (JS_IsException(promise)) + return JS_EXCEPTION; + if (!s) { + JSValue err, res2; + JS_ThrowTypeError(ctx, "not an AsyncGenerator object"); + err = JS_GetException(ctx); + res2 = JS_Call(ctx, resolving_funcs[1], JS_UNDEFINED, + 1, (JSValueConst *)&err); + JS_FreeValue(ctx, err); + JS_FreeValue(ctx, res2); + JS_FreeValue(ctx, resolving_funcs[0]); + JS_FreeValue(ctx, resolving_funcs[1]); + return promise; + } + req = js_mallocz(ctx, sizeof(*req)); + if (!req) + goto fail; + req->completion_type = magic; + req->result = JS_DupValue(ctx, argv[0]); + req->promise = JS_DupValue(ctx, promise); + req->resolving_funcs[0] = resolving_funcs[0]; + req->resolving_funcs[1] = resolving_funcs[1]; + list_add_tail(&req->link, &s->queue); + if (s->state != JS_ASYNC_GENERATOR_STATE_EXECUTING) { + js_async_generator_resume_next(ctx, s); + } + return promise; + fail: + JS_FreeValue(ctx, resolving_funcs[0]); + JS_FreeValue(ctx, resolving_funcs[1]); + JS_FreeValue(ctx, promise); + return JS_EXCEPTION; +} + +static JSValue js_async_generator_function_call(JSContext *ctx, JSValueConst func_obj, + JSValueConst this_obj, + int argc, JSValueConst *argv, + int flags) +{ + JSValue obj, func_ret; + JSAsyncGeneratorData *s; + + s = js_mallocz(ctx, sizeof(*s)); + if (!s) + return JS_EXCEPTION; + s->state = JS_ASYNC_GENERATOR_STATE_SUSPENDED_START; + init_list_head(&s->queue); + if (async_func_init(ctx, &s->func_state, func_obj, this_obj, argc, argv)) { + s->state = JS_ASYNC_GENERATOR_STATE_COMPLETED; + goto fail; + } + + /* execute the function up to 'OP_initial_yield' (no yield nor + await are possible) */ + func_ret = async_func_resume(ctx, &s->func_state); + if (JS_IsException(func_ret)) + goto fail; + JS_FreeValue(ctx, func_ret); + + obj = js_create_from_ctor(ctx, func_obj, JS_CLASS_ASYNC_GENERATOR); + if (JS_IsException(obj)) + goto fail; + s->generator = JS_VALUE_GET_OBJ(obj); + JS_SetOpaque(obj, s); + return obj; + fail: + js_async_generator_free(ctx->rt, s); + return JS_EXCEPTION; +} + +/* JS parser */ + +enum { + TOK_NUMBER = -128, + TOK_STRING, + TOK_TEMPLATE, + TOK_IDENT, + TOK_REGEXP, + /* warning: order matters (see js_parse_assign_expr) */ + TOK_MUL_ASSIGN, + TOK_DIV_ASSIGN, + TOK_MOD_ASSIGN, + TOK_PLUS_ASSIGN, + TOK_MINUS_ASSIGN, + TOK_SHL_ASSIGN, + TOK_SAR_ASSIGN, + TOK_SHR_ASSIGN, + TOK_AND_ASSIGN, + TOK_XOR_ASSIGN, + TOK_OR_ASSIGN, +#ifdef CONFIG_BIGNUM + TOK_MATH_POW_ASSIGN, +#endif + TOK_POW_ASSIGN, + TOK_LAND_ASSIGN, + TOK_LOR_ASSIGN, + TOK_DOUBLE_QUESTION_MARK_ASSIGN, + TOK_DEC, + TOK_INC, + TOK_SHL, + TOK_SAR, + TOK_SHR, + TOK_LT, + TOK_LTE, + TOK_GT, + TOK_GTE, + TOK_EQ, + TOK_STRICT_EQ, + TOK_NEQ, + TOK_STRICT_NEQ, + TOK_LAND, + TOK_LOR, +#ifdef CONFIG_BIGNUM + TOK_MATH_POW, +#endif + TOK_POW, + TOK_ARROW, + TOK_ELLIPSIS, + TOK_DOUBLE_QUESTION_MARK, + TOK_QUESTION_MARK_DOT, + TOK_ERROR, + TOK_PRIVATE_NAME, + TOK_EOF, + /* keywords: WARNING: same order as atoms */ + TOK_NULL, /* must be first */ + TOK_FALSE, + TOK_TRUE, + TOK_IF, + TOK_ELSE, + TOK_RETURN, + TOK_VAR, + TOK_THIS, + TOK_DELETE, + TOK_VOID, + TOK_TYPEOF, + TOK_NEW, + TOK_IN, + TOK_INSTANCEOF, + TOK_DO, + TOK_WHILE, + TOK_FOR, + TOK_BREAK, + TOK_CONTINUE, + TOK_SWITCH, + TOK_CASE, + TOK_DEFAULT, + TOK_THROW, + TOK_TRY, + TOK_CATCH, + TOK_FINALLY, + TOK_FUNCTION, + TOK_DEBUGGER, + TOK_WITH, + /* FutureReservedWord */ + TOK_CLASS, + TOK_CONST, + TOK_ENUM, + TOK_EXPORT, + TOK_EXTENDS, + TOK_IMPORT, + TOK_SUPER, + /* FutureReservedWords when parsing strict mode code */ + TOK_IMPLEMENTS, + TOK_INTERFACE, + TOK_LET, + TOK_PACKAGE, + TOK_PRIVATE, + TOK_PROTECTED, + TOK_PUBLIC, + TOK_STATIC, + TOK_YIELD, + TOK_AWAIT, /* must be last */ + TOK_OF, /* only used for js_parse_skip_parens_token() */ +}; + +#define TOK_FIRST_KEYWORD TOK_NULL +#define TOK_LAST_KEYWORD TOK_AWAIT + +/* unicode code points */ +#define CP_NBSP 0x00a0 +#define CP_BOM 0xfeff + +#define CP_LS 0x2028 +#define CP_PS 0x2029 + +typedef struct BlockEnv { + struct BlockEnv *prev; + JSAtom label_name; /* JS_ATOM_NULL if none */ + int label_break; /* -1 if none */ + int label_cont; /* -1 if none */ + int drop_count; /* number of stack elements to drop */ + int label_finally; /* -1 if none */ + int scope_level; + int has_iterator; +} BlockEnv; + +typedef struct JSGlobalVar { + int cpool_idx; /* if >= 0, index in the constant pool for hoisted + function defintion*/ + uint8_t force_init : 1; /* force initialization to undefined */ + uint8_t is_lexical : 1; /* global let/const definition */ + uint8_t is_const : 1; /* const definition */ + int scope_level; /* scope of definition */ + JSAtom var_name; /* variable name */ +} JSGlobalVar; + +typedef struct RelocEntry { + struct RelocEntry *next; + uint32_t addr; /* address to patch */ + int size; /* address size: 1, 2 or 4 bytes */ +} RelocEntry; + +typedef struct JumpSlot { + int op; + int size; + int pos; + int label; +} JumpSlot; + +typedef struct LabelSlot { + int ref_count; + int pos; /* phase 1 address, -1 means not resolved yet */ + int pos2; /* phase 2 address, -1 means not resolved yet */ + int addr; /* phase 3 address, -1 means not resolved yet */ + RelocEntry *first_reloc; +} LabelSlot; + +typedef struct LineNumberSlot { + uint32_t pc; + int line_num; +} LineNumberSlot; + +typedef enum JSParseFunctionEnum { + JS_PARSE_FUNC_STATEMENT, + JS_PARSE_FUNC_VAR, + JS_PARSE_FUNC_EXPR, + JS_PARSE_FUNC_ARROW, + JS_PARSE_FUNC_GETTER, + JS_PARSE_FUNC_SETTER, + JS_PARSE_FUNC_METHOD, + JS_PARSE_FUNC_CLASS_CONSTRUCTOR, + JS_PARSE_FUNC_DERIVED_CLASS_CONSTRUCTOR, +} JSParseFunctionEnum; + +typedef enum JSParseExportEnum { + JS_PARSE_EXPORT_NONE, + JS_PARSE_EXPORT_NAMED, + JS_PARSE_EXPORT_DEFAULT, +} JSParseExportEnum; + +typedef struct JSFunctionDef { + JSContext *ctx; + struct JSFunctionDef *parent; + int parent_cpool_idx; /* index in the constant pool of the parent + or -1 if none */ + int parent_scope_level; /* scope level in parent at point of definition */ + struct list_head child_list; /* list of JSFunctionDef.link */ + struct list_head link; + + BOOL is_eval; /* TRUE if eval code */ + int eval_type; /* only valid if is_eval = TRUE */ + BOOL is_global_var; /* TRUE if variables are not defined locally: + eval global, eval module or non strict eval */ + BOOL is_func_expr; /* TRUE if function expression */ + BOOL has_home_object; /* TRUE if the home object is available */ + BOOL has_prototype; /* true if a prototype field is necessary */ + BOOL has_simple_parameter_list; + BOOL has_parameter_expressions; /* if true, an argument scope is created */ + BOOL has_use_strict; /* to reject directive in special cases */ + BOOL has_eval_call; /* true if the function contains a call to eval() */ + BOOL has_arguments_binding; /* true if the 'arguments' binding is + available in the function */ + BOOL has_this_binding; /* true if the 'this' and new.target binding are + available in the function */ + BOOL new_target_allowed; /* true if the 'new.target' does not + throw a syntax error */ + BOOL super_call_allowed; /* true if super() is allowed */ + BOOL super_allowed; /* true if super. or super[] is allowed */ + BOOL arguments_allowed; /* true if the 'arguments' identifier is allowed */ + BOOL is_derived_class_constructor; + BOOL in_function_body; + BOOL backtrace_barrier; + JSFunctionKindEnum func_kind : 8; + JSParseFunctionEnum func_type : 8; + uint8_t js_mode; /* bitmap of JS_MODE_x */ + JSAtom func_name; /* JS_ATOM_NULL if no name */ + + JSVarDef *vars; + int var_size; /* allocated size for vars[] */ + int var_count; + JSVarDef *args; + int arg_size; /* allocated size for args[] */ + int arg_count; /* number of arguments */ + int defined_arg_count; + int var_object_idx; /* -1 if none */ + int arg_var_object_idx; /* -1 if none (var object for the argument scope) */ + int arguments_var_idx; /* -1 if none */ + int arguments_arg_idx; /* argument variable definition in argument scope, + -1 if none */ + int func_var_idx; /* variable containing the current function (-1 + if none, only used if is_func_expr is true) */ + int eval_ret_idx; /* variable containing the return value of the eval, -1 if none */ + int this_var_idx; /* variable containg the 'this' value, -1 if none */ + int new_target_var_idx; /* variable containg the 'new.target' value, -1 if none */ + int this_active_func_var_idx; /* variable containg the 'this.active_func' value, -1 if none */ + int home_object_var_idx; + BOOL need_home_object; + + int scope_level; /* index into fd->scopes if the current lexical scope */ + int scope_first; /* index into vd->vars of first lexically scoped variable */ + int scope_size; /* allocated size of fd->scopes array */ + int scope_count; /* number of entries used in the fd->scopes array */ + JSVarScope *scopes; + JSVarScope def_scope_array[4]; + int body_scope; /* scope of the body of the function or eval */ + + int global_var_count; + int global_var_size; + JSGlobalVar *global_vars; + + DynBuf byte_code; + int last_opcode_pos; /* -1 if no last opcode */ + int last_opcode_line_num; + BOOL use_short_opcodes; /* true if short opcodes are used in byte_code */ + + LabelSlot *label_slots; + int label_size; /* allocated size for label_slots[] */ + int label_count; + BlockEnv *top_break; /* break/continue label stack */ + + /* constant pool (strings, functions, numbers) */ + JSValue *cpool; + int cpool_count; + int cpool_size; + + /* list of variables in the closure */ + int closure_var_count; + int closure_var_size; + JSClosureVar *closure_var; + + JumpSlot *jump_slots; + int jump_size; + int jump_count; + + LineNumberSlot *line_number_slots; + int line_number_size; + int line_number_count; + int line_number_last; + int line_number_last_pc; + + /* pc2line table */ + JSAtom filename; + int line_num; + DynBuf pc2line; + + char *source; /* raw source, utf-8 encoded */ + int source_len; + + JSModuleDef *module; /* != NULL when parsing a module */ +} JSFunctionDef; + +typedef struct JSToken { + int val; + int line_num; /* line number of token start */ + const uint8_t *ptr; + union { + struct { + JSValue str; + int sep; + } str; + struct { + JSValue val; +#ifdef CONFIG_BIGNUM + slimb_t exponent; /* may be != 0 only if val is a float */ +#endif + } num; + struct { + JSAtom atom; + BOOL has_escape; + BOOL is_reserved; + } ident; + struct { + JSValue body; + JSValue flags; + } regexp; + } u; +} JSToken; + +typedef struct JSParseState { + JSContext *ctx; + int last_line_num; /* line number of last token */ + int line_num; /* line number of current offset */ + const char *filename; + JSToken token; + BOOL got_lf; /* true if got line feed before the current token */ + const uint8_t *last_ptr; + const uint8_t *buf_ptr; + const uint8_t *buf_end; + + /* current function code */ + JSFunctionDef *cur_func; + BOOL is_module; /* parsing a module */ + BOOL allow_html_comments; + BOOL ext_json; /* true if accepting JSON superset */ +} JSParseState; + +typedef struct JSOpCode { +#ifdef DUMP_BYTECODE + const char *name; +#endif + uint8_t size; /* in bytes */ + /* the opcodes remove n_pop items from the top of the stack, then + pushes n_push items */ + uint8_t n_pop; + uint8_t n_push; + uint8_t fmt; +} JSOpCode; + +static const JSOpCode opcode_info[OP_COUNT + (OP_TEMP_END - OP_TEMP_START)] = { +#define FMT(f) +#ifdef DUMP_BYTECODE +#define DEF(id, size, n_pop, n_push, f) { #id, size, n_pop, n_push, OP_FMT_ ## f }, +#else +#define DEF(id, size, n_pop, n_push, f) { size, n_pop, n_push, OP_FMT_ ## f }, +#endif +#include "quickjs-opcode.h" +#undef DEF +#undef FMT +}; + +#if SHORT_OPCODES +/* After the final compilation pass, short opcodes are used. Their + opcodes overlap with the temporary opcodes which cannot appear in + the final bytecode. Their description is after the temporary + opcodes in opcode_info[]. */ +#define short_opcode_info(op) \ + opcode_info[(op) >= OP_TEMP_START ? \ + (op) + (OP_TEMP_END - OP_TEMP_START) : (op)] +#else +#define short_opcode_info(op) opcode_info[op] +#endif + +static __exception int next_token(JSParseState *s); + +static void free_token(JSParseState *s, JSToken *token) +{ + switch(token->val) { +#ifdef CONFIG_BIGNUM + case TOK_NUMBER: + JS_FreeValue(s->ctx, token->u.num.val); + break; +#endif + case TOK_STRING: + case TOK_TEMPLATE: + JS_FreeValue(s->ctx, token->u.str.str); + break; + case TOK_REGEXP: + JS_FreeValue(s->ctx, token->u.regexp.body); + JS_FreeValue(s->ctx, token->u.regexp.flags); + break; + case TOK_IDENT: + case TOK_PRIVATE_NAME: + JS_FreeAtom(s->ctx, token->u.ident.atom); + break; + default: + if (token->val >= TOK_FIRST_KEYWORD && + token->val <= TOK_LAST_KEYWORD) { + JS_FreeAtom(s->ctx, token->u.ident.atom); + } + break; + } +} + +static void __attribute((unused)) dump_token(JSParseState *s, + const JSToken *token) +{ + switch(token->val) { + case TOK_NUMBER: + { + double d; + JS_ToFloat64(s->ctx, &d, token->u.num.val); /* no exception possible */ + printf("number: %.14g\n", d); + } + break; + case TOK_IDENT: + dump_atom: + { + char buf[ATOM_GET_STR_BUF_SIZE]; + printf("ident: '%s'\n", + JS_AtomGetStr(s->ctx, buf, sizeof(buf), token->u.ident.atom)); + } + break; + case TOK_STRING: + { + const char *str; + /* XXX: quote the string */ + str = JS_ToCString(s->ctx, token->u.str.str); + printf("string: '%s'\n", str); + JS_FreeCString(s->ctx, str); + } + break; + case TOK_TEMPLATE: + { + const char *str; + str = JS_ToCString(s->ctx, token->u.str.str); + printf("template: `%s`\n", str); + JS_FreeCString(s->ctx, str); + } + break; + case TOK_REGEXP: + { + const char *str, *str2; + str = JS_ToCString(s->ctx, token->u.regexp.body); + str2 = JS_ToCString(s->ctx, token->u.regexp.flags); + printf("regexp: '%s' '%s'\n", str, str2); + JS_FreeCString(s->ctx, str); + JS_FreeCString(s->ctx, str2); + } + break; + case TOK_EOF: + printf("eof\n"); + break; + default: + if (s->token.val >= TOK_NULL && s->token.val <= TOK_LAST_KEYWORD) { + goto dump_atom; + } else if (s->token.val >= 256) { + printf("token: %d\n", token->val); + } else { + printf("token: '%c'\n", token->val); + } + break; + } +} + +int __attribute__((format(printf, 2, 3))) js_parse_error(JSParseState *s, const char *fmt, ...) +{ + JSContext *ctx = s->ctx; + va_list ap; + int backtrace_flags; + + va_start(ap, fmt); + JS_ThrowError2(ctx, JS_SYNTAX_ERROR, fmt, ap, FALSE); + va_end(ap); + backtrace_flags = 0; + if (s->cur_func && s->cur_func->backtrace_barrier) + backtrace_flags = JS_BACKTRACE_FLAG_SINGLE_LEVEL; + build_backtrace(ctx, ctx->rt->current_exception, s->filename, s->line_num, + backtrace_flags); + return -1; +} + +static int js_parse_expect(JSParseState *s, int tok) +{ + if (s->token.val != tok) { + /* XXX: dump token correctly in all cases */ + return js_parse_error(s, "expecting '%c'", tok); + } + return next_token(s); +} + +static int js_parse_expect_semi(JSParseState *s) +{ + if (s->token.val != ';') { + /* automatic insertion of ';' */ + if (s->token.val == TOK_EOF || s->token.val == '}' || s->got_lf) { + return 0; + } + return js_parse_error(s, "expecting '%c'", ';'); + } + return next_token(s); +} + +static int js_parse_error_reserved_identifier(JSParseState *s) +{ + char buf1[ATOM_GET_STR_BUF_SIZE]; + return js_parse_error(s, "'%s' is a reserved identifier", + JS_AtomGetStr(s->ctx, buf1, sizeof(buf1), + s->token.u.ident.atom)); +} + +static __exception int js_parse_template_part(JSParseState *s, const uint8_t *p) +{ + uint32_t c; + StringBuffer b_s, *b = &b_s; + + /* p points to the first byte of the template part */ + if (string_buffer_init(s->ctx, b, 32)) + goto fail; + for(;;) { + if (p >= s->buf_end) + goto unexpected_eof; + c = *p++; + if (c == '`') { + /* template end part */ + break; + } + if (c == '$' && *p == '{') { + /* template start or middle part */ + p++; + break; + } + if (c == '\\') { + if (string_buffer_putc8(b, c)) + goto fail; + if (p >= s->buf_end) + goto unexpected_eof; + c = *p++; + } + /* newline sequences are normalized as single '\n' bytes */ + if (c == '\r') { + if (*p == '\n') + p++; + c = '\n'; + } + if (c == '\n') { + s->line_num++; + } else if (c >= 0x80) { + const uint8_t *p_next; + c = unicode_from_utf8(p - 1, UTF8_CHAR_LEN_MAX, &p_next); + if (c > 0x10FFFF) { + js_parse_error(s, "invalid UTF-8 sequence"); + goto fail; + } + p = p_next; + } + if (string_buffer_putc(b, c)) + goto fail; + } + s->token.val = TOK_TEMPLATE; + s->token.u.str.sep = c; + s->token.u.str.str = string_buffer_end(b); + s->buf_ptr = p; + return 0; + + unexpected_eof: + js_parse_error(s, "unexpected end of string"); + fail: + string_buffer_free(b); + return -1; +} + +static __exception int js_parse_string(JSParseState *s, int sep, + BOOL do_throw, const uint8_t *p, + JSToken *token, const uint8_t **pp) +{ + int ret; + uint32_t c; + StringBuffer b_s, *b = &b_s; + + /* string */ + if (string_buffer_init(s->ctx, b, 32)) + goto fail; + for(;;) { + if (p >= s->buf_end) + goto invalid_char; + c = *p; + if (c < 0x20) { + if (!s->cur_func) { + if (do_throw) + js_parse_error(s, "invalid character in a JSON string"); + goto fail; + } + if (sep == '`') { + if (c == '\r') { + if (p[1] == '\n') + p++; + c = '\n'; + } + /* do not update s->line_num */ + } else if (c == '\n' || c == '\r') + goto invalid_char; + } + p++; + if (c == sep) + break; + if (c == '$' && *p == '{' && sep == '`') { + /* template start or middle part */ + p++; + break; + } + if (c == '\\') { + c = *p; + /* XXX: need a specific JSON case to avoid + accepting invalid escapes */ + switch(c) { + case '\0': + if (p >= s->buf_end) + goto invalid_char; + p++; + break; + case '\'': + case '\"': + case '\\': + p++; + break; + case '\r': /* accept DOS and MAC newline sequences */ + if (p[1] == '\n') { + p++; + } + /* fall thru */ + case '\n': + /* ignore escaped newline sequence */ + p++; + if (sep != '`') + s->line_num++; + continue; + default: + if (c >= '0' && c <= '9') { + if (!s->cur_func) + goto invalid_escape; /* JSON case */ + if (!(s->cur_func->js_mode & JS_MODE_STRICT) && sep != '`') + goto parse_escape; + if (c == '0' && !(p[1] >= '0' && p[1] <= '9')) { + p++; + c = '\0'; + } else { + if (c >= '8' || sep == '`') { + /* Note: according to ES2021, \8 and \9 are not + accepted in strict mode or in templates. */ + goto invalid_escape; + } else { + if (do_throw) + js_parse_error(s, "octal escape sequences are not allowed in strict mode"); + } + goto fail; + } + } else if (c >= 0x80) { + const uint8_t *p_next; + c = unicode_from_utf8(p, UTF8_CHAR_LEN_MAX, &p_next); + if (c > 0x10FFFF) { + goto invalid_utf8; + } + p = p_next; + /* LS or PS are skipped */ + if (c == CP_LS || c == CP_PS) + continue; + } else { + parse_escape: + ret = lre_parse_escape(&p, TRUE); + if (ret == -1) { + invalid_escape: + if (do_throw) + js_parse_error(s, "malformed escape sequence in string literal"); + goto fail; + } else if (ret < 0) { + /* ignore the '\' (could output a warning) */ + p++; + } else { + c = ret; + } + } + break; + } + } else if (c >= 0x80) { + const uint8_t *p_next; + c = unicode_from_utf8(p - 1, UTF8_CHAR_LEN_MAX, &p_next); + if (c > 0x10FFFF) + goto invalid_utf8; + p = p_next; + } + if (string_buffer_putc(b, c)) + goto fail; + } + token->val = TOK_STRING; + token->u.str.sep = c; + token->u.str.str = string_buffer_end(b); + *pp = p; + return 0; + + invalid_utf8: + if (do_throw) + js_parse_error(s, "invalid UTF-8 sequence"); + goto fail; + invalid_char: + if (do_throw) + js_parse_error(s, "unexpected end of string"); + fail: + string_buffer_free(b); + return -1; +} + +static inline BOOL token_is_pseudo_keyword(JSParseState *s, JSAtom atom) { + return s->token.val == TOK_IDENT && s->token.u.ident.atom == atom && + !s->token.u.ident.has_escape; +} + +static __exception int js_parse_regexp(JSParseState *s) +{ + const uint8_t *p; + BOOL in_class; + StringBuffer b_s, *b = &b_s; + StringBuffer b2_s, *b2 = &b2_s; + uint32_t c; + + p = s->buf_ptr; + p++; + in_class = FALSE; + if (string_buffer_init(s->ctx, b, 32)) + return -1; + if (string_buffer_init(s->ctx, b2, 1)) + goto fail; + for(;;) { + if (p >= s->buf_end) { + eof_error: + js_parse_error(s, "unexpected end of regexp"); + goto fail; + } + c = *p++; + if (c == '\n' || c == '\r') { + goto eol_error; + } else if (c == '/') { + if (!in_class) + break; + } else if (c == '[') { + in_class = TRUE; + } else if (c == ']') { + /* XXX: incorrect as the first character in a class */ + in_class = FALSE; + } else if (c == '\\') { + if (string_buffer_putc8(b, c)) + goto fail; + c = *p++; + if (c == '\n' || c == '\r') + goto eol_error; + else if (c == '\0' && p >= s->buf_end) + goto eof_error; + else if (c >= 0x80) { + const uint8_t *p_next; + c = unicode_from_utf8(p - 1, UTF8_CHAR_LEN_MAX, &p_next); + if (c > 0x10FFFF) { + goto invalid_utf8; + } + p = p_next; + if (c == CP_LS || c == CP_PS) + goto eol_error; + } + } else if (c >= 0x80) { + const uint8_t *p_next; + c = unicode_from_utf8(p - 1, UTF8_CHAR_LEN_MAX, &p_next); + if (c > 0x10FFFF) { + invalid_utf8: + js_parse_error(s, "invalid UTF-8 sequence"); + goto fail; + } + p = p_next; + /* LS or PS are considered as line terminator */ + if (c == CP_LS || c == CP_PS) { + eol_error: + js_parse_error(s, "unexpected line terminator in regexp"); + goto fail; + } + } + if (string_buffer_putc(b, c)) + goto fail; + } + + /* flags */ + for(;;) { + const uint8_t *p_next = p; + c = *p_next++; + if (c >= 0x80) { + c = unicode_from_utf8(p, UTF8_CHAR_LEN_MAX, &p_next); + if (c > 0x10FFFF) { + goto invalid_utf8; + } + } + if (!lre_js_is_ident_next(c)) + break; + if (string_buffer_putc(b2, c)) + goto fail; + p = p_next; + } + + s->token.val = TOK_REGEXP; + s->token.u.regexp.body = string_buffer_end(b); + s->token.u.regexp.flags = string_buffer_end(b2); + s->buf_ptr = p; + return 0; + fail: + string_buffer_free(b); + string_buffer_free(b2); + return -1; +} + +static __exception int ident_realloc(JSContext *ctx, char **pbuf, size_t *psize, + char *static_buf) +{ + char *buf, *new_buf; + size_t size, new_size; + + buf = *pbuf; + size = *psize; + if (size >= (SIZE_MAX / 3) * 2) + new_size = SIZE_MAX; + else + new_size = size + (size >> 1); + if (buf == static_buf) { + new_buf = js_malloc(ctx, new_size); + if (!new_buf) + return -1; + memcpy(new_buf, buf, size); + } else { + new_buf = js_realloc(ctx, buf, new_size); + if (!new_buf) + return -1; + } + *pbuf = new_buf; + *psize = new_size; + return 0; +} + +/* 'c' is the first character. Return JS_ATOM_NULL in case of error */ +static JSAtom parse_ident(JSParseState *s, const uint8_t **pp, + BOOL *pident_has_escape, int c, BOOL is_private) +{ + const uint8_t *p, *p1; + char ident_buf[128], *buf; + size_t ident_size, ident_pos; + JSAtom atom; + + p = *pp; + buf = ident_buf; + ident_size = sizeof(ident_buf); + ident_pos = 0; + if (is_private) + buf[ident_pos++] = '#'; + for(;;) { + p1 = p; + + if (c < 128) { + buf[ident_pos++] = c; + } else { + ident_pos += unicode_to_utf8((uint8_t*)buf + ident_pos, c); + } + c = *p1++; + if (c == '\\' && *p1 == 'u') { + c = lre_parse_escape(&p1, TRUE); + *pident_has_escape = TRUE; + } else if (c >= 128) { + c = unicode_from_utf8(p, UTF8_CHAR_LEN_MAX, &p1); + } + if (!lre_js_is_ident_next(c)) + break; + p = p1; + if (unlikely(ident_pos >= ident_size - UTF8_CHAR_LEN_MAX)) { + if (ident_realloc(s->ctx, &buf, &ident_size, ident_buf)) { + atom = JS_ATOM_NULL; + goto done; + } + } + } + atom = JS_NewAtomLen(s->ctx, buf, ident_pos); + done: + if (unlikely(buf != ident_buf)) + js_free(s->ctx, buf); + *pp = p; + return atom; +} + + +static __exception int next_token(JSParseState *s) +{ + const uint8_t *p; + int c; + BOOL ident_has_escape; + JSAtom atom; + + if (js_check_stack_overflow(s->ctx->rt, 0)) { + return js_parse_error(s, "stack overflow"); + } + + free_token(s, &s->token); + + p = s->last_ptr = s->buf_ptr; + s->got_lf = FALSE; + s->last_line_num = s->token.line_num; + redo: + s->token.line_num = s->line_num; + s->token.ptr = p; + c = *p; + switch(c) { + case 0: + if (p >= s->buf_end) { + s->token.val = TOK_EOF; + } else { + goto def_token; + } + break; + case '`': + if (js_parse_template_part(s, p + 1)) + goto fail; + p = s->buf_ptr; + break; + case '\'': + case '\"': + if (js_parse_string(s, c, TRUE, p + 1, &s->token, &p)) + goto fail; + break; + case '\r': /* accept DOS and MAC newline sequences */ + if (p[1] == '\n') { + p++; + } + /* fall thru */ + case '\n': + p++; + line_terminator: + s->got_lf = TRUE; + s->line_num++; + goto redo; + case '\f': + case '\v': + case ' ': + case '\t': + p++; + goto redo; + case '/': + if (p[1] == '*') { + /* comment */ + p += 2; + for(;;) { + if (*p == '\0' && p >= s->buf_end) { + js_parse_error(s, "unexpected end of comment"); + goto fail; + } + if (p[0] == '*' && p[1] == '/') { + p += 2; + break; + } + if (*p == '\n') { + s->line_num++; + s->got_lf = TRUE; /* considered as LF for ASI */ + p++; + } else if (*p == '\r') { + s->got_lf = TRUE; /* considered as LF for ASI */ + p++; + } else if (*p >= 0x80) { + c = unicode_from_utf8(p, UTF8_CHAR_LEN_MAX, &p); + if (c == CP_LS || c == CP_PS) { + s->got_lf = TRUE; /* considered as LF for ASI */ + } else if (c == -1) { + p++; /* skip invalid UTF-8 */ + } + } else { + p++; + } + } + goto redo; + } else if (p[1] == '/') { + /* line comment */ + p += 2; + skip_line_comment: + for(;;) { + if (*p == '\0' && p >= s->buf_end) + break; + if (*p == '\r' || *p == '\n') + break; + if (*p >= 0x80) { + c = unicode_from_utf8(p, UTF8_CHAR_LEN_MAX, &p); + /* LS or PS are considered as line terminator */ + if (c == CP_LS || c == CP_PS) { + break; + } else if (c == -1) { + p++; /* skip invalid UTF-8 */ + } + } else { + p++; + } + } + goto redo; + } else if (p[1] == '=') { + p += 2; + s->token.val = TOK_DIV_ASSIGN; + } else { + p++; + s->token.val = c; + } + break; + case '\\': + if (p[1] == 'u') { + const uint8_t *p1 = p + 1; + int c1 = lre_parse_escape(&p1, TRUE); + if (c1 >= 0 && lre_js_is_ident_first(c1)) { + c = c1; + p = p1; + ident_has_escape = TRUE; + goto has_ident; + } else { + /* XXX: syntax error? */ + } + } + goto def_token; + case 'a': case 'b': case 'c': case 'd': + case 'e': case 'f': case 'g': case 'h': + case 'i': case 'j': case 'k': case 'l': + case 'm': case 'n': case 'o': case 'p': + case 'q': case 'r': case 's': case 't': + case 'u': case 'v': case 'w': case 'x': + case 'y': case 'z': + case 'A': case 'B': case 'C': case 'D': + case 'E': case 'F': case 'G': case 'H': + case 'I': case 'J': case 'K': case 'L': + case 'M': case 'N': case 'O': case 'P': + case 'Q': case 'R': case 'S': case 'T': + case 'U': case 'V': case 'W': case 'X': + case 'Y': case 'Z': + case '_': + case '$': + /* identifier */ + p++; + ident_has_escape = FALSE; + has_ident: + atom = parse_ident(s, &p, &ident_has_escape, c, FALSE); + if (atom == JS_ATOM_NULL) + goto fail; + s->token.u.ident.atom = atom; + s->token.u.ident.has_escape = ident_has_escape; + s->token.u.ident.is_reserved = FALSE; + if (s->token.u.ident.atom <= JS_ATOM_LAST_KEYWORD || + (s->token.u.ident.atom <= JS_ATOM_LAST_STRICT_KEYWORD && + (s->cur_func->js_mode & JS_MODE_STRICT)) || + (s->token.u.ident.atom == JS_ATOM_yield && + ((s->cur_func->func_kind & JS_FUNC_GENERATOR) || + (s->cur_func->func_type == JS_PARSE_FUNC_ARROW && + !s->cur_func->in_function_body && s->cur_func->parent && + (s->cur_func->parent->func_kind & JS_FUNC_GENERATOR)))) || + (s->token.u.ident.atom == JS_ATOM_await && + (s->is_module || + (((s->cur_func->func_kind & JS_FUNC_ASYNC) || + (s->cur_func->func_type == JS_PARSE_FUNC_ARROW && + !s->cur_func->in_function_body && s->cur_func->parent && + (s->cur_func->parent->func_kind & JS_FUNC_ASYNC))))))) { + if (ident_has_escape) { + s->token.u.ident.is_reserved = TRUE; + s->token.val = TOK_IDENT; + } else { + /* The keywords atoms are pre allocated */ + s->token.val = s->token.u.ident.atom - 1 + TOK_FIRST_KEYWORD; + } + } else { + s->token.val = TOK_IDENT; + } + break; + case '#': + /* private name */ + { + const uint8_t *p1; + p++; + p1 = p; + c = *p1++; + if (c == '\\' && *p1 == 'u') { + c = lre_parse_escape(&p1, TRUE); + } else if (c >= 128) { + c = unicode_from_utf8(p, UTF8_CHAR_LEN_MAX, &p1); + } + if (!lre_js_is_ident_first(c)) { + js_parse_error(s, "invalid first character of private name"); + goto fail; + } + p = p1; + ident_has_escape = FALSE; /* not used */ + atom = parse_ident(s, &p, &ident_has_escape, c, TRUE); + if (atom == JS_ATOM_NULL) + goto fail; + s->token.u.ident.atom = atom; + s->token.val = TOK_PRIVATE_NAME; + } + break; + case '.': + if (p[1] == '.' && p[2] == '.') { + p += 3; + s->token.val = TOK_ELLIPSIS; + break; + } + if (p[1] >= '0' && p[1] <= '9') { + goto parse_number; + } else { + goto def_token; + } + break; + case '0': + /* in strict mode, octal literals are not accepted */ + if (is_digit(p[1]) && (s->cur_func->js_mode & JS_MODE_STRICT)) { + js_parse_error(s, "octal literals are deprecated in strict mode"); + goto fail; + } + goto parse_number; + case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': + case '9': + /* number */ + parse_number: + { + JSValue ret; + const uint8_t *p1; + int flags, radix; + flags = ATOD_ACCEPT_BIN_OCT | ATOD_ACCEPT_LEGACY_OCTAL | + ATOD_ACCEPT_UNDERSCORES; +#ifdef CONFIG_BIGNUM + flags |= ATOD_ACCEPT_SUFFIX; + if (s->cur_func->js_mode & JS_MODE_MATH) { + flags |= ATOD_MODE_BIGINT; + if (s->cur_func->js_mode & JS_MODE_MATH) + flags |= ATOD_TYPE_BIG_FLOAT; + } +#endif + radix = 0; +#ifdef CONFIG_BIGNUM + s->token.u.num.exponent = 0; + ret = js_atof2(s->ctx, (const char *)p, (const char **)&p, radix, + flags, &s->token.u.num.exponent); +#else + ret = js_atof(s->ctx, (const char *)p, (const char **)&p, radix, + flags); +#endif + if (JS_IsException(ret)) + goto fail; + /* reject `10instanceof Number` */ + if (JS_VALUE_IS_NAN(ret) || + lre_js_is_ident_next(unicode_from_utf8(p, UTF8_CHAR_LEN_MAX, &p1))) { + JS_FreeValue(s->ctx, ret); + js_parse_error(s, "invalid number literal"); + goto fail; + } + s->token.val = TOK_NUMBER; + s->token.u.num.val = ret; + } + break; + case '*': + if (p[1] == '=') { + p += 2; + s->token.val = TOK_MUL_ASSIGN; + } else if (p[1] == '*') { + if (p[2] == '=') { + p += 3; + s->token.val = TOK_POW_ASSIGN; + } else { + p += 2; + s->token.val = TOK_POW; + } + } else { + goto def_token; + } + break; + case '%': + if (p[1] == '=') { + p += 2; + s->token.val = TOK_MOD_ASSIGN; + } else { + goto def_token; + } + break; + case '+': + if (p[1] == '=') { + p += 2; + s->token.val = TOK_PLUS_ASSIGN; + } else if (p[1] == '+') { + p += 2; + s->token.val = TOK_INC; + } else { + goto def_token; + } + break; + case '-': + if (p[1] == '=') { + p += 2; + s->token.val = TOK_MINUS_ASSIGN; + } else if (p[1] == '-') { + if (s->allow_html_comments && + p[2] == '>' && s->last_line_num != s->line_num) { + /* Annex B: `-->` at beginning of line is an html comment end. + It extends to the end of the line. + */ + goto skip_line_comment; + } + p += 2; + s->token.val = TOK_DEC; + } else { + goto def_token; + } + break; + case '<': + if (p[1] == '=') { + p += 2; + s->token.val = TOK_LTE; + } else if (p[1] == '<') { + if (p[2] == '=') { + p += 3; + s->token.val = TOK_SHL_ASSIGN; + } else { + p += 2; + s->token.val = TOK_SHL; + } + } else if (s->allow_html_comments && + p[1] == '!' && p[2] == '-' && p[3] == '-') { + /* Annex B: handle ` # Nuklear ![](https://cloud.githubusercontent.com/assets/8057201/11761525/ae06f0ca-a0c6-11e5-819d-5610b25f6ef4.gif) ## Contents @@ -90,7 +89,8 @@ NK_PRIVATE | If defined declares all functions as static, s NK_INCLUDE_FIXED_TYPES | If defined it will include header `` for fixed sized types otherwise nuklear tries to select the correct type. If that fails it will throw a compiler error and you have to select the correct types yourself. NK_INCLUDE_DEFAULT_ALLOCATOR | If defined it will include header `` and provide additional functions to use this library without caring for memory allocation control and therefore ease memory management. NK_INCLUDE_STANDARD_IO | If defined it will include header `` and provide additional functions depending on file loading. -NK_INCLUDE_STANDARD_VARARGS | If defined it will include header and provide additional functions depending on file loading. +NK_INCLUDE_STANDARD_VARARGS | If defined it will include header and provide additional functions depending on file loading. +NK_INCLUDE_STANDARD_BOOL | If defined it will include header `` for nk_bool otherwise nuklear defines nk_bool as int. NK_INCLUDE_VERTEX_BUFFER_OUTPUT | Defining this adds a vertex draw command list backend to this library, which allows you to convert queue commands into vertex draw commands. This is mainly if you need a hardware accessible format for OpenGL, DirectX, Vulkan, Metal,... NK_INCLUDE_FONT_BAKING | Defining this adds `stb_truetype` and `stb_rect_pack` implementation to this library and provides font baking and rendering. If you already have font handling or do not want to use this font handler you don't have to define it. NK_INCLUDE_DEFAULT_FONT | Defining this adds the default font: ProggyClean.ttf into this library which can be loaded into a font atlas and allows using this library without having a truetype font @@ -109,6 +109,7 @@ NK_KEYSTATE_BASED_INPUT | Define this if your backend uses key state for - NK_INCLUDE_FIXED_TYPES - NK_INCLUDE_DEFAULT_ALLOCATOR - NK_INCLUDE_STANDARD_VARARGS + - NK_INCLUDE_STANDARD_BOOL - NK_INCLUDE_VERTEX_BUFFER_OUTPUT - NK_INCLUDE_FONT_BAKING - NK_INCLUDE_DEFAULT_FONT @@ -132,7 +133,7 @@ Function | Description NK_ASSERT | If you don't define this, nuklear will use with assert(). NK_MEMSET | You can define this to 'memset' or your own memset implementation replacement. If not nuklear will use its own version. NK_MEMCPY | You can define this to 'memcpy' or your own memcpy implementation replacement. If not nuklear will use its own version. -NK_SQRT | You can define this to 'sqrt' or your own sqrt implementation replacement. If not nuklear will use its own slow and not highly accurate version. +NK_INV_SQRT | You can define this to your own inverse sqrt implementation replacement. If not nuklear will use its own slow and not highly accurate version. NK_SIN | You can define this to 'sinf' or your own sine implementation replacement. If not nuklear will use its own approximation implementation. NK_COS | You can define this to 'cosf' or your own cosine implementation replacement. If not nuklear will use its own approximation implementation. NK_STRTOD | You can define this to `strtod` or your own string to double conversion implementation replacement. If not defined nuklear will use its own imprecise and possibly unsafe version (does not handle nan or infinity!). @@ -221,7 +222,7 @@ __nk_set_user_data__| Utility function to pass user data to draw command Initializes a `nk_context` struct with a default standard library allocator. Should be used if you don't want to be bothered with memory management in nuklear. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_init_default(struct nk_context *ctx, const struct nk_user_font *font); +nk_bool nk_init_default(struct nk_context *ctx, const struct nk_user_font *font); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|--------------------------------------------------------------- @@ -235,7 +236,7 @@ Especially recommended for system with little memory or systems with virtual mem For the later case you can just allocate for example 16MB of virtual memory and only the required amount of memory will actually be committed. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_init_fixed(struct nk_context *ctx, void *memory, nk_size size, const struct nk_user_font *font); +nk_bool nk_init_fixed(struct nk_context *ctx, void *memory, nk_size size, const struct nk_user_font *font); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Warning make sure the passed memory block is aligned correctly for `nk_draw_commands`. @@ -251,7 +252,7 @@ Initializes a `nk_context` struct with memory allocation callbacks for nuklear t memory from. Used internally for `nk_init_default` and provides a kitchen sink allocation interface to nuklear. Can be useful for cases like monitoring memory consumption. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_init(struct nk_context *ctx, struct nk_allocator *alloc, const struct nk_user_font *font); +nk_bool nk_init(struct nk_context *ctx, struct nk_allocator *alloc, const struct nk_user_font *font); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|--------------------------------------------------------------- @@ -264,7 +265,7 @@ Initializes a `nk_context` struct from two different either fixed or growing buffers. The first buffer is for allocating draw commands while the second buffer is used for allocating windows, panels and state tables. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_init_custom(struct nk_context *ctx, struct nk_buffer *cmds, struct nk_buffer *pool, const struct nk_user_font *font); +nk_bool nk_init_custom(struct nk_context *ctx, struct nk_buffer *cmds, struct nk_buffer *pool, const struct nk_user_font *font); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|--------------------------------------------------------------- @@ -379,7 +380,7 @@ __y__ | Must hold an integer describing the current mouse cursor y-positio #### nk_input_key Mirrors the state of a specific key to nuklear ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -void nk_input_key(struct nk_context*, enum nk_keys key, int down); +void nk_input_key(struct nk_context*, enum nk_keys key, nk_bool down); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -389,7 +390,7 @@ __down__ | Must be 0 for key is up and 1 for key is down #### nk_input_button Mirrors the state of a specific mouse button to nuklear ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -void nk_input_button(struct nk_context *ctx, enum nk_buttons btn, int x, int y, int down); +void nk_input_button(struct nk_context *ctx, enum nk_buttons btn, int x, int y, nk_bool down); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -891,7 +892,7 @@ __NK_MAXIMIZED__| UI section is extended and visible until minimized Starts a new window; needs to be called every frame for every window (unless hidden) or otherwise the window gets removed ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_begin(struct nk_context *ctx, const char *title, struct nk_rect bounds, nk_flags flags); +nk_bool nk_begin(struct nk_context *ctx, const char *title, struct nk_rect bounds, nk_flags flags); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -905,7 +906,7 @@ until `nk_end` or `false(0)` otherwise for example if minimized Extended window start with separated title and identifier to allow multiple windows with same title but not name ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_begin_titled(struct nk_context *ctx, const char *name, const char *title, struct nk_rect bounds, nk_flags flags); +nk_bool nk_begin_titled(struct nk_context *ctx, const char *name, const char *title, struct nk_rect bounds, nk_flags flags); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -1086,7 +1087,7 @@ Returns if the currently processed window is currently active !!! WARNING Only call this function between calls `nk_begin_xxx` and `nk_end` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_window_has_focus(const struct nk_context *ctx); +nk_bool nk_window_has_focus(const struct nk_context *ctx); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -1097,7 +1098,7 @@ Return if the current window is being hovered !!! WARNING Only call this function between calls `nk_begin_xxx` and `nk_end` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_window_is_hovered(struct nk_context *ctx); +nk_bool nk_window_is_hovered(struct nk_context *ctx); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -1106,7 +1107,7 @@ Returns `true(1)` if current window is hovered or `false(0)` otherwise #### nk_window_is_collapsed Returns if the window with given name is currently minimized/collapsed ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_window_is_collapsed(struct nk_context *ctx, const char *name); +nk_bool nk_window_is_collapsed(struct nk_context *ctx, const char *name); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -1117,7 +1118,7 @@ found or is not minimized #### nk_window_is_closed Returns if the window with given name was closed by calling `nk_close` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_window_is_closed(struct nk_context *ctx, const char *name); +nk_bool nk_window_is_closed(struct nk_context *ctx, const char *name); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -1127,7 +1128,7 @@ Returns `true(1)` if current window was closed or `false(0)` window not found or #### nk_window_is_hidden Returns if the window with given name is hidden ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_window_is_hidden(struct nk_context *ctx, const char *name); +nk_bool nk_window_is_hidden(struct nk_context *ctx, const char *name); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -1137,7 +1138,7 @@ Returns `true(1)` if current window is hidden or `false(0)` window not found or #### nk_window_is_active Same as nk_window_has_focus for some reason ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_window_is_active(struct nk_context *ctx, const char *name); +nk_bool nk_window_is_active(struct nk_context *ctx, const char *name); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -1147,7 +1148,7 @@ Returns `true(1)` if current window is active or `false(0)` window not found or #### nk_window_is_any_hovered Returns if the any window is being hovered ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_window_is_any_hovered(struct nk_context*); +nk_bool nk_window_is_any_hovered(struct nk_context*); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -1158,7 +1159,7 @@ Returns if the any window is being hovered or any widget is currently active. Can be used to decide if input should be processed by UI or your specific input handling. Example could be UI and 3D camera to move inside a 3D space. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_item_is_any_active(struct nk_context*); +nk_bool nk_item_is_any_active(struct nk_context*); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -1731,6 +1732,14 @@ Parameter | Description __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_layout_space_begin` __bounds__ | Rectangle to convert from layout space into screen space Returns transformed `nk_rect` in layout space coordinates +#### nk_spacer +Spacer is a dummy widget that consumes space as usual but doesn't draw anything +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c +void nk_spacer(struct nk_context* ); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Parameter | Description +------------|----------------------------------------------------------- +__ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_layout_space_begin` ### Groups Groups are basically windows inside windows. They allow to subdivide space in a window to layout widgets as a group. Almost all more complex widget @@ -1812,7 +1821,7 @@ nk_group_set_scroll | Sets the scroll offset for the given group #### nk_group_begin Starts a new widget group. Requires a previous layouting function to specify a pos/size. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_group_begin(struct nk_context*, const char *title, nk_flags); +nk_bool nk_group_begin(struct nk_context*, const char *title, nk_flags); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -1823,7 +1832,7 @@ Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise #### nk_group_begin_titled Starts a new widget group. Requires a previous layouting function to specify a pos/size. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_group_begin_titled(struct nk_context*, const char *name, const char *title, nk_flags); +nk_bool nk_group_begin_titled(struct nk_context*, const char *name, const char *title, nk_flags); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -1844,7 +1853,7 @@ __ctx__ | Must point to an previously initialized `nk_context` struct starts a new widget group. requires a previous layouting function to specify a size. Does not keep track of scrollbar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_group_scrolled_offset_begin(struct nk_context*, nk_uint *x_offset, nk_uint *y_offset, const char *title, nk_flags flags); +nk_bool nk_group_scrolled_offset_begin(struct nk_context*, nk_uint *x_offset, nk_uint *y_offset, const char *title, nk_flags flags); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -1858,7 +1867,7 @@ Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise Starts a new widget group. requires a previous layouting function to specify a size. Does not keep track of scrollbar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_group_scrolled_begin(struct nk_context*, struct nk_scroll *off, const char *title, nk_flags); +nk_bool nk_group_scrolled_begin(struct nk_context*, struct nk_scroll *off, const char *title, nk_flags); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -1986,7 +1995,7 @@ Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise Start a collapsible UI section with internal state management with full control over internal unique ID used to store state ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_tree_push_hashed(struct nk_context*, enum nk_tree_type, const char *title, enum nk_collapse_states initial_state, const char *hash, int len,int seed); +nk_bool nk_tree_push_hashed(struct nk_context*, enum nk_tree_type, const char *title, enum nk_collapse_states initial_state, const char *hash, int len,int seed); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -2035,7 +2044,7 @@ Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise Start a collapsible UI section with internal state management with full control over internal unique ID used to store state ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_tree_image_push_hashed(struct nk_context*, enum nk_tree_type, struct nk_image, const char *title, enum nk_collapse_states initial_state, const char *hash, int len,int seed); +nk_bool nk_tree_image_push_hashed(struct nk_context*, enum nk_tree_type, struct nk_image, const char *title, enum nk_collapse_states initial_state, const char *hash, int len,int seed); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -2059,7 +2068,7 @@ __ctx__ | Must point to an previously initialized `nk_context` struct after #### nk_tree_state_push Start a collapsible UI section with external state management ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_tree_state_push(struct nk_context*, enum nk_tree_type, const char *title, enum nk_collapse_states *state); +nk_bool nk_tree_state_push(struct nk_context*, enum nk_tree_type, const char *title, enum nk_collapse_states *state); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -2071,7 +2080,7 @@ Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise #### nk_tree_state_image_push Start a collapsible UI section with image and label header and external state management ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -int nk_tree_state_image_push(struct nk_context*, enum nk_tree_type, struct nk_image, const char *title, enum nk_collapse_states *state); +nk_bool nk_tree_state_image_push(struct nk_context*, enum nk_tree_type, struct nk_image, const char *title, enum nk_collapse_states *state); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parameter | Description ------------|----------------------------------------------------------- @@ -2306,13 +2315,49 @@ X...XXXXXXXXXXXXX...X - " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ## Changelog ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~none -[date][x.yy.zz]-[description] --[date]: date on which the change has been pushed --[x.yy.zz]: Numerical version string representation. Each version number on the right - resets back to zero if version on the left is incremented. - - [x]: Major version with API and library breaking changes - - [yy]: Minor version with non-breaking API and library changes - - [zz]: Bug fix version with no direct changes to API +[date] ([x.y.z]) - [description] +- [date]: date on which the change has been pushed +- [x.y.z]: Version string, represented in Semantic Versioning format + - [x]: Major version with API and library breaking changes + - [y]: Minor version with non-breaking API and library changes + - [z]: Patch version with no direct changes to the API +- 2022/05/27 (4.10.0) - Add nk_input_has_mouse_click_in_button_rect() to fix window move bug +- 2022/04/18 (4.9.7) - Change button behavior when NK_BUTTON_TRIGGER_ON_RELEASE is defined to + only trigger when the mouse position was inside the same button on down +- 2022/02/03 (4.9.6) - Allow overriding the NK_INV_SQRT function, similar to NK_SIN and NK_COS +- 2021/12/22 (4.9.5) - Revert layout bounds not accounting for padding due to regressions +- 2021/12/22 (4.9.4) - Fix checking hovering when window is minimized +- 2021/12/22 (4.09.3) - Fix layout bounds not accounting for padding +- 2021/12/19 (4.09.2) - Update to stb_rect_pack.h v1.01 and stb_truetype.h v1.26 +- 2021/12/16 (4.09.1) - Fix the majority of GCC warnings +- 2021/10/16 (4.09.0) - Added nk_spacer() widget +- 2021/09/22 (4.08.6) - Fix "may be used uninitialized" warnings in nk_widget +- 2021/09/22 (4.08.5) - GCC __builtin_offsetof only exists in version 4 and later +- 2021/09/15 (4.08.4) - Fix "'num_len' may be used uninitialized" in nk_do_property +- 2021/09/15 (4.08.3) - Fix "Templates cannot be declared to have 'C' Linkage" +- 2021/09/08 (4.08.2) - Fix warnings in C89 builds +- 2021/09/08 (4.08.1) - Use compiler builtins for NK_OFFSETOF when possible +- 2021/08/17 (4.08.0) - Implemented 9-slice scaling support for widget styles +- 2021/08/16 (4.07.5) - Replace usage of memset in nk_font_atlas_bake with NK_MEMSET +- 2021/08/15 (4.07.4) - Fix conversion and sign conversion warnings +- 2021/08/08 (4.07.3) - Fix crash when baking merged fonts +- 2021/08/08 (4.07.2) - Fix Multiline Edit wrong offset +- 2021/03/17 (4.07.1) - Fix warning about unused parameter +- 2021/03/17 (4.07.0) - Fix nk_property hover bug +- 2021/03/15 (4.06.4) - Change nk_propertyi back to int +- 2021/03/15 (4.06.3) - Update documentation for functions that now return nk_bool +- 2020/12/19 (4.06.2) - Fix additional C++ style comments which are not allowed in ISO C90. +- 2020/10/11 (4.06.1) - Fix C++ style comments which are not allowed in ISO C90. +- 2020/10/07 (4.06.0) - Fix nk_combo return type wrongly changed to nk_bool +- 2020/09/05 (4.05.0) - Use the nk_font_atlas allocator for stb_truetype memory management. +- 2020/09/04 (4.04.1) - Replace every boolean int by nk_bool +- 2020/09/04 (4.04.0) - Add nk_bool with NK_INCLUDE_STANDARD_BOOL +- 2020/06/13 (4.03.1) - Fix nk_pool allocation sizes. +- 2020/06/04 (4.03.0) - Made nk_combo header symbols optional. +- 2020/05/27 (4.02.5) - Fix nk_do_edit: Keep scroll position when re-activating edit widget. +- 2020/05/09 (4.02.4) - Fix nk_menubar height calculation bug +- 2020/05/08 (4.02.3) - Fix missing stdarg.h with NK_INCLUDE_STANDARD_VARARGS +- 2020/04/30 (4.02.2) - Fix nk_edit border drawing bug - 2020/04/09 (4.02.1) - Removed unused nk_sqrt function to fix compiler warnings - Fixed compiler warnings if you bring your own methods for nk_cos/nk_sin/nk_strtod/nk_memset/nk_memcopy/nk_dtoa diff --git a/source/engine/thirdparty/Nuklear/nuklear.h b/source/engine/thirdparty/Nuklear/nuklear.h index 0de0d00..febee39 100644 --- a/source/engine/thirdparty/Nuklear/nuklear.h +++ b/source/engine/thirdparty/Nuklear/nuklear.h @@ -372,7 +372,7 @@ extern "C" { #elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER) #define NK_SIZE_TYPE unsigned __int32 #elif defined(__GNUC__) || defined(__clang__) - #if defined(__x86_64__) || defined(__ppc64__) + #if defined(__x86_64__) || defined(__ppc64__) || defined(__aarch64__) #define NK_SIZE_TYPE unsigned long #else #define NK_SIZE_TYPE unsigned int @@ -387,7 +387,7 @@ extern "C" { #elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER) #define NK_POINTER_TYPE unsigned __int32 #elif defined(__GNUC__) || defined(__clang__) - #if defined(__x86_64__) || defined(__ppc64__) + #if defined(__x86_64__) || defined(__ppc64__) || defined(__aarch64__) #define NK_POINTER_TYPE unsigned long #else #define NK_POINTER_TYPE unsigned int @@ -1127,7 +1127,7 @@ NK_API void nk_input_end(struct nk_context*); /// cfg.curve_segment_count = 22; /// cfg.arc_segment_count = 22; /// cfg.global_alpha = 1.0f; -/// cfg.null = dev->null; +/// cfg.tex_null = dev->tex_null; /// // /// // setup buffers and convert /// struct nk_buffer cmds, verts, idx; @@ -1177,7 +1177,7 @@ struct nk_convert_config { unsigned circle_segment_count; /* number of segments used for circles: default to 22 */ unsigned arc_segment_count; /* number of segments used for arcs: default to 22 */ unsigned curve_segment_count; /* number of segments used for curves: default to 22 */ - struct nk_draw_null_texture null; /* handle to texture with a white pixel for shape drawing */ + struct nk_draw_null_texture tex_null; /* handle to texture with a white pixel for shape drawing */ const struct nk_draw_vertex_layout_element *vertex_layout; /* describes the vertex output format and packing */ nk_size vertex_size; /* sizeof one vertex for vertex packing */ nk_size vertex_alignment; /* vertex alignment: Can be obtained by NK_ALIGNOF */ @@ -6078,7 +6078,6 @@ NK_LIB void nk_property(struct nk_context *ctx, const char *name, struct nk_prop #define STB_RECT_PACK_IMPLEMENTATION #define STB_TRUETYPE_IMPLEMENTATION -#define STBTT_STATIC /* Allow consumer to define own STBTT_malloc/STBTT_free, and use the font atlas' allocator otherwise */ #ifndef STBTT_malloc @@ -8440,7 +8439,6 @@ nk_str_append_text_utf8(struct nk_str *str, const char *text, int len) NK_API int nk_str_append_str_utf8(struct nk_str *str, const char *text) { - int runes = 0; int byte_len = 0; int num_runes = 0; int glyph_len = 0; @@ -8454,7 +8452,7 @@ nk_str_append_str_utf8(struct nk_str *str, const char *text) num_runes++; } nk_str_append_text_char(str, text, byte_len); - return runes; + return num_runes; } NK_API int nk_str_append_text_runes(struct nk_str *str, const nk_rune *text, int len) @@ -8569,7 +8567,6 @@ nk_str_insert_text_utf8(struct nk_str *str, int pos, const char *text, int len) NK_API int nk_str_insert_str_utf8(struct nk_str *str, int pos, const char *text) { - int runes = 0; int byte_len = 0; int num_runes = 0; int glyph_len = 0; @@ -8583,7 +8580,7 @@ nk_str_insert_str_utf8(struct nk_str *str, int pos, const char *text) num_runes++; } nk_str_insert_at_rune(str, pos, text, byte_len); - return runes; + return num_runes; } NK_API int nk_str_insert_text_runes(struct nk_str *str, int pos, const nk_rune *runes, int len) @@ -9564,7 +9561,7 @@ nk_draw_list_add_clip(struct nk_draw_list *list, struct nk_rect rect) NK_ASSERT(list); if (!list) return; if (!list->cmd_count) { - nk_draw_list_push_command(list, rect, list->config.null.texture); + nk_draw_list_push_command(list, rect, list->config.tex_null.texture); } else { struct nk_draw_command *prev = nk_draw_list_command_last(list); if (prev->elem_count == 0) @@ -9919,7 +9916,7 @@ nk_draw_list_stroke_poly_line(struct nk_draw_list *list, const struct nk_vec2 *p /* fill vertices */ for (i = 0; i < points_count; ++i) { - const struct nk_vec2 uv = list->config.null.uv; + const struct nk_vec2 uv = list->config.tex_null.uv; vtx = nk_draw_vertex(vtx, &list->config, points[i], uv, col); vtx = nk_draw_vertex(vtx, &list->config, temp[i*2+0], uv, col_trans); vtx = nk_draw_vertex(vtx, &list->config, temp[i*2+1], uv, col_trans); @@ -9984,7 +9981,7 @@ nk_draw_list_stroke_poly_line(struct nk_draw_list *list, const struct nk_vec2 *p /* add vertices */ for (i = 0; i < points_count; ++i) { - const struct nk_vec2 uv = list->config.null.uv; + const struct nk_vec2 uv = list->config.tex_null.uv; vtx = nk_draw_vertex(vtx, &list->config, temp[i*4+0], uv, col_trans); vtx = nk_draw_vertex(vtx, &list->config, temp[i*4+1], uv, col); vtx = nk_draw_vertex(vtx, &list->config, temp[i*4+2], uv, col); @@ -10005,7 +10002,7 @@ nk_draw_list_stroke_poly_line(struct nk_draw_list *list, const struct nk_vec2 *p for (i1 = 0; i1 < count; ++i1) { float dx, dy; - const struct nk_vec2 uv = list->config.null.uv; + const struct nk_vec2 uv = list->config.tex_null.uv; const nk_size i2 = ((i1+1) == points_count) ? 0 : i1 + 1; const struct nk_vec2 p1 = points[i1]; const struct nk_vec2 p2 = points[i2]; @@ -10115,7 +10112,7 @@ nk_draw_list_fill_poly_convex(struct nk_draw_list *list, /* add vertices + indexes */ for (i0 = points_count-1, i1 = 0; i1 < points_count; i0 = i1++) { - const struct nk_vec2 uv = list->config.null.uv; + const struct nk_vec2 uv = list->config.tex_null.uv; struct nk_vec2 n0 = normals[i0]; struct nk_vec2 n1 = normals[i1]; struct nk_vec2 dm = nk_vec2_muls(nk_vec2_add(n0, n1), 0.5f); @@ -10152,7 +10149,7 @@ nk_draw_list_fill_poly_convex(struct nk_draw_list *list, if (!vtx || !ids) return; for (i = 0; i < vtx_count; ++i) - vtx = nk_draw_vertex(vtx, &list->config, points[i], list->config.null.uv, col); + vtx = nk_draw_vertex(vtx, &list->config, points[i], list->config.tex_null.uv, col); for (i = 2; i < points_count; ++i) { ids[0] = (nk_draw_index)index; ids[1] = (nk_draw_index)(index+ i - 1); @@ -10181,8 +10178,8 @@ nk_draw_list_path_line_to(struct nk_draw_list *list, struct nk_vec2 pos) nk_draw_list_add_clip(list, nk_null_rect); cmd = nk_draw_list_command_last(list); - if (cmd && cmd->texture.ptr != list->config.null.texture.ptr) - nk_draw_list_push_image(list, list->config.null.texture); + if (cmd && cmd->texture.ptr != list->config.tex_null.texture.ptr) + nk_draw_list_push_image(list, list->config.tex_null.texture); points = nk_draw_list_alloc_path(list, 1); if (!points) return; @@ -10384,7 +10381,7 @@ nk_draw_list_fill_rect_multi_color(struct nk_draw_list *list, struct nk_rect rec NK_ASSERT(list); if (!list) return; - nk_draw_list_push_image(list, list->config.null.texture); + nk_draw_list_push_image(list, list->config.tex_null.texture); index = (nk_draw_index)list->vertex_count; vtx = nk_draw_list_alloc_vertices(list, 4); idx = nk_draw_list_alloc_elements(list, 6); @@ -10394,10 +10391,10 @@ nk_draw_list_fill_rect_multi_color(struct nk_draw_list *list, struct nk_rect rec idx[2] = (nk_draw_index)(index+2); idx[3] = (nk_draw_index)(index+0); idx[4] = (nk_draw_index)(index+2); idx[5] = (nk_draw_index)(index+3); - vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(rect.x, rect.y), list->config.null.uv, col_left); - vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(rect.x + rect.w, rect.y), list->config.null.uv, col_top); - vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(rect.x + rect.w, rect.y + rect.h), list->config.null.uv, col_right); - vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(rect.x, rect.y + rect.h), list->config.null.uv, col_bottom); + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(rect.x, rect.y), list->config.tex_null.uv, col_left); + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(rect.x + rect.w, rect.y), list->config.tex_null.uv, col_top); + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(rect.x + rect.w, rect.y + rect.h), list->config.tex_null.uv, col_right); + vtx = nk_draw_vertex(vtx, &list->config, nk_vec2(rect.x, rect.y + rect.h), list->config.tex_null.uv, col_bottom); } NK_API void nk_draw_list_fill_triangle(struct nk_draw_list *list, struct nk_vec2 a, @@ -16513,7 +16510,7 @@ nk_font_chinese_glyph_ranges(void) 0x3000, 0x30FF, 0x31F0, 0x31FF, 0xFF00, 0xFFEF, - 0x4e00, 0x9FAF, + 0x4E00, 0x9FAF, 0 }; return ranges; @@ -16622,7 +16619,7 @@ nk_font_bake_pack(struct nk_font_baker *baker, struct stbtt_fontinfo *font_info = &baker->build[i++].info; font_info->userdata = alloc; - if (!stbtt_InitFont(font_info, (const unsigned char*)it->ttf_blob, 0)) + if (!stbtt_InitFont(font_info, (const unsigned char*)it->ttf_blob, stbtt_GetFontOffsetForIndex((const unsigned char*)it->ttf_blob, 0))) return nk_false; } while ((it = it->n) != config_iter); } @@ -17704,20 +17701,20 @@ failed: } NK_API void nk_font_atlas_end(struct nk_font_atlas *atlas, nk_handle texture, - struct nk_draw_null_texture *null) + struct nk_draw_null_texture *tex_null) { int i = 0; struct nk_font *font_iter; NK_ASSERT(atlas); if (!atlas) { - if (!null) return; - null->texture = texture; - null->uv = nk_vec2(0.5f,0.5f); + if (!tex_null) return; + tex_null->texture = texture; + tex_null->uv = nk_vec2(0.5f,0.5f); } - if (null) { - null->texture = texture; - null->uv.x = (atlas->custom.x + 0.5f)/(float)atlas->tex_width; - null->uv.y = (atlas->custom.y + 0.5f)/(float)atlas->tex_height; + if (tex_null) { + tex_null->texture = texture; + tex_null->uv.x = (atlas->custom.x + 0.5f)/(float)atlas->tex_width; + tex_null->uv.y = (atlas->custom.y + 0.5f)/(float)atlas->tex_height; } for (font_iter = atlas->fonts; font_iter; font_iter = font_iter->next) { font_iter->texture = texture; @@ -26163,7 +26160,7 @@ nk_textedit_text(struct nk_text_edit *state, const char *text, int total_len) text+text_len, 1)) { nk_textedit_makeundo_insert(state, state->cursor, 1); - ++state->cursor; + state->cursor = NK_MIN(state->cursor + 1, state->string.len); state->has_preferred_x = 0; } } @@ -29657,6 +29654,12 @@ nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args) /// - [y]: Minor version with non-breaking API and library changes /// - [z]: Patch version with no direct changes to the API /// +/// - 2022/12/17 (4.10.5) - Fix nk_font_bake_pack() using TTC font offset incorrectly +/// - 2022/10/24 (4.10.4) - Fix nk_str_{append,insert}_str_utf8 always returning 0 +/// - 2022/09/03 (4.10.3) - Renamed the `null` texture variable to `tex_null` +/// - 2022/08/01 (4.10.2) - Fix Apple Silicon with incorrect NK_SITE_TYPE and NK_POINTER_TYPE +/// - 2022/08/01 (4.10.1) - Fix cursor jumping back to beginning of text when typing more than +/// nk_edit_xxx limit /// - 2022/05/27 (4.10.0) - Add nk_input_has_mouse_click_in_button_rect() to fix window move bug /// - 2022/04/18 (4.9.7) - Change button behavior when NK_BUTTON_TRIGGER_ON_RELEASE is defined to /// only trigger when the mouse position was inside the same button on down diff --git a/source/engine/thirdparty/Nuklear/nuklear_glfw_gl3.h b/source/engine/thirdparty/Nuklear/nuklear_glfw_gl3.h deleted file mode 100644 index 9a11f17..0000000 --- a/source/engine/thirdparty/Nuklear/nuklear_glfw_gl3.h +++ /dev/null @@ -1,500 +0,0 @@ -/* - * Nuklear - 1.32.0 - public domain - * no warrenty implied; use at your own risk. - * authored from 2015-2016 by Micha Mettke - */ -/* - * ============================================================== - * - * API - * - * =============================================================== - */ -#ifndef NK_GLFW_GL3_H_ -#define NK_GLFW_GL3_H_ - -#include -#include - -enum nk_glfw_init_state{ - NK_GLFW3_DEFAULT=0, - NK_GLFW3_INSTALL_CALLBACKS -}; - -#ifndef NK_GLFW_TEXT_MAX -#define NK_GLFW_TEXT_MAX 256 -#endif - -struct nk_glfw_device { - struct nk_buffer cmds; - struct nk_draw_null_texture null; - GLuint vbo, vao, ebo; - GLuint prog; - GLuint vert_shdr; - GLuint frag_shdr; - GLint attrib_pos; - GLint attrib_uv; - GLint attrib_col; - GLint uniform_tex; - GLint uniform_proj; - GLuint font_tex; -}; - -struct nk_glfw { - GLFWwindow *win; - int width, height; - int display_width, display_height; - struct nk_glfw_device ogl; - struct nk_context ctx; - struct nk_font_atlas atlas; - struct nk_vec2 fb_scale; - unsigned int text[NK_GLFW_TEXT_MAX]; - int text_len; - struct nk_vec2 scroll; - double last_button_click; - int is_double_click_down; - struct nk_vec2 double_click_pos; -}; - -NK_API struct nk_context* nk_glfw3_init(struct nk_glfw* glfw, GLFWwindow *win, enum nk_glfw_init_state); -NK_API void nk_glfw3_shutdown(struct nk_glfw* glfw); -NK_API void nk_glfw3_font_stash_begin(struct nk_glfw* glfw, struct nk_font_atlas **atlas); -NK_API void nk_glfw3_font_stash_end(struct nk_glfw* glfw); -NK_API void nk_glfw3_new_frame(struct nk_glfw* glfw); -NK_API void nk_glfw3_render(struct nk_glfw* glfw, enum nk_anti_aliasing, int max_vertex_buffer, int max_element_buffer); - -NK_API void nk_glfw3_device_destroy(struct nk_glfw* glfw); -NK_API void nk_glfw3_device_create(struct nk_glfw* glfw); - -NK_API void nk_glfw3_char_callback(GLFWwindow *win, unsigned int codepoint); -NK_API void nk_gflw3_scroll_callback(GLFWwindow *win, double xoff, double yoff); -NK_API void nk_glfw3_mouse_button_callback(GLFWwindow *win, int button, int action, int mods); - -#endif -/* - * ============================================================== - * - * IMPLEMENTATION - * - * =============================================================== - */ -#ifdef NK_GLFW_GL3_IMPLEMENTATION - -#ifndef NK_GLFW_DOUBLE_CLICK_LO -#define NK_GLFW_DOUBLE_CLICK_LO 0.02 -#endif -#ifndef NK_GLFW_DOUBLE_CLICK_HI -#define NK_GLFW_DOUBLE_CLICK_HI 0.2 -#endif - -struct nk_glfw_vertex { - float position[2]; - float uv[2]; - nk_byte col[4]; -}; - -#ifdef __APPLE__ - #define NK_SHADER_VERSION "#version 150\n" -#else - #define NK_SHADER_VERSION "#version 300 es\n" -#endif - -NK_API void -nk_glfw3_device_create(struct nk_glfw* glfw) -{ - GLint status; - static const GLchar *vertex_shader = - NK_SHADER_VERSION - "uniform mat4 ProjMtx;\n" - "in vec2 Position;\n" - "in vec2 TexCoord;\n" - "in vec4 Color;\n" - "out vec2 Frag_UV;\n" - "out vec4 Frag_Color;\n" - "void main() {\n" - " Frag_UV = TexCoord;\n" - " Frag_Color = Color;\n" - " gl_Position = ProjMtx * vec4(Position.xy, 0, 1);\n" - "}\n"; - static const GLchar *fragment_shader = - NK_SHADER_VERSION - "precision mediump float;\n" - "uniform sampler2D Texture;\n" - "in vec2 Frag_UV;\n" - "in vec4 Frag_Color;\n" - "out vec4 Out_Color;\n" - "void main(){\n" - " Out_Color = Frag_Color * texture(Texture, Frag_UV.st);\n" - "}\n"; - - struct nk_glfw_device *dev = &glfw->ogl; - nk_buffer_init_default(&dev->cmds); - dev->prog = glCreateProgram(); - dev->vert_shdr = glCreateShader(GL_VERTEX_SHADER); - dev->frag_shdr = glCreateShader(GL_FRAGMENT_SHADER); - glShaderSource(dev->vert_shdr, 1, &vertex_shader, 0); - glShaderSource(dev->frag_shdr, 1, &fragment_shader, 0); - glCompileShader(dev->vert_shdr); - glCompileShader(dev->frag_shdr); - glGetShaderiv(dev->vert_shdr, GL_COMPILE_STATUS, &status); - assert(status == GL_TRUE); - glGetShaderiv(dev->frag_shdr, GL_COMPILE_STATUS, &status); - assert(status == GL_TRUE); - glAttachShader(dev->prog, dev->vert_shdr); - glAttachShader(dev->prog, dev->frag_shdr); - glLinkProgram(dev->prog); - glGetProgramiv(dev->prog, GL_LINK_STATUS, &status); - assert(status == GL_TRUE); - - dev->uniform_tex = glGetUniformLocation(dev->prog, "Texture"); - dev->uniform_proj = glGetUniformLocation(dev->prog, "ProjMtx"); - dev->attrib_pos = glGetAttribLocation(dev->prog, "Position"); - dev->attrib_uv = glGetAttribLocation(dev->prog, "TexCoord"); - dev->attrib_col = glGetAttribLocation(dev->prog, "Color"); - - { - /* buffer setup */ - GLsizei vs = sizeof(struct nk_glfw_vertex); - size_t vp = offsetof(struct nk_glfw_vertex, position); - size_t vt = offsetof(struct nk_glfw_vertex, uv); - size_t vc = offsetof(struct nk_glfw_vertex, col); - - glGenBuffers(1, &dev->vbo); - glGenBuffers(1, &dev->ebo); - glGenVertexArrays(1, &dev->vao); - - glBindVertexArray(dev->vao); - glBindBuffer(GL_ARRAY_BUFFER, dev->vbo); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, dev->ebo); - - glEnableVertexAttribArray((GLuint)dev->attrib_pos); - glEnableVertexAttribArray((GLuint)dev->attrib_uv); - glEnableVertexAttribArray((GLuint)dev->attrib_col); - - glVertexAttribPointer((GLuint)dev->attrib_pos, 2, GL_FLOAT, GL_FALSE, vs, (void*)vp); - glVertexAttribPointer((GLuint)dev->attrib_uv, 2, GL_FLOAT, GL_FALSE, vs, (void*)vt); - glVertexAttribPointer((GLuint)dev->attrib_col, 4, GL_UNSIGNED_BYTE, GL_TRUE, vs, (void*)vc); - } - - glBindTexture(GL_TEXTURE_2D, 0); - glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - glBindVertexArray(0); -} - -NK_INTERN void -nk_glfw3_device_upload_atlas(struct nk_glfw* glfw, const void *image, int width, int height) -{ - struct nk_glfw_device *dev = &glfw->ogl; - glGenTextures(1, &dev->font_tex); - glBindTexture(GL_TEXTURE_2D, dev->font_tex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)width, (GLsizei)height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, image); -} - -NK_API void -nk_glfw3_device_destroy(struct nk_glfw* glfw) -{ - struct nk_glfw_device *dev = &glfw->ogl; - glDetachShader(dev->prog, dev->vert_shdr); - glDetachShader(dev->prog, dev->frag_shdr); - glDeleteShader(dev->vert_shdr); - glDeleteShader(dev->frag_shdr); - glDeleteProgram(dev->prog); - glDeleteTextures(1, &dev->font_tex); - glDeleteBuffers(1, &dev->vbo); - glDeleteBuffers(1, &dev->ebo); - nk_buffer_free(&dev->cmds); -} - -NK_API void -nk_glfw3_render(struct nk_glfw* glfw, enum nk_anti_aliasing AA, int max_vertex_buffer, int max_element_buffer) -{ - struct nk_glfw_device *dev = &glfw->ogl; - struct nk_buffer vbuf, ebuf; - GLfloat ortho[4][4] = { - {2.0f, 0.0f, 0.0f, 0.0f}, - {0.0f,-2.0f, 0.0f, 0.0f}, - {0.0f, 0.0f,-1.0f, 0.0f}, - {-1.0f,1.0f, 0.0f, 1.0f}, - }; - ortho[0][0] /= (GLfloat)glfw->width; - ortho[1][1] /= (GLfloat)glfw->height; - - /* setup global state */ - glEnable(GL_BLEND); - glBlendEquation(GL_FUNC_ADD); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glDisable(GL_CULL_FACE); - glDisable(GL_DEPTH_TEST); - glEnable(GL_SCISSOR_TEST); - glActiveTexture(GL_TEXTURE0); - - /* setup program */ - glUseProgram(dev->prog); - glUniform1i(dev->uniform_tex, 0); - glUniformMatrix4fv(dev->uniform_proj, 1, GL_FALSE, &ortho[0][0]); - glViewport(0,0,(GLsizei)glfw->display_width,(GLsizei)glfw->display_height); - { - /* convert from command queue into draw list and draw to screen */ - const struct nk_draw_command *cmd; - void *vertices, *elements; - const nk_draw_index *offset = NULL; - - /* allocate vertex and element buffer */ - glBindVertexArray(dev->vao); - glBindBuffer(GL_ARRAY_BUFFER, dev->vbo); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, dev->ebo); - - glBufferData(GL_ARRAY_BUFFER, max_vertex_buffer, NULL, GL_STREAM_DRAW); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, max_element_buffer, NULL, GL_STREAM_DRAW); - - /* load draw vertices & elements directly into vertex + element buffer */ - vertices = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY); - elements = glMapBuffer(GL_ELEMENT_ARRAY_BUFFER, GL_WRITE_ONLY); - { - /* fill convert configuration */ - struct nk_convert_config config; - static const struct nk_draw_vertex_layout_element vertex_layout[] = { - {NK_VERTEX_POSITION, NK_FORMAT_FLOAT, NK_OFFSETOF(struct nk_glfw_vertex, position)}, - {NK_VERTEX_TEXCOORD, NK_FORMAT_FLOAT, NK_OFFSETOF(struct nk_glfw_vertex, uv)}, - {NK_VERTEX_COLOR, NK_FORMAT_R8G8B8A8, NK_OFFSETOF(struct nk_glfw_vertex, col)}, - {NK_VERTEX_LAYOUT_END} - }; - memset(&config, 0, sizeof(config)); - config.vertex_layout = vertex_layout; - config.vertex_size = sizeof(struct nk_glfw_vertex); - config.vertex_alignment = NK_ALIGNOF(struct nk_glfw_vertex); - config.null = dev->null; - config.circle_segment_count = 22; - config.curve_segment_count = 22; - config.arc_segment_count = 22; - config.global_alpha = 1.0f; - config.shape_AA = AA; - config.line_AA = AA; - - /* setup buffers to load vertices and elements */ - nk_buffer_init_fixed(&vbuf, vertices, (size_t)max_vertex_buffer); - nk_buffer_init_fixed(&ebuf, elements, (size_t)max_element_buffer); - nk_convert(&glfw->ctx, &dev->cmds, &vbuf, &ebuf, &config); - } - glUnmapBuffer(GL_ARRAY_BUFFER); - glUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER); - - /* iterate over and execute each draw command */ - nk_draw_foreach(cmd, &glfw->ctx, &dev->cmds) - { - if (!cmd->elem_count) continue; - glBindTexture(GL_TEXTURE_2D, (GLuint)cmd->texture.id); - glScissor( - (GLint)(cmd->clip_rect.x * glfw->fb_scale.x), - (GLint)((glfw->height - (GLint)(cmd->clip_rect.y + cmd->clip_rect.h)) * glfw->fb_scale.y), - (GLint)(cmd->clip_rect.w * glfw->fb_scale.x), - (GLint)(cmd->clip_rect.h * glfw->fb_scale.y)); - glDrawElements(GL_TRIANGLES, (GLsizei)cmd->elem_count, GL_UNSIGNED_SHORT, offset); - offset += cmd->elem_count; - } - nk_clear(&glfw->ctx); - nk_buffer_clear(&dev->cmds); - } - - /* default OpenGL state */ - glUseProgram(0); - glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - glBindVertexArray(0); - glDisable(GL_BLEND); - glDisable(GL_SCISSOR_TEST); -} - -NK_API void -nk_glfw3_char_callback(GLFWwindow *win, unsigned int codepoint) -{ - struct nk_glfw* glfw = glfwGetWindowUserPointer(win); - if (glfw->text_len < NK_GLFW_TEXT_MAX) - glfw->text[glfw->text_len++] = codepoint; -} - -NK_API void -nk_gflw3_scroll_callback(GLFWwindow *win, double xoff, double yoff) -{ - struct nk_glfw* glfw = glfwGetWindowUserPointer(win); - (void)xoff; - glfw->scroll.x += (float)xoff; - glfw->scroll.y += (float)yoff; -} - -NK_API void -nk_glfw3_mouse_button_callback(GLFWwindow* win, int button, int action, int mods) -{ - struct nk_glfw* glfw = glfwGetWindowUserPointer(win); - double x, y; - NK_UNUSED(mods); - if (button != GLFW_MOUSE_BUTTON_LEFT) return; - glfwGetCursorPos(win, &x, &y); - if (action == GLFW_PRESS) { - double dt = glfwGetTime() - glfw->last_button_click; - if (dt > NK_GLFW_DOUBLE_CLICK_LO && dt < NK_GLFW_DOUBLE_CLICK_HI) { - glfw->is_double_click_down = nk_true; - glfw->double_click_pos = nk_vec2((float)x, (float)y); - } - glfw->last_button_click = glfwGetTime(); - } else glfw->is_double_click_down = nk_false; -} - -NK_INTERN void -nk_glfw3_clipboard_paste(nk_handle usr, struct nk_text_edit *edit) -{ - struct nk_glfw* glfw = (struct nk_glfw*)usr.ptr; - const char *text = glfwGetClipboardString(glfw->win); - if (text) nk_textedit_paste(edit, text, nk_strlen(text)); - (void)usr; -} - -NK_INTERN void -nk_glfw3_clipboard_copy(nk_handle usr, const char *text, int len) -{ - struct nk_glfw* glfw = (struct nk_glfw*)usr.ptr; - char *str = 0; - if (!len) return; - str = (char*)malloc((size_t)len+1); - if (!str) return; - memcpy(str, text, (size_t)len); - str[len] = '\0'; - glfwSetClipboardString(glfw->win, str); - free(str); -} - -NK_API struct nk_context* -nk_glfw3_init(struct nk_glfw* glfw, GLFWwindow *win, enum nk_glfw_init_state init_state) -{ - glfwSetWindowUserPointer(win, glfw); - glfw->win = win; - if (init_state == NK_GLFW3_INSTALL_CALLBACKS) { - glfwSetScrollCallback(win, nk_gflw3_scroll_callback); - glfwSetCharCallback(win, nk_glfw3_char_callback); - glfwSetMouseButtonCallback(win, nk_glfw3_mouse_button_callback); - } - nk_init_default(&glfw->ctx, 0); - glfw->ctx.clip.copy = nk_glfw3_clipboard_copy; - glfw->ctx.clip.paste = nk_glfw3_clipboard_paste; - glfw->ctx.clip.userdata = nk_handle_ptr(&glfw); - glfw->last_button_click = 0; - nk_glfw3_device_create(glfw); - - glfw->is_double_click_down = nk_false; - glfw->double_click_pos = nk_vec2(0, 0); - - return &glfw->ctx; -} - -NK_API void -nk_glfw3_font_stash_begin(struct nk_glfw* glfw, struct nk_font_atlas **atlas) -{ - nk_font_atlas_init_default(&glfw->atlas); - nk_font_atlas_begin(&glfw->atlas); - *atlas = &glfw->atlas; -} - -NK_API void -nk_glfw3_font_stash_end(struct nk_glfw* glfw) -{ - const void *image; int w, h; - image = nk_font_atlas_bake(&glfw->atlas, &w, &h, NK_FONT_ATLAS_RGBA32); - nk_glfw3_device_upload_atlas(glfw, image, w, h); - nk_font_atlas_end(&glfw->atlas, nk_handle_id((int)glfw->ogl.font_tex), &glfw->ogl.null); - if (glfw->atlas.default_font) - nk_style_set_font(&glfw->ctx, &glfw->atlas.default_font->handle); -} - -NK_API void -nk_glfw3_new_frame(struct nk_glfw* glfw) -{ - int i; - double x, y; - struct nk_context *ctx = &glfw->ctx; - struct GLFWwindow *win = glfw->win; - - glfwGetWindowSize(win, &glfw->width, &glfw->height); - glfwGetFramebufferSize(win, &glfw->display_width, &glfw->display_height); - glfw->fb_scale.x = (float)glfw->display_width/(float)glfw->width; - glfw->fb_scale.y = (float)glfw->display_height/(float)glfw->height; - - nk_input_begin(ctx); - for (i = 0; i < glfw->text_len; ++i) - nk_input_unicode(ctx, glfw->text[i]); - -#ifdef NK_GLFW_GL3_MOUSE_GRABBING - /* optional grabbing behavior */ - if (ctx->input.mouse.grab) - glfwSetInputMode(glfw.win, GLFW_CURSOR, GLFW_CURSOR_HIDDEN); - else if (ctx->input.mouse.ungrab) - glfwSetInputMode(glfw->win, GLFW_CURSOR, GLFW_CURSOR_NORMAL); -#endif - - nk_input_key(ctx, NK_KEY_DEL, glfwGetKey(win, GLFW_KEY_DELETE) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_ENTER, glfwGetKey(win, GLFW_KEY_ENTER) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_TAB, glfwGetKey(win, GLFW_KEY_TAB) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_BACKSPACE, glfwGetKey(win, GLFW_KEY_BACKSPACE) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_UP, glfwGetKey(win, GLFW_KEY_UP) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_DOWN, glfwGetKey(win, GLFW_KEY_DOWN) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_TEXT_START, glfwGetKey(win, GLFW_KEY_HOME) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_TEXT_END, glfwGetKey(win, GLFW_KEY_END) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_SCROLL_START, glfwGetKey(win, GLFW_KEY_HOME) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_SCROLL_END, glfwGetKey(win, GLFW_KEY_END) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_SCROLL_DOWN, glfwGetKey(win, GLFW_KEY_PAGE_DOWN) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_SCROLL_UP, glfwGetKey(win, GLFW_KEY_PAGE_UP) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_SHIFT, glfwGetKey(win, GLFW_KEY_LEFT_SHIFT) == GLFW_PRESS|| - glfwGetKey(win, GLFW_KEY_RIGHT_SHIFT) == GLFW_PRESS); - - if (glfwGetKey(win, GLFW_KEY_LEFT_CONTROL) == GLFW_PRESS || - glfwGetKey(win, GLFW_KEY_RIGHT_CONTROL) == GLFW_PRESS) { - nk_input_key(ctx, NK_KEY_COPY, glfwGetKey(win, GLFW_KEY_C) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_PASTE, glfwGetKey(win, GLFW_KEY_V) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_CUT, glfwGetKey(win, GLFW_KEY_X) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_TEXT_UNDO, glfwGetKey(win, GLFW_KEY_Z) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_TEXT_REDO, glfwGetKey(win, GLFW_KEY_R) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_TEXT_WORD_LEFT, glfwGetKey(win, GLFW_KEY_LEFT) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_TEXT_WORD_RIGHT, glfwGetKey(win, GLFW_KEY_RIGHT) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_TEXT_LINE_START, glfwGetKey(win, GLFW_KEY_B) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_TEXT_LINE_END, glfwGetKey(win, GLFW_KEY_E) == GLFW_PRESS); - } else { - nk_input_key(ctx, NK_KEY_LEFT, glfwGetKey(win, GLFW_KEY_LEFT) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_RIGHT, glfwGetKey(win, GLFW_KEY_RIGHT) == GLFW_PRESS); - nk_input_key(ctx, NK_KEY_COPY, 0); - nk_input_key(ctx, NK_KEY_PASTE, 0); - nk_input_key(ctx, NK_KEY_CUT, 0); - nk_input_key(ctx, NK_KEY_SHIFT, 0); - } - - glfwGetCursorPos(win, &x, &y); - nk_input_motion(ctx, (int)x, (int)y); -#ifdef NK_GLFW_GL3_MOUSE_GRABBING - if (ctx->input.mouse.grabbed) { - glfwSetCursorPos(glfw->win, ctx->input.mouse.prev.x, ctx->input.mouse.prev.y); - ctx->input.mouse.pos.x = ctx->input.mouse.prev.x; - ctx->input.mouse.pos.y = ctx->input.mouse.prev.y; - } -#endif - nk_input_button(ctx, NK_BUTTON_LEFT, (int)x, (int)y, glfwGetMouseButton(win, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS); - nk_input_button(ctx, NK_BUTTON_MIDDLE, (int)x, (int)y, glfwGetMouseButton(win, GLFW_MOUSE_BUTTON_MIDDLE) == GLFW_PRESS); - nk_input_button(ctx, NK_BUTTON_RIGHT, (int)x, (int)y, glfwGetMouseButton(win, GLFW_MOUSE_BUTTON_RIGHT) == GLFW_PRESS); - nk_input_button(ctx, NK_BUTTON_DOUBLE, (int)glfw->double_click_pos.x, (int)glfw->double_click_pos.y, glfw->is_double_click_down); - nk_input_scroll(ctx, glfw->scroll); - nk_input_end(&glfw->ctx); - glfw->text_len = 0; - glfw->scroll = nk_vec2(0,0); -} - -NK_API -void nk_glfw3_shutdown(struct nk_glfw* glfw) -{ - nk_font_atlas_clear(&glfw->atlas); - nk_free(&glfw->ctx); - nk_glfw3_device_destroy(glfw); - memset(glfw, 0, sizeof(*glfw)); -} - -#endif diff --git a/source/engine/thirdparty/libsamplerate/include/samplerate.h b/source/engine/thirdparty/libsamplerate/include/samplerate.h new file mode 100644 index 0000000..a3d5ae1 --- /dev/null +++ b/source/engine/thirdparty/libsamplerate/include/samplerate.h @@ -0,0 +1,189 @@ +/* +** Copyright (c) 2002-2016, Erik de Castro Lopo +** All rights reserved. +** +** This code is released under 2-clause BSD license. Please see the +** file at : https://github.com/libsndfile/libsamplerate/blob/master/COPYING +*/ + +/* +** API documentation is available here: +** http://libsndfile.github.io/libsamplerate/api.html +*/ + +#ifndef SAMPLERATE_H +#define SAMPLERATE_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + + +/* Opaque data type SRC_STATE. */ +typedef struct SRC_STATE_tag SRC_STATE ; + +/* SRC_DATA is used to pass data to src_simple() and src_process(). */ +typedef struct +{ const float *data_in ; + float *data_out ; + + long input_frames, output_frames ; + long input_frames_used, output_frames_gen ; + + int end_of_input ; + + double src_ratio ; +} SRC_DATA ; + +/* +** User supplied callback function type for use with src_callback_new() +** and src_callback_read(). First parameter is the same pointer that was +** passed into src_callback_new(). Second parameter is pointer to a +** pointer. The user supplied callback function must modify *data to +** point to the start of the user supplied float array. The user supplied +** function must return the number of frames that **data points to. +*/ + +typedef long (*src_callback_t) (void *cb_data, float **data) ; + +/* +** Standard initialisation function : return an anonymous pointer to the +** internal state of the converter. Choose a converter from the enums below. +** Error returned in *error. +*/ + +SRC_STATE* src_new (int converter_type, int channels, int *error) ; + +/* +** Clone a handle : return an anonymous pointer to a new converter +** containing the same internal state as orig. Error returned in *error. +*/ +SRC_STATE* src_clone (SRC_STATE* orig, int *error) ; + +/* +** Initilisation for callback based API : return an anonymous pointer to the +** internal state of the converter. Choose a converter from the enums below. +** The cb_data pointer can point to any data or be set to NULL. Whatever the +** value, when processing, user supplied function "func" gets called with +** cb_data as first parameter. +*/ + +SRC_STATE* src_callback_new (src_callback_t func, int converter_type, int channels, + int *error, void* cb_data) ; + +/* +** Cleanup all internal allocations. +** Always returns NULL. +*/ + +SRC_STATE* src_delete (SRC_STATE *state) ; + +/* +** Standard processing function. +** Returns non zero on error. +*/ + +int src_process (SRC_STATE *state, SRC_DATA *data) ; + +/* +** Callback based processing function. Read up to frames worth of data from +** the converter int *data and return frames read or -1 on error. +*/ +long src_callback_read (SRC_STATE *state, double src_ratio, long frames, float *data) ; + +/* +** Simple interface for performing a single conversion from input buffer to +** output buffer at a fixed conversion ratio. +** Simple interface does not require initialisation as it can only operate on +** a single buffer worth of audio. +*/ + +int src_simple (SRC_DATA *data, int converter_type, int channels) ; + +/* +** This library contains a number of different sample rate converters, +** numbered 0 through N. +** +** Return a string giving either a name or a more full description of each +** sample rate converter or NULL if no sample rate converter exists for +** the given value. The converters are sequentially numbered from 0 to N. +*/ + +const char *src_get_name (int converter_type) ; +const char *src_get_description (int converter_type) ; +const char *src_get_version (void) ; + +/* +** Set a new SRC ratio. This allows step responses +** in the conversion ratio. +** Returns non zero on error. +*/ + +int src_set_ratio (SRC_STATE *state, double new_ratio) ; + +/* +** Get the current channel count. +** Returns negative on error, positive channel count otherwise +*/ + +int src_get_channels (SRC_STATE *state) ; + +/* +** Reset the internal SRC state. +** Does not modify the quality settings. +** Does not free any memory allocations. +** Returns non zero on error. +*/ + +int src_reset (SRC_STATE *state) ; + +/* +** Return TRUE if ratio is a valid conversion ratio, FALSE +** otherwise. +*/ + +int src_is_valid_ratio (double ratio) ; + +/* +** Return an error number. +*/ + +int src_error (SRC_STATE *state) ; + +/* +** Convert the error number into a string. +*/ +const char* src_strerror (int error) ; + +/* +** The following enums can be used to set the interpolator type +** using the function src_set_converter(). +*/ + +enum +{ + SRC_SINC_BEST_QUALITY = 0, + SRC_SINC_MEDIUM_QUALITY = 1, + SRC_SINC_FASTEST = 2, + SRC_ZERO_ORDER_HOLD = 3, + SRC_LINEAR = 4, +} ; + +/* +** Extra helper functions for converting from short to float and +** back again. +*/ + +void src_short_to_float_array (const short *in, float *out, int len) ; +void src_float_to_short_array (const float *in, short *out, int len) ; + +void src_int_to_float_array (const int *in, float *out, int len) ; +void src_float_to_int_array (const float *in, int *out, int len) ; + + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif /* SAMPLERATE_H */ + diff --git a/source/engine/thirdparty/libsamplerate/src/common.h b/source/engine/thirdparty/libsamplerate/src/common.h new file mode 100644 index 0000000..7f8bd07 --- /dev/null +++ b/source/engine/thirdparty/libsamplerate/src/common.h @@ -0,0 +1,213 @@ +/* +** Copyright (c) 2002-2021, Erik de Castro Lopo +** All rights reserved. +** +** This code is released under 2-clause BSD license. Please see the +** file at : https://github.com/libsndfile/libsamplerate/blob/master/COPYING +*/ + +#ifndef COMMON_H_INCLUDED +#define COMMON_H_INCLUDED + +#include +#ifdef HAVE_STDBOOL_H +#include +#endif + +#if HAVE_IMMINTRIN_H +#include +#endif + +#include + +#ifdef HAVE_VISIBILITY + #define LIBSAMPLERATE_DLL_PRIVATE __attribute__ ((visibility ("hidden"))) +#elif defined (__APPLE__) + #define LIBSAMPLERATE_DLL_PRIVATE __private_extern__ +#else + #define LIBSAMPLERATE_DLL_PRIVATE +#endif + +#define SRC_MAX_RATIO 256 +#define SRC_MAX_RATIO_STR "256" + +#define SRC_MIN_RATIO_DIFF (1e-20) + +#ifndef MAX +#define MAX(a,b) (((a) > (b)) ? (a) : (b)) +#endif + +#ifndef MIN +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) +#endif + +#define ARRAY_LEN(x) ((int) (sizeof (x) / sizeof ((x) [0]))) +#define OFFSETOF(type,member) ((int) (&((type*) 0)->member)) + +#define MAKE_MAGIC(a,b,c,d,e,f) ((a) + ((b) << 4) + ((c) << 8) + ((d) << 12) + ((e) << 16) + ((f) << 20)) + +/* +** Inspiration : http://sourcefrog.net/weblog/software/languages/C/unused.html +*/ +#ifdef UNUSED +#elif defined (__GNUC__) +# define UNUSED(x) UNUSED_ ## x __attribute__ ((unused)) +#elif defined (__LCLINT__) +# define UNUSED(x) /*@unused@*/ x +#else +# define UNUSED(x) x +#endif + +#ifdef __GNUC__ +# define WARN_UNUSED __attribute__ ((warn_unused_result)) +#else +# define WARN_UNUSED +#endif + +#include "samplerate.h" + +enum +{ SRC_FALSE = 0, + SRC_TRUE = 1, +} ; + +enum SRC_MODE +{ + SRC_MODE_PROCESS = 0, + SRC_MODE_CALLBACK = 1 +} ; + +typedef enum SRC_ERROR +{ + SRC_ERR_NO_ERROR = 0, + + SRC_ERR_MALLOC_FAILED, + SRC_ERR_BAD_STATE, + SRC_ERR_BAD_DATA, + SRC_ERR_BAD_DATA_PTR, + SRC_ERR_NO_PRIVATE, + SRC_ERR_BAD_SRC_RATIO, + SRC_ERR_BAD_PROC_PTR, + SRC_ERR_SHIFT_BITS, + SRC_ERR_FILTER_LEN, + SRC_ERR_BAD_CONVERTER, + SRC_ERR_BAD_CHANNEL_COUNT, + SRC_ERR_SINC_BAD_BUFFER_LEN, + SRC_ERR_SIZE_INCOMPATIBILITY, + SRC_ERR_BAD_PRIV_PTR, + SRC_ERR_BAD_SINC_STATE, + SRC_ERR_DATA_OVERLAP, + SRC_ERR_BAD_CALLBACK, + SRC_ERR_BAD_MODE, + SRC_ERR_NULL_CALLBACK, + SRC_ERR_NO_VARIABLE_RATIO, + SRC_ERR_SINC_PREPARE_DATA_BAD_LEN, + SRC_ERR_BAD_INTERNAL_STATE, + + /* This must be the last error number. */ + SRC_ERR_MAX_ERROR +} SRC_ERROR ; + +typedef struct SRC_STATE_VT_tag +{ + /* Varispeed process function. */ + SRC_ERROR (*vari_process) (SRC_STATE *state, SRC_DATA *data) ; + + /* Constant speed process function. */ + SRC_ERROR (*const_process) (SRC_STATE *state, SRC_DATA *data) ; + + /* State reset. */ + void (*reset) (SRC_STATE *state) ; + + /* State clone. */ + SRC_STATE *(*copy) (SRC_STATE *state) ; + + /* State close. */ + void (*close) (SRC_STATE *state) ; +} SRC_STATE_VT ; + +struct SRC_STATE_tag +{ + SRC_STATE_VT *vt ; + + double last_ratio, last_position ; + + SRC_ERROR error ; + int channels ; + + /* SRC_MODE_PROCESS or SRC_MODE_CALLBACK */ + enum SRC_MODE mode ; + + /* Data specific to SRC_MODE_CALLBACK. */ + src_callback_t callback_func ; + void *user_callback_data ; + long saved_frames ; + const float *saved_data ; + + /* Pointer to data to converter specific data. */ + void *private_data ; +} ; + +/* In src_sinc.c */ +const char* sinc_get_name (int src_enum) ; +const char* sinc_get_description (int src_enum) ; + +SRC_STATE *sinc_state_new (int converter_type, int channels, SRC_ERROR *error) ; + +/* In src_linear.c */ +const char* linear_get_name (int src_enum) ; +const char* linear_get_description (int src_enum) ; + +SRC_STATE *linear_state_new (int channels, SRC_ERROR *error) ; + +/* In src_zoh.c */ +const char* zoh_get_name (int src_enum) ; +const char* zoh_get_description (int src_enum) ; + +SRC_STATE *zoh_state_new (int channels, SRC_ERROR *error) ; + +/*---------------------------------------------------------- +** SIMD optimized math functions. +*/ + +static inline int psf_lrintf (float x) +{ + #ifdef HAVE_IMMINTRIN_H + return _mm_cvtss_si32 (_mm_load_ss (&x)) ; + #else + return lrintf (x) ; + #endif +} /* psf_lrintf */ + +static inline int psf_lrint (double x) +{ + #ifdef HAVE_IMMINTRIN_H + return _mm_cvtsd_si32 (_mm_load_sd (&x)) ; + #else + return lrint (x) ; + #endif +} /* psf_lrint */ + +/*---------------------------------------------------------- +** Common static inline functions. +*/ + +static inline double +fmod_one (double x) +{ double res ; + + res = x - psf_lrint (x) ; + if (res < 0.0) + return res + 1.0 ; + + return res ; +} /* fmod_one */ + +static inline int +is_bad_src_ratio (double ratio) +{ return (ratio < (1.0 / SRC_MAX_RATIO) || ratio > (1.0 * SRC_MAX_RATIO)) ; +} /* is_bad_src_ratio */ + + +#endif /* COMMON_H_INCLUDED */ + diff --git a/source/engine/thirdparty/libsamplerate/src/config.h b/source/engine/thirdparty/libsamplerate/src/config.h new file mode 100644 index 0000000..dfd389c --- /dev/null +++ b/source/engine/thirdparty/libsamplerate/src/config.h @@ -0,0 +1,172 @@ +/* src/config.h. Generated from config.h.in by configure. */ +/* src/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* Host processor clips on negative float to int conversion. */ +#define CPU_CLIPS_NEGATIVE 0 + +/* Host processor clips on positive float to int conversion. */ +#define CPU_CLIPS_POSITIVE 0 + +/* Host processor is big endian. */ +#define CPU_IS_BIG_ENDIAN 0 + +/* Host processor is little endian. */ +#define CPU_IS_LITTLE_ENDIAN 1 + +/* Enable sinc best converter. */ +#define ENABLE_SINC_BEST_CONVERTER yes + +/* Enable sinc fast converter. */ +#define ENABLE_SINC_FAST_CONVERTER yes + +/* Enable sinc balanced converter. */ +#define ENABLE_SINC_MEDIUM_CONVERTER yes + +/* Define to 1 if you have the `alarm' function. */ +#define HAVE_ALARM 1 + +/* Set to 1 if you have alsa */ +#define HAVE_ALSA 1 + +/* Define to 1 if you have the `calloc' function. */ +#define HAVE_CALLOC 1 + +/* Define to 1 if you have the `ceil' function. */ +/* #undef HAVE_CEIL */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Set to 1 if you have fftw3 */ +/* #undef HAVE_FFTW3 */ + +/* Define to 1 if you have the `floor' function. */ +/* #undef HAVE_FLOOR */ + +/* Define to 1 if you have the `fmod' function. */ +/* #undef HAVE_FMOD */ + +/* Define to 1 if you have the `free' function. */ +#define HAVE_FREE 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_IMMINTRIN_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `lrint' function. */ +/* #undef HAVE_LRINT */ + +/* Define to 1 if you have the `lrintf' function. */ +/* #undef HAVE_LRINTF */ + +/* Define to 1 if you have the `malloc' function. */ +#define HAVE_MALLOC 1 + +/* Define to 1 if you have the `memcpy' function. */ +#define HAVE_MEMCPY 1 + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE 1 + +/* Define if you have signal SIGALRM. */ +#define HAVE_SIGALRM 1 + +/* Define to 1 if you have the `signal' function. */ +#define HAVE_SIGNAL 1 + +/* Set to 1 if you have libsndfile */ +/* #undef HAVE_SNDFILE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if the compiler supports simple visibility declarations. */ +#define HAVE_VISIBILITY 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "libsamplerate" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "erikd@mega-nerd.com" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "libsamplerate" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "libsamplerate 0.2.2" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "libsamplerate" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "https://github.com/libsndfile/libsamplerate/" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "0.2.2" + +/* The size of `double', as computed by sizeof. */ +#define SIZEOF_DOUBLE 8 + +/* The size of `float', as computed by sizeof. */ +#define SIZEOF_FLOAT 4 + +/* The size of `int', as computed by sizeof. */ +#define SIZEOF_INT 4 + +/* The size of `long', as computed by sizeof. */ +#define SIZEOF_LONG 8 + +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "0.2.2" + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif diff --git a/source/engine/thirdparty/libsamplerate/src/fastest_coeffs.h b/source/engine/thirdparty/libsamplerate/src/fastest_coeffs.h new file mode 100644 index 0000000..b7a692f --- /dev/null +++ b/source/engine/thirdparty/libsamplerate/src/fastest_coeffs.h @@ -0,0 +1,2498 @@ +/* +** Copyright (c) 2002-2016, Erik de Castro Lopo +** All rights reserved. +** +** This code is released under 2-clause BSD license. Please see the +** file at : https://github.com/libsndfile/libsamplerate/blob/master/COPYING +*/ + +/* +** f = make_filter (8, 128, 100.3) ; +** Pass band width : 0.0039062 (should be 0.0039062) +** Stop band atten. : 100.71 dB +** -3dB band width : 0.484 +** half length : 2463 +** increment : 128 +*/ + +#ifdef _MSC_VER +#pragma warning (push) +#pragma warning (disable: 4305) +#endif + +static const struct fastest_coeffs_s +{ int increment ; + coeff_t coeffs [2464] ; +} fastest_coeffs = +{ 128, +{ + 8.31472372954840555082e-01, + 8.31414005540308198583e-01, + 8.31238918266223869580e-01, + 8.30947156036480505392e-01, + 8.30538793675450581766e-01, + 8.30013935904800659316e-01, + 8.29372717311066987023e-01, + 8.28615302303967515840e-01, + 8.27741885065490623496e-01, + 8.26752689489751890761e-01, + 8.25647969113678215081e-01, + 8.24428007038499943704e-01, + 8.23093115842108757896e-01, + 8.21643637482293187624e-01, + 8.20079943190897053817e-01, + 8.18402433358933589780e-01, + 8.16611537412689103554e-01, + 8.14707713680854150873e-01, + 8.12691449252757824873e-01, + 8.10563259827706050764e-01, + 8.08323689555523805517e-01, + 8.05973310868314363198e-01, + 8.03512724303517833491e-01, + 8.00942558318331943035e-01, + 7.98263469095534694553e-01, + 7.95476140340800830231e-01, + 7.92581283071560838138e-01, + 7.89579635397499868255e-01, + 7.86471962292734527722e-01, + 7.83259055359786127148e-01, + 7.79941732585400893107e-01, + 7.76520838088307852054e-01, + 7.72997241859018080490e-01, + 7.69371839491718167992e-01, + 7.65645551908390675777e-01, + 7.61819325075220210586e-01, + 7.57894129711408459649e-01, + 7.53870960990470018181e-01, + 7.49750838234153449413e-01, + 7.45534804599028211314e-01, + 7.41223926755909090502e-01, + 7.36819294562192195208e-01, + 7.32322020727209643809e-01, + 7.27733240470738174110e-01, + 7.23054111174766811487e-01, + 7.18285812028632841830e-01, + 7.13429543667664534112e-01, + 7.08486527805442301009e-01, + 7.03458006859804640953e-01, + 6.98345243572719653891e-01, + 6.93149520624175785599e-01, + 6.87872140240182283755e-01, + 6.82514423795047564525e-01, + 6.77077711408058502407e-01, + 6.71563361534684655219e-01, + 6.65972750552474845875e-01, + 6.60307272341742135247e-01, + 6.54568337861228477514e-01, + 6.48757374718860524432e-01, + 6.42875826737744904271e-01, + 6.36925153517562181449e-01, + 6.30906829991492501541e-01, + 6.24822345978837789815e-01, + 6.18673205733470954470e-01, + 6.12460927488293727095e-01, + 6.06187042995817604307e-01, + 5.99853097065060292259e-01, + 5.93460647094893878339e-01, + 5.87011262603992944875e-01, + 5.80506524757569142281e-01, + 5.73948025891025337408e-01, + 5.67337369030688098981e-01, + 5.60676167411809700525e-01, + 5.53966043993961543279e-01, + 5.47208630974010734604e-01, + 5.40405569296826038261e-01, + 5.33558508163880174102e-01, + 5.26669104539922661168e-01, + 5.19739022657876970079e-01, + 5.12769933522119303326e-01, + 5.05763514410336290084e-01, + 4.98721448374081555155e-01, + 4.91645423738241937883e-01, + 4.84537133599546865348e-01, + 4.77398275324308896117e-01, + 4.70230550045545592219e-01, + 4.63035662159660077464e-01, + 4.55815318822846149427e-01, + 4.48571229447379538069e-01, + 4.41305105197960123586e-01, + 4.34018658488283970431e-01, + 4.26713602477997000495e-01, + 4.19391650570203500248e-01, + 4.12054515909689722530e-01, + 4.04703910882034223473e-01, + 3.97341546613763640927e-01, + 3.89969132473721613596e-01, + 3.82588375575806771689e-01, + 3.75200980283257823356e-01, + 3.67808647714624070701e-01, + 3.60413075251609871241e-01, + 3.53015956048925771960e-01, + 3.45618978546330835044e-01, + 3.38223825983006376461e-01, + 3.30832175914426429575e-01, + 3.23445699731881031180e-01, + 3.16066062184803764357e-01, + 3.08694920906066150312e-01, + 3.01333925940378832831e-01, + 2.93984719275965256102e-01, + 2.86648934379644393378e-01, + 2.79328195735489559492e-01, + 2.72024118387182545220e-01, + 2.64738307484245039003e-01, + 2.57472357832259801658e-01, + 2.50227853447243409057e-01, + 2.43006367114305704691e-01, + 2.35809459950733935063e-01, + 2.28638680973647728800e-01, + 2.21495566672345989279e-01, + 2.14381640585498134399e-01, + 2.07298412883298144305e-01, + 2.00247379954717363848e-01, + 1.93230023999986955108e-01, + 1.86247812628430653437e-01, + 1.79302198461779749294e-01, + 1.72394618743085786816e-01, + 1.65526494951356295537e-01, + 1.58699232422028796430e-01, + 1.51914219973401071195e-01, + 1.45172829539132269838e-01, + 1.38476415806921215879e-01, + 1.31826315863480453272e-01, + 1.25223848845901208904e-01, + 1.18670315599523901184e-01, + 1.12166998342411894374e-01, + 1.05715160336527447260e-01, + 9.93160455657086521652e-02, + 9.29708784205405536216e-02, + 8.66808633902153846673e-02, + 8.04471847614677826321e-02, + 7.42710063246745516574e-02, + 6.81534710872001986415e-02, + 6.20957009940759641076e-02, + 5.60987966560835549235e-02, + 5.01638370853247708703e-02, + 4.42918794383505357026e-02, + 3.84839587669171534490e-02, + 3.27410877764400740086e-02, + 2.70642565922108620236e-02, + 2.14544325334371267788e-02, + 1.59125598951669576520e-02, + 1.04395597381551803740e-02, + 5.03632968672305773861e-03, +-2.96256265336385191805e-04, +-5.55734794075828358179e-03, +-1.07461191566687631893e-02, +-1.58617678942645466689e-02, +-2.09035164602743607498e-02, +-2.58706116401622790435e-02, +-3.07623248430414844568e-02, +-3.55779522382659724178e-02, +-4.03168148836769782428e-02, +-4.49782588454727128013e-02, +-4.95616553096875425699e-02, +-5.40664006852556791594e-02, +-5.84919166986474642345e-02, +-6.28376504800633867154e-02, +-6.71030746411782619276e-02, +-7.12876873444269476554e-02, +-7.53910123638282386738e-02, +-7.94125991373483691715e-02, +-8.33520228108008270906e-02, +-8.72088842732959695914e-02, +-9.09828101842390379872e-02, +-9.46734529918955292072e-02, +-9.82804909435327500589e-02, +-1.01803628087157427284e-01, +-1.05242594264867719844e-01, +-1.08597145097841310535e-01, +-1.11867061962988789681e-01, +-1.15052151961296145188e-01, +-1.18152247877890054228e-01, +-1.21167208133862752684e-01, +-1.24096916729885473063e-01, +-1.26941283181660202750e-01, +-1.29700242447243679900e-01, +-1.32373754846295377252e-01, +-1.34961805971292009287e-01, +-1.37464406590764143257e-01, +-1.39881592544604443917e-01, +-1.42213424631507739937e-01, +-1.44459988488595730827e-01, +-1.46621394463294696386e-01, +-1.48697777477524800682e-01, +-1.50689296884269657850e-01, +-1.52596136316595465399e-01, +-1.54418503529190731527e-01, +-1.56156630232500315270e-01, +-1.57810771919529219121e-01, +-1.59381207685401427021e-01, +-1.60868240039743037872e-01, +-1.62272194711985145998e-01, +-1.63593420449666626659e-01, +-1.64832288809824062392e-01, +-1.65989193943563151379e-01, +-1.67064552373901109572e-01, +-1.68058802766975601273e-01, +-1.68972405696717037360e-01, +-1.69805843403086798027e-01, +-1.70559619543971530131e-01, +-1.71234258940853617537e-01, +-1.71830307318344255307e-01, +-1.72348331037702334756e-01, +-1.72788916824434257702e-01, +-1.73152671490098081231e-01, +-1.73440221648409775845e-01, +-1.73652213425782242506e-01, +-1.73789312166397952319e-01, +-1.73852202131942051855e-01, +-1.73841586196111674845e-01, +-1.73758185534021086793e-01, +-1.73602739306629005878e-01, +-1.73376004340306061335e-01, +-1.73078754801670009478e-01, +-1.72711781867818603420e-01, +-1.72275893392080048372e-01, +-1.71771913565416961545e-01, +-1.71200682573611373538e-01, +-1.70563056250360139954e-01, +-1.69859905726417126370e-01, +-1.69092117074913228514e-01, +-1.68260590952989147473e-01, +-1.67366242239875284703e-01, +-1.66409999671557895518e-01, +-1.65392805472166642966e-01, +-1.64315614982222552021e-01, +-1.63179396283883837437e-01, +-1.61985129823331186483e-01, +-1.60733808030429803360e-01, +-1.59426434935813571281e-01, +-1.58064025785527417778e-01, +-1.56647606653372045704e-01, +-1.55178214051094831571e-01, +-1.53656894536566474008e-01, +-1.52084704320088470730e-01, +-1.50462708868975059140e-01, +-1.48791982510548842500e-01, +-1.47073608033699704256e-01, +-1.45308676289147314931e-01, +-1.43498285788550977715e-01, +-1.41643542302611558092e-01, +-1.39745558458309881988e-01, +-1.37805453335422323224e-01, +-1.35824352062461073398e-01, +-1.33803385412180564362e-01, +-1.31743689396791985313e-01, +-1.29646404863030306753e-01, +-1.27512677087215337002e-01, +-1.25343655370452389253e-01, +-1.23140492634104758984e-01, +-1.20904345015691472298e-01, +-1.18636371465341922127e-01, +-1.16337733342949820048e-01, +-1.14009594016166518338e-01, +-1.11653118459372716065e-01, +-1.09269472853762789066e-01, +-1.06859824188683741331e-01, +-1.04425339864360325337e-01, +-1.01967187296145456177e-01, +-9.94865335204263567803e-02, +-9.69845448023236023083e-02, +-9.44623862453117940641e-02, +-9.19212214028948121358e-02, +-8.93622118924671249296e-02, +-8.67865170114848205607e-02, +-8.41952933560805999447e-02, +-8.15896944422443981537e-02, +-7.89708703296961439522e-02, +-7.63399672485739477779e-02, +-7.36981272290610500697e-02, +-7.10464877340710454501e-02, +-6.83861812951113146042e-02, +-6.57183351514422919859e-02, +-6.30440708926501142129e-02, +-6.03645041047437408421e-02, +-5.76807440198948140342e-02, +-5.49938931699267691267e-02, +-5.23050470436661057994e-02, +-4.96152937482609926456e-02, +-4.69257136745778041798e-02, +-4.42373791667729082677e-02, +-4.15513541961495605492e-02, +-3.88686940393953503370e-02, +-3.61904449613011935938e-02, +-3.35176439020573244121e-02, +-3.08513181692228674602e-02, +-2.81924851344595717162e-02, +-2.55421519351213023585e-02, +-2.29013151807887539724e-02, +-2.02709606648342685609e-02, +-1.76520630811025022733e-02, +-1.50455857457888787787e-02, +-1.24524803245954687053e-02, +-9.87368656524285036313e-03, +-7.31013203541311037958e-03, +-4.76273186619807602227e-03, +-2.23238850112297869746e-03, + 2.80008549183706099625e-04, + 2.77358294660976899965e-03, + 5.24747175940274562800e-03, + 7.70082569017439908660e-03, + 1.01328092980087648006e-02, + 1.25426012146140665460e-02, + 1.49293943544662570388e-02, + 1.72923961188884665885e-02, + 1.96308285940195309527e-02, + 2.19439287426209730936e-02, + 2.42309485896793734561e-02, + 2.64911554017603391442e-02, + 2.87238318600733545660e-02, + 3.09282762272103349532e-02, + 3.31038025075217068327e-02, + 3.52497406010981520486e-02, + 3.73654364513253609004e-02, + 3.94502521859858221176e-02, + 4.15035662518817155542e-02, + 4.35247735429537541130e-02, + 4.55132855218787699125e-02, + 4.74685303351244439196e-02, + 4.93899529214478216765e-02, + 5.12770151138242716304e-02, + 5.31291957347935772660e-02, + 5.49459906852194576721e-02, + 5.67269130264521220797e-02, + 5.84714930558940249039e-02, + 6.01792783759655322551e-02, + 6.18498339564735599705e-02, + 6.34827421903864652641e-02, + 6.50776029430226859995e-02, + 6.66340335946605799577e-02, + 6.81516690765814614483e-02, + 6.96301619005592065115e-02, + 7.10691821818139612965e-02, + 7.24684176554465098175e-02, + 7.38275736863740761340e-02, + 7.51463732727930683319e-02, + 7.64245570431912463194e-02, + 7.76618832469397474272e-02, + 7.88581277384926976337e-02, + 8.00130839552289779837e-02, + 8.11265628889681067459e-02, + 8.21983930512013155623e-02, + 8.32284204320703352442e-02, + 8.42165084531432683868e-02, + 8.51625379140240473808e-02, + 8.60664069328434949702e-02, + 8.69280308806818224898e-02, + 8.77473423099686122839e-02, + 8.85242908769151987114e-02, + 8.92588432580306151420e-02, + 8.99509830607803234637e-02, + 9.06007107284422380511e-02, + 9.12080434392217309636e-02, + 9.17730149996878741270e-02, + 9.22956757325926607782e-02, + 9.27760923591415126443e-02, + 9.32143478757788968014e-02, + 9.36105414255621187669e-02, + 9.39647881641913207407e-02, + 9.42772191207702781046e-02, + 9.45479810533706027664e-02, + 9.47772362994778183598e-02, + 9.49651626213951355338e-02, + 9.51119530466846413441e-02, + 9.52178157037280176178e-02, + 9.52829736524876819148e-02, + 9.53076647105531166160e-02, + 9.52921412745576373871e-02, + 9.52366701370536278271e-02, + 9.51415322989309503177e-02, + 9.50070227774735681647e-02, + 9.48334504101390751707e-02, + 9.46211376541590265532e-02, + 9.43704203820504156086e-02, + 9.40816476731309581094e-02, + 9.37551816011396865758e-02, + 9.33913970180541563870e-02, + 9.29906813342047527948e-02, + 9.25534342947849225647e-02, + 9.20800677528557931506e-02, + 9.15710054389489019888e-02, + 9.10266827273659706599e-02, + 9.04475463992783224043e-02, + 8.98340544027328158361e-02, + 8.91866756096650198371e-02, + 8.85058895700238101867e-02, + 8.77921862631190763615e-02, + 8.70460658462897246546e-02, + 8.62680384010083983748e-02, + 8.54586236765221690659e-02, + 8.46183508311429133375e-02, + 8.37477581712920277068e-02, + 8.28473928884114751980e-02, + 8.19178107938471483651e-02, + 8.09595760518180135312e-02, + 7.99732609105757996648e-02, + 7.89594454318716387764e-02, + 7.79187172188340326784e-02, + 7.68516711423724852015e-02, + 7.57589090662164482692e-02, + 7.46410395707000073884e-02, + 7.34986776754032733461e-02, + 7.23324445607601979047e-02, + 7.11429672887474440213e-02, + 6.99308785227581580779e-02, + 6.86968162467783832748e-02, + 6.74414234839716131287e-02, + 6.61653480147834510694e-02, + 6.48692420946761771905e-02, + 6.35537621716019962559e-02, + 6.22195686033254202751e-02, + 6.08673253747022482973e-02, + 5.94976998150253330588e-02, + 5.81113623155428762890e-02, + 5.67089860472591994478e-02, + 5.52912466791220663653e-02, + 5.38588220967053943333e-02, + 5.24123921214928872869e-02, + 5.09526382308646275110e-02, + 4.94802432788957607945e-02, + 4.79958912180662375380e-02, + 4.65002668219884549017e-02, + 4.49940554092515265783e-02, + 4.34779425684853407241e-02, + 4.19526138847447563340e-02, + 4.04187546673120054463e-02, + 3.88770496790168534895e-02, + 3.73281828671714888124e-02, + 3.57728370962169389680e-02, + 3.42116938821758476141e-02, + 3.26454331290065291604e-02, + 3.10747328669506231447e-02, + 2.95002689929673225788e-02, + 2.79227150133440210622e-02, + 2.63427417885741359249e-02, + 2.47610172805882329528e-02, + 2.31782063024293799591e-02, + 2.15949702704538760989e-02, + 2.00119669591453143431e-02, + 1.84298502586232419709e-02, + 1.68492699349288496680e-02, + 1.52708713931675090641e-02, + 1.36952954435869880129e-02, + 1.21231780706691841254e-02, + 1.05551502053105091677e-02, + 8.99183750016553651196e-03, + 7.43386010822696258193e-03, + 5.88183246471273707412e-03, + 4.33636307232945251988e-03, + 2.79805428998205086427e-03, + 1.26750212499337003291e-03, +-2.54703971099550386531e-04, +-1.76798130311027175757e-03, +-3.27175412906725469539e-03, +-4.76545385331804925710e-03, +-6.24851921581533794464e-03, +-7.72039647752874400727e-03, +-9.18053960192777122884e-03, +-1.06284104324833178490e-02, +-1.20634788661366718077e-02, +-1.34852230226875247771e-02, +-1.48931294100519973078e-02, +-1.62866930853476296615e-02, +-1.76654178117594401476e-02, +-1.90288162111466874205e-02, +-2.03764099123495759369e-02, +-2.17077296951579609696e-02, +-2.30223156299061669505e-02, +-2.43197172126588360974e-02, +-2.55994934959561624976e-02, +-2.68612132150869431513e-02, +-2.81044549098614510063e-02, +-2.93288070418574950415e-02, +-3.05338681071131295974e-02, +-3.17192467442452205595e-02, +-3.28845618379712614776e-02, +-3.40294426180154721551e-02, +-3.51535287533818185945e-02, +-3.62564704419792716017e-02, +-3.73379284955845242022e-02, +-3.83975744201309962533e-02, +-3.94350904913155775322e-02, +-4.04501698255130062720e-02, +-4.14425164459938585870e-02, +-4.24118453444415760556e-02, +-4.33578825377650758921e-02, +-4.42803651202084772032e-02, +-4.51790413107587551789e-02, +-4.60536704958539877541e-02, +-4.69040232673985507672e-02, +-4.77298814560914094751e-02, +-4.85310381600771723054e-02, +-4.93072977689298017068e-02, +-5.00584759829825892696e-02, +-5.07843998280173986037e-02, +-5.14849076653303427964e-02, +-5.21598491971914657306e-02, +-5.28090854677170859488e-02, +-5.34324888591782357072e-02, +-5.40299430837655400572e-02, +-5.46013431708381041796e-02, +-5.51465954496810906171e-02, +-5.56656175277993395256e-02, +-5.61583382647804357779e-02, +-5.66246977417538960298e-02, +-5.70646472264832865795e-02, +-5.74781491341238848225e-02, +-5.78651769836829588112e-02, +-5.82257153502198851469e-02, +-5.85597598128258789441e-02, +-5.88673168984241990120e-02, +-5.91484040214318093631e-02, +-5.94030494193287308957e-02, +-5.96312920841784027681e-02, +-5.98331816901454746627e-02, +-6.00087785170606569096e-02, +-6.01581533700810480725e-02, +-6.02813874954959694197e-02, +-6.03785724927326447609e-02, +-6.04498102226119424230e-02, +-6.04952127119116611631e-02, +-6.05149020542914278797e-02, +-6.05090103076376881197e-02, +-6.04776793878847099273e-02, +-6.04210609593744951695e-02, +-6.03393163218124903291e-02, +-6.02326162938837256222e-02, +-6.01011410935896536745e-02, +-5.99450802153716350018e-02, +-5.97646323040843391317e-02, +-5.95600050258849322837e-02, +-5.93314149361059764431e-02, +-5.90790873441773764507e-02, +-5.88032561756684640786e-02, +-5.85041638315173181950e-02, +-5.81820610445198463379e-02, +-5.78372067331465664064e-02, +-5.74698678527617162759e-02, +-5.70803192443151696800e-02, +-5.66688434805820984153e-02, +-5.62357307100216502471e-02, +-5.57812784983319834287e-02, +-5.53057916677746758127e-02, +-5.48095821343453915020e-02, +-5.42929687428649263015e-02, +-5.37562771000702349644e-02, +-5.31998394057807341695e-02, +-5.26239942822169029513e-02, +-5.20290866015511582754e-02, +-5.14154673117670768523e-02, +-5.07834932609073572141e-02, +-5.01335270197884388943e-02, +-4.94659367032617980353e-02, +-4.87810957901005926018e-02, +-4.80793829415919610204e-02, +-4.73611818189140221236e-02, +-4.66268808993793651418e-02, +-4.58768732916221277929e-02, +-4.51115565498113532672e-02, +-4.43313324869706107401e-02, +-4.35366069874822472774e-02, +-4.27277898188581847783e-02, +-4.19052944428566706558e-02, +-4.10695378260253277092e-02, +-4.02209402497498702544e-02, +-3.93599251198885058400e-02, +-3.84869187760717781921e-02, +-3.76023503007467674308e-02, +-3.67066513280452297319e-02, +-3.58002558525536487832e-02, +-3.48836000380640318119e-02, +-3.39571220263849699039e-02, +-3.30212617462878818553e-02, +-3.20764607226682249563e-02, +-3.11231618859974003277e-02, +-3.01618093821427596390e-02, +-2.91928483826300218251e-02, +-2.82167248954252464221e-02, +-2.72338855763107207109e-02, +-2.62447775409285488646e-02, +-2.52498481775659533444e-02, +-2.42495449607560524530e-02, +-2.32443152657647901516e-02, +-2.22346061840382018537e-02, +-2.12208643396787077773e-02, +-2.02035357070221716080e-02, +-1.91830654293842946256e-02, +-1.81598976390459701524e-02, +-1.71344752785447841659e-02, +-1.61072399233397958729e-02, +-1.50786316059164128556e-02, +-1.40490886413957953571e-02, +-1.30190474547137412242e-02, +-1.19889424094323342185e-02, +-1.09592056382471266657e-02, +-9.93026687525074697183e-03, +-8.90255329001433948211e-03, +-7.87648932354562125724e-03, +-6.85249652618241146540e-03, +-5.83099339747908569642e-03, +-4.81239522814202146106e-03, +-3.79711394406930576734e-03, +-2.78555795254968683455e-03, +-1.77813199067227692071e-03, +-7.75236976000132386663e-04, + 2.22730140442126654798e-04, + 1.21537651881706244492e-03, + 2.20231357271108733539e-03, + 3.18315710891246220898e-03, + 4.15752746468348553799e-03, + 5.12504964248380791986e-03, + 6.08535344210042478813e-03, + 7.03807359014245199208e-03, + 7.98284986685961206465e-03, + 8.91932723024580452476e-03, + 9.84715593738785290034e-03, + 1.07659916630240357766e-02, + 1.16754956152756248638e-02, + 1.25753346485176220604e-02, + 1.34651813733560731662e-02, + 1.43447142636787781933e-02, + 1.52136177607511777904e-02, + 1.60715823743268690360e-02, + 1.69183047807457617728e-02, + 1.77534879179936204430e-02, + 1.85768410776981605925e-02, + 1.93880799940382604618e-02, + 2.01869269295435888045e-02, + 2.09731107577651766649e-02, + 2.17463670427963037812e-02, + 2.25064381156266125894e-02, + 2.32530731473125917841e-02, + 2.39860282189490944815e-02, + 2.47050663884288181082e-02, + 2.54099577539762186418e-02, + 2.61004795144461655687e-02, + 2.67764160263764816605e-02, + 2.74375588577874841845e-02, + 2.80837068387202806741e-02, + 2.87146661085097808230e-02, + 2.93302501597869115513e-02, + 2.99302798792087168533e-02, + 3.05145835849139068774e-02, + 3.10829970607048658437e-02, + 3.16353635869560598226e-02, + 3.21715339682534032240e-02, + 3.26913665577675052742e-02, + 3.31947272783659833029e-02, + 3.36814896404726560331e-02, + 3.41515347566807569990e-02, + 3.46047513531298478462e-02, + 3.50410357776568884280e-02, + 3.54602920047340924858e-02, + 3.58624316372060172875e-02, + 3.62473739048404727803e-02, + 3.66150456597097023748e-02, + 3.69653813684179058385e-02, + 3.72983231011940682964e-02, + 3.76138205178691634178e-02, + 3.79118308507581658340e-02, + 3.81923188844700278732e-02, + 3.84552569326661666804e-02, + 3.87006248117945095277e-02, + 3.89284098118221136287e-02, + 3.91386066639944005252e-02, + 3.93312175056476295842e-02, + 3.95062518421033306848e-02, + 3.96637265056755394799e-02, + 3.98036656118202977761e-02, + 3.99261005124597820326e-02, + 4.00310697465144360585e-02, + 4.01186189876763035778e-02, + 4.01888009894591641258e-02, + 4.02416755275608953313e-02, + 4.02773093395744422041e-02, + 4.02957760620868618573e-02, + 4.02971561652026855072e-02, + 4.02815368845340013304e-02, + 4.02490121506946865737e-02, + 4.01996825163432602857e-02, + 4.01336550808131173329e-02, + 4.00510434123766412284e-02, + 3.99519674681838021790e-02, + 3.98365535119223901361e-02, + 3.97049340292425986809e-02, + 3.95572476409943238340e-02, + 3.93936390143226622396e-02, + 3.92142587716682866628e-02, + 3.90192633977227906761e-02, + 3.88088151443859719070e-02, + 3.85830819337740632546e-02, + 3.83422372593309676581e-02, + 3.80864600850902706997e-02, + 3.78159347431409609275e-02, + 3.75308508293468318096e-02, + 3.72314030973733209318e-02, + 3.69177913510723085255e-02, + 3.65902203352790472701e-02, + 3.62488996250740352911e-02, + 3.58940435135636018438e-02, + 3.55258708982338911042e-02, + 3.51446051659309519066e-02, + 3.47504740765239503175e-02, + 3.43437096453047957523e-02, + 3.39245480241803926136e-02, + 3.34932293817127510471e-02, + 3.30499977820627663383e-02, + 3.25951010628938789293e-02, + 3.21287907122915217251e-02, + 3.16513217447548164674e-02, + 3.11629525763171093267e-02, + 3.06639448988514501382e-02, + 3.01545635536184866710e-02, + 2.96350764041116987446e-02, + 2.91057542082603579181e-02, + 2.85668704900414009706e-02, + 2.80187014105628129368e-02, + 2.74615256386703497637e-02, + 2.68956242211381771345e-02, + 2.63212804524964143205e-02, + 2.57387797445546746833e-02, + 2.51484094956766456030e-02, + 2.45504589598617914414e-02, + 2.39452191156906725455e-02, + 2.33329825351894608321e-02, + 2.27140432526683408443e-02, + 2.20886966335908999093e-02, + 2.14572392435271874778e-02, + 2.08199687172471933905e-02, + 2.01771836280079629178e-02, + 1.95291833570884962312e-02, + 1.88762679636269269101e-02, + 1.82187380548123403767e-02, + 1.75568946564845403124e-02, + 1.68910390841945853846e-02, + 1.62214728147774996103e-02, + 1.55484973584896369464e-02, + 1.48724141317607399387e-02, + 1.41935243306124080076e-02, + 1.35121288047925294795e-02, + 1.28285279326754275003e-02, + 1.21430214969758445281e-02, + 1.14559085613274869858e-02, + 1.07674873477713456404e-02, + 1.00780551152029641815e-02, + 9.38790803882408146641e-03, + 8.69734109064560119429e-03, + 8.00664792108640895052e-03, + 7.31612074171312902482e-03, + 6.62605020916498532735e-03, + 5.93672531030635993593e-03, + 5.24843324865020312286e-03, + 4.56145933209378684481e-03, + 3.87608686200798923521e-03, + 3.19259702372048361982e-03, + 2.51126877843176705626e-03, + 1.83237875660391988202e-03, + 1.15620115285868549186e-03, + 4.83007622422852007059e-04, +-1.86932820843070034112e-04, +-8.53353904797455329115e-04, +-1.51599219771675255281e-03, +-2.17458720530792556924e-03, +-2.82888146600037857989e-03, +-3.47862064448672828401e-03, +-4.12355362347965707925e-03, +-4.76343259365718217635e-03, +-5.39801314176371720144e-03, +-6.02705433684159932323e-03, +-6.65031881456398799024e-03, +-7.26757285964317947813e-03, +-7.87858648628854928153e-03, +-8.48313351669007821576e-03, +-9.08099165750268083608e-03, +-9.67194257431004678072e-03, +-1.02557719640449674509e-02, +-1.08322696253466653482e-02, +-1.14012295268339416271e-02, +-1.19624498732761111452e-02, +-1.25157331696445651287e-02, +-1.30608862830260651078e-02, +-1.35977205023845738180e-02, +-1.41260515961539080687e-02, +-1.46456998676501564532e-02, +-1.51564902082884610246e-02, +-1.56582521485937077588e-02, +-1.61508199069943896020e-02, +-1.66340324363880263936e-02, +-1.71077334684716746149e-02, +-1.75717715558275228149e-02, +-1.80260001117568194329e-02, +-1.84702774478586080609e-02, +-1.89044668093441003975e-02, +-1.93284364080869922042e-02, +-1.97420594534034529732e-02, +-2.01452141805614354242e-02, +-2.05377838770183090977e-02, +-2.09196569063852221004e-02, +-2.12907267301215390176e-02, +-2.16508919269584217127e-02, +-2.20000562100566773860e-02, +-2.23381284419012192399e-02, +-2.26650226469371808558e-02, +-2.29806580219539050014e-02, +-2.32849589442222955349e-02, +-2.35778549773940013234e-02, +-2.38592808751701725145e-02, +-2.41291765827496146324e-02, +-2.43874872360661625048e-02, +-2.46341631588262027774e-02, +-2.48691598573592027865e-02, +-2.50924380132932847709e-02, +-2.53039634740697960691e-02, +-2.55037072413113186098e-02, +-2.56916454570593408291e-02, +-2.58677593878966008423e-02, +-2.60320354069717534162e-02, +-2.61844649739453247395e-02, +-2.63250446128731642459e-02, +-2.64537758880496950975e-02, +-2.65706653778289558776e-02, +-2.66757246464459155111e-02, +-2.67689702138592805492e-02, +-2.68504235236379437679e-02, +-2.69201109089152179621e-02, +-2.69780635564342181898e-02, +-2.70243174687087896191e-02, +-2.70589134243261995871e-02, +-2.70818969364167577707e-02, +-2.70933182093176481986e-02, +-2.70932320934577017257e-02, +-2.70816980384915410862e-02, +-2.70587800447114543156e-02, +-2.70245466127663376554e-02, +-2.69790706917171427270e-02, +-2.69224296254590607369e-02, +-2.68547050975419879237e-02, +-2.67759830744198866481e-02, +-2.66863537471611969587e-02, +-2.65859114716531889921e-02, +-2.64747547073322930800e-02, +-2.63529859544745573285e-02, +-2.62207116900796607939e-02, +-2.60780423023825730366e-02, +-2.59250920240284947471e-02, +-2.57619788639449828760e-02, +-2.55888245379471308827e-02, +-2.54057543981124761556e-02, +-2.52128973609604678519e-02, +-2.50103858344739478359e-02, +-2.47983556439997539222e-02, +-2.45769459570643403201e-02, +-2.43462992071435090080e-02, +-2.41065610164222128564e-02, +-2.38578801175844575078e-02, +-2.36004082746693114037e-02, +-2.33343002030331689300e-02, +-2.30597134884559483436e-02, +-2.27768085054302904524e-02, +-2.24857483346725776918e-02, +-2.21866986798954189675e-02, +-2.18798277838799307138e-02, +-2.15653063438876642366e-02, +-2.12433074264517691987e-02, +-2.09140063815867055519e-02, +-2.05775807564556566243e-02, +-2.02342102085360346642e-02, +-1.98840764183222142025e-02, +-1.95273630016047500257e-02, +-1.91642554213670816832e-02, +-1.87949408993371563925e-02, +-1.84196083272362247374e-02, +-1.80384481777610752862e-02, +-1.76516524153425696797e-02, +-1.72594144067167720724e-02, +-1.68619288313498413845e-02, +-1.64593915917550098760e-02, +-1.60519997237402040069e-02, +-1.56399513066264282679e-02, +-1.52234453734734331148e-02, +-1.48026818213531103502e-02, +-1.43778613217079923037e-02, +-1.39491852308316760523e-02, +-1.35168555005115483686e-02, +-1.30810745888681710658e-02, +-1.26420453714316226301e-02, +-1.21999710524887047813e-02, +-1.17550550767402828961e-02, +-1.13075010413035727252e-02, +-1.08575126080952908542e-02, +-1.04052934166326063736e-02, +-9.95104699728536351566e-03, +-9.49497668501652312967e-03, +-9.03728553364356763933e-03, +-8.57817623065582068875e-03, +-8.11785101262214349449e-03, +-7.65651158122056946231e-03, +-7.19435901992488725798e-03, +-6.73159371137851351291e-03, +-6.26841525548942068990e-03, +-5.80502238827697216589e-03, +-5.34161290150089295564e-03, +-4.87838356310490647849e-03, +-4.41553003850264462471e-03, +-3.95324681273798422126e-03, +-3.49172711354636287548e-03, +-3.03116283534747218975e-03, +-2.57174446419663202748e-03, +-2.11366100372138449731e-03, +-1.65709990207213789248e-03, +-1.20224697991074881177e-03, +-7.49286359465203312402e-04, +-2.98400394673150758020e-04, + 1.50230397559290287587e-04, + 5.96427404960260163468e-04, + 1.04001398633389997676e-03, + 1.48081553681653948010e-03, + 1.91865955192711671630e-03, + 2.35337569038958404136e-03, + 2.78479583570576333731e-03, + 3.21275415646031688166e-03, + 3.63708716533605539573e-03, + 4.05763377682291995208e-03, + 4.47423536360066955581e-03, + 4.88673581157838838457e-03, + 5.29498157357465894235e-03, + 5.69882172162047926506e-03, + 6.09810799787139853900e-03, + 6.49269486411187517899e-03, + 6.88243954983998491859e-03, + 7.26720209891677272618e-03, + 7.64684541476874993227e-03, + 8.02123530413159993580e-03, + 8.39024051932213063565e-03, + 8.75373279902990839019e-03, + 9.11158690761618844656e-03, + 9.46368067291306243327e-03, + 9.80989502251233651264e-03, + 1.01501140185368699670e-02, + 1.04842248908878447194e-02, + 1.08121180689596009528e-02, + 1.11336872118183785596e-02, + 1.14488292368375710328e-02, + 1.17574443467867335855e-02, + 1.20594360553697797084e-02, + 1.23547112112087492664e-02, + 1.26431800202723137322e-02, + 1.29247560667452802280e-02, + 1.31993563323394361153e-02, + 1.34669012140451026943e-02, + 1.37273145403230718842e-02, + 1.39805235857388930609e-02, + 1.42264590840399576116e-02, + 1.44650552396788801418e-02, + 1.46962497377853603536e-02, + 1.49199837525900817770e-02, + 1.51362019543059365262e-02, + 1.53448525144697818512e-02, + 1.55458871097522988158e-02, + 1.57392609242401407266e-02, + 1.59249326501989980909e-02, + 1.61028644873237487822e-02, + 1.62730221404839558996e-02, + 1.64353748159745995105e-02, + 1.65898952162792344411e-02, + 1.67365595333573702330e-02, + 1.68753474404654685292e-02, + 1.70062420825228405308e-02, + 1.71292300650343690127e-02, + 1.72443014415816948948e-02, + 1.73514496998961910423e-02, + 1.74506717465267233158e-02, + 1.75419678901157470585e-02, + 1.76253418232991503067e-02, + 1.77008006032431768062e-02, + 1.77683546308354950449e-02, + 1.78280176285450023266e-02, + 1.78798066169677284665e-02, + 1.79237418900749095885e-02, + 1.79598469891815541721e-02, + 1.79881486756524357207e-02, + 1.80086769023645003329e-02, + 1.80214647839439801036e-02, + 1.80265485657978320744e-02, + 1.80239675919585257136e-02, + 1.80137642717629609113e-02, + 1.79959840453853894826e-02, + 1.79706753482452019632e-02, + 1.79378895743111561878e-02, + 1.78976810383233188306e-02, + 1.78501069369546815080e-02, + 1.77952273089348571300e-02, + 1.77331049941585293384e-02, + 1.76638055918014250101e-02, + 1.75873974174670689996e-02, + 1.75039514593883366311e-02, + 1.74135413337067820883e-02, + 1.73162432388551425222e-02, + 1.72121359090659648006e-02, + 1.71013005670323306462e-02, + 1.69838208757447130248e-02, + 1.68597828895295613616e-02, + 1.67292750043147309125e-02, + 1.65923879071472879509e-02, + 1.64492145249898746862e-02, + 1.62998499728209574056e-02, + 1.61443915010654574782e-02, + 1.59829384423819872985e-02, + 1.58155921578329479449e-02, + 1.56424559824643004402e-02, + 1.54636351703211580993e-02, + 1.52792368389266484952e-02, + 1.50893699132506348831e-02, + 1.48941450691946284529e-02, + 1.46936746766213478105e-02, + 1.44880727419542387757e-02, + 1.42774548503756936596e-02, + 1.40619381076500047506e-02, + 1.38416410815988405458e-02, + 1.36166837432563775367e-02, + 1.33871874077307433104e-02, + 1.31532746747999255282e-02, + 1.29150693692685249875e-02, + 1.26726964811125480254e-02, + 1.24262821054400597609e-02, + 1.21759533822933443264e-02, + 1.19218384363212748234e-02, + 1.16640663163469111840e-02, + 1.14027669348586990772e-02, + 1.11380710074510391738e-02, + 1.08701099922405512027e-02, + 1.05990160292857588803e-02, + 1.03249218800347264402e-02, + 1.00479608668283364181e-02, + 9.76826681248407595326e-03, + 9.48597397998680001707e-03, + 9.20121701231205180171e-03, + 8.91413087240663405686e-03, + 8.62485078335300560382e-03, + 8.33351216874106057175e-03, + 8.04025059327335284154e-03, + 7.74520170362733365033e-03, + 7.44850116959968472363e-03, + 7.15028462555652392224e-03, + 6.85068761221313375642e-03, + 6.54984551876693164157e-03, + 6.24789352540736173808e-03, + 5.94496654622468298501e-03, + 5.64119917254172174859e-03, + 5.33672561668945780872e-03, + 5.03167965625017643561e-03, + 4.72619457878821046942e-03, + 4.42040312709122713147e-03, + 4.11443744494245557813e-03, + 3.80842902344421868274e-03, + 3.50250864791438413365e-03, + 3.19680634537424174582e-03, + 2.89145133264915015631e-03, + 2.58657196509964968506e-03, + 2.28229568600325869593e-03, + 1.97874897660506266980e-03, + 1.67605730685465247574e-03, + 1.37434508684857771554e-03, + 1.07373561899400072825e-03, + 7.74351050912206037222e-04, + 4.76312329096932108620e-04, + 1.79739153344913828647e-04, +-1.15250068026150436743e-04, +-4.08538262157430215240e-04, +-7.00009734810518881830e-04, +-9.89550212697529359140e-04, +-1.27704688496522110984e-03, +-1.56238844381914230262e-03, +-1.84546512427596291067e-03, +-2.12616874302977649017e-03, +-2.40439273642179809562e-03, +-2.68003219750039467159e-03, +-2.95298391216083011210e-03, +-3.22314639435426720723e-03, +-3.49041992035452591087e-03, +-3.75470656207426648626e-03, +-4.01591021941965966441e-03, +-4.27393665167596914500e-03, +-4.52869350791463860101e-03, +-4.78009035641408387002e-03, +-5.02803871308742881402e-03, +-5.27245206890878791856e-03, +-5.51324591633307794364e-03, +-5.75033777470175880286e-03, +-5.98364721463032038506e-03, +-6.21309588137129026331e-03, +-6.43860751714846711591e-03, +-6.66010798245885143193e-03, +-6.87752527633716734257e-03, +-7.09078955558135361203e-03, +-7.29983315293484570641e-03, +-7.50459059422442856246e-03, +-7.70499861445137022159e-03, +-7.90099617283428028169e-03, +-8.09252446680348673513e-03, +-8.27952694494581836748e-03, +-8.46194931890021165288e-03, +-8.63973957420479179992e-03, +-8.81284798009584514900e-03, +-8.98122709826090423468e-03, +-9.14483179054685624276e-03, +-9.30361922562642808254e-03, +-9.45754888462495800494e-03, +-9.60658256571109842037e-03, +-9.75068438765514661215e-03, +-9.88982079235872779677e-03, +-1.00239605463608785763e-02, +-1.01530747413246837108e-02, +-1.02771367935108499936e-02, +-1.03961224422430293518e-02, +-1.05100097473716045521e-02, +-1.06187790857425311958e-02, +-1.07224131466778661165e-02, +-1.08208969264758890494e-02, +-1.09142177219381259629e-02, +-1.10023651229317290939e-02, +-1.10853310039956218930e-02, +-1.11631095149994884197e-02, +-1.12356970708646971419e-02, +-1.13030923403568215463e-02, +-1.13652962339602110059e-02, +-1.14223118908440956359e-02, +-1.14741446649318026840e-02, +-1.15208021100836454503e-02, +-1.15622939644049946284e-02, +-1.15986321336910645080e-02, +-1.16298306740207010868e-02, +-1.16559057735113307669e-02, +-1.16768757332475214827e-02, +-1.16927609473963332182e-02, +-1.17035838825226608945e-02, +-1.17093690561177760784e-02, +-1.17101430143551586693e-02, +-1.17059343090872795129e-02, +-1.16967734740980097013e-02, +-1.16826930006248379257e-02, +-1.16637273121658596037e-02, +-1.16399127385864407935e-02, +-1.16112874895409699111e-02, +-1.15778916272246922003e-02, +-1.15397670384720374415e-02, +-1.14969574062164479888e-02, +-1.14495081803284975280e-02, +-1.13974665478479546959e-02, +-1.13408814026266253211e-02, +-1.12798033143984600957e-02, +-1.12142844972935168402e-02, +-1.11443787778127377519e-02, +-1.10701415622809114236e-02, +-1.09916298037944538957e-02, +-1.09089019686816925125e-02, +-1.08220180024931385970e-02, +-1.07310392955389764802e-02, +-1.06360286479915983754e-02, +-1.05370502345710423397e-02, +-1.04341695688310136247e-02, +-1.03274534670632443106e-02, +-1.02169700118386209270e-02, +-1.01027885152025192345e-02, +-9.98497948154308812008e-03, +-9.86361457015006402871e-03, +-9.73876655748246930488e-03, +-9.61050929916365190286e-03, +-9.47891769172138146105e-03, +-9.34406763409175583623e-03, +-9.20603598890469380922e-03, +-9.06490054356958417647e-03, +-8.92073997117914622990e-03, +-8.77363379124968326139e-03, +-8.62366233031589164704e-03, +-8.47090668239862398803e-03, +-8.31544866936306283078e-03, +-8.15737080118616487978e-03, +-7.99675623615058242533e-03, +-7.83368874098351944402e-03, +-7.66825265095798756787e-03, +-7.50053282997436773782e-03, +-7.33061463064018075525e-03, +-7.15858385436481461928e-03, +-6.98452671148786126409e-03, +-6.80852978145714965441e-03, +-6.63067997307481386826e-03, +-6.45106448482760802543e-03, +-6.26977076531890029770e-03, +-6.08688647381931853542e-03, +-5.90249944095203298716e-03, +-5.71669762953000513278e-03, +-5.52956909556100162373e-03, +-5.34120194943696596085e-03, +-5.15168431732329797079e-03, +-4.96110430276443595266e-03, +-4.76954994852103134756e-03, +-4.57710919865432410564e-03, +-4.38386986087277181340e-03, +-4.18991956915663876782e-03, +-3.99534574667439676410e-03, +-3.80023556900675307108e-03, +-3.60467592769156538676e-03, +-3.40875339410503987864e-03, +-3.21255418369197943973e-03, +-3.01616412055992575564e-03, +-2.81966860245005685598e-03, +-2.62315256609809257030e-03, +-2.42670045299875130826e-03, +-2.23039617558575898118e-03, +-2.03432308384080993632e-03, +-1.83856393234277533909e-03, +-1.64320084776991355742e-03, +-1.44831529686655904529e-03, +-1.25398805488530435195e-03, +-1.06029917451672204415e-03, +-8.67327955316482155854e-04, +-6.75152913641518712638e-04, +-4.83851753104545291573e-04, +-2.93501335557769932588e-04, +-1.04177652615230481180e-04, + 8.40442022771478958144e-05, + 2.71090061213828637746e-04, + 4.56886708636217294885e-04, + 6.41361907564611910364e-04, + 8.24444425246958221068e-04, + 1.00606405821750295726e-03, + 1.18615165675600578790e-03, + 1.36463914874257485378e-03, + 1.54145956289825905236e-03, + 1.71654705140769636706e-03, + 1.88983691191461173828e-03, + 2.06126560888645086675e-03, + 2.23077079434063144103e-03, + 2.39829132792830895110e-03, + 2.56376729636941056573e-03, + 2.72714003223500402184e-03, + 2.88835213207216685155e-03, + 3.04734747386685260462e-03, + 3.20407123384176817371e-03, + 3.35846990258462183704e-03, + 3.51049130050470068257e-03, + 3.66008459261367522647e-03, + 3.80720030262936314294e-03, + 3.95179032639856198800e-03, + 4.09380794463911311387e-03, + 4.23320783499702736619e-03, + 4.36994608342004212803e-03, + 4.50398019484403704799e-03, + 4.63526910319382156461e-03, + 4.76377318069614620610e-03, + 4.88945424650618146178e-03, + 5.01227557464674778470e-03, + 5.13220190126144337750e-03, + 5.24919943118207308480e-03, + 5.36323584381190321402e-03, + 5.47428029832571112767e-03, + 5.58230343818897148389e-03, + 5.68727739499729628703e-03, + 5.78917579163970574818e-03, + 5.88797374478673089110e-03, + 5.98364786670789981782e-03, + 6.07617626642060343345e-03, + 6.16553855017385084303e-03, + 6.25171582127166582804e-03, + 6.33469067923863194541e-03, + 6.41444721833308011821e-03, + 6.49097102541174898749e-03, + 6.56424917715103632687e-03, + 6.63427023662958338657e-03, + 6.70102424927795491810e-03, + 6.76450273820044644529e-03, + 6.82469869887525251023e-03, + 6.88160659323871527759e-03, + 6.93522234316026366108e-03, + 6.98554332331408935064e-03, + 7.03256835345506155222e-03, + 7.07629769010476809138e-03, + 7.11673301765615093362e-03, + 7.15387743890304877992e-03, + 7.18773546500291789924e-03, + 7.21831300488032408247e-03, + 7.24561735407938580650e-03, + 7.26965718307318129604e-03, + 7.29044252503875406940e-03, + 7.30798476310635155423e-03, + 7.32229661709144288850e-03, + 7.33339212971884264747e-03, + 7.34128665234775375920e-03, + 7.34599683020745793799e-03, + 7.34754058715258225737e-03, + 7.34593710994830336597e-03, + 7.34120683209452638829e-03, + 7.33337141719967496728e-03, + 7.32245374191355016119e-03, + 7.30847787843014878861e-03, + 7.29146907657012011139e-03, + 7.27145374545387114529e-03, + 7.24845943477565521351e-03, + 7.22251481568945107037e-03, + 7.19364966131744686118e-03, + 7.16189482689201083881e-03, + 7.12728222954231872138e-03, + 7.08984482773655864257e-03, + 7.04961660039112210374e-03, + 7.00663252565801673161e-03, + 6.96092855940177307472e-03, + 6.91254161337735619636e-03, + 6.86150953312070904788e-03, + 6.80787107556324582597e-03, + 6.75166588638215301593e-03, + 6.69293447709806265528e-03, + 6.63171820193170571955e-03, + 6.56805923443159328512e-03, + 6.50200054388410785683e-03, + 6.43358587151825807998e-03, + 6.36285970651646794888e-03, + 6.28986726184373092646e-03, + 6.21465444990643503531e-03, + 6.13726785805332464285e-03, + 6.05775472392990760317e-03, + 5.97616291069856791357e-03, + 5.89254088213594148099e-03, + 5.80693767761965816410e-03, + 5.71940288701587758180e-03, + 5.62998662548002196115e-03, + 5.53873950818146131014e-03, + 5.44571262496510149348e-03, + 5.35095751496040238082e-03, + 5.25452614115022934027e-03, + 5.15647086491062122543e-03, + 5.05684442053339500839e-03, + 4.95569988974256699088e-03, + 4.85309067621648645985e-03, + 4.74907048012647350216e-03, + 4.64369327270371719946e-03, + 4.53701327084515566163e-03, + 4.42908491176951992635e-03, + 4.31996282773485212186e-03, + 4.20970182082771107734e-03, + 4.09835683783572966160e-03, + 3.98598294521311340144e-03, + 3.87263530415101094040e-03, + 3.75836914576165720403e-03, + 3.64323974638825019007e-03, + 3.52730240304928790995e-03, + 3.41061240902878646739e-03, + 3.29322502962129748730e-03, + 3.17519547804233142826e-03, + 3.05657889151338601694e-03, + 2.93743030753160130203e-03, + 2.81780464033296821486e-03, + 2.69775665755896121301e-03, + 2.57734095713514719389e-03, + 2.45661194437134461702e-03, + 2.33562380929147129019e-03, + 2.21443050420279223534e-03, + 2.09308572151161147862e-03, + 1.97164287179554201940e-03, + 1.85015506213867531038e-03, + 1.72867507473943343883e-03, + 1.60725534579748128607e-03, + 1.48594794468843234732e-03, + 1.36480455343317803527e-03, + 1.24387644646943291808e-03, + 1.12321447073277739387e-03, + 1.00286902605367005473e-03, + 8.82890045877847201225e-04, + 7.63326978315998568199e-04, + 6.44228767529792380013e-04, + 5.25643835459782418976e-04, + 4.07620063901896608968e-04, + 2.90204776937506045247e-04, + 1.73444723723805766706e-04, + 5.73860616484244659592e-05, +-5.79256601447129809831e-05, +-1.72445516855139978872e-04, +-2.86129223744603178401e-04, +-3.98933151471683798521e-04, +-5.10814341036775051638e-04, +-6.21730518333987194034e-04, +-7.31640108305292775383e-04, +-8.40502248693749103720e-04, +-9.48276803391555388537e-04, +-1.05492437538016840815e-03, +-1.16040631925863960139e-03, +-1.26468475335793167046e-03, +-1.36772257143744795961e-03, +-1.46948345396231690001e-03, +-1.56993187895820992227e-03, +-1.66903313244173671925e-03, +-1.76675331842487395514e-03, +-1.86305936849075486246e-03, +-1.95791905094055886799e-03, +-2.05130097950870097026e-03, +-2.14317462164644121497e-03, +-2.23351030637205421117e-03, +-2.32227923168745655630e-03, +-2.40945347156019864382e-03, +-2.49500598247101752769e-03, +-2.57891060952624437755e-03, +-2.66114209213571661222e-03, +-2.74167606925580006200e-03, +-2.82048908419860059130e-03, +-2.89755858900738426376e-03, +-2.97286294839969704451e-03, +-3.04638144327833843006e-03, +-3.11809427381250833106e-03, +-3.18798256208930414976e-03, +-3.25602835433819615824e-03, +-3.32221462272949338845e-03, +-3.38652526674922864716e-03, +-3.44894511415224942069e-03, +-3.50945992149601917673e-03, +-3.56805637425754813494e-03, +-3.62472208653601482564e-03, +-3.67944560034401835918e-03, +-3.73221638449032109761e-03, +-3.78302483305743104600e-03, +-3.83186226347697993233e-03, +-3.87872091420681094562e-03, +-3.92359394201303914723e-03, +-3.96647541886111301701e-03, +-4.00736032841956212047e-03, +-4.04624456218095809173e-03, +-4.08312491520368761599e-03, +-4.11799908147960237043e-03, +-4.15086564893147550587e-03, +-4.18172409404541419592e-03, +-4.21057477614258761356e-03, +-4.23741893129556731340e-03, +-4.26225866589410255086e-03, +-4.28509694986558761776e-03, +-4.30593760955555893838e-03, +-4.32478532027361865092e-03, +-4.34164559851025946141e-03, +-4.35652479383043678834e-03, +-4.36943008044940375129e-03, +-4.38036944849687272935e-03, +-4.38935169497548655082e-03, +-4.39638641441941844384e-03, +-4.40148398925969356471e-03, +-4.40465557990201740657e-03, +-4.40591311452397972614e-03, +-4.40526927859759102890e-03, +-4.40273750414399336200e-03, +-4.39833195872687317957e-03, +-4.39206753419116562726e-03, +-4.38395983515392842489e-03, +-4.37402516725410826781e-03, +-4.36228052516814471251e-03, +-4.34874358039834783829e-03, +-4.33343266884099378305e-03, +-4.31636677814128347924e-03, +-4.29756553484226828249e-03, +-4.27704919133478460302e-03, +-4.25483861261575103258e-03, +-4.23095526286197242544e-03, +-4.20542119182673330285e-03, +-4.17825902106652539991e-03, +-4.14949193000528453179e-03, +-4.11914364184333848390e-03, +-4.08723840931864319803e-03, +-4.05380100032764340012e-03, +-4.01885668341308427420e-03, +-3.98243121312639048598e-03, +-3.94455081527187324114e-03, +-3.90524217204034265055e-03, +-3.86453240703949710971e-03, +-3.82244907022857112119e-03, +-3.77902012276458334344e-03, +-3.73427392176791782957e-03, +-3.68823920501411533363e-03, +-3.64094507555994461798e-03, +-3.59242098631046497328e-03, +-3.54269672453505143905e-03, +-3.49180239633924225512e-03, +-3.43976841109999795926e-03, +-3.38662546587152699790e-03, +-3.33240452976901182711e-03, +-3.27713682833726460339e-03, +-3.22085382791172753977e-03, +-3.16358721997866921757e-03, +-3.10536890554190866259e-03, +-3.04623097950279270868e-03, +-2.98620571506079835605e-03, +-2.92532554814109750294e-03, +-2.86362306185669341502e-03, +-2.80113097101106212072e-03, +-2.73788210664884781517e-03, +-2.67390940066071719841e-03, +-2.60924587044905360173e-03, +-2.54392460366138209102e-03, +-2.47797874299740972931e-03, +-2.41144147109654920225e-03, +-2.34434599551184728525e-03, +-2.27672553377682423265e-03, +-2.20861329857108918892e-03, +-2.14004248299099744321e-03, +-2.07104624593109319652e-03, +-2.00165769758243626206e-03, +-1.93190988505322330110e-03, +-1.86183577811795423693e-03, +-1.79146825509988766485e-03, +-1.72084008889326943795e-03, +-1.64998393312966343087e-03, +-1.57893230849462818527e-03, +-1.50771758919912264932e-03, +-1.43637198961127387532e-03, +-1.36492755105304883201e-03, +-1.29341612876705033125e-03, +-1.22186937905778840625e-03, +-1.15031874661246304344e-03, +-1.07879545200534983015e-03, +-1.00733047939059738862e-03, +-9.35954564387392199190e-04, +-8.64698182161781326270e-04, +-7.93591535709335898878e-04, +-7.22664544342259342231e-04, +-6.51946832385152269008e-04, +-5.81467718082645003419e-04, +-5.11256202723101406751e-04, +-4.41340959980976682391e-04, +-3.71750325482115011495e-04, +-3.02512286594312090893e-04, +-2.33654472446860898751e-04, +-1.65204144181543805632e-04, +-9.71881854382950145007e-05, +-2.96330930778333087529e-05, + 3.74350318557888840534e-05, + 1.03990492930665522531e-04, + 1.70008006877860913661e-04, + 2.35462711895771908792e-04, + 3.00330175705594570618e-04, + 3.64586403356421419591e-04, + 4.28207844777551787079e-04, + 4.91171402077186748311e-04, + 5.53454436585029511952e-04, + 6.15034775638214118408e-04, + 6.75890719108685204992e-04, + 7.36001045671158494674e-04, + 7.95345018810736208159e-04, + 8.53902392568785988461e-04, + 9.11653417026953884206e-04, + 9.68578843528107927274e-04, + 1.02465992963409239201e-03, + 1.07987844381954517861e-03, + 1.13421666990184857697e-03, + 1.18765741120669863183e-03, + 1.24018399446962118877e-03, + 1.29178027347317181048e-03, + 1.34243063242041153760e-03, + 1.39211998904448393775e-03, + 1.44083379745542361494e-03, + 1.48855805072399061464e-03, + 1.53527928320389963832e-03, + 1.58098457259274222282e-03, + 1.62566154173287799080e-03, + 1.66929836015300469068e-03, + 1.71188374535185877309e-03, + 1.75340696382495094506e-03, + 1.79385783183615881223e-03, + 1.83322671593499951850e-03, + 1.87150453322187351919e-03, + 1.90868275136241117781e-03, + 1.94475338835288632730e-03, + 1.97970901203875114180e-03, + 2.01354273938795765367e-03, + 2.04624823552140497340e-03, + 2.07781971250251560127e-03, + 2.10825192788842950831e-03, + 2.13754018304492627786e-03, + 2.16568032122775241954e-03, + 2.19266872543273649843e-03, + 2.21850231601753312277e-03, + 2.24317854809751244041e-03, + 2.26669540871874157159e-03, + 2.28905141381085521987e-03, + 2.31024560492300908704e-03, + 2.33027754574556848419e-03, + 2.34914731842113299123e-03, + 2.36685551964774167771e-03, + 2.38340325657774047483e-03, + 2.39879214251553785076e-03, + 2.41302429241780800814e-03, + 2.42610231819949092105e-03, + 2.43802932384921434983e-03, + 2.44880890035772524199e-03, + 2.45844512046309356806e-03, + 2.46694253321619750424e-03, + 2.47430615837057783779e-03, + 2.48054148060029584083e-03, + 2.48565444354972896537e-03, + 2.48965144371932805070e-03, + 2.49253932419119233338e-03, + 2.49432536819870756192e-03, + 2.49501729254406187306e-03, + 2.49462324086802481049e-03, + 2.49315177677595679884e-03, + 2.49061187682437026880e-03, + 2.48701292337218105022e-03, + 2.48236469730101589823e-03, + 2.47667737060877201499e-03, + 2.46996149888082565729e-03, + 2.46222801364318543901e-03, + 2.45348821460201170497e-03, + 2.44375376177385136151e-03, + 2.43303666751100867299e-03, + 2.42134928842652587602e-03, + 2.40870431722312039469e-03, + 2.39511477443066006163e-03, + 2.38059400005651662299e-03, + 2.36515564515335941637e-03, + 2.34881366330883401689e-03, + 2.33158230206161314751e-03, + 2.31347609424828503169e-03, + 2.29450984928561332182e-03, + 2.27469864439260342423e-03, + 2.25405781575686164908e-03, + 2.23260294964972971082e-03, + 2.21034987349466626252e-03, + 2.18731464689328946802e-03, + 2.16351355261355186160e-03, + 2.13896308754443764677e-03, + 2.11367995362164717843e-03, + 2.08768104872860673846e-03, + 2.06098345757712827012e-03, + 2.03360444257223585765e-03, + 2.00556143466523338278e-03, + 1.97687202419953838434e-03, + 1.94755395175337346625e-03, + 1.91762509898370150235e-03, + 1.88710347947544372464e-03, + 1.85600722960030926380e-03, + 1.82435459938927956557e-03, + 1.79216394342290039413e-03, + 1.75945371174334418141e-03, + 1.72624244079242210488e-03, + 1.69254874437936271916e-03, + 1.65839130468247841071e-03, + 1.62378886328829906069e-03, + 1.58876021227249563002e-03, + 1.55332418532590395277e-03, + 1.51749964892962602506e-03, + 1.48130549358308134279e-03, + 1.44476062508820820261e-03, + 1.40788395589385340219e-03, + 1.37069439650360901800e-03, + 1.33321084695073701146e-03, + 1.29545218834344489506e-03, + 1.25743727448406820806e-03, + 1.21918492356532437090e-03, + 1.18071390994699786103e-03, + 1.14204295601606406994e-03, + 1.10319072413361980722e-03, + 1.06417580867146756643e-03, + 1.02501672814153568618e-03, + 9.85731917420752321024e-04, + 9.46339720074761028661e-04, + 9.06858380782653099826e-04, + 8.67306037865940180828e-04, + 8.27700715924154601863e-04, + 7.88060318579825755218e-04, + 7.48402621335140681366e-04, + 7.08745264542995573667e-04, + 6.69105746494616255432e-04, + 6.29501416626196083105e-04, + 5.89949468846577432593e-04, + 5.50466934988384673337e-04, + 5.11070678384569518186e-04, + 4.71777387572266644969e-04, + 4.32603570126133903009e-04, + 3.93565546622840108093e-04, + 3.54679444738640930936e-04, + 3.15961193481461178213e-04, + 2.77426517559644606348e-04, + 2.39090931888283949464e-04, + 2.00969736235134577339e-04, + 1.63078010007227617185e-04, + 1.25430607179671989044e-04, + 8.80421513676910678318e-05, + 5.09270310433270975443e-05, + 1.40993948977051206995e-05, +-2.24268526499689963992e-05, +-5.86380557959355767418e-05, +-9.45208115468090933828e-05, +-1.30061973765318488264e-04, +-1.65248657065980185041e-04, +-2.00068240560348736649e-04, +-2.34508371450769772170e-04, +-2.68556968472767403858e-04, +-3.02202225185153135114e-04, +-3.35432613107714699702e-04, +-3.68236884706315019053e-04, +-4.00604076224976460123e-04, +-4.32523510365022737217e-04, +-4.63984798811095579957e-04, +-4.94977844604242624843e-04, +-5.25492844361963827582e-04, +-5.55520290345540247376e-04, +-5.85050972374773735341e-04, +-6.14075979590610184985e-04, +-6.42586702065795259929e-04, +-6.70574832264203037069e-04, +-6.98032366349193725621e-04, +-7.24951605341828033552e-04, +-7.51325156129156322866e-04, +-7.77145932323820387393e-04, +-8.02407154975299293648e-04, +-8.27102353133903219450e-04, +-8.51225364268258727699e-04, +-8.74770334537431802288e-04, +-8.97731718918501797773e-04, +-9.20104281190827605862e-04, +-9.41883093778050233848e-04, +-9.63063537449165905750e-04, +-9.83641300879760935652e-04, +-1.00361238007481306557e-03, +-1.02297307765449128208e-03, +-1.04172000200423238610e-03, +-1.05985006629069969386e-03, +-1.07736048734502422482e-03, +-1.09424878441514257174e-03, +-1.11051277778848088776e-03, +-1.12615058728708443934e-03, +-1.14116063063659394818e-03, +-1.15554162171100749217e-03, +-1.16929256865495575027e-03, +-1.18241277188544584124e-03, +-1.19490182197486941203e-03, +-1.20675959741726535404e-03, +-1.21798626227982297217e-03, +-1.22858226374166065384e-03, +-1.23854832952187280184e-03, +-1.24788546519901061629e-03, +-1.25659495142406364872e-03, +-1.26467834102919943727e-03, +-1.27213745603428412742e-03, +-1.27897438455362244883e-03, +-1.28519147760499177768e-03, +-1.29079134582336268501e-03, +-1.29577685608154116216e-03, +-1.30015112802015094483e-03, +-1.30391753048923449490e-03, +-1.30707967790388737521e-03, +-1.30964142651636395419e-03, +-1.31160687060702277167e-03, +-1.31298033859659005196e-03, +-1.31376638908218385492e-03, +-1.31396980679961724973e-03, +-1.31359559851441281067e-03, +-1.31264898884408520024e-03, +-1.31113541601419526274e-03, +-1.30906052755070225271e-03, +-1.30643017591116055581e-03, +-1.30325041405731484843e-03, +-1.29952749097163636725e-03, +-1.29526784712039586857e-03, +-1.29047810986578645812e-03, +-1.28516508882973415524e-03, +-1.27933577121191956356e-03, +-1.27299731706460124078e-03, +-1.26615705452684046764e-03, +-1.25882247502064623448e-03, +-1.25100122841167137044e-03, +-1.24270111813698665680e-03, +-1.23393009630251375940e-03, +-1.22469625875265661526e-03, +-1.21500784011470538623e-03, +-1.20487320882053006339e-03, +-1.19430086210808427544e-03, +-1.18329942100529298017e-03, +-1.17187762529875026674e-03, +-1.16004432848981092231e-03, +-1.14780849274044756403e-03, +-1.13517918381147498753e-03, +-1.12216556599544479457e-03, +-1.10877689704675665670e-03, +-1.09502252311132830878e-03, +-1.08091187365826806380e-03, +-1.06645445641585442931e-03, +-1.05165985231426076241e-03, +-1.03653771043727446592e-03, +-1.02109774298538512859e-03, +-1.00534972025243104707e-03, +-9.89303465618205854493e-04, +-9.72968850559070386023e-04, +-9.56355789678956110487e-04, +-9.39474235762757228438e-04, +-9.22334174854466432199e-04, +-9.04945621361946477522e-04, +-8.87318613190598128385e-04, +-8.69463206907894578697e-04, +-8.51389472940857513876e-04, +-8.33107490808391681729e-04, +-8.14627344390523211622e-04, +-7.95959117236444131487e-04, +-7.77112887913182157074e-04, +-7.58098725396869001399e-04, +-7.38926684508335205812e-04, +-7.19606801394884719458e-04, +-7.00149089059903611230e-04, +-6.80563532942129469604e-04, +-6.60860086546161931871e-04, +-6.41048667125920334890e-04, +-6.21139151422514545521e-04, +-6.01141371458319205383e-04, +-5.81065110388481308873e-04, +-5.60920098411564179222e-04, +-5.40716008740645473485e-04, +-5.20462453636329636791e-04, +-5.00168980502928035153e-04, +-4.79845068049252442000e-04, +-4.59500122515179752151e-04, +-4.39143473965308969373e-04, +-4.18784372650737749064e-04, +-3.98431985440370181519e-04, +-3.78095392322528038760e-04, +-3.57783582978218623466e-04, +-3.37505453426840712917e-04, +-3.17269802745462131330e-04, +-2.97085329862539673351e-04, +-2.76960630426857884294e-04, +-2.56904193752789059696e-04, +-2.36924399842341755311e-04, +-2.17029516485020210204e-04, +-1.97227696436049984184e-04, +-1.77526974673721080374e-04, +-1.57935265736364822877e-04, +-1.38460361139671443579e-04, +-1.19109926874780676581e-04, +-9.98915009877096604120e-05, +-8.08124912404658787314e-05, +-6.18801728543761411219e-05, +-4.31016863358901726119e-05, +-2.44840353852607290751e-05, +-6.03408488822807525549e-06, + 1.22414410087942923482e-05, + 3.03359607401630166279e-05, + 4.82430370786643698930e-05, + 6.59563788094303331657e-05, + 8.34698423199615796228e-05, + 1.00777433106333784039e-04, + 1.17873307195481496850e-04, + 1.34751772483674884346e-04, + 1.51407289991337552218e-04, + 1.67834475034225882872e-04, + 1.84028098311239825778e-04, + 1.99983086909011169297e-04, + 2.15694525223608961004e-04, + 2.31157655799539194473e-04, + 2.46367880086458945071e-04, + 2.61320759113890506518e-04, + 2.76012014084471178285e-04, + 2.90437526885940853344e-04, + 3.04593340522622661477e-04, + 3.18475659466672001308e-04, + 3.32080849929764377465e-04, + 3.45405440055728798956e-04, + 3.58446120034815369788e-04, + 3.71199742140139986053e-04, + 3.83663320687053425832e-04, + 3.95834031916090828447e-04, + 4.07709213800306149479e-04, + 4.19286365777668133727e-04, + 4.30563148409382728376e-04, + 4.41537382964913725693e-04, + 4.52207050934656925797e-04, + 4.62570293470961546242e-04, + 4.72625410758635230730e-04, + 4.82370861315684551149e-04, + 4.91805261225328150740e-04, + 5.00927383300294468485e-04, + 5.09736156180340470138e-04, + 5.18230663364083014855e-04, + 5.26410142176160977465e-04, + 5.34273982670858136115e-04, + 5.41821726473215733132e-04, + 5.49053065558819199977e-04, + 5.55967840973343140065e-04, + 5.62566041493084596781e-04, + 5.68847802227587348751e-04, + 5.74813403165606124842e-04, + 5.80463267665585255090e-04, + 5.85797960891953992807e-04, + 5.90818188198352634011e-04, + 5.95524793459205619046e-04, + 5.99918757350793364382e-04, + 6.04001195583171897330e-04, + 6.07773357084216074402e-04, + 6.11236622137123529822e-04, + 6.14392500472671181100e-04, + 6.17242629317575641247e-04, + 6.19788771400296852575e-04, + 6.22032812915646266330e-04, + 6.23976761449542352556e-04, + 6.25622743865282679096e-04, + 6.26973004152734866845e-04, + 6.28029901241785953013e-04, + 6.28795906781460817864e-04, + 6.29273602886090081127e-04, + 6.29465679849935955126e-04, + 6.29374933831637162034e-04, + 6.29004264509917614644e-04, + 6.28356672711923979618e-04, + 6.27435258015602670238e-04, + 6.26243216327530610385e-04, + 6.24783837437580067548e-04, + 6.23060502551831571320e-04, + 6.21076681805128117189e-04, + 6.18835931754663313292e-04, + 6.16341892855999597296e-04, + 6.13598286922899423257e-04, + 6.10608914572360016171e-04, + 6.07377652656219848941e-04, + 6.03908451680720608987e-04, + 6.00205333215381750360e-04, + 5.96272387292547546150e-04, + 5.92113769798962869678e-04, + 5.87733699860716260477e-04, + 5.83136457222883410056e-04, + 5.78326379625196070923e-04, + 5.73307860175058681823e-04, + 5.68085344719199331932e-04, + 5.62663329215264671791e-04, + 5.57046357104629347515e-04, + 5.51239016687691835844e-04, + 5.45245938502918582949e-04, + 5.39071792710859535452e-04, + 5.32721286484389919269e-04, + 5.26199161406370888652e-04, + 5.19510190875949965511e-04, + 5.12659177524647379116e-04, + 5.05650950643461694588e-04, + 4.98490363622070692395e-04, + 4.91182291401325650700e-04, + 4.83731627940122419548e-04, + 4.76143283697776802978e-04, + 4.68422183132952726740e-04, + 4.60573262220249240485e-04, + 4.52601465985464203410e-04, + 4.44511746060588389465e-04, + 4.36309058259498746754e-04, + 4.27998360175392566791e-04, + 4.19584608800889610671e-04, + 4.11072758171783069880e-04, + 4.02467757035333936928e-04, + 3.93774546544049656484e-04, + 3.84998057975832470683e-04, + 3.76143210481313700240e-04, + 3.67214908859312392543e-04, + 3.58218041361136620669e-04, + 3.49157477524604336044e-04, + 3.40038066038525694287e-04, + 3.30864632638427479810e-04, + 3.21641978034209344382e-04, + 3.12374875870502510550e-04, + 3.03068070720368721877e-04, + 2.93726276113044930307e-04, + 2.84354172596324122988e-04, + 2.74956405834251703824e-04, + 2.65537584740686090270e-04, + 2.56102279649332684359e-04, + 2.46655020520732712157e-04, + 2.37200295186851598233e-04, + 2.27742547633623577692e-04, + 2.18286176322046336163e-04, + 2.08835532548216017655e-04, + 1.99394918842769620351e-04, + 1.89968587410093434423e-04, + 1.80560738607737464008e-04, + 1.71175519466368710516e-04, + 1.61817022250571095152e-04, + 1.52489283060860649410e-04, + 1.43196280477158617963e-04, + 1.33941934244020521144e-04, + 1.24730103997818122337e-04, + 1.15564588036148766046e-04, + 1.06449122129624024050e-04, + 9.73873783762444747338e-05, + 8.83829640984437603628e-05, + 7.94394207830501368397e-05, + 7.05602230641164422306e-05, + 6.17487777488439845697e-05, + 5.30084228865277819307e-05, + 4.43424268807018922721e-05, + 3.57539876443504868529e-05, + 2.72462317982963840894e-05, + 1.88222139126731892130e-05, + 1.04849157914673770899e-05, + 2.23724580001398245952e-06, +-5.91796176458841909860e-06, +-1.39779472603022615363e-05, +-2.19400262443108254274e-05, +-2.98015899747312779436e-05, +-3.75601058699388188874e-05, +-4.52131179258346812058e-05, +-5.27582470911579511194e-05, +-6.01931916011169823111e-05, +-6.75157272696155086192e-05, +-7.47237077402686759994e-05, +-8.18150646965978259242e-05, +-8.87878080315813176041e-05, +-9.56400259770174112402e-05, +-1.02369885192932295447e-04, +-1.08975630817447491838e-04, +-1.15455586477445233109e-04, +-1.21808154260462635915e-04, +-1.28031814648165977134e-04, +-1.34125126411867404445e-04, +-1.40086726470483718130e-04, +-1.45915329711446663599e-04, +-1.51609728774925367391e-04, +-1.57168793801964925671e-04, +-1.62591472146915872604e-04, +-1.67876788054762332352e-04, +-1.73023842303760092562e-04, +-1.78031811814023872061e-04, +-1.82899949222519527144e-04, +-1.87627582425063416539e-04, +-1.92214114085866635134e-04, +-1.96659021115234305434e-04, +-2.00961854115964548605e-04, +-2.05122236799067813760e-04, +-2.09139865369424642018e-04, +-2.13014507881963919287e-04, +-2.16746003569016719827e-04, +-2.20334262139455170628e-04, +-2.23779263050288623272e-04, +-2.27081054751326671731e-04, +-2.30239753903598189230e-04, +-2.33255544572162539776e-04, +-2.36128677394024743099e-04, +-2.38859468721759089912e-04, +-2.41448299743606627134e-04, +-2.43895615580664562507e-04, +-2.46201924361897988517e-04, +-2.48367796277648787261e-04, +-2.50393862612362249915e-04, +-2.52280814757210175570e-04, +-2.54029403203337271477e-04, +-2.55640436516424906718e-04, +-2.57114780293308988878e-04, +-2.58453356101321892260e-04, +-2.59657140401130335366e-04, +-2.60727163453730896234e-04, +-2.61664508212373382850e-04, +-2.62470309200077975623e-04, +-2.63145751373508769710e-04, +-2.63692068973905575490e-04, +-2.64110544365773612825e-04, +-2.64402506864084673854e-04, +-2.64569331550674807438e-04, +-2.64612438080565591254e-04, +-2.64533289478916812908e-04, +-2.64333390929326621406e-04, +-2.64014288554176887285e-04, +-2.63577568187730454374e-04, +-2.63024854142685936189e-04, +-2.62357807970878796362e-04, +-2.61578127218826830911e-04, +-2.60687544178804346540e-04, +-2.59687824636131118095e-04, +-2.58580766613355161020e-04, +-2.57368199111998000473e-04, +-2.56051980852535184582e-04, +-2.54633999013272917245e-04, +-2.53116167968770410229e-04, +-2.51500428028467203686e-04, +-2.49788744176148520739e-04, +-2.47983104810888498049e-04, +-2.46085520490098991209e-04, +-2.44098022675305284133e-04, +-2.42022662481256641692e-04, +-2.39861509428983846149e-04, +-2.37616650203396260988e-04, +-2.35290187416002671578e-04, +-2.32884238373345356290e-04, +-2.30400933851706944807e-04, +-2.27842416878660760553e-04, +-2.25210841522004905167e-04, +-2.22508371686640725982e-04, +-2.19737179919906623887e-04, +-2.16899446225907947382e-04, +-2.13997356889345798732e-04, +-2.11033103309352538255e-04, +-2.08008880843819519632e-04, +-2.04926887664708660573e-04, +-2.01789323624807442155e-04, +-1.98598389136399967663e-04, +-1.95356284062287273917e-04, +-1.92065206619610498147e-04, +-1.88727352296894345393e-04, +-1.85344912784731391314e-04, +-1.81920074920499755819e-04, +-1.78455019647530454055e-04, +-1.74951920989073971512e-04, +-1.71412945037461607323e-04, +-1.67840248958807175192e-04, +-1.64235980013589989322e-04, +-1.60602274593463965847e-04, +-1.56941257274607583660e-04, +-1.53255039887926981963e-04, +-1.49545720606400077326e-04, +-1.45815383049865629223e-04, +-1.42066095407511174204e-04, +-1.38299909578337953649e-04, +-1.34518860329830815736e-04, +-1.30724964475093245915e-04, +-1.26920220068654472992e-04, +-1.23106605621173758290e-04, +-1.19286079333219134950e-04, +-1.15460578348350841244e-04, +-1.11632018025632952099e-04, +-1.07802291231779830637e-04, +-1.03973267653065606659e-04, +-1.00146793127148565233e-04, +-9.63246889949230804435e-05, +-9.25087514725346873358e-05, +-8.87007510436452450671e-05, +-8.49024318720545515026e-05, +-8.11155112347393549661e-05, +-7.73416789754019609908e-05, +-7.35825969785674924512e-05, +-6.98398986642887023612e-05, +-6.61151885034750767074e-05, +-6.24100415538899748772e-05, +-5.87260030168200428450e-05, +-5.50645878143974986741e-05, +-5.14272801876128782695e-05, +-4.78155333149380714058e-05, +-4.42307689515766361233e-05, +-4.06743770892715146635e-05, +-3.71477156366324749162e-05, +-3.36521101199027279356e-05, +-3.01888534041130525139e-05, +-2.67592054345224943665e-05, +-2.33643929982665948157e-05, +-2.00056095060906951114e-05, +-1.66840147940797201324e-05, +-1.34007349452439661363e-05, +-1.01568621308437851693e-05, +-6.95345447128813701427e-06, +-3.79153591650250810366e-06, +-6.72096145553293655593e-07, + 2.40390951459279597616e-06, + 5.43556015137456058426e-06, + 8.42196931017640123499e-06, + 1.13622850193110927676e-05, + 1.42556897966238257746e-05, + 1.71014006379341248229e-05, + 1.98986689875390831126e-05, + 2.26467806909793172563e-05, + 2.53450559303131682314e-05, + 2.79928491421220740245e-05, + 3.05895489185053302676e-05, + 3.31345778912925430443e-05, + 3.56273925997451632237e-05, + 3.80674833419947510364e-05, + 4.04543740105068599521e-05, + 4.27876219118044463113e-05, + 4.50668175707753267513e-05, + 4.72915845198089502860e-05, + 4.94615790730713200283e-05, + 5.15764900862005805371e-05, + 5.36360387017334339240e-05, + 5.56399780805481871900e-05, + 5.75880931196438774090e-05, + 5.94802001565561985590e-05, + 6.13161466607366493955e-05, + 6.30958109121965409621e-05, + 6.48191016677504891876e-05, + 6.64859578151715343739e-05, + 6.80963480156043240521e-05, + 6.96502703345347587470e-05, + 7.11477518616810702089e-05, + 7.25888483201263885920e-05, + 7.39736436650163245096e-05, + 7.53022496721903708853e-05, + 7.65748055170595645635e-05, + 7.77914773440878826866e-05, + 7.89524578272120806021e-05, + 8.00579657215541123884e-05, + 8.11082454067584148567e-05, + 8.21035664223097817662e-05, + 8.30442229951717527346e-05, + 8.39305335600990616227e-05, + 8.47628402729624154692e-05, + 8.55415085174379832356e-05, + 8.62669264054029689666e-05, + 8.69395042713942022743e-05, + 8.75596741614536786501e-05, + 8.81278893167311284636e-05, + 8.86446236521661512422e-05, + 8.91103712306026604075e-05, + 8.95256457326717546962e-05, + 8.98909799227875892661e-05, + 9.02069251115862640782e-05, + 9.04740506151490363976e-05, + 9.06929432113401867103e-05, + 9.08642065935940279782e-05, + 9.09884608224771455898e-05, + 9.10663417753510066833e-05, + 9.10985005944656069544e-05, + 9.10856031337957275460e-05, + 9.10283294049456589850e-05, + 9.09273730224310103125e-05, + 9.07834406486567112131e-05, + 9.05972514388884682737e-05, + 9.03695364865346147717e-05, + 9.01010382690298824038e-05, + 8.97925100946232214449e-05, + 8.94447155503604388049e-05, + 8.90584279515538464710e-05, + 8.86344297930203114553e-05, + 8.81735122023717546660e-05, + 8.76764743956322256668e-05, + 8.71441231354561004216e-05, + 8.65772721922116491981e-05, + 8.59767418081955635050e-05, + 8.53433581652348287718e-05, + 8.46779528559294970011e-05, + 8.39813623587842351167e-05, + 8.32544275174723505482e-05, + 8.24979930244696123580e-05, + 8.17129069092911340059e-05, + 8.09000200315580515319e-05, + 8.00601855791177764851e-05, + 7.91942585714318722121e-05, + 7.83030953684469709260e-05, + 7.73875531851490379041e-05, + 7.64484896120066966278e-05, + 7.54867621414943666810e-05, + 7.45032277008856680736e-05, + 7.34987421914997258445e-05, + 7.24741600345781298914e-05, + 7.14303337239639759421e-05, + 7.03681133857495075701e-05, + 6.92883463450485250238e-05, + 6.81918767000556897513e-05, + 6.70795449035298084342e-05, + 6.59521873518545653477e-05, + 6.48106359818019012913e-05, + 6.36557178751403541801e-05, + 6.24882548712000070136e-05, + 6.13090631875229413088e-05, + 6.01189530487050480105e-05, + 5.89187283235398522627e-05, + 5.77091861705600261078e-05, + 5.64911166920768371556e-05, + 5.52653025968012133018e-05, + 5.40325188711331935503e-05, + 5.27935324591918643858e-05, + 5.15491019516612150597e-05, + 5.02999772835162253098e-05, + 4.90468994406823114189e-05, + 4.77906001756943685883e-05, + 4.65318017323872241855e-05, + 4.52712165796745444508e-05, + 4.40095471544385224527e-05, + 4.27474856135762158195e-05, + 4.14857135952114382585e-05, + 4.02249019891050019768e-05, + 3.89657107162695045101e-05, + 3.77087885178019617646e-05, + 3.64547727529321324196e-05, + 3.52042892062907349744e-05, + 3.39579519043854685862e-05, + 3.27163629412759540162e-05, + 3.14801123134230239524e-05, + 3.02497777637023744978e-05, + 2.90259246345387218443e-05, + 2.78091057301432964695e-05, + 2.65998611878025348972e-05, + 2.53987183581919854364e-05, + 2.42061916946511448772e-05, + 2.30227826513813061706e-05, + 2.18489795905047869758e-05, + 2.06852576979222047276e-05, + 1.95320789079097866306e-05, + 1.83898918363816234168e-05, + 1.72591317227478167385e-05, + 1.61402203802856600485e-05, + 1.50335661549492530784e-05, + 1.39395638925266073790e-05, + 1.28585949140593193966e-05, + 1.17910269994264146578e-05, + 1.07372143790027249535e-05, + 9.69749773328629209753e-06, + 8.67220420039572420566e-06, + 7.66164739132314657512e-06, + 6.66612741284622437347e-06, + 5.68593089796976951548e-06, + 4.72133104379410701050e-06, + 3.77258765668374723169e-06, + 2.83994720461857994069e-06, + 1.92364287659795633360e-06, + 1.02389464897677183691e-06, + 1.40909358598783243636e-07, +-7.25119217400925882488e-07, +-1.57401027526573751796e-06, +-2.40559589188401177682e-06, +-3.21972092580435969379e-06, +-4.01624291213239929447e-06, +-4.79503195145223449727e-06, +-5.55597059291959898474e-06, +-6.29895371166915398527e-06, +-7.02388838068995278969e-06, +-7.73069373730662337714e-06, +-8.41930084443043260571e-06, +-9.08965254672049638874e-06, +-9.74170332181420186798e-06, +-1.03754191267770145960e-05, +-1.09907772399306088372e-05, +-1.15877660982095854786e-05, +-1.21663851302071818753e-05, +-1.27266445850638015879e-05, +-1.32685653573596831328e-05, +-1.37921788081646564831e-05, +-1.42975265824070264185e-05, +-1.47846604227169150120e-05, +-1.52536419799077777845e-05, +-1.57045426202454864190e-05, +-1.61374432296745794440e-05, +-1.65524340151509907705e-05, +-1.69496143032443776877e-05, +-1.73290923361651281922e-05, +-1.76909850653765942752e-05, +-1.80354179429455134585e-05, +-1.83625247107888849940e-05, +-1.86724471879742999741e-05, +-1.89653350562250020523e-05, +-1.92413456437866339777e-05, +-1.95006437078064384194e-05, +-1.97434012153796016272e-05, +-1.99697971234102591856e-05, +-2.01800171574394671614e-05, +-2.03742535895865872536e-05, +-2.05527050157544749519e-05, +-2.07155761322383869926e-05, +-2.08630775118898238230e-05, +-2.09954253799722451970e-05, +-2.11128413898529763743e-05, +-2.12155523986690494219e-05, +-2.13037902431062623279e-05, +-2.13777915154254429865e-05, +-2.14377973398712400380e-05, +-2.14840531495946086989e-05, +-2.15168084642204138245e-05, +-2.15363166681862903517e-05, +-2.15428347899803886579e-05, +-2.15366232824005027408e-05, +-2.15179458039577262574e-05, +-2.14870690015422825217e-05, +-2.14442622944694083432e-05, +-2.13897976600211963056e-05, +-2.13239494205938423077e-05, +-2.12469940325636042692e-05, +-2.11592098769767039874e-05, +-2.10608770521689021838e-05, +-2.09522771684173563140e-05, +-2.08336931447246940868e-05, +-2.07054090078323760555e-05, +-2.05677096935581607638e-05, +-2.04208808505498906150e-05, +-2.02652086465450858026e-05, +-2.01009795772225878085e-05, +-1.99284802777307897448e-05, +-1.97479973369733553508e-05, +-1.95598171147313057406e-05, +-1.93642255616965921713e-05, +-1.91615080424908975211e-05, +-1.89519491617392180451e-05, +-1.87358325932659067312e-05, +-1.85134409124775290410e-05, +-1.82850554319945745078e-05, +-1.80509560405904254164e-05, +-1.78114210454942761765e-05, +-1.75667270181107023892e-05, +-1.73171486432067083623e-05, +-1.70629585716134836285e-05, +-1.68044272764881711800e-05, +-1.65418229131769521309e-05, +-1.62754111827191523261e-05, +-1.60054551990284544996e-05, +-1.57322153597849753270e-05, +-1.54559492210684566130e-05, +-1.51769113757617390406e-05, +-1.48953533357483810943e-05, +-1.46115234179280960335e-05, +-1.43256666340692667526e-05, +-1.40380245845161517285e-05, +-1.37488353557644599467e-05, +-1.34583334219182035850e-05, +-1.31667495500361276861e-05, +-1.28743107093750131593e-05, +-1.25812399845332226092e-05, +-1.22877564924967183814e-05, +-1.19940753035859587103e-05, +-1.17004073663007361519e-05, +-1.14069594360560160192e-05, +-1.11139340078022052344e-05, +-1.08215292525168970740e-05, +-1.05299389575568482923e-05, +-1.02393524708539662493e-05, +-9.94995464893742348120e-06, +-9.66192580876271611343e-06, +-9.37544168332491989210e-06, +-9.09067338103246418157e-06, +-8.80778734881422739372e-06, +-8.52694533893248795902e-06, +-8.24830437947059051977e-06, +-7.97201674846333152320e-06, +-7.69822995163491404110e-06, +-7.42708670370925303302e-06, +-7.15872491325360909230e-06, +-6.89327767101633304933e-06, +-6.63087324171573705124e-06, +-6.37163505923899323223e-06, +-6.11568172520321447157e-06, +-5.86312701083429459631e-06, +-5.61407986211404469277e-06, +-5.36864440814655013182e-06, +-5.12691997269171846217e-06, +-4.88900108881444233564e-06, +-4.65497751659457443244e-06, +-4.42493426384305196255e-06, +-4.19895160976678087265e-06, +-3.97710513152554464493e-06, +-3.75946573362158312445e-06, +-3.54609968006129461300e-06, +-3.33706862922910230812e-06, +-3.13242967141053148128e-06, +-2.93223536890220278037e-06, +-2.73653379864365903313e-06, +-2.54536859730841838172e-06, +-2.35877900878616331091e-06, +-2.17679993399191934131e-06, +-1.99946198293410626841e-06, +-1.82679152897453787459e-06, +-1.65881076521146377169e-06, +-1.49553776291791911430e-06, +-1.33698653196547020166e-06, +-1.18316708316432299485e-06, +-1.03408549244911473199e-06, +-8.89743966841013678409e-07, +-7.50140912114827378233e-07, +-6.15271002100918799020e-07, +-4.85125249549975873449e-07, +-3.59691078491283933177e-07, +-2.38952398011216803052e-07, +-1.22889677382464548894e-07, + 0.0 /* Need a final zero coefficient */ +} +} ; /* fastest_coeffs */ + +#ifdef _MSC_VER +#pragma warning (pop) +#endif diff --git a/source/engine/thirdparty/libsamplerate/src/high_qual_coeffs.h b/source/engine/thirdparty/libsamplerate/src/high_qual_coeffs.h new file mode 100644 index 0000000..dc3b884 --- /dev/null +++ b/source/engine/thirdparty/libsamplerate/src/high_qual_coeffs.h @@ -0,0 +1,340273 @@ +/* +** Copyright (c) 2007-2016, Erik de Castro Lopo +** All rights reserved. +** +** This code is released under 2-clause BSD license. Please see the +** file at : https://github.com/libsndfile/libsamplerate/blob/master/COPYING +*/ + +/* +** f = make_src_filter (cycles = 69, incr = 2381, atten = 160.000000) +** +** Stop band atten. : 154.67 dB +** -3dB band width : 1.922 +** half length : 340238 +** increment : 2381 +*/ + +#ifdef _MSC_VER +#pragma warning (push) +#pragma warning (disable: 4305) +#endif + +static const struct slow_high_qual_coeffs_s +{ int increment ; + coeff_t coeffs [340239] ; +} slow_high_qual_coeffs = +{ 2381, +{ + 9.657284235393746030e-01, + 9.657281621412726613e-01, + 9.657273779472256292e-01, + 9.657260709579943425e-01, + 9.657242411748556687e-01, + 9.657218885995935143e-01, + 9.657190132344973810e-01, + 9.657156150823710261e-01, + 9.657116941465326843e-01, + 9.657072504307945282e-01, + 9.657022839394945324e-01, + 9.656967946774737133e-01, + 9.656907826500827907e-01, + 9.656842478631756377e-01, + 9.656771903231314846e-01, + 9.656696100368233893e-01, + 9.656615070116398858e-01, + 9.656528812554828756e-01, + 9.656437327767599665e-01, + 9.656340615843858055e-01, + 9.656238676877905158e-01, + 9.656131510969064857e-01, + 9.656019118221832453e-01, + 9.655901498745762535e-01, + 9.655778652655470085e-01, + 9.655650580070698208e-01, + 9.655517281116315909e-01, + 9.655378755922249256e-01, + 9.655235004623492490e-01, + 9.655086027360166856e-01, + 9.654931824277518393e-01, + 9.654772395525847983e-01, + 9.654607741260518017e-01, + 9.654437861642095609e-01, + 9.654262756836061721e-01, + 9.654082427013159773e-01, + 9.653896872349128078e-01, + 9.653706093024861934e-01, + 9.653510089226313706e-01, + 9.653308861144500597e-01, + 9.653102408975589022e-01, + 9.652890732920780259e-01, + 9.652673833186427022e-01, + 9.652451709983904671e-01, + 9.652224363529754436e-01, + 9.651991794045572393e-01, + 9.651754001757993917e-01, + 9.651510986898800271e-01, + 9.651262749704926369e-01, + 9.651009290418218756e-01, + 9.650750609285785320e-01, + 9.650486706559762151e-01, + 9.650217582497327973e-01, + 9.649943237360825155e-01, + 9.649663671417652022e-01, + 9.649378884940221779e-01, + 9.649088878206207864e-01, + 9.648793651498198676e-01, + 9.648493205103967352e-01, + 9.648187539316318562e-01, + 9.647876654433195087e-01, + 9.647560550757575681e-01, + 9.647239228597564997e-01, + 9.646912688266315872e-01, + 9.646580930082109262e-01, + 9.646243954368293183e-01, + 9.645901761453221646e-01, + 9.645554351670501125e-01, + 9.645201725358665268e-01, + 9.644843882861413586e-01, + 9.644480824527474905e-01, + 9.644112550710675080e-01, + 9.643739061770016940e-01, + 9.643360358069392735e-01, + 9.642976439977980485e-01, + 9.642587307869880942e-01, + 9.642192962124369604e-01, + 9.641793403125725748e-01, + 9.641388631263365649e-01, + 9.640978646931779306e-01, + 9.640563450530537093e-01, + 9.640143042464200951e-01, + 9.639717423142621922e-01, + 9.639286592980441659e-01, + 9.638850552397599802e-01, + 9.638409301818994246e-01, + 9.637962841674682091e-01, + 9.637511172399710890e-01, + 9.637054294434274082e-01, + 9.636592208223616618e-01, + 9.636124914218008319e-01, + 9.635652412872870443e-01, + 9.635174704648616917e-01, + 9.634691790010806445e-01, + 9.634203669430008166e-01, + 9.633710343381919339e-01, + 9.633211812347238778e-01, + 9.632708076811813402e-01, + 9.632199137266507227e-01, + 9.631684994207244666e-01, + 9.631165648135027180e-01, + 9.630641099555957707e-01, + 9.630111348981192920e-01, + 9.629576396926903259e-01, + 9.629036243914399495e-01, + 9.628490890469985075e-01, + 9.627940337125093784e-01, + 9.627384584416203150e-01, + 9.626823632884765614e-01, + 9.626257483077473864e-01, + 9.625686135545918898e-01, + 9.625109590846846475e-01, + 9.624527849542000579e-01, + 9.623940912198210018e-01, + 9.623348779387403962e-01, + 9.622751451686527568e-01, + 9.622148929677565299e-01, + 9.621541213947606419e-01, + 9.620928305088780608e-01, + 9.620310203698192453e-01, + 9.619686910378176803e-01, + 9.619058425735953488e-01, + 9.618424750383863797e-01, + 9.617785884939332730e-01, + 9.617141830024799054e-01, + 9.616492586267730847e-01, + 9.615838154300708762e-01, + 9.615178534761319451e-01, + 9.614513728292150008e-01, + 9.613843735540962276e-01, + 9.613168557160521877e-01, + 9.612488193808526038e-01, + 9.611802646147833418e-01, + 9.611111914846396376e-01, + 9.610416000577068907e-01, + 9.609714904017852000e-01, + 9.609008625851720442e-01, + 9.608297166766762709e-01, + 9.607580527456042185e-01, + 9.606858708617690423e-01, + 9.606131710954939340e-01, + 9.605399535175953574e-01, + 9.604662181993973702e-01, + 9.603919652127322903e-01, + 9.603171946299289274e-01, + 9.602419065238272378e-01, + 9.601661009677665559e-01, + 9.600897780355864830e-01, + 9.600129378016331039e-01, + 9.599355803407596532e-01, + 9.598577057283178560e-01, + 9.597793140401642553e-01, + 9.597004053526501099e-01, + 9.596209797426437094e-01, + 9.595410372875099458e-01, + 9.594605780651147553e-01, + 9.593796021538247842e-01, + 9.592981096325121637e-01, + 9.592161005805541762e-01, + 9.591335750778278157e-01, + 9.590505332047059017e-01, + 9.589669750420790617e-01, + 9.588829006713240899e-01, + 9.587983101743289271e-01, + 9.587132036334775620e-01, + 9.586275811316626871e-01, + 9.585414427522702674e-01, + 9.584547885791959709e-01, + 9.583676186968306254e-01, + 9.582799331900714312e-01, + 9.581917321443151891e-01, + 9.581030156454554136e-01, + 9.580137837798901046e-01, + 9.579240366345228574e-01, + 9.578337742967500956e-01, + 9.577429968544788341e-01, + 9.576517043961021436e-01, + 9.575598970105301255e-01, + 9.574675747871574938e-01, + 9.573747378158925514e-01, + 9.572813861871392049e-01, + 9.571875199917972976e-01, + 9.570931393212775973e-01, + 9.569982442674722645e-01, + 9.569028349227920449e-01, + 9.568069113801369596e-01, + 9.567104737329119590e-01, + 9.566135220750197066e-01, + 9.565160565008583582e-01, + 9.564180771053286678e-01, + 9.563195839838368739e-01, + 9.562205772322724950e-01, + 9.561210569470401932e-01, + 9.560210232250334617e-01, + 9.559204761636538317e-01, + 9.558194158607901114e-01, + 9.557178424148340401e-01, + 9.556157559246800659e-01, + 9.555131564897146879e-01, + 9.554100442098283352e-01, + 9.553064191854077070e-01, + 9.552022815173281112e-01, + 9.550976313069821089e-01, + 9.549924686562412113e-01, + 9.548867936674824142e-01, + 9.547806064435864215e-01, + 9.546739070879148858e-01, + 9.545666957043427159e-01, + 9.544589723972358719e-01, + 9.543507372714538084e-01, + 9.542419904323594659e-01, + 9.541327319858051714e-01, + 9.540229620381482922e-01, + 9.539126806962340277e-01, + 9.538018880674121736e-01, + 9.536905842595208016e-01, + 9.535787693809015808e-01, + 9.534664435403855665e-01, + 9.533536068473057457e-01, + 9.532402594114883776e-01, + 9.531264013432507731e-01, + 9.530120327534097324e-01, + 9.528971537532816560e-01, + 9.527817644546733300e-01, + 9.526658649698831471e-01, + 9.525494554117108770e-01, + 9.524325358934497832e-01, + 9.523151065288876227e-01, + 9.521971674323029822e-01, + 9.520787187184749367e-01, + 9.519597605026706155e-01, + 9.518402929006573032e-01, + 9.517203160286913377e-01, + 9.515998300035271029e-01, + 9.514788349424085911e-01, + 9.513573309630783958e-01, + 9.512353181837659433e-01, + 9.511127967232019254e-01, + 9.509897667006035338e-01, + 9.508662282356856732e-01, + 9.507421814486547440e-01, + 9.506176264602070880e-01, + 9.504925633915326522e-01, + 9.503669923643195405e-01, + 9.502409135007438001e-01, + 9.501143269234706423e-01, + 9.499872327556601048e-01, + 9.498596311209690501e-01, + 9.497315221435412846e-01, + 9.496029059480096679e-01, + 9.494737826595053276e-01, + 9.493441524036435597e-01, + 9.492140153065377062e-01, + 9.490833714947857214e-01, + 9.489522210954840498e-01, + 9.488205642362114167e-01, + 9.486884010450450377e-01, + 9.485557316505456305e-01, + 9.484225561817705152e-01, + 9.482888747682625130e-01, + 9.481546875400582719e-01, + 9.480199946276800516e-01, + 9.478847961621443829e-01, + 9.477490922749530755e-01, + 9.476128830981019879e-01, + 9.474761687640710361e-01, + 9.473389494058349625e-01, + 9.472012251568542318e-01, + 9.470629961510762529e-01, + 9.469242625229385979e-01, + 9.467850244073708899e-01, + 9.466452819397860319e-01, + 9.465050352560934188e-01, + 9.463642844926742903e-01, + 9.462230297864152595e-01, + 9.460812712746790032e-01, + 9.459390090953243568e-01, + 9.457962433866925478e-01, + 9.456529742876100819e-01, + 9.455092019373962930e-01, + 9.453649264758512416e-01, + 9.452201480432647074e-01, + 9.450748667804192982e-01, + 9.449290828285694666e-01, + 9.447827963294702647e-01, + 9.446360074253569161e-01, + 9.444887162589485907e-01, + 9.443409229734541777e-01, + 9.441926277125608502e-01, + 9.440438306204562702e-01, + 9.438945318418000552e-01, + 9.437447315217356580e-01, + 9.435944298059016910e-01, + 9.434436268404174930e-01, + 9.432923227718813530e-01, + 9.431405177473851653e-01, + 9.429882119144973318e-01, + 9.428354054212751967e-01, + 9.426820984162567196e-01, + 9.425282910484674703e-01, + 9.423739834674114135e-01, + 9.422191758230826775e-01, + 9.420638682659502328e-01, + 9.419080609469753229e-01, + 9.417517540175931456e-01, + 9.415949476297296172e-01, + 9.414376419357861625e-01, + 9.412798370886529264e-01, + 9.411215332416955626e-01, + 9.409627305487694438e-01, + 9.408034291642040081e-01, + 9.406436292428169699e-01, + 9.404833309399003305e-01, + 9.403225344112365880e-01, + 9.401612398130799741e-01, + 9.399994473021728858e-01, + 9.398371570357327842e-01, + 9.396743691714632973e-01, + 9.395110838675428955e-01, + 9.393473012826352164e-01, + 9.391830215758785183e-01, + 9.390182449068976700e-01, + 9.388529714357893852e-01, + 9.386872013231379874e-01, + 9.385209347299989791e-01, + 9.383541718179143620e-01, + 9.381869127488983162e-01, + 9.380191576854500779e-01, + 9.378509067905411722e-01, + 9.376821602276276257e-01, + 9.375129181606374207e-01, + 9.373431807539793770e-01, + 9.371729481725471489e-01, + 9.370022205816952443e-01, + 9.368309981472741077e-01, + 9.366592810355977017e-01, + 9.364870694134611595e-01, + 9.363143634481371214e-01, + 9.361411633073783989e-01, + 9.359674691594098705e-01, + 9.357932811729314793e-01, + 9.356185995171232284e-01, + 9.354434243616362998e-01, + 9.352677558766031574e-01, + 9.350915942326247787e-01, + 9.349149396007848667e-01, + 9.347377921526353051e-01, + 9.345601520602059287e-01, + 9.343820194960039682e-01, + 9.342033946330091654e-01, + 9.340242776446711082e-01, + 9.338446687049196671e-01, + 9.336645679881537818e-01, + 9.334839756692465684e-01, + 9.333028919235504262e-01, + 9.331213169268864904e-01, + 9.329392508555458541e-01, + 9.327566938862953405e-01, + 9.325736461963779478e-01, + 9.323901079635061873e-01, + 9.322060793658610844e-01, + 9.320215605820983962e-01, + 9.318365517913500540e-01, + 9.316510531732123956e-01, + 9.314650649077598210e-01, + 9.312785871755304701e-01, + 9.310916201575419882e-01, + 9.309041640352744285e-01, + 9.307162189906851291e-01, + 9.305277852061962784e-01, + 9.303388628647056846e-01, + 9.301494521495776713e-01, + 9.299595532446444102e-01, + 9.297691663342060320e-01, + 9.295782916030458365e-01, + 9.293869292364017598e-01, + 9.291950794199792529e-01, + 9.290027423399646045e-01, + 9.288099181830054007e-01, + 9.286166071362148555e-01, + 9.284228093871772503e-01, + 9.282285251239477120e-01, + 9.280337545350427764e-01, + 9.278384978094554869e-01, + 9.276427551366295265e-01, + 9.274465267064935237e-01, + 9.272498127094340736e-01, + 9.270526133362979593e-01, + 9.268549287784162427e-01, + 9.266567592275679610e-01, + 9.264581048760049953e-01, + 9.262589659164447431e-01, + 9.260593425420762248e-01, + 9.258592349465415428e-01, + 9.256586433239528677e-01, + 9.254575678688906626e-01, + 9.252560087763935792e-01, + 9.250539662419682285e-01, + 9.248514404615867379e-01, + 9.246484316316836427e-01, + 9.244449399491529995e-01, + 9.242409656113582672e-01, + 9.240365088161166529e-01, + 9.238315697617236477e-01, + 9.236261486469230508e-01, + 9.234202456709258433e-01, + 9.232138610334088558e-01, + 9.230069949345034441e-01, + 9.227996475748112548e-01, + 9.225918191553871273e-01, + 9.223835098777541930e-01, + 9.221747199438902198e-01, + 9.219654495562363827e-01, + 9.217556989177015936e-01, + 9.215454682316379653e-01, + 9.213347577018751178e-01, + 9.211235675326947536e-01, + 9.209118979288358764e-01, + 9.206997490954993424e-01, + 9.204871212383488599e-01, + 9.202740145634997759e-01, + 9.200604292775332871e-01, + 9.198463655874830058e-01, + 9.196318237008452856e-01, + 9.194168038255701170e-01, + 9.192013061700690102e-01, + 9.189853309432080009e-01, + 9.187688783543098703e-01, + 9.185519486131602518e-01, + 9.183345419299963064e-01, + 9.181166585155100535e-01, + 9.178982985808520345e-01, + 9.176794623376320903e-01, + 9.174601499979091468e-01, + 9.172403617742048709e-01, + 9.170200978794887936e-01, + 9.167993585271924095e-01, + 9.165781439311949663e-01, + 9.163564543058342338e-01, + 9.161342898659046163e-01, + 9.159116508266519352e-01, + 9.156885374037720959e-01, + 9.154649498134176389e-01, + 9.152408882721990713e-01, + 9.150163529971705456e-01, + 9.147913442058479561e-01, + 9.145658621161919521e-01, + 9.143399069466223716e-01, + 9.141134789160049179e-01, + 9.138865782436590424e-01, + 9.136592051493600541e-01, + 9.134313598533305711e-01, + 9.132030425762386328e-01, + 9.129742535392181280e-01, + 9.127449929638370429e-01, + 9.125152610721219970e-01, + 9.122850580865475845e-01, + 9.120543842300408155e-01, + 9.118232397259778965e-01, + 9.115916247981777909e-01, + 9.113595396709129881e-01, + 9.111269845689080604e-01, + 9.108939597173292269e-01, + 9.106604653417968986e-01, + 9.104265016683774636e-01, + 9.101920689235767359e-01, + 9.099571673343617162e-01, + 9.097217971281399418e-01, + 9.094859585327591533e-01, + 9.092496517765301656e-01, + 9.090128770881930054e-01, + 9.087756346969423360e-01, + 9.085379248324191304e-01, + 9.082997477247046758e-01, + 9.080611036043290119e-01, + 9.078219927022737057e-01, + 9.075824152499472053e-01, + 9.073423714792206995e-01, + 9.071018616223990305e-01, + 9.068608859122373467e-01, + 9.066194445819268921e-01, + 9.063775378651106607e-01, + 9.061351659958672977e-01, + 9.058923292087209811e-01, + 9.056490277386430865e-01, + 9.054052618210394199e-01, + 9.051610316917652055e-01, + 9.049163375871129844e-01, + 9.046711797438118374e-01, + 9.044255583990439273e-01, + 9.041794737904262913e-01, + 9.039329261560131723e-01, + 9.036859157343016813e-01, + 9.034384427642340176e-01, + 9.031905074851839244e-01, + 9.029421101369723424e-01, + 9.026932509598525334e-01, + 9.024439301945198499e-01, + 9.021941480821120685e-01, + 9.019439048642012846e-01, + 9.016932007827919149e-01, + 9.014420360803397925e-01, + 9.011904109997301848e-01, + 9.009383257842841219e-01, + 9.006857806777610609e-01, + 9.004327759243624385e-01, + 9.001793117687216794e-01, + 8.999253884559021976e-01, + 8.996710062314197121e-01, + 8.994161653412048318e-01, + 8.991608660316424695e-01, + 8.989051085495424198e-01, + 8.986488931421465765e-01, + 8.983922200571440309e-01, + 8.981350895426412073e-01, + 8.978775018471930602e-01, + 8.976194572197828681e-01, + 8.973609559098225663e-01, + 8.971019981671612964e-01, + 8.968425842420845173e-01, + 8.965827143853020154e-01, + 8.963223888479613377e-01, + 8.960616078816437957e-01, + 8.958003717383580256e-01, + 8.955386806705427638e-01, + 8.952765349310700671e-01, + 8.950139347732458672e-01, + 8.947508804507969815e-01, + 8.944873722178955378e-01, + 8.942234103291289982e-01, + 8.939589950395203655e-01, + 8.936941266045239640e-01, + 8.934288052800176683e-01, + 8.931630313223110074e-01, + 8.928968049881452762e-01, + 8.926301265346824332e-01, + 8.923629962195200882e-01, + 8.920954143006757375e-01, + 8.918273810366013077e-01, + 8.915588966861675013e-01, + 8.912899615086777860e-01, + 8.910205757638590685e-01, + 8.907507397118716863e-01, + 8.904804536132854276e-01, + 8.902097177291126151e-01, + 8.899385323207823495e-01, + 8.896668976501437287e-01, + 8.893948139794813912e-01, + 8.891222815714994177e-01, + 8.888493006893219972e-01, + 8.885758715964997556e-01, + 8.883019945570098663e-01, + 8.880276698352457254e-01, + 8.877528976960272766e-01, + 8.874776784046002343e-01, + 8.872020122266245368e-01, + 8.869258994281892239e-01, + 8.866493402757986697e-01, + 8.863723350363836850e-01, + 8.860948839772899710e-01, + 8.858169873662875560e-01, + 8.855386454715687972e-01, + 8.852598585617404980e-01, + 8.849806269058309027e-01, + 8.847009507732929157e-01, + 8.844208304339890026e-01, + 8.841402661582089539e-01, + 8.838592582166507894e-01, + 8.835778068804451824e-01, + 8.832959124211269275e-01, + 8.830135751106529263e-01, + 8.827307952213970799e-01, + 8.824475730261533979e-01, + 8.821639087981261174e-01, + 8.818798028109459120e-01, + 8.815952553386395829e-01, + 8.813102666556734688e-01, + 8.810248370369120341e-01, + 8.807389667576401848e-01, + 8.804526560935568291e-01, + 8.801659053207787631e-01, + 8.798787147158337874e-01, + 8.795910845556564883e-01, + 8.793030151176082221e-01, + 8.790145066794545770e-01, + 8.787255595193735891e-01, + 8.784361739159571858e-01, + 8.781463501482125178e-01, + 8.778560884955517452e-01, + 8.775653892378053600e-01, + 8.772742526552061992e-01, + 8.769826790284079854e-01, + 8.766906686384705605e-01, + 8.763982217668595531e-01, + 8.761053386954542610e-01, + 8.758120197065423218e-01, + 8.755182650828247093e-01, + 8.752240751074076286e-01, + 8.749294500637992966e-01, + 8.746343902359308142e-01, + 8.743388959081236367e-01, + 8.740429673651215481e-01, + 8.737466048920664585e-01, + 8.734498087745100614e-01, + 8.731525792984167200e-01, + 8.728549167501397088e-01, + 8.725568214164574066e-01, + 8.722582935845369922e-01, + 8.719593335419696389e-01, + 8.716599415767301018e-01, + 8.713601179772180183e-01, + 8.710598630322177183e-01, + 8.707591770309334178e-01, + 8.704580602629656827e-01, + 8.701565130183119834e-01, + 8.698545355873861240e-01, + 8.695521282609943725e-01, + 8.692492913303510038e-01, + 8.689460250870661984e-01, + 8.686423298231549239e-01, + 8.683382058310360474e-01, + 8.680336534035225649e-01, + 8.677286728338321486e-01, + 8.674232644155843719e-01, + 8.671174284427934920e-01, + 8.668111652098784425e-01, + 8.665044750116488448e-01, + 8.661973581433277669e-01, + 8.658898149005185285e-01, + 8.655818455792373411e-01, + 8.652734504758898826e-01, + 8.649646298872843975e-01, + 8.646553841106181526e-01, + 8.643457134434988642e-01, + 8.640356181839160543e-01, + 8.637250986302622557e-01, + 8.634141550813234645e-01, + 8.631027878362863559e-01, + 8.627909971947252954e-01, + 8.624787834566125522e-01, + 8.621661469223169671e-01, + 8.618530878925968475e-01, + 8.615396066686054066e-01, + 8.612257035518935400e-01, + 8.609113788443981674e-01, + 8.605966328484544459e-01, + 8.602814658667822245e-01, + 8.599658782025032533e-01, + 8.596498701591263059e-01, + 8.593334420405440710e-01, + 8.590165941510568004e-01, + 8.586993267953352271e-01, + 8.583816402784558708e-01, + 8.580635349058768346e-01, + 8.577450109834475755e-01, + 8.574260688174091261e-01, + 8.571067087143875440e-01, + 8.567869309814007961e-01, + 8.564667359258499868e-01, + 8.561461238555265751e-01, + 8.558250950786087108e-01, + 8.555036499036660080e-01, + 8.551817886396468893e-01, + 8.548595115958893542e-01, + 8.545368190821223120e-01, + 8.542137114084509264e-01, + 8.538901888853738242e-01, + 8.535662518237645546e-01, + 8.532419005348930163e-01, + 8.529171353304072500e-01, + 8.525919565223335495e-01, + 8.522663644230926705e-01, + 8.519403593454824009e-01, + 8.516139416026788922e-01, + 8.512871115082524254e-01, + 8.509598693761402100e-01, + 8.506322155206740288e-01, + 8.503041502565562570e-01, + 8.499756738988831772e-01, + 8.496467867631161131e-01, + 8.493174891651115166e-01, + 8.489877814210874396e-01, + 8.486576638476630574e-01, + 8.483271367618200332e-01, + 8.479962004809237230e-01, + 8.476648553227186245e-01, + 8.473331016053288200e-01, + 8.470009396472513163e-01, + 8.466683697673652587e-01, + 8.463353922849213840e-01, + 8.460020075195461287e-01, + 8.456682157912548403e-01, + 8.453340174204225788e-01, + 8.449994127278037670e-01, + 8.446644020345386306e-01, + 8.443289856621251088e-01, + 8.439931639324498303e-01, + 8.436569371677669071e-01, + 8.433203056906991568e-01, + 8.429832698242523126e-01, + 8.426458298917984813e-01, + 8.423079862170832488e-01, + 8.419697391242283446e-01, + 8.416310889377198734e-01, + 8.412920359824190841e-01, + 8.409525805835608159e-01, + 8.406127230667449490e-01, + 8.402724637579435107e-01, + 8.399318029834993427e-01, + 8.395907410701265450e-01, + 8.392492783449025939e-01, + 8.389074151352804432e-01, + 8.385651517690709822e-01, + 8.382224885744690157e-01, + 8.378794258800188466e-01, + 8.375359640146422535e-01, + 8.371921033076298313e-01, + 8.368478440886314429e-01, + 8.365031866876659894e-01, + 8.361581314351211880e-01, + 8.358126786617436910e-01, + 8.354668286986512982e-01, + 8.351205818773175249e-01, + 8.347739385295911418e-01, + 8.344268989876764131e-01, + 8.340794635841457527e-01, + 8.337316326519270682e-01, + 8.333834065243221900e-01, + 8.330347855349881092e-01, + 8.326857700179388644e-01, + 8.323363603075620842e-01, + 8.319865567385956728e-01, + 8.316363596461461283e-01, + 8.312857693656723335e-01, + 8.309347862329983236e-01, + 8.305834105843052928e-01, + 8.302316427561358125e-01, + 8.298794830853905014e-01, + 8.295269319093273586e-01, + 8.291739895655607651e-01, + 8.288206563920677006e-01, + 8.284669327271769745e-01, + 8.281128189095748882e-01, + 8.277583152783064557e-01, + 8.274034221727772920e-01, + 8.270481399327308525e-01, + 8.266924688982874025e-01, + 8.263364094099113766e-01, + 8.259799618084208150e-01, + 8.256231264349892518e-01, + 8.252659036311442708e-01, + 8.249082937387697267e-01, + 8.245502971000965298e-01, + 8.241919140577108616e-01, + 8.238331449545502894e-01, + 8.234739901339087620e-01, + 8.231144499394230651e-01, + 8.227545247150859220e-01, + 8.223942148052403311e-01, + 8.220335205545806767e-01, + 8.216724423081471773e-01, + 8.213109804113306600e-01, + 8.209491352098753358e-01, + 8.205869070498634787e-01, + 8.202242962777384072e-01, + 8.198613032402845002e-01, + 8.194979282846284185e-01, + 8.191341717582547588e-01, + 8.187700340089861806e-01, + 8.184055153849936204e-01, + 8.180406162347976240e-01, + 8.176753369072549127e-01, + 8.173096777515793665e-01, + 8.169436391173192646e-01, + 8.165772213543734948e-01, + 8.162104248129797845e-01, + 8.158432498437200309e-01, + 8.154756967975215209e-01, + 8.151077660256542678e-01, + 8.147394578797241271e-01, + 8.143707727116885620e-01, + 8.140017108738386575e-01, + 8.136322727188112225e-01, + 8.132624585995779087e-01, + 8.128922688694548704e-01, + 8.125217038820957693e-01, + 8.121507639914943288e-01, + 8.117794495519873310e-01, + 8.114077609182387407e-01, + 8.110356984452670170e-01, + 8.106632624884106963e-01, + 8.102904534033591455e-01, + 8.099172715461303573e-01, + 8.095437172730816089e-01, + 8.091697909409064637e-01, + 8.087954929066337728e-01, + 8.084208235276294507e-01, + 8.080457831615909248e-01, + 8.076703721665503544e-01, + 8.072945909008776288e-01, + 8.069184397232682660e-01, + 8.065419189927612864e-01, + 8.061650290687204512e-01, + 8.057877703108475842e-01, + 8.054101430791672511e-01, + 8.050321477340474097e-01, + 8.046537846361788704e-01, + 8.042750541465848446e-01, + 8.038959566266224988e-01, + 8.035164924379726292e-01, + 8.031366619426458797e-01, + 8.027564655029929552e-01, + 8.023759034816764224e-01, + 8.019949762416977990e-01, + 8.016136841463871177e-01, + 8.012320275593950436e-01, + 8.008500068447029774e-01, + 8.004676223666181700e-01, + 8.000848744897772757e-01, + 7.997017635791360268e-01, + 7.993182899999791147e-01, + 7.989344541179164150e-01, + 7.985502562988837649e-01, + 7.981656969091357468e-01, + 7.977807763152516829e-01, + 7.973954948841431856e-01, + 7.970098529830269563e-01, + 7.966238509794624223e-01, + 7.962374892413135452e-01, + 7.958507681367810171e-01, + 7.954636880343699534e-01, + 7.950762493029170930e-01, + 7.946884523115805843e-01, + 7.943002974298282171e-01, + 7.939117850274597377e-01, + 7.935229154745846447e-01, + 7.931336891416338464e-01, + 7.927441063993589943e-01, + 7.923541676188250449e-01, + 7.919638731714147006e-01, + 7.915732234288291869e-01, + 7.911822187630850323e-01, + 7.907908595465190649e-01, + 7.903991461517734241e-01, + 7.900070789518172099e-01, + 7.896146583199268321e-01, + 7.892218846296936707e-01, + 7.888287582550269628e-01, + 7.884352795701414784e-01, + 7.880414489495753960e-01, + 7.876472667681703177e-01, + 7.872527334010841482e-01, + 7.868578492237854327e-01, + 7.864626146120571315e-01, + 7.860670299419870721e-01, + 7.856710955899771642e-01, + 7.852748119327382925e-01, + 7.848781793472909829e-01, + 7.844811982109681781e-01, + 7.840838689014026919e-01, + 7.836861917965459723e-01, + 7.832881672746510038e-01, + 7.828897957142783026e-01, + 7.824910774942971381e-01, + 7.820920129938853105e-01, + 7.816926025925187149e-01, + 7.812928466699895491e-01, + 7.808927456063863293e-01, + 7.804922997821064357e-01, + 7.800915095778512276e-01, + 7.796903753746272647e-01, + 7.792888975537409779e-01, + 7.788870764968034432e-01, + 7.784849125857283836e-01, + 7.780824062027317245e-01, + 7.776795577303313722e-01, + 7.772763675513484349e-01, + 7.768728360488974527e-01, + 7.764689636064041611e-01, + 7.760647506075856183e-01, + 7.756601974364616403e-01, + 7.752553044773501378e-01, + 7.748500721148714465e-01, + 7.744445007339378906e-01, + 7.740385907197626647e-01, + 7.736323424578533947e-01, + 7.732257563340231288e-01, + 7.728188327343717967e-01, + 7.724115720453023082e-01, + 7.720039746535038994e-01, + 7.715960409459730052e-01, + 7.711877713099910547e-01, + 7.707791661331372390e-01, + 7.703702258032839589e-01, + 7.699609507086000448e-01, + 7.695513412375400986e-01, + 7.691413977788568168e-01, + 7.687311207215965503e-01, + 7.683205104550920872e-01, + 7.679095673689687596e-01, + 7.674982918531434439e-01, + 7.670866842978226741e-01, + 7.666747450935030850e-01, + 7.662624746309760759e-01, + 7.658498733013054949e-01, + 7.654369414958626106e-01, + 7.650236796062952482e-01, + 7.646100880245425557e-01, + 7.641961671428302294e-01, + 7.637819173536724016e-01, + 7.633673390498633138e-01, + 7.629524326244916388e-01, + 7.625371984709220508e-01, + 7.621216369828134329e-01, + 7.617057485541021133e-01, + 7.612895335790108575e-01, + 7.608729924520449828e-01, + 7.604561255679964660e-01, + 7.600389333219322863e-01, + 7.596214161092103012e-01, + 7.592035743254642588e-01, + 7.587854083666101257e-01, + 7.583669186288453101e-01, + 7.579481055086479957e-01, + 7.575289694027775855e-01, + 7.571095107082660425e-01, + 7.566897298224322110e-01, + 7.562696271428728245e-01, + 7.558492030674571760e-01, + 7.554284579943361111e-01, + 7.550073923219337013e-01, + 7.545860064489589014e-01, + 7.541643007743888960e-01, + 7.537422756974833105e-01, + 7.533199316177662253e-01, + 7.528972689350501568e-01, + 7.524742880494099673e-01, + 7.520509893612046248e-01, + 7.516273732710596622e-01, + 7.512034401798760586e-01, + 7.507791904888270196e-01, + 7.503546245993580888e-01, + 7.499297429131859261e-01, + 7.495045458322995291e-01, + 7.490790337589600112e-01, + 7.486532070956947171e-01, + 7.482270662452995547e-01, + 7.478006116108487644e-01, + 7.473738435956769344e-01, + 7.469467626033897689e-01, + 7.465193690378613134e-01, + 7.460916633032325107e-01, + 7.456636458039124227e-01, + 7.452353169445781189e-01, + 7.448066771301655731e-01, + 7.443777267658839847e-01, + 7.439484662572082296e-01, + 7.435188960098728650e-01, + 7.430890164298754597e-01, + 7.426588279234860313e-01, + 7.422283308972306148e-01, + 7.417975257579005888e-01, + 7.413664129125487889e-01, + 7.409349927684907300e-01, + 7.405032657333058266e-01, + 7.400712322148274014e-01, + 7.396388926211565629e-01, + 7.392062473606543227e-01, + 7.387732968419337132e-01, + 7.383400414738774398e-01, + 7.379064816656191184e-01, + 7.374726178265530452e-01, + 7.370384503663292008e-01, + 7.366039796948615770e-01, + 7.361692062223144095e-01, + 7.357341303591102832e-01, + 7.352987525159280224e-01, + 7.348630731037032460e-01, + 7.344270925336208178e-01, + 7.339908112171259491e-01, + 7.335542295659195355e-01, + 7.331173479919474989e-01, + 7.326801669074179957e-01, + 7.322426867247865401e-01, + 7.318049078567584464e-01, + 7.313668307163003757e-01, + 7.309284557166209062e-01, + 7.304897832711800820e-01, + 7.300508137936961850e-01, + 7.296115476981284154e-01, + 7.291719853986894373e-01, + 7.287321273098399388e-01, + 7.282919738462891868e-01, + 7.278515254229934728e-01, + 7.274107824551605539e-01, + 7.269697453582366631e-01, + 7.265284145479246058e-01, + 7.260867904401628881e-01, + 7.256448734511442566e-01, + 7.252026639973031541e-01, + 7.247601624953210475e-01, + 7.243173693621187681e-01, + 7.238742850148627284e-01, + 7.234309098709608143e-01, + 7.229872443480709343e-01, + 7.225432888640829221e-01, + 7.220990438371381881e-01, + 7.216545096856130659e-01, + 7.212096868281256956e-01, + 7.207645756835345807e-01, + 7.203191766709373667e-01, + 7.198734902096787236e-01, + 7.194275167193265874e-01, + 7.189812566197059107e-01, + 7.185347103308632466e-01, + 7.180878782730912846e-01, + 7.176407608669185256e-01, + 7.171933585331089489e-01, + 7.167456716926631222e-01, + 7.162977007668172025e-01, + 7.158494461770438244e-01, + 7.154009083450445505e-01, + 7.149520876927608626e-01, + 7.145029846423662789e-01, + 7.140535996162669097e-01, + 7.136039330371045653e-01, + 7.131539853277455432e-01, + 7.127037569112947279e-01, + 7.122532482110888186e-01, + 7.118024596506882240e-01, + 7.113513916538927173e-01, + 7.109000446447217847e-01, + 7.104484190474348315e-01, + 7.099965152865098661e-01, + 7.095443337866602640e-01, + 7.090918749728278847e-01, + 7.086391392701744119e-01, + 7.081861271040974515e-01, + 7.077328389002121023e-01, + 7.072792750843687193e-01, + 7.068254360826339289e-01, + 7.063713223213073933e-01, + 7.059169342269079328e-01, + 7.054622722261776335e-01, + 7.050073367460858442e-01, + 7.045521282138265118e-01, + 7.040966470568076341e-01, + 7.036408937026693566e-01, + 7.031848685792639886e-01, + 7.027285721146737663e-01, + 7.022720047371955321e-01, + 7.018151668753448424e-01, + 7.013580589578620739e-01, + 7.009006814137073160e-01, + 7.004430346720513789e-01, + 6.999851191622925572e-01, + 6.995269353140387558e-01, + 6.990684835571197020e-01, + 6.986097643215841702e-01, + 6.981507780376889905e-01, + 6.976915251359133707e-01, + 6.972320060469523462e-01, + 6.967722212017078975e-01, + 6.963121710313046053e-01, + 6.958518559670791026e-01, + 6.953912764405754121e-01, + 6.949304328835567146e-01, + 6.944693257279996867e-01, + 6.940079554060830658e-01, + 6.935463223502045249e-01, + 6.930844269929780088e-01, + 6.926222697672134165e-01, + 6.921598511059408043e-01, + 6.916971714423971740e-01, + 6.912342312100271391e-01, + 6.907710308424845902e-01, + 6.903075707736313626e-01, + 6.898438514375360153e-01, + 6.893798732684743857e-01, + 6.889156367009288129e-01, + 6.884511421695846956e-01, + 6.879863901093404843e-01, + 6.875213809552916944e-01, + 6.870561151427378999e-01, + 6.865905931071916157e-01, + 6.861248152843598680e-01, + 6.856587821101524094e-01, + 6.851924940206900461e-01, + 6.847259514522844315e-01, + 6.842591548414570513e-01, + 6.837921046249268997e-01, + 6.833248012396169191e-01, + 6.828572451226416762e-01, + 6.823894367113225723e-01, + 6.819213764431778513e-01, + 6.814530647559268184e-01, + 6.809845020874794042e-01, + 6.805156888759494871e-01, + 6.800466255596439025e-01, + 6.795773125770752099e-01, + 6.791077503669354920e-01, + 6.786379393681286620e-01, + 6.781678800197414869e-01, + 6.776975727610652367e-01, + 6.772270180315751453e-01, + 6.767562162709500617e-01, + 6.762851679190542420e-01, + 6.758138734159443439e-01, + 6.753423332018738678e-01, + 6.748705477172854961e-01, + 6.743985174028153118e-01, + 6.739262426992825850e-01, + 6.734537240477015407e-01, + 6.729809618892799161e-01, + 6.725079566654084129e-01, + 6.720347088176676920e-01, + 6.715612187878251538e-01, + 6.710874870178407114e-01, + 6.706135139498565767e-01, + 6.701393000261995914e-01, + 6.696648456893884438e-01, + 6.691901513821237879e-01, + 6.687152175472953486e-01, + 6.682400446279683770e-01, + 6.677646330674005259e-01, + 6.672889833090299705e-01, + 6.668130957964778505e-01, + 6.663369709735474933e-01, + 6.658606092842228596e-01, + 6.653840111726732065e-01, + 6.649071770832485351e-01, + 6.644301074604733737e-01, + 6.639528027490601003e-01, + 6.634752633938924005e-01, + 6.629974898400395888e-01, + 6.625194825327446191e-01, + 6.620412419174355190e-01, + 6.615627684397097363e-01, + 6.610840625453457964e-01, + 6.606051246802973065e-01, + 6.601259552906922901e-01, + 6.596465548228381826e-01, + 6.591669237232151701e-01, + 6.586870624384775219e-01, + 6.582069714154574758e-01, + 6.577266511011511385e-01, + 6.572461019427333628e-01, + 6.567653243875570812e-01, + 6.562843188831356533e-01, + 6.558030858771650706e-01, + 6.553216258175011966e-01, + 6.548399391521787516e-01, + 6.543580263293989896e-01, + 6.538758877975332506e-01, + 6.533935240051201854e-01, + 6.529109354008693078e-01, + 6.524281224336532237e-01, + 6.519450855525202870e-01, + 6.514618252066755044e-01, + 6.509783418455000747e-01, + 6.504946359185291849e-01, + 6.500107078754771006e-01, + 6.495265581662136301e-01, + 6.490421872407757808e-01, + 6.485575955493602107e-01, + 6.480727835423367722e-01, + 6.475877516702256420e-01, + 6.471025003837178602e-01, + 6.466170301336638948e-01, + 6.461313413710745301e-01, + 6.456454345471229761e-01, + 6.451593101131407604e-01, + 6.446729685206175064e-01, + 6.441864102212069287e-01, + 6.436996356667185060e-01, + 6.432126453091228102e-01, + 6.427254396005387393e-01, + 6.422380189932558325e-01, + 6.417503839397081800e-01, + 6.412625348924964053e-01, + 6.407744723043671264e-01, + 6.402861966282288320e-01, + 6.397977083171421109e-01, + 6.393090078243222063e-01, + 6.388200956031365729e-01, + 6.383309721071052101e-01, + 6.378416377899042145e-01, + 6.373520931053594518e-01, + 6.368623385074484444e-01, + 6.363723744502997048e-01, + 6.358822013881922919e-01, + 6.353918197755527020e-01, + 6.349012300669618636e-01, + 6.344104327171491420e-01, + 6.339194281809861220e-01, + 6.334282169134964890e-01, + 6.329367993698555850e-01, + 6.324451760053793059e-01, + 6.319533472755303194e-01, + 6.314613136359205070e-01, + 6.309690755423056352e-01, + 6.304766334505859104e-01, + 6.299839878168047580e-01, + 6.294911390971544840e-01, + 6.289980877479625088e-01, + 6.285048342257062437e-01, + 6.280113789870024332e-01, + 6.275177224886073768e-01, + 6.270238651874258107e-01, + 6.265298075404936995e-01, + 6.260355500049940014e-01, + 6.255410930382475643e-01, + 6.250464370977140138e-01, + 6.245515826409897553e-01, + 6.240565301258153008e-01, + 6.235612800100607256e-01, + 6.230658327517396566e-01, + 6.225701888089995029e-01, + 6.220743486401225653e-01, + 6.215783127035306999e-01, + 6.210820814577799887e-01, + 6.205856553615536342e-01, + 6.200890348736813884e-01, + 6.195922204531171262e-01, + 6.190952125589485044e-01, + 6.185980116504006254e-01, + 6.181006181868261562e-01, + 6.176030326277115456e-01, + 6.171052554326705852e-01, + 6.166072870614549561e-01, + 6.161091279739357995e-01, + 6.156107786301230345e-01, + 6.151122394901481494e-01, + 6.146135110142789681e-01, + 6.141145936628998880e-01, + 6.136154878965383030e-01, + 6.131161941758300760e-01, + 6.126167129615534002e-01, + 6.121170447146012661e-01, + 6.116171898959974484e-01, + 6.111171489668896228e-01, + 6.106169223885483666e-01, + 6.101165106223666035e-01, + 6.096159141298641559e-01, + 6.091151333726821937e-01, + 6.086141688125827898e-01, + 6.081130209114491425e-01, + 6.076116901312873519e-01, + 6.071101769342260868e-01, + 6.066084817825050379e-01, + 6.061066051384956799e-01, + 6.056045474646782889e-01, + 6.051023092236578194e-01, + 6.045998908781552439e-01, + 6.040972928910062212e-01, + 6.035945157251709769e-01, + 6.030915598437158742e-01, + 6.025884257098310659e-01, + 6.020851137868167280e-01, + 6.015816245380946059e-01, + 6.010779584271910281e-01, + 6.005741159177589994e-01, + 6.000700974735495574e-01, + 5.995659035584385288e-01, + 5.990615346364118743e-01, + 5.985569911715586944e-01, + 5.980522736280925455e-01, + 5.975473824703255721e-01, + 5.970423181626884901e-01, + 5.965370811697175979e-01, + 5.960316719560574406e-01, + 5.955260909864649177e-01, + 5.950203387258027332e-01, + 5.945144156390415047e-01, + 5.940083221912578759e-01, + 5.935020588476346282e-01, + 5.929956260734627893e-01, + 5.924890243341357499e-01, + 5.919822540951560352e-01, + 5.914753158221299767e-01, + 5.909682099807598288e-01, + 5.904609370368615329e-01, + 5.899534974563518386e-01, + 5.894458917052427527e-01, + 5.889381202496539736e-01, + 5.884301835558088944e-01, + 5.879220820900240563e-01, + 5.874138163187205830e-01, + 5.869053867084228493e-01, + 5.863967937257487106e-01, + 5.858880378374121678e-01, + 5.853791195102359124e-01, + 5.848700392111300106e-01, + 5.843607974071072242e-01, + 5.838513945652759052e-01, + 5.833418311528369982e-01, + 5.828321076370938103e-01, + 5.823222244854364682e-01, + 5.818121821653537973e-01, + 5.813019811444302132e-01, + 5.807916218903418359e-01, + 5.802811048708567121e-01, + 5.797704305538345926e-01, + 5.792595994072304855e-01, + 5.787486118990884387e-01, + 5.782374684975413182e-01, + 5.777261696708184679e-01, + 5.772147158872293904e-01, + 5.767031076151840630e-01, + 5.761913453231710669e-01, + 5.756794294797739076e-01, + 5.751673605536589129e-01, + 5.746551390135864468e-01, + 5.741427653283942556e-01, + 5.736302399670113461e-01, + 5.731175633984529894e-01, + 5.726047360918185003e-01, + 5.720917585162919039e-01, + 5.715786311411381604e-01, + 5.710653544357096045e-01, + 5.705519288694386182e-01, + 5.700383549118455129e-01, + 5.695246330325236528e-01, + 5.690107637011523334e-01, + 5.684967473874966704e-01, + 5.679825845613897251e-01, + 5.674682756927582616e-01, + 5.669538212515978781e-01, + 5.664392217079883274e-01, + 5.659244775320859677e-01, + 5.654095891941223195e-01, + 5.648945571644111707e-01, + 5.643793819133394729e-01, + 5.638640639113691178e-01, + 5.633486036290410448e-01, + 5.628330015369680250e-01, + 5.623172581058403230e-01, + 5.618013738064209228e-01, + 5.612853491095437519e-01, + 5.607691844861215635e-01, + 5.602528804071325030e-01, + 5.597364373436293228e-01, + 5.592198557667390491e-01, + 5.587031361476547664e-01, + 5.581862789576458317e-01, + 5.576692846680445514e-01, + 5.571521537502549526e-01, + 5.566348866757530045e-01, + 5.561174839160796246e-01, + 5.555999459428446752e-01, + 5.550822732277216343e-01, + 5.545644662424559224e-01, + 5.540465254588547994e-01, + 5.535284513487942482e-01, + 5.530102443842138671e-01, + 5.524919050371158713e-01, + 5.519734337795687562e-01, + 5.514548310837065204e-01, + 5.509360974217205609e-01, + 5.504172332658694433e-01, + 5.498982390884692428e-01, + 5.493791153619020928e-01, + 5.488598625586088575e-01, + 5.483404811510881327e-01, + 5.478209716119027961e-01, + 5.473013344136703484e-01, + 5.467815700290721281e-01, + 5.462616789308437637e-01, + 5.457416615917765057e-01, + 5.452215184847272189e-01, + 5.447012500826017289e-01, + 5.441808568583633710e-01, + 5.436603392850321015e-01, + 5.431396978356815008e-01, + 5.426189329834423258e-01, + 5.420980452014958484e-01, + 5.415770349630799618e-01, + 5.410559027414825195e-01, + 5.405346490100465529e-01, + 5.400132742421676069e-01, + 5.394917789112851914e-01, + 5.389701634908977690e-01, + 5.384484284545498767e-01, + 5.379265742758390090e-01, + 5.374046014284091788e-01, + 5.368825103859525827e-01, + 5.363603016222118214e-01, + 5.358379756109747927e-01, + 5.353155328260807977e-01, + 5.347929737414076623e-01, + 5.342702988308872802e-01, + 5.337475085684937337e-01, + 5.332246034282451808e-01, + 5.327015838842059647e-01, + 5.321784504104847269e-01, + 5.316552034812298544e-01, + 5.311318435706351426e-01, + 5.306083711529392399e-01, + 5.300847867024194304e-01, + 5.295610906933927442e-01, + 5.290372836002218415e-01, + 5.285133658973041326e-01, + 5.279893380590835461e-01, + 5.274652005600338756e-01, + 5.269409538746757660e-01, + 5.264165984775635021e-01, + 5.258921348432940013e-01, + 5.253675634464938238e-01, + 5.248428847618294979e-01, + 5.243180992640065208e-01, + 5.237932074277605876e-01, + 5.232682097278673616e-01, + 5.227431066391323711e-01, + 5.222178986363988917e-01, + 5.216925861945405085e-01, + 5.211671697884678878e-01, + 5.206416498931161208e-01, + 5.201160269834601557e-01, + 5.195903015345032516e-01, + 5.190644740212776442e-01, + 5.185385449188483209e-01, + 5.180125147023079135e-01, + 5.174863838467800292e-01, + 5.169601528274148095e-01, + 5.164338221193932599e-01, + 5.159073921979221433e-01, + 5.153808635382338688e-01, + 5.148542366155887118e-01, + 5.143275119052749256e-01, + 5.138006898826020796e-01, + 5.132737710229097194e-01, + 5.127467558015578186e-01, + 5.122196446939302206e-01, + 5.116924381754347495e-01, + 5.111651367215066522e-01, + 5.106377408075933877e-01, + 5.101102509091741677e-01, + 5.095826675017426366e-01, + 5.090549910608180850e-01, + 5.085272220619375672e-01, + 5.079993609806577881e-01, + 5.074714082925514402e-01, + 5.069433644732158628e-01, + 5.064152299982620509e-01, + 5.058870053433222047e-01, + 5.053586909840427355e-01, + 5.048302873960849313e-01, + 5.043017950551309525e-01, + 5.037732144368733955e-01, + 5.032445460170216212e-01, + 5.027157902713018656e-01, + 5.021869476754519113e-01, + 5.016580187052207540e-01, + 5.011290038363730437e-01, + 5.005999035446859757e-01, + 5.000707183059458494e-01, + 4.995414485959539519e-01, + 4.990120948905191756e-01, + 4.984826576654605157e-01, + 4.979531373966072372e-01, + 4.974235345597988744e-01, + 4.968938496308819563e-01, + 4.963640830857122266e-01, + 4.958342354001539221e-01, + 4.953043070500712242e-01, + 4.947742985113449121e-01, + 4.942442102598565978e-01, + 4.937140427714919455e-01, + 4.931837965221432807e-01, + 4.926534719877085911e-01, + 4.921230696440889729e-01, + 4.915925899671852450e-01, + 4.910620334329049430e-01, + 4.905314005171579339e-01, + 4.900006916958530301e-01, + 4.894699074449028187e-01, + 4.889390482402186655e-01, + 4.884081145577142680e-01, + 4.878771068732999372e-01, + 4.873460256628882603e-01, + 4.868148714023848855e-01, + 4.862836445677034547e-01, + 4.857523456347450086e-01, + 4.852209750794116427e-01, + 4.846895333776035097e-01, + 4.841580210052134903e-01, + 4.836264384381329662e-01, + 4.830947861522446596e-01, + 4.825630646234275734e-01, + 4.820312743275562695e-01, + 4.814994157404955955e-01, + 4.809674893381051808e-01, + 4.804354955962349960e-01, + 4.799034349907290720e-01, + 4.793713079974200597e-01, + 4.788391150921342820e-01, + 4.783068567506829627e-01, + 4.777745334488754381e-01, + 4.772421456625014491e-01, + 4.767096938673439643e-01, + 4.761771785391719081e-01, + 4.756446001537455448e-01, + 4.751119591868066538e-01, + 4.745792561140885768e-01, + 4.740464914113063921e-01, + 4.735136655541636319e-01, + 4.729807790183464533e-01, + 4.724478322795259699e-01, + 4.719148258133591955e-01, + 4.713817600954833820e-01, + 4.708486356015215701e-01, + 4.703154528070754847e-01, + 4.697822121877311963e-01, + 4.692489142190564566e-01, + 4.687155593765969797e-01, + 4.681821481358821591e-01, + 4.676486809724174631e-01, + 4.671151583616889313e-01, + 4.665815807791628966e-01, + 4.660479487002811561e-01, + 4.655142626004636908e-01, + 4.649805229551096653e-01, + 4.644467302395929309e-01, + 4.639128849292601942e-01, + 4.633789874994402314e-01, + 4.628450384254330086e-01, + 4.623110381825115689e-01, + 4.617769872459244196e-01, + 4.612428860908939776e-01, + 4.607087351926157925e-01, + 4.601745350262576029e-01, + 4.596402860669541734e-01, + 4.591059887898192859e-01, + 4.585716436699321941e-01, + 4.580372511823451731e-01, + 4.575028118020775802e-01, + 4.569683260041187967e-01, + 4.564337942634295597e-01, + 4.558992170549344691e-01, + 4.553645948535292032e-01, + 4.548299281340735245e-01, + 4.542952173713954989e-01, + 4.537604630402888861e-01, + 4.532256656155146390e-01, + 4.526908255717954632e-01, + 4.521559433838217568e-01, + 4.516210195262446159e-01, + 4.510860544736805533e-01, + 4.505510487007098885e-01, + 4.500160026818726400e-01, + 4.494809168916722997e-01, + 4.489457918045746676e-01, + 4.484106278950037439e-01, + 4.478754256373457809e-01, + 4.473401855059472854e-01, + 4.468049079751105213e-01, + 4.462695935191028918e-01, + 4.457342426121419510e-01, + 4.451988557284100589e-01, + 4.446634333420424467e-01, + 4.441279759271334893e-01, + 4.435924839577312651e-01, + 4.430569579078406650e-01, + 4.425213982514216715e-01, + 4.419858054623921340e-01, + 4.414501800146158339e-01, + 4.409145223819163628e-01, + 4.403788330380706828e-01, + 4.398431124568051298e-01, + 4.393073611117987443e-01, + 4.387715794766846589e-01, + 4.382357680250427157e-01, + 4.376999272304058497e-01, + 4.371640575662580352e-01, + 4.366281595060286236e-01, + 4.360922335230988933e-01, + 4.355562800907985532e-01, + 4.350202996824016899e-01, + 4.344842927711350944e-01, + 4.339482598301678262e-01, + 4.334122013326184852e-01, + 4.328761177515485503e-01, + 4.323400095599669313e-01, + 4.318038772308233630e-01, + 4.312677212370180091e-01, + 4.307315420513894155e-01, + 4.301953401467215055e-01, + 4.296591159957419137e-01, + 4.291228700711172128e-01, + 4.285866028454578536e-01, + 4.280503147913146123e-01, + 4.275140063811805335e-01, + 4.269776780874856570e-01, + 4.264413303826014578e-01, + 4.259049637388392928e-01, + 4.253685786284464032e-01, + 4.248321755236080244e-01, + 4.242957548964525483e-01, + 4.237593172190380342e-01, + 4.232228629633605355e-01, + 4.226863926013566530e-01, + 4.221499066048945425e-01, + 4.216134054457751912e-01, + 4.210768895957396896e-01, + 4.205403595264580741e-01, + 4.200038157095373204e-01, + 4.194672586165123507e-01, + 4.189306887188560813e-01, + 4.183941064879693750e-01, + 4.178575123951872583e-01, + 4.173209069117704839e-01, + 4.167842905089165217e-01, + 4.162476636577477906e-01, + 4.157110268293194855e-01, + 4.151743804946100291e-01, + 4.146377251245329520e-01, + 4.141010611899240135e-01, + 4.135643891615488066e-01, + 4.130277095100990392e-01, + 4.124910227061930335e-01, + 4.119543292203733942e-01, + 4.114176295231083413e-01, + 4.108809240847906552e-01, + 4.103442133757393417e-01, + 4.098074978661933043e-01, + 4.092707780263164508e-01, + 4.087340543261945847e-01, + 4.081973272358365712e-01, + 4.076605972251730048e-01, + 4.071238647640538222e-01, + 4.065871303222495237e-01, + 4.060503943694522277e-01, + 4.055136573752731732e-01, + 4.049769198092395550e-01, + 4.044401821408020736e-01, + 4.039034448393269972e-01, + 4.033667083740931081e-01, + 4.028299732143066914e-01, + 4.022932398290813283e-01, + 4.017565086874497204e-01, + 4.012197802583601924e-01, + 4.006830550106744160e-01, + 4.001463334131707961e-01, + 3.996096159345408627e-01, + 3.990729030433877722e-01, + 3.985361952082288051e-01, + 3.979994928974931456e-01, + 3.974627965795236029e-01, + 3.969261067225682837e-01, + 3.963894237947964694e-01, + 3.958527482642781870e-01, + 3.953160805989973658e-01, + 3.947794212668478409e-01, + 3.942427707356283006e-01, + 3.937061294730506145e-01, + 3.931694979467296180e-01, + 3.926328766241925505e-01, + 3.920962659728692290e-01, + 3.915596664600967669e-01, + 3.910230785531200737e-01, + 3.904865027190844717e-01, + 3.899499394250454110e-01, + 3.894133891379588652e-01, + 3.888768523246857178e-01, + 3.883403294519896520e-01, + 3.878038209865375952e-01, + 3.872673273948993855e-01, + 3.867308491435427764e-01, + 3.861943866988418184e-01, + 3.856579405270673111e-01, + 3.851215110943916886e-01, + 3.845850988668865766e-01, + 3.840487043105229592e-01, + 3.835123278911720113e-01, + 3.829759700745983819e-01, + 3.824396313264697977e-01, + 3.819033121123478480e-01, + 3.813670128976908713e-01, + 3.808307341478538999e-01, + 3.802944763280877716e-01, + 3.797582399035392964e-01, + 3.792220253392458162e-01, + 3.786858331001428102e-01, + 3.781496636510597309e-01, + 3.776135174567155639e-01, + 3.770773949817246562e-01, + 3.765412966905910541e-01, + 3.760052230477127777e-01, + 3.754691745173772133e-01, + 3.749331515637645551e-01, + 3.743971546509403114e-01, + 3.738611842428659071e-01, + 3.733252408033846947e-01, + 3.727893247962358880e-01, + 3.722534366850416832e-01, + 3.717175769333139757e-01, + 3.711817460044489203e-01, + 3.706459443617323157e-01, + 3.701101724683348304e-01, + 3.695744307873126688e-01, + 3.690387197816083487e-01, + 3.685030399140452606e-01, + 3.679673916473356066e-01, + 3.674317754440712402e-01, + 3.668961917667274975e-01, + 3.663606410776655831e-01, + 3.658251238391246329e-01, + 3.652896405132290414e-01, + 3.647541915619789687e-01, + 3.642187774472597783e-01, + 3.636833986308353750e-01, + 3.631480555743502592e-01, + 3.626127487393244753e-01, + 3.620774785871601065e-01, + 3.615422455791376111e-01, + 3.610070501764117146e-01, + 3.604718928400153510e-01, + 3.599367740308603292e-01, + 3.594016942097316702e-01, + 3.588666538372912718e-01, + 3.583316533740742993e-01, + 3.577966932804954592e-01, + 3.572617740168368416e-01, + 3.567268960432575242e-01, + 3.561920598197902410e-01, + 3.556572658063389958e-01, + 3.551225144626808938e-01, + 3.545878062484613125e-01, + 3.540531416232031714e-01, + 3.535185210462928884e-01, + 3.529839449769929804e-01, + 3.524494138744295180e-01, + 3.519149281976037824e-01, + 3.513804884053802757e-01, + 3.508460949564961573e-01, + 3.503117483095520290e-01, + 3.497774489230203177e-01, + 3.492431972552341723e-01, + 3.487089937643993998e-01, + 3.481748389085810302e-01, + 3.476407331457149752e-01, + 3.471066769335984237e-01, + 3.465726707298916742e-01, + 3.460387149921229644e-01, + 3.455048101776804215e-01, + 3.449709567438140612e-01, + 3.444371551476409499e-01, + 3.439034058461326038e-01, + 3.433697092961285335e-01, + 3.428360659543250311e-01, + 3.423024762772802765e-01, + 3.417689407214110076e-01, + 3.412354597429925751e-01, + 3.407020337981628844e-01, + 3.401686633429142903e-01, + 3.396353488330981496e-01, + 3.391020907244230442e-01, + 3.385688894724530051e-01, + 3.380357455326123972e-01, + 3.375026593601762048e-01, + 3.369696314102795243e-01, + 3.364366621379092370e-01, + 3.359037519979057307e-01, + 3.353709014449674508e-01, + 3.348381109336424077e-01, + 3.343053809183317848e-01, + 3.337727118532918258e-01, + 3.332401041926285612e-01, + 3.327075583902980860e-01, + 3.321750749001118330e-01, + 3.316426541757267477e-01, + 3.311102966706526152e-01, + 3.305780028382500624e-01, + 3.300457731317238408e-01, + 3.295136080041327076e-01, + 3.289815079083783789e-01, + 3.284494732972138564e-01, + 3.279175046232376545e-01, + 3.273856023388952430e-01, + 3.268537668964784371e-01, + 3.263219987481243978e-01, + 3.257902983458128565e-01, + 3.252586661413742752e-01, + 3.247271025864765237e-01, + 3.241956081326342609e-01, + 3.236641832312071032e-01, + 3.231328283333945728e-01, + 3.226015438902380961e-01, + 3.220703303526242789e-01, + 3.215391881712775790e-01, + 3.210081177967635813e-01, + 3.204771196794891641e-01, + 3.199461942697028882e-01, + 3.194153420174876135e-01, + 3.188845633727693807e-01, + 3.183538587853112500e-01, + 3.178232287047138560e-01, + 3.172926735804155185e-01, + 3.167621938616914656e-01, + 3.162317899976532787e-01, + 3.157014624372475597e-01, + 3.151712116292592070e-01, + 3.146410380223042536e-01, + 3.141109420648376949e-01, + 3.135809242051437185e-01, + 3.130509848913435866e-01, + 3.125211245713909736e-01, + 3.119913436930710771e-01, + 3.114616427040025615e-01, + 3.109320220516348376e-01, + 3.104024821832487291e-01, + 3.098730235459548621e-01, + 3.093436465866972740e-01, + 3.088143517522449755e-01, + 3.082851394891999441e-01, + 3.077560102439931833e-01, + 3.072269644628803920e-01, + 3.066980025919481267e-01, + 3.061691250771086392e-01, + 3.056403323641044278e-01, + 3.051116248985002444e-01, + 3.045830031256883119e-01, + 3.040544674908866596e-01, + 3.035260184391398997e-01, + 3.029976564153132879e-01, + 3.024693818640988296e-01, + 3.019411952300113389e-01, + 3.014130969573904917e-01, + 3.008850874903952755e-01, + 3.003571672730094844e-01, + 2.998293367490389993e-01, + 2.993015963621076803e-01, + 2.987739465556633056e-01, + 2.982463877729722435e-01, + 2.977189204571205616e-01, + 2.971915450510158596e-01, + 2.966642619973831607e-01, + 2.961370717387643570e-01, + 2.956099747175214287e-01, + 2.950829713758331696e-01, + 2.945560621556953529e-01, + 2.940292474989190108e-01, + 2.935025278471347643e-01, + 2.929759036417839968e-01, + 2.924493753241269589e-01, + 2.919229433352371617e-01, + 2.913966081160025978e-01, + 2.908703701071232439e-01, + 2.903442297491157231e-01, + 2.898181874823065329e-01, + 2.892922437468372077e-01, + 2.887663989826561028e-01, + 2.882406536295294974e-01, + 2.877150081270289927e-01, + 2.871894629145411160e-01, + 2.866640184312587714e-01, + 2.861386751161859032e-01, + 2.856134334081353865e-01, + 2.850882937457301924e-01, + 2.845632565673981151e-01, + 2.840383223113774891e-01, + 2.835134914157129704e-01, + 2.829887643182557033e-01, + 2.824641414566620434e-01, + 2.819396232683974990e-01, + 2.814152101907286263e-01, + 2.808909026607305237e-01, + 2.803667011152801147e-01, + 2.798426059910592012e-01, + 2.793186177245538526e-01, + 2.787947367520524633e-01, + 2.782709635096463074e-01, + 2.777472984332284289e-01, + 2.772237419584926976e-01, + 2.767002945209358633e-01, + 2.761769565558550021e-01, + 2.756537284983467950e-01, + 2.751306107833075831e-01, + 2.746076038454338120e-01, + 2.740847081192213652e-01, + 2.735619240389630669e-01, + 2.730392520387505129e-01, + 2.725166925524725170e-01, + 2.719942460138152218e-01, + 2.714719128562617656e-01, + 2.709496935130899509e-01, + 2.704275884173765743e-01, + 2.699055980019888779e-01, + 2.693837226995922651e-01, + 2.688619629426468038e-01, + 2.683403191634037288e-01, + 2.678187917939104379e-01, + 2.672973812660057180e-01, + 2.667760880113205779e-01, + 2.662549124612804685e-01, + 2.657338550470990102e-01, + 2.652129161997826001e-01, + 2.646920963501305235e-01, + 2.641713959287278479e-01, + 2.636508153659532505e-01, + 2.631303550919731893e-01, + 2.626100155367418476e-01, + 2.620897971300046869e-01, + 2.615697003012930066e-01, + 2.610497254799264422e-01, + 2.605298730950105779e-01, + 2.600101435754393897e-01, + 2.594905373498911927e-01, + 2.589710548468329154e-01, + 2.584516964945130502e-01, + 2.579324627209677590e-01, + 2.574133539540155446e-01, + 2.568943706212604705e-01, + 2.563755131500901063e-01, + 2.558567819676739741e-01, + 2.553381775009638255e-01, + 2.548197001766962511e-01, + 2.543013504213848530e-01, + 2.537831286613301263e-01, + 2.532650353226076345e-01, + 2.527470708310791125e-01, + 2.522292356123820301e-01, + 2.517115300919340326e-01, + 2.511939546949329416e-01, + 2.506765098463538122e-01, + 2.501591959709523194e-01, + 2.496420134932572643e-01, + 2.491249628375801495e-01, + 2.486080444280047985e-01, + 2.480912586883942950e-01, + 2.475746060423862360e-01, + 2.470580869133934265e-01, + 2.465417017246044895e-01, + 2.460254508989822841e-01, + 2.455093348592644054e-01, + 2.449933540279614630e-01, + 2.444775088273575536e-01, + 2.439617996795089838e-01, + 2.434462270062457134e-01, + 2.429307912291679139e-01, + 2.424154927696492989e-01, + 2.419003320488334607e-01, + 2.413853094876349525e-01, + 2.408704255067360411e-01, + 2.403556805265944230e-01, + 2.398410749674320386e-01, + 2.393266092492397079e-01, + 2.388122837917814323e-01, + 2.382980990145836808e-01, + 2.377840553369440224e-01, + 2.372701531779257134e-01, + 2.367563929563585023e-01, + 2.362427750908389634e-01, + 2.357292999997293304e-01, + 2.352159681011573300e-01, + 2.347027798130147669e-01, + 2.341897355529608538e-01, + 2.336768357384144679e-01, + 2.331640807865604792e-01, + 2.326514711143476966e-01, + 2.321390071384867304e-01, + 2.316266892754497708e-01, + 2.311145179414728634e-01, + 2.306024935525509689e-01, + 2.300906165244434864e-01, + 2.295788872726662322e-01, + 2.290673062124990444e-01, + 2.285558737589792055e-01, + 2.280445903269033570e-01, + 2.275334563308283320e-01, + 2.270224721850689353e-01, + 2.265116383036968606e-01, + 2.260009551005430772e-01, + 2.254904229891949996e-01, + 2.249800423829948492e-01, + 2.244698136950455669e-01, + 2.239597373382018752e-01, + 2.234498137250757743e-01, + 2.229400432680336275e-01, + 2.224304263791973824e-01, + 2.219209634704416012e-01, + 2.214116549533969858e-01, + 2.209025012394440768e-01, + 2.203935027397191937e-01, + 2.198846598651105211e-01, + 2.193759730262575536e-01, + 2.188674426335515677e-01, + 2.183590690971355108e-01, + 2.178508528269037237e-01, + 2.173427942324978046e-01, + 2.168348937233131324e-01, + 2.163271517084926765e-01, + 2.158195685969281075e-01, + 2.153121447972600466e-01, + 2.148048807178795372e-01, + 2.142977767669209666e-01, + 2.137908333522705318e-01, + 2.132840508815594949e-01, + 2.127774297621642663e-01, + 2.122709704012097631e-01, + 2.117646732055650238e-01, + 2.112585385818456785e-01, + 2.107525669364108400e-01, + 2.102467586753660467e-01, + 2.097411142045576271e-01, + 2.092356339295786127e-01, + 2.087303182557636028e-01, + 2.082251675881917896e-01, + 2.077201823316808527e-01, + 2.072153628907955347e-01, + 2.067107096698370394e-01, + 2.062062230728514134e-01, + 2.057019035036246057e-01, + 2.051977513656811636e-01, + 2.046937670622873962e-01, + 2.041899509964470172e-01, + 2.036863035709064185e-01, + 2.031828251881461767e-01, + 2.026795162503886027e-01, + 2.021763771595912473e-01, + 2.016734083174498704e-01, + 2.011706101253996071e-01, + 2.006679829846080565e-01, + 2.001655272959803888e-01, + 1.996632434601600392e-01, + 1.991611318775224626e-01, + 1.986591929481792140e-01, + 1.981574270719774489e-01, + 1.976558346484960649e-01, + 1.971544160770502818e-01, + 1.966531717566870063e-01, + 1.961521020861854703e-01, + 1.956512074640586463e-01, + 1.951504882885513326e-01, + 1.946499449576390983e-01, + 1.941495778690302265e-01, + 1.936493874201621057e-01, + 1.931493740082034505e-01, + 1.926495380300536908e-01, + 1.921498798823406684e-01, + 1.916503999614216636e-01, + 1.911510986633828957e-01, + 1.906519763840392734e-01, + 1.901530335189333121e-01, + 1.896542704633354115e-01, + 1.891556876122424957e-01, + 1.886572853603788458e-01, + 1.881590641021954335e-01, + 1.876610242318688393e-01, + 1.871631661433004745e-01, + 1.866654902301175534e-01, + 1.861679968856727596e-01, + 1.856706865030418874e-01, + 1.851735594750256453e-01, + 1.846766161941475193e-01, + 1.841798570526543555e-01, + 1.836832824425166932e-01, + 1.831868927554259063e-01, + 1.826906883827970063e-01, + 1.821946697157648676e-01, + 1.816988371451864204e-01, + 1.812031910616399843e-01, + 1.807077318554232148e-01, + 1.802124599165532415e-01, + 1.797173756347686946e-01, + 1.792224793995263188e-01, + 1.787277716000003069e-01, + 1.782332526250865190e-01, + 1.777389228633949603e-01, + 1.772447827032564149e-01, + 1.767508325327170060e-01, + 1.762570727395408599e-01, + 1.757635037112074416e-01, + 1.752701258349128322e-01, + 1.747769394975687840e-01, + 1.742839450858015282e-01, + 1.737911429859537726e-01, + 1.732985335840807883e-01, + 1.728061172659530187e-01, + 1.723138944170548581e-01, + 1.718218654225830699e-01, + 1.713300306674480911e-01, + 1.708383905362721167e-01, + 1.703469454133899330e-01, + 1.698556956828475573e-01, + 1.693646417284040973e-01, + 1.688737839335270607e-01, + 1.683831226813964355e-01, + 1.678926583549016083e-01, + 1.674023913366412541e-01, + 1.669123220089250015e-01, + 1.664224507537698516e-01, + 1.659327779529022884e-01, + 1.654433039877569456e-01, + 1.649540292394765795e-01, + 1.644649540889102923e-01, + 1.639760789166158916e-01, + 1.634874041028570035e-01, + 1.629989300276036834e-01, + 1.625106570705309172e-01, + 1.620225856110216189e-01, + 1.615347160281617733e-01, + 1.610470487007434892e-01, + 1.605595840072624458e-01, + 1.600723223259181427e-01, + 1.595852640346149820e-01, + 1.590984095109590768e-01, + 1.586117591322614429e-01, + 1.581253132755331969e-01, + 1.576390723174895259e-01, + 1.571530366345463281e-01, + 1.566672066028216015e-01, + 1.561815825981330286e-01, + 1.556961649960009186e-01, + 1.552109541716446550e-01, + 1.547259504999826396e-01, + 1.542411543556346243e-01, + 1.537565661129184080e-01, + 1.532721861458500867e-01, + 1.527880148281459682e-01, + 1.523040525332181594e-01, + 1.518202996341775357e-01, + 1.513367565038319928e-01, + 1.508534235146870017e-01, + 1.503703010389435824e-01, + 1.498873894484984703e-01, + 1.494046891149455047e-01, + 1.489222004095731855e-01, + 1.484399237033654784e-01, + 1.479578593670004272e-01, + 1.474760077708503481e-01, + 1.469943692849811079e-01, + 1.465129442791537062e-01, + 1.460317331228213888e-01, + 1.455507361851288983e-01, + 1.450699538349157214e-01, + 1.445893864407121754e-01, + 1.441090343707396304e-01, + 1.436288979929118692e-01, + 1.431489776748336162e-01, + 1.426692737837992053e-01, + 1.421897866867940785e-01, + 1.417105167504938701e-01, + 1.412314643412624360e-01, + 1.407526298251536856e-01, + 1.402740135679098887e-01, + 1.397956159349619809e-01, + 1.393174372914293413e-01, + 1.388394780021182939e-01, + 1.383617384315220245e-01, + 1.378842189438222732e-01, + 1.374069199028862820e-01, + 1.369298416722667944e-01, + 1.364529846152052195e-01, + 1.359763490946247211e-01, + 1.354999354731360739e-01, + 1.350237441130346938e-01, + 1.345477753762997497e-01, + 1.340720296245940246e-01, + 1.335965072192654979e-01, + 1.331212085213442087e-01, + 1.326461338915438937e-01, + 1.321712836902605992e-01, + 1.316966582775729866e-01, + 1.312222580132411109e-01, + 1.307480832567074203e-01, + 1.302741343670941743e-01, + 1.298004117032061366e-01, + 1.293269156235277439e-01, + 1.288536464862228836e-01, + 1.283806046491368646e-01, + 1.279077904697929757e-01, + 1.274352043053946504e-01, + 1.269628465128233019e-01, + 1.264907174486397945e-01, + 1.260188174690811125e-01, + 1.255471469300635246e-01, + 1.250757061871801967e-01, + 1.246044955957016642e-01, + 1.241335155105739996e-01, + 1.236627662864206723e-01, + 1.231922482775405780e-01, + 1.227219618379084831e-01, + 1.222519073211735668e-01, + 1.217820850806616562e-01, + 1.213124954693706598e-01, + 1.208431388399749395e-01, + 1.203740155448210225e-01, + 1.199051259359306260e-01, + 1.194364703649967996e-01, + 1.189680491833867704e-01, + 1.184998627421402079e-01, + 1.180319113919670732e-01, + 1.175641954832519903e-01, + 1.170967153660482790e-01, + 1.166294713900823815e-01, + 1.161624639047505320e-01, + 1.156956932591189369e-01, + 1.152291598019257318e-01, + 1.147628638815763463e-01, + 1.142968058461471120e-01, + 1.138309860433834586e-01, + 1.133654048206985399e-01, + 1.129000625251746631e-01, + 1.124349595035619154e-01, + 1.119700961022783159e-01, + 1.115054726674087754e-01, + 1.110410895447055402e-01, + 1.105769470795874843e-01, + 1.101130456171396654e-01, + 1.096493855021133251e-01, + 1.091859670789256387e-01, + 1.087227906916581610e-01, + 1.082598566840588805e-01, + 1.077971653995383472e-01, + 1.073347171811741552e-01, + 1.068725123717056691e-01, + 1.064105513135363973e-01, + 1.059488343487342138e-01, + 1.054873618190288742e-01, + 1.050261340658132092e-01, + 1.045651514301419727e-01, + 1.041044142527334654e-01, + 1.036439228739649415e-01, + 1.031836776338775630e-01, + 1.027236788721719446e-01, + 1.022639269282100694e-01, + 1.018044221410140671e-01, + 1.013451648492665058e-01, + 1.008861553913085601e-01, + 1.004273941051421620e-01, + 9.996888132842693397e-02, + 9.951061739848247878e-02, + 9.905260265228574279e-02, + 9.859483742647233429e-02, + 9.813732205733544101e-02, + 9.768005688082581628e-02, + 9.722304223255044675e-02, + 9.676627844777495324e-02, + 9.630976586141902496e-02, + 9.585350480806059670e-02, + 9.539749562193200472e-02, + 9.494173863692130511e-02, + 9.448623418657249584e-02, + 9.403098260408364328e-02, + 9.357598422230702095e-02, + 9.312123937374985894e-02, + 9.266674839057344182e-02, + 9.221251160459144336e-02, + 9.175852934727170285e-02, + 9.130480194973489283e-02, + 9.085132974275406115e-02, + 9.039811305675417297e-02, + 8.994515222181316549e-02, + 8.949244756765972753e-02, + 8.903999942367391007e-02, + 8.858780811888759821e-02, + 8.813587398198215184e-02, + 8.768419734129083432e-02, + 8.723277852479512096e-02, + 8.678161786012766887e-02, + 8.633071567457042961e-02, + 8.588007229505362217e-02, + 8.542968804815739836e-02, + 8.497956326010948358e-02, + 8.452969825678587068e-02, + 8.408009336371127795e-02, + 8.363074890605774747e-02, + 8.318166520864318791e-02, + 8.273284259593445544e-02, + 8.228428139204366221e-02, + 8.183598192072991107e-02, + 8.138794450539806047e-02, + 8.094016946909882160e-02, + 8.049265713452824489e-02, + 8.004540782402745636e-02, + 7.959842185958218574e-02, + 7.915169956282340491e-02, + 7.870524125502531554e-02, + 7.825904725710657039e-02, + 7.781311788962919085e-02, + 7.736745347279845586e-02, + 7.692205432646274932e-02, + 7.647692077011336576e-02, + 7.603205312288303930e-02, + 7.558745170354741472e-02, + 7.514311683052375679e-02, + 7.469904882187029804e-02, + 7.425524799528727959e-02, + 7.381171466811527193e-02, + 7.336844915733464756e-02, + 7.292545177956775981e-02, + 7.248272285107569546e-02, + 7.204026268775914899e-02, + 7.159807160515868629e-02, + 7.115614991845385651e-02, + 7.071449794246276177e-02, + 7.027311599164189071e-02, + 6.983200438008665967e-02, + 6.939116342152910899e-02, + 6.895059342933984592e-02, + 6.851029471652633762e-02, + 6.807026759573306385e-02, + 6.763051237924175285e-02, + 6.719102937896961891e-02, + 6.675181890647055583e-02, + 6.631288127293424872e-02, + 6.587421678918548018e-02, + 6.543582576568492126e-02, + 6.499770851252795190e-02, + 6.455986533944410577e-02, + 6.412229655579829157e-02, + 6.368500247058850317e-02, + 6.324798339244656897e-02, + 6.281123962963916507e-02, + 6.237477149006421390e-02, + 6.193857928125392348e-02, + 6.150266331037274048e-02, + 6.106702388421741262e-02, + 6.063166130921656544e-02, + 6.019657589143137533e-02, + 5.976176793655313402e-02, + 5.932723774990575349e-02, + 5.889298563644351781e-02, + 5.845901190075079856e-02, + 5.802531684704344273e-02, + 5.759190077916610806e-02, + 5.715876400059419216e-02, + 5.672590681443231281e-02, + 5.629332952341442597e-02, + 5.586103242990267392e-02, + 5.542901583588928649e-02, + 5.499728004299368062e-02, + 5.456582535246352894e-02, + 5.413465206517500267e-02, + 5.370376048163129357e-02, + 5.327315090196273195e-02, + 5.284282362592723770e-02, + 5.241277895290873817e-02, + 5.198301718191788295e-02, + 5.155353861159192586e-02, + 5.112434354019328858e-02, + 5.069543226561047666e-02, + 5.026680508535735781e-02, + 4.983846229657223903e-02, + 4.941040419601910177e-02, + 4.898263108008589495e-02, + 4.855514324478461818e-02, + 4.812794098575203655e-02, + 4.770102459824776542e-02, + 4.727439437715560966e-02, + 4.684805061698179424e-02, + 4.642199361185592871e-02, + 4.599622365552994557e-02, + 4.557074104137854437e-02, + 4.514554606239786633e-02, + 4.472063901120675034e-02, + 4.429602018004465125e-02, + 4.387168986077268074e-02, + 4.344764834487315625e-02, + 4.302389592344883773e-02, + 4.260043288722335786e-02, + 4.217725952654005628e-02, + 4.175437613136272902e-02, + 4.133178299127397703e-02, + 4.090948039547739196e-02, + 4.048746863279396174e-02, + 4.006574799166472134e-02, + 3.964431876014880979e-02, + 3.922318122592408085e-02, + 3.880233567628631891e-02, + 3.838178239814914183e-02, + 3.796152167804382055e-02, + 3.754155380211863374e-02, + 3.712187905613972827e-02, + 3.670249772548899586e-02, + 3.628341009516585641e-02, + 3.586461644978514163e-02, + 3.544611707357846891e-02, + 3.502791225039303402e-02, + 3.461000226369116695e-02, + 3.419238739655091480e-02, + 3.377506793166498711e-02, + 3.335804415134120682e-02, + 3.294131633750169846e-02, + 3.252488477168283959e-02, + 3.210874973503474034e-02, + 3.169291150832194426e-02, + 3.127737037192195729e-02, + 3.086212660582527897e-02, + 3.044718048963635654e-02, + 3.003253230257120140e-02, + 2.961818232345909616e-02, + 2.920413083074133859e-02, + 2.879037810247124171e-02, + 2.837692441631348150e-02, + 2.796377004954487405e-02, + 2.755091527905333820e-02, + 2.713836038133698308e-02, + 2.672610563250583243e-02, + 2.631415130827954169e-02, + 2.590249768398842148e-02, + 2.549114503457272987e-02, + 2.508009363458233235e-02, + 2.466934375817677119e-02, + 2.425889567912500877e-02, + 2.384874967080444913e-02, + 2.343890600620208639e-02, + 2.302936495791306146e-02, + 2.262012679814022487e-02, + 2.221119179869588539e-02, + 2.180256023099870835e-02, + 2.139423236607594647e-02, + 2.098620847456178842e-02, + 2.057848882669746984e-02, + 2.017107369233122824e-02, + 1.976396334091792481e-02, + 1.935715804151872180e-02, + 1.895065806280111717e-02, + 1.854446367303836871e-02, + 1.813857514010908459e-02, + 1.773299273149807342e-02, + 1.732771671429468585e-02, + 1.692274735519351189e-02, + 1.651808492049389177e-02, + 1.611372967609956894e-02, + 1.570968188751870401e-02, + 1.530594181986322591e-02, + 1.490250973784930724e-02, + 1.449938590579590708e-02, + 1.409657058762651613e-02, + 1.369406404686653034e-02, + 1.329186654664487634e-02, + 1.288997834969305388e-02, + 1.248839971834486522e-02, + 1.208713091453641857e-02, + 1.168617219980573260e-02, + 1.128552383529251267e-02, + 1.088518608173805018e-02, + 1.048515919948498840e-02, + 1.008544344847654185e-02, + 9.686039088257649907e-03, + 9.286946377972959271e-03, + 8.888165576367847501e-03, + 8.489696941788315437e-03, + 8.091540732179441572e-03, + 7.693697205086506147e-03, + 7.296166617654279915e-03, + 6.898949226626655516e-03, + 6.502045288346657882e-03, + 6.105455058756187499e-03, + 5.709178793395310036e-03, + 5.313216747403330144e-03, + 4.917569175516806924e-03, + 4.522236332070624261e-03, + 4.127218470997816475e-03, + 3.732515845828120703e-03, + 3.338128709689056322e-03, + 2.944057315305130887e-03, + 2.550301914997683134e-03, + 2.156862760684686523e-03, + 1.763740103880680286e-03, + 1.370934195696011781e-03, + 9.784452868372836218e-04, + 5.862736276072896000e-04, + 1.944194679035751347e-04, +-1.971169427804136346e-04, +-5.883353553562285440e-04, +-9.792355211404874926e-04, +-1.369817191854952668e-03, +-1.760080119627292902e-03, +-2.150024056990598384e-03, +-2.539648756883606823e-03, +-2.928953972651572330e-03, +-3.317939458045829348e-03, +-3.706604967224626408e-03, +-4.094950254752581856e-03, +-4.482975075601509582e-03, +-4.870679185149713424e-03, +-5.258062339184239702e-03, +-5.645124293898334117e-03, +-6.031864805893672604e-03, +-6.418283632179797547e-03, +-6.804380530174296456e-03, +-7.190155257703596467e-03, +-7.575607573002333776e-03, +-7.960737234713780378e-03, +-8.345544001890426930e-03, +-8.730027633994177916e-03, +-9.114187890896068012e-03, +-9.498024532876686229e-03, +-9.881537320626746640e-03, +-1.026472601524607703e-02, +-1.064759037824623486e-02, +-1.103013017154769529e-02, +-1.141234515748230753e-02, +-1.179423509879230954e-02, +-1.217579975863146424e-02, +-1.255703890056420607e-02, +-1.293795228856651353e-02, +-1.331853968702611558e-02, +-1.369880086074176835e-02, +-1.407873557492555355e-02, +-1.445834359520042391e-02, +-1.483762468760225876e-02, +-1.521657861857929166e-02, +-1.559520515499280592e-02, +-1.597350406411664550e-02, +-1.635147511363808578e-02, +-1.672911807165721951e-02, +-1.710643270668798371e-02, +-1.748341878765811638e-02, +-1.786007608390911133e-02, +-1.823640436519629107e-02, +-1.861240340168940355e-02, +-1.898807296397293787e-02, +-1.936341282304553449e-02, +-1.973842275032071034e-02, +-2.011310251762716064e-02, +-2.048745189720860282e-02, +-2.086147066172440792e-02, +-2.123515858424914263e-02, +-2.160851543827346788e-02, +-2.198154099770313272e-02, +-2.235423503686144800e-02, +-2.272659733048646921e-02, +-2.309862765373370611e-02, +-2.347032578217475227e-02, +-2.384169149179860350e-02, +-2.421272455901072457e-02, +-2.458342476063416285e-02, +-2.495379187390869141e-02, +-2.532382567649206148e-02, +-2.569352594646031815e-02, +-2.606289246230636750e-02, +-2.643192500294165928e-02, +-2.680062334769573243e-02, +-2.716898727631690547e-02, +-2.753701656897185324e-02, +-2.790471100624603018e-02, +-2.827207036914356625e-02, +-2.863909443908811345e-02, +-2.900578299792248849e-02, +-2.937213582790913768e-02, +-2.973815271172968594e-02, +-3.010383343248590124e-02, +-3.046917777369960792e-02, +-3.083418551931266932e-02, +-3.119885645368706759e-02, +-3.156319036160548652e-02, +-3.192718702827094385e-02, +-3.229084623930817549e-02, +-3.265416778076182802e-02, +-3.301715143909852296e-02, +-3.337979700120522614e-02, +-3.374210425439191918e-02, +-3.410407298638856721e-02, +-3.446570298534811644e-02, +-3.482699403984515496e-02, +-3.518794593887596134e-02, +-3.554855847185995482e-02, +-3.590883142863873778e-02, +-3.626876459947608183e-02, +-3.662835777505876050e-02, +-3.698761074649742353e-02, +-3.734652330532437642e-02, +-3.770509524349636293e-02, +-3.806332635339289283e-02, +-3.842121642781692881e-02, +-3.877876525999632978e-02, +-3.913597264358170680e-02, +-3.949283837264818547e-02, +-3.984936224169508684e-02, +-4.020554404564612161e-02, +-4.056138357984966081e-02, +-4.091688064007854148e-02, +-4.127203502253070505e-02, +-4.162684652382848266e-02, +-4.198131494102055189e-02, +-4.233544007157991756e-02, +-4.268922171340530647e-02, +-4.304265966482099387e-02, +-4.339575372457738639e-02, +-4.374850369185043913e-02, +-4.410090936624255775e-02, +-4.445297054778162699e-02, +-4.480468703692265520e-02, +-4.515605863454706659e-02, +-4.550708514196264570e-02, +-4.585776636090433539e-02, +-4.620810209353341802e-02, +-4.655809214243929878e-02, +-4.690773631063795135e-02, +-4.725703440157261181e-02, +-4.760598621911445866e-02, +-4.795459156756211316e-02, +-4.830285025164244433e-02, +-4.865076207651006235e-02, +-4.899832684774757530e-02, +-4.934554437136532551e-02, +-4.969241445380379041e-02, +-5.003893690193025184e-02, +-5.038511152304129409e-02, +-5.073093812486244303e-02, +-5.107641651554797879e-02, +-5.142154650368187946e-02, +-5.176632789827662756e-02, +-5.211076050877446603e-02, +-5.245484414504665571e-02, +-5.279857861739524483e-02, +-5.314196373655088318e-02, +-5.348499931367477894e-02, +-5.382768516035809497e-02, +-5.417002108862224719e-02, +-5.451200691091899475e-02, +-5.485364244013032214e-02, +-5.519492748956912609e-02, +-5.553586187297872290e-02, +-5.587644540453378522e-02, +-5.621667789883950245e-02, +-5.655655917093251744e-02, +-5.689608903628036451e-02, +-5.723526731078270452e-02, +-5.757409381076988159e-02, +-5.791256835300422068e-02, +-5.825069075468011781e-02, +-5.858846083342311717e-02, +-5.892587840729177767e-02, +-5.926294329477641704e-02, +-5.959965531479947259e-02, +-5.993601428671542497e-02, +-6.027202003031231770e-02, +-6.060767236581009187e-02, +-6.094297111386177968e-02, +-6.127791609555315044e-02, +-6.161250713240304377e-02, +-6.194674404636366788e-02, +-6.228062665982029428e-02, +-6.261415479559194475e-02, +-6.294732827692978150e-02, +-6.328014692752126358e-02, +-6.361261057148495657e-02, +-6.394471903337467511e-02, +-6.427647213817822003e-02, +-6.460786971131667056e-02, +-6.493891157864635499e-02, +-6.526959756645757393e-02, +-6.559992750147498886e-02, +-6.592990121085745558e-02, +-6.625951852219941207e-02, +-6.658877926352958776e-02, +-6.691768326331191952e-02, +-6.724623035044482999e-02, +-6.757442035426211580e-02, +-6.790225310453378016e-02, +-6.822972843146361821e-02, +-6.855684616569196477e-02, +-6.888360613829438983e-02, +-6.921000818078261452e-02, +-6.953605212510385880e-02, +-6.986173780364100805e-02, +-7.018706504921322364e-02, +-7.051203369507585972e-02, +-7.083664357492075458e-02, +-7.116089452287575889e-02, +-7.148478637350534626e-02, +-7.180831896181037732e-02, +-7.213149212322884918e-02, +-7.245430569363500717e-02, +-7.277675950934049676e-02, +-7.309885340709335044e-02, +-7.342058722407916738e-02, +-7.374196079792053049e-02, +-7.406297396667757549e-02, +-7.438362656884796309e-02, +-7.470391844336624065e-02, +-7.502384942960484138e-02, +-7.534341936737433409e-02, +-7.566262809692249347e-02, +-7.598147545893531307e-02, +-7.629996129453699150e-02, +-7.661808544528919684e-02, +-7.693584775319238511e-02, +-7.725324806068488426e-02, +-7.757028621064379625e-02, +-7.788696204638494158e-02, +-7.820327541166154084e-02, +-7.851922615066710132e-02, +-7.883481410803239164e-02, +-7.915003912882805082e-02, +-7.946490105856379715e-02, +-7.977939974318747074e-02, +-8.009353502908661548e-02, +-8.040730676308768810e-02, +-8.072071479245757075e-02, +-8.103375896490126740e-02, +-8.134643912856359682e-02, +-8.165875513202947023e-02, +-8.197070682432304467e-02, +-8.228229405490837534e-02, +-8.259351667368929062e-02, +-8.290437453100973908e-02, +-8.321486747765316494e-02, +-8.352499536484442322e-02, +-8.383475804424704581e-02, +-8.414415536796582273e-02, +-8.445318718854567808e-02, +-8.476185335897160056e-02, +-8.507015373267003133e-02, +-8.537808816350707375e-02, +-8.568565650578979787e-02, +-8.599285861426629596e-02, +-8.629969434412597395e-02, +-8.660616355099770569e-02, +-8.691226609095327460e-02, +-8.721800182050391814e-02, +-8.752337059660303398e-02, +-8.782837227664502810e-02, +-8.813300671846596712e-02, +-8.843727378034245412e-02, +-8.874117332099297484e-02, +-8.904470519957831398e-02, +-8.934786927570072257e-02, +-8.965066540940284934e-02, +-8.995309346117050242e-02, +-9.025515329193077585e-02, +-9.055684476305347896e-02, +-9.085816773634915189e-02, +-9.115912207407156354e-02, +-9.145970763891578259e-02, +-9.175992429402012041e-02, +-9.205977190296385504e-02, +-9.235925032976988192e-02, +-9.265835943890310400e-02, +-9.295709909527025139e-02, +-9.325546916422197685e-02, +-9.355346951155041335e-02, +-9.385110000349089487e-02, +-9.414836050672140133e-02, +-9.444525088836307203e-02, +-9.474177101597987261e-02, +-9.503792075757810931e-02, +-9.533369998160791392e-02, +-9.562910855696195311e-02, +-9.592414635297674685e-02, +-9.621881323943165532e-02, +-9.651310908654908705e-02, +-9.680703376499510959e-02, +-9.710058714587904705e-02, +-9.739376910075392413e-02, +-9.768657950161620251e-02, +-9.797901822090560042e-02, +-9.827108513150623059e-02, +-9.856278010674551782e-02, +-9.885410302039449038e-02, +-9.914505374666786330e-02, +-9.943563216022514861e-02, +-9.972583813616839321e-02, +-1.000156715500453292e-01, +-1.003051322778463345e-01, +-1.005942201960063065e-01, +-1.008829351814049813e-01, +-1.011712771113651155e-01, +-1.014592458636543598e-01, +-1.017468413164855506e-01, +-1.020340633485144338e-01, +-1.023209118388417188e-01, +-1.026073866670126622e-01, +-1.028934877130175812e-01, +-1.031792148572899664e-01, +-1.034645679807094237e-01, +-1.037495469645998286e-01, +-1.040341516907290209e-01, +-1.043183820413106089e-01, +-1.046022378990017487e-01, +-1.048857191469062394e-01, +-1.051688256685716916e-01, +-1.054515573479902074e-01, +-1.057339140695998936e-01, +-1.060158957182836953e-01, +-1.062975021793690078e-01, +-1.065787333386291336e-01, +-1.068595890822819638e-01, +-1.071400692969910889e-01, +-1.074201738698647712e-01, +-1.076999026884575689e-01, +-1.079792556407679766e-01, +-1.082582326152410762e-01, +-1.085368335007665802e-01, +-1.088150581866803301e-01, +-1.090929065627633671e-01, +-1.093703785192417788e-01, +-1.096474739467878101e-01, +-1.099241927365191551e-01, +-1.102005347799993318e-01, +-1.104764999692373767e-01, +-1.107520881966875953e-01, +-1.110272993552508941e-01, +-1.113021333382732125e-01, +-1.115765900395468968e-01, +-1.118506693533097840e-01, +-1.121243711742452437e-01, +-1.123976953974832049e-01, +-1.126706419185998648e-01, +-1.129432106336162450e-01, +-1.132154014389995245e-01, +-1.134872142316642324e-01, +-1.137586489089699449e-01, +-1.140297053687218259e-01, +-1.143003835091722237e-01, +-1.145706832290189492e-01, +-1.148406044274064564e-01, +-1.151101470039248009e-01, +-1.153793108586114446e-01, +-1.156480958919477442e-01, +-1.159165020048641553e-01, +-1.161845290987357504e-01, +-1.164521770753838698e-01, +-1.167194458370770516e-01, +-1.169863352865294914e-01, +-1.172528453269022775e-01, +-1.175189758618023494e-01, +-1.177847267952835397e-01, +-1.180500980318457127e-01, +-1.183150894764358751e-01, +-1.185797010344470936e-01, +-1.188439326117179812e-01, +-1.191077841145358196e-01, +-1.193712554496327016e-01, +-1.196343465241876541e-01, +-1.198970572458267353e-01, +-1.201593875226218411e-01, +-1.204213372630923290e-01, +-1.206829063762035886e-01, +-1.209440947713683462e-01, +-1.212049023584443885e-01, +-1.214653290477376718e-01, +-1.217253747500003230e-01, +-1.219850393764315699e-01, +-1.222443228386763114e-01, +-1.225032250488272967e-01, +-1.227617459194228766e-01, +-1.230198853634494466e-01, +-1.232776432943387679e-01, +-1.235350196259705491e-01, +-1.237920142726699896e-01, +-1.240486271492105691e-01, +-1.243048581708105366e-01, +-1.245607072531374204e-01, +-1.248161743123033657e-01, +-1.250712592648679788e-01, +-1.253259620278383280e-01, +-1.255802825186674854e-01, +-1.258342206552555964e-01, +-1.260877763559492548e-01, +-1.263409495395427795e-01, +-1.265937401252757166e-01, +-1.268461480328365865e-01, +-1.270981731823588035e-01, +-1.273498154944230076e-01, +-1.276010748900576475e-01, +-1.278519512907362321e-01, +-1.281024446183814391e-01, +-1.283525547953603685e-01, +-1.286022817444882338e-01, +-1.288516253890270025e-01, +-1.291005856526848961e-01, +-1.293491624596174172e-01, +-1.295973557344263505e-01, +-1.298451654021606227e-01, +-1.300925913883157758e-01, +-1.303396336188346327e-01, +-1.305862920201063815e-01, +-1.308325665189666587e-01, +-1.310784570426979101e-01, +-1.313239635190297794e-01, +-1.315690858761385806e-01, +-1.318138240426470487e-01, +-1.320581779476243112e-01, +-1.323021475205875541e-01, +-1.325457326914981360e-01, +-1.327889333907674163e-01, +-1.330317495492507329e-01, +-1.332741810982515374e-01, +-1.335162279695188692e-01, +-1.337578900952489380e-01, +-1.339991674080844297e-01, +-1.342400598411155055e-01, +-1.344805673278773872e-01, +-1.347206898023532440e-01, +-1.349604271989709448e-01, +-1.351997794526080265e-01, +-1.354387464985846723e-01, +-1.356773282726707608e-01, +-1.359155247110808151e-01, +-1.361533357504766950e-01, +-1.363907613279657649e-01, +-1.366278013811032532e-01, +-1.368644558478893380e-01, +-1.371007246667717283e-01, +-1.373366077766436100e-01, +-1.375721051168446729e-01, +-1.378072166271615828e-01, +-1.380419422478258162e-01, +-1.382762819195176573e-01, +-1.385102355833605359e-01, +-1.387438031809264394e-01, +-1.389769846542322218e-01, +-1.392097799457414908e-01, +-1.394421889983643303e-01, +-1.396742117554554130e-01, +-1.399058481608175530e-01, +-1.401370981586984310e-01, +-1.403679616937912045e-01, +-1.405984387112367007e-01, +-1.408285291566199471e-01, +-1.410582329759728637e-01, +-1.412875501157734026e-01, +-1.415164805229448541e-01, +-1.417450241448563741e-01, +-1.419731809293232061e-01, +-1.422009508246062648e-01, +-1.424283337794119142e-01, +-1.426553297428930223e-01, +-1.428819386646471290e-01, +-1.431081604947184449e-01, +-1.433339951835954917e-01, +-1.435594426822133507e-01, +-1.437845029419521081e-01, +-1.440091759146374661e-01, +-1.442334615525411590e-01, +-1.444573598083789268e-01, +-1.446808706353142349e-01, +-1.449039939869527505e-01, +-1.451267298173477549e-01, +-1.453490780809972016e-01, +-1.455710387328440769e-01, +-1.457926117282758449e-01, +-1.460137970231268623e-01, +-1.462345945736753527e-01, +-1.464550043366439902e-01, +-1.466750262692021189e-01, +-1.468946603289626451e-01, +-1.471139064739836744e-01, +-1.473327646627681786e-01, +-1.475512348542649121e-01, +-1.477693170078654417e-01, +-1.479870110834079489e-01, +-1.482043170411741495e-01, +-1.484212348418902649e-01, +-1.486377644467289372e-01, +-1.488539058173044827e-01, +-1.490696589156778329e-01, +-1.492850237043528427e-01, +-1.495000001462796213e-01, +-1.497145882048507848e-01, +-1.499287878439040655e-01, +-1.501425990277208689e-01, +-1.503560217210276884e-01, +-1.505690558889949404e-01, +-1.507817014972353542e-01, +-1.509939585118082739e-01, +-1.512058268992151899e-01, +-1.514173066264015155e-01, +-1.516283976607580297e-01, +-1.518390999701181576e-01, +-1.520494135227574706e-01, +-1.522593382873992929e-01, +-1.524688742332061253e-01, +-1.526780213297871946e-01, +-1.528867795471929858e-01, +-1.530951488559192386e-01, +-1.533031292269038393e-01, +-1.535107206315284023e-01, +-1.537179230416174658e-01, +-1.539247364294390463e-01, +-1.541311607677044171e-01, +-1.543371960295674417e-01, +-1.545428421886252957e-01, +-1.547480992189178561e-01, +-1.549529670949281734e-01, +-1.551574457915822769e-01, +-1.553615352842475927e-01, +-1.555652355487359972e-01, +-1.557685465613000420e-01, +-1.559714682986370615e-01, +-1.561740007378849826e-01, +-1.563761438566241557e-01, +-1.565778976328791317e-01, +-1.567792620451144148e-01, +-1.569802370722382934e-01, +-1.571808226936001196e-01, +-1.573810188889912254e-01, +-1.575808256386464767e-01, +-1.577802429232409986e-01, +-1.579792707238923122e-01, +-1.581779090221595296e-01, +-1.583761578000434656e-01, +-1.585740170399867477e-01, +-1.587714867248732897e-01, +-1.589685668380278194e-01, +-1.591652573632189316e-01, +-1.593615582846529266e-01, +-1.595574695869792226e-01, +-1.597529912552892728e-01, +-1.599481232751139570e-01, +-1.601428656324255240e-01, +-1.603372183136378137e-01, +-1.605311813056046200e-01, +-1.607247545956203838e-01, +-1.609179381714217483e-01, +-1.611107320211840888e-01, +-1.613031361335243719e-01, +-1.614951504974994900e-01, +-1.616867751026068445e-01, +-1.618780099387832072e-01, +-1.620688549964072744e-01, +-1.622593102662971964e-01, +-1.624493757397096894e-01, +-1.626390514083432826e-01, +-1.628283372643357096e-01, +-1.630172333002634366e-01, +-1.632057395091444374e-01, +-1.633938558844334477e-01, +-1.635815824200285984e-01, +-1.637689191102637276e-01, +-1.639558659499139037e-01, +-1.641424229341925112e-01, +-1.643285900587533321e-01, +-1.645143673196880207e-01, +-1.646997547135273798e-01, +-1.648847522372405006e-01, +-1.650693598882370661e-01, +-1.652535776643624110e-01, +-1.654374055639045715e-01, +-1.656208435855860139e-01, +-1.658038917285696578e-01, +-1.659865499924557675e-01, +-1.661688183772844218e-01, +-1.663506968835321287e-01, +-1.665321855121134342e-01, +-1.667132842643822555e-01, +-1.668939931421281053e-01, +-1.670743121475806725e-01, +-1.672542412834042702e-01, +-1.674337805527040812e-01, +-1.676129299590202182e-01, +-1.677916895063303881e-01, +-1.679700591990512248e-01, +-1.681480390420339865e-01, +-1.683256290405687194e-01, +-1.685028292003815931e-01, +-1.686796395276361216e-01, +-1.688560600289317204e-01, +-1.690320907113044557e-01, +-1.692077315822282657e-01, +-1.693829826496111302e-01, +-1.695578439217992894e-01, +-1.697323154075744411e-01, +-1.699063971161536291e-01, +-1.700800890571914914e-01, +-1.702533912407766248e-01, +-1.704263036774348039e-01, +-1.705988263781267888e-01, +-1.707709593542490190e-01, +-1.709427026176324194e-01, +-1.711140561805449267e-01, +-1.712850200556885749e-01, +-1.714555942562007995e-01, +-1.716257787956535774e-01, +-1.717955736880537876e-01, +-1.719649789478442381e-01, +-1.721339945898997525e-01, +-1.723026206295328600e-01, +-1.724708570824884379e-01, +-1.726387039649460442e-01, +-1.728061612935189728e-01, +-1.729732290852550036e-01, +-1.731399073576370407e-01, +-1.733061961285795594e-01, +-1.734720954164325757e-01, +-1.736376052399785930e-01, +-1.738027256184341562e-01, +-1.739674565714487697e-01, +-1.741317981191042585e-01, +-1.742957502819189874e-01, +-1.744593130808394232e-01, +-1.746224865372484891e-01, +-1.747852706729615402e-01, +-1.749476655102245315e-01, +-1.751096710717169602e-01, +-1.752712873805515048e-01, +-1.754325144602726372e-01, +-1.755933523348565395e-01, +-1.757538010287111041e-01, +-1.759138605666772104e-01, +-1.760735309740268373e-01, +-1.762328122764637017e-01, +-1.763917045001223149e-01, +-1.765502076715697310e-01, +-1.767083218178031045e-01, +-1.768660469662526047e-01, +-1.770233831447767525e-01, +-1.771803303816665287e-01, +-1.773368887056434862e-01, +-1.774930581458606382e-01, +-1.776488387318992113e-01, +-1.778042304937718643e-01, +-1.779592334619223282e-01, +-1.781138476672236848e-01, +-1.782680731409784503e-01, +-1.784219099149199628e-01, +-1.785753580212107727e-01, +-1.787284174924422819e-01, +-1.788810883616364922e-01, +-1.790333706622442012e-01, +-1.791852644281446416e-01, +-1.793367696936471745e-01, +-1.794878864934894569e-01, +-1.796386148628374979e-01, +-1.797889548372862134e-01, +-1.799389064528601478e-01, +-1.800884697460100325e-01, +-1.802376447536154502e-01, +-1.803864315129858065e-01, +-1.805348300618555279e-01, +-1.806828404383885034e-01, +-1.808304626811760851e-01, +-1.809776968292373667e-01, +-1.811245429220179337e-01, +-1.812710009993897808e-01, +-1.814170711016550308e-01, +-1.815627532695393287e-01, +-1.817080475441973098e-01, +-1.818529539672086581e-01, +-1.819974725805807991e-01, +-1.821416034267462902e-01, +-1.822853465485651803e-01, +-1.824287019893227058e-01, +-1.825716697927295129e-01, +-1.827142500029232397e-01, +-1.828564426644657681e-01, +-1.829982478223454723e-01, +-1.831396655219756919e-01, +-1.832806958091941496e-01, +-1.834213387302641440e-01, +-1.835615943318744947e-01, +-1.837014626611381263e-01, +-1.838409437655914302e-01, +-1.839800376931970127e-01, +-1.841187444923399197e-01, +-1.842570642118310509e-01, +-1.843949969009035239e-01, +-1.845325426092157273e-01, +-1.846697013868486559e-01, +-1.848064732843059388e-01, +-1.849428583525168923e-01, +-1.850788566428330784e-01, +-1.852144682070268056e-01, +-1.853496930972962642e-01, +-1.854845313662602801e-01, +-1.856189830669618401e-01, +-1.857530482528650106e-01, +-1.858867269778560205e-01, +-1.860200192962433718e-01, +-1.861529252627583120e-01, +-1.862854449325522521e-01, +-1.864175783611997372e-01, +-1.865493256046958093e-01, +-1.866806867194556740e-01, +-1.868116617623178100e-01, +-1.869422507905406095e-01, +-1.870724538618029897e-01, +-1.872022710342035323e-01, +-1.873317023662633418e-01, +-1.874607479169228264e-01, +-1.875894077455412812e-01, +-1.877176819118991369e-01, +-1.878455704761976264e-01, +-1.879730734990543717e-01, +-1.881001910415088796e-01, +-1.882269231650205432e-01, +-1.883532699314647840e-01, +-1.884792314031395188e-01, +-1.886048076427576936e-01, +-1.887299987134540558e-01, +-1.888548046787796031e-01, +-1.889792256027053030e-01, +-1.891032615496187896e-01, +-1.892269125843249744e-01, +-1.893501787720487106e-01, +-1.894730601784311297e-01, +-1.895955568695301963e-01, +-1.897176689118214021e-01, +-1.898393963721980715e-01, +-1.899607393179685577e-01, +-1.900816978168611004e-01, +-1.902022719370168313e-01, +-1.903224617469949365e-01, +-1.904422673157707413e-01, +-1.905616887127344894e-01, +-1.906807260076944788e-01, +-1.907993792708714276e-01, +-1.909176485729043582e-01, +-1.910355339848464618e-01, +-1.911530355781642099e-01, +-1.912701534247422119e-01, +-1.913868875968779693e-01, +-1.915032381672829576e-01, +-1.916192052090839038e-01, +-1.917347887958212038e-01, +-1.918499890014503939e-01, +-1.919648059003390139e-01, +-1.920792395672697717e-01, +-1.921932900774375452e-01, +-1.923069575064510484e-01, +-1.924202419303318035e-01, +-1.925331434255149743e-01, +-1.926456620688472565e-01, +-1.927577979375890704e-01, +-1.928695511094117854e-01, +-1.929809216623988577e-01, +-1.930919096750482733e-01, +-1.932025152262666357e-01, +-1.933127383953724132e-01, +-1.934225792620984929e-01, +-1.935320379065846863e-01, +-1.936411144093852787e-01, +-1.937498088514631456e-01, +-1.938581213141932214e-01, +-1.939660518793587252e-01, +-1.940736006291561844e-01, +-1.941807676461894672e-01, +-1.942875530134741402e-01, +-1.943939568144330554e-01, +-1.944999791329013183e-01, +-1.946056200531222080e-01, +-1.947108796597464553e-01, +-1.948157580378360731e-01, +-1.949202552728600546e-01, +-1.950243714506965931e-01, +-1.951281066576325274e-01, +-1.952314609803610101e-01, +-1.953344345059856713e-01, +-1.954370273220161491e-01, +-1.955392395163689234e-01, +-1.956410711773697020e-01, +-1.957425223937498127e-01, +-1.958435932546477298e-01, +-1.959442838496086858e-01, +-1.960445942685852538e-01, +-1.961445246019340727e-01, +-1.962440749404205098e-01, +-1.963432453752139428e-01, +-1.964420359978902852e-01, +-1.965404469004307930e-01, +-1.966384781752214816e-01, +-1.967361299150535425e-01, +-1.968334022131235095e-01, +-1.969302951630320098e-01, +-1.970268088587853461e-01, +-1.971229433947912224e-01, +-1.972186988658648499e-01, +-1.973140753672230352e-01, +-1.974090729944866507e-01, +-1.975036918436801348e-01, +-1.975979320112310200e-01, +-1.976917935939706550e-01, +-1.977852766891315672e-01, +-1.978783813943497116e-01, +-1.979711078076634156e-01, +-1.980634560275129075e-01, +-1.981554261527404825e-01, +-1.982470182825912253e-01, +-1.983382325167095672e-01, +-1.984290689551417020e-01, +-1.985195276983372503e-01, +-1.986096088471439036e-01, +-1.986993125028113927e-01, +-1.987886387669899890e-01, +-1.988775877417285343e-01, +-1.989661595294779373e-01, +-1.990543542330885651e-01, +-1.991421719558086612e-01, +-1.992296128012882583e-01, +-1.993166768735747385e-01, +-1.994033642771148862e-01, +-1.994896751167542504e-01, +-1.995756094977370887e-01, +-1.996611675257054241e-01, +-1.997463493067005713e-01, +-1.998311549471592230e-01, +-1.999155845539179188e-01, +-1.999996382342104084e-01, +-2.000833160956657364e-01, +-2.001666182463126276e-01, +-2.002495447945743801e-01, +-2.003320958492706416e-01, +-2.004142715196198521e-01, +-2.004960719152339976e-01, +-2.005774971461216361e-01, +-2.006585473226870642e-01, +-2.007392225557299292e-01, +-2.008195229564442852e-01, +-2.008994486364219789e-01, +-2.009789997076454060e-01, +-2.010581762824937280e-01, +-2.011369784737403466e-01, +-2.012154063945523486e-01, +-2.012934601584906724e-01, +-2.013711398795095808e-01, +-2.014484456719577987e-01, +-2.015253776505746552e-01, +-2.016019359304946912e-01, +-2.016781206272443006e-01, +-2.017539318567422302e-01, +-2.018293697352995797e-01, +-2.019044343796192464e-01, +-2.019791259067957034e-01, +-2.020534444343158320e-01, +-2.021273900800557299e-01, +-2.022009629622844029e-01, +-2.022741631996609613e-01, +-2.023469909112353138e-01, +-2.024194462164470576e-01, +-2.024915292351266438e-01, +-2.025632400874940175e-01, +-2.026345788941577575e-01, +-2.027055457761183510e-01, +-2.027761408547630317e-01, +-2.028463642518686660e-01, +-2.029162160896001987e-01, +-2.029856964905131234e-01, +-2.030548055775486804e-01, +-2.031235434740363555e-01, +-2.031919103036946284e-01, +-2.032599061906295856e-01, +-2.033275312593321171e-01, +-2.033947856346823568e-01, +-2.034616694419466298e-01, +-2.035281828067773968e-01, +-2.035943258552137813e-01, +-2.036600987136805430e-01, +-2.037255015089877164e-01, +-2.037905343683329984e-01, +-2.038551974192970018e-01, +-2.039194907898456699e-01, +-2.039834146083308875e-01, +-2.040469690034884265e-01, +-2.041101541044386958e-01, +-2.041729700406856585e-01, +-2.042354169421172483e-01, +-2.042974949390050921e-01, +-2.043592041620033162e-01, +-2.044205447421506283e-01, +-2.044815168108681525e-01, +-2.045421204999580134e-01, +-2.046023559416063065e-01, +-2.046622232683808496e-01, +-2.047217226132302392e-01, +-2.047808541094869039e-01, +-2.048396178908618859e-01, +-2.048980140914491432e-01, +-2.049560428457229133e-01, +-2.050137042885379068e-01, +-2.050709985551291969e-01, +-2.051279257811112200e-01, +-2.051844861024794409e-01, +-2.052406796556084656e-01, +-2.052965065772518471e-01, +-2.053519670045422518e-01, +-2.054070610749914871e-01, +-2.054617889264886699e-01, +-2.055161506973029462e-01, +-2.055701465260805216e-01, +-2.056237765518454663e-01, +-2.056770409139993538e-01, +-2.057299397523202622e-01, +-2.057824732069647444e-01, +-2.058346414184651918e-01, +-2.058864445277298061e-01, +-2.059378826760452919e-01, +-2.059889560050711943e-01, +-2.060396646568449508e-01, +-2.060900087737788933e-01, +-2.061399884986596653e-01, +-2.061896039746506926e-01, +-2.062388553452868534e-01, +-2.062877427544816122e-01, +-2.063362663465193592e-01, +-2.063844262660587403e-01, +-2.064322226581331576e-01, +-2.064796556681488815e-01, +-2.065267254418840515e-01, +-2.065734321254913686e-01, +-2.066197758654955141e-01, +-2.066657568087929830e-01, +-2.067113751026517510e-01, +-2.067566308947129672e-01, +-2.068015243329885955e-01, +-2.068460555658607480e-01, +-2.068902247420844054e-01, +-2.069340320107840026e-01, +-2.069774775214545670e-01, +-2.070205614239605529e-01, +-2.070632838685375343e-01, +-2.071056450057901788e-01, +-2.071476449866916925e-01, +-2.071892839625854577e-01, +-2.072305620851824515e-01, +-2.072714795065643267e-01, +-2.073120363791780274e-01, +-2.073522328558396743e-01, +-2.073920690897347596e-01, +-2.074315452344132893e-01, +-2.074706614437935304e-01, +-2.075094178721625382e-01, +-2.075478146741705499e-01, +-2.075858520048367017e-01, +-2.076235300195436728e-01, +-2.076608488740437353e-01, +-2.076978087244515936e-01, +-2.077344097272471046e-01, +-2.077706520392767209e-01, +-2.078065358177499655e-01, +-2.078420612202420414e-01, +-2.078772284046916663e-01, +-2.079120375294006839e-01, +-2.079464887530358408e-01, +-2.079805822346257604e-01, +-2.080143181335633307e-01, +-2.080476966096034830e-01, +-2.080807178228636645e-01, +-2.081133819338218394e-01, +-2.081456891033209022e-01, +-2.081776394925644036e-01, +-2.082092332631143017e-01, +-2.082404705768981235e-01, +-2.082713515961994721e-01, +-2.083018764836662429e-01, +-2.083320454023048773e-01, +-2.083618585154817515e-01, +-2.083913159869221210e-01, +-2.084204179807111756e-01, +-2.084491646612947058e-01, +-2.084775561934734678e-01, +-2.085055927424111777e-01, +-2.085332744736250465e-01, +-2.085606015529949397e-01, +-2.085875741467535516e-01, +-2.086141924214954535e-01, +-2.086404565441685177e-01, +-2.086663666820795238e-01, +-2.086919230028902450e-01, +-2.087171256746191417e-01, +-2.087419748656416940e-01, +-2.087664707446869605e-01, +-2.087906134808410474e-01, +-2.088144032435443331e-01, +-2.088378402025907743e-01, +-2.088609245281305982e-01, +-2.088836563906665555e-01, +-2.089060359610557527e-01, +-2.089280634105099843e-01, +-2.089497389105929304e-01, +-2.089710626332210164e-01, +-2.089920347506637743e-01, +-2.090126554355437039e-01, +-2.090329248608347457e-01, +-2.090528431998621428e-01, +-2.090724106263028015e-01, +-2.090916273141851245e-01, +-2.091104934378898161e-01, +-2.091290091721450251e-01, +-2.091471746920308961e-01, +-2.091649901729782657e-01, +-2.091824557907651094e-01, +-2.091995717215228423e-01, +-2.092163381417279366e-01, +-2.092327552282081948e-01, +-2.092488231581375591e-01, +-2.092645421090410240e-01, +-2.092799122587900018e-01, +-2.092949337856027936e-01, +-2.093096068680457833e-01, +-2.093239316850328269e-01, +-2.093379084158241421e-01, +-2.093515372400243935e-01, +-2.093648183375875493e-01, +-2.093777518888117195e-01, +-2.093903380743398490e-01, +-2.094025770751607174e-01, +-2.094144690726088276e-01, +-2.094260142483616582e-01, +-2.094372127844415232e-01, +-2.094480648632157382e-01, +-2.094585706673935399e-01, +-2.094687303800290279e-01, +-2.094785441845180285e-01, +-2.094880122645994547e-01, +-2.094971348043558335e-01, +-2.095059119882099474e-01, +-2.095143440009272495e-01, +-2.095224310276153912e-01, +-2.095301732537212802e-01, +-2.095375708650358826e-01, +-2.095446240476873667e-01, +-2.095513329881455999e-01, +-2.095576978732202611e-01, +-2.095637188900616177e-01, +-2.095693962261575560e-01, +-2.095747300693360238e-01, +-2.095797206077640029e-01, +-2.095843680299457334e-01, +-2.095886725247239901e-01, +-2.095926342812803045e-01, +-2.095962534891322171e-01, +-2.095995303381348596e-01, +-2.096024650184802607e-01, +-2.096050577206979570e-01, +-2.096073086356520510e-01, +-2.096092179545432088e-01, +-2.096107858689083836e-01, +-2.096120125706184278e-01, +-2.096128982518798145e-01, +-2.096134431052337488e-01, +-2.096136473235569730e-01, +-2.096135111000559659e-01, +-2.096130346282760737e-01, +-2.096122181020937114e-01, +-2.096110617157176115e-01, +-2.096095656636899340e-01, +-2.096077301408852955e-01, +-2.096055553425103246e-01, +-2.096030414641042450e-01, +-2.096001887015360721e-01, +-2.095969972510070556e-01, +-2.095934673090494860e-01, +-2.095895990725242519e-01, +-2.095853927386253923e-01, +-2.095808485048742675e-01, +-2.095759665691228624e-01, +-2.095707471295527313e-01, +-2.095651903846732222e-01, +-2.095592965333226421e-01, +-2.095530657746669245e-01, +-2.095464983082028221e-01, +-2.095395943337503286e-01, +-2.095323540514602567e-01, +-2.095247776618081870e-01, +-2.095168653655970770e-01, +-2.095086173639561511e-01, +-2.095000338583406785e-01, +-2.094911150505320840e-01, +-2.094818611426349786e-01, +-2.094722723370819606e-01, +-2.094623488366282316e-01, +-2.094520908443534557e-01, +-2.094414985636627036e-01, +-2.094305721982822055e-01, +-2.094193119522644309e-01, +-2.094077180299828145e-01, +-2.093957906361332000e-01, +-2.093835299757370594e-01, +-2.093709362541333052e-01, +-2.093580096769853960e-01, +-2.093447504502775613e-01, +-2.093311587803157736e-01, +-2.093172348737251665e-01, +-2.093029789374514227e-01, +-2.092883911787622175e-01, +-2.092734718052428611e-01, +-2.092582210247987407e-01, +-2.092426390456550434e-01, +-2.092267260763535086e-01, +-2.092104823257563140e-01, +-2.091939080030430498e-01, +-2.091770033177116073e-01, +-2.091597684795752921e-01, +-2.091422036987672095e-01, +-2.091243091857349912e-01, +-2.091060851512433205e-01, +-2.090875318063729893e-01, +-2.090686493625197873e-01, +-2.090494380313976663e-01, +-2.090298980250304695e-01, +-2.090100295557626997e-01, +-2.089898328362481128e-01, +-2.089693080794571556e-01, +-2.089484554986735243e-01, +-2.089272753074940536e-01, +-2.089057677198284946e-01, +-2.088839329499001807e-01, +-2.088617712122425307e-01, +-2.088392827217036007e-01, +-2.088164676934406161e-01, +-2.087933263429239128e-01, +-2.087698588859349946e-01, +-2.087460655385635910e-01, +-2.087219465172127641e-01, +-2.086975020385925805e-01, +-2.086727323197256068e-01, +-2.086476375779405812e-01, +-2.086222180308784091e-01, +-2.085964738964851406e-01, +-2.085704053930176882e-01, +-2.085440127390398857e-01, +-2.085172961534237923e-01, +-2.084902558553468066e-01, +-2.084628920642947192e-01, +-2.084352050000596035e-01, +-2.084071948827402321e-01, +-2.083788619327389957e-01, +-2.083502063707660390e-01, +-2.083212284178357077e-01, +-2.082919282952672146e-01, +-2.082623062246841406e-01, +-2.082323624280141561e-01, +-2.082020971274886889e-01, +-2.081715105456418968e-01, +-2.081406029053129159e-01, +-2.081093744296408921e-01, +-2.080778253420699497e-01, +-2.080459558663434461e-01, +-2.080137662265086340e-01, +-2.079812566469138591e-01, +-2.079484273522063109e-01, +-2.079152785673358261e-01, +-2.078818105175521680e-01, +-2.078480234284043882e-01, +-2.078139175257407156e-01, +-2.077794930357105829e-01, +-2.077447501847593525e-01, +-2.077096891996332018e-01, +-2.076743103073761532e-01, +-2.076386137353281036e-01, +-2.076025997111284327e-01, +-2.075662684627126164e-01, +-2.075296202183125049e-01, +-2.074926552064582097e-01, +-2.074553736559729966e-01, +-2.074177757959780877e-01, +-2.073798618558899409e-01, +-2.073416320654166700e-01, +-2.073030866545660100e-01, +-2.072642258536363247e-01, +-2.072250498932203810e-01, +-2.071855590042063211e-01, +-2.071457534177726933e-01, +-2.071056333653928938e-01, +-2.070651990788314190e-01, +-2.070244507901468911e-01, +-2.069833887316869514e-01, +-2.069420131360925064e-01, +-2.069003242362950634e-01, +-2.068583222655165366e-01, +-2.068160074572684692e-01, +-2.067733800453544490e-01, +-2.067304402638650285e-01, +-2.066871883471817217e-01, +-2.066436245299735908e-01, +-2.065997490472005482e-01, +-2.065555621341075565e-01, +-2.065110640262295960e-01, +-2.064662549593881402e-01, +-2.064211351696912944e-01, +-2.063757048935355443e-01, +-2.063299643676014816e-01, +-2.062839138288571905e-01, +-2.062375535145553329e-01, +-2.061908836622348695e-01, +-2.061439045097191447e-01, +-2.060966162951159975e-01, +-2.060490192568167067e-01, +-2.060011136334976289e-01, +-2.059528996641185883e-01, +-2.059043775879195737e-01, +-2.058555476444268173e-01, +-2.058064100734482982e-01, +-2.057569651150709944e-01, +-2.057072130096674889e-01, +-2.056571539978884200e-01, +-2.056067883206673941e-01, +-2.055561162192165170e-01, +-2.055051379350308072e-01, +-2.054538537098818951e-01, +-2.054022637858222700e-01, +-2.053503684051846967e-01, +-2.052981678105771646e-01, +-2.052456622448902701e-01, +-2.051928519512893623e-01, +-2.051397371732179009e-01, +-2.050863181543966518e-01, +-2.050325951388239920e-01, +-2.049785683707742723e-01, +-2.049242380947976783e-01, +-2.048696045557195089e-01, +-2.048146679986415919e-01, +-2.047594286689395082e-01, +-2.047038868122654509e-01, +-2.046480426745422021e-01, +-2.045918965019705993e-01, +-2.045354485410215972e-01, +-2.044786990384411807e-01, +-2.044216482412466174e-01, +-2.043642963967290671e-01, +-2.043066437524500567e-01, +-2.042486905562442279e-01, +-2.041904370562167559e-01, +-2.041318835007429056e-01, +-2.040730301384698353e-01, +-2.040138772183138494e-01, +-2.039544249894600370e-01, +-2.038946737013661026e-01, +-2.038346236037557602e-01, +-2.037742749466208703e-01, +-2.037136279802247707e-01, +-2.036526829550944773e-01, +-2.035914401220290937e-01, +-2.035298997320905412e-01, +-2.034680620366102755e-01, +-2.034059272871841795e-01, +-2.033434957356757833e-01, +-2.032807676342126280e-01, +-2.032177432351889579e-01, +-2.031544227912623624e-01, +-2.030908065553562458e-01, +-2.030268947806569690e-01, +-2.029626877206153757e-01, +-2.028981856289447105e-01, +-2.028333887596224516e-01, +-2.027682973668877286e-01, +-2.027029117052414897e-01, +-2.026372320294465568e-01, +-2.025712585945285138e-01, +-2.025049916557729868e-01, +-2.024384314687255326e-01, +-2.023715782891924442e-01, +-2.023044323732410554e-01, +-2.022369939771970770e-01, +-2.021692633576441522e-01, +-2.021012407714281034e-01, +-2.020329264756497711e-01, +-2.019643207276688168e-01, +-2.018954237851038613e-01, +-2.018262359058287658e-01, +-2.017567573479760734e-01, +-2.016869883699330679e-01, +-2.016169292303435223e-01, +-2.015465801881089480e-01, +-2.014759415023820444e-01, +-2.014050134325743313e-01, +-2.013337962383492941e-01, +-2.012622901796261021e-01, +-2.011904955165766118e-01, +-2.011184125096268649e-01, +-2.010460414194546463e-01, +-2.009733825069913438e-01, +-2.009004360334209205e-01, +-2.008272022601784168e-01, +-2.007536814489494781e-01, +-2.006798738616720201e-01, +-2.006057797605339532e-01, +-2.005313994079746254e-01, +-2.004567330666814917e-01, +-2.003817809995929733e-01, +-2.003065434698954317e-01, +-2.002310207410242793e-01, +-2.001552130766639515e-01, +-2.000791207407464078e-01, +-2.000027439974494947e-01, +-1.999260831112010806e-01, +-1.998491383466735327e-01, +-1.997719099687864930e-01, +-1.996943982427066833e-01, +-1.996166034338433537e-01, +-1.995385258078540003e-01, +-1.994601656306390081e-01, +-1.993815231683437605e-01, +-1.993025986873576683e-01, +-1.992233924543147239e-01, +-1.991439047360911707e-01, +-1.990641357998046423e-01, +-1.989840859128188255e-01, +-1.989037553427352167e-01, +-1.988231443573998947e-01, +-1.987422532249001339e-01, +-1.986610822135624066e-01, +-1.985796315919554078e-01, +-1.984979016288865028e-01, +-1.984158925934031703e-01, +-1.983336047547923919e-01, +-1.982510383825805966e-01, +-1.981681937465309962e-01, +-1.980850711166471656e-01, +-1.980016707631692130e-01, +-1.979179929565738905e-01, +-1.978340379675757044e-01, +-1.977498060671256108e-01, +-1.976652975264104328e-01, +-1.975805126168537207e-01, +-1.974954516101127266e-01, +-1.974101147780805421e-01, +-1.973245023928854591e-01, +-1.972386147268878065e-01, +-1.971524520526843072e-01, +-1.970660146431031379e-01, +-1.969793027712066213e-01, +-1.968923167102877014e-01, +-1.968050567338742174e-01, +-1.967175231157235471e-01, +-1.966297161298254659e-01, +-1.965416360504008975e-01, +-1.964532831518996381e-01, +-1.963646577090042145e-01, +-1.962757599966250543e-01, +-1.961865902899020686e-01, +-1.960971488642057614e-01, +-1.960074359951327894e-01, +-1.959174519585086538e-01, +-1.958271970303883946e-01, +-1.957366714870525382e-01, +-1.956458756050095671e-01, +-1.955548096609929232e-01, +-1.954634739319644487e-01, +-1.953718686951102235e-01, +-1.952799942278411749e-01, +-1.951878508077954377e-01, +-1.950954387128345235e-01, +-1.950027582210422661e-01, +-1.949098096107292066e-01, +-1.948165931604267098e-01, +-1.947231091488913768e-01, +-1.946293578550997716e-01, +-1.945353395582533895e-01, +-1.944410545377733279e-01, +-1.943465030733033949e-01, +-1.942516854447061403e-01, +-1.941566019320668801e-01, +-1.940612528156909766e-01, +-1.939656383761017011e-01, +-1.938697588940422323e-01, +-1.937736146504763779e-01, +-1.936772059265844947e-01, +-1.935805330037654592e-01, +-1.934835961636359458e-01, +-1.933863956880299828e-01, +-1.932889318589982863e-01, +-1.931912049588082325e-01, +-1.930932152699430526e-01, +-1.929949630751023326e-01, +-1.928964486571989601e-01, +-1.927976722993630654e-01, +-1.926986342849368039e-01, +-1.925993348974789632e-01, +-1.924997744207590789e-01, +-1.923999531387626249e-01, +-1.922998713356860734e-01, +-1.921995292959385593e-01, +-1.920989273041407985e-01, +-1.919980656451269196e-01, +-1.918969446039396898e-01, +-1.917955644658350112e-01, +-1.916939255162773692e-01, +-1.915920280409414977e-01, +-1.914898723257115742e-01, +-1.913874586566822744e-01, +-1.912847873201552751e-01, +-1.911818586026410582e-01, +-1.910786727908573568e-01, +-1.909752301717313472e-01, +-1.908715310323946812e-01, +-1.907675756601882322e-01, +-1.906633643426570157e-01, +-1.905588973675520215e-01, +-1.904541750228314900e-01, +-1.903491975966567773e-01, +-1.902439653773929928e-01, +-1.901384786536136628e-01, +-1.900327377140918206e-01, +-1.899267428478045860e-01, +-1.898204943439334158e-01, +-1.897139924918615217e-01, +-1.896072375811742039e-01, +-1.895002299016586844e-01, +-1.893929697433029413e-01, +-1.892854573962964304e-01, +-1.891776931510278925e-01, +-1.890696772980886287e-01, +-1.889614101282662550e-01, +-1.888528919325507538e-01, +-1.887441230021280614e-01, +-1.886351036283848981e-01, +-1.885258341029040219e-01, +-1.884163147174668929e-01, +-1.883065457640513418e-01, +-1.881965275348336242e-01, +-1.880862603221842566e-01, +-1.879757444186700710e-01, +-1.878649801170547973e-01, +-1.877539677102949833e-01, +-1.876427074915436588e-01, +-1.875311997541474485e-01, +-1.874194447916466000e-01, +-1.873074428977742900e-01, +-1.871951943664587337e-01, +-1.870826994918179387e-01, +-1.869699585681645349e-01, +-1.868569718900004173e-01, +-1.867437397520200770e-01, +-1.866302624491102680e-01, +-1.865165402763462876e-01, +-1.864025735289931429e-01, +-1.862883625025071599e-01, +-1.861739074925330972e-01, +-1.860592087949038131e-01, +-1.859442667056425691e-01, +-1.858290815209579505e-01, +-1.857136535372480302e-01, +-1.855979830510974538e-01, +-1.854820703592767461e-01, +-1.853659157587446982e-01, +-1.852495195466436206e-01, +-1.851328820203028691e-01, +-1.850160034772365125e-01, +-1.848988842151422229e-01, +-1.847815245319034405e-01, +-1.846639247255865701e-01, +-1.845460850944413977e-01, +-1.844280059369007574e-01, +-1.843096875515791433e-01, +-1.841911302372745141e-01, +-1.840723342929652673e-01, +-1.839533000178130151e-01, +-1.838340277111574494e-01, +-1.837145176725205886e-01, +-1.835947702016038907e-01, +-1.834747855982877540e-01, +-1.833545641626329881e-01, +-1.832341061948783989e-01, +-1.831134119954405115e-01, +-1.829924818649149021e-01, +-1.828713161040748381e-01, +-1.827499150138676143e-01, +-1.826282788954208813e-01, +-1.825064080500368169e-01, +-1.823843027791933746e-01, +-1.822619633845433962e-01, +-1.821393901679155825e-01, +-1.820165834313123843e-01, +-1.818935434769110848e-01, +-1.817702706070622176e-01, +-1.816467651242893999e-01, +-1.815230273312885556e-01, +-1.813990575309289144e-01, +-1.812748560262517628e-01, +-1.811504231204684456e-01, +-1.810257591169625313e-01, +-1.809008643192893118e-01, +-1.807757390311719170e-01, +-1.806503835565044791e-01, +-1.805247981993518824e-01, +-1.803989832639452673e-01, +-1.802729390546859711e-01, +-1.801466658761438078e-01, +-1.800201640330552910e-01, +-1.798934338303244951e-01, +-1.797664755730228880e-01, +-1.796392895663878331e-01, +-1.795118761158225051e-01, +-1.793842355268953914e-01, +-1.792563681053422897e-01, +-1.791282741570601189e-01, +-1.789999539881140800e-01, +-1.788714079047296901e-01, +-1.787426362132982227e-01, +-1.786136392203726553e-01, +-1.784844172326685852e-01, +-1.783549705570662280e-01, +-1.782252995006031182e-01, +-1.780954043704826295e-01, +-1.779652854740649548e-01, +-1.778349431188739060e-01, +-1.777043776125921959e-01, +-1.775735892630619650e-01, +-1.774425783782840327e-01, +-1.773113452664190626e-01, +-1.771798902357842320e-01, +-1.770482135948577840e-01, +-1.769163156522721714e-01, +-1.767841967168181927e-01, +-1.766518570974439095e-01, +-1.765192971032525926e-01, +-1.763865170435031937e-01, +-1.762535172276103179e-01, +-1.761202979651437239e-01, +-1.759868595658277135e-01, +-1.758532023395388277e-01, +-1.757193265963104822e-01, +-1.755852326463253898e-01, +-1.754509207999231379e-01, +-1.753163913675919172e-01, +-1.751816446599736010e-01, +-1.750466809878611085e-01, +-1.749115006621998758e-01, +-1.747761039940825545e-01, +-1.746404912947551735e-01, +-1.745046628756119211e-01, +-1.743686190481970599e-01, +-1.742323601242028175e-01, +-1.740958864154705521e-01, +-1.739591982339893372e-01, +-1.738222958918961836e-01, +-1.736851797014743737e-01, +-1.735478499751545167e-01, +-1.734103070255139378e-01, +-1.732725511652748462e-01, +-1.731345827073053623e-01, +-1.729964019646192674e-01, +-1.728580092503733956e-01, +-1.727194048778702695e-01, +-1.725805891605546316e-01, +-1.724415624120157753e-01, +-1.723023249459843254e-01, +-1.721628770763358462e-01, +-1.720232191170843472e-01, +-1.718833513823886661e-01, +-1.717432741865465851e-01, +-1.716029878439979950e-01, +-1.714624926693217311e-01, +-1.713217889772370439e-01, +-1.711808770826030446e-01, +-1.710397573004163452e-01, +-1.708984299458144451e-01, +-1.707568953340704021e-01, +-1.706151537805955243e-01, +-1.704732056009405639e-01, +-1.703310511107892777e-01, +-1.701886906259650889e-01, +-1.700461244624251467e-01, +-1.699033529362632966e-01, +-1.697603763637084984e-01, +-1.696171950611230772e-01, +-1.694738093450045002e-01, +-1.693302195319841830e-01, +-1.691864259388261849e-01, +-1.690424288824274035e-01, +-1.688982286798174637e-01, +-1.687538256481587173e-01, +-1.686092201047436900e-01, +-1.684644123669973570e-01, +-1.683194027524735625e-01, +-1.681741915788582120e-01, +-1.680287791639674677e-01, +-1.678831658257438353e-01, +-1.677373518822626308e-01, +-1.675913376517245423e-01, +-1.674451234524606813e-01, +-1.672987096029290022e-01, +-1.671520964217130811e-01, +-1.670052842275252525e-01, +-1.668582733392049433e-01, +-1.667110640757144824e-01, +-1.665636567561440406e-01, +-1.664160516997080785e-01, +-1.662682492257462619e-01, +-1.661202496537210194e-01, +-1.659720533032206236e-01, +-1.658236604939548053e-01, +-1.656750715457572798e-01, +-1.655262867785829706e-01, +-1.653773065125105357e-01, +-1.652281310677387038e-01, +-1.650787607645879396e-01, +-1.649291959234993055e-01, +-1.647794368650342955e-01, +-1.646294839098746410e-01, +-1.644793373788195623e-01, +-1.643289975927897106e-01, +-1.641784648728227824e-01, +-1.640277395400748239e-01, +-1.638768219158196482e-01, +-1.637257123214484467e-01, +-1.635744110784681793e-01, +-1.634229185085030456e-01, +-1.632712349332939572e-01, +-1.631193606746954572e-01, +-1.629672960546781346e-01, +-1.628150413953268483e-01, +-1.626625970188407266e-01, +-1.625099632475327793e-01, +-1.623571404038288979e-01, +-1.622041288102682444e-01, +-1.620509287895026129e-01, +-1.618975406642947645e-01, +-1.617439647575190376e-01, +-1.615902013921623470e-01, +-1.614362508913202987e-01, +-1.612821135782007698e-01, +-1.611277897761197453e-01, +-1.609732798085030114e-01, +-1.608185839988854615e-01, +-1.606637026709103466e-01, +-1.605086361483291368e-01, +-1.603533847550003832e-01, +-1.601979488148902175e-01, +-1.600423286520714361e-01, +-1.598865245907229449e-01, +-1.597305369551298981e-01, +-1.595743660696821997e-01, +-1.594180122588749748e-01, +-1.592614758473089032e-01, +-1.591047571596863608e-01, +-1.589478565208155281e-01, +-1.587907742556075308e-01, +-1.586335106890742752e-01, +-1.584760661463331388e-01, +-1.583184409526016689e-01, +-1.581606354331979991e-01, +-1.580026499135427642e-01, +-1.578444847191567690e-01, +-1.576861401756609327e-01, +-1.575276166087757057e-01, +-1.573689143443207372e-01, +-1.572100337082149579e-01, +-1.570509750264748317e-01, +-1.568917386252170476e-01, +-1.567323248306517203e-01, +-1.565727339690896058e-01, +-1.564129663669374115e-01, +-1.562530223506972404e-01, +-1.560929022469664251e-01, +-1.559326063824396369e-01, +-1.557721350839042229e-01, +-1.556114886782433426e-01, +-1.554506674924340248e-01, +-1.552896718535464460e-01, +-1.551285020887442079e-01, +-1.549671585252834216e-01, +-1.548056414905121247e-01, +-1.546439513118711973e-01, +-1.544820883168915582e-01, +-1.543200528331966637e-01, +-1.541578451884986767e-01, +-1.539954657106007430e-01, +-1.538329147273957975e-01, +-1.536701925668655377e-01, +-1.535072995570803955e-01, +-1.533442360261999260e-01, +-1.531810023024700040e-01, +-1.530175987142251282e-01, +-1.528540255898865052e-01, +-1.526902832579618285e-01, +-1.525263720470449169e-01, +-1.523622922858144657e-01, +-1.521980443030357955e-01, +-1.520336284275588812e-01, +-1.518690449883162985e-01, +-1.517042943143261935e-01, +-1.515393767346894516e-01, +-1.513742925785909466e-01, +-1.512090421752966818e-01, +-1.510436258541556775e-01, +-1.508780439445982779e-01, +-1.507122967761373444e-01, +-1.505463846783644255e-01, +-1.503803079809537535e-01, +-1.502140670136565548e-01, +-1.500476621063069060e-01, +-1.498810935888157392e-01, +-1.497143617911740332e-01, +-1.495474670434490672e-01, +-1.493804096757871680e-01, +-1.492131900184126836e-01, +-1.490458084016249574e-01, +-1.488782651558015202e-01, +-1.487105606113948431e-01, +-1.485426950989327533e-01, +-1.483746689490192672e-01, +-1.482064824923324531e-01, +-1.480381360596242091e-01, +-1.478696299817209847e-01, +-1.477009645895225320e-01, +-1.475321402140009619e-01, +-1.473631571862009659e-01, +-1.471940158372395668e-01, +-1.470247164983054800e-01, +-1.468552595006584471e-01, +-1.466856451756282653e-01, +-1.465158738546155637e-01, +-1.463459458690918591e-01, +-1.461758615505958647e-01, +-1.460056212307372370e-01, +-1.458352252411933836e-01, +-1.456646739137089364e-01, +-1.454939675800970833e-01, +-1.453231065722392912e-01, +-1.451520912220814752e-01, +-1.449809218616375239e-01, +-1.448095988229862185e-01, +-1.446381224382728425e-01, +-1.444664930397069336e-01, +-1.442947109595623945e-01, +-1.441227765301779928e-01, +-1.439506900839555292e-01, +-1.437784519533605310e-01, +-1.436060624709215583e-01, +-1.434335219692280949e-01, +-1.432608307809333237e-01, +-1.430879892387511010e-01, +-1.429149976754560125e-01, +-1.427418564238842336e-01, +-1.425685658169306147e-01, +-1.423951261875513741e-01, +-1.422215378687605725e-01, +-1.420478011936327778e-01, +-1.418739164952989573e-01, +-1.416998841069500581e-01, +-1.415257043618333155e-01, +-1.413513775932534466e-01, +-1.411769041345707909e-01, +-1.410022843192037800e-01, +-1.408275184806256908e-01, +-1.406526069523646449e-01, +-1.404775500680047196e-01, +-1.403023481611838097e-01, +-1.401270015655933787e-01, +-1.399515106149791521e-01, +-1.397758756431401461e-01, +-1.396000969839279460e-01, +-1.394241749712454292e-01, +-1.392481099390485422e-01, +-1.390719022213443290e-01, +-1.388955521521904324e-01, +-1.387190600656953987e-01, +-1.385424262960177344e-01, +-1.383656511773649067e-01, +-1.381887350439944817e-01, +-1.380116782302126255e-01, +-1.378344810703737988e-01, +-1.376571438988791474e-01, +-1.374796670501791940e-01, +-1.373020508587705912e-01, +-1.371242956591960938e-01, +-1.369464017860454463e-01, +-1.367683695739532468e-01, +-1.365901993575995288e-01, +-1.364118914717097897e-01, +-1.362334462510535749e-01, +-1.360548640304431456e-01, +-1.358761451447368096e-01, +-1.356972899288331758e-01, +-1.355182987176752341e-01, +-1.353391718462478022e-01, +-1.351599096495768870e-01, +-1.349805124627303510e-01, +-1.348009806208163852e-01, +-1.346213144589845090e-01, +-1.344415143124237932e-01, +-1.342615805163616116e-01, +-1.340815134060667768e-01, +-1.339013133168453773e-01, +-1.337209805840413879e-01, +-1.335405155430373081e-01, +-1.333599185292530520e-01, +-1.331791898781449213e-01, +-1.329983299252057993e-01, +-1.328173390059649017e-01, +-1.326362174559877760e-01, +-1.324549656108729712e-01, +-1.322735838062555069e-01, +-1.320920723778052364e-01, +-1.319104316612234595e-01, +-1.317286619922470037e-01, +-1.315467637066456419e-01, +-1.313647371402194008e-01, +-1.311825826288037233e-01, +-1.310003005082633898e-01, +-1.308178911144951551e-01, +-1.306353547834266660e-01, +-1.304526918510150457e-01, +-1.302699026532493920e-01, +-1.300869875261456143e-01, +-1.299039468057504032e-01, +-1.297207808281391206e-01, +-1.295374899294144677e-01, +-1.293540744457072067e-01, +-1.291705347131759107e-01, +-1.289868710680050767e-01, +-1.288030838464062633e-01, +-1.286191733846170915e-01, +-1.284351400188998293e-01, +-1.282509840855431682e-01, +-1.280667059208595304e-01, +-1.278823058611864849e-01, +-1.276977842428837495e-01, +-1.275131414023366605e-01, +-1.273283776759514263e-01, +-1.271434934001578754e-01, +-1.269584889114078463e-01, +-1.267733645461749936e-01, +-1.265881206409531778e-01, +-1.264027575322578256e-01, +-1.262172755566244031e-01, +-1.260316750506087213e-01, +-1.258459563507851875e-01, +-1.256601197937481929e-01, +-1.254741657161099477e-01, +-1.252880944545010644e-01, +-1.251019063455699742e-01, +-1.249156017259826362e-01, +-1.247291809324206635e-01, +-1.245426443015836965e-01, +-1.243559921701863635e-01, +-1.241692248749588778e-01, +-1.239823427526465099e-01, +-1.237953461400096988e-01, +-1.236082353738227196e-01, +-1.234210107908741832e-01, +-1.232336727279649685e-01, +-1.230462215219091521e-01, +-1.228586575095344940e-01, +-1.226709810276796486e-01, +-1.224831924131958294e-01, +-1.222952920029434926e-01, +-1.221072801337958896e-01, +-1.219191571426358617e-01, +-1.217309233663565471e-01, +-1.215425791418593415e-01, +-1.213541248060562572e-01, +-1.211655606958662451e-01, +-1.209768871482181235e-01, +-1.207881045000471637e-01, +-1.205992130882963392e-01, +-1.204102132499153682e-01, +-1.202211053218601305e-01, +-1.200318896410942221e-01, +-1.198425665445836813e-01, +-1.196531363693022071e-01, +-1.194635994522273287e-01, +-1.192739561303409190e-01, +-1.190842067406283483e-01, +-1.188943516200791362e-01, +-1.187043911056840373e-01, +-1.185143255344392466e-01, +-1.183241552433403621e-01, +-1.181338805693855770e-01, +-1.179435018495746113e-01, +-1.177530194209076841e-01, +-1.175624336203857784e-01, +-1.173717447850087109e-01, +-1.171809532517768121e-01, +-1.169900593576893577e-01, +-1.167990634397443744e-01, +-1.166079658349371273e-01, +-1.164167668802616046e-01, +-1.162254669127090190e-01, +-1.160340662692667807e-01, +-1.158425652869203432e-01, +-1.156509643026495532e-01, +-1.154592636534304273e-01, +-1.152674636762342358e-01, +-1.150755647080276278e-01, +-1.148835670857706881e-01, +-1.146914711464170483e-01, +-1.144992772269152609e-01, +-1.143069856642052740e-01, +-1.141145967952212209e-01, +-1.139221109568884782e-01, +-1.137295284861237349e-01, +-1.135368497198360055e-01, +-1.133440749949242987e-01, +-1.131512046482792827e-01, +-1.129582390167804817e-01, +-1.127651784372971228e-01, +-1.125720232466881077e-01, +-1.123787737818010835e-01, +-1.121854303794717206e-01, +-1.119919933765232967e-01, +-1.117984631097665577e-01, +-1.116048399160004534e-01, +-1.114111241320093620e-01, +-1.112173160945633815e-01, +-1.110234161404193703e-01, +-1.108294246063195460e-01, +-1.106353418289904855e-01, +-1.104411681451431398e-01, +-1.102469038914724447e-01, +-1.100525494046574598e-01, +-1.098581050213600085e-01, +-1.096635710782250944e-01, +-1.094689479118792635e-01, +-1.092742358589311458e-01, +-1.090794352559718294e-01, +-1.088845464395717250e-01, +-1.086895697462831739e-01, +-1.084945055126378816e-01, +-1.082993540751483463e-01, +-1.081041157703054451e-01, +-1.079087909345783636e-01, +-1.077133799044165952e-01, +-1.075178830162460825e-01, +-1.073223006064716184e-01, +-1.071266330114738347e-01, +-1.069308805676109642e-01, +-1.067350436112170092e-01, +-1.065391224786028934e-01, +-1.063431175060542411e-01, +-1.061470290298320435e-01, +-1.059508573861710629e-01, +-1.057546029112814978e-01, +-1.055582659413466518e-01, +-1.053618468125236823e-01, +-1.051653458609414643e-01, +-1.049687634227028793e-01, +-1.047720998338820819e-01, +-1.045753554305246802e-01, +-1.043785305486482629e-01, +-1.041816255242407063e-01, +-1.039846406932600359e-01, +-1.037875763916349531e-01, +-1.035904329552634340e-01, +-1.033932107200115358e-01, +-1.031959100217162140e-01, +-1.029985311961799793e-01, +-1.028010745791758523e-01, +-1.026035405064419509e-01, +-1.024059293136845850e-01, +-1.022082413365765913e-01, +-1.020104769107571391e-01, +-1.018126363718308003e-01, +-1.016147200553667307e-01, +-1.014167282969002937e-01, +-1.012186614319301042e-01, +-1.010205197959200135e-01, +-1.008223037242967079e-01, +-1.006240135524497509e-01, +-1.004256496157324846e-01, +-1.002272122494595741e-01, +-1.000287017889083807e-01, +-9.983011856931760242e-02, +-9.963146292588641317e-02, +-9.943273519377508751e-02, +-9.923393570810500053e-02, +-9.903506480395561640e-02, +-9.883612281636654229e-02, +-9.863711008033723693e-02, +-9.843802693082477628e-02, +-9.823887370274436703e-02, +-9.803965073096880534e-02, +-9.784035835032943440e-02, +-9.764099689561263340e-02, +-9.744156670156266242e-02, +-9.724206810287881753e-02, +-9.704250143421730423e-02, +-9.684286703018810116e-02, +-9.664316522535652820e-02, +-9.644339635424269142e-02, +-9.624356075131997035e-02, +-9.604365875101586458e-02, +-9.584369068771034228e-02, +-9.564365689573665896e-02, +-9.544355770937985872e-02, +-9.524339346287727381e-02, +-9.504316449041717851e-02, +-9.484287112613941362e-02, +-9.464251370413397091e-02, +-9.444209255844110418e-02, +-9.424160802305085738e-02, +-9.404106043190271769e-02, +-9.384045011888533794e-02, +-9.363977741783539865e-02, +-9.343904266253766355e-02, +-9.323824618672463260e-02, +-9.303738832407684733e-02, +-9.283646940822060101e-02, +-9.263548977272899332e-02, +-9.243444975112181938e-02, +-9.223334967686300234e-02, +-9.203218988336313300e-02, +-9.183097070397659711e-02, +-9.162969247200287992e-02, +-9.142835552068456773e-02, +-9.122696018320834710e-02, +-9.102550679270413059e-02, +-9.082399568224396036e-02, +-9.062242718484274373e-02, +-9.042080163345675436e-02, +-9.021911936098396534e-02, +-9.001738070026343852e-02, +-8.981558598407449190e-02, +-8.961373554513719919e-02, +-8.941182971611132124e-02, +-8.920986882959570929e-02, +-8.900785321812833273e-02, +-8.880578321418558518e-02, +-8.860365915018164618e-02, +-8.840148135847024358e-02, +-8.819925017133982414e-02, +-8.799696592101770298e-02, +-8.779462893966705206e-02, +-8.759223955938667816e-02, +-8.738979811221124494e-02, +-8.718730493011174476e-02, +-8.698476034499237619e-02, +-8.678216468869301425e-02, +-8.657951829298693447e-02, +-8.637682148958136796e-02, +-8.617407461011614145e-02, +-8.597127798616512051e-02, +-8.576843194923297609e-02, +-8.556553683075746042e-02, +-8.536259296210754743e-02, +-8.515960067458347438e-02, +-8.495656029941607568e-02, +-8.475347216776692172e-02, +-8.455033661072633433e-02, +-8.434715395931584314e-02, +-8.414392454448510472e-02, +-8.394064869711212462e-02, +-8.373732674800424269e-02, +-8.353395902789589877e-02, +-8.333054586744918779e-02, +-8.312708759725340180e-02, +-8.292358454782439159e-02, +-8.272003704960464998e-02, +-8.251644543296181300e-02, +-8.231281002818933989e-02, +-8.210913116550583313e-02, +-8.190540917505424734e-02, +-8.170164438690202813e-02, +-8.149783713103996019e-02, +-8.129398773738299999e-02, +-8.109009653576865206e-02, +-8.088616385595669145e-02, +-8.068219002762949676e-02, +-8.047817538039171714e-02, +-8.027412024376859301e-02, +-8.007002494720624752e-02, +-7.986588982007183923e-02, +-7.966171519165260451e-02, +-7.945750139115538568e-02, +-7.925324874770708905e-02, +-7.904895759035210356e-02, +-7.884462824805488212e-02, +-7.864026104969687458e-02, +-7.843585632407826247e-02, +-7.823141439991584956e-02, +-7.802693560584361698e-02, +-7.782242027041205712e-02, +-7.761786872208781274e-02, +-7.741328128925334395e-02, +-7.720865830020594289e-02, +-7.700400008315884393e-02, +-7.679930696623857300e-02, +-7.659457927748705708e-02, +-7.638981734485844610e-02, +-7.618502149622154163e-02, +-7.598019205935736820e-02, +-7.577532936195949254e-02, +-7.557043373163430111e-02, +-7.536550549589880743e-02, +-7.516054498218195656e-02, +-7.495555251782355655e-02, +-7.475052843007364001e-02, +-7.454547304609325520e-02, +-7.434038669295162105e-02, +-7.413526969762881946e-02, +-7.393012238701295036e-02, +-7.372494508790090884e-02, +-7.351973812699759414e-02, +-7.331450183091571537e-02, +-7.310923652617508373e-02, +-7.290394253920316758e-02, +-7.269862019633287209e-02, +-7.249326982380410733e-02, +-7.228789174776210913e-02, +-7.208248629425723086e-02, +-7.187705378924572064e-02, +-7.167159455858694572e-02, +-7.146610892804568238e-02, +-7.126059722328967339e-02, +-7.105505976989084926e-02, +-7.084949689332276090e-02, +-7.064390891896261959e-02, +-7.043829617208946514e-02, +-7.023265897788422141e-02, +-7.002699766142923832e-02, +-6.982131254770723716e-02, +-6.961560396160194897e-02, +-6.940987222789785083e-02, +-6.920411767127843117e-02, +-6.899834061632650895e-02, +-6.879254138752483039e-02, +-6.858672030925364038e-02, +-6.838087770579218128e-02, +-6.817501390131743000e-02, +-6.796912921990312662e-02, +-6.776322398552091231e-02, +-6.755729852203894159e-02, +-6.735135315322141047e-02, +-6.714538820272786257e-02, +-6.693940399411416053e-02, +-6.673340085083087625e-02, +-6.652737909622358226e-02, +-6.632133905353193581e-02, +-6.611528104588895727e-02, +-6.590920539632207087e-02, +-6.570311242775152272e-02, +-6.549700246299011708e-02, +-6.529087582474331353e-02, +-6.508473283560797795e-02, +-6.487857381807343726e-02, +-6.467239909451938384e-02, +-6.446620898721637516e-02, +-6.426000381832608355e-02, +-6.405378390989927007e-02, +-6.384754958387711676e-02, +-6.364130116208967236e-02, +-6.343503896625569960e-02, +-6.322876331798230054e-02, +-6.302247453876548555e-02, +-6.281617294998861900e-02, +-6.260985887292125351e-02, +-6.240353262872146839e-02, +-6.219719453843282342e-02, +-6.199084492298532340e-02, +-6.178448410319527934e-02, +-6.157811239976322681e-02, +-6.137173013327561211e-02, +-6.116533762420329340e-02, +-6.095893519290113832e-02, +-6.075252315960782273e-02, +-6.054610184444576132e-02, +-6.033967156742009452e-02, +-6.013323264841916038e-02, +-5.992678540721290553e-02, +-5.972033016345368317e-02, +-5.951386723667503875e-02, +-5.930739694629199449e-02, +-5.910091961160039015e-02, +-5.889443555177572426e-02, +-5.868794508587413944e-02, +-5.848144853283163136e-02, +-5.827494621146264014e-02, +-5.806843844046121611e-02, +-5.786192553839906300e-02, +-5.765540782372695350e-02, +-5.744888561477233535e-02, +-5.724235922974090646e-02, +-5.703582898671470669e-02, +-5.682929520365261750e-02, +-5.662275819838950841e-02, +-5.641621828863631338e-02, +-5.620967579197929526e-02, +-5.600313102587946984e-02, +-5.579658430767282795e-02, +-5.559003595456996766e-02, +-5.538348628365461629e-02, +-5.517693561188455331e-02, +-5.497038425609064582e-02, +-5.476383253297661957e-02, +-5.455728075911822628e-02, +-5.435072925096384039e-02, +-5.414417832483267579e-02, +-5.393762829691588212e-02, +-5.373107948327538602e-02, +-5.352453219984372457e-02, +-5.331798676242292812e-02, +-5.311144348668557502e-02, +-5.290490268817334835e-02, +-5.269836468229659177e-02, +-5.249182978433501734e-02, +-5.228529830943599160e-02, +-5.207877057261506293e-02, +-5.187224688875509415e-02, +-5.166572757260620014e-02, +-5.145921293878544939e-02, +-5.125270330177610079e-02, +-5.104619897592736766e-02, +-5.083970027545434839e-02, +-5.063320751443706191e-02, +-5.042672100682082936e-02, +-5.022024106641514996e-02, +-5.001376800689431162e-02, +-4.980730214179553833e-02, +-4.960084378452016968e-02, +-4.939439324833187067e-02, +-4.918795084635782522e-02, +-4.898151689158692507e-02, +-4.877509169687049145e-02, +-4.856867557492067222e-02, +-4.836226883831157286e-02, +-4.815587179947780627e-02, +-4.794948477071413889e-02, +-4.774310806417604580e-02, +-4.753674199187838539e-02, +-4.733038686569513570e-02, +-4.712404299735994256e-02, +-4.691771069846421838e-02, +-4.671139028045850905e-02, +-4.650508205465030132e-02, +-4.629878633220542439e-02, +-4.609250342414630830e-02, +-4.588623364135243493e-02, +-4.567997729455980371e-02, +-4.547373469436006427e-02, +-4.526750615120083560e-02, +-4.506129197538531750e-02, +-4.485509247707102770e-02, +-4.464890796627012104e-02, +-4.444273875284984743e-02, +-4.423658514653054652e-02, +-4.403044745688611261e-02, +-4.382432599334365464e-02, +-4.361822106518316311e-02, +-4.341213298153689254e-02, +-4.320606205138934758e-02, +-4.300000858357647116e-02, +-4.279397288678560285e-02, +-4.258795526955522215e-02, +-4.238195604027408109e-02, +-4.217597550718131527e-02, +-4.197001397836597203e-02, +-4.176407176176671204e-02, +-4.155814916517119872e-02, +-4.135224649621578596e-02, +-4.114636406238504629e-02, +-4.094050217101256883e-02, +-4.073466112927869726e-02, +-4.052884124421163303e-02, +-4.032304282268610318e-02, +-4.011726617142404722e-02, +-3.991151159699312528e-02, +-3.970577940580759246e-02, +-3.950006990412643915e-02, +-3.929438339805452207e-02, +-3.908872019354119737e-02, +-3.888308059638036912e-02, +-3.867746491221012856e-02, +-3.847187344651242791e-02, +-3.826630650461228245e-02, +-3.806076439167827008e-02, +-3.785524741272128929e-02, +-3.764975587259473261e-02, +-3.744429007599394538e-02, +-3.723885032745597595e-02, +-3.703343693135924958e-02, +-3.682805019192286755e-02, +-3.662269041320650315e-02, +-3.641735789911049181e-02, +-3.621205295337472790e-02, +-3.600677587957853282e-02, +-3.580152698114048848e-02, +-3.559630656131788223e-02, +-3.539111492320674152e-02, +-3.518595236974102897e-02, +-3.498081920369278813e-02, +-3.477571572767074876e-02, +-3.457064224412128434e-02, +-3.436559905532729498e-02, +-3.416058646340806165e-02, +-3.395560477031898949e-02, +-3.375065427785077510e-02, +-3.354573528762989226e-02, +-3.334084810111734298e-02, +-3.313599301960913623e-02, +-3.293117034423524714e-02, +-3.272638037595965166e-02, +-3.252162341557979230e-02, +-3.231689976372680018e-02, +-3.211220972086393372e-02, +-3.190755358728730728e-02, +-3.170293166312558586e-02, +-3.149834424833877766e-02, +-3.129379164271863661e-02, +-3.108927414588770824e-02, +-3.088479205729968355e-02, +-3.068034567623843106e-02, +-3.047593530181852417e-02, +-3.027156123298341620e-02, +-3.006722376850653328e-02, +-2.986292320699022659e-02, +-2.965865984686561277e-02, +-2.945443398639211938e-02, +-2.925024592365727330e-02, +-2.904609595657626012e-02, +-2.884198438289165695e-02, +-2.863791150017314449e-02, +-2.843387760581645232e-02, +-2.822988299704474666e-02, +-2.802592797090633706e-02, +-2.782201282427543623e-02, +-2.761813785385158065e-02, +-2.741430335615912747e-02, +-2.721050962754694227e-02, +-2.700675696418890909e-02, +-2.680304566208214709e-02, +-2.659937601704737142e-02, +-2.639574832472892443e-02, +-2.619216288059390482e-02, +-2.598861997993190051e-02, +-2.578511991785526966e-02, +-2.558166298929738514e-02, +-2.537824948901401534e-02, +-2.517487971158165541e-02, +-2.497155395139810316e-02, +-2.476827250268133149e-02, +-2.456503565946983186e-02, +-2.436184371562179901e-02, +-2.415869696481541193e-02, +-2.395559570054721019e-02, +-2.375254021613361008e-02, +-2.354953080470891316e-02, +-2.334656775922594810e-02, +-2.314365137245548085e-02, +-2.294078193698543058e-02, +-2.273795974522112295e-02, +-2.253518508938522416e-02, +-2.233245826151668278e-02, +-2.212977955347014344e-02, +-2.192714925691671354e-02, +-2.172456766334310979e-02, +-2.152203506405076308e-02, +-2.131955175015695300e-02, +-2.111711801259225085e-02, +-2.091473414210250070e-02, +-2.071240042924700833e-02, +-2.051011716439866267e-02, +-2.030788463774374844e-02, +-2.010570313928138411e-02, +-1.990357295882324434e-02, +-1.970149438599341774e-02, +-1.949946771022778927e-02, +-1.929749322077366214e-02, +-1.909557120669019836e-02, +-1.889370195684695122e-02, +-1.869188575992450016e-02, +-1.849012290441321565e-02, +-1.828841367861400516e-02, +-1.808675837063692532e-02, +-1.788515726840194525e-02, +-1.768361065963763856e-02, +-1.748211883188112784e-02, +-1.728068207247806382e-02, +-1.707930066858220908e-02, +-1.687797490715501822e-02, +-1.667670507496512092e-02, +-1.647549145858832539e-02, +-1.627433434440724025e-02, +-1.607323401861080608e-02, +-1.587219076719404570e-02, +-1.567120487595772410e-02, +-1.547027663050813337e-02, +-1.526940631625657747e-02, +-1.506859421841943818e-02, +-1.486784062201701277e-02, +-1.466714581187421318e-02, +-1.446651007261988073e-02, +-1.426593368868603155e-02, +-1.406541694430830589e-02, +-1.386496012352456120e-02, +-1.366456351017576731e-02, +-1.346422738790490833e-02, +-1.326395204015735733e-02, +-1.306373775017934807e-02, +-1.286358480101892736e-02, +-1.266349347552498360e-02, +-1.246346405634697271e-02, +-1.226349682593488172e-02, +-1.206359206653861461e-02, +-1.186375006020782240e-02, +-1.166397108879149193e-02, +-1.146425543393774123e-02, +-1.126460337709354192e-02, +-1.106501519950415721e-02, +-1.086549118221307245e-02, +-1.066603160606163780e-02, +-1.046663675168879246e-02, +-1.026730689953015037e-02, +-1.006804232981912441e-02, +-9.868843322584999050e-03, +-9.669710157653691948e-03, +-9.470643114646645419e-03, +-9.271642472981424937e-03, +-9.072708511870537784e-03, +-8.873841510321988160e-03, +-8.675041747138234616e-03, +-8.476309500915792799e-03, +-8.277645050045842612e-03, +-8.079048672713000021e-03, +-7.880520646895481859e-03, +-7.682061250364689495e-03, +-7.483670760684849738e-03, +-7.285349455212680909e-03, +-7.087097611097296565e-03, +-6.888915505279579257e-03, +-6.690803414492200486e-03, +-6.492761615259009210e-03, +-6.294790383894993679e-03, +-6.096889996505932760e-03, +-5.899060728987633520e-03, +-5.701302857026248685e-03, +-5.503616656098048524e-03, +-5.306002401468477153e-03, +-5.108460368191942644e-03, +-4.910990831112106714e-03, +-4.713594064861114513e-03, +-4.516270343859244210e-03, +-4.319019942315325059e-03, +-4.121843134225020890e-03, +-3.924740193371900436e-03, +-3.727711393326523133e-03, +-3.530757007446180210e-03, +-3.333877308874668745e-03, +-3.137072570541929971e-03, +-2.940343065163799480e-03, +-2.743689065241689765e-03, +-2.547110843062271469e-03, +-2.350608670697204496e-03, +-2.154182820002832708e-03, +-1.957833562619857356e-03, +-1.761561169973234519e-03, +-1.565365913271255481e-03, +-1.369248063506142178e-03, +-1.173207891453014384e-03, +-9.772456676703084304e-04, +-7.813616624987748628e-04, +-5.855561460612079307e-04, +-3.898293882628106393e-04, +-1.941816587903659583e-04, + 1.386772887924763056e-06, + 1.968756375227371852e-04, + 3.922846660839125407e-04, + 5.876135897607608028e-04, + 7.828621399623425514e-04, + 9.780300483177644614e-04, + 1.173117046676624801e-03, + 1.368122867108453227e-03, + 1.563047241904942609e-03, + 1.757889903578052334e-03, + 1.952650584861651516e-03, + 2.147329018710986658e-03, + 2.341924938303815724e-03, + 2.536438077040134922e-03, + 2.730868168542614771e-03, + 2.925214946656865076e-03, + 3.119478145451616644e-03, + 3.313657499219543109e-03, + 3.507752742476712322e-03, + 3.701763609963467597e-03, + 3.895689836644509671e-03, + 4.089531157709274875e-03, + 4.283287308572259963e-03, + 4.476958024872843868e-03, + 4.670543042476306417e-03, + 4.864042097473410264e-03, + 5.057454926181777395e-03, + 5.250781265144820534e-03, + 5.444020851132446576e-03, + 5.637173421141951704e-03, + 5.830238712397724753e-03, + 6.023216462351763285e-03, + 6.216106408683768139e-03, + 6.408908289301614401e-03, + 6.601621842341427737e-03, + 6.794246806168325117e-03, + 6.986782919376060066e-03, + 7.179229920787654103e-03, + 7.371587549455750621e-03, + 7.563855544662736324e-03, + 7.756033645920843572e-03, + 7.948121592972947486e-03, + 8.140119125792440180e-03, + 8.332025984583477096e-03, + 8.523841909781809667e-03, + 8.715566642054233676e-03, + 8.907199922299420189e-03, + 9.098741491648056068e-03, + 9.290191091463121525e-03, + 9.481548463340167682e-03, + 9.672813349107576772e-03, + 9.863985490827033992e-03, + 1.005506463079284749e-02, + 1.024605051153428328e-02, + 1.043694287581361374e-02, + 1.062774146662770480e-02, + 1.081844602720753550e-02, + 1.100905630101923528e-02, + 1.119957203176385509e-02, + 1.138999296337775066e-02, + 1.158031884003287056e-02, + 1.177054940613688275e-02, + 1.196068440633398129e-02, + 1.215072358550437458e-02, + 1.234066668876501738e-02, + 1.253051346146994739e-02, + 1.272026364921023840e-02, + 1.290991699781461784e-02, + 1.309947325334953443e-02, + 1.328893216211917208e-02, + 1.347829347066611429e-02, + 1.366755692577219065e-02, + 1.385672227445727822e-02, + 1.404578926398032147e-02, + 1.423475764183997766e-02, + 1.442362715577448495e-02, + 1.461239755376182725e-02, + 1.480106858402032918e-02, + 1.498963999500853468e-02, + 1.517811153542570485e-02, + 1.536648295421239215e-02, + 1.555475400054999631e-02, + 1.574292442386150334e-02, + 1.593099397381161214e-02, + 1.611896240030725666e-02, + 1.630682945349727977e-02, + 1.649459488377325381e-02, + 1.668225844176956033e-02, + 1.686981987836346300e-02, + 1.705727894467631497e-02, + 1.724463539207189006e-02, + 1.743188897215850255e-02, + 1.761903943678841400e-02, + 1.780608653805837438e-02, + 1.799303002830953194e-02, + 1.817986966012814440e-02, + 1.836660518634552347e-02, + 1.855323636003783361e-02, + 1.873976293452818409e-02, + 1.892618466338446756e-02, + 1.911250130042114678e-02, + 1.929871259969916791e-02, + 1.948481831552595356e-02, + 1.967081820245602727e-02, + 1.985671201529096153e-02, + 2.004249950908007505e-02, + 2.022818043911994365e-02, + 2.041375456095569432e-02, + 2.059922163038021073e-02, + 2.078458140343490690e-02, + 2.096983363641011580e-02, + 2.115497808584489159e-02, + 2.134001450852763410e-02, + 2.152494266149648436e-02, + 2.170976230203841909e-02, + 2.189447318769165846e-02, + 2.207907507624392446e-02, + 2.226356772573351295e-02, + 2.244795089444920344e-02, + 2.263222434093131383e-02, + 2.281638782397086770e-02, + 2.300044110261084684e-02, + 2.318438393614555976e-02, + 2.336821608412138068e-02, + 2.355193730633727695e-02, + 2.373554736284417405e-02, + 2.391904601394601385e-02, + 2.410243302019954986e-02, + 2.428570814241491280e-02, + 2.446887114165574237e-02, + 2.465192177923888200e-02, + 2.483485981673571458e-02, + 2.501768501597124647e-02, + 2.520039713902584924e-02, + 2.538299594823387878e-02, + 2.556548120618436920e-02, + 2.574785267572203204e-02, + 2.593011011994688503e-02, + 2.611225330221457475e-02, + 2.629428198613660214e-02, + 2.647619593558045090e-02, + 2.665799491467027438e-02, + 2.683967868778678462e-02, + 2.702124701956736680e-02, + 2.720269967490671417e-02, + 2.738403641895673785e-02, + 2.756525701712699353e-02, + 2.774636123508462601e-02, + 2.792734883875504920e-02, + 2.810821959432192527e-02, + 2.828897326822749081e-02, + 2.846960962717269908e-02, + 2.865012843811753918e-02, + 2.883052946828118870e-02, + 2.901081248514224623e-02, + 2.919097725643905045e-02, + 2.937102355017002717e-02, + 2.955095113459367887e-02, + 2.973075977822877899e-02, + 2.991044924985471892e-02, + 3.009001931851223652e-02, + 3.026946975350291655e-02, + 3.044880032438932946e-02, + 3.062801080099634629e-02, + 3.080710095340968499e-02, + 3.098607055197800594e-02, + 3.116491936731172543e-02, + 3.134364717028403913e-02, + 3.152225373203053349e-02, + 3.170073882395030990e-02, + 3.187910221770507563e-02, + 3.205734368522022981e-02, + 3.223546299868474546e-02, + 3.241345993055178704e-02, + 3.259133425353797492e-02, + 3.276908574062499524e-02, + 3.294671416505837169e-02, + 3.312421930034873535e-02, + 3.330160092027217161e-02, + 3.347885879886942223e-02, + 3.365599271044663471e-02, + 3.383300242957620191e-02, + 3.400988773109575591e-02, + 3.418664839010947254e-02, + 3.436328418198796031e-02, + 3.453979488236810086e-02, + 3.471618026715370814e-02, + 3.489244011251577821e-02, + 3.506857419489230882e-02, + 3.524458229098886147e-02, + 3.542046417777880429e-02, + 3.559621963250333282e-02, + 3.577184843267160880e-02, + 3.594735035606114876e-02, + 3.612272518071842076e-02, + 3.629797268495810886e-02, + 3.647309264736479928e-02, + 3.664808484679137751e-02, + 3.682294906236053406e-02, + 3.699768507346462565e-02, + 3.717229265976584873e-02, + 3.734677160119666967e-02, + 3.752112167795954717e-02, + 3.769534267052784826e-02, + 3.786943435964489763e-02, + 3.804339652632632296e-02, + 3.821722895185775820e-02, + 3.839093141779652274e-02, + 3.856450370597194061e-02, + 3.873794559848463964e-02, + 3.891125687770731478e-02, + 3.908443732628530398e-02, + 3.925748672713599841e-02, + 3.943040486344935591e-02, + 3.960319151868905291e-02, + 3.977584647659075656e-02, + 3.994836952116414402e-02, + 4.012076043669188935e-02, + 4.029301900773091250e-02, + 4.046514501911156747e-02, + 4.063713825593901624e-02, + 4.080899850359172298e-02, + 4.098072554772325821e-02, + 4.115231917426259017e-02, + 4.132377916941259999e-02, + 4.149510531965185794e-02, + 4.166629741173405455e-02, + 4.183735523268883316e-02, + 4.200827856982132513e-02, + 4.217906721071269099e-02, + 4.234972094322032865e-02, + 4.252023955547812317e-02, + 4.269062283589633577e-02, + 4.286087057316221444e-02, + 4.303098255623998003e-02, + 4.320095857437121489e-02, + 4.337079841707443262e-02, + 4.354050187414648665e-02, + 4.371006873566111312e-02, + 4.387949879197099862e-02, + 4.404879183370610102e-02, + 4.421794765177623765e-02, + 4.438696603736825425e-02, + 4.455584678194864784e-02, + 4.472458967726260920e-02, + 4.489319451533499428e-02, + 4.506166108846963031e-02, + 4.522998918924989870e-02, + 4.539817861053955378e-02, + 4.556622914548164038e-02, + 4.573414058749985384e-02, + 4.590191273029830404e-02, + 4.606954536786126569e-02, + 4.623703829445447583e-02, + 4.640439130462371831e-02, + 4.657160419319687078e-02, + 4.673867675528264182e-02, + 4.690560878627125091e-02, + 4.707240008183491420e-02, + 4.723905043792790692e-02, + 4.740555965078631362e-02, + 4.757192751692875671e-02, + 4.773815383315620914e-02, + 4.790423839655248706e-02, + 4.807018100448421510e-02, + 4.823598145460130521e-02, + 4.840163954483631820e-02, + 4.856715507340596261e-02, + 4.873252783881053957e-02, + 4.889775763983392198e-02, + 4.906284427554422761e-02, + 4.922778754529347905e-02, + 4.939258724871837397e-02, + 4.955724318574012549e-02, + 4.972175515656455935e-02, + 4.988612296168277310e-02, + 5.005034640187087935e-02, + 5.021442527819020007e-02, + 5.037835939198773844e-02, + 5.054214854489590819e-02, + 5.070579253883356063e-02, + 5.086929117600492295e-02, + 5.103264425890106232e-02, + 5.119585159029919896e-02, + 5.135891297326270616e-02, + 5.152182821114240086e-02, + 5.168459710757659920e-02, + 5.184721946648922913e-02, + 5.200969509209271702e-02, + 5.217202378888662756e-02, + 5.233420536165803855e-02, + 5.249623961548251921e-02, + 5.265812635572265921e-02, + 5.281986538803042780e-02, + 5.298145651834539060e-02, + 5.314289955289596551e-02, + 5.330419429819916594e-02, + 5.346534056106149596e-02, + 5.362633814857800663e-02, + 5.378718686813278860e-02, + 5.394788652739988810e-02, + 5.410843693434318896e-02, + 5.426883789721546197e-02, + 5.442908922456077964e-02, + 5.458919072521220550e-02, + 5.474914220829339706e-02, + 5.490894348321888330e-02, + 5.506859435969364142e-02, + 5.522809464771324950e-02, + 5.538744415756469835e-02, + 5.554664269982597519e-02, + 5.570569008536613298e-02, + 5.586458612534640072e-02, + 5.602333063121923279e-02, + 5.618192341472881546e-02, + 5.634036428791183715e-02, + 5.649865306309652391e-02, + 5.665678955290434637e-02, + 5.681477357024836833e-02, + 5.697260492833479406e-02, + 5.713028344066271164e-02, + 5.728780892102423861e-02, + 5.744518118350470243e-02, + 5.760240004248273066e-02, + 5.775946531263038974e-02, + 5.791637680891332379e-02, + 5.807313434659115009e-02, + 5.822973774121786850e-02, + 5.838618680864104266e-02, + 5.854248136500254940e-02, + 5.869862122673962651e-02, + 5.885460621058324904e-02, + 5.901043613355975992e-02, + 5.916611081299007896e-02, + 5.932163006649032733e-02, + 5.947699371197207735e-02, + 5.963220156764242191e-02, + 5.978725345200384955e-02, + 5.994214918385477181e-02, + 6.009688858228974528e-02, + 6.025147146669879161e-02, + 6.040589765676874362e-02, + 6.056016697248226693e-02, + 6.071427923411951838e-02, + 6.086823426225646677e-02, + 6.102203187776608639e-02, + 6.117567190181888437e-02, + 6.132915415588197777e-02, + 6.148247846172037040e-02, + 6.163564464139580784e-02, + 6.178865251726848445e-02, + 6.194150191199565558e-02, + 6.209419264853310860e-02, + 6.224672455013427474e-02, + 6.239909744035097156e-02, + 6.255131114303374984e-02, + 6.270336548233094998e-02, + 6.285526028269064480e-02, + 6.300699536885896734e-02, + 6.315857056588082552e-02, + 6.330998569910126217e-02, + 6.346124059416353991e-02, + 6.361233507701123668e-02, + 6.376326897388688575e-02, + 6.391404211133315527e-02, + 6.406465431619216833e-02, + 6.421510541560652985e-02, + 6.436539523701867438e-02, + 6.451552360817165710e-02, + 6.466549035710893178e-02, + 6.481529531217392059e-02, + 6.496493830201173492e-02, + 6.511441915556791249e-02, + 6.526373770208895864e-02, + 6.541289377112241565e-02, + 6.556188719251768160e-02, + 6.571071779642542743e-02, + 6.585938541329736107e-02, + 6.600788987388768458e-02, + 6.615623100925217825e-02, + 6.630440865074849199e-02, + 6.645242263003646455e-02, + 6.660027277907838716e-02, + 6.674795893013897585e-02, + 6.689548091578552402e-02, + 6.704283856888762494e-02, + 6.719003172261869827e-02, + 6.733706021045410273e-02, + 6.748392386617274585e-02, + 6.763062252385662609e-02, + 6.777715601789174871e-02, + 6.792352418296665473e-02, + 6.806972685407426671e-02, + 6.821576386651134749e-02, + 6.836163505587805611e-02, + 6.850734025807912742e-02, + 6.865287930932281735e-02, + 6.879825204612259604e-02, + 6.894345830529570451e-02, + 6.908849792396426492e-02, + 6.923337073955497523e-02, + 6.937807658979965042e-02, + 6.952261531273465356e-02, + 6.966698674670221414e-02, + 6.981119073034872113e-02, + 6.995522710262637445e-02, + 7.009909570279382329e-02, + 7.024279637041362656e-02, + 7.038632894535552798e-02, + 7.052969326779436054e-02, + 7.067288917821105965e-02, + 7.081591651739281568e-02, + 7.095877512643343488e-02, + 7.110146484673274259e-02, + 7.124398551999659712e-02, + 7.138633698823816653e-02, + 7.152851909377741513e-02, + 7.167053167924065937e-02, + 7.181237458756134506e-02, + 7.195404766198029711e-02, + 7.209555074604562241e-02, + 7.223688368361251555e-02, + 7.237804631884380002e-02, + 7.251903849620970621e-02, + 7.265986006048841261e-02, + 7.280051085676590705e-02, + 7.294099073043605608e-02, + 7.308129952720092415e-02, + 7.322143709307087078e-02, + 7.336140327436405095e-02, + 7.350119791770738653e-02, + 7.364082087003713528e-02, + 7.378027197859669817e-02, + 7.391955109093928389e-02, + 7.405865805492714560e-02, + 7.419759271873048456e-02, + 7.433635493082965673e-02, + 7.447494454001370168e-02, + 7.461336139538188306e-02, + 7.475160534634171794e-02, + 7.488967624261096134e-02, + 7.502757393421702337e-02, + 7.516529827149716347e-02, + 7.530284910509850438e-02, + 7.544022628597814306e-02, + 7.557742966540334506e-02, + 7.571445909495166937e-02, + 7.585131442651087130e-02, + 7.598799551227977678e-02, + 7.612450220476681129e-02, + 7.626083435679219258e-02, + 7.639699182148593226e-02, + 7.653297445228947338e-02, + 7.666878210295555163e-02, + 7.680441462754712678e-02, + 7.693987188043908965e-02, + 7.707515371631741552e-02, + 7.721025999018013564e-02, + 7.734519055733589388e-02, + 7.747994527340516802e-02, + 7.761452399432065830e-02, + 7.774892657632666293e-02, + 7.788315287597942504e-02, + 7.801720275014738248e-02, + 7.815107605601055718e-02, + 7.828477265106199845e-02, + 7.841829239310683930e-02, + 7.855163514026272664e-02, + 7.868480075095964088e-02, + 7.881778908394054817e-02, + 7.895059999826092856e-02, + 7.908323335328895642e-02, + 7.921568900870641639e-02, + 7.934796682450760696e-02, + 7.948006666100006223e-02, + 7.961198837880519019e-02, + 7.974373183885663519e-02, + 7.987529690240234570e-02, + 8.000668343100338087e-02, + 8.013789128653484028e-02, + 8.026892033118573910e-02, + 8.039977042745777291e-02, + 8.053044143816721900e-02, + 8.066093322644551922e-02, + 8.079124565573640726e-02, + 8.092137858979873977e-02, + 8.105133189270569138e-02, + 8.118110542884428293e-02, + 8.131069906291683858e-02, + 8.144011265993940374e-02, + 8.156934608524364638e-02, + 8.169839920447501125e-02, + 8.182727188359451009e-02, + 8.195596398887719514e-02, + 8.208447538691486522e-02, + 8.221280594461215230e-02, + 8.234095552919105943e-02, + 8.246892400818707503e-02, + 8.259671124945214271e-02, + 8.272431712115305147e-02, + 8.285174149177297609e-02, + 8.297898423010981184e-02, + 8.310604520527770100e-02, + 8.323292428670654719e-02, + 8.335962134414161284e-02, + 8.348613624764524010e-02, + 8.361246886759418628e-02, + 8.373861907468321819e-02, + 8.386458673992157331e-02, + 8.399037173463590189e-02, + 8.411597393046908733e-02, + 8.424139319937998249e-02, + 8.436662941364460322e-02, + 8.449168244585540666e-02, + 8.461655216892120801e-02, + 8.474123845606734706e-02, + 8.486574118083743679e-02, + 8.499006021709037961e-02, + 8.511419543900297646e-02, + 8.523814672106921897e-02, + 8.536191393809997030e-02, + 8.548549696522303454e-02, + 8.560889567788394772e-02, + 8.573210995184585292e-02, + 8.585513966318902845e-02, + 8.597798468831124863e-02, + 8.610064490392763115e-02, + 8.622312018707209424e-02, + 8.634541041509548320e-02, + 8.646751546566633362e-02, + 8.658943521677130162e-02, + 8.671116954671546917e-02, + 8.683271833412127549e-02, + 8.695408145792994647e-02, + 8.707525879740064811e-02, + 8.719625023210995918e-02, + 8.731705564195452185e-02, + 8.743767490714832169e-02, + 8.755810790822370071e-02, + 8.767835452603174595e-02, + 8.779841464174258092e-02, + 8.791828813684444965e-02, + 8.803797489314472979e-02, + 8.815747479276919707e-02, + 8.827678771816291348e-02, + 8.839591355208946399e-02, + 8.851485217763252478e-02, + 8.863360347819301821e-02, + 8.875216733749273501e-02, + 8.887054363957191949e-02, + 8.898873226878956100e-02, + 8.910673310982526740e-02, + 8.922454604767721120e-02, + 8.934217096766261523e-02, + 8.945960775541939025e-02, + 8.957685629690437246e-02, + 8.969391647839386472e-02, + 8.981078818648391415e-02, + 8.992747130809071454e-02, + 9.004396573044982921e-02, + 9.016027134111766206e-02, + 9.027638802796890405e-02, + 9.039231567919969734e-02, + 9.050805418332523444e-02, + 9.062360342918213130e-02, + 9.073896330592551296e-02, + 9.085413370303210834e-02, + 9.096911451029773832e-02, + 9.108390561784014683e-02, + 9.119850691609568405e-02, + 9.131291829582245667e-02, + 9.142713964809817684e-02, + 9.154117086432184136e-02, + 9.165501183621259373e-02, + 9.176866245581075110e-02, + 9.188212261547665238e-02, + 9.199539220789161587e-02, + 9.210847112605788367e-02, + 9.222135926329907973e-02, + 9.233405651325872487e-02, + 9.244656276990141641e-02, + 9.255887792751438248e-02, + 9.267100188070356848e-02, + 9.278293452439748124e-02, + 9.289467575384581510e-02, + 9.300622546461878581e-02, + 9.311758355260815745e-02, + 9.322874991402720080e-02, + 9.333972444541013824e-02, + 9.345050704361280991e-02, + 9.356109760581278467e-02, + 9.367149602950909648e-02, + 9.378170221252157823e-02, + 9.389171605299216627e-02, + 9.400153744938441469e-02, + 9.411116630048339815e-02, + 9.422060250539608661e-02, + 9.432984596355134532e-02, + 9.443889657469885235e-02, + 9.454775423891136066e-02, + 9.465641885658322707e-02, + 9.476489032842970450e-02, + 9.487316855548948158e-02, + 9.498125343912229568e-02, + 9.508914488100987661e-02, + 9.519684278315646009e-02, + 9.530434704788813549e-02, + 9.541165757785298462e-02, + 9.551877427602202542e-02, + 9.562569704568753270e-02, + 9.573242579046456480e-02, + 9.583896041429036672e-02, + 9.594530082142448124e-02, + 9.605144691644894317e-02, + 9.615739860426796015e-02, + 9.626315579010878698e-02, + 9.636871837951932473e-02, + 9.647408627837295025e-02, + 9.657925939286278461e-02, + 9.668423762950606459e-02, + 9.678902089514211660e-02, + 9.689360909693293944e-02, + 9.699800214236320439e-02, + 9.710219993924039394e-02, + 9.720620239569420507e-02, + 9.731000942017808963e-02, + 9.741362092146746421e-02, + 9.751703680866072310e-02, + 9.762025699117875266e-02, + 9.772328137876634679e-02, + 9.782610988148982001e-02, + 9.792874240973951927e-02, + 9.803117887422864440e-02, + 9.813341918599220726e-02, + 9.823546325638929377e-02, + 9.833731099710184276e-02, + 9.843896232013514547e-02, + 9.854041713781686029e-02, + 9.864167536279769277e-02, + 9.874273690805246417e-02, + 9.884360168687789105e-02, + 9.894426961289473632e-02, + 9.904474060004658797e-02, + 9.914501456260037260e-02, + 9.924509141514586963e-02, + 9.934497107259707138e-02, + 9.944465345018996261e-02, + 9.954413846348469930e-02, + 9.964342602836442908e-02, + 9.974251606103545775e-02, + 9.984140847802820684e-02, + 9.994010319619524296e-02, + 1.000386001327134011e-01, + 1.001368992050830214e-01, + 1.002350003311272691e-01, + 1.003329034289926064e-01, + 1.004306084171498331e-01, + 1.005281152143925882e-01, + 1.006254237398377938e-01, + 1.007225339129267927e-01, + 1.008194456534231426e-01, + 1.009161588814149468e-01, + 1.010126735173134949e-01, + 1.011089894818532620e-01, + 1.012051066960928530e-01, + 1.013010250814144059e-01, + 1.013967445595228417e-01, + 1.014922650524477110e-01, + 1.015875864825416808e-01, + 1.016827087724810758e-01, + 1.017776318452654621e-01, + 1.018723556242188272e-01, + 1.019668800329883440e-01, + 1.020612049955444411e-01, + 1.021553304361820375e-01, + 1.022492562795192100e-01, + 1.023429824504973745e-01, + 1.024365088743826036e-01, + 1.025298354767634756e-01, + 1.026229621835535177e-01, + 1.027158889209888043e-01, + 1.028086156156294423e-01, + 1.029011421943598764e-01, + 1.029934685843875569e-01, + 1.030855947132434669e-01, + 1.031775205087831215e-01, + 1.032692458991852635e-01, + 1.033607708129519465e-01, + 1.034520951789094922e-01, + 1.035432189262080749e-01, + 1.036341419843213735e-01, + 1.037248642830466416e-01, + 1.038153857525047213e-01, + 1.039057063231402511e-01, + 1.039958259257221934e-01, + 1.040857444913426411e-01, + 1.041754619514170255e-01, + 1.042649782376852546e-01, + 1.043542932822113106e-01, + 1.044434070173813345e-01, + 1.045323193759061520e-01, + 1.046210302908201495e-01, + 1.047095396954821622e-01, + 1.047978475235728235e-01, + 1.048859537090985200e-01, + 1.049738581863880749e-01, + 1.050615608900942466e-01, + 1.051490617551936319e-01, + 1.052363607169861104e-01, + 1.053234577110957054e-01, + 1.054103526734696122e-01, + 1.054970455403789059e-01, + 1.055835362484181389e-01, + 1.056698247345053965e-01, + 1.057559109358827687e-01, + 1.058417947901156425e-01, + 1.059274762350931876e-01, + 1.060129552090275096e-01, + 1.060982316504552325e-01, + 1.061833054982355834e-01, + 1.062681766915517800e-01, + 1.063528451699108368e-01, + 1.064373108731426487e-01, + 1.065215737414008101e-01, + 1.066056337151628924e-01, + 1.066894907352294586e-01, + 1.067731447427240216e-01, + 1.068565956790946542e-01, + 1.069398434861121988e-01, + 1.070228881058706283e-01, + 1.071057294807876148e-01, + 1.071883675536041552e-01, + 1.072708022673849459e-01, + 1.073530335655173834e-01, + 1.074350613917124386e-01, + 1.075168856900046849e-01, + 1.075985064047513817e-01, + 1.076799234806332523e-01, + 1.077611368626546495e-01, + 1.078421464961421133e-01, + 1.079229523267470764e-01, + 1.080035543004417981e-01, + 1.080839523635240690e-01, + 1.081641464626130339e-01, + 1.082441365446518006e-01, + 1.083239225569064546e-01, + 1.084035044469657538e-01, + 1.084828821627416423e-01, + 1.085620556524691666e-01, + 1.086410248647063093e-01, + 1.087197897483346276e-01, + 1.087983502525570051e-01, + 1.088767063269003438e-01, + 1.089548579212143709e-01, + 1.090328049856714165e-01, + 1.091105474707669831e-01, + 1.091880853273189539e-01, + 1.092654185064681482e-01, + 1.093425469596774335e-01, + 1.094194706387330990e-01, + 1.094961894957447446e-01, + 1.095727034831430885e-01, + 1.096490125536823262e-01, + 1.097251166604392980e-01, + 1.098010157568124340e-01, + 1.098767097965236972e-01, + 1.099521987336175566e-01, + 1.100274825224601821e-01, + 1.101025611177404856e-01, + 1.101774344744697598e-01, + 1.102521025479816646e-01, + 1.103265652939319913e-01, + 1.104008226682994948e-01, + 1.104748746273835069e-01, + 1.105487211278076420e-01, + 1.106223621265157997e-01, + 1.106957975807755373e-01, + 1.107690274481753639e-01, + 1.108420516866259892e-01, + 1.109148702543614196e-01, + 1.109874831099351422e-01, + 1.110598902122254400e-01, + 1.111320915204299653e-01, + 1.112040869940695703e-01, + 1.112758765929867805e-01, + 1.113474602773454752e-01, + 1.114188380076315266e-01, + 1.114900097446526461e-01, + 1.115609754495382466e-01, + 1.116317350837383315e-01, + 1.117022886090255351e-01, + 1.117726359874939984e-01, + 1.118427771815581756e-01, + 1.119127121539551517e-01, + 1.119824408677429495e-01, + 1.120519632863008486e-01, + 1.121212793733295243e-01, + 1.121903890928512143e-01, + 1.122592924092082056e-01, + 1.123279892870645696e-01, + 1.123964796914067588e-01, + 1.124647635875396096e-01, + 1.125328409410914776e-01, + 1.126007117180102129e-01, + 1.126683758845643812e-01, + 1.127358334073451651e-01, + 1.128030842532621869e-01, + 1.128701283895473667e-01, + 1.129369657837534097e-01, + 1.130035964037523488e-01, + 1.130700202177379460e-01, + 1.131362371942241374e-01, + 1.132022473020449921e-01, + 1.132680505103561414e-01, + 1.133336467886323917e-01, + 1.133990361066691266e-01, + 1.134642184345822924e-01, + 1.135291937428080933e-01, + 1.135939620021027413e-01, + 1.136585231835423454e-01, + 1.137228772585233694e-01, + 1.137870241987617853e-01, + 1.138509639762941006e-01, + 1.139146965634765946e-01, + 1.139782219329851243e-01, + 1.140415400578150273e-01, + 1.141046509112820517e-01, + 1.141675544670212317e-01, + 1.142302506989875677e-01, + 1.142927395814541114e-01, + 1.143550210890150604e-01, + 1.144170951965837041e-01, + 1.144789618793919522e-01, + 1.145406211129914587e-01, + 1.146020728732527472e-01, + 1.146633171363661413e-01, + 1.147243538788405848e-01, + 1.147851830775042381e-01, + 1.148458047095036183e-01, + 1.149062187523050976e-01, + 1.149664251836933077e-01, + 1.150264239817717915e-01, + 1.150862151249623655e-01, + 1.151457985920062294e-01, + 1.152051743619623009e-01, + 1.152643424142092282e-01, + 1.153233027284426976e-01, + 1.153820552846771402e-01, + 1.154406000632460655e-01, + 1.154989370448004649e-01, + 1.155570662103099361e-01, + 1.156149875410614480e-01, + 1.156727010186606730e-01, + 1.157302066250307376e-01, + 1.157875043424135691e-01, + 1.158445941533672169e-01, + 1.159014760407691830e-01, + 1.159581499878142991e-01, + 1.160146159780133662e-01, + 1.160708739951968188e-01, + 1.161269240235116851e-01, + 1.161827660474218371e-01, + 1.162384000517093785e-01, + 1.162938260214732566e-01, + 1.163490439421289296e-01, + 1.164040537994096014e-01, + 1.164588555793656804e-01, + 1.165134492683641831e-01, + 1.165678348530890529e-01, + 1.166220123205399251e-01, + 1.166759816580354298e-01, + 1.167297428532081127e-01, + 1.167832958940097365e-01, + 1.168366407687062292e-01, + 1.168897774658809036e-01, + 1.169427059744336667e-01, + 1.169954262835802700e-01, + 1.170479383828518100e-01, + 1.171002422620972955e-01, + 1.171523379114800117e-01, + 1.172042253214794633e-01, + 1.172559044828918318e-01, + 1.173073753868279501e-01, + 1.173586380247151062e-01, + 1.174096923882953780e-01, + 1.174605384696272709e-01, + 1.175111762610835803e-01, + 1.175616057553534599e-01, + 1.176118269454398679e-01, + 1.176618398246630642e-01, + 1.177116443866558920e-01, + 1.177612406253682326e-01, + 1.178106285350638271e-01, + 1.178598081103208600e-01, + 1.179087793460333738e-01, + 1.179575422374082444e-01, + 1.180060967799690941e-01, + 1.180544429695525310e-01, + 1.181025808023095369e-01, + 1.181505102747056474e-01, + 1.181982313835209242e-01, + 1.182457441258487202e-01, + 1.182930484990968173e-01, + 1.183401445009867325e-01, + 1.183870321295548422e-01, + 1.184337113831490096e-01, + 1.184801822604324012e-01, + 1.185264447603816690e-01, + 1.185724988822861731e-01, + 1.186183446257492446e-01, + 1.186639819906868815e-01, + 1.187094109773283168e-01, + 1.187546315862162000e-01, + 1.187996438182063880e-01, + 1.188444476744666689e-01, + 1.188890431564780803e-01, + 1.189334302660347426e-01, + 1.189776090052422214e-01, + 1.190215793765200258e-01, + 1.190653413825993323e-01, + 1.191088950265225266e-01, + 1.191522403116463402e-01, + 1.191953772416377705e-01, + 1.192383058204766477e-01, + 1.192810260524544003e-01, + 1.193235379421747205e-01, + 1.193658414945521634e-01, + 1.194079367148133120e-01, + 1.194498236084961529e-01, + 1.194915021814501460e-01, + 1.195329724398363491e-01, + 1.195742343901262522e-01, + 1.196152880391022216e-01, + 1.196561333938594290e-01, + 1.196967704618009387e-01, + 1.197371992506438693e-01, + 1.197774197684134678e-01, + 1.198174320234460799e-01, + 1.198572360243894408e-01, + 1.198968317802008021e-01, + 1.199362193001476673e-01, + 1.199753985938079026e-01, + 1.200143696710691682e-01, + 1.200531325421291540e-01, + 1.200916872174958988e-01, + 1.201300337079855562e-01, + 1.201681720247257806e-01, + 1.202061021791523826e-01, + 1.202438241830108001e-01, + 1.202813380483555711e-01, + 1.203186437875514020e-01, + 1.203557414132709197e-01, + 1.203926309384959203e-01, + 1.204293123765171059e-01, + 1.204657857409338478e-01, + 1.205020510456541599e-01, + 1.205381083048948226e-01, + 1.205739575331794405e-01, + 1.206095987453427165e-01, + 1.206450319565244567e-01, + 1.206802571821742193e-01, + 1.207152744380490805e-01, + 1.207500837402138844e-01, + 1.207846851050411452e-01, + 1.208190785492107983e-01, + 1.208532640897103660e-01, + 1.208872417438347502e-01, + 1.209210115291856763e-01, + 1.209545734636728737e-01, + 1.209879275655109665e-01, + 1.210210738532241648e-01, + 1.210540123456415595e-01, + 1.210867430618989271e-01, + 1.211192660214397560e-01, + 1.211515812440128043e-01, + 1.211836887496727660e-01, + 1.212155885587815896e-01, + 1.212472806920070478e-01, + 1.212787651703216146e-01, + 1.213100420150047820e-01, + 1.213411112476407844e-01, + 1.213719728901206524e-01, + 1.214026269646395761e-01, + 1.214330734936984041e-01, + 1.214633125001026437e-01, + 1.214933440069638215e-01, + 1.215231680376978041e-01, + 1.215527846160252973e-01, + 1.215821937659714996e-01, + 1.216113955118664491e-01, + 1.216403898783436632e-01, + 1.216691768903423315e-01, + 1.216977565731048594e-01, + 1.217261289521779088e-01, + 1.217542940534117185e-01, + 1.217822519029611861e-01, + 1.218100025272834119e-01, + 1.218375459531401694e-01, + 1.218648822075962812e-01, + 1.218920113180191889e-01, + 1.219189333120807711e-01, + 1.219456482177543183e-01, + 1.219721560633166973e-01, + 1.219984568773483380e-01, + 1.220245506887304987e-01, + 1.220504375266483338e-01, + 1.220761174205887284e-01, + 1.221015904003402708e-01, + 1.221268564959950703e-01, + 1.221519157379448300e-01, + 1.221767681568858011e-01, + 1.222014137838135089e-01, + 1.222258526500263481e-01, + 1.222500847871238611e-01, + 1.222741102270060026e-01, + 1.222979290018750553e-01, + 1.223215411442332562e-01, + 1.223449466868848506e-01, + 1.223681456629332615e-01, + 1.223911381057836006e-01, + 1.224139240491406572e-01, + 1.224365035270102847e-01, + 1.224588765736975976e-01, + 1.224810432238085944e-01, + 1.225030035122486594e-01, + 1.225247574742225898e-01, + 1.225463051452353874e-01, + 1.225676465610913840e-01, + 1.225887817578934225e-01, + 1.226097107720443002e-01, + 1.226304336402463391e-01, + 1.226509503994992201e-01, + 1.226712610871021625e-01, + 1.226913657406533548e-01, + 1.227112643980490664e-01, + 1.227309570974834119e-01, + 1.227504438774490031e-01, + 1.227697247767373934e-01, + 1.227887998344360243e-01, + 1.228076690899322365e-01, + 1.228263325829091202e-01, + 1.228447903533479157e-01, + 1.228630424415275840e-01, + 1.228810888880233626e-01, + 1.228989297337084174e-01, + 1.229165650197517196e-01, + 1.229339947876199046e-01, + 1.229512190790753440e-01, + 1.229682379361774630e-01, + 1.229850514012813534e-01, + 1.230016595170387445e-01, + 1.230180623263966710e-01, + 1.230342598725983200e-01, + 1.230502521991828635e-01, + 1.230660393499847793e-01, + 1.230816213691331013e-01, + 1.230969983010528623e-01, + 1.231121701904642207e-01, + 1.231271370823816130e-01, + 1.231418990221144899e-01, + 1.231564560552672744e-01, + 1.231708082277386401e-01, + 1.231849555857203460e-01, + 1.231988981757001500e-01, + 1.232126360444588398e-01, + 1.232261692390706348e-01, + 1.232394978069038805e-01, + 1.232526217956203540e-01, + 1.232655412531755423e-01, + 1.232782562278176980e-01, + 1.232907667680873259e-01, + 1.233030729228195843e-01, + 1.233151747411406762e-01, + 1.233270722724707225e-01, + 1.233387655665208194e-01, + 1.233502546732953564e-01, + 1.233615396430906008e-01, + 1.233726205264939618e-01, + 1.233834973743859614e-01, + 1.233941702379380279e-01, + 1.234046391686119820e-01, + 1.234149042181629935e-01, + 1.234249654386361528e-01, + 1.234348228823667071e-01, + 1.234444766019825029e-01, + 1.234539266504002114e-01, + 1.234631730808290612e-01, + 1.234722159467661479e-01, + 1.234810553020007778e-01, + 1.234896912006108044e-01, + 1.234981236969645985e-01, + 1.235063528457199106e-01, + 1.235143787018240097e-01, + 1.235222013205140995e-01, + 1.235298207573153478e-01, + 1.235372370680426352e-01, + 1.235444503087994306e-01, + 1.235514605359784440e-01, + 1.235582678062598500e-01, + 1.235648721766121477e-01, + 1.235712737042933967e-01, + 1.235774724468483160e-01, + 1.235834684621096718e-01, + 1.235892618081984168e-01, + 1.235948525435218021e-01, + 1.236002407267758757e-01, + 1.236054264169421796e-01, + 1.236104096732908719e-01, + 1.236151905553777713e-01, + 1.236197691230456197e-01, + 1.236241454364234993e-01, + 1.236283195559274156e-01, + 1.236322915422579799e-01, + 1.236360614564035454e-01, + 1.236396293596364465e-01, + 1.236429953135159132e-01, + 1.236461593798866138e-01, + 1.236491216208770172e-01, + 1.236518820989025019e-01, + 1.236544408766619974e-01, + 1.236567980171395381e-01, + 1.236589535836036396e-01, + 1.236609076396069928e-01, + 1.236626602489873522e-01, + 1.236642114758654820e-01, + 1.236655613846462248e-01, + 1.236667100400182656e-01, + 1.236676575069530354e-01, + 1.236684038507069316e-01, + 1.236689491368177657e-01, + 1.236692934311069136e-01, + 1.236694367996785393e-01, + 1.236693793089188587e-01, + 1.236691210254977635e-01, + 1.236686620163662126e-01, + 1.236680023487569391e-01, + 1.236671420901856305e-01, + 1.236660813084495547e-01, + 1.236648200716260471e-01, + 1.236633584480752029e-01, + 1.236616965064382540e-01, + 1.236598343156356111e-01, + 1.236577719448712365e-01, + 1.236555094636267171e-01, + 1.236530469416664696e-01, + 1.236503844490337983e-01, + 1.236475220560519089e-01, + 1.236444598333250877e-01, + 1.236411978517355514e-01, + 1.236377361824463755e-01, + 1.236340748968993986e-01, + 1.236302140668152499e-01, + 1.236261537641944186e-01, + 1.236218940613151990e-01, + 1.236174350307342601e-01, + 1.236127767452875476e-01, + 1.236079192780884795e-01, + 1.236028627025285015e-01, + 1.235976070922776143e-01, + 1.235921525212820560e-01, + 1.235864990637665223e-01, + 1.235806467942326681e-01, + 1.235745957874590101e-01, + 1.235683461185007048e-01, + 1.235618978626900483e-01, + 1.235552510956357680e-01, + 1.235484058932225099e-01, + 1.235413623316107962e-01, + 1.235341204872377335e-01, + 1.235266804368157362e-01, + 1.235190422573327479e-01, + 1.235112060260514927e-01, + 1.235031718205107931e-01, + 1.234949397185237802e-01, + 1.234865097981785453e-01, + 1.234778821378364755e-01, + 1.234690568161358193e-01, + 1.234600339119869966e-01, + 1.234508135045744998e-01, + 1.234413956733574069e-01, + 1.234317804980676891e-01, + 1.234219680587106266e-01, + 1.234119584355646698e-01, + 1.234017517091824806e-01, + 1.233913479603874624e-01, + 1.233807472702770219e-01, + 1.233699497202203899e-01, + 1.233589553918586490e-01, + 1.233477643671052615e-01, + 1.233363767281457357e-01, + 1.233247925574369325e-01, + 1.233130119377068845e-01, + 1.233010349519545745e-01, + 1.232888616834501155e-01, + 1.232764922157350562e-01, + 1.232639266326209654e-01, + 1.232511650181898483e-01, + 1.232382074567932861e-01, + 1.232250540330534355e-01, + 1.232117048318625008e-01, + 1.231981599383815407e-01, + 1.231844194380420088e-01, + 1.231704834165425616e-01, + 1.231563519598529721e-01, + 1.231420251542107436e-01, + 1.231275030861215675e-01, + 1.231127858423602395e-01, + 1.230978735099690635e-01, + 1.230827661762584346e-01, + 1.230674639288068944e-01, + 1.230519668554603263e-01, + 1.230362750443311642e-01, + 1.230203885838000583e-01, + 1.230043075625135152e-01, + 1.229880320693853002e-01, + 1.229715621935959513e-01, + 1.229548980245918771e-01, + 1.229380396520847046e-01, + 1.229209871660536801e-01, + 1.229037406567427687e-01, + 1.228863002146608763e-01, + 1.228686659305830292e-01, + 1.228508378955482511e-01, + 1.228328162008619912e-01, + 1.228146009380921694e-01, + 1.227961921990729927e-01, + 1.227775900759019850e-01, + 1.227587946609399461e-01, + 1.227398060468130325e-01, + 1.227206243264099272e-01, + 1.227012495928824776e-01, + 1.226816819396458202e-01, + 1.226619214603782010e-01, + 1.226419682490212937e-01, + 1.226218223997769807e-01, + 1.226014840071115025e-01, + 1.225809531657525847e-01, + 1.225602299706899240e-01, + 1.225393145171734671e-01, + 1.225182069007161867e-01, + 1.224969072170920964e-01, + 1.224754155623356128e-01, + 1.224537320327414719e-01, + 1.224318567248665474e-01, + 1.224097897355254511e-01, + 1.223875311617961259e-01, + 1.223650811010137118e-01, + 1.223424396507737100e-01, + 1.223196069089326349e-01, + 1.222965829736036431e-01, + 1.222733679431610154e-01, + 1.222499619162365908e-01, + 1.222263649917212924e-01, + 1.222025772687641149e-01, + 1.221785988467729289e-01, + 1.221544298254120253e-01, + 1.221300703046050845e-01, + 1.221055203845321929e-01, + 1.220807801656308977e-01, + 1.220558497485961097e-01, + 1.220307292343785627e-01, + 1.220054187241870897e-01, + 1.219799183194855835e-01, + 1.219542281219945096e-01, + 1.219283482336902952e-01, + 1.219022787568051214e-01, + 1.218760197938268536e-01, + 1.218495714474979869e-01, + 1.218229338208157292e-01, + 1.217961070170336946e-01, + 1.217690911396585446e-01, + 1.217418862924517925e-01, + 1.217144925794290261e-01, + 1.216869101048598661e-01, + 1.216591389732677997e-01, + 1.216311792894282096e-01, + 1.216030311583726209e-01, + 1.215746946853825811e-01, + 1.215461699759944614e-01, + 1.215174571359954325e-01, + 1.214885562714268091e-01, + 1.214594674885806913e-01, + 1.214301908940011998e-01, + 1.214007265944839348e-01, + 1.213710746970771553e-01, + 1.213412353090786294e-01, + 1.213112085380375488e-01, + 1.212809944917545846e-01, + 1.212505932782801110e-01, + 1.212200050059143996e-01, + 1.211892297832090071e-01, + 1.211582677189640828e-01, + 1.211271189222293126e-01, + 1.210957835023049461e-01, + 1.210642615687386181e-01, + 1.210325532313280966e-01, + 1.210006586001197149e-01, + 1.209685777854069416e-01, + 1.209363108977330181e-01, + 1.209038580478875441e-01, + 1.208712193469089757e-01, + 1.208383949060828633e-01, + 1.208053848369417677e-01, + 1.207721892512654688e-01, + 1.207388082610799662e-01, + 1.207052419786590614e-01, + 1.206714905165209156e-01, + 1.206375539874317837e-01, + 1.206034325044017530e-01, + 1.205691261806878800e-01, + 1.205346351297915258e-01, + 1.204999594654606598e-01, + 1.204650993016866956e-01, + 1.204300547527059340e-01, + 1.203948259329989667e-01, + 1.203594129572910093e-01, + 1.203238159405510127e-01, + 1.202880349979910252e-01, + 1.202520702450678158e-01, + 1.202159217974796551e-01, + 1.201795897711690070e-01, + 1.201430742823206416e-01, + 1.201063754473617323e-01, + 1.200694933829614119e-01, + 1.200324282060312997e-01, + 1.199951800337245716e-01, + 1.199577489834360300e-01, + 1.199201351728009790e-01, + 1.198823387196968349e-01, + 1.198443597422411688e-01, + 1.198061983587922902e-01, + 1.197678546879481498e-01, + 1.197293288485478946e-01, + 1.196906209596695636e-01, + 1.196517311406312123e-01, + 1.196126595109895524e-01, + 1.195734061905408541e-01, + 1.195339712993206127e-01, + 1.194943549576028552e-01, + 1.194545572858988353e-01, + 1.194145784049589765e-01, + 1.193744184357703186e-01, + 1.193340774995597237e-01, + 1.192935557177891154e-01, + 1.192528532121592683e-01, + 1.192119701046062408e-01, + 1.191709065173034987e-01, + 1.191296625726611103e-01, + 1.190882383933246774e-01, + 1.190466341021767377e-01, + 1.190048498223338774e-01, + 1.189628856771488830e-01, + 1.189207417902100050e-01, + 1.188784182853395710e-01, + 1.188359152865954005e-01, + 1.187932329182692370e-01, + 1.187503713048870257e-01, + 1.187073305712076088e-01, + 1.186641108422255564e-01, + 1.186207122431665456e-01, + 1.185771348994915236e-01, + 1.185333789368925306e-01, + 1.184894444812948366e-01, + 1.184453316588566230e-01, + 1.184010405959678575e-01, + 1.183565714192496982e-01, + 1.183119242555555339e-01, + 1.182670992319704573e-01, + 1.182220964758100012e-01, + 1.181769161146210279e-01, + 1.181315582761808675e-01, + 1.180860230884968193e-01, + 1.180403106798064289e-01, + 1.179944211785777658e-01, + 1.179483547135078275e-01, + 1.179021114135223730e-01, + 1.178556914077777684e-01, + 1.178090948256578785e-01, + 1.177623217967764119e-01, + 1.177153724509734239e-01, + 1.176682469183190222e-01, + 1.176209453291098550e-01, + 1.175734678138708883e-01, + 1.175258145033537260e-01, + 1.174779855285371516e-01, + 1.174299810206274053e-01, + 1.173818011110562137e-01, + 1.173334459314819278e-01, + 1.172849156137895782e-01, + 1.172362102900887937e-01, + 1.171873300927154110e-01, + 1.171382751542306005e-01, + 1.170890456074201863e-01, + 1.170396415852939659e-01, + 1.169900632210876396e-01, + 1.169403106482601318e-01, + 1.168903840004944239e-01, + 1.168402834116975958e-01, + 1.167900090159995213e-01, + 1.167395609477533541e-01, + 1.166889393415357773e-01, + 1.166381443321451300e-01, + 1.165871760546025176e-01, + 1.165360346441511874e-01, + 1.164847202362565559e-01, + 1.164332329666049465e-01, + 1.163815729711040886e-01, + 1.163297403858830903e-01, + 1.162777353472922021e-01, + 1.162255579919010545e-01, + 1.161732084565003098e-01, + 1.161206868781004403e-01, + 1.160679933939316871e-01, + 1.160151281414441571e-01, + 1.159620912583062685e-01, + 1.159088828824058753e-01, + 1.158555031518493095e-01, + 1.158019522049617278e-01, + 1.157482301802862518e-01, + 1.156943372165835510e-01, + 1.156402734528316073e-01, + 1.155860390282271305e-01, + 1.155316340821825050e-01, + 1.154770587543277605e-01, + 1.154223131845084627e-01, + 1.153673975127878087e-01, + 1.153123118794434215e-01, + 1.152570564249705276e-01, + 1.152016312900780992e-01, + 1.151460366156913245e-01, + 1.150902725429496787e-01, + 1.150343392132075343e-01, + 1.149782367680347583e-01, + 1.149219653492130760e-01, + 1.148655250987398457e-01, + 1.148089161588256857e-01, + 1.147521386718936415e-01, + 1.146951927805808652e-01, + 1.146380786277371444e-01, + 1.145807963564242221e-01, + 1.145233461099159356e-01, + 1.144657280316986742e-01, + 1.144079422654709632e-01, + 1.143499889551411741e-01, + 1.142918682448306050e-01, + 1.142335802788696786e-01, + 1.141751252018012169e-01, + 1.141165031583765144e-01, + 1.140577142935587651e-01, + 1.139987587525192053e-01, + 1.139396366806400829e-01, + 1.138803482235115488e-01, + 1.138208935269335864e-01, + 1.137612727369151644e-01, + 1.137014859996719612e-01, + 1.136415334616300288e-01, + 1.135814152694219620e-01, + 1.135211315698884671e-01, + 1.134606825100760441e-01, + 1.134000682372408308e-01, + 1.133392888988433711e-01, + 1.132783446425527085e-01, + 1.132172356162420429e-01, + 1.131559619679921164e-01, + 1.130945238460886321e-01, + 1.130329213990227816e-01, + 1.129711547754914808e-01, + 1.129092241243942751e-01, + 1.128471295948383218e-01, + 1.127848713361325333e-01, + 1.127224494977913660e-01, + 1.126598642295325581e-01, + 1.125971156812769769e-01, + 1.125342040031486607e-01, + 1.124711293454753319e-01, + 1.124078918587860798e-01, + 1.123444916938132199e-01, + 1.122809290014908090e-01, + 1.122172039329543541e-01, + 1.121533166395414644e-01, + 1.120892672727912404e-01, + 1.120250559844416655e-01, + 1.119606829264341852e-01, + 1.118961482509084754e-01, + 1.118314521102054399e-01, + 1.117665946568652535e-01, + 1.117015760436278621e-01, + 1.116363964234318579e-01, + 1.115710559494157705e-01, + 1.115055547749161380e-01, + 1.114398930534678395e-01, + 1.113740709388042621e-01, + 1.113080885848565932e-01, + 1.112419461457532788e-01, + 1.111756437758196492e-01, + 1.111091816295791124e-01, + 1.110425598617505033e-01, + 1.109757786272503322e-01, + 1.109088380811900226e-01, + 1.108417383788782989e-01, + 1.107744796758178552e-01, + 1.107070621277075478e-01, + 1.106394858904409390e-01, + 1.105717511201065317e-01, + 1.105038579729868270e-01, + 1.104358066055591420e-01, + 1.103675971744941114e-01, + 1.102992298366558127e-01, + 1.102307047491020570e-01, + 1.101620220690832513e-01, + 1.100931819540428708e-01, + 1.100241845616167086e-01, + 1.099550300496322242e-01, + 1.098857185761093064e-01, + 1.098162502992588718e-01, + 1.097466253774839057e-01, + 1.096768439693773661e-01, + 1.096069062337238220e-01, + 1.095368123294973295e-01, + 1.094665624158630973e-01, + 1.093961566521751694e-01, + 1.093255951979779511e-01, + 1.092548782130043500e-01, + 1.091840058571770106e-01, + 1.091129782906064549e-01, + 1.090417956735922761e-01, + 1.089704581666215422e-01, + 1.088989659303698926e-01, + 1.088273191256994843e-01, + 1.087555179136605876e-01, + 1.086835624554898933e-01, + 1.086114529126108591e-01, + 1.085391894466340157e-01, + 1.084667722193540518e-01, + 1.083942013927532699e-01, + 1.083214771289988804e-01, + 1.082485995904434034e-01, + 1.081755689396235037e-01, + 1.081023853392612116e-01, + 1.080290489522630210e-01, + 1.079555599417184875e-01, + 1.078819184709017276e-01, + 1.078081247032701834e-01, + 1.077341788024640534e-01, + 1.076600809323071117e-01, + 1.075858312568042374e-01, + 1.075114299401445095e-01, + 1.074368771466978068e-01, + 1.073621730410154046e-01, + 1.072873177878308076e-01, + 1.072123115520577236e-01, + 1.071371544987919089e-01, + 1.070618467933081713e-01, + 1.069863886010620768e-01, + 1.069107800876900882e-01, + 1.068350214190067482e-01, + 1.067591127610068164e-01, + 1.066830542798632986e-01, + 1.066068461419292512e-01, + 1.065304885137346308e-01, + 1.064539815619885144e-01, + 1.063773254535774482e-01, + 1.063005203555659056e-01, + 1.062235664351947606e-01, + 1.061464638598832028e-01, + 1.060692127972254623e-01, + 1.059918134149930302e-01, + 1.059142658811336180e-01, + 1.058365703637699218e-01, + 1.057587270312010524e-01, + 1.056807360519009253e-01, + 1.056025975945174417e-01, + 1.055243118278741538e-01, + 1.054458789209690162e-01, + 1.053672990429730255e-01, + 1.052885723632309561e-01, + 1.052096990512617902e-01, + 1.051306792767569692e-01, + 1.050515132095811988e-01, + 1.049722010197703670e-01, + 1.048927428775339316e-01, + 1.048131389532530044e-01, + 1.047333894174798524e-01, + 1.046534944409378970e-01, + 1.045734541945217977e-01, + 1.044932688492971051e-01, + 1.044129385764991924e-01, + 1.043324635475341988e-01, + 1.042518439339772812e-01, + 1.041710799075736688e-01, + 1.040901716402378857e-01, + 1.040091193040521417e-01, + 1.039279230712686353e-01, + 1.038465831143067092e-01, + 1.037650996057549874e-01, + 1.036834727183680860e-01, + 1.036017026250695416e-01, + 1.035197894989485501e-01, + 1.034377335132619646e-01, + 1.033555348414334635e-01, + 1.032731936570512321e-01, + 1.031907101338709887e-01, + 1.031080844458131945e-01, + 1.030253167669639147e-01, + 1.029424072715734162e-01, + 1.028593561340572365e-01, + 1.027761635289951153e-01, + 1.026928296311310079e-01, + 1.026093546153720726e-01, + 1.025257386567893086e-01, + 1.024419819306166962e-01, + 1.023580846122503912e-01, + 1.022740468772503075e-01, + 1.021898689013379519e-01, + 1.021055508603961881e-01, + 1.020210929304704306e-01, + 1.019364952877659936e-01, + 1.018517581086511165e-01, + 1.017668815696524537e-01, + 1.016818658474593629e-01, + 1.015967111189189503e-01, + 1.015114175610400127e-01, + 1.014259853509894699e-01, + 1.013404146660938365e-01, + 1.012547056838388193e-01, + 1.011688585818675823e-01, + 1.010828735379832033e-01, + 1.009967507301447048e-01, + 1.009104903364702460e-01, + 1.008240925352345135e-01, + 1.007375575048689298e-01, + 1.006508854239629575e-01, + 1.005640764712604079e-01, + 1.004771308256628831e-01, + 1.003900486662266250e-01, + 1.003028301721639870e-01, + 1.002154755228428507e-01, + 1.001279848977841419e-01, + 1.000403584766646481e-01, + 9.995259643931600491e-02, + 9.986469896572192084e-02, + 9.977666623602088336e-02, + 9.968849843050490989e-02, + 9.960019572961810452e-02, + 9.951175831395762950e-02, + 9.942318636427292800e-02, + 9.933448006146579357e-02, + 9.924563958658925988e-02, + 9.915666512084808648e-02, + 9.906755684559800934e-02, + 9.897831494234581029e-02, + 9.888893959274833168e-02, + 9.879943097861319801e-02, + 9.870978928189680368e-02, + 9.862001468470667220e-02, + 9.853010736929748714e-02, + 9.844006751807542199e-02, + 9.834989531359294990e-02, + 9.825959093855247961e-02, + 9.816915457580296933e-02, + 9.807858640834260511e-02, + 9.798788661931552568e-02, + 9.789705539201394580e-02, + 9.780609290987682392e-02, + 9.771499935648829405e-02, + 9.762377491557984455e-02, + 9.753241977102884708e-02, + 9.744093410685686352e-02, + 9.734931810723226886e-02, + 9.725757195646732300e-02, + 9.716569583901932261e-02, + 9.707368993948892189e-02, + 9.698155444262161751e-02, + 9.688928953330600002e-02, + 9.679689539657485020e-02, + 9.670437221760269653e-02, + 9.661172018170716136e-02, + 9.651893947434861398e-02, + 9.642603028112961550e-02, + 9.633299278779315633e-02, + 9.623982718022539018e-02, + 9.614653364445252537e-02, + 9.605311236664149099e-02, + 9.595956353309974263e-02, + 9.586588733027553988e-02, + 9.577208394475643372e-02, + 9.567815356326922482e-02, + 9.558409637268089343e-02, + 9.548991255999643435e-02, + 9.539560231235937049e-02, + 9.530116581705226630e-02, + 9.520660326149503472e-02, + 9.511191483324533957e-02, + 9.501710071999781848e-02, + 9.492216110958506814e-02, + 9.482709618997517409e-02, + 9.473190614927322339e-02, + 9.463659117572056911e-02, + 9.454115145769388662e-02, + 9.444558718370585360e-02, + 9.434989854240258267e-02, + 9.425408572256706308e-02, + 9.415814891311567736e-02, + 9.406208830309908953e-02, + 9.396590408170145403e-02, + 9.386959643824113741e-02, + 9.377316556216962196e-02, + 9.367661164307011790e-02, + 9.357993487066006144e-02, + 9.348313543478795062e-02, + 9.338621352543438614e-02, + 9.328916933271230727e-02, + 9.319200304686481307e-02, + 9.309471485826663339e-02, + 9.299730495742321301e-02, + 9.289977353496980950e-02, + 9.280212078167231204e-02, + 9.270434688842620063e-02, + 9.260645204625565785e-02, + 9.250843644631487339e-02, + 9.241030027988553219e-02, + 9.231204373837895161e-02, + 9.221366701333413851e-02, + 9.211517029641765053e-02, + 9.201655377942345726e-02, + 9.191781765427298190e-02, + 9.181896211301451838e-02, + 9.171998734782245422e-02, + 9.162089355099709009e-02, + 9.152168091496593050e-02, + 9.142234963228039468e-02, + 9.132289989561817589e-02, + 9.122333189778122908e-02, + 9.112364583169653420e-02, + 9.102384189041493046e-02, + 9.092392026711162978e-02, + 9.082388115508510662e-02, + 9.072372474775707019e-02, + 9.062345123867286689e-02, + 9.052306082149942645e-02, + 9.042255369002651089e-02, + 9.032193003816592347e-02, + 9.022119005995155039e-02, + 9.012033394953773702e-02, + 9.001936190120085612e-02, + 8.991827410933699027e-02, + 8.981707076846308369e-02, + 8.971575207321641487e-02, + 8.961431821835352807e-02, + 8.951276939875092709e-02, + 8.941110580940381247e-02, + 8.930932764542605373e-02, + 8.920743510204980076e-02, + 8.910542837462678833e-02, + 8.900330765862447813e-02, + 8.890107314962976404e-02, + 8.879872504334471173e-02, + 8.869626353558995868e-02, + 8.859368882230200803e-02, + 8.849100109953332571e-02, + 8.838820056345265963e-02, + 8.828528741034395722e-02, + 8.818226183660678175e-02, + 8.807912403875493845e-02, + 8.797587421341766800e-02, + 8.787251255733782851e-02, + 8.776903926737232575e-02, + 8.766545454049214092e-02, + 8.756175857378087346e-02, + 8.745795156443547658e-02, + 8.735403370976568826e-02, + 8.725000520719275454e-02, + 8.714586625425090050e-02, + 8.704161704858559556e-02, + 8.693725778795330372e-02, + 8.683278867022194147e-02, + 8.672820989337026720e-02, + 8.662352165548690974e-02, + 8.651872415477071532e-02, + 8.641381758953071979e-02, + 8.630880215818437229e-02, + 8.620367805925918669e-02, + 8.609844549139078485e-02, + 8.599310465332328512e-02, + 8.588765574390939961e-02, + 8.578209896210858831e-02, + 8.567643450698882168e-02, + 8.557066257772484585e-02, + 8.546478337359757205e-02, + 8.535879709399585291e-02, + 8.525270393841262451e-02, + 8.514650410644819534e-02, + 8.504019779780785937e-02, + 8.493378521230204869e-02, + 8.482726654984627801e-02, + 8.472064201045992338e-02, + 8.461391179426755449e-02, + 8.450707610149670035e-02, + 8.440013513247873744e-02, + 8.429308908764845953e-02, + 8.418593816754310621e-02, + 8.407868257280276536e-02, + 8.397132250416963761e-02, + 8.386385816248774494e-02, + 8.375628974870316656e-02, + 8.364861746386266506e-02, + 8.354084150911393614e-02, + 8.343296208570576133e-02, + 8.332497939498660633e-02, + 8.321689363840517606e-02, + 8.310870501750960981e-02, + 8.300041373394763389e-02, + 8.289201998946534033e-02, + 8.278352398590869965e-02, + 8.267492592521996642e-02, + 8.256622600944162060e-02, + 8.245742444071237076e-02, + 8.234852142126795893e-02, + 8.223951715344250679e-02, + 8.213041183966539316e-02, + 8.202120568246340504e-02, + 8.191189888445904455e-02, + 8.180249164836968234e-02, + 8.169298417700904258e-02, + 8.158337667328570408e-02, + 8.147366934020223994e-02, + 8.136386238085671629e-02, + 8.125395599843998617e-02, + 8.114395039623799322e-02, + 8.103384577762853813e-02, + 8.092364234608373508e-02, + 8.081334030516779121e-02, + 8.070293985853765895e-02, + 8.059244120994196736e-02, + 8.048184456322146629e-02, + 8.037115012230773570e-02, + 8.026035809122414322e-02, + 8.014946867408433151e-02, + 8.003848207509299539e-02, + 7.992739849854386958e-02, + 7.981621814882140786e-02, + 7.970494123039907619e-02, + 7.959356794783993549e-02, + 7.948209850579460167e-02, + 7.937053310900338277e-02, + 7.925887196229440546e-02, + 7.914711527058303220e-02, + 7.903526323887326288e-02, + 7.892331607225480661e-02, + 7.881127397590532990e-02, + 7.869913715508843055e-02, + 7.858690581515383189e-02, + 7.847458016153693872e-02, + 7.836216039975925363e-02, + 7.824964673542704474e-02, + 7.813703937423149837e-02, + 7.802433852194819164e-02, + 7.791154438443669006e-02, + 7.779865716764088057e-02, + 7.768567707758798624e-02, + 7.757260432038814990e-02, + 7.745943910223469786e-02, + 7.734618162940309904e-02, + 7.723283210825153400e-02, + 7.711939074521963200e-02, + 7.700585774682908169e-02, + 7.689223331968160491e-02, + 7.677851767046139919e-02, + 7.666471100593179322e-02, + 7.655081353293700930e-02, + 7.643682545840160825e-02, + 7.632274698932831059e-02, + 7.620857833280046678e-02, + 7.609431969597967027e-02, + 7.597997128610591011e-02, + 7.586553331049795956e-02, + 7.575100597655208545e-02, + 7.563638949174236736e-02, + 7.552168406361979558e-02, + 7.540688989981250701e-02, + 7.529200720802532720e-02, + 7.517703619603874343e-02, + 7.506197707171027855e-02, + 7.494683004297160445e-02, + 7.483159531783091512e-02, + 7.471627310437081726e-02, + 7.460086361074855232e-02, + 7.448536704519538587e-02, + 7.436978361601642717e-02, + 7.425411353159150352e-02, + 7.413835700037232912e-02, + 7.402251423088439253e-02, + 7.390658543172499984e-02, + 7.379057081156521758e-02, + 7.367447057914629227e-02, + 7.355828494328230105e-02, + 7.344201411285851411e-02, + 7.332565829683018732e-02, + 7.320921770422399166e-02, + 7.309269254413744421e-02, + 7.297608302573657668e-02, + 7.285938935825866936e-02, + 7.274261175100868448e-02, + 7.262575041336212511e-02, + 7.250880555476157951e-02, + 7.239177738471935797e-02, + 7.227466611281514741e-02, + 7.215747194869544245e-02, + 7.204019510207586297e-02, + 7.192283578273746258e-02, + 7.180539420052874100e-02, + 7.168787056536443658e-02, + 7.157026508722452718e-02, + 7.145257797615588158e-02, + 7.133480944226988640e-02, + 7.121695969574322327e-02, + 7.109902894681666141e-02, + 7.098101740579629282e-02, + 7.086292528305147831e-02, + 7.074475278901563857e-02, + 7.062650013418521333e-02, + 7.050816752911974461e-02, + 7.038975518444141877e-02, + 7.027126331083567712e-02, + 7.015269211904812119e-02, + 7.003404181988766297e-02, + 6.991531262422381876e-02, + 6.979650474298738916e-02, + 6.967761838716966805e-02, + 6.955865376782244258e-02, + 6.943961109605778503e-02, + 6.932049058304656786e-02, + 6.920129244002048985e-02, + 6.908201687826878712e-02, + 6.896266410913988454e-02, + 6.884323434404160391e-02, + 6.872372779443805535e-02, + 6.860414467185256548e-02, + 6.848448518786488803e-02, + 6.836474955411209198e-02, + 6.824493798228813135e-02, + 6.812505068414359544e-02, + 6.800508787148455692e-02, + 6.788504975617229431e-02, + 6.776493655012509609e-02, + 6.764474846531513819e-02, + 6.752448571376944153e-02, + 6.740414850756967780e-02, + 6.728373705885141998e-02, + 6.716325157980407301e-02, + 6.704269228267065173e-02, + 6.692205937974621266e-02, + 6.680135308338028266e-02, + 6.668057360597301475e-02, + 6.655972115997782490e-02, + 6.643879595789932424e-02, + 6.631779821229390193e-02, + 6.619672813576903125e-02, + 6.607558594098189575e-02, + 6.595437184064194269e-02, + 6.583308604750687243e-02, + 6.571172877438540005e-02, + 6.559030023413518762e-02, + 6.546880063966260821e-02, + 6.534723020392378678e-02, + 6.522558913992218543e-02, + 6.510387766071037974e-02, + 6.498209597938786608e-02, + 6.486024430910179717e-02, + 6.473832286304685713e-02, + 6.461633185446398475e-02, + 6.449427149664092862e-02, + 6.437214200291108135e-02, + 6.424994358665431227e-02, + 6.412767646129516330e-02, + 6.400534084030372328e-02, + 6.388293693719500344e-02, + 6.376046496552824350e-02, + 6.363792513890670355e-02, + 6.351531767097745584e-02, + 6.339264277543119053e-02, + 6.326990066600207685e-02, + 6.314709155646583416e-02, + 6.302421566064252134e-02, + 6.290127319239229020e-02, + 6.277826436561871615e-02, + 6.265518939426630018e-02, + 6.253204849232023299e-02, + 6.240884187380699166e-02, + 6.228556975279354868e-02, + 6.216223234338666415e-02, + 6.203882985973369069e-02, + 6.191536251602060281e-02, + 6.179183052647276020e-02, + 6.166823410535456768e-02, + 6.154457346696896175e-02, + 6.142084882565666121e-02, + 6.129706039579653487e-02, + 6.117320839180501874e-02, + 6.104929302813518616e-02, + 6.092531451927746949e-02, + 6.080127307975887602e-02, + 6.067716892414249524e-02, + 6.055300226702678423e-02, + 6.042877332304623372e-02, + 6.030448230687033423e-02, + 6.018012943320360381e-02, + 6.005571491678464435e-02, + 5.993123897238688408e-02, + 5.980670181481695380e-02, + 5.968210365891589431e-02, + 5.955744471955665836e-02, + 5.943272521164659483e-02, + 5.930794535012441637e-02, + 5.918310534996130273e-02, + 5.905820542616079666e-02, + 5.893324579375752714e-02, + 5.880822666781746616e-02, + 5.868314826343760948e-02, + 5.855801079574508849e-02, + 5.843281447989770450e-02, + 5.830755953108344297e-02, + 5.818224616451869030e-02, + 5.805687459545036400e-02, + 5.793144503915334531e-02, + 5.780595771093211682e-02, + 5.768041282611801462e-02, + 5.755481060007185817e-02, + 5.742915124818046696e-02, + 5.730343498585933892e-02, + 5.717766202855046470e-02, + 5.705183259172152965e-02, + 5.692594689086755838e-02, + 5.680000514150926327e-02, + 5.667400755919276695e-02, + 5.654795435948991450e-02, + 5.642184575799652491e-02, + 5.629568197033452820e-02, + 5.616946321214868337e-02, + 5.604318969910879189e-02, + 5.591686164690740785e-02, + 5.579047927126113554e-02, + 5.566404278790936661e-02, + 5.553755241261368325e-02, + 5.541100836115846195e-02, + 5.528441084934981181e-02, + 5.515776009301600474e-02, + 5.503105630800604608e-02, + 5.490429971019036848e-02, + 5.477749051545931919e-02, + 5.465062893972471442e-02, + 5.452371519891744539e-02, + 5.439674950898862327e-02, + 5.426973208590860076e-02, + 5.414266314566684030e-02, + 5.401554290427087318e-02, + 5.388837157774782616e-02, + 5.376114938214159727e-02, + 5.363387653351438245e-02, + 5.350655324794587747e-02, + 5.337917974153275763e-02, + 5.325175623038851114e-02, + 5.312428293064230117e-02, + 5.299676005844035365e-02, + 5.286918782994443067e-02, + 5.274156646133112969e-02, + 5.261389616879269537e-02, + 5.248617716853616610e-02, + 5.235840967678221519e-02, + 5.223059390976659416e-02, + 5.210273008373848824e-02, + 5.197481841496048166e-02, + 5.184685911970805111e-02, + 5.171885241427014168e-02, + 5.159079851494733499e-02, + 5.146269763805298714e-02, + 5.133454999991197976e-02, + 5.120635581686053261e-02, + 5.107811530524643956e-02, + 5.094982868142789584e-02, + 5.082149616177403240e-02, + 5.069311796266388198e-02, + 5.056469430048638608e-02, + 5.043622539163985369e-02, + 5.030771145253223192e-02, + 5.017915269957953089e-02, + 5.005054934920732945e-02, + 4.992190161784838126e-02, + 4.979320972194434952e-02, + 4.966447387794360041e-02, + 4.953569430230227166e-02, + 4.940687121148304439e-02, + 4.927800482195535819e-02, + 4.914909535019557074e-02, + 4.902014301268413365e-02, + 4.889114802590894399e-02, + 4.876211060636266581e-02, + 4.863303097054242491e-02, + 4.850390933495044715e-02, + 4.837474591609278174e-02, + 4.824554093048027265e-02, + 4.811629459462654634e-02, + 4.798700712504914284e-02, + 4.785767873826820423e-02, + 4.772830965080678001e-02, + 4.759890007919009153e-02, + 4.746945023994546264e-02, + 4.733996034960209071e-02, + 4.721043062469039431e-02, + 4.708086128174165941e-02, + 4.695125253728817116e-02, + 4.682160460786235351e-02, + 4.669191770999694263e-02, + 4.656219206022417512e-02, + 4.643242787507584346e-02, + 4.630262537108296994e-02, + 4.617278476477499477e-02, + 4.604290627268040059e-02, + 4.591299011132470714e-02, + 4.578303649723236557e-02, + 4.565304564692526657e-02, + 4.552301777692096402e-02, + 4.539295310373590853e-02, + 4.526285184388120081e-02, + 4.513271421386549215e-02, + 4.500254043019286804e-02, + 4.487233070936218898e-02, + 4.474208526786875584e-02, + 4.461180432220186037e-02, + 4.448148808884577060e-02, + 4.435113678427868300e-02, + 4.422075062497268783e-02, + 4.409032982739415074e-02, + 4.395987460800166585e-02, + 4.382938518324764471e-02, + 4.369886176957654689e-02, + 4.356830458342535184e-02, + 4.343771384122318419e-02, + 4.330708975939056432e-02, + 4.317643255433911698e-02, + 4.304574244247184878e-02, + 4.291501964018251680e-02, + 4.278426436385496245e-02, + 4.265347682986306288e-02, + 4.252265725457072404e-02, + 4.239180585433070109e-02, + 4.226092284548542410e-02, + 4.213000844436578379e-02, + 4.199906286729073596e-02, + 4.186808633056808560e-02, + 4.173707905049264116e-02, + 4.160604124334756765e-02, + 4.147497312540214531e-02, + 4.134387491291315053e-02, + 4.121274682212387741e-02, + 4.108158906926306225e-02, + 4.095040187054669462e-02, + 4.081918544217466582e-02, + 4.068794000033293390e-02, + 4.055666576119273253e-02, + 4.042536294090882248e-02, + 4.029403175562108058e-02, + 4.016267242145298011e-02, + 4.003128515451145897e-02, + 3.989987017088710702e-02, + 3.976842768665321548e-02, + 3.963695791786571443e-02, + 3.950546108056282590e-02, + 3.937393739076531368e-02, + 3.924238706447455427e-02, + 3.911081031767430632e-02, + 3.897920736632929511e-02, + 3.884757842638417169e-02, + 3.871592371376472025e-02, + 3.858424344437670628e-02, + 3.845253783410521736e-02, + 3.832080709881537789e-02, + 3.818905145435110005e-02, + 3.805727111653543077e-02, + 3.792546630116917089e-02, + 3.779363722403243642e-02, + 3.766178410088195927e-02, + 3.752990714745306489e-02, + 3.739800657945793749e-02, + 3.726608261258499560e-02, + 3.713413546250050878e-02, + 3.700216534484568331e-02, + 3.687017247523863284e-02, + 3.673815706927296282e-02, + 3.660611934251705585e-02, + 3.647405951051500839e-02, + 3.634197778878487523e-02, + 3.620987439281974501e-02, + 3.607774953808617902e-02, + 3.594560344002471763e-02, + 3.581343631404947103e-02, + 3.568124837554722401e-02, + 3.554903983987809518e-02, + 3.541681092237405210e-02, + 3.528456183833964671e-02, + 3.515229280305118276e-02, + 3.502000403175643817e-02, + 3.488769573967393650e-02, + 3.475536814199385593e-02, + 3.462302145387653046e-02, + 3.449065589045249153e-02, + 3.435827166682210027e-02, + 3.422586899805592914e-02, + 3.409344809919301333e-02, + 3.396100918524215528e-02, + 3.382855247118018299e-02, + 3.369607817195242189e-02, + 3.356358650247277808e-02, + 3.343107767762205917e-02, + 3.329855191224895261e-02, + 3.316600942116944284e-02, + 3.303345041916565944e-02, + 3.290087512098689715e-02, + 3.276828374134796440e-02, + 3.263567649492971762e-02, + 3.250305359637883917e-02, + 3.237041526030674798e-02, + 3.223776170129034890e-02, + 3.210509313387041597e-02, + 3.197240977255257077e-02, + 3.183971183180590858e-02, + 3.170699952606379629e-02, + 3.157427306972222791e-02, + 3.144153267714033112e-02, + 3.130877856264076275e-02, + 3.117601094050728716e-02, + 3.104323002498658723e-02, + 3.091043603028733114e-02, + 3.077762917057849310e-02, + 3.064480965999161546e-02, + 3.051197771261774869e-02, + 3.037913354250956766e-02, + 3.024627736367913391e-02, + 3.011340939009863119e-02, + 2.998052983570006699e-02, + 2.984763891437447123e-02, + 2.971473683997208695e-02, + 2.958182382630135041e-02, + 2.944890008712947038e-02, + 2.931596583618149843e-02, + 2.918302128714032884e-02, + 2.905006665364592844e-02, + 2.891710214929537476e-02, + 2.878412798764298786e-02, + 2.865114438219937623e-02, + 2.851815154643094069e-02, + 2.838514969376047456e-02, + 2.825213903756565795e-02, + 2.811911979118035879e-02, + 2.798609216789231177e-02, + 2.785305638094435349e-02, + 2.772001264353386035e-02, + 2.758696116881169738e-02, + 2.745390216988301615e-02, + 2.732083585980545765e-02, + 2.718776245159063368e-02, + 2.705468215820261077e-02, + 2.692159519255757708e-02, + 2.678850176752468545e-02, + 2.665540209592342710e-02, + 2.652229639052629262e-02, + 2.638918486405657932e-02, + 2.625606772918802345e-02, + 2.612294519854553229e-02, + 2.598981748470386918e-02, + 2.585668480018838561e-02, + 2.572354735747322402e-02, + 2.559040536898277846e-02, + 2.545725904709003271e-02, + 2.532410860411645620e-02, + 2.519095425233297200e-02, + 2.505779620395739288e-02, + 2.492463467115624970e-02, + 2.479146986604362224e-02, + 2.465830200068009834e-02, + 2.452513128707402290e-02, + 2.439195793717985339e-02, + 2.425878216289821879e-02, + 2.412560417607638105e-02, + 2.399242418850654895e-02, + 2.385924241192719994e-02, + 2.372605905802084927e-02, + 2.359287433841599987e-02, + 2.345968846468437716e-02, + 2.332650164834279213e-02, + 2.319331410085199649e-02, + 2.306012603361528787e-02, + 2.292693765798032787e-02, + 2.279374918523716098e-02, + 2.266056082661850601e-02, + 2.252737279330007530e-02, + 2.239418529639852426e-02, + 2.226099854697329364e-02, + 2.212781275602454870e-02, + 2.199462813449416451e-02, + 2.186144489326440413e-02, + 2.172826324315801569e-02, + 2.159508339493851348e-02, + 2.146190555930881441e-02, + 2.132872994691196664e-02, + 2.119555676832975827e-02, + 2.106238623408334884e-02, + 2.092921855463282521e-02, + 2.079605394037628563e-02, + 2.066289260164996811e-02, + 2.052973474872833021e-02, + 2.039658059182285904e-02, + 2.026343034108272004e-02, + 2.013028420659354958e-02, + 1.999714239837804830e-02, + 1.986400512639472857e-02, + 1.973087260053882006e-02, + 1.959774503064056275e-02, + 1.946462262646581759e-02, + 1.933150559771592072e-02, + 1.919839415402643107e-02, + 1.906528850496813643e-02, + 1.893218886004534307e-02, + 1.879909542869666675e-02, + 1.866600842029450882e-02, + 1.853292804414400155e-02, + 1.839985450948403503e-02, + 1.826678802548559882e-02, + 1.813372880125229888e-02, + 1.800067704582019798e-02, + 1.786763296815667076e-02, + 1.773459677716114971e-02, + 1.760156868166379979e-02, + 1.746854889042620193e-02, + 1.733553761214001038e-02, + 1.720253505542803166e-02, + 1.706954142884242395e-02, + 1.693655694086509261e-02, + 1.680358179990786710e-02, + 1.667061621431171342e-02, + 1.653766039234588064e-02, + 1.640471454220893480e-02, + 1.627177887202691658e-02, + 1.613885358985477775e-02, + 1.600593890367427163e-02, + 1.587303502139496281e-02, + 1.574014215085360255e-02, + 1.560726049981335170e-02, + 1.547439027596448149e-02, + 1.534153168692272903e-02, + 1.520868494023027741e-02, + 1.507585024335505140e-02, + 1.494302780368951533e-02, + 1.481021782855237480e-02, + 1.467742052518559298e-02, + 1.454463610075668045e-02, + 1.441186476235717384e-02, + 1.427910671700199571e-02, + 1.414636217163019009e-02, + 1.401363133310348091e-02, + 1.388091440820720703e-02, + 1.374821160364880779e-02, + 1.361552312605862625e-02, + 1.348284918198881105e-02, + 1.335018997791313951e-02, + 1.321754572022749985e-02, + 1.308491661524840456e-02, + 1.295230286921365305e-02, + 1.281970468828179388e-02, + 1.268712227853122446e-02, + 1.255455584596109307e-02, + 1.242200559648972726e-02, + 1.228947173595504490e-02, + 1.215695447011459589e-02, + 1.202445400464420208e-02, + 1.189197054513899295e-02, + 1.175950429711163960e-02, + 1.162705546599367840e-02, + 1.149462425713353338e-02, + 1.136221087579782942e-02, + 1.122981552717034967e-02, + 1.109743841635077964e-02, + 1.096507974835660669e-02, + 1.083273972812076949e-02, + 1.070041856049271101e-02, + 1.056811645023763777e-02, + 1.043583360203567158e-02, + 1.030357022048279496e-02, + 1.017132651008908518e-02, + 1.003910267527997717e-02, + 9.906898920394662314e-03, + 9.774715449686326163e-03, + 9.642552467322334023e-03, + 9.510410177382898692e-03, + 9.378288783862038028e-03, + 9.246188490665883594e-03, + 9.114109501613693737e-03, + 8.982052020437260309e-03, + 8.850016250779193031e-03, + 8.718002396195186771e-03, + 8.586010660151350074e-03, + 8.454041246025644982e-03, + 8.322094357106717827e-03, + 8.190170196593397900e-03, + 8.058268967595455523e-03, + 7.926390873131988757e-03, + 7.794536116132512807e-03, + 7.662704899435463825e-03, + 7.530897425788461719e-03, + 7.399113897848479289e-03, + 7.267354518180458786e-03, + 7.135619489258314581e-03, + 7.003909013463298187e-03, + 6.872223293084909861e-03, + 6.740562530320158736e-03, + 6.608926927272878483e-03, + 6.477316685953916388e-03, + 6.345732008280667580e-03, + 6.214173096077148760e-03, + 6.082640151073486455e-03, + 5.951133374904993278e-03, + 5.819652969113208764e-03, + 5.688199135144218418e-03, + 5.556772074349722312e-03, + 5.425371987985557962e-03, + 5.293999077211883342e-03, + 5.162653543093584547e-03, + 5.031335586598574029e-03, + 4.900045408599046533e-03, + 4.768783209869731365e-03, + 4.637549191088887260e-03, + 4.506343552837484452e-03, + 4.375166495598339922e-03, + 4.244018219757142614e-03, + 4.112898925600956372e-03, + 3.981808813318376931e-03, + 3.850748082999884501e-03, + 3.719716934636255190e-03, + 3.588715568119755801e-03, + 3.457744183242414306e-03, + 3.326802979697159133e-03, + 3.195892157076147318e-03, + 3.065011914871916369e-03, + 2.934162452475799158e-03, + 2.803343969178269997e-03, + 2.672556664168948548e-03, + 2.541800736536040800e-03, + 2.411076385265443090e-03, + 2.280383809241809823e-03, + 2.149723207246768009e-03, + 2.019094777960114221e-03, + 1.888498719958301483e-03, + 1.757935231714651122e-03, + 1.627404511599681502e-03, + 1.496906757879515326e-03, + 1.366442168717083103e-03, + 1.236010942170407724e-03, + 1.105613276193567881e-03, + 9.752493686359166867e-04, + 8.449194172412430402e-04, + 7.146236196489577468e-04, + 5.843621733916406179e-04, + 4.541352758971314092e-04, + 3.239431244869852124e-04, + 1.937859163758393348e-04, + 6.366384867241073873e-05, +-6.642288162222435724e-05, +-1.964740776134523434e-04, +-3.264895425148430647e-04, +-4.564690796469690701e-04, +-5.864124924389461967e-04, +-7.163195844281591710e-04, +-8.461901592599859780e-04, +-9.760240206893348262e-04, +-1.105820972579655030e-03, +-1.235580818903738018e-03, +-1.365303363744533845e-03, +-1.494988411294153295e-03, +-1.624635765855397037e-03, +-1.754245231841496935e-03, +-1.883816613775824182e-03, +-2.013349716293424095e-03, +-2.142844344139863827e-03, +-2.272300302172896181e-03, +-2.401717395361329440e-03, +-2.531095428786706795e-03, +-2.660434207642344874e-03, +-2.789733537233906203e-03, +-2.918993222980979536e-03, +-3.048213070414972168e-03, +-3.177392885181561967e-03, +-3.306532473039499546e-03, +-3.435631639861427052e-03, +-3.564690191634654025e-03, +-3.693707934460224544e-03, +-3.822684674554552211e-03, +-3.951620218248314692e-03, +-4.080514371987885303e-03, +-4.209366942335140450e-03, +-4.338177735967168637e-03, +-4.466946559677761018e-03, +-4.595673220376238731e-03, +-4.724357525089200628e-03, +-4.852999280959461627e-03, +-4.981598295246940887e-03, +-5.110154375329144065e-03, +-5.238667328701059230e-03, +-5.367136962975657330e-03, +-5.495563085883650202e-03, +-5.623945505274093384e-03, +-5.752284029115210980e-03, +-5.880578465493407729e-03, +-6.008828622614977716e-03, +-6.137034308804819802e-03, +-6.265195332508103829e-03, +-6.393311502289872501e-03, +-6.521382626834841892e-03, +-6.649408514948902844e-03, +-6.777388975557917944e-03, +-6.905323817709392055e-03, +-7.033212850571540775e-03, +-7.161055883434091010e-03, +-7.288852725708998281e-03, +-7.416603186929288799e-03, +-7.544307076751595627e-03, +-7.671964204953848898e-03, +-7.799574381437083398e-03, +-7.927137416225728261e-03, +-8.054653119466908748e-03, +-8.182121301431925092e-03, +-8.309541772515208202e-03, +-8.436914343235893052e-03, +-8.564238824236776113e-03, +-8.691515026285673642e-03, +-8.818742760275227396e-03, +-8.945921837222731154e-03, +-9.073052068271365844e-03, +-9.200133264689424120e-03, +-9.327165237871054559e-03, +-9.454147799336972899e-03, +-9.581080760733549570e-03, +-9.707963933834289419e-03, +-9.834797130539585375e-03, +-9.961580162876322933e-03, +-1.008831284299952120e-02, +-1.021499498319099891e-02, +-1.034162639586128432e-02, +-1.046820689354823093e-02, +-1.059473628891869842e-02, +-1.072121439476777204e-02, +-1.084764102401913032e-02, +-1.097401598972664802e-02, +-1.110033910507251739e-02, +-1.122661018336877300e-02, +-1.135282903805775664e-02, +-1.147899548271127598e-02, +-1.160510933103220746e-02, +-1.173117039685334095e-02, +-1.185717849413908329e-02, +-1.198313343698418319e-02, +-1.210903503961529952e-02, +-1.223488311639072887e-02, +-1.236067748180009508e-02, +-1.248641795046584284e-02, +-1.261210433714211356e-02, +-1.273773645671626500e-02, +-1.286331412420803691e-02, +-1.298883715477022055e-02, +-1.311430536368944980e-02, +-1.323971856638579692e-02, +-1.336507657841272227e-02, +-1.349037921545850373e-02, +-1.361562629334491827e-02, +-1.374081762802915538e-02, +-1.386595303560254205e-02, +-1.399103233229201902e-02, +-1.411605533445934105e-02, +-1.424102185860214205e-02, +-1.436593172135407909e-02, +-1.449078473948410203e-02, +-1.461558072989836872e-02, +-1.474031950963889531e-02, +-1.486500089588452603e-02, +-1.498962470595158018e-02, +-1.511419075729313229e-02, +-1.523869886750009450e-02, +-1.536314885430115247e-02, +-1.548754053556259183e-02, +-1.561187372928943447e-02, +-1.573614825362464401e-02, +-1.586036392685055696e-02, +-1.598452056738767016e-02, +-1.610861799379645701e-02, +-1.623265602477631450e-02, +-1.635663447916610794e-02, +-1.648055317594568359e-02, +-1.660441193423380438e-02, +-1.672821057329050218e-02, +-1.685194891251588084e-02, +-1.697562677145105642e-02, +-1.709924396977859432e-02, +-1.722280032732185356e-02, +-1.734629566404640930e-02, +-1.746972980005900150e-02, +-1.759310255560891934e-02, +-1.771641375108770969e-02, +-1.783966320702907657e-02, +-1.796285074411007807e-02, +-1.808597618315013408e-02, +-1.820903934511258412e-02, +-1.833204005110373666e-02, +-1.845497812237355262e-02, +-1.857785338031636355e-02, +-1.870066564647061141e-02, +-1.882341474251917821e-02, +-1.894610049028925408e-02, +-1.906872271175303127e-02, +-1.919128122902828693e-02, +-1.931377586437748109e-02, +-1.943620644020926588e-02, +-1.955857277907753142e-02, +-1.968087470368282479e-02, +-1.980311203687177071e-02, +-1.992528460163717208e-02, +-2.004739222111922431e-02, +-2.016943471860433226e-02, +-2.029141191752697679e-02, +-2.041332364146847961e-02, +-2.053516971415778047e-02, +-2.065694995947238433e-02, +-2.077866420143695964e-02, +-2.090031226422595437e-02, +-2.102189397216099043e-02, +-2.114340914971319166e-02, +-2.126485762150286465e-02, +-2.138623921229906855e-02, +-2.150755374702121095e-02, +-2.162880105073746936e-02, +-2.174998094866676182e-02, +-2.187109326617790728e-02, +-2.199213782879006276e-02, +-2.211311446217348320e-02, +-2.223402299214867137e-02, +-2.235486324468783509e-02, +-2.247563504591409966e-02, +-2.259633822210223297e-02, +-2.271697259967922489e-02, +-2.283753800522331581e-02, +-2.295803426546568632e-02, +-2.307846120728980488e-02, +-2.319881865773140012e-02, +-2.331910644397989715e-02, +-2.343932439337710616e-02, +-2.355947233341872810e-02, +-2.367955009175375797e-02, +-2.379955749618528280e-02, +-2.391949437467010345e-02, +-2.403936055531920302e-02, +-2.415915586639885357e-02, +-2.427888013632896816e-02, +-2.439853319368531781e-02, +-2.451811486719813679e-02, +-2.463762498575321203e-02, +-2.475706337839225779e-02, +-2.487642987431230163e-02, +-2.499572430286691252e-02, +-2.511494649356520517e-02, +-2.523409627607368921e-02, +-2.535317348021510001e-02, +-2.547217793596874211e-02, +-2.559110947347184931e-02, +-2.570996792301805112e-02, +-2.582875311505966609e-02, +-2.594746488020578667e-02, +-2.606610304922396190e-02, +-2.618466745303999615e-02, +-2.630315792273826836e-02, +-2.642157428956140933e-02, +-2.653991638491129401e-02, +-2.665818404034862865e-02, +-2.677637708759388405e-02, +-2.689449535852625126e-02, +-2.701253868518564347e-02, +-2.713050689977107230e-02, +-2.724839983464222987e-02, +-2.736621732231934653e-02, +-2.748395919548249008e-02, +-2.760162528697354331e-02, +-2.771921542979469133e-02, +-2.783672945710943120e-02, +-2.795416720224331089e-02, +-2.807152849868261787e-02, +-2.818881318007658912e-02, +-2.830602108023561742e-02, +-2.842315203313296873e-02, +-2.854020587290442487e-02, +-2.865718243384807531e-02, +-2.877408155042559049e-02, +-2.889090305726117400e-02, +-2.900764678914290184e-02, +-2.912431258102202852e-02, +-2.924090026801406603e-02, +-2.935740968539791995e-02, +-2.947384066861710381e-02, +-2.959019305327990207e-02, +-2.970646667515853753e-02, +-2.982266137019020866e-02, +-2.993877697447764469e-02, +-3.005481332428820707e-02, +-3.017077025605536048e-02, +-3.028664760637755221e-02, +-3.040244521201975955e-02, +-3.051816290991275077e-02, +-3.063380053715331758e-02, +-3.074935793100540271e-02, +-3.086483492889897234e-02, +-3.098023136843163633e-02, +-3.109554708736725348e-02, +-3.121078192363762466e-02, +-3.132593571534216664e-02, +-3.144100830074730152e-02, +-3.155599951828851057e-02, +-3.167090920656841224e-02, +-3.178573720435838579e-02, +-3.190048335059856438e-02, +-3.201514748439717589e-02, +-3.212972944503237477e-02, +-3.224422907195029220e-02, +-3.235864620476786718e-02, +-3.247298068327001547e-02, +-3.258723234741284225e-02, +-3.270140103732153969e-02, +-3.281548659329169837e-02, +-3.292948885578945994e-02, +-3.304340766545141306e-02, +-3.315724286308446150e-02, +-3.327099428966753120e-02, +-3.338466178634970360e-02, +-3.349824519445190191e-02, +-3.361174435546680078e-02, +-3.372515911105831293e-02, +-3.383848930306294911e-02, +-3.395173477348872176e-02, +-3.406489536451651201e-02, +-3.417797091849944513e-02, +-3.429096127796384119e-02, +-3.440386628560853505e-02, +-3.451668578430514001e-02, +-3.462941961710026828e-02, +-3.474206762721198521e-02, +-3.485462965803377139e-02, +-3.496710555313183727e-02, +-3.507949515624739223e-02, +-3.519179831129541636e-02, +-3.530401486236557640e-02, +-3.541614465372262821e-02, +-3.552818752980545225e-02, +-3.564014333522894790e-02, +-3.575201191478262486e-02, +-3.586379311343177584e-02, +-3.597548677631739328e-02, +-3.608709274875600975e-02, +-3.619861087624087065e-02, +-3.631004100444104599e-02, +-3.642138297920188145e-02, +-3.653263664654571308e-02, +-3.664380185267155504e-02, +-3.675487844395595310e-02, +-3.686586626695168012e-02, +-3.697676516838966504e-02, +-3.708757499517830597e-02, +-3.719829559440337996e-02, +-3.730892681332940997e-02, +-3.741946849939818687e-02, +-3.752992050023063603e-02, +-3.764028266362601238e-02, +-3.775055483756172003e-02, +-3.786073687019489431e-02, +-3.797082860986122216e-02, +-3.808082990507621196e-02, +-3.819074060453406944e-02, +-3.830056055710936991e-02, +-3.841028961185613544e-02, +-3.851992761800877157e-02, +-3.862947442498149142e-02, +-3.873892988236930096e-02, +-3.884829383994734681e-02, +-3.895756614767234560e-02, +-3.906674665568079380e-02, +-3.917583521429152116e-02, +-3.928483167400374787e-02, +-3.939373588549886090e-02, +-3.950254769963971319e-02, +-3.961126696747074155e-02, +-3.971989354021911167e-02, +-3.982842726929337190e-02, +-3.993686800628527128e-02, +-4.004521560296883664e-02, +-4.015346991130056692e-02, +-4.026163078342065438e-02, +-4.036969807165147889e-02, +-4.047767162849971734e-02, +-4.058555130665511546e-02, +-4.069333695899093883e-02, +-4.080102843856466682e-02, +-4.090862559861735415e-02, +-4.101612829257498399e-02, +-4.112353637404691370e-02, +-4.123084969682831724e-02, +-4.133806811489803418e-02, +-4.144519148242058887e-02, +-4.155221965374515658e-02, +-4.165915248340653493e-02, +-4.176598982612448469e-02, +-4.187273153680518695e-02, +-4.197937747053975821e-02, +-4.208592748260589489e-02, +-4.219238142846720718e-02, +-4.229873916377380888e-02, +-4.240500054436235899e-02, +-4.251116542625579808e-02, +-4.261723366566466664e-02, +-4.272320511898565487e-02, +-4.282907964280328189e-02, +-4.293485709388938920e-02, +-4.304053732920293251e-02, +-4.314612020589139035e-02, +-4.325160558128891830e-02, +-4.335699331291923558e-02, +-4.346228325849321728e-02, +-4.356747527591053187e-02, +-4.367256922325948171e-02, +-4.377756495881678783e-02, +-4.388246234104842269e-02, +-4.398726122860936727e-02, +-4.409196148034403434e-02, +-4.419656295528562318e-02, +-4.430106551265782650e-02, +-4.440546901187369250e-02, +-4.450977331253587466e-02, +-4.461397827443777664e-02, +-4.471808375756255310e-02, +-4.482208962208365788e-02, +-4.492599572836613459e-02, +-4.502980193696466682e-02, +-4.513350810862547940e-02, +-4.523711410428574858e-02, +-4.534061978507398366e-02, +-4.544402501231020047e-02, +-4.554732964750548424e-02, +-4.565053355236362714e-02, +-4.575363658877926176e-02, +-4.585663861884026193e-02, +-4.595953950482566108e-02, +-4.606233910920732449e-02, +-4.616503729465035871e-02, +-4.626763392401155028e-02, +-4.637012886034123926e-02, +-4.647252196688286124e-02, +-4.657481310707256572e-02, +-4.667700214454036101e-02, +-4.677908894310950361e-02, +-4.688107336679727538e-02, +-4.698295527981486558e-02, +-4.708473454656678797e-02, +-4.718641103165278211e-02, +-4.728798459986606473e-02, +-4.738945511619507833e-02, +-4.749082244582223528e-02, +-4.759208645412543043e-02, +-4.769324700667691708e-02, +-4.779430396924441021e-02, +-4.789525720779106571e-02, +-4.799610658847520972e-02, +-4.809685197765119213e-02, +-4.819749324186872741e-02, +-4.829803024787345661e-02, +-4.839846286260737762e-02, +-4.849879095320840799e-02, +-4.859901438701139803e-02, +-4.869913303154687484e-02, +-4.879914675454306155e-02, +-4.889905542392435078e-02, +-4.899885890781204706e-02, +-4.909855707452540075e-02, +-4.919814979258019250e-02, +-4.929763693069009328e-02, +-4.939701835776629663e-02, +-4.949629394291755330e-02, +-4.959546355545090685e-02, +-4.969452706487104826e-02, +-4.979348434088165520e-02, +-4.989233525338365727e-02, +-4.999107967247761602e-02, +-5.008971746846224704e-02, +-5.018824851183460029e-02, +-5.028667267329181567e-02, +-5.038498982372954099e-02, +-5.048319983424243845e-02, +-5.058130257612501041e-02, +-5.067929792087133567e-02, +-5.077718574017505565e-02, +-5.087496590592945067e-02, +-5.097263829022855020e-02, +-5.107020276536596015e-02, +-5.116765920383517519e-02, +-5.126500747833152849e-02, +-5.136224746174948563e-02, +-5.145937902718521889e-02, +-5.155640204793515702e-02, +-5.165331639749740078e-02, +-5.175012194957057804e-02, +-5.184681857805526622e-02, +-5.194340615705311109e-02, +-5.203988456086718062e-02, +-5.213625366400281846e-02, +-5.223251334116710970e-02, +-5.232866346726865875e-02, +-5.242470391741933106e-02, +-5.252063456693229632e-02, +-5.261645529132338156e-02, +-5.271216596631171647e-02, +-5.280776646781817907e-02, +-5.290325667196726922e-02, +-5.299863645508624821e-02, +-5.309390569370558283e-02, +-5.318906426455900782e-02, +-5.328411204458359529e-02, +-5.337904891092037918e-02, +-5.347387474091353649e-02, +-5.356858941211187913e-02, +-5.366319280226748700e-02, +-5.375768478933673489e-02, +-5.385206525148072965e-02, +-5.394633406706447754e-02, +-5.404049111465777933e-02, +-5.413453627303509846e-02, +-5.422846942117549168e-02, +-5.432229043826358739e-02, +-5.441599920368823257e-02, +-5.450959559704420671e-02, +-5.460307949813109768e-02, +-5.469645078695475199e-02, +-5.478970934372554003e-02, +-5.488285504886068755e-02, +-5.497588778298279771e-02, +-5.506880742692030206e-02, +-5.516161386170849446e-02, +-5.525430696858792123e-02, +-5.534688662900630329e-02, +-5.543935272461809893e-02, +-5.553170513728366425e-02, +-5.562394374907108502e-02, +-5.571606844225404642e-02, +-5.580807909931485844e-02, +-5.589997560294255458e-02, +-5.599175783603255879e-02, +-5.608342568168921821e-02, +-5.617497902322305531e-02, +-5.626641774415368225e-02, +-5.635774172820737227e-02, +-5.644895085931914136e-02, +-5.654004502163182538e-02, +-5.663102409949632293e-02, +-5.672188797747255984e-02, +-5.681263654032804589e-02, +-5.690326967303950545e-02, +-5.699378726079235014e-02, +-5.708418918898046368e-02, +-5.717447534320704849e-02, +-5.726464560928443831e-02, +-5.735469987323390390e-02, +-5.744463802128677715e-02, +-5.753445993988295232e-02, +-5.762416551567237089e-02, +-5.771375463551463997e-02, +-5.780322718647974006e-02, +-5.789258305584660952e-02, +-5.798182213110490008e-02, +-5.807094429995449114e-02, +-5.815994945030559388e-02, +-5.824883747027882058e-02, +-5.833760824820525409e-02, +-5.842626167262641307e-02, +-5.851479763229564673e-02, +-5.860321601617595605e-02, +-5.869151671344238763e-02, +-5.877969961348041006e-02, +-5.886776460588766940e-02, +-5.895571158047242105e-02, +-5.904354042725497298e-02, +-5.913125103646685310e-02, +-5.921884329855153090e-02, +-5.930631710416464641e-02, +-5.939367234417348290e-02, +-5.948090890965716110e-02, +-5.956802669190786742e-02, +-5.965502558242932740e-02, +-5.974190547293838083e-02, +-5.982866625536401028e-02, +-5.991530782184796566e-02, +-6.000183006474507641e-02, +-6.008823287662259233e-02, +-6.017451615026111339e-02, +-6.026067977865406933e-02, +-6.034672365500909352e-02, +-6.043264767274580257e-02, +-6.051845172549832202e-02, +-6.060413570711420395e-02, +-6.068969951165398974e-02, +-6.077514303339314611e-02, +-6.086046616682007360e-02, +-6.094566880663776498e-02, +-6.103075084776347220e-02, +-6.111571218532815125e-02, +-6.120055271467740587e-02, +-6.128527233137136265e-02, +-6.136987093118471959e-02, +-6.145434841010709998e-02, +-6.153870466434212955e-02, +-6.162293959030937934e-02, +-6.170705308464264488e-02, +-6.179104504419113963e-02, +-6.187491536601914810e-02, +-6.195866394740640742e-02, +-6.204229068584854456e-02, +-6.212579547905582034e-02, +-6.220917822495469762e-02, +-6.229243882168730706e-02, +-6.237557716761139154e-02, +-6.245859316130149969e-02, +-6.254148670154677236e-02, +-6.262425768735398190e-02, +-6.270690601794536023e-02, +-6.278943159275959807e-02, +-6.287183431145197676e-02, +-6.295411407389446545e-02, +-6.303627078017570717e-02, +-6.311830433060036660e-02, +-6.320021462569146153e-02, +-6.328200156618740690e-02, +-6.336366505304473484e-02, +-6.344520498743674852e-02, +-6.352662127075450749e-02, +-6.360791380460557864e-02, +-6.368908249081593753e-02, +-6.377012723142828909e-02, +-6.385104792870366364e-02, +-6.393184448512057028e-02, +-6.401251680337523287e-02, +-6.409306478638227000e-02, +-6.417348833727419544e-02, +-6.425378735940157071e-02, +-6.433396175633299130e-02, +-6.441401143185593314e-02, +-6.449393628997614203e-02, +-6.457373623491745318e-02, +-6.465341117112301250e-02, +-6.473296100325429125e-02, +-6.481238563619144688e-02, +-6.489168497503408628e-02, +-6.497085892510050253e-02, +-6.504990739192786919e-02, +-6.512883028127297580e-02, +-6.520762749911168665e-02, +-6.528629895163913510e-02, +-6.536484454527041743e-02, +-6.544326418663928835e-02, +-6.552155778260011776e-02, +-6.559972524022608664e-02, +-6.567776646681132424e-02, +-6.575568136986932599e-02, +-6.583346985713299515e-02, +-6.591113183655601671e-02, +-6.598866721631251042e-02, +-6.606607590479611491e-02, +-6.614335781062145869e-02, +-6.622051284262311932e-02, +-6.629754090985659487e-02, +-6.637444192159797085e-02, +-6.645121578734382306e-02, +-6.652786241681178658e-02, +-6.660438171994031986e-02, +-6.668077360688857980e-02, +-6.675703798803730993e-02, +-6.683317477398749429e-02, +-6.690918387556267499e-02, +-6.698506520380607954e-02, +-6.706081866998415963e-02, +-6.713644418558341320e-02, +-6.721194166231204969e-02, +-6.728731101210062848e-02, +-6.736255214710115680e-02, +-6.743766497968724238e-02, +-6.751264942245407963e-02, +-6.758750538821983733e-02, +-6.766223279002350766e-02, +-6.773683154112736249e-02, +-6.781130155501499668e-02, +-6.788564274539270194e-02, +-6.795985502618949459e-02, +-6.803393831155590821e-02, +-6.810789251586561732e-02, +-6.818171755371504883e-02, +-6.825541333992285464e-02, +-6.832897978953049456e-02, +-6.840241681780311056e-02, +-6.847572434022741739e-02, +-6.854890227251420054e-02, +-6.862195053059697014e-02, +-6.869486903063178052e-02, +-6.876765768899908982e-02, +-6.884031642230184489e-02, +-6.891284514736631395e-02, +-6.898524378124241963e-02, +-6.905751224120426635e-02, +-6.912965044474790599e-02, +-6.920165830959500164e-02, +-6.927353575368942751e-02, +-6.934528269519957266e-02, +-6.941689905251784143e-02, +-6.948838474426016765e-02, +-6.955973968926663920e-02, +-6.963096380660156737e-02, +-6.970205701555352851e-02, +-6.977301923563523911e-02, +-6.984385038658327827e-02, +-6.991455038835941993e-02, +-6.998511916114932840e-02, +-7.005555662536332162e-02, +-7.012586270163646829e-02, +-7.019603731082829645e-02, +-7.026608037402297391e-02, +-7.033599181252990495e-02, +-7.040577154788313363e-02, +-7.047541950184123272e-02, +-7.054493559638835842e-02, +-7.061431975373333447e-02, +-7.068357189631067905e-02, +-7.075269194677909212e-02, +-7.082167982802375916e-02, +-7.089053546315417231e-02, +-7.095925877550575411e-02, +-7.102784968863920523e-02, +-7.109630812634107344e-02, +-7.116463401262279609e-02, +-7.123282727172230988e-02, +-7.130088782810249659e-02, +-7.136881560645245981e-02, +-7.143661053168699759e-02, +-7.150427252894685226e-02, +-7.157180152359862713e-02, +-7.163919744123531386e-02, +-7.170646020767550144e-02, +-7.177358974896380639e-02, +-7.184058599137194134e-02, +-7.190744886139699421e-02, +-7.197417828576246901e-02, +-7.204077419141853567e-02, +-7.210723650554230757e-02, +-7.217356515553587093e-02, +-7.223976006902951830e-02, +-7.230582117387907015e-02, +-7.237174839816754024e-02, +-7.243754167020451107e-02, +-7.250320091852635596e-02, +-7.256872607189621127e-02, +-7.263411705930404583e-02, +-7.269937380996724374e-02, +-7.276449625332966076e-02, +-7.282948431906233200e-02, +-7.289433793706386056e-02, +-7.295905703745929338e-02, +-7.302364155060131479e-02, +-7.308809140707014929e-02, +-7.315240653767257628e-02, +-7.321658687344337335e-02, +-7.328063234564484441e-02, +-7.334454288576636172e-02, +-7.340831842552493491e-02, +-7.347195889686512771e-02, +-7.353546423195971016e-02, +-7.359883436320824313e-02, +-7.366206922323864648e-02, +-7.372516874490654681e-02, +-7.378813286129495830e-02, +-7.385096150571567042e-02, +-7.391365461170756879e-02, +-7.397621211303818944e-02, +-7.403863394370206741e-02, +-7.410092003792327631e-02, +-7.416307033015290262e-02, +-7.422508475507026693e-02, +-7.428696324758410352e-02, +-7.434870574282959055e-02, +-7.441031217617170845e-02, +-7.447178248320336647e-02, +-7.453311659974544423e-02, +-7.459431446184752734e-02, +-7.465537600578814326e-02, +-7.471630116807387312e-02, +-7.477708988544011504e-02, +-7.483774209485044571e-02, +-7.489825773349759186e-02, +-7.495863673880291678e-02, +-7.501887904841683663e-02, +-7.507898460021752984e-02, +-7.513895333231337959e-02, +-7.519878518304043413e-02, +-7.525848009096461344e-02, +-7.531803799488009932e-02, +-7.537745883381062606e-02, +-7.543674254700866166e-02, +-7.549588907395560211e-02, +-7.555489835436259016e-02, +-7.561377032816940513e-02, +-7.567250493554471269e-02, +-7.573110211688757754e-02, +-7.578956181282495153e-02, +-7.584788396421447698e-02, +-7.590606851214179440e-02, +-7.596411539792276291e-02, +-7.602202456310276635e-02, +-7.607979594945639412e-02, +-7.613742949898737178e-02, +-7.619492515392953247e-02, +-7.625228285674594264e-02, +-7.630950255012923511e-02, +-7.636658417700224744e-02, +-7.642352768051668965e-02, +-7.648033300405442103e-02, +-7.653700009122707537e-02, +-7.659352888587635244e-02, +-7.664991933207231101e-02, +-7.670617137411687991e-02, +-7.676228495654051354e-02, +-7.681826002410370446e-02, +-7.687409652179734432e-02, +-7.692979439484191884e-02, +-7.698535358868789646e-02, +-7.704077404901611692e-02, +-7.709605572173730548e-02, +-7.715119855299241991e-02, +-7.720620248915147088e-02, +-7.726106747681638076e-02, +-7.731579346281756970e-02, +-7.737038039421692548e-02, +-7.742482821830556916e-02, +-7.747913688260564535e-02, +-7.753330633486940626e-02, +-7.758733652307903128e-02, +-7.764122739544719598e-02, +-7.769497890041712762e-02, +-7.774859098666246637e-02, +-7.780206360308694613e-02, +-7.785539669882435287e-02, +-7.790859022324041205e-02, +-7.796164412592965220e-02, +-7.801455835671819439e-02, +-7.806733286566215624e-02, +-7.811996760304872056e-02, +-7.817246251939463653e-02, +-7.822481756544863440e-02, +-7.827703269218860838e-02, +-7.832910785082451699e-02, +-7.838104299279587128e-02, +-7.843283806977344175e-02, +-7.848449303365798158e-02, +-7.853600783658244711e-02, +-7.858738243090900022e-02, +-7.863861676923128430e-02, +-7.868971080437391075e-02, +-7.874066448939119611e-02, +-7.879147777757007642e-02, +-7.884215062242631855e-02, +-7.889268297770815619e-02, +-7.894307479739412492e-02, +-7.899332603569331201e-02, +-7.904343664704628625e-02, +-7.909340658612386277e-02, +-7.914323580782836598e-02, +-7.919292426729299117e-02, +-7.924247191988167960e-02, +-7.929187872118968750e-02, +-7.934114462704262849e-02, +-7.939026959349809731e-02, +-7.943925357684381017e-02, +-7.948809653359879823e-02, +-7.953679842051369908e-02, +-7.958535919456925789e-02, +-7.963377881297827032e-02, +-7.968205723318338984e-02, +-7.973019441285991715e-02, +-7.977819030991328830e-02, +-7.982604488248006003e-02, +-7.987375808892792362e-02, +-7.992132988785656533e-02, +-7.996876023809580680e-02, +-8.001604909870693727e-02, +-8.006319642898236666e-02, +-8.011020218844602803e-02, +-8.015706633685294735e-02, +-8.020378883418896598e-02, +-8.025036964067180922e-02, +-8.029680871674929610e-02, +-8.034310602310197613e-02, +-8.038926152064025665e-02, +-8.043527517050665099e-02, +-8.048114693407469600e-02, +-8.052687677294873003e-02, +-8.057246464896521132e-02, +-8.061791052419098325e-02, +-8.066321436092505071e-02, +-8.070837612169624864e-02, +-8.075339576926673923e-02, +-8.079827326662832043e-02, +-8.084300857700452148e-02, +-8.088760166385032535e-02, +-8.093205249085179409e-02, +-8.097636102192652674e-02, +-8.102052722122321526e-02, +-8.106455105312214415e-02, +-8.110843248223419122e-02, +-8.115217147340246517e-02, +-8.119576799170047376e-02, +-8.123922200243378910e-02, +-8.128253347113889582e-02, +-8.132570236358349636e-02, +-8.136872864576635833e-02, +-8.141161228391854965e-02, +-8.145435324450148173e-02, +-8.149695149420815854e-02, +-8.153940699996280184e-02, +-8.158171972892096224e-02, +-8.162388964846961636e-02, +-8.166591672622676434e-02, +-8.170780093004183231e-02, +-8.174954222799524217e-02, +-8.179114058839939694e-02, +-8.183259597979740396e-02, +-8.187390837096328311e-02, +-8.191507773090346556e-02, +-8.195610402885417090e-02, +-8.199698723428433533e-02, +-8.203772731689266962e-02, +-8.207832424661050397e-02, +-8.211877799359912355e-02, +-8.215908852825189179e-02, +-8.219925582119322338e-02, +-8.223927984327855656e-02, +-8.227916056559422819e-02, +-8.231889795945876442e-02, +-8.235849199642064633e-02, +-8.239794264826033610e-02, +-8.243724988698918066e-02, +-8.247641368484964763e-02, +-8.251543401431518654e-02, +-8.255431084809072839e-02, +-8.259304415911257469e-02, +-8.263163392054689860e-02, +-8.267008010579193766e-02, +-8.270838268847731378e-02, +-8.274654164246258992e-02, +-8.278455694183937952e-02, +-8.282242856092951466e-02, +-8.286015647428694730e-02, +-8.289774065669545944e-02, +-8.293518108317046722e-02, +-8.297247772895835483e-02, +-8.300963056953605812e-02, +-8.304663958061200835e-02, +-8.308350473812524395e-02, +-8.312022601824560486e-02, +-8.315680339737424598e-02, +-8.319323685214273512e-02, +-8.322952635941427424e-02, +-8.326567189628157617e-02, +-8.330167344006979280e-02, +-8.333753096833355911e-02, +-8.337324445885907487e-02, +-8.340881388966284171e-02, +-8.344423923899253748e-02, +-8.347952048532647495e-02, +-8.351465760737337984e-02, +-8.354965058407297362e-02, +-8.358449939459547395e-02, +-8.361920401834206651e-02, +-8.365376443494411396e-02, +-8.368818062426432169e-02, +-8.372245256639472555e-02, +-8.375658024165925919e-02, +-8.379056363061146429e-02, +-8.382440271403621135e-02, +-8.385809747294842298e-02, +-8.389164788859318489e-02, +-8.392505394244641204e-02, +-8.395831561621464045e-02, +-8.399143289183436112e-02, +-8.402440575147318569e-02, +-8.405723417752769544e-02, +-8.408991815262592540e-02, +-8.412245765962625410e-02, +-8.415485268161709831e-02, +-8.418710320191657992e-02, +-8.421920920407373334e-02, +-8.425117067186768671e-02, +-8.428298758930732881e-02, +-8.431465994063234992e-02, +-8.434618771031174300e-02, +-8.437757088304484454e-02, +-8.440880944376209782e-02, +-8.443990337762233289e-02, +-8.447085267001527842e-02, +-8.450165730656063190e-02, +-8.453231727310765720e-02, +-8.456283255573564250e-02, +-8.459320314075416403e-02, +-8.462342901470201739e-02, +-8.465351016434791154e-02, +-8.468344657669070463e-02, +-8.471323823895900162e-02, +-8.474288513861034933e-02, +-8.477238726333309604e-02, +-8.480174460104460132e-02, +-8.483095713989176334e-02, +-8.486002486825067193e-02, +-8.488894777472826003e-02, +-8.491772584816000002e-02, +-8.494635907761052818e-02, +-8.497484745237506021e-02, +-8.500319096197717084e-02, +-8.503138959617012604e-02, +-8.505944334493659165e-02, +-8.508735219848864717e-02, +-8.511511614726756381e-02, +-8.514273518194326318e-02, +-8.517020929341583002e-02, +-8.519753847281374970e-02, +-8.522472271149483802e-02, +-8.525176200104594981e-02, +-8.527865633328292339e-02, +-8.530540570025099689e-02, +-8.533201009422332339e-02, +-8.535846950770303865e-02, +-8.538478393342184558e-02, +-8.541095336433970897e-02, +-8.543697779364628486e-02, +-8.546285721475889441e-02, +-8.548859162132484146e-02, +-8.551418100721894233e-02, +-8.553962536654494131e-02, +-8.556492469363567721e-02, +-8.559007898305193152e-02, +-8.561508822958285858e-02, +-8.563995242824676279e-02, +-8.566467157428987733e-02, +-8.568924566318630864e-02, +-8.571367469063961853e-02, +-8.573795865258075632e-02, +-8.576209754516873895e-02, +-8.578609136479134478e-02, +-8.580994010806435035e-02, +-8.583364377183151650e-02, +-8.585720235316474103e-02, +-8.588061584936305948e-02, +-8.590388425795492111e-02, +-8.592700757669559375e-02, +-8.594998580356853768e-02, +-8.597281893678455911e-02, +-8.599550697478311467e-02, +-8.601804991623031305e-02, +-8.604044776002062189e-02, +-8.606270050527585480e-02, +-8.608480815134506026e-02, +-8.610677069780540982e-02, +-8.612858814446149036e-02, +-8.615026049134429098e-02, +-8.617178773871318753e-02, +-8.619316988705406912e-02, +-8.621440693708108671e-02, +-8.623549888973433553e-02, +-8.625644574618145100e-02, +-8.627724750781809449e-02, +-8.629790417626544141e-02, +-8.631841575337270700e-02, +-8.633878224121582790e-02, +-8.635900364209654623e-02, +-8.637907995854492149e-02, +-8.639901119331699908e-02, +-8.641879734939536539e-02, +-8.643843842998995275e-02, +-8.645793443853627691e-02, +-8.647728537869697751e-02, +-8.649649125436112418e-02, +-8.651555206964432754e-02, +-8.653446782888819799e-02, +-8.655323853666031797e-02, +-8.657186419775568520e-02, +-8.659034481719450616e-02, +-8.660868040022302872e-02, +-8.662687095231388912e-02, +-8.664491647916587602e-02, +-8.666281698670365297e-02, +-8.668057248107717550e-02, +-8.669818296866274587e-02, +-8.671564845606283267e-02, +-8.673296895010457197e-02, +-8.675014445784115513e-02, +-8.676717498655174554e-02, +-8.678406054374042389e-02, +-8.680080113713724288e-02, +-8.681739677469736682e-02, +-8.683384746460066916e-02, +-8.685015321525343945e-02, +-8.686631403528666251e-02, +-8.688232993355600453e-02, +-8.689820091914290945e-02, +-8.691392700135311400e-02, +-8.692950818971796612e-02, +-8.694494449399312042e-02, +-8.696023592415912107e-02, +-8.697538249042172098e-02, +-8.699038420321072995e-02, +-8.700524107318106937e-02, +-8.701995311121164811e-02, +-8.703452032840620911e-02, +-8.704894273609298239e-02, +-8.706322034582410219e-02, +-8.707735316937627312e-02, +-8.709134121875057588e-02, +-8.710518450617159292e-02, +-8.711888304408876849e-02, +-8.713243684517470167e-02, +-8.714584592232603455e-02, +-8.715911028866438204e-02, +-8.717222995753329262e-02, +-8.718520494250169006e-02, +-8.719803525736137539e-02, +-8.721072091612709631e-02, +-8.722326193303839292e-02, +-8.723565832255718300e-02, +-8.724791009936889996e-02, +-8.726001727838318678e-02, +-8.727197987473139795e-02, +-8.728379790376919467e-02, +-8.729547138107458804e-02, +-8.730700032244918807e-02, +-8.731838474391635796e-02, +-8.732962466172378146e-02, +-8.734072009234071510e-02, +-8.735167105245932040e-02, +-8.736247755899509415e-02, +-8.737313962908521692e-02, +-8.738365728008996858e-02, +-8.739403052959093809e-02, +-8.740425939539328559e-02, +-8.741434389552331374e-02, +-8.742428404823043842e-02, +-8.743407987198531517e-02, +-8.744373138548093560e-02, +-8.745323860763212775e-02, +-8.746260155757551447e-02, +-8.747182025466952726e-02, +-8.748089471849423981e-02, +-8.748982496885122917e-02, +-8.749861102576404759e-02, +-8.750725290947648782e-02, +-8.751575064045516439e-02, +-8.752410423938626616e-02, +-8.753231372717935888e-02, +-8.754037912496291651e-02, +-8.754830045408770745e-02, +-8.755607773612501810e-02, +-8.756371099286740234e-02, +-8.757120024632723820e-02, +-8.757854551873835158e-02, +-8.758574683255511417e-02, +-8.759280421045215204e-02, +-8.759971767532467868e-02, +-8.760648725028793993e-02, +-8.761311295867824089e-02, +-8.761959482405091981e-02, +-8.762593287018261012e-02, +-8.763212712106875635e-02, +-8.763817760092584841e-02, +-8.764408433418904854e-02, +-8.764984734551381496e-02, +-8.765546665977594354e-02, +-8.766094230206948612e-02, +-8.766627429770929014e-02, +-8.767146267222829248e-02, +-8.767650745137957335e-02, +-8.768140866113538490e-02, +-8.768616632768649888e-02, +-8.769078047744377491e-02, +-8.769525113703575958e-02, +-8.769957833331080976e-02, +-8.770376209333544115e-02, +-8.770780244439556339e-02, +-8.771169941399480086e-02, +-8.771545302985547798e-02, +-8.771906331991921602e-02, +-8.772253031234493459e-02, +-8.772585403550943461e-02, +-8.772903451800917463e-02, +-8.773207178865707889e-02, +-8.773496587648529910e-02, +-8.773771681074230000e-02, +-8.774032462089569051e-02, +-8.774278933663029467e-02, +-8.774511098784837371e-02, +-8.774728960466933458e-02, +-8.774932521743072922e-02, +-8.775121785668682506e-02, +-8.775296755320892428e-02, +-8.775457433798601603e-02, +-8.775603824222341642e-02, +-8.775735929734390650e-02, +-8.775853753498652488e-02, +-8.775957298700756692e-02, +-8.776046568547966886e-02, +-8.776121566269153018e-02, +-8.776182295114902387e-02, +-8.776228758357361437e-02, +-8.776260959290356489e-02, +-8.776278901229271623e-02, +-8.776282587511140265e-02, +-8.776272021494532782e-02, +-8.776247206559664726e-02, +-8.776208146108256669e-02, +-8.776154843563609143e-02, +-8.776087302370652599e-02, +-8.776005525995693446e-02, +-8.775909517926722136e-02, +-8.775799281673157815e-02, +-8.775674820765994033e-02, +-8.775536138757680793e-02, +-8.775383239222112053e-02, +-8.775216125754770058e-02, +-8.775034801972549092e-02, +-8.774839271513779071e-02, +-8.774629538038246357e-02, +-8.774405605227227067e-02, +-8.774167476783346908e-02, +-8.773915156430690809e-02, +-8.773648647914773779e-02, +-8.773367955002432661e-02, +-8.773073081481948254e-02, +-8.772764031162948173e-02, +-8.772440807876467905e-02, +-8.772103415474827304e-02, +-8.771751857831749932e-02, +-8.771386138842235392e-02, +-8.771006262422631483e-02, +-8.770612232510591189e-02, +-8.770204053065067118e-02, +-8.769781728066337878e-02, +-8.769345261515885948e-02, +-8.768894657436500373e-02, +-8.768429919872254563e-02, +-8.767951052888391106e-02, +-8.767458060571407807e-02, +-8.766950947029135410e-02, +-8.766429716390430893e-02, +-8.765894372805473067e-02, +-8.765344920445636290e-02, +-8.764781363503371114e-02, +-8.764203706192426335e-02, +-8.763611952747607514e-02, +-8.763006107424901880e-02, +-8.762386174501449188e-02, +-8.761752158275430691e-02, +-8.761104063066221803e-02, +-8.760441893214294951e-02, +-8.759765653081155734e-02, +-8.759075347049387339e-02, +-8.758370979522715760e-02, +-8.757652554925846045e-02, +-8.756920077704538619e-02, +-8.756173552325594023e-02, +-8.755412983276829320e-02, +-8.754638375067040623e-02, +-8.753849732226125224e-02, +-8.753047059304805422e-02, +-8.752230360874889425e-02, +-8.751399641529096496e-02, +-8.750554905881120782e-02, +-8.749696158565574422e-02, +-8.748823404238005585e-02, +-8.747936647574859614e-02, +-8.747035893273516494e-02, +-8.746121146052168727e-02, +-8.745192410650023951e-02, +-8.744249691826989912e-02, +-8.743292994363977000e-02, +-8.742322323062651224e-02, +-8.741337682745480009e-02, +-8.740339078255834893e-02, +-8.739326514457845807e-02, +-8.738299996236448264e-02, +-8.737259528497345884e-02, +-8.736205116167022888e-02, +-8.735136764192678871e-02, +-8.734054477542330108e-02, +-8.732958261204716577e-02, +-8.731848120189175666e-02, +-8.730724059525936387e-02, +-8.729586084265808510e-02, +-8.728434199480275546e-02, +-8.727268410261551645e-02, +-8.726088721722485841e-02, +-8.724895138996560662e-02, +-8.723687667237879639e-02, +-8.722466311621236701e-02, +-8.721231077341901061e-02, +-8.719981969615896167e-02, +-8.718718993679730467e-02, +-8.717442154790437658e-02, +-8.716151458225768200e-02, +-8.714846909283893717e-02, +-8.713528513283504140e-02, +-8.712196275563893755e-02, +-8.710850201484786337e-02, +-8.709490296426455891e-02, +-8.708116565789641994e-02, +-8.706729014995541471e-02, +-8.705327649485747332e-02, +-8.703912474722447223e-02, +-8.702483496188102852e-02, +-8.701040719385695621e-02, +-8.699584149838554548e-02, +-8.698113793090399282e-02, +-8.696629654705353984e-02, +-8.695131740267872389e-02, +-8.693620055382812739e-02, +-8.692094605675303176e-02, +-8.690555396790866638e-02, +-8.689002434395261265e-02, +-8.687435724174619178e-02, +-8.685855271835322966e-02, +-8.684261083103994583e-02, +-8.682653163727571677e-02, +-8.681031519473145219e-02, +-8.679396156128167672e-02, +-8.677747079500276739e-02, +-8.676084295417178793e-02, +-8.674407809726938923e-02, +-8.672717628297714476e-02, +-8.671013757017860535e-02, +-8.669296201795845258e-02, +-8.667564968560327598e-02, +-8.665820063260028239e-02, +-8.664061491863808695e-02, +-8.662289260360658827e-02, +-8.660503374759581652e-02, +-8.658703841089718245e-02, +-8.656890665400174267e-02, +-8.655063853760240622e-02, +-8.653223412259095082e-02, +-8.651369347005941068e-02, +-8.649501664130090917e-02, +-8.647620369780771588e-02, +-8.645725470127156587e-02, +-8.643816971358411760e-02, +-8.641894879683661990e-02, +-8.639959201331910699e-02, +-8.638009942552117570e-02, +-8.636047109613130546e-02, +-8.634070708803719130e-02, +-8.632080746432457818e-02, +-8.630077228827835734e-02, +-8.628060162338159478e-02, +-8.626029553331615585e-02, +-8.623985408196140068e-02, +-8.621927733339468380e-02, +-8.619856535189256153e-02, +-8.617771820192746124e-02, +-8.615673594817084557e-02, +-8.613561865549088092e-02, +-8.611436638895288154e-02, +-8.609297921382073893e-02, +-8.607145719555335528e-02, +-8.604980039980782147e-02, +-8.602800889243768234e-02, +-8.600608273949326976e-02, +-8.598402200722099487e-02, +-8.596182676206322315e-02, +-8.593949707066000920e-02, +-8.591703299984530806e-02, +-8.589443461665047241e-02, +-8.587170198830199053e-02, +-8.584883518222199972e-02, +-8.582583426602821697e-02, +-8.580269930753359198e-02, +-8.577943037474566879e-02, +-8.575602753586800131e-02, +-8.573249085929765534e-02, +-8.570882041362752612e-02, +-8.568501626764486734e-02, +-8.566107849033050003e-02, +-8.563700715086028370e-02, +-8.561280231860424195e-02, +-8.558846406312549393e-02, +-8.556399245418173927e-02, +-8.553938756172402291e-02, +-8.551464945589683231e-02, +-8.548977820703815289e-02, +-8.546477388567931543e-02, +-8.543963656254348338e-02, +-8.541436630854858103e-02, +-8.538896319480394903e-02, +-8.536342729261170437e-02, +-8.533775867346699018e-02, +-8.531195740905618552e-02, +-8.528602357125882050e-02, +-8.525995723214577215e-02, +-8.523375846398005551e-02, +-8.520742733921578271e-02, +-8.518096393049963411e-02, +-8.515436831066837409e-02, +-8.512764055275116870e-02, +-8.510078072996678233e-02, +-8.507378891572646429e-02, +-8.504666518363090955e-02, +-8.501940960747252085e-02, +-8.499202226123263315e-02, +-8.496450321908458059e-02, +-8.493685255539062950e-02, +-8.490907034470304704e-02, +-8.488115666176443419e-02, +-8.485311158150643518e-02, +-8.482493517905115299e-02, +-8.479662752970862361e-02, +-8.476818870897878666e-02, +-8.473961879255124952e-02, +-8.471091785630302518e-02, +-8.468208597630108581e-02, +-8.465312322879992024e-02, +-8.462402969024325483e-02, +-8.459480543726266566e-02, +-8.456545054667741201e-02, +-8.453596509549504701e-02, +-8.450634916091127880e-02, +-8.447660282030851342e-02, +-8.444672615125704829e-02, +-8.441671923151422563e-02, +-8.438658213902475169e-02, +-8.435631495191982243e-02, +-8.432591774851812272e-02, +-8.429539060732424427e-02, +-8.426473360702932403e-02, +-8.423394682651090537e-02, +-8.420303034483289650e-02, +-8.417198424124500145e-02, +-8.414080859518226208e-02, +-8.410950348626608508e-02, +-8.407806899430259051e-02, +-8.404650519928370811e-02, +-8.401481218138651119e-02, +-8.398299002097291133e-02, +-8.395103879858913098e-02, +-8.391895859496734111e-02, +-8.388674949102258027e-02, +-8.385441156785568284e-02, +-8.382194490675015652e-02, +-8.378934958917515219e-02, +-8.375662569678180014e-02, +-8.372377331140638812e-02, +-8.369079251506793271e-02, +-8.365768338996877607e-02, +-8.362444601849498838e-02, +-8.359108048321482742e-02, +-8.355758686688008474e-02, +-8.352396525242446190e-02, +-8.349021572296468074e-02, +-8.345633836179969234e-02, +-8.342233325241003861e-02, +-8.338820047845922623e-02, +-8.335394012379201967e-02, +-8.331955227243423301e-02, +-8.328503700859465897e-02, +-8.325039441666123863e-02, +-8.321562458120541905e-02, +-8.318072758697780955e-02, +-8.314570351891044375e-02, +-8.311055246211601633e-02, +-8.307527450188739726e-02, +-8.303986972369832575e-02, +-8.300433821320189753e-02, +-8.296868005623156406e-02, +-8.293289533880016107e-02, +-8.289698414710058860e-02, +-8.286094656750518650e-02, +-8.282478268656462417e-02, +-8.278849259100996838e-02, +-8.275207636775003261e-02, +-8.271553410387288974e-02, +-8.267886588664516423e-02, +-8.264207180351161586e-02, +-8.260515194209575029e-02, +-8.256810639019801501e-02, +-8.253093523579801971e-02, +-8.249363856705178855e-02, +-8.245621647229396667e-02, +-8.241866904003579408e-02, +-8.238099635896577178e-02, +-8.234319851794935641e-02, +-8.230527560602930726e-02, +-8.226722771242445109e-02, +-8.222905492653008463e-02, +-8.219075733791793292e-02, +-8.215233503633559420e-02, +-8.211378811170716441e-02, +-8.207511665413182167e-02, +-8.203632075388461731e-02, +-8.199740050141575420e-02, +-8.195835598735071170e-02, +-8.191918730249039826e-02, +-8.187989453781013838e-02, +-8.184047778445967258e-02, +-8.180093713376378195e-02, +-8.176127267722169134e-02, +-8.172148450650577878e-02, +-8.168157271346343506e-02, +-8.164153739011519029e-02, +-8.160137862865517178e-02, +-8.156109652145167310e-02, +-8.152069116104528057e-02, +-8.148016264014988630e-02, +-8.143951105165235516e-02, +-8.139873648861238598e-02, +-8.135783904426197033e-02, +-8.131681881200547579e-02, +-8.127567588541920185e-02, +-8.123441035825179624e-02, +-8.119302232442358880e-02, +-8.115151187802625843e-02, +-8.110987911332294409e-02, +-8.106812412474828644e-02, +-8.102624700690774784e-02, +-8.098424785457780661e-02, +-8.094212676270536033e-02, +-8.089988382640776743e-02, +-8.085751914097323578e-02, +-8.081503280185926841e-02, +-8.077242490469420388e-02, +-8.072969554527589797e-02, +-8.068684481957076604e-02, +-8.064387282371601740e-02, +-8.060077965401733768e-02, +-8.055756540694977708e-02, +-8.051423017915648739e-02, +-8.047077406744992945e-02, +-8.042719716881130410e-02, +-8.038349958038909504e-02, +-8.033968139950058152e-02, +-8.029574272363075582e-02, +-8.025168365043257312e-02, +-8.020750427772600777e-02, +-8.016320470349824756e-02, +-8.011878502590481788e-02, +-8.007424534326675059e-02, +-8.002958575407252695e-02, +-7.998480635697764740e-02, +-7.993990725080277193e-02, +-7.989488853453605155e-02, +-7.984975030733097723e-02, +-7.980449266850687950e-02, +-7.975911571754866480e-02, +-7.971361955410727340e-02, +-7.966800427799808348e-02, +-7.962226998920228505e-02, +-7.957641678786556150e-02, +-7.953044477429808967e-02, +-7.948435404897462309e-02, +-7.943814471253482501e-02, +-7.939181686578121455e-02, +-7.934537060968203936e-02, +-7.929880604536752864e-02, +-7.925212327413230784e-02, +-7.920532239743406644e-02, +-7.915840351689418242e-02, +-7.911136673429652877e-02, +-7.906421215158718208e-02, +-7.901693987087607396e-02, +-7.896954999443477063e-02, +-7.892204262469659781e-02, +-7.887441786425801460e-02, +-7.882667581587625427e-02, +-7.877881658247090635e-02, +-7.873084026712220962e-02, +-7.868274697307194032e-02, +-7.863453680372371746e-02, +-7.858620986264035213e-02, +-7.853776625354683127e-02, +-7.848920608032756985e-02, +-7.844052944702799290e-02, +-7.839173645785248168e-02, +-7.834282721716655240e-02, +-7.829380182949458034e-02, +-7.824466039952052143e-02, +-7.819540303208764864e-02, +-7.814602983219849641e-02, +-7.809654090501387536e-02, +-7.804693635585426004e-02, +-7.799721629019756852e-02, +-7.794738081368063343e-02, +-7.789743003209800842e-02, +-7.784736405140244009e-02, +-7.779718297770440993e-02, +-7.774688691727105194e-02, +-7.769647597652809545e-02, +-7.764595026205729777e-02, +-7.759530988059754053e-02, +-7.754455493904496843e-02, +-7.749368554445153212e-02, +-7.744270180402589021e-02, +-7.739160382513236847e-02, +-7.734039171529175083e-02, +-7.728906558217987777e-02, +-7.723762553362860384e-02, +-7.718607167762488175e-02, +-7.713440412231062360e-02, +-7.708262297598297841e-02, +-7.703072834709334682e-02, +-7.697872034424774190e-02, +-7.692659907620692794e-02, +-7.687436465188524082e-02, +-7.682201718035101823e-02, +-7.676955677082622498e-02, +-7.671698353268645298e-02, +-7.666429757546010249e-02, +-7.661149900882942287e-02, +-7.655858794262919431e-02, +-7.650556448684694977e-02, +-7.645242875162215623e-02, +-7.639918084724710290e-02, +-7.634582088416567991e-02, +-7.629234897297458573e-02, +-7.623876522442080139e-02, +-7.618506974940422727e-02, +-7.613126265897442180e-02, +-7.607734406433333540e-02, +-7.602331407683302067e-02, +-7.596917280797615968e-02, +-7.591492036941642485e-02, +-7.586055687295707728e-02, +-7.580608243055178552e-02, +-7.575149715430383457e-02, +-7.569680115646587604e-02, +-7.564199454944066370e-02, +-7.558707744577944365e-02, +-7.553204995818267597e-02, +-7.547691219949997921e-02, +-7.542166428272857603e-02, +-7.536630632101536109e-02, +-7.531083842765401437e-02, +-7.525526071608738821e-02, +-7.519957329990534234e-02, +-7.514377629284524351e-02, +-7.508786980879218753e-02, +-7.503185396177822208e-02, +-7.497572886598212472e-02, +-7.491949463572941670e-02, +-7.486315138549272385e-02, +-7.480669922988987530e-02, +-7.475013828368538837e-02, +-7.469346866179026045e-02, +-7.463669047925949873e-02, +-7.457980385129542311e-02, +-7.452280889324416902e-02, +-7.446570572059743598e-02, +-7.440849444899205745e-02, +-7.435117519420872401e-02, +-7.429374807217375976e-02, +-7.423621319895579163e-02, +-7.417857069076923271e-02, +-7.412082066397139568e-02, +-7.406296323506310342e-02, +-7.400499852068874451e-02, +-7.394692663763588469e-02, +-7.388874770283511417e-02, +-7.383046183335888191e-02, +-7.377206914642324420e-02, +-7.371356975938625489e-02, +-7.365496378974742409e-02, +-7.359625135514898109e-02, +-7.353743257337370942e-02, +-7.347850756234737546e-02, +-7.341947644013545327e-02, +-7.336033932494498422e-02, +-7.330109633512452150e-02, +-7.324174758916172923e-02, +-7.318229320568624130e-02, +-7.312273330346645561e-02, +-7.306306800141161573e-02, +-7.300329741857031207e-02, +-7.294342167413062072e-02, +-7.288344088742032545e-02, +-7.282335517790566870e-02, +-7.276316466519230919e-02, +-7.270286946902389247e-02, +-7.264246970928335545e-02, +-7.258196550599127495e-02, +-7.252135697930620073e-02, +-7.246064424952487759e-02, +-7.239982743708153756e-02, +-7.233890666254738644e-02, +-7.227788204663106175e-02, +-7.221675371017821643e-02, +-7.215552177417070001e-02, +-7.209418635972776601e-02, +-7.203274758810393474e-02, +-7.197120558069058927e-02, +-7.190956045901435167e-02, +-7.184781234473819334e-02, +-7.178596135965939484e-02, +-7.172400762571155830e-02, +-7.166195126496263668e-02, +-7.159979239961532238e-02, +-7.153753115200693624e-02, +-7.147516764460964955e-02, +-7.141270200002870772e-02, +-7.135013434100398455e-02, +-7.128746479040873330e-02, +-7.122469347124987804e-02, +-7.116182050666741699e-02, +-7.109884601993395059e-02, +-7.103577013445556976e-02, +-7.097259297377077336e-02, +-7.090931466154984375e-02, +-7.084593532159590146e-02, +-7.078245507784340640e-02, +-7.071887405435901830e-02, +-7.065519237534029218e-02, +-7.059141016511645550e-02, +-7.052752754814782532e-02, +-7.046354464902503112e-02, +-7.039946159246959767e-02, +-7.033527850333354259e-02, +-7.027099550659887672e-02, +-7.020661272737711844e-02, +-7.014213029091058427e-02, +-7.007754832257001576e-02, +-7.001286694785564813e-02, +-6.994808629239684938e-02, +-6.988320648195177343e-02, +-6.981822764240737389e-02, +-6.975314989977864089e-02, +-6.968797338020897569e-02, +-6.962269820996914993e-02, +-6.955732451545862394e-02, +-6.949185242320343736e-02, +-6.942628205985702794e-02, +-6.936061355220027314e-02, +-6.929484702714046318e-02, +-6.922898261171142598e-02, +-6.916302043307376302e-02, +-6.909696061851393345e-02, +-6.903080329544428184e-02, +-6.896454859140262184e-02, +-6.889819663405279127e-02, +-6.883174755118344479e-02, +-6.876520147070805389e-02, +-6.869855852066554525e-02, +-6.863181882921881583e-02, +-6.856498252465551002e-02, +-6.849804973538663189e-02, +-6.843102058994804393e-02, +-6.836389521699859362e-02, +-6.829667374532091828e-02, +-6.822935630382073735e-02, +-6.816194302152635276e-02, +-6.809443402758952324e-02, +-6.802682945128431247e-02, +-6.795912942200654783e-02, +-6.789133406927468084e-02, +-6.782344352272921817e-02, +-6.775545791213158364e-02, +-6.768737736736489541e-02, +-6.761920201843368838e-02, +-6.755093199546303995e-02, +-6.748256742869930547e-02, +-6.741410844850839745e-02, +-6.734555518537731211e-02, +-6.727690776991290811e-02, +-6.720816633284151798e-02, +-6.713933100500911466e-02, +-6.707040191738154744e-02, +-6.700137920104330680e-02, +-6.693226298719739953e-02, +-6.686305340716622303e-02, +-6.679375059239033019e-02, +-6.672435467442831836e-02, +-6.665486578495703751e-02, +-6.658528405577078535e-02, +-6.651560961878130729e-02, +-6.644584260601830994e-02, +-6.637598314962769863e-02, +-6.630603138187264600e-02, +-6.623598743513287035e-02, +-6.616585144190421930e-02, +-6.609562353479918329e-02, +-6.602530384654566042e-02, +-6.595489250998722019e-02, +-6.588438965808350589e-02, +-6.581379542390852766e-02, +-6.574310994065162006e-02, +-6.567233334161702574e-02, +-6.560146576022343745e-02, +-6.553050733000377603e-02, +-6.545945818460480181e-02, +-6.538831845778768359e-02, +-6.531708828342620843e-02, +-6.524576779550886330e-02, +-6.517435712813603177e-02, +-6.510285641552136793e-02, +-6.503126579199165758e-02, +-6.495958539198565251e-02, +-6.488781535005420931e-02, +-6.481595580086052522e-02, +-6.474400687917922226e-02, +-6.467196871989690232e-02, +-6.459984145801071775e-02, +-6.452762522862917627e-02, +-6.445532016697197442e-02, +-6.438292640836895675e-02, +-6.431044408826017134e-02, +-6.423787334219588363e-02, +-6.416521430583654872e-02, +-6.409246711495228399e-02, +-6.401963190542177273e-02, +-6.394670881323399891e-02, +-6.387369797448612385e-02, +-6.380059952538374990e-02, +-6.372741360224215557e-02, +-6.365414034148363098e-02, +-6.358077987963890731e-02, +-6.350733235334672655e-02, +-6.343379789935313373e-02, +-6.336017665451121328e-02, +-6.328646875578131104e-02, +-6.321267434023110365e-02, +-6.313879354503389163e-02, +-6.306482650747012586e-02, +-6.299077336492556189e-02, +-6.291663425489292527e-02, +-6.284240931496956617e-02, +-6.276809868285877780e-02, +-6.269370249636929682e-02, +-6.261922089341376285e-02, +-6.254465401201057817e-02, +-6.247000199028210354e-02, +-6.239526496645467213e-02, +-6.232044307885964418e-02, +-6.224553646593092987e-02, +-6.217054526620649502e-02, +-6.209546961832759782e-02, +-6.202030966103851822e-02, +-6.194506553318648856e-02, +-6.186973737372102045e-02, +-6.179432532169384928e-02, +-6.171882951625916325e-02, +-6.164325009667293020e-02, +-6.156758720229281445e-02, +-6.149184097257733017e-02, +-6.141601154708691002e-02, +-6.134009906548254509e-02, +-6.126410366752543801e-02, +-6.118802549307814781e-02, +-6.111186468210242501e-02, +-6.103562137466085613e-02, +-6.095929571091499716e-02, +-6.088288783112656699e-02, +-6.080639787565627480e-02, +-6.072982598496317469e-02, +-6.065317229960620615e-02, +-6.057643696024202218e-02, +-6.049962010762591907e-02, +-6.042272188261095522e-02, +-6.034574242614833967e-02, +-6.026868187928673820e-02, +-6.019154038317150318e-02, +-6.011431807904643598e-02, +-6.003701510825074777e-02, +-5.995963161222114118e-02, +-5.988216773249058905e-02, +-5.980462361068782789e-02, +-5.972699938853764240e-02, +-5.964929520786047684e-02, +-5.957151121057233101e-02, +-5.949364753868417038e-02, +-5.941570433430187759e-02, +-5.933768173962641890e-02, +-5.925957989695260913e-02, +-5.918139894866993739e-02, +-5.910313903726116536e-02, +-5.902480030530346533e-02, +-5.894638289546783733e-02, +-5.886788695051731884e-02, +-5.878931261330879593e-02, +-5.871066002679151824e-02, +-5.863192933400779988e-02, +-5.855312067809149285e-02, +-5.847423420226940255e-02, +-5.839527004985869268e-02, +-5.831622836426964690e-02, +-5.823710928900296263e-02, +-5.815791296765037560e-02, +-5.807863954389475697e-02, +-5.799928916150997454e-02, +-5.791986196435883888e-02, +-5.784035809639564291e-02, +-5.776077770166402475e-02, +-5.768112092429696774e-02, +-5.760138790851726531e-02, +-5.752157879863664669e-02, +-5.744169373905572140e-02, +-5.736173287426370865e-02, +-5.728169634883810424e-02, +-5.720158430744485406e-02, +-5.712139689483760469e-02, +-5.704113425585788377e-02, +-5.696079653543428128e-02, +-5.688038387858258133e-02, +-5.679989643040617153e-02, +-5.671933433609428754e-02, +-5.663869774092310933e-02, +-5.655798679025471343e-02, +-5.647720162953770440e-02, +-5.639634240430559109e-02, +-5.631540926017783444e-02, +-5.623440234285946582e-02, +-5.615332179813940089e-02, +-5.607216777189246576e-02, +-5.599094041007719735e-02, +-5.590963985873699527e-02, +-5.582826626399885889e-02, +-5.574681977207344291e-02, +-5.566530052925554306e-02, +-5.558370868192256953e-02, +-5.550204437653487310e-02, +-5.542030775963653622e-02, +-5.533849897785315941e-02, +-5.525661817789319363e-02, +-5.517466550654660795e-02, +-5.509264111068616632e-02, +-5.501054513726514467e-02, +-5.492837773331875340e-02, +-5.484613904596282591e-02, +-5.476382922239445700e-02, +-5.468144840989123262e-02, +-5.459899675581051520e-02, +-5.451647440759065100e-02, +-5.443388151274915904e-02, +-5.435121821888327931e-02, +-5.426848467367013928e-02, +-5.418568102486484572e-02, +-5.410280742030249002e-02, +-5.401986400789616366e-02, +-5.393685093563736765e-02, +-5.385376835159581821e-02, +-5.377061640391923164e-02, +-5.368739524083272069e-02, +-5.360410501063875982e-02, +-5.352074586171721993e-02, +-5.343731794252477157e-02, +-5.335382140159453807e-02, +-5.327025638753597053e-02, +-5.318662304903487570e-02, +-5.310292153485301342e-02, +-5.301915199382779831e-02, +-5.293531457487156422e-02, +-5.285140942697272998e-02, +-5.276743669919331525e-02, +-5.268339654067149408e-02, +-5.259928910061863194e-02, +-5.251511452832100663e-02, +-5.243087297313824002e-02, +-5.234656458450418631e-02, +-5.226218951192573153e-02, +-5.217774790498309195e-02, +-5.209323991332924508e-02, +-5.200866568669033907e-02, +-5.192402537486435349e-02, +-5.183931912772186956e-02, +-5.175454709520514035e-02, +-5.166970942732788952e-02, +-5.158480627417626890e-02, +-5.149983778590618705e-02, +-5.141480411274599455e-02, +-5.132970540499341705e-02, +-5.124454181301748429e-02, +-5.115931348725724637e-02, +-5.107402057822132274e-02, +-5.098866323648854060e-02, +-5.090324161270686626e-02, +-5.081775585759358560e-02, +-5.073220612193492934e-02, +-5.064659255658570530e-02, +-5.056091531246965226e-02, +-5.047517454057789260e-02, +-5.038937039197041723e-02, +-5.030350301777422595e-02, +-5.021757256918409074e-02, +-5.013157919746204227e-02, +-5.004552305393672462e-02, +-4.995940429000413074e-02, +-4.987322305712624942e-02, +-4.978697950683116241e-02, +-4.970067379071326646e-02, +-4.961430606043273212e-02, +-4.952787646771501795e-02, +-4.944138516435041264e-02, +-4.935483230219503414e-02, +-4.926821803316886600e-02, +-4.918154250925688142e-02, +-4.909480588250837718e-02, +-4.900800830503605765e-02, +-4.892114992901687442e-02, +-4.883423090669098549e-02, +-4.874725139036190785e-02, +-4.866021153239579594e-02, +-4.857311148522217015e-02, +-4.848595140133237641e-02, +-4.839873143328034949e-02, +-4.831145173368212725e-02, +-4.822411245521465023e-02, +-4.813671375061741309e-02, +-4.804925577269056336e-02, +-4.796173867429518595e-02, +-4.787416260835319903e-02, +-4.778652772784681285e-02, +-4.769883418581897377e-02, +-4.761108213537205286e-02, +-4.752327172966853280e-02, +-4.743540312192980751e-02, +-4.734747646543722294e-02, +-4.725949191353050888e-02, +-4.717144961960850758e-02, +-4.708334973712787613e-02, +-4.699519241960457838e-02, +-4.690697782061144933e-02, +-4.681870609377979109e-02, +-4.673037739279783942e-02, +-4.664199187141139513e-02, +-4.655354968342316491e-02, +-4.646505098269233802e-02, +-4.637649592313498881e-02, +-4.628788465872295949e-02, +-4.619921734348413078e-02, +-4.611049413150244275e-02, +-4.602171517691693026e-02, +-4.593288063392185483e-02, +-4.584399065676648954e-02, +-4.575504539975500801e-02, +-4.566604501724559617e-02, +-4.557698966365116705e-02, +-4.548787949343818804e-02, +-4.539871466112681969e-02, +-4.530949532129087409e-02, +-4.522022162855741934e-02, +-4.513089373760603706e-02, +-4.504151180316939840e-02, +-4.495207598003236188e-02, +-4.486258642303250777e-02, +-4.477304328705851433e-02, +-4.468344672705103215e-02, +-4.459379689800296170e-02, +-4.450409395495685816e-02, +-4.441433805300774168e-02, +-4.432452934730004429e-02, +-4.423466799302948338e-02, +-4.414475414544174331e-02, +-4.405478795983209378e-02, +-4.396476959154595882e-02, +-4.387469919597770940e-02, +-4.378457692857103817e-02, +-4.369440294481877901e-02, +-4.360417740026225480e-02, +-4.351390045049120109e-02, +-4.342357225114339830e-02, +-4.333319295790485914e-02, +-4.324276272650869057e-02, +-4.315228171273611385e-02, +-4.306175007241495184e-02, +-4.297116796141990658e-02, +-4.288053553567298254e-02, +-4.278985295114164089e-02, +-4.269912036383981951e-02, +-4.260833792982829382e-02, +-4.251750580521171385e-02, +-4.242662414614190719e-02, +-4.233569310881418052e-02, +-4.224471284946973437e-02, +-4.215368352439445576e-02, +-4.206260528991806469e-02, +-4.197147830241473865e-02, +-4.188030271830235629e-02, +-4.178907869404258763e-02, +-4.169780638614025564e-02, +-4.160648595114349590e-02, +-4.151511754564327084e-02, +-4.142370132627280072e-02, +-4.133223744970833391e-02, +-4.124072607266761337e-02, +-4.114916735191024438e-02, +-4.105756144423820808e-02, +-4.096590850649376586e-02, +-4.087420869556093045e-02, +-4.078246216836443200e-02, +-4.069066908186924625e-02, +-4.059882959308139944e-02, +-4.050694385904612949e-02, +-4.041501203684920440e-02, +-4.032303428361557612e-02, +-4.023101075650978992e-02, +-4.013894161273516559e-02, +-4.004682700953384605e-02, +-3.995466710418733164e-02, +-3.986246205401398901e-02, +-3.977021201637130632e-02, +-3.967791714865443603e-02, +-3.958557760829566757e-02, +-3.949319355276540572e-02, +-3.940076513956993626e-02, +-3.930829252625334808e-02, +-3.921577587039577067e-02, +-3.912321532961384601e-02, +-3.903061106156006238e-02, +-3.893796322392277520e-02, +-3.884527197442598501e-02, +-3.875253747082864353e-02, +-3.865975987092516025e-02, +-3.856693933254441709e-02, +-3.847407601354974754e-02, +-3.838117007183929758e-02, +-3.828822166534468635e-02, +-3.819523095203120749e-02, +-3.810219808989788459e-02, +-3.800912323697728384e-02, +-3.791600655133456343e-02, +-3.782284819106773721e-02, +-3.772964831430752897e-02, +-3.763640707921651202e-02, +-3.754312464398953941e-02, +-3.744980116685307781e-02, +-3.735643680606499928e-02, +-3.726303171991495605e-02, +-3.716958606672259025e-02, +-3.707610000483938656e-02, +-3.698257369264634775e-02, +-3.688900728855513261e-02, +-3.679540095100770902e-02, +-3.670175483847498699e-02, +-3.660806910945803988e-02, +-3.651434392248668198e-02, +-3.642057943611964194e-02, +-3.632677580894508318e-02, +-3.623293319957866798e-02, +-3.613905176666499380e-02, +-3.604513166887591408e-02, +-3.595117306491188436e-02, +-3.585717611349974882e-02, +-3.576314097339460679e-02, +-3.566906780337755073e-02, +-3.557495676225693598e-02, +-3.548080800886720121e-02, +-3.538662170206938878e-02, +-3.529239800074998601e-02, +-3.519813706382162594e-02, +-3.510383905022172041e-02, +-3.500950411891371600e-02, +-3.491513242888517193e-02, +-3.482072413914857195e-02, +-3.472627940874127572e-02, +-3.463179839672375637e-02, +-3.453728126218162664e-02, +-3.444272816422305761e-02, +-3.434813926198061751e-02, +-3.425351471460896802e-02, +-3.415885468128634916e-02, +-3.406415932121398954e-02, +-3.396942879361425360e-02, +-3.387466325773273723e-02, +-3.377986287283673422e-02, +-3.368502779821462567e-02, +-3.359015819317703877e-02, +-3.349525421705461248e-02, +-3.340031602920000287e-02, +-3.330534378898578757e-02, +-3.321033765580513886e-02, +-3.311529778907115751e-02, +-3.302022434821703933e-02, +-3.292511749269540905e-02, +-3.282997738197829252e-02, +-3.273480417555701266e-02, +-3.263959803294167600e-02, +-3.254435911366058976e-02, +-3.244908757726108761e-02, +-3.235378358330805171e-02, +-3.225844729138421102e-02, +-3.216307886109031483e-02, +-3.206767845204403639e-02, +-3.197224622388061821e-02, +-3.187678233625138025e-02, +-3.178128694882509375e-02, +-3.168576022128604536e-02, +-3.159020231333524442e-02, +-3.149461338468930588e-02, +-3.139899359508019350e-02, +-3.130334310425569172e-02, +-3.120766207197785830e-02, +-3.111195065802440859e-02, +-3.101620902218740067e-02, +-3.092043732427265934e-02, +-3.082463572410103561e-02, +-3.072880438150619661e-02, +-3.063294345633608279e-02, +-3.053705310845156867e-02, +-3.044113349772669189e-02, +-3.034518478404853517e-02, +-3.024920712731606759e-02, +-3.015320068744144211e-02, +-3.005716562434817413e-02, +-2.996110209797171742e-02, +-2.986501026825963759e-02, +-2.976889029516987042e-02, +-2.967274233867206804e-02, +-2.957656655874613821e-02, +-2.948036311538325752e-02, +-2.938413216858433083e-02, +-2.928787387836039383e-02, +-2.919158840473247765e-02, +-2.909527590773082831e-02, +-2.899893654739523971e-02, +-2.890257048377447777e-02, +-2.880617787692583281e-02, +-2.870975888691560882e-02, +-2.861331367381786048e-02, +-2.851684239771530224e-02, +-2.842034521869768807e-02, +-2.832382229686280020e-02, +-2.822727379231569286e-02, +-2.813069986516805038e-02, +-2.803410067553907883e-02, +-2.793747638355339319e-02, +-2.784082714934266178e-02, +-2.774415313304475980e-02, +-2.764745449480259312e-02, +-2.755073139476527794e-02, +-2.745398399308661766e-02, +-2.735721244992598070e-02, +-2.726041692544704451e-02, +-2.716359757981829867e-02, +-2.706675457321234754e-02, +-2.696988806580568124e-02, +-2.687299821777912323e-02, +-2.677608518931618234e-02, +-2.667914914060434337e-02, +-2.658219023183377647e-02, +-2.648520862319738572e-02, +-2.638820447489077445e-02, +-2.629117794711171088e-02, +-2.619412920005965290e-02, +-2.609705839393651472e-02, +-2.599996568894504673e-02, +-2.590285124528991095e-02, +-2.580571522317600536e-02, +-2.570855778280963996e-02, +-2.561137908439733643e-02, +-2.551417928814601194e-02, +-2.541695855426277795e-02, +-2.531971704295364958e-02, +-2.522245491442534973e-02, +-2.512517232888285268e-02, +-2.502786944653078577e-02, +-2.493054642757247530e-02, +-2.483320343220937754e-02, +-2.473584062064163730e-02, +-2.463845815306716508e-02, +-2.454105618968169950e-02, +-2.444363489067850545e-02, +-2.434619441624812086e-02, +-2.424873492657829074e-02, +-2.415125658185297494e-02, +-2.405375954225340979e-02, +-2.395624396795642194e-02, +-2.385871001913523679e-02, +-2.376115785595909677e-02, +-2.366358763859194997e-02, +-2.356599952719368521e-02, +-2.346839368191936878e-02, +-2.337077026291809259e-02, +-2.327312943033419887e-02, +-2.317547134430584035e-02, +-2.307779616496567418e-02, +-2.298010405243958859e-02, +-2.288239516684749744e-02, +-2.278466966830231324e-02, +-2.268692771690987431e-02, +-2.258916947276935414e-02, +-2.249139509597177997e-02, +-2.239360474660108749e-02, +-2.229579858473291695e-02, +-2.219797677043473111e-02, +-2.210013946376563829e-02, +-2.200228682477610095e-02, +-2.190441901350719325e-02, +-2.180653618999164878e-02, +-2.170863851425183441e-02, +-2.161072614630121097e-02, +-2.151279924614254296e-02, +-2.141485797376923433e-02, +-2.131690248916365618e-02, +-2.121893295229761514e-02, +-2.112094952313251645e-02, +-2.102295236161750083e-02, +-2.092494162769137703e-02, +-2.082691748128066497e-02, +-2.072888008230028625e-02, +-2.063082959065294306e-02, +-2.053276616622861164e-02, +-2.043468996890522582e-02, +-2.033660115854710182e-02, +-2.023849989500606933e-02, +-2.014038633812019127e-02, +-2.004226064771378463e-02, +-1.994412298359772573e-02, +-1.984597350556828801e-02, +-1.974781237340780468e-02, +-1.964963974688354806e-02, +-1.955145578574819451e-02, +-1.945326064973931096e-02, +-1.935505449857908775e-02, +-1.925683749197384248e-02, +-1.915860978961423516e-02, +-1.906037155117492124e-02, +-1.896212293631423587e-02, +-1.886386410467360761e-02, +-1.876559521587794696e-02, +-1.866731642953482415e-02, +-1.856902790523483338e-02, +-1.847072980255067345e-02, +-1.837242228103706104e-02, +-1.827410550023132740e-02, +-1.817577961965165939e-02, +-1.807744479879850458e-02, +-1.797910119715277755e-02, +-1.788074897417687298e-02, +-1.778238828931370460e-02, +-1.768401930198643460e-02, +-1.758564217159913623e-02, +-1.748725705753469140e-02, +-1.738886411915679595e-02, +-1.729046351580831170e-02, +-1.719205540681094380e-02, +-1.709363995146613927e-02, +-1.699521730905323436e-02, +-1.689678763883079374e-02, +-1.679835110003518803e-02, +-1.669990785188122523e-02, +-1.660145805356108908e-02, +-1.650300186424452989e-02, +-1.640453944307898940e-02, +-1.630607094918840733e-02, +-1.620759654167392913e-02, +-1.610911637961325374e-02, +-1.601063062205995008e-02, +-1.591213942804434872e-02, +-1.581364295657205696e-02, +-1.571514136662427799e-02, +-1.561663481715797226e-02, +-1.551812346710471947e-02, +-1.541960747537144370e-02, +-1.532108700083916093e-02, +-1.522256220236379264e-02, +-1.512403323877482483e-02, +-1.502550026887606964e-02, +-1.492696345144503729e-02, +-1.482842294523198552e-02, +-1.472987890896108529e-02, +-1.463133150132888381e-02, +-1.453278088100490133e-02, +-1.443422720663127372e-02, +-1.433567063682167006e-02, +-1.423711133016247916e-02, +-1.413854944521100547e-02, +-1.403998514049682560e-02, +-1.394141857452013862e-02, +-1.384284990575220496e-02, +-1.374427929263544526e-02, +-1.364570689358212373e-02, +-1.354713286697546183e-02, +-1.344855737116806317e-02, +-1.334998056448271318e-02, +-1.325140260521171821e-02, +-1.315282365161645622e-02, +-1.305424386192728138e-02, +-1.295566339434386580e-02, +-1.285708240703384471e-02, +-1.275850105813370293e-02, +-1.265991950574757614e-02, +-1.256133790794779909e-02, +-1.246275642277395145e-02, +-1.236417520823349797e-02, +-1.226559442230052040e-02, +-1.216701422291611122e-02, +-1.206843476798831472e-02, +-1.196985621539113295e-02, +-1.187127872296508957e-02, +-1.177270244851662435e-02, +-1.167412754981747222e-02, +-1.157555418460541954e-02, +-1.147698251058285393e-02, +-1.137841268541767495e-02, +-1.127984486674212666e-02, +-1.118127921215297804e-02, +-1.108271587921163918e-02, +-1.098415502544290885e-02, +-1.088559680833605173e-02, +-1.078704138534325972e-02, +-1.068848891388054015e-02, +-1.058993955132643723e-02, +-1.049139345502290641e-02, +-1.039285078227401328e-02, +-1.029431169034624588e-02, +-1.019577633646838802e-02, +-1.009724487783113939e-02, +-9.998717471586456365e-03, +-9.900194274848174783e-03, +-9.801675444690809494e-03, +-9.703161138150234385e-03, +-9.604651512222738691e-03, +-9.506146723864954129e-03, +-9.407646929994207055e-03, +-9.309152287487135885e-03, +-9.210662953180811727e-03, +-9.112179083871135496e-03, +-9.013700836313774667e-03, +-8.915228367223335809e-03, +-8.816761833272837232e-03, +-8.718301391094550323e-03, +-8.619847197278094827e-03, +-8.521399408372017439e-03, +-8.422958180882487295e-03, +-8.324523671273001066e-03, +-8.226096035964863482e-03, +-8.127675431336038939e-03, +-8.029262013721871413e-03, +-7.930855939413882297e-03, +-7.832457364660587451e-03, +-7.734066445666221319e-03, +-7.635683338591013614e-03, +-7.537308199551327227e-03, +-7.438941184618463875e-03, +-7.340582449819403957e-03, +-7.242232151136130877e-03, +-7.143890444505019560e-03, +-7.045557485817531204e-03, +-6.947233430919066630e-03, +-6.848918435609033933e-03, +-6.750612655641196301e-03, +-6.652316246722292901e-03, +-6.554029364513060639e-03, +-6.455752164626803874e-03, +-6.357484802630326837e-03, +-6.259227434042489470e-03, +-6.160980214335213569e-03, +-6.062743298932195615e-03, +-5.964516843209129691e-03, +-5.866301002493850593e-03, +-5.768095932065164626e-03, +-5.669901787153579925e-03, +-5.571718722940633382e-03, +-5.473546894558285227e-03, +-5.375386457089601638e-03, +-5.277237565567625445e-03, +-5.179100374975520102e-03, +-5.080975040246675511e-03, +-4.982861716263711424e-03, +-4.884760557859074183e-03, +-4.786671719813985482e-03, +-4.688595356859079875e-03, +-4.590531623673228638e-03, +-4.492480674884187682e-03, +-4.394442665068121374e-03, +-4.296417748748389102e-03, +-4.198406080397143816e-03, +-4.100407814433410826e-03, +-4.002423105223967305e-03, +-3.904452107082685697e-03, +-3.806494974269943911e-03, +-3.708551860993306200e-03, +-3.610622921406166606e-03, +-3.512708309608717373e-03, +-3.414808179646676087e-03, +-3.316922685511484309e-03, +-3.219051981140494054e-03, +-3.121196220415794250e-03, +-3.023355557165043842e-03, +-2.925530145160187227e-03, +-2.827720138118152045e-03, +-2.729925689700207769e-03, +-2.632146953511496461e-03, +-2.534384083101046646e-03, +-2.436637231961954163e-03, +-2.338906553530221630e-03, +-2.241192201185595884e-03, +-2.143494328250273879e-03, +-2.045813087989732312e-03, +-1.948148633611450874e-03, +-1.850501118265732549e-03, +-1.752870695044552634e-03, +-1.655257516981720493e-03, +-1.557661737053077540e-03, +-1.460083508175298974e-03, +-1.362522983206771766e-03, +-1.264980314946268468e-03, +-1.167455656133665380e-03, +-1.069949159449340827e-03, +-9.724609775134917785e-04, +-8.749912628869035286e-04, +-7.775401680697426520e-04, +-6.801078455017551963e-04, +-5.826944475624341912e-04, +-4.853001265698564620e-04, +-3.879250347815312895e-04, +-2.905693243930974152e-04, +-1.932331475391789921e-04, +-9.591665629207390324e-05, + 1.379997337382631567e-06, + 9.865666140099728300e-05, + 1.959131840130337663e-04, + 2.931494133501669555e-04, + 3.903651976519814182e-04, + 4.875603852215975144e-04, + 5.847348244249524077e-04, + 6.818883636921053634e-04, + 7.790208515163799278e-04, + 8.761321364556734275e-04, + 9.732220671315909089e-04, + 1.070290492230756589e-03, + 1.167337260504095788e-03, + 1.264362220767449672e-03, + 1.361365221901942148e-03, + 1.458346112854487812e-03, + 1.555304742636775617e-03, + 1.652240960326975842e-03, + 1.749154615068775585e-03, + 1.846045556072666146e-03, + 1.942913632615203817e-03, + 2.039758694039654763e-03, + 2.136580589756640995e-03, + 2.233379169243373836e-03, + 2.330154282044987271e-03, + 2.426905777773677528e-03, + 2.523633506109975062e-03, + 2.620337316802068880e-03, + 2.717017059666399382e-03, + 2.813672584588304548e-03, + 2.910303741521263164e-03, + 3.006910380487950833e-03, + 3.103492351580609040e-03, + 3.200049504960038142e-03, + 3.296581690857263141e-03, + 3.393088759572621647e-03, + 3.489570561476972119e-03, + 3.586026947011044640e-03, + 3.682457766686039833e-03, + 3.778862871084209991e-03, + 3.875242110858212897e-03, + 3.971595336732353446e-03, + 4.067922399501745778e-03, + 4.164223150033602612e-03, + 4.260497439266513163e-03, + 4.356745118211062875e-03, + 4.452966037950474402e-03, + 4.549160049639880757e-03, + 4.645327004507565638e-03, + 4.741466753854053570e-03, + 4.837579149053757022e-03, + 4.933664041553996286e-03, + 5.029721282875329949e-03, + 5.125750724612640821e-03, + 5.221752218434350112e-03, + 5.317725616083060144e-03, + 5.413670769376172781e-03, + 5.509587530205155639e-03, + 5.605475750536872623e-03, + 5.701335282412688804e-03, + 5.797165977949765396e-03, + 5.892967689340321627e-03, + 5.988740268852319956e-03, + 6.084483568830010777e-03, + 6.180197441693222049e-03, + 6.275881739938703706e-03, + 6.371536316139210857e-03, + 6.467161022944512526e-03, + 6.562755713081824469e-03, + 6.658320239354870683e-03, + 6.753854454644912103e-03, + 6.849358211911286097e-03, + 6.944831364190600688e-03, + 7.040273764598120598e-03, + 7.135685266326821825e-03, + 7.231065722648681408e-03, + 7.326414986913907211e-03, + 7.421732912552131411e-03, + 7.517019353071670643e-03, + 7.612274162060297944e-03, + 7.707497193185708535e-03, + 7.802688300194749599e-03, + 7.897847336914915611e-03, + 7.992974157253279754e-03, + 8.088068615197957154e-03, + 8.183130564816877561e-03, + 8.278159860259877434e-03, + 8.373156355756829899e-03, + 8.468119905619592852e-03, + 8.563050364240910872e-03, + 8.657947586095794332e-03, + 8.752811425740577439e-03, + 8.847641737814245302e-03, + 8.942438377037618610e-03, + 9.037201198214496814e-03, + 9.131930056231106485e-03, + 9.226624806056562753e-03, + 9.321285302743551049e-03, + 9.415911401427647098e-03, + 9.510502957328480916e-03, + 9.605059825748968327e-03, + 9.699581862076587721e-03, + 9.794068921782571671e-03, + 9.888520860422488068e-03, + 9.982937533637211563e-03, + 1.007731879715196253e-02, + 1.017166450677689342e-02, + 1.026597451840786761e-02, + 1.036024868802561637e-02, + 1.045448687169721683e-02, + 1.054868892557512920e-02, + 1.064285470589794100e-02, + 1.073698406899092905e-02, + 1.083107687126539688e-02, + 1.092513296921980744e-02, + 1.101915221943905974e-02, + 1.111313447859571708e-02, + 1.120707960344914135e-02, + 1.130098745084680452e-02, + 1.139485787772342475e-02, + 1.148869074110179037e-02, + 1.158248589809303050e-02, + 1.167624320589678161e-02, + 1.176996252180077286e-02, + 1.186364370318199711e-02, + 1.195728660750594412e-02, + 1.205089109232783569e-02, + 1.214445701529191964e-02, + 1.223798423413196071e-02, + 1.233147260667199693e-02, + 1.242492199082559194e-02, + 1.251833224459692785e-02, + 1.261170322608018944e-02, + 1.270503479346067610e-02, + 1.279832680501400734e-02, + 1.289157911910738565e-02, + 1.298479159419874823e-02, + 1.307796408883758928e-02, + 1.317109646166539014e-02, + 1.326418857141486128e-02, + 1.335724027691150874e-02, + 1.345025143707273031e-02, + 1.354322191090808619e-02, + 1.363615155752032071e-02, + 1.372904023610473263e-02, + 1.382188780594954466e-02, + 1.391469412643674478e-02, + 1.400745905704123967e-02, + 1.410018245733211766e-02, + 1.419286418697181078e-02, + 1.428550410571730912e-02, + 1.437810207341962652e-02, + 1.447065795002404169e-02, + 1.456317159557105924e-02, + 1.465564287019549029e-02, + 1.474807163412767373e-02, + 1.484045774769287944e-02, + 1.493280107131183393e-02, + 1.502510146550164669e-02, + 1.511735879087431657e-02, + 1.520957290813856368e-02, + 1.530174367809905220e-02, + 1.539387096165699409e-02, + 1.548595461981048388e-02, + 1.557799451365411703e-02, + 1.566999050438000821e-02, + 1.576194245327696905e-02, + 1.585385022173191327e-02, + 1.594571367122891298e-02, + 1.603753266335005909e-02, + 1.612930705977561399e-02, + 1.622103672228392135e-02, + 1.631272151275193344e-02, + 1.640436129315510014e-02, + 1.649595592556792056e-02, + 1.658750527216349205e-02, + 1.667900919521477995e-02, + 1.677046755709386827e-02, + 1.686188022027246616e-02, + 1.695324704732185939e-02, + 1.704456790091387827e-02, + 1.713584264382008587e-02, + 1.722707113891286043e-02, + 1.731825324916482986e-02, + 1.740938883764977033e-02, + 1.750047776754220727e-02, + 1.759151990211774153e-02, + 1.768251510475379179e-02, + 1.777346323892899788e-02, + 1.786436416822392154e-02, + 1.795521775632093545e-02, + 1.804602386700487546e-02, + 1.813678236416262426e-02, + 1.822749311178361101e-02, + 1.831815597396030046e-02, + 1.840877081488804384e-02, + 1.849933749886488454e-02, + 1.858985589029278629e-02, + 1.868032585367654722e-02, + 1.877074725362541316e-02, + 1.886111995485191539e-02, + 1.895144382217301207e-02, + 1.904171872050983844e-02, + 1.913194451488785600e-02, + 1.922212107043745274e-02, + 1.931224825239358581e-02, + 1.940232592609658982e-02, + 1.949235395699158019e-02, + 1.958233221062966392e-02, + 1.967226055266696819e-02, + 1.976213884886578870e-02, + 1.985196696509400685e-02, + 1.994174476732666831e-02, + 2.003147212164389096e-02, + 2.012114889423335939e-02, + 2.021077495138878799e-02, + 2.030035015951139887e-02, + 2.038987438510913089e-02, + 2.047934749479726757e-02, + 2.056876935529896103e-02, + 2.065813983344452764e-02, + 2.074745879617275260e-02, + 2.083672611052983167e-02, + 2.092594164367068271e-02, + 2.101510526285842173e-02, + 2.110421683546495272e-02, + 2.119327622897100236e-02, + 2.128228331096577303e-02, + 2.137123794914835492e-02, + 2.146014001132700091e-02, + 2.154898936541927226e-02, + 2.163778587945279844e-02, + 2.172652942156472894e-02, + 2.181521986000270127e-02, + 2.190385706312452524e-02, + 2.199244089939827659e-02, + 2.208097123740309156e-02, + 2.216944794582851458e-02, + 2.225787089347551831e-02, + 2.234623994925591037e-02, + 2.243455498219346089e-02, + 2.252281586142274722e-02, + 2.261102245619083656e-02, + 2.269917463585632844e-02, + 2.278727226988992716e-02, + 2.287531522787492749e-02, + 2.296330337950679146e-02, + 2.305123659459403646e-02, + 2.313911474305791957e-02, + 2.322693769493251389e-02, + 2.331470532036525323e-02, + 2.340241748961711596e-02, + 2.349007407306226425e-02, + 2.357767494118920629e-02, + 2.366521996459987343e-02, + 2.375270901401075122e-02, + 2.384014196025215776e-02, + 2.392751867426945456e-02, + 2.401483902712227975e-02, + 2.410210288998502343e-02, + 2.418931013414762562e-02, + 2.427646063101468812e-02, + 2.436355425210665407e-02, + 2.445059086905898918e-02, + 2.453757035362322605e-02, + 2.462449257766731459e-02, + 2.471135741317429316e-02, + 2.479816473224431134e-02, + 2.488491440709343638e-02, + 2.497160631005455184e-02, + 2.505824031357762466e-02, + 2.514481629022904952e-02, + 2.523133411269302268e-02, + 2.531779365377044913e-02, + 2.540419478638031303e-02, + 2.549053738355909829e-02, + 2.557682131846079898e-02, + 2.566304646435805040e-02, + 2.574921269464124085e-02, + 2.583531988281951783e-02, + 2.592136790252025716e-02, + 2.600735662749000671e-02, + 2.609328593159345594e-02, + 2.617915568881551761e-02, + 2.626496577325963810e-02, + 2.635071605914872730e-02, + 2.643640642082528344e-02, + 2.652203673275211476e-02, + 2.660760686951138890e-02, + 2.669311670580571533e-02, + 2.677856611645802049e-02, + 2.686395497641159633e-02, + 2.694928316073052707e-02, + 2.703455054459954349e-02, + 2.711975700332455719e-02, + 2.720490241233253920e-02, + 2.728998664717198833e-02, + 2.737500958351267097e-02, + 2.745997109714630804e-02, + 2.754487106398621418e-02, + 2.762970936006772793e-02, + 2.771448586154871482e-02, + 2.779920044470947371e-02, + 2.788385298595211920e-02, + 2.796844336180233023e-02, + 2.805297144890792765e-02, + 2.813743712404055686e-02, + 2.822184026409434859e-02, + 2.830618074608749063e-02, + 2.839045844716111058e-02, + 2.847467324458041738e-02, + 2.855882501573458326e-02, + 2.864291363813647323e-02, + 2.872693898942369969e-02, + 2.881090094735785229e-02, + 2.889479938982526114e-02, + 2.897863419483699340e-02, + 2.906240524052904062e-02, + 2.914611240516215562e-02, + 2.922975556712292117e-02, + 2.931333460492287213e-02, + 2.939684939719934553e-02, + 2.948029982271508850e-02, + 2.956368576035929216e-02, + 2.964700708914647098e-02, + 2.973026368821809345e-02, + 2.981345543684163490e-02, + 2.989658221441105976e-02, + 2.997964390044747379e-02, + 3.006264037459849617e-02, + 3.014557151663892556e-02, + 3.022843720647066731e-02, + 3.031123732412330934e-02, + 3.039397174975372318e-02, + 3.047664036364639353e-02, + 3.055924304621411222e-02, + 3.064177967799707261e-02, + 3.072425013966439619e-02, + 3.080665431201303969e-02, + 3.088899207596866939e-02, + 3.097126331258559517e-02, + 3.105346790304710364e-02, + 3.113560572866492723e-02, + 3.121767667088090961e-02, + 3.129968061126545825e-02, + 3.138161743151890448e-02, + 3.146348701347075061e-02, + 3.154528923908093280e-02, + 3.162702399043883922e-02, + 3.170869114976439251e-02, + 3.179029059940739060e-02, + 3.187182222184841568e-02, + 3.195328589969843175e-02, + 3.203468151569933281e-02, + 3.211600895272371387e-02, + 3.219726809377596033e-02, + 3.227845882199061045e-02, + 3.235958102063436759e-02, + 3.244063457310530918e-02, + 3.252161936293303246e-02, + 3.260253527377945243e-02, + 3.268338218943788592e-02, + 3.276415999383451572e-02, + 3.284486857102731500e-02, + 3.292550780520699799e-02, + 3.300607758069724895e-02, + 3.308657778195365357e-02, + 3.316700829356582225e-02, + 3.324736900025565545e-02, + 3.332765978687903669e-02, + 3.340788053842471544e-02, + 3.348803114001533410e-02, + 3.356811147690699076e-02, + 3.364812143449009280e-02, + 3.372806089828897513e-02, + 3.380792975396191419e-02, + 3.388772788730166907e-02, + 3.396745518423567589e-02, + 3.404711153082581876e-02, + 3.412669681326899185e-02, + 3.420621091789686347e-02, + 3.428565373117641729e-02, + 3.436502513970969563e-02, + 3.444432503023430597e-02, + 3.452355328962362913e-02, + 3.460270980488622250e-02, + 3.468179446316706910e-02, + 3.476080715174675873e-02, + 3.483974775804272311e-02, + 3.491861616960770937e-02, + 3.499741227413163264e-02, + 3.507613595944136797e-02, + 3.515478711349991764e-02, + 3.523336562440704256e-02, + 3.531187138040044193e-02, + 3.539030426985434463e-02, + 3.546866418128054310e-02, + 3.554695100332844887e-02, + 3.562516462478515500e-02, + 3.570330493457542220e-02, + 3.578137182176208131e-02, + 3.585936517554615816e-02, + 3.593728488526663073e-02, + 3.601513084040137980e-02, + 3.609290293056631460e-02, + 3.617060104551667737e-02, + 3.624822507514598169e-02, + 3.632577490948683124e-02, + 3.640325043871110722e-02, + 3.648065155313044705e-02, + 3.655797814319484973e-02, + 3.663523009949495174e-02, + 3.671240731276024377e-02, + 3.678950967386106219e-02, + 3.686653707380659756e-02, + 3.694348940374700407e-02, + 3.702036655497272649e-02, + 3.709716841891431277e-02, + 3.717389488714303164e-02, + 3.725054585137079627e-02, + 3.732712120345083040e-02, + 3.740362083537662058e-02, + 3.748004463928367863e-02, + 3.755639250744800817e-02, + 3.763266433228745766e-02, + 3.770886000636157476e-02, + 3.778497942237155766e-02, + 3.786102247316030373e-02, + 3.793698905171283275e-02, + 3.801287905115619675e-02, + 3.808869236476006281e-02, + 3.816442888593626209e-02, + 3.824008850823916450e-02, + 3.831567112536599790e-02, + 3.839117663115650114e-02, + 3.846660491959419392e-02, + 3.854195588480487794e-02, + 3.861722942105801082e-02, + 3.869242542276635916e-02, + 3.876754378448644262e-02, + 3.884258440091822862e-02, + 3.891754716690547927e-02, + 3.899243197743620243e-02, + 3.906723872764186756e-02, + 3.914196731279920294e-02, + 3.921661762832830828e-02, + 3.929118956979441718e-02, + 3.936568303290725879e-02, + 3.944009791352103000e-02, + 3.951443410763511022e-02, + 3.958869151139395026e-02, + 3.966287002108724591e-02, + 3.973696953314979907e-02, + 3.981098994416190640e-02, + 3.988493115084960211e-02, + 3.995879305008459559e-02, + 4.003257553888437542e-02, + 4.010627851441234820e-02, + 4.017990187397817159e-02, + 4.025344551503795554e-02, + 4.032690933519365167e-02, + 4.040029323219424678e-02, + 4.047359710393544363e-02, + 4.054682084845910583e-02, + 4.061996436395471505e-02, + 4.069302754875832318e-02, + 4.076601030135330872e-02, + 4.083891252037064740e-02, + 4.091173410458816967e-02, + 4.098447495293180975e-02, + 4.105713496447492561e-02, + 4.112971403843895118e-02, + 4.120221207419316745e-02, + 4.127462897125473706e-02, + 4.134696462928939831e-02, + 4.141921894811103483e-02, + 4.149139182768196016e-02, + 4.156348316811341731e-02, + 4.163549286966513469e-02, + 4.170742083274545792e-02, + 4.177926695791244621e-02, + 4.185103114587263029e-02, + 4.192271329748232384e-02, + 4.199431331374659654e-02, + 4.206583109582051616e-02, + 4.213726654500862118e-02, + 4.220861956276522609e-02, + 4.227989005069435202e-02, + 4.235107791055039983e-02, + 4.242218304423777536e-02, + 4.249320535381084785e-02, + 4.256414474147492133e-02, + 4.263500110958522160e-02, + 4.270577436064805499e-02, + 4.277646439732015610e-02, + 4.284707112240968702e-02, + 4.291759443887492587e-02, + 4.298803424982615418e-02, + 4.305839045852485891e-02, + 4.312866296838312880e-02, + 4.319885168296528494e-02, + 4.326895650598703430e-02, + 4.333897734131568480e-02, + 4.340891409297079062e-02, + 4.347876666512343058e-02, + 4.354853496209741548e-02, + 4.361821888836802524e-02, + 4.368781834856354934e-02, + 4.375733324746446107e-02, + 4.382676349000372978e-02, + 4.389610898126753563e-02, + 4.396536962649402747e-02, + 4.403454533107518248e-02, + 4.410363600055561967e-02, + 4.417264154063314102e-02, + 4.424156185715910627e-02, + 4.431039685613829410e-02, + 4.437914644372849271e-02, + 4.444781052624205420e-02, + 4.451638901014417365e-02, + 4.458488180205488066e-02, + 4.465328880874730455e-02, + 4.472160993714968669e-02, + 4.478984509434358330e-02, + 4.485799418756564183e-02, + 4.492605712420653236e-02, + 4.499403381181173167e-02, + 4.506192415808161350e-02, + 4.512972807087102523e-02, + 4.519744545819012749e-02, + 4.526507622820390153e-02, + 4.533262028923250309e-02, + 4.540007754975161625e-02, + 4.546744791839178734e-02, + 4.553473130393993068e-02, + 4.560192761533816280e-02, + 4.566903676168430903e-02, + 4.573605865223188266e-02, + 4.580299319639080657e-02, + 4.586984030372686511e-02, + 4.593659988396223137e-02, + 4.600327184697471095e-02, + 4.606985610279973331e-02, + 4.613635256162808285e-02, + 4.620276113380824418e-02, + 4.626908172984445233e-02, + 4.633531426039864953e-02, + 4.640145863628913903e-02, + 4.646751476849174389e-02, + 4.653348256813930051e-02, + 4.659936194652222058e-02, + 4.666515281508778340e-02, + 4.673085508544160688e-02, + 4.679646866934607241e-02, + 4.686199347872205268e-02, + 4.692742942564773201e-02, + 4.699277642235975827e-02, + 4.705803438125245181e-02, + 4.712320321487829117e-02, + 4.718828283594855844e-02, + 4.725327315733245104e-02, + 4.731817409205778951e-02, + 4.738298555331108691e-02, + 4.744770745443751409e-02, + 4.751233970894098990e-02, + 4.757688223048472942e-02, + 4.764133493289052917e-02, + 4.770569773013938475e-02, + 4.776997053637194179e-02, + 4.783415326588758704e-02, + 4.789824583314568340e-02, + 4.796224815276535491e-02, + 4.802616013952442503e-02, + 4.808998170836128322e-02, + 4.815371277437416331e-02, + 4.821735325282079654e-02, + 4.828090305911943159e-02, + 4.834436210884815455e-02, + 4.840773031774607549e-02, + 4.847100760171145495e-02, + 4.853419387680425745e-02, + 4.859728905924426412e-02, + 4.866029306541209964e-02, + 4.872320581184962085e-02, + 4.878602721525888974e-02, + 4.884875719250363763e-02, + 4.891139566060805077e-02, + 4.897394253675760312e-02, + 4.903639773830005544e-02, + 4.909876118274311002e-02, + 4.916103278775683927e-02, + 4.922321247117274895e-02, + 4.928530015098379902e-02, + 4.934729574534520158e-02, + 4.940919917257332455e-02, + 4.947101035114745415e-02, + 4.953272919970820587e-02, + 4.959435563705869021e-02, + 4.965588958216413801e-02, + 4.971733095415235837e-02, + 4.977867967231356522e-02, + 4.983993565610013443e-02, + 4.990109882512795692e-02, + 4.996216909917486348e-02, + 5.002314639818201264e-02, + 5.008403064225328688e-02, + 5.014482175165566741e-02, + 5.020551964681938678e-02, + 5.026612424833758197e-02, + 5.032663547696717560e-02, + 5.038705325362821674e-02, + 5.044737749940399196e-02, + 5.050760813554225348e-02, + 5.056774508345363711e-02, + 5.062778826471261984e-02, + 5.068773760105826226e-02, + 5.074759301439283471e-02, + 5.080735442678292052e-02, + 5.086702176045954787e-02, + 5.092659493781771796e-02, + 5.098607388141648128e-02, + 5.104545851398001322e-02, + 5.110474875839636499e-02, + 5.116394453771901107e-02, + 5.122304577516503810e-02, + 5.128205239411721267e-02, + 5.134096431812253114e-02, + 5.139978147089378085e-02, + 5.145850377630804134e-02, + 5.151713115840775986e-02, + 5.157566354140083464e-02, + 5.163410084966017083e-02, + 5.169244300772451312e-02, + 5.175068994029763392e-02, + 5.180884157224908970e-02, + 5.186689782861417242e-02, + 5.192485863459406908e-02, + 5.198272391555551486e-02, + 5.204049359703108446e-02, + 5.209816760472008035e-02, + 5.215574586448687433e-02, + 5.221322830236274637e-02, + 5.227061484454550294e-02, + 5.232790541739835294e-02, + 5.238509994745168402e-02, + 5.244219836140234098e-02, + 5.249920058611356327e-02, + 5.255610654861525566e-02, + 5.261291617610449473e-02, + 5.266962939594482113e-02, + 5.272624613566664203e-02, + 5.278276632296800830e-02, + 5.283918988571352504e-02, + 5.289551675193508024e-02, + 5.295174684983208063e-02, + 5.300788010777105624e-02, + 5.306391645428597259e-02, + 5.311985581807824458e-02, + 5.317569812801723611e-02, + 5.323144331313999639e-02, + 5.328709130265070482e-02, + 5.334264202592216980e-02, + 5.339809541249441321e-02, + 5.345345139207607899e-02, + 5.350870989454341309e-02, + 5.356387084994088804e-02, + 5.361893418848173720e-02, + 5.367389984054671964e-02, + 5.372876773668572303e-02, + 5.378353780761641750e-02, + 5.383820998422571974e-02, + 5.389278419756853705e-02, + 5.394726037886869718e-02, + 5.400163845951916342e-02, + 5.405591837108115333e-02, + 5.411010004528542250e-02, + 5.416418341403101550e-02, + 5.421816840938671611e-02, + 5.427205496359019388e-02, + 5.432584300904848978e-02, + 5.437953247833755138e-02, + 5.443312330420335687e-02, + 5.448661541956043713e-02, + 5.454000875749392963e-02, + 5.459330325125762162e-02, + 5.464649883427561555e-02, + 5.469959544014151021e-02, + 5.475259300261873380e-02, + 5.480549145564053704e-02, + 5.485829073331015271e-02, + 5.491099076990126060e-02, + 5.496359149985673848e-02, + 5.501609285779077846e-02, + 5.506849477848690944e-02, + 5.512079719689932933e-02, + 5.517300004815305081e-02, + 5.522510326754258292e-02, + 5.527710679053360332e-02, + 5.532901055276252117e-02, + 5.538081449003617873e-02, + 5.543251853833216364e-02, + 5.548412263379872561e-02, + 5.553562671275531770e-02, + 5.558703071169208976e-02, + 5.563833456727025617e-02, + 5.568953821632222773e-02, + 5.574064159585120914e-02, + 5.579164464303242726e-02, + 5.584254729521166694e-02, + 5.589334948990588858e-02, + 5.594405116480426210e-02, + 5.599465225776712601e-02, + 5.604515270682555034e-02, + 5.609555245018368885e-02, + 5.614585142621629499e-02, + 5.619604957347033164e-02, + 5.624614683066404136e-02, + 5.629614313668844516e-02, + 5.634603843060554534e-02, + 5.639583265165002551e-02, + 5.644552573922831384e-02, + 5.649511763291903410e-02, + 5.654460827247313054e-02, + 5.659399759781354178e-02, + 5.664328554903555468e-02, + 5.669247206640703335e-02, + 5.674155709036855788e-02, + 5.679054056153227253e-02, + 5.683942242068356493e-02, + 5.688820260878069135e-02, + 5.693688106695372203e-02, + 5.698545773650633833e-02, + 5.703393255891472946e-02, + 5.708230547582748837e-02, + 5.713057642906693712e-02, + 5.717874536062783619e-02, + 5.722681221267806456e-02, + 5.727477692755898048e-02, + 5.732263944778416553e-02, + 5.737039971604179778e-02, + 5.741805767519200104e-02, + 5.746561326826916949e-02, + 5.751306643848066308e-02, + 5.756041712920724474e-02, + 5.760766528400321912e-02, + 5.765481084659693223e-02, + 5.770185376088962648e-02, + 5.774879397095648154e-02, + 5.779563142104661433e-02, + 5.784236605558303046e-02, + 5.788899781916190257e-02, + 5.793552665655406914e-02, + 5.798195251270366751e-02, + 5.802827533272946620e-02, + 5.807449506192371297e-02, + 5.812061164575316879e-02, + 5.816662502985853883e-02, + 5.821253516005472917e-02, + 5.825834198233137418e-02, + 5.830404544285188589e-02, + 5.834964548795427280e-02, + 5.839514206415075126e-02, + 5.844053511812848101e-02, + 5.848582459674872558e-02, + 5.853101044704765721e-02, + 5.857609261623575314e-02, + 5.862107105169820503e-02, + 5.866594570099548100e-02, + 5.871071651186222234e-02, + 5.875538343220818027e-02, + 5.879994641011788981e-02, + 5.884440539385053792e-02, + 5.888876033184119868e-02, + 5.893301117269909850e-02, + 5.897715786520873332e-02, + 5.902120035832996575e-02, + 5.906513860119776832e-02, + 5.910897254312202226e-02, + 5.915270213358863466e-02, + 5.919632732225748456e-02, + 5.923984805896560096e-02, + 5.928326429372395012e-02, + 5.932657597671964905e-02, + 5.936978305831498715e-02, + 5.941288548904798822e-02, + 5.945588321963245909e-02, + 5.949877620095773284e-02, + 5.954156438408847452e-02, + 5.958424772026549993e-02, + 5.962682616090504012e-02, + 5.966929965759953242e-02, + 5.971166816211699591e-02, + 5.975393162640171146e-02, + 5.979609000257315315e-02, + 5.983814324292757725e-02, + 5.988009129993713403e-02, + 5.992193412624966659e-02, + 5.996367167468918957e-02, + 6.000530389825620148e-02, + 6.004683075012749033e-02, + 6.008825218365557858e-02, + 6.012956815236951413e-02, + 6.017077860997464139e-02, + 6.021188351035305919e-02, + 6.025288280756233017e-02, + 6.029377645583769429e-02, + 6.033456440958968880e-02, + 6.037524662340636172e-02, + 6.041582305205141223e-02, + 6.045629365046591847e-02, + 6.049665837376710237e-02, + 6.053691717724921095e-02, + 6.057707001638295424e-02, + 6.061711684681578283e-02, + 6.065705762437215848e-02, + 6.069689230505288802e-02, + 6.073662084503631681e-02, + 6.077624320067723240e-02, + 6.081575932850757926e-02, + 6.085516918523595220e-02, + 6.089447272774822090e-02, + 6.093366991310749520e-02, + 6.097276069855338265e-02, + 6.101174504150295996e-02, + 6.105062289955041910e-02, + 6.108939423046712974e-02, + 6.112805899220199318e-02, + 6.116661714288013779e-02, + 6.120506864080526438e-02, + 6.124341344445741880e-02, + 6.128165151249445608e-02, + 6.131978280375144363e-02, + 6.135780727724095968e-02, + 6.139572489215308626e-02, + 6.143353560785497908e-02, + 6.147123938389214420e-02, + 6.150883617998630787e-02, + 6.154632595603786588e-02, + 6.158370867212459299e-02, + 6.162098428850183718e-02, + 6.165815276560212416e-02, + 6.169521406403614960e-02, + 6.173216814459264734e-02, + 6.176901496823707094e-02, + 6.180575449611366845e-02, + 6.184238668954403217e-02, + 6.187891151002749418e-02, + 6.191532891924152182e-02, + 6.195163887904114874e-02, + 6.198784135145966184e-02, + 6.202393629870802533e-02, + 6.205992368317531788e-02, + 6.209580346742846896e-02, + 6.213157561421245312e-02, + 6.216724008645053284e-02, + 6.220279684724362712e-02, + 6.223824585987130370e-02, + 6.227358708779064805e-02, + 6.230882049463722094e-02, + 6.234394604422476699e-02, + 6.237896370054529099e-02, + 6.241387342776841957e-02, + 6.244867519024285135e-02, + 6.248336895249526068e-02, + 6.251795467923002003e-02, + 6.255243233533086533e-02, + 6.258680188585898085e-02, + 6.262106329605429678e-02, + 6.265521653133532265e-02, + 6.268926155729838412e-02, + 6.272319833971871927e-02, + 6.275702684454968761e-02, + 6.279074703792360268e-02, + 6.282435888615059416e-02, + 6.285786235571974578e-02, + 6.289125741329855412e-02, + 6.292454402573292860e-02, + 6.295772216004782984e-02, + 6.299079178344590968e-02, + 6.302375286330956505e-02, + 6.305660536719862042e-02, + 6.308934926285225675e-02, + 6.312198451818823441e-02, + 6.315451110130285151e-02, + 6.318692898047148510e-02, + 6.321923812414736998e-02, + 6.325143850096338893e-02, + 6.328353007973064326e-02, + 6.331551282943882752e-02, + 6.334738671925721487e-02, + 6.337915171853307494e-02, + 6.341080779679271473e-02, + 6.344235492374147856e-02, + 6.347379306926304032e-02, + 6.350512220342070802e-02, + 6.353634229645603593e-02, + 6.356745331878953242e-02, + 6.359845524102084036e-02, + 6.362934803392794603e-02, + 6.366013166846878901e-02, + 6.369080611577909723e-02, + 6.372137134717430207e-02, + 6.375182733414884451e-02, + 6.378217404837525917e-02, + 6.381241146170602008e-02, + 6.384253954617211124e-02, + 6.387255827398378993e-02, + 6.390246761752980953e-02, + 6.393226754937884893e-02, + 6.396195804227750026e-02, + 6.399153906915246159e-02, + 6.402101060310881608e-02, + 6.405037261743101729e-02, + 6.407962508558223691e-02, + 6.410876798120546116e-02, + 6.413780127812156173e-02, + 6.416672495033198809e-02, + 6.419553897201626946e-02, + 6.422424331753322224e-02, + 6.425283796142099157e-02, + 6.428132287839662118e-02, + 6.430969804335694151e-02, + 6.433796343137687668e-02, + 6.436611901771115141e-02, + 6.439416477779395798e-02, + 6.442210068723791538e-02, + 6.444992672183504079e-02, + 6.447764285755680502e-02, + 6.450524907055386892e-02, + 6.453274533715565309e-02, + 6.456013163387139264e-02, + 6.458740793738859676e-02, + 6.461457422457483890e-02, + 6.464163047247674376e-02, + 6.466857665831965418e-02, + 6.469541275950865811e-02, + 6.472213875362778368e-02, + 6.474875461844036006e-02, + 6.477526033188911458e-02, + 6.480165587209546496e-02, + 6.482794121736043524e-02, + 6.485411634616440602e-02, + 6.488018123716668417e-02, + 6.490613586920578049e-02, + 6.493198022130006186e-02, + 6.495771427264596110e-02, + 6.498333800262034998e-02, + 6.500885139077866581e-02, + 6.503425441685553587e-02, + 6.505954706076490235e-02, + 6.508472930260013334e-02, + 6.510980112263375919e-02, + 6.513476250131751411e-02, + 6.515961341928186434e-02, + 6.518435385733731269e-02, + 6.520898379647305232e-02, + 6.523350321785775785e-02, + 6.525791210283908572e-02, + 6.528221043294385462e-02, + 6.530639818987830914e-02, + 6.533047535552805041e-02, + 6.535444191195734220e-02, + 6.537829784140994360e-02, + 6.540204312630878980e-02, + 6.542567774925628354e-02, + 6.544920169303343471e-02, + 6.547261494060066522e-02, + 6.549591747509776740e-02, + 6.551910927984357091e-02, + 6.554219033833558195e-02, + 6.556516063425142649e-02, + 6.558802015144699071e-02, + 6.561076887395775326e-02, + 6.563340678599807743e-02, + 6.565593387196162756e-02, + 6.567835011642128573e-02, + 6.570065550412847177e-02, + 6.572285002001426735e-02, + 6.574493364918883309e-02, + 6.576690637694106167e-02, + 6.578876818873878596e-02, + 6.581051907022968106e-02, + 6.583215900723954350e-02, + 6.585368798577398430e-02, + 6.587510599201716610e-02, + 6.589641301233217785e-02, + 6.591760903326158993e-02, + 6.593869404152659375e-02, + 6.595966802402745965e-02, + 6.598053096784313454e-02, + 6.600128286023232427e-02, + 6.602192368863173122e-02, + 6.604245344065777512e-02, + 6.606287210410509425e-02, + 6.608317966694776668e-02, + 6.610337611733853314e-02, + 6.612346144360890798e-02, + 6.614343563427002581e-02, + 6.616329867801035158e-02, + 6.618305056369863659e-02, + 6.620269128038186457e-02, + 6.622222081728609822e-02, + 6.624163916381548001e-02, + 6.626094630955337017e-02, + 6.628014224426226342e-02, + 6.629922695788320608e-02, + 6.631820044053536589e-02, + 6.633706268251707283e-02, + 6.635581367430583299e-02, + 6.637445340655687143e-02, + 6.639298187010470031e-02, + 6.641139905596217530e-02, + 6.642970495532107833e-02, + 6.644789955955167360e-02, + 6.646598286020261037e-02, + 6.648395484900121444e-02, + 6.650181551785340484e-02, + 6.651956485884379100e-02, + 6.653720286423496499e-02, + 6.655472952646863949e-02, + 6.657214483816434325e-02, + 6.658944879212078116e-02, + 6.660664138131458523e-02, + 6.662372259890071702e-02, + 6.664069243821270361e-02, + 6.665755089276266532e-02, + 6.667429795624084388e-02, + 6.669093362251569956e-02, + 6.670745788563367529e-02, + 6.672387073982048722e-02, + 6.674017217947891822e-02, + 6.675636219919105219e-02, + 6.677244079371609520e-02, + 6.678840795799265151e-02, + 6.680426368713603125e-02, + 6.682000797644097045e-02, + 6.683564082137981310e-02, + 6.685116221760270538e-02, + 6.686657216093806755e-02, + 6.688187064739266330e-02, + 6.689705767315061447e-02, + 6.691213323457469164e-02, + 6.692709732820502355e-02, + 6.694194995075991583e-02, + 6.695669109913553185e-02, + 6.697132077040622578e-02, + 6.698583896182386255e-02, + 6.700024567081774851e-02, + 6.701454089499578326e-02, + 6.702872463214304410e-02, + 6.704279688022246608e-02, + 6.705675763737496686e-02, + 6.707060690191844754e-02, + 6.708434467234959675e-02, + 6.709797094734129552e-02, + 6.711148572574517079e-02, + 6.712488900658948598e-02, + 6.713818078908097287e-02, + 6.715136107260304132e-02, + 6.716442985671716714e-02, + 6.717738714116151810e-02, + 6.719023292585253604e-02, + 6.720296721088332703e-02, + 6.721558999652436917e-02, + 6.722810128322413703e-02, + 6.724050107160785272e-02, + 6.725278936247754136e-02, + 6.726496615681316904e-02, + 6.727703145577153265e-02, + 6.728898526068685659e-02, + 6.730082757306976582e-02, + 6.731255839460888180e-02, + 6.732417772716889348e-02, + 6.733568557279240308e-02, + 6.734708193369813578e-02, + 6.735836681228260514e-02, + 6.736954021111815627e-02, + 6.738060213295520018e-02, + 6.739155258071975740e-02, + 6.740239155751573397e-02, + 6.741311906662275644e-02, + 6.742373511149797605e-02, + 6.743423969577479193e-02, + 6.744463282326358666e-02, + 6.745491449795065764e-02, + 6.746508472399943834e-02, + 6.747514350574959630e-02, + 6.748509084771776856e-02, + 6.749492675459652091e-02, + 6.750465123125466704e-02, + 6.751426428273797631e-02, + 6.752376591426817454e-02, + 6.753315613124342975e-02, + 6.754243493923771380e-02, + 6.755160234400212071e-02, + 6.756065835146277121e-02, + 6.756960296772276942e-02, + 6.757843619906092614e-02, + 6.758715805193174497e-02, + 6.759576853296704602e-02, + 6.760426764897296825e-02, + 6.761265540693230103e-02, + 6.762093181400390118e-02, + 6.762909687752223509e-02, + 6.763715060499757292e-02, + 6.764509300411562787e-02, + 6.765292408273830549e-02, + 6.766064384890295436e-02, + 6.766825231082226888e-02, + 6.767574947688474729e-02, + 6.768313535565484429e-02, + 6.769040995587161103e-02, + 6.769757328644993022e-02, + 6.770462535648059943e-02, + 6.771156617522849919e-02, + 6.771839575213528528e-02, + 6.772511409681640504e-02, + 6.773172121906369247e-02, + 6.773821712884364743e-02, + 6.774460183629787968e-02, + 6.775087535174281750e-02, + 6.775703768567016561e-02, + 6.776308884874672478e-02, + 6.776902885181392000e-02, + 6.777485770588805025e-02, + 6.778057542216060771e-02, + 6.778618201199762550e-02, + 6.779167748693958051e-02, + 6.779706185870200408e-02, + 6.780233513917451049e-02, + 6.780749734042226806e-02, + 6.781254847468372315e-02, + 6.781748855437283452e-02, + 6.782231759207738020e-02, + 6.782703560055988734e-02, + 6.783164259275675789e-02, + 6.783613858177889311e-02, + 6.784052358091162416e-02, + 6.784479760361372680e-02, + 6.784896066351914223e-02, + 6.785301277443521462e-02, + 6.785695395034284372e-02, + 6.786078420539819189e-02, + 6.786450355392958933e-02, + 6.786811201044103126e-02, + 6.787160958960895829e-02, + 6.787499630628374137e-02, + 6.787827217549018133e-02, + 6.788143721242591300e-02, + 6.788449143246266804e-02, + 6.788743485114526188e-02, + 6.789026748419188517e-02, + 6.789298934749483927e-02, + 6.789560045711905134e-02, + 6.789810082930312907e-02, + 6.790049048045870839e-02, + 6.790276942717067554e-02, + 6.790493768619711157e-02, + 6.790699527446925066e-02, + 6.790894220909075851e-02, + 6.791077850733910626e-02, + 6.791250418666365529e-02, + 6.791411926468775284e-02, + 6.791562375920660866e-02, + 6.791701768818818319e-02, + 6.791830106977357617e-02, + 6.791947392227652702e-02, + 6.792053626418277645e-02, + 6.792148811415053833e-02, + 6.792232949101095763e-02, + 6.792306041376748593e-02, + 6.792368090159517369e-02, + 6.792419097384203019e-02, + 6.792459065002823260e-02, + 6.792487994984505728e-02, + 6.792505889315728074e-02, + 6.792512750000080646e-02, + 6.792508579058351148e-02, + 6.792493378528512149e-02, + 6.792467150465743286e-02, + 6.792429896942386858e-02, + 6.792381620047942270e-02, + 6.792322321889077141e-02, + 6.792252004589612036e-02, + 6.792170670290484380e-02, + 6.792078321149835896e-02, + 6.791974959342905738e-02, + 6.791860587062065191e-02, + 6.791735206516784362e-02, + 6.791598819933700182e-02, + 6.791451429556505381e-02, + 6.791293037646069231e-02, + 6.791123646480261289e-02, + 6.790943258354106837e-02, + 6.790751875579699448e-02, + 6.790549500486178780e-02, + 6.790336135419772212e-02, + 6.790111782743830926e-02, + 6.789876444838652270e-02, + 6.789630124101661557e-02, + 6.789372822947276065e-02, + 6.789104543806998016e-02, + 6.788825289129306328e-02, + 6.788535061379750990e-02, + 6.788233863040873950e-02, + 6.787921696612199407e-02, + 6.787598564610297647e-02, + 6.787264469568686509e-02, + 6.786919414037921594e-02, + 6.786563400585463035e-02, + 6.786196431795862849e-02, + 6.785818510270515136e-02, + 6.785429638627851756e-02, + 6.785029819503200776e-02, + 6.784619055548890554e-02, + 6.784197349434101243e-02, + 6.783764703845072963e-02, + 6.783321121484826854e-02, + 6.782866605073427368e-02, + 6.782401157347718590e-02, + 6.781924781061553220e-02, + 6.781437478985641309e-02, + 6.780939253907521114e-02, + 6.780430108631704811e-02, + 6.779910045979534172e-02, + 6.779379068789159746e-02, + 6.778837179915687960e-02, + 6.778284382230999328e-02, + 6.777720678623866402e-02, + 6.777146071999845534e-02, + 6.776560565281335158e-02, + 6.775964161407570241e-02, + 6.775356863334598689e-02, + 6.774738674035213348e-02, + 6.774109596499121311e-02, + 6.773469633732667750e-02, + 6.772818788759077391e-02, + 6.772157064618346267e-02, + 6.771484464367186207e-02, + 6.770800991079062303e-02, + 6.770106647844295611e-02, + 6.769401437769793917e-02, + 6.768685363979293212e-02, + 6.767958429613236959e-02, + 6.767220637828805230e-02, + 6.766471991799843932e-02, + 6.765712494716913383e-02, + 6.764942149787260550e-02, + 6.764160960234900932e-02, + 6.763368929300385413e-02, + 6.762566060241007038e-02, + 6.761752356330767710e-02, + 6.760927820860275494e-02, + 6.760092457136736288e-02, + 6.759246268484035702e-02, + 6.758389258242764042e-02, + 6.757521429769960952e-02, + 6.756642786439474857e-02, + 6.755753331641566051e-02, + 6.754853068783248093e-02, + 6.753942001288032460e-02, + 6.753020132596018743e-02, + 6.752087466163932128e-02, + 6.751144005464992937e-02, + 6.750189753988990182e-02, + 6.749224715242288508e-02, + 6.748248892747764349e-02, + 6.747262290044865607e-02, + 6.746264910689440952e-02, + 6.745256758254009055e-02, + 6.744237836327461599e-02, + 6.743208148515295042e-02, + 6.742167698439355261e-02, + 6.741116489738120665e-02, + 6.740054526066431573e-02, + 6.738981811095597074e-02, + 6.737898348513422786e-02, + 6.736804142024130360e-02, + 6.735699195348350543e-02, + 6.734583512223211998e-02, + 6.733457096402160891e-02, + 6.732319951655106605e-02, + 6.731172081768371784e-02, + 6.730013490544672905e-02, + 6.728844181803009250e-02, + 6.727664159378872466e-02, + 6.726473427124059212e-02, + 6.725271988906718346e-02, + 6.724059848611391166e-02, + 6.722837010138846270e-02, + 6.721603477406304372e-02, + 6.720359254347262057e-02, + 6.719104344911451532e-02, + 6.717838753065000224e-02, + 6.716562482790300326e-02, + 6.715275538085981044e-02, + 6.713977922966982148e-02, + 6.712669641464520665e-02, + 6.711350697626049244e-02, + 6.710021095515233958e-02, + 6.708680839212033398e-02, + 6.707329932812575168e-02, + 6.705968380429234987e-02, + 6.704596186190610319e-02, + 6.703213354241450983e-02, + 6.701819888742745202e-02, + 6.700415793871612735e-02, + 6.699001073821393704e-02, + 6.697575732801525072e-02, + 6.696139775037637798e-02, + 6.694693204771515194e-02, + 6.693236026261026317e-02, + 6.691768243780188419e-02, + 6.690289861619148903e-02, + 6.688800884084124265e-02, + 6.687301315497426457e-02, + 6.685791160197492033e-02, + 6.684270422538753087e-02, + 6.682739106891821823e-02, + 6.681197217643226882e-02, + 6.679644759195633996e-02, + 6.678081735967769661e-02, + 6.676508152394257378e-02, + 6.674924012925848027e-02, + 6.673329322029282473e-02, + 6.671724084187226345e-02, + 6.670108303898442115e-02, + 6.668481985677571222e-02, + 6.666845134055271460e-02, + 6.665197753578151751e-02, + 6.663539848808716637e-02, + 6.661871424325496727e-02, + 6.660192484722869677e-02, + 6.658503034611167049e-02, + 6.656803078616607694e-02, + 6.655092621381315798e-02, + 6.653371667563305614e-02, + 6.651640221836453704e-02, + 6.649898288890510045e-02, + 6.648145873431086927e-02, + 6.646382980179639521e-02, + 6.644609613873420084e-02, + 6.642825779265544572e-02, + 6.641031481124941294e-02, + 6.639226724236330091e-02, + 6.637411513400232055e-02, + 6.635585853432969528e-02, + 6.633749749166562015e-02, + 6.631903205448852479e-02, + 6.630046227143467086e-02, + 6.628178819129712518e-02, + 6.626300986302646745e-02, + 6.624412733573052658e-02, + 6.622514065867385336e-02, + 6.620604988127859469e-02, + 6.618685505312377204e-02, + 6.616755622394444869e-02, + 6.614815344363285388e-02, + 6.612864676223818849e-02, + 6.610903622996525120e-02, + 6.608932189717613148e-02, + 6.606950381438818354e-02, + 6.604958203227567770e-02, + 6.602955660166837104e-02, + 6.600942757355265922e-02, + 6.598919499906999442e-02, + 6.596885892951787067e-02, + 6.594841941634935201e-02, + 6.592787651117305858e-02, + 6.590723026575312504e-02, + 6.588648073200849276e-02, + 6.586562796201402004e-02, + 6.584467200799851150e-02, + 6.582361292234710504e-02, + 6.580245075759857953e-02, + 6.578118556644708959e-02, + 6.575981740174102752e-02, + 6.573834631648378668e-02, + 6.571677236383285936e-02, + 6.569509559709978130e-02, + 6.567331606975074232e-02, + 6.565143383540560096e-02, + 6.562944894783860617e-02, + 6.560736146097720378e-02, + 6.558517142890357698e-02, + 6.556287890585209277e-02, + 6.554048394621198037e-02, + 6.551798660452497203e-02, + 6.549538693548669077e-02, + 6.547268499394544305e-02, + 6.544988083490298203e-02, + 6.542697451351363325e-02, + 6.540396608508490528e-02, + 6.538085560507657379e-02, + 6.535764312910150031e-02, + 6.533432871292441102e-02, + 6.531091241246315959e-02, + 6.528739428378749210e-02, + 6.526377438311911638e-02, + 6.524005276683181309e-02, + 6.521622949145168546e-02, + 6.519230461365606299e-02, + 6.516827819027418145e-02, + 6.514415027828711346e-02, + 6.511992093482660282e-02, + 6.509559021717699345e-02, + 6.507115818277238450e-02, + 6.504662488919907282e-02, + 6.502199039419370719e-02, + 6.499725475564394062e-02, + 6.497241803158836093e-02, + 6.494748028021614383e-02, + 6.492244155986665044e-02, + 6.489730192902980199e-02, + 6.487206144634594107e-02, + 6.484672017060535976e-02, + 6.482127816074868820e-02, + 6.479573547586597870e-02, + 6.477009217519713591e-02, + 6.474434831813237479e-02, + 6.471850396421074958e-02, + 6.469255917312104198e-02, + 6.466651400470127542e-02, + 6.464036851893874280e-02, + 6.461412277596990938e-02, + 6.458777683607962172e-02, + 6.456133075970235669e-02, + 6.453478460742052836e-02, + 6.450813843996597297e-02, + 6.448139231821792272e-02, + 6.445454630320508749e-02, + 6.442760045610347597e-02, + 6.440055483823763083e-02, + 6.437340951108042053e-02, + 6.434616453625155441e-02, + 6.431881997551958108e-02, + 6.429137589079962634e-02, + 6.426383234415482260e-02, + 6.423618939779637826e-02, + 6.420844711408121852e-02, + 6.418060555551424740e-02, + 6.415266478474757061e-02, + 6.412462486457977395e-02, + 6.409648585795589548e-02, + 6.406824782796825823e-02, + 6.403991083785519345e-02, + 6.401147495100172058e-02, + 6.398294023093852034e-02, + 6.395430674134335025e-02, + 6.392557454603876865e-02, + 6.389674370899417477e-02, + 6.386781429432421275e-02, + 6.383878636628907699e-02, + 6.380965998929473415e-02, + 6.378043522789239583e-02, + 6.375111214677828264e-02, + 6.372169081079424868e-02, + 6.369217128492637991e-02, + 6.366255363430614600e-02, + 6.363283792420933171e-02, + 6.360302422005675860e-02, + 6.357311258741323023e-02, + 6.354310309198858697e-02, + 6.351299579963566588e-02, + 6.348279077635292367e-02, + 6.345248808828135578e-02, + 6.342208780170628668e-02, + 6.339158998305732817e-02, + 6.336099469890663083e-02, + 6.333030201596999420e-02, + 6.329951200110758847e-02, + 6.326862472132099846e-02, + 6.323764024375627679e-02, + 6.320655863570151523e-02, + 6.317537996458816307e-02, + 6.314410429798975044e-02, + 6.311273170362281804e-02, + 6.308126224934582083e-02, + 6.304969600315990519e-02, + 6.301803303320796523e-02, + 6.298627340777505912e-02, + 6.295441719528774294e-02, + 6.292246446431525031e-02, + 6.289041528356709154e-02, + 6.285826972189503814e-02, + 6.282602784829183218e-02, + 6.279368973189192182e-02, + 6.276125544197026784e-02, + 6.272872504794256565e-02, + 6.269609861936606410e-02, + 6.266337622593792789e-02, + 6.263055793749613964e-02, + 6.259764382401923621e-02, + 6.256463395562558705e-02, + 6.253152840257379663e-02, + 6.249832723526260042e-02, + 6.246503052423064972e-02, + 6.243163834015583169e-02, + 6.239815075385600485e-02, + 6.236456783628836764e-02, + 6.233088965854913927e-02, + 6.229711629187419802e-02, + 6.226324780763790867e-02, + 6.222928427735385098e-02, + 6.219522577267425772e-02, + 6.216107236538991748e-02, + 6.212682412743041754e-02, + 6.209248113086290183e-02, + 6.205804344789371541e-02, + 6.202351115086639916e-02, + 6.198888431226289020e-02, + 6.195416300470246718e-02, + 6.191934730094276335e-02, + 6.188443727387862858e-02, + 6.184943299654133142e-02, + 6.181433454210117501e-02, + 6.177914198386358358e-02, + 6.174385539527264127e-02, + 6.170847484990827497e-02, + 6.167300042148709388e-02, + 6.163743218386254913e-02, + 6.160177021102443418e-02, + 6.156601457709855174e-02, + 6.153016535634711626e-02, + 6.149422262316778937e-02, + 6.145818645209495668e-02, + 6.142205691779784038e-02, + 6.138583409508138744e-02, + 6.134951805888614468e-02, + 6.131310888428789102e-02, + 6.127660664649749872e-02, + 6.124001142086045457e-02, + 6.120332328285796319e-02, + 6.116654230810474741e-02, + 6.112966857235119927e-02, + 6.109270215148111804e-02, + 6.105564312151313261e-02, + 6.101849155860007701e-02, + 6.098124753902829653e-02, + 6.094391113921839714e-02, + 6.090648243572428094e-02, + 6.086896150523399968e-02, + 6.083134842456833224e-02, + 6.079364327068136065e-02, + 6.075584612066101814e-02, + 6.071795705172762514e-02, + 6.067997614123368799e-02, + 6.064190346666589737e-02, + 6.060373910564206129e-02, + 6.056548313591318677e-02, + 6.052713563536245289e-02, + 6.048869668200469729e-02, + 6.045016635398713090e-02, + 6.041154472958823463e-02, + 6.037283188721898064e-02, + 6.033402790542110455e-02, + 6.029513286286801443e-02, + 6.025614683836429814e-02, + 6.021706991084553595e-02, + 6.017790215937846715e-02, + 6.013864366315989363e-02, + 6.009929450151842850e-02, + 6.005985475391211609e-02, + 6.002032449992958374e-02, + 5.998070381929009737e-02, + 5.994099279184224305e-02, + 5.990119149756505113e-02, + 5.986130001656708027e-02, + 5.982131842908657016e-02, + 5.978124681549074754e-02, + 5.974108525627679078e-02, + 5.970083383207090005e-02, + 5.966049262362759648e-02, + 5.962006171183082542e-02, + 5.957954117769333202e-02, + 5.953893110235589092e-02, + 5.949823156708800714e-02, + 5.945744265328729156e-02, + 5.941656444247973151e-02, + 5.937559701631908715e-02, + 5.933454045658610732e-02, + 5.929339484519084019e-02, + 5.925216026416929571e-02, + 5.921083679568556191e-02, + 5.916942452203061836e-02, + 5.912792352562278725e-02, + 5.908633388900697697e-02, + 5.904465569485480708e-02, + 5.900288902596441398e-02, + 5.896103396526113094e-02, + 5.891909059579514274e-02, + 5.887705900074409471e-02, + 5.883493926341051838e-02, + 5.879273146722376747e-02, + 5.875043569573800556e-02, + 5.870805203263328165e-02, + 5.866558056171501667e-02, + 5.862302136691355248e-02, + 5.858037453228460978e-02, + 5.853764014200848326e-02, + 5.849481828039048564e-02, + 5.845190903186041342e-02, + 5.840891248097210275e-02, + 5.836582871240426212e-02, + 5.832265781095920254e-02, + 5.827939986156360080e-02, + 5.823605494926780562e-02, + 5.819262315924547679e-02, + 5.814910457679407785e-02, + 5.810549928733436259e-02, + 5.806180737641022938e-02, + 5.801802892968853376e-02, + 5.797416403295928972e-02, + 5.793021277213471903e-02, + 5.788617523325014641e-02, + 5.784205150246274352e-02, + 5.779784166605241025e-02, + 5.775354581042063673e-02, + 5.770916402209093354e-02, + 5.766469638770919254e-02, + 5.762014299404230599e-02, + 5.757550392797818745e-02, + 5.753077927652755497e-02, + 5.748596912682033683e-02, + 5.744107356610912707e-02, + 5.739609268176614626e-02, + 5.735102656128479581e-02, + 5.730587529227899185e-02, + 5.726063896248271418e-02, + 5.721531765975041567e-02, + 5.716991147205652268e-02, + 5.712442048749506729e-02, + 5.707884479427996482e-02, + 5.703318448074451430e-02, + 5.698743963534200208e-02, + 5.694161034664391857e-02, + 5.689569670334165830e-02, + 5.684969879424487532e-02, + 5.680361670828290577e-02, + 5.675745053450245020e-02, + 5.671120036206943327e-02, + 5.666486628026794897e-02, + 5.661844837849949741e-02, + 5.657194674628488601e-02, + 5.652536147326144705e-02, + 5.647869264918425197e-02, + 5.643194036392642360e-02, + 5.638510470747817166e-02, + 5.633818576994634869e-02, + 5.629118364155526882e-02, + 5.624409841264614573e-02, + 5.619693017367604487e-02, + 5.614967901521949328e-02, + 5.610234502796652284e-02, + 5.605492830272397475e-02, + 5.600742893041402853e-02, + 5.595984700207511792e-02, + 5.591218260886120922e-02, + 5.586443584204182217e-02, + 5.581660679300166905e-02, + 5.576869555324061312e-02, + 5.572070221437371712e-02, + 5.567262686813057720e-02, + 5.562446960635576698e-02, + 5.557623052100821304e-02, + 5.552790970416122268e-02, + 5.547950724800197048e-02, + 5.543102324483224763e-02, + 5.538245778706716443e-02, + 5.533381096723598291e-02, + 5.528508287798087478e-02, + 5.523627361205758757e-02, + 5.518738326233544461e-02, + 5.513841192179637363e-02, + 5.508935968353532303e-02, + 5.504022664075960275e-02, + 5.499101288678934218e-02, + 5.494171851505726123e-02, + 5.489234361910780291e-02, + 5.484288829259760523e-02, + 5.479335262929493217e-02, + 5.474373672308031208e-02, + 5.469404066794493480e-02, + 5.464426455799206717e-02, + 5.459440848743577629e-02, + 5.454447255060156791e-02, + 5.449445684192509576e-02, + 5.444436145595336202e-02, + 5.439418648734330869e-02, + 5.434393203086274049e-02, + 5.429359818138908972e-02, + 5.424318503391040852e-02, + 5.419269268352389785e-02, + 5.414212122543697603e-02, + 5.409147075496628654e-02, + 5.404074136753813512e-02, + 5.398993315868720611e-02, + 5.393904622405804039e-02, + 5.388808065940341868e-02, + 5.383703656058484721e-02, + 5.378591402357282836e-02, + 5.373471314444529939e-02, + 5.368343401938924231e-02, + 5.363207674469887970e-02, + 5.358064141677650744e-02, + 5.352912813213222404e-02, + 5.347753698738307027e-02, + 5.342586807925400749e-02, + 5.337412150457663401e-02, + 5.332229736028994138e-02, + 5.327039574343888501e-02, + 5.321841675117598702e-02, + 5.316636048075944199e-02, + 5.311422702955387321e-02, + 5.306201649503061724e-02, + 5.300972897476620427e-02, + 5.295736456644251078e-02, + 5.290492336784832078e-02, + 5.285240547687656415e-02, + 5.279981099152607910e-02, + 5.274714000990050194e-02, + 5.269439263020838510e-02, + 5.264156895076309989e-02, + 5.258866906998211493e-02, + 5.253569308638787044e-02, + 5.248264109860659166e-02, + 5.242951320536841375e-02, + 5.237630950550757614e-02, + 5.232303009796211019e-02, + 5.226967508177290250e-02, + 5.221624455608476351e-02, + 5.216273862014558782e-02, + 5.210915737330573672e-02, + 5.205550091501891241e-02, + 5.200176934484127683e-02, + 5.194796276243101446e-02, + 5.189408126754919970e-02, + 5.184012496005863113e-02, + 5.178609393992416460e-02, + 5.173198830721230379e-02, + 5.167780816209111699e-02, + 5.162355360483014688e-02, + 5.156922473579986926e-02, + 5.151482165547226211e-02, + 5.146034446441987570e-02, + 5.140579326331576326e-02, + 5.135116815293402914e-02, + 5.129646923414850346e-02, + 5.124169660793369274e-02, + 5.118685037536339910e-02, + 5.113193063761219126e-02, + 5.107693749595326738e-02, + 5.102187105176012039e-02, + 5.096673140650480327e-02, + 5.091151866175894908e-02, + 5.085623291919275091e-02, + 5.080087428057553089e-02, + 5.074544284777495612e-02, + 5.068993872275697615e-02, + 5.063436200758578143e-02, + 5.057871280442387957e-02, + 5.052299121553131822e-02, + 5.046719734326599732e-02, + 5.041133129008294744e-02, + 5.035539315853504450e-02, + 5.029938305127179543e-02, + 5.024330107104010845e-02, + 5.018714732068339096e-02, + 5.013092190314184793e-02, + 5.007462492145176025e-02, + 5.001825647874581088e-02, + 4.996181667825300848e-02, + 4.990530562329784786e-02, + 4.984872341730085116e-02, + 4.979207016377780459e-02, + 4.973534596633998051e-02, + 4.967855092869404715e-02, + 4.962168515464071561e-02, + 4.956474874807702963e-02, + 4.950774181299291005e-02, + 4.945066445347434669e-02, + 4.939351677370024812e-02, + 4.933629887794480778e-02, + 4.927901087057492274e-02, + 4.922165285605227536e-02, + 4.916422493893132101e-02, + 4.910672722386032890e-02, + 4.904915981558033433e-02, + 4.899152281892584643e-02, + 4.893381633882377263e-02, + 4.887604048029381421e-02, + 4.881819534844816788e-02, + 4.876028104849126910e-02, + 4.870229768571975038e-02, + 4.864424536552172662e-02, + 4.858612419337757227e-02, + 4.852793427485885963e-02, + 4.846967571562876137e-02, + 4.841134862144134271e-02, + 4.835295309814165166e-02, + 4.829448925166580919e-02, + 4.823595718804060684e-02, + 4.817735701338290988e-02, + 4.811868883390012230e-02, + 4.805995275588965943e-02, + 4.800114888573878136e-02, + 4.794227732992429464e-02, + 4.788333819501323224e-02, + 4.782433158766098008e-02, + 4.776525761461283826e-02, + 4.770611638270255001e-02, + 4.764690799885328704e-02, + 4.758763257007622705e-02, + 4.752829020347125455e-02, + 4.746888100622639189e-02, + 4.740940508561763966e-02, + 4.734986254900939995e-02, + 4.729025350385309551e-02, + 4.723057805768773876e-02, + 4.717083631814002198e-02, + 4.711102839292354016e-02, + 4.705115438983901999e-02, + 4.699121441677368838e-02, + 4.693120858170117538e-02, + 4.687113699268218026e-02, + 4.681099975786287559e-02, + 4.675079698547592727e-02, + 4.669052878383987693e-02, + 4.663019526135862847e-02, + 4.656979652652144808e-02, + 4.650933268790324870e-02, + 4.644880385416384760e-02, + 4.638821013404804267e-02, + 4.632755163638501567e-02, + 4.626682847008935229e-02, + 4.620604074415867596e-02, + 4.614518856767588911e-02, + 4.608427204980741071e-02, + 4.602329129980362726e-02, + 4.596224642699796997e-02, + 4.590113754080822617e-02, + 4.583996475073425642e-02, + 4.577872816636011782e-02, + 4.571742789735203788e-02, + 4.565606405345892793e-02, + 4.559463674451223747e-02, + 4.553314608042612066e-02, + 4.547159217119613878e-02, + 4.540997512690028021e-02, + 4.534829505769791269e-02, + 4.528655207383002618e-02, + 4.522474628561960752e-02, + 4.516287780346958658e-02, + 4.510094673786484154e-02, + 4.503895319937069319e-02, + 4.497689729863293268e-02, + 4.491477914637789087e-02, + 4.485259885341236902e-02, + 4.479035653062277827e-02, + 4.472805228897564628e-02, + 4.466568623951669426e-02, + 4.460325849337180154e-02, + 4.454076916174579126e-02, + 4.447821835592240258e-02, + 4.441560618726441562e-02, + 4.435293276721347794e-02, + 4.429019820728947315e-02, + 4.422740261909081927e-02, + 4.416454611429407318e-02, + 4.410162880465331309e-02, + 4.403865080200126264e-02, + 4.397561221824712596e-02, + 4.391251316537842647e-02, + 4.384935375545925135e-02, + 4.378613410063104255e-02, + 4.372285431311198622e-02, + 4.365951450519653387e-02, + 4.359611478925617956e-02, + 4.353265527773812760e-02, + 4.346913608316568117e-02, + 4.340555731813862395e-02, + 4.334191909533140902e-02, + 4.327822152749470630e-02, + 4.321446472745422984e-02, + 4.315064880811071008e-02, + 4.308677388244008116e-02, + 4.302284006349252343e-02, + 4.295884746439302543e-02, + 4.289479619834084961e-02, + 4.283068637860940053e-02, + 4.276651811854599583e-02, + 4.270229153157180380e-02, + 4.263800673118157275e-02, + 4.257366383094281920e-02, + 4.250926294449747234e-02, + 4.244480418555914708e-02, + 4.238028766791494123e-02, + 4.231571350542447790e-02, + 4.225108181201967655e-02, + 4.218639270170465583e-02, + 4.212164628855573356e-02, + 4.205684268672092024e-02, + 4.199198201042007861e-02, + 4.192706437394397995e-02, + 4.186208989165535882e-02, + 4.179705867798730323e-02, + 4.173197084744417751e-02, + 4.166682651460123371e-02, + 4.160162579410358469e-02, + 4.153636880066716164e-02, + 4.147105564907785369e-02, + 4.140568645419123034e-02, + 4.134026133093293698e-02, + 4.127478039429757078e-02, + 4.120924375934965217e-02, + 4.114365154122257007e-02, + 4.107800385511856112e-02, + 4.101230081630884150e-02, + 4.094654254013296857e-02, + 4.088072914199894492e-02, + 4.081486073738274656e-02, + 4.074893744182861433e-02, + 4.068295937094841552e-02, + 4.061692664042148432e-02, + 4.055083936599476746e-02, + 4.048469766348206100e-02, + 4.041850164876472501e-02, + 4.035225143779005985e-02, + 4.028594714657295073e-02, + 4.021958889119382763e-02, + 4.015317678780003924e-02, + 4.008671095260434719e-02, + 4.002019150188559915e-02, + 3.995361855198851370e-02, + 3.988699221932283379e-02, + 3.982031262036384023e-02, + 3.975357987165178270e-02, + 3.968679408979136625e-02, + 3.961995539145282685e-02, + 3.955306389336993994e-02, + 3.948611971234129020e-02, + 3.941912296522928627e-02, + 3.935207376896057707e-02, + 3.928497224052495546e-02, + 3.921781849697576761e-02, + 3.915061265543030161e-02, + 3.908335483306811520e-02, + 3.901604514713215982e-02, + 3.894868371492783005e-02, + 3.888127065382314396e-02, + 3.881380608124846560e-02, + 3.874629011469610945e-02, + 3.867872287172049311e-02, + 3.861110446993745726e-02, + 3.854343502702484159e-02, + 3.847571466072126356e-02, + 3.840794348882688863e-02, + 3.834012162920250044e-02, + 3.827224919977000039e-02, + 3.820432631851138072e-02, + 3.813635310346943225e-02, + 3.806832967274662027e-02, + 3.800025614450566053e-02, + 3.793213263696884607e-02, + 3.786395926841826937e-02, + 3.779573615719524632e-02, + 3.772746342170011508e-02, + 3.765914118039226377e-02, + 3.759076955179008195e-02, + 3.752234865446999607e-02, + 3.745387860706746175e-02, + 3.738535952827556907e-02, + 3.731679153684563932e-02, + 3.724817475158666291e-02, + 3.717950929136523003e-02, + 3.711079527510558612e-02, + 3.704203282178872986e-02, + 3.697322205045285720e-02, + 3.690436308019295203e-02, + 3.683545603016058489e-02, + 3.676650101956362854e-02, + 3.669749816766625095e-02, + 3.662844759378879045e-02, + 3.655934941730717980e-02, + 3.649020375765257146e-02, + 3.642101073431219110e-02, + 3.635177046682813023e-02, + 3.628248307479772089e-02, + 3.621314867787261277e-02, + 3.614376739575951569e-02, + 3.607433934821958899e-02, + 3.600486465506764350e-02, + 3.593534343617337673e-02, + 3.586577581145945770e-02, + 3.579616190090267186e-02, + 3.572650182453302597e-02, + 3.565679570243376201e-02, + 3.558704365474121140e-02, + 3.551724580164458689e-02, + 3.544740226338576050e-02, + 3.537751316025834758e-02, + 3.530757861260945540e-02, + 3.523759874083701865e-02, + 3.516757366539129820e-02, + 3.509750350677431907e-02, + 3.502738838553919043e-02, + 3.495722842229066069e-02, + 3.488702373768427095e-02, + 3.481677445242634811e-02, + 3.474648068727383826e-02, + 3.467614256303408471e-02, + 3.460576020056515406e-02, + 3.453533372077439295e-02, + 3.446486324461955214e-02, + 3.439434889310758608e-02, + 3.432379078729535377e-02, + 3.425318904828855704e-02, + 3.418254379724208758e-02, + 3.411185515535961749e-02, + 3.404112324389373112e-02, + 3.397034818414480795e-02, + 3.389953009746213275e-02, + 3.382866910524239684e-02, + 3.375776532893085685e-02, + 3.368681889002000940e-02, + 3.361582991004958415e-02, + 3.354479851060693935e-02, + 3.347372481332599320e-02, + 3.340260893988820229e-02, + 3.333145101202093091e-02, + 3.326025115149827682e-02, + 3.318900948014090468e-02, + 3.311772611981474157e-02, + 3.304640119243243412e-02, + 3.297503481995137098e-02, + 3.290362712437513992e-02, + 3.283217822775203604e-02, + 3.276068825217583885e-02, + 3.268915731978463274e-02, + 3.261758555276127181e-02, + 3.254597307333346318e-02, + 3.247432000377284411e-02, + 3.240262646639460731e-02, + 3.233089258355882623e-02, + 3.225911847766821383e-02, + 3.218730427116943404e-02, + 3.211545008655208866e-02, + 3.204355604634909205e-02, + 3.197162227313599114e-02, + 3.189964888953100708e-02, + 3.182763601819471599e-02, + 3.175558378182979230e-02, + 3.168349230318137644e-02, + 3.161136170503602710e-02, + 3.153919211022189473e-02, + 3.146698364160890188e-02, + 3.139473642210763998e-02, + 3.132245057467017424e-02, + 3.125012622228925951e-02, + 3.117776348799799688e-02, + 3.110536249487054483e-02, + 3.103292336602034643e-02, + 3.096044622460157950e-02, + 3.088793119380787641e-02, + 3.081537839687258432e-02, + 3.074278795706857775e-02, + 3.067015999770758214e-02, + 3.059749464214062825e-02, + 3.052479201375721610e-02, + 3.045205223598593594e-02, + 3.037927543229318114e-02, + 3.030646172618399470e-02, + 3.023361124120127127e-02, + 3.016072410092573639e-02, + 3.008780042897519005e-02, + 3.001484034900565867e-02, + 2.994184398470949721e-02, + 2.986881145981700597e-02, + 2.979574289809417201e-02, + 2.972263842334461892e-02, + 2.964949815940718172e-02, + 2.957632223015804057e-02, + 2.950311075950869111e-02, + 2.942986387140629836e-02, + 2.935658168983410962e-02, + 2.928326433880999030e-02, + 2.920991194238781175e-02, + 2.913652462465578588e-02, + 2.906310250973696135e-02, + 2.898964572178935883e-02, + 2.891615438500470467e-02, + 2.884262862360955845e-02, + 2.876906856186384198e-02, + 2.869547432406126253e-02, + 2.862184603452966325e-02, + 2.854818381762948623e-02, + 2.847448779775477168e-02, + 2.840075809933246404e-02, + 2.832699484682191585e-02, + 2.825319816471543941e-02, + 2.817936817753737347e-02, + 2.810550500984434694e-02, + 2.803160878622456068e-02, + 2.795767963129860284e-02, + 2.788371766971776272e-02, + 2.780972302616538036e-02, + 2.773569582535558367e-02, + 2.766163619203312884e-02, + 2.758754425097415669e-02, + 2.751342012698482567e-02, + 2.743926394490137435e-02, + 2.736507582959079102e-02, + 2.729085590594929403e-02, + 2.721660429890342819e-02, + 2.714232113340886432e-02, + 2.706800653445059351e-02, + 2.699366062704273289e-02, + 2.691928353622815434e-02, + 2.684487538707878637e-02, + 2.677043630469453164e-02, + 2.669596641420401983e-02, + 2.662146584076346273e-02, + 2.654693470955750076e-02, + 2.647237314579810666e-02, + 2.639778127472465138e-02, + 2.632315922160410535e-02, + 2.624850711173027165e-02, + 2.617382507042344958e-02, + 2.609911322303134357e-02, + 2.602437169492753666e-02, + 2.594960061151213235e-02, + 2.587480009821125151e-02, + 2.579997028047665425e-02, + 2.572511128378610762e-02, + 2.565022323364230319e-02, + 2.557530625557376258e-02, + 2.550036047513350862e-02, + 2.542538601789964131e-02, + 2.535038300947506026e-02, + 2.527535157548667713e-02, + 2.520029184158595684e-02, + 2.512520393344814737e-02, + 2.505008797677250876e-02, + 2.497494409728173714e-02, + 2.489977242072232214e-02, + 2.482457307286325618e-02, + 2.474934617949693313e-02, + 2.467409186643873889e-02, + 2.459881025952658298e-02, + 2.452350148462032961e-02, + 2.444816566760267540e-02, + 2.437280293437767142e-02, + 2.429741341087167036e-02, + 2.422199722303235506e-02, + 2.414655449682870728e-02, + 2.407108535825125406e-02, + 2.399558993331096096e-02, + 2.392006834804014451e-02, + 2.384452072849111565e-02, + 2.376894720073700895e-02, + 2.369334789087084933e-02, + 2.361772292500581225e-02, + 2.354207242927480737e-02, + 2.346639652982982285e-02, + 2.339069535284280660e-02, + 2.331496902450472253e-02, + 2.323921767102526958e-02, + 2.316344141863314193e-02, + 2.308764039357522058e-02, + 2.301181472211722215e-02, + 2.293596453054234929e-02, + 2.286008994515244253e-02, + 2.278419109226657857e-02, + 2.270826809822136874e-02, + 2.263232108937118098e-02, + 2.255635019208688391e-02, + 2.248035553275679402e-02, + 2.240433723778551683e-02, + 2.232829543359446042e-02, + 2.225223024662135313e-02, + 2.217614180332000071e-02, + 2.210003023015956122e-02, + 2.202389565362581486e-02, + 2.194773820021931471e-02, + 2.187155799645636514e-02, + 2.179535516886796018e-02, + 2.171912984400038715e-02, + 2.164288214841421018e-02, + 2.156661220868479403e-02, + 2.149032015140175250e-02, + 2.141400610316850084e-02, + 2.133767019060271719e-02, + 2.126131254033531565e-02, + 2.118493327901116094e-02, + 2.110853253328788190e-02, + 2.103211042983654452e-02, + 2.095566709534099278e-02, + 2.087920265649757801e-02, + 2.080271724001547459e-02, + 2.072621097261545531e-02, + 2.064968398103088007e-02, + 2.057313639200685287e-02, + 2.049656833229994077e-02, + 2.041997992867842712e-02, + 2.034337130792159692e-02, + 2.026674259681992760e-02, + 2.019009392217467960e-02, + 2.011342541079759114e-02, + 2.003673718951118690e-02, + 1.996002938514775810e-02, + 1.988330212455003201e-02, + 1.980655553457021448e-02, + 1.972978974207040617e-02, + 1.965300487392212733e-02, + 1.957620105700571406e-02, + 1.949937841821106424e-02, + 1.942253708443663490e-02, + 1.934567718258909177e-02, + 1.926879883958423911e-02, + 1.919190218234553130e-02, + 1.911498733780466266e-02, + 1.903805443290123786e-02, + 1.896110359458202943e-02, + 1.888413494980176188e-02, + 1.880714862552180372e-02, + 1.873014474871095153e-02, + 1.865312344634443426e-02, + 1.857608484540446483e-02, + 1.849902907287905018e-02, + 1.842195625576302856e-02, + 1.834486652105688995e-02, + 1.826775999576674483e-02, + 1.819063680690471974e-02, + 1.811349708148777410e-02, + 1.803634094653869605e-02, + 1.795916852908448214e-02, + 1.788197995615734004e-02, + 1.780477535479400505e-02, + 1.772755485203566725e-02, + 1.765031857492738165e-02, + 1.757306665051855052e-02, + 1.749579920586179227e-02, + 1.741851636801389214e-02, + 1.734121826403452887e-02, + 1.726390502098682639e-02, + 1.718657676593651068e-02, + 1.710923362595239902e-02, + 1.703187572810583444e-02, + 1.695450319947021736e-02, + 1.687711616712144966e-02, + 1.679971475813703957e-02, + 1.672229909959653191e-02, + 1.664486931858086965e-02, + 1.656742554217204011e-02, + 1.648996789745362651e-02, + 1.641249651151016273e-02, + 1.633501151142645325e-02, + 1.625751302428826706e-02, + 1.618000117718148070e-02, + 1.610247609719222053e-02, + 1.602493791140632839e-02, + 1.594738674690967042e-02, + 1.586982273078747785e-02, + 1.579224599012422903e-02, + 1.571465665200376394e-02, + 1.563705484350847580e-02, + 1.555944069171991823e-02, + 1.548181432371771409e-02, + 1.540417586658024418e-02, + 1.532652544738356999e-02, + 1.524886319320222991e-02, + 1.517118923110769187e-02, + 1.509350368816970295e-02, + 1.501580669145480100e-02, + 1.493809836802709005e-02, + 1.486037884494697918e-02, + 1.478264824927232046e-02, + 1.470490670805681480e-02, + 1.462715434835087404e-02, + 1.454939129720101559e-02, + 1.447161768164928648e-02, + 1.439383362873401968e-02, + 1.431603926548843594e-02, + 1.423823471894164472e-02, + 1.416042011611735874e-02, + 1.408259558403454278e-02, + 1.400476124970686728e-02, + 1.392691724014217397e-02, + 1.384906368234311257e-02, + 1.377120070330587441e-02, + 1.369332843002084125e-02, + 1.361544698947226260e-02, + 1.353755650863760346e-02, + 1.345965711448785136e-02, + 1.338174893398695088e-02, + 1.330383209409175503e-02, + 1.322590672175204610e-02, + 1.314797294390974806e-02, + 1.307003088749943316e-02, + 1.299208067944750654e-02, + 1.291412244667253587e-02, + 1.283615631608443254e-02, + 1.275818241458499640e-02, + 1.268020086906728253e-02, + 1.260221180641510341e-02, + 1.252421535350367425e-02, + 1.244621163719867966e-02, + 1.236820078435592503e-02, + 1.229018292182223505e-02, + 1.221215817643404519e-02, + 1.213412667501808165e-02, + 1.205608854439032228e-02, + 1.197804391135664712e-02, + 1.189999290271218091e-02, + 1.182193564524092362e-02, + 1.174387226571612340e-02, + 1.166580289089936932e-02, + 1.158772764754124364e-02, + 1.150964666238015431e-02, + 1.143156006214289533e-02, + 1.135346797354437089e-02, + 1.127537052328664476e-02, + 1.119726783805992387e-02, + 1.111916004454143597e-02, + 1.104104726939526479e-02, + 1.096292963927299365e-02, + 1.088480728081244429e-02, + 1.080668032063831878e-02, + 1.072854888536159054e-02, + 1.065041310157906727e-02, + 1.057227309587394949e-02, + 1.049412899481472726e-02, + 1.041598092495585499e-02, + 1.033782901283672104e-02, + 1.025967338498220104e-02, + 1.018151416790183221e-02, + 1.010335148809009785e-02, + 1.002518547202608905e-02, + 9.947016246172901005e-03, + 9.868843936978231521e-03, + 9.790668670873334950e-03, + 9.712490574273693542e-03, + 9.634309773577699049e-03, + 9.556126395167533968e-03, + 9.477940565408553980e-03, + 9.399752410649133555e-03, + 9.321562057220096967e-03, + 9.243369631435193606e-03, + 9.165175259590249701e-03, + 9.086979067963569037e-03, + 9.008781182815096822e-03, + 8.930581730387011224e-03, + 8.852380836902535091e-03, + 8.774178628566737387e-03, + 8.695975231565766447e-03, + 8.617770772066518647e-03, + 8.539565376217148410e-03, + 8.461359170145852163e-03, + 8.383152279961801623e-03, + 8.304944831754108164e-03, + 8.226736951591560876e-03, + 8.148528765523341266e-03, + 8.070320399578114270e-03, + 7.992111979763639670e-03, + 7.913903632067403535e-03, + 7.835695482455390035e-03, + 7.757487656872967020e-03, + 7.679280281243582376e-03, + 7.601073481469540309e-03, + 7.522867383431415880e-03, + 7.444662112987415759e-03, + 7.366457795974118948e-03, + 7.288254558205302380e-03, + 7.210052525472642609e-03, + 7.131851823544627274e-03, + 7.053652578167328782e-03, + 6.975454915063137099e-03, + 6.897258959931817923e-03, + 6.819064838448712050e-03, + 6.740872676266367741e-03, + 6.662682599012785187e-03, + 6.584494732292325500e-03, + 6.506309201684579678e-03, + 6.428126132745171778e-03, + 6.349945651004570632e-03, + 6.271767881968682255e-03, + 6.193592951118326827e-03, + 6.115420983908769446e-03, + 6.037252105770213664e-03, + 5.959086442106805749e-03, + 5.880924118297226229e-03, + 5.802765259693740997e-03, + 5.724609991622748618e-03, + 5.646458439383824496e-03, + 5.568310728250222205e-03, + 5.490166983468448489e-03, + 5.412027330257518191e-03, + 5.333891893809524984e-03, + 5.255760799289375083e-03, + 5.177634171833914688e-03, + 5.099512136552688049e-03, + 5.021394818526795159e-03, + 4.943282342809447727e-03, + 4.865174834425557183e-03, + 4.787072418371055536e-03, + 4.708975219613626556e-03, + 4.630883363091514889e-03, + 4.552796973714272853e-03, + 4.474716176361692721e-03, + 4.396641095884322795e-03, + 4.318571857103025054e-03, + 4.240508584808365400e-03, + 4.162451403761308413e-03, + 4.084400438692192131e-03, + 4.006355814300652587e-03, + 3.928317655256179791e-03, + 3.850286086196911227e-03, + 3.772261231730303192e-03, + 3.694243216432124659e-03, + 3.616232164847018454e-03, + 3.538228201487954826e-03, + 3.460231450835730537e-03, + 3.382242037339577758e-03, + 3.304260085416032156e-03, + 3.226285719449650206e-03, + 3.148319063791948404e-03, + 3.070360242761956213e-03, + 2.992409380645714295e-03, + 2.914466601695759728e-03, + 2.836532030131651196e-03, + 2.758605790138973692e-03, + 2.680688005870097024e-03, + 2.602778801442753344e-03, + 2.524878300940885858e-03, + 2.446986628414211679e-03, + 2.369103907877894398e-03, + 2.291230263312090450e-03, + 2.213365818662446118e-03, + 2.135510697839109601e-03, + 2.057665024717341643e-03, + 1.979828923136511994e-03, + 1.902002516900740603e-03, + 1.824185929777866980e-03, + 1.746379285499993382e-03, + 1.668582707762979568e-03, + 1.590796320225925427e-03, + 1.513020246511760560e-03, + 1.435254610206139914e-03, + 1.357499534858182776e-03, + 1.279755143979579169e-03, + 1.202021561044317507e-03, + 1.124298909489353324e-03, + 1.046587312713780733e-03, + 9.688868940784140264e-04, + 8.911977769063677288e-04, + 8.135200844819832347e-04, + 7.358539400515273603e-04, + 6.581994668221228867e-04, + 5.805567879624279207e-04, + 5.029260266015866043e-04, + 4.253073058297913273e-04, + 3.477007486977757005e-04, + 2.701064782162925664e-04, + 1.925246173566905780e-04, + 1.149552890498587685e-04, + 3.739861618690078964e-05, +-4.014527838191673045e-05, +-1.176762718463792454e-04, +-1.951942414378095389e-04, +-2.726990644277444971e-04, +-3.501906181294143594e-04, +-4.276687798969660984e-04, +-5.051334271265076146e-04, +-5.825844372554404372e-04, +-6.600216877634958960e-04, +-7.374450561721857022e-04, +-8.148544200453007895e-04, +-8.922496569894189378e-04, +-9.696306446533568173e-04, +-1.046997260729194126e-03, +-1.124349382951607889e-03, +-1.201686889098945278e-03, +-1.279009656992492316e-03, +-1.356317564497590712e-03, +-1.433610489523009027e-03, +-1.510888310021392834e-03, +-1.588150903990068327e-03, +-1.665398149470364480e-03, +-1.742629924547937654e-03, +-1.819846107353568273e-03, +-1.897046576062512251e-03, +-1.974231208895524045e-03, +-2.051399884118308269e-03, +-2.128552480042021026e-03, +-2.205688875023785554e-03, +-2.282808947466102856e-03, +-2.359912575817913784e-03, +-2.436999638573955022e-03, +-2.514070014275717520e-03, +-2.591123581510874473e-03, +-2.668160218914249725e-03, +-2.745179805167287379e-03, +-2.822182218998429103e-03, +-2.899167339184002736e-03, +-2.976135044547434730e-03, +-3.053085213959653467e-03, +-3.130017726339871190e-03, +-3.206932460654882307e-03, +-3.283829295920174043e-03, +-3.360708111199278095e-03, +-3.437568785604366069e-03, +-3.514411198296658878e-03, +-3.591235228485957064e-03, +-3.668040755431594899e-03, +-3.744827658441808940e-03, +-3.821595816874810096e-03, +-3.898345110138130062e-03, +-3.975075417689218939e-03, +-4.051786619035905798e-03, +-4.128478593735794566e-03, +-4.205151221397186896e-03, +-4.281804381679252605e-03, +-4.358437954291360071e-03, +-4.435051818994362530e-03, +-4.511645855599836531e-03, +-4.588219943971162673e-03, +-4.664773964022865538e-03, +-4.741307795721230386e-03, +-4.817821319084673523e-03, +-4.894314414183340706e-03, +-4.970786961139992723e-03, +-5.047238840129393035e-03, +-5.123669931379389378e-03, +-5.200080115170225073e-03, +-5.276469271835211236e-03, +-5.352837281761056373e-03, +-5.429184025387425762e-03, +-5.505509383207913762e-03, +-5.581813235769257989e-03, +-5.658095463672780864e-03, +-5.734355947573452003e-03, +-5.810594568180321023e-03, +-5.886811206257283428e-03, +-5.963005742622541974e-03, +-6.039178058149038616e-03, +-6.115328033764964519e-03, +-6.191455550453312494e-03, +-6.267560489252795540e-03, +-6.343642731257126063e-03, +-6.419702157616224113e-03, +-6.495738649535507878e-03, +-6.571752088276411503e-03, +-6.647742355156932396e-03, +-6.723709331551080449e-03, +-6.799652898889758414e-03, +-6.875572938660311738e-03, +-6.951469332407186896e-03, +-7.027341961732234965e-03, +-7.103190708294098397e-03, +-7.179015453809017670e-03, +-7.254816080051144402e-03, +-7.330592468852093792e-03, +-7.406344502101844945e-03, +-7.482072061748176219e-03, +-7.557775029797664419e-03, +-7.633453288314961428e-03, +-7.709106719423859319e-03, +-7.784735205306783819e-03, +-7.860338628205157732e-03, +-7.935916870419999422e-03, +-8.011469814311365095e-03, +-8.086997342299244787e-03, +-8.162499336863126079e-03, +-8.237975680542698395e-03, +-8.313426255937382894e-03, +-8.388850945707638715e-03, +-8.464249632573618565e-03, +-8.539622199316693543e-03, +-8.614968528778639556e-03, +-8.690288503862712843e-03, +-8.765582007532871089e-03, +-8.840848922814854155e-03, +-8.916089132795618558e-03, +-8.991302520624166669e-03, +-9.066488969511104362e-03, +-9.141648362729098976e-03, +-9.216780583613434427e-03, +-9.291885515561253139e-03, +-9.366963042032844938e-03, +-9.442013046550817856e-03, +-9.517035412701071312e-03, +-9.592030024132411001e-03, +-9.666996764556713695e-03, +-9.741935517749926443e-03, +-9.816846167551348395e-03, +-9.891728597863790398e-03, +-9.966582692654485723e-03, +-1.004140833595446904e-02, +-1.011620541185948713e-02, +-1.019097380452949411e-02, +-1.026571339818911806e-02, +-1.034042407712815366e-02, +-1.041510572570097590e-02, +-1.048975822832767975e-02, +-1.056438146949321803e-02, +-1.063897533374848561e-02, +-1.071353970570980765e-02, +-1.078807447005966647e-02, +-1.086257951154636497e-02, +-1.093705471498447775e-02, +-1.101149996525510252e-02, +-1.108591514730609962e-02, +-1.116030014615159056e-02, +-1.123465484687303367e-02, +-1.130897913461867757e-02, +-1.138327289460439387e-02, +-1.145753601211317585e-02, +-1.153176837249560681e-02, +-1.160596986117041519e-02, +-1.168014036362384662e-02, +-1.175427976541067523e-02, +-1.182838795215346295e-02, +-1.190246480954385705e-02, +-1.197651022334163262e-02, +-1.205052407937548010e-02, +-1.212450626354328632e-02, +-1.219845666181176499e-02, +-1.227237516021730673e-02, +-1.234626164486517588e-02, +-1.242011600193114115e-02, +-1.249393811766024223e-02, +-1.256772787836746459e-02, +-1.264148517043824083e-02, +-1.271520988032809850e-02, +-1.278890189456309209e-02, +-1.286256109974020720e-02, +-1.293618738252682622e-02, +-1.300978062966175880e-02, +-1.308334072795463987e-02, +-1.315686756428677447e-02, +-1.323036102561073873e-02, +-1.330382099895065229e-02, +-1.337724737140302475e-02, +-1.345064003013572360e-02, +-1.352399886238925958e-02, +-1.359732375547626458e-02, +-1.367061459678180560e-02, +-1.374387127376418272e-02, +-1.381709367395380673e-02, +-1.389028168495455226e-02, +-1.396343519444333964e-02, +-1.403655409017029107e-02, +-1.410963825995940543e-02, +-1.418268759170799968e-02, +-1.425570197338749817e-02, +-1.432868129304312385e-02, +-1.440162543879457135e-02, +-1.447453429883551086e-02, +-1.454740776143422128e-02, +-1.462024571493401350e-02, +-1.469304804775248795e-02, +-1.476581464838266911e-02, +-1.483854540539250588e-02, +-1.491124020742557246e-02, +-1.498389894320033972e-02, +-1.505652150151180410e-02, +-1.512910777123003397e-02, +-1.520165764130162675e-02, +-1.527417100074878777e-02, +-1.534664773867061224e-02, +-1.541908774424226303e-02, +-1.549149090671580499e-02, +-1.556385711541984421e-02, +-1.563618625976039705e-02, +-1.570847822922013387e-02, +-1.578073291335924458e-02, +-1.585295020181545778e-02, +-1.592512998430391583e-02, +-1.599727215061787569e-02, +-1.606937659062812260e-02, +-1.614144319428400393e-02, +-1.621347185161275267e-02, +-1.628546245272012583e-02, +-1.635741488779073050e-02, +-1.642932904708782615e-02, +-1.650120482095336974e-02, +-1.657304209980860199e-02, +-1.664484077415393989e-02, +-1.671660073456930976e-02, +-1.678832187171405352e-02, +-1.686000407632739367e-02, +-1.693164723922832571e-02, +-1.700325125131577075e-02, +-1.707481600356927642e-02, +-1.714634138704829169e-02, +-1.721782729289313488e-02, +-1.728927361232479587e-02, +-1.736068023664467247e-02, +-1.743204705723564937e-02, +-1.750337396556168185e-02, +-1.757466085316800042e-02, +-1.764590761168125313e-02, +-1.771711413281015085e-02, +-1.778828030834426685e-02, +-1.785940603015610459e-02, +-1.793049119019981055e-02, +-1.800153568051210407e-02, +-1.807253939321163197e-02, +-1.814350222050008232e-02, +-1.821442405466204215e-02, +-1.828530478806429313e-02, +-1.835614431315739023e-02, +-1.842694252247480124e-02, +-1.849769930863369438e-02, +-1.856841456433412987e-02, +-1.863908818236035408e-02, +-1.870972005558073359e-02, +-1.878031007694650617e-02, +-1.885085813949460495e-02, +-1.892136413634551775e-02, +-1.899182796070371382e-02, +-1.906224950585923630e-02, +-1.913262866518629715e-02, +-1.920296533214453302e-02, +-1.927325940027815529e-02, +-1.934351076321689719e-02, +-1.941371931467623241e-02, +-1.948388494845643484e-02, +-1.955400755844413641e-02, +-1.962408703861166087e-02, +-1.969412328301762757e-02, +-1.976411618580611873e-02, +-1.983406564120829274e-02, +-1.990397154354161049e-02, +-1.997383378720982497e-02, +-2.004365226670372716e-02, +-2.011342687660168729e-02, +-2.018315751156804852e-02, +-2.025284406635518425e-02, +-2.032248643580293959e-02, +-2.039208451483795481e-02, +-2.046163819847546597e-02, +-2.053114738181808716e-02, +-2.060061196005696232e-02, +-2.067003182847060999e-02, +-2.073940688242652611e-02, +-2.080873701738052833e-02, +-2.087802212887722789e-02, +-2.094726211254940504e-02, +-2.101645686411963976e-02, +-2.108560627939915985e-02, +-2.115471025428816015e-02, +-2.122376868477672540e-02, +-2.129278146694432716e-02, +-2.136174849696001118e-02, +-2.143066967108291088e-02, +-2.149954488566212935e-02, +-2.156837403713643755e-02, +-2.163715702203534638e-02, +-2.170589373697885682e-02, +-2.177458407867768550e-02, +-2.184322794393244588e-02, +-2.191182522963568483e-02, +-2.198037583277048096e-02, +-2.204887965041131895e-02, +-2.211733657972365930e-02, +-2.218574651796476060e-02, +-2.225410936248370733e-02, +-2.232242501072075058e-02, +-2.239069336020856060e-02, +-2.245891430857188328e-02, +-2.252708775352756793e-02, +-2.259521359288491071e-02, +-2.266329172454580737e-02, +-2.273132204650442356e-02, +-2.279930445684823573e-02, +-2.286723885375735801e-02, +-2.293512513550566984e-02, +-2.300296320045912279e-02, +-2.307075294707813459e-02, +-2.313849427391647534e-02, +-2.320618707962102123e-02, +-2.327383126293321516e-02, +-2.334142672268821328e-02, +-2.340897335781540189e-02, +-2.347647106733810954e-02, +-2.354391975037434595e-02, +-2.361131930613697208e-02, +-2.367866963393333232e-02, +-2.374597063316512269e-02, +-2.381322220333019143e-02, +-2.388042424402045047e-02, +-2.394757665492363088e-02, +-2.401467933582283540e-02, +-2.408173218659702061e-02, +-2.414873510722014352e-02, +-2.421568799776277134e-02, +-2.428259075839132863e-02, +-2.434944328936799324e-02, +-2.441624549105166075e-02, +-2.448299726389753864e-02, +-2.454969850845764925e-02, +-2.461634912538027131e-02, +-2.468294901541101885e-02, +-2.474949807939216817e-02, +-2.481599621826360846e-02, +-2.488244333306196057e-02, +-2.494883932492179476e-02, +-2.501518409507494378e-02, +-2.508147754485099551e-02, +-2.514771957567769542e-02, +-2.521391008908066209e-02, +-2.528004898668332126e-02, +-2.534613617020769691e-02, +-2.541217154147456733e-02, +-2.547815500240245556e-02, +-2.554408645500927388e-02, +-2.560996580141157095e-02, +-2.567579294382508343e-02, +-2.574156778456423988e-02, +-2.580729022604298303e-02, +-2.587296017077506463e-02, +-2.593857752137282424e-02, +-2.600414218054923274e-02, +-2.606965405111665024e-02, +-2.613511303598744714e-02, +-2.620051903817406658e-02, +-2.626587196078941297e-02, +-2.633117170704669940e-02, +-2.639641818025910761e-02, +-2.646161128384130409e-02, +-2.652675092130845139e-02, +-2.659183699627613168e-02, +-2.665686941246180747e-02, +-2.672184807368355175e-02, +-2.678677288386138722e-02, +-2.685164374701586032e-02, +-2.691646056726997374e-02, +-2.698122324884836762e-02, +-2.704593169607706626e-02, +-2.711058581338451554e-02, +-2.717518550530145446e-02, +-2.723973067646070015e-02, +-2.730422123159706102e-02, +-2.736865707554890503e-02, +-2.743303811325676494e-02, +-2.749736424976351873e-02, +-2.756163539021579817e-02, +-2.762585143986306252e-02, +-2.769001230405786218e-02, +-2.775411788825617523e-02, +-2.781816809801774051e-02, +-2.788216283900562045e-02, +-2.794610201698661742e-02, +-2.800998553783171433e-02, +-2.807381330751602955e-02, +-2.813758523211814730e-02, +-2.820130121782168237e-02, +-2.826496117091436069e-02, +-2.832856499778882431e-02, +-2.839211260494176048e-02, +-2.845560389897498765e-02, +-2.851903878659590302e-02, +-2.858241717461611556e-02, +-2.864573896995281643e-02, +-2.870900407962870618e-02, +-2.877221241077154365e-02, +-2.883536387061510012e-02, +-2.889845836649886784e-02, +-2.896149580586820232e-02, +-2.902447609627414535e-02, +-2.908739914537423338e-02, +-2.915026486093235183e-02, +-2.921307315081834652e-02, +-2.927582392300894648e-02, +-2.933851708558758015e-02, +-2.940115254674438225e-02, +-2.946373021477612791e-02, +-2.952624999808687797e-02, +-2.958871180518815244e-02, +-2.965111554469821928e-02, +-2.971346112534322889e-02, +-2.977574845595667638e-02, +-2.983797744547979358e-02, +-2.990014800296145886e-02, +-2.996226003755887365e-02, +-3.002431345853718084e-02, +-3.008630817526926696e-02, +-3.014824409723700430e-02, +-3.021012113403050495e-02, +-3.027193919534801672e-02, +-3.033369819099694664e-02, +-3.039539803089375339e-02, +-3.045703862506340606e-02, +-3.051861988363997052e-02, +-3.058014171686675511e-02, +-3.064160403509676514e-02, +-3.070300674879206104e-02, +-3.076434976852443839e-02, +-3.082563300497551811e-02, +-3.088685636893630931e-02, +-3.094801977130823278e-02, +-3.100912312310266650e-02, +-3.107016633544135153e-02, +-3.113114931955582657e-02, +-3.119207198678861787e-02, +-3.125293424859282299e-02, +-3.131373601653184707e-02, +-3.137447720228008635e-02, +-3.143515771762303568e-02, +-3.149577747445735099e-02, +-3.155633638479035663e-02, +-3.161683436074105152e-02, +-3.167727131454024792e-02, +-3.173764715852933627e-02, +-3.179796180516231835e-02, +-3.185821516700475947e-02, +-3.191840715673370521e-02, +-3.197853768713873612e-02, +-3.203860667112141264e-02, +-3.209861402169569833e-02, +-3.215855965198770317e-02, +-3.221844347523621088e-02, +-3.227826540479292183e-02, +-3.233802535412162726e-02, +-3.239772323679968036e-02, +-3.245735896651730928e-02, +-3.251693245707757557e-02, +-3.257644362239693614e-02, +-3.263589237650521557e-02, +-3.269527863354596692e-02, +-3.275460230777569454e-02, +-3.281386331356513086e-02, +-3.287306156539927804e-02, +-3.293219697787594380e-02, +-3.299126946570792723e-02, +-3.305027894372191549e-02, +-3.310922532685895564e-02, +-3.316810853017428118e-02, +-3.322692846883793655e-02, +-3.328568505813479794e-02, +-3.334437821346383779e-02, +-3.340300785033966519e-02, +-3.346157388439146424e-02, +-3.352007623136393083e-02, +-3.357851480711644687e-02, +-3.363688952762397544e-02, +-3.369520030897739382e-02, +-3.375344706738248046e-02, +-3.381162971916106680e-02, +-3.386974818075079441e-02, +-3.392780236870526767e-02, +-3.398579219969401211e-02, +-3.404371759050284912e-02, +-3.410157845803388904e-02, +-3.415937471930517721e-02, +-3.421710629145192917e-02, +-3.427477309172569098e-02, +-3.433237503749444336e-02, +-3.438991204624349679e-02, +-3.444738403557481843e-02, +-3.450479092320767743e-02, +-3.456213262697817312e-02, +-3.461940906483977620e-02, +-3.467662015486393939e-02, +-3.473376581523868190e-02, +-3.479084596427029635e-02, +-3.484786052038276599e-02, +-3.490480940211772298e-02, +-3.496169252813470518e-02, +-3.501850981721182227e-02, +-3.507526118824461775e-02, +-3.513194656024758167e-02, +-3.518856585235308199e-02, +-3.524511898381255809e-02, +-3.530160587399555627e-02, +-3.535802644239046527e-02, +-3.541438060860489789e-02, +-3.547066829236515673e-02, +-3.552688941351611618e-02, +-3.558304389202270046e-02, +-3.563913164796875255e-02, +-3.569515260155697173e-02, +-3.575110667311044016e-02, +-3.580699378307130448e-02, +-3.586281385200165012e-02, +-3.591856680058275186e-02, +-3.597425254961711394e-02, +-3.602987102002578462e-02, +-3.608542213285103467e-02, +-3.614090580925478913e-02, +-3.619632197051973754e-02, +-3.625167053804850131e-02, +-3.630695143336477859e-02, +-3.636216457811256714e-02, +-3.641730989405721208e-02, +-3.647238730308396959e-02, +-3.652739672719994279e-02, +-3.658233808853313812e-02, +-3.663721130933236120e-02, +-3.669201631196800789e-02, +-3.674675301893201573e-02, +-3.680142135283783617e-02, +-3.685602123641992800e-02, +-3.691055259253532561e-02, +-3.696501534416225809e-02, +-3.701940941440117622e-02, +-3.707373472647440549e-02, +-3.712799120372669431e-02, +-3.718217876962450624e-02, +-3.723629734775699834e-02, +-3.729034686183596570e-02, +-3.734432723569503648e-02, +-3.739823839329121241e-02, +-3.745208025870394586e-02, +-3.750585275613556313e-02, +-3.755955580991112569e-02, +-3.761318934447895057e-02, +-3.766675328441061732e-02, +-3.772024755440098187e-02, +-3.777367207926747572e-02, +-3.782702678395204188e-02, +-3.788031159351967769e-02, +-3.793352643315910794e-02, +-3.798667122818249337e-02, +-3.803974590402650624e-02, +-3.809275038625111603e-02, +-3.814568460054058863e-02, +-3.819854847270352793e-02, +-3.825134192867239713e-02, +-3.830406489450425417e-02, +-3.835671729638064076e-02, +-3.840929906060760318e-02, +-3.846181011361544944e-02, +-3.851425038195969985e-02, +-3.856661979232080262e-02, +-3.861891827150345374e-02, +-3.867114574643797098e-02, +-3.872330214417971789e-02, +-3.877538739190903444e-02, +-3.882740141693161173e-02, +-3.887934414667906097e-02, +-3.893121550870780323e-02, +-3.898301543070002706e-02, +-3.903474384046402845e-02, +-3.908640066593373208e-02, +-3.913798583516828189e-02, +-3.918949927635364400e-02, +-3.924094091780156585e-02, +-3.929231068795024234e-02, +-3.934360851536343462e-02, +-3.939483432873183699e-02, +-3.944598805687260512e-02, +-3.949706962872886334e-02, +-3.954807897337120348e-02, +-3.959901601999640114e-02, +-3.964988069792834552e-02, +-3.970067293661744962e-02, +-3.975139266564148288e-02, +-3.980203981470523122e-02, +-3.985261431364083701e-02, +-3.990311609240713292e-02, +-3.995354508109139752e-02, +-4.000390120990699599e-02, +-4.005418440919607248e-02, +-4.010439460942782919e-02, +-4.015453174119935909e-02, +-4.020459573523536140e-02, +-4.025458652238897428e-02, +-4.030450403364089357e-02, +-4.035434820009985157e-02, +-4.040411895300320688e-02, +-4.045381622371627822e-02, +-4.050343994373289958e-02, +-4.055299004467526752e-02, +-4.060246645829395512e-02, +-4.065186911646891110e-02, +-4.070119795120772516e-02, +-4.075045289464762632e-02, +-4.079963387905467115e-02, +-4.084874083682338980e-02, +-4.089777370047774363e-02, +-4.094673240267094477e-02, +-4.099561687618551165e-02, +-4.104442705393286650e-02, +-4.109316286895407094e-02, +-4.114182425441990920e-02, +-4.119041114363064526e-02, +-4.123892347001600900e-02, +-4.128736116713578597e-02, +-4.133572416867953986e-02, +-4.138401240846645290e-02, +-4.143222582044631813e-02, +-4.148036433869869977e-02, +-4.152842789743340507e-02, +-4.157641643099022066e-02, +-4.162432987384018929e-02, +-4.167216816058346568e-02, +-4.171993122595202275e-02, +-4.176761900480763234e-02, +-4.181523143214311428e-02, +-4.186276844308189221e-02, +-4.191022997287817409e-02, +-4.195761595691784723e-02, +-4.200492633071667425e-02, +-4.205216102992228450e-02, +-4.209931999031346628e-02, +-4.214640314780011832e-02, +-4.219341043842326361e-02, +-4.224034179835592373e-02, +-4.228719716390227923e-02, +-4.233397647149780840e-02, +-4.238067965771043916e-02, +-4.242730665923971634e-02, +-4.247385741291588579e-02, +-4.252033185570275320e-02, +-4.256672992469491545e-02, +-4.261305155711993253e-02, +-4.265929669033666216e-02, +-4.270546526183673780e-02, +-4.275155720924431885e-02, +-4.279757247031507061e-02, +-4.284351098293814192e-02, +-4.288937268513463852e-02, +-4.293515751505858763e-02, +-4.298086541099637586e-02, +-4.302649631136748476e-02, +-4.307205015472430343e-02, +-4.311752687975195508e-02, +-4.316292642526847745e-02, +-4.320824873022548890e-02, +-4.325349373370731415e-02, +-4.329866137493156020e-02, +-4.334375159324957427e-02, +-4.338876432814580547e-02, +-4.343369951923777006e-02, +-4.347855710627739761e-02, +-4.352333702914962243e-02, +-4.356803922787312600e-02, +-4.361266364260085043e-02, +-4.365721021361902709e-02, +-4.370167888134796064e-02, +-4.374606958634202208e-02, +-4.379038226928971128e-02, +-4.383461687101372628e-02, +-4.387877333247046374e-02, +-4.392285159475150386e-02, +-4.396685159908210461e-02, +-4.401077328682202056e-02, +-4.405461659946584979e-02, +-4.409838147864254126e-02, +-4.414206786611574868e-02, +-4.418567570378387904e-02, +-4.422920493367980127e-02, +-4.427265549797225475e-02, +-4.431602733896343460e-02, +-4.435932039909168401e-02, +-4.440253462093015496e-02, +-4.444566994718717606e-02, +-4.448872632070582228e-02, +-4.453170368446525418e-02, +-4.457460198157925380e-02, +-4.461742115529745284e-02, +-4.466016114900501349e-02, +-4.470282190622257290e-02, +-4.474540337060622236e-02, +-4.478790548594808324e-02, +-4.483032819617577269e-02, +-4.487267144535318081e-02, +-4.491493517767936039e-02, +-4.495711933749014372e-02, +-4.499922386925699069e-02, +-4.504124871758752313e-02, +-4.508319382722555252e-02, +-4.512505914305126736e-02, +-4.516684461008123319e-02, +-4.520855017346771254e-02, +-4.525017577850037886e-02, +-4.529172137060508141e-02, +-4.533318689534380358e-02, +-4.537457229841566214e-02, +-4.541587752565647701e-02, +-4.545710252303872961e-02, +-4.549824723667152127e-02, +-4.553931161280114215e-02, +-4.558029559781111989e-02, +-4.562119913822143547e-02, +-4.566202218068942525e-02, +-4.570276467200968390e-02, +-4.574342655911371736e-02, +-4.578400778907081026e-02, +-4.582450830908717937e-02, +-4.586492806650661197e-02, +-4.590526700881057687e-02, +-4.594552508361755827e-02, +-4.598570223868440887e-02, +-4.602579842190478859e-02, +-4.606581358131065645e-02, +-4.610574766507159056e-02, +-4.614560062149517666e-02, +-4.618537239902652941e-02, +-4.622506294624925682e-02, +-4.626467221188458601e-02, +-4.630420014479191132e-02, +-4.634364669396873193e-02, +-4.638301180855131794e-02, +-4.642229543781336426e-02, +-4.646149753116739223e-02, +-4.650061803816422923e-02, +-4.653965690849326542e-02, +-4.657861409198205127e-02, +-4.661748953859702616e-02, +-4.665628319844329630e-02, +-4.669499502176427397e-02, +-4.673362495894248930e-02, +-4.677217296049895195e-02, +-4.681063897709418498e-02, +-4.684902295952672602e-02, +-4.688732485873445960e-02, +-4.692554462579473507e-02, +-4.696368221192322862e-02, +-4.700173756847527556e-02, +-4.703971064694540544e-02, +-4.707760139896684931e-02, +-4.711540977631302474e-02, +-4.715313573089595367e-02, +-4.719077921476754617e-02, +-4.722834018011873997e-02, +-4.726581857928025682e-02, +-4.730321436472269270e-02, +-4.734052748905592106e-02, +-4.737775790502919693e-02, +-4.741490556553242669e-02, +-4.745197042359450973e-02, +-4.748895243238444169e-02, +-4.752585154521111327e-02, +-4.756266771552383754e-02, +-4.759940089691069159e-02, +-4.763605104310143085e-02, +-4.767261810796485227e-02, +-4.770910204551006423e-02, +-4.774550280988653500e-02, +-4.778182035538423161e-02, +-4.781805463643278020e-02, +-4.785420560760292319e-02, +-4.789027322360546457e-02, +-4.792625743929167237e-02, +-4.796215820965314680e-02, +-4.799797548982256273e-02, +-4.803370923507283008e-02, +-4.806935940081784320e-02, +-4.810492594261182864e-02, +-4.814040881614994882e-02, +-4.817580797726830899e-02, +-4.821112338194355473e-02, +-4.824635498629366998e-02, +-4.828150274657772023e-02, +-4.831656661919482565e-02, +-4.835154656068643003e-02, +-4.838644252773407345e-02, +-4.842125447716098818e-02, +-4.845598236593141872e-02, +-4.849062615115089236e-02, +-4.852518579006655230e-02, +-4.855966124006619311e-02, +-4.859405245867967627e-02, +-4.862835940357776443e-02, +-4.866258203257311371e-02, +-4.869672030361964221e-02, +-4.873077417481298107e-02, +-4.876474360439041894e-02, +-4.879862855073077016e-02, +-4.883242897235448576e-02, +-4.886614482792416003e-02, +-4.889977607624360761e-02, +-4.893332267625889742e-02, +-4.896678458705793630e-02, +-4.900016176787035105e-02, +-4.903345417806807827e-02, +-4.906666177716458715e-02, +-4.909978452481603139e-02, +-4.913282238082000014e-02, +-4.916577530511660049e-02, +-4.919864325778795788e-02, +-4.923142619905868100e-02, +-4.926412408929538300e-02, +-4.929673688900706313e-02, +-4.932926455884500960e-02, +-4.936170705960307020e-02, +-4.939406435221723596e-02, +-4.942633639776641136e-02, +-4.945852315747144984e-02, +-4.949062459269617381e-02, +-4.952264066494711792e-02, +-4.955457133587272411e-02, +-4.958641656726479191e-02, +-4.961817632105755549e-02, +-4.964985055932804453e-02, +-4.968143924429618136e-02, +-4.971294233832436460e-02, +-4.974435980391848922e-02, +-4.977569160372623952e-02, +-4.980693770053960107e-02, +-4.983809805729247366e-02, +-4.986917263706258652e-02, +-4.990016140306981901e-02, +-4.993106431867763706e-02, +-4.996188134739292658e-02, +-4.999261245286509836e-02, +-5.002325759888728157e-02, +-5.005381674939549802e-02, +-5.008428986846908543e-02, +-5.011467692033088478e-02, +-5.014497786934671297e-02, +-5.017519268002623711e-02, +-5.020532131702191286e-02, +-5.023536374513021957e-02, +-5.026531992929098025e-02, +-5.029518983458706322e-02, +-5.032497342624548536e-02, +-5.035467066963638522e-02, +-5.038428153027395967e-02, +-5.041380597381545786e-02, +-5.044324396606238853e-02, +-5.047259547295959714e-02, +-5.050186046059578632e-02, +-5.053103889520325215e-02, +-5.056013074315849481e-02, +-5.058913597098151776e-02, +-5.061805454533638282e-02, +-5.064688643303076609e-02, +-5.067563160101652003e-02, +-5.070429001638937505e-02, +-5.073286164638880769e-02, +-5.076134645839915777e-02, +-5.078974441994753286e-02, +-5.081805549870622302e-02, +-5.084627966249102154e-02, +-5.087441687926227973e-02, +-5.090246711712378275e-02, +-5.093043034432441496e-02, +-5.095830652925694565e-02, +-5.098609564045779308e-02, +-5.101379764660845390e-02, +-5.104141251653477457e-02, +-5.106894021920615340e-02, +-5.109638072373690054e-02, +-5.112373399938566904e-02, +-5.115100001555572540e-02, +-5.117817874179425575e-02, +-5.120527014779325398e-02, +-5.123227420338918869e-02, +-5.125919087856293382e-02, +-5.128602014344005311e-02, +-5.131276196829060582e-02, +-5.133941632352932716e-02, +-5.136598317971558664e-02, +-5.139246250755306195e-02, +-5.141885427789076590e-02, +-5.144515846172154072e-02, +-5.147137503018384130e-02, +-5.149750395456013929e-02, +-5.152354520627812351e-02, +-5.154949875691038075e-02, +-5.157536457817366721e-02, +-5.160114264193025463e-02, +-5.162683292018689640e-02, +-5.165243538509541044e-02, +-5.167795000895247098e-02, +-5.170337676419962253e-02, +-5.172871562342344631e-02, +-5.175396655935523421e-02, +-5.177912954487179364e-02, +-5.180420455299449695e-02, +-5.182919155688995444e-02, +-5.185409052986987566e-02, +-5.187890144539064607e-02, +-5.190362427705445814e-02, +-5.192825899860790267e-02, +-5.195280558394303749e-02, +-5.197726400709729022e-02, +-5.200163424225284076e-02, +-5.202591626373745393e-02, +-5.205011004602379254e-02, +-5.207421556372979210e-02, +-5.209823279161891751e-02, +-5.212216170459945536e-02, +-5.214600227772564489e-02, +-5.216975448619608213e-02, +-5.219341830535585008e-02, +-5.221699371069404849e-02, +-5.224048067784645144e-02, +-5.226387918259332160e-02, +-5.228718920086058292e-02, +-5.231041070871946669e-02, +-5.233354368238693488e-02, +-5.235658809822502091e-02, +-5.237954393274142639e-02, +-5.240241116258907705e-02, +-5.242518976456694846e-02, +-5.244787971561878231e-02, +-5.247048099283423139e-02, +-5.249299357344867217e-02, +-5.251541743484264280e-02, +-5.253775255454232879e-02, +-5.255999891021945203e-02, +-5.258215647969152057e-02, +-5.260422524092157881e-02, +-5.262620517201824916e-02, +-5.264809625123566261e-02, +-5.266989845697339634e-02, +-5.269161176777750755e-02, +-5.271323616233866000e-02, +-5.273477161949405995e-02, +-5.275621811822599205e-02, +-5.277757563766289489e-02, +-5.279884415707830625e-02, +-5.282002365589222315e-02, +-5.284111411366988753e-02, +-5.286211551012239690e-02, +-5.288302782510671124e-02, +-5.290385103862511873e-02, +-5.292458513082640148e-02, +-5.294523008200456571e-02, +-5.296578587259943155e-02, +-5.298625248319684816e-02, +-5.300662989452850637e-02, +-5.302691808747142521e-02, +-5.304711704304896497e-02, +-5.306722674243033455e-02, +-5.308724716693006412e-02, +-5.310717829800912920e-02, +-5.312702011727376411e-02, +-5.314677260647683588e-02, +-5.316643574751628298e-02, +-5.318600952243637825e-02, +-5.320549391342702800e-02, +-5.322488890282442431e-02, +-5.324419447311003195e-02, +-5.326341060691183737e-02, +-5.328253728700365482e-02, +-5.330157449630455041e-02, +-5.332052221788026458e-02, +-5.333938043494217823e-02, +-5.335814913084754169e-02, +-5.337682828909957877e-02, +-5.339541789334731337e-02, +-5.341391792738629102e-02, +-5.343232837515689282e-02, +-5.345064922074686808e-02, +-5.346888044838855186e-02, +-5.348702204246116171e-02, +-5.350507398748939603e-02, +-5.352303626814422510e-02, +-5.354090886924227355e-02, +-5.355869177574625745e-02, +-5.357638497276503986e-02, +-5.359398844555313818e-02, +-5.361150217951132779e-02, +-5.362892616018596903e-02, +-5.364626037326986757e-02, +-5.366350480460130301e-02, +-5.368065944016502111e-02, +-5.369772426609149829e-02, +-5.371469926865703182e-02, +-5.373158443428418390e-02, +-5.374837974954135844e-02, +-5.376508520114281486e-02, +-5.378170077594879306e-02, +-5.379822646096575622e-02, +-5.381466224334615495e-02, +-5.383100811038789985e-02, +-5.384726404953523587e-02, +-5.386343004837852028e-02, +-5.387950609465366747e-02, +-5.389549217624295396e-02, +-5.391138828117423426e-02, +-5.392719439762175271e-02, +-5.394291051390533859e-02, +-5.395853661849056571e-02, +-5.397407269998957119e-02, +-5.398951874716005628e-02, +-5.400487474890577899e-02, +-5.402014069427622800e-02, +-5.403531657246700426e-02, +-5.405040237281949489e-02, +-5.406539808482133808e-02, +-5.408030369810574306e-02, +-5.409511920245165667e-02, +-5.410984458778427680e-02, +-5.412447984417487201e-02, +-5.413902496184024027e-02, +-5.415347993114280611e-02, +-5.416784474259141169e-02, +-5.418211938684076856e-02, +-5.419630385469097200e-02, +-5.421039813708843080e-02, +-5.422440222512480562e-02, +-5.423831611003853553e-02, +-5.425213978321286740e-02, +-5.426587323617777792e-02, +-5.427951646060846097e-02, +-5.429306944832578558e-02, +-5.430653219129717713e-02, +-5.431990468163518104e-02, +-5.433318691159811503e-02, +-5.434637887359090175e-02, +-5.435948056016284835e-02, +-5.437249196401022083e-02, +-5.438541307797444685e-02, +-5.439824389504282348e-02, +-5.441098440834830213e-02, +-5.442363461116951628e-02, +-5.443619449693076762e-02, +-5.444866405920245622e-02, +-5.446104329169992875e-02, +-5.447333218828495638e-02, +-5.448553074296422910e-02, +-5.449763894989067409e-02, +-5.450965680336247038e-02, +-5.452158429782361093e-02, +-5.453342142786365976e-02, +-5.454516818821739110e-02, +-5.455682457376569150e-02, +-5.456839057953492833e-02, +-5.457986620069670697e-02, +-5.459125143256816914e-02, +-5.460254627061235377e-02, +-5.461375071043775287e-02, +-5.462486474779753437e-02, +-5.463588837859158220e-02, +-5.464682159886424806e-02, +-5.465766440480556571e-02, +-5.466841679275165344e-02, +-5.467907875918303490e-02, +-5.468965030072631128e-02, +-5.470013141415298180e-02, +-5.471052209638041508e-02, +-5.472082234447084997e-02, +-5.473103215563222823e-02, +-5.474115152721766714e-02, +-5.475118045672529993e-02, +-5.476111894179902517e-02, +-5.477096698022750065e-02, +-5.478072456994509398e-02, +-5.479039170903092504e-02, +-5.479996839570953904e-02, +-5.480945462835089960e-02, +-5.481885040546986138e-02, +-5.482815572572622559e-02, +-5.483737058792535757e-02, +-5.484649499101736103e-02, +-5.485552893409754993e-02, +-5.486447241640626804e-02, +-5.487332543732917345e-02, +-5.488208799639671814e-02, +-5.489076009328419659e-02, +-5.489934172781195387e-02, +-5.490783289994545513e-02, +-5.491623360979519530e-02, +-5.492454385761618568e-02, +-5.493276364380858534e-02, +-5.494089296891740276e-02, +-5.494893183363260686e-02, +-5.495688023878873146e-02, +-5.496473818536520839e-02, +-5.497250567448648539e-02, +-5.498018270742133229e-02, +-5.498776928558331972e-02, +-5.499526541053127021e-02, +-5.500267108396807852e-02, +-5.500998630774147496e-02, +-5.501721108384418496e-02, +-5.502434541441269394e-02, +-5.503138930172903065e-02, +-5.503834274821899769e-02, +-5.504520575645367036e-02, +-5.505197832914796724e-02, +-5.505866046916163548e-02, +-5.506525217949863327e-02, +-5.507175346330804577e-02, +-5.507816432388205896e-02, +-5.508448476465862415e-02, +-5.509071478921921672e-02, +-5.509685440128984230e-02, +-5.510290360474059956e-02, +-5.510886240358646437e-02, +-5.511473080198602686e-02, +-5.512050880424210209e-02, +-5.512619641480229205e-02, +-5.513179363825754936e-02, +-5.513730047934371770e-02, +-5.514271694293981091e-02, +-5.514804303407002534e-02, +-5.515327875790162343e-02, +-5.515842411974668236e-02, +-5.516347912506072704e-02, +-5.516844377944302158e-02, +-5.517331808863722153e-02, +-5.517810205853106165e-02, +-5.518279569515537053e-02, +-5.518739900468546539e-02, +-5.519191199344022913e-02, +-5.519633466788225612e-02, +-5.520066703461774110e-02, +-5.520490910039671517e-02, +-5.520906087211331636e-02, +-5.521312235680449904e-02, +-5.521709356165142857e-02, +-5.522097449397841279e-02, +-5.522476516125372076e-02, +-5.522846557108889581e-02, +-5.523207573123881109e-02, +-5.523559564960205115e-02, +-5.523902533422039157e-02, +-5.524236479327909038e-02, +-5.524561403510665908e-02, +-5.524877306817506384e-02, +-5.525184190109933002e-02, +-5.525482054263783360e-02, +-5.525770900169224564e-02, +-5.526050728730677597e-02, +-5.526321540866970666e-02, +-5.526583337511185856e-02, +-5.526836119610700065e-02, +-5.527079888127230112e-02, +-5.527314644036730729e-02, +-5.527540388329546528e-02, +-5.527757122010194119e-02, +-5.527964846097576518e-02, +-5.528163561624824252e-02, +-5.528353269639377926e-02, +-5.528533971202916758e-02, +-5.528705667391416168e-02, +-5.528868359295112389e-02, +-5.529022048018530922e-02, +-5.529166734680414363e-02, +-5.529302420413775149e-02, +-5.529429106365908037e-02, +-5.529546793698288110e-02, +-5.529655483586719961e-02, +-5.529755177221183648e-02, +-5.529845875805919353e-02, +-5.529927580559394762e-02, +-5.530000292714327276e-02, +-5.530064013517622945e-02, +-5.530118744230398675e-02, +-5.530164486128054391e-02, +-5.530201240500133564e-02, +-5.530229008650416889e-02, +-5.530247791896880649e-02, +-5.530257591571702963e-02, +-5.530258409021258231e-02, +-5.530250245606108117e-02, +-5.530233102701000852e-02, +-5.530206981694869156e-02, +-5.530171883990837173e-02, +-5.530127811006128880e-02, +-5.530074764172253354e-02, +-5.530012744934813956e-02, +-5.529941754753572858e-02, +-5.529861795102467698e-02, +-5.529772867469579661e-02, +-5.529674973357116136e-02, +-5.529568114281466912e-02, +-5.529452291773161166e-02, +-5.529327507376784190e-02, +-5.529193762651176541e-02, +-5.529051059169162730e-02, +-5.528899398517810038e-02, +-5.528738782298205784e-02, +-5.528569212125614141e-02, +-5.528390689629376215e-02, +-5.528203216452933638e-02, +-5.528006794253812611e-02, +-5.527801424703665534e-02, +-5.527587109488186351e-02, +-5.527363850307218801e-02, +-5.527131648874601677e-02, +-5.526890506918299972e-02, +-5.526640426180318144e-02, +-5.526381408416751462e-02, +-5.526113455397737434e-02, +-5.525836568907454421e-02, +-5.525550750744149392e-02, +-5.525256002720090737e-02, +-5.524952326661616148e-02, +-5.524639724409074332e-02, +-5.524318197816828480e-02, +-5.523987748753284022e-02, +-5.523648379100877526e-02, +-5.523300090756042002e-02, +-5.522942885629199966e-02, +-5.522576765644797436e-02, +-5.522201732741311569e-02, +-5.521817788871117433e-02, +-5.521424936000678824e-02, +-5.521023176110372715e-02, +-5.520612511194582933e-02, +-5.520192943261694601e-02, +-5.519764474333970633e-02, +-5.519327106447724507e-02, +-5.518880841653167613e-02, +-5.518425682014486272e-02, +-5.517961629609826474e-02, +-5.517488686531241832e-02, +-5.517006854884726197e-02, +-5.516516136790232394e-02, +-5.516016534381595893e-02, +-5.515508049806586849e-02, +-5.514990685226892758e-02, +-5.514464442818112905e-02, +-5.513929324769732687e-02, +-5.513385333285130557e-02, +-5.512832470581589123e-02, +-5.512270738890268779e-02, +-5.511700140456229913e-02, +-5.511120677538349638e-02, +-5.510532352409449469e-02, +-5.509935167356150298e-02, +-5.509329124678961215e-02, +-5.508714226692224686e-02, +-5.508090475724145701e-02, +-5.507457874116754304e-02, +-5.506816424225917384e-02, +-5.506166128421333822e-02, +-5.505506989086544206e-02, +-5.504839008618843399e-02, +-5.504162189429391561e-02, +-5.503476533943137822e-02, +-5.502782044598833466e-02, +-5.502078723849030545e-02, +-5.501366574159998607e-02, +-5.500645598011906501e-02, +-5.499915797898610736e-02, +-5.499177176327760957e-02, +-5.498429735820748593e-02, +-5.497673478912783879e-02, +-5.496908408152742509e-02, +-5.496134526103308576e-02, +-5.495351835340879509e-02, +-5.494560338455589665e-02, +-5.493760038051297145e-02, +-5.492950936745544244e-02, +-5.492133037169696919e-02, +-5.491306341968697075e-02, +-5.490470853801241585e-02, +-5.489626575339767028e-02, +-5.488773509270317152e-02, +-5.487911658292656675e-02, +-5.487041025120267812e-02, +-5.486161612480203870e-02, +-5.485273423113290470e-02, +-5.484376459773941670e-02, +-5.483470725230225884e-02, +-5.482556222263863799e-02, +-5.481632953670234620e-02, +-5.480700922258333052e-02, +-5.479760130850780397e-02, +-5.478810582283771824e-02, +-5.477852279407217223e-02, +-5.476885225084524023e-02, +-5.475909422192750536e-02, +-5.474924873622560167e-02, +-5.473931582278158958e-02, +-5.472929551077369836e-02, +-5.471918782951577104e-02, +-5.470899280845687579e-02, +-5.469871047718260354e-02, +-5.468834086541290995e-02, +-5.467788400300443302e-02, +-5.466733991994793262e-02, +-5.465670864637049708e-02, +-5.464599021253393335e-02, +-5.463518464883557191e-02, +-5.462429198580739942e-02, +-5.461331225411674567e-02, +-5.460224548456587418e-02, +-5.459109170809218342e-02, +-5.457985095576758927e-02, +-5.456852325879858745e-02, +-5.455710864852681558e-02, +-5.454560715642873397e-02, +-5.453401881411422403e-02, +-5.452234365332925270e-02, +-5.451058170595279861e-02, +-5.449873300399914189e-02, +-5.448679757961612247e-02, +-5.447477546508670138e-02, +-5.446266669282680967e-02, +-5.445047129538724273e-02, +-5.443818930545262641e-02, +-5.442582075584168066e-02, +-5.441336567950644937e-02, +-5.440082410953298031e-02, +-5.438819607914144316e-02, +-5.437548162168512333e-02, +-5.436268077065103954e-02, +-5.434979355965954828e-02, +-5.433682002246489201e-02, +-5.432376019295415831e-02, +-5.431061410514771010e-02, +-5.429738179319960195e-02, +-5.428406329139648379e-02, +-5.427065863415806574e-02, +-5.425716785603756226e-02, +-5.424359099172031129e-02, +-5.422992807602523141e-02, +-5.421617914390330917e-02, +-5.420234423043867461e-02, +-5.418842337084787270e-02, +-5.417441660048001595e-02, +-5.416032395481659018e-02, +-5.414614546947127405e-02, +-5.413188118019053585e-02, +-5.411753112285270367e-02, +-5.410309533346812499e-02, +-5.408857384817974956e-02, +-5.407396670326179711e-02, +-5.405927393512099249e-02, +-5.404449558029553180e-02, +-5.402963167545540152e-02, +-5.401468225740247570e-02, +-5.399964736307011348e-02, +-5.398452702952306892e-02, +-5.396932129395738686e-02, +-5.395403019370119402e-02, +-5.393865376621307522e-02, +-5.392319204908341268e-02, +-5.390764508003321326e-02, +-5.389201289691491342e-02, +-5.387629553771188656e-02, +-5.386049304053805442e-02, +-5.384460544363854628e-02, +-5.382863278538885937e-02, +-5.381257510429560825e-02, +-5.379643243899537991e-02, +-5.378020482825559417e-02, +-5.376389231097425392e-02, +-5.374749492617945240e-02, +-5.373101271302931775e-02, +-5.371444571081231828e-02, +-5.369779395894733881e-02, +-5.368105749698270229e-02, +-5.366423636459685675e-02, +-5.364733060159842387e-02, +-5.363034024792538018e-02, +-5.361326534364509178e-02, +-5.359610592895530656e-02, +-5.357886204418283588e-02, +-5.356153372978350591e-02, +-5.354412102634324017e-02, +-5.352662397457678273e-02, +-5.350904261532807987e-02, +-5.349137698957029396e-02, +-5.347362713840525528e-02, +-5.345579310306445425e-02, +-5.343787492490714719e-02, +-5.341987264542204933e-02, +-5.340178630622659933e-02, +-5.338361594906622376e-02, +-5.336536161581552362e-02, +-5.334702334847707395e-02, +-5.332860118918188869e-02, +-5.331009518018906684e-02, +-5.329150536388631287e-02, +-5.327283178278863912e-02, +-5.325407447953966339e-02, +-5.323523349691080403e-02, +-5.321630887780110647e-02, +-5.319730066523713219e-02, +-5.317820890237343057e-02, +-5.315903363249228908e-02, +-5.313977489900274798e-02, +-5.312043274544170357e-02, +-5.310100721547341557e-02, +-5.308149835288884094e-02, +-5.306190620160649435e-02, +-5.304223080567164322e-02, +-5.302247220925668941e-02, +-5.300263045666066958e-02, +-5.298270559230951193e-02, +-5.296269766075564767e-02, +-5.294260670667800400e-02, +-5.292243277488230258e-02, +-5.290217591030057370e-02, +-5.288183615799062209e-02, +-5.286141356313742851e-02, +-5.284090817105101950e-02, +-5.282032002716831320e-02, +-5.279964917705173844e-02, +-5.277889566638965108e-02, +-5.275805954099586220e-02, +-5.273714084681046382e-02, +-5.271613962989869784e-02, +-5.269505593645110869e-02, +-5.267388981278416094e-02, +-5.265264130533928860e-02, +-5.263131046068295071e-02, +-5.260989732550713088e-02, +-5.258840194662839362e-02, +-5.256682437098859906e-02, +-5.254516464565441025e-02, +-5.252342281781682831e-02, +-5.250159893479179607e-02, +-5.247969304402005930e-02, +-5.245770519306612589e-02, +-5.243563542961952872e-02, +-5.241348380149386810e-02, +-5.239125035662676316e-02, +-5.236893514307980335e-02, +-5.234653820903917287e-02, +-5.232405960281399926e-02, +-5.230149937283817135e-02, +-5.227885756766863928e-02, +-5.225613423598633039e-02, +-5.223332942659504596e-02, +-5.221044318842323062e-02, +-5.218747557052123148e-02, +-5.216442662206346309e-02, +-5.214129639234738739e-02, +-5.211808493079309046e-02, +-5.209479228694371966e-02, +-5.207141851046582365e-02, +-5.204796365114817969e-02, +-5.202442775890215448e-02, +-5.200081088376164173e-02, +-5.197711307588345764e-02, +-5.195333438554600863e-02, +-5.192947486315046407e-02, +-5.190553455922032600e-02, +-5.188151352440065894e-02, +-5.185741180945865891e-02, +-5.183322946528332031e-02, +-5.180896654288580372e-02, +-5.178462309339833258e-02, +-5.176019916807477611e-02, +-5.173569481829101702e-02, +-5.171111009554370253e-02, +-5.168644505145065376e-02, +-5.166169973775174701e-02, +-5.163687420630696384e-02, +-5.161196850909759853e-02, +-5.158698269822589028e-02, +-5.156191682591469011e-02, +-5.153677094450739848e-02, +-5.151154510646838158e-02, +-5.148623936438218723e-02, +-5.146085377095366981e-02, +-5.143538837900780980e-02, +-5.140984324149024121e-02, +-5.138421841146611352e-02, +-5.135851394212082033e-02, +-5.133272988675955523e-02, +-5.130686629880719385e-02, +-5.128092323180832163e-02, +-5.125490073942671337e-02, +-5.122879887544637412e-02, +-5.120261769376974886e-02, +-5.117635724841899242e-02, +-5.115001759353528243e-02, +-5.112359878337889574e-02, +-5.109710087232912507e-02, +-5.107052391488352966e-02, +-5.104386796565885814e-02, +-5.101713307939049341e-02, +-5.099031931093213343e-02, +-5.096342671525588841e-02, +-5.093645534745214892e-02, +-5.090940526272945410e-02, +-5.088227651641475530e-02, +-5.085506916395264587e-02, +-5.082778326090536813e-02, +-5.080041886295361131e-02, +-5.077297602589495029e-02, +-5.074545480564538608e-02, +-5.071785525823718777e-02, +-5.069017743982138363e-02, +-5.066242140666507576e-02, +-5.063458721515289029e-02, +-5.060667492178658883e-02, +-5.057868458318476312e-02, +-5.055061625608287673e-02, +-5.052246999733270988e-02, +-5.049424586390335867e-02, +-5.046594391287965997e-02, +-5.043756420146313507e-02, +-5.040910678697153868e-02, +-5.038057172683929608e-02, +-5.035195907861589326e-02, +-5.032326889996739661e-02, +-5.029450124867561323e-02, +-5.026565618263816732e-02, +-5.023673375986768830e-02, +-5.020773403849337208e-02, +-5.017865707675904507e-02, +-5.014950293302376100e-02, +-5.012027166576218246e-02, +-5.009096333356388708e-02, +-5.006157799513324264e-02, +-5.003211570928955271e-02, +-5.000257653496718857e-02, +-4.997296053121461773e-02, +-4.994326775719488964e-02, +-4.991349827218583696e-02, +-4.988365213557943711e-02, +-4.985372940688181237e-02, +-4.982373014571278569e-02, +-4.979365441180666485e-02, +-4.976350226501160406e-02, +-4.973327376528883376e-02, +-4.970296897271405528e-02, +-4.967258794747619194e-02, +-4.964213074987725710e-02, +-4.961159744033254160e-02, +-4.958098807937124514e-02, +-4.955030272763486648e-02, +-4.951954144587784185e-02, +-4.948870429496821099e-02, +-4.945779133588579929e-02, +-4.942680262972364014e-02, +-4.939573823768714234e-02, +-4.936459822109375006e-02, +-4.933338264137401147e-02, +-4.930209156006937904e-02, +-4.927072503883459659e-02, +-4.923928313943540247e-02, +-4.920776592374977859e-02, +-4.917617345376771448e-02, +-4.914450579158972932e-02, +-4.911276299942907153e-02, +-4.908094513960924860e-02, +-4.904905227456601152e-02, +-4.901708446684525933e-02, +-4.898504177910432966e-02, +-4.895292427411185310e-02, +-4.892073201474651106e-02, +-4.888846506399786157e-02, +-4.885612348496620044e-02, +-4.882370734086233927e-02, +-4.879121669500707803e-02, +-4.875865161083126759e-02, +-4.872601215187646190e-02, +-4.869329838179344005e-02, +-4.866051036434319854e-02, +-4.862764816339666674e-02, +-4.859471184293365220e-02, +-4.856170146704442969e-02, +-4.852861709992765948e-02, +-4.849545880589207353e-02, +-4.846222664935489338e-02, +-4.842892069484248940e-02, +-4.839554100699063055e-02, +-4.836208765054333947e-02, +-4.832856069035330188e-02, +-4.829496019138175555e-02, +-4.826128621869879565e-02, +-4.822753883748219506e-02, +-4.819371811301829261e-02, +-4.815982411070116737e-02, +-4.812585689603342265e-02, +-4.809181653462476363e-02, +-4.805770309219305897e-02, +-4.802351663456351505e-02, +-4.798925722766905072e-02, +-4.795492493754930502e-02, +-4.792051983035213597e-02, +-4.788604197233166382e-02, +-4.785149142984934656e-02, +-4.781686826937339707e-02, +-4.778217255747870679e-02, +-4.774740436084679018e-02, +-4.771256374626559743e-02, +-4.767765078062972950e-02, +-4.764266553093991774e-02, +-4.760760806430250347e-02, +-4.757247844793089514e-02, +-4.753727674914304258e-02, +-4.750200303536376845e-02, +-4.746665737412310987e-02, +-4.743123983305612412e-02, +-4.739575047990435275e-02, +-4.736018938251339294e-02, +-4.732455660883490289e-02, +-4.728885222692526952e-02, +-4.725307630494529620e-02, +-4.721722891116131998e-02, +-4.718131011394385843e-02, +-4.714531998176819949e-02, +-4.710925858321348553e-02, +-4.707312598696387212e-02, +-4.703692226180720970e-02, +-4.700064747663534187e-02, +-4.696430170044438301e-02, +-4.692788500233369131e-02, +-4.689139745150668059e-02, +-4.685483911727037626e-02, +-4.681821006903460342e-02, +-4.678151037631286119e-02, +-4.674474010872212842e-02, +-4.670789933598161470e-02, +-4.667098812791406481e-02, +-4.663400655444462778e-02, +-4.659695468560150905e-02, +-4.655983259151481174e-02, +-4.652264034241772317e-02, +-4.648537800864493280e-02, +-4.644804566063386042e-02, +-4.641064336892375408e-02, +-4.637317120415566929e-02, +-4.633562923707264247e-02, +-4.629801753851890689e-02, +-4.626033617944062815e-02, +-4.622258523088487031e-02, +-4.618476476400065062e-02, +-4.614687485003732270e-02, +-4.610891556034582561e-02, +-4.607088696637742786e-02, +-4.603278913968466418e-02, +-4.599462215192025305e-02, +-4.595638607483766569e-02, +-4.591808098029043911e-02, +-4.587970694023280060e-02, +-4.584126402671832856e-02, +-4.580275231190104879e-02, +-4.576417186803504594e-02, +-4.572552276747340189e-02, +-4.568680508266937529e-02, +-4.564801888617529141e-02, +-4.560916425064313884e-02, +-4.557024124882355642e-02, +-4.553124995356693655e-02, +-4.549219043782194716e-02, +-4.545306277463626726e-02, +-4.541386703715658002e-02, +-4.537460329862714331e-02, +-4.533527163239162161e-02, +-4.529587211189170515e-02, +-4.525640481066684623e-02, +-4.521686980235454373e-02, +-4.517726716069052351e-02, +-4.513759695950831513e-02, +-4.509785927273834982e-02, +-4.505805417440916089e-02, +-4.501818173864657185e-02, +-4.497824203967329404e-02, +-4.493823515180932204e-02, +-4.489816114947153131e-02, +-4.485802010717382382e-02, +-4.481781209952666323e-02, +-4.477753720123667930e-02, +-4.473719548710741734e-02, +-4.469678703203868592e-02, +-4.465631191102600872e-02, +-4.461577019916127679e-02, +-4.457516197163238075e-02, +-4.453448730372257247e-02, +-4.449374627081064543e-02, +-4.445293894837153148e-02, +-4.441206541197514901e-02, +-4.437112573728611842e-02, +-4.433012000006515685e-02, +-4.428904827616693407e-02, +-4.424791064154156434e-02, +-4.420670717223341983e-02, +-4.416543794438193560e-02, +-4.412410303422045071e-02, +-4.408270251807654139e-02, +-4.404123647237260381e-02, +-4.399970497362418881e-02, +-4.395810809844111211e-02, +-4.391644592352708654e-02, +-4.387471852567893793e-02, +-4.383292598178728516e-02, +-4.379106836883616544e-02, +-4.374914576390260407e-02, +-4.370715824415646877e-02, +-4.366510588686082356e-02, +-4.362298876937170666e-02, +-4.358080696913724239e-02, +-4.353856056369848765e-02, +-4.349624963068848132e-02, +-4.345387424783325736e-02, +-4.341143449294981166e-02, +-4.336893044394809354e-02, +-4.332636217882931268e-02, +-4.328372977568654967e-02, +-4.324103331270432587e-02, +-4.319827286815852013e-02, +-4.315544852041654222e-02, +-4.311256034793665287e-02, +-4.306960842926829680e-02, +-4.302659284305154763e-02, +-4.298351366801760748e-02, +-4.294037098298741223e-02, +-4.289716486687341485e-02, +-4.285389539867751757e-02, +-4.281056265749228623e-02, +-4.276716672249983309e-02, +-4.272370767297278132e-02, +-4.268018558827271075e-02, +-4.263660054785159415e-02, +-4.259295263125026376e-02, +-4.254924191809923012e-02, +-4.250546848811795342e-02, +-4.246163242111517661e-02, +-4.241773379698809271e-02, +-4.237377269572313587e-02, +-4.232974919739527359e-02, +-4.228566338216790954e-02, +-4.224151533029243955e-02, +-4.219730512210891765e-02, +-4.215303283804540391e-02, +-4.210869855861764516e-02, +-4.206430236442932485e-02, +-4.201984433617166753e-02, +-4.197532455462361228e-02, +-4.193074310065116744e-02, +-4.188610005520737589e-02, +-4.184139549933321017e-02, +-4.179662951415569205e-02, +-4.175180218088898193e-02, +-4.170691358083398331e-02, +-4.166196379537766975e-02, +-4.161695290599370239e-02, +-4.157188099424215244e-02, +-4.152674814176883500e-02, +-4.148155443030563522e-02, +-4.143629994167001562e-02, +-4.139098475776553654e-02, +-4.134560896058088464e-02, +-4.130017263219008111e-02, +-4.125467585475277310e-02, +-4.120911871051326225e-02, +-4.116350128180082391e-02, +-4.111782365102958914e-02, +-4.107208590069885007e-02, +-4.102628811339145004e-02, +-4.098043037177499098e-02, +-4.093451275860199301e-02, +-4.088853535670790296e-02, +-4.084249824901249604e-02, +-4.079640151851982727e-02, +-4.075024524831706574e-02, +-4.070402952157488319e-02, +-4.065775442154742625e-02, +-4.061142003157232339e-02, +-4.056502643506971345e-02, +-4.051857371554296733e-02, +-4.047206195657848671e-02, +-4.042549124184454529e-02, +-4.037886165509257941e-02, +-4.033217328015601538e-02, +-4.028542620095066501e-02, +-4.023862050147429537e-02, +-4.019175626580645533e-02, +-4.014483357810872538e-02, +-4.009785252262405147e-02, +-4.005081318367683524e-02, +-4.000371564567282295e-02, +-3.995655999309929290e-02, +-3.990934631052375087e-02, +-3.986207468259526238e-02, +-3.981474519404366169e-02, +-3.976735792967879546e-02, +-3.971991297439115415e-02, +-3.967241041315205247e-02, +-3.962485033101220688e-02, +-3.957723281310280422e-02, +-3.952955794463442613e-02, +-3.948182581089793031e-02, +-3.943403649726341664e-02, +-3.938619008918012310e-02, +-3.933828667217710573e-02, +-3.929032633186230888e-02, +-3.924230915392238478e-02, +-3.919423522412301963e-02, +-3.914610462830854509e-02, +-3.909791745240194516e-02, +-3.904967378240416231e-02, +-3.900137370439490242e-02, +-3.895301730453155920e-02, +-3.890460466904955422e-02, +-3.885613588426225368e-02, +-3.880761103656032301e-02, +-3.875903021241211555e-02, +-3.871039349836311733e-02, +-3.866170098103641900e-02, +-3.861295274713173742e-02, +-3.856414888342569319e-02, +-3.851528947677218540e-02, +-3.846637461410095521e-02, +-3.841740438241834921e-02, +-3.836837886880743731e-02, +-3.831929816042684012e-02, +-3.827016234451173504e-02, +-3.822097150837251711e-02, +-3.817172573939579122e-02, +-3.812242512504361580e-02, +-3.807306975285287137e-02, +-3.802365971043657894e-02, +-3.797419508548235262e-02, +-3.792467596575249678e-02, +-3.787510243908433910e-02, +-3.782547459339020285e-02, +-3.777579251665625498e-02, +-3.772605629694341517e-02, +-3.767626602238664801e-02, +-3.762642178119512265e-02, +-3.757652366165144947e-02, +-3.752657175211220747e-02, +-3.747656614100787487e-02, +-3.742650691684188541e-02, +-3.737639416819086430e-02, +-3.732622798370508616e-02, +-3.727600845210759378e-02, +-3.722573566219378877e-02, +-3.717540970283250701e-02, +-3.712503066296456850e-02, +-3.707459863160313118e-02, +-3.702411369783369793e-02, +-3.697357595081401938e-02, +-3.692298547977351103e-02, +-3.687234237401327414e-02, +-3.682164672290627605e-02, +-3.677089861589676045e-02, +-3.672009814250015020e-02, +-3.666924539230310975e-02, +-3.661834045496351053e-02, +-3.656738342020994514e-02, +-3.651637437784119311e-02, +-3.646531341772715762e-02, +-3.641420062980811612e-02, +-3.636303610409402642e-02, +-3.631181993066551900e-02, +-3.626055219967286997e-02, +-3.620923300133598033e-02, +-3.615786242594439676e-02, +-3.610644056385759609e-02, +-3.605496750550370166e-02, +-3.600344334138025348e-02, +-3.595186816205390296e-02, +-3.590024205815988551e-02, +-3.584856512040238835e-02, +-3.579683743955356517e-02, +-3.574505910645488227e-02, +-3.569323021201537688e-02, +-3.564135084721198332e-02, +-3.558942110309010892e-02, +-3.553744107076247521e-02, +-3.548541084140941632e-02, +-3.543333050627927444e-02, +-3.538120015668696355e-02, +-3.532901988401469795e-02, +-3.527678977971193675e-02, +-3.522450993529491897e-02, +-3.517218044234631663e-02, +-3.511980139251545674e-02, +-3.506737287751797438e-02, +-3.501489498913577803e-02, +-3.496236781921686909e-02, +-3.490979145967466196e-02, +-3.485716600248919134e-02, +-3.480449153970532894e-02, +-3.475176816343330394e-02, +-3.469899596584949397e-02, +-3.464617503919444758e-02, +-3.459330547577387643e-02, +-3.454038736795862069e-02, +-3.448742080818389261e-02, +-3.443440588894962351e-02, +-3.438134270281945765e-02, +-3.432823134242207752e-02, +-3.427507190044962876e-02, +-3.422186446965800460e-02, +-3.416860914286725531e-02, +-3.411530601296080406e-02, +-3.406195517288525959e-02, +-3.400855671565031213e-02, +-3.395511073432931626e-02, +-3.390161732205826395e-02, +-3.384807657203560416e-02, +-3.379448857752277713e-02, +-3.374085343184367314e-02, +-3.368717122838369576e-02, +-3.363344206059157293e-02, +-3.357966602197722666e-02, +-3.352584320611257107e-02, +-3.347197370663089477e-02, +-3.341805761722763807e-02, +-3.336409503165903984e-02, +-3.331008604374239429e-02, +-3.325603074735668241e-02, +-3.320192923644105926e-02, +-3.314778160499579074e-02, +-3.309358794708121276e-02, +-3.303934835681884147e-02, +-3.298506292838979115e-02, +-3.293073175603512814e-02, +-3.287635493405639819e-02, +-3.282193255681456479e-02, +-3.276746471873018263e-02, +-3.271295151428317560e-02, +-3.265839303801292004e-02, +-3.260378938451742592e-02, +-3.254914064845468996e-02, +-3.249444692454035027e-02, +-3.243970830754940027e-02, +-3.238492489231491189e-02, +-3.233009677372865320e-02, +-3.227522404674018630e-02, +-3.222030680635718652e-02, +-3.216534514764517183e-02, +-3.211033916572745422e-02, +-3.205528895578491771e-02, +-3.200019461305517871e-02, +-3.194505623283402235e-02, +-3.188987391047352210e-02, +-3.183464774138287240e-02, +-3.177937782102797926e-02, +-3.172406424493137006e-02, +-3.166870710867169397e-02, +-3.161330650788432561e-02, +-3.155786253826025484e-02, +-3.150237529554669735e-02, +-3.144684487554608165e-02, +-3.139127137411726332e-02, +-3.133565488717402620e-02, +-3.127999551068513795e-02, +-3.122429334067532147e-02, +-3.116854847322352018e-02, +-3.111276100446369944e-02, +-3.105693103058425678e-02, +-3.100105864782849024e-02, +-3.094514395249378658e-02, +-3.088918704093155179e-02, +-3.083318800954714181e-02, +-3.077714695480009838e-02, +-3.072106397320309087e-02, +-3.066493916132280451e-02, +-3.060877261577903824e-02, +-3.055256443324459031e-02, +-3.049631471044535538e-02, +-3.044002354416048758e-02, +-3.038369103122134235e-02, +-3.032731726851167764e-02, +-3.027090235296842763e-02, +-3.021444638157981880e-02, +-3.015794945138672994e-02, +-3.010141165948118300e-02, +-3.004483310300805690e-02, +-2.998821387916277004e-02, +-2.993155408519271657e-02, +-2.987485381839583357e-02, +-2.981811317612238083e-02, +-2.976133225577189817e-02, +-2.970451115479609203e-02, +-2.964764997069638600e-02, +-2.959074880102501373e-02, +-2.953380774338417586e-02, +-2.947682689542663673e-02, +-2.941980635485442336e-02, +-2.936274621941985588e-02, +-2.930564658692479119e-02, +-2.924850755522033496e-02, +-2.919132922220688334e-02, +-2.913411168583394592e-02, +-2.907685504410026378e-02, +-2.901955939505310167e-02, +-2.896222483678813006e-02, +-2.890485146745005660e-02, +-2.884743938523162340e-02, +-2.878998868837335384e-02, +-2.873249947516423250e-02, +-2.867497184394086907e-02, +-2.861740589308731098e-02, +-2.855980172103539036e-02, +-2.850215942626417587e-02, +-2.844447910729988940e-02, +-2.838676086271543775e-02, +-2.832900479113123829e-02, +-2.827121099121358838e-02, +-2.821337956167583455e-02, +-2.815551060127729349e-02, +-2.809760420882383147e-02, +-2.803966048316691370e-02, +-2.798167952320389229e-02, +-2.792366142787823871e-02, +-2.786560629617858276e-02, +-2.780751422713871948e-02, +-2.774938531983806370e-02, +-2.769121967340070975e-02, +-2.763301738699584786e-02, +-2.757477855983684820e-02, +-2.751650329118246127e-02, +-2.745819168033520816e-02, +-2.739984382664168577e-02, +-2.734145982949298323e-02, +-2.728303978832385263e-02, +-2.722458380261262578e-02, +-2.716609197188109628e-02, +-2.710756439569492540e-02, +-2.704900117366239309e-02, +-2.699040240543510924e-02, +-2.693176819070773609e-02, +-2.687309862921729089e-02, +-2.681439382074338879e-02, +-2.675565386510812479e-02, +-2.669687886217619183e-02, +-2.663806891185335757e-02, +-2.657922411408798063e-02, +-2.652034456887040342e-02, +-2.646143037623177943e-02, +-2.640248163624494757e-02, +-2.634349844902424478e-02, +-2.628448091472486425e-02, +-2.622542913354269922e-02, +-2.616634320571444364e-02, +-2.610722323151778990e-02, +-2.604806931127021455e-02, +-2.598888154532970687e-02, +-2.592966003409446357e-02, +-2.587040487800232325e-02, +-2.581111617753086701e-02, +-2.575179403319724503e-02, +-2.569243854555839160e-02, +-2.563304981521020640e-02, +-2.557362794278690912e-02, +-2.551417302896310038e-02, +-2.545468517445109019e-02, +-2.539516448000166474e-02, +-2.533561104640494333e-02, +-2.527602497448836957e-02, +-2.521640636511779041e-02, +-2.515675531919692870e-02, +-2.509707193766737288e-02, +-2.503735632150815363e-02, +-2.497760857173558433e-02, +-2.491782878940358714e-02, +-2.485801707560287427e-02, +-2.479817353146093403e-02, +-2.473829825814229458e-02, +-2.467839135684805549e-02, +-2.461845292881547839e-02, +-2.455848307531826452e-02, +-2.449848189766604817e-02, +-2.443844949720442791e-02, +-2.437838597531458151e-02, +-2.431829143341385571e-02, +-2.425816597295439581e-02, +-2.419800969542362790e-02, +-2.413782270234415134e-02, +-2.407760509527377343e-02, +-2.401735697580469411e-02, +-2.395707844556342614e-02, +-2.389676960621172491e-02, +-2.383643055944491274e-02, +-2.377606140699237494e-02, +-2.371566225061751132e-02, +-2.365523319211790959e-02, +-2.359477433332410681e-02, +-2.353428577610001959e-02, +-2.347376762234371431e-02, +-2.341321997398514848e-02, +-2.335264293298753083e-02, +-2.329203660134737675e-02, +-2.323140108109328708e-02, +-2.317073647428612507e-02, +-2.311004288301913082e-02, +-2.304932040941803234e-02, +-2.298856915563980002e-02, +-2.292778922387336132e-02, +-2.286698071633946547e-02, +-2.280614373528992364e-02, +-2.274527838300800797e-02, +-2.268438476180755642e-02, +-2.262346297403411768e-02, +-2.256251312206335180e-02, +-2.250153530830145687e-02, +-2.244052963518553684e-02, +-2.237949620518258145e-02, +-2.231843512078911587e-02, +-2.225734648453248435e-02, +-2.219623039896925429e-02, +-2.213508696668558401e-02, +-2.207391629029688274e-02, +-2.201271847244818183e-02, +-2.195149361581328826e-02, +-2.189024182309450006e-02, +-2.182896319702378948e-02, +-2.176765784036085657e-02, +-2.170632585589394106e-02, +-2.164496734643948581e-02, +-2.158358241484237966e-02, +-2.152217116397480909e-02, +-2.146073369673680981e-02, +-2.139927011605629106e-02, +-2.133778052488839380e-02, +-2.127626502621478288e-02, +-2.121472372304518059e-02, +-2.115315671841558332e-02, +-2.109156411538871609e-02, +-2.102994601705375152e-02, +-2.096830252652683371e-02, +-2.090663374694952045e-02, +-2.084493978148954652e-02, +-2.078322073334104222e-02, +-2.072147670572319425e-02, +-2.065970780188100195e-02, +-2.059791412508449326e-02, +-2.053609577862954005e-02, +-2.047425286583638010e-02, +-2.041238549005013753e-02, +-2.035049375464119750e-02, +-2.028857776300379417e-02, +-2.022663761855675660e-02, +-2.016467342474313057e-02, +-2.010268528502983515e-02, +-2.004067330290755858e-02, +-1.997863758189099767e-02, +-1.991657822551807025e-02, +-1.985449533734999147e-02, +-1.979238902097112812e-02, +-1.973025937998910267e-02, +-1.966810651803411678e-02, +-1.960593053875909694e-02, +-1.954373154583903538e-02, +-1.948150964297223897e-02, +-1.941926493387824415e-02, +-1.935699752229863568e-02, +-1.929470751199749770e-02, +-1.923239500675985592e-02, +-1.917006011039245478e-02, +-1.910770292672329951e-02, +-1.904532355960157283e-02, +-1.898292211289729498e-02, +-1.892049869050159774e-02, +-1.885805339632592309e-02, +-1.879558633430226250e-02, +-1.873309760838282739e-02, +-1.867058732254023301e-02, +-1.860805558076674554e-02, +-1.854550248707449722e-02, +-1.848292814549510471e-02, +-1.842033266008016520e-02, +-1.835771613489980622e-02, +-1.829507867404362928e-02, +-1.823242038162045664e-02, +-1.816974136175735291e-02, +-1.810704171860033282e-02, +-1.804432155631345222e-02, +-1.798158097907985933e-02, +-1.791882009109950838e-02, +-1.785603899659166799e-02, +-1.779323779979246484e-02, +-1.773041660495580304e-02, +-1.766757551635288886e-02, +-1.760471463827283090e-02, +-1.754183407502103720e-02, +-1.747893393092003061e-02, +-1.741601431030951816e-02, +-1.735307531754527038e-02, +-1.729011705699954465e-02, +-1.722713963306089432e-02, +-1.716414315013422426e-02, +-1.710112771263999284e-02, +-1.703809342501439589e-02, +-1.697504039170918619e-02, +-1.691196871719195804e-02, +-1.684887850594492253e-02, +-1.678576986246566385e-02, +-1.672264289126654604e-02, +-1.665949769687468524e-02, +-1.659633438383168250e-02, +-1.653315305669377649e-02, +-1.646995382003116695e-02, +-1.640673677842798689e-02, +-1.634350203648270161e-02, +-1.628024969880701237e-02, +-1.621697987002639410e-02, +-1.615369265477939464e-02, +-1.609038815771841185e-02, +-1.602706648350815319e-02, +-1.596372773682659674e-02, +-1.590037202236413427e-02, +-1.583699944482412983e-02, +-1.577361010892184764e-02, +-1.571020411938495870e-02, +-1.564678158095297172e-02, +-1.558334259837749342e-02, +-1.551988727642148770e-02, +-1.545641571985987249e-02, +-1.539292803347857598e-02, +-1.532942432207448982e-02, +-1.526590469045625668e-02, +-1.520236924344264481e-02, +-1.513881808586339459e-02, +-1.507525132255839277e-02, +-1.501166905837857980e-02, +-1.494807139818439892e-02, +-1.488445844684625936e-02, +-1.482083030924507584e-02, +-1.475718709027074894e-02, +-1.469352889482287462e-02, +-1.462985582781017868e-02, +-1.456616799415125750e-02, +-1.450246549877261780e-02, +-1.443874844661010258e-02, +-1.437501694260854765e-02, +-1.431127109172072691e-02, +-1.424751099890771838e-02, +-1.418373676913921647e-02, +-1.411994850739249109e-02, +-1.405614631865258202e-02, +-1.399233030791221730e-02, +-1.392850058017185318e-02, +-1.386465724043894551e-02, +-1.380080039372780752e-02, +-1.373693014506054653e-02, +-1.367304659946530845e-02, +-1.360914986197704277e-02, +-1.354524003763706366e-02, +-1.348131723149343514e-02, +-1.341738154860000823e-02, +-1.335343309401598386e-02, +-1.328947197280742724e-02, +-1.322549829004533023e-02, +-1.316151215080605882e-02, +-1.309751366017191006e-02, +-1.303350292322954899e-02, +-1.296948004507087783e-02, +-1.290544513079237669e-02, +-1.284139828549563968e-02, +-1.277733961428614146e-02, +-1.271326922227353218e-02, +-1.264918721457230361e-02, +-1.258509369630010644e-02, +-1.252098877257860204e-02, +-1.245687254853295074e-02, +-1.239274512929206679e-02, +-1.232860661998778744e-02, +-1.226445712575503430e-02, +-1.220029675173165892e-02, +-1.213612560305843933e-02, +-1.207194378487831329e-02, +-1.200775140233727167e-02, +-1.194354856058302793e-02, +-1.187933536476549513e-02, +-1.181511192003625865e-02, +-1.175087833154930643e-02, +-1.168663470445957357e-02, +-1.162238114392332745e-02, +-1.155811775509874538e-02, +-1.149384464314446436e-02, +-1.142956191322008937e-02, +-1.136526967048594704e-02, +-1.130096802010333544e-02, +-1.123665706723343469e-02, +-1.117233691703769377e-02, +-1.110800767467824343e-02, +-1.104366944531606949e-02, +-1.097932233411241451e-02, +-1.091496644622841523e-02, +-1.085060188682410165e-02, +-1.078622876105876996e-02, +-1.072184717409078655e-02, +-1.065745723107765219e-02, +-1.059305903717531507e-02, +-1.052865269753811527e-02, +-1.046423831731932604e-02, +-1.039981600166994466e-02, +-1.033538585573907584e-02, +-1.027094798467360556e-02, +-1.020650249361865214e-02, +-1.014204948771635188e-02, +-1.007758907210609851e-02, +-1.001312135192514163e-02, +-9.948646432307372417e-03, +-9.884164418383004427e-03, +-9.819675415280018638e-03, +-9.755179528122222277e-03, +-9.690676862029965269e-03, +-9.626167522119572981e-03, +-9.561651613504040109e-03, +-9.497129241291559637e-03, +-9.432600510586112638e-03, +-9.368065526487751038e-03, +-9.303524394091213304e-03, +-9.238977218486800480e-03, +-9.174424104759512297e-03, +-9.109865157989838202e-03, +-9.045300483252371321e-03, +-8.980730185616229988e-03, +-8.916154370145463678e-03, +-8.851573141897941047e-03, +-8.786986605925008187e-03, +-8.722394867272940597e-03, +-8.657798030980965592e-03, +-8.593196202082035995e-03, +-8.528589485602325326e-03, +-8.463977986561680572e-03, +-8.399361809972463386e-03, +-8.334741060839808563e-03, +-8.270115844162231195e-03, +-8.205486264930100110e-03, +-8.140852428126387277e-03, +-8.076214438726031161e-03, +-8.011572401696554283e-03, +-7.946926421996854117e-03, +-7.882276604577373100e-03, +-7.817623054380778633e-03, +-7.752965876340470359e-03, +-7.688305175381190786e-03, +-7.623641056418816245e-03, +-7.558973624359974393e-03, +-7.494302984102019921e-03, +-7.429629240532659856e-03, +-7.364952498530531223e-03, +-7.300272862963867043e-03, +-7.235590438690981188e-03, +-7.170905330560518182e-03, +-7.106217643410368996e-03, +-7.041527482068092592e-03, +-6.976834951350374681e-03, +-6.912140156063751109e-03, +-6.847443201003160229e-03, +-6.782744190952462449e-03, +-6.718043230684689164e-03, +-6.653340424960960293e-03, +-6.588635878530867650e-03, +-6.523929696132237284e-03, +-6.459221982490927390e-03, +-6.394512842320677383e-03, +-6.329802380322737537e-03, +-6.265090701186483944e-03, +-6.200377909588035072e-03, +-6.135664110190835498e-03, +-6.070949407645822443e-03, +-6.006233906590314683e-03, +-5.941517711648513882e-03, +-5.876800927430974632e-03, +-5.812083658535240234e-03, +-5.747366009544461855e-03, +-5.682648085027852160e-03, +-5.617929989541111183e-03, +-5.553211827625044623e-03, +-5.488493703806264674e-03, +-5.423775722596536029e-03, +-5.359057988493633705e-03, +-5.294340605979071419e-03, +-5.229623679520573575e-03, +-5.164907313569860881e-03, +-5.100191612563402359e-03, +-5.035476680921878445e-03, +-4.970762623050782071e-03, +-4.906049543339124561e-03, +-4.841337546160012426e-03, +-4.776626735870106999e-03, +-4.711917216810194292e-03, +-4.647209093303956810e-03, +-4.582502469658318763e-03, +-4.517797450163835507e-03, +-4.453094139093430673e-03, +-4.388392640702985098e-03, +-4.323693059230827689e-03, +-4.258995498898197722e-03, +-4.194300063908109472e-03, +-4.129606858445835325e-03, +-4.064915986678615221e-03, +-4.000227552755449348e-03, +-3.935541660806759871e-03, +-3.870858414944976841e-03, +-3.806177919263283548e-03, +-3.741500277836154725e-03, +-3.676825594718827889e-03, +-3.612153973947908325e-03, +-3.547485519540059806e-03, +-3.482820335492442607e-03, +-3.418158525783027060e-03, +-3.353500194369441259e-03, +-3.288845445189410820e-03, +-3.224194382160329962e-03, +-3.159547109179780631e-03, +-3.094903730124285227e-03, +-3.030264348849872127e-03, +-2.965629069191749994e-03, +-2.900997994964102638e-03, +-2.836371229959779375e-03, +-2.771748877950856640e-03, +-2.707131042687352558e-03, +-2.642517827897668432e-03, +-2.577909337288904895e-03, +-2.513305674545664083e-03, +-2.448706943330570922e-03, +-2.384113247283773957e-03, +-2.319524690023501770e-03, +-2.254941375144818745e-03, +-2.190363406220162401e-03, +-2.125790886798864174e-03, +-2.061223920407661593e-03, +-1.996662610549474002e-03, +-1.932107060703808481e-03, +-1.867557374327264656e-03, +-1.803013654851618906e-03, +-1.738476005685240990e-03, +-1.673944530212795453e-03, +-1.609419331794152003e-03, +-1.544900513764770186e-03, +-1.480388179436079726e-03, +-1.415882432094240414e-03, +-1.351383375000685290e-03, +-1.286891111391623866e-03, +-1.222405744478584442e-03, +-1.157927377447177031e-03, +-1.093456113457471311e-03, +-1.028992055644374582e-03, +-9.645353071163892660e-04, +-9.000859709561837398e-04, +-8.356441502200490437e-04, +-7.712099479384793618e-04, +-7.067834671150989871e-04, +-6.423648107263261109e-04, +-5.779540817228281469e-04, +-5.135513830275609520e-04, +-4.491568175363427483e-04, +-3.847704881182048629e-04, +-3.203924976141806196e-04, +-2.560229488378440790e-04, +-1.916619445748020357e-04, +-1.273095875832455247e-04, +-6.296598059271490153e-05, + 1.368773695521595375e-06, + 6.569457260809090534e-05, + 1.300113135007512370e-04, + 1.943188937578347144e-04, + 2.586172107927647477e-04, + 3.229061620475014768e-04, + 3.871856449937751462e-04, + 4.514555571325273072e-04, + 5.157157959942533986e-04, + 5.799662591391615283e-04, + 6.442068441575081418e-04, + 7.084374486690463808e-04, + 7.726579703242520986e-04, + 8.368683068037781813e-04, + 9.010683558189585933e-04, + 9.652580151112673604e-04, + 1.029437182453525395e-03, + 1.093605755649563419e-03, + 1.157763632533802484e-03, + 1.221910710972511430e-03, + 1.286046888863245268e-03, + 1.350172064135354323e-03, + 1.414286134749435193e-03, + 1.478388998698559800e-03, + 1.542480554007905026e-03, + 1.606560698734183076e-03, + 1.670629330967581330e-03, + 1.734686348830340738e-03, + 1.798731650477076961e-03, + 1.862765134095820336e-03, + 1.926786697907475077e-03, + 1.990796240166327769e-03, + 2.054793659159503093e-03, + 2.118778853208168160e-03, + 2.182751720667175811e-03, + 2.246712159924674299e-03, + 2.310660069403361501e-03, + 2.374595347559899008e-03, + 2.438517892885416500e-03, + 2.502427603905002605e-03, + 2.566324379178898385e-03, + 2.630208117302123942e-03, + 2.694078716903934578e-03, + 2.757936076649729427e-03, + 2.821780095239658902e-03, + 2.885610671408890982e-03, + 2.949427703928724463e-03, + 3.013231091605993953e-03, + 3.077020733283603732e-03, + 3.140796527839926234e-03, + 3.204558374190111334e-03, + 3.268306171285630547e-03, + 3.332039818113934418e-03, + 3.395759213699660328e-03, + 3.459464257104122049e-03, + 3.523154847425741254e-03, + 3.586830883799560065e-03, + 3.650492265398468366e-03, + 3.714138891432767955e-03, + 3.777770661149817358e-03, + 3.841387473835119505e-03, + 3.904989228812598846e-03, + 3.968575825443213141e-03, + 4.032147163126806148e-03, + 4.095703141301461001e-03, + 4.159243659443955139e-03, + 4.222768617069220382e-03, + 4.286277913731576308e-03, + 4.349771449024329543e-03, + 4.413249122579430278e-03, + 4.476710834068640607e-03, + 4.540156483203047072e-03, + 4.603585969733505617e-03, + 4.666999193450111633e-03, + 4.730396054183446351e-03, + 4.793776451804156180e-03, + 4.857140286222572795e-03, + 4.920487457389996835e-03, + 4.983817865298086416e-03, + 5.047131409979173713e-03, + 5.110427991506480069e-03, + 5.173707509994202730e-03, + 5.236969865597899086e-03, + 5.300214958513922020e-03, + 5.363442688980601253e-03, + 5.426652957277920686e-03, + 5.489845663727074311e-03, + 5.553020708691745570e-03, + 5.616177992577526222e-03, + 5.679317415832409004e-03, + 5.742438878946252469e-03, + 5.805542282452011774e-03, + 5.868627526925284180e-03, + 5.931694512984070529e-03, + 5.994743141289830823e-03, + 6.057773312547066157e-03, + 6.120784927503513870e-03, + 6.183777886950452864e-03, + 6.246752091722726150e-03, + 6.309707442699136366e-03, + 6.372643840801868985e-03, + 6.435561186997746513e-03, + 6.498459382297738438e-03, + 6.561338327756758258e-03, + 6.624197924474703458e-03, + 6.687038073595977586e-03, + 6.749858676310065315e-03, + 6.812659633850832487e-03, + 6.875440847497810669e-03, + 6.938202218575891846e-03, + 7.000943648454801063e-03, + 7.063665038550390532e-03, + 7.126366290324140026e-03, + 7.189047305283537657e-03, + 7.251707984981398993e-03, + 7.314348231017867193e-03, + 7.376967945038812730e-03, + 7.439567028736311302e-03, + 7.502145383849630894e-03, + 7.564702912164714826e-03, + 7.627239515514104562e-03, + 7.689755095777849568e-03, + 7.752249554883071901e-03, + 7.814722794804518716e-03, + 7.877174717563956846e-03, + 7.939605225231356755e-03, + 8.002014219924510896e-03, + 8.064401603808783042e-03, + 8.126767279098060653e-03, + 8.189111148054534564e-03, + 8.251433112988855109e-03, + 8.313733076259863242e-03, + 8.376010940275445751e-03, + 8.438266607492894353e-03, + 8.500499980417547397e-03, + 8.562710961604604390e-03, + 8.624899453658598641e-03, + 8.687065359233045111e-03, + 8.749208581031654719e-03, + 8.811329021807742801e-03, + 8.873426584364688813e-03, + 8.935501171555493977e-03, + 8.997552686283884563e-03, + 9.059581031503999640e-03, + 9.121586110219957397e-03, + 9.183567825487114547e-03, + 9.245526080411436629e-03, + 9.307460778150101685e-03, + 9.369371821910820256e-03, + 9.431259114953131212e-03, + 9.493122560587858791e-03, + 9.554962062177313822e-03, + 9.616777523135574754e-03, + 9.678568846928770411e-03, + 9.740335937074462436e-03, + 9.802078697142956737e-03, + 9.863797030756590520e-03, + 9.925490841590445257e-03, + 9.987160033371588613e-03, + 1.004880450988042059e-02, + 1.011042417495016353e-02, + 1.017201893246654984e-02, + 1.023358868636916295e-02, + 1.029513334065049190e-02, + 1.035665279935695307e-02, + 1.041814696658786323e-02, + 1.047961574649685680e-02, + 1.054105904329158579e-02, + 1.060247676123296165e-02, + 1.066386880463718496e-02, + 1.072523507787426569e-02, + 1.078657548536839268e-02, + 1.084788993159889817e-02, + 1.090917832109993511e-02, + 1.097044055845996895e-02, + 1.103167654832316012e-02, + 1.109288619538873269e-02, + 1.115406940441131776e-02, + 1.121522608020067251e-02, + 1.127635612762267758e-02, + 1.133745945159883931e-02, + 1.139853595710678923e-02, + 1.145958554917973250e-02, + 1.152060813290761536e-02, + 1.158160361343671743e-02, + 1.164257189596945921e-02, + 1.170351288576509767e-02, + 1.176442648814032821e-02, + 1.182531260846774596e-02, + 1.188617115217767244e-02, + 1.194700202475779474e-02, + 1.200780513175249940e-02, + 1.206858037876435558e-02, + 1.212932767145331533e-02, + 1.219004691553746654e-02, + 1.225073801679215160e-02, + 1.231140088105141597e-02, + 1.237203541420745651e-02, + 1.243264152221085043e-02, + 1.249321911107026915e-02, + 1.255376808685365955e-02, + 1.261428835568756401e-02, + 1.267477982375720541e-02, + 1.273524239730721222e-02, + 1.279567598264138434e-02, + 1.285608048612283533e-02, + 1.291645581417423354e-02, + 1.297680187327810743e-02, + 1.303711856997626442e-02, + 1.309740581087086818e-02, + 1.315766350262413328e-02, + 1.321789155195855769e-02, + 1.327808986565658968e-02, + 1.333825835056158884e-02, + 1.339839691357762319e-02, + 1.345850546166904062e-02, + 1.351858390186164681e-02, + 1.357863214124213277e-02, + 1.363865008695849985e-02, + 1.369863764621963992e-02, + 1.375859472629644385e-02, + 1.381852123452130716e-02, + 1.387841707828829305e-02, + 1.393828216505343248e-02, + 1.399811640233501568e-02, + 1.405791969771289646e-02, + 1.411769195882979500e-02, + 1.417743309339090062e-02, + 1.423714300916388044e-02, + 1.429682161397890366e-02, + 1.435646881572930252e-02, + 1.441608452237164856e-02, + 1.447566864192501718e-02, + 1.453522108247232332e-02, + 1.459474175215975424e-02, + 1.465423055919728990e-02, + 1.471368741185797961e-02, + 1.477311221847935757e-02, + 1.483250488746279232e-02, + 1.489186532727362899e-02, + 1.495119344644165772e-02, + 1.501048915356105115e-02, + 1.506975235729022568e-02, + 1.512898296635256483e-02, + 1.518818088953624405e-02, + 1.524734603569456205e-02, + 1.530647831374526077e-02, + 1.536557763267192532e-02, + 1.542464390152348784e-02, + 1.548367702941385975e-02, + 1.554267692552309919e-02, + 1.560164349909679352e-02, + 1.566057665944674618e-02, + 1.571947631595015105e-02, + 1.577834237805098364e-02, + 1.583717475525943039e-02, + 1.589597335715183662e-02, + 1.595473809337118881e-02, + 1.601346887362788129e-02, + 1.607216560769811689e-02, + 1.613082820542568324e-02, + 1.618945657672152955e-02, + 1.624805063156369370e-02, + 1.630661027999748269e-02, + 1.636513543213596183e-02, + 1.642362599816000329e-02, + 1.648208188831769630e-02, + 1.654050301292562739e-02, + 1.659888928236821423e-02, + 1.665724060709834753e-02, + 1.671555689763668320e-02, + 1.677383806457279775e-02, + 1.683208401856492453e-02, + 1.689029467033959647e-02, + 1.694846993069271113e-02, + 1.700660971048877437e-02, + 1.706471392066165327e-02, + 1.712278247221449973e-02, + 1.718081527621979562e-02, + 1.723881224381957483e-02, + 1.729677328622537813e-02, + 1.735469831471887076e-02, + 1.741258724065141220e-02, + 1.747043997544433722e-02, + 1.752825643058949362e-02, + 1.758603651764882592e-02, + 1.764378014825504146e-02, + 1.770148723411074654e-02, + 1.775915768699002154e-02, + 1.781679141873760905e-02, + 1.787438834126882370e-02, + 1.793194836657062419e-02, + 1.798947140670089859e-02, + 1.804695737378920334e-02, + 1.810440618003624283e-02, + 1.816181773771462921e-02, + 1.821919195916886502e-02, + 1.827652875681473610e-02, + 1.833382804314074438e-02, + 1.839108973070740713e-02, + 1.844831373214711120e-02, + 1.850549996016511226e-02, + 1.856264832753910798e-02, + 1.861975874711960244e-02, + 1.867683113182946192e-02, + 1.873386539466499745e-02, + 1.879086144869537844e-02, + 1.884781920706292066e-02, + 1.890473858298330825e-02, + 1.896161948974575337e-02, + 1.901846184071319737e-02, + 1.907526554932162735e-02, + 1.913203052908175883e-02, + 1.918875669357802613e-02, + 1.924544395646841585e-02, + 1.930209223148566730e-02, + 1.935870143243695676e-02, + 1.941527147320348465e-02, + 1.947180226774128040e-02, + 1.952829373008137942e-02, + 1.958474577432950045e-02, + 1.964115831466596226e-02, + 1.969753126534676615e-02, + 1.975386454070311368e-02, + 1.981015805514102501e-02, + 1.986641172314269899e-02, + 1.992262545926549305e-02, + 1.997879917814304740e-02, + 2.003493279448409839e-02, + 2.009102622307387329e-02, + 2.014707937877409719e-02, + 2.020309217652196607e-02, + 2.025906453133157273e-02, + 2.031499635829348005e-02, + 2.037088757257453711e-02, + 2.042673808941869451e-02, + 2.048254782414686212e-02, + 2.053831669215672867e-02, + 2.059404460892302544e-02, + 2.064973148999798766e-02, + 2.070537725101138926e-02, + 2.076098180766997731e-02, + 2.081654507575843999e-02, + 2.087206697113944479e-02, + 2.092754740975324643e-02, + 2.098298630761810321e-02, + 2.103838358083039844e-02, + 2.109373914556500126e-02, + 2.114905291807493704e-02, + 2.120432481469178634e-02, + 2.125955475182600418e-02, + 2.131474264596618096e-02, + 2.136988841368029843e-02, + 2.142499197161525787e-02, + 2.148005323649706741e-02, + 2.153507212513070326e-02, + 2.159004855440067872e-02, + 2.164498244127135290e-02, + 2.169987370278587610e-02, + 2.175472225606790017e-02, + 2.180952801832057239e-02, + 2.186429090682726409e-02, + 2.191901083895080385e-02, + 2.197368773213496593e-02, + 2.202832150390363411e-02, + 2.208291207186054150e-02, + 2.213745935369113710e-02, + 2.219196326716087533e-02, + 2.224642373011581978e-02, + 2.230084066048340641e-02, + 2.235521397627197523e-02, + 2.240954359557122827e-02, + 2.246382943655168135e-02, + 2.251807141746572580e-02, + 2.257226945664729534e-02, + 2.262642347251155039e-02, + 2.268053338355583912e-02, + 2.273459910835921166e-02, + 2.278862056558310020e-02, + 2.284259767397031279e-02, + 2.289653035234661543e-02, + 2.295041851962010410e-02, + 2.300426209478064615e-02, + 2.305806099690147978e-02, + 2.311181514513866928e-02, + 2.316552445873028623e-02, + 2.321918885699807145e-02, + 2.327280825934665079e-02, + 2.332638258526398278e-02, + 2.337991175432082430e-02, + 2.343339568617197263e-02, + 2.348683430055568608e-02, + 2.354022751729339599e-02, + 2.359357525629088292e-02, + 2.364687743753763130e-02, + 2.370013398110721800e-02, + 2.375334480715705562e-02, + 2.380650983592918005e-02, + 2.385962898774990001e-02, + 2.391270218302966530e-02, + 2.396572934226406243e-02, + 2.401871038603314856e-02, + 2.407164523500179149e-02, + 2.412453380991977023e-02, + 2.417737603162213242e-02, + 2.423017182102873632e-02, + 2.428292109914501756e-02, + 2.433562378706176019e-02, + 2.438827980595561010e-02, + 2.444088907708792668e-02, + 2.449345152180675347e-02, + 2.454596706154555524e-02, + 2.459843561782401947e-02, + 2.465085711224765386e-02, + 2.470323146650820617e-02, + 2.475555860238407707e-02, + 2.480783844173963665e-02, + 2.486007090652623402e-02, + 2.491225591878147919e-02, + 2.496439340063012075e-02, + 2.501648327428358104e-02, + 2.506852546204049043e-02, + 2.512051988628619462e-02, + 2.517246646949351796e-02, + 2.522436513422279120e-02, + 2.527621580312165717e-02, + 2.532801839892502571e-02, + 2.537977284445587164e-02, + 2.543147906262482882e-02, + 2.548313697643064812e-02, + 2.553474650895951395e-02, + 2.558630758338611977e-02, + 2.563782012297365770e-02, + 2.568928405107293728e-02, + 2.574069929112395017e-02, + 2.579206576665484321e-02, + 2.584338340128253600e-02, + 2.589465211871266187e-02, + 2.594587184274011610e-02, + 2.599704249724808097e-02, + 2.604816400620954542e-02, + 2.609923629368640988e-02, + 2.615025928382997897e-02, + 2.620123290088078108e-02, + 2.625215706916932470e-02, + 2.630303171311541149e-02, + 2.635385675722871218e-02, + 2.640463212610890190e-02, + 2.645535774444541383e-02, + 2.650603353701826495e-02, + 2.655665942869674459e-02, + 2.660723534444155505e-02, + 2.665776120930292079e-02, + 2.670823694842231616e-02, + 2.675866248703104300e-02, + 2.680903775045221163e-02, + 2.685936266409863493e-02, + 2.690963715347486143e-02, + 2.695986114417627325e-02, + 2.701003456188947119e-02, + 2.706015733239209783e-02, + 2.711022938155348283e-02, + 2.716025063533441392e-02, + 2.721022101978688018e-02, + 2.726014046105520658e-02, + 2.731000888537501656e-02, + 2.735982621907419657e-02, + 2.740959238857220218e-02, + 2.745930732038124114e-02, + 2.750897094110518748e-02, + 2.755858317744065353e-02, + 2.760814395617632380e-02, + 2.765765320419369400e-02, + 2.770711084846686281e-02, + 2.775651681606263604e-02, + 2.780587103414065148e-02, + 2.785517342995381951e-02, + 2.790442393084746620e-02, + 2.795362246426062736e-02, + 2.800276895772571203e-02, + 2.805186333886787106e-02, + 2.810090553540634667e-02, + 2.814989547515357043e-02, + 2.819883308601616942e-02, + 2.824771829599385595e-02, + 2.829655103318080497e-02, + 2.834533122576504346e-02, + 2.839405880202827345e-02, + 2.844273369034719390e-02, + 2.849135581919207127e-02, + 2.853992511712797470e-02, + 2.858844151281448795e-02, + 2.863690493500548745e-02, + 2.868531531255010328e-02, + 2.873367257439157080e-02, + 2.878197664956852128e-02, + 2.883022746721462456e-02, + 2.887842495655824210e-02, + 2.892656904692334635e-02, + 2.897465966772911489e-02, + 2.902269674849022874e-02, + 2.907068021881652198e-02, + 2.911861000841382482e-02, + 2.916648604708366524e-02, + 2.921430826472300873e-02, + 2.926207659132511879e-02, + 2.930979095697915440e-02, + 2.935745129187036437e-02, + 2.940505752628004218e-02, + 2.945260959058615055e-02, + 2.950010741526296748e-02, + 2.954755093088088161e-02, + 2.959494006810742608e-02, + 2.964227475770641468e-02, + 2.968955493053865649e-02, + 2.973678051756176513e-02, + 2.978395144983049872e-02, + 2.983106765849674949e-02, + 2.987812907480911356e-02, + 2.992513563011404629e-02, + 2.997208725585529671e-02, + 3.001898388357359879e-02, + 3.006582544490793776e-02, + 3.011261187159435318e-02, + 3.015934309546741687e-02, + 3.020601904845861274e-02, + 3.025263966259785289e-02, + 3.029920487001376908e-02, + 3.034571460293175940e-02, + 3.039216879367665283e-02, + 3.043856737467112716e-02, + 3.048491027843603859e-02, + 3.053119743759135155e-02, + 3.057742878485526089e-02, + 3.062360425304504891e-02, + 3.066972377507631506e-02, + 3.071578728396373928e-02, + 3.076179471282143238e-02, + 3.080774599486198542e-02, + 3.085364106339748974e-02, + 3.089947985183929061e-02, + 3.094526229369831682e-02, + 3.099098832258440767e-02, + 3.103665787220753411e-02, + 3.108227087637690372e-02, + 3.112782726900189395e-02, + 3.117332698409138250e-02, + 3.121876995575450717e-02, + 3.126415611819992335e-02, + 3.130948540573679634e-02, + 3.135475775277440924e-02, + 3.139997309382257934e-02, + 3.144513136349094684e-02, + 3.149023249648997408e-02, + 3.153527642763105654e-02, + 3.158026309182550978e-02, + 3.162519242408606129e-02, + 3.167006435952588600e-02, + 3.171487883335926544e-02, + 3.175963578090131717e-02, + 3.180433513756870251e-02, + 3.184897683887896042e-02, + 3.189356082045059076e-02, + 3.193808701800440741e-02, + 3.198255536736212268e-02, + 3.202696580444675672e-02, + 3.207131826528335228e-02, + 3.211561268599881502e-02, + 3.215984900282177483e-02, + 3.220402715208228739e-02, + 3.224814707021324278e-02, + 3.229220869374910957e-02, + 3.233621195932650377e-02, + 3.238015680368463295e-02, + 3.242404316366487987e-02, + 3.246787097621123275e-02, + 3.251164017836971620e-02, + 3.255535070728968888e-02, + 3.259900250022278873e-02, + 3.264259549452338399e-02, + 3.268612962764892022e-02, + 3.272960483715996877e-02, + 3.277302106071983828e-02, + 3.281637823609502569e-02, + 3.285967630115527172e-02, + 3.290291519387399805e-02, + 3.294609485232741219e-02, + 3.298921521469563856e-02, + 3.303227621926228125e-02, + 3.307527780441442411e-02, + 3.311821990864301235e-02, + 3.316110247054295662e-02, + 3.320392542881293874e-02, + 3.324668872225566840e-02, + 3.328939228977766812e-02, + 3.333203607039020300e-02, + 3.337462000320820521e-02, + 3.341714402745118995e-02, + 3.345960808244304030e-02, + 3.350201210761241666e-02, + 3.354435604249194486e-02, + 3.358663982671948600e-02, + 3.362886340003746338e-02, + 3.367102670229293881e-02, + 3.371312967343804284e-02, + 3.375517225353014822e-02, + 3.379715438273103723e-02, + 3.383907600130822702e-02, + 3.388093704963424796e-02, + 3.392273746818726121e-02, + 3.396447719755021910e-02, + 3.400615617841196842e-02, + 3.404777435156712551e-02, + 3.408933165791527137e-02, + 3.413082803846225616e-02, + 3.417226343431958163e-02, + 3.421363778670474115e-02, + 3.425495103694086579e-02, + 3.429620312645744601e-02, + 3.433739399679038018e-02, + 3.437852358958077420e-02, + 3.441959184657687049e-02, + 3.446059870963313204e-02, + 3.450154412071029103e-02, + 3.454242802187548755e-02, + 3.458325035530281089e-02, + 3.462401106327305661e-02, + 3.466471008817310906e-02, + 3.470534737249748869e-02, + 3.474592285884720716e-02, + 3.478643648993028081e-02, + 3.482688820856180006e-02, + 3.486727795766409593e-02, + 3.490760568026685107e-02, + 3.494787131950659320e-02, + 3.498807481862772212e-02, + 3.502821612098168391e-02, + 3.506829517002767876e-02, + 3.510831190933250134e-02, + 3.514826628257057550e-02, + 3.518815823352396122e-02, + 3.522798770608292357e-02, + 3.526775464424503764e-02, + 3.530745899211663874e-02, + 3.534710069391127502e-02, + 3.538667969395122709e-02, + 3.542619593666693212e-02, + 3.546564936659675482e-02, + 3.550503992838759809e-02, + 3.554436756679496545e-02, + 3.558363222668284309e-02, + 3.562283385302319333e-02, + 3.566197239089771709e-02, + 3.570104778549576530e-02, + 3.574005998211619156e-02, + 3.577900892616650563e-02, + 3.581789456316312320e-02, + 3.585671683873138671e-02, + 3.589547569860598170e-02, + 3.593417108863036086e-02, + 3.597280295475781958e-02, + 3.601137124305038573e-02, + 3.604987589967970085e-02, + 3.608831687092702717e-02, + 3.612669410318265772e-02, + 3.616500754294701969e-02, + 3.620325713682984170e-02, + 3.624144283155083385e-02, + 3.627956457393927137e-02, + 3.631762231093448035e-02, + 3.635561598958575447e-02, + 3.639354555705210520e-02, + 3.643141096060308753e-02, + 3.646921214761834895e-02, + 3.650694906558710207e-02, + 3.654462166210971363e-02, + 3.658222988489655270e-02, + 3.661977368176833753e-02, + 3.665725300065623971e-02, + 3.669466778960253639e-02, + 3.673201799675936130e-02, + 3.676930357039021047e-02, + 3.680652445886887364e-02, + 3.684368061068030165e-02, + 3.688077197442054395e-02, + 3.691779849879598535e-02, + 3.695476013262454645e-02, + 3.699165682483517709e-02, + 3.702848852446798122e-02, + 3.706525518067427943e-02, + 3.710195674271675459e-02, + 3.713859315996962535e-02, + 3.717516438191800082e-02, + 3.721167035815951818e-02, + 3.724811103840217075e-02, + 3.728448637246636888e-02, + 3.732079631028429462e-02, + 3.735704080189966581e-02, + 3.739321979746790259e-02, + 3.742933324725643274e-02, + 3.746538110164512186e-02, + 3.750136331112498972e-02, + 3.753727982629992410e-02, + 3.757313059788566778e-02, + 3.760891557671035973e-02, + 3.764463471371400777e-02, + 3.768028795994943225e-02, + 3.771587526658191220e-02, + 3.775139658488872729e-02, + 3.778685186626005305e-02, + 3.782224106219898158e-02, + 3.785756412432041834e-02, + 3.789282100435279604e-02, + 3.792801165413693665e-02, + 3.796313602562685630e-02, + 3.799819407088898815e-02, + 3.803318574210339670e-02, + 3.806811099156269529e-02, + 3.810296977167260818e-02, + 3.813776203495237993e-02, + 3.817248773403419254e-02, + 3.820714682166398424e-02, + 3.824173925070004781e-02, + 3.827626497411521639e-02, + 3.831072394499514255e-02, + 3.834511611653915186e-02, + 3.837944144206033997e-02, + 3.841369987498523958e-02, + 3.844789136885402164e-02, + 3.848201587732093254e-02, + 3.851607335415382222e-02, + 3.855006375323475482e-02, + 3.858398702855914131e-02, + 3.861784313423687748e-02, + 3.865163202449200391e-02, + 3.868535365366219253e-02, + 3.871900797619973189e-02, + 3.875259494667109006e-02, + 3.878611451975695623e-02, + 3.881956665025220604e-02, + 3.885295129306654688e-02, + 3.888626840322361583e-02, + 3.891951793586221481e-02, + 3.895269984623520726e-02, + 3.898581408971042717e-02, + 3.901886062177004760e-02, + 3.905183939801148280e-02, + 3.908475037414656933e-02, + 3.911759350600205881e-02, + 3.915036874951986073e-02, + 3.918307606075657756e-02, + 3.921571539588410149e-02, + 3.924828671118912177e-02, + 3.928078996307370063e-02, + 3.931322510805503739e-02, + 3.934559210276566965e-02, + 3.937789090395314717e-02, + 3.941012146848074660e-02, + 3.944228375332699960e-02, + 3.947437771558567204e-02, + 3.950640331246654813e-02, + 3.953836050129470175e-02, + 3.957024923951069778e-02, + 3.960206948467088345e-02, + 3.963382119444764512e-02, + 3.966550432662874215e-02, + 3.969711883911788974e-02, + 3.972866468993483530e-02, + 3.976014183721524042e-02, + 3.979155023921041728e-02, + 3.982288985428834860e-02, + 3.985416064093236233e-02, + 3.988536255774281086e-02, + 3.991649556343535021e-02, + 3.994755961684268164e-02, + 3.997855467691326797e-02, + 4.000948070271190260e-02, + 4.004033765342011886e-02, + 4.007112548833603044e-02, + 4.010184416687374853e-02, + 4.013249364856391610e-02, + 4.016307389305453363e-02, + 4.019358486010961989e-02, + 4.022402650960966303e-02, + 4.025439880155255723e-02, + 4.028470169605281176e-02, + 4.031493515334153704e-02, + 4.034509913376676388e-02, + 4.037519359779363770e-02, + 4.040521850600443943e-02, + 4.043517381909795400e-02, + 4.046505949789062917e-02, + 4.049487550331572899e-02, + 4.052462179642362522e-02, + 4.055429833838242182e-02, + 4.058390509047671291e-02, + 4.061344201410897747e-02, + 4.064290907079907977e-02, + 4.067230622218399178e-02, + 4.070163343001853562e-02, + 4.073089065617448851e-02, + 4.076007786264156801e-02, + 4.078919501152725863e-02, + 4.081824206505596520e-02, + 4.084721898557066438e-02, + 4.087612573553148221e-02, + 4.090496227751674874e-02, + 4.093372857422188787e-02, + 4.096242458846110351e-02, + 4.099105028316581134e-02, + 4.101960562138576988e-02, + 4.104809056628857394e-02, + 4.107650508116002935e-02, + 4.110484912940359087e-02, + 4.113312267454132670e-02, + 4.116132568021341198e-02, + 4.118945811017789976e-02, + 4.121751992831149125e-02, + 4.124551109860874476e-02, + 4.127343158518309574e-02, + 4.130128135226606573e-02, + 4.132906036420743584e-02, + 4.135676858547574636e-02, + 4.138440598065821346e-02, + 4.141197251445986188e-02, + 4.143946815170489184e-02, + 4.146689285733648478e-02, + 4.149424659641535312e-02, + 4.152152933412206481e-02, + 4.154874103575521144e-02, + 4.157588166673271968e-02, + 4.160295119259079660e-02, + 4.162994957898474846e-02, + 4.165687679168924434e-02, + 4.168373279659701863e-02, + 4.171051755972068897e-02, + 4.173723104719111177e-02, + 4.176387322525881157e-02, + 4.179044406029305131e-02, + 4.181694351878247062e-02, + 4.184337156733487773e-02, + 4.186972817267697183e-02, + 4.189601330165514115e-02, + 4.192222692123483141e-02, + 4.194836899850087203e-02, + 4.197443950065736507e-02, + 4.200043839502826809e-02, + 4.202636564905619376e-02, + 4.205222123030398496e-02, + 4.207800510645344494e-02, + 4.210371724530655863e-02, + 4.212935761478400071e-02, + 4.215492618292692589e-02, + 4.218042291789587256e-02, + 4.220584778797071418e-02, + 4.223120076155160996e-02, + 4.225648180715804725e-02, + 4.228169089342957015e-02, + 4.230682798912532849e-02, + 4.233189306312473005e-02, + 4.235688608442691322e-02, + 4.238180702215042783e-02, + 4.240665584553467843e-02, + 4.243143252393841158e-02, + 4.245613702684096491e-02, + 4.248076932384108745e-02, + 4.250532938465809152e-02, + 4.252981717913126986e-02, + 4.255423267722031194e-02, + 4.257857584900459624e-02, + 4.260284666468450165e-02, + 4.262704509457988095e-02, + 4.265117110913134446e-02, + 4.267522467889990623e-02, + 4.269920577456648436e-02, + 4.272311436693288639e-02, + 4.274695042692087943e-02, + 4.277071392557330737e-02, + 4.279440483405283491e-02, + 4.281802312364284963e-02, + 4.284156876574772566e-02, + 4.286504173189194938e-02, + 4.288844199372041088e-02, + 4.291176952299937536e-02, + 4.293502429161517170e-02, + 4.295820627157499738e-02, + 4.298131543500662705e-02, + 4.300435175415914801e-02, + 4.302731520140155169e-02, + 4.305020574922435728e-02, + 4.307302337023868888e-02, + 4.309576803717644206e-02, + 4.311843972289054056e-02, + 4.314103840035463100e-02, + 4.316356404266382535e-02, + 4.318601662303341721e-02, + 4.320839611480033898e-02, + 4.323070249142237087e-02, + 4.325293572647821716e-02, + 4.327509579366783932e-02, + 4.329718266681227556e-02, + 4.331919631985362701e-02, + 4.334113672685532132e-02, + 4.336300386200154372e-02, + 4.338479769959851379e-02, + 4.340651821407276456e-02, + 4.342816537997257198e-02, + 4.344973917196782304e-02, + 4.347123956484875984e-02, + 4.349266653352808903e-02, + 4.351402005303903892e-02, + 4.353530009853669169e-02, + 4.355650664529703286e-02, + 4.357763966871831124e-02, + 4.359869914431948462e-02, + 4.361968504774129535e-02, + 4.364059735474615925e-02, + 4.366143604121744404e-02, + 4.368220108316066275e-02, + 4.370289245670275907e-02, + 4.372351013809213510e-02, + 4.374405410369883174e-02, + 4.376452433001483400e-02, + 4.378492079365330775e-02, + 4.380524347134923807e-02, + 4.382549233995963051e-02, + 4.384566737646303225e-02, + 4.386576855795947666e-02, + 4.388579586167146857e-02, + 4.390574926494226343e-02, + 4.392562874523776167e-02, + 4.394543428014544700e-02, + 4.396516584737489297e-02, + 4.398482342475687479e-02, + 4.400440699024446567e-02, + 4.402391652191318255e-02, + 4.404335199795945954e-02, + 4.406271339670245896e-02, + 4.408200069658291254e-02, + 4.410121387616348920e-02, + 4.412035291412935711e-02, + 4.413941778928728854e-02, + 4.415840848056604845e-02, + 4.417732496701667899e-02, + 4.419616722781209706e-02, + 4.421493524224776733e-02, + 4.423362898974068924e-02, + 4.425224844983031286e-02, + 4.427079360217807402e-02, + 4.428926442656784535e-02, + 4.430766090290524234e-02, + 4.432598301121865036e-02, + 4.434423073165827400e-02, + 4.436240404449614400e-02, + 4.438050293012759523e-02, + 4.439852736906944874e-02, + 4.441647734196097624e-02, + 4.443435282956366417e-02, + 4.445215381276155370e-02, + 4.446988027256074116e-02, + 4.448753219008983600e-02, + 4.450510954659954443e-02, + 4.452261232346333558e-02, + 4.454004050217674759e-02, + 4.455739406435781091e-02, + 4.457467299174671521e-02, + 4.459187726620679471e-02, + 4.460900686972280038e-02, + 4.462606178440271104e-02, + 4.464304199247658145e-02, + 4.465994747629730560e-02, + 4.467677821833955509e-02, + 4.469353420120147913e-02, + 4.471021540760275470e-02, + 4.472682182038610621e-02, + 4.474335342251692382e-02, + 4.475981019708262509e-02, + 4.477619212729356396e-02, + 4.479249919648286421e-02, + 4.480873138810563538e-02, + 4.482488868573979851e-02, + 4.484097107308594732e-02, + 4.485697853396750090e-02, + 4.487291105233014860e-02, + 4.488876861224208592e-02, + 4.490455119789465988e-02, + 4.492025879360145996e-02, + 4.493589138379894266e-02, + 4.495144895304598737e-02, + 4.496693148602431966e-02, + 4.498233896753831701e-02, + 4.499767138251514059e-02, + 4.501292871600445084e-02, + 4.502811095317873352e-02, + 4.504321807933310551e-02, + 4.505825007988568942e-02, + 4.507320694037696140e-02, + 4.508808864647020215e-02, + 4.510289518395162178e-02, + 4.511762653872988804e-02, + 4.513228269683703525e-02, + 4.514686364442704880e-02, + 4.516136936777732230e-02, + 4.517579985328755432e-02, + 4.519015508748051163e-02, + 4.520443505700189046e-02, + 4.521863974861969199e-02, + 4.523276914922508968e-02, + 4.524682324583217258e-02, + 4.526080202557729998e-02, + 4.527470547572014226e-02, + 4.528853358364321596e-02, + 4.530228633685130790e-02, + 4.531596372297260616e-02, + 4.532956572975782583e-02, + 4.534309234508052816e-02, + 4.535654355693750223e-02, + 4.536991935344780041e-02, + 4.538321972285354333e-02, + 4.539644465351985042e-02, + 4.540959413393459015e-02, + 4.542266815270844943e-02, + 4.543566669857484336e-02, + 4.544858976039039405e-02, + 4.546143732713430613e-02, + 4.547420938790857486e-02, + 4.548690593193838866e-02, + 4.549952694857161556e-02, + 4.551207242727884489e-02, + 4.552454235765394236e-02, + 4.553693672941295373e-02, + 4.554925553239561747e-02, + 4.556149875656386600e-02, + 4.557366639200279013e-02, + 4.558575842892043095e-02, + 4.559777485764759247e-02, + 4.560971566863782772e-02, + 4.562158085246768857e-02, + 4.563337039983682980e-02, + 4.564508430156710012e-02, + 4.565672254860396462e-02, + 4.566828513201523498e-02, + 4.567977204299190214e-02, + 4.569118327284776154e-02, + 4.570251881301905933e-02, + 4.571377865506562332e-02, + 4.572496279066934344e-02, + 4.573607121163571210e-02, + 4.574710390989249198e-02, + 4.575806087749052786e-02, + 4.576894210660370499e-02, + 4.577974758952831763e-02, + 4.579047731868374910e-02, + 4.580113128661231908e-02, + 4.581170948597879100e-02, + 4.582221190957123935e-02, + 4.583263855030035583e-02, + 4.584298940119932442e-02, + 4.585326445542452917e-02, + 4.586346370625526275e-02, + 4.587358714709323382e-02, + 4.588363477146313596e-02, + 4.589360657301242569e-02, + 4.590350254551137793e-02, + 4.591332268285312074e-02, + 4.592306697905332302e-02, + 4.593273542825065947e-02, + 4.594232802470661625e-02, + 4.595184476280494285e-02, + 4.596128563705264430e-02, + 4.597065064207932206e-02, + 4.597993977263746535e-02, + 4.598915302360175039e-02, + 4.599829038997012287e-02, + 4.600735186686306932e-02, + 4.601633744952372124e-02, + 4.602524713331795220e-02, + 4.603408091373415584e-02, + 4.604283878638391891e-02, + 4.605152074700077924e-02, + 4.606012679144144001e-02, + 4.606865691568515220e-02, + 4.607711111583371461e-02, + 4.608548938811148771e-02, + 4.609379172886573367e-02, + 4.610201813456612369e-02, + 4.611016860180501553e-02, + 4.611824312729714825e-02, + 4.612624170788016259e-02, + 4.613416434051410830e-02, + 4.614201102228144419e-02, + 4.614978175038756542e-02, + 4.615747652216006802e-02, + 4.616509533504908197e-02, + 4.617263818662751401e-02, + 4.618010507459061054e-02, + 4.618749599675576328e-02, + 4.619481095106353630e-02, + 4.620204993557679163e-02, + 4.620921294848011340e-02, + 4.621629998808146622e-02, + 4.622331105281067554e-02, + 4.623024614122027420e-02, + 4.623710525198515553e-02, + 4.624388838390233042e-02, + 4.625059553589121880e-02, + 4.625722670699422556e-02, + 4.626378189637531113e-02, + 4.627026110332115028e-02, + 4.627666432724074352e-02, + 4.628299156766520900e-02, + 4.628924282424827508e-02, + 4.629541809676534364e-02, + 4.630151738511478765e-02, + 4.630754068931677847e-02, + 4.631348800951382710e-02, + 4.631935934597078419e-02, + 4.632515469907422939e-02, + 4.633087406933380364e-02, + 4.633651745738025240e-02, + 4.634208486396713261e-02, + 4.634757628997011186e-02, + 4.635299173638655901e-02, + 4.635833120433643928e-02, + 4.636359469506144693e-02, + 4.636878220992547706e-02, + 4.637389375041436196e-02, + 4.637892931813607927e-02, + 4.638388891482050219e-02, + 4.638877254231976027e-02, + 4.639358020260720555e-02, + 4.639831189777918891e-02, + 4.640296763005341552e-02, + 4.640754740176927795e-02, + 4.641205121538845291e-02, + 4.641647907349420732e-02, + 4.642083097879235593e-02, + 4.642510693410929756e-02, + 4.642930694239447847e-02, + 4.643343100671827595e-02, + 4.643747913027346241e-02, + 4.644145131637383850e-02, + 4.644534756845597467e-02, + 4.644916789007689367e-02, + 4.645291228491644359e-02, + 4.645658075677534110e-02, + 4.646017330957634417e-02, + 4.646368994736380098e-02, + 4.646713067430340710e-02, + 4.647049549468277446e-02, + 4.647378441291091788e-02, + 4.647699743351822732e-02, + 4.648013456115709929e-02, + 4.648319580060072953e-02, + 4.648618115674413992e-02, + 4.648909063460393565e-02, + 4.649192423931795132e-02, + 4.649468197614518156e-02, + 4.649736385046666920e-02, + 4.649996986778406199e-02, + 4.650250003372084773e-02, + 4.650495435402141747e-02, + 4.650733283455179418e-02, + 4.650963548129893183e-02, + 4.651186230037127750e-02, + 4.651401329799820933e-02, + 4.651608848053043893e-02, + 4.651808785443990041e-02, + 4.652001142631959074e-02, + 4.652185920288321591e-02, + 4.652363119096619704e-02, + 4.652532739752471974e-02, + 4.652694782963557457e-02, + 4.652849249449725333e-02, + 4.652996139942870701e-02, + 4.653135455187016462e-02, + 4.653267195938237677e-02, + 4.653391362964715006e-02, + 4.653507957046719434e-02, + 4.653616978976618523e-02, + 4.653718429558821590e-02, + 4.653812309609819259e-02, + 4.653898619958238281e-02, + 4.653977361444665978e-02, + 4.654048534921883390e-02, + 4.654112141254641150e-02, + 4.654168181319769809e-02, + 4.654216656006192332e-02, + 4.654257566214881070e-02, + 4.654290912858834173e-02, + 4.654316696863118608e-02, + 4.654334919164828527e-02, + 4.654345580713151187e-02, + 4.654348682469267029e-02, + 4.654344225406395474e-02, + 4.654332210509835865e-02, + 4.654312638776876565e-02, + 4.654285511216832427e-02, + 4.654250828851087818e-02, + 4.654208592712991838e-02, + 4.654158803847958936e-02, + 4.654101463313397441e-02, + 4.654036572178739395e-02, + 4.653964131525414882e-02, + 4.653884142446853417e-02, + 4.653796606048517942e-02, + 4.653701523447848626e-02, + 4.653598895774290617e-02, + 4.653488724169271840e-02, + 4.653371009786190504e-02, + 4.653245753790516415e-02, + 4.653112957359580026e-02, + 4.652972621682805593e-02, + 4.652824747961500917e-02, + 4.652669337408994743e-02, + 4.652506391250589568e-02, + 4.652335910723540829e-02, + 4.652157897077072862e-02, + 4.651972351572335879e-02, + 4.651779275482467724e-02, + 4.651578670092567508e-02, + 4.651370536699666464e-02, + 4.651154876612724476e-02, + 4.650931691152672409e-02, + 4.650700981652330229e-02, + 4.650462749456536760e-02, + 4.650216995921974128e-02, + 4.649963722417283646e-02, + 4.649702930323047767e-02, + 4.649434621031750536e-02, + 4.649158795947758160e-02, + 4.648875456487429336e-02, + 4.648584604078928595e-02, + 4.648286240162397692e-02, + 4.647980366189869567e-02, + 4.647666983625263482e-02, + 4.647346093944350331e-02, + 4.647017698634862970e-02, + 4.646681799196365065e-02, + 4.646338397140314935e-02, + 4.645987493990068329e-02, + 4.645629091280814582e-02, + 4.645263190559639072e-02, + 4.644889793385477417e-02, + 4.644508901329134909e-02, + 4.644120515973289981e-02, + 4.643724638912419961e-02, + 4.643321271752898216e-02, + 4.642910416112952521e-02, + 4.642492073622606075e-02, + 4.642066245923742729e-02, + 4.641632934670053556e-02, + 4.641192141527119425e-02, + 4.640743868172281933e-02, + 4.640288116294723902e-02, + 4.639824887595450642e-02, + 4.639354183787269825e-02, + 4.638876006594776918e-02, + 4.638390357754425958e-02, + 4.637897239014421996e-02, + 4.637396652134755104e-02, + 4.636888598887239921e-02, + 4.636373081055481654e-02, + 4.635850100434819182e-02, + 4.635319658832403461e-02, + 4.634781758067140628e-02, + 4.634236399969740572e-02, + 4.633683586382620484e-02, + 4.633123319160001308e-02, + 4.632555600167841126e-02, + 4.631980431283838628e-02, + 4.631397814397456708e-02, + 4.630807751409896783e-02, + 4.630210244234075206e-02, + 4.629605294794685022e-02, + 4.628992905028084942e-02, + 4.628373076882393022e-02, + 4.627745812317453356e-02, + 4.627111113304812479e-02, + 4.626468981827708965e-02, + 4.625819419881116445e-02, + 4.625162429471675607e-02, + 4.624498012617768439e-02, + 4.623826171349398190e-02, + 4.623146907708312880e-02, + 4.622460223747910935e-02, + 4.621766121533291138e-02, + 4.621064603141192273e-02, + 4.620355670660050013e-02, + 4.619639326189930312e-02, + 4.618915571842589773e-02, + 4.618184409741402791e-02, + 4.617445842021400404e-02, + 4.616699870829284180e-02, + 4.615946498323353353e-02, + 4.615185726673549926e-02, + 4.614417558061475327e-02, + 4.613641994680282854e-02, + 4.612859038734837963e-02, + 4.612068692441522594e-02, + 4.611270958028396844e-02, + 4.610465837735083089e-02, + 4.609653333812810394e-02, + 4.608833448524404797e-02, + 4.608006184144296247e-02, + 4.607171542958450605e-02, + 4.606329527264432094e-02, + 4.605480139371410236e-02, + 4.604623381600073118e-02, + 4.603759256282686368e-02, + 4.602887765763096634e-02, + 4.602008912396623325e-02, + 4.601122698550250134e-02, + 4.600229126602396745e-02, + 4.599328198943082591e-02, + 4.598419917973797788e-02, + 4.597504286107612775e-02, + 4.596581305769095044e-02, + 4.595650979394320240e-02, + 4.594713309430879800e-02, + 4.593768298337882333e-02, + 4.592815948585871749e-02, + 4.591856262656971582e-02, + 4.590889243044728174e-02, + 4.589914892254214757e-02, + 4.588933212801925982e-02, + 4.587944207215874370e-02, + 4.586947878035522314e-02, + 4.585944227811782764e-02, + 4.584933259107035891e-02, + 4.583914974495084671e-02, + 4.582889376561192357e-02, + 4.581856467902094276e-02, + 4.580816251125886807e-02, + 4.579768728852145337e-02, + 4.578713903711848637e-02, + 4.577651778347384404e-02, + 4.576582355412529141e-02, + 4.575505637572532813e-02, + 4.574421627503959253e-02, + 4.573330327894827019e-02, + 4.572231741444494207e-02, + 4.571125870863741725e-02, + 4.570012718874671975e-02, + 4.568892288210821967e-02, + 4.567764581617043962e-02, + 4.566629601849528375e-02, + 4.565487351675906469e-02, + 4.564337833875038025e-02, + 4.563181051237234775e-02, + 4.562017006564036276e-02, + 4.560845702668387541e-02, + 4.559667142374534271e-02, + 4.558481328518015907e-02, + 4.557288263945696166e-02, + 4.556087951515746387e-02, + 4.554880394097637897e-02, + 4.553665594572125358e-02, + 4.552443555831261340e-02, + 4.551214280778339422e-02, + 4.549977772327980230e-02, + 4.548734033406041932e-02, + 4.547483066949657010e-02, + 4.546224875907175361e-02, + 4.544959463238260750e-02, + 4.543686831913765212e-02, + 4.542406984915796364e-02, + 4.541119925237691729e-02, + 4.539825655884022204e-02, + 4.538524179870569164e-02, + 4.537215500224318909e-02, + 4.535899619983452952e-02, + 4.534576542197397975e-02, + 4.533246269926723832e-02, + 4.531908806243198362e-02, + 4.530564154229806129e-02, + 4.529212316980656128e-02, + 4.527853297601038690e-02, + 4.526487099207441439e-02, + 4.525113724927461167e-02, + 4.523733177899840613e-02, + 4.522345461274521194e-02, + 4.520950578212510479e-02, + 4.519548531885986958e-02, + 4.518139325478238294e-02, + 4.516722962183686296e-02, + 4.515299445207825862e-02, + 4.513868777767291590e-02, + 4.512430963089761327e-02, + 4.510986004414102579e-02, + 4.509533904990153247e-02, + 4.508074668078884684e-02, + 4.506608296952360065e-02, + 4.505134794893641409e-02, + 4.503654165196890186e-02, + 4.502166411167338872e-02, + 4.500671536121202132e-02, + 4.499169543385780901e-02, + 4.497660436299376341e-02, + 4.496144218211343274e-02, + 4.494620892482014546e-02, + 4.493090462482780129e-02, + 4.491552931595972631e-02, + 4.490008303214996360e-02, + 4.488456580744150382e-02, + 4.486897767598822112e-02, + 4.485331867205284012e-02, + 4.483758883000814321e-02, + 4.482178818433675549e-02, + 4.480591676963038839e-02, + 4.478997462059050583e-02, + 4.477396177202807442e-02, + 4.475787825886329979e-02, + 4.474172411612532818e-02, + 4.472549937895316241e-02, + 4.470920408259423245e-02, + 4.469283826240565832e-02, + 4.467640195385306351e-02, + 4.465989519251128970e-02, + 4.464331801406399430e-02, + 4.462667045430347007e-02, + 4.460995254913074914e-02, + 4.459316433455570716e-02, + 4.457630584669645957e-02, + 4.455937712177960447e-02, + 4.454237819614086796e-02, + 4.452530910622331389e-02, + 4.450816988857898837e-02, + 4.449096057986774017e-02, + 4.447368121685781744e-02, + 4.445633183642559022e-02, + 4.443891247555503687e-02, + 4.442142317133842416e-02, + 4.440386396097567578e-02, + 4.438623488177439319e-02, + 4.436853597115017478e-02, + 4.435076726662600527e-02, + 4.433292880583244305e-02, + 4.431502062650753693e-02, + 4.429704276649690936e-02, + 4.427899526375322914e-02, + 4.426087815633648892e-02, + 4.424269148241390809e-02, + 4.422443528026007153e-02, + 4.420610958825594433e-02, + 4.418771444489012074e-02, + 4.416924988875772784e-02, + 4.415071595856091824e-02, + 4.413211269310787083e-02, + 4.411344013131454633e-02, + 4.409469831220250852e-02, + 4.407588727490035357e-02, + 4.405700705864297462e-02, + 4.403805770277145065e-02, + 4.401903924673355312e-02, + 4.399995173008244831e-02, + 4.398079519247850150e-02, + 4.396156967368722995e-02, + 4.394227521358051031e-02, + 4.392291185213610671e-02, + 4.390347962943734472e-02, + 4.388397858567356230e-02, + 4.386440876113963799e-02, + 4.384477019623607419e-02, + 4.382506293146872650e-02, + 4.380528700744905357e-02, + 4.378544246489373543e-02, + 4.376552934462490246e-02, + 4.374554768756944850e-02, + 4.372549753475998141e-02, + 4.370537892733359492e-02, + 4.368519190653266659e-02, + 4.366493651370415702e-02, + 4.364461279030020652e-02, + 4.362422077787724700e-02, + 4.360376051809641135e-02, + 4.358323205272390810e-02, + 4.356263542362975860e-02, + 4.354197067278854638e-02, + 4.352123784227937553e-02, + 4.350043697428571110e-02, + 4.347956811109425501e-02, + 4.345863129509686118e-02, + 4.343762656878905754e-02, + 4.341655397476994194e-02, + 4.339541355574244585e-02, + 4.337420535451402132e-02, + 4.335292941399471189e-02, + 4.333158577719879029e-02, + 4.331017448724382851e-02, + 4.328869558735107953e-02, + 4.326714912084475562e-02, + 4.324553513115228509e-02, + 4.322385366180489519e-02, + 4.320210475643616876e-02, + 4.318028845878295330e-02, + 4.315840481268502782e-02, + 4.313645386208541516e-02, + 4.311443565102908437e-02, + 4.309235022366401935e-02, + 4.307019762424128123e-02, + 4.304797789711366923e-02, + 4.302569108673701126e-02, + 4.300333723766913002e-02, + 4.298091639457003038e-02, + 4.295842860220214221e-02, + 4.293587390542982773e-02, + 4.291325234921958276e-02, + 4.289056397863969666e-02, + 4.286780883886008586e-02, + 4.284498697515290444e-02, + 4.282209843289183637e-02, + 4.279914325755150573e-02, + 4.277612149470868402e-02, + 4.275303319004147146e-02, + 4.272987838932918586e-02, + 4.270665713845230027e-02, + 4.268336948339247067e-02, + 4.266001547023252211e-02, + 4.263659514515592830e-02, + 4.261310855444756102e-02, + 4.258955574449276027e-02, + 4.256593676177745228e-02, + 4.254225165288845478e-02, + 4.251850046451299131e-02, + 4.249468324343898262e-02, + 4.247080003655396424e-02, + 4.244685089084671709e-02, + 4.242283585340552582e-02, + 4.239875497141917110e-02, + 4.237460829217608305e-02, + 4.235039586306497961e-02, + 4.232611773157404084e-02, + 4.230177394529151952e-02, + 4.227736455190508891e-02, + 4.225288959920207171e-02, + 4.222834913506933602e-02, + 4.220374320749305935e-02, + 4.217907186455864543e-02, + 4.215433515445096008e-02, + 4.212953312545364426e-02, + 4.210466582594959289e-02, + 4.207973330442056625e-02, + 4.205473560944727324e-02, + 4.202967278970912157e-02, + 4.200454489398389862e-02, + 4.197935197114874284e-02, + 4.195409407017827719e-02, + 4.192877124014636470e-02, + 4.190338353022452639e-02, + 4.187793098968299599e-02, + 4.185241366788995665e-02, + 4.182683161431152707e-02, + 4.180118487851181008e-02, + 4.177547351015287180e-02, + 4.174969755899438084e-02, + 4.172385707489378176e-02, + 4.169795210780596895e-02, + 4.167198270778352254e-02, + 4.164594892497624351e-02, + 4.161985080963119532e-02, + 4.159368841209286349e-02, + 4.156746178280249643e-02, + 4.154117097229881317e-02, + 4.151481603121712216e-02, + 4.148839701028947391e-02, + 4.146191396034505650e-02, + 4.143536693230933515e-02, + 4.140875597720453105e-02, + 4.138208114614910782e-02, + 4.135534249035828502e-02, + 4.132854006114314999e-02, + 4.130167390991120596e-02, + 4.127474408816593499e-02, + 4.124775064750674236e-02, + 4.122069363962903299e-02, + 4.119357311632385749e-02, + 4.116638912947835627e-02, + 4.113914173107484362e-02, + 4.111183097319136975e-02, + 4.108445690800120731e-02, + 4.105701958777312199e-02, + 4.102951906487132400e-02, + 4.100195539175438553e-02, + 4.097432862097685757e-02, + 4.094663880518752130e-02, + 4.091888599713040808e-02, + 4.089107024964391129e-02, + 4.086319161566161207e-02, + 4.083525014821114130e-02, + 4.080724590041487354e-02, + 4.077917892548924006e-02, + 4.075104927674532557e-02, + 4.072285700758818822e-02, + 4.069460217151692205e-02, + 4.066628482212448353e-02, + 4.063790501309801767e-02, + 4.060946279821811555e-02, + 4.058095823135925845e-02, + 4.055239136648947779e-02, + 4.052376225767009843e-02, + 4.049507095905599541e-02, + 4.046631752489544126e-02, + 4.043750200952957868e-02, + 4.040862446739275360e-02, + 4.037968495301260535e-02, + 4.035068352100906752e-02, + 4.032162022609538099e-02, + 4.029249512307733067e-02, + 4.026330826685311365e-02, + 4.023405971241360291e-02, + 4.020474951484189624e-02, + 4.017537772931365631e-02, + 4.014594441109666650e-02, + 4.011644961555039385e-02, + 4.008689339812667590e-02, + 4.005727581436945711e-02, + 4.002759691991385899e-02, + 3.999785677048713073e-02, + 3.996805542190814964e-02, + 3.993819293008685906e-02, + 3.990826935102488593e-02, + 3.987828474081532570e-02, + 3.984823915564224966e-02, + 3.981813265178033717e-02, + 3.978796528559631202e-02, + 3.975773711354691625e-02, + 3.972744819217997186e-02, + 3.969709857813372850e-02, + 3.966668832813749490e-02, + 3.963621749901072300e-02, + 3.960568614766311890e-02, + 3.957509433109505231e-02, + 3.954444210639672386e-02, + 3.951372953074851202e-02, + 3.948295666142054988e-02, + 3.945212355577339125e-02, + 3.942123027125676860e-02, + 3.939027686541018980e-02, + 3.935926339586286182e-02, + 3.932818992033326744e-02, + 3.929705649662948441e-02, + 3.926586318264856795e-02, + 3.923461003637670336e-02, + 3.920329711588933785e-02, + 3.917192447935059774e-02, + 3.914049218501355204e-02, + 3.910900029121989335e-02, + 3.907744885640004190e-02, + 3.904583793907302758e-02, + 3.901416759784588628e-02, + 3.898243789141420806e-02, + 3.895064887856178326e-02, + 3.891880061816051922e-02, + 3.888689316917035704e-02, + 3.885492659063859849e-02, + 3.882290094170093991e-02, + 3.879081628158059791e-02, + 3.875867266958802487e-02, + 3.872647016512156121e-02, + 3.869420882766665820e-02, + 3.866188871679583638e-02, + 3.862950989216911574e-02, + 3.859707241353341894e-02, + 3.856457634072257834e-02, + 3.853202173365687794e-02, + 3.849940865234419834e-02, + 3.846673715687782408e-02, + 3.843400730743858768e-02, + 3.840121916429319743e-02, + 3.836837278779462596e-02, + 3.833546823838216572e-02, + 3.830250557658126942e-02, + 3.826948486300307123e-02, + 3.823640615834456025e-02, + 3.820326952338871235e-02, + 3.817007501900410854e-02, + 3.813682270614449088e-02, + 3.810351264584956738e-02, + 3.807014489924372136e-02, + 3.803671952753730212e-02, + 3.800323659202496651e-02, + 3.796969615408690019e-02, + 3.793609827518787392e-02, + 3.790244301687756279e-02, + 3.786873044079025474e-02, + 3.783496060864465632e-02, + 3.780113358224423958e-02, + 3.776724942347648578e-02, + 3.773330819431298944e-02, + 3.769930995681004815e-02, + 3.766525477310728870e-02, + 3.763114270542836787e-02, + 3.759697381608118061e-02, + 3.756274816745686085e-02, + 3.752846582203019088e-02, + 3.749412684235916421e-02, + 3.745973129108567251e-02, + 3.742527923093440928e-02, + 3.739077072471305718e-02, + 3.735620583531281541e-02, + 3.732158462570739355e-02, + 3.728690715895326829e-02, + 3.725217349818964879e-02, + 3.721738370663842110e-02, + 3.718253784760388453e-02, + 3.714763598447220344e-02, + 3.711267818071279506e-02, + 3.707766449987628249e-02, + 3.704259500559542451e-02, + 3.700746976158517110e-02, + 3.697228883164208751e-02, + 3.693705227964416693e-02, + 3.690176016955145494e-02, + 3.686641256540498096e-02, + 3.683100953132751459e-02, + 3.679555113152237211e-02, + 3.676003743027467241e-02, + 3.672446849195027535e-02, + 3.668884438099586504e-02, + 3.665316516193853347e-02, + 3.661743089938684220e-02, + 3.658164165802918477e-02, + 3.654579750263459853e-02, + 3.650989849805240384e-02, + 3.647394470921214854e-02, + 3.643793620112354553e-02, + 3.640187303887607029e-02, + 3.636575528763912740e-02, + 3.632958301266184936e-02, + 3.629335627927301328e-02, + 3.625707515288100619e-02, + 3.622073969897324219e-02, + 3.618434998311668288e-02, + 3.614790607095770547e-02, + 3.611140802822128404e-02, + 3.607485592071132258e-02, + 3.603824981431085622e-02, + 3.600158977498152391e-02, + 3.596487586876329079e-02, + 3.592810816177477440e-02, + 3.589128672021331401e-02, + 3.585441161035372859e-02, + 3.581748289854952416e-02, + 3.578050065123202644e-02, + 3.574346493491048493e-02, + 3.570637581617183698e-02, + 3.566923336168071473e-02, + 3.563203763817932024e-02, + 3.559478871248733522e-02, + 3.555748665150158805e-02, + 3.552013152219624104e-02, + 3.548272339162263089e-02, + 3.544526232690865808e-02, + 3.540774839525930723e-02, + 3.537018166395637653e-02, + 3.533256220035815853e-02, + 3.529489007189937771e-02, + 3.525716534609137087e-02, + 3.521938809052130998e-02, + 3.518155837285274340e-02, + 3.514367626082548490e-02, + 3.510574182225473239e-02, + 3.506775512503170628e-02, + 3.502971623712331645e-02, + 3.499162522657208590e-02, + 3.495348216149592180e-02, + 3.491528711008773378e-02, + 3.487704014061618341e-02, + 3.483874132142464330e-02, + 3.480039072093119024e-02, + 3.476198840762931980e-02, + 3.472353445008675293e-02, + 3.468502891694617840e-02, + 3.464647187692431601e-02, + 3.460786339881283952e-02, + 3.456920355147710677e-02, + 3.453049240385677038e-02, + 3.449173002496541685e-02, + 3.445291648389103845e-02, + 3.441405184979450665e-02, + 3.437513619191090442e-02, + 3.433616957954863103e-02, + 3.429715208208971439e-02, + 3.425808376898900609e-02, + 3.421896470977506266e-02, + 3.417979497404918798e-02, + 3.414057463148539168e-02, + 3.410130375183084012e-02, + 3.406198240490518336e-02, + 3.402261066060082578e-02, + 3.398318858888223909e-02, + 3.394371625978658685e-02, + 3.390419374342296815e-02, + 3.386462110997265351e-02, + 3.382499842968870324e-02, + 3.378532577289634214e-02, + 3.374560320999221014e-02, + 3.370583081144460508e-02, + 3.366600864779327462e-02, + 3.362613678964931907e-02, + 3.358621530769496238e-02, + 3.354624427268366321e-02, + 3.350622375543998305e-02, + 3.346615382685888540e-02, + 3.342603455790633254e-02, + 3.338586601961912592e-02, + 3.334564828310413592e-02, + 3.330538141953871822e-02, + 3.326506550017056807e-02, + 3.322470059631743577e-02, + 3.318428677936707816e-02, + 3.314382412077697404e-02, + 3.310331269207459487e-02, + 3.306275256485689124e-02, + 3.302214381079034144e-02, + 3.298148650161065315e-02, + 3.294078070912304784e-02, + 3.290002650520162941e-02, + 3.285922396178972416e-02, + 3.281837315089929791e-02, + 3.277747414461147646e-02, + 3.273652701507536594e-02, + 3.269553183450930878e-02, + 3.265448867519932241e-02, + 3.261339760950032057e-02, + 3.257225870983499610e-02, + 3.253107204869405689e-02, + 3.248983769863629523e-02, + 3.244855573228788703e-02, + 3.240722622234320366e-02, + 3.236584924156366005e-02, + 3.232442486277811722e-02, + 3.228295315888309036e-02, + 3.224143420284156930e-02, + 3.219986806768403154e-02, + 3.215825482650771366e-02, + 3.211659455247675016e-02, + 3.207488731882167377e-02, + 3.203313319883963756e-02, + 3.199133226589435247e-02, + 3.194948459341536567e-02, + 3.190759025489851158e-02, + 3.186564932390611310e-02, + 3.182366187406571872e-02, + 3.178162797907090054e-02, + 3.173954771268074071e-02, + 3.169742114872015765e-02, + 3.165524836107918433e-02, + 3.161302942371283647e-02, + 3.157076441064196604e-02, + 3.152845339595179708e-02, + 3.148609645379250171e-02, + 3.144369365837932501e-02, + 3.140124508399172454e-02, + 3.135875080497391859e-02, + 3.131621089573453920e-02, + 3.127362543074609785e-02, + 3.123099448454563082e-02, + 3.118831813173363748e-02, + 3.114559644697510385e-02, + 3.110282950499842700e-02, + 3.106001738059534223e-02, + 3.101716014862134982e-02, + 3.097425788399542704e-02, + 3.093131066169947652e-02, + 3.088831855677837135e-02, + 3.084528164434058306e-02, + 3.080219999955665852e-02, + 3.075907369766029548e-02, + 3.071590281394750294e-02, + 3.067268742377708690e-02, + 3.062942760256964075e-02, + 3.058612342580845772e-02, + 3.054277496903869821e-02, + 3.049938230786751470e-02, + 3.045594551796335092e-02, + 3.041246467505730189e-02, + 3.036893985494105302e-02, + 3.032537113346825408e-02, + 3.028175858655373850e-02, + 3.023810229017342630e-02, + 3.019440232036416441e-02, + 3.015065875322370942e-02, + 3.010687166491110914e-02, + 3.006304113164522812e-02, + 3.001916722970611809e-02, + 2.997525003543361974e-02, + 2.993128962522833766e-02, + 2.988728607555066197e-02, + 2.984323946292113602e-02, + 2.979914986392030035e-02, + 2.975501735518791199e-02, + 2.971084201342376330e-02, + 2.966662391538724131e-02, + 2.962236313789649508e-02, + 2.957805975782932389e-02, + 2.953371385212260822e-02, + 2.948932549777207035e-02, + 2.944489477183201767e-02, + 2.940042175141585265e-02, + 2.935590651369528875e-02, + 2.931134913590047533e-02, + 2.926674969531989356e-02, + 2.922210826930021418e-02, + 2.917742493524632177e-02, + 2.913269977062029822e-02, + 2.908793285294285214e-02, + 2.904312425979183043e-02, + 2.899827406880270061e-02, + 2.895338235766830096e-02, + 2.890844920413875030e-02, + 2.886347468602133010e-02, + 2.881845888117986684e-02, + 2.877340186753574516e-02, + 2.872830372306668309e-02, + 2.868316452580677023e-02, + 2.863798435384675226e-02, + 2.859276328533406561e-02, + 2.854750139847164747e-02, + 2.850219877151879272e-02, + 2.845685548279099433e-02, + 2.841147161065904134e-02, + 2.836604723354983412e-02, + 2.832058242994536790e-02, + 2.827507727838333984e-02, + 2.822953185745670501e-02, + 2.818394624581302410e-02, + 2.813832052215582691e-02, + 2.809265476524261743e-02, + 2.804694905388591467e-02, + 2.800120346695312776e-02, + 2.795541808336565390e-02, + 2.790959298209954448e-02, + 2.786372824218475916e-02, + 2.781782394270577649e-02, + 2.777188016280052185e-02, + 2.772589698166070399e-02, + 2.767987447853231808e-02, + 2.763381273271431349e-02, + 2.758771182355910026e-02, + 2.754157183047250060e-02, + 2.749539283291331862e-02, + 2.744917491039349303e-02, + 2.740291814247767035e-02, + 2.735662260878330906e-02, + 2.731028838898053729e-02, + 2.726391556279172609e-02, + 2.721750420999184336e-02, + 2.717105441040785357e-02, + 2.712456624391871782e-02, + 2.707803979045528622e-02, + 2.703147513000065533e-02, + 2.698487234258890172e-02, + 2.693823150830611246e-02, + 2.689155270728953856e-02, + 2.684483601972779271e-02, + 2.679808152586042602e-02, + 2.675128930597806681e-02, + 2.670445944042226794e-02, + 2.665759200958512168e-02, + 2.661068709390919731e-02, + 2.656374477388795743e-02, + 2.651676513006473446e-02, + 2.646974824303303941e-02, + 2.642269419343689155e-02, + 2.637560306196952073e-02, + 2.632847492937444994e-02, + 2.628130987644437117e-02, + 2.623410798402198152e-02, + 2.618686933299892161e-02, + 2.613959400431604616e-02, + 2.609228207896370846e-02, + 2.604493363798076472e-02, + 2.599754876245505969e-02, + 2.595012753352293061e-02, + 2.590267003236973106e-02, + 2.585517634022866523e-02, + 2.580764653838132916e-02, + 2.576008070815782522e-02, + 2.571247893093571435e-02, + 2.566484128814064403e-02, + 2.561716786124625805e-02, + 2.556945873177335696e-02, + 2.552171398129038371e-02, + 2.547393369141283392e-02, + 2.542611794380393239e-02, + 2.537826682017349511e-02, + 2.533038040227817908e-02, + 2.528245877192187088e-02, + 2.523450201095454523e-02, + 2.518651020127289641e-02, + 2.513848342482002604e-02, + 2.509042176358528345e-02, + 2.504232529960409223e-02, + 2.499419411495733614e-02, + 2.494602829177233402e-02, + 2.489782791222192732e-02, + 2.484959305852412620e-02, + 2.480132381294292837e-02, + 2.475302025778703882e-02, + 2.470468247541055679e-02, + 2.465631054821230614e-02, + 2.460790455863648071e-02, + 2.455946458917142305e-02, + 2.451099072235008239e-02, + 2.446248304075041360e-02, + 2.441394162699407622e-02, + 2.436536656374699988e-02, + 2.431675793371904093e-02, + 2.426811581966435011e-02, + 2.421944030438049483e-02, + 2.417073147070859448e-02, + 2.412198940153341756e-02, + 2.407321417978287859e-02, + 2.402440588842802774e-02, + 2.397556461048335266e-02, + 2.392669042900596316e-02, + 2.387778342709566404e-02, + 2.382884368789487187e-02, + 2.377987129458887516e-02, + 2.373086633040495316e-02, + 2.368182887861262909e-02, + 2.363275902252370136e-02, + 2.358365684549181343e-02, + 2.353452243091229065e-02, + 2.348535586222209176e-02, + 2.343615722290007947e-02, + 2.338692659646611147e-02, + 2.333766406648125902e-02, + 2.328836971654835511e-02, + 2.323904363031012790e-02, + 2.318968589145079320e-02, + 2.314029658369532935e-02, + 2.309087579080922048e-02, + 2.304142359659790487e-02, + 2.299194008490753477e-02, + 2.294242533962445943e-02, + 2.289287944467472899e-02, + 2.284330248402410835e-02, + 2.279369454167877104e-02, + 2.274405570168372762e-02, + 2.269438604812378663e-02, + 2.264468566512281220e-02, + 2.259495463684419239e-02, + 2.254519304749006553e-02, + 2.249540098130135141e-02, + 2.244557852255813640e-02, + 2.239572575557880266e-02, + 2.234584276471971928e-02, + 2.229592963437654687e-02, + 2.224598644898238484e-02, + 2.219601329300870118e-02, + 2.214601025096463519e-02, + 2.209597740739747268e-02, + 2.204591484689163647e-02, + 2.199582265406909570e-02, + 2.194570091358967814e-02, + 2.189554971014976911e-02, + 2.184536912848323437e-02, + 2.179515925336030641e-02, + 2.174492016958887858e-02, + 2.169465196201257953e-02, + 2.164435471551193549e-02, + 2.159402851500398166e-02, + 2.154367344544175569e-02, + 2.149328959181433935e-02, + 2.144287703914667456e-02, + 2.139243587249976819e-02, + 2.134196617696994605e-02, + 2.129146803768937335e-02, + 2.124094153982539895e-02, + 2.119038676858064907e-02, + 2.113980380919247906e-02, + 2.108919274693398654e-02, + 2.103855366711241542e-02, + 2.098788665506972143e-02, + 2.093719179618244025e-02, + 2.088646917586190616e-02, + 2.083571887955312785e-02, + 2.078494099273530196e-02, + 2.073413560092196919e-02, + 2.068330278966006366e-02, + 2.063244264453045415e-02, + 2.058155525114733694e-02, + 2.053064069515826012e-02, + 2.047969906224430398e-02, + 2.042873043811964731e-02, + 2.037773490853114766e-02, + 2.032671255925865006e-02, + 2.027566347611444580e-02, + 2.022458774494401840e-02, + 2.017348545162453433e-02, + 2.012235668206570696e-02, + 2.007120152220951553e-02, + 2.002002005802975063e-02, + 1.996881237553192398e-02, + 1.991757856075334135e-02, + 1.986631869976297413e-02, + 1.981503287866116444e-02, + 1.976372118357938232e-02, + 1.971238370068011461e-02, + 1.966102051615756935e-02, + 1.960963171623545179e-02, + 1.955821738716961508e-02, + 1.950677761524551371e-02, + 1.945531248677943165e-02, + 1.940382208811748666e-02, + 1.935230650563670926e-02, + 1.930076582574337396e-02, + 1.924920013487380413e-02, + 1.919760951949431652e-02, + 1.914599406610049265e-02, + 1.909435386121739048e-02, + 1.904268899139918009e-02, + 1.899099954322969533e-02, + 1.893928560332126115e-02, + 1.888754725831506137e-02, + 1.883578459488119763e-02, + 1.878399769971835290e-02, + 1.873218665955359366e-02, + 1.868035156114201262e-02, + 1.862849249126723519e-02, + 1.857660953674051055e-02, + 1.852470278440108628e-02, + 1.847277232111622577e-02, + 1.842081823378022287e-02, + 1.836884060931501944e-02, + 1.831683953467017761e-02, + 1.826481509682185977e-02, + 1.821276738277344959e-02, + 1.816069647955505587e-02, + 1.810860247422396013e-02, + 1.805648545386341966e-02, + 1.800434550558333707e-02, + 1.795218271652023259e-02, + 1.789999717383618238e-02, + 1.784778896471964083e-02, + 1.779555817638476742e-02, + 1.774330489607148231e-02, + 1.769102921104522691e-02, + 1.763873120859677651e-02, + 1.758641097604258727e-02, + 1.753406860072389412e-02, + 1.748170417000672119e-02, + 1.742931777128265899e-02, + 1.737690949196733781e-02, + 1.732447941950114242e-02, + 1.727202764134883051e-02, + 1.721955424499987258e-02, + 1.716705931796726897e-02, + 1.711454294778817081e-02, + 1.706200522202403966e-02, + 1.700944622825940195e-02, + 1.695686605410268166e-02, + 1.690426478718566952e-02, + 1.685164251516339459e-02, + 1.679899932571405144e-02, + 1.674633530653861849e-02, + 1.669365054536145129e-02, + 1.664094512992912028e-02, + 1.658821914801074382e-02, + 1.653547268739826229e-02, + 1.648270583590558114e-02, + 1.642991868136867498e-02, + 1.637711131164546613e-02, + 1.632428381461626180e-02, + 1.627143627818240790e-02, + 1.621856879026690665e-02, + 1.616568143881471145e-02, + 1.611277431179136341e-02, + 1.605984749718393848e-02, + 1.600690108300014194e-02, + 1.595393515726920702e-02, + 1.590094980804004215e-02, + 1.584794512338279227e-02, + 1.579492119138803732e-02, + 1.574187810016636907e-02, + 1.568881593784838754e-02, + 1.563573479258502028e-02, + 1.558263475254681625e-02, + 1.552951590592396847e-02, + 1.547637834092617515e-02, + 1.542322214578286527e-02, + 1.537004740874239883e-02, + 1.531685421807212240e-02, + 1.526364266205884786e-02, + 1.521041282900780986e-02, + 1.515716480724297287e-02, + 1.510389868510674839e-02, + 1.505061455096035582e-02, + 1.499731249318302442e-02, + 1.494399260017155451e-02, + 1.489065496034160802e-02, + 1.483729966212610392e-02, + 1.478392679397565884e-02, + 1.473053644435877267e-02, + 1.467712870176086405e-02, + 1.462370365468490356e-02, + 1.457026139165065216e-02, + 1.451680200119530306e-02, + 1.446332557187247903e-02, + 1.440983219225229831e-02, + 1.435632195092199220e-02, + 1.430279493648469076e-02, + 1.424925123755992236e-02, + 1.419569094278301177e-02, + 1.414211414080582263e-02, + 1.408852092029552229e-02, + 1.403491136993512134e-02, + 1.398128557842299308e-02, + 1.392764363447302443e-02, + 1.387398562681413199e-02, + 1.382031164419068175e-02, + 1.376662177536168256e-02, + 1.371291610910089706e-02, + 1.365919473419677059e-02, + 1.360545773945244508e-02, + 1.355170521368526462e-02, + 1.349793724572658817e-02, + 1.344415392442229254e-02, + 1.339035533863182532e-02, + 1.333654157722849974e-02, + 1.328271272909909567e-02, + 1.322886888314439048e-02, + 1.317501012827804706e-02, + 1.312113655342689485e-02, + 1.306724824753135485e-02, + 1.301334529954407439e-02, + 1.295942779843069388e-02, + 1.290549583316992314e-02, + 1.285154949275239475e-02, + 1.279758886618138046e-02, + 1.274361404247196204e-02, + 1.268962511065192637e-02, + 1.263562215976041410e-02, + 1.258160527884837759e-02, + 1.252757455697877699e-02, + 1.247353008322565730e-02, + 1.241947194667445374e-02, + 1.236540023642173323e-02, + 1.231131504157545464e-02, + 1.225721645125407190e-02, + 1.220310455458682025e-02, + 1.214897944071389492e-02, + 1.209484119878573467e-02, + 1.204068991796263498e-02, + 1.198652568741592067e-02, + 1.193234859632636216e-02, + 1.187815873388476350e-02, + 1.182395618929158246e-02, + 1.176974105175717517e-02, + 1.171551341050106401e-02, + 1.166127335475196543e-02, + 1.160702097374828427e-02, + 1.155275635673687525e-02, + 1.149847959297376626e-02, + 1.144419077172342467e-02, + 1.138988998225949623e-02, + 1.133557731386350409e-02, + 1.128125285582530848e-02, + 1.122691669744336346e-02, + 1.117256892802365523e-02, + 1.111820963688034056e-02, + 1.106383891333504767e-02, + 1.100945684671711042e-02, + 1.095506352636336361e-02, + 1.090065904161768157e-02, + 1.084624348183154015e-02, + 1.079181693636294646e-02, + 1.073737949457687253e-02, + 1.068293124584530213e-02, + 1.062847227954644667e-02, + 1.057400268506504364e-02, + 1.051952255179196792e-02, + 1.046503196912464476e-02, + 1.041053102646614242e-02, + 1.035601981322522951e-02, + 1.030149841881693347e-02, + 1.024696693266132809e-02, + 1.019242544418410591e-02, + 1.013787404281621396e-02, + 1.008331281799370108e-02, + 1.002874185915742129e-02, + 9.974161255753628830e-03, + 9.919571097232633694e-03, + 9.864971473049639547e-03, + 9.810362472663999509e-03, + 9.755744185539786881e-03, + 9.701116701144771662e-03, + 9.646480108950805654e-03, + 9.591834498433466846e-03, + 9.537179959072454929e-03, + 9.482516580350475871e-03, + 9.427844451753807434e-03, + 9.373163662772236726e-03, + 9.318474302898395803e-03, + 9.263776461627836259e-03, + 9.209070228458952900e-03, + 9.154355692893318547e-03, + 9.099632944434042983e-03, + 9.044902072587632583e-03, + 8.990163166862241706e-03, + 8.935416316768338835e-03, + 8.880661611818109827e-03, + 8.825899141526059866e-03, + 8.771128995407934462e-03, + 8.716351262981061193e-03, + 8.661566033764113784e-03, + 8.606773397277389659e-03, + 8.551973443041878398e-03, + 8.497166260579416125e-03, + 8.442351939413245826e-03, + 8.387530569066676406e-03, + 8.332702239063825150e-03, + 8.277867038928937715e-03, + 8.223025058186981401e-03, + 8.168176386362552277e-03, + 8.113321112980376518e-03, + 8.058459327564894067e-03, + 8.003591119640295071e-03, + 7.948716578730089660e-03, + 7.893835794357640517e-03, + 7.838948856045056118e-03, + 7.784055853313540281e-03, + 7.729156875683699211e-03, + 7.674252012674472045e-03, + 7.619341353803609634e-03, + 7.564424988587179280e-03, + 7.509503006540183163e-03, + 7.454575497175254702e-03, + 7.399642550003343762e-03, + 7.344704254533178898e-03, + 7.289760700271714043e-03, + 7.234811976723088539e-03, + 7.179858173389137149e-03, + 7.124899379769042244e-03, + 7.069935685359205434e-03, + 7.014967179652933579e-03, + 6.959993952140989572e-03, + 6.905016092310345063e-03, + 6.850033689644756396e-03, + 6.795046833624896442e-03, + 6.740055613727264326e-03, + 6.685060119424841157e-03, + 6.630060440186484605e-03, + 6.575056665477418960e-03, + 6.520048884758240272e-03, + 6.465037187485303191e-03, + 6.410021663110363616e-03, + 6.355002401080936912e-03, + 6.299979490839355094e-03, + 6.244953021823121571e-03, + 6.189923083464721199e-03, + 6.134889765191386089e-03, + 6.079853156424878773e-03, + 6.024813346581860823e-03, + 5.969770425073002949e-03, + 5.914724481303070859e-03, + 5.859675604671452619e-03, + 5.804623884570961692e-03, + 5.749569410388391186e-03, + 5.694512271503963073e-03, + 5.639452557291966574e-03, + 5.584390357119472723e-03, + 5.529325760346846981e-03, + 5.474258856327996435e-03, + 5.419189734409257837e-03, + 5.364118483929935371e-03, + 5.309045194221821869e-03, + 5.253969954609854533e-03, + 5.198892854410362002e-03, + 5.143813982932399220e-03, + 5.088733429477414368e-03, + 5.033651283338293030e-03, + 4.978567633799733765e-03, + 4.923482570138550812e-03, + 4.868396181622586423e-03, + 4.813308557511252958e-03, + 4.758219787054991656e-03, + 4.703129959495784378e-03, + 4.648039164066142259e-03, + 4.592947489989325158e-03, + 4.537855026479714615e-03, + 4.482761862741792974e-03, + 4.427668087970505068e-03, + 4.372573791350920815e-03, + 4.317479062058648086e-03, + 4.262383989258928911e-03, + 4.207288662106356721e-03, + 4.152193169746089783e-03, + 4.097097601312226639e-03, + 4.042002045928231105e-03, + 3.986906592707264475e-03, + 3.931811330751111729e-03, + 3.876716349150696739e-03, + 3.821621736985585278e-03, + 3.766527583324478547e-03, + 3.711433977224130702e-03, + 3.656341007729705782e-03, + 3.601248763875080847e-03, + 3.546157334681770013e-03, + 3.491066809159402810e-03, + 3.435977276305265341e-03, + 3.380888825104817232e-03, + 3.325801544530557988e-03, + 3.270715523542596856e-03, + 3.215630851088245156e-03, + 3.160547616101967282e-03, + 3.105465907505025516e-03, + 3.050385814205986996e-03, + 2.995307425099667277e-03, + 2.940230829067561839e-03, + 2.885156114977447967e-03, + 2.830083371683814533e-03, + 2.775012688026834602e-03, + 2.719944152832650362e-03, + 2.664877854913741753e-03, + 2.609813883067820146e-03, + 2.554752326078296720e-03, + 2.499693272713896918e-03, + 2.444636811729055531e-03, + 2.389583031862910125e-03, + 2.334532021839604184e-03, + 2.279483870368739437e-03, + 2.224438666143736115e-03, + 2.169396497843045085e-03, + 2.114357454129893281e-03, + 2.059321623651308789e-03, + 2.004289095038667718e-03, + 1.949259956907187447e-03, + 1.894234297856449856e-03, + 1.839212206469294794e-03, + 1.784193771312184802e-03, + 1.729179080935478331e-03, + 1.674168223872418834e-03, + 1.619161288639564111e-03, + 1.564158363736362382e-03, + 1.509159537645620667e-03, + 1.454164898832458093e-03, + 1.399174535744594512e-03, + 1.344188536812703730e-03, + 1.289206990449495412e-03, + 1.234229985049404340e-03, + 1.179257608989858286e-03, + 1.124289950629587956e-03, + 1.069327098309267102e-03, + 1.014369140351046748e-03, + 9.594161650590479632e-04, + 9.044682607182930522e-04, + 8.495255155950245289e-04, + 7.945880179370380745e-04, + 7.396558559726022384e-04, + 6.847291179109513170e-04, + 6.298078919418371438e-04, + 5.748922662359871654e-04, + 5.199823289440662095e-04, + 4.650781681969833135e-04, + 4.101798721062182868e-04, + 3.552875287627656436e-04, + 3.004012262375990207e-04, + 2.455210525813877670e-04, + 1.906470958243565124e-04, + 1.357794439761437610e-04, + 8.091818502551122920e-05, + 2.606340694081813765e-05, +-2.878480233103600840e-05, +-8.362635486429172160e-05, +-1.384611627540077955e-04, +-1.932891381171193300e-04, +-2.481101930919637046e-04, +-3.029242398387231973e-04, +-3.577311905389541562e-04, +-4.125309573966420363e-04, +-4.673234526378796630e-04, +-5.221085885105476634e-04, +-5.768862772853705330e-04, +-6.316564312554450627e-04, +-6.864189627365239110e-04, +-7.411737840671620264e-04, +-7.959208076088524972e-04, +-8.506599457463110466e-04, +-9.053911108870106930e-04, +-9.601142154622326671e-04, +-1.014829171926742669e-03, +-1.069535892758487943e-03, +-1.124234290459616209e-03, +-1.178924277556036996e-03, +-1.233605766597853154e-03, +-1.288278670158876432e-03, +-1.342942900837688046e-03, +-1.397598371257334883e-03, +-1.452244994064976055e-03, +-1.506882681932970132e-03, +-1.561511347558374677e-03, +-1.616130903663396410e-03, +-1.670741262994778842e-03, +-1.725342338325455043e-03, +-1.779934042453296030e-03, +-1.834516288201428879e-03, +-1.889088988419119911e-03, +-1.943652055981454421e-03, +-1.998205403789012936e-03, +-2.052748944768947176e-03, +-2.107282591874460285e-03, +-2.161806258085296247e-03, +-2.216319856407232471e-03, +-2.270823299873165734e-03, +-2.325316501542739212e-03, +-2.379799374502077937e-03, +-2.434271831864794500e-03, +-2.488733786771559278e-03, +-2.543185152390478598e-03, +-2.597625841916710067e-03, +-2.652055768573417533e-03, +-2.706474845611367332e-03, +-2.760882986309178954e-03, +-2.815280103973476396e-03, +-2.869666111939197812e-03, +-2.924040923569058616e-03, +-2.978404452254656935e-03, +-3.032756611415994390e-03, +-3.087097314501886791e-03, +-3.141426474989527425e-03, +-3.195744006385495793e-03, +-3.250049822225478755e-03, +-3.304343836073910575e-03, +-3.358625961525047148e-03, +-3.412896112202493289e-03, +-3.467154201759613859e-03, +-3.521400143879099658e-03, +-3.575633852273977023e-03, +-3.629855240687145969e-03, +-3.684064222891725825e-03, +-3.738260712691063043e-03, +-3.792444623919149702e-03, +-3.846615870440067524e-03, +-3.900774366149060372e-03, +-3.954920024972081484e-03, +-4.009052760866179017e-03, +-4.063172487819058896e-03, +-4.117279119850159909e-03, +-4.171372571010266428e-03, +-4.225452755381227388e-03, +-4.279519587076995382e-03, +-4.333572980243164362e-03, +-4.387612849057350405e-03, +-4.441639107728810945e-03, +-4.495651670499433566e-03, +-4.549650451643232063e-03, +-4.603635365466707263e-03, +-4.657606326308932898e-03, +-4.711563248541850504e-03, +-4.765506046569816662e-03, +-4.819434634830553621e-03, +-4.873348927795000986e-03, +-4.927248839966836061e-03, +-4.981134285883585811e-03, +-5.035005180116121186e-03, +-5.088861437269153257e-03, +-5.142702971980710192e-03, +-5.196529698923172021e-03, +-5.250341532802846496e-03, +-5.304138388360340323e-03, +-5.357920180370130681e-03, +-5.411686823641601723e-03, +-5.465438233018746206e-03, +-5.519174323379613840e-03, +-5.572895009638036481e-03, +-5.626600206742369582e-03, +-5.680289829675749802e-03, +-5.733963793457026552e-03, +-5.787622013140444541e-03, +-5.841264403815284688e-03, +-5.894890880606919702e-03, +-5.948501358676298000e-03, +-6.002095753220517901e-03, +-6.055673979472174506e-03, +-6.109235952700503743e-03, +-6.162781588211086597e-03, +-6.216310801345383344e-03, +-6.269823507481967796e-03, +-6.323319622035859441e-03, +-6.376799060459178298e-03, +-6.430261738240431076e-03, +-6.483707570905549410e-03, +-6.537136474018169149e-03, +-6.590548363178310234e-03, +-6.643943154024116622e-03, +-6.697320762231341075e-03, +-6.750681103513006022e-03, +-6.804024093620466077e-03, +-6.857349648342926651e-03, +-6.910657683507905394e-03, +-6.963948114980666668e-03, +-7.017220858665406368e-03, +-7.070475830504775738e-03, +-7.123712946479661065e-03, +-7.176932122610177670e-03, +-7.230133274955234494e-03, +-7.283316319612857630e-03, +-7.336481172719909287e-03, +-7.389627750452920467e-03, +-7.442755969027738810e-03, +-7.495865744699761919e-03, +-7.548956993764131644e-03, +-7.602029632555913630e-03, +-7.655083577449668837e-03, +-7.708118744860575910e-03, +-7.761135051243761573e-03, +-7.814132413094953752e-03, +-7.867110746949804168e-03, +-7.920069969385120853e-03, +-7.973009997018316516e-03, +-8.025930746507327004e-03, +-8.078832134551466523e-03, +-8.131714077891009571e-03, +-8.184576493307666248e-03, +-8.237419297624063580e-03, +-8.290242407704770736e-03, +-8.343045740455972900e-03, +-8.395829212825018512e-03, +-8.448592741802101944e-03, +-8.501336244418851440e-03, +-8.554059637748898104e-03, +-8.606762838908540297e-03, +-8.659445765056228428e-03, +-8.712108333393267512e-03, +-8.764750461163008793e-03, +-8.817372065652121296e-03, +-8.869973064190182430e-03, +-8.922553374149332778e-03, +-8.975112912945398466e-03, +-9.027651598037214620e-03, +-9.080169346927320986e-03, +-9.132666077161325294e-03, +-9.185141706328898981e-03, +-9.237596152063588112e-03, +-9.290029332042351942e-03, +-9.342441163986602015e-03, +-9.394831565662328798e-03, +-9.447200454878902989e-03, +-9.499547749490815443e-03, +-9.551873367396842771e-03, +-9.604177226540746432e-03, +-9.656459244910580580e-03, +-9.708719340539823106e-03, +-9.760957431506969706e-03, +-9.813173435935306638e-03, +-9.865367271993878695e-03, +-9.917538857897064200e-03, +-9.969688111904901132e-03, +-1.002181495232268640e-02, +-1.007391929750208262e-02, +-1.012600106584059245e-02, +-1.017806017578140425e-02, +-1.023009654581438256e-02, +-1.028211009447545926e-02, +-1.033410074034716263e-02, +-1.038606840205846468e-02, +-1.043801299828518020e-02, +-1.048993444774997535e-02, +-1.054183266922206416e-02, +-1.059370758151824757e-02, +-1.064555910350242426e-02, +-1.069738715408549007e-02, +-1.074919165222610988e-02, +-1.080097251693048002e-02, +-1.085272966725260579e-02, +-1.090446302229388861e-02, +-1.095617250120411480e-02, +-1.100785802318112599e-02, +-1.105951950747054678e-02, +-1.111115687336672146e-02, +-1.116277004021235843e-02, +-1.121435892739866720e-02, +-1.126592345436565508e-02, +-1.131746354060204386e-02, +-1.136897910564563241e-02, +-1.142047006908288379e-02, +-1.147193635054993659e-02, +-1.152337786973217995e-02, +-1.157479454636401589e-02, +-1.162618630022982900e-02, +-1.167755305116350770e-02, +-1.172889471904891082e-02, +-1.178021122381944091e-02, +-1.183150248545889599e-02, +-1.188276842400136715e-02, +-1.193400895953060023e-02, +-1.198522401218138703e-02, +-1.203641350213884714e-02, +-1.208757734963882523e-02, +-1.213871547496750067e-02, +-1.218982779846269904e-02, +-1.224091424051290157e-02, +-1.229197472155744465e-02, +-1.234300916208743229e-02, +-1.239401748264516191e-02, +-1.244499960382423019e-02, +-1.249595544627015581e-02, +-1.254688493068010363e-02, +-1.259778797780332533e-02, +-1.264866450844050021e-02, +-1.269951444344504313e-02, +-1.275033770372238119e-02, +-1.280113421023007687e-02, +-1.285190388397843345e-02, +-1.290264664603035967e-02, +-1.295336241750159011e-02, +-1.300405111955998602e-02, +-1.305471267342739328e-02, +-1.310534700037829618e-02, +-1.315595402173997709e-02, +-1.320653365889363356e-02, +-1.325708583327373132e-02, +-1.330761046636804411e-02, +-1.335810747971833204e-02, +-1.340857679492003622e-02, +-1.345901833362264481e-02, +-1.350943201752937382e-02, +-1.355981776839784367e-02, +-1.361017550804014854e-02, +-1.366050515832220244e-02, +-1.371080664116488060e-02, +-1.376107987854361878e-02, +-1.381132479248872030e-02, +-1.386154130508493974e-02, +-1.391172933847228607e-02, +-1.396188881484628289e-02, +-1.401201965645689461e-02, +-1.406212178560998886e-02, +-1.411219512466686983e-02, +-1.416223959604401110e-02, +-1.421225512221396467e-02, +-1.426224162570501226e-02, +-1.431219902910160074e-02, +-1.436212725504361007e-02, +-1.441202622622767687e-02, +-1.446189586540667232e-02, +-1.451173609538940895e-02, +-1.456154683904167108e-02, +-1.461132801928588520e-02, +-1.466107955910112524e-02, +-1.471080138152306045e-02, +-1.476049340964482280e-02, +-1.481015556661638248e-02, +-1.485978777564501627e-02, +-1.490938995999541161e-02, +-1.495896204298969613e-02, +-1.500850394800721903e-02, +-1.505801559848545489e-02, +-1.510749691791959427e-02, +-1.515694782986278487e-02, +-1.520636825792591636e-02, +-1.525575812577831779e-02, +-1.530511735714765870e-02, +-1.535444587581963859e-02, +-1.540374360563875715e-02, +-1.545301047050804712e-02, +-1.550224639438947498e-02, +-1.555145130130326618e-02, +-1.560062511532925300e-02, +-1.564976776060617025e-02, +-1.569887916133145059e-02, +-1.574795924176267820e-02, +-1.579700792621646990e-02, +-1.584602513906862090e-02, +-1.589501080475498943e-02, +-1.594396484777133721e-02, +-1.599288719267275005e-02, +-1.604177776407479661e-02, +-1.609063648665295942e-02, +-1.613946328514306860e-02, +-1.618825808434107630e-02, +-1.623702080910343834e-02, +-1.628575138434744038e-02, +-1.633444973505075032e-02, +-1.638311578625183118e-02, +-1.643174946305014233e-02, +-1.648035069060639971e-02, +-1.652891939414179515e-02, +-1.657745549893930442e-02, +-1.662595893034339925e-02, +-1.667442961375937768e-02, +-1.672286747465456108e-02, +-1.677127243855812411e-02, +-1.681964443106041471e-02, +-1.686798337781426904e-02, +-1.691628920453436963e-02, +-1.696456183699759923e-02, +-1.701280120104287780e-02, +-1.706100722257160307e-02, +-1.710917982754784836e-02, +-1.715731894199807456e-02, +-1.720542449201144242e-02, +-1.725349640373984028e-02, +-1.730153460339847044e-02, +-1.734953901726494357e-02, +-1.739750957168055209e-02, +-1.744544619304960742e-02, +-1.749334880783993268e-02, +-1.754121734258254697e-02, +-1.758905172387248764e-02, +-1.763685187836796717e-02, +-1.768461773279134119e-02, +-1.773234921392879276e-02, +-1.778004624863070704e-02, +-1.782770876381128966e-02, +-1.787533668644908369e-02, +-1.792292994358734778e-02, +-1.797048846233316455e-02, +-1.801801216985873463e-02, +-1.806550099340064816e-02, +-1.811295486026067575e-02, +-1.816037369780479360e-02, +-1.820775743346457823e-02, +-1.825510599473660275e-02, +-1.830241930918257570e-02, +-1.834969730442956304e-02, +-1.839693990817034899e-02, +-1.844414704816258258e-02, +-1.849131865223029719e-02, +-1.853845464826296349e-02, +-1.858555496421605835e-02, +-1.863261952811090180e-02, +-1.867964826803492073e-02, +-1.872664111214202010e-02, +-1.877359798865186127e-02, +-1.882051882585121863e-02, +-1.886740355209282419e-02, +-1.891425209579646396e-02, +-1.896106438544821818e-02, +-1.900784034960136329e-02, +-1.905457991687605976e-02, +-1.910128301595959144e-02, +-1.914794957560585903e-02, +-1.919457952463717032e-02, +-1.924117279194198504e-02, +-1.928772930647701042e-02, +-1.933424899726639626e-02, +-1.938073179340187024e-02, +-1.942717762404295653e-02, +-1.947358641841714574e-02, +-1.951995810582016211e-02, +-1.956629261561540489e-02, +-1.961258987723486086e-02, +-1.965884982017866711e-02, +-1.970507237401564887e-02, +-1.975125746838268803e-02, +-1.979740503298577439e-02, +-1.984351499759967261e-02, +-1.988958729206746420e-02, +-1.993562184630175496e-02, +-1.998161859028402265e-02, +-2.002757745406484255e-02, +-2.007349836776411989e-02, +-2.011938126157130149e-02, +-2.016522606574509130e-02, +-2.021103271061372095e-02, +-2.025680112657538695e-02, +-2.030253124409800783e-02, +-2.034822299371904716e-02, +-2.039387630604650239e-02, +-2.043949111175812766e-02, +-2.048506734160211729e-02, +-2.053060492639665821e-02, +-2.057610379703062042e-02, +-2.062156388446347716e-02, +-2.066698511972483651e-02, +-2.071236743391541985e-02, +-2.075771075820687442e-02, +-2.080301502384140216e-02, +-2.084828016213256113e-02, +-2.089350610446483875e-02, +-2.093869278229415487e-02, +-2.098384012714735181e-02, +-2.102894807062320043e-02, +-2.107401654439175487e-02, +-2.111904548019465783e-02, +-2.116403480984541813e-02, +-2.120898446522935521e-02, +-2.125389437830384892e-02, +-2.129876448109791279e-02, +-2.134359470571313075e-02, +-2.138838498432330676e-02, +-2.143313524917421151e-02, +-2.147784543258436304e-02, +-2.152251546694492618e-02, +-2.156714528471960837e-02, +-2.161173481844442731e-02, +-2.165628400072895296e-02, +-2.170079276425550610e-02, +-2.174526104177899877e-02, +-2.178968876612788139e-02, +-2.183407587020395890e-02, +-2.187842228698193975e-02, +-2.192272794951028239e-02, +-2.196699279091111207e-02, +-2.201121674437992934e-02, +-2.205539974318584950e-02, +-2.209954172067228606e-02, +-2.214364261025638866e-02, +-2.218770234542896333e-02, +-2.223172085975535367e-02, +-2.227569808687515640e-02, +-2.231963396050228726e-02, +-2.236352841442462019e-02, +-2.240738138250520164e-02, +-2.245119279868140749e-02, +-2.249496259696523795e-02, +-2.253869071144356390e-02, +-2.258237707627834545e-02, +-2.262602162570614278e-02, +-2.266962429403918122e-02, +-2.271318501566436249e-02, +-2.275670372504446856e-02, +-2.280018035671686066e-02, +-2.284361484529512723e-02, +-2.288700712546823737e-02, +-2.293035713200057210e-02, +-2.297366479973259393e-02, +-2.301693006358061094e-02, +-2.306015285853688784e-02, +-2.310333311966945163e-02, +-2.314647078212276818e-02, +-2.318956578111797118e-02, +-2.323261805195166174e-02, +-2.327562752999741413e-02, +-2.331859415070561964e-02, +-2.336151784960247349e-02, +-2.340439856229166796e-02, +-2.344723622445338967e-02, +-2.349003077184488517e-02, +-2.353278214030011042e-02, +-2.357549026573046991e-02, +-2.361815508412455980e-02, +-2.366077653154801536e-02, +-2.370335454414395845e-02, +-2.374588905813312945e-02, +-2.378838000981397388e-02, +-2.383082733556197291e-02, +-2.387323097183111087e-02, +-2.391559085515270952e-02, +-2.395790692213636136e-02, +-2.400017910946963817e-02, +-2.404240735391814654e-02, +-2.408459159232563540e-02, +-2.412673176161439503e-02, +-2.416882779878503848e-02, +-2.421087964091671318e-02, +-2.425288722516697262e-02, +-2.429485048877242509e-02, +-2.433676936904809532e-02, +-2.437864380338807674e-02, +-2.442047372926535800e-02, +-2.446225908423186463e-02, +-2.450399980591926041e-02, +-2.454569583203737235e-02, +-2.458734710037630347e-02, +-2.462895354880531573e-02, +-2.467051511527276753e-02, +-2.471203173780718229e-02, +-2.475350335451656850e-02, +-2.479492990358859658e-02, +-2.483631132329074467e-02, +-2.487764755197084676e-02, +-2.491893852805647167e-02, +-2.496018419005524569e-02, +-2.500138447655508508e-02, +-2.504253932622468176e-02, +-2.508364867781235491e-02, +-2.512471247014737286e-02, +-2.516573064213965122e-02, +-2.520670313277957250e-02, +-2.524762988113839202e-02, +-2.528851082636811298e-02, +-2.532934590770186470e-02, +-2.537013506445342376e-02, +-2.541087823601802242e-02, +-2.545157536187236946e-02, +-2.549222638157355031e-02, +-2.553283123476079303e-02, +-2.557338986115464258e-02, +-2.561390220055716552e-02, +-2.565436819285187020e-02, +-2.569478777800409883e-02, +-2.573516089606131887e-02, +-2.577548748715231819e-02, +-2.581576749148821806e-02, +-2.585600084936234139e-02, +-2.589618750115003920e-02, +-2.593632738730864556e-02, +-2.597642044837824432e-02, +-2.601646662498109316e-02, +-2.605646585782185262e-02, +-2.609641808768814117e-02, +-2.613632325544976154e-02, +-2.617618130205988380e-02, +-2.621599216855394904e-02, +-2.625575579605073789e-02, +-2.629547212575166978e-02, +-2.633514109894149330e-02, +-2.637476265698837641e-02, +-2.641433674134321952e-02, +-2.645386329354054711e-02, +-2.649334225519850428e-02, +-2.653277356801841264e-02, +-2.657215717378553360e-02, +-2.661149301436835715e-02, +-2.665078103171972940e-02, +-2.669002116787599216e-02, +-2.672921336495724665e-02, +-2.676835756516816531e-02, +-2.680745371079706549e-02, +-2.684650174421669006e-02, +-2.688550160788387780e-02, +-2.692445324434010814e-02, +-2.696335659621093214e-02, +-2.700221160620656577e-02, +-2.704101821712198359e-02, +-2.707977637183671751e-02, +-2.711848601331494010e-02, +-2.715714708460590862e-02, +-2.719575952884350709e-02, +-2.723432328924720036e-02, +-2.727283830912066373e-02, +-2.731130453185362517e-02, +-2.734972190092063368e-02, +-2.738809035988129872e-02, +-2.742640985238134835e-02, +-2.746468032215145308e-02, +-2.750290171300812450e-02, +-2.754107396885324341e-02, +-2.757919703367484390e-02, +-2.761727085154643338e-02, +-2.765529536662754764e-02, +-2.769327052316378907e-02, +-2.773119626548674332e-02, +-2.776907253801387879e-02, +-2.780689928524930632e-02, +-2.784467645178316519e-02, +-2.788240398229201861e-02, +-2.792008182153878082e-02, +-2.795770991437324451e-02, +-2.799528820573154650e-02, +-2.803281664063638282e-02, +-2.807029516419753956e-02, +-2.810772372161122329e-02, +-2.814510225816130654e-02, +-2.818243071921767290e-02, +-2.821970905023798298e-02, +-2.825693719676699439e-02, +-2.829411510443632580e-02, +-2.833124271896527227e-02, +-2.836831998616046180e-02, +-2.840534685191571998e-02, +-2.844232326221270493e-02, +-2.847924916312066790e-02, +-2.851612450079618957e-02, +-2.855294922148421399e-02, +-2.858972327151708751e-02, +-2.862644659731516938e-02, +-2.866311914538691163e-02, +-2.869974086232880348e-02, +-2.873631169482548930e-02, +-2.877283158964977217e-02, +-2.880930049366263804e-02, +-2.884571835381390809e-02, +-2.888208511714133661e-02, +-2.891840073077153739e-02, +-2.895466514191949794e-02, +-2.899087829788928733e-02, +-2.902704014607294589e-02, +-2.906315063395219569e-02, +-2.909920970909709442e-02, +-2.913521731916695126e-02, +-2.917117341190990018e-02, +-2.920707793516333708e-02, +-2.924293083685400307e-02, +-2.927873206499756117e-02, +-2.931448156769914451e-02, +-2.935017929315347079e-02, +-2.938582518964447804e-02, +-2.942141920554578252e-02, +-2.945696128932064409e-02, +-2.949245138952212228e-02, +-2.952788945479292021e-02, +-2.956327543386544354e-02, +-2.959860927556245275e-02, +-2.963389092879612982e-02, +-2.966912034256922320e-02, +-2.970429746597430878e-02, +-2.973942224819427910e-02, +-2.977449463850227046e-02, +-2.980951458626177053e-02, +-2.984448204092694790e-02, +-2.987939695204185411e-02, +-2.991425926924159984e-02, +-2.994906894225176155e-02, +-2.998382592088874241e-02, +-3.001853015505941483e-02, +-3.005318159476174159e-02, +-3.008778019008478272e-02, +-3.012232589120782816e-02, +-3.015681864840211515e-02, +-3.019125841202960001e-02, +-3.022564513254322530e-02, +-3.025997876048763108e-02, +-3.029425924649842283e-02, +-3.032848654130272312e-02, +-3.036266059571903625e-02, +-3.039678136065756403e-02, +-3.043084878712004615e-02, +-3.046486282619984692e-02, +-3.049882342908201427e-02, +-3.053273054704375850e-02, +-3.056658413145347739e-02, +-3.060038413377212316e-02, +-3.063413050555241490e-02, +-3.066782319843917859e-02, +-3.070146216416926727e-02, +-3.073504735457185943e-02, +-3.076857872156867069e-02, +-3.080205621717306899e-02, +-3.083547979349146248e-02, +-3.086884940272252575e-02, +-3.090216499715742193e-02, +-3.093542652917975408e-02, +-3.096863395126631460e-02, +-3.100178721598619014e-02, +-3.103488627600121952e-02, +-3.106793108406646908e-02, +-3.110092159302985798e-02, +-3.113385775583189796e-02, +-3.116673952550656074e-02, +-3.119956685518093450e-02, +-3.123233969807521007e-02, +-3.126505800750277453e-02, +-3.129772173687036391e-02, +-3.133033083967814991e-02, +-3.136288526951992728e-02, +-3.139538498008251355e-02, +-3.142782992514678991e-02, +-3.146022005858701426e-02, +-3.149255533437132076e-02, +-3.152483570656119255e-02, +-3.155706112931273150e-02, +-3.158923155687513862e-02, +-3.162134694359201859e-02, +-3.165340724390078991e-02, +-3.168541241233292782e-02, +-3.171736240351435976e-02, +-3.174925717216487558e-02, +-3.178109667309877984e-02, +-3.181288086122437131e-02, +-3.184460969154465776e-02, +-3.187628311915707835e-02, +-3.190790109925321916e-02, +-3.193946358711980543e-02, +-3.197097053813797995e-02, +-3.200242190778313650e-02, +-3.203381765162596762e-02, +-3.206515772533195113e-02, +-3.209644208466112814e-02, +-3.212767068546848459e-02, +-3.215884348370456891e-02, +-3.218996043541435398e-02, +-3.222102149673795185e-02, +-3.225202662391119662e-02, +-3.228297577326455503e-02, +-3.231386890122435462e-02, +-3.234470596431157641e-02, +-3.237548691914318016e-02, +-3.240621172243142445e-02, +-3.243688033098398454e-02, +-3.246749270170437573e-02, +-3.249804879159149534e-02, +-3.252854855774016396e-02, +-3.255899195734069523e-02, +-3.258937894767939547e-02, +-3.261970948613875793e-02, +-3.264998353019646360e-02, +-3.268020103742670657e-02, +-3.271036196549982622e-02, +-3.274046627218192562e-02, +-3.277051391533546132e-02, +-3.280050485291888251e-02, +-3.283043904298736659e-02, +-3.286031644369203503e-02, +-3.289013701328053624e-02, +-3.291990071009685132e-02, +-3.294960749258158544e-02, +-3.297925731927193321e-02, +-3.300885014880155371e-02, +-3.303838593990081340e-02, +-3.306786465139698039e-02, +-3.309728624221382892e-02, +-3.312665067137217367e-02, +-3.315595789798946730e-02, +-3.318520788128048044e-02, +-3.321440058055670497e-02, +-3.324353595522671484e-02, +-3.327261396479619382e-02, +-3.330163456886786610e-02, +-3.333059772714223878e-02, +-3.335950339941615855e-02, +-3.338835154558448398e-02, +-3.341714212563941244e-02, +-3.344587509967001521e-02, +-3.347455042786354196e-02, +-3.350316807050421342e-02, +-3.353172798797430382e-02, +-3.356023014075340538e-02, +-3.358867448941882383e-02, +-3.361706099464580044e-02, +-3.364538961720704019e-02, +-3.367366031797337095e-02, +-3.370187305791351451e-02, +-3.373002779809387147e-02, +-3.375812449967901391e-02, +-3.378616312393177556e-02, +-3.381414363221274533e-02, +-3.384206598598074600e-02, +-3.386993014679306330e-02, +-3.389773607630484908e-02, +-3.392548373626961405e-02, +-3.395317308853965099e-02, +-3.398080409506509109e-02, +-3.400837671789496558e-02, +-3.403589091917652576e-02, +-3.406334666115561766e-02, +-3.409074390617671674e-02, +-3.411808261668308057e-02, +-3.414536275521650593e-02, +-3.417258428441755785e-02, +-3.419974716702560424e-02, +-3.422685136587881594e-02, +-3.425389684391445810e-02, +-3.428088356416863353e-02, +-3.430781148977617157e-02, +-3.433468058397120409e-02, +-3.436149081008725570e-02, +-3.438824213155621673e-02, +-3.441493451190967556e-02, +-3.444156791477835655e-02, +-3.446814230389241840e-02, +-3.449465764308092680e-02, +-3.452111389627275650e-02, +-3.454751102749602232e-02, +-3.457384900087799584e-02, +-3.460012778064613936e-02, +-3.462634733112680135e-02, +-3.465250761674610464e-02, +-3.467860860203019618e-02, +-3.470465025160462263e-02, +-3.473063253019434415e-02, +-3.475655540262459486e-02, +-3.478241883382053590e-02, +-3.480822278880660314e-02, +-3.483396723270749951e-02, +-3.485965213074794511e-02, +-3.488527744825267035e-02, +-3.491084315064624938e-02, +-3.493634920345354417e-02, +-3.496179557229946167e-02, +-3.498718222290907176e-02, +-3.501250912110778074e-02, +-3.503777623282112313e-02, +-3.506298352407510172e-02, +-3.508813096099587525e-02, +-3.511321850981016096e-02, +-3.513824613684513043e-02, +-3.516321380852825002e-02, +-3.518812149138771800e-02, +-3.521296915205217315e-02, +-3.523775675725104167e-02, +-3.526248427381393352e-02, +-3.528715166867186365e-02, +-3.531175890885593360e-02, +-3.533630596149849035e-02, +-3.536079279383223806e-02, +-3.538521937319132060e-02, +-3.540958566701032928e-02, +-3.543389164282482323e-02, +-3.545813726827144047e-02, +-3.548232251108818930e-02, +-3.550644733911341444e-02, +-3.553051172028710153e-02, +-3.555451562265033588e-02, +-3.557845901434499719e-02, +-3.560234186361466852e-02, +-3.562616413880385913e-02, +-3.564992580835868452e-02, +-3.567362684082632518e-02, +-3.569726720485534577e-02, +-3.572084686919592411e-02, +-3.574436580269953201e-02, +-3.576782397431921279e-02, +-3.579122135310958130e-02, +-3.581455790822685170e-02, +-3.583783360892843495e-02, +-3.586104842457392416e-02, +-3.588420232462435217e-02, +-3.590729527864254533e-02, +-3.593032725629308893e-02, +-3.595329822734227160e-02, +-3.597620816165812696e-02, +-3.599905702921078060e-02, +-3.602184480007229045e-02, +-3.604457144441650107e-02, +-3.606723693251916857e-02, +-3.608984123475820344e-02, +-3.611238432161364975e-02, +-3.613486616366763660e-02, +-3.615728673160385764e-02, +-3.617964599620902139e-02, +-3.620194392837164377e-02, +-3.622418049908211757e-02, +-3.624635567943353814e-02, +-3.626846944062151606e-02, +-3.629052175394319874e-02, +-3.631251259079891491e-02, +-3.633444192269087714e-02, +-3.635630972122397969e-02, +-3.637811595810536841e-02, +-3.639986060514507210e-02, +-3.642154363425523234e-02, +-3.644316501745088754e-02, +-3.646472472684932770e-02, +-3.648622273467087840e-02, +-3.650765901323825557e-02, +-3.652903353497700956e-02, +-3.655034627241540712e-02, +-3.657159719818449395e-02, +-3.659278628501786562e-02, +-3.661391350575230602e-02, +-3.663497883332734323e-02, +-3.665598224078540912e-02, +-3.667692370127167284e-02, +-3.669780318803460978e-02, +-3.671862067442536320e-02, +-3.673937613389832019e-02, +-3.676006954001068139e-02, +-3.678070086642292597e-02, +-3.680127008689876994e-02, +-3.682177717530465272e-02, +-3.684222210561065997e-02, +-3.686260485188944114e-02, +-3.688292538831777767e-02, +-3.690318368917505643e-02, +-3.692337972884395664e-02, +-3.694351348181078298e-02, +-3.696358492266509088e-02, +-3.698359402609974894e-02, +-3.700354076691103611e-02, +-3.702342511999856534e-02, +-3.704324706036595666e-02, +-3.706300656311945635e-02, +-3.708270360346956757e-02, +-3.710233815673009278e-02, +-3.712191019831830724e-02, +-3.714141970375510471e-02, +-3.716086664866511541e-02, +-3.718025100877666439e-02, +-3.719957275992172296e-02, +-3.721883187803591564e-02, +-3.723802833915861726e-02, +-3.725716211943318895e-02, +-3.727623319510627725e-02, +-3.729524154252897988e-02, +-3.731418713815582572e-02, +-3.733306995854530214e-02, +-3.735188998035977870e-02, +-3.737064718036577082e-02, +-3.738934153543344019e-02, +-3.740797302253709433e-02, +-3.742654161875514501e-02, +-3.744504730126969883e-02, +-3.746349004736723720e-02, +-3.748186983443802661e-02, +-3.750018663997674306e-02, +-3.751844044158197250e-02, +-3.753663121695654387e-02, +-3.755475894390747360e-02, +-3.757282360034594482e-02, +-3.759082516428715465e-02, +-3.760876361385103589e-02, +-3.762663892726132026e-02, +-3.764445108284621838e-02, +-3.766220005903826024e-02, +-3.767988583437434369e-02, +-3.769750838749556104e-02, +-3.771506769714757373e-02, +-3.773256374218041803e-02, +-3.774999650154854669e-02, +-3.776736595431061383e-02, +-3.778467207963009944e-02, +-3.780191485677494856e-02, +-3.781909426511718963e-02, +-3.783621028413381576e-02, +-3.785326289340635447e-02, +-3.787025207262084692e-02, +-3.788717780156785481e-02, +-3.790404006014245347e-02, +-3.792083882834457881e-02, +-3.793757408627877747e-02, +-3.795424581415415138e-02, +-3.797085399228474628e-02, +-3.798739860108900357e-02, +-3.800387962109040563e-02, +-3.802029703291696233e-02, +-3.803665081730171066e-02, +-3.805294095508195834e-02, +-3.806916742720063002e-02, +-3.808533021470470598e-02, +-3.810142929874652667e-02, +-3.811746466058306415e-02, +-3.813343628157619264e-02, +-3.814934414319286204e-02, +-3.816518822700480651e-02, +-3.818096851468868319e-02, +-3.819668498802616247e-02, +-3.821233762890381691e-02, +-3.822792641931345436e-02, +-3.824345134135154201e-02, +-3.825891237721981697e-02, +-3.827430950922470348e-02, +-3.828964271977838146e-02, +-3.830491199139756525e-02, +-3.832011730670410038e-02, +-3.833525864842508152e-02, +-3.835033599939269983e-02, +-3.836534934254422907e-02, +-3.838029866092213666e-02, +-3.839518393767409055e-02, +-3.841000515605295235e-02, +-3.842476229941664545e-02, +-3.843945535122834239e-02, +-3.845408429505681874e-02, +-3.846864911457545388e-02, +-3.848314979356352861e-02, +-3.849758631590501773e-02, +-3.851195866558951297e-02, +-3.852626682671204256e-02, +-3.854051078347251608e-02, +-3.855469052017675147e-02, +-3.856880602123512886e-02, +-3.858285727116420732e-02, +-3.859684425458534407e-02, +-3.861076695622551319e-02, +-3.862462536091707671e-02, +-3.863841945359765273e-02, +-3.865214921931053871e-02, +-3.866581464320408001e-02, +-3.867941571053253730e-02, +-3.869295240665535790e-02, +-3.870642471703727994e-02, +-3.871983262724880415e-02, +-3.873317612296590939e-02, +-3.874645518997005267e-02, +-3.875966981414796092e-02, +-3.877281998149219311e-02, +-3.878590567810050183e-02, +-3.879892689017673535e-02, +-3.881188360402974130e-02, +-3.882477580607411605e-02, +-3.883760348283001734e-02, +-3.885036662092338638e-02, +-3.886306520708541351e-02, +-3.887569922815312801e-02, +-3.888826867106918994e-02, +-3.890077352288163343e-02, +-3.891321377074435234e-02, +-3.892558940191685746e-02, +-3.893790040376400585e-02, +-3.895014676375683355e-02, +-3.896232846947162570e-02, +-3.897444550859039542e-02, +-3.898649786890098085e-02, +-3.899848553829692033e-02, +-3.901040850477709154e-02, +-3.902226675644660664e-02, +-3.903406028151572976e-02, +-3.904578906830097340e-02, +-3.905745310522406449e-02, +-3.906905238081297138e-02, +-3.908058688370096706e-02, +-3.909205660262711490e-02, +-3.910346152643657397e-02, +-3.911480164407984267e-02, +-3.912607694461336938e-02, +-3.913728741719954551e-02, +-3.914843305110603244e-02, +-3.915951383570678151e-02, +-3.917052976048118751e-02, +-3.918148081501449803e-02, +-3.919236698899805638e-02, +-3.920318827222842722e-02, +-3.921394465460848605e-02, +-3.922463612614673911e-02, +-3.923526267695726100e-02, +-3.924582429726031219e-02, +-3.925632097738186721e-02, +-3.926675270775342036e-02, +-3.927711947891272815e-02, +-3.928742128150314317e-02, +-3.929765810627371819e-02, +-3.930782994407964331e-02, +-3.931793678588177410e-02, +-3.932797862274655526e-02, +-3.933795544584694354e-02, +-3.934786724646098521e-02, +-3.935771401597309982e-02, +-3.936749574587320583e-02, +-3.937721242775719249e-02, +-3.938686405332694762e-02, +-3.939645061439012164e-02, +-3.940597210285984309e-02, +-3.941542851075588438e-02, +-3.942481983020298952e-02, +-3.943414605343240759e-02, +-3.944340717278100455e-02, +-3.945260318069124944e-02, +-3.946173406971201225e-02, +-3.947079983249753010e-02, +-3.947980046180808722e-02, +-3.948873595051000801e-02, +-3.949760629157507419e-02, +-3.950641147808102438e-02, +-3.951515150321180392e-02, +-3.952382636025696810e-02, +-3.953243604261177241e-02, +-3.954098054377729043e-02, +-3.954945985736084413e-02, +-3.955787397707531683e-02, +-3.956622289673928511e-02, +-3.957450661027764327e-02, +-3.958272511172069436e-02, +-3.959087839520470525e-02, +-3.959896645497180956e-02, +-3.960698928536999369e-02, +-3.961494688085299976e-02, +-3.962283923598038105e-02, +-3.963066634541754368e-02, +-3.963842820393588540e-02, +-3.964612480641224040e-02, +-3.965375614782975372e-02, +-3.966132222327684725e-02, +-3.966882302794807330e-02, +-3.967625855714377453e-02, +-3.968362880626984113e-02, +-3.969093377083841856e-02, +-3.969817344646691532e-02, +-3.970534782887891884e-02, +-3.971245691390351551e-02, +-3.971950069747563761e-02, +-3.972647917563614656e-02, +-3.973339234453143742e-02, +-3.974024020041395239e-02, +-3.974702273964148685e-02, +-3.975373995867778620e-02, +-3.976039185409240700e-02, +-3.976697842256059212e-02, +-3.977349966086316663e-02, +-3.977995556588674597e-02, +-3.978634613462392333e-02, +-3.979267136417240225e-02, +-3.979893125173632890e-02, +-3.980512579462470307e-02, +-3.981125499025291864e-02, +-3.981731883614167411e-02, +-3.982331732991764572e-02, +-3.982925046931255764e-02, +-3.983511825216429908e-02, +-3.984092067641641088e-02, +-3.984665774011774547e-02, +-3.985232944142313993e-02, +-3.985793577859268744e-02, +-3.986347674999223684e-02, +-3.986895235409326083e-02, +-3.987436258947281431e-02, +-3.987970745481365931e-02, +-3.988498694890383472e-02, +-3.989020107063719067e-02, +-3.989534981901277089e-02, +-3.990043319313552050e-02, +-3.990545119221593912e-02, +-3.991040381556958117e-02, +-3.991529106261810372e-02, +-3.992011293288824647e-02, +-3.992486942601217170e-02, +-3.992956054172797781e-02, +-3.993418627987882497e-02, +-3.993874664041337230e-02, +-3.994324162338567380e-02, +-3.994767122895553912e-02, +-3.995203545738786055e-02, +-3.995633430905287664e-02, +-3.996056778442658164e-02, +-3.996473588408986505e-02, +-3.996883860872940675e-02, +-3.997287595913704555e-02, +-3.997684793620992494e-02, +-3.998075454095061793e-02, +-3.998459577446673158e-02, +-3.998837163797158006e-02, +-3.999208213278353935e-02, +-3.999572726032613046e-02, +-3.999930702212853295e-02, +-4.000282141982464124e-02, +-4.000627045515379315e-02, +-4.000965412996075610e-02, +-4.001297244619540783e-02, +-4.001622540591234095e-02, +-4.001941301127190376e-02, +-4.002253526453943000e-02, +-4.002559216808510706e-02, +-4.002858372438466983e-02, +-4.003150993601859581e-02, +-4.003437080567267409e-02, +-4.003716633613764453e-02, +-4.003989653030928103e-02, +-4.004256139118864133e-02, +-4.004516092188154658e-02, +-4.004769512559884503e-02, +-4.005016400565653695e-02, +-4.005256756547518476e-02, +-4.005490580858089844e-02, +-4.005717873860441952e-02, +-4.005938635928110031e-02, +-4.006152867445184063e-02, +-4.006360568806203309e-02, +-4.006561740416174355e-02, +-4.006756382690640494e-02, +-4.006944496055584587e-02, +-4.007126080947484570e-02, +-4.007301137813316233e-02, +-4.007469667110468564e-02, +-4.007631669306911670e-02, +-4.007787144881000407e-02, +-4.007936094321586096e-02, +-4.008078518127995704e-02, +-4.008214416810020053e-02, +-4.008343790887915897e-02, +-4.008466640892407312e-02, +-4.008582967364670430e-02, +-4.008692770856347315e-02, +-4.008796051929535559e-02, +-4.008892811156794522e-02, +-4.008983049121119663e-02, +-4.009066766415963351e-02, +-4.009143963645254299e-02, +-4.009214641423333031e-02, +-4.009278800374997676e-02, +-4.009336441135472051e-02, +-4.009387564350448685e-02, +-4.009432170676049956e-02, +-4.009470260778810746e-02, +-4.009501835335745057e-02, +-4.009526895034246086e-02, +-4.009545440572172964e-02, +-4.009557472657786920e-02, +-4.009562992009808868e-02, +-4.009561999357322271e-02, +-4.009554495439904970e-02, +-4.009540481007502211e-02, +-4.009519956820454395e-02, +-4.009492923649593532e-02, +-4.009459382276080175e-02, +-4.009419333491519993e-02, +-4.009372778097947121e-02, +-4.009319716907729092e-02, +-4.009260150743720885e-02, +-4.009194080439086594e-02, +-4.009121506837458326e-02, +-4.009042430792834899e-02, +-4.008956853169585999e-02, +-4.008864774842488959e-02, +-4.008766196696719047e-02, +-4.008661119627797420e-02, +-4.008549544541653575e-02, +-4.008431472354598984e-02, +-4.008306903993297948e-02, +-4.008175840394789802e-02, +-4.008038282506510425e-02, +-4.007894231286225628e-02, +-4.007743687702083890e-02, +-4.007586652732607335e-02, +-4.007423127366634835e-02, +-4.007253112603415685e-02, +-4.007076609452512456e-02, +-4.006893618933851653e-02, +-4.006704142077706365e-02, +-4.006508179924706675e-02, +-4.006305733525784840e-02, +-4.006096803942257173e-02, +-4.005881392245768530e-02, +-4.005659499518265249e-02, +-4.005431126852068702e-02, +-4.005196275349778151e-02, +-4.004954946124368587e-02, +-4.004707140299092194e-02, +-4.004452859007562315e-02, +-4.004192103393657692e-02, +-4.003924874611612672e-02, +-4.003651173825956838e-02, +-4.003371002211523338e-02, +-4.003084360953453741e-02, +-4.002791251247182769e-02, +-4.002491674298438301e-02, +-4.002185631323262882e-02, +-4.001873123547979721e-02, +-4.001554152209198939e-02, +-4.001228718553800912e-02, +-4.000896823838993172e-02, +-4.000558469332189671e-02, +-4.000213656311159272e-02, +-3.999862386063884195e-02, +-3.999504659888648839e-02, +-3.999140479093975242e-02, +-3.998769844998680684e-02, +-3.998392758931823554e-02, +-3.998009222232710991e-02, +-3.997619236250922470e-02, +-3.997222802346260540e-02, +-3.996819921888810495e-02, +-3.996410596258859887e-02, +-3.995994826846955422e-02, +-3.995572615053908511e-02, +-3.995143962290695350e-02, +-3.994708869978583904e-02, +-3.994267339549032597e-02, +-3.993819372443747906e-02, +-3.993364970114612195e-02, +-3.992904134023795432e-02, +-3.992436865643604615e-02, +-3.991963166456589940e-02, +-3.991483037955500385e-02, +-3.990996481643305921e-02, +-3.990503499033126733e-02, +-3.990004091648336609e-02, +-3.989498261022454695e-02, +-3.988986008699208635e-02, +-3.988467336232513066e-02, +-3.987942245186425205e-02, +-3.987410737135238525e-02, +-3.986872813663371734e-02, +-3.986328476365427059e-02, +-3.985777726846169433e-02, +-3.985220566720532737e-02, +-3.984656997613595514e-02, +-3.984087021160607339e-02, +-3.983510639006956205e-02, +-3.982927852808188646e-02, +-3.982338664229959080e-02, +-3.981743074948086020e-02, +-3.981141086648550681e-02, +-3.980532701027415798e-02, +-3.979917919790901953e-02, +-3.979296744655325818e-02, +-3.978669177347154973e-02, +-3.978035219602967659e-02, +-3.977394873169426415e-02, +-3.976748139803327337e-02, +-3.976095021271550123e-02, +-3.975435519351097624e-02, +-3.974769635829061842e-02, +-3.974097372502617687e-02, +-3.973418731179025054e-02, +-3.972733713675641321e-02, +-3.972042321819899136e-02, +-3.971344557449306423e-02, +-3.970640422411411685e-02, +-3.969929918563899762e-02, +-3.969213047774451664e-02, +-3.968489811920837551e-02, +-3.967760212890905636e-02, +-3.967024252582488503e-02, +-3.966281932903546054e-02, +-3.965533255772014237e-02, +-3.964778223115882072e-02, +-3.964016836873222177e-02, +-3.963249098992072811e-02, +-3.962475011430541261e-02, +-3.961694576156722658e-02, +-3.960907795148748550e-02, +-3.960114670394757758e-02, +-3.959315203892917884e-02, +-3.958509397651374662e-02, +-3.957697253688266525e-02, +-3.956878774031765550e-02, +-3.956053960719994184e-02, +-3.955222815801087699e-02, +-3.954385341333151171e-02, +-3.953541539384290010e-02, +-3.952691412032541263e-02, +-3.951834961365946475e-02, +-3.950972189482494790e-02, +-3.950103098490138215e-02, +-3.949227690506808969e-02, +-3.948345967660332051e-02, +-3.947457932088547367e-02, +-3.946563585939172336e-02, +-3.945662931369925408e-02, +-3.944755970548397689e-02, +-3.943842705652159802e-02, +-3.942923138868678623e-02, +-3.941997272395322133e-02, +-3.941065108439411463e-02, +-3.940126649218177179e-02, +-3.939181896958710710e-02, +-3.938230853898044143e-02, +-3.937273522283091243e-02, +-3.936309904370649537e-02, +-3.935340002427436396e-02, +-3.934363818729994661e-02, +-3.933381355564807141e-02, +-3.932392615228169630e-02, +-3.931397600026285272e-02, +-3.930396312275188236e-02, +-3.929388754300809639e-02, +-3.928374928438906066e-02, +-3.927354837035068602e-02, +-3.926328482444776946e-02, +-3.925295867033312680e-02, +-3.924256993175803676e-02, +-3.923211863257175525e-02, +-3.922160479672245903e-02, +-3.921102844825582329e-02, +-3.920038961131596528e-02, +-3.918968831014505577e-02, +-3.917892456908336068e-02, +-3.916809841256892188e-02, +-3.915720986513785556e-02, +-3.914625895142435918e-02, +-3.913524569616017024e-02, +-3.912417012417468420e-02, +-3.911303226039567621e-02, +-3.910183212984778139e-02, +-3.909056975765384800e-02, +-3.907924516903409085e-02, +-3.906785838930633414e-02, +-3.905640944388556746e-02, +-3.904489835828491712e-02, +-3.903332515811397396e-02, +-3.902168986908026438e-02, +-3.900999251698850090e-02, +-3.899823312774046424e-02, +-3.898641172733516291e-02, +-3.897452834186875686e-02, +-3.896258299753427995e-02, +-3.895057572062214646e-02, +-3.893850653751921437e-02, +-3.892637547470978454e-02, +-3.891418255877463622e-02, +-3.890192781639134623e-02, +-3.888961127433445547e-02, +-3.887723295947507346e-02, +-3.886479289878089910e-02, +-3.885229111931618601e-02, +-3.883972764824184659e-02, +-3.882710251281502184e-02, +-3.881441574038966419e-02, +-3.880166735841557302e-02, +-3.878885739443932446e-02, +-3.877598587610362607e-02, +-3.876305283114693523e-02, +-3.875005828740459013e-02, +-3.873700227280752612e-02, +-3.872388481538264343e-02, +-3.871070594325325132e-02, +-3.869746568463797859e-02, +-3.868416406785198797e-02, +-3.867080112130566460e-02, +-3.865737687350552509e-02, +-3.864389135305361378e-02, +-3.863034458864744725e-02, +-3.861673660908055555e-02, +-3.860306744324153161e-02, +-3.858933712011479444e-02, +-3.857554566877997165e-02, +-3.856169311841202429e-02, +-3.854777949828136485e-02, +-3.853380483775337845e-02, +-3.851976916628900571e-02, +-3.850567251344387543e-02, +-3.849151490886908167e-02, +-3.847729638231030952e-02, +-3.846301696360853589e-02, +-3.844867668269957850e-02, +-3.843427556961383218e-02, +-3.841981365447685870e-02, +-3.840529096750845695e-02, +-3.839070753902335681e-02, +-3.837606339943087919e-02, +-3.836135857923495679e-02, +-3.834659310903372476e-02, +-3.833176701952002718e-02, +-3.831688034148066080e-02, +-3.830193310579727006e-02, +-3.828692534344518839e-02, +-3.827185708549430548e-02, +-3.825672836310841513e-02, +-3.824153920754559677e-02, +-3.822628965015741759e-02, +-3.821097972238994556e-02, +-3.819560945578295841e-02, +-3.818017888196983262e-02, +-3.816468803267774462e-02, +-3.814913693972792064e-02, +-3.813352563503468601e-02, +-3.811785415060615217e-02, +-3.810212251854415422e-02, +-3.808633077104365411e-02, +-3.807047894039293501e-02, +-3.805456705897407310e-02, +-3.803859515926177187e-02, +-3.802256327382438211e-02, +-3.800647143532324274e-02, +-3.799031967651263914e-02, +-3.797410803024017095e-02, +-3.795783652944600267e-02, +-3.794150520716333547e-02, +-3.792511409651820597e-02, +-3.790866323072925037e-02, +-3.789215264310825254e-02, +-3.787558236705895753e-02, +-3.785895243607800831e-02, +-3.784226288375476532e-02, +-3.782551374377039061e-02, +-3.780870504989913838e-02, +-3.779183683600696037e-02, +-3.777490913605247025e-02, +-3.775792198408613881e-02, +-3.774087541425071024e-02, +-3.772376946078093152e-02, +-3.770660415800361487e-02, +-3.768937954033736021e-02, +-3.767209564229234003e-02, +-3.765475249847133332e-02, +-3.763735014356782427e-02, +-3.761988861236761211e-02, +-3.760236793974805480e-02, +-3.758478816067760409e-02, +-3.756714931021646470e-02, +-3.754945142351612253e-02, +-3.753169453581945564e-02, +-3.751387868246073426e-02, +-3.749600389886495466e-02, +-3.747807022054874815e-02, +-3.746007768311920838e-02, +-3.744202632227500160e-02, +-3.742391617380556867e-02, +-3.740574727359073648e-02, +-3.738751965760155754e-02, +-3.736923336189979655e-02, +-3.735088842263770137e-02, +-3.733248487605807936e-02, +-3.731402275849410310e-02, +-3.729550210636997654e-02, +-3.727692295619976920e-02, +-3.725828534458757585e-02, +-3.723958930822855729e-02, +-3.722083488390734440e-02, +-3.720202210849878066e-02, +-3.718315101896801922e-02, +-3.716422165236978742e-02, +-3.714523404584914312e-02, +-3.712618823664050327e-02, +-3.710708426206839328e-02, +-3.708792215954659355e-02, +-3.706870196657884725e-02, +-3.704942372075846480e-02, +-3.703008745976798383e-02, +-3.701069322137930800e-02, +-3.699124104345401232e-02, +-3.697173096394253816e-02, +-3.695216302088460275e-02, +-3.693253725240935870e-02, +-3.691285369673443645e-02, +-3.689311239216695043e-02, +-3.687331337710252760e-02, +-3.685345669002589031e-02, +-3.683354236951041222e-02, +-3.681357045421802809e-02, +-3.679354098289943503e-02, +-3.677345399439386348e-02, +-3.675330952762899395e-02, +-3.673310762162083909e-02, +-3.671284831547374367e-02, +-3.669253164838029435e-02, +-3.667215765962138219e-02, +-3.665172638856572379e-02, +-3.663123787467034015e-02, +-3.661069215748032069e-02, +-3.659008927662804611e-02, +-3.656942927183413905e-02, +-3.654871218290711016e-02, +-3.652793804974290709e-02, +-3.650710691232483124e-02, +-3.648621881072412060e-02, +-3.646527378509939465e-02, +-3.644427187569612009e-02, +-3.642321312284770018e-02, +-3.640209756697462828e-02, +-3.638092524858417554e-02, +-3.635969620827107784e-02, +-3.633841048671695995e-02, +-3.631706812469006479e-02, +-3.629566916304590579e-02, +-3.627421364272645499e-02, +-3.625270160476071896e-02, +-3.623113309026389228e-02, +-3.620950814043789184e-02, +-3.618782679657137763e-02, +-3.616608910003883681e-02, +-3.614429509230161763e-02, +-3.612244481490710368e-02, +-3.610053830948860287e-02, +-3.607857561776561112e-02, +-3.605655678154395111e-02, +-3.603448184271521720e-02, +-3.601235084325647012e-02, +-3.599016382523114593e-02, +-3.596792083078786950e-02, +-3.594562190216141206e-02, +-3.592326708167146304e-02, +-3.590085641172372638e-02, +-3.587838993480908789e-02, +-3.585586769350351116e-02, +-3.583328973046880084e-02, +-3.581065608845110382e-02, +-3.578796681028242888e-02, +-3.576522193887918255e-02, +-3.574242151724315447e-02, +-3.571956558846076102e-02, +-3.569665419570276083e-02, +-3.567368738222560093e-02, +-3.565066519136943918e-02, +-3.562758766655935161e-02, +-3.560445485130479815e-02, +-3.558126678919951158e-02, +-3.555802352392178206e-02, +-3.553472509923379791e-02, +-3.551137155898211745e-02, +-3.548796294709709309e-02, +-3.546449930759330849e-02, +-3.544098068456911360e-02, +-3.541740712220679127e-02, +-3.539377866477209922e-02, +-3.537009535661451293e-02, +-3.534635724216731584e-02, +-3.532256436594726628e-02, +-3.529871677255402851e-02, +-3.527481450667122043e-02, +-3.525085761306532423e-02, +-3.522684613658617209e-02, +-3.520278012216665475e-02, +-3.517865961482252724e-02, +-3.515448465965259617e-02, +-3.513025530183838674e-02, +-3.510597158664438555e-02, +-3.508163355941774225e-02, +-3.505724126558776993e-02, +-3.503279475066699289e-02, +-3.500829406024981438e-02, +-3.498373924001302315e-02, +-3.495913033571602935e-02, +-3.493446739320008043e-02, +-3.490975045838883017e-02, +-3.488497957728750598e-02, +-3.486015479598369299e-02, +-3.483527616064676508e-02, +-3.481034371752747547e-02, +-3.478535751295867146e-02, +-3.476031759335486415e-02, +-3.473522400521174974e-02, +-3.471007679510646621e-02, +-3.468487600969783619e-02, +-3.465962169572575635e-02, +-3.463431390001114885e-02, +-3.460895266945626658e-02, +-3.458353805104429080e-02, +-3.455807009183938655e-02, +-3.453254883898637662e-02, +-3.450697433971103290e-02, +-3.448134664131968091e-02, +-3.445566579119930389e-02, +-3.442993183681760522e-02, +-3.440414482572229371e-02, +-3.437830480554143753e-02, +-3.435241182398371396e-02, +-3.432646592883776410e-02, +-3.430046716797233164e-02, +-3.427441558933591592e-02, +-3.424831124095729235e-02, +-3.422215417094493645e-02, +-3.419594442748684349e-02, +-3.416968205885105581e-02, +-3.414336711338477465e-02, +-3.411699963951483894e-02, +-3.409057968574755876e-02, +-3.406410730066847248e-02, +-3.403758253294225655e-02, +-3.401100543131284348e-02, +-3.398437604460318590e-02, +-3.395769442171514552e-02, +-3.393096061162923643e-02, +-3.390417466340531899e-02, +-3.387733662618129526e-02, +-3.385044654917417073e-02, +-3.382350448167912443e-02, +-3.379651047307001555e-02, +-3.376946457279890457e-02, +-3.374236683039599782e-02, +-3.371521729547011931e-02, +-3.368801601770748944e-02, +-3.366076304687295323e-02, +-3.363345843280863418e-02, +-3.360610222543519710e-02, +-3.357869447475030078e-02, +-3.355123523082962494e-02, +-3.352372454382661349e-02, +-3.349616246397156549e-02, +-3.346854904157254423e-02, +-3.344088432701484981e-02, +-3.341316837076090118e-02, +-3.338540122335011823e-02, +-3.335758293539917846e-02, +-3.332971355760146887e-02, +-3.330179314072732877e-02, +-3.327382173562355716e-02, +-3.324579939321421068e-02, +-3.321772616449920196e-02, +-3.318960210055529880e-02, +-3.316142725253552054e-02, +-3.313320167166921432e-02, +-3.310492540926195798e-02, +-3.307659851669530332e-02, +-3.304822104542695649e-02, +-3.301979304699037554e-02, +-3.299131457299520759e-02, +-3.296278567512633817e-02, +-3.293420640514442554e-02, +-3.290557681488615743e-02, +-3.287689695626311998e-02, +-3.284816688126255407e-02, +-3.281938664194678640e-02, +-3.279055629045338899e-02, +-3.276167587899535966e-02, +-3.273274545986032402e-02, +-3.270376508541086857e-02, +-3.267473480808430475e-02, +-3.264565468039303670e-02, +-3.261652475492386044e-02, +-3.258734508433798471e-02, +-3.255811572137136400e-02, +-3.252883671883418509e-02, +-3.249950812961076296e-02, +-3.247013000665958243e-02, +-3.244070240301372143e-02, +-3.241122537177922036e-02, +-3.238169896613712906e-02, +-3.235212323934144596e-02, +-3.232249824472043648e-02, +-3.229282403567552973e-02, +-3.226310066568217200e-02, +-3.223332818828852225e-02, +-3.220350665711679133e-02, +-3.217363612586192356e-02, +-3.214371664829246411e-02, +-3.211374827824941408e-02, +-3.208373106964702848e-02, +-3.205366507647259416e-02, +-3.202355035278590945e-02, +-3.199338695271948529e-02, +-3.196317493047831637e-02, +-3.193291434034018633e-02, +-3.190260523665479353e-02, +-3.187224767384451429e-02, +-3.184184170640372291e-02, +-3.181138738889894430e-02, +-3.178088477596861805e-02, +-3.175033392232316787e-02, +-3.171973488274494601e-02, +-3.168908771208767128e-02, +-3.165839246527676898e-02, +-3.162764919730964158e-02, +-3.159685796325448909e-02, +-3.156601881825099598e-02, +-3.153513181751044919e-02, +-3.150419701631492625e-02, +-3.147321447001746181e-02, +-3.144218423404233215e-02, +-3.141110636388430577e-02, +-3.137998091510922627e-02, +-3.134880794335335313e-02, +-3.131758750432365318e-02, +-3.128631965379745361e-02, +-3.125500444762219221e-02, +-3.122364194171629859e-02, +-3.119223219206748027e-02, +-3.116077525473414170e-02, +-3.112927118584426361e-02, +-3.109772004159598244e-02, +-3.106612187825695884e-02, +-3.103447675216457202e-02, +-3.100278471972608627e-02, +-3.097104583741779743e-02, +-3.093926016178556726e-02, +-3.090742774944442786e-02, +-3.087554865707898763e-02, +-3.084362294144243205e-02, +-3.081165065935708228e-02, +-3.077963186771439860e-02, +-3.074756662347416861e-02, +-3.071545498366523921e-02, +-3.068329700538485402e-02, +-3.065109274579892046e-02, +-3.061884226214129506e-02, +-3.058654561171485209e-02, +-3.055420285188991530e-02, +-3.052181404010541332e-02, +-3.048937923386788387e-02, +-3.045689849075208441e-02, +-3.042437186840021499e-02, +-3.039179942452245597e-02, +-3.035918121689648586e-02, +-3.032651730336741527e-02, +-3.029380774184775582e-02, +-3.026105259031726738e-02, +-3.022825190682321486e-02, +-3.019540574947931350e-02, +-3.016251417646679395e-02, +-3.012957724603361476e-02, +-3.009659501649451785e-02, +-3.006356754623080302e-02, +-3.003049489369043548e-02, +-2.999737711738820548e-02, +-2.996421427590455211e-02, +-2.993100642788668053e-02, +-2.989775363204807274e-02, +-2.986445594716800531e-02, +-2.983111343209160493e-02, +-2.979772614573035841e-02, +-2.976429414706103713e-02, +-2.973081749512627298e-02, +-2.969729624903433979e-02, +-2.966373046795880639e-02, +-2.963012021113897027e-02, +-2.959646553787859471e-02, +-2.956276650754738333e-02, +-2.952902317957973449e-02, +-2.949523561347502237e-02, +-2.946140386879762818e-02, +-2.942752800517653769e-02, +-2.939360808230528574e-02, +-2.935964415994194929e-02, +-2.932563629790944926e-02, +-2.929158455609449235e-02, +-2.925748899444815393e-02, +-2.922334967298602024e-02, +-2.918916665178707473e-02, +-2.915493999099475972e-02, +-2.912066975081588002e-02, +-2.908635599152139747e-02, +-2.905199877344552886e-02, +-2.901759815698623513e-02, +-2.898315420260454134e-02, +-2.894866697082518203e-02, +-2.891413652223569219e-02, +-2.887956291748693810e-02, +-2.884494621729280853e-02, +-2.881028648242978107e-02, +-2.877558377373746340e-02, +-2.874083815211773973e-02, +-2.870604967853548906e-02, +-2.867121841401748528e-02, +-2.863634441965357685e-02, +-2.860142775659520187e-02, +-2.856646848605627967e-02, +-2.853146666931267311e-02, +-2.849642236770213652e-02, +-2.846133564262445445e-02, +-2.842620655554081721e-02, +-2.839103516797436208e-02, +-2.835582154150936146e-02, +-2.832056573779171901e-02, +-2.828526781852868169e-02, +-2.824992784548870789e-02, +-2.821454588050105114e-02, +-2.817912198545605498e-02, +-2.814365622230528136e-02, +-2.810814865306069874e-02, +-2.807259933979485908e-02, +-2.803700834464141825e-02, +-2.800137572979368925e-02, +-2.796570155750594672e-02, +-2.792998589009238614e-02, +-2.789422878992753319e-02, +-2.785843031944580661e-02, +-2.782259054114128924e-02, +-2.778670951756863003e-02, +-2.775078731134146895e-02, +-2.771482398513298515e-02, +-2.767881960167650410e-02, +-2.764277422376412718e-02, +-2.760668791424744292e-02, +-2.757056073603720431e-02, +-2.753439275210326984e-02, +-2.749818402547432941e-02, +-2.746193461923792864e-02, +-2.742564459654049658e-02, +-2.738931402058687389e-02, +-2.735294295464051062e-02, +-2.731653146202324065e-02, +-2.728007960611526089e-02, +-2.724358745035497173e-02, +-2.720705505823863002e-02, +-2.717048249332084178e-02, +-2.713386981921373300e-02, +-2.709721709958738331e-02, +-2.706052439816943739e-02, +-2.702379177874518826e-02, +-2.698701930515710196e-02, +-2.695020704130510897e-02, +-2.691335505114672566e-02, +-2.687646339869580875e-02, +-2.683953214802391185e-02, +-2.680256136325910934e-02, +-2.676555110858633985e-02, +-2.672850144824718763e-02, +-2.669141244653959466e-02, +-2.665428416781858573e-02, +-2.661711667649479043e-02, +-2.657991003703545629e-02, +-2.654266431396386586e-02, +-2.650537957185926038e-02, +-2.646805587535688148e-02, +-2.643069328914782190e-02, +-2.639329187797844270e-02, +-2.635585170665125793e-02, +-2.631837284002362665e-02, +-2.628085534300890827e-02, +-2.624329928057518233e-02, +-2.620570471774580357e-02, +-2.616807171959938116e-02, +-2.613040035126903970e-02, +-2.609269067794298819e-02, +-2.605494276486380184e-02, +-2.601715667732915072e-02, +-2.597933248069075191e-02, +-2.594147024035458465e-02, +-2.590357002178127199e-02, +-2.586563189048526543e-02, +-2.582765591203520228e-02, +-2.578964215205343732e-02, +-2.575159067621645911e-02, +-2.571350155025389425e-02, +-2.567537483994926720e-02, +-2.563721061113983027e-02, +-2.559900892971574485e-02, +-2.556076986162051159e-02, +-2.552249347285088371e-02, +-2.548417982945661367e-02, +-2.544582899754021035e-02, +-2.540744104325693906e-02, +-2.536901603281509557e-02, +-2.533055403247528106e-02, +-2.529205510855037781e-02, +-2.525351932740601754e-02, +-2.521494675545973493e-02, +-2.517633745918128677e-02, +-2.513769150509232581e-02, +-2.509900895976673388e-02, +-2.506028988982991756e-02, +-2.502153436195867289e-02, +-2.498274244288193474e-02, +-2.494391419937978804e-02, +-2.490504969828327350e-02, +-2.486614900647545617e-02, +-2.482721219088989892e-02, +-2.478823931851127996e-02, +-2.474923045637499042e-02, +-2.471018567156775883e-02, +-2.467110503122627377e-02, +-2.463198860253804079e-02, +-2.459283645274120897e-02, +-2.455364864912390477e-02, +-2.451442525902447489e-02, +-2.447516634983140996e-02, +-2.443587198898339308e-02, +-2.439654224396856780e-02, +-2.435717718232514525e-02, +-2.431777687164056803e-02, +-2.427834137955224916e-02, +-2.423887077374645496e-02, +-2.419936512195949505e-02, +-2.415982449197611251e-02, +-2.412024895163049701e-02, +-2.408063856880544862e-02, +-2.404099341143312377e-02, +-2.400131354749386950e-02, +-2.396159904501680288e-02, +-2.392184997207968261e-02, +-2.388206639680845109e-02, +-2.384224838737726906e-02, +-2.380239601200838037e-02, +-2.376250933897248313e-02, +-2.372258843658767158e-02, +-2.368263337321997383e-02, +-2.364264421728341781e-02, +-2.360262103723897650e-02, +-2.356256390159537986e-02, +-2.352247287890895516e-02, +-2.348234803778295743e-02, +-2.344218944686769085e-02, +-2.340199717486050185e-02, +-2.336177129050569234e-02, +-2.332151186259429076e-02, +-2.328121895996373633e-02, +-2.324089265149831968e-02, +-2.320053300612862426e-02, +-2.316014009283148475e-02, +-2.311971398062954292e-02, +-2.307925473859233703e-02, +-2.303876243583476841e-02, +-2.299823714151734422e-02, +-2.295767892484704489e-02, +-2.291708785507563101e-02, +-2.287646400150071535e-02, +-2.283580743346544026e-02, +-2.279511822035792251e-02, +-2.275439643161133660e-02, +-2.271364213670418533e-02, +-2.267285540515969963e-02, +-2.263203630654573445e-02, +-2.259118491047489366e-02, +-2.255030128660460292e-02, +-2.250938550463629090e-02, +-2.246843763431603108e-02, +-2.242745774543367099e-02, +-2.238644590782369603e-02, +-2.234540219136406380e-02, +-2.230432666597675570e-02, +-2.226321940162771795e-02, +-2.222208046832610528e-02, +-2.218090993612447520e-02, +-2.213970787511936045e-02, +-2.209847435544999572e-02, +-2.205720944729890748e-02, +-2.201591322089179598e-02, +-2.197458574649712934e-02, +-2.193322709442606724e-02, +-2.189183733503252682e-02, +-2.185041653871310288e-02, +-2.180896477590666890e-02, +-2.176748211709423828e-02, +-2.172596863279953674e-02, +-2.168442439358776730e-02, +-2.164284947006658855e-02, +-2.160124393288495245e-02, +-2.155960785273422151e-02, +-2.151794130034681563e-02, +-2.147624434649682626e-02, +-2.143451706199976312e-02, +-2.139275951771227313e-02, +-2.135097178453204333e-02, +-2.130915393339824493e-02, +-2.126730603529033287e-02, +-2.122542816122888892e-02, +-2.118352038227502496e-02, +-2.114158276953062576e-02, +-2.109961539413765866e-02, +-2.105761832727852390e-02, +-2.101559164017587078e-02, +-2.097353540409233399e-02, +-2.093144969033050931e-02, +-2.088933457023270726e-02, +-2.084719011518135559e-02, +-2.080501639659782312e-02, +-2.076281348594359241e-02, +-2.072058145471896567e-02, +-2.067832037446374824e-02, +-2.063603031675663793e-02, +-2.059371135321583918e-02, +-2.055136355549783134e-02, +-2.050898699529820832e-02, +-2.046658174435080774e-02, +-2.042414787442855401e-02, +-2.038168545734233769e-02, +-2.033919456494121328e-02, +-2.029667526911293346e-02, +-2.025412764178283892e-02, +-2.021155175491420528e-02, +-2.016894768050826042e-02, +-2.012631549060388964e-02, +-2.008365525727737882e-02, +-2.004096705264249434e-02, +-1.999825094885060786e-02, +-1.995550701808998170e-02, +-1.991273533258571329e-02, +-1.986993596460045683e-02, +-1.982710898643331998e-02, +-1.978425447042020391e-02, +-1.974137248893335222e-02, +-1.969846311438214551e-02, +-1.965552641921163371e-02, +-1.961256247590318150e-02, +-1.956957135697486028e-02, +-1.952655313498005696e-02, +-1.948350788250828233e-02, +-1.944043567218472698e-02, +-1.939733657667038966e-02, +-1.935421066866171297e-02, +-1.931105802089017748e-02, +-1.926787870612315864e-02, +-1.922467279716261190e-02, +-1.918144036684586023e-02, +-1.913818148804502170e-02, +-1.909489623366683944e-02, +-1.905158467665299393e-02, +-1.900824688997939174e-02, +-1.896488294665671023e-02, +-1.892149291972975919e-02, +-1.887807688227740102e-02, +-1.883463490741276933e-02, +-1.879116706828278666e-02, +-1.874767343806822001e-02, +-1.870415408998343104e-02, +-1.866060909727668832e-02, +-1.861703853322941096e-02, +-1.857344247115617214e-02, +-1.852982098440529579e-02, +-1.848617414635768050e-02, +-1.844250203042753847e-02, +-1.839880471006169471e-02, +-1.835508225873969460e-02, +-1.831133474997388363e-02, +-1.826756225730871014e-02, +-1.822376485432151971e-02, +-1.817994261462140340e-02, +-1.813609561184969035e-02, +-1.809222391968002067e-02, +-1.804832761181737050e-02, +-1.800440676199887777e-02, +-1.796046144399291583e-02, +-1.791649173159979083e-02, +-1.787249769865101312e-02, +-1.782847941900906133e-02, +-1.778443696656803810e-02, +-1.774037041525281314e-02, +-1.769627983901898155e-02, +-1.765216531185311369e-02, +-1.760802690777258164e-02, +-1.756386470082483067e-02, +-1.751967876508794125e-02, +-1.747546917467048336e-02, +-1.743123600371090584e-02, +-1.738697932637757806e-02, +-1.734269921686922705e-02, +-1.729839574941395217e-02, +-1.725406899826974552e-02, +-1.720971903772393688e-02, +-1.716534594209357875e-02, +-1.712094978572466231e-02, +-1.707653064299252677e-02, +-1.703208858830179695e-02, +-1.698762369608561654e-02, +-1.694313604080611643e-02, +-1.689862569695397068e-02, +-1.685409273904879199e-02, +-1.680953724163843088e-02, +-1.676495927929852470e-02, +-1.672035892663384718e-02, +-1.667573625827654255e-02, +-1.663109134888690957e-02, +-1.658642427315325588e-02, +-1.654173510579131506e-02, +-1.649702392154446876e-02, +-1.645229079518345863e-02, +-1.640753580150670909e-02, +-1.636275901533949112e-02, +-1.631796051153408533e-02, +-1.627314036497028507e-02, +-1.622829865055416820e-02, +-1.618343544321864877e-02, +-1.613855081792321330e-02, +-1.609364484965414982e-02, +-1.604871761342368391e-02, +-1.600376918427040898e-02, +-1.595879963725893233e-02, +-1.591380904748001396e-02, +-1.586879749004992124e-02, +-1.582376504011110893e-02, +-1.577871177283138304e-02, +-1.573363776340391124e-02, +-1.568854308704724365e-02, +-1.564342781900556964e-02, +-1.559829203454759887e-02, +-1.555313580896731940e-02, +-1.550795921758368542e-02, +-1.546276233574017667e-02, +-1.541754523880487469e-02, +-1.537230800217037098e-02, +-1.532705070125385712e-02, +-1.528177341149649683e-02, +-1.523647620836359427e-02, +-1.519115916734453849e-02, +-1.514582236395248249e-02, +-1.510046587372425135e-02, +-1.505508977222072033e-02, +-1.500969413502576365e-02, +-1.496427903774686166e-02, +-1.491884455601451623e-02, +-1.487339076548271043e-02, +-1.482791774182827017e-02, +-1.478242556075063351e-02, +-1.473691429797244906e-02, +-1.469138402923864800e-02, +-1.464583483031674238e-02, +-1.460026677699658229e-02, +-1.455467994509047035e-02, +-1.450907441043267597e-02, +-1.446345024887930354e-02, +-1.441780753630890997e-02, +-1.437214634862102845e-02, +-1.432646676173726305e-02, +-1.428076885160081862e-02, +-1.423505269417605322e-02, +-1.418931836544866203e-02, +-1.414356594142533383e-02, +-1.409779549813414828e-02, +-1.405200711162375021e-02, +-1.400620085796336171e-02, +-1.396037681324334596e-02, +-1.391453505357428781e-02, +-1.386867565508710827e-02, +-1.382279869393295522e-02, +-1.377690424628340467e-02, +-1.373099238832977895e-02, +-1.368506319628321789e-02, +-1.363911674637501535e-02, +-1.359315311485581081e-02, +-1.354717237799547835e-02, +-1.350117461208384315e-02, +-1.345515989342974117e-02, +-1.340912829836092557e-02, +-1.336307990322466860e-02, +-1.331701478438665660e-02, +-1.327093301823161105e-02, +-1.322483468116252697e-02, +-1.317871984960156811e-02, +-1.313258859998866872e-02, +-1.308644100878226038e-02, +-1.304027715245880889e-02, +-1.299409710751309871e-02, +-1.294790095045750093e-02, +-1.290168875782205654e-02, +-1.285546060615491704e-02, +-1.280921657202129492e-02, +-1.276295673200392340e-02, +-1.271668116270285691e-02, +-1.267038994073526638e-02, +-1.262408314273507845e-02, +-1.257776084535369536e-02, +-1.253142312525873728e-02, +-1.248507005913467721e-02, +-1.243870172368236222e-02, +-1.239231819561934476e-02, +-1.234591955167912113e-02, +-1.229950586861140206e-02, +-1.225307722318185605e-02, +-1.220663369217233653e-02, +-1.216017535238005445e-02, +-1.211370228061799462e-02, +-1.206721455371491045e-02, +-1.202071224851458502e-02, +-1.197419544187619707e-02, +-1.192766421067404867e-02, +-1.188111863179747672e-02, +-1.183455878215052513e-02, +-1.178798473865243397e-02, +-1.174139657823665590e-02, +-1.169479437785128292e-02, +-1.164817821445865605e-02, +-1.160154816503578511e-02, +-1.155490430657334956e-02, +-1.150824671607617901e-02, +-1.146157547056319247e-02, +-1.141489064706680857e-02, +-1.136819232263315375e-02, +-1.132148057432174129e-02, +-1.127475547920579746e-02, +-1.122801711437150518e-02, +-1.118126555691825209e-02, +-1.113450088395826279e-02, +-1.108772317261728230e-02, +-1.104093250003269737e-02, +-1.099412894335565112e-02, +-1.094731257974912962e-02, +-1.090048348638858119e-02, +-1.085364174046171866e-02, +-1.080678741916869454e-02, +-1.075992059972124409e-02, +-1.071304135934302362e-02, +-1.066614977526981513e-02, +-1.061924592474858264e-02, +-1.057232988503795275e-02, +-1.052540173340782946e-02, +-1.047846154713968567e-02, +-1.043150940352574954e-02, +-1.038454537986942781e-02, +-1.033756955348478883e-02, +-1.029058200169700489e-02, +-1.024358280184160461e-02, +-1.019657203126465850e-02, +-1.014954976732253440e-02, +-1.010251608738198942e-02, +-1.005547106881965469e-02, +-1.000841478902257838e-02, +-9.961347325387309715e-03, +-9.914268755320041274e-03, +-9.867179156237099874e-03, +-9.820078605563808613e-03, +-9.772967180735014220e-03, +-9.725844959194670722e-03, +-9.678712018396233227e-03, +-9.631568435801754133e-03, +-9.584414288882134661e-03, +-9.537249655117440578e-03, +-9.490074611995850951e-03, +-9.442889237014296527e-03, +-9.395693607677897685e-03, +-9.348487801500221170e-03, +-9.301271896002733658e-03, +-9.254045968714867676e-03, +-9.206810097174233237e-03, +-9.159564358925890992e-03, +-9.112308831522379984e-03, +-9.065043592524140922e-03, +-9.017768719498615859e-03, +-8.970484290020576054e-03, +-8.923190381671768090e-03, +-8.875887072041271225e-03, +-8.828574438724685544e-03, +-8.781252559324300225e-03, +-8.733921511449393646e-03, +-8.686581372715308780e-03, +-8.639232220743904220e-03, +-8.591874133163089275e-03, +-8.544507187607445001e-03, +-8.497131461716697642e-03, +-8.449747033136799368e-03, +-8.402353979519728774e-03, +-8.354952378522614853e-03, +-8.307542307808106485e-03, +-8.260123845044540711e-03, +-8.212697067905120468e-03, +-8.165262054068225112e-03, +-8.117818881217101629e-03, +-8.070367627040244546e-03, +-8.022908369230426218e-03, +-7.975441185485050710e-03, +-7.927966153506346356e-03, +-7.880483351000520942e-03, +-7.832992855678056615e-03, +-7.785494745253486101e-03, +-7.737989097445637302e-03, +-7.690475989976922055e-03, +-7.642955500573097617e-03, +-7.595427706964255447e-03, +-7.547892686883431700e-03, +-7.500350518067010544e-03, +-7.452801278254993049e-03, +-7.405245045190002318e-03, +-7.357681896617825588e-03, +-7.310111910286946728e-03, +-7.262535163948909654e-03, +-7.214951735357437966e-03, +-7.167361702268789693e-03, +-7.119765142441877859e-03, +-7.072162133637423936e-03, +-7.024552753618430560e-03, +-6.976937080149662844e-03, +-6.929315190998100275e-03, +-6.881687163932088437e-03, +-6.834053076721669472e-03, +-6.786413007138292382e-03, +-6.738767032954780072e-03, +-6.691115231945014494e-03, +-6.643457681884339106e-03, +-6.595794460548705385e-03, +-6.548125645714939977e-03, +-6.500451315160520049e-03, +-6.452771546663853448e-03, +-6.405086418003393990e-03, +-6.357396006957964987e-03, +-6.309700391306959609e-03, +-6.261999648829440560e-03, +-6.214293857304587637e-03, +-6.166583094511235430e-03, +-6.118867438228360774e-03, +-6.071146966234088754e-03, +-6.023421756306123788e-03, +-5.975691886221519769e-03, +-5.927957433756508333e-03, +-5.880218476686276813e-03, +-5.832475092785355947e-03, +-5.784727359826700478e-03, +-5.736975355582139315e-03, +-5.689219157821858580e-03, +-5.641458844314975810e-03, +-5.593694492828486103e-03, +-5.545926181127622083e-03, +-5.498153986976033435e-03, +-5.450377988134995008e-03, +-5.402598262363708659e-03, +-5.354814887418903394e-03, +-5.307027941055348849e-03, +-5.259237501024825734e-03, +-5.211443645076471905e-03, +-5.163646450957105026e-03, +-5.115845996409885965e-03, +-5.068042359175284166e-03, +-5.020235616990874686e-03, +-4.972425847590535020e-03, +-4.924613128704853626e-03, +-4.876797538060741351e-03, +-4.828979153381833880e-03, +-4.781158052387572341e-03, +-4.733334312793490394e-03, +-4.685508012311433677e-03, +-4.637679228648718469e-03, +-4.589848039508486431e-03, +-4.542014522589343795e-03, +-4.494178755585699625e-03, +-4.446340816186934893e-03, +-4.398500782077659210e-03, +-4.350658730937909460e-03, +-4.302814740442469782e-03, +-4.254968888260504678e-03, +-4.207121252056720412e-03, +-4.159271909489872278e-03, +-4.111420938213285019e-03, +-4.063568415874521493e-03, +-4.015714420115739161e-03, +-3.967859028572764610e-03, +-3.920002318875437028e-03, +-3.872144368647754357e-03, +-3.824285255507123456e-03, +-3.776425057064598627e-03, +-3.728563850924606661e-03, +-3.680701714685294650e-03, +-3.632838725937647447e-03, +-3.584974962265721418e-03, +-3.537110501246954961e-03, +-3.489245420451253868e-03, +-3.441379797441330469e-03, +-3.393513709772518448e-03, +-3.345647234992627991e-03, +-3.297780450641820890e-03, +-3.249913434252349031e-03, +-3.202046263348936033e-03, +-3.154179015447931573e-03, +-3.106311768057503503e-03, +-3.058444598677971353e-03, +-3.010577584800838355e-03, +-2.962710803909233796e-03, +-2.914844333477522274e-03, +-2.866978250971672759e-03, +-2.819112633848400336e-03, +-2.771247559555385220e-03, +-2.723383105531575026e-03, +-2.675519349206267102e-03, +-2.627656367999480196e-03, +-2.579794239321762332e-03, +-2.531933040573995652e-03, +-2.484072849147206906e-03, +-2.436213742422920891e-03, +-2.388355797772266208e-03, +-2.340499092556374248e-03, +-2.292643704126017500e-03, +-2.244789709821973407e-03, +-2.196937186974123185e-03, +-2.149086212901884629e-03, +-2.101236864913771495e-03, +-2.053389220307863181e-03, +-2.005543356370818094e-03, +-1.957699350378207161e-03, +-1.909857279594751912e-03, +-1.862017221273433703e-03, +-1.814179252655864077e-03, +-1.766343450971938258e-03, +-1.718509893440334961e-03, +-1.670678657266961437e-03, +-1.622849819646695344e-03, +-1.575023457761757801e-03, +-1.527199648782316633e-03, +-1.479378469866036213e-03, +-1.431559998158533475e-03, +-1.383744310792430973e-03, +-1.335931484887769964e-03, +-1.288121597551634837e-03, +-1.240314725878543644e-03, +-1.192510946949541925e-03, +-1.144710337832475925e-03, +-1.096912975582264946e-03, +-1.049118937239977610e-03, +-1.001328299833254042e-03, +-9.535411403759018988e-04, +-9.057575358683189921e-04, +-8.579775632965682460e-04, +-8.102012996327822127e-04, +-7.624288218349148990e-04, +-7.146602068466170830e-04, +-6.668955315969778402e-04, +-6.191348730009406604e-04, +-5.713783079583724432e-04, +-5.236259133543560160e-04, +-4.758777660594523478e-04, +-4.281339429287880850e-04, +-3.803945208024654885e-04, +-3.326595765051670243e-04, +-2.849291868465779866e-04, +-2.372034286204537307e-04, +-1.894823786050394223e-04, +-1.417661135626760384e-04, +-9.405471024021179460e-05, +-4.634824536808491736e-05, + 1.353204339268211485e-06, + 4.904956218380133315e-05, + 9.674075148331383496e-05, + 1.444266955730355464e-04, + 1.921073178038871653e-04, + 2.397825415441961941e-04, + 2.874522901786251048e-04, + 3.351164871093523061e-04, + 3.827750557549978614e-04, + 4.304279195522124689e-04, + 4.780750019545931232e-04, + 5.257162264328141960e-04, + 5.733515164760687741e-04, + 6.209807955903417966e-04, + 6.686039873001080238e-04, + 7.162210151471425047e-04, + 7.638318026922223409e-04, + 8.114362735133987935e-04, + 8.590343512077058775e-04, + 9.066259593899533191e-04, + 9.542110216944390535e-04, + 1.001789461773222633e-03, + 1.049361203297821893e-03, + 1.096926169958158679e-03, + 1.144484285463721104e-03, + 1.192035473542508084e-03, + 1.239579657942728062e-03, + 1.287116762431075130e-03, + 1.334646710794166894e-03, + 1.382169426838656149e-03, + 1.429684834390194817e-03, + 1.477192857294958766e-03, + 1.524693419418495736e-03, + 1.572186444647395882e-03, + 1.619671856887583937e-03, + 1.667149580066010564e-03, + 1.714619538129457136e-03, + 1.762081655046251810e-03, + 1.809535854804510298e-03, + 1.856982061413887074e-03, + 1.904420198904460812e-03, + 1.951850191327938284e-03, + 1.999271962756583171e-03, + 2.046685437284897005e-03, + 2.094090539027946684e-03, + 2.141487192122713216e-03, + 2.188875320728317451e-03, + 2.236254849024880368e-03, + 2.283625701215089964e-03, + 2.330987801523069346e-03, + 2.378341074196019516e-03, + 2.425685443502483343e-03, + 2.473020833734104577e-03, + 2.520347169204386218e-03, + 2.567664374250536261e-03, + 2.614972373231076383e-03, + 2.662271090528861659e-03, + 2.709560450548724811e-03, + 2.756840377719257332e-03, + 2.804110796491633781e-03, + 2.851371631341339131e-03, + 2.898622806766406722e-03, + 2.945864247288867196e-03, + 2.993095877454859510e-03, + 3.040317621833594879e-03, + 3.087529405018886799e-03, + 3.134731151627961031e-03, + 3.181922786303195087e-03, + 3.229104233710307185e-03, + 3.276275418540155158e-03, + 3.323436265507492653e-03, + 3.370586699352742452e-03, + 3.417726644839733530e-03, + 3.464856026758623194e-03, + 3.511974769923544796e-03, + 3.559082799174412715e-03, + 3.606180039375794354e-03, + 3.653266415418532538e-03, + 3.700341852218043317e-03, + 3.747406274716035945e-03, + 3.794459607879266047e-03, + 3.841501776701195751e-03, + 3.888532706200799761e-03, + 3.935552321422773961e-03, + 3.982560547438944443e-03, + 4.029557309346557502e-03, + 4.076542532269929360e-03, + 4.123516141359294743e-03, + 4.170478061792624001e-03, + 4.217428218773252614e-03, + 4.264366537532839757e-03, + 4.311292943329046376e-03, + 4.358207361447339299e-03, + 4.405109717199791677e-03, + 4.451999935926801225e-03, + 4.498877942995307792e-03, + 4.545743663800536766e-03, + 4.592597023764834197e-03, + 4.639437948339123104e-03, + 4.686266363001968457e-03, + 4.733082193259581516e-03, + 4.779885364647304749e-03, + 4.826675802727877114e-03, + 4.873453433093171382e-03, + 4.920218181362919982e-03, + 4.966969973186554678e-03, + 5.013708734240912394e-03, + 5.060434390233143481e-03, + 5.107146866898389787e-03, + 5.153846090001515910e-03, + 5.200531985336096993e-03, + 5.247204478725896702e-03, + 5.293863496023309446e-03, + 5.340508963110964999e-03, + 5.387140805900560159e-03, + 5.433758950334519749e-03, + 5.480363322384346030e-03, + 5.526953848051978715e-03, + 5.573530453369913810e-03, + 5.620093064400200067e-03, + 5.666641607235915236e-03, + 5.713176008000061049e-03, + 5.759696192847294470e-03, + 5.806202087961588425e-03, + 5.852693619559270165e-03, + 5.899170713886570105e-03, + 5.945633297221505735e-03, + 5.992081295872677717e-03, + 6.038514636180921345e-03, + 6.084933244517596977e-03, + 6.131337047286305672e-03, + 6.177725970921699172e-03, + 6.224099941891073247e-03, + 6.270458886692842002e-03, + 6.316802731857732237e-03, + 6.363131403949034114e-03, + 6.409444829561537771e-03, + 6.455742935323045134e-03, + 6.502025647893347297e-03, + 6.548292893965295715e-03, + 6.594544600263924430e-03, + 6.640780693547868214e-03, + 6.687001100607894120e-03, + 6.733205748268475746e-03, + 6.779394563386573723e-03, + 6.825567472853336613e-03, + 6.871724403592491953e-03, + 6.917865282561851126e-03, + 6.963990036752236434e-03, + 7.010098593189129958e-03, + 7.056190878930935356e-03, + 7.102266821070746423e-03, + 7.148326346735036502e-03, + 7.194369383085248357e-03, + 7.240395857316824467e-03, + 7.286405696659283351e-03, + 7.332398828377299435e-03, + 7.378375179769455783e-03, + 7.424334678170079437e-03, + 7.470277250947465059e-03, + 7.516202825505502970e-03, + 7.562111329282643520e-03, + 7.608002689753333436e-03, + 7.653876834426536109e-03, + 7.699733690847324064e-03, + 7.745573186595614348e-03, + 7.791395249287950096e-03, + 7.837199806575725902e-03, + 7.882986786146942496e-03, + 7.928756115724858861e-03, + 7.974507723069733031e-03, + 8.020241535977645081e-03, + 8.065957482280746924e-03, + 8.111655489848133144e-03, + 8.157335486584947615e-03, + 8.202997400433786890e-03, + 8.248641159373211809e-03, + 8.294266691419345180e-03, + 8.339873924624647064e-03, + 8.385462787079661640e-03, + 8.431033206911228706e-03, + 8.476585112284201057e-03, + 8.522118431400275279e-03, + 8.567633092499679637e-03, + 8.613129023859284958e-03, + 8.658606153794531912e-03, + 8.704064410658138642e-03, + 8.749503722841797324e-03, + 8.794924018773983207e-03, + 8.840325226922712831e-03, + 8.885707275793798890e-03, + 8.931070093931139930e-03, + 8.976413609918201808e-03, + 9.021737752376163266e-03, + 9.067042449965662804e-03, + 9.112327631385629470e-03, + 9.157593225374932588e-03, + 9.202839160710601929e-03, + 9.248065366209626617e-03, + 9.293271770727714806e-03, + 9.338458303160894827e-03, + 9.383624892443945265e-03, + 9.428771467551848653e-03, + 9.473897957498880751e-03, + 9.519004291340159643e-03, + 9.564090398169473872e-03, + 9.609156207121948706e-03, + 9.654201647372542133e-03, + 9.699226648136060475e-03, + 9.744231138668735248e-03, + 9.789215048266453750e-03, + 9.834178306266419187e-03, + 9.879120842045915549e-03, + 9.924042585024174176e-03, + 9.968943464660411785e-03, + 1.001382341045559295e-02, + 1.005868235195135456e-02, + 1.010352021873148730e-02, + 1.014833694042032060e-02, + 1.019313244668444175e-02, + 1.023790666723155100e-02, + 1.028265953181158043e-02, + 1.032739097021576243e-02, + 1.037210091227819958e-02, + 1.041678928787417857e-02, + 1.046145602692159435e-02, + 1.050610105938098657e-02, + 1.055072431525462019e-02, + 1.059532572458784377e-02, + 1.063990521746810240e-02, + 1.068446272402636711e-02, + 1.072899817443562741e-02, + 1.077351149891249936e-02, + 1.081800262771592629e-02, + 1.086247149114909390e-02, + 1.090691801955735903e-02, + 1.095134214333028967e-02, + 1.099574379290030324e-02, + 1.104012289874407513e-02, + 1.108447939138124290e-02, + 1.112881320137621734e-02, + 1.117312425933636097e-02, + 1.121741249591358749e-02, + 1.126167784180420739e-02, + 1.130592022774807963e-02, + 1.135013958452999253e-02, + 1.139433584297870616e-02, + 1.143850893396827079e-02, + 1.148265878841662514e-02, + 1.152678533728707447e-02, + 1.157088851158720802e-02, + 1.161496824237046727e-02, + 1.165902446073450484e-02, + 1.170305709782289323e-02, + 1.174706608482389315e-02, + 1.179105135297177191e-02, + 1.183501283354572615e-02, + 1.187895045787126271e-02, + 1.192286415731902763e-02, + 1.196675386330570308e-02, + 1.201061950729429353e-02, + 1.205446102079319078e-02, + 1.209827833535753391e-02, + 1.214207138258806794e-02, + 1.218584009413283681e-02, + 1.222958440168542618e-02, + 1.227330423698673803e-02, + 1.231699953182359072e-02, + 1.236067021803051100e-02, + 1.240431622748812412e-02, + 1.244793749212461630e-02, + 1.249153394391473888e-02, + 1.253510551488104009e-02, + 1.257865213709269230e-02, + 1.262217374266714175e-02, + 1.266567026376858897e-02, + 1.270914163260941469e-02, + 1.275258778144906791e-02, + 1.279600864259560628e-02, + 1.283940414840471778e-02, + 1.288277423127961487e-02, + 1.292611882367271023e-02, + 1.296943785808370685e-02, + 1.301273126706122517e-02, + 1.305599898320178656e-02, + 1.309924093915144395e-02, + 1.314245706760361690e-02, + 1.318564730130173356e-02, + 1.322881157303718372e-02, + 1.327194981565092170e-02, + 1.331506196203238387e-02, + 1.335814794512105164e-02, + 1.340120769790473579e-02, + 1.344424115342136503e-02, + 1.348724824475774735e-02, + 1.353022890505089885e-02, + 1.357318306748719026e-02, + 1.361611066530254988e-02, + 1.365901163178346624e-02, + 1.370188590026575649e-02, + 1.374473340413578069e-02, + 1.378755407682966290e-02, + 1.383034785183461304e-02, + 1.387311466268707771e-02, + 1.391585444297527112e-02, + 1.395856712633702576e-02, + 1.400125264646159134e-02, + 1.404391093708834415e-02, + 1.408654193200837602e-02, + 1.412914556506306152e-02, + 1.417172177014544392e-02, + 1.421427048119913543e-02, + 1.425679163221999814e-02, + 1.429928515725443529e-02, + 1.434175099040068194e-02, + 1.438418906580904259e-02, + 1.442659931768078101e-02, + 1.446898168026954090e-02, + 1.451133608788037280e-02, + 1.455366247487122761e-02, + 1.459596077565095129e-02, + 1.463823092468187134e-02, + 1.468047285647760408e-02, + 1.472268650560498368e-02, + 1.476487180668263795e-02, + 1.480702869438265713e-02, + 1.484915710342906911e-02, + 1.489125696859926011e-02, + 1.493332822472297379e-02, + 1.497537080668384993e-02, + 1.501738464941773654e-02, + 1.505936968791408807e-02, + 1.510132585721606080e-02, + 1.514325309241953792e-02, + 1.518515132867449650e-02, + 1.522702050118375158e-02, + 1.526886054520514013e-02, + 1.531067139604873686e-02, + 1.535245298907983620e-02, + 1.539420525971699205e-02, + 1.543592814343326507e-02, + 1.547762157575547672e-02, + 1.551928549226533685e-02, + 1.556091982859851043e-02, + 1.560252452044538600e-02, + 1.564409950355063333e-02, + 1.568564471371422173e-02, + 1.572716008679024557e-02, + 1.576864555868823237e-02, + 1.581010106537212787e-02, + 1.585152654286163185e-02, + 1.589292192723132033e-02, + 1.593428715461065598e-02, + 1.597562216118543488e-02, + 1.601692688319560423e-02, + 1.605820125693811079e-02, + 1.609944521876440632e-02, + 1.614065870508250150e-02, + 1.618184165235552613e-02, + 1.622299399710351586e-02, + 1.626411567590169485e-02, + 1.630520662538207516e-02, + 1.634626678223210713e-02, + 1.638729608319661191e-02, + 1.642829446507611604e-02, + 1.646926186472806933e-02, + 1.651019821906593577e-02, + 1.655110346506086585e-02, + 1.659197753974021514e-02, + 1.663282038018813747e-02, + 1.667363192354631707e-02, + 1.671441210701291036e-02, + 1.675516086784402392e-02, + 1.679587814335231979e-02, + 1.683656387090849346e-02, + 1.687721798794001096e-02, + 1.691784043193282627e-02, + 1.695843114042977842e-02, + 1.699899005103197927e-02, + 1.703951710139792186e-02, + 1.708001222924475024e-02, + 1.712047537234692371e-02, + 1.716090646853763932e-02, + 1.720130545570779448e-02, + 1.724167227180744763e-02, + 1.728200685484387183e-02, + 1.732230914288402160e-02, + 1.736257907405298895e-02, + 1.740281658653425670e-02, + 1.744302161857099256e-02, + 1.748319410846429015e-02, + 1.752333399457485508e-02, + 1.756344121532206828e-02, + 1.760351570918508926e-02, + 1.764355741470163830e-02, + 1.768356627046936344e-02, + 1.772354221514473027e-02, + 1.776348518744474622e-02, + 1.780339512614504890e-02, + 1.784327197008163737e-02, + 1.788311565814989026e-02, + 1.792292612930579052e-02, + 1.796270332256429472e-02, + 1.800244717700149460e-02, + 1.804215763175324311e-02, + 1.808183462601533828e-02, + 1.812147809904468207e-02, + 1.816108799015797234e-02, + 1.820066423873298311e-02, + 1.824020678420750288e-02, + 1.827971556608099304e-02, + 1.831919052391287397e-02, + 1.835863159732407240e-02, + 1.839803872599591120e-02, + 1.843741184967170529e-02, + 1.847675090815507903e-02, + 1.851605584131155516e-02, + 1.855532658906761806e-02, + 1.859456309141183442e-02, + 1.863376528839327459e-02, + 1.867293312012388573e-02, + 1.871206652677638235e-02, + 1.875116544858576248e-02, + 1.879022982584914112e-02, + 1.882925959892504247e-02, + 1.886825470823469061e-02, + 1.890721509426091657e-02, + 1.894614069754943508e-02, + 1.898503145870782810e-02, + 1.902388731840651617e-02, + 1.906270821737798479e-02, + 1.910149409641798135e-02, + 1.914024489638444654e-02, + 1.917896055819848927e-02, + 1.921764102284378301e-02, + 1.925628623136727002e-02, + 1.929489612487867572e-02, + 1.933347064455144537e-02, + 1.937200973162150550e-02, + 1.941051332738868984e-02, + 1.944898137321632650e-02, + 1.948741381053073832e-02, + 1.952581058082240167e-02, + 1.956417162564479811e-02, + 1.960249688661611089e-02, + 1.964078630541757700e-02, + 1.967903982379492350e-02, + 1.971725738355733365e-02, + 1.975543892657903589e-02, + 1.979358439479754136e-02, + 1.983169373021521215e-02, + 1.986976687489855689e-02, + 1.990780377097872353e-02, + 1.994580436065107598e-02, + 1.998376858617624541e-02, + 2.002169638987907549e-02, + 2.005958771414926081e-02, + 2.009744250144189504e-02, + 2.013526069427642659e-02, + 2.017304223523779319e-02, + 2.021078706697572447e-02, + 2.024849513220578628e-02, + 2.028616637370836071e-02, + 2.032380073432943704e-02, + 2.036139815698038286e-02, + 2.039895858463855460e-02, + 2.043648196034639555e-02, + 2.047396822721268134e-02, + 2.051141732841150339e-02, + 2.054882920718342776e-02, + 2.058620380683435364e-02, + 2.062354107073718912e-02, + 2.066084094233021362e-02, + 2.069810336511832341e-02, + 2.073532828267256323e-02, + 2.077251563863080630e-02, + 2.080966537669729638e-02, + 2.084677744064241181e-02, + 2.088385177430400128e-02, + 2.092088832158599601e-02, + 2.095788702645972820e-02, + 2.099484783296284851e-02, + 2.103177068520078671e-02, + 2.106865552734537780e-02, + 2.110550230363622201e-02, + 2.114231095837954683e-02, + 2.117908143594966763e-02, + 2.121581368078749932e-02, + 2.125250763740249224e-02, + 2.128916325037075868e-02, + 2.132578046433668967e-02, + 2.136235922401190368e-02, + 2.139889947417650956e-02, + 2.143540115967820098e-02, + 2.147186422543233622e-02, + 2.150828861642327047e-02, + 2.154467427770264190e-02, + 2.158102115439085658e-02, + 2.161732919167614134e-02, + 2.165359833481594193e-02, + 2.168982852913546588e-02, + 2.172601972002896620e-02, + 2.176217185295898499e-02, + 2.179828487345711330e-02, + 2.183435872712348458e-02, + 2.187039335962746855e-02, + 2.190638871670715429e-02, + 2.194234474416981856e-02, + 2.197826138789171421e-02, + 2.201413859381858365e-02, + 2.204997630796519045e-02, + 2.208577447641579469e-02, + 2.212153304532446865e-02, + 2.215725196091401436e-02, + 2.219293116947777811e-02, + 2.222857061737789144e-02, + 2.226417025104724529e-02, + 2.229973001698755397e-02, + 2.233524986177147509e-02, + 2.237072973204085047e-02, + 2.240616957450811825e-02, + 2.244156933595555306e-02, + 2.247692896323614728e-02, + 2.251224840327265345e-02, + 2.254752760305879164e-02, + 2.258276650965810803e-02, + 2.261796507020548408e-02, + 2.265312323190583552e-02, + 2.268824094203493805e-02, + 2.272331814793972227e-02, + 2.275835479703743752e-02, + 2.279335083681680724e-02, + 2.282830621483689440e-02, + 2.286322087872893344e-02, + 2.289809477619406813e-02, + 2.293292785500581493e-02, + 2.296772006300827965e-02, + 2.300247134811754524e-02, + 2.303718165832034648e-02, + 2.307185094167623837e-02, + 2.310647914631520222e-02, + 2.314106622043970302e-02, + 2.317561211232355839e-02, + 2.321011677031285456e-02, + 2.324458014282520385e-02, + 2.327900217835065025e-02, + 2.331338282545083671e-02, + 2.334772203276007721e-02, + 2.338201974898490923e-02, + 2.341627592290353513e-02, + 2.345049050336761934e-02, + 2.348466343930013731e-02, + 2.351879467969764104e-02, + 2.355288417362852091e-02, + 2.358693187023442120e-02, + 2.362093771872926518e-02, + 2.365490166840038613e-02, + 2.368882366860752819e-02, + 2.372270366878382816e-02, + 2.375654161843500714e-02, + 2.379033746714041483e-02, + 2.382409116455242587e-02, + 2.385780266039667918e-02, + 2.389147190447191496e-02, + 2.392509884665102587e-02, + 2.395868343687974564e-02, + 2.399222562517745738e-02, + 2.402572536163785286e-02, + 2.405918259642711443e-02, + 2.409259727978659005e-02, + 2.412596936203059358e-02, + 2.415929879354775794e-02, + 2.419258552480034463e-02, + 2.422582950632545112e-02, + 2.425903068873351207e-02, + 2.429218902270974603e-02, + 2.432530445901329164e-02, + 2.435837694847813734e-02, + 2.439140644201216387e-02, + 2.442439289059824756e-02, + 2.445733624529334779e-02, + 2.449023645722995038e-02, + 2.452309347761399277e-02, + 2.455590725772737598e-02, + 2.458867774892661492e-02, + 2.462140490264243600e-02, + 2.465408867038152568e-02, + 2.468672900372512191e-02, + 2.471932585432987800e-02, + 2.475187917392726242e-02, + 2.478438891432471758e-02, + 2.481685502740434493e-02, + 2.484927746512420946e-02, + 2.488165617951729192e-02, + 2.491399112269305355e-02, + 2.494628224683572218e-02, + 2.497852950420566959e-02, + 2.501073284713878700e-02, + 2.504289222804732470e-02, + 2.507500759941878876e-02, + 2.510707891381723164e-02, + 2.513910612388248547e-02, + 2.517108918233035286e-02, + 2.520302804195330426e-02, + 2.523492265561961059e-02, + 2.526677297627424532e-02, + 2.529857895693810380e-02, + 2.533034055070914822e-02, + 2.536205771076134249e-02, + 2.539373039034558549e-02, + 2.542535854278911781e-02, + 2.545694212149641339e-02, + 2.548848107994826709e-02, + 2.551997537170263772e-02, + 2.555142495039412071e-02, + 2.558282976973487791e-02, + 2.561418978351332615e-02, + 2.564550494559588931e-02, + 2.567677520992534684e-02, + 2.570800053052233608e-02, + 2.573918086148483872e-02, + 2.577031615698785819e-02, + 2.580140637128417597e-02, + 2.583245145870364731e-02, + 2.586345137365466187e-02, + 2.589440607062216612e-02, + 2.592531550416969990e-02, + 2.595617962893797398e-02, + 2.598699839964590391e-02, + 2.601777177109038108e-02, + 2.604849969814609922e-02, + 2.607918213576556829e-02, + 2.610981903898026632e-02, + 2.614041036289874165e-02, + 2.617095606270872926e-02, + 2.620145609367555833e-02, + 2.623191041114343591e-02, + 2.626231897053509651e-02, + 2.629268172735095208e-02, + 2.632299863717100716e-02, + 2.635326965565298885e-02, + 2.638349473853426191e-02, + 2.641367384163009063e-02, + 2.644380692083498144e-02, + 2.647389393212210007e-02, + 2.650393483154400362e-02, + 2.653392957523173154e-02, + 2.656387811939573546e-02, + 2.659378042032518180e-02, + 2.662363643438928409e-02, + 2.665344611803520045e-02, + 2.668320942779082647e-02, + 2.671292632026234931e-02, + 2.674259675213588872e-02, + 2.677222068017725068e-02, + 2.680179806123123357e-02, + 2.683132885222269670e-02, + 2.686081301015602954e-02, + 2.689025049211553331e-02, + 2.691964125526495263e-02, + 2.694898525684840188e-02, + 2.697828245418929308e-02, + 2.700753280469184864e-02, + 2.703673626583954701e-02, + 2.706589279519655902e-02, + 2.709500235040684588e-02, + 2.712406488919471073e-02, + 2.715308036936470507e-02, + 2.718204874880207969e-02, + 2.721096998547203882e-02, + 2.723984403742052765e-02, + 2.726867086277367375e-02, + 2.729745041973870995e-02, + 2.732618266660333597e-02, + 2.735486756173555536e-02, + 2.738350506358479611e-02, + 2.741209513068079695e-02, + 2.744063772163434292e-02, + 2.746913279513706063e-02, + 2.749758030996203584e-02, + 2.752598022496278649e-02, + 2.755433249907435558e-02, + 2.758263709131256874e-02, + 2.761089396077509583e-02, + 2.763910306664031299e-02, + 2.766726436816815959e-02, + 2.769537782470005843e-02, + 2.772344339565886023e-02, + 2.775146104054867016e-02, + 2.777943071895560764e-02, + 2.780735239054711594e-02, + 2.783522601507234379e-02, + 2.786305155236247499e-02, + 2.789082896232993047e-02, + 2.791855820496946805e-02, + 2.794623924035757531e-02, + 2.797387202865287206e-02, + 2.800145653009582236e-02, + 2.802899270500895657e-02, + 2.805648051379686439e-02, + 2.808391991694682288e-02, + 2.811131087502751272e-02, + 2.813865334869076335e-02, + 2.816594729867022417e-02, + 2.819319268578227011e-02, + 2.822038947092535624e-02, + 2.824753761508091293e-02, + 2.827463707931254788e-02, + 2.830168782476662204e-02, + 2.832868981267241959e-02, + 2.835564300434164492e-02, + 2.838254736116894994e-02, + 2.840940284463166696e-02, + 2.843620941629035337e-02, + 2.846296703778818799e-02, + 2.848967567085149144e-02, + 2.851633527728962558e-02, + 2.854294581899498306e-02, + 2.856950725794314694e-02, + 2.859601955619319597e-02, + 2.862248267588711481e-02, + 2.864889657925037691e-02, + 2.867526122859157672e-02, + 2.870157658630320685e-02, + 2.872784261486078031e-02, + 2.875405927682361459e-02, + 2.878022653483466517e-02, + 2.880634435162003973e-02, + 2.883241268999021945e-02, + 2.885843151283874058e-02, + 2.888440078314359963e-02, + 2.891032046396587243e-02, + 2.893619051845128243e-02, + 2.896201090982891690e-02, + 2.898778160141222970e-02, + 2.901350255659831609e-02, + 2.903917373886889808e-02, + 2.906479511178934605e-02, + 2.909036663900955305e-02, + 2.911588828426318887e-02, + 2.914136001136902188e-02, + 2.916678178422926759e-02, + 2.919215356683117768e-02, + 2.921747532324600605e-02, + 2.924274701762977907e-02, + 2.926796861422318805e-02, + 2.929314007735087100e-02, + 2.931826137142289068e-02, + 2.934333246093336761e-02, + 2.936835331046158334e-02, + 2.939332388467131088e-02, + 2.941824414831132120e-02, + 2.944311406621505367e-02, + 2.946793360330121972e-02, + 2.949270272457322345e-02, + 2.951742139511967511e-02, + 2.954208958011385333e-02, + 2.956670724481480841e-02, + 2.959127435456609598e-02, + 2.961579087479690106e-02, + 2.964025677102142403e-02, + 2.966467200883939406e-02, + 2.968903655393588525e-02, + 2.971335037208091764e-02, + 2.973761342913066805e-02, + 2.976182569102607881e-02, + 2.978598712379423863e-02, + 2.981009769354744238e-02, + 2.983415736648364208e-02, + 2.985816610888655451e-02, + 2.988212388712574788e-02, + 2.990603066765621862e-02, + 2.992988641701908176e-02, + 2.995369110184107134e-02, + 2.997744468883511287e-02, + 3.000114714479965722e-02, + 3.002479843661953751e-02, + 3.004839853126524754e-02, + 3.007194739579380910e-02, + 3.009544499734794626e-02, + 3.011889130315672028e-02, + 3.014228628053566145e-02, + 3.016562989688591559e-02, + 3.018892211969561104e-02, + 3.021216291653870331e-02, + 3.023535225507580776e-02, + 3.025849010305388387e-02, + 3.028157642830652321e-02, + 3.030461119875338394e-02, + 3.032759438240119343e-02, + 3.035052594734289830e-02, + 3.037340586175847623e-02, + 3.039623409391419007e-02, + 3.041901061216318800e-02, + 3.044173538494532663e-02, + 3.046440838078750407e-02, + 3.048702956830328867e-02, + 3.050959891619297107e-02, + 3.053211639324419566e-02, + 3.055458196833120421e-02, + 3.057699561041538061e-02, + 3.059935728854532716e-02, + 3.062166697185650377e-02, + 3.064392462957146387e-02, + 3.066613023100039220e-02, + 3.068828374554012986e-02, + 3.071038514267537475e-02, + 3.073243439197727994e-02, + 3.075443146310531672e-02, + 3.077637632580557461e-02, + 3.079826894991212829e-02, + 3.082010930534591700e-02, + 3.084189736211605248e-02, + 3.086363309031846247e-02, + 3.088531646013755946e-02, + 3.090694744184436030e-02, + 3.092852600579812719e-02, + 3.095005212244603468e-02, + 3.097152576232238205e-02, + 3.099294689604966194e-02, + 3.101431549433776233e-02, + 3.103563152798528846e-02, + 3.105689496787778295e-02, + 3.107810578498908932e-02, + 3.109926395038105709e-02, + 3.112036943520362503e-02, + 3.114142221069447422e-02, + 3.116242224817955195e-02, + 3.118336951907291210e-02, + 3.120426399487696151e-02, + 3.122510564718172441e-02, + 3.124589444766606369e-02, + 3.126663036809659846e-02, + 3.128731338032868931e-02, + 3.130794345630580344e-02, + 3.132852056805969510e-02, + 3.134904468771081837e-02, + 3.136951578746765418e-02, + 3.138993383962763312e-02, + 3.141029881657630279e-02, + 3.143061069078791070e-02, + 3.145086943482523073e-02, + 3.147107502133993789e-02, + 3.149122742307184503e-02, + 3.151132661284998526e-02, + 3.153137256359170998e-02, + 3.155136524830345901e-02, + 3.157130464008010146e-02, + 3.159119071210565038e-02, + 3.161102343765295752e-02, + 3.163080279008331774e-02, + 3.165052874284772499e-02, + 3.167020126948552616e-02, + 3.168982034362527456e-02, + 3.170938593898448010e-02, + 3.172889802936978282e-02, + 3.174835658867704996e-02, + 3.176776159089107071e-02, + 3.178711301008563250e-02, + 3.180641082042431900e-02, + 3.182565499615917087e-02, + 3.184484551163221933e-02, + 3.186398234127427870e-02, + 3.188306545960582078e-02, + 3.190209484123619765e-02, + 3.192107046086472416e-02, + 3.193999229327970646e-02, + 3.195886031335929550e-02, + 3.197767449607061968e-02, + 3.199643481647075627e-02, + 3.201514124970616243e-02, + 3.203379377101259196e-02, + 3.205239235571627487e-02, + 3.207093697923195375e-02, + 3.208942761706479185e-02, + 3.210786424480929074e-02, + 3.212624683815012983e-02, + 3.214457537286104227e-02, + 3.216284982480630689e-02, + 3.218107016993911051e-02, + 3.219923638430376850e-02, + 3.221734844403296993e-02, + 3.223540632535066425e-02, + 3.225341000456987545e-02, + 3.227135945809395112e-02, + 3.228925466241588244e-02, + 3.230709559411921311e-02, + 3.232488222987724147e-02, + 3.234261454645308981e-02, + 3.236029252070069667e-02, + 3.237791612956334580e-02, + 3.239548535007491514e-02, + 3.241300015935933559e-02, + 3.243046053463112532e-02, + 3.244786645319439750e-02, + 3.246521789244394274e-02, + 3.248251482986480587e-02, + 3.249975724303232755e-02, + 3.251694510961206097e-02, + 3.253407840736048662e-02, + 3.255115711412374935e-02, + 3.256818120783887965e-02, + 3.258515066653320386e-02, + 3.260206546832469798e-02, + 3.261892559142166859e-02, + 3.263573101412298172e-02, + 3.265248171481825029e-02, + 3.266917767198748712e-02, + 3.268581886420139637e-02, + 3.270240527012115844e-02, + 3.271893686849906141e-02, + 3.273541363817755734e-02, + 3.275183555809010882e-02, + 3.276820260726079348e-02, + 3.278451476480471333e-02, + 3.280077200992731479e-02, + 3.281697432192515890e-02, + 3.283312168018572702e-02, + 3.284921406418726125e-02, + 3.286525145349851462e-02, + 3.288123382777979192e-02, + 3.289716116678190194e-02, + 3.291303345034667788e-02, + 3.292885065840729653e-02, + 3.294461277098723745e-02, + 3.296031976820162218e-02, + 3.297597163025623584e-02, + 3.299156833744838757e-02, + 3.300710987016582804e-02, + 3.302259620888799152e-02, + 3.303802733418502446e-02, + 3.305340322671875691e-02, + 3.306872386724165475e-02, + 3.308398923659768009e-02, + 3.309919931572194440e-02, + 3.311435408564078475e-02, + 3.312945352747195121e-02, + 3.314449762242432929e-02, + 3.315948635179810644e-02, + 3.317441969698499415e-02, + 3.318929763946750627e-02, + 3.320412016082043005e-02, + 3.321888724270934817e-02, + 3.323359886689109671e-02, + 3.324825501521436882e-02, + 3.326285566961928453e-02, + 3.327740081213700907e-02, + 3.329189042489065498e-02, + 3.330632449009475471e-02, + 3.332070299005501085e-02, + 3.333502590716933695e-02, + 3.334929322392641421e-02, + 3.336350492290739850e-02, + 3.337766098678424803e-02, + 3.339176139832090301e-02, + 3.340580614037318846e-02, + 3.341979519588818281e-02, + 3.343372854790467585e-02, + 3.344760617955342547e-02, + 3.346142807405670661e-02, + 3.347519421472861662e-02, + 3.348890458497504746e-02, + 3.350255916829335961e-02, + 3.351615794827320083e-02, + 3.352970090859543062e-02, + 3.354318803303320967e-02, + 3.355661930545138921e-02, + 3.356999470980666367e-02, + 3.358331423014739719e-02, + 3.359657785061431062e-02, + 3.360978555543951696e-02, + 3.362293732894744425e-02, + 3.363603315555403067e-02, + 3.364907301976779314e-02, + 3.366205690618858520e-02, + 3.367498479950851997e-02, + 3.368785668451181048e-02, + 3.370067254607439500e-02, + 3.371343236916458930e-02, + 3.372613613884239275e-02, + 3.373878384026021693e-02, + 3.375137545866225414e-02, + 3.376391097938485908e-02, + 3.377639038785651415e-02, + 3.378881366959800292e-02, + 3.380118081022179949e-02, + 3.381349179543299138e-02, + 3.382574661102848851e-02, + 3.383794524289764072e-02, + 3.385008767702161331e-02, + 3.386217389947417111e-02, + 3.387420389642080421e-02, + 3.388617765412006017e-02, + 3.389809515892167752e-02, + 3.390995639726836902e-02, + 3.392176135569489187e-02, + 3.393351002082821422e-02, + 3.394520237938766782e-02, + 3.395683841818478849e-02, + 3.396841812412367684e-02, + 3.397994148420047100e-02, + 3.399140848550374211e-02, + 3.400281911521421674e-02, + 3.401417336060554714e-02, + 3.402547120904308303e-02, + 3.403671264798491247e-02, + 3.404789766498136916e-02, + 3.405902624767531001e-02, + 3.407009838380197636e-02, + 3.408111406118899400e-02, + 3.409207326775630376e-02, + 3.410297599151645292e-02, + 3.411382222057456753e-02, + 3.412461194312767926e-02, + 3.413534514746604381e-02, + 3.414602182197165603e-02, + 3.415664195511970008e-02, + 3.416720553547715478e-02, + 3.417771255170425071e-02, + 3.418816299255297841e-02, + 3.419855684686854552e-02, + 3.420889410358816246e-02, + 3.421917475174179185e-02, + 3.422939878045196116e-02, + 3.423956617893381821e-02, + 3.424967693649486056e-02, + 3.425973104253544899e-02, + 3.426972848654823850e-02, + 3.427966925811857385e-02, + 3.428955334692447565e-02, + 3.429938074273654325e-02, + 3.430915143541800327e-02, + 3.431886541492448761e-02, + 3.432852267130456769e-02, + 3.433812319469924795e-02, + 3.434766697534230584e-02, + 3.435715400355977139e-02, + 3.436658426977103054e-02, + 3.437595776448741647e-02, + 3.438527447831345868e-02, + 3.439453440194593231e-02, + 3.440373752617465614e-02, + 3.441288384188176397e-02, + 3.442197334004250264e-02, + 3.443100601172431607e-02, + 3.443998184808769875e-02, + 3.444890084038580713e-02, + 3.445776297996443194e-02, + 3.446656825826203280e-02, + 3.447531666680973828e-02, + 3.448400819723156097e-02, + 3.449264284124417546e-02, + 3.450122059065695301e-02, + 3.450974143737194771e-02, + 3.451820537338416706e-02, + 3.452661239078086419e-02, + 3.453496248174268979e-02, + 3.454325563854253323e-02, + 3.455149185354636221e-02, + 3.455967111921240398e-02, + 3.456779342809226940e-02, + 3.457585877282993991e-02, + 3.458386714616212138e-02, + 3.459181854091859104e-02, + 3.459971295002160080e-02, + 3.460755036648607147e-02, + 3.461533078342016873e-02, + 3.462305419402443574e-02, + 3.463072059159204991e-02, + 3.463832996950955145e-02, + 3.464588232125555972e-02, + 3.465337764040198748e-02, + 3.466081592061324296e-02, + 3.466819715564668780e-02, + 3.467552133935227626e-02, + 3.468278846567288826e-02, + 3.468999852864396161e-02, + 3.469715152239404715e-02, + 3.470424744114406629e-02, + 3.471128627920828241e-02, + 3.471826803099310743e-02, + 3.472519269099813566e-02, + 3.473206025381561646e-02, + 3.473887071413035710e-02, + 3.474562406672051379e-02, + 3.475232030645648840e-02, + 3.475895942830144886e-02, + 3.476554142731183572e-02, + 3.477206629863619641e-02, + 3.477853403751647587e-02, + 3.478494463928681613e-02, + 3.479129809937471507e-02, + 3.479759441329986075e-02, + 3.480383357667495708e-02, + 3.481001558520551570e-02, + 3.481614043468978653e-02, + 3.482220812101881335e-02, + 3.482821864017603131e-02, + 3.483417198823813427e-02, + 3.484006816137424217e-02, + 3.484590715584642839e-02, + 3.485168896800909522e-02, + 3.485741359430991754e-02, + 3.486308103128895469e-02, + 3.486869127557908066e-02, + 3.487424432390585916e-02, + 3.487974017308771713e-02, + 3.488517882003563941e-02, + 3.489056026175319652e-02, + 3.489588449533707198e-02, + 3.490115151797630599e-02, + 3.490636132695262850e-02, + 3.491151391964078532e-02, + 3.491660929350792753e-02, + 3.492164744611391675e-02, + 3.492662837511133905e-02, + 3.493155207824531067e-02, + 3.493641855335401919e-02, + 3.494122779836774523e-02, + 3.494597981130997955e-02, + 3.495067459029635448e-02, + 3.495531213353546274e-02, + 3.495989243932837165e-02, + 3.496441550606901177e-02, + 3.496888133224361483e-02, + 3.497328991643124108e-02, + 3.497764125730354334e-02, + 3.498193535362455198e-02, + 3.498617220425121604e-02, + 3.499035180813277884e-02, + 3.499447416431143015e-02, + 3.499853927192147357e-02, + 3.500254713018997876e-02, + 3.500649773843671209e-02, + 3.501039109607385902e-02, + 3.501422720260599641e-02, + 3.501800605763037699e-02, + 3.502172766083686689e-02, + 3.502539201200779995e-02, + 3.502899911101776259e-02, + 3.503254895783405182e-02, + 3.503604155251651558e-02, + 3.503947689521729608e-02, + 3.504285498618103095e-02, + 3.504617582574503371e-02, + 3.504943941433870391e-02, + 3.505264575248409620e-02, + 3.505579484079577451e-02, + 3.505888667998045827e-02, + 3.506192127083730681e-02, + 3.506489861425829413e-02, + 3.506781871122713334e-02, + 3.507068156282044241e-02, + 3.507348717020688372e-02, + 3.507623553464742083e-02, + 3.507892665749578337e-02, + 3.508156054019762049e-02, + 3.508413718429097966e-02, + 3.508665659140629972e-02, + 3.508911876326625129e-02, + 3.509152370168580615e-02, + 3.509387140857216786e-02, + 3.509616188592486197e-02, + 3.509839513583556253e-02, + 3.510057116048827253e-02, + 3.510268996215899773e-02, + 3.510475154321625324e-02, + 3.510675590612072350e-02, + 3.510870305342492920e-02, + 3.511059298777387261e-02, + 3.511242571190459349e-02, + 3.511420122864618992e-02, + 3.511591954092008888e-02, + 3.511758065173970628e-02, + 3.511918456421044693e-02, + 3.512073128153014173e-02, + 3.512222080698821497e-02, + 3.512365314396637822e-02, + 3.512502829593851239e-02, + 3.512634626647025832e-02, + 3.512760705921961352e-02, + 3.512881067793605094e-02, + 3.512995712646148350e-02, + 3.513104640872969503e-02, + 3.513207852876625709e-02, + 3.513305349068859829e-02, + 3.513397129870639291e-02, + 3.513483195712092250e-02, + 3.513563547032558243e-02, + 3.513638184280543086e-02, + 3.513707107913754263e-02, + 3.513770318399063453e-02, + 3.513827816212532207e-02, + 3.513879601839421662e-02, + 3.513925675774120377e-02, + 3.513966038520258822e-02, + 3.514000690590593501e-02, + 3.514029632507085360e-02, + 3.514052864800822767e-02, + 3.514070388012119350e-02, + 3.514082202690416157e-02, + 3.514088309394326065e-02, + 3.514088708691646273e-02, + 3.514083401159320136e-02, + 3.514072387383463530e-02, + 3.514055667959314899e-02, + 3.514033243491310188e-02, + 3.514005114593024559e-02, + 3.513971281887186271e-02, + 3.513931746005676676e-02, + 3.513886507589521202e-02, + 3.513835567288899758e-02, + 3.513778925763115513e-02, + 3.513716583680660116e-02, + 3.513648541719113783e-02, + 3.513574800565228556e-02, + 3.513495360914890842e-02, + 3.513410223473110300e-02, + 3.513319388954028177e-02, + 3.513222858080945060e-02, + 3.513120631586234832e-02, + 3.513012710211464718e-02, + 3.512899094707273157e-02, + 3.512779785833451685e-02, + 3.512654784358903298e-02, + 3.512524091061623721e-02, + 3.512387706728786751e-02, + 3.512245632156614505e-02, + 3.512097868150482194e-02, + 3.511944415524850815e-02, + 3.511785275103308096e-02, + 3.511620447718523386e-02, + 3.511449934212296925e-02, + 3.511273735435488375e-02, + 3.511091852248118123e-02, + 3.510904285519242385e-02, + 3.510711036127035778e-02, + 3.510512104958759400e-02, + 3.510307492910780952e-02, + 3.510097200888528252e-02, + 3.509881229806532943e-02, + 3.509659580588381927e-02, + 3.509432254166794385e-02, + 3.509199251483480220e-02, + 3.508960573489318391e-02, + 3.508716221144210501e-02, + 3.508466195417125899e-02, + 3.508210497286107232e-02, + 3.507949127738256567e-02, + 3.507682087769765922e-02, + 3.507409378385854121e-02, + 3.507131000600808429e-02, + 3.506846955437976227e-02, + 3.506557243929749046e-02, + 3.506261867117570902e-02, + 3.505960826051934820e-02, + 3.505654121792375205e-02, + 3.505341755407456045e-02, + 3.505023727974819481e-02, + 3.504700040581104625e-02, + 3.504370694321984336e-02, + 3.504035690302188116e-02, + 3.503695029635465336e-02, + 3.503348713444578988e-02, + 3.502996742861329976e-02, + 3.502639119026506459e-02, + 3.502275843089987239e-02, + 3.501906916210571069e-02, + 3.501532339556139017e-02, + 3.501152114303573981e-02, + 3.500766241638711418e-02, + 3.500374722756460777e-02, + 3.499977558860684068e-02, + 3.499574751164252068e-02, + 3.499166300889048481e-02, + 3.498752209265924840e-02, + 3.498332477534744911e-02, + 3.497907106944336819e-02, + 3.497476098752544393e-02, + 3.497039454226137656e-02, + 3.496597174640906497e-02, + 3.496149261281629450e-02, + 3.495695715442000834e-02, + 3.495236538424732753e-02, + 3.494771731541482240e-02, + 3.494301296112869298e-02, + 3.493825233468501879e-02, + 3.493343544946869023e-02, + 3.492856231895519192e-02, + 3.492363295670852102e-02, + 3.491864737638290805e-02, + 3.491360559172153322e-02, + 3.490850761655721335e-02, + 3.490335346481206191e-02, + 3.489814315049762083e-02, + 3.489287668771477724e-02, + 3.488755409065356222e-02, + 3.488217537359319942e-02, + 3.487674055090251440e-02, + 3.487124963703903263e-02, + 3.486570264654982598e-02, + 3.486009959407105480e-02, + 3.485444049432761399e-02, + 3.484872536213401428e-02, + 3.484295421239318180e-02, + 3.483712706009764459e-02, + 3.483124392032833222e-02, + 3.482530480825543617e-02, + 3.481930973913813232e-02, + 3.481325872832423396e-02, + 3.480715179125030978e-02, + 3.480098894344193367e-02, + 3.479477020051351815e-02, + 3.478849557816802995e-02, + 3.478216509219696911e-02, + 3.477577875848085476e-02, + 3.476933659298853119e-02, + 3.476283861177763279e-02, + 3.475628483099432731e-02, + 3.474967526687309377e-02, + 3.474300993573723600e-02, + 3.473628885399813321e-02, + 3.472951203815593385e-02, + 3.472267950479895199e-02, + 3.471579127060375053e-02, + 3.470884735233544655e-02, + 3.470184776684751005e-02, + 3.469479253108116029e-02, + 3.468768166206638581e-02, + 3.468051517692084806e-02, + 3.467329309285065164e-02, + 3.466601542714980999e-02, + 3.465868219720067561e-02, + 3.465129342047326699e-02, + 3.464384911452578208e-02, + 3.463634929700439014e-02, + 3.462879398564297495e-02, + 3.462118319826348878e-02, + 3.461351695277552903e-02, + 3.460579526717668525e-02, + 3.459801815955226151e-02, + 3.459018564807506135e-02, + 3.458229775100591513e-02, + 3.457435448669306244e-02, + 3.456635587357221456e-02, + 3.455830193016714430e-02, + 3.455019267508865205e-02, + 3.454202812703516257e-02, + 3.453380830479276659e-02, + 3.452553322723474899e-02, + 3.451720291332163737e-02, + 3.450881738210168082e-02, + 3.450037665271023929e-02, + 3.449188074436965873e-02, + 3.448332967638993024e-02, + 3.447472346816792682e-02, + 3.446606213918770867e-02, + 3.445734570902063421e-02, + 3.444857419732479803e-02, + 3.443974762384537092e-02, + 3.443086600841492595e-02, + 3.442192937095230748e-02, + 3.441293773146371360e-02, + 3.440389111004189815e-02, + 3.439478952686675362e-02, + 3.438563300220467966e-02, + 3.437642155640884684e-02, + 3.436715520991918266e-02, + 3.435783398326218430e-02, + 3.434845789705099489e-02, + 3.433902697198528559e-02, + 3.432954122885140125e-02, + 3.432000068852178454e-02, + 3.431040537195577389e-02, + 3.430075530019859736e-02, + 3.429105049438239267e-02, + 3.428129097572525652e-02, + 3.427147676553161243e-02, + 3.426160788519208578e-02, + 3.425168435618335810e-02, + 3.424170620006856958e-02, + 3.423167343849684713e-02, + 3.422158609320292977e-02, + 3.421144418600811227e-02, + 3.420124773881954433e-02, + 3.419099677363013345e-02, + 3.418069131251860043e-02, + 3.417033137764972917e-02, + 3.415991699127399195e-02, + 3.414944817572756336e-02, + 3.413892495343220923e-02, + 3.412834734689562666e-02, + 3.411771537871080562e-02, + 3.410702907155650082e-02, + 3.409628844819698884e-02, + 3.408549353148201261e-02, + 3.407464434434647610e-02, + 3.406374090981095781e-02, + 3.405278325098137771e-02, + 3.404177139104868494e-02, + 3.403070535328926033e-02, + 3.401958516106477759e-02, + 3.400841083782182861e-02, + 3.399718240709218714e-02, + 3.398589989249280185e-02, + 3.397456331772543553e-02, + 3.396317270657700504e-02, + 3.395172808291926914e-02, + 3.394022947070861329e-02, + 3.392867689398684078e-02, + 3.391707037687990978e-02, + 3.390540994359879379e-02, + 3.389369561843915551e-02, + 3.388192742578133992e-02, + 3.387010539009001342e-02, + 3.385822953591465651e-02, + 3.384629988788911970e-02, + 3.383431647073182474e-02, + 3.382227930924531362e-02, + 3.381018842831669952e-02, + 3.379804385291736157e-02, + 3.378584560810286852e-02, + 3.377359371901305501e-02, + 3.376128821087182735e-02, + 3.374892910898725368e-02, + 3.373651643875131417e-02, + 3.372405022564034516e-02, + 3.371153049521422029e-02, + 3.369895727311712774e-02, + 3.368633058507650851e-02, + 3.367365045690432629e-02, + 3.366091691449577677e-02, + 3.364812998383003712e-02, + 3.363528969096968302e-02, + 3.362239606206122999e-02, + 3.360944912333457130e-02, + 3.359644890110297100e-02, + 3.358339542176327908e-02, + 3.357028871179595919e-02, + 3.355712879776429763e-02, + 3.354391570631543723e-02, + 3.353064946417957243e-02, + 3.351733009816976888e-02, + 3.350395763518283082e-02, + 3.349053210219793408e-02, + 3.347705352627816655e-02, + 3.346352193456888363e-02, + 3.344993735429864501e-02, + 3.343629981277905505e-02, + 3.342260933740425627e-02, + 3.340886595565129014e-02, + 3.339506969508006240e-02, + 3.338122058333285042e-02, + 3.336731864813493459e-02, + 3.335336391729376571e-02, + 3.333935641869983230e-02, + 3.332529618032548796e-02, + 3.331118323022594363e-02, + 3.329701759653846266e-02, + 3.328279930748298532e-02, + 3.326852839136123369e-02, + 3.325420487655748186e-02, + 3.323982879153807718e-02, + 3.322540016485122510e-02, + 3.321091902512773170e-02, + 3.319638540107957420e-02, + 3.318179932150153860e-02, + 3.316716081526936699e-02, + 3.315246991134140897e-02, + 3.313772663875728247e-02, + 3.312293102663870642e-02, + 3.310808310418846684e-02, + 3.309318290069161728e-02, + 3.307823044551443104e-02, + 3.306322576810446362e-02, + 3.304816889799112173e-02, + 3.303305986478497630e-02, + 3.301789869817781109e-02, + 3.300268542794278226e-02, + 3.298742008393443226e-02, + 3.297210269608816940e-02, + 3.295673329442067728e-02, + 3.294131190902939432e-02, + 3.292583857009329790e-02, + 3.291031330787170389e-02, + 3.289473615270505080e-02, + 3.287910713501471932e-02, + 3.286342628530274090e-02, + 3.284769363415148552e-02, + 3.283190921222477188e-02, + 3.281607305026607718e-02, + 3.280018517910008452e-02, + 3.278424562963164896e-02, + 3.276825443284632489e-02, + 3.275221161980927664e-02, + 3.273611722166695076e-02, + 3.271997126964531349e-02, + 3.270377379505073900e-02, + 3.268752482926977343e-02, + 3.267122440376910020e-02, + 3.265487255009518613e-02, + 3.263846929987448964e-02, + 3.262201468481341210e-02, + 3.260550873669820077e-02, + 3.258895148739497649e-02, + 3.257234296884910923e-02, + 3.255568321308618951e-02, + 3.253897225221116796e-02, + 3.252221011840827208e-02, + 3.250539684394169321e-02, + 3.248853246115456644e-02, + 3.247161700246959520e-02, + 3.245465050038889160e-02, + 3.243763298749357399e-02, + 3.242056449644383637e-02, + 3.240344505997933694e-02, + 3.238627471091857363e-02, + 3.236905348215909917e-02, + 3.235178140667727825e-02, + 3.233445851752832223e-02, + 3.231708484784658053e-02, + 3.229966043084469413e-02, + 3.228218529981406043e-02, + 3.226465948812524270e-02, + 3.224708302922645736e-02, + 3.222945595664529483e-02, + 3.221177830398715830e-02, + 3.219405010493622127e-02, + 3.217627139325469204e-02, + 3.215844220278308435e-02, + 3.214056256744015488e-02, + 3.212263252122289636e-02, + 3.210465209820614896e-02, + 3.208662133254282234e-02, + 3.206854025846400669e-02, + 3.205040891027800126e-02, + 3.203222732237174381e-02, + 3.201399552920939501e-02, + 3.199571356533292138e-02, + 3.197738146536193565e-02, + 3.195899926399366209e-02, + 3.194056699600261728e-02, + 3.192208469624103345e-02, + 3.190355239963813677e-02, + 3.188497014120093842e-02, + 3.186633795601325619e-02, + 3.184765587923633207e-02, + 3.182892394610829095e-02, + 3.181014219194466808e-02, + 3.179131065213761792e-02, + 3.177242936215622648e-02, + 3.175349835754683742e-02, + 3.173451767393194872e-02, + 3.171548734701142014e-02, + 3.169640741256125188e-02, + 3.167727790643439650e-02, + 3.165809886456005112e-02, + 3.163887032294434437e-02, + 3.161959231766905271e-02, + 3.160026488489285634e-02, + 3.158088806085056904e-02, + 3.156146188185322138e-02, + 3.154198638428777623e-02, + 3.152246160461737862e-02, + 3.150288757938129319e-02, + 3.148326434519479328e-02, + 3.146359193874839755e-02, + 3.144387039680926477e-02, + 3.142409975621968110e-02, + 3.140428005389794830e-02, + 3.138441132683768287e-02, + 3.136449361210823933e-02, + 3.134452694685432167e-02, + 3.132451136829615679e-02, + 3.130444691372917532e-02, + 3.128433362052410877e-02, + 3.126417152612696176e-02, + 3.124396066805865471e-02, + 3.122370108391538807e-02, + 3.120339281136826071e-02, + 3.118303588816324218e-02, + 3.116263035212132534e-02, + 3.114217624113812394e-02, + 3.112167359318402174e-02, + 3.110112244630388115e-02, + 3.108052283861766074e-02, + 3.105987480831929118e-02, + 3.103917839367719908e-02, + 3.101843363303441459e-02, + 3.099764056480828686e-02, + 3.097679922749020306e-02, + 3.095590965964582775e-02, + 3.093497189991489468e-02, + 3.091398598701104380e-02, + 3.089295195972217509e-02, + 3.087186985690985527e-02, + 3.085073971750925889e-02, + 3.082956158052996276e-02, + 3.080833548505436392e-02, + 3.078706147023940742e-02, + 3.076573957531454975e-02, + 3.074436983958368091e-02, + 3.072295230242336542e-02, + 3.070148700328390393e-02, + 3.067997398168858386e-02, + 3.065841327723409226e-02, + 3.063680492959017579e-02, + 3.061514897849955050e-02, + 3.059344546377792615e-02, + 3.057169442531399231e-02, + 3.054989590306905062e-02, + 3.052804993707740333e-02, + 3.050615656744604109e-02, + 3.048421583435415722e-02, + 3.046222777805408441e-02, + 3.044019243887002846e-02, + 3.041810985719924781e-02, + 3.039598007351062767e-02, + 3.037380312834590118e-02, + 3.035157906231829295e-02, + 3.032930791611413227e-02, + 3.030698973049073333e-02, + 3.028462454627792871e-02, + 3.026221240437756976e-02, + 3.023975334576277027e-02, + 3.021724741147902016e-02, + 3.019469464264289138e-02, + 3.017209508044301283e-02, + 3.014944876613925157e-02, + 3.012675574106308748e-02, + 3.010401604661726987e-02, + 3.008122972427582781e-02, + 3.005839681558419504e-02, + 3.003551736215880064e-02, + 3.001259140568702383e-02, + 2.998961898792753059e-02, + 2.996660015070972197e-02, + 2.994353493593416432e-02, + 2.992042338557167683e-02, + 2.989726554166407049e-02, + 2.987406144632397814e-02, + 2.985081114173418135e-02, + 2.982751467014854024e-02, + 2.980417207389037676e-02, + 2.978078339535433772e-02, + 2.975734867700469827e-02, + 2.973386796137626048e-02, + 2.971034129107362129e-02, + 2.968676870877164434e-02, + 2.966315025721504017e-02, + 2.963948597921852932e-02, + 2.961577591766626633e-02, + 2.959202011551268635e-02, + 2.956821861578136715e-02, + 2.954437146156580971e-02, + 2.952047869602882069e-02, + 2.949654036240281774e-02, + 2.947255650398924315e-02, + 2.944852716415903918e-02, + 2.942445238635235313e-02, + 2.940033221407829453e-02, + 2.937616669091522303e-02, + 2.935195586051016908e-02, + 2.932769976657957287e-02, + 2.930339845290781675e-02, + 2.927905196334883164e-02, + 2.925466034182486186e-02, + 2.923022363232685022e-02, + 2.920574187891376156e-02, + 2.918121512571375531e-02, + 2.915664341692269373e-02, + 2.913202679680498841e-02, + 2.910736530969322208e-02, + 2.908265899998807233e-02, + 2.905790791215809646e-02, + 2.903311209073994661e-02, + 2.900827158033830733e-02, + 2.898338642562519815e-02, + 2.895845667134072307e-02, + 2.893348236229260212e-02, + 2.890846354335601526e-02, + 2.888340025947349482e-02, + 2.885829255565520307e-02, + 2.883314047697857138e-02, + 2.880794406858815798e-02, + 2.878270337569576939e-02, + 2.875741844358039104e-02, + 2.873208931758754539e-02, + 2.870671604313047853e-02, + 2.868129866568846706e-02, + 2.865583723080814341e-02, + 2.863033178410237869e-02, + 2.860478237125108764e-02, + 2.857918903800026056e-02, + 2.855355183016254281e-02, + 2.852787079361712372e-02, + 2.850214597430915375e-02, + 2.847637741825017471e-02, + 2.845056517151764788e-02, + 2.842470928025536692e-02, + 2.839880979067286107e-02, + 2.837286674904574910e-02, + 2.834688020171499331e-02, + 2.832085019508792656e-02, + 2.829477677563679849e-02, + 2.826865998990013562e-02, + 2.824249988448133616e-02, + 2.821629650604965192e-02, + 2.819004990133922722e-02, + 2.816376011714964711e-02, + 2.813742720034581937e-02, + 2.811105119785708290e-02, + 2.808463215667862667e-02, + 2.805817012386984527e-02, + 2.803166514655540398e-02, + 2.800511727192421876e-02, + 2.797852654723025426e-02, + 2.795189301979198945e-02, + 2.792521673699231710e-02, + 2.789849774627838758e-02, + 2.787173609516206338e-02, + 2.784493183121901361e-02, + 2.781808500208933152e-02, + 2.779119565547690310e-02, + 2.776426383915022236e-02, + 2.773728960094088564e-02, + 2.771027298874480238e-02, + 2.768321405052146661e-02, + 2.765611283429418588e-02, + 2.762896938814960943e-02, + 2.760178376023805086e-02, + 2.757455599877312383e-02, + 2.754728615203165878e-02, + 2.751997426835413665e-02, + 2.749262039614359943e-02, + 2.746522458386692345e-02, + 2.743778688005283836e-02, + 2.741030733329429675e-02, + 2.738278599224592061e-02, + 2.735522290562588180e-02, + 2.732761812221443792e-02, + 2.729997169085493156e-02, + 2.727228366045249611e-02, + 2.724455407997537423e-02, + 2.721678299845351964e-02, + 2.718897046497959630e-02, + 2.716111652870803472e-02, + 2.713322123885527834e-02, + 2.710528464470041143e-02, + 2.707730679558328912e-02, + 2.704928774090659474e-02, + 2.702122753013393164e-02, + 2.699312621279131158e-02, + 2.696498383846536451e-02, + 2.693680045680509408e-02, + 2.690857611752015335e-02, + 2.688031087038179195e-02, + 2.685200476522241197e-02, + 2.682365785193556451e-02, + 2.679527018047564088e-02, + 2.676684180085812936e-02, + 2.673837276315935152e-02, + 2.670986311751649689e-02, + 2.668131291412687012e-02, + 2.665272220324911567e-02, + 2.662409103520211456e-02, + 2.659541946036458188e-02, + 2.656670752917661762e-02, + 2.653795529213751059e-02, + 2.650916279980767773e-02, + 2.648033010280649927e-02, + 2.645145725181452870e-02, + 2.642254429757117870e-02, + 2.639359129087634828e-02, + 2.636459828258912175e-02, + 2.633556532362883382e-02, + 2.630649246497362287e-02, + 2.627737975766162096e-02, + 2.624822725279007951e-02, + 2.621903500151573016e-02, + 2.618980305505410819e-02, + 2.616053146468031929e-02, + 2.613122028172812708e-02, + 2.610186955759008498e-02, + 2.607247934371813985e-02, + 2.604304969162247671e-02, + 2.601358065287219523e-02, + 2.598407227909468528e-02, + 2.595452462197631038e-02, + 2.592493773326110668e-02, + 2.589531166475202151e-02, + 2.586564646830991077e-02, + 2.583594219585407317e-02, + 2.580619889936097699e-02, + 2.577641663086620641e-02, + 2.574659544246232432e-02, + 2.571673538630016992e-02, + 2.568683651458771727e-02, + 2.565689887959113347e-02, + 2.562692253363361983e-02, + 2.559690752909584907e-02, + 2.556685391841596877e-02, + 2.553676175408934462e-02, + 2.550663108866829676e-02, + 2.547646197476209282e-02, + 2.544625446503758978e-02, + 2.541600861221757907e-02, + 2.538572446908237551e-02, + 2.535540208846848165e-02, + 2.532504152326945160e-02, + 2.529464282643463166e-02, + 2.526420605097063482e-02, + 2.523373124993963032e-02, + 2.520321847646075572e-02, + 2.517266778370833014e-02, + 2.514207922491354733e-02, + 2.511145285336319893e-02, + 2.508078872240019144e-02, + 2.505008688542261983e-02, + 2.501934739588464532e-02, + 2.498857030729630807e-02, + 2.495775567322250019e-02, + 2.492690354728415922e-02, + 2.489601398315676589e-02, + 2.486508703457190189e-02, + 2.483412275531539717e-02, + 2.480312119922895714e-02, + 2.477208242020846260e-02, + 2.474100647220517021e-02, + 2.470989340922481736e-02, + 2.467874328532807318e-02, + 2.464755615462975100e-02, + 2.461633207129954037e-02, + 2.458507108956121262e-02, + 2.455377326369330079e-02, + 2.452243864802790621e-02, + 2.449106729695158663e-02, + 2.445965926490493297e-02, + 2.442821460638236464e-02, + 2.439673337593243826e-02, + 2.436521562815663344e-02, + 2.433366141771104579e-02, + 2.430207079930462102e-02, + 2.427044382770027209e-02, + 2.423878055771366141e-02, + 2.420708104421443602e-02, + 2.417534534212477382e-02, + 2.414357350642040365e-02, + 2.411176559212965809e-02, + 2.407992165433403900e-02, + 2.404804174816774567e-02, + 2.401612592881789687e-02, + 2.398417425152355245e-02, + 2.395218677157730583e-02, + 2.392016354432316416e-02, + 2.388810462515807490e-02, + 2.385601006953116596e-02, + 2.382387993294339881e-02, + 2.379171427094809929e-02, + 2.375951313915029839e-02, + 2.372727659320728044e-02, + 2.369500468882735494e-02, + 2.366269748177132065e-02, + 2.363035502785106393e-02, + 2.359797738293007568e-02, + 2.356556460292310098e-02, + 2.353311674379639229e-02, + 2.350063386156716130e-02, + 2.346811601230392591e-02, + 2.343556325212609037e-02, + 2.340297563720400778e-02, + 2.337035322375867127e-02, + 2.333769606806196037e-02, + 2.330500422643648484e-02, + 2.327227775525496020e-02, + 2.323951671094097102e-02, + 2.320672114996813820e-02, + 2.317389112886063252e-02, + 2.314102670419216842e-02, + 2.310812793258726350e-02, + 2.307519487071980555e-02, + 2.304222757531382976e-02, + 2.300922610314284217e-02, + 2.297619051103035395e-02, + 2.294312085584917019e-02, + 2.291001719452168822e-02, + 2.287687958401959584e-02, + 2.284370808136409331e-02, + 2.281050274362507457e-02, + 2.277726362792189055e-02, + 2.274399079142293278e-02, + 2.271068429134487018e-02, + 2.267734418495410270e-02, + 2.264397052956473172e-02, + 2.261056338254041967e-02, + 2.257712280129239857e-02, + 2.254364884328110066e-02, + 2.251014156601451044e-02, + 2.247660102704950730e-02, + 2.244302728399052982e-02, + 2.240942039449044312e-02, + 2.237578041624965416e-02, + 2.234210740701666337e-02, + 2.230840142458756156e-02, + 2.227466252680618611e-02, + 2.224089077156347904e-02, + 2.220708621679840303e-02, + 2.217324892049693172e-02, + 2.213937894069190407e-02, + 2.210547633546404434e-02, + 2.207154116294049798e-02, + 2.203757348129583779e-02, + 2.200357334875075940e-02, + 2.196954082357346211e-02, + 2.193547596407816394e-02, + 2.190137882862625701e-02, + 2.186724947562473584e-02, + 2.183308796352785922e-02, + 2.179889435083523508e-02, + 2.176466869609337829e-02, + 2.173041105789433325e-02, + 2.169612149487646843e-02, + 2.166180006572341124e-02, + 2.162744682916527619e-02, + 2.159306184397720429e-02, + 2.155864516898048019e-02, + 2.152419686304114788e-02, + 2.148971698507102027e-02, + 2.145520559402722821e-02, + 2.142066274891167230e-02, + 2.138608850877176185e-02, + 2.135148293269942613e-02, + 2.131684607983201987e-02, + 2.128217800935073428e-02, + 2.124747878048253297e-02, + 2.121274845249786906e-02, + 2.117798708471241298e-02, + 2.114319473648575143e-02, + 2.110837146722220614e-02, + 2.107351733636939409e-02, + 2.103863240341996219e-02, + 2.100371672790970340e-02, + 2.096877036941904512e-02, + 2.093379338757132488e-02, + 2.089878584203407400e-02, + 2.086374779251836883e-02, + 2.082867929877831037e-02, + 2.079358042061200604e-02, + 2.075845121786009176e-02, + 2.072329175040701216e-02, + 2.068810207817960503e-02, + 2.065288226114851688e-02, + 2.061763235932616289e-02, + 2.058235243276862469e-02, + 2.054704254157400933e-02, + 2.051170274588358378e-02, + 2.047633310588034550e-02, + 2.044093368179010495e-02, + 2.040550453388076738e-02, + 2.037004572246249937e-02, + 2.033455730788729515e-02, + 2.029903935054904948e-02, + 2.026349191088399476e-02, + 2.022791504936926471e-02, + 2.019230882652445214e-02, + 2.015667330291002340e-02, + 2.012100853912855702e-02, + 2.008531459582289444e-02, + 2.004959153367864844e-02, + 2.001383941342083431e-02, + 1.997805829581688480e-02, + 1.994224824167418336e-02, + 1.990640931184177106e-02, + 1.987054156720849743e-02, + 1.983464506870466146e-02, + 1.979871987730041222e-02, + 1.976276605400690417e-02, + 1.972678365987488858e-02, + 1.969077275599601454e-02, + 1.965473340350179163e-02, + 1.961866566356324990e-02, + 1.958256959739222008e-02, + 1.954644526623936646e-02, + 1.951029273139609499e-02, + 1.947411205419209007e-02, + 1.943790329599795128e-02, + 1.940166651822243515e-02, + 1.936540178231439119e-02, + 1.932910914976137054e-02, + 1.929278868209048994e-02, + 1.925644044086708556e-02, + 1.922006448769619097e-02, + 1.918366088422081978e-02, + 1.914722969212353382e-02, + 1.911077097312441353e-02, + 1.907428478898298349e-02, + 1.903777120149653668e-02, + 1.900123027250054386e-02, + 1.896466206386908729e-02, + 1.892806663751378862e-02, + 1.889144405538479773e-02, + 1.885479437946928349e-02, + 1.881811767179310951e-02, + 1.878141399441884962e-02, + 1.874468340944732136e-02, + 1.870792597901619128e-02, + 1.867114176530106084e-02, + 1.863433083051400929e-02, + 1.859749323690476630e-02, + 1.856062904675989667e-02, + 1.852373832240305704e-02, + 1.848682112619409040e-02, + 1.844987752053034447e-02, + 1.841290756784508958e-02, + 1.837591133060870879e-02, + 1.833888887132726145e-02, + 1.830184025254341998e-02, + 1.826476553683629989e-02, + 1.822766478682056462e-02, + 1.819053806514739358e-02, + 1.815338543450318101e-02, + 1.811620695761059774e-02, + 1.807900269722774803e-02, + 1.804177271614839512e-02, + 1.800451707720147204e-02, + 1.796723584325156386e-02, + 1.792992907719827278e-02, + 1.789259684197664832e-02, + 1.785523920055609795e-02, + 1.781785621594161526e-02, + 1.778044795117272522e-02, + 1.774301446932373405e-02, + 1.770555583350338219e-02, + 1.766807210685495191e-02, + 1.763056335255637833e-02, + 1.759302963381947221e-02, + 1.755547101389068332e-02, + 1.751788755605000400e-02, + 1.748027932361190251e-02, + 1.744264637992423012e-02, + 1.740498878836920990e-02, + 1.736730661236193449e-02, + 1.732959991535178504e-02, + 1.729186876082099145e-02, + 1.725411321228575295e-02, + 1.721633333329470467e-02, + 1.717852918743030879e-02, + 1.714070083830766811e-02, + 1.710284834957510880e-02, + 1.706497178491300781e-02, + 1.702707120803571145e-02, + 1.698914668268899572e-02, + 1.695119827265152007e-02, + 1.691322604173476143e-02, + 1.687523005378158830e-02, + 1.683721037266792953e-02, + 1.679916706230112286e-02, + 1.676110018662104600e-02, + 1.672300980959875658e-02, + 1.668489599523772723e-02, + 1.664675880757244750e-02, + 1.660859831066973866e-02, + 1.657041456862675885e-02, + 1.653220764557304309e-02, + 1.649397760566861590e-02, + 1.645572451310520906e-02, + 1.641744843210468652e-02, + 1.637914942692113296e-02, + 1.634082756183796725e-02, + 1.630248290117015594e-02, + 1.626411550926336325e-02, + 1.622572545049285123e-02, + 1.618731278926526657e-02, + 1.614887759001670114e-02, + 1.611041991721417696e-02, + 1.607193983535384549e-02, + 1.603343740896252811e-02, + 1.599491270259650877e-02, + 1.595636578084212026e-02, + 1.591779670831476243e-02, + 1.587920554965988051e-02, + 1.584059236955199026e-02, + 1.580195723269523997e-02, + 1.576330020382224473e-02, + 1.572462134769589751e-02, + 1.568592072910666296e-02, + 1.564719841287503035e-02, + 1.560845446384973370e-02, + 1.556968894690781945e-02, + 1.553090192695558841e-02, + 1.549209346892731556e-02, + 1.545326363778597514e-02, + 1.541441249852211655e-02, + 1.537554011615506824e-02, + 1.533664655573180324e-02, + 1.529773188232748556e-02, + 1.525879616104444669e-02, + 1.521983945701343641e-02, + 1.518086183539234940e-02, + 1.514186336136676657e-02, + 1.510284410014931834e-02, + 1.506380411698044278e-02, + 1.502474347712694919e-02, + 1.498566224588335737e-02, + 1.494656048857085154e-02, + 1.490743827053710863e-02, + 1.486829565715724194e-02, + 1.482913271383229543e-02, + 1.478994950599039557e-02, + 1.475074609908536873e-02, + 1.471152255859797982e-02, + 1.467227895003464858e-02, + 1.463301533892842794e-02, + 1.459373179083759374e-02, + 1.455442837134694051e-02, + 1.451510514606650822e-02, + 1.447576218063239238e-02, + 1.443639954070578303e-02, + 1.439701729197382686e-02, + 1.435761550014821343e-02, + 1.431819423096664101e-02, + 1.427875355019119288e-02, + 1.423929352360968174e-02, + 1.419981421703395662e-02, + 1.416031569630107900e-02, + 1.412079802727310429e-02, + 1.408126127583566277e-02, + 1.404170550789989903e-02, + 1.400213078940052043e-02, + 1.396253718629707555e-02, + 1.392292476457238429e-02, + 1.388329359023415983e-02, + 1.384364372931342832e-02, + 1.380397524786526955e-02, + 1.376428821196828620e-02, + 1.372458268772495243e-02, + 1.368485874126057836e-02, + 1.364511643872449304e-02, + 1.360535584628882501e-02, + 1.356557703014931587e-02, + 1.352578005652402791e-02, + 1.348596499165437800e-02, + 1.344613190180487562e-02, + 1.340628085326185832e-02, + 1.336641191233512230e-02, + 1.332652514535642187e-02, + 1.328662061868032297e-02, + 1.324669839868298886e-02, + 1.320675855176344643e-02, + 1.316680114434212560e-02, + 1.312682624286202679e-02, + 1.308683391378735739e-02, + 1.304682422360472528e-02, + 1.300679723882145096e-02, + 1.296675302596715998e-02, + 1.292669165159239519e-02, + 1.288661318226935748e-02, + 1.284651768459093082e-02, + 1.280640522517127733e-02, + 1.276627587064591354e-02, + 1.272612968767028278e-02, + 1.268596674292146731e-02, + 1.264578710309662533e-02, + 1.260559083491388441e-02, + 1.256537800511087731e-02, + 1.252514868044688617e-02, + 1.248490292770002355e-02, + 1.244464081366940429e-02, + 1.240436240517350970e-02, + 1.236406776905134633e-02, + 1.232375697216076676e-02, + 1.228343008138003609e-02, + 1.224308716360650827e-02, + 1.220272828575733742e-02, + 1.216235351476832767e-02, + 1.212196291759518735e-02, + 1.208155656121247951e-02, + 1.204113451261328710e-02, + 1.200069683881023822e-02, + 1.196024360683418247e-02, + 1.191977488373527003e-02, + 1.187929073658112143e-02, + 1.183879123245913309e-02, + 1.179827643847373639e-02, + 1.175774642174844120e-02, + 1.171720124942432321e-02, + 1.167664098866104221e-02, + 1.163606570663530161e-02, + 1.159547547054234039e-02, + 1.155487034759454003e-02, + 1.151425040502232315e-02, + 1.147361571007284031e-02, + 1.143296633001127278e-02, + 1.139230233211976223e-02, + 1.135162378369708631e-02, + 1.131093075205990249e-02, + 1.127022330454095257e-02, + 1.122950150849050081e-02, + 1.118876543127446561e-02, + 1.114801514027663129e-02, + 1.110725070289591068e-02, + 1.106647218654844937e-02, + 1.102567965866617025e-02, + 1.098487318669759405e-02, + 1.094405283810641685e-02, + 1.090321868037301932e-02, + 1.086237078099305808e-02, + 1.082150920747844934e-02, + 1.078063402735578852e-02, + 1.073974530816796356e-02, + 1.069884311747260931e-02, + 1.065792752284319689e-02, + 1.061699859186759215e-02, + 1.057605639214905142e-02, + 1.053510099130599946e-02, + 1.049413245697087584e-02, + 1.045315085679192173e-02, + 1.041215625843069752e-02, + 1.037114872956420610e-02, + 1.033012833788323100e-02, + 1.028909515109322978e-02, + 1.024804923691310064e-02, + 1.020699066307654244e-02, + 1.016591949733062876e-02, + 1.012483580743665963e-02, + 1.008373966116890737e-02, + 1.004263112631604768e-02, + 1.000151027067960018e-02, + 9.960377162075012558e-03, + 9.919231868330269375e-03, + 9.878074457286846119e-03, + 9.836904996799601675e-03, + 9.795723554735376662e-03, + 9.754530198975066430e-03, + 9.713324997410909684e-03, + 9.672108017948780057e-03, + 9.630879328506388934e-03, + 9.589638997014326288e-03, + 9.548387091414691982e-03, + 9.507123679662433241e-03, + 9.465848829724066160e-03, + 9.424562609578532660e-03, + 9.383265087215706887e-03, + 9.341956330638121267e-03, + 9.300636407859115551e-03, + 9.259305386904200311e-03, + 9.217963335809330888e-03, + 9.176610322622900592e-03, + 9.135246415403343312e-03, + 9.093871682220575070e-03, + 9.052486191155706061e-03, + 9.011090010299966854e-03, + 8.969683207755946991e-03, + 8.928265851636378939e-03, + 8.886838010064951679e-03, + 8.845399751174896907e-03, + 8.803951143110607530e-03, + 8.762492254025911614e-03, + 8.721023152085357819e-03, + 8.679543905462522302e-03, + 8.638054582341589058e-03, + 8.596555250915932644e-03, + 8.555045979389037589e-03, + 8.513526835972959686e-03, + 8.471997888890379913e-03, + 8.430459206372069997e-03, + 8.388910856658382542e-03, + 8.347352907999108784e-03, + 8.305785428652076932e-03, + 8.264208486884838320e-03, + 8.222622150972939623e-03, + 8.181026489201173590e-03, + 8.139421569861972697e-03, + 8.097807461256894060e-03, + 8.056184231695334014e-03, + 8.014551949495157812e-03, + 7.972910682981700428e-03, + 7.931260500488899329e-03, + 7.889601470357878940e-03, + 7.847933660938168424e-03, + 7.806257140585895829e-03, + 7.764571977665909661e-03, + 7.722878240549214089e-03, + 7.681175997614902301e-03, + 7.639465317249013315e-03, + 7.597746267844120854e-03, + 7.556018917800458312e-03, + 7.514283335524589956e-03, + 7.472539589430196756e-03, + 7.430787747936883764e-03, + 7.389027879471430846e-03, + 7.347260052466528940e-03, + 7.305484335361567619e-03, + 7.263700796601360067e-03, + 7.221909504637569026e-03, + 7.180110527927155949e-03, + 7.138303934933468674e-03, + 7.096489794124727010e-03, + 7.054668173975855473e-03, + 7.012839142966138806e-03, + 6.971002769581078999e-03, + 6.929159122311099456e-03, + 6.887308269651422690e-03, + 6.845450280103012285e-03, + 6.803585222171166895e-03, + 6.761713164366568891e-03, + 6.719834175203846273e-03, + 6.677948323202950905e-03, + 6.636055676887801964e-03, + 6.594156304787248714e-03, + 6.552250275433576035e-03, + 6.510337657364027517e-03, + 6.468418519119331807e-03, + 6.426492929244619415e-03, + 6.384560956288271721e-03, + 6.342622668803087581e-03, + 6.300678135344580690e-03, + 6.258727424472573797e-03, + 6.216770604749653935e-03, + 6.174807744742286109e-03, + 6.132838913019408172e-03, + 6.090864178153260027e-03, + 6.048883608719476425e-03, + 6.006897273295595981e-03, + 5.964905240462722164e-03, + 5.922907578803962916e-03, + 5.880904356905524398e-03, + 5.838895643355155804e-03, + 5.796881506743653371e-03, + 5.754862015663412753e-03, + 5.712837238709334541e-03, + 5.670807244477804251e-03, + 5.628772101567576167e-03, + 5.586731878578332644e-03, + 5.544686644112119603e-03, + 5.502636466771957009e-03, + 5.460581415162776495e-03, + 5.418521557890090823e-03, + 5.376456963560919365e-03, + 5.334387700783695292e-03, + 5.292313838166922031e-03, + 5.250235444320790895e-03, + 5.208152587855625903e-03, + 5.166065337382896860e-03, + 5.123973761513756116e-03, + 5.081877928860602418e-03, + 5.039777908035471959e-03, + 4.997673767651021962e-03, + 4.955565576319555764e-03, + 4.913453402653819926e-03, + 4.871337315265641607e-03, + 4.829217382767316338e-03, + 4.787093673770200300e-03, + 4.744966256885758960e-03, + 4.702835200724092557e-03, + 4.660700573894924897e-03, + 4.618562445007541768e-03, + 4.576420882669422242e-03, + 4.534275955487822481e-03, + 4.492127732068255247e-03, + 4.449976281015531610e-03, + 4.407821670932243058e-03, + 4.365663970420332295e-03, + 4.323503248079530251e-03, + 4.281339572508300641e-03, + 4.239173012302841631e-03, + 4.197003636057952333e-03, + 4.154831512365631148e-03, + 4.112656709816468747e-03, + 4.070479296998233409e-03, + 4.028299342496875421e-03, + 3.986116914895046492e-03, + 3.943932082773621110e-03, + 3.901744914710396795e-03, + 3.859555479280011268e-03, + 3.817363845054834101e-03, + 3.775170080603662635e-03, + 3.732974254492680850e-03, + 3.690776435284019979e-03, + 3.648576691537225650e-03, + 3.606375091807783369e-03, + 3.564171704648066118e-03, + 3.521966598606254481e-03, + 3.479759842227314170e-03, + 3.437551504051468594e-03, + 3.395341652615704604e-03, + 3.353130356452278457e-03, + 3.310917684089808698e-03, + 3.268703704051692353e-03, + 3.226488484857676590e-03, + 3.184272095022599308e-03, + 3.142054603056214368e-03, + 3.099836077464178212e-03, + 3.057616586746669893e-03, + 3.015396199399417599e-03, + 2.973174983912051528e-03, + 2.930953008770274034e-03, + 2.888730342453133069e-03, + 2.846507053435143753e-03, + 2.804283210184654700e-03, + 2.762058881164936117e-03, + 2.719834134832624633e-03, + 2.677609039639265026e-03, + 2.635383664029833112e-03, + 2.593158076443726704e-03, + 2.550932345313301937e-03, + 2.508706539065408067e-03, + 2.466480726119836629e-03, + 2.424254974890399997e-03, + 2.382029353783543177e-03, + 2.339803931199269712e-03, + 2.297578775531054079e-03, + 2.255353955164420519e-03, + 2.213129538479060698e-03, + 2.170905593846182181e-03, + 2.128682189630582734e-03, + 2.086459394189027917e-03, + 2.044237275871324446e-03, + 2.002015903018807517e-03, + 1.959795343965846544e-03, + 1.917575667038356330e-03, + 1.875356940554854818e-03, + 1.833139232824920707e-03, + 1.790922612150772043e-03, + 1.748707146825708011e-03, + 1.706492905135198338e-03, + 1.664279955355461469e-03, + 1.622068365754424741e-03, + 1.579858204591631354e-03, + 1.537649540116804020e-03, + 1.495442440571993206e-03, + 1.453236974188872911e-03, + 1.411033209190870261e-03, + 1.368831213791516432e-03, + 1.326631056195544519e-03, + 1.284432804597315922e-03, + 1.242236527182403929e-03, + 1.200042292126066298e-03, + 1.157850167594289990e-03, + 1.115660221742287381e-03, + 1.073472522716039951e-03, + 1.031287138650758281e-03, + 9.891041376719645218e-04, + 9.469235878939767865e-04, + 9.047455574214267101e-04, + 8.625701143479863782e-04, + 8.203973267561483424e-04, + 7.782272627187514181e-04, + 7.360599902964135108e-04, + 6.938955775396393050e-04, + 6.517340924872107658e-04, + 6.095756031672237450e-04, + 5.674201775955916736e-04, + 5.252678837775703836e-04, + 4.831187897062455918e-04, + 4.409729633635935207e-04, + 3.988304727189675688e-04, + 3.566913857306356554e-04, + 3.145557703442529050e-04, + 2.724236944939368503e-04, + 2.302952261006326181e-04, + 1.881704330742277743e-04, + 1.460493833111038155e-04, + 1.039321446950798318e-04, + 6.181878509836196941e-05, + 1.970937237908853315e-05, +-2.239602561654950767e-05, +-6.449734105594168328e-05, +-1.065945061189930591e-04, +-1.486874529996394219e-04, +-1.907761139043147769e-04, +-2.328604210534657647e-04, +-2.749403066804847117e-04, +-3.170157030332300201e-04, +-3.590865423724877935e-04, +-4.011527569734907772e-04, +-4.432142791248474102e-04, +-4.852710411301829822e-04, +-5.273229753060094472e-04, +-5.693700139844222680e-04, +-6.114120895109774944e-04, +-6.534491342460807886e-04, +-6.954810805651089100e-04, +-7.375078608574535573e-04, +-7.795294075279206401e-04, +-8.215456529956621226e-04, +-8.635565296957024720e-04, +-9.055619700773862978e-04, +-9.475619066059081611e-04, +-9.895562717612414912e-04, +-1.031544998039649096e-03, +-1.073528017952160183e-03, +-1.115505264026072198e-03, +-1.157476668803900230e-03, +-1.199442164844986836e-03, +-1.241401684723400642e-03, +-1.283355161030625162e-03, +-1.325302526373408609e-03, +-1.367243713375210440e-03, +-1.409178654676248839e-03, +-1.451107282932611025e-03, +-1.493029530817609586e-03, +-1.534945331020728639e-03, +-1.576854616249146910e-03, +-1.618757319226185598e-03, +-1.660653372692832974e-03, +-1.702542709406698346e-03, +-1.744425262143478334e-03, +-1.786300963695466523e-03, +-1.828169746873030800e-03, +-1.870031544503595504e-03, +-1.911886289433208097e-03, +-1.953733914524498263e-03, +-1.995574352659267633e-03, +-2.037407536736457123e-03, +-2.079233399673735289e-03, +-2.121051874406422368e-03, +-2.162862893888904941e-03, +-2.204666391093708724e-03, +-2.246462299011532399e-03, +-2.288250550652622811e-03, +-2.330031079045164714e-03, +-2.371803817236822071e-03, +-2.413568698293676838e-03, +-2.455325655301726032e-03, +-2.497074621365362110e-03, +-2.538815529608867434e-03, +-2.580548313175389484e-03, +-2.622272905228498208e-03, +-2.663989238950143380e-03, +-2.705697247543286613e-03, +-2.747396864229799309e-03, +-2.789088022252083320e-03, +-2.830770654872027080e-03, +-2.872444695372375172e-03, +-2.914110077055784634e-03, +-2.955766733244935985e-03, +-2.997414597283815183e-03, +-3.039053602536164085e-03, +-3.080683682387012207e-03, +-3.122304770241595556e-03, +-3.163916799526853268e-03, +-3.205519703689942677e-03, +-3.247113416199684348e-03, +-3.288697870545681697e-03, +-3.330273000239295043e-03, +-3.371838738812760802e-03, +-3.413395019820635642e-03, +-3.454941776838308960e-03, +-3.496478943463510788e-03, +-3.538006453315213715e-03, +-3.579524240035047121e-03, +-3.621032237286364759e-03, +-3.662530378754315884e-03, +-3.704018598147131112e-03, +-3.745496829194611046e-03, +-3.786965005649619870e-03, +-3.828423061286998115e-03, +-3.869870929905101786e-03, +-3.911308545324262802e-03, +-3.952735841388286923e-03, +-3.994152751963521777e-03, +-4.035559210939887280e-03, +-4.076955152229901590e-03, +-4.118340509770257972e-03, +-4.159715217520200230e-03, +-4.201079209463131660e-03, +-4.242432419605441513e-03, +-4.283774781978103539e-03, +-4.325106230635123415e-03, +-4.366426699654741769e-03, +-4.407736123139611127e-03, +-4.449034435215901660e-03, +-4.490321570034486870e-03, +-4.531597461770115257e-03, +-4.572862044622775547e-03, +-4.614115252816218711e-03, +-4.655357020599378698e-03, +-4.696587282245596150e-03, +-4.737805972053461476e-03, +-4.779013024345996931e-03, +-4.820208373472145875e-03, +-4.861391953805164687e-03, +-4.902563699744202225e-03, +-4.943723545713243385e-03, +-4.984871426162554992e-03, +-5.026007275567172250e-03, +-5.067131028428218872e-03, +-5.108242619272927894e-03, +-5.149341982653764770e-03, +-5.190429053149803879e-03, +-5.231503765365630443e-03, +-5.272566053932842799e-03, +-5.313615853508564871e-03, +-5.354653098776916351e-03, +-5.395677724448101099e-03, +-5.436689665259378593e-03, +-5.477688855974193090e-03, +-5.518675231383570953e-03, +-5.559648726304746748e-03, +-5.600609275582515457e-03, +-5.641556814088244561e-03, +-5.682491276721378035e-03, +-5.723412598407841279e-03, +-5.764320714101634456e-03, +-5.805215558783742222e-03, +-5.846097067463441703e-03, +-5.886965175177443811e-03, +-5.927819816989973907e-03, +-5.968660927994130089e-03, +-6.009488443309789381e-03, +-6.050302298086317372e-03, +-6.091102427500361648e-03, +-6.131888766757524929e-03, +-6.172661251091299088e-03, +-6.213419815764571752e-03, +-6.254164396068095412e-03, +-6.294894927321955866e-03, +-6.335611344874548731e-03, +-6.376313584104044418e-03, +-6.417001580416865913e-03, +-6.457675269249235281e-03, +-6.498334586066059106e-03, +-6.538979466362291118e-03, +-6.579609845662062230e-03, +-6.620225659518734311e-03, +-6.660826843516240263e-03, +-6.701413333267087352e-03, +-6.741985064414879499e-03, +-6.782541972632345761e-03, +-6.823083993622821794e-03, +-6.863611063119326103e-03, +-6.904123116885920938e-03, +-6.944620090716252525e-03, +-6.985101920435048128e-03, +-7.025568541897089098e-03, +-7.066019890988586502e-03, +-7.106455903625785546e-03, +-7.146876515756408858e-03, +-7.187281663358556678e-03, +-7.227671282442288056e-03, +-7.268045309047960721e-03, +-7.308403679247685650e-03, +-7.348746329145338339e-03, +-7.389073194875194449e-03, +-7.429384212604378361e-03, +-7.469679318530745085e-03, +-7.509958448884601970e-03, +-7.550221539927522152e-03, +-7.590468527953871114e-03, +-7.630699349289340842e-03, +-7.670913940292361892e-03, +-7.711112237353110258e-03, +-7.751294176894935918e-03, +-7.791459695372898731e-03, +-7.831608729275209985e-03, +-7.871741215122187232e-03, +-7.911857089467800794e-03, +-7.951956288898054392e-03, +-7.992038750032267116e-03, +-8.032104409523349239e-03, +-8.072153204056289541e-03, +-8.112185070350483307e-03, +-8.152199945157966379e-03, +-8.192197765264697118e-03, +-8.232178467489763632e-03, +-8.272141988686601555e-03, +-8.312088265741706880e-03, +-8.352017235576039353e-03, +-8.391928835143950410e-03, +-8.431823001434621268e-03, +-8.471699671470682078e-03, +-8.511558782309561547e-03, +-8.551400271042480794e-03, +-8.591224074795936541e-03, +-8.631030130730233535e-03, +-8.670818376040858450e-03, +-8.710588747957659361e-03, +-8.750341183745515353e-03, +-8.790075620704657436e-03, +-8.829791996169641596e-03, +-8.869490247510811165e-03, +-8.909170312133092920e-03, +-8.948832127477709258e-03, +-8.988475631020363676e-03, +-9.028100760272989370e-03, +-9.067707452782630337e-03, +-9.107295646132660891e-03, +-9.146865277941776048e-03, +-9.186416285864921344e-03, +-9.225948607592666592e-03, +-9.265462180852591934e-03, +-9.304956943407206166e-03, +-9.344432833056609544e-03, +-9.383889787636389562e-03, +-9.423327745019128426e-03, +-9.462746643114139378e-03, +-9.502146419866897703e-03, +-9.541527013260281062e-03, +-9.580888361313447121e-03, +-9.620230402083337559e-03, +-9.659553073663191408e-03, +-9.698856314184090693e-03, +-9.738140061813727044e-03, +-9.777404254758034069e-03, +-9.816648831259634778e-03, +-9.855873729599281402e-03, +-9.895078888094798950e-03, +-9.934264245102747068e-03, +-9.973429739016293274e-03, +-1.001257530826778382e-02, +-1.005170089132670537e-02, +-1.009080642670130527e-02, +-1.012989185293747436e-02, +-1.016895710862016945e-02, +-1.020800213237241238e-02, +-1.024702686285540454e-02, +-1.028603123876981745e-02, +-1.032501519885419862e-02, +-1.036397868188653447e-02, +-1.040292162668311066e-02, +-1.044184397210007852e-02, +-1.048074565703181402e-02, +-1.051962662041250850e-02, +-1.055848680121512957e-02, +-1.059732613845282105e-02, +-1.063614457117706760e-02, +-1.067494203848015286e-02, +-1.071371847949309855e-02, +-1.075247383338725528e-02, +-1.079120803937335185e-02, +-1.082992103670259686e-02, +-1.086861276466607323e-02, +-1.090728316259459083e-02, +-1.094593216985995446e-02, +-1.098455972587360913e-02, +-1.102316577008785256e-02, +-1.106175024199507716e-02, +-1.110031308112897387e-02, +-1.113885422706326414e-02, +-1.117737361941287602e-02, +-1.121587119783325204e-02, +-1.125434690202151491e-02, +-1.129280067171486296e-02, +-1.133123244669268642e-02, +-1.136964216677489002e-02, +-1.140802977182320092e-02, +-1.144639520174040373e-02, +-1.148473839647132580e-02, +-1.152305929600212948e-02, +-1.156135784036045958e-02, +-1.159963396961650149e-02, +-1.163788762388161778e-02, +-1.167611874330965090e-02, +-1.171432726809612350e-02, +-1.175251313847939204e-02, +-1.179067629473949663e-02, +-1.182881667719922272e-02, +-1.186693422622337596e-02, +-1.190502888222021854e-02, +-1.194310058563946043e-02, +-1.198114927697468274e-02, +-1.201917489676151800e-02, +-1.205717738557907787e-02, +-1.209515668404890880e-02, +-1.213311273283647872e-02, +-1.217104547264969555e-02, +-1.220895484423999491e-02, +-1.224684078840268878e-02, +-1.228470324597585005e-02, +-1.232254215784157718e-02, +-1.236035746492527079e-02, +-1.239814910819669359e-02, +-1.243591702866881157e-02, +-1.247366116739892679e-02, +-1.251138146548811357e-02, +-1.254907786408186558e-02, +-1.258675030436939499e-02, +-1.262439872758501676e-02, +-1.266202307500649549e-02, +-1.269962328795694144e-02, +-1.273719930780321981e-02, +-1.277475107595767503e-02, +-1.281227853387676384e-02, +-1.284978162306195382e-02, +-1.288726028506007905e-02, +-1.292471446146237386e-02, +-1.296214409390557785e-02, +-1.299954912407124026e-02, +-1.303692949368689610e-02, +-1.307428514452472698e-02, +-1.311161601840292977e-02, +-1.314892205718477293e-02, +-1.318620320277969112e-02, +-1.322345939714236057e-02, +-1.326069058227386487e-02, +-1.329789670022056558e-02, +-1.333507769307545193e-02, +-1.337223350297686575e-02, +-1.340936407211033334e-02, +-1.344646934270670412e-02, +-1.348354925704384373e-02, +-1.352060375744548043e-02, +-1.355763278628256165e-02, +-1.359463628597224610e-02, +-1.363161419897838261e-02, +-1.366856646781196456e-02, +-1.370549303503038746e-02, +-1.374239384323861640e-02, +-1.377926883508801860e-02, +-1.381611795327783443e-02, +-1.385294114055373935e-02, +-1.388973833970971565e-02, +-1.392650949358625184e-02, +-1.396325454507210337e-02, +-1.399997343710282331e-02, +-1.403666611266262548e-02, +-1.407333251478260459e-02, +-1.410997258654234608e-02, +-1.414658627106874303e-02, +-1.418317351153745680e-02, +-1.421973425117197855e-02, +-1.425626843324359974e-02, +-1.429277600107268717e-02, +-1.432925689802726048e-02, +-1.436571106752434351e-02, +-1.440213845302908309e-02, +-1.443853899805569094e-02, +-1.447491264616660930e-02, +-1.451125934097380332e-02, +-1.454757902613742528e-02, +-1.458387164536708094e-02, +-1.462013714242110102e-02, +-1.465637546110748306e-02, +-1.469258654528296515e-02, +-1.472877033885390888e-02, +-1.476492678577577718e-02, +-1.480105583005411098e-02, +-1.483715741574352133e-02, +-1.487323148694835555e-02, +-1.490927798782332343e-02, +-1.494529686257188919e-02, +-1.498128805544853177e-02, +-1.501725151075697547e-02, +-1.505318717285161409e-02, +-1.508909498613653262e-02, +-1.512497489506657404e-02, +-1.516082684414650668e-02, +-1.519665077793193146e-02, +-1.523244664102843884e-02, +-1.526821437809296016e-02, +-1.530395393383249952e-02, +-1.533966525300529612e-02, +-1.537534828041981633e-02, +-1.541100296093641901e-02, +-1.544662923946567984e-02, +-1.548222706096948412e-02, +-1.551779637046158712e-02, +-1.555333711300572672e-02, +-1.558884923371835728e-02, +-1.562433267776643618e-02, +-1.565978739036895384e-02, +-1.569521331679623807e-02, +-1.573061040237071564e-02, +-1.576597859246613165e-02, +-1.580131783250847063e-02, +-1.583662806797517600e-02, +-1.587190924439656550e-02, +-1.590716130735423534e-02, +-1.594238420248252422e-02, +-1.597757787546758707e-02, +-1.601274227204854336e-02, +-1.604787733801646757e-02, +-1.608298301921529463e-02, +-1.611805926154121979e-02, +-1.615310601094329876e-02, +-1.618812321342380511e-02, +-1.622311081503710270e-02, +-1.625806876189110281e-02, +-1.629299700014625110e-02, +-1.632789547601675578e-02, +-1.636276413576929004e-02, +-1.639760292572437980e-02, +-1.643241179225538723e-02, +-1.646719068178972151e-02, +-1.650193954080779110e-02, +-1.653665831584382948e-02, +-1.657134695348556550e-02, +-1.660600540037486181e-02, +-1.664063360320707299e-02, +-1.667523150873167354e-02, +-1.670979906375190047e-02, +-1.674433621512522521e-02, +-1.677884290976355136e-02, +-1.681331909463260055e-02, +-1.684776471675262025e-02, +-1.688217972319805416e-02, +-1.691656406109833671e-02, +-1.695091767763685225e-02, +-1.698524052005218749e-02, +-1.701953253563709412e-02, +-1.705379367173969624e-02, +-1.708802387576249804e-02, +-1.712222309516345242e-02, +-1.715639127745504505e-02, +-1.719052837020541152e-02, +-1.722463432103737632e-02, +-1.725870907762965326e-02, +-1.729275258771551665e-02, +-1.732676479908432446e-02, +-1.736074565958099086e-02, +-1.739469511710551100e-02, +-1.742861311961405382e-02, +-1.746249961511804616e-02, +-1.749635455168544254e-02, +-1.753017787743943109e-02, +-1.756396954055966173e-02, +-1.759772948928140304e-02, +-1.763145767189672197e-02, +-1.766515403675323823e-02, +-1.769881853225532126e-02, +-1.773245110686333392e-02, +-1.776605170909488843e-02, +-1.779962028752284792e-02, +-1.783315679077807428e-02, +-1.786666116754710709e-02, +-1.790013336657386017e-02, +-1.793357333665860157e-02, +-1.796698102665902907e-02, +-1.800035638548971514e-02, +-1.803369936212175992e-02, +-1.806700990558434555e-02, +-1.810028796496316802e-02, +-1.813353348940164797e-02, +-1.816674642810002863e-02, +-1.819992673031691627e-02, +-1.823307434536766344e-02, +-1.826618922262572900e-02, +-1.829927131152168582e-02, +-1.833232056154482717e-02, +-1.836533692224118219e-02, +-1.839832034321563919e-02, +-1.843127077413042603e-02, +-1.846418816470634869e-02, +-1.849707246472173661e-02, +-1.852992362401390675e-02, +-1.856274159247811584e-02, +-1.859552632006757772e-02, +-1.862827775679484418e-02, +-1.866099585273018821e-02, +-1.869368055800298134e-02, +-1.872633182280080202e-02, +-1.875894959737065687e-02, +-1.879153383201777328e-02, +-1.882408447710655700e-02, +-1.885660148306012376e-02, +-1.888908480036135401e-02, +-1.892153437955106793e-02, +-1.895395017123054776e-02, +-1.898633212605935205e-02, +-1.901868019475703650e-02, +-1.905099432810207147e-02, +-1.908327447693308754e-02, +-1.911552059214748772e-02, +-1.914773262470268952e-02, +-1.917991052561626719e-02, +-1.921205424596472700e-02, +-1.924416373688513440e-02, +-1.927623894957387202e-02, +-1.930827983528816613e-02, +-1.934028634534444915e-02, +-1.937225843111991738e-02, +-1.940419604405153875e-02, +-1.943609913563708672e-02, +-1.946796765743411678e-02, +-1.949980156106131957e-02, +-1.953160079819711570e-02, +-1.956336532058132113e-02, +-1.959509508001354428e-02, +-1.962679002835507336e-02, +-1.965845011752728744e-02, +-1.969007529951260008e-02, +-1.972166552635479242e-02, +-1.975322075015799664e-02, +-1.978474092308802126e-02, +-1.981622599737117157e-02, +-1.984767592529590799e-02, +-1.987909065921115992e-02, +-1.991047015152778987e-02, +-1.994181435471760466e-02, +-1.997312322131457318e-02, +-2.000439670391334843e-02, +-2.003563475517143241e-02, +-2.006683732780700086e-02, +-2.009800437460054420e-02, +-2.012913584839420844e-02, +-2.016023170209247165e-02, +-2.019129188866130784e-02, +-2.022231636112909250e-02, +-2.025330507258625221e-02, +-2.028425797618542761e-02, +-2.031517502514179271e-02, +-2.034605617273235745e-02, +-2.037690137229722712e-02, +-2.040771057723831869e-02, +-2.043848374102080409e-02, +-2.046922081717181610e-02, +-2.049992175928178756e-02, +-2.053058652100341747e-02, +-2.056121505605284019e-02, +-2.059180731820853955e-02, +-2.062236326131229591e-02, +-2.065288283926869362e-02, +-2.068336600604586337e-02, +-2.071381271567477450e-02, +-2.074422292224976580e-02, +-2.077459657992823325e-02, +-2.080493364293153208e-02, +-2.083523406554419616e-02, +-2.086549780211396921e-02, +-2.089572480705277277e-02, +-2.092591503483564805e-02, +-2.095606844000177243e-02, +-2.098618497715395645e-02, +-2.101626460095885884e-02, +-2.104630726614705252e-02, +-2.107631292751329516e-02, +-2.110628153991617184e-02, +-2.113621305827860508e-02, +-2.116610743758739685e-02, +-2.119596463289423471e-02, +-2.122578459931444630e-02, +-2.125556729202821363e-02, +-2.128531266627990692e-02, +-2.131502067737878203e-02, +-2.134469128069817201e-02, +-2.137432443167653143e-02, +-2.140392008581713801e-02, +-2.143347819868743342e-02, +-2.146299872592041802e-02, +-2.149248162321340874e-02, +-2.152192684632926387e-02, +-2.155133435109547746e-02, +-2.158070409340503981e-02, +-2.161003602921585109e-02, +-2.163933011455116198e-02, +-2.166858630549936895e-02, +-2.169780455821473594e-02, +-2.172698482891642288e-02, +-2.175612707388949532e-02, +-2.178523124948420972e-02, +-2.181429731211693979e-02, +-2.184332521826942708e-02, +-2.187231492448911407e-02, +-2.190126638738970274e-02, +-2.193017956365041210e-02, +-2.195905441001657840e-02, +-2.198789088329942271e-02, +-2.201668894037643598e-02, +-2.204544853819102868e-02, +-2.207416963375330443e-02, +-2.210285218413899147e-02, +-2.213149614649074365e-02, +-2.216010147801702329e-02, +-2.218866813599352367e-02, +-2.221719607776178815e-02, +-2.224568526073022329e-02, +-2.227413564237388371e-02, +-2.230254718023460397e-02, +-2.233091983192086322e-02, +-2.235925355510811133e-02, +-2.238754830753857464e-02, +-2.241580404702143633e-02, +-2.244402073143321463e-02, +-2.247219831871713133e-02, +-2.250033676688379877e-02, +-2.252843603401063349e-02, +-2.255649607824320238e-02, +-2.258451685779339427e-02, +-2.261249833094124140e-02, +-2.264044045603358368e-02, +-2.266834319148560914e-02, +-2.269620649577920590e-02, +-2.272403032746474205e-02, +-2.275181464515927537e-02, +-2.277955940754877034e-02, +-2.280726457338614482e-02, +-2.283493010149264743e-02, +-2.286255595075716712e-02, +-2.289014208013677096e-02, +-2.291768844865669022e-02, +-2.294519501541009837e-02, +-2.297266173955842331e-02, +-2.300008858033111836e-02, +-2.302747549702647764e-02, +-2.305482244901055008e-02, +-2.308212939571817682e-02, +-2.310939629665244646e-02, +-2.313662311138528146e-02, +-2.316380979955677197e-02, +-2.319095632087614031e-02, +-2.321806263512086674e-02, +-2.324512870213771981e-02, +-2.327215448184169130e-02, +-2.329913993421714805e-02, +-2.332608501931720396e-02, +-2.335298969726385884e-02, +-2.337985392824843550e-02, +-2.340667767253128487e-02, +-2.343346089044196986e-02, +-2.346020354237884561e-02, +-2.348690558881037435e-02, +-2.351356699027363009e-02, +-2.354018770737563437e-02, +-2.356676770079231542e-02, +-2.359330693126981612e-02, +-2.361980535962309238e-02, +-2.364626294673742926e-02, +-2.367267965356718157e-02, +-2.369905544113707144e-02, +-2.372539027054116831e-02, +-2.375168410294361057e-02, +-2.377793689957816148e-02, +-2.380414862174917712e-02, +-2.383031923083021170e-02, +-2.385644868826561349e-02, +-2.388253695556959502e-02, +-2.390858399432636491e-02, +-2.393458976619095013e-02, +-2.396055423288794006e-02, +-2.398647735621289509e-02, +-2.401235909803131272e-02, +-2.403819942027974124e-02, +-2.406399828496467996e-02, +-2.408975565416359918e-02, +-2.411547149002415957e-02, +-2.414114575476553406e-02, +-2.416677841067652391e-02, +-2.419236942011776179e-02, +-2.421791874552003607e-02, +-2.424342634938543226e-02, +-2.426889219428665645e-02, +-2.429431624286788535e-02, +-2.431969845784409667e-02, +-2.434503880200112810e-02, +-2.437033723819660713e-02, +-2.439559372935877143e-02, +-2.442080823848763460e-02, +-2.444598072865403898e-02, +-2.447111116300089081e-02, +-2.449619950474190080e-02, +-2.452124571716260415e-02, +-2.454624976361977767e-02, +-2.457121160754247718e-02, +-2.459613121243039990e-02, +-2.462100854185587592e-02, +-2.464584355946249083e-02, +-2.467063622896581085e-02, +-2.469538651415304972e-02, +-2.472009437888370714e-02, +-2.474475978708881932e-02, +-2.476938270277162166e-02, +-2.479396309000774304e-02, +-2.481850091294431765e-02, +-2.484299613580109520e-02, +-2.486744872286960478e-02, +-2.489185863851437613e-02, +-2.491622584717161082e-02, +-2.494055031335006348e-02, +-2.496483200163081284e-02, +-2.498907087666796603e-02, +-2.501326690318712853e-02, +-2.503742004598748586e-02, +-2.506153026994032904e-02, +-2.508559753998968259e-02, +-2.510962182115218655e-02, +-2.513360307851769324e-02, +-2.515754127724835823e-02, +-2.518143638257942796e-02, +-2.520528835981918417e-02, +-2.522909717434865945e-02, +-2.525286279162220621e-02, +-2.527658517716660502e-02, +-2.530026429658269183e-02, +-2.532390011554361622e-02, +-2.534749259979627786e-02, +-2.537104171516039661e-02, +-2.539454742752975808e-02, +-2.541800970287041994e-02, +-2.544142850722276930e-02, +-2.546480380670018348e-02, +-2.548813556748972739e-02, +-2.551142375585184821e-02, +-2.553466833812086459e-02, +-2.555786928070444969e-02, +-2.558102655008424528e-02, +-2.560414011281509500e-02, +-2.562720993552646681e-02, +-2.565023598492096810e-02, +-2.567321822777527893e-02, +-2.569615663094025268e-02, +-2.571905116134030542e-02, +-2.574190178597431100e-02, +-2.576470847191469210e-02, +-2.578747118630863103e-02, +-2.581018989637670971e-02, +-2.583286456941451953e-02, +-2.585549517279123535e-02, +-2.587808167395072578e-02, +-2.590062404041089048e-02, +-2.592312223976444077e-02, +-2.594557623967808785e-02, +-2.596798600789335457e-02, +-2.599035151222596138e-02, +-2.601267272056655144e-02, +-2.603494960088030899e-02, +-2.605718212120652910e-02, +-2.607937024966018244e-02, +-2.610151395443019093e-02, +-2.612361320378064899e-02, +-2.614566796605027194e-02, +-2.616767820965279490e-02, +-2.618964390307684104e-02, +-2.621156501488607418e-02, +-2.623344151371892474e-02, +-2.625527336828933911e-02, +-2.627706054738574576e-02, +-2.629880301987236671e-02, +-2.632050075468812811e-02, +-2.634215372084735066e-02, +-2.636376188743955878e-02, +-2.638532522362982066e-02, +-2.640684369865827635e-02, +-2.642831728184062354e-02, +-2.644974594256804812e-02, +-2.647112965030694667e-02, +-2.649246837459976259e-02, +-2.651376208506378562e-02, +-2.653501075139261603e-02, +-2.655621434335493289e-02, +-2.657737283079572577e-02, +-2.659848618363511510e-02, +-2.661955437186946244e-02, +-2.664057736557038161e-02, +-2.666155513488617512e-02, +-2.668248765004027981e-02, +-2.670337488133263382e-02, +-2.672421679913861148e-02, +-2.674501337391006067e-02, +-2.676576457617486221e-02, +-2.678647037653660370e-02, +-2.680713074567555795e-02, +-2.682774565434776701e-02, +-2.684831507338585749e-02, +-2.686883897369833282e-02, +-2.688931732627021509e-02, +-2.690975010216284033e-02, +-2.693013727251412220e-02, +-2.695047880853792058e-02, +-2.697077468152518642e-02, +-2.699102486284268160e-02, +-2.701122932393439785e-02, +-2.703138803632040843e-02, +-2.705150097159771463e-02, +-2.707156810143968723e-02, +-2.709158939759676032e-02, +-2.711156483189567853e-02, +-2.713149437624036778e-02, +-2.715137800261122752e-02, +-2.717121568306573795e-02, +-2.719100738973837320e-02, +-2.721075309484008442e-02, +-2.723045277065916717e-02, +-2.725010638956073053e-02, +-2.726971392398722799e-02, +-2.728927534645773229e-02, +-2.730879062956886177e-02, +-2.732825974599402755e-02, +-2.734768266848402324e-02, +-2.736705936986686891e-02, +-2.738638982304792552e-02, +-2.740567400100949250e-02, +-2.742491187681167161e-02, +-2.744410342359164534e-02, +-2.746324861456410360e-02, +-2.748234742302108069e-02, +-2.750139982233223285e-02, +-2.752040578594468559e-02, +-2.753936528738296433e-02, +-2.755827830024951824e-02, +-2.757714479822394663e-02, +-2.759596475506400498e-02, +-2.761473814460473422e-02, +-2.763346494075917537e-02, +-2.765214511751789422e-02, +-2.767077864894969264e-02, +-2.768936550920063702e-02, +-2.770790567249493963e-02, +-2.772639911313474342e-02, +-2.774484580550008392e-02, +-2.776324572404902449e-02, +-2.778159884331745516e-02, +-2.779990513791954013e-02, +-2.781816458254718002e-02, +-2.783637715197094520e-02, +-2.785454282103873996e-02, +-2.787266156467750611e-02, +-2.789073335789169286e-02, +-2.790875817576451631e-02, +-2.792673599345692897e-02, +-2.794466678620870573e-02, +-2.796255052933754176e-02, +-2.798038719823980544e-02, +-2.799817676839008729e-02, +-2.801591921534149487e-02, +-2.803361451472558344e-02, +-2.805126264225242874e-02, +-2.806886357371046747e-02, +-2.808641728496700379e-02, +-2.810392375196758483e-02, +-2.812138295073685068e-02, +-2.813879485737738953e-02, +-2.815615944807122600e-02, +-2.817347669907867974e-02, +-2.819074658673888928e-02, +-2.820796908746986756e-02, +-2.822514417776823478e-02, +-2.824227183420989842e-02, +-2.825935203344887015e-02, +-2.827638475221882705e-02, +-2.829336996733192860e-02, +-2.831030765567974991e-02, +-2.832719779423210210e-02, +-2.834404036003855890e-02, +-2.836083533022741229e-02, +-2.837758268200601605e-02, +-2.839428239266096957e-02, +-2.841093443955794440e-02, +-2.842753880014167386e-02, +-2.844409545193629998e-02, +-2.846060437254512715e-02, +-2.847706553965055273e-02, +-2.849347893101455281e-02, +-2.850984452447813400e-02, +-2.852616229796184691e-02, +-2.854243222946531433e-02, +-2.855865429706815409e-02, +-2.857482847892879943e-02, +-2.859095475328538027e-02, +-2.860703309845544565e-02, +-2.862306349283643553e-02, +-2.863904591490453594e-02, +-2.865498034321638590e-02, +-2.867086675640748497e-02, +-2.868670513319348386e-02, +-2.870249545236923730e-02, +-2.871823769280986219e-02, +-2.873393183346939841e-02, +-2.874957785338231805e-02, +-2.876517573166250188e-02, +-2.878072544750362796e-02, +-2.879622698017923060e-02, +-2.881168030904252692e-02, +-2.882708541352708986e-02, +-2.884244227314562009e-02, +-2.885775086749140309e-02, +-2.887301117623725447e-02, +-2.888822317913617571e-02, +-2.890338685602083721e-02, +-2.891850218680433460e-02, +-2.893356915147958508e-02, +-2.894858773011958070e-02, +-2.896355790287737098e-02, +-2.897847964998623987e-02, +-2.899335295175927557e-02, +-2.900817778859017537e-02, +-2.902295414095274612e-02, +-2.903768198940054682e-02, +-2.905236131456796073e-02, +-2.906699209716907470e-02, +-2.908157431799886228e-02, +-2.909610795793208388e-02, +-2.911059299792397373e-02, +-2.912502941901035786e-02, +-2.913941720230703650e-02, +-2.915375632901047107e-02, +-2.916804678039756557e-02, +-2.918228853782540641e-02, +-2.919648158273193891e-02, +-2.921062589663507222e-02, +-2.922472146113389707e-02, +-2.923876825790734657e-02, +-2.925276626871540706e-02, +-2.926671547539830276e-02, +-2.928061585987710991e-02, +-2.929446740415345488e-02, +-2.930827009030949337e-02, +-2.932202390050816718e-02, +-2.933572881699305843e-02, +-2.934938482208853186e-02, +-2.936299189819949196e-02, +-2.937655002781177846e-02, +-2.939005919349173268e-02, +-2.940351937788691569e-02, +-2.941693056372537626e-02, +-2.943029273381603944e-02, +-2.944360587104870308e-02, +-2.945686995839409336e-02, +-2.947008497890367743e-02, +-2.948325091571009707e-02, +-2.949636775202656505e-02, +-2.950943547114762838e-02, +-2.952245405644854034e-02, +-2.953542349138549294e-02, +-2.954834375949595346e-02, +-2.956121484439825503e-02, +-2.957403672979179096e-02, +-2.958680939945688634e-02, +-2.959953283725539133e-02, +-2.961220702712951888e-02, +-2.962483195310340600e-02, +-2.963740759928166352e-02, +-2.964993394985060080e-02, +-2.966241098907727858e-02, +-2.967483870131024451e-02, +-2.968721707097902313e-02, +-2.969954608259455300e-02, +-2.971182572074887104e-02, +-2.972405597011545941e-02, +-2.973623681544888125e-02, +-2.974836824158497497e-02, +-2.976045023344132609e-02, +-2.977248277601621598e-02, +-2.978446585438986396e-02, +-2.979639945372326501e-02, +-2.980828355925941447e-02, +-2.982011815632204521e-02, +-2.983190323031697372e-02, +-2.984363876673110094e-02, +-2.985532475113257533e-02, +-2.986696116917145552e-02, +-2.987854800657895049e-02, +-2.989008524916779777e-02, +-2.990157288283245424e-02, +-2.991301089354868326e-02, +-2.992439926737397449e-02, +-2.993573799044695408e-02, +-2.994702704898845325e-02, +-2.995826642930041542e-02, +-2.996945611776642357e-02, +-2.998059610085182514e-02, +-2.999168636510370425e-02, +-3.000272689715035093e-02, +-3.001371768370207985e-02, +-3.002465871155080707e-02, +-3.003554996757010209e-02, +-3.004639143871507337e-02, +-3.005718311202279849e-02, +-3.006792497461210564e-02, +-3.007861701368310173e-02, +-3.008925921651822016e-02, +-3.009985157048124596e-02, +-3.011039406301795757e-02, +-3.012088668165580421e-02, +-3.013132941400413142e-02, +-3.014172224775395550e-02, +-3.015206517067842845e-02, +-3.016235817063210589e-02, +-3.017260123555166526e-02, +-3.018279435345564560e-02, +-3.019293751244431223e-02, +-3.020303070070014598e-02, +-3.021307390648699312e-02, +-3.022306711815106114e-02, +-3.023301032412012077e-02, +-3.024290351290441839e-02, +-3.025274667309559712e-02, +-3.026253979336736982e-02, +-3.027228286247555730e-02, +-3.028197586925789053e-02, +-3.029161880263418760e-02, +-3.030121165160602065e-02, +-3.031075440525703157e-02, +-3.032024705275320614e-02, +-3.032968958334223905e-02, +-3.033908198635360681e-02, +-3.034842425119944551e-02, +-3.035771636737354465e-02, +-3.036695832445185372e-02, +-3.037615011209244056e-02, +-3.038529172003530399e-02, +-3.039438313810272421e-02, +-3.040342435619895756e-02, +-3.041241536431047235e-02, +-3.042135615250570607e-02, +-3.043024671093520761e-02, +-3.043908702983190440e-02, +-3.044787709951071036e-02, +-3.045661691036866472e-02, +-3.046530645288501871e-02, +-3.047394571762113147e-02, +-3.048253469522058459e-02, +-3.049107337640906065e-02, +-3.049956175199457567e-02, +-3.050799981286714604e-02, +-3.051638754999936448e-02, +-3.052472495444555345e-02, +-3.053301201734245907e-02, +-3.054124872990916437e-02, +-3.054943508344693665e-02, +-3.055757106933911643e-02, +-3.056565667905133607e-02, +-3.057369190413172441e-02, +-3.058167673621044885e-02, +-3.058961116699979513e-02, +-3.059749518829475712e-02, +-3.060532879197209316e-02, +-3.061311196999124892e-02, +-3.062084471439368433e-02, +-3.062852701730335581e-02, +-3.063615887092628956e-02, +-3.064374026755109157e-02, +-3.065127119954829532e-02, +-3.065875165937120839e-02, +-3.066618163955514911e-02, +-3.067356113271763746e-02, +-3.068089013155877662e-02, +-3.068816862886097202e-02, +-3.069539661748892437e-02, +-3.070257409038950128e-02, +-3.070970104059220565e-02, +-3.071677746120859628e-02, +-3.072380334543283256e-02, +-3.073077868654117140e-02, +-3.073770347789250498e-02, +-3.074457771292775018e-02, +-3.075140138517043140e-02, +-3.075817448822648625e-02, +-3.076489701578402625e-02, +-3.077156896161344773e-02, +-3.077819031956783441e-02, +-3.078476108358242300e-02, +-3.079128124767483918e-02, +-3.079775080594518433e-02, +-3.080416975257590367e-02, +-3.081053808183174814e-02, +-3.081685578805986453e-02, +-3.082312286568986495e-02, +-3.082933930923369148e-02, +-3.083550511328566474e-02, +-3.084162027252249430e-02, +-3.084768478170344178e-02, +-3.085369863566974485e-02, +-3.085966182934560612e-02, +-3.086557435773697525e-02, +-3.087143621593270784e-02, +-3.087724739910388191e-02, +-3.088300790250394015e-02, +-3.088871772146872113e-02, +-3.089437685141647322e-02, +-3.089998528784775392e-02, +-3.090554302634575951e-02, +-3.091105006257564153e-02, +-3.091650639228546438e-02, +-3.092191201130541425e-02, +-3.092726691554789284e-02, +-3.093257110100801344e-02, +-3.093782456376302503e-02, +-3.094302729997281884e-02, +-3.094817930587949115e-02, +-3.095328057780757230e-02, +-3.095833111216374917e-02, +-3.096333090543751734e-02, +-3.096827995420054630e-02, +-3.097317825510684935e-02, +-3.097802580489264490e-02, +-3.098282260037690111e-02, +-3.098756863846077736e-02, +-3.099226391612767625e-02, +-3.099690843044361835e-02, +-3.100150217855667314e-02, +-3.100604515769747951e-02, +-3.101053736517898202e-02, +-3.101497879839651070e-02, +-3.101936945482777763e-02, +-3.102370933203274159e-02, +-3.102799842765364621e-02, +-3.103223673941537392e-02, +-3.103642426512465483e-02, +-3.104056100267109375e-02, +-3.104464695002608424e-02, +-3.104868210524391187e-02, +-3.105266646646070300e-02, +-3.105660003189510132e-02, +-3.106048279984805621e-02, +-3.106431476870277070e-02, +-3.106809593692468410e-02, +-3.107182630306179472e-02, +-3.107550586574417059e-02, +-3.107913462368402588e-02, +-3.108271257567631063e-02, +-3.108623972059768037e-02, +-3.108971605740751959e-02, +-3.109314158514724091e-02, +-3.109651630294052449e-02, +-3.109984020999347412e-02, +-3.110311330559415235e-02, +-3.110633558911295865e-02, +-3.110950706000280633e-02, +-3.111262771779838010e-02, +-3.111569756211690629e-02, +-3.111871659265759080e-02, +-3.112168480920194866e-02, +-3.112460221161396021e-02, +-3.112746879983913431e-02, +-3.113028457390595513e-02, +-3.113304953392438332e-02, +-3.113576368008692807e-02, +-3.113842701266821694e-02, +-3.114103953202489172e-02, +-3.114360123859580276e-02, +-3.114611213290209221e-02, +-3.114857221554675690e-02, +-3.115098148721514443e-02, +-3.115333994867449524e-02, +-3.115564760077425485e-02, +-3.115790444444596283e-02, +-3.116011048070334993e-02, +-3.116226571064187670e-02, +-3.116437013543947240e-02, +-3.116642375635592099e-02, +-3.116842657473298250e-02, +-3.117037859199459776e-02, +-3.117227980964661777e-02, +-3.117413022927709859e-02, +-3.117592985255571159e-02, +-3.117767868123452746e-02, +-3.117937671714749587e-02, +-3.118102396221030664e-02, +-3.118262041842086510e-02, +-3.118416608785900060e-02, +-3.118566097268639370e-02, +-3.118710507514671493e-02, +-3.118849839756543743e-02, +-3.118984094235022556e-02, +-3.119113271199025830e-02, +-3.119237370905690240e-02, +-3.119356393620330639e-02, +-3.119470339616429999e-02, +-3.119579209175688678e-02, +-3.119683002587970988e-02, +-3.119781720151330526e-02, +-3.119875362171974434e-02, +-3.119963928964350833e-02, +-3.120047420851022532e-02, +-3.120125838162773890e-02, +-3.120199181238535180e-02, +-3.120267450425437405e-02, +-3.120330646078762690e-02, +-3.120388768561985562e-02, +-3.120441818246732710e-02, +-3.120489795512810735e-02, +-3.120532700748201646e-02, +-3.120570534349036834e-02, +-3.120603296719634545e-02, +-3.120630988272442979e-02, +-3.120653609428127723e-02, +-3.120671160615450315e-02, +-3.120683642271387948e-02, +-3.120691054841030418e-02, +-3.120693398777669297e-02, +-3.120690674542721602e-02, +-3.120682882605774547e-02, +-3.120670023444539407e-02, +-3.120652097544918124e-02, +-3.120629105400923864e-02, +-3.120601047514757684e-02, +-3.120567924396723536e-02, +-3.120529736565315349e-02, +-3.120486484547123004e-02, +-3.120438168876926710e-02, +-3.120384790097599850e-02, +-3.120326348760198848e-02, +-3.120262845423871570e-02, +-3.120194280655937125e-02, +-3.120120655031831391e-02, +-3.120041969135119858e-02, +-3.119958223557521212e-02, +-3.119869418898846974e-02, +-3.119775555767061170e-02, +-3.119676634778248067e-02, +-3.119572656556600376e-02, +-3.119463621734453948e-02, +-3.119349530952256547e-02, +-3.119230384858560565e-02, +-3.119106184110047655e-02, +-3.118976929371531509e-02, +-3.118842621315897137e-02, +-3.118703260624163323e-02, +-3.118558847985469437e-02, +-3.118409384097032763e-02, +-3.118254869664210949e-02, +-3.118095305400425676e-02, +-3.117930692027238992e-02, +-3.117761030274278367e-02, +-3.117586320879287692e-02, +-3.117406564588113063e-02, +-3.117221762154671200e-02, +-3.117031914340987614e-02, +-3.116837021917182732e-02, +-3.116637085661433035e-02, +-3.116432106360048429e-02, +-3.116222084807384121e-02, +-3.116007021805893007e-02, +-3.115786918166113528e-02, +-3.115561774706637407e-02, +-3.115331592254154749e-02, +-3.115096371643435655e-02, +-3.114856113717299688e-02, +-3.114610819326631488e-02, +-3.114360489330420673e-02, +-3.114105124595675789e-02, +-3.113844725997515911e-02, +-3.113579294419079393e-02, +-3.113308830751573483e-02, +-3.113033335894277789e-02, +-3.112752810754517915e-02, +-3.112467256247671357e-02, +-3.112176673297152585e-02, +-3.111881062834458839e-02, +-3.111580425799088251e-02, +-3.111274763138615132e-02, +-3.110964075808647991e-02, +-3.110648364772812535e-02, +-3.110327631002793303e-02, +-3.110001875478324296e-02, +-3.109671099187130694e-02, +-3.109335303124997896e-02, +-3.108994488295718089e-02, +-3.108648655711130498e-02, +-3.108297806391071422e-02, +-3.107941941363424193e-02, +-3.107581061664062283e-02, +-3.107215168336905850e-02, +-3.106844262433853046e-02, +-3.106468345014834834e-02, +-3.106087417147794516e-02, +-3.105701479908673512e-02, +-3.105310534381391235e-02, +-3.104914581657918643e-02, +-3.104513622838165482e-02, +-3.104107659030110739e-02, +-3.103696691349651371e-02, +-3.103280720920726862e-02, +-3.102859748875238383e-02, +-3.102433776353078973e-02, +-3.102002804502129729e-02, +-3.101566834478244883e-02, +-3.101125867445263945e-02, +-3.100679904575004767e-02, +-3.100228947047236477e-02, +-3.099772996049713833e-02, +-3.099312052778167501e-02, +-3.098846118436285324e-02, +-3.098375194235698793e-02, +-3.097899281396023982e-02, +-3.097418381144825122e-02, +-3.096932494717614601e-02, +-3.096441623357867878e-02, +-3.095945768316987756e-02, +-3.095444930854347396e-02, +-3.094939112237252848e-02, +-3.094428313740947567e-02, +-3.093912536648622466e-02, +-3.093391782251373248e-02, +-3.092866051848268058e-02, +-3.092335346746271155e-02, +-3.091799668260302586e-02, +-3.091259017713182330e-02, +-3.090713396435657012e-02, +-3.090162805766394349e-02, +-3.089607247051974828e-02, +-3.089046721646892049e-02, +-3.088481230913543707e-02, +-3.087910776222244427e-02, +-3.087335358951194542e-02, +-3.086754980486514782e-02, +-3.086169642222194587e-02, +-3.085579345560168427e-02, +-3.084984091910188478e-02, +-3.084383882689970685e-02, +-3.083778719325060841e-02, +-3.083168603248925138e-02, +-3.082553535902863781e-02, +-3.081933518736112293e-02, +-3.081308553205729106e-02, +-3.080678640776671889e-02, +-3.080043782921738915e-02, +-3.079403981121617978e-02, +-3.078759236864853782e-02, +-3.078109551647839615e-02, +-3.077454926974809019e-02, +-3.076795364357891999e-02, +-3.076130865317011631e-02, +-3.075461431379992311e-02, +-3.074787064082454280e-02, +-3.074107764967863934e-02, +-3.073423535587549438e-02, +-3.072734377500657352e-02, +-3.072040292274142922e-02, +-3.071341281482817265e-02, +-3.070637346709302606e-02, +-3.069928489544021880e-02, +-3.069214711585252844e-02, +-3.068496014439054537e-02, +-3.067772399719311677e-02, +-3.067043869047697199e-02, +-3.066310424053710765e-02, +-3.065572066374635390e-02, +-3.064828797655547166e-02, +-3.064080619549331558e-02, +-3.063327533716644208e-02, +-3.062569541825944236e-02, +-3.061806645553457468e-02, +-3.061038846583207657e-02, +-3.060266146606976240e-02, +-3.059488547324313093e-02, +-3.058706050442561511e-02, +-3.057918657676823512e-02, +-3.057126370749936942e-02, +-3.056329191392527164e-02, +-3.055527121342965433e-02, +-3.054720162347368886e-02, +-3.053908316159606104e-02, +-3.053091584541302653e-02, +-3.052269969261787660e-02, +-3.051443472098181245e-02, +-3.050612094835291471e-02, +-3.049775839265683394e-02, +-3.048934707189639853e-02, +-3.048088700415151758e-02, +-3.047237820757955559e-02, +-3.046382070041482593e-02, +-3.045521450096905572e-02, +-3.044655962763066423e-02, +-3.043785609886531102e-02, +-3.042910393321573634e-02, +-3.042030314930149054e-02, +-3.041145376581915263e-02, +-3.040255580154226783e-02, +-3.039360927532111165e-02, +-3.038461420608292926e-02, +-3.037557061283148105e-02, +-3.036647851464768788e-02, +-3.035733793068875683e-02, +-3.034814888018892015e-02, +-3.033891138245880040e-02, +-3.032962545688569142e-02, +-3.032029112293351328e-02, +-3.031090840014273244e-02, +-3.030147730813006340e-02, +-3.029199786658889892e-02, +-3.028247009528896999e-02, +-3.027289401407633543e-02, +-3.026326964287346516e-02, +-3.025359700167912572e-02, +-3.024387611056808881e-02, +-3.023410698969165866e-02, +-3.022428965927713429e-02, +-3.021442413962798640e-02, +-3.020451045112376026e-02, +-3.019454861422011388e-02, +-3.018453864944855430e-02, +-3.017448057741687131e-02, +-3.016437441880836720e-02, +-3.015422019438261658e-02, +-3.014401792497474128e-02, +-3.013376763149598625e-02, +-3.012346933493317142e-02, +-3.011312305634874717e-02, +-3.010272881688106500e-02, +-3.009228663774398196e-02, +-3.008179654022710356e-02, +-3.007125854569549228e-02, +-3.006067267558958436e-02, +-3.005003895142576570e-02, +-3.003935739479538305e-02, +-3.002862802736538939e-02, +-3.001785087087793791e-02, +-3.000702594715096150e-02, +-2.999615327807708329e-02, +-2.998523288562437647e-02, +-2.997426479183620124e-02, +-2.996324901883108682e-02, +-2.995218558880249904e-02, +-2.994107452401893049e-02, +-2.992991584682425099e-02, +-2.991870957963684366e-02, +-2.990745574495039250e-02, +-2.989615436533312257e-02, +-2.988480546342847655e-02, +-2.987340906195448675e-02, +-2.986196518370395556e-02, +-2.985047385154441374e-02, +-2.983893508841818989e-02, +-2.982734891734195246e-02, +-2.981571536140725440e-02, +-2.980403444378000935e-02, +-2.979230618770071365e-02, +-2.978053061648438735e-02, +-2.976870775352023421e-02, +-2.975683762227180826e-02, +-2.974492024627745090e-02, +-2.973295564914932299e-02, +-2.972094385457376212e-02, +-2.970888488631172331e-02, +-2.969677876819785262e-02, +-2.968462552414125738e-02, +-2.967242517812468741e-02, +-2.966017775420540584e-02, +-2.964788327651414479e-02, +-2.963554176925585135e-02, +-2.962315325670917751e-02, +-2.961071776322690002e-02, +-2.959823531323496626e-02, +-2.958570593123375364e-02, +-2.957312964179682757e-02, +-2.956050646957143757e-02, +-2.954783643927879483e-02, +-2.953511957571338872e-02, +-2.952235590374298335e-02, +-2.950954544830913101e-02, +-2.949668823442689811e-02, +-2.948378428718401861e-02, +-2.947083363174244144e-02, +-2.945783629333676573e-02, +-2.944479229727499370e-02, +-2.943170166893822881e-02, +-2.941856443378085273e-02, +-2.940538061733015407e-02, +-2.939215024518650882e-02, +-2.937887334302312359e-02, +-2.936554993658656298e-02, +-2.935218005169573305e-02, +-2.933876371424281801e-02, +-2.932530095019229149e-02, +-2.931179178558199899e-02, +-2.929823624652183600e-02, +-2.928463435919483743e-02, +-2.927098614985633104e-02, +-2.925729164483424627e-02, +-2.924355087052903437e-02, +-2.922976385341360950e-02, +-2.921593062003327232e-02, +-2.920205119700547067e-02, +-2.918812561102023667e-02, +-2.917415388883978777e-02, +-2.916013605729843305e-02, +-2.914607214330254548e-02, +-2.913196217383101638e-02, +-2.911780617593400997e-02, +-2.910360417673454533e-02, +-2.908935620342692485e-02, +-2.907506228327784437e-02, +-2.906072244362548421e-02, +-2.904633671187988389e-02, +-2.903190511552305661e-02, +-2.901742768210822596e-02, +-2.900290443926089104e-02, +-2.898833541467751851e-02, +-2.897372063612660073e-02, +-2.895906013144789251e-02, +-2.894435392855248396e-02, +-2.892960205542302946e-02, +-2.891480454011356380e-02, +-2.889996141074912747e-02, +-2.888507269552628015e-02, +-2.887013842271246231e-02, +-2.885515862064657461e-02, +-2.884013331773837077e-02, +-2.882506254246866573e-02, +-2.880994632338931133e-02, +-2.879478468912292227e-02, +-2.877957766836311201e-02, +-2.876432528987426379e-02, +-2.874902758249149939e-02, +-2.873368457512054039e-02, +-2.871829629673813139e-02, +-2.870286277639108249e-02, +-2.868738404319725113e-02, +-2.867186012634466430e-02, +-2.865629105509182040e-02, +-2.864067685876779679e-02, +-2.862501756677169121e-02, +-2.860931320857317689e-02, +-2.859356381371210357e-02, +-2.857776941179820951e-02, +-2.856193003251162460e-02, +-2.854604570560254767e-02, +-2.853011646089096548e-02, +-2.851414232826704129e-02, +-2.849812333769078179e-02, +-2.848205951919187059e-02, +-2.846595090286990065e-02, +-2.844979751889445060e-02, +-2.843359939750412721e-02, +-2.841735656900791149e-02, +-2.840106906378381257e-02, +-2.838473691227957202e-02, +-2.836836014501237235e-02, +-2.835193879256882668e-02, +-2.833547288560464214e-02, +-2.831896245484534502e-02, +-2.830240753108503177e-02, +-2.828580814518769082e-02, +-2.826916432808567262e-02, +-2.825247611078099061e-02, +-2.823574352434437759e-02, +-2.821896659991575754e-02, +-2.820214536870346844e-02, +-2.818527986198527541e-02, +-2.816837011110745470e-02, +-2.815141614748477294e-02, +-2.813441800260125386e-02, +-2.811737570800879049e-02, +-2.810028929532868217e-02, +-2.808315879624996569e-02, +-2.806598424253039029e-02, +-2.804876566599621979e-02, +-2.803150309854204533e-02, +-2.801419657213044187e-02, +-2.799684611879261695e-02, +-2.797945177062742886e-02, +-2.796201355980231298e-02, +-2.794453151855235198e-02, +-2.792700567918091417e-02, +-2.790943607405909146e-02, +-2.789182273562591449e-02, +-2.787416569638822769e-02, +-2.785646498892055054e-02, +-2.783872064586517467e-02, +-2.782093269993190371e-02, +-2.780310118389831345e-02, +-2.778522613060922450e-02, +-2.776730757297723312e-02, +-2.774934554398183692e-02, +-2.773134007667047221e-02, +-2.771329120415735869e-02, +-2.769519895962425579e-02, +-2.767706337631976182e-02, +-2.765888448755987258e-02, +-2.764066232672740195e-02, +-2.762239692727236351e-02, +-2.760408832271134608e-02, +-2.758573654662815205e-02, +-2.756734163267321458e-02, +-2.754890361456343445e-02, +-2.753042252608301974e-02, +-2.751189840108214310e-02, +-2.749333127347802427e-02, +-2.747472117725393778e-02, +-2.745606814646010460e-02, +-2.743737221521246744e-02, +-2.741863341769387730e-02, +-2.739985178815308037e-02, +-2.738102736090520725e-02, +-2.736216017033126988e-02, +-2.734325025087857089e-02, +-2.732429763706041223e-02, +-2.730530236345585227e-02, +-2.728626446470989661e-02, +-2.726718397553357445e-02, +-2.724806093070330365e-02, +-2.722889536506162972e-02, +-2.720968731351625092e-02, +-2.719043681104066704e-02, +-2.717114389267415164e-02, +-2.715180859352078410e-02, +-2.713243094875083389e-02, +-2.711301099359897035e-02, +-2.709354876336597315e-02, +-2.707404429341733754e-02, +-2.705449761918373927e-02, +-2.703490877616096869e-02, +-2.701527779990988212e-02, +-2.699560472605612438e-02, +-2.697588959029054850e-02, +-2.695613242836819926e-02, +-2.693633327610950312e-02, +-2.691649216939930728e-02, +-2.689660914418706000e-02, +-2.687668423648685578e-02, +-2.685671748237703285e-02, +-2.683670891800091912e-02, +-2.681665857956536808e-02, +-2.679656650334254556e-02, +-2.677643272566787927e-02, +-2.675625728294167213e-02, +-2.673604021162796773e-02, +-2.671578154825503607e-02, +-2.669548132941503352e-02, +-2.667513959176401675e-02, +-2.665475637202193576e-02, +-2.663433170697267205e-02, +-2.661386563346346268e-02, +-2.659335818840548663e-02, +-2.657280940877340333e-02, +-2.655221933160554007e-02, +-2.653158799400339579e-02, +-2.651091543313215115e-02, +-2.649020168622037708e-02, +-2.646944679055921942e-02, +-2.644865078350412679e-02, +-2.642781370247258843e-02, +-2.640693558494592447e-02, +-2.638601646846809937e-02, +-2.636505639064617296e-02, +-2.634405538914974185e-02, +-2.632301350171170964e-02, +-2.630193076612712816e-02, +-2.628080722025449845e-02, +-2.625964290201393200e-02, +-2.623843784938894794e-02, +-2.621719210042496376e-02, +-2.619590569323027376e-02, +-2.617457866597473759e-02, +-2.615321105689144554e-02, +-2.613180290427504285e-02, +-2.611035424648237152e-02, +-2.608886512193262994e-02, +-2.606733556910657140e-02, +-2.604576562654727784e-02, +-2.602415533285941385e-02, +-2.600250472670974020e-02, +-2.598081384682628808e-02, +-2.595908273199919528e-02, +-2.593731142107985957e-02, +-2.591549995298142450e-02, +-2.589364836667831793e-02, +-2.587175670120643589e-02, +-2.584982499566299691e-02, +-2.582785328920644830e-02, +-2.580584162105611576e-02, +-2.578379003049321994e-02, +-2.576169855685905494e-02, +-2.573956723955659470e-02, +-2.571739611804947298e-02, +-2.569518523186186190e-02, +-2.567293462057923178e-02, +-2.565064432384727561e-02, +-2.562831438137289086e-02, +-2.560594483292264606e-02, +-2.558353571832442178e-02, +-2.556108707746610267e-02, +-2.553859895029599036e-02, +-2.551607137682270973e-02, +-2.549350439711504240e-02, +-2.547089805130189552e-02, +-2.544825237957225317e-02, +-2.542556742217496821e-02, +-2.540284321941932433e-02, +-2.538007981167355806e-02, +-2.535727723936661085e-02, +-2.533443554298669964e-02, +-2.531155476308137586e-02, +-2.528863494025844136e-02, +-2.526567611518465428e-02, +-2.524267832858656871e-02, +-2.521964162124969155e-02, +-2.519656603401923198e-02, +-2.517345160779939708e-02, +-2.515029838355356193e-02, +-2.512710640230404052e-02, +-2.510387570513256117e-02, +-2.508060633317920132e-02, +-2.505729832764348741e-02, +-2.503395172978318053e-02, +-2.501056658091528259e-02, +-2.498714292241489485e-02, +-2.496368079571616161e-02, +-2.494018024231140634e-02, +-2.491664130375170066e-02, +-2.489306402164597615e-02, +-2.486944843766181190e-02, +-2.484579459352512232e-02, +-2.482210253101949440e-02, +-2.479837229198693718e-02, +-2.477460391832729536e-02, +-2.475079745199849912e-02, +-2.472695293501610617e-02, +-2.470307040945358967e-02, +-2.467914991744190462e-02, +-2.465519150117004635e-02, +-2.463119520288417630e-02, +-2.460716106488818750e-02, +-2.458308912954298292e-02, +-2.455897943926737062e-02, +-2.453483203653688757e-02, +-2.451064696388479888e-02, +-2.448642426390085572e-02, +-2.446216397923217656e-02, +-2.443786615258310493e-02, +-2.441353082671422411e-02, +-2.438915804444359223e-02, +-2.436474784864541346e-02, +-2.434030028225121073e-02, +-2.431581538824841016e-02, +-2.429129320968148251e-02, +-2.426673378965108277e-02, +-2.424213717131426873e-02, +-2.421750339788438997e-02, +-2.419283251263128556e-02, +-2.416812455888036823e-02, +-2.414337958001355755e-02, +-2.411859761946867631e-02, +-2.409377872073956151e-02, +-2.406892292737551967e-02, +-2.404403028298198255e-02, +-2.401910083122014983e-02, +-2.399413461580627085e-02, +-2.396913168051281740e-02, +-2.394409206916727970e-02, +-2.391901582565291590e-02, +-2.389390299390777017e-02, +-2.386875361792558173e-02, +-2.384356774175502500e-02, +-2.381834540950004964e-02, +-2.379308666531939134e-02, +-2.376779155342692920e-02, +-2.374246011809110629e-02, +-2.371709240363553337e-02, +-2.369168845443803476e-02, +-2.366624831493180370e-02, +-2.364077202960369883e-02, +-2.361525964299578464e-02, +-2.358971119970412408e-02, +-2.356412674437912899e-02, +-2.353850632172552193e-02, +-2.351284997650233272e-02, +-2.348715775352262433e-02, +-2.346142969765307312e-02, +-2.343566585381494718e-02, +-2.340986626698280185e-02, +-2.338403098218536438e-02, +-2.335816004450476033e-02, +-2.333225349907721430e-02, +-2.330631139109180100e-02, +-2.328033376579165953e-02, +-2.325432066847305662e-02, +-2.322827214448566074e-02, +-2.320218823923214657e-02, +-2.317606899816884725e-02, +-2.314991446680476905e-02, +-2.312372469070182041e-02, +-2.309749971547517267e-02, +-2.307123958679270503e-02, +-2.304494435037520578e-02, +-2.301861405199573732e-02, +-2.299224873748045850e-02, +-2.296584845270761149e-02, +-2.293941324360843428e-02, +-2.291294315616593594e-02, +-2.288643823641600336e-02, +-2.285989853044615230e-02, +-2.283332408439655778e-02, +-2.280671494445902711e-02, +-2.278007115687780831e-02, +-2.275339276794851109e-02, +-2.272667982401906789e-02, +-2.269993237148868609e-02, +-2.267315045680879174e-02, +-2.264633412648175970e-02, +-2.261948342706184348e-02, +-2.259259840515491849e-02, +-2.256567910741745508e-02, +-2.253872558055811451e-02, +-2.251173787133609744e-02, +-2.248471602656188992e-02, +-2.245766009309702049e-02, +-2.243057011785415389e-02, +-2.240344614779626528e-02, +-2.237628822993759439e-02, +-2.234909641134303834e-02, +-2.232187073912809613e-02, +-2.229461126045840721e-02, +-2.226731802255065701e-02, +-2.223999107267155342e-02, +-2.221263045813837503e-02, +-2.218523622631815573e-02, +-2.215780842462840988e-02, +-2.213034710053682352e-02, +-2.210285230156061251e-02, +-2.207532407526743845e-02, +-2.204776246927423952e-02, +-2.202016753124803189e-02, +-2.199253930890536501e-02, +-2.196487785001244308e-02, +-2.193718320238472949e-02, +-2.190945541388740134e-02, +-2.188169453243454798e-02, +-2.185390060599008005e-02, +-2.182607368256642491e-02, +-2.179821381022568894e-02, +-2.177032103707830096e-02, +-2.174239541128446251e-02, +-2.171443698105232981e-02, +-2.168644579463935296e-02, +-2.165842190035151618e-02, +-2.163036534654319207e-02, +-2.160227618161775567e-02, +-2.157415445402635981e-02, +-2.154600021226904180e-02, +-2.151781350489366529e-02, +-2.148959438049672863e-02, +-2.146134288772217485e-02, +-2.143305907526265458e-02, +-2.140474299185816595e-02, +-2.137639468629711631e-02, +-2.134801420741496217e-02, +-2.131960160409553801e-02, +-2.129115692526962686e-02, +-2.126268021991631341e-02, +-2.123417153706116597e-02, +-2.120563092577781514e-02, +-2.117705843518687472e-02, +-2.114845411445594528e-02, +-2.111981801280022816e-02, +-2.109115017948145696e-02, +-2.106245066380846992e-02, +-2.103371951513694979e-02, +-2.100495678286945847e-02, +-2.097616251645470151e-02, +-2.094733676538874587e-02, +-2.091847957921354542e-02, +-2.088959100751793668e-02, +-2.086067109993654592e-02, +-2.083171990615085775e-02, +-2.080273747588793146e-02, +-2.077372385892150425e-02, +-2.074467910507053758e-02, +-2.071560326420099352e-02, +-2.068649638622357609e-02, +-2.065735852109538279e-02, +-2.062818971881911004e-02, +-2.059899002944253973e-02, +-2.056975950305960782e-02, +-2.054049818980919692e-02, +-2.051120613987592045e-02, +-2.048188340348894992e-02, +-2.045253003092337499e-02, +-2.042314607249882258e-02, +-2.039373157858025490e-02, +-2.036428659957708123e-02, +-2.033481118594398368e-02, +-2.030530538818007061e-02, +-2.027576925682942136e-02, +-2.024620284247996560e-02, +-2.021660619576505155e-02, +-2.018697936736159326e-02, +-2.015732240799128494e-02, +-2.012763536842002501e-02, +-2.009791829945720837e-02, +-2.006817125195707596e-02, +-2.003839427681737562e-02, +-2.000858742498007325e-02, +-1.997875074743020105e-02, +-1.994888429519733192e-02, +-1.991898811935401484e-02, +-1.988906227101682953e-02, +-1.985910680134524153e-02, +-1.982912176154254941e-02, +-1.979910720285486120e-02, +-1.976906317657209020e-02, +-1.973898973402635551e-02, +-1.970888692659378966e-02, +-1.967875480569249158e-02, +-1.964859342278412954e-02, +-1.961840282937251517e-02, +-1.958818307700468594e-02, +-1.955793421726971862e-02, +-1.952765630179940926e-02, +-1.949734938226817954e-02, +-1.946701351039211575e-02, +-1.943664873793031836e-02, +-1.940625511668330264e-02, +-1.937583269849434478e-02, +-1.934538153524780271e-02, +-1.931490167887068080e-02, +-1.928439318133123512e-02, +-1.925385609463994493e-02, +-1.922329047084817347e-02, +-1.919269636204970833e-02, +-1.916207382037872498e-02, +-1.913142289801174345e-02, +-1.910074364716575837e-02, +-1.907003612009956425e-02, +-1.903930036911250304e-02, +-1.900853644654502267e-02, +-1.897774440477884017e-02, +-1.894692429623591121e-02, +-1.891607617337946398e-02, +-1.888520008871291331e-02, +-1.885429609478081470e-02, +-1.882336424416727882e-02, +-1.879240458949760564e-02, +-1.876141718343705619e-02, +-1.873040207869115098e-02, +-1.869935932800512526e-02, +-1.866828898416514337e-02, +-1.863719109999623785e-02, +-1.860606572836402683e-02, +-1.857491292217353096e-02, +-1.854373273436964523e-02, +-1.851252521793649367e-02, +-1.848129042589805385e-02, +-1.845002841131766422e-02, +-1.841873922729752797e-02, +-1.838742292697959080e-02, +-1.835607956354468051e-02, +-1.832470919021289557e-02, +-1.829331186024267530e-02, +-1.826188762693213216e-02, +-1.823043654361742802e-02, +-1.819895866367397808e-02, +-1.816745404051534063e-02, +-1.813592272759403934e-02, +-1.810436477840036973e-02, +-1.807278024646353023e-02, +-1.804116918535065076e-02, +-1.800953164866717776e-02, +-1.797786769005635041e-02, +-1.794617736319964116e-02, +-1.791446072181638455e-02, +-1.788271781966322554e-02, +-1.785094871053526794e-02, +-1.781915344826446798e-02, +-1.778733208672101176e-02, +-1.775548467981177478e-02, +-1.772361128148151541e-02, +-1.769171194571193123e-02, +-1.765978672652208231e-02, +-1.762783567796779097e-02, +-1.759585885414236342e-02, +-1.756385630917528182e-02, +-1.753182809723333874e-02, +-1.749977427251980452e-02, +-1.746769488927481587e-02, +-1.743559000177453272e-02, +-1.740345966433197097e-02, +-1.737130393129644387e-02, +-1.733912285705307976e-02, +-1.730691649602372761e-02, +-1.727468490266594742e-02, +-1.724242813147347508e-02, +-1.721014623697559448e-02, +-1.717783927373777234e-02, +-1.714550729636077700e-02, +-1.711315035948145213e-02, +-1.708076851777167240e-02, +-1.704836182593915533e-02, +-1.701593033872648292e-02, +-1.698347411091196205e-02, +-1.695099319730856285e-02, +-1.691848765276489017e-02, +-1.688595753216387899e-02, +-1.685340289042379716e-02, +-1.682082378249733640e-02, +-1.678822026337246226e-02, +-1.675559238807096396e-02, +-1.672294021164956110e-02, +-1.669026378919960182e-02, +-1.665756317584607751e-02, +-1.662483842674894810e-02, +-1.659208959710177858e-02, +-1.655931674213251270e-02, +-1.652651991710277560e-02, +-1.649369917730840809e-02, +-1.646085457807847097e-02, +-1.642798617477625456e-02, +-1.639509402279823447e-02, +-1.636217817757478973e-02, +-1.632923869456910301e-02, +-1.629627562927824305e-02, +-1.626328903723212385e-02, +-1.623027897399409447e-02, +-1.619724549516007514e-02, +-1.616418865635918869e-02, +-1.613110851325371548e-02, +-1.609800512153794494e-02, +-1.606487853693956691e-02, +-1.603172881521818666e-02, +-1.599855601216653572e-02, +-1.596536018360904599e-02, +-1.593214138540318195e-02, +-1.589889967343775801e-02, +-1.586563510363439219e-02, +-1.583234773194623288e-02, +-1.579903761435882611e-02, +-1.576570480688892911e-02, +-1.573234936558549901e-02, +-1.569897134652883594e-02, +-1.566557080583120751e-02, +-1.563214779963556858e-02, +-1.559870238411709305e-02, +-1.556523461548172879e-02, +-1.553174454996626187e-02, +-1.549823224383958462e-02, +-1.546469775340037281e-02, +-1.543114113497901993e-02, +-1.539756244493634303e-02, +-1.536396173966413786e-02, +-1.533033907558426640e-02, +-1.529669450914967858e-02, +-1.526302809684342530e-02, +-1.522933989517906428e-02, +-1.519562996070005466e-02, +-1.516189834998039714e-02, +-1.512814511962372668e-02, +-1.509437032626417992e-02, +-1.506057402656496742e-02, +-1.502675627721982050e-02, +-1.499291713495174913e-02, +-1.495905665651305234e-02, +-1.492517489868635389e-02, +-1.489127191828270094e-02, +-1.485734777214310458e-02, +-1.482340251713732890e-02, +-1.478943621016471505e-02, +-1.475544890815298077e-02, +-1.472144066805933932e-02, +-1.468741154686936320e-02, +-1.465336160159783595e-02, +-1.461929088928750481e-02, +-1.458519946701035234e-02, +-1.455108739186621036e-02, +-1.451695472098373831e-02, +-1.448280151151933731e-02, +-1.444862782065804534e-02, +-1.441443370561250326e-02, +-1.438021922362382916e-02, +-1.434598443196068510e-02, +-1.431172938791925274e-02, +-1.427745414882390304e-02, +-1.424315877202629067e-02, +-1.420884331490580334e-02, +-1.417450783486871521e-02, +-1.414015238934921911e-02, +-1.410577703580821914e-02, +-1.407138183173416331e-02, +-1.403696683464197847e-02, +-1.400253210207397930e-02, +-1.396807769159899223e-02, +-1.393360366081291060e-02, +-1.389911006733771104e-02, +-1.386459696882252554e-02, +-1.383006442294237859e-02, +-1.379551248739913777e-02, +-1.376094121992061173e-02, +-1.372635067826057272e-02, +-1.369174092019934813e-02, +-1.365711200354277795e-02, +-1.362246398612308035e-02, +-1.358779692579755762e-02, +-1.355311088044976707e-02, +-1.351840590798850626e-02, +-1.348368206634835767e-02, +-1.344893941348881787e-02, +-1.341417800739521347e-02, +-1.337939790607765855e-02, +-1.334459916757177109e-02, +-1.330978184993744130e-02, +-1.327494601126052130e-02, +-1.324009170965063410e-02, +-1.320521900324286672e-02, +-1.317032795019649170e-02, +-1.313541860869565057e-02, +-1.310049103694857150e-02, +-1.306554529318777920e-02, +-1.303058143567061879e-02, +-1.299559952267775528e-02, +-1.296059961251453535e-02, +-1.292558176350992391e-02, +-1.289054603401703844e-02, +-1.285549248241223651e-02, +-1.282042116709603864e-02, +-1.278533214649219159e-02, +-1.275022547904832056e-02, +-1.271510122323465074e-02, +-1.267995943754575416e-02, +-1.264480018049825120e-02, +-1.260962351063271529e-02, +-1.257442948651218279e-02, +-1.253921816672298045e-02, +-1.250398960987376094e-02, +-1.246874387459610302e-02, +-1.243348101954442828e-02, +-1.239820110339506093e-02, +-1.236290418484729987e-02, +-1.232759032262247846e-02, +-1.229225957546431318e-02, +-1.225691200213814905e-02, +-1.222154766143208546e-02, +-1.218616661215546869e-02, +-1.215076891314000387e-02, +-1.211535462323848344e-02, +-1.207992380132618185e-02, +-1.204447650629905837e-02, +-1.200901279707504953e-02, +-1.197353273259312879e-02, +-1.193803637181385657e-02, +-1.190252377371838616e-02, +-1.186699499730954274e-02, +-1.183145010161070800e-02, +-1.179588914566594496e-02, +-1.176031218854066418e-02, +-1.172471928932034869e-02, +-1.168911050711158618e-02, +-1.165348590104072282e-02, +-1.161784553025512444e-02, +-1.158218945392205067e-02, +-1.154651773122931067e-02, +-1.151083042138401590e-02, +-1.147512758361436506e-02, +-1.143940927716727805e-02, +-1.140367556131039427e-02, +-1.136792649533036222e-02, +-1.133216213853403646e-02, +-1.129638255024701700e-02, +-1.126058778981496589e-02, +-1.122477791660263929e-02, +-1.118895298999354575e-02, +-1.115311306939100085e-02, +-1.111725821421674296e-02, +-1.108138848391202608e-02, +-1.104550393793605340e-02, +-1.100960463576752639e-02, +-1.097369063690324144e-02, +-1.093776200085907167e-02, +-1.090181878716838665e-02, +-1.086586105538404207e-02, +-1.082988886507592341e-02, +-1.079390227583304496e-02, +-1.075790134726170230e-02, +-1.072188613898673870e-02, +-1.068585671065010352e-02, +-1.064981312191220532e-02, +-1.061375543245076346e-02, +-1.057768370196064331e-02, +-1.054159799015490402e-02, +-1.050549835676331881e-02, +-1.046938486153345220e-02, +-1.043325756422932779e-02, +-1.039711652463261825e-02, +-1.036096180254158193e-02, +-1.032479345777160759e-02, +-1.028861155015449273e-02, +-1.025241613953915311e-02, +-1.021620728579038587e-02, +-1.017998504879011855e-02, +-1.014374948843615835e-02, +-1.010750066464305950e-02, +-1.007123863734082740e-02, +-1.003496346647625090e-02, +-9.998675212011564825e-03, +-9.962373933925376332e-03, +-9.926059692211421093e-03, +-9.889732546879489647e-03, +-9.853392557955184539e-03, +-9.817039785478895095e-03, +-9.780674289507081121e-03, +-9.744296130110942367e-03, +-9.707905367377337932e-03, +-9.671502061407752371e-03, +-9.635086272319131825e-03, +-9.598658060242692275e-03, +-9.562217485324981184e-03, +-9.525764607726885241e-03, +-9.489299487624329454e-03, +-9.452822185206965697e-03, +-9.416332760679640285e-03, +-9.379831274260884769e-03, +-9.343317786183994930e-03, +-9.306792356695762700e-03, +-9.270255046057263720e-03, +-9.233705914543727244e-03, +-9.197145022443524789e-03, +-9.160572430059419138e-03, +-9.123988197707306666e-03, +-9.087392385716935514e-03, +-9.050785054431076393e-03, +-9.014166264206358720e-03, +-8.977536075411813449e-03, +-8.940894548430337180e-03, +-8.904241743657382441e-03, +-8.867577721501788621e-03, +-8.830902542384408069e-03, +-8.794216266739634386e-03, +-8.757518955013926173e-03, +-8.720810667666778482e-03, +-8.684091465169399213e-03, +-8.647361408005963326e-03, +-8.610620556672634457e-03, +-8.573868971677393175e-03, +-8.537106713540788122e-03, +-8.500333842794841402e-03, +-8.463550419983763284e-03, +-8.426756505663166377e-03, +-8.389952160400700534e-03, +-8.353137444774890591e-03, +-8.316312419376397508e-03, +-8.279477144806693042e-03, +-8.242631681678977418e-03, +-8.205776090616914709e-03, +-8.168910432255881843e-03, +-8.132034767241672762e-03, +-8.095149156231476809e-03, +-8.058253659892442369e-03, +-8.021348338903147926e-03, +-7.984433253952359991e-03, +-7.947508465738850961e-03, +-7.910574034972797305e-03, +-7.873630022373507079e-03, +-7.836676488671215357e-03, +-7.799713494605729422e-03, +-7.762741100927258824e-03, +-7.725759368395195004e-03, +-7.688768357779394123e-03, +-7.651768129858810968e-03, +-7.614758745422489476e-03, +-7.577740265268202713e-03, +-7.540712750203820702e-03, +-7.503676261045911372e-03, +-7.466630858620725009e-03, +-7.429576603762881072e-03, +-7.392513557316598115e-03, +-7.355441780134514169e-03, +-7.318361333078434415e-03, +-7.281272277018569633e-03, +-7.244174672833383552e-03, +-7.207068581410486230e-03, +-7.169954063645256684e-03, +-7.132831180441924490e-03, +-7.095699992712083994e-03, +-7.058560561376178363e-03, +-7.021412947362081457e-03, +-6.984257211606052784e-03, +-6.947093415051385293e-03, +-6.909921618649761919e-03, +-6.872741883359964089e-03, +-6.835554270148681832e-03, +-6.798358839989323762e-03, +-6.761155653863246129e-03, +-6.723944772758524632e-03, +-6.686726257670616222e-03, +-6.649500169601860362e-03, +-6.612266569561106068e-03, +-6.575025518564613959e-03, +-6.537777077634773434e-03, +-6.500521307801120086e-03, +-6.463258270098891541e-03, +-6.425988025570488101e-03, +-6.388710635264020776e-03, +-6.351426160234322632e-03, +-6.314134661541608712e-03, +-6.276836200252758000e-03, +-6.239530837440060949e-03, +-6.202218634182049550e-03, +-6.164899651562313378e-03, +-6.127573950670644511e-03, +-6.090241592601890012e-03, +-6.052902638456660565e-03, +-6.015557149340423210e-03, +-5.978205186364446769e-03, +-5.940846810644342946e-03, +-5.903482083301129710e-03, +-5.866111065460947668e-03, +-5.828733818254088622e-03, +-5.791350402816183851e-03, +-5.753960880287020165e-03, +-5.716565311811347416e-03, +-5.679163758537579196e-03, +-5.641756281619212700e-03, +-5.604342942213351615e-03, +-5.566923801481800729e-03, +-5.529498920589549782e-03, +-5.492068360706287011e-03, +-5.454632183004959334e-03, +-5.417190448662632767e-03, +-5.379743218859552208e-03, +-5.342290554780007930e-03, +-5.304832517611072704e-03, +-5.267369168543427523e-03, +-5.229900568771263594e-03, +-5.192426779491176453e-03, +-5.154947861903480012e-03, +-5.117463877210903789e-03, +-5.079974886619496692e-03, +-5.042480951337273073e-03, +-5.004982132575625658e-03, +-4.967478491547903073e-03, +-4.929970089470430729e-03, +-4.892456987560974725e-03, +-4.854939247040691679e-03, +-4.817416929131723528e-03, +-4.779890095059027670e-03, +-4.742358806049001320e-03, +-4.704823123330345407e-03, +-4.667283108132768733e-03, +-4.629738821688342797e-03, +-4.592190325230356869e-03, +-4.554637679993186160e-03, +-4.517080947213168718e-03, +-4.479520188127354696e-03, +-4.441955463974441368e-03, +-4.404386835993435653e-03, +-4.366814365424969042e-03, +-4.329238113510034715e-03, +-4.291658141490841891e-03, +-4.254074510609391624e-03, +-4.216487282109418824e-03, +-4.178896517233878644e-03, +-4.141302277226963091e-03, +-4.103704623332518966e-03, +-4.066103616795099969e-03, +-4.028499318858566776e-03, +-3.990891790767407167e-03, +-3.953281093765670037e-03, +-3.915667289096858711e-03, +-3.878050438004695087e-03, +-3.840430601731959978e-03, +-3.802807841521400802e-03, +-3.765182218614353347e-03, +-3.727553794252169445e-03, +-3.689922629674817489e-03, +-3.652288786121832623e-03, +-3.614652324830839192e-03, +-3.577013307039539174e-03, +-3.539371793983168632e-03, +-3.501727846896484416e-03, +-3.464081527012286606e-03, +-3.426432895562344857e-03, +-3.388782013776047482e-03, +-3.351128942881789231e-03, +-3.313473744105820303e-03, +-3.275816478672120141e-03, +-3.238157207803270005e-03, +-3.200495992719212639e-03, +-3.162832894638149556e-03, +-3.125167974775236099e-03, +-3.087501294343929746e-03, +-3.049832914554643972e-03, +-3.012162896615672419e-03, +-2.974491301731749943e-03, +-2.936818191105945632e-03, +-2.899143625937247639e-03, +-2.861467667422466603e-03, +-2.823790376754762438e-03, +-2.786111815124619247e-03, +-2.748432043718433259e-03, +-2.710751123719961752e-03, +-2.673069116308885405e-03, +-2.635386082661823112e-03, +-2.597702083951046546e-03, +-2.560017181345329747e-03, +-2.522331436009858045e-03, +-2.484644909105072300e-03, +-2.446957661788035001e-03, +-2.409269755211098860e-03, +-2.371581250522726905e-03, +-2.333892208866561804e-03, +-2.296202691382264165e-03, +-2.258512759204187644e-03, +-2.220822473462686492e-03, +-2.183131895282844435e-03, +-2.145441085785331631e-03, +-2.107750106085138752e-03, +-2.070059017292867187e-03, +-2.032367880513427996e-03, +-1.994676756846960018e-03, +-1.956985707387594309e-03, +-1.919294793224303941e-03, +-1.881604075440791246e-03, +-1.843913615114340732e-03, +-1.806223473317201652e-03, +-1.768533711115226033e-03, +-1.730844389568718476e-03, +-1.693155569731490725e-03, +-1.655467312651698244e-03, +-1.617779679370512716e-03, +-1.580092730923479249e-03, +-1.542406528339149195e-03, +-1.504721132640026446e-03, +-1.467036604841242316e-03, +-1.429353005951904078e-03, +-1.391670396973726694e-03, +-1.353988838902017927e-03, +-1.316308392724287093e-03, +-1.278629119421635218e-03, +-1.240951079967604273e-03, +-1.203274335328071570e-03, +-1.165598946462121028e-03, +-1.127924974320753835e-03, +-1.090252479847762541e-03, +-1.052581523978791045e-03, +-1.014912167642160546e-03, +-9.772444717575535372e-04, +-9.395784972373331717e-04, +-9.019143049852258471e-04, +-8.642519558972621861e-04, +-8.265915108604150610e-04, +-7.889330307539737120e-04, +-7.512765764481853497e-04, +-7.136222088052141324e-04, +-6.759699886777762639e-04, +-6.383199769105127016e-04, +-6.006722343388485761e-04, +-5.630268217888872648e-04, +-5.253838000782669109e-04, +-4.877432300148922873e-04, +-4.501051723978078496e-04, +-4.124696880162355612e-04, +-3.748368376504326600e-04, +-3.372066820703393869e-04, +-2.995792820369430750e-04, +-2.619546983009233849e-04, +-2.243329916036090313e-04, +-1.867142226756162695e-04, +-1.490984522382211429e-04, +-1.114857410020069406e-04, +-7.387614966781187145e-05, +-3.626973892537595288e-05, + 1.333430545288951487e-06, + 3.893329807525446935e-05, + 7.652980300572373559e-05, + 1.141228846892826772e-04, + 1.517124824890523738e-04, + 1.892985357788908333e-04, + 2.268809839441213530e-04, + 2.644597663806824771e-04, + 3.020348224964847813e-04, + 3.396060917100389778e-04, + 3.771735134518145556e-04, + 4.147370271632826199e-04, + 4.522965722982719042e-04, + 4.898520883216031085e-04, + 5.274035147104381895e-04, + 5.649507909533304367e-04, + 6.024938565515763639e-04, + 6.400326510178550900e-04, + 6.775671138775651598e-04, + 7.150971846679935037e-04, + 7.526228029390368652e-04, + 7.901439082533981504e-04, + 8.276604401857458456e-04, + 8.651723383239553209e-04, + 9.026795422681698020e-04, + 9.401819916321396860e-04, + 9.776796260418656615e-04, + 1.015172385136941602e-03, + 1.052660208569610985e-03, + 1.090143036006109350e-03, + 1.127620807125317938e-03, + 1.165093461620083813e-03, + 1.202560939196292006e-03, + 1.240023179574211007e-03, + 1.277480122487129922e-03, + 1.314931707682694866e-03, + 1.352377874922083226e-03, + 1.389818563980911798e-03, + 1.427253714648426880e-03, + 1.464683266728712295e-03, + 1.502107160039869299e-03, + 1.539525334414104836e-03, + 1.576937729698879272e-03, + 1.614344285755515149e-03, + 1.651744942460581711e-03, + 1.689139639704930178e-03, + 1.726528317395023418e-03, + 1.763910915451611912e-03, + 1.801287373811035668e-03, + 1.838657632424321947e-03, + 1.876021631258485440e-03, + 1.913379310295206838e-03, + 1.950730609532156648e-03, + 1.988075468982147560e-03, + 2.025413828674096136e-03, + 2.062745628652128127e-03, + 2.100070808976872358e-03, + 2.137389309724584043e-03, + 2.174701070987249303e-03, + 2.212006032873745261e-03, + 2.249304135508418435e-03, + 2.286595319032511554e-03, + 2.323879523603132689e-03, + 2.361156689394681638e-03, + 2.398426756597411402e-03, + 2.435689665418829843e-03, + 2.472945356082718697e-03, + 2.510193768830494901e-03, + 2.547434843919855335e-03, + 2.584668521626105192e-03, + 2.621894742241304057e-03, + 2.659113446075226511e-03, + 2.696324573454501276e-03, + 2.733528064723862380e-03, + 2.770723860245293078e-03, + 2.807911900398093064e-03, + 2.845092125580117072e-03, + 2.882264476206285175e-03, + 2.919428892710002662e-03, + 2.956585315542195960e-03, + 2.993733685172654448e-03, + 3.030873942088679537e-03, + 3.068006026796383980e-03, + 3.105129879819828846e-03, + 3.142245441702377906e-03, + 3.179352653004867933e-03, + 3.216451454308009560e-03, + 3.253541786210434415e-03, + 3.290623589330230348e-03, + 3.327696804303909277e-03, + 3.364761371787814044e-03, + 3.401817232456732804e-03, + 3.438864327005026165e-03, + 3.475902596146729969e-03, + 3.512931980614714816e-03, + 3.549952421161904279e-03, + 3.586963858560374575e-03, + 3.623966233602649543e-03, + 3.660959487100354497e-03, + 3.697943559885571475e-03, + 3.734918392809879507e-03, + 3.771883926745786195e-03, + 3.808840102584893240e-03, + 3.845786861240207098e-03, + 3.882724143644337034e-03, + 3.919651890750879865e-03, + 3.956570043533484508e-03, + 3.993478542987211576e-03, + 4.030377330127175514e-03, + 4.067266345989644857e-03, + 4.104145531632173195e-03, + 4.141014828132714466e-03, + 4.177874176590902315e-03, + 4.214723518127102067e-03, + 4.251562793883677076e-03, + 4.288391945023774417e-03, + 4.325210912732477611e-03, + 4.362019638216027735e-03, + 4.398818062703179106e-03, + 4.435606127443332720e-03, + 4.472383773708911957e-03, + 4.509150942793504688e-03, + 4.545907576013283151e-03, + 4.582653614706066331e-03, + 4.619389000232663502e-03, + 4.656113673975502062e-03, + 4.692827577339994498e-03, + 4.729530651753502749e-03, + 4.766222838666755481e-03, + 4.802904079552760414e-03, + 4.839574315907150398e-03, + 4.876233489249111493e-03, + 4.912881541120117483e-03, + 4.949518413085294243e-03, + 4.986144046732371091e-03, + 5.022758383673210821e-03, + 5.059361365541928390e-03, + 5.095952933997238872e-03, + 5.132533030720525836e-03, + 5.169101597417369645e-03, + 5.205658575816605495e-03, + 5.242203907671556806e-03, + 5.278737534758827857e-03, + 5.315259398879439157e-03, + 5.351769441858117080e-03, + 5.388267605544342503e-03, + 5.424753831811584062e-03, + 5.461228062557357127e-03, + 5.497690239704425968e-03, + 5.534140305199379550e-03, + 5.570578201013925632e-03, + 5.607003869144106672e-03, + 5.643417251611508069e-03, + 5.679818290461616237e-03, + 5.716206927766009568e-03, + 5.752583105620574268e-03, + 5.788946766146919887e-03, + 5.825297851491438236e-03, + 5.861636303826634788e-03, + 5.897962065349756505e-03, + 5.934275078284131921e-03, + 5.970575284878256936e-03, + 6.006862627407095860e-03, + 6.043137048170694504e-03, + 6.079398489495394485e-03, + 6.115646893733843632e-03, + 6.151882203264201487e-03, + 6.188104360491334527e-03, + 6.224313307846006914e-03, + 6.260508987785748727e-03, + 6.296691342794129981e-03, + 6.332860315381934162e-03, + 6.369015848085891017e-03, + 6.405157883470032239e-03, + 6.441286364124680988e-03, + 6.477401232667863960e-03, + 6.513502431743834267e-03, + 6.549589904024522534e-03, + 6.585663592208522953e-03, + 6.621723439022458510e-03, + 6.657769387219638312e-03, + 6.693801379581056782e-03, + 6.729819358915673823e-03, + 6.765823268059438164e-03, + 6.801813049876587539e-03, + 6.837788647258742289e-03, + 6.873750003125893293e-03, + 6.909697060425496438e-03, + 6.945629762133833512e-03, + 6.981548051254689476e-03, + 7.017451870820618810e-03, + 7.053341163891994024e-03, + 7.089215873558441135e-03, + 7.125075942937366021e-03, + 7.160921315175357814e-03, + 7.196751933447159341e-03, + 7.232567740957129496e-03, + 7.268368680937765253e-03, + 7.304154696651072101e-03, + 7.339925731387678468e-03, + 7.375681728467893029e-03, + 7.411422631241085419e-03, + 7.447148383085730461e-03, + 7.482858927410176650e-03, + 7.518554207651730222e-03, + 7.554234167278107114e-03, + 7.589898749785941104e-03, + 7.625547898702222764e-03, + 7.661181557583310667e-03, + 7.696799670016239367e-03, + 7.732402179617387135e-03, + 7.767989030033775263e-03, + 7.803560164942240605e-03, + 7.839115528050517173e-03, + 7.874655063096138927e-03, + 7.910178713847672294e-03, + 7.945686424103676204e-03, + 7.981178137694068184e-03, + 8.016653798479208420e-03, + 8.052113350350090584e-03, + 8.087556737229080819e-03, + 8.122983903069052117e-03, + 8.158394791854711378e-03, + 8.193789347601315720e-03, + 8.229167514355831270e-03, + 8.264529236196110906e-03, + 8.299874457232288977e-03, + 8.335203121605240864e-03, + 8.370515173488052296e-03, + 8.405810557084985452e-03, + 8.441089216632816430e-03, + 8.476351096399627888e-03, + 8.511596140685929665e-03, + 8.546824293823794896e-03, + 8.582035500178263401e-03, + 8.617229704145577471e-03, + 8.652406850155317311e-03, + 8.687566882669006327e-03, + 8.722709746180518781e-03, + 8.757835385216919399e-03, + 8.792943744337323661e-03, + 8.828034768134060059e-03, + 8.863108401231969274e-03, + 8.898164588289302762e-03, + 8.933203273996888349e-03, + 8.968224403079035761e-03, + 9.003227920292802833e-03, + 9.038213770429241040e-03, + 9.073181898312049354e-03, + 9.108132248798960287e-03, + 9.143064766780860386e-03, + 9.177979397182548307e-03, + 9.212876084962252562e-03, + 9.247754775112460718e-03, + 9.282615412659272341e-03, + 9.317457942662518700e-03, + 9.352282310216838285e-03, + 9.387088460450210975e-03, + 9.421876338525451630e-03, + 9.456645889639139768e-03, + 9.491397059023028160e-03, + 9.526129791942606478e-03, + 9.560844033698506425e-03, + 9.595539729625476508e-03, + 9.630216825093762881e-03, + 9.664875265507709423e-03, + 9.699514996307135109e-03, + 9.734135962966405931e-03, + 9.768738110995411547e-03, + 9.803321385938777721e-03, + 9.837885733376882866e-03, + 9.872431098925263035e-03, + 9.906957428234464472e-03, + 9.941464666991363733e-03, + 9.975952760917778175e-03, + 1.001042165577152067e-02, + 1.004487129734584622e-02, + 1.007930163147053269e-02, + 1.011371260401053990e-02, + 1.014810416086739560e-02, + 1.018247624797830216e-02, + 1.021682881131723113e-02, + 1.025116179689381478e-02, + 1.028547515075447713e-02, + 1.031976881898177302e-02, + 1.035404274769518435e-02, + 1.038829688305021974e-02, + 1.042253117123985613e-02, + 1.045674555849317525e-02, + 1.049093999107629689e-02, + 1.052511441529276059e-02, + 1.055926877748239109e-02, + 1.059340302402273469e-02, + 1.062751710132799933e-02, + 1.066161095585035391e-02, + 1.069568453407863939e-02, + 1.072973778253967676e-02, + 1.076377064779727825e-02, + 1.079778307645360910e-02, + 1.083177501514784487e-02, + 1.086574641055735452e-02, + 1.089969720939708633e-02, + 1.093362735842023231e-02, + 1.096753680441757590e-02, + 1.100142549421871500e-02, + 1.103529337469075396e-02, + 1.106914039273929062e-02, + 1.110296649530864710e-02, + 1.113677162938097286e-02, + 1.117055574197749722e-02, + 1.120431878015746945e-02, + 1.123806069101958988e-02, + 1.127178142170055276e-02, + 1.130548091937652079e-02, + 1.133915913126201137e-02, + 1.137281600461133475e-02, + 1.140645148671690264e-02, + 1.144006552491129425e-02, + 1.147365806656567601e-02, + 1.150722905909089613e-02, + 1.154077844993690871e-02, + 1.157430618659368270e-02, + 1.160781221659023740e-02, + 1.164129648749573018e-02, + 1.167475894691847454e-02, + 1.170819954250731237e-02, + 1.174161822195066325e-02, + 1.177501493297666499e-02, + 1.180838962335417977e-02, + 1.184174224089154862e-02, + 1.187507273343792018e-02, + 1.190838104888210063e-02, + 1.194166713515428316e-02, + 1.197493094022393512e-02, + 1.200817241210209822e-02, + 1.204139149883994182e-02, + 1.207458814852947586e-02, + 1.210776230930330974e-02, + 1.214091392933546246e-02, + 1.217404295684034257e-02, + 1.220714934007381333e-02, + 1.224023302733237388e-02, + 1.227329396695434581e-02, + 1.230633210731893121e-02, + 1.233934739684663939e-02, + 1.237233978399980214e-02, + 1.240530921728183293e-02, + 1.243825564523808741e-02, + 1.247117901645522844e-02, + 1.250407927956232075e-02, + 1.253695638322930260e-02, + 1.256981027616908136e-02, + 1.260264090713569297e-02, + 1.263544822492589786e-02, + 1.266823217837800310e-02, + 1.270099271637324494e-02, + 1.273372978783453117e-02, + 1.276644334172761554e-02, + 1.279913332706031359e-02, + 1.283179969288350021e-02, + 1.286444238829020578e-02, + 1.289706136241625806e-02, + 1.292965656444070716e-02, + 1.296222794358489229e-02, + 1.299477544911336463e-02, + 1.302729903033354730e-02, + 1.305979863659646918e-02, + 1.309227421729540312e-02, + 1.312472572186781754e-02, + 1.315715309979388278e-02, + 1.318955630059760742e-02, + 1.322193527384598645e-02, + 1.325428996915021390e-02, + 1.328662033616457259e-02, + 1.331892632458745243e-02, + 1.335120788416057323e-02, + 1.338346496467018691e-02, + 1.341569751594597071e-02, + 1.344790548786171588e-02, + 1.348008883033567119e-02, + 1.351224749332980909e-02, + 1.354438142685067056e-02, + 1.357649058094882559e-02, + 1.360857490571985330e-02, + 1.364063435130295071e-02, + 1.367266886788276285e-02, + 1.370467840568791867e-02, + 1.373666291499226269e-02, + 1.376862234611383844e-02, + 1.380055664941644972e-02, + 1.383246577530791374e-02, + 1.386434967424172472e-02, + 1.389620829671604080e-02, + 1.392804159327471966e-02, + 1.395984951450630202e-02, + 1.399163201104510444e-02, + 1.402338903357039541e-02, + 1.405512053280752460e-02, + 1.408682645952697918e-02, + 1.411850676454486260e-02, + 1.415016139872326759e-02, + 1.418179031296964640e-02, + 1.421339345823793843e-02, + 1.424497078552738709e-02, + 1.427652224588368476e-02, + 1.430804779039814012e-02, + 1.433954737020895487e-02, + 1.437102093649979956e-02, + 1.440246844050119442e-02, + 1.443388983348959168e-02, + 1.446528506678849968e-02, + 1.449665409176730674e-02, + 1.452799685984249370e-02, + 1.455931332247690536e-02, + 1.459060343118043224e-02, + 1.462186713750967572e-02, + 1.465310439306804526e-02, + 1.468431514950608793e-02, + 1.471549935852107041e-02, + 1.474665697185804578e-02, + 1.477778794130857332e-02, + 1.480889221871193803e-02, + 1.483996975595449665e-02, + 1.487102050497033333e-02, + 1.490204441774071326e-02, + 1.493304144629473140e-02, + 1.496401154270875743e-02, + 1.499495465910752334e-02, + 1.502587074766285023e-02, + 1.505675976059493021e-02, + 1.508762165017147466e-02, + 1.511845636870876725e-02, + 1.514926386857035762e-02, + 1.518004410216883954e-02, + 1.521079702196457238e-02, + 1.524152258046600553e-02, + 1.527222073023058908e-02, + 1.530289142386359082e-02, + 1.533353461401924279e-02, + 1.536415025339991740e-02, + 1.539473829475728958e-02, + 1.542529869089113125e-02, + 1.545583139465043013e-02, + 1.548633635893280867e-02, + 1.551681353668507048e-02, + 1.554726288090279435e-02, + 1.557768434463093453e-02, + 1.560807788096322049e-02, + 1.563844344304326367e-02, + 1.566878098406302919e-02, + 1.569909045726480129e-02, + 1.572937181593988404e-02, + 1.575962501342898989e-02, + 1.578985000312282949e-02, + 1.582004673846126863e-02, + 1.585021517293441068e-02, + 1.588035526008167025e-02, + 1.591046695349289039e-02, + 1.594055020680730517e-02, + 1.597060497371460483e-02, + 1.600063120795439803e-02, + 1.603062886331645120e-02, + 1.606059789364053941e-02, + 1.609053825281734143e-02, + 1.612044989478715953e-02, + 1.615033277354137667e-02, + 1.618018684312164113e-02, + 1.621001205761984573e-02, + 1.623980837117921031e-02, + 1.626957573799296675e-02, + 1.629931411230582314e-02, + 1.632902344841266618e-02, + 1.635870370066005650e-02, + 1.638835482344491723e-02, + 1.641797677121542565e-02, + 1.644756949847088479e-02, + 1.647713295976212938e-02, + 1.650666710969067585e-02, + 1.653617190290998171e-02, + 1.656564729412444287e-02, + 1.659509323809050044e-02, + 1.662450968961523903e-02, + 1.665389660355830193e-02, + 1.668325393483035060e-02, + 1.671258163839440397e-02, + 1.674187966926465529e-02, + 1.677114798250776626e-02, + 1.680038653324201700e-02, + 1.682959527663763222e-02, + 1.685877416791744382e-02, + 1.688792316235570787e-02, + 1.691704221527971785e-02, + 1.694613128206825733e-02, + 1.697519031815334506e-02, + 1.700421927901862862e-02, + 1.703321812020069936e-02, + 1.706218679728841933e-02, + 1.709112526592393433e-02, + 1.712003348180113349e-02, + 1.714891140066763034e-02, + 1.717775897832323276e-02, + 1.720657617062095607e-02, + 1.723536293346636383e-02, + 1.726411922281859829e-02, + 1.729284499468983563e-02, + 1.732154020514504317e-02, + 1.735020481030295769e-02, + 1.737883876633506547e-02, + 1.740744202946657368e-02, + 1.743601455597576858e-02, + 1.746455630219514651e-02, + 1.749306722450999496e-02, + 1.752154727935976292e-02, + 1.754999642323716927e-02, + 1.757841461268938935e-02, + 1.760680180431634448e-02, + 1.763515795477296061e-02, + 1.766348302076739193e-02, + 1.769177695906221440e-02, + 1.772003972647387057e-02, + 1.774827127987318662e-02, + 1.777647157618491430e-02, + 1.780464057238821673e-02, + 1.783277822551683142e-02, + 1.786088449265854292e-02, + 1.788895933095591487e-02, + 1.791700269760583553e-02, + 1.794501454986013184e-02, + 1.797299484502489289e-02, + 1.800094354046112219e-02, + 1.802886059358456070e-02, + 1.805674596186618644e-02, + 1.808459960283128817e-02, + 1.811242147406090519e-02, + 1.814021153319036669e-02, + 1.816796973791059630e-02, + 1.819569604596744244e-02, + 1.822339041516230981e-02, + 1.825105280335164240e-02, + 1.827868316844740576e-02, + 1.830628146841710782e-02, + 1.833384766128345889e-02, + 1.836138170512498571e-02, + 1.838888355807554581e-02, + 1.841635317832517743e-02, + 1.844379052411917672e-02, + 1.847119555375905178e-02, + 1.849856822560197803e-02, + 1.852590849806107220e-02, + 1.855321632960533693e-02, + 1.858049167876036148e-02, + 1.860773450410707630e-02, + 1.863494476428347729e-02, + 1.866212241798291885e-02, + 1.868926742395597349e-02, + 1.871637974100884630e-02, + 1.874345932800461009e-02, + 1.877050614386241434e-02, + 1.879752014755849132e-02, + 1.882450129812560796e-02, + 1.885144955465276051e-02, + 1.887836487628632987e-02, + 1.890524722222900952e-02, + 1.893209655174047518e-02, + 1.895891282413729798e-02, + 1.898569599879337821e-02, + 1.901244603513923409e-02, + 1.903916289266285866e-02, + 1.906584653090913350e-02, + 1.909249690948023812e-02, + 1.911911398803565337e-02, + 1.914569772629235583e-02, + 1.917224808402444303e-02, + 1.919876502106398694e-02, + 1.922524849729989257e-02, + 1.925169847267939674e-02, + 1.927811490720682600e-02, + 1.930449776094428707e-02, + 1.933084699401214912e-02, + 1.935716256658789533e-02, + 1.938344443890756968e-02, + 1.940969257126478123e-02, + 1.943590692401115511e-02, + 1.946208745755639152e-02, + 1.948823413236855720e-02, + 1.951434690897355453e-02, + 1.954042574795594733e-02, + 1.956647060995806917e-02, + 1.959248145568122726e-02, + 1.961845824588466514e-02, + 1.964440094138630508e-02, + 1.967030950306249137e-02, + 1.969618389184841709e-02, + 1.972202406873759320e-02, + 1.974782999478245926e-02, + 1.977360163109436603e-02, + 1.979933893884323545e-02, + 1.982504187925782438e-02, + 1.985071041362586330e-02, + 1.987634450329447966e-02, + 1.990194410966919861e-02, + 1.992750919421541755e-02, + 1.995303971845705654e-02, + 1.997853564397756437e-02, + 2.000399693241942597e-02, + 2.002942354548507137e-02, + 2.005481544493553994e-02, + 2.008017259259197579e-02, + 2.010549495033463890e-02, + 2.013078248010359214e-02, + 2.015603514389848264e-02, + 2.018125290377822609e-02, + 2.020643572186236678e-02, + 2.023158356032925265e-02, + 2.025669638141785675e-02, + 2.028177414742667745e-02, + 2.030681682071417554e-02, + 2.033182436369875348e-02, + 2.035679673885939719e-02, + 2.038173390873457627e-02, + 2.040663583592336461e-02, + 2.043150248308480202e-02, + 2.045633381293858466e-02, + 2.048112978826438155e-02, + 2.050589037190243477e-02, + 2.053061552675336174e-02, + 2.055530521577848824e-02, + 2.057995940199946680e-02, + 2.060457804849891161e-02, + 2.062916111841973932e-02, + 2.065370857496563392e-02, + 2.067822038140145965e-02, + 2.070269650105237280e-02, + 2.072713689730499090e-02, + 2.075154153360633455e-02, + 2.077591037346494460e-02, + 2.080024338044995924e-02, + 2.082454051819197446e-02, + 2.084880175038232586e-02, + 2.087302704077418150e-02, + 2.089721635318139356e-02, + 2.092136965147957731e-02, + 2.094548689960541721e-02, + 2.096956806155726022e-02, + 2.099361310139478964e-02, + 2.101762198323915698e-02, + 2.104159467127315539e-02, + 2.106553112974141398e-02, + 2.108943132295014802e-02, + 2.111329521526724567e-02, + 2.113712277112233737e-02, + 2.116091395500686867e-02, + 2.118466873147472132e-02, + 2.120838706514092259e-02, + 2.123206892068309898e-02, + 2.125571426284068172e-02, + 2.127932305641541330e-02, + 2.130289526627091035e-02, + 2.132643085733315624e-02, + 2.134992979459033810e-02, + 2.137339204309320409e-02, + 2.139681756795440426e-02, + 2.142020633434963892e-02, + 2.144355830751640615e-02, + 2.146687345275507738e-02, + 2.149015173542873774e-02, + 2.151339312096263098e-02, + 2.153659757484521417e-02, + 2.155976506262715503e-02, + 2.158289554992238318e-02, + 2.160598900240726788e-02, + 2.162904538582120437e-02, + 2.165206466596636403e-02, + 2.167504680870826345e-02, + 2.169799177997495596e-02, + 2.172089954575805171e-02, + 2.174377007211171497e-02, + 2.176660332515401031e-02, + 2.178939927106551822e-02, + 2.181215787609049744e-02, + 2.183487910653617026e-02, + 2.185756292877379450e-02, + 2.188020930923721685e-02, + 2.190281821442438548e-02, + 2.192538961089656596e-02, + 2.194792346527826496e-02, + 2.197041974425821553e-02, + 2.199287841458813855e-02, + 2.201529944308406109e-02, + 2.203768279662532067e-02, + 2.206002844215549513e-02, + 2.208233634668157336e-02, + 2.210460647727460759e-02, + 2.212683880106959544e-02, + 2.214903328526571583e-02, + 2.217118989712586405e-02, + 2.219330860397735264e-02, + 2.221538937321134236e-02, + 2.223743217228340424e-02, + 2.225943696871302349e-02, + 2.228140373008430028e-02, + 2.230333242404560976e-02, + 2.232522301830959510e-02, + 2.234707548065337224e-02, + 2.236888977891854716e-02, + 2.239066588101110145e-02, + 2.241240375490148248e-02, + 2.243410336862531815e-02, + 2.245576469028218169e-02, + 2.247738768803690668e-02, + 2.249897233011848019e-02, + 2.252051858482154167e-02, + 2.254202642050442268e-02, + 2.256349580559144363e-02, + 2.258492670857097095e-02, + 2.260631909799703729e-02, + 2.262767294248816188e-02, + 2.264898821072838103e-02, + 2.267026487146638417e-02, + 2.269150289351619387e-02, + 2.271270224575731508e-02, + 2.273386289713401343e-02, + 2.275498481665618605e-02, + 2.277606797339881348e-02, + 2.279711233650252161e-02, + 2.281811787517317239e-02, + 2.283908455868213436e-02, + 2.286001235636606413e-02, + 2.288090123762762801e-02, + 2.290175117193468321e-02, + 2.292256212882102726e-02, + 2.294333407788596429e-02, + 2.296406698879453062e-02, + 2.298476083127730385e-02, + 2.300541557513129456e-02, + 2.302603119021871120e-02, + 2.304660764646808413e-02, + 2.306714491387374874e-02, + 2.308764296249605358e-02, + 2.310810176246124240e-02, + 2.312852128396165191e-02, + 2.314890149725606569e-02, + 2.316924237266887107e-02, + 2.318954388059117980e-02, + 2.320980599147978718e-02, + 2.323002867585859457e-02, + 2.325021190431676363e-02, + 2.327035564751073204e-02, + 2.329045987616268701e-02, + 2.331052456106200849e-02, + 2.333054967306358307e-02, + 2.335053518308975382e-02, + 2.337048106212902265e-02, + 2.339038728123634878e-02, + 2.341025381153352333e-02, + 2.343008062420913473e-02, + 2.344986769051851661e-02, + 2.346961498178337310e-02, + 2.348932246939283708e-02, + 2.350899012480246741e-02, + 2.352861791953477638e-02, + 2.354820582517924699e-02, + 2.356775381339259665e-02, + 2.358726185589804861e-02, + 2.360672992448646645e-02, + 2.362615799101533756e-02, + 2.364554602740958147e-02, + 2.366489400566097745e-02, + 2.368420189782904917e-02, + 2.370346967603995797e-02, + 2.372269731248768942e-02, + 2.374188477943330045e-02, + 2.376103204920523501e-02, + 2.378013909419934846e-02, + 2.379920588687898728e-02, + 2.381823239977508971e-02, + 2.383721860548590823e-02, + 2.385616447667743625e-02, + 2.387506998608325895e-02, + 2.389393510650449429e-02, + 2.391275981080989363e-02, + 2.393154407193627542e-02, + 2.395028786288787639e-02, + 2.396899115673687547e-02, + 2.398765392662314047e-02, + 2.400627614575474161e-02, + 2.402485778740735128e-02, + 2.404339882492476099e-02, + 2.406189923171841646e-02, + 2.408035898126834051e-02, + 2.409877804712209567e-02, + 2.411715640289568280e-02, + 2.413549402227320798e-02, + 2.415379087900669866e-02, + 2.417204694691660674e-02, + 2.419026219989146853e-02, + 2.420843661188841131e-02, + 2.422657015693237617e-02, + 2.424466280911725252e-02, + 2.426271454260489277e-02, + 2.428072533162560151e-02, + 2.429869515047822920e-02, + 2.431662397353024155e-02, + 2.433451177521741074e-02, + 2.435235853004431156e-02, + 2.437016421258384261e-02, + 2.438792879747791326e-02, + 2.440565225943663874e-02, + 2.442333457323918669e-02, + 2.444097571373335387e-02, + 2.445857565583569454e-02, + 2.447613437453169394e-02, + 2.449365184487561561e-02, + 2.451112804199046674e-02, + 2.452856294106822016e-02, + 2.454595651737005030e-02, + 2.456330874622581276e-02, + 2.458061960303452656e-02, + 2.459788906326422150e-02, + 2.461511710245209081e-02, + 2.463230369620434540e-02, + 2.464944882019633188e-02, + 2.466655245017257414e-02, + 2.468361456194711340e-02, + 2.470063513140259223e-02, + 2.471761413449185749e-02, + 2.473455154723613186e-02, + 2.475144734572670008e-02, + 2.476830150612376741e-02, + 2.478511400465721604e-02, + 2.480188481762633096e-02, + 2.481861392139983122e-02, + 2.483530129241600173e-02, + 2.485194690718259963e-02, + 2.486855074227693752e-02, + 2.488511277434598754e-02, + 2.490163298010657916e-02, + 2.491811133634479203e-02, + 2.493454781991676431e-02, + 2.495094240774812719e-02, + 2.496729507683450103e-02, + 2.498360580424116226e-02, + 2.499987456710317871e-02, + 2.501610134262554838e-02, + 2.503228610808325150e-02, + 2.504842884082101456e-02, + 2.506452951825370243e-02, + 2.508058811786605113e-02, + 2.509660461721265057e-02, + 2.511257899391851345e-02, + 2.512851122567839185e-02, + 2.514440129025741558e-02, + 2.516024916549051971e-02, + 2.517605482928314542e-02, + 2.519181825961080978e-02, + 2.520753943451901208e-02, + 2.522321833212384096e-02, + 2.523885493061163096e-02, + 2.525444920823872313e-02, + 2.527000114333223871e-02, + 2.528551071428933664e-02, + 2.530097789957760912e-02, + 2.531640267773541120e-02, + 2.533178502737096910e-02, + 2.534712492716355986e-02, + 2.536242235586258845e-02, + 2.537767729228831287e-02, + 2.539288971533123010e-02, + 2.540805960395279076e-02, + 2.542318693718470524e-02, + 2.543827169412963760e-02, + 2.545331385396069554e-02, + 2.546831339592200288e-02, + 2.548327029932801260e-02, + 2.549818454356439154e-02, + 2.551305610808731958e-02, + 2.552788497242373944e-02, + 2.554267111617158914e-02, + 2.555741451899978117e-02, + 2.557211516064767862e-02, + 2.558677302092631292e-02, + 2.560138807971697184e-02, + 2.561596031697214310e-02, + 2.563048971271558035e-02, + 2.564497624704173417e-02, + 2.565941990011630369e-02, + 2.567382065217584802e-02, + 2.568817848352837954e-02, + 2.570249337455286082e-02, + 2.571676530569936073e-02, + 2.573099425748916549e-02, + 2.574518021051483418e-02, + 2.575932314544015361e-02, + 2.577342304300021467e-02, + 2.578747988400127700e-02, + 2.580149364932098066e-02, + 2.581546431990823162e-02, + 2.582939187678353482e-02, + 2.584327630103852580e-02, + 2.585711757383636275e-02, + 2.587091567641162243e-02, + 2.588467059007044588e-02, + 2.589838229619017412e-02, + 2.591205077621985819e-02, + 2.592567601168022789e-02, + 2.593925798416326853e-02, + 2.595279667533283152e-02, + 2.596629206692408279e-02, + 2.597974414074403354e-02, + 2.599315287867137378e-02, + 2.600651826265618777e-02, + 2.601984027472048489e-02, + 2.603311889695797757e-02, + 2.604635411153405355e-02, + 2.605954590068606386e-02, + 2.607269424672281621e-02, + 2.608579913202515102e-02, + 2.609886053904571929e-02, + 2.611187845030897223e-02, + 2.612485284841132779e-02, + 2.613778371602108047e-02, + 2.615067103587831107e-02, + 2.616351479079523021e-02, + 2.617631496365585911e-02, + 2.618907153741621349e-02, + 2.620178449510461929e-02, + 2.621445381982094938e-02, + 2.622707949473762970e-02, + 2.623966150309873027e-02, + 2.625219982822051684e-02, + 2.626469445349153414e-02, + 2.627714536237251222e-02, + 2.628955253839590153e-02, + 2.630191596516680969e-02, + 2.631423562636240471e-02, + 2.632651150573189422e-02, + 2.633874358709685504e-02, + 2.635093185435097643e-02, + 2.636307629146066034e-02, + 2.637517688246408462e-02, + 2.638723361147208776e-02, + 2.639924646266759642e-02, + 2.641121542030612501e-02, + 2.642314046871535940e-02, + 2.643502159229549689e-02, + 2.644685877551906580e-02, + 2.645865200293124123e-02, + 2.647040125914932457e-02, + 2.648210652886331604e-02, + 2.649376779683576891e-02, + 2.650538504790140096e-02, + 2.651695826696761835e-02, + 2.652848743901456419e-02, + 2.653997254909488263e-02, + 2.655141358233346210e-02, + 2.656281052392829578e-02, + 2.657416335914963151e-02, + 2.658547207334028759e-02, + 2.659673665191611761e-02, + 2.660795708036523682e-02, + 2.661913334424882011e-02, + 2.663026542920045314e-02, + 2.664135332092651409e-02, + 2.665239700520613542e-02, + 2.666339646789122816e-02, + 2.667435169490639871e-02, + 2.668526267224925752e-02, + 2.669612938598989529e-02, + 2.670695182227143805e-02, + 2.671772996730982508e-02, + 2.672846380739375693e-02, + 2.673915332888479254e-02, + 2.674979851821754698e-02, + 2.676039936189931329e-02, + 2.677095584651064189e-02, + 2.678146795870444893e-02, + 2.679193568520731039e-02, + 2.680235901281794592e-02, + 2.681273792840884948e-02, + 2.682307241892485650e-02, + 2.683336247138428179e-02, + 2.684360807287819103e-02, + 2.685380921057083439e-02, + 2.686396587169942798e-02, + 2.687407804357416080e-02, + 2.688414571357843411e-02, + 2.689416886916895164e-02, + 2.690414749787487306e-02, + 2.691408158729914277e-02, + 2.692397112511765028e-02, + 2.693381609907931351e-02, + 2.694361649700619324e-02, + 2.695337230679362844e-02, + 2.696308351641025364e-02, + 2.697275011389745070e-02, + 2.698237208737057705e-02, + 2.699194942501751890e-02, + 2.700148211509966270e-02, + 2.701097014595170084e-02, + 2.702041350598156574e-02, + 2.702981218367045413e-02, + 2.703916616757282357e-02, + 2.704847544631639247e-02, + 2.705774000860235173e-02, + 2.706695984320519471e-02, + 2.707613493897251256e-02, + 2.708526528482568113e-02, + 2.709435086975885143e-02, + 2.710339168284011183e-02, + 2.711238771321075949e-02, + 2.712133895008532122e-02, + 2.713024538275184486e-02, + 2.713910700057186806e-02, + 2.714792379298022404e-02, + 2.715669574948538847e-02, + 2.716542285966902850e-02, + 2.717410511318653701e-02, + 2.718274249976659201e-02, + 2.719133500921134053e-02, + 2.719988263139665879e-02, + 2.720838535627165614e-02, + 2.721684317385908783e-02, + 2.722525607425537938e-02, + 2.723362404763016859e-02, + 2.724194708422677039e-02, + 2.725022517436218039e-02, + 2.725845830842690831e-02, + 2.726664647688480103e-02, + 2.727478967027358037e-02, + 2.728288787920455163e-02, + 2.729094109436239202e-02, + 2.729894930650569179e-02, + 2.730691250646617718e-02, + 2.731483068514979629e-02, + 2.732270383353564702e-02, + 2.733053194267686184e-02, + 2.733831500369996240e-02, + 2.734605300780508855e-02, + 2.735374594626638345e-02, + 2.736139381043118865e-02, + 2.736899659172090105e-02, + 2.737655428163046981e-02, + 2.738406687172859066e-02, + 2.739153435365769551e-02, + 2.739895671913376157e-02, + 2.740633395994647101e-02, + 2.741366606795972785e-02, + 2.742095303511042290e-02, + 2.742819485340975555e-02, + 2.743539151494250178e-02, + 2.744254301186703146e-02, + 2.744964933641571778e-02, + 2.745671048089465272e-02, + 2.746372643768353605e-02, + 2.747069719923594944e-02, + 2.747762275807925925e-02, + 2.748450310681484557e-02, + 2.749133823811735974e-02, + 2.749812814473576866e-02, + 2.750487281949261578e-02, + 2.751157225528414949e-02, + 2.751822644508072901e-02, + 2.752483538192635262e-02, + 2.753139905893890391e-02, + 2.753791746930998527e-02, + 2.754439060630520242e-02, + 2.755081846326390069e-02, + 2.755720103359938361e-02, + 2.756353831079855557e-02, + 2.756983028842239017e-02, + 2.757607696010574289e-02, + 2.758227831955723658e-02, + 2.758843436055954251e-02, + 2.759454507696877321e-02, + 2.760061046271536714e-02, + 2.760663051180344690e-02, + 2.761260521831107248e-02, + 2.761853457639004347e-02, + 2.762441858026643687e-02, + 2.763025722423962868e-02, + 2.763605050268348046e-02, + 2.764179841004532276e-02, + 2.764750094084672538e-02, + 2.765315808968275141e-02, + 2.765876985122284887e-02, + 2.766433622020992092e-02, + 2.766985719146120015e-02, + 2.767533275986749919e-02, + 2.768076292039372069e-02, + 2.768614766807862490e-02, + 2.769148699803494068e-02, + 2.769678090544926835e-02, + 2.770202938558204500e-02, + 2.770723243376789144e-02, + 2.771239004541514381e-02, + 2.771750221600614503e-02, + 2.772256894109699499e-02, + 2.772759021631800505e-02, + 2.773256603737324702e-02, + 2.773749640004076131e-02, + 2.774238130017237305e-02, + 2.774722073369424030e-02, + 2.775201469660582704e-02, + 2.775676318498123546e-02, + 2.776146619496790147e-02, + 2.776612372278761814e-02, + 2.777073576473578290e-02, + 2.777530231718199419e-02, + 2.777982337656953807e-02, + 2.778429893941599532e-02, + 2.778872900231220411e-02, + 2.779311356192381080e-02, + 2.779745261498972261e-02, + 2.780174615832306864e-02, + 2.780599418881079046e-02, + 2.781019670341375316e-02, + 2.781435369916691533e-02, + 2.781846517317891621e-02, + 2.782253112263246772e-02, + 2.782655154478423307e-02, + 2.783052643696454567e-02, + 2.783445579657798513e-02, + 2.783833962110287066e-02, + 2.784217790809141030e-02, + 2.784597065516978068e-02, + 2.784971786003806807e-02, + 2.785341952047020245e-02, + 2.785707563431417608e-02, + 2.786068619949161329e-02, + 2.786425121399819377e-02, + 2.786777067590356927e-02, + 2.787124458335116239e-02, + 2.787467293455830886e-02, + 2.787805572781624011e-02, + 2.788139296149003479e-02, + 2.788468463401862565e-02, + 2.788793074391501467e-02, + 2.789113128976575956e-02, + 2.789428627023141094e-02, + 2.789739568404668232e-02, + 2.790045953001962092e-02, + 2.790347780703250624e-02, + 2.790645051404121169e-02, + 2.790937765007574928e-02, + 2.791225921423965556e-02, + 2.791509520571067160e-02, + 2.791788562373986177e-02, + 2.792063046765269618e-02, + 2.792332973684782949e-02, + 2.792598343079832207e-02, + 2.792859154905068253e-02, + 2.793115409122541928e-02, + 2.793367105701666936e-02, + 2.793614244619253145e-02, + 2.793856825859459408e-02, + 2.794094849413865378e-02, + 2.794328315281403158e-02, + 2.794557223468368407e-02, + 2.794781573988468215e-02, + 2.795001366862754147e-02, + 2.795216602119666299e-02, + 2.795427279795015263e-02, + 2.795633399931998775e-02, + 2.795834962581157310e-02, + 2.796031967800429244e-02, + 2.796224415655127263e-02, + 2.796412306217908178e-02, + 2.796595639568821498e-02, + 2.796774415795288959e-02, + 2.796948634992076077e-02, + 2.797118297261335859e-02, + 2.797283402712586603e-02, + 2.797443951462707731e-02, + 2.797599943635941180e-02, + 2.797751379363912563e-02, + 2.797898258785569414e-02, + 2.798040582047277292e-02, + 2.798178349302728532e-02, + 2.798311560712970700e-02, + 2.798440216446438158e-02, + 2.798564316678900377e-02, + 2.798683861593503214e-02, + 2.798798851380743594e-02, + 2.798909286238466382e-02, + 2.799015166371878610e-02, + 2.799116491993552600e-02, + 2.799213263323405837e-02, + 2.799305480588697506e-02, + 2.799393144024058325e-02, + 2.799476253871441972e-02, + 2.799554810380187539e-02, + 2.799628813806968528e-02, + 2.799698264415779667e-02, + 2.799763162478007342e-02, + 2.799823508272353614e-02, + 2.799879302084879937e-02, + 2.799930544208978009e-02, + 2.799977234945386084e-02, + 2.800019374602189665e-02, + 2.800056963494797213e-02, + 2.800090001946003992e-02, + 2.800118490285873757e-02, + 2.800142428851857060e-02, + 2.800161817988724294e-02, + 2.800176658048590325e-02, + 2.800186949390873897e-02, + 2.800192692382358003e-02, + 2.800193887397143741e-02, + 2.800190534816662455e-02, + 2.800182635029676084e-02, + 2.800170188432259122e-02, + 2.800153195427835737e-02, + 2.800131656427152019e-02, + 2.800105571848243019e-02, + 2.800074942116517057e-02, + 2.800039767664661353e-02, + 2.800000048932706903e-02, + 2.799955786367995178e-02, + 2.799906980425174996e-02, + 2.799853631566230627e-02, + 2.799795740260437732e-02, + 2.799733306984406381e-02, + 2.799666332222040810e-02, + 2.799594816464571687e-02, + 2.799518760210515517e-02, + 2.799438163965713502e-02, + 2.799353028243316624e-02, + 2.799263353563771761e-02, + 2.799169140454807470e-02, + 2.799070389451508920e-02, + 2.798967101096192650e-02, + 2.798859275938528693e-02, + 2.798746914535454877e-02, + 2.798630017451210136e-02, + 2.798508585257330691e-02, + 2.798382618532643806e-02, + 2.798252117863278543e-02, + 2.798117083842629679e-02, + 2.797977517071394832e-02, + 2.797833418157544272e-02, + 2.797684787716360477e-02, + 2.797531626370385396e-02, + 2.797373934749446817e-02, + 2.797211713490642404e-02, + 2.797044963238381338e-02, + 2.796873684644303470e-02, + 2.796697878367370230e-02, + 2.796517545073768166e-02, + 2.796332685436993953e-02, + 2.796143300137793677e-02, + 2.795949389864182608e-02, + 2.795750955311461158e-02, + 2.795547997182160765e-02, + 2.795340516186104601e-02, + 2.795128513040355187e-02, + 2.794911988469256370e-02, + 2.794690943204385103e-02, + 2.794465377984600707e-02, + 2.794235293556000463e-02, + 2.794000690671925857e-02, + 2.793761570092986868e-02, + 2.793517932587024147e-02, + 2.793269778929132960e-02, + 2.793017109901675329e-02, + 2.792759926294205441e-02, + 2.792498228903563667e-02, + 2.792232018533806481e-02, + 2.791961295996234216e-02, + 2.791686062109388286e-02, + 2.791406317699028986e-02, + 2.791122063598156997e-02, + 2.790833300647002635e-02, + 2.790540029693027585e-02, + 2.790242251590909980e-02, + 2.789939967202538854e-02, + 2.789633177397062708e-02, + 2.789321883050818740e-02, + 2.789006085047368577e-02, + 2.788685784277490642e-02, + 2.788360981639176339e-02, + 2.788031678037630398e-02, + 2.787697874385262550e-02, + 2.787359571601692732e-02, + 2.787016770613736510e-02, + 2.786669472355439783e-02, + 2.786317677768010773e-02, + 2.785961387799886294e-02, + 2.785600603406686998e-02, + 2.785235325551234029e-02, + 2.784865555203519527e-02, + 2.784491293340762494e-02, + 2.784112540947348419e-02, + 2.783729299014834138e-02, + 2.783341568541992939e-02, + 2.782949350534758004e-02, + 2.782552646006236988e-02, + 2.782151455976736645e-02, + 2.781745781473716345e-02, + 2.781335623531819290e-02, + 2.780920983192843032e-02, + 2.780501861505790123e-02, + 2.780078259526790399e-02, + 2.779650178319143655e-02, + 2.779217618953332136e-02, + 2.778780582506970229e-02, + 2.778339070064844360e-02, + 2.777893082718893222e-02, + 2.777442621568190773e-02, + 2.776987687718989253e-02, + 2.776528282284660906e-02, + 2.776064406385748973e-02, + 2.775596061149905938e-02, + 2.775123247711937940e-02, + 2.774645967213802689e-02, + 2.774164220804566788e-02, + 2.773678009640457090e-02, + 2.773187334884810035e-02, + 2.772692197708091083e-02, + 2.772192599287890552e-02, + 2.771688540808937840e-02, + 2.771180023463054240e-02, + 2.770667048449206721e-02, + 2.770149616973446166e-02, + 2.769627730248961153e-02, + 2.769101389496045687e-02, + 2.768570595942079771e-02, + 2.768035350821578672e-02, + 2.767495655376151983e-02, + 2.766951510854469970e-02, + 2.766402918512360365e-02, + 2.765849879612699083e-02, + 2.765292395425471977e-02, + 2.764730467227753674e-02, + 2.764164096303707227e-02, + 2.763593283944561566e-02, + 2.763018031448651046e-02, + 2.762438340121364452e-02, + 2.761854211275185586e-02, + 2.761265646229656839e-02, + 2.760672646311397929e-02, + 2.760075212854085427e-02, + 2.759473347198496823e-02, + 2.758867050692407480e-02, + 2.758256324690709638e-02, + 2.757641170555320126e-02, + 2.757021589655221649e-02, + 2.756397583366440932e-02, + 2.755769153072060509e-02, + 2.755136300162200000e-02, + 2.754499026034010895e-02, + 2.753857332091713336e-02, + 2.753211219746542343e-02, + 2.752560690416774175e-02, + 2.751905745527703437e-02, + 2.751246386511680547e-02, + 2.750582614808025003e-02, + 2.749914431863148545e-02, + 2.749241839130436155e-02, + 2.748564838070307464e-02, + 2.747883430150170961e-02, + 2.747197616844488516e-02, + 2.746507399634680324e-02, + 2.745812780009207130e-02, + 2.745113759463501182e-02, + 2.744410339500035628e-02, + 2.743702521628233956e-02, + 2.742990307364532795e-02, + 2.742273698232358670e-02, + 2.741552695762113773e-02, + 2.740827301491207194e-02, + 2.740097516963984833e-02, + 2.739363343731822387e-02, + 2.738624783353022299e-02, + 2.737881837392895298e-02, + 2.737134507423684415e-02, + 2.736382795024625003e-02, + 2.735626701781904840e-02, + 2.734866229288672457e-02, + 2.734101379145009725e-02, + 2.733332152957990493e-02, + 2.732558552341609812e-02, + 2.731780578916809948e-02, + 2.730998234311467210e-02, + 2.730211520160423164e-02, + 2.729420438105436414e-02, + 2.728624989795211050e-02, + 2.727825176885368547e-02, + 2.727021001038442902e-02, + 2.726212463923933724e-02, + 2.725399567218219493e-02, + 2.724582312604601972e-02, + 2.723760701773326326e-02, + 2.722934736421518329e-02, + 2.722104418253209687e-02, + 2.721269748979339084e-02, + 2.720430730317762932e-02, + 2.719587363993207843e-02, + 2.718739651737303933e-02, + 2.717887595288588296e-02, + 2.717031196392441852e-02, + 2.716170456801166727e-02, + 2.715305378273951201e-02, + 2.714435962576808650e-02, + 2.713562211482679551e-02, + 2.712684126771326698e-02, + 2.711801710229430618e-02, + 2.710914963650484094e-02, + 2.710023888834886541e-02, + 2.709128487589831935e-02, + 2.708228761729429557e-02, + 2.707324713074597475e-02, + 2.706416343453105916e-02, + 2.705503654699580388e-02, + 2.704586648655468370e-02, + 2.703665327169047297e-02, + 2.702739692095455087e-02, + 2.701809745296620754e-02, + 2.700875488641308816e-02, + 2.699936924005122071e-02, + 2.698994053270455107e-02, + 2.698046878326530382e-02, + 2.697095401069363532e-02, + 2.696139623401805699e-02, + 2.695179547233462342e-02, + 2.694215174480788302e-02, + 2.693246507067001763e-02, + 2.692273546922122757e-02, + 2.691296295982946452e-02, + 2.690314756193069173e-02, + 2.689328929502848506e-02, + 2.688338817869429312e-02, + 2.687344423256741652e-02, + 2.686345747635442496e-02, + 2.685342792983004545e-02, + 2.684335561283624286e-02, + 2.683324054528285485e-02, + 2.682308274714671759e-02, + 2.681288223847292859e-02, + 2.680263903937338613e-02, + 2.679235317002782307e-02, + 2.678202465068310958e-02, + 2.677165350165367635e-02, + 2.676123974332091440e-02, + 2.675078339613392794e-02, + 2.674028448060861152e-02, + 2.672974301732842020e-02, + 2.671915902694381451e-02, + 2.670853253017228812e-02, + 2.669786354779837834e-02, + 2.668715210067397828e-02, + 2.667639820971753548e-02, + 2.666560189591484983e-02, + 2.665476318031837280e-02, + 2.664388208404737390e-02, + 2.663295862828834668e-02, + 2.662199283429412741e-02, + 2.661098472338462723e-02, + 2.659993431694632898e-02, + 2.658884163643241913e-02, + 2.657770670336259689e-02, + 2.656652953932356689e-02, + 2.655531016596817534e-02, + 2.654404860501585056e-02, + 2.653274487825254407e-02, + 2.652139900753086241e-02, + 2.651001101476928995e-02, + 2.649858092195325407e-02, + 2.648710875113399754e-02, + 2.647559452442951530e-02, + 2.646403826402343035e-02, + 2.645243999216612824e-02, + 2.644079973117376137e-02, + 2.642911750342879715e-02, + 2.641739333137975432e-02, + 2.640562723754088029e-02, + 2.639381924449285197e-02, + 2.638196937488196045e-02, + 2.637007765142058632e-02, + 2.635814409688666191e-02, + 2.634616873412430268e-02, + 2.633415158604313078e-02, + 2.632209267561872248e-02, + 2.630999202589211911e-02, + 2.629784965997007673e-02, + 2.628566560102495522e-02, + 2.627343987229470781e-02, + 2.626117249708263476e-02, + 2.624886349875783093e-02, + 2.623651290075448145e-02, + 2.622412072657229892e-02, + 2.621168699977638808e-02, + 2.619921174399693700e-02, + 2.618669498292978612e-02, + 2.617413674033537696e-02, + 2.616153704004008443e-02, + 2.614889590593460350e-02, + 2.613621336197538211e-02, + 2.612348943218338951e-02, + 2.611072414064494890e-02, + 2.609791751151101930e-02, + 2.608506956899769511e-02, + 2.607218033738593205e-02, + 2.605924984102129735e-02, + 2.604627810431419527e-02, + 2.603326515173993647e-02, + 2.602021100783828006e-02, + 2.600711569721360361e-02, + 2.599397924453503844e-02, + 2.598080167453618861e-02, + 2.596758301201523497e-02, + 2.595432328183453277e-02, + 2.594102250892108344e-02, + 2.592768071826615645e-02, + 2.591429793492540032e-02, + 2.590087418401862060e-02, + 2.588740949073007128e-02, + 2.587390388030786498e-02, + 2.586035737806455584e-02, + 2.584677000937639704e-02, + 2.583314179968395144e-02, + 2.581947277449192155e-02, + 2.580576295936855280e-02, + 2.579201237994620602e-02, + 2.577822106192124291e-02, + 2.576438903105348829e-02, + 2.575051631316661524e-02, + 2.573660293414822831e-02, + 2.572264891994936742e-02, + 2.570865429658493809e-02, + 2.569461909013299322e-02, + 2.568054332673551030e-02, + 2.566642703259761071e-02, + 2.565227023398816003e-02, + 2.563807295723921978e-02, + 2.562383522874615502e-02, + 2.560955707496768638e-02, + 2.559523852242590741e-02, + 2.558087959770562192e-02, + 2.556648032745529805e-02, + 2.555204073838612810e-02, + 2.553756085727267033e-02, + 2.552304071095211346e-02, + 2.550848032632495321e-02, + 2.549387973035430882e-02, + 2.547923895006613815e-02, + 2.546455801254948401e-02, + 2.544983694495574558e-02, + 2.543507577449934456e-02, + 2.542027452845708677e-02, + 2.540543323416871377e-02, + 2.539055191903616046e-02, + 2.537563061052416913e-02, + 2.536066933615956087e-02, + 2.534566812353191562e-02, + 2.533062700029304823e-02, + 2.531554599415706402e-02, + 2.530042513290023734e-02, + 2.528526444436120235e-02, + 2.527006395644056796e-02, + 2.525482369710124742e-02, + 2.523954369436800030e-02, + 2.522422397632769972e-02, + 2.520886457112932535e-02, + 2.519346550698331119e-02, + 2.517802681216241636e-02, + 2.516254851500089249e-02, + 2.514703064389492773e-02, + 2.513147322730217847e-02, + 2.511587629374222030e-02, + 2.510023987179596516e-02, + 2.508456399010621993e-02, + 2.506884867737681558e-02, + 2.505309396237350231e-02, + 2.503729987392286013e-02, + 2.502146644091338482e-02, + 2.500559369229440887e-02, + 2.498968165707686137e-02, + 2.497373036433261223e-02, + 2.495773984319478792e-02, + 2.494171012285737246e-02, + 2.492564123257559258e-02, + 2.490953320166553950e-02, + 2.489338605950439445e-02, + 2.487719983553002973e-02, + 2.486097455924100863e-02, + 2.484471026019716144e-02, + 2.482840696801844396e-02, + 2.481206471238571812e-02, + 2.479568352304054382e-02, + 2.477926342978495344e-02, + 2.476280446248133038e-02, + 2.474630665105286356e-02, + 2.472977002548268008e-02, + 2.471319461581456683e-02, + 2.469658045215241543e-02, + 2.467992756466040605e-02, + 2.466323598356301786e-02, + 2.464650573914464737e-02, + 2.462973686175004562e-02, + 2.461292938178349585e-02, + 2.459608332970974684e-02, + 2.457919873605303798e-02, + 2.456227563139793887e-02, + 2.454531404638827033e-02, + 2.452831401172815909e-02, + 2.451127555818081658e-02, + 2.449419871656961789e-02, + 2.447708351777715119e-02, + 2.445992999274555768e-02, + 2.444273817247688205e-02, + 2.442550808803218079e-02, + 2.440823977053178245e-02, + 2.439093325115566230e-02, + 2.437358856114278313e-02, + 2.435620573179129653e-02, + 2.433878479445865731e-02, + 2.432132578056134600e-02, + 2.430382872157493476e-02, + 2.428629364903360857e-02, + 2.426872059453110200e-02, + 2.425110958971926980e-02, + 2.423346066630942611e-02, + 2.421577385607118563e-02, + 2.419804919083318184e-02, + 2.418028670248225515e-02, + 2.416248642296443469e-02, + 2.414464838428354368e-02, + 2.412677261850256979e-02, + 2.410885915774227395e-02, + 2.409090803418227275e-02, + 2.407291928006020584e-02, + 2.405489292767219386e-02, + 2.403682900937229028e-02, + 2.401872755757257852e-02, + 2.400058860474355363e-02, + 2.398241218341335551e-02, + 2.396419832616866058e-02, + 2.394594706565327316e-02, + 2.392765843456938490e-02, + 2.390933246567669701e-02, + 2.389096919179275330e-02, + 2.387256864579269042e-02, + 2.385413086060938700e-02, + 2.383565586923302657e-02, + 2.381714370471167339e-02, + 2.379859440015030803e-02, + 2.378000798871174326e-02, + 2.376138450361571855e-02, + 2.374272397813962862e-02, + 2.372402644561776019e-02, + 2.370529193944154178e-02, + 2.368652049305989757e-02, + 2.366771213997804352e-02, + 2.364886691375896535e-02, + 2.362998484802178445e-02, + 2.361106597644303806e-02, + 2.359211033275583624e-02, + 2.357311795075016370e-02, + 2.355408886427228995e-02, + 2.353502310722558125e-02, + 2.351592071356940761e-02, + 2.349678171732024964e-02, + 2.347760615255045299e-02, + 2.345839405338902978e-02, + 2.343914545402139837e-02, + 2.341986038868894629e-02, + 2.340053889168941872e-02, + 2.338118099737670347e-02, + 2.336178674016058804e-02, + 2.334235615450688112e-02, + 2.332288927493786010e-02, + 2.330338613603086945e-02, + 2.328384677241979520e-02, + 2.326427121879362861e-02, + 2.324465950989784008e-02, + 2.322501168053271031e-02, + 2.320532776555477364e-02, + 2.318560779987575635e-02, + 2.316585181846313873e-02, + 2.314605985633927387e-02, + 2.312623194858241110e-02, + 2.310636813032561354e-02, + 2.308646843675768792e-02, + 2.306653290312191129e-02, + 2.304656156471738757e-02, + 2.302655445689787139e-02, + 2.300651161507191386e-02, + 2.298643307470343844e-02, + 2.296631887131073135e-02, + 2.294616904046724998e-02, + 2.292598361780099139e-02, + 2.290576263899477688e-02, + 2.288550613978561007e-02, + 2.286521415596570739e-02, + 2.284488672338098880e-02, + 2.282452387793258014e-02, + 2.280412565557513732e-02, + 2.278369209231826190e-02, + 2.276322322422542552e-02, + 2.274271908741459097e-02, + 2.272217971805736564e-02, + 2.270160515237986537e-02, + 2.268099542666163898e-02, + 2.266035057723666743e-02, + 2.263967064049266995e-02, + 2.261895565287072932e-02, + 2.259820565086620436e-02, + 2.257742067102780706e-02, + 2.255660074995789396e-02, + 2.253574592431230664e-02, + 2.251485623080044102e-02, + 2.249393170618513987e-02, + 2.247297238728256444e-02, + 2.245197831096193766e-02, + 2.243094951414602647e-02, + 2.240988603381032993e-02, + 2.238878790698389798e-02, + 2.236765517074832191e-02, + 2.234648786223869532e-02, + 2.232528601864252477e-02, + 2.230404967720047912e-02, + 2.228277887520578940e-02, + 2.226147365000415504e-02, + 2.224013403899437885e-02, + 2.221876007962770780e-02, + 2.219735180940777750e-02, + 2.217590926589053935e-02, + 2.215443248668479484e-02, + 2.213292150945090839e-02, + 2.211137637190232347e-02, + 2.208979711180380362e-02, + 2.206818376697296594e-02, + 2.204653637527912574e-02, + 2.202485497464375108e-02, + 2.200313960303976191e-02, + 2.198139029849259171e-02, + 2.195960709907888303e-02, + 2.193779004292729234e-02, + 2.191593916821816743e-02, + 2.189405451318345713e-02, + 2.187213611610631936e-02, + 2.185018401532161370e-02, + 2.182819824921556490e-02, + 2.180617885622559635e-02, + 2.178412587484061108e-02, + 2.176203934360050607e-02, + 2.173991930109647405e-02, + 2.171776578597044843e-02, + 2.169557883691591860e-02, + 2.167335849267656642e-02, + 2.165110479204734525e-02, + 2.162881777387417812e-02, + 2.160649747705335397e-02, + 2.158414394053191285e-02, + 2.156175720330760423e-02, + 2.153933730442841171e-02, + 2.151688428299319139e-02, + 2.149439817815080450e-02, + 2.147187902910052681e-02, + 2.144932687509224639e-02, + 2.142674175542539153e-02, + 2.140412370945009302e-02, + 2.138147277656601147e-02, + 2.135878899622331920e-02, + 2.133607240792151361e-02, + 2.131332305121052054e-02, + 2.129054096568962912e-02, + 2.126772619100825157e-02, + 2.124487876686477483e-02, + 2.122199873300796222e-02, + 2.119908612923517705e-02, + 2.117614099539407574e-02, + 2.115316337138122352e-02, + 2.113015329714263563e-02, + 2.110711081267332284e-02, + 2.108403595801778413e-02, + 2.106092877326940296e-02, + 2.103778929857053059e-02, + 2.101461757411260400e-02, + 2.099141364013598979e-02, + 2.096817753692993558e-02, + 2.094490930483188310e-02, + 2.092160898422884205e-02, + 2.089827661555545418e-02, + 2.087491223929578352e-02, + 2.085151589598172386e-02, + 2.082808762619410559e-02, + 2.080462747056146741e-02, + 2.078113546976120482e-02, + 2.075761166451845982e-02, + 2.073405609560692586e-02, + 2.071046880384768904e-02, + 2.068684983011045628e-02, + 2.066319921531278858e-02, + 2.063951700041959103e-02, + 2.061580322644411545e-02, + 2.059205793444681895e-02, + 2.056828116553627295e-02, + 2.054447296086811883e-02, + 2.052063336164584167e-02, + 2.049676240912025327e-02, + 2.047286014458964132e-02, + 2.044892660939915188e-02, + 2.042496184494166714e-02, + 2.040096589265663965e-02, + 2.037693879403114708e-02, + 2.035288059059890686e-02, + 2.032879132394090418e-02, + 2.030467103568428522e-02, + 2.028051976750389757e-02, + 2.025633756112055900e-02, + 2.023212445830193523e-02, + 2.020788050086246707e-02, + 2.018360573066287078e-02, + 2.015930018961054407e-02, + 2.013496391965882704e-02, + 2.011059696280774467e-02, + 2.008619936110310478e-02, + 2.006177115663728902e-02, + 2.003731239154857291e-02, + 2.001282310802127845e-02, + 1.998830334828531272e-02, + 1.996375315461704214e-02, + 1.993917256933795332e-02, + 1.991456163481580832e-02, + 1.988992039346356225e-02, + 1.986524888773998077e-02, + 1.984054716014927583e-02, + 1.981581525324117854e-02, + 1.979105320961059566e-02, + 1.976626107189754719e-02, + 1.974143888278772491e-02, + 1.971658668501126421e-02, + 1.969170452134435395e-02, + 1.966679243460712351e-02, + 1.964185046766538101e-02, + 1.961687866342922901e-02, + 1.959187706485382430e-02, + 1.956684571493895117e-02, + 1.954178465672893814e-02, + 1.951669393331277938e-02, + 1.949157358782396127e-02, + 1.946642366344013275e-02, + 1.944124420338354947e-02, + 1.941603525092039373e-02, + 1.939079684936146838e-02, + 1.936552904206113868e-02, + 1.934023187241816835e-02, + 1.931490538387535885e-02, + 1.928954961991897338e-02, + 1.926416462407951058e-02, + 1.923875043993081291e-02, + 1.921330711109071193e-02, + 1.918783468122043853e-02, + 1.916233319402491433e-02, + 1.913680269325216884e-02, + 1.911124322269407497e-02, + 1.908565482618516593e-02, + 1.906003754760379407e-02, + 1.903439143087098245e-02, + 1.900871651995111877e-02, + 1.898301285885145573e-02, + 1.895728049162241635e-02, + 1.893151946235662256e-02, + 1.890572981519028292e-02, + 1.887991159430173205e-02, + 1.885406484391166995e-02, + 1.882818960828445271e-02, + 1.880228593172569157e-02, + 1.877635385858409528e-02, + 1.875039343325033206e-02, + 1.872440470015774086e-02, + 1.869838770378112053e-02, + 1.867234248863798574e-02, + 1.864626909928765799e-02, + 1.862016758033147729e-02, + 1.859403797641241696e-02, + 1.856788033221557291e-02, + 1.854169469246729970e-02, + 1.851548110193609181e-02, + 1.848923960543149420e-02, + 1.846297024780498702e-02, + 1.843667307394940974e-02, + 1.841034812879843371e-02, + 1.838399545732772103e-02, + 1.835761510455344303e-02, + 1.833120711553333504e-02, + 1.830477153536591919e-02, + 1.827830840919091038e-02, + 1.825181778218852233e-02, + 1.822529969958025867e-02, + 1.819875420662777840e-02, + 1.817218134863385001e-02, + 1.814558117094147369e-02, + 1.811895371893439133e-02, + 1.809229903803678818e-02, + 1.806561717371305345e-02, + 1.803890817146770395e-02, + 1.801217207684581087e-02, + 1.798540893543205607e-02, + 1.795861879285158905e-02, + 1.793180169476958630e-02, + 1.790495768689048806e-02, + 1.787808681495926463e-02, + 1.785118912475995231e-02, + 1.782426466211691971e-02, + 1.779731347289331689e-02, + 1.777033560299247708e-02, + 1.774333109835680641e-02, + 1.771630000496822108e-02, + 1.768924236884752976e-02, + 1.766215823605536001e-02, + 1.763504765269064897e-02, + 1.760791066489219084e-02, + 1.758074731883675634e-02, + 1.755355766074117099e-02, + 1.752634173686000441e-02, + 1.749909959348724953e-02, + 1.747183127695504240e-02, + 1.744453683363417218e-02, + 1.741721630993421296e-02, + 1.738986975230289930e-02, + 1.736249720722645232e-02, + 1.733509872122896561e-02, + 1.730767434087321713e-02, + 1.728022411275954850e-02, + 1.725274808352690592e-02, + 1.722524629985142455e-02, + 1.719771880844777473e-02, + 1.717016565606803088e-02, + 1.714258688950223708e-02, + 1.711498255557763679e-02, + 1.708735270115948474e-02, + 1.705969737315004078e-02, + 1.703201661848925338e-02, + 1.700431048415429816e-02, + 1.697657901715977219e-02, + 1.694882226455700705e-02, + 1.692104027343444353e-02, + 1.689323309091797856e-02, + 1.686540076416979256e-02, + 1.683754334038941106e-02, + 1.680966086681280613e-02, + 1.678175339071295152e-02, + 1.675382095939882687e-02, + 1.672586362021656961e-02, + 1.669788142054808369e-02, + 1.666987440781238575e-02, + 1.664184262946386342e-02, + 1.661378613299412804e-02, + 1.658570496593003707e-02, + 1.655759917583506102e-02, + 1.652946881030799633e-02, + 1.650131391698425945e-02, + 1.647313454353435680e-02, + 1.644493073766495339e-02, + 1.641670254711842872e-02, + 1.638845001967226267e-02, + 1.636017320313979534e-02, + 1.633187214536942905e-02, + 1.630354689424536735e-02, + 1.627519749768645274e-02, + 1.624682400364705487e-02, + 1.621842646011653274e-02, + 1.619000491511950537e-02, + 1.616155941671474847e-02, + 1.613309001299676609e-02, + 1.610459675209408720e-02, + 1.607607968217030642e-02, + 1.604753885142351164e-02, + 1.601897430808650602e-02, + 1.599038610042610026e-02, + 1.596177427674350460e-02, + 1.593313888537465500e-02, + 1.590447997468910288e-02, + 1.587579759309085473e-02, + 1.584709178901785864e-02, + 1.581836261094219168e-02, + 1.578961010736915777e-02, + 1.576083432683863736e-02, + 1.573203531792356086e-02, + 1.570321312923086271e-02, + 1.567436780940084998e-02, + 1.564549940710753539e-02, + 1.561660797105781338e-02, + 1.558769354999236904e-02, + 1.555875619268467548e-02, + 1.552979594794177791e-02, + 1.550081286460316260e-02, + 1.547180699154184803e-02, + 1.544277837766360600e-02, + 1.541372707190672917e-02, + 1.538465312324263992e-02, + 1.535555658067491204e-02, + 1.532643749324025945e-02, + 1.529729591000715885e-02, + 1.526813188007709356e-02, + 1.523894545258363056e-02, + 1.520973667669267386e-02, + 1.518050560160182604e-02, + 1.515125227654152452e-02, + 1.512197675077324791e-02, + 1.509267907359120725e-02, + 1.506335929432093407e-02, + 1.503401746232016153e-02, + 1.500465362697747836e-02, + 1.497526783771396981e-02, + 1.494586014398154028e-02, + 1.491643059526354467e-02, + 1.488697924107506426e-02, + 1.485750613096212605e-02, + 1.482801131450220411e-02, + 1.479849484130315446e-02, + 1.476895676100468610e-02, + 1.473939712327672173e-02, + 1.470981597782042120e-02, + 1.468021337436751020e-02, + 1.465058936268072952e-02, + 1.462094399255264160e-02, + 1.459127731380703910e-02, + 1.456158937629763520e-02, + 1.453188022990894654e-02, + 1.450214992455512060e-02, + 1.447239851018097996e-02, + 1.444262603676122261e-02, + 1.441283255430069431e-02, + 1.438301811283391324e-02, + 1.435318276242520882e-02, + 1.432332655316895589e-02, + 1.429344953518883743e-02, + 1.426355175863834417e-02, + 1.423363327370046581e-02, + 1.420369413058764942e-02, + 1.417373437954132231e-02, + 1.414375407083258603e-02, + 1.411375325476131593e-02, + 1.408373198165666952e-02, + 1.405369030187693380e-02, + 1.402362826580921991e-02, + 1.399354592386904857e-02, + 1.396344332650142211e-02, + 1.393332052417921296e-02, + 1.390317756740459647e-02, + 1.387301450670760591e-02, + 1.384283139264707793e-02, + 1.381262827581029515e-02, + 1.378240520681209801e-02, + 1.375216223629641132e-02, + 1.372189941493425977e-02, + 1.369161679342534819e-02, + 1.366131442249710407e-02, + 1.363099235290482318e-02, + 1.360065063543118742e-02, + 1.357028932088706272e-02, + 1.353990846011027087e-02, + 1.350950810396676742e-02, + 1.347908830334923133e-02, + 1.344864910917810061e-02, + 1.341819057240102933e-02, + 1.338771274399283388e-02, + 1.335721567495485804e-02, + 1.332669941631626012e-02, + 1.329616401913238238e-02, + 1.326560953448533038e-02, + 1.323503601348489586e-02, + 1.320444350726628600e-02, + 1.317383206699217386e-02, + 1.314320174385099314e-02, + 1.311255258905820106e-02, + 1.308188465385485937e-02, + 1.305119798950881045e-02, + 1.302049264731381176e-02, + 1.298976867858974565e-02, + 1.295902613468215281e-02, + 1.292826506696288791e-02, + 1.289748552682907015e-02, + 1.286668756570402174e-02, + 1.283587123503625478e-02, + 1.280503658630007674e-02, + 1.277418367099528163e-02, + 1.274331254064670245e-02, + 1.271242324680487042e-02, + 1.268151584104493072e-02, + 1.265059037496764696e-02, + 1.261964690019859968e-02, + 1.258868546838854199e-02, + 1.255770613121243336e-02, + 1.252670894037075967e-02, + 1.249569394758791481e-02, + 1.246466120461376184e-02, + 1.243361076322171271e-02, + 1.240254267521027215e-02, + 1.237145699240206446e-02, + 1.234035376664414235e-02, + 1.230923304980721320e-02, + 1.227809489378665388e-02, + 1.224693935050123229e-02, + 1.221576647189406319e-02, + 1.218457630993221609e-02, + 1.215336891660581502e-02, + 1.212214434392933776e-02, + 1.209090264394019863e-02, + 1.205964386869991418e-02, + 1.202836807029278657e-02, + 1.199707530082677956e-02, + 1.196576561243303284e-02, + 1.193443905726588976e-02, + 1.190309568750229537e-02, + 1.187173555534276614e-02, + 1.184035871301006466e-02, + 1.180896521275040870e-02, + 1.177755510683176250e-02, + 1.174612844754600177e-02, + 1.171468528720630460e-02, + 1.168322567814914642e-02, + 1.165174967273273007e-02, + 1.162025732333768838e-02, + 1.158874868236705810e-02, + 1.155722380224587578e-02, + 1.152568273542126272e-02, + 1.149412553436178312e-02, + 1.146255225155852660e-02, + 1.143096293952362494e-02, + 1.139935765079160869e-02, + 1.136773643791779906e-02, + 1.133609935347955865e-02, + 1.130444645007544664e-02, + 1.127277778032564730e-02, + 1.124109339687081287e-02, + 1.120939335237356241e-02, + 1.117767769951694828e-02, + 1.114594649100527843e-02, + 1.111419977956380582e-02, + 1.108243761793859493e-02, + 1.105066005889607413e-02, + 1.101886715522334623e-02, + 1.098705895972858053e-02, + 1.095523552523952615e-02, + 1.092339690460504380e-02, + 1.089154315069389492e-02, + 1.085967431639530550e-02, + 1.082779045461799462e-02, + 1.079589161829149456e-02, + 1.076397786036437446e-02, + 1.073204923380596983e-02, + 1.070010579160426273e-02, + 1.066814758676823231e-02, + 1.063617467232520417e-02, + 1.060418710132280187e-02, + 1.057218492682742567e-02, + 1.054016820192542163e-02, + 1.050813697972161065e-02, + 1.047609131334058773e-02, + 1.044403125592590839e-02, + 1.041195686063961859e-02, + 1.037986818066326082e-02, + 1.034776526919650198e-02, + 1.031564817945840318e-02, + 1.028351696468595734e-02, + 1.025137167813514570e-02, + 1.021921237308019530e-02, + 1.018703910281397625e-02, + 1.015485192064695917e-02, + 1.012265087990853359e-02, + 1.009043603394546226e-02, + 1.005820743612303829e-02, + 1.002596513982426975e-02, + 9.993709198450183295e-03, + 9.961439665419159761e-03, + 9.929156594167225583e-03, + 9.896860038148460464e-03, + 9.864550050833821235e-03, + 9.832226685712023087e-03, + 9.799889996288984467e-03, + 9.767540036087969321e-03, + 9.735176858648889736e-03, + 9.702800517529301672e-03, + 9.670411066303041467e-03, + 9.638008558561495659e-03, + 9.605593047911935647e-03, + 9.573164587979566403e-03, + 9.540723232404872342e-03, + 9.508269034845794401e-03, + 9.475802048975967562e-03, + 9.443322328486002809e-03, + 9.410829927082101087e-03, + 9.378324898487066380e-03, + 9.345807296439915396e-03, + 9.313277174694899185e-03, + 9.280734587023024493e-03, + 9.248179587210260053e-03, + 9.215612229059113453e-03, + 9.183032566386868656e-03, + 9.150440653026982452e-03, + 9.117836542828149440e-03, + 9.085220289654529283e-03, + 9.052591947385052809e-03, + 9.019951569914606837e-03, + 8.987299211152351489e-03, + 8.954634925023007355e-03, + 8.921958765466080077e-03, + 8.889270786436021671e-03, + 8.856571041901493274e-03, + 8.823859585846525674e-03, + 8.791136472269185306e-03, + 8.758401755181962831e-03, + 8.725655488612128752e-03, + 8.692897726601056876e-03, + 8.660128523204486256e-03, + 8.627347932491756174e-03, + 8.594556008546925044e-03, + 8.561752805467299360e-03, + 8.528938377364549128e-03, + 8.496112778363946322e-03, + 8.463276062604600802e-03, + 8.430428284238655409e-03, + 8.397569497432486388e-03, + 8.364699756365150812e-03, + 8.331819115229744874e-03, + 8.298927628231885997e-03, + 8.266025349590838678e-03, + 8.233112333538728650e-03, + 8.200188634320908915e-03, + 8.167254306195158298e-03, + 8.134309403432080435e-03, + 8.101353980315495820e-03, + 8.068388091141130355e-03, + 8.035411790217751593e-03, + 8.002425131866415867e-03, + 7.969428170420634824e-03, + 7.936420960225672866e-03, + 7.903403555639725020e-03, + 7.870376011032201302e-03, + 7.837338380785196026e-03, + 7.804290719292419215e-03, + 7.771233080959616402e-03, + 7.738165520203678718e-03, + 7.705088091453876284e-03, + 7.672000849150272667e-03, + 7.638903847745135214e-03, + 7.605797141701346915e-03, + 7.572680785493620705e-03, + 7.539554833607844606e-03, + 7.506419340540467638e-03, + 7.473274360799663819e-03, + 7.440119948903821216e-03, + 7.406956159382683397e-03, + 7.373783046776537578e-03, + 7.340600665636547693e-03, + 7.307409070523850601e-03, + 7.274208316010812025e-03, + 7.240998456679418466e-03, + 7.207779547122736968e-03, + 7.174551641943238516e-03, + 7.141314795754141569e-03, + 7.108069063178450164e-03, + 7.074814498849290451e-03, + 7.041551157409136133e-03, + 7.008279093510902218e-03, + 6.974998361816656112e-03, + 6.941709016998017477e-03, + 6.908411113736501706e-03, + 6.875104706722813021e-03, + 6.841789850657184480e-03, + 6.808466600248493268e-03, + 6.775135010215517506e-03, + 6.741795135285311678e-03, + 6.708447030194483393e-03, + 6.675090749688283517e-03, + 6.641726348520956592e-03, + 6.608353881454861328e-03, + 6.574973403261691850e-03, + 6.541584968720941598e-03, + 6.508188632621271161e-03, + 6.474784449758896714e-03, + 6.441372474938857236e-03, + 6.407952762974334499e-03, + 6.374525368686039840e-03, + 6.341090346903379034e-03, + 6.307647752462928331e-03, + 6.274197640209588055e-03, + 6.240740064995817585e-03, + 6.207275081681829648e-03, + 6.173802745134858265e-03, + 6.140323110230301064e-03, + 6.106836231850167572e-03, + 6.073342164884465259e-03, + 6.039840964229631348e-03, + 6.006332684789751457e-03, + 5.972817381475726065e-03, + 5.939295109205510771e-03, + 5.905765922903381641e-03, + 5.872229877500998591e-03, + 5.838687027935989850e-03, + 5.805137429153047444e-03, + 5.771581136103347796e-03, + 5.738018203743837017e-03, + 5.704448687038542361e-03, + 5.670872640956880865e-03, + 5.637290120475156423e-03, + 5.603701180574910054e-03, + 5.570105876244159371e-03, + 5.536504262476604939e-03, + 5.502896394271854924e-03, + 5.469282326634597631e-03, + 5.435662114575849635e-03, + 5.402035813111352031e-03, + 5.368403477262966884e-03, + 5.334765162057128994e-03, + 5.301120922526018561e-03, + 5.267470813706745872e-03, + 5.233814890641659209e-03, + 5.200153208377650098e-03, + 5.166485821966452542e-03, + 5.132812786464959615e-03, + 5.099134156934528699e-03, + 5.065449988441287667e-03, + 5.031760336055305684e-03, + 4.998065254851792767e-03, + 4.964364799909509046e-03, + 4.930659026312219327e-03, + 4.896947989147053780e-03, + 4.863231743505744796e-03, + 4.829510344483809933e-03, + 4.795783847180789573e-03, + 4.762052306699475837e-03, + 4.728315778147064441e-03, + 4.694574316633629875e-03, + 4.660827977273291137e-03, + 4.627076815183403351e-03, + 4.593320885484869151e-03, + 4.559560243301386678e-03, + 4.525794943759885863e-03, + 4.492025041990873636e-03, + 4.458250593127080844e-03, + 4.424471652304702574e-03, + 4.390688274662525592e-03, + 4.356900515342228448e-03, + 4.323108429487538401e-03, + 4.289312072245482152e-03, + 4.255511498764723982e-03, + 4.221706764197078431e-03, + 4.187897923695652405e-03, + 4.154085032417025730e-03, + 4.120268145518572733e-03, + 4.086447318160561261e-03, + 4.052622605504419689e-03, + 4.018794062714157664e-03, + 3.984961744954730253e-03, + 3.951125707393288687e-03, + 3.917286005198548048e-03, + 3.883442693540094248e-03, + 3.849595827589635203e-03, + 3.815745462519390570e-03, + 3.781891653503540677e-03, + 3.748034455716584175e-03, + 3.714173924334604818e-03, + 3.680310114534419714e-03, + 3.646443081493851678e-03, + 3.612572880390903934e-03, + 3.578699566404974861e-03, + 3.544823194715279822e-03, + 3.510943820502066340e-03, + 3.477061498945770591e-03, + 3.443176285227322279e-03, + 3.409288234527463324e-03, + 3.375397402027058812e-03, + 3.341503842907557129e-03, + 3.307607612349600015e-03, + 3.273708765534230365e-03, + 3.239807357642069535e-03, + 3.205903443853580156e-03, + 3.171997079348256882e-03, + 3.138088319305825952e-03, + 3.104177218904667027e-03, + 3.070263833323220483e-03, + 3.036348217738204115e-03, + 3.002430427326801491e-03, + 2.968510517263908081e-03, + 2.934588542724313534e-03, + 2.900664558880941806e-03, + 2.866738620906228094e-03, + 2.832810783970539370e-03, + 2.798881103243413843e-03, + 2.764949633892912172e-03, + 2.731016431084917935e-03, + 2.697081549984433474e-03, + 2.663145045753928866e-03, + 2.629206973554791722e-03, + 2.595267388545715627e-03, + 2.561326345883926155e-03, + 2.527383900724370757e-03, + 2.493440108219960750e-03, + 2.459495023520756000e-03, + 2.425548701775196575e-03, + 2.391601198128485550e-03, + 2.357652567723849280e-03, + 2.323702865701667442e-03, + 2.289752147199780076e-03, + 2.255800467352621092e-03, + 2.221847881292479850e-03, + 2.187894444148072177e-03, + 2.153940211045017854e-03, + 2.119985237106136386e-03, + 2.086029577450798644e-03, + 2.052073287195183612e-03, + 2.018116421451474334e-03, + 1.984159035329066158e-03, + 1.950201183932977287e-03, + 1.916242922365264103e-03, + 1.882284305723241338e-03, + 1.848325389101648309e-03, + 1.814366227589926921e-03, + 1.780406876274392459e-03, + 1.746447390236445952e-03, + 1.712487824554000549e-03, + 1.678528234299879506e-03, + 1.644568674543038294e-03, + 1.610609200347755138e-03, + 1.576649866773874092e-03, + 1.542690728876172949e-03, + 1.508731841704670290e-03, + 1.474773260305060896e-03, + 1.440815039717344885e-03, + 1.406857234977039852e-03, + 1.372899901114342340e-03, + 1.338943093154414728e-03, + 1.304986866116544103e-03, + 1.271031275015381068e-03, + 1.237076374859321032e-03, + 1.203122220651762098e-03, + 1.169168867390250497e-03, + 1.135216370066757493e-03, + 1.101264783666862325e-03, + 1.067314163170961097e-03, + 1.033364563552674736e-03, + 9.994160397802877207e-04, + 9.654686468151204865e-04, + 9.315224396127846007e-04, + 8.975774731225181482e-04, + 8.636338022865401977e-04, + 8.296914820412679267e-04, + 7.957505673157324938e-04, + 7.618111130328121018e-04, + 7.278731741083771046e-04, + 6.939368054515884874e-04, + 6.600020619640511055e-04, + 6.260689985410534692e-04, + 5.921376700699566191e-04, + 5.582081314316297187e-04, + 5.242804374988427243e-04, + 4.903546431375021587e-04, + 4.564308032058099875e-04, + 4.225089725545501189e-04, + 3.885892060262469551e-04, + 3.546715584564001894e-04, + 3.207560846720701399e-04, + 2.868428394923616827e-04, + 2.529318777287114573e-04, + 2.190232541842331980e-04, + 1.851170236540089237e-04, + 1.512132409242433685e-04, + 1.173119607735009345e-04, + 8.341323797110359315e-05, + 4.951712727836799416e-05, + 1.562368344776079716e-05, +-1.826703877681107706e-05, +-5.215498466084425745e-05, +-8.604009947800363015e-05, +-1.199223285117223227e-04, +-1.538016170537768220e-04, +-1.876779104058872057e-04, +-2.215511538784824459e-04, +-2.554212927913534787e-04, +-2.892882724743084280e-04, +-3.231520382659381057e-04, +-3.570125355152157522e-04, +-3.908697095802600701e-04, +-4.247235058291787334e-04, +-4.585738696397806402e-04, +-4.924207464004152482e-04, +-5.262640815087411914e-04, +-5.601038203733246660e-04, +-5.939399084122110473e-04, +-6.277722910545288594e-04, +-6.616009137392555185e-04, +-6.954257219160514102e-04, +-7.292466610449841770e-04, +-7.630636765973550966e-04, +-7.968767140544778371e-04, +-8.306857189092670297e-04, +-8.644906366650126871e-04, +-8.982914128360217250e-04, +-9.320879929482886505e-04, +-9.658803225382407058e-04, +-9.996683471543521375e-04, +-1.033452012355715217e-03, +-1.067231263713635213e-03, +-1.101006046810396564e-03, +-1.134776307240109540e-03, +-1.168541990608412077e-03, +-1.202303042533323704e-03, +-1.236059408643997619e-03, +-1.269811034582322496e-03, +-1.303557866001509328e-03, +-1.337299848567673069e-03, +-1.371036927958602927e-03, +-1.404769049864611728e-03, +-1.438496159988238415e-03, +-1.472218204044901816e-03, +-1.505935127762611167e-03, +-1.539646876881666437e-03, +-1.573353397155332484e-03, +-1.607054634349533309e-03, +-1.640750534243681693e-03, +-1.674441042629475941e-03, +-1.708126105312471115e-03, +-1.741805668110659160e-03, +-1.775479676856077643e-03, +-1.809148077393561401e-03, +-1.842810815581596463e-03, +-1.876467837292014737e-03, +-1.910119088410840767e-03, +-1.943764514837074617e-03, +-1.977404062484255497e-03, +-2.011037677279253321e-03, +-2.044665305163098114e-03, +-2.078286892090691618e-03, +-2.111902384031459981e-03, +-2.145511726969055819e-03, +-2.179114866900897212e-03, +-2.212711749839549411e-03, +-2.246302321811514003e-03, +-2.279886528858045963e-03, +-2.313464317034884341e-03, +-2.347035632413080157e-03, +-2.380600421077769518e-03, +-2.414158629129752650e-03, +-2.447710202684092243e-03, +-2.481255087871705491e-03, +-2.514793230838098612e-03, +-2.548324577744252428e-03, +-2.581849074766314010e-03, +-2.615366668096402898e-03, +-2.648877303941437125e-03, +-2.682380928524687961e-03, +-2.715877488084547826e-03, +-2.749366928875191657e-03, +-2.782849197167225688e-03, +-2.816324239246457539e-03, +-2.849792001415466566e-03, +-2.883252429992230401e-03, +-2.916705471311656708e-03, +-2.950151071724403575e-03, +-2.983589177597675748e-03, +-3.017019735314968761e-03, +-3.050442691276885991e-03, +-3.083857991899908307e-03, +-3.117265583617989579e-03, +-3.150665412881332398e-03, +-3.184057426157201227e-03, +-3.217441569929660461e-03, +-3.250817790700213233e-03, +-3.284186034987481365e-03, +-3.317546249326795531e-03, +-3.350898380271526231e-03, +-3.384242374391867748e-03, +-3.417578178275721117e-03, +-3.450905738528349358e-03, +-3.484225001773234853e-03, +-3.517535914650853340e-03, +-3.550838423820256405e-03, +-3.584132475957658992e-03, +-3.617418017758190600e-03, +-3.650694995933768949e-03, +-3.683963357215769285e-03, +-3.717223048352902379e-03, +-3.750474016112932338e-03, +-3.783716207281305737e-03, +-3.816949568662726319e-03, +-3.850174047079919868e-03, +-3.883389589374276925e-03, +-3.916596142406494202e-03, +-3.949793653055404946e-03, +-3.982982068219463427e-03, +-4.016161334815409635e-03, +-4.049331399779821858e-03, +-4.082492210067902375e-03, +-4.115643712654283234e-03, +-4.148785854532763447e-03, +-4.181918582717146851e-03, +-4.215041844239990516e-03, +-4.248155586154182470e-03, +-4.281259755531763821e-03, +-4.314354299464708518e-03, +-4.347439165064652736e-03, +-4.380514299463746618e-03, +-4.413579649813385332e-03, +-4.446635163285636745e-03, +-4.479680787072753100e-03, +-4.512716468386884783e-03, +-4.545742154460731717e-03, +-4.578757792547220699e-03, +-4.611763329920365827e-03, +-4.644758713874067198e-03, +-4.677743891723602776e-03, +-4.710718810804339490e-03, +-4.743683418473376885e-03, +-4.776637662107473259e-03, +-4.809581489105716270e-03, +-4.842514846887343259e-03, +-4.875437682893564439e-03, +-4.908349944586060630e-03, +-4.941251579448672007e-03, +-4.974142534986068440e-03, +-5.007022758724651544e-03, +-5.039892198212244170e-03, +-5.072750801018705361e-03, +-5.105598514735703967e-03, +-5.138435286976147064e-03, +-5.171261065375663997e-03, +-5.204075797591342645e-03, +-5.236879431302536060e-03, +-5.269671914210630886e-03, +-5.302453194039782013e-03, +-5.335223218535812759e-03, +-5.367981935467679849e-03, +-5.400729292626322425e-03, +-5.433465237825439199e-03, +-5.466189718901266412e-03, +-5.498902683713297740e-03, +-5.531604080143168872e-03, +-5.564293856096206616e-03, +-5.596971959499952645e-03, +-5.629638338305817565e-03, +-5.662292940487824097e-03, +-5.694935714043246333e-03, +-5.727566606993262852e-03, +-5.760185567381725935e-03, +-5.792792543276730627e-03, +-5.825387482769218278e-03, +-5.857970333974725149e-03, +-5.890541045031246967e-03, +-5.923099564101897384e-03, +-5.955645839372782947e-03, +-5.988179819054736085e-03, +-6.020701451381950745e-03, +-6.053210684613489004e-03, +-6.085707467032117068e-03, +-6.118191746945099777e-03, +-6.150663472683932584e-03, +-6.183122592605144741e-03, +-6.215569055089085852e-03, +-6.248002808541310189e-03, +-6.280423801392122189e-03, +-6.312831982096231247e-03, +-6.345227299133474226e-03, +-6.377609701008417342e-03, +-6.409979136251275564e-03, +-6.442335553416654072e-03, +-6.474678901085128592e-03, +-6.507009127861973843e-03, +-6.539326182378084676e-03, +-6.571630013289592696e-03, +-6.603920569278746641e-03, +-6.636197799052659038e-03, +-6.668461651344908224e-03, +-6.700712074914093319e-03, +-6.732949018545436246e-03, +-6.765172431049557011e-03, +-6.797382261263083467e-03, +-6.829578458049298355e-03, +-6.861760970296975314e-03, +-6.893929746921825634e-03, +-6.926084736865412324e-03, +-6.958225889095912518e-03, +-6.990353152607785281e-03, +-7.022466476422658047e-03, +-7.054565809588126193e-03, +-7.086651101179207608e-03, +-7.118722300297054655e-03, +-7.150779356070457310e-03, +-7.182822217654640136e-03, +-7.214850834232082802e-03, +-7.246865155012239927e-03, +-7.278865129232339054e-03, +-7.310850706156199301e-03, +-7.342821835075734500e-03, +-7.374778465309640013e-03, +-7.406720546204846427e-03, +-7.438648027135384179e-03, +-7.470560857503028875e-03, +-7.502458986737808692e-03, +-7.534342364296989572e-03, +-7.566210939666435237e-03, +-7.598064662359528196e-03, +-7.629903481917954707e-03, +-7.661727347911341350e-03, +-7.693536209938211731e-03, +-7.725330017624644670e-03, +-7.757108720625879687e-03, +-7.788872268624966524e-03, +-7.820620611334202360e-03, +-7.852353698494053680e-03, +-7.884071479873907412e-03, +-7.915773905271747402e-03, +-7.947460924514850034e-03, +-7.979132487459463310e-03, +-8.010788543990524091e-03, +-8.042429044022270448e-03, +-8.074053937498016156e-03, +-8.105663174390848047e-03, +-8.137256704702573035e-03, +-8.168834478465071200e-03, +-8.200396445739130055e-03, +-8.231942556615801099e-03, +-8.263472761215272244e-03, +-8.294987009687736917e-03, +-8.326485252212974253e-03, +-8.357967439001252885e-03, +-8.389433520292130519e-03, +-8.420883446355935387e-03, +-8.452317167492666428e-03, +-8.483734634032593508e-03, +-8.515135796336293847e-03, +-8.546520604794945186e-03, +-8.577889009830278952e-03, +-8.609240961893993918e-03, +-8.640576411469104087e-03, +-8.671895309068816324e-03, +-8.703197605237286694e-03, +-8.734483250549349848e-03, +-8.765752195611268421e-03, +-8.797004391059629752e-03, +-8.828239787562808250e-03, +-8.859458335819667824e-03, +-8.890659986560918437e-03, +-8.921844690548155071e-03, +-8.953012398574520386e-03, +-8.984163061464402883e-03, +-9.015296630074293854e-03, +-9.046413055291665020e-03, +-9.077512288036279978e-03, +-9.108594279259215817e-03, +-9.139658979943428643e-03, +-9.170706341104260112e-03, +-9.201736313788407007e-03, +-9.232748849075347181e-03, +-9.263743898076040248e-03, +-9.294721411934278935e-03, +-9.325681341825788756e-03, +-9.356623638958764047e-03, +-9.387548254573710102e-03, +-9.418455139944230739e-03, +-9.449344246375784503e-03, +-9.480215525207275409e-03, +-9.511068927809871593e-03, +-9.541904405587709609e-03, +-9.572721909977700144e-03, +-9.603521392450077923e-03, +-9.634302804508200480e-03, +-9.665066097687979169e-03, +-9.695811223559338068e-03, +-9.726538133724925081e-03, +-9.757246779820930721e-03, +-9.787937113516857399e-03, +-9.818609086516230655e-03, +-9.849262650555476797e-03, +-9.879897757405445985e-03, +-9.910514358869988022e-03, +-9.941112406787503200e-03, +-9.971691853029800851e-03, +-1.000225264950280017e-02, +-1.003279474814632206e-02, +-1.006331810093484547e-02, +-1.009382265987629652e-02, +-1.012430837701368096e-02, +-1.015477520442376741e-02, +-1.018522309421775532e-02, +-1.021565199854190982e-02, +-1.024606186957632489e-02, +-1.027645265953645859e-02, +-1.030682432067185975e-02, +-1.033717680526746382e-02, +-1.036751006564267524e-02, +-1.039782405415194157e-02, +-1.042811872318458004e-02, +-1.045839402516557728e-02, +-1.048864991255430562e-02, +-1.051888633784613808e-02, +-1.054910325357127227e-02, +-1.057930061229542945e-02, +-1.060947836661962386e-02, +-1.063963646918093808e-02, +-1.066977487265142154e-02, +-1.069989352973925098e-02, +-1.072999239318845471e-02, +-1.076007141577848061e-02, +-1.079013055032489871e-02, +-1.082016974967909412e-02, +-1.085018896672898525e-02, +-1.088018815439799163e-02, +-1.091016726564635400e-02, +-1.094012625346996864e-02, +-1.097006507090190694e-02, +-1.099998367101048292e-02, +-1.102988200690167321e-02, +-1.105976003171716543e-02, +-1.108961769863601836e-02, +-1.111945496087330884e-02, +-1.114927177168155599e-02, +-1.117906808434964740e-02, +-1.120884385220356598e-02, +-1.123859902860611590e-02, +-1.126833356695756093e-02, +-1.129804742069527752e-02, +-1.132774054329337664e-02, +-1.135741288826391110e-02, +-1.138706440915582957e-02, +-1.141669505955565829e-02, +-1.144630479308730679e-02, +-1.147589356341270454e-02, +-1.150546132423084338e-02, +-1.153500802927904384e-02, +-1.156453363233193865e-02, +-1.159403808720224117e-02, +-1.162352134774041930e-02, +-1.165298336783540840e-02, +-1.168242410141360349e-02, +-1.171184350244022961e-02, +-1.174124152491805642e-02, +-1.177061812288881723e-02, +-1.179997325043212995e-02, +-1.182930686166601929e-02, +-1.185861891074758284e-02, +-1.188790935187175601e-02, +-1.191717813927289579e-02, +-1.194642522722332359e-02, +-1.197565057003498711e-02, +-1.200485412205767356e-02, +-1.203403583768108444e-02, +-1.206319567133324472e-02, +-1.209233357748184731e-02, +-1.212144951063310987e-02, +-1.215054342533306540e-02, +-1.217961527616663077e-02, +-1.220866501775819991e-02, +-1.223769260477142358e-02, +-1.226669799190999340e-02, +-1.229568113391645706e-02, +-1.232464198557352807e-02, +-1.235358050170361037e-02, +-1.238249663716860412e-02, +-1.241139034687038269e-02, +-1.244026158575056717e-02, +-1.246911030879133998e-02, +-1.249793647101418714e-02, +-1.252674002748142661e-02, +-1.255552093329509629e-02, +-1.258427914359763235e-02, +-1.261301461357166274e-02, +-1.264172729844071155e-02, +-1.267041715346813729e-02, +-1.269908413395848430e-02, +-1.272772819525623371e-02, +-1.275634929274723980e-02, +-1.278494738185760246e-02, +-1.281352241805424133e-02, +-1.284207435684548912e-02, +-1.287060315377991718e-02, +-1.289910876444783257e-02, +-1.292759114448011407e-02, +-1.295605024954899105e-02, +-1.298448603536775034e-02, +-1.301289845769144742e-02, +-1.304128747231595234e-02, +-1.306965303507907211e-02, +-1.309799510185952545e-02, +-1.312631362857837568e-02, +-1.315460857119759783e-02, +-1.318287988572129643e-02, +-1.321112752819504979e-02, +-1.323935145470672529e-02, +-1.326755162138555134e-02, +-1.329572798440338023e-02, +-1.332388049997339403e-02, +-1.335200912435158260e-02, +-1.338011381383563680e-02, +-1.340819452476546547e-02, +-1.343625121352379041e-02, +-1.346428383653513854e-02, +-1.349229235026699024e-02, +-1.352027671122900919e-02, +-1.354823687597348988e-02, +-1.357617280109531255e-02, +-1.360408444323245834e-02, +-1.363197175906517497e-02, +-1.365983470531703312e-02, +-1.368767323875406602e-02, +-1.371548731618579993e-02, +-1.374327689446440751e-02, +-1.377104193048528727e-02, +-1.379878238118689877e-02, +-1.382649820355120844e-02, +-1.385418935460363057e-02, +-1.388185579141247399e-02, +-1.390949747108977640e-02, +-1.393711435079088116e-02, +-1.396470638771524046e-02, +-1.399227353910523913e-02, +-1.401981576224761022e-02, +-1.404733301447231436e-02, +-1.407482525315372976e-02, +-1.410229243570967732e-02, +-1.412973451960204858e-02, +-1.415715146233675024e-02, +-1.418454322146414995e-02, +-1.421190975457818813e-02, +-1.423925101931766343e-02, +-1.426656697336509474e-02, +-1.429385757444802743e-02, +-1.432112278033751546e-02, +-1.434836254884989774e-02, +-1.437557683784597765e-02, +-1.440276560523064478e-02, +-1.442992880895423158e-02, +-1.445706640701123133e-02, +-1.448417835744112390e-02, +-1.451126461832821964e-02, +-1.453832514780211554e-02, +-1.456535990403683492e-02, +-1.459236884525212490e-02, +-1.461935192971215193e-02, +-1.464630911572712725e-02, +-1.467324036165176121e-02, +-1.470014562588645851e-02, +-1.472702486687677177e-02, +-1.475387804311422725e-02, +-1.478070511313522850e-02, +-1.480750603552234007e-02, +-1.483428076890330911e-02, +-1.486102927195170550e-02, +-1.488775150338718725e-02, +-1.491444742197472334e-02, +-1.494111698652574906e-02, +-1.496776015589704537e-02, +-1.499437688899209371e-02, +-1.502096714475991725e-02, +-1.504753088219588572e-02, +-1.507406806034143273e-02, +-1.510057863828469758e-02, +-1.512706257515960238e-02, +-1.515351983014697444e-02, +-1.517995036247374481e-02, +-1.520635413141348258e-02, +-1.523273109628619712e-02, +-1.525908121645884290e-02, +-1.528540445134505925e-02, +-1.531170076040484600e-02, +-1.533797010314564592e-02, +-1.536421243912127962e-02, +-1.539042772793272965e-02, +-1.541661592922786289e-02, +-1.544277700270201698e-02, +-1.546891090809714327e-02, +-1.549501760520288936e-02, +-1.552109705385566925e-02, +-1.554714921393984296e-02, +-1.557317404538656816e-02, +-1.559917150817474209e-02, +-1.562514156233049678e-02, +-1.565108416792806295e-02, +-1.567699928508874130e-02, +-1.570288687398199365e-02, +-1.572874689482473692e-02, +-1.575457930788152355e-02, +-1.578038407346541577e-02, +-1.580616115193663948e-02, +-1.583191050370415937e-02, +-1.585763208922429807e-02, +-1.588332586900212048e-02, +-1.590899180359036519e-02, +-1.593462985359026321e-02, +-1.596023997965113558e-02, +-1.598582214247103866e-02, +-1.601137630279592799e-02, +-1.603690242142079975e-02, +-1.606240045918876785e-02, +-1.608787037699161565e-02, +-1.611331213576968832e-02, +-1.613872569651245495e-02, +-1.616411102025759952e-02, +-1.618946806809201319e-02, +-1.621479680115152713e-02, +-1.624009718062062804e-02, +-1.626536916773290570e-02, +-1.629061272377089684e-02, +-1.631582781006676169e-02, +-1.634101438800110787e-02, +-1.636617241900449604e-02, +-1.639130186455616325e-02, +-1.641640268618531698e-02, +-1.644147484547000063e-02, +-1.646651830403812050e-02, +-1.649153302356673803e-02, +-1.651651896578305856e-02, +-1.654147609246338010e-02, +-1.656640436543415501e-02, +-1.659130374657125789e-02, +-1.661617419780057545e-02, +-1.664101568109761439e-02, +-1.666582815848816068e-02, +-1.669061159204801234e-02, +-1.671536594390260130e-02, +-1.674009117622793016e-02, +-1.676478725124985747e-02, +-1.678945413124453487e-02, +-1.681409177853829262e-02, +-1.683870015550820165e-02, +-1.686327922458118883e-02, +-1.688782894823512987e-02, +-1.691234928899807213e-02, +-1.693684020944869612e-02, +-1.696130167221620438e-02, +-1.698573363998082120e-02, +-1.701013607547305698e-02, +-1.703450894147471445e-02, +-1.705885220081781659e-02, +-1.708316581638597703e-02, +-1.710744975111323091e-02, +-1.713170396798470788e-02, +-1.715592843003695134e-02, +-1.718012310035715168e-02, +-1.720428794208413853e-02, +-1.722842291840750995e-02, +-1.725252799256874608e-02, +-1.727660312785989777e-02, +-1.730064828762519283e-02, +-1.732466343525968996e-02, +-1.734864853421045836e-02, +-1.737260354797570336e-02, +-1.739652844010571020e-02, +-1.742042317420203212e-02, +-1.744428771391812877e-02, +-1.746812202295909902e-02, +-1.749192606508228470e-02, +-1.751569980409636504e-02, +-1.753944320386237668e-02, +-1.756315622829334594e-02, +-1.758683884135416042e-02, +-1.761049100706186393e-02, +-1.763411268948561830e-02, +-1.765770385274711279e-02, +-1.768126446101982163e-02, +-1.770479447853010382e-02, +-1.772829386955630457e-02, +-1.775176259842923751e-02, +-1.777520062953221597e-02, +-1.779860792730136518e-02, +-1.782198445622494576e-02, +-1.784533018084441189e-02, +-1.786864506575333231e-02, +-1.789192907559858381e-02, +-1.791518217507947347e-02, +-1.793840432894816192e-02, +-1.796159550201009356e-02, +-1.798475565912314653e-02, +-1.800788476519881581e-02, +-1.803098278520103709e-02, +-1.805404968414760919e-02, +-1.807708542710859123e-02, +-1.810008997920806509e-02, +-1.812306330562290027e-02, +-1.814600537158376353e-02, +-1.816891614237413702e-02, +-1.819179558333147359e-02, +-1.821464365984639885e-02, +-1.823746033736312055e-02, +-1.826024558137934531e-02, +-1.828299935744681290e-02, +-1.830572163117043585e-02, +-1.832841236820941661e-02, +-1.835107153427618237e-02, +-1.837369909513753008e-02, +-1.839629501661384572e-02, +-1.841885926457936806e-02, +-1.844139180496276800e-02, +-1.846389260374630206e-02, +-1.848636162696679422e-02, +-1.850879884071473039e-02, +-1.853120421113514313e-02, +-1.855357770442710511e-02, +-1.857591928684425991e-02, +-1.859822892469426350e-02, +-1.862050658433958908e-02, +-1.864275223219670832e-02, +-1.866496583473706283e-02, +-1.868714735848629738e-02, +-1.870929677002472133e-02, +-1.873141403598733642e-02, +-1.875349912306394778e-02, +-1.877555199799913616e-02, +-1.879757262759203934e-02, +-1.881956097869687955e-02, +-1.884151701822250891e-02, +-1.886344071313314497e-02, +-1.888533203044762132e-02, +-1.890719093724017169e-02, +-1.892901740063963195e-02, +-1.895081138783061975e-02, +-1.897257286605242427e-02, +-1.899430180259983544e-02, +-1.901599816482268251e-02, +-1.903766192012660771e-02, +-1.905929303597211216e-02, +-1.908089147987560366e-02, +-1.910245721940851543e-02, +-1.912399022219832614e-02, +-1.914549045592765439e-02, +-1.916695788833483807e-02, +-1.918839248721416341e-02, +-1.920979422041527857e-02, +-1.923116305584391186e-02, +-1.925249896146144155e-02, +-1.927380190528511089e-02, +-1.929507185538800393e-02, +-1.931630877989954156e-02, +-1.933751264700458647e-02, +-1.935868342494463309e-02, +-1.937982108201678766e-02, +-1.940092558657469449e-02, +-1.942199690702803641e-02, +-1.944303501184258334e-02, +-1.946403986954049412e-02, +-1.948501144870053853e-02, +-1.950594971795738264e-02, +-1.952685464600264001e-02, +-1.954772620158400781e-02, +-1.956856435350569356e-02, +-1.958936907062889046e-02, +-1.961014032187086836e-02, +-1.963087807620603198e-02, +-1.965158230266510556e-02, +-1.967225297033584411e-02, +-1.969289004836269341e-02, +-1.971349350594683858e-02, +-1.973406331234640182e-02, +-1.975459943687664713e-02, +-1.977510184890943212e-02, +-1.979557051787411356e-02, +-1.981600541325657244e-02, +-1.983640650460044910e-02, +-1.985677376150569648e-02, +-1.987710715363020034e-02, +-1.989740665068896047e-02, +-1.991767222245386867e-02, +-1.993790383875468017e-02, +-1.995810146947813585e-02, +-1.997826508456850350e-02, +-1.999839465402753272e-02, +-2.001849014791462142e-02, +-2.003855153634640993e-02, +-2.005857878949754772e-02, +-2.007857187759989892e-02, +-2.009853077094343396e-02, +-2.011845543987555648e-02, +-2.013834585480138786e-02, +-2.015820198618406209e-02, +-2.017802380454462516e-02, +-2.019781128046175059e-02, +-2.021756438457237084e-02, +-2.023728308757118816e-02, +-2.025696736021084104e-02, +-2.027661717330245250e-02, +-2.029623249771480079e-02, +-2.031581330437521801e-02, +-2.033535956426882341e-02, +-2.035487124843943924e-02, +-2.037434832798885875e-02, +-2.039379077407720356e-02, +-2.041319855792297910e-02, +-2.043257165080342164e-02, +-2.045191002405367248e-02, +-2.047121364906792293e-02, +-2.049048249729851917e-02, +-2.050971654025651389e-02, +-2.052891574951143383e-02, +-2.054808009669176899e-02, +-2.056720955348445568e-02, +-2.058630409163533098e-02, +-2.060536368294904955e-02, +-2.062438829928882680e-02, +-2.064337791257693511e-02, +-2.066233249479442272e-02, +-2.068125201798167931e-02, +-2.070013645423747495e-02, +-2.071898577572017092e-02, +-2.073779995464675521e-02, +-2.075657896329373073e-02, +-2.077532277399643176e-02, +-2.079403135914948894e-02, +-2.081270469120667307e-02, +-2.083134274268126640e-02, +-2.084994548614558033e-02, +-2.086851289423159381e-02, +-2.088704493963037048e-02, +-2.090554159509245072e-02, +-2.092400283342796610e-02, +-2.094242862750647985e-02, +-2.096081895025720537e-02, +-2.097917377466871486e-02, +-2.099749307378950477e-02, +-2.101577682072744771e-02, +-2.103402498865033707e-02, +-2.105223755078540829e-02, +-2.107041448042011947e-02, +-2.108855575090131176e-02, +-2.110666133563606287e-02, +-2.112473120809106250e-02, +-2.114276534179302183e-02, +-2.116076371032847223e-02, +-2.117872628734443485e-02, +-2.119665304654731741e-02, +-2.121454396170416312e-02, +-2.123239900664180071e-02, +-2.125021815524742730e-02, +-2.126800138146834468e-02, +-2.128574865931187263e-02, +-2.130345996284607052e-02, +-2.132113526619887345e-02, +-2.133877454355890407e-02, +-2.135637776917480996e-02, +-2.137394491735600949e-02, +-2.139147596247218883e-02, +-2.140897087895352741e-02, +-2.142642964129060773e-02, +-2.144385222403499824e-02, +-2.146123860179837209e-02, +-2.147858874925349590e-02, +-2.149590264113339713e-02, +-2.151318025223212735e-02, +-2.153042155740418975e-02, +-2.154762653156525737e-02, +-2.156479514969135078e-02, +-2.158192738681981304e-02, +-2.159902321804862621e-02, +-2.161608261853672705e-02, +-2.163310556350393765e-02, +-2.165009202823113890e-02, +-2.166704198806040926e-02, +-2.168395541839457027e-02, +-2.170083229469785616e-02, +-2.171767259249547666e-02, +-2.173447628737375584e-02, +-2.175124335498024655e-02, +-2.176797377102399761e-02, +-2.178466751127487722e-02, +-2.180132455156456872e-02, +-2.181794486778558875e-02, +-2.183452843589235581e-02, +-2.185107523190020842e-02, +-2.186758523188617534e-02, +-2.188405841198885066e-02, +-2.190049474840807114e-02, +-2.191689421740551993e-02, +-2.193325679530416794e-02, +-2.194958245848900591e-02, +-2.196587118340605563e-02, +-2.198212294656363627e-02, +-2.199833772453133399e-02, +-2.201451549394086230e-02, +-2.203065623148532312e-02, +-2.204675991391996659e-02, +-2.206282651806168102e-02, +-2.207885602078927742e-02, +-2.209484839904341663e-02, +-2.211080362982692504e-02, +-2.212672169020431234e-02, +-2.214260255730239602e-02, +-2.215844620830968725e-02, +-2.217425262047713688e-02, +-2.219002177111744842e-02, +-2.220575363760567827e-02, +-2.222144819737905189e-02, +-2.223710542793676942e-02, +-2.225272530684062680e-02, +-2.226830781171434265e-02, +-2.228385292024413072e-02, +-2.229936061017830790e-02, +-2.231483085932794291e-02, +-2.233026364556594048e-02, +-2.234565894682822434e-02, +-2.236101674111263399e-02, +-2.237633700647982671e-02, +-2.239161972105280229e-02, +-2.240686486301720487e-02, +-2.242207241062105921e-02, +-2.243724234217515587e-02, +-2.245237463605302686e-02, +-2.246746927069052588e-02, +-2.248252622458667832e-02, +-2.249754547630250165e-02, +-2.251252700446250074e-02, +-2.252747078775347786e-02, +-2.254237680492542431e-02, +-2.255724503479071899e-02, +-2.257207545622496800e-02, +-2.258686804816662300e-02, +-2.260162278961684590e-02, +-2.261633965963993562e-02, +-2.263101863736318234e-02, +-2.264565970197672529e-02, +-2.266026283273402456e-02, +-2.267482800895124703e-02, +-2.268935521000807129e-02, +-2.270384441534689310e-02, +-2.271829560447346033e-02, +-2.273270875695680704e-02, +-2.274708385242889958e-02, +-2.276142087058527497e-02, +-2.277571979118447540e-02, +-2.278998059404838475e-02, +-2.280420325906225287e-02, +-2.281838776617474765e-02, +-2.283253409539771558e-02, +-2.284664222680666407e-02, +-2.286071214054030687e-02, +-2.287474381680094579e-02, +-2.288873723585437697e-02, +-2.290269237802972091e-02, +-2.291660922371978326e-02, +-2.293048775338108261e-02, +-2.294432794753333352e-02, +-2.295812978676034857e-02, +-2.297189325170922308e-02, +-2.298561832309075834e-02, +-2.299930498167966283e-02, +-2.301295320831416372e-02, +-2.302656298389643696e-02, +-2.304013428939214597e-02, +-2.305366710583104176e-02, +-2.306716141430656050e-02, +-2.308061719597596234e-02, +-2.309403443206043544e-02, +-2.310741310384517230e-02, +-2.312075319267893614e-02, +-2.313405467997502532e-02, +-2.314731754721017012e-02, +-2.316054177592551805e-02, +-2.317372734772570053e-02, +-2.318687424427999869e-02, +-2.319998244732154880e-02, +-2.321305193864741864e-02, +-2.322608270011913140e-02, +-2.323907471366201682e-02, +-2.325202796126579069e-02, +-2.326494242498427720e-02, +-2.327781808693559287e-02, +-2.329065492930199738e-02, +-2.330345293433027862e-02, +-2.331621208433110742e-02, +-2.332893236167985634e-02, +-2.334161374881601678e-02, +-2.335425622824350081e-02, +-2.336685978253055795e-02, +-2.337942439431003189e-02, +-2.339195004627890595e-02, +-2.340443672119902480e-02, +-2.341688440189625478e-02, +-2.342929307126120908e-02, +-2.344166271224913320e-02, +-2.345399330787953027e-02, +-2.346628484123675779e-02, +-2.347853729546952456e-02, +-2.349075065379138683e-02, +-2.350292489948032498e-02, +-2.351506001587910094e-02, +-2.352715598639505343e-02, +-2.353921279450036860e-02, +-2.355123042373188577e-02, +-2.356320885769117718e-02, +-2.357514808004453413e-02, +-2.358704807452324456e-02, +-2.359890882492299280e-02, +-2.361073031510478593e-02, +-2.362251252899404477e-02, +-2.363425545058144353e-02, +-2.364595906392229219e-02, +-2.365762335313697715e-02, +-2.366924830241062816e-02, +-2.368083389599335079e-02, +-2.369238011820052475e-02, +-2.370388695341216906e-02, +-2.371535438607356647e-02, +-2.372678240069472574e-02, +-2.373817098185116228e-02, +-2.374952011418308973e-02, +-2.376082978239590221e-02, +-2.377209997126016397e-02, +-2.378333066561165443e-02, +-2.379452185035111147e-02, +-2.380567351044463736e-02, +-2.381678563092340037e-02, +-2.382785819688371109e-02, +-2.383889119348735208e-02, +-2.384988460596106433e-02, +-2.386083841959715443e-02, +-2.387175261975300541e-02, +-2.388262719185139590e-02, +-2.389346212138036829e-02, +-2.390425739389336751e-02, +-2.391501299500905370e-02, +-2.392572891041174973e-02, +-2.393640512585088614e-02, +-2.394704162714148682e-02, +-2.395763840016391921e-02, +-2.396819543086404353e-02, +-2.397871270525309129e-02, +-2.398919020940800534e-02, +-2.399962792947088128e-02, +-2.401002585164975847e-02, +-2.402038396221786373e-02, +-2.403070224751417336e-02, +-2.404098069394304885e-02, +-2.405121928797461853e-02, +-2.406141801614453471e-02, +-2.407157686505413327e-02, +-2.408169582137024284e-02, +-2.409177487182554908e-02, +-2.410181400321823042e-02, +-2.411181320241229456e-02, +-2.412177245633730094e-02, +-2.413169175198860358e-02, +-2.414157107642733724e-02, +-2.415141041678024389e-02, +-2.416120976024003358e-02, +-2.417096909406508606e-02, +-2.418068840557954444e-02, +-2.419036768217331865e-02, +-2.420000691130241507e-02, +-2.420960608048829121e-02, +-2.421916517731855997e-02, +-2.422868418944666355e-02, +-2.423816310459183873e-02, +-2.424760191053921057e-02, +-2.425700059513985832e-02, +-2.426635914631092988e-02, +-2.427567755203531921e-02, +-2.428495580036194382e-02, +-2.429419387940569622e-02, +-2.430339177734749598e-02, +-2.431254948243421338e-02, +-2.432166698297874227e-02, +-2.433074426736000703e-02, +-2.433978132402307010e-02, +-2.434877814147887176e-02, +-2.435773470830458406e-02, +-2.436665101314332629e-02, +-2.437552704470438703e-02, +-2.438436279176317209e-02, +-2.439315824316113865e-02, +-2.440191338780611785e-02, +-2.441062821467161054e-02, +-2.441930271279784542e-02, +-2.442793687129075214e-02, +-2.443653067932282513e-02, +-2.444508412613235690e-02, +-2.445359720102418394e-02, +-2.446206989336918367e-02, +-2.447050219260469769e-02, +-2.447889408823401489e-02, +-2.448724556982678074e-02, +-2.449555662701900435e-02, +-2.450382724951285368e-02, +-2.451205742707692273e-02, +-2.452024714954599907e-02, +-2.452839640682113326e-02, +-2.453650518887000309e-02, +-2.454457348572625444e-02, +-2.455260128748996962e-02, +-2.456058858432775757e-02, +-2.456853536647248676e-02, +-2.457644162422347595e-02, +-2.458430734794627912e-02, +-2.459213252807293873e-02, +-2.459991715510190941e-02, +-2.460766121959813424e-02, +-2.461536471219287134e-02, +-2.462302762358387423e-02, +-2.463064994453535717e-02, +-2.463823166587802982e-02, +-2.464577277850896198e-02, +-2.465327327339179864e-02, +-2.466073314155662818e-02, +-2.466815237409998932e-02, +-2.467553096218509656e-02, +-2.468286889704155926e-02, +-2.469016616996555849e-02, +-2.469742277231963892e-02, +-2.470463869553319800e-02, +-2.471181393110190999e-02, +-2.471894847058817360e-02, +-2.472604230562086905e-02, +-2.473309542789553159e-02, +-2.474010782917424045e-02, +-2.474707950128563275e-02, +-2.475401043612489305e-02, +-2.476090062565411073e-02, +-2.476775006190160000e-02, +-2.477455873696258332e-02, +-2.478132664299876817e-02, +-2.478805377223860726e-02, +-2.479474011697718402e-02, +-2.480138566957595936e-02, +-2.480799042246361469e-02, +-2.481455436813496951e-02, +-2.482107749915184874e-02, +-2.482755980814256233e-02, +-2.483400128780224175e-02, +-2.484040193089255208e-02, +-2.484676173024216034e-02, +-2.485308067874615612e-02, +-2.485935876936637076e-02, +-2.486559599513149185e-02, +-2.487179234913695566e-02, +-2.487794782454476328e-02, +-2.488406241458364365e-02, +-2.489013611254935893e-02, +-2.489616891180410074e-02, +-2.490216080577694474e-02, +-2.490811178796376382e-02, +-2.491402185192728366e-02, +-2.491989099129656923e-02, +-2.492571919976804828e-02, +-2.493150647110459542e-02, +-2.493725279913586168e-02, +-2.494295817775837171e-02, +-2.494862260093550291e-02, +-2.495424606269735016e-02, +-2.495982855714079518e-02, +-2.496537007842948575e-02, +-2.497087062079416178e-02, +-2.497633017853198925e-02, +-2.498174874600723322e-02, +-2.498712631765086581e-02, +-2.499246288796082294e-02, +-2.499775845150165043e-02, +-2.500301300290481629e-02, +-2.500822653686879046e-02, +-2.501339904815877424e-02, +-2.501853053160665169e-02, +-2.502362098211140598e-02, +-2.502867039463878632e-02, +-2.503367876422134264e-02, +-2.503864608595857827e-02, +-2.504357235501671053e-02, +-2.504845756662904196e-02, +-2.505330171609551973e-02, +-2.505810479878305130e-02, +-2.506286681012551143e-02, +-2.506758774562350620e-02, +-2.507226760084453956e-02, +-2.507690637142306195e-02, +-2.508150405306037306e-02, +-2.508606064152456641e-02, +-2.509057613265076175e-02, +-2.509505052234090039e-02, +-2.509948380656374170e-02, +-2.510387598135510601e-02, +-2.510822704281744089e-02, +-2.511253698712029997e-02, +-2.511680581050016597e-02, +-2.512103350926013848e-02, +-2.512522007977046473e-02, +-2.512936551846814762e-02, +-2.513346982185715034e-02, +-2.513753298650824725e-02, +-2.514155500905932220e-02, +-2.514553588621478569e-02, +-2.514947561474641796e-02, +-2.515337419149244608e-02, +-2.515723161335813723e-02, +-2.516104787731573977e-02, +-2.516482298040443114e-02, +-2.516855691973011316e-02, +-2.517224969246563415e-02, +-2.517590129585091374e-02, +-2.517951172719231148e-02, +-2.518308098386368502e-02, +-2.518660906330526250e-02, +-2.519009596302448223e-02, +-2.519354168059549301e-02, +-2.519694621365945256e-02, +-2.520030955992421176e-02, +-2.520363171716480041e-02, +-2.520691268322285475e-02, +-2.521015245600699561e-02, +-2.521335103349276949e-02, +-2.521650841372255133e-02, +-2.521962459480548216e-02, +-2.522269957491778819e-02, +-2.522573335230244782e-02, +-2.522872592526924362e-02, +-2.523167729219492547e-02, +-2.523458745152315150e-02, +-2.523745640176422098e-02, +-2.524028414149552535e-02, +-2.524307066936116312e-02, +-2.524581598407214800e-02, +-2.524852008440633608e-02, +-2.525118296920832520e-02, +-2.525380463738975331e-02, +-2.525638508792896197e-02, +-2.525892431987109346e-02, +-2.526142233232817058e-02, +-2.526387912447905504e-02, +-2.526629469556946478e-02, +-2.526866904491187685e-02, +-2.527100217188552392e-02, +-2.527329407593656083e-02, +-2.527554475657791538e-02, +-2.527775421338930573e-02, +-2.527992244601727848e-02, +-2.528204945417501792e-02, +-2.528413523764275195e-02, +-2.528617979626726284e-02, +-2.528818312996224810e-02, +-2.529014523870814699e-02, +-2.529206612255213010e-02, +-2.529394578160810286e-02, +-2.529578421605684774e-02, +-2.529758142614571548e-02, +-2.529933741218904145e-02, +-2.530105217456770847e-02, +-2.530272571372935153e-02, +-2.530435803018837512e-02, +-2.530594912452600528e-02, +-2.530749899738997735e-02, +-2.530900764949484474e-02, +-2.531047508162190957e-02, +-2.531190129461913588e-02, +-2.531328628940106296e-02, +-2.531463006694912796e-02, +-2.531593262831118366e-02, +-2.531719397460205009e-02, +-2.531841410700298028e-02, +-2.531959302676196552e-02, +-2.532073073519357925e-02, +-2.532182723367918872e-02, +-2.532288252366662190e-02, +-2.532389660667043116e-02, +-2.532486948427181001e-02, +-2.532580115811850982e-02, +-2.532669162992480863e-02, +-2.532754090147172968e-02, +-2.532834897460681245e-02, +-2.532911585124416470e-02, +-2.532984153336442779e-02, +-2.533052602301490153e-02, +-2.533116932230946444e-02, +-2.533177143342833088e-02, +-2.533233235861843957e-02, +-2.533285210019324551e-02, +-2.533333066053262625e-02, +-2.533376804208304148e-02, +-2.533416424735742203e-02, +-2.533451927893515601e-02, +-2.533483313946223794e-02, +-2.533510583165097044e-02, +-2.533533735828019662e-02, +-2.533552772219530361e-02, +-2.533567692630794149e-02, +-2.533578497359634599e-02, +-2.533585186710504353e-02, +-2.533587760994507332e-02, +-2.533586220529390753e-02, +-2.533580565639521540e-02, +-2.533570796655925522e-02, +-2.533556913916261075e-02, +-2.533538917764816337e-02, +-2.533516808552514071e-02, +-2.533490586636926931e-02, +-2.533460252382232006e-02, +-2.533425806159265992e-02, +-2.533387248345478002e-02, +-2.533344579324965651e-02, +-2.533297799488424748e-02, +-2.533246909233200644e-02, +-2.533191908963263600e-02, +-2.533132799089212253e-02, +-2.533069580028246559e-02, +-2.533002252204218097e-02, +-2.532930816047567965e-02, +-2.532855271995392357e-02, +-2.532775620491382537e-02, +-2.532691861985852944e-02, +-2.532603996935734944e-02, +-2.532512025804579611e-02, +-2.532415949062540028e-02, +-2.532315767186401126e-02, +-2.532211480659534927e-02, +-2.532103089971942181e-02, +-2.531990595620225992e-02, +-2.531873998107598764e-02, +-2.531753297943871786e-02, +-2.531628495645470156e-02, +-2.531499591735414043e-02, +-2.531366586743332564e-02, +-2.531229481205460319e-02, +-2.531088275664614487e-02, +-2.530942970670223280e-02, +-2.530793566778309633e-02, +-2.530640064551480453e-02, +-2.530482464558955757e-02, +-2.530320767376526350e-02, +-2.530154973586598230e-02, +-2.529985083778140548e-02, +-2.529811098546725853e-02, +-2.529633018494518992e-02, +-2.529450844230252127e-02, +-2.529264576369247980e-02, +-2.529074215533411510e-02, +-2.528879762351237889e-02, +-2.528681217457784403e-02, +-2.528478581494698202e-02, +-2.528271855110186817e-02, +-2.528061038959058399e-02, +-2.527846133702662743e-02, +-2.527627140008942980e-02, +-2.527404058552404353e-02, +-2.527176890014116648e-02, +-2.526945635081724942e-02, +-2.526710294449422550e-02, +-2.526470868817987797e-02, +-2.526227358894737526e-02, +-2.525979765393564225e-02, +-2.525728089034915205e-02, +-2.525472330545793648e-02, +-2.525212490659751313e-02, +-2.524948570116893401e-02, +-2.524680569663890692e-02, +-2.524408490053946935e-02, +-2.524132332046824523e-02, +-2.523852096408820203e-02, +-2.523567783912790755e-02, +-2.523279395338116210e-02, +-2.522986931470736979e-02, +-2.522690393103117767e-02, +-2.522389781034268738e-02, +-2.522085096069730595e-02, +-2.521776339021589153e-02, +-2.521463510708434053e-02, +-2.521146611955426761e-02, +-2.520825643594209325e-02, +-2.520500606462994231e-02, +-2.520171501406485298e-02, +-2.519838329275922439e-02, +-2.519501090929080270e-02, +-2.519159787230217454e-02, +-2.518814419050142625e-02, +-2.518464987266159569e-02, +-2.518111492762097406e-02, +-2.517753936428281103e-02, +-2.517392319161565820e-02, +-2.517026641865291806e-02, +-2.516656905449317361e-02, +-2.516283110830003916e-02, +-2.515905258930211177e-02, +-2.515523350679301287e-02, +-2.515137387013118356e-02, +-2.514747368874026279e-02, +-2.514353297210865368e-02, +-2.513955172978971087e-02, +-2.513552997140172662e-02, +-2.513146770662777127e-02, +-2.512736494521577990e-02, +-2.512322169697858015e-02, +-2.511903797179389913e-02, +-2.511481377960387770e-02, +-2.511054913041592396e-02, +-2.510624403430175913e-02, +-2.510189850139808720e-02, +-2.509751254190620284e-02, +-2.509308616609212325e-02, +-2.508861938428652225e-02, +-2.508411220688468168e-02, +-2.507956464434650534e-02, +-2.507497670719651545e-02, +-2.507034840602385267e-02, +-2.506567975148195002e-02, +-2.506097075428915383e-02, +-2.505622142522803686e-02, +-2.505143177514583194e-02, +-2.504660181495392199e-02, +-2.504173155562857897e-02, +-2.503682100821014514e-02, +-2.503187018380335568e-02, +-2.502687909357759546e-02, +-2.502184774876634737e-02, +-2.501677616066747684e-02, +-2.501166434064311384e-02, +-2.500651230011977436e-02, +-2.500132005058809323e-02, +-2.499608760360302537e-02, +-2.499081497078370004e-02, +-2.498550216381341740e-02, +-2.498014919443962076e-02, +-2.497475607447398327e-02, +-2.496932281579207144e-02, +-2.496384943033389328e-02, +-2.495833593010306564e-02, +-2.495278232716763647e-02, +-2.494718863365942910e-02, +-2.494155486177440997e-02, +-2.493588102377222032e-02, +-2.493016713197694287e-02, +-2.492441319877604713e-02, +-2.491861923662117700e-02, +-2.491278525802782112e-02, +-2.490691127557518453e-02, +-2.490099730190644192e-02, +-2.489504334972842195e-02, +-2.488904943181179802e-02, +-2.488301556099087666e-02, +-2.487694175016375020e-02, +-2.487082801229223775e-02, +-2.486467436040186094e-02, +-2.485848080758146575e-02, +-2.485224736698388170e-02, +-2.484597405182523144e-02, +-2.483966087538540257e-02, +-2.483330785100767643e-02, +-2.482691499209891198e-02, +-2.482048231212933068e-02, +-2.481400982463275243e-02, +-2.480749754320634923e-02, +-2.480094548151051334e-02, +-2.479435365326938465e-02, +-2.478772207227010124e-02, +-2.478105075236326435e-02, +-2.477433970746274056e-02, +-2.476758895154565834e-02, +-2.476079849865226584e-02, +-2.475396836288625002e-02, +-2.474709855841420586e-02, +-2.474018909946610473e-02, +-2.473324000033482947e-02, +-2.472625127537659076e-02, +-2.471922293901043788e-02, +-2.471215500571853976e-02, +-2.470504749004603234e-02, +-2.469790040660116773e-02, +-2.469071377005496726e-02, +-2.468348759514153029e-02, +-2.467622189665774624e-02, +-2.466891668946337088e-02, +-2.466157198848105761e-02, +-2.465418780869622559e-02, +-2.464676416515693136e-02, +-2.463930107297431643e-02, +-2.463179854732193766e-02, +-2.462425660343612113e-02, +-2.461667525661589279e-02, +-2.460905452222296105e-02, +-2.460139441568142543e-02, +-2.459369495247815118e-02, +-2.458595614816249872e-02, +-2.457817801834629931e-02, +-2.457036057870392101e-02, +-2.456250384497203273e-02, +-2.455460783294997548e-02, +-2.454667255849917254e-02, +-2.453869803754370194e-02, +-2.453068428606976215e-02, +-2.452263132012599475e-02, +-2.451453915582316873e-02, +-2.450640780933431920e-02, +-2.449823729689480298e-02, +-2.449002763480204875e-02, +-2.448177883941559524e-02, +-2.447349092715716060e-02, +-2.446516391451056260e-02, +-2.445679781802156949e-02, +-2.444839265429804911e-02, +-2.443994844000980243e-02, +-2.443146519188862942e-02, +-2.442294292672822498e-02, +-2.441438166138421365e-02, +-2.440578141277396224e-02, +-2.439714219787678454e-02, +-2.438846403373379212e-02, +-2.437974693744768967e-02, +-2.437099092618303167e-02, +-2.436219601716616695e-02, +-2.435336222768498191e-02, +-2.434448957508890746e-02, +-2.433557807678927293e-02, +-2.432662775025848725e-02, +-2.431763861303100002e-02, +-2.430861068270247574e-02, +-2.429954397693014079e-02, +-2.429043851343253360e-02, +-2.428129430998979960e-02, +-2.427211138444309094e-02, +-2.426288975469541656e-02, +-2.425362943871050420e-02, +-2.424433045451380997e-02, +-2.423499282019189044e-02, +-2.422561655389221871e-02, +-2.421620167382381936e-02, +-2.420674819825663696e-02, +-2.419725614552170959e-02, +-2.418772553401122780e-02, +-2.417815638217838195e-02, +-2.416854870853725121e-02, +-2.415890253166296658e-02, +-2.414921787019156524e-02, +-2.413949474281996618e-02, +-2.412973316830585579e-02, +-2.411993316546789251e-02, +-2.411009475318535294e-02, +-2.410021795039848577e-02, +-2.409030277610791151e-02, +-2.408034924937526092e-02, +-2.407035738932266494e-02, +-2.406032721513257436e-02, +-2.405025874604865832e-02, +-2.404015200137445130e-02, +-2.403000700047448757e-02, +-2.401982376277337489e-02, +-2.400960230775645368e-02, +-2.399934265496916908e-02, +-2.398904482401751151e-02, +-2.397870883456772878e-02, +-2.396833470634641972e-02, +-2.395792245914032254e-02, +-2.394747211279638424e-02, +-2.393698368722171899e-02, +-2.392645720238371215e-02, +-2.391589267830957280e-02, +-2.390529013508686448e-02, +-2.389464959286305076e-02, +-2.388397107184540152e-02, +-2.387325459230141972e-02, +-2.386250017455835218e-02, +-2.385170783900331104e-02, +-2.384087760608332926e-02, +-2.383000949630523918e-02, +-2.381910353023540539e-02, +-2.380815972850032491e-02, +-2.379717811178573908e-02, +-2.378615870083735512e-02, +-2.377510151646023903e-02, +-2.376400657951919723e-02, +-2.375287391093852327e-02, +-2.374170353170206374e-02, +-2.373049546285291647e-02, +-2.371924972549383295e-02, +-2.370796634078667711e-02, +-2.369664532995295961e-02, +-2.368528671427322721e-02, +-2.367389051508734382e-02, +-2.366245675379455987e-02, +-2.365098545185308210e-02, +-2.363947663078044825e-02, +-2.362793031215300668e-02, +-2.361634651760648185e-02, +-2.360472526883544350e-02, +-2.359306658759368486e-02, +-2.358137049569349053e-02, +-2.356963701500647615e-02, +-2.355786616746285284e-02, +-2.354605797505190945e-02, +-2.353421245982133952e-02, +-2.352232964387796638e-02, +-2.351040954938704228e-02, +-2.349845219857275500e-02, +-2.348645761371761717e-02, +-2.347442581716282367e-02, +-2.346235683130815444e-02, +-2.345025067861192941e-02, +-2.343810738159093562e-02, +-2.342592696282007683e-02, +-2.341370944493311249e-02, +-2.340145485062170363e-02, +-2.338916320263616580e-02, +-2.337683452378468488e-02, +-2.336446883693401103e-02, +-2.335206616500888968e-02, +-2.333962653099229054e-02, +-2.332714995792502244e-02, +-2.331463646890629890e-02, +-2.330208608709304074e-02, +-2.328949883570029245e-02, +-2.327687473800095497e-02, +-2.326421381732594190e-02, +-2.325151609706371802e-02, +-2.323878160066071910e-02, +-2.322601035162124433e-02, +-2.321320237350701227e-02, +-2.320035768993760142e-02, +-2.318747632459018659e-02, +-2.317455830119966032e-02, +-2.316160364355808812e-02, +-2.314861237551541287e-02, +-2.313558452097868451e-02, +-2.312252010391267765e-02, +-2.310941914833922889e-02, +-2.309628167833787868e-02, +-2.308310771804507680e-02, +-2.306989729165474443e-02, +-2.305665042341771900e-02, +-2.304336713764239611e-02, +-2.303004745869390718e-02, +-2.301669141099451157e-02, +-2.300329901902381166e-02, +-2.298987030731784731e-02, +-2.297640530047006038e-02, +-2.296290402313046555e-02, +-2.294936650000610479e-02, +-2.293579275586059632e-02, +-2.292218281551462733e-02, +-2.290853670384529125e-02, +-2.289485444578660128e-02, +-2.288113606632884503e-02, +-2.286738159051930619e-02, +-2.285359104346143880e-02, +-2.283976445031534255e-02, +-2.282590183629755465e-02, +-2.281200322668102201e-02, +-2.279806864679487927e-02, +-2.278409812202483384e-02, +-2.277009167781258656e-02, +-2.275604933965604676e-02, +-2.274197113310956475e-02, +-2.272785708378337668e-02, +-2.271370721734394804e-02, +-2.269952155951347750e-02, +-2.268530013607057347e-02, +-2.267104297284940756e-02, +-2.265675009574022111e-02, +-2.264242153068897132e-02, +-2.262805730369775448e-02, +-2.261365744082389703e-02, +-2.259922196818095821e-02, +-2.258475091193760595e-02, +-2.257024429831870280e-02, +-2.255570215360408470e-02, +-2.254112450412960877e-02, +-2.252651137628640735e-02, +-2.251186279652082553e-02, +-2.249717879133505960e-02, +-2.248245938728617513e-02, +-2.246770461098673496e-02, +-2.245291448910447310e-02, +-2.243808904836238488e-02, +-2.242322831553856047e-02, +-2.240833231746627852e-02, +-2.239340108103362106e-02, +-2.237843463318392803e-02, +-2.236343300091528027e-02, +-2.234839621128078407e-02, +-2.233332429138841502e-02, +-2.231821726840094514e-02, +-2.230307516953571045e-02, +-2.228789802206514528e-02, +-2.227268585331597731e-02, +-2.225743869066959188e-02, +-2.224215656156214652e-02, +-2.222683949348412680e-02, +-2.221148751398071761e-02, +-2.219610065065111271e-02, +-2.218067893114939598e-02, +-2.216522238318341734e-02, +-2.214973103451566006e-02, +-2.213420491296283141e-02, +-2.211864404639575857e-02, +-2.210304846273919432e-02, +-2.208741818997220566e-02, +-2.207175325612774353e-02, +-2.205605368929302798e-02, +-2.204031951760861835e-02, +-2.202455076926950264e-02, +-2.200874747252425448e-02, +-2.199290965567540085e-02, +-2.197703734707896761e-02, +-2.196113057514458705e-02, +-2.194518936833593850e-02, +-2.192921375516980811e-02, +-2.191320376421676541e-02, +-2.189715942410087532e-02, +-2.188108076349961489e-02, +-2.186496781114362006e-02, +-2.184882059581714359e-02, +-2.183263914635739239e-02, +-2.181642349165520064e-02, +-2.180017366065420750e-02, +-2.178388968235147466e-02, +-2.176757158579681328e-02, +-2.175121940009331831e-02, +-2.173483315439689659e-02, +-2.171841287791649935e-02, +-2.170195859991378914e-02, +-2.168547034970331674e-02, +-2.166894815665252119e-02, +-2.165239205018131344e-02, +-2.163580205976247881e-02, +-2.161917821492116351e-02, +-2.160252054523536733e-02, +-2.158582908033531908e-02, +-2.156910384990407686e-02, +-2.155234488367655313e-02, +-2.153555221144048959e-02, +-2.151872586303558293e-02, +-2.150186586835411279e-02, +-2.148497225734017843e-02, +-2.146804505999022963e-02, +-2.145108430635283073e-02, +-2.143409002652858775e-02, +-2.141706225066986741e-02, +-2.140000100898126201e-02, +-2.138290633171901003e-02, +-2.136577824919112453e-02, +-2.134861679175766372e-02, +-2.133142198983027996e-02, +-2.131419387387226139e-02, +-2.129693247439833070e-02, +-2.127963782197521414e-02, +-2.126230994722061104e-02, +-2.124494888080401267e-02, +-2.122755465344620951e-02, +-2.121012729591947171e-02, +-2.119266683904703907e-02, +-2.117517331370372125e-02, +-2.115764675081521773e-02, +-2.114008718135863482e-02, +-2.112249463636185071e-02, +-2.110486914690406016e-02, +-2.108721074411528881e-02, +-2.106951945917635849e-02, +-2.105179532331918207e-02, +-2.103403836782621189e-02, +-2.101624862403081440e-02, +-2.099842612331706548e-02, +-2.098057089711974701e-02, +-2.096268297692381599e-02, +-2.094476239426533437e-02, +-2.092680918073028945e-02, +-2.090882336795558266e-02, +-2.089080498762795751e-02, +-2.087275407148496409e-02, +-2.085467065131410905e-02, +-2.083655475895327541e-02, +-2.081840642629019522e-02, +-2.080022568526316076e-02, +-2.078201256785985190e-02, +-2.076376710611848100e-02, +-2.074548933212707127e-02, +-2.072717927802318616e-02, +-2.070883697599473772e-02, +-2.069046245827871333e-02, +-2.067205575716247676e-02, +-2.065361690498250177e-02, +-2.063514593412517709e-02, +-2.061664287702626511e-02, +-2.059810776617118644e-02, +-2.057954063409443701e-02, +-2.056094151338017095e-02, +-2.054231043666167322e-02, +-2.052364743662158861e-02, +-2.050495254599165804e-02, +-2.048622579755281226e-02, +-2.046746722413504693e-02, +-2.044867685861752674e-02, +-2.042985473392800247e-02, +-2.041100088304340435e-02, +-2.039211533898940831e-02, +-2.037319813484064768e-02, +-2.035424930372041474e-02, +-2.033526887880039713e-02, +-2.031625689330144799e-02, +-2.029721338049234741e-02, +-2.027813837369096470e-02, +-2.025903190626313771e-02, +-2.023989401162335985e-02, +-2.022072472323445391e-02, +-2.020152407460757901e-02, +-2.018229209930172408e-02, +-2.016302883092455089e-02, +-2.014373430313133942e-02, +-2.012440854962573716e-02, +-2.010505160415927695e-02, +-2.008566350053153302e-02, +-2.006624427258970819e-02, +-2.004679395422884203e-02, +-2.002731257939197734e-02, +-2.000780018206950797e-02, +-1.998825679629975816e-02, +-1.996868245616842050e-02, +-1.994907719580893066e-02, +-1.992944104940179775e-02, +-1.990977405117539192e-02, +-1.989007623540491043e-02, +-1.987034763641339769e-02, +-1.985058828857060378e-02, +-1.983079822629364719e-02, +-1.981097748404684472e-02, +-1.979112609634155889e-02, +-1.977124409773580241e-02, +-1.975133152283496327e-02, +-1.973138840629087148e-02, +-1.971141478280248258e-02, +-1.969141068711544040e-02, +-1.967137615402176493e-02, +-1.965131121836070915e-02, +-1.963121591501730545e-02, +-1.961109027892380535e-02, +-1.959093434505842363e-02, +-1.957074814844596278e-02, +-1.955053172415757712e-02, +-1.953028510731072420e-02, +-1.951000833306873461e-02, +-1.948970143664160645e-02, +-1.946936445328476678e-02, +-1.944899741830024079e-02, +-1.942860036703572546e-02, +-1.940817333488507185e-02, +-1.938771635728752524e-02, +-1.936722946972853701e-02, +-1.934671270773911586e-02, +-1.932616610689567513e-02, +-1.930558970282064343e-02, +-1.928498353118178812e-02, +-1.926434762769252754e-02, +-1.924368202811127873e-02, +-1.922298676824219649e-02, +-1.920226188393446901e-02, +-1.918150741108278629e-02, +-1.916072338562657337e-02, +-1.913990984355099650e-02, +-1.911906682088561696e-02, +-1.909819435370549087e-02, +-1.907729247813014575e-02, +-1.905636123032431253e-02, +-1.903540064649727331e-02, +-1.901441076290323259e-02, +-1.899339161584106053e-02, +-1.897234324165399805e-02, +-1.895126567673022580e-02, +-1.893015895750186847e-02, +-1.890902312044608763e-02, +-1.888785820208380151e-02, +-1.886666423898075359e-02, +-1.884544126774658282e-02, +-1.882418932503544112e-02, +-1.880290844754501159e-02, +-1.878159867201764643e-02, +-1.876026003523920821e-02, +-1.873889257403973246e-02, +-1.871749632529308080e-02, +-1.869607132591705884e-02, +-1.867461761287272579e-02, +-1.865313522316534856e-02, +-1.863162419384354479e-02, +-1.861008456199921696e-02, +-1.858851636476827399e-02, +-1.856691963932976391e-02, +-1.854529442290616531e-02, +-1.852364075276308891e-02, +-1.850195866620953089e-02, +-1.848024820059751896e-02, +-1.845850939332238302e-02, +-1.843674228182205777e-02, +-1.841494690357813047e-02, +-1.839312329611450178e-02, +-1.837127149699823922e-02, +-1.834939154383882429e-02, +-1.832748347428898167e-02, +-1.830554732604355167e-02, +-1.828358313684032288e-02, +-1.826159094445949788e-02, +-1.823957078672382506e-02, +-1.821752270149825520e-02, +-1.819544672669000038e-02, +-1.817334290024900934e-02, +-1.815121126016673928e-02, +-1.812905184447740486e-02, +-1.810686469125698250e-02, +-1.808464983862363359e-02, +-1.806240732473708352e-02, +-1.804013718779946471e-02, +-1.801783946605416825e-02, +-1.799551419778669045e-02, +-1.797316142132414710e-02, +-1.795078117503536366e-02, +-1.792837349733032021e-02, +-1.790593842666101526e-02, +-1.788347600152033826e-02, +-1.786098626044302015e-02, +-1.783846924200458914e-02, +-1.781592498482221371e-02, +-1.779335352755416835e-02, +-1.777075490889946235e-02, +-1.774812916759862386e-02, +-1.772547634243259312e-02, +-1.770279647222364541e-02, +-1.768008959583481504e-02, +-1.765735575216981559e-02, +-1.763459498017288726e-02, +-1.761180731882933462e-02, +-1.758899280716445107e-02, +-1.756615148424461176e-02, +-1.754328338917609739e-02, +-1.752038856110586101e-02, +-1.749746703922119145e-02, +-1.747451886274959537e-02, +-1.745154407095840174e-02, +-1.742854270315550430e-02, +-1.740551479868853585e-02, +-1.738246039694503475e-02, +-1.735937953735269823e-02, +-1.733627225937891050e-02, +-1.731313860253097178e-02, +-1.728997860635549805e-02, +-1.726679231043926066e-02, +-1.724357975440799634e-02, +-1.722034097792746188e-02, +-1.719707602070253208e-02, +-1.717378492247779997e-02, +-1.715046772303656028e-02, +-1.712712446220198206e-02, +-1.710375517983575219e-02, +-1.708035991583928617e-02, +-1.705693871015240629e-02, +-1.703349160275445875e-02, +-1.701001863366342556e-02, +-1.698651984293591058e-02, +-1.696299527066770507e-02, +-1.693944495699277464e-02, +-1.691586894208412656e-02, +-1.689226726615317489e-02, +-1.686863996944993477e-02, +-1.684498709226241869e-02, +-1.682130867491752474e-02, +-1.679760475777994019e-02, +-1.677387538125309566e-02, +-1.675012058577792992e-02, +-1.672634041183395162e-02, +-1.670253489993852800e-02, +-1.667870409064699938e-02, +-1.665484802455236002e-02, +-1.663096674228574726e-02, +-1.660706028451561581e-02, +-1.658312869194852532e-02, +-1.655917200532818628e-02, +-1.653519026543616433e-02, +-1.651118351309154020e-02, +-1.648715178915028182e-02, +-1.646309513450634407e-02, +-1.643901359009024635e-02, +-1.641490719687020705e-02, +-1.639077599585142195e-02, +-1.636662002807609193e-02, +-1.634243933462324258e-02, +-1.631823395660910586e-02, +-1.629400393518635332e-02, +-1.626974931154493570e-02, +-1.624547012691089296e-02, +-1.622116642254737076e-02, +-1.619683823975389542e-02, +-1.617248561986663752e-02, +-1.614810860425787420e-02, +-1.612370723433622158e-02, +-1.609928155154691926e-02, +-1.607483159737125092e-02, +-1.605035741332669005e-02, +-1.602585904096645933e-02, +-1.600133652188029387e-02, +-1.597678989769331370e-02, +-1.595221921006701599e-02, +-1.592762450069822033e-02, +-1.590300581131973839e-02, +-1.587836318370000263e-02, +-1.585369665964310448e-02, +-1.582900628098826007e-02, +-1.580429208961066714e-02, +-1.577955412742025609e-02, +-1.575479243636277935e-02, +-1.573000705841907584e-02, +-1.570519803560515085e-02, +-1.568036540997193307e-02, +-1.565550922360529201e-02, +-1.563062951862652719e-02, +-1.560572633719117808e-02, +-1.558079972149002332e-02, +-1.555584971374847705e-02, +-1.553087635622663228e-02, +-1.550587969121892257e-02, +-1.548085976105469976e-02, +-1.545581660809729370e-02, +-1.543075027474492648e-02, +-1.540566080342956057e-02, +-1.538054823661783553e-02, +-1.535541261681034123e-02, +-1.533025398654202370e-02, +-1.530507238838126581e-02, +-1.527986786493111884e-02, +-1.525464045882781589e-02, +-1.522939021274184561e-02, +-1.520411716937747001e-02, +-1.517882137147218667e-02, +-1.515350286179759608e-02, +-1.512816168315823592e-02, +-1.510279787839272254e-02, +-1.507741149037242039e-02, +-1.505200256200248804e-02, +-1.502657113622106293e-02, +-1.500111725599966375e-02, +-1.497564096434243416e-02, +-1.495014230428712461e-02, +-1.492462131890381904e-02, +-1.489907805129586996e-02, +-1.487351254459942131e-02, +-1.484792484198328016e-02, +-1.482231498664866864e-02, +-1.479668302182980330e-02, +-1.477102899079310409e-02, +-1.474535293683730021e-02, +-1.471965490329387068e-02, +-1.469393493352641467e-02, +-1.466819307093080067e-02, +-1.464242935893474672e-02, +-1.461664384099856454e-02, +-1.459083656061390191e-02, +-1.456500756130506800e-02, +-1.453915688662744433e-02, +-1.451328458016883788e-02, +-1.448739068554850441e-02, +-1.446147524641743821e-02, +-1.443553830645785511e-02, +-1.440957990938395925e-02, +-1.438360009894083281e-02, +-1.435759891890533296e-02, +-1.433157641308554879e-02, +-1.430553262532034513e-02, +-1.427946759948033398e-02, +-1.425338137946653184e-02, +-1.422727400921147863e-02, +-1.420114553267817770e-02, +-1.417499599386073429e-02, +-1.414882543678397039e-02, +-1.412263390550346463e-02, +-1.409642144410504574e-02, +-1.407018809670550034e-02, +-1.404393390745169862e-02, +-1.401765892052119628e-02, +-1.399136318012173322e-02, +-1.396504673049142956e-02, +-1.393870961589823050e-02, +-1.391235188064059332e-02, +-1.388597356904666680e-02, +-1.385957472547449595e-02, +-1.383315539431228570e-02, +-1.380671561997795158e-02, +-1.378025544691917001e-02, +-1.375377491961288570e-02, +-1.372727408256622234e-02, +-1.370075298031515898e-02, +-1.367421165742572185e-02, +-1.364765015849249245e-02, +-1.362106852814045158e-02, +-1.359446681102267039e-02, +-1.356784505182214058e-02, +-1.354120329525023043e-02, +-1.351454158604798415e-02, +-1.348785996898465948e-02, +-1.346115848885884141e-02, +-1.343443719049768753e-02, +-1.340769611875721433e-02, +-1.338093531852171079e-02, +-1.335415483470396049e-02, +-1.332735471224577063e-02, +-1.330053499611663116e-02, +-1.327369573131475210e-02, +-1.324683696286655180e-02, +-1.321995873582662052e-02, +-1.319306109527726249e-02, +-1.316614408632930597e-02, +-1.313920775412099132e-02, +-1.311225214381884357e-02, +-1.308527730061692824e-02, +-1.305828326973724855e-02, +-1.303127009642903247e-02, +-1.300423782596952724e-02, +-1.297718650366294635e-02, +-1.295011617484150869e-02, +-1.292302688486405768e-02, +-1.289591867911728945e-02, +-1.286879160301494449e-02, +-1.284164570199751269e-02, +-1.281448102153296374e-02, +-1.278729760711582071e-02, +-1.276009550426791296e-02, +-1.273287475853718265e-02, +-1.270563541549935352e-02, +-1.267837752075564629e-02, +-1.265110111993477532e-02, +-1.262380625869120344e-02, +-1.259649298270644306e-02, +-1.256916133768777935e-02, +-1.254181136936922090e-02, +-1.251444312351075207e-02, +-1.248705664589870069e-02, +-1.245965198234489507e-02, +-1.243222917868783660e-02, +-1.240478828079137445e-02, +-1.237732933454516356e-02, +-1.234985238586491438e-02, +-1.232235748069191936e-02, +-1.229484466499306330e-02, +-1.226731398476038799e-02, +-1.223976548601189186e-02, +-1.221219921479039898e-02, +-1.218461521716442814e-02, +-1.215701353922750243e-02, +-1.212939422709845283e-02, +-1.210175732692076248e-02, +-1.207410288486339064e-02, +-1.204643094711961918e-02, +-1.201874155990818177e-02, +-1.199103476947188662e-02, +-1.196331062207874399e-02, +-1.193556916402125842e-02, +-1.190781044161602284e-02, +-1.188003450120470560e-02, +-1.185224138915266616e-02, +-1.182443115185005840e-02, +-1.179660383571101354e-02, +-1.176875948717402698e-02, +-1.174089815270105454e-02, +-1.171301987877883255e-02, +-1.168512471191715703e-02, +-1.165721269865042410e-02, +-1.162928388553604100e-02, +-1.160133831915563171e-02, +-1.157337604611417999e-02, +-1.154539711304039713e-02, +-1.151740156658585465e-02, +-1.148938945342624016e-02, +-1.146136082025978227e-02, +-1.143331571380857246e-02, +-1.140525418081723974e-02, +-1.137717626805384054e-02, +-1.134908202230943720e-02, +-1.132097149039755501e-02, +-1.129284471915511720e-02, +-1.126470175544115604e-02, +-1.123654264613781206e-02, +-1.120836743814967312e-02, +-1.118017617840400858e-02, +-1.115196891384998695e-02, +-1.112374569145980867e-02, +-1.109550655822725586e-02, +-1.106725156116900553e-02, +-1.103898074732309435e-02, +-1.101069416375021273e-02, +-1.098239185753276809e-02, +-1.095407387577522138e-02, +-1.092574026560352157e-02, +-1.089739107416533986e-02, +-1.086902634863028648e-02, +-1.084064613618944059e-02, +-1.081225048405546826e-02, +-1.078383943946201705e-02, +-1.075541304966469609e-02, +-1.072697136193966408e-02, +-1.069851442358504476e-02, +-1.067004228191927029e-02, +-1.064155498428237014e-02, +-1.061305257803510892e-02, +-1.058453511055926916e-02, +-1.055600262925701985e-02, +-1.052745518155175954e-02, +-1.049889281488701823e-02, +-1.047031557672735251e-02, +-1.044172351455714860e-02, +-1.041311667588219574e-02, +-1.038449510822771031e-02, +-1.035585885913928132e-02, +-1.032720797618313577e-02, +-1.029854250694496945e-02, +-1.026986249903088025e-02, +-1.024116800006684251e-02, +-1.021245905769874521e-02, +-1.018373571959181254e-02, +-1.015499803343162047e-02, +-1.012624604692263786e-02, +-1.009747980778955348e-02, +-1.006869936377590563e-02, +-1.003990476264500151e-02, +-1.001109605217936037e-02, +-9.982273280180814154e-03, +-9.953436494469898588e-03, +-9.924585742886836773e-03, +-9.895721073290194778e-03, +-9.866842533557929409e-03, +-9.837950171586765449e-03, +-9.809044035291772379e-03, +-9.780124172607247354e-03, +-9.751190631485506105e-03, +-9.722243459897949788e-03, +-9.693282705833793436e-03, +-9.664308417301080770e-03, +-9.635320642325959084e-03, +-9.606319428952960274e-03, +-9.577304825244182043e-03, +-9.548276879280458845e-03, +-9.519235639159868284e-03, +-9.490181152998938482e-03, +-9.461113468931739087e-03, +-9.432032635110278521e-03, +-9.402938699703655701e-03, +-9.373831710899236183e-03, +-9.344711716901387549e-03, +-9.315578765931760430e-03, +-9.286432906229795045e-03, +-9.257274186051937109e-03, +-9.228102653671915387e-03, +-9.198918357380148417e-03, +-9.169721345484613609e-03, +-9.140511666309629468e-03, +-9.111289368196981431e-03, +-9.082054499504546227e-03, +-9.052807108607429862e-03, +-9.023547243897086373e-03, +-8.994274953781761922e-03, +-8.964990286685580595e-03, +-8.935693291049718809e-03, +-8.906384015330982840e-03, +-8.877062508002891289e-03, +-8.847728817555050584e-03, +-8.818382992492646705e-03, +-8.789025081337486014e-03, +-8.759655132626602281e-03, +-8.730273194913503940e-03, +-8.700879316766744684e-03, +-8.671473546771064911e-03, +-8.642055933526541708e-03, +-8.612626525648984371e-03, +-8.583185371769058367e-03, +-8.553732520533447597e-03, +-8.524268020603398971e-03, +-8.494791920655841294e-03, +-8.465304269382634139e-03, +-8.435805115490807235e-03, +-8.406294507701804128e-03, +-8.376772494752599343e-03, +-8.347239125394412956e-03, +-8.317694448393225803e-03, +-8.288138512529887036e-03, +-8.258571366599614522e-03, +-8.228993059412279334e-03, +-8.199403639791602583e-03, +-8.169803156576270833e-03, +-8.140191658618477211e-03, +-8.110569194785274480e-03, +-8.080935813957012062e-03, +-8.051291565028612790e-03, +-8.021636496908624014e-03, +-7.991970658519630469e-03, +-7.962294098797416397e-03, +-7.932606866692103534e-03, +-7.902909011166671382e-03, +-7.873200581198143769e-03, +-7.843481625776726682e-03, +-7.813752193906184709e-03, +-7.784012334603137608e-03, +-7.754262096897414185e-03, +-7.724501529832393174e-03, +-7.694730682463815814e-03, +-7.664949603860849239e-03, +-7.635158343105317991e-03, +-7.605356949292009332e-03, +-7.575545471527863998e-03, +-7.545723958933121117e-03, +-7.515892460639859302e-03, +-7.486051025793086060e-03, +-7.456199703550043037e-03, +-7.426338543080390764e-03, +-7.396467593565514767e-03, +-7.366586904199548189e-03, +-7.336696524188034314e-03, +-7.306796502749146952e-03, +-7.276886889112241935e-03, +-7.246967732519007249e-03, +-7.217039082222820312e-03, +-7.187100987488222355e-03, +-7.157153497591934102e-03, +-7.127196661821575546e-03, +-7.097230529476718057e-03, +-7.067255149867486194e-03, +-7.037270572316405189e-03, +-7.007276846155942839e-03, +-6.977274020730524391e-03, +-6.947262145394868076e-03, +-6.917241269515282676e-03, +-6.887211442468256332e-03, +-6.857172713641501716e-03, +-6.827125132433223102e-03, +-6.797068748252462454e-03, +-6.767003610518151392e-03, +-6.736929768660408768e-03, +-6.706847272119152020e-03, +-6.676756170344608915e-03, +-6.646656512797468469e-03, +-6.616548348948417778e-03, +-6.586431728278270385e-03, +-6.556306700277325303e-03, +-6.526173314446431263e-03, +-6.496031620295500061e-03, +-6.465881667344653208e-03, +-6.435723505123507222e-03, +-6.405557183171344503e-03, +-6.375382751036422907e-03, +-6.345200258277026995e-03, +-6.315009754460100197e-03, +-6.284811289162420961e-03, +-6.254604911969291296e-03, +-6.224390672475540315e-03, +-6.194168620284968250e-03, +-6.163938805009756654e-03, +-6.133701276271576880e-03, +-6.103456083700184095e-03, +-6.073203276934618575e-03, +-6.042942905621644448e-03, +-6.012675019417728153e-03, +-5.982399667986550845e-03, +-5.952116901000921792e-03, +-5.921826768141265698e-03, +-5.891529319096830072e-03, +-5.861224603564269692e-03, +-5.830912671248755959e-03, +-5.800593571863182397e-03, +-5.770267355128495118e-03, +-5.739934070772837599e-03, +-5.709593768532748512e-03, +-5.679246498151680270e-03, +-5.648892309381250629e-03, +-5.618531251979863583e-03, +-5.588163375713777956e-03, +-5.557788730356495038e-03, +-5.527407365688241647e-03, +-5.497019331497004883e-03, +-5.466624677577144355e-03, +-5.436223453730440816e-03, +-5.405815709765388402e-03, +-5.375401495497465244e-03, +-5.344980860748288660e-03, +-5.314553855346832063e-03, +-5.284120529127882791e-03, +-5.253680931933405601e-03, +-5.223235113611039530e-03, +-5.192783124015273172e-03, +-5.162325013006575578e-03, +-5.131860830451771827e-03, +-5.101390626223393371e-03, +-5.070914450199955591e-03, +-5.040432352266150350e-03, +-5.009944382312395833e-03, +-4.979450590234942367e-03, +-4.948951025935212356e-03, +-4.918445739320872340e-03, +-4.887934780304378432e-03, +-4.857418198804301646e-03, +-4.826896044743823021e-03, +-4.796368368051905431e-03, +-4.765835218662503418e-03, +-4.735296646514795642e-03, +-4.704752701552474513e-03, +-4.674203433724830395e-03, +-4.643648892985291834e-03, +-4.613089129292746553e-03, +-4.582524192609889122e-03, +-4.551954132905215028e-03, +-4.521379000150708288e-03, +-4.490798844322927384e-03, +-4.460213715403327922e-03, +-4.429623663376955518e-03, +-4.399028738233503981e-03, +-4.368428989966668258e-03, +-4.337824468574303163e-03, +-4.307215224057680050e-03, +-4.276601306422662084e-03, +-4.245982765678183758e-03, +-4.215359651837571019e-03, +-4.184732014917064147e-03, +-4.154099904936984361e-03, +-4.123463371920928905e-03, +-4.092822465896041664e-03, +-4.062177236892240348e-03, +-4.031527734943337118e-03, +-4.000874010085628263e-03, +-3.970216112358929822e-03, +-3.939554091806051102e-03, +-3.908887998472171041e-03, +-3.878217882405968816e-03, +-3.847543793658141954e-03, +-3.816865782282754648e-03, +-3.786183898335713366e-03, +-3.755498191875946464e-03, +-3.724808712964602746e-03, +-3.694115511665332051e-03, +-3.663418638043477310e-03, +-3.632718142167282345e-03, +-3.602014074106326715e-03, +-3.571306483932900483e-03, +-3.540595421720351462e-03, +-3.509880937545052388e-03, +-3.479163081483921567e-03, +-3.448441903616419110e-03, +-3.417717454023086725e-03, +-3.386989782785956252e-03, +-3.356258939988847161e-03, +-3.325524975716734680e-03, +-3.294787940056042100e-03, +-3.264047883093881396e-03, +-3.233304854919120518e-03, +-3.202558905620975227e-03, +-3.171810085290307536e-03, +-3.141058444018122574e-03, +-3.110304031896735620e-03, +-3.079546899018997981e-03, +-3.048787095478522509e-03, +-3.018024671368972362e-03, +-2.987259676785120922e-03, +-2.956492161821458377e-03, +-2.925722176573261613e-03, +-2.894949771136023919e-03, +-2.864174995604858685e-03, +-2.833397900075608749e-03, +-2.802618534643407447e-03, +-2.771836949403952335e-03, +-2.741053194452055825e-03, +-2.710267319882780131e-03, +-2.679479375790665748e-03, +-2.648689412269973013e-03, +-2.617897479413935739e-03, +-2.587103627315878382e-03, +-2.556307906067749325e-03, +-2.525510365761259729e-03, +-2.494711056487103340e-03, +-2.463910028335219299e-03, +-2.433107331394033200e-03, +-2.402303015751574688e-03, +-2.371497131494182918e-03, +-2.340689728706955852e-03, +-2.309880857474005695e-03, +-2.279070567877865619e-03, +-2.248258909999745637e-03, +-2.217445933918781465e-03, +-2.186631689713127834e-03, +-2.155816227458535583e-03, +-2.124999597229621472e-03, +-2.094181849098416658e-03, +-2.063363033135508142e-03, +-2.032543199409231685e-03, +-2.001722397985979292e-03, +-1.970900678929395598e-03, +-1.940078092301533198e-03, +-1.909254688161347770e-03, +-1.878430516565877907e-03, +-1.847605627569437383e-03, +-1.816780071223889894e-03, +-1.785953897578052962e-03, +-1.755127156677968765e-03, +-1.724299898567322213e-03, +-1.693472173286165051e-03, +-1.662644030872048638e-03, +-1.631815521359235299e-03, +-1.600986694778979346e-03, +-1.570157601158750360e-03, +-1.539328290523350349e-03, +-1.508498812893476751e-03, +-1.477669218286823327e-03, +-1.446839556717329249e-03, +-1.416009878195426726e-03, +-1.385180232727287923e-03, +-1.354350670315927372e-03, +-1.323521240959776900e-03, +-1.292691994653956964e-03, +-1.261862981388812109e-03, +-1.231034251151064780e-03, +-1.200205853923196021e-03, +-1.169377839682855672e-03, +-1.138550258403985384e-03, +-1.107723160055358851e-03, +-1.076896594601885453e-03, +-1.046070612002974413e-03, +-1.015245262214519535e-03, +-9.844205951864129153e-04, +-9.535966608645267536e-04, +-9.227735091890890010e-04, +-8.919511900959694413e-04, +-8.611297535152339071e-04, +-8.303092493722624180e-04, +-7.994897275869803721e-04, +-7.686712380741221162e-04, +-7.378538307424692931e-04, +-7.070375554959621497e-04, +-6.762224622324291765e-04, +-6.454086008440111395e-04, +-6.145960212174324559e-04, +-5.837847732333983778e-04, +-5.529749067668647414e-04, +-5.221664716862677502e-04, +-4.913595178546452565e-04, +-4.605540951281848522e-04, +-4.297502533573423320e-04, +-3.989480423860809082e-04, +-3.681475120521261074e-04, +-3.373487121862043885e-04, +-3.065516926131647509e-04, +-2.757565031505239514e-04, +-2.449631936097573012e-04, +-2.141718137948507409e-04, +-1.833824135034172170e-04, +-1.525950425261055196e-04, +-1.218097506460023052e-04, +-9.102658763975618353e-05, +-6.024560327612199994e-05, +-2.946684731725605054e-05, + 1.309630482909408198e-06, + 3.208378037668672365e-05, + 6.285555262511502840e-05, + 9.362489749598110840e-05, + 1.243917652654441758e-04, + 1.551561062167414737e-04, + 1.859178706416422658e-04, + 2.166770088393267307e-04, + 2.474334711171502564e-04, + 2.781872077903825547e-04, + 3.089381691829722943e-04, + 3.396863056264243013e-04, + 3.704315674612564287e-04, + 4.011739050357031214e-04, + 4.319132687071667296e-04, + 4.626496088410995337e-04, + 4.933828758115958810e-04, + 5.241130200019900693e-04, + 5.548399918037257407e-04, + 5.855637416178196631e-04, + 6.162842198537345391e-04, + 6.470013769301451037e-04, + 6.777151632746717357e-04, + 7.084255293246542523e-04, + 7.391324255260206533e-04, + 7.698358023347474325e-04, + 8.005356102155637395e-04, + 8.312317996433975969e-04, + 8.619243211022631834e-04, + 8.926131250860233537e-04, + 9.232981620981246590e-04, + 9.539793826521913815e-04, + 9.846567372717601220e-04, + 1.015330176489852082e-03, + 1.045999650850411690e-03, + 1.076665110906342791e-03, + 1.107326507221978017e-03, + 1.137983790371102514e-03, + 1.168636910938575680e-03, + 1.199285819519048781e-03, + 1.229930466718394356e-03, + 1.260570803152609226e-03, + 1.291206779448564107e-03, + 1.321838346243740803e-03, + 1.352465454187004590e-03, + 1.383088053937481850e-03, + 1.413706096165996207e-03, + 1.444319531553795669e-03, + 1.474928310794162024e-03, + 1.505532384590447343e-03, + 1.536131703658352981e-03, + 1.566726218724840379e-03, + 1.597315880527851346e-03, + 1.627900639817577225e-03, + 1.658480447355361676e-03, + 1.689055253914453986e-03, + 1.719625010279726956e-03, + 1.750189667248476825e-03, + 1.780749175629269898e-03, + 1.811303486243415325e-03, + 1.841852549923657769e-03, + 1.872396317515626334e-03, + 1.902934739876735839e-03, + 1.933467767876917995e-03, + 1.963995352398386577e-03, + 1.994517444336377926e-03, + 2.025033994598053090e-03, + 2.055544954103918995e-03, + 2.086050273786736221e-03, + 2.116549904592096229e-03, + 2.147043797479010734e-03, + 2.177531903418800617e-03, + 2.208014173396537910e-03, + 2.238490558409758201e-03, + 2.268961009469900019e-03, + 2.299425477601207621e-03, + 2.329883913841459143e-03, + 2.360336269241738050e-03, + 2.390782494867167360e-03, + 2.421222541795793343e-03, + 2.451656361120069585e-03, + 2.482083903945511705e-03, + 2.512505121392345341e-03, + 2.542919964593540715e-03, + 2.573328384697083811e-03, + 2.603730332864882206e-03, + 2.634125760272493146e-03, + 2.664514618110393803e-03, + 2.694896857582871480e-03, + 2.725272429908783423e-03, + 2.755641286321281868e-03, + 2.786003378068578618e-03, + 2.816358656412846963e-03, + 2.846707072631642858e-03, + 2.877048578016622084e-03, + 2.907383123874990923e-03, + 2.937710661528367736e-03, + 2.968031142313591782e-03, + 2.998344517582400125e-03, + 3.028650738702217370e-03, + 3.058949757055047600e-03, + 3.089241524038906835e-03, + 3.119525991066685044e-03, + 3.149803109566774555e-03, + 3.180072830983635569e-03, + 3.210335106776676401e-03, + 3.240589888421715851e-03, + 3.270837127409671318e-03, + 3.301076775248015099e-03, + 3.331308783459662869e-03, + 3.361533103583719175e-03, + 3.391749687175216361e-03, + 3.421958485805884354e-03, + 3.452159451063025256e-03, + 3.482352534550946233e-03, + 3.512537687889697932e-03, + 3.542714862716661757e-03, + 3.572884010684596132e-03, + 3.603045083464089839e-03, + 3.633198032741589197e-03, + 3.663342810220860009e-03, + 3.693479367622542163e-03, + 3.723607656683872516e-03, + 3.753727629159289442e-03, + 3.783839236820163519e-03, + 3.813942431455536949e-03, + 3.844037164871068855e-03, + 3.874123388890399634e-03, + 3.904201055353901089e-03, + 3.934270116120118857e-03, + 3.964330523064660446e-03, + 3.994382228080897365e-03, + 4.024425183079809870e-03, + 4.054459339990630976e-03, + 4.084484650759818633e-03, + 4.114501067352430499e-03, + 4.144508541751031928e-03, + 4.174507025956481800e-03, + 4.204496471987615933e-03, + 4.234476831881872454e-03, + 4.264448057695028119e-03, + 4.294410101500728202e-03, + 4.324362915391782337e-03, + 4.354306451479070771e-03, + 4.384240661892230446e-03, + 4.414165498779491076e-03, + 4.444080914308312646e-03, + 4.473986860664387090e-03, + 4.503883290052979223e-03, + 4.533770154697885045e-03, + 4.563647406842148181e-03, + 4.593514998747810080e-03, + 4.623372882696648138e-03, + 4.653221010989081960e-03, + 4.683059335945602766e-03, + 4.712887809905475824e-03, + 4.742706385228195008e-03, + 4.772515014292381258e-03, + 4.802313649496297784e-03, + 4.832102243258534421e-03, + 4.861880748016841024e-03, + 4.891649116229518715e-03, + 4.921407300374241144e-03, + 4.951155252949403229e-03, + 4.980892926473030023e-03, + 5.010620273483559935e-03, + 5.040337246539525543e-03, + 5.070043798220378456e-03, + 5.099739881125300162e-03, + 5.129425447874689549e-03, + 5.159100451109034473e-03, + 5.188764843489674164e-03, + 5.218418577698493051e-03, + 5.248061606438744753e-03, + 5.277693882433856856e-03, + 5.307315358428788335e-03, + 5.336925987189501328e-03, + 5.366525721502760776e-03, + 5.396114514176693876e-03, + 5.425692318040529864e-03, + 5.455259085945337282e-03, + 5.484814770762970124e-03, + 5.514359325387395774e-03, + 5.543892702733687131e-03, + 5.573414855738716492e-03, + 5.602925737360908362e-03, + 5.632425300580962829e-03, + 5.661913498400824273e-03, + 5.691390283845011028e-03, + 5.720855609959380264e-03, + 5.750309429812579080e-03, + 5.779751696494906527e-03, + 5.809182363118914685e-03, + 5.838601382819922150e-03, + 5.868008708755028703e-03, + 5.897404294104415488e-03, + 5.926788092070157596e-03, + 5.956160055877767964e-03, + 5.985520138774277042e-03, + 6.014868294030630176e-03, + 6.044204474939787221e-03, + 6.073528634818264708e-03, + 6.102840727004918073e-03, + 6.132140704862283458e-03, + 6.161428521775541220e-03, + 6.190704131153260993e-03, + 6.219967486427092906e-03, + 6.249218541052529129e-03, + 6.278457248507829207e-03, + 6.307683562295437335e-03, + 6.336897435940662231e-03, + 6.366098822993131699e-03, + 6.395287677025697157e-03, + 6.424463951634997415e-03, + 6.453627600442019864e-03, + 6.482778577091031884e-03, + 6.511916835250979897e-03, + 6.541042328614366137e-03, + 6.570155010898059630e-03, + 6.599254835842941445e-03, + 6.628341757214735626e-03, + 6.657415728802836517e-03, + 6.686476704421781547e-03, + 6.715524637909950183e-03, + 6.744559483130958648e-03, + 6.773581193972604345e-03, + 6.802589724347616988e-03, + 6.831585028193360234e-03, + 6.860567059472352965e-03, + 6.889535772172140048e-03, + 6.918491120304796210e-03, + 6.947433057908257437e-03, + 6.976361539044563694e-03, + 7.005276517802094122e-03, + 7.034177948293744709e-03, + 7.063065784658460917e-03, + 7.091939981059990419e-03, + 7.120800491688281282e-03, + 7.149647270758363073e-03, + 7.178480272511163912e-03, + 7.207299451213159194e-03, + 7.236104761157165222e-03, + 7.264896156661199492e-03, + 7.293673592069957815e-03, + 7.322437021753460361e-03, + 7.351186400108559137e-03, + 7.379921681557733218e-03, + 7.408642820549786109e-03, + 7.437349771560259476e-03, + 7.466042489090502464e-03, + 7.494720927668960600e-03, + 7.523385041850157509e-03, + 7.552034786215360181e-03, + 7.580670115372376006e-03, + 7.609290983956251003e-03, + 7.637897346628189088e-03, + 7.666489158077011840e-03, + 7.695066373017785469e-03, + 7.723628946193288394e-03, + 7.752176832372957398e-03, + 7.780709986353544216e-03, + 7.809228362958900438e-03, + 7.837731917040697410e-03, + 7.866220603477320356e-03, + 7.894694377175191097e-03, + 7.923153193068329173e-03, + 7.951597006117468863e-03, + 7.980025771312137389e-03, + 8.008439443668779675e-03, + 8.036837978232356031e-03, + 8.065221330075027228e-03, + 8.093589454297608204e-03, + 8.121942306028409261e-03, + 8.150279840424042715e-03, + 8.178602012669166157e-03, + 8.206908777977072258e-03, + 8.235200091588840490e-03, + 8.263475908774502859e-03, + 8.291736184831900724e-03, + 8.319980875088254721e-03, + 8.348209934898221871e-03, + 8.376423319646119497e-03, + 8.404620984744773371e-03, + 8.432802885635450052e-03, + 8.460968977788831807e-03, + 8.489119216704092002e-03, + 8.517253557909630624e-03, + 8.545371956962718660e-03, + 8.573474369450268320e-03, + 8.601560750987786996e-03, + 8.629631057220766774e-03, + 8.657685243823320942e-03, + 8.685723266499719222e-03, + 8.713745080983248056e-03, + 8.741750643036881943e-03, + 8.769739908453153335e-03, + 8.797712833054683462e-03, + 8.825669372693337525e-03, + 8.853609483251386955e-03, + 8.881533120640636852e-03, + 8.909440240802769459e-03, + 8.937330799710116111e-03, + 8.965204753364390891e-03, + 8.993062057798238002e-03, + 9.020902669073868271e-03, + 9.048726543284486834e-03, + 9.076533636553177700e-03, + 9.104323905033750303e-03, + 9.132097304910305816e-03, + 9.159853792398081965e-03, + 9.187593323742328927e-03, + 9.215315855219681496e-03, + 9.243021343137000287e-03, + 9.270709743832710945e-03, + 9.298381013675229012e-03, + 9.326035109064965273e-03, + 9.353671986432724600e-03, + 9.381291602240871691e-03, + 9.408893912983004940e-03, + 9.436478875183739595e-03, + 9.464046445399205629e-03, + 9.491596580216728543e-03, + 9.519129236255717552e-03, + 9.546644370166383620e-03, + 9.574141938631323262e-03, + 9.601621898364137708e-03, + 9.629084206110796393e-03, + 9.656528818648722756e-03, + 9.683955692787305988e-03, + 9.711364785367786537e-03, + 9.738756053263946527e-03, + 9.766129453380968314e-03, + 9.793484942656907263e-03, + 9.820822478061519076e-03, + 9.848142016597080314e-03, + 9.875443515298065744e-03, + 9.902726931231691301e-03, + 9.929992221497690313e-03, + 9.957239343227912778e-03, + 9.984468253587406097e-03, + 1.001167890977357200e-02, + 1.003887126901667828e-02, + 1.006604528857966280e-02, + 1.009320092575882559e-02, + 1.012033813788293379e-02, + 1.014745688231428501e-02, + 1.017455711644785904e-02, + 1.020163879771202910e-02, + 1.022870188356817499e-02, + 1.025574633151145852e-02, + 1.028277209906983472e-02, + 1.030977914380528868e-02, + 1.033676742331273227e-02, + 1.036373689522116642e-02, + 1.039068751719290223e-02, + 1.041761924692385759e-02, + 1.044453204214422851e-02, + 1.047142586061740495e-02, + 1.049830066014132042e-02, + 1.052515639854725675e-02, + 1.055199303370108616e-02, + 1.057881052350240735e-02, + 1.060560882588510757e-02, + 1.063238789881710070e-02, + 1.065914770030110953e-02, + 1.068588818837360940e-02, + 1.071260932110607023e-02, + 1.073931105660403014e-02, + 1.076599335300774084e-02, + 1.079265616849188654e-02, + 1.081929946126632819e-02, + 1.084592318957505568e-02, + 1.087252731169735358e-02, + 1.089911178594732931e-02, + 1.092567657067380731e-02, + 1.095222162426075403e-02, + 1.097874690512700042e-02, + 1.100525237172708670e-02, + 1.103173798255004980e-02, + 1.105820369612082674e-02, + 1.108464947099927975e-02, + 1.111107526578077910e-02, + 1.113748103909601751e-02, + 1.116386674961167454e-02, + 1.119023235602939481e-02, + 1.121657781708713594e-02, + 1.124290309155790563e-02, + 1.126920813825114075e-02, + 1.129549291601166829e-02, + 1.132175738372020665e-02, + 1.134800150029396243e-02, + 1.137422522468546984e-02, + 1.140042851588409130e-02, + 1.142661133291465736e-02, + 1.145277363483892044e-02, + 1.147891538075435265e-02, + 1.150503652979509121e-02, + 1.153113704113140590e-02, + 1.155721687397059591e-02, + 1.158327598755583103e-02, + 1.160931434116756547e-02, + 1.163533189412240161e-02, + 1.166132860577393481e-02, + 1.168730443551228675e-02, + 1.171325934276499364e-02, + 1.173919328699583008e-02, + 1.176510622770624535e-02, + 1.179099812443410757e-02, + 1.181686893675495953e-02, + 1.184271862428115142e-02, + 1.186854714666218599e-02, + 1.189435446358535348e-02, + 1.192014053477477922e-02, + 1.194590531999246107e-02, + 1.197164877903759278e-02, + 1.199737087174700817e-02, + 1.202307155799497637e-02, + 1.204875079769389228e-02, + 1.207440855079337967e-02, + 1.210004477728135290e-02, + 1.212565943718301939e-02, + 1.215125249056216335e-02, + 1.217682389752004421e-02, + 1.220237361819612870e-02, + 1.222790161276790522e-02, + 1.225340784145121514e-02, + 1.227889226450022166e-02, + 1.230435484220693612e-02, + 1.232979553490240465e-02, + 1.235521430295510176e-02, + 1.238061110677304844e-02, + 1.240598590680195949e-02, + 1.243133866352682734e-02, + 1.245666933747070597e-02, + 1.248197788919592349e-02, + 1.250726427930316971e-02, + 1.253252846843214141e-02, + 1.255777041726126482e-02, + 1.258299008650840163e-02, + 1.260818743692983246e-02, + 1.263336242932151972e-02, + 1.265851502451798179e-02, + 1.268364518339354895e-02, + 1.270875286686132949e-02, + 1.273383803587382901e-02, + 1.275890065142332164e-02, + 1.278394067454100003e-02, + 1.280895806629805608e-02, + 1.283395278780494891e-02, + 1.285892480021182289e-02, + 1.288387406470838104e-02, + 1.290880054252449213e-02, + 1.293370419492930433e-02, + 1.295858498323238482e-02, + 1.298344286878262005e-02, + 1.300827781296952541e-02, + 1.303308977722218188e-02, + 1.305787872300992816e-02, + 1.308264461184218894e-02, + 1.310738740526889816e-02, + 1.313210706487985373e-02, + 1.315680355230555362e-02, + 1.318147682921705366e-02, + 1.320612685732498043e-02, + 1.323075359838158174e-02, + 1.325535701417883579e-02, + 1.327993706655002971e-02, + 1.330449371736853147e-02, + 1.332902692854906306e-02, + 1.335353666204670310e-02, + 1.337802287985754950e-02, + 1.340248554401852511e-02, + 1.342692461660795200e-02, + 1.345134005974457474e-02, + 1.347573183558889789e-02, + 1.350009990634197868e-02, + 1.352444423424666899e-02, + 1.354876478158667692e-02, + 1.357306151068710109e-02, + 1.359733438391470643e-02, + 1.362158336367735000e-02, + 1.364580841242479282e-02, + 1.367000949264805289e-02, + 1.369418656687987519e-02, + 1.371833959769456872e-02, + 1.374246854770854939e-02, + 1.376657337957955772e-02, + 1.379065405600765799e-02, + 1.381471053973434837e-02, + 1.383874279354365376e-02, + 1.386275078026112141e-02, + 1.388673446275462582e-02, + 1.391069380393398537e-02, + 1.393462876675162498e-02, + 1.395853931420175907e-02, + 1.398242540932139594e-02, + 1.400628701518943919e-02, + 1.403012409492737297e-02, + 1.405393661169943714e-02, + 1.407772452871198197e-02, + 1.410148780921439970e-02, + 1.412522641649818084e-02, + 1.414894031389815100e-02, + 1.417262946479151339e-02, + 1.419629383259827723e-02, + 1.421993338078134626e-02, + 1.424354807284685526e-02, + 1.426713787234343452e-02, + 1.429070274286335131e-02, + 1.431424264804133199e-02, + 1.433775755155594633e-02, + 1.436124741712811737e-02, + 1.438471220852291337e-02, + 1.440815188954805773e-02, + 1.443156642405502878e-02, + 1.445495577593878915e-02, + 1.447831990913747528e-02, + 1.450165878763296813e-02, + 1.452497237545052715e-02, + 1.454826063665949631e-02, + 1.457152353537244371e-02, + 1.459476103574611737e-02, + 1.461797310198072360e-02, + 1.464115969832071283e-02, + 1.466432078905413952e-02, + 1.468745633851312703e-02, + 1.471056631107372191e-02, + 1.473365067115654098e-02, + 1.475670938322566801e-02, + 1.477974241179001377e-02, + 1.480274972140232029e-02, + 1.482573127665974370e-02, + 1.484868704220373113e-02, + 1.487161698272034330e-02, + 1.489452106294013832e-02, + 1.491739924763777446e-02, + 1.494025150163304748e-02, + 1.496307778979000074e-02, + 1.498587807701745774e-02, + 1.500865232826878275e-02, + 1.503140050854270132e-02, + 1.505412258288214844e-02, + 1.507681851637540302e-02, + 1.509948827415529514e-02, + 1.512213182140023822e-02, + 1.514474912333287418e-02, + 1.516734014522177522e-02, + 1.518990485238003868e-02, + 1.521244321016657422e-02, + 1.523495518398491379e-02, + 1.525744073928447450e-02, + 1.527989984155975201e-02, + 1.530233245635058241e-02, + 1.532473854924262975e-02, + 1.534711808586660363e-02, + 1.536947103189938157e-02, + 1.539179735306288148e-02, + 1.541409701512518049e-02, + 1.543636998389988010e-02, + 1.545861622524626403e-02, + 1.548083570506953929e-02, + 1.550302838932107741e-02, + 1.552519424399769789e-02, + 1.554733323514277156e-02, + 1.556944532884523870e-02, + 1.559153049124041568e-02, + 1.561358868850950057e-02, + 1.563561988688036072e-02, + 1.565762405262655435e-02, + 1.567960115206841476e-02, + 1.570155115157246054e-02, + 1.572347401755153778e-02, + 1.574536971646494851e-02, + 1.576723821481855123e-02, + 1.578907947916494831e-02, + 1.581089347610295515e-02, + 1.583268017227850918e-02, + 1.585443953438387191e-02, + 1.587617152915827418e-02, + 1.589787612338756234e-02, + 1.591955328390476723e-02, + 1.594120297758947272e-02, + 1.596282517136862061e-02, + 1.598441983221571272e-02, + 1.600598692715175450e-02, + 1.602752642324457855e-02, + 1.604903828760909784e-02, + 1.607052248740784006e-02, + 1.609197898985011838e-02, + 1.611340776219304799e-02, + 1.613480877174059899e-02, + 1.615618198584457821e-02, + 1.617752737190399082e-02, + 1.619884489736545322e-02, + 1.622013452972293629e-02, + 1.624139623651846970e-02, + 1.626262998534125023e-02, + 1.628383574382859939e-02, + 1.630501347966525905e-02, + 1.632616316058392927e-02, + 1.634728475436499073e-02, + 1.636837822883713961e-02, + 1.638944355187642310e-02, + 1.641048069140756127e-02, + 1.643148961540263561e-02, + 1.645247029188243865e-02, + 1.647342268891547473e-02, + 1.649434677461842844e-02, + 1.651524251715670230e-02, + 1.653610988474329621e-02, + 1.655694884564022640e-02, + 1.657775936815738399e-02, + 1.659854142065329830e-02, + 1.661929497153484189e-02, + 1.664001998925773371e-02, + 1.666071644232578614e-02, + 1.668138429929192507e-02, + 1.670202352875729823e-02, + 1.672263409937214951e-02, + 1.674321597983527421e-02, + 1.676376913889424808e-02, + 1.678429354534544116e-02, + 1.680478916803441330e-02, + 1.682525597585551175e-02, + 1.684569393775195781e-02, + 1.686610302271623896e-02, + 1.688648319978979309e-02, + 1.690683443806317507e-02, + 1.692715670667602895e-02, + 1.694744997481760843e-02, + 1.696771421172593025e-02, + 1.698794938668884286e-02, + 1.700815546904317979e-02, + 1.702833242817531831e-02, + 1.704848023352099548e-02, + 1.706859885456572107e-02, + 1.708868826084415996e-02, + 1.710874842194097870e-02, + 1.712877930749012387e-02, + 1.714878088717560964e-02, + 1.716875313073077530e-02, + 1.718869600793892366e-02, + 1.720860948863329673e-02, + 1.722849354269673922e-02, + 1.724834814006235076e-02, + 1.726817325071285450e-02, + 1.728796884468110709e-02, + 1.730773489204994256e-02, + 1.732747136295256091e-02, + 1.734717822757188971e-02, + 1.736685545614138904e-02, + 1.738650301894441308e-02, + 1.740612088631500465e-02, + 1.742570902863719434e-02, + 1.744526741634536138e-02, + 1.746479601992436889e-02, + 1.748429480990964374e-02, + 1.750376375688689201e-02, + 1.752320283149249106e-02, + 1.754261200441360052e-02, + 1.756199124638729153e-02, + 1.758134052820213566e-02, + 1.760065982069684495e-02, + 1.761994909476121557e-02, + 1.763920832133555189e-02, + 1.765843747141131875e-02, + 1.767763651603062452e-02, + 1.769680542628654374e-02, + 1.771594417332303037e-02, + 1.773505272833540009e-02, + 1.775413106256953921e-02, + 1.777317914732285883e-02, + 1.779219695394353498e-02, + 1.781118445383135171e-02, + 1.783014161843691700e-02, + 1.784906841926221788e-02, + 1.786796482786070367e-02, + 1.788683081583694601e-02, + 1.790566635484718699e-02, + 1.792447141659886042e-02, + 1.794324597285093872e-02, + 1.796198999541381153e-02, + 1.798070345614980609e-02, + 1.799938632697234073e-02, + 1.801803857984698651e-02, + 1.803666018679050270e-02, + 1.805525111987179090e-02, + 1.807381135121130175e-02, + 1.809234085298131248e-02, + 1.811083959740584365e-02, + 1.812930755676122122e-02, + 1.814774470337513282e-02, + 1.816615100962782128e-02, + 1.818452644795107848e-02, + 1.820287099082882817e-02, + 1.822118461079742097e-02, + 1.823946728044486751e-02, + 1.825771897241184813e-02, + 1.827593965939076914e-02, + 1.829412931412677246e-02, + 1.831228790941691331e-02, + 1.833041541811071540e-02, + 1.834851181311009799e-02, + 1.836657706736945922e-02, + 1.838461115389553382e-02, + 1.840261404574766030e-02, + 1.842058571603763517e-02, + 1.843852613792990730e-02, + 1.845643528464147032e-02, + 1.847431312944203957e-02, + 1.849215964565380926e-02, + 1.850997480665204920e-02, + 1.852775858586468496e-02, + 1.854551095677238123e-02, + 1.856323189290859377e-02, + 1.858092136785970475e-02, + 1.859857935526533848e-02, + 1.861620582881754610e-02, + 1.863380076226186371e-02, + 1.865136412939658039e-02, + 1.866889590407327243e-02, + 1.868639606019649804e-02, + 1.870386457172396044e-02, + 1.872130141266653905e-02, + 1.873870655708859134e-02, + 1.875607997910747407e-02, + 1.877342165289404632e-02, + 1.879073155267245443e-02, + 1.880800965272014930e-02, + 1.882525592736797662e-02, + 1.884247035100046139e-02, + 1.885965289805567602e-02, + 1.887680354302477201e-02, + 1.889392226045304851e-02, + 1.891100902493902253e-02, + 1.892806381113494238e-02, + 1.894508659374673915e-02, + 1.896207734753429727e-02, + 1.897903604731091334e-02, + 1.899596266794405935e-02, + 1.901285718435459862e-02, + 1.902971957151776417e-02, + 1.904654980446215604e-02, + 1.906334785827080644e-02, + 1.908011370808028462e-02, + 1.909684732908172727e-02, + 1.911354869651976998e-02, + 1.913021778569348394e-02, + 1.914685457195597004e-02, + 1.916345903071441092e-02, + 1.918003113743035198e-02, + 1.919657086761929199e-02, + 1.921307819685143248e-02, + 1.922955310075081040e-02, + 1.924599555499621056e-02, + 1.926240553532047872e-02, + 1.927878301751100032e-02, + 1.929512797740961030e-02, + 1.931144039091262088e-02, + 1.932772023397084926e-02, + 1.934396748258971482e-02, + 1.936018211282914889e-02, + 1.937636410080372656e-02, + 1.939251342268251410e-02, + 1.940863005468966562e-02, + 1.942471397310367373e-02, + 1.944076515425797319e-02, + 1.945678357454090970e-02, + 1.947276921039533745e-02, + 1.948872203831911870e-02, + 1.950464203486501971e-02, + 1.952052917664084952e-02, + 1.953638344030917545e-02, + 1.955220480258773250e-02, + 1.956799324024909720e-02, + 1.958374873012124276e-02, + 1.959947124908665433e-02, + 1.961516077408360925e-02, + 1.963081728210507373e-02, + 1.964644075019952169e-02, + 1.966203115547030672e-02, + 1.967758847507650524e-02, + 1.969311268623214276e-02, + 1.970860376620647489e-02, + 1.972406169232462925e-02, + 1.973948644196652641e-02, + 1.975487799256796240e-02, + 1.977023632161992520e-02, + 1.978556140666912211e-02, + 1.980085322531753567e-02, + 1.981611175522284690e-02, + 1.983133697409816820e-02, + 1.984652885971256372e-02, + 1.986168738989035551e-02, + 1.987681254251187635e-02, + 1.989190429551300487e-02, + 1.990696262688533558e-02, + 1.992198751467624124e-02, + 1.993697893698908805e-02, + 1.995193687198278457e-02, + 1.996686129787249298e-02, + 1.998175219292877558e-02, + 1.999660953547875361e-02, + 2.001143330390494496e-02, + 2.002622347664602398e-02, + 2.004098003219696028e-02, + 2.005570294910841503e-02, + 2.007039220598745913e-02, + 2.008504778149695219e-02, + 2.009966965435617745e-02, + 2.011425780334035948e-02, + 2.012881220728116038e-02, + 2.014333284506630850e-02, + 2.015781969564002171e-02, + 2.017227273800243151e-02, + 2.018669195121044688e-02, + 2.020107731437707430e-02, + 2.021542880667165712e-02, + 2.022974640732003865e-02, + 2.024403009560460029e-02, + 2.025827985086418176e-02, + 2.027249565249389721e-02, + 2.028667747994574583e-02, + 2.030082531272804636e-02, + 2.031493913040572849e-02, + 2.032901891260032248e-02, + 2.034306463899023670e-02, + 2.035707628931026497e-02, + 2.037105384335220065e-02, + 2.038499728096428501e-02, + 2.039890658205167212e-02, + 2.041278172657625886e-02, + 2.042662269455686880e-02, + 2.044042946606899197e-02, + 2.045420202124527409e-02, + 2.046794034027487469e-02, + 2.048164440340434836e-02, + 2.049531419093682943e-02, + 2.050894968323253159e-02, + 2.052255086070886234e-02, + 2.053611770384006913e-02, + 2.054965019315758631e-02, + 2.056314830924987208e-02, + 2.057661203276258191e-02, + 2.059004134439838818e-02, + 2.060343622491737220e-02, + 2.061679665513659748e-02, + 2.063012261593057117e-02, + 2.064341408823075485e-02, + 2.065667105302627926e-02, + 2.066989349136335793e-02, + 2.068308138434547111e-02, + 2.069623471313362592e-02, + 2.070935345894620375e-02, + 2.072243760305894286e-02, + 2.073548712680509457e-02, + 2.074850201157538848e-02, + 2.076148223881792154e-02, + 2.077442779003845635e-02, + 2.078733864680007773e-02, + 2.080021479072389698e-02, + 2.081305620348802149e-02, + 2.082586286682878637e-02, + 2.083863476253982466e-02, + 2.085137187247240037e-02, + 2.086407417853556115e-02, + 2.087674166269623197e-02, + 2.088937430697891326e-02, + 2.090197209346601401e-02, + 2.091453500429745274e-02, + 2.092706302167142776e-02, + 2.093955612784360876e-02, + 2.095201430512766763e-02, + 2.096443753589517789e-02, + 2.097682580257560075e-02, + 2.098917908765651416e-02, + 2.100149737368321723e-02, + 2.101378064325908415e-02, + 2.102602887904558501e-02, + 2.103824206376221639e-02, + 2.105042018018640076e-02, + 2.106256321115385424e-02, + 2.107467113955830210e-02, + 2.108674394835159671e-02, + 2.109878162054376269e-02, + 2.111078413920303848e-02, + 2.112275148745570985e-02, + 2.113468364848661296e-02, + 2.114658060553848903e-02, + 2.115844234191261580e-02, + 2.117026884096846404e-02, + 2.118206008612368366e-02, + 2.119381606085454436e-02, + 2.120553674869544644e-02, + 2.121722213323942036e-02, + 2.122887219813760634e-02, + 2.124048692709985114e-02, + 2.125206630389428475e-02, + 2.126361031234752855e-02, + 2.127511893634474391e-02, + 2.128659215982961483e-02, + 2.129802996680429591e-02, + 2.130943234132973152e-02, + 2.132079926752511456e-02, + 2.133213072956850059e-02, + 2.134342671169649902e-02, + 2.135468719820431474e-02, + 2.136591217344573426e-02, + 2.137710162183354898e-02, + 2.138825552783901740e-02, + 2.139937387599217047e-02, + 2.141045665088182892e-02, + 2.142150383715549222e-02, + 2.143251541951957453e-02, + 2.144349138273916183e-02, + 2.145443171163845947e-02, + 2.146533639110017461e-02, + 2.147620540606610604e-02, + 2.148703874153692212e-02, + 2.149783638257215038e-02, + 2.150859831429017058e-02, + 2.151932452186860675e-02, + 2.153001499054376169e-02, + 2.154066970561107491e-02, + 2.155128865242500469e-02, + 2.156187181639896561e-02, + 2.157241918300540837e-02, + 2.158293073777592733e-02, + 2.159340646630133684e-02, + 2.160384635423125144e-02, + 2.161425038727467218e-02, + 2.162461855119966053e-02, + 2.163495083183333140e-02, + 2.164524721506209948e-02, + 2.165550768683172783e-02, + 2.166573223314680052e-02, + 2.167592084007160733e-02, + 2.168607349372928331e-02, + 2.169619018030260679e-02, + 2.170627088603335753e-02, + 2.171631559722276422e-02, + 2.172632430023125824e-02, + 2.173629698147884134e-02, + 2.174623362744474223e-02, + 2.175613422466755181e-02, + 2.176599875974538287e-02, + 2.177582721933551263e-02, + 2.178561959015493793e-02, + 2.179537585897991375e-02, + 2.180509601264632100e-02, + 2.181478003804937157e-02, + 2.182442792214386168e-02, + 2.183403965194414403e-02, + 2.184361521452396135e-02, + 2.185315459701667531e-02, + 2.186265778661543313e-02, + 2.187212477057255688e-02, + 2.188155553620036234e-02, + 2.189095007087046504e-02, + 2.190030836201438749e-02, + 2.190963039712305258e-02, + 2.191891616374724849e-02, + 2.192816564949724711e-02, + 2.193737884204325153e-02, + 2.194655572911509075e-02, + 2.195569629850219542e-02, + 2.196480053805383026e-02, + 2.197386843567900039e-02, + 2.198289997934658319e-02, + 2.199189515708505419e-02, + 2.200085395698299015e-02, + 2.200977636718838212e-02, + 2.201866237590945075e-02, + 2.202751197141395237e-02, + 2.203632514202967171e-02, + 2.204510187614424840e-02, + 2.205384216220523941e-02, + 2.206254598871991782e-02, + 2.207121334425583142e-02, + 2.207984421744016781e-02, + 2.208843859696010131e-02, + 2.209699647156285890e-02, + 2.210551783005561613e-02, + 2.211400266130552836e-02, + 2.212245095423968910e-02, + 2.213086269784536944e-02, + 2.213923788116971617e-02, + 2.214757649331996342e-02, + 2.215587852346340494e-02, + 2.216414396082742877e-02, + 2.217237279469942354e-02, + 2.218056501442709078e-02, + 2.218872060941794871e-02, + 2.219683956913982500e-02, + 2.220492188312059301e-02, + 2.221296754094833834e-02, + 2.222097653227128253e-02, + 2.222894884679782815e-02, + 2.223688447429644777e-02, + 2.224478340459600662e-02, + 2.225264562758550238e-02, + 2.226047113321401663e-02, + 2.226825991149101319e-02, + 2.227601195248615773e-02, + 2.228372724632941143e-02, + 2.229140578321092692e-02, + 2.229904755338120090e-02, + 2.230665254715088336e-02, + 2.231422075489113838e-02, + 2.232175216703324513e-02, + 2.232924677406898997e-02, + 2.233670456655025005e-02, + 2.234412553508953458e-02, + 2.235150967035948177e-02, + 2.235885696309321616e-02, + 2.236616740408414739e-02, + 2.237344098418608818e-02, + 2.238067769431345902e-02, + 2.238787752544070878e-02, + 2.239504046860306755e-02, + 2.240216651489594993e-02, + 2.240925565547530196e-02, + 2.241630788155742071e-02, + 2.242332318441930469e-02, + 2.243030155539818896e-02, + 2.243724298589178795e-02, + 2.244414746735846553e-02, + 2.245101499131701636e-02, + 2.245784554934657229e-02, + 2.246463913308700475e-02, + 2.247139573423854661e-02, + 2.247811534456215302e-02, + 2.248479795587909197e-02, + 2.249144356007138496e-02, + 2.249805214908147388e-02, + 2.250462371491236332e-02, + 2.251115824962775930e-02, + 2.251765574535185416e-02, + 2.252411619426942027e-02, + 2.253053958862590370e-02, + 2.253692592072729234e-02, + 2.254327518294019922e-02, + 2.254958736769194921e-02, + 2.255586246747031884e-02, + 2.256210047482393871e-02, + 2.256830138236189456e-02, + 2.257446518275416439e-02, + 2.258059186873107027e-02, + 2.258668143308381962e-02, + 2.259273386866432129e-02, + 2.259874916838503639e-02, + 2.260472732521914482e-02, + 2.261066833220063896e-02, + 2.261657218242408771e-02, + 2.262243886904488285e-02, + 2.262826838527898926e-02, + 2.263406072440317038e-02, + 2.263981587975505763e-02, + 2.264553384473274450e-02, + 2.265121461279523754e-02, + 2.265685817746240435e-02, + 2.266246453231461622e-02, + 2.266803367099309852e-02, + 2.267356558719993420e-02, + 2.267906027469793195e-02, + 2.268451772731060537e-02, + 2.268993793892231173e-02, + 2.269532090347825201e-02, + 2.270066661498437374e-02, + 2.270597506750731895e-02, + 2.271124625517478152e-02, + 2.271648017217502147e-02, + 2.272167681275724660e-02, + 2.272683617123144595e-02, + 2.273195824196844878e-02, + 2.273704301939985864e-02, + 2.274209049801828933e-02, + 2.274710067237689995e-02, + 2.275207353708998473e-02, + 2.275700908683253240e-02, + 2.276190731634040315e-02, + 2.276676822041031820e-02, + 2.277159179389989449e-02, + 2.277637803172744002e-02, + 2.278112692887248464e-02, + 2.278583848037509310e-02, + 2.279051268133637162e-02, + 2.279514952691817989e-02, + 2.279974901234339130e-02, + 2.280431113289583048e-02, + 2.280883588391989167e-02, + 2.281332326082122913e-02, + 2.281777325906610837e-02, + 2.282218587418185715e-02, + 2.282656110175666775e-02, + 2.283089893743963164e-02, + 2.283519937694062849e-02, + 2.283946241603067653e-02, + 2.284368805054151283e-02, + 2.284787627636588464e-02, + 2.285202708945739333e-02, + 2.285614048583061580e-02, + 2.286021646156104897e-02, + 2.286425501278496059e-02, + 2.286825613569976393e-02, + 2.287221982656365352e-02, + 2.287614608169580288e-02, + 2.288003489747629168e-02, + 2.288388627034612308e-02, + 2.288770019680726880e-02, + 2.289147667342250961e-02, + 2.289521569681580646e-02, + 2.289891726367178706e-02, + 2.290258137073609632e-02, + 2.290620801481545871e-02, + 2.290979719277731405e-02, + 2.291334890155018178e-02, + 2.291686313812348746e-02, + 2.292033989954760792e-02, + 2.292377918293377406e-02, + 2.292718098545423397e-02, + 2.293054530434215227e-02, + 2.293387213689161014e-02, + 2.293716148045772674e-02, + 2.294041333245638858e-02, + 2.294362769036459998e-02, + 2.294680455172008748e-02, + 2.294994391412174747e-02, + 2.295304577522926798e-02, + 2.295611013276330561e-02, + 2.295913698450549600e-02, + 2.296212632829828029e-02, + 2.296507816204521393e-02, + 2.296799248371061974e-02, + 2.297086929131982383e-02, + 2.297370858295908619e-02, + 2.297651035677561113e-02, + 2.297927461097742236e-02, + 2.298200134383368912e-02, + 2.298469055367421965e-02, + 2.298734223888994690e-02, + 2.298995639793270651e-02, + 2.299253302931505635e-02, + 2.299507213161082822e-02, + 2.299757370345440616e-02, + 2.300003774354135444e-02, + 2.300246425062794225e-02, + 2.300485322353138309e-02, + 2.300720466112997353e-02, + 2.300951856236274282e-02, + 2.301179492622967143e-02, + 2.301403375179151070e-02, + 2.301623503817011238e-02, + 2.301839878454810598e-02, + 2.302052499016903758e-02, + 2.302261365433724838e-02, + 2.302466477641816264e-02, + 2.302667835583782976e-02, + 2.302865439208336140e-02, + 2.303059288470261576e-02, + 2.303249383330437799e-02, + 2.303435723755836717e-02, + 2.303618309719496562e-02, + 2.303797141200560061e-02, + 2.303972218184241819e-02, + 2.304143540661857809e-02, + 2.304311108630780272e-02, + 2.304474922094490799e-02, + 2.304634981062547369e-02, + 2.304791285550581922e-02, + 2.304943835580319789e-02, + 2.305092631179560952e-02, + 2.305237672382188727e-02, + 2.305378959228169752e-02, + 2.305516491763547407e-02, + 2.305650270040450478e-02, + 2.305780294117078938e-02, + 2.305906564057714353e-02, + 2.306029079932721271e-02, + 2.306147841818538893e-02, + 2.306262849797677608e-02, + 2.306374103958728355e-02, + 2.306481604396372342e-02, + 2.306585351211341492e-02, + 2.306685344510452443e-02, + 2.306781584406606203e-02, + 2.306874071018758660e-02, + 2.306962804471957007e-02, + 2.307047784897300891e-02, + 2.307129012431986814e-02, + 2.307206487219258181e-02, + 2.307280209408438254e-02, + 2.307350179154921826e-02, + 2.307416396620166552e-02, + 2.307478861971704043e-02, + 2.307537575383133630e-02, + 2.307592537034123398e-02, + 2.307643747110385210e-02, + 2.307691205803734727e-02, + 2.307734913312019243e-02, + 2.307774869839157236e-02, + 2.307811075595141842e-02, + 2.307843530796019685e-02, + 2.307872235663896432e-02, + 2.307897190426950323e-02, + 2.307918395319401642e-02, + 2.307935850581535261e-02, + 2.307949556459705856e-02, + 2.307959513206312221e-02, + 2.307965721079814625e-02, + 2.307968180344731335e-02, + 2.307966891271629947e-02, + 2.307961854137130508e-02, + 2.307953069223914189e-02, + 2.307940536820701424e-02, + 2.307924257222280368e-02, + 2.307904230729483641e-02, + 2.307880457649171338e-02, + 2.307852938294293124e-02, + 2.307821672983804973e-02, + 2.307786662042737164e-02, + 2.307747905802151958e-02, + 2.307705404599163027e-02, + 2.307659158776918448e-02, + 2.307609168684622916e-02, + 2.307555434677504430e-02, + 2.307497957116846563e-02, + 2.307436736369964173e-02, + 2.307371772810215202e-02, + 2.307303066816995124e-02, + 2.307230618775722372e-02, + 2.307154429077874422e-02, + 2.307074498120940606e-02, + 2.306990826308457504e-02, + 2.306903414049990206e-02, + 2.306812261761122251e-02, + 2.306717369863491712e-02, + 2.306618738784741579e-02, + 2.306516368958556190e-02, + 2.306410260824637293e-02, + 2.306300414828724860e-02, + 2.306186831422563435e-02, + 2.306069511063942382e-02, + 2.305948454216656326e-02, + 2.305823661350525980e-02, + 2.305695132941382869e-02, + 2.305562869471103338e-02, + 2.305426871427543670e-02, + 2.305287139304608435e-02, + 2.305143673602198795e-02, + 2.304996474826224648e-02, + 2.304845543488619891e-02, + 2.304690880107327852e-02, + 2.304532485206295389e-02, + 2.304370359315478095e-02, + 2.304204502970847585e-02, + 2.304034916714362002e-02, + 2.303861601094005229e-02, + 2.303684556663752186e-02, + 2.303503783983578898e-02, + 2.303319283619459715e-02, + 2.303131056143383620e-02, + 2.302939102133315374e-02, + 2.302743422173222226e-02, + 2.302544016853079120e-02, + 2.302340886768840245e-02, + 2.302134032522451523e-02, + 2.301923454721862411e-02, + 2.301709153980993280e-02, + 2.301491130919766301e-02, + 2.301269386164084274e-02, + 2.301043920345834798e-02, + 2.300814734102893042e-02, + 2.300581828079108562e-02, + 2.300345202924315713e-02, + 2.300104859294321152e-02, + 2.299860797850924662e-02, + 2.299613019261880983e-02, + 2.299361524200937285e-02, + 2.299106313347804714e-02, + 2.298847387388167421e-02, + 2.298584747013675614e-02, + 2.298318392921949727e-02, + 2.298048325816582152e-02, + 2.297774546407124752e-02, + 2.297497055409093367e-02, + 2.297215853543965042e-02, + 2.296930941539176638e-02, + 2.296642320128137321e-02, + 2.296349990050181381e-02, + 2.296053952050634839e-02, + 2.295754206880745718e-02, + 2.295450755297747530e-02, + 2.295143598064793358e-02, + 2.294832735950996447e-02, + 2.294518169731428817e-02, + 2.294199900187085181e-02, + 2.293877928104921457e-02, + 2.293552254277829786e-02, + 2.293222879504641307e-02, + 2.292889804590126160e-02, + 2.292553030345003198e-02, + 2.292212557585896968e-02, + 2.291868387135399462e-02, + 2.291520519822010798e-02, + 2.291168956480170785e-02, + 2.290813697950237413e-02, + 2.290454745078514959e-02, + 2.290092098717214433e-02, + 2.289725759724470233e-02, + 2.289355728964347428e-02, + 2.288982007306818167e-02, + 2.288604595627781804e-02, + 2.288223494809052058e-02, + 2.287838705738347647e-02, + 2.287450229309302349e-02, + 2.287058066421470554e-02, + 2.286662217980290485e-02, + 2.286262684897137978e-02, + 2.285859468089259869e-02, + 2.285452568479830540e-02, + 2.285041986997916538e-02, + 2.284627724578469979e-02, + 2.284209782162359773e-02, + 2.283788160696333114e-02, + 2.283362861133043584e-02, + 2.282933884431010904e-02, + 2.282501231554683388e-02, + 2.282064903474353632e-02, + 2.281624901166223046e-02, + 2.281181225612363694e-02, + 2.280733877800743964e-02, + 2.280282858725193873e-02, + 2.279828169385419989e-02, + 2.279369810787023123e-02, + 2.278907783941447676e-02, + 2.278442089866032985e-02, + 2.277972729583972386e-02, + 2.277499704124327437e-02, + 2.277023014522027225e-02, + 2.276542661817862814e-02, + 2.276058647058474063e-02, + 2.275570971296375644e-02, + 2.275079635589920962e-02, + 2.274584641003338931e-02, + 2.274085988606674297e-02, + 2.273583679475855296e-02, + 2.273077714692643345e-02, + 2.272568095344641020e-02, + 2.272054822525295878e-02, + 2.271537897333902531e-02, + 2.271017320875579060e-02, + 2.270493094261293379e-02, + 2.269965218607844157e-02, + 2.269433695037850404e-02, + 2.268898524679781661e-02, + 2.268359708667911853e-02, + 2.267817248142353290e-02, + 2.267271144249025094e-02, + 2.266721398139692409e-02, + 2.266168010971915739e-02, + 2.265610983909084261e-02, + 2.265050318120394313e-02, + 2.264486014780854942e-02, + 2.263918075071270214e-02, + 2.263346500178277376e-02, + 2.262771291294295162e-02, + 2.262192449617552586e-02, + 2.261609976352079582e-02, + 2.261023872707701443e-02, + 2.260434139900030504e-02, + 2.259840779150485215e-02, + 2.259243791686254416e-02, + 2.258643178740336183e-02, + 2.258038941551494469e-02, + 2.257431081364291020e-02, + 2.256819599429057271e-02, + 2.256204497001901982e-02, + 2.255585775344708457e-02, + 2.254963435725148430e-02, + 2.254337479416640422e-02, + 2.253707907698384097e-02, + 2.253074721855350196e-02, + 2.252437923178252782e-02, + 2.251797512963580813e-02, + 2.251153492513580448e-02, + 2.250505863136238044e-02, + 2.249854626145312772e-02, + 2.249199782860307473e-02, + 2.248541334606459288e-02, + 2.247879282714775745e-02, + 2.247213628521978548e-02, + 2.246544373370548339e-02, + 2.245871518608693468e-02, + 2.245195065590356240e-02, + 2.244515015675227834e-02, + 2.243831370228707017e-02, + 2.243144130621934143e-02, + 2.242453298231759581e-02, + 2.241758874440766963e-02, + 2.241060860637248200e-02, + 2.240359258215231589e-02, + 2.239654068574426643e-02, + 2.238945293120294874e-02, + 2.238232933263959237e-02, + 2.237516990422296417e-02, + 2.236797466017838992e-02, + 2.236074361478850719e-02, + 2.235347678239283167e-02, + 2.234617417738790288e-02, + 2.233883581422695455e-02, + 2.233146170742033448e-02, + 2.232405187153523735e-02, + 2.231660632119552429e-02, + 2.230912507108199702e-02, + 2.230160813593218272e-02, + 2.229405553054051789e-02, + 2.228646726975788347e-02, + 2.227884336849202118e-02, + 2.227118384170735654e-02, + 2.226348870442487055e-02, + 2.225575797172228004e-02, + 2.224799165873378101e-02, + 2.224018978065004509e-02, + 2.223235235271853183e-02, + 2.222447939024282254e-02, + 2.221657090858331074e-02, + 2.220862692315658110e-02, + 2.220064744943582580e-02, + 2.219263250295057735e-02, + 2.218458209928644842e-02, + 2.217649625408583264e-02, + 2.216837498304697479e-02, + 2.216021830192465084e-02, + 2.215202622652974115e-02, + 2.214379877272947689e-02, + 2.213553595644708952e-02, + 2.212723779366208496e-02, + 2.211890430040994518e-02, + 2.211053549278241270e-02, + 2.210213138692700488e-02, + 2.209369199904762451e-02, + 2.208521734540387291e-02, + 2.207670744231158416e-02, + 2.206816230614213475e-02, + 2.205958195332314783e-02, + 2.205096640033804914e-02, + 2.204231566372586576e-02, + 2.203362976008177432e-02, + 2.202490870605654932e-02, + 2.201615251835676093e-02, + 2.200736121374452167e-02, + 2.199853480903803463e-02, + 2.198967332111062892e-02, + 2.198077676689165136e-02, + 2.197184516336588359e-02, + 2.196287852757378145e-02, + 2.195387687661113849e-02, + 2.194484022762934264e-02, + 2.193576859783530342e-02, + 2.192666200449133393e-02, + 2.191752046491499475e-02, + 2.190834399647937497e-02, + 2.189913261661299848e-02, + 2.188988634279940074e-02, + 2.188060519257762834e-02, + 2.187128918354176374e-02, + 2.186193833334143174e-02, + 2.185255265968097382e-02, + 2.184313218032031892e-02, + 2.183367691307412303e-02, + 2.182418687581244576e-02, + 2.181466208646009458e-02, + 2.180510256299717994e-02, + 2.179550832345844569e-02, + 2.178587938593386231e-02, + 2.177621576856824878e-02, + 2.176651748956133850e-02, + 2.175678456716744619e-02, + 2.174701701969600220e-02, + 2.173721486551107029e-02, + 2.172737812303151758e-02, + 2.171750681073086192e-02, + 2.170760094713724761e-02, + 2.169766055083370559e-02, + 2.168768564045749775e-02, + 2.167767623470086280e-02, + 2.166763235231021142e-02, + 2.165755401208665706e-02, + 2.164744123288576266e-02, + 2.163729403361762393e-02, + 2.162711243324642180e-02, + 2.161689645079110239e-02, + 2.160664610532454788e-02, + 2.159636141597435013e-02, + 2.158604240192196766e-02, + 2.157568908240335703e-02, + 2.156530147670848371e-02, + 2.155487960418178348e-02, + 2.154442348422136444e-02, + 2.153393313627965239e-02, + 2.152340857986324157e-02, + 2.151284983453254779e-02, + 2.150225691990208937e-02, + 2.149162985564019926e-02, + 2.148096866146925049e-02, + 2.147027335716541682e-02, + 2.145954396255873170e-02, + 2.144878049753293908e-02, + 2.143798298202569466e-02, + 2.142715143602831260e-02, + 2.141628587958586960e-02, + 2.140538633279691003e-02, + 2.139445281581377201e-02, + 2.138348534884232724e-02, + 2.137248395214196711e-02, + 2.136144864602549862e-02, + 2.135037945085958844e-02, + 2.133927638706384355e-02, + 2.132813947511158839e-02, + 2.131696873552934440e-02, + 2.130576418889699314e-02, + 2.129452585584782134e-02, + 2.128325375706824341e-02, + 2.127194791329802687e-02, + 2.126060834532982752e-02, + 2.124923507400970635e-02, + 2.123782812023676178e-02, + 2.122638750496311580e-02, + 2.121491324919385496e-02, + 2.120340537398721428e-02, + 2.119186390045424070e-02, + 2.118028884975909840e-02, + 2.116868024311843385e-02, + 2.115703810180216693e-02, + 2.114536244713263735e-02, + 2.113365330048520493e-02, + 2.112191068328795121e-02, + 2.111013461702134289e-02, + 2.109832512321887718e-02, + 2.108648222346641218e-02, + 2.107460593940241669e-02, + 2.106269629271786611e-02, + 2.105075330515630144e-02, + 2.103877699851368355e-02, + 2.102676739463843480e-02, + 2.101472451543113726e-02, + 2.100264838284494201e-02, + 2.099053901888518064e-02, + 2.097839644560939298e-02, + 2.096622068512747974e-02, + 2.095401175960149090e-02, + 2.094176969124534465e-02, + 2.092949450232546582e-02, + 2.091718621516000520e-02, + 2.090484485211919694e-02, + 2.089247043562544523e-02, + 2.088006298815279355e-02, + 2.086762253222752481e-02, + 2.085514909042736689e-02, + 2.084264268538221429e-02, + 2.083010333977351400e-02, + 2.081753107633460900e-02, + 2.080492591785035664e-02, + 2.079228788715738185e-02, + 2.077961700714393845e-02, + 2.076691330074982578e-02, + 2.075417679096628470e-02, + 2.074140750083620227e-02, + 2.072860545345371619e-02, + 2.071577067196457567e-02, + 2.070290317956580486e-02, + 2.069000299950565780e-02, + 2.067707015508387855e-02, + 2.066410466965120513e-02, + 2.065110656660985866e-02, + 2.063807586941287728e-02, + 2.062501260156470589e-02, + 2.061191678662075213e-02, + 2.059878844818753552e-02, + 2.058562760992232316e-02, + 2.057243429553369876e-02, + 2.055920852878076466e-02, + 2.054595033347372118e-02, + 2.053265973347364812e-02, + 2.051933675269233814e-02, + 2.050598141509207481e-02, + 2.049259374468629172e-02, + 2.047917376553860802e-02, + 2.046572150176367497e-02, + 2.045223697752635711e-02, + 2.043872021704223885e-02, + 2.042517124457751687e-02, + 2.041159008444841383e-02, + 2.039797676102200752e-02, + 2.038433129871526986e-02, + 2.037065372199596894e-02, + 2.035694405538172533e-02, + 2.034320232344062965e-02, + 2.032942855079084357e-02, + 2.031562276210077678e-02, + 2.030178498208870530e-02, + 2.028791523552331971e-02, + 2.027401354722284735e-02, + 2.026007994205585375e-02, + 2.024611444494068407e-02, + 2.023211708084565741e-02, + 2.021808787478868163e-02, + 2.020402685183763508e-02, + 2.018993403711021040e-02, + 2.017580945577352250e-02, + 2.016165313304457349e-02, + 2.014746509418989875e-02, + 2.013324536452577168e-02, + 2.011899396941755833e-02, + 2.010471093428055009e-02, + 2.009039628457912063e-02, + 2.007605004582731223e-02, + 2.006167224358825288e-02, + 2.004726290347474613e-02, + 2.003282205114831002e-02, + 2.001834971232015897e-02, + 2.000384591275026006e-02, + 1.998931067824814140e-02, + 1.997474403467190338e-02, + 1.996014600792902355e-02, + 1.994551662397592989e-02, + 1.993085590881782387e-02, + 1.991616388850897534e-02, + 1.990144058915218478e-02, + 1.988668603689952921e-02, + 1.987190025795125894e-02, + 1.985708327855700145e-02, + 1.984223512501442563e-02, + 1.982735582367021673e-02, + 1.981244540091934084e-02, + 1.979750388320557566e-02, + 1.978253129702080282e-02, + 1.976752766890568780e-02, + 1.975249302544912142e-02, + 1.973742739328840021e-02, + 1.972233079910891071e-02, + 1.970720326964457356e-02, + 1.969204483167721551e-02, + 1.967685551203693373e-02, + 1.966163533760196397e-02, + 1.964638433529857300e-02, + 1.963110253210115577e-02, + 1.961578995503169415e-02, + 1.960044663116052716e-02, + 1.958507258760548708e-02, + 1.956966785153247887e-02, + 1.955423245015509848e-02, + 1.953876641073473350e-02, + 1.952326976058017804e-02, + 1.950774252704822603e-02, + 1.949218473754288014e-02, + 1.947659641951603529e-02, + 1.946097760046679517e-02, + 1.944532830794179143e-02, + 1.942964856953519406e-02, + 1.941393841288817368e-02, + 1.939819786568957108e-02, + 1.938242695567507848e-02, + 1.936662571062804095e-02, + 1.935079415837843292e-02, + 1.933493232680385740e-02, + 1.931904024382859533e-02, + 1.930311793742403928e-02, + 1.928716543560846444e-02, + 1.927118276644726458e-02, + 1.925516995805241077e-02, + 1.923912703858281573e-02, + 1.922305403624426090e-02, + 1.920695097928909120e-02, + 1.919081789601622887e-02, + 1.917465481477148917e-02, + 1.915846176394690736e-02, + 1.914223877198132154e-02, + 1.912598586735976200e-02, + 1.910970307861390230e-02, + 1.909339043432179903e-02, + 1.907704796310752751e-02, + 1.906067569364176123e-02, + 1.904427365464113689e-02, + 1.902784187486860484e-02, + 1.901138038313314807e-02, + 1.899488920828997993e-02, + 1.897836837923997863e-02, + 1.896181792493043319e-02, + 1.894523787435413789e-02, + 1.892862825655007228e-02, + 1.891198910060268648e-02, + 1.889532043564254651e-02, + 1.887862229084574447e-02, + 1.886189469543416916e-02, + 1.884513767867510362e-02, + 1.882835126988141594e-02, + 1.881153549841179523e-02, + 1.879469039366988767e-02, + 1.877781598510537206e-02, + 1.876091230221263104e-02, + 1.874397937453189597e-02, + 1.872701723164825471e-02, + 1.871002590319229691e-02, + 1.869300541883946870e-02, + 1.867595580831059657e-02, + 1.865887710137137043e-02, + 1.864176932783276341e-02, + 1.862463251755018187e-02, + 1.860746670042446801e-02, + 1.859027190640086605e-02, + 1.857304816546980972e-02, + 1.855579550766598904e-02, + 1.853851396306944316e-02, + 1.852120356180436689e-02, + 1.850386433403938824e-02, + 1.848649630998825885e-02, + 1.846909951990860152e-02, + 1.845167399410293022e-02, + 1.843421976291789027e-02, + 1.841673685674461575e-02, + 1.839922530601820205e-02, + 1.838168514121845537e-02, + 1.836411639286871650e-02, + 1.834651909153705088e-02, + 1.832889326783516959e-02, + 1.831123895241900182e-02, + 1.829355617598837219e-02, + 1.827584496928708405e-02, + 1.825810536310254473e-02, + 1.824033738826633805e-02, + 1.822254107565334652e-02, + 1.820471645618254239e-02, + 1.818686356081639435e-02, + 1.816898242056074267e-02, + 1.815107306646542712e-02, + 1.813313552962319414e-02, + 1.811516984117076540e-02, + 1.809717603228774147e-02, + 1.807915413419736855e-02, + 1.806110417816612565e-02, + 1.804302619550361350e-02, + 1.802492021756252685e-02, + 1.800678627573888343e-02, + 1.798862440147144803e-02, + 1.797043462624230148e-02, + 1.795221698157601492e-02, + 1.793397149904077392e-02, + 1.791569821024679987e-02, + 1.789739714684768571e-02, + 1.787906834053945224e-02, + 1.786071182306063487e-02, + 1.784232762619277629e-02, + 1.782391578175976377e-02, + 1.780547632162817959e-02, + 1.778700927770664186e-02, + 1.776851468194661637e-02, + 1.774999256634154920e-02, + 1.773144296292752942e-02, + 1.771286590378249107e-02, + 1.769426142102684119e-02, + 1.767562954682301568e-02, + 1.765697031337555567e-02, + 1.763828375293083686e-02, + 1.761956989777748936e-02, + 1.760082878024565520e-02, + 1.758206043270766489e-02, + 1.756326488757761067e-02, + 1.754444217731100999e-02, + 1.752559233440547162e-02, + 1.750671539139985605e-02, + 1.748781138087491735e-02, + 1.746888033545260580e-02, + 1.744992228779654667e-02, + 1.743093727061174533e-02, + 1.741192531664459073e-02, + 1.739288645868245289e-02, + 1.737382072955442197e-02, + 1.735472816213026737e-02, + 1.733560878932123919e-02, + 1.731646264407947153e-02, + 1.729728975939832936e-02, + 1.727809016831172162e-02, + 1.725886390389488184e-02, + 1.723961099926347995e-02, + 1.722033148757443066e-02, + 1.720102540202488386e-02, + 1.718169277585299831e-02, + 1.716233364233753916e-02, + 1.714294803479752757e-02, + 1.712353598659285478e-02, + 1.710409753112351536e-02, + 1.708463270183022131e-02, + 1.706514153219368737e-02, + 1.704562405573510631e-02, + 1.702608030601582625e-02, + 1.700651031663750340e-02, + 1.698691412124149827e-02, + 1.696729175350962515e-02, + 1.694764324716341308e-02, + 1.692796863596445281e-02, + 1.690826795371413657e-02, + 1.688854123425387321e-02, + 1.686878851146451572e-02, + 1.684900981926659713e-02, + 1.682920519162070180e-02, + 1.680937466252650780e-02, + 1.678951826602357103e-02, + 1.676963603619068682e-02, + 1.674972800714633059e-02, + 1.672979421304789105e-02, + 1.670983468809253761e-02, + 1.668984946651619686e-02, + 1.666983858259430545e-02, + 1.664980207064135215e-02, + 1.662973996501090554e-02, + 1.660965230009527061e-02, + 1.658953911032610279e-02, + 1.656940043017353023e-02, + 1.654923629414686501e-02, + 1.652904673679387454e-02, + 1.650883179270125345e-02, + 1.648859149649434253e-02, + 1.646832588283682342e-02, + 1.644803498643128761e-02, + 1.642771884201829277e-02, + 1.640737748437741395e-02, + 1.638701094832601540e-02, + 1.636661926872009371e-02, + 1.634620248045382321e-02, + 1.632576061845955606e-02, + 1.630529371770758629e-02, + 1.628480181320658693e-02, + 1.626428494000278085e-02, + 1.624374313318076302e-02, + 1.622317642786278921e-02, + 1.620258485920907099e-02, + 1.618196846241726564e-02, + 1.616132727272316313e-02, + 1.614066132539987777e-02, + 1.611997065575807714e-02, + 1.609925529914615211e-02, + 1.607851529094991502e-02, + 1.605775066659260661e-02, + 1.603696146153449700e-02, + 1.601614771127362821e-02, + 1.599530945134472817e-02, + 1.597444671732011628e-02, + 1.595355954480903379e-02, + 1.593264796945784850e-02, + 1.591171202694967313e-02, + 1.589075175300490653e-02, + 1.586976718338029696e-02, + 1.584875835387002455e-02, + 1.582772530030438288e-02, + 1.580666805855074006e-02, + 1.578558666451307033e-02, + 1.576448115413161752e-02, + 1.574335156338343630e-02, + 1.572219792828173646e-02, + 1.570102028487643103e-02, + 1.567981866925318227e-02, + 1.565859311753475119e-02, + 1.563734366587923863e-02, + 1.561607035048148857e-02, + 1.559477320757194675e-02, + 1.557345227341743431e-02, + 1.555210758432038799e-02, + 1.553073917661937711e-02, + 1.550934708668875832e-02, + 1.548793135093864091e-02, + 1.546649200581462491e-02, + 1.544502908779827634e-02, + 1.542354263340638305e-02, + 1.540203267919165384e-02, + 1.538049926174182500e-02, + 1.535894241768024325e-02, + 1.533736218366577378e-02, + 1.531575859639203868e-02, + 1.529413169258847342e-02, + 1.527248150901904487e-02, + 1.525080808248320714e-02, + 1.522911144981533085e-02, + 1.520739164788487661e-02, + 1.518564871359582603e-02, + 1.516388268388741203e-02, + 1.514209359573321159e-02, + 1.512028148614199749e-02, + 1.509844639215664544e-02, + 1.507658835085508818e-02, + 1.505470739934953311e-02, + 1.503280357478683008e-02, + 1.501087691434795091e-02, + 1.498892745524823926e-02, + 1.496695523473761703e-02, + 1.494496029009963721e-02, + 1.492294265865284908e-02, + 1.490090237774903230e-02, + 1.487883948477457252e-02, + 1.485675401714931128e-02, + 1.483464601232753650e-02, + 1.481251550779679078e-02, + 1.479036254107879249e-02, + 1.476818714972883209e-02, + 1.474598937133600289e-02, + 1.472376924352249497e-02, + 1.470152680394459614e-02, + 1.467926209029154529e-02, + 1.465697514028640319e-02, + 1.463466599168517304e-02, + 1.461233468227730002e-02, + 1.458998124988560366e-02, + 1.456760573236555271e-02, + 1.454520816760626438e-02, + 1.452278859352927262e-02, + 1.450034704808950137e-02, + 1.447788356927454806e-02, + 1.445539819510502366e-02, + 1.443289096363386918e-02, + 1.441036191294724732e-02, + 1.438781108116337672e-02, + 1.436523850643361098e-02, + 1.434264422694122090e-02, + 1.432002828090231730e-02, + 1.429739070656523697e-02, + 1.427473154221078552e-02, + 1.425205082615159033e-02, + 1.422934859673293494e-02, + 1.420662489233171476e-02, + 1.418387975135729055e-02, + 1.416111321225095761e-02, + 1.413832531348556409e-02, + 1.411551609356625873e-02, + 1.409268559102958007e-02, + 1.406983384444418159e-02, + 1.404696089240994004e-02, + 1.402406677355861296e-02, + 1.400115152655350900e-02, + 1.397821519008930410e-02, + 1.395525780289194433e-02, + 1.393227940371896331e-02, + 1.390928003135888553e-02, + 1.388625972463172938e-02, + 1.386321852238820394e-02, + 1.384015646351081756e-02, + 1.381707358691231652e-02, + 1.379396993153693927e-02, + 1.377084553635944328e-02, + 1.374770044038541895e-02, + 1.372453468265145624e-02, + 1.370134830222464149e-02, + 1.367814133820284724e-02, + 1.365491382971411281e-02, + 1.363166581591743545e-02, + 1.360839733600176238e-02, + 1.358510842918687553e-02, + 1.356179913472233857e-02, + 1.353846949188828620e-02, + 1.351511953999496793e-02, + 1.349174931838272549e-02, + 1.346835886642164422e-02, + 1.344494822351223647e-02, + 1.342151742908436439e-02, + 1.339806652259816107e-02, + 1.337459554354347366e-02, + 1.335110453143945573e-02, + 1.332759352583540689e-02, + 1.330406256630967468e-02, + 1.328051169247065379e-02, + 1.325694094395558735e-02, + 1.323335036043149504e-02, + 1.320973998159456937e-02, + 1.318610984717032315e-02, + 1.316245999691313152e-02, + 1.313879047060689635e-02, + 1.311510130806403142e-02, + 1.309139254912647723e-02, + 1.306766423366443469e-02, + 1.304391640157778406e-02, + 1.302014909279427743e-02, + 1.299636234727105481e-02, + 1.297255620499332580e-02, + 1.294873070597538089e-02, + 1.292488589025949340e-02, + 1.290102179791675734e-02, + 1.287713846904663811e-02, + 1.285323594377649550e-02, + 1.282931426226247180e-02, + 1.280537346468826367e-02, + 1.278141359126627220e-02, + 1.275743468223633319e-02, + 1.273343677786671450e-02, + 1.270941991845338757e-02, + 1.268538414432030491e-02, + 1.266132949581874091e-02, + 1.263725601332824078e-02, + 1.261316373725545996e-02, + 1.258905270803489275e-02, + 1.256492296612850626e-02, + 1.254077455202580113e-02, + 1.251660750624332581e-02, + 1.249242186932494024e-02, + 1.246821768184209686e-02, + 1.244399498439294031e-02, + 1.241975381760299091e-02, + 1.239549422212475605e-02, + 1.237121623863774063e-02, + 1.234691990784795440e-02, + 1.232260527048881053e-02, + 1.229827236731984713e-02, + 1.227392123912770389e-02, + 1.224955192672557217e-02, + 1.222516447095316552e-02, + 1.220075891267640225e-02, + 1.217633529278811313e-02, + 1.215189365220690695e-02, + 1.212743403187814539e-02, + 1.210295647277296986e-02, + 1.207846101588897110e-02, + 1.205394770224984917e-02, + 1.202941657290483753e-02, + 1.200486766892970396e-02, + 1.198030103142549811e-02, + 1.195571670151959927e-02, + 1.193111472036459050e-02, + 1.190649512913910003e-02, + 1.188185796904718886e-02, + 1.185720328131859361e-02, + 1.183253110720809166e-02, + 1.180784148799637542e-02, + 1.178313446498889007e-02, + 1.175841007951674427e-02, + 1.173366837293610999e-02, + 1.170890938662835605e-02, + 1.168413316199949821e-02, + 1.165933974048107523e-02, + 1.163452916352907505e-02, + 1.160970147262438065e-02, + 1.158485670927284460e-02, + 1.155999491500489008e-02, + 1.153511613137573819e-02, + 1.151022039996470528e-02, + 1.148530776237618317e-02, + 1.146037826023835540e-02, + 1.143543193520426063e-02, + 1.141046882895097210e-02, + 1.138548898318003655e-02, + 1.136049243961661896e-02, + 1.133547924001053649e-02, + 1.131044942613505105e-02, + 1.128540303978795012e-02, + 1.126034012279025429e-02, + 1.123526071698724600e-02, + 1.121016486424792659e-02, + 1.118505260646449409e-02, + 1.115992398555333553e-02, + 1.113477904345375885e-02, + 1.110961782212908054e-02, + 1.108444036356546689e-02, + 1.105924670977277702e-02, + 1.103403690278393669e-02, + 1.100881098465522276e-02, + 1.098356899746559708e-02, + 1.095831098331757902e-02, + 1.093303698433606072e-02, + 1.090774704266929407e-02, + 1.088244120048820207e-02, + 1.085711949998654190e-02, + 1.083178198338035844e-02, + 1.080642869290888812e-02, + 1.078105967083332374e-02, + 1.075567495943786402e-02, + 1.073027460102858599e-02, + 1.070485863793426556e-02, + 1.067942711250599586e-02, + 1.065398006711654362e-02, + 1.062851754416146120e-02, + 1.060303958605769183e-02, + 1.057754623524465205e-02, + 1.055203753418347892e-02, + 1.052651352535729015e-02, + 1.050097425127053882e-02, + 1.047541975444995534e-02, + 1.044985007744332964e-02, + 1.042426526282054164e-02, + 1.039866535317245620e-02, + 1.037305039111166213e-02, + 1.034742041927205758e-02, + 1.032177548030890207e-02, + 1.029611561689840367e-02, + 1.027044087173782129e-02, + 1.024475128754600423e-02, + 1.021904690706203732e-02, + 1.019332777304688027e-02, + 1.016759392828137619e-02, + 1.014184541556791518e-02, + 1.011608227772891819e-02, + 1.009030455760807216e-02, + 1.006451229806904803e-02, + 1.003870554199646527e-02, + 1.001288433229516849e-02, + 9.987048711890503250e-03, + 9.961198723727736695e-03, + 9.935334410772860697e-03, + 9.909455816011408791e-03, + 9.883562982449620171e-03, + 9.857655953113095282e-03, + 9.831734771047848792e-03, + 9.805799479319730200e-03, + 9.779850121013938108e-03, + 9.753886739235925751e-03, + 9.727909377110242201e-03, + 9.701918077781470848e-03, + 9.675912884413480006e-03, + 9.649893840189771588e-03, + 9.623860988312726503e-03, + 9.597814372004626407e-03, + 9.571754034506366540e-03, + 9.545680019078553805e-03, + 9.519592369000290724e-03, + 9.493491127570136481e-03, + 9.467376338105425171e-03, + 9.441248043942470497e-03, + 9.415106288435951681e-03, + 9.388951114959846744e-03, + 9.362782566906313608e-03, + 9.336600687685998878e-03, + 9.310405520728827142e-03, + 9.284197109482203794e-03, + 9.257975497412597107e-03, + 9.231740728004159124e-03, + 9.205492844759887924e-03, + 9.179231891200250251e-03, + 9.152957910864310820e-03, + 9.126670947308936077e-03, + 9.100371044109049207e-03, + 9.074058244857042058e-03, + 9.047732593163621689e-03, + 9.021394132656651577e-03, + 8.995042906982220199e-03, + 8.968678959803324385e-03, + 8.942302334801010763e-03, + 8.915913075673527477e-03, + 8.889511226136629501e-03, + 8.863096829923061692e-03, + 8.836669930782746138e-03, + 8.810230572483087469e-03, + 8.783778798808402136e-03, + 8.757314653560057185e-03, + 8.730838180555991479e-03, + 8.704349423631539684e-03, + 8.677848426638228377e-03, + 8.651335233444841163e-03, + 8.624809887936246006e-03, + 8.598272434014293808e-03, + 8.571722915597185244e-03, + 8.545161376619632085e-03, + 8.518587861032315967e-03, + 8.492002412802700240e-03, + 8.465405075913909339e-03, + 8.438795894365597877e-03, + 8.412174912173513500e-03, + 8.385542173368884522e-03, + 8.358897721999446889e-03, + 8.332241602128236807e-03, + 8.305573857834558718e-03, + 8.278894533212894161e-03, + 8.252203672373708415e-03, + 8.225501319442902332e-03, + 8.198787518561996210e-03, + 8.172062313887467136e-03, + 8.145325749591668385e-03, + 8.118577869861672361e-03, + 8.091818718900297552e-03, + 8.065048340924719020e-03, + 8.038266780168187506e-03, + 8.011474080877906134e-03, + 7.984670287316655846e-03, + 7.957855443761631398e-03, + 7.931029594504772698e-03, + 7.904192783852946949e-03, + 7.877345056127521908e-03, + 7.850486455664511601e-03, + 7.823617026813939682e-03, + 7.796736813940804804e-03, + 7.769845861423816009e-03, + 7.742944213656544582e-03, + 7.716031915046059689e-03, + 7.689109010014022125e-03, + 7.662175542995947053e-03, + 7.635231558441406101e-03, + 7.608277100813464443e-03, + 7.581312214589521273e-03, + 7.554336944260118050e-03, + 7.527351334329895199e-03, + 7.500355429316935517e-03, + 7.473349273752968869e-03, + 7.446332912182817079e-03, + 7.419306389164714854e-03, + 7.392269749270621165e-03, + 7.365223037085110759e-03, + 7.338166297206320451e-03, + 7.311099574245324625e-03, + 7.284022912826305235e-03, + 7.256936357585982815e-03, + 7.229839953174478639e-03, + 7.202733744254063118e-03, + 7.175617775500391787e-03, + 7.148492091600895486e-03, + 7.121356737256665133e-03, + 7.094211757180232149e-03, + 7.067057196097262413e-03, + 7.039893098745151137e-03, + 7.012719509874159977e-03, + 6.985536474246133339e-03, + 6.958344036635507983e-03, + 6.931142241828719755e-03, + 6.903931134623758625e-03, + 6.876710759831095900e-03, + 6.849481162272393585e-03, + 6.822242386781702216e-03, + 6.794994478204132923e-03, + 6.767737481396831484e-03, + 6.740471441228346877e-03, + 6.713196402578818639e-03, + 6.685912410339285572e-03, + 6.658619509412745663e-03, + 6.631317744712820345e-03, + 6.604007161164706860e-03, + 6.576687803704547690e-03, + 6.549359717279661271e-03, + 6.522022946847881933e-03, + 6.494677537378458487e-03, + 6.467323533850987370e-03, + 6.439960981255821171e-03, + 6.412589924594187460e-03, + 6.385210408877842712e-03, + 6.357822479129083583e-03, + 6.330426180380243836e-03, + 6.303021557674566046e-03, + 6.275608656065005501e-03, + 6.248187520615175634e-03, + 6.220758196398600351e-03, + 6.193320728499091335e-03, + 6.165875162009944004e-03, + 6.138421542034981811e-03, + 6.110959913687256939e-03, + 6.083490322090155319e-03, + 6.056012812376212681e-03, + 6.028527429687960230e-03, + 6.001034219177510051e-03, + 5.973533226005960095e-03, + 5.946024495344428944e-03, + 5.918508072372734817e-03, + 5.890984002280556971e-03, + 5.863452330266117306e-03, + 5.835913101537211663e-03, + 5.808366361310498584e-03, + 5.780812154811706613e-03, + 5.753250527275046225e-03, + 5.725681523944078921e-03, + 5.698105190070513332e-03, + 5.670521570915161048e-03, + 5.642930711747267888e-03, + 5.615332657844731602e-03, + 5.587727454493420128e-03, + 5.560115146988165585e-03, + 5.532495780631474513e-03, + 5.504869400734708346e-03, + 5.477236052616706041e-03, + 5.449595781604839664e-03, + 5.421948633034485293e-03, + 5.394294652248455765e-03, + 5.366633884598022430e-03, + 5.338966375441623648e-03, + 5.311292170145819752e-03, + 5.283611314084658145e-03, + 5.255923852639888399e-03, + 5.228229831200238015e-03, + 5.200529295162505290e-03, + 5.172822289930097822e-03, + 5.145108860914404669e-03, + 5.117389053533273266e-03, + 5.089662913212160411e-03, + 5.061930485383402817e-03, + 5.034191815486405326e-03, + 5.006446948967181211e-03, + 4.978695931278522176e-03, + 4.950938807880425098e-03, + 4.923175624238908948e-03, + 4.895406425827064298e-03, + 4.867631258124309988e-03, + 4.839850166616661148e-03, + 4.812063196796024893e-03, + 4.784270394161227284e-03, + 4.756471804216669784e-03, + 4.728667472473342334e-03, + 4.700857444448185846e-03, + 4.673041765664244854e-03, + 4.645220481650034344e-03, + 4.617393637940515536e-03, + 4.589561280075803509e-03, + 4.561723453602333812e-03, + 4.533880204071524117e-03, + 4.506031577040805515e-03, + 4.478177618073085620e-03, + 4.450318372736198659e-03, + 4.422453886603916820e-03, + 4.394584205254650072e-03, + 4.366709374272431492e-03, + 4.338829439246233780e-03, + 4.310944445770239011e-03, + 4.283054439443074492e-03, + 4.255159465868909967e-03, + 4.227259570656063774e-03, + 4.199354799418205872e-03, + 4.171445197773048126e-03, + 4.143530811343339171e-03, + 4.115611685756184399e-03, + 4.087687866643293158e-03, + 4.059759399640216343e-03, + 4.031826330387462687e-03, + 4.003888704529250629e-03, + 3.975946567713790208e-03, + 3.947999965594284864e-03, + 3.920048943826820280e-03, + 3.892093548072204055e-03, + 3.864133823994420937e-03, + 3.836169817261862736e-03, + 3.808201573545998662e-03, + 3.780229138522344171e-03, + 3.752252557869839925e-03, + 3.724271877271016599e-03, + 3.696287142411362140e-03, + 3.668298398980277160e-03, + 3.640305692669795149e-03, + 3.612309069175736933e-03, + 3.584308574196409629e-03, + 3.556304253433596740e-03, + 3.528296152591875977e-03, + 3.500284317378851706e-03, + 3.472268793504620660e-03, + 3.444249626682004389e-03, + 3.416226862626782577e-03, + 3.388200547057153983e-03, + 3.360170725693977130e-03, + 3.332137444260076849e-03, + 3.304100748481249555e-03, + 3.276060684084939646e-03, + 3.248017296801439073e-03, + 3.219970632362523840e-03, + 3.191920736502521297e-03, + 3.163867654957567242e-03, + 3.135811433465859627e-03, + 3.107752117766979846e-03, + 3.079689753602876754e-03, + 3.051624386716575172e-03, + 3.023556062853163372e-03, + 2.995484827759277869e-03, + 2.967410727182551340e-03, + 2.939333806872628744e-03, + 2.911254112579840254e-03, + 2.883171690056385208e-03, + 2.855086585055011551e-03, + 2.826998843330018069e-03, + 2.798908510636565275e-03, + 2.770815632730930841e-03, + 2.742720255369769742e-03, + 2.714622424311188050e-03, + 2.686522185313351685e-03, + 2.658419584135738450e-03, + 2.630314666537578953e-03, + 2.602207478279729667e-03, + 2.574098065122360987e-03, + 2.545986472826789956e-03, + 2.517872747154123719e-03, + 2.489756933865686691e-03, + 2.461639078723236972e-03, + 2.433519227488439417e-03, + 2.405397425923089423e-03, + 2.377273719788418598e-03, + 2.349148154846123892e-03, + 2.321020776857033591e-03, + 2.292891631582276955e-03, + 2.264760764781981444e-03, + 2.236628222216265408e-03, + 2.208494049644567185e-03, + 2.180358292825868450e-03, + 2.152220997517981238e-03, + 2.124082209478608731e-03, + 2.095941974463960949e-03, + 2.067800338229838514e-03, + 2.039657346530899303e-03, + 2.011513045120884389e-03, + 1.983367479752111504e-03, + 1.955220696175678004e-03, + 1.927072740141890861e-03, + 1.898923657399063849e-03, + 1.870773493694564017e-03, + 1.842622294774099801e-03, + 1.814470106381956081e-03, + 1.786316974260309613e-03, + 1.758162944150240374e-03, + 1.730008061790400163e-03, + 1.701852372918205222e-03, + 1.673695923268341771e-03, + 1.645538758574575109e-03, + 1.617380924567481679e-03, + 1.589222466976260772e-03, + 1.561063431527238976e-03, + 1.532903863945067786e-03, + 1.504743809951373775e-03, + 1.476583315265800941e-03, + 1.448422425605457118e-03, + 1.420261186684366236e-03, + 1.392099644214505466e-03, + 1.363937843904462549e-03, + 1.335775831460631015e-03, + 1.307613652585864258e-03, + 1.279451352980514418e-03, + 1.251288978341724397e-03, + 1.223126574363668766e-03, + 1.194964186736857063e-03, + 1.166801861149147513e-03, + 1.138639643284431032e-03, + 1.110477578823644952e-03, + 1.082315713444076963e-03, + 1.054154092819608625e-03, + 1.025992762620006301e-03, + 9.978317685119476779e-04, + 9.696711561578592875e-04, + 9.415109712162972756e-04, + 9.133512593422000222e-04, + 8.851920661863395354e-04, + 8.570334373955632284e-04, + 8.288754186120909223e-04, + 8.007180554745384421e-04, + 7.725613936165927212e-04, + 7.444054786681895703e-04, + 7.162503562540302720e-04, + 6.880960719953920900e-04, + 6.599426715078520952e-04, + 6.317902004031042884e-04, + 6.036387042874689305e-04, + 5.754882287630776845e-04, + 5.473388194265393957e-04, + 5.191905218699693252e-04, + 4.910433816804459645e-04, + 4.628974444394631338e-04, + 4.347527557239581311e-04, + 4.066093611049811994e-04, + 3.784673061488762224e-04, + 3.503266364159559384e-04, + 3.221873974615240715e-04, + 2.940496348351742326e-04, + 2.659133940810314792e-04, + 2.377787207370510270e-04, + 2.096456603360436334e-04, + 1.815142584043453631e-04, + 1.533845604628449510e-04, + 1.252566120262819981e-04, + 9.713045860348614629e-05, + 6.900614569667848656e-05, + 4.088371880249530316e-05, + 1.276322341066001066e-05, +-1.535529499483530283e-05, +-4.347179093705743041e-05, +-7.158621894510751598e-05, +-9.969853355466531356e-05, +-1.278086893085317560e-04, +-1.559166407556046379e-04, +-1.840223424522064246e-04, +-2.121257489610611313e-04, +-2.402268148519906652e-04, +-2.683254947016798248e-04, +-2.964217430943705419e-04, +-3.245155146208423516e-04, +-3.526067638797361495e-04, +-3.806954454763768290e-04, +-4.087815140240948697e-04, +-4.368649241432071874e-04, +-4.649456304617152519e-04, +-4.930235876150639062e-04, +-5.210987502466833590e-04, +-5.491710730077517446e-04, +-5.772405105567983592e-04, +-6.053070175608653292e-04, +-6.333705486944971345e-04, +-6.614310586404266923e-04, +-6.894885020893423613e-04, +-7.175428337405869274e-04, +-7.455940083011309725e-04, +-7.736419804869038410e-04, +-8.016867050217624550e-04, +-8.297281366381961546e-04, +-8.577662300770862213e-04, +-8.858009400883994425e-04, +-9.138322214301705876e-04, +-9.418600288698286043e-04, +-9.698843171830067063e-04, +-9.979050411548838571e-04, +-1.025922155579141659e-03, +-1.053935615258523801e-03, +-1.081945375005371763e-03, +-1.109951389640594175e-03, +-1.137953613995005371e-03, +-1.165952002908294096e-03, +-1.193946511229721733e-03, +-1.221937093817882262e-03, +-1.249923705541403736e-03, +-1.277906301277925228e-03, +-1.305884835915412188e-03, +-1.333859264350988972e-03, +-1.361829541492256147e-03, +-1.389795622256275679e-03, +-1.417757461570245524e-03, +-1.445715014371301002e-03, +-1.473668235607159677e-03, +-1.501617080235147965e-03, +-1.529561503223341931e-03, +-1.557501459550166998e-03, +-1.585436904204175690e-03, +-1.613367792184574115e-03, +-1.641294078500988435e-03, +-1.669215718174154846e-03, +-1.697132666234907154e-03, +-1.725044877725494946e-03, +-1.752952307698560971e-03, +-1.780854911217834378e-03, +-1.808752643357898916e-03, +-1.836645459204885519e-03, +-1.864533313855443186e-03, +-1.892416162418078833e-03, +-1.920293960011957950e-03, +-1.948166661768245978e-03, +-1.976034222829070076e-03, +-2.003896598348230574e-03, +-2.031753743490942281e-03, +-2.059605613434395670e-03, +-2.087452163367496671e-03, +-2.115293348490646357e-03, +-2.143129124016263966e-03, +-2.170959445168543604e-03, +-2.198784267184182833e-03, +-2.226603545311311039e-03, +-2.254417234810856402e-03, +-2.282225290955336786e-03, +-2.310027669030201986e-03, +-2.337824324332796796e-03, +-2.365615212173062271e-03, +-2.393400287873301974e-03, +-2.421179506768860682e-03, +-2.448952824207130397e-03, +-2.476720195548835768e-03, +-2.504481576167040969e-03, +-2.532236921447684422e-03, +-2.559986186790103990e-03, +-2.587729327606033431e-03, +-2.615466299320895645e-03, +-2.643197057372668590e-03, +-2.670921557213168113e-03, +-2.698639754307035742e-03, +-2.726351604132445580e-03, +-2.754057062180852774e-03, +-2.781756083957678729e-03, +-2.809448624981318414e-03, +-2.837134640784435766e-03, +-2.864814086912795786e-03, +-2.892486918926575560e-03, +-2.920153092399359416e-03, +-2.947812562918819806e-03, +-2.975465286086485285e-03, +-3.003111217518266568e-03, +-3.030750312844217569e-03, +-3.058382527708322033e-03, +-3.086007817768997036e-03, +-3.113626138698856634e-03, +-3.141237446185426996e-03, +-3.168841695930120755e-03, +-3.196438843649524603e-03, +-3.224028845074270854e-03, +-3.251611655950311600e-03, +-3.279187232037914738e-03, +-3.306755529112387782e-03, +-3.334316502963781664e-03, +-3.361870109397620179e-03, +-3.389416304233875202e-03, +-3.416955043308274667e-03, +-3.444486282471292092e-03, +-3.472009977588836997e-03, +-3.499526084542001637e-03, +-3.527034559227620880e-03, +-3.554535357558022846e-03, +-3.582028435460622110e-03, +-3.609513748879073728e-03, +-3.636991253772281843e-03, +-3.664460906115090105e-03, +-3.691922661897998476e-03, +-3.719376477127906561e-03, +-3.746822307827065834e-03, +-3.774260110034391522e-03, +-3.801689839804315955e-03, +-3.829111453208236624e-03, +-3.856524906332719875e-03, +-3.883930155281736536e-03, +-3.911327156174912445e-03, +-3.938715865148948760e-03, +-3.966096238356467060e-03, +-3.993468231967328176e-03, +-4.020831802167590049e-03, +-4.048186905160083664e-03, +-4.075533497164912644e-03, +-4.102871534418455791e-03, +-4.130200973174660319e-03, +-4.157521769703903004e-03, +-4.184833880294255674e-03, +-4.212137261250512889e-03, +-4.239431868894860678e-03, +-4.266717659566624139e-03, +-4.293994589622972605e-03, +-4.321262615437916101e-03, +-4.348521693403589045e-03, +-4.375771779929244973e-03, +-4.403012831441947827e-03, +-4.430244804386342106e-03, +-4.457467655225318126e-03, +-4.484681340439007624e-03, +-4.511885816525934741e-03, +-4.539081040002622240e-03, +-4.566266967403396354e-03, +-4.593443555280816125e-03, +-4.620610760205536363e-03, +-4.647768538766913066e-03, +-4.674916847572083145e-03, +-4.702055643247165725e-03, +-4.729184882436164930e-03, +-4.756304521802419243e-03, +-4.783414518026810405e-03, +-4.810514827809959579e-03, +-4.837605407870502160e-03, +-4.864686214946519795e-03, +-4.891757205794371177e-03, +-4.918818337189973140e-03, +-4.945869565927860437e-03, +-4.972910848821616818e-03, +-4.999942142704504738e-03, +-5.026963404428386357e-03, +-5.053974590865044532e-03, +-5.080975658905050908e-03, +-5.107966565458995842e-03, +-5.134947267456556851e-03, +-5.161917721847134391e-03, +-5.188877885599617670e-03, +-5.215827715703095883e-03, +-5.242767169165802633e-03, +-5.269696203016460342e-03, +-5.296614774303259367e-03, +-5.323522840094499844e-03, +-5.350420357478443377e-03, +-5.377307283563883752e-03, +-5.404183575479233614e-03, +-5.431049190373762187e-03, +-5.457904085416472907e-03, +-5.484748217797350694e-03, +-5.511581544726441677e-03, +-5.538404023434279934e-03, +-5.565215611172461690e-03, +-5.592016265212690351e-03, +-5.618805942847944837e-03, +-5.645584601391467373e-03, +-5.672352198178100095e-03, +-5.699108690562564201e-03, +-5.725854035921664788e-03, +-5.752588191652517960e-03, +-5.779311115173988919e-03, +-5.806022763925553117e-03, +-5.832723095368544386e-03, +-5.859412066985230337e-03, +-5.886089636279418641e-03, +-5.912755760776243659e-03, +-5.939410398022715483e-03, +-5.966053505587415491e-03, +-5.992685041060191904e-03, +-6.019304962053227508e-03, +-6.045913226200079482e-03, +-6.072509791156335997e-03, +-6.099094614599382021e-03, +-6.125667654229066325e-03, +-6.152228867766747385e-03, +-6.178778212956495541e-03, +-6.205315647564179672e-03, +-6.231841129378083016e-03, +-6.258354616208707151e-03, +-6.284856065889421646e-03, +-6.311345436275472669e-03, +-6.337822685245250200e-03, +-6.364287770699196892e-03, +-6.390740650560991151e-03, +-6.417181282776669368e-03, +-6.443609625315009290e-03, +-6.470025636168231717e-03, +-6.496429273350779257e-03, +-6.522820494900836812e-03, +-6.549199258879134615e-03, +-6.575565523369725392e-03, +-6.601919246479757107e-03, +-6.628260386340064508e-03, +-6.654588901104283548e-03, +-6.680904748950030995e-03, +-6.707207888077783807e-03, +-6.733498276712220065e-03, +-6.759775873101119166e-03, +-6.786040635516144177e-03, +-6.812292522252529590e-03, +-6.838531491629759596e-03, +-6.864757501990602709e-03, +-6.890970511702239343e-03, +-6.917170479155819451e-03, +-6.943357362766295997e-03, +-6.969531120972905468e-03, +-6.995691712238924151e-03, +-7.021839095052358551e-03, +-7.047973227924965271e-03, +-7.074094069393491342e-03, +-7.100201578018668080e-03, +-7.126295712385934469e-03, +-7.152376431105212512e-03, +-7.178443692811494435e-03, +-7.204497456163891193e-03, +-7.230537679846924838e-03, +-7.256564322569393141e-03, +-7.282577343065585636e-03, +-7.308576700094347733e-03, +-7.334562352439709561e-03, +-7.360534258910705549e-03, +-7.386492378341808114e-03, +-7.412436669592784542e-03, +-7.438367091548343975e-03, +-7.464283603118832162e-03, +-7.490186163239770031e-03, +-7.516074730872727983e-03, +-7.541949265004180107e-03, +-7.567809724646885894e-03, +-7.593656068838672453e-03, +-7.619488256643742498e-03, +-7.645306247151708104e-03, +-7.671109999478171841e-03, +-7.696899472764580190e-03, +-7.722674626178863654e-03, +-7.748435418914388119e-03, +-7.774181810191311409e-03, +-7.799913759255555461e-03, +-7.825631225379339750e-03, +-7.851334167861604568e-03, +-7.877022546027160135e-03, +-7.902696319227900043e-03, +-7.928355446841601692e-03, +-7.953999888273288049e-03, +-7.979629602954165998e-03, +-8.005244550342337576e-03, +-8.030844689922510271e-03, +-8.056429981206784594e-03, +-8.082000383733457111e-03, +-8.107555857068505373e-03, +-8.133096360804300748e-03, +-8.158621854560945894e-03, +-8.184132297985253005e-03, +-8.209627650751446376e-03, +-8.235107872560858827e-03, +-8.260572923142531915e-03, +-8.286022762252872459e-03, +-8.311457349675538051e-03, +-8.336876645221865528e-03, +-8.362280608730655873e-03, +-8.387669200068826464e-03, +-8.413042379130450041e-03, +-8.438400105838003706e-03, +-8.463742340141244824e-03, +-8.489069042018435735e-03, +-8.514380171475401798e-03, +-8.539675688546152429e-03, +-8.564955553292690274e-03, +-8.590219725805646120e-03, +-8.615468166203293574e-03, +-8.640700834632766836e-03, +-8.665917691269205483e-03, +-8.691118696316250600e-03, +-8.716303810005982325e-03, +-8.741472992599219963e-03, +-8.766626204385457796e-03, +-8.791763405682469570e-03, +-8.816884556837302489e-03, +-8.841989618225361280e-03, +-8.867078550251119434e-03, +-8.892151313347801747e-03, +-8.917207867978052191e-03, +-8.942248174633019714e-03, +-8.967272193833530913e-03, +-8.992279886129005834e-03, +-9.017271212098658395e-03, +-9.042246132350642909e-03, +-9.067204607522560619e-03, +-9.092146598281301839e-03, +-9.117072065323693006e-03, +-9.141980969375525234e-03, +-9.166873271192742603e-03, +-9.191748931560612956e-03, +-9.216607911294022806e-03, +-9.241450171238205918e-03, +-9.266275672267555025e-03, +-9.291084375287059910e-03, +-9.315876241231006369e-03, +-9.340651231064417762e-03, +-9.365409305781852850e-03, +-9.390150426408321732e-03, +-9.414874553998761955e-03, +-9.439581649638924959e-03, +-9.464271674444290142e-03, +-9.488944589561360693e-03, +-9.513600356166582867e-03, +-9.538238935467178645e-03, +-9.562860288700725936e-03, +-9.587464377135977364e-03, +-9.612051162071696270e-03, +-9.636620604837949078e-03, +-9.661172666795544983e-03, +-9.685707309335975235e-03, +-9.710224493881798244e-03, +-9.734724181886408867e-03, +-9.759206334834732294e-03, +-9.783670914242224848e-03, +-9.808117881656142067e-03, +-9.832547198654367770e-03, +-9.856958826846866015e-03, +-9.881352727873932498e-03, +-9.905728863408316126e-03, +-9.930087195153539797e-03, +-9.954427684845177163e-03, +-9.978750294249976588e-03, +-1.000305498516680137e-02, +-1.002734171942588730e-02, +-1.005161045888923292e-02, +-1.007586116545109746e-02, +-1.010009380103712474e-02, +-1.012430832760544130e-02, +-1.014850470714569013e-02, +-1.017268290168008189e-02, +-1.019684287326261610e-02, +-1.022098458397963268e-02, +-1.024510799594959519e-02, +-1.026921307132366672e-02, +-1.029329977228484426e-02, +-1.031736806104917650e-02, +-1.034141789986474554e-02, +-1.036544925101230523e-02, +-1.038946207680517368e-02, +-1.041345633958966170e-02, +-1.043743200174435982e-02, +-1.046138902568109069e-02, +-1.048532737384408157e-02, +-1.050924700871096011e-02, +-1.053314789279191296e-02, +-1.055702998863017501e-02, +-1.058089325880246824e-02, +-1.060473766591809447e-02, +-1.062856317262015834e-02, +-1.065236974158438425e-02, +-1.067615733552056308e-02, +-1.069992591717092156e-02, +-1.072367544931202704e-02, +-1.074740589475326608e-02, +-1.077111721633812295e-02, +-1.079480937694315620e-02, +-1.081848233947916085e-02, +-1.084213606689016229e-02, +-1.086577052215418303e-02, +-1.088938566828289399e-02, +-1.091298146832216792e-02, +-1.093655788535185212e-02, +-1.096011488248528273e-02, +-1.098365242287054240e-02, +-1.100717046968939343e-02, +-1.103066898615785718e-02, +-1.105414793552611345e-02, +-1.107760728107900529e-02, +-1.110104698613525488e-02, +-1.112446701404847318e-02, +-1.114786732820631857e-02, +-1.117124789203120458e-02, +-1.119460866897990445e-02, +-1.121794962254424842e-02, +-1.124127071625025641e-02, +-1.126457191365914587e-02, +-1.128785317836654423e-02, +-1.131111447400337533e-02, +-1.133435576423512219e-02, +-1.135757701276220860e-02, +-1.138077818332054736e-02, +-1.140395923968058091e-02, +-1.142712014564841588e-02, +-1.145026086506481348e-02, +-1.147338136180650961e-02, +-1.149648159978461370e-02, +-1.151956154294647532e-02, +-1.154262115527431368e-02, +-1.156566040078622383e-02, +-1.158867924353542030e-02, +-1.161167764761120505e-02, +-1.163465557713810189e-02, +-1.165761299627648094e-02, +-1.168054986922239906e-02, +-1.170346616020806474e-02, +-1.172636183350102279e-02, +-1.174923685340518824e-02, +-1.177209118426041957e-02, +-1.179492479044235223e-02, +-1.181773763636284440e-02, +-1.184052968646980182e-02, +-1.186330090524768087e-02, +-1.188605125721669403e-02, +-1.190878070693390280e-02, +-1.193148921899230171e-02, +-1.195417675802142032e-02, +-1.197684328868726944e-02, +-1.199948877569262905e-02, +-1.202211318377637526e-02, +-1.204471647771461311e-02, +-1.206729862231955760e-02, +-1.208985958244073941e-02, +-1.211239932296404205e-02, +-1.213491780881234203e-02, +-1.215741500494540300e-02, +-1.217989087636008744e-02, +-1.220234538809033924e-02, +-1.222477850520684028e-02, +-1.224719019281769218e-02, +-1.226958041606787328e-02, +-1.229194914014010605e-02, +-1.231429633025380062e-02, +-1.233662195166630900e-02, +-1.235892596967179749e-02, +-1.238120834960235866e-02, +-1.240346905682738511e-02, +-1.242570805675372037e-02, +-1.244792531482587922e-02, +-1.247012079652631486e-02, +-1.249229446737473194e-02, +-1.251444629292907361e-02, +-1.253657623878466632e-02, +-1.255868427057515828e-02, +-1.258077035397181173e-02, +-1.260283445468372843e-02, +-1.262487653845862680e-02, +-1.264689657108166929e-02, +-1.266889451837667664e-02, +-1.269087034620533690e-02, +-1.271282402046765465e-02, +-1.273475550710186262e-02, +-1.275666477208489170e-02, +-1.277855178143154705e-02, +-1.280041650119565638e-02, +-1.282225889746900493e-02, +-1.284407893638241094e-02, +-1.286587658410503349e-02, +-1.288765180684467611e-02, +-1.290940457084788565e-02, +-1.293113484240012052e-02, +-1.295284258782570391e-02, +-1.297452777348759995e-02, +-1.299619036578772945e-02, +-1.301783033116695604e-02, +-1.303944763610551290e-02, +-1.306104224712226029e-02, +-1.308261413077558763e-02, +-1.310416325366260681e-02, +-1.312568958242023125e-02, +-1.314719308372420091e-02, +-1.316867372428973983e-02, +-1.319013147087136177e-02, +-1.321156629026332824e-02, +-1.323297814929897016e-02, +-1.325436701485159519e-02, +-1.327573285383373304e-02, +-1.329707563319770976e-02, +-1.331839531993544469e-02, +-1.333969188107874196e-02, +-1.336096528369930432e-02, +-1.338221549490825960e-02, +-1.340344248185710262e-02, +-1.342464621173694583e-02, +-1.344582665177902758e-02, +-1.346698376925447790e-02, +-1.348811753147487365e-02, +-1.350922790579148214e-02, +-1.353031485959624303e-02, +-1.355137836032082981e-02, +-1.357241837543778779e-02, +-1.359343487245950888e-02, +-1.361442781893901569e-02, +-1.363539718246958507e-02, +-1.365634293068538653e-02, +-1.367726503126062178e-02, +-1.369816345191056904e-02, +-1.371903816039084061e-02, +-1.373988912449773322e-02, +-1.376071631206853690e-02, +-1.378151969098098499e-02, +-1.380229922915403133e-02, +-1.382305489454713730e-02, +-1.384378665516112009e-02, +-1.386449447903741715e-02, +-1.388517833425862054e-02, +-1.390583818894835198e-02, +-1.392647401127160289e-02, +-1.394708576943421742e-02, +-1.396767343168365920e-02, +-1.398823696630831746e-02, +-1.400877634163802399e-02, +-1.402929152604391258e-02, +-1.404978248793881286e-02, +-1.407024919577668128e-02, +-1.409069161805320824e-02, +-1.411110972330578348e-02, +-1.413150348011310738e-02, +-1.415187285709558311e-02, +-1.417221782291541374e-02, +-1.419253834627670803e-02, +-1.421283439592505200e-02, +-1.423310594064831555e-02, +-1.425335294927577642e-02, +-1.427357539067914544e-02, +-1.429377323377181187e-02, +-1.431394644750924247e-02, +-1.433409500088903173e-02, +-1.435421886295108231e-02, +-1.437431800277720780e-02, +-1.439439238949175720e-02, +-1.441444199226109626e-02, +-1.443446678029390584e-02, +-1.445446672284158955e-02, +-1.447444178919753306e-02, +-1.449439194869798012e-02, +-1.451431717072130916e-02, +-1.453421742468889721e-02, +-1.455409268006437225e-02, +-1.457394290635415784e-02, +-1.459376807310724423e-02, +-1.461356814991566361e-02, +-1.463334310641392459e-02, +-1.465309291227966972e-02, +-1.467281753723321570e-02, +-1.469251695103788134e-02, +-1.471219112349979145e-02, +-1.473184002446854476e-02, +-1.475146362383628236e-02, +-1.477106189153875454e-02, +-1.479063479755433549e-02, +-1.481018231190518904e-02, +-1.482970440465631971e-02, +-1.484920104591601515e-02, +-1.486867220583627629e-02, +-1.488811785461208702e-02, +-1.490753796248217231e-02, +-1.492693249972845693e-02, +-1.494630143667683049e-02, +-1.496564474369602160e-02, +-1.498496239119917126e-02, +-1.500425434964253527e-02, +-1.502352058952637071e-02, +-1.504276108139440161e-02, +-1.506197579583457881e-02, +-1.508116470347825588e-02, +-1.510032777500090219e-02, +-1.511946498112169690e-02, +-1.513857629260405985e-02, +-1.515766168025546937e-02, +-1.517672111492707719e-02, +-1.519575456751453245e-02, +-1.521476200895741267e-02, +-1.523374341023956378e-02, +-1.525269874238890759e-02, +-1.527162797647803327e-02, +-1.529053108362334046e-02, +-1.530940803498615117e-02, +-1.532825880177174707e-02, +-1.534708335523002690e-02, +-1.536588166665534168e-02, +-1.538465370738680699e-02, +-1.540339944880770792e-02, +-1.542211886234648270e-02, +-1.544081191947565754e-02, +-1.545947859171301932e-02, +-1.547811885062076731e-02, +-1.549673266780587054e-02, +-1.551532001492048410e-02, +-1.553388086366122578e-02, +-1.555241518577004517e-02, +-1.557092295303347772e-02, +-1.558940413728351383e-02, +-1.560785871039658060e-02, +-1.562628664429487058e-02, +-1.564468791094519515e-02, +-1.566306248235994902e-02, +-1.568141033059639380e-02, +-1.569973142775743860e-02, +-1.571802574599102942e-02, +-1.573629325749043364e-02, +-1.575453393449439271e-02, +-1.577274774928726087e-02, +-1.579093467419849517e-02, +-1.580909468160343612e-02, +-1.582722774392284967e-02, +-1.584533383362301748e-02, +-1.586341292321593460e-02, +-1.588146498525922629e-02, +-1.589948999235640120e-02, +-1.591748791715643860e-02, +-1.593545873235455504e-02, +-1.595340241069142725e-02, +-1.597131892495377500e-02, +-1.598920824797412168e-02, +-1.600707035263130781e-02, +-1.602490521184975203e-02, +-1.604271279860029417e-02, +-1.606049308589950833e-02, +-1.607824604681054939e-02, +-1.609597165444228914e-02, +-1.611366988195002056e-02, +-1.613134070253539193e-02, +-1.614898408944607719e-02, +-1.616660001597647334e-02, +-1.618418845546697529e-02, +-1.620174938130454143e-02, +-1.621928276692252702e-02, +-1.623678858580103121e-02, +-1.625426681146625862e-02, +-1.627171741749141448e-02, +-1.628914037749598295e-02, +-1.630653566514641759e-02, +-1.632390325415557231e-02, +-1.634124311828317674e-02, +-1.635855523133555520e-02, +-1.637583956716622685e-02, +-1.639309609967508005e-02, +-1.641032480280939926e-02, +-1.642752565056289013e-02, +-1.644469861697664056e-02, +-1.646184367613847538e-02, +-1.647896080218327550e-02, +-1.649604996929326245e-02, +-1.651311115169738428e-02, +-1.653014432367219330e-02, +-1.654714945954099611e-02, +-1.656412653367468624e-02, +-1.658107552049107106e-02, +-1.659799639445570102e-02, +-1.661488913008110982e-02, +-1.663175370192748054e-02, +-1.664859008460220502e-02, +-1.666539825276033837e-02, +-1.668217818110433182e-02, +-1.669892984438407432e-02, +-1.671565321739710772e-02, +-1.673234827498870994e-02, +-1.674901499205179445e-02, +-1.676565334352678530e-02, +-1.678226330440194328e-02, +-1.679884484971320632e-02, +-1.681539795454452951e-02, +-1.683192259402734037e-02, +-1.684841874334145131e-02, +-1.686488637771401192e-02, +-1.688132547242065379e-02, +-1.689773600278460935e-02, +-1.691411794417726697e-02, +-1.693047127201798355e-02, +-1.694679596177441419e-02, +-1.696309198896214093e-02, +-1.697935932914512031e-02, +-1.699559795793520109e-02, +-1.701180785099290493e-02, +-1.702798898402650349e-02, +-1.704414133279293087e-02, +-1.706026487309754078e-02, +-1.707635958079367286e-02, +-1.709242543178357554e-02, +-1.710846240201762888e-02, +-1.712447046749470195e-02, +-1.714044960426220482e-02, +-1.715639978841636271e-02, +-1.717232099610164694e-02, +-1.718821320351143767e-02, +-1.720407638688750684e-02, +-1.721991052252062893e-02, +-1.723571558675010898e-02, +-1.725149155596403597e-02, +-1.726723840659932785e-02, +-1.728295611514189117e-02, +-1.729864465812618046e-02, +-1.731430401213595455e-02, +-1.732993415380364513e-02, +-1.734553505981059271e-02, +-1.736110670688751148e-02, +-1.737664907181379545e-02, +-1.739216213141821579e-02, +-1.740764586257833452e-02, +-1.742310024222120876e-02, +-1.743852524732284262e-02, +-1.745392085490851328e-02, +-1.746928704205268079e-02, +-1.748462378587935240e-02, +-1.749993106356148576e-02, +-1.751520885232177652e-02, +-1.753045712943199913e-02, +-1.754567587221348215e-02, +-1.756086505803686540e-02, +-1.757602466432256136e-02, +-1.759115466854013765e-02, +-1.760625504820904214e-02, +-1.762132578089819351e-02, +-1.763636684422607848e-02, +-1.765137821586083844e-02, +-1.766635987352020015e-02, +-1.768131179497190938e-02, +-1.769623395803305785e-02, +-1.771112634057105811e-02, +-1.772598892050242236e-02, +-1.774082167579422650e-02, +-1.775562458446294095e-02, +-1.777039762457510372e-02, +-1.778514077424713652e-02, +-1.779985401164558417e-02, +-1.781453731498680929e-02, +-1.782919066253741552e-02, +-1.784381403261389720e-02, +-1.785840740358276765e-02, +-1.787297075386109699e-02, +-1.788750406191557535e-02, +-1.790200730626357803e-02, +-1.791648046547226689e-02, +-1.793092351815947158e-02, +-1.794533644299300262e-02, +-1.795971921869112323e-02, +-1.797407182402228909e-02, +-1.798839423780569310e-02, +-1.800268643891052636e-02, +-1.801694840625677266e-02, +-1.803118011881469154e-02, +-1.804538155560498833e-02, +-1.805955269569905000e-02, +-1.807369351821880646e-02, +-1.808780400233667845e-02, +-1.810188412727594884e-02, +-1.811593387231019009e-02, +-1.812995321676408311e-02, +-1.814394214001265049e-02, +-1.815790062148176301e-02, +-1.817182864064828193e-02, +-1.818572617703958366e-02, +-1.819959321023415996e-02, +-1.821342971986103162e-02, +-1.822723568560041460e-02, +-1.824101108718326550e-02, +-1.825475590439157650e-02, +-1.826847011705826085e-02, +-1.828215370506735410e-02, +-1.829580664835374348e-02, +-1.830942892690362242e-02, +-1.832302052075410886e-02, +-1.833658140999346389e-02, +-1.835011157476112639e-02, +-1.836361099524769572e-02, +-1.837707965169518148e-02, +-1.839051752439645540e-02, +-1.840392459369606659e-02, +-1.841730083998951994e-02, +-1.843064624372380694e-02, +-1.844396078539723219e-02, +-1.845724444555957647e-02, +-1.847049720481180879e-02, +-1.848371904380668312e-02, +-1.849690994324816595e-02, +-1.851006988389161320e-02, +-1.852319884654415882e-02, +-1.853629681206439214e-02, +-1.854936376136234397e-02, +-1.856239967539998620e-02, +-1.857540453519045467e-02, +-1.858837832179898591e-02, +-1.860132101634219201e-02, +-1.861423259998850818e-02, +-1.862711305395816502e-02, +-1.863996235952297686e-02, +-1.865278049800680668e-02, +-1.866556745078507343e-02, +-1.867832319928534879e-02, +-1.869104772498656267e-02, +-1.870374100942018628e-02, +-1.871640303416906986e-02, +-1.872903378086842111e-02, +-1.874163323120512162e-02, +-1.875420136691822309e-02, +-1.876673816979876688e-02, +-1.877924362168982911e-02, +-1.879171770448642004e-02, +-1.880416040013606002e-02, +-1.881657169063793641e-02, +-1.882895155804372930e-02, +-1.884129998445718129e-02, +-1.885361695203420160e-02, +-1.886590244298296318e-02, +-1.887815643956379866e-02, +-1.889037892408960279e-02, +-1.890256987892522528e-02, +-1.891472928648817858e-02, +-1.892685712924814176e-02, +-1.893895338972715128e-02, +-1.895101805049965310e-02, +-1.896305109419270385e-02, +-1.897505250348561698e-02, +-1.898702226111029928e-02, +-1.899896034985104620e-02, +-1.901086675254487837e-02, +-1.902274145208120507e-02, +-1.903458443140196993e-02, +-1.904639567350196322e-02, +-1.905817516142828752e-02, +-1.906992287828095101e-02, +-1.908163880721242683e-02, +-1.909332293142815273e-02, +-1.910497523418593427e-02, +-1.911659569879663526e-02, +-1.912818430862365041e-02, +-1.913974104708340493e-02, +-1.915126589764485493e-02, +-1.916275884383007375e-02, +-1.917421986921379745e-02, +-1.918564895742371629e-02, +-1.919704609214033589e-02, +-1.920841125709731381e-02, +-1.921974443608093566e-02, +-1.923104561293077774e-02, +-1.924231477153921094e-02, +-1.925355189585170254e-02, +-1.926475696986677463e-02, +-1.927592997763586183e-02, +-1.928707090326368251e-02, +-1.929817973090795780e-02, +-1.930925644477956768e-02, +-1.932030102914253714e-02, +-1.933131346831403960e-02, +-1.934229374666435186e-02, +-1.935324184861721836e-02, +-1.936415775864937239e-02, +-1.937504146129102531e-02, +-1.938589294112542244e-02, +-1.939671218278930104e-02, +-1.940749917097272376e-02, +-1.941825389041886007e-02, +-1.942897632592446161e-02, +-1.943966646233970946e-02, +-1.945032428456800952e-02, +-1.946094977756637409e-02, +-1.947154292634505762e-02, +-1.948210371596787588e-02, +-1.949263213155230656e-02, +-1.950312815826902441e-02, +-1.951359178134247363e-02, +-1.952402298605048631e-02, +-1.953442175772461195e-02, +-1.954478808174994406e-02, +-1.955512194356509928e-02, +-1.956542332866229722e-02, +-1.957569222258767269e-02, +-1.958592861094067897e-02, +-1.959613247937478167e-02, +-1.960630381359687244e-02, +-1.961644259936785178e-02, +-1.962654882250196645e-02, +-1.963662246886766286e-02, +-1.964666352438691754e-02, +-1.965667197503557020e-02, +-1.966664780684337227e-02, +-1.967659100589373364e-02, +-1.968650155832412166e-02, +-1.969637945032564480e-02, +-1.970622466814355225e-02, +-1.971603719807685576e-02, +-1.972581702647865920e-02, +-1.973556413975574575e-02, +-1.974527852436923359e-02, +-1.975496016683390629e-02, +-1.976460905371870552e-02, +-1.977422517164655405e-02, +-1.978380850729453619e-02, +-1.979335904739355431e-02, +-1.980287677872889437e-02, +-1.981236168813969856e-02, +-1.982181376251929833e-02, +-1.983123298881523874e-02, +-1.984061935402903903e-02, +-1.984997284521659508e-02, +-1.985929344948784286e-02, +-1.986858115400694236e-02, +-1.987783594599232956e-02, +-1.988705781271657771e-02, +-1.989624674150657427e-02, +-1.990540271974347922e-02, +-1.991452573486268696e-02, +-1.992361577435404485e-02, +-1.993267282576145771e-02, +-1.994169687668348803e-02, +-1.995068791477268982e-02, +-1.995964592773630600e-02, +-1.996857090333569937e-02, +-1.997746282938685225e-02, +-1.998632169376010626e-02, +-1.999514748438008596e-02, +-2.000394018922609443e-02, +-2.001269979633161014e-02, +-2.002142629378491842e-02, +-2.003011966972849736e-02, +-2.003877991235965966e-02, +-2.004740700992985181e-02, +-2.005600095074538958e-02, +-2.006456172316700703e-02, +-2.007308931560999876e-02, +-2.008158371654424415e-02, +-2.009004491449428026e-02, +-2.009847289803913875e-02, +-2.010686765581272059e-02, +-2.011522917650332420e-02, +-2.012355744885392997e-02, +-2.013185246166235634e-02, +-2.014011420378096842e-02, +-2.014834266411694857e-02, +-2.015653783163198765e-02, +-2.016469969534276027e-02, +-2.017282824432054325e-02, +-2.018092346769134390e-02, +-2.018898535463594865e-02, +-2.019701389439011383e-02, +-2.020500907624411466e-02, +-2.021297088954332813e-02, +-2.022089932368769175e-02, +-2.022879436813210599e-02, +-2.023665601238629208e-02, +-2.024448424601494115e-02, +-2.025227905863746791e-02, +-2.026004043992831252e-02, +-2.026776837961663871e-02, +-2.027546286748681953e-02, +-2.028312389337789956e-02, +-2.029075144718394189e-02, +-2.029834551885398297e-02, +-2.030590609839202573e-02, +-2.031343317585709851e-02, +-2.032092674136308161e-02, +-2.032838678507905422e-02, +-2.033581329722898220e-02, +-2.034320626809183949e-02, +-2.035056568800167748e-02, +-2.035789154734771178e-02, +-2.036518383657398568e-02, +-2.037244254617998421e-02, +-2.037966766671978416e-02, +-2.038685918880307063e-02, +-2.039401710309418636e-02, +-2.040114140031294016e-02, +-2.040823207123412114e-02, +-2.041528910668765490e-02, +-2.042231249755871447e-02, +-2.042930223478756774e-02, +-2.043625830936957391e-02, +-2.044318071235549927e-02, +-2.045006943485111819e-02, +-2.045692446801744557e-02, +-2.046374580307085828e-02, +-2.047053343128283145e-02, +-2.047728734398002529e-02, +-2.048400753254448620e-02, +-2.049069398841345951e-02, +-2.049734670307945886e-02, +-2.050396566809035981e-02, +-2.051055087504908420e-02, +-2.051710231561427664e-02, +-2.052361998149946493e-02, +-2.053010386447366373e-02, +-2.053655395636133640e-02, +-2.054297024904209665e-02, +-2.054935273445103808e-02, +-2.055570140457851566e-02, +-2.056201625147029838e-02, +-2.056829726722755186e-02, +-2.057454444400682106e-02, +-2.058075777401991227e-02, +-2.058693724953425050e-02, +-2.059308286287254292e-02, +-2.059919460641292110e-02, +-2.060527247258898617e-02, +-2.061131645388974282e-02, +-2.061732654285957506e-02, +-2.062330273209851683e-02, +-2.062924501426181834e-02, +-2.063515338206044214e-02, +-2.064102782826058094e-02, +-2.064686834568421614e-02, +-2.065267492720845866e-02, +-2.065844756576614566e-02, +-2.066418625434564976e-02, +-2.066989098599069513e-02, +-2.067556175380069403e-02, +-2.068119855093056639e-02, +-2.068680137059058372e-02, +-2.069237020604673336e-02, +-2.069790505062055891e-02, +-2.070340589768915676e-02, +-2.070887274068506853e-02, +-2.071430557309654821e-02, +-2.071970438846738871e-02, +-2.072506918039695653e-02, +-2.073039994254013280e-02, +-2.073569666860755265e-02, +-2.074095935236532073e-02, +-2.074618798763524369e-02, +-2.075138256829468439e-02, +-2.075654308827677708e-02, +-2.076166954156995897e-02, +-2.076676192221869194e-02, +-2.077182022432272693e-02, +-2.077684444203777014e-02, +-2.078183456957494873e-02, +-2.078679060120120631e-02, +-2.079171253123902885e-02, +-2.079660035406668064e-02, +-2.080145406411795447e-02, +-2.080627365588251509e-02, +-2.081105912390543780e-02, +-2.081581046278787456e-02, +-2.082052766718634970e-02, +-2.082521073181313812e-02, +-2.082985965143636237e-02, +-2.083447442087969434e-02, +-2.083905503502263973e-02, +-2.084360148880028477e-02, +-2.084811377720358419e-02, +-2.085259189527917389e-02, +-2.085703583812930847e-02, +-2.086144560091219430e-02, +-2.086582117884151419e-02, +-2.087016256718692703e-02, +-2.087446976127367917e-02, +-2.087874275648281264e-02, +-2.088298154825122752e-02, +-2.088718613207141833e-02, +-2.089135650349174117e-02, +-2.089549265811617776e-02, +-2.089959459160473446e-02, +-2.090366229967298081e-02, +-2.090769577809222304e-02, +-2.091169502268983710e-02, +-2.091566002934855048e-02, +-2.091959079400719859e-02, +-2.092348731266033268e-02, +-2.092734958135818515e-02, +-2.093117759620688814e-02, +-2.093497135336835208e-02, +-2.093873084906021712e-02, +-2.094245607955600927e-02, +-2.094614704118490447e-02, +-2.094980373033211371e-02, +-2.095342614343838686e-02, +-2.095701427700050537e-02, +-2.096056812757088328e-02, +-2.096408769175797659e-02, +-2.096757296622568309e-02, +-2.097102394769401190e-02, +-2.097444063293873659e-02, +-2.097782301879134656e-02, +-2.098117110213928993e-02, +-2.098448487992566822e-02, +-2.098776434914954858e-02, +-2.099100950686565159e-02, +-2.099422035018472590e-02, +-2.099739687627310766e-02, +-2.100053908235321315e-02, +-2.100364696570303225e-02, +-2.100672052365655171e-02, +-2.100975975360352965e-02, +-2.101276465298947821e-02, +-2.101573521931585087e-02, +-2.101867145013981697e-02, +-2.102157334307443864e-02, +-2.102444089578859795e-02, +-2.102727410600700383e-02, +-2.103007297151011923e-02, +-2.103283749013431028e-02, +-2.103556765977172144e-02, +-2.103826347837037605e-02, +-2.104092494393403068e-02, +-2.104355205452240751e-02, +-2.104614480825080930e-02, +-2.104870320329067443e-02, +-2.105122723786892469e-02, +-2.105371691026857242e-02, +-2.105617221882828335e-02, +-2.105859316194265418e-02, +-2.106097973806199050e-02, +-2.106333194569254275e-02, +-2.106564978339617658e-02, +-2.106793324979080659e-02, +-2.107018234354987932e-02, +-2.107239706340289717e-02, +-2.107457740813511310e-02, +-2.107672337658746120e-02, +-2.107883496765677878e-02, +-2.108091218029569530e-02, +-2.108295501351264284e-02, +-2.108496346637175889e-02, +-2.108693753799312579e-02, +-2.108887722755248273e-02, +-2.109078253428144784e-02, +-2.109265345746734813e-02, +-2.109448999645338954e-02, +-2.109629215063843141e-02, +-2.109805991947724668e-02, +-2.109979330248018189e-02, +-2.110149229921361516e-02, +-2.110315690929955371e-02, +-2.110478713241569979e-02, +-2.110638296829566232e-02, +-2.110794441672872099e-02, +-2.110947147755989906e-02, +-2.111096415069000157e-02, +-2.111242243607565003e-02, +-2.111384633372908812e-02, +-2.111523584371836557e-02, +-2.111659096616721326e-02, +-2.111791170125516814e-02, +-2.111919804921740321e-02, +-2.112045001034492525e-02, +-2.112166758498441529e-02, +-2.112285077353821122e-02, +-2.112399957646439105e-02, +-2.112511399427678682e-02, +-2.112619402754489090e-02, +-2.112723967689390109e-02, +-2.112825094300467207e-02, +-2.112922782661385071e-02, +-2.113017032851357765e-02, +-2.113107844955183431e-02, +-2.113195219063225203e-02, +-2.113279155271404613e-02, +-2.113359653681213743e-02, +-2.113436714399706540e-02, +-2.113510337539518599e-02, +-2.113580523218824836e-02, +-2.113647271561378341e-02, +-2.113710582696497892e-02, +-2.113770456759049218e-02, +-2.113826893889482472e-02, +-2.113879894233791634e-02, +-2.113929457943534984e-02, +-2.113975585175837529e-02, +-2.114018276093370188e-02, +-2.114057530864383791e-02, +-2.114093349662672303e-02, +-2.114125732667579069e-02, +-2.114154680064029776e-02, +-2.114180192042483877e-02, +-2.114202268798962350e-02, +-2.114220910535048736e-02, +-2.114236117457868325e-02, +-2.114247889780112438e-02, +-2.114256227720013800e-02, +-2.114261131501362148e-02, +-2.114262601353501109e-02, +-2.114260637511320914e-02, +-2.114255240215254239e-02, +-2.114246409711297014e-02, +-2.114234146250989002e-02, +-2.114218450091404078e-02, +-2.114199321495189091e-02, +-2.114176760730505575e-02, +-2.114150768071084568e-02, +-2.114121343796185673e-02, +-2.114088488190616483e-02, +-2.114052201544738135e-02, +-2.114012484154434782e-02, +-2.113969336321134748e-02, +-2.113922758351825804e-02, +-2.113872750559002422e-02, +-2.113819313260724767e-02, +-2.113762446780573581e-02, +-2.113702151447678645e-02, +-2.113638427596691710e-02, +-2.113571275567806620e-02, +-2.113500695706754459e-02, +-2.113426688364787587e-02, +-2.113349253898697336e-02, +-2.113268392670802909e-02, +-2.113184105048957970e-02, +-2.113096391406539890e-02, +-2.113005252122449745e-02, +-2.112910687581131056e-02, +-2.112812698172529882e-02, +-2.112711284292138544e-02, +-2.112606446340956415e-02, +-2.112498184725522532e-02, +-2.112386499857880212e-02, +-2.112271392155600641e-02, +-2.112152862041780446e-02, +-2.112030909945024001e-02, +-2.111905536299455918e-02, +-2.111776741544722433e-02, +-2.111644526125981344e-02, +-2.111508890493899240e-02, +-2.111369835104669190e-02, +-2.111227360419980909e-02, +-2.111081466907043999e-02, +-2.110932155038573385e-02, +-2.110779425292795553e-02, +-2.110623278153445428e-02, +-2.110463714109756320e-02, +-2.110300733656474831e-02, +-2.110134337293842824e-02, +-2.109964525527612683e-02, +-2.109791298869041418e-02, +-2.109614657834870538e-02, +-2.109434602947357629e-02, +-2.109251134734236449e-02, +-2.109064253728765506e-02, +-2.108873960469684339e-02, +-2.108680255501206927e-02, +-2.108483139373080323e-02, +-2.108282612640512838e-02, +-2.108078675864211507e-02, +-2.107871329610375155e-02, +-2.107660574450682597e-02, +-2.107446410962307906e-02, +-2.107228839727905839e-02, +-2.107007861335611840e-02, +-2.106783476379054179e-02, +-2.106555685457321345e-02, +-2.106324489175011652e-02, +-2.106089888142171490e-02, +-2.105851882974339034e-02, +-2.105610474292531412e-02, +-2.105365662723237413e-02, +-2.105117448898406046e-02, +-2.104865833455476024e-02, +-2.104610817037340029e-02, +-2.104352400292376982e-02, +-2.104090583874417345e-02, +-2.103825368442761856e-02, +-2.103556754662171818e-02, +-2.103284743202884360e-02, +-2.103009334740586073e-02, +-2.102730529956426883e-02, +-2.102448329537017629e-02, +-2.102162734174417569e-02, +-2.101873744566145480e-02, +-2.101581361415182439e-02, +-2.101285585429954472e-02, +-2.100986417324330821e-02, +-2.100683857817651004e-02, +-2.100377907634680755e-02, +-2.100068567505639083e-02, +-2.099755838166195501e-02, +-2.099439720357462388e-02, +-2.099120214825983197e-02, +-2.098797322323743900e-02, +-2.098471043608179931e-02, +-2.098141379442152593e-02, +-2.097808330593968831e-02, +-2.097471897837352439e-02, +-2.097132081951475976e-02, +-2.096788883720929197e-02, +-2.096442303935741949e-02, +-2.096092343391362661e-02, +-2.095739002888669447e-02, +-2.095382283233960738e-02, +-2.095022185238961179e-02, +-2.094658709720811571e-02, +-2.094291857502069906e-02, +-2.093921629410716925e-02, +-2.093548026280143970e-02, +-2.093171048949165822e-02, +-2.092790698261991905e-02, +-2.092406975068246758e-02, +-2.092019880222976622e-02, +-2.091629414586615443e-02, +-2.091235579025017485e-02, +-2.090838374409428532e-02, +-2.090437801616503583e-02, +-2.090033861528294012e-02, +-2.089626555032237862e-02, +-2.089215883021195222e-02, +-2.088801846393388909e-02, +-2.088384446052457197e-02, +-2.087963682907424331e-02, +-2.087539557872685261e-02, +-2.087112071868047966e-02, +-2.086681225818686619e-02, +-2.086247020655164486e-02, +-2.085809457313426291e-02, +-2.085368536734796482e-02, +-2.084924259865973684e-02, +-2.084476627659034853e-02, +-2.084025641071423143e-02, +-2.083571301065961431e-02, +-2.083113608610841563e-02, +-2.082652564679617069e-02, +-2.082188170251216691e-02, +-2.081720426309923225e-02, +-2.081249333845380106e-02, +-2.080774893852603558e-02, +-2.080297107331955872e-02, +-2.079815975289156169e-02, +-2.079331498735281780e-02, +-2.078843678686758886e-02, +-2.078352516165372921e-02, +-2.077858012198230755e-02, +-2.077360167817818987e-02, +-2.076858984061944607e-02, +-2.076354461973761376e-02, +-2.075846602601774324e-02, +-2.075335406999797086e-02, +-2.074820876227022326e-02, +-2.074303011347932574e-02, +-2.073781813432369267e-02, +-2.073257283555486261e-02, +-2.072729422797780358e-02, +-2.072198232245064595e-02, +-2.071663712988474834e-02, +-2.071125866124464907e-02, +-2.070584692754815631e-02, +-2.070040193986612612e-02, +-2.069492370932274339e-02, +-2.068941224709500842e-02, +-2.068386756441342039e-02, +-2.067828967256121059e-02, +-2.067267858287480387e-02, +-2.066703430674366945e-02, +-2.066135685561030361e-02, +-2.065564624097008389e-02, +-2.064990247437148083e-02, +-2.064412556741582541e-02, +-2.063831553175743405e-02, +-2.063247237910351833e-02, +-2.062659612121398034e-02, +-2.062068676990190877e-02, +-2.061474433703295098e-02, +-2.060876883452568767e-02, +-2.060276027435151494e-02, +-2.059671866853443264e-02, +-2.059064402915132888e-02, +-2.058453636833178571e-02, +-2.057839569825802364e-02, +-2.057222203116492940e-02, +-2.056601537934016691e-02, +-2.055977575512386510e-02, +-2.055350317090880868e-02, +-2.054719763914035144e-02, +-2.054085917231647865e-02, +-2.053448778298748445e-02, +-2.052808348375641939e-02, +-2.052164628727876777e-02, +-2.051517620626232968e-02, +-2.050867325346744305e-02, +-2.050213744170683444e-02, +-2.049556878384561909e-02, +-2.048896729280125228e-02, +-2.048233298154343227e-02, +-2.047566586309443326e-02, +-2.046896595052853304e-02, +-2.046223325697248130e-02, +-2.045546779560503819e-02, +-2.044866957965749479e-02, +-2.044183862241288549e-02, +-2.043497493720683456e-02, +-2.042807853742692470e-02, +-2.042114943651269360e-02, +-2.041418764795609533e-02, +-2.040719318530082038e-02, +-2.040016606214286113e-02, +-2.039310629212997411e-02, +-2.038601388896203737e-02, +-2.037888886639092553e-02, +-2.037173123822035026e-02, +-2.036454101830596081e-02, +-2.035731822055528856e-02, +-2.035006285892768801e-02, +-2.034277494743438192e-02, +-2.033545450013837450e-02, +-2.032810153115449658e-02, +-2.032071605464917663e-02, +-2.031329808484078070e-02, +-2.030584763599918574e-02, +-2.029836472244595652e-02, +-2.029084935855442542e-02, +-2.028330155874939061e-02, +-2.027572133750739011e-02, +-2.026810870935637568e-02, +-2.026046368887595567e-02, +-2.025278629069710012e-02, +-2.024507652950238365e-02, +-2.023733442002581193e-02, +-2.022955997705280437e-02, +-2.022175321542006576e-02, +-2.021391415001595401e-02, +-2.020604279577978973e-02, +-2.019813916770257789e-02, +-2.019020328082627228e-02, +-2.018223515024433062e-02, +-2.017423479110141971e-02, +-2.016620221859324186e-02, +-2.015813744796682294e-02, +-2.015004049452025561e-02, +-2.014191137360289707e-02, +-2.013375010061498049e-02, +-2.012555669100784747e-02, +-2.011733116028402088e-02, +-2.010907352399698284e-02, +-2.010078379775104632e-02, +-2.009246199720161538e-02, +-2.008410813805492495e-02, +-2.007572223606813450e-02, +-2.006730430704926210e-02, +-2.005885436685719142e-02, +-2.005037243140155717e-02, +-2.004185851664279372e-02, +-2.003331263859201017e-02, +-2.002473481331118119e-02, +-2.001612505691275495e-02, +-2.000748338556002440e-02, +-1.999880981546684963e-02, +-1.999010436289757470e-02, +-1.998136704416733633e-02, +-1.997259787564152275e-02, +-1.996379687373619691e-02, +-1.995496405491797159e-02, +-1.994609943570381863e-02, +-1.993720303266094396e-02, +-1.992827486240733581e-02, +-1.991931494161092164e-02, +-1.991032328699025508e-02, +-1.990129991531396775e-02, +-1.989224484340113702e-02, +-1.988315808812095645e-02, +-1.987403966639290226e-02, +-1.986488959518657380e-02, +-1.985570789152156512e-02, +-1.984649457246789178e-02, +-1.983724965514531077e-02, +-1.982797315672399710e-02, +-1.981866509442377702e-02, +-1.980932548551471786e-02, +-1.979995434731665963e-02, +-1.979055169719954113e-02, +-1.978111755258294552e-02, +-1.977165193093654433e-02, +-1.976215484977978873e-02, +-1.975262632668188176e-02, +-1.974306637926172628e-02, +-1.973347502518812274e-02, +-1.972385228217928693e-02, +-1.971419816800355426e-02, +-1.970451270047833894e-02, +-1.969479589747109849e-02, +-1.968504777689876473e-02, +-1.967526835672759808e-02, +-1.966545765497365594e-02, +-1.965561568970212308e-02, +-1.964574247902801593e-02, +-1.963583804111544706e-02, +-1.962590239417812826e-02, +-1.961593555647892992e-02, +-1.960593754633011346e-02, +-1.959590838209319258e-02, +-1.958584808217895754e-02, +-1.957575666504734677e-02, +-1.956563414920758914e-02, +-1.955548055321790560e-02, +-1.954529589568581791e-02, +-1.953508019526764561e-02, +-1.952483347066904032e-02, +-1.951455574064452428e-02, +-1.950424702399739321e-02, +-1.949390733958040328e-02, +-1.948353670629467127e-02, +-1.947313514309055582e-02, +-1.946270266896702947e-02, +-1.945223930297205681e-02, +-1.944174506420212611e-02, +-1.943121997180271079e-02, +-1.942066404496781834e-02, +-1.941007730294034422e-02, +-1.939945976501152025e-02, +-1.938881145052134131e-02, +-1.937813237885835371e-02, +-1.936742256945966911e-02, +-1.935668204181075630e-02, +-1.934591081544564939e-02, +-1.933510890994682291e-02, +-1.932427634494512936e-02, +-1.931341314011979921e-02, +-1.930251931519809741e-02, +-1.929159488995602426e-02, +-1.928063988421754166e-02, +-1.926965431785501379e-02, +-1.925863821078867971e-02, +-1.924759158298726056e-02, +-1.923651445446729683e-02, +-1.922540684529368271e-02, +-1.921426877557901730e-02, +-1.920310026548420479e-02, +-1.919190133521790631e-02, +-1.918067200503693198e-02, +-1.916941229524566151e-02, +-1.915812222619668950e-02, +-1.914680181829004485e-02, +-1.913545109197386726e-02, +-1.912407006774395624e-02, +-1.911265876614360801e-02, +-1.910121720776417065e-02, +-1.908974541324423915e-02, +-1.907824340327033200e-02, +-1.906671119857625274e-02, +-1.905514881994354454e-02, +-1.904355628820120216e-02, +-1.903193362422557489e-02, +-1.902028084894044971e-02, +-1.900859798331714506e-02, +-1.899688504837406325e-02, +-1.898514206517713451e-02, +-1.897336905483935562e-02, +-1.896156603852122355e-02, +-1.894973303743016993e-02, +-1.893787007282094273e-02, +-1.892597716599520724e-02, +-1.891405433830200752e-02, +-1.890210161113710721e-02, +-1.889011900594347523e-02, +-1.887810654421106030e-02, +-1.886606424747656885e-02, +-1.885399213732387794e-02, +-1.884189023538323723e-02, +-1.882975856333231335e-02, +-1.881759714289502061e-02, +-1.880540599584230518e-02, +-1.879318514399175993e-02, +-1.878093460920759322e-02, +-1.876865441340061849e-02, +-1.875634457852837222e-02, +-1.874400512659462822e-02, +-1.873163607964998048e-02, +-1.871923745979134010e-02, +-1.870680928916214000e-02, +-1.869435158995205043e-02, +-1.868186438439714200e-02, +-1.866934769477989961e-02, +-1.865680154342888586e-02, +-1.864422595271906721e-02, +-1.863162094507154684e-02, +-1.861898654295364094e-02, +-1.860632276887853875e-02, +-1.859362964540579172e-02, +-1.858090719514081043e-02, +-1.856815544073507976e-02, +-1.855537440488585349e-02, +-1.854256411033671295e-02, +-1.852972457987662677e-02, +-1.851685583634079396e-02, +-1.850395790260982859e-02, +-1.849103080161050225e-02, +-1.847807455631492873e-02, +-1.846508918974109834e-02, +-1.845207472495270090e-02, +-1.843903118505875460e-02, +-1.842595859321411247e-02, +-1.841285697261888302e-02, +-1.839972634651890898e-02, +-1.838656673820514634e-02, +-1.837337817101428530e-02, +-1.836016066832803911e-02, +-1.834691425357375463e-02, +-1.833363895022368725e-02, +-1.832033478179563232e-02, +-1.830700177185230412e-02, +-1.829363994400178342e-02, +-1.828024932189708032e-02, +-1.826682992923642918e-02, +-1.825338178976286183e-02, +-1.823990492726466905e-02, +-1.822639936557482118e-02, +-1.821286512857117276e-02, +-1.819930224017666034e-02, +-1.818571072435885144e-02, +-1.817209060513025332e-02, +-1.815844190654774745e-02, +-1.814476465271334243e-02, +-1.813105886777331352e-02, +-1.811732457591883755e-02, +-1.810356180138523660e-02, +-1.808977056845291129e-02, +-1.807595090144625480e-02, +-1.806210282473438497e-02, +-1.804822636273057876e-02, +-1.803432153989263653e-02, +-1.802038838072254207e-02, +-1.800642690976659091e-02, +-1.799243715161536611e-02, +-1.797841913090343635e-02, +-1.796437287230969945e-02, +-1.795029840055701459e-02, +-1.793619574041233067e-02, +-1.792206491668657184e-02, +-1.790790595423459239e-02, +-1.789371887795534327e-02, +-1.787950371279152517e-02, +-1.786526048372939421e-02, +-1.785098921579961195e-02, +-1.783668993407589928e-02, +-1.782236266367609803e-02, +-1.780800742976165751e-02, +-1.779362425753763452e-02, +-1.777921317225242270e-02, +-1.776477419919827300e-02, +-1.775030736371065870e-02, +-1.773581269116859122e-02, +-1.772129020699447777e-02, +-1.770673993665400348e-02, +-1.769216190565636032e-02, +-1.767755613955365041e-02, +-1.766292266394157637e-02, +-1.764826150445868158e-02, +-1.763357268678680118e-02, +-1.761885623665082612e-02, +-1.760411217981878648e-02, +-1.758934054210139347e-02, +-1.757454134935271597e-02, +-1.755971462746931319e-02, +-1.754486040239099792e-02, +-1.752997870009997614e-02, +-1.751506954662156168e-02, +-1.750013296802368015e-02, +-1.748516899041701114e-02, +-1.747017763995462741e-02, +-1.745515894283231409e-02, +-1.744011292528856866e-02, +-1.742503961360409789e-02, +-1.740993903410220645e-02, +-1.739481121314866152e-02, +-1.737965617715158881e-02, +-1.736447395256114981e-02, +-1.734926456587014554e-02, +-1.733402804361332608e-02, +-1.731876441236773062e-02, +-1.730347369875259028e-02, +-1.728815592942917548e-02, +-1.727281113110064326e-02, +-1.725743933051242587e-02, +-1.724204055445154038e-02, +-1.722661482974730332e-02, +-1.721116218327051195e-02, +-1.719568264193403750e-02, +-1.718017623269247132e-02, +-1.716464298254189585e-02, +-1.714908291852045019e-02, +-1.713349606770744535e-02, +-1.711788245722402346e-02, +-1.710224211423297738e-02, +-1.708657506593835168e-02, +-1.707088133958563694e-02, +-1.705516096246183569e-02, +-1.703941396189517440e-02, +-1.702364036525529437e-02, +-1.700784019995283877e-02, +-1.699201349343996623e-02, +-1.697616027320977480e-02, +-1.696028056679663512e-02, +-1.694437440177568033e-02, +-1.692844180576339938e-02, +-1.691248280641705765e-02, +-1.689649743143457894e-02, +-1.688048570855543717e-02, +-1.686444766555925470e-02, +-1.684838333026685009e-02, +-1.683229273053940891e-02, +-1.681617589427916032e-02, +-1.680003284942857902e-02, +-1.678386362397106188e-02, +-1.676766824593031724e-02, +-1.675144674337079864e-02, +-1.673519914439692072e-02, +-1.671892547715399940e-02, +-1.670262576982728397e-02, +-1.668630005064261623e-02, +-1.666994834786579560e-02, +-1.665357068980308219e-02, +-1.663716710480073885e-02, +-1.662073762124518031e-02, +-1.660428226756282058e-02, +-1.658780107221994454e-02, +-1.657129406372301328e-02, +-1.655476127061833447e-02, +-1.653820272149210055e-02, +-1.652161844496999321e-02, +-1.650500846971795013e-02, +-1.648837282444111721e-02, +-1.647171153788471593e-02, +-1.645502463883323496e-02, +-1.643831215611091939e-02, +-1.642157411858143762e-02, +-1.640481055514806177e-02, +-1.638802149475319242e-02, +-1.637120696637894487e-02, +-1.635436699904629226e-02, +-1.633750162181586002e-02, +-1.632061086378738812e-02, +-1.630369475409958191e-02, +-1.628675332193060474e-02, +-1.626978659649725920e-02, +-1.625279460705573997e-02, +-1.623577738290088446e-02, +-1.621873495336667581e-02, +-1.620166734782583357e-02, +-1.618457459569008425e-02, +-1.616745672640947096e-02, +-1.615031376947328665e-02, +-1.613314575440895696e-02, +-1.611595271078304636e-02, +-1.609873466820016183e-02, +-1.608149165630373689e-02, +-1.606422370477561534e-02, +-1.604693084333610673e-02, +-1.602961310174356654e-02, +-1.601227050979509015e-02, +-1.599490309732560026e-02, +-1.597751089420852352e-02, +-1.596009393035538806e-02, +-1.594265223571561529e-02, +-1.592518584027701606e-02, +-1.590769477406499613e-02, +-1.589017906714333336e-02, +-1.587263874961332075e-02, +-1.585507385161429722e-02, +-1.583748440332340135e-02, +-1.581987043495554010e-02, +-1.580223197676307659e-02, +-1.578456905903631580e-02, +-1.576688171210285580e-02, +-1.574916996632806654e-02, +-1.573143385211469431e-02, +-1.571367339990301787e-02, +-1.569588864017055010e-02, +-1.567807960343206575e-02, +-1.566024632023993793e-02, +-1.564238882118336449e-02, +-1.562450713688900636e-02, +-1.560660129802058337e-02, +-1.558867133527892454e-02, +-1.557071727940152923e-02, +-1.555273916116341887e-02, +-1.553473701137601630e-02, +-1.551671086088796635e-02, +-1.549866074058430139e-02, +-1.548058668138745965e-02, +-1.546248871425589567e-02, +-1.544436687018520271e-02, +-1.542622118020715687e-02, +-1.540805167539050294e-02, +-1.538985838684008359e-02, +-1.537164134569742914e-02, +-1.535340058314045748e-02, +-1.533513613038315487e-02, +-1.531684801867620564e-02, +-1.529853627930604504e-02, +-1.528020094359569016e-02, +-1.526184204290390208e-02, +-1.524345960862583116e-02, +-1.522505367219249839e-02, +-1.520662426507095842e-02, +-1.518817141876396999e-02, +-1.516969516481040704e-02, +-1.515119553478469494e-02, +-1.513267256029711579e-02, +-1.511412627299369392e-02, +-1.509555670455615083e-02, +-1.507696388670148185e-02, +-1.505834785118254603e-02, +-1.503970862978751266e-02, +-1.502104625433985097e-02, +-1.500236075669869780e-02, +-1.498365216875827306e-02, +-1.496492052244831339e-02, +-1.494616584973329845e-02, +-1.492738818261339639e-02, +-1.490858755312341952e-02, +-1.488976399333358930e-02, +-1.487091753534864128e-02, +-1.485204821130893353e-02, +-1.483315605338905545e-02, +-1.481424109379884946e-02, +-1.479530336478259746e-02, +-1.477634289861963143e-02, +-1.475735972762359446e-02, +-1.473835388414293512e-02, +-1.471932540056084156e-02, +-1.470027430929451637e-02, +-1.468120064279611857e-02, +-1.466210443355171582e-02, +-1.464298571408214830e-02, +-1.462384451694215444e-02, +-1.460468087472092079e-02, +-1.458549482004179929e-02, +-1.456628638556228643e-02, +-1.454705560397365378e-02, +-1.452780250800152564e-02, +-1.450852713040517127e-02, +-1.448922950397797844e-02, +-1.446990966154707882e-02, +-1.445056763597348144e-02, +-1.443120346015165124e-02, +-1.441181716701011618e-02, +-1.439240878951059469e-02, +-1.437297836064870687e-02, +-1.435352591345334140e-02, +-1.433405148098691392e-02, +-1.431455509634543301e-02, +-1.429503679265781146e-02, +-1.427549660308672329e-02, +-1.425593456082755589e-02, +-1.423635069910923409e-02, +-1.421674505119374828e-02, +-1.419711765037613531e-02, +-1.417746852998418364e-02, +-1.415779772337904217e-02, +-1.413810526395427661e-02, +-1.411839118513672810e-02, +-1.409865552038563029e-02, +-1.407889830319319739e-02, +-1.405911956708422172e-02, +-1.403931934561617086e-02, +-1.401949767237890658e-02, +-1.399965458099470400e-02, +-1.397979010511868347e-02, +-1.395990427843782355e-02, +-1.393999713467180233e-02, +-1.392006870757245100e-02, +-1.390011903092388916e-02, +-1.388014813854203562e-02, +-1.386015606427546190e-02, +-1.384014284200414321e-02, +-1.382010850564052186e-02, +-1.380005308912878557e-02, +-1.377997662644516418e-02, +-1.375987915159722179e-02, +-1.373976069862486125e-02, +-1.371962130159911676e-02, +-1.369946099462319121e-02, +-1.367927981183137721e-02, +-1.365907778738982038e-02, +-1.363885495549620706e-02, +-1.361861135037911383e-02, +-1.359834700629910208e-02, +-1.357806195754748119e-02, +-1.355775623844714811e-02, +-1.353742988335206524e-02, +-1.351708292664735925e-02, +-1.349671540274901584e-02, +-1.347632734610439489e-02, +-1.345591879119127643e-02, +-1.343548977251887711e-02, +-1.341504032462678339e-02, +-1.339457048208566627e-02, +-1.337408027949678509e-02, +-1.335356975149218188e-02, +-1.333303893273412276e-02, +-1.331248785791590630e-02, +-1.329191656176095804e-02, +-1.327132507902312880e-02, +-1.325071344448684567e-02, +-1.323008169296668347e-02, +-1.320942985930767359e-02, +-1.318875797838459096e-02, +-1.316806608510290647e-02, +-1.314735421439755698e-02, +-1.312662240123400534e-02, +-1.310587068060738852e-02, +-1.308509908754296007e-02, +-1.306430765709539268e-02, +-1.304349642434969939e-02, +-1.302266542442000186e-02, +-1.300181469245065453e-02, +-1.298094426361514307e-02, +-1.296005417311677649e-02, +-1.293914445618828124e-02, +-1.291821514809190011e-02, +-1.289726628411899667e-02, +-1.287629789959026348e-02, +-1.285531002985589206e-02, +-1.283430271029504903e-02, +-1.281327597631624383e-02, +-1.279222986335665918e-02, +-1.277116440688294899e-02, +-1.275007964239028430e-02, +-1.272897560540313389e-02, +-1.270785233147437784e-02, +-1.268670985618600144e-02, +-1.266554821514853310e-02, +-1.264436744400136356e-02, +-1.262316757841205200e-02, +-1.260194865407719515e-02, +-1.258071070672136735e-02, +-1.255945377209788556e-02, +-1.253817788598849368e-02, +-1.251688308420279179e-02, +-1.249556940257915902e-02, +-1.247423687698358957e-02, +-1.245288554331074223e-02, +-1.243151543748281275e-02, +-1.241012659545035444e-02, +-1.238871905319167965e-02, +-1.236729284671320150e-02, +-1.234584801204871053e-02, +-1.232438458526023337e-02, +-1.230290260243701791e-02, +-1.228140209969642328e-02, +-1.225988311318291189e-02, +-1.223834567906874685e-02, +-1.221678983355365539e-02, +-1.219521561286472655e-02, +-1.217362305325612321e-02, +-1.215201219100966318e-02, +-1.213038306243401261e-02, +-1.210873570386520465e-02, +-1.208707015166650238e-02, +-1.206538644222769109e-02, +-1.204368461196610694e-02, +-1.202196469732544695e-02, +-1.200022673477680289e-02, +-1.197847076081744004e-02, +-1.195669681197186578e-02, +-1.193490492479098650e-02, +-1.191309513585251181e-02, +-1.189126748176027280e-02, +-1.186942199914514141e-02, +-1.184755872466382309e-02, +-1.182567769499982477e-02, +-1.180377894686274014e-02, +-1.178186251698861049e-02, +-1.175992844213932451e-02, +-1.173797675910291313e-02, +-1.171600750469382543e-02, +-1.169402071575201263e-02, +-1.167201642914369661e-02, +-1.164999468176085816e-02, +-1.162795551052139137e-02, +-1.160589895236856760e-02, +-1.158382504427181436e-02, +-1.156173382322573523e-02, +-1.153962532625093032e-02, +-1.151749959039299886e-02, +-1.149535665272337359e-02, +-1.147319655033871184e-02, +-1.145101932036110201e-02, +-1.142882499993754658e-02, +-1.140661362624069072e-02, +-1.138438523646779360e-02, +-1.136213986784159226e-02, +-1.133987755760978988e-02, +-1.131759834304469324e-02, +-1.129530226144389617e-02, +-1.127298935012939832e-02, +-1.125065964644841009e-02, +-1.122831318777231698e-02, +-1.120595001149754522e-02, +-1.118357015504494421e-02, +-1.116117365585998430e-02, +-1.113876055141217389e-02, +-1.111633087919594066e-02, +-1.109388467672952489e-02, +-1.107142198155574783e-02, +-1.104894283124158681e-02, +-1.102644726337816301e-02, +-1.100393531558035119e-02, +-1.098140702548754816e-02, +-1.095886243076263887e-02, +-1.093630156909245442e-02, +-1.091372447818788304e-02, +-1.089113119578337396e-02, +-1.086852175963727921e-02, +-1.084589620753115963e-02, +-1.082325457727062457e-02, +-1.080059690668433263e-02, +-1.077792323362483130e-02, +-1.075523359596743111e-02, +-1.073252803161166453e-02, +-1.070980657847936737e-02, +-1.068706927451626952e-02, +-1.066431615769066789e-02, +-1.064154726599442213e-02, +-1.061876263744193118e-02, +-1.059596231007086525e-02, +-1.057314632194173397e-02, +-1.055031471113757231e-02, +-1.052746751576460159e-02, +-1.050460477395118337e-02, +-1.048172652384889332e-02, +-1.045883280363125306e-02, +-1.043592365149479013e-02, +-1.041299910565816368e-02, +-1.039005920436267966e-02, +-1.036710398587147725e-02, +-1.034413348847044653e-02, +-1.032114775046717378e-02, +-1.029814681019172382e-02, +-1.027513070599604672e-02, +-1.025209947625427102e-02, +-1.022905315936200980e-02, +-1.020599179373726621e-02, +-1.018291541781930418e-02, +-1.015982407006963024e-02, +-1.013671778897094582e-02, +-1.011359661302787399e-02, +-1.009046058076660743e-02, +-1.006730973073444689e-02, +-1.004414410150059576e-02, +-1.002096373165505157e-02, +-9.997768659809645048e-03, +-9.974558924596820669e-03, +-9.951334564670991437e-03, +-9.928095618706826719e-03, +-9.904842125400657379e-03, +-9.881574123469188606e-03, +-9.858291651650651771e-03, +-9.834994748703482573e-03, +-9.811683453407367070e-03, +-9.788357804562497488e-03, +-9.765017840989889675e-03, +-9.741663601530836658e-03, +-9.718295125047141103e-03, +-9.694912450421490011e-03, +-9.671515616556370515e-03, +-9.648104662375048268e-03, +-9.624679626820833653e-03, +-9.601240548857446072e-03, +-9.577787467468242000e-03, +-9.554320421657221118e-03, +-9.530839450447858852e-03, +-9.507344592883928622e-03, +-9.483835888028986638e-03, +-9.460313374966422204e-03, +-9.436777092799100361e-03, +-9.413227080649967313e-03, +-9.389663377661131016e-03, +-9.366086022994749363e-03, +-9.342495055831939038e-03, +-9.318890515373554409e-03, +-9.295272440839887421e-03, +-9.271640871470110748e-03, +-9.247995846523087912e-03, +-9.224337405276358468e-03, +-9.200665587026937708e-03, +-9.176980431090740742e-03, +-9.153281976802721265e-03, +-9.129570263516429210e-03, +-9.105845330604666471e-03, +-9.082107217458562295e-03, +-9.058355963488409421e-03, +-9.034591608122626710e-03, +-9.010814190808631718e-03, +-8.987023751012157211e-03, +-8.963220328217570351e-03, +-8.939403961927154529e-03, +-8.915574691662068660e-03, +-8.891732556961301145e-03, +-8.867877597382054985e-03, +-8.844009852499857063e-03, +-8.820129361908174773e-03, +-8.796236165218584285e-03, +-8.772330302060198093e-03, +-8.748411812080511551e-03, +-8.724480734944252761e-03, +-8.700537110334265536e-03, +-8.676580977950957771e-03, +-8.652612377512428066e-03, +-8.628631348753901947e-03, +-8.604637931428580147e-03, +-8.580632165306568276e-03, +-8.556614090175815313e-03, +-8.532583745840942660e-03, +-8.508541172124267637e-03, +-8.484486408865026322e-03, +-8.460419495919691002e-03, +-8.436340473161465375e-03, +-8.412249380480461489e-03, +-8.388146257783946069e-03, +-8.364031144995865211e-03, +-8.339904082056981416e-03, +-8.315765108924415630e-03, +-8.291614265572344600e-03, +-8.267451591990975651e-03, +-8.243277128187552830e-03, +-8.219090914185179023e-03, +-8.194892990023659035e-03, +-8.170683395758984377e-03, +-8.146462171463466836e-03, +-8.122229357225179899e-03, +-8.097984993148775804e-03, +-8.073729119354434297e-03, +-8.049461775978769898e-03, +-8.025183003173756366e-03, +-8.000892841107583656e-03, +-7.976591329964170460e-03, +-7.952278509942753079e-03, +-7.927954421258653905e-03, +-7.903619104142297833e-03, +-7.879272598839918290e-03, +-7.854914945613043764e-03, +-7.830546184738723312e-03, +-7.806166356508849151e-03, +-7.781775501231089943e-03, +-7.757373659227685160e-03, +-7.732960870836544029e-03, +-7.708537176410070260e-03, +-7.684102616315948743e-03, +-7.659657230936662425e-03, +-7.635201060669668388e-03, +-7.610734145926734313e-03, +-7.586256527134850949e-03, +-7.561768244735133163e-03, +-7.537269339183595360e-03, +-7.512759850950768981e-03, +-7.488239820521205500e-03, +-7.463709288394329913e-03, +-7.439168295083348724e-03, +-7.414616881116181495e-03, +-7.390055087034403530e-03, +-7.365482953394037781e-03, +-7.340900520765038760e-03, +-7.316307829731413109e-03, +-7.291704920890667088e-03, +-7.267091834854690416e-03, +-7.242468612248538495e-03, +-7.217835293711349215e-03, +-7.193191919895837276e-03, +-7.168538531468313275e-03, +-7.143875169108342832e-03, +-7.119201873508896640e-03, +-7.094518685376707823e-03, +-7.069825645431291813e-03, +-7.045122794405698358e-03, +-7.020410173046087374e-03, +-6.995687822111814821e-03, +-6.970955782374790854e-03, +-6.946214094620513715e-03, +-6.921462799646764356e-03, +-6.896701938264668957e-03, +-6.871931551297605183e-03, +-6.847151679582046124e-03, +-6.822362363966878555e-03, +-6.797563645313770692e-03, +-6.772755564496382025e-03, +-6.747938162401359054e-03, +-6.723111479927180827e-03, +-6.698275557984991607e-03, +-6.673430437498151582e-03, +-6.648576159401753741e-03, +-6.623712764643510317e-03, +-6.598840294182653846e-03, +-6.573958788990827938e-03, +-6.549068290051071606e-03, +-6.524168838358614629e-03, +-6.499260474920305099e-03, +-6.474343240754801970e-03, +-6.449417176891969646e-03, +-6.424482324373750539e-03, +-6.399538724253027965e-03, +-6.374586417594496970e-03, +-6.349625445474062387e-03, +-6.324655848979014033e-03, +-6.299677669207472477e-03, +-6.274690947269245117e-03, +-6.249695724284773206e-03, +-6.224692041385499613e-03, +-6.199679939714105616e-03, +-6.174659460423994814e-03, +-6.149630644679510844e-03, +-6.124593533655301597e-03, +-6.099548168537268986e-03, +-6.074494590521326877e-03, +-6.049432840814487032e-03, +-6.024362960633682963e-03, +-5.999284991206646836e-03, +-5.974198973771312725e-03, +-5.949104949576012637e-03, +-5.924002959878863286e-03, +-5.898893045948642132e-03, +-5.873775249063665008e-03, +-5.848649610512617926e-03, +-5.823516171594145079e-03, +-5.798374973616316277e-03, +-5.773226057897537684e-03, +-5.748069465765416435e-03, +-5.722905238557717336e-03, +-5.697733417621312496e-03, +-5.672554044312919444e-03, +-5.647367159998612808e-03, +-5.622172806054024675e-03, +-5.596971023863609937e-03, +-5.571761854821712275e-03, +-5.546545340331231026e-03, +-5.521321521804638602e-03, +-5.496090440663272715e-03, +-5.470852138337662512e-03, +-5.445606656266732334e-03, +-5.420354035898884183e-03, +-5.395094318690695813e-03, +-5.369827546108040493e-03, +-5.344553759624838009e-03, +-5.319273000724036513e-03, +-5.293985310897040934e-03, +-5.268690731643319199e-03, +-5.243389304471243566e-03, +-5.218081070896927499e-03, +-5.192766072445296859e-03, +-5.167444350648702119e-03, +-5.142115947048612329e-03, +-5.116780903193521302e-03, +-5.091439260640580854e-03, +-5.066091060954318846e-03, +-5.040736345707595885e-03, +-5.015375156480476014e-03, +-4.990007534861186020e-03, +-4.964633522445362560e-03, +-4.939253160836393035e-03, +-4.913866491644843133e-03, +-4.888473556488704026e-03, +-4.863074396993741048e-03, +-4.837669054792426843e-03, +-4.812257571524886784e-03, +-4.786839988838247593e-03, +-4.761416348386851571e-03, +-4.735986691831629500e-03, +-4.710551060841025248e-03, +-4.685109497089782332e-03, +-4.659662042259898017e-03, +-4.634208738039926820e-03, +-4.608749626125271948e-03, +-4.583284748217505283e-03, +-4.557814146025305005e-03, +-4.532337861263213523e-03, +-4.506855935652803215e-03, +-4.481368410921350229e-03, +-4.455875328802854501e-03, +-4.430376731037508932e-03, +-4.404872659371172894e-03, +-4.379363155556387915e-03, +-4.353848261351068831e-03, +-4.328328018519646964e-03, +-4.302802468831702296e-03, +-4.277271654063574159e-03, +-4.251735615996353294e-03, +-4.226194396417468253e-03, +-4.200648037119376552e-03, +-4.175096579900594226e-03, +-4.149540066564560460e-03, +-4.123978538920475452e-03, +-4.098412038782727959e-03, +-4.072840607971093055e-03, +-4.047264288310084210e-03, +-4.021683121629898716e-03, +-3.996097149765322210e-03, +-3.970506414556151942e-03, +-3.944910957847333824e-03, +-3.919310821488518337e-03, +-3.893706047334279541e-03, +-3.868096677243420753e-03, +-3.842482753079992826e-03, +-3.816864316711999182e-03, +-3.791241410012391542e-03, +-3.765614074858381240e-03, +-3.739982353131695528e-03, +-3.714346286717917951e-03, +-3.688705917507422490e-03, +-3.663061287394154923e-03, +-3.637412438276735240e-03, +-3.611759412057217750e-03, +-3.586102250642029567e-03, +-3.560440995941346540e-03, +-3.534775689869280174e-03, +-3.509106374343410988e-03, +-3.483433091285012724e-03, +-3.457755882619223224e-03, +-3.432074790274578218e-03, +-3.406389856183248549e-03, +-3.380701122280364065e-03, +-3.355008630504971185e-03, +-3.329312422798794309e-03, +-3.303612541107339099e-03, +-3.277909027378674706e-03, +-3.252201923564347098e-03, +-3.226491271618761071e-03, +-3.200777113499389710e-03, +-3.175059491166138184e-03, +-3.149338446582273989e-03, +-3.123614021713193127e-03, +-3.097886258527548543e-03, +-3.072155198995983345e-03, +-3.046420885092086198e-03, +-3.020683358791910814e-03, +-2.994942662073449453e-03, +-2.969198836917590501e-03, +-2.943451925306868593e-03, +-2.917701969226457314e-03, +-2.891949010663462730e-03, +-2.866193091607207449e-03, +-2.840434254048525026e-03, +-2.814672539980742679e-03, +-2.788907991398439663e-03, +-2.763140650298549685e-03, +-2.737370558679114944e-03, +-2.711597758540255833e-03, +-2.685822291883499611e-03, +-2.660044200712014147e-03, +-2.634263527029959574e-03, +-2.608480312843439782e-03, +-2.582694600159265563e-03, +-2.556906430985899596e-03, +-2.531115847332966826e-03, +-2.505322891210740987e-03, +-2.479527604631083949e-03, +-2.453730029606237487e-03, +-2.427930208149905750e-03, +-2.402128182276017099e-03, +-2.376323993999683408e-03, +-2.350517685336555619e-03, +-2.324709298303031472e-03, +-2.298898874915611488e-03, +-2.273086457191858274e-03, +-2.247272087149162264e-03, +-2.221455806805804241e-03, +-2.195637658179643448e-03, +-2.169817683289729585e-03, +-2.143995924154386799e-03, +-2.118172422792139169e-03, +-2.092347221221956596e-03, +-2.066520361462145447e-03, +-2.040691885531306562e-03, +-2.014861835447693834e-03, +-1.989030253229421511e-03, +-1.963197180893841865e-03, +-1.937362660458457004e-03, +-1.911526733939720611e-03, +-1.885689443354106754e-03, +-1.859850830716906636e-03, +-1.834010938043154721e-03, +-1.808169807346986886e-03, +-1.782327480641868753e-03, +-1.756483999939937148e-03, +-1.730639407252962435e-03, +-1.704793744591103421e-03, +-1.678947053963858634e-03, +-1.653099377379566937e-03, +-1.627250756844916607e-03, +-1.601401234365867551e-03, +-1.575550851946440475e-03, +-1.549699651589802165e-03, +-1.523847675297038606e-03, +-1.497994965068111684e-03, +-1.472141562901184810e-03, +-1.446287510792883344e-03, +-1.420432850737611986e-03, +-1.394577624728519276e-03, +-1.368721874756270935e-03, +-1.342865642809983788e-03, +-1.317008970876598021e-03, +-1.291151900941077098e-03, +-1.265294474985777847e-03, +-1.239436734991387640e-03, +-1.213578722935841278e-03, +-1.187720480794698073e-03, +-1.161862050541350886e-03, +-1.136003474146528693e-03, +-1.110144793578531856e-03, +-1.084286050802554064e-03, +-1.058427287781660720e-03, +-1.032568546475541669e-03, +-1.006709868841616654e-03, +-9.808512968337893510e-04, +-9.549928724034191388e-04, +-9.291346374986444480e-04, +-9.032766340646390668e-04, +-8.774189040429274675e-04, +-8.515614893723664428e-04, +-8.257044319878900336e-04, +-7.998477738214764205e-04, +-7.739915568016305421e-04, +-7.481358228528943617e-04, +-7.222806138967815572e-04, +-6.964259718505634317e-04, +-6.705719386283447679e-04, +-6.447185561398548334e-04, +-6.188658662913786024e-04, +-5.930139109851198954e-04, +-5.671627321194176773e-04, +-5.413123715881009573e-04, +-5.154628712814350805e-04, +-4.896142730848982057e-04, +-4.637666188801196823e-04, +-4.379199505442447622e-04, +-4.120743099501423872e-04, +-3.862297389657759180e-04, +-3.603862794551307772e-04, +-3.345439732770038839e-04, +-3.087028622860838443e-04, +-2.828629883317329043e-04, +-2.570243932589265194e-04, +-2.311871189077554080e-04, +-2.053512071129238363e-04, +-1.795166997046927933e-04, +-1.536836385076592061e-04, +-1.278520653418401692e-04, +-1.020220220213102243e-04, +-7.619355035586178879e-05, +-5.036669214892215967e-05, +-2.454148919921291178e-05, + 1.282016700611655602e-06, + 2.710378376288123675e-05, + 5.292377020612812501e-05, + 7.874193425414699650e-05, + 1.045582341366375792e-04, + 1.303726280889846219e-04, + 1.561850743527568443e-04, + 1.819955311754851968e-04, + 2.078039568103009951e-04, + 2.336103095170070573e-04, + 2.594145475611404927e-04, + 2.852166292146139258e-04, + 3.110165127554948613e-04, + 3.368141564686497817e-04, + 3.626095186448027342e-04, + 3.884025575817533237e-04, + 4.141932315834368178e-04, + 4.399814989605700601e-04, + 4.657673180304253060e-04, + 4.915506471174760274e-04, + 5.173314445524557171e-04, + 5.431096686735777243e-04, + 5.688852778254491552e-04, + 5.946582303602897333e-04, + 6.204284846369925548e-04, + 6.461959990216208701e-04, + 6.719607318879064917e-04, + 6.977226416163134770e-04, + 7.234816865952517842e-04, + 7.492378252199918777e-04, + 7.749910158940363520e-04, + 8.007412170274452734e-04, + 8.264883870389318340e-04, + 8.522324843541898617e-04, + 8.779734674072689135e-04, + 9.037112946394792318e-04, + 9.294459245006082187e-04, + 9.551773154479947445e-04, + 9.809054259471569007e-04, + 1.006630214471573859e-03, + 1.032351639503334547e-03, + 1.058069659532191904e-03, + 1.083784233056631682e-03, + 1.109495318583519647e-03, + 1.135202874627873684e-03, + 1.160906859713362309e-03, + 1.186607232372080241e-03, + 1.212303951145199355e-03, + 1.237996974582019792e-03, + 1.263686261241187079e-03, + 1.289371769689766443e-03, + 1.315053458503857332e-03, + 1.340731286268404768e-03, + 1.366405211577810834e-03, + 1.392075193035017438e-03, + 1.417741189252710865e-03, + 1.443403158852238875e-03, + 1.469061060464830863e-03, + 1.494714852730656988e-03, + 1.520364494299474793e-03, + 1.546009943830390894e-03, + 1.571651159992379669e-03, + 1.597288101464045592e-03, + 1.622920726933267405e-03, + 1.648548995098414374e-03, + 1.674172864666682902e-03, + 1.699792294356178204e-03, + 1.725407242894256123e-03, + 1.751017669018879470e-03, + 1.776623531477536421e-03, + 1.802224789028456994e-03, + 1.827821400439680853e-03, + 1.853413324489675299e-03, + 1.879000519967135999e-03, + 1.904582945671629696e-03, + 1.930160560412627103e-03, + 1.955733323010747787e-03, + 1.981301192296674660e-03, + 2.006864127112338147e-03, + 2.032422086310019770e-03, + 2.057975028752810111e-03, + 2.083522913315138773e-03, + 2.109065698881809007e-03, + 2.134603344349229794e-03, + 2.160135808624467392e-03, + 2.185663050625880673e-03, + 2.211185029282922068e-03, + 2.236701703536753821e-03, + 2.262213032339308212e-03, + 2.287718974654532212e-03, + 2.313219489457265989e-03, + 2.338714535734480199e-03, + 2.364204072484333598e-03, + 2.389688058716808380e-03, + 2.415166453453491610e-03, + 2.440639215728203620e-03, + 2.466106304586093787e-03, + 2.491567679084803668e-03, + 2.517023298293577516e-03, + 2.542473121293709840e-03, + 2.567917107179087943e-03, + 2.593355215055220039e-03, + 2.618787404040459101e-03, + 2.644213633264929936e-03, + 2.669633861871726580e-03, + 2.695048049015986817e-03, + 2.720456153865518419e-03, + 2.745858135600582305e-03, + 2.771253953414539156e-03, + 2.796643566512908765e-03, + 2.822026934114562659e-03, + 2.847404015450678057e-03, + 2.872774769766055399e-03, + 2.898139156317501575e-03, + 2.923497134375719914e-03, + 2.948848663224399452e-03, + 2.974193702159976839e-03, + 2.999532210492728782e-03, + 3.024864147545786724e-03, + 3.050189472655841141e-03, + 3.075508145172858778e-03, + 3.100820124460764403e-03, + 3.126125369896468921e-03, + 3.151423840871097129e-03, + 3.176715496788921726e-03, + 3.202000297068533386e-03, + 3.227278201141949975e-03, + 3.252549168455222406e-03, + 3.277813158468223867e-03, + 3.303070130655272156e-03, + 3.328320044504232394e-03, + 3.353562859517683625e-03, + 3.378798535211990309e-03, + 3.404027031117830109e-03, + 3.429248306780619763e-03, + 3.454462321759673750e-03, + 3.479669035629318844e-03, + 3.504868407977868461e-03, + 3.530060398408824390e-03, + 3.555244966539921822e-03, + 3.580422072003774242e-03, + 3.605591674447688241e-03, + 3.630753733534224700e-03, + 3.655908208940331430e-03, + 3.681055060358509774e-03, + 3.706194247495768999e-03, + 3.731325730074923439e-03, + 3.756449467833024303e-03, + 3.781565420523330320e-03, + 3.806673547913731748e-03, + 3.831773809787921738e-03, + 3.856866165945026844e-03, + 3.881950576199423141e-03, + 3.907027000381173808e-03, + 3.932095398335873869e-03, + 3.957155729925210946e-03, + 3.982207955026083150e-03, + 4.007252033531787799e-03, + 4.032287925350956301e-03, + 4.057315590408742435e-03, + 4.082334988645870862e-03, + 4.107346080019322332e-03, + 4.132348824502090831e-03, + 4.157343182083777719e-03, + 4.182329112769702685e-03, + 4.207306576582118054e-03, + 4.232275533559224333e-03, + 4.257235943755716644e-03, + 4.282187767243209736e-03, + 4.307130964109374960e-03, + 4.332065494459115540e-03, + 4.356991318413458089e-03, + 4.381908396110808547e-03, + 4.406816687705975531e-03, + 4.431716153370849481e-03, + 4.456606753294129440e-03, + 4.481488447681978779e-03, + 4.506361196757124009e-03, + 4.531224960759981484e-03, + 4.556079699947802181e-03, + 4.580925374595271049e-03, + 4.605761944994265882e-03, + 4.630589371454532123e-03, + 4.655407614302701017e-03, + 4.680216633883550748e-03, + 4.705016390558864996e-03, + 4.729806844708690609e-03, + 4.754587956730360956e-03, + 4.779359687039037158e-03, + 4.804121996068124421e-03, + 4.828874844268424629e-03, + 4.853618192109258704e-03, + 4.878352000077449194e-03, + 4.903076228678479066e-03, + 4.927790838435613940e-03, + 4.952495789890440717e-03, + 4.977191043602778239e-03, + 5.001876560151147406e-03, + 5.026552300132000953e-03, + 5.051218224160798978e-03, + 5.075874292871145055e-03, + 5.100520466915402923e-03, + 5.125156706964444087e-03, + 5.149782973708194253e-03, + 5.174399227855328888e-03, + 5.199005430133037294e-03, + 5.223601541287902980e-03, + 5.248187522085161205e-03, + 5.272763333309181226e-03, + 5.297328935763314511e-03, + 5.321884290270536590e-03, + 5.346429357672450450e-03, + 5.370964098830538144e-03, + 5.395488474625239651e-03, + 5.420002445956529670e-03, + 5.444505973743745016e-03, + 5.468999018926170089e-03, + 5.493481542462161707e-03, + 5.517953505330271471e-03, + 5.542414868528269117e-03, + 5.566865593074247533e-03, + 5.591305640005705957e-03, + 5.615734970380139787e-03, + 5.640153545275358900e-03, + 5.664561325788740852e-03, + 5.688958273038221408e-03, + 5.713344348161428915e-03, + 5.737719512316884728e-03, + 5.762083726682404664e-03, + 5.786436952457155516e-03, + 5.810779150859996661e-03, + 5.835110283130834005e-03, + 5.859430310529534919e-03, + 5.883739194337117388e-03, + 5.908036895854856634e-03, + 5.932323376404866240e-03, + 5.956598597329902135e-03, + 5.980862519993966273e-03, + 6.005115105781441004e-03, + 6.029356316098045780e-03, + 6.053586112370571738e-03, + 6.077804456046532154e-03, + 6.102011308594812965e-03, + 6.126206631505335364e-03, + 6.150390386289698516e-03, + 6.174562534480236738e-03, + 6.198723037631336148e-03, + 6.222871857318299296e-03, + 6.247008955138148335e-03, + 6.271134292709301498e-03, + 6.295247831672251375e-03, + 6.319349533688638568e-03, + 6.343439360442333294e-03, + 6.367517273638594044e-03, + 6.391583235004969638e-03, + 6.415637206290652171e-03, + 6.439679149266870802e-03, + 6.463709025726831897e-03, + 6.487726797486111953e-03, + 6.511732426382467638e-03, + 6.535725874275477576e-03, + 6.559707103047728895e-03, + 6.583676074603158831e-03, + 6.607632750869115584e-03, + 6.631577093794744152e-03, + 6.655509065352246609e-03, + 6.679428627535898520e-03, + 6.703335742363190387e-03, + 6.727230371873890898e-03, + 6.751112478130706120e-03, + 6.774982023219038377e-03, + 6.798838969247603808e-03, + 6.822683278347512099e-03, + 6.846514912673453031e-03, + 6.870333834402652176e-03, + 6.894140005735999339e-03, + 6.917933388897193336e-03, + 6.941713946133167869e-03, + 6.965481639714594594e-03, + 6.989236431934986275e-03, + 7.012978285111810470e-03, + 7.036707161585655131e-03, + 7.060423023720762900e-03, + 7.084125833904889730e-03, + 7.107815554549819226e-03, + 7.131492148090592433e-03, + 7.155155576986520043e-03, + 7.178805803720270801e-03, + 7.202442790798940959e-03, + 7.226066500753194725e-03, + 7.249676896137873146e-03, + 7.273273939531745176e-03, + 7.296857593537987331e-03, + 7.320427820784052714e-03, + 7.343984583921162740e-03, + 7.367527845625593437e-03, + 7.391057568597023120e-03, + 7.414573715560560281e-03, + 7.438076249265118157e-03, + 7.461565132484654188e-03, + 7.485040328017299183e-03, + 7.508501798686352188e-03, + 7.531949507339392308e-03, + 7.555383416849013357e-03, + 7.578803490112485594e-03, + 7.602209690052396697e-03, + 7.625601979615754047e-03, + 7.648980321775114034e-03, + 7.672344679527636629e-03, + 7.695695015896241581e-03, + 7.719031293928151245e-03, + 7.742353476696623577e-03, + 7.765661527300091703e-03, + 7.788955408861999996e-03, + 7.812235084531722606e-03, + 7.835500517483771563e-03, + 7.858751670918278157e-03, + 7.881988508060896667e-03, + 7.905210992163366410e-03, + 7.928419086502535088e-03, + 7.951612754381632078e-03, + 7.974791959129166885e-03, + 7.997956664100080992e-03, + 8.021106832674875300e-03, + 8.044242428260222483e-03, + 8.067363414288666879e-03, + 8.090469754219314913e-03, + 8.113561411536934775e-03, + 8.136638349753073582e-03, + 8.159700532405139706e-03, + 8.182747923056923195e-03, + 8.205780485299019045e-03, + 8.228798182747985857e-03, + 8.251800979047384937e-03, + 8.274788837866904265e-03, + 8.297761722903359421e-03, + 8.320719597879848786e-03, + 8.343662426546430075e-03, + 8.366590172679766457e-03, + 8.389502800083815243e-03, + 8.412400272588951844e-03, + 8.435282554053034898e-03, + 8.458149608360479924e-03, + 8.481001399423390361e-03, + 8.503837891180131628e-03, + 8.526659047597223706e-03, + 8.549464832667798969e-03, + 8.572255210412656895e-03, + 8.595030144879986511e-03, + 8.617789600145224146e-03, + 8.640533540311341396e-03, + 8.663261929508772261e-03, + 8.685974731895926629e-03, + 8.708671911658394035e-03, + 8.731353433009930720e-03, + 8.754019260191642574e-03, + 8.776669357472875049e-03, + 8.799303689150555705e-03, + 8.821922219549681657e-03, + 8.844524913023009069e-03, + 8.867111733951910102e-03, + 8.889682646745198508e-03, + 8.912237615840446284e-03, + 8.934776605703069474e-03, + 8.957299580826662971e-03, + 8.979806505733661445e-03, + 9.002297344974307183e-03, + 9.024772063127829702e-03, + 9.047230624801392770e-03, + 9.069672994631284429e-03, + 9.092099137282001059e-03, + 9.114509017446793815e-03, + 9.136902599847564546e-03, + 9.159279849235361926e-03, + 9.181640730389526231e-03, + 9.203985208118804773e-03, + 9.226313247260486267e-03, + 9.248624812681049620e-03, + 9.270919869275823927e-03, + 9.293198381969638988e-03, + 9.315460315716016931e-03, + 9.337705635498164472e-03, + 9.359934306328086470e-03, + 9.382146293247543498e-03, + 9.404341561327403051e-03, + 9.426520075667898027e-03, + 9.448681801399126320e-03, + 9.470826703680249384e-03, + 9.492954747700566021e-03, + 9.515065898678416040e-03, + 9.537160121862469156e-03, + 9.559237382530682420e-03, + 9.581297645991042680e-03, + 9.603340877581193619e-03, + 9.625367042669134843e-03, + 9.647376106652338912e-03, + 9.669368034958773089e-03, + 9.691342793046170759e-03, + 9.713300346402475513e-03, + 9.735240660545744010e-03, + 9.757163701024508529e-03, + 9.779069433417589621e-03, + 9.800957823333820290e-03, + 9.822828836412915085e-03, + 9.844682438324703355e-03, + 9.866518594769635789e-03, + 9.888337271478586654e-03, + 9.910138434213473096e-03, + 9.931922048766365224e-03, + 9.953688080960561638e-03, + 9.975436496649782783e-03, + 9.997167261718674022e-03, + 1.001888034208272410e-02, + 1.004057570368863117e-02, + 1.006225331251369738e-02, + 1.008391313456666848e-02, + 1.010555513588697572e-02, + 1.012717928254566399e-02, + 1.014878554064463714e-02, + 1.017037387631705703e-02, + 1.019194425572769909e-02, + 1.021349664507234002e-02, + 1.023503101057856787e-02, + 1.025654731850498408e-02, + 1.027804553514220093e-02, + 1.029952562681205053e-02, + 1.032098755986807052e-02, + 1.034243130069543472e-02, + 1.036385681571137807e-02, + 1.038526407136438658e-02, + 1.040665303413534741e-02, + 1.042802367053665726e-02, + 1.044937594711271150e-02, + 1.047070983043989385e-02, + 1.049202528712687467e-02, + 1.051332228381404721e-02, + 1.053460078717421977e-02, + 1.055586076391248906e-02, + 1.057710218076589499e-02, + 1.059832500450397404e-02, + 1.061952920192843312e-02, + 1.064071473987378280e-02, + 1.066188158520652365e-02, + 1.068302970482610560e-02, + 1.070415906566423402e-02, + 1.072526963468530686e-02, + 1.074636137888631757e-02, + 1.076743426529725746e-02, + 1.078848826098052077e-02, + 1.080952333303167832e-02, + 1.083053944857877669e-02, + 1.085153657478325762e-02, + 1.087251467883909584e-02, + 1.089347372797354330e-02, + 1.091441368944671628e-02, + 1.093533453055213142e-02, + 1.095623621861641431e-02, + 1.097711872099913118e-02, + 1.099798200509374997e-02, + 1.101882603832612939e-02, + 1.103965078815644443e-02, + 1.106045622207763729e-02, + 1.108124230761663165e-02, + 1.110200901233341850e-02, + 1.112275630382200328e-02, + 1.114348414970975192e-02, + 1.116419251765768915e-02, + 1.118488137536060786e-02, + 1.120555069054729631e-02, + 1.122620043098006282e-02, + 1.124683056445539495e-02, + 1.126744105880336626e-02, + 1.128803188188843599e-02, + 1.130860300160878990e-02, + 1.132915438589667846e-02, + 1.134968600271878125e-02, + 1.137019782007556677e-02, + 1.139068980600218585e-02, + 1.141116192856767193e-02, + 1.143161415587556039e-02, + 1.145204645606361440e-02, + 1.147245879730435410e-02, + 1.149285114780438516e-02, + 1.151322347580521245e-02, + 1.153357574958254264e-02, + 1.155390793744707524e-02, + 1.157422000774397004e-02, + 1.159451192885303968e-02, + 1.161478366918891093e-02, + 1.163503519720120866e-02, + 1.165526648137439093e-02, + 1.167547749022753399e-02, + 1.169566819231527589e-02, + 1.171583855622636977e-02, + 1.173598855058553825e-02, + 1.175611814405198158e-02, + 1.177622730532056419e-02, + 1.179631600312082591e-02, + 1.181638420621809911e-02, + 1.183643188341268124e-02, + 1.185645900354025464e-02, + 1.187646553547185534e-02, + 1.189645144811433790e-02, + 1.191641671040947516e-02, + 1.193636129133518638e-02, + 1.195628515990446346e-02, + 1.197618828516639963e-02, + 1.199607063620541404e-02, + 1.201593218214169062e-02, + 1.203577289213154759e-02, + 1.205559273536665338e-02, + 1.207539168107501018e-02, + 1.209516969852023928e-02, + 1.211492675700201471e-02, + 1.213466282585598001e-02, + 1.215437787445405003e-02, + 1.217407187220398077e-02, + 1.219374478855001116e-02, + 1.221339659297220222e-02, + 1.223302725498732341e-02, + 1.225263674414811023e-02, + 1.227222503004369962e-02, + 1.229179208229956924e-02, + 1.231133787057799543e-02, + 1.233086236457725873e-02, + 1.235036553403256847e-02, + 1.236984734871575398e-02, + 1.238930777843466786e-02, + 1.240874679303459287e-02, + 1.242816436239700152e-02, + 1.244756045644052241e-02, + 1.246693504512024972e-02, + 1.248628809842850310e-02, + 1.250561958639424473e-02, + 1.252492947908346796e-02, + 1.254421774659905849e-02, + 1.256348435908126275e-02, + 1.258272928670703394e-02, + 1.260195249969086641e-02, + 1.262115396828401154e-02, + 1.264033366277549607e-02, + 1.265949155349082797e-02, + 1.267862761079365658e-02, + 1.269774180508443165e-02, + 1.271683410680134532e-02, + 1.273590448642001639e-02, + 1.275495291445343654e-02, + 1.277397936145211257e-02, + 1.279298379800420174e-02, + 1.281196619473568520e-02, + 1.283092652230992045e-02, + 1.284986475142831271e-02, + 1.286878085282968688e-02, + 1.288767479729107171e-02, + 1.290654655562708912e-02, + 1.292539609869032373e-02, + 1.294422339737124651e-02, + 1.296302842259865716e-02, + 1.298181114533890866e-02, + 1.300057153659688568e-02, + 1.301930956741539046e-02, + 1.303802520887527294e-02, + 1.305671843209594944e-02, + 1.307538920823472436e-02, + 1.309403750848760727e-02, + 1.311266330408850968e-02, + 1.313126656631023390e-02, + 1.314984726646367327e-02, + 1.316840537589822335e-02, + 1.318694086600189289e-02, + 1.320545370820137322e-02, + 1.322394387396172780e-02, + 1.324241133478696632e-02, + 1.326085606221949487e-02, + 1.327927802784088784e-02, + 1.329767720327083499e-02, + 1.331605356016861592e-02, + 1.333440707023179385e-02, + 1.335273770519735705e-02, + 1.337104543684073006e-02, + 1.338933023697689087e-02, + 1.340759207745945668e-02, + 1.342583093018116791e-02, + 1.344404676707424383e-02, + 1.346223956010964874e-02, + 1.348040928129792468e-02, + 1.349855590268855474e-02, + 1.351667939637071769e-02, + 1.353477973447259758e-02, + 1.355285688916189543e-02, + 1.357091083264568357e-02, + 1.358894153717073519e-02, + 1.360694897502301437e-02, + 1.362493311852839249e-02, + 1.364289394005213131e-02, + 1.366083141199912233e-02, + 1.367874550681392326e-02, + 1.369663619698101298e-02, + 1.371450345502464759e-02, + 1.373234725350853253e-02, + 1.375016756503670036e-02, + 1.376796436225279432e-02, + 1.378573761784042048e-02, + 1.380348730452313558e-02, + 1.382121339506481306e-02, + 1.383891586226894226e-02, + 1.385659467897953391e-02, + 1.387424981808052342e-02, + 1.389188125249601717e-02, + 1.390948895519031510e-02, + 1.392707289916829579e-02, + 1.394463305747471044e-02, + 1.396216940319511615e-02, + 1.397968190945501205e-02, + 1.399717054942072568e-02, + 1.401463529629883888e-02, + 1.403207612333635945e-02, + 1.404949300382121909e-02, + 1.406688591108151178e-02, + 1.408425481848633691e-02, + 1.410159969944517304e-02, + 1.411892052740850237e-02, + 1.413621727586732851e-02, + 1.415348991835353731e-02, + 1.417073842843979449e-02, + 1.418796277973990994e-02, + 1.420516294590816637e-02, + 1.422233890064033245e-02, + 1.423949061767270340e-02, + 1.425661807078290426e-02, + 1.427372123378937638e-02, + 1.429080008055207650e-02, + 1.430785458497166665e-02, + 1.432488472099037631e-02, + 1.434189046259157739e-02, + 1.435887178379977210e-02, + 1.437582865868092773e-02, + 1.439276106134216790e-02, + 1.440966896593235715e-02, + 1.442655234664139315e-02, + 1.444341117770107409e-02, + 1.446024543338435449e-02, + 1.447705508800587251e-02, + 1.449384011592177134e-02, + 1.451060049153006862e-02, + 1.452733618927011874e-02, + 1.454404718362329804e-02, + 1.456073344911241498e-02, + 1.457739496030242311e-02, + 1.459403169179978449e-02, + 1.461064361825292236e-02, + 1.462723071435207203e-02, + 1.464379295482958789e-02, + 1.466033031445987227e-02, + 1.467684276805890191e-02, + 1.469333029048519937e-02, + 1.470979285663910445e-02, + 1.472623044146306737e-02, + 1.474264301994174416e-02, + 1.475903056710214413e-02, + 1.477539305801326905e-02, + 1.479173046778663007e-02, + 1.480804277157589215e-02, + 1.482432994457713940e-02, + 1.484059196202872945e-02, + 1.485682879921168716e-02, + 1.487304043144923801e-02, + 1.488922683410736150e-02, + 1.490538798259431232e-02, + 1.492152385236121363e-02, + 1.493763441890154538e-02, + 1.495371965775140616e-02, + 1.496977954448993481e-02, + 1.498581405473860435e-02, + 1.500182316416192631e-02, + 1.501780684846703781e-02, + 1.503376508340393582e-02, + 1.504969784476544066e-02, + 1.506560510838752219e-02, + 1.508148685014872210e-02, + 1.509734304597091722e-02, + 1.511317367181871929e-02, + 1.512897870370002486e-02, + 1.514475811766564928e-02, + 1.516051188980952098e-02, + 1.517623999626880639e-02, + 1.519194241322376765e-02, + 1.520761911689822062e-02, + 1.522327008355872126e-02, + 1.523889528951571405e-02, + 1.525449471112227603e-02, + 1.527006832477552541e-02, + 1.528561610691555293e-02, + 1.530113803402622860e-02, + 1.531663408263450252e-02, + 1.533210422931126880e-02, + 1.534754845067067691e-02, + 1.536296672337045602e-02, + 1.537835902411203992e-02, + 1.539372532964067286e-02, + 1.540906561674490992e-02, + 1.542437986225743234e-02, + 1.543966804305426169e-02, + 1.545493013605573306e-02, + 1.547016611822552533e-02, + 1.548537596657125794e-02, + 1.550055965814482045e-02, + 1.551571717004151564e-02, + 1.553084847940102917e-02, + 1.554595356340679295e-02, + 1.556103239928634252e-02, + 1.557608496431119732e-02, + 1.559111123579725970e-02, + 1.560611119110418520e-02, + 1.562108480763609204e-02, + 1.563603206284106331e-02, + 1.565095293421167599e-02, + 1.566584739928457426e-02, + 1.568071543564076437e-02, + 1.569555702090546026e-02, + 1.571037213274860400e-02, + 1.572516074888413024e-02, + 1.573992284707058376e-02, + 1.575465840511120971e-02, + 1.576936740085312094e-02, + 1.578404981218869962e-02, + 1.579870561705432747e-02, + 1.581333479343139184e-02, + 1.582793731934557108e-02, + 1.584251317286756999e-02, + 1.585706233211238436e-02, + 1.587158477524006073e-02, + 1.588608048045515517e-02, + 1.590054942600738208e-02, + 1.591499159019079193e-02, + 1.592940695134475310e-02, + 1.594379548785318165e-02, + 1.595815717814521445e-02, + 1.597249200069470604e-02, + 1.598679993402059296e-02, + 1.600108095668671682e-02, + 1.601533504730213650e-02, + 1.602956218452106230e-02, + 1.604376234704255055e-02, + 1.605793551361096166e-02, + 1.607208166301568250e-02, + 1.608620077409164337e-02, + 1.610029282571857553e-02, + 1.611435779682195493e-02, + 1.612839566637208621e-02, + 1.614240641338500482e-02, + 1.615639001692184204e-02, + 1.617034645608923446e-02, + 1.618427571003913309e-02, + 1.619817775796923362e-02, + 1.621205257912226860e-02, + 1.622590015278697895e-02, + 1.623972045829735061e-02, + 1.625351347503286442e-02, + 1.626727918241896789e-02, + 1.628101755992638136e-02, + 1.629472858707180921e-02, + 1.630841224341729803e-02, + 1.632206850857102765e-02, + 1.633569736218663457e-02, + 1.634929878396364569e-02, + 1.636287275364730481e-02, + 1.637641925102904447e-02, + 1.638993825594567411e-02, + 1.640342974828041048e-02, + 1.641689370796196867e-02, + 1.643033011496547457e-02, + 1.644373894931156280e-02, + 1.645712019106727528e-02, + 1.647047382034555474e-02, + 1.648379981730547020e-02, + 1.649709816215211289e-02, + 1.651036883513693626e-02, + 1.652361181655729802e-02, + 1.653682708675687646e-02, + 1.655001462612566351e-02, + 1.656317441509969762e-02, + 1.657630643416160149e-02, + 1.658941066383998880e-02, + 1.660248708471009915e-02, + 1.661553567739338516e-02, + 1.662855642255775881e-02, + 1.664154930091736248e-02, + 1.665451429323317259e-02, + 1.666745138031231963e-02, + 1.668036054300870222e-02, + 1.669324176222254652e-02, + 1.670609501890074275e-02, + 1.671892029403672722e-02, + 1.673171756867062807e-02, + 1.674448682388935197e-02, + 1.675722804082604642e-02, + 1.676994120066115784e-02, + 1.678262628462138042e-02, + 1.679528327398038812e-02, + 1.680791215005853628e-02, + 1.682051289422325721e-02, + 1.683308548788844602e-02, + 1.684562991251517539e-02, + 1.685814614961124447e-02, + 1.687063418073157101e-02, + 1.688309398747762577e-02, + 1.689552555149833810e-02, + 1.690792885448928057e-02, + 1.692030387819333515e-02, + 1.693265060440021091e-02, + 1.694496901494681879e-02, + 1.695725909171720558e-02, + 1.696952081664233544e-02, + 1.698175417170069007e-02, + 1.699395913891764420e-02, + 1.700613570036599298e-02, + 1.701828383816553214e-02, + 1.703040353448365130e-02, + 1.704249477153470596e-02, + 1.705455753158058654e-02, + 1.706659179693031936e-02, + 1.707859754994063561e-02, + 1.709057477301526365e-02, + 1.710252344860572690e-02, + 1.711444355921068472e-02, + 1.712633508737647012e-02, + 1.713819801569672202e-02, + 1.715003232681283282e-02, + 1.716183800341353899e-02, + 1.717361502823527147e-02, + 1.718536338406206551e-02, + 1.719708305372550511e-02, + 1.720877402010478202e-02, + 1.722043626612682066e-02, + 1.723206977476632318e-02, + 1.724367452904550235e-02, + 1.725525051203453258e-02, + 1.726679770685118909e-02, + 1.727831609666117749e-02, + 1.728980566467783891e-02, + 1.730126639416254553e-02, + 1.731269826842437784e-02, + 1.732410127082050291e-02, + 1.733547538475570596e-02, + 1.734682059368301485e-02, + 1.735813688110320399e-02, + 1.736942423056510656e-02, + 1.738068262566550351e-02, + 1.739191205004926577e-02, + 1.740311248740937858e-02, + 1.741428392148678533e-02, + 1.742542633607057495e-02, + 1.743653971499796451e-02, + 1.744762404215428539e-02, + 1.745867930147299366e-02, + 1.746970547693590253e-02, + 1.748070255257282504e-02, + 1.749167051246209442e-02, + 1.750260934072998126e-02, + 1.751351902155124859e-02, + 1.752439953914878071e-02, + 1.753525087779408964e-02, + 1.754607302180664907e-02, + 1.755686595555469923e-02, + 1.756762966345448360e-02, + 1.757836412997102957e-02, + 1.758906933961759331e-02, + 1.759974527695580895e-02, + 1.761039192659601474e-02, + 1.762100927319684360e-02, + 1.763159730146568113e-02, + 1.764215599615825622e-02, + 1.765268534207894632e-02, + 1.766318532408057626e-02, + 1.767365592706494903e-02, + 1.768409713598204439e-02, + 1.769450893583085146e-02, + 1.770489131165878249e-02, + 1.771524424856214808e-02, + 1.772556773168584496e-02, + 1.773586174622352601e-02, + 1.774612627741754128e-02, + 1.775636131055917388e-02, + 1.776656683098847694e-02, + 1.777674282409406198e-02, + 1.778688927531383440e-02, + 1.779700617013417127e-02, + 1.780709349409043823e-02, + 1.781715123276695484e-02, + 1.782717937179695636e-02, + 1.783717789686256952e-02, + 1.784714679369494780e-02, + 1.785708604807413266e-02, + 1.786699564582927904e-02, + 1.787687557283838130e-02, + 1.788672581502870340e-02, + 1.789654635837637300e-02, + 1.790633718890677004e-02, + 1.791609829269419710e-02, + 1.792582965586218824e-02, + 1.793553126458341529e-02, + 1.794520310507953173e-02, + 1.795484516362169658e-02, + 1.796445742652992561e-02, + 1.797403988017364646e-02, + 1.798359251097152514e-02, + 1.799311530539131690e-02, + 1.800260824995011597e-02, + 1.801207133121441456e-02, + 1.802150453579989819e-02, + 1.803090785037162955e-02, + 1.804028126164393050e-02, + 1.804962475638063196e-02, + 1.805893832139479627e-02, + 1.806822194354893926e-02, + 1.807747560975499906e-02, + 1.808669930697436035e-02, + 1.809589302221777801e-02, + 1.810505674254556455e-02, + 1.811419045506764899e-02, + 1.812329414694305654e-02, + 1.813236780538072385e-02, + 1.814141141763893003e-02, + 1.815042497102567487e-02, + 1.815940845289826591e-02, + 1.816836185066391524e-02, + 1.817728515177918780e-02, + 1.818617834375044554e-02, + 1.819504141413348652e-02, + 1.820387435053405500e-02, + 1.821267714060730361e-02, + 1.822144977205832767e-02, + 1.823019223264162395e-02, + 1.823890451016176029e-02, + 1.824758659247276149e-02, + 1.825623846747855342e-02, + 1.826486012313278604e-02, + 1.827345154743888894e-02, + 1.828201272845026565e-02, + 1.829054365426992235e-02, + 1.829904431305078710e-02, + 1.830751469299563006e-02, + 1.831595478235711547e-02, + 1.832436456943782599e-02, + 1.833274404259017942e-02, + 1.834109319021653625e-02, + 1.834941200076924822e-02, + 1.835770046275055425e-02, + 1.836595856471256311e-02, + 1.837418629525757255e-02, + 1.838238364303773978e-02, + 1.839055059675521672e-02, + 1.839868714516233045e-02, + 1.840679327706131949e-02, + 1.841486898130436853e-02, + 1.842291424679404210e-02, + 1.843092906248265661e-02, + 1.843891341737290482e-02, + 1.844686730051741178e-02, + 1.845479070101898461e-02, + 1.846268360803061948e-02, + 1.847054601075538705e-02, + 1.847837789844653661e-02, + 1.848617926040759668e-02, + 1.849395008599217377e-02, + 1.850169036460417790e-02, + 1.850940008569765260e-02, + 1.851707923877709758e-02, + 1.852472781339696908e-02, + 1.853234579916216915e-02, + 1.853993318572779575e-02, + 1.854748996279937528e-02, + 1.855501612013260582e-02, + 1.856251164753356872e-02, + 1.856997653485869745e-02, + 1.857741077201461449e-02, + 1.858481434895862747e-02, + 1.859218725569802833e-02, + 1.859952948229083233e-02, + 1.860684101884525418e-02, + 1.861412185551998208e-02, + 1.862137198252411183e-02, + 1.862859139011723703e-02, + 1.863578006860927908e-02, + 1.864293800836074044e-02, + 1.865006519978253466e-02, + 1.865716163333610428e-02, + 1.866422729953333415e-02, + 1.867126218893669365e-02, + 1.867826629215902853e-02, + 1.868523959986393909e-02, + 1.869218210276540545e-02, + 1.869909379162805127e-02, + 1.870597465726699452e-02, + 1.871282469054798281e-02, + 1.871964388238742463e-02, + 1.872643222375207361e-02, + 1.873318970565967037e-02, + 1.873991631917824516e-02, + 1.874661205542676665e-02, + 1.875327690557451396e-02, + 1.875991086084180179e-02, + 1.876651391249927955e-02, + 1.877308605186854204e-02, + 1.877962727032168530e-02, + 1.878613755928158074e-02, + 1.879261691022182310e-02, + 1.879906531466675121e-02, + 1.880548276419139603e-02, + 1.881186925042148753e-02, + 1.881822476503366287e-02, + 1.882454929975515764e-02, + 1.883084284636408687e-02, + 1.883710539668936521e-02, + 1.884333694261058900e-02, + 1.884953747605823057e-02, + 1.885570698901363820e-02, + 1.886184547350878288e-02, + 1.886795292162678911e-02, + 1.887402932550126880e-02, + 1.888007467731700126e-02, + 1.888608896930942319e-02, + 1.889207219376492705e-02, + 1.889802434302068415e-02, + 1.890394540946492563e-02, + 1.890983538553663371e-02, + 1.891569426372575330e-02, + 1.892152203657324755e-02, + 1.892731869667084454e-02, + 1.893308423666120038e-02, + 1.893881864923800326e-02, + 1.894452192714599081e-02, + 1.895019406318051991e-02, + 1.895583505018830911e-02, + 1.896144488106680723e-02, + 1.896702354876457844e-02, + 1.897257104628097615e-02, + 1.897808736666661486e-02, + 1.898357250302289828e-02, + 1.898902644850250857e-02, + 1.899444919630873668e-02, + 1.899984073969635326e-02, + 1.900520107197088693e-02, + 1.901053018648904760e-02, + 1.901582807665844893e-02, + 1.902109473593786501e-02, + 1.902633015783726164e-02, + 1.903153433591742161e-02, + 1.903670726379036449e-02, + 1.904184893511918358e-02, + 1.904695934361813267e-02, + 1.905203848305232414e-02, + 1.905708634723831535e-02, + 1.906210293004348411e-02, + 1.906708822538660461e-02, + 1.907204222723733397e-02, + 1.907696492961656956e-02, + 1.908185632659635880e-02, + 1.908671641229991653e-02, + 1.909154518090155905e-02, + 1.909634262662682561e-02, + 1.910110874375231527e-02, + 1.910584352660596799e-02, + 1.911054696956672808e-02, + 1.911521906706477314e-02, + 1.911985981358163209e-02, + 1.912446920364974448e-02, + 1.912904723185299485e-02, + 1.913359389282636921e-02, + 1.913810918125602445e-02, + 1.914259309187942362e-02, + 1.914704561948524231e-02, + 1.915146675891324715e-02, + 1.915585650505469487e-02, + 1.916021485285179793e-02, + 1.916454179729825888e-02, + 1.916883733343881929e-02, + 1.917310145636963101e-02, + 1.917733416123794735e-02, + 1.918153544324245272e-02, + 1.918570529763297464e-02, + 1.918984371971068845e-02, + 1.919395070482791607e-02, + 1.919802624838842786e-02, + 1.920207034584716158e-02, + 1.920608299271034033e-02, + 1.921006418453552814e-02, + 1.921401391693161598e-02, + 1.921793218555865879e-02, + 1.922181898612811135e-02, + 1.922567431440273117e-02, + 1.922949816619651600e-02, + 1.923329053737488428e-02, + 1.923705142385448083e-02, + 1.924078082160330175e-02, + 1.924447872664066320e-02, + 1.924814513503718058e-02, + 1.925178004291481365e-02, + 1.925538344644686303e-02, + 1.925895534185800145e-02, + 1.926249572542412108e-02, + 1.926600459347254171e-02, + 1.926948194238195175e-02, + 1.927292776858223478e-02, + 1.927634206855480606e-02, + 1.927972483883227603e-02, + 1.928307607599874518e-02, + 1.928639577668955774e-02, + 1.928968393759144043e-02, + 1.929294055544248168e-02, + 1.929616562703216284e-02, + 1.929935914920129919e-02, + 1.930252111884200178e-02, + 1.930565153289788213e-02, + 1.930875038836374347e-02, + 1.931181768228593804e-02, + 1.931485341176211387e-02, + 1.931785757394121825e-02, + 1.932083016602366768e-02, + 1.932377118526118140e-02, + 1.932668062895691666e-02, + 1.932955849446532648e-02, + 1.933240477919238171e-02, + 1.933521948059517201e-02, + 1.933800259618244019e-02, + 1.934075412351417278e-02, + 1.934347406020171106e-02, + 1.934616240390784128e-02, + 1.934881915234669403e-02, + 1.935144430328373036e-02, + 1.935403785453598813e-02, + 1.935659980397159974e-02, + 1.935913014951031949e-02, + 1.936162888912308644e-02, + 1.936409602083233317e-02, + 1.936653154271194763e-02, + 1.936893545288700252e-02, + 1.937130774953410919e-02, + 1.937364843088114352e-02, + 1.937595749520749921e-02, + 1.937823494084369921e-02, + 1.938048076617202714e-02, + 1.938269496962570851e-02, + 1.938487754968969828e-02, + 1.938702850490012577e-02, + 1.938914783384455484e-02, + 1.939123553516191797e-02, + 1.939329160754253364e-02, + 1.939531604972802650e-02, + 1.939730886051148698e-02, + 1.939927003873732556e-02, + 1.940119958330127972e-02, + 1.940309749315052845e-02, + 1.940496376728347711e-02, + 1.940679840475014947e-02, + 1.940860140465163960e-02, + 1.941037276614055590e-02, + 1.941211248842083376e-02, + 1.941382057074777373e-02, + 1.941549701242792358e-02, + 1.941714181281939053e-02, + 1.941875497133138326e-02, + 1.942033648742463176e-02, + 1.942188636061115484e-02, + 1.942340459045432260e-02, + 1.942489117656876624e-02, + 1.942634611862051330e-02, + 1.942776941632698429e-02, + 1.942916106945680524e-02, + 1.943052107782991880e-02, + 1.943184944131771258e-02, + 1.943314615984286647e-02, + 1.943441123337922780e-02, + 1.943564466195217555e-02, + 1.943684644563824573e-02, + 1.943801658456529094e-02, + 1.943915507891250810e-02, + 1.944026192891037258e-02, + 1.944133713484067633e-02, + 1.944238069703648625e-02, + 1.944339261588208870e-02, + 1.944437289181322540e-02, + 1.944532152531669097e-02, + 1.944623851693074931e-02, + 1.944712386724482128e-02, + 1.944797757689960618e-02, + 1.944879964658712684e-02, + 1.944959007705054921e-02, + 1.945034886908447030e-02, + 1.945107602353452619e-02, + 1.945177154129773198e-02, + 1.945243542332229097e-02, + 1.945306767060769881e-02, + 1.945366828420454566e-02, + 1.945423726521475563e-02, + 1.945477461479152084e-02, + 1.945528033413907593e-02, + 1.945575442451296863e-02, + 1.945619688721997656e-02, + 1.945660772361802390e-02, + 1.945698693511620225e-02, + 1.945733452317481571e-02, + 1.945765048930541904e-02, + 1.945793483507064422e-02, + 1.945818756208432879e-02, + 1.945840867201138399e-02, + 1.945859816656803770e-02, + 1.945875604752158455e-02, + 1.945888231669040333e-02, + 1.945897697594416512e-02, + 1.945904002720349329e-02, + 1.945907147244027233e-02, + 1.945907131367740142e-02, + 1.945903955298896801e-02, + 1.945897619250013671e-02, + 1.945888123438718753e-02, + 1.945875468087745336e-02, + 1.945859653424939287e-02, + 1.945840679683244825e-02, + 1.945818547100726728e-02, + 1.945793255920553327e-02, + 1.945764806390984369e-02, + 1.945733198765399810e-02, + 1.945698433302276570e-02, + 1.945660510265202064e-02, + 1.945619429922855470e-02, + 1.945575192549028887e-02, + 1.945527798422599583e-02, + 1.945477247827565731e-02, + 1.945423541053009284e-02, + 1.945366678393110199e-02, + 1.945306660147165870e-02, + 1.945243486619538734e-02, + 1.945177158119721153e-02, + 1.945107674962270189e-02, + 1.945035037466871786e-02, + 1.944959245958260974e-02, + 1.944880300766314157e-02, + 1.944798202225955092e-02, + 1.944712950677231558e-02, + 1.944624546465266446e-02, + 1.944532989940268852e-02, + 1.944438281457552820e-02, + 1.944340421377496395e-02, + 1.944239410065586038e-02, + 1.944135247892377072e-02, + 1.944027935233521437e-02, + 1.943917472469746180e-02, + 1.943803859986870455e-02, + 1.943687098175782627e-02, + 1.943567187432462470e-02, + 1.943444128157965911e-02, + 1.943317920758426062e-02, + 1.943188565645056001e-02, + 1.943056063234148076e-02, + 1.942920413947065925e-02, + 1.942781618210250374e-02, + 1.942639676455213196e-02, + 1.942494589118547166e-02, + 1.942346356641899002e-02, + 1.942194979472014818e-02, + 1.942040458060676281e-02, + 1.941882792864765145e-02, + 1.941721984346211557e-02, + 1.941558032972011752e-02, + 1.941390939214246089e-02, + 1.941220703550031873e-02, + 1.941047326461572270e-02, + 1.940870808436116410e-02, + 1.940691149965995121e-02, + 1.940508351548565769e-02, + 1.940322413686284414e-02, + 1.940133336886627063e-02, + 1.939941121662159748e-02, + 1.939745768530473993e-02, + 1.939547278014237819e-02, + 1.939345650641158270e-02, + 1.939140886944000150e-02, + 1.938932987460577004e-02, + 1.938721952733751808e-02, + 1.938507783311440788e-02, + 1.938290479746595379e-02, + 1.938070042597223042e-02, + 1.937846472426368524e-02, + 1.937619769802130174e-02, + 1.937389935297635646e-02, + 1.937156969491062378e-02, + 1.936920872965619544e-02, + 1.936681646309560897e-02, + 1.936439290116170886e-02, + 1.936193804983782005e-02, + 1.935945191515744956e-02, + 1.935693450320453285e-02, + 1.935438582011331232e-02, + 1.935180587206823330e-02, + 1.934919466530423543e-02, + 1.934655220610629126e-02, + 1.934387850080985724e-02, + 1.934117355580052336e-02, + 1.933843737751405473e-02, + 1.933566997243658936e-02, + 1.933287134710436408e-02, + 1.933004150810382904e-02, + 1.932718046207170318e-02, + 1.932428821569471405e-02, + 1.932136477570991356e-02, + 1.931841014890429975e-02, + 1.931542434211514989e-02, + 1.931240736222979149e-02, + 1.930935921618565781e-02, + 1.930627991097027402e-02, + 1.930316945362123629e-02, + 1.930002785122606618e-02, + 1.929685511092250200e-02, + 1.929365123989821088e-02, + 1.929041624539092406e-02, + 1.928715013468828079e-02, + 1.928385291512795668e-02, + 1.928052459409752492e-02, + 1.927716517903461935e-02, + 1.927377467742670547e-02, + 1.927035309681117761e-02, + 1.926690044477537278e-02, + 1.926341672895646312e-02, + 1.925990195704154959e-02, + 1.925635613676750582e-02, + 1.925277927592113428e-02, + 1.924917138233894764e-02, + 1.924553246390739783e-02, + 1.924186252856262616e-02, + 1.923816158429056400e-02, + 1.923442963912696396e-02, + 1.923066670115718829e-02, + 1.922687277851641355e-02, + 1.922304787938954734e-02, + 1.921919201201120059e-02, + 1.921530518466552442e-02, + 1.921138740568648431e-02, + 1.920743868345758595e-02, + 1.920345902641201405e-02, + 1.919944844303248660e-02, + 1.919540694185147001e-02, + 1.919133453145078702e-02, + 1.918723122046204696e-02, + 1.918309701756619814e-02, + 1.917893193149383668e-02, + 1.917473597102494626e-02, + 1.917050914498922079e-02, + 1.916625146226559606e-02, + 1.916196293178246482e-02, + 1.915764356251788841e-02, + 1.915329336349905556e-02, + 1.914891234380276808e-02, + 1.914450051255506269e-02, + 1.914005787893141575e-02, + 1.913558445215667383e-02, + 1.913108024150496009e-02, + 1.912654525629974706e-02, + 1.912197950591371792e-02, + 1.911738299976882896e-02, + 1.911275574733644830e-02, + 1.910809775813700206e-02, + 1.910340904174017210e-02, + 1.909868960776490640e-02, + 1.909393946587933585e-02, + 1.908915862580066319e-02, + 1.908434709729521159e-02, + 1.907950489017855647e-02, + 1.907463201431527575e-02, + 1.906972847961910592e-02, + 1.906479429605274778e-02, + 1.905982947362800523e-02, + 1.905483402240574706e-02, + 1.904980795249578210e-02, + 1.904475127405684878e-02, + 1.903966399729684414e-02, + 1.903454613247242827e-02, + 1.902939768988935396e-02, + 1.902421867990207807e-02, + 1.901900911291411894e-02, + 1.901376899937772674e-02, + 1.900849834979413330e-02, + 1.900319717471325720e-02, + 1.899786548473399173e-02, + 1.899250329050390651e-02, + 1.898711060271925447e-02, + 1.898168743212526322e-02, + 1.897623378951564244e-02, + 1.897074968573294121e-02, + 1.896523513166838842e-02, + 1.895969013826188238e-02, + 1.895411471650188667e-02, + 1.894850887742558984e-02, + 1.894287263211860001e-02, + 1.893720599171538552e-02, + 1.893150896739866432e-02, + 1.892578157039996253e-02, + 1.892002381199909405e-02, + 1.891423570352456299e-02, + 1.890841725635318202e-02, + 1.890256848191030833e-02, + 1.889668939166966322e-02, + 1.889077999715348816e-02, + 1.888484030993228466e-02, + 1.887887034162498770e-02, + 1.887287010389880962e-02, + 1.886683960846928867e-02, + 1.886077886710045559e-02, + 1.885468789160429925e-02, + 1.884856669384123162e-02, + 1.884241528571995242e-02, + 1.883623367919727912e-02, + 1.883002188627816431e-02, + 1.882377991901583100e-02, + 1.881750778951156791e-02, + 1.881120550991485438e-02, + 1.880487309242317301e-02, + 1.879851054928221785e-02, + 1.879211789278551620e-02, + 1.878569513527483109e-02, + 1.877924228913982474e-02, + 1.877275936681809324e-02, + 1.876624638079520471e-02, + 1.875970334360484854e-02, + 1.875313026782840162e-02, + 1.874652716609520597e-02, + 1.873989405108247505e-02, + 1.873323093551515148e-02, + 1.872653783216623319e-02, + 1.871981475385617322e-02, + 1.871306171345359093e-02, + 1.870627872387444282e-02, + 1.869946579808272336e-02, + 1.869262294908992372e-02, + 1.868575018995538919e-02, + 1.867884753378578483e-02, + 1.867191499373576161e-02, + 1.866495258300743254e-02, + 1.865796031485038309e-02, + 1.865093820256185850e-02, + 1.864388625948659728e-02, + 1.863680449901684855e-02, + 1.862969293459235121e-02, + 1.862255157970016048e-02, + 1.861538044787490465e-02, + 1.860817955269870524e-02, + 1.860094890780076074e-02, + 1.859368852685786000e-02, + 1.858639842359394515e-02, + 1.857907861178042033e-02, + 1.857172910523582215e-02, + 1.856434991782611454e-02, + 1.855694106346427938e-02, + 1.854950255611060791e-02, + 1.854203440977249609e-02, + 1.853453663850457636e-02, + 1.852700925640854424e-02, + 1.851945227763317561e-02, + 1.851186571637431638e-02, + 1.850424958687492752e-02, + 1.849660390342489080e-02, + 1.848892868036107126e-02, + 1.848122393206741085e-02, + 1.847348967297461272e-02, + 1.846572591756052636e-02, + 1.845793268034960632e-02, + 1.845010997591347429e-02, + 1.844225781887019397e-02, + 1.843437622388508293e-02, + 1.842646520566981402e-02, + 1.841852477898305376e-02, + 1.841055495863015354e-02, + 1.840255575946322594e-02, + 1.839452719638083600e-02, + 1.838646928432828911e-02, + 1.837838203829772130e-02, + 1.837026547332750587e-02, + 1.836211960450277736e-02, + 1.835394444695518865e-02, + 1.834574001586289360e-02, + 1.833750632645043954e-02, + 1.832924339398894764e-02, + 1.832095123379586660e-02, + 1.831262986123500039e-02, + 1.830427929171669563e-02, + 1.829589954069749808e-02, + 1.828749062368024980e-02, + 1.827905255621420366e-02, + 1.827058535389460350e-02, + 1.826208903236330172e-02, + 1.825356360730795088e-02, + 1.824500909446263169e-02, + 1.823642550960756850e-02, + 1.822781286856888991e-02, + 1.821917118721903817e-02, + 1.821050048147627304e-02, + 1.820180076730516447e-02, + 1.819307206071593339e-02, + 1.818431437776518375e-02, + 1.817552773455504214e-02, + 1.816671214723390715e-02, + 1.815786763199568610e-02, + 1.814899420508049588e-02, + 1.814009188277398640e-02, + 1.813116068140777082e-02, + 1.812220061735922427e-02, + 1.811321170705141453e-02, + 1.810419396695302566e-02, + 1.809514741357853840e-02, + 1.808607206348807062e-02, + 1.807696793328716911e-02, + 1.806783503962729881e-02, + 1.805867339920515235e-02, + 1.804948302876325031e-02, + 1.804026394508926115e-02, + 1.803101616501662924e-02, + 1.802173970542402665e-02, + 1.801243458323560295e-02, + 1.800310081542092974e-02, + 1.799373841899492080e-02, + 1.798434741101763087e-02, + 1.797492780859464082e-02, + 1.796547962887655794e-02, + 1.795600288905938730e-02, + 1.794649760638417774e-02, + 1.793696379813725442e-02, + 1.792740148165004183e-02, + 1.791781067429905686e-02, + 1.790819139350584635e-02, + 1.789854365673690037e-02, + 1.788886748150394709e-02, + 1.787916288536353648e-02, + 1.786942988591724499e-02, + 1.785966850081136328e-02, + 1.784987874773734731e-02, + 1.784006064443120071e-02, + 1.783021420867399176e-02, + 1.782033945829133992e-02, + 1.781043641115385989e-02, + 1.780050508517670368e-02, + 1.779054549831985896e-02, + 1.778055766858775005e-02, + 1.777054161402968555e-02, + 1.776049735273930313e-02, + 1.775042490285503108e-02, + 1.774032428255961982e-02, + 1.773019551008050976e-02, + 1.772003860368950856e-02, + 1.770985358170274263e-02, + 1.769964046248096237e-02, + 1.768939926442907734e-02, + 1.767913000599640946e-02, + 1.766883270567664102e-02, + 1.765850738200774178e-02, + 1.764815405357161512e-02, + 1.763777273899475029e-02, + 1.762736345694757012e-02, + 1.761692622614469128e-02, + 1.760646106534487221e-02, + 1.759596799335079106e-02, + 1.758544702900937881e-02, + 1.757489819121144797e-02, + 1.756432149889172734e-02, + 1.755371697102899725e-02, + 1.754308462664581209e-02, + 1.753242448480866675e-02, + 1.752173656462790302e-02, + 1.751102088525759506e-02, + 1.750027746589569513e-02, + 1.748950632578368664e-02, + 1.747870748420706291e-02, + 1.746788096049457090e-02, + 1.745702677401886685e-02, + 1.744614494419623185e-02, + 1.743523549048638793e-02, + 1.742429843239251194e-02, + 1.741333378946146454e-02, + 1.740234158128342937e-02, + 1.739132182749199285e-02, + 1.738027454776423786e-02, + 1.736919976182057720e-02, + 1.735809748942468769e-02, + 1.734696775038348238e-02, + 1.733581056454725627e-02, + 1.732462595180937759e-02, + 1.731341393210650975e-02, + 1.730217452541840673e-02, + 1.729090775176799974e-02, + 1.727961363122111280e-02, + 1.726829218388684431e-02, + 1.725694342991705016e-02, + 1.724556738950679818e-02, + 1.723416408289378185e-02, + 1.722273353035889618e-02, + 1.721127575222576936e-02, + 1.719979076886091890e-02, + 1.718827860067341159e-02, + 1.717673926811541171e-02, + 1.716517279168147669e-02, + 1.715357919190909491e-02, + 1.714195848937831099e-02, + 1.713031070471165290e-02, + 1.711863585857450326e-02, + 1.710693397167442273e-02, + 1.709520506476174331e-02, + 1.708344915862920060e-02, + 1.707166627411188520e-02, + 1.705985643208734678e-02, + 1.704801965347547618e-02, + 1.703615595923841167e-02, + 1.702426537038072979e-02, + 1.701234790794904639e-02, + 1.700040359303228374e-02, + 1.698843244676160810e-02, + 1.697643449031031523e-02, + 1.696440974489350079e-02, + 1.695235823176877848e-02, + 1.694027997223539195e-02, + 1.692817498763473857e-02, + 1.691604329935017526e-02, + 1.690388492880699409e-02, + 1.689169989747228706e-02, + 1.687948822685493566e-02, + 1.686724993850577739e-02, + 1.685498505401720679e-02, + 1.684269359502358829e-02, + 1.683037558320063173e-02, + 1.681803104026604462e-02, + 1.680565998797895269e-02, + 1.679326244814007343e-02, + 1.678083844259168483e-02, + 1.676838799321757681e-02, + 1.675591112194279794e-02, + 1.674340785073416202e-02, + 1.673087820159964087e-02, + 1.671832219658847540e-02, + 1.670573985779151213e-02, + 1.669313120734043296e-02, + 1.668049626740856356e-02, + 1.666783506021011010e-02, + 1.665514760800059987e-02, + 1.664243393307661412e-02, + 1.662969405777586090e-02, + 1.661692800447691146e-02, + 1.660413579559957831e-02, + 1.659131745360433938e-02, + 1.657847300099284452e-02, + 1.656560246030751998e-02, + 1.655270585413168294e-02, + 1.653978320508921532e-02, + 1.652683453584508771e-02, + 1.651385986910474876e-02, + 1.650085922761450330e-02, + 1.648783263416106135e-02, + 1.647478011157196831e-02, + 1.646170168271526499e-02, + 1.644859737049943899e-02, + 1.643546719787356697e-02, + 1.642231118782693303e-02, + 1.640912936338961847e-02, + 1.639592174763157550e-02, + 1.638268836366367151e-02, + 1.636942923463647129e-02, + 1.635614438374120155e-02, + 1.634283383420898420e-02, + 1.632949760931136710e-02, + 1.631613573235979331e-02, + 1.630274822670590290e-02, + 1.628933511574141846e-02, + 1.627589642289803407e-02, + 1.626243217164734245e-02, + 1.624894238550074824e-02, + 1.623542708800987389e-02, + 1.622188630276579641e-02, + 1.620832005339964063e-02, + 1.619472836358221493e-02, + 1.618111125702412917e-02, + 1.616746875747538878e-02, + 1.615380088872602274e-02, + 1.614010767460525436e-02, + 1.612638913898208071e-02, + 1.611264530576510257e-02, + 1.609887619890220875e-02, + 1.608508184238066629e-02, + 1.607126226022738066e-02, + 1.605741747650825044e-02, + 1.604354751532887507e-02, + 1.602965240083377430e-02, + 1.601573215720678706e-02, + 1.600178680867111666e-02, + 1.598781637948879647e-02, + 1.597382089396124152e-02, + 1.595980037642860325e-02, + 1.594575485127035924e-02, + 1.593168434290462634e-02, + 1.591758887578888573e-02, + 1.590346847441907047e-02, + 1.588932316333024550e-02, + 1.587515296709599705e-02, + 1.586095791032899466e-02, + 1.584673801768030424e-02, + 1.583249331383986339e-02, + 1.581822382353621770e-02, + 1.580392957153652772e-02, + 1.578961058264626710e-02, + 1.577526688170974301e-02, + 1.576089849360948203e-02, + 1.574650544326644877e-02, + 1.573208775564005277e-02, + 1.571764545572804095e-02, + 1.570317856856645947e-02, + 1.568868711922946982e-02, + 1.567417113282961599e-02, + 1.565963063451736997e-02, + 1.564506564948146133e-02, + 1.563047620294878010e-02, + 1.561586232018415468e-02, + 1.560122402649021835e-02, + 1.558656134720787755e-02, + 1.557187430771556774e-02, + 1.555716293343000975e-02, + 1.554242724980531981e-02, + 1.552766728233358901e-02, + 1.551288305654460568e-02, + 1.549807459800595262e-02, + 1.548324193232262190e-02, + 1.546838508513723003e-02, + 1.545350408213014455e-02, + 1.543859894901882315e-02, + 1.542366971155886834e-02, + 1.540871639554258592e-02, + 1.539373902680012118e-02, + 1.537873763119861591e-02, + 1.536371223464282759e-02, + 1.534866286307434366e-02, + 1.533358954247233258e-02, + 1.531849229885290375e-02, + 1.530337115826949090e-02, + 1.528822614681210092e-02, + 1.527305729060831826e-02, + 1.525786461582229366e-02, + 1.524264814865541363e-02, + 1.522740791534557027e-02, + 1.521214394216786198e-02, + 1.519685625543399851e-02, + 1.518154488149241373e-02, + 1.516620984672837659e-02, + 1.515085117756354363e-02, + 1.513546890045645507e-02, + 1.512006304190212369e-02, + 1.510463362843215279e-02, + 1.508918068661434242e-02, + 1.507370424305331733e-02, + 1.505820432438969431e-02, + 1.504268095730080385e-02, + 1.502713416849991816e-02, + 1.501156398473674214e-02, + 1.499597043279719995e-02, + 1.498035353950344026e-02, + 1.496471333171341817e-02, + 1.494904983632145204e-02, + 1.493336308025764586e-02, + 1.491765309048831943e-02, + 1.490191989401558857e-02, + 1.488616351787732696e-02, + 1.487038398914751307e-02, + 1.485458133493561261e-02, + 1.483875558238714927e-02, + 1.482290675868303334e-02, + 1.480703489103998328e-02, + 1.479114000671032103e-02, + 1.477522213298200320e-02, + 1.475928129717821516e-02, + 1.474331752665796087e-02, + 1.472733084881526489e-02, + 1.471132129107997032e-02, + 1.469528888091667720e-02, + 1.467923364582598630e-02, + 1.466315561334311825e-02, + 1.464705481103862651e-02, + 1.463093126651842345e-02, + 1.461478500742314189e-02, + 1.459861606142877355e-02, + 1.458242445624619021e-02, + 1.456621021962124611e-02, + 1.454997337933451942e-02, + 1.453371396320171823e-02, + 1.451743199907303689e-02, + 1.450112751483383956e-02, + 1.448480053840364191e-02, + 1.446845109773713806e-02, + 1.445207922082340952e-02, + 1.443568493568619590e-02, + 1.441926827038350449e-02, + 1.440282925300821228e-02, + 1.438636791168722284e-02, + 1.436988427458203710e-02, + 1.435337836988859889e-02, + 1.433685022583673294e-02, + 1.432029987069098273e-02, + 1.430372733274962345e-02, + 1.428713264034545821e-02, + 1.427051582184500796e-02, + 1.425387690564911165e-02, + 1.423721592019252559e-02, + 1.422053289394401877e-02, + 1.420382785540597395e-02, + 1.418710083311498261e-02, + 1.417035185564112162e-02, + 1.415358095158842679e-02, + 1.413678814959457540e-02, + 1.411997347833097126e-02, + 1.410313696650237342e-02, + 1.408627864284746692e-02, + 1.406939853613810472e-02, + 1.405249667517966851e-02, + 1.403557308881109127e-02, + 1.401862780590459184e-02, + 1.400166085536579293e-02, + 1.398467226613330297e-02, + 1.396766206717926437e-02, + 1.395063028750869773e-02, + 1.393357695616008647e-02, + 1.391650210220454070e-02, + 1.389940575474652926e-02, + 1.388228794292337143e-02, + 1.386514869590541564e-02, + 1.384798804289558670e-02, + 1.383080601312997905e-02, + 1.381360263587714209e-02, + 1.379637794043855892e-02, + 1.377913195614842955e-02, + 1.376186471237325279e-02, + 1.374457623851249762e-02, + 1.372726656399784334e-02, + 1.370993571829365321e-02, + 1.369258373089649559e-02, + 1.367521063133550659e-02, + 1.365781644917206904e-02, + 1.364040121399994442e-02, + 1.362296495544482351e-02, + 1.360550770316491624e-02, + 1.358802948685025949e-02, + 1.357053033622312131e-02, + 1.355301028103782744e-02, + 1.353546935108070060e-02, + 1.351790757616964066e-02, + 1.350032498615496082e-02, + 1.348272161091824267e-02, + 1.346509748037325732e-02, + 1.344745262446522989e-02, + 1.342978707317124196e-02, + 1.341210085649995228e-02, + 1.339439400449137646e-02, + 1.337666654721739179e-02, + 1.335891851478100169e-02, + 1.334114993731696890e-02, + 1.332336084499098801e-02, + 1.330555126800045396e-02, + 1.328772123657390516e-02, + 1.326987078097110508e-02, + 1.325199993148279236e-02, + 1.323410871843111285e-02, + 1.321619717216893607e-02, + 1.319826532308042769e-02, + 1.318031320158060543e-02, + 1.316234083811543970e-02, + 1.314434826316163152e-02, + 1.312633550722665243e-02, + 1.310830260084900473e-02, + 1.309024957459751018e-02, + 1.307217645907189467e-02, + 1.305408328490247939e-02, + 1.303597008275008545e-02, + 1.301783688330588815e-02, + 1.299968371729174656e-02, + 1.298151061545961549e-02, + 1.296331760859203985e-02, + 1.294510472750176437e-02, + 1.292687200303182897e-02, + 1.290861946605523919e-02, + 1.289034714747545537e-02, + 1.287205507822560858e-02, + 1.285374328926934019e-02, + 1.283541181159972809e-02, + 1.281706067624019396e-02, + 1.279868991424397071e-02, + 1.278029955669383183e-02, + 1.276188963470270381e-02, + 1.274346017941276055e-02, + 1.272501122199639657e-02, + 1.270654279365493813e-02, + 1.268805492562006740e-02, + 1.266954764915221091e-02, + 1.265102099554179724e-02, + 1.263247499610822139e-02, + 1.261390968220065141e-02, + 1.259532508519707605e-02, + 1.257672123650512008e-02, + 1.255809816756136947e-02, + 1.253945590983180161e-02, + 1.252079449481106020e-02, + 1.250211395402320985e-02, + 1.248341431902104566e-02, + 1.246469562138624761e-02, + 1.244595789272963382e-02, + 1.242720116469058812e-02, + 1.240842546893753708e-02, + 1.238963083716717282e-02, + 1.237081730110531873e-02, + 1.235198489250595444e-02, + 1.233313364315196184e-02, + 1.231426358485456819e-02, + 1.229537474945359074e-02, + 1.227646716881687812e-02, + 1.225754087484105630e-02, + 1.223859589945063518e-02, + 1.221963227459870079e-02, + 1.220065003226621266e-02, + 1.218164920446240806e-02, + 1.216262982322461987e-02, + 1.214359192061825569e-02, + 1.212453552873646659e-02, + 1.210546067970031704e-02, + 1.208636740565900876e-02, + 1.206725573878907054e-02, + 1.204812571129545984e-02, + 1.202897735541012120e-02, + 1.200981070339315546e-02, + 1.199062578753179627e-02, + 1.197142264014128786e-02, + 1.195220129356385982e-02, + 1.193296178016952334e-02, + 1.191370413235552823e-02, + 1.189442838254653467e-02, + 1.187513456319418126e-02, + 1.185582270677768349e-02, + 1.183649284580300109e-02, + 1.181714501280362560e-02, + 1.179777924033964011e-02, + 1.177839556099846870e-02, + 1.175899400739441499e-02, + 1.173957461216836896e-02, + 1.172013740798848874e-02, + 1.170068242754921869e-02, + 1.168120970357202672e-02, + 1.166171926880505728e-02, + 1.164221115602300655e-02, + 1.162268539802688294e-02, + 1.160314202764459526e-02, + 1.158358107773008877e-02, + 1.156400258116403734e-02, + 1.154440657085309928e-02, + 1.152479307973053313e-02, + 1.150516214075564952e-02, + 1.148551378691401934e-02, + 1.146584805121707469e-02, + 1.144616496670270399e-02, + 1.142646456643427004e-02, + 1.140674688350156590e-02, + 1.138701195102010018e-02, + 1.136725980213103282e-02, + 1.134749047000162964e-02, + 1.132770398782450595e-02, + 1.130790038881831355e-02, + 1.128807970622700170e-02, + 1.126824197332023519e-02, + 1.124838722339317407e-02, + 1.122851548976653256e-02, + 1.120862680578603096e-02, + 1.118872120482317274e-02, + 1.116879872027434252e-02, + 1.114885938556154678e-02, + 1.112890323413141293e-02, + 1.110893029945642443e-02, + 1.108894061503349834e-02, + 1.106893421438462886e-02, + 1.104891113105713196e-02, + 1.102887139862266351e-02, + 1.100881505067815951e-02, + 1.098874212084512136e-02, + 1.096865264276994205e-02, + 1.094854665012329371e-02, + 1.092842417660095690e-02, + 1.090828525592276235e-02, + 1.088812992183350349e-02, + 1.086795820810193026e-02, + 1.084777014852157835e-02, + 1.082756577691010823e-02, + 1.080734512710963130e-02, + 1.078710823298606979e-02, + 1.076685512842999806e-02, + 1.074658584735563478e-02, + 1.072630042370156800e-02, + 1.070599889143033709e-02, + 1.068568128452810316e-02, + 1.066534763700536723e-02, + 1.064499798289596406e-02, + 1.062463235625794693e-02, + 1.060425079117261436e-02, + 1.058385332174526655e-02, + 1.056343998210463632e-02, + 1.054301080640312853e-02, + 1.052256582881632915e-02, + 1.050210508354360202e-02, + 1.048162860480728389e-02, + 1.046113642685342175e-02, + 1.044062858395076662e-02, + 1.042010511039211280e-02, + 1.039956604049246253e-02, + 1.037901140859056291e-02, + 1.035844124904781484e-02, + 1.033785559624854876e-02, + 1.031725448460026062e-02, + 1.029663794853316258e-02, + 1.027600602250036167e-02, + 1.025535874097737062e-02, + 1.023469613846284682e-02, + 1.021401824947761050e-02, + 1.019332510856542189e-02, + 1.017261675029217625e-02, + 1.015189320924649204e-02, + 1.013115452003934304e-02, + 1.011040071730405152e-02, + 1.008963183569594642e-02, + 1.006884790989297923e-02, + 1.004804897459479762e-02, + 1.002723506452354515e-02, + 1.000640621442334087e-02, + 9.985562459059996523e-03, + 9.964703833221719154e-03, + 9.943830371718033814e-03, + 9.922942109380829614e-03, + 9.902039081063249495e-03, + 9.881121321640470856e-03, + 9.860188866009216360e-03, + 9.839241749087904859e-03, + 9.818280005816065054e-03, + 9.797303671155273980e-03, + 9.776312780087904539e-03, + 9.755307367618155923e-03, + 9.734287468771326765e-03, + 9.713253118594047594e-03, + 9.692204352153854091e-03, + 9.671141204539775160e-03, + 9.650063710861469038e-03, + 9.628971906250061163e-03, + 9.607865825857153652e-03, + 9.586745504855557348e-03, + 9.565610978438925799e-03, + 9.544462281821312899e-03, + 9.523299450237967395e-03, + 9.502122518944290316e-03, + 9.480931523216749174e-03, + 9.459726498351889168e-03, + 9.438507479667089528e-03, + 9.417274502499939012e-03, + 9.396027602208638363e-03, + 9.374766814171224885e-03, + 9.353492173786477973e-03, + 9.332203716472904295e-03, + 9.310901477669471585e-03, + 9.289585492835032710e-03, + 9.268255797448658739e-03, + 9.246912427009104651e-03, + 9.225555417034951577e-03, + 9.204184803065033546e-03, + 9.182800620657420934e-03, + 9.161402905390286094e-03, + 9.139991692861325692e-03, + 9.118567018687960199e-03, + 9.097128918506742351e-03, + 9.075677427974222777e-03, + 9.054212582765839776e-03, + 9.032734418576795349e-03, + 9.011242971121430703e-03, + 8.989738276133474315e-03, + 8.968220369365455594e-03, + 8.946689286589476833e-03, + 8.925145063596267789e-03, + 8.903587736196023547e-03, + 8.882017340217387980e-03, + 8.860433911508255184e-03, + 8.838837485935306312e-03, + 8.817228099383695589e-03, + 8.795605787757699093e-03, + 8.773970586979810971e-03, + 8.752322532991522325e-03, + 8.730661661752450384e-03, + 8.708988009240964737e-03, + 8.687301611453757122e-03, + 8.665602504405966328e-03, + 8.643890724130699407e-03, + 8.622166306679760264e-03, + 8.600429288122568919e-03, + 8.578679704547139892e-03, + 8.556917592059305050e-03, + 8.535142986783065752e-03, + 8.513355924859945800e-03, + 8.491556442449890024e-03, + 8.469744575730237326e-03, + 8.447920360896083239e-03, + 8.426083834160475947e-03, + 8.404235031753954852e-03, + 8.382373989924762209e-03, + 8.360500744938291484e-03, + 8.338615333077845429e-03, + 8.316717790643669839e-03, + 8.294808153953669994e-03, + 8.272886459342956161e-03, + 8.250952743163895639e-03, + 8.229007041785701623e-03, + 8.207049391595154855e-03, + 8.185079828995545440e-03, + 8.163098390407656432e-03, + 8.141105112268691782e-03, + 8.119100031033077772e-03, + 8.097083183171878418e-03, + 8.075054605173050473e-03, + 8.053014333540917807e-03, + 8.030962404796507942e-03, + 8.008898855477664808e-03, + 7.986823722138181383e-03, + 7.964737041349085125e-03, + 7.942638849696974368e-03, + 7.920529183785329774e-03, + 7.898408080233391970e-03, + 7.876275575677080948e-03, + 7.854131706767948293e-03, + 7.831976510174013320e-03, + 7.809810022579161126e-03, + 7.787632280683304785e-03, + 7.765443321201940391e-03, + 7.743243180866829674e-03, + 7.721031896425067584e-03, + 7.698809504639875928e-03, + 7.676576042289672691e-03, + 7.654331546168807558e-03, + 7.632076053087158592e-03, + 7.609809599869695081e-03, + 7.587532223357286790e-03, + 7.565243960405657053e-03, + 7.542944847886146921e-03, + 7.520634922685243313e-03, + 7.498314221704654482e-03, + 7.475982781860866788e-03, + 7.453640640085856806e-03, + 7.431287833326124213e-03, + 7.408924398543553086e-03, + 7.386550372714392743e-03, + 7.364165792830060057e-03, + 7.341770695896562664e-03, + 7.319365118934726203e-03, + 7.296949098979598446e-03, + 7.274522673081288034e-03, + 7.252085878304008644e-03, + 7.229638751726281953e-03, + 7.207181330441728671e-03, + 7.184713651557443972e-03, + 7.162235752195360121e-03, + 7.139747669491057318e-03, + 7.117249440594827954e-03, + 7.094741102670431079e-03, + 7.072222692896077724e-03, + 7.049694248463759562e-03, + 7.027155806579454475e-03, + 7.004607404462597463e-03, + 6.982049079346900299e-03, + 6.959480868479243042e-03, + 6.936902809120629870e-03, + 6.914314938545180339e-03, + 6.891717294040848422e-03, + 6.869109912909072968e-03, + 6.846492832464297178e-03, + 6.823866090034774387e-03, + 6.801229722961535905e-03, + 6.778583768599204598e-03, + 6.755928264315403352e-03, + 6.733263247490966705e-03, + 6.710588755519378799e-03, + 6.687904825807565283e-03, + 6.665211495774855076e-03, + 6.642508802853928397e-03, + 6.619796784489744707e-03, + 6.597075478140289502e-03, + 6.574344921276170130e-03, + 6.551605151380637468e-03, + 6.528856205949110612e-03, + 6.506098122489986126e-03, + 6.483330938523551232e-03, + 6.460554691582810413e-03, + 6.437769419213090760e-03, + 6.414975158971497268e-03, + 6.392171948427858262e-03, + 6.369359825163533641e-03, + 6.346538826772488671e-03, + 6.323708990860094428e-03, + 6.300870355044060206e-03, + 6.278022956953780397e-03, + 6.255166834230612913e-03, + 6.232302024527221727e-03, + 6.209428565508411275e-03, + 6.186546494850184499e-03, + 6.163655850240503525e-03, + 6.140756669378194185e-03, + 6.117848989974407521e-03, + 6.094932849750744550e-03, + 6.072008286440757664e-03, + 6.049075337788810923e-03, + 6.026134041550486840e-03, + 6.003184435492666185e-03, + 5.980226557393232209e-03, + 5.957260445041084526e-03, + 5.934286136235749666e-03, + 5.911303668788082770e-03, + 5.888313080519217216e-03, + 5.865314409261549074e-03, + 5.842307692857632087e-03, + 5.819292969161041565e-03, + 5.796270276035720391e-03, + 5.773239651356291274e-03, + 5.750201133007370666e-03, + 5.727154758884465610e-03, + 5.704100566892886942e-03, + 5.681038594948554198e-03, + 5.657968880977577546e-03, + 5.634891462915764260e-03, + 5.611806378709551131e-03, + 5.588713666314794500e-03, + 5.565613363697816292e-03, + 5.542505508834301604e-03, + 5.519390139710101013e-03, + 5.496267294320699749e-03, + 5.473137010671398107e-03, + 5.449999326776711235e-03, + 5.426854280661233022e-03, + 5.403701910358522410e-03, + 5.380542253912112133e-03, + 5.357375349374242368e-03, + 5.334201234807365612e-03, + 5.311019948282271440e-03, + 5.287831527879606128e-03, + 5.264636011688573342e-03, + 5.241433437807978442e-03, + 5.218223844345116526e-03, + 5.195007269416587747e-03, + 5.171783751147856698e-03, + 5.148553327672828264e-03, + 5.125316037134656881e-03, + 5.102071917684660590e-03, + 5.078821007483312437e-03, + 5.055563344699121574e-03, + 5.032298967509469395e-03, + 5.009027914100065704e-03, + 4.985750222665108304e-03, + 4.962465931406693197e-03, + 4.939175078535733114e-03, + 4.915877702270765766e-03, + 4.892573840838854160e-03, + 4.869263532475000267e-03, + 4.845946815422312419e-03, + 4.822623727931587244e-03, + 4.799294308261490075e-03, + 4.775958594678898425e-03, + 4.752616625457909728e-03, + 4.729268438880681810e-03, + 4.705914073236873441e-03, + 4.682553566823852501e-03, + 4.659186957946064543e-03, + 4.635814284915921839e-03, + 4.612435586052708765e-03, + 4.589050899683371106e-03, + 4.565660264141997368e-03, + 4.542263717769998328e-03, + 4.518861298915485131e-03, + 4.495453045934173948e-03, + 4.472038997188251472e-03, + 4.448619191047352428e-03, + 4.425193665887469305e-03, + 4.401762460091798897e-03, + 4.378325612050273062e-03, + 4.354883160159107695e-03, + 4.331435142821683099e-03, + 4.307981598447411208e-03, + 4.284522565452707037e-03, + 4.261058082259917487e-03, + 4.237588187298136667e-03, + 4.214112919002640373e-03, + 4.190632315815069966e-03, + 4.167146416182873798e-03, + 4.143655258560135536e-03, + 4.120158881406466543e-03, + 4.096657323187876711e-03, + 4.073150622376169906e-03, + 4.049638817449135661e-03, + 4.026121946890008803e-03, + 4.002600049188252684e-03, + 3.979073162838661464e-03, + 3.955541326341596893e-03, + 3.932004578203285826e-03, + 3.908462956935288522e-03, + 3.884916501054733271e-03, + 3.861365249083722681e-03, + 3.837809239550183694e-03, + 3.814248510986749992e-03, + 3.790683101931661882e-03, + 3.767113050928103200e-03, + 3.743538396524460216e-03, + 3.719959177273733132e-03, + 3.696375431734337524e-03, + 3.672787198469058736e-03, + 3.649194516045993833e-03, + 3.625597423037443118e-03, + 3.601995958020821724e-03, + 3.578390159577977871e-03, + 3.554780066295450472e-03, + 3.531165716764032847e-03, + 3.507547149578915408e-03, + 3.483924403340045179e-03, + 3.460297516651145242e-03, + 3.436666528120586005e-03, + 3.413031476360775009e-03, + 3.389392399988333873e-03, + 3.365749337623570505e-03, + 3.342102327891282709e-03, + 3.318451409419680490e-03, + 3.294796620841217855e-03, + 3.271138000792016016e-03, + 3.247475587912057680e-03, + 3.223809420844613288e-03, + 3.200139538237072815e-03, + 3.176465978739842055e-03, + 3.152788781007365669e-03, + 3.129107983696946278e-03, + 3.105423625469658656e-03, + 3.081735744989854038e-03, + 3.058044380924734244e-03, + 3.034349571945197787e-03, + 3.010651356724704068e-03, + 2.986949773940166756e-03, + 2.963244862271336225e-03, + 2.939536660401018131e-03, + 2.915825207014474500e-03, + 2.892110540800277210e-03, + 2.868392700449211210e-03, + 2.844671724655244670e-03, + 2.820947652114422655e-03, + 2.797220521525731456e-03, + 2.773490371590490999e-03, + 2.749757241012577760e-03, + 2.726021168497801996e-03, + 2.702282192754824550e-03, + 2.678540352494095198e-03, + 2.654795686428128472e-03, + 2.631048233272314206e-03, + 2.607298031743136412e-03, + 2.583545120559752745e-03, + 2.559789538442667871e-03, + 2.536031324114789050e-03, + 2.512270516300250424e-03, + 2.488507153725329386e-03, + 2.464741275117819479e-03, + 2.440972919207244195e-03, + 2.417202124724269780e-03, + 2.393428930401550470e-03, + 2.369653374972624776e-03, + 2.345875497172901676e-03, + 2.322095335738551692e-03, + 2.298312929407353433e-03, + 2.274528316918239534e-03, + 2.250741537010850831e-03, + 2.226952628426372063e-03, + 2.203161629906442032e-03, + 2.179368580193986708e-03, + 2.155573518032651535e-03, + 2.131776482166990085e-03, + 2.107977511341875988e-03, + 2.084176644303367687e-03, + 2.060373919797571767e-03, + 2.036569376571675111e-03, + 2.012763053372782635e-03, + 1.988954988948800264e-03, + 1.965145222047852934e-03, + 1.941333791418450253e-03, + 1.917520735808950260e-03, + 1.893706093968360645e-03, + 1.869889904645409160e-03, + 1.846072206588690633e-03, + 1.822253038547565337e-03, + 1.798432439270377433e-03, + 1.774610447505954201e-03, + 1.750787102002382845e-03, + 1.726962441507978252e-03, + 1.703136504770177756e-03, + 1.679309330536406762e-03, + 1.655480957553476587e-03, + 1.631651424567794788e-03, + 1.607820770324766904e-03, + 1.583989033569658611e-03, + 1.560156253046490922e-03, + 1.536322467499009027e-03, + 1.512487715669450210e-03, + 1.488652036300064114e-03, + 1.464815468131191100e-03, + 1.440978049902797266e-03, + 1.417139820353337980e-03, + 1.393300818220108515e-03, + 1.369461082239435950e-03, + 1.345620651146227061e-03, + 1.321779563674164992e-03, + 1.297937858555109911e-03, + 1.274095574519986318e-03, + 1.250252750297631624e-03, + 1.226409424615812916e-03, + 1.202565636200104158e-03, + 1.178721423774733816e-03, + 1.154876826062017177e-03, + 1.131031881782538053e-03, + 1.107186629654566571e-03, + 1.083341108394917643e-03, + 1.059495356717838135e-03, + 1.035649413335861880e-03, + 1.011803316959352566e-03, + 9.879571062960455612e-04, + 9.641108200519159233e-04, + 9.402644969300459491e-04, + 9.164181756316281714e-04, + 8.925718948548465705e-04, + 8.687256932957376472e-04, + 8.448796096475955216e-04, + 8.210336826011763048e-04, + 7.971879508441137140e-04, + 7.733424530617667020e-04, + 7.494972279361131369e-04, + 7.256523141467387033e-04, + 7.018077503695833476e-04, + 6.779635752784754239e-04, + 6.541198275432002964e-04, + 6.302765458310418583e-04, + 6.064337688055191104e-04, + 5.825915351273876393e-04, + 5.587498834535151908e-04, + 5.349088524377479479e-04, + 5.110684807304507202e-04, + 4.872288069780445320e-04, + 4.633898698238756103e-04, + 4.395517079070901997e-04, + 4.157143598636325161e-04, + 3.918778643251241700e-04, + 3.680422599197274080e-04, + 3.442075852715527589e-04, + 3.203738790008635686e-04, + 2.965411797234812608e-04, + 2.727095260516528615e-04, + 2.488789565929259767e-04, + 2.250495099510165875e-04, + 2.012212247252154228e-04, + 1.773941395105917888e-04, + 1.535682928975320787e-04, + 1.297437234719425454e-04, + 1.059204698155879522e-04, + 8.209857050509683063e-05, + 5.827806411283070607e-05, + 3.445898920629041534e-05, + 1.064138434831879679e-05, +-1.317471190349207185e-05, +-3.698926099593356597e-05, +-6.080222438130510613e-05, +-8.461356351641397650e-05, +-1.084232398638325335e-04, +-1.322312148903671261e-04, +-1.560374500689777838e-04, +-1.798419068772502715e-04, +-2.036445467986490064e-04, +-2.274453313215196195e-04, +-2.512442219402124329e-04, +-2.750411801542160467e-04, +-2.988361674686159839e-04, +-3.226291453945555028e-04, +-3.464200754483686426e-04, +-3.702089191527060041e-04, +-3.939956380355300741e-04, +-4.177801936312453435e-04, +-4.415625474798241150e-04, +-4.653426611274065006e-04, +-4.891204961260917127e-04, +-5.128960140345316648e-04, +-5.366691764170675128e-04, +-5.604399448448485520e-04, +-5.842082808949663726e-04, +-6.079741461510499790e-04, +-6.317375022030603327e-04, +-6.554983106478820022e-04, +-6.792565330884586198e-04, +-7.030121311347813486e-04, +-7.267650664035542980e-04, +-7.505153005179861399e-04, +-7.742627951082608692e-04, +-7.980075118113195542e-04, +-8.217494122714678146e-04, +-8.454884581394952331e-04, +-8.692246110738078039e-04, +-8.929578327395554758e-04, +-9.166880848092285716e-04, +-9.404153289624509219e-04, +-9.641395268865770446e-04, +-9.878606402758131812e-04, +-1.011578630832355927e-03, +-1.035293460265385547e-03, +-1.059005090292181950e-03, +-1.082713482637269898e-03, +-1.106418599033002744e-03, +-1.130120401219361853e-03, +-1.153818850944418909e-03, +-1.177513909964119070e-03, +-1.201205540041963083e-03, +-1.224893702949985666e-03, +-1.248578360467890100e-03, +-1.272259474383638901e-03, +-1.295937006493263653e-03, +-1.319610918601425318e-03, +-1.343281172520587215e-03, +-1.366947730072106369e-03, +-1.390610553085378951e-03, +-1.414269603398432898e-03, +-1.437924842857721264e-03, +-1.461576233318716798e-03, +-1.485223736645033743e-03, +-1.508867314709570577e-03, +-1.532506929393490439e-03, +-1.556142542587356714e-03, +-1.579774116190253101e-03, +-1.603401612110258272e-03, +-1.627024992264893433e-03, +-1.650644218580258000e-03, +-1.674259252992154343e-03, +-1.697870057445215663e-03, +-1.721476593893498828e-03, +-1.745078824300289001e-03, +-1.768676710638676002e-03, +-1.792270214890693018e-03, +-1.815859299048450462e-03, +-1.839443925113121809e-03, +-1.863024055096060110e-03, +-1.886599651017954260e-03, +-1.910170674909396045e-03, +-1.933737088810689314e-03, +-1.957298854772437837e-03, +-1.980855934854683364e-03, +-2.004408291127877505e-03, +-2.027955885672563189e-03, +-2.051498680579169100e-03, +-2.075036637948452466e-03, +-2.098569719891306504e-03, +-2.122097888529362372e-03, +-2.145621105994094044e-03, +-2.169139334427962369e-03, +-2.192652535983539031e-03, +-2.216160672824098090e-03, +-2.239663707123416055e-03, +-2.263161601066355187e-03, +-2.286654316847996134e-03, +-2.310141816674773745e-03, +-2.333624062763452276e-03, +-2.357101017342276388e-03, +-2.380572642650067346e-03, +-2.404038900936729135e-03, +-2.427499754463647436e-03, +-2.450955165502884722e-03, +-2.474405096338233231e-03, +-2.497849509264421768e-03, +-2.521288366587648693e-03, +-2.544721630625408886e-03, +-2.568149263707050593e-03, +-2.591571228172950131e-03, +-2.614987486375613002e-03, +-2.638398000678662120e-03, +-2.661802733457974916e-03, +-2.685201647100804272e-03, +-2.708594704006391310e-03, +-2.731981866585733373e-03, +-2.755363097262182939e-03, +-2.778738358470583727e-03, +-2.802107612658250382e-03, +-2.825470822284792405e-03, +-2.848827949821205151e-03, +-2.872178957751676115e-03, +-2.895523808572044062e-03, +-2.918862464791071448e-03, +-2.942194888929422231e-03, +-2.965521043520789445e-03, +-2.988840891111036509e-03, +-3.012154394258772724e-03, +-3.035461515535156380e-03, +-3.058762217524476756e-03, +-3.082056462823304539e-03, +-3.105344214041592076e-03, +-3.128625433801674599e-03, +-3.151900084739413851e-03, +-3.175168129503295588e-03, +-3.198429530755044978e-03, +-3.221684251169407587e-03, +-3.244932253434624266e-03, +-3.268173500252181344e-03, +-3.291407954336680527e-03, +-3.314635578416208397e-03, +-3.337856335232217142e-03, +-3.361070187540041079e-03, +-3.384277098108061377e-03, +-3.407477029718839704e-03, +-3.430669945168106014e-03, +-3.453855807265832339e-03, +-3.477034578835441325e-03, +-3.500206222714370881e-03, +-3.523370701753819612e-03, +-3.546527978819397769e-03, +-3.569678016790233006e-03, +-3.592820778560094908e-03, +-3.615956227036514186e-03, +-3.639084325141247155e-03, +-3.662205035810748872e-03, +-3.685318321995286264e-03, +-3.708424146660045315e-03, +-3.731522472784174361e-03, +-3.754613263361841844e-03, +-3.777696481401425325e-03, +-3.800772089926068766e-03, +-3.823840051973479131e-03, +-3.846900330596527903e-03, +-3.869952888862376785e-03, +-3.892997689853566236e-03, +-3.916034696667096068e-03, +-3.939063872415569066e-03, +-3.962085180225742055e-03, +-3.985098583240408512e-03, +-4.008104044616879816e-03, +-4.031101527528185673e-03, +-4.054090995162183339e-03, +-4.077072410722530800e-03, +-4.100045737427957318e-03, +-4.123010938512622521e-03, +-4.145967977226614268e-03, +-4.168916816835075215e-03, +-4.191857420619316509e-03, +-4.214789751875824657e-03, +-4.237713773917341394e-03, +-4.260629450072068308e-03, +-4.283536743684201141e-03, +-4.306435618113727687e-03, +-4.329326036737029745e-03, +-4.352207962945981931e-03, +-4.375081360149150368e-03, +-4.397946191770824714e-03, +-4.420802421251663478e-03, +-4.443650012048482381e-03, +-4.466488927634694982e-03, +-4.489319131500111443e-03, +-4.512140587150610671e-03, +-4.534953258109094415e-03, +-4.557757107914665005e-03, +-4.580552100123177865e-03, +-4.603338198307055894e-03, +-4.626115366055840242e-03, +-4.648883566975355042e-03, +-4.671642764688846254e-03, +-4.694392922835915680e-03, +-4.717134005073796849e-03, +-4.739865975075897853e-03, +-4.762588796533559488e-03, +-4.785302433154680485e-03, +-4.808006848664866766e-03, +-4.830702006806472139e-03, +-4.853387871339678167e-03, +-4.876064406041706600e-03, +-4.898731574707166324e-03, +-4.921389341148583313e-03, +-4.944037669195517661e-03, +-4.966676522695634768e-03, +-4.989305865513802424e-03, +-5.011925661533077857e-03, +-5.034535874653951401e-03, +-5.057136468794859105e-03, +-5.079727407892050892e-03, +-5.102308655900067609e-03, +-5.124880176790976016e-03, +-5.147441934555437373e-03, +-5.169993893201832273e-03, +-5.192536016756857387e-03, +-5.215068269265357194e-03, +-5.237590614790814912e-03, +-5.260103017414594420e-03, +-5.282605441236850122e-03, +-5.305097850376161786e-03, +-5.327580208969467761e-03, +-5.350052481172339926e-03, +-5.372514631158913437e-03, +-5.394966623122384591e-03, +-5.417408421274187702e-03, +-5.439839989845089707e-03, +-5.462261293084244747e-03, +-5.484672295260294844e-03, +-5.507072960660071466e-03, +-5.529463253590242641e-03, +-5.551843138375985032e-03, +-5.574212579362154002e-03, +-5.596571540912263602e-03, +-5.618919987409614139e-03, +-5.641257883256463844e-03, +-5.663585192874550159e-03, +-5.685901880704954427e-03, +-5.708207911208472256e-03, +-5.730503248865418363e-03, +-5.752787858175434019e-03, +-5.775061703658211296e-03, +-5.797324749852851219e-03, +-5.819576961318337349e-03, +-5.841818302633331947e-03, +-5.864048738396773590e-03, +-5.886268233227084402e-03, +-5.908476751763099867e-03, +-5.930674258663416569e-03, +-5.952860718606791182e-03, +-5.975036096292072815e-03, +-5.997200356438707816e-03, +-6.019353463785877614e-03, +-6.041495383093622822e-03, +-6.063626079141876991e-03, +-6.085745516731511789e-03, +-6.107853660683535552e-03, +-6.129950475839481862e-03, +-6.152035927061883132e-03, +-6.174109979233469159e-03, +-6.196172597258155050e-03, +-6.218223746060274476e-03, +-6.240263390585113965e-03, +-6.262291495798751571e-03, +-6.284308026688519185e-03, +-6.306312948262338125e-03, +-6.328306225549602121e-03, +-6.350287823600372396e-03, +-6.372257707486355185e-03, +-6.394215842300081214e-03, +-6.416162193155538866e-03, +-6.438096725187879288e-03, +-6.460019403554025270e-03, +-6.481930193431825575e-03, +-6.503829060021040255e-03, +-6.525715968542950343e-03, +-6.547590884240205196e-03, +-6.569453772377218011e-03, +-6.591304598240053936e-03, +-6.613143327136867221e-03, +-6.634969924397150949e-03, +-6.656784355372779606e-03, +-6.678586585437231056e-03, +-6.700376579986028029e-03, +-6.722154304436663529e-03, +-6.743919724229077879e-03, +-6.765672804824905857e-03, +-6.787413511708447270e-03, +-6.809141810385797855e-03, +-6.830857666385831140e-03, +-6.852561045259471587e-03, +-6.874251912580031133e-03, +-6.895930233943713995e-03, +-6.917595974968704202e-03, +-6.939249101296345208e-03, +-6.960889578590181460e-03, +-6.982517372536647081e-03, +-7.004132448844736271e-03, +-7.025734773246696332e-03, +-7.047324311497083112e-03, +-7.068901029373884232e-03, +-7.090464892677564128e-03, +-7.112015867232094474e-03, +-7.133553918884144932e-03, +-7.155079013503670357e-03, +-7.176591116983680081e-03, +-7.198090195240748786e-03, +-7.219576214214320879e-03, +-7.241049139867495460e-03, +-7.262508938186926569e-03, +-7.283955575181954092e-03, +-7.305389016886329814e-03, +-7.326809229356722949e-03, +-7.348216178673902359e-03, +-7.369609830941830156e-03, +-7.390990152288670449e-03, +-7.412357108866001777e-03, +-7.433710666849338393e-03, +-7.455050792437972404e-03, +-7.476377451855487251e-03, +-7.497690611348939785e-03, +-7.518990237189967889e-03, +-7.540276295673772194e-03, +-7.561548753120209826e-03, +-7.582807575872966936e-03, +-7.604052730300105145e-03, +-7.625284182793840362e-03, +-7.646501899771047592e-03, +-7.667705847672967763e-03, +-7.688895992965074158e-03, +-7.710072302137508694e-03, +-7.731234741704801766e-03, +-7.752383278206534042e-03, +-7.773517878206429206e-03, +-7.794638508293439891e-03, +-7.815745135080817002e-03, +-7.836837725207128000e-03, +-7.857916245335492753e-03, +-7.878980662154019821e-03, +-7.900030942375744006e-03, +-7.921067052739056563e-03, +-7.942088960007033863e-03, +-7.963096630968335976e-03, +-7.984090032436453807e-03, +-8.005069131250128894e-03, +-8.026033894273809643e-03, +-8.046984288396757945e-03, +-8.067920280534197561e-03, +-8.088841837626245534e-03, +-8.109748926639069252e-03, +-8.130641514564050307e-03, +-8.151519568418237258e-03, +-8.172383055244298797e-03, +-8.193231942110957428e-03, +-8.214066196112245269e-03, +-8.234885784368411316e-03, +-8.255690674025206732e-03, +-8.276480832254767828e-03, +-8.297256226254762571e-03, +-8.318016823249119174e-03, +-8.338762590487661802e-03, +-8.359493495246722930e-03, +-8.380209504828338429e-03, +-8.400910586561272791e-03, +-8.421596707800165643e-03, +-8.442267835926055633e-03, +-8.462923938346704825e-03, +-8.483564982495849296e-03, +-8.504190935834135892e-03, +-8.524801765848376289e-03, +-8.545397440052325891e-03, +-8.565977925986128713e-03, +-8.586543191216725046e-03, +-8.607093203337639817e-03, +-8.627627929969582804e-03, +-8.648147338759605562e-03, +-8.668651397382190829e-03, +-8.689140073538371284e-03, +-8.709613334956272518e-03, +-8.730071149391029767e-03, +-8.750513484625020363e-03, +-8.770940308467829044e-03, +-8.791351588755885391e-03, +-8.811747293353331192e-03, +-8.832127390151260637e-03, +-8.852491847068249403e-03, +-8.872840632050104856e-03, +-8.893173713070520042e-03, +-8.913491058130156020e-03, +-8.933792635257708711e-03, +-8.954078412509064097e-03, +-8.974348357968224554e-03, +-8.994602439746235065e-03, +-9.014840625982565789e-03, +-9.035062884844013986e-03, +-9.055269184525644235e-03, +-9.075459493249936685e-03, +-9.095633779267814009e-03, +-9.115792010857888539e-03, +-9.135934156326755429e-03, +-9.156060184009513075e-03, +-9.176170062268928715e-03, +-9.196263759496387316e-03, +-9.216341244111147385e-03, +-9.236402484561175366e-03, +-9.256447449322437876e-03, +-9.276476106899420385e-03, +-9.296488425824965887e-03, +-9.316484374660699910e-03, +-9.336463921996381726e-03, +-9.356427036450835899e-03, +-9.376373686671107474e-03, +-9.396303841333143725e-03, +-9.416217469141459351e-03, +-9.436114538829705467e-03, +-9.455995019159973980e-03, +-9.475858878923491477e-03, +-9.495706086940464835e-03, +-9.515536612059909485e-03, +-9.535350423159881864e-03, +-9.555147489147521045e-03, +-9.574927778959348851e-03, +-9.594691261560640144e-03, +-9.614437905946368254e-03, +-9.634167681140320266e-03, +-9.653880556196163878e-03, +-9.673576500196149827e-03, +-9.693255482252754671e-03, +-9.712917471507350256e-03, +-9.732562437131270575e-03, +-9.752190348324968686e-03, +-9.771801174318972549e-03, +-9.791394884373100932e-03, +-9.810971447777044538e-03, +-9.830530833850076311e-03, +-9.850073011941573586e-03, +-9.869597951430674615e-03, +-9.889105621726205705e-03, +-9.908595992267255417e-03, +-9.928069032522652410e-03, +-9.947524711991367896e-03, +-9.966963000202336970e-03, +-9.986383866714984223e-03, +-1.000578728111846741e-02, +-1.002517321303260378e-02, +-1.004454163210719703e-02, +-1.006389250802247268e-02, +-1.008322581048889249e-02, +-1.010254150924770264e-02, +-1.012183957407019642e-02, +-1.014111997475854697e-02, +-1.016038268114513241e-02, +-1.017962766309336506e-02, +-1.019885489049692298e-02, +-1.021806433328027557e-02, +-1.023725596139892120e-02, +-1.025642974483871768e-02, +-1.027558565361680679e-02, +-1.029472365778078338e-02, +-1.031384372740977960e-02, +-1.033294583261303197e-02, +-1.035202994353172194e-02, +-1.037109603033739731e-02, +-1.039014406323329753e-02, +-1.040917401245333197e-02, +-1.042818584826308952e-02, +-1.044717954095907009e-02, +-1.046615506086917557e-02, +-1.048511237835263524e-02, +-1.050405146380027979e-02, +-1.052297228763407651e-02, +-1.054187482030771207e-02, +-1.056075903230649198e-02, +-1.057962489414701092e-02, +-1.059847237637765588e-02, +-1.061730144957839621e-02, +-1.063611208436117395e-02, +-1.065490425136930361e-02, +-1.067367792127837771e-02, +-1.069243306479546358e-02, +-1.071116965265971749e-02, +-1.072988765564202897e-02, +-1.074858704454570608e-02, +-1.076726779020558723e-02, +-1.078592986348908718e-02, +-1.080457323529529674e-02, +-1.082319787655586923e-02, +-1.084180375823445321e-02, +-1.086039085132687460e-02, +-1.087895912686159643e-02, +-1.089750855589907870e-02, +-1.091603910953252259e-02, +-1.093455075888732572e-02, +-1.095304347512141528e-02, +-1.097151722942519593e-02, +-1.098997199302195922e-02, +-1.100840773716716715e-02, +-1.102682443314943750e-02, +-1.104522205228956194e-02, +-1.106360056594164580e-02, +-1.108195994549219209e-02, +-1.110030016236066702e-02, +-1.111862118799934913e-02, +-1.113692299389374210e-02, +-1.115520555156190863e-02, +-1.117346883255524587e-02, +-1.119171280845823388e-02, +-1.120993745088825176e-02, +-1.122814273149590723e-02, +-1.124632862196489440e-02, +-1.126449509401256620e-02, +-1.128264211938898552e-02, +-1.130076966987808400e-02, +-1.131887771729678076e-02, +-1.133696623349557051e-02, +-1.135503519035825810e-02, +-1.137308455980246338e-02, +-1.139111431377898449e-02, +-1.140912442427258720e-02, +-1.142711486330122428e-02, +-1.144508560291701560e-02, +-1.146303661520542243e-02, +-1.148096787228581814e-02, +-1.149887934631126270e-02, +-1.151677100946883400e-02, +-1.153464283397955849e-02, +-1.155249479209814918e-02, +-1.157032685611342551e-02, +-1.158813899834811902e-02, +-1.160593119115928620e-02, +-1.162370340693774477e-02, +-1.164145561810885597e-02, +-1.165918779713173876e-02, +-1.167689991650013373e-02, +-1.169459194874180631e-02, +-1.171226386641888682e-02, +-1.172991564212784096e-02, +-1.174754724849972308e-02, +-1.176515865819974596e-02, +-1.178274984392794003e-02, +-1.180032077841853752e-02, +-1.181787143444044952e-02, +-1.183540178479737179e-02, +-1.185291180232741701e-02, +-1.187040145990357794e-02, +-1.188787073043334579e-02, +-1.190531958685935379e-02, +-1.192274800215874751e-02, +-1.194015594934361331e-02, +-1.195754340146087426e-02, +-1.197491033159268047e-02, +-1.199225671285578977e-02, +-1.200958251840234317e-02, +-1.202688772141920909e-02, +-1.204417229512875186e-02, +-1.206143621278813263e-02, +-1.207867944768987144e-02, +-1.209590197316160430e-02, +-1.211310376256650133e-02, +-1.213028478930274281e-02, +-1.214744502680416283e-02, +-1.216458444853973399e-02, +-1.218170302801393004e-02, +-1.219880073876687329e-02, +-1.221587755437392002e-02, +-1.223293344844630752e-02, +-1.224996839463054696e-02, +-1.226698236660911379e-02, +-1.228397533809996896e-02, +-1.230094728285677057e-02, +-1.231789817466895538e-02, +-1.233482798736194180e-02, +-1.235173669479671874e-02, +-1.236862427087044233e-02, +-1.238549068951599191e-02, +-1.240233592470222149e-02, +-1.241915995043398578e-02, +-1.243596274075227208e-02, +-1.245274426973424706e-02, +-1.246950451149280228e-02, +-1.248624344017749965e-02, +-1.250296102997371615e-02, +-1.251965725510319379e-02, +-1.253633208982389731e-02, +-1.255298550843032129e-02, +-1.256961748525303388e-02, +-1.258622799465930128e-02, +-1.260281701105252228e-02, +-1.261938450887284749e-02, +-1.263593046259675265e-02, +-1.265245484673730575e-02, +-1.266895763584414275e-02, +-1.268543880450376075e-02, +-1.270189832733892125e-02, +-1.271833617900954699e-02, +-1.273475233421200552e-02, +-1.275114676767942490e-02, +-1.276751945418207711e-02, +-1.278387036852666678e-02, +-1.280019948555723847e-02, +-1.281650678015439256e-02, +-1.283279222723606762e-02, +-1.284905580175696796e-02, +-1.286529747870889320e-02, +-1.288151723312070188e-02, +-1.289771504005864620e-02, +-1.291389087462572853e-02, +-1.293004471196263980e-02, +-1.294617652724692689e-02, +-1.296228629569360670e-02, +-1.297837399255489556e-02, +-1.299443959312060644e-02, +-1.301048307271759560e-02, +-1.302650440671047558e-02, +-1.304250357050131676e-02, +-1.305848053952952600e-02, +-1.307443528927207735e-02, +-1.309036779524352066e-02, +-1.310627803299630259e-02, +-1.312216597812011082e-02, +-1.313803160624271195e-02, +-1.315387489302926281e-02, +-1.316969581418316049e-02, +-1.318549434544496329e-02, +-1.320127046259365888e-02, +-1.321702414144572402e-02, +-1.323275535785589478e-02, +-1.324846408771652821e-02, +-1.326415030695832394e-02, +-1.327981399154966845e-02, +-1.329545511749723533e-02, +-1.331107366084559838e-02, +-1.332666959767769485e-02, +-1.334224290411466576e-02, +-1.335779355631553852e-02, +-1.337332153047797456e-02, +-1.338882680283767432e-02, +-1.340430934966869991e-02, +-1.341976914728340575e-02, +-1.343520617203279068e-02, +-1.345062040030597060e-02, +-1.346601180853081170e-02, +-1.348138037317349498e-02, +-1.349672607073873487e-02, +-1.351204887776978787e-02, +-1.352734877084874401e-02, +-1.354262572659607408e-02, +-1.355787972167113789e-02, +-1.357311073277177316e-02, +-1.358831873663482112e-02, +-1.360350371003578654e-02, +-1.361866562978882034e-02, +-1.363380447274729033e-02, +-1.364892021580309603e-02, +-1.366401283588739198e-02, +-1.367908230996990257e-02, +-1.369412861505989523e-02, +-1.370915172820500252e-02, +-1.372415162649241391e-02, +-1.373912828704815584e-02, +-1.375408168703766074e-02, +-1.376901180366515640e-02, +-1.378391861417445526e-02, +-1.379880209584832124e-02, +-1.381366222600889822e-02, +-1.382849898201752095e-02, +-1.384331234127517476e-02, +-1.385810228122181555e-02, +-1.387286877933710180e-02, +-1.388761181314004944e-02, +-1.390233136018912199e-02, +-1.391702739808226008e-02, +-1.393169990445687623e-02, +-1.394634885699030762e-02, +-1.396097423339905108e-02, +-1.397557601143963046e-02, +-1.399015416890795997e-02, +-1.400470868363982990e-02, +-1.401923953351060480e-02, +-1.403374669643573866e-02, +-1.404823015037011229e-02, +-1.406268987330881043e-02, +-1.407712584328645912e-02, +-1.409153803837793865e-02, +-1.410592643669777123e-02, +-1.412029101640055288e-02, +-1.413463175568105759e-02, +-1.414894863277372378e-02, +-1.416324162595353729e-02, +-1.417751071353524212e-02, +-1.419175587387386597e-02, +-1.420597708536442891e-02, +-1.422017432644249318e-02, +-1.423434757558350756e-02, +-1.424849681130345609e-02, +-1.426262201215845737e-02, +-1.427672315674508724e-02, +-1.429080022370015669e-02, +-1.430485319170097733e-02, +-1.431888203946515142e-02, +-1.433288674575102471e-02, +-1.434686728935704973e-02, +-1.436082364912253176e-02, +-1.437475580392731135e-02, +-1.438866373269158914e-02, +-1.440254741437635780e-02, +-1.441640682798310015e-02, +-1.443024195255434433e-02, +-1.444405276717283977e-02, +-1.445783925096256160e-02, +-1.447160138308794738e-02, +-1.448533914275432558e-02, +-1.449905250920780798e-02, +-1.451274146173554824e-02, +-1.452640597966542955e-02, +-1.454004604236641338e-02, +-1.455366162924823063e-02, +-1.456725271976188826e-02, +-1.458081929339915921e-02, +-1.459436132969293282e-02, +-1.460787880821719752e-02, +-1.462137170858711886e-02, +-1.463484001045907597e-02, +-1.464828369353045855e-02, +-1.466170273753987334e-02, +-1.467509712226719790e-02, +-1.468846682753369333e-02, +-1.470181183320173716e-02, +-1.471513211917526050e-02, +-1.472842766539925533e-02, +-1.474169845186042681e-02, +-1.475494445858661734e-02, +-1.476816566564729226e-02, +-1.478136205315325365e-02, +-1.479453360125699592e-02, +-1.480768029015238144e-02, +-1.482080210007501349e-02, +-1.483389901130180606e-02, +-1.484697100415171243e-02, +-1.486001805898492720e-02, +-1.487304015620354893e-02, +-1.488603727625140843e-02, +-1.489900939961390919e-02, +-1.491195650681847833e-02, +-1.492487857843413125e-02, +-1.493777559507175785e-02, +-1.495064753738405659e-02, +-1.496349438606585022e-02, +-1.497631612185358271e-02, +-1.498911272552586917e-02, +-1.500188417790306213e-02, +-1.501463045984780496e-02, +-1.502735155226453574e-02, +-1.504004743609984630e-02, +-1.505271809234228278e-02, +-1.506536350202279662e-02, +-1.507798364621411313e-02, +-1.509057850603151736e-02, +-1.510314806263218096e-02, +-1.511569229721555774e-02, +-1.512821119102351897e-02, +-1.514070472533996826e-02, +-1.515317288149142620e-02, +-1.516561564084637631e-02, +-1.517803298481610122e-02, +-1.519042489485388815e-02, +-1.520279135245558751e-02, +-1.521513233915950183e-02, +-1.522744783654650727e-02, +-1.523973782623973955e-02, +-1.525200228990514217e-02, +-1.526424120925101886e-02, +-1.527645456602829896e-02, +-1.528864234203043682e-02, +-1.530080451909374140e-02, +-1.531294107909707269e-02, +-1.532505200396188337e-02, +-1.533713727565247896e-02, +-1.534919687617583399e-02, +-1.536123078758172208e-02, +-1.537323899196258933e-02, +-1.538522147145396021e-02, +-1.539717820823392411e-02, +-1.540910918452370257e-02, +-1.542101438258716706e-02, +-1.543289378473137151e-02, +-1.544474737330607007e-02, +-1.545657513070416988e-02, +-1.546837703936143442e-02, +-1.548015308175687207e-02, +-1.549190324041234065e-02, +-1.550362749789287002e-02, +-1.551532583680658925e-02, +-1.552699823980470233e-02, +-1.553864468958167724e-02, +-1.555026516887504130e-02, +-1.556185966046571591e-02, +-1.557342814717752738e-02, +-1.558497061187799800e-02, +-1.559648703747756188e-02, +-1.560797740693008369e-02, +-1.561944170323275281e-02, +-1.563087990942626723e-02, +-1.564229200859440505e-02, +-1.565367798386466114e-02, +-1.566503781840778223e-02, +-1.567637149543802538e-02, +-1.568767899821299841e-02, +-1.569896031003405884e-02, +-1.571021541424583515e-02, +-1.572144429423675410e-02, +-1.573264693343869383e-02, +-1.574382331532716769e-02, +-1.575497342342118204e-02, +-1.576609724128353457e-02, +-1.577719475252068598e-02, +-1.578826594078276691e-02, +-1.579931078976366809e-02, +-1.581032928320085656e-02, +-1.582132140487587865e-02, +-1.583228713861379450e-02, +-1.584322646828358050e-02, +-1.585413937779802176e-02, +-1.586502585111386476e-02, +-1.587588587223159875e-02, +-1.588671942519576802e-02, +-1.589752649409474985e-02, +-1.590830706306085515e-02, +-1.591906111627039086e-02, +-1.592978863794373978e-02, +-1.594048961234532588e-02, +-1.595116402378341652e-02, +-1.596181185661058738e-02, +-1.597243309522335120e-02, +-1.598302772406240760e-02, +-1.599359572761245574e-02, +-1.600413709040263491e-02, +-1.601465179700593822e-02, +-1.602513983203985790e-02, +-1.603560118016589958e-02, +-1.604603582608988416e-02, +-1.605644375456181591e-02, +-1.606682495037626418e-02, +-1.607717939837173191e-02, +-1.608750708343145708e-02, +-1.609780799048262517e-02, +-1.610808210449719835e-02, +-1.611832941049119033e-02, +-1.612854989352519725e-02, +-1.613874353870429004e-02, +-1.614891033117796248e-02, +-1.615905025614022480e-02, +-1.616916329882945799e-02, +-1.617924944452888217e-02, +-1.618930867856576208e-02, +-1.619934098631243061e-02, +-1.620934635318549075e-02, +-1.621932476464640893e-02, +-1.622927620620101541e-02, +-1.623920066340002466e-02, +-1.624909812183866070e-02, +-1.625896856715696934e-02, +-1.626881198503954407e-02, +-1.627862836121583140e-02, +-1.628841768146015168e-02, +-1.629817993159129313e-02, +-1.630791509747314683e-02, +-1.631762316501423823e-02, +-1.632730412016795973e-02, +-1.633695794893253936e-02, +-1.634658463735116224e-02, +-1.635618417151182835e-02, +-1.636575653754753640e-02, +-1.637530172163615544e-02, +-1.638481971000049428e-02, +-1.639431048890829454e-02, +-1.640377404467253941e-02, +-1.641321036365084307e-02, +-1.642261943224618617e-02, +-1.643200123690639891e-02, +-1.644135576412447328e-02, +-1.645068300043847284e-02, +-1.645998293243153276e-02, +-1.646925554673195347e-02, +-1.647850083001316940e-02, +-1.648771876899381497e-02, +-1.649690935043756149e-02, +-1.650607256115359939e-02, +-1.651520838799585417e-02, +-1.652431681786402373e-02, +-1.653339783770264859e-02, +-1.654245143450176758e-02, +-1.655147759529662296e-02, +-1.656047630716785818e-02, +-1.656944755724135132e-02, +-1.657839133268827758e-02, +-1.658730762072535558e-02, +-1.659619640861456982e-02, +-1.660505768366331986e-02, +-1.661389143322438908e-02, +-1.662269764469618757e-02, +-1.663147630552228723e-02, +-1.664022740319200111e-02, +-1.664895092523983183e-02, +-1.665764685924616198e-02, +-1.666631519283653246e-02, +-1.667495591368239188e-02, +-1.668356900950038191e-02, +-1.669215446805295128e-02, +-1.670071227714806789e-02, +-1.670924242463934367e-02, +-1.671774489842590972e-02, +-1.672621968645276319e-02, +-1.673466677671022959e-02, +-1.674308615723468438e-02, +-1.675147781610796666e-02, +-1.675984174145762548e-02, +-1.676817792145690600e-02, +-1.677648634432498884e-02, +-1.678476699832667091e-02, +-1.679301987177253194e-02, +-1.680124495301895532e-02, +-1.680944223046807948e-02, +-1.681761169256798527e-02, +-1.682575332781247740e-02, +-1.683386712474124053e-02, +-1.684195307193986010e-02, +-1.685001115803981542e-02, +-1.685804137171847267e-02, +-1.686604370169905373e-02, +-1.687401813675074025e-02, +-1.688196466568874649e-02, +-1.688988327737412504e-02, +-1.689777396071403398e-02, +-1.690563670466144544e-02, +-1.691347149821556192e-02, +-1.692127833042143814e-02, +-1.692905719037012674e-02, +-1.693680806719898013e-02, +-1.694453095009116825e-02, +-1.695222582827608793e-02, +-1.695989269102914088e-02, +-1.696753152767191755e-02, +-1.697514232757193695e-02, +-1.698272508014321558e-02, +-1.699027977484561872e-02, +-1.699780640118528710e-02, +-1.700530494871449472e-02, +-1.701277540703185001e-02, +-1.702021776578200099e-02, +-1.702763201465590931e-02, +-1.703501814339069068e-02, +-1.704237614176989934e-02, +-1.704970599962307015e-02, +-1.705700770682629444e-02, +-1.706428125330186618e-02, +-1.707152662901821605e-02, +-1.707874382399030347e-02, +-1.708593282827930437e-02, +-1.709309363199290263e-02, +-1.710022622528485636e-02, +-1.710733059835556347e-02, +-1.711440674145167998e-02, +-1.712145464486621721e-02, +-1.712847429893869788e-02, +-1.713546569405503817e-02, +-1.714242882064759624e-02, +-1.714936366919507515e-02, +-1.715627023022275530e-02, +-1.716314849430243539e-02, +-1.716999845205217576e-02, +-1.717682009413674937e-02, +-1.718361341126736080e-02, +-1.719037839420176073e-02, +-1.719711503374417652e-02, +-1.720382332074545800e-02, +-1.721050324610295598e-02, +-1.721715480076051880e-02, +-1.722377797570880109e-02, +-1.723037276198481280e-02, +-1.723693915067232504e-02, +-1.724347713290158568e-02, +-1.724998669984971131e-02, +-1.725646784274012871e-02, +-1.726292055284316118e-02, +-1.726934482147570588e-02, +-1.727574064000132401e-02, +-1.728210799983029289e-02, +-1.728844689241956084e-02, +-1.729475730927281657e-02, +-1.730103924194039550e-02, +-1.730729268201941159e-02, +-1.731351762115368453e-02, +-1.731971405103388886e-02, +-1.732588196339724870e-02, +-1.733202135002801653e-02, +-1.733813220275701866e-02, +-1.734421451346190163e-02, +-1.735026827406719804e-02, +-1.735629347654418439e-02, +-1.736229011291100591e-02, +-1.736825817523261414e-02, +-1.737419765562075655e-02, +-1.738010854623412565e-02, +-1.738599083927810235e-02, +-1.739184452700519995e-02, +-1.739766960171457849e-02, +-1.740346605575237085e-02, +-1.740923388151164458e-02, +-1.741497307143232559e-02, +-1.742068361800127793e-02, +-1.742636551375225523e-02, +-1.743201875126597702e-02, +-1.743764332317013915e-02, +-1.744323922213934785e-02, +-1.744880644089516486e-02, +-1.745434497220612821e-02, +-1.745985480888778349e-02, +-1.746533594380265259e-02, +-1.747078836986021635e-02, +-1.747621208001703952e-02, +-1.748160706727660066e-02, +-1.748697332468952814e-02, +-1.749231084535336767e-02, +-1.749761962241273838e-02, +-1.750289964905929821e-02, +-1.750815091853174035e-02, +-1.751337342411597026e-02, +-1.751856715914478987e-02, +-1.752373211699815442e-02, +-1.752886829110307174e-02, +-1.753397567493367171e-02, +-1.753905426201115073e-02, +-1.754410404590388273e-02, +-1.754912502022730469e-02, +-1.755411717864401380e-02, +-1.755908051486370844e-02, +-1.756401502264323330e-02, +-1.756892069578649962e-02, +-1.757379752814478349e-02, +-1.757864551361631306e-02, +-1.758346464614662583e-02, +-1.758825491972831889e-02, +-1.759301632840124668e-02, +-1.759774886625242382e-02, +-1.760245252741599389e-02, +-1.760712730607350007e-02, +-1.761177319645343756e-02, +-1.761639019283172888e-02, +-1.762097828953135270e-02, +-1.762553748092269418e-02, +-1.763006776142317031e-02, +-1.763456912549757338e-02, +-1.763904156765784548e-02, +-1.764348508246332478e-02, +-1.764789966452039865e-02, +-1.765228530848292690e-02, +-1.765664200905190176e-02, +-1.766096976097565954e-02, +-1.766526855904970369e-02, +-1.766953839811697541e-02, +-1.767377927306762117e-02, +-1.767799117883905174e-02, +-1.768217411041610870e-02, +-1.768632806283075912e-02, +-1.769045303116242168e-02, +-1.769454901053775508e-02, +-1.769861599613080025e-02, +-1.770265398316282074e-02, +-1.770666296690256991e-02, +-1.771064294266596825e-02, +-1.771459390581640869e-02, +-1.771851585176449639e-02, +-1.772240877596833325e-02, +-1.772627267393322298e-02, +-1.773010754121201113e-02, +-1.773391337340466875e-02, +-1.773769016615875035e-02, +-1.774143791516912677e-02, +-1.774515661617787413e-02, +-1.774884626497471446e-02, +-1.775250685739649531e-02, +-1.775613838932766850e-02, +-1.775974085669985991e-02, +-1.776331425549235524e-02, +-1.776685858173157953e-02, +-1.777037383149150662e-02, +-1.777386000089339890e-02, +-1.777731708610610570e-02, +-1.778074508334569898e-02, +-1.778414398887575784e-02, +-1.778751379900725405e-02, +-1.779085451009862484e-02, +-1.779416611855563768e-02, +-1.779744862083152551e-02, +-1.780070201342700761e-02, +-1.780392629289013692e-02, +-1.780712145581648739e-02, +-1.781028749884904991e-02, +-1.781342441867815943e-02, +-1.781653221204167539e-02, +-1.781961087572492622e-02, +-1.782266040656056011e-02, +-1.782568080142890241e-02, +-1.782867205725745599e-02, +-1.783163417102135578e-02, +-1.783456713974306343e-02, +-1.783747096049267955e-02, +-1.784034563038755863e-02, +-1.784319114659263517e-02, +-1.784600750632025362e-02, +-1.784879470683026909e-02, +-1.785155274542993276e-02, +-1.785428161947402378e-02, +-1.785698132636472785e-02, +-1.785965186355170653e-02, +-1.786229322853214938e-02, +-1.786490541885070102e-02, +-1.786748843209940915e-02, +-1.787004226591781819e-02, +-1.787256691799298317e-02, +-1.787506238605938644e-02, +-1.787752866789905914e-02, +-1.787996576134137650e-02, +-1.788237366426330757e-02, +-1.788475237458927655e-02, +-1.788710189029110720e-02, +-1.788942220938814429e-02, +-1.789171332994727442e-02, +-1.789397525008273870e-02, +-1.789620796795636168e-02, +-1.789841148177738483e-02, +-1.790058578980251169e-02, +-1.790273089033594597e-02, +-1.790484678172943669e-02, +-1.790693346238206307e-02, +-1.790899093074051554e-02, +-1.791101918529883902e-02, +-1.791301822459865842e-02, +-1.791498804722903640e-02, +-1.791692865182650113e-02, +-1.791884003707499076e-02, +-1.792072220170603386e-02, +-1.792257514449855163e-02, +-1.792439886427894466e-02, +-1.792619335992108251e-02, +-1.792795863034634882e-02, +-1.792969467452353374e-02, +-1.793140149146888254e-02, +-1.793307908024616149e-02, +-1.793472743996652602e-02, +-1.793634656978871159e-02, +-1.793793646891876647e-02, +-1.793949713661026693e-02, +-1.794102857216430674e-02, +-1.794253077492930296e-02, +-1.794400374430121445e-02, +-1.794544747972344131e-02, +-1.794686198068673813e-02, +-1.794824724672942906e-02, +-1.794960327743730377e-02, +-1.795093007244338498e-02, +-1.795222763142835173e-02, +-1.795349595412018551e-02, +-1.795473504029440961e-02, +-1.795594488977385675e-02, +-1.795712550242889796e-02, +-1.795827687817726226e-02, +-1.795939901698411986e-02, +-1.796049191886207874e-02, +-1.796155558387107706e-02, +-1.796259001211861911e-02, +-1.796359520375947691e-02, +-1.796457115899591922e-02, +-1.796551787807757969e-02, +-1.796643536130148114e-02, +-1.796732360901208067e-02, +-1.796818262160122109e-02, +-1.796901239950805459e-02, +-1.796981294321925438e-02, +-1.797058425326878914e-02, +-1.797132633023802023e-02, +-1.797203917475568430e-02, +-1.797272278749790717e-02, +-1.797337716918816219e-02, +-1.797400232059729805e-02, +-1.797459824254347277e-02, +-1.797516493589225786e-02, +-1.797570240155661400e-02, +-1.797621064049671757e-02, +-1.797668965372016536e-02, +-1.797713944228189475e-02, +-1.797756000728419762e-02, +-1.797795134987657112e-02, +-1.797831347125598139e-02, +-1.797864637266663457e-02, +-1.797895005540006697e-02, +-1.797922452079511388e-02, +-1.797946977023788528e-02, +-1.797968580516184217e-02, +-1.797987262704768899e-02, +-1.798003023742349507e-02, +-1.798015863786453505e-02, +-1.798025782999333744e-02, +-1.798032781547977133e-02, +-1.798036859604091806e-02, +-1.798038017344117528e-02, +-1.798036254949211474e-02, +-1.798031572605258629e-02, +-1.798023970502872146e-02, +-1.798013448837384662e-02, +-1.798000007808849346e-02, +-1.797983647622046835e-02, +-1.797964368486478989e-02, +-1.797942170616364035e-02, +-1.797917054230639342e-02, +-1.797889019552970091e-02, +-1.797858066811731589e-02, +-1.797824196240029385e-02, +-1.797787408075673249e-02, +-1.797747702561194524e-02, +-1.797705079943839532e-02, +-1.797659540475580672e-02, +-1.797611084413092836e-02, +-1.797559712017771441e-02, +-1.797505423555715090e-02, +-1.797448219297754016e-02, +-1.797388099519410878e-02, +-1.797325064500935460e-02, +-1.797259114527277254e-02, +-1.797190249888094490e-02, +-1.797118470877767660e-02, +-1.797043777795371416e-02, +-1.796966170944691230e-02, +-1.796885650634228240e-02, +-1.796802217177175670e-02, +-1.796715870891441025e-02, +-1.796626612099631870e-02, +-1.796534441129066587e-02, +-1.796439358311754594e-02, +-1.796341363984407455e-02, +-1.796240458488452749e-02, +-1.796136642170010483e-02, +-1.796029915379884420e-02, +-1.795920278473598503e-02, +-1.795807731811367366e-02, +-1.795692275758097034e-02, +-1.795573910683390464e-02, +-1.795452636961551371e-02, +-1.795328454971575893e-02, +-1.795201365097143578e-02, +-1.795071367726637848e-02, +-1.794938463253128308e-02, +-1.794802652074376295e-02, +-1.794663934592830370e-02, +-1.794522311215624930e-02, +-1.794377782354595816e-02, +-1.794230348426248747e-02, +-1.794080009851775973e-02, +-1.793926767057066676e-02, +-1.793770620472684429e-02, +-1.793611570533872740e-02, +-1.793449617680567196e-02, +-1.793284762357377424e-02, +-1.793117005013589865e-02, +-1.792946346103173327e-02, +-1.792772786084778289e-02, +-1.792596325421715042e-02, +-1.792416964581994288e-02, +-1.792234704038279253e-02, +-1.792049544267916919e-02, +-1.791861485752924837e-02, +-1.791670528979994251e-02, +-1.791476674440476563e-02, +-1.791279922630403115e-02, +-1.791080274050469920e-02, +-1.790877729206040436e-02, +-1.790672288607138632e-02, +-1.790463952768456962e-02, +-1.790252722209353595e-02, +-1.790038597453841654e-02, +-1.789821579030606569e-02, +-1.789601667472986296e-02, +-1.789378863318970628e-02, +-1.789153167111225823e-02, +-1.788924579397055056e-02, +-1.788693100728436583e-02, +-1.788458731661978288e-02, +-1.788221472758962094e-02, +-1.787981324585317250e-02, +-1.787738287711618593e-02, +-1.787492362713088978e-02, +-1.787243550169602402e-02, +-1.786991850665684348e-02, +-1.786737264790494786e-02, +-1.786479793137852462e-02, +-1.786219436306211994e-02, +-1.785956194898659713e-02, +-1.785690069522939682e-02, +-1.785421060791431494e-02, +-1.785149169321139165e-02, +-1.784874395733720975e-02, +-1.784596740655463101e-02, +-1.784316204717284471e-02, +-1.784032788554736765e-02, +-1.783746492808007886e-02, +-1.783457318121912591e-02, +-1.783165265145896308e-02, +-1.782870334534024034e-02, +-1.782572526945000457e-02, +-1.782271843042141160e-02, +-1.781968283493405233e-02, +-1.781661848971344622e-02, +-1.781352540153161371e-02, +-1.781040357720655581e-02, +-1.780725302360254558e-02, +-1.780407374763003786e-02, +-1.780086575624561726e-02, +-1.779762905645198082e-02, +-1.779436365529792410e-02, +-1.779106955987846267e-02, +-1.778774677733459611e-02, +-1.778439531485344685e-02, +-1.778101517966819423e-02, +-1.777760637905810223e-02, +-1.777416892034843973e-02, +-1.777070281091049780e-02, +-1.776720805816152729e-02, +-1.776368466956490533e-02, +-1.776013265262982657e-02, +-1.775655201491149401e-02, +-1.775294276401123347e-02, +-1.774930490757600093e-02, +-1.774563845329886827e-02, +-1.774194340891875957e-02, +-1.773821978222048235e-02, +-1.773446758103470675e-02, +-1.773068681323802798e-02, +-1.772687748675269570e-02, +-1.772303960954703037e-02, +-1.771917318963491667e-02, +-1.771527823507623722e-02, +-1.771135475397649442e-02, +-1.770740275448703938e-02, +-1.770342224480497134e-02, +-1.769941323317304055e-02, +-1.769537572787976965e-02, +-1.769130973725940859e-02, +-1.768721526969173688e-02, +-1.768309233360235849e-02, +-1.767894093746243123e-02, +-1.767476108978883326e-02, +-1.767055279914391680e-02, +-1.766631607413576832e-02, +-1.766205092341797608e-02, +-1.765775735568966137e-02, +-1.765343537969552359e-02, +-1.764908500422585416e-02, +-1.764470623811641159e-02, +-1.764029909024833823e-02, +-1.763586356954847598e-02, +-1.763139968498889446e-02, +-1.762690744558728997e-02, +-1.762238686040660043e-02, +-1.761783793855539043e-02, +-1.761326068918746962e-02, +-1.760865512150195517e-02, +-1.760402124474350766e-02, +-1.759935906820196336e-02, +-1.759466860121255624e-02, +-1.758994985315581044e-02, +-1.758520283345750210e-02, +-1.758042755158874607e-02, +-1.757562401706576002e-02, +-1.757079223945016283e-02, +-1.756593222834866574e-02, +-1.756104399341314876e-02, +-1.755612754434075079e-02, +-1.755118289087374828e-02, +-1.754621004279955515e-02, +-1.754120900995061530e-02, +-1.753617980220466277e-02, +-1.753112242948417013e-02, +-1.752603690175703541e-02, +-1.752092322903609639e-02, +-1.751578142137904734e-02, +-1.751061148888871655e-02, +-1.750541344171291022e-02, +-1.750018729004447146e-02, +-1.749493304412094372e-02, +-1.748965071422507733e-02, +-1.748434031068436464e-02, +-1.747900184387130018e-02, +-1.747363532420303373e-02, +-1.746824076214183175e-02, +-1.746281816819461249e-02, +-1.745736755291314377e-02, +-1.745188892689397697e-02, +-1.744638230077848531e-02, +-1.744084768525267642e-02, +-1.743528509104743177e-02, +-1.742969452893824989e-02, +-1.742407600974525683e-02, +-1.741842954433336921e-02, +-1.741275514361211030e-02, +-1.740705281853564823e-02, +-1.740132258010265373e-02, +-1.739556443935652216e-02, +-1.738977840738512026e-02, +-1.738396449532086940e-02, +-1.737812271434071437e-02, +-1.737225307566618929e-02, +-1.736635559056316433e-02, +-1.736043027034214065e-02, +-1.735447712635785136e-02, +-1.734849617000961894e-02, +-1.734248741274103944e-02, +-1.733645086604021501e-02, +-1.733038654143945548e-02, +-1.732429445051562877e-02, +-1.731817460488962318e-02, +-1.731202701622677059e-02, +-1.730585169623669387e-02, +-1.729964865667316803e-02, +-1.729341790933431808e-02, +-1.728715946606231707e-02, +-1.728087333874372272e-02, +-1.727455953930896043e-02, +-1.726821807973294778e-02, +-1.726184897203437638e-02, +-1.725545222827630856e-02, +-1.724902786056558765e-02, +-1.724257588105344505e-02, +-1.723609630193481679e-02, +-1.722958913544889864e-02, +-1.722305439387860487e-02, +-1.721649208955109908e-02, +-1.720990223483720438e-02, +-1.720328484215185444e-02, +-1.719663992395382285e-02, +-1.718996749274562252e-02, +-1.718326756107377978e-02, +-1.717654014152856373e-02, +-1.716978524674403483e-02, +-1.716300288939800328e-02, +-1.715619308221209144e-02, +-1.714935583795163324e-02, +-1.714249116942571233e-02, +-1.713559908948691229e-02, +-1.712867961103164624e-02, +-1.712173274699990005e-02, +-1.711475851037527404e-02, +-1.710775691418492048e-02, +-1.710072797149966850e-02, +-1.709367169543377432e-02, +-1.708658809914494203e-02, +-1.707947719583462892e-02, +-1.707233899874737587e-02, +-1.706517352117147696e-02, +-1.705798077643858046e-02, +-1.705076077792367500e-02, +-1.704351353904506872e-02, +-1.703623907326456272e-02, +-1.702893739408707294e-02, +-1.702160851506096667e-02, +-1.701425244977789256e-02, +-1.700686921187266609e-02, +-1.699945881502330433e-02, +-1.699202127295115425e-02, +-1.698455659942053886e-02, +-1.697706480823909028e-02, +-1.696954591325744444e-02, +-1.696199992836945961e-02, +-1.695442686751195624e-02, +-1.694682674466482450e-02, +-1.693919957385103467e-02, +-1.693154536913643246e-02, +-1.692386414462997146e-02, +-1.691615591448340436e-02, +-1.690842069289151886e-02, +-1.690065849409192258e-02, +-1.689286933236520960e-02, +-1.688505322203461001e-02, +-1.687721017746635424e-02, +-1.686934021306933651e-02, +-1.686144334329523278e-02, +-1.685351958263860486e-02, +-1.684556894563656732e-02, +-1.683759144686887421e-02, +-1.682958710095810648e-02, +-1.682155592256938392e-02, +-1.681349792641035484e-02, +-1.680541312723140765e-02, +-1.679730153982535168e-02, +-1.678916317902764618e-02, +-1.678099805971609848e-02, +-1.677280619681116233e-02, +-1.676458760527551120e-02, +-1.675634230011443723e-02, +-1.674807029637552860e-02, +-1.673977160914881870e-02, +-1.673144625356654674e-02, +-1.672309424480339368e-02, +-1.671471559807617344e-02, +-1.670631032864414514e-02, +-1.669787845180857599e-02, +-1.668941998291315759e-02, +-1.668093493734362082e-02, +-1.667242333052790931e-02, +-1.666388517793597479e-02, +-1.665532049507991580e-02, +-1.664672929751400549e-02, +-1.663811160083428220e-02, +-1.662946742067918093e-02, +-1.662079677272873188e-02, +-1.661209967270519186e-02, +-1.660337613637253087e-02, +-1.659462617953678595e-02, +-1.658584981804569342e-02, +-1.657704706778898376e-02, +-1.656821794469812495e-02, +-1.655936246474645421e-02, +-1.655048064394879295e-02, +-1.654157249836207474e-02, +-1.653263804408455079e-02, +-1.652367729725643525e-02, +-1.651469027405938136e-02, +-1.650567699071680064e-02, +-1.649663746349360610e-02, +-1.648757170869620883e-02, +-1.647847974267267410e-02, +-1.646936158181244031e-02, +-1.646021724254643007e-02, +-1.645104674134709871e-02, +-1.644185009472828515e-02, +-1.643262731924504186e-02, +-1.642337843149396792e-02, +-1.641410344811279620e-02, +-1.640480238578081659e-02, +-1.639547526121823418e-02, +-1.638612209118672086e-02, +-1.637674289248908233e-02, +-1.636733768196938291e-02, +-1.635790647651257090e-02, +-1.634844929304501981e-02, +-1.633896614853398710e-02, +-1.632945705998767663e-02, +-1.631992204445571054e-02, +-1.631036111902823757e-02, +-1.630077430083673451e-02, +-1.629116160705336089e-02, +-1.628152305489128163e-02, +-1.627185866160448316e-02, +-1.626216844448782894e-02, +-1.625245242087699701e-02, +-1.624271060814842793e-02, +-1.623294302371923459e-02, +-1.622314968504741731e-02, +-1.621333060963140935e-02, +-1.620348581501056609e-02, +-1.619361531876465504e-02, +-1.618371913851409868e-02, +-1.617379729192000223e-02, +-1.616384979668378588e-02, +-1.615387667054753174e-02, +-1.614387793129369586e-02, +-1.613385359674521582e-02, +-1.612380368476539969e-02, +-1.611372821325804047e-02, +-1.610362720016705884e-02, +-1.609350066347690553e-02, +-1.608334862121206868e-02, +-1.607317109143756653e-02, +-1.606296809225837841e-02, +-1.605273964181978819e-02, +-1.604248575830724208e-02, +-1.603220645994635554e-02, +-1.602190176500254554e-02, +-1.601157169178166542e-02, +-1.600121625862925903e-02, +-1.599083548393112619e-02, +-1.598042938611287864e-02, +-1.596999798364005102e-02, +-1.595954129501814950e-02, +-1.594905933879239499e-02, +-1.593855213354806316e-02, +-1.592801969790994671e-02, +-1.591746205054282368e-02, +-1.590687921015113138e-02, +-1.589627119547900799e-02, +-1.588563802531019545e-02, +-1.587497971846816083e-02, +-1.586429629381582926e-02, +-1.585358777025592733e-02, +-1.584285416673037253e-02, +-1.583209550222097750e-02, +-1.582131179574867291e-02, +-1.581050306637412500e-02, +-1.579966933319706598e-02, +-1.578881061535684568e-02, +-1.577792693203204991e-02, +-1.576701830244061145e-02, +-1.575608474583967133e-02, +-1.574512628152562044e-02, +-1.573414292883412724e-02, +-1.572313470713984987e-02, +-1.571210163585675182e-02, +-1.570104373443771337e-02, +-1.568996102237482995e-02, +-1.567885351919921441e-02, +-1.566772124448095535e-02, +-1.565656421782896796e-02, +-1.564538245889134441e-02, +-1.563417598735477101e-02, +-1.562294482294501394e-02, +-1.561168898542659132e-02, +-1.560040849460290688e-02, +-1.558910337031592201e-02, +-1.557777363244641083e-02, +-1.556641930091388210e-02, +-1.555504039567633806e-02, +-1.554363693673062839e-02, +-1.553220894411201994e-02, +-1.552075643789444133e-02, +-1.550927943819013950e-02, +-1.549777796515005961e-02, +-1.548625203896336795e-02, +-1.547470167985786314e-02, +-1.546312690809937933e-02, +-1.545152774399265530e-02, +-1.543990420788007682e-02, +-1.542825632014278511e-02, +-1.541658410119981469e-02, +-1.540488757150868318e-02, +-1.539316675156477202e-02, +-1.538142166190180002e-02, +-1.536965232309161350e-02, +-1.535785875574378900e-02, +-1.534604098050632200e-02, +-1.533419901806486532e-02, +-1.532233288914322533e-02, +-1.531044261450292647e-02, +-1.529852821494358597e-02, +-1.528658971130249060e-02, +-1.527462712445489153e-02, +-1.526264047531350997e-02, +-1.525062978482909400e-02, +-1.523859507398987213e-02, +-1.522653636382189681e-02, +-1.521445367538869220e-02, +-1.520234702979153009e-02, +-1.519021644816905860e-02, +-1.517806195169743924e-02, +-1.516588356159050133e-02, +-1.515368129909921979e-02, +-1.514145518551216277e-02, +-1.512920524215527994e-02, +-1.511693149039182275e-02, +-1.510463395162215186e-02, +-1.509231264728415518e-02, +-1.507996759885266332e-02, +-1.506759882783988841e-02, +-1.505520635579497661e-02, +-1.504279020430454583e-02, +-1.503035039499181318e-02, +-1.501788694951744149e-02, +-1.500539988957872058e-02, +-1.499288923691015872e-02, +-1.498035501328299698e-02, +-1.496779724050548849e-02, +-1.495521594042271106e-02, +-1.494261113491640071e-02, +-1.492998284590529509e-02, +-1.491733109534457494e-02, +-1.490465590522640354e-02, +-1.489195729757931616e-02, +-1.487923529446864672e-02, +-1.486648991799631100e-02, +-1.485372119030070083e-02, +-1.484092913355657475e-02, +-1.482811376997547094e-02, +-1.481527512180498551e-02, +-1.480241321132928778e-02, +-1.478952806086900051e-02, +-1.477661969278088773e-02, +-1.476368812945792579e-02, +-1.475073339332957402e-02, +-1.473775550686125778e-02, +-1.472475449255452110e-02, +-1.471173037294716546e-02, +-1.469868317061311103e-02, +-1.468561290816223878e-02, +-1.467251960824029165e-02, +-1.465940329352919715e-02, +-1.464626398674660941e-02, +-1.463310171064617464e-02, +-1.461991648801739055e-02, +-1.460670834168559251e-02, +-1.459347729451165865e-02, +-1.458022336939244698e-02, +-1.456694658926028542e-02, +-1.455364697708340892e-02, +-1.454032455586535405e-02, +-1.452697934864535280e-02, +-1.451361137849831173e-02, +-1.450022066853449282e-02, +-1.448680724189954985e-02, +-1.447337112177453540e-02, +-1.445991233137604998e-02, +-1.444643089395574072e-02, +-1.443292683280082353e-02, +-1.441940017123363380e-02, +-1.440585093261177556e-02, +-1.439227914032783009e-02, +-1.437868481780981041e-02, +-1.436506798852047254e-02, +-1.435142867595789497e-02, +-1.433776690365508137e-02, +-1.432408269518001438e-02, +-1.431037607413544570e-02, +-1.429664706415930721e-02, +-1.428289568892402751e-02, +-1.426912197213722408e-02, +-1.425532593754086537e-02, +-1.424150760891200289e-02, +-1.422766701006224731e-02, +-1.421380416483767999e-02, +-1.419991909711928492e-02, +-1.418601183082229995e-02, +-1.417208238989672159e-02, +-1.415813079832696324e-02, +-1.414415708013187084e-02, +-1.413016125936457194e-02, +-1.411614336011275672e-02, +-1.410210340649818012e-02, +-1.408804142267714408e-02, +-1.407395743283991127e-02, +-1.405985146121114041e-02, +-1.404572353204955326e-02, +-1.403157366964812719e-02, +-1.401740189833354175e-02, +-1.400320824246689688e-02, +-1.398899272644306760e-02, +-1.397475537469078377e-02, +-1.396049621167304994e-02, +-1.394621526188624672e-02, +-1.393191254986102419e-02, +-1.391758810016139811e-02, +-1.390324193738543337e-02, +-1.388887408616463690e-02, +-1.387448457116433921e-02, +-1.386007341708347246e-02, +-1.384564064865453220e-02, +-1.383118629064330855e-02, +-1.381671036784942221e-02, +-1.380221290510560625e-02, +-1.378769392727832721e-02, +-1.377315345926698360e-02, +-1.375859152600467442e-02, +-1.374400815245765614e-02, +-1.372940336362522308e-02, +-1.371477718454015664e-02, +-1.370012964026804531e-02, +-1.368546075590781029e-02, +-1.367077055659137765e-02, +-1.365605906748374940e-02, +-1.364132631378269823e-02, +-1.362657232071916129e-02, +-1.361179711355667461e-02, +-1.359700071759197167e-02, +-1.358218315815420962e-02, +-1.356734446060557132e-02, +-1.355248465034087149e-02, +-1.353760375278762439e-02, +-1.352270179340582523e-02, +-1.350777879768827808e-02, +-1.349283479116004242e-02, +-1.347786979937889984e-02, +-1.346288384793513024e-02, +-1.344787696245109548e-02, +-1.343284916858191770e-02, +-1.341780049201468997e-02, +-1.340273095846912683e-02, +-1.338764059369676809e-02, +-1.337252942348170215e-02, +-1.335739747364003867e-02, +-1.334224477001998491e-02, +-1.332707133850175203e-02, +-1.331187720499768697e-02, +-1.329666239545188901e-02, +-1.328142693584070076e-02, +-1.326617085217200731e-02, +-1.325089417048580347e-02, +-1.323559691685373407e-02, +-1.322027911737936288e-02, +-1.320494079819767297e-02, +-1.318958198547544661e-02, +-1.317420270541114734e-02, +-1.315880298423478291e-02, +-1.314338284820792610e-02, +-1.312794232362341808e-02, +-1.311248143680587668e-02, +-1.309700021411093311e-02, +-1.308149868192596058e-02, +-1.306597686666929881e-02, +-1.305043479479069297e-02, +-1.303487249277116011e-02, +-1.301928998712295095e-02, +-1.300368730438903817e-02, +-1.298806447114404447e-02, +-1.297242151399305085e-02, +-1.295675845957262699e-02, +-1.294107533455003678e-02, +-1.292537216562339442e-02, +-1.290964897952192464e-02, +-1.289390580300527750e-02, +-1.287814266286432807e-02, +-1.286235958592015470e-02, +-1.284655659902496534e-02, +-1.283073372906137592e-02, +-1.281489100294269483e-02, +-1.279902844761251525e-02, +-1.278314609004530325e-02, +-1.276724395724559112e-02, +-1.275132207624865045e-02, +-1.273538047411969590e-02, +-1.271941917795480458e-02, +-1.270343821487982146e-02, +-1.268743761205112959e-02, +-1.267141739665496834e-02, +-1.265537759590810996e-02, +-1.263931823705697136e-02, +-1.262323934737830805e-02, +-1.260714095417888626e-02, +-1.259102308479507180e-02, +-1.257488576659357080e-02, +-1.255872902697052589e-02, +-1.254255289335227605e-02, +-1.252635739319449097e-02, +-1.251014255398286319e-02, +-1.249390840323270392e-02, +-1.247765496848898814e-02, +-1.246138227732595041e-02, +-1.244509035734774928e-02, +-1.242877923618772480e-02, +-1.241244894150878020e-02, +-1.239609950100320490e-02, +-1.237973094239277171e-02, +-1.236334329342817819e-02, +-1.234693658188955843e-02, +-1.233051083558638940e-02, +-1.231406608235701555e-02, +-1.229760235006908259e-02, +-1.228111966661931016e-02, +-1.226461805993336873e-02, +-1.224809755796575292e-02, +-1.223155818870015794e-02, +-1.221499998014884646e-02, +-1.219842296035318283e-02, +-1.218182715738289935e-02, +-1.216521259933711976e-02, +-1.214857931434294540e-02, +-1.213192733055660534e-02, +-1.211525667616257344e-02, +-1.209856737937414946e-02, +-1.208185946843277903e-02, +-1.206513297160870246e-02, +-1.204838791720047597e-02, +-1.203162433353474267e-02, +-1.201484224896680504e-02, +-1.199804169187986685e-02, +-1.198122269068571839e-02, +-1.196438527382388296e-02, +-1.194752946976233507e-02, +-1.193065530699695051e-02, +-1.191376281405171454e-02, +-1.189685201947843045e-02, +-1.187992295185699015e-02, +-1.186297563979493187e-02, +-1.184601011192779399e-02, +-1.182902639691886353e-02, +-1.181202452345920216e-02, +-1.179500452026730796e-02, +-1.177796641608961151e-02, +-1.176091023969991038e-02, +-1.174383601989950621e-02, +-1.172674378551738159e-02, +-1.170963356540983755e-02, +-1.169250538846062885e-02, +-1.167535928358065349e-02, +-1.165819527970839674e-02, +-1.164101340580924078e-02, +-1.162381369087602152e-02, +-1.160659616392862269e-02, +-1.158936085401416315e-02, +-1.157210779020644009e-02, +-1.155483700160669057e-02, +-1.153754851734272412e-02, +-1.152024236656960625e-02, +-1.150291857846880497e-02, +-1.148557718224899743e-02, +-1.146821820714541071e-02, +-1.145084168242017919e-02, +-1.143344763736179465e-02, +-1.141603610128540634e-02, +-1.139860710353298758e-02, +-1.138116067347269035e-02, +-1.136369684049926866e-02, +-1.134621563403395358e-02, +-1.132871708352434052e-02, +-1.131120121844404400e-02, +-1.129366806829336725e-02, +-1.127611766259840539e-02, +-1.125855003091169593e-02, +-1.124096520281181108e-02, +-1.122336320790347404e-02, +-1.120574407581712353e-02, +-1.118810783620959558e-02, +-1.117045451876314856e-02, +-1.115278415318636702e-02, +-1.113509676921323362e-02, +-1.111739239660384723e-02, +-1.109967106514395292e-02, +-1.108193280464460882e-02, +-1.106417764494304484e-02, +-1.104640561590150734e-02, +-1.102861674740815423e-02, +-1.101081106937646693e-02, +-1.099298861174537525e-02, +-1.097514940447898851e-02, +-1.095729347756709514e-02, +-1.093942086102430745e-02, +-1.092153158489083190e-02, +-1.090362567923173001e-02, +-1.088570317413738858e-02, +-1.086776409972322818e-02, +-1.084980848612975349e-02, +-1.083183636352204847e-02, +-1.081384776209063509e-02, +-1.079584271205050877e-02, +-1.077782124364152182e-02, +-1.075978338712851173e-02, +-1.074172917280080859e-02, +-1.072365863097259758e-02, +-1.070557179198238645e-02, +-1.068746868619355889e-02, +-1.066934934399367887e-02, +-1.065121379579500420e-02, +-1.063306207203415510e-02, +-1.061489420317213335e-02, +-1.059671021969403951e-02, +-1.057851015210951873e-02, +-1.056029403095214148e-02, +-1.054206188677988057e-02, +-1.052381375017454219e-02, +-1.050554965174220999e-02, +-1.048726962211295188e-02, +-1.046897369194051478e-02, +-1.045066189190294731e-02, +-1.043233425270170302e-02, +-1.041399080506237584e-02, +-1.039563157973416585e-02, +-1.037725660749005616e-02, +-1.035886591912639314e-02, +-1.034045954546351613e-02, +-1.032203751734484323e-02, +-1.030359986563774040e-02, +-1.028514662123257949e-02, +-1.026667781504339398e-02, +-1.024819347800749909e-02, +-1.022969364108554380e-02, +-1.021117833526109971e-02, +-1.019264759154133067e-02, +-1.017410144095614276e-02, +-1.015553991455876715e-02, +-1.013696304342548773e-02, +-1.011837085865523872e-02, +-1.009976339137028112e-02, +-1.008114067271533194e-02, +-1.006250273385831014e-02, +-1.004384960598953859e-02, +-1.002518132032226977e-02, +-1.000649790809241164e-02, +-9.987799400558489485e-03, +-9.969085829001335386e-03, +-9.950357224724629482e-03, +-9.931613619054152284e-03, +-9.912855043338447344e-03, +-9.894081528948005938e-03, +-9.875293107275912377e-03, +-9.856489809737434618e-03, +-9.837671667770050282e-03, +-9.818838712833177773e-03, +-9.799990976408410465e-03, +-9.781128489999464659e-03, +-9.762251285131957543e-03, +-9.743359393353604944e-03, +-9.724452846233588160e-03, +-9.705531675363386623e-03, +-9.686595912355783905e-03, +-9.667645588845745486e-03, +-9.648680736489459453e-03, +-9.629701386965011309e-03, +-9.610707571971964167e-03, +-9.591699323231480181e-03, +-9.572676672485911156e-03, +-9.553639651499294672e-03, +-9.534588292056726117e-03, +-9.515522625964882575e-03, +-9.496442685051590879e-03, +-9.477348501165668015e-03, +-9.458240106177448481e-03, +-9.439117531977875286e-03, +-9.419980810479360381e-03, +-9.400829973614939841e-03, +-9.381665053338776941e-03, +-9.362486081625882861e-03, +-9.343293090472172199e-03, +-9.324086111893984188e-03, +-9.304865177928774850e-03, +-9.285630320634308613e-03, +-9.266381572089310570e-03, +-9.247118964392614729e-03, +-9.227842529663939433e-03, +-9.208552300043268066e-03, +-9.189248307691150891e-03, +-9.169930584788082290e-03, +-9.150599163535335159e-03, +-9.131254076153909674e-03, +-9.111895354885390236e-03, +-9.092523031991426793e-03, +-9.073137139753403510e-03, +-9.053737710473196837e-03, +-9.034324776472174579e-03, +-9.014898370092056315e-03, +-8.995458523693997469e-03, +-8.976005269659277988e-03, +-8.956538640388792341e-03, +-8.937058668303262884e-03, +-8.917565385842684753e-03, +-8.898058825467130770e-03, +-8.878539019655734901e-03, +-8.859006000907455533e-03, +-8.839459801740548114e-03, +-8.819900454692719549e-03, +-8.800327992320867987e-03, +-8.780742447201035986e-03, +-8.761143851928903173e-03, +-8.741532239118802658e-03, +-8.721907641404522474e-03, +-8.702270091438781691e-03, +-8.682619621893398684e-03, +-8.662956265458793270e-03, +-8.643280054844736104e-03, +-8.623591022779373769e-03, +-8.603889202010049295e-03, +-8.584174625302327249e-03, +-8.564447325441103959e-03, +-8.544707335229238809e-03, +-8.524954687488633248e-03, +-8.505189415059283622e-03, +-8.485411550800034050e-03, +-8.465621127587728140e-03, +-8.445818178317873390e-03, +-8.426002735904224855e-03, +-8.406174833278483305e-03, +-8.386334503390954417e-03, +-8.366481779209608560e-03, +-8.346616693720949887e-03, +-8.326739279929057033e-03, +-8.306849570856242315e-03, +-8.286947599542713455e-03, +-8.267033399046518072e-03, +-8.247107002443292145e-03, +-8.227168442826745740e-03, +-8.207217753307908398e-03, +-8.187254967015722418e-03, +-8.167280117096623049e-03, +-8.147293236714668596e-03, +-8.127294359051052963e-03, +-8.107283517304822093e-03, +-8.087260744692056913e-03, +-8.067226074446131809e-03, +-8.047179539817881158e-03, +-8.027121174075231569e-03, +-8.007051010503368413e-03, +-7.986969082404185918e-03, +-7.966875423097111164e-03, +-7.946770065918023346e-03, +-7.926653044220233896e-03, +-7.906524391373305136e-03, +-7.886384140764444994e-03, +-7.866232325796768815e-03, +-7.846068979890680195e-03, +-7.825894136482753824e-03, +-7.805707829026655754e-03, +-7.785510090992048791e-03, +-7.765300955865480671e-03, +-7.745080457149757826e-03, +-7.724848628364201254e-03, +-7.704605503044195496e-03, +-7.684351114741364702e-03, +-7.664085497023903973e-03, +-7.643808683475683367e-03, +-7.623520707696985164e-03, +-7.603221603304055436e-03, +-7.582911403929171699e-03, +-7.562590143220210975e-03, +-7.542257854841404388e-03, +-7.521914572472308477e-03, +-7.501560329808573679e-03, +-7.481195160561457738e-03, +-7.460819098457947135e-03, +-7.440432177240281775e-03, +-7.420034430666719999e-03, +-7.399625892510508160e-03, +-7.379206596560763595e-03, +-7.358776576621550020e-03, +-7.338335866512534986e-03, +-7.317884500068672429e-03, +-7.297422511139778530e-03, +-7.276949933591225599e-03, +-7.256466801303080791e-03, +-7.235973148170709787e-03, +-7.215469008104380411e-03, +-7.194954415029406608e-03, +-7.174429402885596808e-03, +-7.153894005628027609e-03, +-7.133348257226048046e-03, +-7.112792191664221546e-03, +-7.092225842941224379e-03, +-7.071649245070711284e-03, +-7.051062432080680564e-03, +-7.030465438013818423e-03, +-7.009858296926808549e-03, +-6.989241042891146567e-03, +-6.968613709992304769e-03, +-6.947976332330040895e-03, +-6.927328944018472726e-03, +-6.906671579185752821e-03, +-6.886004271974252404e-03, +-6.865327056539993235e-03, +-6.844639967053426505e-03, +-6.823943037698457920e-03, +-6.803236302673193632e-03, +-6.782519796189426763e-03, +-6.761793552472758831e-03, +-6.741057605762217249e-03, +-6.720311990310826045e-03, +-6.699556740384780135e-03, +-6.678791890264230285e-03, +-6.658017474242326414e-03, +-6.637233526625955712e-03, +-6.616440081735372285e-03, +-6.595637173903749588e-03, +-6.574824837477985344e-03, +-6.554003106817655501e-03, +-6.533172016295824350e-03, +-6.512331600298514565e-03, +-6.491481893224831240e-03, +-6.470622929486534274e-03, +-6.449754743508699303e-03, +-6.428877369728783556e-03, +-6.407990842597502748e-03, +-6.387095196577822348e-03, +-6.366190466145719117e-03, +-6.345276685789682375e-03, +-6.324353890010849313e-03, +-6.303422113322511462e-03, +-6.282481390250861490e-03, +-6.261531755334033035e-03, +-6.240573243122936840e-03, +-6.219605888180272830e-03, +-6.198629725081321144e-03, +-6.177644788413524067e-03, +-6.156651112776061023e-03, +-6.135648732780627466e-03, +-6.114637683050421803e-03, +-6.093617998220934688e-03, +-6.072589712939445092e-03, +-6.051552861865101829e-03, +-6.030507479668482072e-03, +-6.009453601032365908e-03, +-5.988391260650675549e-03, +-5.967320493229400814e-03, +-5.946241333485589517e-03, +-5.925153816148130692e-03, +-5.904057975957164792e-03, +-5.882953847664382924e-03, +-5.861841466032467404e-03, +-5.840720865835424824e-03, +-5.819592081858598193e-03, +-5.798455148898430146e-03, +-5.777310101762481165e-03, +-5.756156975269044462e-03, +-5.734995804247780028e-03, +-5.713826623538822112e-03, +-5.692649467993617096e-03, +-5.671464372473889598e-03, +-5.650271371852516773e-03, +-5.629070501012880395e-03, +-5.607861794849109717e-03, +-5.586645288265549777e-03, +-5.565421016177508201e-03, +-5.544189013510278548e-03, +-5.522949315199881040e-03, +-5.501701956192677455e-03, +-5.480446971444948717e-03, +-5.459184395923670323e-03, +-5.437914264605480177e-03, +-5.416636612477626622e-03, +-5.395351474536889437e-03, +-5.374058885790424650e-03, +-5.352758881255182538e-03, +-5.331451495958100181e-03, +-5.310136764935582780e-03, +-5.288814723234285149e-03, +-5.267485405910030984e-03, +-5.246148848028845020e-03, +-5.224805084665774292e-03, +-5.203454150905816207e-03, +-5.182096081843294046e-03, +-5.160730912582045180e-03, +-5.139358678234943155e-03, +-5.117979413924608062e-03, +-5.096593154782445498e-03, +-5.075199935949364742e-03, +-5.053799792575441353e-03, +-5.032392759819448794e-03, +-5.010978872849630381e-03, +-4.989558166842720036e-03, +-4.968130676984833065e-03, +-4.946696438470415784e-03, +-4.925255486503078185e-03, +-4.903807856295050102e-03, +-4.882353583067279221e-03, +-4.860892702049025155e-03, +-4.839425248478555937e-03, +-4.817951257602151420e-03, +-4.796470764674866556e-03, +-4.774983804960050010e-03, +-4.753490413729475131e-03, +-4.731990626262907139e-03, +-4.710484477848356395e-03, +-4.688972003782327334e-03, +-4.667453239368918143e-03, +-4.645928219920616997e-03, +-4.624396980757784249e-03, +-4.602859557208805949e-03, +-4.581315984609565621e-03, +-4.559766298304214482e-03, +-4.538210533644186119e-03, +-4.516648725989067317e-03, +-4.495080910705576312e-03, +-4.473507123168390248e-03, +-4.451927398759561449e-03, +-4.430341772868698694e-03, +-4.408750280892468482e-03, +-4.387152958235357447e-03, +-4.365549840308626320e-03, +-4.343940962531142591e-03, +-4.322326360328908670e-03, +-4.300706069134712338e-03, +-4.279080124388829308e-03, +-4.257448561538065661e-03, +-4.235811416036646890e-03, +-4.214168723345175331e-03, +-4.192520518931425536e-03, +-4.170866838269836861e-03, +-4.149207716841637507e-03, +-4.127543190134368330e-03, +-4.105873293642606225e-03, +-4.084198062867004826e-03, +-4.062517533315010074e-03, +-4.040831740500390110e-03, +-4.019140719943366247e-03, +-3.997444507170107297e-03, +-3.975743137713491984e-03, +-3.954036647112221629e-03, +-3.932325070911099445e-03, +-3.910608444661275995e-03, +-3.888886803919734420e-03, +-3.867160184249558014e-03, +-3.845428621219344322e-03, +-3.823692150404007454e-03, +-3.801950807383761531e-03, +-3.780204627744995424e-03, +-3.758453647079166866e-03, +-3.736697900984186759e-03, +-3.714937425062635450e-03, +-3.693172254923196042e-03, +-3.671402426179488660e-03, +-3.649627974450992459e-03, +-3.627848935361996981e-03, +-3.606065344542405769e-03, +-3.584277237627209439e-03, +-3.562484650256635306e-03, +-3.540687618075756635e-03, +-3.518886176734660476e-03, +-3.497080361888759911e-03, +-3.475270209197868585e-03, +-3.453455754327044644e-03, +-3.431637032945958430e-03, +-3.409814080729176976e-03, +-3.387986933355546446e-03, +-3.366155626509014821e-03, +-3.344320195877605820e-03, +-3.322480677154186941e-03, +-3.300637106035949914e-03, +-3.278789518224591113e-03, +-3.256937949425756009e-03, +-3.235082435349835410e-03, +-3.213223011710948911e-03, +-3.191359714227837412e-03, +-3.169492578622852205e-03, +-3.147621640622728662e-03, +-3.125746935958193754e-03, +-3.103868500363494640e-03, +-3.081986369577246945e-03, +-3.060100579341347091e-03, +-3.038211165401958919e-03, +-3.016318163508273798e-03, +-2.994421609413993809e-03, +-2.972521538875508122e-03, +-2.950617987653334114e-03, +-2.928710991510945130e-03, +-2.906800586215695960e-03, +-2.884886807537778968e-03, +-2.862969691251030305e-03, +-2.841049273132378265e-03, +-2.819125588962036275e-03, +-2.797198674522935209e-03, +-2.775268565601549976e-03, +-2.753335297986971453e-03, +-2.731398907471193141e-03, +-2.709459429849349690e-03, +-2.687516900919249396e-03, +-2.665571356481552003e-03, +-2.643622832339279083e-03, +-2.621671364298553027e-03, +-2.599716988167575724e-03, +-2.577759739757449955e-03, +-2.555799654881599128e-03, +-2.533836769355984116e-03, +-2.511871118998538609e-03, +-2.489902739629954072e-03, +-2.467931667072678376e-03, +-2.445957937151804849e-03, +-2.423981585694049649e-03, +-2.402002648528548875e-03, +-2.380021161486426621e-03, +-2.358037160400390346e-03, +-2.336050681105485919e-03, +-2.314061759438115328e-03, +-2.292070431236793455e-03, +-2.270076732341617682e-03, +-2.248080698594448305e-03, +-2.226082365838378142e-03, +-2.204081769918501878e-03, +-2.182078946680896057e-03, +-2.160073931973540643e-03, +-2.138066761645286435e-03, +-2.116057471546628314e-03, +-2.094046097529193070e-03, +-2.072032675445898125e-03, +-2.050017241150415941e-03, +-2.027999830497973291e-03, +-2.005980479344310428e-03, +-1.983959223546590076e-03, +-1.961936098962394764e-03, +-1.939911141450494005e-03, +-1.917884386870420373e-03, +-1.895855871082057723e-03, +-1.873825629946438732e-03, +-1.851793699324693655e-03, +-1.829760115078873667e-03, +-1.807724913071373420e-03, +-1.785688129165129015e-03, +-1.763649799223089999e-03, +-1.741609959108988059e-03, +-1.719568644686317880e-03, +-1.697525891819250468e-03, +-1.675481736371602299e-03, +-1.653436214207623092e-03, +-1.631389361191468244e-03, +-1.609341213187352997e-03, +-1.587291806059161698e-03, +-1.565241175670620396e-03, +-1.543189357885471841e-03, +-1.521136388567065649e-03, +-1.499082303578541751e-03, +-1.477027138782278535e-03, +-1.454970930040693422e-03, +-1.432913713215211134e-03, +-1.410855524167173563e-03, +-1.388796398756812376e-03, +-1.366736372844046124e-03, +-1.344675482287922960e-03, +-1.322613762946817963e-03, +-1.300551250677888654e-03, +-1.278487981337858006e-03, +-1.256423990781994210e-03, +-1.234359314865018584e-03, +-1.212293989440078185e-03, +-1.190228050359539227e-03, +-1.168161533474560993e-03, +-1.146094474634672122e-03, +-1.124026909688575961e-03, +-1.101958874483096717e-03, +-1.079890404864000198e-03, +-1.057821536675425909e-03, +-1.035752305760085680e-03, +-1.013682747958715054e-03, +-9.916128991108651928e-04, +-9.695427950538750526e-04, +-9.474724716237876423e-04, +-9.254019646543111413e-04, +-9.033313099776182822e-04, +-8.812605434238032732e-04, +-8.591897008210676312e-04, +-8.371188179951682138e-04, +-8.150479307702149755e-04, +-7.929770749676436862e-04, +-7.709062864070065314e-04, +-7.488356009055456954e-04, +-7.267650542777762688e-04, +-7.046946823362778244e-04, +-6.826245208906604137e-04, +-6.605546057484833200e-04, +-6.384849727142247406e-04, +-6.164156575900727126e-04, +-5.943466961753794339e-04, +-5.722781242668547935e-04, +-5.502099776580061637e-04, +-5.281422921399542628e-04, +-5.060751035003785512e-04, +-4.840084475243281608e-04, +-4.619423599936713911e-04, +-4.398768766872827884e-04, +-4.178120333806134763e-04, +-3.957478658458857160e-04, +-3.736844098523962659e-04, +-3.516217011656058147e-04, +-3.295597755479367369e-04, +-3.074986687582248663e-04, +-2.854384165519072256e-04, +-2.633790546804737451e-04, +-2.413206188922688137e-04, +-2.192631449314505260e-04, +-1.972066685389172954e-04, +-1.751512254512648252e-04, +-1.530968514015902877e-04, +-1.310435821189428237e-04, +-1.089914533285118688e-04, +-8.694050075107673053e-05, +-6.489076010381005009e-05, +-4.284226709923738855e-05, +-2.079505744603922458e-05, + 1.250833151375232664e-06, + 2.329536899329433066e-05, + 4.533851438402404830e-05, + 6.738023363219152340e-05, + 8.942049105166315255e-05, + 1.114592509601265317e-04, + 1.334964776801325745e-04, + 1.555321355387829162e-04, + 1.775661888682799434e-04, + 1.995986020052473782e-04, + 2.216293392912770826e-04, + 2.436583650726217409e-04, + 2.656856437013540347e-04, + 2.877111395334610764e-04, + 3.097348169306217143e-04, + 3.317566402592792962e-04, + 3.537765738918067799e-04, + 3.757945822050893559e-04, + 3.978106295814399476e-04, + 4.198246804089077753e-04, + 4.418366990805907006e-04, + 4.638466499951907724e-04, + 4.858544975566996449e-04, + 5.078602061754396288e-04, + 5.298637402666478858e-04, + 5.518650642515134140e-04, + 5.738641425568702728e-04, + 5.958609396157403884e-04, + 6.178554198666633005e-04, + 6.398475477542320830e-04, + 6.618372877287918279e-04, + 6.838246042474796114e-04, + 7.058094617727976843e-04, + 7.277918247736681837e-04, + 7.497716577251097156e-04, + 7.717489251087874787e-04, + 7.937235914123426861e-04, + 8.156956211296869253e-04, + 8.376649787619191772e-04, + 8.596316288159106065e-04, + 8.815955358053473474e-04, + 9.035566642504130495e-04, + 9.255149786783480005e-04, + 9.474704436227517675e-04, + 9.694230236241482834e-04, + 9.913726832297918828e-04, + 1.013319386994210921e-03, + 1.035263099478529823e-03, + 1.057203785251027229e-03, + 1.079141408886807050e-03, + 1.101075934968854912e-03, + 1.123007328086608747e-03, + 1.144935552837002008e-03, + 1.166860573824163782e-03, + 1.188782355659939857e-03, + 1.210700862963248053e-03, + 1.232616060360345808e-03, + 1.254527912485775597e-03, + 1.276436383980926199e-03, + 1.298341439495092177e-03, + 1.320243043685138213e-03, + 1.342141161216070478e-03, + 1.364035756760345565e-03, + 1.385926794998413236e-03, + 1.407814240618421092e-03, + 1.429698058317235019e-03, + 1.451578212799031027e-03, + 1.473454668776348446e-03, + 1.495327390969746449e-03, + 1.517196344108373476e-03, + 1.539061492929290906e-03, + 1.560922802177767965e-03, + 1.582780236608183561e-03, + 1.604633760982641108e-03, + 1.626483340071977271e-03, + 1.648328938655467275e-03, + 1.670170521521375465e-03, + 1.692008053466251879e-03, + 1.713841499295512506e-03, + 1.735670823823216814e-03, + 1.757495991872651264e-03, + 1.779316968275612655e-03, + 1.801133717872984699e-03, + 1.822946205514410379e-03, + 1.844754396059325625e-03, + 1.866558254375572622e-03, + 1.888357745340392283e-03, + 1.910152833840165565e-03, + 1.931943484770902875e-03, + 1.953729663037613497e-03, + 1.975511333554585969e-03, + 1.997288461246290135e-03, + 2.019061011046001733e-03, + 2.040828947896777736e-03, + 2.062592236751224772e-03, + 2.084350842571964461e-03, + 2.106104730331009780e-03, + 2.127853865010295026e-03, + 2.149598211601356623e-03, + 2.171337735106371788e-03, + 2.193072400536763382e-03, + 2.214802172914206915e-03, + 2.236527017270337810e-03, + 2.258246898647295678e-03, + 2.279961782097036493e-03, + 2.301671632681887274e-03, + 2.323376415474243811e-03, + 2.345076095557573331e-03, + 2.366770638025157691e-03, + 2.388460007980382650e-03, + 2.410144170538256175e-03, + 2.431823090823511963e-03, + 2.453496733971766933e-03, + 2.475165065129211143e-03, + 2.496828049453152926e-03, + 2.518485652111332376e-03, + 2.540137838282466483e-03, + 2.561784573155976782e-03, + 2.583425821932947789e-03, + 2.605061549824784755e-03, + 2.626691722054211569e-03, + 2.648316303854984961e-03, + 2.669935260472408849e-03, + 2.691548557162661264e-03, + 2.713156159193142597e-03, + 2.734758031843300026e-03, + 2.756354140403304356e-03, + 2.777944450175027103e-03, + 2.799528926471755996e-03, + 2.821107534618703255e-03, + 2.842680239952394099e-03, + 2.864247007821139022e-03, + 2.885807803584781398e-03, + 2.907362592615673254e-03, + 2.928911340297323928e-03, + 2.950454012025387988e-03, + 2.971990573207376404e-03, + 2.993520989263196048e-03, + 3.015045225624464042e-03, + 3.036563247735056797e-03, + 3.058075021050820751e-03, + 3.079580511040548151e-03, + 3.101079683184762310e-03, + 3.122572502975950060e-03, + 3.144058935920133850e-03, + 3.165538947534934922e-03, + 3.187012503350744250e-03, + 3.208479568910442385e-03, + 3.229940109769853084e-03, + 3.251394091497180824e-03, + 3.272841479673459231e-03, + 3.294282239892306480e-03, + 3.315716337760888071e-03, + 3.337143738898601473e-03, + 3.358564408938008970e-03, + 3.379978313524587431e-03, + 3.401385418317257395e-03, + 3.422785688987703065e-03, + 3.444179091220910937e-03, + 3.465565590714860585e-03, + 3.486945153181554222e-03, + 3.508317744345631952e-03, + 3.529683329945242608e-03, + 3.551041875732364669e-03, + 3.572393347472114112e-03, + 3.593737710943303420e-03, + 3.615074931938143648e-03, + 3.636404976263214132e-03, + 3.657727809738129353e-03, + 3.679043398196518190e-03, + 3.700351707485724680e-03, + 3.721652703467370933e-03, + 3.742946352016648503e-03, + 3.764232619022868289e-03, + 3.785511470389195561e-03, + 3.806782872033574131e-03, + 3.828046789887564524e-03, + 3.849303189896810615e-03, + 3.870552038021341911e-03, + 3.891793300236135594e-03, + 3.913026942529818954e-03, + 3.934252930905605267e-03, + 3.955471231381520181e-03, + 3.976681809989803668e-03, + 3.997884632777417430e-03, + 4.019079665805737854e-03, + 4.040266875151556948e-03, + 4.061446226905724918e-03, + 4.082617687174139830e-03, + 4.103781222077472653e-03, + 4.124936797751653852e-03, + 4.146084380347258430e-03, + 4.167223936029985573e-03, + 4.188355430980424468e-03, + 4.209478831394975439e-03, + 4.230594103484564515e-03, + 4.251701213475438806e-03, + 4.272800127609562883e-03, + 4.293890812143847692e-03, + 4.314973233350779397e-03, + 4.336047357518033399e-03, + 4.357113150949518642e-03, + 4.378170579964052282e-03, + 4.399219610896247003e-03, + 4.420260210096341874e-03, + 4.441292343930602210e-03, + 4.462315978780768792e-03, + 4.483331081044509767e-03, + 4.504337617135199465e-03, + 4.525335553482919340e-03, + 4.546324856532743194e-03, + 4.567305492746362612e-03, + 4.588277428601225671e-03, + 4.609240630591651504e-03, + 4.630195065227478944e-03, + 4.651140699034903535e-03, + 4.672077498556809726e-03, + 4.693005430352122087e-03, + 4.713924460996265879e-03, + 4.734834557080960619e-03, + 4.755735685215117803e-03, + 4.776627812023570216e-03, + 4.797510904147987872e-03, + 4.818384928246657699e-03, + 4.839249850994933703e-03, + 4.860105639084618540e-03, + 4.880952259224494334e-03, + 4.901789678140020846e-03, + 4.922617862574298238e-03, + 4.943436779286736540e-03, + 4.964246395054063531e-03, + 4.985046676669979519e-03, + 5.005837590945721137e-03, + 5.026619104709400404e-03, + 5.047391184806261470e-03, + 5.068153798099616497e-03, + 5.088906911469410176e-03, + 5.109650491813269232e-03, + 5.130384506046228345e-03, + 5.151108921101159484e-03, + 5.171823703928179507e-03, + 5.192528821495187054e-03, + 5.213224240787542492e-03, + 5.233909928809146045e-03, + 5.254585852580657100e-03, + 5.275251979141182962e-03, + 5.295908275547380265e-03, + 5.316554708874550450e-03, + 5.337191246215300562e-03, + 5.357817854680573671e-03, + 5.378434501399254226e-03, + 5.399041153518796023e-03, + 5.419637778204464997e-03, + 5.440224342639732140e-03, + 5.460800814027034177e-03, + 5.481367159586552316e-03, + 5.501923346557068342e-03, + 5.522469342195739962e-03, + 5.543005113778620360e-03, + 5.563530628600005939e-03, + 5.584045853972895157e-03, + 5.604550757228780357e-03, + 5.625045305718575847e-03, + 5.645529466811278693e-03, + 5.666003207894977460e-03, + 5.686466496376537359e-03, + 5.706919299682093778e-03, + 5.727361585256454668e-03, + 5.747793320563338200e-03, + 5.768214473086286098e-03, + 5.788625010327247238e-03, + 5.809024899807665315e-03, + 5.829414109068094610e-03, + 5.849792605668711724e-03, + 5.870160357188756138e-03, + 5.890517331226943071e-03, + 5.910863495401373277e-03, + 5.931198817349982340e-03, + 5.951523264729925711e-03, + 5.971836805218064433e-03, + 5.992139406510743095e-03, + 6.012431036324673676e-03, + 6.032711662395660521e-03, + 6.052981252479547498e-03, + 6.073239774351930041e-03, + 6.093487195808675559e-03, + 6.113723484665281593e-03, + 6.133948608757155974e-03, + 6.154162535940437342e-03, + 6.174365234090751359e-03, + 6.194556671104060712e-03, + 6.214736814896505528e-03, + 6.234905633404801487e-03, + 6.255063094585676907e-03, + 6.275209166416313364e-03, + 6.295343816894143595e-03, + 6.315467014037719727e-03, + 6.335578725885439126e-03, + 6.355678920496567012e-03, + 6.375767565950810588e-03, + 6.395844630348944404e-03, + 6.415910081812118207e-03, + 6.435963888482356537e-03, + 6.456006018522341024e-03, + 6.476036440116279477e-03, + 6.496055121468635209e-03, + 6.516062030804963164e-03, + 6.536057136372216102e-03, + 6.556040406438070657e-03, + 6.576011809291445152e-03, + 6.595971313242361689e-03, + 6.615918886622379827e-03, + 6.635854497783998975e-03, + 6.655778115101214365e-03, + 6.675689706969129347e-03, + 6.695589241804978872e-03, + 6.715476688046819777e-03, + 6.735352014154412890e-03, + 6.755215188609061706e-03, + 6.775066179913994888e-03, + 6.794904956593811156e-03, + 6.814731487194703938e-03, + 6.834545740285320053e-03, + 6.854347684455518522e-03, + 6.874137288317198891e-03, + 6.893914520504119958e-03, + 6.913679349672336057e-03, + 6.933431744499611582e-03, + 6.953171673685896309e-03, + 6.972899105953032223e-03, + 6.992614010045724963e-03, + 7.012316354730262734e-03, + 7.032006108795355037e-03, + 7.051683241051989563e-03, + 7.071347720333897094e-03, + 7.090999515496799500e-03, + 7.110638595419069806e-03, + 7.130264929001380036e-03, + 7.149878485167618022e-03, + 7.169479232863750287e-03, + 7.189067141058071847e-03, + 7.208642178742607001e-03, + 7.228204314931359863e-03, + 7.247753518661362131e-03, + 7.267289758992440639e-03, + 7.286813005007635423e-03, + 7.306323225812601241e-03, + 7.325820390536159216e-03, + 7.345304468329947288e-03, + 7.364775428369357835e-03, + 7.384233239852312954e-03, + 7.403677872000125754e-03, + 7.423109294057280046e-03, + 7.442527475291901319e-03, + 7.461932384995082802e-03, + 7.481323992481471799e-03, + 7.500702267088930550e-03, + 7.520067178179504208e-03, + 7.539418695138059082e-03, + 7.558756787373235864e-03, + 7.578081424317589278e-03, + 7.597392575427052916e-03, + 7.616690210181418022e-03, + 7.635974298084050732e-03, + 7.655244808662760303e-03, + 7.674501711468615164e-03, + 7.693744976076823290e-03, + 7.712974572086463317e-03, + 7.732190469120977204e-03, + 7.751392636827514511e-03, + 7.770581044877480567e-03, + 7.789755662966224223e-03, + 7.808916460813988478e-03, + 7.828063408164680562e-03, + 7.847196474786460874e-03, + 7.866315630471906045e-03, + 7.885420845038597012e-03, + 7.904512088327889097e-03, + 7.923589330205723855e-03, + 7.942652540562962146e-03, + 7.961701689314688510e-03, + 7.980736746400778417e-03, + 7.999757681785549593e-03, + 8.018764465458717849e-03, + 8.037757067434137676e-03, + 8.056735457750699089e-03, + 8.075699606472072634e-03, + 8.094649483687174282e-03, + 8.113585059509553082e-03, + 8.132506304077925449e-03, + 8.151413187555814344e-03, + 8.170305680132518983e-03, + 8.189183752021845022e-03, + 8.208047373462933755e-03, + 8.226896514720458131e-03, + 8.245731146084119695e-03, + 8.264551237869056238e-03, + 8.283356760415545167e-03, + 8.302147684089995761e-03, + 8.320923979283635988e-03, + 8.339685616413461400e-03, + 8.358432565921909002e-03, + 8.377164798277370733e-03, + 8.395882283973603658e-03, + 8.414584993530174056e-03, + 8.433272897492211095e-03, + 8.451945966431279392e-03, + 8.470604170944263586e-03, + 8.489247481653873148e-03, + 8.507875869208848807e-03, + 8.526489304284451745e-03, + 8.545087757581358578e-03, + 8.563671199826435043e-03, + 8.582239601773001408e-03, + 8.600792934200202772e-03, + 8.619331167913572844e-03, + 8.637854273744659250e-03, + 8.656362222551974156e-03, + 8.674854985219760881e-03, + 8.693332532658869932e-03, + 8.711794835806504003e-03, + 8.730241865626662059e-03, + 8.748673593109591168e-03, + 8.767089989272247932e-03, + 8.785491025157934203e-03, + 8.803876671837370868e-03, + 8.822246900407290995e-03, + 8.840601681991400868e-03, + 8.858940987740222123e-03, + 8.877264788831331147e-03, + 8.895573056468939269e-03, + 8.913865761884090522e-03, + 8.932142876335499512e-03, + 8.950404371108224358e-03, + 8.968650217514662418e-03, + 8.986880386894246717e-03, + 9.005094850613843196e-03, + 9.023293580067245911e-03, + 9.041476546675652343e-03, + 9.059643721887311249e-03, + 9.077795077178605135e-03, + 9.095930584052303383e-03, + 9.114050214039218917e-03, + 9.132153938697283591e-03, + 9.150241729612601169e-03, + 9.168313558398227814e-03, + 9.186369396695053327e-03, + 9.204409216171528796e-03, + 9.222432988524102010e-03, + 9.240440685476655411e-03, + 9.258432278780837424e-03, + 9.276407740216664408e-03, + 9.294367041591485024e-03, + 9.312310154740745249e-03, + 9.330237051527771538e-03, + 9.348147703844237461e-03, + 9.366042083609507976e-03, + 9.383920162771250059e-03, + 9.401781913304983404e-03, + 9.419627307215060544e-03, + 9.437456316533468156e-03, + 9.455268913320716978e-03, + 9.473065069665444551e-03, + 9.490844757685003297e-03, + 9.508607949524915809e-03, + 9.526354617358942511e-03, + 9.544084733390011469e-03, + 9.561798269848998874e-03, + 9.579495198995533964e-03, + 9.597175493117759623e-03, + 9.614839124532814640e-03, + 9.632486065586250840e-03, + 9.650116288652473701e-03, + 9.667729766134476946e-03, + 9.685326470464793169e-03, + 9.702906374103956871e-03, + 9.720469449541951218e-03, + 9.738015669297342414e-03, + 9.755545005918400334e-03, + 9.773057431981806153e-03, + 9.790552920093578693e-03, + 9.808031442888720530e-03, + 9.825492973031741892e-03, + 9.842937483216105538e-03, + 9.860364946164443603e-03, + 9.877775334629225468e-03, + 9.895168621391755084e-03, + 9.912544779262899564e-03, + 9.929903781082896619e-03, + 9.947245599721696308e-03, + 9.964570208078534289e-03, + 9.981877579082271829e-03, + 9.999167685691236207e-03, + 1.001644050089392675e-02, + 1.003369599770796011e-02, + 1.005093414918091684e-02, + 1.006815492839002735e-02, + 1.008535830844263514e-02, + 1.010254426247566076e-02, + 1.011971276365598860e-02, + 1.013686378518028133e-02, + 1.015399730027577961e-02, + 1.017111328219914845e-02, + 1.018821170423718329e-02, + 1.020529253970713091e-02, + 1.022235576195610826e-02, + 1.023940134436142867e-02, + 1.025642926033064513e-02, + 1.027343948330181403e-02, + 1.029043198674302502e-02, + 1.030740674415283470e-02, + 1.032436372906002028e-02, + 1.034130291502431340e-02, + 1.035822427563539913e-02, + 1.037512778451367065e-02, + 1.039201341530997767e-02, + 1.040888114170604277e-02, + 1.042573093741398262e-02, + 1.044256277617644155e-02, + 1.045937663176741035e-02, + 1.047617247799107788e-02, + 1.049295028868260128e-02, + 1.050971003770790821e-02, + 1.052645169896404900e-02, + 1.054317524637878901e-02, + 1.055988065391092259e-02, + 1.057656789555001808e-02, + 1.059323694531734937e-02, + 1.060988777726465382e-02, + 1.062652036547495453e-02, + 1.064313468406242504e-02, + 1.065973070717270502e-02, + 1.067630840898236254e-02, + 1.069286776369937457e-02, + 1.070940874556286677e-02, + 1.072593132884390975e-02, + 1.074243548784432900e-02, + 1.075892119689764864e-02, + 1.077538843036900812e-02, + 1.079183716265487078e-02, + 1.080826736818335347e-02, + 1.082467902141408429e-02, + 1.084107209683859985e-02, + 1.085744656897986819e-02, + 1.087380241239261844e-02, + 1.089013960166325228e-02, + 1.090645811141045460e-02, + 1.092275791628421339e-02, + 1.093903899096659686e-02, + 1.095530131017150195e-02, + 1.097154484864505328e-02, + 1.098776958116507232e-02, + 1.100397548254157185e-02, + 1.102016252761638809e-02, + 1.103633069126409676e-02, + 1.105247994839080213e-02, + 1.106861027393493679e-02, + 1.108472164286745075e-02, + 1.110081403019125626e-02, + 1.111688741094165288e-02, + 1.113294176018620428e-02, + 1.114897705302526042e-02, + 1.116499326459113178e-02, + 1.118099037004878157e-02, + 1.119696834459557415e-02, + 1.121292716346164627e-02, + 1.122886680190948033e-02, + 1.124478723523427912e-02, + 1.126068843876362573e-02, + 1.127657038785848109e-02, + 1.129243305791195924e-02, + 1.130827642434989282e-02, + 1.132410046263104472e-02, + 1.133990514824740302e-02, + 1.135569045672335173e-02, + 1.137145636361624849e-02, + 1.138720284451673684e-02, + 1.140292987504810084e-02, + 1.141863743086678033e-02, + 1.143432548766213329e-02, + 1.144999402115711405e-02, + 1.146564300710730885e-02, + 1.148127242130163317e-02, + 1.149688223956223804e-02, + 1.151247243774461415e-02, + 1.152804299173743226e-02, + 1.154359387746273224e-02, + 1.155912507087570630e-02, + 1.157463654796552985e-02, + 1.159012828475425826e-02, + 1.160560025729756237e-02, + 1.162105244168476319e-02, + 1.163648481403865495e-02, + 1.165189735051555195e-02, + 1.166729002730528854e-02, + 1.168266282063184190e-02, + 1.169801570675242826e-02, + 1.171334866195810308e-02, + 1.172866166257362924e-02, + 1.174395468495786563e-02, + 1.175922770550321197e-02, + 1.177448070063602005e-02, + 1.178971364681645484e-02, + 1.180492652053908263e-02, + 1.182011929833203662e-02, + 1.183529195675740719e-02, + 1.185044447241141718e-02, + 1.186557682192483643e-02, + 1.188068898196198084e-02, + 1.189578092922148264e-02, + 1.191085264043647077e-02, + 1.192590409237391687e-02, + 1.194093526183527890e-02, + 1.195594612565609172e-02, + 1.197093666070677721e-02, + 1.198590684389159305e-02, + 1.200085665214939597e-02, + 1.201578606245343357e-02, + 1.203069505181165316e-02, + 1.204558359726628364e-02, + 1.206045167589415122e-02, + 1.207529926480663436e-02, + 1.209012634115009567e-02, + 1.210493288210513774e-02, + 1.211971886488717558e-02, + 1.213448426674632215e-02, + 1.214922906496766070e-02, + 1.216395323687084577e-02, + 1.217865675981030793e-02, + 1.219333961117580016e-02, + 1.220800176839150625e-02, + 1.222264320891666527e-02, + 1.223726391024550220e-02, + 1.225186384990739619e-02, + 1.226644300546664811e-02, + 1.228100135452251350e-02, + 1.229553887470938300e-02, + 1.231005554369732531e-02, + 1.232455133919074970e-02, + 1.233902623892979729e-02, + 1.235348022068956039e-02, + 1.236791326228089093e-02, + 1.238232534154953303e-02, + 1.239671643637663655e-02, + 1.241108652467873448e-02, + 1.242543558440798238e-02, + 1.243976359355175240e-02, + 1.245407053013279641e-02, + 1.246835637220989300e-02, + 1.248262109787686737e-02, + 1.249686468526330606e-02, + 1.251108711253430886e-02, + 1.252528835789086005e-02, + 1.253946839956942942e-02, + 1.255362721584224808e-02, + 1.256776478501711418e-02, + 1.258188108543811974e-02, + 1.259597609548469485e-02, + 1.261004979357226684e-02, + 1.262410215815203303e-02, + 1.263813316771139270e-02, + 1.265214280077340755e-02, + 1.266613103589707585e-02, + 1.268009785167783197e-02, + 1.269404322674676580e-02, + 1.270796713977108243e-02, + 1.272186956945411083e-02, + 1.273575049453549816e-02, + 1.274960989379085932e-02, + 1.276344774603211697e-02, + 1.277726403010717195e-02, + 1.279105872490087469e-02, + 1.280483180933355072e-02, + 1.281858326236234163e-02, + 1.283231306298049032e-02, + 1.284602119021808174e-02, + 1.285970762314118943e-02, + 1.287337234085245488e-02, + 1.288701532249102340e-02, + 1.290063654723265160e-02, + 1.291423599428959297e-02, + 1.292781364291049895e-02, + 1.294136947238113712e-02, + 1.295490346202342151e-02, + 1.296841559119615503e-02, + 1.298190583929474673e-02, + 1.299537418575157782e-02, + 1.300882061003558535e-02, + 1.302224509165256228e-02, + 1.303564761014501874e-02, + 1.304902814509278745e-02, + 1.306238667611206959e-02, + 1.307572318285629351e-02, + 1.308903764501559083e-02, + 1.310233004231747128e-02, + 1.311560035452612009e-02, + 1.312884856144294968e-02, + 1.314207464290620929e-02, + 1.315527857879175526e-02, + 1.316846034901216975e-02, + 1.318161993351721177e-02, + 1.319475731229411385e-02, + 1.320787246536709106e-02, + 1.322096537279776260e-02, + 1.323403601468477186e-02, + 1.324708437116471800e-02, + 1.326011042241086180e-02, + 1.327311414863415785e-02, + 1.328609553008279834e-02, + 1.329905454704284444e-02, + 1.331199117983744400e-02, + 1.332490540882733804e-02, + 1.333779721441072201e-02, + 1.335066657702355802e-02, + 1.336351347713926087e-02, + 1.337633789526870148e-02, + 1.338913981196088870e-02, + 1.340191920780206720e-02, + 1.341467606341634373e-02, + 1.342741035946545120e-02, + 1.344012207664908518e-02, + 1.345281119570463160e-02, + 1.346547769740727256e-02, + 1.347812156256996199e-02, + 1.349074277204388890e-02, + 1.350334130671777301e-02, + 1.351591714751842338e-02, + 1.352847027541052849e-02, + 1.354100067139698930e-02, + 1.355350831651849601e-02, + 1.356599319185397209e-02, + 1.357845527852007649e-02, + 1.359089455767218714e-02, + 1.360331101050333939e-02, + 1.361570461824476198e-02, + 1.362807536216612513e-02, + 1.364042322357514672e-02, + 1.365274818381776931e-02, + 1.366505022427825025e-02, + 1.367732932637928146e-02, + 1.368958547158171356e-02, + 1.370181864138485077e-02, + 1.371402881732621849e-02, + 1.372621598098214789e-02, + 1.373838011396704903e-02, + 1.375052119793394347e-02, + 1.376263921457424044e-02, + 1.377473414561813415e-02, + 1.378680597283409200e-02, + 1.379885467802935244e-02, + 1.381088024304945837e-02, + 1.382288264977916091e-02, + 1.383486188014138203e-02, + 1.384681791609778008e-02, + 1.385875073964897182e-02, + 1.387066033283414386e-02, + 1.388254667773130419e-02, + 1.389440975645700634e-02, + 1.390624955116720983e-02, + 1.391806604405624627e-02, + 1.392985921735744557e-02, + 1.394162905334293996e-02, + 1.395337553432402476e-02, + 1.396509864265081322e-02, + 1.397679836071239433e-02, + 1.398847467093671838e-02, + 1.400012755579122491e-02, + 1.401175699778197704e-02, + 1.402336297945435024e-02, + 1.403494548339247368e-02, + 1.404650449222021730e-02, + 1.405803998860019437e-02, + 1.406955195523423505e-02, + 1.408104037486350955e-02, + 1.409250523026837378e-02, + 1.410394650426845080e-02, + 1.411536417972248172e-02, + 1.412675823952901089e-02, + 1.413812866662543521e-02, + 1.414947544398870334e-02, + 1.416079855463510222e-02, + 1.417209798162047223e-02, + 1.418337370804002504e-02, + 1.419462571702835053e-02, + 1.420585399175951224e-02, + 1.421705851544743070e-02, + 1.422823927134517392e-02, + 1.423939624274552299e-02, + 1.425052941298092166e-02, + 1.426163876542336888e-02, + 1.427272428348442396e-02, + 1.428378595061531586e-02, + 1.429482375030729883e-02, + 1.430583766609092554e-02, + 1.431682768153665596e-02, + 1.432779378025465962e-02, + 1.433873594589500991e-02, + 1.434965416214752619e-02, + 1.436054841274182065e-02, + 1.437141868144724624e-02, + 1.438226495207349347e-02, + 1.439308720846975247e-02, + 1.440388543452519182e-02, + 1.441465961416886835e-02, + 1.442540973137025617e-02, + 1.443613577013833429e-02, + 1.444683771452230994e-02, + 1.445751554861144685e-02, + 1.446816925653509472e-02, + 1.447879882246257133e-02, + 1.448940423060338448e-02, + 1.449998546520736911e-02, + 1.451054251056427616e-02, + 1.452107535100410386e-02, + 1.453158397089705442e-02, + 1.454206835465369878e-02, + 1.455252848672471816e-02, + 1.456296435160111223e-02, + 1.457337593381408981e-02, + 1.458376321793547654e-02, + 1.459412618857717017e-02, + 1.460446483039154648e-02, + 1.461477912807123206e-02, + 1.462506906634958651e-02, + 1.463533463000010575e-02, + 1.464557580383668914e-02, + 1.465579257271415990e-02, + 1.466598492152744980e-02, + 1.467615283521212302e-02, + 1.468629629874420965e-02, + 1.469641529714054221e-02, + 1.470650981545833409e-02, + 1.471657983879549013e-02, + 1.472662535229040705e-02, + 1.473664634112248177e-02, + 1.474664279051157365e-02, + 1.475661468571809118e-02, + 1.476656201204328347e-02, + 1.477648475482940676e-02, + 1.478638289945911378e-02, + 1.479625643135599675e-02, + 1.480610533598439478e-02, + 1.481592959884960731e-02, + 1.482572920549765638e-02, + 1.483550414151535782e-02, + 1.484525439253077048e-02, + 1.485497994421244340e-02, + 1.486468078227011491e-02, + 1.487435689245433269e-02, + 1.488400826055675738e-02, + 1.489363487240992837e-02, + 1.490323671388747544e-02, + 1.491281377090391061e-02, + 1.492236602941510518e-02, + 1.493189347541775021e-02, + 1.494139609494971564e-02, + 1.495087387408986640e-02, + 1.496032679895845097e-02, + 1.496975485571665383e-02, + 1.497915803056690254e-02, + 1.498853630975293533e-02, + 1.499788967955955309e-02, + 1.500721812631283965e-02, + 1.501652163638008720e-02, + 1.502580019616998538e-02, + 1.503505379213242871e-02, + 1.504428241075866229e-02, + 1.505348603858110319e-02, + 1.506266466217389896e-02, + 1.507181826815221296e-02, + 1.508094684317266669e-02, + 1.509005037393331382e-02, + 1.509912884717383962e-02, + 1.510818224967511170e-02, + 1.511721056825954604e-02, + 1.512621378979103065e-02, + 1.513519190117502619e-02, + 1.514414488935851913e-02, + 1.515307274132983613e-02, + 1.516197544411921130e-02, + 1.517085298479815131e-02, + 1.517970535047993667e-02, + 1.518853252831929915e-02, + 1.519733450551282589e-02, + 1.520611126929864027e-02, + 1.521486280695641576e-02, + 1.522358910580768124e-02, + 1.523229015321573947e-02, + 1.524096593658536870e-02, + 1.524961644336330496e-02, + 1.525824166103787773e-02, + 1.526684157713937944e-02, + 1.527541617923976192e-02, + 1.528396545495282373e-02, + 1.529248939193414078e-02, + 1.530098797788133000e-02, + 1.530946120053362780e-02, + 1.531790904767232203e-02, + 1.532633150712054901e-02, + 1.533472856674332994e-02, + 1.534310021444769585e-02, + 1.535144643818244815e-02, + 1.535976722593879705e-02, + 1.536806256574934845e-02, + 1.537633244568909971e-02, + 1.538457685387486715e-02, + 1.539279577846579088e-02, + 1.540098920766278662e-02, + 1.540915712970893428e-02, + 1.541729953288933225e-02, + 1.542541640553133676e-02, + 1.543350773600434163e-02, + 1.544157351271968452e-02, + 1.544961372413129752e-02, + 1.545762835873485362e-02, + 1.546561740506840164e-02, + 1.547358085171220143e-02, + 1.548151868728865448e-02, + 1.548943090046246696e-02, + 1.549731747994049016e-02, + 1.550517841447188357e-02, + 1.551301369284824143e-02, + 1.552082330390326149e-02, + 1.552860723651298090e-02, + 1.553636547959573976e-02, + 1.554409802211238929e-02, + 1.555180485306595188e-02, + 1.555948596150189336e-02, + 1.556714133650795653e-02, + 1.557477096721456185e-02, + 1.558237484279429222e-02, + 1.558995295246225557e-02, + 1.559750528547598075e-02, + 1.560503183113550428e-02, + 1.561253257878328186e-02, + 1.562000751780424392e-02, + 1.562745663762599505e-02, + 1.563487992771849661e-02, + 1.564227737759418119e-02, + 1.564964897680812608e-02, + 1.565699471495816952e-02, + 1.566431458168440760e-02, + 1.567160856666970081e-02, + 1.567887665963936875e-02, + 1.568611885036162376e-02, + 1.569333512864705404e-02, + 1.570052548434898443e-02, + 1.570768990736334109e-02, + 1.571482838762900541e-02, + 1.572194091512714442e-02, + 1.572902747988188382e-02, + 1.573608807196002699e-02, + 1.574312268147104107e-02, + 1.575013129856726174e-02, + 1.575711391344353576e-02, + 1.576407051633781781e-02, + 1.577100109753062571e-02, + 1.577790564734528680e-02, + 1.578478415614798305e-02, + 1.579163661434776489e-02, + 1.579846301239645409e-02, + 1.580526334078868542e-02, + 1.581203759006198639e-02, + 1.581878575079689181e-02, + 1.582550781361667658e-02, + 1.583220376918756389e-02, + 1.583887360821848930e-02, + 1.584551732146175645e-02, + 1.585213489971224604e-02, + 1.585872633380786684e-02, + 1.586529161462958346e-02, + 1.587183073310121512e-02, + 1.587834368018967504e-02, + 1.588483044690470677e-02, + 1.589129102429934215e-02, + 1.589772540346938781e-02, + 1.590413357555375481e-02, + 1.591051553173442740e-02, + 1.591687126323651155e-02, + 1.592320076132798176e-02, + 1.592950401732011814e-02, + 1.593578102256704848e-02, + 1.594203176846639008e-02, + 1.594825624645849690e-02, + 1.595445444802694526e-02, + 1.596062636469855814e-02, + 1.596677198804325598e-02, + 1.597289130967407753e-02, + 1.597898432124720061e-02, + 1.598505101446215382e-02, + 1.599109138106154585e-02, + 1.599710541283112103e-02, + 1.600309310159990853e-02, + 1.600905443924023272e-02, + 1.601498941766754669e-02, + 1.602089802884059874e-02, + 1.602678026476127629e-02, + 1.603263611747502218e-02, + 1.603846557907029347e-02, + 1.604426864167891181e-02, + 1.605004529747592820e-02, + 1.605579553867991782e-02, + 1.606151935755253252e-02, + 1.606721674639883385e-02, + 1.607288769756725147e-02, + 1.607853220344961434e-02, + 1.608415025648094604e-02, + 1.608974184913977007e-02, + 1.609530697394791557e-02, + 1.610084562347070813e-02, + 1.610635779031673737e-02, + 1.611184346713797830e-02, + 1.611730264662998222e-02, + 1.612273532153160258e-02, + 1.612814148462514072e-02, + 1.613352112873630423e-02, + 1.613887424673442553e-02, + 1.614420083153209062e-02, + 1.614950087608541668e-02, + 1.615477437339400343e-02, + 1.616002131650097137e-02, + 1.616524169849293049e-02, + 1.617043551249987623e-02, + 1.617560275169555029e-02, + 1.618074340929699997e-02, + 1.618585747856485929e-02, + 1.619094495280330726e-02, + 1.619600582536014771e-02, + 1.620104008962656994e-02, + 1.620604773903750254e-02, + 1.621102876707124912e-02, + 1.621598316724990468e-02, + 1.622091093313905025e-02, + 1.622581205834781187e-02, + 1.623068653652885024e-02, + 1.623553436137875963e-02, + 1.624035552663738793e-02, + 1.624515002608836051e-02, + 1.624991785355892754e-02, + 1.625465900292002649e-02, + 1.625937346808610171e-02, + 1.626406124301539580e-02, + 1.626872232170971030e-02, + 1.627335669821462771e-02, + 1.627796436661922697e-02, + 1.628254532105638877e-02, + 1.628709955570271234e-02, + 1.629162706477841824e-02, + 1.629612784254743860e-02, + 1.630060188331737200e-02, + 1.630504918143969861e-02, + 1.630946973130943320e-02, + 1.631386352736545128e-02, + 1.631823056409019077e-02, + 1.632257083601005090e-02, + 1.632688433769498640e-02, + 1.633117106375878147e-02, + 1.633543100885910190e-02, + 1.633966416769712729e-02, + 1.634387053501799511e-02, + 1.634805010561051625e-02, + 1.635220287430742131e-02, + 1.635632883598503451e-02, + 1.636042798556366570e-02, + 1.636450031800722876e-02, + 1.636854582832360586e-02, + 1.637256451156450174e-02, + 1.637655636282528068e-02, + 1.638052137724519200e-02, + 1.638445955000739779e-02, + 1.638837087633880293e-02, + 1.639225535151020430e-02, + 1.639611297083613112e-02, + 1.639994372967508787e-02, + 1.640374762342942591e-02, + 1.640752464754517692e-02, + 1.641127479751247273e-02, + 1.641499806886516713e-02, + 1.641869445718103712e-02, + 1.642236395808163371e-02, + 1.642600656723260458e-02, + 1.642962228034324651e-02, + 1.643321109316683154e-02, + 1.643677300150054449e-02, + 1.644030800118550725e-02, + 1.644381608810666778e-02, + 1.644729725819287294e-02, + 1.645075150741695524e-02, + 1.645417883179554897e-02, + 1.645757922738929832e-02, + 1.646095269030274644e-02, + 1.646429921668430413e-02, + 1.646761880272643377e-02, + 1.647091144466537524e-02, + 1.647417713878135750e-02, + 1.647741588139865071e-02, + 1.648062766888531636e-02, + 1.648381249765345016e-02, + 1.648697036415902595e-02, + 1.649010126490206563e-02, + 1.649320519642645186e-02, + 1.649628215532012235e-02, + 1.649933213821476105e-02, + 1.650235514178632901e-02, + 1.650535116275450923e-02, + 1.650832019788305016e-02, + 1.651126224397960612e-02, + 1.651417729789592809e-02, + 1.651706535652763472e-02, + 1.651992641681424706e-02, + 1.652276047573949733e-02, + 1.652556753033093684e-02, + 1.652834757766012685e-02, + 1.653110061484258306e-02, + 1.653382663903790392e-02, + 1.653652564744961806e-02, + 1.653919763732524667e-02, + 1.654184260595623415e-02, + 1.654446055067819096e-02, + 1.654705146887060219e-02, + 1.654961535795701488e-02, + 1.655215221540482992e-02, + 1.655466203872563852e-02, + 1.655714482547498284e-02, + 1.655960057325232132e-02, + 1.656202927970118477e-02, + 1.656443094250915210e-02, + 1.656680555940774624e-02, + 1.656915312817250005e-02, + 1.657147364662300143e-02, + 1.657376711262281699e-02, + 1.657603352407949551e-02, + 1.657827287894464083e-02, + 1.658048517521393261e-02, + 1.658267041092688701e-02, + 1.658482858416724173e-02, + 1.658695969306257442e-02, + 1.658906373578456633e-02, + 1.659114071054896070e-02, + 1.659319061561539271e-02, + 1.659521344928758385e-02, + 1.659720920991328633e-02, + 1.659917789588421372e-02, + 1.660111950563618669e-02, + 1.660303403764890745e-02, + 1.660492149044625124e-02, + 1.660678186259596789e-02, + 1.660861515270990740e-02, + 1.661042135944388112e-02, + 1.661220048149779013e-02, + 1.661395251761546912e-02, + 1.661567746658481823e-02, + 1.661737532723768507e-02, + 1.661904609845007291e-02, + 1.662068977914177639e-02, + 1.662230636827677008e-02, + 1.662389586486302459e-02, + 1.662545826795246498e-02, + 1.662699357664099500e-02, + 1.662850179006863591e-02, + 1.662998290741932519e-02, + 1.663143692792097908e-02, + 1.663286385084563820e-02, + 1.663426367550920396e-02, + 1.663563640127165011e-02, + 1.663698202753696384e-02, + 1.663830055375310063e-02, + 1.663959197941200854e-02, + 1.664085630404959354e-02, + 1.664209352724582355e-02, + 1.664330364862458972e-02, + 1.664448666785384862e-02, + 1.664564258464544186e-02, + 1.664677139875527651e-02, + 1.664787310998315506e-02, + 1.664894771817290037e-02, + 1.664999522321237990e-02, + 1.665101562503332883e-02, + 1.665200892361150958e-02, + 1.665297511896660088e-02, + 1.665391421116231563e-02, + 1.665482620030625180e-02, + 1.665571108655005891e-02, + 1.665656887008923337e-02, + 1.665739955116332313e-02, + 1.665820313005572997e-02, + 1.665897960709391765e-02, + 1.665972898264922106e-02, + 1.666045125713689831e-02, + 1.666114643101619663e-02, + 1.666181450479026563e-02, + 1.666245547900615381e-02, + 1.666306935425495434e-02, + 1.666365613117157599e-02, + 1.666421581043486463e-02, + 1.666474839276758588e-02, + 1.666525387893643545e-02, + 1.666573226975199412e-02, + 1.666618356606878668e-02, + 1.666660776878518824e-02, + 1.666700487884351101e-02, + 1.666737489722993834e-02, + 1.666771782497454210e-02, + 1.666803366315125837e-02, + 1.666832241287791866e-02, + 1.666858407531628117e-02, + 1.666881865167189197e-02, + 1.666902614319419954e-02, + 1.666920655117653041e-02, + 1.666935987695602681e-02, + 1.666948612191370901e-02, + 1.666958528747444768e-02, + 1.666965737510692908e-02, + 1.666970238632367596e-02, + 1.666972032268108916e-02, + 1.666971118577932967e-02, + 1.666967497726246084e-02, + 1.666961169881830962e-02, + 1.666952135217847700e-02, + 1.666940393911843163e-02, + 1.666925946145742313e-02, + 1.666908792105847859e-02, + 1.666888931982846850e-02, + 1.666866365971793676e-02, + 1.666841094272129842e-02, + 1.666813117087674254e-02, + 1.666782434626618709e-02, + 1.666749047101524425e-02, + 1.666712954729341820e-02, + 1.666674157731388647e-02, + 1.666632656333353821e-02, + 1.666588450765304694e-02, + 1.666541541261678042e-02, + 1.666491928061285613e-02, + 1.666439611407311353e-02, + 1.666384591547304464e-02, + 1.666326868733188776e-02, + 1.666266443221254764e-02, + 1.666203315272170651e-02, + 1.666137485150956388e-02, + 1.666068953127012794e-02, + 1.665997719474106992e-02, + 1.665923784470363378e-02, + 1.665847148398278549e-02, + 1.665767811544710542e-02, + 1.665685774200884040e-02, + 1.665601036662386208e-02, + 1.665513599229163921e-02, + 1.665423462205528962e-02, + 1.665330625900150394e-02, + 1.665235090626062189e-02, + 1.665136856700653173e-02, + 1.665035924445674304e-02, + 1.664932294187232431e-02, + 1.664825966255792031e-02, + 1.664716940986170693e-02, + 1.664605218717547103e-02, + 1.664490799793449591e-02, + 1.664373684561765501e-02, + 1.664253873374730436e-02, + 1.664131366588930336e-02, + 1.664006164565307727e-02, + 1.663878267669157557e-02, + 1.663747676270110540e-02, + 1.663614390742168547e-02, + 1.663478411463659157e-02, + 1.663339738817270347e-02, + 1.663198373190028639e-02, + 1.663054314973316447e-02, + 1.662907564562844664e-02, + 1.662758122358682505e-02, + 1.662605988765231482e-02, + 1.662451164191245875e-02, + 1.662293649049805672e-02, + 1.662133443758338769e-02, + 1.661970548738615425e-02, + 1.661804964416738542e-02, + 1.661636691223148526e-02, + 1.661465729592621204e-02, + 1.661292079964270599e-02, + 1.661115742781543725e-02, + 1.660936718492217815e-02, + 1.660755007548403439e-02, + 1.660570610406539999e-02, + 1.660383527527408212e-02, + 1.660193759376096811e-02, + 1.660001306422044867e-02, + 1.659806169139006402e-02, + 1.659608348005064266e-02, + 1.659407843502620425e-02, + 1.659204656118409490e-02, + 1.658998786343485535e-02, + 1.658790234673225908e-02, + 1.658579001607324299e-02, + 1.658365087649795247e-02, + 1.658148493308978996e-02, + 1.657929219097519294e-02, + 1.657707265532392532e-02, + 1.657482633134878952e-02, + 1.657255322430578603e-02, + 1.657025333949397813e-02, + 1.656792668225565493e-02, + 1.656557325797612321e-02, + 1.656319307208381497e-02, + 1.656078613005031175e-02, + 1.655835243739010865e-02, + 1.655589199966098560e-02, + 1.655340482246354245e-02, + 1.655089091144161181e-02, + 1.654835027228193645e-02, + 1.654578291071431492e-02, + 1.654318883251153921e-02, + 1.654056804348939466e-02, + 1.653792054950669818e-02, + 1.653524635646518373e-02, + 1.653254547030953356e-02, + 1.652981789702731921e-02, + 1.652706364264920971e-02, + 1.652428271324868012e-02, + 1.652147511494208437e-02, + 1.651864085388871084e-02, + 1.651577993629081004e-02, + 1.651289236839337954e-02, + 1.650997815648432357e-02, + 1.650703730689438015e-02, + 1.650406982599710720e-02, + 1.650107572020891381e-02, + 1.649805499598898037e-02, + 1.649500765983931416e-02, + 1.649193371830478053e-02, + 1.648883317797267614e-02, + 1.648570604547351312e-02, + 1.648255232748022103e-02, + 1.647937203070853895e-02, + 1.647616516191696689e-02, + 1.647293172790661314e-02, + 1.646967173552139202e-02, + 1.646638519164779144e-02, + 1.646307210321498044e-02, + 1.645973247719480920e-02, + 1.645636632060169108e-02, + 1.645297364049273792e-02, + 1.644955444396756575e-02, + 1.644610873816845092e-02, + 1.644263653028023991e-02, + 1.643913782753026256e-02, + 1.643561263718854026e-02, + 1.643206096656754309e-02, + 1.642848282302221061e-02, + 1.642487821395000394e-02, + 1.642124714679092656e-02, + 1.641758962902746186e-02, + 1.641390566818447944e-02, + 1.641019527182930801e-02, + 1.640645844757177702e-02, + 1.640269520306401538e-02, + 1.639890554600072561e-02, + 1.639508948411880218e-02, + 1.639124702519755006e-02, + 1.638737817705878189e-02, + 1.638348294756645021e-02, + 1.637956134462692503e-02, + 1.637561337618888974e-02, + 1.637163905024335495e-02, + 1.636763837482344344e-02, + 1.636361135800476138e-02, + 1.635955800790500278e-02, + 1.635547833268419932e-02, + 1.635137234054449135e-02, + 1.634724003973025627e-02, + 1.634308143852808079e-02, + 1.633889654526674007e-02, + 1.633468536831708326e-02, + 1.633044791609215493e-02, + 1.632618419704708751e-02, + 1.632189421967915680e-02, + 1.631757799252762584e-02, + 1.631323552417397044e-02, + 1.630886682324159467e-02, + 1.630447189839600783e-02, + 1.630005075834472378e-02, + 1.629560341183722630e-02, + 1.629112986766508703e-02, + 1.628663013466171219e-02, + 1.628210422170253691e-02, + 1.627755213770493148e-02, + 1.627297389162819102e-02, + 1.626836949247346606e-02, + 1.626373894928381109e-02, + 1.625908227114422969e-02, + 1.625439946718146983e-02, + 1.624969054656413142e-02, + 1.624495551850265937e-02, + 1.624019439224924644e-02, + 1.623540717709806222e-02, + 1.623059388238471887e-02, + 1.622575451748676026e-02, + 1.622088909182353364e-02, + 1.621599761485591901e-02, + 1.621108009608660319e-02, + 1.620613654505988557e-02, + 1.620116697136185502e-02, + 1.619617138462000824e-02, + 1.619114979450363492e-02, + 1.618610221072356442e-02, + 1.618102864303231844e-02, + 1.617592910122379532e-02, + 1.617080359513361348e-02, + 1.616565213463877146e-02, + 1.616047472965799481e-02, + 1.615527139015118102e-02, + 1.615004212611993728e-02, + 1.614478694760736535e-02, + 1.613950586469782567e-02, + 1.613419888751716977e-02, + 1.612886602623265359e-02, + 1.612350729105302416e-02, + 1.611812269222815189e-02, + 1.611271224004936012e-02, + 1.610727594484939740e-02, + 1.610181381700218073e-02, + 1.609632586692294823e-02, + 1.609081210506826953e-02, + 1.608527254193577519e-02, + 1.607970718806462501e-02, + 1.607411605403487667e-02, + 1.606849915046786037e-02, + 1.606285648802622396e-02, + 1.605718807741361373e-02, + 1.605149392937480282e-02, + 1.604577405469573975e-02, + 1.604002846420344436e-02, + 1.603425716876600779e-02, + 1.602846017929244679e-02, + 1.602263750673297779e-02, + 1.601678916207883996e-02, + 1.601091515636196561e-02, + 1.600501550065558387e-02, + 1.599909020607372806e-02, + 1.599313928377143340e-02, + 1.598716274494440398e-02, + 1.598116060082959214e-02, + 1.597513286270449764e-02, + 1.596907954188768117e-02, + 1.596300064973837224e-02, + 1.595689619765661843e-02, + 1.595076619708336169e-02, + 1.594461065950023362e-02, + 1.593842959642956941e-02, + 1.593222301943444594e-02, + 1.592599094011871302e-02, + 1.591973337012671241e-02, + 1.591345032114356919e-02, + 1.590714180489509119e-02, + 1.590080783314759549e-02, + 1.589444841770800212e-02, + 1.588806357042376119e-02, + 1.588165330318301247e-02, + 1.587521762791440499e-02, + 1.586875655658677789e-02, + 1.586227010120981953e-02, + 1.585575827383351941e-02, + 1.584922108654843176e-02, + 1.584265855148523500e-02, + 1.583607068081533883e-02, + 1.582945748675026326e-02, + 1.582281898154203059e-02, + 1.581615517748295036e-02, + 1.580946608690557767e-02, + 1.580275172218290752e-02, + 1.579601209572788559e-02, + 1.578924721999403272e-02, + 1.578245710747486555e-02, + 1.577564177070428161e-02, + 1.576880122225611525e-02, + 1.576193547474443596e-02, + 1.575504454082355538e-02, + 1.574812843318779132e-02, + 1.574118716457142964e-02, + 1.573422074774895665e-02, + 1.572722919553491347e-02, + 1.572021252078368778e-02, + 1.571317073638980530e-02, + 1.570610385528765918e-02, + 1.569901189045159670e-02, + 1.569189485489600952e-02, + 1.568475276167487914e-02, + 1.567758562388233204e-02, + 1.567039345465228578e-02, + 1.566317626715834146e-02, + 1.565593407461404393e-02, + 1.564866689027261809e-02, + 1.564137472742720483e-02, + 1.563405759941033715e-02, + 1.562671551959453342e-02, + 1.561934850139190187e-02, + 1.561195655825434181e-02, + 1.560453970367299201e-02, + 1.559709795117900782e-02, + 1.558963131434287601e-02, + 1.558213980677480848e-02, + 1.557462344212439190e-02, + 1.556708223408081494e-02, + 1.555951619637276247e-02, + 1.555192534276821775e-02, + 1.554430968707478690e-02, + 1.553666924313943515e-02, + 1.552900402484845045e-02, + 1.552131404612747297e-02, + 1.551359932094154188e-02, + 1.550585986329497921e-02, + 1.549809568723152509e-02, + 1.549030680683375141e-02, + 1.548249323622395181e-02, + 1.547465498956334708e-02, + 1.546679208105247554e-02, + 1.545890452493090157e-02, + 1.545099233547740127e-02, + 1.544305552700992075e-02, + 1.543509411388539407e-02, + 1.542710811049971542e-02, + 1.541909753128801498e-02, + 1.541106239072434665e-02, + 1.540300270332160999e-02, + 1.539491848363190238e-02, + 1.538680974624598817e-02, + 1.537867650579387985e-02, + 1.537051877694400187e-02, + 1.536233657440384988e-02, + 1.535412991291991609e-02, + 1.534589880727735105e-02, + 1.533764327229988379e-02, + 1.532936332285021047e-02, + 1.532105897382971850e-02, + 1.531273024017843105e-02, + 1.530437713687502616e-02, + 1.529599967893686442e-02, + 1.528759788141989019e-02, + 1.527917175941870091e-02, + 1.527072132806625918e-02, + 1.526224660253424313e-02, + 1.525374759803280710e-02, + 1.524522432981043583e-02, + 1.523667681315428110e-02, + 1.522810506338972969e-02, + 1.521950909588078507e-02, + 1.521088892602942381e-02, + 1.520224456927639529e-02, + 1.519357604110052259e-02, + 1.518488335701895578e-02, + 1.517616653258712853e-02, + 1.516742558339863323e-02, + 1.515866052508539445e-02, + 1.514987137331748855e-02, + 1.514105814380291640e-02, + 1.513222085228803880e-02, + 1.512335951455729896e-02, + 1.511447414643308541e-02, + 1.510556476377585174e-02, + 1.509663138248411828e-02, + 1.508767401849447735e-02, + 1.507869268778105377e-02, + 1.506968740635641207e-02, + 1.506065819027074294e-02, + 1.505160505561224833e-02, + 1.504252801850665400e-02, + 1.503342709511780624e-02, + 1.502430230164724170e-02, + 1.501515365433436257e-02, + 1.500598116945602023e-02, + 1.499678486332696632e-02, + 1.498756475229955608e-02, + 1.497832085276397732e-02, + 1.496905318114759645e-02, + 1.495976175391570268e-02, + 1.495044658757116278e-02, + 1.494110769865410020e-02, + 1.493174510374233044e-02, + 1.492235881945114598e-02, + 1.491294886243324340e-02, + 1.490351524937852563e-02, + 1.489405799701457207e-02, + 1.488457712210619448e-02, + 1.487507264145547341e-02, + 1.486554457190182414e-02, + 1.485599293032187351e-02, + 1.484641773362960562e-02, + 1.483681899877612939e-02, + 1.482719674274954672e-02, + 1.481755098257538442e-02, + 1.480788173531611719e-02, + 1.479818901807139313e-02, + 1.478847284797781512e-02, + 1.477873324220905886e-02, + 1.476897021797589880e-02, + 1.475918379252569301e-02, + 1.474937398314319324e-02, + 1.473954080714979728e-02, + 1.472968428190392712e-02, + 1.471980442480054149e-02, + 1.470990125327172396e-02, + 1.469997478478616594e-02, + 1.469002503684953102e-02, + 1.468005202700378709e-02, + 1.467005577282800600e-02, + 1.466003629193763508e-02, + 1.464999360198506947e-02, + 1.463992772065881957e-02, + 1.462983866568431067e-02, + 1.461972645482343888e-02, + 1.460959110587462494e-02, + 1.459943263667264242e-02, + 1.458925106508878432e-02, + 1.457904640903086302e-02, + 1.456881868644275928e-02, + 1.455856791530497213e-02, + 1.454829411363423725e-02, + 1.453799729948365531e-02, + 1.452767749094232771e-02, + 1.451733470613584057e-02, + 1.450696896322585874e-02, + 1.449658028041036877e-02, + 1.448616867592304215e-02, + 1.447573416803406461e-02, + 1.446527677504951155e-02, + 1.445479651531174359e-02, + 1.444429340719864500e-02, + 1.443376746912439397e-02, + 1.442321871953908784e-02, + 1.441264717692871192e-02, + 1.440205285981500417e-02, + 1.439143578675562002e-02, + 1.438079597634414619e-02, + 1.437013344720963932e-02, + 1.435944821801716370e-02, + 1.434874030746740789e-02, + 1.433800973429675586e-02, + 1.432725651727718638e-02, + 1.431648067521633025e-02, + 1.430568222695737315e-02, + 1.429486119137918405e-02, + 1.428401758739578434e-02, + 1.427315143395706774e-02, + 1.426226275004816718e-02, + 1.425135155468977566e-02, + 1.424041786693775076e-02, + 1.422946170588347894e-02, + 1.421848309065373156e-02, + 1.420748204041019820e-02, + 1.419645857435019448e-02, + 1.418541271170609998e-02, + 1.417434447174555773e-02, + 1.416325387377117412e-02, + 1.415214093712086063e-02, + 1.414100568116755628e-02, + 1.412984812531937334e-02, + 1.411866828901900579e-02, + 1.410746619174460884e-02, + 1.409624185300900091e-02, + 1.408499529236034026e-02, + 1.407372652938094701e-02, + 1.406243558368856436e-02, + 1.405112247493558834e-02, + 1.403978722280920140e-02, + 1.402842984703122318e-02, + 1.401705036735828927e-02, + 1.400564880358188408e-02, + 1.399422517552763139e-02, + 1.398277950305627446e-02, + 1.397131180606284162e-02, + 1.395982210447712854e-02, + 1.394831041826316564e-02, + 1.393677676741966222e-02, + 1.392522117197964732e-02, + 1.391364365201078375e-02, + 1.390204422761461521e-02, + 1.389042291892749088e-02, + 1.387877974611987676e-02, + 1.386711472939656381e-02, + 1.385542788899643551e-02, + 1.384371924519267431e-02, + 1.383198881829262109e-02, + 1.382023662863787229e-02, + 1.380846269660368150e-02, + 1.379666704259980420e-02, + 1.378484968706988542e-02, + 1.377301065049143722e-02, + 1.376114995337603467e-02, + 1.374926761626908689e-02, + 1.373736365975016666e-02, + 1.372543810443211873e-02, + 1.371349097096202438e-02, + 1.370152228002074167e-02, + 1.368953205232289159e-02, + 1.367752030861633418e-02, + 1.366548706968310697e-02, + 1.365343235633867912e-02, + 1.364135618943222716e-02, + 1.362925858984621354e-02, + 1.361713957849691389e-02, + 1.360499917633406497e-02, + 1.359283740434052978e-02, + 1.358065428353300366e-02, + 1.356844983496124576e-02, + 1.355622407970865327e-02, + 1.354397703889162995e-02, + 1.353170873365999900e-02, + 1.351941918519681922e-02, + 1.350710841471851158e-02, + 1.349477644347413935e-02, + 1.348242329274640730e-02, + 1.347004898385087412e-02, + 1.345765353813630112e-02, + 1.344523697698422372e-02, + 1.343279932180936435e-02, + 1.342034059405932019e-02, + 1.340786081521470538e-02, + 1.339536000678864282e-02, + 1.338283819032742676e-02, + 1.337029538741013254e-02, + 1.335773161964838064e-02, + 1.334514690868670271e-02, + 1.333254127620222239e-02, + 1.331991474390491724e-02, + 1.330726733353689191e-02, + 1.329459906687317436e-02, + 1.328190996572145045e-02, + 1.326920005192177079e-02, + 1.325646934734631653e-02, + 1.324371787390010886e-02, + 1.323094565352045393e-02, + 1.321815270817703995e-02, + 1.320533905987164580e-02, + 1.319250473063852264e-02, + 1.317964974254411635e-02, + 1.316677411768722022e-02, + 1.315387787819834176e-02, + 1.314096104624047981e-02, + 1.312802364400877768e-02, + 1.311506569373011889e-02, + 1.310208721766359038e-02, + 1.308908823810024137e-02, + 1.307606877736312671e-02, + 1.306302885780684896e-02, + 1.304996850181824354e-02, + 1.303688773181579073e-02, + 1.302378657024988104e-02, + 1.301066503960240234e-02, + 1.299752316238717009e-02, + 1.298436096114958908e-02, + 1.297117845846680086e-02, + 1.295797567694715810e-02, + 1.294475263923097579e-02, + 1.293150936798987197e-02, + 1.291824588592710606e-02, + 1.290496221577709136e-02, + 1.289165838030588949e-02, + 1.287833440231095535e-02, + 1.286499030462060281e-02, + 1.285162611009484437e-02, + 1.283824184162500257e-02, + 1.282483752213349655e-02, + 1.281141317457354205e-02, + 1.279796882192988511e-02, + 1.278450448721827823e-02, + 1.277102019348554281e-02, + 1.275751596380934536e-02, + 1.274399182129840567e-02, + 1.273044778909241705e-02, + 1.271688389036203064e-02, + 1.270330014830839058e-02, + 1.268969658616382092e-02, + 1.267607322719135031e-02, + 1.266243009468448824e-02, + 1.264876721196770033e-02, + 1.263508460239601977e-02, + 1.262138228935526241e-02, + 1.260766029626126696e-02, + 1.259391864656090806e-02, + 1.258015736373145448e-02, + 1.256637647128062626e-02, + 1.255257599274639015e-02, + 1.253875595169721968e-02, + 1.252491637173190966e-02, + 1.251105727647967500e-02, + 1.249717868959954181e-02, + 1.248328063478122002e-02, + 1.246936313574431750e-02, + 1.245542621623880845e-02, + 1.244146990004447312e-02, + 1.242749421097128631e-02, + 1.241349917285937410e-02, + 1.239948480957835802e-02, + 1.238545114502831966e-02, + 1.237139820313901302e-02, + 1.235732600787014038e-02, + 1.234323458321083360e-02, + 1.232912395318035842e-02, + 1.231499414182767212e-02, + 1.230084517323135930e-02, + 1.228667707149954345e-02, + 1.227248986077006387e-02, + 1.225828356521029873e-02, + 1.224405820901736108e-02, + 1.222981381641728704e-02, + 1.221555041166600547e-02, + 1.220126801904877246e-02, + 1.218696666288019044e-02, + 1.217264636750402078e-02, + 1.215830715729350822e-02, + 1.214394905665111719e-02, + 1.212957209000818833e-02, + 1.211517628182556122e-02, + 1.210076165659307833e-02, + 1.208632823882972371e-02, + 1.207187605308323967e-02, + 1.205740512393060904e-02, + 1.204291547597767867e-02, + 1.202840713385941278e-02, + 1.201388012223901861e-02, + 1.199933446580910869e-02, + 1.198477018929089942e-02, + 1.197018731743435503e-02, + 1.195558587501798810e-02, + 1.194096588684910240e-02, + 1.192632737776376170e-02, + 1.191167037262601085e-02, + 1.189699489632913172e-02, + 1.188230097379447750e-02, + 1.186758862997211797e-02, + 1.185285788984002595e-02, + 1.183810877840495678e-02, + 1.182334132070190884e-02, + 1.180855554179414783e-02, + 1.179375146677298820e-02, + 1.177892912075813141e-02, + 1.176408852889736754e-02, + 1.174922971636676444e-02, + 1.173435270836990438e-02, + 1.171945753013890756e-02, + 1.170454420693370703e-02, + 1.168961276404222038e-02, + 1.167466322678008435e-02, + 1.165969562049095666e-02, + 1.164470997054636858e-02, + 1.162970630234518715e-02, + 1.161468464131439580e-02, + 1.159964501290858090e-02, + 1.158458744260997507e-02, + 1.156951195592824042e-02, + 1.155441857840070440e-02, + 1.153930733559219851e-02, + 1.152417825309517627e-02, + 1.150903135652897070e-02, + 1.149386667154084739e-02, + 1.147868422380505897e-02, + 1.146348403902367613e-02, + 1.144826614292512867e-02, + 1.143303056126577719e-02, + 1.141777731982888781e-02, + 1.140250644442489074e-02, + 1.138721796089109048e-02, + 1.137191189509205447e-02, + 1.135658827291947080e-02, + 1.134124712029132599e-02, + 1.132588846315315742e-02, + 1.131051232747708191e-02, + 1.129511873926214091e-02, + 1.127970772453391890e-02, + 1.126427930934491631e-02, + 1.124883351977428413e-02, + 1.123337038192791758e-02, + 1.121788992193782641e-02, + 1.120239216596307513e-02, + 1.118687714018903705e-02, + 1.117134487082768052e-02, + 1.115579538411705374e-02, + 1.114022870632188668e-02, + 1.112464486373311058e-02, + 1.110904388266815805e-02, + 1.109342578947012173e-02, + 1.107779061050886103e-02, + 1.106213837218023022e-02, + 1.104646910090600204e-02, + 1.103078282313420082e-02, + 1.101507956533884051e-02, + 1.099935935402003399e-02, + 1.098362221570331303e-02, + 1.096786817694057718e-02, + 1.095209726430935136e-02, + 1.093630950441340684e-02, + 1.092050492388137520e-02, + 1.090468354936830614e-02, + 1.088884540755467867e-02, + 1.087299052514670468e-02, + 1.085711892887583803e-02, + 1.084123064549940424e-02, + 1.082532570180019978e-02, + 1.080940412458603929e-02, + 1.079346594069053970e-02, + 1.077751117697258766e-02, + 1.076153986031637595e-02, + 1.074555201763109299e-02, + 1.072954767585144846e-02, + 1.071352686193722745e-02, + 1.069748960287344661e-02, + 1.068143592566967934e-02, + 1.066536585736110876e-02, + 1.064927942500770025e-02, + 1.063317665569442350e-02, + 1.061705757653086564e-02, + 1.060092221465173609e-02, + 1.058477059721651785e-02, + 1.056860275140950912e-02, + 1.055241870443931161e-02, + 1.053621848353957988e-02, + 1.052000211596862585e-02, + 1.050376962900899901e-02, + 1.048752104996807794e-02, + 1.047125640617758285e-02, + 1.045497572499389828e-02, + 1.043867903379723343e-02, + 1.042236635999258150e-02, + 1.040603773100938316e-02, + 1.038969317430115183e-02, + 1.037333271734520480e-02, + 1.035695638764357225e-02, + 1.034056421272217322e-02, + 1.032415622013110879e-02, + 1.030773243744427525e-02, + 1.029129289225973881e-02, + 1.027483761219941984e-02, + 1.025836662490934442e-02, + 1.024187995805881865e-02, + 1.022537763934141912e-02, + 1.020885969647446559e-02, + 1.019232615719868097e-02, + 1.017577704927863022e-02, + 1.015921240050253818e-02, + 1.014263223868221153e-02, + 1.012603659165254265e-02, + 1.010942548727238564e-02, + 1.009279895342385727e-02, + 1.007615701801245836e-02, + 1.005949970896685697e-02, + 1.004282705423920757e-02, + 1.002613908180480240e-02, + 1.000943581966230733e-02, + 9.992717295833022928e-03, + 9.975983538361805555e-03, + 9.959234575316465443e-03, + 9.942470434787843009e-03, + 9.925691144889448037e-03, + 9.908896733758011319e-03, + 9.892087229553191488e-03, + 9.875262660456905414e-03, + 9.858423054674316996e-03, + 9.841568440433304601e-03, + 9.824698845984499232e-03, + 9.807814299600516039e-03, + 9.790914829577191184e-03, + 9.774000464232686716e-03, + 9.757071231907729972e-03, + 9.740127160965176417e-03, + 9.723168279790648030e-03, + 9.706194616791853289e-03, + 9.689206200399138810e-03, + 9.672203059064424235e-03, + 9.655185221262439083e-03, + 9.638152715489928246e-03, + 9.621105570265478524e-03, + 9.604043814130026890e-03, + 9.586967475646416409e-03, + 9.569876583399611336e-03, + 9.552771165995933844e-03, + 9.535651252064137814e-03, + 9.518516870254612600e-03, + 9.501368049239613742e-03, + 9.484204817712787658e-03, + 9.467027204389768386e-03, + 9.449835238007750840e-03, + 9.432628947325640001e-03, + 9.415408361123320594e-03, + 9.398173508202758639e-03, + 9.380924417387094191e-03, + 9.363661117521003899e-03, + 9.346383637470220482e-03, + 9.329092006121975089e-03, + 9.311786252384943521e-03, + 9.294466405188205396e-03, + 9.277132493482952852e-03, + 9.259784546240958786e-03, + 9.242422592455300234e-03, + 9.225046661139475399e-03, + 9.207656781328548562e-03, + 9.190252982078307015e-03, + 9.172835292465437995e-03, + 9.155403741587164398e-03, + 9.137958358561749581e-03, + 9.120499172528077556e-03, + 9.103026212645932286e-03, + 9.085539508095031441e-03, + 9.068039088076313564e-03, + 9.050524981810989175e-03, + 9.032997218540884249e-03, + 9.015455827527897245e-03, + 8.997900838054639222e-03, + 8.980332279424105973e-03, + 8.962750180958968527e-03, + 8.945154572002726734e-03, + 8.927545481918881809e-03, + 8.909922940091111535e-03, + 8.892286975922900766e-03, + 8.874637618838060113e-03, + 8.856974898280250627e-03, + 8.839298843713287376e-03, + 8.821609484620296371e-03, + 8.803906850504776213e-03, + 8.786190970889852167e-03, + 8.768461875318440957e-03, + 8.750719593352872597e-03, + 8.732964154575421217e-03, + 8.715195588588027509e-03, + 8.697413925011485136e-03, + 8.679619193486965562e-03, + 8.661811423674557406e-03, + 8.643990645254100852e-03, + 8.626156887924089564e-03, + 8.608310181403008160e-03, + 8.590450555428303520e-03, + 8.572578039756717852e-03, + 8.554692664163912261e-03, + 8.536794458444850117e-03, + 8.518883452413516036e-03, + 8.500959675902980059e-03, + 8.483023158764809585e-03, + 8.465073930869938465e-03, + 8.447112022108032095e-03, + 8.429137462387574151e-03, + 8.411150281635543929e-03, + 8.393150509797935033e-03, + 8.375138176839434442e-03, + 8.357113312742761591e-03, + 8.339075947509799400e-03, + 8.321026111160676614e-03, + 8.302963833734128621e-03, + 8.284889145286959689e-03, + 8.266802075894617158e-03, + 8.248702655650747353e-03, + 8.230590914667473140e-03, + 8.212466883074481458e-03, + 8.194330591020242832e-03, + 8.176182068670991357e-03, + 8.158021346211560831e-03, + 8.139848453843839121e-03, + 8.121663421788351961e-03, + 8.103466280283386919e-03, + 8.085257059585100950e-03, + 8.067035789967246309e-03, + 8.048802501721543518e-03, + 8.030557225157523502e-03, + 8.012299990601795541e-03, + 7.994030828399162694e-03, + 7.975749768911766582e-03, + 7.957456842519338922e-03, + 7.939152079618760904e-03, + 7.920835510624623516e-03, + 7.902507165968774769e-03, + 7.884167076100517466e-03, + 7.865815271485844182e-03, + 7.847451782608511062e-03, + 7.829076639969245049e-03, + 7.810689874085958127e-03, + 7.792291515493289349e-03, + 7.773881594743195511e-03, + 7.755460142404470639e-03, + 7.737027189063039150e-03, + 7.718582765320944512e-03, + 7.700126901797762179e-03, + 7.681659629129642883e-03, + 7.663180977969128761e-03, + 7.644690978985715403e-03, + 7.626189662865377403e-03, + 7.607677060310829437e-03, + 7.589153202040675381e-03, + 7.570618118790561034e-03, + 7.552071841312182725e-03, + 7.533514400374155540e-03, + 7.514945826760387020e-03, + 7.496366151271754638e-03, + 7.477775404725120478e-03, + 7.459173617953587104e-03, + 7.440560821806015308e-03, + 7.421937047147611315e-03, + 7.403302324859660499e-03, + 7.384656685838747632e-03, + 7.366000160997972050e-03, + 7.347332781266036061e-03, + 7.328654577587521632e-03, + 7.309965580922455838e-03, + 7.291265822246788784e-03, + 7.272555332552028441e-03, + 7.253834142845457487e-03, + 7.235102284149232989e-03, + 7.216359787501625857e-03, + 7.197606683956130069e-03, + 7.178843004581628336e-03, + 7.160068780462096327e-03, + 7.141284042697049368e-03, + 7.122488822401117428e-03, + 7.103683150704249820e-03, + 7.084867058750957125e-03, + 7.066040577701369375e-03, + 7.047203738730549102e-03, + 7.028356573028197302e-03, + 7.009499111799219820e-03, + 6.990631386263285868e-03, + 6.971753427655030116e-03, + 6.952865267223273804e-03, + 6.933966936232107206e-03, + 6.915058465959982373e-03, + 6.896139887700464266e-03, + 6.877211232760678181e-03, + 6.858272532463025387e-03, + 6.839323818144126682e-03, + 6.820365121155066990e-03, + 6.801396472860968614e-03, + 6.782417904641556763e-03, + 6.763429447890666885e-03, + 6.744431134016539570e-03, + 6.725422994440917630e-03, + 6.706405060600232650e-03, + 6.687377363944844305e-03, + 6.668339935938748068e-03, + 6.649292808060239604e-03, + 6.630236011801312820e-03, + 6.611169578667997274e-03, + 6.592093540179495142e-03, + 6.573007927869322677e-03, + 6.553912773284438498e-03, + 6.534808107985553248e-03, + 6.515693963546569274e-03, + 6.496570371555271048e-03, + 6.477437363612738828e-03, + 6.458294971333677394e-03, + 6.439143226345509646e-03, + 6.419982160289612605e-03, + 6.400811804820365908e-03, + 6.381632191605462329e-03, + 6.362443352325414248e-03, + 6.343245318674145192e-03, + 6.324038122358707943e-03, + 6.304821795098532536e-03, + 6.285596368626470559e-03, + 6.266361874688397039e-03, + 6.247118345042885178e-03, + 6.227865811460754457e-03, + 6.208604305726204281e-03, + 6.189333859635858144e-03, + 6.170054504999113176e-03, + 6.150766273637567685e-03, + 6.131469197385666474e-03, + 6.112163308090227259e-03, + 6.092848637610684404e-03, + 6.073525217818161702e-03, + 6.054193080596750876e-03, + 6.034852257842707526e-03, + 6.015502781464113734e-03, + 5.996144683381567607e-03, + 5.976777995527622969e-03, + 5.957402749847125027e-03, + 5.938018978296244130e-03, + 5.918626712843703085e-03, + 5.899225985469953165e-03, + 5.879816828167348450e-03, + 5.860399272939695661e-03, + 5.840973351802876065e-03, + 5.821539096784318981e-03, + 5.802096539923282809e-03, + 5.782645713269978123e-03, + 5.763186648886762901e-03, + 5.743719378847233527e-03, + 5.724243935236501477e-03, + 5.704760350150739692e-03, + 5.685268655697742028e-03, + 5.665768883996650900e-03, + 5.646261067177150636e-03, + 5.626745237380645359e-03, + 5.607221426759729024e-03, + 5.587689667477905263e-03, + 5.568149991709164977e-03, + 5.548602431639054061e-03, + 5.529047019463811247e-03, + 5.509483787390580603e-03, + 5.489912767637003879e-03, + 5.470333992431721838e-03, + 5.450747494013961393e-03, + 5.431153304633810561e-03, + 5.411551456551219261e-03, + 5.391941982037353268e-03, + 5.372324913373596744e-03, + 5.352700282851854084e-03, + 5.333068122774052046e-03, + 5.313428465452746906e-03, + 5.293781343210854709e-03, + 5.274126788380841153e-03, + 5.254464833305933294e-03, + 5.234795510339293814e-03, + 5.215118851844167611e-03, + 5.195434890193486276e-03, + 5.175743657770425811e-03, + 5.156045186967933916e-03, + 5.136339510189024890e-03, + 5.116626659845783034e-03, + 5.096906668360700124e-03, + 5.077179568165687482e-03, + 5.057445391702424659e-03, + 5.037704171421754015e-03, + 5.017955939784400632e-03, + 4.998200729260638374e-03, + 4.978438572329360948e-03, + 4.958669501479803614e-03, + 4.938893549209949843e-03, + 4.919110748027346637e-03, + 4.899321130448057622e-03, + 4.879524728997938939e-03, + 4.859721576211739787e-03, + 4.839911704633302787e-03, + 4.820095146815119892e-03, + 4.800271935318953416e-03, + 4.780442102715314751e-03, + 4.760605681583716768e-03, + 4.740762704511830745e-03, + 4.720913204096631281e-03, + 4.701057212943565364e-03, + 4.681194763666779619e-03, + 4.661325888888625049e-03, + 4.641450621240277193e-03, + 4.621568993361493266e-03, + 4.601681037899695362e-03, + 4.581786787511359094e-03, + 4.561886274860964957e-03, + 4.541979532621379968e-03, + 4.522066593473260919e-03, + 4.502147490105762144e-03, + 4.482222255215944848e-03, + 4.462290921509151805e-03, + 4.442353521697982137e-03, + 4.422410088503598430e-03, + 4.402460654654839420e-03, + 4.382505252888392600e-03, + 4.362543915948399569e-03, + 4.342576676587017216e-03, + 4.322603567563906846e-03, + 4.302624621646448412e-03, + 4.282639871609197554e-03, + 4.262649350234525708e-03, + 4.242653090312341682e-03, + 4.222651124639268533e-03, + 4.202643486019883891e-03, + 4.182630207265814436e-03, + 4.162611321196011717e-03, + 4.142586860636242145e-03, + 4.122556858419712360e-03, + 4.102521347386554884e-03, + 4.082480360384127364e-03, + 4.062433930266048064e-03, + 4.042382089893505580e-03, + 4.022324872134277855e-03, + 4.002262309863040095e-03, + 3.982194435960859959e-03, + 3.962121283315820329e-03, + 3.942042884822489351e-03, + 3.921959273382232686e-03, + 3.901870481902257239e-03, + 3.881776543296896597e-03, + 3.861677490486761875e-03, + 3.841573356398487148e-03, + 3.821464173965341375e-03, + 3.801349976126718391e-03, + 3.781230795828423568e-03, + 3.761106666021715381e-03, + 3.740977619664610787e-03, + 3.720843689720817506e-03, + 3.700704909160580560e-03, + 3.680561310959038629e-03, + 3.660412928097987826e-03, + 3.640259793564820049e-03, + 3.620101940352778852e-03, + 3.599939401460487166e-03, + 3.579772209892546648e-03, + 3.559600398659265759e-03, + 3.539424000775829703e-03, + 3.519243049263562004e-03, + 3.499057577149030252e-03, + 3.478867617464263817e-03, + 3.458673203246302816e-03, + 3.438474367537775779e-03, + 3.418271143386422597e-03, + 3.398063563845383356e-03, + 3.377851661972225156e-03, + 3.357635470830251396e-03, + 3.337415023487523384e-03, + 3.317190353017202952e-03, + 3.296961492496959176e-03, + 3.276728475009686118e-03, + 3.256491333642914324e-03, + 3.236250101489163405e-03, + 3.216004811644932425e-03, + 3.195755497212028270e-03, + 3.175502191296728210e-03, + 3.155244927009469378e-03, + 3.134983737465504936e-03, + 3.114718655784371511e-03, + 3.094449715090206651e-03, + 3.074176948510745286e-03, + 3.053900389178668909e-03, + 3.033620070230498827e-03, + 3.013336024807475658e-03, + 2.993048286053889232e-03, + 2.972756887118871427e-03, + 2.952461861155280740e-03, + 2.932163241320050965e-03, + 2.911861060773602260e-03, + 2.891555352680535897e-03, + 2.871246150209096504e-03, + 2.850933486531461759e-03, + 2.830617394822778320e-03, + 2.810297908262471105e-03, + 2.789975060033416700e-03, + 2.769648883321615494e-03, + 2.749319411316860848e-03, + 2.728986677212218246e-03, + 2.708650714204295477e-03, + 2.688311555492308054e-03, + 2.667969234279369845e-03, + 2.647623783771529005e-03, + 2.627275237178065912e-03, + 2.606923627710987495e-03, + 2.586568988585631352e-03, + 2.566211353020172222e-03, + 2.545850754235923826e-03, + 2.525487225456347906e-03, + 2.505120799908391264e-03, + 2.484751510821491330e-03, + 2.464379391427890583e-03, + 2.444004474962111362e-03, + 2.423626794661597715e-03, + 2.403246383766414855e-03, + 2.382863275518425604e-03, + 2.362477503162566713e-03, + 2.342089099945812367e-03, + 2.321698099117992971e-03, + 2.301304533930157575e-03, + 2.280908437636371480e-03, + 2.260509843492578257e-03, + 2.240108784756959272e-03, + 2.219705294689358621e-03, + 2.199299406551945366e-03, + 2.178891153608712196e-03, + 2.158480569125728697e-03, + 2.138067686370223250e-03, + 2.117652538611842009e-03, + 2.097235159121846153e-03, + 2.076815581172805278e-03, + 2.056393838039214522e-03, + 2.035969962997027927e-03, + 2.015543989323893056e-03, + 1.995115950298229860e-03, + 1.974685879200515672e-03, + 1.954253809312332842e-03, + 1.933819773916660174e-03, + 1.913383806297340797e-03, + 1.892945939739742013e-03, + 1.872506207530229456e-03, + 1.852064642956437277e-03, + 1.831621279306344403e-03, + 1.811176149869555630e-03, + 1.790729287936347744e-03, + 1.770280726797950760e-03, + 1.749830499746040519e-03, + 1.729378640073381398e-03, + 1.708925181073521439e-03, + 1.688470156039957940e-03, + 1.668013598267326829e-03, + 1.647555541050900680e-03, + 1.627096017686303128e-03, + 1.606635061469000600e-03, + 1.586172705695494288e-03, + 1.565708983662368213e-03, + 1.545243928666567438e-03, + 1.524777574004885236e-03, + 1.504309952974601690e-03, + 1.483841098872976279e-03, + 1.463371044997515032e-03, + 1.442899824645034208e-03, + 1.422427471112951147e-03, + 1.401954017698326923e-03, + 1.381479497698153217e-03, + 1.361003944408848820e-03, + 1.340527391126877842e-03, + 1.320049871148475410e-03, + 1.299571417768795268e-03, + 1.279092064283215806e-03, + 1.258611843986396153e-03, + 1.238130790172530752e-03, + 1.217648936134867752e-03, + 1.197166315166330259e-03, + 1.176682960558999387e-03, + 1.156198905604410897e-03, + 1.135714183592589389e-03, + 1.115228827813346309e-03, + 1.094742871555346884e-03, + 1.074256348106361223e-03, + 1.053769290752782934e-03, + 1.033281732780236490e-03, + 1.012793707473318540e-03, + 9.923052481147270811e-04, + 9.718163879864696875e-04, + 9.513271603693537228e-04, + 9.308375985426996756e-04, + 9.103477357838423182e-04, + 8.898576053693160650e-04, + 8.693672405738990311e-04, + 8.488766746708968766e-04, + 8.283859409316385444e-04, + 8.078950726260996761e-04, + 7.874041030223946636e-04, + 7.669130653870705758e-04, + 7.464219929841279079e-04, + 7.259309190763510054e-04, + 7.054398769243309811e-04, + 6.849488997867600763e-04, + 6.644580209199139539e-04, + 6.439672735782957149e-04, + 6.234766910143370918e-04, + 6.029863064775585176e-04, + 5.824961532158799259e-04, + 5.620062644746567871e-04, + 5.415166734969643859e-04, + 5.210274135230896558e-04, + 5.005385177911638112e-04, + 4.800500195366507123e-04, + 4.595619519926341786e-04, + 4.390743483888521277e-04, + 4.185872419530159406e-04, + 3.981006659098382575e-04, + 3.776146534813225688e-04, + 3.571292378862567294e-04, + 3.366444523408418507e-04, + 3.161603300581807734e-04, + 2.956769042484543052e-04, + 2.751942081184089893e-04, + 2.547122748719928258e-04, + 2.342311377100678507e-04, + 2.137508298295614487e-04, + 1.932713844247806233e-04, + 1.727928346864441840e-04, + 1.523152138019752909e-04, + 1.318385549549869467e-04, + 1.113628913259167696e-04, + 9.088825609151351568e-05, + 7.041468242512944730e-05, + 4.994220349575069718e-05, + 2.947085246931510603e-05, + 9.000662507744902491e-06, +-1.146833323076434687e-05, +-3.193610159225385636e-05, +-5.240260942637009034e-05, +-7.286782358687535297e-05, +-9.333171093135816737e-05, +-1.137942383222003822e-04, +-1.342553726252611128e-04, +-1.547150807107284501e-04, +-1.751733294534023148e-04, +-1.956300857320617990e-04, +-2.160853164299759467e-04, +-2.365389884346161969e-04, +-2.569910686386191277e-04, +-2.774415239384734060e-04, +-2.978903212354861644e-04, +-3.183374274354921910e-04, +-3.387828094493644526e-04, +-3.592264341923841740e-04, +-3.796682685847509002e-04, +-4.001082795514032783e-04, +-4.205464340225332403e-04, +-4.409826989329533706e-04, +-4.614170412223802089e-04, +-4.818494278362805234e-04, +-5.022798257245645768e-04, +-5.227082018425407116e-04, +-5.431345231506377403e-04, +-5.635587566149098584e-04, +-5.839808692063983746e-04, +-6.044008279016549467e-04, +-6.248185996824452693e-04, +-6.452341515367093511e-04, +-6.656474504572545102e-04, +-6.860584634427215056e-04, +-7.064671574972895265e-04, +-7.268734996311869596e-04, +-7.472774568600627689e-04, +-7.676789962054955284e-04, +-7.880780846947037233e-04, +-8.084746893615091723e-04, +-8.288687772450246006e-04, +-8.492603153905043051e-04, +-8.696492708496234448e-04, +-8.900356106798533234e-04, +-9.104193019449548100e-04, +-9.308003117147127092e-04, +-9.511786070658791257e-04, +-9.715541550808752405e-04, +-9.919269228488532871e-04, +-1.012296877464855969e-03, +-1.032663986031448185e-03, +-1.053028215656963982e-03, +-1.073389533456565060e-03, +-1.093747906551969726e-03, +-1.114103302071953357e-03, +-1.134455687151714361e-03, +-1.154805028933388739e-03, +-1.175151294565764072e-03, +-1.195494451205235138e-03, +-1.215834466014493109e-03, +-1.236171306163377304e-03, +-1.256504938829151007e-03, +-1.276835331195887808e-03, +-1.297162450454949741e-03, +-1.317486263804725985e-03, +-1.337806738451587183e-03, +-1.358123841608564883e-03, +-1.378437540496321896e-03, +-1.398747802342870843e-03, +-1.419054594384061172e-03, +-1.439357883862974396e-03, +-1.459657638030404389e-03, +-1.479953824144602387e-03, +-1.500246409472204192e-03, +-1.520535361286948651e-03, +-1.540820646870610282e-03, +-1.561102233512744707e-03, +-1.581380088511162010e-03, +-1.601654179171316771e-03, +-1.621924472806594289e-03, +-1.642190936739136966e-03, +-1.662453538298549549e-03, +-1.682712244822966857e-03, +-1.702967023658208097e-03, +-1.723217842159399703e-03, +-1.743464667689227816e-03, +-1.763707467619011213e-03, +-1.783946209328402931e-03, +-1.804180860205903750e-03, +-1.824411387648240072e-03, +-1.844637759060856587e-03, +-1.864859941857632212e-03, +-1.885077903461849147e-03, +-1.905291611304867549e-03, +-1.925501032826994847e-03, +-1.945706135477740526e-03, +-1.965906886715200301e-03, +-1.986103254006572200e-03, +-2.006295204827836937e-03, +-2.026482706664757549e-03, +-2.046665727011530000e-03, +-2.066844233371782375e-03, +-2.087018193258252229e-03, +-2.107187574193325648e-03, +-2.127352343708368947e-03, +-2.147512469344269904e-03, +-2.167667918651134621e-03, +-2.187818659189243783e-03, +-2.207964658527760728e-03, +-2.228105884245657354e-03, +-2.248242303931466055e-03, +-2.268373885183758067e-03, +-2.288500595610517673e-03, +-2.308622402829441003e-03, +-2.328739274468754825e-03, +-2.348851178165922444e-03, +-2.368958081568713590e-03, +-2.389059952334355707e-03, +-2.409156758131155915e-03, +-2.429248466636764123e-03, +-2.449335045539209957e-03, +-2.469416462536656431e-03, +-2.489492685337870055e-03, +-2.509563681661615853e-03, +-2.529629419237142650e-03, +-2.549689865803915489e-03, +-2.569744989112553255e-03, +-2.589794756923538468e-03, +-2.609839137008166179e-03, +-2.629878097148258612e-03, +-2.649911605136664322e-03, +-2.669939628776628066e-03, +-2.689962135882101313e-03, +-2.709979094278529375e-03, +-2.729990471801590265e-03, +-2.749996236298138386e-03, +-2.769996355625916565e-03, +-2.789990797654046551e-03, +-2.809979530262420987e-03, +-2.829962521342202584e-03, +-2.849939738795545692e-03, +-2.869911150536500529e-03, +-2.889876724489781092e-03, +-2.909836428591683257e-03, +-2.929790230789798989e-03, +-2.949738099043515936e-03, +-2.969680001323397704e-03, +-2.989615905611467481e-03, +-3.009545779902037237e-03, +-3.029469592200510330e-03, +-3.049387310523927509e-03, +-3.069298902901178554e-03, +-3.089204337373553915e-03, +-3.109103581993539513e-03, +-3.128996604825764333e-03, +-3.148883373946730676e-03, +-3.168763857445286436e-03, +-3.188638023422032258e-03, +-3.208505839989806395e-03, +-3.228367275273393705e-03, +-3.248222297410491895e-03, +-3.268070874550400070e-03, +-3.287912974854966322e-03, +-3.307748566498323189e-03, +-3.327577617667371208e-03, +-3.347400096561133163e-03, +-3.367215971391089319e-03, +-3.387025210381964559e-03, +-3.406827781770442078e-03, +-3.426623653806104911e-03, +-3.446412794751195670e-03, +-3.466195172881056299e-03, +-3.485970756483541301e-03, +-3.505739513859488718e-03, +-3.525501413322493748e-03, +-3.545256423199770468e-03, +-3.565004511830922786e-03, +-3.584745647568866878e-03, +-3.604479798779570109e-03, +-3.624206933842487321e-03, +-3.643927021150021334e-03, +-3.663640029107957490e-03, +-3.683345926135217756e-03, +-3.703044680664880749e-03, +-3.722736261142487336e-03, +-3.742420636027394588e-03, +-3.762097773793079795e-03, +-3.781767642925923118e-03, +-3.801430211926199853e-03, +-3.821085449307753436e-03, +-3.840733323598513691e-03, +-3.860373803339882740e-03, +-3.880006857087206842e-03, +-3.899632453409517495e-03, +-3.919250560890465140e-03, +-3.938861148127022899e-03, +-3.958464183730445868e-03, +-3.978059636325947598e-03, +-3.997647474553266481e-03, +-4.017227667065961447e-03, +-4.036800182531998307e-03, +-4.056364989633373316e-03, +-4.075922057067135791e-03, +-4.095471353544034160e-03, +-4.115012847789400671e-03, +-4.134546508543390786e-03, +-4.154072304560364748e-03, +-4.173590204609416675e-03, +-4.193100177474030216e-03, +-4.212602191953087293e-03, +-4.232096216859535832e-03, +-4.251582221021326519e-03, +-4.271060173281184674e-03, +-4.290530042497019657e-03, +-4.309991797541388829e-03, +-4.329445407301939046e-03, +-4.348890840681251396e-03, +-4.368328066597342539e-03, +-4.387757053983017651e-03, +-4.407177771786205227e-03, +-4.426590188970704748e-03, +-4.445994274514953291e-03, +-4.465389997412960547e-03, +-4.484777326674001773e-03, +-4.504156231323134738e-03, +-4.523526680400578696e-03, +-4.542888642962200976e-03, +-4.562242088079209064e-03, +-4.581586984839161950e-03, +-4.600923302344581481e-03, +-4.620251009714003605e-03, +-4.639570076081613210e-03, +-4.658880470597737654e-03, +-4.678182162428316804e-03, +-4.697475120755264730e-03, +-4.716759314776299700e-03, +-4.736034713705826286e-03, +-4.755301286773645601e-03, +-4.774559003225825257e-03, +-4.793807832324905802e-03, +-4.813047743349370758e-03, +-4.832278705594054286e-03, +-4.851500688369899186e-03, +-4.870713661004878042e-03, +-4.889917592842752889e-03, +-4.909112453243923493e-03, +-4.928298211585254752e-03, +-4.947474837260475676e-03, +-4.966642299679603460e-03, +-4.985800568269430945e-03, +-5.004949612473375692e-03, +-5.024089401751909330e-03, +-5.043219905582032800e-03, +-5.062341093457659730e-03, +-5.081452934889435155e-03, +-5.100555399405589004e-03, +-5.119648456550733064e-03, +-5.138732075886609518e-03, +-5.157806226992398858e-03, +-5.176870879464091045e-03, +-5.195926002915018938e-03, +-5.214971566975505277e-03, +-5.234007541293843671e-03, +-5.253033895534992351e-03, +-5.272050599381551683e-03, +-5.291057622533434576e-03, +-5.310054934708370415e-03, +-5.329042505641267552e-03, +-5.348020305084770151e-03, +-5.366988302808919920e-03, +-5.385946468602071172e-03, +-5.404894772269689535e-03, +-5.423833183635185483e-03, +-5.442761672539749539e-03, +-5.461680208842682738e-03, +-5.480588762420954274e-03, +-5.499487303169355024e-03, +-5.518375801001349293e-03, +-5.537254225847791991e-03, +-5.556122547658001558e-03, +-5.574980736398905609e-03, +-5.593828762056609130e-03, +-5.612666594634692710e-03, +-5.631494204155275060e-03, +-5.650311560658712040e-03, +-5.669118634204067635e-03, +-5.687915394868542363e-03, +-5.706701812747893079e-03, +-5.725477857956264710e-03, +-5.744243500626957863e-03, +-5.762998710911327281e-03, +-5.781743458979469660e-03, +-5.800477715020536766e-03, +-5.819201449242157771e-03, +-5.837914631870859926e-03, +-5.856617233151841309e-03, +-5.875309223349832986e-03, +-5.893990572747933275e-03, +-5.912661251648413524e-03, +-5.931321230372538569e-03, +-5.949970479260941435e-03, +-5.968608968673146283e-03, +-5.987236668987950053e-03, +-6.005853550603186541e-03, +-6.024459583936600700e-03, +-6.043054739424668156e-03, +-6.061638987523427016e-03, +-6.080212298708287909e-03, +-6.098774643474418229e-03, +-6.117325992336195700e-03, +-6.135866315827485061e-03, +-6.154395584502385733e-03, +-6.172913768934043532e-03, +-6.191420839715590027e-03, +-6.209916767459466858e-03, +-6.228401522798776221e-03, +-6.246875076385807225e-03, +-6.265337398892917992e-03, +-6.283788461012306675e-03, +-6.302228233456498054e-03, +-6.320656686957716423e-03, +-6.339073792268400814e-03, +-6.357479520160878861e-03, +-6.375873841428270593e-03, +-6.394256726883341783e-03, +-6.412628147359290647e-03, +-6.430988073709547476e-03, +-6.449336476808201386e-03, +-6.467673327549447806e-03, +-6.485998596847805317e-03, +-6.504312255638934441e-03, +-6.522614274878424205e-03, +-6.540904625542611796e-03, +-6.559183278628448986e-03, +-6.577450205153797906e-03, +-6.595705376156973943e-03, +-6.613948762697201104e-03, +-6.632180335854212169e-03, +-6.650400066729354569e-03, +-6.668607926444147967e-03, +-6.686803886141363257e-03, +-6.704987916984624444e-03, +-6.723159990158909978e-03, +-6.741320076869999380e-03, +-6.759468148344684874e-03, +-6.777604175831584109e-03, +-6.795728130600009985e-03, +-6.813839983940432089e-03, +-6.831939707164799355e-03, +-6.850027271606873996e-03, +-6.868102648621233174e-03, +-6.886165809584104264e-03, +-6.904216725893172306e-03, +-6.922255368967861026e-03, +-6.940281710248981557e-03, +-6.958295721199044687e-03, +-6.976297373302019732e-03, +-6.994286638064231391e-03, +-7.012263487013142838e-03, +-7.030227891698262108e-03, +-7.048179823690859346e-03, +-7.066119254584354512e-03, +-7.084046155993891508e-03, +-7.101960499556454406e-03, +-7.119862256931702715e-03, +-7.137751399800723248e-03, +-7.155627899867002435e-03, +-7.173491728856038613e-03, +-7.191342858515889329e-03, +-7.209181260616553781e-03, +-7.227006906950424713e-03, +-7.244819769332064632e-03, +-7.262619819599020268e-03, +-7.280407029610698466e-03, +-7.298181371249147682e-03, +-7.315942816418898390e-03, +-7.333691337047291807e-03, +-7.351426905084034076e-03, +-7.369149492501579635e-03, +-7.386859071294862335e-03, +-7.404555613482297245e-03, +-7.422239091104179502e-03, +-7.439909476223932443e-03, +-7.457566740928361741e-03, +-7.475210857326602433e-03, +-7.492841797550956785e-03, +-7.510459533756642762e-03, +-7.528064038122229441e-03, +-7.545655282849087105e-03, +-7.563233240161829594e-03, +-7.580797882308048900e-03, +-7.598349181559176449e-03, +-7.615887110209315636e-03, +-7.633411640576109186e-03, +-7.650922745000396548e-03, +-7.668420395846790687e-03, +-7.685904565503043177e-03, +-7.703375226380436251e-03, +-7.720832350913676111e-03, +-7.738275911561581615e-03, +-7.755705880806022627e-03, +-7.773122231152632122e-03, +-7.790524935131005677e-03, +-7.807913965294274727e-03, +-7.825289294219384129e-03, +-7.842650894506978526e-03, +-7.859998738782148289e-03, +-7.877332799693291532e-03, +-7.894653049912993617e-03, +-7.911959462137818991e-03, +-7.929252009088529757e-03, +-7.946530663509802916e-03, +-7.963795398170511394e-03, +-7.981046185863526279e-03, +-7.998282999406611943e-03, +-8.015505811640954992e-03, +-8.032714595432277963e-03, +-8.049909323671186265e-03, +-8.067089969272104796e-03, +-8.084256505174060303e-03, +-8.101408904340473213e-03, +-8.118547139759554887e-03, +-8.135671184443847917e-03, +-8.152781011430517560e-03, +-8.169876593781247656e-03, +-8.186957904582953596e-03, +-8.204024916946727614e-03, +-8.221077604008582979e-03, +-8.238115938929353385e-03, +-8.255139894894909791e-03, +-8.272149445115803065e-03, +-8.289144562827579707e-03, +-8.306125221290603169e-03, +-8.323091393790860507e-03, +-8.340043053638763679e-03, +-8.356980174170011710e-03, +-8.373902728745660079e-03, +-8.390810690751766832e-03, +-8.407704033599616364e-03, +-8.424582730725686461e-03, +-8.441446755592241571e-03, +-8.458296081686394324e-03, +-8.475130682520841049e-03, +-8.491950531633627591e-03, +-8.508755602588584724e-03, +-8.525545868974696712e-03, +-8.542321304406725810e-03, +-8.559081882524919097e-03, +-8.575827576995358886e-03, +-8.592558361509683440e-03, +-8.609274209785263907e-03, +-8.625975095565077688e-03, +-8.642660992618464780e-03, +-8.659331874740079996e-03, +-8.675987715750588594e-03, +-8.692628489496805055e-03, +-8.709254169851290625e-03, +-8.725864730712733219e-03, +-8.742460146005650787e-03, +-8.759040389681237854e-03, +-8.775605435716303873e-03, +-8.792155258113951502e-03, +-8.808689830903472517e-03, +-8.825209128140708639e-03, +-8.841713123907468663e-03, +-8.858201792312062756e-03, +-8.874675107488939896e-03, +-8.891133043599591668e-03, +-8.907575574831360504e-03, +-8.924002675398298376e-03, +-8.940414319540941276e-03, +-8.956810481526664841e-03, +-8.973191135649162195e-03, +-8.989556256228766612e-03, +-9.005905817613034381e-03, +-9.022239794175683156e-03, +-9.038558160317435031e-03, +-9.054860890465787557e-03, +-9.071147959075312114e-03, +-9.087419340627247988e-03, +-9.103675009629837167e-03, +-9.119914940618258428e-03, +-9.136139108154960400e-03, +-9.152347486829201864e-03, +-9.168540051257407369e-03, +-9.184716776083005907e-03, +-9.200877635977126531e-03, +-9.217022605637585284e-03, +-9.233151659789544385e-03, +-9.249264773185739488e-03, +-9.265361920606009563e-03, +-9.281443076857607416e-03, +-9.297508216775055706e-03, +-9.313557315220887672e-03, +-9.329590347084575075e-03, +-9.345607287283308820e-03, +-9.361608110761811610e-03, +-9.377592792492586010e-03, +-9.393561307475629951e-03, +-9.409513630738643164e-03, +-9.425449737336962994e-03, +-9.441369602354154206e-03, +-9.457273200901084378e-03, +-9.473160508116631670e-03, +-9.489031499167533898e-03, +-9.504886149248657420e-03, +-9.520724433582566926e-03, +-9.536546327419804722e-03, +-9.552351806039404217e-03, +-9.568140844747973980e-03, +-9.583913418880559906e-03, +-9.599669503799878462e-03, +-9.615409074897595179e-03, +-9.631132107593063513e-03, +-9.646838577334049952e-03, +-9.662528459596541469e-03, +-9.678201729885160115e-03, +-9.693858363732626993e-03, +-9.709498336700143895e-03, +-9.725121624377263199e-03, +-9.740728202382543596e-03, +-9.756318046362524865e-03, +-9.771891131992517174e-03, +-9.787447434976372096e-03, +-9.802986931046820882e-03, +-9.818509595965072001e-03, +-9.834015405520910025e-03, +-9.849504335533438085e-03, +-9.864976361850030101e-03, +-9.880431460347123551e-03, +-9.895869606929829157e-03, +-9.911290777532550181e-03, +-9.926694948118323231e-03, +-9.942082094679284901e-03, +-9.957452193236352583e-03, +-9.972805219840116114e-03, +-9.988141150569705001e-03, +-1.000345996153360201e-02, +-1.001876162886928580e-02, +-1.003404612874374442e-02, +-1.004931343735303295e-02, +-1.006456353092229951e-02, +-1.007979638570657629e-02, +-1.009501197798970754e-02, +-1.011021028408526194e-02, +-1.012539128033571739e-02, +-1.014055494311385912e-02, +-1.015570124882137631e-02, +-1.017083017388958031e-02, +-1.018594169477941500e-02, +-1.020103578798161464e-02, +-1.021611243001626680e-02, +-1.023117159743333789e-02, +-1.024621326681224298e-02, +-1.026123741476275136e-02, +-1.027624401792388148e-02, +-1.029123305296462086e-02, +-1.030620449658381857e-02, +-1.032115832551040030e-02, +-1.033609451650301450e-02, +-1.035101304635022319e-02, +-1.036591389187105708e-02, +-1.038079702991414818e-02, +-1.039566243735830231e-02, +-1.041051009111246609e-02, +-1.042533996811587961e-02, +-1.044015204533777288e-02, +-1.045494629977772316e-02, +-1.046972270846533923e-02, +-1.048448124846107325e-02, +-1.049922189685517128e-02, +-1.051394463076846079e-02, +-1.052864942735201766e-02, +-1.054333626378768478e-02, +-1.055800511728748232e-02, +-1.057265596509402925e-02, +-1.058728878448035246e-02, +-1.060190355275057381e-02, +-1.061650024723872696e-02, +-1.063107884530979652e-02, +-1.064563932435973193e-02, +-1.066018166181481944e-02, +-1.067470583513222167e-02, +-1.068921182179980063e-02, +-1.070369959933650111e-02, +-1.071816914529188404e-02, +-1.073262043724647168e-02, +-1.074705345281152906e-02, +-1.076146816962984115e-02, +-1.077586456537463384e-02, +-1.079024261775033029e-02, +-1.080460230449239653e-02, +-1.081894360336754790e-02, +-1.083326649217349752e-02, +-1.084757094873908291e-02, +-1.086185695092430244e-02, +-1.087612447662079582e-02, +-1.089037350375102534e-02, +-1.090460401026881881e-02, +-1.091881597415956563e-02, +-1.093300937343985070e-02, +-1.094718418615765396e-02, +-1.096134039039229312e-02, +-1.097547796425507767e-02, +-1.098959688588822294e-02, +-1.100369713346573131e-02, +-1.101777868519310082e-02, +-1.103184151930763739e-02, +-1.104588561407808707e-02, +-1.105991094780488411e-02, +-1.107391749882010584e-02, +-1.108790524548801046e-02, +-1.110187416620405862e-02, +-1.111582423939561602e-02, +-1.112975544352235759e-02, +-1.114366775707534632e-02, +-1.115756115857772200e-02, +-1.117143562658443751e-02, +-1.118529113968269248e-02, +-1.119912767649144589e-02, +-1.121294521566179418e-02, +-1.122674373587671109e-02, +-1.124052321585173458e-02, +-1.125428363433410989e-02, +-1.126802497010341922e-02, +-1.128174720197127993e-02, +-1.129545030878186147e-02, +-1.130913426941136668e-02, +-1.132279906276826946e-02, +-1.133644466779336682e-02, +-1.135007106346014837e-02, +-1.136367822877414752e-02, +-1.137726614277332488e-02, +-1.139083478452834926e-02, +-1.140438413314216921e-02, +-1.141791416775026977e-02, +-1.143142486752067762e-02, +-1.144491621165431329e-02, +-1.145838817938431807e-02, +-1.147184074997663859e-02, +-1.148527390272982736e-02, +-1.149868761697541396e-02, +-1.151208187207735691e-02, +-1.152545664743253109e-02, +-1.153881192247046585e-02, +-1.155214767665406310e-02, +-1.156546388947836575e-02, +-1.157876054047174419e-02, +-1.159203760919527183e-02, +-1.160529507524341031e-02, +-1.161853291824325139e-02, +-1.163175111785486569e-02, +-1.164494965377165826e-02, +-1.165812850571992451e-02, +-1.167128765345917980e-02, +-1.168442707678181425e-02, +-1.169754675551400690e-02, +-1.171064666951460685e-02, +-1.172372679867584623e-02, +-1.173678712292318925e-02, +-1.174982762221568090e-02, +-1.176284827654534675e-02, +-1.177584906593780525e-02, +-1.178882997045177516e-02, +-1.180179097017996538e-02, +-1.181473204524802721e-02, +-1.182765317581525692e-02, +-1.184055434207443441e-02, +-1.185343552425203659e-02, +-1.186629670260800837e-02, +-1.187913785743571586e-02, +-1.189195896906261596e-02, +-1.190476001784950173e-02, +-1.191754098419088755e-02, +-1.193030184851501078e-02, +-1.194304259128402268e-02, +-1.195576319299370728e-02, +-1.196846363417373126e-02, +-1.198114389538748083e-02, +-1.199380395723249719e-02, +-1.200644380033999252e-02, +-1.201906340537513100e-02, +-1.203166275303700281e-02, +-1.204424182405898491e-02, +-1.205680059920818774e-02, +-1.206933905928575176e-02, +-1.208185718512716673e-02, +-1.209435495760176511e-02, +-1.210683235761310893e-02, +-1.211928936609883711e-02, +-1.213172596403109572e-02, +-1.214414213241600191e-02, +-1.215653785229390063e-02, +-1.216891310473944277e-02, +-1.218126787086174292e-02, +-1.219360213180412968e-02, +-1.220591586874428779e-02, +-1.221820906289425475e-02, +-1.223048169550076426e-02, +-1.224273374784473449e-02, +-1.225496520124162887e-02, +-1.226717603704137460e-02, +-1.227936623662862457e-02, +-1.229153578142242430e-02, +-1.230368465287632641e-02, +-1.231581283247891630e-02, +-1.232792030175302450e-02, +-1.234000704225633391e-02, +-1.235207303558106401e-02, +-1.236411826335449826e-02, +-1.237614270723842551e-02, +-1.238814634892945916e-02, +-1.240012917015902508e-02, +-1.241209115269351765e-02, +-1.242403227833410902e-02, +-1.243595252891684794e-02, +-1.244785188631263376e-02, +-1.245973033242766918e-02, +-1.247158784920282537e-02, +-1.248342441861401142e-02, +-1.249524002267220213e-02, +-1.250703464342356984e-02, +-1.251880826294921208e-02, +-1.253056086336524697e-02, +-1.254229242682340997e-02, +-1.255400293551008767e-02, +-1.256569237164716947e-02, +-1.257736071749151682e-02, +-1.258900795533558596e-02, +-1.260063406750683290e-02, +-1.261223903636809161e-02, +-1.262382284431749942e-02, +-1.263538547378882486e-02, +-1.264692690725083106e-02, +-1.265844712720792971e-02, +-1.266994611619979942e-02, +-1.268142385680180208e-02, +-1.269288033162467751e-02, +-1.270431552331451920e-02, +-1.271572941455332076e-02, +-1.272712198805844852e-02, +-1.273849322658282372e-02, +-1.274984311291478892e-02, +-1.276117162987894411e-02, +-1.277247876033504696e-02, +-1.278376448717863725e-02, +-1.279502879334106988e-02, +-1.280627166178949228e-02, +-1.281749307552665362e-02, +-1.282869301759128992e-02, +-1.283987147105767820e-02, +-1.285102841903641192e-02, +-1.286216384467359260e-02, +-1.287327773115132419e-02, +-1.288437006168754659e-02, +-1.289544081953633917e-02, +-1.290648998798768314e-02, +-1.291751755036734360e-02, +-1.292852349003756687e-02, +-1.293950779039630510e-02, +-1.295047043487763949e-02, +-1.296141140695173700e-02, +-1.297233069012506887e-02, +-1.298322826794007408e-02, +-1.299410412397536928e-02, +-1.300495824184579041e-02, +-1.301579060520261823e-02, +-1.302660119773304051e-02, +-1.303739000316077139e-02, +-1.304815700524557427e-02, +-1.305890218778383259e-02, +-1.306962553460809355e-02, +-1.308032702958724681e-02, +-1.309100665662654012e-02, +-1.310166439966801988e-02, +-1.311230024268979395e-02, +-1.312291416970625714e-02, +-1.313350616476891691e-02, +-1.314407621196531269e-02, +-1.315462429541961950e-02, +-1.316515039929257343e-02, +-1.317565450778164851e-02, +-1.318613660512074626e-02, +-1.319659667558042634e-02, +-1.320703470346783377e-02, +-1.321745067312713254e-02, +-1.322784456893879440e-02, +-1.323821637532022859e-02, +-1.324856607672538801e-02, +-1.325889365764531917e-02, +-1.326919910260759491e-02, +-1.327948239617669605e-02, +-1.328974352295378934e-02, +-1.329998246757731206e-02, +-1.331019921472218100e-02, +-1.332039374910032672e-02, +-1.333056605546075087e-02, +-1.334071611858924505e-02, +-1.335084392330860605e-02, +-1.336094945447858021e-02, +-1.337103269699619311e-02, +-1.338109363579523779e-02, +-1.339113225584667548e-02, +-1.340114854215843782e-02, +-1.341114247977582934e-02, +-1.342111405378102959e-02, +-1.343106324929345917e-02, +-1.344099005146963746e-02, +-1.345089444550363368e-02, +-1.346077641662621512e-02, +-1.347063595010560000e-02, +-1.348047303124755812e-02, +-1.349028764539469093e-02, +-1.350007977792720172e-02, +-1.350984941426240996e-02, +-1.351959653985524389e-02, +-1.352932114019781730e-02, +-1.353902320081961687e-02, +-1.354870270728749521e-02, +-1.355835964520608547e-02, +-1.356799400021713523e-02, +-1.357760575799993839e-02, +-1.358719490427127280e-02, +-1.359676142478557018e-02, +-1.360630530533464555e-02, +-1.361582653174794703e-02, +-1.362532508989238410e-02, +-1.363480096567279073e-02, +-1.364425414503127147e-02, +-1.365368461394766454e-02, +-1.366309235843962515e-02, +-1.367247736456229934e-02, +-1.368183961840869524e-02, +-1.369117910610925110e-02, +-1.370049581383263673e-02, +-1.370978972778492955e-02, +-1.371906083421003952e-02, +-1.372830911938969015e-02, +-1.373753456964354677e-02, +-1.374673717132900673e-02, +-1.375591691084135197e-02, +-1.376507377461359642e-02, +-1.377420774911718680e-02, +-1.378331882086083170e-02, +-1.379240697639153891e-02, +-1.380147220229415578e-02, +-1.381051448519174385e-02, +-1.381953381174511053e-02, +-1.382853016865313693e-02, +-1.383750354265288716e-02, +-1.384645392051926660e-02, +-1.385538128906545555e-02, +-1.386428563514254149e-02, +-1.387316694564001696e-02, +-1.388202520748521573e-02, +-1.389086040764381767e-02, +-1.389967253311951215e-02, +-1.390846157095439010e-02, +-1.391722750822856070e-02, +-1.392597033206054158e-02, +-1.393469002960682872e-02, +-1.394338658806257639e-02, +-1.395205999466093104e-02, +-1.396071023667341121e-02, +-1.396933730140988671e-02, +-1.397794117621858900e-02, +-1.398652184848603840e-02, +-1.399507930563713594e-02, +-1.400361353513542365e-02, +-1.401212452448246694e-02, +-1.402061226121852598e-02, +-1.402907673292220006e-02, +-1.403751792721066004e-02, +-1.404593583173949049e-02, +-1.405433043420277126e-02, +-1.406270172233303230e-02, +-1.407104968390167701e-02, +-1.407937430671823455e-02, +-1.408767557863109879e-02, +-1.409595348752699234e-02, +-1.410420802133166042e-02, +-1.411243916800909541e-02, +-1.412064691556207986e-02, +-1.412883125203207198e-02, +-1.413699216549921256e-02, +-1.414512964408225042e-02, +-1.415324367593862910e-02, +-1.416133424926482344e-02, +-1.416940135229572718e-02, +-1.417744497330509709e-02, +-1.418546510060540375e-02, +-1.419346172254812993e-02, +-1.420143482752336990e-02, +-1.420938440396012602e-02, +-1.421731044032610580e-02, +-1.422521292512820418e-02, +-1.423309184691192754e-02, +-1.424094719426175285e-02, +-1.424877895580095241e-02, +-1.425658712019201024e-02, +-1.426437167613613458e-02, +-1.427213261237341574e-02, +-1.427986991768323034e-02, +-1.428758358088372954e-02, +-1.429527359083208535e-02, +-1.430293993642443168e-02, +-1.431058260659619219e-02, +-1.431820159032157723e-02, +-1.432579687661400536e-02, +-1.433336845452596285e-02, +-1.434091631314899327e-02, +-1.434844044161383281e-02, +-1.435594082909034952e-02, +-1.436341746478734041e-02, +-1.437087033795316458e-02, +-1.437829943787506497e-02, +-1.438570475387953955e-02, +-1.439308627533228760e-02, +-1.440044399163832069e-02, +-1.440777789224181350e-02, +-1.441508796662606569e-02, +-1.442237420431398756e-02, +-1.442963659486751898e-02, +-1.443687512788787916e-02, +-1.444408979301570715e-02, +-1.445128057993092310e-02, +-1.445844747835283578e-02, +-1.446559047804000207e-02, +-1.447270956879043863e-02, +-1.447980474044155419e-02, +-1.448687598287015307e-02, +-1.449392328599233282e-02, +-1.450094663976376000e-02, +-1.450794603417949677e-02, +-1.451492145927408758e-02, +-1.452187290512137012e-02, +-1.452880036183498008e-02, +-1.453570381956780476e-02, +-1.454258326851231957e-02, +-1.454943869890048397e-02, +-1.455627010100385768e-02, +-1.456307746513354692e-02, +-1.456986078164009858e-02, +-1.457662004091377604e-02, +-1.458335523338446203e-02, +-1.459006634952147996e-02, +-1.459675337983388881e-02, +-1.460341631487024720e-02, +-1.461005514521902977e-02, +-1.461666986150813446e-02, +-1.462326045440516184e-02, +-1.462982691461736998e-02, +-1.463636923289184967e-02, +-1.464288740001526423e-02, +-1.464938140681397612e-02, +-1.465585124415431408e-02, +-1.466229690294205447e-02, +-1.466871837412285669e-02, +-1.467511564868215559e-02, +-1.468148871764524827e-02, +-1.468783757207706327e-02, +-1.469416220308241566e-02, +-1.470046260180586477e-02, +-1.470673875943205068e-02, +-1.471299066718515999e-02, +-1.471921831632935253e-02, +-1.472542169816859828e-02, +-1.473160080404695149e-02, +-1.473775562534808577e-02, +-1.474388615349568263e-02, +-1.474999237995334306e-02, +-1.475607429622469505e-02, +-1.476213189385314727e-02, +-1.476816516442201049e-02, +-1.477417409955479599e-02, +-1.478015869091478529e-02, +-1.478611893020529040e-02, +-1.479205480916961392e-02, +-1.479796631959109411e-02, +-1.480385345329304422e-02, +-1.480971620213881144e-02, +-1.481555455803175957e-02, +-1.482136851291540776e-02, +-1.482715805877318424e-02, +-1.483292318762870210e-02, +-1.483866389154550602e-02, +-1.484438016262739322e-02, +-1.485007199301818272e-02, +-1.485573937490181247e-02, +-1.486138230050229603e-02, +-1.486700076208389946e-02, +-1.487259475195093147e-02, +-1.487816426244783878e-02, +-1.488370928595933104e-02, +-1.488922981491012584e-02, +-1.489472584176528697e-02, +-1.490019735902991561e-02, +-1.490564435924953898e-02, +-1.491106683500965403e-02, +-1.491646477893614903e-02, +-1.492183818369497046e-02, +-1.492718704199244052e-02, +-1.493251134657516861e-02, +-1.493781109022987788e-02, +-1.494308626578357002e-02, +-1.494833686610373344e-02, +-1.495356288409795294e-02, +-1.495876431271402247e-02, +-1.496394114494027823e-02, +-1.496909337380525860e-02, +-1.497422099237783605e-02, +-1.497932399376707309e-02, +-1.498440237112266815e-02, +-1.498945611763443861e-02, +-1.499448522653257405e-02, +-1.499948969108769181e-02, +-1.500446950461084387e-02, +-1.500942466045334864e-02, +-1.501435515200696437e-02, +-1.501926097270379727e-02, +-1.502414211601651485e-02, +-1.502899857545803367e-02, +-1.503383034458173964e-02, +-1.503863741698142735e-02, +-1.504341978629153247e-02, +-1.504817744618664778e-02, +-1.505291039038198463e-02, +-1.505761861263327228e-02, +-1.506230210673650642e-02, +-1.506696086652839495e-02, +-1.507159488588589308e-02, +-1.507620415872675326e-02, +-1.508078867900898221e-02, +-1.508534844073118955e-02, +-1.508988343793247339e-02, +-1.509439366469245321e-02, +-1.509887911513139308e-02, +-1.510333978340989286e-02, +-1.510777566372926116e-02, +-1.511218675033136789e-02, +-1.511657303749850897e-02, +-1.512093451955369254e-02, +-1.512527119086030242e-02, +-1.512958304582260292e-02, +-1.513387007888518029e-02, +-1.513813228453332084e-02, +-1.514236965729294331e-02, +-1.514658219173052947e-02, +-1.515076988245314150e-02, +-1.515493272410850523e-02, +-1.515907071138505174e-02, +-1.516318383901167112e-02, +-1.516727210175800554e-02, +-1.517133549443434350e-02, +-1.517537401189164060e-02, +-1.517938764902139991e-02, +-1.518337640075589218e-02, +-1.518734026206796511e-02, +-1.519127922797130353e-02, +-1.519519329352014662e-02, +-1.519908245380943018e-02, +-1.520294670397475539e-02, +-1.520678603919252588e-02, +-1.521060045467978114e-02, +-1.521438994569418446e-02, +-1.521815450753432990e-02, +-1.522189413553931558e-02, +-1.522560882508911320e-02, +-1.522929857160427829e-02, +-1.523296337054625034e-02, +-1.523660321741712211e-02, +-1.524021810775973151e-02, +-1.524380803715764780e-02, +-1.524737300123535366e-02, +-1.525091299565785839e-02, +-1.525442801613107607e-02, +-1.525791805840160179e-02, +-1.526138311825697529e-02, +-1.526482319152533060e-02, +-1.526823827407554172e-02, +-1.527162836181757480e-02, +-1.527499345070184797e-02, +-1.527833353671974141e-02, +-1.528164861590332844e-02, +-1.528493868432574329e-02, +-1.528820373810056872e-02, +-1.529144377338245188e-02, +-1.529465878636672611e-02, +-1.529784877328962782e-02, +-1.530101373042817153e-02, +-1.530415365410019157e-02, +-1.530726854066427438e-02, +-1.531035838652010893e-02, +-1.531342318810789346e-02, +-1.531646294190886631e-02, +-1.531947764444503875e-02, +-1.532246729227926436e-02, +-1.532543188201526338e-02, +-1.532837141029762609e-02, +-1.533128587381178513e-02, +-1.533417526928399638e-02, +-1.533703959348137885e-02, +-1.533987884321201187e-02, +-1.534269301532471298e-02, +-1.534548210670925832e-02, +-1.534824611429628193e-02, +-1.535098503505722724e-02, +-1.535369886600449624e-02, +-1.535638760419137834e-02, +-1.535905124671190121e-02, +-1.536168979070111872e-02, +-1.536430323333500686e-02, +-1.536689157183027815e-02, +-1.536945480344469213e-02, +-1.537199292547675698e-02, +-1.537450593526594987e-02, +-1.537699383019267181e-02, +-1.537945660767820084e-02, +-1.538189426518468510e-02, +-1.538430680021523299e-02, +-1.538669421031375537e-02, +-1.538905649306518929e-02, +-1.539139364609527945e-02, +-1.539370566707077420e-02, +-1.539599255369931280e-02, +-1.539825430372930570e-02, +-1.540049091495026071e-02, +-1.540270238519260079e-02, +-1.540488871232744555e-02, +-1.540704989426705876e-02, +-1.540918592896452569e-02, +-1.541129681441389884e-02, +-1.541338254865000715e-02, +-1.541544312974885665e-02, +-1.541747855582713267e-02, +-1.541948882504256581e-02, +-1.542147393559373594e-02, +-1.542343388572022488e-02, +-1.542536867370251918e-02, +-1.542727829786198594e-02, +-1.542916275656093517e-02, +-1.543102204820264757e-02, +-1.543285617123120630e-02, +-1.543466512413179705e-02, +-1.543644890543033506e-02, +-1.543820751369384681e-02, +-1.543994094753016293e-02, +-1.544164920558805526e-02, +-1.544333228655725421e-02, +-1.544499018916838627e-02, +-1.544662291219301223e-02, +-1.544823045444361151e-02, +-1.544981281477364986e-02, +-1.545136999207734514e-02, +-1.545290198529005593e-02, +-1.545440879338791026e-02, +-1.545589041538796699e-02, +-1.545734685034831114e-02, +-1.545877809736778512e-02, +-1.546018415558631127e-02, +-1.546156502418467166e-02, +-1.546292070238446982e-02, +-1.546425118944837543e-02, +-1.546555648467984323e-02, +-1.546683658742333510e-02, +-1.546809149706417606e-02, +-1.546932121302861847e-02, +-1.547052573478378129e-02, +-1.547170506183775072e-02, +-1.547285919373951255e-02, +-1.547398813007890180e-02, +-1.547509187048670166e-02, +-1.547617041463456369e-02, +-1.547722376223510318e-02, +-1.547825191304174307e-02, +-1.547925486684886311e-02, +-1.548023262349174090e-02, +-1.548118518284645473e-02, +-1.548211254483003278e-02, +-1.548301470940048087e-02, +-1.548389167655652224e-02, +-1.548474344633784215e-02, +-1.548557001882503240e-02, +-1.548637139413954270e-02, +-1.548714757244363735e-02, +-1.548789855394051319e-02, +-1.548862433887421633e-02, +-1.548932492752966988e-02, +-1.549000032023264972e-02, +-1.549065051734980353e-02, +-1.549127551928858836e-02, +-1.549187532649738859e-02, +-1.549244993946540666e-02, +-1.549299935872268733e-02, +-1.549352358484007604e-02, +-1.549402261842936120e-02, +-1.549449646014304342e-02, +-1.549494511067461139e-02, +-1.549536857075826078e-02, +-1.549576684116905217e-02, +-1.549613992272289020e-02, +-1.549648781627645765e-02, +-1.549681052272727615e-02, +-1.549710804301367151e-02, +-1.549738037811481534e-02, +-1.549762752905066085e-02, +-1.549784949688193074e-02, +-1.549804628271017268e-02, +-1.549821788767771942e-02, +-1.549836431296771136e-02, +-1.549848555980407397e-02, +-1.549858162945142066e-02, +-1.549865252321526964e-02, +-1.549869824244187906e-02, +-1.549871878851821760e-02, +-1.549871416287200605e-02, +-1.549868436697184222e-02, +-1.549862940232693727e-02, +-1.549854927048730131e-02, +-1.549844397304377813e-02, +-1.549831351162776587e-02, +-1.549815788791153622e-02, +-1.549797710360805228e-02, +-1.549777116047094949e-02, +-1.549754006029469174e-02, +-1.549728380491433889e-02, +-1.549700239620569082e-02, +-1.549669583608528738e-02, +-1.549636412651036674e-02, +-1.549600726947877177e-02, +-1.549562526702910094e-02, +-1.549521812124059553e-02, +-1.549478583423327324e-02, +-1.549432840816766278e-02, +-1.549384584524502936e-02, +-1.549333814770731052e-02, +-1.549280531783711959e-02, +-1.549224735795758263e-02, +-1.549166427043256744e-02, +-1.549105605766661238e-02, +-1.549042272210479111e-02, +-1.548976426623275768e-02, +-1.548908069257700151e-02, +-1.548837200370427672e-02, +-1.548763820222225432e-02, +-1.548687929077903133e-02, +-1.548609527206331639e-02, +-1.548528614880441238e-02, +-1.548445192377218005e-02, +-1.548359259977707091e-02, +-1.548270817967007350e-02, +-1.548179866634270645e-02, +-1.548086406272709131e-02, +-1.547990437179587453e-02, +-1.547891959656216149e-02, +-1.547790974007965878e-02, +-1.547687480544256144e-02, +-1.547581479578555644e-02, +-1.547472971428388855e-02, +-1.547361956415321815e-02, +-1.547248434864975999e-02, +-1.547132407107016175e-02, +-1.547013873475158729e-02, +-1.546892834307154498e-02, +-1.546769289944817383e-02, +-1.546643240734001112e-02, +-1.546514687024586228e-02, +-1.546383629170519462e-02, +-1.546250067529778699e-02, +-1.546114002464380431e-02, +-1.545975434340391558e-02, +-1.545834363527910128e-02, +-1.545690790401077139e-02, +-1.545544715338072195e-02, +-1.545396138721108828e-02, +-1.545245060936443170e-02, +-1.545091482374359206e-02, +-1.544935403429178664e-02, +-1.544776824499266045e-02, +-1.544615745987003817e-02, +-1.544452168298816007e-02, +-1.544286091845152240e-02, +-1.544117517040498495e-02, +-1.543946444303364099e-02, +-1.543772874056299586e-02, +-1.543596806725866348e-02, +-1.543418242742656751e-02, +-1.543237182541296396e-02, +-1.543053626560432663e-02, +-1.542867575242732464e-02, +-1.542679029034885706e-02, +-1.542487988387615007e-02, +-1.542294453755648290e-02, +-1.542098425597743586e-02, +-1.541899904376675505e-02, +-1.541698890559237492e-02, +-1.541495384616239223e-02, +-1.541289387022501747e-02, +-1.541080898256871022e-02, +-1.540869918802200214e-02, +-1.540656449145358202e-02, +-1.540440489777223157e-02, +-1.540222041192685840e-02, +-1.540001103890649252e-02, +-1.539777678374018403e-02, +-1.539551765149714188e-02, +-1.539323364728661589e-02, +-1.539092477625790198e-02, +-1.538859104360033349e-02, +-1.538623245454327944e-02, +-1.538384901435619311e-02, +-1.538144072834844202e-02, +-1.537900760186949878e-02, +-1.537654964030875197e-02, +-1.537406684909563802e-02, +-1.537155923369947462e-02, +-1.536902679962961864e-02, +-1.536646955243537067e-02, +-1.536388749770590222e-02, +-1.536128064107038574e-02, +-1.535864898819780042e-02, +-1.535599254479721489e-02, +-1.535331131661740213e-02, +-1.535060530944711357e-02, +-1.534787452911490560e-02, +-1.534511898148926447e-02, +-1.534233867247846578e-02, +-1.533953360803058490e-02, +-1.533670379413366522e-02, +-1.533384923681539377e-02, +-1.533096994214333021e-02, +-1.532806591622476455e-02, +-1.532513716520683862e-02, +-1.532218369527642982e-02, +-1.531920551266009733e-02, +-1.531620262362421575e-02, +-1.531317503447485184e-02, +-1.531012275155777674e-02, +-1.530704578125840001e-02, +-1.530394413000198649e-02, +-1.530081780425327984e-02, +-1.529766681051678706e-02, +-1.529449115533662758e-02, +-1.529129084529661474e-02, +-1.528806588702006156e-02, +-1.528481628716999753e-02, +-1.528154205244899692e-02, +-1.527824318959922212e-02, +-1.527491970540245658e-02, +-1.527157160667990017e-02, +-1.526819890029242240e-02, +-1.526480159314038375e-02, +-1.526137969216368254e-02, +-1.525793320434161437e-02, +-1.525446213669305606e-02, +-1.525096649627639446e-02, +-1.524744629018940159e-02, +-1.524390152556925893e-02, +-1.524033220959266667e-02, +-1.523673834947573448e-02, +-1.523311995247393115e-02, +-1.522947702588207074e-02, +-1.522580957703451379e-02, +-1.522211761330479265e-02, +-1.521840114210595493e-02, +-1.521466017089017665e-02, +-1.521089470714918554e-02, +-1.520710475841386897e-02, +-1.520329033225440059e-02, +-1.519945143628030799e-02, +-1.519558807814026975e-02, +-1.519170026552233918e-02, +-1.518778800615374659e-02, +-1.518385130780085246e-02, +-1.517989017826937119e-02, +-1.517590462540418031e-02, +-1.517189465708910535e-02, +-1.516786028124740733e-02, +-1.516380150584138026e-02, +-1.515971833887247606e-02, +-1.515561078838116062e-02, +-1.515147886244707504e-02, +-1.514732256918896458e-02, +-1.514314191676463354e-02, +-1.513893691337080301e-02, +-1.513470756724336411e-02, +-1.513045388665725834e-02, +-1.512617587992630928e-02, +-1.512187355540335100e-02, +-1.511754692148029218e-02, +-1.511319598658795657e-02, +-1.510882075919594766e-02, +-1.510442124781296788e-02, +-1.509999746098663297e-02, +-1.509554940730337656e-02, +-1.509107709538848666e-02, +-1.508658053390615587e-02, +-1.508205973155943291e-02, +-1.507751469709025204e-02, +-1.507294543927910346e-02, +-1.506835196694555033e-02, +-1.506373428894788695e-02, +-1.505909241418299481e-02, +-1.505442635158664964e-02, +-1.504973611013332192e-02, +-1.504502169883621503e-02, +-1.504028312674716115e-02, +-1.503552040295669939e-02, +-1.503073353659406877e-02, +-1.502592253682709551e-02, +-1.502108741286223813e-02, +-1.501622817394456487e-02, +-1.501134482935777455e-02, +-1.500643738842411326e-02, +-1.500150586050439695e-02, +-1.499655025499786395e-02, +-1.499157058134245948e-02, +-1.498656684901457543e-02, +-1.498153906752895496e-02, +-1.497648724643896659e-02, +-1.497141139533640988e-02, +-1.496631152385140620e-02, +-1.496118764165262592e-02, +-1.495603975844707507e-02, +-1.495086788398018729e-02, +-1.494567202803559480e-02, +-1.494045220043544765e-02, +-1.493520841104020724e-02, +-1.492994066974859431e-02, +-1.492464898649754901e-02, +-1.491933337126245471e-02, +-1.491399383405672859e-02, +-1.490863038493229521e-02, +-1.490324303397901236e-02, +-1.489783179132505263e-02, +-1.489239666713686704e-02, +-1.488693767161897337e-02, +-1.488145481501391976e-02, +-1.487594810760254314e-02, +-1.487041755970377674e-02, +-1.486486318167448001e-02, +-1.485928498390973705e-02, +-1.485368297684262415e-02, +-1.484805717094428434e-02, +-1.484240757672375399e-02, +-1.483673420472810325e-02, +-1.483103706554248988e-02, +-1.482531616978987124e-02, +-1.481957152813119169e-02, +-1.481380315126530622e-02, +-1.480801104992896314e-02, +-1.480219523489682137e-02, +-1.479635571698125797e-02, +-1.479049250703260224e-02, +-1.478460561593901434e-02, +-1.477869505462634306e-02, +-1.477276083405826973e-02, +-1.476680296523624931e-02, +-1.476082145919947394e-02, +-1.475481632702472373e-02, +-1.474878757982654373e-02, +-1.474273522875728382e-02, +-1.473665928500680553e-02, +-1.473055975980252195e-02, +-1.472443666440969960e-02, +-1.471829001013094489e-02, +-1.471211980830668120e-02, +-1.470592607031461288e-02, +-1.469970880757011378e-02, +-1.469346803152613706e-02, +-1.468720375367310593e-02, +-1.468091598553865861e-02, +-1.467460473868821558e-02, +-1.466827002472443665e-02, +-1.466191185528739789e-02, +-1.465553024205461241e-02, +-1.464912519674094887e-02, +-1.464269673109861412e-02, +-1.463624485691701615e-02, +-1.462976958602304513e-02, +-1.462327093028072469e-02, +-1.461674890159152078e-02, +-1.461020351189385412e-02, +-1.460363477316356517e-02, +-1.459704269741364177e-02, +-1.459042729669430757e-02, +-1.458378858309270117e-02, +-1.457712656873329064e-02, +-1.457044126577763596e-02, +-1.456373268642435076e-02, +-1.455700084290907290e-02, +-1.455024574750444881e-02, +-1.454346741252037119e-02, +-1.453666585030333365e-02, +-1.452984107323714198e-02, +-1.452299309374239025e-02, +-1.451612192427672449e-02, +-1.450922757733446970e-02, +-1.450231006544708094e-02, +-1.449536940118271999e-02, +-1.448840559714654856e-02, +-1.448141866598019571e-02, +-1.447440862036249165e-02, +-1.446737547300883456e-02, +-1.446031923667146293e-02, +-1.445323992413908784e-02, +-1.444613754823743761e-02, +-1.443901212182873567e-02, +-1.443186365781198334e-02, +-1.442469216912269613e-02, +-1.441749766873300607e-02, +-1.441028016965180923e-02, +-1.440303968492425216e-02, +-1.439577622763229398e-02, +-1.438848981089427617e-02, +-1.438118044786516024e-02, +-1.437384815173613564e-02, +-1.436649293573509859e-02, +-1.435911481312621835e-02, +-1.435171379721025299e-02, +-1.434428990132390232e-02, +-1.433684313884068737e-02, +-1.432937352317022878e-02, +-1.432188106775852260e-02, +-1.431436578608775295e-02, +-1.430682769167650886e-02, +-1.429926679807952926e-02, +-1.429168311888760409e-02, +-1.428407666772799588e-02, +-1.427644745826396437e-02, +-1.426879550419495393e-02, +-1.426112081925645300e-02, +-1.425342341722006696e-02, +-1.424570331189355631e-02, +-1.423796051712064407e-02, +-1.423019504678090831e-02, +-1.422240691479019319e-02, +-1.421459613510019787e-02, +-1.420676272169860491e-02, +-1.419890668860876275e-02, +-1.419102804989024608e-02, +-1.418312681963832325e-02, +-1.417520301198414885e-02, +-1.416725664109459194e-02, +-1.415928772117246680e-02, +-1.415129626645635769e-02, +-1.414328229122031703e-02, +-1.413524580977440492e-02, +-1.412718683646425888e-02, +-1.411910538567123959e-02, +-1.411100147181220538e-02, +-1.410287510933979326e-02, +-1.409472631274214481e-02, +-1.408655509654302071e-02, +-1.407836147530154396e-02, +-1.407014546361258153e-02, +-1.406190707610632112e-02, +-1.405364632744853827e-02, +-1.404536323234030840e-02, +-1.403705780551822366e-02, +-1.402873006175414487e-02, +-1.402038001585552938e-02, +-1.401200768266475105e-02, +-1.400361307705988607e-02, +-1.399519621395409717e-02, +-1.398675710829578103e-02, +-1.397829577506867413e-02, +-1.396981222929161159e-02, +-1.396130648601868855e-02, +-1.395277856033903113e-02, +-1.394422846737695086e-02, +-1.393565622229189262e-02, +-1.392706184027836351e-02, +-1.391844533656574727e-02, +-1.390980672641859567e-02, +-1.390114602513642210e-02, +-1.389246324805376055e-02, +-1.388375841053992622e-02, +-1.387503152799920113e-02, +-1.386628261587082890e-02, +-1.385751168962892112e-02, +-1.384871876478212596e-02, +-1.383990385687420069e-02, +-1.383106698148362131e-02, +-1.382220815422344554e-02, +-1.381332739074161292e-02, +-1.380442470672066727e-02, +-1.379550011787795787e-02, +-1.378655363996512777e-02, +-1.377758528876876429e-02, +-1.376859508010986992e-02, +-1.375958302984413295e-02, +-1.375054915386153369e-02, +-1.374149346808676599e-02, +-1.373241598847887296e-02, +-1.372331673103151933e-02, +-1.371419571177237909e-02, +-1.370505294676389700e-02, +-1.369588845210276996e-02, +-1.368670224391990188e-02, +-1.367749433838061877e-02, +-1.366826475168446062e-02, +-1.365901350006536695e-02, +-1.364974059979116687e-02, +-1.364044606716414629e-02, +-1.363112991852066282e-02, +-1.362179217023135741e-02, +-1.361243283870052466e-02, +-1.360305194036697841e-02, +-1.359364949170343770e-02, +-1.358422550921663599e-02, +-1.357478000944719806e-02, +-1.356531300896981519e-02, +-1.355582452439312371e-02, +-1.354631457235969290e-02, +-1.353678316954563809e-02, +-1.352723033266132330e-02, +-1.351765607845076961e-02, +-1.350806042369169860e-02, +-1.349844338519568497e-02, +-1.348880497980802298e-02, +-1.347914522440780451e-02, +-1.346946413590739515e-02, +-1.345976173125323569e-02, +-1.345003802742518462e-02, +-1.344029304143674886e-02, +-1.343052679033482529e-02, +-1.342073929119998871e-02, +-1.341093056114629582e-02, +-1.340110061732130431e-02, +-1.339124947690565823e-02, +-1.338137715711377670e-02, +-1.337148367519341852e-02, +-1.336156904842566127e-02, +-1.335163329412458917e-02, +-1.334167642963794177e-02, +-1.333169847234659013e-02, +-1.332169943966456105e-02, +-1.331167934903917070e-02, +-1.330163821795079561e-02, +-1.329157606391311204e-02, +-1.328149290447256520e-02, +-1.327138875720898330e-02, +-1.326126363973515604e-02, +-1.325111756969685022e-02, +-1.324095056477274553e-02, +-1.323076264267460458e-02, +-1.322055382114700056e-02, +-1.321032411796754791e-02, +-1.320007355094638714e-02, +-1.318980213792680586e-02, +-1.317950989678479991e-02, +-1.316919684542902300e-02, +-1.315886300180098972e-02, +-1.314850838387481187e-02, +-1.313813300965749505e-02, +-1.312773689718825521e-02, +-1.311732006453927499e-02, +-1.310688252981525269e-02, +-1.309642431115337971e-02, +-1.308594542672330066e-02, +-1.307544589472722438e-02, +-1.306492573339985627e-02, +-1.305438496100829772e-02, +-1.304382359585183442e-02, +-1.303324165626231282e-02, +-1.302263916060397361e-02, +-1.301201612727330946e-02, +-1.300137257469875969e-02, +-1.299070852134136429e-02, +-1.298002398569429207e-02, +-1.296931898628275910e-02, +-1.295859354166415192e-02, +-1.294784767042805700e-02, +-1.293708139119609940e-02, +-1.292629472262176067e-02, +-1.291548768339076392e-02, +-1.290466029222066616e-02, +-1.289381256786114802e-02, +-1.288294452909347423e-02, +-1.287205619473107999e-02, +-1.286114758361914592e-02, +-1.285021871463474033e-02, +-1.283926960668643064e-02, +-1.282830027871484195e-02, +-1.281731074969224768e-02, +-1.280630103862257299e-02, +-1.279527116454124737e-02, +-1.278422114651558798e-02, +-1.277315100364443366e-02, +-1.276206075505783438e-02, +-1.275095041991777638e-02, +-1.273982001741761662e-02, +-1.272866956678211578e-02, +-1.271749908726740354e-02, +-1.270630859816110174e-02, +-1.269509811878215787e-02, +-1.268386766848093525e-02, +-1.267261726663874120e-02, +-1.266134693266843247e-02, +-1.265005668601414286e-02, +-1.263874654615112711e-02, +-1.262741653258553191e-02, +-1.261606666485494584e-02, +-1.260469696252794133e-02, +-1.259330744520418058e-02, +-1.258189813251417606e-02, +-1.257046904411967571e-02, +-1.255902019971331766e-02, +-1.254755161901839090e-02, +-1.253606332178940248e-02, +-1.252455532781154499e-02, +-1.251302765690101571e-02, +-1.250148032890448409e-02, +-1.248991336369957399e-02, +-1.247832678119462600e-02, +-1.246672060132873218e-02, +-1.245509484407128151e-02, +-1.244344952942266422e-02, +-1.243178467741365596e-02, +-1.242010030810576648e-02, +-1.240839644159070013e-02, +-1.239667309799084849e-02, +-1.238493029745922451e-02, +-1.237316806017873388e-02, +-1.236138640636306844e-02, +-1.234958535625614237e-02, +-1.233776493013232639e-02, +-1.232592514829590133e-02, +-1.231406603108168435e-02, +-1.230218759885457966e-02, +-1.229028987200987168e-02, +-1.227837287097239757e-02, +-1.226643661619778065e-02, +-1.225448112817129585e-02, +-1.224250642740854975e-02, +-1.223051253445458370e-02, +-1.221849946988493203e-02, +-1.220646725430484664e-02, +-1.219441590834959531e-02, +-1.218234545268401942e-02, +-1.217025590800302481e-02, +-1.215814729503131991e-02, +-1.214601963452298546e-02, +-1.213387294726226036e-02, +-1.212170725406283914e-02, +-1.210952257576814600e-02, +-1.209731893325104515e-02, +-1.208509634741414783e-02, +-1.207285483918948618e-02, +-1.206059442953879429e-02, +-1.204831513945282297e-02, +-1.203601698995215158e-02, +-1.202370000208661562e-02, +-1.201136419693549923e-02, +-1.199900959560713277e-02, +-1.198663621923942366e-02, +-1.197424408899936191e-02, +-1.196183322608336368e-02, +-1.194940365171655826e-02, +-1.193695538715365025e-02, +-1.192448845367834014e-02, +-1.191200287260321504e-02, +-1.189949866527009563e-02, +-1.188697585304974123e-02, +-1.187443445734199209e-02, +-1.186187449957505462e-02, +-1.184929600120676607e-02, +-1.183669898372340622e-02, +-1.182408346864023858e-02, +-1.181144947750090331e-02, +-1.179879703187825327e-02, +-1.178612615337362030e-02, +-1.177343686361709447e-02, +-1.176072918426720841e-02, +-1.174800313701126336e-02, +-1.173525874356509506e-02, +-1.172249602567313441e-02, +-1.170971500510789923e-02, +-1.169691570367075058e-02, +-1.168409814319145215e-02, +-1.167126234552782679e-02, +-1.165840833256628385e-02, +-1.164553612622151908e-02, +-1.163264574843650943e-02, +-1.161973722118211406e-02, +-1.160681056645775089e-02, +-1.159386580629091085e-02, +-1.158090296273718567e-02, +-1.156792205788001980e-02, +-1.155492311383119267e-02, +-1.154190615273033987e-02, +-1.152887119674522384e-02, +-1.151581826807103817e-02, +-1.150274738893140164e-02, +-1.148965858157761401e-02, +-1.147655186828859530e-02, +-1.146342727137127267e-02, +-1.145028481316018309e-02, +-1.143712451601767814e-02, +-1.142394640233354922e-02, +-1.141075049452538147e-02, +-1.139753681503830746e-02, +-1.138430538634514419e-02, +-1.137105623094573567e-02, +-1.135778937136788964e-02, +-1.134450483016664728e-02, +-1.133120262992453990e-02, +-1.131788279325122472e-02, +-1.130454534278391328e-02, +-1.129119030118696208e-02, +-1.127781769115219351e-02, +-1.126442753539810479e-02, +-1.125101985667085157e-02, +-1.123759467774362864e-02, +-1.122415202141645828e-02, +-1.121069191051668294e-02, +-1.119721436789851768e-02, +-1.118371941644339881e-02, +-1.117020707905908537e-02, +-1.115667737868079185e-02, +-1.114313033827044053e-02, +-1.112956598081677080e-02, +-1.111598432933511189e-02, +-1.110238540686778359e-02, +-1.108876923648365910e-02, +-1.107513584127842350e-02, +-1.106148524437402733e-02, +-1.104781746891934403e-02, +-1.103413253808960270e-02, +-1.102043047508692065e-02, +-1.100671130313916543e-02, +-1.099297504550121596e-02, +-1.097922172545419753e-02, +-1.096545136630534475e-02, +-1.095166399138850985e-02, +-1.093785962406364914e-02, +-1.092403828771715095e-02, +-1.091020000576110524e-02, +-1.089634480163418837e-02, +-1.088247269880108711e-02, +-1.086858372075260107e-02, +-1.085467789100531995e-02, +-1.084075523310206769e-02, +-1.082681577061154685e-02, +-1.081285952712849295e-02, +-1.079888652627310902e-02, +-1.078489679169182362e-02, +-1.077089034705682249e-02, +-1.075686721606575538e-02, +-1.074282742244232064e-02, +-1.072877098993568756e-02, +-1.071469794232089191e-02, +-1.070060830339808651e-02, +-1.068650209699338778e-02, +-1.067237934695835014e-02, +-1.065824007716998680e-02, +-1.064408431153055813e-02, +-1.062991207396797588e-02, +-1.061572338843534170e-02, +-1.060151827891132534e-02, +-1.058729676939928165e-02, +-1.057305888392828450e-02, +-1.055880464655260809e-02, +-1.054453408135165582e-02, +-1.053024721242951621e-02, +-1.051594406391575219e-02, +-1.050162465996498477e-02, +-1.048728902475655131e-02, +-1.047293718249489060e-02, +-1.045856915740937809e-02, +-1.044418497375436752e-02, +-1.042978465580850569e-02, +-1.041536822787579412e-02, +-1.040093571428476332e-02, +-1.038648713938871912e-02, +-1.037202252756539746e-02, +-1.035754190321738072e-02, +-1.034304529077181498e-02, +-1.032853271468041345e-02, +-1.031400419941902978e-02, +-1.029945976948839007e-02, +-1.028489944941349439e-02, +-1.027032326374375214e-02, +-1.025573123705273738e-02, +-1.024112339393849248e-02, +-1.022649975902341357e-02, +-1.021186035695362086e-02, +-1.019720521239987979e-02, +-1.018253435005690190e-02, +-1.016784779464359641e-02, +-1.015314557090265732e-02, +-1.013842770360099885e-02, +-1.012369421752943102e-02, +-1.010894513750286786e-02, +-1.009418048835954151e-02, +-1.007940029496202754e-02, +-1.006460458219664983e-02, +-1.004979337497351535e-02, +-1.003496669822594688e-02, +-1.002012457691148217e-02, +-1.000526703601109166e-02, +-9.990394100529400440e-03, +-9.975505795494369124e-03, +-9.960602145957645967e-03, +-9.945683176994485342e-03, +-9.930748913702970582e-03, +-9.915799381205150226e-03, +-9.900834604646198411e-03, +-9.885854609194621306e-03, +-9.870859420042003840e-03, +-9.855849062403320218e-03, +-9.840823561516647694e-03, +-9.825782942643334836e-03, +-9.810727231067321516e-03, +-9.795656452096079131e-03, +-9.780570631059913242e-03, +-9.765469793312150926e-03, +-9.750353964228779952e-03, +-9.735223169208903279e-03, +-9.720077433674544770e-03, +-9.704916783069965705e-03, +-9.689741242862738579e-03, +-9.674550838542864128e-03, +-9.659345595623184191e-03, +-9.644125539638838743e-03, +-9.628890696147794984e-03, +-9.613641090730450089e-03, +-9.598376748989905297e-03, +-9.583097696551011804e-03, +-9.567803959061906005e-03, +-9.552495562192533235e-03, +-9.537172531635456155e-03, +-9.521834893105029021e-03, +-9.506482672338278928e-03, +-9.491115895094267424e-03, +-9.475734587154288277e-03, +-9.460338774321458075e-03, +-9.444928482421247051e-03, +-9.429503737301156430e-03, +-9.414064564830140758e-03, +-9.398610990899685172e-03, +-9.383143041422842626e-03, +-9.367660742334717877e-03, +-9.352164119591867275e-03, +-9.336653199172905912e-03, +-9.321128007077997615e-03, +-9.305588569329217505e-03, +-9.290034911969693304e-03, +-9.274467061064682605e-03, +-9.258885042700788770e-03, +-9.243288882986162164e-03, +-9.227678608050198308e-03, +-9.212054244043864012e-03, +-9.196415817139499613e-03, +-9.180763353530860607e-03, +-9.165096879432479277e-03, +-9.149416421080629191e-03, +-9.133722004732678160e-03, +-9.118013656666890468e-03, +-9.102291403182867502e-03, +-9.086555270601179984e-03, +-9.070805285263567469e-03, +-9.055041473532133428e-03, +-9.039263861790710480e-03, +-9.023472476443557613e-03, +-9.007667343915970806e-03, +-8.991848490653606488e-03, +-8.976015943123310734e-03, +-8.960169727812482623e-03, +-8.944309871229266795e-03, +-8.928436399902149254e-03, +-8.912549340380470850e-03, +-8.896648719233955435e-03, +-8.880734563053025582e-03, +-8.864806898448004610e-03, +-8.848865752050110584e-03, +-8.832911150510838749e-03, +-8.816943120501708267e-03, +-8.800961688714775688e-03, +-8.784966881862225560e-03, +-8.768958726676552573e-03, +-8.752937249909836445e-03, +-8.736902478334869493e-03, +-8.720854438744160900e-03, +-8.704793157950399887e-03, +-8.688718662785883257e-03, +-8.672630980103145093e-03, +-8.656530136774413797e-03, +-8.640416159691974643e-03, +-8.624289075767285068e-03, +-8.608148911932109182e-03, +-8.591995695137754491e-03, +-8.575829452354926177e-03, +-8.559650210574152110e-03, +-8.543457996805423754e-03, +-8.527252838078451178e-03, +-8.511034761441686400e-03, +-8.494803793963889849e-03, +-8.478559962732666253e-03, +-8.462303294855214042e-03, +-8.446033817457487478e-03, +-8.429751557685192381e-03, +-8.413456542703050614e-03, +-8.397148799694994364e-03, +-8.380828355863784510e-03, +-8.364495238431484195e-03, +-8.348149474639104950e-03, +-8.331791091746722916e-03, +-8.315420117032890773e-03, +-8.299036577795477349e-03, +-8.282640501351083012e-03, +-8.266231915034866207e-03, +-8.249810846200951106e-03, +-8.233377322222071998e-03, +-8.216931370489739817e-03, +-8.200473018413581214e-03, +-8.184002293422238880e-03, +-8.167519222962740105e-03, +-8.151023834500621679e-03, +-8.134516155519562128e-03, +-8.117996213521902135e-03, +-8.101464036028184837e-03, +-8.084919650577391745e-03, +-8.068363084726228041e-03, +-8.051794366050113103e-03, +-8.035213522142314879e-03, +-8.018620580614662860e-03, +-8.002015569096198461e-03, +-7.985398515234604436e-03, +-7.968769446695405170e-03, +-7.952128391161814025e-03, +-7.935475376335137526e-03, +-7.918810429934365971e-03, +-7.902133579696560273e-03, +-7.885444853375807653e-03, +-7.868744278744560852e-03, +-7.852031883592605968e-03, +-7.835307695727478788e-03, +-7.818571742973942640e-03, +-7.801824053174536561e-03, +-7.785064654189184988e-03, +-7.768293573895360821e-03, +-7.751510840187297857e-03, +-7.734716480977199896e-03, +-7.717910524194351689e-03, +-7.701092997785007055e-03, +-7.684263929712876334e-03, +-7.667423347958655412e-03, +-7.650571280520358786e-03, +-7.633707755412442661e-03, +-7.616832800666904768e-03, +-7.599946444332496796e-03, +-7.583048714474962052e-03, +-7.566139639176588765e-03, +-7.549219246536771274e-03, +-7.532287564671538184e-03, +-7.515344621713811700e-03, +-7.498390445812619202e-03, +-7.481425065134154027e-03, +-7.464448507860903768e-03, +-7.447460802192333758e-03, +-7.430461976343520972e-03, +-7.413452058546674515e-03, +-7.396431077050214485e-03, +-7.379399060118673956e-03, +-7.362356036033117050e-03, +-7.345302033090772911e-03, +-7.328237079605219584e-03, +-7.311161203905651093e-03, +-7.294074434337905269e-03, +-7.276976799263654497e-03, +-7.259868327060737918e-03, +-7.242749046122589837e-03, +-7.225618984858884174e-03, +-7.208478171695067820e-03, +-7.191326635072541919e-03, +-7.174164403447980121e-03, +-7.156991505294269668e-03, +-7.139807969099825312e-03, +-7.122613823368799217e-03, +-7.105409096620604777e-03, +-7.088193817390505552e-03, +-7.070968014229288279e-03, +-7.053731715702673058e-03, +-7.036484950392290008e-03, +-7.019227746894974966e-03, +-7.001960133822900459e-03, +-6.984682139803261719e-03, +-6.967393793478673936e-03, +-6.950095123506860872e-03, +-6.932786158560837013e-03, +-6.915466927328104384e-03, +-6.898137458511627469e-03, +-6.880797780829472389e-03, +-6.863447923014492046e-03, +-6.846087913813969639e-03, +-6.828717781990525058e-03, +-6.811337556321453955e-03, +-6.793947265598778915e-03, +-6.776546938628962360e-03, +-6.759136604233407890e-03, +-6.741716291248159298e-03, +-6.724286028523234447e-03, +-6.706845844923733750e-03, +-6.689395769329003170e-03, +-6.671935830632831979e-03, +-6.654466057743148311e-03, +-6.636986479582408609e-03, +-6.619497125087255886e-03, +-6.601998023208696664e-03, +-6.584489202911370659e-03, +-6.566970693174535231e-03, +-6.549442522991350685e-03, +-6.531904721369123125e-03, +-6.514357317328762359e-03, +-6.496800339905421141e-03, +-6.479233818148216750e-03, +-6.461657781119524956e-03, +-6.444072257896042537e-03, +-6.426477277568009260e-03, +-6.408872869239442063e-03, +-6.391259062027708319e-03, +-6.373635885064016758e-03, +-6.356003367493050574e-03, +-6.338361538473150439e-03, +-6.320710427175487908e-03, +-6.303050062785155692e-03, +-6.285380474500683670e-03, +-6.267701691533751791e-03, +-6.250013743108842265e-03, +-6.232316658464161566e-03, +-6.214610466850948277e-03, +-6.196895197533613606e-03, +-6.179170879789273006e-03, +-6.161437542908394967e-03, +-6.143695216194485290e-03, +-6.125943928963374120e-03, +-6.108183710544333976e-03, +-6.090414590279260958e-03, +-6.072636597522877711e-03, +-6.054849761642387349e-03, +-6.037054112017885450e-03, +-6.019249678042045207e-03, +-6.001436489120270078e-03, +-5.983614574669899287e-03, +-5.965783964121331925e-03, +-5.947944686917225506e-03, +-5.930096772512668570e-03, +-5.912240250374794712e-03, +-5.894375149983322078e-03, +-5.876501500830117949e-03, +-5.858619332419359206e-03, +-5.840728674266840170e-03, +-5.822829555900990023e-03, +-5.804922006862170240e-03, +-5.787006056702469897e-03, +-5.769081734986166235e-03, +-5.751149071289365575e-03, +-5.733208095200201075e-03, +-5.715258836317893380e-03, +-5.697301324254296258e-03, +-5.679335588632501014e-03, +-5.661361659087503495e-03, +-5.643379565265297694e-03, +-5.625389336824057097e-03, +-5.607391003433234364e-03, +-5.589384594773837145e-03, +-5.571370140537970118e-03, +-5.553347670429405712e-03, +-5.535317214163098382e-03, +-5.517278801465496860e-03, +-5.499232462073596998e-03, +-5.481178225736205514e-03, +-5.463116122213132475e-03, +-5.445046181274925019e-03, +-5.426968432703468438e-03, +-5.408882906291473565e-03, +-5.390789631842806372e-03, +-5.372688639171581577e-03, +-5.354579958103310167e-03, +-5.336463618474087539e-03, +-5.318339650130856321e-03, +-5.300208082930865129e-03, +-5.282068946742332106e-03, +-5.263922271443921899e-03, +-5.245768086925042296e-03, +-5.227606423084928296e-03, +-5.209437309833909319e-03, +-5.191260777092519298e-03, +-5.173076854791363102e-03, +-5.154885572871605731e-03, +-5.136686961284527356e-03, +-5.118481049991824294e-03, +-5.100267868964562107e-03, +-5.082047448184831388e-03, +-5.063819817644262845e-03, +-5.045585007344711645e-03, +-5.027343047297419543e-03, +-5.009093967524099085e-03, +-4.990837798056065380e-03, +-4.972574568934548349e-03, +-4.954304310210205266e-03, +-4.936027051943692352e-03, +-4.917742824205160838e-03, +-4.899451657074597836e-03, +-4.881153580640889590e-03, +-4.862848625003034914e-03, +-4.844536820269370637e-03, +-4.826218196557304461e-03, +-4.807892783993901291e-03, +-4.789560612715396647e-03, +-4.771221712867501977e-03, +-4.752876114604490457e-03, +-4.734523848090380072e-03, +-4.716164943498105284e-03, +-4.697799431009719133e-03, +-4.679427340815970823e-03, +-4.661048703116872118e-03, +-4.642663548121213346e-03, +-4.624271906046840096e-03, +-4.605873807119781511e-03, +-4.587469281575430775e-03, +-4.569058359657543304e-03, +-4.550641071619087631e-03, +-4.532217447720669409e-03, +-4.513787518232168124e-03, +-4.495351313431940853e-03, +-4.476908863606126644e-03, +-4.458460199050134909e-03, +-4.440005350067265447e-03, +-4.421544346969367642e-03, +-4.403077220075958358e-03, +-4.384603999715372923e-03, +-4.366124716223896904e-03, +-4.347639399945989885e-03, +-4.329148081233896890e-03, +-4.310650790448139306e-03, +-4.292147557957100290e-03, +-4.273638414137280635e-03, +-4.255123389372419268e-03, +-4.236602514054630363e-03, +-4.218075818583755417e-03, +-4.199543333366974676e-03, +-4.181005088819437707e-03, +-4.162461115363831447e-03, +-4.143911443430553683e-03, +-4.125356103456923745e-03, +-4.106795125888326563e-03, +-4.088228541177333156e-03, +-4.069656379783995540e-03, +-4.051078672175347124e-03, +-4.032495448825987316e-03, +-4.013906740217632226e-03, +-3.995312576839326300e-03, +-3.976712989186649561e-03, +-3.958108007762816544e-03, +-3.939497663077761239e-03, +-3.920881985648876078e-03, +-3.902261005999566480e-03, +-3.883634754660753984e-03, +-3.865003262170122952e-03, +-3.846366559071779691e-03, +-3.827724675916856570e-03, +-3.809077643263020663e-03, +-3.790425491674766917e-03, +-3.771768251722541244e-03, +-3.753105953983900626e-03, +-3.734438629042643142e-03, +-3.715766307489096372e-03, +-3.697089019919627337e-03, +-3.678406796937231001e-03, +-3.659719669151045417e-03, +-3.641027667176618878e-03, +-3.622330821635042115e-03, +-3.603629163154152635e-03, +-3.584922722367599700e-03, +-3.566211529915185637e-03, +-3.547495616442322870e-03, +-3.528775012600664489e-03, +-3.510049749047823662e-03, +-3.491319856446595173e-03, +-3.472585365466143714e-03, +-3.453846306781148661e-03, +-3.435102711072031325e-03, +-3.416354609024539919e-03, +-3.397602031330257399e-03, +-3.378845008686190768e-03, +-3.360083571795017838e-03, +-3.341317751364164361e-03, +-3.322547578107072110e-03, +-3.303773082742167150e-03, +-3.284994295993638735e-03, +-3.266211248589973460e-03, +-3.247423971265510877e-03, +-3.228632494759501540e-03, +-3.209836849816368951e-03, +-3.191037067185221229e-03, +-3.172233177620414034e-03, +-3.153425211881347168e-03, +-3.134613200731618896e-03, +-3.115797174940283191e-03, +-3.096977165280927723e-03, +-3.078153202531945347e-03, +-3.059325317476085243e-03, +-3.040493540901002389e-03, +-3.021657903598788750e-03, +-3.002818436366280330e-03, +-2.983975170004122147e-03, +-2.965128135317982114e-03, +-2.946277363117695385e-03, +-2.927422884217479454e-03, +-2.908564729435504821e-03, +-2.889702929594451832e-03, +-2.870837515521272587e-03, +-2.851968518046374326e-03, +-2.833095968004852808e-03, +-2.814219896235597637e-03, +-2.795340333581548559e-03, +-2.776457310889242705e-03, +-2.757570859009371433e-03, +-2.738681008796332340e-03, +-2.719787791108469084e-03, +-2.700891236807210095e-03, +-2.681991376758146271e-03, +-2.663088241830596867e-03, +-2.644181862897286399e-03, +-2.625272270833947826e-03, +-2.606359496520368156e-03, +-2.587443570839552745e-03, +-2.568524524677930423e-03, +-2.549602388924925456e-03, +-2.530677194473529134e-03, +-2.511748972220031757e-03, +-2.492817753063232035e-03, +-2.473883567905665708e-03, +-2.454946447652707822e-03, +-2.436006423212819065e-03, +-2.417063525497109913e-03, +-2.398117785419889673e-03, +-2.379169233898206347e-03, +-2.360217901852123320e-03, +-2.341263820203806894e-03, +-2.322307019878767052e-03, +-2.303347531804915069e-03, +-2.284385386912893105e-03, +-2.265420616135554663e-03, +-2.246453250408569566e-03, +-2.227483320669935637e-03, +-2.208510857860269700e-03, +-2.189535892921879064e-03, +-2.170558456800011395e-03, +-2.151578580442038962e-03, +-2.132596294797220980e-03, +-2.113611630817263057e-03, +-2.094624619455859229e-03, +-2.075635291668962139e-03, +-2.056643678413863641e-03, +-2.037649810650348815e-03, +-2.018653719340171224e-03, +-1.999655435446835629e-03, +-1.980654989935100134e-03, +-1.961652413772097675e-03, +-1.942647737926432670e-03, +-1.923640993368462256e-03, +-1.904632211069804499e-03, +-1.885621422003942727e-03, +-1.866608657145722673e-03, +-1.847593947471662780e-03, +-1.828577323959010292e-03, +-1.809558817586995674e-03, +-1.790538459336031606e-03, +-1.771516280187433907e-03, +-1.752492311124037800e-03, +-1.733466583129694401e-03, +-1.714439127189557174e-03, +-1.695409974289175965e-03, +-1.676379155415722152e-03, +-1.657346701557084207e-03, +-1.638312643702147849e-03, +-1.619277012840299916e-03, +-1.600239839962042674e-03, +-1.581201156058490960e-03, +-1.562160992121664057e-03, +-1.543119379143572138e-03, +-1.524076348117439682e-03, +-1.505031930036925501e-03, +-1.485986155895835858e-03, +-1.466939056688741812e-03, +-1.447890663410475714e-03, +-1.428841007056418306e-03, +-1.409790118621485422e-03, +-1.390738029101777932e-03, +-1.371684769493042820e-03, +-1.352630370791474412e-03, +-1.333574863992714092e-03, +-1.314518280093057668e-03, +-1.295460650088575867e-03, +-1.276402004975364787e-03, +-1.257342375749090531e-03, +-1.238281793405551258e-03, +-1.219220288940224637e-03, +-1.200157893348526971e-03, +-1.181094637624907889e-03, +-1.162030552764086767e-03, +-1.142965669760244354e-03, +-1.123900019606779250e-03, +-1.104833633296874954e-03, +-1.085766541823035818e-03, +-1.066698776177352247e-03, +-1.047630367350608398e-03, +-1.028561346333493670e-03, +-1.009491744115707367e-03, +-9.904215916862347396e-04, +-9.713509200328666795e-04, +-9.522797601427754333e-04, +-9.332081430020643326e-04, +-9.141360995960137997e-04, +-8.950636609081902414e-04, +-8.759908579216734749e-04, +-8.569177216181470816e-04, +-8.378442829781839862e-04, +-8.187705729807480490e-04, +-7.996966226038016530e-04, +-7.806224628240347610e-04, +-7.615481246159615594e-04, +-7.424736389535746247e-04, +-7.233990368088109944e-04, +-7.043243491523432011e-04, +-6.852496069525795298e-04, +-6.661748411768855880e-04, +-6.471000827906833340e-04, +-6.280253627577252716e-04, +-6.089507120396165339e-04, +-5.898761615963951481e-04, +-5.708017423860688644e-04, +-5.517274853648787255e-04, +-5.326534214863919148e-04, +-5.135795817027399152e-04, +-4.945059969638142478e-04, +-4.754326982170106546e-04, +-4.563597164078089840e-04, +-4.372870824793067125e-04, +-4.182148273724814848e-04, +-3.991429820252932314e-04, +-3.800715773739094796e-04, +-3.610006443518043277e-04, +-3.419302138900291699e-04, +-3.228603169167339128e-04, +-3.037909843577582991e-04, +-2.847222471361553469e-04, +-2.656541361724590929e-04, +-2.465866823837858436e-04, +-2.275199166850603260e-04, +-2.084538699880061604e-04, +-1.893885732019488745e-04, +-1.703240572322775560e-04, +-1.512603529820941682e-04, +-1.321974913514205102e-04, +-1.131355032364046487e-04, +-9.407441953097077554e-05, +-7.501427112528152451e-05, +-5.595508890653868840e-05, +-3.689690375797611725e-05, +-1.783974656008600855e-05, + 1.216351810281940856e-06, + 2.027136047965128946e-05, + 3.932524857839374987e-05, + 5.837798524014145850e-05, + 7.742953960226198206e-05, + 9.647988080558963391e-05, + 1.155289779953243420e-04, + 1.345768003198084112e-04, + 1.536233169314236535e-04, + 1.726684969863248771e-04, + 1.917123096449136832e-04, + 2.107547240712501235e-04, + 2.297957094333163237e-04, + 2.488352349038094424e-04, + 2.678732696589154381e-04, + 2.869097828792105290e-04, + 3.059447437493914438e-04, + 3.249781214587487842e-04, + 3.440098852005825316e-04, + 3.630400041726740000e-04, + 3.820684475770168460e-04, + 4.010951846207191245e-04, + 4.201201845147726653e-04, + 4.391434164750685908e-04, + 4.581648497215857910e-04, + 4.771844534799361826e-04, + 4.962021969797094029e-04, + 5.152180494554851843e-04, + 5.342319801465543342e-04, + 5.532439582974015306e-04, + 5.722539531571149739e-04, + 5.912619339796487640e-04, + 6.102678700246149095e-04, + 6.292717305560569874e-04, + 6.482734848433554511e-04, + 6.672731021609513763e-04, + 6.862705517888242684e-04, + 7.052658030119060518e-04, + 7.242588251205518300e-04, + 7.432495874102700278e-04, + 7.622380591826300855e-04, + 7.812242097440231072e-04, + 8.002080084065762771e-04, + 8.191894244878723764e-04, + 8.381684273114291088e-04, + 8.571449862061088611e-04, + 8.761190705063882358e-04, + 8.950906495531347736e-04, + 9.140596926924005614e-04, + 9.330261692763077005e-04, + 9.519900486627858212e-04, + 9.709513002160429515e-04, + 9.899098933059766875e-04, + 1.008865797308660349e-03, + 1.027818981606051438e-03, + 1.046769415586913101e-03, + 1.065717068645567409e-03, + 1.084661910182927944e-03, + 1.103603909605669741e-03, + 1.122543036327788152e-03, + 1.141479259768933508e-03, + 1.160412549355424637e-03, + 1.179342874519983663e-03, + 1.198270204702189421e-03, + 1.217194509347920180e-03, + 1.236115757909587391e-03, + 1.255033919846944724e-03, + 1.273948964625851860e-03, + 1.292860861719189553e-03, + 1.311769580606573843e-03, + 1.330675090774831575e-03, + 1.349577361717422099e-03, + 1.368476362934904983e-03, + 1.387372063934673959e-03, + 1.406264434231846829e-03, + 1.425153443348045309e-03, + 1.444039060812303370e-03, + 1.462921256160777976e-03, + 1.481799998937238273e-03, + 1.500675258692478172e-03, + 1.519547004984775828e-03, + 1.538415207379637559e-03, + 1.557279835450685584e-03, + 1.576140858778444804e-03, + 1.594998246951131451e-03, + 1.613851969564905273e-03, + 1.632701996223284062e-03, + 1.651548296537634153e-03, + 1.670390840126882237e-03, + 1.689229596618407447e-03, + 1.708064535646944791e-03, + 1.726895626855049415e-03, + 1.745722839893351381e-03, + 1.764546144421034026e-03, + 1.783365510104712023e-03, + 1.802180906619338862e-03, + 1.820992303647924306e-03, + 1.839799670882004932e-03, + 1.858602978021091628e-03, + 1.877402194773084400e-03, + 1.896197290854061178e-03, + 1.914988235989118284e-03, + 1.933774999911202531e-03, + 1.952557552361864962e-03, + 1.971335863091528643e-03, + 1.990109901858913392e-03, + 2.008879638431484635e-03, + 2.027645042585220735e-03, + 2.046406084105467996e-03, + 2.065162732785736765e-03, + 2.083914958428623437e-03, + 2.102662730845485193e-03, + 2.121406019856957384e-03, + 2.140144795292342472e-03, + 2.158879026990110066e-03, + 2.177608684797593779e-03, + 2.196333738571892846e-03, + 2.215054158178675608e-03, + 2.233769913492948418e-03, + 2.252480974399315855e-03, + 2.271187310791403062e-03, + 2.289888892572304602e-03, + 2.308585689654365017e-03, + 2.327277671960002823e-03, + 2.345964809420662735e-03, + 2.364647071977242412e-03, + 2.383324429580376946e-03, + 2.401996852190882957e-03, + 2.420664309778683063e-03, + 2.439326772323664131e-03, + 2.457984209815422712e-03, + 2.476636592253744686e-03, + 2.495283889647993344e-03, + 2.513926072017614623e-03, + 2.532563109391836997e-03, + 2.551194971810583079e-03, + 2.569821629323243602e-03, + 2.588443051989464984e-03, + 2.607059209879420379e-03, + 2.625670073073185611e-03, + 2.644275611661269995e-03, + 2.662875795744293252e-03, + 2.681470595433909244e-03, + 2.700059980851566947e-03, + 2.718643922129418584e-03, + 2.737222389410058979e-03, + 2.755795352846952730e-03, + 2.774362782603900790e-03, + 2.792924648855479777e-03, + 2.811480921786790009e-03, + 2.830031571594309858e-03, + 2.848576568484741719e-03, + 2.867115882675839479e-03, + 2.885649484396189072e-03, + 2.904177343885642158e-03, + 2.922699431394741934e-03, + 2.941215717185017599e-03, + 2.959726171529795773e-03, + 2.978230764712646184e-03, + 2.996729467028854451e-03, + 3.015222248784635815e-03, + 3.033709080298138249e-03, + 3.052189931898219473e-03, + 3.070664773925353350e-03, + 3.089133576731333680e-03, + 3.107596310679747349e-03, + 3.126052946145427454e-03, + 3.144503453514879612e-03, + 3.162947803186023487e-03, + 3.181385965569097883e-03, + 3.199817911085420848e-03, + 3.218243610168197190e-03, + 3.236663033262761769e-03, + 3.255076150826000971e-03, + 3.273482933326813272e-03, + 3.291883351245855974e-03, + 3.310277375076418199e-03, + 3.328664975323225670e-03, + 3.347046122503287684e-03, + 3.365420787145691987e-03, + 3.383788939792006355e-03, + 3.402150550995740406e-03, + 3.420505591322814398e-03, + 3.438854031351245687e-03, + 3.457195841672083304e-03, + 3.475530992888176737e-03, + 3.493859455615061504e-03, + 3.512181200480689412e-03, + 3.530496198125888680e-03, + 3.548804419203828789e-03, + 3.567105834380207823e-03, + 3.585400414334164940e-03, + 3.603688129756690058e-03, + 3.621968951352066285e-03, + 3.640242849837142629e-03, + 3.658509795942267284e-03, + 3.676769760410149648e-03, + 3.695022713996651796e-03, + 3.713268627470605026e-03, + 3.731507471614240509e-03, + 3.749739217222587771e-03, + 3.767963835103966923e-03, + 3.786181296079741462e-03, + 3.804391570985137493e-03, + 3.822594630668097078e-03, + 3.840790445990130419e-03, + 3.858978987826059120e-03, + 3.877160227064464174e-03, + 3.895334134607137799e-03, + 3.913500681369317183e-03, + 3.931659838280436060e-03, + 3.949811576282981525e-03, + 3.967955866333328432e-03, + 3.986092679401481362e-03, + 4.004221986471551663e-03, + 4.022343758541133824e-03, + 4.040457966621851041e-03, + 4.058564581739027358e-03, + 4.076663574932537677e-03, + 4.094754917255706214e-03, + 4.112838579776183397e-03, + 4.130914533575251978e-03, + 4.148982749749239099e-03, + 4.167043199407965449e-03, + 4.185095853675721914e-03, + 4.203140683690942576e-03, + 4.221177660606755498e-03, + 4.239206755590322652e-03, + 4.257227939823157378e-03, + 4.275241184501870316e-03, + 4.293246460836948157e-03, + 4.311243740053665244e-03, + 4.329232993391836370e-03, + 4.347214192106177606e-03, + 4.365187307465863073e-03, + 4.383152310754874492e-03, + 4.401109173271822508e-03, + 4.419057866330741192e-03, + 4.436998361259959604e-03, + 4.454930629402919715e-03, + 4.472854642117983850e-03, + 4.490770370778807662e-03, + 4.508677786773803223e-03, + 4.526576861506445212e-03, + 4.544467566395915363e-03, + 4.562349872876035606e-03, + 4.580223752396072982e-03, + 4.598089176420485508e-03, + 4.615946116429383607e-03, + 4.633794543917957656e-03, + 4.651634430396927276e-03, + 4.669465747392304543e-03, + 4.687288466446217113e-03, + 4.705102559115754632e-03, + 4.722907996973934978e-03, + 4.740704751608925370e-03, + 4.758492794625503002e-03, + 4.776272097643498131e-03, + 4.794042632298728228e-03, + 4.811804370242758581e-03, + 4.829557283143335981e-03, + 4.847301342683830137e-03, + 4.865036520563497356e-03, + 4.882762788498216065e-03, + 4.900480118219311537e-03, + 4.918188481474454476e-03, + 4.935887850027321881e-03, + 4.953578195658140879e-03, + 4.971259490163049480e-03, + 4.988931705354577965e-03, + 5.006594813061416432e-03, + 5.024248785129206696e-03, + 5.041893593419432065e-03, + 5.059529209810217920e-03, + 5.077155606196144359e-03, + 5.094772754488625238e-03, + 5.112380626615362599e-03, + 5.129979194520842799e-03, + 5.147568430166010386e-03, + 5.165148305529170154e-03, + 5.182718792604787579e-03, + 5.200279863404276386e-03, + 5.217831489956185030e-03, + 5.235373644305721386e-03, + 5.252906298515111830e-03, + 5.270429424663399150e-03, + 5.287942994847286485e-03, + 5.305446981180054859e-03, + 5.322941355792028956e-03, + 5.340426090830806098e-03, + 5.357901158461702076e-03, + 5.375366530866718985e-03, + 5.392822180245357942e-03, + 5.410268078814372758e-03, + 5.427704198808243514e-03, + 5.445130512478569412e-03, + 5.462546992094531942e-03, + 5.479953609942684982e-03, + 5.497350338327695526e-03, + 5.514737149571324534e-03, + 5.532114016013039287e-03, + 5.549480910010355129e-03, + 5.566837803938197958e-03, + 5.584184670189437649e-03, + 5.601521481174561064e-03, + 5.618848209322507316e-03, + 5.636164827079593979e-03, + 5.653471306910299449e-03, + 5.670767621296976709e-03, + 5.688053742740374619e-03, + 5.705329643759038567e-03, + 5.722595296889765835e-03, + 5.739850674687328042e-03, + 5.757095749725296870e-03, + 5.774330494594986755e-03, + 5.791554881906097602e-03, + 5.808768884286979323e-03, + 5.825972474384121837e-03, + 5.843165624862514153e-03, + 5.860348308405503859e-03, + 5.877520497715509225e-03, + 5.894682165513057299e-03, + 5.911833284537210652e-03, + 5.928973827545772068e-03, + 5.946103767315757266e-03, + 5.963223076642349720e-03, + 5.980331728339702106e-03, + 5.997429695240729872e-03, + 6.014516950197511085e-03, + 6.031593466080759081e-03, + 6.048659215780237061e-03, + 6.065714172204538651e-03, + 6.082758308281908423e-03, + 6.099791596959039733e-03, + 6.116814011201945553e-03, + 6.133825523996033063e-03, + 6.150826108345707269e-03, + 6.167815737274678044e-03, + 6.184794383825828294e-03, + 6.201762021061913051e-03, + 6.218718622064550727e-03, + 6.235664159934949970e-03, + 6.252598607793742255e-03, + 6.269521938781323633e-03, + 6.286434126057401962e-03, + 6.303335142801380284e-03, + 6.320224962212111358e-03, + 6.337103557508689568e-03, + 6.353970901929433500e-03, + 6.370826968732551214e-03, + 6.387671731196038760e-03, + 6.404505162617995899e-03, + 6.421327236316162930e-03, + 6.438137925628101103e-03, + 6.454937203911966306e-03, + 6.471725044545423994e-03, + 6.488501420926173074e-03, + 6.505266306472077750e-03, + 6.522019674621622881e-03, + 6.538761498832946009e-03, + 6.555491752584601504e-03, + 6.572210409375347194e-03, + 6.588917442724508654e-03, + 6.605612826171537721e-03, + 6.622296533276344696e-03, + 6.638968537619140478e-03, + 6.655628812801132194e-03, + 6.672277332443553484e-03, + 6.688914070188291608e-03, + 6.705538999698085201e-03, + 6.722152094656096664e-03, + 6.738753328766243500e-03, + 6.755342675753038713e-03, + 6.771920109362288172e-03, + 6.788485603360107021e-03, + 6.805039131533571067e-03, + 6.821580667690701170e-03, + 6.838110185660631508e-03, + 6.854627659293248756e-03, + 6.871133062459548572e-03, + 6.887626369051427430e-03, + 6.904107552982409468e-03, + 6.920576588186671575e-03, + 6.937033448619719933e-03, + 6.953478108258207870e-03, + 6.969910541100379948e-03, + 6.986330721165479561e-03, + 7.002738622493994390e-03, + 7.019134219148523771e-03, + 7.035517485212230450e-03, + 7.051888394790206682e-03, + 7.068246922008795952e-03, + 7.084593041016495028e-03, + 7.100926725982796908e-03, + 7.117247951099027817e-03, + 7.133556690578133838e-03, + 7.149852918655033064e-03, + 7.166136609586151555e-03, + 7.182407737649798909e-03, + 7.198666277145932338e-03, + 7.214912202396976323e-03, + 7.231145487746698519e-03, + 7.247366107561034609e-03, + 7.263574036227833305e-03, + 7.279769248157264006e-03, + 7.295951717781283367e-03, + 7.312121419553944957e-03, + 7.328278327951955225e-03, + 7.344422417473698596e-03, + 7.360553662639986866e-03, + 7.376672037993838894e-03, + 7.392777518100891732e-03, + 7.408870077548819488e-03, + 7.424949690947870232e-03, + 7.441016332930480877e-03, + 7.457069978152152355e-03, + 7.473110601290407044e-03, + 7.489138177045434087e-03, + 7.505152680140020870e-03, + 7.521154085319819299e-03, + 7.537142367352896513e-03, + 7.553117501030179835e-03, + 7.569079461165213914e-03, + 7.585028222594680271e-03, + 7.600963760177765864e-03, + 7.616886048796500490e-03, + 7.632795063356365671e-03, + 7.648690778785246884e-03, + 7.664573170034221991e-03, + 7.680442212077360879e-03, + 7.696297879912007353e-03, + 7.712140148558415710e-03, + 7.727968993060070797e-03, + 7.743784388483457293e-03, + 7.759586309918842066e-03, + 7.775374732479275845e-03, + 7.791149631301227257e-03, + 7.806910981544488287e-03, + 7.822658758392492598e-03, + 7.838392937051822870e-03, + 7.854113492752490960e-03, + 7.869820400748494746e-03, + 7.885513636316883110e-03, + 7.901193174758435953e-03, + 7.916858991397547965e-03, + 7.932511061582438530e-03, + 7.948149360684837739e-03, + 7.963773864100300373e-03, + 7.979384547247949169e-03, + 7.994981385571295340e-03, + 8.010564354537143966e-03, + 8.026133429636471764e-03, + 8.041688586383778301e-03, + 8.057229800318296831e-03, + 8.072757047002639477e-03, + 8.088270302023711431e-03, + 8.103769540992337983e-03, + 8.119254739543795354e-03, + 8.134725873337203539e-03, + 8.150182918055852432e-03, + 8.165625849407770823e-03, + 8.181054643124737596e-03, + 8.196469274963024201e-03, + 8.211869720703183009e-03, + 8.227255956150395996e-03, + 8.242627957134049735e-03, + 8.257985699508028563e-03, + 8.273329159150617437e-03, + 8.288658311965116030e-03, + 8.303973133878896767e-03, + 8.319273600844116073e-03, + 8.334559688837532218e-03, + 8.349831373860827979e-03, + 8.365088631940170022e-03, + 8.380331439126559312e-03, + 8.395559771495647236e-03, + 8.410773605148462451e-03, + 8.425972916210366578e-03, + 8.441157680831722077e-03, + 8.456327875188154181e-03, + 8.471483475479973241e-03, + 8.486624457932617077e-03, + 8.501750798796454955e-03, + 8.516862474347389536e-03, + 8.531959460886058902e-03, + 8.547041734738433302e-03, + 8.562109272255357187e-03, + 8.577162049813655958e-03, + 8.592200043814824523e-03, + 8.607223230685887710e-03, + 8.622231586879148743e-03, + 8.637225088872563933e-03, + 8.652203713169239613e-03, + 8.667167436297851940e-03, + 8.682116234812457811e-03, + 8.697050085293131505e-03, + 8.711968964345010585e-03, + 8.726872848598960300e-03, + 8.741761714711748787e-03, + 8.756635539365596049e-03, + 8.771494299268500078e-03, + 8.786337971154094609e-03, + 8.801166531782277092e-03, + 8.815979957938313571e-03, + 8.830778226433492681e-03, + 8.845561314104943493e-03, + 8.860329197815982466e-03, + 8.875081854455646804e-03, + 8.889819260939063952e-03, + 8.904541394207328431e-03, + 8.919248231227991028e-03, + 8.933939748994368379e-03, + 8.948615924525896853e-03, + 8.963276734868581841e-03, + 8.977922157094260502e-03, + 8.992552168301281776e-03, + 9.007166745614039738e-03, + 9.021765866183759433e-03, + 9.036349507187679819e-03, + 9.050917645829345201e-03, + 9.065470259338787376e-03, + 9.080007324972995744e-03, + 9.094528820014968415e-03, + 9.109034721774374871e-03, + 9.123525007587427599e-03, + 9.137999654817211687e-03, + 9.152458640853228591e-03, + 9.166901943111736145e-03, + 9.181329539035540388e-03, + 9.195741406094750173e-03, + 9.210137521785741535e-03, + 9.224517863631827297e-03, + 9.238882409183427069e-03, + 9.253231136017600611e-03, + 9.267564021738500593e-03, + 9.281881043976971876e-03, + 9.296182180391439689e-03, + 9.310467408666849715e-03, + 9.324736706515448711e-03, + 9.338990051676418491e-03, + 9.353227421916378986e-03, + 9.367448795028897324e-03, + 9.381654148834843443e-03, + 9.395843461182124684e-03, + 9.410016709946457739e-03, + 9.424173873030386797e-03, + 9.438314928363972234e-03, + 9.452439853904608461e-03, + 9.466548627637239033e-03, + 9.480641227574186647e-03, + 9.494717631755085485e-03, + 9.508777818247531738e-03, + 9.522821765146405326e-03, + 9.536849450573968781e-03, + 9.550860852680325211e-03, + 9.564855949643479016e-03, + 9.578834719668768635e-03, + 9.592797140989383492e-03, + 9.606743191866202666e-03, + 9.620672850588105410e-03, + 9.634586095471570424e-03, + 9.648482904861050563e-03, + 9.662363257128707417e-03, + 9.676227130675127755e-03, + 9.690074503928338204e-03, + 9.703905355344493930e-03, + 9.717719663407994868e-03, + 9.731517406631060713e-03, + 9.745298563554081334e-03, + 9.759063112745429425e-03, + 9.772811032802104086e-03, + 9.786542302348866934e-03, + 9.800256900038785066e-03, + 9.813954804553166877e-03, + 9.827635994601836150e-03, + 9.841300448922717450e-03, + 9.854948146282158788e-03, + 9.868579065474758147e-03, + 9.882193185323972368e-03, + 9.895790484681277546e-03, + 9.909370942426836901e-03, + 9.922934537469167704e-03, + 9.936481248745633946e-03, + 9.950011055221972753e-03, + 9.963523935892400207e-03, + 9.977019869780313910e-03, + 9.990498835937392658e-03, + 1.000396081344393298e-02, + 1.001740578140907292e-02, + 1.003083371897113031e-02, + 1.004424460529675621e-02, + 1.005763841958162361e-02, + 1.007101514105020711e-02, + 1.008437474895607783e-02, + 1.009771722258157728e-02, + 1.011104254123807930e-02, + 1.012435068426583221e-02, + 1.013764163103453471e-02, + 1.015091536094247723e-02, + 1.016417185341734856e-02, + 1.017741108791574492e-02, + 1.019063304392370597e-02, + 1.020383770095627772e-02, + 1.021702503855760440e-02, + 1.023019503630155126e-02, + 1.024334767379087886e-02, + 1.025648293065779294e-02, + 1.026960078656371199e-02, + 1.028270122119978418e-02, + 1.029578421428623512e-02, + 1.030884974557291778e-02, + 1.032189779483895509e-02, + 1.033492834189344602e-02, + 1.034794136657454788e-02, + 1.036093684875019280e-02, + 1.037391476831786390e-02, + 1.038687510520480695e-02, + 1.039981783936776670e-02, + 1.041274295079329740e-02, + 1.042565041949752164e-02, + 1.043854022552663519e-02, + 1.045141234895634319e-02, + 1.046426676989207355e-02, + 1.047710346846961356e-02, + 1.048992242485417489e-02, + 1.050272361924096259e-02, + 1.051550703185511956e-02, + 1.052827264295196248e-02, + 1.054102043281659323e-02, + 1.055375038176421289e-02, + 1.056646247013992741e-02, + 1.057915667831940860e-02, + 1.059183298670798509e-02, + 1.060449137574126684e-02, + 1.061713182588505840e-02, + 1.062975431763547689e-02, + 1.064235883151875076e-02, + 1.065494534809129090e-02, + 1.066751384794024059e-02, + 1.068006431168260807e-02, + 1.069259671996598653e-02, + 1.070511105346822096e-02, + 1.071760729289780376e-02, + 1.073008541899350340e-02, + 1.074254541252459352e-02, + 1.075498725429078692e-02, + 1.076741092512262764e-02, + 1.077981640588094973e-02, + 1.079220367745722595e-02, + 1.080457272077357117e-02, + 1.081692351678288470e-02, + 1.082925604646859871e-02, + 1.084157029084489160e-02, + 1.085386623095667066e-02, + 1.086614384787975771e-02, + 1.087840312272061148e-02, + 1.089064403661646127e-02, + 1.090286657073577699e-02, + 1.091507070627751631e-02, + 1.092725642447168848e-02, + 1.093942370657919466e-02, + 1.095157253389212292e-02, + 1.096370288773333701e-02, + 1.097581474945679911e-02, + 1.098790810044742230e-02, + 1.099998292212157197e-02, + 1.101203919592638573e-02, + 1.102407690334022798e-02, + 1.103609602587259444e-02, + 1.104809654506440190e-02, + 1.106007844248754930e-02, + 1.107204169974525428e-02, + 1.108398629847200285e-02, + 1.109591222033385650e-02, + 1.110781944702790569e-02, + 1.111970796028260121e-02, + 1.113157774185806644e-02, + 1.114342877354565844e-02, + 1.115526103716814495e-02, + 1.116707451457978582e-02, + 1.117886918766666793e-02, + 1.119064503834598517e-02, + 1.120240204856678967e-02, + 1.121414020030931172e-02, + 1.122585947558604400e-02, + 1.123755985644063135e-02, + 1.124924132494854734e-02, + 1.126090386321691554e-02, + 1.127254745338470039e-02, + 1.128417207762256666e-02, + 1.129577771813292629e-02, + 1.130736435714986381e-02, + 1.131893197693974520e-02, + 1.133048055980038701e-02, + 1.134201008806155070e-02, + 1.135352054408511786e-02, + 1.136501191026475892e-02, + 1.137648416902609615e-02, + 1.138793730282670544e-02, + 1.139937129415649793e-02, + 1.141078612553713713e-02, + 1.142218177952239802e-02, + 1.143355823869817399e-02, + 1.144491548568264162e-02, + 1.145625350312593285e-02, + 1.146757227371046801e-02, + 1.147887178015073728e-02, + 1.149015200519379332e-02, + 1.150141293161864760e-02, + 1.151265454223662603e-02, + 1.152387681989156323e-02, + 1.153507974745940703e-02, + 1.154626330784861050e-02, + 1.155742748399985094e-02, + 1.156857225888657283e-02, + 1.157969761551435120e-02, + 1.159080353692133226e-02, + 1.160189000617796277e-02, + 1.161295700638768046e-02, + 1.162400452068604664e-02, + 1.163503253224130660e-02, + 1.164604102425431491e-02, + 1.165702997995867081e-02, + 1.166799938262041807e-02, + 1.167894921553839886e-02, + 1.168987946204400226e-02, + 1.170079010550167768e-02, + 1.171168112930833297e-02, + 1.172255251689360497e-02, + 1.173340425172018225e-02, + 1.174423631728338697e-02, + 1.175504869711145421e-02, + 1.176584137476537929e-02, + 1.177661433383936015e-02, + 1.178736755796022835e-02, + 1.179810103078783069e-02, + 1.180881473601498935e-02, + 1.181950865736761287e-02, + 1.183018277860453139e-02, + 1.184083708351762500e-02, + 1.185147155593180984e-02, + 1.186208617970533480e-02, + 1.187268093872930960e-02, + 1.188325581692807609e-02, + 1.189381079825903645e-02, + 1.190434586671302100e-02, + 1.191486100631389267e-02, + 1.192535620111870656e-02, + 1.193583143521804307e-02, + 1.194628669273559499e-02, + 1.195672195782827851e-02, + 1.196713721468633217e-02, + 1.197753244753374698e-02, + 1.198790764062747892e-02, + 1.199826277825800577e-02, + 1.200859784474924731e-02, + 1.201891282445866592e-02, + 1.202920770177704976e-02, + 1.203948246112880420e-02, + 1.204973708697166211e-02, + 1.205997156379729623e-02, + 1.207018587613062355e-02, + 1.208038000853014007e-02, + 1.209055394558819496e-02, + 1.210070767193059844e-02, + 1.211084117221685429e-02, + 1.212095443114005050e-02, + 1.213104743342733813e-02, + 1.214112016383921307e-02, + 1.215117260717013883e-02, + 1.216120474824816319e-02, + 1.217121657193543510e-02, + 1.218120806312766521e-02, + 1.219117920675451446e-02, + 1.220112998777938065e-02, + 1.221106039119986518e-02, + 1.222097040204720916e-02, + 1.223086000538665778e-02, + 1.224072918631739434e-02, + 1.225057792997260794e-02, + 1.226040622151956458e-02, + 1.227021404615931226e-02, + 1.228000138912733151e-02, + 1.228976823569290049e-02, + 1.229951457115931526e-02, + 1.230924038086408587e-02, + 1.231894565017906985e-02, + 1.232863036450999351e-02, + 1.233829450929686128e-02, + 1.234793807001380653e-02, + 1.235756103216934486e-02, + 1.236716338130611562e-02, + 1.237674510300102240e-02, + 1.238630618286517410e-02, + 1.239584660654429078e-02, + 1.240536635971815384e-02, + 1.241486542810091645e-02, + 1.242434379744111750e-02, + 1.243380145352177349e-02, + 1.244323838216026233e-02, + 1.245265456920825048e-02, + 1.246205000055223590e-02, + 1.247142466211279867e-02, + 1.248077853984520466e-02, + 1.249011161973919391e-02, + 1.249942388781909511e-02, + 1.250871533014371109e-02, + 1.251798593280647499e-02, + 1.252723568193534441e-02, + 1.253646456369315702e-02, + 1.254567256427708763e-02, + 1.255485966991908876e-02, + 1.256402586688577100e-02, + 1.257317114147855214e-02, + 1.258229548003346465e-02, + 1.259139886892127365e-02, + 1.260048129454746646e-02, + 1.260954274335263081e-02, + 1.261858320181174012e-02, + 1.262760265643472074e-02, + 1.263660109376661851e-02, + 1.264557850038693435e-02, + 1.265453486291031812e-02, + 1.266347016798613154e-02, + 1.267238440229889046e-02, + 1.268127755256791798e-02, + 1.269014960554741729e-02, + 1.269900054802665032e-02, + 1.270783036683004359e-02, + 1.271663904881680657e-02, + 1.272542658088128900e-02, + 1.273419294995280747e-02, + 1.274293814299594374e-02, + 1.275166214701020997e-02, + 1.276036494903022220e-02, + 1.276904653612599694e-02, + 1.277770689540233887e-02, + 1.278634601399948438e-02, + 1.279496387909263497e-02, + 1.280356047789252272e-02, + 1.281213579764485522e-02, + 1.282068982563057402e-02, + 1.282922254916601598e-02, + 1.283773395560282131e-02, + 1.284622403232785551e-02, + 1.285469276676331866e-02, + 1.286314014636668820e-02, + 1.287156615863098083e-02, + 1.287997079108438650e-02, + 1.288835403129062057e-02, + 1.289671586684871217e-02, + 1.290505628539331817e-02, + 1.291337527459432422e-02, + 1.292167282215706849e-02, + 1.292994891582268865e-02, + 1.293820354336753034e-02, + 1.294643669260351314e-02, + 1.295464835137811674e-02, + 1.296283850757445032e-02, + 1.297100714911111376e-02, + 1.297915426394233122e-02, + 1.298727984005780024e-02, + 1.299538386548319303e-02, + 1.300346632827951467e-02, + 1.301152721654350898e-02, + 1.301956651840756665e-02, + 1.302758422203994029e-02, + 1.303558031564437669e-02, + 1.304355478746050540e-02, + 1.305150762576357155e-02, + 1.305943881886480369e-02, + 1.306734835511105808e-02, + 1.307523622288490027e-02, + 1.308310241060494511e-02, + 1.309094690672542652e-02, + 1.309876969973653403e-02, + 1.310657077816427228e-02, + 1.311435013057065009e-02, + 1.312210774555346363e-02, + 1.312984361174644211e-02, + 1.313755771781914897e-02, + 1.314525005247735821e-02, + 1.315292060446256357e-02, + 1.316056936255230285e-02, + 1.316819631556014406e-02, + 1.317580145233572184e-02, + 1.318338476176456400e-02, + 1.319094623276823898e-02, + 1.319848585430464377e-02, + 1.320600361536744191e-02, + 1.321349950498652316e-02, + 1.322097351222785433e-02, + 1.322842562619355733e-02, + 1.323585583602188316e-02, + 1.324326413088722752e-02, + 1.325065050000005101e-02, + 1.325801493260732669e-02, + 1.326535741799190690e-02, + 1.327267794547292920e-02, + 1.327997650440579207e-02, + 1.328725308418227113e-02, + 1.329450767423014969e-02, + 1.330174026401372001e-02, + 1.330895084303335661e-02, + 1.331613940082598119e-02, + 1.332330592696468440e-02, + 1.333045041105885946e-02, + 1.333757284275437563e-02, + 1.334467321173341686e-02, + 1.335175150771449049e-02, + 1.335880772045252435e-02, + 1.336584183973899692e-02, + 1.337285385540167362e-02, + 1.337984375730476468e-02, + 1.338681153534880715e-02, + 1.339375717947122180e-02, + 1.340068067964545959e-02, + 1.340758202588175456e-02, + 1.341446120822667107e-02, + 1.342131821676342991e-02, + 1.342815304161173139e-02, + 1.343496567292785937e-02, + 1.344175610090454775e-02, + 1.344852431577133779e-02, + 1.345527030779419299e-02, + 1.346199406727567778e-02, + 1.346869558455515703e-02, + 1.347537485000838836e-02, + 1.348203185404797666e-02, + 1.348866658712291264e-02, + 1.349527903971933264e-02, + 1.350186920235966516e-02, + 1.350843706560316340e-02, + 1.351498262004576650e-02, + 1.352150585632024005e-02, + 1.352800676509603554e-02, + 1.353448533707929391e-02, + 1.354094156301297210e-02, + 1.354737543367688993e-02, + 1.355378693988758092e-02, + 1.356017607249840155e-02, + 1.356654282239946711e-02, + 1.357288718051781473e-02, + 1.357920913781732880e-02, + 1.358550868529859526e-02, + 1.359178581399936997e-02, + 1.359804051499404962e-02, + 1.360427277939400652e-02, + 1.361048259834732842e-02, + 1.361666996303946379e-02, + 1.362283486469238573e-02, + 1.362897729456521295e-02, + 1.363509724395387673e-02, + 1.364119470419146961e-02, + 1.364726966664788800e-02, + 1.365332212273015142e-02, + 1.365935206388208499e-02, + 1.366535948158486592e-02, + 1.367134436735641979e-02, + 1.367730671275174843e-02, + 1.368324650936300971e-02, + 1.368916374881932844e-02, + 1.369505842278698031e-02, + 1.370093052296917843e-02, + 1.370678004110651403e-02, + 1.371260696897640824e-02, + 1.371841129839349895e-02, + 1.372419302120958008e-02, + 1.372995212931361897e-02, + 1.373568861463161234e-02, + 1.374140246912685173e-02, + 1.374709368479964770e-02, + 1.375276225368772011e-02, + 1.375840816786580260e-02, + 1.376403141944593927e-02, + 1.376963200057725219e-02, + 1.377520990344627792e-02, + 1.378076512027669523e-02, + 1.378629764332929553e-02, + 1.379180746490249465e-02, + 1.379729457733170489e-02, + 1.380275897298953620e-02, + 1.380820064428610501e-02, + 1.381361958366878265e-02, + 1.381901578362221619e-02, + 1.382438923666832672e-02, + 1.382973993536640300e-02, + 1.383506787231319861e-02, + 1.384037304014264051e-02, + 1.384565543152607714e-02, + 1.385091503917223327e-02, + 1.385615185582722911e-02, + 1.386136587427461500e-02, + 1.386655708733525692e-02, + 1.387172548786745618e-02, + 1.387687106876690779e-02, + 1.388199382296685311e-02, + 1.388709374343777975e-02, + 1.389217082318781361e-02, + 1.389722505526244829e-02, + 1.390225643274465780e-02, + 1.390726494875484630e-02, + 1.391225059645094346e-02, + 1.391721336902836115e-02, + 1.392215325972004716e-02, + 1.392707026179633781e-02, + 1.393196436856534298e-02, + 1.393683557337243098e-02, + 1.394168386960062921e-02, + 1.394650925067049234e-02, + 1.395131171004014917e-02, + 1.395609124120528871e-02, + 1.396084783769910645e-02, + 1.396558149309242922e-02, + 1.397029220099375510e-02, + 1.397497995504900885e-02, + 1.397964474894177432e-02, + 1.398428657639339684e-02, + 1.398890543116266053e-02, + 1.399350130704598953e-02, + 1.399807419787753478e-02, + 1.400262409752908027e-02, + 1.400715099991000495e-02, + 1.401165489896732778e-02, + 1.401613578868580318e-02, + 1.402059366308788801e-02, + 1.402502851623364452e-02, + 1.402944034222084954e-02, + 1.403382913518493383e-02, + 1.403819488929916245e-02, + 1.404253759877440756e-02, + 1.404685725785918306e-02, + 1.405115386083994992e-02, + 1.405542740204078662e-02, + 1.405967787582346022e-02, + 1.406390527658749404e-02, + 1.406810959877028561e-02, + 1.407229083684686383e-02, + 1.407644898533010752e-02, + 1.408058403877057718e-02, + 1.408469599175674915e-02, + 1.408878483891483520e-02, + 1.409285057490877562e-02, + 1.409689319444035194e-02, + 1.410091269224918176e-02, + 1.410490906311271178e-02, + 1.410888230184615885e-02, + 1.411283240330252556e-02, + 1.411675936237277371e-02, + 1.412066317398569248e-02, + 1.412454383310770244e-02, + 1.412840133474341058e-02, + 1.413223567393503965e-02, + 1.413604684576271441e-02, + 1.413983484534451357e-02, + 1.414359966783628950e-02, + 1.414734130843187977e-02, + 1.415105976236295283e-02, + 1.415475502489895940e-02, + 1.415842709134750022e-02, + 1.416207595705387158e-02, + 1.416570161740137584e-02, + 1.416930406781116702e-02, + 1.417288330374236530e-02, + 1.417643932069199107e-02, + 1.417997211419505521e-02, + 1.418348167982437166e-02, + 1.418696801319086279e-02, + 1.419043110994325056e-02, + 1.419387096576824048e-02, + 1.419728757639062214e-02, + 1.420068093757296569e-02, + 1.420405104511589765e-02, + 1.420739789485796038e-02, + 1.421072148267573700e-02, + 1.421402180448381666e-02, + 1.421729885623465063e-02, + 1.422055263391873089e-02, + 1.422378313356457633e-02, + 1.422699035123867195e-02, + 1.423017428304550885e-02, + 1.423333492512754948e-02, + 1.423647227366532306e-02, + 1.423958632487735444e-02, + 1.424267707502012426e-02, + 1.424574452038823713e-02, + 1.424878865731426213e-02, + 1.425180948216877262e-02, + 1.425480699136043826e-02, + 1.425778118133585494e-02, + 1.426073204857984146e-02, + 1.426365958961505441e-02, + 1.426656380100233858e-02, + 1.426944467934056389e-02, + 1.427230222126656470e-02, + 1.427513642345534621e-02, + 1.427794728261990234e-02, + 1.428073479551134062e-02, + 1.428349895891878329e-02, + 1.428623976966941073e-02, + 1.428895722462857239e-02, + 1.429165132069961514e-02, + 1.429432205482396127e-02, + 1.429696942398110682e-02, + 1.429959342518873598e-02, + 1.430219405550244016e-02, + 1.430477131201607008e-02, + 1.430732519186143047e-02, + 1.430985569220853681e-02, + 1.431236281026543669e-02, + 1.431484654327830341e-02, + 1.431730688853129208e-02, + 1.431974384334689689e-02, + 1.432215740508553832e-02, + 1.432454757114579036e-02, + 1.432691433896428682e-02, + 1.432925770601590522e-02, + 1.433157766981348925e-02, + 1.433387422790811765e-02, + 1.433614737788888732e-02, + 1.433839711738307647e-02, + 1.434062344405609250e-02, + 1.434282635561140266e-02, + 1.434500584979066067e-02, + 1.434716192437359393e-02, + 1.434929457717809553e-02, + 1.435140380606017042e-02, + 1.435348960891398400e-02, + 1.435555198367179618e-02, + 1.435759092830394927e-02, + 1.435960644081910390e-02, + 1.436159851926379662e-02, + 1.436356716172292568e-02, + 1.436551236631941966e-02, + 1.436743413121427913e-02, + 1.436933245460681428e-02, + 1.437120733473435524e-02, + 1.437305876987238565e-02, + 1.437488675833453917e-02, + 1.437669129847261688e-02, + 1.437847238867651783e-02, + 1.438023002737427031e-02, + 1.438196421303215844e-02, + 1.438367494415451232e-02, + 1.438536221928374791e-02, + 1.438702603700054740e-02, + 1.438866639592370142e-02, + 1.439028329471007776e-02, + 1.439187673205479141e-02, + 1.439344670669101892e-02, + 1.439499321739013543e-02, + 1.439651626296159677e-02, + 1.439801584225308163e-02, + 1.439949195415028693e-02, + 1.440094459757722441e-02, + 1.440237377149593268e-02, + 1.440377947490657090e-02, + 1.440516170684756105e-02, + 1.440652046639531898e-02, + 1.440785575266450430e-02, + 1.440916756480782428e-02, + 1.441045590201627154e-02, + 1.441172076351884997e-02, + 1.441296214858272563e-02, + 1.441418005651320770e-02, + 1.441537448665373110e-02, + 1.441654543838590853e-02, + 1.441769291112943510e-02, + 1.441881690434215768e-02, + 1.441991741752007491e-02, + 1.442099445019726263e-02, + 1.442204800194593628e-02, + 1.442307807237646310e-02, + 1.442408466113732045e-02, + 1.442506776791515309e-02, + 1.442602739243460837e-02, + 1.442696353445858427e-02, + 1.442787619378806119e-02, + 1.442876537026204810e-02, + 1.442963106375776648e-02, + 1.443047327419054969e-02, + 1.443129200151372152e-02, + 1.443208724571893101e-02, + 1.443285900683568233e-02, + 1.443360728493177890e-02, + 1.443433208011306833e-02, + 1.443503339252337307e-02, + 1.443571122234483042e-02, + 1.443636556979751955e-02, + 1.443699643513965229e-02, + 1.443760381866750035e-02, + 1.443818772071548719e-02, + 1.443874814165611691e-02, + 1.443928508189988580e-02, + 1.443979854189545060e-02, + 1.444028852212950881e-02, + 1.444075502312684896e-02, + 1.444119804545028647e-02, + 1.444161758970080416e-02, + 1.444201365651732669e-02, + 1.444238624657692878e-02, + 1.444273536059465998e-02, + 1.444306099932370080e-02, + 1.444336316355525861e-02, + 1.444364185411857633e-02, + 1.444389707188093591e-02, + 1.444412881774763922e-02, + 1.444433709266211042e-02, + 1.444452189760569473e-02, + 1.444468323359791341e-02, + 1.444482110169610298e-02, + 1.444493550299575865e-02, + 1.444502643863045804e-02, + 1.444509390977163563e-02, + 1.444513791762879959e-02, + 1.444515846344950755e-02, + 1.444515554851928674e-02, + 1.444512917416161668e-02, + 1.444507934173799683e-02, + 1.444500605264798648e-02, + 1.444490930832901913e-02, + 1.444478911025655170e-02, + 1.444464545994406102e-02, + 1.444447835894291723e-02, + 1.444428780884251043e-02, + 1.444407381127018816e-02, + 1.444383636789122426e-02, + 1.444357548040882920e-02, + 1.444329115056423342e-02, + 1.444298338013654676e-02, + 1.444265217094285909e-02, + 1.444229752483811718e-02, + 1.444191944371530680e-02, + 1.444151792950518730e-02, + 1.444109298417661953e-02, + 1.444064460973618763e-02, + 1.444017280822850954e-02, + 1.443967758173608784e-02, + 1.443915893237920217e-02, + 1.443861686231619548e-02, + 1.443805137374315137e-02, + 1.443746246889413519e-02, + 1.443685015004098071e-02, + 1.443621441949348091e-02, + 1.443555527959927004e-02, + 1.443487273274376981e-02, + 1.443416678135029697e-02, + 1.443343742788005639e-02, + 1.443268467483199008e-02, + 1.443190852474296286e-02, + 1.443110898018759233e-02, + 1.443028604377835297e-02, + 1.442943971816551540e-02, + 1.442857000603713774e-02, + 1.442767691011915231e-02, + 1.442676043317519738e-02, + 1.442582057800670219e-02, + 1.442485734745293201e-02, + 1.442387074439082859e-02, + 1.442286077173523737e-02, + 1.442182743243861434e-02, + 1.442077072949128277e-02, + 1.441969066592124066e-02, + 1.441858724479424744e-02, + 1.441746046921377027e-02, + 1.441631034232100997e-02, + 1.441513686729491844e-02, + 1.441394004735209976e-02, + 1.441271988574686393e-02, + 1.441147638577129977e-02, + 1.441020955075506503e-02, + 1.440891938406556501e-02, + 1.440760588910785546e-02, + 1.440626906932462696e-02, + 1.440490892819634543e-02, + 1.440352546924090517e-02, + 1.440211869601408338e-02, + 1.440068861210910822e-02, + 1.439923522115691724e-02, + 1.439775852682604988e-02, + 1.439625853282261794e-02, + 1.439473524289044959e-02, + 1.439318866081078403e-02, + 1.439161879040259766e-02, + 1.439002563552234035e-02, + 1.438840920006411069e-02, + 1.438676948795950677e-02, + 1.438510650317771471e-02, + 1.438342024972540968e-02, + 1.438171073164685662e-02, + 1.437997795302381476e-02, + 1.437822191797556888e-02, + 1.437644263065891194e-02, + 1.437464009526810520e-02, + 1.437281431603493198e-02, + 1.437096529722865258e-02, + 1.436909304315597651e-02, + 1.436719755816114746e-02, + 1.436527884662572134e-02, + 1.436333691296882986e-02, + 1.436137176164697243e-02, + 1.435938339715409594e-02, + 1.435737182402152361e-02, + 1.435533704681803135e-02, + 1.435327907014981308e-02, + 1.435119789866037658e-02, + 1.434909353703066846e-02, + 1.434696598997895443e-02, + 1.434481526226088349e-02, + 1.434264135866945497e-02, + 1.434044428403498384e-02, + 1.433822404322516487e-02, + 1.433598064114497382e-02, + 1.433371408273664133e-02, + 1.433142437297983511e-02, + 1.432911151689133383e-02, + 1.432677551952540700e-02, + 1.432441638597335004e-02, + 1.432203412136392497e-02, + 1.431962873086298216e-02, + 1.431720021967372407e-02, + 1.431474859303653695e-02, + 1.431227385622896829e-02, + 1.430977601456589164e-02, + 1.430725507339927587e-02, + 1.430471103811822679e-02, + 1.430214391414918497e-02, + 1.429955370695562729e-02, + 1.429694042203820056e-02, + 1.429430406493473540e-02, + 1.429164464122013173e-02, + 1.428896215650649580e-02, + 1.428625661644285921e-02, + 1.428352802671557786e-02, + 1.428077639304791216e-02, + 1.427800172120032018e-02, + 1.427520401697022177e-02, + 1.427238328619213729e-02, + 1.426953953473765815e-02, + 1.426667276851523690e-02, + 1.426378299347057579e-02, + 1.426087021558620528e-02, + 1.425793444088175980e-02, + 1.425497567541372801e-02, + 1.425199392527569560e-02, + 1.424898919659813024e-02, + 1.424596149554845266e-02, + 1.424291082833098986e-02, + 1.423983720118700107e-02, + 1.423674062039475066e-02, + 1.423362109226931210e-02, + 1.423047862316254367e-02, + 1.422731321946329140e-02, + 1.422412488759733362e-02, + 1.422091363402708947e-02, + 1.421767946525199361e-02, + 1.421442238780816839e-02, + 1.421114240826867187e-02, + 1.420783953324320642e-02, + 1.420451376937838760e-02, + 1.420116512335751861e-02, + 1.419779360190072046e-02, + 1.419439921176479658e-02, + 1.419098195974328493e-02, + 1.418754185266646838e-02, + 1.418407889740139205e-02, + 1.418059310085167946e-02, + 1.417708446995762615e-02, + 1.417355301169629343e-02, + 1.416999873308139729e-02, + 1.416642164116308639e-02, + 1.416282174302842256e-02, + 1.415919904580089858e-02, + 1.415555355664062029e-02, + 1.415188528274428578e-02, + 1.414819423134513511e-02, + 1.414448040971315844e-02, + 1.414074382515457563e-02, + 1.413698448501234106e-02, + 1.413320239666587992e-02, + 1.412939756753110558e-02, + 1.412557000506036754e-02, + 1.412171971674262318e-02, + 1.411784671010312374e-02, + 1.411395099270373356e-02, + 1.411003257214254840e-02, + 1.410609145605421985e-02, + 1.410212765210977146e-02, + 1.409814116801661778e-02, + 1.409413201151849156e-02, + 1.409010019039551830e-02, + 1.408604571246422840e-02, + 1.408196858557731260e-02, + 1.407786881762394804e-02, + 1.407374641652947567e-02, + 1.406960139025569684e-02, + 1.406543374680042577e-02, + 1.406124349419795271e-02, + 1.405703064051864841e-02, + 1.405279519386929549e-02, + 1.404853716239264430e-02, + 1.404425655426778767e-02, + 1.403995337770996138e-02, + 1.403562764097060836e-02, + 1.403127935233724338e-02, + 1.402690852013352592e-02, + 1.402251515271922370e-02, + 1.401809925849031163e-02, + 1.401366084587868030e-02, + 1.400919992335237542e-02, + 1.400471649941554056e-02, + 1.400021058260824368e-02, + 1.399568218150667662e-02, + 1.399113130472293479e-02, + 1.398655796090525483e-02, + 1.398196215873762083e-02, + 1.397734390694019800e-02, + 1.397270321426896320e-02, + 1.396804008951584887e-02, + 1.396335454150868585e-02, + 1.395864657911119987e-02, + 1.395391621122300981e-02, + 1.394916344677959129e-02, + 1.394438829475222637e-02, + 1.393959076414801740e-02, + 1.393477086401003449e-02, + 1.392992860341683153e-02, + 1.392506399148302557e-02, + 1.392017703735882843e-02, + 1.391526775023033645e-02, + 1.391033613931916789e-02, + 1.390538221388283591e-02, + 1.390040598321442243e-02, + 1.389540745664278633e-02, + 1.389038664353234656e-02, + 1.388534355328320535e-02, + 1.388027819533106839e-02, + 1.387519057914735066e-02, + 1.387008071423886761e-02, + 1.386494861014812494e-02, + 1.385979427645319187e-02, + 1.385461772276765091e-02, + 1.384941895874049721e-02, + 1.384419799405639528e-02, + 1.383895483843550211e-02, + 1.383368950163317047e-02, + 1.382840199344049364e-02, + 1.382309232368385613e-02, + 1.381776050222507934e-02, + 1.381240653896139391e-02, + 1.380703044382535806e-02, + 1.380163222678496004e-02, + 1.379621189784351228e-02, + 1.379076946703950562e-02, + 1.378530494444692341e-02, + 1.377981834017496555e-02, + 1.377430966436805904e-02, + 1.376877892720592550e-02, + 1.376322613890346332e-02, + 1.375765130971086381e-02, + 1.375205444991350716e-02, + 1.374643556983174732e-02, + 1.374079467982134567e-02, + 1.373513179027314145e-02, + 1.372944691161289560e-02, + 1.372374005430175049e-02, + 1.371801122883574940e-02, + 1.371226044574607589e-02, + 1.370648771559886299e-02, + 1.370069304899533894e-02, + 1.369487645657168490e-02, + 1.368903794899919459e-02, + 1.368317753698390302e-02, + 1.367729523126699764e-02, + 1.367139104262449396e-02, + 1.366546498186736389e-02, + 1.365951705984130501e-02, + 1.365354728742708586e-02, + 1.364755567554031858e-02, + 1.364154223513121961e-02, + 1.363550697718502250e-02, + 1.362944991272168824e-02, + 1.362337105279595034e-02, + 1.361727040849723160e-02, + 1.361114799094980017e-02, + 1.360500381131253544e-02, + 1.359883788077909453e-02, + 1.359265021057764859e-02, + 1.358644081197112226e-02, + 1.358020969625711380e-02, + 1.357395687476776504e-02, + 1.356768235886982206e-02, + 1.356138615996449817e-02, + 1.355506828948774799e-02, + 1.354872875891001416e-02, + 1.354236757973595676e-02, + 1.353598476350510900e-02, + 1.352958032179127530e-02, + 1.352315426620266485e-02, + 1.351670660838204946e-02, + 1.351023736000650337e-02, + 1.350374653278758365e-02, + 1.349723413847098846e-02, + 1.349070018883695606e-02, + 1.348414469570000974e-02, + 1.347756767090895445e-02, + 1.347096912634681079e-02, + 1.346434907393093475e-02, + 1.345770752561287545e-02, + 1.345104449337847403e-02, + 1.344435998924757743e-02, + 1.343765402527439222e-02, + 1.343092661354718456e-02, + 1.342417776618839466e-02, + 1.341740749535444768e-02, + 1.341061581323597408e-02, + 1.340380273205769510e-02, + 1.339696826407820937e-02, + 1.339011242159027226e-02, + 1.338323521692058940e-02, + 1.337633666242993465e-02, + 1.336941677051278234e-02, + 1.336247555359778953e-02, + 1.335551302414744214e-02, + 1.334852919465810174e-02, + 1.334152407765993274e-02, + 1.333449768571704809e-02, + 1.332745003142733406e-02, + 1.332038112742258210e-02, + 1.331329098636803258e-02, + 1.330617962096300629e-02, + 1.329904704394046892e-02, + 1.329189326806706761e-02, + 1.328471830614308576e-02, + 1.327752217100255233e-02, + 1.327030487551318812e-02, + 1.326306643257604140e-02, + 1.325580685512609165e-02, + 1.324852615613175168e-02, + 1.324122434859498383e-02, + 1.323390144555124798e-02, + 1.322655746006957782e-02, + 1.321919240525237620e-02, + 1.321180629423566316e-02, + 1.320439914018873943e-02, + 1.319697095631434773e-02, + 1.318952175584871961e-02, + 1.318205155206140546e-02, + 1.317456035825508368e-02, + 1.316704818776608457e-02, + 1.315951505396386646e-02, + 1.315196097025105558e-02, + 1.314438595006371842e-02, + 1.313679000687105643e-02, + 1.312917315417555346e-02, + 1.312153540551258026e-02, + 1.311387677445098772e-02, + 1.310619727459262467e-02, + 1.309849691957249741e-02, + 1.309077572305849917e-02, + 1.308303369875179860e-02, + 1.307527086038651719e-02, + 1.306748722172989229e-02, + 1.305968279658181221e-02, + 1.305185759877542685e-02, + 1.304401164217681638e-02, + 1.303614494068482815e-02, + 1.302825750823126752e-02, + 1.302034935878076082e-02, + 1.301242050633090105e-02, + 1.300447096491185936e-02, + 1.299650074858678048e-02, + 1.298850987145146879e-02, + 1.298049834763468149e-02, + 1.297246619129753184e-02, + 1.296441341663409630e-02, + 1.295634003787103118e-02, + 1.294824606926765244e-02, + 1.294013152511578994e-02, + 1.293199641974000259e-02, + 1.292384076749732852e-02, + 1.291566458277748630e-02, + 1.290746788000236150e-02, + 1.289925067362665545e-02, + 1.289101297813745502e-02, + 1.288275480805428988e-02, + 1.287447617792897119e-02, + 1.286617710234583788e-02, + 1.285785759592168384e-02, + 1.284951767330526004e-02, + 1.284115734917801351e-02, + 1.283277663825350967e-02, + 1.282437555527764228e-02, + 1.281595411502840093e-02, + 1.280751233231610872e-02, + 1.279905022198327656e-02, + 1.279056779890460141e-02, + 1.278206507798662454e-02, + 1.277354207416829361e-02, + 1.276499880242061048e-02, + 1.275643527774655839e-02, + 1.274785151518106549e-02, + 1.273924752979118703e-02, + 1.273062333667592146e-02, + 1.272197895096629019e-02, + 1.271331438782493869e-02, + 1.270462966244668805e-02, + 1.269592479005833899e-02, + 1.268719978591809940e-02, + 1.267845466531637016e-02, + 1.266968944357515364e-02, + 1.266090413604832945e-02, + 1.265209875812138042e-02, + 1.264327332521162847e-02, + 1.263442785276797445e-02, + 1.262556235627113575e-02, + 1.261667685123315369e-02, + 1.260777135319792949e-02, + 1.259884587774088259e-02, + 1.258990044046899570e-02, + 1.258093505702065872e-02, + 1.257194974306583522e-02, + 1.256294451430612497e-02, + 1.255391938647411505e-02, + 1.254487437533419354e-02, + 1.253580949668204464e-02, + 1.252672476634473023e-02, + 1.251762020018042966e-02, + 1.250849581407892028e-02, + 1.249935162396108648e-02, + 1.249018764577915566e-02, + 1.248100389551632695e-02, + 1.247180038918729514e-02, + 1.246257714283778052e-02, + 1.245333417254466946e-02, + 1.244407149441589637e-02, + 1.243478912459054092e-02, + 1.242548707923869095e-02, + 1.241616537456158992e-02, + 1.240682402679116510e-02, + 1.239746305219059132e-02, + 1.238808246705404813e-02, + 1.237868228770627049e-02, + 1.236926253050315422e-02, + 1.235982321183144717e-02, + 1.235036434810863823e-02, + 1.234088595578299898e-02, + 1.233138805133356629e-02, + 1.232187065127025166e-02, + 1.231233377213365038e-02, + 1.230277743049478303e-02, + 1.229320164295561943e-02, + 1.228360642614865703e-02, + 1.227399179673704759e-02, + 1.226435777141437686e-02, + 1.225470436690487448e-02, + 1.224503159996324919e-02, + 1.223533948737488830e-02, + 1.222562804595513607e-02, + 1.221589729255027033e-02, + 1.220614724403677395e-02, + 1.219637791732140417e-02, + 1.218658932934137129e-02, + 1.217678149706421208e-02, + 1.216695443748779144e-02, + 1.215710816763991911e-02, + 1.214724270457893246e-02, + 1.213735806539330275e-02, + 1.212745426720163340e-02, + 1.211753132715260618e-02, + 1.210758926242508186e-02, + 1.209762809022798050e-02, + 1.208764782780036469e-02, + 1.207764849241088449e-02, + 1.206763010135878528e-02, + 1.205759267197296924e-02, + 1.204753622161210992e-02, + 1.203746076766499216e-02, + 1.202736632755027624e-02, + 1.201725291871635383e-02, + 1.200712055864145388e-02, + 1.199696926483357490e-02, + 1.198679905483049715e-02, + 1.197660994619985375e-02, + 1.196640195653850616e-02, + 1.195617510347342025e-02, + 1.194592940466101053e-02, + 1.193566487778742122e-02, + 1.192538154056809255e-02, + 1.191507941074823433e-02, + 1.190475850610247209e-02, + 1.189441884443503614e-02, + 1.188406044357926891e-02, + 1.187368332139825122e-02, + 1.186328749578434774e-02, + 1.185287298465918446e-02, + 1.184243980597380827e-02, + 1.183198797770851525e-02, + 1.182151751787303973e-02, + 1.181102844450589683e-02, + 1.180052077567523595e-02, + 1.178999452947816079e-02, + 1.177944972404103112e-02, + 1.176888637751915927e-02, + 1.175830450809702693e-02, + 1.174770413398818977e-02, + 1.173708527343526008e-02, + 1.172644794470944878e-02, + 1.171579216611142067e-02, + 1.170511795597049473e-02, + 1.169442533264505174e-02, + 1.168371431452193583e-02, + 1.167298492001720735e-02, + 1.166223716757558947e-02, + 1.165147107567052025e-02, + 1.164068666280422895e-02, + 1.162988394750761288e-02, + 1.161906294834033626e-02, + 1.160822368389040175e-02, + 1.159736617277469517e-02, + 1.158649043363858475e-02, + 1.157559648515607553e-02, + 1.156468434602939133e-02, + 1.155375403498954366e-02, + 1.154280557079583394e-02, + 1.153183897223612926e-02, + 1.152085425812626567e-02, + 1.150985144731088254e-02, + 1.149883055866272527e-02, + 1.148779161108292451e-02, + 1.147673462350060243e-02, + 1.146565961487341391e-02, + 1.145456660418719963e-02, + 1.144345561045549166e-02, + 1.143232665272046582e-02, + 1.142117975005214892e-02, + 1.141001492154872232e-02, + 1.139883218633620104e-02, + 1.138763156356882925e-02, + 1.137641307242862748e-02, + 1.136517673212572750e-02, + 1.135392256189787091e-02, + 1.134265058101087582e-02, + 1.133136080875837316e-02, + 1.132005326446186046e-02, + 1.130872796747019009e-02, + 1.129738493716038288e-02, + 1.128602419293711807e-02, + 1.127464575423240897e-02, + 1.126324964050624128e-02, + 1.125183587124599024e-02, + 1.124040446596688038e-02, + 1.122895544421114757e-02, + 1.121748882554893766e-02, + 1.120600462957780687e-02, + 1.119450287592272004e-02, + 1.118298358423583903e-02, + 1.117144677419697023e-02, + 1.115989246551308406e-02, + 1.114832067791863418e-02, + 1.113673143117493991e-02, + 1.112512474507091655e-02, + 1.111350063942257230e-02, + 1.110185913407311063e-02, + 1.109020024889271344e-02, + 1.107852400377879777e-02, + 1.106683041865590827e-02, + 1.105511951347529394e-02, + 1.104339130821549268e-02, + 1.103164582288194626e-02, + 1.101988307750704880e-02, + 1.100810309214988146e-02, + 1.099630588689663215e-02, + 1.098449148186015148e-02, + 1.097265989718021126e-02, + 1.096081115302315230e-02, + 1.094894526958218109e-02, + 1.093706226707713385e-02, + 1.092516216575471072e-02, + 1.091324498588768128e-02, + 1.090131074777592191e-02, + 1.088935947174568195e-02, + 1.087739117814979020e-02, + 1.086540588736731663e-02, + 1.085340361980405462e-02, + 1.084138439589223471e-02, + 1.082934823609002853e-02, + 1.081729516088239008e-02, + 1.080522519078046598e-02, + 1.079313834632166999e-02, + 1.078103464806951829e-02, + 1.076891411661389832e-02, + 1.075677677257078774e-02, + 1.074462263658244876e-02, + 1.073245172931685219e-02, + 1.072026407146839388e-02, + 1.070805968375739513e-02, + 1.069583858693023103e-02, + 1.068360080175901651e-02, + 1.067134634904200359e-02, + 1.065907524960325696e-02, + 1.064678752429280145e-02, + 1.063448319398614846e-02, + 1.062216227958487184e-02, + 1.060982480201648308e-02, + 1.059747078223358292e-02, + 1.058510024121502024e-02, + 1.057271319996502465e-02, + 1.056030967951355343e-02, + 1.054788970091597236e-02, + 1.053545328525326043e-02, + 1.052300045363195775e-02, + 1.051053122718413786e-02, + 1.049804562706689592e-02, + 1.048554367446308776e-02, + 1.047302539058088226e-02, + 1.046049079665374928e-02, + 1.044793991394026879e-02, + 1.043537276372447781e-02, + 1.042278936731569350e-02, + 1.041018974604794416e-02, + 1.039757392128089729e-02, + 1.038494191439910848e-02, + 1.037229374681230588e-02, + 1.035962943995503982e-02, + 1.034694901528706960e-02, + 1.033425249429298712e-02, + 1.032153989848250998e-02, + 1.030881124938982409e-02, + 1.029606656857433300e-02, + 1.028330587762013582e-02, + 1.027052919813619195e-02, + 1.025773655175597592e-02, + 1.024492796013787288e-02, + 1.023210344496487331e-02, + 1.021926302794475341e-02, + 1.020640673080942980e-02, + 1.019353457531574011e-02, + 1.018064658324526091e-02, + 1.016774277640342117e-02, + 1.015482317662057092e-02, + 1.014188780575133765e-02, + 1.012893668567482405e-02, + 1.011596983829418477e-02, + 1.010298728553717974e-02, + 1.008998904935566945e-02, + 1.007697515172596182e-02, + 1.006394561464805763e-02, + 1.005090046014659420e-02, + 1.003783971027014284e-02, + 1.002476338709142392e-02, + 1.001167151270703284e-02, + 9.998564109237715811e-03, + 9.985441198828159948e-03, + 9.972302803647100852e-03, + 9.959148945886737991e-03, + 9.945979647763586451e-03, + 9.932794931517855905e-03, + 9.919594819413353470e-03, + 9.906379333737813306e-03, + 9.893148496802683239e-03, + 9.879902330943121300e-03, + 9.866640858517496115e-03, + 9.853364101908282033e-03, + 9.840072083521278490e-03, + 9.826764825785929205e-03, + 9.813442351154879825e-03, + 9.800104682104505277e-03, + 9.786751841134486499e-03, + 9.773383850767961359e-03, + 9.760000733550955668e-03, + 9.746602512053411868e-03, + 9.733189208868314735e-03, + 9.719760846611484942e-03, + 9.706317447922351016e-03, + 9.692859035463373407e-03, + 9.679385631920152042e-03, + 9.665897260001136623e-03, + 9.652393942438003069e-03, + 9.638875701985372482e-03, + 9.625342561420962076e-03, + 9.611794543544925976e-03, + 9.598231671180705235e-03, + 9.584653967174529970e-03, + 9.571061454395412421e-03, + 9.557454155734876333e-03, + 9.543832094107491254e-03, + 9.530195292450355585e-03, + 9.516543773723332503e-03, + 9.502877560908520871e-03, + 9.489196677010995964e-03, + 9.475501145058245686e-03, + 9.461790988100056074e-03, + 9.448066229208901615e-03, + 9.434326891479544522e-03, + 9.420572998029308823e-03, + 9.406804571997370856e-03, + 9.393021636545685615e-03, + 9.379224214858275510e-03, + 9.365412330141469760e-03, + 9.351586005623541836e-03, + 9.337745264555139674e-03, + 9.323890130208914440e-03, + 9.310020625879765130e-03, + 9.296136774884047535e-03, + 9.282238600560788547e-03, + 9.268326126270565526e-03, + 9.254399375396111724e-03, + 9.240458371341575550e-03, + 9.226503137533368856e-03, + 9.212533697419591008e-03, + 9.198550074469881432e-03, + 9.184552292175841154e-03, + 9.170540374050614729e-03, + 9.156514343629167801e-03, + 9.142474224467589741e-03, + 9.128420040143943662e-03, + 9.114351814257688755e-03, + 9.100269570429793051e-03, + 9.086173332302497491e-03, + 9.072063123539572671e-03, + 9.057938967826155777e-03, + 9.043800888868771398e-03, + 9.029648910394788563e-03, + 9.015483056153300243e-03, + 9.001303349914368743e-03, + 8.987109815469365715e-03, + 8.972902476630502042e-03, + 8.958681357231273665e-03, + 8.944446481126354029e-03, + 8.930197872190875907e-03, + 8.915935554321454889e-03, + 8.901659551435394876e-03, + 8.887369887471052374e-03, + 8.873066586387279644e-03, + 8.858749672163997169e-03, + 8.844419168801838024e-03, + 8.830075100322291870e-03, + 8.815717490766919115e-03, + 8.801346364198660635e-03, + 8.786961744700696325e-03, + 8.772563656376936025e-03, + 8.758152123351353388e-03, + 8.743727169768863647e-03, + 8.729288819794770241e-03, + 8.714837097614471645e-03, + 8.700372027433997402e-03, + 8.685893633479595255e-03, + 8.671401939997968808e-03, + 8.656896971255543735e-03, + 8.642378751539427084e-03, + 8.627847305156696039e-03, + 8.613302656434677212e-03, + 8.598744829720462654e-03, + 8.584173849381435475e-03, + 8.569589739804891679e-03, + 8.554992525398208425e-03, + 8.540382230588255963e-03, + 8.525758879822179989e-03, + 8.511122497566810108e-03, + 8.496473108308841976e-03, + 8.481810736554500768e-03, + 8.467135406829928018e-03, + 8.452447143680992536e-03, + 8.437745971672757847e-03, + 8.423031915390257612e-03, + 8.408304999438002969e-03, + 8.393565248440032836e-03, + 8.378812687039582582e-03, + 8.364047339899611383e-03, + 8.349269231702290475e-03, + 8.334478387149265102e-03, + 8.319674830961189607e-03, + 8.304858587878256523e-03, + 8.290029682659773302e-03, + 8.275188140084335786e-03, + 8.260333984949259217e-03, + 8.245467242071338049e-03, + 8.230587936286344608e-03, + 8.215696092449044710e-03, + 8.200791735432991225e-03, + 8.185874890130888371e-03, + 8.170945581454350584e-03, + 8.156003834333437619e-03, + 8.141049673717393534e-03, + 8.126083124574112401e-03, + 8.111104211890277083e-03, + 8.096112960670975855e-03, + 8.081109395940207218e-03, + 8.066093542740421923e-03, + 8.051065426132857777e-03, + 8.036025071196684424e-03, + 8.020972503030096221e-03, + 8.005907746749493445e-03, + 7.990830827489791080e-03, + 7.975741770403915742e-03, + 7.960640600663435387e-03, + 7.945527343458012870e-03, + 7.930402023995706054e-03, + 7.915264667502294738e-03, + 7.900115299222128934e-03, + 7.884953944417572025e-03, + 7.869780628368792594e-03, + 7.854595376374244944e-03, + 7.839398213750188582e-03, + 7.824189165830931075e-03, + 7.808968257968429937e-03, + 7.793735515532649108e-03, + 7.778490963911349060e-03, + 7.763234628510136230e-03, + 7.747966534751897505e-03, + 7.732686708077605130e-03, + 7.717395173945757261e-03, + 7.702091957832453428e-03, + 7.686777085231146465e-03, + 7.671450581653004204e-03, + 7.656112472626714315e-03, + 7.640762783697901440e-03, + 7.625401540430057010e-03, + 7.610028768403829733e-03, + 7.594644493217235504e-03, + 7.579248740485294844e-03, + 7.563841535840440562e-03, + 7.548422904932221983e-03, + 7.532992873427455001e-03, + 7.517551467009502171e-03, + 7.502098711379303134e-03, + 7.486634632254576642e-03, + 7.471159255370099853e-03, + 7.455672606477289389e-03, + 7.440174711344637627e-03, + 7.424665595757432533e-03, + 7.409145285517840067e-03, + 7.393613806444313506e-03, + 7.378071184372352390e-03, + 7.362517445154397565e-03, + 7.346952614658730507e-03, + 7.331376718770761351e-03, + 7.315789783392248266e-03, + 7.300191834441538581e-03, + 7.284582897853098676e-03, + 7.268962999578115064e-03, + 7.253332165583958359e-03, + 7.237690421854509407e-03, + 7.222037794389404679e-03, + 7.206374309204970421e-03, + 7.190699992333565195e-03, + 7.175014869823748143e-03, + 7.159318967739906024e-03, + 7.143612312162743276e-03, + 7.127894929188873484e-03, + 7.112166844930988517e-03, + 7.096428085517265255e-03, + 7.080678677092188712e-03, + 7.064918645816026417e-03, + 7.049148017864560398e-03, + 7.033366819429553822e-03, + 7.017575076718411860e-03, + 7.001772815954342144e-03, + 6.985960063375657413e-03, + 6.970136845236735677e-03, + 6.954303187807307253e-03, + 6.938459117372706292e-03, + 6.922604660233400674e-03, + 6.906739842705516760e-03, + 6.890864691120453418e-03, + 6.874979231825085850e-03, + 6.859083491181031805e-03, + 6.843177495565550168e-03, + 6.827261271371338862e-03, + 6.811334845005448911e-03, + 6.795398242890650538e-03, + 6.779451491464499879e-03, + 6.763494617179766598e-03, + 6.747527646503793768e-03, + 6.731550605919165743e-03, + 6.715563521923236315e-03, + 6.699566421028362029e-03, + 6.683559329761127633e-03, + 6.667542274663385178e-03, + 6.651515282291559257e-03, + 6.635478379216749358e-03, + 6.619431592024417610e-03, + 6.603374947314833744e-03, + 6.587308471702738553e-03, + 6.571232191817480070e-03, + 6.555146134302334421e-03, + 6.539050325815478140e-03, + 6.522944793029330710e-03, + 6.506829562630365472e-03, + 6.490704661319556326e-03, + 6.474570115812021236e-03, + 6.458425952837184431e-03, + 6.442272199138100730e-03, + 6.426108881472397498e-03, + 6.409936026611566875e-03, + 6.393753661341200836e-03, + 6.377561812460515872e-03, + 6.361360506782965350e-03, + 6.345149771135696545e-03, + 6.328929632359913196e-03, + 6.312700117309899724e-03, + 6.296461252854514828e-03, + 6.280213065875821059e-03, + 6.263955583269799517e-03, + 6.247688831945458210e-03, + 6.231412838825927530e-03, + 6.215127630847693506e-03, + 6.198833234960506727e-03, + 6.182529678127700670e-03, + 6.166216987325980926e-03, + 6.149895189545477245e-03, + 6.133564311789122502e-03, + 6.117224381073558225e-03, + 6.100875424428509226e-03, + 6.084517468896872075e-03, + 6.068150541534404578e-03, + 6.051774669410167271e-03, + 6.035389879606173867e-03, + 6.018996199217554327e-03, + 6.002593655351830607e-03, + 5.986182275129955759e-03, + 5.969762085685483867e-03, + 5.953333114164925666e-03, + 5.936895387727180416e-03, + 5.920448933544184694e-03, + 5.903993778800581058e-03, + 5.887529950693073597e-03, + 5.871057476431498258e-03, + 5.854576383237991045e-03, + 5.838086698347310678e-03, + 5.821588449006299959e-03, + 5.805081662474523285e-03, + 5.788566366023750569e-03, + 5.772042586938233924e-03, + 5.755510352513851582e-03, + 5.738969690059509549e-03, + 5.722420626895788516e-03, + 5.705863190355676788e-03, + 5.689297407783684701e-03, + 5.672723306536886327e-03, + 5.656140913984249001e-03, + 5.639550257506406074e-03, + 5.622951364496133093e-03, + 5.606344262357986115e-03, + 5.589728978508481244e-03, + 5.573105540375326156e-03, + 5.556473975398543326e-03, + 5.539834311029548895e-03, + 5.523186574731564664e-03, + 5.506530793979032626e-03, + 5.489866996258229055e-03, + 5.473195209066834301e-03, + 5.456515459914120132e-03, + 5.439827776320221159e-03, + 5.423132185817151375e-03, + 5.406428715948057365e-03, + 5.389717394267437740e-03, + 5.372998248340695587e-03, + 5.356271305744720462e-03, + 5.339536594067581347e-03, + 5.322794140907859649e-03, + 5.306043973875749879e-03, + 5.289286120592249542e-03, + 5.272520608689341276e-03, + 5.255747465809673669e-03, + 5.238966719606995802e-03, + 5.222178397745760002e-03, + 5.205382527901370772e-03, + 5.188579137759301817e-03, + 5.171768255016511578e-03, + 5.154949907380122244e-03, + 5.138124122568122308e-03, + 5.121290928308446302e-03, + 5.104450352340094560e-03, + 5.087602422412283200e-03, + 5.070747166284761583e-03, + 5.053884611727296229e-03, + 5.037014786520287515e-03, + 5.020137718454454820e-03, + 5.003253435330155645e-03, + 4.986361964958483696e-03, + 4.969463335160463104e-03, + 4.952557573767316437e-03, + 4.935644708619958167e-03, + 4.918724767569594876e-03, + 4.901797778477274235e-03, + 4.884863769214116587e-03, + 4.867922767660520442e-03, + 4.850974801707255354e-03, + 4.834019899254644870e-03, + 4.817058088212816322e-03, + 4.800089396501280165e-03, + 4.783113852049462530e-03, + 4.766131482796205632e-03, + 4.749142316690128582e-03, + 4.732146381688732278e-03, + 4.715143705759506157e-03, + 4.698134316879246444e-03, + 4.681118243033813298e-03, + 4.664095512218627802e-03, + 4.647066152438270384e-03, + 4.630030191706626524e-03, + 4.612987658046426194e-03, + 4.595938579489822380e-03, + 4.578882984077936591e-03, + 4.561820899861086104e-03, + 4.544752354897989462e-03, + 4.527677377256859349e-03, + 4.510595995014620233e-03, + 4.493508236257100046e-03, + 4.476414129078649419e-03, + 4.459313701582625668e-03, + 4.442206981881217584e-03, + 4.425093998094619709e-03, + 4.407974778352273526e-03, + 4.390849350791968878e-03, + 4.373717743560065138e-03, + 4.356579984811144272e-03, + 4.339436102708477475e-03, + 4.322286125423627050e-03, + 4.305130081136648509e-03, + 4.287967998035309945e-03, + 4.270799904316211794e-03, + 4.253625828183935954e-03, + 4.236445797851284313e-03, + 4.219259841538890166e-03, + 4.202067987475726490e-03, + 4.184870263898651452e-03, + 4.167666699052711976e-03, + 4.150457321190242563e-03, + 4.133242158572048366e-03, + 4.116021239466640183e-03, + 4.098794592150035825e-03, + 4.081562244906246709e-03, + 4.064324226026872801e-03, + 4.047080563811241392e-03, + 4.029831286565998573e-03, + 4.012576422605591484e-03, + 3.995316000251871065e-03, + 3.978050047834332317e-03, + 3.960778593689315459e-03, + 3.943501666161059772e-03, + 3.926219293600934253e-03, + 3.908931504367671797e-03, + 3.891638326826923813e-03, + 3.874339789351810559e-03, + 3.857035920322462313e-03, + 3.839726748126306467e-03, + 3.822412301157182817e-03, + 3.805092607816535320e-03, + 3.787767696512622361e-03, + 3.770437595660299478e-03, + 3.753102333681588784e-03, + 3.735761939005180672e-03, + 3.718416440066716136e-03, + 3.701065865307973622e-03, + 3.683710243177955833e-03, + 3.666349602132115606e-03, + 3.648983970632512473e-03, + 3.631613377147478294e-03, + 3.614237850152106444e-03, + 3.596857418127788648e-03, + 3.579472109562524193e-03, + 3.562081952950033482e-03, + 3.544686976790832264e-03, + 3.527287209591960584e-03, + 3.509882679865765874e-03, + 3.492473416131433844e-03, + 3.475059446914046529e-03, + 3.457640800744849439e-03, + 3.440217506160797058e-03, + 3.422789591705084969e-03, + 3.405357085926733092e-03, + 3.387920017380825939e-03, + 3.370478414627677780e-03, + 3.353032306233968887e-03, + 3.335581720771895950e-03, + 3.318126686819454843e-03, + 3.300667232959958799e-03, + 3.283203387782623016e-03, + 3.265735179882084567e-03, + 3.248262637858676492e-03, + 3.230785790317598164e-03, + 3.213304665870037220e-03, + 3.195819293132417128e-03, + 3.178329700726198557e-03, + 3.160835917278379415e-03, + 3.143337971421078080e-03, + 3.125835891791771057e-03, + 3.108329707032482427e-03, + 3.090819445790872824e-03, + 3.073305136719441891e-03, + 3.055786808475784589e-03, + 3.038264489722098532e-03, + 3.020738209125804589e-03, + 3.003207995359023861e-03, + 2.985673877098888630e-03, + 2.968135883026680640e-03, + 2.950594041828884934e-03, + 2.933048382196711511e-03, + 2.915498932825890191e-03, + 2.897945722416221757e-03, + 2.880388779672606644e-03, + 2.862828133304307250e-03, + 2.845263812024709411e-03, + 2.827695844551866237e-03, + 2.810124259608058356e-03, + 2.792549085920031145e-03, + 2.774970352218190245e-03, + 2.757388087237687500e-03, + 2.739802319717639031e-03, + 2.722213078401342513e-03, + 2.704620392035830909e-03, + 2.687024289372444506e-03, + 2.669424799166370769e-03, + 2.651821950176889812e-03, + 2.634215771166549969e-03, + 2.616606290902305336e-03, + 2.598993538154673131e-03, + 2.581377541697971786e-03, + 2.563758330309900274e-03, + 2.546135932772081514e-03, + 2.528510377869808666e-03, + 2.510881694391294862e-03, + 2.493249911128854988e-03, + 2.475615056878008400e-03, + 2.457977160437784230e-03, + 2.440336250610233935e-03, + 2.422692356201029337e-03, + 2.405045506018956523e-03, + 2.387395728876212913e-03, + 2.369743053587453595e-03, + 2.352087508971341303e-03, + 2.334429123849084478e-03, + 2.316767927045204015e-03, + 2.299103947386608223e-03, + 2.281437213703686566e-03, + 2.263767754829631822e-03, + 2.246095599600138239e-03, + 2.228420776853989611e-03, + 2.210743315432594797e-03, + 2.193063244180247073e-03, + 2.175380591943277143e-03, + 2.157695387571194161e-03, + 2.140007659915868672e-03, + 2.122317437831749021e-03, + 2.104624750175443718e-03, + 2.086929625806250958e-03, + 2.069232093585733623e-03, + 2.051532182377956062e-03, + 2.033829921048652730e-03, + 2.016125338466351856e-03, + 1.998418463501568359e-03, + 1.980709325027028064e-03, + 1.962997951917224045e-03, + 1.945284373048987783e-03, + 1.927568617301218552e-03, + 1.909850713554155045e-03, + 1.892130690690520516e-03, + 1.874408577594667558e-03, + 1.856684403152846332e-03, + 1.838958196252750508e-03, + 1.821229985784069989e-03, + 1.803499800638043351e-03, + 1.785767669707716753e-03, + 1.768033621886987887e-03, + 1.750297686072167227e-03, + 1.732559891160518478e-03, + 1.714820266051035515e-03, + 1.697078839643473974e-03, + 1.679335640839500722e-03, + 1.661590698541876368e-03, + 1.643844041654670589e-03, + 1.626095699082842107e-03, + 1.608345699732787295e-03, + 1.590594072512079970e-03, + 1.572840846328741726e-03, + 1.555086050092379041e-03, + 1.537329712713353868e-03, + 1.519571863103013482e-03, + 1.501812530173271759e-03, + 1.484051742837138059e-03, + 1.466289530008282231e-03, + 1.448525920601283342e-03, + 1.430760943530789411e-03, + 1.412994627712661462e-03, + 1.395227002063131752e-03, + 1.377458095499056821e-03, + 1.359687936937464944e-03, + 1.341916555296120356e-03, + 1.324143979493067232e-03, + 1.306370238446880137e-03, + 1.288595361075833530e-03, + 1.270819376299033672e-03, + 1.253042313035680711e-03, + 1.235264200204833204e-03, + 1.217485066725941967e-03, + 1.199704941518413368e-03, + 1.181923853501857819e-03, + 1.164141831595154547e-03, + 1.146358904717991812e-03, + 1.128575101789419275e-03, + 1.110790451728609117e-03, + 1.093004983453912558e-03, + 1.075218725883996754e-03, + 1.057431707937013651e-03, + 1.039643958530842840e-03, + 1.021855506582653112e-03, + 1.004066381009450625e-03, + 9.862766107278275914e-04, + 9.684862246532310870e-04, + 9.506952517010926846e-04, + 9.329037207860052180e-04, + 9.151116608219578372e-04, + 8.973191007219014602e-04, + 8.795260693982954276e-04, + 8.617325957626615707e-04, + 8.439387087258369384e-04, + 8.261444371971315894e-04, + 8.083498100854779548e-04, + 7.905548562985782214e-04, + 7.727596047431687688e-04, + 7.549640843245689244e-04, + 7.371683239472295694e-04, + 7.193723525142904597e-04, + 7.015761989278357716e-04, + 6.837798920880441963e-04, + 6.659834608943392782e-04, + 6.481869342446489046e-04, + 6.303903410351538797e-04, + 6.125937101608428187e-04, + 5.947970705150644813e-04, + 5.770004509896812942e-04, + 5.592038804746267801e-04, + 5.414073878584500440e-04, + 5.236110020278779724e-04, + 5.058147518680584194e-04, + 4.880186662617279196e-04, + 4.702227740903491241e-04, + 4.524271042332769950e-04, + 4.346316855679995526e-04, + 4.168365469697058205e-04, + 3.990417173118257044e-04, + 3.812472254655917573e-04, + 3.634531003002863239e-04, + 3.456593706824028010e-04, + 3.278660654767915857e-04, + 3.100732135459143609e-04, + 2.922808437496029685e-04, + 2.744889849456061187e-04, + 2.566976659891453006e-04, + 2.389069157331682688e-04, + 2.211167630275050731e-04, + 2.033272367200154428e-04, + 1.855383656557458465e-04, + 1.677501786771828701e-04, + 1.499627046238069051e-04, + 1.321759723326435736e-04, + 1.143900106378177285e-04, + 9.660484837080711602e-05, + 7.882051435959928638e-05, + 6.103703742983786673e-05, + 4.325444640407978775e-05, + 2.547277010155182602e-05, + 7.692037338697833097e-06, +-1.008772307126379691e-05, +-2.786648231818864054e-05, +-4.564421159544933130e-05, +-6.342088209938709061e-05, +-8.119646502975527659e-05, +-9.897093158946790336e-05, +-1.167442529854398808e-04, +-1.345164004274432626e-04, +-1.522873451289477468e-04, +-1.700570583068682193e-04, +-1.878255111820102663e-04, +-2.055926749785184644e-04, +-2.233585209243222312e-04, +-2.411230202508852941e-04, +-2.588861441940412569e-04, +-2.766478639928551613e-04, +-2.944081508903603371e-04, +-3.121669761338057903e-04, +-3.299243109741049678e-04, +-3.476801266662825568e-04, +-3.654343944692194264e-04, +-3.831870856464941310e-04, +-4.009381714652402156e-04, +-4.186876231969845750e-04, +-4.364354121173962442e-04, +-4.541815095067297287e-04, +-4.719258866492791085e-04, +-4.896685148338152972e-04, +-5.074093653533387352e-04, +-5.251484095059205139e-04, +-5.428856185936520003e-04, +-5.606209639230952694e-04, +-5.783544168055220619e-04, +-5.960859485573585239e-04, +-6.138155304991405785e-04, +-6.315431339562567123e-04, +-6.492687302591880179e-04, +-6.669922907429622983e-04, +-6.847137867475953368e-04, +-7.024331896178479277e-04, +-7.201504707040454244e-04, +-7.378656013609574335e-04, +-7.555785529486200736e-04, +-7.732892968321001615e-04, +-7.909978043819165328e-04, +-8.087040469735151801e-04, +-8.264079959876920916e-04, +-8.441096228103598222e-04, +-8.618088988333659582e-04, +-8.795057954533710759e-04, +-8.972002840726720852e-04, +-9.148923360989578502e-04, +-9.325819229457534953e-04, +-9.502690160318649683e-04, +-9.679535867816305757e-04, +-9.856356066256558544e-04, +-1.003315046999669197e-03, +-1.020991879345370563e-03, +-1.038666075110166072e-03, +-1.056337605747619457e-03, +-1.074006442716904115e-03, +-1.091672557483241339e-03, +-1.109335921517646401e-03, +-1.126996506297777041e-03, +-1.144654283306879199e-03, +-1.162309224034238685e-03, +-1.179961299975418624e-03, +-1.197610482632697256e-03, +-1.215256743514035341e-03, +-1.232900054133811681e-03, +-1.250540386013065334e-03, +-1.268177710678942451e-03, +-1.285811999665145786e-03, +-1.303443224511688803e-03, +-1.321071356765706872e-03, +-1.338696367980356152e-03, +-1.356318229715613955e-03, +-1.373936913538048241e-03, +-1.391552391021251729e-03, +-1.409164633745299154e-03, +-1.426773613297180722e-03, +-1.444379301270558823e-03, +-1.461981669266602208e-03, +-1.479580688892842815e-03, +-1.497176331764012765e-03, +-1.514768569501802808e-03, +-1.532357373735286892e-03, +-1.549942716100385053e-03, +-1.567524568240110609e-03, +-1.585102901805299398e-03, +-1.602677688453467029e-03, +-1.620248899849651737e-03, +-1.637816507666169140e-03, +-1.655380483583042232e-03, +-1.672940799287447140e-03, +-1.690497426474183449e-03, +-1.708050336845389058e-03, +-1.725599502111493846e-03, +-1.743144893989679017e-03, +-1.760686484205316272e-03, +-1.778224244491205400e-03, +-1.795758146588513843e-03, +-1.813288162245651732e-03, +-1.830814263219079831e-03, +-1.848336421273090967e-03, +-1.865854608180226790e-03, +-1.883368795720737413e-03, +-1.900878955682824920e-03, +-1.918385059863376941e-03, +-1.935887080066835608e-03, +-1.953384988106029573e-03, +-1.970878755801903394e-03, +-1.988368354983993495e-03, +-2.005853757489856146e-03, +-2.023334935165513934e-03, +-2.040811859865202058e-03, +-2.058284503452199703e-03, +-2.075752837797717638e-03, +-2.093216834781691429e-03, +-2.110676466292559384e-03, +-2.128131704227693641e-03, +-2.145582520492854157e-03, +-2.163028887002628464e-03, +-2.180470775680187941e-03, +-2.197908158458093588e-03, +-2.215341007277188846e-03, +-2.232769294087343353e-03, +-2.250192990847651141e-03, +-2.267612069525915854e-03, +-2.285026502099088766e-03, +-2.302436260553013345e-03, +-2.319841316883347691e-03, +-2.337241643094046650e-03, +-2.354637211198788629e-03, +-2.372027993220214483e-03, +-2.389413961190877712e-03, +-2.406795087152082194e-03, +-2.424171343154753449e-03, +-2.441542701259151113e-03, +-2.458909133535343381e-03, +-2.476270612062602457e-03, +-2.493627108929724612e-03, +-2.510978596235701518e-03, +-2.528325046088607427e-03, +-2.545666430606440944e-03, +-2.563002721916844001e-03, +-2.580333892157578041e-03, +-2.597659913475955026e-03, +-2.614980758029271986e-03, +-2.632296397984575966e-03, +-2.649606805519492785e-03, +-2.666911952821071716e-03, +-2.684211812086645908e-03, +-2.701506355523573474e-03, +-2.718795555349640819e-03, +-2.736079383792575613e-03, +-2.753357813090450985e-03, +-2.770630815491433550e-03, +-2.787898363254604807e-03, +-2.805160428648868689e-03, +-2.822416983953645025e-03, +-2.839668001459120204e-03, +-2.856913453465702909e-03, +-2.874153312284461696e-03, +-2.891387550236989255e-03, +-2.908616139655796629e-03, +-2.925839052883814472e-03, +-2.943056262274814164e-03, +-2.960267740193144991e-03, +-2.977473459014559880e-03, +-2.994673391125121653e-03, +-3.011867508922003167e-03, +-3.029055784813214098e-03, +-3.046238191218090998e-03, +-3.063414700566707925e-03, +-3.080585285300337442e-03, +-3.097749917871201256e-03, +-3.114908570743265583e-03, +-3.132061216391165189e-03, +-3.149207827300873428e-03, +-3.166348375969986299e-03, +-3.183482834907159532e-03, +-3.200611176632555711e-03, +-3.217733373677575826e-03, +-3.234849398585694109e-03, +-3.251959223911349110e-03, +-3.269062822220728231e-03, +-3.286160166091562154e-03, +-3.303251228113529905e-03, +-3.320335980887726725e-03, +-3.337414397027100351e-03, +-3.354486449156193414e-03, +-3.371552109911976104e-03, +-3.388611351942719032e-03, +-3.405664147908716612e-03, +-3.422710470482532956e-03, +-3.439750292348442429e-03, +-3.456783586202871999e-03, +-3.473810324754274172e-03, +-3.490830480723513402e-03, +-3.507844026843380796e-03, +-3.524850935858960584e-03, +-3.541851180527449700e-03, +-3.558844733618942748e-03, +-3.575831567915289683e-03, +-3.592811656210976624e-03, +-3.609784971312812729e-03, +-3.626751486040410716e-03, +-3.643711173225630019e-03, +-3.660664005712984878e-03, +-3.677609956359451787e-03, +-3.694548998035225833e-03, +-3.711481103622645602e-03, +-3.728406246016904846e-03, +-3.745324398126264557e-03, +-3.762235532871565941e-03, +-3.779139623186590809e-03, +-3.796036642017892437e-03, +-3.812926562325555380e-03, +-3.829809357082099124e-03, +-3.846684999273278227e-03, +-3.863553461897890635e-03, +-3.880414717968105973e-03, +-3.897268740509044014e-03, +-3.914115502559119449e-03, +-3.930954977169841963e-03, +-3.947787137406589056e-03, +-3.964611956347637196e-03, +-3.981429407084559509e-03, +-3.998239462722470369e-03, +-4.015042096380452147e-03, +-4.031837281190516105e-03, +-4.048624990298377822e-03, +-4.065405196863621125e-03, +-4.082177874059226240e-03, +-4.098942995071949702e-03, +-4.115700533102128328e-03, +-4.132450461364419077e-03, +-4.149192753086749542e-03, +-4.165927381511108987e-03, +-4.182654319893327165e-03, +-4.199373541503443816e-03, +-4.216085019625210803e-03, +-4.232788727556544874e-03, +-4.249484638609234491e-03, +-4.266172726109773369e-03, +-4.282852963398234639e-03, +-4.299525323829137338e-03, +-4.316189780771095136e-03, +-4.332846307607359296e-03, +-4.349494877735208057e-03, +-4.366135464566218115e-03, +-4.382768041526930759e-03, +-4.399392582057814506e-03, +-4.416009059614026643e-03, +-4.432617447665167763e-03, +-4.449217719695731932e-03, +-4.465809849204562844e-03, +-4.482393809705238936e-03, +-4.498969574725923334e-03, +-4.515537117810072484e-03, +-4.532096412515476853e-03, +-4.548647432414678997e-03, +-4.565190151095235502e-03, +-4.581724542160042248e-03, +-4.598250579226441891e-03, +-4.614768235926878723e-03, +-4.631277485909130257e-03, +-4.647778302835778134e-03, +-4.664270660384662627e-03, +-4.680754532248598138e-03, +-4.697229892136174645e-03, +-4.713696713770726410e-03, +-4.730154970891019793e-03, +-4.746604637251136162e-03, +-4.763045686620782405e-03, +-4.779478092784832099e-03, +-4.795901829543731433e-03, +-4.812316870713258081e-03, +-4.828723190125284483e-03, +-4.845120761626730936e-03, +-4.861509559080343622e-03, +-4.877889556364483833e-03, +-4.894260727373448902e-03, +-4.910623046017100965e-03, +-4.926976486220957172e-03, +-4.943321021926959033e-03, +-4.959656627092373475e-03, +-4.975983275690586474e-03, +-4.992300941710863665e-03, +-5.008609599158764941e-03, +-5.024909222055613627e-03, +-5.041199784438932761e-03, +-5.057481260362179688e-03, +-5.073753623895566577e-03, +-5.090016849125024792e-03, +-5.106270910152714039e-03, +-5.122515781097121239e-03, +-5.138751436093580947e-03, +-5.154977849293238858e-03, +-5.171194994863841099e-03, +-5.187402846989528672e-03, +-5.203601379871216487e-03, +-5.219790567726073811e-03, +-5.235970384787785349e-03, +-5.252140805307213035e-03, +-5.268301803551320509e-03, +-5.284453353803987563e-03, +-5.300595430365736063e-03, +-5.316728007554160154e-03, +-5.332851059703415386e-03, +-5.348964561164621170e-03, +-5.365068486305631795e-03, +-5.381162809511788429e-03, +-5.397247505184893032e-03, +-5.413322547743956888e-03, +-5.429387911624997641e-03, +-5.445443571281388846e-03, +-5.461489501183417611e-03, +-5.477525675818635878e-03, +-5.493552069691681750e-03, +-5.509568657325000264e-03, +-5.525575413257791287e-03, +-5.541572312046739827e-03, +-5.557559328266183443e-03, +-5.573536436507624779e-03, +-5.589503611380147903e-03, +-5.605460827510171107e-03, +-5.621408059542307330e-03, +-5.637345282137950359e-03, +-5.653272469976612299e-03, +-5.669189597755172443e-03, +-5.685096640188803604e-03, +-5.700993572009885324e-03, +-5.716880367968800968e-03, +-5.732757002833649765e-03, +-5.748623451390704776e-03, +-5.764479688443898547e-03, +-5.780325688815000917e-03, +-5.796161427344349339e-03, +-5.811986878889775082e-03, +-5.827802018327392537e-03, +-5.843606820551295634e-03, +-5.859401260474032293e-03, +-5.875185313026092676e-03, +-5.890958953156300373e-03, +-5.906722155831559996e-03, +-5.922474896037608315e-03, +-5.938217148778075771e-03, +-5.953948889075085828e-03, +-5.969670091969179505e-03, +-5.985380732519574726e-03, +-6.001080785803815897e-03, +-6.016770226918025447e-03, +-6.032449030976778058e-03, +-6.048117173113805832e-03, +-6.063774628480980006e-03, +-6.079421372248952800e-03, +-6.095057379607441046e-03, +-6.110682625764637249e-03, +-6.126297085947713522e-03, +-6.141900735402465970e-03, +-6.157493549394268788e-03, +-6.173075503206602345e-03, +-6.188646572142432294e-03, +-6.204206731523452360e-03, +-6.219755956690931759e-03, +-6.235294223004747213e-03, +-6.250821505844080320e-03, +-6.266337780607224989e-03, +-6.281843022711923116e-03, +-6.297337207594936974e-03, +-6.312820310712398755e-03, +-6.328292307539639706e-03, +-6.343753173571848453e-03, +-6.359202884323101289e-03, +-6.374641415327068211e-03, +-6.390068742137110930e-03, +-6.405484840325898627e-03, +-6.420889685485721941e-03, +-6.436283253228342049e-03, +-6.451665519185682818e-03, +-6.467036459008768286e-03, +-6.482396048368625589e-03, +-6.497744262955868627e-03, +-6.513081078481203733e-03, +-6.528406470674907522e-03, +-6.543720415287244095e-03, +-6.559022888088153654e-03, +-6.574313864868132871e-03, +-6.589593321437077836e-03, +-6.604861233625051661e-03, +-6.620117577282398115e-03, +-6.635362328279327884e-03, +-6.650595462506318431e-03, +-6.665816955873859855e-03, +-6.681026784312991788e-03, +-6.696224923774705788e-03, +-6.711411350230405033e-03, +-6.726586039671639781e-03, +-6.741748968110829014e-03, +-6.756900111580322818e-03, +-6.772039446133062447e-03, +-6.787166947842386035e-03, +-6.802282592802425844e-03, +-6.817386357127588718e-03, +-6.832478216952982825e-03, +-6.847558148434186066e-03, +-6.862626127747944310e-03, +-6.877682131091204278e-03, +-6.892726134681762332e-03, +-6.907758114758430143e-03, +-6.922778047580574988e-03, +-6.937785909428556899e-03, +-6.952781676603399935e-03, +-6.967765325427633522e-03, +-6.982736832244196105e-03, +-6.997696173417237465e-03, +-7.012643325331848962e-03, +-7.027578264394456452e-03, +-7.042500967032364056e-03, +-7.057411409694114117e-03, +-7.072309568849266884e-03, +-7.087195420989125631e-03, +-7.102068942625741794e-03, +-7.116930110292755442e-03, +-7.131778900544691845e-03, +-7.146615289958211346e-03, +-7.161439255130824799e-03, +-7.176250772681568371e-03, +-7.191049819251230796e-03, +-7.205836371501832087e-03, +-7.220610406117094517e-03, +-7.235371899802136436e-03, +-7.250120829284192187e-03, +-7.264857171311736063e-03, +-7.279580902655051304e-03, +-7.294292000106096518e-03, +-7.308990440478893395e-03, +-7.323676200608991542e-03, +-7.338349257353900430e-03, +-7.353009587592849138e-03, +-7.367657168227488042e-03, +-7.382291976180931255e-03, +-7.396913988398465256e-03, +-7.411523181847315574e-03, +-7.426119533517042300e-03, +-7.440703020419049164e-03, +-7.455273619586811652e-03, +-7.469831308076485023e-03, +-7.484376062965918119e-03, +-7.498907861355424455e-03, +-7.513426680367456083e-03, +-7.527932497147111872e-03, +-7.542425288861538159e-03, +-7.556905032700390185e-03, +-7.571371705875577091e-03, +-7.585825285621966216e-03, +-7.600265749196543491e-03, +-7.614693073878702270e-03, +-7.629107236970565122e-03, +-7.643508215797166841e-03, +-7.657895987705814339e-03, +-7.672270530066470882e-03, +-7.686631820272136865e-03, +-7.700979835738255667e-03, +-7.715314553903208916e-03, +-7.729635952227979952e-03, +-7.743944008196911033e-03, +-7.758238699316760516e-03, +-7.772520003117382864e-03, +-7.786787897151475381e-03, +-7.801042358995015358e-03, +-7.815283366246757873e-03, +-7.829510896528606156e-03, +-7.843724927485409490e-03, +-7.857925436785604192e-03, +-7.872112402120372276e-03, +-7.886285801204243398e-03, +-7.900445611774874546e-03, +-7.914591811593499338e-03, +-7.928724378444383311e-03, +-7.942843290135071996e-03, +-7.956948524496951225e-03, +-7.971040059384379775e-03, +-7.985117872675299988e-03, +-7.999181942271083381e-03, +-8.013232246096853306e-03, +-8.027268762101009633e-03, +-8.041291468255684985e-03, +-8.055300342556437690e-03, +-8.069295363022964754e-03, +-8.083276507698269192e-03, +-8.097243754648994832e-03, +-8.111197081965608457e-03, +-8.125136467762805736e-03, +-8.139061890178605693e-03, +-8.152973327375058477e-03, +-8.166870757538063214e-03, +-8.180754158877617810e-03, +-8.194623509627513638e-03, +-8.208478788045430949e-03, +-8.222319972413573777e-03, +-8.236147041037707173e-03, +-8.249959972247925682e-03, +-8.263758744398304670e-03, +-8.277543335867363489e-03, +-8.291313725057572817e-03, +-8.305069890395708546e-03, +-8.318811810332728610e-03, +-8.332539463344269121e-03, +-8.346252827929894966e-03, +-8.359951882613689614e-03, +-8.373636605944022662e-03, +-8.387306976494006069e-03, +-8.400962972860925165e-03, +-8.414604573666537024e-03, +-8.428231757557573534e-03, +-8.441844503204860156e-03, +-8.455442789304054921e-03, +-8.469026594575285866e-03, +-8.482595897763640230e-03, +-8.496150677638668325e-03, +-8.509690912994711393e-03, +-8.523216582650755893e-03, +-8.536727665451018104e-03, +-8.550224140264201661e-03, +-8.563705985983816743e-03, +-8.577173181528285895e-03, +-8.590625705841398521e-03, +-8.604063537891436589e-03, +-8.617486656671868514e-03, +-8.630895041201057730e-03, +-8.644288670522717183e-03, +-8.657667523705406265e-03, +-8.671031579842709489e-03, +-8.684380818053930376e-03, +-8.697715217482979502e-03, +-8.711034757299221040e-03, +-8.724339416697240307e-03, +-8.737629174897044992e-03, +-8.750904011143837910e-03, +-8.764163904708178326e-03, +-8.777408834885907368e-03, +-8.790638780998751706e-03, +-8.803853722393392006e-03, +-8.817053638442205396e-03, +-8.830238508542939332e-03, +-8.843408312119164366e-03, +-8.856563028619819644e-03, +-8.869702637519528629e-03, +-8.882827118318357973e-03, +-8.895936450542591203e-03, +-8.909030613743686156e-03, +-8.922109587498954983e-03, +-8.935173351411722018e-03, +-8.948221885110865803e-03, +-8.961255168251205938e-03, +-8.974273180513267154e-03, +-8.987275901603931569e-03, +-9.000263311255481125e-03, +-9.013235389226402494e-03, +-9.026192115301008914e-03, +-9.039133469290092440e-03, +-9.052059431030080872e-03, +-9.064969980383520004e-03, +-9.077865097239136080e-03, +-9.090744761511990180e-03, +-9.103608953143013313e-03, +-9.116457652099575412e-03, +-9.129290838375053382e-03, +-9.142108491989495503e-03, +-9.154910592988931006e-03, +-9.167697121445708350e-03, +-9.180468057458807465e-03, +-9.193223381153376589e-03, +-9.205963072681039305e-03, +-9.218687112219802610e-03, +-9.231395479974507934e-03, +-9.244088156176152871e-03, +-9.256765121082416795e-03, +-9.269426354977483920e-03, +-9.282071838172334735e-03, +-9.294701551004438955e-03, +-9.307315473837975833e-03, +-9.319913587063679769e-03, +-9.332495871099475218e-03, +-9.345062306389598922e-03, +-9.357612873405160223e-03, +-9.370147552644314537e-03, +-9.382666324631853960e-03, +-9.395169169919535129e-03, +-9.407656069085883199e-03, +-9.420127002736861446e-03, +-9.432581951504774923e-03, +-9.445020896049267922e-03, +-9.457443817056885096e-03, +-9.469850695241550237e-03, +-9.482241511343905346e-03, +-9.494616246131914322e-03, +-9.506974880400529890e-03, +-9.519317394972179325e-03, +-9.531643770696240567e-03, +-9.543953988449455084e-03, +-9.556248029135612151e-03, +-9.568525873686322542e-03, +-9.580787503060062688e-03, +-9.593032898242731532e-03, +-9.605262040247836142e-03, +-9.617474910116122211e-03, +-9.629671488915790903e-03, +-9.641851757742439868e-03, +-9.654015697719606215e-03, +-9.666163289997860980e-03, +-9.678294515755563737e-03, +-9.690409356198571161e-03, +-9.702507792560556218e-03, +-9.714589806102645608e-03, +-9.726655378113732014e-03, +-9.738704489910302367e-03, +-9.750737122836901014e-03, +-9.762753258265534709e-03, +-9.774752877596135786e-03, +-9.786735962256180518e-03, +-9.798702493701579030e-03, +-9.810652453415637936e-03, +-9.822585822909669223e-03, +-9.834502583723104749e-03, +-9.846402717423182252e-03, +-9.858286205605146582e-03, +-9.870153029892180310e-03, +-9.882003171935870370e-03, +-9.893836613415561004e-03, +-9.905653336038747550e-03, +-9.917453321541066028e-03, +-9.929236551686470083e-03, +-9.941003008266962107e-03, +-9.952752673102770176e-03, +-9.964485528042275192e-03, +-9.976201554962512222e-03, +-9.987900735768490482e-03, +-9.999583052393599264e-03, +-1.001124848679950732e-02, +-1.002289702097658615e-02, +-1.003452863694332883e-02, +-1.004614331674665018e-02, +-1.005774104246228394e-02, +-1.006932179619412539e-02, +-1.008088556007469445e-02, +-1.009243231626500738e-02, +-1.010396204695485252e-02, +-1.011547473436244862e-02, +-1.012697036073466166e-02, +-1.013844890834698399e-02, +-1.014991035950389177e-02, +-1.016135469653824987e-02, +-1.017278190181181499e-02, +-1.018419195771485576e-02, +-1.019558484666698017e-02, +-1.020696055111613466e-02, +-1.021831905353925291e-02, +-1.022966033644229916e-02, +-1.024098438235998554e-02, +-1.025229117385594198e-02, +-1.026358069352271973e-02, +-1.027485292398217995e-02, +-1.028610784788484313e-02, +-1.029734544791041824e-02, +-1.030856570676753903e-02, +-1.031976860719419596e-02, +-1.033095413195727133e-02, +-1.034212226385286711e-02, +-1.035327298570613494e-02, +-1.036440628037176015e-02, +-1.037552213073335110e-02, +-1.038662051970382950e-02, +-1.039770143022532636e-02, +-1.040876484526952195e-02, +-1.041981074783719652e-02, +-1.043083912095836910e-02, +-1.044184994769292371e-02, +-1.045284321112971253e-02, +-1.046381889438714394e-02, +-1.047477698061301428e-02, +-1.048571745298483050e-02, +-1.049664029470936781e-02, +-1.050754548902302354e-02, +-1.051843301919166453e-02, +-1.052930286851105207e-02, +-1.054015502030629034e-02, +-1.055098945793202063e-02, +-1.056180616477265903e-02, +-1.057260512424260286e-02, +-1.058338631978554371e-02, +-1.059414973487509889e-02, +-1.060489535301452346e-02, +-1.061562315773709880e-02, +-1.062633313260573018e-02, +-1.063702526121306641e-02, +-1.064769952718197694e-02, +-1.065835591416489786e-02, +-1.066899440584431584e-02, +-1.067961498593249410e-02, +-1.069021763817194076e-02, +-1.070080234633492833e-02, +-1.071136909422380767e-02, +-1.072191786567085019e-02, +-1.073244864453873175e-02, +-1.074296141471987702e-02, +-1.075345616013687576e-02, +-1.076393286474252101e-02, +-1.077439151251979171e-02, +-1.078483208748177297e-02, +-1.079525457367170801e-02, +-1.080565895516332441e-02, +-1.081604521606033611e-02, +-1.082641334049687550e-02, +-1.083676331263722092e-02, +-1.084709511667624783e-02, +-1.085740873683895859e-02, +-1.086770415738076007e-02, +-1.087798136258747578e-02, +-1.088824033677551414e-02, +-1.089848106429161349e-02, +-1.090870352951280910e-02, +-1.091890771684672981e-02, +-1.092909361073180277e-02, +-1.093926119563668614e-02, +-1.094941045606066983e-02, +-1.095954137653360264e-02, +-1.096965394161609694e-02, +-1.097974813589922514e-02, +-1.098982394400474689e-02, +-1.099988135058531900e-02, +-1.100992034032402186e-02, +-1.101994089793478619e-02, +-1.102994300816224557e-02, +-1.103992665578194289e-02, +-1.104989182560008401e-02, +-1.105983850245368695e-02, +-1.106976667121062352e-02, +-1.107967631676981708e-02, +-1.108956742406086091e-02, +-1.109943997804433043e-02, +-1.110929396371167395e-02, +-1.111912936608550583e-02, +-1.112894617021916062e-02, +-1.113874436119709731e-02, +-1.114852392413471886e-02, +-1.115828484417877471e-02, +-1.116802710650669980e-02, +-1.117775069632714023e-02, +-1.118745559888003650e-02, +-1.119714179943621934e-02, +-1.120680928329784165e-02, +-1.121645803579801939e-02, +-1.122608804230150296e-02, +-1.123569928820388093e-02, +-1.124529175893203281e-02, +-1.125486543994412211e-02, +-1.126442031672986351e-02, +-1.127395637480997116e-02, +-1.128347359973664622e-02, +-1.129297197709329924e-02, +-1.130245149249494395e-02, +-1.131191213158783473e-02, +-1.132135388004966436e-02, +-1.133077672358946512e-02, +-1.134018064794813443e-02, +-1.134956563889761606e-02, +-1.135893168224147258e-02, +-1.136827876381495475e-02, +-1.137760686948470490e-02, +-1.138691598514899282e-02, +-1.139620609673754406e-02, +-1.140547719021204644e-02, +-1.141472925156548739e-02, +-1.142396226682259458e-02, +-1.143317622203979082e-02, +-1.144237110330527732e-02, +-1.145154689673885673e-02, +-1.146070358849208236e-02, +-1.146984116474821999e-02, +-1.147895961172258616e-02, +-1.148805891566197224e-02, +-1.149713906284511623e-02, +-1.150620003958265254e-02, +-1.151524183221701650e-02, +-1.152426442712247909e-02, +-1.153326781070520939e-02, +-1.154225196940359723e-02, +-1.155121688968754196e-02, +-1.156016255805915674e-02, +-1.156908896105234875e-02, +-1.157799608523338644e-02, +-1.158688391720024032e-02, +-1.159575244358300623e-02, +-1.160460165104381519e-02, +-1.161343152627702935e-02, +-1.162224205600894886e-02, +-1.163103322699805299e-02, +-1.163980502603490473e-02, +-1.164855743994245262e-02, +-1.165729045557558838e-02, +-1.166600405982140022e-02, +-1.167469823959942088e-02, +-1.168337298186123384e-02, +-1.169202827359070058e-02, +-1.170066410180393285e-02, +-1.170928045354955628e-02, +-1.171787731590830800e-02, +-1.172645467599326384e-02, +-1.173501252094988519e-02, +-1.174355083795613000e-02, +-1.175206961422219608e-02, +-1.176056883699076738e-02, +-1.176904849353677118e-02, +-1.177750857116805286e-02, +-1.178594905722443568e-02, +-1.179436993907848931e-02, +-1.180277120413514812e-02, +-1.181115283983206164e-02, +-1.181951483363925977e-02, +-1.182785717305928977e-02, +-1.183617984562761009e-02, +-1.184448283891187566e-02, +-1.185276614051255541e-02, +-1.186102973806267211e-02, +-1.186927361922812500e-02, +-1.187749777170725093e-02, +-1.188570218323113485e-02, +-1.189388684156350573e-02, +-1.190205173450106617e-02, +-1.191019684987303789e-02, +-1.191832217554140115e-02, +-1.192642769940099011e-02, +-1.193451340937952583e-02, +-1.194257929343742544e-02, +-1.195062533956794612e-02, +-1.195865153579717816e-02, +-1.196665787018419240e-02, +-1.197464433082085639e-02, +-1.198261090583187943e-02, +-1.199055758337513357e-02, +-1.199848435164118342e-02, +-1.200639119885371121e-02, +-1.201427811326915077e-02, +-1.202214508317724605e-02, +-1.202999209690050648e-02, +-1.203781914279459034e-02, +-1.204562620924804102e-02, +-1.205341328468271904e-02, +-1.206118035755337700e-02, +-1.206892741634797532e-02, +-1.207665444958726936e-02, +-1.208436144582566117e-02, +-1.209204839365029920e-02, +-1.209971528168158131e-02, +-1.210736209857323983e-02, +-1.211498883301199980e-02, +-1.212259547371790161e-02, +-1.213018200944410499e-02, +-1.213774842897725678e-02, +-1.214529472113702255e-02, +-1.215282087477644393e-02, +-1.216032687878180509e-02, +-1.216781272207277144e-02, +-1.217527839360232379e-02, +-1.218272388235666463e-02, +-1.219014917735544538e-02, +-1.219755426765181325e-02, +-1.220493914233214579e-02, +-1.221230379051622267e-02, +-1.221964820135724820e-02, +-1.222697236404197453e-02, +-1.223427626779052639e-02, +-1.224155990185637165e-02, +-1.224882325552681048e-02, +-1.225606631812230923e-02, +-1.226328907899692719e-02, +-1.227049152753834083e-02, +-1.227767365316772413e-02, +-1.228483544533982494e-02, +-1.229197689354287470e-02, +-1.229909798729880883e-02, +-1.230619871616319382e-02, +-1.231327906972510752e-02, +-1.232033903760734565e-02, +-1.232737860946620141e-02, +-1.233439777499194256e-02, +-1.234139652390824418e-02, +-1.234837484597253905e-02, +-1.235533273097601942e-02, +-1.236227016874362657e-02, +-1.236918714913392940e-02, +-1.237608366203932393e-02, +-1.238295969738605236e-02, +-1.238981524513402266e-02, +-1.239665029527696992e-02, +-1.240346483784239562e-02, +-1.241025886289181396e-02, +-1.241703236052036849e-02, +-1.242378532085714263e-02, +-1.243051773406506251e-02, +-1.243722959034102710e-02, +-1.244392087991578154e-02, +-1.245059159305392585e-02, +-1.245724172005400164e-02, +-1.246387125124862744e-02, +-1.247048017700416039e-02, +-1.247706848772102417e-02, +-1.248363617383379046e-02, +-1.249018322581073835e-02, +-1.249670963415432101e-02, +-1.250321538940093492e-02, +-1.250970048212110206e-02, +-1.251616490291937618e-02, +-1.252260864243428910e-02, +-1.252903169133844606e-02, +-1.253543404033874431e-02, +-1.254181568017596719e-02, +-1.254817660162506864e-02, +-1.255451679549509682e-02, +-1.256083625262941102e-02, +-1.256713496390531558e-02, +-1.257341292023440166e-02, +-1.257967011256239283e-02, +-1.258590653186919886e-02, +-1.259212216916902848e-02, +-1.259831701551013435e-02, +-1.260449106197520167e-02, +-1.261064429968105846e-02, +-1.261677671977875712e-02, +-1.262288831345360213e-02, +-1.262897907192532532e-02, +-1.263504898644783082e-02, +-1.264109804830934082e-02, +-1.264712624883231398e-02, +-1.265313357937381498e-02, +-1.265912003132499061e-02, +-1.266508559611142191e-02, +-1.267103026519298195e-02, +-1.267695403006412896e-02, +-1.268285688225354035e-02, +-1.268873881332427227e-02, +-1.269459981487384981e-02, +-1.270043987853432775e-02, +-1.270625899597210146e-02, +-1.271205715888791554e-02, +-1.271783435901714492e-02, +-1.272359058812956925e-02, +-1.272932583802941810e-02, +-1.273504010055542118e-02, +-1.274073336758091597e-02, +-1.274640563101369500e-02, +-1.275205688279603365e-02, +-1.275768711490467104e-02, +-1.276329631935118128e-02, +-1.276888448818147212e-02, +-1.277445161347607466e-02, +-1.277999768735003927e-02, +-1.278552270195319578e-02, +-1.279102664946982215e-02, +-1.279650952211885268e-02, +-1.280197131215377558e-02, +-1.280741201186297133e-02, +-1.281283161356916792e-02, +-1.281823010962989361e-02, +-1.282360749243740064e-02, +-1.282896375441843970e-02, +-1.283429888803468491e-02, +-1.283961288578224468e-02, +-1.284490574019224625e-02, +-1.285017744383029625e-02, +-1.285542798929684843e-02, +-1.286065736922698856e-02, +-1.286586557629071717e-02, +-1.287105260319268418e-02, +-1.287621844267232592e-02, +-1.288136308750380959e-02, +-1.288648653049629528e-02, +-1.289158876449354035e-02, +-1.289666978237411291e-02, +-1.290172957705158600e-02, +-1.290676814147414218e-02, +-1.291178546862498631e-02, +-1.291678155152194488e-02, +-1.292175638321807485e-02, +-1.292670995680092298e-02, +-1.293164226539309652e-02, +-1.293655330215197699e-02, +-1.294144306027010180e-02, +-1.294631153297464039e-02, +-1.295115871352773597e-02, +-1.295598459522649161e-02, +-1.296078917140305008e-02, +-1.296557243542426074e-02, +-1.297033438069211154e-02, +-1.297507500064339937e-02, +-1.297979428875008917e-02, +-1.298449223851895484e-02, +-1.298916884349179957e-02, +-1.299382409724545578e-02, +-1.299845799339169501e-02, +-1.300307052557733711e-02, +-1.300766168748418439e-02, +-1.301223147282916555e-02, +-1.301677987536415879e-02, +-1.302130688887608197e-02, +-1.302581250718686488e-02, +-1.303029672415369732e-02, +-1.303475953366856066e-02, +-1.303920092965872232e-02, +-1.304362090608639571e-02, +-1.304801945694904035e-02, +-1.305239657627904962e-02, +-1.305675225814401617e-02, +-1.306108649664662440e-02, +-1.306539928592467641e-02, +-1.306969062015113370e-02, +-1.307396049353402520e-02, +-1.307820890031667280e-02, +-1.308243583477735651e-02, +-1.308664129122965626e-02, +-1.309082526402221072e-02, +-1.309498774753896193e-02, +-1.309912873619897833e-02, +-1.310324822445644959e-02, +-1.310734620680083055e-02, +-1.311142267775677189e-02, +-1.311547763188415476e-02, +-1.311951106377800234e-02, +-1.312352296806858047e-02, +-1.312751333942149649e-02, +-1.313148217253749458e-02, +-1.313542946215253034e-02, +-1.313935520303788351e-02, +-1.314325939000007652e-02, +-1.314714201788083972e-02, +-1.315100308155724498e-02, +-1.315484257594161897e-02, +-1.315866049598157436e-02, +-1.316245683665994565e-02, +-1.316623159299496609e-02, +-1.316998476004010120e-02, +-1.317371633288415625e-02, +-1.317742630665125203e-02, +-1.318111467650071034e-02, +-1.318478143762740785e-02, +-1.318842658526139106e-02, +-1.319205011466809130e-02, +-1.319565202114814963e-02, +-1.319923230003780534e-02, +-1.320279094670851090e-02, +-1.320632795656697007e-02, +-1.320984332505553520e-02, +-1.321333704765167115e-02, +-1.321680911986829535e-02, +-1.322025953725368408e-02, +-1.322368829539167373e-02, +-1.322709538990125659e-02, +-1.323048081643693648e-02, +-1.323384457068857434e-02, +-1.323718664838151662e-02, +-1.324050704527644090e-02, +-1.324380575716950330e-02, +-1.324708277989217545e-02, +-1.325033810931149428e-02, +-1.325357174132986426e-02, +-1.325678367188512161e-02, +-1.325997389695050474e-02, +-1.326314241253478618e-02, +-1.326628921468214414e-02, +-1.326941429947212439e-02, +-1.327251766301991952e-02, +-1.327559930147607058e-02, +-1.327865921102655035e-02, +-1.328169738789286222e-02, +-1.328471382833200029e-02, +-1.328770852863635915e-02, +-1.329068148513391084e-02, +-1.329363269418802444e-02, +-1.329656215219770024e-02, +-1.329946985559728005e-02, +-1.330235580085671089e-02, +-1.330521998448128997e-02, +-1.330806240301207755e-02, +-1.331088305302546848e-02, +-1.331368193113335353e-02, +-1.331645903398319744e-02, +-1.331921435825802677e-02, +-1.332194790067632063e-02, +-1.332465965799211477e-02, +-1.332734962699499114e-02, +-1.333001780451006750e-02, +-1.333266418739794366e-02, +-1.333528877255480555e-02, +-1.333789155691239570e-02, +-1.334047253743799594e-02, +-1.334303171113441176e-02, +-1.334556907504001917e-02, +-1.334808462622878548e-02, +-1.335057836181017914e-02, +-1.335305027892925815e-02, +-1.335550037476662677e-02, +-1.335792864653851178e-02, +-1.336033509149662027e-02, +-1.336271970692827146e-02, +-1.336508249015647826e-02, +-1.336742343853959507e-02, +-1.336974254947174284e-02, +-1.337203982038257140e-02, +-1.337431524873725769e-02, +-1.337656883203668101e-02, +-1.337880056781717321e-02, +-1.338101045365073030e-02, +-1.338319848714500035e-02, +-1.338536466594309436e-02, +-1.338750898772385865e-02, +-1.338963145020152616e-02, +-1.339173205112619176e-02, +-1.339381078828340114e-02, +-1.339586765949434682e-02, +-1.339790266261571029e-02, +-1.339991579553999508e-02, +-1.340190705619509481e-02, +-1.340387644254466618e-02, +-1.340582395258797278e-02, +-1.340774958435975162e-02, +-1.340965333593044720e-02, +-1.341153520540612661e-02, +-1.341339519092848466e-02, +-1.341523329067477802e-02, +-1.341704950285791537e-02, +-1.341884382572635682e-02, +-1.342061625756432210e-02, +-1.342236679669154761e-02, +-1.342409544146340450e-02, +-1.342580219027086907e-02, +-1.342748704154058705e-02, +-1.342914999373479717e-02, +-1.343079104535137812e-02, +-1.343241019492378945e-02, +-1.343400744102116531e-02, +-1.343558278224826069e-02, +-1.343713621724542361e-02, +-1.343866774468869055e-02, +-1.344017736328959739e-02, +-1.344166507179541878e-02, +-1.344313086898905191e-02, +-1.344457475368895059e-02, +-1.344599672474925019e-02, +-1.344739678105969297e-02, +-1.344877492154565937e-02, +-1.345013114516812984e-02, +-1.345146545092370215e-02, +-1.345277783784469203e-02, +-1.345406830499889031e-02, +-1.345533685148981619e-02, +-1.345658347645658018e-02, +-1.345780817907394136e-02, +-1.345901095855226923e-02, +-1.346019181413750550e-02, +-1.346135074511126475e-02, +-1.346248775079077198e-02, +-1.346360283052889205e-02, +-1.346469598371406728e-02, +-1.346576720977039725e-02, +-1.346681650815750864e-02, +-1.346784387837075825e-02, +-1.346884931994108379e-02, +-1.346983283243502472e-02, +-1.347079441545469096e-02, +-1.347173406863783757e-02, +-1.347265179165787856e-02, +-1.347354758422377591e-02, +-1.347442144608004475e-02, +-1.347527337700697367e-02, +-1.347610337682027086e-02, +-1.347691144537136766e-02, +-1.347769758254724164e-02, +-1.347846178827048248e-02, +-1.347920406249927990e-02, +-1.347992440522738714e-02, +-1.348062281648421470e-02, +-1.348129929633469157e-02, +-1.348195384487935015e-02, +-1.348258646225439054e-02, +-1.348319714863146362e-02, +-1.348378590421791569e-02, +-1.348435272925661496e-02, +-1.348489762402597589e-02, +-1.348542058884010485e-02, +-1.348592162404856770e-02, +-1.348640073003655633e-02, +-1.348685790722473944e-02, +-1.348729315606953146e-02, +-1.348770647706274556e-02, +-1.348809787073178973e-02, +-1.348846733763969102e-02, +-1.348881487838495506e-02, +-1.348914049360166664e-02, +-1.348944418395950709e-02, +-1.348972595016360333e-02, +-1.348998579295470658e-02, +-1.349022371310905875e-02, +-1.349043971143849656e-02, +-1.349063378879026241e-02, +-1.349080594604730281e-02, +-1.349095618412798382e-02, +-1.349108450398613449e-02, +-1.349119090661124974e-02, +-1.349127539302824585e-02, +-1.349133796429757490e-02, +-1.349137862151516404e-02, +-1.349139736581247973e-02, +-1.349139419835652769e-02, +-1.349136912034972456e-02, +-1.349132213303001239e-02, +-1.349125323767080831e-02, +-1.349116243558110863e-02, +-1.349104972810521302e-02, +-1.349091511662307667e-02, +-1.349075860255000668e-02, +-1.349058018733688587e-02, +-1.349037987246988306e-02, +-1.349015765947081391e-02, +-1.348991354989688592e-02, +-1.348964754534068798e-02, +-1.348935964743030319e-02, +-1.348904985782931401e-02, +-1.348871817823667565e-02, +-1.348836461038678547e-02, +-1.348798915604944651e-02, +-1.348759181702993172e-02, +-1.348717259516891455e-02, +-1.348673149234247588e-02, +-1.348626851046205548e-02, +-1.348578365147459594e-02, +-1.348527691736236059e-02, +-1.348474831014300976e-02, +-1.348419783186964420e-02, +-1.348362548463069924e-02, +-1.348303127055000897e-02, +-1.348241519178676115e-02, +-1.348177725053549721e-02, +-1.348111744902617988e-02, +-1.348043578952404231e-02, +-1.347973227432973549e-02, +-1.347900690577924152e-02, +-1.347825968624380248e-02, +-1.347749061813015639e-02, +-1.347669970388019021e-02, +-1.347588694597122438e-02, +-1.347505234691582544e-02, +-1.347419590926194483e-02, +-1.347331763559274885e-02, +-1.347241752852676444e-02, +-1.347149559071778371e-02, +-1.347055182485493510e-02, +-1.346958623366249601e-02, +-1.346859881990010617e-02, +-1.346758958636269654e-02, +-1.346655853588040776e-02, +-1.346550567131860575e-02, +-1.346443099557798236e-02, +-1.346333451159440614e-02, +-1.346221622233900912e-02, +-1.346107613081808964e-02, +-1.345991424007326673e-02, +-1.345873055318127197e-02, +-1.345752507325410560e-02, +-1.345629780343893939e-02, +-1.345504874691811487e-02, +-1.345377790690919020e-02, +-1.345248528666488121e-02, +-1.345117088947312550e-02, +-1.344983471865692816e-02, +-1.344847677757454556e-02, +-1.344709706961928070e-02, +-1.344569559821964799e-02, +-1.344427236683930910e-02, +-1.344282737897697574e-02, +-1.344136063816656589e-02, +-1.343987214797700766e-02, +-1.343836191201240766e-02, +-1.343682993391195207e-02, +-1.343527621734991184e-02, +-1.343370076603556118e-02, +-1.343210358371341520e-02, +-1.343048467416285696e-02, +-1.342884404119845665e-02, +-1.342718168866974433e-02, +-1.342549762046140079e-02, +-1.342379184049300941e-02, +-1.342206435271929739e-02, +-1.342031516112984595e-02, +-1.341854426974945294e-02, +-1.341675168263772693e-02, +-1.341493740388931960e-02, +-1.341310143763391714e-02, +-1.341124378803611877e-02, +-1.340936445929550094e-02, +-1.340746345564659131e-02, +-1.340554078135890864e-02, +-1.340359644073679801e-02, +-1.340163043811962509e-02, +-1.339964277788167207e-02, +-1.339763346443210469e-02, +-1.339560250221496704e-02, +-1.339354989570919890e-02, +-1.339147564942864271e-02, +-1.338937976792208689e-02, +-1.338726225577303690e-02, +-1.338512311759992857e-02, +-1.338296235805601191e-02, +-1.338077998182946558e-02, +-1.337857599364316794e-02, +-1.337635039825486004e-02, +-1.337410320045714050e-02, +-1.337183440507733190e-02, +-1.336954401697757790e-02, +-1.336723204105477909e-02, +-1.336489848224070055e-02, +-1.336254334550165436e-02, +-1.336016663583892462e-02, +-1.335776835828841880e-02, +-1.335534851792073534e-02, +-1.335290711984132503e-02, +-1.335044416919018741e-02, +-1.334795967114218128e-02, +-1.334545363090671247e-02, +-1.334292605372788820e-02, +-1.334037694488461254e-02, +-1.333780630969022551e-02, +-1.333521415349296461e-02, +-1.333260048167542525e-02, +-1.332996529965503087e-02, +-1.332730861288377970e-02, +-1.332463042684823434e-02, +-1.332193074706953216e-02, +-1.331920957910344254e-02, +-1.331646692854031831e-02, +-1.331370280100497780e-02, +-1.331091720215685052e-02, +-1.330811013768991649e-02, +-1.330528161333271661e-02, +-1.330243163484813931e-02, +-1.329956020803377791e-02, +-1.329666733872158363e-02, +-1.329375303277807382e-02, +-1.329081729610415499e-02, +-1.328786013463524943e-02, +-1.328488155434119806e-02, +-1.328188156122629346e-02, +-1.327886016132924854e-02, +-1.327581736072314805e-02, +-1.327275316551554570e-02, +-1.326966758184835830e-02, +-1.326656061589781381e-02, +-1.326343227387463686e-02, +-1.326028256202378165e-02, +-1.325711148662455860e-02, +-1.325391905399067420e-02, +-1.325070527047009228e-02, +-1.324747014244511550e-02, +-1.324421367633233163e-02, +-1.324093587858255622e-02, +-1.323763675568096800e-02, +-1.323431631414688850e-02, +-1.323097456053398679e-02, +-1.322761150143007131e-02, +-1.322422714345727890e-02, +-1.322082149327183029e-02, +-1.321739455756414452e-02, +-1.321394634305897431e-02, +-1.321047685651505557e-02, +-1.320698610472536422e-02, +-1.320347409451699296e-02, +-1.319994083275121549e-02, +-1.319638632632337202e-02, +-1.319281058216287099e-02, +-1.318921360723320814e-02, +-1.318559540853211573e-02, +-1.318195599309123119e-02, +-1.317829536797622200e-02, +-1.317461354028688636e-02, +-1.317091051715699873e-02, +-1.316718630575438101e-02, +-1.316344091328074291e-02, +-1.315967434697190401e-02, +-1.315588661409760468e-02, +-1.315207772196155638e-02, +-1.314824767790130113e-02, +-1.314439648928847348e-02, +-1.314052416352854205e-02, +-1.313663070806080427e-02, +-1.313271613035860673e-02, +-1.312878043792901038e-02, +-1.312482363831310797e-02, +-1.312084573908557476e-02, +-1.311684674785517507e-02, +-1.311282667226434419e-02, +-1.310878551998940003e-02, +-1.310472329874029854e-02, +-1.310064001626098408e-02, +-1.309653568032898528e-02, +-1.309241029875570471e-02, +-1.308826387938613611e-02, +-1.308409643009904137e-02, +-1.307990795880693835e-02, +-1.307569847345603324e-02, +-1.307146798202610087e-02, +-1.306721649253061307e-02, +-1.306294401301678031e-02, +-1.305865055156526372e-02, +-1.305433611629042145e-02, +-1.305000071534031213e-02, +-1.304564435689645370e-02, +-1.304126704917389461e-02, +-1.303686880042132998e-02, +-1.303244961892096633e-02, +-1.302800951298848167e-02, +-1.302354849097314693e-02, +-1.301906656125761778e-02, +-1.301456373225807345e-02, +-1.301004001242427911e-02, +-1.300549541023912278e-02, +-1.300092993421924324e-02, +-1.299634359291450270e-02, +-1.299173639490830770e-02, +-1.298710834881725701e-02, +-1.298245946329147638e-02, +-1.297778974701439304e-02, +-1.297309920870265941e-02, +-1.296838785710644620e-02, +-1.296365570100905217e-02, +-1.295890274922714691e-02, +-1.295412901061062001e-02, +-1.294933449404267641e-02, +-1.294451920843970108e-02, +-1.293968316275139092e-02, +-1.293482636596044767e-02, +-1.292994882708297343e-02, +-1.292505055516808554e-02, +-1.292013155929824103e-02, +-1.291519184858880981e-02, +-1.291023143218844073e-02, +-1.290525031927887076e-02, +-1.290024851907480355e-02, +-1.289522604082416792e-02, +-1.289018289380786803e-02, +-1.288511908733990310e-02, +-1.288003463076715580e-02, +-1.287492953346969747e-02, +-1.286980380486040659e-02, +-1.286465745438532954e-02, +-1.285949049152324865e-02, +-1.285430292578603959e-02, +-1.284909476671844235e-02, +-1.284386602389813066e-02, +-1.283861670693554717e-02, +-1.283334682547413071e-02, +-1.282805638919013586e-02, +-1.282274540779265726e-02, +-1.281741389102351338e-02, +-1.281206184865739915e-02, +-1.280668929050186346e-02, +-1.280129622639699857e-02, +-1.279588266621583918e-02, +-1.279044861986402583e-02, +-1.278499409728003217e-02, +-1.277951910843489955e-02, +-1.277402366333233764e-02, +-1.276850777200883719e-02, +-1.276297144453346702e-02, +-1.275741469100773358e-02, +-1.275183752156602499e-02, +-1.274623994637515481e-02, +-1.274062197563455116e-02, +-1.273498361957609709e-02, +-1.272932488846431100e-02, +-1.272364579259620265e-02, +-1.271794634230121943e-02, +-1.271222654794125322e-02, +-1.270648641991076189e-02, +-1.270072596863662182e-02, +-1.269494520457794401e-02, +-1.268914413822638983e-02, +-1.268332278010605302e-02, +-1.267748114077326023e-02, +-1.267161923081670458e-02, +-1.266573706085743871e-02, +-1.265983464154880195e-02, +-1.265391198357648794e-02, +-1.264796909765818385e-02, +-1.264200599454415319e-02, +-1.263602268501670851e-02, +-1.263001917989043862e-02, +-1.262399549001201257e-02, +-1.261795162626042251e-02, +-1.261188759954669225e-02, +-1.260580342081394842e-02, +-1.259969910103754878e-02, +-1.259357465122481340e-02, +-1.258743008241527961e-02, +-1.258126540568036550e-02, +-1.257508063212365614e-02, +-1.256887577288067111e-02, +-1.256265083911902065e-02, +-1.255640584203801535e-02, +-1.255014079286925939e-02, +-1.254385570287606423e-02, +-1.253755058335386842e-02, +-1.253122544562966685e-02, +-1.252488030106259538e-02, +-1.251851516104357867e-02, +-1.251213003699540999e-02, +-1.250572494037247365e-02, +-1.249929988266124635e-02, +-1.249285487537984789e-02, +-1.248638993007800124e-02, +-1.247990505833736739e-02, +-1.247340027177124000e-02, +-1.246687558202462173e-02, +-1.246033100077411845e-02, +-1.245376653972801381e-02, +-1.244718221062627965e-02, +-1.244057802524044937e-02, +-1.243395399537351037e-02, +-1.242731013286022500e-02, +-1.242064644956680439e-02, +-1.241396295739098828e-02, +-1.240725966826194265e-02, +-1.240053659414043150e-02, +-1.239379374701860166e-02, +-1.238703113892017892e-02, +-1.238024878189997700e-02, +-1.237344668804454470e-02, +-1.236662486947165233e-02, +-1.235978333833041495e-02, +-1.235292210680133222e-02, +-1.234604118709613230e-02, +-1.233914059145801642e-02, +-1.233222033216114545e-02, +-1.232528042151119496e-02, +-1.231832087184485391e-02, +-1.231134169553032599e-02, +-1.230434290496664265e-02, +-1.229732451258413670e-02, +-1.229028653084430871e-02, +-1.228322897223978714e-02, +-1.227615184929416181e-02, +-1.226905517456221631e-02, +-1.226193896062977018e-02, +-1.225480322011365635e-02, +-1.224764796566160663e-02, +-1.224047320995245991e-02, +-1.223327896569600948e-02, +-1.222606524563287986e-02, +-1.221883206253474886e-02, +-1.221157942920409085e-02, +-1.220430735847433980e-02, +-1.219701586320957355e-02, +-1.218970495630493540e-02, +-1.218237465068623335e-02, +-1.217502495931012396e-02, +-1.216765589516392507e-02, +-1.216026747126578919e-02, +-1.215285970066450928e-02, +-1.214543259643968177e-02, +-1.213798617170135270e-02, +-1.213052043959038546e-02, +-1.212303541327823531e-02, +-1.211553110596691810e-02, +-1.210800753088899645e-02, +-1.210046470130767167e-02, +-1.209290263051673343e-02, +-1.208532133184010704e-02, +-1.207772081863260627e-02, +-1.207010110427928287e-02, +-1.206246220219588799e-02, +-1.205480412582810718e-02, +-1.204712688865244331e-02, +-1.203943050417558003e-02, +-1.203171498593459329e-02, +-1.202398034749679011e-02, +-1.201622660245984381e-02, +-1.200845376445170039e-02, +-1.200066184713059932e-02, +-1.199285086418479078e-02, +-1.198502082933290865e-02, +-1.197717175632380046e-02, +-1.196930365893625683e-02, +-1.196141655097937573e-02, +-1.195351044629224674e-02, +-1.194558535874426335e-02, +-1.193764130223443770e-02, +-1.192967829069217431e-02, +-1.192169633807678604e-02, +-1.191369545837756873e-02, +-1.190567566561371270e-02, +-1.189763697383438255e-02, +-1.188957939711867556e-02, +-1.188150294957564072e-02, +-1.187340764534390580e-02, +-1.186529349859219255e-02, +-1.185716052351899405e-02, +-1.184900873435256775e-02, +-1.184083814535082969e-02, +-1.183264877080156957e-02, +-1.182444062502233974e-02, +-1.181621372236002672e-02, +-1.180796807719153296e-02, +-1.179970370392333101e-02, +-1.179142061699154156e-02, +-1.178311883086156746e-02, +-1.177479836002868693e-02, +-1.176645921901767200e-02, +-1.175810142238270344e-02, +-1.174972498470746619e-02, +-1.174132992060514594e-02, +-1.173291624471836311e-02, +-1.172448397171919725e-02, +-1.171603311630892326e-02, +-1.170756369321833412e-02, +-1.169907571720753096e-02, +-1.169056920306596470e-02, +-1.168204416561221572e-02, +-1.167350061969424542e-02, +-1.166493858018931122e-02, +-1.165635806200359358e-02, +-1.164775908007275110e-02, +-1.163914164936146606e-02, +-1.163050578486362480e-02, +-1.162185150160202456e-02, +-1.161317881462873430e-02, +-1.160448773902479462e-02, +-1.159577828990039465e-02, +-1.158705048239437076e-02, +-1.157830433167490562e-02, +-1.156953985293894711e-02, +-1.156075706141245808e-02, +-1.155195597235014054e-02, +-1.154313660103566813e-02, +-1.153429896278168783e-02, +-1.152544307292932210e-02, +-1.151656894684865290e-02, +-1.150767659993868867e-02, +-1.149876604762706082e-02, +-1.148983730536985021e-02, +-1.148089038865217869e-02, +-1.147192531298765923e-02, +-1.146294209391858325e-02, +-1.145394074701571070e-02, +-1.144492128787854592e-02, +-1.143588373213505482e-02, +-1.142682809544184538e-02, +-1.141775439348369225e-02, +-1.140866264197413701e-02, +-1.139955285665513081e-02, +-1.139042505329699966e-02, +-1.138127924769832475e-02, +-1.137211545568621134e-02, +-1.136293369311616556e-02, +-1.135373397587160701e-02, +-1.134451631986463892e-02, +-1.133528074103543233e-02, +-1.132602725535249849e-02, +-1.131675587881232972e-02, +-1.130746662743978455e-02, +-1.129815951728776503e-02, +-1.128883456443738852e-02, +-1.127949178499757822e-02, +-1.127013119510562010e-02, +-1.126075281092669446e-02, +-1.125135664865405116e-02, +-1.124194272450878586e-02, +-1.123251105474004120e-02, +-1.122306165562480217e-02, +-1.121359454346813368e-02, +-1.120410973460263943e-02, +-1.119460724538899957e-02, +-1.118508709221572271e-02, +-1.117554929149883539e-02, +-1.116599385968235561e-02, +-1.115642081323791474e-02, +-1.114683016866493959e-02, +-1.113722194249036623e-02, +-1.112759615126885857e-02, +-1.111795281158270768e-02, +-1.110829194004180585e-02, +-1.109861355328338808e-02, +-1.108891766797242759e-02, +-1.107920430080133918e-02, +-1.106947346848999487e-02, +-1.105972518778566144e-02, +-1.104995947546305243e-02, +-1.104017634832435771e-02, +-1.103037582319881839e-02, +-1.102055791694329240e-02, +-1.101072264644182945e-02, +-1.100087002860577860e-02, +-1.099100008037357662e-02, +-1.098111281871105502e-02, +-1.097120826061109312e-02, +-1.096128642309394247e-02, +-1.095134732320651727e-02, +-1.094139097802322887e-02, +-1.093141740464542364e-02, +-1.092142662020149750e-02, +-1.091141864184674501e-02, +-1.090139348676354668e-02, +-1.089135117216121114e-02, +-1.088129171527598034e-02, +-1.087121513337081617e-02, +-1.086112144373574742e-02, +-1.085101066368761129e-02, +-1.084088281056977757e-02, +-1.083073790175261182e-02, +-1.082057595463327242e-02, +-1.081039698663555093e-02, +-1.080020101520973858e-02, +-1.078998805783301651e-02, +-1.077975813200907074e-02, +-1.076951125526836445e-02, +-1.075924744516746495e-02, +-1.074896671928988676e-02, +-1.073866909524551563e-02, +-1.072835459067076301e-02, +-1.071802322322826587e-02, +-1.070767501060727878e-02, +-1.069730997052341891e-02, +-1.068692812071867296e-02, +-1.067652947896102766e-02, +-1.066611406304515154e-02, +-1.065568189079187621e-02, +-1.064523298004807841e-02, +-1.063476734868697496e-02, +-1.062428501460800992e-02, +-1.061378599573672456e-02, +-1.060327031002453180e-02, +-1.059273797544919155e-02, +-1.058218901001439609e-02, +-1.057162343175008928e-02, +-1.056104125871169114e-02, +-1.055044250898100507e-02, +-1.053982720066558298e-02, +-1.052919535189896817e-02, +-1.051854698084038475e-02, +-1.050788210567505862e-02, +-1.049720074461394162e-02, +-1.048650291589385379e-02, +-1.047578863777704622e-02, +-1.046505792855177350e-02, +-1.045431080653195718e-02, +-1.044354729005695336e-02, +-1.043276739749189434e-02, +-1.042197114722748404e-02, +-1.041115855768002044e-02, +-1.040032964729097759e-02, +-1.038948443452776885e-02, +-1.037862293788303913e-02, +-1.036774517587492166e-02, +-1.035685116704678811e-02, +-1.034594092996758523e-02, +-1.033501448323144792e-02, +-1.032407184545799939e-02, +-1.031311303529173530e-02, +-1.030213807140273677e-02, +-1.029114697248626267e-02, +-1.028013975726252069e-02, +-1.026911644447707495e-02, +-1.025807705290050255e-02, +-1.024702160132860522e-02, +-1.023595010858185939e-02, +-1.022486259350608578e-02, +-1.021375907497194292e-02, +-1.020263957187532086e-02, +-1.019150410313650335e-02, +-1.018035268770104904e-02, +-1.016918534453923120e-02, +-1.015800209264630140e-02, +-1.014680295104195343e-02, +-1.013558793877099296e-02, +-1.012435707490278065e-02, +-1.011311037853149589e-02, +-1.010184786877563363e-02, +-1.009056956477870533e-02, +-1.007927548570871842e-02, +-1.006796565075803070e-02, +-1.005664007914377177e-02, +-1.004529879010749617e-02, +-1.003394180291532038e-02, +-1.002256913685742497e-02, +-1.001118081124876755e-02, +-9.999776845428558908e-03, +-9.988357258760368826e-03, +-9.976922070631928305e-03, +-9.965471300455348153e-03, +-9.954004967667042653e-03, +-9.942523091727646298e-03, +-9.931025692121550619e-03, +-9.919512788357804506e-03, +-9.907984399969279807e-03, +-9.896440546513125824e-03, +-9.884881247570205531e-03, +-9.873306522745652417e-03, +-9.861716391668625889e-03, +-9.850110873991830759e-03, +-9.838489989392188578e-03, +-9.826853757570582631e-03, +-9.815202198251667121e-03, +-9.803535331183502871e-03, +-9.791853176138431633e-03, +-9.780155752912318007e-03, +-9.768443081324816590e-03, +-9.756715181219103097e-03, +-9.744972072462080789e-03, +-9.733213774944302413e-03, +-9.721440308579958056e-03, +-9.709651693306411979e-03, +-9.697847949084919053e-03, +-9.686029095900045363e-03, +-9.674195153759912805e-03, +-9.662346142695763668e-03, +-9.650482082762536565e-03, +-9.638602994038424077e-03, +-9.626708896624612544e-03, +-9.614799810645960343e-03, +-9.602875756250361244e-03, +-9.590936753609027171e-03, +-9.578982822916116968e-03, +-9.567013984389121511e-03, +-9.555030258268593091e-03, +-9.543031664818213064e-03, +-9.531018224324359911e-03, +-9.518989957096745877e-03, +-9.506946883467957271e-03, +-9.494889023793581101e-03, +-9.482816398451835577e-03, +-9.470729027844071446e-03, +-9.458626932394449335e-03, +-9.446510132549582398e-03, +-9.434378648779160811e-03, +-9.422232501575656879e-03, +-9.410071711454134208e-03, +-9.397896298952011784e-03, +-9.385706284629702356e-03, +-9.373501689070095483e-03, +-9.361282532878647741e-03, +-9.349048836683174560e-03, +-9.336800621134150324e-03, +-9.324537906904408271e-03, +-9.312260714689381616e-03, +-9.299969065206395782e-03, +-9.287662979195563523e-03, +-9.275342477419202050e-03, +-9.263007580661874671e-03, +-9.250658309730245069e-03, +-9.238294685453396493e-03, +-9.225916728682542062e-03, +-9.213524460290741999e-03, +-9.201117901173462219e-03, +-9.188697072248159722e-03, +-9.176261994454338114e-03, +-9.163812688753323818e-03, +-9.151349176128550575e-03, +-9.138871477585335662e-03, +-9.126379614151037753e-03, +-9.113873606874389049e-03, +-9.101353476826397337e-03, +-9.088819245099726690e-03, +-9.076270932808763389e-03, +-9.063708561089504900e-03, +-9.051132151099774981e-03, +-9.038541724018901019e-03, +-9.025937301048064451e-03, +-9.013318903409462887e-03, +-9.000686552347442887e-03, +-8.988040269127655149e-03, +-8.975380075036853283e-03, +-8.962705991383610252e-03, +-8.950018039497803155e-03, +-8.937316240730649661e-03, +-8.924600616454558821e-03, +-8.911871188063349644e-03, +-8.899127976972049867e-03, +-8.886371004617062488e-03, +-8.873600292455482291e-03, +-8.860815861965992690e-03, +-8.848017734648213478e-03, +-8.835205932022957565e-03, +-8.822380475631776478e-03, +-8.809541387037473845e-03, +-8.796688687823855587e-03, +-8.783822399595239000e-03, +-8.770942543977228167e-03, +-8.758049142616139773e-03, +-8.745142217179199123e-03, +-8.732221789354151567e-03, +-8.719287880849678832e-03, +-8.706340513395166569e-03, +-8.693379708740754663e-03, +-8.680405488656790791e-03, +-8.667417874934611050e-03, +-8.654416889386047293e-03, +-8.641402553843427134e-03, +-8.628374890159407409e-03, +-8.615333920207296839e-03, +-8.602279665880712550e-03, +-8.589212149093762225e-03, +-8.576131391780605212e-03, +-8.563037415896004173e-03, +-8.549930243414998951e-03, +-8.536809896332412176e-03, +-8.523676396663713156e-03, +-8.510529766444384706e-03, +-8.497370027730077532e-03, +-8.484197202596336154e-03, +-8.471011313138926760e-03, +-8.457812381473533633e-03, +-8.444600429736031505e-03, +-8.431375480081718804e-03, +-8.418137554686237062e-03, +-8.404886675744937738e-03, +-8.391622865473114673e-03, +-8.378346146105565204e-03, +-8.365056539897037721e-03, +-8.351754069121988810e-03, +-8.338438756074638761e-03, +-8.325110623068397372e-03, +-8.311769692436748666e-03, +-8.298415986532638525e-03, +-8.285049527728320304e-03, +-8.271670338415715654e-03, +-8.258278441006187270e-03, +-8.244873857930611755e-03, +-8.231456611638808887e-03, +-8.218026724600334398e-03, +-8.204584219303966489e-03, +-8.191129118257766545e-03, +-8.177661443988808523e-03, +-8.164181219043600488e-03, +-8.150688465987633580e-03, +-8.137183207405706414e-03, +-8.123665465901357824e-03, +-8.110135264097482685e-03, +-8.096592624635787216e-03, +-8.083037570177170617e-03, +-8.069470123400975664e-03, +-8.055890307005890774e-03, +-8.042298143709346314e-03, +-8.028693656247342866e-03, +-8.015076867374954298e-03, +-8.001447799865836832e-03, +-7.987806476512480588e-03, +-7.974152920125645791e-03, +-7.960487153535112173e-03, +-7.946809199589104783e-03, +-7.933119081154463986e-03, +-7.919416821116307195e-03, +-7.905702442378405304e-03, +-7.891975967862950234e-03, +-7.878237420510643407e-03, +-7.864486823280045225e-03, +-7.850724199148541305e-03, +-7.836949571111695434e-03, +-7.823162962183041400e-03, +-7.809364395394577385e-03, +-7.795553893796396475e-03, +-7.781731480456821094e-03, +-7.767897178461834022e-03, +-7.754051010915898913e-03, +-7.740193000941255133e-03, +-7.726323171678515372e-03, +-7.712441546285492104e-03, +-7.698548147938471739e-03, +-7.684642999831386295e-03, +-7.670726125176109168e-03, +-7.656797547202011910e-03, +-7.642857289156447347e-03, +-7.628905374304404373e-03, +-7.614941825928660604e-03, +-7.600966667329163082e-03, +-7.586979921823920787e-03, +-7.572981612748336776e-03, +-7.558971763455169142e-03, +-7.544950397314816384e-03, +-7.530917537715064135e-03, +-7.516873208061191844e-03, +-7.502817431775422874e-03, +-7.488750232297674767e-03, +-7.474671633085064847e-03, +-7.460581657611943182e-03, +-7.446480329369678346e-03, +-7.432367671866965328e-03, +-7.418243708629599156e-03, +-7.404108463200550355e-03, +-7.389961959139389018e-03, +-7.375804220023124413e-03, +-7.361635269445609975e-03, +-7.347455131017631771e-03, +-7.333263828366665647e-03, +-7.319061385137251054e-03, +-7.304847824990790689e-03, +-7.290623171604999724e-03, +-7.276387448674758417e-03, +-7.262140679911432972e-03, +-7.247882889043395956e-03, +-7.233614099814905662e-03, +-7.219334335987346446e-03, +-7.205043621338474980e-03, +-7.190741979662617148e-03, +-7.176429434770295081e-03, +-7.162106010488673846e-03, +-7.147771730661204095e-03, +-7.133426619147836302e-03, +-7.119070699824299117e-03, +-7.104703996583089029e-03, +-7.090326533332724432e-03, +-7.075938333997962466e-03, +-7.061539422519465085e-03, +-7.047129822854237072e-03, +-7.032709558975367564e-03, +-7.018278654871513977e-03, +-7.003837134547784109e-03, +-6.989385022025032708e-03, +-6.974922341340081787e-03, +-6.960449116545369339e-03, +-6.945965371709422048e-03, +-6.931471130916369572e-03, +-6.916966418266339185e-03, +-6.902451257874583218e-03, +-6.887925673872526827e-03, +-6.873389690407008187e-03, +-6.858843331640575129e-03, +-6.844286621751018498e-03, +-6.829719584931860481e-03, +-6.815142245392175925e-03, +-6.800554627355945292e-03, +-6.785956755062936760e-03, +-6.771348652768328057e-03, +-6.756730344742490485e-03, +-6.742101855270664530e-03, +-6.727463208653754363e-03, +-6.712814429207710279e-03, +-6.698155541263637984e-03, +-6.683486569167550531e-03, +-6.668807537280717866e-03, +-6.654118469979311210e-03, +-6.639419391654687551e-03, +-6.624710326712602085e-03, +-6.609991299574201340e-03, +-6.595262334675305003e-03, +-6.580523456466629700e-03, +-6.565774689413396946e-03, +-6.551016057995839685e-03, +-6.536247586708890910e-03, +-6.521469300061690129e-03, +-6.506681222578431650e-03, +-6.491883378797747885e-03, +-6.477075793272840318e-03, +-6.462258490571169862e-03, +-6.447431495274872325e-03, +-6.432594831980401918e-03, +-6.417748525298729023e-03, +-6.402892599854668847e-03, +-6.388027080287793022e-03, +-6.373151991251759137e-03, +-6.358267357414459919e-03, +-6.343373203457752622e-03, +-6.328469554077847600e-03, +-6.313556433984905854e-03, +-6.298633867903297504e-03, +-6.283701880570864533e-03, +-6.268760496740071776e-03, +-6.253809741177090986e-03, +-6.238849638661512001e-03, +-6.223880213987293374e-03, +-6.208901491961965266e-03, +-6.193913497406952108e-03, +-6.178916255157048711e-03, +-6.163909790061049970e-03, +-6.148894126981240861e-03, +-6.133869290793661846e-03, +-6.118835306387402848e-03, +-6.103792198665559075e-03, +-6.088739992544492906e-03, +-6.073678712954089752e-03, +-6.058608384837361679e-03, +-6.043529033150894098e-03, +-6.028440682864653205e-03, +-6.013343358961368429e-03, +-5.998237086437458766e-03, +-5.983121890302385733e-03, +-5.967997795578766120e-03, +-5.952864827302110917e-03, +-5.937723010521197414e-03, +-5.922572370297727457e-03, +-5.907412931706538216e-03, +-5.892244719834885749e-03, +-5.877067759783405169e-03, +-5.861882076665416753e-03, +-5.846687695607112427e-03, +-5.831484641747177594e-03, +-5.816272940237291605e-03, +-5.801052616241701883e-03, +-5.785823694937475455e-03, +-5.770586201513655013e-03, +-5.755340161172605926e-03, +-5.740085599128950250e-03, +-5.724822540609353361e-03, +-5.709551010853405190e-03, +-5.694271035112914194e-03, +-5.678982638652108582e-03, +-5.663685846747262484e-03, +-5.648380684687184274e-03, +-5.633067177772781153e-03, +-5.617745351317311557e-03, +-5.602415230645687791e-03, +-5.587076841095368548e-03, +-5.571730208015750023e-03, +-5.556375356768276062e-03, +-5.541012312726130255e-03, +-5.525641101274639255e-03, +-5.510261747810965734e-03, +-5.494874277744267108e-03, +-5.479478716494981701e-03, +-5.464075089495838353e-03, +-5.448663422191145182e-03, +-5.433243740036687239e-03, +-5.417816068500100335e-03, +-5.402380433060511959e-03, +-5.386936859208829240e-03, +-5.371485372446868113e-03, +-5.356025998288482630e-03, +-5.340558762258744430e-03, +-5.325083689894201215e-03, +-5.309600806742487307e-03, +-5.294110138362761661e-03, +-5.278611710325392149e-03, +-5.263105548211996325e-03, +-5.247591677615137847e-03, +-5.232070124138740209e-03, +-5.216540913397757148e-03, +-5.201004071018308812e-03, +-5.185459622637044255e-03, +-5.169907593902046961e-03, +-5.154348010472271056e-03, +-5.138780898017244678e-03, +-5.123206282217626813e-03, +-5.107624188764737193e-03, +-5.092034643360846859e-03, +-5.076437671718383657e-03, +-5.060833299560997360e-03, +-5.045221552622729602e-03, +-5.029602456648336536e-03, +-5.013976037392805715e-03, +-4.998342320621920742e-03, +-4.982701332111793766e-03, +-4.967053097649127419e-03, +-4.951397643030474097e-03, +-4.935734994063248164e-03, +-4.920065176565008649e-03, +-4.904388216363330007e-03, +-4.888704139296241868e-03, +-4.873012971211819651e-03, +-4.857314737968440425e-03, +-4.841609465434028314e-03, +-4.825897179487032874e-03, +-4.810177906015744749e-03, +-4.794451670918454395e-03, +-4.778718500103107739e-03, +-4.762978419487752003e-03, +-4.747231455000180955e-03, +-4.731477632578022507e-03, +-4.715716978168380501e-03, +-4.699949517728310884e-03, +-4.684175277224414922e-03, +-4.668394282633088130e-03, +-4.652606559939711887e-03, +-4.636812135139763667e-03, +-4.621011034238067632e-03, +-4.605203283248640242e-03, +-4.589388908195121339e-03, +-4.573567935110408114e-03, +-4.557740390036909249e-03, +-4.541906299025711378e-03, +-4.526065688137696254e-03, +-4.510218583442700269e-03, +-4.494365011019804158e-03, +-4.478504996956901053e-03, +-4.462638567351177865e-03, +-4.446765748308774413e-03, +-4.430886565944930008e-03, +-4.415001046383276555e-03, +-4.399109215756854228e-03, +-4.383211100207348200e-03, +-4.367306725885343639e-03, +-4.351396118949870349e-03, +-4.335479305568947471e-03, +-4.319556311919333681e-03, +-4.303627164185867132e-03, +-4.287691888562496743e-03, +-4.271750511251433055e-03, +-4.255803058463811760e-03, +-4.239849556418425619e-03, +-4.223890031343069743e-03, +-4.207924509473741879e-03, +-4.191953017054814157e-03, +-4.175975580338702614e-03, +-4.159992225586278333e-03, +-4.144002979066530902e-03, +-4.128007867056774846e-03, +-4.112006915841861197e-03, +-4.096000151715268635e-03, +-4.079987600978289899e-03, +-4.063969289940264247e-03, +-4.047945244918231371e-03, +-4.031915492237322582e-03, +-4.015880058230657593e-03, +-3.999838969238582974e-03, +-3.983792251609742478e-03, +-3.967739931700322437e-03, +-3.951682035874246046e-03, +-3.935618590502816885e-03, +-3.919549621965174278e-03, +-3.903475156647899947e-03, +-3.887395220945264775e-03, +-3.871309841258448181e-03, +-3.855219043996567681e-03, +-3.839122855575945528e-03, +-3.823021302420294767e-03, +-3.806914410960348868e-03, +-3.790802207634347016e-03, +-3.774684718887804259e-03, +-3.758561971172854482e-03, +-3.742433990949264357e-03, +-3.726300804683611075e-03, +-3.710162438849917265e-03, +-3.694018919928385072e-03, +-3.677870274406787841e-03, +-3.661716528779587147e-03, +-3.645557709548192995e-03, +-3.629393843220546628e-03, +-3.613224956311615783e-03, +-3.597051075342987906e-03, +-3.580872226843122546e-03, +-3.564688437346552087e-03, +-3.548499733394923014e-03, +-3.532306141536260824e-03, +-3.516107688325194238e-03, +-3.499904400322495501e-03, +-3.483696304095658912e-03, +-3.467483426218614159e-03, +-3.451265793271070595e-03, +-3.435043431839577589e-03, +-3.418816368516739996e-03, +-3.402584629901434995e-03, +-3.386348242598416578e-03, +-3.370107233218839430e-03, +-3.353861628379817880e-03, +-3.337611454704661820e-03, +-3.321356738822117769e-03, +-3.305097507367420542e-03, +-3.288833786981502656e-03, +-3.272565604311228945e-03, +-3.256292986009001050e-03, +-3.240015958733264388e-03, +-3.223734549148060159e-03, +-3.207448783923314613e-03, +-3.191158689733921815e-03, +-3.174864293261189969e-03, +-3.158565621191701273e-03, +-3.142262700217061683e-03, +-3.125955557034895346e-03, +-3.109644218348042721e-03, +-3.093328710864817754e-03, +-3.077009061298559452e-03, +-3.060685296368183088e-03, +-3.044357442797737418e-03, +-3.028025527316652310e-03, +-3.011689576658945541e-03, +-2.995349617564306999e-03, +-2.979005676777282934e-03, +-2.962657781047542665e-03, +-2.946305957129463117e-03, +-2.929950231782610208e-03, +-2.913590631771521139e-03, +-2.897227183865055174e-03, +-2.880859914837390241e-03, +-2.864488851467305620e-03, +-2.848114020538354985e-03, +-2.831735448838509049e-03, +-2.815353163160613965e-03, +-2.798967190302029204e-03, +-2.782577557064814903e-03, +-2.766184290255001114e-03, +-2.749787416683574862e-03, +-2.733386963165784951e-03, +-2.716982956521321949e-03, +-2.700575423573905315e-03, +-2.684164391151822038e-03, +-2.667749886087494252e-03, +-2.651331935217704754e-03, +-2.634910565382747420e-03, +-2.618485803427843608e-03, +-2.602057676201977292e-03, +-2.585626210557708578e-03, +-2.569191433352102216e-03, +-2.552753371445967354e-03, +-2.536312051704083925e-03, +-2.519867500994797584e-03, +-2.503419746190517579e-03, +-2.486968814167311685e-03, +-2.470514731805145605e-03, +-2.454057525987068077e-03, +-2.437597223600328038e-03, +-2.421133851535555402e-03, +-2.404667436686994814e-03, +-2.388198005952099721e-03, +-2.371725586232057998e-03, +-2.355250204431343954e-03, +-2.338771887457988946e-03, +-2.322290662222764330e-03, +-2.305806555640282137e-03, +-2.289319594628264325e-03, +-2.272829806107352826e-03, +-2.256337217001590494e-03, +-2.239841854238030366e-03, +-2.223343744746945558e-03, +-2.206842915461060348e-03, +-2.190339393316628313e-03, +-2.173833205252623940e-03, +-2.157324378210977688e-03, +-2.140812939136186102e-03, +-2.124298914975800579e-03, +-2.107782332680024906e-03, +-2.091263219201847968e-03, +-2.074741601496630453e-03, +-2.058217506522633938e-03, +-2.041690961240580707e-03, +-2.025161992613903547e-03, +-2.008630627607951250e-03, +-1.992096893191071076e-03, +-1.975560816333904891e-03, +-1.959022424009161482e-03, +-1.942481743192124403e-03, +-1.925938800860256452e-03, +-1.909393623993402636e-03, +-1.892846239573028411e-03, +-1.876296674583292391e-03, +-1.859744956010238185e-03, +-1.843191110842049615e-03, +-1.826635166068611401e-03, +-1.810077148682056464e-03, +-1.793517085676315983e-03, +-1.776955004047386976e-03, +-1.760390930792511124e-03, +-1.743824892911273287e-03, +-1.727256917404894170e-03, +-1.710687031275998950e-03, +-1.694115261529144639e-03, +-1.677541635170384880e-03, +-1.660966179207521484e-03, +-1.644388920649306890e-03, +-1.627809886506520996e-03, +-1.611229103791183594e-03, +-1.594646599516777495e-03, +-1.578062400697863212e-03, +-1.561476534350548194e-03, +-1.544889027492117334e-03, +-1.528299907141137488e-03, +-1.511709200317063254e-03, +-1.495116934040746333e-03, +-1.478523135334008790e-03, +-1.461927831219908026e-03, +-1.445331048721905419e-03, +-1.428732814864972856e-03, +-1.412133156674889520e-03, +-1.395532101178004669e-03, +-1.378929675401750462e-03, +-1.362325906374243188e-03, +-1.345720821124500328e-03, +-1.329114446681655369e-03, +-1.312506810076043313e-03, +-1.295897938338394896e-03, +-1.279287858500083351e-03, +-1.262676597592704607e-03, +-1.246064182648595319e-03, +-1.229450640700407646e-03, +-1.212835998781352760e-03, +-1.196220283924413069e-03, +-1.179603523163407115e-03, +-1.162985743532212856e-03, +-1.146366972064988840e-03, +-1.129747235795772620e-03, +-1.113126561758981652e-03, +-1.096504976989194071e-03, +-1.079882508520453935e-03, +-1.063259183387328319e-03, +-1.046635028624044294e-03, +-1.030010071265179562e-03, +-1.013384338344321947e-03, +-9.967578568955090014e-04, +-9.801306539523448134e-04, +-9.635027565482466626e-04, +-9.468741917160150264e-04, +-9.302449864883605016e-04, +-9.136151678974741355e-04, +-8.969847629752766838e-04, +-8.803537987526225891e-04, +-8.637223022603708481e-04, +-8.470903005286968676e-04, +-8.304578205868609880e-04, +-8.138248894637142633e-04, +-7.971915341872939454e-04, +-7.805577817850533348e-04, +-7.639236592830719397e-04, +-7.472891937071324134e-04, +-7.306544120819297378e-04, +-7.140193414313068202e-04, +-6.973840087778414125e-04, +-6.807484411433564449e-04, +-6.641126655485033673e-04, +-6.474767090130037093e-04, +-6.308405985548555528e-04, +-6.142043611914075425e-04, +-5.975680239385725142e-04, +-5.809316138110588636e-04, +-5.642951578219603925e-04, +-5.476586829832658836e-04, +-5.310222163056299008e-04, +-5.143857847976815011e-04, +-4.977494154670906567e-04, +-4.811131353196956882e-04, +-4.644769713601943901e-04, +-4.478409505908069921e-04, +-4.312051000127106130e-04, +-4.145694466251683753e-04, +-3.979340174257603945e-04, +-3.812988394099656566e-04, +-3.646639395716812964e-04, +-3.480293449028016022e-04, +-3.313950823934575158e-04, +-3.147611790312289056e-04, +-2.981276618022139151e-04, +-2.814945576902428618e-04, +-2.648618936771135099e-04, +-2.482296967421762537e-04, +-2.315979938628469727e-04, +-2.149668120143779940e-04, +-1.983361781691657475e-04, +-1.817061192978175401e-04, +-1.650766623683689238e-04, +-1.484478343465183716e-04, +-1.318196621952091277e-04, +-1.151921728751465076e-04, +-9.856539334438001914e-05, +-8.193935055853969192e-05, +-6.531407147005040986e-05, +-4.868958302920029093e-05, +-3.206591218335633464e-05, +-1.544308587719804722e-05, + 1.178868947696194127e-06, + 1.779992535233685663e-05, + 3.442005640073762210e-05, + 5.103923515968059114e-05, + 6.765743469950155295e-05, + 8.427462809311396367e-05, + 1.008907884162376826e-04, + 1.175058887485552398e-04, + 1.341199021722707893e-04, + 1.507328017729903861e-04, + 1.673445606394853731e-04, + 1.839551518641067897e-04, + 2.005645485422734796e-04, + 2.171727237728866898e-04, + 2.337796506580933347e-04, + 2.503853023040729917e-04, + 2.669896518199693387e-04, + 2.835926723186732185e-04, + 3.001943369165898344e-04, + 3.167946187340507733e-04, + 3.333934908948038892e-04, + 3.499909265262403347e-04, + 3.665868987600878542e-04, + 3.831813807313401887e-04, + 3.997743455790435559e-04, + 4.163657664460628416e-04, + 4.329556164794915916e-04, + 4.495438688301453089e-04, + 4.661304966529698736e-04, + 4.827154731068104983e-04, + 4.992987713551940354e-04, + 5.158803645652609285e-04, + 5.324602259085534821e-04, + 5.490383285607759820e-04, + 5.656146457022093480e-04, + 5.821891505172012340e-04, + 5.987618161945771570e-04, + 6.153326159274118395e-04, + 6.319015229138940769e-04, + 6.484685103559013376e-04, + 6.650335514601459809e-04, + 6.815966194384047829e-04, + 6.981576875065479250e-04, + 7.147167288853179933e-04, + 7.312737168000990433e-04, + 7.478286244813243683e-04, + 7.643814251639750564e-04, + 7.809320920879778919e-04, + 7.974805984979871061e-04, + 8.140269176441604490e-04, + 8.305710227810833351e-04, + 8.471128871685675759e-04, + 8.636524840714122041e-04, + 8.801897867598077732e-04, + 8.967247685088324200e-04, + 9.132574025988696078e-04, + 9.297876623153620125e-04, + 9.463155209496001714e-04, + 9.628409517976589888e-04, + 9.793639281610825188e-04, + 9.958844233471128397e-04, + 1.012402410668184708e-03, + 1.028917863442327472e-03, + 1.045430754992943568e-03, + 1.061941058649576788e-03, + 1.078448747746855183e-03, + 1.094953795625277105e-03, + 1.111456175630968352e-03, + 1.127955861116088738e-03, + 1.144452825438347678e-03, + 1.160947041961384084e-03, + 1.177438484054551052e-03, + 1.193927125093788419e-03, + 1.210412938460177310e-03, + 1.226895897541296692e-03, + 1.243375975730506714e-03, + 1.259853146427824091e-03, + 1.276327383038876285e-03, + 1.292798658975571110e-03, + 1.309266947656329613e-03, + 1.325732222505578888e-03, + 1.342194456954158436e-03, + 1.358653624439090744e-03, + 1.375109698404363215e-03, + 1.391562652299852421e-03, + 1.408012459582127065e-03, + 1.424459093714182780e-03, + 1.440902528165886876e-03, + 1.457342736413441220e-03, + 1.473779691939812453e-03, + 1.490213368234482617e-03, + 1.506643738794246267e-03, + 1.523070777122128867e-03, + 1.539494456728088267e-03, + 1.555914751129233720e-03, + 1.572331633849320849e-03, + 1.588745078419159752e-03, + 1.605155058376381456e-03, + 1.621561547266220284e-03, + 1.637964518640439623e-03, + 1.654363946058134884e-03, + 1.670759803085474816e-03, + 1.687152063296127377e-03, + 1.703540700270740615e-03, + 1.719925687597360963e-03, + 1.736306998871285992e-03, + 1.752684607695482923e-03, + 1.769058487680069507e-03, + 1.785428612442729705e-03, + 1.801794955608473870e-03, + 1.818157490810433895e-03, + 1.834516191688776192e-03, + 1.850871031891407944e-03, + 1.867221985074205004e-03, + 1.883569024900477598e-03, + 1.899912125041407262e-03, + 1.916251259175810479e-03, + 1.932586400990891993e-03, + 1.948917524181214373e-03, + 1.965244602449461517e-03, + 1.981567609506204239e-03, + 1.997886519070304900e-03, + 2.014201304868427998e-03, + 2.030511940635432860e-03, + 2.046818400114141200e-03, + 2.063120657056118600e-03, + 2.079418685220618939e-03, + 2.095712458375350272e-03, + 2.112001950296243241e-03, + 2.128287134767878688e-03, + 2.144567985582948588e-03, + 2.160844476542504982e-03, + 2.177116581456640422e-03, + 2.193384274143415913e-03, + 2.209647528429659318e-03, + 2.225906318150705585e-03, + 2.242160617150831294e-03, + 2.258410399282720360e-03, + 2.274655638407898153e-03, + 2.290896308396581441e-03, + 2.307132383128072169e-03, + 2.323363836490275648e-03, + 2.339590642380081319e-03, + 2.355812774703151553e-03, + 2.372030207374686665e-03, + 2.388242914318364565e-03, + 2.404450869467042017e-03, + 2.420654046762948496e-03, + 2.436852420157196563e-03, + 2.453045963610212508e-03, + 2.469234651091454028e-03, + 2.485418456580218167e-03, + 2.501597354064586179e-03, + 2.517771317542173357e-03, + 2.533940321019924769e-03, + 2.550104338514495601e-03, + 2.566263344051768897e-03, + 2.582417311667249780e-03, + 2.598566215405824758e-03, + 2.614710029322557527e-03, + 2.630848727481610843e-03, + 2.646982283957033649e-03, + 2.663110672832523420e-03, + 2.679233868201829488e-03, + 2.695351844168261679e-03, + 2.711464574844886771e-03, + 2.727572034355241030e-03, + 2.743674196832250785e-03, + 2.759771036419101081e-03, + 2.775862527268574322e-03, + 2.791948643544317921e-03, + 2.808029359419473431e-03, + 2.824104649077510080e-03, + 2.840174486712003597e-03, + 2.856238846527046470e-03, + 2.872297702736720595e-03, + 2.888351029565540060e-03, + 2.904398801248189201e-03, + 2.920440992030286318e-03, + 2.936477576167369295e-03, + 2.952508527925636755e-03, + 2.968533821581715616e-03, + 2.984553431423076549e-03, + 3.000567331747527877e-03, + 3.016575496863437185e-03, + 3.032577901090403524e-03, + 3.048574518758209208e-03, + 3.064565324207609107e-03, + 3.080550291790059604e-03, + 3.096529395868151402e-03, + 3.112502610815106457e-03, + 3.128469911015157017e-03, + 3.144431270863368676e-03, + 3.160386664766316484e-03, + 3.176336067141133455e-03, + 3.192279452416213990e-03, + 3.208216795031021331e-03, + 3.224148069436451412e-03, + 3.240073250094360150e-03, + 3.255992311477965036e-03, + 3.271905228071610508e-03, + 3.287811974371493504e-03, + 3.303712524884799134e-03, + 3.319606854129835121e-03, + 3.335494936637189295e-03, + 3.351376746948338779e-03, + 3.367252259616495668e-03, + 3.383121449206346384e-03, + 3.398984290294496200e-03, + 3.414840757468959234e-03, + 3.430690825329534878e-03, + 3.446534468487599638e-03, + 3.462371661566867372e-03, + 3.478202379202340218e-03, + 3.494026596041088784e-03, + 3.509844286741975027e-03, + 3.525655425976121499e-03, + 3.541459988426366202e-03, + 3.557257948787481607e-03, + 3.573049281766860295e-03, + 3.588833962083482799e-03, + 3.604611964468655734e-03, + 3.620383263665790611e-03, + 3.636147834430825381e-03, + 3.651905651531678863e-03, + 3.667656689748710012e-03, + 3.683400923874430386e-03, + 3.699138328714281308e-03, + 3.714868879085641597e-03, + 3.730592549818523632e-03, + 3.746309315755374722e-03, + 3.762019151751465253e-03, + 3.777722032674401664e-03, + 3.793417933404523695e-03, + 3.809106828834656761e-03, + 3.824788693870909053e-03, + 3.840463503431676244e-03, + 3.856131232447895189e-03, + 3.871791855864151980e-03, + 3.887445348637274221e-03, + 3.903091685737194918e-03, + 3.918730842146730432e-03, + 3.934362792861946512e-03, + 3.949987512891685142e-03, + 3.965604977257956160e-03, + 3.981215160995718247e-03, + 3.996818039153610114e-03, + 4.012413586792949564e-03, + 4.028001778988463816e-03, + 4.043582590828069187e-03, + 4.059155997413257076e-03, + 4.074721973858625584e-03, + 4.090280495292262890e-03, + 4.105831536855491376e-03, + 4.121375073703660401e-03, + 4.136911081005106329e-03, + 4.152439533941803054e-03, + 4.167960407709567563e-03, + 4.183473677517633195e-03, + 4.198979318588941072e-03, + 4.214477306160013467e-03, + 4.229967615481622541e-03, + 4.245450221817830168e-03, + 4.260925100446693106e-03, + 4.276392226660045287e-03, + 4.291851575763900271e-03, + 4.307303123077973334e-03, + 4.322746843936024937e-03, + 4.338182713685704607e-03, + 4.353610707689309876e-03, + 4.369030801322477432e-03, + 4.384442969975419976e-03, + 4.399847189052299122e-03, + 4.415243433971970458e-03, + 4.430631680167071082e-03, + 4.446011903084629360e-03, + 4.461384078186247069e-03, + 4.476748180947673524e-03, + 4.492104186859147315e-03, + 4.507452071425200289e-03, + 4.522791810165398274e-03, + 4.538123378613290702e-03, + 4.553446752317191239e-03, + 4.568761906839940989e-03, + 4.584068817759305754e-03, + 4.599367460667469487e-03, + 4.614657811171429813e-03, + 4.629939844892807209e-03, + 4.645213537468502463e-03, + 4.660478864549794618e-03, + 4.675735801802917771e-03, + 4.690984324909270101e-03, + 4.706224409564969784e-03, + 4.721456031481245305e-03, + 4.736679166384145760e-03, + 4.751893790015356174e-03, + 4.767099878131141923e-03, + 4.782297406503106807e-03, + 4.797486350917963202e-03, + 4.812666687177901553e-03, + 4.827838391100134144e-03, + 4.843001438517274132e-03, + 4.858155805277110037e-03, + 4.873301467243417590e-03, + 4.888438400294603178e-03, + 4.903566580325018770e-03, + 4.918685983244195162e-03, + 4.933796584977775262e-03, + 4.948898361466415145e-03, + 4.963991288666516968e-03, + 4.979075342550364283e-03, + 4.994150499105689221e-03, + 5.009216734336049796e-03, + 5.024274024260565359e-03, + 5.039322344914729315e-03, + 5.054361672349312780e-03, + 5.069391982631187704e-03, + 5.084413251843023299e-03, + 5.099425456083722316e-03, + 5.114428571467926656e-03, + 5.129422574126405940e-03, + 5.144407440205819859e-03, + 5.159383145869439816e-03, + 5.174349667296199162e-03, + 5.189306980681387092e-03, + 5.204255062236406645e-03, + 5.219193888189184102e-03, + 5.234123434783714487e-03, + 5.249043678280213357e-03, + 5.263954594955811556e-03, + 5.278856161103502240e-03, + 5.293748353032944054e-03, + 5.308631147070164494e-03, + 5.323504519557964963e-03, + 5.338368446855495768e-03, + 5.353222905338560558e-03, + 5.368067871399513115e-03, + 5.382903321447643323e-03, + 5.397729231908709666e-03, + 5.412545579225275759e-03, + 5.427352339856568973e-03, + 5.442149490279089320e-03, + 5.456937006985748163e-03, + 5.471714866486388634e-03, + 5.486483045308099618e-03, + 5.501241519994623345e-03, + 5.515990267106848921e-03, + 5.530729263222524360e-03, + 5.545458484936978232e-03, + 5.560177908862169900e-03, + 5.574887511627392954e-03, + 5.589587269879021068e-03, + 5.604277160280935616e-03, + 5.618957159514026065e-03, + 5.633627244276601109e-03, + 5.648287391284081624e-03, + 5.662937577269826391e-03, + 5.677577778984097337e-03, + 5.692207973194739548e-03, + 5.706828136687078917e-03, + 5.721438246264143324e-03, + 5.736038278746323493e-03, + 5.750628210971503104e-03, + 5.765208019795690225e-03, + 5.779777682092108321e-03, + 5.794337174751828558e-03, + 5.808886474683580721e-03, + 5.823425558814153934e-03, + 5.837954404087863230e-03, + 5.852472987467019667e-03, + 5.866981285931690930e-03, + 5.881479276480163637e-03, + 5.895966936128412515e-03, + 5.910444241910492447e-03, + 5.924911170878371068e-03, + 5.939367700102549802e-03, + 5.953813806671148789e-03, + 5.968249467690606852e-03, + 5.982674660285467252e-03, + 5.997089361598726374e-03, + 6.011493548791392236e-03, + 6.025887199042704798e-03, + 6.040270289550672862e-03, + 6.054642797531237935e-03, + 6.069004700218856227e-03, + 6.083355974866362474e-03, + 6.097696598745284795e-03, + 6.112026549145432690e-03, + 6.126345803375241386e-03, + 6.140654338761554996e-03, + 6.154952132650311734e-03, + 6.169239162405637522e-03, + 6.183515405410460949e-03, + 6.197780839066402252e-03, + 6.212035440794036120e-03, + 6.226279188032542156e-03, + 6.240512058239933851e-03, + 6.254734028893010021e-03, + 6.268945077487883891e-03, + 6.283145181539241501e-03, + 6.297334318580490031e-03, + 6.311512466164741382e-03, + 6.325679601863611751e-03, + 6.339835703267963224e-03, + 6.353980747987661784e-03, + 6.368114713651982367e-03, + 6.382237577909134416e-03, + 6.396349318426590609e-03, + 6.410449912891007067e-03, + 6.424539339008709937e-03, + 6.438617574504924314e-03, + 6.452684597124369245e-03, + 6.466740384631091201e-03, + 6.480784914808807549e-03, + 6.494818165460441647e-03, + 6.508840114408350960e-03, + 6.522850739494909060e-03, + 6.536850018581549793e-03, + 6.550837929549487189e-03, + 6.564814450299523776e-03, + 6.578779558752319463e-03, + 6.592733232848034183e-03, + 6.606675450546656628e-03, + 6.620606189827763118e-03, + 6.634525428691273076e-03, + 6.648433145156370898e-03, + 6.662329317262419281e-03, + 6.676213923068493455e-03, + 6.690086940653943229e-03, + 6.703948348117812726e-03, + 6.717798123579283610e-03, + 6.731636245177380178e-03, + 6.745462691071724831e-03, + 6.759277439441670719e-03, + 6.773080468486494289e-03, + 6.786871756426328568e-03, + 6.800651281501054676e-03, + 6.814419021970881223e-03, + 6.828174956116297468e-03, + 6.841919062238339608e-03, + 6.855651318658137136e-03, + 6.869371703717366481e-03, + 6.883080195777895385e-03, + 6.896776773222566999e-03, + 6.910461414454264865e-03, + 6.924134097896527014e-03, + 6.937794801993415854e-03, + 6.951443505209776649e-03, + 6.965080186030907922e-03, + 6.978704822962812984e-03, + 6.992317394532055960e-03, + 7.005917879286414039e-03, + 7.019506255793948532e-03, + 7.033082502643606820e-03, + 7.046646598445405370e-03, + 7.060198521829990845e-03, + 7.073738251448986186e-03, + 7.087265765974841425e-03, + 7.100781044101353232e-03, + 7.114284064542938935e-03, + 7.127774806035169081e-03, + 7.141253247334616513e-03, + 7.154719367219176430e-03, + 7.168173144487650049e-03, + 7.181614557960101959e-03, + 7.195043586477658029e-03, + 7.208460208903095211e-03, + 7.221864404120109486e-03, + 7.235256151033605566e-03, + 7.248635428569919804e-03, + 7.262002215677128107e-03, + 7.275356491324247964e-03, + 7.288698234501806567e-03, + 7.302027424222025560e-03, + 7.315344039518423790e-03, + 7.328648059446101794e-03, + 7.341939463081570937e-03, + 7.355218229523404795e-03, + 7.368484337891374400e-03, + 7.381737767327031102e-03, + 7.394978496993588613e-03, + 7.408206506076160658e-03, + 7.421421773781447864e-03, + 7.434624279338017047e-03, + 7.447814001996078299e-03, + 7.460990921028176279e-03, + 7.474155015728285549e-03, + 7.487306265412403856e-03, + 7.500444649418685703e-03, + 7.513570147107057236e-03, + 7.526682737859557125e-03, + 7.539782401080092830e-03, + 7.552869116195156177e-03, + 7.565942862652840634e-03, + 7.579003619923642757e-03, + 7.592051367500035446e-03, + 7.605086084897055149e-03, + 7.618107751651681699e-03, + 7.631116347323298882e-03, + 7.644111851493398668e-03, + 7.657094243766347091e-03, + 7.670063503768280964e-03, + 7.683019611148028151e-03, + 7.695962545576712915e-03, + 7.708892286748296289e-03, + 7.721808814378856162e-03, + 7.734712108207034836e-03, + 7.747602147994293170e-03, + 7.760478913524455208e-03, + 7.773342384604063800e-03, + 7.786192541062129067e-03, + 7.799029362750857855e-03, + 7.811852829544678814e-03, + 7.824662921340961447e-03, + 7.837459618059781918e-03, + 7.850242899644227501e-03, + 7.863012746060044425e-03, + 7.875769137295911965e-03, + 7.888512053363319274e-03, + 7.901241474297042433e-03, + 7.913957380154486992e-03, + 7.926659751016171956e-03, + 7.939348566985564987e-03, + 7.952023808189438020e-03, + 7.964685454777433588e-03, + 7.977333486922262573e-03, + 7.989967884820241978e-03, + 8.002588628690380720e-03, + 8.015195698775123834e-03, + 8.027789075340069705e-03, + 8.040368738674327428e-03, + 8.052934669090065778e-03, + 8.065486846922920866e-03, + 8.078025252531720324e-03, + 8.090549866299227497e-03, + 8.103060668630973976e-03, + 8.115557639956310840e-03, + 8.128040760727945485e-03, + 8.140510011422429082e-03, + 8.152965372539518196e-03, + 8.165406824602605002e-03, + 8.177834348158930650e-03, + 8.190247923779153325e-03, + 8.202647532057669166e-03, + 8.215033153612475228e-03, + 8.227404769085707240e-03, + 8.239762359142881534e-03, + 8.252105904473391179e-03, + 8.264435385790493832e-03, + 8.276750783831382866e-03, + 8.289052079357036446e-03, + 8.301339253152404882e-03, + 8.313612286026172971e-03, + 8.325871158811554498e-03, + 8.338115852365230590e-03, + 8.350346347568123398e-03, + 8.362562625325167115e-03, + 8.374764666565552573e-03, + 8.386952452242425401e-03, + 8.399125963333024802e-03, + 8.411285180839174480e-03, + 8.423430085786512422e-03, + 8.435560659225021726e-03, + 8.447676882228976822e-03, + 8.459778735897073576e-03, + 8.471866201352200310e-03, + 8.483939259741645963e-03, + 8.495997892237018567e-03, + 8.508042080034595653e-03, + 8.520071804354850675e-03, + 8.532087046442841591e-03, + 8.544087787567964526e-03, + 8.556074009024628585e-03, + 8.568045692131331242e-03, + 8.580002818231326212e-03, + 8.591945368692474258e-03, + 8.603873324907409734e-03, + 8.615786668293322001e-03, + 8.627685380291974515e-03, + 8.639569442370355346e-03, + 8.651438836019762976e-03, + 8.663293542756439480e-03, + 8.675133544121414395e-03, + 8.686958821680735437e-03, + 8.698769357025163199e-03, + 8.710565131770427877e-03, + 8.722346127557073156e-03, + 8.734112326051007846e-03, + 8.745863708942723524e-03, + 8.757600257947917299e-03, + 8.769321954807238542e-03, + 8.781028781286618484e-03, + 8.792720719176916333e-03, + 8.804397750294189889e-03, + 8.816059856479553300e-03, + 8.827707019599671454e-03, + 8.839339221546078235e-03, + 8.850956444235624082e-03, + 8.862558669610573134e-03, + 8.874145879638395060e-03, + 8.885718056311900370e-03, + 8.897275181649245621e-03, + 8.908817237694080862e-03, + 8.920344206515407395e-03, + 8.931856070207664505e-03, + 8.943352810890627114e-03, + 8.954834410709983442e-03, + 8.966300851836596017e-03, + 8.977752116466935356e-03, + 8.989188186823093840e-03, + 9.000609045152896739e-03, + 9.012014673729602104e-03, + 9.023405054852147097e-03, + 9.034780170845494937e-03, + 9.046140004059973969e-03, + 9.057484536871742570e-03, + 9.068813751682744048e-03, + 9.080127630920857562e-03, + 9.091426157039632708e-03, + 9.102709312518541054e-03, + 9.113977079862774916e-03, + 9.125229441603861444e-03, + 9.136466380298894144e-03, + 9.147687878531030742e-03, + 9.158893918909342263e-03, + 9.170084484069161712e-03, + 9.181259556671669472e-03, + 9.192419119404089331e-03, + 9.203563154979806440e-03, + 9.214691646138492218e-03, + 9.225804575645821584e-03, + 9.236901926293419191e-03, + 9.247983680899629633e-03, + 9.259049822308627539e-03, + 9.270100333391007377e-03, + 9.281135197043495488e-03, + 9.292154396189430607e-03, + 9.303157913778198340e-03, + 9.314145732785690870e-03, + 9.325117836214053685e-03, + 9.336074207092126195e-03, + 9.347014828474969894e-03, + 9.357939683444168461e-03, + 9.368848755107678575e-03, + 9.379742026600249721e-03, + 9.390619481082962752e-03, + 9.401481101743557750e-03, + 9.412326871796208513e-03, + 9.423156774482100220e-03, + 9.433970793068693905e-03, + 9.444768910850215651e-03, + 9.455551111147750265e-03, + 9.466317377308932496e-03, + 9.477067692708221122e-03, + 9.487802040746730683e-03, + 9.498520404852715468e-03, + 9.509222768480924196e-03, + 9.519909115113090944e-03, + 9.530579428257740862e-03, + 9.541233691450523233e-03, + 9.551871888253772591e-03, + 9.562494002256902506e-03, + 9.573100017076176596e-03, + 9.583689916355194252e-03, + 9.594263683764345935e-03, + 9.604821303000922461e-03, + 9.615362757789479298e-03, + 9.625888031881841764e-03, + 9.636397109056770230e-03, + 9.646889973120058998e-03, + 9.657366607905009878e-03, + 9.667826997271852796e-03, + 9.678271125108215897e-03, + 9.688698975328733504e-03, + 9.699110531875795513e-03, + 9.709505778718657484e-03, + 9.719884699854037385e-03, + 9.730247279306011507e-03, + 9.740593501126111609e-03, + 9.750923349393173997e-03, + 9.761236808213495653e-03, + 9.771533861720681571e-03, + 9.781814494076229369e-03, + 9.792078689468707020e-03, + 9.802326432114328789e-03, + 9.812557706256977777e-03, + 9.822772496167976944e-03, + 9.832970786146279923e-03, + 9.843152560518372146e-03, + 9.853317803638702785e-03, + 9.863466499889042907e-03, + 9.873598633678965994e-03, + 9.883714189445745590e-03, + 9.893813151654556534e-03, + 9.903895504798089847e-03, + 9.913961233396972536e-03, + 9.924010321999481368e-03, + 9.934042755182179510e-03, + 9.944058517548860082e-03, + 9.954057593731625159e-03, + 9.964039968390219631e-03, + 9.974005626212645303e-03, + 9.983954551914586695e-03, + 9.993886730239719823e-03, + 1.000380214595989609e-02, + 1.001370078387476409e-02, + 1.002358262881219118e-02, + 1.003344766562789050e-02, + 1.004329587920606282e-02, + 1.005312725445864017e-02, + 1.006294177632584448e-02, + 1.007273942977599500e-02, + 1.008252019980574593e-02, + 1.009228407143977595e-02, + 1.010203102973110910e-02, + 1.011176105976082686e-02, + 1.012147414663865097e-02, + 1.013117027550231031e-02, + 1.014084943151789299e-02, + 1.015051159987982038e-02, + 1.016015676581101188e-02, + 1.016978491456266807e-02, + 1.017939603141423607e-02, + 1.018899010167403744e-02, + 1.019856711067843730e-02, + 1.020812704379242715e-02, + 1.021766988640942370e-02, + 1.022719562395155678e-02, + 1.023670424186925998e-02, + 1.024619572564167656e-02, + 1.025567006077638017e-02, + 1.026512723280995076e-02, + 1.027456722730706387e-02, + 1.028399002986138226e-02, + 1.029339562609504592e-02, + 1.030278400165919941e-02, + 1.031215514223346105e-02, + 1.032150903352610158e-02, + 1.033084566127444315e-02, + 1.034016501124437708e-02, + 1.034946706923065701e-02, + 1.035875182105674801e-02, + 1.036801925257527755e-02, + 1.037726934966743710e-02, + 1.038650209824341052e-02, + 1.039571748424223709e-02, + 1.040491549363206127e-02, + 1.041409611240979617e-02, + 1.042325932660136990e-02, + 1.043240512226168044e-02, + 1.044153348547487321e-02, + 1.045064440235385535e-02, + 1.045973785904066866e-02, + 1.046881384170643588e-02, + 1.047787233655148205e-02, + 1.048691332980512467e-02, + 1.049593680772575865e-02, + 1.050494275660127097e-02, + 1.051393116274840743e-02, + 1.052290201251320119e-02, + 1.053185529227093457e-02, + 1.054079098842619112e-02, + 1.054970908741272896e-02, + 1.055860957569364211e-02, + 1.056749243976121307e-02, + 1.057635766613737767e-02, + 1.058520524137300176e-02, + 1.059403515204862534e-02, + 1.060284738477388321e-02, + 1.061164192618823526e-02, + 1.062041876296021883e-02, + 1.062917788178796737e-02, + 1.063791926939897971e-02, + 1.064664291255041847e-02, + 1.065534879802878913e-02, + 1.066403691265007878e-02, + 1.067270724326014816e-02, + 1.068135977673408642e-02, + 1.068999449997671755e-02, + 1.069861139992235761e-02, + 1.070721046353514949e-02, + 1.071579167780871596e-02, + 1.072435502976641988e-02, + 1.073290050646117516e-02, + 1.074142809497586649e-02, + 1.074993778242291573e-02, + 1.075842955594447613e-02, + 1.076690340271247923e-02, + 1.077535930992873196e-02, + 1.078379726482478658e-02, + 1.079221725466196317e-02, + 1.080061926673134970e-02, + 1.080900328835422523e-02, + 1.081736930688141987e-02, + 1.082571730969373279e-02, + 1.083404728420198082e-02, + 1.084235921784681457e-02, + 1.085065309809887281e-02, + 1.085892891245868012e-02, + 1.086718664845694009e-02, + 1.087542629365422127e-02, + 1.088364783564114806e-02, + 1.089185126203830178e-02, + 1.090003656049656593e-02, + 1.090820371869674101e-02, + 1.091635272434968509e-02, + 1.092448356519641790e-02, + 1.093259622900822139e-02, + 1.094069070358636570e-02, + 1.094876697676229471e-02, + 1.095682503639787246e-02, + 1.096486487038488347e-02, + 1.097288646664552197e-02, + 1.098088981313210047e-02, + 1.098887489782737932e-02, + 1.099684170874419380e-02, + 1.100479023392581489e-02, + 1.101272046144566655e-02, + 1.102063237940787734e-02, + 1.102852597594652928e-02, + 1.103640123922624942e-02, + 1.104425815744199645e-02, + 1.105209671881925149e-02, + 1.105991691161378743e-02, + 1.106771872411187532e-02, + 1.107550214463012654e-02, + 1.108326716151596461e-02, + 1.109101376314695735e-02, + 1.109874193793124707e-02, + 1.110645167430768937e-02, + 1.111414296074545241e-02, + 1.112181578574442456e-02, + 1.112947013783492124e-02, + 1.113710600557809779e-02, + 1.114472337756548803e-02, + 1.115232224241931129e-02, + 1.115990258879241866e-02, + 1.116746440536854103e-02, + 1.117500768086178951e-02, + 1.118253240401710473e-02, + 1.119003856361010588e-02, + 1.119752614844721911e-02, + 1.120499514736554222e-02, + 1.121244554923296090e-02, + 1.121987734294801163e-02, + 1.122729051744037615e-02, + 1.123468506167017190e-02, + 1.124206096462845514e-02, + 1.124941821533730416e-02, + 1.125675680284939952e-02, + 1.126407671624846465e-02, + 1.127137794464895364e-02, + 1.127866047719651779e-02, + 1.128592430306746101e-02, + 1.129316941146911099e-02, + 1.130039579163973767e-02, + 1.130760343284865736e-02, + 1.131479232439611647e-02, + 1.132196245561333144e-02, + 1.132911381586249391e-02, + 1.133624639453711426e-02, + 1.134336018106147335e-02, + 1.135045516489092791e-02, + 1.135753133551190876e-02, + 1.136458868244221744e-02, + 1.137162719523046248e-02, + 1.137864686345644444e-02, + 1.138564767673124270e-02, + 1.139262962469689625e-02, + 1.139959269702676796e-02, + 1.140653688342525146e-02, + 1.141346217362822386e-02, + 1.142036855740248026e-02, + 1.142725602454622638e-02, + 1.143412456488876287e-02, + 1.144097416829088949e-02, + 1.144780482464446102e-02, + 1.145461652387269429e-02, + 1.146140925593008841e-02, + 1.146818301080261560e-02, + 1.147493777850740193e-02, + 1.148167354909295813e-02, + 1.148839031263925239e-02, + 1.149508805925753864e-02, + 1.150176677909051266e-02, + 1.150842646231213864e-02, + 1.151506709912812100e-02, + 1.152168867977529723e-02, + 1.152829119452206813e-02, + 1.153487463366826421e-02, + 1.154143898754531397e-02, + 1.154798424651595073e-02, + 1.155451040097454744e-02, + 1.156101744134691370e-02, + 1.156750535809055944e-02, + 1.157397414169436534e-02, + 1.158042378267880486e-02, + 1.158685427159591129e-02, + 1.159326559902944774e-02, + 1.159965775559466429e-02, + 1.160603073193834309e-02, + 1.161238451873916958e-02, + 1.161871910670716351e-02, + 1.162503448658420285e-02, + 1.163133064914368200e-02, + 1.163760758519089347e-02, + 1.164386528556264795e-02, + 1.165010374112752066e-02, + 1.165632294278576113e-02, + 1.166252288146945801e-02, + 1.166870354814241763e-02, + 1.167486493380008941e-02, + 1.168100702946981047e-02, + 1.168712982621073967e-02, + 1.169323331511377788e-02, + 1.169931748730160259e-02, + 1.170538233392877034e-02, + 1.171142784618166462e-02, + 1.171745401527852018e-02, + 1.172346083246938141e-02, + 1.172944828903637639e-02, + 1.173541637629319304e-02, + 1.174136508558570879e-02, + 1.174729440829141817e-02, + 1.175320433582019430e-02, + 1.175909485961337646e-02, + 1.176496597114456803e-02, + 1.177081766191910919e-02, + 1.177664992347449840e-02, + 1.178246274738014264e-02, + 1.178825612523741635e-02, + 1.179403004867974995e-02, + 1.179978450937264195e-02, + 1.180551949901346639e-02, + 1.181123500933180075e-02, + 1.181693103208920556e-02, + 1.182260755907941704e-02, + 1.182826458212801225e-02, + 1.183390209309290175e-02, + 1.183952008386402951e-02, + 1.184511854636335383e-02, + 1.185069747254512314e-02, + 1.185625685439549264e-02, + 1.186179668393312625e-02, + 1.186731695320844895e-02, + 1.187281765430439791e-02, + 1.187829877933581184e-02, + 1.188376032044988553e-02, + 1.188920226982605709e-02, + 1.189462461967577718e-02, + 1.190002736224292194e-02, + 1.190541048980353449e-02, + 1.191077399466596541e-02, + 1.191611786917062821e-02, + 1.192144210569042254e-02, + 1.192674669663048095e-02, + 1.193203163442813942e-02, + 1.193729691155307089e-02, + 1.194254252050733212e-02, + 1.194776845382529082e-02, + 1.195297470407355282e-02, + 1.195816126385099328e-02, + 1.196332812578923196e-02, + 1.196847528255176249e-02, + 1.197360272683485431e-02, + 1.197871045136681897e-02, + 1.198379844890862245e-02, + 1.198886671225357463e-02, + 1.199391523422726515e-02, + 1.199894400768786347e-02, + 1.200395302552591768e-02, + 1.200894228066446204e-02, + 1.201391176605883654e-02, + 1.201886147469702695e-02, + 1.202379139959941848e-02, + 1.202870153381882523e-02, + 1.203359187044058566e-02, + 1.203846240258263714e-02, + 1.204331312339535290e-02, + 1.204814402606150560e-02, + 1.205295510379658305e-02, + 1.205774634984856791e-02, + 1.206251775749791338e-02, + 1.206726932005771150e-02, + 1.207200103087348667e-02, + 1.207671288332362244e-02, + 1.208140487081874742e-02, + 1.208607698680235626e-02, + 1.209072922475032570e-02, + 1.209536157817127366e-02, + 1.209997404060649678e-02, + 1.210456660562968939e-02, + 1.210913926684748822e-02, + 1.211369201789889993e-02, + 1.211822485245578687e-02, + 1.212273776422249059e-02, + 1.212723074693616496e-02, + 1.213170379436667376e-02, + 1.213615690031638258e-02, + 1.214059005862053696e-02, + 1.214500326314701950e-02, + 1.214939650779635512e-02, + 1.215376978650197122e-02, + 1.215812309322976403e-02, + 1.216245642197867453e-02, + 1.216676976678008476e-02, + 1.217106312169840589e-02, + 1.217533648083062893e-02, + 1.217958983830651036e-02, + 1.218382318828871262e-02, + 1.218803652497248494e-02, + 1.219222984258618372e-02, + 1.219640313539059606e-02, + 1.220055639767962663e-02, + 1.220468962377974434e-02, + 1.220880280805042122e-02, + 1.221289594488388780e-02, + 1.221696902870518867e-02, + 1.222102205397225007e-02, + 1.222505501517585393e-02, + 1.222906790683966384e-02, + 1.223306072352010714e-02, + 1.223703345980656741e-02, + 1.224098611032135332e-02, + 1.224491866971948867e-02, + 1.224883113268904374e-02, + 1.225272349395098610e-02, + 1.225659574825915463e-02, + 1.226044789040029413e-02, + 1.226427991519393225e-02, + 1.226809181749288595e-02, + 1.227188359218251215e-02, + 1.227565523418144150e-02, + 1.227940673844093826e-02, + 1.228313809994543461e-02, + 1.228684931371235023e-02, + 1.229054037479184423e-02, + 1.229421127826725753e-02, + 1.229786201925487342e-02, + 1.230149259290388118e-02, + 1.230510299439651831e-02, + 1.230869321894801152e-02, + 1.231226326180658373e-02, + 1.231581311825349564e-02, + 1.231934278360294864e-02, + 1.232285225320225129e-02, + 1.232634152243173783e-02, + 1.232981058670466756e-02, + 1.233325944146746768e-02, + 1.233668808219951819e-02, + 1.234009650441327335e-02, + 1.234348470365432236e-02, + 1.234685267550109621e-02, + 1.235020041556541583e-02, + 1.235352791949189885e-02, + 1.235683518295837592e-02, + 1.236012220167561487e-02, + 1.236338897138769370e-02, + 1.236663548787165362e-02, + 1.236986174693759447e-02, + 1.237306774442875623e-02, + 1.237625347622158672e-02, + 1.237941893822543625e-02, + 1.238256412638296007e-02, + 1.238568903666982871e-02, + 1.238879366509499508e-02, + 1.239187800770025910e-02, + 1.239494206056078983e-02, + 1.239798581978485484e-02, + 1.240100928151381329e-02, + 1.240401244192222696e-02, + 1.240699529721770410e-02, + 1.240995784364119607e-02, + 1.241290007746664870e-02, + 1.241582199500131274e-02, + 1.241872359258544382e-02, + 1.242160486659259558e-02, + 1.242446581342950170e-02, + 1.242730642953595276e-02, + 1.243012671138516052e-02, + 1.243292665548331906e-02, + 1.243570625836991177e-02, + 1.243846551661753966e-02, + 1.244120442683212258e-02, + 1.244392298565272920e-02, + 1.244662118975160131e-02, + 1.244929903583424577e-02, + 1.245195652063937550e-02, + 1.245459364093897542e-02, + 1.245721039353810990e-02, + 1.245980677527519509e-02, + 1.246238278302191915e-02, + 1.246493841368302019e-02, + 1.246747366419665229e-02, + 1.246998853153409408e-02, + 1.247248301269995863e-02, + 1.247495710473210673e-02, + 1.247741080470151157e-02, + 1.247984410971259700e-02, + 1.248225701690284031e-02, + 1.248464952344316946e-02, + 1.248702162653763000e-02, + 1.248937332342361754e-02, + 1.249170461137174594e-02, + 1.249401548768594092e-02, + 1.249630594970335684e-02, + 1.249857599479444782e-02, + 1.250082562036299375e-02, + 1.250305482384591466e-02, + 1.250526360271352229e-02, + 1.250745195446946630e-02, + 1.250961987665054516e-02, + 1.251176736682692130e-02, + 1.251389442260199790e-02, + 1.251600104161262710e-02, + 1.251808722152871617e-02, + 1.252015296005367685e-02, + 1.252219825492413910e-02, + 1.252422310390998057e-02, + 1.252622750481450706e-02, + 1.252821145547412807e-02, + 1.253017495375888940e-02, + 1.253211799757175671e-02, + 1.253404058484934580e-02, + 1.253594271356131724e-02, + 1.253782438171082911e-02, + 1.253968558733430279e-02, + 1.254152632850140045e-02, + 1.254334660331517942e-02, + 1.254514640991206270e-02, + 1.254692574646164467e-02, + 1.254868461116697038e-02, + 1.255042300226429618e-02, + 1.255214091802339671e-02, + 1.255383835674713823e-02, + 1.255551531677182725e-02, + 1.255717179646715850e-02, + 1.255880779423596688e-02, + 1.256042330851463856e-02, + 1.256201833777268601e-02, + 1.256359288051314693e-02, + 1.256514693527221831e-02, + 1.256668050061951133e-02, + 1.256819357515793871e-02, + 1.256968615752379614e-02, + 1.257115824638667563e-02, + 1.257260984044945851e-02, + 1.257404093844846291e-02, + 1.257545153915323212e-02, + 1.257684164136671501e-02, + 1.257821124392517059e-02, + 1.257956034569817846e-02, + 1.258088894558870817e-02, + 1.258219704253296309e-02, + 1.258348463550055217e-02, + 1.258475172349441534e-02, + 1.258599830555085300e-02, + 1.258722438073939069e-02, + 1.258842994816298556e-02, + 1.258961500695792400e-02, + 1.259077955629377653e-02, + 1.259192359537344985e-02, + 1.259304712343323022e-02, + 1.259415013974266896e-02, + 1.259523264360473335e-02, + 1.259629463435565574e-02, + 1.259733611136499773e-02, + 1.259835707403567789e-02, + 1.259935752180395101e-02, + 1.260033745413930047e-02, + 1.260129687054467942e-02, + 1.260223577055630956e-02, + 1.260315415374364638e-02, + 1.260405201970959781e-02, + 1.260492936809035243e-02, + 1.260578619855538471e-02, + 1.260662251080754519e-02, + 1.260743830458291824e-02, + 1.260823357965099208e-02, + 1.260900833581449741e-02, + 1.260976257290956359e-02, + 1.261049629080552778e-02, + 1.261120948940512576e-02, + 1.261190216864437920e-02, + 1.261257432849257828e-02, + 1.261322596895234592e-02, + 1.261385709005962211e-02, + 1.261446769188365007e-02, + 1.261505777452695022e-02, + 1.261562733812531673e-02, + 1.261617638284792502e-02, + 1.261670490889716528e-02, + 1.261721291650873614e-02, + 1.261770040595164288e-02, + 1.261816737752821140e-02, + 1.261861383157395454e-02, + 1.261903976845775606e-02, + 1.261944518858174394e-02, + 1.261983009238135806e-02, + 1.262019448032525477e-02, + 1.262053835291538847e-02, + 1.262086171068703411e-02, + 1.262116455420867790e-02, + 1.262144688408206421e-02, + 1.262170870094221804e-02, + 1.262195000545748326e-02, + 1.262217079832935428e-02, + 1.262237108029263567e-02, + 1.262255085211539014e-02, + 1.262271011459890728e-02, + 1.262284886857773132e-02, + 1.262296711491967156e-02, + 1.262306485452569307e-02, + 1.262314208833010404e-02, + 1.262319881730040831e-02, + 1.262323504243726378e-02, + 1.262325076477465412e-02, + 1.262324598537974997e-02, + 1.262322070535292808e-02, + 1.262317492582778859e-02, + 1.262310864797114643e-02, + 1.262302187298301910e-02, + 1.262291460209658163e-02, + 1.262278683657831919e-02, + 1.262263857772786407e-02, + 1.262246982687798350e-02, + 1.262228058539466811e-02, + 1.262207085467711640e-02, + 1.262184063615774156e-02, + 1.262158993130199809e-02, + 1.262131874160866800e-02, + 1.262102706860959885e-02, + 1.262071491386983907e-02, + 1.262038227898759982e-02, + 1.262002916559424107e-02, + 1.261965557535424734e-02, + 1.261926150996533699e-02, + 1.261884697115821241e-02, + 1.261841196069690522e-02, + 1.261795648037842242e-02, + 1.261748053203297359e-02, + 1.261698411752388942e-02, + 1.261646723874760949e-02, + 1.261592989763366673e-02, + 1.261537209614470821e-02, + 1.261479383627651593e-02, + 1.261419512005794441e-02, + 1.261357594955097791e-02, + 1.261293632685060902e-02, + 1.261227625408502424e-02, + 1.261159573341534730e-02, + 1.261089476703591145e-02, + 1.261017335717403223e-02, + 1.260943150609015496e-02, + 1.260866921607774020e-02, + 1.260788648946325509e-02, + 1.260708332860626703e-02, + 1.260625973589942460e-02, + 1.260541571376833092e-02, + 1.260455126467167376e-02, + 1.260366639110107982e-02, + 1.260276109558132115e-02, + 1.260183538067005324e-02, + 1.260088924895805436e-02, + 1.259992270306903132e-02, + 1.259893574565963507e-02, + 1.259792837941966018e-02, + 1.259690060707170656e-02, + 1.259585243137148827e-02, + 1.259478385510760107e-02, + 1.259369488110164380e-02, + 1.259258551220816466e-02, + 1.259145575131468200e-02, + 1.259030560134156117e-02, + 1.258913506524225907e-02, + 1.258794414600305014e-02, + 1.258673284664313906e-02, + 1.258550117021470932e-02, + 1.258424911980277755e-02, + 1.258297669852533399e-02, + 1.258168390953326617e-02, + 1.258037075601024790e-02, + 1.257903724117298040e-02, + 1.257768336827092513e-02, + 1.257630914058649116e-02, + 1.257491456143488250e-02, + 1.257349963416419525e-02, + 1.257206436215541415e-02, + 1.257060874882228590e-02, + 1.256913279761141290e-02, + 1.256763651200225665e-02, + 1.256611989550710136e-02, + 1.256458295167097068e-02, + 1.256302568407172658e-02, + 1.256144809632013873e-02, + 1.255985019205953235e-02, + 1.255823197496627394e-02, + 1.255659344874923700e-02, + 1.255493461715031026e-02, + 1.255325548394402128e-02, + 1.255155605293756423e-02, + 1.254983632797107909e-02, + 1.254809631291723890e-02, + 1.254633601168160181e-02, + 1.254455542820230238e-02, + 1.254275456645028049e-02, + 1.254093343042915823e-02, + 1.253909202417521906e-02, + 1.253723035175751885e-02, + 1.253534841727761348e-02, + 1.253344622486998391e-02, + 1.253152377870148451e-02, + 1.252958108297184958e-02, + 1.252761814191334123e-02, + 1.252563495979087428e-02, + 1.252363154090203358e-02, + 1.252160788957690576e-02, + 1.251956401017837069e-02, + 1.251749990710172324e-02, + 1.251541558477494570e-02, + 1.251331104765855337e-02, + 1.251118630024574373e-02, + 1.250904134706214664e-02, + 1.250687619266595448e-02, + 1.250469084164801577e-02, + 1.250248529863158715e-02, + 1.250025956827253981e-02, + 1.249801365525923628e-02, + 1.249574756431254610e-02, + 1.249346130018577812e-02, + 1.249115486766484533e-02, + 1.248882827156806534e-02, + 1.248648151674622633e-02, + 1.248411460808260265e-02, + 1.248172755049295653e-02, + 1.247932034892532994e-02, + 1.247689300836043319e-02, + 1.247444553381117475e-02, + 1.247197793032305164e-02, + 1.246949020297384407e-02, + 1.246698235687376637e-02, + 1.246445439716545311e-02, + 1.246190632902380302e-02, + 1.245933815765622871e-02, + 1.245674988830235488e-02, + 1.245414152623423518e-02, + 1.245151307675618040e-02, + 1.244886454520491466e-02, + 1.244619593694939672e-02, + 1.244350725739089107e-02, + 1.244079851196304778e-02, + 1.243806970613163705e-02, + 1.243532084539481462e-02, + 1.243255193528291190e-02, + 1.242976298135867186e-02, + 1.242695398921685179e-02, + 1.242412496448453037e-02, + 1.242127591282110241e-02, + 1.241840683991794758e-02, + 1.241551775149894038e-02, + 1.241260865331979268e-02, + 1.240967955116861580e-02, + 1.240673045086562211e-02, + 1.240376135826322217e-02, + 1.240077227924584607e-02, + 1.239776321973006835e-02, + 1.239473418566475194e-02, + 1.239168518303067519e-02, + 1.238861621784071755e-02, + 1.238552729614001910e-02, + 1.238241842400553475e-02, + 1.237928960754650781e-02, + 1.237614085290398604e-02, + 1.237297216625131598e-02, + 1.236978355379371279e-02, + 1.236657502176837647e-02, + 1.236334657644460114e-02, + 1.236009822412359981e-02, + 1.235682997113865013e-02, + 1.235354182385481336e-02, + 1.235023378866930734e-02, + 1.234690587201114388e-02, + 1.234355808034137865e-02, + 1.234019042015288212e-02, + 1.233680289797038990e-02, + 1.233339552035076815e-02, + 1.232996829388240644e-02, + 1.232652122518586822e-02, + 1.232305432091341212e-02, + 1.231956758774917574e-02, + 1.231606103240913581e-02, + 1.231253466164103361e-02, + 1.230898848222449285e-02, + 1.230542250097085497e-02, + 1.230183672472328661e-02, + 1.229823116035668601e-02, + 1.229460581477772110e-02, + 1.229096069492485732e-02, + 1.228729580776809389e-02, + 1.228361116030937499e-02, + 1.227990675958222019e-02, + 1.227618261265180609e-02, + 1.227243872661510325e-02, + 1.226867510860061260e-02, + 1.226489176576865681e-02, + 1.226108870531092063e-02, + 1.225726593445098864e-02, + 1.225342346044383524e-02, + 1.224956129057621496e-02, + 1.224567943216635195e-02, + 1.224177789256393999e-02, + 1.223785667915054491e-02, + 1.223391579933892810e-02, + 1.222995526057353219e-02, + 1.222597507033029197e-02, + 1.222197523611669515e-02, + 1.221795576547166258e-02, + 1.221391666596545120e-02, + 1.220985794520010152e-02, + 1.220577961080882186e-02, + 1.220168167045632135e-02, + 1.219756413183865906e-02, + 1.219342700268345042e-02, + 1.218927029074971628e-02, + 1.218509400382752732e-02, + 1.218089814973870831e-02, + 1.217668273633609743e-02, + 1.217244777150413085e-02, + 1.216819326315845586e-02, + 1.216391921924582856e-02, + 1.215962564774467590e-02, + 1.215531255666438964e-02, + 1.215097995404569066e-02, + 1.214662784796055779e-02, + 1.214225624651226083e-02, + 1.213786515783519745e-02, + 1.213345459009490708e-02, + 1.212902455148829467e-02, + 1.212457505024328898e-02, + 1.212010609461898133e-02, + 1.211561769290562564e-02, + 1.211110985342461754e-02, + 1.210658258452846497e-02, + 1.210203589460063546e-02, + 1.209746979205590135e-02, + 1.209288428533987145e-02, + 1.208827938292943681e-02, + 1.208365509333217576e-02, + 1.207901142508704256e-02, + 1.207434838676372905e-02, + 1.206966598696313994e-02, + 1.206496423431694005e-02, + 1.206024313748778332e-02, + 1.205550270516941684e-02, + 1.205074294608631143e-02, + 1.204596386899393912e-02, + 1.204116548267870207e-02, + 1.203634779595778512e-02, + 1.203151081767926157e-02, + 1.202665455672200477e-02, + 1.202177902199586673e-02, + 1.201688422244134684e-02, + 1.201197016702973235e-02, + 1.200703686476326318e-02, + 1.200208432467470346e-02, + 1.199711255582786192e-02, + 1.199212156731684943e-02, + 1.198711136826694640e-02, + 1.198208196783373362e-02, + 1.197703337520379316e-02, + 1.197196559959423472e-02, + 1.196687865025263670e-02, + 1.196177253645764639e-02, + 1.195664726751795477e-02, + 1.195150285277333212e-02, + 1.194633930159384565e-02, + 1.194115662338031923e-02, + 1.193595482756396910e-02, + 1.193073392360653046e-02, + 1.192549392100042925e-02, + 1.192023482926839184e-02, + 1.191495665796371561e-02, + 1.190965941667006603e-02, + 1.190434311500175764e-02, + 1.189900776260331867e-02, + 1.189365336914972524e-02, + 1.188827994434646027e-02, + 1.188288749792920998e-02, + 1.187747603966428193e-02, + 1.187204557934790766e-02, + 1.186659612680699208e-02, + 1.186112769189876480e-02, + 1.185564028451036034e-02, + 1.185013391455961608e-02, + 1.184460859199429859e-02, + 1.183906432679263966e-02, + 1.183350112896298066e-02, + 1.182791900854377604e-02, + 1.182231797560383962e-02, + 1.181669804024208098e-02, + 1.181105921258744119e-02, + 1.180540150279905595e-02, + 1.179972492106629370e-02, + 1.179402947760845380e-02, + 1.178831518267488103e-02, + 1.178258204654519803e-02, + 1.177683007952876233e-02, + 1.177105929196529260e-02, + 1.176526969422406720e-02, + 1.175946129670475682e-02, + 1.175363410983678789e-02, + 1.174778814407946917e-02, + 1.174192340992226240e-02, + 1.173603991788428266e-02, + 1.173013767851484659e-02, + 1.172421670239265530e-02, + 1.171827700012674327e-02, + 1.171231858235567171e-02, + 1.170634145974802989e-02, + 1.170034564300202924e-02, + 1.169433114284561433e-02, + 1.168829797003677513e-02, + 1.168224613536291909e-02, + 1.167617564964126484e-02, + 1.167008652371886654e-02, + 1.166397876847229294e-02, + 1.165785239480781298e-02, + 1.165170741366132121e-02, + 1.164554383599843840e-02, + 1.163936167281428430e-02, + 1.163316093513351752e-02, + 1.162694163401054200e-02, + 1.162070378052902815e-02, + 1.161444738580258082e-02, + 1.160817246097375043e-02, + 1.160187901721509637e-02, + 1.159556706572827806e-02, + 1.158923661774467935e-02, + 1.158288768452490208e-02, + 1.157652027735898981e-02, + 1.157013440756646944e-02, + 1.156373008649615869e-02, + 1.155730732552621119e-02, + 1.155086613606407832e-02, + 1.154440652954663929e-02, + 1.153792851743994964e-02, + 1.153143211123929847e-02, + 1.152491732246939751e-02, + 1.151838416268401860e-02, + 1.151183264346614804e-02, + 1.150526277642794151e-02, + 1.149867457321095479e-02, + 1.149206804548555221e-02, + 1.148544320495132470e-02, + 1.147880006333716792e-02, + 1.147213863240074960e-02, + 1.146545892392905261e-02, + 1.145876094973796548e-02, + 1.145204472167234665e-02, + 1.144531025160624993e-02, + 1.143855755144254291e-02, + 1.143178663311306825e-02, + 1.142499750857857953e-02, + 1.141819018982888172e-02, + 1.141136468888262999e-02, + 1.140452101778711286e-02, + 1.139765918861888189e-02, + 1.139077921348302831e-02, + 1.138388110451348662e-02, + 1.137696487387297901e-02, + 1.137003053375320628e-02, + 1.136307809637432387e-02, + 1.135610757398528882e-02, + 1.134911897886395002e-02, + 1.134211232331652601e-02, + 1.133508761967829542e-02, + 1.132804488031264115e-02, + 1.132098411761210503e-02, + 1.131390534399739391e-02, + 1.130680857191818794e-02, + 1.129969381385236699e-02, + 1.129256108230646330e-02, + 1.128541038981570842e-02, + 1.127824174894337741e-02, + 1.127105517228171004e-02, + 1.126385067245101040e-02, + 1.125662826210025065e-02, + 1.124938795390669974e-02, + 1.124212976057585751e-02, + 1.123485369484193870e-02, + 1.122755976946715993e-02, + 1.122024799724212485e-02, + 1.121291839098587269e-02, + 1.120557096354548622e-02, + 1.119820572779661565e-02, + 1.119082269664265113e-02, + 1.118342188301560923e-02, + 1.117600329987551711e-02, + 1.116856696021040554e-02, + 1.116111287703686929e-02, + 1.115364106339904529e-02, + 1.114615153236976804e-02, + 1.113864429704926849e-02, + 1.113111937056639709e-02, + 1.112357676607761935e-02, + 1.111601649676775133e-02, + 1.110843857584926930e-02, + 1.110084301656265315e-02, + 1.109322983217654601e-02, + 1.108559903598723903e-02, + 1.107795064131896975e-02, + 1.107028466152375559e-02, + 1.106260110998173556e-02, + 1.105490000010058739e-02, + 1.104718134531571146e-02, + 1.103944515909061758e-02, + 1.103169145491625196e-02, + 1.102392024631138577e-02, + 1.101613154682238443e-02, + 1.100832537002343486e-02, + 1.100050172951650036e-02, + 1.099266063893060245e-02, + 1.098480211192305427e-02, + 1.097692616217820459e-02, + 1.096903280340832780e-02, + 1.096112204935300975e-02, + 1.095319391377931953e-02, + 1.094524841048206097e-02, + 1.093728555328322451e-02, + 1.092930535603235838e-02, + 1.092130783260627895e-02, + 1.091329299690949224e-02, + 1.090526086287359545e-02, + 1.089721144445753541e-02, + 1.088914475564776822e-02, + 1.088106081045785330e-02, + 1.087295962292866673e-02, + 1.086484120712824519e-02, + 1.085670557715212592e-02, + 1.084855274712272742e-02, + 1.084038273118964613e-02, + 1.083219554352992872e-02, + 1.082399119834734705e-02, + 1.081576970987323943e-02, + 1.080753109236535017e-02, + 1.079927536010912188e-02, + 1.079100252741656621e-02, + 1.078271260862707220e-02, + 1.077440561810666039e-02, + 1.076608157024839911e-02, + 1.075774047947245307e-02, + 1.074938236022569826e-02, + 1.074100722698186593e-02, + 1.073261509424153388e-02, + 1.072420597653237807e-02, + 1.071577988840849774e-02, + 1.070733684445091156e-02, + 1.069887685926755420e-02, + 1.069039994749282525e-02, + 1.068190612378780088e-02, + 1.067339540284058252e-02, + 1.066486779936550236e-02, + 1.065632332810394559e-02, + 1.064776200382328182e-02, + 1.063918384131810543e-02, + 1.063058885540905593e-02, + 1.062197706094369226e-02, + 1.061334847279579024e-02, + 1.060470310586558024e-02, + 1.059604097508013570e-02, + 1.058736209539222310e-02, + 1.057866648178172955e-02, + 1.056995414925442772e-02, + 1.056122511284277900e-02, + 1.055247938760526909e-02, + 1.054371698862670466e-02, + 1.053493793101844579e-02, + 1.052614222991776934e-02, + 1.051732990048825922e-02, + 1.050850095791964686e-02, + 1.049965541742801933e-02, + 1.049079329425535445e-02, + 1.048191460366978793e-02, + 1.047301936096571920e-02, + 1.046410758146329618e-02, + 1.045517928050914216e-02, + 1.044623447347520391e-02, + 1.043727317576002844e-02, + 1.042829540278804312e-02, + 1.041930117000905952e-02, + 1.041029049289948598e-02, + 1.040126338696103873e-02, + 1.039221986772175324e-02, + 1.038315995073510120e-02, + 1.037408365158043640e-02, + 1.036499098586310917e-02, + 1.035588196921391653e-02, + 1.034675661728948377e-02, + 1.033761494577198695e-02, + 1.032845697036961947e-02, + 1.031928270681585491e-02, + 1.031009217086975051e-02, + 1.030088537831628723e-02, + 1.029166234496559085e-02, + 1.028242308665378718e-02, + 1.027316761924177563e-02, + 1.026389595861667593e-02, + 1.025460812069063470e-02, + 1.024530412140116364e-02, + 1.023598397671152474e-02, + 1.022664770260990792e-02, + 1.021729531511034357e-02, + 1.020792683025141707e-02, + 1.019854226409778152e-02, + 1.018914163273876641e-02, + 1.017972495228937173e-02, + 1.017029223888941264e-02, + 1.016084350870399139e-02, + 1.015137877792358055e-02, + 1.014189806276341414e-02, + 1.013240137946390222e-02, + 1.012288874429076793e-02, + 1.011336017353447851e-02, + 1.010381568351058010e-02, + 1.009425529055949997e-02, + 1.008467901104692296e-02, + 1.007508686136314967e-02, + 1.006547885792336179e-02, + 1.005585501716788586e-02, + 1.004621535556151322e-02, + 1.003655988959433615e-02, + 1.002688863578051100e-02, + 1.001720161065965467e-02, + 1.000749883079559213e-02, + 9.997780312777246325e-03, + 9.988046073217899182e-03, + 9.978296128755495195e-03, + 9.968530496052858264e-03, + 9.958749191797110559e-03, + 9.948952232700002118e-03, + 9.939139635497761666e-03, + 9.929311416951313446e-03, + 9.919467593845855691e-03, + 9.909608182990966435e-03, + 9.899733201220924442e-03, + 9.889842665394126334e-03, + 9.879936592393395375e-03, + 9.870014999125759428e-03, + 9.860077902522910651e-03, + 9.850125319540424876e-03, + 9.840157267158169269e-03, + 9.830173762380477534e-03, + 9.820174822235508069e-03, + 9.810160463776045406e-03, + 9.800130704078270291e-03, + 9.790085560243126650e-03, + 9.780025049395435141e-03, + 9.769949188683933056e-03, + 9.759857995281380136e-03, + 9.749751486384452756e-03, + 9.739629679214129032e-03, + 9.729492591014911665e-03, + 9.719340239055218253e-03, + 9.709172640627697012e-03, + 9.698989813048401049e-03, + 9.688791773657376427e-03, + 9.678578539818308291e-03, + 9.668350128918933722e-03, + 9.658106558370403369e-03, + 9.647847845607531239e-03, + 9.637574008089093078e-03, + 9.627285063297104720e-03, + 9.616981028737692921e-03, + 9.606661921939717991e-03, + 9.596327760456482489e-03, + 9.585978561864137021e-03, + 9.575614343762771374e-03, + 9.565235123775592263e-03, + 9.554840919549219963e-03, + 9.544431748754144545e-03, + 9.534007629083343302e-03, + 9.523568578254005060e-03, + 9.513114614005942909e-03, + 9.502645754102801573e-03, + 9.492162016331039120e-03, + 9.481663418500365856e-03, + 9.471149978443964626e-03, + 9.460621714017850709e-03, + 9.450078643101149367e-03, + 9.439520783596428918e-03, + 9.428948153428822962e-03, + 9.418360770547104174e-03, + 9.407758652922154283e-03, + 9.397141818548747361e-03, + 9.386510285443981638e-03, + 9.375864071648025433e-03, + 9.365203195224118884e-03, + 9.354527674257958128e-03, + 9.343837526858597350e-03, + 9.333132771157085297e-03, + 9.322413425308017851e-03, + 9.311679507488134638e-03, + 9.300931035897316498e-03, + 9.290168028757763222e-03, + 9.279390504314312740e-03, + 9.268598480834748174e-03, + 9.257791976609015469e-03, + 9.246971009949795858e-03, + 9.236135599192072179e-03, + 9.225285762693725619e-03, + 9.214421518834701313e-03, + 9.203542886017303248e-03, + 9.192649882666650493e-03, + 9.181742527229804635e-03, + 9.170820838176279785e-03, + 9.159884833997782375e-03, + 9.148934533208544218e-03, + 9.137969954344770870e-03, + 9.126991115964808166e-03, + 9.115998036649497829e-03, + 9.104990735001382979e-03, + 9.093969229645549462e-03, + 9.082933539228817479e-03, + 9.071883682420022604e-03, + 9.060819677910362732e-03, + 9.049741544412685107e-03, + 9.038649300661810715e-03, + 9.027542965414468365e-03, + 9.016422557449549693e-03, + 9.005288095567446499e-03, + 8.994139598590340443e-03, + 8.982977085362628053e-03, + 8.971800574750039489e-03, + 8.960610085640143344e-03, + 8.949405636942086434e-03, + 8.938187247587069117e-03, + 8.926954936527498746e-03, + 8.915708722737388653e-03, + 8.904448625212710300e-03, + 8.893174662970427038e-03, + 8.881886855049656374e-03, + 8.870585220510103508e-03, + 8.859269778433731882e-03, + 8.847940547923351107e-03, + 8.836597548103574534e-03, + 8.825240798120023017e-03, + 8.813870317139623281e-03, + 8.802486124350888952e-03, + 8.791088238963275237e-03, + 8.779676680207499848e-03, + 8.768251467335385144e-03, + 8.756812619620257115e-03, + 8.745360156356135270e-03, + 8.733894096858166312e-03, + 8.722414460462915575e-03, + 8.710921266527529155e-03, + 8.699414534430224832e-03, + 8.687894283570446463e-03, + 8.676360533368118050e-03, + 8.664813303264658553e-03, + 8.653252612721439724e-03, + 8.641678481221538172e-03, + 8.630090928268212280e-03, + 8.618489973385923958e-03, + 8.606875636119516379e-03, + 8.595247936034503683e-03, + 8.583606892717541084e-03, + 8.571952525775076992e-03, + 8.560284854834971507e-03, + 8.548603899545035786e-03, + 8.536909679574067669e-03, + 8.525202214611062382e-03, + 8.513481524365365191e-03, + 8.501747628567209170e-03, + 8.490000546966785383e-03, + 8.478240299334771982e-03, + 8.466466905462073991e-03, + 8.454680385160225770e-03, + 8.442880758260671095e-03, + 8.431068044615066745e-03, + 8.419242264095624234e-03, + 8.407403436594230312e-03, + 8.395551582023506876e-03, + 8.383686720315282684e-03, + 8.371808871422204909e-03, + 8.359918055316986271e-03, + 8.348014291991470021e-03, + 8.336097601458444459e-03, + 8.324168003749908215e-03, + 8.312225518918324452e-03, + 8.300270167035588703e-03, + 8.288301968193415720e-03, + 8.276320942503705494e-03, + 8.264327110097719267e-03, + 8.252320491126624233e-03, + 8.240301105761011283e-03, + 8.228268974191640939e-03, + 8.216224116628480581e-03, + 8.204166553301040984e-03, + 8.192096304458780509e-03, + 8.180013390370177023e-03, + 8.167917831323862413e-03, + 8.155809647626934694e-03, + 8.143688859606906111e-03, + 8.131555487610088104e-03, + 8.119409552002155098e-03, + 8.107251073168533079e-03, + 8.095080071513317127e-03, + 8.082896567460581133e-03, + 8.070700581452623992e-03, + 8.058492133951912495e-03, + 8.046271245439365685e-03, + 8.034037936415515391e-03, + 8.021792227399609371e-03, + 8.009534138929914893e-03, + 7.997263691564122923e-03, + 7.984980905878453009e-03, + 7.972685802468104307e-03, + 7.960378401947592122e-03, + 7.948058724949837173e-03, + 7.935726792126771012e-03, + 7.923382624149006431e-03, + 7.911026241706281548e-03, + 7.898657665506663567e-03, + 7.886276916276972054e-03, + 7.873884014763018330e-03, + 7.861478981728739837e-03, + 7.849061837957348534e-03, + 7.836632604249643003e-03, + 7.824191301425914916e-03, + 7.811737950324225584e-03, + 7.799272571801674041e-03, + 7.786795186733364016e-03, + 7.774305816012758684e-03, + 7.761804480552093530e-03, + 7.749291201281521130e-03, + 7.736765999149560445e-03, + 7.724228895122901666e-03, + 7.711679910186817338e-03, + 7.699119065344329702e-03, + 7.686546381616659110e-03, + 7.673961880043440875e-03, + 7.661365581682065204e-03, + 7.648757507608043224e-03, + 7.636137678914751981e-03, + 7.623506116713960057e-03, + 7.610862842134921182e-03, + 7.598207876324788827e-03, + 7.585541240449024739e-03, + 7.572862955690304321e-03, + 7.560173043249847173e-03, + 7.547471524345554864e-03, + 7.534758420213988513e-03, + 7.522033752109191784e-03, + 7.509297541302561649e-03, + 7.496549809083292472e-03, + 7.483790576757946671e-03, + 7.471019865651117378e-03, + 7.458237697104415365e-03, + 7.445444092476979046e-03, + 7.432639073145767654e-03, + 7.419822660504690401e-03, + 7.406994875965199759e-03, + 7.394155740955934975e-03, + 7.381305276923205184e-03, + 7.368443505330185377e-03, + 7.355570447657257260e-03, + 7.342686125402397845e-03, + 7.329790560080180241e-03, + 7.316883773223002707e-03, + 7.303965786379319237e-03, + 7.291036621115616276e-03, + 7.278096299014717024e-03, + 7.265144841676933300e-03, + 7.252182270719107968e-03, + 7.239208607774954944e-03, + 7.226223874495627322e-03, + 7.213228092548111016e-03, + 7.200221283617192804e-03, + 7.187203469403643206e-03, + 7.174174671625566969e-03, + 7.161134912017307584e-03, + 7.148084212329834132e-03, + 7.135022594331177567e-03, + 7.121950079805491364e-03, + 7.108866690553449635e-03, + 7.095772448392687753e-03, + 7.082667375156702534e-03, + 7.069551492696161954e-03, + 7.056424822877077618e-03, + 7.043287387582843062e-03, + 7.030139208712599640e-03, + 7.016980308181759544e-03, + 7.003810707922383111e-03, + 6.990630429882222115e-03, + 6.977439496025856884e-03, + 6.964237928333024893e-03, + 6.951025748800578399e-03, + 6.937802979440671654e-03, + 6.924569642282094907e-03, + 6.911325759369193675e-03, + 6.898071352762220020e-03, + 6.884806444537847764e-03, + 6.871531056788119513e-03, + 6.858245211621123195e-03, + 6.844948931160553182e-03, + 6.831642237546331313e-03, + 6.818325152933711782e-03, + 6.804997699493569099e-03, + 6.791659899412913308e-03, + 6.778311774893959300e-03, + 6.764953348154616013e-03, + 6.751584641428182848e-03, + 6.738205676963938615e-03, + 6.724816477026196102e-03, + 6.711417063894669841e-03, + 6.698007459864937542e-03, + 6.684587687247367169e-03, + 6.671157768368212414e-03, + 6.657717725568587479e-03, + 6.644267581204845244e-03, + 6.630807357648989264e-03, + 6.617337077287784725e-03, + 6.603856762523272785e-03, + 6.590366435772421032e-03, + 6.576866119467757524e-03, + 6.563355836056350770e-03, + 6.549835608000268566e-03, + 6.536305457777005605e-03, + 6.522765407878485140e-03, + 6.509215480811689561e-03, + 6.495655699098271812e-03, + 6.482086085275148672e-03, + 6.468506661893567468e-03, + 6.454917451519480778e-03, + 6.441318476733997461e-03, + 6.427709760132273298e-03, + 6.414091324324844128e-03, + 6.400463191935738469e-03, + 6.386825385604659802e-03, + 6.373177927984949136e-03, + 6.359520841745140186e-03, + 6.345854149567631448e-03, + 6.332177874149292479e-03, + 6.318492038201927070e-03, + 6.304796664450582760e-03, + 6.291091775635667196e-03, + 6.277377394511055551e-03, + 6.263653543845447078e-03, + 6.249920246421244475e-03, + 6.236177525034985840e-03, + 6.222425402497747116e-03, + 6.208663901634204479e-03, + 6.194893045283048939e-03, + 6.181112856297413943e-03, + 6.167323357543740003e-03, + 6.153524571903179821e-03, + 6.139716522269637183e-03, + 6.125899231551902406e-03, + 6.112072722671834345e-03, + 6.098237018565625875e-03, + 6.084392142182735302e-03, + 6.070538116486275809e-03, + 6.056674964453628678e-03, + 6.042802709074701628e-03, + 6.028921373354025233e-03, + 6.015030980308894160e-03, + 6.001131552970686428e-03, + 5.987223114383774872e-03, + 5.973305687605946941e-03, + 5.959379295708827108e-03, + 5.945443961776886339e-03, + 5.931499708908061393e-03, + 5.917546560213384453e-03, + 5.903584538817556460e-03, + 5.889613667858022497e-03, + 5.875633970485326547e-03, + 5.861645469863655325e-03, + 5.847648189169541572e-03, + 5.833642151593385408e-03, + 5.819627380337468077e-03, + 5.805603898617955547e-03, + 5.791571729663930537e-03, + 5.777530896716392451e-03, + 5.763481423030306951e-03, + 5.749423331872604952e-03, + 5.735356646523632855e-03, + 5.721281390275976403e-03, + 5.707197586434911707e-03, + 5.693105258318804235e-03, + 5.679004429258197213e-03, + 5.664895122596279135e-03, + 5.650777361688699880e-03, + 5.636651169904002660e-03, + 5.622516570622722830e-03, + 5.608373587237829375e-03, + 5.594222243155104815e-03, + 5.580062561792066209e-03, + 5.565894566579271396e-03, + 5.551718280958474992e-03, + 5.537533728384727398e-03, + 5.523340932324637478e-03, + 5.509139916256950223e-03, + 5.494930703672976958e-03, + 5.480713318075469513e-03, + 5.466487782980000189e-03, + 5.452254121913004993e-03, + 5.438012358413974595e-03, + 5.423762516033539191e-03, + 5.409504618334799037e-03, + 5.395238688892228102e-03, + 5.380964751292075660e-03, + 5.366682829132839866e-03, + 5.352392946024239068e-03, + 5.338095125587833702e-03, + 5.323789391456640319e-03, + 5.309475767275788176e-03, + 5.295154276701450648e-03, + 5.280824943401322275e-03, + 5.266487791055081066e-03, + 5.252142843353345067e-03, + 5.237790123998137259e-03, + 5.223429656703305370e-03, + 5.209061465193436796e-03, + 5.194685573205129296e-03, + 5.180302004485144371e-03, + 5.165910782792568733e-03, + 5.151511931896864474e-03, + 5.137105475579227358e-03, + 5.122691437631492206e-03, + 5.108269841856525814e-03, + 5.093840712068697929e-03, + 5.079404072092860364e-03, + 5.064959945764955888e-03, + 5.050508356931662605e-03, + 5.036049329450984630e-03, + 5.021582887191278904e-03, + 5.007109054031643781e-03, + 4.992627853862423824e-03, + 4.978139310584158567e-03, + 4.963643448108219156e-03, + 4.949140290356410232e-03, + 4.934629861261636934e-03, + 4.920112184766810282e-03, + 4.905587284825382345e-03, + 4.891055185401700124e-03, + 4.876515910469950837e-03, + 4.861969484015451690e-03, + 4.847415930032752084e-03, + 4.832855272527675390e-03, + 4.818287535516135867e-03, + 4.803712743023961715e-03, + 4.789130919087293201e-03, + 4.774542087752295556e-03, + 4.759946273075708889e-03, + 4.745343499123825561e-03, + 4.730733789972991522e-03, + 4.716117169710012241e-03, + 4.701493662431162172e-03, + 4.686863292242763289e-03, + 4.672226083260869363e-03, + 4.657582059611813270e-03, + 4.642931245431269373e-03, + 4.628273664864611739e-03, + 4.613609342067464050e-03, + 4.598938301204413305e-03, + 4.584260566450515557e-03, + 4.569576161989288843e-03, + 4.554885112014893725e-03, + 4.540187440730244182e-03, + 4.525483172348331203e-03, + 4.510772331091092609e-03, + 4.496054941189875365e-03, + 4.481331026886022778e-03, + 4.466600612429023551e-03, + 4.451863722078802481e-03, + 4.437120380103690837e-03, + 4.422370610781848829e-03, + 4.407614438400129370e-03, + 4.392851887254462309e-03, + 4.378082981650353173e-03, + 4.363307745901864008e-03, + 4.348526204332019314e-03, + 4.333738381273293493e-03, + 4.318944301066436446e-03, + 4.304143988061849210e-03, + 4.289337466617653208e-03, + 4.274524761101889010e-03, + 4.259705895890690541e-03, + 4.244880895368930394e-03, + 4.230049783930606676e-03, + 4.215212585977709363e-03, + 4.200369325921643644e-03, + 4.185520028181212437e-03, + 4.170664717184860253e-03, + 4.155803417368715558e-03, + 4.140936153177969016e-03, + 4.126062949065725100e-03, + 4.111183829493415820e-03, + 4.096298818931306401e-03, + 4.081407941857412812e-03, + 4.066511222758146214e-03, + 4.051608686127967755e-03, + 4.036700356469964494e-03, + 4.021786258294813773e-03, + 4.006866416121327920e-03, + 3.991940854476775172e-03, + 3.977009597895948129e-03, + 3.962072670921747489e-03, + 3.947130098104831633e-03, + 3.932181904004202963e-03, + 3.917228113186199158e-03, + 3.902268750224941168e-03, + 3.887303839702814599e-03, + 3.872333406209228519e-03, + 3.857357474341932980e-03, + 3.842376068705788232e-03, + 3.827389213913271696e-03, + 3.812396934584869578e-03, + 3.797399255348103252e-03, + 3.782396200838100426e-03, + 3.767387795697276377e-03, + 3.752374064575896874e-03, + 3.737355032131096759e-03, + 3.722330723027301048e-03, + 3.707301161936698078e-03, + 3.692266373538212118e-03, + 3.677226382518099679e-03, + 3.662181213569593030e-03, + 3.647130891393543777e-03, + 3.632075440697334328e-03, + 3.617014886195395705e-03, + 3.601949252609627349e-03, + 3.586878564668192788e-03, + 3.571802847106996318e-03, + 3.556722124667633430e-03, + 3.541636422099684982e-03, + 3.526545764158680197e-03, + 3.511450175607533017e-03, + 3.496349681215379836e-03, + 3.481244305757978056e-03, + 3.466134074018409512e-03, + 3.451019010785131517e-03, + 3.435899140854307022e-03, + 3.420774489027770225e-03, + 3.405645080114465956e-03, + 3.390510938929258786e-03, + 3.375372090293368883e-03, + 3.360228559034869871e-03, + 3.345080369987604198e-03, + 3.329927547991679265e-03, + 3.314770117893904144e-03, + 3.299608104546583077e-03, + 3.284441532809006907e-03, + 3.269270427545349720e-03, + 3.254094813627037182e-03, + 3.238914715930634510e-03, + 3.223730159339360454e-03, + 3.208541168741843932e-03, + 3.193347769032603683e-03, + 3.178149985112681437e-03, + 3.162947841887716813e-03, + 3.147741364270317376e-03, + 3.132530577177966135e-03, + 3.117315505534483909e-03, + 3.102096174268835840e-03, + 3.086872608315580687e-03, + 3.071644832615352209e-03, + 3.056412872113776266e-03, + 3.041176751762151263e-03, + 3.025936496517006667e-03, + 3.010692131340809465e-03, + 2.995443681200843540e-03, + 2.980191171069718811e-03, + 2.964934625925835700e-03, + 2.949674070752130069e-03, + 2.934409530537588056e-03, + 2.919141030275147070e-03, + 2.903868594963891943e-03, + 2.888592249607951218e-03, + 2.873312019215476694e-03, + 2.858027928800794919e-03, + 2.842740003382319448e-03, + 2.827448267984068297e-03, + 2.812152747634388914e-03, + 2.796853467366467328e-03, + 2.781550452218771799e-03, + 2.766243727234025430e-03, + 2.750933317459784699e-03, + 2.735619247948125037e-03, + 2.720301543756238009e-03, + 2.704980229945383539e-03, + 2.689655331581366961e-03, + 2.674326873734987880e-03, + 2.658994881480824992e-03, + 2.643659379898724918e-03, + 2.628320394071710555e-03, + 2.612977949088345509e-03, + 2.597632070040774288e-03, + 2.582282782025409253e-03, + 2.566930110143390321e-03, + 2.551574079499329458e-03, + 2.536214715202822056e-03, + 2.520852042366363965e-03, + 2.505486086107684262e-03, + 2.490116871547669655e-03, + 2.474744423811835094e-03, + 2.459368768029130282e-03, + 2.443989929332373353e-03, + 2.428607932858733130e-03, + 2.413222803748679614e-03, + 2.397834567146590271e-03, + 2.382443248200414795e-03, + 2.367048872062267519e-03, + 2.351651463887404793e-03, + 2.336251048834675145e-03, + 2.320847652066975082e-03, + 2.305441298750229070e-03, + 2.290032014053809770e-03, + 2.274619823151044582e-03, + 2.259204751217974878e-03, + 2.243786823434817512e-03, + 2.228366064983931718e-03, + 2.212942501052119360e-03, + 2.197516156828565811e-03, + 2.182087057506308398e-03, + 2.166655228281033803e-03, + 2.151220694351517818e-03, + 2.135783480920120173e-03, + 2.120343613191692962e-03, + 2.104901116374256319e-03, + 2.089456015678587721e-03, + 2.074008336318870771e-03, + 2.058558103511644831e-03, + 2.043105342476250405e-03, + 2.027650078435325274e-03, + 2.012192336613715087e-03, + 1.996732142239148605e-03, + 1.981269520541808354e-03, + 1.965804496755023650e-03, + 1.950337096114159070e-03, + 1.934867343857119048e-03, + 1.919395265224800411e-03, + 1.903920885459868323e-03, + 1.888444229808249443e-03, + 1.872965323517011881e-03, + 1.857484191836601684e-03, + 1.842000860019568469e-03, + 1.826515353320339692e-03, + 1.811027696995732607e-03, + 1.795537916304544004e-03, + 1.780046036508210272e-03, + 1.764552082869710620e-03, + 1.749056080654068411e-03, + 1.733558055128815853e-03, + 1.718058031562923237e-03, + 1.702556035227441658e-03, + 1.687052091395118986e-03, + 1.671546225341043451e-03, + 1.656038462341588927e-03, + 1.640528827674854473e-03, + 1.625017346621182362e-03, + 1.609504044461877422e-03, + 1.593988946480733807e-03, + 1.578472077961917339e-03, + 1.562953464192346192e-03, + 1.547433130459574535e-03, + 1.531911102053303475e-03, + 1.516387404264131402e-03, + 1.500862062384046005e-03, + 1.485335101707044216e-03, + 1.469806547527217075e-03, + 1.454276425141119581e-03, + 1.438744759845649555e-03, + 1.423211576939570518e-03, + 1.407676901722257476e-03, + 1.392140759494173976e-03, + 1.376603175557340264e-03, + 1.361064175214283557e-03, + 1.345523783768479966e-03, + 1.329982026524853447e-03, + 1.314438928788519640e-03, + 1.298894515866308962e-03, + 1.283348813064623135e-03, + 1.267801845691854693e-03, + 1.252253639056410267e-03, + 1.236704218467376496e-03, + 1.221153609234998383e-03, + 1.205601836669425520e-03, + 1.190048926082221516e-03, + 1.174494902784253923e-03, + 1.158939792088072105e-03, + 1.143383619305798470e-03, + 1.127826409750627050e-03, + 1.112268188735592500e-03, + 1.096708981574027412e-03, + 1.081148813580055414e-03, + 1.065587710067503278e-03, + 1.050025696350560551e-03, + 1.034462797743382085e-03, + 1.018899039560745281e-03, + 1.003334447116970658e-03, + 9.877690457263975984e-04, + 9.722028607038669295e-04, + 9.566359173636349847e-04, + 9.410682410200248843e-04, + 9.254998569870495585e-04, + 9.099307905790525106e-04, + 8.943610671096320717e-04, + 8.787907118921167151e-04, + 8.632197502400506704e-04, + 8.476482074659323455e-04, + 8.320761088827367639e-04, + 8.165034798017936721e-04, + 8.009303455350001797e-04, + 7.853567313935683972e-04, + 7.697826626878084876e-04, + 7.542081647276024621e-04, + 7.386332628220318658e-04, + 7.230579822800119270e-04, + 7.074823484092245939e-04, + 6.919063865165871272e-04, + 6.763301219087411833e-04, + 6.607535798909608057e-04, + 6.451767857678140060e-04, + 6.295997648427717995e-04, + 6.140225424188576432e-04, + 5.984451437975716898e-04, + 5.828675942793623077e-04, + 5.672899191641167906e-04, + 5.517121437498941419e-04, + 5.361342933344534750e-04, + 5.205563932131290848e-04, + 5.049784686812143920e-04, + 4.894005450318437370e-04, + 4.738226475575147627e-04, + 4.582448015488252641e-04, + 4.426670322949592369e-04, + 4.270893650843388622e-04, + 4.115118252026705569e-04, + 3.959344379353394350e-04, + 3.803572285652842165e-04, + 3.647802223745137012e-04, + 3.492034446428572258e-04, + 3.336269206484399237e-04, + 3.180506756681651952e-04, + 3.024747349766320230e-04, + 2.868991238466114249e-04, + 2.713238675495321765e-04, + 2.557489913542193962e-04, + 2.401745205284198004e-04, + 2.246004803366740657e-04, + 2.090268960427098797e-04, + 1.934537929073159559e-04, + 1.778811961898634408e-04, + 1.623091311470501092e-04, + 1.467376230333808829e-04, + 1.311666971018213333e-04, + 1.155963786018456842e-04, + 1.000266927818280329e-04, + 8.445766488691804584e-05, + 6.888932016056180971e-05, + 5.332168384324623047e-05, + 3.775478117297922649e-05, + 2.218863738576932871e-05, + 6.623277714543288645e-06, +-8.941272610200052040e-06, +-2.450498836077799058e-05, +-4.006784431167037048e-05, +-5.562981524060181093e-05, +-7.119087592806176018e-05, +-8.675100115682457850e-05, +-1.023101657132055695e-04, +-1.178683443855390244e-04, +-1.334255119663019576e-04, +-1.489816432497261239e-04, +-1.645367130337454761e-04, +-1.800906961193449662e-04, +-1.956435673100800541e-04, +-2.111953014133307769e-04, +-2.267458732389575013e-04, +-2.422952576005518212e-04, +-2.578434293149594551e-04, +-2.733903632018028175e-04, +-2.889360340845558155e-04, +-3.044804167898971766e-04, +-3.200234861480953132e-04, +-3.355652169923549824e-04, +-3.511055841598981274e-04, +-3.666445624914868823e-04, +-3.821821268309421324e-04, +-3.977182520263957679e-04, +-4.132529129287756194e-04, +-4.287860843939225253e-04, +-4.443177412802062258e-04, +-4.598478584504698792e-04, +-4.753764107713834980e-04, +-4.909033731129581720e-04, +-5.064287203497986473e-04, +-5.219524273595935746e-04, +-5.374744690252264510e-04, +-5.529948202323942781e-04, +-5.685134558717243585e-04, +-5.840303508372619423e-04, +-5.995454800277147823e-04, +-6.150588183459789046e-04, +-6.305703406986616676e-04, +-6.460800219971562066e-04, +-6.615878371569931891e-04, +-6.770937610982239721e-04, +-6.925977687447723574e-04, +-7.080998350255114215e-04, +-7.235999348737860324e-04, +-7.390980432269304888e-04, +-7.545941350273547817e-04, +-7.700881852220555109e-04, +-7.855801687621476181e-04, +-8.010700606041110030e-04, +-8.165578357082711215e-04, +-8.320434690409161081e-04, +-8.475269355719281189e-04, +-8.630082102768744327e-04, +-8.784872681355172146e-04, +-8.939640841330480977e-04, +-9.094386332596095072e-04, +-9.249108905098306225e-04, +-9.403808308838914123e-04, +-9.558484293868729819e-04, +-9.713136610291466921e-04, +-9.867765008257269998e-04, +-1.002236923797340806e-03, +-1.017694904969950733e-03, +-1.033150419374285122e-03, +-1.048603442046902286e-03, +-1.064053948029548878e-03, +-1.079501912369543268e-03, +-1.094947310119123284e-03, +-1.110390116336526945e-03, +-1.125830306085506523e-03, +-1.141267854434858866e-03, +-1.156702736459670712e-03, +-1.172134927239806444e-03, +-1.187564401862018166e-03, +-1.202991135417731759e-03, +-1.218415103004328193e-03, +-1.233836279725310063e-03, +-1.249254640689864216e-03, +-1.264670161013224312e-03, +-1.280082815816022471e-03, +-1.295492580225379763e-03, +-1.310899429374403789e-03, +-1.326303338401739170e-03, +-1.341704282452620958e-03, +-1.357102236678229537e-03, +-1.372497176236084837e-03, +-1.387889076289387574e-03, +-1.403277912008096947e-03, +-1.418663658568450336e-03, +-1.434046291152487338e-03, +-1.449425784949310040e-03, +-1.464802115153536304e-03, +-1.480175256967451248e-03, +-1.495545185598604228e-03, +-1.510911876261925198e-03, +-1.526275304178219185e-03, +-1.541635444575408138e-03, +-1.556992272688051057e-03, +-1.572345763756696074e-03, +-1.587695893029816190e-03, +-1.603042635761449614e-03, +-1.618385967213267773e-03, +-1.633725862653124432e-03, +-1.649062297356247882e-03, +-1.664395246604786875e-03, +-1.679724685687334230e-03, +-1.695050589900002572e-03, +-1.710372934545756254e-03, +-1.725691694934819442e-03, +-1.741006846384192787e-03, +-1.756318364217847707e-03, +-1.771626223767990352e-03, +-1.786930400372864144e-03, +-1.802230869378664046e-03, +-1.817527606138918126e-03, +-1.832820586013972136e-03, +-1.848109784372261710e-03, +-1.863395176588812478e-03, +-1.878676738047295935e-03, +-1.893954444137723337e-03, +-1.909228270258497449e-03, +-1.924498191814936511e-03, +-1.939764184220504157e-03, +-1.955026222896324994e-03, +-1.970284283270736826e-03, +-1.985538340780330837e-03, +-2.000788370869307792e-03, +-2.016034348989892422e-03, +-2.031276250601642998e-03, +-2.046514051172543779e-03, +-2.061747726178533163e-03, +-2.076977251103019270e-03, +-2.092202601437942889e-03, +-2.107423752683146041e-03, +-2.122640680346746678e-03, +-2.137853359944485131e-03, +-2.153061767000810037e-03, +-2.168265877048385689e-03, +-2.183465665627618013e-03, +-2.198661108287910948e-03, +-2.213852180586152896e-03, +-2.229038858088793623e-03, +-2.244221116369693198e-03, +-2.259398931011331966e-03, +-2.274572277605022182e-03, +-2.289741131750460020e-03, +-2.304905469056062108e-03, +-2.320065265138380930e-03, +-2.335220495623100117e-03, +-2.350371136144617686e-03, +-2.365517162345546001e-03, +-2.380658549877773429e-03, +-2.395795274401837666e-03, +-2.410927311587287864e-03, +-2.426054637112057526e-03, +-2.441177226663508379e-03, +-2.456295055937979775e-03, +-2.471408100640293433e-03, +-2.486516336484992460e-03, +-2.501619739194879417e-03, +-2.516718284503031630e-03, +-2.531811948150526105e-03, +-2.546900705888477390e-03, +-2.561984533476547015e-03, +-2.577063406684205072e-03, +-2.592137301290231479e-03, +-2.607206193082064159e-03, +-2.622270057857750171e-03, +-2.637328871423560896e-03, +-2.652382609596090624e-03, +-2.667431248200765985e-03, +-2.682474763073085418e-03, +-2.697513130058108721e-03, +-2.712546325010028146e-03, +-2.727574323793210530e-03, +-2.742597102281725888e-03, +-2.757614636358860383e-03, +-2.772626901918390056e-03, +-2.787633874863031710e-03, +-2.802635531106563178e-03, +-2.817631846571471473e-03, +-2.832622797191020145e-03, +-2.847608358907773030e-03, +-2.862588507674808987e-03, +-2.877563219455260904e-03, +-2.892532470221681647e-03, +-2.907496235957908459e-03, +-2.922454492656798714e-03, +-2.937407216322219638e-03, +-2.952354382967644492e-03, +-2.967295968617303555e-03, +-2.982231949305750879e-03, +-2.997162301077415866e-03, +-3.012086999987600728e-03, +-3.027006022101886348e-03, +-3.041919343496500908e-03, +-3.056826940257652454e-03, +-3.071728788482639555e-03, +-3.086624864279325677e-03, +-3.101515143765694229e-03, +-3.116399603071075015e-03, +-3.131278218334655836e-03, +-3.146150965707523832e-03, +-3.161017821350404697e-03, +-3.175878761435485011e-03, +-3.190733762145807253e-03, +-3.205582799674812702e-03, +-3.220425850227536663e-03, +-3.235262890019323899e-03, +-3.250093895277004347e-03, +-3.264918842238475043e-03, +-3.279737707152216575e-03, +-3.294550466278297479e-03, +-3.309357095887836050e-03, +-3.324157572263248834e-03, +-3.338951871697731083e-03, +-3.353739970496226463e-03, +-3.368521844975012024e-03, +-3.383297471461197727e-03, +-3.398066826293939888e-03, +-3.412829885822998757e-03, +-3.427586626410745584e-03, +-3.442337024429903587e-03, +-3.457081056265397159e-03, +-3.471818698313696144e-03, +-3.486549926982427262e-03, +-3.501274718691507314e-03, +-3.515993049871701196e-03, +-3.530704896966677109e-03, +-3.545410236430708486e-03, +-3.560109044730678900e-03, +-3.574801298344669996e-03, +-3.589486973763112918e-03, +-3.604166047488366765e-03, +-3.618838496034231141e-03, +-3.633504295927024279e-03, +-3.648163423704871809e-03, +-3.662815855918171229e-03, +-3.677461569128891942e-03, +-3.692100539911671170e-03, +-3.706732744853288766e-03, +-3.721358160552269527e-03, +-3.735976763619854642e-03, +-3.750588530679599235e-03, +-3.765193438366872328e-03, +-3.779791463330057708e-03, +-3.794382582229140558e-03, +-3.808966771737665961e-03, +-3.823544008540505877e-03, +-3.838114269335885734e-03, +-3.852677530833905142e-03, +-3.867233769757733551e-03, +-3.881782962843175703e-03, +-3.896325086838204992e-03, +-3.910860118503968301e-03, +-3.925388034614192730e-03, +-3.939908811955532969e-03, +-3.954422427326969788e-03, +-3.968928857540796225e-03, +-3.983428079422227271e-03, +-3.997920069808858640e-03, +-4.012404805551758775e-03, +-4.026882263514820932e-03, +-4.041352420575131804e-03, +-4.055815253622333146e-03, +-4.070270739559684291e-03, +-4.084718855303568624e-03, +-4.099159577783072911e-03, +-4.113592883941127876e-03, +-4.128018750733111752e-03, +-4.142437155128809653e-03, +-4.156848074110388279e-03, +-4.171251484673509612e-03, +-4.185647363827561633e-03, +-4.200035688595183010e-03, +-4.214416436012699378e-03, +-4.228789583129396491e-03, +-4.243155107008612231e-03, +-4.257512984727274304e-03, +-4.271863193375424056e-03, +-4.286205710057235628e-03, +-4.300540511890431350e-03, +-4.314867576006588788e-03, +-4.329186879550595175e-03, +-4.343498399681598905e-03, +-4.357802113572570649e-03, +-4.372097998409901765e-03, +-4.386386031394513656e-03, +-4.400666189740460449e-03, +-4.414938450676905712e-03, +-4.429202791445908081e-03, +-4.443459189304376292e-03, +-4.457707621522652777e-03, +-4.471948065385710630e-03, +-4.486180498192656602e-03, +-4.500404897256177726e-03, +-4.514621239904287320e-03, +-4.528829503478163515e-03, +-4.543029665334072202e-03, +-4.557221702841997464e-03, +-4.571405593386779556e-03, +-4.585581314367638724e-03, +-4.599748843197807441e-03, +-4.613908157305442008e-03, +-4.628059234133093461e-03, +-4.642202051137982524e-03, +-4.656336585791658739e-03, +-4.670462815580095871e-03, +-4.684580718004897545e-03, +-4.698690270581252874e-03, +-4.712791450839724956e-03, +-4.726884236325648060e-03, +-4.740968604598661852e-03, +-4.755044533233907487e-03, +-4.769111999820617280e-03, +-4.783170981964018562e-03, +-4.797221457283192166e-03, +-4.811263403412973684e-03, +-4.825296798002624669e-03, +-4.839321618716896020e-03, +-4.853337843235644607e-03, +-4.867345449253390917e-03, +-4.881344414480268817e-03, +-4.895334716641457432e-03, +-4.909316333477533288e-03, +-4.923289242743835413e-03, +-4.937253422211528714e-03, +-4.951208849667077493e-03, +-4.965155502911837784e-03, +-4.979093359763077375e-03, +-4.993022398053346966e-03, +-5.006942595630801095e-03, +-5.020853930358671648e-03, +-5.034756380116184662e-03, +-5.048649922798150932e-03, +-5.062534536314546203e-03, +-5.076410198591603182e-03, +-5.090276887570493146e-03, +-5.104134581209170823e-03, +-5.117983257480436705e-03, +-5.131822894373022116e-03, +-5.145653469891811257e-03, +-5.159474962057380640e-03, +-5.173287348906375517e-03, +-5.187090608490902734e-03, +-5.200884718879503904e-03, +-5.214669658156707854e-03, +-5.228445404422646381e-03, +-5.242211935793941562e-03, +-5.255969230403218298e-03, +-5.269717266399358453e-03, +-5.283456021946976965e-03, +-5.297185475227348186e-03, +-5.310905604437991291e-03, +-5.324616387792259140e-03, +-5.338317803520411207e-03, +-5.352009829868308206e-03, +-5.365692445099254360e-03, +-5.379365627491901856e-03, +-5.393029355342098333e-03, +-5.406683606961608379e-03, +-5.420328360679144836e-03, +-5.433963594839985416e-03, +-5.447589287805359483e-03, +-5.461205417954241755e-03, +-5.474811963681146601e-03, +-5.488408903398054456e-03, +-5.501996215533085620e-03, +-5.515573878531521146e-03, +-5.529141870855517477e-03, +-5.542700170983526180e-03, +-5.556248757411337384e-03, +-5.569787608651685998e-03, +-5.583316703233713076e-03, +-5.596836019704159310e-03, +-5.610345536626009343e-03, +-5.623845232580318432e-03, +-5.637335086164195833e-03, +-5.650815075992546462e-03, +-5.664285180696841844e-03, +-5.677745378926148806e-03, +-5.691195649346771253e-03, +-5.704635970641592710e-03, +-5.718066321511868291e-03, +-5.731486680675068439e-03, +-5.744897026866758495e-03, +-5.758297338839295058e-03, +-5.771687595362830388e-03, +-5.785067775225024439e-03, +-5.798437857230517509e-03, +-5.811797820201866985e-03, +-5.825147642979104125e-03, +-5.838487304419897120e-03, +-5.851816783399120883e-03, +-5.865136058809706197e-03, +-5.878445109562284096e-03, +-5.891743914584682794e-03, +-5.905032452823135054e-03, +-5.918310703240842706e-03, +-5.931578644819897848e-03, +-5.944836256559131796e-03, +-5.958083517475887096e-03, +-5.971320406605406042e-03, +-5.984546903000368366e-03, +-5.997762985732085599e-03, +-6.010968633889096809e-03, +-6.024163826578991798e-03, +-6.037348542926577501e-03, +-6.050522762074892792e-03, +-6.063686463185397578e-03, +-6.076839625437579877e-03, +-6.089982228029256796e-03, +-6.103114250176062787e-03, +-6.116235671112330886e-03, +-6.129346470090672044e-03, +-6.142446626381608231e-03, +-6.155536119274590719e-03, +-6.168614928076745010e-03, +-6.181683032114654135e-03, +-6.194740410732328152e-03, +-6.207787043292850408e-03, +-6.220822909177858850e-03, +-6.233847987787060306e-03, +-6.246862258539375400e-03, +-6.259865700871605418e-03, +-6.272858294240253769e-03, +-6.285840018119420031e-03, +-6.298810852002740233e-03, +-6.311770775401943576e-03, +-6.324719767848039839e-03, +-6.337657808890825861e-03, +-6.350584878098509099e-03, +-6.363500955058607952e-03, +-6.376406019377453029e-03, +-6.389300050680410056e-03, +-6.402183028611410642e-03, +-6.415054932833834378e-03, +-6.427915743030080363e-03, +-6.440765438901236740e-03, +-6.453604000167866526e-03, +-6.466431406569730055e-03, +-6.479247637865263691e-03, +-6.492052673832732559e-03, +-6.504846494268880057e-03, +-6.517629078990743244e-03, +-6.530400407833648370e-03, +-6.543160460652940394e-03, +-6.555909217322791228e-03, +-6.568646657737141695e-03, +-6.581372761809413559e-03, +-6.594087509472004727e-03, +-6.606790880677278037e-03, +-6.619482855396913341e-03, +-6.632163413622314298e-03, +-6.644832535364035911e-03, +-6.657490200652691793e-03, +-6.670136389538482320e-03, +-6.682771082090917941e-03, +-6.695394258399571183e-03, +-6.708005898573696744e-03, +-6.720605982742399766e-03, +-6.733194491054162248e-03, +-6.745771403677734701e-03, +-6.758336700801751903e-03, +-6.770890362634265393e-03, +-6.783432369403862364e-03, +-6.795962701358336001e-03, +-6.808481338766500870e-03, +-6.820988261916182370e-03, +-6.833483451115937579e-03, +-6.845966886693861768e-03, +-6.858438548998563311e-03, +-6.870898418398819346e-03, +-6.883346475283146429e-03, +-6.895782700060660957e-03, +-6.908207073160736560e-03, +-6.920619575032613789e-03, +-6.933020186146170334e-03, +-6.945408886991541117e-03, +-6.957785658079327328e-03, +-6.970150479940096823e-03, +-6.982503333125261030e-03, +-6.994844198206661215e-03, +-7.007173055776248424e-03, +-7.019489886446950849e-03, +-7.031794670851624317e-03, +-7.044087389644606602e-03, +-7.056368023499908111e-03, +-7.068636553112835584e-03, +-7.080892959198799470e-03, +-7.093137222494327876e-03, +-7.105369323756662372e-03, +-7.117589243763222835e-03, +-7.129796963313223337e-03, +-7.141992463225680689e-03, +-7.154175724341147423e-03, +-7.166346727520513105e-03, +-7.178505453645958427e-03, +-7.190651883620626482e-03, +-7.202785998368156986e-03, +-7.214907778833651655e-03, +-7.227017205983041030e-03, +-7.239114260803458309e-03, +-7.251198924302864647e-03, +-7.263271177510187068e-03, +-7.275331001476279501e-03, +-7.287378377272233157e-03, +-7.299413285990880539e-03, +-7.311435708746301040e-03, +-7.323445626673385535e-03, +-7.335443020928840777e-03, +-7.347427872690116477e-03, +-7.359400163156807825e-03, +-7.371359873549044803e-03, +-7.383306985108999652e-03, +-7.395241479099724617e-03, +-7.407163336806200579e-03, +-7.419072539534795827e-03, +-7.430969068613105591e-03, +-7.442852905390596498e-03, +-7.454724031238228396e-03, +-7.466582427548679873e-03, +-7.478428075735879012e-03, +-7.490260957235825648e-03, +-7.502081053506185447e-03, +-7.513888346025959439e-03, +-7.525682816296359184e-03, +-7.537464445840142378e-03, +-7.549233216202093366e-03, +-7.560989108948415124e-03, +-7.572732105667545448e-03, +-7.584462187969881128e-03, +-7.596179337487285292e-03, +-7.607883535874153391e-03, +-7.619574764806163331e-03, +-7.631253005981954683e-03, +-7.642918241121412180e-03, +-7.654570451966639759e-03, +-7.666209620282039491e-03, +-7.677835727854080868e-03, +-7.689448756491484675e-03, +-7.701048688024752890e-03, +-7.712635504307031702e-03, +-7.724209187213638798e-03, +-7.735769718641821377e-03, +-7.747317080511527225e-03, +-7.758851254764824457e-03, +-7.770372223366356010e-03, +-7.781879968302647492e-03, +-7.793374471583161024e-03, +-7.804855715239636046e-03, +-7.816323681326026868e-03, +-7.827778351919209565e-03, +-7.839219709117961968e-03, +-7.850647735044529243e-03, +-7.862062411842823256e-03, +-7.873463721679969940e-03, +-7.884851646745249382e-03, +-7.896226169250982266e-03, +-7.907587271432149970e-03, +-7.918934935545959147e-03, +-7.930269143873259000e-03, +-7.941589878716768386e-03, +-7.952897122402612790e-03, +-7.964190857279278279e-03, +-7.975471065718423361e-03, +-7.986737730114695094e-03, +-7.997990832885135820e-03, +-8.009230356470182360e-03, +-8.020456283333218458e-03, +-8.031668595960229570e-03, +-8.042867276860711859e-03, +-8.054052308566608809e-03, +-8.065223673633761456e-03, +-8.076381354640288154e-03, +-8.087525334188033072e-03, +-8.098655594901468108e-03, +-8.109772119428648729e-03, +-8.120874890440828858e-03, +-8.131963890631987296e-03, +-8.143039102720265807e-03, +-8.154100509446142453e-03, +-8.165148093574124688e-03, +-8.176181837891481272e-03, +-8.187201725209310860e-03, +-8.198207738362014649e-03, +-8.209199860207079535e-03, +-8.220178073625839660e-03, +-8.231142361522886600e-03, +-8.242092706826558562e-03, +-8.253029092488256904e-03, +-8.263951501483325635e-03, +-8.274859916810721819e-03, +-8.285754321492583632e-03, +-8.296634698575193131e-03, +-8.307501031127931951e-03, +-8.318353302244630917e-03, +-8.329191495042014004e-03, +-8.340015592661068761e-03, +-8.350825578266473856e-03, +-8.361621435046375297e-03, +-8.372403146213212161e-03, +-8.383170695002675754e-03, +-8.393924064675107807e-03, +-8.404663238514098814e-03, +-8.415388199827194063e-03, +-8.426098931946202422e-03, +-8.436795418226738369e-03, +-8.447477642048511690e-03, +-8.458145586814980535e-03, +-8.468799235953894389e-03, +-8.479438572917183045e-03, +-8.490063581180404967e-03, +-8.500674244243798527e-03, +-8.511270545631154441e-03, +-8.521852468891243440e-03, +-8.532419997596213390e-03, +-8.542973115342878190e-03, +-8.553511805752377767e-03, +-8.564036052469714902e-03, +-8.574545839164650352e-03, +-8.585041149530748747e-03, +-8.595521967286702189e-03, +-8.605988276174777671e-03, +-8.616440059962206591e-03, +-8.626877302440195960e-03, +-8.637299987424752398e-03, +-8.647708098756359471e-03, +-8.658101620299663709e-03, +-8.668480535944171964e-03, +-8.678844829603812525e-03, +-8.689194485217242164e-03, +-8.699529486747353477e-03, +-8.709849818182020809e-03, +-8.720155463533735968e-03, +-8.730446406839372300e-03, +-8.740722632160812661e-03, +-8.750984123584635427e-03, +-8.761230865221930619e-03, +-8.771462841208901851e-03, +-8.781680035706012841e-03, +-8.791882432899418565e-03, +-8.802070016999216651e-03, +-8.812242772241029448e-03, +-8.822400682884852172e-03, +-8.832543733216010468e-03, +-8.842671907544726734e-03, +-8.852785190205842564e-03, +-8.862883565559549065e-03, +-8.872967017990963587e-03, +-8.883035531910337887e-03, +-8.893089091752634859e-03, +-8.903127681978231095e-03, +-8.913151287072684434e-03, +-8.923159891546255176e-03, +-8.933153479934795999e-03, +-8.943132036799146534e-03, +-8.953095546725534093e-03, +-8.963043994325015085e-03, +-8.972977364234337172e-03, +-8.982895641115389365e-03, +-8.992798809655125694e-03, +-9.002686854566227873e-03, +-9.012559760586220589e-03, +-9.022417512478729182e-03, +-9.032260095031977368e-03, +-9.042087493060253084e-03, +-9.051899691402754897e-03, +-9.061696674924527017e-03, +-9.071478428516065520e-03, +-9.081244937093065073e-03, +-9.090996185597128437e-03, +-9.100732158995324117e-03, +-9.110452842280051047e-03, +-9.120158220469621463e-03, +-9.129848278607839360e-03, +-9.139523001764319685e-03, +-9.149182375033950571e-03, +-9.158826383537696514e-03, +-9.168455012422244491e-03, +-9.178068246859662216e-03, +-9.187666072048225607e-03, +-9.197248473211473360e-03, +-9.206815435599504521e-03, +-9.216366944487472748e-03, +-9.225902985176965415e-03, +-9.235423542994964513e-03, +-9.244928603294700134e-03, +-9.254418151455369446e-03, +-9.263892172881597192e-03, +-9.273350653004792249e-03, +-9.282793577281575961e-03, +-9.292220931195093597e-03, +-9.301632700254143515e-03, +-9.311028869993898810e-03, +-9.320409425975556897e-03, +-9.329774353786122673e-03, +-9.339123639039074651e-03, +-9.348457267373874030e-03, +-9.357775224456306440e-03, +-9.367077495978081217e-03, +-9.376364067657037837e-03, +-9.385634925237916135e-03, +-9.394890054490878314e-03, +-9.404129441212877652e-03, +-9.413353071227122462e-03, +-9.422560930382800279e-03, +-9.431753004555898379e-03, +-9.440929279648190703e-03, +-9.450089741588662065e-03, +-9.459234376331893124e-03, +-9.468363169859399589e-03, +-9.477476108178742309e-03, +-9.486573177324321773e-03, +-9.495654363356942698e-03, +-9.504719652363656165e-03, +-9.513769030458347695e-03, +-9.522802483781352134e-03, +-9.531819998499687849e-03, +-9.540821560806635182e-03, +-9.549807156922419937e-03, +-9.558776773093897658e-03, +-9.567730395594276072e-03, +-9.576668010723755203e-03, +-9.585589604809138797e-03, +-9.594495164204007789e-03, +-9.603384675288437547e-03, +-9.612258124469537368e-03, +-9.621115498181197212e-03, +-9.629956782883839633e-03, +-9.638781965065052956e-03, +-9.647591031238836670e-03, +-9.656383967946716856e-03, +-9.665160761756504126e-03, +-9.673921399263029144e-03, +-9.682665867088238038e-03, +-9.691394151880914840e-03, +-9.700106240316936496e-03, +-9.708802119098863467e-03, +-9.717481774956536478e-03, +-9.726145194646830180e-03, +-9.734792364953405094e-03, +-9.743423272687207204e-03, +-9.752037904686277139e-03, +-9.760636247815767524e-03, +-9.769218288967701849e-03, +-9.777784015061560807e-03, +-9.786333413043968310e-03, +-9.794866469888419136e-03, +-9.803383172596063025e-03, +-9.811883508194752315e-03, +-9.820367463740270128e-03, +-9.828835026314954731e-03, +-9.837286183028990175e-03, +-9.845720921019419231e-03, +-9.854139227450873714e-03, +-9.862541089515394072e-03, +-9.870926494431981821e-03, +-9.879295429447616100e-03, +-9.887647881836139976e-03, +-9.895983838899200663e-03, +-9.904303287965493183e-03, +-9.912606216391521910e-03, +-9.920892611561227606e-03, +-9.929162460885751496e-03, +-9.937415751804082320e-03, +-9.945652471782579288e-03, +-9.953872608315322487e-03, +-9.962076148923726046e-03, +-9.970263081156725479e-03, +-9.978433392591414333e-03, +-9.986587070831847227e-03, +-9.994724103510240279e-03, +-1.000284447828604650e-02, +-1.001094818284672255e-02, +-1.001903520490743035e-02, +-1.002710553221061208e-02, +-1.003515915252720971e-02, +-1.004319605365517308e-02, +-1.005121622342073848e-02, +-1.005921964967760110e-02, +-1.006720632030745112e-02, +-1.007517622321989388e-02, +-1.008312934635212030e-02, +-1.009106567766933013e-02, +-1.009898520516471811e-02, +-1.010688791685929698e-02, +-1.011477380080180559e-02, +-1.012264284506920846e-02, +-1.013049503776637661e-02, +-1.013833036702595572e-02, +-1.014614882100887613e-02, +-1.015395038790364857e-02, +-1.016173505592745177e-02, +-1.016950281332493385e-02, +-1.017725364836903276e-02, +-1.018498754936087575e-02, +-1.019270450462940458e-02, +-1.020040450253201399e-02, +-1.020808753145377792e-02, +-1.021575357980857197e-02, +-1.022340263603789719e-02, +-1.023103468861152367e-02, +-1.023864972602762588e-02, +-1.024624773681243745e-02, +-1.025382870952060675e-02, +-1.026139263273473032e-02, +-1.026893949506593913e-02, +-1.027646928515365057e-02, +-1.028398199166530823e-02, +-1.029147760329712433e-02, +-1.029895610877305280e-02, +-1.030641749684616144e-02, +-1.031386175629720597e-02, +-1.032128887593567780e-02, +-1.032869884459951086e-02, +-1.033609165115475029e-02, +-1.034346728449627752e-02, +-1.035082573354698630e-02, +-1.035816698725884090e-02, +-1.036549103461165307e-02, +-1.037279786461423395e-02, +-1.038008746630355791e-02, +-1.038735982874535932e-02, +-1.039461494103392780e-02, +-1.040185279229192787e-02, +-1.040907337167080483e-02, +-1.041627666835053326e-02, +-1.042346267153980606e-02, +-1.043063137047571011e-02, +-1.043778275442420155e-02, +-1.044491681267989761e-02, +-1.045203353456593091e-02, +-1.045913290943423918e-02, +-1.046621492666560162e-02, +-1.047327957566920528e-02, +-1.048032684588337711e-02, +-1.048735672677468880e-02, +-1.049436920783918328e-02, +-1.050136427860105977e-02, +-1.050834192861372848e-02, +-1.051530214745912024e-02, +-1.052224492474822595e-02, +-1.052917025012091098e-02, +-1.053607811324568273e-02, +-1.054296850382010868e-02, +-1.054984141157064292e-02, +-1.055669682625271465e-02, +-1.056353473765038638e-02, +-1.057035513557702013e-02, +-1.057715800987485237e-02, +-1.058394335041488478e-02, +-1.059071114709732656e-02, +-1.059746138985132036e-02, +-1.060419406863514699e-02, +-1.061090917343579521e-02, +-1.061760669426965731e-02, +-1.062428662118208335e-02, +-1.063094894424733081e-02, +-1.063759365356900868e-02, +-1.064422073927954321e-02, +-1.065083019154090122e-02, +-1.065742200054372278e-02, +-1.066399615650814869e-02, +-1.067055264968324278e-02, +-1.067709147034739438e-02, +-1.068361260880823158e-02, +-1.069011605540225174e-02, +-1.069660180049576692e-02, +-1.070306983448380232e-02, +-1.070952014779074681e-02, +-1.071595273087041708e-02, +-1.072236757420579750e-02, +-1.072876466830927078e-02, +-1.073514400372226757e-02, +-1.074150557101580597e-02, +-1.074784936079020009e-02, +-1.075417536367488658e-02, +-1.076048357032897973e-02, +-1.076677397144061403e-02, +-1.077304655772780284e-02, +-1.077930131993743573e-02, +-1.078553824884620656e-02, +-1.079175733525992477e-02, +-1.079795857001410869e-02, +-1.080414194397368716e-02, +-1.081030744803276010e-02, +-1.081645507311546593e-02, +-1.082258481017485743e-02, +-1.082869665019393045e-02, +-1.083479058418486754e-02, +-1.084086660318964862e-02, +-1.084692469827970053e-02, +-1.085296486055595602e-02, +-1.085898708114895438e-02, +-1.086499135121891252e-02, +-1.087097766195559839e-02, +-1.087694600457831881e-02, +-1.088289637033589864e-02, +-1.088882875050722725e-02, +-1.089474313640037204e-02, +-1.090063951935332440e-02, +-1.090651789073376898e-02, +-1.091237824193883911e-02, +-1.091822056439566840e-02, +-1.092404484956073854e-02, +-1.092985108892076222e-02, +-1.093563927399168571e-02, +-1.094140939631955273e-02, +-1.094716144747989901e-02, +-1.095289541907823981e-02, +-1.095861130274988597e-02, +-1.096430909015968548e-02, +-1.096998877300258031e-02, +-1.097565034300319355e-02, +-1.098129379191611216e-02, +-1.098691911152551229e-02, +-1.099252629364565539e-02, +-1.099811533012064191e-02, +-1.100368621282430889e-02, +-1.100923893366054056e-02, +-1.101477348456306009e-02, +-1.102028985749557537e-02, +-1.102578804445153264e-02, +-1.103126803745449296e-02, +-1.103672982855802981e-02, +-1.104217340984537526e-02, +-1.104759877343002017e-02, +-1.105300591145523016e-02, +-1.105839481609458344e-02, +-1.106376547955130289e-02, +-1.106911789405874702e-02, +-1.107445205188035790e-02, +-1.107976794530961956e-02, +-1.108506556667005274e-02, +-1.109034490831515424e-02, +-1.109560596262856684e-02, +-1.110084872202407417e-02, +-1.110607317894537344e-02, +-1.111127932586642580e-02, +-1.111646715529121532e-02, +-1.112163665975404031e-02, +-1.112678783181894962e-02, +-1.113192066408051455e-02, +-1.113703514916331884e-02, +-1.114213127972203676e-02, +-1.114720904844167249e-02, +-1.115226844803714722e-02, +-1.115730947125408677e-02, +-1.116233211086773564e-02, +-1.116733635968398738e-02, +-1.117232221053866999e-02, +-1.117728965629804019e-02, +-1.118223868985862221e-02, +-1.118716930414691627e-02, +-1.119208149212009770e-02, +-1.119697524676530748e-02, +-1.120185056110014135e-02, +-1.120670742817232203e-02, +-1.121154584106004264e-02, +-1.121636579287183140e-02, +-1.122116727674635217e-02, +-1.122595028585272880e-02, +-1.123071481339044803e-02, +-1.123546085258937503e-02, +-1.124018839670963034e-02, +-1.124489743904166436e-02, +-1.124958797290659743e-02, +-1.125425999165559354e-02, +-1.125891348867051611e-02, +-1.126354845736334334e-02, +-1.126816489117670600e-02, +-1.127276278358363415e-02, +-1.127734212808734551e-02, +-1.128190291822194456e-02, +-1.128644514755162108e-02, +-1.129096880967121394e-02, +-1.129547389820587978e-02, +-1.129996040681138791e-02, +-1.130442832917408040e-02, +-1.130887765901048177e-02, +-1.131330839006794084e-02, +-1.131772051612416584e-02, +-1.132211403098749153e-02, +-1.132648892849662421e-02, +-1.133084520252094184e-02, +-1.133518284696038644e-02, +-1.133950185574532366e-02, +-1.134380222283688268e-02, +-1.134808394222643936e-02, +-1.135234700793644712e-02, +-1.135659141401945162e-02, +-1.136081715455891476e-02, +-1.136502422366881225e-02, +-1.136921261549364917e-02, +-1.137338232420872890e-02, +-1.137753334401976277e-02, +-1.138166566916336449e-02, +-1.138577929390659216e-02, +-1.138987421254715471e-02, +-1.139395041941355068e-02, +-1.139800790886485483e-02, +-1.140204667529092636e-02, +-1.140606671311212607e-02, +-1.141006801677964602e-02, +-1.141405058077537768e-02, +-1.141801439961179741e-02, +-1.142195946783228222e-02, +-1.142588578001066911e-02, +-1.142979333075185185e-02, +-1.143368211469115818e-02, +-1.143755212649484251e-02, +-1.144140336085989682e-02, +-1.144523581251392398e-02, +-1.144904947621547091e-02, +-1.145284434675364685e-02, +-1.145662041894862648e-02, +-1.146037768765111216e-02, +-1.146411614774275889e-02, +-1.146783579413584303e-02, +-1.147153662177362830e-02, +-1.147521862563012640e-02, +-1.147888180071009005e-02, +-1.148252614204918649e-02, +-1.148615164471385348e-02, +-1.148975830380149880e-02, +-1.149334611444012208e-02, +-1.149691507178882306e-02, +-1.150046517103742519e-02, +-1.150399640740661956e-02, +-1.150750877614796670e-02, +-1.151100227254401275e-02, +-1.151447689190797721e-02, +-1.151793262958416934e-02, +-1.152136948094757522e-02, +-1.152478744140438167e-02, +-1.152818650639132747e-02, +-1.153156667137632090e-02, +-1.153492793185807025e-02, +-1.153827028336622956e-02, +-1.154159372146142809e-02, +-1.154489824173507775e-02, +-1.154818383980968019e-02, +-1.155145051133862726e-02, +-1.155469825200629991e-02, +-1.155792705752791728e-02, +-1.156113692364976395e-02, +-1.156432784614909448e-02, +-1.156749982083401726e-02, +-1.157065284354372690e-02, +-1.157378691014836723e-02, +-1.157690201654911627e-02, +-1.157999815867801451e-02, +-1.158307533249814877e-02, +-1.158613353400373552e-02, +-1.158917275921978428e-02, +-1.159219300420250356e-02, +-1.159519426503891580e-02, +-1.159817653784731527e-02, +-1.160113981877678238e-02, +-1.160408410400759656e-02, +-1.160700938975094826e-02, +-1.160991567224909510e-02, +-1.161280294777546421e-02, +-1.161567121263425324e-02, +-1.161852046316108091e-02, +-1.162135069572232081e-02, +-1.162416190671544322e-02, +-1.162695409256912435e-02, +-1.162972724974300869e-02, +-1.163248137472788421e-02, +-1.163521646404545688e-02, +-1.163793251424868197e-02, +-1.164062952192156629e-02, +-1.164330748367909361e-02, +-1.164596639616748662e-02, +-1.164860625606392239e-02, +-1.165122706007684118e-02, +-1.165382880494561860e-02, +-1.165641148744088126e-02, +-1.165897510436424318e-02, +-1.166151965254850001e-02, +-1.166404512885759609e-02, +-1.166655153018646661e-02, +-1.166903885346135678e-02, +-1.167150709563949222e-02, +-1.167395625370930626e-02, +-1.167638632469026987e-02, +-1.167879730563310681e-02, +-1.168118919361968780e-02, +-1.168356198576285532e-02, +-1.168591567920679482e-02, +-1.168825027112675718e-02, +-1.169056575872915414e-02, +-1.169286213925154957e-02, +-1.169513940996259535e-02, +-1.169739756816230193e-02, +-1.169963661118165153e-02, +-1.170185653638283578e-02, +-1.170405734115933724e-02, +-1.170623902293561371e-02, +-1.170840157916746074e-02, +-1.171054500734170466e-02, +-1.171266930497658412e-02, +-1.171477446962121242e-02, +-1.171686049885615338e-02, +-1.171892739029298421e-02, +-1.172097514157456957e-02, +-1.172300375037493674e-02, +-1.172501321439927725e-02, +-1.172700353138399036e-02, +-1.172897469909674542e-02, +-1.173092671533631365e-02, +-1.173285957793268434e-02, +-1.173477328474708398e-02, +-1.173666783367197271e-02, +-1.173854322263089348e-02, +-1.174039944957873567e-02, +-1.174223651250149748e-02, +-1.174405440941652355e-02, +-1.174585313837218405e-02, +-1.174763269744820426e-02, +-1.174939308475551891e-02, +-1.175113429843616976e-02, +-1.175285633666355717e-02, +-1.175455919764215734e-02, +-1.175624287960785885e-02, +-1.175790738082758968e-02, +-1.175955269959964855e-02, +-1.176117883425341001e-02, +-1.176278578314955692e-02, +-1.176437354468006478e-02, +-1.176594211726799018e-02, +-1.176749149936774305e-02, +-1.176902168946495145e-02, +-1.177053268607638689e-02, +-1.177202448775010145e-02, +-1.177349709306542598e-02, +-1.177495050063289209e-02, +-1.177638470909419047e-02, +-1.177779971712239818e-02, +-1.177919552342170627e-02, +-1.178057212672757245e-02, +-1.178192952580674191e-02, +-1.178326771945704954e-02, +-1.178458670650780506e-02, +-1.178588648581934371e-02, +-1.178716705628331599e-02, +-1.178842841682261992e-02, +-1.178967056639135431e-02, +-1.179089350397492623e-02, +-1.179209722858990880e-02, +-1.179328173928414526e-02, +-1.179444703513667439e-02, +-1.179559311525789529e-02, +-1.179671997878923781e-02, +-1.179782762490358579e-02, +-1.179891605280492667e-02, +-1.179998526172850587e-02, +-1.180103525094083373e-02, +-1.180206601973960573e-02, +-1.180307756745388806e-02, +-1.180406989344376205e-02, +-1.180504299710072313e-02, +-1.180599687784742412e-02, +-1.180693153513777058e-02, +-1.180784696845691047e-02, +-1.180874317732114737e-02, +-1.180962016127814172e-02, +-1.181047791990669921e-02, +-1.181131645281680367e-02, +-1.181213575964984441e-02, +-1.181293584007823104e-02, +-1.181371669380576299e-02, +-1.181447832056735543e-02, +-1.181522072012916418e-02, +-1.181594389228865678e-02, +-1.181664783687438360e-02, +-1.181733255374622059e-02, +-1.181799804279520631e-02, +-1.181864430394361128e-02, +-1.181927133714493622e-02, +-1.181987914238385659e-02, +-1.182046771967631971e-02, +-1.182103706906939729e-02, +-1.182158719064148322e-02, +-1.182211808450202295e-02, +-1.182262975079187428e-02, +-1.182312218968285637e-02, +-1.182359540137816085e-02, +-1.182404938611218356e-02, +-1.182448414415041178e-02, +-1.182489967578956476e-02, +-1.182529598135758850e-02, +-1.182567306121359157e-02, +-1.182603091574794575e-02, +-1.182636954538204138e-02, +-1.182668895056859792e-02, +-1.182698913179148006e-02, +-1.182727008956572894e-02, +-1.182753182443753263e-02, +-1.182777433698426785e-02, +-1.182799762781454496e-02, +-1.182820169756803631e-02, +-1.182838654691567570e-02, +-1.182855217655950399e-02, +-1.182869858723271245e-02, +-1.182882577969971739e-02, +-1.182893375475602485e-02, +-1.182902251322833290e-02, +-1.182909205597447617e-02, +-1.182914238388341199e-02, +-1.182917349787525330e-02, +-1.182918539890128254e-02, +-1.182917808794390485e-02, +-1.182915156601661334e-02, +-1.182910583416413135e-02, +-1.182904089346218518e-02, +-1.182895674501771577e-02, +-1.182885338996875896e-02, +-1.182873082948445592e-02, +-1.182858906476508438e-02, +-1.182842809704196668e-02, +-1.182824792757765538e-02, +-1.182804855766565744e-02, +-1.182782998863072046e-02, +-1.182759222182856729e-02, +-1.182733525864611973e-02, +-1.182705910050126791e-02, +-1.182676374884305409e-02, +-1.182644920515162068e-02, +-1.182611547093816856e-02, +-1.182576254774492588e-02, +-1.182539043714523480e-02, +-1.182499914074347860e-02, +-1.182458866017516499e-02, +-1.182415899710673873e-02, +-1.182371015323571868e-02, +-1.182324213029081229e-02, +-1.182275493003156867e-02, +-1.182224855424873766e-02, +-1.182172300476396799e-02, +-1.182117828343003801e-02, +-1.182061439213069783e-02, +-1.182003133278073520e-02, +-1.181942910732594436e-02, +-1.181880771774310862e-02, +-1.181816716604006980e-02, +-1.181750745425560502e-02, +-1.181682858445952736e-02, +-1.181613055875263552e-02, +-1.181541337926668954e-02, +-1.181467704816445766e-02, +-1.181392156763965209e-02, +-1.181314693991701061e-02, +-1.181235316725214209e-02, +-1.181154025193169310e-02, +-1.181070819627322820e-02, +-1.180985700262529928e-02, +-1.180898667336730858e-02, +-1.180809721090971334e-02, +-1.180718861769384023e-02, +-1.180626089619190265e-02, +-1.180531404890711698e-02, +-1.180434807837355687e-02, +-1.180336298715625905e-02, +-1.180235877785107239e-02, +-1.180133545308484702e-02, +-1.180029301551524176e-02, +-1.179923146783086983e-02, +-1.179815081275114620e-02, +-1.179705105302641596e-02, +-1.179593219143789708e-02, +-1.179479423079763008e-02, +-1.179363717394854225e-02, +-1.179246102376440945e-02, +-1.179126578314979024e-02, +-1.179005145504018887e-02, +-1.178881804240182983e-02, +-1.178756554823180876e-02, +-1.178629397555806292e-02, +-1.178500332743930359e-02, +-1.178369360696508543e-02, +-1.178236481725568503e-02, +-1.178101696146226750e-02, +-1.177965004276666783e-02, +-1.177826406438162860e-02, +-1.177685902955056228e-02, +-1.177543494154768312e-02, +-1.177399180367798108e-02, +-1.177252961927710215e-02, +-1.177104839171159989e-02, +-1.176954812437860584e-02, +-1.176802882070604461e-02, +-1.176649048415259399e-02, +-1.176493311820762076e-02, +-1.176335672639110784e-02, +-1.176176131225390581e-02, +-1.176014687937741894e-02, +-1.175851343137383417e-02, +-1.175686097188595632e-02, +-1.175518950458725488e-02, +-1.175349903318185195e-02, +-1.175178956140462277e-02, +-1.175006109302097548e-02, +-1.174831363182699852e-02, +-1.174654718164942074e-02, +-1.174476174634560971e-02, +-1.174295732980350573e-02, +-1.174113393594168435e-02, +-1.173929156870931294e-02, +-1.173743023208615767e-02, +-1.173554993008253840e-02, +-1.173365066673943621e-02, +-1.173173244612827834e-02, +-1.172979527235116712e-02, +-1.172783914954060418e-02, +-1.172586408185984953e-02, +-1.172387007350254515e-02, +-1.172185712869281901e-02, +-1.171982525168550893e-02, +-1.171777444676574444e-02, +-1.171570471824936142e-02, +-1.171361607048245455e-02, +-1.171150850784184738e-02, +-1.170938203473462745e-02, +-1.170723665559850885e-02, +-1.170507237490158760e-02, +-1.170288919714234342e-02, +-1.170068712684988778e-02, +-1.169846616858357183e-02, +-1.169622632693320848e-02, +-1.169396760651912094e-02, +-1.169169001199196235e-02, +-1.168939354803274870e-02, +-1.168707821935293517e-02, +-1.168474403069435369e-02, +-1.168239098682918170e-02, +-1.168001909255992829e-02, +-1.167762835271952959e-02, +-1.167521877217117705e-02, +-1.167279035580847703e-02, +-1.167034310855523047e-02, +-1.166787703536565496e-02, +-1.166539214122422168e-02, +-1.166288843114575771e-02, +-1.166036591017527782e-02, +-1.165782458338811278e-02, +-1.165526445588989206e-02, +-1.165268553281639981e-02, +-1.165008781933375703e-02, +-1.164747132063822556e-02, +-1.164483604195642140e-02, +-1.164218198854504761e-02, +-1.163950916569104869e-02, +-1.163681757871158282e-02, +-1.163410723295395417e-02, +-1.163137813379571013e-02, +-1.162863028664441571e-02, +-1.162586369693791727e-02, +-1.162307837014421412e-02, +-1.162027431176129548e-02, +-1.161745152731740414e-02, +-1.161461002237079536e-02, +-1.161174980250993284e-02, +-1.160887087335327021e-02, +-1.160597324054931691e-02, +-1.160305690977684982e-02, +-1.160012188674435993e-02, +-1.159716817719074616e-02, +-1.159419578688463022e-02, +-1.159120472162488390e-02, +-1.158819498724029083e-02, +-1.158516658958958639e-02, +-1.158211953456165892e-02, +-1.157905382807521838e-02, +-1.157596947607896290e-02, +-1.157286648455160480e-02, +-1.156974485950179425e-02, +-1.156660460696809847e-02, +-1.156344573301890978e-02, +-1.156026824375275958e-02, +-1.155707214529782222e-02, +-1.155385744381244410e-02, +-1.155062414548451051e-02, +-1.154737225653200590e-02, +-1.154410178320276065e-02, +-1.154081273177426023e-02, +-1.153750510855411707e-02, +-1.153417891987945122e-02, +-1.153083417211749929e-02, +-1.152747087166491012e-02, +-1.152408902494847683e-02, +-1.152068863842461641e-02, +-1.151726971857944259e-02, +-1.151383227192890636e-02, +-1.151037630501860858e-02, +-1.150690182442400469e-02, +-1.150340883675015843e-02, +-1.149989734863180423e-02, +-1.149636736673345823e-02, +-1.149281889774919976e-02, +-1.148925194840294019e-02, +-1.148566652544797707e-02, +-1.148206263566750596e-02, +-1.147844028587419705e-02, +-1.147479948291031150e-02, +-1.147114023364785747e-02, +-1.146746254498821373e-02, +-1.146376642386259630e-02, +-1.146005187723147210e-02, +-1.145631891208512797e-02, +-1.145256753544316927e-02, +-1.144879775435494670e-02, +-1.144500957589910349e-02, +-1.144120300718389459e-02, +-1.143737805534702189e-02, +-1.143353472755570532e-02, +-1.142967303100652851e-02, +-1.142579297292551851e-02, +-1.142189456056830026e-02, +-1.141797780121971487e-02, +-1.141404270219404000e-02, +-1.141008927083509220e-02, +-1.140611751451590591e-02, +-1.140212744063892440e-02, +-1.139811905663590773e-02, +-1.139409236996799524e-02, +-1.139004738812576280e-02, +-1.138598411862878045e-02, +-1.138190256902620219e-02, +-1.137780274689627162e-02, +-1.137368465984671742e-02, +-1.136954831551431448e-02, +-1.136539372156508514e-02, +-1.136122088569446222e-02, +-1.135702981562686405e-02, +-1.135282051911607956e-02, +-1.134859300394493176e-02, +-1.134434727792553443e-02, +-1.134008334889912220e-02, +-1.133580122473597067e-02, +-1.133150091333565319e-02, +-1.132718242262676332e-02, +-1.132284576056691999e-02, +-1.131849093514291846e-02, +-1.131411795437063487e-02, +-1.130972682629493090e-02, +-1.130531755898973520e-02, +-1.130089016055801227e-02, +-1.129644463913168605e-02, +-1.129198100287187589e-02, +-1.128749925996828073e-02, +-1.128299941863998741e-02, +-1.127848148713470923e-02, +-1.127394547372934965e-02, +-1.126939138672959986e-02, +-1.126481923446996485e-02, +-1.126022902531415536e-02, +-1.125562076765428826e-02, +-1.125099446991175041e-02, +-1.124635014053667822e-02, +-1.124168778800791434e-02, +-1.123700742083316544e-02, +-1.123230904754896065e-02, +-1.122759267672065325e-02, +-1.122285831694229581e-02, +-1.121810597683669045e-02, +-1.121333566505548600e-02, +-1.120854739027885884e-02, +-1.120374116121595695e-02, +-1.119891698660431013e-02, +-1.119407487521038511e-02, +-1.118921483582918999e-02, +-1.118433687728430034e-02, +-1.117944100842812108e-02, +-1.117452723814146148e-02, +-1.116959557533397929e-02, +-1.116464602894355271e-02, +-1.115967860793696913e-02, +-1.115469332130929365e-02, +-1.114969017808441036e-02, +-1.114466918731448625e-02, +-1.113963035808017248e-02, +-1.113457369949083856e-02, +-1.112949922068410050e-02, +-1.112440693082612266e-02, +-1.111929683911139742e-02, +-1.111416895476303145e-02, +-1.110902328703237615e-02, +-1.110385984519917518e-02, +-1.109867863857164939e-02, +-1.109347967648624707e-02, +-1.108826296830776013e-02, +-1.108302852342944386e-02, +-1.107777635127267166e-02, +-1.107250646128732884e-02, +-1.106721886295120721e-02, +-1.106191356577073889e-02, +-1.105659057928029543e-02, +-1.105124991304271172e-02, +-1.104589157664886967e-02, +-1.104051557971777453e-02, +-1.103512193189681509e-02, +-1.102971064286135255e-02, +-1.102428172231494433e-02, +-1.101883517998918441e-02, +-1.101337102564394974e-02, +-1.100788926906702894e-02, +-1.100238992007424726e-02, +-1.099687298850969205e-02, +-1.099133848424528950e-02, +-1.098578641718100934e-02, +-1.098021679724475209e-02, +-1.097462963439264569e-02, +-1.096902493860855282e-02, +-1.096340271990420799e-02, +-1.095776298831956271e-02, +-1.095210575392215405e-02, +-1.094643102680778121e-02, +-1.094073881709959999e-02, +-1.093502913494906643e-02, +-1.092930199053524301e-02, +-1.092355739406519061e-02, +-1.091779535577355395e-02, +-1.091201588592280794e-02, +-1.090621899480335999e-02, +-1.090040469273319095e-02, +-1.089457299005796263e-02, +-1.088872389715127807e-02, +-1.088285742441421483e-02, +-1.087697358227559218e-02, +-1.087107238119182015e-02, +-1.086515383164711121e-02, +-1.085921794415314195e-02, +-1.085326472924913986e-02, +-1.084729419750217298e-02, +-1.084130635950652892e-02, +-1.083530122588440003e-02, +-1.082927880728506292e-02, +-1.082323911438570069e-02, +-1.081718215789072117e-02, +-1.081110794853221840e-02, +-1.080501649706952332e-02, +-1.079890781428946393e-02, +-1.079278191100645906e-02, +-1.078663879806188511e-02, +-1.078047848632499549e-02, +-1.077430098669199948e-02, +-1.076810631008672664e-02, +-1.076189446746017749e-02, +-1.075566546979055127e-02, +-1.074941932808359639e-02, +-1.074315605337206742e-02, +-1.073687565671607030e-02, +-1.073057814920282474e-02, +-1.072426354194691393e-02, +-1.071793184609016493e-02, +-1.071158307280108309e-02, +-1.070521723327589637e-02, +-1.069883433873755965e-02, +-1.069243440043640865e-02, +-1.068601742964962222e-02, +-1.067958343768153975e-02, +-1.067313243586367512e-02, +-1.066666443555423609e-02, +-1.066017944813877141e-02, +-1.065367748502952724e-02, +-1.064715855766602305e-02, +-1.064062267751449652e-02, +-1.063406985606807527e-02, +-1.062750010484700067e-02, +-1.062091343539819932e-02, +-1.061430985929554330e-02, +-1.060768938813969400e-02, +-1.060105203355826697e-02, +-1.059439780720553871e-02, +-1.058772672076253862e-02, +-1.058103878593728495e-02, +-1.057433401446424351e-02, +-1.056761241810493836e-02, +-1.056087400864712776e-02, +-1.055411879790571321e-02, +-1.054734679772199001e-02, +-1.054055801996390922e-02, +-1.053375247652619390e-02, +-1.052693017932993143e-02, +-1.052009114032314077e-02, +-1.051323537147987042e-02, +-1.050636288480117329e-02, +-1.049947369231437819e-02, +-1.049256780607343321e-02, +-1.048564523815868552e-02, +-1.047870600067681186e-02, +-1.047175010576122112e-02, +-1.046477756557147309e-02, +-1.045778839229353878e-02, +-1.045078259813994083e-02, +-1.044376019534928347e-02, +-1.043672119618685099e-02, +-1.042966561294369696e-02, +-1.042259345793772850e-02, +-1.041550474351275561e-02, +-1.040839948203883120e-02, +-1.040127768591252166e-02, +-1.039413936755614713e-02, +-1.038698453941874073e-02, +-1.037981321397485161e-02, +-1.037262540372573330e-02, +-1.036542112119832534e-02, +-1.035820037894605132e-02, +-1.035096318954805208e-02, +-1.034370956560957781e-02, +-1.033643951976215974e-02, +-1.032915306466304639e-02, +-1.032185021299554008e-02, +-1.031453097746882173e-02, +-1.030719537081831692e-02, +-1.029984340580504185e-02, +-1.029247509521592080e-02, +-1.028509045186401342e-02, +-1.027768948858793184e-02, +-1.027027221825227432e-02, +-1.026283865374728703e-02, +-1.025538880798918841e-02, +-1.024792269392003040e-02, +-1.024044032450708089e-02, +-1.023294171274398943e-02, +-1.022542687164958511e-02, +-1.021789581426869528e-02, +-1.021034855367163041e-02, +-1.020278510295421874e-02, +-1.019520547523823303e-02, +-1.018760968367072098e-02, +-1.017999774142434345e-02, +-1.017236966169727391e-02, +-1.016472545771338228e-02, +-1.015706514272184981e-02, +-1.014938872999726800e-02, +-1.014169623283987971e-02, +-1.013398766457521659e-02, +-1.012626303855417541e-02, +-1.011852236815298164e-02, +-1.011076566677347743e-02, +-1.010299294784253524e-02, +-1.009520422481239785e-02, +-1.008739951116077727e-02, +-1.007957882039033776e-02, +-1.007174216602936372e-02, +-1.006388956163081425e-02, +-1.005602102077340736e-02, +-1.004813655706052015e-02, +-1.004023618412116028e-02, +-1.003231991560904653e-02, +-1.002438776520311360e-02, +-1.001643974660761972e-02, +-1.000847587355132087e-02, +-1.000049615978845785e-02, +-9.992500619098284437e-03, +-9.984489265284725648e-03, +-9.976462112176823563e-03, +-9.968419173628466703e-03, +-9.960360463518698818e-03, +-9.952285995751130807e-03, +-9.944195784254273793e-03, +-9.936089842981771572e-03, +-9.927968185911668561e-03, +-9.919830827047232055e-03, +-9.911677780415887110e-03, +-9.903509060070429110e-03, +-9.895324680088033245e-03, +-9.887124654570464410e-03, +-9.878908997644523030e-03, +-9.870677723461231470e-03, +-9.862430846196718753e-03, +-9.854168380051027062e-03, +-9.845890339249440543e-03, +-9.837596738041314362e-03, +-9.829287590700879623e-03, +-9.820962911526594577e-03, +-9.812622714841366667e-03, +-9.804267014992875187e-03, +-9.795895826352906885e-03, +-9.787509163317742802e-03, +-9.779107040307889395e-03, +-9.770689471768605888e-03, +-9.762256472169062935e-03, +-9.753808056002798849e-03, +-9.745344237787905220e-03, +-9.736865032066381598e-03, +-9.728370453404518864e-03, +-9.719860516393051889e-03, +-9.711335235646524622e-03, +-9.702794625804096740e-03, +-9.694238701528370972e-03, +-9.685667477506725367e-03, +-9.677080968450138890e-03, +-9.668479189094031021e-03, +-9.659862154197519299e-03, +-9.651229878543768001e-03, +-9.642582376940159877e-03, +-9.633919664217741041e-03, +-9.625241755231580057e-03, +-9.616548664860570181e-03, +-9.607840408007712121e-03, +-9.599116999599617908e-03, +-9.590378454586680895e-03, +-9.581624787943433114e-03, +-9.572856014667757707e-03, +-9.564072149781546392e-03, +-9.555273208330165163e-03, +-9.546459205383064917e-03, +-9.537630156033028578e-03, +-9.528786075396464272e-03, +-9.519926978613708901e-03, +-9.511052880848285679e-03, +-9.502163797287823538e-03, +-9.493259743142688431e-03, +-9.484340733647567134e-03, +-9.475406784060037835e-03, +-9.466457909661635250e-03, +-9.457494125756936432e-03, +-9.448515447673973625e-03, +-9.439521890764447642e-03, +-9.430513470403132856e-03, +-9.421490201988088828e-03, +-9.412452100941007260e-03, +-9.403399182706582288e-03, +-9.394331462752803646e-03, +-9.385248956570826570e-03, +-9.376151679675256284e-03, +-9.367039647603658814e-03, +-9.357912875916626905e-03, +-9.348771380198241457e-03, +-9.339615176055313453e-03, +-9.330444279118128154e-03, +-9.321258705039334874e-03, +-9.312058469495334764e-03, +-9.302843588185000581e-03, +-9.293614076830552725e-03, +-9.284369951176813310e-03, +-9.275111226991584329e-03, +-9.265837920065885316e-03, +-9.256550046212886490e-03, +-9.247247621269331225e-03, +-9.237930661094214194e-03, +-9.228599181569712914e-03, +-9.219253198600457430e-03, +-9.209892728113802662e-03, +-9.200517786060078210e-03, +-9.191128388411960379e-03, +-9.181724551164916273e-03, +-9.172306290336872461e-03, +-9.162873621968528962e-03, +-9.153426562123305466e-03, +-9.143965126886486119e-03, +-9.134489332366548323e-03, +-9.124999194694003932e-03, +-9.115494730022150396e-03, +-9.105975954526468810e-03, +-9.096442884404745341e-03, +-9.086895535877586444e-03, +-9.077333925187216698e-03, +-9.067758068598887403e-03, +-9.058167982399594614e-03, +-9.048563682899008961e-03, +-9.038945186428759201e-03, +-9.029312509342603960e-03, +-9.019665668016808163e-03, +-9.010004678849489052e-03, +-9.000329558260961385e-03, +-8.990640322693524075e-03, +-8.980936988611852231e-03, +-8.971219572502318884e-03, +-8.961488090873329787e-03, +-8.951742560255587094e-03, +-8.941982997201277511e-03, +-8.932209418285066288e-03, +-8.922421840102740670e-03, +-8.912620279272753798e-03, +-8.902804752434892444e-03, +-8.892975276250780076e-03, +-8.883131867404140541e-03, +-8.873274542600066012e-03, +-8.863403318565842709e-03, +-8.853518212049694969e-03, +-8.843619239822348224e-03, +-8.833706418675488573e-03, +-8.823779765423008306e-03, +-8.813839296899909567e-03, +-8.803885029962829969e-03, +-8.793916981490235152e-03, +-8.783935168381756114e-03, +-8.773939607558487591e-03, +-8.763930315963326320e-03, +-8.753907310560048172e-03, +-8.743870608334503372e-03, +-8.733820226292940761e-03, +-8.723756181463903844e-03, +-8.713678490896614032e-03, +-8.703587171661680139e-03, +-8.693482240851186857e-03, +-8.683363715578059847e-03, +-8.673231612976946975e-03, +-8.663085950202818394e-03, +-8.652926744432591979e-03, +-8.642754012863695240e-03, +-8.632567772715106155e-03, +-8.622368041226432037e-03, +-8.612154835658336269e-03, +-8.601928173292808927e-03, +-8.591688071432389620e-03, +-8.581434547400724339e-03, +-8.571167618542159528e-03, +-8.560887302222295464e-03, +-8.550593615827177876e-03, +-8.540286576763729889e-03, +-8.529966202459876926e-03, +-8.519632510364057512e-03, +-8.509285517945424510e-03, +-8.498925242693810417e-03, +-8.488551702119871353e-03, +-8.478164913754998588e-03, +-8.467764895150506690e-03, +-8.457351663879076817e-03, +-8.446925237533342914e-03, +-8.436485633726915206e-03, +-8.426032870093549260e-03, +-8.415566964287414867e-03, +-8.405087933983448195e-03, +-8.394595796876657898e-03, +-8.384090570682494609e-03, +-8.373572273136658389e-03, +-8.363040921995447408e-03, +-8.352496535035109151e-03, +-8.341939130052114515e-03, +-8.331368724863508213e-03, +-8.320785337306178461e-03, +-8.310188985237223006e-03, +-8.299579686533784320e-03, +-8.288957459093448596e-03, +-8.278322320833459910e-03, +-8.267674289691169520e-03, +-8.257013383624209335e-03, +-8.246339620609740781e-03, +-8.235653018645440124e-03, +-8.224953595748081200e-03, +-8.214241369955105343e-03, +-8.203516359323257887e-03, +-8.192778581929557880e-03, +-8.182028055870456743e-03, +-8.171264799262117559e-03, +-8.160488830240940697e-03, +-8.149700166962228071e-03, +-8.138898827601563982e-03, +-8.128084830354176740e-03, +-8.117258193434515393e-03, +-8.106418935076842996e-03, +-8.095567073534778654e-03, +-8.084702627081788440e-03, +-8.073825614010571305e-03, +-8.062936052633151024e-03, +-8.052033961281400073e-03, +-8.041119358306078602e-03, +-8.030192262077904750e-03, +-8.019252690986114832e-03, +-8.008300663440022851e-03, +-7.997336197867788848e-03, +-7.986359312716748496e-03, +-7.975370026453864128e-03, +-7.964368357564739417e-03, +-7.953354324554722660e-03, +-7.942327945947473891e-03, +-7.931289240286536549e-03, +-7.920238226133921935e-03, +-7.909174922071101482e-03, +-7.898099346698238266e-03, +-7.887011518634376092e-03, +-7.875911456517906140e-03, +-7.864799179005706534e-03, +-7.853674704773683582e-03, +-7.842538052516381461e-03, +-7.831389240947598043e-03, +-7.820228288799439473e-03, +-7.809055214822827572e-03, +-7.797870037787702803e-03, +-7.786672776482349463e-03, +-7.775463449713777321e-03, +-7.764242076307499574e-03, +-7.753008675107873719e-03, +-7.741763264977910737e-03, +-7.730505864798400788e-03, +-7.719236493469469260e-03, +-7.707955169909096182e-03, +-7.696661913054143184e-03, +-7.685356741859540770e-03, +-7.674039675298541599e-03, +-7.662710732363109054e-03, +-7.651369932063113201e-03, +-7.640017293426840800e-03, +-7.628652835500637081e-03, +-7.617276577349434835e-03, +-7.605888538056031906e-03, +-7.594488736721221288e-03, +-7.583077192464401754e-03, +-7.571653924422615083e-03, +-7.560218951751048258e-03, +-7.548772293622808827e-03, +-7.537313969229315208e-03, +-7.525843997779600204e-03, +-7.514362398500543452e-03, +-7.502869190637338932e-03, +-7.491364393452513981e-03, +-7.479848026227005689e-03, +-7.468320108258670771e-03, +-7.456780658864018557e-03, +-7.445229697376595096e-03, +-7.433667243148188788e-03, +-7.422093315547828585e-03, +-7.410507933962163889e-03, +-7.398911117795860942e-03, +-7.387302886470694697e-03, +-7.375683259425970355e-03, +-7.364052256118924084e-03, +-7.352409896023807956e-03, +-7.340756198632459803e-03, +-7.329091183453964077e-03, +-7.317414870015155788e-03, +-7.305727277859806919e-03, +-7.294028426549021074e-03, +-7.282318335661501496e-03, +-7.270597024792686304e-03, +-7.258864513555865657e-03, +-7.247120821580571928e-03, +-7.235365968514375148e-03, +-7.223599974021308739e-03, +-7.211822857783013567e-03, +-7.200034639497721392e-03, +-7.188235338880709369e-03, +-7.176424975664705101e-03, +-7.164603569598498867e-03, +-7.152771140448655786e-03, +-7.140927707997985797e-03, +-7.129073292046673831e-03, +-7.117207912411246777e-03, +-7.105331588925090439e-03, +-7.093444341438630805e-03, +-7.081546189818676597e-03, +-7.069637153948813910e-03, +-7.057717253729101775e-03, +-7.045786509076684516e-03, +-7.033844939924763055e-03, +-7.021892566223176049e-03, +-7.009929407938626268e-03, +-6.997955485053742979e-03, +-6.985970817568169615e-03, +-6.973975425497508200e-03, +-6.961969328873733945e-03, +-6.949952547745748624e-03, +-6.937925102177738661e-03, +-6.925887012251206488e-03, +-6.913838298063100518e-03, +-6.901778979727215928e-03, +-6.889709077373068827e-03, +-6.877628611146290039e-03, +-6.865537601209054444e-03, +-6.853436067739211886e-03, +-6.841324030930755543e-03, +-6.829201510993542640e-03, +-6.817068528153833080e-03, +-6.804925102653395196e-03, +-6.792771254749935088e-03, +-6.780607004717369851e-03, +-6.768432372844968015e-03, +-6.756247379438458898e-03, +-6.744052044818378555e-03, +-6.731846389321953679e-03, +-6.719630433301564641e-03, +-6.707404197125287591e-03, +-6.695167701177188492e-03, +-6.682920965856414992e-03, +-6.670664011578365631e-03, +-6.658396858772994142e-03, +-6.646119527886733269e-03, +-6.633832039380777382e-03, +-6.621534413732286378e-03, +-6.609226671433439393e-03, +-6.596908832991735770e-03, +-6.584580918930439154e-03, +-6.572242949787679769e-03, +-6.559894946116843865e-03, +-6.547536928486971837e-03, +-6.535168917481741675e-03, +-6.522790933700643376e-03, +-6.510402997757351769e-03, +-6.498005130281609559e-03, +-6.485597351917633986e-03, +-6.473179683324652850e-03, +-6.460752145177312174e-03, +-6.448314758164648379e-03, +-6.435867542991317337e-03, +-6.423410520375870056e-03, +-6.410943711052670413e-03, +-6.398467135770228957e-03, +-6.385980815292363437e-03, +-6.373484770397216080e-03, +-6.360979021877665590e-03, +-6.348463590541655877e-03, +-6.335938497211373796e-03, +-6.323403762723724467e-03, +-6.310859407930084070e-03, +-6.298305453696728326e-03, +-6.285741920904060545e-03, +-6.273168830446948160e-03, +-6.260586203235112175e-03, +-6.247994060192210361e-03, +-6.235392422256436605e-03, +-6.222781310380188710e-03, +-6.210160745530398860e-03, +-6.197530748688436474e-03, +-6.184891340849014464e-03, +-6.172242543022064473e-03, +-6.159584376230922351e-03, +-6.146916861513629197e-03, +-6.134240019921901807e-03, +-6.121553872521468334e-03, +-6.108858440392539273e-03, +-6.096153744628853358e-03, +-6.083439806338244819e-03, +-6.070716646642302511e-03, +-6.057984286676941499e-03, +-6.045242747591476722e-03, +-6.032492050549032384e-03, +-6.019732216726894104e-03, +-6.006963267315723089e-03, +-5.994185223519955114e-03, +-5.981398106557599299e-03, +-5.968601937660703016e-03, +-5.955796738074463706e-03, +-5.942982529057667766e-03, +-5.930159331883023618e-03, +-5.917327167836172915e-03, +-5.904486058216937804e-03, +-5.891636024337547177e-03, +-5.878777087524588232e-03, +-5.865909269117313384e-03, +-5.853032590468843291e-03, +-5.840147072945174600e-03, +-5.827252737925493059e-03, +-5.814349606802826642e-03, +-5.801437700982300417e-03, +-5.788517041883248573e-03, +-5.775587650937333978e-03, +-5.762649549589902130e-03, +-5.749702759298855326e-03, +-5.736747301535105419e-03, +-5.723783197782958930e-03, +-5.710810469539238411e-03, +-5.697829138313592091e-03, +-5.684839225628987407e-03, +-5.671840753020638073e-03, +-5.658833742037258294e-03, +-5.645818214239266448e-03, +-5.632794191200849419e-03, +-5.619761694508231334e-03, +-5.606720745760318016e-03, +-5.593671366569028316e-03, +-5.580613578558319202e-03, +-5.567547403365300310e-03, +-5.554472862638657957e-03, +-5.541389978040493075e-03, +-5.528298771244654145e-03, +-5.515199263937905529e-03, +-5.502091477818961233e-03, +-5.488975434598833587e-03, +-5.475851156001279932e-03, +-5.462718663761812962e-03, +-5.449577979628349514e-03, +-5.436429125360795096e-03, +-5.423272122731665791e-03, +-5.410106993525102929e-03, +-5.396933759537334528e-03, +-5.383752442577053460e-03, +-5.370563064464490242e-03, +-5.357365647031997642e-03, +-5.344160212123671636e-03, +-5.330946781595849275e-03, +-5.317725377316781694e-03, +-5.304496021165693888e-03, +-5.291258735034623517e-03, +-5.278013540826585574e-03, +-5.264760460456908119e-03, +-5.251499515852135064e-03, +-5.238230728950432104e-03, +-5.224954121702020393e-03, +-5.211669716068221582e-03, +-5.198377534022044152e-03, +-5.185077597547819994e-03, +-5.171769928641767322e-03, +-5.158454549311112039e-03, +-5.145131481574398251e-03, +-5.131800747462011286e-03, +-5.118462369015160281e-03, +-5.105116368286497473e-03, +-5.091762767339733965e-03, +-5.078401588250225189e-03, +-5.065032853104058444e-03, +-5.051656583998416321e-03, +-5.038272803042048546e-03, +-5.024881532354127933e-03, +-5.011482794065599128e-03, +-4.998076610317331130e-03, +-4.984663003262192887e-03, +-4.971241995063192809e-03, +-4.957813607894824039e-03, +-4.944377863941937755e-03, +-4.930934785400209810e-03, +-4.917484394476489412e-03, +-4.904026713387910075e-03, +-4.890561764362297281e-03, +-4.877089569638571806e-03, +-4.863610151465812097e-03, +-4.850123532103818927e-03, +-4.836629733822770186e-03, +-4.823128778903826297e-03, +-4.809620689638137089e-03, +-4.796105488327272875e-03, +-4.782583197283683286e-03, +-4.769053838829539343e-03, +-4.755517435298070930e-03, +-4.741974009031760945e-03, +-4.728423582384381867e-03, +-4.714866177719161285e-03, +-4.701301817410096819e-03, +-4.687730523840857172e-03, +-4.674152319405228823e-03, +-4.660567226507662461e-03, +-4.646975267561540869e-03, +-4.633376464991319568e-03, +-4.619770841230638574e-03, +-4.606158418723659866e-03, +-4.592539219923969310e-03, +-4.578913267294961766e-03, +-4.565280583310325942e-03, +-4.551641190453049532e-03, +-4.537995111215971725e-03, +-4.524342368101516056e-03, +-4.510682983622175263e-03, +-4.497016980299623108e-03, +-4.483344380665102089e-03, +-4.469665207259868392e-03, +-4.455979482634053919e-03, +-4.442287229347877120e-03, +-4.428588469970547517e-03, +-4.414883227080621322e-03, +-4.401171523266671042e-03, +-4.387453381125506514e-03, +-4.373728823264265257e-03, +-4.359997872298591870e-03, +-4.346260550853937345e-03, +-4.332516881564472261e-03, +-4.318766887073502252e-03, +-4.305010590033867858e-03, +-4.291248013107039870e-03, +-4.277479178963642346e-03, +-4.263704110283142099e-03, +-4.249922829754393394e-03, +-4.236135360074732431e-03, +-4.222341723950339028e-03, +-4.208541944096709335e-03, +-4.194736043237503979e-03, +-4.180924044105927169e-03, +-4.167105969442833242e-03, +-4.153281841998824817e-03, +-4.139451684532538880e-03, +-4.125615519811237468e-03, +-4.111773370611210981e-03, +-4.097925259716669703e-03, +-4.084071209921085605e-03, +-4.070211244025341395e-03, +-4.056345384839773159e-03, +-4.042473655182373185e-03, +-4.028596077880103148e-03, +-4.014712675767750059e-03, +-4.000823471688376431e-03, +-3.986928488493762628e-03, +-3.973027749043410266e-03, +-3.959121276204994981e-03, +-3.945209092854768014e-03, +-3.931291221876447722e-03, +-3.917367686162596084e-03, +-3.903438508612664965e-03, +-3.889503712135220469e-03, +-3.875563319646084613e-03, +-3.861617354069014473e-03, +-3.847665838336086427e-03, +-3.833708795386573786e-03, +-3.819746248168328934e-03, +-3.805778219635843913e-03, +-3.791804732752403206e-03, +-3.777825810488235399e-03, +-3.763841475821768246e-03, +-3.749851751738581766e-03, +-3.735856661231841489e-03, +-3.721856227302663619e-03, +-3.707850472959199097e-03, +-3.693839421217209960e-03, +-3.679823095099686407e-03, +-3.665801517637480838e-03, +-3.651774711868309951e-03, +-3.637742700837167178e-03, +-3.623705507596796695e-03, +-3.609663155206672969e-03, +-3.595615666733624396e-03, +-3.581563065251452092e-03, +-3.567505373841398705e-03, +-3.553442615591912920e-03, +-3.539374813597546184e-03, +-3.525301990960930717e-03, +-3.511224170790885196e-03, +-3.497141376203747893e-03, +-3.483053630322298973e-03, +-3.468960956276129128e-03, +-3.454863377202137438e-03, +-3.440760916243475361e-03, +-3.426653596550208961e-03, +-3.412541441278942479e-03, +-3.398424473593385578e-03, +-3.384302716663394484e-03, +-3.370176193665412601e-03, +-3.356044927782877302e-03, +-3.341908942205270606e-03, +-3.327768260128672988e-03, +-3.313622904755474108e-03, +-3.299472899294866781e-03, +-3.285318266961960530e-03, +-3.271159030978167126e-03, +-3.256995214571628203e-03, +-3.242826840976102860e-03, +-3.228653933432332895e-03, +-3.214476515186122027e-03, +-3.200294609490475679e-03, +-3.186108239603729214e-03, +-3.171917428790856346e-03, +-3.157722200322377135e-03, +-3.143522577474794268e-03, +-3.129318583531142100e-03, +-3.115110241779285756e-03, +-3.100897575513998899e-03, +-3.086680608035126221e-03, +-3.072459362648880150e-03, +-3.058233862666777467e-03, +-3.044004131406006196e-03, +-3.029770192189913929e-03, +-3.015532068346989548e-03, +-3.001289783211301236e-03, +-2.987043360122959654e-03, +-2.972792822426932689e-03, +-2.958538193474466189e-03, +-2.944279496621122431e-03, +-2.930016755228986251e-03, +-2.915749992664842718e-03, +-2.901479232300808141e-03, +-2.887204497514759844e-03, +-2.872925811689180410e-03, +-2.858643198212544156e-03, +-2.844356680477394626e-03, +-2.830066281882510394e-03, +-2.815772025830952201e-03, +-2.801473935731494964e-03, +-2.787172034997429954e-03, +-2.772866347047033605e-03, +-2.758556895303983843e-03, +-2.744243703196404260e-03, +-2.729926794157420955e-03, +-2.715606191624820361e-03, +-2.701281919041666375e-03, +-2.686953999855281640e-03, +-2.672622457517692500e-03, +-2.658287315486082200e-03, +-2.643948597221778673e-03, +-2.629606326190869932e-03, +-2.615260525863839346e-03, +-2.600911219715993684e-03, +-2.586558431227283135e-03, +-2.572202183881148584e-03, +-2.557842501166541702e-03, +-2.543479406575972941e-03, +-2.529112923606931414e-03, +-2.514743075760692698e-03, +-2.500369886542800658e-03, +-2.485993379463479879e-03, +-2.471613578036635592e-03, +-2.457230505780480783e-03, +-2.442844186217164957e-03, +-2.428454642873354406e-03, +-2.414061899279269872e-03, +-2.399665978969104611e-03, +-2.385266905481472390e-03, +-2.370864702358410018e-03, +-2.356459393145986236e-03, +-2.342051001393918776e-03, +-2.327639550656201463e-03, +-2.313225064490103712e-03, +-2.298807566456591636e-03, +-2.284387080120793816e-03, +-2.269963629050827762e-03, +-2.255537236819203303e-03, +-2.241107927000870158e-03, +-2.226675723175418429e-03, +-2.212240648925112730e-03, +-2.197802727836302514e-03, +-2.183361983498254173e-03, +-2.168918439503605532e-03, +-2.154472119448798233e-03, +-2.140023046933079830e-03, +-2.125571245558947452e-03, +-2.111116738932586681e-03, +-2.096659550662879727e-03, +-2.082199704361994367e-03, +-2.067737223645038733e-03, +-2.053272132130660229e-03, +-2.038804453440035483e-03, +-2.024334211197330053e-03, +-2.009861429030128203e-03, +-1.995386130568268471e-03, +-1.980908339445261370e-03, +-1.966428079296326983e-03, +-1.951945373760579413e-03, +-1.937460246479090183e-03, +-1.922972721096278398e-03, +-1.908482821258761491e-03, +-1.893990570615770907e-03, +-1.879495992819801104e-03, +-1.864999111524754706e-03, +-1.850499950388184408e-03, +-1.835998533069321467e-03, +-1.821494883230484734e-03, +-1.806989024535899518e-03, +-1.792480980652161847e-03, +-1.777970775248676047e-03, +-1.763458431996646437e-03, +-1.748943974569691206e-03, +-1.734427426643468141e-03, +-1.719908811896298483e-03, +-1.705388154008142783e-03, +-1.690865476661065816e-03, +-1.676340803539661797e-03, +-1.661814158329903831e-03, +-1.647285564720542316e-03, +-1.632755046401138848e-03, +-1.618222627064127726e-03, +-1.603688330403805692e-03, +-1.589152180115322105e-03, +-1.574614199896741742e-03, +-1.560074413447071337e-03, +-1.545532844467666653e-03, +-1.530989516661074128e-03, +-1.516444453731465416e-03, +-1.501897679385096659e-03, +-1.487349217329283482e-03, +-1.472799091273032431e-03, +-1.458247324926646542e-03, +-1.443693942002365668e-03, +-1.429138966213341910e-03, +-1.414582421274090214e-03, +-1.400024330900923562e-03, +-1.385464718810804812e-03, +-1.370903608722743574e-03, +-1.356341024355819935e-03, +-1.341776989431426583e-03, +-1.327211527671430654e-03, +-1.312644662798792159e-03, +-1.298076418538005039e-03, +-1.283506818613942054e-03, +-1.268935886753247118e-03, +-1.254363646682374192e-03, +-1.239790122129811635e-03, +-1.225215336824092690e-03, +-1.210639314495224900e-03, +-1.196062078873507241e-03, +-1.181483653689985487e-03, +-1.166904062676898685e-03, +-1.152323329566661957e-03, +-1.137741478092327936e-03, +-1.123158531988016759e-03, +-1.108574514987756840e-03, +-1.093989450826894985e-03, +-1.079403363240120104e-03, +-1.064816275963697753e-03, +-1.050228212733636318e-03, +-1.035639197286298717e-03, +-1.021049253358863188e-03, +-1.006458404688135438e-03, +-9.918666750119804407e-04, +-9.772740880673238140e-04, +-9.626806675924028459e-04, +-9.480864373247657045e-04, +-9.334914210026948886e-04, +-9.188956423640456126e-04, +-9.042991251466785119e-04, +-8.897018930889172847e-04, +-8.751039699285332284e-04, +-8.605053794033543438e-04, +-8.459061452509041880e-04, +-8.313062912090186767e-04, +-8.167058410148206457e-04, +-8.021048184051772761e-04, +-7.875032471171498211e-04, +-7.729011508869715287e-04, +-7.582985534506707327e-04, +-7.436954785436982124e-04, +-7.290919499015448627e-04, +-7.144879912587213510e-04, +-6.998836263492154344e-04, +-6.852788789069338797e-04, +-6.706737726645298995e-04, +-6.560683313546651629e-04, +-6.414625787088335451e-04, +-6.268565384578038066e-04, +-6.122502343320821144e-04, +-5.976436900608824831e-04, +-5.830369293727549621e-04, +-5.684299759952076824e-04, +-5.538228536553262615e-04, +-5.392155860787567132e-04, +-5.246081969901576682e-04, +-5.100007101136489092e-04, +-4.953931491717970988e-04, +-4.807855378862236381e-04, +-4.661778999772493736e-04, +-4.515702591644990939e-04, +-4.369626391658895355e-04, +-4.223550636980823625e-04, +-4.077475564769285810e-04, +-3.931401412162949444e-04, +-3.785328416294890834e-04, +-3.639256814272650610e-04, +-3.493186843200698946e-04, +-3.347118740160454791e-04, +-3.201052742224596800e-04, +-3.054989086445260163e-04, +-2.908928009858552312e-04, +-2.762869749490659142e-04, +-2.616814542339581089e-04, +-2.470762625397525153e-04, +-2.324714235630974824e-04, +-2.178669609994987458e-04, +-2.032628985421397342e-04, +-1.886592598823295616e-04, +-1.740560687099577150e-04, +-1.594533487124753107e-04, +-1.448511235753460681e-04, +-1.302494169824973381e-04, +-1.156482526151403009e-04, +-1.010476541531993381e-04, +-8.644764527331719509e-05, +-7.184824965109833116e-05, +-5.724949095927848791e-05, +-4.265139286833834773e-05, +-2.805397904695271878e-05, +-1.345727316081347767e-05, + 1.138701125943921397e-06, + 1.573392015273219018e-05, + 3.032836026027138117e-05, + 4.492199779258055975e-05, + 5.951480909555130608e-05, + 7.410677051812522705e-05, + 8.869785841184306711e-05, + 1.032880491303967362e-04, + 1.178773190306418801e-04, + 1.324656444719864243e-04, + 1.470530018167532803e-04, + 1.616393674295696142e-04, + 1.762247176783788552e-04, + 1.908090289339922825e-04, + 2.053922775696381874e-04, + 2.199744399619783667e-04, + 2.345554924904926213e-04, + 2.491354115378439970e-04, + 2.637141734894286231e-04, + 2.782917547335777273e-04, + 2.928681316627313922e-04, + 3.074432806713644768e-04, + 3.220171781579776998e-04, + 3.365898005236684439e-04, + 3.511611241733098260e-04, + 3.657311255151006989e-04, + 3.802997809601174422e-04, + 3.948670669233216740e-04, + 4.094329598229554286e-04, + 4.239974360808997566e-04, + 4.385604721220669210e-04, + 4.531220443754062658e-04, + 4.676821292734613736e-04, + 4.822407032519193085e-04, + 4.967977427506215264e-04, + 5.113532242129534148e-04, + 5.259071240862091268e-04, + 5.404594188209738571e-04, + 5.550100848721435881e-04, + 5.695590986984713517e-04, + 5.841064367621225974e-04, + 5.986520755298383248e-04, + 6.131959914715307165e-04, + 6.277381610622513987e-04, + 6.422785607799657908e-04, + 6.568171671075383883e-04, + 6.713539565313056271e-04, + 6.858889055422578811e-04, + 7.004219906355821455e-04, + 7.149531883102163213e-04, + 7.294824750698616434e-04, + 7.440098274225365313e-04, + 7.585352218801201399e-04, + 7.730586349593664142e-04, + 7.875800431813028985e-04, + 8.020994230715756219e-04, + 8.166167511598527865e-04, + 8.311320039808289557e-04, + 8.456451580737754355e-04, + 8.601561899820968360e-04, + 8.746650762545013589e-04, + 8.891717934435782161e-04, + 9.036763181077760816e-04, + 9.181786268091871994e-04, + 9.326786961155134753e-04, + 9.471765025986528946e-04, + 9.616720228358730622e-04, + 9.761652334093595240e-04, + 9.906561109056066620e-04, + 1.005144631917235902e-03, + 1.019630773040770605e-03, + 1.034114510878612891e-03, + 1.048595822037622907e-03, + 1.063074683130294093e-03, + 1.077551070774303028e-03, + 1.092024961592059917e-03, + 1.106496332211721239e-03, + 1.120965159266577816e-03, + 1.135431419395416513e-03, + 1.149895089241904401e-03, + 1.164356145455611603e-03, + 1.178814564691550281e-03, + 1.193270323609732942e-03, + 1.207723398876339466e-03, + 1.222173767162303528e-03, + 1.236621405145284756e-03, + 1.251066289507608538e-03, + 1.265508396937275190e-03, + 1.279947704128961330e-03, + 1.294384187781960540e-03, + 1.308817824602156185e-03, + 1.323248591300611949e-03, + 1.337676464594742117e-03, + 1.352101421207839525e-03, + 1.366523437868660731e-03, + 1.380942491312423057e-03, + 1.395358558280177701e-03, + 1.409771615519201131e-03, + 1.424181639782355190e-03, + 1.438588607829116442e-03, + 1.452992496425118633e-03, + 1.467393282341706651e-03, + 1.481790942357106818e-03, + 1.496185453255009182e-03, + 1.510576791826544023e-03, + 1.524964934868055545e-03, + 1.539349859182916405e-03, + 1.553731541580927493e-03, + 1.568109958877855628e-03, + 1.582485087896605370e-03, + 1.596856905465820608e-03, + 1.611225388421831141e-03, + 1.625590513606456518e-03, + 1.639952257868956733e-03, + 1.654310598064633606e-03, + 1.668665511055988709e-03, + 1.683016973712288386e-03, + 1.697364962909095592e-03, + 1.711709455529294684e-03, + 1.726050428462639523e-03, + 1.740387858605300930e-03, + 1.754721722861038707e-03, + 1.769051998139784367e-03, + 1.783378661359612868e-03, + 1.797701689444530402e-03, + 1.812021059326267888e-03, + 1.826336747943695278e-03, + 1.840648732242356226e-03, + 1.854956989175638154e-03, + 1.869261495703367559e-03, + 1.883562228793774374e-03, + 1.897859165421268484e-03, + 1.912152282568419697e-03, + 1.926441557224532666e-03, + 1.940726966386830841e-03, + 1.955008487059981589e-03, + 1.969286096255689397e-03, + 1.983559770993650190e-03, + 1.997829488300993835e-03, + 2.012095225212597906e-03, + 2.026356958770511758e-03, + 2.040614666024966137e-03, + 2.054868324033875312e-03, + 2.069117909862453267e-03, + 2.083363400584183848e-03, + 2.097604773280215777e-03, + 2.111842005039720870e-03, + 2.126075072959300333e-03, + 2.140303954143971382e-03, + 2.154528625706725754e-03, + 2.168749064768089527e-03, + 2.182965248457283212e-03, + 2.197177153910971452e-03, + 2.211384758274411409e-03, + 2.225588038701034697e-03, + 2.239786972351989845e-03, + 2.253981536397120684e-03, + 2.268171708014400829e-03, + 2.282357464390254165e-03, + 2.296538782718981521e-03, + 2.310715640203729951e-03, + 2.324888014056072059e-03, + 2.339055881495556277e-03, + 2.353219219750683940e-03, + 2.367378006058335101e-03, + 2.381532217664108532e-03, + 2.395681831821728884e-03, + 2.409826825794022034e-03, + 2.423967176852492682e-03, + 2.438102862276869849e-03, + 2.452233859356283460e-03, + 2.466360145387817577e-03, + 2.480481697678510108e-03, + 2.494598493543138864e-03, + 2.508710510306146231e-03, + 2.522817725300289127e-03, + 2.536920115867744019e-03, + 2.551017659359710969e-03, + 2.565110333135766588e-03, + 2.579198114565670313e-03, + 2.593280981027203808e-03, + 2.607358909908054443e-03, + 2.621431878604476955e-03, + 2.635499864522409304e-03, + 2.649562845077044204e-03, + 2.663620797692386327e-03, + 2.677673699802243269e-03, + 2.691721528849781025e-03, + 2.705764262287091611e-03, + 2.719801877576327135e-03, + 2.733834352188325902e-03, + 2.747861663604530581e-03, + 2.761883789314820235e-03, + 2.775900706819297518e-03, + 2.789912393627649433e-03, + 2.803918827258778269e-03, + 2.817919985241866716e-03, + 2.831915845115045172e-03, + 2.845906384427318147e-03, + 2.859891580736350757e-03, + 2.873871411610455420e-03, + 2.887845854627165039e-03, + 2.901814887374380095e-03, + 2.915778487449951443e-03, + 2.929736632461227546e-03, + 2.943689300026022023e-03, + 2.957636467772064605e-03, + 2.971578113337296906e-03, + 2.985514214369314277e-03, + 2.999444748526346356e-03, + 3.013369693476784794e-03, + 3.027289026898799008e-03, + 3.041202726481271202e-03, + 3.055110769923233879e-03, + 3.069013134934187297e-03, + 3.082909799233713062e-03, + 3.096800740551608998e-03, + 3.110685936629078302e-03, + 3.124565365216675199e-03, + 3.138439004076252169e-03, + 3.152306830979584307e-03, + 3.166168823709505573e-03, + 3.180024960059435642e-03, + 3.193875217833000869e-03, + 3.207719574844978411e-03, + 3.221558008920702952e-03, + 3.235390497896420154e-03, + 3.249217019618714196e-03, + 3.263037551945447562e-03, + 3.276852072745360753e-03, + 3.290660559897615189e-03, + 3.304462991292779830e-03, + 3.318259344832227061e-03, + 3.332049598428509559e-03, + 3.345833730004718880e-03, + 3.359611717495518055e-03, + 3.373383538846673208e-03, + 3.387149172014627691e-03, + 3.400908594967616636e-03, + 3.414661785684329487e-03, + 3.428408722155778295e-03, + 3.442149382383201308e-03, + 3.455883744379897437e-03, + 3.469611786169927818e-03, + 3.483333485789204351e-03, + 3.497048821285053850e-03, + 3.510757770715816888e-03, + 3.524460312151783247e-03, + 3.538156423674628133e-03, + 3.551846083377729630e-03, + 3.565529269365630503e-03, + 3.579205959754951094e-03, + 3.592876132673989038e-03, + 3.606539766262286013e-03, + 3.620196838671599620e-03, + 3.633847328065441511e-03, + 3.647491212618674938e-03, + 3.661128470518643183e-03, + 3.674759079963797834e-03, + 3.688383019165551030e-03, + 3.702000266346221983e-03, + 3.715610799740870149e-03, + 3.729214597595963826e-03, + 3.742811638170467827e-03, + 3.756401899735464876e-03, + 3.769985360573529370e-03, + 3.783561998980471651e-03, + 3.797131793263219899e-03, + 3.810694721741684967e-03, + 3.824250762747449361e-03, + 3.837799894624835829e-03, + 3.851342095730491463e-03, + 3.864877344432993914e-03, + 3.878405619113745213e-03, + 3.891926898166470430e-03, + 3.905441159997465311e-03, + 3.918948383025129198e-03, + 3.932448545680790331e-03, + 3.945941626408402264e-03, + 3.959427603664044705e-03, + 3.972906455917049780e-03, + 3.986378161648652420e-03, + 3.999842699353884680e-03, + 4.013300047539599021e-03, + 4.026750184725411998e-03, + 4.040193089444680044e-03, + 4.053628740242520151e-03, + 4.067057115677727604e-03, + 4.080478194321363918e-03, + 4.093891954757920837e-03, + 4.107298375584844154e-03, + 4.120697435412182426e-03, + 4.134089112863439594e-03, + 4.147473386575106606e-03, + 4.160850235196881727e-03, + 4.174219637391226451e-03, + 4.187581571834195562e-03, + 4.200936017215071115e-03, + 4.214282952235956503e-03, + 4.227622355612826836e-03, + 4.240954206074240042e-03, + 4.254278482363146180e-03, + 4.267595163234849144e-03, + 4.280904227458670261e-03, + 4.294205653817375831e-03, + 4.307499421106805899e-03, + 4.320785508136872587e-03, + 4.334063893730351856e-03, + 4.347334556724622573e-03, + 4.360597475969656828e-03, + 4.373852630329815375e-03, + 4.387099998682595162e-03, + 4.400339559919620724e-03, + 4.413571292946308518e-03, + 4.426795176681397673e-03, + 4.440011190057921442e-03, + 4.453219312022758773e-03, + 4.466419521536248334e-03, + 4.479611797573221539e-03, + 4.492796119121782172e-03, + 4.505972465185009018e-03, + 4.519140814778999961e-03, + 4.532301146934506093e-03, + 4.545453440696354055e-03, + 4.558597675123093884e-03, + 4.571733829287982602e-03, + 4.584861882277753431e-03, + 4.597981813194391282e-03, + 4.611093601153127414e-03, + 4.624197225284199311e-03, + 4.637292664731599949e-03, + 4.650379898654108217e-03, + 4.663458906224909883e-03, + 4.676529666631165649e-03, + 4.689592159074937490e-03, + 4.702646362772626605e-03, + 4.715692256955328170e-03, + 4.728729820868235456e-03, + 4.741759033771558371e-03, + 4.754779874940170438e-03, + 4.767792323663130015e-03, + 4.780796359244627453e-03, + 4.793791961003441258e-03, + 4.806779108273256419e-03, + 4.819757780402060716e-03, + 4.832727956753164744e-03, + 4.845689616704691033e-03, + 4.858642739649225370e-03, + 4.871587304994838552e-03, + 4.884523292163857333e-03, + 4.897450680594569658e-03, + 4.910369449739451775e-03, + 4.923279579066111057e-03, + 4.936181048057613867e-03, + 4.949073836211915697e-03, + 4.961957923042315671e-03, + 4.974833288076811223e-03, + 4.987699910859086025e-03, + 5.000557770948056355e-03, + 5.013406847917482520e-03, + 5.026247121356842290e-03, + 5.039078570870851245e-03, + 5.051901176079691760e-03, + 5.064714916618585396e-03, + 5.077519772138549235e-03, + 5.090315722306133078e-03, + 5.103102746802921572e-03, + 5.115880825326625352e-03, + 5.128649937589788675e-03, + 5.141410063321567511e-03, + 5.154161182265748486e-03, + 5.166903274182492282e-03, + 5.179636318847089839e-03, + 5.192360296050960687e-03, + 5.205075185601332026e-03, + 5.217780967320608150e-03, + 5.230477621048027111e-03, + 5.243165126637682263e-03, + 5.255843463960279544e-03, + 5.268512612901849433e-03, + 5.281172553364833766e-03, + 5.293823265267610413e-03, + 5.306464728544190573e-03, + 5.319096923145034961e-03, + 5.331719829036678238e-03, + 5.344333426201339568e-03, + 5.356937694637959116e-03, + 5.369532614360925625e-03, + 5.382118165401829357e-03, + 5.394694327807502722e-03, + 5.407261081641617957e-03, + 5.419818406984123343e-03, + 5.432366283930918811e-03, + 5.444904692594774477e-03, + 5.457433613104204807e-03, + 5.469953025605071503e-03, + 5.482462910258772450e-03, + 5.494963247243838528e-03, + 5.507454016754793902e-03, + 5.519935199003123995e-03, + 5.532406774216881706e-03, + 5.544868722640338733e-03, + 5.557321024534786144e-03, + 5.569763660178111107e-03, + 5.582196609864995517e-03, + 5.594619853906464095e-03, + 5.607033372630710125e-03, + 5.619437146382725082e-03, + 5.631831155523949091e-03, + 5.644215380433062826e-03, + 5.656589801505506991e-03, + 5.668954399153792838e-03, + 5.681309153806965266e-03, + 5.693654045911465851e-03, + 5.705989055930755539e-03, + 5.718314164344929541e-03, + 5.730629351651703521e-03, + 5.742934598365366690e-03, + 5.755229885017728968e-03, + 5.767515192157809598e-03, + 5.779790500351390456e-03, + 5.792055790181905098e-03, + 5.804311042249886247e-03, + 5.816556237173322284e-03, + 5.828791355587130754e-03, + 5.841016378143957209e-03, + 5.853231285513823060e-03, + 5.865436058383803782e-03, + 5.877630677458780921e-03, + 5.889815123461003207e-03, + 5.901989377130338089e-03, + 5.914153419223792951e-03, + 5.926307230516366861e-03, + 5.938450791800618626e-03, + 5.950584083886338062e-03, + 5.962707087601540855e-03, + 5.974819783791232575e-03, + 5.986922153319067068e-03, + 5.999014177065531937e-03, + 6.011095835929524539e-03, + 6.023167110827265178e-03, + 6.035227982693160131e-03, + 6.047278432479537974e-03, + 6.059318441156165587e-03, + 6.071347989711190982e-03, + 6.083367059150555228e-03, + 6.095375630498320318e-03, + 6.107373684796174769e-03, + 6.119361203104260218e-03, + 6.131338166500786314e-03, + 6.143304556081664695e-03, + 6.155260352961350323e-03, + 6.167205538272454643e-03, + 6.179140093165406446e-03, + 6.191063998809383413e-03, + 6.202977236391144650e-03, + 6.214879787116657853e-03, + 6.226771632209276985e-03, + 6.238652752911424092e-03, + 6.250523130483269171e-03, + 6.262382746203825658e-03, + 6.274231581370560105e-03, + 6.286069617298831007e-03, + 6.297896835323456982e-03, + 6.309713216796805982e-03, + 6.321518743090502254e-03, + 6.333313395594171273e-03, + 6.345097155716497919e-03, + 6.356870004884741625e-03, + 6.368631924544477033e-03, + 6.380382896160379826e-03, + 6.392122901215681156e-03, + 6.403851921212505051e-03, + 6.415569937671388757e-03, + 6.427276932132052964e-03, + 6.438972886153073068e-03, + 6.450657781311494934e-03, + 6.462331599203786393e-03, + 6.473994321444671504e-03, + 6.485645929668794156e-03, + 6.497286405528953854e-03, + 6.508915730696973947e-03, + 6.520533886864523891e-03, + 6.532140855741415744e-03, + 6.543736619057195780e-03, + 6.555321158560079367e-03, + 6.566894456017755011e-03, + 6.578456493217151035e-03, + 6.590007251963985423e-03, + 6.601546714083637510e-03, + 6.613074861420624971e-03, + 6.624591675838877904e-03, + 6.636097139221270452e-03, + 6.647591233470436997e-03, + 6.659073940508399188e-03, + 6.670545242276181702e-03, + 6.682005120734772416e-03, + 6.693453557864017384e-03, + 6.704890535664126579e-03, + 6.716316036153951313e-03, + 6.727730041372408445e-03, + 6.739132533378012872e-03, + 6.750523494248482012e-03, + 6.761902906081699444e-03, + 6.773270750994584734e-03, + 6.784627011124624331e-03, + 6.795971668628137709e-03, + 6.807304705681878516e-03, + 6.818626104481812465e-03, + 6.829935847244125204e-03, + 6.841233916204833738e-03, + 6.852520293619412603e-03, + 6.863794961763642136e-03, + 6.875057902933219903e-03, + 6.886309099443379059e-03, + 6.897548533629843312e-03, + 6.908776187847738386e-03, + 6.919992044473084747e-03, + 6.931196085901038598e-03, + 6.942388294547401952e-03, + 6.953568652848040633e-03, + 6.964737143258635348e-03, + 6.975893748255483987e-03, + 6.987038450334481614e-03, + 6.998171232012604520e-03, + 7.009292075826222337e-03, + 7.020400964332582094e-03, + 7.031497880108756975e-03, + 7.042582805752499800e-03, + 7.053655723881956802e-03, + 7.064716617135257358e-03, + 7.075765468171305896e-03, + 7.086802259669375097e-03, + 7.097826974329262892e-03, + 7.108839594870925566e-03, + 7.119840104035227157e-03, + 7.130828484583519658e-03, + 7.141804719297407955e-03, + 7.152768790979462804e-03, + 7.163720682452741177e-03, + 7.174660376561098514e-03, + 7.185587856168695192e-03, + 7.196503104160757204e-03, + 7.207406103443244824e-03, + 7.218296836942548166e-03, + 7.229175287606302500e-03, + 7.240041438402318799e-03, + 7.250895272320182286e-03, + 7.261736772369562810e-03, + 7.272565921581124714e-03, + 7.283382703006758413e-03, + 7.294187099719155395e-03, + 7.304979094812055415e-03, + 7.315758671399896947e-03, + 7.326525812618496329e-03, + 7.337280501624685210e-03, + 7.348022721596056406e-03, + 7.358752455731656927e-03, + 7.369469687251535214e-03, + 7.380174399397025631e-03, + 7.390866575430275753e-03, + 7.401546198634993169e-03, + 7.412213252316182666e-03, + 7.422867719799664844e-03, + 7.433509584433083996e-03, + 7.444138829584790069e-03, + 7.454755438645307986e-03, + 7.465359395025661024e-03, + 7.475950682158919065e-03, + 7.486529283499045867e-03, + 7.497095182521819334e-03, + 7.507648362724500188e-03, + 7.518188807625342772e-03, + 7.528716500764957680e-03, + 7.539231425704685449e-03, + 7.549733566028014702e-03, + 7.560222905339591612e-03, + 7.570699427265975383e-03, + 7.581163115455431811e-03, + 7.591613953577542977e-03, + 7.602051925323869037e-03, + 7.612477014407764350e-03, + 7.622889204564011444e-03, + 7.633288479549523581e-03, + 7.643674823142543318e-03, + 7.654048219143855074e-03, + 7.664408651375387814e-03, + 7.674756103681317464e-03, + 7.685090559927729506e-03, + 7.695412004002362243e-03, + 7.705720419815281601e-03, + 7.716015791297992088e-03, + 7.726298102404800285e-03, + 7.736567337111230173e-03, + 7.746823479415432603e-03, + 7.757066513337175680e-03, + 7.767296422918675697e-03, + 7.777513192224226775e-03, + 7.787716805340007438e-03, + 7.797907246374659145e-03, + 7.808084499458911587e-03, + 7.818248548745852441e-03, + 7.828399378410464196e-03, + 7.838536972650330184e-03, + 7.848661315685376977e-03, + 7.858772391757425091e-03, + 7.868870185131082370e-03, + 7.878954680093143773e-03, + 7.889025860952919231e-03, + 7.899083712041832933e-03, + 7.909128217714066905e-03, + 7.919159362346266107e-03, + 7.929177130337229651e-03, + 7.939181506108748676e-03, + 7.949172474104652247e-03, + 7.959150018791723291e-03, + 7.969114124659310017e-03, + 7.979064776219034483e-03, + 7.989001958005467405e-03, + 7.998925654575819374e-03, + 8.008835850509966880e-03, + 8.018732530410238937e-03, + 8.028615678902015565e-03, + 8.038485280633446764e-03, + 8.048341320275067406e-03, + 8.058183782520633373e-03, + 8.068012652086557768e-03, + 8.077827913712233576e-03, + 8.087629552159584373e-03, + 8.097417552213785966e-03, + 8.107191898682889961e-03, + 8.116952576397620800e-03, + 8.126699570212055773e-03, + 8.136432865002754186e-03, + 8.146152445670047995e-03, + 8.155858297136501373e-03, + 8.165550404348326241e-03, + 8.175228752274405625e-03, + 8.184893325906985803e-03, + 8.194544110261497635e-03, + 8.204181090376176655e-03, + 8.213804251312796859e-03, + 8.223413578156143350e-03, + 8.233009056014437346e-03, + 8.242590670018730761e-03, + 8.252158405323709381e-03, + 8.261712247107356327e-03, + 8.271252180570632870e-03, + 8.280778190938154967e-03, + 8.290290263457926120e-03, + 8.299788383400962671e-03, + 8.309272536062173309e-03, + 8.318742706759304356e-03, + 8.328198880834346632e-03, + 8.337641043651984607e-03, + 8.347069180600939081e-03, + 8.356483277093040840e-03, + 8.365883318563952301e-03, + 8.375269290472941996e-03, + 8.384641178302397121e-03, + 8.393998967559063856e-03, + 8.403342643772586731e-03, + 8.412672192496818344e-03, + 8.421987599308776787e-03, + 8.431288849809589342e-03, + 8.440575929624081347e-03, + 8.449848824400439662e-03, + 8.459107519811014109e-03, + 8.468352001551767566e-03, + 8.477582255342631587e-03, + 8.486798266927010267e-03, + 8.496000022072520974e-03, + 8.505187506570550254e-03, + 8.514360706236212203e-03, + 8.523519606908853269e-03, + 8.532664194451269890e-03, + 8.541794454750917601e-03, + 8.550910373718665497e-03, + 8.560011937289335737e-03, + 8.569099131422447738e-03, + 8.578171942100774883e-03, + 8.587230355331746182e-03, + 8.596274357146419312e-03, + 8.605303933600282063e-03, + 8.614319070772967837e-03, + 8.623319754767953815e-03, + 8.632305971713183715e-03, + 8.641277707760722585e-03, + 8.650234949086919867e-03, + 8.659177681892088474e-03, + 8.668105892401075513e-03, + 8.677019566863062791e-03, + 8.685918691551164361e-03, + 8.694803252763309495e-03, + 8.703673236821130726e-03, + 8.712528630071462651e-03, + 8.721369418884775473e-03, + 8.730195589656309513e-03, + 8.739007128805783772e-03, + 8.747804022777085423e-03, + 8.756586258038876955e-03, + 8.765353821083909230e-03, + 8.774106698430064050e-03, + 8.782844876619136376e-03, + 8.791568342217876905e-03, + 8.800277081817318992e-03, + 8.808971082033309474e-03, + 8.817650329506330001e-03, + 8.826314810901196919e-03, + 8.834964512907668432e-03, + 8.843599422240120203e-03, + 8.852219525637651173e-03, + 8.860824809863944787e-03, + 8.869415261707308887e-03, + 8.877990867981355727e-03, + 8.886551615523785932e-03, + 8.895097491197581988e-03, + 8.903628481890442717e-03, + 8.912144574514615017e-03, + 8.920645756007643257e-03, + 8.929132013331465487e-03, + 8.937603333473508049e-03, + 8.946059703445533723e-03, + 8.954501110284635718e-03, + 8.962927541052580216e-03, + 8.971338982836312911e-03, + 8.979735422747787271e-03, + 8.988116847923713001e-03, + 8.996483245526090342e-03, + 9.004834602741903019e-03, + 9.013170906783262229e-03, + 9.021492144887160308e-03, + 9.029798304315880125e-03, + 9.038089372356948245e-03, + 9.046365336322659614e-03, + 9.054626183550856452e-03, + 9.062871901404378344e-03, + 9.071102477271421327e-03, + 9.079317898565142375e-03, + 9.087518152724185019e-03, + 9.095703227212474651e-03, + 9.103873109518934026e-03, + 9.112027787158199707e-03, + 9.120167247669704394e-03, + 9.128291478618931129e-03, + 9.136400467596129601e-03, + 9.144494202217003098e-03, + 9.152572670122920140e-03, + 9.160635858980459983e-03, + 9.168683756481828956e-03, + 9.176716350344381670e-03, + 9.184733628311160525e-03, + 9.192735578150798559e-03, + 9.200722187657080567e-03, + 9.208693444649640458e-03, + 9.216649336973558801e-03, + 9.224589852499577927e-03, + 9.232514979123690804e-03, + 9.240424704767869618e-03, + 9.248319017379635562e-03, + 9.256197904931881895e-03, + 9.264061355423543545e-03, + 9.271909356878760972e-03, + 9.279741897347992124e-03, + 9.287558964906836301e-03, + 9.295360547656948344e-03, + 9.303146633725509554e-03, + 9.310917211265638815e-03, + 9.318672268456285046e-03, + 9.326411793501809128e-03, + 9.334135774633045557e-03, + 9.341844200106011811e-03, + 9.349537058203048062e-03, + 9.357214337232001855e-03, + 9.364876025526894243e-03, + 9.372522111447591925e-03, + 9.380152583379722242e-03, + 9.387767429735013186e-03, + 9.395366638951211866e-03, + 9.402950199491780930e-03, + 9.410518099846502255e-03, + 9.418070328530765700e-03, + 9.425606874086542297e-03, + 9.433127725081282694e-03, + 9.440632870108897276e-03, + 9.448122297789273913e-03, + 9.455595996768203365e-03, + 9.463053955717904905e-03, + 9.470496163336349776e-03, + 9.477922608348163247e-03, + 9.485333279503663576e-03, + 9.492728165579672125e-03, + 9.500107255378937438e-03, + 9.507470537730648708e-03, + 9.514818001490217211e-03, + 9.522149635539075077e-03, + 9.529465428785148864e-03, + 9.536765370162623642e-03, + 9.544049448631969010e-03, + 9.551317653179812461e-03, + 9.558569972819343577e-03, + 9.565806396590060753e-03, + 9.573026913557602935e-03, + 9.580231512814238806e-03, + 9.587420183478592706e-03, + 9.594592914695686259e-03, + 9.601749695636858581e-03, + 9.608890515500042098e-03, + 9.616015363509651526e-03, + 9.623124228916384373e-03, + 9.630217100997696261e-03, + 9.637293969057294379e-03, + 9.644354822425546883e-03, + 9.651399650459540139e-03, + 9.658428442542502795e-03, + 9.665441188084569063e-03, + 9.672437876522424829e-03, + 9.679418497319302456e-03, + 9.686383039964996389e-03, + 9.693331493976015817e-03, + 9.700263848895631508e-03, + 9.707180094293501108e-03, + 9.714080219766252008e-03, + 9.720964214937038994e-03, + 9.727832069455899858e-03, + 9.734683772999333864e-03, + 9.741519315270860332e-03, + 9.748338686000680361e-03, + 9.755141874945603975e-03, + 9.761928871889535841e-03, + 9.768699666642790061e-03, + 9.775454249043065078e-03, + 9.782192608954314375e-03, + 9.788914736267795985e-03, + 9.795620620901258901e-03, + 9.802310252799636969e-03, + 9.808983621934689798e-03, + 9.815640718304902146e-03, + 9.822281531935917603e-03, + 9.828906052880276648e-03, + 9.835514271217454807e-03, + 9.842106177053793273e-03, + 9.848681760522745229e-03, + 9.855241011784832486e-03, + 9.861783921027352309e-03, + 9.868310478464838859e-03, + 9.874820674338917470e-03, + 9.881314498917952507e-03, + 9.887791942497815845e-03, + 9.894252995400995218e-03, + 9.900697647977628121e-03, + 9.907125890604457502e-03, + 9.913537713685745961e-03, + 9.919933107652592272e-03, + 9.926312062963430979e-03, + 9.932674570103924849e-03, + 9.939020619586663025e-03, + 9.945350201951846242e-03, + 9.951663307766454164e-03, + 9.957959927625055496e-03, + 9.964240052149145321e-03, + 9.970503671987741845e-03, + 9.976750777817070676e-03, + 9.982981360340483293e-03, + 9.989195410288786645e-03, + 9.995392918420125186e-03, + 1.000157387551990976e-02, + 1.000773827240076727e-02, + 1.001388609990289634e-02, + 1.002001734889384869e-02, + 1.002613201026827591e-02, + 1.003223007494858168e-02, + 1.003831153388424872e-02, + 1.004437637805255176e-02, + 1.005042459845792609e-02, + 1.005645618613213756e-02, + 1.006247113213490883e-02, + 1.006846942755288375e-02, + 1.007445106350056234e-02, + 1.008041603111972141e-02, + 1.008636432157977714e-02, + 1.009229592607768962e-02, + 1.009821083583777035e-02, + 1.010410904211211762e-02, + 1.010999053618025049e-02, + 1.011585530934937770e-02, + 1.012170335295406974e-02, + 1.012753465835676547e-02, + 1.013334921694741993e-02, + 1.013914702014347656e-02, + 1.014492805939028186e-02, + 1.015069232616045043e-02, + 1.015643981195482604e-02, + 1.016217050830135922e-02, + 1.016788440675601285e-02, + 1.017358149890244638e-02, + 1.017926177635178515e-02, + 1.018492523074324835e-02, + 1.019057185374335449e-02, + 1.019620163704687901e-02, + 1.020181457237588629e-02, + 1.020741065148060914e-02, + 1.021298986613867511e-02, + 1.021855220815582645e-02, + 1.022409766936552451e-02, + 1.022962624162894116e-02, + 1.023513791683522411e-02, + 1.024063268690129924e-02, + 1.024611054377201104e-02, + 1.025157147941999081e-02, + 1.025701548584564277e-02, + 1.026244255507765060e-02, + 1.026785267917213786e-02, + 1.027324585021345375e-02, + 1.027862206031380544e-02, + 1.028398130161323025e-02, + 1.028932356627984546e-02, + 1.029464884650953954e-02, + 1.029995713452653769e-02, + 1.030524842258262810e-02, + 1.031052270295791141e-02, + 1.031577996796022127e-02, + 1.032102020992560140e-02, + 1.032624342121814601e-02, + 1.033144959422977772e-02, + 1.033663872138064314e-02, + 1.034181079511893066e-02, + 1.034696580792091036e-02, + 1.035210375229076926e-02, + 1.035722462076097555e-02, + 1.036232840589207047e-02, + 1.036741510027261622e-02, + 1.037248469651932785e-02, + 1.037753718727713916e-02, + 1.038257256521909686e-02, + 1.038759082304627733e-02, + 1.039259195348804683e-02, + 1.039757594930200250e-02, + 1.040254280327372431e-02, + 1.040749250821722260e-02, + 1.041242505697442117e-02, + 1.041734044241586499e-02, + 1.042223865744000902e-02, + 1.042711969497357033e-02, + 1.043198354797158882e-02, + 1.043683020941742028e-02, + 1.044165967232262709e-02, + 1.044647192972695399e-02, + 1.045126697469855870e-02, + 1.045604480033390793e-02, + 1.046080539975761600e-02, + 1.046554876612276752e-02, + 1.047027489261073176e-02, + 1.047498377243125632e-02, + 1.047967539882225727e-02, + 1.048434976505019899e-02, + 1.048900686440987565e-02, + 1.049364669022432445e-02, + 1.049826923584519164e-02, + 1.050287449465215836e-02, + 1.050746246005376111e-02, + 1.051203312548661291e-02, + 1.051658648441588031e-02, + 1.052112253033506660e-02, + 1.052564125676623032e-02, + 1.053014265725985520e-02, + 1.053462672539468535e-02, + 1.053909345477830814e-02, + 1.054354283904639956e-02, + 1.054797487186339387e-02, + 1.055238954692202906e-02, + 1.055678685794365912e-02, + 1.056116679867813435e-02, + 1.056552936290371288e-02, + 1.056987454442735036e-02, + 1.057420233708443458e-02, + 1.057851273473888777e-02, + 1.058280573128324818e-02, + 1.058708132063847403e-02, + 1.059133949675435810e-02, + 1.059558025360898652e-02, + 1.059980358520917591e-02, + 1.060400948559036584e-02, + 1.060819794881647134e-02, + 1.061236896898014662e-02, + 1.061652254020248841e-02, + 1.062065865663352517e-02, + 1.062477731245160296e-02, + 1.062887850186390246e-02, + 1.063296221910613529e-02, + 1.063702845844272799e-02, + 1.064107721416688440e-02, + 1.064510848060023183e-02, + 1.064912225209326685e-02, + 1.065311852302514364e-02, + 1.065709728780371568e-02, + 1.066105854086545936e-02, + 1.066500227667568045e-02, + 1.066892848972833714e-02, + 1.067283717454607823e-02, + 1.067672832568036974e-02, + 1.068060193771138908e-02, + 1.068445800524811529e-02, + 1.068829652292812432e-02, + 1.069211748541787528e-02, + 1.069592088741266531e-02, + 1.069970672363637632e-02, + 1.070347498884186531e-02, + 1.070722567781062264e-02, + 1.071095878535310852e-02, + 1.071467430630846512e-02, + 1.071837223554460844e-02, + 1.072205256795839660e-02, + 1.072571529847547549e-02, + 1.072936042205031686e-02, + 1.073298793366616807e-02, + 1.073659782833521516e-02, + 1.074019010109852207e-02, + 1.074376474702585377e-02, + 1.074732176121597632e-02, + 1.075086113879650772e-02, + 1.075438287492395603e-02, + 1.075788696478363095e-02, + 1.076137340358983459e-02, + 1.076484218658575569e-02, + 1.076829330904338113e-02, + 1.077172676626376308e-02, + 1.077514255357666338e-02, + 1.077854066634106184e-02, + 1.078192109994463056e-02, + 1.078528384980404799e-02, + 1.078862891136491385e-02, + 1.079195628010180298e-02, + 1.079526595151829131e-02, + 1.079855792114679455e-02, + 1.080183218454873993e-02, + 1.080508873731461129e-02, + 1.080832757506379124e-02, + 1.081154869344456808e-02, + 1.081475208813434917e-02, + 1.081793775483955167e-02, + 1.082110568929540301e-02, + 1.082425588726630347e-02, + 1.082738834454565792e-02, + 1.083050305695578558e-02, + 1.083360002034812475e-02, + 1.083667923060298299e-02, + 1.083974068362996389e-02, + 1.084278437536743793e-02, + 1.084581030178300223e-02, + 1.084881845887317002e-02, + 1.085180884266356491e-02, + 1.085478144920892958e-02, + 1.085773627459288813e-02, + 1.086067331492834853e-02, + 1.086359256635709147e-02, + 1.086649402505014163e-02, + 1.086937768720744150e-02, + 1.087224354905812901e-02, + 1.087509160686044030e-02, + 1.087792185690160222e-02, + 1.088073429549803184e-02, + 1.088352891899522015e-02, + 1.088630572376779980e-02, + 1.088906470621938023e-02, + 1.089180586278286691e-02, + 1.089452918992018203e-02, + 1.089723468412235122e-02, + 1.089992234190963541e-02, + 1.090259215983127757e-02, + 1.090524413446582880e-02, + 1.090787826242083959e-02, + 1.091049454033305062e-02, + 1.091309296486843092e-02, + 1.091567353272192460e-02, + 1.091823624061783078e-02, + 1.092078108530944967e-02, + 1.092330806357933240e-02, + 1.092581717223918732e-02, + 1.092830840812984185e-02, + 1.093078176812139167e-02, + 1.093323724911301510e-02, + 1.093567484803316218e-02, + 1.093809456183936213e-02, + 1.094049638751844016e-02, + 1.094288032208638566e-02, + 1.094524636258827760e-02, + 1.094759450609855515e-02, + 1.094992474972073838e-02, + 1.095223709058766939e-02, + 1.095453152586125731e-02, + 1.095680805273273328e-02, + 1.095906666842252908e-02, + 1.096130737018019552e-02, + 1.096353015528465751e-02, + 1.096573502104387920e-02, + 1.096792196479530988e-02, + 1.097009098390537736e-02, + 1.097224207576986098e-02, + 1.097437523781375976e-02, + 1.097649046749128374e-02, + 1.097858776228593722e-02, + 1.098066711971040256e-02, + 1.098272853730665466e-02, + 1.098477201264588116e-02, + 1.098679754332862642e-02, + 1.098880512698448275e-02, + 1.099079476127247552e-02, + 1.099276644388088101e-02, + 1.099472017252708239e-02, + 1.099665594495785083e-02, + 1.099857375894924480e-02, + 1.100047361230650431e-02, + 1.100235550286420873e-02, + 1.100421942848607733e-02, + 1.100606538706529539e-02, + 1.100789337652417939e-02, + 1.100970339481439561e-02, + 1.101149543991681960e-02, + 1.101326950984167670e-02, + 1.101502560262840151e-02, + 1.101676371634580619e-02, + 1.101848384909189134e-02, + 1.102018599899399175e-02, + 1.102187016420875035e-02, + 1.102353634292205752e-02, + 1.102518453334909963e-02, + 1.102681473373440767e-02, + 1.102842694235166981e-02, + 1.103002115750405243e-02, + 1.103159737752390686e-02, + 1.103315560077292035e-02, + 1.103469582564202064e-02, + 1.103621805055145406e-02, + 1.103772227395088783e-02, + 1.103920849431910128e-02, + 1.104067671016434500e-02, + 1.104212692002399902e-02, + 1.104355912246491808e-02, + 1.104497331608318179e-02, + 1.104636949950416752e-02, + 1.104774767138255037e-02, + 1.104910783040237779e-02, + 1.105044997527694813e-02, + 1.105177410474890952e-02, + 1.105308021759011591e-02, + 1.105436831260189420e-02, + 1.105563838861475627e-02, + 1.105689044448858287e-02, + 1.105812447911254381e-02, + 1.105934049140511709e-02, + 1.106053848031407841e-02, + 1.106171844481656195e-02, + 1.106288038391899965e-02, + 1.106402429665709342e-02, + 1.106515018209592791e-02, + 1.106625803932976930e-02, + 1.106734786748238275e-02, + 1.106841966570669238e-02, + 1.106947343318503973e-02, + 1.107050916912894617e-02, + 1.107152687277938689e-02, + 1.107252654340659150e-02, + 1.107350818031004394e-02, + 1.107447178281865605e-02, + 1.107541735029053502e-02, + 1.107634488211318990e-02, + 1.107725437770331299e-02, + 1.107814583650709034e-02, + 1.107901925799986871e-02, + 1.107987464168632558e-02, + 1.108071198710047084e-02, + 1.108153129380564338e-02, + 1.108233256139446246e-02, + 1.108311578948882777e-02, + 1.108388097773995058e-02, + 1.108462812582837985e-02, + 1.108535723346393449e-02, + 1.108606830038574680e-02, + 1.108676132636223811e-02, + 1.108743631119112928e-02, + 1.108809325469947357e-02, + 1.108873215674352312e-02, + 1.108935301720896140e-02, + 1.108995583601068112e-02, + 1.109054061309285022e-02, + 1.109110734842894651e-02, + 1.109165604202179585e-02, + 1.109218669390343512e-02, + 1.109269930413521975e-02, + 1.109319387280775782e-02, + 1.109367040004100545e-02, + 1.109412888598416969e-02, + 1.109456933081569112e-02, + 1.109499173474333238e-02, + 1.109539609800415383e-02, + 1.109578242086443033e-02, + 1.109615070361975007e-02, + 1.109650094659494178e-02, + 1.109683315014415445e-02, + 1.109714731465074634e-02, + 1.109744344052736309e-02, + 1.109772152821589426e-02, + 1.109798157818754627e-02, + 1.109822359094271398e-02, + 1.109844756701108132e-02, + 1.109865350695154670e-02, + 1.109884141135236008e-02, + 1.109901128083085921e-02, + 1.109916311603377850e-02, + 1.109929691763701133e-02, + 1.109941268634571411e-02, + 1.109951042289424906e-02, + 1.109959012804631086e-02, + 1.109965180259468720e-02, + 1.109969544736150518e-02, + 1.109972106319805432e-02, + 1.109972865098490628e-02, + 1.109971821163176740e-02, + 1.109968974607764003e-02, + 1.109964325529069415e-02, + 1.109957874026836974e-02, + 1.109949620203723626e-02, + 1.109939564165313836e-02, + 1.109927706020103974e-02, + 1.109914045879520361e-02, + 1.109898583857902091e-02, + 1.109881320072509704e-02, + 1.109862254643517558e-02, + 1.109841387694032559e-02, + 1.109818719350063113e-02, + 1.109794249740544275e-02, + 1.109767978997329083e-02, + 1.109739907255183171e-02, + 1.109710034651790848e-02, + 1.109678361327752841e-02, + 1.109644887426590107e-02, + 1.109609613094729788e-02, + 1.109572538481524290e-02, + 1.109533663739234802e-02, + 1.109492989023035982e-02, + 1.109450514491025150e-02, + 1.109406240304197828e-02, + 1.109360166626480702e-02, + 1.109312293624700047e-02, + 1.109262621468599941e-02, + 1.109211150330836025e-02, + 1.109157880386971162e-02, + 1.109102811815488969e-02, + 1.109045944797773173e-02, + 1.108987279518122183e-02, + 1.108926816163746318e-02, + 1.108864554924763116e-02, + 1.108800495994195605e-02, + 1.108734639567982537e-02, + 1.108666985844965376e-02, + 1.108597535026892116e-02, + 1.108526287318421441e-02, + 1.108453242927118568e-02, + 1.108378402063450729e-02, + 1.108301764940790822e-02, + 1.108223331775424689e-02, + 1.108143102786530824e-02, + 1.108061078196204488e-02, + 1.107977258229429253e-02, + 1.107891643114107712e-02, + 1.107804233081035976e-02, + 1.107715028363909227e-02, + 1.107624029199331429e-02, + 1.107531235826807528e-02, + 1.107436648488734597e-02, + 1.107340267430415373e-02, + 1.107242092900048019e-02, + 1.107142125148742953e-02, + 1.107040364430489539e-02, + 1.106936811002187486e-02, + 1.106831465123625340e-02, + 1.106724327057494878e-02, + 1.106615397069381571e-02, + 1.106504675427764060e-02, + 1.106392162404020579e-02, + 1.106277858272417675e-02, + 1.106161763310116279e-02, + 1.106043877797177263e-02, + 1.105924202016546169e-02, + 1.105802736254065353e-02, + 1.105679480798458375e-02, + 1.105554435941351506e-02, + 1.105427601977259158e-02, + 1.105298979203578509e-02, + 1.105168567920597825e-02, + 1.105036368431493166e-02, + 1.104902381042337060e-02, + 1.104766606062070403e-02, + 1.104629043802540615e-02, + 1.104489694578460537e-02, + 1.104348558707445721e-02, + 1.104205636509983379e-02, + 1.104060928309449040e-02, + 1.103914434432102382e-02, + 1.103766155207083766e-02, + 1.103616090966411112e-02, + 1.103464242044986839e-02, + 1.103310608780598556e-02, + 1.103155191513899812e-02, + 1.102997990588433681e-02, + 1.102839006350618892e-02, + 1.102678239149753985e-02, + 1.102515689338001877e-02, + 1.102351357270416575e-02, + 1.102185243304917156e-02, + 1.102017347802305286e-02, + 1.101847671126244925e-02, + 1.101676213643284705e-02, + 1.101502975722832428e-02, + 1.101327957737183172e-02, + 1.101151160061489623e-02, + 1.100972583073779945e-02, + 1.100792227154950322e-02, + 1.100610092688767729e-02, + 1.100426180061860222e-02, + 1.100240489663727346e-02, + 1.100053021886734407e-02, + 1.099863777126114731e-02, + 1.099672755779956997e-02, + 1.099479958249228312e-02, + 1.099285384937742117e-02, + 1.099089036252184383e-02, + 1.098890912602095392e-02, + 1.098691014399886395e-02, + 1.098489342060821050e-02, + 1.098285896003016460e-02, + 1.098080676647462603e-02, + 1.097873684417990763e-02, + 1.097664919741303015e-02, + 1.097454383046938056e-02, + 1.097242074767310407e-02, + 1.097027995337676760e-02, + 1.096812145196151243e-02, + 1.096594524783690502e-02, + 1.096375134544110355e-02, + 1.096153974924082147e-02, + 1.095931046373116793e-02, + 1.095706349343575879e-02, + 1.095479884290674957e-02, + 1.095251651672467068e-02, + 1.095021651949861126e-02, + 1.094789885586597462e-02, + 1.094556353049279049e-02, + 1.094321054807336456e-02, + 1.094083991333049018e-02, + 1.093845163101538238e-02, + 1.093604570590761028e-02, + 1.093362214281525316e-02, + 1.093118094657460730e-02, + 1.092872212205052256e-02, + 1.092624567413604843e-02, + 1.092375160775274981e-02, + 1.092123992785043289e-02, + 1.091871063940727526e-02, + 1.091616374742983807e-02, + 1.091359925695284915e-02, + 1.091101717303957080e-02, + 1.090841750078135573e-02, + 1.090580024529802169e-02, + 1.090316541173755142e-02, + 1.090051300527620538e-02, + 1.089784303111858942e-02, + 1.089515549449747954e-02, + 1.089245040067395205e-02, + 1.088972775493720659e-02, + 1.088698756260483499e-02, + 1.088422982902257155e-02, + 1.088145455956423223e-02, + 1.087866175963200614e-02, + 1.087585143465617625e-02, + 1.087302359009516967e-02, + 1.087017823143566694e-02, + 1.086731536419237136e-02, + 1.086443499390830902e-02, + 1.086153712615441080e-02, + 1.085862176652992693e-02, + 1.085568892066206270e-02, + 1.085273859420625778e-02, + 1.084977079284597280e-02, + 1.084678552229269809e-02, + 1.084378278828608544e-02, + 1.084076259659377643e-02, + 1.083772495301149087e-02, + 1.083466986336295047e-02, + 1.083159733349997600e-02, + 1.082850736930230859e-02, + 1.082539997667767394e-02, + 1.082227516156194190e-02, + 1.081913292991880729e-02, + 1.081597328774003448e-02, + 1.081279624104519721e-02, + 1.080960179588205672e-02, + 1.080638995832606392e-02, + 1.080316073448072019e-02, + 1.079991413047743862e-02, + 1.079665015247550063e-02, + 1.079336880666213923e-02, + 1.079007009925233955e-02, + 1.078675403648903137e-02, + 1.078342062464305272e-02, + 1.078006987001297982e-02, + 1.077670177892533013e-02, + 1.077331635773427602e-02, + 1.076991361282202131e-02, + 1.076649355059838657e-02, + 1.076305617750097227e-02, + 1.075960149999536167e-02, + 1.075612952457464730e-02, + 1.075264025775980042e-02, + 1.074913370609950104e-02, + 1.074560987617018820e-02, + 1.074206877457596458e-02, + 1.073851040794862773e-02, + 1.073493478294771514e-02, + 1.073134190626041928e-02, + 1.072773178460165004e-02, + 1.072410442471371378e-02, + 1.072045983336698122e-02, + 1.071679801735906865e-02, + 1.071311898351544160e-02, + 1.070942273868906794e-02, + 1.070570928976046117e-02, + 1.070197864363787651e-02, + 1.069823080725696741e-02, + 1.069446578758099890e-02, + 1.069068359160073658e-02, + 1.068688422633462011e-02, + 1.068306769882843010e-02, + 1.067923401615547899e-02, + 1.067538318541669771e-02, + 1.067151521374030791e-02, + 1.066763010828208381e-02, + 1.066372787622530197e-02, + 1.065980852478052264e-02, + 1.065587206118598536e-02, + 1.065191849270695837e-02, + 1.064794782663651580e-02, + 1.064396007029477786e-02, + 1.063995523102947462e-02, + 1.063593331621558516e-02, + 1.063189433325536191e-02, + 1.062783828957861339e-02, + 1.062376519264215426e-02, + 1.061967504993038998e-02, + 1.061556786895479290e-02, + 1.061144365725430298e-02, + 1.060730242239499646e-02, + 1.060314417197016218e-02, + 1.059896891360051843e-02, + 1.059477665493377754e-02, + 1.059056740364502057e-02, + 1.058634116743634515e-02, + 1.058209795403729052e-02, + 1.057783777120432749e-02, + 1.057356062672112733e-02, + 1.056926652839863985e-02, + 1.056495548407475338e-02, + 1.056062750161462088e-02, + 1.055628258891028876e-02, + 1.055192075388113396e-02, + 1.054754200447341646e-02, + 1.054314634866047699e-02, + 1.053873379444281340e-02, + 1.053430434984772325e-02, + 1.052985802292985378e-02, + 1.052539482177040908e-02, + 1.052091475447792905e-02, + 1.051641782918779147e-02, + 1.051190405406235949e-02, + 1.050737343729081681e-02, + 1.050282598708939322e-02, + 1.049826171170122231e-02, + 1.049368061939626867e-02, + 1.048908271847134172e-02, + 1.048446801725026398e-02, + 1.047983652408356059e-02, + 1.047518824734873163e-02, + 1.047052319544985316e-02, + 1.046584137681807677e-02, + 1.046114279991118209e-02, + 1.045642747321371899e-02, + 1.045169540523713941e-02, + 1.044694660451944875e-02, + 1.044218107962557179e-02, + 1.043739883914687923e-02, + 1.043259989170174616e-02, + 1.042778424593497101e-02, + 1.042295191051824214e-02, + 1.041810289414970940e-02, + 1.041323720555423736e-02, + 1.040835485348338453e-02, + 1.040345584671515181e-02, + 1.039854019405424615e-02, + 1.039360790433184467e-02, + 1.038865898640588085e-02, + 1.038369344916062822e-02, + 1.037871130150691372e-02, + 1.037371255238222871e-02, + 1.036869721075036471e-02, + 1.036366528560163196e-02, + 1.035861678595295134e-02, + 1.035355172084751266e-02, + 1.034847009935511812e-02, + 1.034337193057165497e-02, + 1.033825722361984660e-02, + 1.033312598764839219e-02, + 1.032797823183271083e-02, + 1.032281396537430666e-02, + 1.031763319750104296e-02, + 1.031243593746733467e-02, + 1.030722219455361931e-02, + 1.030199197806678894e-02, + 1.029674529733981027e-02, + 1.029148216173219298e-02, + 1.028620258062943986e-02, + 1.028090656344333477e-02, + 1.027559411961196864e-02, + 1.027026525859946887e-02, + 1.026491998989619708e-02, + 1.025955832301860167e-02, + 1.025418026750944331e-02, + 1.024878583293744108e-02, + 1.024337502889734706e-02, + 1.023794786501027593e-02, + 1.023250435092306482e-02, + 1.022704449630900368e-02, + 1.022156831086693321e-02, + 1.021607580432212260e-02, + 1.021056698642555834e-02, + 1.020504186695446978e-02, + 1.019950045571184349e-02, + 1.019394276252661054e-02, + 1.018836879725383039e-02, + 1.018277856977430063e-02, + 1.017717208999463496e-02, + 1.017154936784765359e-02, + 1.016591041329172745e-02, + 1.016025523631116680e-02, + 1.015458384691606507e-02, + 1.014889625514252790e-02, + 1.014319247105217696e-02, + 1.013747250473250559e-02, + 1.013173636629686840e-02, + 1.012598406588418459e-02, + 1.012021561365935261e-02, + 1.011443101981257357e-02, + 1.010863029456008678e-02, + 1.010281344814357302e-02, + 1.009698049083060031e-02, + 1.009113143291417297e-02, + 1.008526628471282174e-02, + 1.007938505657104966e-02, + 1.007348775885840916e-02, + 1.006757440197053946e-02, + 1.006164499632817080e-02, + 1.005569955237793286e-02, + 1.004973808059169728e-02, + 1.004376059146683785e-02, + 1.003776709552640575e-02, + 1.003175760331867679e-02, + 1.002573212541744106e-02, + 1.001969067242182605e-02, + 1.001363325495647875e-02, + 1.000755988367151190e-02, + 1.000147056924194887e-02, + 9.995365322368656921e-03, + 9.989244153777561419e-03, + 9.983107074219829680e-03, + 9.976954094472179763e-03, + 9.970785225336254234e-03, + 9.964600477639355691e-03, + 9.958399862233457966e-03, + 9.952183389996257373e-03, + 9.945951071830319221e-03, + 9.939702918663598230e-03, + 9.933438941448989243e-03, + 9.927159151164585693e-03, + 9.920863558813733385e-03, + 9.914552175424697425e-03, + 9.908225012050830491e-03, + 9.901882079770572831e-03, + 9.895523389687452265e-03, + 9.889148952929969691e-03, + 9.882758780651501943e-03, + 9.876352884030659141e-03, + 9.869931274270783358e-03, + 9.863493962600236586e-03, + 9.857040960272220320e-03, + 9.850572278565049647e-03, + 9.844087928781681401e-03, + 9.837587922249946618e-03, + 9.831072270322777779e-03, + 9.824540984377544417e-03, + 9.817994075816838945e-03, + 9.811431556067517351e-03, + 9.804853436581632484e-03, + 9.798259728835896284e-03, + 9.791650444331591319e-03, + 9.785025594594768533e-03, + 9.778385191176110214e-03, + 9.771729245651197132e-03, + 9.765057769619946496e-03, + 9.758370774706955422e-03, + 9.751668272561608494e-03, + 9.744950274857751629e-03, + 9.738216793293714632e-03, + 9.731467839592401400e-03, + 9.724703425501411355e-03, + 9.717923562792579739e-03, + 9.711128263262340174e-03, + 9.704317538731684761e-03, + 9.697491401045831017e-03, + 9.690649862074735346e-03, + 9.683792933712211809e-03, + 9.676920627877052747e-03, + 9.670032956511963665e-03, + 9.663129931584302224e-03, + 9.656211565085531801e-03, + 9.649277869031362004e-03, + 9.642328855462060921e-03, + 9.635364536441915623e-03, + 9.628384924059455938e-03, + 9.621390030427405884e-03, + 9.614379867682905714e-03, + 9.607354447986994964e-03, + 9.600313783524907357e-03, + 9.593257886506199178e-03, + 9.586186769164315585e-03, + 9.579100443756767558e-03, + 9.571998922565399040e-03, + 9.564882217895767647e-03, + 9.557750342077835082e-03, + 9.550603307465023450e-03, + 9.543441126435243949e-03, + 9.536263811390039910e-03, + 9.529071374755121102e-03, + 9.521863828979971675e-03, + 9.514641186537926495e-03, + 9.507403459926459105e-03, + 9.500150661666408036e-03, + 9.492882804302969074e-03, + 9.485599900404741158e-03, + 9.478301962564446292e-03, + 9.470989003398284228e-03, + 9.463661035546241246e-03, + 9.456318071672284442e-03, + 9.448960124463756313e-03, + 9.441587206631858742e-03, + 9.434199330911274828e-03, + 9.426796510060592160e-03, + 9.419378756861827504e-03, + 9.411946084120499656e-03, + 9.404498504665972924e-03, + 9.397036031350823951e-03, + 9.389558677051618868e-03, + 9.382066454667775321e-03, + 9.374559377122769835e-03, + 9.367037457363237493e-03, + 9.359500708359240820e-03, + 9.351949143104526518e-03, + 9.344382774615802092e-03, + 9.336801615933683005e-03, + 9.329205680121476635e-03, + 9.321594980266332403e-03, + 9.313969529478613799e-03, + 9.306329340891761337e-03, + 9.298674427662630831e-03, + 9.291004802971156856e-03, + 9.283320480020765611e-03, + 9.275621472037816340e-03, + 9.267907792271854600e-03, + 9.260179453995747573e-03, + 9.252436470505222624e-03, + 9.244678855119517827e-03, + 9.236906621180276944e-03, + 9.229119782052904244e-03, + 9.221318351125417853e-03, + 9.213502341808840063e-03, + 9.205671767537434991e-03, + 9.197826641768123979e-03, + 9.189966977981186419e-03, + 9.182092789679147798e-03, + 9.174204090388077271e-03, + 9.166300893656496515e-03, + 9.158383213056092709e-03, + 9.150451062181100964e-03, + 9.142504454648604437e-03, + 9.134543404098634939e-03, + 9.126567924193815587e-03, + 9.118578028619487436e-03, + 9.110573731083688662e-03, + 9.102555045317354057e-03, + 9.094521985073850123e-03, + 9.086474564129136400e-03, + 9.078412796282046490e-03, + 9.070336695353779788e-03, + 9.062246275188059336e-03, + 9.054141549651456219e-03, + 9.046022532632648841e-03, + 9.037889238043269463e-03, + 9.029741679816823477e-03, + 9.021579871909865544e-03, + 9.013403828300937948e-03, + 9.005213562991281825e-03, + 8.997009090004347981e-03, + 8.988790423385828107e-03, + 8.980557577204072855e-03, + 8.972310565549455191e-03, + 8.964049402534699992e-03, + 8.955774102294714045e-03, + 8.947484678986893092e-03, + 8.939181146790551105e-03, + 8.930863519907237744e-03, + 8.922531812560854578e-03, + 8.914186038997269981e-03, + 8.905826213484398929e-03, + 8.897452350312300140e-03, + 8.889064463793283632e-03, + 8.880662568261445816e-03, + 8.872246678072891538e-03, + 8.863816807605964798e-03, + 8.855372971260664153e-03, + 8.846915183459305373e-03, + 8.838443458645548270e-03, + 8.829957811285529465e-03, + 8.821458255866837170e-03, + 8.812944806899234568e-03, + 8.804417478914009290e-03, + 8.795876286464268320e-03, + 8.787321244125189529e-03, + 8.778752366493355538e-03, + 8.770169668187093731e-03, + 8.761573163846691353e-03, + 8.752962868133829996e-03, + 8.744338795731923866e-03, + 8.735700961345911619e-03, + 8.727049379702603304e-03, + 8.718384065550088824e-03, + 8.709705033658015488e-03, + 8.701012298817804858e-03, + 8.692305875842023036e-03, + 8.683585779565145685e-03, + 8.674852024842425249e-03, + 8.666104626551242307e-03, + 8.657343599589834016e-03, + 8.648568958878225660e-03, + 8.639780719357441352e-03, + 8.630978895989887406e-03, + 8.622163503759622954e-03, + 8.613334557671263603e-03, + 8.604492072751355330e-03, + 8.595636064047219166e-03, + 8.586766546627681504e-03, + 8.577883535582466953e-03, + 8.568987046022455076e-03, + 8.560077093079907634e-03, + 8.551153691907904808e-03, + 8.542216857680608871e-03, + 8.533266605593227763e-03, + 8.524302950862108763e-03, + 8.515325908724677775e-03, + 8.506335494438738501e-03, + 8.497331723283726643e-03, + 8.488314610559556314e-03, + 8.479284171587057189e-03, + 8.470240421708191345e-03, + 8.461183376285343755e-03, + 8.452113050702217412e-03, + 8.443029460362558303e-03, + 8.433932620691622986e-03, + 8.424822547134827241e-03, + 8.415699255158689759e-03, + 8.406562760250143457e-03, + 8.397413077916740173e-03, + 8.388250223686926493e-03, + 8.379074213109495572e-03, + 8.369885061753842143e-03, + 8.360682785209863632e-03, + 8.351467399088215171e-03, + 8.342238919019777030e-03, + 8.332997360655855848e-03, + 8.323742739668543722e-03, + 8.314475071749970539e-03, + 8.305194372612794904e-03, + 8.295900657989942195e-03, + 8.286593943634932430e-03, + 8.277274245321273108e-03, + 8.267941578842787076e-03, + 8.258595960013841511e-03, + 8.249237404668572499e-03, + 8.239865928661863417e-03, + 8.230481547868075121e-03, + 8.221084278182230753e-03, + 8.211674135519476253e-03, + 8.202251135814764629e-03, + 8.192815295023221991e-03, + 8.183366629119937646e-03, + 8.173905154100260737e-03, + 8.164430885979309313e-03, + 8.154943840792011969e-03, + 8.145444034593647339e-03, + 8.135931483459068678e-03, + 8.126406203483024782e-03, + 8.116868210780074991e-03, + 8.107317521484904907e-03, + 8.097754151751668933e-03, + 8.088178117754278237e-03, + 8.078589435686671372e-03, + 8.068988121762108237e-03, + 8.059374192214059998e-03, + 8.049747663294866407e-03, + 8.040108551277274501e-03, + 8.030456872453099401e-03, + 8.020792643134161057e-03, + 8.011115879651429031e-03, + 8.001426598355490874e-03, + 7.991724815616670086e-03, + 7.982010547824462329e-03, + 7.972283811387904928e-03, + 7.962544622735327066e-03, + 7.952792998314755710e-03, + 7.943028954593239072e-03, + 7.933252508057158855e-03, + 7.923463675212518223e-03, + 7.913662472584242699e-03, + 7.903848916716643344e-03, + 7.894023024173085420e-03, + 7.884184811536382176e-03, + 7.874334295408586676e-03, + 7.864471492410223322e-03, + 7.854596419181691241e-03, + 7.844709092381906002e-03, + 7.834809528689265848e-03, + 7.824897744800857202e-03, + 7.814973757432775586e-03, + 7.805037583320484709e-03, + 7.795089239217634254e-03, + 7.785128741897511841e-03, + 7.775156108151747188e-03, + 7.765171354791313048e-03, + 7.755174498645566773e-03, + 7.745165556562742110e-03, + 7.735144545410125271e-03, + 7.725111482073406151e-03, + 7.715066383457111140e-03, + 7.705009266484303884e-03, + 7.694940148097084882e-03, + 7.684859045255756221e-03, + 7.674765974939291684e-03, + 7.664660954145497210e-03, + 7.654543999890340428e-03, + 7.644415129208775514e-03, + 7.634274359153508070e-03, + 7.624121706796473975e-03, + 7.613957189227521863e-03, + 7.603780823554955222e-03, + 7.593592626905761381e-03, + 7.583392616424791850e-03, + 7.573180809275822239e-03, + 7.562957222640017026e-03, + 7.552721873717561062e-03, + 7.542474779726708080e-03, + 7.532215957903659262e-03, + 7.521945425502940541e-03, + 7.511663199797009687e-03, + 7.501369298076874734e-03, + 7.491063737651193662e-03, + 7.480746535846707207e-03, + 7.470417710008513817e-03, + 7.460077277499224842e-03, + 7.449725255700007098e-03, + 7.439361662009127442e-03, + 7.428986513843587741e-03, + 7.418599828637772661e-03, + 7.408201623843899825e-03, + 7.397791916932405787e-03, + 7.387370725390962449e-03, + 7.376938066725634985e-03, + 7.366493958459377836e-03, + 7.356038418133692240e-03, + 7.345571463307080592e-03, + 7.335093111556221721e-03, + 7.324603380475037603e-03, + 7.314102287674998683e-03, + 7.303589850785498563e-03, + 7.293066087453116755e-03, + 7.282531015341969088e-03, + 7.271984652133593220e-03, + 7.261427015527268693e-03, + 7.250858123239328247e-03, + 7.240277993003441451e-03, + 7.229686642571064858e-03, + 7.219084089710526946e-03, + 7.208470352207453115e-03, + 7.197845447865101366e-03, + 7.187209394503452434e-03, + 7.176562209960297457e-03, + 7.165903912089721835e-03, + 7.155234518763834740e-03, + 7.144554047871182721e-03, + 7.133862517317879001e-03, + 7.123159945026803774e-03, + 7.112446348937717829e-03, + 7.101721747007828933e-03, + 7.090986157210882844e-03, + 7.080239597537684587e-03, + 7.069482085995814832e-03, + 7.058713640610086992e-03, + 7.047934279421747515e-03, + 7.037144020488889616e-03, + 7.026342881886720425e-03, + 7.015530881706816789e-03, + 7.004708038057603191e-03, + 6.993874369064086334e-03, + 6.983029892868217701e-03, + 6.972174627628288136e-03, + 6.961308591519126468e-03, + 6.950431802732508040e-03, + 6.939544279476237039e-03, + 6.928646039975241110e-03, + 6.917737102470053467e-03, + 6.906817485218530277e-03, + 6.895887206494252103e-03, + 6.884946284587754699e-03, + 6.873994737805477762e-03, + 6.863032584470237646e-03, + 6.852059842921594257e-03, + 6.841076531514526590e-03, + 6.830082668620915919e-03, + 6.819078272628812873e-03, + 6.808063361942124324e-03, + 6.797037954980987215e-03, + 6.786002070181582947e-03, + 6.774955725996492130e-03, + 6.763898940893982477e-03, + 6.752831733358306311e-03, + 6.741754121890129910e-03, + 6.730666125005484862e-03, + 6.719567761237004062e-03, + 6.708459049132306680e-03, + 6.697340007255764976e-03, + 6.686210654186926575e-03, + 6.675071008521643763e-03, + 6.663921088871161032e-03, + 6.652760913862442067e-03, + 6.641590502138649404e-03, + 6.630409872357788739e-03, + 6.619219043194291864e-03, + 6.608018033337631492e-03, + 6.596806861493371629e-03, + 6.585585546382202206e-03, + 6.574354106740341527e-03, + 6.563112561319884089e-03, + 6.551860928887976582e-03, + 6.540599228227314023e-03, + 6.529327478135890823e-03, + 6.518045697427261864e-03, + 6.506753904930458361e-03, + 6.495452119489035503e-03, + 6.484140359962730846e-03, + 6.472818645225955105e-03, + 6.461486994168372418e-03, + 6.450145425695172699e-03, + 6.438793958726162642e-03, + 6.427432612196927117e-03, + 6.416061405057202870e-03, + 6.404680356272666152e-03, + 6.393289484823385348e-03, + 6.381888809704911250e-03, + 6.370478349927348981e-03, + 6.359058124515742233e-03, + 6.347628152510377715e-03, + 6.336188452966048761e-03, + 6.324739044952448243e-03, + 6.313279947553984695e-03, + 6.301811179870171753e-03, + 6.290332761014884831e-03, + 6.278844710116695919e-03, + 6.267347046319208387e-03, + 6.255839788780286764e-03, + 6.244322956672524252e-03, + 6.232796569182930471e-03, + 6.221260645513477031e-03, + 6.209715204880229301e-03, + 6.198160266513731524e-03, + 6.186595849659334671e-03, + 6.175021973576322147e-03, + 6.163438657538948019e-03, + 6.151845920834948626e-03, + 6.140243782767290312e-03, + 6.128632262652496283e-03, + 6.117011379821948522e-03, + 6.105381153620785366e-03, + 6.093741603408378560e-03, + 6.082092748558609076e-03, + 6.070434608459094293e-03, + 6.058767202511564434e-03, + 6.047090550132160069e-03, + 6.035404670750655828e-03, + 6.023709583810992960e-03, + 6.012005308770876008e-03, + 6.000291865102396448e-03, + 5.988569272291064706e-03, + 5.976837549836348795e-03, + 5.965096717251851255e-03, + 5.953346794064511179e-03, + 5.941587799815651987e-03, + 5.929819754059406298e-03, + 5.918042676364577287e-03, + 5.906256586312914371e-03, + 5.894461503500357871e-03, + 5.882657447536053692e-03, + 5.870844438042726286e-03, + 5.859022494657011720e-03, + 5.847191637028660571e-03, + 5.835351884821059210e-03, + 5.823503257710860304e-03, + 5.811645775388513645e-03, + 5.799779457557508074e-03, + 5.787904323934603065e-03, + 5.776020394250306646e-03, + 5.764127688247981142e-03, + 5.752226225684415641e-03, + 5.740316026329387970e-03, + 5.728397109966212875e-03, + 5.716469496391408944e-03, + 5.704533205413847737e-03, + 5.692588256856432986e-03, + 5.680634670554386700e-03, + 5.668672466356538923e-03, + 5.656701664124261751e-03, + 5.644722283731890868e-03, + 5.632734345067199125e-03, + 5.620737868029935906e-03, + 5.608732872533603482e-03, + 5.596719378503866270e-03, + 5.584697405879707026e-03, + 5.572666974612441523e-03, + 5.560628104666131416e-03, + 5.548580816017912969e-03, + 5.536525128657153114e-03, + 5.524461062585998491e-03, + 5.512388637819035445e-03, + 5.500307874383795689e-03, + 5.488218792319930588e-03, + 5.476121411679587582e-03, + 5.464015752527771018e-03, + 5.451901834941347280e-03, + 5.439779679010265170e-03, + 5.427649304835859348e-03, + 5.415510732532737709e-03, + 5.403363982227269574e-03, + 5.391209074058066208e-03, + 5.379046028176352919e-03, + 5.366874864744996740e-03, + 5.354695603939733754e-03, + 5.342508265947430897e-03, + 5.330312870967865782e-03, + 5.318109439212743983e-03, + 5.305897990905503875e-03, + 5.293678546281724295e-03, + 5.281451125588776732e-03, + 5.269215749086375231e-03, + 5.256972437045709032e-03, + 5.244721209749822477e-03, + 5.232462087493970626e-03, + 5.220195090584685976e-03, + 5.207920239340885216e-03, + 5.195637554092278482e-03, + 5.183347055181208168e-03, + 5.171048762961129308e-03, + 5.158742697797101366e-03, + 5.146428880066184625e-03, + 5.134107330156424502e-03, + 5.121778068468105759e-03, + 5.109441115412013436e-03, + 5.097096491411310694e-03, + 5.084744216899945470e-03, + 5.072384312323767637e-03, + 5.060016798139554094e-03, + 5.047641694815410349e-03, + 5.035259022831133947e-03, + 5.022868802677354916e-03, + 5.010471054856045769e-03, + 4.998065799880219671e-03, + 4.985653058274442176e-03, + 4.973232850574020245e-03, + 4.960805197325265058e-03, + 4.948370119085996818e-03, + 4.935927636424623614e-03, + 4.923477769920514384e-03, + 4.911020540164407443e-03, + 4.898555967757371385e-03, + 4.886084073312058421e-03, + 4.873604877450999143e-03, + 4.861118400808502049e-03, + 4.848624664028900605e-03, + 4.836123687767882040e-03, + 4.823615492691397076e-03, + 4.811100099476063249e-03, + 4.798577528809546550e-03, + 4.786047801389702733e-03, + 4.773510937925096002e-03, + 4.760966959134678086e-03, + 4.748415885748302583e-03, + 4.735857738505912240e-03, + 4.723292538157823454e-03, + 4.710720305465211123e-03, + 4.698141061199177966e-03, + 4.685554826141271473e-03, + 4.672961621083231501e-03, + 4.660361466827460386e-03, + 4.647754384186139967e-03, + 4.635140393981675676e-03, + 4.622519517047038277e-03, + 4.609891774224758598e-03, + 4.597257186368143567e-03, + 4.584615774339582256e-03, + 4.571967559012480101e-03, + 4.559312561269492949e-03, + 4.546650802003804684e-03, + 4.533982302118086394e-03, + 4.521307082524917038e-03, + 4.508625164147226673e-03, + 4.495936567916836678e-03, + 4.483241314776149379e-03, + 4.470539425677180941e-03, + 4.457830921581361870e-03, + 4.445115823459957691e-03, + 4.432394152293732403e-03, + 4.419665929073460231e-03, + 4.406931174799066930e-03, + 4.394189910480021839e-03, + 4.381442157135714312e-03, + 4.368687935794430231e-03, + 4.355927267494608818e-03, + 4.343160173283086220e-03, + 4.330386674217030600e-03, + 4.317606791362270727e-03, + 4.304820545794478190e-03, + 4.292027958598137842e-03, + 4.279229050867001428e-03, + 4.266423843704537748e-03, + 4.253612358222368800e-03, + 4.240794615542292471e-03, + 4.227970636794420312e-03, + 4.215140443118490718e-03, + 4.202304055662866265e-03, + 4.189461495584851161e-03, + 4.176612784051138803e-03, + 4.163757942236924470e-03, + 4.150896991326371091e-03, + 4.138029952512397615e-03, + 4.125156846996997327e-03, + 4.112277695991039227e-03, + 4.099392520713315662e-03, + 4.086501342392325625e-03, + 4.073604182264632841e-03, + 4.060701061575440821e-03, + 4.047792001578988386e-03, + 4.034877023537511431e-03, + 4.021956148722477184e-03, + 4.009029398412825192e-03, + 3.996096793897003022e-03, + 3.983158356471103168e-03, + 3.970214107440241287e-03, + 3.957264068117396540e-03, + 3.944308259823918993e-03, + 3.931346703889833198e-03, + 3.918379421652988179e-03, + 3.905406434459617743e-03, + 3.892427763663934559e-03, + 3.879443430628772872e-03, + 3.866453456724620093e-03, + 3.853457863330053516e-03, + 3.840456671832095936e-03, + 3.827449903625340915e-03, + 3.814437580112519603e-03, + 3.801419722704117363e-03, + 3.788396352818978324e-03, + 3.775367491883347380e-03, + 3.762333161331320348e-03, + 3.749293382605199156e-03, + 3.736248177154472255e-03, + 3.723197566437067094e-03, + 3.710141571917575064e-03, + 3.697080215069277649e-03, + 3.684013517372321939e-03, + 3.670941500315012557e-03, + 3.657864185392797288e-03, + 3.644781594108584526e-03, + 3.631693747973219893e-03, + 3.618600668504558162e-03, + 3.605502377227844460e-03, + 3.592398895676119763e-03, + 3.579290245389330112e-03, + 3.566176447914869586e-03, + 3.553057524807256336e-03, + 3.539933497628642602e-03, + 3.526804387947954280e-03, + 3.513670217341266066e-03, + 3.500531007392226023e-03, + 3.487386779690957068e-03, + 3.474237555835385342e-03, + 3.461083357429414406e-03, + 3.447924206084960076e-03, + 3.434760123420135033e-03, + 3.421591131060563312e-03, + 3.408417250638287425e-03, + 3.395238503792185995e-03, + 3.382054912168397029e-03, + 3.368866497419373794e-03, + 3.355673281204425186e-03, + 3.342475285189452482e-03, + 3.329272531047411214e-03, + 3.316065040457482401e-03, + 3.302852835105394777e-03, + 3.289635936683904874e-03, + 3.276414366891827312e-03, + 3.263188147434602487e-03, + 3.249957300023980419e-03, + 3.236721846378426675e-03, + 3.223481808222897291e-03, + 3.210237207287824392e-03, + 3.196988065310980582e-03, + 3.183734404035647950e-03, + 3.170476245211955538e-03, + 3.157213610595784731e-03, + 3.143946521949150894e-03, + 3.130675001040812699e-03, + 3.117399069644582500e-03, + 3.104118749541354225e-03, + 3.090834062517288858e-03, + 3.077545030365161447e-03, + 3.064251674883203616e-03, + 3.050954017875591884e-03, + 3.037652081152816298e-03, + 3.024345886530754087e-03, + 3.011035455831238654e-03, + 2.997720810881723472e-03, + 2.984401973515845435e-03, + 2.971078965572495918e-03, + 2.957751808896219321e-03, + 2.944420525337640687e-03, + 2.931085136752367183e-03, + 2.917745665002318203e-03, + 2.904402131953879619e-03, + 2.891054559479969404e-03, + 2.877702969458362323e-03, + 2.864347383772238107e-03, + 2.850987824310593881e-03, + 2.837624312967171672e-03, + 2.824256871641771596e-03, + 2.810885522238410449e-03, + 2.797510286667250715e-03, + 2.784131186843469535e-03, + 2.770748244687127725e-03, + 2.757361482123567038e-03, + 2.743970921083046296e-03, + 2.730576583501343781e-03, + 2.717178491318797927e-03, + 2.703776666480731464e-03, + 2.690371130937867315e-03, + 2.676961906645233986e-03, + 2.663549015563484394e-03, + 2.650132479657048377e-03, + 2.636712320896230852e-03, + 2.623288561255485759e-03, + 2.609861222713995028e-03, + 2.596430327256107028e-03, + 2.582995896870199457e-03, + 2.569557953550049775e-03, + 2.556116519292944787e-03, + 2.542671616101788330e-03, + 2.529223265983257269e-03, + 2.515771490949093424e-03, + 2.502316313015031518e-03, + 2.488857754201218107e-03, + 2.475395836532617508e-03, + 2.461930582038084590e-03, + 2.448462012750914248e-03, + 2.434990150708521775e-03, + 2.421515017953001017e-03, + 2.408036636530175908e-03, + 2.394555028490041523e-03, + 2.381070215887148758e-03, + 2.367582220779681449e-03, + 2.354091065230031875e-03, + 2.340596771304439497e-03, + 2.327099361073428543e-03, + 2.313598856611615018e-03, + 2.300095279996605159e-03, + 2.286588653310932685e-03, + 2.273078998640208712e-03, + 2.259566338074438414e-03, + 2.246050693706933346e-03, + 2.232532087634733417e-03, + 2.219010541959014118e-03, + 2.205486078784150202e-03, + 2.191958720218285112e-03, + 2.178428488372976656e-03, + 2.164895405363792026e-03, + 2.151359493309348923e-03, + 2.137820774331729290e-03, + 2.124279270556910394e-03, + 2.110735004113812024e-03, + 2.097187997134862016e-03, + 2.083638271755666651e-03, + 2.070085850115573143e-03, + 2.056530754356739391e-03, + 2.042973006624525592e-03, + 2.029412629067938768e-03, + 2.015849643838522973e-03, + 2.002284073091683755e-03, + 1.988715938984844146e-03, + 1.975145263679528498e-03, + 1.961572069339492883e-03, + 1.947996378132079267e-03, + 1.934418212227085546e-03, + 1.920837593797225257e-03, + 1.907254545018653409e-03, + 1.893669088069298333e-03, + 1.880081245130772911e-03, + 1.866491038387294282e-03, + 1.852898490025478486e-03, + 1.839303622234777407e-03, + 1.825706457207129001e-03, + 1.812107017137529327e-03, + 1.798505324223082999e-03, + 1.784901400663433182e-03, + 1.771295268661161881e-03, + 1.757686950420720698e-03, + 1.744076468149722116e-03, + 1.730463844057113926e-03, + 1.716849100355260236e-03, + 1.703232259258078600e-03, + 1.689613342982356240e-03, + 1.675992373746684706e-03, + 1.662369373771861898e-03, + 1.648744365281445880e-03, + 1.635117370500079352e-03, + 1.621488411655561124e-03, + 1.607857510976993219e-03, + 1.594224690696107935e-03, + 1.580589973046168896e-03, + 1.566953380262393024e-03, + 1.553314934582371212e-03, + 1.539674658245115957e-03, + 1.526032573491638593e-03, + 1.512388702564605595e-03, + 1.498743067708903885e-03, + 1.485095691170708635e-03, + 1.471446595197889191e-03, + 1.457795802040439499e-03, + 1.444143333949515556e-03, + 1.430489213177865400e-03, + 1.416833461980255204e-03, + 1.403176102612352762e-03, + 1.389517157332071252e-03, + 1.375856648397703321e-03, + 1.362194598070018805e-03, + 1.348531028610397940e-03, + 1.334865962282166243e-03, + 1.321199421349496207e-03, + 1.307531428077816915e-03, + 1.293862004734253361e-03, + 1.280191173586662807e-03, + 1.266518956904204860e-03, + 1.252845376957010788e-03, + 1.239170456016756199e-03, + 1.225494216355704335e-03, + 1.211816680247120893e-03, + 1.198137869965717897e-03, + 1.184457807786683551e-03, + 1.170776515986256218e-03, + 1.157094016841393952e-03, + 1.143410332630340675e-03, + 1.129725485631674891e-03, + 1.116039498124735347e-03, + 1.102352392390041269e-03, + 1.088664190708182357e-03, + 1.074974915361166881e-03, + 1.061284588630541890e-03, + 1.047593232799499821e-03, + 1.033900870151016052e-03, + 1.020207522969177267e-03, + 1.006513213538075789e-03, + 9.928179641422480318e-04, + 9.791217970670721815e-04, + 9.654247345978362194e-04, + 9.517267990201452562e-04, + 9.380280126203546700e-04, + 9.243283976846085282e-04, + 9.106279764994242975e-04, + 8.969267713513392852e-04, + 8.832248045274961089e-04, + 8.695220983146823100e-04, + 8.558186749997601312e-04, + 8.421145568700769959e-04, + 8.284097662123730658e-04, + 8.147043253141106897e-04, + 8.009982564616115273e-04, + 7.872915819421538296e-04, + 7.735843240421029499e-04, + 7.598765050482595481e-04, + 7.461681472467371172e-04, + 7.324592729234026024e-04, + 7.187499043642813510e-04, + 7.050400638546212287e-04, + 6.913297736794536946e-04, + 6.776190561232604088e-04, + 6.639079334705410293e-04, + 6.501964280048681127e-04, + 6.364845620093065922e-04, + 6.227723577668320626e-04, + 6.090598375593831880e-04, + 5.953470236684358947e-04, + 5.816339383746559934e-04, + 5.679206039583292818e-04, + 5.542070426991690989e-04, + 5.404932768752076198e-04, + 5.267793287647550091e-04, + 5.130652206445176795e-04, + 4.993509747909469308e-04, + 4.856366134791294318e-04, + 4.719221589832085415e-04, + 4.582076335769630555e-04, + 4.444930595320875535e-04, + 4.307784591202941794e-04, + 4.170638546114457533e-04, + 4.033492682748958998e-04, + 3.896347223783784455e-04, + 3.759202391884332393e-04, + 3.622058409708310512e-04, + 3.484915499896127527e-04, + 3.347773885076725086e-04, + 3.210633787864120795e-04, + 3.073495430863157200e-04, + 2.936359036660002005e-04, + 2.799224827826329301e-04, + 2.662093026923590777e-04, + 2.524963856491917289e-04, + 2.387837539063536669e-04, + 2.250714297144064196e-04, + 2.113594353233542349e-04, + 1.976477929809270298e-04, + 1.839365249331542586e-04, + 1.702256534247899745e-04, + 1.565152006982050998e-04, + 1.428051889947269855e-04, + 1.290956405527707881e-04, + 1.153865776097876461e-04, + 1.016780224011621677e-04, + 8.796999716002134055e-05, + 7.426252411765728930e-05, + 6.055562550318665296e-05, + 4.684932354412475140e-05, + 3.314364046543368290e-05, + 1.943859848994387553e-05, + 5.734219838777317318e-06, +-7.969473269758584085e-06, +-2.167245861883128496e-05, +-3.537471399495304255e-05, +-4.907621718587737821e-05, +-6.277694598231618598e-05, +-7.647687817736340628e-05, +-9.017599156607444355e-05, +-1.038742639465697079e-04, +-1.175716731186966893e-04, +-1.312681968858982683e-04, +-1.449638130531112341e-04, +-1.586584994286333755e-04, +-1.723522338227868357e-04, +-1.860449940490208412e-04, +-1.997367579234913290e-04, +-2.134275032646378641e-04, +-2.271172078941346474e-04, +-2.408058496363188971e-04, +-2.544934063185269515e-04, +-2.681798557705256862e-04, +-2.818651758254578301e-04, +-2.955493443194246827e-04, +-3.092323390910630050e-04, +-3.229141379824937495e-04, +-3.365947188387511204e-04, +-3.502740595081221451e-04, +-3.639521378417235101e-04, +-3.776289316936914595e-04, +-3.913044189222868673e-04, +-4.049785773879436743e-04, +-4.186513849551368053e-04, +-4.323228194910497930e-04, +-4.459928588666705815e-04, +-4.596614809563734578e-04, +-4.733286636375019047e-04, +-4.869943847913083337e-04, +-5.006586223023911124e-04, +-5.143213540590264388e-04, +-5.279825579526001116e-04, +-5.416422118785562062e-04, +-5.553002937359751041e-04, +-5.689567814271497860e-04, +-5.826116528585422068e-04, +-5.962648859402002116e-04, +-6.099164585861066492e-04, +-6.235663487136004074e-04, +-6.372145342443302947e-04, +-6.508609931038259128e-04, +-6.645057032210878283e-04, +-6.781486425296780630e-04, +-6.917897889663908624e-04, +-7.054291204731188243e-04, +-7.190666149947461854e-04, +-7.327022504810244913e-04, +-7.463360048852265595e-04, +-7.599678561652562685e-04, +-7.735977822832210572e-04, +-7.872257612048640194e-04, +-8.008517709012684871e-04, +-8.144757893469192593e-04, +-8.280977945208023092e-04, +-8.417177644065906156e-04, +-8.553356769922237099e-04, +-8.689515102702498502e-04, +-8.825652422372551884e-04, +-8.961768508947995458e-04, +-9.097863142490131977e-04, +-9.233936103101601572e-04, +-9.369987170937461212e-04, +-9.506016126191915152e-04, +-9.642022749116745291e-04, +-9.778006820000575798e-04, +-9.913968119187254683e-04, +-1.004990642706277181e-03, +-1.018582152406603478e-03, +-1.032171319068479450e-03, +-1.045758120744989675e-03, +-1.059342535495228464e-03, +-1.072924541382214722e-03, +-1.086504116474754393e-03, +-1.100081238846093009e-03, +-1.113655886575037196e-03, +-1.127228037745506674e-03, +-1.140797670446138312e-03, +-1.154364762771220923e-03, +-1.167929292820127580e-03, +-1.181491238697646076e-03, +-1.195050578513415359e-03, +-1.208607290382876379e-03, +-1.222161352426831679e-03, +-1.235712742771052268e-03, +-1.249261439547199844e-03, +-1.262807420892420214e-03, +-1.276350664948921109e-03, +-1.289891149865062024e-03, +-1.303428853794041898e-03, +-1.316963754895728814e-03, +-1.330495831334591126e-03, +-1.344025061281552743e-03, +-1.357551422912649372e-03, +-1.371074894410140473e-03, +-1.384595453962073411e-03, +-1.398113079761880784e-03, +-1.411627750009320425e-03, +-1.425139442909881910e-03, +-1.438648136675171017e-03, +-1.452153809522284574e-03, +-1.465656439674801201e-03, +-1.479156005362335926e-03, +-1.492652484820117340e-03, +-1.506145856289958394e-03, +-1.519636098019655967e-03, +-1.533123188263339765e-03, +-1.546607105280909831e-03, +-1.560087827338971569e-03, +-1.573565332710413116e-03, +-1.587039599673996382e-03, +-1.600510606515440385e-03, +-1.613978331526107202e-03, +-1.627442753004838816e-03, +-1.640903849255876106e-03, +-1.654361598590726274e-03, +-1.667815979326818000e-03, +-1.681266969788596053e-03, +-1.694714548307104307e-03, +-1.708158693219583068e-03, +-1.721599382870386309e-03, +-1.735036595610571410e-03, +-1.748470309797492146e-03, +-1.761900503795729364e-03, +-1.775327155976518965e-03, +-1.788750244718089735e-03, +-1.802169748405111271e-03, +-1.815585645429607965e-03, +-1.828997914190556764e-03, +-1.842406533093467148e-03, +-1.855811480551465553e-03, +-1.869212734983995844e-03, +-1.882610274818616921e-03, +-1.896004078488980902e-03, +-1.909394124436634413e-03, +-1.922780391109717331e-03, +-1.936162856964062382e-03, +-1.949541500462732618e-03, +-1.962916300075666885e-03, +-1.976287234280565182e-03, +-1.989654281562354583e-03, +-2.003017420413502354e-03, +-2.016376629333467129e-03, +-2.029731886829619619e-03, +-2.043083171416838848e-03, +-2.056430461617090189e-03, +-2.069773735960355604e-03, +-2.083112972984082871e-03, +-2.096448151233500437e-03, +-2.109779249261218431e-03, +-2.123106245627409943e-03, +-2.136429118900887852e-03, +-2.149747847657188394e-03, +-2.163062410480422974e-03, +-2.176372785961930723e-03, +-2.189678952701414310e-03, +-2.202980889306452045e-03, +-2.216278574392013898e-03, +-2.229571986582071751e-03, +-2.242861104507584084e-03, +-2.256145906808301824e-03, +-2.269426372131474242e-03, +-2.282702479132921007e-03, +-2.295974206476602414e-03, +-2.309241532834239476e-03, +-2.322504436886214680e-03, +-2.335762897321025985e-03, +-2.349016892835604272e-03, +-2.362266402134765610e-03, +-2.375511403932146267e-03, +-2.388751876949749085e-03, +-2.401987799917587423e-03, +-2.415219151574714285e-03, +-2.428445910667959874e-03, +-2.441668055953686266e-03, +-2.454885566195823265e-03, +-2.468098420167473463e-03, +-2.481306596650371434e-03, +-2.494510074434475207e-03, +-2.507708832319054375e-03, +-2.520902849111350454e-03, +-2.534092103628420890e-03, +-2.547276574695096427e-03, +-2.560456241145767867e-03, +-2.573631081823128403e-03, +-2.586801075579199267e-03, +-2.599966201274951563e-03, +-2.613126437779884296e-03, +-2.626281763972947679e-03, +-2.639432158742127232e-03, +-2.652577600984047396e-03, +-2.665718069605023215e-03, +-2.678853543519785739e-03, +-2.691984001653257089e-03, +-2.705109422938545543e-03, +-2.718229786318600034e-03, +-2.731345070745638554e-03, +-2.744455255180740499e-03, +-2.757560318594932600e-03, +-2.770660239967879645e-03, +-2.783754998289674713e-03, +-2.796844572558839902e-03, +-2.809928941784118304e-03, +-2.823008084983158212e-03, +-2.836081981183609466e-03, +-2.849150609422685873e-03, +-2.862213948746795706e-03, +-2.875271978212418176e-03, +-2.888324676885569136e-03, +-2.901372023842125909e-03, +-2.914413998167276511e-03, +-2.927450578956418675e-03, +-2.940481745314766499e-03, +-2.953507476356964905e-03, +-2.966527751207941391e-03, +-2.979542549002414664e-03, +-2.992551848885194755e-03, +-3.005555630010775785e-03, +-3.018553871543522456e-03, +-3.031546552658719550e-03, +-3.044533652540724888e-03, +-3.057515150384715764e-03, +-3.070491025395456850e-03, +-3.083461256788303309e-03, +-3.096425823788861217e-03, +-3.109384705632521791e-03, +-3.122337881565381227e-03, +-3.135285330843733727e-03, +-3.148227032734350356e-03, +-3.161162966513949516e-03, +-3.174093111470094233e-03, +-3.187017446900784496e-03, +-3.199935952114088197e-03, +-3.212848606428997649e-03, +-3.225755389174914372e-03, +-3.238656279691963513e-03, +-3.251551257330442205e-03, +-3.264440301451728126e-03, +-3.277323391427882683e-03, +-3.290200506641231641e-03, +-3.303071626485426342e-03, +-3.315936730364175619e-03, +-3.328795797692995270e-03, +-3.341648807897249114e-03, +-3.354495740413888493e-03, +-3.367336574690183316e-03, +-3.380171290184800191e-03, +-3.392999866367366144e-03, +-3.405822282717928685e-03, +-3.418638518728589915e-03, +-3.431448553901656016e-03, +-3.444252367750698894e-03, +-3.457049939800684556e-03, +-3.469841249587619220e-03, +-3.482626276658867641e-03, +-3.495405000572554630e-03, +-3.508177400898563388e-03, +-3.520943457218035904e-03, +-3.533703149123007363e-03, +-3.546456456217497288e-03, +-3.559203358116155153e-03, +-3.571943834446093986e-03, +-3.584677864844875491e-03, +-3.597405428962271220e-03, +-3.610126506459015745e-03, +-3.622841077007826673e-03, +-3.635549120293000893e-03, +-3.648250616009915837e-03, +-3.660945543866577293e-03, +-3.673633883581702529e-03, +-3.686315614886427703e-03, +-3.698990717523078370e-03, +-3.711659171246195141e-03, +-3.724320955822126890e-03, +-3.736976051028670365e-03, +-3.749624436655904589e-03, +-3.762266092505696467e-03, +-3.774900998391989178e-03, +-3.787529134140301713e-03, +-3.800150479588567613e-03, +-3.812765014586762431e-03, +-3.825372718996537282e-03, +-3.837973572692041958e-03, +-3.850567555559471743e-03, +-3.863154647497275569e-03, +-3.875734828415867625e-03, +-3.888308078237748353e-03, +-3.900874376898504081e-03, +-3.913433704345081407e-03, +-3.925986040537426947e-03, +-3.938531365447293410e-03, +-3.951069659059265257e-03, +-3.963600901370336292e-03, +-3.976125072389548841e-03, +-3.988642152138846368e-03, +-4.001152120652582550e-03, +-4.013654957977765003e-03, +-4.026150644173597318e-03, +-4.038639159312315194e-03, +-4.051120483478791792e-03, +-4.063594596770182116e-03, +-4.076061479296743534e-03, +-4.088521111181369141e-03, +-4.100973472559857509e-03, +-4.113418543580382725e-03, +-4.125856304404392112e-03, +-4.138286735206209849e-03, +-4.150709816172610221e-03, +-4.163125527503908768e-03, +-4.175533849412649962e-03, +-4.187934762125353205e-03, +-4.200328245880620252e-03, +-4.212714280930789264e-03, +-4.225092847540727441e-03, +-4.237463925988847573e-03, +-4.249827496566725531e-03, +-4.262183539578674393e-03, +-4.274532035342689003e-03, +-4.286872964189971519e-03, +-4.299206306464610494e-03, +-4.311532042524397063e-03, +-4.323850152740356563e-03, +-4.336160617496989667e-03, +-4.348463417191814409e-03, +-4.360758532236184114e-03, +-4.373045943054936109e-03, +-4.385325630085955446e-03, +-4.397597573781233948e-03, +-4.409861754605642892e-03, +-4.422118153038577526e-03, +-4.434366749572106990e-03, +-4.446607524712651791e-03, +-4.458840458979733933e-03, +-4.471065532907042908e-03, +-4.483282727041971658e-03, +-4.495492021945302584e-03, +-4.507693398192041956e-03, +-4.519886836370888214e-03, +-4.532072317084514732e-03, +-4.544249820949130061e-03, +-4.556419328595274175e-03, +-4.568580820667421209e-03, +-4.580734277823635126e-03, +-4.592879680736436203e-03, +-4.605017010092246794e-03, +-4.617146246591689700e-03, +-4.629267370949118054e-03, +-4.641380363893431518e-03, +-4.653485206167700707e-03, +-4.665581878528786419e-03, +-4.677670361748346647e-03, +-4.689750636611762780e-03, +-4.701822683919095434e-03, +-4.713886484484767006e-03, +-4.725942019136982267e-03, +-4.737989268719314771e-03, +-4.750028214088774375e-03, +-4.762058836117531550e-03, +-4.774081115691663178e-03, +-4.786095033712189917e-03, +-4.798100571094653793e-03, +-4.810097708768768660e-03, +-4.822086427679254592e-03, +-4.834066708785320944e-03, +-4.846038533060980334e-03, +-4.858001881494515214e-03, +-4.869956735089359980e-03, +-4.881903074863685500e-03, +-4.893840881850033964e-03, +-4.905770137096309401e-03, +-4.917690821664585932e-03, +-4.929602916632722792e-03, +-4.941506403092577569e-03, +-4.953401262151446889e-03, +-4.965287474931595439e-03, +-4.977165022569913361e-03, +-4.989033886218777539e-03, +-5.000894047045009033e-03, +-5.012745486231389228e-03, +-5.024588184974947656e-03, +-5.036422124488437388e-03, +-5.048247285999312405e-03, +-5.060063650750592362e-03, +-5.071871200000546004e-03, +-5.083669915022285234e-03, +-5.095459777104614264e-03, +-5.107240767551659254e-03, +-5.119012867682482329e-03, +-5.130776058832072113e-03, +-5.142530322350158042e-03, +-5.154275639602802841e-03, +-5.166011991970673872e-03, +-5.177739360850378003e-03, +-5.189457727654117267e-03, +-5.201167073809204004e-03, +-5.212867380759101700e-03, +-5.224558629962188123e-03, +-5.236240802893422398e-03, +-5.247913881042525278e-03, +-5.259577845915552538e-03, +-5.271232679033789094e-03, +-5.282878361934638910e-03, +-5.294514876171322292e-03, +-5.306142203312476033e-03, +-5.317760324942975673e-03, +-5.329369222663427226e-03, +-5.340968878090489834e-03, +-5.352559272856366630e-03, +-5.364140388609604446e-03, +-5.375712207014727781e-03, +-5.387274709751914414e-03, +-5.398827878517774292e-03, +-5.410371695024862940e-03, +-5.421906141001966821e-03, +-5.433431198193756397e-03, +-5.444946848360936176e-03, +-5.456453073281204019e-03, +-5.467949854747509476e-03, +-5.479437174569780702e-03, +-5.490915014573644233e-03, +-5.502383356601445001e-03, +-5.513842182511888984e-03, +-5.525291474179606921e-03, +-5.536731213496065042e-03, +-5.548161382368979599e-03, +-5.559581962722695038e-03, +-5.570992936497600259e-03, +-5.582394285650995117e-03, +-5.593785992156740002e-03, +-5.605168038004829968e-03, +-5.616540405202292453e-03, +-5.627903075772604409e-03, +-5.639256031756035778e-03, +-5.650599255209149026e-03, +-5.661932728205602318e-03, +-5.673256432835780023e-03, +-5.684570351206473526e-03, +-5.695874465441732974e-03, +-5.707168757681825577e-03, +-5.718453210084727470e-03, +-5.729727804824446234e-03, +-5.740992524092457250e-03, +-5.752247350096741790e-03, +-5.763492265062577190e-03, +-5.774727251232208980e-03, +-5.785952290864438026e-03, +-5.797167366235971009e-03, +-5.808372459639824480e-03, +-5.819567553386251202e-03, +-5.830752629802876327e-03, +-5.841927671234358257e-03, +-5.853092660042667067e-03, +-5.864247578606603985e-03, +-5.875392409322577683e-03, +-5.886527134604276415e-03, +-5.897651736882290711e-03, +-5.908766198605049265e-03, +-5.919870502237706972e-03, +-5.930964630263630723e-03, +-5.942048565182793049e-03, +-5.953122289513143421e-03, +-5.964185785789620324e-03, +-5.975239036565069793e-03, +-5.986282024409776172e-03, +-5.997314731911117767e-03, +-6.008337141674881775e-03, +-6.019349236323611081e-03, +-6.030350998498069243e-03, +-6.041342410856198782e-03, +-6.052323456073946048e-03, +-6.063294116845040910e-03, +-6.074254375880504958e-03, +-6.085204215909498053e-03, +-6.096143619678886377e-03, +-6.107072569953436725e-03, +-6.117991049515386290e-03, +-6.128899041165238905e-03, +-6.139796527721378197e-03, +-6.150683492019714572e-03, +-6.161559916914529159e-03, +-6.172425785277890938e-03, +-6.183281080000071345e-03, +-6.194125783989057679e-03, +-6.204959880170813312e-03, +-6.215783351490087802e-03, +-6.226596180908922432e-03, +-6.237398351408095232e-03, +-6.248189845986018565e-03, +-6.258970647659724447e-03, +-6.269740739464409185e-03, +-6.280500104453179237e-03, +-6.291248725697780667e-03, +-6.301986586288094334e-03, +-6.312713669332490653e-03, +-6.323429957957292687e-03, +-6.334135435307583668e-03, +-6.344830084546852246e-03, +-6.355513888856634264e-03, +-6.366186831437298591e-03, +-6.376848895507569205e-03, +-6.387500064304788006e-03, +-6.398140321084508884e-03, +-6.408769649121149117e-03, +-6.419388031707762982e-03, +-6.429995452155629759e-03, +-6.440591893795159263e-03, +-6.451177339974837992e-03, +-6.461751774062627317e-03, +-6.472315179444469019e-03, +-6.482867539525539492e-03, +-6.493408837729352893e-03, +-6.503939057498612022e-03, +-6.514458182294769438e-03, +-6.524966195597827097e-03, +-6.535463080906993814e-03, +-6.545948821740353064e-03, +-6.556423401634619251e-03, +-6.566886804145743127e-03, +-6.577339012848584798e-03, +-6.587780011337088931e-03, +-6.598209783223889235e-03, +-6.608628312141039650e-03, +-6.619035581739653520e-03, +-6.629431575689594819e-03, +-6.639816277680336831e-03, +-6.650189671419920456e-03, +-6.660551740636384485e-03, +-6.670902469076167920e-03, +-6.681241840505495154e-03, +-6.691569838709410592e-03, +-6.701886447492574894e-03, +-6.712191650678951856e-03, +-6.722485432111410288e-03, +-6.732767775652936590e-03, +-6.743038665185129878e-03, +-6.753298084609554199e-03, +-6.763546017846756679e-03, +-6.773782448837074172e-03, +-6.784007361540360034e-03, +-6.794220739935573003e-03, +-6.804422568021636746e-03, +-6.814612829816842250e-03, +-6.824791509359214720e-03, +-6.834958590706017439e-03, +-6.845114057934528935e-03, +-6.855257895141683017e-03, +-6.865390086443717496e-03, +-6.875510615977043286e-03, +-6.885619467897399586e-03, +-6.895716626380568592e-03, +-6.905802075622110951e-03, +-6.915875799837009272e-03, +-6.925937783260785290e-03, +-6.935988010148085199e-03, +-6.946026464773976360e-03, +-6.956053131432982789e-03, +-6.966067994439888340e-03, +-6.976071038129465218e-03, +-6.986062246856065451e-03, +-6.996041604994460497e-03, +-7.006009096939257511e-03, +-7.015964707105280980e-03, +-7.025908419927087874e-03, +-7.035840219859642447e-03, +-7.045760091378080320e-03, +-7.055668018977299082e-03, +-7.065563987172842134e-03, +-7.075447980499894284e-03, +-7.085319983514659116e-03, +-7.095179980792752639e-03, +-7.105027956930554632e-03, +-7.114863896544714253e-03, +-7.124687784271885489e-03, +-7.134499604769460081e-03, +-7.144299342714714902e-03, +-7.154086982806001117e-03, +-7.163862509761387623e-03, +-7.173625908319903981e-03, +-7.183377163240564633e-03, +-7.193116259303234533e-03, +-7.202843181308303880e-03, +-7.212557914076322962e-03, +-7.222260442448740284e-03, +-7.231950751287567758e-03, +-7.241628825475149127e-03, +-7.251294649914820888e-03, +-7.260948209530070085e-03, +-7.270589489265763365e-03, +-7.280218474086756590e-03, +-7.289835148979058842e-03, +-7.299439498949379657e-03, +-7.309031509024889635e-03, +-7.318611164253979381e-03, +-7.328178449705340103e-03, +-7.337733350469210006e-03, +-7.347275851655944885e-03, +-7.356805938397325238e-03, +-7.366323595845605636e-03, +-7.375828809174304022e-03, +-7.385321563577864311e-03, +-7.394801844271361481e-03, +-7.404269636491290878e-03, +-7.413724925494911619e-03, +-7.423167696560743593e-03, +-7.432597934988018420e-03, +-7.442015626097384616e-03, +-7.451420755230575392e-03, +-7.460813307750130234e-03, +-7.470193269040117413e-03, +-7.479560624505636121e-03, +-7.488915359573115708e-03, +-7.498257459689978283e-03, +-7.507586910324774016e-03, +-7.516903696968001668e-03, +-7.526207805130658360e-03, +-7.535499220345651637e-03, +-7.544777928166716136e-03, +-7.554043914169330382e-03, +-7.563297163950339491e-03, +-7.572537663127629909e-03, +-7.581765397340909166e-03, +-7.590980352251185462e-03, +-7.600182513541001855e-03, +-7.609371866914152634e-03, +-7.618548398096209803e-03, +-7.627712092834313187e-03, +-7.636862936896793123e-03, +-7.646000916073982315e-03, +-7.655126016177563573e-03, +-7.664238223041078962e-03, +-7.673337522519347795e-03, +-7.682423900489137106e-03, +-7.691497342848980373e-03, +-7.700557835518760316e-03, +-7.709605364440517278e-03, +-7.718639915577522881e-03, +-7.727661474915563725e-03, +-7.736670028461501564e-03, +-7.745665562244511033e-03, +-7.754648062315227901e-03, +-7.763617514746441219e-03, +-7.772573905632817505e-03, +-7.781517221090557268e-03, +-7.790447447258448850e-03, +-7.799364570296558712e-03, +-7.808268576387414513e-03, +-7.817159451735132547e-03, +-7.826037182566150663e-03, +-7.834901755128931625e-03, +-7.843753155693692497e-03, +-7.852591370553050829e-03, +-7.861416386021667299e-03, +-7.870228188436103473e-03, +-7.879026764155385582e-03, +-7.887812099560232576e-03, +-7.896584181054246143e-03, +-7.905342995062522929e-03, +-7.914088528032901804e-03, +-7.922820766435023643e-03, +-7.931539696761143177e-03, +-7.940245305525780312e-03, +-7.948937579265366246e-03, +-7.957616504539339816e-03, +-7.966282067928829105e-03, +-7.974934256037780750e-03, +-7.983573055492172374e-03, +-7.992198452940690867e-03, +-8.000810435054427072e-03, +-8.009408988526606904e-03, +-8.017994100073302585e-03, +-8.026565756432926108e-03, +-8.035123944366491175e-03, +-8.043668650657262789e-03, +-8.052199862111371342e-03, +-8.060717565557512509e-03, +-8.069221747846669693e-03, +-8.077712395852712501e-03, +-8.086189496472113991e-03, +-8.094653036624065157e-03, +-8.103103003250176559e-03, +-8.111539383314774962e-03, +-8.119962163805366506e-03, +-8.128371331731606281e-03, +-8.136766874126318341e-03, +-8.145148778044754984e-03, +-8.153517030565254203e-03, +-8.161871618788936120e-03, +-8.170212529839510421e-03, +-8.178539750863784638e-03, +-8.186853269031344957e-03, +-8.195153071534797343e-03, +-8.203439145589377229e-03, +-8.211711478433499425e-03, +-8.219970057328562091e-03, +-8.228214869558636221e-03, +-8.236445902431055455e-03, +-8.244663143276095146e-03, +-8.252866579447152781e-03, +-8.261056198320376742e-03, +-8.269231987295250913e-03, +-8.277393933794400388e-03, +-8.285542025263220242e-03, +-8.293676249170633605e-03, +-8.301796593008238176e-03, +-8.309903044291437266e-03, +-8.317995590558201202e-03, +-8.326074219370122043e-03, +-8.334138918311652031e-03, +-8.342189674990792281e-03, +-8.350226477038764916e-03, +-8.358249312109822249e-03, +-8.366258167881770666e-03, +-8.374253032055764198e-03, +-8.382233892355961044e-03, +-8.390200736530172357e-03, +-8.398153552349544790e-03, +-8.406092327608596926e-03, +-8.414017050125106520e-03, +-8.421927707740443567e-03, +-8.429824288319500911e-03, +-8.437706779750333425e-03, +-8.445575169944827612e-03, +-8.453429446837950473e-03, +-8.461269598388819826e-03, +-8.469095612579413679e-03, +-8.476907477415784528e-03, +-8.484705180927152104e-03, +-8.492488711166625015e-03, +-8.500258056210914515e-03, +-8.508013204159994500e-03, +-8.515754143138130200e-03, +-8.523480861292632646e-03, +-8.531193346794885626e-03, +-8.538891587839719452e-03, +-8.546575572645879332e-03, +-8.554245289455844961e-03, +-8.561900726535620620e-03, +-8.569541872175224367e-03, +-8.577168714688413950e-03, +-8.584781242412792626e-03, +-8.592379443709566300e-03, +-8.599963306964039655e-03, +-8.607532820585380232e-03, +-8.615087973006344338e-03, +-8.622628752684003903e-03, +-8.630155148098925949e-03, +-8.637667147755897709e-03, +-8.645164740183673355e-03, +-8.652647913934607971e-03, +-8.660116657585649816e-03, +-8.667570959737143366e-03, +-8.675010809013911778e-03, +-8.682436194064413817e-03, +-8.689847103561488054e-03, +-8.697243526201990302e-03, +-8.704625450706628825e-03, +-8.711992865820467405e-03, +-8.719345760312620028e-03, +-8.726684122976434768e-03, +-8.734007942629093066e-03, +-8.741317208112310555e-03, +-8.748611908291908587e-03, +-8.755892032057701474e-03, +-8.763157568324049865e-03, +-8.770408506029128692e-03, +-8.777644834135992294e-03, +-8.784866541631347961e-03, +-8.792073617526532589e-03, +-8.799266050857207366e-03, +-8.806443830683094096e-03, +-8.813606946088594490e-03, +-8.820755386182047714e-03, +-8.827889140096757334e-03, +-8.835008196989797835e-03, +-8.842112546043119636e-03, +-8.849202176462740710e-03, +-8.856277077479348531e-03, +-8.863337238348091909e-03, +-8.870382648348405785e-03, +-8.877413296784370314e-03, +-8.884429172984579029e-03, +-8.891430266301980981e-03, +-8.898416566114307480e-03, +-8.905388061823447596e-03, +-8.912344742856459501e-03, +-8.919286598664387389e-03, +-8.926213618723231186e-03, +-8.933125792533542359e-03, +-8.940023109620326772e-03, +-8.946905559533547755e-03, +-8.953773131847395789e-03, +-8.960625816161344945e-03, +-8.967463602098952463e-03, +-8.974286479308939482e-03, +-8.981094437464379188e-03, +-8.987887466263382030e-03, +-8.994665555428743575e-03, +-9.001428694707894196e-03, +-9.008176873873167956e-03, +-9.014910082721731485e-03, +-9.021628311075554491e-03, +-9.028331548781286589e-03, +-9.035019785710604254e-03, +-9.041693011760068566e-03, +-9.048351216850847659e-03, +-9.054994390929339484e-03, +-9.061622523966667009e-03, +-9.068235605958976583e-03, +-9.074833626927241922e-03, +-9.081416576917281450e-03, +-9.087984446000323818e-03, +-9.094537224272076364e-03, +-9.101074901853635837e-03, +-9.107597468890770223e-03, +-9.114104915554543246e-03, +-9.120597232041024668e-03, +-9.127074408571134168e-03, +-9.133536435391055933e-03, +-9.139983302772058255e-03, +-9.146415001010519547e-03, +-9.152831520427721912e-03, +-9.159232851370357684e-03, +-9.165618984210133907e-03, +-9.171989909343846933e-03, +-9.178345617193578443e-03, +-9.184686098206567076e-03, +-9.191011342855324659e-03, +-9.197321341637327424e-03, +-9.203616085075560713e-03, +-9.209895563718208458e-03, +-9.216159768138510941e-03, +-9.222408688935227958e-03, +-9.228642316732121875e-03, +-9.234860642178687948e-03, +-9.241063655949288691e-03, +-9.247251348743936242e-03, +-9.253423711287692144e-03, +-9.259580734331213786e-03, +-9.265722408650497663e-03, +-9.271848725046695494e-03, +-9.277959674346769950e-03, +-9.284055247402653310e-03, +-9.290135435092048907e-03, +-9.296200228317820502e-03, +-9.302249618008465865e-03, +-9.308283595117931158e-03, +-9.314302150625498183e-03, +-9.320305275536103565e-03, +-9.326292960880201710e-03, +-9.332265197713513274e-03, +-9.338221977117623640e-03, +-9.344163290199313313e-03, +-9.350089128091350690e-03, +-9.355999481951640315e-03, +-9.361894342964003496e-03, +-9.367773702337560751e-03, +-9.373637551307255691e-03, +-9.379485881133700631e-03, +-9.385318683102782805e-03, +-9.391135948526576835e-03, +-9.396937668742359404e-03, +-9.402723835113356923e-03, +-9.408494439028218179e-03, +-9.414249471901546887e-03, +-9.419988925173610264e-03, +-9.425712790310234943e-03, +-9.431421058803145241e-03, +-9.437113722169772345e-03, +-9.442790771953356657e-03, +-9.448452199722736158e-03, +-9.454097997072726314e-03, +-9.459728155623922316e-03, +-9.465342667022555098e-03, +-9.470941522940888591e-03, +-9.476524715076910937e-03, +-9.482092235154554807e-03, +-9.487644074923463205e-03, +-9.493180226159123047e-03, +-9.498700680663271084e-03, +-9.504205430263038684e-03, +-9.509694466811885113e-03, +-9.515167782188856810e-03, +-9.520625368299154637e-03, +-9.526067217073915308e-03, +-9.531493320470032712e-03, +-9.536903670470584654e-03, +-9.542298259084532747e-03, +-9.547677078346887211e-03, +-9.553040120318516057e-03, +-9.558387377086436515e-03, +-9.563718840763733506e-03, +-9.569034503489309840e-03, +-9.574334357428338979e-03, +-9.579618394771942380e-03, +-9.584886607737418476e-03, +-9.590138988567928693e-03, +-9.595375529532971029e-03, +-9.600596222928038312e-03, +-9.605801061074644223e-03, +-9.610990036320670241e-03, +-9.616163141039812262e-03, +-9.621320367632314394e-03, +-9.626461708524210875e-03, +-9.631587156167954050e-03, +-9.636696703041977216e-03, +-9.641790341651083202e-03, +-9.646868064526260486e-03, +-9.651929864224540953e-03, +-9.656975733329360712e-03, +-9.662005664450372747e-03, +-9.667019650223327223e-03, +-9.672017683310413227e-03, +-9.676999756400019373e-03, +-9.681965862206841356e-03, +-9.686915993471732766e-03, +-9.691850142961998260e-03, +-9.696768303471228756e-03, +-9.701670467819223376e-03, +-9.706556628852291285e-03, +-9.711426779442821483e-03, +-9.716280912489945465e-03, +-9.721119020918744455e-03, +-9.725941097680953704e-03, +-9.730747135754509725e-03, +-9.735537128143852137e-03, +-9.740311067879850807e-03, +-9.745068948019569924e-03, +-9.749810761646859544e-03, +-9.754536501871646087e-03, +-9.759246161830530814e-03, +-9.763939734686366556e-03, +-9.768617213628665377e-03, +-9.773278591873345300e-03, +-9.777923862662688675e-03, +-9.782553019265618002e-03, +-9.787166054977503374e-03, +-9.791762963120252683e-03, +-9.796343737042183253e-03, +-9.800908370118238677e-03, +-9.805456855749943718e-03, +-9.809989187365215219e-03, +-9.814505358418689970e-03, +-9.819005362391343070e-03, +-9.823489192791102012e-03, +-9.827956843152135455e-03, +-9.832408307035229653e-03, +-9.836843578028041726e-03, +-9.841262649744544552e-03, +-9.845665515825524627e-03, +-9.850052169938233390e-03, +-9.854422605776683858e-03, +-9.858776817061572564e-03, +-9.863114797540048842e-03, +-9.867436540986164115e-03, +-9.871742041200483320e-03, +-9.876031292010390220e-03, +-9.880304287269756069e-03, +-9.884561020859329930e-03, +-9.888801486686525297e-03, +-9.893025678685428773e-03, +-9.897233590816930174e-03, +-9.901425217068472728e-03, +-9.905600551454564820e-03, +-9.909759588016120793e-03, +-9.913902320821003922e-03, +-9.918028743963892835e-03, +-9.922138851566019574e-03, +-9.926232637775637968e-03, +-9.930310096767569136e-03, +-9.934371222743714966e-03, +-9.938416009932492592e-03, +-9.942444452589360021e-03, +-9.946456544996410201e-03, +-9.950452281462702359e-03, +-9.954431656324178729e-03, +-9.958394663943383532e-03, +-9.962341298709993798e-03, +-9.966271555040427318e-03, +-9.970185427377924181e-03, +-9.974082910192732382e-03, +-9.977963997981766087e-03, +-9.981828685269160742e-03, +-9.985676966605638166e-03, +-9.989508836569028702e-03, +-9.993324289763984986e-03, +-9.997123320822103379e-03, +-1.000090592440193611e-02, +-1.000467209518885597e-02, +-1.000842182789543969e-02, +-1.001215511726091627e-02, +-1.001587195805172387e-02, +-1.001957234506103966e-02, +-1.002325627310918926e-02, +-1.002692373704346107e-02, +-1.003057473173801437e-02, +-1.003420925209410133e-02, +-1.003782729303994911e-02, +-1.004142884953087775e-02, +-1.004501391654900010e-02, +-1.004858248910369192e-02, +-1.005213456223129180e-02, +-1.005567013099503346e-02, +-1.005918919048537537e-02, +-1.006269173581973708e-02, +-1.006617776214264147e-02, +-1.006964726462557247e-02, +-1.007310023846717285e-02, +-1.007653667889320606e-02, +-1.007995658115634283e-02, +-1.008335994053655323e-02, +-1.008674675234069208e-02, +-1.009011701190286672e-02, +-1.009347071458427912e-02, +-1.009680785577314610e-02, +-1.010012843088487627e-02, +-1.010343243536199198e-02, +-1.010671986467419695e-02, +-1.010999071431821494e-02, +-1.011324497981800838e-02, +-1.011648265672468634e-02, +-1.011970374061639533e-02, +-1.012290822709861760e-02, +-1.012609611180386240e-02, +-1.012926739039192101e-02, +-1.013242205854959950e-02, +-1.013556011199109527e-02, +-1.013868154645768821e-02, +-1.014178635771776846e-02, +-1.014487454156709142e-02, +-1.014794609382846206e-02, +-1.015100101035207834e-02, +-1.015403928701517910e-02, +-1.015706091972233202e-02, +-1.016006590440521329e-02, +-1.016305423702289212e-02, +-1.016602591356160525e-02, +-1.016898093003469790e-02, +-1.017191928248307141e-02, +-1.017484096697452225e-02, +-1.017774597960439953e-02, +-1.018063431649509319e-02, +-1.018350597379641398e-02, +-1.018636094768539217e-02, +-1.018919923436629321e-02, +-1.019202083007069923e-02, +-1.019482573105753333e-02, +-1.019761393361290694e-02, +-1.020038543405034012e-02, +-1.020314022871047360e-02, +-1.020587831396153368e-02, +-1.020859968619872334e-02, +-1.021130434184490399e-02, +-1.021399227734990853e-02, +-1.021666348919118665e-02, +-1.021931797387336770e-02, +-1.022195572792836994e-02, +-1.022457674791561397e-02, +-1.022718103042171388e-02, +-1.022976857206070456e-02, +-1.023233936947388727e-02, +-1.023489341933001007e-02, +-1.023743071832514118e-02, +-1.023995126318264989e-02, +-1.024245505065338874e-02, +-1.024494207751549396e-02, +-1.024741234057451218e-02, +-1.024986583666328589e-02, +-1.025230256264214254e-02, +-1.025472251539876964e-02, +-1.025712569184817659e-02, +-1.025951208893280224e-02, +-1.026188170362252010e-02, +-1.026423453291460536e-02, +-1.026657057383361868e-02, +-1.026888982343159007e-02, +-1.027119227878804837e-02, +-1.027347793700979055e-02, +-1.027574679523115576e-02, +-1.027799885061376692e-02, +-1.028023410034678044e-02, +-1.028245254164675271e-02, +-1.028465417175759844e-02, +-1.028683898795074506e-02, +-1.028900698752501820e-02, +-1.029115816780673022e-02, +-1.029329252614950320e-02, +-1.029541005993458470e-02, +-1.029751076657050082e-02, +-1.029959464349330597e-02, +-1.030166168816651524e-02, +-1.030371189808106797e-02, +-1.030574527075539711e-02, +-1.030776180373531824e-02, +-1.030976149459417873e-02, +-1.031174434093281439e-02, +-1.031371034037942107e-02, +-1.031565949058975591e-02, +-1.031759178924699510e-02, +-1.031950723406185010e-02, +-1.032140582277242535e-02, +-1.032328755314438143e-02, +-1.032515242297082393e-02, +-1.032700043007231568e-02, +-1.032883157229698944e-02, +-1.033064584752035192e-02, +-1.033244325364548327e-02, +-1.033422378860294859e-02, +-1.033598745035077884e-02, +-1.033773423687447263e-02, +-1.033946414618707420e-02, +-1.034117717632917176e-02, +-1.034287332536875173e-02, +-1.034455259140132366e-02, +-1.034621497254999828e-02, +-1.034786046696522903e-02, +-1.034948907282515727e-02, +-1.035110078833524801e-02, +-1.035269561172868016e-02, +-1.035427354126597886e-02, +-1.035583457523526867e-02, +-1.035737871195213308e-02, +-1.035890594975973772e-02, +-1.036041628702871406e-02, +-1.036190972215719763e-02, +-1.036338625357095117e-02, +-1.036484587972309225e-02, +-1.036628859909444374e-02, +-1.036771441019321109e-02, +-1.036912331155514892e-02, +-1.037051530174364251e-02, +-1.037189037934944415e-02, +-1.037324854299094892e-02, +-1.037458979131402649e-02, +-1.037591412299213728e-02, +-1.037722153672616769e-02, +-1.037851203124465042e-02, +-1.037978560530357711e-02, +-1.038104225768646943e-02, +-1.038228198720442946e-02, +-1.038350479269602687e-02, +-1.038471067302743772e-02, +-1.038589962709233344e-02, +-1.038707165381187736e-02, +-1.038822675213488776e-02, +-1.038936492103758463e-02, +-1.039048615952381863e-02, +-1.039159046662489240e-02, +-1.039267784139973755e-02, +-1.039374828293474634e-02, +-1.039480179034392958e-02, +-1.039583836276870669e-02, +-1.039685799937814688e-02, +-1.039786069936884071e-02, +-1.039884646196482902e-02, +-1.039981528641780242e-02, +-1.040076717200692086e-02, +-1.040170211803886045e-02, +-1.040262012384793669e-02, +-1.040352118879586327e-02, +-1.040440531227198977e-02, +-1.040527249369315246e-02, +-1.040612273250373331e-02, +-1.040695602817568247e-02, +-1.040777238020839518e-02, +-1.040857178812886960e-02, +-1.040935425149159925e-02, +-1.041011976987869792e-02, +-1.041086834289968455e-02, +-1.041159997019165499e-02, +-1.041231465141928894e-02, +-1.041301238627467818e-02, +-1.041369317447756078e-02, +-1.041435701577513896e-02, +-1.041500390994214674e-02, +-1.041563385678085339e-02, +-1.041624685612102703e-02, +-1.041684290781999533e-02, +-1.041742201176253796e-02, +-1.041798416786109474e-02, +-1.041852937605542047e-02, +-1.041905763631298561e-02, +-1.041956894862864670e-02, +-1.042006331302482852e-02, +-1.042054072955143039e-02, +-1.042100119828591812e-02, +-1.042144471933321992e-02, +-1.042187129282581837e-02, +-1.042228091892365843e-02, +-1.042267359781420127e-02, +-1.042304932971239821e-02, +-1.042340811486078614e-02, +-1.042374995352924813e-02, +-1.042407484601533783e-02, +-1.042438279264396028e-02, +-1.042467379376760435e-02, +-1.042494784976621784e-02, +-1.042520496104723700e-02, +-1.042544512804560557e-02, +-1.042566835122374705e-02, +-1.042587463107153001e-02, +-1.042606396810637562e-02, +-1.042623636287311889e-02, +-1.042639181594412316e-02, +-1.042653032791918642e-02, +-1.042665189942559335e-02, +-1.042675653111812054e-02, +-1.042684422367902257e-02, +-1.042691497781791758e-02, +-1.042696879427201795e-02, +-1.042700567380589957e-02, +-1.042702561721168750e-02, +-1.042702862530888591e-02, +-1.042701469894446141e-02, +-1.042698383899284820e-02, +-1.042693604635593768e-02, +-1.042687132196304552e-02, +-1.042678966677094109e-02, +-1.042669108176378680e-02, +-1.042657556795326471e-02, +-1.042644312637843428e-02, +-1.042629375810576360e-02, +-1.042612746422919880e-02, +-1.042594424587008073e-02, +-1.042574410417717798e-02, +-1.042552704032667817e-02, +-1.042529305552215325e-02, +-1.042504215099462721e-02, +-1.042477432800249966e-02, +-1.042448958783158582e-02, +-1.042418793179510778e-02, +-1.042386936123366331e-02, +-1.042353387751527617e-02, +-1.042318148203527466e-02, +-1.042281217621651539e-02, +-1.042242596150909015e-02, +-1.042202283939058435e-02, +-1.042160281136588623e-02, +-1.042116587896726662e-02, +-1.042071204375435642e-02, +-1.042024130731420729e-02, +-1.041975367126114597e-02, +-1.041924913723690956e-02, +-1.041872770691058651e-02, +-1.041818938197856641e-02, +-1.041763416416458324e-02, +-1.041706205521980393e-02, +-1.041647305692261147e-02, +-1.041586717107878014e-02, +-1.041524439952138184e-02, +-1.041460474411086759e-02, +-1.041394820673491838e-02, +-1.041327478930857524e-02, +-1.041258449377417510e-02, +-1.041187732210138370e-02, +-1.041115327628715052e-02, +-1.041041235835569317e-02, +-1.040965457035854941e-02, +-1.040887991437453204e-02, +-1.040808839250972201e-02, +-1.040728000689749612e-02, +-1.040645475969850797e-02, +-1.040561265310062898e-02, +-1.040475368931904551e-02, +-1.040387787059617215e-02, +-1.040298519920167426e-02, +-1.040207567743245409e-02, +-1.040114930761267334e-02, +-1.040020609209375141e-02, +-1.039924603325425266e-02, +-1.039826913350005294e-02, +-1.039727539526420427e-02, +-1.039626482100701119e-02, +-1.039523741321593878e-02, +-1.039419317440567689e-02, +-1.039313210711812104e-02, +-1.039205421392234638e-02, +-1.039095949741461120e-02, +-1.038984796021839505e-02, +-1.038871960498425825e-02, +-1.038757443439005529e-02, +-1.038641245114074046e-02, +-1.038523365796838530e-02, +-1.038403805763228431e-02, +-1.038282565291888046e-02, +-1.038159644664166451e-02, +-1.038035044164140053e-02, +-1.037908764078588827e-02, +-1.037780804697006377e-02, +-1.037651166311597505e-02, +-1.037519849217282200e-02, +-1.037386853711683501e-02, +-1.037252180095142931e-02, +-1.037115828670707139e-02, +-1.036977799744132761e-02, +-1.036838093623879652e-02, +-1.036696710621119039e-02, +-1.036553651049732482e-02, +-1.036408915226297127e-02, +-1.036262503470105657e-02, +-1.036114416103151546e-02, +-1.035964653450131140e-02, +-1.035813215838447647e-02, +-1.035660103598204373e-02, +-1.035505317062204896e-02, +-1.035348856565958785e-02, +-1.035190722447672934e-02, +-1.035030915048256936e-02, +-1.034869434711316143e-02, +-1.034706281783159820e-02, +-1.034541456612786750e-02, +-1.034374959551902749e-02, +-1.034206790954906446e-02, +-1.034036951178885291e-02, +-1.033865440583639668e-02, +-1.033692259531642649e-02, +-1.033517408388074689e-02, +-1.033340887520800729e-02, +-1.033162697300393437e-02, +-1.032982838100101990e-02, +-1.032801310295865076e-02, +-1.032618114266324431e-02, +-1.032433250392798992e-02, +-1.032246719059304839e-02, +-1.032058520652534908e-02, +-1.031868655561885006e-02, +-1.031677124179424671e-02, +-1.031483926899910177e-02, +-1.031289064120789745e-02, +-1.031092536242186365e-02, +-1.030894343666911156e-02, +-1.030694486800452954e-02, +-1.030492966050992193e-02, +-1.030289781829383210e-02, +-1.030084934549154937e-02, +-1.029878424626526519e-02, +-1.029670252480385621e-02, +-1.029460418532306999e-02, +-1.029248923206532544e-02, +-1.029035766929986030e-02, +-1.028820950132268257e-02, +-1.028604473245642997e-02, +-1.028386336705059204e-02, +-1.028166540948132618e-02, +-1.027945086415157569e-02, +-1.027721973549085115e-02, +-1.027497202795549236e-02, +-1.027270774602851225e-02, +-1.027042689421952745e-02, +-1.026812947706491272e-02, +-1.026581549912767947e-02, +-1.026348496499746542e-02, +-1.026113787929062993e-02, +-1.025877424665009099e-02, +-1.025639407174542064e-02, +-1.025399735927280849e-02, +-1.025158411395516930e-02, +-1.024915434054180820e-02, +-1.024670804380877973e-02, +-1.024424522855869879e-02, +-1.024176589962067993e-02, +-1.023927006185050906e-02, +-1.023675772013045090e-02, +-1.023422887936944504e-02, +-1.023168354450271905e-02, +-1.022912172049228116e-02, +-1.022654341232652822e-02, +-1.022394862502047121e-02, +-1.022133736361548195e-02, +-1.021870963317949438e-02, +-1.021606543880698020e-02, +-1.021340478561880843e-02, +-1.021072767876228006e-02, +-1.020803412341127377e-02, +-1.020532412476599093e-02, +-1.020259768805319156e-02, +-1.019985481852584905e-02, +-1.019709552146362552e-02, +-1.019431980217235141e-02, +-1.019152766598435331e-02, +-1.018871911825839846e-02, +-1.018589416437946753e-02, +-1.018305280975915703e-02, +-1.018019505983508259e-02, +-1.017732092007149654e-02, +-1.017443039595881428e-02, +-1.017152349301391791e-02, +-1.016860021677982659e-02, +-1.016566057282595331e-02, +-1.016270456674809620e-02, +-1.015973220416815925e-02, +-1.015674349073444720e-02, +-1.015373843212142614e-02, +-1.015071703402992305e-02, +-1.014767930218692625e-02, +-1.014462524234564442e-02, +-1.014155486028560024e-02, +-1.013846816181244309e-02, +-1.013536515275801665e-02, +-1.013224583898034159e-02, +-1.012911022636371269e-02, +-1.012595832081850111e-02, +-1.012279012828119079e-02, +-1.011960565471457969e-02, +-1.011640490610737908e-02, +-1.011318788847464720e-02, +-1.010995460785730701e-02, +-1.010670507032256429e-02, +-1.010343928196370984e-02, +-1.010015724890000501e-02, +-1.009685897727684648e-02, +-1.009354447326559281e-02, +-1.009021374306384895e-02, +-1.008686679289505679e-02, +-1.008350362900870163e-02, +-1.008012425768040066e-02, +-1.007672868521164965e-02, +-1.007331691792998259e-02, +-1.006988896218880859e-02, +-1.006644482436768774e-02, +-1.006298451087197371e-02, +-1.005950802813301327e-02, +-1.005601538260809252e-02, +-1.005250658078035535e-02, +-1.004898162915899076e-02, +-1.004544053427883048e-02, +-1.004188330270086062e-02, +-1.003830994101171346e-02, +-1.003472045582404389e-02, +-1.003111485377627086e-02, +-1.002749314153258443e-02, +-1.002385532578320589e-02, +-1.002020141324384828e-02, +-1.001653141065629062e-02, +-1.001284532478796500e-02, +-1.000914316243215960e-02, +-1.000542493040782778e-02, +-1.000169063555964542e-02, +-9.997940284758201693e-03, +-9.994173884899613947e-03, +-9.990391442905786207e-03, +-9.986592965724362322e-03, +-9.982778460328576783e-03, +-9.978947933717454213e-03, +-9.975101392915502324e-03, +-9.971238844973044982e-03, +-9.967360296965913427e-03, +-9.963465755995690870e-03, +-9.959555229189485243e-03, +-9.955628723699929197e-03, +-9.951686246705438582e-03, +-9.947727805409742330e-03, +-9.943753407042359507e-03, +-9.939763058858148287e-03, +-9.935756768137708403e-03, +-9.931734542187004716e-03, +-9.927696388337490380e-03, +-9.923642313946262963e-03, +-9.919572326395724449e-03, +-9.915486433093850110e-03, +-9.911384641473968207e-03, +-9.907266958994992434e-03, +-9.903133393141149571e-03, +-9.898983951422000299e-03, +-9.894818641372779208e-03, +-9.890637470553792845e-03, +-9.886440446550917582e-03, +-9.882227576975219710e-03, +-9.877998869463371773e-03, +-9.873754331677100926e-03, +-9.869493971303497717e-03, +-9.865217796055198232e-03, +-9.860925813669764797e-03, +-9.856618031910341707e-03, +-9.852294458565164295e-03, +-9.847955101447708123e-03, +-9.843599968396786123e-03, +-9.839229067276371657e-03, +-9.834842405975588106e-03, +-9.830439992408786937e-03, +-9.826021834515603209e-03, +-9.821587940260672819e-03, +-9.817138317633812908e-03, +-9.812672974650113802e-03, +-9.808191919349607685e-03, +-9.803695159797487166e-03, +-9.799182704084077530e-03, +-9.794654560324758674e-03, +-9.790110736659918267e-03, +-9.785551241255085325e-03, +-9.780976082300756741e-03, +-9.776385268012449323e-03, +-9.771778806630817757e-03, +-9.767156706421167151e-03, +-9.762518975674176411e-03, +-9.757865622705199152e-03, +-9.753196655854706049e-03, +-9.748512083488002078e-03, +-9.743811913995313254e-03, +-9.739096155791831730e-03, +-9.734364817317578758e-03, +-9.729617907037435912e-03, +-9.724855433441122535e-03, +-9.720077405043329316e-03, +-9.715283830383426855e-03, +-9.710474718025616583e-03, +-9.705650076559008826e-03, +-9.700809914597364331e-03, +-9.695954240779196612e-03, +-9.691083063767957570e-03, +-9.686196392251584728e-03, +-9.681294234942986951e-03, +-9.676376600579489340e-03, +-9.671443497923332827e-03, +-9.666494935761337642e-03, +-9.661530922905021274e-03, +-9.656551468190515200e-03, +-9.651556580478514585e-03, +-9.646546268654571446e-03, +-9.641520541628405966e-03, +-9.636479408334742633e-03, +-9.631422877732567778e-03, +-9.626350958805677746e-03, +-9.621263660562179298e-03, +-9.616160992034696042e-03, +-9.611042962280597415e-03, +-9.605909580381469595e-03, +-9.600760855443458974e-03, +-9.595596796597152464e-03, +-9.590417412997685048e-03, +-9.585222713824458757e-03, +-9.580012708281277975e-03, +-9.574787405596509038e-03, +-9.569546815022663896e-03, +-9.564290945836891045e-03, +-9.559019807340293773e-03, +-9.553733408858601506e-03, +-9.548431759741866226e-03, +-9.543114869364127673e-03, +-9.537782747124030902e-03, +-9.532435402444227809e-03, +-9.527072844771868054e-03, +-9.521695083578099461e-03, +-9.516302128358281390e-03, +-9.510893988632184229e-03, +-9.505470673943540103e-03, +-9.500032193860301344e-03, +-9.494578557974493044e-03, +-9.489109775902501015e-03, +-9.483625857284513211e-03, +-9.478126811784948202e-03, +-9.472612649092401402e-03, +-9.467083378919292913e-03, +-9.461539011002363664e-03, +-9.455979555101998862e-03, +-9.450405021003013828e-03, +-9.444815418513897651e-03, +-9.439210757467222587e-03, +-9.433591047719576406e-03, +-9.427956299151302177e-03, +-9.422306521667003082e-03, +-9.416641725194655962e-03, +-9.410961919686653895e-03, +-9.405267115118902399e-03, +-9.399557321491391892e-03, +-9.393832548827781362e-03, +-9.388092807175540608e-03, +-9.382338106606099432e-03, +-9.376568457214530181e-03, +-9.370783869119639689e-03, +-9.364984352464151424e-03, +-9.359169917414264864e-03, +-9.353340574160260920e-03, +-9.347496332915612022e-03, +-9.341637203917898050e-03, +-9.335763197428167959e-03, +-9.329874323731036923e-03, +-9.323970593134967358e-03, +-9.318052015971771060e-03, +-9.312118602597169517e-03, +-9.306170363389947367e-03, +-9.300207308752979352e-03, +-9.294229449112265812e-03, +-9.288236794917624842e-03, +-9.282229356642144116e-03, +-9.276207144782423752e-03, +-9.270170169858697740e-03, +-9.264118442414428015e-03, +-9.258051973016562936e-03, +-9.251970772255436667e-03, +-9.245874850744923573e-03, +-9.239764219122051370e-03, +-9.233638888047235316e-03, +-9.227498868204408317e-03, +-9.221344170300592447e-03, +-9.215174805066202526e-03, +-9.208990783254791118e-03, +-9.202792115643490881e-03, +-9.196578813032327618e-03, +-9.190350886244674777e-03, +-9.184108346127199674e-03, +-9.177851203549506134e-03, +-9.171579469404786758e-03, +-9.165293154608769935e-03, +-9.158992270100814459e-03, +-9.152676826843241659e-03, +-9.146346835821411725e-03, +-9.140002308043685547e-03, +-9.133643254541553083e-03, +-9.127269686369622950e-03, +-9.120881614605419463e-03, +-9.114479050349314979e-03, +-9.108062004724973987e-03, +-9.101630488878756364e-03, +-9.095184513980059116e-03, +-9.088724091221066573e-03, +-9.082249231817130300e-03, +-9.075759947006224390e-03, +-9.069256248049165775e-03, +-9.062738146229886577e-03, +-9.056205652854757565e-03, +-9.049658779253406948e-03, +-9.043097536777646578e-03, +-9.036521936802627275e-03, +-9.029931990725787588e-03, +-9.023327709967665644e-03, +-9.016709105971226074e-03, +-9.010076190202139304e-03, +-9.003428974149012276e-03, +-8.996767469322560981e-03, +-8.990091687256689459e-03, +-8.983401639507481926e-03, +-8.976697337653912270e-03, +-8.969978793297314970e-03, +-8.963246018061551620e-03, +-8.956499023593191347e-03, +-8.949737821561129167e-03, +-8.942962423656749052e-03, +-8.936172841594055768e-03, +-8.929369087109249870e-03, +-8.922551171961294950e-03, +-8.915719107931053752e-03, +-8.908872906822283902e-03, +-8.902012580460718499e-03, +-8.895138140694770421e-03, +-8.888249599394869652e-03, +-8.881346968453808499e-03, +-8.874430259786916797e-03, +-8.867499485331293424e-03, +-8.860554657046755198e-03, +-8.853595786915031962e-03, +-8.846622886940252312e-03, +-8.839635969148589706e-03, +-8.832635045588283287e-03, +-8.825620128330022990e-03, +-8.818591229466299017e-03, +-8.811548361111795624e-03, +-8.804491535403255811e-03, +-8.797420764499627038e-03, +-8.790336060581655300e-03, +-8.783237435852180031e-03, +-8.776124902536154918e-03, +-8.768998472880297490e-03, +-8.761858159153434328e-03, +-8.754703973646110748e-03, +-8.747535928671104286e-03, +-8.740354036562793250e-03, +-8.733158309677432549e-03, +-8.725948760393360121e-03, +-8.718725401110384576e-03, +-8.711488244250515517e-03, +-8.704237302257184644e-03, +-8.696972587595643012e-03, +-8.689694112753129293e-03, +-8.682401890238323344e-03, +-8.675095932581679270e-03, +-8.667776252335284912e-03, +-8.660442862073045728e-03, +-8.653095774390301420e-03, +-8.645735001904008080e-03, +-8.638360557252880434e-03, +-8.630972453097039698e-03, +-8.623570702118183579e-03, +-8.616155317019416268e-03, +-8.608726310525659578e-03, +-8.601283695383019762e-03, +-8.593827484359049459e-03, +-8.586357690243014845e-03, +-8.578874325845234697e-03, +-8.571377403997819389e-03, +-8.563866937553721997e-03, +-8.556342939387751381e-03, +-8.548805422395671857e-03, +-8.541254399494858929e-03, +-8.533689883623728559e-03, +-8.526111887741950543e-03, +-8.518520424830672289e-03, +-8.510915507892010540e-03, +-8.503297149949358424e-03, +-8.495665364047175552e-03, +-8.488020163251354042e-03, +-8.480361560648600958e-03, +-8.472689569346799135e-03, +-8.465004202475100853e-03, +-8.457305473183501093e-03, +-8.449593394643000605e-03, +-8.441867980045866110e-03, +-8.434129242605043972e-03, +-8.426377195554854080e-03, +-8.418611852149950753e-03, +-8.410833225666526636e-03, +-8.403041329401254519e-03, +-8.395236176671984699e-03, +-8.387417780817247107e-03, +-8.379586155196268663e-03, +-8.371741313189570016e-03, +-8.363883268197759915e-03, +-8.356012033642860534e-03, +-8.348127622967169495e-03, +-8.340230049634087331e-03, +-8.332319327127413189e-03, +-8.324395468951629323e-03, +-8.316458488632163040e-03, +-8.308508399714699746e-03, +-8.300545215765767551e-03, +-8.292568950372251543e-03, +-8.284579617141915944e-03, +-8.276577229702817770e-03, +-8.268561801703473366e-03, +-8.260533346813177594e-03, +-8.252491878721294333e-03, +-8.244437411138181085e-03, +-8.236369957793846300e-03, +-8.228289532439328480e-03, +-8.220196148845983208e-03, +-8.212089820805023449e-03, +-8.203970562128581195e-03, +-8.195838386648605922e-03, +-8.187693308217778784e-03, +-8.179535340708669541e-03, +-8.171364498014147687e-03, +-8.163180794047495206e-03, +-8.154984242741950343e-03, +-8.146774858050979951e-03, +-8.138552653948140717e-03, +-8.130317644427276919e-03, +-8.122069843502166542e-03, +-8.113809265206557708e-03, +-8.105535923594550315e-03, +-8.097249832739909087e-03, +-8.088951006736797358e-03, +-8.080639459698786553e-03, +-8.072315205759943851e-03, +-8.063978259073971769e-03, +-8.055628633814418058e-03, +-8.047266344174982752e-03, +-8.038891404368869384e-03, +-8.030503828629565605e-03, +-8.022103631209703475e-03, +-8.013690826382322344e-03, +-8.005265428439770764e-03, +-7.996827451694513145e-03, +-7.988376910478392490e-03, +-7.979913819142973874e-03, +-7.971438192059723121e-03, +-7.962950043619521079e-03, +-7.954449388232864848e-03, +-7.945936240329791456e-03, +-7.937410614360065203e-03, +-7.928872524793090931e-03, +-7.920321986117228805e-03, +-7.911759012840932290e-03, +-7.903183619491804465e-03, +-7.894595820616846088e-03, +-7.885995630782717536e-03, +-7.877383064575162880e-03, +-7.868758136599724590e-03, +-7.860120861480617699e-03, +-7.851471253862042990e-03, +-7.842809328406996974e-03, +-7.834135099798118437e-03, +-7.825448582737011896e-03, +-7.816749791944507808e-03, +-7.808038742160904565e-03, +-7.799315448145337920e-03, +-7.790579924676220742e-03, +-7.781832186550989745e-03, +-7.773072248586433350e-03, +-7.764300125618090603e-03, +-7.755515832500614604e-03, +-7.746719384107892195e-03, +-7.737910795332540899e-03, +-7.729090081086240245e-03, +-7.720257256299468095e-03, +-7.711412335921990699e-03, +-7.702555334922089013e-03, +-7.693686268286942936e-03, +-7.684805151022857696e-03, +-7.675911998154569087e-03, +-7.667006824726050988e-03, +-7.658089645799425089e-03, +-7.649160476456054632e-03, +-7.640219331795958073e-03, +-7.631266226937657299e-03, +-7.622301177018397933e-03, +-7.613324197193988008e-03, +-7.604335302639114551e-03, +-7.595334508546779800e-03, +-7.586321830128500698e-03, +-7.577297282614683591e-03, +-7.568260881253883500e-03, +-7.559212641313275104e-03, +-7.550152578078375178e-03, +-7.541080706853420766e-03, +-7.531997042960772437e-03, +-7.522901601741136327e-03, +-7.513794398553911950e-03, +-7.504675448776389028e-03, +-7.495544767804672090e-03, +-7.486402371052423670e-03, +-7.477248273952311931e-03, +-7.468082491954651514e-03, +-7.458905040528371506e-03, +-7.449715935160299875e-03, +-7.440515191355402853e-03, +-7.431302824637171789e-03, +-7.422078850546432252e-03, +-7.412843284642816818e-03, +-7.403596142503542088e-03, +-7.394337439724165024e-03, +-7.385067191917936771e-03, +-7.375785414716126177e-03, +-7.366492123768201075e-03, +-7.357187334741197710e-03, +-7.347871063320098040e-03, +-7.338543325208025762e-03, +-7.329204136125535944e-03, +-7.319853511811435544e-03, +-7.310491468021672323e-03, +-7.301118020530604664e-03, +-7.291733185129834101e-03, +-7.282336977629061403e-03, +-7.272929413855348454e-03, +-7.263510509653377592e-03, +-7.254080280885909573e-03, +-7.244638743432518964e-03, +-7.235185913191107682e-03, +-7.225721806076578803e-03, +-7.216246438021772444e-03, +-7.206759824976704219e-03, +-7.197261982908817642e-03, +-7.187752927803318058e-03, +-7.178232675662524730e-03, +-7.168701242506194359e-03, +-7.159158644371351084e-03, +-7.149604897312642100e-03, +-7.140040017401742649e-03, +-7.130464020727516478e-03, +-7.120876923396472942e-03, +-7.111278741531944746e-03, +-7.101669491274604888e-03, +-7.092049188782176099e-03, +-7.082417850229808139e-03, +-7.072775491809453301e-03, +-7.063122129730152639e-03, +-7.053457780218314391e-03, +-7.043782459516935088e-03, +-7.034096183886557122e-03, +-7.024398969603916527e-03, +-7.014690832963396683e-03, +-7.004971790276090689e-03, +-6.995241857869888107e-03, +-6.985501052089543479e-03, +-6.975749389296603473e-03, +-6.965986885869681830e-03, +-6.956213558203931148e-03, +-6.946429422711179920e-03, +-6.936634495820344533e-03, +-6.926828793976698082e-03, +-6.917012333642317927e-03, +-6.907185131295769109e-03, +-6.897347203432600479e-03, +-6.887498566564584021e-03, +-6.877639237220078278e-03, +-6.867769231944290294e-03, +-6.857888567298518409e-03, +-6.847997259861032630e-03, +-6.838095326225797008e-03, +-6.828182783004008334e-03, +-6.818259646822670203e-03, +-6.808325934325597413e-03, +-6.798381662172604117e-03, +-6.788426847039817809e-03, +-6.778461505619998509e-03, +-6.768485654621780694e-03, +-6.758499310770209323e-03, +-6.748502490806326110e-03, +-6.738495211487742845e-03, +-6.728477489587866844e-03, +-6.718449341896181107e-03, +-6.708410785218634625e-03, +-6.698361836376889519e-03, +-6.688302512208595986e-03, +-6.678232829567790421e-03, +-6.668152805324019383e-03, +-6.658062456363326650e-03, +-6.647961799586887995e-03, +-6.637850851912567227e-03, +-6.627729630273502398e-03, +-6.617598151619138828e-03, +-6.607456432914375621e-03, +-6.597304491139864904e-03, +-6.587142343292506225e-03, +-6.576970006384082190e-03, +-6.566787497442870027e-03, +-6.556594833512256401e-03, +-6.546392031651708000e-03, +-6.536179108935923250e-03, +-6.525956082455252119e-03, +-6.515722969315852243e-03, +-6.505479786639078305e-03, +-6.495226551561948669e-03, +-6.484963281236744669e-03, +-6.474689992831590864e-03, +-6.464406703529620643e-03, +-6.454113430529377811e-03, +-6.443810191045097613e-03, +-6.433497002305848048e-03, +-6.423173881556602793e-03, +-6.412840846056739805e-03, +-6.402497913081705780e-03, +-6.392145099921705577e-03, +-6.381782423882063904e-03, +-6.371409902283692826e-03, +-6.361027552462024046e-03, +-6.350635391768169428e-03, +-6.340233437567890581e-03, +-6.329821707241964010e-03, +-6.319400218186553217e-03, +-6.308968987812437618e-03, +-6.298528033545429741e-03, +-6.288077372826177472e-03, +-6.277617023110537015e-03, +-6.267147001868876403e-03, +-6.256667326586404232e-03, +-6.246178014763437668e-03, +-6.235679083914653920e-03, +-6.225170551570003569e-03, +-6.214652435273361822e-03, +-6.204124752584095834e-03, +-6.193587521075731572e-03, +-6.183040758336453419e-03, +-6.172484481969375651e-03, +-6.161918709591675085e-03, +-6.151343458835722977e-03, +-6.140758747347506430e-03, +-6.130164592788347501e-03, +-6.119561012833421750e-03, +-6.108948025172765244e-03, +-6.098325647510502608e-03, +-6.087693897565045649e-03, +-6.077052793069546120e-03, +-6.066402351771109022e-03, +-6.055742591431154294e-03, +-6.045073529825290178e-03, +-6.034395184743549141e-03, +-6.023707573990285530e-03, +-6.013010715383243152e-03, +-6.002304626755171173e-03, +-5.991589325952399910e-03, +-5.980864830835353439e-03, +-5.970131159278810676e-03, +-5.959388329171101326e-03, +-5.948636358415122435e-03, +-5.937875264926881225e-03, +-5.927105066637099705e-03, +-5.916325781489852054e-03, +-5.905537427443484887e-03, +-5.894740022469834029e-03, +-5.883933584554543704e-03, +-5.873118131697348428e-03, +-5.862293681911393863e-03, +-5.851460253223631468e-03, +-5.840617863674553087e-03, +-5.829766531318697487e-03, +-5.818906274223823762e-03, +-5.808037110471253074e-03, +-5.797159058156291928e-03, +-5.786272135387370008e-03, +-5.775376360286505091e-03, +-5.764471750989126966e-03, +-5.753558325644387954e-03, +-5.742636102414539270e-03, +-5.731705099475193840e-03, +-5.720765335015634209e-03, +-5.709816827238022377e-03, +-5.698859594358372110e-03, +-5.687893654605125603e-03, +-5.676919026220680030e-03, +-5.665935727460476821e-03, +-5.654943776592890638e-03, +-5.643943191899565906e-03, +-5.632933991675112377e-03, +-5.621916194227563092e-03, +-5.610889817877651002e-03, +-5.599854880959116016e-03, +-5.588811401819037197e-03, +-5.577759398817063417e-03, +-5.566698890325925096e-03, +-5.555629894731075116e-03, +-5.544552430431230923e-03, +-5.533466515837516704e-03, +-5.522372169373937836e-03, +-5.511269409477560430e-03, +-5.500158254597706416e-03, +-5.489038723197075045e-03, +-5.477910833750087964e-03, +-5.466774604744765315e-03, +-5.455630054681068208e-03, +-5.444477202072046246e-03, +-5.433316065442946735e-03, +-5.422146663331500922e-03, +-5.410969014288484306e-03, +-5.399783136876208298e-03, +-5.388589049670320860e-03, +-5.377386771258231384e-03, +-5.366176320240225242e-03, +-5.354957715228526177e-03, +-5.343730974847707427e-03, +-5.332496117734955403e-03, +-5.321253162539323761e-03, +-5.310002127922117642e-03, +-5.298743032557173827e-03, +-5.287475895129974297e-03, +-5.276200734338778141e-03, +-5.264917568893025604e-03, +-5.253626417515109247e-03, +-5.242327298938824834e-03, +-5.231020231910448598e-03, +-5.219705235187865541e-03, +-5.208382327540910309e-03, +-5.197051527751785256e-03, +-5.185712854613696958e-03, +-5.174366326932622155e-03, +-5.163011963525640687e-03, +-5.151649783222167142e-03, +-5.140279804862964673e-03, +-5.128902047300544845e-03, +-5.117516529399460806e-03, +-5.106123270035522327e-03, +-5.094722288096324020e-03, +-5.083313602480929623e-03, +-5.071897232100294403e-03, +-5.060473195876584278e-03, +-5.049041512743416074e-03, +-5.037602201646282536e-03, +-5.026155281541742209e-03, +-5.014700771397836640e-03, +-5.003238690193903895e-03, +-4.991769056920969741e-03, +-4.980291890581029467e-03, +-4.968807210187310697e-03, +-4.957315034764699264e-03, +-4.945815383348794655e-03, +-4.934308274986990740e-03, +-4.922793728736958759e-03, +-4.911271763668248469e-03, +-4.899742398861396502e-03, +-4.888205653407725997e-03, +-4.876661546409693550e-03, +-4.865110096980652422e-03, +-4.853551324245311376e-03, +-4.841985247338905472e-03, +-4.830411885407569043e-03, +-4.818831257608709520e-03, +-4.807243383110181706e-03, +-4.795648281090753549e-03, +-4.784045970739861549e-03, +-4.772436471258079994e-03, +-4.760819801856266617e-03, +-4.749195981756004943e-03, +-4.737565030189894860e-03, +-4.725926966400615867e-03, +-4.714281809642102347e-03, +-4.702629579177935483e-03, +-4.690970294283112671e-03, +-4.679303974242469792e-03, +-4.667630638351834803e-03, +-4.655950305917038942e-03, +-4.644262996254359087e-03, +-4.632568728690772755e-03, +-4.620867522563225187e-03, +-4.609159397219063023e-03, +-4.597444372015795783e-03, +-4.585722466321561636e-03, +-4.573993699514273051e-03, +-4.562258090982040069e-03, +-4.550515660123505106e-03, +-4.538766426347006812e-03, +-4.527010409070969521e-03, +-4.515247627724242388e-03, +-4.503478101745171311e-03, +-4.491701850582724767e-03, +-4.479918893694920419e-03, +-4.468129250550570246e-03, +-4.456332940627741844e-03, +-4.444529983414862578e-03, +-4.432720398409805383e-03, +-4.420904205120181930e-03, +-4.409081423063932435e-03, +-4.397252071767773947e-03, +-4.385416170769031348e-03, +-4.373573739614037940e-03, +-4.361724797859265618e-03, +-4.349869365070382909e-03, +-4.338007460822630550e-03, +-4.326139104701168421e-03, +-4.314264316300242888e-03, +-4.302383115223724561e-03, +-4.290495521084730993e-03, +-4.278601553506238171e-03, +-4.266701232120146368e-03, +-4.254794576567695608e-03, +-4.242881606499836894e-03, +-4.230962341576258168e-03, +-4.219036801466542232e-03, +-4.207105005848541315e-03, +-4.195166974410217617e-03, +-4.183222726848134093e-03, +-4.171272282867974010e-03, +-4.159315662184890489e-03, +-4.147352884522525519e-03, +-4.135383969614079419e-03, +-4.123408937201340253e-03, +-4.111427807035029913e-03, +-4.099440598875170143e-03, +-4.087447332490281096e-03, +-4.075448027657850580e-03, +-4.063442704164058235e-03, +-4.051431381804252579e-03, +-4.039414080382153910e-03, +-4.027390819710162211e-03, +-4.015361619609796040e-03, +-4.003326499910682054e-03, +-3.991285480451730282e-03, +-3.979238581079489606e-03, +-3.967185821650027339e-03, +-3.955127222027360161e-03, +-3.943062802084032654e-03, +-3.930992581701405267e-03, +-3.918916580768772202e-03, +-3.906834819184444758e-03, +-3.894747316854172293e-03, +-3.882654093692977995e-03, +-3.870555169623487047e-03, +-3.858450564577124448e-03, +-3.846340298493143139e-03, +-3.834224391318994361e-03, +-3.822102863010686316e-03, +-3.809975733531958866e-03, +-3.797843022854774028e-03, +-3.785704750959008064e-03, +-3.773560937832881254e-03, +-3.761411603472700725e-03, +-3.749256767881949289e-03, +-3.737096451072969856e-03, +-3.724930673065484418e-03, +-3.712759453887077166e-03, +-3.700582813573544908e-03, +-3.688400772167971589e-03, +-3.676213349721875814e-03, +-3.664020566293556790e-03, +-3.651822441949957414e-03, +-3.639618996765037542e-03, +-3.627410250820896354e-03, +-3.615196224206863786e-03, +-3.602976937019814526e-03, +-3.590752409364568291e-03, +-3.578522661353060637e-03, +-3.566287713104802654e-03, +-3.554047584746623800e-03, +-3.541802296413170629e-03, +-3.529551868246038997e-03, +-3.517296320394168278e-03, +-3.505035673014213465e-03, +-3.492769946269674766e-03, +-3.480499160331455323e-03, +-3.468223335377515568e-03, +-3.455942491593386699e-03, +-3.443656649171330641e-03, +-3.431365828310733827e-03, +-3.419070049218456316e-03, +-3.406769332107834752e-03, +-3.394463697199911860e-03, +-3.382153164721755055e-03, +-3.369837754908172958e-03, +-3.357517488000752188e-03, +-3.345192384247670878e-03, +-3.332862463904107207e-03, +-3.320527747231887677e-03, +-3.308188254500033995e-03, +-3.295844005983892665e-03, +-3.283495021965520105e-03, +-3.271141322734060376e-03, +-3.258782928584880861e-03, +-3.246419859820105260e-03, +-3.234052136748279214e-03, +-3.221679779684906778e-03, +-3.209302808951601700e-03, +-3.196921244876428300e-03, +-3.184535107794323871e-03, +-3.172144418046073024e-03, +-3.159749195979530672e-03, +-3.147349461947920694e-03, +-3.134945236311741535e-03, +-3.122536539437087855e-03, +-3.110123391696820606e-03, +-3.097705813469631576e-03, +-3.085283825140350007e-03, +-3.072857447100519387e-03, +-3.060426699746825359e-03, +-3.047991603482983966e-03, +-3.035552178718073282e-03, +-3.023108445867713455e-03, +-3.010660425353106975e-03, +-2.998208137601366969e-03, +-2.985751603045958685e-03, +-2.973290842125797875e-03, +-2.960825875285757764e-03, +-2.948356722976402337e-03, +-2.935883405654338488e-03, +-2.923405943782060330e-03, +-2.910924357826905756e-03, +-2.898438668262902189e-03, +-2.885948895568981112e-03, +-2.873455060230252663e-03, +-2.860957182736993849e-03, +-2.848455283584994200e-03, +-2.835949383276117810e-03, +-2.823439502316727780e-03, +-2.810925661219594845e-03, +-2.798407880502209490e-03, +-2.785886180687969799e-03, +-2.773360582305203510e-03, +-2.760831105887545309e-03, +-2.748297771974315875e-03, +-2.735760601109651913e-03, +-2.723219613843024401e-03, +-2.710674830728946293e-03, +-2.698126272327492498e-03, +-2.685573959203391321e-03, +-2.673017911926464218e-03, +-2.660458151071978805e-03, +-2.647894697219776300e-03, +-2.635327570954823593e-03, +-2.622756792866867605e-03, +-2.610182383550971319e-03, +-2.597604363606648582e-03, +-2.585022753638262661e-03, +-2.572437574255366684e-03, +-2.559848846071734792e-03, +-2.547256589706567778e-03, +-2.534660825782796955e-03, +-2.522061574928834062e-03, +-2.509458857777605023e-03, +-2.496852694966334406e-03, +-2.484243107136957420e-03, +-2.471630114935797692e-03, +-2.459013739014098525e-03, +-2.446394000027139488e-03, +-2.433770918634626298e-03, +-2.421144515501081132e-03, +-2.408514811294967459e-03, +-2.395881826689214792e-03, +-2.383245582360909044e-03, +-2.370606098991809470e-03, +-2.357963397267479576e-03, +-2.345317497877682199e-03, +-2.332668421516748136e-03, +-2.320016188882575211e-03, +-2.307360820677863394e-03, +-2.294702337608369672e-03, +-2.282040760384868288e-03, +-2.269376109721405604e-03, +-2.256708406336565588e-03, +-2.244037670952411193e-03, +-2.231363924294910671e-03, +-2.218687187094291018e-03, +-2.206007480084189697e-03, +-2.193324824002159008e-03, +-2.180639239589370754e-03, +-2.167950747591138386e-03, +-2.155259368756028832e-03, +-2.142565123836264514e-03, +-2.129868033588101957e-03, +-2.117168118770965286e-03, +-2.104465400147823538e-03, +-2.091759898485584437e-03, +-2.079051634554061369e-03, +-2.066340629127241466e-03, +-2.053626902981515318e-03, +-2.040910476897657595e-03, +-2.028191371659072810e-03, +-2.015469608053039111e-03, +-2.002745206869702577e-03, +-1.990018188902437177e-03, +-1.977288574948398141e-03, +-1.964556385806929921e-03, +-1.951821642281505826e-03, +-1.939084365177993520e-03, +-1.926344575305910956e-03, +-1.913602293477386198e-03, +-1.900857540507553366e-03, +-1.888110337214949025e-03, +-1.875360704420611863e-03, +-1.862608662948634763e-03, +-1.849854233625834342e-03, +-1.837097437282298905e-03, +-1.824338294750479884e-03, +-1.811576826865606438e-03, +-1.798813054466067525e-03, +-1.786046998392374317e-03, +-1.773278679488432194e-03, +-1.760508118599770667e-03, +-1.747735336575514031e-03, +-1.734960354266793219e-03, +-1.722183192527256684e-03, +-1.709403872213484561e-03, +-1.696622414183948267e-03, +-1.683838839300115303e-03, +-1.671053168425419263e-03, +-1.658265422425663372e-03, +-1.645475622169396924e-03, +-1.632683788527037076e-03, +-1.619889942371399022e-03, +-1.607094104577385480e-03, +-1.594296296022520336e-03, +-1.581496537586042465e-03, +-1.568694850149327490e-03, +-1.555891254596262043e-03, +-1.543085771812220718e-03, +-1.530278422685308563e-03, +-1.517469228104611177e-03, +-1.504658208962183358e-03, +-1.491845386151416939e-03, +-1.479030780567587881e-03, +-1.466214413108254391e-03, +-1.453396304672217388e-03, +-1.440576476160779695e-03, +-1.427754948475987900e-03, +-1.414931742522601262e-03, +-1.402106879206354607e-03, +-1.389280379435194534e-03, +-1.376452264118255059e-03, +-1.363622554166239688e-03, +-1.350791270491836235e-03, +-1.337958434008808262e-03, +-1.325124065632540859e-03, +-1.312288186279720811e-03, +-1.299450816868722141e-03, +-1.286611978319446075e-03, +-1.273771691552267422e-03, +-1.260929977489874025e-03, +-1.248086857055652824e-03, +-1.235242351174228263e-03, +-1.222396480771857381e-03, +-1.209549266775400249e-03, +-1.196700730113559215e-03, +-1.183850891715145697e-03, +-1.170999772511042807e-03, +-1.158147393432441569e-03, +-1.145293775412112259e-03, +-1.132438939383363565e-03, +-1.119582906280435939e-03, +-1.106725697038893645e-03, +-1.093867332594738529e-03, +-1.081007833884942799e-03, +-1.068147221847135907e-03, +-1.055285517420136458e-03, +-1.042422741543057307e-03, +-1.029558915155714309e-03, +-1.016694059199005568e-03, +-1.003828194614029331e-03, +-9.909613423426154658e-04, +-9.780935233270119083e-04, +-9.652247585104170059e-04, +-9.523550688360926404e-04, +-9.394844752477513961e-04, +-9.266129986899644374e-04, +-9.137406601071099404e-04, +-9.008674804446457299e-04, +-8.879934806473322719e-04, +-8.751186816610916465e-04, +-8.622431044319412352e-04, +-8.493667699058393304e-04, +-8.364896990290609201e-04, +-8.236119127479000742e-04, +-8.107334320091828805e-04, +-7.978542777593976981e-04, +-7.849744709450732182e-04, +-7.720940325131891600e-04, +-7.592129834102660834e-04, +-7.463313445829220178e-04, +-7.334491369775383114e-04, +-7.205663815408047679e-04, +-7.076830992188234450e-04, +-6.947993109575112186e-04, +-6.819150377029850000e-04, +-6.690303004005307679e-04, +-6.561451199958629778e-04, +-6.432595174333627331e-04, +-6.303735136580552621e-04, +-6.174871296138547024e-04, +-6.046003862448186316e-04, +-5.917133044941180753e-04, +-5.788259053044212061e-04, +-5.659382096184429256e-04, +-5.530502383773283192e-04, +-5.401620125226323007e-04, +-5.272735529945543143e-04, +-5.143848807332096701e-04, +-5.014960166775750492e-04, +-4.886069817658983318e-04, +-4.757177969360876094e-04, +-4.628284831248206748e-04, +-4.499390612680828952e-04, +-4.370495523008441742e-04, +-4.241599771574592931e-04, +-4.112703567714887467e-04, +-3.983807120746624087e-04, +-3.854910639987056535e-04, +-3.726014334735895076e-04, +-3.597118414287844216e-04, +-3.468223087922244776e-04, +-3.339328564907017671e-04, +-3.210435054504062703e-04, +-3.081542765953176584e-04, +-2.952651908491738257e-04, +-2.823762691337206618e-04, +-2.694875323699667444e-04, +-2.565990014771447826e-04, +-2.437106973731107383e-04, +-2.308226409747372832e-04, +-2.179348531970218533e-04, +-2.050473549536230300e-04, +-1.921601671565438725e-04, +-1.792733107166702238e-04, +-1.663868065428748615e-04, +-1.535006755424146686e-04, +-1.406149386213293210e-04, +-1.277296166835432164e-04, +-1.148447306314073990e-04, +-1.019603013653790151e-04, +-8.907634978456063562e-05, +-7.619289678580553249e-05, +-6.330996326411482129e-05, +-5.042757011303401526e-05, +-3.754573822361394620e-05, +-2.466448848566979763e-05, +-1.178384178602370285e-05, + 1.096180989662060381e-06, + 1.397555895792409236e-05, + 2.685427123767539047e-05, + 3.973229694980818605e-05, + 5.260961521751511956e-05, + 6.548620516574829846e-05, + 7.836204592211506168e-05, + 9.123711661648051783e-05, + 1.041113963805709644e-04, + 1.169848643488692017e-04, + 1.298574996580731768e-04, + 1.427292814474176127e-04, + 1.556001888581340885e-04, + 1.684702010343440567e-04, + 1.813392971226645319e-04, + 1.942074562718086172e-04, + 2.070746576336259307e-04, + 2.199408803618442001e-04, + 2.328061036138242060e-04, + 2.456703065485856940e-04, + 2.585334683285609087e-04, + 2.713955681183404705e-04, + 2.842565850857078935e-04, + 2.971164984012440420e-04, + 3.099752872379316678e-04, + 3.228329307720484128e-04, + 3.356894081826271477e-04, + 3.485446986517755949e-04, + 3.613987813641375340e-04, + 3.742516355077876483e-04, + 3.871032402738299361e-04, + 3.999535748560107047e-04, + 4.128026184516029001e-04, + 4.256503502610140596e-04, + 4.384967494873886801e-04, + 4.513417953376472639e-04, + 4.641854670212281560e-04, + 4.770277437518407530e-04, + 4.898686047454930146e-04, + 5.027080292222451058e-04, + 5.155459964049547046e-04, + 5.283824855203084030e-04, + 5.412174757984331832e-04, + 5.540509464723506307e-04, + 5.668828767795867571e-04, + 5.797132459602044987e-04, + 5.925420332585517756e-04, + 6.053692179220082625e-04, + 6.181947792020184166e-04, + 6.310186963537012727e-04, + 6.438409486354475545e-04, + 6.566615153098163092e-04, + 6.694803756429951918e-04, + 6.822975089051181363e-04, + 6.951128943697318201e-04, + 7.079265113146772283e-04, + 7.207383390217079067e-04, + 7.335483567760801328e-04, + 7.463565438675989544e-04, + 7.591628795893581296e-04, + 7.719673432394914391e-04, + 7.847699141192038827e-04, + 7.975705715343757570e-04, + 8.103692947950303120e-04, + 8.231660632149319454e-04, + 8.359608561126228091e-04, + 8.487536528101703379e-04, + 8.615444326349127073e-04, + 8.743331749176378072e-04, + 8.871198589936178961e-04, + 8.999044642027774358e-04, + 9.126869698893125358e-04, + 9.254673554019912781e-04, + 9.382456000936330830e-04, + 9.510216833219885387e-04, + 9.637955844493455116e-04, + 9.765672828421436032e-04, + 9.893367578719879877e-04, + 1.002103988914414181e-03, + 1.014868955350630136e-03, + 1.027631636565547440e-03, + 1.040392011949392006e-03, + 1.053150060897150046e-03, + 1.065905762808198355e-03, + 1.078659097087312840e-03, + 1.091410043143431442e-03, + 1.104158580391395366e-03, + 1.116904688249983641e-03, + 1.129648346143656513e-03, + 1.142389533501314254e-03, + 1.155128229757319130e-03, + 1.167864414351099233e-03, + 1.180598066726764239e-03, + 1.193329166333982529e-03, + 1.206057692627458388e-03, + 1.218783625067229506e-03, + 1.231506943118295099e-03, + 1.244227626250772687e-03, + 1.256945653940937406e-03, + 1.269661005669411391e-03, + 1.282373660922741078e-03, + 1.295083599192880684e-03, + 1.307790799976794307e-03, + 1.320495242777473995e-03, + 1.333196907102708302e-03, + 1.345895772466813118e-03, + 1.358591818388668604e-03, + 1.371285024393466929e-03, + 1.383975370011476932e-03, + 1.396662834779036164e-03, + 1.409347398238192670e-03, + 1.422029039936305566e-03, + 1.434707739426908284e-03, + 1.447383476269198345e-03, + 1.460056230028343319e-03, + 1.472725980274940897e-03, + 1.485392706585927231e-03, + 1.498056388544136532e-03, + 1.510717005737972343e-03, + 1.523374537762237600e-03, + 1.536028964217617905e-03, + 1.548680264711007216e-03, + 1.561328418854964883e-03, + 1.573973406268601655e-03, + 1.586615206577183081e-03, + 1.599253799411742664e-03, + 1.611889164410104268e-03, + 1.624521281215632676e-03, + 1.637150129478978080e-03, + 1.649775688856126897e-03, + 1.662397939010114376e-03, + 1.675016859609808556e-03, + 1.687632430330914457e-03, + 1.700244630855583328e-03, + 1.712853440872044676e-03, + 1.725458840075456274e-03, + 1.738060808167528381e-03, + 1.750659324856132125e-03, + 1.763254369856174890e-03, + 1.775845922889072309e-03, + 1.788433963683059864e-03, + 1.801018471972673334e-03, + 1.813599427499596860e-03, + 1.826176810012316220e-03, + 1.838750599265684708e-03, + 1.851320775021967876e-03, + 1.863887317049614696e-03, + 1.876450205124959763e-03, + 1.889009419030286685e-03, + 1.901564938555566067e-03, + 1.914116743497199565e-03, + 1.926664813659069615e-03, + 1.939209128852105099e-03, + 1.951749668893791286e-03, + 1.964286413609727180e-03, + 1.976819342831696077e-03, + 1.989348436399385103e-03, + 2.001873674159150313e-03, + 2.014395035965038227e-03, + 2.026912501678383802e-03, + 2.039426051167440943e-03, + 2.051935664308241185e-03, + 2.064441320984062439e-03, + 2.076943001085765524e-03, + 2.089440684511383040e-03, + 2.101934351166282865e-03, + 2.114423980964221135e-03, + 2.126909553825518610e-03, + 2.139391049678639276e-03, + 2.151868448459669497e-03, + 2.164341730111934200e-03, + 2.176810874586993915e-03, + 2.189275861843428730e-03, + 2.201736671848546559e-03, + 2.214193284576460204e-03, + 2.226645680009787381e-03, + 2.239093838138439020e-03, + 2.251537738960620628e-03, + 2.263977362482444151e-03, + 2.276412688717538522e-03, + 2.288843697687933075e-03, + 2.301270369423523681e-03, + 2.313692683962378059e-03, + 2.326110621350217962e-03, + 2.338524161641277431e-03, + 2.350933284897933732e-03, + 2.363337971190306638e-03, + 2.375738200597126652e-03, + 2.388133953205223703e-03, + 2.400525209109816410e-03, + 2.412911948414006406e-03, + 2.425294151229638769e-03, + 2.437671797676907361e-03, + 2.450044867883987079e-03, + 2.462413341988019169e-03, + 2.474777200133909498e-03, + 2.487136422476012108e-03, + 2.499490989176373669e-03, + 2.511840880405723578e-03, + 2.524186076343640055e-03, + 2.536526557178181950e-03, + 2.548862303106198390e-03, + 2.561193294332770633e-03, + 2.573519511072123664e-03, + 2.585840933547219403e-03, + 2.598157541989355550e-03, + 2.610469316639075447e-03, + 2.622776237745589982e-03, + 2.635078285567122799e-03, + 2.647375440370372101e-03, + 2.659667682431404029e-03, + 2.671954992035212046e-03, + 2.684237349475376497e-03, + 2.696514735055062506e-03, + 2.708787129085780954e-03, + 2.721054511889122330e-03, + 2.733316863794781754e-03, + 2.745574165142338798e-03, + 2.757826396279980299e-03, + 2.770073537565515606e-03, + 2.782315569365999275e-03, + 2.794552472057352469e-03, + 2.806784226025209935e-03, + 2.819010811664406525e-03, + 2.831232209379269931e-03, + 2.843448399583141471e-03, + 2.855659362699180127e-03, + 2.867865079160030351e-03, + 2.880065529407387949e-03, + 2.892260693892912977e-03, + 2.904450553077678535e-03, + 2.916635087432465669e-03, + 2.928814277437409488e-03, + 2.940988103582175238e-03, + 2.953156546366892451e-03, + 2.965319586300484839e-03, + 2.977477203902265373e-03, + 2.989629379700810882e-03, + 3.001776094234887959e-03, + 3.013917328053107754e-03, + 3.026053061713405989e-03, + 3.038183275784555205e-03, + 3.050307950844339394e-03, + 3.062427067481143881e-03, + 3.074540606292825145e-03, + 3.086648547887664053e-03, + 3.098750872883982918e-03, + 3.110847561909814169e-03, + 3.122938595603680541e-03, + 3.135023954614126265e-03, + 3.147103619600004603e-03, + 3.159177571229986915e-03, + 3.171245790183374949e-03, + 3.183308257149729606e-03, + 3.195364952828540044e-03, + 3.207415857930138309e-03, + 3.219460953174557022e-03, + 3.231500219293160017e-03, + 3.243533637026793127e-03, + 3.255561187127303802e-03, + 3.267582850357009846e-03, + 3.279598607488361586e-03, + 3.291608439304872114e-03, + 3.303612326599972369e-03, + 3.315610250178633103e-03, + 3.327602190855680903e-03, + 3.339588129456718887e-03, + 3.351568046818327509e-03, + 3.363541923787690281e-03, + 3.375509741222883914e-03, + 3.387471479992351393e-03, + 3.399427120975804899e-03, + 3.411376645063777819e-03, + 3.423320033157279101e-03, + 3.435257266168791589e-03, + 3.447188325021055110e-03, + 3.459113190648734851e-03, + 3.471031843996538312e-03, + 3.482944266020773956e-03, + 3.494850437688803036e-03, + 3.506750339978669233e-03, + 3.518643953880101326e-03, + 3.530531260393293246e-03, + 3.542412240530577218e-03, + 3.554286875314556764e-03, + 3.566155145779763801e-03, + 3.578017032971463410e-03, + 3.589872517946629191e-03, + 3.601721581773565956e-03, + 3.613564205531563222e-03, + 3.625400370311701852e-03, + 3.637230057216359232e-03, + 3.649053247359495926e-03, + 3.660869921866167793e-03, + 3.672680061873347373e-03, + 3.684483648529556128e-03, + 3.696280662994505355e-03, + 3.708071086439893287e-03, + 3.719854900049078972e-03, + 3.731632085016665067e-03, + 3.743402622549508313e-03, + 3.755166493865525184e-03, + 3.766923680195308211e-03, + 3.778674162780326640e-03, + 3.790417922874523247e-03, + 3.802154941743134727e-03, + 3.813885200663723850e-03, + 3.825608680925708053e-03, + 3.837325363830097497e-03, + 3.849035230690209339e-03, + 3.860738262831272215e-03, + 3.872434441590649583e-03, + 3.884123748317380893e-03, + 3.895806164372962645e-03, + 3.907481671131034402e-03, + 3.919150249976974601e-03, + 3.930811882308716740e-03, + 3.942466549536296182e-03, + 3.954114233082089980e-03, + 3.965754914380359777e-03, + 3.977388574878045445e-03, + 3.989015196034405991e-03, + 4.000634759320672619e-03, + 4.012247246220982874e-03, + 4.023852638231205370e-03, + 4.035450916860595580e-03, + 4.047042063629935349e-03, + 4.058626060073188685e-03, + 4.070202887736310872e-03, + 4.081772528178197364e-03, + 4.093334962970343778e-03, + 4.104890173696466860e-03, + 4.116438141953328474e-03, + 4.127978849350342691e-03, + 4.139512277509273946e-03, + 4.151038408064967357e-03, + 4.162557222664936725e-03, + 4.174068702969592655e-03, + 4.185572830651796729e-03, + 4.197069587397642132e-03, + 4.208558954906086759e-03, + 4.220040914888621882e-03, + 4.231515449070205430e-03, + 4.242982539188103197e-03, + 4.254442166993457029e-03, + 4.265894314249573521e-03, + 4.277338962733417613e-03, + 4.288776094234554408e-03, + 4.300205690556031281e-03, + 4.311627733514025729e-03, + 4.323042204937374393e-03, + 4.334449086669023288e-03, + 4.345848360564247975e-03, + 4.357240008492184458e-03, + 4.368624012334797885e-03, + 4.380000353987697007e-03, + 4.391369015359847944e-03, + 4.402729978373230713e-03, + 4.414083224963573013e-03, + 4.425428737079913077e-03, + 4.436766496684894576e-03, + 4.448096485754342473e-03, + 4.459418686277507628e-03, + 4.470733080257941090e-03, + 4.482039649711853056e-03, + 4.493338376669605595e-03, + 4.504629243175121978e-03, + 4.515912231285663762e-03, + 4.527187323072649587e-03, + 4.538454500620577904e-03, + 4.549713746028593436e-03, + 4.560965041408700411e-03, + 4.572208368887358508e-03, + 4.583443710604323193e-03, + 4.594671048713610227e-03, + 4.605890365383090608e-03, + 4.617101642794193932e-03, + 4.628304863142629171e-03, + 4.639500008638007371e-03, + 4.650687061503996043e-03, + 4.661866003977938391e-03, + 4.673036818311636538e-03, + 4.684199486770913509e-03, + 4.695353991635359096e-03, + 4.706500315199082726e-03, + 4.717638439770199983e-03, + 4.728768347671185625e-03, + 4.739890021238310665e-03, + 4.751003442822523612e-03, + 4.762108594788995973e-03, + 4.773205459516881126e-03, + 4.784294019400102752e-03, + 4.795374256846394664e-03, + 4.806446154278685122e-03, + 4.817509694133590217e-03, + 4.828564858862326344e-03, + 4.839611630930770042e-03, + 4.850649992819232488e-03, + 4.861679927022627759e-03, + 4.872701416050099002e-03, + 4.883714442425694975e-03, + 4.894718988688095962e-03, + 4.905715037390252081e-03, + 4.916702571100140494e-03, + 4.927681572400325651e-03, + 4.938652023888176132e-03, + 4.949613908175495153e-03, + 4.960567207889164144e-03, + 4.971511905670917240e-03, + 4.982447984176940556e-03, + 4.993375426078737814e-03, + 5.004294214062117267e-03, + 5.015204330828659275e-03, + 5.026105759093985048e-03, + 5.036998481589349125e-03, + 5.047882481060477974e-03, + 5.058757740268482461e-03, + 5.069624241989545595e-03, + 5.080481969014512267e-03, + 5.091330904149760951e-03, + 5.102171030216645989e-03, + 5.113002330051786420e-03, + 5.123824786506631437e-03, + 5.134638382448229732e-03, + 5.145443100758819235e-03, + 5.156238924335582521e-03, + 5.167025836091352839e-03, + 5.177803818954138798e-03, + 5.188572855867435753e-03, + 5.199332929789850233e-03, + 5.210084023695287295e-03, + 5.220826120573816148e-03, + 5.231559203430078547e-03, + 5.242283255284808409e-03, + 5.252998259173790110e-03, + 5.263704198148688555e-03, + 5.274401055276723045e-03, + 5.285088813640221456e-03, + 5.295767456337974188e-03, + 5.306436966483560162e-03, + 5.317097327206843013e-03, + 5.327748521652892963e-03, + 5.338390532982858518e-03, + 5.349023344373621258e-03, + 5.359646939017517417e-03, + 5.370261300122997072e-03, + 5.380866410914236439e-03, + 5.391462254631397208e-03, + 5.402048814530146896e-03, + 5.412626073882426461e-03, + 5.423194015976075602e-03, + 5.433752624114597703e-03, + 5.444301881617908366e-03, + 5.454841771821365703e-03, + 5.465372278077166787e-03, + 5.475893383752768184e-03, + 5.486405072232171387e-03, + 5.496907326915546378e-03, + 5.507400131218754581e-03, + 5.517883468574389695e-03, + 5.528357322430609358e-03, + 5.538821676252617468e-03, + 5.549276513521150637e-03, + 5.559721817733362034e-03, + 5.570157572402921128e-03, + 5.580583761059700575e-03, + 5.591000367250047696e-03, + 5.601407374536343867e-03, + 5.611804766497694927e-03, + 5.622192526729672714e-03, + 5.632570638843933421e-03, + 5.642939086469056335e-03, + 5.653297853249588875e-03, + 5.663646922847396202e-03, + 5.673986278940080022e-03, + 5.684315905222318659e-03, + 5.694635785405374392e-03, + 5.704945903216808965e-03, + 5.715246242401282421e-03, + 5.725536786719584263e-03, + 5.735817519950048120e-03, + 5.746088425886857788e-03, + 5.756349488341619761e-03, + 5.766600691142204430e-03, + 5.776842018133682838e-03, + 5.787073453177933764e-03, + 5.797294980153355759e-03, + 5.807506582955634759e-03, + 5.817708245497169028e-03, + 5.827899951707456866e-03, + 5.838081685532624764e-03, + 5.848253430936115223e-03, + 5.858415171898389250e-03, + 5.868566892416610635e-03, + 5.878708576505338977e-03, + 5.888840208196229574e-03, + 5.898961771537721173e-03, + 5.909073250595824403e-03, + 5.919174629453172881e-03, + 5.929265892210359816e-03, + 5.939347022984427932e-03, + 5.949418005910195664e-03, + 5.959478825139315206e-03, + 5.969529464841051396e-03, + 5.979569909202008503e-03, + 5.989600142425782411e-03, + 5.999620148733629359e-03, + 6.009629912364157153e-03, + 6.019629417573430993e-03, + 6.029618648634659482e-03, + 6.039597589838838210e-03, + 6.049566225494446177e-03, + 6.059524539927143086e-03, + 6.069472517480463229e-03, + 6.079410142515375738e-03, + 6.089337399410576883e-03, + 6.099254272562001748e-03, + 6.109160746383579706e-03, + 6.119056805306900479e-03, + 6.128942433780894088e-03, + 6.138817616272630555e-03, + 6.148682337266379687e-03, + 6.158536581264932933e-03, + 6.168380332788105450e-03, + 6.178213576374040616e-03, + 6.188036296578262874e-03, + 6.197848477974554626e-03, + 6.207650105154480930e-03, + 6.217441162727100658e-03, + 6.227221635320225046e-03, + 6.236991507578872052e-03, + 6.246750764166176216e-03, + 6.256499389763525709e-03, + 6.266237369070156403e-03, + 6.275964686803504888e-03, + 6.285681327698744436e-03, + 6.295387276509445060e-03, + 6.305082518007320246e-03, + 6.314767036981880875e-03, + 6.324440818241240138e-03, + 6.334103846611185452e-03, + 6.343756106936434408e-03, + 6.353397584079202749e-03, + 6.363028262920508021e-03, + 6.372648128359210268e-03, + 6.382257165312811738e-03, + 6.391855358717144636e-03, + 6.401442693525943514e-03, + 6.411019154712104678e-03, + 6.420584727266158767e-03, + 6.430139396197590007e-03, + 6.439683146533926351e-03, + 6.449215963321446379e-03, + 6.458737831624965058e-03, + 6.468248736527462510e-03, + 6.477748663130828213e-03, + 6.487237596555360530e-03, + 6.496715521940071153e-03, + 6.506182424442372852e-03, + 6.515638289238189634e-03, + 6.525083101522765119e-03, + 6.534516846509262622e-03, + 6.543939509430006345e-03, + 6.553351075535986114e-03, + 6.562751530096667431e-03, + 6.572140858400706172e-03, + 6.581519045755029190e-03, + 6.590886077486101530e-03, + 6.600241938938500481e-03, + 6.609586615476205351e-03, + 6.618920092481666781e-03, + 6.628242355356524923e-03, + 6.637553389521376121e-03, + 6.646853180415480608e-03, + 6.656141713497334099e-03, + 6.665418974244371152e-03, + 6.674684948153155988e-03, + 6.683939620738967025e-03, + 6.693182977536471685e-03, + 6.702415004099420218e-03, + 6.711635686000378548e-03, + 6.720845008831336301e-03, + 6.730042958203385009e-03, + 6.739229519746847349e-03, + 6.748404679110977036e-03, + 6.757568421964529545e-03, + 6.766720733995534864e-03, + 6.775861600910977438e-03, + 6.784991008437555107e-03, + 6.794108942320746698e-03, + 6.803215388326074031e-03, + 6.812310332237741899e-03, + 6.821393759859829820e-03, + 6.830465657015402994e-03, + 6.839526009547278185e-03, + 6.848574803317675035e-03, + 6.857612024208027852e-03, + 6.866637658119554601e-03, + 6.875651690972946380e-03, + 6.884654108708185283e-03, + 6.893644897285079558e-03, + 6.902624042682917530e-03, + 6.911591530900688778e-03, + 6.920547347956706834e-03, + 6.929491479889237152e-03, + 6.938423912756186591e-03, + 6.947344632634893519e-03, + 6.956253625622754906e-03, + 6.965150877836418820e-03, + 6.974036375412995259e-03, + 6.982910104508651891e-03, + 6.991772051299880407e-03, + 7.000622201982539816e-03, + 7.009460542772673504e-03, + 7.018287059906146673e-03, + 7.027101739638439044e-03, + 7.035904568245209510e-03, + 7.044695532021948321e-03, + 7.053474617284182652e-03, + 7.062241810367140063e-03, + 7.070997097626269788e-03, + 7.079740465437072729e-03, + 7.088471900194786603e-03, + 7.097191388314987026e-03, + 7.105898916233224956e-03, + 7.114594470405184549e-03, + 7.123278037306572143e-03, + 7.131949603433061606e-03, + 7.140609155301077572e-03, + 7.149256679446542098e-03, + 7.157892162426070758e-03, + 7.166515590816073186e-03, + 7.175126951213551922e-03, + 7.183726230235712960e-03, + 7.192313414519693401e-03, + 7.200888490723556315e-03, + 7.209451445525052148e-03, + 7.218002265622753232e-03, + 7.226540937735208975e-03, + 7.235067448601616331e-03, + 7.243581784981598624e-03, + 7.252083933654904571e-03, + 7.260573881422028447e-03, + 7.269051615103810232e-03, + 7.277517121541709696e-03, + 7.285970387597356240e-03, + 7.294411400153221099e-03, + 7.302840146112317236e-03, + 7.311256612397965156e-03, + 7.319660785954376636e-03, + 7.328052653745981658e-03, + 7.336432202758429340e-03, + 7.344799419997425673e-03, + 7.353154292489667669e-03, + 7.361496807282534582e-03, + 7.369826951443878872e-03, + 7.378144712062615143e-03, + 7.386450076247950795e-03, + 7.394743031130497982e-03, + 7.403023563861129558e-03, + 7.411291661611600114e-03, + 7.419547311574663066e-03, + 7.427790500963846014e-03, + 7.436021217013612933e-03, + 7.444239446979074477e-03, + 7.452445178136478041e-03, + 7.460638397783003056e-03, + 7.468819093236563240e-03, + 7.476987251836294916e-03, + 7.485142860941924707e-03, + 7.493285907934842463e-03, + 7.501416380216775065e-03, + 7.509534265210882770e-03, + 7.517639550361356754e-03, + 7.525732223133216152e-03, + 7.533812271012977659e-03, + 7.541879681507738728e-03, + 7.549934442146455198e-03, + 7.557976540478561316e-03, + 7.566005964075122464e-03, + 7.574022700528056269e-03, + 7.582026737450753631e-03, + 7.590018062477843670e-03, + 7.597996663264922242e-03, + 7.605962527489153018e-03, + 7.613915642848871970e-03, + 7.621855997063847581e-03, + 7.629783577874890525e-03, + 7.637698373044416594e-03, + 7.645600370356220310e-03, + 7.653489557615223392e-03, + 7.661365922647999510e-03, + 7.669229453302553977e-03, + 7.677080137448058332e-03, + 7.684917962975515611e-03, + 7.692742917796961503e-03, + 7.700554989846521668e-03, + 7.708354167079246866e-03, + 7.716140437472146854e-03, + 7.723913789023453130e-03, + 7.731674209753201799e-03, + 7.739421687703028005e-03, + 7.747156210935964710e-03, + 7.754877767536809581e-03, + 7.762586345612051270e-03, + 7.770281933289848592e-03, + 7.777964518719798076e-03, + 7.785634090073460453e-03, + 7.793290635544110855e-03, + 7.800934143346496819e-03, + 7.808564601717365647e-03, + 7.816181998915179910e-03, + 7.823786323220288316e-03, + 7.831377562934498104e-03, + 7.838955706381820973e-03, + 7.846520741908013380e-03, + 7.854072657880486336e-03, + 7.861611442688860515e-03, + 7.869137084744237676e-03, + 7.876649572480184242e-03, + 7.884148894351645370e-03, + 7.891635038835937213e-03, + 7.899107994431997515e-03, + 7.906567749660973685e-03, + 7.914014293066084019e-03, + 7.921447613212151059e-03, + 7.928867698686654572e-03, + 7.936274538098652548e-03, + 7.943668120079315498e-03, + 7.951048433282099925e-03, + 7.958415466382472506e-03, + 7.965769208078085292e-03, + 7.973109647088517243e-03, + 7.980436772155770353e-03, + 7.987750572043927910e-03, + 7.995051035539144091e-03, + 8.002338151450022127e-03, + 8.009611908606995012e-03, + 8.016872295863342046e-03, + 8.024119302094024839e-03, + 8.031352916196651814e-03, + 8.038573127090864121e-03, + 8.045779923718810941e-03, + 8.052973295044960414e-03, + 8.060153230055835949e-03, + 8.067319717760892267e-03, + 8.074472747191328847e-03, + 8.081612307401255663e-03, + 8.088738387466789387e-03, + 8.095850976486726469e-03, + 8.102950063582321089e-03, + 8.110035637897054436e-03, + 8.117107688597104825e-03, + 8.124166204871092686e-03, + 8.131211175930212406e-03, + 8.138242591008010285e-03, + 8.145260439360568414e-03, + 8.152264710266888051e-03, + 8.159255393028100323e-03, + 8.166232476968160112e-03, + 8.173195951433717688e-03, + 8.180145805793744007e-03, + 8.187082029440179501e-03, + 8.194004611787241918e-03, + 8.200913542272366547e-03, + 8.207808810355125481e-03, + 8.214690405518209476e-03, + 8.221558317266662932e-03, + 8.228412535128582991e-03, + 8.235253048654730956e-03, + 8.242079847418475047e-03, + 8.248892921016147753e-03, + 8.255692259066860217e-03, + 8.262477851212559482e-03, + 8.269249687117816855e-03, + 8.276007756470318832e-03, + 8.282752048980530565e-03, + 8.289482554381654225e-03, + 8.296199262429955132e-03, + 8.302902162904565730e-03, + 8.309591245607594878e-03, + 8.316266500363874575e-03, + 8.322927917021410993e-03, + 8.329575485451235287e-03, + 8.336209195547049713e-03, + 8.342829037225921521e-03, + 8.349435000427523138e-03, + 8.356027075115136579e-03, + 8.362605251274498122e-03, + 8.369169518914844341e-03, + 8.375719868068134955e-03, + 8.382256288789684262e-03, + 8.388778771157899203e-03, + 8.395287305274090270e-03, + 8.401781881262938151e-03, + 8.408262489272219642e-03, + 8.414729119472766014e-03, + 8.421181762058688527e-03, + 8.427620407247293430e-03, + 8.434045045279187774e-03, + 8.440455666417909925e-03, + 8.446852260950543645e-03, + 8.453234819187350341e-03, + 8.459603331461697934e-03, + 8.465957788130513625e-03, + 8.472298179573642049e-03, + 8.478624496194782020e-03, + 8.484936728420423152e-03, + 8.491234866700773931e-03, + 8.497518901509125075e-03, + 8.503788823342293621e-03, + 8.510044622720577823e-03, + 8.516286290187354696e-03, + 8.522513816309706253e-03, + 8.528727191678069086e-03, + 8.534926406906329782e-03, + 8.541111452631689610e-03, + 8.547282319514962895e-03, + 8.553438998240528446e-03, + 8.559581479515963529e-03, + 8.565709754072649285e-03, + 8.571823812665370010e-03, + 8.577923646072538669e-03, + 8.584009245095962706e-03, + 8.590080600560984561e-03, + 8.596137703316894529e-03, + 8.602180544236158813e-03, + 8.608209114215115143e-03, + 8.614223404173499202e-03, + 8.620223405054885241e-03, + 8.626209107826500466e-03, + 8.632180503478950953e-03, + 8.638137583026971045e-03, + 8.644080337508523032e-03, + 8.650008757985666250e-03, + 8.655922835543818084e-03, + 8.661822561292388881e-03, + 8.667707926364511331e-03, + 8.673578921916828832e-03, + 8.679435539130047131e-03, + 8.685277769208530133e-03, + 8.691105603380461231e-03, + 8.696919032897739224e-03, + 8.702718049036188216e-03, + 8.708502643095521190e-03, + 8.714272806399065915e-03, + 8.720028530294316599e-03, + 8.725769806152239988e-03, + 8.731496625368220799e-03, + 8.737208979361026084e-03, + 8.742906859573683007e-03, + 8.748590257473001786e-03, + 8.754259164549667641e-03, + 8.759913572318499264e-03, + 8.765553472318020345e-03, + 8.771178856111066721e-03, + 8.776789715284175758e-03, + 8.782386041447919414e-03, + 8.787967826237008326e-03, + 8.793535061310102721e-03, + 8.799087738349975485e-03, + 8.804625849063251949e-03, + 8.810149385180789799e-03, + 8.815658338457566315e-03, + 8.821152700672411223e-03, + 8.826632463628525382e-03, + 8.832097619152906587e-03, + 8.837548159097092029e-03, + 8.842984075336334307e-03, + 8.848405359770267556e-03, + 8.853812004322704488e-03, + 8.859204000941421284e-03, + 8.864581341598639849e-03, + 8.869944018290434537e-03, + 8.875292023037594305e-03, + 8.880625347884561066e-03, + 8.885943984900411541e-03, + 8.891247926178213676e-03, + 8.896537163835460324e-03, + 8.901811690013862813e-03, + 8.907071496879311046e-03, + 8.912316576622057382e-03, + 8.917546921456687148e-03, + 8.922762523622106492e-03, + 8.927963375381360242e-03, + 8.933149469022017009e-03, + 8.938320796856009595e-03, + 8.943477351219386931e-03, + 8.948619124472822345e-03, + 8.953746109001238865e-03, + 8.958858297214043406e-03, + 8.963955681544913401e-03, + 8.969038254451867920e-03, + 8.974106008417715233e-03, + 8.979158935949258305e-03, + 8.984197029578104912e-03, + 8.989220281860022324e-03, + 8.994228685375397006e-03, + 8.999222232729137474e-03, + 9.004200916550500824e-03, + 9.009164729493313040e-03, + 9.014113664235932563e-03, + 9.019047713481245093e-03, + 9.023966869956552561e-03, + 9.028871126413803849e-03, + 9.033760475629521933e-03, + 9.038634910404661632e-03, + 9.043494423564850740e-03, + 9.048339007960282468e-03, + 9.053168656465772693e-03, + 9.057983361980631587e-03, + 9.062783117428866581e-03, + 9.067567915759184097e-03, + 9.072337749944698118e-03, + 9.077092612983429787e-03, + 9.081832497897762702e-03, + 9.086557397735124664e-03, + 9.091267305567233073e-03, + 9.095962214490768000e-03, + 9.100642117626891667e-03, + 9.105307008121624884e-03, + 9.109956879145708272e-03, + 9.114591723894399297e-03, + 9.119211535588015241e-03, + 9.123816307471343395e-03, + 9.128406032813988005e-03, + 9.132980704910384148e-03, + 9.137540317079714466e-03, + 9.142084862665973352e-03, + 9.146614335037805618e-03, + 9.151128727588803136e-03, + 9.155628033737405955e-03, + 9.160112246926647300e-03, + 9.164581360624658377e-03, + 9.169035368324123664e-03, + 9.173474263542966134e-03, + 9.177898039823523257e-03, + 9.182306690733379670e-03, + 9.186700209864714917e-03, + 9.191078590834730194e-03, + 9.195441827285558145e-03, + 9.199789912884047752e-03, + 9.204122841322267407e-03, + 9.208440606316889085e-03, + 9.212743201609752131e-03, + 9.217030620967431309e-03, + 9.221302858181608039e-03, + 9.225559907068933349e-03, + 9.229801761470816240e-03, + 9.234028415253871247e-03, + 9.238239862309613123e-03, + 9.242436096554541847e-03, + 9.246617111930114860e-03, + 9.250782902402894525e-03, + 9.254933461964402405e-03, + 9.259068784631162632e-03, + 9.263188864444740073e-03, + 9.267293695471872164e-03, + 9.271383271804147994e-03, + 9.275457587558381262e-03, + 9.279516636876245991e-03, + 9.283560413924824700e-03, + 9.287588912895949206e-03, + 9.291602128006792166e-03, + 9.295600053499424725e-03, + 9.299582683641147846e-03, + 9.303550012724415980e-03, + 9.307502035066687884e-03, + 9.311438745010593154e-03, + 9.315360136923966916e-03, + 9.319266205199822073e-03, + 9.323156944256120321e-03, + 9.327032348536191952e-03, + 9.330892412508503403e-03, + 9.334737130666610413e-03, + 9.338566497529336707e-03, + 9.342380507640697662e-03, + 9.346179155569908983e-03, + 9.349962435911346806e-03, + 9.353730343284646573e-03, + 9.357482872334734261e-03, + 9.361220017731597398e-03, + 9.364941774170671904e-03, + 9.368648136372392798e-03, + 9.372339099082752784e-03, + 9.376014657072738456e-03, + 9.379674805138800420e-03, + 9.383319538102506338e-03, + 9.386948850810809819e-03, + 9.390562738135972351e-03, + 9.394161194975462689e-03, + 9.397744216252081756e-03, + 9.401311796914073662e-03, + 9.404863931934735397e-03, + 9.408400616312940709e-03, + 9.411921845072794904e-03, + 9.415427613263784024e-03, + 9.418917915960630868e-03, + 9.422392748263529183e-03, + 9.425852105298004879e-03, + 9.429295982214884811e-03, + 9.432724374190498001e-03, + 9.436137276426365128e-03, + 9.439534684149653021e-03, + 9.442916592612655979e-03, + 9.446282997093260678e-03, + 9.449633892894587078e-03, + 9.452969275345338845e-03, + 9.456289139799600382e-03, + 9.459593481636739687e-03, + 9.462882296261694581e-03, + 9.466155579104835668e-03, + 9.469413325621961128e-03, + 9.472655531294222123e-03, + 9.475882191628384743e-03, + 9.479093302156606227e-03, + 9.482288858436407203e-03, + 9.485468856050938841e-03, + 9.488633290608778151e-03, + 9.491782157744016457e-03, + 9.494915453116136231e-03, + 9.498033172410139460e-03, + 9.501135311336698572e-03, + 9.504221865631750504e-03, + 9.507292831056956411e-03, + 9.510348203399314818e-03, + 9.513387978471480808e-03, + 9.516412152111632453e-03, + 9.519420720183333767e-03, + 9.522413678575977064e-03, + 9.525391023204187943e-03, + 9.528352750008368260e-03, + 9.531298854954314489e-03, + 9.534229334033498746e-03, + 9.537144183263006336e-03, + 9.540043398685296369e-03, + 9.542926976368605943e-03, + 9.545794912406643101e-03, + 9.548647202918819285e-03, + 9.551483844049938818e-03, + 9.554304831970578810e-03, + 9.557110162876931297e-03, + 9.559899832990640181e-03, + 9.562673838559116943e-03, + 9.565432175855219724e-03, + 9.568174841177732107e-03, + 9.570901830850717801e-03, + 9.573613141224074016e-03, + 9.576308768673326768e-03, + 9.578988709599542406e-03, + 9.581652960429589555e-03, + 9.584301517615757479e-03, + 9.586934377636253946e-03, + 9.589551536994769809e-03, + 9.592152992220751365e-03, + 9.594738739869204322e-03, + 9.597308776520922791e-03, + 9.599863098782352236e-03, + 9.602401703285542642e-03, + 9.604924586688351473e-03, + 9.607431745674226836e-03, + 9.609923176952318499e-03, + 9.612398877257545549e-03, + 9.614858843350433323e-03, + 9.617303072017349339e-03, + 9.619731560070220525e-03, + 9.622144304346762211e-03, + 9.624541301710413943e-03, + 9.626922549050296110e-03, + 9.629288043281322707e-03, + 9.631637781343984489e-03, + 9.633971760204761842e-03, + 9.636289976855597419e-03, + 9.638592428314409627e-03, + 9.640879111624653733e-03, + 9.643150023855654937e-03, + 9.645405162102521635e-03, + 9.647644523485970208e-03, + 9.649868105152583503e-03, + 9.652075904274701537e-03, + 9.654267918050419769e-03, + 9.656444143703564811e-03, + 9.658604578483743000e-03, + 9.660749219666411522e-03, + 9.662878064552671981e-03, + 9.664991110469514993e-03, + 9.667088354769643246e-03, + 9.669169794831638035e-03, + 9.671235428059789252e-03, + 9.673285251884116212e-03, + 9.675319263760638264e-03, + 9.677337461170958458e-03, + 9.679339841622615695e-03, + 9.681326402648914725e-03, + 9.683297141808915737e-03, + 9.685252056687569666e-03, + 9.687191144895582889e-03, + 9.689114404069490080e-03, + 9.691021831871638598e-03, + 9.692913425990256140e-03, + 9.694789184139277274e-03, + 9.696649104058506496e-03, + 9.698493183513652929e-03, + 9.700321420296142971e-03, + 9.702133812223290299e-03, + 9.703930357138209131e-03, + 9.705711052909935660e-03, + 9.707475897433221618e-03, + 9.709224888628723363e-03, + 9.710958024442949837e-03, + 9.712675302848210526e-03, + 9.714376721842736886e-03, + 9.716062279450465508e-03, + 9.717731973721379854e-03, + 9.719385802731128621e-03, + 9.721023764581346663e-03, + 9.722645857399422539e-03, + 9.724252079338701477e-03, + 9.725842428578315366e-03, + 9.727416903323234804e-03, + 9.728975501804413076e-03, + 9.730518222278571050e-03, + 9.732045063028264831e-03, + 9.733556022362000251e-03, + 9.735051098614123585e-03, + 9.736530290144830221e-03, + 9.737993595340201092e-03, + 9.739441012612187060e-03, + 9.740872540398654023e-03, + 9.742288177163235460e-03, + 9.743687921395535398e-03, + 9.745071771611003505e-03, + 9.746439726350994079e-03, + 9.747791784182708794e-03, + 9.749127943699231399e-03, + 9.750448203519539864e-03, + 9.751752562288490758e-03, + 9.753041018676819260e-03, + 9.754313571381121803e-03, + 9.755570219123972306e-03, + 9.756810960653689718e-03, + 9.758035794744615576e-03, + 9.759244720196879816e-03, + 9.760437735836567305e-03, + 9.761614840515598149e-03, + 9.762776033111793608e-03, + 9.763921312528922938e-03, + 9.765050677696576753e-03, + 9.766164127570246822e-03, + 9.767261661131336481e-03, + 9.768343277387115525e-03, + 9.769408975370822562e-03, + 9.770458754141444699e-03, + 9.771492612783984691e-03, + 9.772510550409311755e-03, + 9.773512566154139020e-03, + 9.774498659181153626e-03, + 9.775468828678812033e-03, + 9.776423073861641860e-03, + 9.777361393969848102e-03, + 9.778283788269746812e-03, + 9.779190256053373054e-03, + 9.780080796638758456e-03, + 9.780955409369783762e-03, + 9.781814093616210057e-03, + 9.782656848773723865e-03, + 9.783483674263888583e-03, + 9.784294569534186109e-03, + 9.785089534057935315e-03, + 9.785868567334377044e-03, + 9.786631668888651561e-03, + 9.787378838271729165e-03, + 9.788110075060581922e-03, + 9.788825378857956422e-03, + 9.789524749292573269e-03, + 9.790208186018960548e-03, + 9.790875688717597808e-03, + 9.791527257094815445e-03, + 9.792162890882845014e-03, + 9.792782589839781060e-03, + 9.793386353749638368e-03, + 9.793974182422261754e-03, + 9.794546075693449233e-03, + 9.795102033424795893e-03, + 9.795642055503843079e-03, + 9.796166141843939620e-03, + 9.796674292384410093e-03, + 9.797166507090379617e-03, + 9.797642785952836303e-03, + 9.798103128988711052e-03, + 9.798547536240724901e-03, + 9.798976007777578101e-03, + 9.799388543693709000e-03, + 9.799785144109512611e-03, + 9.800165809171250408e-03, + 9.800530539050979206e-03, + 9.800879333946670852e-03, + 9.801212194082193144e-03, + 9.801529119707176260e-03, + 9.801830111097200107e-03, + 9.802115168553660746e-03, + 9.802384292403780799e-03, + 9.802637483000718743e-03, + 9.802874740723362471e-03, + 9.803096065976612053e-03, + 9.803301459191024123e-03, + 9.803490920823167490e-03, + 9.803664451355368140e-03, + 9.803822051295795967e-03, + 9.803963721178476920e-03, + 9.804089461563270450e-03, + 9.804199273035890325e-03, + 9.804293156207826571e-03, + 9.804371111716459961e-03, + 9.804433140224959667e-03, + 9.804479242422343976e-03, + 9.804509419023466413e-03, + 9.804523670768963695e-03, + 9.804521998425247062e-03, + 9.804504402784719116e-03, + 9.804470884665388714e-03, + 9.804421444911190150e-03, + 9.804356084391853063e-03, + 9.804274804002883342e-03, + 9.804177604665622117e-03, + 9.804064487327171160e-03, + 9.803935452960481356e-03, + 9.803790502564253828e-03, + 9.803629637163000649e-03, + 9.803452857807011880e-03, + 9.803260165572319149e-03, + 9.803051561560877786e-03, + 9.802827046900278868e-03, + 9.802586622743912279e-03, + 9.802330290270997934e-03, + 9.802058050686485169e-03, + 9.801769905221109982e-03, + 9.801465855131363814e-03, + 9.801145901699464050e-03, + 9.800810046233440764e-03, + 9.800458290067046510e-03, + 9.800090634559770197e-03, + 9.799707081096885666e-03, + 9.799307631089410053e-03, + 9.798892285973980626e-03, + 9.798461047213163563e-03, + 9.798013916295124359e-03, + 9.797550894733806498e-03, + 9.797071984068816963e-03, + 9.796577185865604914e-03, + 9.796066501715184130e-03, + 9.795539933234375871e-03, + 9.794997482065734284e-03, + 9.794439149877433651e-03, + 9.793864938363414097e-03, + 9.793274849243248023e-03, + 9.792668884262301435e-03, + 9.792047045191522303e-03, + 9.791409333827641795e-03, + 9.790755751992952227e-03, + 9.790086301535574215e-03, + 9.789400984329144420e-03, + 9.788699802273070558e-03, + 9.787982757292403024e-03, + 9.787249851337808879e-03, + 9.786501086385681128e-03, + 9.785736464437982604e-03, + 9.784955987522388210e-03, + 9.784159657692173898e-03, + 9.783347477026294731e-03, + 9.782519447629249576e-03, + 9.781675571631291005e-03, + 9.780815851188196311e-03, + 9.779940288481375060e-03, + 9.779048885717863890e-03, + 9.778141645130342119e-03, + 9.777218568977050217e-03, + 9.776279659541788070e-03, + 9.775324919134045082e-03, + 9.774354350088812829e-03, + 9.773367954766708221e-03, + 9.772365735553954422e-03, + 9.771347694862281968e-03, + 9.770313835129008570e-03, + 9.769264158817030433e-03, + 9.768198668414801444e-03, + 9.767117366436331438e-03, + 9.766020255421134152e-03, + 9.764907337934326109e-03, + 9.763778616566508653e-03, + 9.762634093933842544e-03, + 9.761473772677988978e-03, + 9.760297655466175504e-03, + 9.759105744991067657e-03, + 9.757898043970926819e-03, + 9.756674555149422862e-03, + 9.755435281295804159e-03, + 9.754180225204769211e-03, + 9.752909389696513484e-03, + 9.751622777616691246e-03, + 9.750320391836465872e-03, + 9.749002235252414439e-03, + 9.747668310786623130e-03, + 9.746318621386626524e-03, + 9.744953170025416264e-03, + 9.743571959701354326e-03, + 9.742174993438329142e-03, + 9.740762274285651515e-03, + 9.739333805317971354e-03, + 9.737889589635499721e-03, + 9.736429630363696575e-03, + 9.734953930653548332e-03, + 9.733462493681382249e-03, + 9.731955322648975712e-03, + 9.730432420783401842e-03, + 9.728893791337209912e-03, + 9.727339437588260543e-03, + 9.725769362839793361e-03, + 9.724183570420388834e-03, + 9.722582063684087963e-03, + 9.720964846010100857e-03, + 9.719331920803162342e-03, + 9.717683291493169409e-03, + 9.716018961535498669e-03, + 9.714338934410725324e-03, + 9.712643213624805316e-03, + 9.710931802708971244e-03, + 9.709204705219805220e-03, + 9.707461924739124379e-03, + 9.705703464874012101e-03, + 9.703929329256909958e-03, + 9.702139521545447703e-03, + 9.700334045422623688e-03, + 9.698512904596542916e-03, + 9.696676102800698069e-03, + 9.694823643793759604e-03, + 9.692955531359601778e-03, + 9.691071769307399789e-03, + 9.689172361471494466e-03, + 9.687257311711463398e-03, + 9.685326623912082766e-03, + 9.683380301983297855e-03, + 9.681418349860337544e-03, + 9.679440771503483587e-03, + 9.677447570898238885e-03, + 9.675438752055285849e-03, + 9.673414319010541912e-03, + 9.671374275824927078e-03, + 9.669318626584584228e-03, + 9.667247375400797593e-03, + 9.665160526409954586e-03, + 9.663058083773561416e-03, + 9.660940051678232679e-03, + 9.658806434335719115e-03, + 9.656657235982867710e-03, + 9.654492460881529750e-03, + 9.652312113318734302e-03, + 9.650116197606509530e-03, + 9.647904718082030151e-03, + 9.645677679107419675e-03, + 9.643435085069906529e-03, + 9.641176940381765079e-03, + 9.638903249480287871e-03, + 9.636614016827733595e-03, + 9.634309246911471059e-03, + 9.631988944243816131e-03, + 9.629653113362064698e-03, + 9.627301758828518685e-03, + 9.624934885230473913e-03, + 9.622552497180209691e-03, + 9.620154599314865648e-03, + 9.617741196296632558e-03, + 9.615312292812632639e-03, + 9.612867893574902206e-03, + 9.610408003320369125e-03, + 9.607932626810946480e-03, + 9.605441768833385130e-03, + 9.602935434199441969e-03, + 9.600413627745572887e-03, + 9.597876354333335219e-03, + 9.595323618848973155e-03, + 9.592755426203738653e-03, + 9.590171781333632975e-03, + 9.587572689199517703e-03, + 9.584958154787139029e-03, + 9.582328183107023667e-03, + 9.579682779194508349e-03, + 9.577021948109762373e-03, + 9.574345694937758111e-03, + 9.571654024788231116e-03, + 9.568946942795655830e-03, + 9.566224454119373957e-03, + 9.563486563943434868e-03, + 9.560733277476560904e-03, + 9.557964599952378099e-03, + 9.555180536629043209e-03, + 9.552381092789663519e-03, + 9.549566273741809386e-03, + 9.546736084817928833e-03, + 9.543890531375071734e-03, + 9.541029618795049405e-03, + 9.538153352484252459e-03, + 9.535261737873760093e-03, + 9.532354780419350498e-03, + 9.529432485601375957e-03, + 9.526494858924872133e-03, + 9.523541905919375924e-03, + 9.520573632139242917e-03, + 9.517590043163264013e-03, + 9.514591144594811145e-03, + 9.511576942061988199e-03, + 9.508547441217308355e-03, + 9.505502647737905722e-03, + 9.502442567325417380e-03, + 9.499367205706153380e-03, + 9.496276568630787965e-03, + 9.493170661874572938e-03, + 9.490049491237311646e-03, + 9.486913062543206321e-03, + 9.483761381641054103e-03, + 9.480594454404052754e-03, + 9.477412286729811064e-03, + 9.474214884540595183e-03, + 9.471002253782809938e-03, + 9.467774400427583434e-03, + 9.464531330470222353e-03, + 9.461273049930675125e-03, + 9.457999564853099977e-03, + 9.454710881306080048e-03, + 9.451407005382645929e-03, + 9.448087943200135161e-03, + 9.444753700900249474e-03, + 9.441404284648973258e-03, + 9.438039700636779994e-03, + 9.434659955078290514e-03, + 9.431265054212522800e-03, + 9.427855004302791372e-03, + 9.424429811636644838e-03, + 9.420989482526046302e-03, + 9.417534023306908461e-03, + 9.414063440339806577e-03, + 9.410577740009237746e-03, + 9.407076928724032033e-03, + 9.403561012917329917e-03, + 9.400029999046259632e-03, + 9.396483893592438505e-03, + 9.392922703061331105e-03, + 9.389346433982858134e-03, + 9.385755092910900294e-03, + 9.382148686423622680e-03, + 9.378527221123242330e-03, + 9.374890703636061182e-03, + 9.371239140612656893e-03, + 9.367572538727525489e-03, + 9.363890904679306876e-03, + 9.360194245190805659e-03, + 9.356482567008734402e-03, + 9.352755876904022408e-03, + 9.349014181671441021e-03, + 9.345257488129962709e-03, + 9.341485803122488718e-03, + 9.337699133515888969e-03, + 9.333897486201163385e-03, + 9.330080868093086274e-03, + 9.326249286130667768e-03, + 9.322402747276468601e-03, + 9.318541258517422377e-03, + 9.314664826864072281e-03, + 9.310773459351065484e-03, + 9.306867163036859972e-03, + 9.302945945003762707e-03, + 9.299009812358116980e-03, + 9.295058772229958938e-03, + 9.291092831773234417e-03, + 9.287111998165733032e-03, + 9.283116278609121128e-03, + 9.279105680328797803e-03, + 9.275080210573938277e-03, + 9.271039876617644809e-03, + 9.266984685756662204e-03, + 9.262914645311518327e-03, + 9.258829762626470325e-03, + 9.254730045069593097e-03, + 9.250615500032722052e-03, + 9.246486134931116568e-03, + 9.242341957204070618e-03, + 9.238182974314328166e-03, + 9.234009193748457869e-03, + 9.229820623016572051e-03, + 9.225617269652427316e-03, + 9.221399141213523429e-03, + 9.217166245280832698e-03, + 9.212918589459006408e-03, + 9.208656181376210018e-03, + 9.204379028684359088e-03, + 9.200087139058737637e-03, + 9.195780520198182026e-03, + 9.191459179825249223e-03, + 9.187123125685838637e-03, + 9.182772365549386404e-03, + 9.178406907208827223e-03, + 9.174026758480665483e-03, + 9.169631927204756686e-03, + 9.165222421244368159e-03, + 9.160798248486402839e-03, + 9.156359416840925691e-03, + 9.151905934241739635e-03, + 9.147437808645611859e-03, + 9.142955048033103022e-03, + 9.138457660407819580e-03, + 9.133945653796975844e-03, + 9.129419036250993255e-03, + 9.124877815843536813e-03, + 9.120322000671841206e-03, + 9.115751598856053350e-03, + 9.111166618539973117e-03, + 9.106567067890484340e-03, + 9.101952955097757786e-03, + 9.097324288375154000e-03, + 9.092681075959285764e-03, + 9.088023326110040642e-03, + 9.083351047110398840e-03, + 9.078664247266558102e-03, + 9.073962934907904218e-03, + 9.069247118386926029e-03, + 9.064516806079414915e-03, + 9.059772006383888868e-03, + 9.055012727722440771e-03, + 9.050238978539897061e-03, + 9.045450767304421408e-03, + 9.040648102507089709e-03, + 9.035830992661942132e-03, + 9.030999446306368222e-03, + 9.026153472000328012e-03, + 9.021293078327191628e-03, + 9.016418273893048868e-03, + 9.011529067327141151e-03, + 9.006625467281519776e-03, + 9.001707482431221125e-03, + 8.996775121474308301e-03, + 8.991828393131631736e-03, + 8.986867306146936740e-03, + 8.981891869286863506e-03, + 8.976902091341021697e-03, + 8.971897981121766674e-03, + 8.966879547464222042e-03, + 8.961846799226543328e-03, + 8.956799745289491244e-03, + 8.951738394556672807e-03, + 8.946662755954466750e-03, + 8.941572838432014850e-03, + 8.936468650961320800e-03, + 8.931350202536776639e-03, + 8.926217502175873980e-03, + 8.921070558918508392e-03, + 8.915909381827456445e-03, + 8.910733979988016626e-03, + 8.905544362508129030e-03, + 8.900340538518514144e-03, + 8.895122517172360591e-03, + 8.889890307645509013e-03, + 8.884643919136282070e-03, + 8.879383360865788014e-03, + 8.874108642077504355e-03, + 8.868819772037444399e-03, + 8.863516760034264794e-03, + 8.858199615379003591e-03, + 8.852868347405227697e-03, + 8.847522965468895828e-03, + 8.842163478948637800e-03, + 8.836789897245268810e-03, + 8.831402229782084334e-03, + 8.826000486004960746e-03, + 8.820584675381886938e-03, + 8.815154807403554130e-03, + 8.809710891582557893e-03, + 8.804252937454281128e-03, + 8.798780954576075272e-03, + 8.793294952527921232e-03, + 8.787794940911836106e-03, + 8.782280929352126453e-03, + 8.776752927495509726e-03, + 8.771210945010841920e-03, + 8.765654991589075934e-03, + 8.760085076943679647e-03, + 8.754501210809999268e-03, + 8.748903402945722510e-03, + 8.743291663130555932e-03, + 8.737666001166554536e-03, + 8.732026426877710634e-03, + 8.726372950110092633e-03, + 8.720705580732061868e-03, + 8.715024328633799028e-03, + 8.709329203727826305e-03, + 8.703620215948268402e-03, + 8.697897375251752855e-03, + 8.692160691616513182e-03, + 8.686410175043060219e-03, + 8.680645835553665174e-03, + 8.674867683192569526e-03, + 8.669075728026089112e-03, + 8.663269980142331364e-03, + 8.657450449651295926e-03, + 8.651617146684812201e-03, + 8.645770081396789153e-03, + 8.639909263962734787e-03, + 8.634034704580042380e-03, + 8.628146413468037318e-03, + 8.622244400867694336e-03, + 8.616328677041817929e-03, + 8.610399252274855003e-03, + 8.604456136873255695e-03, + 8.598499341164921733e-03, + 8.592528875499503074e-03, + 8.586544750248500252e-03, + 8.580546975804837634e-03, + 8.574535562583335269e-03, + 8.568510521020238774e-03, + 8.562471861573430973e-03, + 8.556419594722596694e-03, + 8.550353730968589597e-03, + 8.544274280834287388e-03, + 8.538181254863691505e-03, + 8.532074663622683450e-03, + 8.525954517698402027e-03, + 8.519820827699465388e-03, + 8.513673604256168786e-03, + 8.507512858020066515e-03, + 8.501338599664166190e-03, + 8.495150839882866303e-03, + 8.488949589392124490e-03, + 8.482734858929084562e-03, + 8.476506659252260392e-03, + 8.470265001141667749e-03, + 8.464009895398381944e-03, + 8.457741352845138047e-03, + 8.451459384325454849e-03, + 8.445164000704592430e-03, + 8.438855212868790617e-03, + 8.432533031725482353e-03, + 8.426197468203552171e-03, + 8.419848533252791492e-03, + 8.413486237844472818e-03, + 8.407110592970567370e-03, + 8.400721609644622861e-03, + 8.394319298901007156e-03, + 8.387903671795392258e-03, + 8.381474739404377872e-03, + 8.375032512825579881e-03, + 8.368577003177869733e-03, + 8.362108221600925151e-03, + 8.355626179255396663e-03, + 8.349130887323174752e-03, + 8.342622357006763620e-03, + 8.336100599530044467e-03, + 8.329565626137210368e-03, + 8.323017448093963239e-03, + 8.316456076686525034e-03, + 8.309881523222035007e-03, + 8.303293799028634709e-03, + 8.296692915455034303e-03, + 8.290078883871121462e-03, + 8.283451715667012466e-03, + 8.276811422254155490e-03, + 8.270158015064347015e-03, + 8.263491505550401434e-03, + 8.256811905185613282e-03, + 8.250119225463998368e-03, + 8.243413477900416939e-03, + 8.236694674030198976e-03, + 8.229962825409324612e-03, + 8.223217943614359940e-03, + 8.216460040242618348e-03, + 8.209689126911841328e-03, + 8.202905215260250515e-03, + 8.196108316946847799e-03, + 8.189298443650908782e-03, + 8.182475607072265539e-03, + 8.175639818931167840e-03, + 8.168791090968461829e-03, + 8.161929434945475528e-03, + 8.155054862643481076e-03, + 8.148167385864726886e-03, + 8.141267016431374265e-03, + 8.134353766186321402e-03, + 8.127427646992474788e-03, + 8.120488670733092690e-03, + 8.113536849311986376e-03, + 8.106572194652930316e-03, + 8.099594718700073304e-03, + 8.092604433417671314e-03, + 8.085601350790470876e-03, + 8.078585482823133143e-03, + 8.071556841540504512e-03, + 8.064515438987774482e-03, + 8.057461287230066257e-03, + 8.050394398352631042e-03, + 8.043314784460789055e-03, + 8.036222457680101267e-03, + 8.029117430155954804e-03, + 8.021999714053765912e-03, + 8.014869321559170770e-03, + 8.007726264877491201e-03, + 8.000570556234359171e-03, + 7.993402207874851159e-03, + 7.986221232064431852e-03, + 7.979027641088159636e-03, + 7.971821447251220896e-03, + 7.964602662878425207e-03, + 7.957371300314416973e-03, + 7.950127371923987676e-03, + 7.942870890091139127e-03, + 7.935601867220243993e-03, + 7.928320315734939047e-03, + 7.921026248078985588e-03, + 7.913719676715592899e-03, + 7.906400614127626417e-03, + 7.899069072817881815e-03, + 7.891725065308552445e-03, + 7.884368604141453116e-03, + 7.876999701878226526e-03, + 7.869618371099756926e-03, + 7.862224624406949011e-03, + 7.854818474419610758e-03, + 7.847399933777698955e-03, + 7.839969015140162145e-03, + 7.832525731185834006e-03, + 7.825070094612706501e-03, + 7.817602118138203965e-03, + 7.810121814499532654e-03, + 7.802629196452606081e-03, + 7.795124276773368610e-03, + 7.787607068256677430e-03, + 7.780077583716992970e-03, + 7.772535835987868895e-03, + 7.764981837922142922e-03, + 7.757415602392099020e-03, + 7.749837142289038062e-03, + 7.742246470523604825e-03, + 7.734643600025451447e-03, + 7.727028543743711883e-03, + 7.719401314646378263e-03, + 7.711761925720622690e-03, + 7.704110389972904788e-03, + 7.696446720428521543e-03, + 7.688770930131960321e-03, + 7.681083032146605698e-03, + 7.673383039555054311e-03, + 7.665670965458916235e-03, + 7.657946822978344004e-03, + 7.650210625253010127e-03, + 7.642462385441027226e-03, + 7.634702116719825800e-03, + 7.626929832285375341e-03, + 7.619145545352590254e-03, + 7.611349269155437414e-03, + 7.603541016946424418e-03, + 7.595720801996917911e-03, + 7.587888637597037765e-03, + 7.580044537055808870e-03, + 7.572188513700802044e-03, + 7.564320580878245055e-03, + 7.556440751953318394e-03, + 7.548549040309573271e-03, + 7.540645459349303720e-03, + 7.532730022493308933e-03, + 7.524802743181240212e-03, + 7.516863634871066673e-03, + 7.508912711039242641e-03, + 7.500949985181090164e-03, + 7.492975470809980221e-03, + 7.484989181458277276e-03, + 7.476991130676124975e-03, + 7.468981332032717697e-03, + 7.460959799115222425e-03, + 7.452926545529536817e-03, + 7.444881584899675116e-03, + 7.436824930867919070e-03, + 7.428756597095192635e-03, + 7.420676597260426194e-03, + 7.412584945060791616e-03, + 7.404481654211972873e-03, + 7.396366738447628271e-03, + 7.388240211519692298e-03, + 7.380102087198161381e-03, + 7.371952379271466856e-03, + 7.363791101545918982e-03, + 7.355618267845883892e-03, + 7.347433892014082826e-03, + 7.339237987910982378e-03, + 7.331030569415485781e-03, + 7.322811650423857385e-03, + 7.314581244851028029e-03, + 7.306339366629419768e-03, + 7.298086029709757727e-03, + 7.289821248060381412e-03, + 7.281545035667549154e-03, + 7.273257406535668830e-03, + 7.264958374686682034e-03, + 7.256647954160476942e-03, + 7.248326159014622898e-03, + 7.239993003324734708e-03, + 7.231648501183949619e-03, + 7.223292666703057426e-03, + 7.214925514010892514e-03, + 7.206547057253646048e-03, + 7.198157310595265819e-03, + 7.189756288217235940e-03, + 7.181344004318956746e-03, + 7.172920473117064787e-03, + 7.164485708845823135e-03, + 7.156039725757269709e-03, + 7.147582538120581495e-03, + 7.139114160222934970e-03, + 7.130634606368239752e-03, + 7.122143890878444850e-03, + 7.113642028092928039e-03, + 7.105129032367865291e-03, + 7.096604918077468495e-03, + 7.088069699612832737e-03, + 7.079523391382708253e-03, + 7.070966007812901945e-03, + 7.062397563346482082e-03, + 7.053818072443991671e-03, + 7.045227549582993957e-03, + 7.036626009258272786e-03, + 7.028013465981710305e-03, + 7.019389934282630437e-03, + 7.010755428707203876e-03, + 7.002109963818670124e-03, + 6.993453554197649746e-03, + 6.984786214441432266e-03, + 6.976107959164781075e-03, + 6.967418802998822346e-03, + 6.958718760592307907e-03, + 6.950007846610575281e-03, + 6.941286075735872071e-03, + 6.932553462667642198e-03, + 6.923810022121828535e-03, + 6.915055768831698639e-03, + 6.906290717546659935e-03, + 6.897514883033617136e-03, + 6.888728280075771815e-03, + 6.879930923473456805e-03, + 6.871122828043444049e-03, + 6.862304008619205670e-03, + 6.853474480051184592e-03, + 6.844634257206201264e-03, + 6.835783354967660090e-03, + 6.826921788235910254e-03, + 6.818049571927485911e-03, + 6.809166720975922370e-03, + 6.800273250330647612e-03, + 6.791369174958225216e-03, + 6.782454509841360363e-03, + 6.773529269979179993e-03, + 6.764593470387532045e-03, + 6.755647126098275959e-03, + 6.746690252160148296e-03, + 6.737722863637569254e-03, + 6.728744975611923758e-03, + 6.719756603180424351e-03, + 6.710757761457007177e-03, + 6.701748465571500182e-03, + 6.692728730669960518e-03, + 6.683698571914971180e-03, + 6.674658004484971402e-03, + 6.665607043574671257e-03, + 6.656545704394800991e-03, + 6.647474002172449291e-03, + 6.638391952150535930e-03, + 6.629299569587985240e-03, + 6.620196869760070456e-03, + 6.611083867957736303e-03, + 6.601960579488015332e-03, + 6.592827019673785927e-03, + 6.583683203854140929e-03, + 6.574529147383763143e-03, + 6.565364865633205489e-03, + 6.556190373989152949e-03, + 6.547005687853762503e-03, + 6.537810822645297171e-03, + 6.528605793797543147e-03, + 6.519390616759996281e-03, + 6.510165306998179531e-03, + 6.500929879993019335e-03, + 6.491684351241170867e-03, + 6.482428736254848903e-03, + 6.473163050562154817e-03, + 6.463887309706470297e-03, + 6.454601529246799078e-03, + 6.445305724757904864e-03, + 6.435999911829772685e-03, + 6.426684106067981003e-03, + 6.417358323093455379e-03, + 6.408022578542850109e-03, + 6.398676888067921995e-03, + 6.389321267335793149e-03, + 6.379955732029239830e-03, + 6.370580297845962123e-03, + 6.361194980499481656e-03, + 6.351799795717836226e-03, + 6.342394759245029157e-03, + 6.332979886839808052e-03, + 6.323555194276481856e-03, + 6.314120697344248641e-03, + 6.304676411847404648e-03, + 6.295222353605793575e-03, + 6.285758538453641714e-03, + 6.276284982240905828e-03, + 6.266801700832126502e-03, + 6.257308710107196623e-03, + 6.247806025960723868e-03, + 6.238293664302231069e-03, + 6.228771641056536114e-03, + 6.219239972162977394e-03, + 6.209698673575816258e-03, + 6.200147761264454722e-03, + 6.190587251212689539e-03, + 6.181017159419663690e-03, + 6.171437501898495957e-03, + 6.161848294677846512e-03, + 6.152249553800528264e-03, + 6.142641295324458364e-03, + 6.133023535321907062e-03, + 6.123396289879763990e-03, + 6.113759575099977049e-03, + 6.104113407098299936e-03, + 6.094457802005803088e-03, + 6.084792775967531007e-03, + 6.075118345143481514e-03, + 6.065434525707763536e-03, + 6.055741333848955327e-03, + 6.046038785770379426e-03, + 6.036326897689422641e-03, + 6.026605685837936772e-03, + 6.016875166461992282e-03, + 6.007135355822305033e-03, + 5.997386270193554546e-03, + 5.987627925864676300e-03, + 5.977860339139128010e-03, + 5.968083526334275538e-03, + 5.958297503781779733e-03, + 5.948502287827283318e-03, + 5.938697894830812472e-03, + 5.928884341166566936e-03, + 5.919061643222190555e-03, + 5.909229817400088805e-03, + 5.899388880116169381e-03, + 5.889538847800725174e-03, + 5.879679736897693541e-03, + 5.869811563864944272e-03, + 5.859934345174561479e-03, + 5.850048097312167059e-03, + 5.840152836777379522e-03, + 5.830248580083472257e-03, + 5.820335343757881801e-03, + 5.810413144341468848e-03, + 5.800481998388792339e-03, + 5.790541922468503237e-03, + 5.780592933162563042e-03, + 5.770635047066727773e-03, + 5.760668280790220107e-03, + 5.750692650956252400e-03, + 5.740708174201232181e-03, + 5.730714867175138588e-03, + 5.720712746541760894e-03, + 5.710701828977965584e-03, + 5.700682131174611422e-03, + 5.690653669835219787e-03, + 5.680616461677516840e-03, + 5.670570523431982431e-03, + 5.660515871842977664e-03, + 5.650452523667769122e-03, + 5.640380495676967747e-03, + 5.630299804654765629e-03, + 5.620210467398258601e-03, + 5.610112500717738537e-03, + 5.600005921437032491e-03, + 5.589890746392766306e-03, + 5.579766992434826052e-03, + 5.569634676426067459e-03, + 5.559493815242745260e-03, + 5.549344425773819305e-03, + 5.539186524921285021e-03, + 5.529020129600436227e-03, + 5.518845256739068894e-03, + 5.508661923278493355e-03, + 5.498470146172117906e-03, + 5.488269942386996177e-03, + 5.478061328902498334e-03, + 5.467844322711233086e-03, + 5.457618940818273999e-03, + 5.447385200241421435e-03, + 5.437143118011588533e-03, + 5.426892711172035325e-03, + 5.416633996778793744e-03, + 5.406366991900456859e-03, + 5.396091713618556170e-03, + 5.385808179026845173e-03, + 5.375516405231720897e-03, + 5.365216409352367884e-03, + 5.354908208520183996e-03, + 5.344591819879123025e-03, + 5.334267260585501269e-03, + 5.323934547808387846e-03, + 5.313593698728889120e-03, + 5.303244730540480900e-03, + 5.292887660449297274e-03, + 5.282522505673375134e-03, + 5.272149283443525007e-03, + 5.261768011002058640e-03, + 5.251378705604162894e-03, + 5.240981384517249229e-03, + 5.230576065020155728e-03, + 5.220162764404696204e-03, + 5.209741499974183954e-03, + 5.199312289044506416e-03, + 5.188875148943223985e-03, + 5.178430097009914350e-03, + 5.167977150596491688e-03, + 5.157516327066520578e-03, + 5.147047643795559478e-03, + 5.136571118170985516e-03, + 5.126086767592386538e-03, + 5.115594609470851609e-03, + 5.105094661229306677e-03, + 5.094586940302762643e-03, + 5.084071464137591978e-03, + 5.073548250192416037e-03, + 5.063017315936793605e-03, + 5.052478678852727507e-03, + 5.041932356433423412e-03, + 5.031378366183693156e-03, + 5.020816725620294747e-03, + 5.010247452271074549e-03, + 4.999670563675958669e-03, + 4.989086077385597277e-03, + 4.978494010962898099e-03, + 4.967894381981636034e-03, + 4.957287208027471442e-03, + 4.946672506697081043e-03, + 4.936050295598505729e-03, + 4.925420592351443735e-03, + 4.914783414586560220e-03, + 4.904138779945783032e-03, + 4.893486706082603686e-03, + 4.882827210661258577e-03, + 4.872160311357788889e-03, + 4.861486025858513180e-03, + 4.850804371861696176e-03, + 4.840115367076263352e-03, + 4.829419029222148732e-03, + 4.818715376030697356e-03, + 4.808004425243786635e-03, + 4.797286194614871525e-03, + 4.786560701907468379e-03, + 4.775827964896888801e-03, + 4.765088001368716561e-03, + 4.754340829119864907e-03, + 4.743586465957725685e-03, + 4.732824929700472916e-03, + 4.722056238177403664e-03, + 4.711280409228226808e-03, + 4.700497460703433397e-03, + 4.689707410464098898e-03, + 4.678910276382296056e-03, + 4.668106076340377587e-03, + 4.657294828231253736e-03, + 4.646476549958785188e-03, + 4.635651259436988567e-03, + 4.624818974590489198e-03, + 4.613979713354294729e-03, + 4.603133493674188906e-03, + 4.592280333506009067e-03, + 4.581420250815998289e-03, + 4.570553263581084678e-03, + 4.559679389788051304e-03, + 4.548798647434453002e-03, + 4.537911054527743807e-03, + 4.527016629085633438e-03, + 4.516115389136360521e-03, + 4.505207352718003898e-03, + 4.494292537878901567e-03, + 4.483370962677374859e-03, + 4.472442645182203753e-03, + 4.461507603471868803e-03, + 4.450565855634844303e-03, + 4.439617419770003348e-03, + 4.428662313985786900e-03, + 4.417700556400711194e-03, + 4.406732165143068501e-03, + 4.395757158351396368e-03, + 4.384775554173722147e-03, + 4.373787370767874376e-03, + 4.362792626301839269e-03, + 4.351791338952850849e-03, + 4.340783526908521990e-03, + 4.329769208365288370e-03, + 4.318748401530073805e-03, + 4.307721124618869510e-03, + 4.296687395857758454e-03, + 4.285647233481992488e-03, + 4.274600655736424289e-03, + 4.263547680875877724e-03, + 4.252488327163807778e-03, + 4.241422612873989306e-03, + 4.230350556289010425e-03, + 4.219272175701340236e-03, + 4.208187489412446719e-03, + 4.197096515733126330e-03, + 4.185999272983860486e-03, + 4.174895779494034072e-03, + 4.163786053602260701e-03, + 4.152670113656773028e-03, + 4.141547978014444367e-03, + 4.130419665041960495e-03, + 4.119285193114248858e-03, + 4.108144580616193350e-03, + 4.096997845941121631e-03, + 4.085845007491900605e-03, + 4.074686083680021352e-03, + 4.063521092925941741e-03, + 4.052350053659553933e-03, + 4.041172984318810481e-03, + 4.029989903351394002e-03, + 4.018800829213231389e-03, + 4.007605780369547649e-03, + 3.996404775294008956e-03, + 3.985197832469026223e-03, + 3.973984970386106388e-03, + 3.962766207545094337e-03, + 3.951541562454627399e-03, + 3.940311053631833510e-03, + 3.929074699602845555e-03, + 3.917832518901999059e-03, + 3.906584530072142701e-03, + 3.895330751665077203e-03, + 3.884071202240635921e-03, + 3.872805900367298944e-03, + 3.861534864621791064e-03, + 3.850258113589532811e-03, + 3.838975665864376337e-03, + 3.827687540047808746e-03, + 3.816393754750452630e-03, + 3.805094328590594155e-03, + 3.793789280195269432e-03, + 3.782478628199316493e-03, + 3.771162391245781644e-03, + 3.759840587986236493e-03, + 3.748513237079957421e-03, + 3.737180357194485898e-03, + 3.725841967005244244e-03, + 3.714498085196100280e-03, + 3.703148730458489992e-03, + 3.691793921491868125e-03, + 3.680433677003951479e-03, + 3.669068015710015476e-03, + 3.657696956333314833e-03, + 3.646320517604827692e-03, + 3.634938718263718786e-03, + 3.623551577056535397e-03, + 3.612159112737608514e-03, + 3.600761344069332986e-03, + 3.589358289821303200e-03, + 3.577949968771399446e-03, + 3.566536399704229275e-03, + 3.555117601412899949e-03, + 3.543693592697420760e-03, + 3.532264392365874403e-03, + 3.520830019233442496e-03, + 3.509390492122778111e-03, + 3.497945829864356187e-03, + 3.486496051295690304e-03, + 3.475041175261779375e-03, + 3.463581220614863482e-03, + 3.452116206214858422e-03, + 3.440646150928601543e-03, + 3.429171073630164854e-03, + 3.417690993201249246e-03, + 3.406205928530344450e-03, + 3.394715898513111542e-03, + 3.383220922052709943e-03, + 3.371721018058918343e-03, + 3.360216205449185079e-03, + 3.348706503147120227e-03, + 3.337191930084232490e-03, + 3.325672505198368819e-03, + 3.314148247434815526e-03, + 3.302619175745402300e-03, + 3.291085309088839610e-03, + 3.279546666431066085e-03, + 3.268003266744455744e-03, + 3.256455129008305888e-03, + 3.244902272208521378e-03, + 3.233344715338142862e-03, + 3.221782477396508901e-03, + 3.210215577389621128e-03, + 3.198644034330500301e-03, + 3.187067867238368817e-03, + 3.175487095139178494e-03, + 3.163901737065261469e-03, + 3.152311812055848001e-03, + 3.140717339156279785e-03, + 3.129118337418310049e-03, + 3.117514825900512525e-03, + 3.105906823667337318e-03, + 3.094294349790193809e-03, + 3.082677423345951424e-03, + 3.071056063418506950e-03, + 3.059430289098043817e-03, + 3.047800119480161257e-03, + 3.036165573667596023e-03, + 3.024526670768568331e-03, + 3.012883429897971008e-03, + 3.001235870176399353e-03, + 2.989584010730517161e-03, + 2.977927870693413206e-03, + 2.966267469203797639e-03, + 2.954602825406495072e-03, + 2.942933958452118894e-03, + 2.931260887497609460e-03, + 2.919583631705385818e-03, + 2.907902210243704794e-03, + 2.896216642287069085e-03, + 2.884526947015203773e-03, + 2.872833143614264995e-03, + 2.861135251275227949e-03, + 2.849433289195645470e-03, + 2.837727276578231195e-03, + 2.826017232631325773e-03, + 2.814303176569247708e-03, + 2.802585127611369620e-03, + 2.790863104983259263e-03, + 2.779137127915050614e-03, + 2.767407215643286587e-03, + 2.755673387409291863e-03, + 2.743935662460318670e-03, + 2.732194060048600496e-03, + 2.720448599431734595e-03, + 2.708699299872999004e-03, + 2.696946180640587536e-03, + 2.685189261007935035e-03, + 2.673428560254080370e-03, + 2.661664097662742694e-03, + 2.649895892523444676e-03, + 2.638123964129918727e-03, + 2.626348331781908942e-03, + 2.614569014783687043e-03, + 2.602786032444579303e-03, + 2.590999404079277497e-03, + 2.579209149006936406e-03, + 2.567415286552291419e-03, + 2.555617836044060415e-03, + 2.543816816816762624e-03, + 2.532012248209103596e-03, + 2.520204149565106674e-03, + 2.508392540233197934e-03, + 2.496577439566536206e-03, + 2.484758866923401227e-03, + 2.472936841666339720e-03, + 2.461111383162708360e-03, + 2.449282510784330305e-03, + 2.437450243908017341e-03, + 2.425614601914751096e-03, + 2.413775604190028685e-03, + 2.401933270124226132e-03, + 2.390087619111807334e-03, + 2.378238670551783337e-03, + 2.366386443847426965e-03, + 2.354530958406779364e-03, + 2.342672233641829044e-03, + 2.330810288968843211e-03, + 2.318945143808774124e-03, + 2.307076817586284183e-03, + 2.295205329730760739e-03, + 2.283330699675374144e-03, + 2.271452946857451145e-03, + 2.259572090718803619e-03, + 2.247688150704948810e-03, + 2.235801146265574673e-03, + 2.223911096854247135e-03, + 2.212018021928920108e-03, + 2.200121940951117998e-03, + 2.188222873386256630e-03, + 2.176320838704056976e-03, + 2.164415856377707725e-03, + 2.152507945884331482e-03, + 2.140597126704739742e-03, + 2.128683418323882616e-03, + 2.116766840230052595e-03, + 2.104847411915235830e-03, + 2.092925152875497671e-03, + 2.081000082609986077e-03, + 2.069072220622123360e-03, + 2.057141586417984662e-03, + 2.045208199508099026e-03, + 2.033272079405853017e-03, + 2.021333245628625670e-03, + 2.009391717696855633e-03, + 1.997447515134379448e-03, + 1.985500657468957167e-03, + 1.973551164230758805e-03, + 1.961599054954201414e-03, + 1.949644349176332756e-03, + 1.937687066437970363e-03, + 1.925727226282763918e-03, + 1.913764848257549145e-03, + 1.901799951912712524e-03, + 1.889832556801374899e-03, + 1.877862682479740798e-03, + 1.865890348507491135e-03, + 1.853915574446780758e-03, + 1.841938379863452971e-03, + 1.829958784325363573e-03, + 1.817976807404246553e-03, + 1.805992468674066757e-03, + 1.794005787712191257e-03, + 1.782016784098427878e-03, + 1.770025477415389714e-03, + 1.758031887248996238e-03, + 1.746036033186975809e-03, + 1.734037934820704908e-03, + 1.722037611743562537e-03, + 1.710035083552110483e-03, + 1.698030369845133581e-03, + 1.686023490223992512e-03, + 1.674014464292991567e-03, + 1.662003311658562894e-03, + 1.649990051929759805e-03, + 1.637974704717945831e-03, + 1.625957289637317959e-03, + 1.613937826304062033e-03, + 1.601916334336718137e-03, + 1.589892833356556590e-03, + 1.577867342986741164e-03, + 1.565839882852832800e-03, + 1.553810472582492757e-03, + 1.541779131805838445e-03, + 1.529745880155300528e-03, + 1.517710737264631312e-03, + 1.505673722770632097e-03, + 1.493634856311497382e-03, + 1.481594157528002501e-03, + 1.469551646062527408e-03, + 1.457507341559420534e-03, + 1.445461263665383678e-03, + 1.433413432028619395e-03, + 1.421363866299357476e-03, + 1.409312586129521025e-03, + 1.397259611173266814e-03, + 1.385204961086126821e-03, + 1.373148655525383358e-03, + 1.361090714150439002e-03, + 1.349031156621983063e-03, + 1.336970002602493133e-03, + 1.324907271755934981e-03, + 1.312842983748272341e-03, + 1.300777158246623193e-03, + 1.288709814919628818e-03, + 1.276640973437833922e-03, + 1.264570653472704568e-03, + 1.252498874697813638e-03, + 1.240425656787189166e-03, + 1.228351019417167015e-03, + 1.216274982264749401e-03, + 1.204197565008779730e-03, + 1.192118787328960965e-03, + 1.180038668906243770e-03, + 1.167957229423187545e-03, + 1.155874488563121043e-03, + 1.143790466010646736e-03, + 1.131705181451357189e-03, + 1.119618654572310593e-03, + 1.107530905061220212e-03, + 1.095441952606810440e-03, + 1.083351816899196050e-03, + 1.071260517629026108e-03, + 1.059168074487887084e-03, + 1.047074507168642204e-03, + 1.034979835364476485e-03, + 1.022884078770070707e-03, + 1.010787257079953433e-03, + 9.986893899903543335e-04, + 9.865904971975620642e-04, + 9.744905983990878248e-04, + 9.623897132927071441e-04, + 9.502878615768330615e-04, + 9.381850629508734808e-04, + 9.260813371143955747e-04, + 9.139767037676462024e-04, + 9.018711826112358644e-04, + 8.897647933466470852e-04, + 8.776575556754025046e-04, + 8.655494892994239657e-04, + 8.534406139214222855e-04, + 8.413309492440378080e-04, + 8.292205149703623388e-04, + 8.171093308036259193e-04, + 8.049974164477155091e-04, + 7.928847916063275734e-04, + 7.807714759833379045e-04, + 7.686574892831779483e-04, + 7.565428512098632506e-04, + 7.444275814681663474e-04, + 7.323116997619700782e-04, + 7.201952257959902751e-04, + 7.080781792749383250e-04, + 6.959605799026664930e-04, + 6.838424473839047057e-04, + 6.717238014225996624e-04, + 6.596046617231016021e-04, + 6.474850479891893894e-04, + 6.353649799244361074e-04, + 6.232444772325921060e-04, + 6.111235596167331448e-04, + 5.990022467797752803e-04, + 5.868805584241703135e-04, + 5.747585142524122212e-04, + 5.626361339661996091e-04, + 5.505134372668073770e-04, + 5.383904438554539375e-04, + 5.262671734323318314e-04, + 5.141436456977893990e-04, + 5.020198803506740115e-04, + 4.898958970901939707e-04, + 4.777717156144052884e-04, + 4.656473556207076548e-04, + 4.535228368062325282e-04, + 4.413981788668550478e-04, + 4.292734014983824817e-04, + 4.171485243948990841e-04, + 4.050235672506281577e-04, + 3.928985497582771283e-04, + 3.807734916102196499e-04, + 3.686484124975217204e-04, + 3.565233321103145384e-04, + 3.443982701381649212e-04, + 3.322732462692349936e-04, + 3.201482801906545034e-04, + 3.080233915888972557e-04, + 2.958986001487985554e-04, + 2.837739255547431670e-04, + 2.716493874890110391e-04, + 2.595250056336352476e-04, + 2.474007996688872024e-04, + 2.352767892737819670e-04, + 2.231529941264539347e-04, + 2.110294339031771162e-04, + 1.989061282795523140e-04, + 1.867830969288501904e-04, + 1.746603595238741707e-04, + 1.625379357353055442e-04, + 1.504158452328871421e-04, + 1.382941076844475009e-04, + 1.261727427562733404e-04, + 1.140517701134824750e-04, + 1.019312094191823640e-04, + 8.981108033497791200e-05, + 7.769140252066970766e-05, + 6.557219563476328729e-05, + 5.345347933362549678e-05, + 4.133527327185843969e-05, + 2.921759710267347618e-05, + 1.710047047704803223e-05, + 4.983913044234646903e-06, +-7.132055548541158316e-06, +-1.924741565557222780e-05, +-3.136214763351222905e-05, +-4.347623184100219502e-05, +-5.558964863829692922e-05, +-6.770237838824225813e-05, +-7.981440145509146526e-05, +-9.192569820615802188e-05, +-1.040362490100908585e-04, +-1.161460342378512378e-04, +-1.282550342628823239e-04, +-1.403632294607308094e-04, +-1.524706002093540423e-04, +-1.645771268886078904e-04, +-1.766827898810905751e-04, +-1.887875695717686219e-04, +-2.008914463476036783e-04, +-2.129944005983936371e-04, +-2.250964127162665318e-04, +-2.371974630959789354e-04, +-2.492975321344096111e-04, +-2.613966002314027236e-04, +-2.734946477893911328e-04, +-2.855916552130252444e-04, +-2.976876029101488191e-04, +-3.097824712906170836e-04, +-3.218762407679460731e-04, +-3.339688917574576161e-04, +-3.460604046779259114e-04, +-3.581507599503988386e-04, +-3.702399379991741729e-04, +-3.823279192514236389e-04, +-3.944146841366856114e-04, +-4.065002130883827824e-04, +-4.185844865419628626e-04, +-4.306674849365511220e-04, +-4.427491887137641646e-04, +-4.548295783186917822e-04, +-4.669086341995169948e-04, +-4.789863368071481278e-04, +-4.910626665960592845e-04, +-5.031376040239132069e-04, +-5.152111295511924843e-04, +-5.272832236421736004e-04, +-5.393538667637441230e-04, +-5.514230393870538354e-04, +-5.634907219856577151e-04, +-5.755568950371647884e-04, +-5.876215390220592772e-04, +-5.996846344246715022e-04, +-6.117461617328055681e-04, +-6.238061014372369437e-04, +-6.358644340332212383e-04, +-6.479211400186386978e-04, +-6.599761998956463118e-04, +-6.720295941694952747e-04, +-6.840813033495040567e-04, +-6.961313079486858724e-04, +-7.081795884833786423e-04, +-7.202261254740828641e-04, +-7.322708994449533392e-04, +-7.443138909240992794e-04, +-7.563550804430834058e-04, +-7.683944485377533148e-04, +-7.804319757478717654e-04, +-7.924676426167464238e-04, +-8.045014296920656753e-04, +-8.165333175253944699e-04, +-8.285632866724731288e-04, +-8.405913176927077689e-04, +-8.526173911500196673e-04, +-8.646414876124576586e-04, +-8.766635876518364453e-04, +-8.886836718447086933e-04, +-9.007017207713133560e-04, +-9.127177150165580698e-04, +-9.247316351696407673e-04, +-9.367434618236777965e-04, +-9.487531755765469957e-04, +-9.607607570303733488e-04, +-9.727661867918321274e-04, +-9.847694454716516763e-04, +-9.967705136854384911e-04, +-1.008769372053300566e-03, +-1.020766001199503812e-03, +-1.032760381753276098e-03, +-1.044752494348315892e-03, +-1.056742319623099309e-03, +-1.068729838220364679e-03, +-1.080715030787941094e-03, +-1.092697877978402333e-03, +-1.104678360448669823e-03, +-1.116656458860994933e-03, +-1.128632153881783040e-03, +-1.140605426183228513e-03, +-1.152576256441480455e-03, +-1.164544625338262288e-03, +-1.176510513559719676e-03, +-1.188473901797374409e-03, +-1.200434770747756206e-03, +-1.212393101112031702e-03, +-1.224348873596851428e-03, +-1.236302068913821585e-03, +-1.248252667779823234e-03, +-1.260200650916497517e-03, +-1.272145999051091771e-03, +-1.284088692916068343e-03, +-1.296028713248749409e-03, +-1.307966040792156144e-03, +-1.319900656294616462e-03, +-1.331832540509412426e-03, +-1.343761674195754520e-03, +-1.355688038117579914e-03, +-1.367611613045216718e-03, +-1.379532379753526522e-03, +-1.391450319023550221e-03, +-1.403365411641323626e-03, +-1.415277638398860409e-03, +-1.427186980093765904e-03, +-1.439093417528876069e-03, +-1.450996931513085604e-03, +-1.462897502860851162e-03, +-1.474795112392480621e-03, +-1.486689740933639552e-03, +-1.498581369316172611e-03, +-1.510469978377737945e-03, +-1.522355548961447456e-03, +-1.534238061916678650e-03, +-1.546117498098594986e-03, +-1.557993838368410423e-03, +-1.569867063592936870e-03, +-1.581737154645356143e-03, +-1.593604092404903808e-03, +-1.605467857756456536e-03, +-1.617328431591531735e-03, +-1.629185794807098617e-03, +-1.641039928307200593e-03, +-1.652890813001280188e-03, +-1.664738429804987849e-03, +-1.676582759641020038e-03, +-1.688423783437413561e-03, +-1.700261482129183802e-03, +-1.712095836657137301e-03, +-1.723926827968867703e-03, +-1.735754437018349619e-03, +-1.747578644765593846e-03, +-1.759399432177467457e-03, +-1.771216780227205263e-03, +-1.783030669894670236e-03, +-1.794841082165912240e-03, +-1.806647998033929789e-03, +-1.818451398498356067e-03, +-1.830251264565058416e-03, +-1.842047577247102851e-03, +-1.853840317563611737e-03, +-1.865629466541356921e-03, +-1.877415005212949330e-03, +-1.889196914618329528e-03, +-1.900975175804260967e-03, +-1.912749769823969158e-03, +-1.924520677738081028e-03, +-1.936287880613503636e-03, +-1.948051359524991498e-03, +-1.959811095553373912e-03, +-1.971567069787127056e-03, +-1.983319263321260510e-03, +-1.995067657258228419e-03, +-2.006812232707591223e-03, +-2.018552970785651365e-03, +-2.030289852616250831e-03, +-2.042022859330305373e-03, +-2.053751972066068191e-03, +-2.065477171968789060e-03, +-2.077198440190869584e-03, +-2.088915757892795180e-03, +-2.100629106241493592e-03, +-2.112338466411775150e-03, +-2.124043819585857019e-03, +-2.135745146952993702e-03, +-2.147442429710421600e-03, +-2.159135649062225801e-03, +-2.170824786220916514e-03, +-2.182509822405651403e-03, +-2.194190738843818968e-03, +-2.205867516769893615e-03, +-2.217540137426395833e-03, +-2.229208582063506652e-03, +-2.240872831938728934e-03, +-2.252532868317674939e-03, +-2.264188672473613131e-03, +-2.275840225687715372e-03, +-2.287487509248590286e-03, +-2.299130504453091636e-03, +-2.310769192605953599e-03, +-2.322403555019438622e-03, +-2.334033573014140158e-03, +-2.345659227918486973e-03, +-2.357280501069055831e-03, +-2.368897373810046302e-03, +-2.380509827494126443e-03, +-2.392117843482049425e-03, +-2.403721403142301382e-03, +-2.415320487852048569e-03, +-2.426915078995972499e-03, +-2.438505157967886267e-03, +-2.450090706169067920e-03, +-2.461671705009192430e-03, +-2.473248135906495632e-03, +-2.484819980287410798e-03, +-2.496387219586875244e-03, +-2.507949835247804717e-03, +-2.519507808721946004e-03, +-2.531061121469480989e-03, +-2.542609754958696181e-03, +-2.554153690666755971e-03, +-2.565692910079246398e-03, +-2.577227394690458778e-03, +-2.588757126002878394e-03, +-2.600282085528014125e-03, +-2.611802254786031990e-03, +-2.623317615305396922e-03, +-2.634828148623798681e-03, +-2.646333836287044668e-03, +-2.657834659850599052e-03, +-2.669330600877850655e-03, +-2.680821640941651214e-03, +-2.692307761623204294e-03, +-2.703788944513000302e-03, +-2.715265171210443518e-03, +-2.726736423323375055e-03, +-2.738202682469526549e-03, +-2.749663930274729925e-03, +-2.761120148374513784e-03, +-2.772571318412954140e-03, +-2.784017422043608136e-03, +-2.795458440929162337e-03, +-2.806894356741083171e-03, +-2.818325151160414911e-03, +-2.829750805877385023e-03, +-2.841171302591119236e-03, +-2.852586623010518446e-03, +-2.863996748853145022e-03, +-2.875401661846781459e-03, +-2.886801343727689578e-03, +-2.898195776242171780e-03, +-2.909584941145414855e-03, +-2.920968820202451879e-03, +-2.932347395187801398e-03, +-2.943720647884968695e-03, +-2.955088560087889941e-03, +-2.966451113599194445e-03, +-2.977808290231707782e-03, +-2.989160071807417038e-03, +-3.000506440158291765e-03, +-3.011847377126036784e-03, +-3.023182864561647660e-03, +-3.034512884326259850e-03, +-3.045837418290657343e-03, +-3.057156448335525065e-03, +-3.068469956351022564e-03, +-3.079777924237525610e-03, +-3.091080333905307006e-03, +-3.102377167274176194e-03, +-3.113668406274253814e-03, +-3.124954032845510699e-03, +-3.136234028938047168e-03, +-3.147508376511609033e-03, +-3.158777057536393817e-03, +-3.170040053992660440e-03, +-3.181297347870435180e-03, +-3.192548921170369498e-03, +-3.203794755902788539e-03, +-3.215034834088615744e-03, +-3.226269137758969088e-03, +-3.237497648954896102e-03, +-3.248720349728070802e-03, +-3.259937222140365208e-03, +-3.271148248264132540e-03, +-3.282353410181726699e-03, +-3.293552689986268146e-03, +-3.304746069781317776e-03, +-3.315933531680493544e-03, +-3.327115057808328284e-03, +-3.338290630299705491e-03, +-3.349460231300176779e-03, +-3.360623842965528626e-03, +-3.371781447462484944e-03, +-3.382933026968417810e-03, +-3.394078563670993587e-03, +-3.405218039769039411e-03, +-3.416351437471499327e-03, +-3.427478738998910104e-03, +-3.438599926581737635e-03, +-3.449714982461841040e-03, +-3.460823888891438344e-03, +-3.471926628133954751e-03, +-3.483023182463709094e-03, +-3.494113534165560822e-03, +-3.505197665535698427e-03, +-3.516275558881121199e-03, +-3.527347196519993542e-03, +-3.538412560781096367e-03, +-3.549471634004670601e-03, +-3.560524398542013434e-03, +-3.571570836755170834e-03, +-3.582610931017700829e-03, +-3.593644663714326559e-03, +-3.604672017240596275e-03, +-3.615692974003768909e-03, +-3.626707516421748961e-03, +-3.637715626924577922e-03, +-3.648717287952737715e-03, +-3.659712481958665980e-03, +-3.670701191405667529e-03, +-3.681683398768819011e-03, +-3.692659086534588134e-03, +-3.703628237200542236e-03, +-3.714590833276100283e-03, +-3.725546857282026336e-03, +-3.736496291750776924e-03, +-3.747439119225968486e-03, +-3.758375322263185318e-03, +-3.769304883429627859e-03, +-3.780227785303755771e-03, +-3.791144010476071597e-03, +-3.802053541548664536e-03, +-3.812956361135442021e-03, +-3.823852451861731606e-03, +-3.834741796364980488e-03, +-3.845624377294451068e-03, +-3.856500177310874002e-03, +-3.867369179087329009e-03, +-3.878231365308186691e-03, +-3.889086718670570035e-03, +-3.899935221882823520e-03, +-3.910776857665277696e-03, +-3.921611608750962159e-03, +-3.932439457884100674e-03, +-3.943260387821592196e-03, +-3.954074381331911490e-03, +-3.964881421196017261e-03, +-3.975681490206999999e-03, +-3.986474571169741979e-03, +-3.997260646901710894e-03, +-4.008039700232422092e-03, +-4.018811714003815011e-03, +-4.029576671069701535e-03, +-4.040334554296561367e-03, +-4.051085346563209830e-03, +-4.061829030760458724e-03, +-4.072565589791959408e-03, +-4.083295006573196655e-03, +-4.094017264032943221e-03, +-4.104732345111553743e-03, +-4.115440232762382876e-03, +-4.126140909951289161e-03, +-4.136834359656333185e-03, +-4.147520564868611981e-03, +-4.158199508591221664e-03, +-4.168871173840730214e-03, +-4.179535543645509534e-03, +-4.190192601047219509e-03, +-4.200842329099735081e-03, +-4.211484710870050038e-03, +-4.222119729437902313e-03, +-4.232747367895433113e-03, +-4.243367609347989226e-03, +-4.253980436913633832e-03, +-4.264585833723398903e-03, +-4.275183782920992902e-03, +-4.285774267662908338e-03, +-4.296357271119316014e-03, +-4.306932776472522859e-03, +-4.317500766918295520e-03, +-4.328061225665451837e-03, +-4.338614135935498287e-03, +-4.349159480963491267e-03, +-4.359697243997008413e-03, +-4.370227408297584076e-03, +-4.380749957139091696e-03, +-4.391264873809183622e-03, +-4.401772141608243337e-03, +-4.412271743850252823e-03, +-4.422763663862459491e-03, +-4.433247884985052657e-03, +-4.443724390571898199e-03, +-4.454193163990079717e-03, +-4.464654188620176961e-03, +-4.475107447855811334e-03, +-4.485552925104372736e-03, +-4.495990603786735942e-03, +-4.506420467336848604e-03, +-4.516842499202559577e-03, +-4.527256682845099377e-03, +-4.537663001739384618e-03, +-4.548061439373567855e-03, +-4.558451979249734942e-03, +-4.568834604883646559e-03, +-4.579209299804334887e-03, +-4.589576047555000461e-03, +-4.599934831691983479e-03, +-4.610285635786153316e-03, +-4.620628443421465233e-03, +-4.630963238195767891e-03, +-4.641290003720979426e-03, +-4.651608723622711883e-03, +-4.661919381540587798e-03, +-4.672221961127758817e-03, +-4.682516446051667239e-03, +-4.692802819993664373e-03, +-4.703081066648760744e-03, +-4.713351169726290486e-03, +-4.723613112949494146e-03, +-4.733866880055784959e-03, +-4.744112454796318643e-03, +-4.754349820936654321e-03, +-4.764578962256521208e-03, +-4.774799862549420487e-03, +-4.785012505623516092e-03, +-4.795216875300594740e-03, +-4.805412955417448506e-03, +-4.815600729824346532e-03, +-4.825780182386413264e-03, +-4.835951296982610170e-03, +-4.846114057506567541e-03, +-4.856268447866272236e-03, +-4.866414451983628806e-03, +-4.876552053795790015e-03, +-4.886681237253474169e-03, +-4.896801986322481259e-03, +-4.906914284982601820e-03, +-4.917018117228501642e-03, +-4.927113467069364414e-03, +-4.937200318528594221e-03, +-4.947278655644526783e-03, +-4.957348462470104189e-03, +-4.967409723072533159e-03, +-4.977462421534177561e-03, +-4.987506541951497625e-03, +-4.997542068436438591e-03, +-5.007568985114923231e-03, +-5.017587276128166775e-03, +-5.027596925631751430e-03, +-5.037597917796359306e-03, +-5.047590236807553837e-03, +-5.057573866865281917e-03, +-5.067548792185141114e-03, +-5.077514996996919036e-03, +-5.087472465545833655e-03, +-5.097421182091630386e-03, +-5.107361130909386995e-03, +-5.117292296289173599e-03, +-5.127214662535789849e-03, +-5.137128213969384231e-03, +-5.147032934925078497e-03, +-5.156928809753277311e-03, +-5.166815822819095794e-03, +-5.176693958503188718e-03, +-5.186563201201405300e-03, +-5.196423535324411896e-03, +-5.206274945298495181e-03, +-5.216117415565047800e-03, +-5.225950930580871082e-03, +-5.235775474817731812e-03, +-5.245591032763050054e-03, +-5.255397588919625933e-03, +-5.265195127805270131e-03, +-5.274983633953659115e-03, +-5.284763091913331594e-03, +-5.294533486249040737e-03, +-5.304294801540384609e-03, +-5.314047022382546032e-03, +-5.323790133386453044e-03, +-5.333524119178453642e-03, +-5.343248964400628027e-03, +-5.352964653710262991e-03, +-5.362671171780652481e-03, +-5.372368503300669999e-03, +-5.382056632974568239e-03, +-5.391735545522632206e-03, +-5.401405225680715183e-03, +-5.411065658200539703e-03, +-5.420716827849286421e-03, +-5.430358719410209936e-03, +-5.439991317682375989e-03, +-5.449614607480416859e-03, +-5.459228573635208775e-03, +-5.468833200992957722e-03, +-5.478428474416578535e-03, +-5.488014378784143200e-03, +-5.497590898990205310e-03, +-5.507158019944867651e-03, +-5.516715726574584512e-03, +-5.526264003821813008e-03, +-5.535802836644738989e-03, +-5.545332210017928434e-03, +-5.554852108931990044e-03, +-5.564362518393707949e-03, +-5.573863423425686955e-03, +-5.583354809067062052e-03, +-5.592836660373131513e-03, +-5.602308962415097557e-03, +-5.611771700280697786e-03, +-5.621224859073963194e-03, +-5.630668423914867750e-03, +-5.640102379940137647e-03, +-5.649526712302256441e-03, +-5.658941406170883183e-03, +-5.668346446731226985e-03, +-5.677741819185485109e-03, +-5.687127508751820340e-03, +-5.696503500665214478e-03, +-5.705869780177037255e-03, +-5.715226332554916230e-03, +-5.724573143083244199e-03, +-5.733910197062921585e-03, +-5.743237479811433635e-03, +-5.752554976662612764e-03, +-5.761862672967167642e-03, +-5.771160554092447277e-03, +-5.780448605422168658e-03, +-5.789726812357001359e-03, +-5.798995160314226668e-03, +-5.808253634727980445e-03, +-5.817502221048786483e-03, +-5.826740904744287693e-03, +-5.835969671298877476e-03, +-5.845188506213505435e-03, +-5.854397395006346975e-03, +-5.863596323211901253e-03, +-5.872785276382292211e-03, +-5.881964240085846111e-03, +-5.891133199908195686e-03, +-5.900292141451947067e-03, +-5.909441050336354528e-03, +-5.918579912198077692e-03, +-5.927708712690416513e-03, +-5.936827437483972215e-03, +-5.945936072266445188e-03, +-5.955034602742307129e-03, +-5.964123014633432480e-03, +-5.973201293678709854e-03, +-5.982269425634336932e-03, +-5.991327396273317396e-03, +-6.000375191386224209e-03, +-6.009412796780752922e-03, +-6.018440198281623660e-03, +-6.027457381731216902e-03, +-6.036464332988634128e-03, +-6.045461037931055236e-03, +-6.054447482452247550e-03, +-6.063423652463748904e-03, +-6.072389533894438293e-03, +-6.081345112690368475e-03, +-6.090290374815308938e-03, +-6.099225306250049411e-03, +-6.108149892993497074e-03, +-6.117064121061373781e-03, +-6.125967976487351439e-03, +-6.134861445322309544e-03, +-6.143744513634918913e-03, +-6.152617167511431791e-03, +-6.161479393055406886e-03, +-6.170331176388286175e-03, +-6.179172503649096523e-03, +-6.188003360994570254e-03, +-6.196823734598982079e-03, +-6.205633610654130022e-03, +-6.214432975370188031e-03, +-6.223221814974367640e-03, +-6.232000115712020387e-03, +-6.240767863846295206e-03, +-6.249525045657884290e-03, +-6.258271647445659731e-03, +-6.267007655525874688e-03, +-6.275733056233331712e-03, +-6.284447835920041817e-03, +-6.293151980956451785e-03, +-6.301845477730488344e-03, +-6.310528312648400369e-03, +-6.319200472134354693e-03, +-6.327861942630261770e-03, +-6.336512710596341191e-03, +-6.345152762510725304e-03, +-6.353782084869780133e-03, +-6.362400664187563282e-03, +-6.371008486996614963e-03, +-6.379605539847572025e-03, +-6.388191809308896470e-03, +-6.396767281967545050e-03, +-6.405331944428550341e-03, +-6.413885783315282675e-03, +-6.422428785269010398e-03, +-6.430960936949560794e-03, +-6.439482225035024314e-03, +-6.447992636221516922e-03, +-6.456492157223820208e-03, +-6.464980774774603360e-03, +-6.473458475625548138e-03, +-6.481925246546125022e-03, +-6.490381074324300982e-03, +-6.498825945766666112e-03, +-6.507259847698136992e-03, +-6.515682766962183937e-03, +-6.524094690420483185e-03, +-6.532495604953467670e-03, +-6.540885497460104114e-03, +-6.549264354857631948e-03, +-6.557632164082088932e-03, +-6.565988912088071769e-03, +-6.574334585848769057e-03, +-6.582669172355793893e-03, +-6.590992658619637505e-03, +-6.599305031669488834e-03, +-6.607606278552879790e-03, +-6.615896386336475414e-03, +-6.624175342105143201e-03, +-6.632443132963199497e-03, +-6.640699746033015653e-03, +-6.648945168456230591e-03, +-6.657179387392947630e-03, +-6.665402390022307812e-03, +-6.673614163542312960e-03, +-6.681814695169482204e-03, +-6.690003972139847710e-03, +-6.698181981707674454e-03, +-6.706348711146646775e-03, +-6.714504147748967186e-03, +-6.722648278826130058e-03, +-6.730781091708572944e-03, +-6.738902573745479685e-03, +-6.747012712305278277e-03, +-6.755111494775507298e-03, +-6.763198908562447279e-03, +-6.771274941091812855e-03, +-6.779339579807972145e-03, +-6.787392812175068249e-03, +-6.795434625675678304e-03, +-6.803465007812064223e-03, +-6.811483946105260229e-03, +-6.819491428095757202e-03, +-6.827487441343278035e-03, +-6.835471973426405536e-03, +-6.843445011943625859e-03, +-6.851406544512028338e-03, +-6.859356558768454730e-03, +-6.867295042368724671e-03, +-6.875221982988231548e-03, +-6.883137368321686628e-03, +-6.891041186082953393e-03, +-6.898933424005500303e-03, +-6.906814069842154465e-03, +-6.914683111365228264e-03, +-6.922540536366191509e-03, +-6.930386332656281179e-03, +-6.938220488066183973e-03, +-6.946042990445819472e-03, +-6.953853827664907387e-03, +-6.961652987612619754e-03, +-6.969440458197735319e-03, +-6.977216227348356781e-03, +-6.984980283012478912e-03, +-6.992732613157650289e-03, +-7.000473205770795480e-03, +-7.008202048858879450e-03, +-7.015919130448060141e-03, +-7.023624438584782220e-03, +-7.031317961334718029e-03, +-7.038999686783266319e-03, +-7.046669603035813322e-03, +-7.054327698217397954e-03, +-7.061973960472897431e-03, +-7.069608377966756646e-03, +-7.077230938883448744e-03, +-7.084841631427331136e-03, +-7.092440443822321111e-03, +-7.100027364312444002e-03, +-7.107602381161569512e-03, +-7.115165482653521868e-03, +-7.122716657091797063e-03, +-7.130255892800088473e-03, +-7.137783178122037060e-03, +-7.145298501421049227e-03, +-7.152801851080799016e-03, +-7.160293215504592336e-03, +-7.167772583116334938e-03, +-7.175239942359363209e-03, +-7.182695281697583020e-03, +-7.190138589614584151e-03, +-7.197569854614289074e-03, +-7.204989065220765605e-03, +-7.212396209978002258e-03, +-7.219791277450313301e-03, +-7.227174256222195642e-03, +-7.234545134898292401e-03, +-7.241903902103326122e-03, +-7.249250546482416228e-03, +-7.256585056700954120e-03, +-7.263907421444316947e-03, +-7.271217629418446141e-03, +-7.278515669349510005e-03, +-7.285801529983810913e-03, +-7.293075200088252816e-03, +-7.300336668449720207e-03, +-7.307585923875975845e-03, +-7.314822955194639868e-03, +-7.322047751254111801e-03, +-7.329260300922874061e-03, +-7.336460593090098244e-03, +-7.343648616665404867e-03, +-7.350824360578615303e-03, +-7.357987813780285206e-03, +-7.365138965241387926e-03, +-7.372277803953506195e-03, +-7.379404318928481712e-03, +-7.386518499198967656e-03, +-7.393620333818186688e-03, +-7.400709811859669009e-03, +-7.407786922417839565e-03, +-7.414851654607616457e-03, +-7.421903997564632989e-03, +-7.428943940444933218e-03, +-7.435971472425507121e-03, +-7.442986582703966202e-03, +-7.449989260498408178e-03, +-7.456979495047966026e-03, +-7.463957275612086335e-03, +-7.470922591471575343e-03, +-7.477875431927373355e-03, +-7.484815786301564355e-03, +-7.491743643937026458e-03, +-7.498658994197212463e-03, +-7.505561826466695431e-03, +-7.512452130150610100e-03, +-7.519329894675148146e-03, +-7.526195109487439361e-03, +-7.533047764055222917e-03, +-7.539887847867419828e-03, +-7.546715350433748706e-03, +-7.553530261285013730e-03, +-7.560332569972659685e-03, +-7.567122266069434625e-03, +-7.573899339169009107e-03, +-7.580663778885828735e-03, +-7.587415574855726520e-03, +-7.594154716735126640e-03, +-7.600881194202051445e-03, +-7.607594996955115325e-03, +-7.614296114714236806e-03, +-7.620984537220493703e-03, +-7.627660254235809137e-03, +-7.634323255543590779e-03, +-7.640973530947997930e-03, +-7.647611070274858321e-03, +-7.654235863370677587e-03, +-7.660847900103494486e-03, +-7.667447170362298031e-03, +-7.674033664057506275e-03, +-7.680607371120753805e-03, +-7.687168281504771182e-03, +-7.693716385183721473e-03, +-7.700251672152983416e-03, +-7.706774132429356980e-03, +-7.713283756050765862e-03, +-7.719780533076394530e-03, +-7.726264453587224253e-03, +-7.732735507685096349e-03, +-7.739193685493502353e-03, +-7.745638977157341155e-03, +-7.752071372842676139e-03, +-7.758490862737290293e-03, +-7.764897437050048701e-03, +-7.771291086011764167e-03, +-7.777671799874227507e-03, +-7.784039568911051490e-03, +-7.790394383417045474e-03, +-7.796736233708783520e-03, +-7.803065110124321642e-03, +-7.809381003023059889e-03, +-7.815683902786158682e-03, +-7.821973799816302891e-03, +-7.828250684537792908e-03, +-7.834514547396309592e-03, +-7.840765378859412132e-03, +-7.847003169416248355e-03, +-7.853227909577360430e-03, +-7.859439589875203552e-03, +-7.865638200863870125e-03, +-7.871823733119110572e-03, +-7.877996177238187625e-03, +-7.884155523840360308e-03, +-7.890301763566519647e-03, +-7.896434887079147036e-03, +-7.902554885062742715e-03, +-7.908661748223206472e-03, +-7.914755467288705007e-03, +-7.920836033008821914e-03, +-7.926903436155013916e-03, +-7.932957667520652498e-03, +-7.938998717920919823e-03, +-7.945026578192938838e-03, +-7.951041239195407243e-03, +-7.957042691809204649e-03, +-7.963030926937059509e-03, +-7.969005935503370441e-03, +-7.974967708454711035e-03, +-7.980916236759533211e-03, +-7.986851511408233142e-03, +-7.992773523413022885e-03, +-7.998682263808291198e-03, +-8.004577723650384974e-03, +-8.010459894017451371e-03, +-8.016328766009953033e-03, +-8.022184330750003686e-03, +-8.028026579382292749e-03, +-8.033855503073016741e-03, +-8.039671093010828176e-03, +-8.045473340406191984e-03, +-8.051262236491813981e-03, +-8.057037772522587099e-03, +-8.062799939775183722e-03, +-8.068548729548943865e-03, +-8.074284133164834343e-03, +-8.080006141966361230e-03, +-8.085714747318858628e-03, +-8.091409940610160001e-03, +-8.097091713250195721e-03, +-8.102760056670982661e-03, +-8.108414962326898276e-03, +-8.114056421694538362e-03, +-8.119684426272795116e-03, +-8.125298967582685397e-03, +-8.130900037167461750e-03, +-8.136487626593030473e-03, +-8.142061727447132830e-03, +-8.147622331340193327e-03, +-8.153169429904667462e-03, +-8.158703014795549990e-03, +-8.164223077690173705e-03, +-8.169729610288020347e-03, +-8.175222604311339902e-03, +-8.180702051504376918e-03, +-8.186167943634033162e-03, +-8.191620272489404456e-03, +-8.197059029882238640e-03, +-8.202484207646659753e-03, +-8.207895797639043131e-03, +-8.213293791738480315e-03, +-8.218678181846425165e-03, +-8.224048959886900295e-03, +-8.229406117806184820e-03, +-8.234749647573339978e-03, +-8.240079541179886474e-03, +-8.245395790639728148e-03, +-8.250698387989471166e-03, +-8.255987325288214121e-03, +-8.261262594617707622e-03, +-8.266524188082090621e-03, +-8.271772097808282459e-03, +-8.277006315945779902e-03, +-8.282226834666544385e-03, +-8.287433646165390591e-03, +-8.292626742659474706e-03, +-8.297806116389012596e-03, +-8.302971759616544281e-03, +-8.308123664627327723e-03, +-8.313261823729427291e-03, +-8.318386229253522945e-03, +-8.323496873553095851e-03, +-8.328593749004156027e-03, +-8.333676848005608373e-03, +-8.338746162979108686e-03, +-8.343801686368864171e-03, +-8.348843410642082727e-03, +-8.353871328288608664e-03, +-8.358885431821203721e-03, +-8.363885713775182779e-03, +-8.368872166708897845e-03, +-8.373844783203481315e-03, +-8.378803555862741892e-03, +-8.383748477313579181e-03, +-8.388679540205395621e-03, +-8.393596737210903130e-03, +-8.398500061025269622e-03, +-8.403389504366838916e-03, +-8.408265059976632871e-03, +-8.413126720618729557e-03, +-8.417974479080110595e-03, +-8.422808328170548406e-03, +-8.427628260722890702e-03, +-8.432434269592895687e-03, +-8.437226347659315326e-03, +-8.442004487823723605e-03, +-8.446768683010823578e-03, +-8.451518926168317264e-03, +-8.456255210266726968e-03, +-8.460977528299747433e-03, +-8.465685873284136548e-03, +-8.470380238259443001e-03, +-8.475060616288554449e-03, +-8.479727000457064345e-03, +-8.484379383874040420e-03, +-8.489017759671256200e-03, +-8.493642121003794690e-03, +-8.498252461049675410e-03, +-8.502848773010085112e-03, +-8.507431050109426351e-03, +-8.511999285594967074e-03, +-8.516553472737340216e-03, +-8.521093604830219312e-03, +-8.525619675190483290e-03, +-8.530131677158037801e-03, +-8.534629604096085828e-03, +-8.539113449391040958e-03, +-8.543583206452282780e-03, +-8.548038868712649549e-03, +-8.552480429628021852e-03, +-8.556907882677647001e-03, +-8.561321221363743517e-03, +-8.565720439212025014e-03, +-8.570105529771348055e-03, +-8.574476486613764187e-03, +-8.578833303334715971e-03, +-8.583175973552703911e-03, +-8.587504490909877997e-03, +-8.591818849071258812e-03, +-8.596119041725455712e-03, +-8.600405062584312935e-03, +-8.604676905382892260e-03, +-8.608934563879757501e-03, +-8.613178031856572048e-03, +-8.617407303118683470e-03, +-8.621622371494493814e-03, +-8.625823230835830829e-03, +-8.630009875017977464e-03, +-8.634182297939557368e-03, +-8.638340493522609492e-03, +-8.642484455712482264e-03, +-8.646614178478033083e-03, +-8.650729655811513832e-03, +-8.654830881728498015e-03, +-8.658917850268186070e-03, +-8.662990555492930053e-03, +-8.667048991488917123e-03, +-8.671093152365432280e-03, +-8.675123032255423888e-03, +-8.679138625315316324e-03, +-8.683139925724890282e-03, +-8.687126927687586347e-03, +-8.691099625430081729e-03, +-8.695058013202966798e-03, +-8.699002085279948851e-03, +-8.702931835958525181e-03, +-8.706847259559563276e-03, +-8.710748350427512457e-03, +-8.714635102930502752e-03, +-8.718507511459994488e-03, +-8.722365570431168599e-03, +-8.726209274282753156e-03, +-8.730038617477061530e-03, +-8.733853594499947290e-03, +-8.737654199860800733e-03, +-8.741440428092885420e-03, +-8.745212273752743168e-03, +-8.748969731420721402e-03, +-8.752712795700823972e-03, +-8.756441461220529007e-03, +-8.760155722631113306e-03, +-8.763855574607338356e-03, +-8.767541011847870130e-03, +-8.771212029074779495e-03, +-8.774868621034005375e-03, +-8.778510782494997403e-03, +-8.782138508251012554e-03, +-8.785751793118991987e-03, +-8.789350631939488179e-03, +-8.792935019576866157e-03, +-8.796504950919128291e-03, +-8.800060420878131132e-03, +-8.803601424389229796e-03, +-8.807127956411713379e-03, +-8.810640011928579443e-03, +-8.814137585946494116e-03, +-8.817620673495936076e-03, +-8.821089269631189611e-03, +-8.824543369430271761e-03, +-8.827982967994913235e-03, +-8.831408060450726683e-03, +-8.834818641947100870e-03, +-8.838214707657134767e-03, +-8.841596252777890810e-03, +-8.844963272530013271e-03, +-8.848315762158257339e-03, +-8.851653716930942689e-03, +-8.854977132140407978e-03, +-8.858286003102646550e-03, +-8.861580325157656854e-03, +-8.864860093669263766e-03, +-8.868125304025004096e-03, +-8.871375951636480475e-03, +-8.874612031939056039e-03, +-8.877833540391929026e-03, +-8.881040472478301043e-03, +-8.884232823705146345e-03, +-8.887410589603451233e-03, +-8.890573765727933023e-03, +-8.893722347657400870e-03, +-8.896856330994479950e-03, +-8.899975711365696457e-03, +-8.903080484421557403e-03, +-8.906170645836404900e-03, +-8.909246191308678106e-03, +-8.912307116560611378e-03, +-8.915353417338487546e-03, +-8.918385089412426275e-03, +-8.921402128576619989e-03, +-8.924404530649169068e-03, +-8.927392291472114813e-03, +-8.930365406911630263e-03, +-8.933323872857643760e-03, +-8.936267685224262222e-03, +-8.939196839949415524e-03, +-8.942111332995175688e-03, +-8.945011160347597287e-03, +-8.947896318016637651e-03, +-8.950766802036354622e-03, +-8.953622608464849308e-03, +-8.956463733384179352e-03, +-8.959290172900499435e-03, +-8.962101923143844448e-03, +-8.964898980268528467e-03, +-8.967681340452730160e-03, +-8.970448999898772077e-03, +-8.973201954832912483e-03, +-8.975940201505624647e-03, +-8.978663736191388675e-03, +-8.981372555188616921e-03, +-8.984066654820056438e-03, +-8.986746031432308462e-03, +-8.989410681396187500e-03, +-8.992060601106516629e-03, +-8.994695786982261076e-03, +-8.997316235466512602e-03, +-8.999921943026321230e-03, +-9.002512906153035260e-03, +-9.005089121362006357e-03, +-9.007650585192717926e-03, +-9.010197294208778171e-03, +-9.012729244997907951e-03, +-9.015246434172003234e-03, +-9.017748858366998049e-03, +-9.020236514243062248e-03, +-9.022709398484478338e-03, +-9.025167507799662300e-03, +-9.027610838921156650e-03, +-9.030039388605741457e-03, +-9.032453153634285165e-03, +-9.034852130811798360e-03, +-9.037236316967555208e-03, +-9.039605708954845387e-03, +-9.041960303651338376e-03, +-9.044300097958713966e-03, +-9.046625088802880826e-03, +-9.048935273133974777e-03, +-9.051230647926296335e-03, +-9.053511210178329799e-03, +-9.055776956912738040e-03, +-9.058027885176435368e-03, +-9.060263992040500786e-03, +-9.062485274600238713e-03, +-9.064691729975135615e-03, +-9.066883355308979694e-03, +-9.069060147769696101e-03, +-9.071222104549419782e-03, +-9.073369222864559672e-03, +-9.075501499955760526e-03, +-9.077618933087838737e-03, +-9.079721519549922848e-03, +-9.081809256655285281e-03, +-9.083882141741586938e-03, +-9.085940172170551068e-03, +-9.087983345328318890e-03, +-9.090011658625125196e-03, +-9.092025109495556826e-03, +-9.094023695398507565e-03, +-9.096007413816975182e-03, +-9.097976262258337249e-03, +-9.099930238254201956e-03, +-9.101869339360486172e-03, +-9.103793563157285343e-03, +-9.105702907249057371e-03, +-9.107597369264515061e-03, +-9.109476946856610510e-03, +-9.111341637702632251e-03, +-9.113191439504115046e-03, +-9.115026349986886725e-03, +-9.116846366901095941e-03, +-9.118651488021111556e-03, +-9.120441711145723870e-03, +-9.122217034097870533e-03, +-9.123977454724903693e-03, +-9.125722970898400913e-03, +-9.127453580514272719e-03, +-9.129169281492785157e-03, +-9.130870071778405400e-03, +-9.132555949339999507e-03, +-9.134226912170717930e-03, +-9.135882958288023270e-03, +-9.137524085733704157e-03, +-9.139150292573814532e-03, +-9.140761576898854060e-03, +-9.142357936823490572e-03, +-9.143939370486808133e-03, +-9.145505876052209895e-03, +-9.147057451707447592e-03, +-9.148594095664515716e-03, +-9.150115806159807644e-03, +-9.151622581454065333e-03, +-9.153114419832290849e-03, +-9.154591319603907693e-03, +-9.156053279102618556e-03, +-9.157500296686502464e-03, +-9.158932370737929776e-03, +-9.160349499663694023e-03, +-9.161751681894836699e-03, +-9.163138915886812064e-03, +-9.164511200119414280e-03, +-9.165868533096709764e-03, +-9.167210913347238407e-03, +-9.168538339423815825e-03, +-9.169850809903588862e-03, +-9.171148323388111923e-03, +-9.172430878503242888e-03, +-9.173698473899236788e-03, +-9.174951108250669479e-03, +-9.176188780256527844e-03, +-9.177411488640076220e-03, +-9.178619232148991711e-03, +-9.179812009555291322e-03, +-9.180989819655354517e-03, +-9.182152661269940563e-03, +-9.183300533244129552e-03, +-9.184433434447396988e-03, +-9.185551363773596448e-03, +-9.186654320140878044e-03, +-9.187742302491825469e-03, +-9.188815309793318953e-03, +-9.189873341036703530e-03, +-9.190916395237561792e-03, +-9.191944471436000116e-03, +-9.192957568696284373e-03, +-9.193955686107228506e-03, +-9.194938822781942994e-03, +-9.195906977857893835e-03, +-9.196860150496928565e-03, +-9.197798339885272789e-03, +-9.198721545233505895e-03, +-9.199629765776554113e-03, +-9.200523000773765114e-03, +-9.201401249508810859e-03, +-9.202264511289732704e-03, +-9.203112785448932728e-03, +-9.203946071343260468e-03, +-9.204764368353818629e-03, +-9.205567675886133089e-03, +-9.206355993370083507e-03, +-9.207129320259958838e-03, +-9.207887656034346308e-03, +-9.208631000196223354e-03, +-9.209359352272940280e-03, +-9.210072711816241070e-03, +-9.210771078402200940e-03, +-9.211454451631247153e-03, +-9.212122831128167696e-03, +-9.212776216542161584e-03, +-9.213414607546769469e-03, +-9.214038003839866708e-03, +-9.214646405143711930e-03, +-9.215239811204914075e-03, +-9.215818221794437604e-03, +-9.216381636707638922e-03, +-9.216930055764190055e-03, +-9.217463478808153240e-03, +-9.217981905707902865e-03, +-9.218485336356200058e-03, +-9.218973770670213508e-03, +-9.219447208591352930e-03, +-9.219905650085430393e-03, +-9.220349095142606546e-03, +-9.220777543777442659e-03, +-9.221190996028773984e-03, +-9.221589451959805173e-03, +-9.221972911658099861e-03, +-9.222341375235563327e-03, +-9.222694842828411260e-03, +-9.223033314597261709e-03, +-9.223356790727022317e-03, +-9.223665271426982268e-03, +-9.223958756930666567e-03, +-9.224237247496106656e-03, +-9.224500743405519496e-03, +-9.224749244965508785e-03, +-9.224982752507014661e-03, +-9.225201266385273796e-03, +-9.225404786979923485e-03, +-9.225593314694828170e-03, +-9.225766849958237301e-03, +-9.225925393222729823e-03, +-9.226068944965149995e-03, +-9.226197505686718411e-03, +-9.226311075912936588e-03, +-9.226409656193619926e-03, +-9.226493247102915060e-03, +-9.226561849239237403e-03, +-9.226615463225390848e-03, +-9.226654089708390821e-03, +-9.226677729359610003e-03, +-9.226686382874703732e-03, +-9.226680050973630823e-03, +-9.226658734400629280e-03, +-9.226622433924261402e-03, +-9.226571150337387756e-03, +-9.226504884457087385e-03, +-9.226423637124789648e-03, +-9.226327409206184008e-03, +-9.226216201591272079e-03, +-9.226090015194298236e-03, +-9.225948850953782573e-03, +-9.225792709832522642e-03, +-9.225621592817581304e-03, +-9.225435500920323162e-03, +-9.225234435176341702e-03, +-9.225018396645520008e-03, +-9.224787386411949230e-03, +-9.224541405584003179e-03, +-9.224280455294366077e-03, +-9.224004536699874704e-03, +-9.223713650981662376e-03, +-9.223407799345101701e-03, +-9.223086983019830598e-03, +-9.222751203259655153e-03, +-9.222400461342704012e-03, +-9.222034758571256638e-03, +-9.221654096271854339e-03, +-9.221258475795288123e-03, +-9.220847898516518898e-03, +-9.220422365834755538e-03, +-9.219981879173421921e-03, +-9.219526439980144789e-03, +-9.219056049726750274e-03, +-9.218570709909276045e-03, +-9.218070422047969573e-03, +-9.217555187687246493e-03, +-9.217025008395739183e-03, +-9.216479885766239513e-03, +-9.215919821415780380e-03, +-9.215344816985545501e-03, +-9.214754874140852065e-03, +-9.214149994571249613e-03, +-9.213530179990429836e-03, +-9.212895432136280344e-03, +-9.212245752770770180e-03, +-9.211581143680119821e-03, +-9.210901606674662401e-03, +-9.210207143588892281e-03, +-9.209497756281430358e-03, +-9.208773446635022328e-03, +-9.208034216556590726e-03, +-9.207280067977172480e-03, +-9.206511002851941461e-03, +-9.205727023160163378e-03, +-9.204928130905298128e-03, +-9.204114328114784693e-03, +-9.203285616840339509e-03, +-9.202441999157651153e-03, +-9.201583477166595457e-03, +-9.200710052991055085e-03, +-9.199821728779113833e-03, +-9.198918506702864067e-03, +-9.198000388958505608e-03, +-9.197067377766304092e-03, +-9.196119475370606589e-03, +-9.195156684039860681e-03, +-9.194179006066512116e-03, +-9.193186443767119298e-03, +-9.192178999482257876e-03, +-9.191156675576598808e-03, +-9.190119474438816424e-03, +-9.189067398481576276e-03, +-9.188000450141724229e-03, +-9.186918631880000227e-03, +-9.185821946181199626e-03, +-9.184710395554157580e-03, +-9.183583982531702203e-03, +-9.182442709670741304e-03, +-9.181286579552023000e-03, +-9.180115594780465307e-03, +-9.178929757984861243e-03, +-9.177729071818050560e-03, +-9.176513538956852095e-03, +-9.175283162101996112e-03, +-9.174037943978257878e-03, +-9.172777887334351843e-03, +-9.171502994942929907e-03, +-9.170213269600577949e-03, +-9.168908714127926851e-03, +-9.167589331369440861e-03, +-9.166255124193563308e-03, +-9.164906095492706198e-03, +-9.163542248183106226e-03, +-9.162163585205008662e-03, +-9.160770109522504284e-03, +-9.159361824123666423e-03, +-9.157938732020389633e-03, +-9.156500836248497241e-03, +-9.155048139867708393e-03, +-9.153580645961605089e-03, +-9.152098357637666881e-03, +-9.150601278027217095e-03, +-9.149089410285448851e-03, +-9.147562757591423330e-03, +-9.146021323148009058e-03, +-9.144465110181996398e-03, +-9.142894121943950098e-03, +-9.141308361708313374e-03, +-9.139707832773258725e-03, +-9.138092538460878753e-03, +-9.136462482117068198e-03, +-9.134817667111468434e-03, +-9.133158096837533380e-03, +-9.131483774712546853e-03, +-9.129794704177560116e-03, +-9.128090888697390146e-03, +-9.126372331760610954e-03, +-9.124639036879617776e-03, +-9.122891007590490028e-03, +-9.121128247453123145e-03, +-9.119350760051117555e-03, +-9.117558548991802972e-03, +-9.115751617906286963e-03, +-9.113929970449336990e-03, +-9.112093610299486224e-03, +-9.110242541158929466e-03, +-9.108376766753653250e-03, +-9.106496290833170429e-03, +-9.104601117170891406e-03, +-9.102691249563721679e-03, +-9.100766691832360214e-03, +-9.098827447821120767e-03, +-9.096873521397952703e-03, +-9.094904916454519053e-03, +-9.092921636906069888e-03, +-9.090923686691504760e-03, +-9.088911069773325871e-03, +-9.086883790137768174e-03, +-9.084841851794514880e-03, +-9.082785258776952461e-03, +-9.080714015142052689e-03, +-9.078628124970384780e-03, +-9.076527592366054678e-03, +-9.074412421456777914e-03, +-9.072282616393799806e-03, +-9.070138181352027304e-03, +-9.067979120529761836e-03, +-9.065805438148940437e-03, +-9.063617138455050751e-03, +-9.061414225717032145e-03, +-9.059196704227421432e-03, +-9.056964578302198476e-03, +-9.054717852280879872e-03, +-9.052456530526487716e-03, +-9.050180617425487156e-03, +-9.047890117387802009e-03, +-9.045585034846951797e-03, +-9.043265374259751646e-03, +-9.040931140106579431e-03, +-9.038582336891238730e-03, +-9.036218969140931076e-03, +-9.033841041406304520e-03, +-9.031448558261382514e-03, +-9.029041524303700952e-03, +-9.026619944154115616e-03, +-9.024183822456840337e-03, +-9.021733163879648229e-03, +-9.019267973113411982e-03, +-9.016788254872665914e-03, +-9.014294013895026575e-03, +-9.011785254941688875e-03, +-9.009261982796997609e-03, +-9.006724202268799606e-03, +-9.004171918188131479e-03, +-9.001605135409400035e-03, +-8.999023858810309417e-03, +-8.996428093291855901e-03, +-8.993817843778294935e-03, +-8.991193115217238283e-03, +-8.988553912579444125e-03, +-8.985900240859052979e-03, +-8.983232105073311879e-03, +-8.980549510262886628e-03, +-8.977852461491533931e-03, +-8.975140963846217623e-03, +-8.972415022437247450e-03, +-8.969674642397994571e-03, +-8.966919828885191665e-03, +-8.964150587078473231e-03, +-8.961366922180934169e-03, +-8.958568839418664873e-03, +-8.955756344041037459e-03, +-8.952929441320403928e-03, +-8.950088136552365042e-03, +-8.947232435055678390e-03, +-8.944362342172074501e-03, +-8.941477863266523995e-03, +-8.938579003726991254e-03, +-8.935665768964642583e-03, +-8.932738164413636314e-03, +-8.929796195531167907e-03, +-8.926839867797594849e-03, +-8.923869186716237162e-03, +-8.920884157813472812e-03, +-8.917884786638682199e-03, +-8.914871078764308870e-03, +-8.911843039785816156e-03, +-8.908800675321551857e-03, +-8.905743991012978963e-03, +-8.902672992524405041e-03, +-8.899587685543271925e-03, +-8.896488075779810517e-03, +-8.893374168967245474e-03, +-8.890245970861873279e-03, +-8.887103487242611205e-03, +-8.883946723911578455e-03, +-8.880775686693646864e-03, +-8.877590381436647332e-03, +-8.874390814011262271e-03, +-8.871176990310966626e-03, +-8.867948916252256855e-03, +-8.864706597774366439e-03, +-8.861450040839380371e-03, +-8.858179251432193521e-03, +-8.854894235560595642e-03, +-8.851594999255106566e-03, +-8.848281548569028251e-03, +-8.844953889578554065e-03, +-8.841612028382525926e-03, +-8.838255971102599098e-03, +-8.834885723883155462e-03, +-8.831501292891398916e-03, +-8.828102684317145482e-03, +-8.824689904372963814e-03, +-8.821262959294230710e-03, +-8.817821855338841414e-03, +-8.814366598787542681e-03, +-8.810897195943589305e-03, +-8.807413653133026876e-03, +-8.803915976704530452e-03, +-8.800404173029376803e-03, +-8.796878248501477371e-03, +-8.793338209537289799e-03, +-8.789784062576045179e-03, +-8.786215814079442743e-03, +-8.782633470531708841e-03, +-8.779037038439825927e-03, +-8.775426524333154385e-03, +-8.771801934763685804e-03, +-8.768163276305855625e-03, +-8.764510555556805083e-03, +-8.760843779136036000e-03, +-8.757162953685525275e-03, +-8.753468085869886214e-03, +-8.749759182375995564e-03, +-8.746036249913477501e-03, +-8.742299295214032290e-03, +-8.738548325032175282e-03, +-8.734783346144562102e-03, +-8.731004365350451824e-03, +-8.727211389471417266e-03, +-8.723404425351371019e-03, +-8.719583479856757996e-03, +-8.715748559876250121e-03, +-8.711899672320931945e-03, +-8.708036824124135850e-03, +-8.704160022241723069e-03, +-8.700269273651693377e-03, +-8.696364585354362034e-03, +-8.692445964372446515e-03, +-8.688513417750856616e-03, +-8.684566952556788122e-03, +-8.680606575879608322e-03, +-8.676632294831083253e-03, +-8.672644116545200760e-03, +-8.668642048177924164e-03, +-8.664626096907704009e-03, +-8.660596269935009681e-03, +-8.656552574482577478e-03, +-8.652495017795277035e-03, +-8.648423607140036731e-03, +-8.644338349806150734e-03, +-8.640239253104812361e-03, +-8.636126324369452351e-03, +-8.631999570955473447e-03, +-8.627859000240580001e-03, +-8.623704619624377246e-03, +-8.619536436528532630e-03, +-8.615354458396869489e-03, +-8.611158692695191838e-03, +-8.606949146911286111e-03, +-8.602725828554931564e-03, +-8.598488745158047730e-03, +-8.594237904274383902e-03, +-8.589973313479663114e-03, +-8.585694980371731330e-03, +-8.581402912570113353e-03, +-8.577097117716564467e-03, +-8.572777603474411243e-03, +-8.568444377529196854e-03, +-8.564097447588167600e-03, +-8.559736821380446378e-03, +-8.555362506657150645e-03, +-8.550974511191068023e-03, +-8.546572842777074366e-03, +-8.542157509231486714e-03, +-8.537728518392696461e-03, +-8.533285878120923026e-03, +-8.528829596297998750e-03, +-8.524359680827606547e-03, +-8.519876139635085624e-03, +-8.515378980667707293e-03, +-8.510868211894305480e-03, +-8.506343841305382542e-03, +-8.501805876913326107e-03, +-8.497254326751964987e-03, +-8.492689198877138163e-03, +-8.488110501365863855e-03, +-8.483518242317196478e-03, +-8.478912429851654178e-03, +-8.474293072111286490e-03, +-8.469660177259974443e-03, +-8.465013753482922287e-03, +-8.460353808987141483e-03, +-8.455680352000883443e-03, +-8.450993390774272709e-03, +-8.446292933578682452e-03, +-8.441578988707260089e-03, +-8.436851564474412077e-03, +-8.432110669216091869e-03, +-8.427356311289812066e-03, +-8.422588499074446650e-03, +-8.417807240970274357e-03, +-8.413012545399074088e-03, +-8.408204420804029494e-03, +-8.403382875649645714e-03, +-8.398547918421815292e-03, +-8.393699557627910118e-03, +-8.388837801796505608e-03, +-8.383962659477535093e-03, +-8.379074139242352268e-03, +-8.374172249683451905e-03, +-8.369256999414848019e-03, +-8.364328397071480597e-03, +-8.359386451309916422e-03, +-8.354431170807636101e-03, +-8.349462564263681122e-03, +-8.344480640398034554e-03, +-8.339485407951924625e-03, +-8.334476875687923600e-03, +-8.329455052389569611e-03, +-8.324419946861668501e-03, +-8.319371567930064840e-03, +-8.314309924441881314e-03, +-8.309235025265201274e-03, +-8.304146879289198840e-03, +-8.299045495424258595e-03, +-8.293930882601715376e-03, +-8.288803049773927137e-03, +-8.283662005914247187e-03, +-8.278507760017296546e-03, +-8.273340321098368935e-03, +-8.268159698193850576e-03, +-8.262965900361235808e-03, +-8.257758936678719422e-03, +-8.252538816245739636e-03, +-8.247305548182237364e-03, +-8.242059141629443780e-03, +-8.236799605749224595e-03, +-8.231526949724524145e-03, +-8.226241182758959464e-03, +-8.220942314077002433e-03, +-8.215630352924154986e-03, +-8.210305308566357568e-03, +-8.204967190290639659e-03, +-8.199616007404776294e-03, +-8.194251769237208272e-03, +-8.188874485137111539e-03, +-8.183484164474350356e-03, +-8.178080816639751380e-03, +-8.172664451044538148e-03, +-8.167235077120676284e-03, +-8.161792704320968914e-03, +-8.156337342118603895e-03, +-8.150869000007705464e-03, +-8.145387687502605653e-03, +-8.139893414138602359e-03, +-8.134386189471340053e-03, +-8.128866023077205294e-03, +-8.123332924552978049e-03, +-8.117786903515956595e-03, +-8.112227969604196912e-03, +-8.106656132475844809e-03, +-8.101071401809902678e-03, +-8.095473787305552948e-03, +-8.089863298682694118e-03, +-8.084239945681442885e-03, +-8.078603738062323236e-03, +-8.072954685606452060e-03, +-8.067292798115117611e-03, +-8.061618085410057061e-03, +-8.055930557333295175e-03, +-8.050230223747258801e-03, +-8.044517094534785542e-03, +-8.038791179598634568e-03, +-8.033052488862265500e-03, +-8.027301032269064732e-03, +-8.021536819782968189e-03, +-8.015759861387892343e-03, +-8.009970167087949316e-03, +-8.004167746907778214e-03, +-7.998352610891669087e-03, +-7.992524769104520505e-03, +-7.986684231631072800e-03, +-7.980831008576466656e-03, +-7.974965110065674115e-03, +-7.969086546243821234e-03, +-7.963195327276276561e-03, +-7.957291463348266022e-03, +-7.951374964665112316e-03, +-7.945445841452075317e-03, +-7.939504103954648714e-03, +-7.933549762438048270e-03, +-7.927582827187503248e-03, +-7.921603308508388258e-03, +-7.915611216725772226e-03, +-7.909606562184708090e-03, +-7.903589355250102699e-03, +-7.897559606306914573e-03, +-7.891517325759753176e-03, +-7.885462524033073212e-03, +-7.879395211571375846e-03, +-7.873315398838636250e-03, +-7.867223096319026984e-03, +-7.861118314515937872e-03, +-7.855001063953068879e-03, +-7.848871355173403161e-03, +-7.842729198740017171e-03, +-7.836574605235395452e-03, +-7.830407585261739412e-03, +-7.824228149441114777e-03, +-7.818036308415007504e-03, +-7.811832072844537150e-03, +-7.805615453410623406e-03, +-7.799386460813551546e-03, +-7.793145105773264733e-03, +-7.786891399029197483e-03, +-7.780625351340480361e-03, +-7.774346973485602580e-03, +-7.768056276262470979e-03, +-7.761753270488756101e-03, +-7.755437967001265094e-03, +-7.749110376656574012e-03, +-7.742770510330241988e-03, +-7.736418378917692476e-03, +-7.730053993333335476e-03, +-7.723677364511290049e-03, +-7.717288503404797113e-03, +-7.710887420986369499e-03, +-7.704474128248140624e-03, +-7.698048636201207905e-03, +-7.691610955876090720e-03, +-7.685161098322446788e-03, +-7.678699074609375737e-03, +-7.672224895825034870e-03, +-7.665738573076682529e-03, +-7.659240117491045857e-03, +-7.652729540213750944e-03, +-7.646206852409647217e-03, +-7.639672065262614886e-03, +-7.633125189975804338e-03, +-7.626566237771499959e-03, +-7.619995219890610995e-03, +-7.613412147593597024e-03, +-7.606817032159594524e-03, +-7.600209884886993672e-03, +-7.593590717092999452e-03, +-7.586959540113740082e-03, +-7.580316365304587065e-03, +-7.573661204039377169e-03, +-7.566994067711254636e-03, +-7.560314967732033667e-03, +-7.553623915532527155e-03, +-7.546920922562330714e-03, +-7.540206000289748946e-03, +-7.533479160202169282e-03, +-7.526740413805550235e-03, +-7.519989772624678138e-03, +-7.513227248203031838e-03, +-7.506452852102997800e-03, +-7.499666595905529233e-03, +-7.492868491210176451e-03, +-7.486058549635478052e-03, +-7.479236782818240135e-03, +-7.472403202414364641e-03, +-7.465557820097740854e-03, +-7.458700647561461450e-03, +-7.451831696516840638e-03, +-7.444950978693752434e-03, +-7.438058505840841432e-03, +-7.431154289724950339e-03, +-7.424238342131799125e-03, +-7.417310674865077759e-03, +-7.410371299747303166e-03, +-7.403420228619434114e-03, +-7.396457473340660449e-03, +-7.389483045788598249e-03, +-7.382496957859240386e-03, +-7.375499221467060607e-03, +-7.368489848544732511e-03, +-7.361468851043192867e-03, +-7.354436240931877533e-03, +-7.347392030198223595e-03, +-7.340336230848281719e-03, +-7.333268854905816703e-03, +-7.326189914413321416e-03, +-7.319099421431145974e-03, +-7.311997388037888915e-03, +-7.304883826330426690e-03, +-7.297758748423508607e-03, +-7.290622166450392606e-03, +-7.283474092561844325e-03, +-7.276314538927240380e-03, +-7.269143517733638558e-03, +-7.261961041186426602e-03, +-7.254767121508735005e-03, +-7.247561770941699823e-03, +-7.240345001744674311e-03, +-7.233116826194653862e-03, +-7.225877256586709686e-03, +-7.218626305233662686e-03, +-7.211363984466500655e-03, +-7.204090306633797146e-03, +-7.196805284101995964e-03, +-7.189508929255583776e-03, +-7.182201254496569688e-03, +-7.174882272244867756e-03, +-7.167551994938024633e-03, +-7.160210435031502327e-03, +-7.152857604998566314e-03, +-7.145493517329640221e-03, +-7.138118184533426454e-03, +-7.130731619135852357e-03, +-7.123333833680790123e-03, +-7.115924840729482594e-03, +-7.108504652860780058e-03, +-7.101073282671264281e-03, +-7.093630742774889412e-03, +-7.086177045803191896e-03, +-7.078712204405107448e-03, +-7.071236231247312806e-03, +-7.063749139013674079e-03, +-7.056250940405487879e-03, +-7.048741648141758007e-03, +-7.041221274958583097e-03, +-7.033689833609536521e-03, +-7.026147336865433933e-03, +-7.018593797514699299e-03, +-7.011029228362785498e-03, +-7.003453642232438867e-03, +-6.995867051963923847e-03, +-6.988269470414395015e-03, +-6.980660910458675109e-03, +-6.973041384988139593e-03, +-6.965410906911982149e-03, +-6.957769489156107913e-03, +-6.950117144663875077e-03, +-6.942453886395526762e-03, +-6.934779727328360156e-03, +-6.927094680457118563e-03, +-6.919398758792966175e-03, +-6.911691975364589631e-03, +-6.903974343217607335e-03, +-6.896245875414454100e-03, +-6.888506585034568502e-03, +-6.880756485174290525e-03, +-6.872995588947073201e-03, +-6.865223909483060202e-03, +-6.857441459929184725e-03, +-6.849648253449565002e-03, +-6.841844303224740159e-03, +-6.834029622452521963e-03, +-6.826204224346836893e-03, +-6.818368122139062751e-03, +-6.810521329076799600e-03, +-6.802663858424700706e-03, +-6.794795723463926962e-03, +-6.786916937492251840e-03, +-6.779027513824434359e-03, +-6.771127465791237227e-03, +-6.763216806740702733e-03, +-6.755295550036933237e-03, +-6.747363709060981950e-03, +-6.739421297210126949e-03, +-6.731468327898222463e-03, +-6.723504814555836782e-03, +-6.715530770629695410e-03, +-6.707546209583126889e-03, +-6.699551144895747948e-03, +-6.691545590063875497e-03, +-6.683529558599849221e-03, +-6.675503064032465260e-03, +-6.667466119907031717e-03, +-6.659418739784871664e-03, +-6.651360937243894732e-03, +-6.643292725878016843e-03, +-6.635214119297410881e-03, +-6.627125131128796393e-03, +-6.619025775014458594e-03, +-6.610916064613512992e-03, +-6.602796013600706684e-03, +-6.594665635667335164e-03, +-6.586524944520485980e-03, +-6.578373953883334506e-03, +-6.570212677495354710e-03, +-6.562041129111801339e-03, +-6.553859322504055132e-03, +-6.545667271459339187e-03, +-6.537464989781122289e-03, +-6.529252491288540378e-03, +-6.521029789816674971e-03, +-6.512796899216694545e-03, +-6.504553833355470292e-03, +-6.496300606115706228e-03, +-6.488037231395887144e-03, +-6.479763723110562243e-03, +-6.471480095189783947e-03, +-6.463186361579349899e-03, +-6.454882536241051891e-03, +-6.446568633152027945e-03, +-6.438244666305563760e-03, +-6.429910649709956461e-03, +-6.421566597389753196e-03, +-6.413212523384680813e-03, +-6.404848441750385715e-03, +-6.396474366557878752e-03, +-6.388090311893613281e-03, +-6.379696291859901502e-03, +-6.371292320574235314e-03, +-6.362878412169585551e-03, +-6.354454580794650920e-03, +-6.346020840613288139e-03, +-6.337577205804812916e-03, +-6.329123690563806526e-03, +-6.320660309100524336e-03, +-6.312187075640271310e-03, +-6.303704004423586749e-03, +-6.295211109706635479e-03, +-6.286708405760465385e-03, +-6.278195906871755078e-03, +-6.269673627341773060e-03, +-6.261141581487680505e-03, +-6.252599783641226740e-03, +-6.244048248149732840e-03, +-6.235486989375330080e-03, +-6.226916021695263516e-03, +-6.218335359502076727e-03, +-6.209745017203106149e-03, +-6.201145009220769902e-03, +-6.192535349992404729e-03, +-6.183916053970573042e-03, +-6.175287135622515612e-03, +-6.166648609430390969e-03, +-6.158000489891513052e-03, +-6.149342791517779620e-03, +-6.140675528836076445e-03, +-6.131998716387956384e-03, +-6.123312368729970714e-03, +-6.114616500433558977e-03, +-6.105911126084334270e-03, +-6.097196260283274140e-03, +-6.088471917645591272e-03, +-6.079738112801562691e-03, +-6.070994860395820258e-03, +-6.062242175087610013e-03, +-6.053480071551196363e-03, +-6.044708564474690279e-03, +-6.035927668561480441e-03, +-6.027137398528988575e-03, +-6.018337769109489109e-03, +-6.009528795049491612e-03, +-6.000710491109921205e-03, +-5.991882872066456832e-03, +-5.983045952708861658e-03, +-5.974199747841368174e-03, +-5.965344272282505599e-03, +-5.956479540865400844e-03, +-5.947605568437161830e-03, +-5.938722369859231361e-03, +-5.929829960007556265e-03, +-5.920928353771956823e-03, +-5.912017566056921268e-03, +-5.903097611780446126e-03, +-5.894168505875365012e-03, +-5.885230263288241011e-03, +-5.876282898979776070e-03, +-5.867326427924991414e-03, +-5.858360865112623855e-03, +-5.849386225545882140e-03, +-5.840402524241354067e-03, +-5.831409776230127989e-03, +-5.822407996557219488e-03, +-5.813397200281314632e-03, +-5.804377402475140342e-03, +-5.795348618225189437e-03, +-5.786310862632115283e-03, +-5.777264150810108162e-03, +-5.768208497887137264e-03, +-5.759143919005262936e-03, +-5.750070429319911573e-03, +-5.740988044000739504e-03, +-5.731896778230370117e-03, +-5.722796647205846687e-03, +-5.713687666137438025e-03, +-5.704569850249069547e-03, +-5.695443214778521043e-03, +-5.686307774976793496e-03, +-5.677163546108927872e-03, +-5.668010543452771735e-03, +-5.658848782300374830e-03, +-5.649678277956799062e-03, +-5.640499045740919939e-03, +-5.631311100984727480e-03, +-5.622114459033643666e-03, +-5.612909135246745354e-03, +-5.603695144996152788e-03, +-5.594472503667412104e-03, +-5.585241226659253336e-03, +-5.576001329384007617e-03, +-5.566752827266928036e-03, +-5.557495735746452448e-03, +-5.548230070274595520e-03, +-5.538955846316175047e-03, +-5.529673079349250835e-03, +-5.520381784864912197e-03, +-5.511081978367557248e-03, +-5.501773675374734170e-03, +-5.492456891416395287e-03, +-5.483131642036276170e-03, +-5.473797942790523466e-03, +-5.464455809248691502e-03, +-5.455105256992965994e-03, +-5.445746301618401702e-03, +-5.436378958733297136e-03, +-5.427003243958476372e-03, +-5.417619172927680242e-03, +-5.408226761287372904e-03, +-5.398826024697082719e-03, +-5.389416978828820252e-03, +-5.379999639367295979e-03, +-5.370574022010226461e-03, +-5.361140142467706385e-03, +-5.351698016462575445e-03, +-5.342247659730193707e-03, +-5.332789088018844055e-03, +-5.323322317089030503e-03, +-5.313847362713824268e-03, +-5.304364240679137858e-03, +-5.294872966782937507e-03, +-5.285373556836189465e-03, +-5.275866026661545083e-03, +-5.266350392094826596e-03, +-5.256826668983713945e-03, +-5.247294873188652030e-03, +-5.237755020582117796e-03, +-5.228207127048889111e-03, +-5.218651208486442886e-03, +-5.209087280803781535e-03, +-5.199515359922765242e-03, +-5.189935461777343481e-03, +-5.180347602313423172e-03, +-5.170751797489195681e-03, +-5.161148063274843649e-03, +-5.151536415652954726e-03, +-5.141916870617888394e-03, +-5.132289444176036178e-03, +-5.122654152346142568e-03, +-5.113011011158468885e-03, +-5.103360036655825438e-03, +-5.093701244892176808e-03, +-5.084034651934166670e-03, +-5.074360273859772515e-03, +-5.064678126759256278e-03, +-5.054988226734385449e-03, +-5.045290589898733177e-03, +-5.035585232378102412e-03, +-5.025872170309243075e-03, +-5.016151419841424590e-03, +-5.006422997135061108e-03, +-4.996686918362633519e-03, +-4.986943199707999895e-03, +-4.977191857366581977e-03, +-4.967432907545756351e-03, +-4.957666366464087704e-03, +-4.947892250351811939e-03, +-4.938110575450588985e-03, +-4.928321358013829784e-03, +-4.918524614306115164e-03, +-4.908720360603438700e-03, +-4.898908613193510286e-03, +-4.889089388374992864e-03, +-4.879262702458325544e-03, +-4.869428571764930838e-03, +-4.859587012627522573e-03, +-4.849738041390544777e-03, +-4.839881674408882777e-03, +-4.830017928049388024e-03, +-4.820146818689583119e-03, +-4.810268362718574282e-03, +-4.800382576536255108e-03, +-4.790489476553611015e-03, +-4.780589079193074860e-03, +-4.770681400887749786e-03, +-4.760766458081889738e-03, +-4.750844267230641856e-03, +-4.740914844800429850e-03, +-4.730978207268300879e-03, +-4.721034371122194429e-03, +-4.711083352861281451e-03, +-4.701125168995254865e-03, +-4.691159836044739816e-03, +-4.681187370541073367e-03, +-4.671207789026649709e-03, +-4.661221108054338161e-03, +-4.651227344187707814e-03, +-4.641226514001319838e-03, +-4.631218634079999757e-03, +-4.621203721019736914e-03, +-4.611181791426366937e-03, +-4.601152861917087895e-03, +-4.591116949119090733e-03, +-4.581074069670538519e-03, +-4.571024240219763272e-03, +-4.560967477425555659e-03, +-4.550903797957509336e-03, +-4.540833218495284561e-03, +-4.530755755728935186e-03, +-4.520671426359211369e-03, +-4.510580247096863081e-03, +-4.500482234663059043e-03, +-4.490377405789146466e-03, +-4.480265777217024015e-03, +-4.470147365698509505e-03, +-4.460022187995620058e-03, +-4.449890260880874811e-03, +-4.439751601136449240e-03, +-4.429606225555236809e-03, +-4.419454150939410887e-03, +-4.409295394101990333e-03, +-4.399129971865475136e-03, +-4.388957901062784904e-03, +-4.378779198536506857e-03, +-4.368593881139155172e-03, +-4.358401965733526597e-03, +-4.348203469191935441e-03, +-4.337998408396688890e-03, +-4.327786800239812048e-03, +-4.317568661623485092e-03, +-4.307344009459312950e-03, +-4.297112860668659239e-03, +-4.286875232182960245e-03, +-4.276631140942992008e-03, +-4.266380603899313541e-03, +-4.256123638012009221e-03, +-4.245860260251016656e-03, +-4.235590487595953212e-03, +-4.225314337035302424e-03, +-4.215031825567888517e-03, +-4.204742970201461733e-03, +-4.194447787953700137e-03, +-4.184146295851370878e-03, +-4.173838510930677134e-03, +-4.163524450237625872e-03, +-4.153204130826826553e-03, +-4.142877569762999472e-03, +-4.132544784119596658e-03, +-4.122205790979801936e-03, +-4.111860607435699998e-03, +-4.101509250588582581e-03, +-4.091151737549304952e-03, +-4.080788085437506152e-03, +-4.070418311382088643e-03, +-4.060042432520954633e-03, +-4.049660466001412003e-03, +-4.039272428979456993e-03, +-4.028878338620145438e-03, +-4.018478212097828690e-03, +-4.008072066595409419e-03, +-3.997659919305245405e-03, +-3.987241787427830281e-03, +-3.976817688173337438e-03, +-3.966387638760319849e-03, +-3.955951656416146350e-03, +-3.945509758377350323e-03, +-3.935061961888745852e-03, +-3.924608284204474627e-03, +-3.914148742586550517e-03, +-3.903683354306506682e-03, +-3.893212136643939714e-03, +-3.882735106887526180e-03, +-3.872252282334190821e-03, +-3.861763680289418375e-03, +-3.851269318067590975e-03, +-3.840769212991241351e-03, +-3.830263382391383732e-03, +-3.819751843607831297e-03, +-3.809234613988351798e-03, +-3.798711710889704930e-03, +-3.788183151676189925e-03, +-3.777648953721231967e-03, +-3.767109134406157467e-03, +-3.756563711120505886e-03, +-3.746012701262475125e-03, +-3.735456122237983904e-03, +-3.724893991461727342e-03, +-3.714326326355773134e-03, +-3.703753144351123235e-03, +-3.693174462886310468e-03, +-3.682590299408416371e-03, +-3.672000671372193867e-03, +-3.661405596240466676e-03, +-3.650805091484362642e-03, +-3.640199174582645428e-03, +-3.629587863022108295e-03, +-3.618971174297361173e-03, +-3.608349125911207086e-03, +-3.597721735373993809e-03, +-3.587089020203850214e-03, +-3.576450997927054908e-03, +-3.565807686077315884e-03, +-3.555159102196166470e-03, +-3.544505263832751531e-03, +-3.533846188544105885e-03, +-3.523181893895048489e-03, +-3.512512397457282550e-03, +-3.501837716810962415e-03, +-3.491157869543185226e-03, +-3.480472873249045203e-03, +-3.469782745530816150e-03, +-3.459087503998223376e-03, +-3.448387166268788474e-03, +-3.437681749967110272e-03, +-3.426971272725275099e-03, +-3.416255752182624332e-03, +-3.405535205986162488e-03, +-3.394809651789856397e-03, +-3.384079107254948753e-03, +-3.373343590050251715e-03, +-3.362603117851456491e-03, +-3.351857708341557471e-03, +-3.341107379210567739e-03, +-3.330352148155990046e-03, +-3.319592032882079553e-03, +-3.308827051100149581e-03, +-3.298057220528891661e-03, +-3.287282558893551108e-03, +-3.276503083926944875e-03, +-3.265718813368006547e-03, +-3.254929764963411347e-03, +-3.244135956466155830e-03, +-3.233337405636552749e-03, +-3.222534130241407925e-03, +-3.211726148054319489e-03, +-3.200913476856153631e-03, +-3.190096134433675467e-03, +-3.179274138581078199e-03, +-3.168447507099146111e-03, +-3.157616257795055944e-03, +-3.146780408482757231e-03, +-3.135939976982661786e-03, +-3.125094981122128121e-03, +-3.114245438734682993e-03, +-3.103391367660374416e-03, +-3.092532785746090421e-03, +-3.081669710844692992e-03, +-3.070802160816074947e-03, +-3.059930153525662003e-03, +-3.049053706846124520e-03, +-3.038172838655834023e-03, +-3.027287566839970395e-03, +-3.016397909289620684e-03, +-3.005503883902130823e-03, +-2.994605508581526729e-03, +-2.983702801237201989e-03, +-2.972795779785556737e-03, +-2.961884462148496686e-03, +-2.950968866254536846e-03, +-2.940049010037885154e-03, +-2.929124911438808938e-03, +-2.918196588403922445e-03, +-2.907264058885495120e-03, +-2.896327340841854930e-03, +-2.885386452237135527e-03, +-2.874441411041726412e-03, +-2.863492235231531770e-03, +-2.852538942788284456e-03, +-2.841581551699882968e-03, +-2.830620079959535792e-03, +-2.819654545566664759e-03, +-2.808684966526059801e-03, +-2.797711360848187303e-03, +-2.786733746549689694e-03, +-2.775752141651949105e-03, +-2.764766564182823388e-03, +-2.753777032175130403e-03, +-2.742783563667724415e-03, +-2.731786176704581025e-03, +-2.720784889335178813e-03, +-2.709779719614819390e-03, +-2.698770685603842871e-03, +-2.687757805368114900e-03, +-2.676741096978759501e-03, +-2.665720578512574112e-03, +-2.654696268051312275e-03, +-2.643668183681991985e-03, +-2.632636343497252607e-03, +-2.621600765594590734e-03, +-2.610561468076790393e-03, +-2.599518469051681924e-03, +-2.588471786632589103e-03, +-2.577421438937566728e-03, +-2.566367444089743665e-03, +-2.555309820217642469e-03, +-2.544248585454313323e-03, +-2.533183757938396990e-03, +-2.522115355812613435e-03, +-2.511043397225480936e-03, +-2.499967900329779554e-03, +-2.488888883283644875e-03, +-2.477806364249673758e-03, +-2.466720361395271718e-03, +-2.455630892892966474e-03, +-2.444537976919676763e-03, +-2.433441631657018954e-03, +-2.422341875291670905e-03, +-2.411238726014580929e-03, +-2.400132202021460458e-03, +-2.389022321512473523e-03, +-2.377909102692727684e-03, +-2.366792563771483865e-03, +-2.355672722962514135e-03, +-2.344549598484430442e-03, +-2.333423208559794702e-03, +-2.322293571416206900e-03, +-2.311160705284770293e-03, +-2.300024628401824405e-03, +-2.288885359007407187e-03, +-2.277742915346345730e-03, +-2.266597315667362011e-03, +-2.255448578223411167e-03, +-2.244296721272026705e-03, +-2.233141763074545944e-03, +-2.221983721896574927e-03, +-2.210822616007706524e-03, +-2.199658463682002251e-03, +-2.188491283197198638e-03, +-2.177321092835057207e-03, +-2.166147910881709247e-03, +-2.154971755626887767e-03, +-2.143792645364376789e-03, +-2.132610598391746805e-03, +-2.121425633010686970e-03, +-2.110237767526863296e-03, +-2.099047020249017025e-03, +-2.087853409490531085e-03, +-2.076656953567939095e-03, +-2.065457670801998293e-03, +-2.054255579516777071e-03, +-2.043050698040021866e-03, +-2.031843044703604724e-03, +-2.020632637842150262e-03, +-2.009419495794710544e-03, +-1.998203636903277559e-03, +-1.986985079513855709e-03, +-1.975763841975554987e-03, +-1.964539942640962638e-03, +-1.953313399866433726e-03, +-1.942084232011382066e-03, +-1.930852457438696126e-03, +-1.919618094514478814e-03, +-1.908381161608510655e-03, +-1.897141677093482602e-03, +-1.885899659345336484e-03, +-1.874655126743596115e-03, +-1.863408097670474781e-03, +-1.852158590511983945e-03, +-1.840906623656360938e-03, +-1.829652215495836858e-03, +-1.818395384425202169e-03, +-1.807136148842287873e-03, +-1.795874527148304863e-03, +-1.784610537746939701e-03, +-1.773344199045460501e-03, +-1.762075529453165220e-03, +-1.750804547383124840e-03, +-1.739531271250637076e-03, +-1.728255719474332697e-03, +-1.716977910475255041e-03, +-1.705697862677222352e-03, +-1.694415594507166266e-03, +-1.683131124394347507e-03, +-1.671844470770698053e-03, +-1.660555652071183481e-03, +-1.649264686732880309e-03, +-1.637971593196079281e-03, +-1.626676389902749270e-03, +-1.615379095298263758e-03, +-1.604079727829990512e-03, +-1.592778305947770146e-03, +-1.581474848104250054e-03, +-1.570169372753980625e-03, +-1.558861898354526980e-03, +-1.547552443364907720e-03, +-1.536241026247345048e-03, +-1.524927665465723899e-03, +-1.513612379486672021e-03, +-1.502295186778685896e-03, +-1.490976105812445154e-03, +-1.479655155061170577e-03, +-1.468332352999855836e-03, +-1.457007718105709409e-03, +-1.445681268857898711e-03, +-1.434353023738016517e-03, +-1.423023001229281256e-03, +-1.411691219816913444e-03, +-1.400357697988452920e-03, +-1.389022454232992105e-03, +-1.377685507041648489e-03, +-1.366346874907265396e-03, +-1.355006576324787552e-03, +-1.343664629791083923e-03, +-1.332321053804037857e-03, +-1.320975866864166010e-03, +-1.309629087473066639e-03, +-1.298280734134526354e-03, +-1.286930825353607873e-03, +-1.275579379636997395e-03, +-1.264226415493350250e-03, +-1.252871951432512438e-03, +-1.241516005965990523e-03, +-1.230158597606658463e-03, +-1.218799744869252877e-03, +-1.207439466269570301e-03, +-1.196077780324817383e-03, +-1.184714705553967587e-03, +-1.173350260476964738e-03, +-1.161984463615209828e-03, +-1.150617333491252671e-03, +-1.139248888629301260e-03, +-1.127879147554412516e-03, +-1.116508128792838370e-03, +-1.105135850872388968e-03, +-1.093762332321508712e-03, +-1.082387591670384754e-03, +-1.071011647449401352e-03, +-1.059634518190883702e-03, +-1.048256222427535389e-03, +-1.036876778693565301e-03, +-1.025496205523764330e-03, +-1.014114521453849489e-03, +-1.002731745020948992e-03, +-9.913478947621719682e-04, +-9.799629892162276153e-04, +-9.685770469225122963e-04, +-9.571900864209475623e-04, +-9.458021262523318672e-04, +-9.344131849580518444e-04, +-9.230232810805760529e-04, +-9.116324331626370547e-04, +-9.002406597476081754e-04, +-8.888479793798394982e-04, +-8.774544106037425809e-04, +-8.660599719649005697e-04, +-8.546646820085201761e-04, +-8.432685592811736642e-04, +-8.318716223292456228e-04, +-8.204738897000525121e-04, +-8.090753799409141538e-04, +-7.976761115995051202e-04, +-7.862761032243454446e-04, +-7.748753733633574397e-04, +-7.634739405656198281e-04, +-7.520718233798177671e-04, +-7.406690403553502526e-04, +-7.292656100414131011e-04, +-7.178615509873488218e-04, +-7.064568817429984398e-04, +-6.950516208579105709e-04, +-6.836457868818151097e-04, +-6.722393983643422041e-04, +-6.608324738555042916e-04, +-6.494250319048931394e-04, +-6.380170910620419676e-04, +-6.266086698767702259e-04, +-6.151997868982610456e-04, +-6.037904606761866416e-04, +-5.923807097591396887e-04, +-5.809705526962659133e-04, +-5.695600080364634100e-04, +-5.581490943275952939e-04, +-5.467378301181097158e-04, +-5.353262339554841400e-04, +-5.239143243873420732e-04, +-5.125021199605286730e-04, +-5.010896392214665837e-04, +-4.896769007165032057e-04, +-4.782639229911208548e-04, +-4.668507245904126180e-04, +-4.554373240588030091e-04, +-4.440237399405169943e-04, +-4.326099907787994757e-04, +-4.211960951162547540e-04, +-4.097820714952055631e-04, +-3.983679384568991622e-04, +-3.869537145419822710e-04, +-3.755394182902192855e-04, +-3.641250682409708991e-04, +-3.527106829324008460e-04, +-3.412962809018266945e-04, +-3.298818806860727556e-04, +-3.184675008205473720e-04, +-3.070531598403601885e-04, +-2.956388762787637747e-04, +-2.842246686689050986e-04, +-2.728105555422702931e-04, +-2.613965554297967763e-04, +-2.499826868609553664e-04, +-2.385689683641003698e-04, +-2.271554184668220287e-04, +-2.157420556951515297e-04, +-2.043288985739155378e-04, +-1.929159656270861228e-04, +-1.815032753769855783e-04, +-1.700908463447692710e-04, +-1.586786970501384629e-04, +-1.472668460118195825e-04, +-1.358553117467720529e-04, +-1.244441127705377841e-04, +-1.130332675975952329e-04, +-1.016227947404377768e-04, +-9.021271271068815158e-05, +-7.880304001754252698e-05, +-6.739379516952208890e-05, +-5.598499667291546806e-05, +-4.457666303289376056e-05, +-3.316881275259110412e-05, +-2.176146433345513625e-05, +-1.035463627559950400e-05, + 1.051652922989795198e-06, + 1.245738476597532969e-05, + 2.386254075895264404e-05, + 3.526710240897137834e-05, + 4.667105122532837588e-05, + 5.807436871921593298e-05, + 6.947703640337061918e-05, + 8.087903579286560200e-05, + 9.228034840463236472e-05, + 1.036809557577446724e-04, + 1.150808393729401069e-04, + 1.264799807734121983e-04, + 1.378783614844605529e-04, + 1.492759630331373492e-04, + 1.606727669491678256e-04, + 1.720687547639635612e-04, + 1.834639080115422051e-04, + 1.948582082281761401e-04, + 2.062516369519120187e-04, + 2.176441757240020459e-04, + 2.290358060871508234e-04, + 2.404265095870738913e-04, + 2.518162677713818120e-04, + 2.632050621904985987e-04, + 2.745928743973121951e-04, + 2.859796859468231671e-04, + 2.973654783969359536e-04, + 3.087502333079798658e-04, + 3.201339322429943408e-04, + 3.315165567672497785e-04, + 3.428980884490413945e-04, + 3.542785088593340356e-04, + 3.656577995714144756e-04, + 3.770359421618101688e-04, + 3.884129182091717626e-04, + 3.997887092958340776e-04, + 4.111632970060600796e-04, + 4.225366629274744114e-04, + 4.339087886505786466e-04, + 4.452796557684067296e-04, + 4.566492458774390668e-04, + 4.680175405764913274e-04, + 4.793845214682665337e-04, + 4.907501701576083564e-04, + 5.021144682530536384e-04, + 5.134773973657204369e-04, + 5.248389391102261260e-04, + 5.361990751043337836e-04, + 5.475577869686079581e-04, + 5.589150563271958350e-04, + 5.702708648074859311e-04, + 5.816251940397481387e-04, + 5.929780256580606101e-04, + 6.043293412991909697e-04, + 6.156791226041492164e-04, + 6.270273512164454112e-04, + 6.383740087835112825e-04, + 6.497190769562182985e-04, + 6.610625373885399385e-04, + 6.724043717384540738e-04, + 6.837445616668400093e-04, + 6.950830888390279166e-04, + 7.064199349230522928e-04, + 7.177550815912023697e-04, + 7.290885105189161188e-04, + 7.404202033856904395e-04, + 7.517501418747287931e-04, + 7.630783076726055337e-04, + 7.744046824700326565e-04, + 7.857292479614069259e-04, + 7.970519858450685665e-04, + 8.083728778228454646e-04, + 8.196919056008318419e-04, + 8.310090508890349142e-04, + 8.423242954010360783e-04, + 8.536376208547685014e-04, + 8.649490089720412653e-04, + 8.762584414788352448e-04, + 8.875659001049376233e-04, + 8.988713665841015958e-04, + 9.101748226549667481e-04, + 9.214762500594396921e-04, + 9.327756305442394882e-04, + 9.440729458597973967e-04, + 9.553681777611600177e-04, + 9.666613080076482019e-04, + 9.779523183625039254e-04, + 9.892411905936767703e-04, + 1.000527906473348827e-03, + 1.011812447778219623e-03, + 1.023094796289024085e-03, + 1.034374933791329648e-03, + 1.045652842075174560e-03, + 1.056928502934723546e-03, + 1.068201898169062521e-03, + 1.079473009581706803e-03, + 1.090741818980902516e-03, + 1.102008308179129592e-03, + 1.113272458993908422e-03, + 1.124534253247438161e-03, + 1.135793672766244582e-03, + 1.147050699382106201e-03, + 1.158305314930937980e-03, + 1.169557501254339356e-03, + 1.180807240197853008e-03, + 1.192054513612508977e-03, + 1.203299303353717702e-03, + 1.214541591282194185e-03, + 1.225781359263579178e-03, + 1.237018589168007669e-03, + 1.248253262871482560e-03, + 1.259485362254160988e-03, + 1.270714869201898869e-03, + 1.281941765605129624e-03, + 1.293166033359796152e-03, + 1.304387654366977655e-03, + 1.315606610532566540e-03, + 1.326822883768031050e-03, + 1.338036455990081761e-03, + 1.349247309120315966e-03, + 1.360455425086127537e-03, + 1.371660785819604289e-03, + 1.382863373259078611e-03, + 1.394063169347369751e-03, + 1.405260156033342686e-03, + 1.416454315270806574e-03, + 1.427645629019403577e-03, + 1.438834079244286860e-03, + 1.450019647915628141e-03, + 1.461202317010035830e-03, + 1.472382068508821607e-03, + 1.483558884399546057e-03, + 1.494732746674903683e-03, + 1.505903637333645120e-03, + 1.517071538380213936e-03, + 1.528236431824411823e-03, + 1.539398299682179661e-03, + 1.550557123975116565e-03, + 1.561712886730759172e-03, + 1.572865569982120426e-03, + 1.584015155768466517e-03, + 1.595161626134960174e-03, + 1.606304963132322398e-03, + 1.617445148817741457e-03, + 1.628582165253765045e-03, + 1.639715994509831614e-03, + 1.650846618660687434e-03, + 1.661974019787148572e-03, + 1.673098179976885858e-03, + 1.684219081322830235e-03, + 1.695336705924703003e-03, + 1.706451035887920778e-03, + 1.717562053324482151e-03, + 1.728669740352646545e-03, + 1.739774079096571878e-03, + 1.750875051687098005e-03, + 1.761972640261275959e-03, + 1.773066826962651143e-03, + 1.784157593940771972e-03, + 1.795244923351994133e-03, + 1.806328797359126916e-03, + 1.817409198131071744e-03, + 1.828486107843616459e-03, + 1.839559508678971283e-03, + 1.850629382826013631e-03, + 1.861695712479860933e-03, + 1.872758479842616354e-03, + 1.883817667123030516e-03, + 1.894873256536165401e-03, + 1.905925230304289248e-03, + 1.916973570655778475e-03, + 1.928018259826646619e-03, + 1.939059280058827179e-03, + 1.950096613601702122e-03, + 1.961130242711004671e-03, + 1.972160149649717243e-03, + 1.983186316687732525e-03, + 1.994208726101500458e-03, + 2.005227360174814937e-03, + 2.016242201198447347e-03, + 2.027253231469839951e-03, + 2.038260433293830141e-03, + 2.049263788982235400e-03, + 2.060263280854083157e-03, + 2.071258891235171033e-03, + 2.082250602458826649e-03, + 2.093238396865571959e-03, + 2.104222256802776737e-03, + 2.115202164625553695e-03, + 2.126178102695670379e-03, + 2.137150053383063582e-03, + 2.148117999064138011e-03, + 2.159081922123278537e-03, + 2.170041804951758184e-03, + 2.180997629948652327e-03, + 2.191949379520457489e-03, + 2.202897036080799474e-03, + 2.213840582051162815e-03, + 2.224779999860428039e-03, + 2.235715271945179581e-03, + 2.246646380749204881e-03, + 2.257573308724272840e-03, + 2.268496038329799892e-03, + 2.279414552032505651e-03, + 2.290328832307169261e-03, + 2.301238861636180529e-03, + 2.312144622509810111e-03, + 2.323046097425725959e-03, + 2.333943268889800398e-03, + 2.344836119415715913e-03, + 2.355724631524677183e-03, + 2.366608787746271505e-03, + 2.377488570617496914e-03, + 2.388363962683697633e-03, + 2.399234946498179401e-03, + 2.410101504621768847e-03, + 2.420963619624187831e-03, + 2.431821274082364252e-03, + 2.442674450581907436e-03, + 2.453523131716092882e-03, + 2.464367300086677155e-03, + 2.475206938303615555e-03, + 2.486042028984667904e-03, + 2.496872554756222971e-03, + 2.507698498252777623e-03, + 2.518519842117251245e-03, + 2.529336569000515192e-03, + 2.540148661562122677e-03, + 2.550956102470026011e-03, + 2.561758874400194529e-03, + 2.572556960037492360e-03, + 2.583350342074658412e-03, + 2.594139003213736649e-03, + 2.604922926164438945e-03, + 2.615702093645491666e-03, + 2.626476488384190712e-03, + 2.637246093116057608e-03, + 2.648010890585699925e-03, + 2.658770863545797340e-03, + 2.669525994758511090e-03, + 2.680276266993881964e-03, + 2.691021663031277055e-03, + 2.701762165658329849e-03, + 2.712497757671824931e-03, + 2.723228421877354512e-03, + 2.733954141088993164e-03, + 2.744674898130030315e-03, + 2.755390675832651050e-03, + 2.766101457037609124e-03, + 2.776807224595080441e-03, + 2.787507961363612681e-03, + 2.798203650211603718e-03, + 2.808894274015631947e-03, + 2.819579815661820647e-03, + 2.830260258045372204e-03, + 2.840935584070245889e-03, + 2.851605776650011775e-03, + 2.862270818706819445e-03, + 2.872930693172831302e-03, + 2.883585382988623595e-03, + 2.894234871104585036e-03, + 2.904879140479928006e-03, + 2.915518174083503011e-03, + 2.926151954893506813e-03, + 2.936780465897141992e-03, + 2.947403690091320808e-03, + 2.958021610482285731e-03, + 2.968634210085808068e-03, + 2.979241471926795046e-03, + 2.989843379039969391e-03, + 3.000439914469606520e-03, + 3.011031061269144223e-03, + 3.021616802501968495e-03, + 3.032197121240953839e-03, + 3.042772000568697444e-03, + 3.053341423577228628e-03, + 3.063905373368145009e-03, + 3.074463833053456014e-03, + 3.085016785754072805e-03, + 3.095564214601272384e-03, + 3.106106102735642013e-03, + 3.116642433307948313e-03, + 3.127173189478789014e-03, + 3.137698354418286782e-03, + 3.148217911306803486e-03, + 3.158731843334528205e-03, + 3.169240133701697534e-03, + 3.179742765618185762e-03, + 3.190239722304217835e-03, + 3.200730986990050608e-03, + 3.211216542915648446e-03, + 3.221696373331416584e-03, + 3.232170461497742286e-03, + 3.242638790685278480e-03, + 3.253101344174491854e-03, + 3.263558105256378870e-03, + 3.274009057232167823e-03, + 3.284454183412964957e-03, + 3.294893467120635702e-03, + 3.305326891686759944e-03, + 3.315754440454019795e-03, + 3.326176096774673043e-03, + 3.336591844011934857e-03, + 3.347001665538935650e-03, + 3.357405544739598853e-03, + 3.367803465008298736e-03, + 3.378195409749436273e-03, + 3.388581362378741049e-03, + 3.398961306321645823e-03, + 3.409335225014729388e-03, + 3.419703101904718236e-03, + 3.430064920449271519e-03, + 3.440420664116711734e-03, + 3.450770316385679513e-03, + 3.461113860745827081e-03, + 3.471451280697583196e-03, + 3.481782559751736388e-03, + 3.492107681430308384e-03, + 3.502426629265560989e-03, + 3.512739386801376051e-03, + 3.523045937591688138e-03, + 3.533346265201889238e-03, + 3.543640353207796155e-03, + 3.553928185196516577e-03, + 3.564209744766122512e-03, + 3.574485015525178007e-03, + 3.584753981094093538e-03, + 3.595016625103486692e-03, + 3.605272931195616787e-03, + 3.615522883023383500e-03, + 3.625766464251120071e-03, + 3.636003658554309674e-03, + 3.646234449619257991e-03, + 3.656458821143806180e-03, + 3.666676756836876380e-03, + 3.676888240418781789e-03, + 3.687093255620743550e-03, + 3.697291786185603717e-03, + 3.707483815867556806e-03, + 3.717669328431771197e-03, + 3.727848307655258226e-03, + 3.738020737325851300e-03, + 3.748186601243609726e-03, + 3.758345883219350696e-03, + 3.768498567075379176e-03, + 3.778644636646151436e-03, + 3.788784075776896378e-03, + 3.798916868324929592e-03, + 3.809042998158708362e-03, + 3.819162449158623567e-03, + 3.829275205216701311e-03, + 3.839381250236267688e-03, + 3.849480568132691675e-03, + 3.859573142832904615e-03, + 3.869658958275707696e-03, + 3.879737998411309646e-03, + 3.889810247202025398e-03, + 3.899875688622008937e-03, + 3.909934306656867760e-03, + 3.919986085304446970e-03, + 3.930031008574335315e-03, + 3.940069060488150983e-03, + 3.950100225079092309e-03, + 3.960124486392692378e-03, + 3.970141828486439990e-03, + 3.980152235429491696e-03, + 3.990155691303516605e-03, + 4.000152180201650351e-03, + 4.010141686229928837e-03, + 4.020124193505690557e-03, + 4.030099686158991265e-03, + 4.040068148331586555e-03, + 4.050029564177745449e-03, + 4.059983917863979781e-03, + 4.069931193568672965e-03, + 4.079871375482822457e-03, + 4.089804447809691074e-03, + 4.099730394764550256e-03, + 4.109649200575327121e-03, + 4.119560849482188994e-03, + 4.129465325737820963e-03, + 4.139362613606975723e-03, + 4.149252697367170062e-03, + 4.159135561308392563e-03, + 4.169011189732791355e-03, + 4.178879566955453866e-03, + 4.188740677303456200e-03, + 4.198594505117222292e-03, + 4.208441034748961786e-03, + 4.218280250564084705e-03, + 4.228112136940154545e-03, + 4.237936678267766044e-03, + 4.247753858950162678e-03, + 4.257563663402985990e-03, + 4.267366076054946930e-03, + 4.277161081347388705e-03, + 4.286948663734559996e-03, + 4.296728807683201229e-03, + 4.306501497673179482e-03, + 4.316266718197264707e-03, + 4.326024453760732476e-03, + 4.335774688882125527e-03, + 4.345517408092797532e-03, + 4.355252595937181975e-03, + 4.364980236972341131e-03, + 4.374700315768679029e-03, + 4.384412816909640485e-03, + 4.394117724991379766e-03, + 4.403815024623566367e-03, + 4.413504700428438725e-03, + 4.423186737042113931e-03, + 4.432861119113223371e-03, + 4.442527831303551104e-03, + 4.452186858288737295e-03, + 4.461838184756899105e-03, + 4.471481795409928267e-03, + 4.481117674962560408e-03, + 4.490745808143170419e-03, + 4.500366179693414230e-03, + 4.509978774368009376e-03, + 4.519583576935340408e-03, + 4.529180572177072053e-03, + 4.538769744888413761e-03, + 4.548351079877686019e-03, + 4.557924561966994297e-03, + 4.567490175991931536e-03, + 4.577047906801266774e-03, + 4.586597739257772602e-03, + 4.596139658237213821e-03, + 4.605673648629702265e-03, + 4.615199695338191924e-03, + 4.624717783279727948e-03, + 4.634227897384990413e-03, + 4.643730022598021971e-03, + 4.653224143876989391e-03, + 4.662710246193267627e-03, + 4.672188314532713972e-03, + 4.681658333894224769e-03, + 4.691120289291029512e-03, + 4.700574165749740220e-03, + 4.710019948311147675e-03, + 4.719457622029910905e-03, + 4.728887171974261415e-03, + 4.738308583226638095e-03, + 4.747721840883466909e-03, + 4.757126930054794006e-03, + 4.766523835865083686e-03, + 4.775912543452275581e-03, + 4.785293037969072689e-03, + 4.794665304581520633e-03, + 4.804029328470149976e-03, + 4.813385094829597186e-03, + 4.822732588868342690e-03, + 4.832071795809377013e-03, + 4.841402700889379379e-03, + 4.850725289359958912e-03, + 4.860039546486211344e-03, + 4.869345457547994034e-03, + 4.878643007839006569e-03, + 4.887932182667563581e-03, + 4.897212967356289436e-03, + 4.906485347241838942e-03, + 4.915749307675536597e-03, + 4.925004834022955053e-03, + 4.934251911664236032e-03, + 4.943490525993583795e-03, + 4.952720662419987652e-03, + 4.961942306366924453e-03, + 4.971155443272047211e-03, + 4.980360058587820875e-03, + 4.989556137781187527e-03, + 4.998743666333723377e-03, + 5.007922629741310902e-03, + 5.017093013514742524e-03, + 5.026254803179442190e-03, + 5.035407984275200831e-03, + 5.044552542356876314e-03, + 5.053688462993636242e-03, + 5.062815731769674393e-03, + 5.071934334283933164e-03, + 5.081044256149838158e-03, + 5.090145482995870642e-03, + 5.099238000465285657e-03, + 5.108321794216237784e-03, + 5.117396849921434197e-03, + 5.126463153268818150e-03, + 5.135520689961174320e-03, + 5.144569445715978760e-03, + 5.153609406265907168e-03, + 5.162640557358549528e-03, + 5.171662884756558429e-03, + 5.180676374237327270e-03, + 5.189681011593599153e-03, + 5.198676782633154629e-03, + 5.207663673178574044e-03, + 5.216641669067947039e-03, + 5.225610756153999115e-03, + 5.234570920305285126e-03, + 5.243522147404877827e-03, + 5.252464423351498914e-03, + 5.261397734058720181e-03, + 5.270322065455637466e-03, + 5.279237403486625180e-03, + 5.288143734110940797e-03, + 5.297041043303841144e-03, + 5.305929317055222381e-03, + 5.314808541370833438e-03, + 5.323678702271378294e-03, + 5.332539785793264514e-03, + 5.341391777988341305e-03, + 5.350234664923564712e-03, + 5.359068432681678498e-03, + 5.367893067360880212e-03, + 5.376708555074613018e-03, + 5.385514881952197137e-03, + 5.394312034138047489e-03, + 5.403099997792813400e-03, + 5.411878759092067157e-03, + 5.420648304227462799e-03, + 5.429408619405927741e-03, + 5.438159690850315024e-03, + 5.446901504799160458e-03, + 5.455634047506317461e-03, + 5.464357305242049066e-03, + 5.473071264291654893e-03, + 5.481775910956713203e-03, + 5.490471231554171043e-03, + 5.499157212417116192e-03, + 5.507833839894433689e-03, + 5.516501100350575983e-03, + 5.525158980166146663e-03, + 5.533807465737563061e-03, + 5.542446543477246197e-03, + 5.551076199813269503e-03, + 5.559696421189940820e-03, + 5.568307194067578618e-03, + 5.576908504922136432e-03, + 5.585500340246083231e-03, + 5.594082686547343503e-03, + 5.602655530350642531e-03, + 5.611218858196200150e-03, + 5.619772656640321419e-03, + 5.628316912256042803e-03, + 5.636851611631851083e-03, + 5.645376741372893324e-03, + 5.653892288100118187e-03, + 5.662398238450993236e-03, + 5.670894579079165804e-03, + 5.679381296654292983e-03, + 5.687858377862594142e-03, + 5.696325809406440656e-03, + 5.704783578004679438e-03, + 5.713231670392140277e-03, + 5.721670073320344468e-03, + 5.730098773557172620e-03, + 5.738517757886592296e-03, + 5.746927013109314614e-03, + 5.755326526042381374e-03, + 5.763716283519380174e-03, + 5.772096272390093985e-03, + 5.780466479521085763e-03, + 5.788826891795468589e-03, + 5.797177496112582151e-03, + 5.805518279388716986e-03, + 5.813849228556271405e-03, + 5.822170330564901616e-03, + 5.830481572380257979e-03, + 5.838782940985043184e-03, + 5.847074423378324434e-03, + 5.855356006576067744e-03, + 5.863627677610974004e-03, + 5.871889423532195354e-03, + 5.880141231405899838e-03, + 5.888383088315005988e-03, + 5.896614981358955579e-03, + 5.904836897654285217e-03, + 5.913048824334214346e-03, + 5.921250748548967900e-03, + 5.929442657465307936e-03, + 5.937624538267196293e-03, + 5.945796378155445913e-03, + 5.953958164347589004e-03, + 5.962109884078400923e-03, + 5.970251524599227110e-03, + 5.978383073179003096e-03, + 5.986504517103039338e-03, + 5.994615843674110621e-03, + 6.002717040211690176e-03, + 6.010808094052582859e-03, + 6.018888992550680550e-03, + 6.026959723076706285e-03, + 6.035020273018778907e-03, + 6.043070629782053109e-03, + 6.051110780788972708e-03, + 6.059140713478862982e-03, + 6.067160415308513535e-03, + 6.075169873751961463e-03, + 6.083169076300223334e-03, + 6.091158010461789583e-03, + 6.099136663762418954e-03, + 6.107105023745192270e-03, + 6.115063077970264369e-03, + 6.123010814015408809e-03, + 6.130948219475742048e-03, + 6.138875281963493587e-03, + 6.146791989108633079e-03, + 6.154698328558127866e-03, + 6.162594287976999423e-03, + 6.170479855047137675e-03, + 6.178355017467961931e-03, + 6.186219762956892722e-03, + 6.194074079248251992e-03, + 6.201917954094316072e-03, + 6.209751375264583630e-03, + 6.217574330546355062e-03, + 6.225386807744548619e-03, + 6.233188794681376009e-03, + 6.240980279197015472e-03, + 6.248761249149112178e-03, + 6.256531692413130376e-03, + 6.264291596881909306e-03, + 6.272040950466277291e-03, + 6.279779741094778517e-03, + 6.287507956713417161e-03, + 6.295225585286312250e-03, + 6.302932614794929181e-03, + 6.310629033239131824e-03, + 6.318314828635970826e-03, + 6.325989989020689742e-03, + 6.333654502446397182e-03, + 6.341308356983766693e-03, + 6.348951540721757547e-03, + 6.356584041766760382e-03, + 6.364205848243725643e-03, + 6.371816948294895498e-03, + 6.379417330080949626e-03, + 6.387006981780193361e-03, + 6.394585891589169187e-03, + 6.402154047722438159e-03, + 6.409711438412334442e-03, + 6.417258051909522157e-03, + 6.424793876482712621e-03, + 6.432318900418470924e-03, + 6.439833112021786654e-03, + 6.447336499615369601e-03, + 6.454829051540630740e-03, + 6.462310756156587621e-03, + 6.469781601840749949e-03, + 6.477241576988854166e-03, + 6.484690670014554674e-03, + 6.492128869350092570e-03, + 6.499556163445562723e-03, + 6.506972540769868744e-03, + 6.514377989809654393e-03, + 6.521772499070295839e-03, + 6.529156057075078540e-03, + 6.536528652365989137e-03, + 6.543890273503240144e-03, + 6.551240909065293369e-03, + 6.558580547649212056e-03, + 6.565909177870328690e-03, + 6.573226788362564188e-03, + 6.580533367777970793e-03, + 6.587828904787376531e-03, + 6.595113388080033057e-03, + 6.602386806363483816e-03, + 6.609649148363999464e-03, + 6.616900402826325460e-03, + 6.624140558513810437e-03, + 6.631369604208185893e-03, + 6.638587528709938290e-03, + 6.645794320838191958e-03, + 6.652989969430442817e-03, + 6.660174463343142975e-03, + 6.667347791451093582e-03, + 6.674509942647976514e-03, + 6.681660905846196520e-03, + 6.688800669976576775e-03, + 6.695929223988937411e-03, + 6.703046556851763316e-03, + 6.710152657552325567e-03, + 6.717247515096508824e-03, + 6.724331118509147866e-03, + 6.731403456833921772e-03, + 6.738464519133095451e-03, + 6.745514294488001890e-03, + 6.752552771998753325e-03, + 6.759579940784421655e-03, + 6.766595789982732256e-03, + 6.773600308750533233e-03, + 6.780593486263638420e-03, + 6.787575311716505591e-03, + 6.794545774322939893e-03, + 6.801504863315256839e-03, + 6.808452567945365644e-03, + 6.815388877483600887e-03, + 6.822313781219704366e-03, + 6.829227268462191060e-03, + 6.836129328538808822e-03, + 6.843019950796433437e-03, + 6.849899124600677437e-03, + 6.856766839336823384e-03, + 6.863623084408727523e-03, + 6.870467849239752199e-03, + 6.877301123272148292e-03, + 6.884122895967523595e-03, + 6.890933156806697962e-03, + 6.897731895289459583e-03, + 6.904519100935056775e-03, + 6.911294763281919558e-03, + 6.918058871887598077e-03, + 6.924811416329092195e-03, + 6.931552386202416947e-03, + 6.938281771123358012e-03, + 6.944999560726482050e-03, + 6.951705744666082133e-03, + 6.958400312615505533e-03, + 6.965083254267679345e-03, + 6.971754559334878039e-03, + 6.978414217548529162e-03, + 6.985062218659940196e-03, + 6.991698552439348791e-03, + 6.998323208676810944e-03, + 7.004936177181522727e-03, + 7.011537447782380597e-03, + 7.018127010327768894e-03, + 7.024704854685382034e-03, + 7.031270970742611350e-03, + 7.037825348406320444e-03, + 7.044367977603014329e-03, + 7.050898848278551456e-03, + 7.057417950398529698e-03, + 7.063925273948212617e-03, + 7.070420808932220691e-03, + 7.076904545375108969e-03, + 7.083376473320683597e-03, + 7.089836582832951574e-03, + 7.096284863995128492e-03, + 7.102721306910139004e-03, + 7.109145901701029689e-03, + 7.115558638510063524e-03, + 7.121959507499575105e-03, + 7.128348498851419003e-03, + 7.134725602767367884e-03, + 7.141090809468984141e-03, + 7.147444109197425600e-03, + 7.153785492213861862e-03, + 7.160114948799223625e-03, + 7.166432469254326726e-03, + 7.172738043899631877e-03, + 7.179031663075700030e-03, + 7.185313317142971203e-03, + 7.191582996481545031e-03, + 7.197840691491643079e-03, + 7.204086392593383320e-03, + 7.210320090226832179e-03, + 7.216541774851875299e-03, + 7.222751436948491623e-03, + 7.228949067016721304e-03, + 7.235134655576333507e-03, + 7.241308193167432690e-03, + 7.247469670349756914e-03, + 7.253619077703627599e-03, + 7.259756405828891347e-03, + 7.265881645345829802e-03, + 7.271994786894509996e-03, + 7.278095821135341197e-03, + 7.284184738748817299e-03, + 7.290261530435365039e-03, + 7.296326186915749919e-03, + 7.302378698930821199e-03, + 7.308419057241682774e-03, + 7.314447252629376582e-03, + 7.320463275895388276e-03, + 7.326467117861411305e-03, + 7.332458769369137874e-03, + 7.338438221280713450e-03, + 7.344405464478529454e-03, + 7.350360489865039385e-03, + 7.356303288363262756e-03, + 7.362233850916163197e-03, + 7.368152168487481987e-03, + 7.374058232060824725e-03, + 7.379952032640427206e-03, + 7.385833561250672308e-03, + 7.391702808936437795e-03, + 7.397559766763030405e-03, + 7.403404425815898748e-03, + 7.409236777201132045e-03, + 7.415056812045159144e-03, + 7.420864521494884708e-03, + 7.426659896717473230e-03, + 7.432442928900749764e-03, + 7.438213609253012566e-03, + 7.443971929002818864e-03, + 7.449717879399424605e-03, + 7.455451451712558075e-03, + 7.461172637232521380e-03, + 7.466881427269926770e-03, + 7.472577813156153735e-03, + 7.478261786243177271e-03, + 7.483933337903299864e-03, + 7.489592459529659761e-03, + 7.495239142535753060e-03, + 7.500873378356068613e-03, + 7.506495158445358577e-03, + 7.512104474279007044e-03, + 7.517701317353447238e-03, + 7.523285679185344466e-03, + 7.528857551312303879e-03, + 7.534416925292415114e-03, + 7.539963792704659079e-03, + 7.545498145148724078e-03, + 7.551019974244824531e-03, + 7.556529271634112969e-03, + 7.562026028978464064e-03, + 7.567510237960532737e-03, + 7.572981890283589368e-03, + 7.578440977671856323e-03, + 7.583887491870434233e-03, + 7.589321424644965459e-03, + 7.594742767782186599e-03, + 7.600151513089444498e-03, + 7.605547652395256569e-03, + 7.610931177548644656e-03, + 7.616302080419751729e-03, + 7.621660352899569529e-03, + 7.627005986899870055e-03, + 7.632338974353502191e-03, + 7.637659307214028290e-03, + 7.642966977456283617e-03, + 7.648261977075724964e-03, + 7.653544298088969279e-03, + 7.658813932533452794e-03, + 7.664070872467718121e-03, + 7.669315109971348333e-03, + 7.674546637144764871e-03, + 7.679765446109499891e-03, + 7.684971529008245705e-03, + 7.690164878004457534e-03, + 7.695345485282947644e-03, + 7.700513343049278196e-03, + 7.705668443530490699e-03, + 7.710810778974342729e-03, + 7.715940341649881254e-03, + 7.721057123847309932e-03, + 7.726161117877750582e-03, + 7.731252316073727177e-03, + 7.736330710788623735e-03, + 7.741396294397342656e-03, + 7.746449059295597815e-03, + 7.751488997900559882e-03, + 7.756516102650369733e-03, + 7.761530366004529627e-03, + 7.766531780443778309e-03, + 7.771520338469907994e-03, + 7.776496032606100908e-03, + 7.781458855396751473e-03, + 7.786408799407577332e-03, + 7.791345857225382560e-03, + 7.796270021458445373e-03, + 7.801181284736303026e-03, + 7.806079639709660734e-03, + 7.810965079050682242e-03, + 7.815837595452845843e-03, + 7.820697181630965195e-03, + 7.825543830321083499e-03, + 7.830377534280759735e-03, + 7.835198286288895184e-03, + 7.840006079145629345e-03, + 7.844800905672705965e-03, + 7.849582758713018540e-03, + 7.854351631131236550e-03, + 7.859107515813102893e-03, + 7.863850405665891857e-03, + 7.868580293618417792e-03, + 7.873297172620858167e-03, + 7.878001035644975614e-03, + 7.882691875683788332e-03, + 7.887369685751986423e-03, + 7.892034458885777495e-03, + 7.896686188142645543e-03, + 7.901324866601831462e-03, + 7.905950487364006921e-03, + 7.910563043551432222e-03, + 7.915162528307777626e-03, + 7.919748934798419987e-03, + 7.924322256210272752e-03, + 7.928882485751714837e-03, + 7.933429616652901140e-03, + 7.937963642165342740e-03, + 7.942484555562451601e-03, + 7.946992350138990663e-03, + 7.951487019211540483e-03, + 7.955968556118134943e-03, + 7.960436954218629013e-03, + 7.964892206894466295e-03, + 7.969334307548642596e-03, + 7.973763249606127465e-03, + 7.978179026513201530e-03, + 7.982581631738150385e-03, + 7.986971058770751114e-03, + 7.991347301122600152e-03, + 7.995710352327059511e-03, + 8.000060205939046876e-03, + 8.004396855535398161e-03, + 8.008720294714683635e-03, + 8.013030517097095157e-03, + 8.017327516324798328e-03, + 8.021611286061431159e-03, + 8.025881819992843058e-03, + 8.030139111826328085e-03, + 8.034383155291162718e-03, + 8.038613944138343903e-03, + 8.042831472140745189e-03, + 8.047035733093130597e-03, + 8.051226720811908294e-03, + 8.055404429135659683e-03, + 8.059568851924513166e-03, + 8.063719983060668034e-03, + 8.067857816448040578e-03, + 8.071982346012600631e-03, + 8.076093565702149521e-03, + 8.080191469486288844e-03, + 8.084276051356706697e-03, + 8.088347305326919201e-03, + 8.092405225432407548e-03, + 8.096449805730538199e-03, + 8.100481040300656563e-03, + 8.104498923244156383e-03, + 8.108503448684186571e-03, + 8.112494610766103967e-03, + 8.116472403657004966e-03, + 8.120436821546292774e-03, + 8.124387858645032087e-03, + 8.128325509186528491e-03, + 8.132249767426028356e-03, + 8.136160627640763934e-03, + 8.140058084130060920e-03, + 8.143942131215211808e-03, + 8.147812763239670186e-03, + 8.151669974568868590e-03, + 8.155513759590260134e-03, + 8.159344112713469432e-03, + 8.163161028370164232e-03, + 8.166964501014156025e-03, + 8.170754525121169329e-03, + 8.174531095189225063e-03, + 8.178294205738446260e-03, + 8.182043851310910609e-03, + 8.185780026470971388e-03, + 8.189502725805113473e-03, + 8.193211943921946405e-03, + 8.196907675452141939e-03, + 8.200589915048642209e-03, + 8.204258657386572992e-03, + 8.207913897163075442e-03, + 8.211555629097679054e-03, + 8.215183847931873187e-03, + 8.218798548429646564e-03, + 8.222399725376864504e-03, + 8.225987373581862203e-03, + 8.229561487874981554e-03, + 8.233122063108973612e-03, + 8.236669094158753993e-03, + 8.240202575921383790e-03, + 8.243722503316333258e-03, + 8.247228871285223334e-03, + 8.250721674792025132e-03, + 8.254200908822825755e-03, + 8.257666568386137079e-03, + 8.261118648512725746e-03, + 8.264557144255554183e-03, + 8.267982050689987039e-03, + 8.271393362913695771e-03, + 8.274791076046545887e-03, + 8.278175185230862362e-03, + 8.281545685631145140e-03, + 8.284902572434450774e-03, + 8.288245840849925786e-03, + 8.291575486109247287e-03, + 8.294891503466274296e-03, + 8.298193888197380810e-03, + 8.301482635601258042e-03, + 8.304757740998883198e-03, + 8.308019199733729376e-03, + 8.311267007171592100e-03, + 8.314501158700707273e-03, + 8.317721649731601996e-03, + 8.320928475697313143e-03, + 8.324121632053298886e-03, + 8.327301114277287780e-03, + 8.330466917869587540e-03, + 8.333619038352864730e-03, + 8.336757471272250586e-03, + 8.339882212195250805e-03, + 8.342993256711882591e-03, + 8.346090600434638226e-03, + 8.349174238998379252e-03, + 8.352244168060527288e-03, + 8.355300383300824640e-03, + 8.358342880421759311e-03, + 8.361371655148030699e-03, + 8.364386703226894815e-03, + 8.367388020428270096e-03, + 8.370375602544347093e-03, + 8.373349445389992665e-03, + 8.376309544802448132e-03, + 8.379255896641575607e-03, + 8.382188496789746979e-03, + 8.385107341151776250e-03, + 8.388012425655120771e-03, + 8.390903746249721643e-03, + 8.393781298908119942e-03, + 8.396645079625269376e-03, + 8.399495084418843321e-03, + 8.402331309329023196e-03, + 8.405153750418463757e-03, + 8.407962403772537702e-03, + 8.410757265499040763e-03, + 8.413538331728578554e-03, + 8.416305598614072167e-03, + 8.419059062331224821e-03, + 8.421798719078289405e-03, + 8.424524565076070212e-03, + 8.427236596568058249e-03, + 8.429934809820250827e-03, + 8.432619201121451663e-03, + 8.435289766782854554e-03, + 8.437946503138487458e-03, + 8.440589406544848211e-03, + 8.443218473381149114e-03, + 8.445833700049304796e-03, + 8.448435082973748331e-03, + 8.451022618601608180e-03, + 8.453596303402793194e-03, + 8.456156133869647401e-03, + 8.458702106517388894e-03, + 8.461234217883719516e-03, + 8.463752464529230787e-03, + 8.466256843037011856e-03, + 8.468747350012902769e-03, + 8.471223982085461512e-03, + 8.473686735905877274e-03, + 8.476135608148098813e-03, + 8.478570595508681806e-03, + 8.480991694707024769e-03, + 8.483398902485108847e-03, + 8.485792215607714656e-03, + 8.488171630862264422e-03, + 8.490537145058972904e-03, + 8.492888755030767595e-03, + 8.495226457633243619e-03, + 8.497550249744818124e-03, + 8.499860128266591500e-03, + 8.502156090122435853e-03, + 8.504438132258925614e-03, + 8.506706251645417341e-03, + 8.508960445274080936e-03, + 8.511200710159684546e-03, + 8.513427043339915484e-03, + 8.515639441875144308e-03, + 8.517837902848542780e-03, + 8.520022423366016215e-03, + 8.522193000556293682e-03, + 8.524349631570858621e-03, + 8.526492313583960980e-03, + 8.528621043792710896e-03, + 8.530735819416853175e-03, + 8.532836637699147200e-03, + 8.534923495904967947e-03, + 8.536996391322526287e-03, + 8.539055321262867260e-03, + 8.541100283059871803e-03, + 8.543131274070190836e-03, + 8.545148291673266075e-03, + 8.547151333271362991e-03, + 8.549140396289634999e-03, + 8.551115478175988147e-03, + 8.553076576401150502e-03, + 8.555023688458720729e-03, + 8.556956811865129922e-03, + 8.558875944159575685e-03, + 8.560781082904174791e-03, + 8.562672225683824398e-03, + 8.564549370106274914e-03, + 8.566412513802194179e-03, + 8.568261654424955825e-03, + 8.570096789650939392e-03, + 8.571917917179257967e-03, + 8.573725034731981970e-03, + 8.575518140053932717e-03, + 8.577297230912859366e-03, + 8.579062305099405955e-03, + 8.580813360426965686e-03, + 8.582550394731955010e-03, + 8.584273405873525664e-03, + 8.585982391733804064e-03, + 8.587677350217703953e-03, + 8.589358279253056505e-03, + 8.591025176790648490e-03, + 8.592678040803993292e-03, + 8.594316869289617133e-03, + 8.595941660266890813e-03, + 8.597552411778074805e-03, + 8.599149121888296707e-03, + 8.600731788685606755e-03, + 8.602300410280984758e-03, + 8.603854984808196119e-03, + 8.605395510424052041e-03, + 8.606921985308114628e-03, + 8.608434407662979640e-03, + 8.609932775714082206e-03, + 8.611417087709728052e-03, + 8.612887341921242682e-03, + 8.614343536642737192e-03, + 8.615785670191344198e-03, + 8.617213740906999250e-03, + 8.618627747152616050e-03, + 8.620027687314063894e-03, + 8.621413559800049711e-03, + 8.622785363042230825e-03, + 8.624143095495201070e-03, + 8.625486755636483857e-03, + 8.626816341966457580e-03, + 8.628131853008496124e-03, + 8.629433287308887340e-03, + 8.630720643436817427e-03, + 8.631993919984436853e-03, + 8.633253115566766681e-03, + 8.634498228821878979e-03, + 8.635729258410614062e-03, + 8.636946203016880597e-03, + 8.638149061347459579e-03, + 8.639337832132056375e-03, + 8.640512514123373580e-03, + 8.641673106096987855e-03, + 8.642819606851421047e-03, + 8.643952015208169679e-03, + 8.645070330011659851e-03, + 8.646174550129193462e-03, + 8.647264674451128619e-03, + 8.648340701890687085e-03, + 8.649402631384044485e-03, + 8.650450461890292139e-03, + 8.651484192391546355e-03, + 8.652503821892766275e-03, + 8.653509349421942970e-03, + 8.654500774029969326e-03, + 8.655478094790693827e-03, + 8.656441310800873715e-03, + 8.657390421180279072e-03, + 8.658325425071580067e-03, + 8.659246321640416341e-03, + 8.660153110075362315e-03, + 8.661045789587906371e-03, + 8.661924359412574020e-03, + 8.662788818806744021e-03, + 8.663639167050776746e-03, + 8.664475403448029800e-03, + 8.665297527324700155e-03, + 8.666105538030044464e-03, + 8.666899434936202115e-03, + 8.667679217438275033e-03, + 8.668444884954306859e-03, + 8.669196436925321117e-03, + 8.669933872815213660e-03, + 8.670657192110926142e-03, + 8.671366394322277751e-03, + 8.672061478982029392e-03, + 8.672742445645940934e-03, + 8.673409293892665392e-03, + 8.674062023323826989e-03, + 8.674700633564005545e-03, + 8.675325124260656676e-03, + 8.675935495084295679e-03, + 8.676531745728284159e-03, + 8.677113875908987889e-03, + 8.677681885365608541e-03, + 8.678235773860435223e-03, + 8.678775541178606820e-03, + 8.679301187128207404e-03, + 8.679812711540288786e-03, + 8.680310114268818475e-03, + 8.680793395190710901e-03, + 8.681262554205787518e-03, + 8.681717591236879153e-03, + 8.682158506229656000e-03, + 8.682585299152780281e-03, + 8.682997969997854198e-03, + 8.683396518779357490e-03, + 8.683780945534767121e-03, + 8.684151250324390753e-03, + 8.684507433231599197e-03, + 8.684849494362567937e-03, + 8.685177433846447137e-03, + 8.685491251835313065e-03, + 8.685790948504181971e-03, + 8.686076524050940703e-03, + 8.686347978696407415e-03, + 8.686605312684387084e-03, + 8.686848526281508442e-03, + 8.687077619777350615e-03, + 8.687292593484410158e-03, + 8.687493447738128816e-03, + 8.687680182896782496e-03, + 8.687852799341621787e-03, + 8.688011297476740113e-03, + 8.688155677729215987e-03, + 8.688285940548963818e-03, + 8.688402086408843206e-03, + 8.688504115804558323e-03, + 8.688592029254779345e-03, + 8.688665827301034900e-03, + 8.688725510507722474e-03, + 8.688771079462203825e-03, + 8.688802534774664466e-03, + 8.688819877078169177e-03, + 8.688823107028719253e-03, + 8.688812225305181380e-03, + 8.688787232609277225e-03, + 8.688748129665658029e-03, + 8.688694917221795322e-03, + 8.688627596048032961e-03, + 8.688546166937689483e-03, + 8.688450630706806566e-03, + 8.688340988194393627e-03, + 8.688217240262259555e-03, + 8.688079387795139344e-03, + 8.687927431700574396e-03, + 8.687761372909028751e-03, + 8.687581212373703468e-03, + 8.687386951070749999e-03, + 8.687178589999153960e-03, + 8.686956130180728194e-03, + 8.686719572660119709e-03, + 8.686468918504818351e-03, + 8.686204168805222725e-03, + 8.685925324674432027e-03, + 8.685632387248485436e-03, + 8.685325357686218134e-03, + 8.685004237169294261e-03, + 8.684669026902163552e-03, + 8.684319728112144601e-03, + 8.683956342049383229e-03, + 8.683578869986750132e-03, + 8.683187313220024767e-03, + 8.682781673067766978e-03, + 8.682361950871287509e-03, + 8.681928147994776371e-03, + 8.681480265825150186e-03, + 8.681018305772175356e-03, + 8.680542269268388261e-03, + 8.680052157769077917e-03, + 8.679547972752383114e-03, + 8.679029715719141502e-03, + 8.678497388193082140e-03, + 8.677950991720570495e-03, + 8.677390527870840892e-03, + 8.676815998235850799e-03, + 8.676227404430374504e-03, + 8.675624748091815761e-03, + 8.675008030880462795e-03, + 8.674377254479316568e-03, + 8.673732420594106388e-03, + 8.673073530953319399e-03, + 8.672400587308152012e-03, + 8.671713591432591434e-03, + 8.671012545123309850e-03, + 8.670297450199737285e-03, + 8.669568308503978332e-03, + 8.668825121900907565e-03, + 8.668067892278126171e-03, + 8.667296621545857865e-03, + 8.666511311637124099e-03, + 8.665711964507636506e-03, + 8.664898582135746596e-03, + 8.664071166522534229e-03, + 8.663229719691786790e-03, + 8.662374243689976647e-03, + 8.661504740586219511e-03, + 8.660621212472305666e-03, + 8.659723661462776292e-03, + 8.658812089694722242e-03, + 8.657886499327995672e-03, + 8.656946892545057393e-03, + 8.655993271551025436e-03, + 8.655025638573678529e-03, + 8.654043995863428332e-03, + 8.653048345693335058e-03, + 8.652038690359093592e-03, + 8.651015032179026551e-03, + 8.649977373494037447e-03, + 8.648925716667725180e-03, + 8.647860064086259138e-03, + 8.646780418158441645e-03, + 8.645686781315657654e-03, + 8.644579156011864343e-03, + 8.643457544723695193e-03, + 8.642321949950321214e-03, + 8.641172374213470023e-03, + 8.640008820057521258e-03, + 8.638831290049338307e-03, + 8.637639786778464335e-03, + 8.636434312856915846e-03, + 8.635214870919278099e-03, + 8.633981463622725921e-03, + 8.632734093646952586e-03, + 8.631472763694237466e-03, + 8.630197476489322866e-03, + 8.628908234779552808e-03, + 8.627605041334720365e-03, + 8.626287898947220326e-03, + 8.624956810431906942e-03, + 8.623611778626173729e-03, + 8.622252806389915300e-03, + 8.620879896605464915e-03, + 8.619493052177762751e-03, + 8.618092276034088756e-03, + 8.616677571124329790e-03, + 8.615248940420762794e-03, + 8.613806386918191824e-03, + 8.612349913633857851e-03, + 8.610879523607412739e-03, + 8.609395219901068430e-03, + 8.607897005599347146e-03, + 8.606384883809324246e-03, + 8.604858857660423535e-03, + 8.603318930304550832e-03, + 8.601765104916000299e-03, + 8.600197384691470048e-03, + 8.598615772850117661e-03, + 8.597020272633431812e-03, + 8.595410887305367578e-03, + 8.593787620152181644e-03, + 8.592150474482571076e-03, + 8.590499453627626486e-03, + 8.588834560940752233e-03, + 8.587155799797739283e-03, + 8.585463173596725311e-03, + 8.583756685758201638e-03, + 8.582036339725018434e-03, + 8.580302138962318803e-03, + 8.578554086957656741e-03, + 8.576792187220813254e-03, + 8.575016443283916059e-03, + 8.573226858701411823e-03, + 8.571423437050083513e-03, + 8.569606181928915087e-03, + 8.567775096959258027e-03, + 8.565930185784744605e-03, + 8.564071452071194204e-03, + 8.562198899506864858e-03, + 8.560312531802010891e-03, + 8.558412352689429362e-03, + 8.556498365923927499e-03, + 8.554570575282714751e-03, + 8.552628984565132167e-03, + 8.550673597592766892e-03, + 8.548704418209488592e-03, + 8.546721450281255170e-03, + 8.544724697696336538e-03, + 8.542714164365083906e-03, + 8.540689854220191723e-03, + 8.538651771216402772e-03, + 8.536599919330640010e-03, + 8.534534302562086366e-03, + 8.532454924931993923e-03, + 8.530361790483758505e-03, + 8.528254903283008156e-03, + 8.526134267417394969e-03, + 8.523999886996804984e-03, + 8.521851766153094518e-03, + 8.519689909040397205e-03, + 8.517514319834834299e-03, + 8.515325002734696822e-03, + 8.513121961960315454e-03, + 8.510905201754077887e-03, + 8.508674726380517292e-03, + 8.506430540126189155e-03, + 8.504172647299685153e-03, + 8.501901052231648770e-03, + 8.499615759274822130e-03, + 8.497316772803902019e-03, + 8.495004097215642230e-03, + 8.492677736928822343e-03, + 8.490337696384209556e-03, + 8.487983980044582974e-03, + 8.485616592394650340e-03, + 8.483235537941244062e-03, + 8.480840821213002020e-03, + 8.478432446760626046e-03, + 8.476010419156753545e-03, + 8.473574742995969647e-03, + 8.471125422894824550e-03, + 8.468662463491699946e-03, + 8.466185869446994638e-03, + 8.463695645443079438e-03, + 8.461191796184026545e-03, + 8.458674326396001600e-03, + 8.456143240826915000e-03, + 8.453598544246692520e-03, + 8.451040241447018569e-03, + 8.448468337241466300e-03, + 8.445882836465525359e-03, + 8.443283743976424949e-03, + 8.440671064653298625e-03, + 8.438044803397047253e-03, + 8.435404965130476052e-03, + 8.432751554798157551e-03, + 8.430084577366353527e-03, + 8.427404037823339397e-03, + 8.424709941178935846e-03, + 8.422002292464959849e-03, + 8.419281096734744160e-03, + 8.416546359063565783e-03, + 8.413798084548410050e-03, + 8.411036278307870012e-03, + 8.408260945482453480e-03, + 8.405472091234210061e-03, + 8.402669720747088511e-03, + 8.399853839226464891e-03, + 8.397024451899669922e-03, + 8.394181564015506733e-03, + 8.391325180844611681e-03, + 8.388455307679176798e-03, + 8.385571949833024383e-03, + 8.382675112641721493e-03, + 8.379764801462359636e-03, + 8.376841021673679666e-03, + 8.373903778676023216e-03, + 8.370953077891403818e-03, + 8.367988924763380271e-03, + 8.365011324756969902e-03, + 8.362020283358997247e-03, + 8.359015806077643024e-03, + 8.355997898442699134e-03, + 8.352966566005566931e-03, + 8.349921814339052520e-03, + 8.346863649037649519e-03, + 8.343792075717134868e-03, + 8.340707100015011186e-03, + 8.337608727590092167e-03, + 8.334496964122818305e-03, + 8.331371815315024437e-03, + 8.328233286889899847e-03, + 8.325081384592314393e-03, + 8.321916114188402172e-03, + 8.318737481465771424e-03, + 8.315545492233402183e-03, + 8.312340152321814543e-03, + 8.309121467582773757e-03, + 8.305889443889474116e-03, + 8.302644087136578852e-03, + 8.299385403239984207e-03, + 8.296113398136999856e-03, + 8.292828077786237873e-03, + 8.289529448167767128e-03, + 8.286217515282814916e-03, + 8.282892285153988995e-03, + 8.279553763825249837e-03, + 8.276201957361721540e-03, + 8.272836871850011015e-03, + 8.269458513397677166e-03, + 8.266066888133841509e-03, + 8.262662002208749287e-03, + 8.259243861793852740e-03, + 8.255812473081854466e-03, + 8.252367842286613756e-03, + 8.248909975643353015e-03, + 8.245438879408303889e-03, + 8.241954559858936241e-03, + 8.238457023293959888e-03, + 8.234946276033144191e-03, + 8.231422324417439484e-03, + 8.227885174808899013e-03, + 8.224334833590783017e-03, + 8.220771307167402606e-03, + 8.217194601964079859e-03, + 8.213604724427473955e-03, + 8.210001681025006978e-03, + 8.206385478245509235e-03, + 8.202756122598455976e-03, + 8.199113620614763634e-03, + 8.195457978846076852e-03, + 8.191789203865280228e-03, + 8.188107302266135756e-03, + 8.184412280663379974e-03, + 8.180704145692899165e-03, + 8.176982904011283540e-03, + 8.173248562296366732e-03, + 8.169501127246715788e-03, + 8.165740605582004139e-03, + 8.161967004042671586e-03, + 8.158180329390118599e-03, + 8.154380588406742736e-03, + 8.150567787895742627e-03, + 8.146741934681114503e-03, + 8.142903035607945358e-03, + 8.139051097541896013e-03, + 8.135186127369773562e-03, + 8.131308131998868718e-03, + 8.127417118357576839e-03, + 8.123513093394927817e-03, + 8.119596064080863637e-03, + 8.115666037406002453e-03, + 8.111723020381720120e-03, + 8.107767020040316727e-03, + 8.103798043434523937e-03, + 8.099816097638164181e-03, + 8.095821189745453297e-03, + 8.091813326871579934e-03, + 8.087792516152247577e-03, + 8.083758764743839351e-03, + 8.079712079823534246e-03, + 8.075652468589048644e-03, + 8.071579938258792442e-03, + 8.067494496071714663e-03, + 8.063396149287542850e-03, + 8.059284905186491627e-03, + 8.055160771069326889e-03, + 8.051023754257549681e-03, + 8.046873862093087415e-03, + 8.042711101938444795e-03, + 8.038535481176655242e-03, + 8.034347007211339875e-03, + 8.030145687466620774e-03, + 8.025931529386985674e-03, + 8.021704540437634909e-03, + 8.017464728103988747e-03, + 8.013212099892254650e-03, + 8.008946663328653584e-03, + 8.004668425960186767e-03, + 8.000377395354210663e-03, + 7.996073579098393613e-03, + 7.991756984800837266e-03, + 7.987427620090003719e-03, + 7.983085492614783174e-03, + 7.978730610044433222e-03, + 7.974362980068363735e-03, + 7.969982610396605244e-03, + 7.965589508759271173e-03, + 7.961183682906837131e-03, + 7.956765140610057643e-03, + 7.952333889660040747e-03, + 7.947889937868074517e-03, + 7.943433293065625331e-03, + 7.938963963104572058e-03, + 7.934481955856845237e-03, + 7.929987279214761875e-03, + 7.925479941090513708e-03, + 7.920959949416831597e-03, + 7.916427312146333273e-03, + 7.911882037251995181e-03, + 7.907324132726760435e-03, + 7.902753606583740043e-03, + 7.898170466856238928e-03, + 7.893574721597547764e-03, + 7.888966378881083485e-03, + 7.884345446800248777e-03, + 7.879711933468699220e-03, + 7.875065847019895732e-03, + 7.870407195607402942e-03, + 7.865735987404899598e-03, + 7.861052230605887134e-03, + 7.856355933423922119e-03, + 7.851647104092583304e-03, + 7.846925750865268653e-03, + 7.842191882015547497e-03, + 7.837445505836534293e-03, + 7.832686630641617215e-03, + 7.827915264763837117e-03, + 7.823131416556288256e-03, + 7.818335094391837270e-03, + 7.813526306663109294e-03, + 7.808705061782776798e-03, + 7.803871368183171869e-03, + 7.799025234316487448e-03, + 7.794166668654629003e-03, + 7.789295679689456527e-03, + 7.784412275932424581e-03, + 7.779516465914764443e-03, + 7.774608258187534413e-03, + 7.769687661321399499e-03, + 7.764754683906777144e-03, + 7.759809334553695835e-03, + 7.754851621892033635e-03, + 7.749881554571170367e-03, + 7.744899141260120322e-03, + 7.739904390647671904e-03, + 7.734897311442022472e-03, + 7.729877912371250180e-03, + 7.724846202182602747e-03, + 7.719802189643325784e-03, + 7.714745883539935942e-03, + 7.709677292678519291e-03, + 7.704596425884882235e-03, + 7.699503292004045846e-03, + 7.694397899900776681e-03, + 7.689280258459173061e-03, + 7.684150376582750061e-03, + 7.679008263194667637e-03, + 7.673853927237326428e-03, + 7.668687377672610619e-03, + 7.663508623481732687e-03, + 7.658317673665492736e-03, + 7.653114537243822270e-03, + 7.647899223256065214e-03, + 7.642671740761023021e-03, + 7.637432098836652826e-03, + 7.632180306580428272e-03, + 7.626916373108762713e-03, + 7.621640307557741266e-03, + 7.616352119082442536e-03, + 7.611051816857201426e-03, + 7.605739410075774802e-03, + 7.600414907950886131e-03, + 7.595078319714701660e-03, + 7.589729654618226733e-03, + 7.584368921932009219e-03, + 7.578996130945422210e-03, + 7.573611290967230403e-03, + 7.568214411325139938e-03, + 7.562805501365931979e-03, + 7.557384570455696025e-03, + 7.551951627979343329e-03, + 7.546506683340929549e-03, + 7.541049745963511637e-03, + 7.535580825289198148e-03, + 7.530099930779252451e-03, + 7.524607071913528081e-03, + 7.519102258191228544e-03, + 7.513585499130337464e-03, + 7.508056804267723532e-03, + 7.502516183159349539e-03, + 7.496963645379895076e-03, + 7.491399200523190215e-03, + 7.485822858201490390e-03, + 7.480234628046370654e-03, + 7.474634519707918159e-03, + 7.469022542855293344e-03, + 7.463398707176255482e-03, + 7.457763022377380396e-03, + 7.452115498184181883e-03, + 7.446456144340730943e-03, + 7.440784970609943746e-03, + 7.435101986773329230e-03, + 7.429407202631317826e-03, + 7.423700628002882426e-03, + 7.417982272725567004e-03, + 7.412252146655852643e-03, + 7.406510259668606759e-03, + 7.400756621657406630e-03, + 7.394991242534364184e-03, + 7.389214132230377541e-03, + 7.383425300694669569e-03, + 7.377624757895099271e-03, + 7.371812513818156581e-03, + 7.365988578468669196e-03, + 7.360152961870238854e-03, + 7.354305674064541380e-03, + 7.348446725112074349e-03, + 7.342576125091696514e-03, + 7.336693884100624341e-03, + 7.330800012254503999e-03, + 7.324894519687340233e-03, + 7.318977416551708873e-03, + 7.313048713018339628e-03, + 7.307108419276309511e-03, + 7.301156545533234524e-03, + 7.295193102014829040e-03, + 7.289218098965142591e-03, + 7.283231546646471398e-03, + 7.277233455339579549e-03, + 7.271223835343179447e-03, + 7.265202696974336870e-03, + 7.259170050568418929e-03, + 7.253125906478738449e-03, + 7.247070275077133368e-03, + 7.241003166753108046e-03, + 7.234924591914759610e-03, + 7.228834560987966104e-03, + 7.222733084416999710e-03, + 7.216620172664000264e-03, + 7.210495836209130510e-03, + 7.204360085550908302e-03, + 7.198212931205400823e-03, + 7.192054383707147461e-03, + 7.185884453608308055e-03, + 7.179703151479360258e-03, + 7.173510487908460291e-03, + 7.167306473501738710e-03, + 7.161091118883440923e-03, + 7.154864434695505648e-03, + 7.148626431597797370e-03, + 7.142377120268036950e-03, + 7.136116511401844123e-03, + 7.129844615712802557e-03, + 7.123561443931881315e-03, + 7.117267006808279672e-03, + 7.110961315108665567e-03, + 7.104644379617742860e-03, + 7.098316211137698818e-03, + 7.091976820488464332e-03, + 7.085626218507971516e-03, + 7.079264416051275939e-03, + 7.072891423991688534e-03, + 7.066507253219675780e-03, + 7.060111914643751353e-03, + 7.053705419189726725e-03, + 7.047287777801028615e-03, + 7.040859001438870730e-03, + 7.034419101081802739e-03, + 7.027968087726000831e-03, + 7.021505972385022262e-03, + 7.015032766090173108e-03, + 7.008548479890040761e-03, + 7.002053124850598879e-03, + 6.995546712055555200e-03, + 6.989029252605773873e-03, + 6.982500757619585115e-03, + 6.975961238232660303e-03, + 6.969410705598227083e-03, + 6.962849170886651305e-03, + 6.956276645285606151e-03, + 6.949693140000300258e-03, + 6.943098666252944286e-03, + 6.936493235283363278e-03, + 6.929876858348124093e-03, + 6.923249546721473892e-03, + 6.916611311694789363e-03, + 6.909962164576476974e-03, + 6.903302116692217570e-03, + 6.896631179384728715e-03, + 6.889949364014146330e-03, + 6.883256681957401063e-03, + 6.876553144608622478e-03, + 6.869838763379184157e-03, + 6.863113549697289102e-03, + 6.856377515008268975e-03, + 6.849630670774388939e-03, + 6.842873028475124353e-03, + 6.836104599606735756e-03, + 6.829325395682411988e-03, + 6.822535428232519121e-03, + 6.815734708804030602e-03, + 6.808923248961228081e-03, + 6.802101060284710017e-03, + 6.795268154372490627e-03, + 6.788424542839026701e-03, + 6.781570237315890683e-03, + 6.774705249451259785e-03, + 6.767829590910091203e-03, + 6.760943273374291247e-03, + 6.754046308542351919e-03, + 6.747138708129485352e-03, + 6.740220483867570035e-03, + 6.733291647505419697e-03, + 6.726352210808216048e-03, + 6.719402185557842716e-03, + 6.712441583553034434e-03, + 6.705470416608862692e-03, + 6.698488696557005490e-03, + 6.691496435245914733e-03, + 6.684493644540327045e-03, + 6.677480336321825818e-03, + 6.670456522487988593e-03, + 6.663422214953434834e-03, + 6.656377425648814586e-03, + 6.649322166521560475e-03, + 6.642256449535297903e-03, + 6.635180286670048014e-03, + 6.628093689922434119e-03, + 6.620996671305230674e-03, + 6.613889242847589660e-03, + 6.606771416594995477e-03, + 6.599643204609348217e-03, + 6.592504618968686968e-03, + 6.585355671767273086e-03, + 6.578196375115826985e-03, + 6.571026741141099657e-03, + 6.563846781986107728e-03, + 6.556656509809897539e-03, + 6.549455936788022188e-03, + 6.542245075111841578e-03, + 6.535023936988865016e-03, + 6.527792534642973266e-03, + 6.520550880313745468e-03, + 6.513298986257244107e-03, + 6.506036864745001064e-03, + 6.498764528065119166e-03, + 6.491481988521377068e-03, + 6.484189258433531097e-03, + 6.476886350137519947e-03, + 6.469573275984867068e-03, + 6.462250048343399708e-03, + 6.454916679596524667e-03, + 6.447573182143528404e-03, + 6.440219568399806888e-03, + 6.432855850796322626e-03, + 6.425482041779928197e-03, + 6.418098153813206648e-03, + 6.410704199374690077e-03, + 6.403300190958438956e-03, + 6.395886141074252906e-03, + 6.388462062247859778e-03, + 6.381027967020326715e-03, + 6.373583867948827766e-03, + 6.366129777605527597e-03, + 6.358665708578866045e-03, + 6.351191673472481730e-03, + 6.343707684905612772e-03, + 6.336213755513304090e-03, + 6.328709897945787241e-03, + 6.321196124869228085e-03, + 6.313672448964684214e-03, + 6.306138882929264618e-03, + 6.298595439475135685e-03, + 6.291042131330183869e-03, + 6.283478971237445830e-03, + 6.275905971955384258e-03, + 6.268323146258013637e-03, + 6.260730506934495190e-03, + 6.253128066789328567e-03, + 6.245515838642284184e-03, + 6.237893835328516857e-03, + 6.230262069698557989e-03, + 6.222620554617671121e-03, + 6.214969302966849400e-03, + 6.207308327642031484e-03, + 6.199637641554262869e-03, + 6.191957257629983856e-03, + 6.184267188810435405e-03, + 6.176567448052388588e-03, + 6.168858048327088145e-03, + 6.161139002621412140e-03, + 6.153410323936884911e-03, + 6.145672025290366616e-03, + 6.137924119713440881e-03, + 6.130166620252694085e-03, + 6.122399539969849806e-03, + 6.114622891941387181e-03, + 6.106836689258706569e-03, + 6.099040945028053225e-03, + 6.091235672370732407e-03, + 6.083420884422691306e-03, + 6.075596594334631805e-03, + 6.067762815272373031e-03, + 6.059919560416173953e-03, + 6.052066842961201752e-03, + 6.044204676117207430e-03, + 6.036333073108936936e-03, + 6.028452047175537898e-03, + 6.020561611570832833e-03, + 6.012661779563557678e-03, + 6.004752564436684377e-03, + 5.996833979488219724e-03, + 5.988906038030157586e-03, + 5.980968753389535354e-03, + 5.973022138907843268e-03, + 5.965066207940898646e-03, + 5.957100973859106099e-03, + 5.949126450047198186e-03, + 5.941142649904652615e-03, + 5.933149586845049527e-03, + 5.925147274296439261e-03, + 5.917135725701411740e-03, + 5.909114954516716568e-03, + 5.901084974213474665e-03, + 5.893045798277024745e-03, + 5.884997440207271995e-03, + 5.876939913518080920e-03, + 5.868873231737584129e-03, + 5.860797408408366209e-03, + 5.852712457086843567e-03, + 5.844618391344067604e-03, + 5.836515224764596277e-03, + 5.828402970947724020e-03, + 5.820281643506401009e-03, + 5.812151256068032873e-03, + 5.804011822273773789e-03, + 5.795863355778830932e-03, + 5.787705870252769780e-03, + 5.779539379378502775e-03, + 5.771363896853552201e-03, + 5.763179436388901795e-03, + 5.754986011709849365e-03, + 5.746783636555269532e-03, + 5.738572324677933788e-03, + 5.730352089844742945e-03, + 5.722122945836096569e-03, + 5.713884906446357013e-03, + 5.705637985483493803e-03, + 5.697382196769482619e-03, + 5.689117554140088462e-03, + 5.680844071444245483e-03, + 5.672561762545183690e-03, + 5.664270641319384646e-03, + 5.655970721657282291e-03, + 5.647662017462717378e-03, + 5.639344542653055431e-03, + 5.631018311159636039e-03, + 5.622683336926674776e-03, + 5.614339633912597202e-03, + 5.605987216088800275e-03, + 5.597626097440596034e-03, + 5.589256291966427509e-03, + 5.580877813678168826e-03, + 5.572490676601401030e-03, + 5.564094894774791050e-03, + 5.555690482250429975e-03, + 5.547277453093716823e-03, + 5.538855821383597069e-03, + 5.530425601212017941e-03, + 5.521986806684204240e-03, + 5.513539451918920281e-03, + 5.505083551047843665e-03, + 5.496619118215926095e-03, + 5.488146167581234650e-03, + 5.479664713315233679e-03, + 5.471174769602240098e-03, + 5.462676350639660179e-03, + 5.454169470638287054e-03, + 5.445654143821550448e-03, + 5.437130384426404860e-03, + 5.428598206702134332e-03, + 5.420057624911581509e-03, + 5.411508653330439865e-03, + 5.402951306247157429e-03, + 5.394385597963185716e-03, + 5.385811542792746411e-03, + 5.377229155063236420e-03, + 5.368638449114600773e-03, + 5.360039439299558138e-03, + 5.351432139983965108e-03, + 5.342816565546098899e-03, + 5.334192730377130924e-03, + 5.325560648880795465e-03, + 5.316920335473849374e-03, + 5.308271804585432824e-03, + 5.299615070657298296e-03, + 5.290950148144141045e-03, + 5.282277051512856633e-03, + 5.273595795243378806e-03, + 5.264906393827541511e-03, + 5.256208861770383413e-03, + 5.247503213588947460e-03, + 5.238789463813120495e-03, + 5.230067626984985334e-03, + 5.221337717659032401e-03, + 5.212599750402469381e-03, + 5.203853739794560285e-03, + 5.195099700427066938e-03, + 5.186337646903938468e-03, + 5.177567593841737176e-03, + 5.168789555869040056e-03, + 5.160003547626651303e-03, + 5.151209583767926703e-03, + 5.142407678958123979e-03, + 5.133597847874685552e-03, + 5.124780105207505689e-03, + 5.115954465658240947e-03, + 5.107120943941144582e-03, + 5.098279554781859173e-03, + 5.089430312918769711e-03, + 5.080573233101839600e-03, + 5.071708330093422507e-03, + 5.062835618667555458e-03, + 5.053955113610262423e-03, + 5.045066829719787628e-03, + 5.036170781805982335e-03, + 5.027266984690732451e-03, + 5.018355453207661021e-03, + 5.009436202202519409e-03, + 5.000509246532587951e-03, + 4.991574601066966523e-03, + 4.982632280686778367e-03, + 4.973682300284606311e-03, + 4.964724674764871802e-03, + 4.955759419043574698e-03, + 4.946786548048675777e-03, + 4.937806076719481775e-03, + 4.928818020006909065e-03, + 4.919822392873814121e-03, + 4.910819210294183404e-03, + 4.901808487254038019e-03, + 4.892790238750251500e-03, + 4.883764479791864732e-03, + 4.874731225399008688e-03, + 4.865690490603241831e-03, + 4.856642290447866703e-03, + 4.847586639987146694e-03, + 4.838523554287257541e-03, + 4.829453048424975012e-03, + 4.820375137489034921e-03, + 4.811289836579331694e-03, + 4.802197160806848976e-03, + 4.793097125293917238e-03, + 4.783989745173987396e-03, + 4.774875035592002041e-03, + 4.765753011703750125e-03, + 4.756623688676200022e-03, + 4.747487081687735457e-03, + 4.738343205927409568e-03, + 4.729192076595858246e-03, + 4.720033708904071944e-03, + 4.710868118074721875e-03, + 4.701695319341133057e-03, + 4.692515327947539318e-03, + 4.683328159149456257e-03, + 4.674133828212878941e-03, + 4.664932350415250742e-03, + 4.655723741044122399e-03, + 4.646508015398622196e-03, + 4.637285188788159256e-03, + 4.628055276533401055e-03, + 4.618818293965406066e-03, + 4.609574256426010597e-03, + 4.600323179268049970e-03, + 4.591065077854755705e-03, + 4.581799967560138027e-03, + 4.572527863768716117e-03, + 4.563248781875821683e-03, + 4.553962737287528713e-03, + 4.544669745419785238e-03, + 4.535369821699834943e-03, + 4.526062981565028877e-03, + 4.516749240463173269e-03, + 4.507428613852847848e-03, + 4.498101117202693740e-03, + 4.488766765992217508e-03, + 4.479425575710607212e-03, + 4.470077561858163545e-03, + 4.460722739944945024e-03, + 4.451361125491761113e-03, + 4.441992734029402874e-03, + 4.432617581098889301e-03, + 4.423235682251783901e-03, + 4.413847053049551120e-03, + 4.404451709063917156e-03, + 4.395049665876671341e-03, + 4.385640939080049511e-03, + 4.376225544276053127e-03, + 4.366803497076758925e-03, + 4.357374813104610348e-03, + 4.347939507991765290e-03, + 4.338497597380466461e-03, + 4.329049096922833219e-03, + 4.319594022281255351e-03, + 4.310132389127709594e-03, + 4.300664213144037192e-03, + 4.291189510022324662e-03, + 4.281708295464029500e-03, + 4.272220585180958562e-03, + 4.262726394893980898e-03, + 4.253225740334476250e-03, + 4.243718637242994973e-03, + 4.234205101370254638e-03, + 4.224685148476325577e-03, + 4.215158794330930991e-03, + 4.205626054713770476e-03, + 4.196086945413800978e-03, + 4.186541482229566395e-03, + 4.176989680969498547e-03, + 4.167431557451224157e-03, + 4.157867127501970773e-03, + 4.148296406958369015e-03, + 4.138719411666775226e-03, + 4.129136157482674735e-03, + 4.119546660270945529e-03, + 4.109950935906149690e-03, + 4.100349000271783992e-03, + 4.090740869261170684e-03, + 4.081126558776191141e-03, + 4.071506084728753437e-03, + 4.061879463039449675e-03, + 4.052246709638517019e-03, + 4.042607840465061407e-03, + 4.032962871467345514e-03, + 4.023311818603212027e-03, + 4.013654697838841580e-03, + 4.003991525150255894e-03, + 3.994322316521981171e-03, + 3.984647087948032552e-03, + 3.974965855431058896e-03, + 3.965278634982739164e-03, + 3.955585442623977578e-03, + 3.945886294384307741e-03, + 3.936181206302248256e-03, + 3.926470194425104102e-03, + 3.916753274809208624e-03, + 3.907030463519847209e-03, + 3.897301776630422883e-03, + 3.887567230223896129e-03, + 3.877826840391388006e-03, + 3.868080623233168935e-03, + 3.858328594857883716e-03, + 3.848570771382825179e-03, + 3.838807168934360060e-03, + 3.829037803646695177e-03, + 3.819262691663360618e-03, + 3.809481849135929951e-03, + 3.799695292224894525e-03, + 3.789903037098938353e-03, + 3.780105099935220439e-03, + 3.770301496919676622e-03, + 3.760492244246313540e-03, + 3.750677358117646652e-03, + 3.740856854744460842e-03, + 3.731030750346181653e-03, + 3.721199061150241242e-03, + 3.711361803392341195e-03, + 3.701518993316776050e-03, + 3.691670647175732470e-03, + 3.681816781229738100e-03, + 3.671957411747351057e-03, + 3.662092555005637406e-03, + 3.652222227289444751e-03, + 3.642346444891719250e-03, + 3.632465224113807026e-03, + 3.622578581264671808e-03, + 3.612686532661808260e-03, + 3.602789094629969997e-03, + 3.592886283502513128e-03, + 3.582978115620614329e-03, + 3.573064607333157217e-03, + 3.563145774996999936e-03, + 3.553221634976758310e-03, + 3.543292203645196595e-03, + 3.533357497382552236e-03, + 3.523417532576836406e-03, + 3.513472325624146693e-03, + 3.503521892927958462e-03, + 3.493566250899557673e-03, + 3.483605415957781101e-03, + 3.473639404529429639e-03, + 3.463668233048613869e-03, + 3.453691917956983482e-03, + 3.443710475704122361e-03, + 3.433723922746666473e-03, + 3.423732275549341668e-03, + 3.413735550583536869e-03, + 3.403733764328906088e-03, + 3.393726933271946390e-03, + 3.383715073907005762e-03, + 3.373698202735452619e-03, + 3.363676336266008000e-03, + 3.353649491015050013e-03, + 3.343617683505880917e-03, + 3.333580930269198529e-03, + 3.323539247842805227e-03, + 3.313492652772065481e-03, + 3.303441161609162961e-03, + 3.293384790913447043e-03, + 3.283323557251713841e-03, + 3.273257477197524020e-03, + 3.263186567331514184e-03, + 3.253110844241697414e-03, + 3.243030324522642310e-03, + 3.232945024776483905e-03, + 3.222854961611505090e-03, + 3.212760151643730393e-03, + 3.202660611495516084e-03, + 3.192556357796549806e-03, + 3.182447407183034826e-03, + 3.172333776297998377e-03, + 3.162215481791580060e-03, + 3.152092540320394331e-03, + 3.141964968547850991e-03, + 3.131832783144017709e-03, + 3.121696000785956129e-03, + 3.111554638157036645e-03, + 3.101408711947303137e-03, + 3.091258238853700647e-03, + 3.081103235579438302e-03, + 3.070943718834368355e-03, + 3.060779705334769341e-03, + 3.050611211803745931e-03, + 3.040438254970524203e-03, + 3.030260851570781237e-03, + 3.020079018346926575e-03, + 3.009892772047335907e-03, + 2.999702129427273510e-03, + 2.989507107247550439e-03, + 2.979307722276080574e-03, + 2.969103991286594756e-03, + 2.958895931059065364e-03, + 2.948683558380028966e-03, + 2.938466890041764937e-03, + 2.928245942843281206e-03, + 2.918020733588910873e-03, + 2.907791279089804500e-03, + 2.897557596163065352e-03, + 2.887319701631627534e-03, + 2.877077612324562168e-03, + 2.866831345076825861e-03, + 2.856580916729685709e-03, + 2.846326344130016301e-03, + 2.836067644130603731e-03, + 2.825804833590465654e-03, + 2.815537929374022086e-03, + 2.805266948352100678e-03, + 2.794991907400528556e-03, + 2.784712823401718721e-03, + 2.774429713243364674e-03, + 2.764142593818892744e-03, + 2.753851482027763493e-03, + 2.743556394774641655e-03, + 2.733257348970405311e-03, + 2.722954361530743363e-03, + 2.712647449377743238e-03, + 2.702336629438449340e-03, + 2.692021918645909513e-03, + 2.681703333938321564e-03, + 2.671380892259357220e-03, + 2.661054610558483049e-03, + 2.650724505790228846e-03, + 2.640390594914633453e-03, + 2.630052894896980648e-03, + 2.619711422708112698e-03, + 2.609366195324304590e-03, + 2.599017229726406208e-03, + 2.588664542901330731e-03, + 2.578308151840750552e-03, + 2.567948073541532691e-03, + 2.557584325006062326e-03, + 2.547216923241387137e-03, + 2.536845885260248165e-03, + 2.526471228079675124e-03, + 2.516092968722542875e-03, + 2.505711124216191028e-03, + 2.495325711593404053e-03, + 2.484936747891612445e-03, + 2.474544250153159434e-03, + 2.464148235425686964e-03, + 2.453748720761344659e-03, + 2.443345723217280312e-03, + 2.432939259855352795e-03, + 2.422529347742562265e-03, + 2.412116003950343264e-03, + 2.401699245554888684e-03, + 2.391279089637441627e-03, + 2.380855553283605860e-03, + 2.370428653583745229e-03, + 2.359998407632767255e-03, + 2.349564832530512577e-03, + 2.339127945381069742e-03, + 2.328687763293077473e-03, + 2.318244303380046466e-03, + 2.307797582759508939e-03, + 2.297347618554053828e-03, + 2.286894427889905618e-03, + 2.276438027898495999e-03, + 2.265978435715074353e-03, + 2.255515668479706956e-03, + 2.245049743336432167e-03, + 2.234580677433596532e-03, + 2.224108487924177004e-03, + 2.213633191965016372e-03, + 2.203154806717200990e-03, + 2.192673349346336599e-03, + 2.182188837021855309e-03, + 2.171701286917419350e-03, + 2.161210716210697734e-03, + 2.150717142083763064e-03, + 2.140220581722401122e-03, + 2.129721052316407934e-03, + 2.119218571059929349e-03, + 2.108713155150595403e-03, + 2.098204821790573306e-03, + 2.087693588185103328e-03, + 2.077179471544123805e-03, + 2.066662489080843892e-03, + 2.056142658012761418e-03, + 2.045619995560821539e-03, + 2.035094518949727253e-03, + 2.024566245408390436e-03, + 2.014035192168614746e-03, + 2.003501376466715854e-03, + 1.992964815542054308e-03, + 1.982425526638098914e-03, + 1.971883527001566314e-03, + 1.961338833882731499e-03, + 1.950791464535779314e-03, + 1.940241436218036837e-03, + 1.929688766190436333e-03, + 1.919133471717265893e-03, + 1.908575570066449803e-03, + 1.898015078509454655e-03, + 1.887452014320395747e-03, + 1.876886394777560387e-03, + 1.866318237161965904e-03, + 1.855747558758386821e-03, + 1.845174376854501370e-03, + 1.834598708741216758e-03, + 1.824020571713120186e-03, + 1.813439983067142687e-03, + 1.802856960104181521e-03, + 1.792271520127671413e-03, + 1.781683680444604142e-03, + 1.771093458364680906e-03, + 1.760500871200629562e-03, + 1.749905936268541596e-03, + 1.739308670887138985e-03, + 1.728709092378182075e-03, + 1.718107218066269436e-03, + 1.707503065279222104e-03, + 1.696896651347372777e-03, + 1.686287993603895414e-03, + 1.675677109385118133e-03, + 1.665064016029796368e-03, + 1.654448730879560852e-03, + 1.643831271278631831e-03, + 1.633211654574288517e-03, + 1.622589898116114267e-03, + 1.611966019256336159e-03, + 1.601340035350139407e-03, + 1.590711963754816482e-03, + 1.580081821830806857e-03, + 1.569449626940244398e-03, + 1.558815396448466574e-03, + 1.548179147723158363e-03, + 1.537540898134210233e-03, + 1.526900665054044259e-03, + 1.516258465857339612e-03, + 1.505614317921487484e-03, + 1.494968238625849280e-03, + 1.484320245352083179e-03, + 1.473670355484472212e-03, + 1.463018586409183322e-03, + 1.452364955514718605e-03, + 1.441709480191638625e-03, + 1.431052177833019075e-03, + 1.420393065833705287e-03, + 1.409732161590640520e-03, + 1.399069482503204672e-03, + 1.388405045972329784e-03, + 1.377738869401561039e-03, + 1.367070970195606756e-03, + 1.356401365761946689e-03, + 1.345730073509409990e-03, + 1.335057110849197396e-03, + 1.324382495194018419e-03, + 1.313706243958436340e-03, + 1.303028374559179157e-03, + 1.292348904414407753e-03, + 1.281667850944159109e-03, + 1.270985231570085890e-03, + 1.260301063715893368e-03, + 1.249615364806606725e-03, + 1.238928152268892191e-03, + 1.228239443531398568e-03, + 1.217549256023996987e-03, + 1.206857607178241478e-03, + 1.196164514427096185e-03, + 1.185469995205267781e-03, + 1.174774066949063221e-03, + 1.164076747095507854e-03, + 1.153378053083891925e-03, + 1.142678002354287825e-03, + 1.131976612348620194e-03, + 1.121273900509774058e-03, + 1.110569884281948716e-03, + 1.099864581110976056e-03, + 1.089158008443573324e-03, + 1.078450183727797411e-03, + 1.067741124412783984e-03, + 1.057030847949180525e-03, + 1.046319371788414273e-03, + 1.035606713383018136e-03, + 1.024892890186962892e-03, + 1.014177919654904751e-03, + 1.003461819242642021e-03, + 9.927446064068512141e-04, + 9.820262986055213784e-04, + 9.713069132972291988e-04, + 9.605864679414464775e-04, + 9.498649799988926083e-04, + 9.391424669306562643e-04, + 9.284189461992429539e-04, + 9.176944352671164437e-04, + 9.069689515983423008e-04, + 8.962425126572436986e-04, + 8.855151359088558058e-04, + 8.747868388192468194e-04, + 8.640576388546659979e-04, + 8.533275534825744127e-04, + 8.425966001701971041e-04, + 8.318647963860399891e-04, + 8.211321595990305226e-04, + 8.103987072783617887e-04, + 7.996644568938315314e-04, + 7.889294259155712119e-04, + 7.781936318144912906e-04, + 7.674570920615435363e-04, + 7.567198241280465032e-04, + 7.459818454860132854e-04, + 7.352431736072980329e-04, + 7.245038259646241008e-04, + 7.137638200301383738e-04, + 7.030231732770528567e-04, + 6.922819031782929998e-04, + 6.815400272069559911e-04, + 6.707975628366367755e-04, + 6.600545275405686084e-04, + 6.493109387926594440e-04, + 6.385668140660431162e-04, + 6.278221708347125809e-04, + 6.170770265720625309e-04, + 6.063313987519374946e-04, + 5.955853048477653417e-04, + 5.848387623328859045e-04, + 5.740917886808841533e-04, + 5.633444013648428563e-04, + 5.525966178577943659e-04, + 5.418484556324498942e-04, + 5.310999321616499983e-04, + 5.203510649176239624e-04, + 5.096018713723135399e-04, + 4.988523689977051537e-04, + 4.881025752650858620e-04, + 4.773525076453756662e-04, + 4.666021836094481098e-04, + 4.558516206272795589e-04, + 4.451008361689853744e-04, + 4.343498477033586242e-04, + 4.235986726995213773e-04, + 4.128473286254560437e-04, + 4.020958329490552613e-04, + 3.913442031372583291e-04, + 3.805924566563739200e-04, + 3.698406109724225801e-04, + 3.590886835503799015e-04, + 3.483366918546341637e-04, + 3.375846533487138201e-04, + 3.268325854957400433e-04, + 3.160805057576800896e-04, + 3.053284315956778178e-04, + 2.945763804703856723e-04, + 2.838243698412151197e-04, + 2.730724171667915255e-04, + 2.623205399046812610e-04, + 2.515687555118483690e-04, + 2.408170814439020461e-04, + 2.300655351554312003e-04, + 2.193141341003341572e-04, + 2.085628957309521112e-04, + 1.978118374991188230e-04, + 1.870609768546953474e-04, + 1.763103312472192403e-04, + 1.655599181244356548e-04, + 1.548097549333521611e-04, + 1.440598591193681052e-04, + 1.333102481266065103e-04, + 1.225609393983667856e-04, + 1.118119503757764797e-04, + 1.010632984993214972e-04, + 9.031500120797912937e-05, + 7.956707593906965420e-05, + 6.881954012858795323e-05, + 5.807241121093581520e-05, + 4.732570661937181896e-05, + 3.657944378526580220e-05, + 2.583364013842890614e-05, + 1.508831310744521431e-05, + 4.343480118804844021e-06, +-6.400841402045978462e-06, +-1.714463403217100063e-05, +-2.788788034949459612e-05, +-3.863056293426777118e-05, +-4.937266436801809969e-05, +-6.011416723441684681e-05, +-7.085505411894688467e-05, +-8.159530760845275525e-05, +-9.233491029248598906e-05, +-1.030738447616562912e-04, +-1.138120936090969692e-04, +-1.245496394294159405e-04, +-1.352864648195608850e-04, +-1.460225523784893225e-04, +-1.567578847068370497e-04, +-1.674924444076649258e-04, +-1.782262140860075184e-04, +-1.889591763491411188e-04, +-1.996913138062536563e-04, +-2.104226090685901173e-04, +-2.211530447503219394e-04, +-2.318826034670148982e-04, +-2.426112678370978765e-04, +-2.533390204808108896e-04, +-2.640658440210719594e-04, +-2.747917210831458631e-04, +-2.855166342941937020e-04, +-2.962405662846180707e-04, +-3.069634996864143654e-04, +-3.176854171346361368e-04, +-3.284063012663452036e-04, +-3.391261347214784175e-04, +-3.498449001425154637e-04, +-3.605625801741485590e-04, +-3.712791574640303340e-04, +-3.819946146623185768e-04, +-3.927089344219484766e-04, +-4.034220993981790467e-04, +-4.141340922493412795e-04, +-4.248448956365051326e-04, +-4.355544922231471675e-04, +-4.462628646759037986e-04, +-4.569699956641119711e-04, +-4.676758678600817292e-04, +-4.783804639386417192e-04, +-4.890837665778892396e-04, +-4.997857584588585303e-04, +-5.104864222651865667e-04, +-5.211857406839812351e-04, +-5.318836964047723125e-04, +-5.425802721209753562e-04, +-5.532754505282415488e-04, +-5.639692143259270084e-04, +-5.746615462160398115e-04, +-5.853524289041055120e-04, +-5.960418450988380851e-04, +-6.067297775118059939e-04, +-6.174162088581844083e-04, +-6.281011218564123803e-04, +-6.387844992278771247e-04, +-6.494663236976474813e-04, +-6.601465779940255980e-04, +-6.708252448488197153e-04, +-6.815023069968869588e-04, +-6.921777471768862091e-04, +-7.028515481309371201e-04, +-7.135236926042973519e-04, +-7.241941633462233192e-04, +-7.348629431089284897e-04, +-7.455300146490350223e-04, +-7.561953607259368389e-04, +-7.668589641032564665e-04, +-7.775208075478012761e-04, +-7.881808738304282424e-04, +-7.988391457257048049e-04, +-8.094956060115918476e-04, +-8.201502374701735839e-04, +-8.308030228872234418e-04, +-8.414539450524546231e-04, +-8.521029867590793755e-04, +-8.627501308045540558e-04, +-8.733953599902471478e-04, +-8.840386571211012075e-04, +-8.946800050063880103e-04, +-9.053193864592549208e-04, +-9.159567842969881368e-04, +-9.265921813406882961e-04, +-9.372255604154121822e-04, +-9.478569043510329294e-04, +-9.584861959807312480e-04, +-9.691134181424368704e-04, +-9.797385536777906447e-04, +-9.903615854330142815e-04, +-1.000982496258560808e-03, +-1.011601269008810013e-03, +-1.022217886542789878e-03, +-1.032832331723733356e-03, +-1.043444587419354187e-03, +-1.054054636501387636e-03, +-1.064662461846328616e-03, +-1.075268046335119869e-03, +-1.085871372852799388e-03, +-1.096472424289265642e-03, +-1.107071183538810939e-03, +-1.117667633500391824e-03, +-1.128261757077189545e-03, +-1.138853537177334082e-03, +-1.149442956713596668e-03, +-1.160029998603042843e-03, +-1.170614645767893095e-03, +-1.181196881134500025e-03, +-1.191776687634771466e-03, +-1.202354048204561966e-03, +-1.212928945784991610e-03, +-1.223501363322000192e-03, +-1.234071283766023696e-03, +-1.244638690072853628e-03, +-1.255203565202586647e-03, +-1.265765892121082379e-03, +-1.276325653798451604e-03, +-1.286882833209904761e-03, +-1.297437413335907628e-03, +-1.307989377161850866e-03, +-1.318538707678306972e-03, +-1.329085387880588574e-03, +-1.339629400769494581e-03, +-1.350170729350970390e-03, +-1.360709356635783499e-03, +-1.371245265640380672e-03, +-1.381778439385853612e-03, +-1.392308860899376180e-03, +-1.402836513212584162e-03, +-1.413361379362907755e-03, +-1.423883442393106659e-03, +-1.434402685350968237e-03, +-1.444919091290140616e-03, +-1.455432643269109197e-03, +-1.465943324352634745e-03, +-1.476451117610127735e-03, +-1.486956006117101398e-03, +-1.497457972954128287e-03, +-1.507957001207688554e-03, +-1.518453073969855752e-03, +-1.528946174337958343e-03, +-1.539436285415328020e-03, +-1.549923390310841732e-03, +-1.560407472139186454e-03, +-1.570888514020433741e-03, +-1.581366499080736872e-03, +-1.591841410452045488e-03, +-1.602313231271752791e-03, +-1.612781944683436709e-03, +-1.623247533836526604e-03, +-1.633709981886002742e-03, +-1.644169271993211169e-03, +-1.654625387324851942e-03, +-1.665078311054428483e-03, +-1.675528026360597863e-03, +-1.685974516428638591e-03, +-1.696417764449400459e-03, +-1.706857753620160843e-03, +-1.717294467144298573e-03, +-1.727727888230976916e-03, +-1.738158000095851993e-03, +-1.748584785960662948e-03, +-1.759008229053462668e-03, +-1.769428312608190609e-03, +-1.779845019865410483e-03, +-1.790258334071961367e-03, +-1.800668238480670168e-03, +-1.811074716351032069e-03, +-1.821477750948820003e-03, +-1.831877325546307561e-03, +-1.842273423421848322e-03, +-1.852666027860596634e-03, +-1.863055122154186035e-03, +-1.873440689600407898e-03, +-1.883822713504041714e-03, +-1.894201177175858057e-03, +-1.904576063934012220e-03, +-1.914947357102474287e-03, +-1.925315040012429927e-03, +-1.935679096001245410e-03, +-1.946039508413365763e-03, +-1.956396260599917516e-03, +-1.966749335918338126e-03, +-1.977098717733637764e-03, +-1.987444389416925458e-03, +-1.997786334346262141e-03, +-2.008124535906787283e-03, +-2.018458977490406644e-03, +-2.028789642496048578e-03, +-2.039116514329220378e-03, +-2.049439576402742932e-03, +-2.059758812136422423e-03, +-2.070074204956725075e-03, +-2.080385738297631064e-03, +-2.090693395599590217e-03, +-2.100997160310967907e-03, +-2.111297015886432621e-03, +-2.121592945788375838e-03, +-2.131884933485911522e-03, +-2.142172962455672364e-03, +-2.152457016181540464e-03, +-2.162737078154173317e-03, +-2.173013131872321337e-03, +-2.183285160841223239e-03, +-2.193553148574038051e-03, +-2.203817078590806014e-03, +-2.214076934419302936e-03, +-2.224332699594715797e-03, +-2.234584357659326163e-03, +-2.244831892163210146e-03, +-2.255075286663827706e-03, +-2.265314524726265086e-03, +-2.275549589922923419e-03, +-2.285780465833659684e-03, +-2.296007136046601584e-03, +-2.306229584156702095e-03, +-2.316447793767136779e-03, +-2.326661748488294181e-03, +-2.336871431938594180e-03, +-2.347076827744200896e-03, +-2.357277919538568189e-03, +-2.367474690963702975e-03, +-2.377667125668657313e-03, +-2.387855207310849836e-03, +-2.398038919555113384e-03, +-2.408218246074511192e-03, +-2.418393170550002524e-03, +-2.428563676670145600e-03, +-2.438729748131799289e-03, +-2.448891368639703314e-03, +-2.459048521906712862e-03, +-2.469201191653379659e-03, +-2.479349361608671441e-03, +-2.489493015509650162e-03, +-2.499632137101130691e-03, +-2.509766710136443653e-03, +-2.519896718376954045e-03, +-2.530022145592337058e-03, +-2.540142975560154368e-03, +-2.550259192066549330e-03, +-2.560370778905941662e-03, +-2.570477719880709562e-03, +-2.580579998802008928e-03, +-2.590677599488784566e-03, +-2.600770505769141056e-03, +-2.610858701478792777e-03, +-2.620942170462453851e-03, +-2.631020896572852392e-03, +-2.641094863671505054e-03, +-2.651164055628445985e-03, +-2.661228456321927151e-03, +-2.671288049639060618e-03, +-2.681342819475558779e-03, +-2.691392749735402150e-03, +-2.701437824331535866e-03, +-2.711478027185475464e-03, +-2.721513342227504639e-03, +-2.731543753396297076e-03, +-2.741569244639599934e-03, +-2.751589799913931565e-03, +-2.761605403184228067e-03, +-2.771616038424736667e-03, +-2.781621689617945828e-03, +-2.791622340756005991e-03, +-2.801617975839178730e-03, +-2.811608578877197208e-03, +-2.821594133888285626e-03, +-2.831574624899970642e-03, +-2.841550035948788196e-03, +-2.851520351079932236e-03, +-2.861485554347986768e-03, +-2.871445629816497380e-03, +-2.881400561558217568e-03, +-2.891350333654673765e-03, +-2.901294930196882636e-03, +-2.911234335285023227e-03, +-2.921168533028142920e-03, +-2.931097507544848293e-03, +-2.941021242962875339e-03, +-2.950939723419335366e-03, +-2.960852933060435701e-03, +-2.970760856041581178e-03, +-2.980663476528180780e-03, +-2.990560778694267233e-03, +-3.000452746723806293e-03, +-3.010339364809756085e-03, +-3.020220617154831689e-03, +-3.030096487971253600e-03, +-3.039966961480395150e-03, +-3.049832021913485066e-03, +-3.059691653511197214e-03, +-3.069545840523876541e-03, +-3.079394567211156571e-03, +-3.089237817842612529e-03, +-3.099075576697480315e-03, +-3.108907828064321702e-03, +-3.118734556241753789e-03, +-3.128555745537978886e-03, +-3.138371380271099374e-03, +-3.148181444768628507e-03, +-3.157985923368222900e-03, +-3.167784800417365945e-03, +-3.177578060273052521e-03, +-3.187365687302603015e-03, +-3.197147665882676699e-03, +-3.206923980400644327e-03, +-3.216694615253038163e-03, +-3.226459554846814858e-03, +-3.236218783598925671e-03, +-3.245972285936025038e-03, +-3.255720046295242087e-03, +-3.265462049123239990e-03, +-3.275198278877550825e-03, +-3.284928720025161782e-03, +-3.294653357043331350e-03, +-3.304372174419688626e-03, +-3.314085156651980051e-03, +-3.323792288248264126e-03, +-3.333493553726505059e-03, +-3.343188937615307853e-03, +-3.352878424453534061e-03, +-3.362561998790045050e-03, +-3.372239645184509083e-03, +-3.381911348206389535e-03, +-3.391577092436334415e-03, +-3.401236862464608601e-03, +-3.410890642892394457e-03, +-3.420538418331328222e-03, +-3.430180173403211616e-03, +-3.439815892740786391e-03, +-3.449445560986819266e-03, +-3.459069162795381288e-03, +-3.468686682830381552e-03, +-3.478298105766875186e-03, +-3.487903416290141778e-03, +-3.497502599096433042e-03, +-3.507095638892703503e-03, +-3.516682520396279595e-03, +-3.526263228335560496e-03, +-3.535837747449571428e-03, +-3.545406062488275483e-03, +-3.554968158212090928e-03, +-3.564524019392584231e-03, +-3.574073630812211154e-03, +-3.583616977263956362e-03, +-3.593154043552040326e-03, +-3.602684814491522933e-03, +-3.612209274908506022e-03, +-3.621727409639861894e-03, +-3.631239203533356483e-03, +-3.640744641448426071e-03, +-3.650243708254807297e-03, +-3.659736388833846003e-03, +-3.669222668077558747e-03, +-3.678702530889411265e-03, +-3.688175962184001445e-03, +-3.697642946886785242e-03, +-3.707103469934745852e-03, +-3.716557516275938774e-03, +-3.726005070869819677e-03, +-3.735446118686760412e-03, +-3.744880644708737695e-03, +-3.754308633929061192e-03, +-3.763730071352039581e-03, +-3.773144941993686590e-03, +-3.782553230881259554e-03, +-3.791954923053559526e-03, +-3.801350003560493261e-03, +-3.810738457463739778e-03, +-3.820120269836456764e-03, +-3.829495425762997375e-03, +-3.838863910339659642e-03, +-3.848225708673757087e-03, +-3.857580805884914133e-03, +-3.866929187103635389e-03, +-3.876270837472561587e-03, +-3.885605742145568399e-03, +-3.894933886288481570e-03, +-3.904255255078854011e-03, +-3.913569833705541658e-03, +-3.922877607369826269e-03, +-3.932178561284166429e-03, +-3.941472680672912683e-03, +-3.950759950772400782e-03, +-3.960040356830723564e-03, +-3.969313884107933052e-03, +-3.978580517875636262e-03, +-3.987840243417650928e-03, +-3.997093046029747895e-03, +-4.006338911019305046e-03, +-4.015577823706123484e-03, +-4.024809769421433536e-03, +-4.034034733509260853e-03, +-4.043252701324917195e-03, +-4.052463658236311016e-03, +-4.061667589623028062e-03, +-4.070864480877053881e-03, +-4.080054317402544845e-03, +-4.089237084615376244e-03, +-4.098412767944339258e-03, +-4.107581352829691584e-03, +-4.116742824724468897e-03, +-4.125897169093512527e-03, +-4.135044371414255300e-03, +-4.144184417176426626e-03, +-4.153317291881776681e-03, +-4.162442981044697440e-03, +-4.171561470191855782e-03, +-4.180672744862374765e-03, +-4.189776790607542198e-03, +-4.198873592991312839e-03, +-4.207963137590161815e-03, +-4.217045409992722059e-03, +-4.226120395800502492e-03, +-4.235188080627172447e-03, +-4.244248450099234737e-03, +-4.253301489855778467e-03, +-4.262347185548045342e-03, +-4.271385522840647452e-03, +-4.280416487410098822e-03, +-4.289440064946088704e-03, +-4.298456241150589927e-03, +-4.307465001738572732e-03, +-4.316466332437765389e-03, +-4.325460218988304642e-03, +-4.334446647143446081e-03, +-4.343425602669096636e-03, +-4.352397071344128558e-03, +-4.361361038959930131e-03, +-4.370317491321054452e-03, +-4.379266414244954025e-03, +-4.388207793561684986e-03, +-4.397141615114520327e-03, +-4.406067864759614233e-03, +-4.414986528366185090e-03, +-4.423897591816134713e-03, +-4.432801041004709279e-03, +-4.441696861840194882e-03, +-4.450585040243626965e-03, +-4.459465562149533650e-03, +-4.468338413505081388e-03, +-4.477203580271230283e-03, +-4.486061048421415703e-03, +-4.494910803942742637e-03, +-4.503752832835121803e-03, +-4.512587121111961801e-03, +-4.521413654799959214e-03, +-4.530232419938735183e-03, +-4.539043402581510213e-03, +-4.547846588794812739e-03, +-4.556641964658211114e-03, +-4.565429516264912953e-03, +-4.574209229721414721e-03, +-4.582981091147695155e-03, +-4.591745086676857907e-03, +-4.600501202455759518e-03, +-4.609249424644685893e-03, +-4.617989739417148465e-03, +-4.626722132960532988e-03, +-4.635446591475266866e-03, +-4.644163101176023919e-03, +-4.652871648290340077e-03, +-4.661572219059876253e-03, +-4.670264799739477259e-03, +-4.678949376597922073e-03, +-4.687625935917654092e-03, +-4.696294463994518317e-03, +-4.704954947138344223e-03, +-4.713607371672556313e-03, +-4.722251723934471623e-03, +-4.730887990274845224e-03, +-4.739516157058524214e-03, +-4.748136210664152812e-03, +-4.756748137483952053e-03, +-4.765351923924212446e-03, +-4.773947556405078868e-03, +-4.782535021360647710e-03, +-4.791114305238733558e-03, +-4.799685394501009700e-03, +-4.808248275623687278e-03, +-4.816802935096250668e-03, +-4.825349359422701281e-03, +-4.833887535120672853e-03, +-4.842417448722110586e-03, +-4.850939086773050843e-03, +-4.859452435833306293e-03, +-4.867957482477092146e-03, +-4.876454213292661863e-03, +-4.884942614882513585e-03, +-4.893422673863011101e-03, +-4.901894376865007473e-03, +-4.910357710533578765e-03, +-4.918812661527730001e-03, +-4.927259216521017934e-03, +-4.935697362201177212e-03, +-4.944127085270328542e-03, +-4.952548372444627416e-03, +-4.960961210454869520e-03, +-4.969365586046163748e-03, +-4.977761485977757853e-03, +-4.986148897023671631e-03, +-4.994527805971858171e-03, +-5.002898199625369600e-03, +-5.011260064801082922e-03, +-5.019613388330724374e-03, +-5.027958157060532889e-03, +-5.036294357850966928e-03, +-5.044621977577413117e-03, +-5.052941003129383934e-03, +-5.061251421411595841e-03, +-5.069553219342833907e-03, +-5.077846383856590186e-03, +-5.086130901901204232e-03, +-5.094406760439589010e-03, +-5.102673946449431258e-03, +-5.110932446922855817e-03, +-5.119182248866988548e-03, +-5.127423339303711740e-03, +-5.135655705269409101e-03, +-5.143879333815596332e-03, +-5.152094212008187339e-03, +-5.160300326928506445e-03, +-5.168497665672153879e-03, +-5.176686215349919976e-03, +-5.184865963087514559e-03, +-5.193036896025261633e-03, +-5.201199001318824490e-03, +-5.209352266138313203e-03, +-5.217496677669479846e-03, +-5.225632223112428726e-03, +-5.233758889682717068e-03, +-5.241876664610581327e-03, +-5.249985535141592045e-03, +-5.258085488536399718e-03, +-5.266176512070436418e-03, +-5.274258593034548102e-03, +-5.282331718734623385e-03, +-5.290395876491791292e-03, +-5.298451053642086461e-03, +-5.306497237536972160e-03, +-5.314534415543178091e-03, +-5.322562575042381200e-03, +-5.330581703431740842e-03, +-5.338591788123644641e-03, +-5.346592816545830788e-03, +-5.354584776141182480e-03, +-5.362567654367838069e-03, +-5.370541438699780873e-03, +-5.378506116625792269e-03, +-5.386461675650430943e-03, +-5.394408103293372829e-03, +-5.402345387089934128e-03, +-5.410273514590900439e-03, +-5.418192473362270882e-03, +-5.426102250985770717e-03, +-5.434002835058560771e-03, +-5.441894213193411781e-03, +-5.449776373018373928e-03, +-5.457649302177333683e-03, +-5.465512988329747530e-03, +-5.473367419150406039e-03, +-5.481212582330020205e-03, +-5.489048465574826799e-03, +-5.496875056606791328e-03, +-5.504692343163356504e-03, +-5.512500312997871584e-03, +-5.520298953879418900e-03, +-5.528088253592571000e-03, +-5.535868199937990855e-03, +-5.543638780731677262e-03, +-5.551399983806043839e-03, +-5.559151797008732472e-03, +-5.566894208203590835e-03, +-5.574627205270001051e-03, +-5.582350776103506794e-03, +-5.590064908615488028e-03, +-5.597769590732926820e-03, +-5.605464810399332816e-03, +-5.613150555573602658e-03, +-5.620826814230724285e-03, +-5.628493574361828101e-03, +-5.636150823973969277e-03, +-5.643798551090302082e-03, +-5.651436743749758962e-03, +-5.659065390007582234e-03, +-5.666684477935115920e-03, +-5.674293995619511706e-03, +-5.681893931164401154e-03, +-5.689484272689102930e-03, +-5.697065008329705270e-03, +-5.704636126237828259e-03, +-5.712197614581751397e-03, +-5.719749461545596547e-03, +-5.727291655329981926e-03, +-5.734824184151728933e-03, +-5.742347036243627967e-03, +-5.749860199855310987e-03, +-5.757363663252134355e-03, +-5.764857414716189309e-03, +-5.772341442545550830e-03, +-5.779815735054916886e-03, +-5.787280280575313532e-03, +-5.794735067453984749e-03, +-5.802180084054759344e-03, +-5.809615318757843649e-03, +-5.817040759959953358e-03, +-5.824456396074014289e-03, +-5.831862215529708821e-03, +-5.839258206773189665e-03, +-5.846644358266890780e-03, +-5.854020658490089422e-03, +-5.861387095938297258e-03, +-5.868743659123856239e-03, +-5.876090336575674929e-03, +-5.883427116838927523e-03, +-5.890753988476038309e-03, +-5.898070940065433532e-03, +-5.905377960202638603e-03, +-5.912675037499524368e-03, +-5.919962160584899512e-03, +-5.927239318104284178e-03, +-5.934506498719680986e-03, +-5.941763691110098916e-03, +-5.949010883971172538e-03, +-5.956248066015494211e-03, +-5.963475225972120555e-03, +-5.970692352587213432e-03, +-5.977899434623777999e-03, +-5.985096460861379954e-03, +-5.992283420096755284e-03, +-5.999460301143391336e-03, +-6.006627092831808706e-03, +-6.013783784009166591e-03, +-6.020930363539837848e-03, +-6.028066820305109756e-03, +-6.035193143203040900e-03, +-6.042309321148979853e-03, +-6.049415343074879096e-03, +-6.056511197930282073e-03, +-6.063596874681228578e-03, +-6.070672362311177635e-03, +-6.077737649820397735e-03, +-6.084792726226428278e-03, +-6.091837580563970282e-03, +-6.098872201884577605e-03, +-6.105896579257214657e-03, +-6.112910701767963230e-03, +-6.119914558519899336e-03, +-6.126908138633497397e-03, +-6.133891431246365697e-03, +-6.140864425513411183e-03, +-6.147827110606566246e-03, +-6.154779475715258831e-03, +-6.161721510046199064e-03, +-6.168653202823135527e-03, +-6.175574543287441591e-03, +-6.182485520697462295e-03, +-6.189386124329392981e-03, +-6.196276343476280965e-03, +-6.203156167448904169e-03, +-6.210025585575150095e-03, +-6.216884587200541441e-03, +-6.223733161688008858e-03, +-6.230571298417735687e-03, +-6.237398986787576899e-03, +-6.244216216212765055e-03, +-6.251022976126137561e-03, +-6.257819255977762826e-03, +-6.264605045235542222e-03, +-6.271380333384828434e-03, +-6.278145109928370826e-03, +-6.284899364386688399e-03, +-6.291643086297833871e-03, +-6.298376265217517714e-03, +-6.305098890718942480e-03, +-6.311810952392858318e-03, +-6.318512439848131094e-03, +-6.325203342710771816e-03, +-6.331883650624849091e-03, +-6.338553353251826471e-03, +-6.345212440271144443e-03, +-6.351860901379926400e-03, +-6.358498726292859810e-03, +-6.365125904742602141e-03, +-6.371742426479537133e-03, +-6.378348281271904903e-03, +-6.384943458905543469e-03, +-6.391527949184334575e-03, +-6.398101741930030222e-03, +-6.404664826981962961e-03, +-6.411217194197638310e-03, +-6.417758833452312343e-03, +-6.424289734639290067e-03, +-6.430809887669502144e-03, +-6.437319282472083425e-03, +-6.443817908994136159e-03, +-6.450305757200488870e-03, +-6.456782817074231511e-03, +-6.463249078616116125e-03, +-6.469704531845414663e-03, +-6.476149166798913712e-03, +-6.482582973531759302e-03, +-6.489005942117119508e-03, +-6.495418062646055209e-03, +-6.501819325227971118e-03, +-6.508209719990084088e-03, +-6.514589237078171648e-03, +-6.520957866655663002e-03, +-6.527315598904520275e-03, +-6.533662424024576712e-03, +-6.539998332234040618e-03, +-6.546323313769344433e-03, +-6.552637358884932234e-03, +-6.558940457853616214e-03, +-6.565232600966555004e-03, +-6.571513778532856419e-03, +-6.577783980880258334e-03, +-6.584043198354380157e-03, +-6.590291421319661308e-03, +-6.596528640158357687e-03, +-6.602754845271356990e-03, +-6.608970027077854317e-03, +-6.615174176015225539e-03, +-6.621367282539487864e-03, +-6.627549337124717839e-03, +-6.633720330263869272e-03, +-6.639880252467822604e-03, +-6.646029094266223645e-03, +-6.652166846206950153e-03, +-6.658293498856506475e-03, +-6.664409042799852682e-03, +-6.670513468640279671e-03, +-6.676606766999767378e-03, +-6.682688928518742792e-03, +-6.688759943856253422e-03, +-6.694819803689662854e-03, +-6.700868498715149488e-03, +-6.706906019647396883e-03, +-6.712932357219554731e-03, +-6.718947502183537229e-03, +-6.724951445309800165e-03, +-6.730944177387540410e-03, +-6.736925689224414031e-03, +-6.742895971646736646e-03, +-6.748855015499842513e-03, +-6.754802811647330797e-03, +-6.760739350971813229e-03, +-6.766664624374359865e-03, +-6.772578622774983945e-03, +-6.778481337112405962e-03, +-6.784372758343954792e-03, +-6.790252877445872998e-03, +-6.796121685413217955e-03, +-6.801979173259795064e-03, +-6.807825332018133460e-03, +-6.813660152739691583e-03, +-6.819483626494844165e-03, +-6.825295744372586459e-03, +-6.831096497480996545e-03, +-6.836885876946945627e-03, +-6.842663873916318348e-03, +-6.848430479553626812e-03, +-6.854185685042567429e-03, +-6.859929481585750298e-03, +-6.865661860404571708e-03, +-6.871382812739579293e-03, +-6.877092329850057438e-03, +-6.882790403014651774e-03, +-6.888477023530621517e-03, +-6.894152182714498658e-03, +-6.899815871901674239e-03, +-6.905468082446716664e-03, +-6.911108805723232065e-03, +-6.916738033123679547e-03, +-6.922355756060032117e-03, +-6.927961965962976983e-03, +-6.933556654282361370e-03, +-6.939139812487299212e-03, +-6.944711432065962115e-03, +-6.950271504525712928e-03, +-6.955820021392925337e-03, +-6.961356974213283970e-03, +-6.966882354551703731e-03, +-6.972396153992078266e-03, +-6.977898364137781299e-03, +-6.983388976611088102e-03, +-6.988867983053937034e-03, +-6.994335375127105556e-03, +-6.999791144510885896e-03, +-7.005235282904677396e-03, +-7.010667782027291822e-03, +-7.016088633616824125e-03, +-7.021497829430511060e-03, +-7.026895361245271560e-03, +-7.032281220856959059e-03, +-7.037655400081066666e-03, +-7.043017890752210214e-03, +-7.048368684724603574e-03, +-7.053707773871766354e-03, +-7.059035150086478798e-03, +-7.064350805281121790e-03, +-7.069654731387420114e-03, +-7.074946920356578635e-03, +-7.080227364159088869e-03, +-7.085496054785088080e-03, +-7.090752984244179727e-03, +-7.095998144565229641e-03, +-7.101231527796890777e-03, +-7.106453126007001263e-03, +-7.111662931283334668e-03, +-7.116860935732830656e-03, +-7.122047131481988765e-03, +-7.127221510677188461e-03, +-7.132384065484001327e-03, +-7.137534788087840712e-03, +-7.142673670693473406e-03, +-7.147800705525481947e-03, +-7.152915884827990532e-03, +-7.158019200864639865e-03, +-7.163110645918833487e-03, +-7.168190212293610274e-03, +-7.173257892311679998e-03, +-7.178313678315283684e-03, +-7.183357562666507594e-03, +-7.188389537747108017e-03, +-7.193409595958404588e-03, +-7.198417729721603812e-03, +-7.203413931477544926e-03, +-7.208398193686913272e-03, +-7.213370508829946258e-03, +-7.218330869406796788e-03, +-7.223279267937436979e-03, +-7.228215696961436121e-03, +-7.233140149038352722e-03, +-7.238052616747280010e-03, +-7.242953092687551969e-03, +-7.247841569477913269e-03, +-7.252718039757248721e-03, +-7.257582496184051581e-03, +-7.262434931436826877e-03, +-7.267275338214017680e-03, +-7.272103709233671172e-03, +-7.276920037234016307e-03, +-7.281724314973110797e-03, +-7.286516535228804679e-03, +-7.291296690798981447e-03, +-7.296064774501485189e-03, +-7.300820779174094569e-03, +-7.305564697674404862e-03, +-7.310296522880168832e-03, +-7.315016247689093767e-03, +-7.319723865018716580e-03, +-7.324419367806792383e-03, +-7.329102749010822648e-03, +-7.333774001608704858e-03, +-7.338433118597982238e-03, +-7.343080092996544586e-03, +-7.347714917842060149e-03, +-7.352337586192498643e-03, +-7.356948091125818136e-03, +-7.361546425739948565e-03, +-7.366132583153097921e-03, +-7.370706556503464277e-03, +-7.375268338949459573e-03, +-7.379817923669456346e-03, +-7.384355303862082630e-03, +-7.388880472746155170e-03, +-7.393393423560466055e-03, +-7.397894149564157411e-03, +-7.402382644036431709e-03, +-7.406858900276804165e-03, +-7.411322911604820846e-03, +-7.415774671360233009e-03, +-7.420214172903256446e-03, +-7.424641409614018105e-03, +-7.429056374893125078e-03, +-7.433459062161217913e-03, +-7.437849464859334035e-03, +-7.442227576448769838e-03, +-7.446593390411000886e-03, +-7.450946900247857989e-03, +-7.455288099481445670e-03, +-7.459616981654247983e-03, +-7.463933540328863969e-03, +-7.468237769088403172e-03, +-7.472529661536254052e-03, +-7.476809211296045823e-03, +-7.481076412011903459e-03, +-7.485331257348210900e-03, +-7.489573740989808812e-03, +-7.493803856641773412e-03, +-7.498021598029687949e-03, +-7.502226958899551636e-03, +-7.506419933017600965e-03, +-7.510600514170696559e-03, +-7.514768696165880814e-03, +-7.518924472830961631e-03, +-7.523067838013827204e-03, +-7.527198785583047100e-03, +-7.531317309427638940e-03, +-7.535423403456899261e-03, +-7.539517061600868424e-03, +-7.543598277809778103e-03, +-7.547667046054708749e-03, +-7.551723360326885286e-03, +-7.555767214638348453e-03, +-7.559798603021395356e-03, +-7.563817519529012282e-03, +-7.567823958234735048e-03, +-7.571817913232517169e-03, +-7.575799378637001341e-03, +-7.579768348583371985e-03, +-7.583724817227267649e-03, +-7.587668778745073304e-03, +-7.591600227333561261e-03, +-7.595519157210415054e-03, +-7.599425562613577184e-03, +-7.603319437801811173e-03, +-7.607200777054500332e-03, +-7.611069574671506383e-03, +-7.614925824973546760e-03, +-7.618769522301714961e-03, +-7.622600661018144076e-03, +-7.626419235505220093e-03, +-7.630225240166281855e-03, +-7.634018669425204733e-03, +-7.637799517726626131e-03, +-7.641567779535887381e-03, +-7.645323449338902767e-03, +-7.649066521642476114e-03, +-7.652796990974033639e-03, +-7.656514851881800025e-03, +-7.660220098934558165e-03, +-7.663912726722049013e-03, +-7.667592729854710507e-03, +-7.671260102963623796e-03, +-7.674914840700734417e-03, +-7.678556937738751677e-03, +-7.682186388771231923e-03, +-7.685803188512366907e-03, +-7.689407331697183275e-03, +-7.692998813081695225e-03, +-7.696577627442513329e-03, +-7.700143769577180199e-03, +-7.703697234303967523e-03, +-7.707238016462092042e-03, +-7.710766110911625344e-03, +-7.714281512533332531e-03, +-7.717784216228971463e-03, +-7.721274216921125352e-03, +-7.724751509553306854e-03, +-7.728216089089754229e-03, +-7.731667950515745333e-03, +-7.735107088837395520e-03, +-7.738533499081682795e-03, +-7.741947176296557105e-03, +-7.745348115550830179e-03, +-7.748736311934296093e-03, +-7.752111760557606375e-03, +-7.755474456552364539e-03, +-7.758824395071180734e-03, +-7.762161571287493934e-03, +-7.765485980395860771e-03, +-7.768797617611585167e-03, +-7.772096478171177172e-03, +-7.775382557331933162e-03, +-7.778655850372274971e-03, +-7.781916352591469743e-03, +-7.785164059309898806e-03, +-7.788398965868923232e-03, +-7.791621067630789300e-03, +-7.794830359979024875e-03, +-7.798026838317909451e-03, +-7.801210498072863597e-03, +-7.804381334690356151e-03, +-7.807539343637851306e-03, +-7.810684520403959538e-03, +-7.813816860498201677e-03, +-7.816936359451250038e-03, +-7.820043012814859029e-03, +-7.823136816161764540e-03, +-7.826217765085888636e-03, +-7.829285855202105376e-03, +-7.832341082146577343e-03, +-7.835383441576354926e-03, +-7.838412929169763163e-03, +-7.841429540626066938e-03, +-7.844433271665781499e-03, +-7.847424118030535412e-03, +-7.850402075482943928e-03, +-7.853367139807004502e-03, +-7.856319306807604125e-03, +-7.859258572310914848e-03, +-7.862184932164176937e-03, +-7.865098382235879287e-03, +-7.867998918415620643e-03, +-7.870886536614140824e-03, +-7.873761232763386644e-03, +-7.876623002816498034e-03, +-7.879471842747795898e-03, +-7.882307748552714460e-03, +-7.885130716248000757e-03, +-7.887940741871542899e-03, +-7.890737821482382217e-03, +-7.893521951160890199e-03, +-7.896293127008485735e-03, +-7.899051345148051448e-03, +-7.901796601723487870e-03, +-7.904528892899963244e-03, +-7.907248214864001992e-03, +-7.909954563823240123e-03, +-7.912647936006647273e-03, +-7.915328327664328950e-03, +-7.917995735067805824e-03, +-7.920650154509765659e-03, +-7.923291582304174338e-03, +-7.925920014786261986e-03, +-7.928535448312599293e-03, +-7.931137879260989967e-03, +-7.933727304030484609e-03, +-7.936303719041507346e-03, +-7.938867120735758690e-03, +-7.941417505576187780e-03, +-7.943954870047106875e-03, +-7.946479210654121966e-03, +-7.948990523924207366e-03, +-7.951488806405520096e-03, +-7.953974054667673974e-03, +-7.956446265301602566e-03, +-7.958905434919467253e-03, +-7.961351560154900087e-03, +-7.963784637662752255e-03, +-7.966204664119371642e-03, +-7.968611636222304451e-03, +-7.971005550690586638e-03, +-7.973386404264495853e-03, +-7.975754193705742248e-03, +-7.978108915797406039e-03, +-7.980450567343913212e-03, +-7.982779145171091037e-03, +-7.985094646126180210e-03, +-7.987397067077680463e-03, +-7.989686404915626386e-03, +-7.991962656551386199e-03, +-7.994225818917732873e-03, +-7.996475888968778215e-03, +-7.998712863680158477e-03, +-8.000936740048850485e-03, +-8.003147515093249689e-03, +-8.005345185853138951e-03, +-8.007529749389770066e-03, +-8.009701202785849891e-03, +-8.011859543145406770e-03, +-8.014004767594024720e-03, +-8.016136873278581487e-03, +-8.018255857367531311e-03, +-8.020361717050738387e-03, +-8.022454449539430030e-03, +-8.024534052066347595e-03, +-8.026600521885720457e-03, +-8.028653856273177541e-03, +-8.030694052525814974e-03, +-8.032721107962222107e-03, +-8.034735019922453758e-03, +-8.036735785767962562e-03, +-8.038723402881777641e-03, +-8.040697868668346751e-03, +-8.042659180553605666e-03, +-8.044607335984971241e-03, +-8.046542332431360495e-03, +-8.048464167383183668e-03, +-8.050372838352306062e-03, +-8.052268342872119164e-03, +-8.054150678497512886e-03, +-8.056019842804851283e-03, +-8.057875833392066228e-03, +-8.059718647878513428e-03, +-8.061548283905100795e-03, +-8.063364739134258954e-03, +-8.065168011249936042e-03, +-8.066958097957557805e-03, +-8.068734996984102195e-03, +-8.070498706078076817e-03, +-8.072249223009498112e-03, +-8.073986545569900031e-03, +-8.075710671572386076e-03, +-8.077421598851585935e-03, +-8.079119325263608639e-03, +-8.080803848686162263e-03, +-8.082475167018489740e-03, +-8.084133278181356713e-03, +-8.085778180117100117e-03, +-8.087409870789557045e-03, +-8.089028348184160166e-03, +-8.090633610307897822e-03, +-8.092225655189268924e-03, +-8.093804480878395713e-03, +-8.095370085446876307e-03, +-8.096922466987958172e-03, +-8.098461623616345570e-03, +-8.099987553468438947e-03, +-8.101500254702114628e-03, +-8.102999725496834102e-03, +-8.104485964053612795e-03, +-8.105958968595098138e-03, +-8.107418737365508846e-03, +-8.108865268630529102e-03, +-8.110298560677535809e-03, +-8.111718611815485827e-03, +-8.113125420374850058e-03, +-8.114518984707736610e-03, +-8.115899303187774569e-03, +-8.117266374210299618e-03, +-8.118620196192104232e-03, +-8.119960767571626770e-03, +-8.121288086808930648e-03, +-8.122602152385619348e-03, +-8.123902962804917943e-03, +-8.125190516591601977e-03, +-8.126464812292163997e-03, +-8.127725848474516915e-03, +-8.128973623728353096e-03, +-8.130208136664839047e-03, +-8.131429385916775013e-03, +-8.132637370138607116e-03, +-8.133832088006342359e-03, +-8.135013538217591988e-03, +-8.136181719491594050e-03, +-8.137336630569218590e-03, +-8.138478270212863575e-03, +-8.139606637206628359e-03, +-8.140721730356162769e-03, +-8.141823548488739959e-03, +-8.142912090453273757e-03, +-8.143987355120254484e-03, +-8.145049341381799257e-03, +-8.146098048151658930e-03, +-8.147133474365160846e-03, +-8.148155618979295578e-03, +-8.149164480972619778e-03, +-8.150160059345353328e-03, +-8.151142353119301270e-03, +-8.152111361337898918e-03, +-8.153067083066244808e-03, +-8.154009517390942846e-03, +-8.154938663420348635e-03, +-8.155854520284333553e-03, +-8.156757087134485981e-03, +-8.157646363143917015e-03, +-8.158522347507420058e-03, +-8.159385039441413578e-03, +-8.160234438183909880e-03, +-8.161070542994539392e-03, +-8.161893353154576689e-03, +-8.162702867966945691e-03, +-8.163499086756106915e-03, +-8.164282008868230939e-03, +-8.165051633671083914e-03, +-8.165807960553996339e-03, +-8.166550988928031329e-03, +-8.167280718225741754e-03, +-8.167997147901472077e-03, +-8.168700277431006213e-03, +-8.169390106311884975e-03, +-8.170066634063203118e-03, +-8.170729860225703009e-03, +-8.171379784361736467e-03, +-8.172016406055275170e-03, +-8.172639724911948816e-03, +-8.173249740558930637e-03, +-8.173846452645105662e-03, +-8.174429860840904186e-03, +-8.174999964838386771e-03, +-8.175556764351289349e-03, +-8.176100259114896587e-03, +-8.176630448886144237e-03, +-8.177147333443577498e-03, +-8.177650912587335411e-03, +-8.178141186139235852e-03, +-8.178618153942647170e-03, +-8.179081815862564511e-03, +-8.179532171785627165e-03, +-8.179969221620063055e-03, +-8.180392965295685270e-03, +-8.180803402763947574e-03, +-8.181200533997960017e-03, +-8.181584358992292916e-03, +-8.181954877763313386e-03, +-8.182312090348843603e-03, +-8.182655996808393256e-03, +-8.182986597223041586e-03, +-8.183303891695473814e-03, +-8.183607880349998490e-03, +-8.183898563332502388e-03, +-8.184175940810466121e-03, +-8.184440012972972814e-03, +-8.184690780030732388e-03, +-8.184928242216012173e-03, +-8.185152399782664664e-03, +-8.185363253006158746e-03, +-8.185560802183584894e-03, +-8.185745047633554566e-03, +-8.185915989696300812e-03, +-8.186073628733653990e-03, +-8.186217965128987986e-03, +-8.186348999287317366e-03, +-8.186466731635193284e-03, +-8.186571162620778080e-03, +-8.186662292713760281e-03, +-8.186740122405444797e-03, +-8.186804652208700891e-03, +-8.186855882657982988e-03, +-8.186893814309301187e-03, +-8.186918447740210852e-03, +-8.186929783549908024e-03, +-8.186927822359031659e-03, +-8.186912564809904758e-03, +-8.186884011566357422e-03, +-8.186842163313742468e-03, +-8.186787020759042979e-03, +-8.186718584630731793e-03, +-8.186636855678882524e-03, +-8.186541834675053336e-03, +-8.186433522412422253e-03, +-8.186311919705663992e-03, +-8.186177027391017616e-03, +-8.186028846326244904e-03, +-8.185867377390663308e-03, +-8.185692621485106055e-03, +-8.185504579531951638e-03, +-8.185303252475113409e-03, +-8.185088641279997940e-03, +-8.184860746933591766e-03, +-8.184619570444339950e-03, +-8.184365112842257109e-03, +-8.184097375178858019e-03, +-8.183816358527171500e-03, +-8.183522063981723063e-03, +-8.183214492658566139e-03, +-8.182893645695238707e-03, +-8.182559524250820546e-03, +-8.182212129505841286e-03, +-8.181851462662374092e-03, +-8.181477524943948920e-03, +-8.181090317595580280e-03, +-8.180689841883821006e-03, +-8.180276099096646034e-03, +-8.179849090543580767e-03, +-8.179408817555567507e-03, +-8.178955281485041778e-03, +-8.178488483705918452e-03, +-8.178008425613579602e-03, +-8.177515108624871035e-03, +-8.177008534178116170e-03, +-8.176488703733046648e-03, +-8.175955618770922029e-03, +-8.175409280794366726e-03, +-8.174849691327553888e-03, +-8.174276851916007641e-03, +-8.173690764126759212e-03, +-8.173091429548228967e-03, +-8.172478849790325295e-03, +-8.171853026484337049e-03, +-8.171213961282987326e-03, +-8.170561655860445610e-03, +-8.169896111912296546e-03, +-8.169217331155546880e-03, +-8.168525315328538719e-03, +-8.167820066191143827e-03, +-8.167101585524545043e-03, +-8.166369875131371595e-03, +-8.165624936835648787e-03, +-8.164866772482733820e-03, +-8.164095383939445894e-03, +-8.163310773093981204e-03, +-8.162512941855850496e-03, +-8.161701892155993551e-03, +-8.160877625946737560e-03, +-8.160040145201753747e-03, +-8.159189451916019215e-03, +-8.158325548105979999e-03, +-8.157448435809337706e-03, +-8.156558117085242060e-03, +-8.155654594014065395e-03, +-8.154737868697648981e-03, +-8.153807943259087920e-03, +-8.152864819842826558e-03, +-8.151908500614672357e-03, +-8.150938987761686613e-03, +-8.149956283492345785e-03, +-8.148960390036319446e-03, +-8.147951309644692330e-03, +-8.146929044589820354e-03, +-8.145893597165334080e-03, +-8.144844969686187292e-03, +-8.143783164488632709e-03, +-8.142708183930180352e-03, +-8.141620030389609686e-03, +-8.140518706267032070e-03, +-8.139404213983798819e-03, +-8.138276555982515079e-03, +-8.137135734727050235e-03, +-8.135981752702555261e-03, +-8.134814612415429760e-03, +-8.133634316393287267e-03, +-8.132440867184983005e-03, +-8.131234267360657256e-03, +-8.130014519511613927e-03, +-8.128781626250478412e-03, +-8.127535590210975547e-03, +-8.126276414048122163e-03, +-8.125004100438155963e-03, +-8.123718652078436644e-03, +-8.122420071687641921e-03, +-8.121108362005505579e-03, +-8.119783525793107179e-03, +-8.118445565832528577e-03, +-8.117094484927186993e-03, +-8.115730285901560925e-03, +-8.114352971601406991e-03, +-8.112962544893520533e-03, +-8.111559008665891746e-03, +-8.110142365827716082e-03, +-8.108712619309284969e-03, +-8.107269772062010091e-03, +-8.105813827058449411e-03, +-8.104344787292321051e-03, +-8.102862655778411347e-03, +-8.101367435552635568e-03, +-8.099859129672067407e-03, +-8.098337741214798463e-03, +-8.096803273280070087e-03, +-8.095255728988177968e-03, +-8.093695111480538051e-03, +-8.092121423919676135e-03, +-8.090534669489080413e-03, +-8.088934851393369749e-03, +-8.087321972858226016e-03, +-8.085696037130407979e-03, +-8.084057047477671495e-03, +-8.082405007188785129e-03, +-8.080739919573668925e-03, +-8.079061787963161961e-03, +-8.077370615709145510e-03, +-8.075666406184549978e-03, +-8.073949162783280314e-03, +-8.072218888920278460e-03, +-8.070475588031433140e-03, +-8.068719263573649256e-03, +-8.066949919024846150e-03, +-8.065167557883858723e-03, +-8.063372183670479074e-03, +-8.061563799925564044e-03, +-8.059742410210821856e-03, +-8.057908018108928330e-03, +-8.056060627223580670e-03, +-8.054200241179271941e-03, +-8.052326863621575570e-03, +-8.050440498216826155e-03, +-8.048541148652423038e-03, +-8.046628818636549288e-03, +-8.044703511898395470e-03, +-8.042765232187963631e-03, +-8.040813983276152294e-03, +-8.038849768954806768e-03, +-8.036872593036524862e-03, +-8.034882459354885861e-03, +-8.032879371764240634e-03, +-8.030863334139874687e-03, +-8.028834350377819090e-03, +-8.026792424394980571e-03, +-8.024737560129155400e-03, +-8.022669761538861119e-03, +-8.020589032603444093e-03, +-8.018495377323154108e-03, +-8.016388799718920585e-03, +-8.014269303832545141e-03, +-8.012136893726521172e-03, +-8.009991573484224678e-03, +-8.007833347209700886e-03, +-8.005662219027862014e-03, +-8.003478193084275633e-03, +-8.001281273545261807e-03, +-7.999071464597972900e-03, +-7.996848770450171520e-03, +-7.994613195330416144e-03, +-7.992364743487901518e-03, +-7.990103419192692846e-03, +-7.987829226735347621e-03, +-7.985542170427210526e-03, +-7.983242254600356191e-03, +-7.980929483607445210e-03, +-7.978603861821843835e-03, +-7.976265393637547649e-03, +-7.973914083469259631e-03, +-7.971549935752279131e-03, +-7.969172954942512280e-03, +-7.966783145516570866e-03, +-7.964380511971581519e-03, +-7.961965058825442448e-03, +-7.959536790616403637e-03, +-7.957095711903491853e-03, +-7.954641827266359724e-03, +-7.952175141305018596e-03, +-7.949695658640246188e-03, +-7.947203383913253524e-03, +-7.944698321785913925e-03, +-7.942180476940544423e-03, +-7.939649854080001179e-03, +-7.937106457927729786e-03, +-7.934550293227655982e-03, +-7.931981364744168303e-03, +-7.929399677262184004e-03, +-7.926805235587162934e-03, +-7.924198044544963557e-03, +-7.921578108981941826e-03, +-7.918945433764965069e-03, +-7.916300023781280143e-03, +-7.913641883938614049e-03, +-7.910971019165081997e-03, +-7.908287434409324440e-03, +-7.905591134640333612e-03, +-7.902882124847462192e-03, +-7.900160410040601988e-03, +-7.897425995249878622e-03, +-7.894678885525960310e-03, +-7.891919085939686634e-03, +-7.889146601582424159e-03, +-7.886361437565827040e-03, +-7.883563599021935903e-03, +-7.880753091103049474e-03, +-7.877929918981859889e-03, +-7.875094087851360752e-03, +-7.872245602924834995e-03, +-7.869384469435842730e-03, +-7.866510692638299315e-03, +-7.863624277806369536e-03, +-7.860725230234458932e-03, +-7.857813555237196448e-03, +-7.854889258149583622e-03, +-7.851952344326786418e-03, +-7.849002819144154305e-03, +-7.846040687997367716e-03, +-7.843065956302188238e-03, +-7.840078629494781279e-03, +-7.837078713031209523e-03, +-7.834066212387981107e-03, +-7.831041133061624610e-03, +-7.828003480568907629e-03, +-7.824953260446715353e-03, +-7.821890478252043616e-03, +-7.818815139562101252e-03, +-7.815727249974183458e-03, +-7.812626815105649242e-03, +-7.809513840593949180e-03, +-7.806388332096789347e-03, +-7.803250295291770493e-03, +-7.800099735876606620e-03, +-7.796936659569163146e-03, +-7.793761072107273022e-03, +-7.790572979248806991e-03, +-7.787372386771667515e-03, +-7.784159300473880716e-03, +-7.780933726173332697e-03, +-7.777695669707968169e-03, +-7.774445136935752287e-03, +-7.771182133734571770e-03, +-7.767906666002422252e-03, +-7.764618739656965925e-03, +-7.761318360636080584e-03, +-7.758005534897529157e-03, +-7.754680268418941494e-03, +-7.751342567197828243e-03, +-7.747992437251668453e-03, +-7.744629884617854065e-03, +-7.741254915353623992e-03, +-7.737867535536041563e-03, +-7.734467751262151525e-03, +-7.731055568648755386e-03, +-7.727630993832478208e-03, +-7.724194032969823251e-03, +-7.720744692237127733e-03, +-7.717282977830496049e-03, +-7.713808895965779816e-03, +-7.710322452878767829e-03, +-7.706823654824839984e-03, +-7.703312508079332432e-03, +-7.699789018937072682e-03, +-7.696253193712901744e-03, +-7.692705038741210963e-03, +-7.689144560376130234e-03, +-7.685571764991620813e-03, +-7.681986658981150920e-03, +-7.678389248758090389e-03, +-7.674779540755202398e-03, +-7.671157541425185564e-03, +-7.667523257240179552e-03, +-7.663876694692117221e-03, +-7.660217860292489571e-03, +-7.656546760572343138e-03, +-7.652863402082441327e-03, +-7.649167791393082262e-03, +-7.645459935094090116e-03, +-7.641739839794991183e-03, +-7.638007512124720712e-03, +-7.634262958731932551e-03, +-7.630506186284574145e-03, +-7.626737201470341898e-03, +-7.622956010996323820e-03, +-7.619162621589097538e-03, +-7.615357039994835250e-03, +-7.611539272979036576e-03, +-7.607709327326837336e-03, +-7.603867209842576740e-03, +-7.600012927350273569e-03, +-7.596146486693238463e-03, +-7.592267894734263008e-03, +-7.588377158355502639e-03, +-7.584474284458475775e-03, +-7.580559279964175709e-03, +-7.576632151812879787e-03, +-7.572692906964215327e-03, +-7.568741552397139673e-03, +-7.564778095110067692e-03, +-7.560802542120600295e-03, +-7.556814900465627649e-03, +-7.552815177201442805e-03, +-7.548803379403562150e-03, +-7.544779514166738421e-03, +-7.540743588604978051e-03, +-7.536695609851606220e-03, +-7.532635585059160171e-03, +-7.528563521399238290e-03, +-7.524479426062916435e-03, +-7.520383306260194564e-03, +-7.516275169220482458e-03, +-7.512155022192187719e-03, +-7.508022872442885777e-03, +-7.503878727259453464e-03, +-7.499722593947719465e-03, +-7.495554479832678557e-03, +-7.491374392258406609e-03, +-7.487182338588208030e-03, +-7.482978326204280974e-03, +-7.478762362507963661e-03, +-7.474534454919693621e-03, +-7.470294610878907074e-03, +-7.466042837844015512e-03, +-7.461779143292463813e-03, +-7.457503534720818714e-03, +-7.453216019644481709e-03, +-7.448916605597832169e-03, +-7.444605300134362648e-03, +-7.440282110826285968e-03, +-7.435947045265036554e-03, +-7.431600111060616444e-03, +-7.427241315842265761e-03, +-7.422870667257876372e-03, +-7.418488172974390879e-03, +-7.414093840677535470e-03, +-7.409687678071833795e-03, +-7.405269692880868913e-03, +-7.400839892846702156e-03, +-7.396398285730555744e-03, +-7.391944879312222112e-03, +-7.387479681390421264e-03, +-7.383002699782576991e-03, +-7.378513942324783914e-03, +-7.374013416872125803e-03, +-7.369501131298215012e-03, +-7.364977093495372017e-03, +-7.360441311374779812e-03, +-7.355893792866140431e-03, +-7.351334545918054852e-03, +-7.346763578497456613e-03, +-7.342180898590264064e-03, +-7.337586514200800970e-03, +-7.332980433352173817e-03, +-7.328362664085972568e-03, +-7.323733214462399034e-03, +-7.319092092560385704e-03, +-7.314439306477140378e-03, +-7.309774864328733371e-03, +-7.305098774249532863e-03, +-7.300411044392616025e-03, +-7.295711682929460241e-03, +-7.291000698049981271e-03, +-7.286278097962768305e-03, +-7.281543890894717937e-03, +-7.276798085091231924e-03, +-7.272040688816096624e-03, +-7.267271710351666872e-03, +-7.262491157998565879e-03, +-7.257699040075791044e-03, +-7.252895364920901311e-03, +-7.248080140889613839e-03, +-7.243253376356255033e-03, +-7.238415079713107422e-03, +-7.233565259371086201e-03, +-7.228703923759466007e-03, +-7.223831081325438573e-03, +-7.218946740534862988e-03, +-7.214050909871635130e-03, +-7.209143597838074506e-03, +-7.204224812954585118e-03, +-7.199294563759789899e-03, +-7.194352858810679034e-03, +-7.189399706682297712e-03, +-7.184435115967866686e-03, +-7.179459095278777070e-03, +-7.174471653244671003e-03, +-7.169472798513220474e-03, +-7.164462539750176759e-03, +-7.159440885639538690e-03, +-7.154407844883275101e-03, +-7.149363426201455797e-03, +-7.144307638332144869e-03, +-7.139240490031648761e-03, +-7.134161990074087793e-03, +-7.129072147251626010e-03, +-7.123970970374582205e-03, +-7.118858468271041344e-03, +-7.113734649787326406e-03, +-7.108599523787322710e-03, +-7.103453099153245534e-03, +-7.098295384784921065e-03, +-7.093126389600344986e-03, +-7.087946122535240985e-03, +-7.082754592543160505e-03, +-7.077551808595724733e-03, +-7.072337779682212611e-03, +-7.067112514809730829e-03, +-7.061876023003362153e-03, +-7.056628313305841893e-03, +-7.051369394777730511e-03, +-7.046099276497275708e-03, +-7.040817967560681311e-03, +-7.035525477081693534e-03, +-7.030221814191801345e-03, +-7.024906988040303252e-03, +-7.019581007794067906e-03, +-7.014243882637823807e-03, +-7.008895621773617197e-03, +-7.003536234421469525e-03, +-6.998165729818808453e-03, +-6.992784117220873785e-03, +-6.987391405900328888e-03, +-6.981987605147400335e-03, +-6.976572724270087809e-03, +-6.971146772593703536e-03, +-6.965709759461186264e-03, +-6.960261694232915651e-03, +-6.954802586286979414e-03, +-6.949332445018719696e-03, +-6.943851279840955112e-03, +-6.938359100184183711e-03, +-6.932855915496089448e-03, +-6.927341735241861372e-03, +-6.921816568904026225e-03, +-6.916280425982684367e-03, +-6.910733315995121195e-03, +-6.905175248475957199e-03, +-6.899606232977332707e-03, +-6.894026279068509767e-03, +-6.888435396336284149e-03, +-6.882833594384374712e-03, +-6.877220882834096487e-03, +-6.871597271323968623e-03, +-6.865962769509644133e-03, +-6.860317387064010508e-03, +-6.854661133677164564e-03, +-6.848994019056514788e-03, +-6.843316052926488174e-03, +-6.837627245028668997e-03, +-6.831927605121941062e-03, +-6.826217142982113871e-03, +-6.820495868402215792e-03, +-6.814763791192276349e-03, +-6.809020921179533524e-03, +-6.803267268208170945e-03, +-6.797502842139356918e-03, +-6.791727652851509839e-03, +-6.785941710239742214e-03, +-6.780145024216519857e-03, +-6.774337604710792791e-03, +-6.768519461668974502e-03, +-6.762690605054081511e-03, +-6.756851044846091600e-03, +-6.751000791042068711e-03, +-6.745139853655730128e-03, +-6.739268242717921797e-03, +-6.733385968275950456e-03, +-6.727493040394366859e-03, +-6.721589469154245003e-03, +-6.715675264653709481e-03, +-6.709750437007440220e-03, +-6.703814996346934424e-03, +-6.697868952820571625e-03, +-6.691912316593350875e-03, +-6.685945097846882935e-03, +-6.679967306779752839e-03, +-6.673978953606910132e-03, +-6.667980048560313323e-03, +-6.661970601888133649e-03, +-6.655950623855554776e-03, +-6.649920124744182134e-03, +-6.643879114852168678e-03, +-6.637827604494442139e-03, +-6.631765604002233180e-03, +-6.625693123723652191e-03, +-6.619610174022836670e-03, +-6.613516765280913132e-03, +-6.607412907895157499e-03, +-6.601298612279584907e-03, +-6.595173888864430158e-03, +-6.589038748096394914e-03, +-6.582893200438806429e-03, +-6.576737256371142232e-03, +-6.570570926389358857e-03, +-6.564394221005696688e-03, +-6.558207150748947972e-03, +-6.552009726164017070e-03, +-6.545801957812122547e-03, +-6.539583856270992333e-03, +-6.533355432134383203e-03, +-6.527116696012417313e-03, +-6.520867658531336736e-03, +-6.514608330333871225e-03, +-6.508338722078672693e-03, +-6.502058844440630064e-03, +-6.495768708110966419e-03, +-6.489468323796806180e-03, +-6.483157702221628745e-03, +-6.476836854124890311e-03, +-6.470505790262057709e-03, +-6.464164521404937996e-03, +-6.457813058341127684e-03, +-6.451451411874416057e-03, +-6.445079592824427828e-03, +-6.438697612027094973e-03, +-6.432305480334064331e-03, +-6.425903208612963879e-03, +-6.419490807747573607e-03, +-6.413068288637399639e-03, +-6.406635662197896278e-03, +-6.400192939360365395e-03, +-6.393740131072193217e-03, +-6.387277248296366339e-03, +-6.380804302011744075e-03, +-6.374321303213204178e-03, +-6.367828262911117213e-03, +-6.361325192132033512e-03, +-6.354812101917708261e-03, +-6.348289003326162278e-03, +-6.341755907430776489e-03, +-6.335212825320927707e-03, +-6.328659768101457805e-03, +-6.322096746892863668e-03, +-6.315523772831589493e-03, +-6.308940857069202796e-03, +-6.302348010773377134e-03, +-6.295745245127003058e-03, +-6.289132571328869860e-03, +-6.282510000593047143e-03, +-6.275877544149184063e-03, +-6.269235213242653308e-03, +-6.262583019134089664e-03, +-6.255920973099584302e-03, +-6.249249086430971011e-03, +-6.242567370435157456e-03, +-6.235875836434870249e-03, +-6.229174495767729469e-03, +-6.222463359787235720e-03, +-6.215742439861881088e-03, +-6.209011747375788384e-03, +-6.202271293728203738e-03, +-6.195521090333665735e-03, +-6.188761148622290778e-03, +-6.181991480038960367e-03, +-6.175212096044272597e-03, +-6.168423008113725105e-03, +-6.161624227738328290e-03, +-6.154815766424005102e-03, +-6.147997635691881610e-03, +-6.141169847078480418e-03, +-6.134332412135172496e-03, +-6.127485342428545811e-03, +-6.120628649540209298e-03, +-6.113762345067043531e-03, +-6.106886440620788725e-03, +-6.100000947828198260e-03, +-6.093105878331242509e-03, +-6.086201243786613577e-03, +-6.079287055866349800e-03, +-6.072363326256894657e-03, +-6.065430066660106381e-03, +-6.058487288792731469e-03, +-6.051535004385976205e-03, +-6.044573225186418257e-03, +-6.037601962955173145e-03, +-6.030621229468412052e-03, +-6.023631036516980189e-03, +-6.016631395906442761e-03, +-6.009622319457401558e-03, +-6.002603819005003158e-03, +-5.995575906399156635e-03, +-5.988538593504464172e-03, +-5.981491892200423155e-03, +-5.974435814380972543e-03, +-5.967370371954727054e-03, +-5.960295576845130693e-03, +-5.953211440990071636e-03, +-5.946117976342041832e-03, +-5.939015194868086690e-03, +-5.931903108549998506e-03, +-5.924781729383900991e-03, +-5.917651069380416677e-03, +-5.910511140564900234e-03, +-5.903361954976874687e-03, +-5.896203524670694945e-03, +-5.889035861714592840e-03, +-5.881858978191796018e-03, +-5.874672886199525275e-03, +-5.867477597849640736e-03, +-5.860273125268188228e-03, +-5.853059480595481680e-03, +-5.845836675986439655e-03, +-5.838604723610022439e-03, +-5.831363635649481833e-03, +-5.824113424302309987e-03, +-5.816854101780455366e-03, +-5.809585680309807543e-03, +-5.802308172130461739e-03, +-5.795021589496928728e-03, +-5.787725944677616155e-03, +-5.780421249955057517e-03, +-5.773107517626137677e-03, +-5.765784760001508268e-03, +-5.758452989406279837e-03, +-5.751112218179071228e-03, +-5.743762458673033929e-03, +-5.736403723254978639e-03, +-5.729036024305970282e-03, +-5.721659374220843149e-03, +-5.714273785408324931e-03, +-5.706879270291340296e-03, +-5.699475841306455778e-03, +-5.692063510904198098e-03, +-5.684642291548855537e-03, +-5.677212195718817078e-03, +-5.669773235906049383e-03, +-5.662325424616291951e-03, +-5.654868774369318195e-03, +-5.647403297698391604e-03, +-5.639929007150604884e-03, +-5.632445915286669186e-03, +-5.624954034681245441e-03, +-5.617453377922408328e-03, +-5.609943957611860516e-03, +-5.602425786365218888e-03, +-5.594898876811331065e-03, +-5.587363241593075978e-03, +-5.579818893366293546e-03, +-5.572265844800882752e-03, +-5.564704108580159798e-03, +-5.557133697400785249e-03, +-5.549554623972988675e-03, +-5.541966901020343138e-03, +-5.534370541280121680e-03, +-5.526765557502796855e-03, +-5.519151962452161289e-03, +-5.511529768905698047e-03, +-5.503898989653960468e-03, +-5.496259637500901761e-03, +-5.488611725263717149e-03, +-5.480955265773133564e-03, +-5.473290271872863211e-03, +-5.465616756419934032e-03, +-5.457934732284755626e-03, +-5.450244212350669956e-03, +-5.442545209514593196e-03, +-5.434837736685983571e-03, +-5.427121806788073877e-03, +-5.419397432756834117e-03, +-5.411664627541322783e-03, +-5.403923404103972220e-03, +-5.396173775419852228e-03, +-5.388415754477547844e-03, +-5.380649354278010076e-03, +-5.372874587835790167e-03, +-5.365091468177971869e-03, +-5.357300008344911303e-03, +-5.349500221389622001e-03, +-5.341692120378048990e-03, +-5.333875718389216244e-03, +-5.326051028514779996e-03, +-5.318218063859216083e-03, +-5.310376837540066279e-03, +-5.302527362687312062e-03, +-5.294669652444128349e-03, +-5.286803719965826182e-03, +-5.278929578421066166e-03, +-5.271047240990827179e-03, +-5.263156720868799286e-03, +-5.255258031261546801e-03, +-5.247351185387954912e-03, +-5.239436196479956530e-03, +-5.231513077781418594e-03, +-5.223581842549434445e-03, +-5.215642504053165027e-03, +-5.207695075574683696e-03, +-5.199739570408268459e-03, +-5.191776001860678655e-03, +-5.183804383251425577e-03, +-5.175824727912143632e-03, +-5.167837049186996268e-03, +-5.159841360432414030e-03, +-5.151837675017520435e-03, +-5.143826006323464102e-03, +-5.135806367743727535e-03, +-5.127778772684366514e-03, +-5.119743234563445440e-03, +-5.111699766811382550e-03, +-5.103648382870700113e-03, +-5.095589096196447704e-03, +-5.087521920255569027e-03, +-5.079446868527170804e-03, +-5.071363954502782108e-03, +-5.063273191685681296e-03, +-5.055174593591715664e-03, +-5.047068173748140915e-03, +-5.038953945694848481e-03, +-5.030831922983636934e-03, +-5.022702119178136526e-03, +-5.014564547854070270e-03, +-5.006419222599011939e-03, +-4.998266157012773783e-03, +-4.990105364706779421e-03, +-4.981936859304370892e-03, +-4.973760654441020286e-03, +-4.965576763763792853e-03, +-4.957385200931635830e-03, +-4.949185979615261348e-03, +-4.940979113497392765e-03, +-4.932764616272246848e-03, +-4.924542501645800922e-03, +-4.916312783335968079e-03, +-4.908075475072042927e-03, +-4.899830590595395489e-03, +-4.891578143658432964e-03, +-4.883318148025805362e-03, +-4.875050617473309159e-03, +-4.866775565788685268e-03, +-4.858493006770932959e-03, +-4.850202954230601292e-03, +-4.841905421990112639e-03, +-4.833600423882714915e-03, +-4.825287973753768743e-03, +-4.816968085459618146e-03, +-4.808640772868374644e-03, +-4.800306049859276274e-03, +-4.791963930322906164e-03, +-4.783614428161516059e-03, +-4.775257557288349781e-03, +-4.766893331627982365e-03, +-4.758521765116519552e-03, +-4.750142871700978493e-03, +-4.741756665340038021e-03, +-4.733363160002963116e-03, +-4.724962369670814878e-03, +-4.716554308335393214e-03, +-4.708138989999963685e-03, +-4.699716428678641679e-03, +-4.691286638396637010e-03, +-4.682849633190598257e-03, +-4.674405427107568463e-03, +-4.665954034206248012e-03, +-4.657495468555888744e-03, +-4.649029744237048560e-03, +-4.640556875340999879e-03, +-4.632076875969914388e-03, +-4.623589760237175293e-03, +-4.615095542266706846e-03, +-4.606594236193449661e-03, +-4.598085856163038054e-03, +-4.589570416332229390e-03, +-4.581047930868238811e-03, +-4.572518413949087923e-03, +-4.563981879763803415e-03, +-4.555438342511743122e-03, +-4.546887816403423488e-03, +-4.538330315659395466e-03, +-4.529765854511482240e-03, +-4.521194447201769620e-03, +-4.512616107982937372e-03, +-4.504030851118496007e-03, +-4.495438690882172690e-03, +-4.486839641558560896e-03, +-4.478233717442503710e-03, +-4.469620932839288123e-03, +-4.461001302064961614e-03, +-4.452374839445703315e-03, +-4.443741559318230804e-03, +-4.435101476029497392e-03, +-4.426454603937138819e-03, +-4.417800957408822733e-03, +-4.409140550822537516e-03, +-4.400473398566842088e-03, +-4.391799515040270899e-03, +-4.383118914651694745e-03, +-4.374431611820121281e-03, +-4.365737620975008136e-03, +-4.357036956555723414e-03, +-4.348329633011748657e-03, +-4.339615664802996299e-03, +-4.330895066399098429e-03, +-4.322167852280216042e-03, +-4.313434036935908863e-03, +-4.304693634866406035e-03, +-4.295946660581483750e-03, +-4.287193128601271899e-03, +-4.278433053455554975e-03, +-4.269666449684047897e-03, +-4.260893331836688308e-03, +-4.252113714472963504e-03, +-4.243327612162330238e-03, +-4.234535039483981397e-03, +-4.225736011027207695e-03, +-4.216930541390804393e-03, +-4.208118645183295953e-03, +-4.199300337023272565e-03, +-4.190475631538694533e-03, +-4.181644543367277374e-03, +-4.172807087156614123e-03, +-4.163963277563612411e-03, +-4.155113129255252544e-03, +-4.146256656907411353e-03, +-4.137393875206229164e-03, +-4.128524798846900691e-03, +-4.119649442534532857e-03, +-4.110767820983405804e-03, +-4.101879948917305958e-03, +-4.092985841069721187e-03, +-4.084085512183289156e-03, +-4.075178977010140806e-03, +-4.066266250311653153e-03, +-4.057347346858879503e-03, +-4.048422281431882444e-03, +-4.039491068820031359e-03, +-4.030553723822235743e-03, +-4.021610261246394424e-03, +-4.012660695909717364e-03, +-4.003705042638496664e-03, +-3.994743316268518571e-03, +-3.985775531644415552e-03, +-3.976801703619956864e-03, +-3.967821847058286208e-03, +-3.958835976831248660e-03, +-3.949844107820225936e-03, +-3.940846254914928161e-03, +-3.931842433014698379e-03, +-3.922832657027714581e-03, +-3.913816941870935928e-03, +-3.904795302470345612e-03, +-3.895767753760723175e-03, +-3.886734310686033086e-03, +-3.877694988198806311e-03, +-3.868649801260381008e-03, +-3.859598764841227787e-03, +-3.850541893920275335e-03, +-3.841479203485315044e-03, +-3.832410708532791102e-03, +-3.823336424068114921e-03, +-3.814256365105110885e-03, +-3.805170546666254879e-03, +-3.796078983782944904e-03, +-3.786981691494788541e-03, +-3.777878684850493295e-03, +-3.768769978906598948e-03, +-3.759655588728906973e-03, +-3.750535529391302650e-03, +-3.741409815976155361e-03, +-3.732278463574610888e-03, +-3.723141487285838973e-03, +-3.713998902217908928e-03, +-3.704850723486587463e-03, +-3.695696966216701317e-03, +-3.686537645540891289e-03, +-3.677372776600529043e-03, +-3.668202374544955562e-03, +-3.659026454531785592e-03, +-3.649845031727144435e-03, +-3.640658121305092448e-03, +-3.631465738447847529e-03, +-3.622267898346111670e-03, +-3.613064616198301618e-03, +-3.603855907211453956e-03, +-3.594641786599990854e-03, +-3.585422269587073586e-03, +-3.576197371403512688e-03, +-3.566967107288127048e-03, +-3.557731492488010183e-03, +-3.548490542257838522e-03, +-3.539244271860673714e-03, +-3.529992696566832018e-03, +-3.520735831655181450e-03, +-3.511473692411968672e-03, +-3.502206294131652523e-03, +-3.492933652116211873e-03, +-3.483655781675411463e-03, +-3.474372698127058210e-03, +-3.465084416796398829e-03, +-3.455790953016481953e-03, +-3.446492322127935656e-03, +-3.437188539479359064e-03, +-3.427879620426652323e-03, +-3.418565580333349230e-03, +-3.409246434570845346e-03, +-3.399922198517797787e-03, +-3.390592887560494716e-03, +-3.381258517092611184e-03, +-3.371919102515624159e-03, +-3.362574659238144227e-03, +-3.353225202676220033e-03, +-3.343870748253602830e-03, +-3.334511311401005314e-03, +-3.325146907557017129e-03, +-3.315777552166828106e-03, +-3.306403260683539718e-03, +-3.297024048567442564e-03, +-3.287639931285847670e-03, +-3.278250924313403508e-03, +-3.268857043131869183e-03, +-3.259458303230458771e-03, +-3.250054720105244148e-03, +-3.240646309259404782e-03, +-3.231233086203539988e-03, +-3.221815066455003661e-03, +-3.212392265538303697e-03, +-3.202964698984855658e-03, +-3.193532382333381329e-03, +-3.184095331129269037e-03, +-3.174653560924839066e-03, +-3.165207087279654167e-03, +-3.155755925759745010e-03, +-3.146300091938517875e-03, +-3.136839601395514324e-03, +-3.127374469717804188e-03, +-3.117904712498723550e-03, +-3.108430345338817572e-03, +-3.098951383845013462e-03, +-3.089467843630984336e-03, +-3.079979740317490954e-03, +-3.070487089531228567e-03, +-3.060989906906268470e-03, +-3.051488208082746116e-03, +-3.041982008707832131e-03, +-3.032471324434916557e-03, +-3.022956170923923273e-03, +-3.013436563841611834e-03, +-3.003912518860894863e-03, +-2.994384051661144221e-03, +-2.984851177928485051e-03, +-2.975313913355016448e-03, +-2.965772273639733902e-03, +-2.956226274487269885e-03, +-2.946675931609306354e-03, +-2.937121260723297989e-03, +-2.927562277553406780e-03, +-2.917998997829709257e-03, +-2.908431437288523918e-03, +-2.898859611672787231e-03, +-2.889283536730850605e-03, +-2.879703228217967044e-03, +-2.870118701894971459e-03, +-2.860529973529219588e-03, +-2.850937058893823848e-03, +-2.841339973767923952e-03, +-2.831738733937010869e-03, +-2.822133355192232938e-03, +-2.812523853330821735e-03, +-2.802910244155823200e-03, +-2.793292543476539550e-03, +-2.783670767107812409e-03, +-2.774044930870368450e-03, +-2.764415050591078303e-03, +-2.754781142102178532e-03, +-2.745143221242257823e-03, +-2.735501303854882219e-03, +-2.725855405790115604e-03, +-2.716205542903275469e-03, +-2.706551731055389584e-03, +-2.696893986113439289e-03, +-2.687232323949602722e-03, +-2.677566760442097026e-03, +-2.667897311474386017e-03, +-2.658223992935475951e-03, +-2.648546820720242088e-03, +-2.638865810728703576e-03, +-2.629180978866461037e-03, +-2.619492341044479290e-03, +-2.609799913179437336e-03, +-2.600103711193088238e-03, +-2.590403751012550129e-03, +-2.580700048570611516e-03, +-2.570992619805052143e-03, +-2.561281480659028959e-03, +-2.551566647080871428e-03, +-2.541848135024466632e-03, +-2.532125960448567119e-03, +-2.522400139317134381e-03, +-2.512670687599586911e-03, +-2.502937621270069028e-03, +-2.493200956308338177e-03, +-2.483460708698495990e-03, +-2.473716894430437636e-03, +-2.463969529498559897e-03, +-2.454218629902683597e-03, +-2.444464211647260406e-03, +-2.434706290741727158e-03, +-2.424944883200729623e-03, +-2.415180005043505388e-03, +-2.405411672294255083e-03, +-2.395639900981926407e-03, +-2.385864707140595772e-03, +-2.376086106808811271e-03, +-2.366304116029883681e-03, +-2.356518750852176596e-03, +-2.346730027328458069e-03, +-2.336937961516156494e-03, +-2.327142569477709273e-03, +-2.317343867279725821e-03, +-2.307541870993988064e-03, +-2.297736596696073070e-03, +-2.287928060466894349e-03, +-2.278116278391331857e-03, +-2.268301266559203874e-03, +-2.258483041064486812e-03, +-2.248661618005587566e-03, +-2.238837013485677017e-03, +-2.229009243611980960e-03, +-2.219178324496210320e-03, +-2.209344272254309613e-03, +-2.199507103006852898e-03, +-2.189666832878398896e-03, +-2.179823477997748157e-03, +-2.169977054498280471e-03, +-2.160127578517253167e-03, +-2.150275066196207473e-03, +-2.140419533680737799e-03, +-2.130560997120913274e-03, +-2.120699472670554801e-03, +-2.110834976487575496e-03, +-2.100967524734265179e-03, +-2.091097133576499782e-03, +-2.081223819184704112e-03, +-2.071347597732506578e-03, +-2.061468485398140846e-03, +-2.051586498363646132e-03, +-2.041701652814735795e-03, +-2.031813964941106554e-03, +-2.021923450936172206e-03, +-2.012030126997507717e-03, +-2.002134009326128443e-03, +-1.992235114126817124e-03, +-1.982333457608423128e-03, +-1.972429055983165522e-03, +-1.962521925467059815e-03, +-1.952612082279668376e-03, +-1.942699542644509610e-03, +-1.932784322788370143e-03, +-1.922866438941611862e-03, +-1.912945907338476585e-03, +-1.903022744216294367e-03, +-1.893096965816430449e-03, +-1.883168588382951036e-03, +-1.873237628164138796e-03, +-1.863304101411254483e-03, +-1.853368024378934404e-03, +-1.843429413325521973e-03, +-1.833488284512253472e-03, +-1.823544654204217351e-03, +-1.813598538669025650e-03, +-1.803649954178311501e-03, +-1.793698917006377770e-03, +-1.783745443431192365e-03, +-1.773789549733555126e-03, +-1.763831252197412035e-03, +-1.753870567110176132e-03, +-1.743907510762022573e-03, +-1.733942099446295418e-03, +-1.723974349459287108e-03, +-1.714004277100523825e-03, +-1.704031898672623245e-03, +-1.694057230480521502e-03, +-1.684080288832849040e-03, +-1.674101090040714789e-03, +-1.664119650418106455e-03, +-1.654135986282199294e-03, +-1.644150113952566605e-03, +-1.634162049752130134e-03, +-1.624171810005814150e-03, +-1.614179411042073083e-03, +-1.604184869191534104e-03, +-1.594188200787951442e-03, +-1.584189422167434861e-03, +-1.574188549668728088e-03, +-1.564185599633525180e-03, +-1.554180588405786609e-03, +-1.544173532332137168e-03, +-1.534164447761635248e-03, +-1.524153351046184188e-03, +-1.514140258539825590e-03, +-1.504125186599078240e-03, +-1.494108151583211546e-03, +-1.484089169853568344e-03, +-1.474068257773982751e-03, +-1.464045431710529277e-03, +-1.454020708031932875e-03, +-1.443994103108889142e-03, +-1.433965633314363127e-03, +-1.423935315023900066e-03, +-1.413903164614810923e-03, +-1.403869198467155551e-03, +-1.393833432962384182e-03, +-1.383795884484748844e-03, +-1.373756569420498015e-03, +-1.363715504157748904e-03, +-1.353672705086776283e-03, +-1.343628188599781548e-03, +-1.333581971091306459e-03, +-1.323534068957526880e-03, +-1.313484498596575881e-03, +-1.303433276408841454e-03, +-1.293380418796271757e-03, +-1.283325942162804028e-03, +-1.273269862914101335e-03, +-1.263212197457980190e-03, +-1.253152962203709286e-03, +-1.243092173562328684e-03, +-1.233029847946936911e-03, +-1.222966001771906433e-03, +-1.212900651453849461e-03, +-1.202833813410246434e-03, +-1.192765504060995779e-03, +-1.182695739827043261e-03, +-1.172624537131343242e-03, +-1.162551912398076528e-03, +-1.152477882052945933e-03, +-1.142402462523592387e-03, +-1.132325670238345508e-03, +-1.122247521627759044e-03, +-1.112168033123247602e-03, +-1.102087221158056136e-03, +-1.092005102166458295e-03, +-1.081921692584062377e-03, +-1.071837008848125104e-03, +-1.061751067396845801e-03, +-1.051663884669674313e-03, +-1.041575477107637131e-03, +-1.031485861152503210e-03, +-1.021395053247778177e-03, +-1.011303069837336073e-03, +-1.001209927366952844e-03, +-9.911156422829415537e-04, +-9.810202310331292419e-04, +-9.709237100660468144e-04, +-9.608260958312398814e-04, +-9.507274047796973430e-04, +-9.406276533625695371e-04, +-9.305268580327387060e-04, +-9.204250352434293746e-04, +-9.103222014491909632e-04, +-9.002183731050981876e-04, +-8.901135666670458545e-04, +-8.800077985920717362e-04, +-8.699010853376401304e-04, +-8.597934433620897437e-04, +-8.496848891243491972e-04, +-8.395754390843939092e-04, +-8.294651097025187037e-04, +-8.193539174396596023e-04, +-8.092418787577049894e-04, +-7.991290101186775824e-04, +-7.890153279857219223e-04, +-7.789008488217304734e-04, +-7.687855890908853584e-04, +-7.586695652574001417e-04, +-7.485527937859419098e-04, +-7.384352911419382083e-04, +-7.283170737907641076e-04, +-7.181981581986226831e-04, +-7.080785608317188536e-04, +-6.979582981565797626e-04, +-6.878373866403613909e-04, +-6.777158427501445842e-04, +-6.675936829533650474e-04, +-6.574709237175562805e-04, +-6.473475815107710080e-04, +-6.372236728008864219e-04, +-6.270992140559100356e-04, +-6.169742217442907408e-04, +-6.068487123342204735e-04, +-5.967227022940492466e-04, +-5.865962080920430468e-04, +-5.764692461968042893e-04, +-5.663418330765656759e-04, +-5.562139851995032049e-04, +-5.460857190340531915e-04, +-5.359570510480868646e-04, +-5.258279977099055563e-04, +-5.156985754868581269e-04, +-5.055688008468931091e-04, +-4.954386902571786266e-04, +-4.853082601850930303e-04, +-4.751775270974022592e-04, +-4.650465074605791924e-04, +-4.549152177411126471e-04, +-4.447836744048013998e-04, +-4.346518939171801154e-04, +-4.245198927432694384e-04, +-4.143876873479943328e-04, +-4.042552941954913846e-04, +-3.941227297494063618e-04, +-3.839900104732186614e-04, +-3.738571528295295309e-04, +-3.637241732803778963e-04, +-3.535910882875509319e-04, +-3.434579143117667886e-04, +-3.333246678136647960e-04, +-3.231913652524229957e-04, +-3.130580230873146767e-04, +-3.029246577763221684e-04, +-2.927912857771310540e-04, +-2.826579235463102429e-04, +-2.725245875396247082e-04, +-2.623912942123479545e-04, +-2.522580600185577739e-04, +-2.421249014115604945e-04, +-2.319918348436397705e-04, +-2.218588767664803974e-04, +-2.117260436304650435e-04, +-2.015933518849842240e-04, +-1.914608179787523725e-04, +-1.813284583590996405e-04, +-1.711962894723995608e-04, +-1.610643277638152088e-04, +-1.509325896777248327e-04, +-1.408010916570169601e-04, +-1.306698501434038948e-04, +-1.205388815777325032e-04, +-1.104082023991671054e-04, +-1.002778290461810325e-04, +-9.014777795517219504e-05, +-8.001806556190641374e-05, +-6.988870830069980904e-05, +-5.975972260427875603e-05, +-4.963112490409269718e-05, +-3.950293163006157737e-05, +-2.937515921100049545e-05, +-1.924782407391607391e-05, +-9.120942644318275484e-06, + 1.005468653467277426e-06, + 1.113139339700342660e-05, + 2.125681516531643391e-05, + 3.138171753914840859e-05, + 4.150608410053219428e-05, + 5.162989843349534132e-05, + 6.175314412374813603e-05, + 7.187580475837170284e-05, + 8.199786392663366318e-05, + 9.211930521900029171e-05, + 1.022401122285168548e-04, + 1.123602685492536778e-04, + 1.224797577775748648e-04, + 1.325985635117128171e-04, + 1.427166693514569451e-04, + 1.528340588989687040e-04, + 1.629507157577945629e-04, + 1.730666235342452456e-04, + 1.831817658358428553e-04, + 1.932961262727010091e-04, + 2.034096884565365611e-04, + 2.135224360014858168e-04, + 2.236343525237924454e-04, + 2.337454216414946604e-04, + 2.438556269751300325e-04, + 2.539649521473107802e-04, + 2.640733807829728926e-04, + 2.741808965090692459e-04, + 2.842874829547047491e-04, + 2.943931237519538326e-04, + 3.044978025344207361e-04, + 3.146015029385056941e-04, + 3.247042086029826389e-04, + 3.348059031686840777e-04, + 3.449065702793190145e-04, + 3.550061935804859465e-04, + 3.651047567210469278e-04, + 3.752022433515830153e-04, + 3.852986371257656213e-04, + 3.953939216993766661e-04, + 4.054880807311156583e-04, + 4.155810978822956840e-04, + 4.256729568165244348e-04, + 4.357636412004152276e-04, + 4.458531347031514805e-04, + 4.559414209967520715e-04, + 4.660284837556332121e-04, + 4.761143066573226114e-04, + 4.861988733821381186e-04, + 4.962821676128857185e-04, + 5.063641730355515234e-04, + 5.164448733388870118e-04, + 5.265242522146538953e-04, + 5.366022933572026348e-04, + 5.466789804641757631e-04, + 5.567542972361929233e-04, + 5.668282273765441488e-04, + 5.769007545919977017e-04, + 5.869718625918214725e-04, + 5.970415350891507007e-04, + 6.071097557995627910e-04, + 6.171765084418756120e-04, + 6.272417767383057889e-04, + 6.373055444141362876e-04, + 6.473677951979875736e-04, + 6.574285128213774258e-04, + 6.674876810194348836e-04, + 6.775452835305789982e-04, + 6.876013040962165564e-04, + 6.976557264614373800e-04, + 7.077085343745895350e-04, + 7.177597115875363962e-04, + 7.278092418552262188e-04, + 7.378571089364014237e-04, + 7.479032965932781067e-04, + 7.579477885912421376e-04, + 7.679905686996577573e-04, + 7.780316206908867004e-04, + 7.880709283416549409e-04, + 7.981084754315202799e-04, + 8.081442457442239132e-04, + 8.181782230667322122e-04, + 8.282103911900309031e-04, + 8.382407339088171526e-04, + 8.482692350210807412e-04, + 8.582958783293646648e-04, + 8.683206476392190624e-04, + 8.783435267605660098e-04, + 8.883644995067315440e-04, + 8.983835496952469971e-04, + 9.084006611475363121e-04, + 9.184158176886130084e-04, + 9.284290031477761317e-04, + 9.384402013582950758e-04, + 9.484493961571063315e-04, + 9.584565713856259880e-04, + 9.684617108887542177e-04, + 9.784647985162599117e-04, + 9.884658181212330891e-04, + 9.984647535614518590e-04, + 1.008461588698404687e-03, + 1.018456307398098778e-03, + 1.028448893530749773e-03, + 1.038439330970363254e-03, + 1.048427603595985472e-03, + 1.058413695290168991e-03, + 1.068397589940336392e-03, + 1.078379271437802326e-03, + 1.088358723678586014e-03, + 1.098335930563090540e-03, + 1.108310875995804695e-03, + 1.118283543885990796e-03, + 1.128253918147276158e-03, + 1.138221982697883812e-03, + 1.148187721460231349e-03, + 1.158151118361610069e-03, + 1.168112157333889636e-03, + 1.178070822313198466e-03, + 1.188027097240735783e-03, + 1.197980966061794762e-03, + 1.207932412727123631e-03, + 1.217881421191390444e-03, + 1.227827975414436850e-03, + 1.237772059360857857e-03, + 1.247713656999695220e-03, + 1.257652752305232161e-03, + 1.267589329256038405e-03, + 1.277523371836310900e-03, + 1.287454864034462193e-03, + 1.297383789843920780e-03, + 1.307310133263279430e-03, + 1.317233878295971444e-03, + 1.327155008950530206e-03, + 1.337073509240160494e-03, + 1.346989363183446250e-03, + 1.356902554804025312e-03, + 1.366813068130292349e-03, + 1.376720887196093614e-03, + 1.386625996040296736e-03, + 1.396528378707045069e-03, + 1.406428019245346351e-03, + 1.416324901709752494e-03, + 1.426219010160055143e-03, + 1.436110328660988606e-03, + 1.445998841283010908e-03, + 1.455884532101357287e-03, + 1.465767385197379617e-03, + 1.475647384657020065e-03, + 1.485524514572169599e-03, + 1.495398759039703266e-03, + 1.505270102162269922e-03, + 1.515138528047993644e-03, + 1.525004020810159311e-03, + 1.534866564567914518e-03, + 1.544726143445837628e-03, + 1.554582741574196030e-03, + 1.564436343088519395e-03, + 1.574286932130309182e-03, + 1.584134492846700146e-03, + 1.593979009390178664e-03, + 1.603820465919262315e-03, + 1.613658846598203670e-03, + 1.623494135596665038e-03, + 1.633326317090539855e-03, + 1.643155375260960420e-03, + 1.652981294295668979e-03, + 1.662804058387489219e-03, + 1.672623651735672193e-03, + 1.682440058544936584e-03, + 1.692253263026258442e-03, + 1.702063249396574976e-03, + 1.711870001878466668e-03, + 1.721673504700851377e-03, + 1.731473742098577984e-03, + 1.741270698312652335e-03, + 1.751064357589837174e-03, + 1.760854704183328900e-03, + 1.770641722352458980e-03, + 1.780425396362392103e-03, + 1.790205710484800991e-03, + 1.799982648997449416e-03, + 1.809756196184458474e-03, + 1.819526336335877464e-03, + 1.829293053748363681e-03, + 1.839056332724875367e-03, + 1.848816157574392858e-03, + 1.858572512612691836e-03, + 1.868325382161378822e-03, + 1.878074750549234501e-03, + 1.887820602110716227e-03, + 1.897562921187291368e-03, + 1.907301692126463482e-03, + 1.917036899282589368e-03, + 1.926768527016541228e-03, + 1.936496559695443645e-03, + 1.946220981693329733e-03, + 1.955941777390838871e-03, + 1.965658931174921360e-03, + 1.975372427439516052e-03, + 1.985082250585136401e-03, + 1.994788385019121129e-03, + 2.004490815155213993e-03, + 2.014189525414245962e-03, + 2.023884500223839446e-03, + 2.033575724018088678e-03, + 2.043263181238375460e-03, + 2.052946856332394255e-03, + 2.062626733755474045e-03, + 2.072302797969098609e-03, + 2.081975033442141215e-03, + 2.091643424650404051e-03, + 2.101307956076373627e-03, + 2.110968612209972780e-03, + 2.120625377547614814e-03, + 2.130278236593524058e-03, + 2.139927173858274800e-03, + 2.149572173860066736e-03, + 2.159213221123809038e-03, + 2.168850300181912692e-03, + 2.178483395573941814e-03, + 2.188112491846366022e-03, + 2.197737573553209655e-03, + 2.207358625255635871e-03, + 2.216975631522215100e-03, + 2.226588576928592404e-03, + 2.236197446057651850e-03, + 2.245802223500273712e-03, + 2.255402893853962303e-03, + 2.264999441724075031e-03, + 2.274591851723380045e-03, + 2.284180108471783009e-03, + 2.293764196597112507e-03, + 2.303344100734149025e-03, + 2.312919805525965027e-03, + 2.322491295622434830e-03, + 2.332058555681534341e-03, + 2.341621570368431198e-03, + 2.351180324356224628e-03, + 2.360734802325687408e-03, + 2.370284988964926291e-03, + 2.379830868970088473e-03, + 2.389372427044918808e-03, + 2.398909647901044297e-03, + 2.408442516257516992e-03, + 2.417971016841537809e-03, + 2.427495134388107413e-03, + 2.437014853639765145e-03, + 2.446530159347245180e-03, + 2.456041036269069732e-03, + 2.465547469171775006e-03, + 2.475049442829538229e-03, + 2.484546942024819932e-03, + 2.494039951548082494e-03, + 2.503528456197474852e-03, + 2.513012440779620067e-03, + 2.522491890108681609e-03, + 2.531966789007637515e-03, + 2.541437122306971965e-03, + 2.550902874845398672e-03, + 2.560364031470010928e-03, + 2.569820577035979332e-03, + 2.579272496406801590e-03, + 2.588719774453884445e-03, + 2.598162396057220654e-03, + 2.607600346105080208e-03, + 2.617033609493730605e-03, + 2.626462171128095182e-03, + 2.635886015921325501e-03, + 2.645305128795091484e-03, + 2.654719494679126483e-03, + 2.664129098511922467e-03, + 2.673533925240416474e-03, + 2.682933959819722592e-03, + 2.692329187213858381e-03, + 2.701719592394848015e-03, + 2.711105160344004245e-03, + 2.720485876050482942e-03, + 2.729861724512543369e-03, + 2.739232690736669116e-03, + 2.748598759738281935e-03, + 2.757959916541491939e-03, + 2.767316146178670430e-03, + 2.776667433691649024e-03, + 2.786013764130256410e-03, + 2.795355122553614194e-03, + 2.804691494029220092e-03, + 2.814022863633684323e-03, + 2.823349216452469834e-03, + 2.832670537579572243e-03, + 2.841986812118189876e-03, + 2.851298025180321744e-03, + 2.860604161887007803e-03, + 2.869905207368031019e-03, + 2.879201146762043560e-03, + 2.888491965217348297e-03, + 2.897777647890505820e-03, + 2.907058179947677543e-03, + 2.916333546563680719e-03, + 2.925603732922717887e-03, + 2.934868724218140518e-03, + 2.944128505652020104e-03, + 2.953383062436311293e-03, + 2.962632379791439816e-03, + 2.971876442947580122e-03, + 2.981115237143706041e-03, + 2.990348747628377053e-03, + 2.999576959659447286e-03, + 3.008799858503744158e-03, + 3.018017429437771810e-03, + 3.027229657747252702e-03, + 3.036436528727409941e-03, + 3.045638027682564825e-03, + 3.054834139926770886e-03, + 3.064024850783516815e-03, + 3.073210145585470593e-03, + 3.082390009675209808e-03, + 3.091564428404294882e-03, + 3.100733387134582686e-03, + 3.109896871236762003e-03, + 3.119054866091515790e-03, + 3.128207357089136942e-03, + 3.137354329629261137e-03, + 3.146495769121594125e-03, + 3.155631660984997960e-03, + 3.164761990648763852e-03, + 3.173886743551304623e-03, + 3.183005905140890660e-03, + 3.192119460875742724e-03, + 3.201227396223809904e-03, + 3.210329696662956971e-03, + 3.219426347680584468e-03, + 3.228517334774263624e-03, + 3.237602643451467470e-03, + 3.246682259229258585e-03, + 3.255756167634969549e-03, + 3.264824354205762315e-03, + 3.273886804488906638e-03, + 3.282943504041365909e-03, + 3.291994438430422953e-03, + 3.301039593233437604e-03, + 3.310078954037523179e-03, + 3.319112506440308023e-03, + 3.328140236049013500e-03, + 3.337162128481748098e-03, + 3.346178169366038554e-03, + 3.355188344340149544e-03, + 3.364192639052112233e-03, + 3.373191039160528329e-03, + 3.382183530334233103e-03, + 3.391170098252050801e-03, + 3.400150728603421307e-03, + 3.409125407087996388e-03, + 3.418094119415882124e-03, + 3.427056851307245990e-03, + 3.436013588492969548e-03, + 3.444964316714329688e-03, + 3.453909021722767914e-03, + 3.462847689280460200e-03, + 3.471780305160088870e-03, + 3.480706855144529051e-03, + 3.489627325027608914e-03, + 3.498541700613171188e-03, + 3.507449967716365531e-03, + 3.516352112162227355e-03, + 3.525248119786914252e-03, + 3.534137976436835596e-03, + 3.543021667969349902e-03, + 3.551899180252512424e-03, + 3.560770499164779383e-03, + 3.569635610595655022e-03, + 3.578494500445293484e-03, + 3.587347154624708715e-03, + 3.596193559055440529e-03, + 3.605033699670137474e-03, + 3.613867562412280150e-03, + 3.622695133235948311e-03, + 3.631516398106385528e-03, + 3.640331342999654409e-03, + 3.649139953902840426e-03, + 3.657942216813693699e-03, + 3.666738117741249157e-03, + 3.675527642705537709e-03, + 3.684310777737295241e-03, + 3.693087508878727630e-03, + 3.701857822182594814e-03, + 3.710621703713438101e-03, + 3.719379139546229261e-03, + 3.728130115767456024e-03, + 3.736874618474764730e-03, + 3.745612633776674964e-03, + 3.754344147793319854e-03, + 3.763069146655636382e-03, + 3.771787616506129103e-03, + 3.780499543498527966e-03, + 3.789204913797589690e-03, + 3.797903713579646803e-03, + 3.806595929032291492e-03, + 3.815281546354544299e-03, + 3.823960551756527132e-03, + 3.832632931460020105e-03, + 3.841298671698259014e-03, + 3.849957758715598366e-03, + 3.858610178768255138e-03, + 3.867255918123457901e-03, + 3.875894963060580456e-03, + 3.884527299869887200e-03, + 3.893152914853556176e-03, + 3.901771794325335167e-03, + 3.910383924610289288e-03, + 3.918989292045461058e-03, + 3.927587882979064610e-03, + 3.936179683771639723e-03, + 3.944764680794723456e-03, + 3.953342860432053178e-03, + 3.961914209078674053e-03, + 3.970478713141710123e-03, + 3.979036359039978335e-03, + 3.987587133203854099e-03, + 3.996131022075799510e-03, + 4.004668012109983445e-03, + 4.013198089772538300e-03, + 4.021721241541278968e-03, + 4.030237453905814726e-03, + 4.038746713368243993e-03, + 4.047249006441932216e-03, + 4.055744319652581330e-03, + 4.064232639537862860e-03, + 4.072713952647182001e-03, + 4.081188245542338548e-03, + 4.089655504796701167e-03, + 4.098115716996356649e-03, + 4.106568868738814070e-03, + 4.115014946634185274e-03, + 4.123453937304297559e-03, + 4.131885827383426600e-03, + 4.140310603518011952e-03, + 4.148728252366425465e-03, + 4.157138760599496906e-03, + 4.165542114900206913e-03, + 4.173938301963908172e-03, + 4.182327308497910817e-03, + 4.190709121222126014e-03, + 4.199083726868759782e-03, + 4.207451112182093549e-03, + 4.215811263919054877e-03, + 4.224164168848830621e-03, + 4.232509813753119327e-03, + 4.240848185425755666e-03, + 4.249179270673316723e-03, + 4.257503056314798466e-03, + 4.265819529181439675e-03, + 4.274128676117334297e-03, + 4.282430483978656027e-03, + 4.290724939634754653e-03, + 4.299012029967012004e-03, + 4.307291741869469920e-03, + 4.315564062248968165e-03, + 4.323828978024881614e-03, + 4.332086476129361381e-03, + 4.340336543506883790e-03, + 4.348579167114946867e-03, + 4.356814333923739874e-03, + 4.365042030915927337e-03, + 4.373262245087160792e-03, + 4.381474963445815968e-03, + 4.389680173013128101e-03, + 4.397877860822883150e-03, + 4.406068013921952964e-03, + 4.414250619370119200e-03, + 4.422425664239699496e-03, + 4.430593135616302074e-03, + 4.438753020597996542e-03, + 4.446905306296432790e-03, + 4.455049979835562501e-03, + 4.463187028352769321e-03, + 4.471316438998087367e-03, + 4.479438198934828329e-03, + 4.487552295339341211e-03, + 4.495658715400675798e-03, + 4.503757446321584451e-03, + 4.511848475317281788e-03, + 4.519931789616587862e-03, + 4.528007376461060801e-03, + 4.536075223105675083e-03, + 4.544135316818635056e-03, + 4.552187644881031461e-03, + 4.560232194587467668e-03, + 4.568268953245679768e-03, + 4.576297908176757759e-03, + 4.584319046714895735e-03, + 4.592332356207481231e-03, + 4.600337824015776102e-03, + 4.608335437513736907e-03, + 4.616325184089145085e-03, + 4.624307051142787298e-03, + 4.632281026089112019e-03, + 4.640247096355997955e-03, + 4.648205249384390614e-03, + 4.656155472629344011e-03, + 4.664097753558707482e-03, + 4.672032079654355602e-03, + 4.679958438411241893e-03, + 4.687876817338182921e-03, + 4.695787203957506144e-03, + 4.703689585804879045e-03, + 4.711583950429799189e-03, + 4.719470285395340955e-03, + 4.727348578278237068e-03, + 4.735218816668651347e-03, + 4.743080988170662697e-03, + 4.750935080402065615e-03, + 4.758781080994075284e-03, + 4.766618977592023201e-03, + 4.774448757854497620e-03, + 4.782270409454543979e-03, + 4.790083920078318756e-03, + 4.797889277426165000e-03, + 4.805686469212254973e-03, + 4.813475483164347292e-03, + 4.821256307024398419e-03, + 4.829028928547834942e-03, + 4.836793335504601353e-03, + 4.844549515678002113e-03, + 4.852297456865418968e-03, + 4.860037146878358645e-03, + 4.867768573542201327e-03, + 4.875491724696447843e-03, + 4.883206588194326757e-03, + 4.890913151903386775e-03, + 4.898611403705214855e-03, + 4.906301331495239310e-03, + 4.913982923183225944e-03, + 4.921656166692965802e-03, + 4.929321049962498945e-03, + 4.936977560943711998e-03, + 4.944625687602966120e-03, + 4.952265417920783015e-03, + 4.959896739891661056e-03, + 4.967519641524636466e-03, + 4.975134110842585090e-03, + 4.982740135883258897e-03, + 4.990337704698066465e-03, + 4.997926805353172797e-03, + 5.005507425928703083e-03, + 5.013079554519386284e-03, + 5.020643179234327014e-03, + 5.028198288196712371e-03, + 5.035744869544406949e-03, + 5.043282911429631046e-03, + 5.050812402019058678e-03, + 5.058333329493618080e-03, + 5.065845682048934935e-03, + 5.073349447895139815e-03, + 5.080844615256580217e-03, + 5.088331172372432057e-03, + 5.095809107496387415e-03, + 5.103278408896440299e-03, + 5.110739064855543239e-03, + 5.118191063670774615e-03, + 5.125634393654447153e-03, + 5.133069043132911825e-03, + 5.140495000447619506e-03, + 5.147912253954313455e-03, + 5.155320792023716271e-03, + 5.162720603041226312e-03, + 5.170111675406763307e-03, + 5.177493997535189026e-03, + 5.184867557856087834e-03, + 5.192232344813879456e-03, + 5.199588346867558761e-03, + 5.206935552491157200e-03, + 5.214273950173573674e-03, + 5.221603528418280495e-03, + 5.228924275743894109e-03, + 5.236236180683817749e-03, + 5.243539231786465207e-03, + 5.250833417614902618e-03, + 5.258118726747426988e-03, + 5.265395147777229660e-03, + 5.272662669312293098e-03, + 5.279921279975903492e-03, + 5.287170968405948204e-03, + 5.294411723255916698e-03, + 5.301643533193795520e-03, + 5.308866386902940868e-03, + 5.316080273081785421e-03, + 5.323285180443661398e-03, + 5.330481097717317505e-03, + 5.337668013646213773e-03, + 5.344845916989579733e-03, + 5.352014796521313740e-03, + 5.359174641030573644e-03, + 5.366325439321878270e-03, + 5.373467180214911397e-03, + 5.380599852544683086e-03, + 5.387723445161194009e-03, + 5.394837946930010515e-03, + 5.401943346731925485e-03, + 5.409039633462875071e-03, + 5.416126796034392323e-03, + 5.423204823372980952e-03, + 5.430273704421051222e-03, + 5.437333428135855684e-03, + 5.444383983490363489e-03, + 5.451425359472935120e-03, + 5.458457545087149788e-03, + 5.465480529352341466e-03, + 5.472494301302904124e-03, + 5.479498849989307419e-03, + 5.486494164476912738e-03, + 5.493480233847048734e-03, + 5.500457047196221153e-03, + 5.507424593636757286e-03, + 5.514382862296511936e-03, + 5.521331842318742515e-03, + 5.528271522862492418e-03, + 5.535201893102380255e-03, + 5.542122942228738629e-03, + 5.549034659447362600e-03, + 5.555937033979684893e-03, + 5.562830055063249478e-03, + 5.569713711950793900e-03, + 5.576587993911066334e-03, + 5.583452890228552366e-03, + 5.590308390203270299e-03, + 5.597154483151310644e-03, + 5.603991158404145710e-03, + 5.610818405309624460e-03, + 5.617636213230843209e-03, + 5.624444571547162174e-03, + 5.631243469653433517e-03, + 5.638032896960651873e-03, + 5.644812842895657705e-03, + 5.651583296901029757e-03, + 5.658344248435401638e-03, + 5.665095686973323046e-03, + 5.671837602005395940e-03, + 5.678569983037895508e-03, + 5.685292819593343490e-03, + 5.692006101210258379e-03, + 5.698709817442947252e-03, + 5.705403957861977619e-03, + 5.712088512053892057e-03, + 5.718763469621349592e-03, + 5.725428820182912326e-03, + 5.732084553373399324e-03, + 5.738730658843813753e-03, + 5.745367126260995071e-03, + 5.751993945308260005e-03, + 5.758611105684733819e-03, + 5.765218597106197725e-03, + 5.771816409304126108e-03, + 5.778404532026579048e-03, + 5.784982955037518831e-03, + 5.791551668117424917e-03, + 5.798110661062943517e-03, + 5.804659923686846835e-03, + 5.811199445818398222e-03, + 5.817729217303156154e-03, + 5.824249228002773872e-03, + 5.830759467795479031e-03, + 5.837259926575728494e-03, + 5.843750594254485883e-03, + 5.850231460758815658e-03, + 5.856702516032443427e-03, + 5.863163750035493144e-03, + 5.869615152744277198e-03, + 5.876056714151870614e-03, + 5.882488424267434506e-03, + 5.888910273117120737e-03, + 5.895322250743047568e-03, + 5.901724347204185227e-03, + 5.908116552575800803e-03, + 5.914498856949836417e-03, + 5.920871250434837224e-03, + 5.927233723155617487e-03, + 5.933586265254044666e-03, + 5.939928866888125221e-03, + 5.946261518232819065e-03, + 5.952584209479418534e-03, + 5.958896930836071401e-03, + 5.965199672527600472e-03, + 5.971492424795281535e-03, + 5.977775177897289190e-03, + 5.984047922108410612e-03, + 5.990310647720249390e-03, + 5.996563345040995668e-03, + 6.002806004395514622e-03, + 6.009038616125839984e-03, + 6.015261170590313622e-03, + 6.021473658164409534e-03, + 6.027676069240131898e-03, + 6.033868394226524212e-03, + 6.040050623549449854e-03, + 6.046222747651336209e-03, + 6.052384756992002131e-03, + 6.058536642047642265e-03, + 6.064678393311680529e-03, + 6.070810001294188983e-03, + 6.076931456522357070e-03, + 6.083042749540334623e-03, + 6.089143870909007224e-03, + 6.095234811206438549e-03, + 6.101315561027601496e-03, + 6.107386110984533434e-03, + 6.113446451706088143e-03, + 6.119496573838330462e-03, + 6.125536468044383634e-03, + 6.131566125004238484e-03, + 6.137585535415179296e-03, + 6.143594689991278140e-03, + 6.149593579464157286e-03, + 6.155582194582075867e-03, + 6.161560526110707037e-03, + 6.167528564832858683e-03, + 6.173486301548256582e-03, + 6.179433727074116860e-03, + 6.185370832244485063e-03, + 6.191297607911036734e-03, + 6.197214044942321934e-03, + 6.203120134224133012e-03, + 6.209015866659644244e-03, + 6.214901233169219281e-03, + 6.220776224690575083e-03, + 6.226640832178453183e-03, + 6.232495046605162660e-03, + 6.238338858960270489e-03, + 6.244172260250489652e-03, + 6.249995241500055573e-03, + 6.255807793750465910e-03, + 6.261609908060719945e-03, + 6.267401575506911793e-03, + 6.273182787182774237e-03, + 6.278953534199427193e-03, + 6.284713807685229393e-03, + 6.290463598786186043e-03, + 6.296202898665484785e-03, + 6.301931698504183513e-03, + 6.307649989500375975e-03, + 6.313357762869954183e-03, + 6.319055009846057634e-03, + 6.324741721679522609e-03, + 6.330417889638738187e-03, + 6.336083505009393844e-03, + 6.341738559094978189e-03, + 6.347383043216426809e-03, + 6.353016948712376412e-03, + 6.358640266938787519e-03, + 6.364252989269501316e-03, + 6.369855107095917859e-03, + 6.375446611826917145e-03, + 6.381027494889158352e-03, + 6.386597747727040808e-03, + 6.392157361802370055e-03, + 6.397706328594912097e-03, + 6.403244639601846089e-03, + 6.408772286338458232e-03, + 6.414289260337355941e-03, + 6.419795553149140917e-03, + 6.425291156341957251e-03, + 6.430776061501904291e-03, + 6.436250260232820666e-03, + 6.441713744156175869e-03, + 6.447166504911408524e-03, + 6.452608534155714753e-03, + 6.458039823564151391e-03, + 6.463460364829486798e-03, + 6.468870149662472348e-03, + 6.474269169791727063e-03, + 6.479657416963584965e-03, + 6.485034882942446351e-03, + 6.490401559510553149e-03, + 6.495757438468077391e-03, + 6.501102511633003248e-03, + 6.506436770841369892e-03, + 6.511760207947248080e-03, + 6.517072814822397545e-03, + 6.522374583356858532e-03, + 6.527665505458329909e-03, + 6.532945573052930700e-03, + 6.538214778084406459e-03, + 6.543473112514704322e-03, + 6.548720568323856787e-03, + 6.553957137509774412e-03, + 6.559182812088606637e-03, + 6.564397584094333257e-03, + 6.569601445579422751e-03, + 6.574794388614073337e-03, + 6.579976405286673546e-03, + 6.585147487703797882e-03, + 6.590307627990163453e-03, + 6.595456818288641249e-03, + 6.600595050760119098e-03, + 6.605722317583797437e-03, + 6.610838610957071350e-03, + 6.615943923095347554e-03, + 6.621038246232498030e-03, + 6.626121572620260677e-03, + 6.631193894529065908e-03, + 6.636255204247144997e-03, + 6.641305494081235251e-03, + 6.646344756356286840e-03, + 6.651372983415422893e-03, + 6.656390167620221399e-03, + 6.661396301350312743e-03, + 6.666391377003988601e-03, + 6.671375386997518454e-03, + 6.676348323765735060e-03, + 6.681310179761640669e-03, + 6.686260947456709736e-03, + 6.691200619340797844e-03, + 6.696129187921988184e-03, + 6.701046645726915080e-03, + 6.705952985300530668e-03, + 6.710848199206292247e-03, + 6.715732280025928959e-03, + 6.720605220359568421e-03, + 6.725467012826117502e-03, + 6.730317650062554551e-03, + 6.735157124724502724e-03, + 6.739985429486120699e-03, + 6.744802557039877161e-03, + 6.749608500096923765e-03, + 6.754403251386694416e-03, + 6.759186803657479467e-03, + 6.763959149675771720e-03, + 6.768720282226816341e-03, + 6.773470194114284727e-03, + 6.778208878160487012e-03, + 6.782936327206336505e-03, + 6.787652534111214379e-03, + 6.792357491753200395e-03, + 6.797051193028946260e-03, + 6.801733630853799666e-03, + 6.806404798161543208e-03, + 6.811064687904776031e-03, + 6.815713293054747289e-03, + 6.820350606601204360e-03, + 6.824976621552735455e-03, + 6.829591330936516345e-03, + 6.834194727798535013e-03, + 6.838786805203266386e-03, + 6.843367556234081737e-03, + 6.847936973993063066e-03, + 6.852495051600867790e-03, + 6.857041782197132070e-03, + 6.861577158939940850e-03, + 6.866101175006572056e-03, + 6.870613823592633569e-03, + 6.875115097912841249e-03, + 6.879604991200451679e-03, + 6.884083496707731412e-03, + 6.888550607705707166e-03, + 6.893006317484140673e-03, + 6.897450619351696947e-03, + 6.901883506635962499e-03, + 6.906304972683197270e-03, + 6.910715010858649483e-03, + 6.915113614546442022e-03, + 6.919500777149612328e-03, + 6.923876492089915506e-03, + 6.928240752808186888e-03, + 6.932593552764185034e-03, + 6.936934885436418265e-03, + 6.941264744322540176e-03, + 6.945583122938887334e-03, + 6.949890014821109852e-03, + 6.954185413523441932e-03, + 6.958469312619374077e-03, + 6.962741705701181241e-03, + 6.967002586380259370e-03, + 6.971251948286984017e-03, + 6.975489785070571568e-03, + 6.979716090399615269e-03, + 6.983930857961331493e-03, + 6.988134081462294388e-03, + 6.992325754627879038e-03, + 6.996505871202683864e-03, + 7.000674424950374501e-03, + 7.004831409653509457e-03, + 7.008976819113944302e-03, + 7.013110647152499474e-03, + 7.017232887609196196e-03, + 7.021343534343076065e-03, + 7.025442581232204525e-03, + 7.029530022174123628e-03, + 7.033605851085137327e-03, + 7.037670061900937711e-03, + 7.041722648576199083e-03, + 7.045763605084913624e-03, + 7.049792925420210986e-03, + 7.053810603594231655e-03, + 7.057816633638631758e-03, + 7.061811009603962026e-03, + 7.065793725560175209e-03, + 7.069764775596320758e-03, + 7.073724153820722636e-03, + 7.077671854361026159e-03, + 7.081607871363937781e-03, + 7.085532198995523473e-03, + 7.089444831441151472e-03, + 7.093345762905432436e-03, + 7.097234987612157861e-03, + 7.101112499804481358e-03, + 7.104978293744922992e-03, + 7.108832363715139428e-03, + 7.112674704016278687e-03, + 7.116505308968591563e-03, + 7.120324172911954644e-03, + 7.124131290205293517e-03, + 7.127926655227012111e-03, + 7.131710262374918105e-03, + 7.135482106066004353e-03, + 7.139242180736835724e-03, + 7.142990480843149255e-03, + 7.146727000860320783e-03, + 7.150451735282905251e-03, + 7.154164678624902983e-03, + 7.157865825419741472e-03, + 7.161555170220343033e-03, + 7.165232707598947863e-03, + 7.168898432147255417e-03, + 7.172552338476411403e-03, + 7.176194421217082370e-03, + 7.179824675019242340e-03, + 7.183443094552425211e-03, + 7.187049674505655364e-03, + 7.190644409587426851e-03, + 7.194227294525619258e-03, + 7.197798324067732761e-03, + 7.201357492980784911e-03, + 7.204904796051110269e-03, + 7.208440228084807971e-03, + 7.211963783907275952e-03, + 7.215475458363691461e-03, + 7.218975246318532282e-03, + 7.222463142655991333e-03, + 7.225939142279699974e-03, + 7.229403240112915359e-03, + 7.232855431098497018e-03, + 7.236295710198767210e-03, + 7.239724072395741644e-03, + 7.243140512690984627e-03, + 7.246545026105694065e-03, + 7.249937607680563556e-03, + 7.253318252476036523e-03, + 7.256686955572117133e-03, + 7.260043712068393711e-03, + 7.263388517084129817e-03, + 7.266721365758291133e-03, + 7.270042253249391073e-03, + 7.273351174735649509e-03, + 7.276648125414835779e-03, + 7.279933100504662469e-03, + 7.283206095242188670e-03, + 7.286467104884425394e-03, + 7.289716124707835976e-03, + 7.292953150008772353e-03, + 7.296178176103235678e-03, + 7.299391198326836416e-03, + 7.302592212035027668e-03, + 7.305781212602931694e-03, + 7.308958195425427525e-03, + 7.312123155917040797e-03, + 7.315276089512133713e-03, + 7.318416991664839118e-03, + 7.321545857848893966e-03, + 7.324662683557948105e-03, + 7.327767464305356970e-03, + 7.330860195624290879e-03, + 7.333940873067597115e-03, + 7.337009492208015904e-03, + 7.340066048638068524e-03, + 7.343110537969995723e-03, + 7.346142955835943331e-03, + 7.349163297887735015e-03, + 7.352171559797213152e-03, + 7.355167737255853717e-03, + 7.358151825975064661e-03, + 7.361123821686072280e-03, + 7.364083720139887393e-03, + 7.367031517107457128e-03, + 7.369967208379455889e-03, + 7.372890789766646177e-03, + 7.375802257099408482e-03, + 7.378701606228080419e-03, + 7.381588833022923769e-03, + 7.384463933374034277e-03, + 7.387326903191461340e-03, + 7.390177738405019799e-03, + 7.393016434964534526e-03, + 7.395842988839720737e-03, + 7.398657396020152759e-03, + 7.401459652515408882e-03, + 7.404249754354804217e-03, + 7.407027697587873806e-03, + 7.409793478283809715e-03, + 7.412547092531899043e-03, + 7.415288536441335711e-03, + 7.418017806141210917e-03, + 7.420734897780684874e-03, + 7.423439807528679768e-03, + 7.426132531574369811e-03, + 7.428813066126617459e-03, + 7.431481407414449597e-03, + 7.434137551686751354e-03, + 7.436781495212466467e-03, + 7.439413234280542637e-03, + 7.442032765199853468e-03, + 7.444640084299292138e-03, + 7.447235187927822575e-03, + 7.449818072454364101e-03, + 7.452388734267825256e-03, + 7.454947169777180992e-03, + 7.457493375411463135e-03, + 7.460027347619645893e-03, + 7.462549082870769020e-03, + 7.465058577653992458e-03, + 7.467555828478382972e-03, + 7.470040831873179556e-03, + 7.472513584387550575e-03, + 7.474974082590924232e-03, + 7.477422323072544473e-03, + 7.479858302441918551e-03, + 7.482282017328496099e-03, + 7.484693464381885104e-03, + 7.487092640271754765e-03, + 7.489479541687807732e-03, + 7.491854165339943174e-03, + 7.494216507958038204e-03, + 7.496566566292194207e-03, + 7.498904337112471431e-03, + 7.501229817209137916e-03, + 7.503543003392592302e-03, + 7.505843892493218109e-03, + 7.508132481361673438e-03, + 7.510408766868651581e-03, + 7.512672745905021529e-03, + 7.514924415381710014e-03, + 7.517163772229850695e-03, + 7.519390813400726042e-03, + 7.521605535865678004e-03, + 7.523807936616308360e-03, + 7.525998012664244542e-03, + 7.528175761041418917e-03, + 7.530341178799809451e-03, + 7.532494263011621852e-03, + 7.534635010769155129e-03, + 7.536763419184959456e-03, + 7.538879485391742491e-03, + 7.540983206542313001e-03, + 7.543074579809819387e-03, + 7.545153602387465186e-03, + 7.547220271488653057e-03, + 7.549274584347033350e-03, + 7.551316538216419107e-03, + 7.553346130370871929e-03, + 7.555363358104571873e-03, + 7.557368218731964037e-03, + 7.559360709587728197e-03, + 7.561340828026676467e-03, + 7.563308571423925895e-03, + 7.565263937174720663e-03, + 7.567206922694644580e-03, + 7.569137525419412059e-03, + 7.571055742805029437e-03, + 7.572961572327687428e-03, + 7.574855011483823571e-03, + 7.576736057790171668e-03, + 7.578604708783599590e-03, + 7.580460962021366884e-03, + 7.582304815080849816e-03, + 7.584136265559757346e-03, + 7.585955311075981075e-03, + 7.587761949267756573e-03, + 7.589556177793515060e-03, + 7.591337994331984890e-03, + 7.593107396582125627e-03, + 7.594864382263236471e-03, + 7.596608949114804464e-03, + 7.598341094896656281e-03, + 7.600060817388802972e-03, + 7.601768114391703642e-03, + 7.603462983725904623e-03, + 7.605145423232392496e-03, + 7.606815430772331278e-03, + 7.608473004227215945e-03, + 7.610118141498914066e-03, + 7.611750840509418602e-03, + 7.613371099201200927e-03, + 7.614978915536868218e-03, + 7.616574287499471366e-03, + 7.618157213092269925e-03, + 7.619727690338855275e-03, + 7.621285717283178378e-03, + 7.622831291989402326e-03, + 7.624364412542090561e-03, + 7.625885077046078500e-03, + 7.627393283626561146e-03, + 7.628889030428963845e-03, + 7.630372315619142649e-03, + 7.631843137383219518e-03, + 7.633301493927602266e-03, + 7.634747383479155436e-03, + 7.636180804284897587e-03, + 7.637601754612356048e-03, + 7.639010232749272010e-03, + 7.640406237003732372e-03, + 7.641789765704223511e-03, + 7.643160817199531540e-03, + 7.644519389858774397e-03, + 7.645865482071378429e-03, + 7.647199092247218034e-03, + 7.648520218816423979e-03, + 7.649828860229522173e-03, + 7.651125014957325249e-03, + 7.652408681491085218e-03, + 7.653679858342310460e-03, + 7.654938544042910568e-03, + 7.656184737145167729e-03, + 7.657418436221700292e-03, + 7.658639639865463637e-03, + 7.659848346689800483e-03, + 7.661044555328393180e-03, + 7.662228264435310549e-03, + 7.663399472684946298e-03, + 7.664558178772075403e-03, + 7.665704381411851502e-03, + 7.666838079339790418e-03, + 7.667959271311730260e-03, + 7.669067956103917290e-03, + 7.670164132513003323e-03, + 7.671247799355910418e-03, + 7.672318955470036443e-03, + 7.673377599713054713e-03, + 7.674423730963087463e-03, + 7.675457348118578348e-03, + 7.676478450098396522e-03, + 7.677487035841709141e-03, + 7.678483104308136617e-03, + 7.679466654477668484e-03, + 7.680437685350583604e-03, + 7.681396195947667004e-03, + 7.682342185309953136e-03, + 7.683275652498950531e-03, + 7.684196596596528164e-03, + 7.685105016704905055e-03, + 7.686000911946698835e-03, + 7.686884281464899729e-03, + 7.687755124422878360e-03, + 7.688613440004422178e-03, + 7.689459227413643523e-03, + 7.690292485875093245e-03, + 7.691113214633628868e-03, + 7.691921412954580255e-03, + 7.692717080123603023e-03, + 7.693500215446757474e-03, + 7.694270818250464362e-03, + 7.695028887881569073e-03, + 7.695774423707247951e-03, + 7.696507425115109782e-03, + 7.697227891513126405e-03, + 7.697935822329647453e-03, + 7.698631217013382141e-03, + 7.699314075033493812e-03, + 7.699984395879475030e-03, + 7.700642179061216105e-03, + 7.701287424108971269e-03, + 7.701920130573410711e-03, + 7.702540298025559000e-03, + 7.703147926056852328e-03, + 7.703743014279083867e-03, + 7.704325562324399433e-03, + 7.704895569845416313e-03, + 7.705453036515057599e-03, + 7.705997962026642396e-03, + 7.706530346093897962e-03, + 7.707050188450858229e-03, + 7.707557488852036405e-03, + 7.708052247072258445e-03, + 7.708534462906747181e-03, + 7.709004136171081559e-03, + 7.709461266701242606e-03, + 7.709905854353582208e-03, + 7.710337899004817905e-03, + 7.710757400552038093e-03, + 7.711164358912741060e-03, + 7.711558774024743906e-03, + 7.711940645846277961e-03, + 7.712309974355918522e-03, + 7.712666759552625623e-03, + 7.713011001455701530e-03, + 7.713342700104866209e-03, + 7.713661855560175785e-03, + 7.713968467902026886e-03, + 7.714262537231245977e-03, + 7.714544063668960124e-03, + 7.714813047356701946e-03, + 7.715069488456312470e-03, + 7.715313387150074705e-03, + 7.715544743640543636e-03, + 7.715763558150707559e-03, + 7.715969830923842358e-03, + 7.716163562223616462e-03, + 7.716344752334051808e-03, + 7.716513401559505630e-03, + 7.716669510224709490e-03, + 7.716813078674723304e-03, + 7.716944107274972646e-03, + 7.717062596411189759e-03, + 7.717168546489497696e-03, + 7.717261957936349601e-03, + 7.717342831198504421e-03, + 7.717411166743099772e-03, + 7.717466965057629379e-03, + 7.717510226649845935e-03, + 7.717540952047905085e-03, + 7.717559141800274351e-03, + 7.717564796475739203e-03, + 7.717557916663438621e-03, + 7.717538502972808717e-03, + 7.717506556033616565e-03, + 7.717462076495968867e-03, + 7.717405065030282472e-03, + 7.717335522327308656e-03, + 7.717253449098051589e-03, + 7.717158846073933140e-03, + 7.717051714006589042e-03, + 7.716932053668018945e-03, + 7.716799865850539585e-03, + 7.716655151366723191e-03, + 7.716497911049474689e-03, + 7.716328145752010884e-03, + 7.716145856347833565e-03, + 7.715951043730714769e-03, + 7.715743708814787848e-03, + 7.715523852534395682e-03, + 7.715291475844239001e-03, + 7.715046579719253214e-03, + 7.714789165154694282e-03, + 7.714519233166083206e-03, + 7.714236784789193883e-03, + 7.713941821080138109e-03, + 7.713634343115255421e-03, + 7.713314351991132183e-03, + 7.712981848824681380e-03, + 7.712636834753072365e-03, + 7.712279310933681416e-03, + 7.711909278544220106e-03, + 7.711526738782560966e-03, + 7.711131692866933507e-03, + 7.710724142035740337e-03, + 7.710304087547683802e-03, + 7.709871530681675772e-03, + 7.709426472736885354e-03, + 7.708968915032704192e-03, + 7.708498858908781164e-03, + 7.708016305724985952e-03, + 7.707521256861415981e-03, + 7.707013713718394686e-03, + 7.706493677716452426e-03, + 7.705961150296371590e-03, + 7.705416132919146698e-03, + 7.704858627065945369e-03, + 7.704288634238213272e-03, + 7.703706155957493716e-03, + 7.703111193765652294e-03, + 7.702503749224669585e-03, + 7.701883823916768658e-03, + 7.701251419444346547e-03, + 7.700606537429953435e-03, + 7.699949179516415824e-03, + 7.699279347366627495e-03, + 7.698597042663773288e-03, + 7.697902267111112265e-03, + 7.697195022432138170e-03, + 7.696475310370464069e-03, + 7.695743132689896945e-03, + 7.694998491174439431e-03, + 7.694241387628146696e-03, + 7.693471823875309458e-03, + 7.692689801760315207e-03, + 7.691895323147753157e-03, + 7.691088389922278064e-03, + 7.690269003988742073e-03, + 7.689437167272131397e-03, + 7.688592881717454426e-03, + 7.687736149289986325e-03, + 7.686866971975007089e-03, + 7.685985351777999304e-03, + 7.685091290724472939e-03, + 7.684184790860093713e-03, + 7.683265854250635393e-03, + 7.682334482981948570e-03, + 7.681390679159983206e-03, + 7.680434444910729658e-03, + 7.679465782380385207e-03, + 7.678484693735077374e-03, + 7.677491181161126728e-03, + 7.676485246864869945e-03, + 7.675466893072702308e-03, + 7.674436122031133220e-03, + 7.673392936006632678e-03, + 7.672337337285821228e-03, + 7.671269328175331186e-03, + 7.670188911001814443e-03, + 7.669096088112022265e-03, + 7.667990861872648299e-03, + 7.666873234670515055e-03, + 7.665743208912365741e-03, + 7.664600787025067224e-03, + 7.663445971455405334e-03, + 7.662278764670245323e-03, + 7.661099169156439063e-03, + 7.659907187420779071e-03, + 7.658702821990152898e-03, + 7.657486075411384409e-03, + 7.656256950251245051e-03, + 7.655015449096550136e-03, + 7.653761574554070364e-03, + 7.652495329250529228e-03, + 7.651216715832569182e-03, + 7.649925736966925113e-03, + 7.648622395340154596e-03, + 7.647306693658802688e-03, + 7.645978634649380247e-03, + 7.644638221058311887e-03, + 7.643285455651987158e-03, + 7.641920341216643445e-03, + 7.640542880558549854e-03, + 7.639153076503754809e-03, + 7.637750931898360136e-03, + 7.636336449608258255e-03, + 7.634909632519298710e-03, + 7.633470483537219652e-03, + 7.632019005587621814e-03, + 7.630555201616011883e-03, + 7.629079074587743516e-03, + 7.627590627488063310e-03, + 7.626089863322090857e-03, + 7.624576785114749351e-03, + 7.623051395910905234e-03, + 7.621513698775189520e-03, + 7.619963696792099277e-03, + 7.618401393065979410e-03, + 7.616826790720988838e-03, + 7.615239892901149062e-03, + 7.613640702770194113e-03, + 7.612029223511788262e-03, + 7.610405458329327390e-03, + 7.608769410446058687e-03, + 7.607121083104965292e-03, + 7.605460479568830479e-03, + 7.603787603120248928e-03, + 7.602102457061562547e-03, + 7.600405044714873479e-03, + 7.598695369422032823e-03, + 7.596973434544729981e-03, + 7.595239243464287950e-03, + 7.593492799581837670e-03, + 7.591734106318238223e-03, + 7.589963167114050814e-03, + 7.588179985429606422e-03, + 7.586384564744888710e-03, + 7.584576908559629432e-03, + 7.582757020393284149e-03, + 7.580924903784923806e-03, + 7.579080562293424687e-03, + 7.577223999497201268e-03, + 7.575355218994523666e-03, + 7.573474224403150754e-03, + 7.571581019360592961e-03, + 7.569675607524016872e-03, + 7.567757992570199252e-03, + 7.565828178195631998e-03, + 7.563886168116337391e-03, + 7.561931966068075398e-03, + 7.559965575806113815e-03, + 7.557987001105401746e-03, + 7.555996245760510620e-03, + 7.553993313585579544e-03, + 7.551978208414314442e-03, + 7.549950934100023610e-03, + 7.547911494515658487e-03, + 7.545859893553647987e-03, + 7.543796135125974828e-03, + 7.541720223164325582e-03, + 7.539632161619751541e-03, + 7.537531954462989639e-03, + 7.535419605684168416e-03, + 7.533295119293088177e-03, + 7.531158499318980730e-03, + 7.529009749810586585e-03, + 7.526848874836204392e-03, + 7.524675878483567774e-03, + 7.522490764859991047e-03, + 7.520293538092105538e-03, + 7.518084202326221280e-03, + 7.515862761727934958e-03, + 7.513629220482415279e-03, + 7.511383582794255512e-03, + 7.509125852887428391e-03, + 7.506856035005464792e-03, + 7.504574133411201324e-03, + 7.502280152386942534e-03, + 7.499974096234370696e-03, + 7.497655969274696734e-03, + 7.495325775848389604e-03, + 7.492983520315305533e-03, + 7.490629207054790364e-03, + 7.488262840465509558e-03, + 7.485884424965429107e-03, + 7.483493964991904009e-03, + 7.481091465001693877e-03, + 7.478676929470901361e-03, + 7.476250362894807343e-03, + 7.473811769788232633e-03, + 7.471361154685099079e-03, + 7.468898522138824221e-03, + 7.466423876722001231e-03, + 7.463937223026529885e-03, + 7.461438565663661669e-03, + 7.458927909263829772e-03, + 7.456405258476800010e-03, + 7.453870617971506025e-03, + 7.451323992436250515e-03, + 7.448765386578486657e-03, + 7.446194805124902241e-03, + 7.443612252821477787e-03, + 7.441017734433325211e-03, + 7.438411254744800583e-03, + 7.435792818559411321e-03, + 7.433162430699941960e-03, + 7.430520096008260723e-03, + 7.427865819345447901e-03, + 7.425199605591770689e-03, + 7.422521459646574775e-03, + 7.419831386428461274e-03, + 7.417129390874999638e-03, + 7.414415477943049441e-03, + 7.411689652608475024e-03, + 7.408951919866354520e-03, + 7.406202284730728329e-03, + 7.403440752234817686e-03, + 7.400667327430975224e-03, + 7.397882015390412624e-03, + 7.395084821203637762e-03, + 7.392275749980116439e-03, + 7.389454806848346977e-03, + 7.386621996955855876e-03, + 7.383777325469185679e-03, + 7.380920797573973027e-03, + 7.378052418474807285e-03, + 7.375172193395201047e-03, + 7.372280127577816519e-03, + 7.369376226284135058e-03, + 7.366460494794759006e-03, + 7.363532938409057815e-03, + 7.360593562445536669e-03, + 7.357642372241529442e-03, + 7.354679373153367831e-03, + 7.351704570556244316e-03, + 7.348717969844272002e-03, + 7.345719576430567027e-03, + 7.342709395746910284e-03, + 7.339687433244227940e-03, + 7.336653694392124801e-03, + 7.333608184679216505e-03, + 7.330550909612843294e-03, + 7.327481874719220939e-03, + 7.324401085543468491e-03, + 7.321308547649484251e-03, + 7.318204266619927553e-03, + 7.315088248056285554e-03, + 7.311960497578943487e-03, + 7.308821020826940934e-03, + 7.305669823458122748e-03, + 7.302506911149153797e-03, + 7.299332289595343755e-03, + 7.296145964510875222e-03, + 7.292947941628578207e-03, + 7.289738226699978701e-03, + 7.286516825495483428e-03, + 7.283283743803898452e-03, + 7.280038987433052819e-03, + 7.276782562209202672e-03, + 7.273514473977490957e-03, + 7.270234728601521548e-03, + 7.266943331963630730e-03, + 7.263640289964856840e-03, + 7.260325608524788484e-03, + 7.256999293581642592e-03, + 7.253661351092244476e-03, + 7.250311787032062520e-03, + 7.246950607395108435e-03, + 7.243577818193950267e-03, + 7.240193425459806945e-03, + 7.236797435242343576e-03, + 7.233389853609912580e-03, + 7.229970686649185053e-03, + 7.226539940465593996e-03, + 7.223097621182898026e-03, + 7.219643734943435517e-03, + 7.216178287908102049e-03, + 7.212701286256120552e-03, + 7.209212736185361368e-03, + 7.205712643911924183e-03, + 7.202201015670604660e-03, + 7.198677857714425206e-03, + 7.195143176315005329e-03, + 7.191596977762250258e-03, + 7.188039268364502729e-03, + 7.184470054448541254e-03, + 7.180889342359490779e-03, + 7.177297138460813145e-03, + 7.173693449134412904e-03, + 7.170078280780463852e-03, + 7.166451639817494890e-03, + 7.162813532682338856e-03, + 7.159163965830222728e-03, + 7.155502945734614102e-03, + 7.151830478887229864e-03, + 7.148146571798155886e-03, + 7.144451230995660547e-03, + 7.140744463026427180e-03, + 7.137026274455066620e-03, + 7.133296671864794609e-03, + 7.129555661856771739e-03, + 7.125803251050541465e-03, + 7.122039446083750815e-03, + 7.118264253612201567e-03, + 7.114477680310011577e-03, + 7.110679732869344162e-03, + 7.106870418000532999e-03, + 7.103049742432040493e-03, + 7.099217712910543647e-03, + 7.095374336200743239e-03, + 7.091519619085406324e-03, + 7.087653568365568334e-03, + 7.083776190860171379e-03, + 7.079887493406312321e-03, + 7.075987482859071032e-03, + 7.072076166091654376e-03, + 7.068153549995351108e-03, + 7.064219641479224827e-03, + 7.060274447470637864e-03, + 7.056317974914749075e-03, + 7.052350230774830434e-03, + 7.048371222032038912e-03, + 7.044380955685478930e-03, + 7.040379438752329862e-03, + 7.036366678267591893e-03, + 7.032342681284178831e-03, + 7.028307454872938058e-03, + 7.024261006122711239e-03, + 7.020203342140094067e-03, + 7.016134470049559431e-03, + 7.012054396993590982e-03, + 7.007963130132345737e-03, + 7.003860676643911681e-03, + 6.999747043724111745e-03, + 6.995622238586772686e-03, + 6.991486268463313961e-03, + 6.987339140602978442e-03, + 6.983180862272915686e-03, + 6.979011440757841925e-03, + 6.974830883360485893e-03, + 6.970639197400928765e-03, + 6.966436390217373500e-03, + 6.962222469165464840e-03, + 6.957997441618605020e-03, + 6.953761314968014487e-03, + 6.949514096622369345e-03, + 6.945255794008239371e-03, + 6.940986414569544176e-03, + 6.936705965768094444e-03, + 6.932414455083285749e-03, + 6.928111890012001416e-03, + 6.923798278068788586e-03, + 6.919473626785738532e-03, + 6.915137943712612416e-03, + 6.910791236416623587e-03, + 6.906433512482488754e-03, + 6.902064779512643959e-03, + 6.897685045126806559e-03, + 6.893294316962444469e-03, + 6.888892602674193295e-03, + 6.884479909934469559e-03, + 6.880056246433020536e-03, + 6.875621619876967627e-03, + 6.871176037991064828e-03, + 6.866719508517257244e-03, + 6.862252039215192834e-03, + 6.857773637861518112e-03, + 6.853284312250616274e-03, + 6.848784070194027795e-03, + 6.844272919520812126e-03, + 6.839750868077235438e-03, + 6.835217923726869503e-03, + 6.830674094350784251e-03, + 6.826119387847170462e-03, + 6.821553812131567890e-03, + 6.816977375136728211e-03, + 6.812390084812844880e-03, + 6.807791949127187103e-03, + 6.803182976064232543e-03, + 6.798563173625859005e-03, + 6.793932549830979280e-03, + 6.789291112715770127e-03, + 6.784638870333499668e-03, + 6.779975830754733819e-03, + 6.775302002067194046e-03, + 6.770617392375504959e-03, + 6.765922009801709526e-03, + 6.761215862484683606e-03, + 6.756498958580671975e-03, + 6.751771306262793933e-03, + 6.747032913721234121e-03, + 6.742283789163400383e-03, + 6.737523940813574218e-03, + 6.732753376913109405e-03, + 6.727972105720329658e-03, + 6.723180135510697757e-03, + 6.718377474576469471e-03, + 6.713564131226931221e-03, + 6.708740113788407879e-03, + 6.703905430604060675e-03, + 6.699060090033991284e-03, + 6.694204100455175034e-03, + 6.689337470261604024e-03, + 6.684460207864058139e-03, + 6.679572321690112856e-03, + 6.674673820184386444e-03, + 6.669764711808130568e-03, + 6.664845005039629275e-03, + 6.659914708373682914e-03, + 6.654973830322187534e-03, + 6.650022379413583241e-03, + 6.645060364193272270e-03, + 6.640087793223261627e-03, + 6.635104675082270642e-03, + 6.630111018365962561e-03, + 6.625106831686337384e-03, + 6.620092123672373721e-03, + 6.615066902969705259e-03, + 6.610031178240513214e-03, + 6.604984958163665973e-03, + 6.599928251434589860e-03, + 6.594861066765530209e-03, + 6.589783412885140239e-03, + 6.584695298538672734e-03, + 6.579596732488107551e-03, + 6.574487723511729213e-03, + 6.569368280404709777e-03, + 6.564238411978283103e-03, + 6.559098127060633034e-03, + 6.553947434496135323e-03, + 6.548786343145869375e-03, + 6.543614861887228802e-03, + 6.538432999614005557e-03, + 6.533240765236737746e-03, + 6.528038167681906451e-03, + 6.522825215892815234e-03, + 6.517601918828898853e-03, + 6.512368285466168215e-03, + 6.507124324796798379e-03, + 6.501870045829348868e-03, + 6.496605457588866886e-03, + 6.491330569116529961e-03, + 6.486045389469857585e-03, + 6.480749927722611464e-03, + 6.475444192964994149e-03, + 6.470128194303237899e-03, + 6.464801940859866633e-03, + 6.459465441773779189e-03, + 6.454118706199826923e-03, + 6.448761743309289023e-03, + 6.443394562289458775e-03, + 6.438017172343748519e-03, + 6.432629582691965463e-03, + 6.427231802569635145e-03, + 6.421823841228799408e-03, + 6.416405707937296483e-03, + 6.410977411979271873e-03, + 6.405538962654739460e-03, + 6.400090369279799220e-03, + 6.394631641186715280e-03, + 6.389162787723639235e-03, + 6.383683818254701214e-03, + 6.378194742160031572e-03, + 6.372695568835843281e-03, + 6.367186307694147444e-03, + 6.361666968162911148e-03, + 6.356137559686150275e-03, + 6.350598091723579086e-03, + 6.345048573751062120e-03, + 6.339489015259935911e-03, + 6.333919425757819979e-03, + 6.328339814767901250e-03, + 6.322750191829202074e-03, + 6.317150566496747624e-03, + 6.311540948341042880e-03, + 6.305921346948752636e-03, + 6.300291771921805520e-03, + 6.294652232878334211e-03, + 6.289002739451859253e-03, + 6.283343301291890136e-03, + 6.277673928063401410e-03, + 6.271994629447057330e-03, + 6.266305415139372323e-03, + 6.260606294852298984e-03, + 6.254897278313413696e-03, + 6.249178375266114388e-03, + 6.243449595469137414e-03, + 6.237710948696940060e-03, + 6.231962444739403036e-03, + 6.226204093402201711e-03, + 6.220435904506257073e-03, + 6.214657887888092209e-03, + 6.208870053399852262e-03, + 6.203072410908913245e-03, + 6.197264970298423277e-03, + 6.191447741466566193e-03, + 6.185620734327310945e-03, + 6.179783958809809651e-03, + 6.173937424858784440e-03, + 6.168081142434166629e-03, + 6.162215121511266727e-03, + 6.156339372080862037e-03, + 6.150453904148944252e-03, + 6.144558727736806197e-03, + 6.138653852881001058e-03, + 6.132739289633521926e-03, + 6.126815048061432303e-03, + 6.120881138247046514e-03, + 6.114937570288065012e-03, + 6.108984354297227436e-03, + 6.103021500402493887e-03, + 6.097049018746964269e-03, + 6.091066919488954609e-03, + 6.085075212802048238e-03, + 6.079073908874531133e-03, + 6.073063017910231530e-03, + 6.067042550127747964e-03, + 6.061012515761005255e-03, + 6.054972925058753168e-03, + 6.048923788284833562e-03, + 6.042865115718212485e-03, + 6.036796917652713021e-03, + 6.030719204397216524e-03, + 6.024631986275411945e-03, + 6.018535273626233854e-03, + 6.012429076803278705e-03, + 6.006313406175078050e-03, + 6.000188272125233854e-03, + 5.994053685052020373e-03, + 5.987909655368674720e-03, + 5.981756193503134054e-03, + 5.975593309898433701e-03, + 5.969421015012161581e-03, + 5.963239319316686327e-03, + 5.957048233299374988e-03, + 5.950847767462050068e-03, + 5.944637932321607081e-03, + 5.938418738409210508e-03, + 5.932190196271145549e-03, + 5.925952316468139844e-03, + 5.919705109575563833e-03, + 5.913448586183655403e-03, + 5.907182756896973454e-03, + 5.900907632335044076e-03, + 5.894623223131511408e-03, + 5.888329539935037958e-03, + 5.882026593408530915e-03, + 5.875714394229679914e-03, + 5.869392953090499937e-03, + 5.863062280697520397e-03, + 5.856722387771899629e-03, + 5.850373285049121318e-03, + 5.844014983279059543e-03, + 5.837647493226250268e-03, + 5.831270825669363118e-03, + 5.824884991401789447e-03, + 5.818490001230814876e-03, + 5.812085865978550842e-03, + 5.805672596481179989e-03, + 5.799250203589193832e-03, + 5.792818698167601782e-03, + 5.786378091095399460e-03, + 5.779928393266205340e-03, + 5.773469615587392516e-03, + 5.767001768981031527e-03, + 5.760524864383065498e-03, + 5.754038912743903410e-03, + 5.747543925027912698e-03, + 5.741039912213608334e-03, + 5.734526885293848852e-03, + 5.728004855275408737e-03, + 5.721473833179203938e-03, + 5.714933830040175647e-03, + 5.708384856907545296e-03, + 5.701826924844322769e-03, + 5.695260044927568342e-03, + 5.688684228248579167e-03, + 5.682099485912355842e-03, + 5.675505829038011811e-03, + 5.668903268758480191e-03, + 5.662291816220786124e-03, + 5.655671482585945299e-03, + 5.649042279028395827e-03, + 5.642404216736994840e-03, + 5.635757306914075671e-03, + 5.629101560776074084e-03, + 5.622436989553058172e-03, + 5.615763604488862790e-03, + 5.609081416841335023e-03, + 5.602390437881845861e-03, + 5.595690678895597243e-03, + 5.588982151181432108e-03, + 5.582264866052089394e-03, + 5.575538834833817202e-03, + 5.568804068866486413e-03, + 5.562060579503844832e-03, + 5.555308378113055744e-03, + 5.548547476074961599e-03, + 5.541777884783883647e-03, + 5.534999615647957609e-03, + 5.528212680088674842e-03, + 5.521417089540994229e-03, + 5.514612855453650091e-03, + 5.507799989288558046e-03, + 5.500978502521495887e-03, + 5.494148406641128669e-03, + 5.487309713150111991e-03, + 5.480462433564125754e-03, + 5.473606579412553311e-03, + 5.466742162237941093e-03, + 5.459869193596130453e-03, + 5.452987685056689612e-03, + 5.446097648201894507e-03, + 5.439199094627829474e-03, + 5.432292035943741930e-03, + 5.425376483772011149e-03, + 5.418452449748306990e-03, + 5.411519945521476270e-03, + 5.404578982753741392e-03, + 5.397629573120350799e-03, + 5.390671728309644889e-03, + 5.383705460023369138e-03, + 5.376730779976081689e-03, + 5.369747699895808211e-03, + 5.362756231523122495e-03, + 5.355756386612229789e-03, + 5.348748176929957188e-03, + 5.341731614256472679e-03, + 5.334706710384721356e-03, + 5.327673477120643125e-03, + 5.320631926283413832e-03, + 5.313582069704643820e-03, + 5.306523919229403155e-03, + 5.299457486715272725e-03, + 5.292382784033028593e-03, + 5.285299823066093826e-03, + 5.278208615710697216e-03, + 5.271109173876161250e-03, + 5.264001509484370414e-03, + 5.256885634470057425e-03, + 5.249761560780667052e-03, + 5.242629300376623266e-03, + 5.235488865230781934e-03, + 5.228340267328789905e-03, + 5.221183518669139656e-03, + 5.214018631262728673e-03, + 5.206845617133452724e-03, + 5.199664488317315945e-03, + 5.192475256863355454e-03, + 5.185277934833217202e-03, + 5.178072534300658114e-03, + 5.170859067352490644e-03, + 5.163637546087692862e-03, + 5.156407982618006064e-03, + 5.149170389067495891e-03, + 5.141924777572623451e-03, + 5.134671160282561903e-03, + 5.127409549358652625e-03, + 5.120139956974739150e-03, + 5.112862395316945981e-03, + 5.105576876583992584e-03, + 5.098283412986737151e-03, + 5.090982016748308442e-03, + 5.083672700104417165e-03, + 5.076355475302698518e-03, + 5.069030354603470262e-03, + 5.061697350278711836e-03, + 5.054356474613188460e-03, + 5.047007739903544739e-03, + 5.039651158458613445e-03, + 5.032286742599579449e-03, + 5.024914504659475784e-03, + 5.017534456983873195e-03, + 5.010146611929816758e-03, + 5.002750981867039315e-03, + 4.995347579176882477e-03, + 4.987936416253081588e-03, + 4.980517505501122141e-03, + 4.973090859338477436e-03, + 4.965656490194832358e-03, + 4.958214410511587247e-03, + 4.950764632742071271e-03, + 4.943307169351733241e-03, + 4.935842032817727015e-03, + 4.928369235629095381e-03, + 4.920888790286664233e-03, + 4.913400709303353091e-03, + 4.905905005203601774e-03, + 4.898401690523653158e-03, + 4.890890777811749204e-03, + 4.883372279627551556e-03, + 4.875846208542848441e-03, + 4.868312577140557207e-03, + 4.860771398015825868e-03, + 4.853222683775090286e-03, + 4.845666447036707340e-03, + 4.838102700430424973e-03, + 4.830531456597580812e-03, + 4.822952728191332895e-03, + 4.815366527876145317e-03, + 4.807772868328077931e-03, + 4.800171762234643237e-03, + 4.792563222295070056e-03, + 4.784947261219821280e-03, + 4.777323891730784686e-03, + 4.769693126561539223e-03, + 4.762054978456812040e-03, + 4.754409460172800278e-03, + 4.746756584476969840e-03, + 4.739096364148372847e-03, + 4.731428811977142837e-03, + 4.723753940764708996e-03, + 4.716071763324019075e-03, + 4.708382292478938309e-03, + 4.700685541064903404e-03, + 4.692981521928307580e-03, + 4.685270247926759911e-03, + 4.677551731929244054e-03, + 4.669825986815681097e-03, + 4.662093025477176758e-03, + 4.654352860815856585e-03, + 4.646605505745203361e-03, + 4.638850973189488983e-03, + 4.631089276084012982e-03, + 4.623320427375402636e-03, + 4.615544440020947700e-03, + 4.607761326989073987e-03, + 4.599971101259020707e-03, + 4.592173775821235988e-03, + 4.584369363676824363e-03, + 4.576557877837787031e-03, + 4.568739331327237828e-03, + 4.560913737178774394e-03, + 4.553081108437289151e-03, + 4.545241458157828728e-03, + 4.537394799406878516e-03, + 4.529541145261275006e-03, + 4.521680508808635125e-03, + 4.513812903147546192e-03, + 4.505938341386918865e-03, + 4.498056836646796390e-03, + 4.490168402057238307e-03, + 4.482273050759559042e-03, + 4.474370795905238500e-03, + 4.466461650656690548e-03, + 4.458545628186631575e-03, + 4.450622741678310346e-03, + 4.442693004325762134e-03, + 4.434756429333251010e-03, + 4.426813029915525714e-03, + 4.418862819298043434e-03, + 4.410905810716342704e-03, + 4.402942017416816220e-03, + 4.394971452655603225e-03, + 4.386994129699864527e-03, + 4.379010061826717377e-03, + 4.371019262323595431e-03, + 4.363021744488552317e-03, + 4.355017521629486223e-03, + 4.347006607065045415e-03, + 4.338989014123462509e-03, + 4.330964756143831224e-03, + 4.322933846474953656e-03, + 4.314896298476179892e-03, + 4.306852125516731460e-03, + 4.298801340975939855e-03, + 4.290743958243499814e-03, + 4.282679990718954097e-03, + 4.274609451811944155e-03, + 4.266532354942067021e-03, + 4.258448713539216175e-03, + 4.250358541042986542e-03, + 4.242261850902939897e-03, + 4.234158656578862479e-03, + 4.226048971540181248e-03, + 4.217932809266307370e-03, + 4.209810183246453195e-03, + 4.201681106979850838e-03, + 4.193545593975676715e-03, + 4.185403657752338573e-03, + 4.177255311838701940e-03, + 4.169100569772909645e-03, + 4.160939445103242242e-03, + 4.152771951387398963e-03, + 4.144598102192792628e-03, + 4.136417911096764745e-03, + 4.128231391686071165e-03, + 4.120038557557145764e-03, + 4.111839422315977273e-03, + 4.103633999578388571e-03, + 4.095422302969485909e-03, + 4.087204346123927794e-03, + 4.078980142686169583e-03, + 4.070749706309861535e-03, + 4.062513050658249532e-03, + 4.054270189403904462e-03, + 4.046021136229115134e-03, + 4.037765904825301941e-03, + 4.029504508893263191e-03, + 4.021236962143412766e-03, + 4.012963278295158219e-03, + 4.004683471077667527e-03, + 3.996397554228748455e-03, + 3.988105541496147002e-03, + 3.979807446636343497e-03, + 3.971503283415472006e-03, + 3.963193065608516287e-03, + 3.954876806999705306e-03, + 3.946554521382749162e-03, + 3.938226222559855494e-03, + 3.929891924342883945e-03, + 3.921551640552689566e-03, + 3.913205385019022202e-03, + 3.904853171580737262e-03, + 3.896495014085627883e-03, + 3.888130926390758000e-03, + 3.879760922361870801e-03, + 3.871385015873681900e-03, + 3.863003220810071886e-03, + 3.854615551063499557e-03, + 3.846222020535714024e-03, + 3.837822643136711270e-03, + 3.829417432785945426e-03, + 3.821006403411235028e-03, + 3.812589568949536697e-03, + 3.804166943346293326e-03, + 3.795738540555712495e-03, + 3.787304374541057041e-03, + 3.778864459273647593e-03, + 3.770418808734149300e-03, + 3.761967436911344085e-03, + 3.753510357803096879e-03, + 3.745047585415536406e-03, + 3.736579133763376533e-03, + 3.728105016870194265e-03, + 3.719625248767783558e-03, + 3.711139843496555173e-03, + 3.702648815105325907e-03, + 3.694152177651626075e-03, + 3.685649945201180822e-03, + 3.677142131828089241e-03, + 3.668628751615157432e-03, + 3.660109818653172961e-03, + 3.651585347041746196e-03, + 3.643055350888125057e-03, + 3.634519844308464840e-03, + 3.625978841427164243e-03, + 3.617432356376324137e-03, + 3.608880403296925009e-03, + 3.600322996337676842e-03, + 3.591760149655885605e-03, + 3.583191877416696917e-03, + 3.574618193793398322e-03, + 3.566039112967678629e-03, + 3.557454649129032469e-03, + 3.548864816475115480e-03, + 3.540269629211539176e-03, + 3.531669101552193605e-03, + 3.523063247718703078e-03, + 3.514452081940652988e-03, + 3.505835618455860423e-03, + 3.497213871509702830e-03, + 3.488586855355911218e-03, + 3.479954584255451257e-03, + 3.471317072477783996e-03, + 3.462674334299846272e-03, + 3.454026384006373372e-03, + 3.445373235890159674e-03, + 3.436714904251381240e-03, + 3.428051403398442356e-03, + 3.419382747646779880e-03, + 3.410708951320192469e-03, + 3.402030028749669643e-03, + 3.393345994274197999e-03, + 3.384656862240142776e-03, + 3.375962647001430877e-03, + 3.367263362919863112e-03, + 3.358559024364474090e-03, + 3.349849645711860079e-03, + 3.341135241346379799e-03, + 3.332415825659582401e-03, + 3.323691413050579996e-03, + 3.314962017925805228e-03, + 3.306227654699374699e-03, + 3.297488337792526918e-03, + 3.288744081633826130e-03, + 3.279994900659484978e-03, + 3.271240809312618136e-03, + 3.262481822044135688e-03, + 3.253717953311504978e-03, + 3.244949217580122766e-03, + 3.236175629322121747e-03, + 3.227397203017199311e-03, + 3.218613953151950105e-03, + 3.209825894220089387e-03, + 3.201033040722750089e-03, + 3.192235407167874368e-03, + 3.183433008070573559e-03, + 3.174625857952899626e-03, + 3.165813971344229403e-03, + 3.156997362780642694e-03, + 3.148176046805196363e-03, + 3.139350037968201019e-03, + 3.130519350826576567e-03, + 3.121683999944271145e-03, + 3.112843999892000481e-03, + 3.103999365247646445e-03, + 3.095150110595608264e-03, + 3.086296250527094387e-03, + 3.077437799640409585e-03, + 3.068574772540210317e-03, + 3.059707183838290996e-03, + 3.050835048152857141e-03, + 3.041958380108804663e-03, + 3.033077194337988752e-03, + 3.024191505478603277e-03, + 3.015301328175554185e-03, + 3.006406677080262612e-03, + 2.997507566850994912e-03, + 2.988604012152254637e-03, + 2.979696027655087849e-03, + 2.970783628037304298e-03, + 2.961866827982924041e-03, + 2.952945642182486664e-03, + 2.944020085332852647e-03, + 2.935090172137602357e-03, + 2.926155917306362108e-03, + 2.917217335555138957e-03, + 2.908274441606533214e-03, + 2.899327250189074039e-03, + 2.890375776038051677e-03, + 2.881420033894321799e-03, + 2.872460038505651216e-03, + 2.863495804625633672e-03, + 2.854527347014028122e-03, + 2.845554680437047557e-03, + 2.836577819666649507e-03, + 2.827596779481388219e-03, + 2.818611574665212931e-03, + 2.809622220008814453e-03, + 2.800628730308436440e-03, + 2.791631120366719777e-03, + 2.782629404991999143e-03, + 2.773623598998564525e-03, + 2.764613717206948311e-03, + 2.755599774443297321e-03, + 2.746581785539643859e-03, + 2.737559765334184134e-03, + 2.728533728670554017e-03, + 2.719503690398707672e-03, + 2.710469665373685041e-03, + 2.701431668457007426e-03, + 2.692389714515516959e-03, + 2.683343818421784696e-03, + 2.674293995054380368e-03, + 2.665240259297142495e-03, + 2.656182626040040542e-03, + 2.647121110177971890e-03, + 2.638055726612137473e-03, + 2.628986490248795809e-03, + 2.619913416000165928e-03, + 2.610836518783687509e-03, + 2.601755813522278922e-03, + 2.592671315144661620e-03, + 2.583583038584677093e-03, + 2.574490998781716212e-03, + 2.565395210680449910e-03, + 2.556295689231229476e-03, + 2.547192449389478093e-03, + 2.538085506115906383e-03, + 2.528974874376864555e-03, + 2.519860569143653282e-03, + 2.510742605392937872e-03, + 2.501620998106512776e-03, + 2.492495762271563966e-03, + 2.483366912880580896e-03, + 2.474234464930579348e-03, + 2.465098433424415918e-03, + 2.455958833369559832e-03, + 2.446815679778952500e-03, + 2.437668987670290211e-03, + 2.428518772066299083e-03, + 2.419365047995026934e-03, + 2.410207830489188418e-03, + 2.401047134586557514e-03, + 2.391882975329741139e-03, + 2.382715367766565558e-03, + 2.373544326949417194e-03, + 2.364369867935554002e-03, + 2.355192005787388240e-03, + 2.346010755571803410e-03, + 2.336826132360594888e-03, + 2.327638151230199733e-03, + 2.318446827262112594e-03, + 2.309252175542216099e-03, + 2.300054211161084872e-03, + 2.290852949214268290e-03, + 2.281648404801537178e-03, + 2.272440593027772425e-03, + 2.263229529001755443e-03, + 2.254015227837514318e-03, + 2.244797704653128580e-03, + 2.235576974571576621e-03, + 2.226353052720041366e-03, + 2.217125954230142297e-03, + 2.207895694238371734e-03, + 2.198662287884904382e-03, + 2.189425750315020236e-03, + 2.180186096677860352e-03, + 2.170943342127302014e-03, + 2.161697501821238394e-03, + 2.152448590921846993e-03, + 2.143196624595886286e-03, + 2.133941618014037825e-03, + 2.124683586351193334e-03, + 2.115422544786757422e-03, + 2.106158508503881265e-03, + 2.096891492690365535e-03, + 2.087621512537414861e-03, + 2.078348583241036024e-03, + 2.069072720000796756e-03, + 2.059793938020714355e-03, + 2.050512252508507587e-03, + 2.041227678675890719e-03, + 2.031940231738955157e-03, + 2.022649926917012390e-03, + 2.013356779434012124e-03, + 2.004060804517288508e-03, + 1.994762017398433573e-03, + 1.985460433312592494e-03, + 1.976156067498716432e-03, + 1.966848935199859167e-03, + 1.957539051662540459e-03, + 1.948226432137113370e-03, + 1.938911091877545479e-03, + 1.929593046141815692e-03, + 1.920272310191252019e-03, + 1.910948899290829507e-03, + 1.901622828709444765e-03, + 1.892294113719180000e-03, + 1.882962769596196843e-03, + 1.873628811619475415e-03, + 1.864292255072135971e-03, + 1.854953115240792500e-03, + 1.845611407414900684e-03, + 1.836267146888082361e-03, + 1.826920348956864596e-03, + 1.817571028921583691e-03, + 1.808219202085620606e-03, + 1.798864883755705180e-03, + 1.789508089242206924e-03, + 1.780148833858451315e-03, + 1.770787132921154130e-03, + 1.761423001750167744e-03, + 1.752056455668866888e-03, + 1.742687510003507450e-03, + 1.733316180083518997e-03, + 1.723942481241781677e-03, + 1.714566428813976348e-03, + 1.705188038138988121e-03, + 1.695807324558653521e-03, + 1.686424303418175086e-03, + 1.677038990065455237e-03, + 1.667651399851384454e-03, + 1.658261548130140085e-03, + 1.648869450258415260e-03, + 1.639475121596350874e-03, + 1.630078577506242129e-03, + 1.620679833353977275e-03, + 1.611278904507774728e-03, + 1.601875806339085996e-03, + 1.592470554221826545e-03, + 1.583063163532688698e-03, + 1.573653649651425915e-03, + 1.564242027960175601e-03, + 1.554828313843783279e-03, + 1.545412522690061720e-03, + 1.535994669889154509e-03, + 1.526574770833932435e-03, + 1.517152840919740869e-03, + 1.507728895544803525e-03, + 1.498302950109583857e-03, + 1.488875020017049397e-03, + 1.479445120672968818e-03, + 1.470013267485163842e-03, + 1.460579475864420178e-03, + 1.451143761223199500e-03, + 1.441706138977084896e-03, + 1.432266624543504117e-03, + 1.422825233342642692e-03, + 1.413381980796682815e-03, + 1.403936882330095864e-03, + 1.394489953369937090e-03, + 1.385041209345174058e-03, + 1.375590665687098429e-03, + 1.366138337829087218e-03, + 1.356684241206995061e-03, + 1.347228391258493063e-03, + 1.337770803423369561e-03, + 1.328311493143816135e-03, + 1.318850475863765160e-03, + 1.309387767029303968e-03, + 1.299923382088407709e-03, + 1.290457336491373022e-03, + 1.280989645690125021e-03, + 1.271520325138538647e-03, + 1.262049390292708639e-03, + 1.252576856610196007e-03, + 1.243102739550844011e-03, + 1.233627054576013574e-03, + 1.224149817148878407e-03, + 1.214671042734712320e-03, + 1.205190746800230460e-03, + 1.195708944813995457e-03, + 1.186225652246163283e-03, + 1.176740884568896551e-03, + 1.167254657255704453e-03, + 1.157766985781722487e-03, + 1.148277885624011474e-03, + 1.138787372260906174e-03, + 1.129295461172401044e-03, + 1.119802167839916264e-03, + 1.110307507746700201e-03, + 1.100811496377160229e-03, + 1.091314149217171518e-03, + 1.081815481754347212e-03, + 1.072315509477297707e-03, + 1.062814247876526196e-03, + 1.053311712443170999e-03, + 1.043807918670429987e-03, + 1.034302882052385523e-03, + 1.024796618084406483e-03, + 1.015289142263423646e-03, + 1.005780470087189399e-03, + 9.962706170551813116e-04, + 9.867595986673147537e-04, + 9.772474304254080875e-04, + 9.677341278318716492e-04, + 9.582197063906510055e-04, + 9.487041816064436172e-04, + 9.391875689850162938e-04, + 9.296698840334637753e-04, + 9.201511422595795705e-04, + 9.106313591721312351e-04, + 9.011105502811541908e-04, + 8.915887310971916998e-04, + 8.820659171322210983e-04, + 8.725421238983468997e-04, + 8.630173669092748752e-04, + 8.534916616791097827e-04, + 8.439650237227604244e-04, + 8.344374685562308634e-04, + 8.249090116958455446e-04, + 8.153796686591930926e-04, + 8.058494549638126926e-04, + 7.963183861286703396e-04, + 7.867864776728447857e-04, + 7.772537451164649412e-04, + 7.677202039799424765e-04, + 7.581858697842636888e-04, + 7.486507580512815870e-04, + 7.391148843030558285e-04, + 7.295782640622498630e-04, + 7.200409128518912155e-04, + 7.105028461957843501e-04, + 7.009640796178281648e-04, + 6.914246286423240137e-04, + 6.818845087942608518e-04, + 6.723437355986611359e-04, + 6.628023245809740649e-04, + 6.532602912668367297e-04, + 6.437176511823743293e-04, + 6.341744198540606335e-04, + 6.246306128079588248e-04, + 6.150862455710664513e-04, + 6.055413336700242498e-04, + 5.959958926320402120e-04, + 5.864499379841274984e-04, + 5.769034852533902339e-04, + 5.673565499673274099e-04, + 5.578091476531564508e-04, + 5.482612938382264026e-04, + 5.387130040497714947e-04, + 5.291642938153157637e-04, + 5.196151786620061604e-04, + 5.100656741169082124e-04, + 5.005157957073023359e-04, + 4.909655589600162929e-04, + 4.814149794018275381e-04, + 4.718640725592240987e-04, + 4.623128539588078974e-04, + 4.527613391266273172e-04, + 4.432095435884736770e-04, + 4.336574828701739658e-04, + 4.241051724968222521e-04, + 4.145526279937106879e-04, + 4.049998648850264065e-04, + 3.954468986953226222e-04, + 3.858937449482051189e-04, + 3.763404191672753440e-04, + 3.667869368753551491e-04, + 3.572333135947819102e-04, + 3.476795648478087065e-04, + 3.381257061554098550e-04, + 3.285717530387418186e-04, + 3.190177210178470426e-04, + 3.094636256125816521e-04, + 2.999094823418459394e-04, + 2.903553067238825742e-04, + 2.808011142765633205e-04, + 2.712469205167338535e-04, + 2.616927409605000971e-04, + 2.521385911235283855e-04, + 2.425844865202711259e-04, + 2.330304426649021127e-04, + 2.234764750700129370e-04, + 2.139225992480783128e-04, + 2.043688307101527036e-04, + 1.948151849668055820e-04, + 1.852616775273488003e-04, + 1.757083239001314124e-04, + 1.661551395929408009e-04, + 1.566021401118065318e-04, + 1.470493409624650297e-04, + 1.374967576490574242e-04, + 1.279444056750624243e-04, + 1.183923005425258985e-04, + 1.088404577523553838e-04, + 9.928889280461425772e-05, + 8.973762119785778609e-05, + 8.018665842953322069e-05, + 7.063601999574328067e-05, + 6.108572139164559968e-05, + 5.153577811078932972e-05, + 4.198620564540943420e-05, + 3.243701948672096755e-05, + 2.288823512414852937e-05, + 1.333986804625972686e-05, + 3.791933739462152352e-06, +-5.755552310637384259e-06, +-1.530257461989683782e-05, +-2.484911770630284677e-05, +-3.439516608861156499e-05, +-4.394070428765161154e-05, +-5.348571682539059034e-05, +-6.303018822570578513e-05, +-7.257410301408935137e-05, +-8.211744571735443644e-05, +-9.166020086429875881e-05, +-1.012023529853040970e-04, +-1.107438866125734993e-04, +-1.202847862797311594e-04, +-1.298250365224862593e-04, +-1.393646218783385952e-04, +-1.489035268862833354e-04, +-1.584417360874763143e-04, +-1.679792340248309663e-04, +-1.775160052432593985e-04, +-1.870520342892686603e-04, +-1.965873057116267154e-04, +-2.061218040610655596e-04, +-2.156555138899892451e-04, +-2.251884197532430412e-04, +-2.347205062071801253e-04, +-2.442517578109646586e-04, +-2.537821591251062433e-04, +-2.633116947127606936e-04, +-2.728403491388007121e-04, +-2.823681069705812280e-04, +-2.918949527776487770e-04, +-3.014208711314461642e-04, +-3.109458466059744240e-04, +-3.204698637775000854e-04, +-3.299929072242612990e-04, +-3.395149615271300680e-04, +-3.490360112692102255e-04, +-3.585560410360798082e-04, +-3.680750354153860529e-04, +-3.775929789975071386e-04, +-3.871098563752668254e-04, +-3.966256521436286545e-04, +-4.061403509004753274e-04, +-4.156539372456676722e-04, +-4.251663957823522463e-04, +-4.346777111154986385e-04, +-4.441878678531896159e-04, +-4.536968506057036717e-04, +-4.632046439862705519e-04, +-4.727112326107896874e-04, +-4.822166010975264551e-04, +-4.917207340677766858e-04, +-5.012236161454718510e-04, +-5.107252319574097279e-04, +-5.202255661328595866e-04, +-5.297246033042198130e-04, +-5.392223281067257167e-04, +-5.487187251781588558e-04, +-5.582137791595040638e-04, +-5.677074746945521980e-04, +-5.771997964301364952e-04, +-5.866907290157356457e-04, +-5.961802571041299520e-04, +-6.056683653511111967e-04, +-6.151550384151894743e-04, +-6.246402609583589626e-04, +-6.341240176451697378e-04, +-6.436062931440237212e-04, +-6.530870721258214863e-04, +-6.625663392647261878e-04, +-6.720440792383019059e-04, +-6.815202767272138641e-04, +-6.909949164154657614e-04, +-7.004679829900034961e-04, +-7.099394611413732768e-04, +-7.194093355634268274e-04, +-7.288775909530357004e-04, +-7.383442120107403884e-04, +-7.478091834403653238e-04, +-7.572724899492372375e-04, +-7.667341162478016761e-04, +-7.761940470502819807e-04, +-7.856522670743732156e-04, +-7.951087610409663482e-04, +-8.045635136748990586e-04, +-8.140165097040379626e-04, +-8.234677338605688119e-04, +-8.329171708795391101e-04, +-8.423648055000494336e-04, +-8.518106224648533615e-04, +-8.612546065200637644e-04, +-8.706967424159217216e-04, +-8.801370149058581433e-04, +-8.895754087478053304e-04, +-8.990119087027244110e-04, +-9.084464995359134301e-04, +-9.178791660160592154e-04, +-9.273098929160302536e-04, +-9.367386650125584776e-04, +-9.461654670859626862e-04, +-9.555902839207998248e-04, +-9.650131003055722502e-04, +-9.744339010324468142e-04, +-9.838526708979976505e-04, +-9.932693947023007574e-04, +-1.002684057250211296e-03, +-1.012096643349916615e-03, +-1.021507137814127355e-03, +-1.030915525459665015e-03, +-1.040321791107181367e-03, +-1.049725919581918692e-03, +-1.059127895712785612e-03, +-1.068527704333640995e-03, +-1.077925330281848289e-03, +-1.087320758399572002e-03, +-1.096713973532833369e-03, +-1.106104960532292925e-03, +-1.115493704252945410e-03, +-1.124880189553831376e-03, +-1.134264401298704398e-03, +-1.143646324355616049e-03, +-1.153025943597156804e-03, +-1.162403243900076138e-03, +-1.171778210145908760e-03, +-1.181150827220710285e-03, +-1.190521080014747156e-03, +-1.199888953423162334e-03, +-1.209254432345580228e-03, +-1.218617501686325476e-03, +-1.227978146354054756e-03, +-1.237336351262380415e-03, +-1.246692101329603545e-03, +-1.256045381478409963e-03, +-1.265396176636633500e-03, +-1.274744471736442841e-03, +-1.284090251715097001e-03, +-1.293433501514653240e-03, +-1.302774206081687989e-03, +-1.312112350367927857e-03, +-1.321447919329880568e-03, +-1.330780897929051366e-03, +-1.340111271131548152e-03, +-1.349439023908749567e-03, +-1.358764141236995775e-03, +-1.368086608097307229e-03, +-1.377406409476050145e-03, +-1.386723530364505214e-03, +-1.396037955759149487e-03, +-1.405349670661220534e-03, +-1.414658660077389510e-03, +-1.423964909019468641e-03, +-1.433268402504117621e-03, +-1.442569125553599951e-03, +-1.451867063194871342e-03, +-1.461162200460855171e-03, +-1.470454522388999841e-03, +-1.479744014022560524e-03, +-1.489030660409680629e-03, +-1.498314446604151169e-03, +-1.507595357665122808e-03, +-1.516873378656694070e-03, +-1.526148494649117414e-03, +-1.535420690717324279e-03, +-1.544689951942230252e-03, +-1.553956263409806554e-03, +-1.563219610211833343e-03, +-1.572479977445620644e-03, +-1.581737350213709105e-03, +-1.590991713624525725e-03, +-1.600243052792086566e-03, +-1.609491352835719412e-03, +-1.618736598880818377e-03, +-1.627978776057909752e-03, +-1.637217869503949366e-03, +-1.646453864360873003e-03, +-1.655686745776880535e-03, +-1.664916498905515867e-03, +-1.674143108906426093e-03, +-1.683366560945051636e-03, +-1.692586840192276910e-03, +-1.701803931825545974e-03, +-1.711017821027474095e-03, +-1.720228492987095235e-03, +-1.729435932898955655e-03, +-1.738640125963867439e-03, +-1.747841057388618141e-03, +-1.757038712385688246e-03, +-1.766233076173889111e-03, +-1.775424133977978507e-03, +-1.784611871028884402e-03, +-1.793796272563323970e-03, +-1.802977323824446303e-03, +-1.812155010061534694e-03, +-1.821329316529732983e-03, +-1.830500228490793873e-03, +-1.839667731212153885e-03, +-1.848831809968215978e-03, +-1.857992450039030715e-03, +-1.867149636710925759e-03, +-1.876303355277154656e-03, +-1.885453591036581698e-03, +-1.894600329294941765e-03, +-1.903743555363943260e-03, +-1.912883254561994302e-03, +-1.922019412213937751e-03, +-1.931152013650751101e-03, +-1.940281044210187891e-03, +-1.949406489236408212e-03, +-1.958528334080186437e-03, +-1.967646564098540860e-03, +-1.976761164655344103e-03, +-1.985872121121081985e-03, +-1.994979418872531302e-03, +-2.004083043293420751e-03, +-2.013182979774034553e-03, +-2.022279213711440995e-03, +-2.031371730509106896e-03, +-2.040460515577544650e-03, +-2.049545554334016029e-03, +-2.058626832202250720e-03, +-2.067704334613187922e-03, +-2.076778047004087299e-03, +-2.085847954819761933e-03, +-2.094914043511187946e-03, +-2.103976298536736154e-03, +-2.113034705361296894e-03, +-2.122089249457000375e-03, +-2.131139916302944755e-03, +-2.140186691384903406e-03, +-2.149229560195969370e-03, +-2.158268508236168507e-03, +-2.167303521012689353e-03, +-2.176334584039478059e-03, +-2.185361682837906258e-03, +-2.194384802936463590e-03, +-2.203403929870484477e-03, +-2.212419049182792578e-03, +-2.221430146423377262e-03, +-2.230437207149182834e-03, +-2.239440216924760366e-03, +-2.248439161321457574e-03, +-2.257434025918583689e-03, +-2.266424796302076317e-03, +-2.275411458065701008e-03, +-2.284393996810176949e-03, +-2.293372398143918561e-03, +-2.302346647682713271e-03, +-2.311316731049505545e-03, +-2.320282633874986254e-03, +-2.329244341797191090e-03, +-2.338201840461777686e-03, +-2.347155115521620556e-03, +-2.356104152637420856e-03, +-2.365048937477451808e-03, +-2.373989455717269437e-03, +-2.382925693040349215e-03, +-2.391857635137690976e-03, +-2.400785267708047468e-03, +-2.409708576457561795e-03, +-2.418627547100372834e-03, +-2.427542165358337247e-03, +-2.436452416960761900e-03, +-2.445358287645124206e-03, +-2.454259763156199127e-03, +-2.463156829247269575e-03, +-2.472049471678863103e-03, +-2.480937676219457499e-03, +-2.489821428645624772e-03, +-2.498700714741743621e-03, +-2.507575520300210636e-03, +-2.516445831121085549e-03, +-2.525311633012696216e-03, +-2.534172911791362365e-03, +-2.543029653281134953e-03, +-2.551881843314411993e-03, +-2.560729467731536965e-03, +-2.569572512381045580e-03, +-2.578410963119300188e-03, +-2.587244805811079150e-03, +-2.596074026329320966e-03, +-2.604898610554841083e-03, +-2.613718544377053535e-03, +-2.622533813693111397e-03, +-2.631344404409084650e-03, +-2.640150302438643102e-03, +-2.648951493704113699e-03, +-2.657747964136156563e-03, +-2.666539699673480500e-03, +-2.675326686263506532e-03, +-2.684108909861588135e-03, +-2.692886356432139250e-03, +-2.701659011947328895e-03, +-2.710426862388262085e-03, +-2.719189893744112900e-03, +-2.727948092012830953e-03, +-2.736701443200919345e-03, +-2.745449933323080779e-03, +-2.754193548402895843e-03, +-2.762932274472525065e-03, +-2.771666097572426588e-03, +-2.780395003752082587e-03, +-2.789118979069135380e-03, +-2.797838009590586979e-03, +-2.806552081391433008e-03, +-2.815261180555793299e-03, +-2.823965293176500767e-03, +-2.832664405354878932e-03, +-2.841358503201407183e-03, +-2.850047572834894620e-03, +-2.858731600383637109e-03, +-2.867410571984119281e-03, +-2.876084473782156842e-03, +-2.884753291932096002e-03, +-2.893417012597467031e-03, +-2.902075621950755274e-03, +-2.910729106173077629e-03, +-2.919377451454872093e-03, +-2.928020643995438502e-03, +-2.936658670003215645e-03, +-2.945291515695403536e-03, +-2.953919167298548875e-03, +-2.962541611048282678e-03, +-2.971158833189077846e-03, +-2.979770819974814685e-03, +-2.988377557668440033e-03, +-2.996979032542168488e-03, +-3.005575230877131562e-03, +-3.014166138963958810e-03, +-3.022751743102536272e-03, +-3.031332029601717208e-03, +-3.039906984780038537e-03, +-3.048476594964943248e-03, +-3.057040846493500746e-03, +-3.065599725712131463e-03, +-3.074153218976346646e-03, +-3.082701312651325593e-03, +-3.091243993111586919e-03, +-3.099781246741176340e-03, +-3.108313059933302380e-03, +-3.116839419090966078e-03, +-3.125360310626634427e-03, +-3.133875720962056924e-03, +-3.142385636528779481e-03, +-3.150890043767851697e-03, +-3.159388929129978204e-03, +-3.167882279075208592e-03, +-3.176370080073508562e-03, +-3.184852318604491916e-03, +-3.193328981157167717e-03, +-3.201800054230619433e-03, +-3.210265524333174008e-03, +-3.218725377983575400e-03, +-3.227179601709651013e-03, +-3.235628182049481334e-03, +-3.244071105550588949e-03, +-3.252508358770596006e-03, +-3.260939928276968339e-03, +-3.269365800646670695e-03, +-3.277785962467222747e-03, +-3.286200400335381570e-03, +-3.294609100858309110e-03, +-3.303012050652761201e-03, +-3.311409236345732449e-03, +-3.319800644574222043e-03, +-3.328186261984956637e-03, +-3.336566075235008772e-03, +-3.344940070991469019e-03, +-3.353308235931266000e-03, +-3.361670556741787417e-03, +-3.370027020120069505e-03, +-3.378377612773967968e-03, +-3.386722321420835690e-03, +-3.395061132788680658e-03, +-3.403394033615349777e-03, +-3.411721010649195873e-03, +-3.420042050648821382e-03, +-3.428357140382724474e-03, +-3.436666266630353760e-03, +-3.444969416180805946e-03, +-3.453266575833995912e-03, +-3.461557732399811460e-03, +-3.469842872698781621e-03, +-3.478121983561858945e-03, +-3.486395051830118094e-03, +-3.494662064355333504e-03, +-3.502923007999693590e-03, +-3.511177869635923477e-03, +-3.519426636146968414e-03, +-3.527669294426593553e-03, +-3.535905831379088614e-03, +-3.544136233919042804e-03, +-3.552360488971992736e-03, +-3.560578583473614483e-03, +-3.568790504370867624e-03, +-3.576996238620775304e-03, +-3.585195773191075189e-03, +-3.593389095060700415e-03, +-3.601576191218675005e-03, +-3.609757048665191131e-03, +-3.617931654410844536e-03, +-3.626099995477251228e-03, +-3.634262058896843214e-03, +-3.642417831712566664e-03, +-3.650567300978491657e-03, +-3.658710453759432719e-03, +-3.666847277131180406e-03, +-3.674977758180149583e-03, +-3.683101884003913730e-03, +-3.691219641711009341e-03, +-3.699331018420646666e-03, +-3.707436001263268287e-03, +-3.715534577380240778e-03, +-3.723626733924027300e-03, +-3.731712458057856278e-03, +-3.739791736956284314e-03, +-3.747864557804941182e-03, +-3.755930907800293476e-03, +-3.763990774150260867e-03, +-3.772044144073479280e-03, +-3.780091004800352136e-03, +-3.788131343571839085e-03, +-3.796165147640531094e-03, +-3.804192404269911461e-03, +-3.812213100734942149e-03, +-3.820227224321845211e-03, +-3.828234762327871205e-03, +-3.836235702061815273e-03, +-3.844230030843711829e-03, +-3.852217736005021480e-03, +-3.860198804888299254e-03, +-3.868173224847744514e-03, +-3.876140983248950282e-03, +-3.884102067468666892e-03, +-3.892056464895348854e-03, +-3.900004162928902025e-03, +-3.907945148980455918e-03, +-3.915879410472978238e-03, +-3.923806934840533278e-03, +-3.931727709529322760e-03, +-3.939641721996491042e-03, +-3.947548959711218858e-03, +-3.955449410153905401e-03, +-3.963343060816844864e-03, +-3.971229899203963624e-03, +-3.979109912830599942e-03, +-3.986983089223994012e-03, +-3.994849415923032963e-03, +-4.002708880478392239e-03, +-4.010561470452207733e-03, +-4.018407173418650849e-03, +-4.026245976963665693e-03, +-4.034077868684704526e-03, +-4.041902836191334919e-03, +-4.049720867104832089e-03, +-4.057531949058451257e-03, +-4.065336069697015643e-03, +-4.073133216677538374e-03, +-4.080923377668915428e-03, +-4.088706540351732220e-03, +-4.096482692418864681e-03, +-4.104251821574724651e-03, +-4.112013915536318065e-03, +-4.119768962032156409e-03, +-4.127516948802825714e-03, +-4.135257863601182575e-03, +-4.142991694192017620e-03, +-4.150718428352337397e-03, +-4.158438053870948045e-03, +-4.166150558549084996e-03, +-4.173855930200083379e-03, +-4.181554156649222760e-03, +-4.189245225734200724e-03, +-4.196929125304828430e-03, +-4.204605843223221430e-03, +-4.212275367363509104e-03, +-4.219937685612285688e-03, +-4.227592785868461087e-03, +-4.235240656042970307e-03, +-4.242881284059416176e-03, +-4.250514657853288712e-03, +-4.258140765373053666e-03, +-4.265759594578941681e-03, +-4.273371133443901529e-03, +-4.280975369953329487e-03, +-4.288572292104750154e-03, +-4.296161887908508600e-03, +-4.303744145386994083e-03, +-4.311319052575648784e-03, +-4.318886597521854991e-03, +-4.326446768285924747e-03, +-4.333999552940376483e-03, +-4.341544939570560376e-03, +-4.349082916274383398e-03, +-4.356613471162112429e-03, +-4.364136592356876454e-03, +-4.371652267994456664e-03, +-4.379160486222999360e-03, +-4.386661235203724585e-03, +-4.394154503110058764e-03, +-4.401640278128763142e-03, +-4.409118548458726417e-03, +-4.416589302311934445e-03, +-4.424052527913143254e-03, +-4.431508213499602347e-03, +-4.438956347321749464e-03, +-4.446396917642404800e-03, +-4.453829912737801433e-03, +-4.461255320896476834e-03, +-4.468673130420238240e-03, +-4.476083329623461830e-03, +-4.483485906833674720e-03, +-4.490880850391363276e-03, +-4.498268148649713777e-03, +-4.505647789975100737e-03, +-4.513019762746827562e-03, +-4.520384055357276609e-03, +-4.527740656211607338e-03, +-4.535089553728274998e-03, +-4.542430736338792102e-03, +-4.549764192487477758e-03, +-4.557089910632053549e-03, +-4.564407879243214186e-03, +-4.571718086804893791e-03, +-4.579020521813920684e-03, +-4.586315172780569896e-03, +-4.593602028228254384e-03, +-4.600881076693372380e-03, +-4.608152306725892856e-03, +-4.615415706888577503e-03, +-4.622671265758044983e-03, +-4.629918971923686725e-03, +-4.637158813988277554e-03, +-4.644390780568049409e-03, +-4.651614860292523947e-03, +-4.658831041804616623e-03, +-4.666039313760377352e-03, +-4.673239664829465824e-03, +-4.680432083694986700e-03, +-4.687616559053179970e-03, +-4.694793079613968252e-03, +-4.701961634100676642e-03, +-4.709122211250147197e-03, +-4.716274799812500418e-03, +-4.723419388551576732e-03, +-4.730555966244783840e-03, +-4.737684521682773188e-03, +-4.744805043670139930e-03, +-4.751917521024610208e-03, +-4.759021942578083725e-03, +-4.766118297175507904e-03, +-4.773206573675863214e-03, +-4.780286760951466679e-03, +-4.787358847888519182e-03, +-4.794422823386924187e-03, +-4.801478676359958141e-03, +-4.808526395735159518e-03, +-4.815565970453284522e-03, +-4.822597389469179645e-03, +-4.829620641751204875e-03, +-4.836635716281692532e-03, +-4.843642602056811956e-03, +-4.850641288086287618e-03, +-4.857631763393970709e-03, +-4.864614017017497398e-03, +-4.871588038008189091e-03, +-4.878553815431565036e-03, +-4.885511338366640630e-03, +-4.892460595906924017e-03, +-4.899401577159305868e-03, +-4.906334271245016074e-03, +-4.913258667298957619e-03, +-4.920174754470265158e-03, +-4.927082521922083840e-03, +-4.933981958831242312e-03, +-4.940873054389190340e-03, +-4.947755797800880775e-03, +-4.954630178285747942e-03, +-4.961496185076964306e-03, +-4.968353807422085794e-03, +-4.975203034582781174e-03, +-4.982043855834635167e-03, +-4.988876260467612483e-03, +-4.995700237785791545e-03, +-5.002515777107529281e-03, +-5.009322867765114186e-03, +-5.016121499105372604e-03, +-5.022911660489284488e-03, +-5.029693341291931359e-03, +-5.036466530902949067e-03, +-5.043231218725878137e-03, +-5.049987394179109197e-03, +-5.056735046694835201e-03, +-5.063474165719879759e-03, +-5.070204740715451679e-03, +-5.076926761156870006e-03, +-5.083640216534194602e-03, +-5.090345096351532247e-03, +-5.097041390127712325e-03, +-5.103729087395937267e-03, +-5.110408177703687146e-03, +-5.117078650613133411e-03, +-5.123740495700845714e-03, +-5.130393702557994873e-03, +-5.137038260790022411e-03, +-5.143674160017159235e-03, +-5.150301389874177571e-03, +-5.156919940010210555e-03, +-5.163529800089185044e-03, +-5.170130959789574418e-03, +-5.176723408804520012e-03, +-5.183307136841609070e-03, +-5.189882133623258988e-03, +-5.196448388886608892e-03, +-5.203005892383215196e-03, +-5.209554633879644008e-03, +-5.216094603156810200e-03, +-5.222625790010869060e-03, +-5.229148184252223157e-03, +-5.235661775706384503e-03, +-5.242166554213361328e-03, +-5.248662509628181962e-03, +-5.255149631820663254e-03, +-5.261627910675256183e-03, +-5.268097336091437030e-03, +-5.274557897983512232e-03, +-5.281009586280717254e-03, +-5.287452390926913881e-03, +-5.293886301881163547e-03, +-5.300311309117371715e-03, +-5.306727402624226292e-03, +-5.313134572405534169e-03, +-5.319532808480102390e-03, +-5.325922100881479680e-03, +-5.332302439658508954e-03, +-5.338673814874701079e-03, +-5.345036216609077954e-03, +-5.351389634955196727e-03, +-5.357734060022065724e-03, +-5.364069481933455771e-03, +-5.370395890828441425e-03, +-5.376713276861204947e-03, +-5.383021630200843753e-03, +-5.389320941031812764e-03, +-5.395611199553603486e-03, +-5.401892395980982531e-03, +-5.408164520543694981e-03, +-5.414427563486856436e-03, +-5.420681515070803827e-03, +-5.426926365570928883e-03, +-5.433162105278027676e-03, +-5.439388724498088121e-03, +-5.445606213552460842e-03, +-5.451814562777579018e-03, +-5.458013762525361703e-03, +-5.464203803163042092e-03, +-5.470384675073009656e-03, +-5.476556368653247298e-03, +-5.482718874316750216e-03, +-5.488872182492412349e-03, +-5.495016283624065342e-03, +-5.501151168171022378e-03, +-5.507276826608168384e-03, +-5.513393249425743194e-03, +-5.519500427129506344e-03, +-5.525598350240480336e-03, +-5.531687009295364367e-03, +-5.537766394846380807e-03, +-5.543836497461015859e-03, +-5.549897307722481861e-03, +-5.555948816229509986e-03, +-5.561991013596398817e-03, +-5.568023890452858220e-03, +-5.574047437444306849e-03, +-5.580061645231843524e-03, +-5.586066504491936716e-03, +-5.592062005916935419e-03, +-5.598048140214527922e-03, +-5.604024898108470390e-03, +-5.609992270337775012e-03, +-5.615950247657383078e-03, +-5.621898820837913438e-03, +-5.627837980665491638e-03, +-5.633767717942288547e-03, +-5.639688023485817797e-03, +-5.645598888129856052e-03, +-5.651500302723439471e-03, +-5.657392258131767500e-03, +-5.663274745235514183e-03, +-5.669147754931401495e-03, +-5.675011278131974687e-03, +-5.680865305765374178e-03, +-5.686709828775848158e-03, +-5.692544838123489784e-03, +-5.698370324784030744e-03, +-5.704186279749426727e-03, +-5.709992694027169607e-03, +-5.715789558641139190e-03, +-5.721576864630695085e-03, +-5.727354603051413098e-03, +-5.733122764974797267e-03, +-5.738881341488190520e-03, +-5.744630323695125093e-03, +-5.750369702714846348e-03, +-5.756099469683066509e-03, +-5.761819615751080821e-03, +-5.767530132086528226e-03, +-5.773231009872863140e-03, +-5.778922240309809083e-03, +-5.784603814613166126e-03, +-5.790275724014633078e-03, +-5.795937959762235102e-03, +-5.801590513120034875e-03, +-5.807233375368309539e-03, +-5.812866537803293952e-03, +-5.818489991737585756e-03, +-5.824103728499950214e-03, +-5.829707739435169289e-03, +-5.835302015904381655e-03, +-5.840886549284952586e-03, +-5.846461330970466157e-03, +-5.852026352370608142e-03, +-5.857581604911506028e-03, +-5.863127080035533852e-03, +-5.868662769201202049e-03, +-5.874188663883520012e-03, +-5.879704755573548526e-03, +-5.885211035779071981e-03, +-5.890707496023834221e-03, +-5.896194127848025136e-03, +-5.901670922808275460e-03, +-5.907137872477576969e-03, +-5.912594968445346669e-03, +-5.918042202317220363e-03, +-5.923479565715414341e-03, +-5.928907050278612624e-03, +-5.934324647661723233e-03, +-5.939732349536294524e-03, +-5.945130147590296614e-03, +-5.950518033528212451e-03, +-5.955895999070853070e-03, +-5.961264035955708002e-03, +-5.966622135936800429e-03, +-5.971970290784456466e-03, +-5.977308492285838583e-03, +-5.982636732244297692e-03, +-5.987955002480247445e-03, +-5.993263294830208400e-03, +-5.998561601147603395e-03, +-6.003849913302210239e-03, +-6.009128223180638766e-03, +-6.014396522686088833e-03, +-6.019654803738171654e-03, +-6.024903058273576792e-03, +-6.030141278245254241e-03, +-6.035369455623084030e-03, +-6.040587582393460754e-03, +-6.045795650559585878e-03, +-6.050993652141446050e-03, +-6.056181579175545088e-03, +-6.061359423715300364e-03, +-6.066527177830866729e-03, +-6.071684833609028095e-03, +-6.076832383153543508e-03, +-6.081969818584668369e-03, +-6.087097132039877810e-03, +-6.092214315673040968e-03, +-6.097321361655146967e-03, +-6.102418262173803579e-03, +-6.107505009433585041e-03, +-6.112581595655976544e-03, +-6.117648013079093200e-03, +-6.122704253958317563e-03, +-6.127750310565542417e-03, +-6.132786175189831705e-03, +-6.137811840136966034e-03, +-6.142827297729813035e-03, +-6.147832540308157366e-03, +-6.152827560228603561e-03, +-6.157812349864872671e-03, +-6.162786901607603639e-03, +-6.167751207864485136e-03, +-6.172705261060032651e-03, +-6.177649053635926764e-03, +-6.182582578050899516e-03, +-6.187505826780516707e-03, +-6.192418792317633258e-03, +-6.197321467171886672e-03, +-6.202213843870323269e-03, +-6.207095914956752003e-03, +-6.211967672992224111e-03, +-6.216829110554970665e-03, +-6.221680220240068636e-03, +-6.226520994660022026e-03, +-6.231351426444208495e-03, +-6.236171508239339058e-03, +-6.240981232709264664e-03, +-6.245780592534844362e-03, +-6.250569580414280964e-03, +-6.255348189062917216e-03, +-6.260116411213344223e-03, +-6.264874239615208888e-03, +-6.269621667035540913e-03, +-6.274358686258609680e-03, +-6.279085290085758587e-03, +-6.283801471335738117e-03, +-6.288507222844554045e-03, +-6.293202537465483054e-03, +-6.297887408068978191e-03, +-6.302561827542938616e-03, +-6.307225788792571695e-03, +-6.311879284740221259e-03, +-6.316522308325831642e-03, +-6.321154852506358744e-03, +-6.325776910256512495e-03, +-6.330388474568012652e-03, +-6.334989538450182082e-03, +-6.339580094929548638e-03, +-6.344160137050173023e-03, +-6.348729657873516084e-03, +-6.353288650478329525e-03, +-6.357837107960890091e-03, +-6.362375023434936258e-03, +-6.366902390031613582e-03, +-6.371419200899460823e-03, +-6.375925449204555666e-03, +-6.380421128130519919e-03, +-6.384906230878281859e-03, +-6.389380750666400627e-03, +-6.393844680730985559e-03, +-6.398298014325481085e-03, +-6.402740744721081324e-03, +-6.407172865206246098e-03, +-6.411594369087358393e-03, +-6.416005249687979292e-03, +-6.420405500349538400e-03, +-6.424795114430771788e-03, +-6.429174085308228537e-03, +-6.433542406376003588e-03, +-6.437900071045672690e-03, +-6.442247072746595977e-03, +-6.446583404925650823e-03, +-6.450909061047474698e-03, +-6.455224034594167666e-03, +-6.459528319065632393e-03, +-6.463821907979442304e-03, +-6.468104794870730562e-03, +-6.472376973292409512e-03, +-6.476638436815063994e-03, +-6.480889179027070172e-03, +-6.485129193534298030e-03, +-6.489358473960557191e-03, +-6.493577013947347994e-03, +-6.497784807153798164e-03, +-6.501981847256950789e-03, +-6.506168127951415629e-03, +-6.510343642949847041e-03, +-6.514508385982447844e-03, +-6.518662350797258150e-03, +-6.522805531160163171e-03, +-6.526937920854875876e-03, +-6.531059513682936114e-03, +-6.535170303463542357e-03, +-6.539270284033947209e-03, +-6.543359449249202403e-03, +-6.547437792982038242e-03, +-6.551505309123274723e-03, +-6.555561991581513627e-03, +-6.559607834283271224e-03, +-6.563642831172823017e-03, +-6.567666976212515988e-03, +-6.571680263382561303e-03, +-6.575682686680987474e-03, +-6.579674240123910105e-03, +-6.583654917745164134e-03, +-6.587624713596865883e-03, +-6.591583621748711361e-03, +-6.595531636288586887e-03, +-6.599468751322345311e-03, +-6.603394960973686320e-03, +-6.607310259384440061e-03, +-6.611214640714276579e-03, +-6.615108099141123882e-03, +-6.618990628860637986e-03, +-6.622862224086727666e-03, +-6.626722879051149401e-03, +-6.630572588003801407e-03, +-6.634411345212692414e-03, +-6.638239144963712680e-03, +-6.642055981560951450e-03, +-6.645861849326551232e-03, +-6.649656742600763316e-03, +-6.653440655741832410e-03, +-6.657213583126098122e-03, +-6.660975519148210934e-03, +-6.664726458220681174e-03, +-6.668466394774295349e-03, +-6.672195323257964356e-03, +-6.675913238138648023e-03, +-6.679620133901570216e-03, +-6.683316005049935206e-03, +-6.687000846105407327e-03, +-6.690674651607516829e-03, +-6.694337416114168153e-03, +-6.697989134201338089e-03, +-6.701629800463266597e-03, +-6.705259409512427313e-03, +-6.708877955979396582e-03, +-6.712485434513059020e-03, +-6.716081839780492155e-03, +-6.719667166467098267e-03, +-6.723241409276325097e-03, +-6.726804562930053556e-03, +-6.730356622168380022e-03, +-6.733897581749584242e-03, +-6.737427436450308879e-03, +-6.740946181065495327e-03, +-6.744453810408312586e-03, +-6.747950319310200631e-03, +-6.751435702620966692e-03, +-6.754909955208784379e-03, +-6.758373071959948228e-03, +-6.761825047779327323e-03, +-6.765265877589863100e-03, +-6.768695556333153077e-03, +-6.772114078968865386e-03, +-6.775521440475095261e-03, +-6.778917635848379780e-03, +-6.782302660103580773e-03, +-6.785676508273975893e-03, +-6.789039175411102495e-03, +-6.792390656585036920e-03, +-6.795730946884214092e-03, +-6.799060041415391081e-03, +-6.802377935303821448e-03, +-6.805684623693191056e-03, +-6.808980101745601594e-03, +-6.812264364641521137e-03, +-6.815537407579933329e-03, +-6.818799225778260191e-03, +-6.822049814472323087e-03, +-6.825289168916513598e-03, +-6.828517284383532442e-03, +-6.831734156164779789e-03, +-6.834939779569892959e-03, +-6.838134149927195711e-03, +-6.841317262583371250e-03, +-6.844489112903679937e-03, +-6.847649696271920251e-03, +-6.850799008090246653e-03, +-6.853937043779590246e-03, +-6.857063798779165255e-03, +-6.860179268546919180e-03, +-6.863283448559130348e-03, +-6.866376334310836382e-03, +-6.869457921315523692e-03, +-6.872528205105217676e-03, +-6.875587181230575530e-03, +-6.878634845260832471e-03, +-6.881671192783718471e-03, +-6.884696219405638667e-03, +-6.887709920751498155e-03, +-6.890712292464982146e-03, +-6.893703330208140502e-03, +-6.896683029661852642e-03, +-6.899651386525425083e-03, +-6.902608396516924510e-03, +-6.905554055373039866e-03, +-6.908488358848951377e-03, +-6.911411302718745153e-03, +-6.914322882774868485e-03, +-6.917223094828658936e-03, +-6.920111934709894178e-03, +-6.922989398267213532e-03, +-6.925855481367836075e-03, +-6.928710179897640438e-03, +-6.931553489761228121e-03, +-6.934385406881884463e-03, +-6.937205927201623747e-03, +-6.940015046681038274e-03, +-6.942812761299555109e-03, +-6.945599067055297296e-03, +-6.948373959964995392e-03, +-6.951137436064261550e-03, +-6.953889491407250385e-03, +-6.956630122067103926e-03, +-6.959359324135432935e-03, +-6.962077093722755794e-03, +-6.964783426958338908e-03, +-6.967478319990113439e-03, +-6.970161768984873933e-03, +-6.972833770128038060e-03, +-6.975494319624020445e-03, +-6.978143413695838022e-03, +-6.980781048585262688e-03, +-6.983407220552978294e-03, +-6.986021925878408041e-03, +-6.988625160859813362e-03, +-6.991216921814126517e-03, +-6.993797205077231620e-03, +-6.996366007003811116e-03, +-6.998923323967247770e-03, +-7.001469152359885741e-03, +-7.004003488592803334e-03, +-7.006526329096001218e-03, +-7.009037670318195995e-03, +-7.011537508727036169e-03, +-7.014025840809053579e-03, +-7.016502663069505534e-03, +-7.018967972032617679e-03, +-7.021421764241353274e-03, +-7.023864036257763607e-03, +-7.026294784662523961e-03, +-7.028714006055367287e-03, +-7.031121697054768492e-03, +-7.033517854298180355e-03, +-7.035902474441959806e-03, +-7.038275554161232614e-03, +-7.040637090150163140e-03, +-7.042987079121777391e-03, +-7.045325517807969964e-03, +-7.047652402959565625e-03, +-7.049967731346319308e-03, +-7.052271499756928262e-03, +-7.054563704998948782e-03, +-7.056844343898908967e-03, +-7.059113413302293104e-03, +-7.061370910073458407e-03, +-7.063616831095792872e-03, +-7.065851173271517523e-03, +-7.068073933521924930e-03, +-7.070285108787170182e-03, +-7.072484696026427875e-03, +-7.074672692217756804e-03, +-7.076849094358283847e-03, +-7.079013899464053038e-03, +-7.081167104570044654e-03, +-7.083308706730284503e-03, +-7.085438703017765856e-03, +-7.087557090524479811e-03, +-7.089663866361304266e-03, +-7.091759027658252855e-03, +-7.093842571564272850e-03, +-7.095914495247299808e-03, +-7.097974795894295731e-03, +-7.100023470711215243e-03, +-7.102060516923081046e-03, +-7.104085931773826933e-03, +-7.106099712526469520e-03, +-7.108101856463105647e-03, +-7.110092360884719825e-03, +-7.112071223111455717e-03, +-7.114038440482409707e-03, +-7.115994010355773149e-03, +-7.117937930108713535e-03, +-7.119870197137525419e-03, +-7.121790808857443068e-03, +-7.123699762702834747e-03, +-7.125597056127122922e-03, +-7.127482686602718345e-03, +-7.129356651621164033e-03, +-7.131218948693035520e-03, +-7.133069575347952135e-03, +-7.134908529134644656e-03, +-7.136735807620874644e-03, +-7.138551408393570621e-03, +-7.140355329058576533e-03, +-7.142147567240947521e-03, +-7.143928120584823287e-03, +-7.145696986753356100e-03, +-7.147454163428854784e-03, +-7.149199648312630322e-03, +-7.150933439125242187e-03, +-7.152655533606193904e-03, +-7.154365929514198454e-03, +-7.156064624627021288e-03, +-7.157751616741497673e-03, +-7.159426903673693152e-03, +-7.161090483258620784e-03, +-7.162742353350602838e-03, +-7.164382511822894352e-03, +-7.166010956567988449e-03, +-7.167627685497452404e-03, +-7.169232696541962338e-03, +-7.170825987651413373e-03, +-7.172407556794710599e-03, +-7.173977401959951219e-03, +-7.175535521154380314e-03, +-7.177081912404363086e-03, +-7.178616573755391798e-03, +-7.180139503272077971e-03, +-7.181650699038283348e-03, +-7.183150159156869233e-03, +-7.184637881749956698e-03, +-7.186113864958776527e-03, +-7.187578106943709987e-03, +-7.189030605884287953e-03, +-7.190471359979164895e-03, +-7.191900367446283672e-03, +-7.193317626522593641e-03, +-7.194723135464303927e-03, +-7.196116892546702143e-03, +-7.197498896064341740e-03, +-7.198869144330909305e-03, +-7.200227635679198532e-03, +-7.201574368461260284e-03, +-7.202909341048264677e-03, +-7.204232551830614707e-03, +-7.205543999217791859e-03, +-7.206843681638557333e-03, +-7.208131597540812403e-03, +-7.209407745391613158e-03, +-7.210672123677247698e-03, +-7.211924730903137258e-03, +-7.213165565593981053e-03, +-7.214394626293529900e-03, +-7.215611911564822137e-03, +-7.216817419990097758e-03, +-7.218011150170705603e-03, +-7.219193100727278566e-03, +-7.220363270299532364e-03, +-7.221521657546527487e-03, +-7.222668261146424594e-03, +-7.223803079796563449e-03, +-7.224926112213548787e-03, +-7.226037357133136690e-03, +-7.227136813310363825e-03, +-7.228224479519348815e-03, +-7.229300354553511686e-03, +-7.230364437225458504e-03, +-7.231416726366953623e-03, +-7.232457220829018561e-03, +-7.233485919481881694e-03, +-7.234502821214976523e-03, +-7.235507924936902639e-03, +-7.236501229575539353e-03, +-7.237482734077927728e-03, +-7.238452437410349515e-03, +-7.239410338558283781e-03, +-7.240356436526410380e-03, +-7.241290730338691486e-03, +-7.242213219038209394e-03, +-7.243123901687319177e-03, +-7.244022777367613991e-03, +-7.244909845179835738e-03, +-7.245785104244005168e-03, +-7.246648553699327339e-03, +-7.247500192704250596e-03, +-7.248340020436400653e-03, +-7.249168036092664726e-03, +-7.249984238889166377e-03, +-7.250788628061174447e-03, +-7.251581202863274789e-03, +-7.252361962569185520e-03, +-7.253130906471895803e-03, +-7.253888033883612065e-03, +-7.254633344135750193e-03, +-7.255366836578979774e-03, +-7.256088510583089644e-03, +-7.256798365537272394e-03, +-7.257496400849777415e-03, +-7.258182615948152033e-03, +-7.258857010279153900e-03, +-7.259519583308765740e-03, +-7.260170334522191016e-03, +-7.260809263423821831e-03, +-7.261436369537353427e-03, +-7.262051652405600299e-03, +-7.262655111590713905e-03, +-7.263246746673965824e-03, +-7.263826557255898680e-03, +-7.264394542956252414e-03, +-7.264950703414040610e-03, +-7.265495038287403048e-03, +-7.266027547253808665e-03, +-7.266548230009882946e-03, +-7.267057086271464308e-03, +-7.267554115773614508e-03, +-7.268039318270681087e-03, +-7.268512693536118702e-03, +-7.268974241362686009e-03, +-7.269423961562327709e-03, +-7.269861853966192757e-03, +-7.270287918424657783e-03, +-7.270702154807332299e-03, +-7.271104563003015324e-03, +-7.271495142919737892e-03, +-7.271873894484703199e-03, +-7.272240817644382016e-03, +-7.272595912364421614e-03, +-7.272939178629693469e-03, +-7.273270616444269844e-03, +-7.273590225831425525e-03, +-7.273898006833688992e-03, +-7.274193959512711451e-03, +-7.274478083949429026e-03, +-7.274750380243947406e-03, +-7.275010848515559188e-03, +-7.275259488902795051e-03, +-7.275496301563369982e-03, +-7.275721286674198020e-03, +-7.275934444431401797e-03, +-7.276135775050283916e-03, +-7.276325278765350367e-03, +-7.276502955830322673e-03, +-7.276668806518068501e-03, +-7.276822831120699671e-03, +-7.276965029949490626e-03, +-7.277095403334920068e-03, +-7.277213951626632787e-03, +-7.277320675193494313e-03, +-7.277415574423519787e-03, +-7.277498649723909523e-03, +-7.277569901521095848e-03, +-7.277629330260630344e-03, +-7.277676936407259309e-03, +-7.277712720444948040e-03, +-7.277736682876792366e-03, +-7.277748824225042934e-03, +-7.277749145031194543e-03, +-7.277737645855855177e-03, +-7.277714327278816259e-03, +-7.277679189899039641e-03, +-7.277632234334626381e-03, +-7.277573461222900872e-03, +-7.277502871220285080e-03, +-7.277420465002391349e-03, +-7.277326243263989441e-03, +-7.277220206718986589e-03, +-7.277102356100433565e-03, +-7.276972692160602746e-03, +-7.276831215670803363e-03, +-7.276677927421584466e-03, +-7.276512828222617829e-03, +-7.276335918902672797e-03, +-7.276147200309700420e-03, +-7.275946673310787483e-03, +-7.275734338792133951e-03, +-7.275510197659097213e-03, +-7.275274250836153041e-03, +-7.275026499266881719e-03, +-7.274766943914047837e-03, +-7.274495585759496209e-03, +-7.274212425804163148e-03, +-7.273917465068188357e-03, +-7.273610704590748391e-03, +-7.273292145430175493e-03, +-7.272961788663869984e-03, +-7.272619635388408686e-03, +-7.272265686719440840e-03, +-7.271899943791637795e-03, +-7.271522407758914189e-03, +-7.271133079794174676e-03, +-7.270731961089457913e-03, +-7.270319052855905330e-03, +-7.269894356323687405e-03, +-7.269457872742159793e-03, +-7.269009603379656889e-03, +-7.268549549523645355e-03, +-7.268077712480672074e-03, +-7.267594093576336400e-03, +-7.267098694155305766e-03, +-7.266591515581352981e-03, +-7.266072559237275567e-03, +-7.265541826524911373e-03, +-7.264999318865234847e-03, +-7.264445037698213925e-03, +-7.263878984482857737e-03, +-7.263301160697296401e-03, +-7.262711567838591072e-03, +-7.262110207422968998e-03, +-7.261497080985597138e-03, +-7.260872190080716604e-03, +-7.260235536281610565e-03, +-7.259587121180592975e-03, +-7.258926946388948725e-03, +-7.258255013537050736e-03, +-7.257571324274222045e-03, +-7.256875880268876325e-03, +-7.256168683208374763e-03, +-7.255449734799129281e-03, +-7.254719036766486308e-03, +-7.253976590854876831e-03, +-7.253222398827673285e-03, +-7.252456462467245062e-03, +-7.251678783574963712e-03, +-7.250889363971178662e-03, +-7.250088205495224154e-03, +-7.249275310005389751e-03, +-7.248450679378964576e-03, +-7.247614315512187003e-03, +-7.246766220320257669e-03, +-7.245906395737362025e-03, +-7.245034843716600947e-03, +-7.244151566230091349e-03, +-7.243256565268807456e-03, +-7.242349842842751677e-03, +-7.241431400980814087e-03, +-7.240501241730841822e-03, +-7.239559367159641677e-03, +-7.238605779352848268e-03, +-7.237640480415162558e-03, +-7.236663472470058686e-03, +-7.235674757660035504e-03, +-7.234674338146437900e-03, +-7.233662216109564350e-03, +-7.232638393748559366e-03, +-7.231602873281472478e-03, +-7.230555656945316344e-03, +-7.229496746995912361e-03, +-7.228426145707992148e-03, +-7.227343855375145502e-03, +-7.226249878309891524e-03, +-7.225144216843555449e-03, +-7.224026873326344980e-03, +-7.222897850127355489e-03, +-7.221757149634504096e-03, +-7.220604774254586050e-03, +-7.219440726413195800e-03, +-7.218265008554811991e-03, +-7.217077623142758441e-03, +-7.215878572659129540e-03, +-7.214667859604898675e-03, +-7.213445486499834962e-03, +-7.212211455882527530e-03, +-7.210965770310404609e-03, +-7.209708432359651122e-03, +-7.208439444625279816e-03, +-7.207158809721096564e-03, +-7.205866530279705570e-03, +-7.204562608952459930e-03, +-7.203247048409539693e-03, +-7.201919851339914566e-03, +-7.200581020451216410e-03, +-7.199230558469962155e-03, +-7.197868468141365578e-03, +-7.196494752229432718e-03, +-7.195109413516856053e-03, +-7.193712454805115120e-03, +-7.192303878914424464e-03, +-7.190883688683743190e-03, +-7.189451886970710769e-03, +-7.188008476651695615e-03, +-7.186553460621898301e-03, +-7.185086841795015021e-03, +-7.183608623103644383e-03, +-7.182118807498935262e-03, +-7.180617397950845270e-03, +-7.179104397447967287e-03, +-7.177579808997541604e-03, +-7.176043635625572147e-03, +-7.174495880376644333e-03, +-7.172936546314048235e-03, +-7.171365636519719602e-03, +-7.169783154094263276e-03, +-7.168189102156961000e-03, +-7.166583483845610954e-03, +-7.164966302316800977e-03, +-7.163337560745639682e-03, +-7.161697262325896970e-03, +-7.160045410269982348e-03, +-7.158382007808848646e-03, +-7.156707058192146413e-03, +-7.155020564688007075e-03, +-7.153322530583246762e-03, +-7.151612959183238812e-03, +-7.149891853811921570e-03, +-7.148159217811855641e-03, +-7.146415054544070361e-03, +-7.144659367388278039e-03, +-7.142892159742637165e-03, +-7.141113435023927619e-03, +-7.139323196667396280e-03, +-7.137521448126920090e-03, +-7.135708192874861203e-03, +-7.133883434402024486e-03, +-7.132047176217879564e-03, +-7.130199421850286733e-03, +-7.128340174845666094e-03, +-7.126469438768890871e-03, +-7.124587217203361134e-03, +-7.122693513750935276e-03, +-7.120788332031952571e-03, +-7.118871675685246175e-03, +-7.116943548368047726e-03, +-7.115003953756160807e-03, +-7.113052895543669520e-03, +-7.111090377443197823e-03, +-7.109116403185867031e-03, +-7.107130976521114536e-03, +-7.105134101216827383e-03, +-7.103125781059297164e-03, +-7.101106019853284206e-03, +-7.099074821421876187e-03, +-7.097032189606582685e-03, +-7.094978128267307414e-03, +-7.092912641282322211e-03, +-7.090835732548257490e-03, +-7.088747405980097040e-03, +-7.086647665511237870e-03, +-7.084536515093380928e-03, +-7.082413958696530225e-03, +-7.080280000309148100e-03, +-7.078134643937873324e-03, +-7.075977893607829881e-03, +-7.073809753362249667e-03, +-7.071630227262865401e-03, +-7.069439319389567156e-03, +-7.067237033840632204e-03, +-7.065023374732565427e-03, +-7.062798346200135739e-03, +-7.060561952396447218e-03, +-7.058314197492798585e-03, +-7.056055085678758672e-03, +-7.053784621162114375e-03, +-7.051502808168970404e-03, +-7.049209650943600962e-03, +-7.046905153748439336e-03, +-7.044589320864295609e-03, +-7.042262156590048741e-03, +-7.039923665242769739e-03, +-7.037573851157843084e-03, +-7.035212718688714333e-03, +-7.032840272207099147e-03, +-7.030456516102743039e-03, +-7.028061454783715405e-03, +-7.025655092676085130e-03, +-7.023237434224179065e-03, +-7.020808483890399881e-03, +-7.018368246155256424e-03, +-7.015916725517471267e-03, +-7.013453926493748262e-03, +-7.010979853618980705e-03, +-7.008494511446110818e-03, +-7.005997904546216494e-03, +-7.003490037508400268e-03, +-7.000970914939824014e-03, +-6.998440541465784405e-03, +-6.995898921729564596e-03, +-6.993346060392514017e-03, +-6.990781962133972918e-03, +-6.988206631651385989e-03, +-6.985620073660168787e-03, +-6.983022292893718147e-03, +-6.980413294103535345e-03, +-6.977793082058984103e-03, +-6.975161661547532588e-03, +-6.972519037374466308e-03, +-6.969865214363220318e-03, +-6.967200197355045282e-03, +-6.964523991209259010e-03, +-6.961836600803008798e-03, +-6.959138031031411945e-03, +-6.956428286807558349e-03, +-6.953707373062383013e-03, +-6.950975294744720680e-03, +-6.948232056821427270e-03, +-6.945477664277072832e-03, +-6.942712122114226038e-03, +-6.939935435353228668e-03, +-6.937147609032390770e-03, +-6.934348648207820653e-03, +-6.931538557953423156e-03, +-6.928717343361028881e-03, +-6.925885009540218122e-03, +-6.923041561618452702e-03, +-6.920187004740880818e-03, +-6.917321344070591176e-03, +-6.914444584788394417e-03, +-6.911556732092810976e-03, +-6.908657791200283581e-03, +-6.905747767344856333e-03, +-6.902826665778480017e-03, +-6.899894491770648675e-03, +-6.896951250608801195e-03, +-6.893996947597921462e-03, +-6.891031588060827183e-03, +-6.888055177337987743e-03, +-6.885067720787514667e-03, +-6.882069223785340292e-03, +-6.879059691724961900e-03, +-6.876039130017549267e-03, +-6.873007544091925582e-03, +-6.869964939394596071e-03, +-6.866911321389780089e-03, +-6.863846695559067644e-03, +-6.860771067401941550e-03, +-6.857684442435333337e-03, +-6.854586826193790651e-03, +-6.851478224229526695e-03, +-6.848358642112197317e-03, +-6.845228085429219331e-03, +-6.842086559785308213e-03, +-6.838934070802974233e-03, +-6.835770624122103518e-03, +-6.832596225400193110e-03, +-6.829410880312220856e-03, +-6.826214594550643680e-03, +-6.823007373825523345e-03, +-6.819789223864305278e-03, +-6.816560150411920052e-03, +-6.813320159230777315e-03, +-6.810069256100806552e-03, +-6.806807446819306169e-03, +-6.803534737201016348e-03, +-6.800251133078152876e-03, +-6.796956640300303061e-03, +-6.793651264734476905e-03, +-6.790335012265022105e-03, +-6.787007888793820075e-03, +-6.783669900239958084e-03, +-6.780321052539948698e-03, +-6.776961351647740189e-03, +-6.773590803534458062e-03, +-6.770209414188788424e-03, +-6.766817189616428085e-03, +-6.763414135840653540e-03, +-6.760000258901980967e-03, +-6.756575564858129795e-03, +-6.753140059784181436e-03, +-6.749693749772380652e-03, +-6.746236640932386230e-03, +-6.742768739391025515e-03, +-6.739290051292279662e-03, +-6.735800582797529107e-03, +-6.732300340085231767e-03, +-6.728789329351078305e-03, +-6.725267556807953094e-03, +-6.721735028685994068e-03, +-6.718191751232414043e-03, +-6.714637730711596128e-03, +-6.711072973405163115e-03, +-6.707497485611742423e-03, +-6.703911273647266203e-03, +-6.700314343844522916e-03, +-6.696706702553684686e-03, +-6.693088356141785149e-03, +-6.689459310993163543e-03, +-6.685819573509042303e-03, +-6.682169150107733491e-03, +-6.678508047224768901e-03, +-6.674836271312427349e-03, +-6.671153828840299324e-03, +-6.667460726294770039e-03, +-6.663756970179418419e-03, +-6.660042567014672760e-03, +-6.656317523337952104e-03, +-6.652581845703754715e-03, +-6.648835540683455982e-03, +-6.645078614865358724e-03, +-6.641311074854684519e-03, +-6.637532927273702942e-03, +-6.633744178761573698e-03, +-6.629944835974123721e-03, +-6.626134905584370183e-03, +-6.622314394282021767e-03, +-6.618483308773809130e-03, +-6.614641655783138827e-03, +-6.610789442050303208e-03, +-6.606926674332615733e-03, +-6.603053359403867999e-03, +-6.599169504054991538e-03, +-6.595275115093465410e-03, +-6.591370199343742943e-03, +-6.587454763646929945e-03, +-6.583528814860864498e-03, +-6.579592359860287828e-03, +-6.575645405536532061e-03, +-6.571687958797682409e-03, +-6.567720026568529476e-03, +-6.563741615790675936e-03, +-6.559752733422256378e-03, +-6.555753386438111646e-03, +-6.551743581829894657e-03, +-6.547723326605659269e-03, +-6.543692627790398050e-03, +-6.539651492425398692e-03, +-6.535599927568845093e-03, +-6.531537940295354186e-03, +-6.527465537696177170e-03, +-6.523382726879201239e-03, +-6.519289514968793463e-03, +-6.515185909105998541e-03, +-6.511071916448160635e-03, +-6.506947544169383070e-03, +-6.502812799460258586e-03, +-6.498667689527788671e-03, +-6.494512221595517137e-03, +-6.490346402903403485e-03, +-6.486170240708025864e-03, +-6.481983742282255816e-03, +-6.477786914915447357e-03, +-6.473579765913471673e-03, +-6.469362302598506351e-03, +-6.465134532309180226e-03, +-6.460896462400451089e-03, +-6.456648100243800835e-03, +-6.452389453226935363e-03, +-6.448120528753904269e-03, +-6.443841334245230951e-03, +-6.439551877137633315e-03, +-6.435252164884302205e-03, +-6.430942204954423480e-03, +-6.426622004833830275e-03, +-6.422291572024359414e-03, +-6.417950914044321525e-03, +-6.413600038428108122e-03, +-6.409238952726376351e-03, +-6.404867664506121855e-03, +-6.400486181350428100e-03, +-6.396094510858600819e-03, +-6.391692660646109900e-03, +-6.387280638344717751e-03, +-6.382858451602201749e-03, +-6.378426108082488680e-03, +-6.373983615465767492e-03, +-6.369530981448217818e-03, +-6.365068213742135737e-03, +-6.360595320076004033e-03, +-6.356112308194224181e-03, +-6.351619185857519667e-03, +-6.347115960842262053e-03, +-6.342602640941294966e-03, +-6.338079233963166484e-03, +-6.333545747732641749e-03, +-6.329002190090377705e-03, +-6.324448568892962128e-03, +-6.319884892013118323e-03, +-6.315311167339411093e-03, +-6.310727402776359490e-03, +-6.306133606244377840e-03, +-6.301529785679921454e-03, +-6.296915949035250711e-03, +-6.292292104278450135e-03, +-6.287658259393677333e-03, +-6.283014422380794363e-03, +-6.278360601255523858e-03, +-6.273696804049423009e-03, +-6.269023038809965094e-03, +-6.264339313600359067e-03, +-6.259645636499508795e-03, +-6.254942015602307955e-03, +-6.250228459019208961e-03, +-6.245504974876662715e-03, +-6.240771571316461146e-03, +-6.236028256496561201e-03, +-6.231275038590270397e-03, +-6.226511925786884331e-03, +-6.221738926291170597e-03, +-6.216956048323575221e-03, +-6.212163300120446437e-03, +-6.207360689933320852e-03, +-6.202548226029746571e-03, +-6.197725916692802678e-03, +-6.192893770221043724e-03, +-6.188051794928708764e-03, +-6.183199999145472421e-03, +-6.178338391216796170e-03, +-6.173466979503476441e-03, +-6.168585772381846716e-03, +-6.163694778243924977e-03, +-6.158794005496986967e-03, +-6.153883462564075334e-03, +-6.148963157883300529e-03, +-6.144033099908652665e-03, +-6.139093297109268592e-03, +-6.134143757969766700e-03, +-6.129184490990333654e-03, +-6.124215504686291583e-03, +-6.119236807588677475e-03, +-6.114248408243446939e-03, +-6.109250315212336364e-03, +-6.104242537072109183e-03, +-6.099225082415110112e-03, +-6.094197959848790709e-03, +-6.089161177995913200e-03, +-6.084114745494662371e-03, +-6.079058670998357602e-03, +-6.073992963175568228e-03, +-6.068917630710099660e-03, +-6.063832682301037620e-03, +-6.058738126662743806e-03, +-6.053633972524456903e-03, +-6.048520228630941374e-03, +-6.043396903741935812e-03, +-6.038264006632270905e-03, +-6.033121546092132248e-03, +-6.027969530926549462e-03, +-6.022807969955970391e-03, +-6.017636872015490884e-03, +-6.012456245955707414e-03, +-6.007266100641962467e-03, +-6.002066444954863231e-03, +-5.996857287789892146e-03, +-5.991638638057522268e-03, +-5.986410504683410683e-03, +-5.981172896607975242e-03, +-5.975925822786700738e-03, +-5.970669292189950683e-03, +-5.965403313803176351e-03, +-5.960127896626578499e-03, +-5.954843049675285181e-03, +-5.949548781979436748e-03, +-5.944245102583915231e-03, +-5.938932020548483119e-03, +-5.933609544947710500e-03, +-5.928277684871164147e-03, +-5.922936449423008530e-03, +-5.917585847722235670e-03, +-5.912225888902801312e-03, +-5.906856582113152211e-03, +-5.901477936516805536e-03, +-5.896089961291583852e-03, +-5.890692665630450388e-03, +-5.885286058740744029e-03, +-5.879870149844763916e-03, +-5.874444948179277648e-03, +-5.869010462995696495e-03, +-5.863566703560278356e-03, +-5.858113679153702756e-03, +-5.852651399071233905e-03, +-5.847179872622965298e-03, +-5.841699109133322715e-03, +-5.836209117941400758e-03, +-5.830709908400720856e-03, +-5.825201489879573008e-03, +-5.819683871760538731e-03, +-5.814157063440697493e-03, +-5.808621074331782839e-03, +-5.803075913859793815e-03, +-5.797521591465422570e-03, +-5.791958116603402110e-03, +-5.786385498743273903e-03, +-5.780803747368720019e-03, +-5.775212871978006347e-03, +-5.769612882083614835e-03, +-5.764003787212350176e-03, +-5.758385596905624300e-03, +-5.752758320718704375e-03, +-5.747121968221623536e-03, +-5.741476548998352553e-03, +-5.735822072647433004e-03, +-5.730158548781429974e-03, +-5.724485987027159301e-03, +-5.718804397025843700e-03, +-5.713113788432721586e-03, +-5.707414170917303811e-03, +-5.701705554163165497e-03, +-5.695987947868194970e-03, +-5.690261361744473195e-03, +-5.684525805517842700e-03, +-5.678781288928665648e-03, +-5.673027821731093517e-03, +-5.667265413693584920e-03, +-5.661494074598506614e-03, +-5.655713814242211562e-03, +-5.649924642435378945e-03, +-5.644126569002208375e-03, +-5.638319603781363591e-03, +-5.632503756625161472e-03, +-5.626679037400113270e-03, +-5.620845455986497007e-03, +-5.615003022278491907e-03, +-5.609151746184385702e-03, +-5.603291637626199063e-03, +-5.597422706539812234e-03, +-5.591544962874989318e-03, +-5.585658416595452001e-03, +-5.579763077678579451e-03, +-5.573858956115572243e-03, +-5.567946061911584199e-03, +-5.562024405085318202e-03, +-5.556093995669502371e-03, +-5.550154843710213524e-03, +-5.544206959267649996e-03, +-5.538250352415494127e-03, +-5.532285033241078794e-03, +-5.526311011845632011e-03, +-5.520328298343778195e-03, +-5.514336902864046437e-03, +-5.508336835548199167e-03, +-5.502328106551974615e-03, +-5.496310726044610628e-03, +-5.490284704208778753e-03, +-5.484250051240788064e-03, +-5.478206777350394345e-03, +-5.472154892761100196e-03, +-5.466094407709665842e-03, +-5.460025332446351125e-03, +-5.453947677235107191e-03, +-5.447861452353082098e-03, +-5.441766668090940867e-03, +-5.435663334752724105e-03, +-5.429551462656021475e-03, +-5.423431062131626491e-03, +-5.417302143523674424e-03, +-5.411164717189863478e-03, +-5.405018793500943053e-03, +-5.398864382841307014e-03, +-5.392701495608147148e-03, +-5.386530142212435888e-03, +-5.380350333078022518e-03, +-5.374162078642311449e-03, +-5.367965389355676756e-03, +-5.361760275681730185e-03, +-5.355546748097457337e-03, +-5.349324817092790917e-03, +-5.343094493170924726e-03, +-5.336855786848063860e-03, +-5.330608708653782925e-03, +-5.324353269130512566e-03, +-5.318089478833756302e-03, +-5.311817348332310840e-03, +-5.305536888207819379e-03, +-5.299248109054974579e-03, +-5.292951021481437889e-03, +-5.286645636107981799e-03, +-5.280331963568456882e-03, +-5.274010014509213258e-03, +-5.267679799590030409e-03, +-5.261341329483250687e-03, +-5.254994614874441104e-03, +-5.248639666461786188e-03, +-5.242276494956340377e-03, +-5.235905111082259610e-03, +-5.229525525576276569e-03, +-5.223137749188016404e-03, +-5.216741792679818052e-03, +-5.210337666827016996e-03, +-5.203925382417498580e-03, +-5.197504950251865402e-03, +-5.191076381143648957e-03, +-5.184639685918914984e-03, +-5.178194875416425660e-03, +-5.171741960487571087e-03, +-5.165280951996601734e-03, +-5.158811860820153132e-03, +-5.152334697847513016e-03, +-5.145849473980739289e-03, +-5.139356200134199450e-03, +-5.132854887235183822e-03, +-5.126345546222971401e-03, +-5.119828188049915796e-03, +-5.113302823680482452e-03, +-5.106769464091897442e-03, +-5.100228120273679958e-03, +-5.093678803227735113e-03, +-5.087121523968734724e-03, +-5.080556293523215243e-03, +-5.073983122930544876e-03, +-5.067402023242422240e-03, +-5.060813005522711572e-03, +-5.054216080847709000e-03, +-5.047611260305927446e-03, +-5.040998554998433155e-03, +-5.034377976038322683e-03, +-5.027749534550962282e-03, +-5.021113241674184796e-03, +-5.014469108557725874e-03, +-5.007817146363931736e-03, +-5.001157366266785996e-03, +-4.994489779452976515e-03, +-4.987814397121009824e-03, +-4.981131230481570214e-03, +-4.974440290757631625e-03, +-4.967741589183994472e-03, +-4.961035137007872853e-03, +-4.954320945488042797e-03, +-4.947599025895805906e-03, +-4.940869389514120254e-03, +-4.934132047638271727e-03, +-4.927387011575226974e-03, +-4.920634292643983818e-03, +-4.913873902175664929e-03, +-4.907105851513112772e-03, +-4.900330152011109046e-03, +-4.893546815036293150e-03, +-4.886755851967359079e-03, +-4.879957274194631281e-03, +-4.873151093120249404e-03, +-4.866337320158396415e-03, +-4.859515966734844969e-03, +-4.852687044287083175e-03, +-4.845850564264589551e-03, +-4.839006538128302198e-03, +-4.832154977351228557e-03, +-4.825295893417519931e-03, +-4.818429297823562628e-03, +-4.811555202077000444e-03, +-4.804673617697399930e-03, +-4.797784556215768138e-03, +-4.790888029174644562e-03, +-4.783984048128409917e-03, +-4.777072624642754450e-03, +-4.770153770295017075e-03, +-4.763227496673943379e-03, +-4.756293815380000477e-03, +-4.749352738024957207e-03, +-4.742404276231986480e-03, +-4.735448441635969723e-03, +-4.728485245882957377e-03, +-4.721514700630501972e-03, +-4.714536817547421328e-03, +-4.707551608314181936e-03, +-4.700559084622314351e-03, +-4.693559258174702896e-03, +-4.686552140685759128e-03, +-4.679537743880855458e-03, +-4.672516079497057197e-03, +-4.665487159282084330e-03, +-4.658450994995463369e-03, +-4.651407598407496929e-03, +-4.644356981300054761e-03, +-4.637299155465884198e-03, +-4.630234132708878174e-03, +-4.623161924844311141e-03, +-4.616082543698348147e-03, +-4.608996001108220907e-03, +-4.601902308922442043e-03, +-4.594801479000391355e-03, +-4.587693523212517908e-03, +-4.580578453440222082e-03, +-4.573456281576100159e-03, +-4.566327019523503707e-03, +-4.559190679196746879e-03, +-4.552047272521292029e-03, +-4.544896811433189396e-03, +-4.537739307879796145e-03, +-4.530574773818773701e-03, +-4.523403221219189294e-03, +-4.516224662060535841e-03, +-4.509039108333443187e-03, +-4.501846572039109977e-03, +-4.494647065189464122e-03, +-4.487440599807548773e-03, +-4.480227187926552612e-03, +-4.473006841590925278e-03, +-4.465779572855425872e-03, +-4.458545393785810773e-03, +-4.451304316458210876e-03, +-4.444056352959433430e-03, +-4.436801515387097349e-03, +-4.429539815849193457e-03, +-4.422271266464352507e-03, +-4.414995879361674307e-03, +-4.407713666680959305e-03, +-4.400424640572574153e-03, +-4.393128813196928682e-03, +-4.385826196725421330e-03, +-4.378516803339539687e-03, +-4.371200645231473718e-03, +-4.363877734603630043e-03, +-4.356548083668753367e-03, +-4.349211704650325465e-03, +-4.341868609781581595e-03, +-4.334518811306643273e-03, +-4.327162321479555498e-03, +-4.319799152564960699e-03, +-4.312429316837522800e-03, +-4.305052826582139724e-03, +-4.297669694094226160e-03, +-4.290279931679089054e-03, +-4.282883551652336140e-03, +-4.275480566339659970e-03, +-4.268070988077138882e-03, +-4.260654829210714853e-03, +-4.253232102096425951e-03, +-4.245802819100676952e-03, +-4.238366992599554989e-03, +-4.230924634979626661e-03, +-4.223475758636892861e-03, +-4.216020375977948438e-03, +-4.208558499419000343e-03, +-4.201090141386249269e-03, +-4.193615314316050981e-03, +-4.186134030654362938e-03, +-4.178646302857452928e-03, +-4.171152143390870377e-03, +-4.163651564730540960e-03, +-4.156144579362095262e-03, +-4.148631199780868778e-03, +-4.141111438492024212e-03, +-4.133585308010451730e-03, +-4.126052820860995340e-03, +-4.118513989578008808e-03, +-4.110968826705544733e-03, +-4.103417344797619971e-03, +-4.095859556417618015e-03, +-4.088295474138692320e-03, +-4.080725110543518240e-03, +-4.073148478224646041e-03, +-4.065565589783926709e-03, +-4.057976457832806853e-03, +-4.050381094992505648e-03, +-4.042779513893430231e-03, +-4.035171727175908621e-03, +-4.027557747489164501e-03, +-4.019937587492461266e-03, +-4.012311259854082005e-03, +-4.004678777252053748e-03, +-3.997040152373559398e-03, +-3.989395397915143290e-03, +-3.981744526582966202e-03, +-3.974087551092250238e-03, +-3.966424484167633581e-03, +-3.958755338542943245e-03, +-3.951080126961529007e-03, +-3.943398862175746464e-03, +-3.935711556947162591e-03, +-3.928018224046807283e-03, +-3.920318876254643391e-03, +-3.912613526359877240e-03, +-3.904902187160780389e-03, +-3.897184871464896058e-03, +-3.889461592088953694e-03, +-3.881732361858288276e-03, +-3.873997193607819998e-03, +-3.866256100181133561e-03, +-3.858509094431147347e-03, +-3.850756189219508869e-03, +-3.842997397416844565e-03, +-3.835232731903003098e-03, +-3.827462205566470755e-03, +-3.819685831304756550e-03, +-3.811903622024144598e-03, +-3.804115590640057536e-03, +-3.796321750076501848e-03, +-3.788522113266307254e-03, +-3.780716693151349624e-03, +-3.772905502682023186e-03, +-3.765088554817584438e-03, +-3.757265862525936608e-03, +-3.749437438783929325e-03, +-3.741603296576878103e-03, +-3.733763448898752991e-03, +-3.725917908752434445e-03, +-3.718066689149088395e-03, +-3.710209803108915211e-03, +-3.702347263660103228e-03, +-3.694479083839998391e-03, +-3.686605276694071218e-03, +-3.678725855276639752e-03, +-3.670840832650271949e-03, +-3.662950221886012055e-03, +-3.655054036063717579e-03, +-3.647152288271048384e-03, +-3.639244991604601194e-03, +-3.631332159169316752e-03, +-3.623413804078268619e-03, +-3.615489939453008818e-03, +-3.607560578423305020e-03, +-3.599625734127519586e-03, +-3.591685419711986363e-03, +-3.583739648331346356e-03, +-3.575788433148722068e-03, +-3.567831787335086925e-03, +-3.559869724070091872e-03, +-3.551902256540895742e-03, +-3.543929397943445907e-03, +-3.535951161481482117e-03, +-3.527967560366834874e-03, +-3.519978607819682602e-03, +-3.511984317067923678e-03, +-3.503984701347931906e-03, +-3.495979773903490524e-03, +-3.487969547986999146e-03, +-3.479954036858385648e-03, +-3.471933253785895474e-03, +-3.463907212045433306e-03, +-3.455875924920819801e-03, +-3.447839405704013205e-03, +-3.439797667694610185e-03, +-3.431750724200105605e-03, +-3.423698588535734662e-03, +-3.415641274024825043e-03, +-3.407578793998175017e-03, +-3.399511161794384340e-03, +-3.391438390760019485e-03, +-3.383360494249098432e-03, +-3.375277485623354341e-03, +-3.367189378252427676e-03, +-3.359096185513267725e-03, +-3.350997920790887638e-03, +-3.342894597477262877e-03, +-3.334786228972601903e-03, +-3.326672828684215134e-03, +-3.318554410027292970e-03, +-3.310430986424288229e-03, +-3.302302571305134726e-03, +-3.294169178107517453e-03, +-3.286030820276284511e-03, +-3.277887511263798386e-03, +-3.269739264529752075e-03, +-3.261586093541483933e-03, +-3.253428011773401313e-03, +-3.245265032707274171e-03, +-3.237097169832447562e-03, +-3.228924436645273961e-03, +-3.220746846649488824e-03, +-3.212564413355978137e-03, +-3.204377150283095870e-03, +-3.196185070956180426e-03, +-3.187988188907700787e-03, +-3.179786517677594352e-03, +-3.171580070812528816e-03, +-3.163368861866789044e-03, +-3.155152904401073606e-03, +-3.146932211983813170e-03, +-3.138706798190021678e-03, +-3.130476676602086950e-03, +-3.122241860809144877e-03, +-3.114002364407304508e-03, +-3.105758200999999760e-03, +-3.097509384196947720e-03, +-3.089255927615331288e-03, +-3.080997844879146061e-03, +-3.072735149619046369e-03, +-3.064467855472657529e-03, +-3.056195976084283110e-03, +-3.047919525105353359e-03, +-3.039638516193776414e-03, +-3.031352963014211522e-03, +-3.023062879238334888e-03, +-3.014768278544174840e-03, +-3.006469174616870337e-03, +-2.998165581147624499e-03, +-2.989857511834900696e-03, +-2.981544980383319266e-03, +-2.973228000504490615e-03, +-2.964906585916291838e-03, +-2.956580750343178535e-03, +-2.948250507516486651e-03, +-2.939915871173415501e-03, +-2.931576855058305384e-03, +-2.923233472921481398e-03, +-2.914885738520089139e-03, +-2.906533665617403849e-03, +-2.898177267983105803e-03, +-2.889816559393507123e-03, +-2.881451553631006208e-03, +-2.873082264484409960e-03, +-2.864708705748730388e-03, +-2.856330891225462160e-03, +-2.847948834722442962e-03, +-2.839562550053173918e-03, +-2.831172051038037801e-03, +-2.822777351503132429e-03, +-2.814378465281089023e-03, +-2.805975406210419951e-03, +-2.797568188135737301e-03, +-2.789156824908144497e-03, +-2.780741330384146025e-03, +-2.772321718426970158e-03, +-2.763898002905400622e-03, +-2.755470197694597119e-03, +-2.747038316675444805e-03, +-2.738602373734752484e-03, +-2.730162382765581770e-03, +-2.721718357666616083e-03, +-2.713270312342516265e-03, +-2.704818260703742341e-03, +-2.696362216666855788e-03, +-2.687902194153979178e-03, +-2.679438207093037729e-03, +-2.670970269418000871e-03, +-2.662498395068226519e-03, +-2.654022597989279860e-03, +-2.645542892131773263e-03, +-2.637059291452657772e-03, +-2.628571809914184015e-03, +-2.620080461484240470e-03, +-2.611585260136601097e-03, +-2.603086219850275686e-03, +-2.594583354610319973e-03, +-2.586076678406653423e-03, +-2.577566205235416654e-03, +-2.569051949097750191e-03, +-2.560533924000666598e-03, +-2.552012143956353986e-03, +-2.543486622982424946e-03, +-2.534957375102201045e-03, +-2.526424414344096130e-03, +-2.517887754741893452e-03, +-2.509347410334998064e-03, +-2.500803395167854829e-03, +-2.492255723290298392e-03, +-2.483704408757341983e-03, +-2.475149465629524793e-03, +-2.466590907972336048e-03, +-2.458028749856472610e-03, +-2.449463005358081848e-03, +-2.440893688558100696e-03, +-2.432320813543072720e-03, +-2.423744394403984977e-03, +-2.415164445237576001e-03, +-2.406580980145183943e-03, +-2.397994013233559294e-03, +-2.389403558614186605e-03, +-2.380809630403534719e-03, +-2.372212242723368593e-03, +-2.363611409700067979e-03, +-2.355007145465069351e-03, +-2.346399464154593547e-03, +-2.337788379910048231e-03, +-2.329173906877394715e-03, +-2.320556059207425081e-03, +-2.311934851056045379e-03, +-2.303310296583640712e-03, +-2.294682409955481166e-03, +-2.286051205341449021e-03, +-2.277416696916364017e-03, +-2.268778898859815513e-03, +-2.260137825355499393e-03, +-2.251493490592426303e-03, +-2.242845908763750271e-03, +-2.234195094067610490e-03, +-2.225541060706440026e-03, +-2.216883822887222993e-03, +-2.208223394821748689e-03, +-2.199559790726053014e-03, +-2.190893024820731155e-03, +-2.182223111330753706e-03, +-2.173550064485807540e-03, +-2.164873898519714245e-03, +-2.156194627670685992e-03, +-2.147512266181584445e-03, +-2.138826828299327919e-03, +-2.130138328275261311e-03, +-2.121446780364926680e-03, +-2.112752198828421035e-03, +-2.104054597929812601e-03, +-2.095353991937387583e-03, +-2.086650395123937265e-03, +-2.077943821766048069e-03, +-2.069234286144929023e-03, +-2.060521802545270745e-03, +-2.051806385256528704e-03, +-2.043088048571779607e-03, +-2.034366806788544518e-03, +-2.025642674208088037e-03, +-2.016915665135703226e-03, +-2.008185793881056384e-03, +-1.999453074757111953e-03, +-1.990717522081351162e-03, +-1.981979150175094181e-03, +-1.973237973363363516e-03, +-1.964494005975152887e-03, +-1.955747262343208222e-03, +-1.946997756804409729e-03, +-1.938245503699135468e-03, +-1.929490517371555604e-03, +-1.920732812169892402e-03, +-1.911972402445710284e-03, +-1.903209302554770407e-03, +-1.894443526855846705e-03, +-1.885675089712059681e-03, +-1.876904005489777238e-03, +-1.868130288558986999e-03, +-1.859353953293568437e-03, +-1.850575014070578606e-03, +-1.841793485271104539e-03, +-1.833009381279083853e-03, +-1.824222716482631597e-03, +-1.815433505272853265e-03, +-1.806641762044701319e-03, +-1.797847501196261997e-03, +-1.789050737129031354e-03, +-1.780251484248169180e-03, +-1.771449756961921340e-03, +-1.762645569681955222e-03, +-1.753838936823151140e-03, +-1.745029872803978118e-03, +-1.736218392045867217e-03, +-1.727404508973505145e-03, +-1.718588238015076241e-03, +-1.709769593601674631e-03, +-1.700948590167561609e-03, +-1.692125242150439076e-03, +-1.683299563990741125e-03, +-1.674471570132493158e-03, +-1.665641275022106691e-03, +-1.656808693109742409e-03, +-1.647973838848086538e-03, +-1.639136726693229702e-03, +-1.630297371103954160e-03, +-1.621455786541991639e-03, +-1.612611987472308689e-03, +-1.603765988362490860e-03, +-1.594917803683100054e-03, +-1.586067447907474597e-03, +-1.577214935512079872e-03, +-1.568360280975905716e-03, +-1.559503498780733573e-03, +-1.550644603411415346e-03, +-1.541783609355240007e-03, +-1.532920531102329549e-03, +-1.524055383145406532e-03, +-1.515188179980150353e-03, +-1.506318936104608305e-03, +-1.497447666019445815e-03, +-1.488574384228237872e-03, +-1.479699105236734809e-03, +-1.470821843553743761e-03, +-1.461942613689911317e-03, +-1.453061430159080297e-03, +-1.444178307477089968e-03, +-1.435293260162630183e-03, +-1.426406302736544238e-03, +-1.417517449722074116e-03, +-1.408626715645261212e-03, +-1.399734115033807267e-03, +-1.390839662418365437e-03, +-1.381943372331799567e-03, +-1.373045259309072300e-03, +-1.364145337887523717e-03, +-1.355243622606634116e-03, +-1.346340128008406949e-03, +-1.337434868636756249e-03, +-1.328527859037762719e-03, +-1.319619113759970151e-03, +-1.310708647353641234e-03, +-1.301796474371651365e-03, +-1.292882609368255914e-03, +-1.283967066900474317e-03, +-1.275049861526849748e-03, +-1.266131007808341631e-03, +-1.257210520307601182e-03, +-1.248288413589234433e-03, +-1.239364702220191895e-03, +-1.230439400768642937e-03, +-1.221512523805341017e-03, +-1.212584085902414580e-03, +-1.203654101634235715e-03, +-1.194722585576692446e-03, +-1.185789552307477557e-03, +-1.176855016406349892e-03, +-1.167918992454525457e-03, +-1.158981495035039336e-03, +-1.150042538732530366e-03, +-1.141102138133518688e-03, +-1.132160307826277383e-03, +-1.123217062400109741e-03, +-1.114272416446622765e-03, +-1.105326384558515248e-03, +-1.096378981330437550e-03, +-1.087430221358280137e-03, +-1.078480119239442255e-03, +-1.069528689573213780e-03, +-1.060575946959649817e-03, +-1.051621906000943301e-03, +-1.042666581300204188e-03, +-1.033709987462334834e-03, +-1.024752139093311172e-03, +-1.015793050800451814e-03, +-1.006832737192696033e-03, +-9.978712128799812221e-04, +-9.889084924736225770e-04, +-9.799445905860791270e-04, +-9.709795218313407947e-04, +-9.620133008243032455e-04, +-9.530459421810331911e-04, +-9.440774605190562462e-04, +-9.351078704566323551e-04, +-9.261371866136261901e-04, +-9.171654236102870983e-04, +-9.081925960686200753e-04, +-8.992187186112753257e-04, +-8.902438058619062660e-04, +-8.812678724454596577e-04, +-8.722909329874464811e-04, +-8.633130021148200306e-04, +-8.543340944547479473e-04, +-8.453542246359919748e-04, +-8.363734072876856298e-04, +-8.273916570402069844e-04, +-8.184089885244533354e-04, +-8.094254163721274330e-04, +-8.004409552159969313e-04, +-7.914556196892895109e-04, +-7.824694244259508113e-04, +-7.734823840609387916e-04, +-7.644945132295825332e-04, +-7.555058265679711433e-04, +-7.465163387127228198e-04, +-7.375260643013641050e-04, +-7.285350179717106980e-04, +-7.195432143621306991e-04, +-7.105506681118315977e-04, +-7.015573938601365675e-04, +-6.925634062473550812e-04, +-6.835687199135589542e-04, +-6.745733494999683888e-04, +-6.655773096477126229e-04, +-6.565806149987197344e-04, +-6.475832801949864314e-04, +-6.385853198788583179e-04, +-6.295867486932984515e-04, +-6.205875812812708652e-04, +-6.115878322861146178e-04, +-6.025875163513171951e-04, +-5.935866481208976675e-04, +-5.845852422387750333e-04, +-5.755833133490479434e-04, +-5.665808760962719312e-04, +-5.575779451248345873e-04, +-5.485745350793308018e-04, +-5.395706606043383343e-04, +-5.305663363447001403e-04, +-5.215615769453944839e-04, +-5.125563970508062450e-04, +-5.035508113060202648e-04, +-4.945448343555767894e-04, +-4.855384808443653950e-04, +-4.765317654168900615e-04, +-4.675247027175482455e-04, +-4.585173073909095212e-04, +-4.495095940810895610e-04, +-4.405015774321261379e-04, +-4.314932720877570800e-04, +-4.224846926917944835e-04, +-4.134758538875029222e-04, +-4.044667703178737514e-04, +-3.954574566259028796e-04, +-3.864479274539668651e-04, +-3.774381974441985373e-04, +-3.684282812382609954e-04, +-3.594181934777296804e-04, +-3.504079488034645144e-04, +-3.413975618558840949e-04, +-3.323870472752491595e-04, +-3.233764197009294486e-04, +-3.143656937722891188e-04, +-3.053548841274550353e-04, +-2.963440054047001594e-04, +-2.873330722412142805e-04, +-2.783220992739825444e-04, +-2.693111011390618035e-04, +-2.603000924718566539e-04, +-2.512890879074964126e-04, +-2.422781020797087946e-04, +-2.332671496220986476e-04, +-2.242562451674256021e-04, +-2.152454033474756484e-04, +-2.062346387933409954e-04, +-1.972239661351955060e-04, +-1.882134000026718091e-04, +-1.792029550242346041e-04, +-1.701926458274610895e-04, +-1.611824870393145344e-04, +-1.521724932854198688e-04, +-1.431626791909448957e-04, +-1.341530593793675808e-04, +-1.251436484738632619e-04, +-1.161344610961722944e-04, +-1.071255118669797393e-04, +-9.811681540619308103e-05, +-8.910838633221520276e-05, +-8.010023926282425666e-05, +-7.109238881394546632e-05, +-6.208484960103315923e-05, +-5.307763623784134924e-05, +-4.407076333730541661e-05, +-3.506424551081371383e-05, +-2.605809736848648341e-05, +-1.705233351945270218e-05, +-8.046968571224128957e-06, + 9.579828699265420083e-07, + 9.962506199190313957e-06, + 1.896658681284385894e-05, + 2.797021010887567634e-05, + 3.697336148670845939e-05, + 4.597602634692140455e-05, + 5.497819009187667535e-05, + 6.397983812534087692e-05, + 7.298095585271003477e-05, + 8.198152868073144942e-05, + 9.098154201762810188e-05, + 9.998098127382500132e-05, + 1.089798318606679021e-04, + 1.179780791916512032e-04, + 1.269757086815377796e-04, + 1.359727057470863599e-04, + 1.449690558067729946e-04, + 1.539647442805141240e-04, + 1.629597565902915393e-04, + 1.719540781597764896e-04, + 1.809476944145509136e-04, + 1.899405907817321160e-04, + 1.989327526905978636e-04, + 2.079241655723085324e-04, + 2.169148148596292797e-04, + 2.259046859875574458e-04, + 2.348937643929418357e-04, + 2.438820355147097512e-04, + 2.528694847934884692e-04, + 2.618560976722289014e-04, + 2.708418595959298817e-04, + 2.798267560113624542e-04, + 2.888107723677910566e-04, + 2.977938941160986779e-04, + 3.067761067100104890e-04, + 3.157573956047177730e-04, + 3.247377462580990082e-04, + 3.337171441298453505e-04, + 3.426955746821844467e-04, + 3.516730233796033127e-04, + 3.606494756884707055e-04, + 3.696249170781638264e-04, + 3.785993330197877696e-04, + 3.875727089869013416e-04, + 3.965450304556406599e-04, + 4.055162829044410013e-04, + 4.144864518142639962e-04, + 4.234555226682145258e-04, + 4.324234809521723243e-04, + 4.413903121545074840e-04, + 4.503560017658098926e-04, + 4.593205352796102280e-04, + 4.682838981915030552e-04, + 4.772460760003706197e-04, + 4.862070542070074828e-04, + 4.951668183153422548e-04, + 5.041253538315608549e-04, + 5.130826462648322220e-04, + 5.220386811270290783e-04, + 5.309934439323546387e-04, + 5.399469201984590135e-04, + 5.488990954450727886e-04, + 5.578499551952218740e-04, + 5.667994849743566727e-04, + 5.757476703110699307e-04, + 5.846944967368241687e-04, + 5.936399497856752108e-04, + 6.025840149948920223e-04, + 6.115266779045835282e-04, + 6.204679240579194640e-04, + 6.294077390007580619e-04, + 6.383461082822615516e-04, + 6.472830174546279286e-04, + 6.562184520728090624e-04, + 6.651523976952357017e-04, + 6.740848398830412945e-04, + 6.830157642007828739e-04, + 6.919451562161651288e-04, + 7.008730014996698236e-04, + 7.097992856256676473e-04, + 7.187239941710522276e-04, + 7.276471127164560633e-04, + 7.365686268453778499e-04, + 7.454885221449051007e-04, + 7.544067842054308446e-04, + 7.633233986203954774e-04, + 7.722383509868831816e-04, + 7.811516269052684765e-04, + 7.900632119794268786e-04, + 7.989730918163616110e-04, + 8.078812520268288623e-04, + 8.167876782250515577e-04, + 8.256923560284631621e-04, + 8.345952710584039541e-04, + 8.434964089392665669e-04, + 8.523957552997041146e-04, + 8.612932957712658320e-04, + 8.701890159895081652e-04, + 8.790829015936274440e-04, + 8.879749382261795066e-04, + 8.968651115337995024e-04, + 9.057534071663340958e-04, + 9.146398107780510022e-04, + 9.235243080262783150e-04, + 9.324068845726093784e-04, + 9.412875260820447506e-04, + 9.501662182236985613e-04, + 9.590429466705372189e-04, + 9.679176970990910128e-04, + 9.767904551900756863e-04, + 9.856612066281252894e-04, + 9.945299371015140812e-04, + 1.003396632302769320e-03, + 1.012261277928304479e-03, + 1.021123859678633918e-03, + 1.029984363258010975e-03, + 1.038842774375029919e-03, + 1.047699078742366820e-03, + 1.056553262076491374e-03, + 1.065405310098396134e-03, + 1.074255208532720043e-03, + 1.083102943108963170e-03, + 1.091948499560118236e-03, + 1.100791863623891203e-03, + 1.109633021041822641e-03, + 1.118471957560014359e-03, + 1.127308658928844040e-03, + 1.136143110902699399e-03, + 1.144975299240595960e-03, + 1.153805209705794114e-03, + 1.162632828066031791e-03, + 1.171458140093143254e-03, + 1.180281131563681429e-03, + 1.189101788258636883e-03, + 1.197920095963172843e-03, + 1.206736040467234301e-03, + 1.215549607565181989e-03, + 1.224360783055999892e-03, + 1.233169552743041764e-03, + 1.241975902434132393e-03, + 1.250779817942299218e-03, + 1.259581285084496660e-03, + 1.268380289682820425e-03, + 1.277176817563651203e-03, + 1.285970854558347474e-03, + 1.294762386502989852e-03, + 1.303551399238098759e-03, + 1.312337878609257406e-03, + 1.321121810466724085e-03, + 1.329903180665675030e-03, + 1.338681975065813233e-03, + 1.347458179531991649e-03, + 1.356231779933937372e-03, + 1.365002762145984270e-03, + 1.373771112047675151e-03, + 1.382536815523407667e-03, + 1.391299858462631198e-03, + 1.400060226759496226e-03, + 1.408817906313465824e-03, + 1.417572883029022054e-03, + 1.426325142815423755e-03, + 1.435074671587386989e-03, + 1.443821455264259965e-03, + 1.452565479771175975e-03, + 1.461306731037753876e-03, + 1.470045194999253409e-03, + 1.478780857595747089e-03, + 1.487513704772811928e-03, + 1.496243722481261848e-03, + 1.504970896676779708e-03, + 1.513695213321017766e-03, + 1.522416658380244380e-03, + 1.531135217826554628e-03, + 1.539850877636988850e-03, + 1.548563623794265570e-03, + 1.557273442286491796e-03, + 1.565980319106901730e-03, + 1.574684240254459362e-03, + 1.583385191733599354e-03, + 1.592083159553942971e-03, + 1.600778129731012141e-03, + 1.609470088285363610e-03, + 1.618159021243805850e-03, + 1.626844914638019305e-03, + 1.635527754505686779e-03, + 1.644207526890107893e-03, + 1.652884217839927601e-03, + 1.661557813409851982e-03, + 1.670228299659781744e-03, + 1.678895662656011353e-03, + 1.687559888469883319e-03, + 1.696220963178985373e-03, + 1.704878872866286360e-03, + 1.713533603620845305e-03, + 1.722185141537555106e-03, + 1.730833472716845900e-03, + 1.739478583265313683e-03, + 1.748120459295335848e-03, + 1.756759086925309713e-03, + 1.765394452279267631e-03, + 1.774026541487480667e-03, + 1.782655340686212708e-03, + 1.791280836017419918e-03, + 1.799903013629387382e-03, + 1.808521859676327738e-03, + 1.817137360318633573e-03, + 1.825749501722584043e-03, + 1.834358270060466303e-03, + 1.842963651511293028e-03, + 1.851565632259545178e-03, + 1.860164198496368519e-03, + 1.868759336418720791e-03, + 1.877351032230062345e-03, + 1.885939272140109381e-03, + 1.894524042364546194e-03, + 1.903105329125632985e-03, + 1.911683118651852408e-03, + 1.920257397178092365e-03, + 1.928828150945334843e-03, + 1.937395366201210591e-03, + 1.945959029199740209e-03, + 1.954519126201089124e-03, + 1.963075643472148284e-03, + 1.971628567286175943e-03, + 1.980177883923008204e-03, + 1.988723579668708833e-03, + 1.997265640816149948e-03, + 2.005804053664760490e-03, + 2.014338804520256036e-03, + 2.022869879695326622e-03, + 2.031397265508802334e-03, + 2.039920948286822085e-03, + 2.048440914361518254e-03, + 2.056957150072183296e-03, + 2.065469641764431860e-03, + 2.073978375790886883e-03, + 2.082483338510925878e-03, + 2.090984516290320117e-03, + 2.099481895502289339e-03, + 2.107975462526298291e-03, + 2.116465203748740635e-03, + 2.124951105563069494e-03, + 2.133433154369507746e-03, + 2.141911336575285252e-03, + 2.150385638594261555e-03, + 2.158856046847533895e-03, + 2.167322547763151849e-03, + 2.175785127775886618e-03, + 2.184243773327883709e-03, + 2.192698470867853258e-03, + 2.201149206852220149e-03, + 2.209595967743817335e-03, + 2.218038740013052439e-03, + 2.226477510137077256e-03, + 2.234912264600452149e-03, + 2.243342989894904493e-03, + 2.251769672518975224e-03, + 2.260192298979062271e-03, + 2.268610855788132097e-03, + 2.277025329466863309e-03, + 2.285435706542839583e-03, + 2.293841973551204953e-03, + 2.302244117034421816e-03, + 2.310642123542009860e-03, + 2.319035979631107677e-03, + 2.327425671866150542e-03, + 2.335811186819066430e-03, + 2.344192511068916938e-03, + 2.352569631202490116e-03, + 2.360942533814023789e-03, + 2.369311205504974396e-03, + 2.377675632884672288e-03, + 2.386035802569594008e-03, + 2.394391701184056184e-03, + 2.402743315359931030e-03, + 2.411090631736321956e-03, + 2.419433636960586186e-03, + 2.427772317687069276e-03, + 2.436106660578226616e-03, + 2.444436652303837599e-03, + 2.452762279541637926e-03, + 2.461083528977084985e-03, + 2.469400387303107187e-03, + 2.477712841220666012e-03, + 2.486020877438408199e-03, + 2.494324482672883453e-03, + 2.502623643648184924e-03, + 2.510918347096534244e-03, + 2.519208579758012642e-03, + 2.527494328380317217e-03, + 2.535775579719421868e-03, + 2.544052320538761972e-03, + 2.552324537610390146e-03, + 2.560592217713668697e-03, + 2.568855347636328675e-03, + 2.577113914174113379e-03, + 2.585367904130529866e-03, + 2.593617304317505541e-03, + 2.601862101554583678e-03, + 2.610102282670057929e-03, + 2.618337834499703375e-03, + 2.626568743887879379e-03, + 2.634794997686741146e-03, + 2.643016582756925817e-03, + 2.651233485967243245e-03, + 2.659445694194470869e-03, + 2.667653194323907091e-03, + 2.675855973249109329e-03, + 2.684054017871652896e-03, + 2.692247315101690443e-03, + 2.700435851857625399e-03, + 2.708619615066285447e-03, + 2.716798591662610701e-03, + 2.724972768590196246e-03, + 2.733142132801051009e-03, + 2.741306671255359668e-03, + 2.749466370922094578e-03, + 2.757621218778269837e-03, + 2.765771201810039367e-03, + 2.773916307011408018e-03, + 2.782056521385401198e-03, + 2.790191831943231345e-03, + 2.798322225704942805e-03, + 2.806447689699204107e-03, + 2.814568210963012615e-03, + 2.822683776542297355e-03, + 2.830794373491543441e-03, + 2.838899988874006748e-03, + 2.847000609761382584e-03, + 2.855096223234359493e-03, + 2.863186816382365558e-03, + 2.871272376303317300e-03, + 2.879352890104200369e-03, + 2.887428344900712200e-03, + 2.895498727817450227e-03, + 2.903564025987695908e-03, + 2.911624226553490621e-03, + 2.919679316666330855e-03, + 2.927729283485954771e-03, + 2.935774114181503597e-03, + 2.943813795930695903e-03, + 2.951848315920496766e-03, + 2.959877661346849327e-03, + 2.967901819414442768e-03, + 2.975920777337272630e-03, + 2.983934522338292997e-03, + 2.991943041649590407e-03, + 2.999946322512115834e-03, + 3.007944352176170413e-03, + 3.015937117901205510e-03, + 3.023924606955533459e-03, + 3.031906806616932112e-03, + 3.039883704172262335e-03, + 3.047855286917691350e-03, + 3.055821542158360538e-03, + 3.063782457208911927e-03, + 3.071738019393288697e-03, + 3.079688216044438112e-03, + 3.087633034504976785e-03, + 3.095572462126416555e-03, + 3.103506486270245224e-03, + 3.111435094306707911e-03, + 3.119358273615869571e-03, + 3.127276011586853453e-03, + 3.135188295618525876e-03, + 3.143095113119134983e-03, + 3.150996451506113839e-03, + 3.158892298206965581e-03, + 3.166782640658116332e-03, + 3.174667466305939982e-03, + 3.182546762606036552e-03, + 3.190420517023827198e-03, + 3.198288717034335638e-03, + 3.206151350121917536e-03, + 3.214008403780862014e-03, + 3.221859865515069865e-03, + 3.229705722837872706e-03, + 3.237545963272633193e-03, + 3.245380574352011230e-03, + 3.253209543618994833e-03, + 3.261032858625704037e-03, + 3.268850506934395297e-03, + 3.276662476117107609e-03, + 3.284468753755429623e-03, + 3.292269327441140619e-03, + 3.300064184775418179e-03, + 3.307853313369934524e-03, + 3.315636700845625735e-03, + 3.323414334833780723e-03, + 3.331186202975279249e-03, + 3.338952292921200382e-03, + 3.346712592332594383e-03, + 3.354467088880220757e-03, + 3.362215770245136764e-03, + 3.369958624118322282e-03, + 3.377695638200897514e-03, + 3.385426800203778647e-03, + 3.393152097848238600e-03, + 3.400871518865643782e-03, + 3.408585050997230744e-03, + 3.416292681994646113e-03, + 3.423994399619592274e-03, + 3.431690191644072834e-03, + 3.439380045850085575e-03, + 3.447063950029790290e-03, + 3.454741891986087311e-03, + 3.462413859531539382e-03, + 3.470079840489429402e-03, + 3.477739822692977635e-03, + 3.485393793985981387e-03, + 3.493041742222594264e-03, + 3.500683655267041242e-03, + 3.508319520994208039e-03, + 3.515949327289267286e-03, + 3.523573062047897098e-03, + 3.531190713175951477e-03, + 3.538802268590007620e-03, + 3.546407716217080119e-03, + 3.554007043994451397e-03, + 3.561600239870170437e-03, + 3.569187291802691526e-03, + 3.576768187761140104e-03, + 3.584342915724935026e-03, + 3.591911463684331965e-03, + 3.599473819640212208e-03, + 3.607029971603804234e-03, + 3.614579907597332067e-03, + 3.622123615653248963e-03, + 3.629661083815287782e-03, + 3.637192300137274004e-03, + 3.644717252684194324e-03, + 3.652235929531422523e-03, + 3.659748318765346144e-03, + 3.667254408483135338e-03, + 3.674754186792387675e-03, + 3.682247641812133425e-03, + 3.689734761671727061e-03, + 3.697215534511430132e-03, + 3.704689948482564783e-03, + 3.712157991747253982e-03, + 3.719619652478612769e-03, + 3.727074918860416499e-03, + 3.734523779087650739e-03, + 3.741966221366237622e-03, + 3.749402233912863674e-03, + 3.756831804955533625e-03, + 3.764254922732845291e-03, + 3.771671575495019139e-03, + 3.779081751502773746e-03, + 3.786485439028264722e-03, + 3.793882626354465413e-03, + 3.801273301775656959e-03, + 3.808657453597294722e-03, + 3.816035070135616238e-03, + 3.823406139718633044e-03, + 3.830770650684941960e-03, + 3.838128591384752479e-03, + 3.845479950179188974e-03, + 3.852824715440838869e-03, + 3.860162875553558789e-03, + 3.867494418912238198e-03, + 3.874819333923290761e-03, + 3.882137609004381994e-03, + 3.889449232584585824e-03, + 3.896754193104071465e-03, + 3.904052479014618639e-03, + 3.911344078779413307e-03, + 3.918628980872779222e-03, + 3.925907173780806766e-03, + 3.933178646000592277e-03, + 3.940443386041291018e-03, + 3.947701382423026914e-03, + 3.954952623677433776e-03, + 3.962197098348141898e-03, + 3.969434794989714667e-03, + 3.976665702168731900e-03, + 3.983889808462945901e-03, + 3.991107102462003106e-03, + 3.998317572767093667e-03, + 4.005521207990820481e-03, + 4.012717996757673641e-03, + 4.019907927703690424e-03, + 4.027090989476686013e-03, + 4.034267170735916959e-03, + 4.041436460152607671e-03, + 4.048598846409682400e-03, + 4.055754318201591768e-03, + 4.062902864234873949e-03, + 4.070044473227418282e-03, + 4.077179133909531253e-03, + 4.084306835022702246e-03, + 4.091427565320643507e-03, + 4.098541313568872073e-03, + 4.105648068544564926e-03, + 4.112747819037090684e-03, + 4.119840553847341734e-03, + 4.126926261788660573e-03, + 4.134004931685807648e-03, + 4.141076552375883360e-03, + 4.148141112707646322e-03, + 4.155198601542080608e-03, + 4.162249007752191060e-03, + 4.169292320222787313e-03, + 4.176328527850928750e-03, + 4.183357619545764045e-03, + 4.190379584228278755e-03, + 4.197394410831790587e-03, + 4.204402088301659700e-03, + 4.211402605595443091e-03, + 4.218395951682630922e-03, + 4.225382115545122698e-03, + 4.232361086176980071e-03, + 4.239332852584242091e-03, + 4.246297403785475981e-03, + 4.253254728811119677e-03, + 4.260204816704376077e-03, + 4.267147656520194759e-03, + 4.274083237326199193e-03, + 4.281011548202002387e-03, + 4.287932578239790626e-03, + 4.294846316544064999e-03, + 4.301752752231473124e-03, + 4.308651874431257585e-03, + 4.315543672284977497e-03, + 4.322428134946686325e-03, + 4.329305251582611820e-03, + 4.336175011371667769e-03, + 4.343037403505230210e-03, + 4.349892417186924064e-03, + 4.356740041633081970e-03, + 4.363580266072473665e-03, + 4.370413079746496808e-03, + 4.377238471908829164e-03, + 4.384056431825959430e-03, + 4.390866948776956519e-03, + 4.397670012053240575e-03, + 4.404465610959154565e-03, + 4.411253734811364929e-03, + 4.418034372939428842e-03, + 4.424807514685527056e-03, + 4.431573149404321663e-03, + 4.438331266463373288e-03, + 4.445081855242924256e-03, + 4.451824905135961900e-03, + 4.458560405548035559e-03, + 4.465288345897653818e-03, + 4.472008715616129261e-03, + 4.478721504147315652e-03, + 4.485426700948132693e-03, + 4.492124295488213875e-03, + 4.498814277250172758e-03, + 4.505496635729196175e-03, + 4.512171360433605422e-03, + 4.518838440884602979e-03, + 4.525497866616101650e-03, + 4.532149627175196399e-03, + 4.538793712121578020e-03, + 4.545430111028441258e-03, + 4.552058813481384136e-03, + 4.558679809079409749e-03, + 4.565293087434202889e-03, + 4.571898638170724186e-03, + 4.578496450926947299e-03, + 4.585086515353614320e-03, + 4.591668821115077979e-03, + 4.598243357888232193e-03, + 4.604810115363464421e-03, + 4.611369083243987803e-03, + 4.617920251246354635e-03, + 4.624463609100305447e-03, + 4.630999146548500124e-03, + 4.637526853347016635e-03, + 4.644046719265135931e-03, + 4.650558734085117295e-03, + 4.657062887602780345e-03, + 4.663559169626797264e-03, + 4.670047569979643431e-03, + 4.676528078496541840e-03, + 4.683000685026312247e-03, + 4.689465379431096217e-03, + 4.695922151586127274e-03, + 4.702370991380294685e-03, + 4.708811888715479926e-03, + 4.715244833507421449e-03, + 4.721669815684802207e-03, + 4.728086825190012943e-03, + 4.734495851978612682e-03, + 4.740896886019798848e-03, + 4.747289917296238122e-03, + 4.753674935803838333e-03, + 4.760051931552237645e-03, + 4.766420894564452407e-03, + 4.772781814877130428e-03, + 4.779134682540245663e-03, + 4.785479487617481584e-03, + 4.791816220186136642e-03, + 4.798144870336843240e-03, + 4.804465428174062129e-03, + 4.810777883815776229e-03, + 4.817082227393692725e-03, + 4.823378449052977655e-03, + 4.829666538952415503e-03, + 4.835946487264879308e-03, + 4.842218284176413000e-03, + 4.848481919887144727e-03, + 4.854737384610620723e-03, + 4.860984668574337003e-03, + 4.867223762019532926e-03, + 4.873454655201001247e-03, + 4.879677338387541745e-03, + 4.885891801861651576e-03, + 4.892098035919703949e-03, + 4.898296030871713072e-03, + 4.904485777041714921e-03, + 4.910667264767629332e-03, + 4.916840484400999793e-03, + 4.923005426307478297e-03, + 4.929162080866556460e-03, + 4.935310438471700832e-03, + 4.941450489530090084e-03, + 4.947582224463073844e-03, + 4.953705633705935904e-03, + 4.959820707707736365e-03, + 4.965927436931812100e-03, + 4.972025811855145319e-03, + 4.978115822969216182e-03, + 4.984197460779063449e-03, + 4.990270715804111072e-03, + 4.996335578577579262e-03, + 5.002392039646962399e-03, + 5.008440089573842555e-03, + 5.014479718933656169e-03, + 5.020510918316407889e-03, + 5.026533678325843107e-03, + 5.032547989579929347e-03, + 5.038553842710942129e-03, + 5.044551228365234258e-03, + 5.050540137203465667e-03, + 5.056520559900260815e-03, + 5.062492487144706552e-03, + 5.068455909640074558e-03, + 5.074410818103752829e-03, + 5.080357203267615168e-03, + 5.086295055877495565e-03, + 5.092224366693993975e-03, + 5.098145126491539572e-03, + 5.104057326059245961e-03, + 5.109960956200256324e-03, + 5.115856007732297664e-03, + 5.121742471487450953e-03, + 5.127620338311917811e-03, + 5.133489599066744756e-03, + 5.139350244626950635e-03, + 5.145202265882271690e-03, + 5.151045653736638537e-03, + 5.156880399108636735e-03, + 5.162706492931298623e-03, + 5.168523926151940250e-03, + 5.174332689732595927e-03, + 5.180132774649687764e-03, + 5.185924171894288476e-03, + 5.191706872471763164e-03, + 5.197480867402217743e-03, + 5.203246147720380112e-03, + 5.209002704475267087e-03, + 5.214750528730835791e-03, + 5.220489611565265475e-03, + 5.226219944071838763e-03, + 5.231941517358051734e-03, + 5.237654322546078829e-03, + 5.243358350773115462e-03, + 5.249053593190583511e-03, + 5.254740040964934501e-03, + 5.260417685277025100e-03, + 5.266086517322672231e-03, + 5.271746528312359036e-03, + 5.277397709471166355e-03, + 5.283040052039076305e-03, + 5.288673547270826558e-03, + 5.294298186435974531e-03, + 5.299913960818669265e-03, + 5.305520861718076436e-03, + 5.311118880448185801e-03, + 5.316708008337624712e-03, + 5.322288236730122156e-03, + 5.327859556983941501e-03, + 5.333421960472699286e-03, + 5.338975438584428468e-03, + 5.344519982722325223e-03, + 5.350055584304488736e-03, + 5.355582234763780689e-03, + 5.361099925548265012e-03, + 5.366608648120603335e-03, + 5.372108393958893724e-03, + 5.377599154555766023e-03, + 5.383080921419166817e-03, + 5.388553686071793913e-03, + 5.394017440051582929e-03, + 5.399472174911439278e-03, + 5.404917882219181791e-03, + 5.410354553557849763e-03, + 5.415782180525557238e-03, + 5.421200754735336011e-03, + 5.426610267815494722e-03, + 5.432010711409381194e-03, + 5.437402077175529022e-03, + 5.442784356787428585e-03, + 5.448157541933904349e-03, + 5.453521624318944869e-03, + 5.458876595661538850e-03, + 5.464222447696085415e-03, + 5.469559172171897105e-03, + 5.474886760853913716e-03, + 5.480205205521890451e-03, + 5.485514497971116094e-03, + 5.490814630011880450e-03, + 5.496105593469939252e-03, + 5.501387380186295584e-03, + 5.506659982017094064e-03, + 5.511923390833945238e-03, + 5.517177598523706136e-03, + 5.522422596988614714e-03, + 5.527658378146091227e-03, + 5.532884933929087777e-03, + 5.538102256285883616e-03, + 5.543310337179985399e-03, + 5.548509168590472392e-03, + 5.553698742511737133e-03, + 5.558879050953681455e-03, + 5.564050085941410310e-03, + 5.569211839515676721e-03, + 5.574364303732668412e-03, + 5.579507470663862961e-03, + 5.584641332396445002e-03, + 5.589765881032842179e-03, + 5.594881108691179654e-03, + 5.599987007505078003e-03, + 5.605083569623493626e-03, + 5.610170787211106458e-03, + 5.615248652448071899e-03, + 5.620317157530191690e-03, + 5.625376294668625078e-03, + 5.630426056090299079e-03, + 5.635466434037758425e-03, + 5.640497420768949589e-03, + 5.645519008557609367e-03, + 5.650531189693081859e-03, + 5.655533956480368780e-03, + 5.660527301239969868e-03, + 5.665511216308222880e-03, + 5.670485694037143143e-03, + 5.675450726794265682e-03, + 5.680406306963017328e-03, + 5.685352426942318592e-03, + 5.690289079147156127e-03, + 5.695216256007850676e-03, + 5.700133949970815142e-03, + 5.705042153497908407e-03, + 5.709940859066985237e-03, + 5.714830059171675976e-03, + 5.719709746321168832e-03, + 5.724579913040818771e-03, + 5.729440551871449287e-03, + 5.734291655369971701e-03, + 5.739133216108907240e-03, + 5.743965226676804245e-03, + 5.748787679678060356e-03, + 5.753600567732782868e-03, + 5.758403883477108791e-03, + 5.763197619563098159e-03, + 5.767981768658549287e-03, + 5.772756323447376069e-03, + 5.777521276629143943e-03, + 5.782276620919753370e-03, + 5.787022349050692169e-03, + 5.791758453769582822e-03, + 5.796484927840034156e-03, + 5.801201764041493888e-03, + 5.805908955169596444e-03, + 5.810606494035737077e-03, + 5.815294373467661676e-03, + 5.819972586308814512e-03, + 5.824641125418889877e-03, + 5.829299983673475599e-03, + 5.833949153964331467e-03, + 5.838588629199318106e-03, + 5.843218402302191410e-03, + 5.847838466212985052e-03, + 5.852448813887750276e-03, + 5.857049438298726762e-03, + 5.861640332434111048e-03, + 5.866221489298387853e-03, + 5.870792901912180034e-03, + 5.875354563312129748e-03, + 5.879906466551195095e-03, + 5.884448604698433276e-03, + 5.888980970839179270e-03, + 5.893503558074801238e-03, + 5.898016359522903485e-03, + 5.902519368317563249e-03, + 5.907012577608722684e-03, + 5.911495980562851520e-03, + 5.915969570362424913e-03, + 5.920433340206362333e-03, + 5.924887283309857554e-03, + 5.929331392904174831e-03, + 5.933765662237104263e-03, + 5.938190084572614845e-03, + 5.942604653191051363e-03, + 5.947009361388970461e-03, + 5.951404202479351410e-03, + 5.955789169791552741e-03, + 5.960164256671117954e-03, + 5.964529456480108585e-03, + 5.968884762596888237e-03, + 5.973230168416286505e-03, + 5.977565667349341375e-03, + 5.981891252823633154e-03, + 5.986206918283194268e-03, + 5.990512657188307166e-03, + 5.994808463015856466e-03, + 5.999094329258969002e-03, + 6.003370249427509957e-03, + 6.007636217047526012e-03, + 6.011892225661698980e-03, + 6.016138268829087331e-03, + 6.020374340125295327e-03, + 6.024600433142473892e-03, + 6.028816541489088153e-03, + 6.033022658790427456e-03, + 6.037218778688001677e-03, + 6.041404894840110215e-03, + 6.045581000921340653e-03, + 6.049747090623049280e-03, + 6.053903157653127767e-03, + 6.058049195735906028e-03, + 6.062185198612428903e-03, + 6.066311160040342536e-03, + 6.070427073793752994e-03, + 6.074532933663557600e-03, + 6.078628733457067633e-03, + 6.082714466998527005e-03, + 6.086790128128500774e-03, + 6.090855710704425920e-03, + 6.094911208600228836e-03, + 6.098956615706618498e-03, + 6.102991925931024013e-03, + 6.107017133197323137e-03, + 6.111032231446439020e-03, + 6.115037214635671466e-03, + 6.119032076739255518e-03, + 6.123016811747979821e-03, + 6.126991413669491057e-03, + 6.130955876528189873e-03, + 6.134910194365040918e-03, + 6.138854361237978778e-03, + 6.142788371221568830e-03, + 6.146712218407272658e-03, + 6.150625896903182642e-03, + 6.154529400834298641e-03, + 6.158422724342423916e-03, + 6.162305861586054104e-03, + 6.166178806740651303e-03, + 6.170041553998328356e-03, + 6.173894097568310285e-03, + 6.177736431676418213e-03, + 6.181568550565327835e-03, + 6.185390448494794934e-03, + 6.189202119741222564e-03, + 6.193003558598030554e-03, + 6.196794759375402230e-03, + 6.200575716400522942e-03, + 6.204346424017497669e-03, + 6.208106876587195753e-03, + 6.211857068487561424e-03, + 6.215596994113391748e-03, + 6.219326647876503161e-03, + 6.223046024205486013e-03, + 6.226755117546057573e-03, + 6.230453922360872088e-03, + 6.234142433129403679e-03, + 6.237820644348347071e-03, + 6.241488550531101506e-03, + 6.245146146208357951e-03, + 6.248793425927595159e-03, + 6.252430384253371103e-03, + 6.256057015767310832e-03, + 6.259673315067946012e-03, + 6.263279276770995080e-03, + 6.266874895509025843e-03, + 6.270460165931923853e-03, + 6.274035082706362447e-03, + 6.277599640516297146e-03, + 6.281153834062538910e-03, + 6.284697658063206904e-03, + 6.288231107253398032e-03, + 6.291754176385259793e-03, + 6.295266860228117788e-03, + 6.298769153568441019e-03, + 6.302261051209710925e-03, + 6.305742547972614798e-03, + 6.309213638694969456e-03, + 6.312674318231762012e-03, + 6.316124581455010226e-03, + 6.319564423254027050e-03, + 6.322993838535262770e-03, + 6.326412822222240821e-03, + 6.329821369255815393e-03, + 6.333219474593843566e-03, + 6.336607133211646752e-03, + 6.339984340101464250e-03, + 6.343351090272976271e-03, + 6.346707378752869388e-03, + 6.350053200585220776e-03, + 6.353388550831309996e-03, + 6.356713424569558277e-03, + 6.360027816895732350e-03, + 6.363331722922847301e-03, + 6.366625137781165705e-03, + 6.369908056618160327e-03, + 6.373180474598623413e-03, + 6.376442386904704850e-03, + 6.379693788735694461e-03, + 6.382934675308274408e-03, + 6.386165041856422912e-03, + 6.389384883631440276e-03, + 6.392594195901867352e-03, + 6.395792973953633859e-03, + 6.398981213090016752e-03, + 6.402158908631540475e-03, + 6.405326055916217218e-03, + 6.408482650299185228e-03, + 6.411628687153250045e-03, + 6.414764161868334591e-03, + 6.417889069851763668e-03, + 6.421003406528318601e-03, + 6.424107167340144427e-03, + 6.427200347746800206e-03, + 6.430282943225131519e-03, + 6.433354949269480365e-03, + 6.436416361391628788e-03, + 6.439467175120675707e-03, + 6.442507386003204321e-03, + 6.445536989603223126e-03, + 6.448555981502222291e-03, + 6.451564357298996723e-03, + 6.454562112609922749e-03, + 6.457549243068808065e-03, + 6.460525744326846634e-03, + 6.463491612052800830e-03, + 6.466446841932762049e-03, + 6.469391429670557497e-03, + 6.472325370987213299e-03, + 6.475248661621448021e-03, + 6.478161297329337008e-03, + 6.481063273884557843e-03, + 6.483954587078316623e-03, + 6.486835232719185759e-03, + 6.489705206633472612e-03, + 6.492564504664813559e-03, + 6.495413122674563444e-03, + 6.498251056541416541e-03, + 6.501078302161762169e-03, + 6.503894855449525100e-03, + 6.506700712336129996e-03, + 6.509495868770572534e-03, + 6.512280320719512211e-03, + 6.515054064167016476e-03, + 6.517817095114915478e-03, + 6.520569409582432571e-03, + 6.523311003606602383e-03, + 6.526041873241865757e-03, + 6.528762014560380265e-03, + 6.531471423651872762e-03, + 6.534170096623641115e-03, + 6.536858029600732881e-03, + 6.539535218725605302e-03, + 6.542201660158614498e-03, + 6.544857350077521937e-03, + 6.547502284677882145e-03, + 6.550136460172779895e-03, + 6.552759872793027969e-03, + 6.555372518787125520e-03, + 6.557974394421087205e-03, + 6.560565495978757170e-03, + 6.563145819761571388e-03, + 6.565715362088699047e-03, + 6.568274119296893358e-03, + 6.570822087740685845e-03, + 6.573359263792286598e-03, + 6.575885643841543511e-03, + 6.578401224296082789e-03, + 6.580906001581214408e-03, + 6.583399972139967679e-03, + 6.585883132433034866e-03, + 6.588355478938898689e-03, + 6.590817008153793295e-03, + 6.593267716591551600e-03, + 6.595707600783918406e-03, + 6.598136657280213001e-03, + 6.600554882647644006e-03, + 6.602962273471092540e-03, + 6.605358826353206758e-03, + 6.607744537914410528e-03, + 6.610119404792893887e-03, + 6.612483423644633859e-03, + 6.614836591143317263e-03, + 6.617178903980470810e-03, + 6.619510358865422078e-03, + 6.621830952525205836e-03, + 6.624140681704723636e-03, + 6.626439543166636262e-03, + 6.628727533691472149e-03, + 6.631004650077438299e-03, + 6.633270889140665746e-03, + 6.635526247715098531e-03, + 6.637770722652402630e-03, + 6.640004310822192335e-03, + 6.642227009111759638e-03, + 6.644438814426448930e-03, + 6.646639723689202507e-03, + 6.648829733840972561e-03, + 6.651008841840444497e-03, + 6.653177044664225145e-03, + 6.655334339306792461e-03, + 6.657480722780348935e-03, + 6.659616192115154661e-03, + 6.661740744359168249e-03, + 6.663854376578311374e-03, + 6.665957085856300500e-03, + 6.668048869294803879e-03, + 6.670129724013379967e-03, + 6.672199647149344715e-03, + 6.674258635858055198e-03, + 6.676306687312689309e-03, + 6.678343798704297792e-03, + 6.680369967241906598e-03, + 6.682385190152328666e-03, + 6.684389464680430201e-03, + 6.686382788088862661e-03, + 6.688365157658263983e-03, + 6.690336570687138024e-03, + 6.692297024491958637e-03, + 6.694246516407119374e-03, + 6.696185043784846740e-03, + 6.698112603995493367e-03, + 6.700029194427138159e-03, + 6.701934812485963594e-03, + 6.703829455595953016e-03, + 6.705713121199148238e-03, + 6.707585806755482147e-03, + 6.709447509742835943e-03, + 6.711298227657089450e-03, + 6.713137958012016168e-03, + 6.714966698339454136e-03, + 6.716784446189069148e-03, + 6.718591199128588071e-03, + 6.720386954743723384e-03, + 6.722171710638056089e-03, + 6.723945464433266420e-03, + 6.725708213768911807e-03, + 6.727459956302622897e-03, + 6.729200689709963906e-03, + 6.730930411684455175e-03, + 6.732649119937708475e-03, + 6.734356812199249198e-03, + 6.736053486216627383e-03, + 6.737739139755370872e-03, + 6.739413770599036492e-03, + 6.741077376549198773e-03, + 6.742729955425377092e-03, + 6.744371505065185728e-03, + 6.746002023324185540e-03, + 6.747621508076019278e-03, + 6.749229957212250254e-03, + 6.750827368642557495e-03, + 6.752413740294629929e-03, + 6.753989070114121279e-03, + 6.755553356064780170e-03, + 6.757106596128321756e-03, + 6.758648788304606400e-03, + 6.760179930611372526e-03, + 6.761700021084560142e-03, + 6.763209057778063645e-03, + 6.764707038763795137e-03, + 6.766193962131762489e-03, + 6.767669825990004287e-03, + 6.769134628464643609e-03, + 6.770588367699773534e-03, + 6.772031041857642757e-03, + 6.773462649118470839e-03, + 6.774883187680592195e-03, + 6.776292655760374553e-03, + 6.777691051592251055e-03, + 6.779078373428722853e-03, + 6.780454619540379931e-03, + 6.781819788215829974e-03, + 6.783173877761803326e-03, + 6.784516886503055844e-03, + 6.785848812782482517e-03, + 6.787169654960983900e-03, + 6.788479411417578865e-03, + 6.789778080549359503e-03, + 6.791065660771485046e-03, + 6.792342150517236520e-03, + 6.793607548237899640e-03, + 6.794861852402967785e-03, + 6.796105061499919942e-03, + 6.797337174034374235e-03, + 6.798558188529987313e-03, + 6.799768103528592254e-03, + 6.800966917590051120e-03, + 6.802154629292358166e-03, + 6.803331237231571328e-03, + 6.804496740021868592e-03, + 6.805651136295564479e-03, + 6.806794424702992084e-03, + 6.807926603912616698e-03, + 6.809047672611087849e-03, + 6.810157629503043285e-03, + 6.811256473311281569e-03, + 6.812344202776735198e-03, + 6.813420816658428102e-03, + 6.814486313733429668e-03, + 6.815540692797017810e-03, + 6.816583952662545395e-03, + 6.817616092161442841e-03, + 6.818637110143325672e-03, + 6.819647005475834925e-03, + 6.820645777044845315e-03, + 6.821633423754235384e-03, + 6.822609944526080925e-03, + 6.823575338300520536e-03, + 6.824529604035837159e-03, + 6.825472740708478890e-03, + 6.826404747312944492e-03, + 6.827325622861887475e-03, + 6.828235366386082271e-03, + 6.829133976934444183e-03, + 6.830021453573970405e-03, + 6.830897795389822419e-03, + 6.831763001485291302e-03, + 6.832617070981769972e-03, + 6.833460003018766195e-03, + 6.834291796753992794e-03, + 6.835112451363162082e-03, + 6.835921966040272094e-03, + 6.836720339997284790e-03, + 6.837507572464444384e-03, + 6.838283662689998918e-03, + 6.839048609940430977e-03, + 6.839802413500292895e-03, + 6.840545072672257927e-03, + 6.841276586777195710e-03, + 6.841996955154022210e-03, + 6.842706177159848906e-03, + 6.843404252169917740e-03, + 6.844091179577571626e-03, + 6.844766958794296086e-03, + 6.845431589249702763e-03, + 6.846085070391583205e-03, + 6.846727401685797840e-03, + 6.847358582616356638e-03, + 6.847978612685421719e-03, + 6.848587491413280458e-03, + 6.849185218338363704e-03, + 6.849771793017178992e-03, + 6.850347215024459729e-03, + 6.850911483952990856e-03, + 6.851464599413692978e-03, + 6.852006561035716911e-03, + 6.852537368466199083e-03, + 6.853057021370520009e-03, + 6.853565519432100461e-03, + 6.854062862352627850e-03, + 6.854549049851763054e-03, + 6.855024081667391092e-03, + 6.855487957555468463e-03, + 6.855940677290161059e-03, + 6.856382240663708855e-03, + 6.856812647486453666e-03, + 6.857231897586931087e-03, + 6.857639990811749062e-03, + 6.858036927025682426e-03, + 6.858422706111593978e-03, + 6.858797327970482180e-03, + 6.859160792521487235e-03, + 6.859513099701857256e-03, + 6.859854249466987297e-03, + 6.860184241790328284e-03, + 6.860503076663535330e-03, + 6.860810754096348905e-03, + 6.861107274116591374e-03, + 6.861392636770268470e-03, + 6.861666842121452205e-03, + 6.861929890252378879e-03, + 6.862181781263333724e-03, + 6.862422515272778405e-03, + 6.862652092417269485e-03, + 6.862870512851471441e-03, + 6.863077776748132373e-03, + 6.863273884298170743e-03, + 6.863458835710555678e-03, + 6.863632631212423195e-03, + 6.863795271048940029e-03, + 6.863946755483446745e-03, + 6.864087084797352786e-03, + 6.864216259290181581e-03, + 6.864334279279552323e-03, + 6.864441145101186914e-03, + 6.864536857108909096e-03, + 6.864621415674640112e-03, + 6.864694821188370953e-03, + 6.864757074058228277e-03, + 6.864808174710411957e-03, + 6.864848123589194218e-03, + 6.864876921156991621e-03, + 6.864894567894224559e-03, + 6.864901064299490721e-03, + 6.864896410889391627e-03, + 6.864880608198672268e-03, + 6.864853656780132637e-03, + 6.864815557204664159e-03, + 6.864766310061201117e-03, + 6.864705915956806521e-03, + 6.864634375516564559e-03, + 6.864551689383683805e-03, + 6.864457858219396615e-03, + 6.864352882703018965e-03, + 6.864236763531951328e-03, + 6.864109501421647441e-03, + 6.863971097105607370e-03, + 6.863821551335441695e-03, + 6.863660864880716250e-03, + 6.863489038529176772e-03, + 6.863306073086531192e-03, + 6.863111969376597087e-03, + 6.862906728241208870e-03, + 6.862690350540246419e-03, + 6.862462837151666294e-03, + 6.862224188971421945e-03, + 6.861974406913567796e-03, + 6.861713491910130004e-03, + 6.861441444911214015e-03, + 6.861158266884928233e-03, + 6.860863958817475967e-03, + 6.860558521713007972e-03, + 6.860241956593757760e-03, + 6.859914264499938387e-03, + 6.859575446489814439e-03, + 6.859225503639673413e-03, + 6.858864437043798827e-03, + 6.858492247814503180e-03, + 6.858108937082089789e-03, + 6.857714505994891817e-03, + 6.857308955719238451e-03, + 6.856892287439449694e-03, + 6.856464502357874531e-03, + 6.856025601694827609e-03, + 6.855575586688636078e-03, + 6.855114458595615301e-03, + 6.854642218690053246e-03, + 6.854158868264260789e-03, + 6.853664408628478040e-03, + 6.853158841110978429e-03, + 6.852642167057968955e-03, + 6.852114387833655243e-03, + 6.851575504820227661e-03, + 6.851025519417774587e-03, + 6.850464433044450678e-03, + 6.849892247136279110e-03, + 6.849308963147281680e-03, + 6.848714582549457995e-03, + 6.848109106832688323e-03, + 6.847492537504907932e-03, + 6.846864876091867703e-03, + 6.846226124137390866e-03, + 6.845576283203122329e-03, + 6.844915354868722109e-03, + 6.844243340731740420e-03, + 6.843560242407670594e-03, + 6.842866061529949070e-03, + 6.842160799749886016e-03, + 6.841444458736752054e-03, + 6.840717040177703677e-03, + 6.839978545777826609e-03, + 6.839228977260098513e-03, + 6.838468336365407206e-03, + 6.837696624852533309e-03, + 6.836913844498200554e-03, + 6.836119997096923133e-03, + 6.835315084461205185e-03, + 6.834499108421385541e-03, + 6.833672070825665482e-03, + 6.832833973540193735e-03, + 6.831984818448891272e-03, + 6.831124607453663809e-03, + 6.830253342474174559e-03, + 6.829371025448020306e-03, + 6.828477658330624721e-03, + 6.827573243095267849e-03, + 6.826657781733062695e-03, + 6.825731276253033282e-03, + 6.824793728681934242e-03, + 6.823845141064461585e-03, + 6.822885515463069685e-03, + 6.821914853958091843e-03, + 6.820933158647654419e-03, + 6.819940431647720201e-03, + 6.818936675092071922e-03, + 6.817921891132284508e-03, + 6.816896081937736350e-03, + 6.815859249695624920e-03, + 6.814811396610955495e-03, + 6.813752524906502121e-03, + 6.812682636822829305e-03, + 6.811601734618331037e-03, + 6.810509820569103298e-03, + 6.809406896969084563e-03, + 6.808292966129939582e-03, + 6.807168030381145242e-03, + 6.806032092069909910e-03, + 6.804885153561189039e-03, + 6.803727217237723335e-03, + 6.802558285499976307e-03, + 6.801378360766202787e-03, + 6.800187445472277194e-03, + 6.798985542071919914e-03, + 6.797772653036581944e-03, + 6.796548780855386773e-03, + 6.795313928035164215e-03, + 6.794068097100501580e-03, + 6.792811290593686428e-03, + 6.791543511074711777e-03, + 6.790264761121243137e-03, + 6.788975043328686169e-03, + 6.787674360310073929e-03, + 6.786362714696206506e-03, + 6.785040109135474090e-03, + 6.783706546293988802e-03, + 6.782362028855550874e-03, + 6.781006559521563642e-03, + 6.779640141011148043e-03, + 6.778262776061034188e-03, + 6.776874467425654178e-03, + 6.775475217876995512e-03, + 6.774065030204777169e-03, + 6.772643907216272657e-03, + 6.771211851736447934e-03, + 6.769768866607853847e-03, + 6.768314954690620930e-03, + 6.766850118862601654e-03, + 6.765374362019106746e-03, + 6.763887687073170604e-03, + 6.762390096955329249e-03, + 6.760881594613788598e-03, + 6.759362183014282210e-03, + 6.757831865140127674e-03, + 6.756290643992217057e-03, + 6.754738522589022118e-03, + 6.753175503966535320e-03, + 6.751601591178365246e-03, + 6.750016787295604753e-03, + 6.748421095406956748e-03, + 6.746814518618564176e-03, + 6.745197060054193040e-03, + 6.743568722855097092e-03, + 6.741929510180015225e-03, + 6.740279425205257351e-03, + 6.738618471124614186e-03, + 6.736946651149411033e-03, + 6.735263968508354258e-03, + 6.733570426447794965e-03, + 6.731866028231433229e-03, + 6.730150777140544473e-03, + 6.728424676473820747e-03, + 6.726687729547411489e-03, + 6.724939939694960823e-03, + 6.723181310267533836e-03, + 6.721411844633661675e-03, + 6.719631546179280837e-03, + 6.717840418307825107e-03, + 6.716038464440089381e-03, + 6.714225688014287784e-03, + 6.712402092486127389e-03, + 6.710567681328621741e-03, + 6.708722458032257384e-03, + 6.706866426104856824e-03, + 6.704999589071703424e-03, + 6.703121950475390486e-03, + 6.701233513875906253e-03, + 6.699334282850640844e-03, + 6.697424260994304726e-03, + 6.695503451918985958e-03, + 6.693571859254114631e-03, + 6.691629486646433374e-03, + 6.689676337760084961e-03, + 6.687712416276481338e-03, + 6.685737725894364339e-03, + 6.683752270329778797e-03, + 6.681756053316167954e-03, + 6.679749078604150549e-03, + 6.677731349961681280e-03, + 6.675702871174060346e-03, + 6.673663646043789463e-03, + 6.671613678390680285e-03, + 6.669552972051777211e-03, + 6.667481530881450187e-03, + 6.665399358751259405e-03, + 6.663306459550009074e-03, + 6.661202837183785586e-03, + 6.659088495575866441e-03, + 6.656963438666811325e-03, + 6.654827670414248733e-03, + 6.652681194793212509e-03, + 6.650524015795763674e-03, + 6.648356137431307884e-03, + 6.646177563726317870e-03, + 6.643988298724474821e-03, + 6.641788346486718689e-03, + 6.639577711090989716e-03, + 6.637356396632551093e-03, + 6.635124407223684517e-03, + 6.632881746993916569e-03, + 6.630628420089846979e-03, + 6.628364430675196331e-03, + 6.626089782930861573e-03, + 6.623804481054804127e-03, + 6.621508529262062036e-03, + 6.619201931784865316e-03, + 6.616884692872416519e-03, + 6.614556816791158748e-03, + 6.612218307824385341e-03, + 6.609869170272658807e-03, + 6.607509408453451742e-03, + 6.605139026701439126e-03, + 6.602758029368192144e-03, + 6.600366420822361205e-03, + 6.597964205449723639e-03, + 6.595551387652874055e-03, + 6.593127971851615518e-03, + 6.590693962482608269e-03, + 6.588249363999636871e-03, + 6.585794180873370818e-03, + 6.583328417591456476e-03, + 6.580852078658612492e-03, + 6.578365168596410351e-03, + 6.575867691943427032e-03, + 6.573359653255160875e-03, + 6.570841057104072347e-03, + 6.568311908079565824e-03, + 6.565772210787877705e-03, + 6.563221969852290651e-03, + 6.560661189912869035e-03, + 6.558089875626719155e-03, + 6.555508031667612798e-03, + 6.552915662726386224e-03, + 6.550312773510765831e-03, + 6.547699368745150440e-03, + 6.545075453170963453e-03, + 6.542441031546413453e-03, + 6.539796108646574006e-03, + 6.537140689263307332e-03, + 6.534474778205266905e-03, + 6.531798380298056185e-03, + 6.529111500383916362e-03, + 6.526414143322004785e-03, + 6.523706313988132145e-03, + 6.520988017275078201e-03, + 6.518259258092216207e-03, + 6.515520041365721951e-03, + 6.512770372038617119e-03, + 6.510010255070509087e-03, + 6.507239695437923993e-03, + 6.504458698133873049e-03, + 6.501667268168325256e-03, + 6.498865410567808421e-03, + 6.496053130375540989e-03, + 6.493230432651560420e-03, + 6.490397322472416138e-03, + 6.487553804931512139e-03, + 6.484699885138673313e-03, + 6.481835568220617287e-03, + 6.478960859320538092e-03, + 6.476075763598378512e-03, + 6.473180286230615851e-03, + 6.470274432410375552e-03, + 6.467358207347439006e-03, + 6.464431616268094365e-03, + 6.461494664415297871e-03, + 6.458547357048454417e-03, + 6.455589699443750606e-03, + 6.452621696893743632e-03, + 6.449643354707630151e-03, + 6.446654678211118789e-03, + 6.443655672746474369e-03, + 6.440646343672430316e-03, + 6.437626696364320486e-03, + 6.434596736213877080e-03, + 6.431556468629476102e-03, + 6.428505899035728832e-03, + 6.425445032873993573e-03, + 6.422373875601906403e-03, + 6.419292432693676081e-03, + 6.416200709639881088e-03, + 6.413098711947518189e-03, + 6.409986445140131682e-03, + 6.406863914757560119e-03, + 6.403731126356082895e-03, + 6.400588085508356062e-03, + 6.397434797803490392e-03, + 6.394271268846953363e-03, + 6.391097504260469415e-03, + 6.387913509682314854e-03, + 6.384719290766932738e-03, + 6.381514853185215642e-03, + 6.378300202624289685e-03, + 6.375075344787740905e-03, + 6.371840285395322101e-03, + 6.368595030183111551e-03, + 6.365339584903559854e-03, + 6.362073955325262681e-03, + 6.358798147233292106e-03, + 6.355512166428662311e-03, + 6.352216018728883834e-03, + 6.348909709967679067e-03, + 6.345593245994912007e-03, + 6.342266632676686264e-03, + 6.338929875895291284e-03, + 6.335582981549319447e-03, + 6.332225955553429271e-03, + 6.328858803838456441e-03, + 6.325481532351526562e-03, + 6.322094147055781939e-03, + 6.318696653930564594e-03, + 6.315289058971300037e-03, + 6.311871368189652526e-03, + 6.308443587613294344e-03, + 6.305005723285994276e-03, + 6.301557781267714750e-03, + 6.298099767634352496e-03, + 6.294631688478059470e-03, + 6.291153549906799633e-03, + 6.287665358044829469e-03, + 6.284167119032286856e-03, + 6.280658839025359333e-03, + 6.277140524196357825e-03, + 6.273612180733423478e-03, + 6.270073814840912765e-03, + 6.266525432738882274e-03, + 6.262967040663605656e-03, + 6.259398644867201524e-03, + 6.255820251617799990e-03, + 6.252231867199430776e-03, + 6.248633497911988514e-03, + 6.245025150071450461e-03, + 6.241406830009578119e-03, + 6.237778544074000509e-03, + 6.234140298628372892e-03, + 6.230492100052064525e-03, + 6.226833954740482180e-03, + 6.223165869104652949e-03, + 6.219487849571681340e-03, + 6.215799902584339016e-03, + 6.212102034601258219e-03, + 6.208394252096953447e-03, + 6.204676561561601154e-03, + 6.200948969501346789e-03, + 6.197211482437832084e-03, + 6.193464106908748434e-03, + 6.189706849467339900e-03, + 6.185939716682708513e-03, + 6.182162715139626931e-03, + 6.178375851438544508e-03, + 6.174579132195749491e-03, + 6.170772564043068044e-03, + 6.166956153628112315e-03, + 6.163129907614063596e-03, + 6.159293832679920387e-03, + 6.155447935520186147e-03, + 6.151592222844999396e-03, + 6.147726701380268159e-03, + 6.143851377867346440e-03, + 6.139966259063283152e-03, + 6.136071351740633034e-03, + 6.132166662687668288e-03, + 6.128252198708094949e-03, + 6.124327966621168247e-03, + 6.120393973261840925e-03, + 6.116450225480382467e-03, + 6.112496730142808442e-03, + 6.108533494130384371e-03, + 6.104560524340050739e-03, + 6.100577827684226968e-03, + 6.096585411090722946e-03, + 6.092583281502836172e-03, + 6.088571445879279766e-03, + 6.084549911194320378e-03, + 6.080518684437506705e-03, + 6.076477772613823880e-03, + 6.072427182743756792e-03, + 6.068366921863068038e-03, + 6.064296997022933233e-03, + 6.060217415289817847e-03, + 6.056128183745703580e-03, + 6.052029309487759641e-03, + 6.047920799628504068e-03, + 6.043802661295850573e-03, + 6.039674901632870012e-03, + 6.035537527798136466e-03, + 6.031390546965218966e-03, + 6.027233966323185428e-03, + 6.023067793076201069e-03, + 6.018892034443825909e-03, + 6.014706697660702518e-03, + 6.010511789976702608e-03, + 6.006307318657045854e-03, + 6.002093290981874024e-03, + 5.997869714246779199e-03, + 5.993636595762314584e-03, + 5.989393942854344052e-03, + 5.985141762863752449e-03, + 5.980880063146554876e-03, + 5.976608851073986033e-03, + 5.972328134032263425e-03, + 5.968037919422700122e-03, + 5.963738214661805370e-03, + 5.959429027180968008e-03, + 5.955110364426853715e-03, + 5.950782233860860311e-03, + 5.946444642959722304e-03, + 5.942097599214940171e-03, + 5.937741110133200155e-03, + 5.933375183236073297e-03, + 5.928999826060024105e-03, + 5.924615046156744488e-03, + 5.920220851092498904e-03, + 5.915817248448812168e-03, + 5.911404245821922157e-03, + 5.906981850823136287e-03, + 5.902550071078519270e-03, + 5.898108914229024946e-03, + 5.893658387930618588e-03, + 5.889198499853936890e-03, + 5.884729257684581140e-03, + 5.880250669122876958e-03, + 5.875762741884098944e-03, + 5.871265483698226081e-03, + 5.866758902309991176e-03, + 5.862243005479088158e-03, + 5.857717800979698498e-03, + 5.853183296601073213e-03, + 5.848639500146831163e-03, + 5.844086419435652949e-03, + 5.839524062300725793e-03, + 5.834952436589937834e-03, + 5.830371550165999554e-03, + 5.825781410906108980e-03, + 5.821182026702306431e-03, + 5.816573405461133647e-03, + 5.811955555103733538e-03, + 5.807328483566039264e-03, + 5.802692198798410812e-03, + 5.798046708765872657e-03, + 5.793392021447962836e-03, + 5.788728144838909025e-03, + 5.784055086947377869e-03, + 5.779372855796511416e-03, + 5.774681459424166503e-03, + 5.769980905882494959e-03, + 5.765271203238363402e-03, + 5.760552359572785990e-03, + 5.755824382981597487e-03, + 5.751087281574879077e-03, + 5.746341063477140507e-03, + 5.741585736827455391e-03, + 5.736821309779110804e-03, + 5.732047790500053100e-03, + 5.727265187172249535e-03, + 5.722473507992393432e-03, + 5.717672761171220704e-03, + 5.712862954934099652e-03, + 5.708044097520516627e-03, + 5.703216197184252101e-03, + 5.698379262193600976e-03, + 5.693533300830909416e-03, + 5.688678321392873216e-03, + 5.683814332190425048e-03, + 5.678941341548844612e-03, + 5.674059357807497567e-03, + 5.669168389319976034e-03, + 5.664268444454192281e-03, + 5.659359531592116771e-03, + 5.654441659129857099e-03, + 5.649514835477863553e-03, + 5.644579069060499769e-03, + 5.639634368316531927e-03, + 5.634680741698421848e-03, + 5.629718197673152721e-03, + 5.624746744721500526e-03, + 5.619766391338515410e-03, + 5.614777146033165210e-03, + 5.609779017328426522e-03, + 5.604772013761488529e-03, + 5.599756143883360092e-03, + 5.594731416259123881e-03, + 5.589697839467772447e-03, + 5.584655422102426797e-03, + 5.579604172770023275e-03, + 5.574544100091396830e-03, + 5.569475212701494385e-03, + 5.564397519249006212e-03, + 5.559311028396534196e-03, + 5.554215748820550205e-03, + 5.549111689211527927e-03, + 5.543998858273632355e-03, + 5.538877264724862033e-03, + 5.533746917297180032e-03, + 5.528607824736190418e-03, + 5.523459995801484335e-03, + 5.518303439266079684e-03, + 5.513138163917110680e-03, + 5.507964178555340394e-03, + 5.502781491995214526e-03, + 5.497590113064913450e-03, + 5.492390050606242059e-03, + 5.487181313474902983e-03, + 5.481963910540068978e-03, + 5.476737850684582423e-03, + 5.471503142805085422e-03, + 5.466259795811688471e-03, + 5.461007818628125718e-03, + 5.455747220191736746e-03, + 5.450478009453549842e-03, + 5.445200195378029594e-03, + 5.439913786943139339e-03, + 5.434618793140619589e-03, + 5.429315222975412102e-03, + 5.424003085466326014e-03, + 5.418682389645218186e-03, + 5.413353144557808520e-03, + 5.408015359263083216e-03, + 5.402669042833419671e-03, + 5.397314204354839752e-03, + 5.391950852926541415e-03, + 5.386578997661367087e-03, + 5.381198647685159209e-03, + 5.375809812137540000e-03, + 5.370412500171190678e-03, + 5.365006720952333712e-03, + 5.359592483660346844e-03, + 5.354169797487930496e-03, + 5.348738671641233532e-03, + 5.343299115339456874e-03, + 5.337851137815194380e-03, + 5.332394748314176966e-03, + 5.326929956095467766e-03, + 5.321456770431428306e-03, + 5.315975200607244919e-03, + 5.310485255921682489e-03, + 5.304986945686435661e-03, + 5.299480279226380375e-03, + 5.293965265879637186e-03, + 5.288441914997274625e-03, + 5.282910235943697776e-03, + 5.277370238095996889e-03, + 5.271821930844770507e-03, + 5.266265323593331826e-03, + 5.260700425758285496e-03, + 5.255127246769094804e-03, + 5.249545796068168409e-03, + 5.243956083111178668e-03, + 5.238358117366481367e-03, + 5.232751908315512110e-03, + 5.227137465452599829e-03, + 5.221514798285109907e-03, + 5.215883916333195237e-03, + 5.210244829129873426e-03, + 5.204597546221234085e-03, + 5.198942077166007758e-03, + 5.193278431535887710e-03, + 5.187606618915262778e-03, + 5.181926648901592942e-03, + 5.176238531104889774e-03, + 5.170542275147954094e-03, + 5.164837890666545105e-03, + 5.159125387308921562e-03, + 5.153404774736382137e-03, + 5.147676062622476983e-03, + 5.141939260653869900e-03, + 5.136194378529807501e-03, + 5.130441425962102737e-03, + 5.124680412675251991e-03, + 5.118911348406335327e-03, + 5.113134242905231601e-03, + 5.107349105934254167e-03, + 5.101555947268247154e-03, + 5.095754776694853480e-03, + 5.089945604014056019e-03, + 5.084128439038443879e-03, + 5.078303291593050210e-03, + 5.072470171515592458e-03, + 5.066629088656104604e-03, + 5.060780052877060335e-03, + 5.054923074053609827e-03, + 5.049058162073021168e-03, + 5.043185326835364704e-03, + 5.037304578252602312e-03, + 5.031415926249587466e-03, + 5.025519380763180527e-03, + 5.019614951742849829e-03, + 5.013702649150214574e-03, + 5.007782482959209636e-03, + 5.001854463156330151e-03, + 4.995918599739875184e-03, + 4.989974902720916566e-03, + 4.984023382122378630e-03, + 4.978064047979760716e-03, + 4.972096910340517012e-03, + 4.966121979264315027e-03, + 4.960139264823227277e-03, + 4.954148777101246431e-03, + 4.948150526194573275e-03, + 4.942144522211674822e-03, + 4.936130775272909617e-03, + 4.930109295511057692e-03, + 4.924080093070495705e-03, + 4.918043178108145834e-03, + 4.911998560792625763e-03, + 4.905946251304878387e-03, + 4.899886259837624505e-03, + 4.893818596595602213e-03, + 4.887743271795788082e-03, + 4.881660295666631275e-03, + 4.875569678449015454e-03, + 4.869471430395422643e-03, + 4.863365561770470122e-03, + 4.857252082850523588e-03, + 4.851131003923750927e-03, + 4.845002335290456152e-03, + 4.838866087262530362e-03, + 4.832722270163745774e-03, + 4.826570894329660320e-03, + 4.820411970107788512e-03, + 4.814245507857198986e-03, + 4.808071517948742622e-03, + 4.801890010765199994e-03, + 4.795700996700801716e-03, + 4.789504486161793098e-03, + 4.783300489565660459e-03, + 4.777089017342000220e-03, + 4.770870079931824152e-03, + 4.764643687787738918e-03, + 4.758409851374174188e-03, + 4.752168581166910794e-03, + 4.745919887653533495e-03, + 4.739663781333025051e-03, + 4.733400272715875511e-03, + 4.727129372324333743e-03, + 4.720851090691936466e-03, + 4.714565438363789267e-03, + 4.708272425896388794e-03, + 4.701972063857894242e-03, + 4.695664362827706682e-03, + 4.689349333396624318e-03, + 4.683026986167078409e-03, + 4.676697331752584230e-03, + 4.670360380778386389e-03, + 4.664016143880594933e-03, + 4.657664631707096950e-03, + 4.651305854916886959e-03, + 4.644939824180183141e-03, + 4.638566550178710966e-03, + 4.632186043605197520e-03, + 4.625798315163938759e-03, + 4.619403375569967711e-03, + 4.613001235550007705e-03, + 4.606591905841634499e-03, + 4.600175397193866957e-03, + 4.593751720366641422e-03, + 4.587320886131059788e-03, + 4.580882905269541283e-03, + 4.574437788575370575e-03, + 4.567985546853022168e-03, + 4.561526190917902790e-03, + 4.555059731596752988e-03, + 4.548586179727033899e-03, + 4.542105546157288939e-03, + 4.535617841747215800e-03, + 4.529123077367301284e-03, + 4.522621263898960950e-03, + 4.516112412234778509e-03, + 4.509596533277939433e-03, + 4.503073637942905764e-03, + 4.496543737154526203e-03, + 4.490006841848980662e-03, + 4.483462962972961478e-03, + 4.476912111484269291e-03, + 4.470354298351266603e-03, + 4.463789534553144929e-03, + 4.457217831080058368e-03, + 4.450639198932692525e-03, + 4.444053649122555946e-03, + 4.437461192671766745e-03, + 4.430861840613398682e-03, + 4.424255603990948603e-03, + 4.417642493858606190e-03, + 4.411022521281389268e-03, + 4.404395697334732677e-03, + 4.397762033104746747e-03, + 4.391121539688061168e-03, + 4.384474228192070458e-03, + 4.377820109734521965e-03, + 4.371159195443680666e-03, + 4.364491496458555546e-03, + 4.357817023928314999e-03, + 4.351135789013017147e-03, + 4.344447802882640125e-03, + 4.337753076718032716e-03, + 4.331051621710405204e-03, + 4.324343449061192335e-03, + 4.317628569982316991e-03, + 4.310906995695965548e-03, + 4.304178737434900988e-03, + 4.297443806441975447e-03, + 4.290702213970373942e-03, + 4.283953971283761819e-03, + 4.277199089655858884e-03, + 4.270437580370716954e-03, + 4.263669454722531643e-03, + 4.256894724015941600e-03, + 4.250113399565573144e-03, + 4.243325492696172971e-03, + 4.236531014742906526e-03, + 4.229729977050802024e-03, + 4.222922390975307298e-03, + 4.216108267881510906e-03, + 4.209287619145069340e-03, + 4.202460456151407321e-03, + 4.195626790295999692e-03, + 4.188786632984558764e-03, + 4.181939995632497423e-03, + 4.175086889665611742e-03, + 4.168227326519112139e-03, + 4.161361317638690230e-03, + 4.154488874479580346e-03, + 4.147610008507244747e-03, + 4.140724731196802899e-03, + 4.133833054033232701e-03, + 4.126934988511597735e-03, + 4.120030546136574552e-03, + 4.113119738422718087e-03, + 4.106202576894294257e-03, + 4.099279073085518484e-03, + 4.092349238540416920e-03, + 4.085413084812294753e-03, + 4.078470623464730202e-03, + 4.071521866070664658e-03, + 4.064566824212735748e-03, + 4.057605509483460347e-03, + 4.050637933484708096e-03, + 4.043664107828327629e-03, + 4.036684044135230645e-03, + 4.029697754036475239e-03, + 4.022705249172283185e-03, + 4.015706541192714737e-03, + 4.008701641757146487e-03, + 4.001690562534441359e-03, + 3.994673315203179330e-03, + 3.987649911451184720e-03, + 3.980620362975802878e-03, + 3.973584681483724110e-03, + 3.966542878691278577e-03, + 3.959494966323946243e-03, + 3.952440956116602330e-03, + 3.945380859813658707e-03, + 3.938314689168669232e-03, + 3.931242455944543995e-03, + 3.924164171913410541e-03, + 3.917079848856916575e-03, + 3.909989498565717356e-03, + 3.902893132839686460e-03, + 3.895790763488169058e-03, + 3.888682402329380391e-03, + 3.881568061191085790e-03, + 3.874447751909671292e-03, + 3.867321486331123329e-03, + 3.860189276310444124e-03, + 3.853051133711616130e-03, + 3.845907070407736470e-03, + 3.838757098280886834e-03, + 3.831601229222423178e-03, + 3.824439475132499974e-03, + 3.817271847920223737e-03, + 3.810098359503954427e-03, + 3.802919021810745575e-03, + 3.795733846776679944e-03, + 3.788542846346669175e-03, + 3.781346032474762996e-03, + 3.774143417123647024e-03, + 3.766935012264873480e-03, + 3.759720829879042905e-03, + 3.752500881955296314e-03, + 3.745275180491931463e-03, + 3.738043737495494283e-03, + 3.730806564981823618e-03, + 3.723563674975103200e-03, + 3.716315079508571585e-03, + 3.709060790623900251e-03, + 3.701800820371452510e-03, + 3.694535180810563663e-03, + 3.687263884008641114e-03, + 3.679986942042288468e-03, + 3.672704366996292890e-03, + 3.665416170964340241e-03, + 3.658122366048435683e-03, + 3.650822964359120952e-03, + 3.643517978015686429e-03, + 3.636207419145708834e-03, + 3.628891299885209521e-03, + 3.621569632378912953e-03, + 3.614242428779686819e-03, + 3.606909701249179107e-03, + 3.599571461956902179e-03, + 3.592227723081282704e-03, + 3.584878496808724044e-03, + 3.577523795334275423e-03, + 3.570163630861065106e-03, + 3.562798015600509866e-03, + 3.555426961772635043e-03, + 3.548050481605141259e-03, + 3.540668587334555410e-03, + 3.533281291205178556e-03, + 3.525888605469866977e-03, + 3.518490542389387729e-03, + 3.511087114232657597e-03, + 3.503678333276983789e-03, + 3.496264211807538751e-03, + 3.488844762117662875e-03, + 3.481419996508710972e-03, + 3.473989927290292105e-03, + 3.466554566779836335e-03, + 3.459113927302777305e-03, + 3.451668021192786425e-03, + 3.444216860791176130e-03, + 3.436760458447609377e-03, + 3.429298826519111294e-03, + 3.421831977371218858e-03, + 3.414359923376978669e-03, + 3.406882676917331616e-03, + 3.399400250381332759e-03, + 3.391912656165496903e-03, + 3.384419906674597002e-03, + 3.376922014320561313e-03, + 3.369418991523645632e-03, + 3.361910850711726396e-03, + 3.354397604320243868e-03, + 3.346879264792428088e-03, + 3.339355844579118028e-03, + 3.331827356139060396e-03, + 3.324293811938396157e-03, + 3.316755224450880415e-03, + 3.309211606158127001e-03, + 3.301662969548996122e-03, + 3.294109327120330315e-03, + 3.286550691375914046e-03, + 3.278987074827640746e-03, + 3.271418489994571289e-03, + 3.263844949403251015e-03, + 3.256266465587911822e-03, + 3.248683051089911854e-03, + 3.241094718458419413e-03, + 3.233501480249433273e-03, + 3.225903349026891607e-03, + 3.218300337361675381e-03, + 3.210692457832347354e-03, + 3.203079723024505020e-03, + 3.195462145531055564e-03, + 3.187839737952424465e-03, + 3.180212512896018594e-03, + 3.172580482976592245e-03, + 3.164943660815966973e-03, + 3.157302059043468750e-03, + 3.149655690295301725e-03, + 3.142004567214805831e-03, + 3.134348702452714828e-03, + 3.126688108666612030e-03, + 3.119022798521164930e-03, + 3.111352784688341169e-03, + 3.103678079846821335e-03, + 3.095998696682734919e-03, + 3.088314647888599964e-03, + 3.080625946164525231e-03, + 3.072932604217145942e-03, + 3.065234634760358439e-03, + 3.057532050514742087e-03, + 3.049824864207744020e-03, + 3.042113088573963637e-03, + 3.034396736354586649e-03, + 3.026675820297709037e-03, + 3.018950353158163149e-03, + 3.011220347697815200e-03, + 3.003485816685050065e-03, + 2.995746772894997221e-03, + 2.988003229109768843e-03, + 2.980255198117929410e-03, + 2.972502692714803184e-03, + 2.964745725702292931e-03, + 2.956984309889199112e-03, + 2.949218458090703803e-03, + 2.941448183128551538e-03, + 2.933673497831360694e-03, + 2.925894415033934368e-03, + 2.918110947578061391e-03, + 2.910323108311429520e-03, + 2.902530910088830206e-03, + 2.894734365771078725e-03, + 2.886933488225817794e-03, + 2.879128290326829747e-03, + 2.871318784954325805e-03, + 2.863504984995154240e-03, + 2.855686903342276491e-03, + 2.847864552894988771e-03, + 2.840037946559175342e-03, + 2.832207097246772481e-03, + 2.824372017876066419e-03, + 2.816532721371534185e-03, + 2.808689220664135466e-03, + 2.800841528690797399e-03, + 2.792989658394642253e-03, + 2.785133622725218146e-03, + 2.777273434637888855e-03, + 2.769409107094587558e-03, + 2.761540653062740432e-03, + 2.753668085516471856e-03, + 2.745791417435630797e-03, + 2.737910661806109130e-03, + 2.730025831620086236e-03, + 2.722136939875395394e-03, + 2.714243999576297466e-03, + 2.706347023732385854e-03, + 2.698446025359832901e-03, + 2.690541017480250607e-03, + 2.682632013121538476e-03, + 2.674719025317177923e-03, + 2.666802067106528468e-03, + 2.658881151535031143e-03, + 2.650956291653669850e-03, + 2.643027500519327857e-03, + 2.635094791194543627e-03, + 2.627158176747787510e-03, + 2.619217670253352892e-03, + 2.611273284790685285e-03, + 2.603325033445557171e-03, + 2.595372929309025436e-03, + 2.587416985477794355e-03, + 2.579457215054456725e-03, + 2.571493631146836833e-03, + 2.563526246868786263e-03, + 2.555555075339082782e-03, + 2.547580129682644641e-03, + 2.539601423029488880e-03, + 2.531618968515437357e-03, + 2.523632779281542986e-03, + 2.515642868474281431e-03, + 2.507649249245825617e-03, + 2.499651934753493229e-03, + 2.491650938160055919e-03, + 2.483646272633561938e-03, + 2.475637951347664425e-03, + 2.467625987481061531e-03, + 2.459610394217742746e-03, + 2.451591184747239568e-03, + 2.443568372264077332e-03, + 2.435541969968067939e-03, + 2.427511991064180193e-03, + 2.419478448762809111e-03, + 2.411441356279247269e-03, + 2.403400726833936334e-03, + 2.395356573652707762e-03, + 2.387308909966124031e-03, + 2.379257749010275751e-03, + 2.371203104025693554e-03, + 2.363144988258450083e-03, + 2.355083414959570614e-03, + 2.347018397384870864e-03, + 2.338949948795231507e-03, + 2.330878082456390010e-03, + 2.322802811639271096e-03, + 2.314724149619442912e-03, + 2.306642109677341668e-03, + 2.298556705098541396e-03, + 2.290467949173178447e-03, + 2.282375855196301911e-03, + 2.274280436467645931e-03, + 2.266181706292010479e-03, + 2.258079677978662870e-03, + 2.249974364841591471e-03, + 2.241865780199775449e-03, + 2.233753937376505190e-03, + 2.225638849700192420e-03, + 2.217520530503261714e-03, + 2.209398993123370437e-03, + 2.201274250902340163e-03, + 2.193146317186906499e-03, + 2.185015205328123215e-03, + 2.176880928681537448e-03, + 2.168743500607582617e-03, + 2.160602934470556239e-03, + 2.152459243639834232e-03, + 2.144312441488800160e-03, + 2.136162541395610244e-03, + 2.128009556742557588e-03, + 2.119853500916303764e-03, + 2.111694387308140318e-03, + 2.103532229313427159e-03, + 2.095367040331835851e-03, + 2.087198833767586401e-03, + 2.079027623028815823e-03, + 2.070853421528356161e-03, + 2.062676242682637273e-03, + 2.054496099912908515e-03, + 2.046313006644154969e-03, + 2.038126976305889779e-03, + 2.029938022331479776e-03, + 2.021746158158407858e-03, + 2.013551397228611258e-03, + 2.005353752987462830e-03, + 1.997153238885017879e-03, + 1.988949868374906543e-03, + 1.980743654915125256e-03, + 1.972534611967370621e-03, + 1.964322752997313057e-03, + 1.956108091474826650e-03, + 1.947890640873420169e-03, + 1.939670414670600267e-03, + 1.931447426347648140e-03, + 1.923221689389968420e-03, + 1.914993217286515203e-03, + 1.906762023530051819e-03, + 1.898528121617398682e-03, + 1.890291525048770410e-03, + 1.882052247328578785e-03, + 1.873810301964309519e-03, + 1.865565702467784914e-03, + 1.857318462354137778e-03, + 1.849068595142144703e-03, + 1.840816114354484976e-03, + 1.832561033517087021e-03, + 1.824303366159907075e-03, + 1.816043125815838257e-03, + 1.807780326021843353e-03, + 1.799514980318331825e-03, + 1.791247102249013444e-03, + 1.782976705361158289e-03, + 1.774703803205413292e-03, + 1.766428409336115359e-03, + 1.758150537310728019e-03, + 1.749870200690116593e-03, + 1.741587413038774143e-03, + 1.733302187924158806e-03, + 1.725014538917525597e-03, + 1.716724479592767610e-03, + 1.708432023527695597e-03, + 1.700137184303012307e-03, + 1.691839975502635587e-03, + 1.683540410713986121e-03, + 1.675238503527282053e-03, + 1.666934267536373387e-03, + 1.658627716337605961e-03, + 1.650318863531087792e-03, + 1.642007722719555007e-03, + 1.633694307509201684e-03, + 1.625378631508980981e-03, + 1.617060708330886158e-03, + 1.608740551590187367e-03, + 1.600418174904866134e-03, + 1.592093591895953628e-03, + 1.583766816187334205e-03, + 1.575437861406086930e-03, + 1.567106741181907700e-03, + 1.558773469147360560e-03, + 1.550438058938147018e-03, + 1.542100524192518843e-03, + 1.533760878551522879e-03, + 1.525419135659286619e-03, + 1.517075309162307407e-03, + 1.508729412710307222e-03, + 1.500381459955061735e-03, + 1.492031464551690084e-03, + 1.483679440157534453e-03, + 1.475325400432938748e-03, + 1.466969359040617808e-03, + 1.458611329645871429e-03, + 1.450251325916877745e-03, + 1.441889361524091497e-03, + 1.433525450140595752e-03, + 1.425159605441900885e-03, + 1.416791841106289796e-03, + 1.408422170814239809e-03, + 1.400050608248672255e-03, + 1.391677167095223093e-03, + 1.383301861041639005e-03, + 1.374924703778169881e-03, + 1.366545708997300365e-03, + 1.358164890394152318e-03, + 1.349782261665877225e-03, + 1.341397836511925082e-03, + 1.333011628634285300e-03, + 1.324623651736834672e-03, + 1.316233919526135776e-03, + 1.307842445710304634e-03, + 1.299449244000284217e-03, + 1.291054328108722296e-03, + 1.282657711750768981e-03, + 1.274259408643408850e-03, + 1.265859432505715091e-03, + 1.257457797059119680e-03, + 1.249054516026812302e-03, + 1.240649603134013138e-03, + 1.232243072108223743e-03, + 1.223834936678641367e-03, + 1.215425210576517390e-03, + 1.207013907534948503e-03, + 1.198601041289215413e-03, + 1.190186625576218193e-03, + 1.181770674134716322e-03, + 1.173353200705602338e-03, + 1.164934219031217490e-03, + 1.156513742856160555e-03, + 1.148091785926170019e-03, + 1.139668361989385230e-03, + 1.131243484795303386e-03, + 1.122817168095141234e-03, + 1.114389425642076624e-03, + 1.105960271190579774e-03, + 1.097529718497242037e-03, + 1.089097781319608646e-03, + 1.080664473417488215e-03, + 1.072229808551793074e-03, + 1.063793800485366954e-03, + 1.055356462982299333e-03, + 1.046917809808197352e-03, + 1.038477854730426083e-03, + 1.030036611517543867e-03, + 1.021594093939638204e-03, + 1.013150315768123443e-03, + 1.004705290775999467e-03, + 9.962590327377389421e-04, + 9.878115554285955922e-04, + 9.793628726258143870e-04, + 9.709129981075730357e-04, + 9.624619456533287142e-04, + 9.540097290440949706e-04, + 9.455563620617376446e-04, + 9.371018584898133889e-04, + 9.286462321124207405e-04, + 9.201894967154803468e-04, + 9.117316660856025160e-04, + 9.032727540108963574e-04, + 8.948127742802943234e-04, + 8.863517406838149117e-04, + 8.778896670128133331e-04, + 8.694265670594075344e-04, + 8.609624546168204813e-04, + 8.524973434791775209e-04, + 8.440312474418570129e-04, + 8.355641803008987886e-04, + 8.270961558532714071e-04, + 8.186271878971322549e-04, + 8.101572902312332951e-04, + 8.016864766552811309e-04, + 7.932147609697215744e-04, + 7.847421569761002524e-04, + 7.762686784764679217e-04, + 7.677943392736477244e-04, + 7.593191531714887834e-04, + 7.508431339741875998e-04, + 7.423662954871137814e-04, + 7.338886515156567772e-04, + 7.254102158664277149e-04, + 7.169310023465764624e-04, + 7.084510247636744253e-04, + 6.999702969259837546e-04, + 6.914888326422289049e-04, + 6.830066457219667814e-04, + 6.745237499749938978e-04, + 6.660401592116036579e-04, + 6.575558872428500330e-04, + 6.490709478799603586e-04, + 6.405853549346854229e-04, + 6.320991222190916253e-04, + 6.236122635459168118e-04, + 6.151247927279789507e-04, + 6.066367235784405698e-04, + 5.981480699110613758e-04, + 5.896588455395285417e-04, + 5.811690642782710520e-04, + 5.726787399413102312e-04, + 5.641878863435578588e-04, + 5.556965172996622534e-04, + 5.472046466248337840e-04, + 5.387122881341607382e-04, + 5.302194556428761448e-04, + 5.217261629667030920e-04, + 5.132324239208003406e-04, + 5.047382523210614154e-04, + 4.962436619829605801e-04, + 4.877486667223715185e-04, + 4.792532803548941534e-04, + 4.707575166961126324e-04, + 4.622613895618513623e-04, + 4.537649127675921421e-04, + 4.452681001288266369e-04, + 4.367709654608457719e-04, + 4.282735225789965797e-04, + 4.197757852985758401e-04, + 4.112777674341328840e-04, + 4.027794828006845502e-04, + 3.942809452125581250e-04, + 3.857821684842164742e-04, + 3.772831664295735318e-04, + 3.687839528622584664e-04, + 3.602845415959717869e-04, + 3.517849464434169701e-04, + 3.432851812176103390e-04, + 3.347852597307181483e-04, + 3.262851957948863777e-04, + 3.177850032215554085e-04, + 3.092846958217254356e-04, + 3.007842874062134240e-04, + 2.922837917850651455e-04, + 2.837832227679096047e-04, + 2.752825941637507094e-04, + 2.667819197813187148e-04, + 2.582812134284848083e-04, + 2.497804889125184997e-04, + 2.412797600403537108e-04, + 2.327790406178974886e-04, + 2.242783444508663314e-04, + 2.157776853436225149e-04, + 2.072770771004812061e-04, + 1.987765335246425517e-04, + 1.902760684185520390e-04, + 1.817756955841591060e-04, + 1.732754288222340124e-04, + 1.647752819331961159e-04, + 1.562752687159557814e-04, + 1.477754029691243239e-04, + 1.392756984903264345e-04, + 1.307761690760843602e-04, + 1.222768285220800374e-04, + 1.137776906229422623e-04, + 1.052787691726046683e-04, + 9.678007796371310015e-05, + 8.828163078788903498e-05, + 7.978344143599079357e-05, + 7.128552369742810772e-05, + 6.278789136099248360e-05, + 5.429055821369795245e-05, + 4.579353804208478981e-05, + 3.729684463115596067e-05, + 2.880049176473259201e-05, + 2.030449322571649886e-05, + 1.180886279540461447e-05, + 3.313614254319375212e-06, +-5.181238618950715446e-06, +-1.367568204644682224e-05, +-2.216970225199896727e-05, +-3.066328546039601773e-05, +-3.915641789807065647e-05, +-4.764908579283783096e-05, +-5.614127537363264569e-05, +-6.463297287110136076e-05, +-7.312416451724458100e-05, +-8.161483654562833652e-05, +-9.010497519102902010e-05, +-9.859456669002255615e-05, +-1.070835972807233926e-04, +-1.155720532025219073e-04, +-1.240599206966755419e-04, +-1.325471860060467501e-04, +-1.410338353748413396e-04, +-1.495198550492929553e-04, +-1.580052312768345324e-04, +-1.664899503072543271e-04, +-1.749739983913957408e-04, +-1.834573617823127009e-04, +-1.919400267344430102e-04, +-2.004219795042896869e-04, +-2.089032063501617862e-04, +-2.173836935319115894e-04, +-2.258634273115257384e-04, +-2.343423939527679637e-04, +-2.428205797213903140e-04, +-2.512979708847774027e-04, +-2.597745537125370810e-04, +-2.682503144762364892e-04, +-2.767252394491442869e-04, +-2.851993149068156623e-04, +-2.936725271267398574e-04, +-3.021448623885500157e-04, +-3.106163069736676721e-04, +-3.190868471658921796e-04, +-3.275564692511368143e-04, +-3.360251595171737170e-04, +-3.444929042543099472e-04, +-3.529596897545639778e-04, +-3.614255023128197736e-04, +-3.698903282255282970e-04, +-3.783541537918614240e-04, +-3.868169653128831261e-04, +-3.952787490922354992e-04, +-4.037394914358770370e-04, +-4.121991786517220256e-04, +-4.206577970507115183e-04, +-4.291153329455969149e-04, +-4.375717726516300567e-04, +-4.460271024866783681e-04, +-4.544813087709599869e-04, +-4.629343778272625013e-04, +-4.713862959805794717e-04, +-4.798370495587019708e-04, +-4.882866248919589180e-04, +-4.967350083129558943e-04, +-5.051821861572530943e-04, +-5.136281447625439889e-04, +-5.220728704698079405e-04, +-5.305163496220106781e-04, +-5.389585685651613950e-04, +-5.473995136479648275e-04, +-5.558391712215519399e-04, +-5.642775276401696934e-04, +-5.727145692603465357e-04, +-5.811502824420539072e-04, +-5.895846535474008610e-04, +-5.980176689417945933e-04, +-6.064493149931068005e-04, +-6.148795780723646407e-04, +-6.233084445534774068e-04, +-6.317359008129886776e-04, +-6.401619332306547399e-04, +-6.485865281890944994e-04, +-6.570096720739968888e-04, +-6.654313512738616347e-04, +-6.738515521801172192e-04, +-6.822702611877972051e-04, +-6.906874646943457702e-04, +-6.991031491006635288e-04, +-7.075173008107673092e-04, +-7.159299062315169345e-04, +-7.243409517733048839e-04, +-7.327504238492257935e-04, +-7.411583088762291804e-04, +-7.495645932738278323e-04, +-7.579692634652413158e-04, +-7.663723058765765364e-04, +-7.747737069375066656e-04, +-7.831734530810098485e-04, +-7.915715307431150666e-04, +-7.999679263634787169e-04, +-8.083626263850338719e-04, +-8.167556172542054941e-04, +-8.251468854205435419e-04, +-8.335364173373297977e-04, +-8.419241994612939152e-04, +-8.503102182523701244e-04, +-8.586944601742754367e-04, +-8.670769116941590138e-04, +-8.754575592828074074e-04, +-8.838363894142985903e-04, +-8.922133885665743062e-04, +-9.005885432211957996e-04, +-9.089618398630737407e-04, +-9.173332649811439003e-04, +-9.257028050675590938e-04, +-9.340704466188235822e-04, +-9.424361761345025458e-04, +-9.507999801183777359e-04, +-9.591618450776156742e-04, +-9.675217575234533029e-04, +-9.758797039709326800e-04, +-9.842356709386427226e-04, +-9.925896449493110726e-04, +-1.000941612529526650e-03, +-1.009291560209505789e-03, +-1.017639474523649411e-03, +-1.025985342010208223e-03, +-1.034329149211487414e-03, +-1.042670882673488435e-03, +-1.051010528946498155e-03, +-1.059348074584828651e-03, +-1.067683506146556785e-03, +-1.076016810194199442e-03, +-1.084347973293899731e-03, +-1.092676982016556938e-03, +-1.101003822936563866e-03, +-1.109328482632918359e-03, +-1.117650947688429881e-03, +-1.125971204690383483e-03, +-1.134289240230281111e-03, +-1.142605040903499000e-03, +-1.150918593310315931e-03, +-1.159229884054652736e-03, +-1.167538899745197700e-03, +-1.175845626994590160e-03, +-1.184150052420106149e-03, +-1.192452162643372823e-03, +-1.200751944290156603e-03, +-1.209049383990890751e-03, +-1.217344468380367022e-03, +-1.225637184097912820e-03, +-1.233927517787157448e-03, +-1.242215456096130337e-03, +-1.250500985677938451e-03, +-1.258784093189587111e-03, +-1.267064765293100413e-03, +-1.275342988654717827e-03, +-1.283618749945569012e-03, +-1.291892035841402542e-03, +-1.300162833022252195e-03, +-1.308431128173465855e-03, +-1.316696907984440034e-03, +-1.324960159149743541e-03, +-1.333220868368306710e-03, +-1.341479022344098816e-03, +-1.349734607785864175e-03, +-1.357987611406866711e-03, +-1.366238019925471300e-03, +-1.374485820064791624e-03, +-1.382730998552888363e-03, +-1.390973542122444151e-03, +-1.399213437511306109e-03, +-1.407450671462260336e-03, +-1.415685230722760419e-03, +-1.423917102045593784e-03, +-1.432146272188090453e-03, +-1.440372727913221546e-03, +-1.448596455988355276e-03, +-1.456817443186280868e-03, +-1.465035676284857057e-03, +-1.473251142066776169e-03, +-1.481463827320204886e-03, +-1.489673718837996241e-03, +-1.497880803418801584e-03, +-1.506085067865900505e-03, +-1.514286498987876947e-03, +-1.522485083598719815e-03, +-1.530680808517564289e-03, +-1.538873660568906062e-03, +-1.547063626582256563e-03, +-1.555250693392710212e-03, +-1.563434847840689196e-03, +-1.571616076771692157e-03, +-1.579794367036955766e-03, +-1.587969705492651117e-03, +-1.596142079001010208e-03, +-1.604311474429049623e-03, +-1.612477878649608764e-03, +-1.620641278541019381e-03, +-1.628801660986819782e-03, +-1.636959012876442647e-03, +-1.645113321104399928e-03, +-1.653264572571404561e-03, +-1.661412754183114529e-03, +-1.669557852851250457e-03, +-1.677699855492788316e-03, +-1.685838749030622082e-03, +-1.693974520393316113e-03, +-1.702107156514844717e-03, +-1.710236644335166997e-03, +-1.718362970799876873e-03, +-1.726486122860414066e-03, +-1.734606087473716720e-03, +-1.742722851602776513e-03, +-1.750836402216414444e-03, +-1.758946726288999592e-03, +-1.767053810801035452e-03, +-1.775157642738901895e-03, +-1.783258209094593007e-03, +-1.791355496866394283e-03, +-1.799449493058071425e-03, +-1.807540184679982953e-03, +-1.815627558747832286e-03, +-1.823711602283779269e-03, +-1.831792302315645229e-03, +-1.839869645877553967e-03, +-1.847943620009694955e-03, +-1.856014211758088943e-03, +-1.864081408175103163e-03, +-1.872145196319160119e-03, +-1.880205563254913224e-03, +-1.888262496052905927e-03, +-1.896315981790147641e-03, +-1.904366007549852238e-03, +-1.912412560421192361e-03, +-1.920455627499855194e-03, +-1.928495195887717627e-03, +-1.936531252693028411e-03, +-1.944563785030085706e-03, +-1.952592780019780276e-03, +-1.960618224789362814e-03, +-1.968640106472180264e-03, +-1.976658412208340439e-03, +-1.984673129143913178e-03, +-1.992684244432032115e-03, +-2.000691745231653485e-03, +-2.008695618708668078e-03, +-2.016695852035092860e-03, +-2.024692432389738408e-03, +-2.032685346957946101e-03, +-2.040674582931272830e-03, +-2.048660127508457676e-03, +-2.056641967894316456e-03, +-2.064620091300373595e-03, +-2.072594484944970984e-03, +-2.080565136053019043e-03, +-2.088532031856205323e-03, +-2.096495159592627177e-03, +-2.104454506507406723e-03, +-2.112410059852382494e-03, +-2.120361806885900837e-03, +-2.128309734873435211e-03, +-2.136253831086837654e-03, +-2.144194082805379615e-03, +-2.152130477314567573e-03, +-2.160063001907143107e-03, +-2.167991643882699951e-03, +-2.175916390547494913e-03, +-2.183837229215058497e-03, +-2.191754147205418179e-03, +-2.199667131846189550e-03, +-2.207576170471359407e-03, +-2.215481250422361281e-03, +-2.223382359047296111e-03, +-2.231279483701576697e-03, +-2.239172611747689608e-03, +-2.247061730554934973e-03, +-2.254946827499999806e-03, +-2.262827889966584176e-03, +-2.270704905345655340e-03, +-2.278577861035145907e-03, +-2.286446744440096077e-03, +-2.294311542973295499e-03, +-2.302172244054121429e-03, +-2.310028835109573069e-03, +-2.317881303573900327e-03, +-2.325729636888395225e-03, +-2.333573822501989071e-03, +-2.341413847870523444e-03, +-2.349249700457787561e-03, +-2.357081367734325215e-03, +-2.364908837178521153e-03, +-2.372732096275797457e-03, +-2.380551132519286191e-03, +-2.388365933409553575e-03, +-2.396176486454382280e-03, +-2.403982779169288805e-03, +-2.411784799077238122e-03, +-2.419582533708782447e-03, +-2.427375970601776747e-03, +-2.435165097301890923e-03, +-2.442949901362402500e-03, +-2.450730370343920383e-03, +-2.458506491814939528e-03, +-2.466278253351530426e-03, +-2.474045642537504777e-03, +-2.481808646964098457e-03, +-2.489567254230525776e-03, +-2.497321451943720558e-03, +-2.505071227718097624e-03, +-2.512816569176195072e-03, +-2.520557463947897987e-03, +-2.528293899671495322e-03, +-2.536025863992511561e-03, +-2.543753344564728472e-03, +-2.551476329049468666e-03, +-2.559194805116178032e-03, +-2.566908760442221903e-03, +-2.574618182712620947e-03, +-2.582323059620592835e-03, +-2.590023378867318919e-03, +-2.597719128161728262e-03, +-2.605410295220973380e-03, +-2.613096867770172207e-03, +-2.620778833542547741e-03, +-2.628456180279134004e-03, +-2.636128895729311639e-03, +-2.643796967650545969e-03, +-2.651460383808169289e-03, +-2.659119131975996256e-03, +-2.666773199935569289e-03, +-2.674422575477221516e-03, +-2.682067246398855530e-03, +-2.689707200507037571e-03, +-2.697342425616228168e-03, +-2.704972909549389730e-03, +-2.712598640137765370e-03, +-2.720219605220544536e-03, +-2.727835792645838357e-03, +-2.735447190269478784e-03, +-2.743053785956093681e-03, +-2.750655567578317532e-03, +-2.758252523017462338e-03, +-2.765844640163209276e-03, +-2.773431906913453003e-03, +-2.781014311174770468e-03, +-2.788591840862114299e-03, +-2.796164483899030075e-03, +-2.803732228217388749e-03, +-2.811295061757488559e-03, +-2.818852972468705986e-03, +-2.826405948308375552e-03, +-2.833953977242831528e-03, +-2.841497047246671105e-03, +-2.849035146303389304e-03, +-2.856568262405093615e-03, +-2.864096383552222538e-03, +-2.871619497754491438e-03, +-2.879137593029702097e-03, +-2.886650657404815200e-03, +-2.894158678915183594e-03, +-2.901661645605160735e-03, +-2.909159545527882553e-03, +-2.916652366745017648e-03, +-2.924140097327298116e-03, +-2.931622725354207735e-03, +-2.939100238914156733e-03, +-2.946572626104180821e-03, +-2.954039875030448591e-03, +-2.961501973808030371e-03, +-2.968958910560666204e-03, +-2.976410673421398152e-03, +-2.983857250531794011e-03, +-2.991298630042979034e-03, +-2.998734800114519206e-03, +-3.006165748915315059e-03, +-3.013591464623311972e-03, +-3.021011935425259049e-03, +-3.028427149517309326e-03, +-3.035837095104308974e-03, +-3.043241760400775681e-03, +-3.050641133629879934e-03, +-3.058035203024017917e-03, +-3.065423956824932065e-03, +-3.072807383283446964e-03, +-3.080185470659682276e-03, +-3.087558207222746570e-03, +-3.094925581251238653e-03, +-3.102287581033011214e-03, +-3.109644194864947479e-03, +-3.116995411053562291e-03, +-3.124341217914283937e-03, +-3.131681603772445976e-03, +-3.139016556962167474e-03, +-3.146346065827257225e-03, +-3.153670118720928832e-03, +-3.160988704005543957e-03, +-3.168301810053242469e-03, +-3.175609425245194337e-03, +-3.182911537972583655e-03, +-3.190208136635542657e-03, +-3.197499209644096702e-03, +-3.204784745417463450e-03, +-3.212064732384647438e-03, +-3.219339158984211528e-03, +-3.226608013664050527e-03, +-3.233871284881893390e-03, +-3.241128961105000077e-03, +-3.248381030810354973e-03, +-3.255627482484330353e-03, +-3.262868304623218942e-03, +-3.270103485732991054e-03, +-3.277333014329090327e-03, +-3.284556878936910340e-03, +-3.291775068091513587e-03, +-3.298987570337800178e-03, +-3.306194374230281893e-03, +-3.313395468333181926e-03, +-3.320590841221029467e-03, +-3.327780481477610620e-03, +-3.334964377696964140e-03, +-3.342142518482678435e-03, +-3.349314892448464892e-03, +-3.356481488217938867e-03, +-3.363642294424389837e-03, +-3.370797299711294007e-03, +-3.377946492732001194e-03, +-3.385089862149917844e-03, +-3.392227396638187401e-03, +-3.399359084880238056e-03, +-3.406484915569499977e-03, +-3.413604877409207993e-03, +-3.420718959112912030e-03, +-3.427827149404155758e-03, +-3.434929437016684319e-03, +-3.442025810694094787e-03, +-3.449116259190350940e-03, +-3.456200771269612830e-03, +-3.463279335705943176e-03, +-3.470351941283901075e-03, +-3.477418576797879340e-03, +-3.484479231053042112e-03, +-3.491533892864240665e-03, +-3.498582551056976606e-03, +-3.505625194466719698e-03, +-3.512661811939461233e-03, +-3.519692392331519315e-03, +-3.526716924509208824e-03, +-3.533735397349772097e-03, +-3.540747799740322482e-03, +-3.547754120578423733e-03, +-3.554754348772226191e-03, +-3.561748473240203099e-03, +-3.568736482911351836e-03, +-3.575718366724872990e-03, +-3.582694113630688175e-03, +-3.589663712589190661e-03, +-3.596627152571048053e-03, +-3.603584422557780820e-03, +-3.610535511541045420e-03, +-3.617480408523603141e-03, +-3.624419102518231135e-03, +-3.631351582548620997e-03, +-3.638277837649108153e-03, +-3.645197856864358307e-03, +-3.652111629250038780e-03, +-3.659019143872068672e-03, +-3.665920389807600290e-03, +-3.672815356143928865e-03, +-3.679704031979451860e-03, +-3.686586406423001967e-03, +-3.693462468594369257e-03, +-3.700332207624132050e-03, +-3.707195612653386724e-03, +-3.714052672834293294e-03, +-3.720903377329739734e-03, +-3.727747715313514155e-03, +-3.734585675970032888e-03, +-3.741417248494804081e-03, +-3.748242422094232116e-03, +-3.755061185985385155e-03, +-3.761873529396467849e-03, +-3.768679441566647869e-03, +-3.775478911745788757e-03, +-3.782271929195038865e-03, +-3.789058483186165654e-03, +-3.795838563002444741e-03, +-3.802612157937645086e-03, +-3.809379257296985257e-03, +-3.816139850396396607e-03, +-3.822893926563117415e-03, +-3.829641475135486025e-03, +-3.836382485462692341e-03, +-3.843116946905307790e-03, +-3.849844848834943142e-03, +-3.856566180634435868e-03, +-3.863280931697592527e-03, +-3.869989091429597728e-03, +-3.876690649246875356e-03, +-3.883385594576823589e-03, +-3.890073916858302790e-03, +-3.896755605541376167e-03, +-3.903430650087421228e-03, +-3.910099039968901666e-03, +-3.916760764669794531e-03, +-3.923415813685404187e-03, +-3.930064176522147200e-03, +-3.936705842698100949e-03, +-3.943340801742327081e-03, +-3.949969043195797856e-03, +-3.956590556610380463e-03, +-3.963205331549701782e-03, +-3.969813357588567251e-03, +-3.976414624313432712e-03, +-3.983009121322233538e-03, +-3.989596838224156519e-03, +-3.996177764640112574e-03, +-4.002751890202550268e-03, +-4.009319204555207745e-03, +-4.015879697353605393e-03, +-4.022433358264751804e-03, +-4.028980176967322455e-03, +-4.035520143151355259e-03, +-4.042053246518718078e-03, +-4.048579476782939585e-03, +-4.055098823668969003e-03, +-4.061611276913680048e-03, +-4.068116826265294993e-03, +-4.074615461484236423e-03, +-4.081107172342109818e-03, +-4.087591948622637701e-03, +-4.094069780120975291e-03, +-4.100540656644266480e-03, +-4.107004568011430462e-03, +-4.113461504052887650e-03, +-4.119911454611368054e-03, +-4.126354409540944172e-03, +-4.132790358707839375e-03, +-4.139219291989889270e-03, +-4.145641199277004009e-03, +-4.152056070470967926e-03, +-4.158463895485273003e-03, +-4.164864664245531735e-03, +-4.171258366689235136e-03, +-4.177644992765879375e-03, +-4.184024532436781893e-03, +-4.190396975675196763e-03, +-4.196762312466776994e-03, +-4.203120532808701966e-03, +-4.209471626710527443e-03, +-4.215815584193594034e-03, +-4.222152395291483423e-03, +-4.228482050049877858e-03, +-4.234804538526256573e-03, +-4.241119850790692897e-03, +-4.247427976924923569e-03, +-4.253728907023124166e-03, +-4.260022631191387812e-03, +-4.266309139548171876e-03, +-4.272588422224106279e-03, +-4.278860469361838240e-03, +-4.285125271116403504e-03, +-4.291382817655035528e-03, +-4.297633099157271291e-03, +-4.303876105814680685e-03, +-4.310111827831366975e-03, +-4.316340255423667567e-03, +-4.322561378820065532e-03, +-4.328775188261611145e-03, +-4.334981674001392796e-03, +-4.341180826305268171e-03, +-4.347372635451064553e-03, +-4.353557091729180761e-03, +-4.359734185442488280e-03, +-4.365903906906019004e-03, +-4.372066246447542034e-03, +-4.378221194406900149e-03, +-4.384368741136898846e-03, +-4.390508877002399953e-03, +-4.396641592380817753e-03, +-4.402766877662201393e-03, +-4.408884723249086555e-03, +-4.414995119556560516e-03, +-4.421098057012120761e-03, +-4.427193526055964688e-03, +-4.433281517140910677e-03, +-4.439362020732169102e-03, +-4.445435027307820253e-03, +-4.451500527358216719e-03, +-4.457558511386868969e-03, +-4.463608969909414921e-03, +-4.469651893454458687e-03, +-4.475687272563302552e-03, +-4.481715097789718862e-03, +-4.487735359700463500e-03, +-4.493748048874703430e-03, +-4.499753155904813798e-03, +-4.505750671395437716e-03, +-4.511740585964355357e-03, +-4.517722890241834301e-03, +-4.523697574871174236e-03, +-4.529664630508477979e-03, +-4.535624047822464991e-03, +-4.541575817494906790e-03, +-4.547519930220410116e-03, +-4.553456376706457691e-03, +-4.559385147673238221e-03, +-4.565306233854087015e-03, +-4.571219625995195414e-03, +-4.577125314855539674e-03, +-4.583023291207199285e-03, +-4.588913545835178291e-03, +-4.594796069537511116e-03, +-4.600670853125084746e-03, +-4.606537887421725472e-03, +-4.612397163264680272e-03, +-4.618248671503765931e-03, +-4.624092403002161809e-03, +-4.629928348635864270e-03, +-4.635756499294134240e-03, +-4.641576845879305524e-03, +-4.647389379306658165e-03, +-4.653194090504727230e-03, +-4.658990970415178776e-03, +-4.664780009992841939e-03, +-4.670561200205519854e-03, +-4.676334532034412926e-03, +-4.682099996473868160e-03, +-4.687857584531276815e-03, +-4.693607287227404001e-03, +-4.699349095596220410e-03, +-4.705083000684957828e-03, +-4.710808993553960815e-03, +-4.716527065277002426e-03, +-4.722237206941159310e-03, +-4.727939409646583595e-03, +-4.733633664507071008e-03, +-4.739319962649340100e-03, +-4.744998295213941238e-03, +-4.750668653354330265e-03, +-4.756331028237631778e-03, +-4.761985411044121312e-03, +-4.767631792967637339e-03, +-4.773270165215432945e-03, +-4.778900519007960729e-03, +-4.784522845579507709e-03, +-4.790137136177466740e-03, +-4.795743382062730292e-03, +-4.801341574509810153e-03, +-4.806931704806637062e-03, +-4.812513764254728113e-03, +-4.818087744168895320e-03, +-4.823653635877721800e-03, +-4.829211430723262533e-03, +-4.834761120061017471e-03, +-4.840302695260262009e-03, +-4.845836147703566459e-03, +-4.851361468787506424e-03, +-4.856878649921883041e-03, +-4.862387682530298037e-03, +-4.867888558050066129e-03, +-4.873381267931930529e-03, +-4.878865803640548664e-03, +-4.884342156653941405e-03, +-4.889810318464279763e-03, +-4.895270280576967219e-03, +-4.900722034511462849e-03, +-4.906165571800699329e-03, +-4.911600883991547838e-03, +-4.917027962644618562e-03, +-4.922446799334108045e-03, +-4.927857385648205107e-03, +-4.933259713188798551e-03, +-4.938653773571682719e-03, +-4.944039558426257391e-03, +-4.949417059395957996e-03, +-4.954786268138054381e-03, +-4.960147176323528515e-03, +-4.965499775637354646e-03, +-4.970844057778468945e-03, +-4.976180014459466797e-03, +-4.981507637407122345e-03, +-4.986826918361824713e-03, +-4.992137849078324800e-03, +-4.997440421324915623e-03, +-5.002734626884142687e-03, +-5.008020457552266221e-03, +-5.013297905139725216e-03, +-5.018566961471010793e-03, +-5.023827618384362620e-03, +-5.029079867732283264e-03, +-5.034323701381240683e-03, +-5.039559111211807003e-03, +-5.044786089118451222e-03, +-5.050004627009875742e-03, +-5.055214716808906217e-03, +-5.060416350452245221e-03, +-5.065609519890931084e-03, +-5.070794217090043854e-03, +-5.075970434028857954e-03, +-5.081138162700646159e-03, +-5.086297395112992711e-03, +-5.091448123287664954e-03, +-5.096590339260471947e-03, +-5.101724035081596671e-03, +-5.106849202815196172e-03, +-5.111965834540034732e-03, +-5.117073922348715394e-03, +-5.122173458348367771e-03, +-5.127264434660167534e-03, +-5.132346843419722388e-03, +-5.137420676776935889e-03, +-5.142485926895823574e-03, +-5.147542585954891989e-03, +-5.152590646146957415e-03, +-5.157630099679030508e-03, +-5.162660938772585181e-03, +-5.167683155663453654e-03, +-5.172696742601836858e-03, +-5.177701691852202963e-03, +-5.182697995693516350e-03, +-5.187685646419230683e-03, +-5.192664636336967107e-03, +-5.197634957769040748e-03, +-5.202596603051934214e-03, +-5.207549564536950726e-03, +-5.212493834589460376e-03, +-5.217429405589604427e-03, +-5.222356269931802651e-03, +-5.227274420025110682e-03, +-5.232183848293109861e-03, +-5.237084547173677385e-03, +-5.241976509119606470e-03, +-5.246859726597880372e-03, +-5.251734192090255250e-03, +-5.256599898092884603e-03, +-5.261456837116661005e-03, +-5.266305001687048709e-03, +-5.271144384343948337e-03, +-5.275974977642070712e-03, +-5.280796774150661038e-03, +-5.285609766453699260e-03, +-5.290413947149647661e-03, +-5.295209308851620000e-03, +-5.299995844187702435e-03, +-5.304773545800309936e-03, +-5.309542406346763957e-03, +-5.314302418498950686e-03, +-5.319053574943586465e-03, +-5.323795868382111100e-03, +-5.328529291530512656e-03, +-5.333253837119894709e-03, +-5.337969497895746034e-03, +-5.342676266618589381e-03, +-5.347374136063507907e-03, +-5.352063099020568440e-03, +-5.356743148294632398e-03, +-5.361414276705171039e-03, +-5.366076477086702615e-03, +-5.370729742288516545e-03, +-5.375374065174775770e-03, +-5.380009438624374501e-03, +-5.384635855531207972e-03, +-5.389253308804080496e-03, +-5.393861791366525923e-03, +-5.398461296157148516e-03, +-5.403051816129259520e-03, +-5.407633344251454831e-03, +-5.412205873506854316e-03, +-5.416769396893765347e-03, +-5.421323907425443407e-03, +-5.425869398129984540e-03, +-5.430405862050608976e-03, +-5.434933292245328063e-03, +-5.439451681787461218e-03, +-5.443961023765025303e-03, +-5.448461311281274123e-03, +-5.452952537454290767e-03, +-5.457434695417391797e-03, +-5.461907778318892195e-03, +-5.466371779322054189e-03, +-5.470826691605343121e-03, +-5.475272508362311226e-03, +-5.479709222801456246e-03, +-5.484136828146588330e-03, +-5.488555317636342572e-03, +-5.492964684524884178e-03, +-5.497364922081121770e-03, +-5.501756023589296322e-03, +-5.506137982348864937e-03, +-5.510510791674222419e-03, +-5.514874444895212155e-03, +-5.519228935356542375e-03, +-5.523574256418516473e-03, +-5.527910401456254987e-03, +-5.532237363860384276e-03, +-5.536555137036523050e-03, +-5.540863714405685689e-03, +-5.545163089404133057e-03, +-5.549453255483218113e-03, +-5.553734206109734589e-03, +-5.558005934765681937e-03, +-5.562268434948392827e-03, +-5.566521700170334527e-03, +-5.570765723959471456e-03, +-5.575000499859028395e-03, +-5.579226021427440181e-03, +-5.583442282238605843e-03, +-5.587649275881712528e-03, +-5.591846995961391627e-03, +-5.596035436097469840e-03, +-5.600214589925157395e-03, +-5.604384451095321268e-03, +-5.608545013273856343e-03, +-5.612696270142329864e-03, +-5.616838215397500916e-03, +-5.620970842751723748e-03, +-5.625094145932743074e-03, +-5.629208118683637699e-03, +-5.633312754763065110e-03, +-5.637408047945068057e-03, +-5.641493992019224607e-03, +-5.645570580790463394e-03, +-5.649637808079309952e-03, +-5.653695667721804312e-03, +-5.657744153569335341e-03, +-5.661783259488952988e-03, +-5.665812979363189610e-03, +-5.669833307090138899e-03, +-5.673844236583335324e-03, +-5.677845761771944944e-03, +-5.681837876600718575e-03, +-5.685820575029874695e-03, +-5.689793851035330162e-03, +-5.693757698608417454e-03, +-5.697712111756310545e-03, +-5.701657084501566067e-03, +-5.705592610882495412e-03, +-5.709518684952899319e-03, +-5.713435300782332416e-03, +-5.717342452455981792e-03, +-5.721240134074516946e-03, +-5.725128339754568564e-03, +-5.729007063628173413e-03, +-5.732876299843091793e-03, +-5.736736042562840497e-03, +-5.740586285966600005e-03, +-5.744427024249296881e-03, +-5.748258251621440711e-03, +-5.752079962309358287e-03, +-5.755892150555146775e-03, +-5.759694810616497636e-03, +-5.763487936767003675e-03, +-5.767271523295796481e-03, +-5.771045564508105012e-03, +-5.774810054724584252e-03, +-5.778564988281883336e-03, +-5.782310359532390545e-03, +-5.786046162844189940e-03, +-5.789772392601358862e-03, +-5.793489043203527318e-03, +-5.797196109066487732e-03, +-5.800893584621537487e-03, +-5.804581464316042709e-03, +-5.808259742613029741e-03, +-5.811928413991499127e-03, +-5.815587472946361428e-03, +-5.819236913988210837e-03, +-5.822876731643680803e-03, +-5.826506920455233260e-03, +-5.830127474981299136e-03, +-5.833738389796050243e-03, +-5.837339659489704582e-03, +-5.840931278668419664e-03, +-5.844513241954108623e-03, +-5.848085543984814921e-03, +-5.851648179414399228e-03, +-5.855201142912797030e-03, +-5.858744429165773163e-03, +-5.862278032875019827e-03, +-5.865801948758476644e-03, +-5.869316171549728706e-03, +-5.872820695998611992e-03, +-5.876315516870769286e-03, +-5.879800628947972826e-03, +-5.883276027028013291e-03, +-5.886741705924593109e-03, +-5.890197660467519011e-03, +-5.893643885502655201e-03, +-5.897080375891911204e-03, +-5.900507126513123909e-03, +-5.903924132260355076e-03, +-5.907331388043661480e-03, +-5.910728888789143487e-03, +-5.914116629439023116e-03, +-5.917494604951610213e-03, +-5.920862810301324997e-03, +-5.924221240478640821e-03, +-5.927569890490170038e-03, +-5.930908755358703030e-03, +-5.934237830123025199e-03, +-5.937557109838198857e-03, +-5.940866589575258781e-03, +-5.944166264421644162e-03, +-5.947456129480646961e-03, +-5.950736179871965285e-03, +-5.954006410731307007e-03, +-5.957266817210647367e-03, +-5.960517394478154381e-03, +-5.963758137718073483e-03, +-5.966989042130966051e-03, +-5.970210102933590571e-03, +-5.973421315358816777e-03, +-5.976622674655846824e-03, +-5.979814176090034877e-03, +-5.982995814943073594e-03, +-5.986167586512712233e-03, +-5.989329486113107066e-03, +-5.992481509074636635e-03, +-5.995623650743873989e-03, +-5.998755906483732407e-03, +-6.001878271673293658e-03, +-6.004990741708128923e-03, +-6.008093311999857314e-03, +-6.011185977976561332e-03, +-6.014268735082517990e-03, +-6.017341578778348000e-03, +-6.020404504541056537e-03, +-6.023457507863803385e-03, +-6.026500584256292391e-03, +-6.029533729244358591e-03, +-6.032556938370347253e-03, +-6.035570207192770403e-03, +-6.038573531286638152e-03, +-6.041566906243312982e-03, +-6.044550327670402193e-03, +-6.047523791192004235e-03, +-6.050487292448562988e-03, +-6.053440827096918074e-03, +-6.056384390810237196e-03, +-6.059317979278157525e-03, +-6.062241588206709365e-03, +-6.065155213318285804e-03, +-6.068058850351762401e-03, +-6.070952495062353210e-03, +-6.073836143221767771e-03, +-6.076709790618176413e-03, +-6.079573433056040255e-03, +-6.082427066356512792e-03, +-6.085270686356942897e-03, +-6.088104288911330188e-03, +-6.090927869890004967e-03, +-6.093741425179834657e-03, +-6.096544950684192575e-03, +-6.099338442322833030e-03, +-6.102121896032092555e-03, +-6.104895307764771073e-03, +-6.107658673490196088e-03, +-6.110411989194093445e-03, +-6.113155250878827586e-03, +-6.115888454563247166e-03, +-6.118611596282633007e-03, +-6.121324672088941828e-03, +-6.124027678050502667e-03, +-6.126720610252365563e-03, +-6.129403464795977162e-03, +-6.132076237799375003e-03, +-6.134738925397209205e-03, +-6.137391523740589813e-03, +-6.140034028997301899e-03, +-6.142666437351579183e-03, +-6.145288745004403273e-03, +-6.147900948173167131e-03, +-6.150503043091974306e-03, +-6.153095026011412561e-03, +-6.155676893198773307e-03, +-6.158248640937931916e-03, +-6.160810265529276589e-03, +-6.163361763289959896e-03, +-6.165903130553641170e-03, +-6.168434363670641761e-03, +-6.170955459007913813e-03, +-6.173466412949058478e-03, +-6.175967221894338929e-03, +-6.178457882260556325e-03, +-6.180938390481279660e-03, +-6.183408743006713927e-03, +-6.185868936303626393e-03, +-6.188318966855625020e-03, +-6.190758831162774221e-03, +-6.193188525742046764e-03, +-6.195608047126871000e-03, +-6.198017391867571488e-03, +-6.200416556530977813e-03, +-6.202805537700712551e-03, +-6.205184331977108003e-03, +-6.207552935977134201e-03, +-6.209911346334539423e-03, +-6.212259559699746976e-03, +-6.214597572739914179e-03, +-6.216925382138884654e-03, +-6.219242984597295014e-03, +-6.221550376832472515e-03, +-6.223847555578471483e-03, +-6.226134517586087193e-03, +-6.228411259622908779e-03, +-6.230677778473264587e-03, +-6.232934070938173608e-03, +-6.235180133835414862e-03, +-6.237415963999697402e-03, +-6.239641558282266534e-03, +-6.241856913551298465e-03, +-6.244062026691652237e-03, +-6.246256894605027588e-03, +-6.248441514209920715e-03, +-6.250615882441531469e-03, +-6.252779996251947234e-03, +-6.254933852609992004e-03, +-6.257077448501339144e-03, +-6.259210780928410774e-03, +-6.261333846910474045e-03, +-6.263446643483661092e-03, +-6.265549167700764331e-03, +-6.267641416631579074e-03, +-6.269723387362609486e-03, +-6.271795076997269819e-03, +-6.273856482655701394e-03, +-6.275907601474988579e-03, +-6.277948430609033015e-03, +-6.279978967228505918e-03, +-6.281999208521049302e-03, +-6.284009151691007100e-03, +-6.286008793959766902e-03, +-6.287998132565401736e-03, +-6.289977164762978849e-03, +-6.291945887824339396e-03, +-6.293904299038226811e-03, +-6.295852395710314561e-03, +-6.297790175163029205e-03, +-6.299717634735854839e-03, +-6.301634771784992220e-03, +-6.303541583683605967e-03, +-6.305438067821744763e-03, +-6.307324221606391661e-03, +-6.309200042461377347e-03, +-6.311065527827440860e-03, +-6.312920675162253872e-03, +-6.314765481940389467e-03, +-6.316599945653291782e-03, +-6.318424063809390499e-03, +-6.320237833933947322e-03, +-6.322041253569276285e-03, +-6.323834320274461865e-03, +-6.325617031625649540e-03, +-6.327389385215861917e-03, +-6.329151378655009999e-03, +-6.330903009570030236e-03, +-6.332644275604699773e-03, +-6.334375174419891452e-03, +-6.336095703693265906e-03, +-6.337805861119549106e-03, +-6.339505644410319864e-03, +-6.341195051294190241e-03, +-6.342874079516730955e-03, +-6.344542726840393318e-03, +-6.346200991044693984e-03, +-6.347848869926065764e-03, +-6.349486361297928746e-03, +-6.351113462990637393e-03, +-6.352730172851562933e-03, +-6.354336488745073418e-03, +-6.355932408552427901e-03, +-6.357517930171975931e-03, +-6.359093051518985816e-03, +-6.360657770525759112e-03, +-6.362212085141541289e-03, +-6.363755993332578104e-03, +-6.365289493082184995e-03, +-6.366812582390550188e-03, +-6.368325259275013119e-03, +-6.369827521769772134e-03, +-6.371319367926103067e-03, +-6.372800795812328875e-03, +-6.374271803513694747e-03, +-6.375732389132519017e-03, +-6.377182550788116841e-03, +-6.378622286616847034e-03, +-6.380051594772015791e-03, +-6.381470473424052763e-03, +-6.382878920760343654e-03, +-6.384276934985289205e-03, +-6.385664514320376316e-03, +-6.387041657004090441e-03, +-6.388408361291951151e-03, +-6.389764625456493922e-03, +-6.391110447787345591e-03, +-6.392445826591123745e-03, +-6.393770760191488760e-03, +-6.395085246929161152e-03, +-6.396389285161882543e-03, +-6.397682873264508470e-03, +-6.398966009628838381e-03, +-6.400238692663815128e-03, +-6.401500920795360171e-03, +-6.402752692466505413e-03, +-6.403994006137316876e-03, +-6.405224860284899902e-03, +-6.406445253403439920e-03, +-6.407655184004192907e-03, +-6.408854650615420333e-03, +-6.410043651782526206e-03, +-6.411222186067922629e-03, +-6.412390252051125214e-03, +-6.413547848328674146e-03, +-6.414694973514223526e-03, +-6.415831626238480655e-03, +-6.416957805149206030e-03, +-6.418073508911254985e-03, +-6.419178736206559467e-03, +-6.420273485734133249e-03, +-6.421357756210041567e-03, +-6.422431546367447092e-03, +-6.423494854956586508e-03, +-6.424547680744805214e-03, +-6.425590022516495733e-03, +-6.426621879073108994e-03, +-6.427643249233290501e-03, +-6.428654131832643552e-03, +-6.429654525723950409e-03, +-6.430644429777038727e-03, +-6.431623842878801504e-03, +-6.432592763933302898e-03, +-6.433551191861617766e-03, +-6.434499125601948755e-03, +-6.435436564109612428e-03, +-6.436363506356964671e-03, +-6.437279951333502170e-03, +-6.438185898045789557e-03, +-6.439081345517524459e-03, +-6.439966292789453366e-03, +-6.440840738919473112e-03, +-6.441704682982520719e-03, +-6.442558124070675747e-03, +-6.443401061293127334e-03, +-6.444233493776103938e-03, +-6.445055420663018189e-03, +-6.445866841114297752e-03, +-6.446667754307564002e-03, +-6.447458159437468965e-03, +-6.448238055715782915e-03, +-6.449007442371419534e-03, +-6.449766318650363046e-03, +-6.450514683815695115e-03, +-6.451252537147620855e-03, +-6.451979877943467105e-03, +-6.452696705517607829e-03, +-6.453403019201602031e-03, +-6.454098818344054106e-03, +-6.454784102310690171e-03, +-6.455458870484369338e-03, +-6.456123122265015196e-03, +-6.456776857069712085e-03, +-6.457420074332602747e-03, +-6.458052773504954248e-03, +-6.458674954055174458e-03, +-6.459286615468708831e-03, +-6.459887757248180921e-03, +-6.460478378913257942e-03, +-6.461058480000777399e-03, +-6.461628060064656016e-03, +-6.462187118675910558e-03, +-6.462735655422672566e-03, +-6.463273669910187501e-03, +-6.463801161760824275e-03, +-6.464318130613991124e-03, +-6.464824576126266577e-03, +-6.465320497971341340e-03, +-6.465805895839974934e-03, +-6.466280769440039058e-03, +-6.466745118496537541e-03, +-6.467198942751562971e-03, +-6.467642241964285423e-03, +-6.468075015911039193e-03, +-6.468497264385203969e-03, +-6.468908987197308919e-03, +-6.469310184174973700e-03, +-6.469700855162877247e-03, +-6.470081000022879190e-03, +-6.470450618633865475e-03, +-6.470809710891874122e-03, +-6.471158276710032783e-03, +-6.471496316018542257e-03, +-6.471823828764732868e-03, +-6.472140814913012428e-03, +-6.472447274444910470e-03, +-6.472743207359022734e-03, +-6.473028613671069284e-03, +-6.473303493413850272e-03, +-6.473567846637253743e-03, +-6.473821673408280790e-03, +-6.474064973810989172e-03, +-6.474297747946598271e-03, +-6.474519995933330357e-03, +-6.474731717906561518e-03, +-6.474932914018725373e-03, +-6.475123584439344306e-03, +-6.475303729355059816e-03, +-6.475473348969544921e-03, +-6.475632443503599560e-03, +-6.475781013195073404e-03, +-6.475919058298960397e-03, +-6.476046579087246097e-03, +-6.476163575849047324e-03, +-6.476270048890573131e-03, +-6.476365998535076225e-03, +-6.476451425122891140e-03, +-6.476526329011431625e-03, +-6.476590710575201061e-03, +-6.476644570205738680e-03, +-6.476687908311658595e-03, +-6.476720725318703582e-03, +-6.476743021669599358e-03, +-6.476754797824174278e-03, +-6.476756054259329848e-03, +-6.476746791469027709e-03, +-6.476727009964257549e-03, +-6.476696710273110828e-03, +-6.476655892940719195e-03, +-6.476604558529252750e-03, +-6.476542707617975562e-03, +-6.476470340803150254e-03, +-6.476387458698136014e-03, +-6.476294061933332222e-03, +-6.476190151156161964e-03, +-6.476075727031101528e-03, +-6.475950790239690807e-03, +-6.475815341480494272e-03, +-6.475669381469101836e-03, +-6.475512910938181765e-03, +-6.475345930637392208e-03, +-6.475168441333447981e-03, +-6.474980443810083273e-03, +-6.474781938868086340e-03, +-6.474572927325243123e-03, +-6.474353410016379755e-03, +-6.474123387793348679e-03, +-6.473882861525002627e-03, +-6.473631832097224981e-03, +-6.473370300412928033e-03, +-6.473098267392015694e-03, +-6.472815733971416449e-03, +-6.472522701105059943e-03, +-6.472219169763887385e-03, +-6.471905140935864560e-03, +-6.471580615625893360e-03, +-6.471245594855953159e-03, +-6.470900079664988931e-03, +-6.470544071108941600e-03, +-6.470177570260717687e-03, +-6.469800578210260431e-03, +-6.469413096064456983e-03, +-6.469015124947214736e-03, +-6.468606665999399735e-03, +-6.468187720378872248e-03, +-6.467758289260439920e-03, +-6.467318373835921966e-03, +-6.466867975314091049e-03, +-6.466407094920674156e-03, +-6.465935733898392490e-03, +-6.465453893506913768e-03, +-6.464961575022874773e-03, +-6.464458779739816301e-03, +-6.463945508968334079e-03, +-6.463421764035909636e-03, +-6.462887546286948462e-03, +-6.462342857082854601e-03, +-6.461787697801940449e-03, +-6.461222069839514352e-03, +-6.460645974607729693e-03, +-6.460059413535739273e-03, +-6.459462388069604245e-03, +-6.458854899672318399e-03, +-6.458236949823802954e-03, +-6.457608540020856255e-03, +-6.456969671777258724e-03, +-6.456320346623678312e-03, +-6.455660566107674844e-03, +-6.454990331793749453e-03, +-6.454309645263275191e-03, +-6.453618508114529993e-03, +-6.452916921962708816e-03, +-6.452204888439894148e-03, +-6.451482409195048208e-03, +-6.450749485894022479e-03, +-6.450006120219556847e-03, +-6.449252313871264852e-03, +-6.448488068565660578e-03, +-6.447713386036072782e-03, +-6.446928268032759389e-03, +-6.446132716322820755e-03, +-6.445326732690219614e-03, +-6.444510318935764599e-03, +-6.443683476877146675e-03, +-6.442846208348885356e-03, +-6.441998515202330446e-03, +-6.441140399305731422e-03, +-6.440271862544131622e-03, +-6.439392906819402934e-03, +-6.438503534050266618e-03, +-6.437603746172268146e-03, +-6.436693545137805832e-03, +-6.435772932916056233e-03, +-6.434841911493010581e-03, +-6.433900482871514684e-03, +-6.432948649071162234e-03, +-6.431986412128411039e-03, +-6.431013774096480673e-03, +-6.430030737045375026e-03, +-6.429037303061914399e-03, +-6.428033474249736368e-03, +-6.427019252729174355e-03, +-6.425994640637402479e-03, +-6.424959640128400859e-03, +-6.423914253372806429e-03, +-6.422858482558156668e-03, +-6.421792329888625916e-03, +-6.420715797585248297e-03, +-6.419628887885757244e-03, +-6.418531603044623675e-03, +-6.417423945333096749e-03, +-6.416305917039153567e-03, +-6.415177520467483553e-03, +-6.414038757939537032e-03, +-6.412889631793493132e-03, +-6.411730144384206014e-03, +-6.410560298083271651e-03, +-6.409380095279041713e-03, +-6.408189538376514276e-03, +-6.406988629797393670e-03, +-6.405777371980138184e-03, +-6.404555767379816952e-03, +-6.403323818468267814e-03, +-6.402081527733945523e-03, +-6.400828897682019764e-03, +-6.399565930834316164e-03, +-6.398292629729374417e-03, +-6.397008996922316434e-03, +-6.395715034984985996e-03, +-6.394410746505898441e-03, +-6.393096134090140055e-03, +-6.391771200359506848e-03, +-6.390435947952380520e-03, +-6.389090379523844690e-03, +-6.387734497745554789e-03, +-6.386368305305786634e-03, +-6.384991804909510155e-03, +-6.383604999278206377e-03, +-6.382207891150075592e-03, +-6.380800483279778015e-03, +-6.379382778438716546e-03, +-6.377954779414779160e-03, +-6.376516489012495903e-03, +-6.375067910052980777e-03, +-6.373609045373896179e-03, +-6.372139897829515350e-03, +-6.370660470290584465e-03, +-6.369170765644551618e-03, +-6.367670786795278856e-03, +-6.366160536663281570e-03, +-6.364640018185585384e-03, +-6.363109234315710537e-03, +-6.361568188023778575e-03, +-6.360016882296402191e-03, +-6.358455320136686094e-03, +-6.356883504564326756e-03, +-6.355301438615459757e-03, +-6.353709125342756926e-03, +-6.352106567815379509e-03, +-6.350493769119009389e-03, +-6.348870732355774496e-03, +-6.347237460644286969e-03, +-6.345593957119664841e-03, +-6.343940224933460915e-03, +-6.342276267253758176e-03, +-6.340602087264979835e-03, +-6.338917688168114843e-03, +-6.337223073180525343e-03, +-6.335518245536058551e-03, +-6.333803208484966966e-03, +-6.332077965293931784e-03, +-6.330342519246078513e-03, +-6.328596873640930133e-03, +-6.326841031794422712e-03, +-6.325074997038868108e-03, +-6.323298772723040702e-03, +-6.321512362212044697e-03, +-6.319715768887390443e-03, +-6.317908996146967548e-03, +-6.316092047405044881e-03, +-6.314264926092234137e-03, +-6.312427635655491580e-03, +-6.310580179558204772e-03, +-6.308722561280078085e-03, +-6.306854784317054638e-03, +-6.304976852181548748e-03, +-6.303088768402207408e-03, +-6.301190536524090696e-03, +-6.299282160108474020e-03, +-6.297363642732978217e-03, +-6.295434987991561752e-03, +-6.293496199494416632e-03, +-6.291547280868091570e-03, +-6.289588235755328056e-03, +-6.287619067815229494e-03, +-6.285639780723105939e-03, +-6.283650378170546093e-03, +-6.281650863865423373e-03, +-6.279641241531809179e-03, +-6.277621514910062227e-03, +-6.275591687756718398e-03, +-6.273551763844597423e-03, +-6.271501746962719614e-03, +-6.269441640916264234e-03, +-6.267371449526743833e-03, +-6.265291176631729297e-03, +-6.263200826085110057e-03, +-6.261100401756807855e-03, +-6.258989907533093339e-03, +-6.256869347316263395e-03, +-6.254738725024909171e-03, +-6.252598044593667137e-03, +-6.250447309973359601e-03, +-6.248286525131006852e-03, +-6.246115694049647615e-03, +-6.243934820728579312e-03, +-6.241743909183103053e-03, +-6.239542963444748291e-03, +-6.237331987561069852e-03, +-6.235110985595693038e-03, +-6.232879961628469759e-03, +-6.230638919755198367e-03, +-6.228387864087798001e-03, +-6.226126798754300778e-03, +-6.223855727898725161e-03, +-6.221574655681248560e-03, +-6.219283586277954065e-03, +-6.216982523881095860e-03, +-6.214671472698860694e-03, +-6.212350436955502327e-03, +-6.210019420891334588e-03, +-6.207678428762612548e-03, +-6.205327464841650480e-03, +-6.202966533416640581e-03, +-6.200595638791912313e-03, +-6.198214785287664390e-03, +-6.195823977240149522e-03, +-6.193423219001513089e-03, +-6.191012514939840845e-03, +-6.188591869439287289e-03, +-6.186161286899804178e-03, +-6.183720771737353031e-03, +-6.181270328383767221e-03, +-6.178809961286878608e-03, +-6.176339674910340596e-03, +-6.173859473733715741e-03, +-6.171369362252557278e-03, +-6.168869344978166261e-03, +-6.166359426437794528e-03, +-6.163839611174521532e-03, +-6.161309903747319398e-03, +-6.158770308731077205e-03, +-6.156220830716297408e-03, +-6.153661474309602385e-03, +-6.151092244133211408e-03, +-6.148513144825361321e-03, +-6.145924181039892804e-03, +-6.143325357446583444e-03, +-6.140716678730997677e-03, +-6.138098149594435615e-03, +-6.135469774753992030e-03, +-6.132831558942491296e-03, +-6.130183506908630509e-03, +-6.127525623416745296e-03, +-6.124857913246919104e-03, +-6.122180381195086417e-03, +-6.119493032072754329e-03, +-6.116795870707252350e-03, +-6.114088901941522498e-03, +-6.111372130634342217e-03, +-6.108645561660070236e-03, +-6.105909199908739378e-03, +-6.103163050286167582e-03, +-6.100407117713700297e-03, +-6.097641407128506254e-03, +-6.094865923483169801e-03, +-6.092080671746147140e-03, +-6.089285656901351727e-03, +-6.086480883948451777e-03, +-6.083666357902616124e-03, +-6.080842083794672955e-03, +-6.078008066671079443e-03, +-6.075164311593797724e-03, +-6.072310823640383361e-03, +-6.069447607904053868e-03, +-6.066574669493446717e-03, +-6.063692013532844850e-03, +-6.060799645161995403e-03, +-6.057897569536286643e-03, +-6.054985791826538073e-03, +-6.052064317219083694e-03, +-6.049133150915837927e-03, +-6.046192298134094381e-03, +-6.043241764106804283e-03, +-6.040281554082149729e-03, +-6.037311673324019870e-03, +-6.034332127111591976e-03, +-6.031342920739624601e-03, +-6.028344059518217328e-03, +-6.025335548772906176e-03, +-6.022317393844769419e-03, +-6.019289600090052886e-03, +-6.016252172880686040e-03, +-6.013205117603758094e-03, +-6.010148439661911791e-03, +-6.007082144473064982e-03, +-6.004006237470503431e-03, +-6.000920724102931994e-03, +-5.997825609834340176e-03, +-5.994720900144054170e-03, +-5.991606600526716911e-03, +-5.988482716492393894e-03, +-5.985349253566301687e-03, +-5.982206217289012633e-03, +-5.979053613216475660e-03, +-5.975891446919747406e-03, +-5.972719723985368649e-03, +-5.969538450014851699e-03, +-5.966347630625197344e-03, +-5.963147271448632041e-03, +-5.959937378132415357e-03, +-5.956717956339220750e-03, +-5.953489011746820707e-03, +-5.950250550048278436e-03, +-5.947002576951758782e-03, +-5.943745098180620162e-03, +-5.940478119473451002e-03, +-5.937201646583930952e-03, +-5.933915685280902012e-03, +-5.930620241348325168e-03, +-5.927315320585375795e-03, +-5.924000928806264117e-03, +-5.920677071840290719e-03, +-5.917343755531961035e-03, +-5.914000985740731214e-03, +-5.910648768341310831e-03, +-5.907287109223224864e-03, +-5.903916014291292480e-03, +-5.900535489465287033e-03, +-5.897145540679931720e-03, +-5.893746173885165869e-03, +-5.890337395045754619e-03, +-5.886919210141647145e-03, +-5.883491625167562925e-03, +-5.880054646133425419e-03, +-5.876608279063982171e-03, +-5.873152529999054600e-03, +-5.869687404993333309e-03, +-5.866212910116444870e-03, +-5.862729051453048103e-03, +-5.859235835102623302e-03, +-5.855733267179543365e-03, +-5.852221353813227313e-03, +-5.848700101147834111e-03, +-5.845169515342443951e-03, +-5.841629602570988858e-03, +-5.838080369022359377e-03, +-5.834521820900171254e-03, +-5.830953964422873857e-03, +-5.827376805823865531e-03, +-5.823790351351203903e-03, +-5.820194607267933744e-03, +-5.816589579851632469e-03, +-5.812975275394927956e-03, +-5.809351700204989401e-03, +-5.805718860603959267e-03, +-5.802076762928582918e-03, +-5.798425413530330051e-03, +-5.794764818775528271e-03, +-5.791094985045095074e-03, +-5.787415918734722595e-03, +-5.783727626254699800e-03, +-5.780030114030159684e-03, +-5.776323388500773093e-03, +-5.772607456120864948e-03, +-5.768882323359545219e-03, +-5.765147996700420961e-03, +-5.761404482641771518e-03, +-5.757651787696473934e-03, +-5.753889918392081013e-03, +-5.750118881270679071e-03, +-5.746338682888867122e-03, +-5.742549329817976320e-03, +-5.738750828643757705e-03, +-5.734943185966607723e-03, +-5.731126408401369596e-03, +-5.727300502577423527e-03, +-5.723465475138770839e-03, +-5.719621332743775495e-03, +-5.715768082065363596e-03, +-5.711905729790877663e-03, +-5.708034282622257045e-03, +-5.704153747275762104e-03, +-5.700264130482106915e-03, +-5.696365438986565090e-03, +-5.692457679548691349e-03, +-5.688540858942501936e-03, +-5.684614983956370535e-03, +-5.680680061393163574e-03, +-5.676736098070013850e-03, +-5.672783100818412465e-03, +-5.668821076484311175e-03, +-5.664850031927861317e-03, +-5.660869974023706105e-03, +-5.656880909660559099e-03, +-5.652882845741702932e-03, +-5.648875789184487108e-03, +-5.644859746920742605e-03, +-5.640834725896416713e-03, +-5.636800733071720484e-03, +-5.632757775421262311e-03, +-5.628705859933617710e-03, +-5.624644993611841934e-03, +-5.620575183472992058e-03, +-5.616496436548534636e-03, +-5.612408759883905952e-03, +-5.608312160538787838e-03, +-5.604206645587124155e-03, +-5.600092222116864922e-03, +-5.595968897230104225e-03, +-5.591836678043190373e-03, +-5.587695571686403240e-03, +-5.583545585304335902e-03, +-5.579386726055366418e-03, +-5.575219001112245026e-03, +-5.571042417661602360e-03, +-5.566856982904148932e-03, +-5.562662704054731518e-03, +-5.558459588342036517e-03, +-5.554247643009020165e-03, +-5.550026875312284030e-03, +-5.545797292522761969e-03, +-5.541558901925119039e-03, +-5.537311710818176511e-03, +-5.533055726514536296e-03, +-5.528790956340776108e-03, +-5.524517407637517113e-03, +-5.520235087759153315e-03, +-5.515944004074012016e-03, +-5.511644163964292235e-03, +-5.507335574826153178e-03, +-5.503018244069532959e-03, +-5.498692179118192837e-03, +-5.494357387409853390e-03, +-5.490013876395938644e-03, +-5.485661653541702709e-03, +-5.481300726326204624e-03, +-5.476931102242314428e-03, +-5.472552788796773877e-03, +-5.468165793509746284e-03, +-5.463770123915531220e-03, +-5.459365787561880172e-03, +-5.454952792010491804e-03, +-5.450531144836586080e-03, +-5.446100853629095087e-03, +-5.441661925990786200e-03, +-5.437214369537936819e-03, +-5.432758191900543404e-03, +-5.428293400722167088e-03, +-5.423820003660182604e-03, +-5.419338008385389711e-03, +-5.414847422582233505e-03, +-5.410348253948879874e-03, +-5.405840510196882436e-03, +-5.401324199051484379e-03, +-5.396799328251384274e-03, +-5.392265905548951181e-03, +-5.387723938709967908e-03, +-5.383173435513698667e-03, +-5.378614403753072953e-03, +-5.374046851234290899e-03, +-5.369470785777273429e-03, +-5.364886215215059449e-03, +-5.360293147394468508e-03, +-5.355691590175517929e-03, +-5.351081551431819197e-03, +-5.346463039050256168e-03, +-5.341836060931107362e-03, +-5.337200624988133572e-03, +-5.332556739148367093e-03, +-5.327904411352227948e-03, +-5.323243649553372099e-03, +-5.318574461718990690e-03, +-5.313896855829395444e-03, +-5.309210839878225965e-03, +-5.304516421872510455e-03, +-5.299813609832426317e-03, +-5.295102411791401641e-03, +-5.290382835796257448e-03, +-5.285654889906820850e-03, +-5.280918582196409035e-03, +-5.276173920751168339e-03, +-5.271420913670809769e-03, +-5.266659569067913375e-03, +-5.261889895068484237e-03, +-5.257111899811478008e-03, +-5.252325591448990874e-03, +-5.247530978146442565e-03, +-5.242728068081986548e-03, +-5.237916869447251621e-03, +-5.233097390446640219e-03, +-5.228269639297875720e-03, +-5.223433624231534067e-03, +-5.218589353491239792e-03, +-5.213736835333793521e-03, +-5.208876078028831964e-03, +-5.204007089859057772e-03, +-5.199129879120064322e-03, +-5.194244454120616750e-03, +-5.189350823182217395e-03, +-5.184448994639330455e-03, +-5.179538976839501672e-03, +-5.174620778142971500e-03, +-5.169694406923126991e-03, +-5.164759871565871227e-03, +-5.159817180470279915e-03, +-5.154866342048279593e-03, +-5.149907364724327571e-03, +-5.144940256936073736e-03, +-5.139965027133693541e-03, +-5.134981683780369399e-03, +-5.129990235351911641e-03, +-5.124990690336886021e-03, +-5.119983057236779378e-03, +-5.114967344565644024e-03, +-5.109943560850307639e-03, +-5.104911714630243173e-03, +-5.099871814457803028e-03, +-5.094823868897823543e-03, +-5.089767886527813215e-03, +-5.084703875938099277e-03, +-5.079631845731441726e-03, +-5.074551804523431443e-03, +-5.069463760941954160e-03, +-5.064367723627821033e-03, +-5.059263701234213532e-03, +-5.054151702426874261e-03, +-5.049031735884255273e-03, +-5.043903810297125159e-03, +-5.038767934369054770e-03, +-5.033624116815680824e-03, +-5.028472366365561996e-03, +-5.023312691759458139e-03, +-5.018145101750770033e-03, +-5.012969605105206325e-03, +-5.007786210600889340e-03, +-5.002594927028509476e-03, +-4.997395763191014688e-03, +-4.992188727903711966e-03, +-4.986973829994477241e-03, +-4.981751078303330374e-03, +-4.976520481682722256e-03, +-4.971282048997341385e-03, +-4.966035789124377542e-03, +-4.960781710953136685e-03, +-4.955519823385189267e-03, +-4.950250135334548045e-03, +-4.944972655727275165e-03, +-4.939687393501908039e-03, +-4.934394357608826165e-03, +-4.929093557011012677e-03, +-4.923785000683330963e-03, +-4.918468697613079775e-03, +-4.913144656799516181e-03, +-4.907812887254068071e-03, +-4.902473398000417419e-03, +-4.897126198074234008e-03, +-4.891771296523322876e-03, +-4.886408702407497688e-03, +-4.881038424798848745e-03, +-4.875660472781306702e-03, +-4.870274855450838596e-03, +-4.864881581915642995e-03, +-4.859480661295727602e-03, +-4.854072102723139964e-03, +-4.848655915341832170e-03, +-4.843232108307940140e-03, +-4.837800690789312644e-03, +-4.832361671965756771e-03, +-4.826915061029163692e-03, +-4.821460867183083657e-03, +-4.815999099643186558e-03, +-4.810529767636819581e-03, +-4.805052880403191951e-03, +-4.799568447193544064e-03, +-4.794076477270707744e-03, +-4.788576979909415013e-03, +-4.783069964396134167e-03, +-4.777555440029253656e-03, +-4.772033416118756817e-03, +-4.766503901986382345e-03, +-4.760966906965729238e-03, +-4.755422440401974038e-03, +-4.749870511652026089e-03, +-4.744311130084409578e-03, +-4.738744305079501187e-03, +-4.733170046029142389e-03, +-4.727588362336810311e-03, +-4.721999263417753050e-03, +-4.716402758698583740e-03, +-4.710798857617857355e-03, +-4.705187569625183391e-03, +-4.699568904182200788e-03, +-4.693942870761789489e-03, +-4.688309478848539692e-03, +-4.682668737938428319e-03, +-4.677020657538878863e-03, +-4.671365247169025070e-03, +-4.665702516359068221e-03, +-4.660032474651030869e-03, +-4.654355131598083770e-03, +-4.648670496765052416e-03, +-4.642978579727943464e-03, +-4.637279390074168506e-03, +-4.631572937402661169e-03, +-4.625859231323531905e-03, +-4.620138281458208498e-03, +-4.614410097439615617e-03, +-4.608674688911708166e-03, +-4.602932065530076708e-03, +-4.597182236961087042e-03, +-4.591425212882822154e-03, +-4.585661002984330221e-03, +-4.579889616965873538e-03, +-4.574111064539104592e-03, +-4.568325355426604631e-03, +-4.562532499362442241e-03, +-4.556732506091370170e-03, +-4.550925385369733456e-03, +-4.545111146964682727e-03, +-4.539289800654700696e-03, +-4.533461356229178014e-03, +-4.527625823488564197e-03, +-4.521783212244564511e-03, +-4.515933532319702827e-03, +-4.510076793547607849e-03, +-4.504213005772825761e-03, +-4.498342178851091715e-03, +-4.492464322648913495e-03, +-4.486579447043739788e-03, +-4.480687561924171815e-03, +-4.474788677189494961e-03, +-4.468882802750010971e-03, +-4.462969948526799430e-03, +-4.457050124451953678e-03, +-4.451123340468506225e-03, +-4.445189606529878837e-03, +-4.439248932600825363e-03, +-4.433301328656536616e-03, +-4.427346804683266607e-03, +-4.421385370677847690e-03, +-4.415417036647831077e-03, +-4.409441812611758320e-03, +-4.403459708598618343e-03, +-4.397470734648234285e-03, +-4.391474900810990283e-03, +-4.385472217148173209e-03, +-4.379462693731518176e-03, +-4.373446340643387213e-03, +-4.367423167976957482e-03, +-4.361393185835798873e-03, +-4.355356404334152429e-03, +-4.349312833596733451e-03, +-4.343262483759044619e-03, +-4.337205364966856443e-03, +-4.331141487376527315e-03, +-4.325070861155063361e-03, +-4.318993496479710779e-03, +-4.312909403538496209e-03, +-4.306818592529447834e-03, +-4.300721073661464486e-03, +-4.294616857153531544e-03, +-4.288505953235327225e-03, +-4.282388372146667468e-03, +-4.276264124137769615e-03, +-4.270133219469338277e-03, +-4.263995668412277375e-03, +-4.257851481247796818e-03, +-4.251700668267389960e-03, +-4.245543239773009667e-03, +-4.239379206076641579e-03, +-4.233208577500540901e-03, +-4.227031364377373777e-03, +-4.220847577049833925e-03, +-4.214657225870770997e-03, +-4.208460321203440387e-03, +-4.202256873420957654e-03, +-4.196046892906932571e-03, +-4.189830390054613898e-03, +-4.183607375267821803e-03, +-4.177377858960134270e-03, +-4.171141851555463034e-03, +-4.164899363487569589e-03, +-4.158650405200255140e-03, +-4.152394987147585252e-03, +-4.146133119793176010e-03, +-4.139864813611072655e-03, +-4.133590079084988045e-03, +-4.127308926708798779e-03, +-4.121021366986147086e-03, +-4.114727410430563982e-03, +-4.108427067565701730e-03, +-4.102120348924843778e-03, +-4.095807265051245628e-03, +-4.089487826497904127e-03, +-4.083162043827867106e-03, +-4.076829927613749398e-03, +-4.070491488437991308e-03, +-4.064146736892991323e-03, +-4.057795683580619518e-03, +-4.051438339112854205e-03, +-4.045074714110862522e-03, +-4.038704819205964081e-03, +-4.032328665039142633e-03, +-4.025946262260632347e-03, +-4.019557621530814653e-03, +-4.013162753519313591e-03, +-4.006761668905700971e-03, +-4.000354378378883149e-03, +-3.993940892637351699e-03, +-3.987521222389379429e-03, +-3.981095378352561553e-03, +-3.974663371254086308e-03, +-3.968225211830566680e-03, +-3.961780910828337048e-03, +-3.955330479002948374e-03, +-3.948873927119437958e-03, +-3.942411265952473418e-03, +-3.935942506285851350e-03, +-3.929467658913138317e-03, +-3.922986734636741031e-03, +-3.916499744268970608e-03, +-3.910006698631150919e-03, +-3.903507608553975512e-03, +-3.897002484877639880e-03, +-3.890491338451312377e-03, +-3.883974180133844146e-03, +-3.877451020792800716e-03, +-3.870921871305473341e-03, +-3.864386742558053710e-03, +-3.857845645446181682e-03, +-3.851298590874474743e-03, +-3.844745589756714925e-03, +-3.838186653016034851e-03, +-3.831621791584476685e-03, +-3.825051016403208104e-03, +-3.818474338422671050e-03, +-3.811891768602188382e-03, +-3.805303317910188089e-03, +-3.798708997324082293e-03, +-3.792108817830491894e-03, +-3.785502790424841949e-03, +-3.778890926111512158e-03, +-3.772273235904079723e-03, +-3.765649730824772914e-03, +-3.759020421905084723e-03, +-3.752385320184948875e-03, +-3.745744436713649254e-03, +-3.739097782549011522e-03, +-3.732445368757982950e-03, +-3.725787206416128049e-03, +-3.719123306607828496e-03, +-3.712453680426496937e-03, +-3.705778338974066548e-03, +-3.699097293361331470e-03, +-3.692410554707737779e-03, +-3.685718134141703108e-03, +-3.679020042800088420e-03, +-3.672316291828471232e-03, +-3.665606892381283524e-03, +-3.658891855621421423e-03, +-3.652171192720463349e-03, +-3.645444914858535137e-03, +-3.638713033224555936e-03, +-3.631975559015815369e-03, +-3.625232503438157849e-03, +-3.618483877706181635e-03, +-3.611729693042712349e-03, +-3.604969960679429205e-03, +-3.598204691855989845e-03, +-3.591433897820958850e-03, +-3.584657589831258262e-03, +-3.577875779152104273e-03, +-3.571088477057166380e-03, +-3.564295694828459402e-03, +-3.557497443756560320e-03, +-3.550693735140188472e-03, +-3.543884580286407217e-03, +-3.537069990510781359e-03, +-3.530249977136977295e-03, +-3.523424551496996768e-03, +-3.516593724931010335e-03, +-3.509757508787686962e-03, +-3.502915914423646287e-03, +-3.496068953203743113e-03, +-3.489216636501217897e-03, +-3.482358975697170695e-03, +-3.475495982181248979e-03, +-3.468627667350642364e-03, +-3.461754042611246609e-03, +-3.454875119376593726e-03, +-3.447990909068636076e-03, +-3.441101423117124032e-03, +-3.434206672959836705e-03, +-3.427306670042902428e-03, +-3.420401425819851165e-03, +-3.413490951752757262e-03, +-3.406575259311265830e-03, +-3.399654359973248042e-03, +-3.392728265224265530e-03, +-3.385796986557787665e-03, +-3.378860535475372399e-03, +-3.371918923486222179e-03, +-3.364972162107378231e-03, +-3.358020262863916153e-03, +-3.351063237288437208e-03, +-3.344101096921663335e-03, +-3.337133853311584093e-03, +-3.330161518014447194e-03, +-3.323184102593930173e-03, +-3.316201618621408397e-03, +-3.309214077676178849e-03, +-3.302221491344888103e-03, +-3.295223871222239219e-03, +-3.288221228909994718e-03, +-3.281213576018084197e-03, +-3.274200924163645898e-03, +-3.267183284971697174e-03, +-3.260160670074558134e-03, +-3.253133091112110978e-03, +-3.246100559731939644e-03, +-3.239063087588946437e-03, +-3.232020686345531135e-03, +-3.224973367671526373e-03, +-3.217921143244390197e-03, +-3.210864024748780621e-03, +-3.203802023876756427e-03, +-3.196735152327983154e-03, +-3.189663421809250856e-03, +-3.182586844034779403e-03, +-3.175505430726018995e-03, +-3.168419193611954603e-03, +-3.161328144428622415e-03, +-3.154232294919325809e-03, +-3.147131656834835280e-03, +-3.140026241932846775e-03, +-3.132916061978553279e-03, +-3.125801128744109657e-03, +-3.118681454008839955e-03, +-3.111557049559436888e-03, +-3.104427927189494334e-03, +-3.097294098699788362e-03, +-3.090155575898095083e-03, +-3.083012370599508539e-03, +-3.075864494625919852e-03, +-3.068711959806271795e-03, +-3.061554777976728363e-03, +-3.054392960980214199e-03, +-3.047226520666704297e-03, +-3.040055468893051831e-03, +-3.032879817523264840e-03, +-3.025699578428030050e-03, +-3.018514763484932313e-03, +-3.011325384578665380e-03, +-3.004131453600444694e-03, +-2.996932982448725566e-03, +-2.989729983028227827e-03, +-2.982522467251003985e-03, +-2.975310447035495100e-03, +-2.968093934307214701e-03, +-2.960872940998161146e-03, +-2.953647479047050075e-03, +-2.946417560399547733e-03, +-2.939183197007737107e-03, +-2.931944400830451426e-03, +-2.924701183833057754e-03, +-2.917453557987801337e-03, +-2.910201535273281275e-03, +-2.902945127674655661e-03, +-2.895684347183901785e-03, +-2.888419205799278369e-03, +-2.881149715525574070e-03, +-2.873875888374287021e-03, +-2.866597736363117859e-03, +-2.859315271516588586e-03, +-2.852028505865114062e-03, +-2.844737451446085336e-03, +-2.837442120302883022e-03, +-2.830142524485598516e-03, +-2.822838676050436809e-03, +-2.815530587059945477e-03, +-2.808218269583300907e-03, +-2.800901735695423590e-03, +-2.793580997478086175e-03, +-2.786256067018890413e-03, +-2.778926956412031742e-03, +-2.771593677757652231e-03, +-2.764256243162115535e-03, +-2.756914664738197279e-03, +-2.749568954604587629e-03, +-2.742219124886216986e-03, +-2.734865187714022663e-03, +-2.727507155225301037e-03, +-2.720145039563191900e-03, +-2.712778852876878821e-03, +-2.705408607321844582e-03, +-2.698034315059239744e-03, +-2.690655988256664567e-03, +-2.683273639087073101e-03, +-2.675887279729917238e-03, +-2.668496922370555604e-03, +-2.661102579199804696e-03, +-2.653704262414916838e-03, +-2.646301984218642125e-03, +-2.638895756819903664e-03, +-2.631485592433229024e-03, +-2.624071503278940613e-03, +-2.616653501583438013e-03, +-2.609231599578628984e-03, +-2.601805809502270774e-03, +-2.594376143597773229e-03, +-2.586942614114508439e-03, +-2.579505233307309835e-03, +-2.572064013436681663e-03, +-2.564618966769025357e-03, +-2.557170105576067522e-03, +-2.549717442135544711e-03, +-2.542260988730228079e-03, +-2.534800757649033603e-03, +-2.527336761186103117e-03, +-2.519869011641126966e-03, +-2.512397521319540469e-03, +-2.504922302531962727e-03, +-2.497443367594885753e-03, +-2.489960728829686536e-03, +-2.482474398563761561e-03, +-2.474984389129490300e-03, +-2.467490712864996334e-03, +-2.459993382113517205e-03, +-2.452492409223640778e-03, +-2.444987806549557205e-03, +-2.437479586450499482e-03, +-2.429967761291003218e-03, +-2.422452343441125217e-03, +-2.414933345275922620e-03, +-2.407410779175770364e-03, +-2.399884657526162122e-03, +-2.392354992718050306e-03, +-2.384821797147297032e-03, +-2.377285083214908737e-03, +-2.369744863327284679e-03, +-2.362201149895587233e-03, +-2.354653955336507773e-03, +-2.347103292071183768e-03, +-2.339549172526422631e-03, +-2.331991609133628358e-03, +-2.324430614329545727e-03, +-2.316866200555643164e-03, +-2.309298380258384235e-03, +-2.301727165889410655e-03, +-2.294152569905031410e-03, +-2.286574604766565370e-03, +-2.278993282940114471e-03, +-2.271408616896915429e-03, +-2.263820619112776392e-03, +-2.256229302068341047e-03, +-2.248634678249302431e-03, +-2.241036760145890313e-03, +-2.233435560253176945e-03, +-2.225831091070882770e-03, +-2.218223365103719463e-03, +-2.210612394860830051e-03, +-2.202998192856049121e-03, +-2.195380771608114890e-03, +-2.187760143640071157e-03, +-2.180136321480002394e-03, +-2.172509317659996383e-03, +-2.164879144717226245e-03, +-2.157245815193335053e-03, +-2.149609341634334779e-03, +-2.141969736590834845e-03, +-2.134327012617863884e-03, +-2.126681182275162469e-03, +-2.119032258126683516e-03, +-2.111380252740809559e-03, +-2.103725178690588234e-03, +-2.096067048553198857e-03, +-2.088405874910285055e-03, +-2.080741670347753102e-03, +-2.073074447456091547e-03, +-2.065404218829846889e-03, +-2.057730997067846925e-03, +-2.050054794773453586e-03, +-2.042375624553928026e-03, +-2.034693499021175255e-03, +-2.027008430790728458e-03, +-2.019320432482890008e-03, +-2.011629516721698003e-03, +-2.003935696135682176e-03, +-1.996238983357241561e-03, +-1.988539391022861331e-03, +-1.980836931773471022e-03, +-1.973131618253448800e-03, +-1.965423463111811916e-03, +-1.957712479001170233e-03, +-1.949998678578488201e-03, +-1.942282074504425669e-03, +-1.934562679443617384e-03, +-1.926840506064888972e-03, +-1.919115567040719384e-03, +-1.911387875047490265e-03, +-1.903657442765703230e-03, +-1.895924282879376827e-03, +-1.888188408076791605e-03, +-1.880449831049440385e-03, +-1.872708564493198551e-03, +-1.864964621107380576e-03, +-1.857218013595040998e-03, +-1.849468754663220749e-03, +-1.841716857022330242e-03, +-1.833962333386891840e-03, +-1.826205196474497928e-03, +-1.818445459006980992e-03, +-1.810683133709364975e-03, +-1.802918233310630506e-03, +-1.795150770543083897e-03, +-1.787380758142579620e-03, +-1.779608208848785502e-03, +-1.771833135404625881e-03, +-1.764055550556602745e-03, +-1.756275467054626161e-03, +-1.748492897652309834e-03, +-1.740707855106446563e-03, +-1.732920352177255230e-03, +-1.725130401628588743e-03, +-1.717338016227439859e-03, +-1.709543208744213321e-03, +-1.701745991952585994e-03, +-1.693946378629788106e-03, +-1.686144381556086737e-03, +-1.678340013515012847e-03, +-1.670533287293619971e-03, +-1.662724215681821768e-03, +-1.654912811473102825e-03, +-1.647099087463865319e-03, +-1.639283056453681199e-03, +-1.631464731245516834e-03, +-1.623644124645213464e-03, +-1.615821249461793160e-03, +-1.607996118507267359e-03, +-1.600168744596983800e-03, +-1.592339140549058627e-03, +-1.584507319184625534e-03, +-1.576673293328073426e-03, +-1.568837075806518407e-03, +-1.560998679450108879e-03, +-1.553158117091846214e-03, +-1.545315401567893968e-03, +-1.537470545717066353e-03, +-1.529623562381027518e-03, +-1.521774464404574301e-03, +-1.513923264634969889e-03, +-1.506069975922728985e-03, +-1.498214611120533184e-03, +-1.490357183084454595e-03, +-1.482497704672865570e-03, +-1.474636188747215646e-03, +-1.466772648171389259e-03, +-1.458907095811967257e-03, +-1.451039544538437233e-03, +-1.443170007222673978e-03, +-1.435298496739257582e-03, +-1.427425025965277849e-03, +-1.419549607780668877e-03, +-1.411672255067647225e-03, +-1.403792980710973212e-03, +-1.395911797598186179e-03, +-1.388028718619048517e-03, +-1.380143756665800454e-03, +-1.372256924633387300e-03, +-1.364368235418849263e-03, +-1.356477701922052630e-03, +-1.348585337044655007e-03, +-1.340691153691284717e-03, +-1.332795164768484347e-03, +-1.324897383185467742e-03, +-1.316997821853483795e-03, +-1.309096493686074704e-03, +-1.301193411599388438e-03, +-1.293288588511197100e-03, +-1.285382037342113620e-03, +-1.277473771014498881e-03, +-1.269563802453251879e-03, +-1.261652144585159426e-03, +-1.253738810339143127e-03, +-1.245823812646504845e-03, +-1.237907164440369637e-03, +-1.229988878656027712e-03, +-1.222068968230731034e-03, +-1.214147446104015112e-03, +-1.206224325217174036e-03, +-1.198299618513477306e-03, +-1.190373338938434172e-03, +-1.182445499439136382e-03, +-1.174516112965049222e-03, +-1.166585192466913648e-03, +-1.158652750897888823e-03, +-1.150718801212992880e-03, +-1.142783356368550201e-03, +-1.134846429323326140e-03, +-1.126908033037431331e-03, +-1.118968180473123341e-03, +-1.111026884594130786e-03, +-1.103084158365923075e-03, +-1.095140014755952408e-03, +-1.087194466733089121e-03, +-1.079247527267964074e-03, +-1.071299209332771552e-03, +-1.063349525901595384e-03, +-1.055398489949862942e-03, +-1.047446114454587138e-03, +-1.039492412394607762e-03, +-1.031537396749954627e-03, +-1.023581080502623201e-03, +-1.015623476635495182e-03, +-1.007664598133539572e-03, +-9.997044579828401507e-04, +-9.917430691709170493e-04, +-9.837804446869650565e-04, +-9.758165975212247829e-04, +-9.678515406657572148e-04, +-9.598852871133500787e-04, +-9.519178498587426655e-04, +-9.439492418975467232e-04, +-9.359794762270126633e-04, +-9.280085658453989883e-04, +-9.200365237522035522e-04, +-9.120633629484193238e-04, +-9.040890964359803595e-04, +-8.961137372180893405e-04, +-8.881372982990241513e-04, +-8.801597926844667184e-04, +-8.721812333809576562e-04, +-8.642016333961356593e-04, +-8.562210057389749423e-04, +-8.482393634192536558e-04, +-8.402567194477706183e-04, +-8.322730868366168006e-04, +-8.242884785985132032e-04, +-8.163029077476008062e-04, +-8.083163872983443327e-04, +-8.003289302667667207e-04, +-7.923405496693470326e-04, +-7.843512585238140902e-04, +-7.763610698484884731e-04, +-7.683699966625430521e-04, +-7.603780519862326235e-04, +-7.523852488403511571e-04, +-7.443916002465663815e-04, +-7.363971192272093401e-04, +-7.284018188056215525e-04, +-7.204057120055933983e-04, +-7.124088118516130495e-04, +-7.044111313691080309e-04, +-6.964126835838932526e-04, +-6.884134815225098234e-04, +-6.804135382120143904e-04, +-6.724128666803238065e-04, +-6.644114799556586097e-04, +-6.564093910667859926e-04, +-6.484066130432672177e-04, +-6.404031589148118661e-04, +-6.323990417120588974e-04, +-6.243942744654911456e-04, +-6.163888702065611555e-04, +-6.083828419670595259e-04, +-6.003762027789934794e-04, +-5.923689656748399148e-04, +-5.843611436873454804e-04, +-5.763527498498580148e-04, +-5.683437971957726277e-04, +-5.603342987587793316e-04, +-5.523242675731069879e-04, +-5.443137166729702546e-04, +-5.363026590929008105e-04, +-5.282911078675512229e-04, +-5.202790760320302917e-04, +-5.122665766213449013e-04, +-5.042536226706460269e-04, +-4.962402272154787511e-04, +-4.882264032911340194e-04, +-4.802121639334305673e-04, +-4.721975221776215014e-04, +-4.641824910596271470e-04, +-4.561670836149389727e-04, +-4.481513128794017346e-04, +-4.401351918885690264e-04, +-4.321187336779489050e-04, +-4.241019512833409696e-04, +-4.160848577398329321e-04, +-4.080674660830266331e-04, +-4.000497893479509665e-04, +-3.920318405698365420e-04, +-3.840136327834805055e-04, +-3.759951790234792625e-04, +-3.679764923244880910e-04, +-3.599575857206572475e-04, +-3.519384722458785146e-04, +-3.439191649340371157e-04, +-3.358996768183584287e-04, +-3.278800209321979897e-04, +-3.198602103079400526e-04, +-3.118402579782360187e-04, +-3.038201769749932554e-04, +-2.957999803297158611e-04, +-2.877796810737499118e-04, +-2.797592922376377646e-04, +-2.717388268518979781e-04, +-2.637182979459356895e-04, +-2.556977185492714496e-04, +-2.476771016904469910e-04, +-2.396564603978085922e-04, +-2.316358076988597270e-04, +-2.236151566205107292e-04, +-2.155945201893216541e-04, +-2.075739114309490640e-04, +-1.995533433704799631e-04, +-1.915328290322316259e-04, +-1.835123814400890828e-04, +-1.754920136169484362e-04, +-1.674717385849617006e-04, +-1.594515693657853287e-04, +-1.514315189800228504e-04, +-1.434116004475609210e-04, +-1.353918267873689609e-04, +-1.273722110178367487e-04, +-1.193527661562158678e-04, +-1.113335052188672971e-04, +-1.033144412215089754e-04, +-9.529558717856755632e-05, +-8.727695610396362898e-05, +-7.925856101001618531e-05, +-7.124041490858540999e-05, +-6.322253081042373125e-05, +-5.520492172506754296e-05, +-4.718760066108289156e-05, +-3.917058062586579998e-05, +-3.115387462597927825e-05, +-2.313749566659536943e-05, +-1.512145675174266441e-05, +-7.105770884553078268e-06, + 9.095489332954389336e-07, + 8.924489701331671498e-06, + 1.693903842004417274e-05, + 2.495318209143858323e-05, + 3.296690771879063801e-05, + 4.098020230639878305e-05, + 4.899305286005241854e-05, + 5.700544638723173082e-05, + 6.501736989587683158e-05, + 7.302881039637625917e-05, + 8.103975489944163064e-05, + 8.905019041809581100e-05, + 9.706010396644269617e-05, + 1.050694825598664080e-04, + 1.130783132154995069e-04, + 1.210865829519761327e-04, + 1.290942787891845355e-04, + 1.371013877488245992e-04, + 1.451078968541600885e-04, + 1.531137931297730083e-04, + 1.611190636022077698e-04, + 1.691236952992799570e-04, + 1.771276752506319803e-04, + 1.851309904879321901e-04, + 1.931336280437360314e-04, + 2.011355749528465813e-04, + 2.091368182520661587e-04, + 2.171373449790569633e-04, + 2.251371421743283096e-04, + 2.331361968791125395e-04, + 2.411344961373502506e-04, + 2.491320269944643346e-04, + 2.571287764975544289e-04, + 2.651247316958692496e-04, + 2.731198796405551643e-04, + 2.811142073844133046e-04, + 2.891077019824545686e-04, + 2.971003504916510675e-04, + 3.050921399706926686e-04, + 3.130830574806292761e-04, + 3.210730900841800317e-04, + 3.290622248462896191e-04, + 3.370504488343264559e-04, + 3.450377491168538590e-04, + 3.530241127654379515e-04, + 3.610095268534177981e-04, + 3.689939784561051695e-04, + 3.769774546513392742e-04, + 3.849599425187966097e-04, + 3.929414291406344907e-04, + 4.009219016012437967e-04, + 4.089013469870053522e-04, + 4.168797523868415680e-04, + 4.248571048919724423e-04, + 4.328333915956685788e-04, + 4.408085995937190203e-04, + 4.487827159846271099e-04, + 4.567557278684757104e-04, + 4.647276223484589656e-04, + 4.726983865297522901e-04, + 4.806680075201509648e-04, + 4.886364724302674073e-04, + 4.966037683723109565e-04, + 5.045698824618860762e-04, + 5.125348018167662310e-04, + 5.204985135570963607e-04, + 5.284610048059418122e-04, + 5.364222626886045332e-04, + 5.443822743332598236e-04, + 5.523410268707143423e-04, + 5.602985074341585835e-04, + 5.682547031597226387e-04, + 5.762096011862276974e-04, + 5.841631886549405843e-04, + 5.921154527100425677e-04, + 6.000663804988240826e-04, + 6.080159591704632684e-04, + 6.159641758779959642e-04, + 6.239110177762170186e-04, + 6.318564720236409613e-04, + 6.398005257812882382e-04, + 6.477431662128795009e-04, + 6.556843804853017049e-04, + 6.636241557683662242e-04, + 6.715624792345516788e-04, + 6.794993380596615028e-04, + 6.874347194221221407e-04, + 6.953686105036306414e-04, + 7.033009984889084356e-04, + 7.112318705654557642e-04, + 7.191612139241044047e-04, + 7.270890157587681958e-04, + 7.350152632662100430e-04, + 7.429399436464905609e-04, + 7.508630441031733131e-04, + 7.587845518421088790e-04, + 7.667044540733932486e-04, + 7.746227380092752038e-04, + 7.825393908661199167e-04, + 7.904543998631832595e-04, + 7.983677522228194287e-04, + 8.062794351709438997e-04, + 8.141894359367788563e-04, + 8.220977417526164005e-04, + 8.300043398544609428e-04, + 8.379092174813301082e-04, + 8.458123618759089439e-04, + 8.537137602842935057e-04, + 8.616133999557555861e-04, + 8.695112681431921156e-04, + 8.774073521033411366e-04, + 8.853016390955466795e-04, + 8.931941163835594062e-04, + 9.010847712343163403e-04, + 9.089735909181316867e-04, + 9.168605627092590990e-04, + 9.247456738851969225e-04, + 9.326289117273273317e-04, + 9.405102635206740109e-04, + 9.483897165536631958e-04, + 9.562672581186649080e-04, + 9.641428755117465148e-04, + 9.720165560324441805e-04, + 9.798882869842058703e-04, + 9.877580556746010359e-04, + 9.956258494141906595e-04, + 1.003491655518041776e-03, + 1.011355461304609118e-03, + 1.019217254096370677e-03, + 1.027077021220020037e-03, + 1.034934750005261830e-03, + 1.042790427786575731e-03, + 1.050644041902034894e-03, + 1.058495579693473571e-03, + 1.066345028507042873e-03, + 1.074192375692541385e-03, + 1.082037608604030990e-03, + 1.089880714599607454e-03, + 1.097721681041153446e-03, + 1.105560495294880203e-03, + 1.113397144731095943e-03, + 1.121231616723951082e-03, + 1.129063898651903354e-03, + 1.136893977897913402e-03, + 1.144721841848235456e-03, + 1.152547477894372589e-03, + 1.160370873430979647e-03, + 1.168192015857825224e-03, + 1.176010892578580394e-03, + 1.183827491001014729e-03, + 1.191641798537447115e-03, + 1.199453802604519802e-03, + 1.207263490622939497e-03, + 1.215070850018115742e-03, + 1.222875868219486109e-03, + 1.230678532661145033e-03, + 1.238478830781597701e-03, + 1.246276750023520008e-03, + 1.254072277834318225e-03, + 1.261865401665854692e-03, + 1.269656108974240739e-03, + 1.277444387220270363e-03, + 1.285230223869621245e-03, + 1.293013606391652578e-03, + 1.300794522261354905e-03, + 1.308572958957260855e-03, + 1.316348903963389990e-03, + 1.324122344768059647e-03, + 1.331893268864054510e-03, + 1.339661663749107997e-03, + 1.347427516925640530e-03, + 1.355190815900539445e-03, + 1.362951548185769614e-03, + 1.370709701297706225e-03, + 1.378465262757758419e-03, + 1.386218220092136182e-03, + 1.393968560831603800e-03, + 1.401716272511941731e-03, + 1.409461342674120073e-03, + 1.417203758863133916e-03, + 1.424943508629735464e-03, + 1.432680579529244450e-03, + 1.440414959121752610e-03, + 1.448146634972726507e-03, + 1.455875594651932000e-03, + 1.463601825734906371e-03, + 1.471325315801849621e-03, + 1.479046052437835677e-03, + 1.486764023233248452e-03, + 1.494479215783549612e-03, + 1.502191617689040484e-03, + 1.509901216555473548e-03, + 1.517607999993410587e-03, + 1.525311955618807941e-03, + 1.533013071052810724e-03, + 1.540711333921504760e-03, + 1.548406731856342457e-03, + 1.556099252494382197e-03, + 1.563788883477058422e-03, + 1.571475612451949094e-03, + 1.579159427071580258e-03, + 1.586840314993624452e-03, + 1.594518263881425238e-03, + 1.602193261403347556e-03, + 1.609865295233373376e-03, + 1.617534353050889854e-03, + 1.625200422540436706e-03, + 1.632863491392246794e-03, + 1.640523547301998494e-03, + 1.648180577970592784e-03, + 1.655834571104767552e-03, + 1.663485514416422357e-03, + 1.671133395623162913e-03, + 1.678778202448491909e-03, + 1.686419922620625714e-03, + 1.694058543874226060e-03, + 1.701694053949308469e-03, + 1.709326440591008717e-03, + 1.716955691550875419e-03, + 1.724581794585786478e-03, + 1.732204737458151178e-03, + 1.739824507936408703e-03, + 1.747441093794397347e-03, + 1.755054482811957330e-03, + 1.762664662774688588e-03, + 1.770271621473741086e-03, + 1.777875346706305750e-03, + 1.785475826275407813e-03, + 1.793073047989668725e-03, + 1.800666999663908538e-03, + 1.808257669118494082e-03, + 1.815845044179863069e-03, + 1.823429112680715778e-03, + 1.831009862458863637e-03, + 1.838587281358899971e-03, + 1.846161357231085667e-03, + 1.853732077931505512e-03, + 1.861299431322512065e-03, + 1.868863405272509900e-03, + 1.876423987655699305e-03, + 1.883981166352706850e-03, + 1.891534929249916001e-03, + 1.899085264240080130e-03, + 1.906632159222086155e-03, + 1.914175602100739006e-03, + 1.921715580787174702e-03, + 1.929252083199060495e-03, + 1.936785097259452340e-03, + 1.944314610898463047e-03, + 1.951840612052132976e-03, + 1.959363088662605893e-03, + 1.966882028678732224e-03, + 1.974397420055011738e-03, + 1.981909250753025129e-03, + 1.989417508740358703e-03, + 1.996922181990811243e-03, + 2.004423258484825093e-03, + 2.011920726209226809e-03, + 2.019414573157050224e-03, + 2.026904787328090256e-03, + 2.034391356728263225e-03, + 2.041874269370250877e-03, + 2.049353513273210678e-03, + 2.056829076462584130e-03, + 2.064300946970519610e-03, + 2.071769112836057553e-03, + 2.079233562103996371e-03, + 2.086694282826538280e-03, + 2.094151263062207259e-03, + 2.101604490875967884e-03, + 2.109053954339791277e-03, + 2.116499641531988107e-03, + 2.123941540537809241e-03, + 2.131379639449212417e-03, + 2.138813926364659720e-03, + 2.146244389389591160e-03, + 2.153671016636225614e-03, + 2.161093796223331840e-03, + 2.168512716276800069e-03, + 2.175927764929036588e-03, + 2.183338930319443823e-03, + 2.190746200594623737e-03, + 2.198149563907246355e-03, + 2.205549008417700355e-03, + 2.212944522293042691e-03, + 2.220336093706796500e-03, + 2.227723710840166706e-03, + 2.235107361881020008e-03, + 2.242487035024052708e-03, + 2.249862718471302894e-03, + 2.257234400431510322e-03, + 2.264602069120738321e-03, + 2.271965712762094060e-03, + 2.279325319585545108e-03, + 2.286680877828420333e-03, + 2.294032375735166607e-03, + 2.301379801557134567e-03, + 2.308723143553175362e-03, + 2.316062389988991430e-03, + 2.323397529137661687e-03, + 2.330728549279803292e-03, + 2.338055438702463587e-03, + 2.345378185700772861e-03, + 2.352696778576803763e-03, + 2.360011205639762129e-03, + 2.367321455206433233e-03, + 2.374627515600906402e-03, + 2.381929375154410219e-03, + 2.389227022205855488e-03, + 2.396520445101213339e-03, + 2.403809632194122813e-03, + 2.411094571845638895e-03, + 2.418375252424027812e-03, + 2.425651662305173401e-03, + 2.432923789872771386e-03, + 2.440191623517217433e-03, + 2.447455151637380460e-03, + 2.454714362638805471e-03, + 2.461969244935045820e-03, + 2.469219786947509689e-03, + 2.476465977104352033e-03, + 2.483707803842189355e-03, + 2.490945255604915757e-03, + 2.498178320843921947e-03, + 2.505406988018514178e-03, + 2.512631245595685261e-03, + 2.519851082049879946e-03, + 2.527066485863599041e-03, + 2.534277445526760594e-03, + 2.541483949537272791e-03, + 2.548685986400837933e-03, + 2.555883544630711303e-03, + 2.563076612748107098e-03, + 2.570265179282417434e-03, + 2.577449232770054419e-03, + 2.584628761756294600e-03, + 2.591803754793317420e-03, + 2.598974200442011068e-03, + 2.606140087270876135e-03, + 2.613301403856196914e-03, + 2.620458138782442992e-03, + 2.627610280642077561e-03, + 2.634757818035312390e-03, + 2.641900739570616097e-03, + 2.649039033864492541e-03, + 2.656172689541257039e-03, + 2.663301695233610995e-03, + 2.670426039582018268e-03, + 2.677545711235216914e-03, + 2.684660698850392657e-03, + 2.691770991092059129e-03, + 2.698876576633693711e-03, + 2.705977444156711011e-03, + 2.713073582350253397e-03, + 2.720164979912539308e-03, + 2.727251625549063051e-03, + 2.734333507974378522e-03, + 2.741410615910972945e-03, + 2.748482938089475466e-03, + 2.755550463249035326e-03, + 2.762613180137137546e-03, + 2.769671077509366572e-03, + 2.776724144129905873e-03, + 2.783772368771304188e-03, + 2.790815740214263891e-03, + 2.797854247248233398e-03, + 2.804887878670739732e-03, + 2.811916623287941900e-03, + 2.818940469914777477e-03, + 2.825959407373863225e-03, + 2.832973424497099279e-03, + 2.839982510124613568e-03, + 2.846986653104879774e-03, + 2.853985842295262473e-03, + 2.860980066561370511e-03, + 2.867969314777642047e-03, + 2.874953575827114693e-03, + 2.881932838601216490e-03, + 2.888907092000246851e-03, + 2.895876324933179674e-03, + 2.902840526317405304e-03, + 2.909799685079184160e-03, + 2.916753790153798088e-03, + 2.923702830484463128e-03, + 2.930646795024091991e-03, + 2.937585672733491245e-03, + 2.944519452582730450e-03, + 2.951448123550901460e-03, + 2.958371674625130936e-03, + 2.965290094802173256e-03, + 2.972203373087311563e-03, + 2.979111498494536880e-03, + 2.986014460046966176e-03, + 2.992912246776622490e-03, + 2.999804847724212888e-03, + 3.006692251939693979e-03, + 3.013574448481673006e-03, + 3.020451426417947779e-03, + 3.027323174825311512e-03, + 3.034189682789359844e-03, + 3.041050939404819561e-03, + 3.047906933775807944e-03, + 3.054757655014718205e-03, + 3.061603092243927755e-03, + 3.068443234594019683e-03, + 3.075278071205423801e-03, + 3.082107591227407038e-03, + 3.088931783818229561e-03, + 3.095750638145538126e-03, + 3.102564143386157911e-03, + 3.109372288725889989e-03, + 3.116175063359971891e-03, + 3.122972456492878988e-03, + 3.129764457338095503e-03, + 3.136551055118687401e-03, + 3.143332239066684401e-03, + 3.150107998423585642e-03, + 3.156878322440498895e-03, + 3.163643200377196010e-03, + 3.170402621503225302e-03, + 3.177156575097763672e-03, + 3.183905050448599186e-03, + 3.190648036853814627e-03, + 3.197385523620047132e-03, + 3.204117500064076769e-03, + 3.210843955511852917e-03, + 3.217564879298670782e-03, + 3.224280260769484072e-03, + 3.230990089278798320e-03, + 3.237694354190380746e-03, + 3.244393044877764195e-03, + 3.251086150724061524e-03, + 3.257773661121711462e-03, + 3.264455565473021580e-03, + 3.271131853189644841e-03, + 3.277802513692960797e-03, + 3.284467536414321064e-03, + 3.291126910793964674e-03, + 3.297780626282558955e-03, + 3.304428672340137003e-03, + 3.311071038436324068e-03, + 3.317707714050726134e-03, + 3.324338688672420772e-03, + 3.330963951800432893e-03, + 3.337583492943585126e-03, + 3.344197301620241512e-03, + 3.350805367358811442e-03, + 3.357407679697504196e-03, + 3.364004228184170209e-03, + 3.370595002376636316e-03, + 3.377179991842904801e-03, + 3.383759186160202343e-03, + 3.390332574916234219e-03, + 3.396900147708277039e-03, + 3.403461894143672718e-03, + 3.410017803840027957e-03, + 3.416567866424156941e-03, + 3.423112071533620897e-03, + 3.429650408815667750e-03, + 3.436182867927425541e-03, + 3.442709438536333509e-03, + 3.449230110319615600e-03, + 3.455744872964772261e-03, + 3.462253716169366204e-03, + 3.468756629640870181e-03, + 3.475253603097060336e-03, + 3.481744626265865280e-03, + 3.488229688885137545e-03, + 3.494708780703043461e-03, + 3.501181891478204970e-03, + 3.507649010978732083e-03, + 3.514110128983804083e-03, + 3.520565235281962121e-03, + 3.527014319672720777e-03, + 3.533457371965563216e-03, + 3.539894381980093416e-03, + 3.546325339546446860e-03, + 3.552750234505052448e-03, + 3.559169056706449480e-03, + 3.565581796011792898e-03, + 3.571988442292338070e-03, + 3.578388985429912204e-03, + 3.584783415316724394e-03, + 3.591171721855171764e-03, + 3.597553894958232384e-03, + 3.603929924549574993e-03, + 3.610299800562719388e-03, + 3.616663512942054279e-03, + 3.623021051642676387e-03, + 3.629372406629450664e-03, + 3.635717567878638326e-03, + 3.642056525376156494e-03, + 3.648389269119203197e-03, + 3.654715789115235616e-03, + 3.661036075382143127e-03, + 3.667350117948635878e-03, + 3.673657906854048329e-03, + 3.679959432148092926e-03, + 3.686254683891426482e-03, + 3.692543652155074255e-03, + 3.698826327020948625e-03, + 3.705102698581653510e-03, + 3.711372756940277060e-03, + 3.717636492210768095e-03, + 3.723893894518098303e-03, + 3.730144953997288626e-03, + 3.736389660794832163e-03, + 3.742628005067688036e-03, + 3.748859976983502131e-03, + 3.755085566721019525e-03, + 3.761304764469517239e-03, + 3.767517560429334191e-03, + 3.773723944811651753e-03, + 3.779923907838330255e-03, + 3.786117439742334861e-03, + 3.792304530767517858e-03, + 3.798485171168436512e-03, + 3.804659351210764196e-03, + 3.810827061171362384e-03, + 3.816988291337430634e-03, + 3.823143032007739542e-03, + 3.829291273491696596e-03, + 3.835433006109828860e-03, + 3.841568220194011528e-03, + 3.847696906086430120e-03, + 3.853819054141050665e-03, + 3.859934654722625268e-03, + 3.866043698206839564e-03, + 3.872146174980776318e-03, + 3.878242075442361186e-03, + 3.884331390000841933e-03, + 3.890414109076624060e-03, + 3.896490223101071754e-03, + 3.902559722516936360e-03, + 3.908622597778152984e-03, + 3.914678839349660516e-03, + 3.920728437707754650e-03, + 3.926771383340256147e-03, + 3.932807666745546764e-03, + 3.938837278434081067e-03, + 3.944860208926795689e-03, + 3.950876448756612466e-03, + 3.956885988467460057e-03, + 3.962888818614489043e-03, + 3.968884929764388524e-03, + 3.974874312495196155e-03, + 3.980856957396118612e-03, + 3.986832855068019044e-03, + 3.992801996122916607e-03, + 3.998764371184401062e-03, + 4.004719970887527826e-03, + 4.010668785878584650e-03, + 4.016610806815525299e-03, + 4.022546024367760521e-03, + 4.028474429216000186e-03, + 4.034396012052612369e-03, + 4.040310763581710096e-03, + 4.046218674518289177e-03, + 4.052119735589714868e-03, + 4.058013937534075619e-03, + 4.063901271101721772e-03, + 4.069781727054325345e-03, + 4.075655296165033546e-03, + 4.081521969218813127e-03, + 4.087381737012255219e-03, + 4.093234590353403597e-03, + 4.099080520062237804e-03, + 4.104919516970147522e-03, + 4.110751571920388814e-03, + 4.116576675767964419e-03, + 4.122394819379361815e-03, + 4.128205993632950467e-03, + 4.134010189419118873e-03, + 4.139807397639336077e-03, + 4.145597609207545518e-03, + 4.151380815049174507e-03, + 4.157157006101350194e-03, + 4.162926173313339327e-03, + 4.168688307645725989e-03, + 4.174443400071513148e-03, + 4.180191441575328154e-03, + 4.185932423153514680e-03, + 4.191666335814531706e-03, + 4.197393170578737551e-03, + 4.203112918478182566e-03, + 4.208825570557150376e-03, + 4.214531117871567201e-03, + 4.220229551489556967e-03, + 4.225920862491203654e-03, + 4.231605041968354401e-03, + 4.237282081025042779e-03, + 4.242951970777520884e-03, + 4.248614702353467436e-03, + 4.254270266893218563e-03, + 4.259918655548933404e-03, + 4.265559859484692982e-03, + 4.271193869876942564e-03, + 4.276820677913941750e-03, + 4.282440274796282288e-03, + 4.288052651736667768e-03, + 4.293657799959739278e-03, + 4.299255710702498678e-03, + 4.304846375214117782e-03, + 4.310429784755755341e-03, + 4.316005930600999400e-03, + 4.321574804035401528e-03, + 4.327136396356886204e-03, + 4.332690698875833225e-03, + 4.338237702914259780e-03, + 4.343777399807045164e-03, + 4.349309780901148420e-03, + 4.354834837555629154e-03, + 4.360352561142082951e-03, + 4.365862943044401985e-03, + 4.371365974658618890e-03, + 4.376861647393377741e-03, + 4.382349952669388482e-03, + 4.387830881919968160e-03, + 4.393304426590768572e-03, + 4.398770578139701674e-03, + 4.404229328037221475e-03, + 4.409680667766247703e-03, + 4.415124588821914275e-03, + 4.420561082712085380e-03, + 4.425990140956834185e-03, + 4.431411755088794993e-03, + 4.436825916653393959e-03, + 4.442232617207899324e-03, + 4.447631848322718129e-03, + 4.453023601580564407e-03, + 4.458407868576551129e-03, + 4.463784640918518933e-03, + 4.469153910226885199e-03, + 4.474515668134490531e-03, + 4.479869906286964784e-03, + 4.485216616342333276e-03, + 4.490555789971410576e-03, + 4.495887418857652182e-03, + 4.501211494696968907e-03, + 4.506528009198049536e-03, + 4.511836954082501343e-03, + 4.517138321084000069e-03, + 4.522432101949544134e-03, + 4.527718288438564720e-03, + 4.532996872323143481e-03, + 4.538267845388348209e-03, + 4.543531199431538083e-03, + 4.548786926263368932e-03, + 4.554035017707022161e-03, + 4.559275465598369541e-03, + 4.564508261786237760e-03, + 4.569733398132263570e-03, + 4.574950866510739400e-03, + 4.580160658809023615e-03, + 4.585362766927100764e-03, + 4.590557182777974497e-03, + 4.595743898287523582e-03, + 4.600922905394350115e-03, + 4.606094196050068354e-03, + 4.611257762219431351e-03, + 4.616413595879532983e-03, + 4.621561689020998835e-03, + 4.626702033647146599e-03, + 4.631834621774163011e-03, + 4.636959445431430848e-03, + 4.642076496661064894e-03, + 4.647185767518395051e-03, + 4.652287250071722620e-03, + 4.657380936402217946e-03, + 4.662466818604250017e-03, + 4.667544888785241618e-03, + 4.672615139065505394e-03, + 4.677677561578638503e-03, + 4.682732148471102814e-03, + 4.687778891902583123e-03, + 4.692817784046071292e-03, + 4.697848817087130723e-03, + 4.702871983225024796e-03, + 4.707887274671970941e-03, + 4.712894683653028743e-03, + 4.717894202406917870e-03, + 4.722885823185322442e-03, + 4.727869538252982978e-03, + 4.732845339888114462e-03, + 4.737813220381868577e-03, + 4.742773172038830705e-03, + 4.747725187176808290e-03, + 4.752669258126697265e-03, + 4.757605377232835067e-03, + 4.762533536852817627e-03, + 4.767453729357360587e-03, + 4.772365947130718239e-03, + 4.777270182570215150e-03, + 4.782166428086614789e-03, + 4.787054676104232284e-03, + 4.791934919060187627e-03, + 4.796807149405513289e-03, + 4.801671359604349314e-03, + 4.806527542134154951e-03, + 4.811375689485908151e-03, + 4.816215794164039644e-03, + 4.821047848686160590e-03, + 4.825871845583596005e-03, + 4.830687777400845262e-03, + 4.835495636696037457e-03, + 4.840295416040778752e-03, + 4.845087108019939873e-03, + 4.849870705232028206e-03, + 4.854646200289248516e-03, + 4.859413585816763081e-03, + 4.864172854453886058e-03, + 4.868923998852870902e-03, + 4.873667011679984166e-03, + 4.878401885614926103e-03, + 4.883128613350615557e-03, + 4.887847187594041715e-03, + 4.892557601065536388e-03, + 4.897259846498980447e-03, + 4.901953916641957343e-03, + 4.906639804255698463e-03, + 4.911317502114906190e-03, + 4.915987003008161563e-03, + 4.920648299737428143e-03, + 4.925301385118532535e-03, + 4.929946251980966629e-03, + 4.934582893167752289e-03, + 4.939211301535696361e-03, + 4.943831469955534651e-03, + 4.948443391311214620e-03, + 4.953047058501032496e-03, + 4.957642464436359982e-03, + 4.962229602042872445e-03, + 4.966808464259806453e-03, + 4.971379044040066461e-03, + 4.975941334350479812e-03, + 4.980495328171668373e-03, + 4.985041018497901079e-03, + 4.989578398337446083e-03, + 4.994107460712367795e-03, + 4.998628198658414123e-03, + 5.003140605225412860e-03, + 5.007644673476814579e-03, + 5.012140396490059532e-03, + 5.016627767356651377e-03, + 5.021106779181513588e-03, + 5.025577425083924479e-03, + 5.030039698196962089e-03, + 5.034493591667315963e-03, + 5.038939098656151049e-03, + 5.043376212337987059e-03, + 5.047804925901762732e-03, + 5.052225232550220865e-03, + 5.056637125499969035e-03, + 5.061040597981725925e-03, + 5.065435643240235458e-03, + 5.069822254534066437e-03, + 5.074200425135991580e-03, + 5.078570148332762005e-03, + 5.082931417425041315e-03, + 5.087284225727729987e-03, + 5.091628566569601083e-03, + 5.095964433293583874e-03, + 5.100291819256860121e-03, + 5.104610717830254316e-03, + 5.108921122399111454e-03, + 5.113223026362748863e-03, + 5.117516423134477882e-03, + 5.121801306141917851e-03, + 5.126077668826643091e-03, + 5.130345504644547201e-03, + 5.134604807065621009e-03, + 5.138855569573928285e-03, + 5.143097785667838200e-03, + 5.147331448859895214e-03, + 5.151556552676697653e-03, + 5.155773090659163983e-03, + 5.159981056362606539e-03, + 5.164180443356089674e-03, + 5.168371245223465395e-03, + 5.172553455562341196e-03, + 5.176727067984852014e-03, + 5.180892076117526654e-03, + 5.185048473600708391e-03, + 5.189196254089477843e-03, + 5.193335411253056227e-03, + 5.197465938774844391e-03, + 5.201587830352698630e-03, + 5.205701079698810997e-03, + 5.209805680539569654e-03, + 5.213901626615846836e-03, + 5.217988911682751654e-03, + 5.222067529509831323e-03, + 5.226137473881024322e-03, + 5.230198738594505140e-03, + 5.234251317462952288e-03, + 5.238295204313595139e-03, + 5.242330392987632794e-03, + 5.246356877341208126e-03, + 5.250374651244362617e-03, + 5.254383708582024276e-03, + 5.258384043253379672e-03, + 5.262375649171983222e-03, + 5.266358520265979233e-03, + 5.270332650477983945e-03, + 5.274298033764977106e-03, + 5.278254664098554379e-03, + 5.282202535464792029e-03, + 5.286141641864169731e-03, + 5.290071977311842921e-03, + 5.293993535837326209e-03, + 5.297906311484748380e-03, + 5.301810298312987710e-03, + 5.305705490394998017e-03, + 5.309591881818747153e-03, + 5.313469466686653216e-03, + 5.317338239115461385e-03, + 5.321198193236949085e-03, + 5.325049323196994443e-03, + 5.328891623156528645e-03, + 5.332725087290901902e-03, + 5.336549709789997070e-03, + 5.340365484858513277e-03, + 5.344172406715699646e-03, + 5.347970469595422945e-03, + 5.351759667746270807e-03, + 5.355539995431530913e-03, + 5.359311446929007107e-03, + 5.363074016531432266e-03, + 5.366827698545964358e-03, + 5.370572487294620993e-03, + 5.374308377114288097e-03, + 5.378035362356103216e-03, + 5.381753437386408746e-03, + 5.385462596586108354e-03, + 5.389162834350714679e-03, + 5.392854145090719697e-03, + 5.396536523231187064e-03, + 5.400209963212065228e-03, + 5.403874459488105034e-03, + 5.407530006528702728e-03, + 5.411176598818178383e-03, + 5.414814230855645796e-03, + 5.418442897154916206e-03, + 5.422062592244702127e-03, + 5.425673310668717962e-03, + 5.429275046985072850e-03, + 5.432867795767248181e-03, + 5.436451551603111408e-03, + 5.440026309095602995e-03, + 5.443592062862726011e-03, + 5.447148807536900811e-03, + 5.450696537765829797e-03, + 5.454235248211979602e-03, + 5.457764933552647010e-03, + 5.461285588480126359e-03, + 5.464797207701555144e-03, + 5.468299785939049334e-03, + 5.471793317929689489e-03, + 5.475277798425378512e-03, + 5.478753222193053288e-03, + 5.482219584014657796e-03, + 5.485676878686928867e-03, + 5.489125101021701501e-03, + 5.492564245845892382e-03, + 5.495994308001066198e-03, + 5.499415282344204993e-03, + 5.502827163746867693e-03, + 5.506229947095975068e-03, + 5.509623627293331813e-03, + 5.513008199255670788e-03, + 5.516383657914889806e-03, + 5.519749998217938873e-03, + 5.523107215126653660e-03, + 5.526455303618116321e-03, + 5.529794258684292071e-03, + 5.533124075332384803e-03, + 5.536444748584591624e-03, + 5.539756273478141889e-03, + 5.543058645065416026e-03, + 5.546351858414033144e-03, + 5.549635908606390458e-03, + 5.552910790740229682e-03, + 5.556176499928516463e-03, + 5.559433031298950320e-03, + 5.562680379994862367e-03, + 5.565918541174241264e-03, + 5.569147510010613589e-03, + 5.572367281692489592e-03, + 5.575577851423487233e-03, + 5.578779214422531670e-03, + 5.581971365923690462e-03, + 5.585154301176094641e-03, + 5.588328015444251826e-03, + 5.591492504007696679e-03, + 5.594647762161297083e-03, + 5.597793785215110160e-03, + 5.600930568494322422e-03, + 5.604058107339423243e-03, + 5.607176397106260375e-03, + 5.610285433165563759e-03, + 5.613385210903689727e-03, + 5.616475725722079766e-03, + 5.619556973037395826e-03, + 5.622628948281663437e-03, + 5.625691646902082621e-03, + 5.628745064361226520e-03, + 5.631789196136951191e-03, + 5.634824037722293254e-03, + 5.637849584625724032e-03, + 5.640865832370965671e-03, + 5.643872776497019760e-03, + 5.646870412558245393e-03, + 5.649858736124439840e-03, + 5.652837742780456899e-03, + 5.655807428126749872e-03, + 5.658767787778985585e-03, + 5.661718817368186635e-03, + 5.664660512540891854e-03, + 5.667592868958704413e-03, + 5.670515882298897241e-03, + 5.673429548253996688e-03, + 5.676333862531862326e-03, + 5.679228820855820523e-03, + 5.682114418964536069e-03, + 5.684990652612149226e-03, + 5.687857517568171636e-03, + 5.690715009617475055e-03, + 5.693563124560440530e-03, + 5.696401858212869936e-03, + 5.699231206405894028e-03, + 5.702051164986167604e-03, + 5.704861729815907667e-03, + 5.707662896772454537e-03, + 5.710454661749012582e-03, + 5.713237020653828824e-03, + 5.716009969410977901e-03, + 5.718773503959854662e-03, + 5.721527620255286925e-03, + 5.724272314267682057e-03, + 5.727007581982908151e-03, + 5.729733419402305294e-03, + 5.732449822542789661e-03, + 5.735156787436642735e-03, + 5.737854310131833974e-03, + 5.740542386691788353e-03, + 5.743221013195374224e-03, + 5.745890185737081990e-03, + 5.748549900427026710e-03, + 5.751200153390620233e-03, + 5.753840940769000545e-03, + 5.756472258718925081e-03, + 5.759094103412458476e-03, + 5.761706471037551965e-03, + 5.764309357797384181e-03, + 5.766902759910985665e-03, + 5.769486673612899720e-03, + 5.772061095153148587e-03, + 5.774626020797475438e-03, + 5.777181446827188253e-03, + 5.779727369539122521e-03, + 5.782263785245828590e-03, + 5.784790690275393860e-03, + 5.787308080971573752e-03, + 5.789815953693750079e-03, + 5.792314304816865121e-03, + 5.794803130731551732e-03, + 5.797282427844169771e-03, + 5.799752192576475632e-03, + 5.802212421366132258e-03, + 5.804663110666372604e-03, + 5.807104256945993560e-03, + 5.809535856689615300e-03, + 5.811957906397369027e-03, + 5.814370402585169323e-03, + 5.816773341784646500e-03, + 5.819166720542961850e-03, + 5.821550535423077391e-03, + 5.823924783003688217e-03, + 5.826289459879044688e-03, + 5.828644562659259475e-03, + 5.830990087969999645e-03, + 5.833326032452773764e-03, + 5.835652392764793112e-03, + 5.837969165578885816e-03, + 5.840276347583711961e-03, + 5.842573935483708070e-03, + 5.844861925998830372e-03, + 5.847140315865026645e-03, + 5.849409101833868453e-03, + 5.851668280672667373e-03, + 5.853917849164542650e-03, + 5.856157804108307573e-03, + 5.858388142318607383e-03, + 5.860608860625833409e-03, + 5.862819955876117858e-03, + 5.865021424931427495e-03, + 5.867213264669458687e-03, + 5.869395471983706800e-03, + 5.871568043783501750e-03, + 5.873730976993890053e-03, + 5.875884268555740635e-03, + 5.878027915425846316e-03, + 5.880161914576571662e-03, + 5.882286262996295340e-03, + 5.884400957689175926e-03, + 5.886505995675085992e-03, + 5.888601373989822869e-03, + 5.890687089684994160e-03, + 5.892763139828005592e-03, + 5.894829521502139950e-03, + 5.896886231806466004e-03, + 5.898933267855975549e-03, + 5.900970626781431617e-03, + 5.902998305729480373e-03, + 5.905016301862634626e-03, + 5.907024612359275569e-03, + 5.909023234413585124e-03, + 5.911012165235697731e-03, + 5.912991402051523404e-03, + 5.914960942102930747e-03, + 5.916920782647681031e-03, + 5.918870920959269470e-03, + 5.920811354327260023e-03, + 5.922742080057039928e-03, + 5.924663095469791078e-03, + 5.926574397902740696e-03, + 5.928475984708950555e-03, + 5.930367853257361224e-03, + 5.932250000932868389e-03, + 5.934122425136223108e-03, + 5.935985123284167123e-03, + 5.937838092809319228e-03, + 5.939681331160157930e-03, + 5.941514835801176703e-03, + 5.943338604212836281e-03, + 5.945152633891326137e-03, + 5.946956922349012041e-03, + 5.948751467114065695e-03, + 5.950536265730596575e-03, + 5.952311315758714375e-03, + 5.954076614774378093e-03, + 5.955832160369639756e-03, + 5.957577950152429316e-03, + 5.959313981746595414e-03, + 5.961040252792004258e-03, + 5.962756760944497997e-03, + 5.964463503875814046e-03, + 5.966160479273721270e-03, + 5.967847684841925439e-03, + 5.969525118300136012e-03, + 5.971192777384039252e-03, + 5.972850659845260930e-03, + 5.974498763451426171e-03, + 5.976137085986253129e-03, + 5.977765625249255484e-03, + 5.979384379056085046e-03, + 5.980993345238366961e-03, + 5.982592521643661544e-03, + 5.984181906135620406e-03, + 5.985761496593810377e-03, + 5.987331290913843612e-03, + 5.988891287007385399e-03, + 5.990441482802028386e-03, + 5.991981876241429632e-03, + 5.993512465285272435e-03, + 5.995033247909216899e-03, + 5.996544222105013554e-03, + 5.998045385880332488e-03, + 5.999536737258951563e-03, + 6.001018274280728662e-03, + 6.002489995001368366e-03, + 6.003951897492803592e-03, + 6.005403979842916309e-03, + 6.006846240155610389e-03, + 6.008278676550861050e-03, + 6.009701287164702713e-03, + 6.011114070149181296e-03, + 6.012517023672408860e-03, + 6.013910145918531513e-03, + 6.015293435087775385e-03, + 6.016666889396421469e-03, + 6.018030507076750982e-03, + 6.019384286377175465e-03, + 6.020728225562129235e-03, + 6.022062322912124892e-03, + 6.023386576723717759e-03, + 6.024700985309563127e-03, + 6.026005546998312173e-03, + 6.027300260134873904e-03, + 6.028585123079946775e-03, + 6.029860134210538250e-03, + 6.031125291919678562e-03, + 6.032380594616373014e-03, + 6.033626040725824889e-03, + 6.034861628689286266e-03, + 6.036087356964076230e-03, + 6.037303224023600826e-03, + 6.038509228357365199e-03, + 6.039705368470958853e-03, + 6.040891642886080798e-03, + 6.042068050140473635e-03, + 6.043234588788018100e-03, + 6.044391257398716577e-03, + 6.045538054558560401e-03, + 6.046674978869778783e-03, + 6.047802028950583809e-03, + 6.048919203435361262e-03, + 6.050026500974581278e-03, + 6.051123920234774932e-03, + 6.052211459898677350e-03, + 6.053289118665032553e-03, + 6.054356895248747851e-03, + 6.055414788380826183e-03, + 6.056462796808383467e-03, + 6.057500919294635591e-03, + 6.058529154618946984e-03, + 6.059547501576740408e-03, + 6.060555958979627067e-03, + 6.061554525655286907e-03, + 6.062543200447497241e-03, + 6.063521982216223821e-03, + 6.064490869837524563e-03, + 6.065449862203546073e-03, + 6.066398958222615594e-03, + 6.067338156819092679e-03, + 6.068267456933580835e-03, + 6.069186857522745372e-03, + 6.070096357559359376e-03, + 6.070995956032367892e-03, + 6.071885651946823739e-03, + 6.072765444323898788e-03, + 6.073635332200909981e-03, + 6.074495314631329738e-03, + 6.075345390684708767e-03, + 6.076185559446777538e-03, + 6.077015820019358687e-03, + 6.077836171520433796e-03, + 6.078646613084159878e-03, + 6.079447143860713249e-03, + 6.080237763016548870e-03, + 6.081018469734164426e-03, + 6.081789263212200938e-03, + 6.082550142665492203e-03, + 6.083301107324923414e-03, + 6.084042156437619378e-03, + 6.084773289266777116e-03, + 6.085494505091736984e-03, + 6.086205803208007831e-03, + 6.086907182927240971e-03, + 6.087598643577179884e-03, + 6.088280184501742610e-03, + 6.088951805061021752e-03, + 6.089613504631195134e-03, + 6.090265282604612543e-03, + 6.090907138389746282e-03, + 6.091539071411222403e-03, + 6.092161081109861466e-03, + 6.092773166942493795e-03, + 6.093375328382236167e-03, + 6.093967564918283640e-03, + 6.094549876055946856e-03, + 6.095122261316750049e-03, + 6.095684720238298340e-03, + 6.096237252374366207e-03, + 6.096779857294875801e-03, + 6.097312534585876131e-03, + 6.097835283849587298e-03, + 6.098348104704342382e-03, + 6.098850996784623869e-03, + 6.099343959741053249e-03, + 6.099826993240444785e-03, + 6.100300096965654596e-03, + 6.100763270615798366e-03, + 6.101216513906024957e-03, + 6.101659826567702900e-03, + 6.102093208348311967e-03, + 6.102516659011445778e-03, + 6.102930178336894197e-03, + 6.103333766120547926e-03, + 6.103727422174466156e-03, + 6.104111146326803711e-03, + 6.104484938421885637e-03, + 6.104848798320179452e-03, + 6.105202725898291674e-03, + 6.105546721048911440e-03, + 6.105880783680923268e-03, + 6.106204913719368889e-03, + 6.106519111105322348e-03, + 6.106823375796099906e-03, + 6.107117707765122132e-03, + 6.107402107001893080e-03, + 6.107676573512102643e-03, + 6.107941107317543285e-03, + 6.108195708456163817e-03, + 6.108440376982028630e-03, + 6.108675112965320300e-03, + 6.108899916492360402e-03, + 6.109114787665604306e-03, + 6.109319726603636841e-03, + 6.109514733441154082e-03, + 6.109699808328972019e-03, + 6.109874951434036972e-03, + 6.110040162939444665e-03, + 6.110195443044367375e-03, + 6.110340791964125919e-03, + 6.110476209930145418e-03, + 6.110601697189987393e-03, + 6.110717254007311597e-03, + 6.110822880661915917e-03, + 6.110918577449681727e-03, + 6.111004344682617259e-03, + 6.111080182688864541e-03, + 6.111146091812633477e-03, + 6.111202072414292918e-03, + 6.111248124870267452e-03, + 6.111284249573144083e-03, + 6.111310446931562078e-03, + 6.111326717370303176e-03, + 6.111333061330213520e-03, + 6.111329479268293001e-03, + 6.111315971657590301e-03, + 6.111292538987303513e-03, + 6.111259181762646563e-03, + 6.111215900505031356e-03, + 6.111162695751864819e-03, + 6.111099568056730172e-03, + 6.111026517989226470e-03, + 6.110943546135100442e-03, + 6.110850653096156285e-03, + 6.110747839490265204e-03, + 6.110635105951431334e-03, + 6.110512453129691122e-03, + 6.110379881691196599e-03, + 6.110237392318149455e-03, + 6.110084985708850482e-03, + 6.109922662577660542e-03, + 6.109750423655025721e-03, + 6.109568269687423551e-03, + 6.109376201437454086e-03, + 6.109174219683734947e-03, + 6.108962325220976784e-03, + 6.108740518859961596e-03, + 6.108508801427501959e-03, + 6.108267173766495674e-03, + 6.108015636735839894e-03, + 6.107754191210569041e-03, + 6.107482838081712551e-03, + 6.107201578256357330e-03, + 6.106910412657658160e-03, + 6.106609342224786525e-03, + 6.106298367912977448e-03, + 6.105977490693476582e-03, + 6.105646711553613937e-03, + 6.105306031496718876e-03, + 6.104955451542164353e-03, + 6.104594972725346097e-03, + 6.104224596097711231e-03, + 6.103844322726702763e-03, + 6.103454153695820304e-03, + 6.103054090104529858e-03, + 6.102644133068369642e-03, + 6.102224283718895442e-03, + 6.101794543203609492e-03, + 6.101354912686114858e-03, + 6.100905393345938503e-03, + 6.100445986378686541e-03, + 6.099976692995900257e-03, + 6.099497514425162789e-03, + 6.099008451910053162e-03, + 6.098509506710124602e-03, + 6.098000680100933157e-03, + 6.097481973374035101e-03, + 6.096953387836940956e-03, + 6.096414924813150192e-03, + 6.095866585642193726e-03, + 6.095308371679512491e-03, + 6.094740284296535499e-03, + 6.094162324880725810e-03, + 6.093574494835412268e-03, + 6.092976795579969039e-03, + 6.092369228549707194e-03, + 6.091751795195862566e-03, + 6.091124496985690293e-03, + 6.090487335402348587e-03, + 6.089840311944968131e-03, + 6.089183428128623447e-03, + 6.088516685484310353e-03, + 6.087840085559009275e-03, + 6.087153629915593306e-03, + 6.086457320132877651e-03, + 6.085751157805641305e-03, + 6.085035144544544659e-03, + 6.084309281976182406e-03, + 6.083573571743111294e-03, + 6.082828015503735641e-03, + 6.082072614932401873e-03, + 6.081307371719411534e-03, + 6.080532287570911132e-03, + 6.079747364208958060e-03, + 6.078952603371547483e-03, + 6.078148006812517795e-03, + 6.077333576301639957e-03, + 6.076509313624561988e-03, + 6.075675220582788146e-03, + 6.074831298993768267e-03, + 6.073977550690771131e-03, + 6.073113977522913084e-03, + 6.072240581355310696e-03, + 6.071357364068754627e-03, + 6.070464327560096476e-03, + 6.069561473741926123e-03, + 6.068648804542674940e-03, + 6.067726321906707736e-03, + 6.066794027794189179e-03, + 6.065851924181089004e-03, + 6.064900013059290433e-03, + 6.063938296436463538e-03, + 6.062966776336136364e-03, + 6.061985454797647228e-03, + 6.060994333876141248e-03, + 6.059993415642624115e-03, + 6.058982702183893579e-03, + 6.057962195602535974e-03, + 6.056931898016964383e-03, + 6.055891811561421242e-03, + 6.054841938385880327e-03, + 6.053782280656200276e-03, + 6.052712840553905148e-03, + 6.051633620276451568e-03, + 6.050544622036959849e-03, + 6.049445848064363175e-03, + 6.048337300603385917e-03, + 6.047218981914508941e-03, + 6.046090894273961798e-03, + 6.044953039973750483e-03, + 6.043805421321605392e-03, + 6.042648040641083670e-03, + 6.041480900271386199e-03, + 6.040304002567509385e-03, + 6.039117349900190515e-03, + 6.037920944655913828e-03, + 6.036714789236782147e-03, + 6.035498886060773616e-03, + 6.034273237561518788e-03, + 6.033037846188264199e-03, + 6.031792714406176807e-03, + 6.030537844695901643e-03, + 6.029273239553984212e-03, + 6.027998901492474110e-03, + 6.026714833039245947e-03, + 6.025421036737821541e-03, + 6.024117515147379455e-03, + 6.022804270842766275e-03, + 6.021481306414572070e-03, + 6.020148624468963858e-03, + 6.018806227627828721e-03, + 6.017454118528666254e-03, + 6.016092299824628460e-03, + 6.014720774184565723e-03, + 6.013339544292935733e-03, + 6.011948612849741906e-03, + 6.010547982570796192e-03, + 6.009137656187392082e-03, + 6.007717636446473740e-03, + 6.006287926110650752e-03, + 6.004848527958070621e-03, + 6.003399444782547140e-03, + 6.001940679393447629e-03, + 6.000472234615730240e-03, + 5.998994113290003795e-03, + 5.997506318272369068e-03, + 5.996008852434555822e-03, + 5.994501718663876842e-03, + 5.992984919863161147e-03, + 5.991458458950869349e-03, + 5.989922338860927988e-03, + 5.988376562542879582e-03, + 5.986821132961808907e-03, + 5.985256053098343861e-03, + 5.983681325948524490e-03, + 5.982096954524120450e-03, + 5.980502941852271909e-03, + 5.978899290975686447e-03, + 5.977286004952587876e-03, + 5.975663086856662469e-03, + 5.974030539777172577e-03, + 5.972388366818834338e-03, + 5.970736571101791651e-03, + 5.969075155761775775e-03, + 5.967404123949914506e-03, + 5.965723478832831925e-03, + 5.964033223592645795e-03, + 5.962333361426880828e-03, + 5.960623895548544139e-03, + 5.958904829186109642e-03, + 5.957176165583363651e-03, + 5.955437907999764843e-03, + 5.953690059709994958e-03, + 5.951932624004192124e-03, + 5.950165604187995089e-03, + 5.948389003582399241e-03, + 5.946602825523757477e-03, + 5.944807073363935455e-03, + 5.943001750470085220e-03, + 5.941186860224795252e-03, + 5.939362406026038425e-03, + 5.937528391287097418e-03, + 5.935684819436727773e-03, + 5.933831693918962744e-03, + 5.931969018193153191e-03, + 5.930096795734145394e-03, + 5.928215030031999157e-03, + 5.926323724592158677e-03, + 5.924422882935417856e-03, + 5.922512508597771105e-03, + 5.920592605130728207e-03, + 5.918663176100934405e-03, + 5.916724225090401121e-03, + 5.914775755696468663e-03, + 5.912817771531739437e-03, + 5.910850276224056260e-03, + 5.908873273416615987e-03, + 5.906886766767815988e-03, + 5.904890759951402467e-03, + 5.902885256656278772e-03, + 5.900870260586637238e-03, + 5.898845775461944441e-03, + 5.896811805016896092e-03, + 5.894768353001309490e-03, + 5.892715423180440969e-03, + 5.890653019334554825e-03, + 5.888581145259185259e-03, + 5.886499804765147649e-03, + 5.884409001678370284e-03, + 5.882308739839996713e-03, + 5.880199023106366663e-03, + 5.878079855348918026e-03, + 5.875951240454389823e-03, + 5.873813182324545516e-03, + 5.871665684876379437e-03, + 5.869508752042029189e-03, + 5.867342387768733139e-03, + 5.865166596018920632e-03, + 5.862981380770087951e-03, + 5.860786746014846893e-03, + 5.858582695761001095e-03, + 5.856369234031392514e-03, + 5.854146364863845042e-03, + 5.851914092311597329e-03, + 5.849672420442626232e-03, + 5.847421353340132542e-03, + 5.845160895102425626e-03, + 5.842891049842753419e-03, + 5.840611821689567842e-03, + 5.838323214786241173e-03, + 5.836025233291177068e-03, + 5.833717881377936329e-03, + 5.831401163234993176e-03, + 5.829075083065825454e-03, + 5.826739645089013507e-03, + 5.824394853538025080e-03, + 5.822040712661441693e-03, + 5.819677226722760020e-03, + 5.817304400000343316e-03, + 5.814922236787799584e-03, + 5.812530741393418660e-03, + 5.810129918140590280e-03, + 5.807719771367664437e-03, + 5.805300305427849028e-03, + 5.802871524689296595e-03, + 5.800433433535176313e-03, + 5.797986036363425924e-03, + 5.795529337587025827e-03, + 5.793063341633781366e-03, + 5.790588052946364465e-03, + 5.788103475982442868e-03, + 5.785609615214448546e-03, + 5.783106475129675718e-03, + 5.780594060230390130e-03, + 5.778072375033596608e-03, + 5.775541424071230744e-03, + 5.773001211890022716e-03, + 5.770451743051417497e-03, + 5.767893022131952152e-03, + 5.765325053722703333e-03, + 5.762747842429657638e-03, + 5.760161392873656971e-03, + 5.757565709690240681e-03, + 5.754960797529749643e-03, + 5.752346661057323660e-03, + 5.749723304952787835e-03, + 5.747090733910863343e-03, + 5.744448952640889873e-03, + 5.741797965866925375e-03, + 5.739137778327906524e-03, + 5.736468394777373761e-03, + 5.733789819983500791e-03, + 5.731102058729438051e-03, + 5.728405115812674336e-03, + 5.725698996045758445e-03, + 5.722983704255607887e-03, + 5.720259245283893998e-03, + 5.717525623987136478e-03, + 5.714782845236233283e-03, + 5.712030913916866549e-03, + 5.709269834929352541e-03, + 5.706499613188624302e-03, + 5.703720253624181349e-03, + 5.700931761180228451e-03, + 5.698134140815470927e-03, + 5.695327397503308076e-03, + 5.692511536231618929e-03, + 5.689686562002886291e-03, + 5.686852479834223623e-03, + 5.684009294757286571e-03, + 5.681157011818062201e-03, + 5.678295636077492631e-03, + 5.675425172610615472e-03, + 5.672545626507346193e-03, + 5.669657002871861425e-03, + 5.666759306822912075e-03, + 5.663852543493845884e-03, + 5.660936718032370633e-03, + 5.658011835600678177e-03, + 5.655077901375516435e-03, + 5.652134920548013315e-03, + 5.649182898323740036e-03, + 5.646221839922794389e-03, + 5.643251750579570888e-03, + 5.640272635543021849e-03, + 5.637284500076454423e-03, + 5.634287349457444728e-03, + 5.631281188978295819e-03, + 5.628266023945318643e-03, + 5.625241859679396689e-03, + 5.622208701515802980e-03, + 5.619166554804022259e-03, + 5.616115424908156052e-03, + 5.613055317206306835e-03, + 5.609986237091070700e-03, + 5.606908189969423729e-03, + 5.603821181262550258e-03, + 5.600725216405940017e-03, + 5.597620300849437576e-03, + 5.594506440057116572e-03, + 5.591383639507296194e-03, + 5.588251904692672148e-03, + 5.585111241120032169e-03, + 5.581961654310561328e-03, + 5.578803149799580093e-03, + 5.575635733136564270e-03, + 5.572459409885465072e-03, + 5.569274185624155729e-03, + 5.566080065944782780e-03, + 5.562877056453799027e-03, + 5.559665162771712868e-03, + 5.556444390533171566e-03, + 5.553214745387111302e-03, + 5.549976232996449259e-03, + 5.546728859038408885e-03, + 5.543472629204205908e-03, + 5.540207549199180175e-03, + 5.536933624742864171e-03, + 5.533650861568876339e-03, + 5.530359265424705968e-03, + 5.527058842072309942e-03, + 5.523749597287271398e-03, + 5.520431536859669690e-03, + 5.517104666593252056e-03, + 5.513768992305937561e-03, + 5.510424519829852652e-03, + 5.507071255010838502e-03, + 5.503709203708864739e-03, + 5.500338371797998220e-03, + 5.496958765166141091e-03, + 5.493570389715218133e-03, + 5.490173251361174164e-03, + 5.486767356033803167e-03, + 5.483352709676978139e-03, + 5.479929318248370068e-03, + 5.476497187719617937e-03, + 5.473056324076339130e-03, + 5.469606733318002796e-03, + 5.466148421457833577e-03, + 5.462681394523270437e-03, + 5.459205658555214662e-03, + 5.455721219608846047e-03, + 5.452228083752827525e-03, + 5.448726257069840331e-03, + 5.445215745656442619e-03, + 5.441696555622871703e-03, + 5.438168693093234016e-03, + 5.434632164205489488e-03, + 5.431086975111331858e-03, + 5.427533131976148770e-03, + 5.423970640979277648e-03, + 5.420399508313631862e-03, + 5.416819740186019916e-03, + 5.413231342816906926e-03, + 5.409634322440322676e-03, + 5.406028685304405459e-03, + 5.402414437670602365e-03, + 5.398791585814163678e-03, + 5.395160136024254767e-03, + 5.391520094603264798e-03, + 5.387871467867759966e-03, + 5.384214262147483422e-03, + 5.380548483786043966e-03, + 5.376874139140702669e-03, + 5.373191234582249710e-03, + 5.369499776495039074e-03, + 5.365799771277172427e-03, + 5.362091225340218960e-03, + 5.358374145109256158e-03, + 5.354648537023121331e-03, + 5.350914407533965793e-03, + 5.347171763107700683e-03, + 5.343420610223629207e-03, + 5.339660955374431021e-03, + 5.335892805066709543e-03, + 5.332116165820117645e-03, + 5.328331044167957872e-03, + 5.324537446657125195e-03, + 5.320735379847758330e-03, + 5.316924850313639594e-03, + 5.313105864641830614e-03, + 5.309278429432837988e-03, + 5.305442551300722578e-03, + 5.301598236872783788e-03, + 5.297745492789743445e-03, + 5.293884325705780491e-03, + 5.290014742288437315e-03, + 5.286136749218349994e-03, + 5.282250353189989027e-03, + 5.278355560910620234e-03, + 5.274452379101342986e-03, + 5.270540814496140446e-03, + 5.266620873842429475e-03, + 5.262692563901166451e-03, + 5.258755891446183738e-03, + 5.254810863264765611e-03, + 5.250857486157527697e-03, + 5.246895766938135079e-03, + 5.242925712433690009e-03, + 5.238947329484349401e-03, + 5.234960624943492229e-03, + 5.230965605677825349e-03, + 5.226962278567066911e-03, + 5.222950650504167534e-03, + 5.218930728395293830e-03, + 5.214902519159741665e-03, + 5.210866029729707173e-03, + 5.206821267050988460e-03, + 5.202768238081938688e-03, + 5.198706949794561563e-03, + 5.194637409173479166e-03, + 5.190559623216570335e-03, + 5.186473598934890870e-03, + 5.182379343352388167e-03, + 5.178276863506053006e-03, + 5.174166166446026241e-03, + 5.170047259235309965e-03, + 5.165920148950056343e-03, + 5.161784842679296992e-03, + 5.157641347525044467e-03, + 5.153489670602385067e-03, + 5.149329819039282809e-03, + 5.145161799976458866e-03, + 5.140985620568035153e-03, + 5.136801287980562007e-03, + 5.132608809393663513e-03, + 5.128408192000117292e-03, + 5.124199443005060875e-03, + 5.119982569627084569e-03, + 5.115757579097137721e-03, + 5.111524478659222603e-03, + 5.107283275570247832e-03, + 5.103033977099822802e-03, + 5.098776590530343551e-03, + 5.094511123157139353e-03, + 5.090237582288138773e-03, + 5.085955975244241777e-03, + 5.081666309358926804e-03, + 5.077368591978454609e-03, + 5.073062830461922898e-03, + 5.068749032181098929e-03, + 5.064427204520200072e-03, + 5.060097354876680505e-03, + 5.055759490660155682e-03, + 5.051413619293113576e-03, + 5.047059748210794977e-03, + 5.042697884860879512e-03, + 5.038328036703884627e-03, + 5.033950211212801298e-03, + 5.029564415873200717e-03, + 5.025170658183428576e-03, + 5.020768945654227773e-03, + 5.016359285808921417e-03, + 5.011941686183544672e-03, + 5.007516154326573272e-03, + 5.003082697798760456e-03, + 4.998641324173977440e-03, + 4.994192041037877686e-03, + 4.989734855989242171e-03, + 4.985269776638988001e-03, + 4.980796810610363563e-03, + 4.976315965539556546e-03, + 4.971827249074686934e-03, + 4.967330668876521714e-03, + 4.962826232618293594e-03, + 4.958313947985491105e-03, + 4.953793822676145694e-03, + 4.949265864400541164e-03, + 4.944730080881272645e-03, + 4.940186479853494669e-03, + 4.935635069064497026e-03, + 4.931075856273906856e-03, + 4.926508849253793607e-03, + 4.921934055788450453e-03, + 4.917351483674213888e-03, + 4.912761140720209654e-03, + 4.908163034747218233e-03, + 4.903557173588844048e-03, + 4.898943565090419991e-03, + 4.894322217109712582e-03, + 4.889693137516763245e-03, + 4.885056334193677539e-03, + 4.880411815034701485e-03, + 4.875759587946424528e-03, + 4.871099660847362338e-03, + 4.866432041668354927e-03, + 4.861756738352250064e-03, + 4.857073758853950977e-03, + 4.852383111140647076e-03, + 4.847684803191473941e-03, + 4.842978842997459552e-03, + 4.838265238562117557e-03, + 4.833543997900705685e-03, + 4.828815129040360185e-03, + 4.824078640020722925e-03, + 4.819334538892824232e-03, + 4.814582833720315418e-03, + 4.809823532578264872e-03, + 4.805056643553944767e-03, + 4.800282174746630694e-03, + 4.795500134267416045e-03, + 4.790710530239278807e-03, + 4.785913370797281047e-03, + 4.781108664088129165e-03, + 4.776296418270644002e-03, + 4.771476641515333232e-03, + 4.766649342004558761e-03, + 4.761814527932672902e-03, + 4.756972207505747764e-03, + 4.752122388941410445e-03, + 4.747265080469678308e-03, + 4.742400290331741201e-03, + 4.737528026780827087e-03, + 4.732648298081979128e-03, + 4.727761112511781605e-03, + 4.722866478358745020e-03, + 4.717964403922929664e-03, + 4.713054897516084397e-03, + 4.708137967461817515e-03, + 4.703213622095221182e-03, + 4.698281869763031894e-03, + 4.693342718823818698e-03, + 4.688396177647525219e-03, + 4.683442254615931971e-03, + 4.678480958122305071e-03, + 4.673512296571284350e-03, + 4.668536278379533874e-03, + 4.663552911974984741e-03, + 4.658562205796914005e-03, + 4.653564168296678467e-03, + 4.648558807936594046e-03, + 4.643546133190689512e-03, + 4.638526152544599802e-03, + 4.633498874495163566e-03, + 4.628464307550946184e-03, + 4.623422460231747973e-03, + 4.618373341068820158e-03, + 4.613316958604950745e-03, + 4.608253321394188695e-03, + 4.603182438001965360e-03, + 4.598104317005223714e-03, + 4.593018966992038453e-03, + 4.587926396562044470e-03, + 4.582826614326102922e-03, + 4.577719628906148572e-03, + 4.572605448935962609e-03, + 4.567484083060045948e-03, + 4.562355539934399851e-03, + 4.557219828226392357e-03, + 4.552076956614413070e-03, + 4.546926933788121225e-03, + 4.541769768448543701e-03, + 4.536605469307643072e-03, + 4.531434045088808538e-03, + 4.526255504526417901e-03, + 4.521069856365990229e-03, + 4.515877109364361056e-03, + 4.510677272289348450e-03, + 4.505470353919650665e-03, + 4.500256363045582533e-03, + 4.495035308468058911e-03, + 4.489807198999344953e-03, + 4.484572043462623295e-03, + 4.479329850691903848e-03, + 4.474080629532766265e-03, + 4.468824388841189862e-03, + 4.463561137484424457e-03, + 4.458290884340747502e-03, + 4.453013638299252452e-03, + 4.447729408259958050e-03, + 4.442438203133987004e-03, + 4.437140031843127101e-03, + 4.431834903320316064e-03, + 4.426522826509181850e-03, + 4.421203810364197039e-03, + 4.415877863850900011e-03, + 4.410544995945496830e-03, + 4.405205215634831750e-03, + 4.399858531917095854e-03, + 4.394504953800715090e-03, + 4.389144490305083197e-03, + 4.383777150460506193e-03, + 4.378402943307792110e-03, + 4.373021877898690749e-03, + 4.367633963295505101e-03, + 4.362239208571244004e-03, + 4.356837622809766122e-03, + 4.351429215105400046e-03, + 4.346013994563149851e-03, + 4.340591970298836484e-03, + 4.335163151438658005e-03, + 4.329727547119646691e-03, + 4.324285166489257037e-03, + 4.318836018705529689e-03, + 4.313380112937204199e-03, + 4.307917458363491776e-03, + 4.302448064173862788e-03, + 4.296971939568913247e-03, + 4.291489093759144439e-03, + 4.285999535965752220e-03, + 4.280503275420554157e-03, + 4.275000321365555848e-03, + 4.269490683053449656e-03, + 4.263974369747160209e-03, + 4.258451390720021344e-03, + 4.252921755255945242e-03, + 4.247385472649035584e-03, + 4.241842552203728932e-03, + 4.236293003235034986e-03, + 4.230736835067985813e-03, + 4.225174057038228251e-03, + 4.219604678491547731e-03, + 4.214028708783766793e-03, + 4.208446157281609847e-03, + 4.202857033361411671e-03, + 4.197261346409991711e-03, + 4.191659105824516174e-03, + 4.186050321012155413e-03, + 4.180435001390281693e-03, + 4.174813156386620976e-03, + 4.169184795438792349e-03, + 4.163549927994808497e-03, + 4.157908563512634215e-03, + 4.152260711460312170e-03, + 4.146606381316184954e-03, + 4.140945582568534254e-03, + 4.135278324715464630e-03, + 4.129604617265664190e-03, + 4.123924469737361154e-03, + 4.118237891659126161e-03, + 4.112544892569374409e-03, + 4.106845482016257230e-03, + 4.101139669558516443e-03, + 4.095427464764224076e-03, + 4.089708877211609833e-03, + 4.083983916488983894e-03, + 4.078252592194326655e-03, + 4.072514913935519447e-03, + 4.066770891330524079e-03, + 4.061020534006856350e-03, + 4.055263851602157639e-03, + 4.049500853763661479e-03, + 4.043731550148443356e-03, + 4.037955950423544743e-03, + 4.032174064265639166e-03, + 4.026385901360891688e-03, + 4.020591471405885256e-03, + 4.014790784106113224e-03, + 4.008983849177557082e-03, + 4.003170676345267458e-03, + 3.997351275344192441e-03, + 3.991525655919090851e-03, + 3.985693827824163607e-03, + 3.979855800823232405e-03, + 3.974011584689913189e-03, + 3.968161189207237115e-03, + 3.962304624167791930e-03, + 3.956441899373940550e-03, + 3.950573024637317118e-03, + 3.944698009779350895e-03, + 3.938816864630775329e-03, + 3.932929599031800665e-03, + 3.927036222832349863e-03, + 3.921136745891657879e-03, + 3.915231178078145031e-03, + 3.909319529270300839e-03, + 3.903401809355246804e-03, + 3.897478028230301570e-03, + 3.891548195801489488e-03, + 3.885612321984459154e-03, + 3.879670416704357645e-03, + 3.873722489895432396e-03, + 3.867768551501257583e-03, + 3.861808611474905860e-03, + 3.855842679778512944e-03, + 3.849870766383518741e-03, + 3.843892881270747144e-03, + 3.837909034430030467e-03, + 3.831919235860682151e-03, + 3.825923495571031865e-03, + 3.819921823578382135e-03, + 3.813914229909823664e-03, + 3.807900724600928218e-03, + 3.801881317696683207e-03, + 3.795856019251308677e-03, + 3.789824839327783287e-03, + 3.783787787998725994e-03, + 3.777744875345171328e-03, + 3.771696111457499643e-03, + 3.765641506435244996e-03, + 3.759581070386750802e-03, + 3.753514813429343309e-03, + 3.747442745689549305e-03, + 3.741364877302652461e-03, + 3.735281218412861166e-03, + 3.729191779173539247e-03, + 3.723096569746659531e-03, + 3.716995600303384974e-03, + 3.710888881023617636e-03, + 3.704776422095825642e-03, + 3.698658233718026770e-03, + 3.692534326096365109e-03, + 3.686404709446076868e-03, + 3.680269393991316036e-03, + 3.674128389964806569e-03, + 3.667981707608052293e-03, + 3.661829357171461369e-03, + 3.655671348913934731e-03, + 3.649507693103323618e-03, + 3.643338400015982883e-03, + 3.637163479936914110e-03, + 3.630982943160012376e-03, + 3.624796799987642544e-03, + 3.618605060730540387e-03, + 3.612407735708714641e-03, + 3.606204835249940833e-03, + 3.599996369691402763e-03, + 3.593782349378117375e-03, + 3.587562784663873242e-03, + 3.581337685911372380e-03, + 3.575107063491210230e-03, + 3.568870927782734782e-03, + 3.562629289173878736e-03, + 3.556382158060857664e-03, + 3.550129544848274529e-03, + 3.543871459949379018e-03, + 3.537607913785555374e-03, + 3.531338916786799873e-03, + 3.525064479391295819e-03, + 3.518784612045570970e-03, + 3.512499325204675345e-03, + 3.506208629331825175e-03, + 3.499912534898287977e-03, + 3.493611052384251216e-03, + 3.487304192277363400e-03, + 3.480991965074325695e-03, + 3.474674381279388782e-03, + 3.468351451405254915e-03, + 3.462023185972992918e-03, + 3.455689595511594967e-03, + 3.449350690558242432e-03, + 3.443006481658432080e-03, + 3.436656979365582294e-03, + 3.430302194241206110e-03, + 3.423942136855130224e-03, + 3.417576817784932081e-03, + 3.411206247616544417e-03, + 3.404830436943779518e-03, + 3.398449396368180466e-03, + 3.392063136499994750e-03, + 3.385671667956745724e-03, + 3.379275001364178462e-03, + 3.372873147356152644e-03, + 3.366466116574068357e-03, + 3.360053919667818027e-03, + 3.353636567294546959e-03, + 3.347214070119544117e-03, + 3.340786438816108553e-03, + 3.334353684065133501e-03, + 3.327915816555364423e-03, + 3.321472846983551230e-03, + 3.315024786054008524e-03, + 3.308571644478811198e-03, + 3.302113432978001292e-03, + 3.295650162279072353e-03, + 3.289181843117512834e-03, + 3.282708486236351163e-03, + 3.276230102386016533e-03, + 3.269746702325298637e-03, + 3.263258296819948178e-03, + 3.256764896643575026e-03, + 3.250266512577577958e-03, + 3.243763155410628145e-03, + 3.237254835939272404e-03, + 3.230741564967385022e-03, + 3.224223353306385903e-03, + 3.217700211775400589e-03, + 3.211172151200846966e-03, + 3.204639182416654710e-03, + 3.198101316264377169e-03, + 3.191558563592906440e-03, + 3.185010935258248722e-03, + 3.178458442124569485e-03, + 3.171901095062522064e-03, + 3.165338904951024018e-03, + 3.158771882675602202e-03, + 3.152200039129373754e-03, + 3.145623385213157115e-03, + 3.139041931834467194e-03, + 3.132455689908354105e-03, + 3.125864670357288242e-03, + 3.119268884110710984e-03, + 3.112668342105561620e-03, + 3.106063055285777311e-03, + 3.099453034602483049e-03, + 3.092838291014204585e-03, + 3.086218835486400931e-03, + 3.079594678991659940e-03, + 3.072965832509912121e-03, + 3.066332307028048557e-03, + 3.059694113539742234e-03, + 3.053051263046459816e-03, + 3.046403766555840983e-03, + 3.039751635083439655e-03, + 3.033094879651066899e-03, + 3.026433511287838270e-03, + 3.019767541029976052e-03, + 3.013096979920429352e-03, + 3.006421839009119131e-03, + 2.999742129353068741e-03, + 2.993057862015916035e-03, + 2.986369048068484092e-03, + 2.979675698588233473e-03, + 2.972977824659470397e-03, + 2.966275437373537549e-03, + 2.959568547828476254e-03, + 2.952857167128759321e-03, + 2.946141306386431194e-03, + 2.939420976719523716e-03, + 2.932696189253018899e-03, + 2.925966955119065332e-03, + 2.919233285455710095e-03, + 2.912495191408550656e-03, + 2.905752684129108993e-03, + 2.899005774775844247e-03, + 2.892254474513998325e-03, + 2.885498794515189112e-03, + 2.878738745957629477e-03, + 2.871974340026315058e-03, + 2.865205587912490401e-03, + 2.858432500814244402e-03, + 2.851655089935953031e-03, + 2.844873366488477953e-03, + 2.838087341689391179e-03, + 2.831297026762561331e-03, + 2.824502432938010531e-03, + 2.817703571452938316e-03, + 2.810900453550159526e-03, + 2.804093090479219293e-03, + 2.797281493496154084e-03, + 2.790465673863035904e-03, + 2.783645642848599396e-03, + 2.776821411727625581e-03, + 2.769992991781217682e-03, + 2.763160394296958547e-03, + 2.756323630568461788e-03, + 2.749482711895582122e-03, + 2.742637649584611387e-03, + 2.735788454947888672e-03, + 2.728935139303630304e-03, + 2.722077713976975462e-03, + 2.715216190298290044e-03, + 2.708350579604900960e-03, + 2.701480893239779912e-03, + 2.694607142551754594e-03, + 2.687729338896486207e-03, + 2.680847493634919924e-03, + 2.673961618134337859e-03, + 2.667071723768187769e-03, + 2.660177821915588221e-03, + 2.653279923961956999e-03, + 2.646378041298424327e-03, + 2.639472185322057091e-03, + 2.632562367436082178e-03, + 2.625648599049380371e-03, + 2.618730891576701893e-03, + 2.611809256438921405e-03, + 2.604883705062572673e-03, + 2.597954248879716724e-03, + 2.591020899328976609e-03, + 2.584083667853852555e-03, + 2.577142565904526946e-03, + 2.570197604936158651e-03, + 2.563248796409950316e-03, + 2.556296151792951908e-03, + 2.549339682557686879e-03, + 2.542379400182358164e-03, + 2.535415316151028164e-03, + 2.528447441953110466e-03, + 2.521475789083921053e-03, + 2.514500369044160057e-03, + 2.507521193340080026e-03, + 2.500538273483755673e-03, + 2.493551620992621575e-03, + 2.486561247389331222e-03, + 2.479567164202815203e-03, + 2.472569382966704338e-03, + 2.465567915220340592e-03, + 2.458562772508958785e-03, + 2.451553966382377745e-03, + 2.444541508396745871e-03, + 2.437525410112831130e-03, + 2.430505683097074470e-03, + 2.423482338921416780e-03, + 2.416455389162905972e-03, + 2.409424845403899083e-03, + 2.402390719232272171e-03, + 2.395353022240872577e-03, + 2.388311766028106131e-03, + 2.381266962197382039e-03, + 2.374218622357314977e-03, + 2.367166758121979232e-03, + 2.360111381110444658e-03, + 2.353052502946627496e-03, + 2.345990135260381075e-03, + 2.338924289685885127e-03, + 2.331854977862730851e-03, + 2.324782211435753084e-03, + 2.317706002054548912e-03, + 2.310626361374049260e-03, + 2.303543301053988940e-03, + 2.296456832759097028e-03, + 2.289366968159342770e-03, + 2.282273718929404317e-03, + 2.275177096748931971e-03, + 2.268077113302713419e-03, + 2.260973780280155047e-03, + 2.253867109375852235e-03, + 2.246757112289120978e-03, + 2.239643800723814440e-03, + 2.232527186389320854e-03, + 2.225407280999381742e-03, + 2.218284096272278832e-03, + 2.211157643931868817e-03, + 2.204027935705972236e-03, + 2.196894983327460273e-03, + 2.189758798534087361e-03, + 2.182619393067972494e-03, + 2.175476778676241080e-03, + 2.168330967110438604e-03, + 2.161181970126752668e-03, + 2.154029799486220295e-03, + 2.146874466954252179e-03, + 2.139715984300836950e-03, + 2.132554363300756713e-03, + 2.125389615733028464e-03, + 2.118221753381503009e-03, + 2.111050788034390079e-03, + 2.103876731484049731e-03, + 2.096699595528110378e-03, + 2.089519391967855928e-03, + 2.082336132609307819e-03, + 2.075149829263056751e-03, + 2.067960493743843751e-03, + 2.060768137870779611e-03, + 2.053572773467556099e-03, + 2.046374412361886934e-03, + 2.039173066386107576e-03, + 2.031968747376611435e-03, + 2.024761467174060643e-03, + 2.017551237623600724e-03, + 2.010338070574470715e-03, + 2.003121977879777221e-03, + 1.995902971397558231e-03, + 1.988681062989388834e-03, + 1.981456264521383893e-03, + 1.974228587863650301e-03, + 1.966998044890071878e-03, + 1.959764647479446485e-03, + 1.952528407513848653e-03, + 1.945289336879708593e-03, + 1.938047447467686202e-03, + 1.930802751172188813e-03, + 1.923555259891656342e-03, + 1.916304985528716545e-03, + 1.909051939989657443e-03, + 1.901796135185018430e-03, + 1.894537583029023021e-03, + 1.887276295439795472e-03, + 1.880012284339583478e-03, + 1.872745561654336850e-03, + 1.865476139313521683e-03, + 1.858204029251243807e-03, + 1.850929243404587574e-03, + 1.843651793714771829e-03, + 1.836371692126911176e-03, + 1.829088950589561474e-03, + 1.821803581055326127e-03, + 1.814515595480264325e-03, + 1.807225005824124797e-03, + 1.799931824050568507e-03, + 1.792636062126660166e-03, + 1.785337732023081379e-03, + 1.778036845714384357e-03, + 1.770733415178365241e-03, + 1.763427452396729590e-03, + 1.756118969354557649e-03, + 1.748807978040136085e-03, + 1.741494490445997514e-03, + 1.734178518567680832e-03, + 1.726860074403933085e-03, + 1.719539169957791944e-03, + 1.712215817234887189e-03, + 1.704890028244598638e-03, + 1.697561814999858825e-03, + 1.690231189516646455e-03, + 1.682898163814622186e-03, + 1.675562749916520607e-03, + 1.668224959848416946e-03, + 1.660884805639891663e-03, + 1.653542299323578759e-03, + 1.646197452935353571e-03, + 1.638850278514571287e-03, + 1.631500788103488640e-03, + 1.624148993747863683e-03, + 1.616794907496480697e-03, + 1.609438541400950475e-03, + 1.602079907516827271e-03, + 1.594719017901977294e-03, + 1.587355884617678084e-03, + 1.579990519728459789e-03, + 1.572622935301650664e-03, + 1.565253143407626443e-03, + 1.557881156120019149e-03, + 1.550506985515131414e-03, + 1.543130643672581794e-03, + 1.535752142674682219e-03, + 1.528371494606699721e-03, + 1.520988711557058745e-03, + 1.513603805616915059e-03, + 1.506216788879984449e-03, + 1.498827673443573144e-03, + 1.491436471407167055e-03, + 1.484043194873497541e-03, + 1.476647855947912143e-03, + 1.469250466738224528e-03, + 1.461851039355821892e-03, + 1.454449585914013941e-03, + 1.447046118529160888e-03, + 1.439640649320480040e-03, + 1.432233190409636829e-03, + 1.424823753920945613e-03, + 1.417412351981613616e-03, + 1.409998996721141366e-03, + 1.402583700271959341e-03, + 1.395166474768829920e-03, + 1.387747332349089160e-03, + 1.380326285152848028e-03, + 1.372903345322579313e-03, + 1.365478525002935270e-03, + 1.358051836341867599e-03, + 1.350623291488805980e-03, + 1.343192902596608562e-03, + 1.335760681819737243e-03, + 1.328326641315385461e-03, + 1.320890793243291060e-03, + 1.313453149765313665e-03, + 1.306013723045650011e-03, + 1.298572525251076148e-03, + 1.291129568550421821e-03, + 1.283684865114797071e-03, + 1.276238427117828153e-03, + 1.268790266735053641e-03, + 1.261340396144567137e-03, + 1.253888827526419445e-03, + 1.246435573062845388e-03, + 1.238980644938495823e-03, + 1.231524055339996591e-03, + 1.224065816455768320e-03, + 1.216605940477165707e-03, + 1.209144439596637624e-03, + 1.201681326009691915e-03, + 1.194216611913046172e-03, + 1.186750309505783720e-03, + 1.179282430989154118e-03, + 1.171812988566145334e-03, + 1.164341994441715116e-03, + 1.156869460823008481e-03, + 1.149395399918853779e-03, + 1.141919823939982568e-03, + 1.134442745099261199e-03, + 1.126964175611091688e-03, + 1.119484127692056382e-03, + 1.112002613560391252e-03, + 1.104519645435814157e-03, + 1.097035235540656968e-03, + 1.089549396098183969e-03, + 1.082062139333746752e-03, + 1.074573477474578863e-03, + 1.067083422749217280e-03, + 1.059591987388539989e-03, + 1.052099183624348065e-03, + 1.044605023690425806e-03, + 1.037109519822343841e-03, + 1.029612684257037378e-03, + 1.022114529233023907e-03, + 1.014615066990636307e-03, + 1.007114309771594152e-03, + 9.996122698188042183e-04, + 9.921089593774390456e-04, + 9.846043906934841099e-04, + 9.770985760148103143e-04, + 9.695915275905737755e-04, + 9.620832576710186069e-04, + 9.545737785086335454e-04, + 9.470631023564655840e-04, + 9.395512414692498183e-04, + 9.320382081032480091e-04, + 9.245240145157946265e-04, + 9.170086729655313636e-04, + 9.094921957126412149e-04, + 9.019745950182348187e-04, + 8.944558831450101933e-04, + 8.869360723566428739e-04, + 8.794151749180093664e-04, + 8.718932030954338035e-04, + 8.643701691562330133e-04, + 8.568460853685397945e-04, + 8.493209640024567244e-04, + 8.417948173281826572e-04, + 8.342676576180093912e-04, + 8.267394971444661650e-04, + 8.192103481814599127e-04, + 8.116802230040922510e-04, + 8.041491338882214611e-04, + 7.966170931106992788e-04, + 7.890841129495902283e-04, + 7.815502056836583613e-04, + 7.740153835925980830e-04, + 7.664796589572578237e-04, + 7.589430440590439440e-04, + 7.514055511805606312e-04, + 7.438671926050164068e-04, + 7.363279806164402079e-04, + 7.287879274999247911e-04, + 7.212470455411848112e-04, + 7.137053470263607976e-04, + 7.061628442431884664e-04, + 6.986195494791194727e-04, + 6.910754750233206794e-04, + 6.835306331648132328e-04, + 6.759850361936150945e-04, + 6.684386964005648588e-04, + 6.608916260768740855e-04, + 6.533438375143677760e-04, + 6.457953430057055506e-04, + 6.382461548438655681e-04, + 6.306962853223754611e-04, + 6.231457467355414276e-04, + 6.155945513778418371e-04, + 6.080427115445785104e-04, + 6.004902395313581462e-04, + 5.929371476338919601e-04, + 5.853834481491680328e-04, + 5.778291533737348008e-04, + 5.702742756048709109e-04, + 5.627188271403884374e-04, + 5.551628202780270298e-04, + 5.476062673165298751e-04, + 5.400491805541899996e-04, + 5.324915722899247134e-04, + 5.249334548230879345e-04, + 5.173748404530323884e-04, + 5.098157414793343632e-04, + 5.022561702020354865e-04, + 4.946961389211103821e-04, + 4.871356599367038936e-04, + 4.795747455493593091e-04, + 4.720134080594136469e-04, + 4.644516597676501290e-04, + 4.568895129747707162e-04, + 4.493269799812077284e-04, + 4.417640730882856212e-04, + 4.342008045965165116e-04, + 4.266371868067547995e-04, + 4.190732320200137202e-04, + 4.115089525369387477e-04, + 4.039443606584609890e-04, + 3.963794686851840137e-04, + 3.888142889176251973e-04, + 3.812488336564396089e-04, + 3.736831152019008955e-04, + 3.661171458541286929e-04, + 3.585509379133260122e-04, + 3.509845036793366141e-04, + 3.434178554514537014e-04, + 3.358510055295848402e-04, + 3.282839662123727660e-04, + 3.207167497992030559e-04, + 3.131493685883256391e-04, + 3.055818348779321147e-04, + 2.980141609663898312e-04, + 2.904463591509570523e-04, + 2.828784417288563173e-04, + 2.753104209970901268e-04, + 2.677423092519125563e-04, + 2.601741187894830308e-04, + 2.526058619052585206e-04, + 2.450375508942252353e-04, + 2.374691980511309415e-04, + 2.299008156699616995e-04, + 2.223324160441712534e-04, + 2.147640114669173601e-04, + 2.071956142306173208e-04, + 1.996272366267622567e-04, + 1.920588909470762572e-04, + 1.844905894816400321e-04, + 1.769223445208977701e-04, + 1.693541683537798967e-04, + 1.617860732688633876e-04, + 1.542180715541854484e-04, + 1.466501754967991001e-04, + 1.390823973830086953e-04, + 1.315147494986018825e-04, + 1.239472441282384691e-04, + 1.163798935561079765e-04, + 1.088127100653155473e-04, + 1.012457059381184106e-04, + 9.367889345615745345e-05, + 8.611228490001566625e-05, + 7.854589254902909852e-05, + 7.097972868244928617e-05, + 6.341380557773509106e-05, + 5.584813551171434226e-05, + 4.828273076039449373e-05, + 4.071760359835326201e-05, + 3.315276629981463592e-05, + 2.558823113719527989e-05, + 1.802401038218109258e-05, + 1.046011630553871484e-05, + 2.896561176673855495e-06, +-4.666642736135535802e-06, +-1.222948316550609307e-05, +-1.979194784555928738e-05, +-2.735402451126656449e-05, +-3.491570089905972525e-05, +-4.247696474659748758e-05, +-5.003780379253265067e-05, +-5.759820577695346010e-05, +-6.515815844157195748e-05, +-7.271764952856351824e-05, +-8.027666678227315543e-05, +-8.783519794805462379e-05, +-9.539323077245966728e-05, +-1.029507530037617971e-04, +-1.105077523913048623e-04, +-1.180642166861090378e-04, +-1.256201336406416642e-04, +-1.331754910085817189e-04, +-1.407302765453456402e-04, +-1.482844780078548883e-04, +-1.558380831543035598e-04, +-1.633910797445971644e-04, +-1.709434555405437426e-04, +-1.784951983046926041e-04, +-1.860462958022072598e-04, +-1.935967357988645807e-04, +-2.011465060629273236e-04, +-2.086955943640680065e-04, +-2.162439884731384612e-04, +-2.237916761634480261e-04, +-2.313386452096967459e-04, +-2.388848833881528826e-04, +-2.464303784771891071e-04, +-2.539751182566179653e-04, +-2.615190905083105777e-04, +-2.690622830159570037e-04, +-2.766046835648375019e-04, +-2.841462799423432185e-04, +-2.916870599377489924e-04, +-2.992270113419754273e-04, +-3.067661219480332518e-04, +-3.143043795512069833e-04, +-3.218417719479032342e-04, +-3.293782869375140761e-04, +-3.369139123204232459e-04, +-3.444486358998731425e-04, +-3.519824454808092294e-04, +-3.595153288700658669e-04, +-3.670472738768084504e-04, +-3.745782683122996014e-04, +-3.821082999896683956e-04, +-3.896373567245139924e-04, +-3.971654263342602091e-04, +-4.046924966387552476e-04, +-4.122185554600447163e-04, +-4.197435906221405329e-04, +-4.272675899514554723e-04, +-4.347905412769939321e-04, +-4.423124324291932458e-04, +-4.498332512416290782e-04, +-4.573529855499348018e-04, +-4.648716231915776083e-04, +-4.723891520072988175e-04, +-4.799055598392051934e-04, +-4.874208345326385425e-04, +-4.949349639350135574e-04, +-5.024479358960112383e-04, +-5.099597382680153392e-04, +-5.174703589058795346e-04, +-5.249797856666987622e-04, +-5.324880064104118215e-04, +-5.399950089991508535e-04, +-5.475007812978525045e-04, +-5.550053111740218962e-04, +-5.625085864974982202e-04, +-5.700105951408995873e-04, +-5.775113249798054975e-04, +-5.850107638916047679e-04, +-5.925088997571928504e-04, +-6.000057204598150968e-04, +-6.075012138852570361e-04, +-6.149953679223614305e-04, +-6.224881704623837176e-04, +-6.299796093995961273e-04, +-6.374696726310541449e-04, +-6.449583480563625404e-04, +-6.524456235782059767e-04, +-6.599314871021089678e-04, +-6.674159265362073282e-04, +-6.748989297918558689e-04, +-6.823804847829700697e-04, +-6.898605794265586389e-04, +-6.973392016429055514e-04, +-7.048163393544985313e-04, +-7.122919804873075432e-04, +-7.197661129705534237e-04, +-7.272387247356384239e-04, +-7.347098037178352884e-04, +-7.421793378551459156e-04, +-7.496473150884749382e-04, +-7.571137233621629339e-04, +-7.645785506233243036e-04, +-7.720417848224686271e-04, +-7.795034139132520556e-04, +-7.869634258522568938e-04, +-7.944218085995076797e-04, +-8.018785501182425267e-04, +-8.093336383746800198e-04, +-8.167870613386268028e-04, +-8.242388069828238042e-04, +-8.316888632834664374e-04, +-8.391372182203984563e-04, +-8.465838597759545690e-04, +-8.540287759366537454e-04, +-8.614719546920462760e-04, +-8.689133840349053508e-04, +-8.763530519616607398e-04, +-8.837909464721637387e-04, +-8.912270555694667496e-04, +-8.986613672604088594e-04, +-9.060938695549929653e-04, +-9.135245504669678831e-04, +-9.209533980136005559e-04, +-9.283804002154558534e-04, +-9.358055450968243974e-04, +-9.432288206859094784e-04, +-9.506502150136788860e-04, +-9.580697161157196527e-04, +-9.654873120303434112e-04, +-9.729029908000141804e-04, +-9.803167404711218749e-04, +-9.877285490929256419e-04, +-9.951384047192242920e-04, +-1.002546295407219729e-03, +-1.009952209217703867e-03, +-1.017356134215486457e-03, +-1.024758058469174126e-03, +-1.032157970050927515e-03, +-1.039555857037077107e-03, +-1.046951707507466200e-03, +-1.054345509546055241e-03, +-1.061737251240691760e-03, +-1.069126920682890274e-03, +-1.076514505968239948e-03, +-1.083899995196618837e-03, +-1.091283376471040940e-03, +-1.098664637899325006e-03, +-1.106043767592967400e-03, +-1.113420753667316221e-03, +-1.120795584242093024e-03, +-1.128168247440746634e-03, +-1.135538731391058350e-03, +-1.142907024224896258e-03, +-1.150273114078006640e-03, +-1.157636989090523759e-03, +-1.164998637406725697e-03, +-1.172358047174822939e-03, +-1.179715206547546445e-03, +-1.187070103681513817e-03, +-1.194422726737739970e-03, +-1.201773063881809295e-03, +-1.209121103282849571e-03, +-1.216466833114761021e-03, +-1.223810241555992745e-03, +-1.231151316788516416e-03, +-1.238490046999455620e-03, +-1.245826420379971943e-03, +-1.253160425125449074e-03, +-1.260492049436003894e-03, +-1.267821281515843761e-03, +-1.275148109573853066e-03, +-1.282472521823392652e-03, +-1.289794506482047414e-03, +-1.297114051772139997e-03, +-1.304431145920514380e-03, +-1.311745777158306470e-03, +-1.319057933721527178e-03, +-1.326367603850434236e-03, +-1.333674775790045456e-03, +-1.340979437790311554e-03, +-1.348281578104995300e-03, +-1.355581184993328615e-03, +-1.362878246718875891e-03, +-1.370172751549731532e-03, +-1.377464687758936726e-03, +-1.384754043624256310e-03, +-1.392040807427953478e-03, +-1.399324967457376331e-03, +-1.406606512004330341e-03, +-1.413885429365660138e-03, +-1.421161707843035049e-03, +-1.428435335742703422e-03, +-1.435706301375945168e-03, +-1.442974593059235047e-03, +-1.450240199113200313e-03, +-1.457503107864042318e-03, +-1.464763307642477468e-03, +-1.472020786784339818e-03, +-1.479275533630747827e-03, +-1.486527536526998901e-03, +-1.493776783824214780e-03, +-1.501023263878195971e-03, +-1.508266965049643357e-03, +-1.515507875704548511e-03, +-1.522745984213993336e-03, +-1.529981278953900480e-03, +-1.537213748305651115e-03, +-1.544443380655422925e-03, +-1.551670164394799859e-03, +-1.558894087920534039e-03, +-1.566115139634326756e-03, +-1.573333307943249569e-03, +-1.580548581259929057e-03, +-1.587760948001432472e-03, +-1.594970396591054076e-03, +-1.602176915456413010e-03, +-1.609380493031228355e-03, +-1.616581117754222353e-03, +-1.623778778069305366e-03, +-1.630973462425965980e-03, +-1.638165159279087553e-03, +-1.645353857088705570e-03, +-1.652539544320499876e-03, +-1.659722209445594092e-03, +-1.666901840940314492e-03, +-1.674078427286782413e-03, +-1.681251956972283678e-03, +-1.688422418489764296e-03, +-1.695589800338031259e-03, +-1.702754091020695871e-03, +-1.709915279047421023e-03, +-1.717073352933691554e-03, +-1.724228301199780137e-03, +-1.731380112372544458e-03, +-1.738528774983513596e-03, +-1.745674277570675439e-03, +-1.752816608677358438e-03, +-1.759955756852430667e-03, +-1.767091710650708350e-03, +-1.774224458632722972e-03, +-1.781353989364522659e-03, +-1.788480291418161148e-03, +-1.795603353371460131e-03, +-1.802723163807810848e-03, +-1.809839711316735700e-03, +-1.816952984493289342e-03, +-1.824062971938517075e-03, +-1.831169662259677332e-03, +-1.838273044069109984e-03, +-1.845373105985859607e-03, +-1.852469836634588031e-03, +-1.859563224645741954e-03, +-1.866653258656046687e-03, +-1.873739927307894668e-03, +-1.880823219249910328e-03, +-1.887903123136737589e-03, +-1.894979627628830179e-03, +-1.902052721392923909e-03, +-1.909122393101830894e-03, +-1.916188631434211868e-03, +-1.923251425074991869e-03, +-1.930310762715558648e-03, +-1.937366633052709907e-03, +-1.944419024790056691e-03, +-1.951467926636980821e-03, +-1.958513327309237273e-03, +-1.965555215529096646e-03, +-1.972593580024295436e-03, +-1.979628409529589697e-03, +-1.986659692785709003e-03, +-1.993687418539515609e-03, +-2.000711575544399969e-03, +-2.007732152560087746e-03, +-2.014749138352416469e-03, +-2.021762521693884571e-03, +-2.028772291363071991e-03, +-2.035778436145175771e-03, +-2.042780944831822272e-03, +-2.049779806220831686e-03, +-2.056775009116617019e-03, +-2.063766542330396168e-03, +-2.070754394679074316e-03, +-2.077738554987003817e-03, +-2.084719012084122400e-03, +-2.091695754807685291e-03, +-2.098668772001208334e-03, +-2.105638052514608501e-03, +-2.112603585204638010e-03, +-2.119565358934654038e-03, +-2.126523362574422697e-03, +-2.133477585000577003e-03, +-2.140428015096414779e-03, +-2.147374641751698295e-03, +-2.154317453863186394e-03, +-2.161256440334046857e-03, +-2.168191590074418449e-03, +-2.175122892001187577e-03, +-2.182050335037789227e-03, +-2.188973908114594680e-03, +-2.195893600169093653e-03, +-2.202809400144820941e-03, +-2.209721296993087235e-03, +-2.216629279671133816e-03, +-2.223533337143844286e-03, +-2.230433458382690727e-03, +-2.237329632365913246e-03, +-2.244221848078897276e-03, +-2.251110094513987525e-03, +-2.257994360670250323e-03, +-2.264874635553973652e-03, +-2.271750908178444672e-03, +-2.278623167563736777e-03, +-2.285491402737260380e-03, +-2.292355602733171360e-03, +-2.299215756592855493e-03, +-2.306071853365085876e-03, +-2.312923882104979054e-03, +-2.319771831875531987e-03, +-2.326615691746587288e-03, +-2.333455450794978073e-03, +-2.340291098105097816e-03, +-2.347122622767924133e-03, +-2.353950013882321127e-03, +-2.360773260554094831e-03, +-2.367592351896123312e-03, +-2.374407277028772571e-03, +-2.381218025079703121e-03, +-2.388024585183627993e-03, +-2.394826946482814939e-03, +-2.401625098126847473e-03, +-2.408419029272438824e-03, +-2.415208729083964494e-03, +-2.421994186732887196e-03, +-2.428775391398205283e-03, +-2.435552332266654411e-03, +-2.442324998531633738e-03, +-2.449093379394765447e-03, +-2.455857464064816614e-03, +-2.462617241757896532e-03, +-2.469372701697931157e-03, +-2.476123833116042946e-03, +-2.482870625251145432e-03, +-2.489613067349675645e-03, +-2.496351148665429745e-03, +-2.503084858460022724e-03, +-2.509814186002668965e-03, +-2.516539120569977108e-03, +-2.523259651446345571e-03, +-2.529975767924139488e-03, +-2.536687459302635565e-03, +-2.543394714889702160e-03, +-2.550097524000026830e-03, +-2.556795875956749571e-03, +-2.563489760090475762e-03, +-2.570179165739400196e-03, +-2.576864082249737294e-03, +-2.583544498975469134e-03, +-2.590220405278175885e-03, +-2.596891790527575735e-03, +-2.603558644100904297e-03, +-2.610220955383494440e-03, +-2.616878713768564652e-03, +-2.623531908656987453e-03, +-2.630180529457780761e-03, +-2.636824565587872395e-03, +-2.643464006471940488e-03, +-2.650098841542745248e-03, +-2.656729060241334525e-03, +-2.663354652016007747e-03, +-2.669975606323962171e-03, +-2.676591912629536045e-03, +-2.683203560405847052e-03, +-2.689810539133787471e-03, +-2.696412838302180738e-03, +-2.703010447408150073e-03, +-2.709603355956951079e-03, +-2.716191553461729316e-03, +-2.722775029444086253e-03, +-2.729353773433468647e-03, +-2.735927774967744034e-03, +-2.742497023592958740e-03, +-2.749061508863164839e-03, +-2.755621220340768833e-03, +-2.762176147596738518e-03, +-2.768726280209546971e-03, +-2.775271607766693471e-03, +-2.781812119863666128e-03, +-2.788347806104129675e-03, +-2.794878656100439809e-03, +-2.801404659472702102e-03, +-2.807925805850040087e-03, +-2.814442084869672386e-03, +-2.820953486177046280e-03, +-2.827459999426264452e-03, +-2.833961614279825649e-03, +-2.840458320408478961e-03, +-2.846950107491698270e-03, +-2.853436965217156195e-03, +-2.859918883281225427e-03, +-2.866395851388804823e-03, +-2.872867859253080015e-03, +-2.879334896595923260e-03, +-2.885796953148069086e-03, +-2.892254018648069986e-03, +-2.898706082843835550e-03, +-2.905153135491542627e-03, +-2.911595166355886860e-03, +-2.918032165210454349e-03, +-2.924464121837223353e-03, +-2.930891026027050445e-03, +-2.937312867579471021e-03, +-2.943729636302518451e-03, +-2.950141322013153863e-03, +-2.956547914537065343e-03, +-2.962949403708490560e-03, +-2.969345779370577594e-03, +-2.975737031375529345e-03, +-2.982123149583642933e-03, +-2.988504123864877023e-03, +-2.994879944097190386e-03, +-3.001250600168077140e-03, +-3.007616081973682898e-03, +-3.013976379418617426e-03, +-3.020331482417025395e-03, +-3.026681380891654838e-03, +-3.033026064774070954e-03, +-3.039365524005041650e-03, +-3.045699748534024930e-03, +-3.052028728319664593e-03, +-3.058352453329576427e-03, +-3.064670913540198157e-03, +-3.070984098937174119e-03, +-3.077291999515220384e-03, +-3.083594605277861084e-03, +-3.089891906237854282e-03, +-3.096183892417311238e-03, +-3.102470553846751414e-03, +-3.108751880566645084e-03, +-3.115027862625767505e-03, +-3.121298490082733291e-03, +-3.127563753005034065e-03, +-3.133823641469210639e-03, +-3.140078145561214264e-03, +-3.146327255376200633e-03, +-3.152570961018345136e-03, +-3.158809252601343324e-03, +-3.165042120247870544e-03, +-3.171269554090088046e-03, +-3.177491544269440884e-03, +-3.183708080936475341e-03, +-3.189919154251189774e-03, +-3.196124754383221963e-03, +-3.202324871510821291e-03, +-3.208519495822345375e-03, +-3.214708617515295991e-03, +-3.220892226796167289e-03, +-3.227070313881634078e-03, +-3.233242868996959347e-03, +-3.239409882377548150e-03, +-3.245571344267993066e-03, +-3.251727244922216885e-03, +-3.257877574603832566e-03, +-3.264022323585985368e-03, +-3.270161482151106094e-03, +-3.276295040591457094e-03, +-3.282422989208570209e-03, +-3.288545318313750281e-03, +-3.294662018227892571e-03, +-3.300773079281266349e-03, +-3.306878491813912153e-03, +-3.312978246175763211e-03, +-3.319072332725700892e-03, +-3.325160741832982377e-03, +-3.331243463876233657e-03, +-3.337320489243638614e-03, +-3.343391808333369668e-03, +-3.349457411553039606e-03, +-3.355517289320207684e-03, +-3.361571432062159751e-03, +-3.367619830215775115e-03, +-3.373662474227896897e-03, +-3.379699354555160736e-03, +-3.385730461663813071e-03, +-3.391755786030212910e-03, +-3.397775318140265448e-03, +-3.403789048489875256e-03, +-3.409796967585080728e-03, +-3.415799065941144651e-03, +-3.421795334083891672e-03, +-3.427785762548871736e-03, +-3.433770341881136300e-03, +-3.439749062636312561e-03, +-3.445721915379704875e-03, +-3.451688890686467788e-03, +-3.457649979141989849e-03, +-3.463605171341433038e-03, +-3.469554457890144331e-03, +-3.475497829403531233e-03, +-3.481435276506824120e-03, +-3.487366789835530737e-03, +-3.493292360035239307e-03, +-3.499211977761422943e-03, +-3.505125633679926234e-03, +-3.511033318466461745e-03, +-3.516935022807017239e-03, +-3.522830737397957164e-03, +-3.528720452945198222e-03, +-3.534604160165464009e-03, +-3.540481849785435866e-03, +-3.546353512541855230e-03, +-3.552219139181886625e-03, +-3.558078720462932911e-03, +-3.563932247152473524e-03, +-3.569779710028483845e-03, +-3.575621099878986339e-03, +-3.581456407502495078e-03, +-3.587285623707805841e-03, +-3.593108739313897668e-03, +-3.598925745150161407e-03, +-3.604736632056642579e-03, +-3.610541390883101592e-03, +-3.616340012490432305e-03, +-3.622132487749255610e-03, +-3.627918807540958090e-03, +-3.633698962757560182e-03, +-3.639472944300879177e-03, +-3.645240743083847171e-03, +-3.651002350029560872e-03, +-3.656757756071517523e-03, +-3.662506952153888121e-03, +-3.668249929231356087e-03, +-3.673986678268940757e-03, +-3.679717190242446246e-03, +-3.685441456137996535e-03, +-3.691159466952452679e-03, +-3.696871213693294408e-03, +-3.702576687378346908e-03, +-3.708275879036235321e-03, +-3.713968779706431581e-03, +-3.719655380438417844e-03, +-3.725335672292958041e-03, +-3.731009646341250027e-03, +-3.736677293665012327e-03, +-3.742338605356949031e-03, +-3.747993572520195559e-03, +-3.753642186268798739e-03, +-3.759284437727562420e-03, +-3.764920318031837569e-03, +-3.770549818327919959e-03, +-3.776172929772913991e-03, +-3.781789643534495902e-03, +-3.787399950791410768e-03, +-3.793003842732976371e-03, +-3.798601310559476980e-03, +-3.804192345482277846e-03, +-3.809776938723050208e-03, +-3.815355081514723232e-03, +-3.820926765101289278e-03, +-3.826491980737018513e-03, +-3.832050719687733926e-03, +-3.837602973229943971e-03, +-3.843148732650950115e-03, +-3.848687989249284427e-03, +-3.854220734334179617e-03, +-3.859746959226070806e-03, +-3.865266655256345725e-03, +-3.870779813767279229e-03, +-3.876286426112280931e-03, +-3.881786483655866142e-03, +-3.887279977773387424e-03, +-3.892766899851513810e-03, +-3.898247241287737270e-03, +-3.903720993490776038e-03, +-3.909188147880711221e-03, +-3.914648695888102957e-03, +-3.920102628955280180e-03, +-3.925549938535457216e-03, +-3.930990616092905517e-03, +-3.936424653103234687e-03, +-3.941852041053241565e-03, +-3.947272771440741949e-03, +-3.952686835775012959e-03, +-3.958094225576311645e-03, +-3.963494932376323415e-03, +-3.968888947717970350e-03, +-3.974276263155270689e-03, +-3.979656870253645874e-03, +-3.985030760590030710e-03, +-3.990397925752091866e-03, +-3.995758357339516779e-03, +-4.001112046962647557e-03, +-4.006458986243592070e-03, +-4.011799166815914301e-03, +-4.017132580324021124e-03, +-4.022459218424254308e-03, +-4.027779072784125509e-03, +-4.033092135082460249e-03, +-4.038398397009654653e-03, +-4.043697850267547952e-03, +-4.048990486569257682e-03, +-4.054276297639609894e-03, +-4.059555275214642156e-03, +-4.064827411042071063e-03, +-4.070092696881113560e-03, +-4.075351124502327345e-03, +-4.080602685687896233e-03, +-4.085847372231808834e-03, +-4.091085175938976443e-03, +-4.096316088626609543e-03, +-4.101540102122784928e-03, +-4.106757208267753680e-03, +-4.111967398913144930e-03, +-4.117170665922056938e-03, +-4.122367001169412702e-03, +-4.127556396541791697e-03, +-4.132738843937213032e-03, +-4.137914335265571730e-03, +-4.143082862448408885e-03, +-4.148244417418812773e-03, +-4.153398992121780549e-03, +-4.158546578513828799e-03, +-4.163687168563263291e-03, +-4.168820754250419230e-03, +-4.173947327566834668e-03, +-4.179066880516157760e-03, +-4.184179405114007988e-03, +-4.189284893387192933e-03, +-4.194383337375039676e-03, +-4.199474729127974926e-03, +-4.204559060708867695e-03, +-4.209636324192146326e-03, +-4.214706511664015331e-03, +-4.219769615222704329e-03, +-4.224825626978299768e-03, +-4.229874539052650394e-03, +-4.234916343579638726e-03, +-4.239951032705078712e-03, +-4.244978598586535319e-03, +-4.249999033393735658e-03, +-4.255012329308132703e-03, +-4.260018478523256574e-03, +-4.265017473244839437e-03, +-4.270009305690037477e-03, +-4.274993968088557604e-03, +-4.279971452681908921e-03, +-4.284941751723487721e-03, +-4.289904857478979081e-03, +-4.294860762225865929e-03, +-4.299809458253874873e-03, +-4.304750937864788851e-03, +-4.309685193372316155e-03, +-4.314612217102421765e-03, +-4.319532001393177299e-03, +-4.324444538594624833e-03, +-4.329349821069004151e-03, +-4.334247841190966115e-03, +-4.339138591346793777e-03, +-4.344022063935365149e-03, +-4.348898251367493140e-03, +-4.353767146066262958e-03, +-4.358628740467197782e-03, +-4.363483027017472926e-03, +-4.368329998177040811e-03, +-4.373169646417865083e-03, +-4.378001964224052453e-03, +-4.382826944092132852e-03, +-4.387644578530920658e-03, +-4.392454860061322137e-03, +-4.397257781216774332e-03, +-4.402053334542786224e-03, +-4.406841512597375020e-03, +-4.411622307950867523e-03, +-4.416395713185750950e-03, +-4.421161720897011198e-03, +-4.425920323692184022e-03, +-4.430671514190644665e-03, +-4.435415285024813491e-03, +-4.440151628838861879e-03, +-4.444880538289883165e-03, +-4.449602006047196148e-03, +-4.454316024792450909e-03, +-4.459022587219882948e-03, +-4.463721686036185680e-03, +-4.468413313960362988e-03, +-4.473097463724047540e-03, +-4.477774128071380227e-03, +-4.482443299758807204e-03, +-4.487104971555523972e-03, +-4.491759136243024357e-03, +-4.496405786615441380e-03, +-4.501044915479659146e-03, +-4.505676515654657120e-03, +-4.510300579972279476e-03, +-4.514917101277109331e-03, +-4.519526072425793066e-03, +-4.524127486288206067e-03, +-4.528721335746203717e-03, +-4.533307613694772392e-03, +-4.537886313041366790e-03, +-4.542457426705915138e-03, +-4.547020947621199100e-03, +-4.551576868732656878e-03, +-4.556125182998237502e-03, +-4.560665883388714814e-03, +-4.565198962887613739e-03, +-4.569724414490962221e-03, +-4.574242231207735314e-03, +-4.578752406059400683e-03, +-4.583254932080322794e-03, +-4.587749802317775925e-03, +-4.592237009831303188e-03, +-4.596716547693726132e-03, +-4.601188408990436116e-03, +-4.605652586819540019e-03, +-4.610109074292130862e-03, +-4.614557864531916576e-03, +-4.618998950675578218e-03, +-4.623432325872660689e-03, +-4.627857983285350689e-03, +-4.632275916088891311e-03, +-4.636686117471379952e-03, +-4.641088580633614784e-03, +-4.645483298789424356e-03, +-4.649870265165688410e-03, +-4.654249473001808787e-03, +-4.658620915550430210e-03, +-4.662984586076935473e-03, +-4.667340477859722135e-03, +-4.671688584190336960e-03, +-4.676028898372799371e-03, +-4.680361413724593717e-03, +-4.684686123575975379e-03, +-4.689003021270109553e-03, +-4.693312100163334923e-03, +-4.697613353624834065e-03, +-4.701906775036954374e-03, +-4.706192357795047597e-03, +-4.710470095307384836e-03, +-4.714739980995428896e-03, +-4.719002008293710256e-03, +-4.723256170649664000e-03, +-4.727502461523958553e-03, +-4.731740874390461850e-03, +-4.735971402735739133e-03, +-4.740194040060020063e-03, +-4.744408779876054666e-03, +-4.748615615710240039e-03, +-4.752814541101910845e-03, +-4.757005549603442532e-03, +-4.761188634780539296e-03, +-4.765363790212060607e-03, +-4.769531009489911925e-03, +-4.773690286219386437e-03, +-4.777841614018764338e-03, +-4.781984986519708346e-03, +-4.786120397367060741e-03, +-4.790247840218817346e-03, +-4.794367308746288851e-03, +-4.798478796634056583e-03, +-4.802582297579841529e-03, +-4.806677805294709907e-03, +-4.810765313503175510e-03, +-4.814844815942611635e-03, +-4.818916306364221663e-03, +-4.822979778531956592e-03, +-4.827035226223550662e-03, +-4.831082643229905535e-03, +-4.835122023355122381e-03, +-4.839153360416807194e-03, +-4.843176648245909460e-03, +-4.847191880686630219e-03, +-4.851199051596699618e-03, +-4.855198154847055123e-03, +-4.859189184322180652e-03, +-4.863172133919920967e-03, +-4.867146997551422688e-03, +-4.871113769141349401e-03, +-4.875072442627944973e-03, +-4.879023011962478444e-03, +-4.882965471110071488e-03, +-4.886899814049147639e-03, +-4.890826034771525097e-03, +-4.894744127282676938e-03, +-4.898654085601226310e-03, +-4.902555903759698436e-03, +-4.906449575803922998e-03, +-4.910335095793145165e-03, +-4.914212457800312683e-03, +-4.918081655911838226e-03, +-4.921942684227572501e-03, +-4.925795536861085275e-03, +-4.929640207939332310e-03, +-4.933476691602949396e-03, +-4.937304982006156945e-03, +-4.941125073316629014e-03, +-4.944936959715704947e-03, +-4.948740635398497789e-03, +-4.952536094573322702e-03, +-4.956323331462510542e-03, +-4.960102340301867502e-03, +-4.963873115340720205e-03, +-4.967635650842271329e-03, +-4.971389941083125159e-03, +-4.975135980353729941e-03, +-4.978873762958194865e-03, +-4.982603283214150428e-03, +-4.986324535453074552e-03, +-4.990037514020139071e-03, +-4.993742213274076150e-03, +-4.997438627587400331e-03, +-5.001126751346562059e-03, +-5.004806578951272872e-03, +-5.008478104815523684e-03, +-5.012141323366528338e-03, +-5.015796229045660359e-03, +-5.019442816307975036e-03, +-5.023081079621990845e-03, +-5.026711013470440588e-03, +-5.030332612349626073e-03, +-5.033945870769590721e-03, +-5.037550783254345944e-03, +-5.041147344341546759e-03, +-5.044735548582783211e-03, +-5.048315390543497115e-03, +-5.051886864802826796e-03, +-5.055449965953874233e-03, +-5.059004688603610522e-03, +-5.062551027372761379e-03, +-5.066088976895945055e-03, +-5.069618531821863151e-03, +-5.073139686812713420e-03, +-5.076652436545042377e-03, +-5.080156775708812023e-03, +-5.083652699008326184e-03, +-5.087140201161612953e-03, +-5.090619276900551320e-03, +-5.094089920971106231e-03, +-5.097552128133137767e-03, +-5.101005893160370785e-03, +-5.104451210840635182e-03, +-5.107888075975560577e-03, +-5.111316483380882493e-03, +-5.114736427886299244e-03, +-5.118147904335393870e-03, +-5.121550907585818886e-03, +-5.124945432509364802e-03, +-5.128331473991498690e-03, +-5.131709026932032049e-03, +-5.135078086244705339e-03, +-5.138438646857152424e-03, +-5.141790703711315164e-03, +-5.145134251762810244e-03, +-5.148469285981715007e-03, +-5.151795801351953356e-03, +-5.155113792871502190e-03, +-5.158423255552509364e-03, +-5.161724184421207819e-03, +-5.165016574517809766e-03, +-5.168300420896779039e-03, +-5.171575718626555268e-03, +-5.174842462789782868e-03, +-5.178100648483239914e-03, +-5.181350270817732320e-03, +-5.184591324918269920e-03, +-5.187823805924153195e-03, +-5.191047708988470212e-03, +-5.194263029278837346e-03, +-5.197469761976905751e-03, +-5.200667902278378711e-03, +-5.203857445393342968e-03, +-5.207038386545913972e-03, +-5.210210720974477010e-03, +-5.213374443931677663e-03, +-5.216529550684196291e-03, +-5.219676036513103655e-03, +-5.222813896713650143e-03, +-5.225943126595228479e-03, +-5.229063721481602700e-03, +-5.232175676710636679e-03, +-5.235278987634527439e-03, +-5.238373649619872813e-03, +-5.241459658047183980e-03, +-5.244537008311562012e-03, +-5.247605695822326645e-03, +-5.250665716002866218e-03, +-5.253717064291131209e-03, +-5.256759736139305500e-03, +-5.259793727013752605e-03, +-5.262819032395287151e-03, +-5.265835647778941558e-03, +-5.268843568674146452e-03, +-5.271842790604693366e-03, +-5.274833309108569943e-03, +-5.277815119738247032e-03, +-5.280788218060519963e-03, +-5.283752599656468645e-03, +-5.286708260121680478e-03, +-5.289655195065915555e-03, +-5.292593400113464013e-03, +-5.295522870903067968e-03, +-5.298443603087552023e-03, +-5.301355592334491135e-03, +-5.304258834325699737e-03, +-5.307153324757351437e-03, +-5.310039059340121263e-03, +-5.312916033799136226e-03, +-5.315784243873808781e-03, +-5.318643685318163832e-03, +-5.321494353900516061e-03, +-5.324336245403718006e-03, +-5.327169355625083723e-03, +-5.329993680376303791e-03, +-5.332809215483572812e-03, +-5.335615956787703035e-03, +-5.338413900143663786e-03, +-5.341203041421270156e-03, +-5.343983376504524672e-03, +-5.346754901292054447e-03, +-5.349517611697139803e-03, +-5.352271503647231150e-03, +-5.355016573084591704e-03, +-5.357752815965908036e-03, +-5.360480228262310895e-03, +-5.363198805959560819e-03, +-5.365908545057966605e-03, +-5.368609441572260409e-03, +-5.371301491531877033e-03, +-5.373984690980669436e-03, +-5.376659035977139449e-03, +-5.379324522594364916e-03, +-5.381981146919913826e-03, +-5.384628905055947531e-03, +-5.387267793119393348e-03, +-5.389897807241397255e-03, +-5.392518943568078496e-03, +-5.395131198259984877e-03, +-5.397734567492208993e-03, +-5.400329047454608539e-03, +-5.402914634351505332e-03, +-5.405491324401941189e-03, +-5.408059113839613734e-03, +-5.410617998912691656e-03, +-5.413167975884166858e-03, +-5.415709041031611590e-03, +-5.418241190647176721e-03, +-5.420764421037780820e-03, +-5.423278728524900255e-03, +-5.425784109444694962e-03, +-5.428280560148160232e-03, +-5.430768077000667007e-03, +-5.433246656382530008e-03, +-5.435716294688680734e-03, +-5.438176988328568585e-03, +-5.440628733726615360e-03, +-5.443071527321781573e-03, +-5.445505365567733860e-03, +-5.447930244932918699e-03, +-5.450346161900429705e-03, +-5.452753112968106511e-03, +-5.455151094648578135e-03, +-5.457540103469094711e-03, +-5.459920135971725250e-03, +-5.462291188713259624e-03, +-5.464653258265204233e-03, +-5.467006341213878282e-03, +-5.469350434160262855e-03, +-5.471685533720182203e-03, +-5.474011636524278579e-03, +-5.476328739217747703e-03, +-5.478636838460798457e-03, +-5.480935930928314617e-03, +-5.483226013309934650e-03, +-5.485507082310141919e-03, +-5.487779134648234323e-03, +-5.490042167058215884e-03, +-5.492296176288978884e-03, +-5.494541159104155553e-03, +-5.496777112282271588e-03, +-5.499004032616614315e-03, +-5.501221916915290805e-03, +-5.503430762001236543e-03, +-5.505630564712314309e-03, +-5.507821321901008003e-03, +-5.510003030434904893e-03, +-5.512175687196186474e-03, +-5.514339289082002306e-03, +-5.516493833004477813e-03, +-5.518639315890301426e-03, +-5.520775734681293567e-03, +-5.522903086334013736e-03, +-5.525021367819882810e-03, +-5.527130576125248093e-03, +-5.529230708251320001e-03, +-5.531321761214142568e-03, +-5.533403732044746108e-03, +-5.535476617788930367e-03, +-5.537540415507464023e-03, +-5.539595122276030036e-03, +-5.541640735185153661e-03, +-5.543677251340287451e-03, +-5.545704667861893651e-03, +-5.547722981885122411e-03, +-5.549732190560325261e-03, +-5.551732291052485259e-03, +-5.553723280541754750e-03, +-5.555705156223126641e-03, +-5.557677915306448273e-03, +-5.559641555016631327e-03, +-5.561596072593491362e-03, +-5.563541465291722658e-03, +-5.565477730381044805e-03, +-5.567404865146134176e-03, +-5.569322866886533725e-03, +-5.571231732916877635e-03, +-5.573131460566626769e-03, +-5.575022047180299388e-03, +-5.576903490117439931e-03, +-5.578775786752392628e-03, +-5.580638934474596406e-03, +-5.582492930688539787e-03, +-5.584337772813472052e-03, +-5.586173458283931470e-03, +-5.587999984549137274e-03, +-5.589817349073552578e-03, +-5.591625549336539172e-03, +-5.593424582832418231e-03, +-5.595214447070589146e-03, +-5.596995139575481823e-03, +-5.598766657886420500e-03, +-5.600528999557842329e-03, +-5.602282162159232318e-03, +-5.604026143274976751e-03, +-5.605760940504603447e-03, +-5.607486551462576192e-03, +-5.609202973778469950e-03, +-5.610910205096903206e-03, +-5.612608243077392249e-03, +-5.614297085394667763e-03, +-5.615976729738433697e-03, +-5.617647173813408029e-03, +-5.619308415339418182e-03, +-5.620960452051303007e-03, +-5.622603281698970897e-03, +-5.624236902047420605e-03, +-5.625861310876635428e-03, +-5.627476505981753203e-03, +-5.629082485172950956e-03, +-5.630679246275417139e-03, +-5.632266787129470466e-03, +-5.633845105590587661e-03, +-5.635414199529110296e-03, +-5.636974066830713163e-03, +-5.638524705395916818e-03, +-5.640066113140478760e-03, +-5.641598287995282408e-03, +-5.643121227906129807e-03, +-5.644634930834078156e-03, +-5.646139394755249862e-03, +-5.647634617660794373e-03, +-5.649120597557039103e-03, +-5.650597332465410495e-03, +-5.652064820422386324e-03, +-5.653523059479645743e-03, +-5.654972047703889747e-03, +-5.656411783176982545e-03, +-5.657842263995937690e-03, +-5.659263488272798376e-03, +-5.660675454134795302e-03, +-5.662078159724351009e-03, +-5.663471603198810128e-03, +-5.664855782730893879e-03, +-5.666230696508245575e-03, +-5.667596342733776695e-03, +-5.668952719625512497e-03, +-5.670299825416552988e-03, +-5.671637658355188280e-03, +-5.672966216704893386e-03, +-5.674285498744186841e-03, +-5.675595502766815452e-03, +-5.676896227081647608e-03, +-5.678187670012692367e-03, +-5.679469829899137616e-03, +-5.680742705095291091e-03, +-5.682006293970647166e-03, +-5.683260594909886852e-03, +-5.684505606312764171e-03, +-5.685741326594245804e-03, +-5.686967754184540577e-03, +-5.688184887528848800e-03, +-5.689392725087741298e-03, +-5.690591265336750020e-03, +-5.691780506766766154e-03, +-5.692960447883770383e-03, +-5.694131087208872781e-03, +-5.695292423278448986e-03, +-5.696444454644019641e-03, +-5.697587179872260800e-03, +-5.698720597545052502e-03, +-5.699844706259488310e-03, +-5.700959504627771228e-03, +-5.702064991277367226e-03, +-5.703161164850887276e-03, +-5.704248024006137660e-03, +-5.705325567416151197e-03, +-5.706393793769071014e-03, +-5.707452701768335294e-03, +-5.708502290132537633e-03, +-5.709542557595407089e-03, +-5.710573502905970378e-03, +-5.711595124828400087e-03, +-5.712607422142033757e-03, +-5.713610393641536944e-03, +-5.714604038136620462e-03, +-5.715588354452322273e-03, +-5.716563341428814067e-03, +-5.717528997921505346e-03, +-5.718485322800993115e-03, +-5.719432314953157293e-03, +-5.720369973278967290e-03, +-5.721298296694687577e-03, +-5.722217284131761450e-03, +-5.723126934536857009e-03, +-5.724027246871897512e-03, +-5.724918220113908718e-03, +-5.725799853255259149e-03, +-5.726672145303489218e-03, +-5.727535095281290414e-03, +-5.728388702226683109e-03, +-5.729232965192830943e-03, +-5.730067883248154449e-03, +-5.730893455476267738e-03, +-5.731709680976036607e-03, +-5.732516558861536042e-03, +-5.733314088262051085e-03, +-5.734102268322126272e-03, +-5.734881098201487573e-03, +-5.735650577075142136e-03, +-5.736410704133244713e-03, +-5.737161478581267668e-03, +-5.737902899639830967e-03, +-5.738634966544839226e-03, +-5.739357678547400178e-03, +-5.740071034913831610e-03, +-5.740775034925724683e-03, +-5.741469677879900563e-03, +-5.742154963088343632e-03, +-5.742830889878352413e-03, +-5.743497457592384309e-03, +-5.744154665588185708e-03, +-5.744802513238723464e-03, +-5.745440999932164942e-03, +-5.746070125071928332e-03, +-5.746689888076694785e-03, +-5.747300288380311276e-03, +-5.747901325431918097e-03, +-5.748492998695880346e-03, +-5.749075307651754958e-03, +-5.749648251794396529e-03, +-5.750211830633815066e-03, +-5.750766043695326908e-03, +-5.751310890519471461e-03, +-5.751846370661948746e-03, +-5.752372483693785933e-03, +-5.752889229201206371e-03, +-5.753396606785640861e-03, +-5.753894616063808323e-03, +-5.754383256667613446e-03, +-5.754862528244223882e-03, +-5.755332430456025147e-03, +-5.755792962980638833e-03, +-5.756244125510926075e-03, +-5.756685917754984089e-03, +-5.757118339436113202e-03, +-5.757541390292883650e-03, +-5.757955070079080924e-03, +-5.758359378563709247e-03, +-5.758754315531051417e-03, +-5.759139880780543910e-03, +-5.759516074126937342e-03, +-5.759882895400156820e-03, +-5.760240344445364397e-03, +-5.760588421122962537e-03, +-5.760927125308591516e-03, +-5.761256456893104269e-03, +-5.761576415782573325e-03, +-5.761887001898339383e-03, +-5.762188215176915033e-03, +-5.762480055570068024e-03, +-5.762762523044794374e-03, +-5.763035617583306229e-03, +-5.763299339183055280e-03, +-5.763553687856685925e-03, +-5.763798663632088183e-03, +-5.764034266552360390e-03, +-5.764260496675848236e-03, +-5.764477354076078842e-03, +-5.764684838841834490e-03, +-5.764882951077091033e-03, +-5.765071690901056069e-03, +-5.765251058448132501e-03, +-5.765421053867996609e-03, +-5.765581677325447990e-03, +-5.765732929000585635e-03, +-5.765874809088663080e-03, +-5.766007317800186417e-03, +-5.766130455360853578e-03, +-5.766244222011556939e-03, +-5.766348618008424950e-03, +-5.766443643622778774e-03, +-5.766529299141152226e-03, +-5.766605584865288313e-03, +-5.766672501112115809e-03, +-5.766730048213765739e-03, +-5.766778226517605202e-03, +-5.766817036386167120e-03, +-5.766846478197184926e-03, +-5.766866552343622061e-03, +-5.766877259233586100e-03, +-5.766878599290427634e-03, +-5.766870572952653533e-03, +-5.766853180674005007e-03, +-5.766826422923368271e-03, +-5.766790300184842198e-03, +-5.766744812957708827e-03, +-5.766689961756442905e-03, +-5.766625747110682397e-03, +-5.766552169565291805e-03, +-5.766469229680251142e-03, +-5.766376928030788641e-03, +-5.766275265207262794e-03, +-5.766164241815227402e-03, +-5.766043858475407291e-03, +-5.765914115823711321e-03, +-5.765775014511185549e-03, +-5.765626555204081752e-03, +-5.765468738583808851e-03, +-5.765301565346935518e-03, +-5.765125036205195376e-03, +-5.764939151885499144e-03, +-5.764743913129883462e-03, +-5.764539320695586354e-03, +-5.764325375354948343e-03, +-5.764102077895525214e-03, +-5.763869429119999541e-03, +-5.763627429846180684e-03, +-5.763376080907051634e-03, +-5.763115383150735176e-03, +-5.762845337440492162e-03, +-5.762565944654750999e-03, +-5.762277205687049535e-03, +-5.761979121446073222e-03, +-5.761671692855640375e-03, +-5.761354920854726454e-03, +-5.761028806397402481e-03, +-5.760693350452888821e-03, +-5.760348554005519615e-03, +-5.759994418054762734e-03, +-5.759630943615226713e-03, +-5.759258131716584427e-03, +-5.758875983403691917e-03, +-5.758484499736467831e-03, +-5.758083681789959336e-03, +-5.757673530654360342e-03, +-5.757254047434905674e-03, +-5.756825233251972561e-03, +-5.756387089241054612e-03, +-5.755939616552723653e-03, +-5.755482816352635797e-03, +-5.755016689821571343e-03, +-5.754541238155393146e-03, +-5.754056462565037937e-03, +-5.753562364276538880e-03, +-5.753058944531024704e-03, +-5.752546204584692811e-03, +-5.752024145708808413e-03, +-5.751492769189753100e-03, +-5.750952076328929435e-03, +-5.750402068442827738e-03, +-5.749842746863044300e-03, +-5.749274112936179904e-03, +-5.748696168023937833e-03, +-5.748108913503064896e-03, +-5.747512350765346216e-03, +-5.746906481217652941e-03, +-5.746291306281898006e-03, +-5.745666827395018786e-03, +-5.745033046009017860e-03, +-5.744389963590943934e-03, +-5.743737581622847602e-03, +-5.743075901601854202e-03, +-5.742404925040081425e-03, +-5.741724653464720836e-03, +-5.741035088417958954e-03, +-5.740336231456989388e-03, +-5.739628084154064017e-03, +-5.738910648096421860e-03, +-5.738183924886322042e-03, +-5.737447916141032514e-03, +-5.736702623492816178e-03, +-5.735948048588949966e-03, +-5.735184193091716169e-03, +-5.734411058678375549e-03, +-5.733628647041176876e-03, +-5.732836959887389894e-03, +-5.732035998939215109e-03, +-5.731225765933889611e-03, +-5.730406262623615951e-03, +-5.729577490775498820e-03, +-5.728739452171741076e-03, +-5.727892148609387002e-03, +-5.727035581900556498e-03, +-5.726169753872236909e-03, +-5.725294666366383643e-03, +-5.724410321240006906e-03, +-5.723516720364921900e-03, +-5.722613865627967401e-03, +-5.721701758930930297e-03, +-5.720780402190496147e-03, +-5.719849797338292553e-03, +-5.718909946320923851e-03, +-5.717960851099834936e-03, +-5.717002513651481266e-03, +-5.716034935967171868e-03, +-5.715058120053146534e-03, +-5.714072067930592302e-03, +-5.713076781635562790e-03, +-5.712072263218964316e-03, +-5.711058514746748457e-03, +-5.710035538299620614e-03, +-5.709003335973216083e-03, +-5.707961909878101793e-03, +-5.706911262139664417e-03, +-5.705851394898208383e-03, +-5.704782310308898624e-03, +-5.703704010541740636e-03, +-5.702616497781662006e-03, +-5.701519774228425673e-03, +-5.700413842096616925e-03, +-5.699298703615730127e-03, +-5.698174361030054237e-03, +-5.697040816598787291e-03, +-5.695898072595888088e-03, +-5.694746131310183743e-03, +-5.693584995045379224e-03, +-5.692414666119916845e-03, +-5.691235146867102031e-03, +-5.690046439635123264e-03, +-5.688848546786871678e-03, +-5.687641470700079832e-03, +-5.686425213767314774e-03, +-5.685199778395920792e-03, +-5.683965167008053244e-03, +-5.682721382040621314e-03, +-5.681468425945359127e-03, +-5.680206301188746830e-03, +-5.678935010252070432e-03, +-5.677654555631354155e-03, +-5.676364939837423747e-03, +-5.675066165395828421e-03, +-5.673758234846911983e-03, +-5.672441150745761648e-03, +-5.671114915662145602e-03, +-5.669779532180696871e-03, +-5.668435002900676541e-03, +-5.667081330436112528e-03, +-5.665718517415790044e-03, +-5.664346566483174396e-03, +-5.662965480296472572e-03, +-5.661575261528603749e-03, +-5.660175912867164601e-03, +-5.658767437014514297e-03, +-5.657349836687638328e-03, +-5.655923114618243916e-03, +-5.654487273552755676e-03, +-5.653042316252252300e-03, +-5.651588245492428393e-03, +-5.650125064063797435e-03, +-5.648652774771362184e-03, +-5.647171380434942538e-03, +-5.645680883888942216e-03, +-5.644181287982349624e-03, +-5.642672595578966839e-03, +-5.641154809557075676e-03, +-5.639627932809643251e-03, +-5.638091968244312441e-03, +-5.636546918783286522e-03, +-5.634992787363396829e-03, +-5.633429576936152192e-03, +-5.631857290467554185e-03, +-5.630275930938338259e-03, +-5.628685501343728276e-03, +-5.627086004693560538e-03, +-5.625477444012305477e-03, +-5.623859822338998261e-03, +-5.622233142727148594e-03, +-5.620597408245008725e-03, +-5.618952621975207423e-03, +-5.617298787015125548e-03, +-5.615635906476516143e-03, +-5.613963983485757703e-03, +-5.612283021183804739e-03, +-5.610593022726069815e-03, +-5.608893991282511149e-03, +-5.607185930037670782e-03, +-5.605468842190539265e-03, +-5.603742730954618112e-03, +-5.602007599557977044e-03, +-5.600263451243085722e-03, +-5.598510289267011504e-03, +-5.596748116901272864e-03, +-5.594976937431744846e-03, +-5.593196754159027693e-03, +-5.591407570397958528e-03, +-5.589609389477910584e-03, +-5.587802214742820101e-03, +-5.585986049550877540e-03, +-5.584160897274924838e-03, +-5.582326761302074634e-03, +-5.580483645033938386e-03, +-5.578631551886570859e-03, +-5.576770485290418085e-03, +-5.574900448690329503e-03, +-5.573021445545607404e-03, +-5.571133479329926259e-03, +-5.569236553531304104e-03, +-5.567330671652253454e-03, +-5.565415837209582682e-03, +-5.563492053734526988e-03, +-5.561559324772656458e-03, +-5.559617653883856120e-03, +-5.557667044642550583e-03, +-5.555707500637269494e-03, +-5.553739025471034381e-03, +-5.551761622761209464e-03, +-5.549775296139393237e-03, +-5.547780049251613624e-03, +-5.545775885758170987e-03, +-5.543762809333592154e-03, +-5.541740823666889762e-03, +-5.539709932461209241e-03, +-5.537670139434030907e-03, +-5.535621448317185576e-03, +-5.533563862856724462e-03, +-5.531497386812876671e-03, +-5.529422023960353649e-03, +-5.527337778087897287e-03, +-5.525244652998671964e-03, +-5.523142652510027763e-03, +-5.521031780453414597e-03, +-5.518912040674782069e-03, +-5.516783437034053841e-03, +-5.514645973405458111e-03, +-5.512499653677510256e-03, +-5.510344481752806403e-03, +-5.508180461548152669e-03, +-5.506007596994672709e-03, +-5.503825892037452101e-03, +-5.501635350635952944e-03, +-5.499435976763709412e-03, +-5.497227774408365922e-03, +-5.495010747571834990e-03, +-5.492784900270115088e-03, +-5.490550236533249008e-03, +-5.488306760405632645e-03, +-5.486054475945516262e-03, +-5.483793387225536185e-03, +-5.481523498332217803e-03, +-5.479244813366253991e-03, +-5.476957336442499907e-03, +-5.474661071689842888e-03, +-5.472356023251192039e-03, +-5.470042195283664720e-03, +-5.467719591958313322e-03, +-5.465388217460297009e-03, +-5.463048075988846154e-03, +-5.460699171757186013e-03, +-5.458341508992629529e-03, +-5.455975091936505345e-03, +-5.453599924844025094e-03, +-5.451216011984658105e-03, +-5.448823357641726338e-03, +-5.446421966112484185e-03, +-5.444011841708379547e-03, +-5.441592988754593262e-03, +-5.439165411590556054e-03, +-5.436729114569403831e-03, +-5.434284102058353251e-03, +-5.431830378438605444e-03, +-5.429367948105218514e-03, +-5.426896815467229830e-03, +-5.424416984947627411e-03, +-5.421928460983272725e-03, +-5.419431248024928448e-03, +-5.416925350537313971e-03, +-5.414410772998997853e-03, +-5.411887519902483686e-03, +-5.409355595754127694e-03, +-5.406815005074049399e-03, +-5.404265752396488973e-03, +-5.401707842269295491e-03, +-5.399141279254247860e-03, +-5.396566067927027061e-03, +-5.393982212877045275e-03, +-5.391389718707638445e-03, +-5.388788590035874584e-03, +-5.386178831492620563e-03, +-5.383560447722644457e-03, +-5.380933443384419528e-03, +-5.378297823150175391e-03, +-5.375653591706021188e-03, +-5.373000753751778179e-03, +-5.370339314000899082e-03, +-5.367669277180847111e-03, +-5.364990648032598973e-03, +-5.362303431311005696e-03, +-5.359607631784574049e-03, +-5.356903254235429249e-03, +-5.354190303459696598e-03, +-5.351468784266882189e-03, +-5.348738701480316125e-03, +-5.346000059937085734e-03, +-5.343252864487784033e-03, +-5.340497119996847133e-03, +-5.337732831342248060e-03, +-5.334960003415590429e-03, +-5.332178641122249825e-03, +-5.329388749381105787e-03, +-5.326590333124670180e-03, +-5.323783397299154847e-03, +-5.320967946864342372e-03, +-5.318143986793459448e-03, +-5.315311522073627899e-03, +-5.312470557705184677e-03, +-5.309621098702426052e-03, +-5.306763150092856478e-03, +-5.303896716917707276e-03, +-5.301021804231757090e-03, +-5.298138417103291122e-03, +-5.295246560614069904e-03, +-5.292346239859483693e-03, +-5.289437459948289656e-03, +-5.286520226002908510e-03, +-5.283594543159104463e-03, +-5.280660416566169968e-03, +-5.277717851386933522e-03, +-5.274766852797622627e-03, +-5.271807425987808278e-03, +-5.268839576160784868e-03, +-5.265863308533106149e-03, +-5.262878628334606915e-03, +-5.259885540808915613e-03, +-5.256884051212674588e-03, +-5.253874164816268663e-03, +-5.250855886903209313e-03, +-5.247829222770458192e-03, +-5.244794177728467031e-03, +-5.241750757100939115e-03, +-5.238698966224883923e-03, +-5.235638810450822696e-03, +-5.232570295142436288e-03, +-5.229493425676872212e-03, +-5.226408207444482694e-03, +-5.223314645848959117e-03, +-5.220212746307349369e-03, +-5.217102514249952021e-03, +-5.213983955120203573e-03, +-5.210857074375126879e-03, +-5.207721877484681496e-03, +-5.204578369932225980e-03, +-5.201426557214386057e-03, +-5.198266444840918439e-03, +-5.195098038334934609e-03, +-5.191921343232644079e-03, +-5.188736365083444595e-03, +-5.185543109450041835e-03, +-5.182341581908242109e-03, +-5.179131788046980114e-03, +-5.175913733468514091e-03, +-5.172687423788117911e-03, +-5.169452864634127912e-03, +-5.166210061648299386e-03, +-5.162959020485238457e-03, +-5.159699746812839230e-03, +-5.156432246312033126e-03, +-5.153156524676703008e-03, +-5.149872587614165442e-03, +-5.146580440844466392e-03, +-5.143280090100856537e-03, +-5.139971541129708006e-03, +-5.136654799690292331e-03, +-5.133329871555058870e-03, +-5.129996762509396284e-03, +-5.126655478351675906e-03, +-5.123306024893406994e-03, +-5.119948407958980000e-03, +-5.116582633385764571e-03, +-5.113208707024204103e-03, +-5.109826634737666545e-03, +-5.106436422402282210e-03, +-5.103038075907532709e-03, +-5.099631601155367976e-03, +-5.096217004061126543e-03, +-5.092794290552669044e-03, +-5.089363466570915977e-03, +-5.085924538069772245e-03, +-5.082477511015877358e-03, +-5.079022391388766759e-03, +-5.075559185180965500e-03, +-5.072087898397669922e-03, +-5.068608537057081587e-03, +-5.065121107190116712e-03, +-5.061625614840538877e-03, +-5.058122066064983310e-03, +-5.054610466932815509e-03, +-5.051090823526185013e-03, +-5.047563141940108675e-03, +-5.044027428282333615e-03, +-5.040483688673179363e-03, +-5.036931929246099907e-03, +-5.033372156146847555e-03, +-5.029804375534334231e-03, +-5.026228593579852577e-03, +-5.022644816467478415e-03, +-5.019053050394122785e-03, +-5.015453301569230971e-03, +-5.011845576214942963e-03, +-5.008229880566155909e-03, +-5.004606220870282986e-03, +-5.000974603387530089e-03, +-4.997335034390600061e-03, +-4.993687520164842748e-03, +-4.990032067008305303e-03, +-4.986368681231569989e-03, +-4.982697369157644898e-03, +-4.979018137122521656e-03, +-4.975330991474348832e-03, +-4.971635938573978376e-03, +-4.967932984794904035e-03, +-4.964222136522940428e-03, +-4.960503400156746068e-03, +-4.956776782107155492e-03, +-4.953042288797603401e-03, +-4.949299926664144610e-03, +-4.945549702155184295e-03, +-4.941791621731595092e-03, +-4.938025691866784750e-03, +-4.934251919046493164e-03, +-4.930470309769024832e-03, +-4.926680870545021608e-03, +-4.922883607897510401e-03, +-4.919078528362008998e-03, +-4.915265638486408968e-03, +-4.911444944830757955e-03, +-4.907616453967914537e-03, +-4.903780172482666982e-03, +-4.899936106972318725e-03, +-4.896084264046576470e-03, +-4.892224650327314274e-03, +-4.888357272448864109e-03, +-4.884482137057760860e-03, +-4.880599250812802173e-03, +-4.876708620385197639e-03, +-4.872810252458292975e-03, +-4.868904153727672372e-03, +-4.864990330901299877e-03, +-4.861068790699213209e-03, +-4.857139539853821270e-03, +-4.853202585109662147e-03, +-4.849257933223272143e-03, +-4.845305590963849308e-03, +-4.841345565112294136e-03, +-4.837377862461844473e-03, +-4.833402489817998325e-03, +-4.829419453998233698e-03, +-4.825428761832155182e-03, +-4.821430420161641403e-03, +-4.817424435840465986e-03, +-4.813410815734683532e-03, +-4.809389566722289608e-03, +-4.805360695693343051e-03, +-4.801324209550116885e-03, +-4.797280115206759184e-03, +-4.793228419589463940e-03, +-4.789169129636592498e-03, +-4.785102252298310994e-03, +-4.781027794536989346e-03, +-4.776945763326860377e-03, +-4.772856165653966039e-03, +-4.768759008516779314e-03, +-4.764654298925220625e-03, +-4.760542043901386418e-03, +-4.756422250479333189e-03, +-4.752294925704929167e-03, +-4.748160076635932376e-03, +-4.744017710342135485e-03, +-4.739867833905022330e-03, +-4.735710454418101852e-03, +-4.731545578986626199e-03, +-4.727373214727674001e-03, +-4.723193368770290876e-03, +-4.719006048255272590e-03, +-4.714811260334967301e-03, +-4.710609012174068327e-03, +-4.706399310948415453e-03, +-4.702182163846204896e-03, +-4.697957578066939803e-03, +-4.693725560821966278e-03, +-4.689486119334672007e-03, +-4.685239260839731655e-03, +-4.680984992583720958e-03, +-4.676723321824984882e-03, +-4.672454255833422519e-03, +-4.668177801890607652e-03, +-4.663893967289898905e-03, +-4.659602759336128365e-03, +-4.655304185345906023e-03, +-4.650998252647387324e-03, +-4.646684968580267958e-03, +-4.642364340496028460e-03, +-4.638036375757611553e-03, +-4.633701081739361426e-03, +-4.629358465827617015e-03, +-4.625008535419811682e-03, +-4.620651297925116793e-03, +-4.616286760764282994e-03, +-4.611914931369397348e-03, +-4.607535817184229415e-03, +-4.603149425663888641e-03, +-4.598755764274940587e-03, +-4.594354840495583868e-03, +-4.589946661815267649e-03, +-4.585531235734906751e-03, +-4.581108569766982261e-03, +-4.576678671435153826e-03, +-4.572241548274711548e-03, +-4.567797207832187401e-03, +-4.563345657665304929e-03, +-4.558886905343649716e-03, +-4.554420958447613806e-03, +-4.549947824569099131e-03, +-4.545467511311609456e-03, +-4.540980026289513118e-03, +-4.536485377128651048e-03, +-4.531983571466256973e-03, +-4.527474616950617411e-03, +-4.522958521241484536e-03, +-4.518435292009681525e-03, +-4.513904936937246544e-03, +-4.509367463717621829e-03, +-4.504822880055275522e-03, +-4.500271193665840441e-03, +-4.495712412276319653e-03, +-4.491146543624629367e-03, +-4.486573595460062978e-03, +-4.481993575542921569e-03, +-4.477406491644463603e-03, +-4.472812351547516413e-03, +-4.468211163045538586e-03, +-4.463602933943238392e-03, +-4.458987672056493115e-03, +-4.454365385212114871e-03, +-4.449736081247939942e-03, +-4.445099768012972762e-03, +-4.440456453367039834e-03, +-4.435806145181168773e-03, +-4.431148851337246564e-03, +-4.426484579728093283e-03, +-4.421813338257676342e-03, +-4.417135134840799102e-03, +-4.412449977402996791e-03, +-4.407757873881234731e-03, +-4.403058832222779898e-03, +-4.398352860386390076e-03, +-4.393639966341222718e-03, +-4.388920158067416942e-03, +-4.384193443556318182e-03, +-4.379459830809616025e-03, +-4.374719327840046780e-03, +-4.369971942671274645e-03, +-4.365217683337585530e-03, +-4.360456557884067469e-03, +-4.355688574366731181e-03, +-4.350913740852154453e-03, +-4.346132065417842964e-03, +-4.341343556151912829e-03, +-4.336548221153159119e-03, +-4.331746068531258827e-03, +-4.326937106406495911e-03, +-4.322121342909575684e-03, +-4.317298786182442727e-03, +-4.312469444377018887e-03, +-4.307633325656524265e-03, +-4.302790438194258570e-03, +-4.297940790174343585e-03, +-4.293084389791618216e-03, +-4.288221245251322769e-03, +-4.283351364769262884e-03, +-4.278474756571984741e-03, +-4.273591428896384749e-03, +-4.268701389989901229e-03, +-4.263804648110653198e-03, +-4.258901211527024028e-03, +-4.253991088518098602e-03, +-4.249074287373338053e-03, +-4.244150816392445319e-03, +-4.239220683886082454e-03, +-4.234283898174815049e-03, +-4.229340467589800916e-03, +-4.224390400472899376e-03, +-4.219433705175764000e-03, +-4.214470390061074261e-03, +-4.209500463501329899e-03, +-4.204523933879601195e-03, +-4.199540809589364168e-03, +-4.194551099034271591e-03, +-4.189554810628304780e-03, +-4.184551952795815231e-03, +-4.179542533971360684e-03, +-4.174526562599684305e-03, +-4.169504047136000056e-03, +-4.164474996045455790e-03, +-4.159439417803714387e-03, +-4.154397320896499254e-03, +-4.149348713819471166e-03, +-4.144293605079077403e-03, +-4.139232003191331381e-03, +-4.134163916682606285e-03, +-4.129089354089545728e-03, +-4.124008323958680382e-03, +-4.118920834846858184e-03, +-4.113826895320835814e-03, +-4.108726513957481653e-03, +-4.103619699343852983e-03, +-4.098506460076896743e-03, +-4.093386804763600451e-03, +-4.088260742021130115e-03, +-4.083128280476528392e-03, +-4.077989428766608769e-03, +-4.072844195538723178e-03, +-4.067692589449506922e-03, +-4.062534619166146763e-03, +-4.057370293365438960e-03, +-4.052199620733902032e-03, +-4.047022609968537431e-03, +-4.041839269775656003e-03, +-4.036649608871672491e-03, +-4.031453635982969359e-03, +-4.026251359845592348e-03, +-4.021042789205413540e-03, +-4.015827932818309166e-03, +-4.010606799449699909e-03, +-4.005379397875027080e-03, +-4.000145736879329346e-03, +-3.994905825257392788e-03, +-3.989659671813923503e-03, +-3.984407285363231015e-03, +-3.979148674729089501e-03, +-3.973883848745569589e-03, +-3.968612816255724304e-03, +-3.963335586112944758e-03, +-3.958052167179699002e-03, +-3.952762568328336071e-03, +-3.947466798440935933e-03, +-3.942164866408998103e-03, +-3.936856781133615119e-03, +-3.931542551525647744e-03, +-3.926222186505320781e-03, +-3.920895695002403480e-03, +-3.915563085956393422e-03, +-3.910224368316041199e-03, +-3.904879551039853493e-03, +-3.899528643095701453e-03, +-3.894171653460680189e-03, +-3.888808591121936230e-03, +-3.883439465075480979e-03, +-3.878064284326886331e-03, +-3.872683057891545318e-03, +-3.867295794793561454e-03, +-3.861902504067116562e-03, +-3.856503194755197053e-03, +-3.851097875910357640e-03, +-3.845686556594618121e-03, +-3.840269245879124674e-03, +-3.834845952844333303e-03, +-3.829416686580178978e-03, +-3.823981456185669269e-03, +-3.818540270769095121e-03, +-3.813093139448153149e-03, +-3.807640071349531474e-03, +-3.802181075609384602e-03, +-3.796716161372929669e-03, +-3.791245337794316335e-03, +-3.785768614037501520e-03, +-3.780285999274952697e-03, +-3.774797502688519591e-03, +-3.769303133469324892e-03, +-3.763802900817327102e-03, +-3.758296813941820573e-03, +-3.752784882060984043e-03, +-3.747267114402097476e-03, +-3.741743520201613622e-03, +-3.736214108704867445e-03, +-3.730678889166189754e-03, +-3.725137870849100190e-03, +-3.719591063025984995e-03, +-3.714038474977931787e-03, +-3.708480115995611229e-03, +-3.702915995377889687e-03, +-3.697346122433216135e-03, +-3.691770506478609954e-03, +-3.686189156839750260e-03, +-3.680602082851830263e-03, +-3.675009293858289613e-03, +-3.669410799211652707e-03, +-3.663806608273385574e-03, +-3.658196730413520309e-03, +-3.652581175011149900e-03, +-3.646959951453929930e-03, +-3.641333069138311465e-03, +-3.635700537469676360e-03, +-3.630062365861921360e-03, +-3.624418563737699227e-03, +-3.618769140528528463e-03, +-3.613114105674495799e-03, +-3.607453468624123062e-03, +-3.601787238835182925e-03, +-3.596115425773351894e-03, +-3.590438038913686125e-03, +-3.584755087739201120e-03, +-3.579066581741781154e-03, +-3.573372530421994094e-03, +-3.567672943288785654e-03, +-3.561967829859642894e-03, +-3.556257199660768989e-03, +-3.550541062226627870e-03, +-3.544819427100427342e-03, +-3.539092303833690605e-03, +-3.533359701986359472e-03, +-3.527621631127057615e-03, +-3.521878100832684638e-03, +-3.516129120688327170e-03, +-3.510374700288028654e-03, +-3.504614849233839580e-03, +-3.498849577135978821e-03, +-3.493078893613673665e-03, +-3.487302808293715663e-03, +-3.481521330811963334e-03, +-3.475734470811969994e-03, +-3.469942237945828137e-03, +-3.464144641874001597e-03, +-3.458341692265066211e-03, +-3.452533398795794382e-03, +-3.446719771151390138e-03, +-3.440900819025020756e-03, +-3.435076552118291639e-03, +-3.429246980140783149e-03, +-3.423412112810255304e-03, +-3.417571959852793058e-03, +-3.411726531002470201e-03, +-3.405875836001233132e-03, +-3.400019884599748705e-03, +-3.394158686556139615e-03, +-3.388292251636832245e-03, +-3.382420589616430030e-03, +-3.376543710277316208e-03, +-3.370661623410128697e-03, +-3.364774338813327284e-03, +-3.358881866293347580e-03, +-3.352984215664781432e-03, +-3.347081396749984009e-03, +-3.341173419379216050e-03, +-3.335260293390882817e-03, +-3.329342028631135115e-03, +-3.323418634953765206e-03, +-3.317490122220994805e-03, +-3.311556500302399123e-03, +-3.305617779075690522e-03, +-3.299673968426290044e-03, +-3.293725078247140923e-03, +-3.287771118439637100e-03, +-3.281812098912280980e-03, +-3.275848029581576379e-03, +-3.269878920371924440e-03, +-3.263904781215158299e-03, +-3.257925622051072601e-03, +-3.251941452826970311e-03, +-3.245952283497809294e-03, +-3.239958124026395738e-03, +-3.233958984382988636e-03, +-3.227954874545457212e-03, +-3.221945804499473046e-03, +-3.215931784238157919e-03, +-3.209912823761938965e-03, +-3.203888933079474585e-03, +-3.197860122206139157e-03, +-3.191826401165645012e-03, +-3.185787779988532784e-03, +-3.179744268713095151e-03, +-3.173695877385236327e-03, +-3.167642616058106899e-03, +-3.161584494792295946e-03, +-3.155521523656013190e-03, +-3.149453712724598932e-03, +-3.143381072081068324e-03, +-3.137303611815569267e-03, +-3.131221342025642621e-03, +-3.125134272816341031e-03, +-3.119042414299909739e-03, +-3.112945776595626556e-03, +-3.106844369830666624e-03, +-3.100738204139060275e-03, +-3.094627289661907709e-03, +-3.088511636548196479e-03, +-3.082391254953325242e-03, +-3.076266155040733533e-03, +-3.070136346980323165e-03, +-3.064001840949488655e-03, +-3.057862647132864389e-03, +-3.051718775722049234e-03, +-3.045570236915732740e-03, +-3.039417040919928023e-03, +-3.033259197947467400e-03, +-3.027096718218487241e-03, +-3.020929611960006863e-03, +-3.014757889406063842e-03, +-3.008581560797915239e-03, +-3.002400636383679815e-03, +-2.996215126418190575e-03, +-2.990025041163930659e-03, +-2.983830390889630809e-03, +-2.977631185871262073e-03, +-2.971427436391802911e-03, +-2.965219152740885319e-03, +-2.959006345215295288e-03, +-2.952789024118454998e-03, +-2.946567199760647456e-03, +-2.940340882459199518e-03, +-2.934110082538013073e-03, +-2.927874810327823086e-03, +-2.921635076166325101e-03, +-2.915390890397704694e-03, +-2.909142263373169605e-03, +-2.902889205450442760e-03, +-2.896631726993955259e-03, +-2.890369838375048041e-03, +-2.884103549971589811e-03, +-2.877832872167824380e-03, +-2.871557815355348185e-03, +-2.865278389931662662e-03, +-2.858994606301180387e-03, +-2.852706474875020808e-03, +-2.846414006070599554e-03, +-2.840117210312179206e-03, +-2.833816098030333703e-03, +-2.827510679662164315e-03, +-2.821200965651494801e-03, +-2.814886966448399558e-03, +-2.808568692509453429e-03, +-2.802246154297863539e-03, +-2.795919362283005687e-03, +-2.789588326940950404e-03, +-2.783253058754028408e-03, +-2.776913568210656689e-03, +-2.770569865806348994e-03, +-2.764221962042236105e-03, +-2.757869867426059832e-03, +-2.751513592472045085e-03, +-2.745153147700460112e-03, +-2.738788543637880619e-03, +-2.732419790817348058e-03, +-2.726046899777842709e-03, +-2.719669881064886493e-03, +-2.713288745229978753e-03, +-2.706903502830810496e-03, +-2.700514164431451741e-03, +-2.694120740601927810e-03, +-2.687723241918403647e-03, +-2.681321678963367264e-03, +-2.674916062325126236e-03, +-2.668506402598367147e-03, +-2.662092710383694594e-03, +-2.655674996287485899e-03, +-2.649253270922859952e-03, +-2.642827544908237826e-03, +-2.636397828868322461e-03, +-2.629964133433948179e-03, +-2.623526469241689064e-03, +-2.617084846934073644e-03, +-2.610639277159756185e-03, +-2.604189770573040949e-03, +-2.597736337834392201e-03, +-2.591278989609939812e-03, +-2.584817736571666611e-03, +-2.578352589397620454e-03, +-2.571883558771528248e-03, +-2.565410655382622477e-03, +-2.558933889926642141e-03, +-2.552453273104252421e-03, +-2.545968815622706109e-03, +-2.539480528194295803e-03, +-2.532988421537229074e-03, +-2.526492506375856584e-03, +-2.519992793439546682e-03, +-2.513489293463637333e-03, +-2.506982017189241831e-03, +-2.500470975362895781e-03, +-2.493956178736734912e-03, +-2.487437638068715380e-03, +-2.480915364122073408e-03, +-2.474389367665883865e-03, +-2.467859659474561963e-03, +-2.461326250328029364e-03, +-2.454789151011934050e-03, +-2.448248372317265217e-03, +-2.441703925040187607e-03, +-2.435155819983048954e-03, +-2.428604067952901558e-03, +-2.422048679762495854e-03, +-2.415489666230126887e-03, +-2.408927038179185017e-03, +-2.402360806438715371e-03, +-2.395790981842870534e-03, +-2.389217575231143871e-03, +-2.382640597448556011e-03, +-2.376060059345187336e-03, +-2.369475971776407834e-03, +-2.362888345603041031e-03, +-2.356297191690867425e-03, +-2.349702520911172224e-03, +-2.343104344140299958e-03, +-2.336502672259484475e-03, +-2.329897516155849876e-03, +-2.323288886720944676e-03, +-2.316676794851734930e-03, +-2.310061251450437267e-03, +-2.303442267424155032e-03, +-2.296819853685053061e-03, +-2.290194021150584926e-03, +-2.283564780742937395e-03, +-2.276932143389625435e-03, +-2.270296120022944914e-03, +-2.263656721580159514e-03, +-2.257013959003738388e-03, +-2.250367843240881714e-03, +-2.243718385243704139e-03, +-2.237065595969468541e-03, +-2.230409486380036110e-03, +-2.223750067442432313e-03, +-2.217087350128395425e-03, +-2.210421345414222572e-03, +-2.203752064281755928e-03, +-2.197079517716911661e-03, +-2.190403716710694754e-03, +-2.183724672259009045e-03, +-2.177042395362302485e-03, +-2.170356897025746672e-03, +-2.163668188259458038e-03, +-2.156976280077944029e-03, +-2.150281183500698991e-03, +-2.143582909551638646e-03, +-2.136881469259335146e-03, +-2.130176873657194884e-03, +-2.123469133783097238e-03, +-2.116758260679191175e-03, +-2.110044265392962103e-03, +-2.103327158975536182e-03, +-2.096606952483464920e-03, +-2.089883656977087160e-03, +-2.083157283521445882e-03, +-2.076427843186521519e-03, +-2.069695347046068400e-03, +-2.062959806178599198e-03, +-2.056221231667183704e-03, +-2.049479634599090175e-03, +-2.042735026065960104e-03, +-2.035987417164032438e-03, +-2.029236818993603204e-03, +-2.022483242659595375e-03, +-2.015726699271026736e-03, +-2.008967199941201140e-03, +-2.002204755787934890e-03, +-1.995439377933162957e-03, +-1.988671077502733846e-03, +-1.981899865627497707e-03, +-1.975125753441591119e-03, +-1.968348752084252487e-03, +-1.961568872698131981e-03, +-1.954786126430318495e-03, +-1.948000524432203688e-03, +-1.941212077859049822e-03, +-1.934420797870229367e-03, +-1.927626695629401296e-03, +-1.920829782304077403e-03, +-1.914030069065791873e-03, +-1.907227567090329610e-03, +-1.900422287557187832e-03, +-1.893614241650145051e-03, +-1.886803440556792050e-03, +-1.879989895468367955e-03, +-1.873173617580806919e-03, +-1.866354618093182078e-03, +-1.859532908208701716e-03, +-1.852708499134892491e-03, +-1.845881402082312495e-03, +-1.839051628266267970e-03, +-1.832219188905121528e-03, +-1.825384095221347508e-03, +-1.818546358441341373e-03, +-1.811705989795045230e-03, +-1.804863000516157513e-03, +-1.798017401842313392e-03, +-1.791169205014639821e-03, +-1.784318421277956979e-03, +-1.777465061880972126e-03, +-1.770609138075765476e-03, +-1.763750661118333165e-03, +-1.756889642268151183e-03, +-1.750026092787988026e-03, +-1.743160023944945528e-03, +-1.736291447008936643e-03, +-1.729420373253718691e-03, +-1.722546813956718145e-03, +-1.715670780398578744e-03, +-1.708792283863721151e-03, +-1.701911335639817767e-03, +-1.695027947017989627e-03, +-1.688142129293016078e-03, +-1.681253893762860987e-03, +-1.674363251728889579e-03, +-1.667470214496063379e-03, +-1.660574793372561605e-03, +-1.653676999669584065e-03, +-1.646776844702433403e-03, +-1.639874339788778427e-03, +-1.632969496250507007e-03, +-1.626062325411993525e-03, +-1.619152838601096989e-03, +-1.612241047149365510e-03, +-1.605326962390862550e-03, +-1.598410595663157449e-03, +-1.591491958307134167e-03, +-1.584571061666610733e-03, +-1.577647917088535919e-03, +-1.570722535923212799e-03, +-1.563794929523727815e-03, +-1.556865109246556404e-03, +-1.549933086451010279e-03, +-1.542998872499432147e-03, +-1.536062478757436187e-03, +-1.529123916593479139e-03, +-1.522183197378693337e-03, +-1.515240332487957035e-03, +-1.508295333298171823e-03, +-1.501348211190088426e-03, +-1.494398977546611881e-03, +-1.487447643753838245e-03, +-1.480494221200903899e-03, +-1.473538721279559014e-03, +-1.466581155384400013e-03, +-1.459621534913067321e-03, +-1.452659871265779166e-03, +-1.445696175845530632e-03, +-1.438730460058313537e-03, +-1.431762735312552869e-03, +-1.424793013019712198e-03, +-1.417821304593807740e-03, +-1.410847621451232718e-03, +-1.403871975011825729e-03, +-1.396894376697305380e-03, +-1.389914837932248667e-03, +-1.382933370144316491e-03, +-1.375949984762917921e-03, +-1.368964693220955974e-03, +-1.361977506953128891e-03, +-1.354988437396973571e-03, +-1.347997495992711613e-03, +-1.341004694182834286e-03, +-1.334010043412305491e-03, +-1.327013555128803103e-03, +-1.320015240782197253e-03, +-1.313015111824802081e-03, +-1.306013179711568509e-03, +-1.299009455899524136e-03, +-1.292003951848380182e-03, +-1.284996679020044457e-03, +-1.277987648878446160e-03, +-1.270976872890610537e-03, +-1.263964362525080284e-03, +-1.256950129252976328e-03, +-1.249934184547851030e-03, +-1.242916539885175354e-03, +-1.235897206742952092e-03, +-1.228876196601154684e-03, +-1.221853520941944054e-03, +-1.214829191249874830e-03, +-1.207803219011413087e-03, +-1.200775615715160127e-03, +-1.193746392852047854e-03, +-1.186715561914955617e-03, +-1.179683134398507461e-03, +-1.172649121800171295e-03, +-1.165613535618507252e-03, +-1.158576387354951203e-03, +-1.151537688512464710e-03, +-1.144497450595752730e-03, +-1.137455685112259782e-03, +-1.130412403570584196e-03, +-1.123367617481572283e-03, +-1.116321338358110607e-03, +-1.109273577714665849e-03, +-1.102224347067885021e-03, +-1.095173657936017800e-03, +-1.088121521839149420e-03, +-1.081067950299397775e-03, +-1.074012954840446133e-03, +-1.066956546987738938e-03, +-1.059898738268718384e-03, +-1.052839540212389870e-03, +-1.045778964349166305e-03, +-1.038717022211943855e-03, +-1.031653725334346402e-03, +-1.024589085252602949e-03, +-1.017523113503789045e-03, +-1.010455821626924646e-03, +-1.003387221162777444e-03, +-9.963173236534705966e-04, +-9.892461406426867818e-04, +-9.821736836758891524e-04, +-9.750999642997500725e-04, +-9.680249940627738822e-04, +-9.609487845147039482e-04, +-9.538713472067594529e-04, +-9.467926936918489829e-04, +-9.397128355241502915e-04, +-9.326317842589405133e-04, +-9.255495514536019779e-04, +-9.184661486664202640e-04, +-9.113815874567930166e-04, +-9.042958793862559269e-04, +-8.972090360167072438e-04, +-8.901210689122998143e-04, +-8.830319896376689556e-04, +-8.759418097590376904e-04, +-8.688505408440223496e-04, +-8.617581944612349954e-04, +-8.546647821804852999e-04, +-8.475703155730118050e-04, +-8.404748062109048019e-04, +-8.333782656677181464e-04, +-8.262807055178994020e-04, +-8.191821373370080902e-04, +-8.120825727019331808e-04, +-8.049820231904797948e-04, +-7.978805003811879253e-04, +-7.907780158544343123e-04, +-7.836745811908095004e-04, +-7.765702079722291463e-04, +-7.694649077817388621e-04, +-7.623586922030359736e-04, +-7.552515728210650731e-04, +-7.481435612214702800e-04, +-7.410346689907880121e-04, +-7.339249077166823659e-04, +-7.268142889874500698e-04, +-7.197028243922262659e-04, +-7.125905255212179384e-04, +-7.054774039652837855e-04, +-6.983634713157542417e-04, +-6.912487391655252212e-04, +-6.841332191072960721e-04, +-6.770169227353689187e-04, +-6.698998616442878792e-04, +-6.627820474290568821e-04, +-6.556634916861485158e-04, +-6.485442060119017953e-04, +-6.414242020036131945e-04, +-6.343034912593565602e-04, +-6.271820853774961969e-04, +-6.200599959572912013e-04, +-6.129372345983296168e-04, +-6.058138129007463587e-04, +-5.986897424654392952e-04, +-5.915650348935753934e-04, +-5.844397017868148241e-04, +-5.773137547475183694e-04, +-5.701872053783494125e-04, +-5.630600652820781302e-04, +-5.559323460626843438e-04, +-5.488040593235927632e-04, +-5.416752166695526678e-04, +-5.345458297048768376e-04, +-5.274159100345362713e-04, +-5.202854692639794507e-04, +-5.131545189987142715e-04, +-5.060230708445340999e-04, +-4.988911364077309269e-04, +-4.917587272945201987e-04, +-4.846258551116651003e-04, +-4.774925314658946644e-04, +-4.703587679641232141e-04, +-4.632245762136743042e-04, +-4.560899678218610816e-04, +-4.489549543958088547e-04, +-4.418195475434693654e-04, +-4.346837588724138004e-04, +-4.275475999900452411e-04, +-4.204110825046185177e-04, +-4.132742180234702501e-04, +-4.061370181549082319e-04, +-3.989994945064465125e-04, +-3.918616586858921468e-04, +-3.847235223011753009e-04, +-3.775850969599314007e-04, +-3.704463942697141772e-04, +-3.633074258382239458e-04, +-3.561682032727275034e-04, +-3.490287381806756362e-04, +-3.418890421691292512e-04, +-3.347491268449788188e-04, +-3.276090038151617014e-04, +-3.204686846862493969e-04, +-3.133281810642661526e-04, +-3.061875045557856351e-04, +-2.990466667663218116e-04, +-2.919056793014211215e-04, +-2.847645537664882987e-04, +-2.776233017662857417e-04, +-2.704819349055549780e-04, +-2.633404647884392182e-04, +-2.561989030187031237e-04, +-2.490572611999538211e-04, +-2.419155509351425494e-04, +-2.347737838267868120e-04, +-2.276319714771886545e-04, +-2.204901254878595764e-04, +-2.133482574601391771e-04, +-2.062063789946167337e-04, +-1.990645016913538420e-04, +-1.919226371501023146e-04, +-1.847807969698897707e-04, +-1.776389927488381145e-04, +-1.704972360852626987e-04, +-1.633555385760598997e-04, +-1.562139118178019440e-04, +-1.490723674065604011e-04, +-1.419309169374091304e-04, +-1.347895720050420326e-04, +-1.276483442031974469e-04, +-1.205072451248779457e-04, +-1.133662863625701568e-04, +-1.062254795077496351e-04, +-9.908483615109817783e-05, +-9.194436788272692567e-05, +-8.480408629159852407e-05, +-7.766400296614553846e-05, +-7.052412949377397100e-05, +-6.338447746068558695e-05, +-5.624505845297333832e-05, +-4.910588405501074767e-05, +-4.196696585054712173e-05, +-3.482831542253022331e-05, +-2.768994435268887723e-05, +-2.055186422175339878e-05, +-1.341408660967551052e-05, +-6.276623095052415029e-06, + 8.605147442553217477e-07, + 7.997315331699462329e-06, + 1.513376709182418254e-05, + 2.226985845004617246e-05, + 2.940557783307106489e-05, + 3.654091366907149781e-05, + 4.367585438667144222e-05, + 5.081038841631742992e-05, + 5.794450418926308635e-05, + 6.507819013814465225e-05, + 7.221143469715925352e-05, + 7.934422630096919305e-05, + 8.647655338631224159e-05, + 9.360840439090646484e-05, + 1.007397677536278293e-04, + 1.078706319149273763e-04, + 1.150009853166104103e-04, + 1.221308164016170704e-04, + 1.292601136145973774e-04, + 1.363888654012946342e-04, + 1.435170602091198231e-04, + 1.506446864869324747e-04, + 1.577717326848197886e-04, + 1.648981872545132114e-04, + 1.720240386495684411e-04, + 1.791492753242664529e-04, + 1.862738857353856813e-04, + 1.933978583403109285e-04, + 2.005211815987989596e-04, + 2.076438439718880668e-04, + 2.147658339220736830e-04, + 2.218871399137227907e-04, + 2.290077504128595486e-04, + 2.361276538869378253e-04, + 2.432468388053439176e-04, + 2.503652936391721198e-04, + 2.574830068610072333e-04, + 2.645999669454982993e-04, + 2.717161623687424461e-04, + 2.788315816088591105e-04, + 2.859462131457702152e-04, + 2.930600454609807266e-04, + 3.001730670379953677e-04, + 3.072852663624936085e-04, + 3.143966319212398259e-04, + 3.215071522036867845e-04, + 3.286168157008854170e-04, + 3.357256109056598148e-04, + 3.428335263131033583e-04, + 3.499405504199622945e-04, + 3.570466717252109598e-04, + 3.641518787298287600e-04, + 3.712561599365865280e-04, + 3.783595038505336563e-04, + 3.854618989787852133e-04, + 3.925633338302990318e-04, + 3.996637969164521247e-04, + 4.067632767504217144e-04, + 4.138617618476800081e-04, + 4.209592407261749346e-04, + 4.280557019052332024e-04, + 4.351511339071715873e-04, + 4.422455252561951111e-04, + 4.493388644785874285e-04, + 4.564311401031135532e-04, + 4.635223406608055658e-04, + 4.706124546847496220e-04, + 4.777014707106444253e-04, + 4.847893772762002537e-04, + 4.918761629217056723e-04, + 4.989618161898077111e-04, + 5.060463256252932356e-04, + 5.131296797755859453e-04, + 5.202118671905223233e-04, + 5.272928764221375061e-04, + 5.343726960252338396e-04, + 5.414513145567670035e-04, + 5.485287205763425761e-04, + 5.556049026463877718e-04, + 5.626798493310653957e-04, + 5.697535491978761866e-04, + 5.768259908165619286e-04, + 5.838971627592948622e-04, + 5.909670536010781881e-04, + 5.980356519195359488e-04, + 6.051029462946916349e-04, + 6.121689253095411853e-04, + 6.192335775494355347e-04, + 6.262968916026549152e-04, + 6.333588560601933169e-04, + 6.404194595155314560e-04, + 6.474786905650610231e-04, + 6.545365378082477472e-04, + 6.615929898465593368e-04, + 6.686480352852074670e-04, + 6.757016627312827355e-04, + 6.827538607954958911e-04, + 6.898046180911863307e-04, + 6.968539232340945251e-04, + 7.039017648435623399e-04, + 7.109481315415264614e-04, + 7.179930119527031451e-04, + 7.250363947049934905e-04, + 7.320782684292600952e-04, + 7.391186217591201894e-04, + 7.461574433315081196e-04, + 7.531947217860683044e-04, + 7.602304457657177179e-04, + 7.672646039164381570e-04, + 7.742971848870464991e-04, + 7.813281773296189498e-04, + 7.883575698996543243e-04, + 7.953853512550024219e-04, + 8.024115100576025440e-04, + 8.094360349716222440e-04, + 8.164589146652034357e-04, + 8.234801378093738536e-04, + 8.304996930782341863e-04, + 8.375175691493560873e-04, + 8.445337547035780199e-04, + 8.515482384247752973e-04, + 8.585610090003589247e-04, + 8.655720551210503017e-04, + 8.725813654806737060e-04, + 8.795889287767156336e-04, + 8.865947337097186210e-04, + 8.935987689837711963e-04, + 9.006010233066731119e-04, + 9.076014853888766205e-04, + 9.146001439450520635e-04, + 9.215969876930170043e-04, + 9.285920053539120861e-04, + 9.355851856527675273e-04, + 9.425765173174998008e-04, + 9.495659890802630922e-04, + 9.565535896764474971e-04, + 9.635393078448593234e-04, + 9.705231323281248487e-04, + 9.775050518724787921e-04, + 9.844850552275404270e-04, + 9.914631311468040734e-04, + 9.984392683874295221e-04, + 1.005413455710015870e-03, + 1.012385681879171377e-03, + 1.019355935662908698e-03, + 1.026324205833123015e-03, + 1.033290481165771799e-03, + 1.040254750439808390e-03, + 1.047217002438744328e-03, + 1.054177225949586190e-03, + 1.061135409763006889e-03, + 1.068091542673830531e-03, + 1.075045613480431770e-03, + 1.081997610985288528e-03, + 1.088947523994777088e-03, + 1.095895341318948090e-03, + 1.102841051772025923e-03, + 1.109784644172173880e-03, + 1.116726107341290764e-03, + 1.123665430105412694e-03, + 1.130602601294897853e-03, + 1.137537609743338599e-03, + 1.144470444289295320e-03, + 1.151401093774461534e-03, + 1.158329547045378657e-03, + 1.165255792952441145e-03, + 1.172179820349692446e-03, + 1.179101618096000921e-03, + 1.186021175054073010e-03, + 1.192938480090617809e-03, + 1.199853522076764272e-03, + 1.206766289887834832e-03, + 1.213676772403140484e-03, + 1.220584958506537848e-03, + 1.227490837085819849e-03, + 1.234394397033292514e-03, + 1.241295627245545333e-03, + 1.248194516623237459e-03, + 1.255091054071514906e-03, + 1.261985228500167762e-03, + 1.268877028822580459e-03, + 1.275766443957435711e-03, + 1.282653462826889362e-03, + 1.289538074358277577e-03, + 1.296420267483062994e-03, + 1.303300031137002556e-03, + 1.310177354260548240e-03, + 1.317052225798638881e-03, + 1.323924634700480952e-03, + 1.330794569920036021e-03, + 1.337662020415800223e-03, + 1.344526975150594139e-03, + 1.351389423092123985e-03, + 1.358249353212365130e-03, + 1.365106754488067337e-03, + 1.371961615900918474e-03, + 1.378813926436464870e-03, + 1.385663675085692945e-03, + 1.392510850844040421e-03, + 1.399355442711173623e-03, + 1.406197439692318885e-03, + 1.413036830796516327e-03, + 1.419873605038322710e-03, + 1.426707751436754549e-03, + 1.433539259015454651e-03, + 1.440368116803110183e-03, + 1.447194313833213711e-03, + 1.454017839143877805e-03, + 1.460838681778292352e-03, + 1.467656830784522031e-03, + 1.474472275215294240e-03, + 1.481285004128545749e-03, + 1.488095006586837889e-03, + 1.494902271657824700e-03, + 1.501706788414427281e-03, + 1.508508545933777770e-03, + 1.515307533298774958e-03, + 1.522103739597016787e-03, + 1.528897153920979893e-03, + 1.535687765368500988e-03, + 1.542475563042172530e-03, + 1.549260536049896098e-03, + 1.556042673504677261e-03, + 1.562821964524407871e-03, + 1.569598398232347879e-03, + 1.576371963756904165e-03, + 1.583142650231427568e-03, + 1.589910446794612527e-03, + 1.596675342590651685e-03, + 1.603437326768215225e-03, + 1.610196388482110783e-03, + 1.616952516891501882e-03, + 1.623705701161575008e-03, + 1.630455930462588760e-03, + 1.637203193969651157e-03, + 1.643947480863886890e-03, + 1.650688780331447877e-03, + 1.657427081563704954e-03, + 1.664162373757709090e-03, + 1.670894646115601801e-03, + 1.677623887845165491e-03, + 1.684350088159612029e-03, + 1.691073236277375021e-03, + 1.697793321422575363e-03, + 1.704510332824826302e-03, + 1.711224259718998600e-03, + 1.717935091345640765e-03, + 1.724642816951138221e-03, + 1.731347425786660104e-03, + 1.738048907109863853e-03, + 1.744747250183078949e-03, + 1.751442444274990901e-03, + 1.758134478659600626e-03, + 1.764823342616410502e-03, + 1.771509025430779765e-03, + 1.778191516393759931e-03, + 1.784870804801843907e-03, + 1.791546879957545179e-03, + 1.798219731168797155e-03, + 1.804889347749500913e-03, + 1.811555719019299895e-03, + 1.818218834303399504e-03, + 1.824878682932945268e-03, + 1.831535254245172245e-03, + 1.838188537582419483e-03, + 1.844838522293596513e-03, + 1.851485197733250933e-03, + 1.858128553261360026e-03, + 1.864768578244613804e-03, + 1.871405262054723654e-03, + 1.878038594070063384e-03, + 1.884668563674649425e-03, + 1.891295160258324925e-03, + 1.897918373217122095e-03, + 1.904538191953070950e-03, + 1.911154605873994616e-03, + 1.917767604394026056e-03, + 1.924377176933074430e-03, + 1.930983312917304313e-03, + 1.937586001778977395e-03, + 1.944185232956223289e-03, + 1.950780995893437860e-03, + 1.957373280041431116e-03, + 1.963962074856429301e-03, + 1.970547369801558743e-03, + 1.977129154345836238e-03, + 1.983707417964314119e-03, + 1.990282150138569881e-03, + 1.996853340356101198e-03, + 2.003420978110886670e-03, + 2.009985052903167681e-03, + 2.016545554239233731e-03, + 2.023102471631910322e-03, + 2.029655794600321306e-03, + 2.036205512669713238e-03, + 2.042751615371822711e-03, + 2.049294092245039414e-03, + 2.055832932833409534e-03, + 2.062368126688251223e-03, + 2.068899663366498363e-03, + 2.075427532431949572e-03, + 2.081951723455066107e-03, + 2.088472226012046389e-03, + 2.094989029686311361e-03, + 2.101502124067473627e-03, + 2.108011498751521766e-03, + 2.114517143341262256e-03, + 2.121019047445764794e-03, + 2.127517200680872304e-03, + 2.134011592669014454e-03, + 2.140502213038996890e-03, + 2.146989051426464404e-03, + 2.153472097473679327e-03, + 2.159951340829345447e-03, + 2.166426771148973179e-03, + 2.172898378095031342e-03, + 2.179366151335971388e-03, + 2.185830080547826373e-03, + 2.192290155412484915e-03, + 2.198746365619304050e-03, + 2.205198700864125210e-03, + 2.211647150849414302e-03, + 2.218091705284638143e-03, + 2.224532353886095760e-03, + 2.230969086376692872e-03, + 2.237401892486447566e-03, + 2.243830761951979853e-03, + 2.250255684516986980e-03, + 2.256676649932053483e-03, + 2.263093647954465566e-03, + 2.269506668348586671e-03, + 2.275915700885987585e-03, + 2.282320735344570400e-03, + 2.288721761509640573e-03, + 2.295118769173703100e-03, + 2.301511748135553950e-03, + 2.307900688201876011e-03, + 2.314285579185524321e-03, + 2.320666410907136316e-03, + 2.327043173194133074e-03, + 2.333415855880871526e-03, + 2.339784448809037812e-03, + 2.346148941827433040e-03, + 2.352509324791788106e-03, + 2.358865587565257653e-03, + 2.365217720017890116e-03, + 2.371565712027133826e-03, + 2.377909553477636218e-03, + 2.384249234261048237e-03, + 2.390584744276393839e-03, + 2.396916073430236955e-03, + 2.403243211635687059e-03, + 2.409566148813859377e-03, + 2.415884874892866574e-03, + 2.422199379808002637e-03, + 2.428509653502174386e-03, + 2.434815685925343330e-03, + 2.441117467035053886e-03, + 2.447414986796229118e-03, + 2.453708235180959967e-03, + 2.459997202168977964e-03, + 2.466281877747416272e-03, + 2.472562251910667003e-03, + 2.478838314660833115e-03, + 2.485110056007221440e-03, + 2.491377465966771593e-03, + 2.497640534564199953e-03, + 2.503899251831125800e-03, + 2.510153607807114311e-03, + 2.516403592539491387e-03, + 2.522649196082448961e-03, + 2.528890408498483088e-03, + 2.535127219857381299e-03, + 2.541359620236430771e-03, + 2.547587599720813837e-03, + 2.553811148403089745e-03, + 2.560030256383676907e-03, + 2.566244913770692002e-03, + 2.572455110679717095e-03, + 2.578660837234262801e-03, + 2.584862083565562726e-03, + 2.591058839812385248e-03, + 2.597251096121537886e-03, + 2.603438842647302215e-03, + 2.609622069551915252e-03, + 2.615800767005673107e-03, + 2.621974925186009407e-03, + 2.628144534278883514e-03, + 2.634309584477817750e-03, + 2.640470065984082577e-03, + 2.646625969007020563e-03, + 2.652777283763865963e-03, + 2.658924000479585565e-03, + 2.665066109387317136e-03, + 2.671203600727898014e-03, + 2.677336464750303558e-03, + 2.683464691711502301e-03, + 2.689588271876236069e-03, + 2.695707195517392518e-03, + 2.701821452916157787e-03, + 2.707931034361136993e-03, + 2.714035930149521266e-03, + 2.720136130586242509e-03, + 2.726231625984453476e-03, + 2.732322406665668724e-03, + 2.738408462958821787e-03, + 2.744489785201682883e-03, + 2.750566363739883127e-03, + 2.756638188927071527e-03, + 2.762705251125271901e-03, + 2.768767540704702036e-03, + 2.774825048043594571e-03, + 2.780877763528650636e-03, + 2.786925677554542846e-03, + 2.792968780524416206e-03, + 2.799007062849644817e-03, + 2.805040514949714778e-03, + 2.811069127252531670e-03, + 2.817092890194577114e-03, + 2.823111794219984594e-03, + 2.829125829782041732e-03, + 2.835134987341590002e-03, + 2.841139257368503149e-03, + 2.847138630340778631e-03, + 2.853133096744688534e-03, + 2.859122647075113943e-03, + 2.865107271835360628e-03, + 2.871086961537003355e-03, + 2.877061706700262313e-03, + 2.883031497853835289e-03, + 2.888996325534716383e-03, + 2.894956180288663083e-03, + 2.900911052669710548e-03, + 2.906860933240607014e-03, + 2.912805812572675460e-03, + 2.918745681245573341e-03, + 2.924680529847705455e-03, + 2.930610348976315886e-03, + 2.936535129236614132e-03, + 2.942454861243094365e-03, + 2.948369535618606922e-03, + 2.954279142994546952e-03, + 2.960183674011247767e-03, + 2.966083119317443079e-03, + 2.971977469570786980e-03, + 2.977866715437634936e-03, + 2.983750847592867711e-03, + 2.989629856720335890e-03, + 2.995503733512620489e-03, + 3.001372468670880731e-03, + 3.007236052905357549e-03, + 3.013094476934799829e-03, + 3.018947731486919337e-03, + 3.024795807298511722e-03, + 3.030638695114585678e-03, + 3.036476385689645344e-03, + 3.042308869786821204e-03, + 3.048136138177997157e-03, + 3.053958181644173941e-03, + 3.059774990975236246e-03, + 3.065586556969860776e-03, + 3.071392870435890946e-03, + 3.077193922189887156e-03, + 3.082989703057583894e-03, + 3.088780203873707150e-03, + 3.094565415481797480e-03, + 3.100345328734548274e-03, + 3.106119934493944100e-03, + 3.111889223630431509e-03, + 3.117653187024057877e-03, + 3.123411815563607950e-03, + 3.129165100147087396e-03, + 3.134913031681894544e-03, + 3.140655601083869319e-03, + 3.146392799278656741e-03, + 3.152124617200799221e-03, + 3.157851045793844125e-03, + 3.163572076010752292e-03, + 3.169287698813651275e-03, + 3.174997905173679216e-03, + 3.180702686071475334e-03, + 3.186402032496653009e-03, + 3.192095935448250807e-03, + 3.197784385934588497e-03, + 3.203467374973069728e-03, + 3.209144893590529408e-03, + 3.214816932823330413e-03, + 3.220483483716568649e-03, + 3.226144537325397518e-03, + 3.231800084713575081e-03, + 3.237450116954862685e-03, + 3.243094625132124636e-03, + 3.248733600337526395e-03, + 3.254367033672787846e-03, + 3.259994916249077911e-03, + 3.265617239186802915e-03, + 3.271233993615993429e-03, + 3.276845170676163325e-03, + 3.282450761516095966e-03, + 3.288050757294320395e-03, + 3.293645149178613899e-03, + 3.299233928346474286e-03, + 3.304817085984911723e-03, + 3.310394613290312555e-03, + 3.315966501468728574e-03, + 3.321532741736051789e-03, + 3.327093325317114110e-03, + 3.332648243447126294e-03, + 3.338197487370134046e-03, + 3.343741048340466079e-03, + 3.349278917621815142e-03, + 3.354811086487418867e-03, + 3.360337546220365512e-03, + 3.365858288113434370e-03, + 3.371373303468903643e-03, + 3.376882583598967216e-03, + 3.382386119825513907e-03, + 3.387883903480013847e-03, + 3.393375925903907488e-03, + 3.398862178448179300e-03, + 3.404342652473697772e-03, + 3.409817339351380212e-03, + 3.415286230461330591e-03, + 3.420749317194082904e-03, + 3.426206590949754192e-03, + 3.431658043138201535e-03, + 3.437103665179434484e-03, + 3.442543448502847006e-03, + 3.447977384548275240e-03, + 3.453405464765199953e-03, + 3.458827680612916542e-03, + 3.464244023560800016e-03, + 3.469654485088188769e-03, + 3.475059056684179446e-03, + 3.480457729848016827e-03, + 3.485850496088941600e-03, + 3.491237346925989138e-03, + 3.496618273888446159e-03, + 3.501993268515397970e-03, + 3.507362322356048084e-03, + 3.512725426969913380e-03, + 3.518082573925971485e-03, + 3.523433754803850359e-03, + 3.528778961193050710e-03, + 3.534118184693034459e-03, + 3.539451416913630237e-03, + 3.544778649474534214e-03, + 3.550099874005778911e-03, + 3.555415082147539776e-03, + 3.560724265549982965e-03, + 3.566027415873620522e-03, + 3.571324524789182015e-03, + 3.576615583977390319e-03, + 3.581900585129316802e-03, + 3.587179519946516199e-03, + 3.592452380140181371e-03, + 3.597719157432456485e-03, + 3.602979843555073527e-03, + 3.608234430250610407e-03, + 3.613482909271803142e-03, + 3.618725272381286082e-03, + 3.623961511352600650e-03, + 3.629191617969346195e-03, + 3.634415584025370381e-03, + 3.639633401325054977e-03, + 3.644845061683138487e-03, + 3.650050556924593851e-03, + 3.655249878885014417e-03, + 3.660443019410175493e-03, + 3.665629970356429432e-03, + 3.670810723590592437e-03, + 3.675985270989734228e-03, + 3.681153604441528889e-03, + 3.686315715844324260e-03, + 3.691471597106401638e-03, + 3.696621240147221314e-03, + 3.701764636896069920e-03, + 3.706901779293328512e-03, + 3.712032659289704953e-03, + 3.717157268846311979e-03, + 3.722275599935023684e-03, + 3.727387644538266050e-03, + 3.732493394648910695e-03, + 3.737592842270560673e-03, + 3.742685979417472407e-03, + 3.747772798114344921e-03, + 3.752853290396720130e-03, + 3.757927448310586886e-03, + 3.762995263912710577e-03, + 3.768056729270733308e-03, + 3.773111836462444448e-03, + 3.778160577576894323e-03, + 3.783202944713599282e-03, + 3.788238929982722537e-03, + 3.793268525505408099e-03, + 3.798291723413122888e-03, + 3.803308515848596080e-03, + 3.808318894965099632e-03, + 3.813322852926589231e-03, + 3.818320381907961900e-03, + 3.823311474094964486e-03, + 3.828296121683978127e-03, + 3.833274316882369966e-03, + 3.838246051908378222e-03, + 3.843211318990913134e-03, + 3.848170110369988905e-03, + 3.853122418296299131e-03, + 3.858068235031508232e-03, + 3.863007552848430129e-03, + 3.867940364030239813e-03, + 3.872866660871594410e-03, + 3.877786435677876408e-03, + 3.882699680765317254e-03, + 3.887606388461308307e-03, + 3.892506551104049986e-03, + 3.897400161042854048e-03, + 3.902287210638057720e-03, + 3.907167692260841117e-03, + 3.912041598293569851e-03, + 3.916908921129663192e-03, + 3.921769653173423631e-03, + 3.926623786840306198e-03, + 3.931471314557067644e-03, + 3.936312228761030922e-03, + 3.941146521901229237e-03, + 3.945974186437180460e-03, + 3.950795214840054602e-03, + 3.955609599591999870e-03, + 3.960417333185957921e-03, + 3.965218408126568519e-03, + 3.970012816929351616e-03, + 3.974800552120951944e-03, + 3.979581606239416570e-03, + 3.984355971833746478e-03, + 3.989123641464351055e-03, + 3.993884607702847742e-03, + 3.998638863131933653e-03, + 4.003386400345713449e-03, + 4.008127211949569224e-03, + 4.012861290559966224e-03, + 4.017588628804789376e-03, + 4.022309219323398806e-03, + 4.027023054765965435e-03, + 4.031730127794561254e-03, + 4.036430431082026551e-03, + 4.041123957313002939e-03, + 4.045810699183313187e-03, + 4.050490649399997659e-03, + 4.055163800681687268e-03, + 4.059830145758341544e-03, + 4.064489677371189644e-03, + 4.069142388273078170e-03, + 4.073788271228046161e-03, + 4.078427319011733616e-03, + 4.083059524411219304e-03, + 4.087684880224886318e-03, + 4.092303379262661467e-03, + 4.096915014346180078e-03, + 4.101519778308033992e-03, + 4.106117663992833212e-03, + 4.110708664256540641e-03, + 4.115292771966325494e-03, + 4.119869980001455816e-03, + 4.124440281252124071e-03, + 4.129003668620585994e-03, + 4.133560135020468429e-03, + 4.138109673376852600e-03, + 4.142652276626569881e-03, + 4.147187937718046537e-03, + 4.151716649611158876e-03, + 4.156238405277603611e-03, + 4.160753197700525763e-03, + 4.165261019874804890e-03, + 4.169761864807052486e-03, + 4.174255725515332686e-03, + 4.178742595029485800e-03, + 4.183222466391266214e-03, + 4.187695332653578253e-03, + 4.192161186881582062e-03, + 4.196620022151914715e-03, + 4.201071831552850681e-03, + 4.205516608184596723e-03, + 4.209954345158914597e-03, + 4.214385035599481008e-03, + 4.218808672641721942e-03, + 4.223225249432695574e-03, + 4.227634759131416661e-03, + 4.232037194908692609e-03, + 4.236432549946970820e-03, + 4.240820817440654408e-03, + 4.245201990596156848e-03, + 4.249576062631224560e-03, + 4.253943026776094843e-03, + 4.258302876272276362e-03, + 4.262655604373480692e-03, + 4.267001204345428032e-03, + 4.271339669465267809e-03, + 4.275670993022499811e-03, + 4.279995168318395660e-03, + 4.284312188666034374e-03, + 4.288622047390611147e-03, + 4.292924737829081731e-03, + 4.297220253330515452e-03, + 4.301508587255940819e-03, + 4.305789732978206746e-03, + 4.310063683882297408e-03, + 4.314330433365215142e-03, + 4.318589974835799171e-03, + 4.322842301715014435e-03, + 4.327087407436038327e-03, + 4.331325285443625786e-03, + 4.335555929195131046e-03, + 4.339779332159405222e-03, + 4.343995487817831069e-03, + 4.348204389663688080e-03, + 4.352406031202261764e-03, + 4.356600405951054425e-03, + 4.360787507439688009e-03, + 4.364967329209753187e-03, + 4.369139864815172782e-03, + 4.373305107821799306e-03, + 4.377463051807791404e-03, + 4.381613690363441241e-03, + 4.385757017091091239e-03, + 4.389893025605346583e-03, + 4.394021709533190573e-03, + 4.398143062513308957e-03, + 4.402257078197096933e-03, + 4.406363750248008630e-03, + 4.410463072341453891e-03, + 4.414555038165565888e-03, + 4.418639641420188911e-03, + 4.422716875817887978e-03, + 4.426786735083274027e-03, + 4.430849212953182591e-03, + 4.434904303176850741e-03, + 4.438951999515806934e-03, + 4.442992295743733965e-03, + 4.447025185646835861e-03, + 4.451050663023456248e-03, + 4.455068721684374115e-03, + 4.459079355452721417e-03, + 4.463082558163874655e-03, + 4.467078323665617939e-03, + 4.471066645818311258e-03, + 4.475047518494246028e-03, + 4.479020935578527200e-03, + 4.482986890968489527e-03, + 4.486945378573790368e-03, + 4.490896392316675971e-03, + 4.494839926131646672e-03, + 4.498775973965745724e-03, + 4.502704529778500317e-03, + 4.506625587541718617e-03, + 4.510539141239820228e-03, + 4.514445184869710428e-03, + 4.518343712440624042e-03, + 4.522234717974447232e-03, + 4.526118195505431270e-03, + 4.529994139080379019e-03, + 4.533862542758823611e-03, + 4.537723400612397873e-03, + 4.541576706725553372e-03, + 4.545422455195391280e-03, + 4.549260640131170576e-03, + 4.553091255655117298e-03, + 4.556914295901842542e-03, + 4.560729755018500323e-03, + 4.564537627164952371e-03, + 4.568337906513515734e-03, + 4.572130587249221244e-03, + 4.575915663569756278e-03, + 4.579693129685249650e-03, + 4.583462979818640239e-03, + 4.587225208205473158e-03, + 4.590979809093831236e-03, + 4.594726776744629052e-03, + 4.598466105431263384e-03, + 4.602197789439927203e-03, + 4.605921823069625276e-03, + 4.609638200631675439e-03, + 4.613346916450466670e-03, + 4.617047964862979435e-03, + 4.620741340218821255e-03, + 4.624427036880440073e-03, + 4.628105049223020170e-03, + 4.631775371634382424e-03, + 4.635437998515254919e-03, + 4.639092924278953763e-03, + 4.642740143351710945e-03, + 4.646379650172539032e-03, + 4.650011439193100192e-03, + 4.653635504877930845e-03, + 4.657251841704562224e-03, + 4.660860444162926233e-03, + 4.664461306756157756e-03, + 4.668054423999971891e-03, + 4.671639790423036051e-03, + 4.675217400566993378e-03, + 4.678787248985978760e-03, + 4.682349330247337869e-03, + 4.685903638931194354e-03, + 4.689450169630422077e-03, + 4.692988916950900126e-03, + 4.696519875511420868e-03, + 4.700043039943578929e-03, + 4.703558404892008854e-03, + 4.707065965014108413e-03, + 4.710565714980330908e-03, + 4.714057649474088889e-03, + 4.717541763191566810e-03, + 4.721018050842018532e-03, + 4.724486507147821965e-03, + 4.727947126843895335e-03, + 4.731399904678548068e-03, + 4.734844835412927409e-03, + 4.738281913821076538e-03, + 4.741711134690182634e-03, + 4.745132492820319271e-03, + 4.748545983024654582e-03, + 4.751951600129422637e-03, + 4.755349338973717012e-03, + 4.758739194409840334e-03, + 4.762121161303110861e-03, + 4.765495234531793960e-03, + 4.768861408987365783e-03, + 4.772219679574226173e-03, + 4.775570041209926779e-03, + 4.778912488825254323e-03, + 4.782247017363736204e-03, + 4.785573621782245914e-03, + 4.788892297050865998e-03, + 4.792203038152432690e-03, + 4.795505840083244542e-03, + 4.798800697852632219e-03, + 4.802087606482938545e-03, + 4.805366561009842899e-03, + 4.808637556481996055e-03, + 4.811900587961339369e-03, + 4.815155650522981619e-03, + 4.818402739255093180e-03, + 4.821641849259114196e-03, + 4.824872975649703404e-03, + 4.828096113554609763e-03, + 4.831311258114903175e-03, + 4.834518404484741162e-03, + 4.837717547831583975e-03, + 4.840908683336227550e-03, + 4.844091806192362890e-03, + 4.847266911607282097e-03, + 4.850433994801364897e-03, + 4.853593051008200064e-03, + 4.856744075474721603e-03, + 4.859887063461150632e-03, + 4.863022010240851400e-03, + 4.866148911100638338e-03, + 4.869267761340477681e-03, + 4.872378556273699972e-03, + 4.875481291226992260e-03, + 4.878575961540208145e-03, + 4.881662562566604566e-03, + 4.884741089672899050e-03, + 4.887811538238830827e-03, + 4.890873903657755838e-03, + 4.893928181336192236e-03, + 4.896974366694102285e-03, + 4.900012455164907098e-03, + 4.903042442195096329e-03, + 4.906064323244839660e-03, + 4.909078093787573940e-03, + 4.912083749310007519e-03, + 4.915081285312426426e-03, + 4.918070697308427226e-03, + 4.921051980824972527e-03, + 4.924025131402542770e-03, + 4.926990144594912448e-03, + 4.929947015969387766e-03, + 4.932895741106690414e-03, + 4.935836315600908124e-03, + 4.938768735059606563e-03, + 4.941692995103962906e-03, + 4.944609091368286184e-03, + 4.947517019500712911e-03, + 4.950416775162494974e-03, + 4.953308354028668377e-03, + 4.956191751787614348e-03, + 4.959066964141160827e-03, + 4.961933986804714300e-03, + 4.964792815507210362e-03, + 4.967643445990968000e-03, + 4.970485874011922045e-03, + 4.973320095339542508e-03, + 4.976146105756729630e-03, + 4.978963901060041129e-03, + 4.981773477059435462e-03, + 4.984574829578555452e-03, + 4.987367954454540939e-03, + 4.990152847538042655e-03, + 4.992929504693310698e-03, + 4.995697921798309023e-03, + 4.998458094744253136e-03, + 5.001210019436330007e-03, + 5.003953691792926116e-03, + 5.006689107746363845e-03, + 5.009416263242399275e-03, + 5.012135154240366167e-03, + 5.014845776713289585e-03, + 5.017548126647832993e-03, + 5.020242200044175949e-03, + 5.022927992916224882e-03, + 5.025605501291510735e-03, + 5.028274721211156012e-03, + 5.030935648729984062e-03, + 5.033588279916419335e-03, + 5.036232610852571512e-03, + 5.038868637634356072e-03, + 5.041496356371037192e-03, + 5.044115763185863521e-03, + 5.046726854215643175e-03, + 5.049329625610839145e-03, + 5.051924073535725424e-03, + 5.054510194168051335e-03, + 5.057087983699535931e-03, + 5.059657438335480283e-03, + 5.062218554294875029e-03, + 5.064771327810483649e-03, + 5.067315755128810363e-03, + 5.069851832510020341e-03, + 5.072379556228041181e-03, + 5.074898922570707759e-03, + 5.077409927839272169e-03, + 5.079912568349050778e-03, + 5.082406840428926355e-03, + 5.084892740421607417e-03, + 5.087370264683702820e-03, + 5.089839409585309761e-03, + 5.092300171510584506e-03, + 5.094752546857343398e-03, + 5.097196532037160006e-03, + 5.099632123475515179e-03, + 5.102059317611548107e-03, + 5.104478110898331283e-03, + 5.106888499802722178e-03, + 5.109290480805310335e-03, + 5.111684050400601247e-03, + 5.114069205096933093e-03, + 5.116445941416365717e-03, + 5.118814255894885319e-03, + 5.121174145082400993e-03, + 5.123525605542418593e-03, + 5.125868633852604522e-03, + 5.128203226604152558e-03, + 5.130529380402408350e-03, + 5.132847091866479979e-03, + 5.135156357629250962e-03, + 5.137457174337602302e-03, + 5.139749538652278044e-03, + 5.142033447247851448e-03, + 5.144308896812829941e-03, + 5.146575884049619555e-03, + 5.148834405674486761e-03, + 5.151084458417675566e-03, + 5.153326039023221894e-03, + 5.155559144249186043e-03, + 5.157783770867528650e-03, + 5.159999915664058648e-03, + 5.162207575438559036e-03, + 5.164406747004849328e-03, + 5.166597427190451619e-03, + 5.168779612837117073e-03, + 5.170953300800193615e-03, + 5.173118487949326764e-03, + 5.175275171167935742e-03, + 5.177423347353389549e-03, + 5.179563013417074618e-03, + 5.181694166284354051e-03, + 5.183816802894489553e-03, + 5.185930920200783681e-03, + 5.188036515170533006e-03, + 5.190133584784935306e-03, + 5.192222126039277783e-03, + 5.194302135942747110e-03, + 5.196373611518556070e-03, + 5.198436549804063243e-03, + 5.200490947850337602e-03, + 5.202536802722730960e-03, + 5.204574111500511087e-03, + 5.206602871276884252e-03, + 5.208623079159237224e-03, + 5.210634732268772974e-03, + 5.212637827740958241e-03, + 5.214632362725165303e-03, + 5.216618334384787344e-03, + 5.218595739897319979e-03, + 5.220564576454289271e-03, + 5.222524841261223100e-03, + 5.224476531537771730e-03, + 5.226419644517633217e-03, + 5.228354177448504836e-03, + 5.230280127592229662e-03, + 5.232197492224646522e-03, + 5.234106268635684532e-03, + 5.236006454129467184e-03, + 5.237898046023955860e-03, + 5.239781041651458103e-03, + 5.241655438358210420e-03, + 5.243521233504571701e-03, + 5.245378424465005004e-03, + 5.247227008628061948e-03, + 5.249066983396400050e-03, + 5.250898346186831309e-03, + 5.252721094430185152e-03, + 5.254535225571459363e-03, + 5.256340737069775844e-03, + 5.258137626398354594e-03, + 5.259925891044507640e-03, + 5.261705528509797759e-03, + 5.263476536309711490e-03, + 5.265238911974120563e-03, + 5.266992653046764089e-03, + 5.268737757085730812e-03, + 5.270474221663210175e-03, + 5.272202044365417728e-03, + 5.273921222792859673e-03, + 5.275631754560154187e-03, + 5.277333637296034892e-03, + 5.279026868643450603e-03, + 5.280711446259449098e-03, + 5.282387367815305490e-03, + 5.284054630996454574e-03, + 5.285713233502451792e-03, + 5.287363173047074719e-03, + 5.289004447358285760e-03, + 5.290637054178193993e-03, + 5.292260991263077717e-03, + 5.293876256383524964e-03, + 5.295482847324109975e-03, + 5.297080761883826011e-03, + 5.298669997875628257e-03, + 5.300250553126868366e-03, + 5.301822425479018643e-03, + 5.303385612787723212e-03, + 5.304940112922884761e-03, + 5.306485923768627239e-03, + 5.308023043223198713e-03, + 5.309551469199192547e-03, + 5.311071199623291529e-03, + 5.312582232436489915e-03, + 5.314084565593988480e-03, + 5.315578197065157218e-03, + 5.317063124833663716e-03, + 5.318539346897430652e-03, + 5.320006861268457982e-03, + 5.321465665973170757e-03, + 5.322915759052156311e-03, + 5.324357138560194616e-03, + 5.325789802566410075e-03, + 5.327213749154032993e-03, + 5.328628976420695350e-03, + 5.330035482478221766e-03, + 5.331433265452645981e-03, + 5.332822323484302796e-03, + 5.334202654727806386e-03, + 5.335574257351959233e-03, + 5.336937129539902173e-03, + 5.338291269488996439e-03, + 5.339636675410893048e-03, + 5.340973345531501576e-03, + 5.342301278091004905e-03, + 5.343620471343830600e-03, + 5.344930923558799223e-03, + 5.346232633018825099e-03, + 5.347525598021284077e-03, + 5.348809816877722959e-03, + 5.350085287913986139e-03, + 5.351352009470263307e-03, + 5.352609979900958478e-03, + 5.353859197574822697e-03, + 5.355099660874881179e-03, + 5.356331368198424640e-03, + 5.357554317957091694e-03, + 5.358768508576802064e-03, + 5.359973938497759188e-03, + 5.361170606174461492e-03, + 5.362358510075790861e-03, + 5.363537648684794934e-03, + 5.364708020499008023e-03, + 5.365869624030059938e-03, + 5.367022457804092317e-03, + 5.368166520361475000e-03, + 5.369301810256820774e-03, + 5.370428326059196143e-03, + 5.371546066351921833e-03, + 5.372655029732614426e-03, + 5.373755214813242739e-03, + 5.374846620220084456e-03, + 5.375929244593754749e-03, + 5.377003086589207149e-03, + 5.378068144875672828e-03, + 5.379124418136757742e-03, + 5.380171905070406206e-03, + 5.381210604388838442e-03, + 5.382240514818636447e-03, + 5.383261635100789096e-03, + 5.384273963990476169e-03, + 5.385277500257372799e-03, + 5.386272242685332008e-03, + 5.387258190072681356e-03, + 5.388235341232045124e-03, + 5.389203694990350388e-03, + 5.390163250188923297e-03, + 5.391114005683423152e-03, + 5.392055960343818122e-03, + 5.392989113054476313e-03, + 5.393913462714068630e-03, + 5.394829008235658974e-03, + 5.395735748546631391e-03, + 5.396633682588703081e-03, + 5.397522809318014599e-03, + 5.398403127705028379e-03, + 5.399274636734475823e-03, + 5.400137335405594957e-03, + 5.400991222731886705e-03, + 5.401836297741200756e-03, + 5.402672559475811022e-03, + 5.403500006992276866e-03, + 5.404318639361587948e-03, + 5.405128455669049731e-03, + 5.405929455014327721e-03, + 5.406721636511479558e-03, + 5.407504999288920318e-03, + 5.408279542489412110e-03, + 5.409045265270084890e-03, + 5.409802166802441664e-03, + 5.410550246272347215e-03, + 5.411289502880061927e-03, + 5.412019935840157656e-03, + 5.412741544381602724e-03, + 5.413454327747794885e-03, + 5.414158285196365300e-03, + 5.414853415999450886e-03, + 5.415539719443497428e-03, + 5.416217194829298608e-03, + 5.416885841472066261e-03, + 5.417545658701354051e-03, + 5.418196645861109509e-03, + 5.418838802309645410e-03, + 5.419472127419641509e-03, + 5.420096620578150615e-03, + 5.420712281186606391e-03, + 5.421319108660812083e-03, + 5.421917102430943991e-03, + 5.422506261941554932e-03, + 5.423086586651563838e-03, + 5.423658076034309529e-03, + 5.424220729577440558e-03, + 5.424774546783006288e-03, + 5.425319527167455150e-03, + 5.425855670261571333e-03, + 5.426382975610551107e-03, + 5.426901442773947315e-03, + 5.427411071325682380e-03, + 5.427911860854096882e-03, + 5.428403810961820314e-03, + 5.428886921265929817e-03, + 5.429361191397904206e-03, + 5.429826621003498201e-03, + 5.430283209742912433e-03, + 5.430730957290721451e-03, + 5.431169863335845102e-03, + 5.431599927581613578e-03, + 5.432021149745693694e-03, + 5.432433529560160880e-03, + 5.432837066771448002e-03, + 5.433231761140344500e-03, + 5.433617612442060568e-03, + 5.433994620466149096e-03, + 5.434362785016519544e-03, + 5.434722105911491720e-03, + 5.435072582983739402e-03, + 5.435414216080299878e-03, + 5.435747005062612977e-03, + 5.436070949806451683e-03, + 5.436386050201979375e-03, + 5.436692306153725548e-03, + 5.436989717580585808e-03, + 5.437278284415835751e-03, + 5.437558006607130096e-03, + 5.437828884116449775e-03, + 5.438090916920182601e-03, + 5.438344105009060812e-03, + 5.438588448388190569e-03, + 5.438823947077076233e-03, + 5.439050601109498943e-03, + 5.439268410533687481e-03, + 5.439477375412210720e-03, + 5.439677495821992372e-03, + 5.439868771854318788e-03, + 5.440051203614819017e-03, + 5.440224791223536790e-03, + 5.440389534814819503e-03, + 5.440545434537384997e-03, + 5.440692490554328506e-03, + 5.440830703043091424e-03, + 5.440960072195457839e-03, + 5.441080598217578820e-03, + 5.441192281329978488e-03, + 5.441295121767461204e-03, + 5.441389119779286784e-03, + 5.441474275628990082e-03, + 5.441550589594471195e-03, + 5.441618061967980723e-03, + 5.441676693056125835e-03, + 5.441726483179855529e-03, + 5.441767432674456291e-03, + 5.441799541889564239e-03, + 5.441822811189146042e-03, + 5.441837240951526676e-03, + 5.441842831569347790e-03, + 5.441839583449609337e-03, + 5.441827497013667844e-03, + 5.441806572697130591e-03, + 5.441776810950058572e-03, + 5.441738212236752262e-03, + 5.441690777035875642e-03, + 5.441634505840429320e-03, + 5.441569399157729706e-03, + 5.441495457509430700e-03, + 5.441412681431496805e-03, + 5.441321071474229144e-03, + 5.441220628202257659e-03, + 5.441111352194514215e-03, + 5.440993244044240416e-03, + 5.440866304359044843e-03, + 5.440730533760796371e-03, + 5.440585932885696162e-03, + 5.440432502384287203e-03, + 5.440270242921385786e-03, + 5.440099155176124010e-03, + 5.439919239841944573e-03, + 5.439730497626596439e-03, + 5.439532929252143510e-03, + 5.439326535454936870e-03, + 5.439111316985625194e-03, + 5.438887274609156483e-03, + 5.438654409104786737e-03, + 5.438412721266066077e-03, + 5.438162211900809256e-03, + 5.437902881831131220e-03, + 5.437634731893466189e-03, + 5.437357762938515617e-03, + 5.437071975831237781e-03, + 5.436777371450909370e-03, + 5.436473950691069965e-03, + 5.436161714459548933e-03, + 5.435840663678412517e-03, + 5.435510799284065317e-03, + 5.435172122227121920e-03, + 5.434824633472500575e-03, + 5.434468333999384164e-03, + 5.434103224801186370e-03, + 5.433729306885648827e-03, + 5.433346581274687594e-03, + 5.432955049004563157e-03, + 5.432554711125712164e-03, + 5.432145568702886201e-03, + 5.431727622815071127e-03, + 5.431300874555454981e-03, + 5.430865325031536406e-03, + 5.430420975365007549e-03, + 5.429967826691849478e-03, + 5.429505880162228959e-03, + 5.429035136940590402e-03, + 5.428555598205586467e-03, + 5.428067265150104091e-03, + 5.427570138981263614e-03, + 5.427064220920397100e-03, + 5.426549512203089967e-03, + 5.426026014079118540e-03, + 5.425493727812470864e-03, + 5.424952654681385739e-03, + 5.424402795978269451e-03, + 5.423844153009766897e-03, + 5.423276727096718215e-03, + 5.422700519574181338e-03, + 5.422115531791382552e-03, + 5.421521765111772875e-03, + 5.420919220913001171e-03, + 5.420307900586875116e-03, + 5.419687805539433190e-03, + 5.419058937190859675e-03, + 5.418421296975558382e-03, + 5.417774886342106681e-03, + 5.417119706753197386e-03, + 5.416455759685795748e-03, + 5.415783046630958178e-03, + 5.415101569093976226e-03, + 5.414411328594253420e-03, + 5.413712326665344292e-03, + 5.413004564855022037e-03, + 5.412288044725185703e-03, + 5.411562767851835903e-03, + 5.410828735825210997e-03, + 5.410085950249630959e-03, + 5.409334412743585854e-03, + 5.408574124939692467e-03, + 5.407805088484692567e-03, + 5.407027305039522301e-03, + 5.406240776279145656e-03, + 5.405445503892725330e-03, + 5.404641489583540334e-03, + 5.403828735068962573e-03, + 5.403007242080471589e-03, + 5.402177012363701403e-03, + 5.401338047678352038e-03, + 5.400490349798265852e-03, + 5.399633920511350341e-03, + 5.398768761619637119e-03, + 5.397894874939232479e-03, + 5.397012262300352956e-03, + 5.396120925547262873e-03, + 5.395220866538382766e-03, + 5.394312087146128920e-03, + 5.393394589257029595e-03, + 5.392468374771710281e-03, + 5.391533445604819973e-03, + 5.390589803685102294e-03, + 5.389637450955367740e-03, + 5.388676389372410412e-03, + 5.387706620907219655e-03, + 5.386728147544685152e-03, + 5.385740971283802490e-03, + 5.384745094137648007e-03, + 5.383740518133276441e-03, + 5.382727245311801599e-03, + 5.381705277728365995e-03, + 5.380674617452117434e-03, + 5.379635266566277531e-03, + 5.378587227168017681e-03, + 5.377530501368552734e-03, + 5.376465091293132319e-03, + 5.375390999080992271e-03, + 5.374308226885306065e-03, + 5.373216776873385170e-03, + 5.372116651226361596e-03, + 5.371007852139536576e-03, + 5.369890381822045762e-03, + 5.368764242497049179e-03, + 5.367629436401748569e-03, + 5.366485965787242546e-03, + 5.365333832918591644e-03, + 5.364173040074877302e-03, + 5.363003589549096908e-03, + 5.361825483648216713e-03, + 5.360638724693150142e-03, + 5.359443315018731779e-03, + 5.358239256973790221e-03, + 5.357026552921052669e-03, + 5.355805205237176153e-03, + 5.354575216312757076e-03, + 5.353336588552318198e-03, + 5.352089324374258335e-03, + 5.350833426210984192e-03, + 5.349568896508677049e-03, + 5.348295737727575515e-03, + 5.347013952341698843e-03, + 5.345723542838984842e-03, + 5.344424511721322830e-03, + 5.343116861504411397e-03, + 5.341800594717853803e-03, + 5.340475713905168398e-03, + 5.339142221623698406e-03, + 5.337800120444659638e-03, + 5.336449412953171711e-03, + 5.335090101748132287e-03, + 5.333722189442376659e-03, + 5.332345678662555460e-03, + 5.330960572049073948e-03, + 5.329566872256350472e-03, + 5.328164581952487752e-03, + 5.326753703819461956e-03, + 5.325334240553105357e-03, + 5.323906194862990104e-03, + 5.322469569472632056e-03, + 5.321024367119201945e-03, + 5.319570590553743088e-03, + 5.318108242541128884e-03, + 5.316637325859971744e-03, + 5.315157843302669924e-03, + 5.313669797675451764e-03, + 5.312173191798288084e-03, + 5.310668028504886111e-03, + 5.309154310642813512e-03, + 5.307632041073288495e-03, + 5.306101222671385370e-03, + 5.304561858325868018e-03, + 5.303013950939187288e-03, + 5.301457503427719521e-03, + 5.299892518721365832e-03, + 5.298318999763874763e-03, + 5.296736949512704379e-03, + 5.295146370938987566e-03, + 5.293547267027636991e-03, + 5.291939640777210650e-03, + 5.290323495199980401e-03, + 5.288698833321928486e-03, + 5.287065658182742330e-03, + 5.285423972835745152e-03, + 5.283773780347974895e-03, + 5.282115083800151267e-03, + 5.280447886286584666e-03, + 5.278772190915395623e-03, + 5.277088000808165258e-03, + 5.275395319100342935e-03, + 5.273694148940848148e-03, + 5.271984493492277817e-03, + 5.270266355930942719e-03, + 5.268539739446687076e-03, + 5.266804647243009986e-03, + 5.265061082537065423e-03, + 5.263309048559541674e-03, + 5.261548548554802716e-03, + 5.259779585780757251e-03, + 5.258002163508919413e-03, + 5.256216285024423521e-03, + 5.254421953625936469e-03, + 5.252619172625706302e-03, + 5.250807945349599513e-03, + 5.248988275137006498e-03, + 5.247160165340809465e-03, + 5.245323619327596672e-03, + 5.243478640477299002e-03, + 5.241625232183629718e-03, + 5.239763397853613482e-03, + 5.237893140907873453e-03, + 5.236014464780604401e-03, + 5.234127372919459946e-03, + 5.232231868785597664e-03, + 5.230327955853727659e-03, + 5.228415637611965976e-03, + 5.226494917562039301e-03, + 5.224565799219031692e-03, + 5.222628286111545906e-03, + 5.220682381781719013e-03, + 5.218728089785072341e-03, + 5.216765413690539234e-03, + 5.214794357080687094e-03, + 5.212814923551322734e-03, + 5.210827116711780338e-03, + 5.208830940184858149e-03, + 5.206826397606656269e-03, + 5.204813492626920134e-03, + 5.202792228908549588e-03, + 5.200762610127951900e-03, + 5.198724639975006202e-03, + 5.196678322152875271e-03, + 5.194623660378133896e-03, + 5.192560658380766282e-03, + 5.190489319904087115e-03, + 5.188409648704843044e-03, + 5.186321648553033140e-03, + 5.184225323232080629e-03, + 5.182120676538759171e-03, + 5.180007712283153827e-03, + 5.177886434288610749e-03, + 5.175756846391974843e-03, + 5.173618952443241083e-03, + 5.171472756305764418e-03, + 5.169318261856247626e-03, + 5.167155472984627691e-03, + 5.164984393594196366e-03, + 5.162805027601460525e-03, + 5.160617378936223701e-03, + 5.158421451541591284e-03, + 5.156217249373885522e-03, + 5.154004776402672412e-03, + 5.151784036610852768e-03, + 5.149555033994480946e-03, + 5.147317772562788260e-03, + 5.145072256338464878e-03, + 5.142818489357091696e-03, + 5.140556475667808212e-03, + 5.138286219332670671e-03, + 5.136007724427018098e-03, + 5.133720995039534746e-03, + 5.131426035271868455e-03, + 5.129122849238924690e-03, + 5.126811441068811030e-03, + 5.124491814902753031e-03, + 5.122163974895182700e-03, + 5.119827925213592777e-03, + 5.117483670038653829e-03, + 5.115131213564224656e-03, + 5.112770559997193570e-03, + 5.110401713557599819e-03, + 5.108024678478637927e-03, + 5.105639459006568355e-03, + 5.103246059400633368e-03, + 5.100844483933416988e-03, + 5.098434736890280344e-03, + 5.096016822569971426e-03, + 5.093590745284013593e-03, + 5.091156509357116708e-03, + 5.088714119127099068e-03, + 5.086263578944700062e-03, + 5.083804893173723277e-03, + 5.081338066191067732e-03, + 5.078863102386543121e-03, + 5.076380006163091867e-03, + 5.073888781936541047e-03, + 5.071389434135724697e-03, + 5.068881967202572281e-03, + 5.066366385591910063e-03, + 5.063842693771430752e-03, + 5.061310896222064731e-03, + 5.058770997437406734e-03, + 5.056223001924115695e-03, + 5.053666914201915619e-03, + 5.051102738803188788e-03, + 5.048530480273557761e-03, + 5.045950143171286026e-03, + 5.043361732067651836e-03, + 5.040765251546884887e-03, + 5.038160706206018004e-03, + 5.035548100654994690e-03, + 5.032927439516689076e-03, + 5.030298727426732452e-03, + 5.027661969033724899e-03, + 5.025017168999054012e-03, + 5.022364331996940871e-03, + 5.019703462714484275e-03, + 5.017034565851628651e-03, + 5.014357646120933334e-03, + 5.011672708248155438e-03, + 5.008979756971446672e-03, + 5.006278797041958765e-03, + 5.003569833223664790e-03, + 5.000852870293184815e-03, + 4.998127913040006226e-03, + 4.995394966266316315e-03, + 4.992654034787046523e-03, + 4.989905123429958303e-03, + 4.987148237035441030e-03, + 4.984383380456644703e-03, + 4.981610558559498164e-03, + 4.978829776222522610e-03, + 4.976041038337066652e-03, + 4.973244349807094677e-03, + 4.970439715549162564e-03, + 4.967627140492766359e-03, + 4.964806629579792373e-03, + 4.961978187764873663e-03, + 4.959141820015438608e-03, + 4.956297531311327532e-03, + 4.953445326645117101e-03, + 4.950585211022054399e-03, + 4.947717189459890398e-03, + 4.944841266989091592e-03, + 4.941957448652658721e-03, + 4.939065739506138912e-03, + 4.936166144617776599e-03, + 4.933258669068275870e-03, + 4.930343317950934903e-03, + 4.927420096371648572e-03, + 4.924489009448757525e-03, + 4.921550062313270225e-03, + 4.918603260108639179e-03, + 4.915648607990722764e-03, + 4.912686111128179885e-03, + 4.909715774701888837e-03, + 4.906737603905284711e-03, + 4.903751603944401030e-03, + 4.900757780037640760e-03, + 4.897756137415835292e-03, + 4.894746681322384961e-03, + 4.891729417013022246e-03, + 4.888704349756021680e-03, + 4.885671484831977801e-03, + 4.882630827533937859e-03, + 4.879582383167412225e-03, + 4.876526157050291126e-03, + 4.873462154512665963e-03, + 4.870390380897376623e-03, + 4.867310841559232583e-03, + 4.864223541865752773e-03, + 4.861128487196626075e-03, + 4.858025682943784181e-03, + 4.854915134511797112e-03, + 4.851796847317278207e-03, + 4.848670826789218055e-03, + 4.845537078369033940e-03, + 4.842395607510333912e-03, + 4.839246419678996589e-03, + 4.836089520353264830e-03, + 4.832924915023535835e-03, + 4.829752609192616147e-03, + 4.826572608375412007e-03, + 4.823384918099114967e-03, + 4.820189543903195817e-03, + 4.816986491339343007e-03, + 4.813775765971251008e-03, + 4.810557373375214454e-03, + 4.807331319139337110e-03, + 4.804097608864060960e-03, + 4.800856248162057791e-03, + 4.797607242658014949e-03, + 4.794350597988948463e-03, + 4.791086319803861300e-03, + 4.787814413763929848e-03, + 4.784534885542526469e-03, + 4.781247740825072048e-03, + 4.777952985309035991e-03, + 4.774650624704133116e-03, + 4.771340664732001864e-03, + 4.768023111126497467e-03, + 4.764697969633469900e-03, + 4.761365246010672812e-03, + 4.758024946028222360e-03, + 4.754677075468096738e-03, + 4.751321640124117965e-03, + 4.747958645802546895e-03, + 4.744588098321254888e-03, + 4.741210003510245088e-03, + 4.737824367211609933e-03, + 4.734431195279230169e-03, + 4.731030493579142619e-03, + 4.727622267989182829e-03, + 4.724206524399149863e-03, + 4.720783268710905187e-03, + 4.717352506838086434e-03, + 4.713914244706276548e-03, + 4.710468488253045406e-03, + 4.707015243427732989e-03, + 4.703554516191689634e-03, + 4.700086312518076542e-03, + 4.696610638391761697e-03, + 4.693127499809846351e-03, + 4.689636902780893075e-03, + 4.686138853325434034e-03, + 4.682633357475922409e-03, + 4.679120421276494746e-03, + 4.675600050783084577e-03, + 4.672072252063533444e-03, + 4.668537031197309006e-03, + 4.664994394275812084e-03, + 4.661444347402060942e-03, + 4.657886896690840474e-03, + 4.654322048268802817e-03, + 4.650749808274217550e-03, + 4.647170182856937004e-03, + 4.643583178178904529e-03, + 4.639988800413265453e-03, + 4.636387055745347201e-03, + 4.632777950371839634e-03, + 4.629161490501015365e-03, + 4.625537682353196393e-03, + 4.621906532159951800e-03, + 4.618268046164622498e-03, + 4.614622230622272663e-03, + 4.610969091799430389e-03, + 4.607308635974262899e-03, + 4.603640869436597359e-03, + 4.599965798487727457e-03, + 4.596283429440639785e-03, + 4.592593768619770110e-03, + 4.588896822361092712e-03, + 4.585192597012255691e-03, + 4.581481098932335509e-03, + 4.577762334491753717e-03, + 4.574036310072854619e-03, + 4.570303032068977200e-03, + 4.566562506885432637e-03, + 4.562814740938604847e-03, + 4.559059740656462231e-03, + 4.555297512478563744e-03, + 4.551528062855711085e-03, + 4.547751398250190688e-03, + 4.543967525135791073e-03, + 4.540176449997599013e-03, + 4.536378179332088874e-03, + 4.532572719647225828e-03, + 4.528760077462215192e-03, + 4.524940259307745280e-03, + 4.521113271725790521e-03, + 4.517279121269489155e-03, + 4.513437814503705285e-03, + 4.509589358004319377e-03, + 4.505733758358443364e-03, + 4.501871022164849988e-03, + 4.498001156033126259e-03, + 4.494124166584611071e-03, + 4.490240060451490545e-03, + 4.486348844277344462e-03, + 4.482450524717133261e-03, + 4.478545108436842413e-03, + 4.474632602113711409e-03, + 4.470713012436287534e-03, + 4.466786346104206426e-03, + 4.462852609828255393e-03, + 4.458911810330526068e-03, + 4.454963954344116038e-03, + 4.451009048613395989e-03, + 4.447047099893825829e-03, + 4.443078114951785548e-03, + 4.439102100565207529e-03, + 4.435119063522702243e-03, + 4.431129010624107294e-03, + 4.427131948680461393e-03, + 4.423127884513652214e-03, + 4.419116824956838795e-03, + 4.415098776854049951e-03, + 4.411073747060361219e-03, + 4.407041742442002405e-03, + 4.403002769876054011e-03, + 4.398956836250628513e-03, + 4.394903948464911128e-03, + 4.390844113428996748e-03, + 4.386777338063747693e-03, + 4.382703629301386988e-03, + 4.378622994084691716e-03, + 4.374535439367604507e-03, + 4.370440972114891798e-03, + 4.366339599302030208e-03, + 4.362231327915839715e-03, + 4.358116164953566851e-03, + 4.353994117423489255e-03, + 4.349865192344848017e-03, + 4.345729396747527624e-03, + 4.341586737672428059e-03, + 4.337437222171139535e-03, + 4.333280857306023165e-03, + 4.329117650150408718e-03, + 4.324947607788243338e-03, + 4.320770737314259813e-03, + 4.316587045834063309e-03, + 4.312396540463940553e-03, + 4.308199228330708043e-03, + 4.303995116572349559e-03, + 4.299784212337042985e-03, + 4.295566522784160374e-03, + 4.291342055083363291e-03, + 4.287110816415112824e-03, + 4.282872813970659172e-03, + 4.278628054951719856e-03, + 4.274376546570701763e-03, + 4.270118296050722830e-03, + 4.265853310625414285e-03, + 4.261581597538963151e-03, + 4.257303164046323009e-03, + 4.253018017412812414e-03, + 4.248726164914504340e-03, + 4.244427613837923469e-03, + 4.240122371479937771e-03, + 4.235810445148389079e-03, + 4.231491842161321133e-03, + 4.227166569847145249e-03, + 4.222834635545239662e-03, + 4.218496046604870535e-03, + 4.214150810386356819e-03, + 4.209798934259986053e-03, + 4.205440425606672694e-03, + 4.201075291817841888e-03, + 4.196703540295214363e-03, + 4.192325178450868883e-03, + 4.187940213707464290e-03, + 4.183548653497851794e-03, + 4.179150505265260586e-03, + 4.174745776463422743e-03, + 4.170334474556214137e-03, + 4.165916607017986634e-03, + 4.161492181333381613e-03, + 4.157061204997079297e-03, + 4.152623685514575044e-03, + 4.148179630401113357e-03, + 4.143729047182440756e-03, + 4.139271943394623628e-03, + 4.134808326583756799e-03, + 4.130338204306385937e-03, + 4.125861584129092950e-03, + 4.121378473628665995e-03, + 4.116888880392240851e-03, + 4.112392812016962655e-03, + 4.107890276110133347e-03, + 4.103381280289353922e-03, + 4.098865832182260749e-03, + 4.094343939426408480e-03, + 4.089815609669926640e-03, + 4.085280850570611501e-03, + 4.080739669796608696e-03, + 4.076192075026031578e-03, + 4.071638073946855403e-03, + 4.067077674257573924e-03, + 4.062510883666240087e-03, + 4.057937709891110481e-03, + 4.053358160660544725e-03, + 4.048772243712706227e-03, + 4.044179966795915203e-03, + 4.039581337668332953e-03, + 4.034976364098047732e-03, + 4.030365053863262971e-03, + 4.025747414751926906e-03, + 4.021123454561921669e-03, + 4.016493181101187318e-03, + 4.011856602187425201e-03, + 4.007213725648023361e-03, + 4.002564559320729611e-03, + 3.997909111052540439e-03, + 3.993247388700894504e-03, + 3.988579400132527715e-03, + 3.983905153224196610e-03, + 3.979224655862563867e-03, + 3.974537915943883448e-03, + 3.969844941374239995e-03, + 3.965145740069554899e-03, + 3.960440319955342570e-03, + 3.955728688967029630e-03, + 3.951010855049576741e-03, + 3.946286826157685036e-03, + 3.941556610255895002e-03, + 3.936820215318220448e-03, + 3.932077649328383565e-03, + 3.927328920279912934e-03, + 3.922574036175824341e-03, + 3.917813005028575671e-03, + 3.913045834860748654e-03, + 3.908272533703888336e-03, + 3.903493109599755120e-03, + 3.898707570599155552e-03, + 3.893915924762616273e-03, + 3.889118180160380973e-03, + 3.884314344871998836e-03, + 3.879504426986559156e-03, + 3.874688434602807565e-03, + 3.869866375828747915e-03, + 3.865038258782098508e-03, + 3.860204091589835001e-03, + 3.855363882388414612e-03, + 3.850517639323862429e-03, + 3.845665370551517703e-03, + 3.840807084235916755e-03, + 3.835942788551515489e-03, + 3.831072491681596515e-03, + 3.826196201819053247e-03, + 3.821313927166196910e-03, + 3.816425675934426946e-03, + 3.811531456344878065e-03, + 3.806631276627543779e-03, + 3.801725145021868802e-03, + 3.796813069776730845e-03, + 3.791895059150084991e-03, + 3.786971121409165794e-03, + 3.782041264830581818e-03, + 3.777105497699947880e-03, + 3.772163828312334773e-03, + 3.767216264971811300e-03, + 3.762262815991656347e-03, + 3.757303489694461228e-03, + 3.752338294411868610e-03, + 3.747367238484445879e-03, + 3.742390330262428469e-03, + 3.737407578104629154e-03, + 3.732418990379158391e-03, + 3.727424575463328046e-03, + 3.722424341743318325e-03, + 3.717418297614563747e-03, + 3.712406451481375415e-03, + 3.707388811757117517e-03, + 3.702365386864297104e-03, + 3.697336185234276554e-03, + 3.692301215307408017e-03, + 3.687260485533187804e-03, + 3.682214004369914213e-03, + 3.677161780284670615e-03, + 3.672103821753970338e-03, + 3.667040137262608714e-03, + 3.661970735304940269e-03, + 3.656895624383640128e-03, + 3.651814813010486813e-03, + 3.646728309706229534e-03, + 3.641636123000286350e-03, + 3.636538261430919371e-03, + 3.631434733545359228e-03, + 3.626325547899415195e-03, + 3.621210713057907999e-03, + 3.616090237594275173e-03, + 3.610964130090701593e-03, + 3.605832399138277338e-03, + 3.600695053336672429e-03, + 3.595552101294242648e-03, + 3.590403551628248546e-03, + 3.585249412964487681e-03, + 3.580089693937240844e-03, + 3.574924403189981992e-03, + 3.569753549374152235e-03, + 3.564577141150527661e-03, + 3.559395187187890542e-03, + 3.554207696163884985e-03, + 3.549014676764826112e-03, + 3.543816137685450694e-03, + 3.538612087629040316e-03, + 3.533402535307588778e-03, + 3.528187489441386195e-03, + 3.522966958759466988e-03, + 3.517740951999201796e-03, + 3.512509477906434509e-03, + 3.507272545235635801e-03, + 3.502030162749641615e-03, + 3.496782339219475788e-03, + 3.491529083425169711e-03, + 3.486270404154606130e-03, + 3.481006310204259446e-03, + 3.475736810379109407e-03, + 3.470461913492245160e-03, + 3.465181628365528784e-03, + 3.459895963828661571e-03, + 3.454604928719882256e-03, + 3.449308531885865968e-03, + 3.444006782181405039e-03, + 3.438699688469567736e-03, + 3.433387259621843105e-03, + 3.428069504517754999e-03, + 3.422746432045280576e-03, + 3.417418051100458258e-03, + 3.412084370587516527e-03, + 3.406745399419031789e-03, + 3.401401146515681175e-03, + 3.396051620806014425e-03, + 3.390696831227352909e-03, + 3.385336786724533684e-03, + 3.379971496250754742e-03, + 3.374600968767433630e-03, + 3.369225213243824939e-03, + 3.363844238657499961e-03, + 3.358458053993896523e-03, + 3.353066668246502437e-03, + 3.347670090416993410e-03, + 3.342268329514904313e-03, + 3.336861394557728497e-03, + 3.331449294571129857e-03, + 3.326032038588516530e-03, + 3.320609635651459394e-03, + 3.315182094809365071e-03, + 3.309749425119296387e-03, + 3.304311635646840165e-03, + 3.298868735464868633e-03, + 3.293420733654294896e-03, + 3.287967639304259417e-03, + 3.282509461511217124e-03, + 3.277046209379671626e-03, + 3.271577892022062891e-03, + 3.266104518558401223e-03, + 3.260626098116716116e-03, + 3.255142639832617809e-03, + 3.249654152849475522e-03, + 3.244160646318562310e-03, + 3.238662129398720696e-03, + 3.233158611256473688e-03, + 3.227650101066221241e-03, + 3.222136608009807442e-03, + 3.216618141276982815e-03, + 3.211094710065008802e-03, + 3.205566323578528092e-03, + 3.200032991030427217e-03, + 3.194494721640585809e-03, + 3.188951524636678483e-03, + 3.183403409254112384e-03, + 3.177850384735628197e-03, + 3.172292460331532608e-03, + 3.166729645299837942e-03, + 3.161161948905789019e-03, + 3.155589380422400489e-03, + 3.150011949129974571e-03, + 3.144429664316256319e-03, + 3.138842535276640047e-03, + 3.133250571313821089e-03, + 3.127653781737655715e-03, + 3.122052175866027197e-03, + 3.116445763023461060e-03, + 3.110834552542525444e-03, + 3.105218553762778989e-03, + 3.099597776030923058e-03, + 3.093972228701597545e-03, + 3.088341921136150518e-03, + 3.082706862703437928e-03, + 3.077067062779745548e-03, + 3.071422530748402126e-03, + 3.065773276000010109e-03, + 3.060119307932570101e-03, + 3.054460635951054132e-03, + 3.048797269467870986e-03, + 3.043129217902423855e-03, + 3.037456490681308963e-03, + 3.031779097238424849e-03, + 3.026097047014696551e-03, + 3.020410349457918614e-03, + 3.014719014023615942e-03, + 3.009023050173771380e-03, + 3.003322467377682239e-03, + 2.997617275111837988e-03, + 2.991907482859522144e-03, + 2.986193100111294955e-03, + 2.980474136364516351e-03, + 2.974750601123561915e-03, + 2.969022503899959933e-03, + 2.963289854212017120e-03, + 2.957552661584997300e-03, + 2.951810935551263219e-03, + 2.946064685649846769e-03, + 2.940313921426937743e-03, + 2.934558652435483549e-03, + 2.928798888235035255e-03, + 2.923034638392630561e-03, + 2.917265912481514442e-03, + 2.911492720081937120e-03, + 2.905715070781333606e-03, + 2.899932974173364403e-03, + 2.894146439858696126e-03, + 2.888355477444893953e-03, + 2.882560096545998783e-03, + 2.876760306783035948e-03, + 2.870956117783561145e-03, + 2.865147539181790541e-03, + 2.859334580618837565e-03, + 2.853517251742261011e-03, + 2.847695562206284045e-03, + 2.841869521671932554e-03, + 2.836039139806599291e-03, + 2.830204426284531772e-03, + 2.824365390786415502e-03, + 2.818522042999258622e-03, + 2.812674392617246256e-03, + 2.806822449340461590e-03, + 2.800966222875766673e-03, + 2.795105722936638056e-03, + 2.789240959242838495e-03, + 2.783371941520622946e-03, + 2.777498679502875614e-03, + 2.771621182928659787e-03, + 2.765739461543700959e-03, + 2.759853525099965725e-03, + 2.753963383355791019e-03, + 2.748069046076070596e-03, + 2.742170523031941046e-03, + 2.736267824000596181e-03, + 2.730360958766220314e-03, + 2.724449937118524588e-03, + 2.718534768854209780e-03, + 2.712615463775867788e-03, + 2.706692031692167245e-03, + 2.700764482418644124e-03, + 2.694832825776411530e-03, + 2.688897071593078676e-03, + 2.682957229702553990e-03, + 2.677013309944731561e-03, + 2.671065322165663749e-03, + 2.665113276217749832e-03, + 2.659157181959239443e-03, + 2.653197049254783346e-03, + 2.647232887974896101e-03, + 2.641264707996198932e-03, + 2.635292519201557198e-03, + 2.629316331479758170e-03, + 2.623336154725351872e-03, + 2.617351998839559206e-03, + 2.611363873728806111e-03, + 2.605371789306292190e-03, + 2.599375755490526598e-03, + 2.593375782206218828e-03, + 2.587371879384153372e-03, + 2.581364056960825867e-03, + 2.575352324878626108e-03, + 2.569336693086036669e-03, + 2.563317171537194458e-03, + 2.557293770192089772e-03, + 2.551266499016750615e-03, + 2.545235367982742660e-03, + 2.539200387067707450e-03, + 2.533161566254934789e-03, + 2.527118915533217020e-03, + 2.521072444897692107e-03, + 2.515022164348832290e-03, + 2.508968083892626228e-03, + 2.502910213541435086e-03, + 2.496848563312499374e-03, + 2.490783143229544430e-03, + 2.484713963321235654e-03, + 2.478641033622189412e-03, + 2.472564364172750995e-03, + 2.466483965018660251e-03, + 2.460399846211263654e-03, + 2.454312017807652648e-03, + 2.448220489870282443e-03, + 2.442125272467145919e-03, + 2.436026375671941895e-03, + 2.429923809563629741e-03, + 2.423817584226883870e-03, + 2.417707709751738994e-03, + 2.411594196233416212e-03, + 2.405477053773235480e-03, + 2.399356292477252545e-03, + 2.393231922457206545e-03, + 2.387103953830362144e-03, + 2.380972396719070218e-03, + 2.374837261251309516e-03, + 2.368698557560190536e-03, + 2.362556295784146339e-03, + 2.356410486067098218e-03, + 2.350261138558077962e-03, + 2.344108263411357959e-03, + 2.337951870786682783e-03, + 2.331791970848884950e-03, + 2.325628573767754819e-03, + 2.319461689718959989e-03, + 2.313291328882521782e-03, + 2.307117501444398613e-03, + 2.300940217595284689e-03, + 2.294759487530797799e-03, + 2.288575321452364884e-03, + 2.282387729565813882e-03, + 2.276196722082356877e-03, + 2.270002309218381933e-03, + 2.263804501195071459e-03, + 2.257603308238903973e-03, + 2.251398740581177487e-03, + 2.245190808458182117e-03, + 2.238979522111406509e-03, + 2.232764891787092885e-03, + 2.226546927736424396e-03, + 2.220325640215738486e-03, + 2.214101039486133116e-03, + 2.207873135813350103e-03, + 2.201641939468678907e-03, + 2.195407460727461738e-03, + 2.189169709870710748e-03, + 2.182928697183580610e-03, + 2.176684432956309170e-03, + 2.170436927484082137e-03, + 2.164186191066641476e-03, + 2.157932234008500937e-03, + 2.151675066619131681e-03, + 2.145414699212516013e-03, + 2.139151142107358159e-03, + 2.132884405627260335e-03, + 2.126614500100221412e-03, + 2.120341435859185528e-03, + 2.114065223241596691e-03, + 2.107785872589250462e-03, + 2.101503394249179535e-03, + 2.095217798572590780e-03, + 2.088929095915059101e-03, + 2.082637296637409111e-03, + 2.076342411104178162e-03, + 2.070044449685261734e-03, + 2.063743422754362161e-03, + 2.057439340689956164e-03, + 2.051132213875139602e-03, + 2.044822052697244964e-03, + 2.038508867548043894e-03, + 2.032192668823941048e-03, + 2.025873466925543886e-03, + 2.019551272257847415e-03, + 2.013226095230417206e-03, + 2.006897946256893262e-03, + 2.000566835755550332e-03, + 1.994232774148822166e-03, + 1.987895771863174444e-03, + 1.981555839330064513e-03, + 1.975212986984498965e-03, + 1.968867225266033270e-03, + 1.962518564618585728e-03, + 1.956167015490022434e-03, + 1.949812588332678134e-03, + 1.943455293602870714e-03, + 1.937095141761067084e-03, + 1.930732143272110863e-03, + 1.924366308604755519e-03, + 1.917997648231867767e-03, + 1.911626172630630748e-03, + 1.905251892282149593e-03, + 1.898874817671329348e-03, + 1.892494959287738428e-03, + 1.886112327624422068e-03, + 1.879726933178772286e-03, + 1.873338786452051702e-03, + 1.866947897949194262e-03, + 1.860554278179825036e-03, + 1.854157937656780936e-03, + 1.847758886897119673e-03, + 1.841357136421939130e-03, + 1.834952696755947363e-03, + 1.828545578428011648e-03, + 1.822135791970640878e-03, + 1.815723347920165324e-03, + 1.809308256816973210e-03, + 1.802890529205026507e-03, + 1.796470175632078857e-03, + 1.790047206649862492e-03, + 1.783621632813728493e-03, + 1.777193464682459440e-03, + 1.770762712819283144e-03, + 1.764329387790261735e-03, + 1.757893500165995599e-03, + 1.751455060520046292e-03, + 1.745014079429895197e-03, + 1.738570567476800405e-03, + 1.732124535245415731e-03, + 1.725675993324004946e-03, + 1.719224952304607016e-03, + 1.712771422782535845e-03, + 1.706315415356944500e-03, + 1.699856940630292213e-03, + 1.693396009208541489e-03, + 1.686932631701371262e-03, + 1.680466818721710904e-03, + 1.673998580885947742e-03, + 1.667527928814117443e-03, + 1.661054873129547095e-03, + 1.654579424458665687e-03, + 1.648101593432019360e-03, + 1.641621390682647483e-03, + 1.635138826847817818e-03, + 1.628653912567401075e-03, + 1.622166658484877925e-03, + 1.615677075247175286e-03, + 1.609185173504278392e-03, + 1.602690963909441995e-03, + 1.596194457119381842e-03, + 1.589695663793757935e-03, + 1.583194594595725528e-03, + 1.576691260191420566e-03, + 1.570185671250156137e-03, + 1.563677838444620452e-03, + 1.557167772450500408e-03, + 1.550655483946319175e-03, + 1.544140983614421519e-03, + 1.537624282139538100e-03, + 1.531105390209736104e-03, + 1.524584318516303879e-03, + 1.518061077753260664e-03, + 1.511535678617945523e-03, + 1.505008131810473731e-03, + 1.498478448033959244e-03, + 1.491946637994679943e-03, + 1.485412712401663459e-03, + 1.478876681966857180e-03, + 1.472338557405350945e-03, + 1.465798349434835378e-03, + 1.459256068776168059e-03, + 1.452711726152853102e-03, + 1.446165332291241955e-03, + 1.439616897920726170e-03, + 1.433066433773367470e-03, + 1.426513950583713219e-03, + 1.419959459089830756e-03, + 1.413402970031805766e-03, + 1.406844494152756884e-03, + 1.400284042198665473e-03, + 1.393721624917926760e-03, + 1.387157253061917749e-03, + 1.380590937384462919e-03, + 1.374022688642033505e-03, + 1.367452517593955880e-03, + 1.360880435001960093e-03, + 1.354306451630359412e-03, + 1.347730578246276491e-03, + 1.341152825619251971e-03, + 1.334573204521072309e-03, + 1.327991725726789148e-03, + 1.321408400013083899e-03, + 1.314823238160008978e-03, + 1.308236250949352608e-03, + 1.301647449165666643e-03, + 1.295056843596081387e-03, + 1.288464445029922001e-03, + 1.281870264258931635e-03, + 1.275274312077453358e-03, + 1.268676599281899978e-03, + 1.262077136671341899e-03, + 1.255475935046947026e-03, + 1.248873005212217113e-03, + 1.242268357973159293e-03, + 1.235662004137845450e-03, + 1.229053954516608248e-03, + 1.222444219922250381e-03, + 1.215832811169651872e-03, + 1.209219739075609616e-03, + 1.202605014459845250e-03, + 1.195988648143381022e-03, + 1.189370650950269089e-03, + 1.182751033705963266e-03, + 1.176129807238352051e-03, + 1.169506982377547860e-03, + 1.162882569955553521e-03, + 1.156256580806424910e-03, + 1.149629025766490823e-03, + 1.142999915673830174e-03, + 1.136369261368814316e-03, + 1.129737073693605487e-03, + 1.123103363492341557e-03, + 1.116468141611340727e-03, + 1.109831418898718156e-03, + 1.103193206204233084e-03, + 1.096553514380272645e-03, + 1.089912354280389703e-03, + 1.083269736760300974e-03, + 1.076625672677735020e-03, + 1.069980172891878438e-03, + 1.063333248264335595e-03, + 1.056684909657847971e-03, + 1.050035167937237194e-03, + 1.043384033969238294e-03, + 1.036731518622118061e-03, + 1.030077632765873455e-03, + 1.023422387272435218e-03, + 1.016765793015134882e-03, + 1.010107860869287203e-03, + 1.003448601711631359e-03, + 9.967880264205623234e-04, + 9.901261458763108408e-04, + 9.834629709605826036e-04, + 9.767985125563622296e-04, + 9.701327815489539869e-04, + 9.634657888244774638e-04, + 9.567975452708822734e-04, + 9.501280617777837969e-04, + 9.434573492360052169e-04, + 9.367854185381485664e-04, + 9.301122805780595668e-04, + 9.234379462510319998e-04, + 9.167624264540114292e-04, + 9.100857320851287770e-04, + 9.034078740439198743e-04, + 8.967288632315122696e-04, + 8.900487105500954873e-04, + 8.833674269035023769e-04, + 8.766850231967377024e-04, + 8.700015103358143187e-04, + 8.633168992287732976e-04, + 8.566312007841914156e-04, + 8.499444259121128080e-04, + 8.432565855242645089e-04, + 8.365676905329229177e-04, + 8.298777518518582474e-04, + 8.231867803961728704e-04, + 8.164947870818339186e-04, + 8.098017828262537654e-04, + 8.031077785477445637e-04, + 7.964127851657323755e-04, + 7.897168136009619782e-04, + 7.830198747750242603e-04, + 7.763219796105666655e-04, + 7.696231390315007087e-04, + 7.629233639624634529e-04, + 7.562226653293881249e-04, + 7.495210540590507018e-04, + 7.428185410788922102e-04, + 7.361151373180478512e-04, + 7.294108537058460306e-04, + 7.227057011728208955e-04, + 7.159996906505559922e-04, + 7.092928330712896167e-04, + 7.025851393681214639e-04, + 6.958766204752160232e-04, + 6.891672873272652487e-04, + 6.824571508600713174e-04, + 6.757462220099958545e-04, + 6.690345117141775332e-04, + 6.623220309107301579e-04, + 6.556087905383580980e-04, + 6.488948015361809723e-04, + 6.421800748447680863e-04, + 6.354646214044780850e-04, + 6.287484521572271785e-04, + 6.220315780448325890e-04, + 6.153140100099690341e-04, + 6.085957589963690876e-04, + 6.018768359476822736e-04, + 5.951572518084396806e-04, + 5.884370175238773457e-04, + 5.817161440395490855e-04, + 5.749946423015295672e-04, + 5.682725232566222589e-04, + 5.615497978518235083e-04, + 5.548264770348914233e-04, + 5.481025717538164565e-04, + 5.413780929570191636e-04, + 5.346530515935642245e-04, + 5.279274586127619996e-04, + 5.212013249640039475e-04, + 5.144746615977930509e-04, + 5.077474794642321135e-04, + 5.010197895140417173e-04, + 4.942916026984090850e-04, + 4.875629299685103261e-04, + 4.808337822760954728e-04, + 4.741041705729450773e-04, + 4.673741058110767528e-04, + 4.606435989429533400e-04, + 4.539126609210171882e-04, + 4.471813026978913833e-04, + 4.404495352265950158e-04, + 4.337173694599939788e-04, + 4.269848163513840513e-04, + 4.202518868540255589e-04, + 4.135185919209763525e-04, + 4.067849425061190898e-04, + 4.000509495626466592e-04, + 3.933166240440193130e-04, + 3.865819769041739192e-04, + 3.798470190963768750e-04, + 3.731117615741827583e-04, + 3.663762152912691502e-04, + 3.596403912009641930e-04, + 3.529043002568340659e-04, + 3.461679534121365467e-04, + 3.394313616200282028e-04, + 3.326945358337736426e-04, + 3.259574870062775733e-04, + 3.192202260902900950e-04, + 3.124827640386137833e-04, + 3.057451118035654368e-04, + 2.990072803375515720e-04, + 2.922692805926064988e-04, + 2.855311235202201490e-04, + 2.787928200723738693e-04, + 2.720543812000202066e-04, + 2.653158178541157740e-04, + 2.585771409854547708e-04, + 2.518383615442738995e-04, + 2.450994904804608583e-04, + 2.383605387437622903e-04, + 2.316215172832395959e-04, + 2.248824370478521792e-04, + 2.181433089859142354e-04, + 2.114041440453011563e-04, + 2.046649531736593499e-04, + 1.979257473180100191e-04, + 1.911865374245847967e-04, + 1.844473344398554662e-04, + 1.777081493088671907e-04, + 1.709689929769455893e-04, + 1.642298763884050459e-04, + 1.574908104867532165e-04, + 1.507518062156515241e-04, + 1.440128745173954597e-04, + 1.372740263339473660e-04, + 1.305352726067685216e-04, + 1.237966242764266601e-04, + 1.170580922828029844e-04, + 1.103196875652997242e-04, + 1.035814210622971131e-04, + 9.684330371173616094e-05, + 9.010534645057474994e-05, + 8.336756021499614063e-05, + 7.662995594061586464e-05, + 6.989254456208876911e-05, + 6.315533701294122294e-05, + 5.641834422660440206e-05, + 4.968157713474467911e-05, + 4.294504666904826759e-05, + 3.620876375955113725e-05, + 2.947273933567287193e-05, + 2.273698432604888593e-05, + 1.600150965813676036e-05, + 9.266326258424338808e-06, + 2.531445052637039051e-06, +-4.203123034730374442e-06, +-1.093736708020619122e-05, +-1.767127616113411574e-05, +-2.440483935621673173e-05, +-3.113804574493235012e-05, +-3.787088440800317340e-05, +-4.460334442756342836e-05, +-5.133541488612561310e-05, +-5.806708486809967443e-05, +-6.479834345883549466e-05, +-7.152917974441367450e-05, +-7.825958281294143244e-05, +-8.498954175284230297e-05, +-9.171904565452568595e-05, +-9.844808360935380519e-05, +-1.051766447098088789e-04, +-1.119047180498870917e-04, +-1.186322927248897500e-04, +-1.253593578312171483e-04, +-1.320859024668352775e-04, +-1.388119157310695553e-04, +-1.455373867243963748e-04, +-1.522623045489863037e-04, +-1.589866583081212708e-04, +-1.657104371066631045e-04, +-1.724336300512200118e-04, +-1.791562262491155563e-04, +-1.858782148099051860e-04, +-1.925995848443429344e-04, +-1.993203254645532936e-04, +-2.060404257844920546e-04, +-2.127598749193705685e-04, +-2.194786619861945954e-04, +-2.261967761035567066e-04, +-2.329142063914315872e-04, +-2.396309419716410774e-04, +-2.463469719676480117e-04, +-2.530622855043483774e-04, +-2.597768717084637954e-04, +-2.664907197087095446e-04, +-2.732038186347613990e-04, +-2.799161576189251356e-04, +-2.866277257944257182e-04, +-2.933385122967042740e-04, +-3.000485062632043433e-04, +-3.067576968324239612e-04, +-3.134660731454210186e-04, +-3.201736243447924311e-04, +-3.268803395748349811e-04, +-3.335862079820131501e-04, +-3.402912187143805893e-04, +-3.469953609221176666e-04, +-3.536986237573271487e-04, +-3.604009963738280401e-04, +-3.671024679276176160e-04, +-3.738030275766691100e-04, +-3.805026644807239810e-04, +-3.872013678016796782e-04, +-3.938991267037621918e-04, +-4.005959303524925371e-04, +-4.072917679163522522e-04, +-4.139866285650039505e-04, +-4.206805014709537284e-04, +-4.273733758085244798e-04, +-4.340652407540203156e-04, +-4.407560854861202371e-04, +-4.474458991856684518e-04, +-4.541346710354689166e-04, +-4.608223902207517621e-04, +-4.675090459289684319e-04, +-4.741946273495796136e-04, +-4.808791236746007541e-04, +-4.875625240980184343e-04, +-4.942448178162595030e-04, +-5.009259940283522982e-04, +-5.076060419349824691e-04, +-5.142849507396197875e-04, +-5.209627096483193057e-04, +-5.276393078687658484e-04, +-5.343147346119293730e-04, +-5.409889790903021651e-04, +-5.476620305195437901e-04, +-5.543338781174669307e-04, +-5.610045111041937283e-04, +-5.676739187025526016e-04, +-5.743420901378722479e-04, +-5.810090146377654531e-04, +-5.876746814326108031e-04, +-5.943390797553307469e-04, +-6.010021988411900443e-04, +-6.076640279283439380e-04, +-6.143245562572459623e-04, +-6.209837730711168608e-04, +-6.276416676161162157e-04, +-6.342982291403118046e-04, +-6.409534468951847992e-04, +-6.476073101346121325e-04, +-6.542598081150243590e-04, +-6.609109300958727288e-04, +-6.675606653390562953e-04, +-6.742090031094505722e-04, +-6.808559326747064136e-04, +-6.875014433050484616e-04, +-6.941455242737315946e-04, +-7.007881648568381819e-04, +-7.074293543330721938e-04, +-7.140690819841484299e-04, +-7.207073370949578601e-04, +-7.273441089525447883e-04, +-7.339793868477579837e-04, +-7.406131600735627952e-04, +-7.472454179263149799e-04, +-7.538761497055596929e-04, +-7.605053447130843275e-04, +-7.671329922544139557e-04, +-7.737590816377994422e-04, +-7.803836021743732441e-04, +-7.870065431786171361e-04, +-7.936278939677874743e-04, +-8.002476438624443961e-04, +-8.068657821862576388e-04, +-8.134822982657888323e-04, +-8.200971814309609585e-04, +-8.267104210148534370e-04, +-8.333220063534968860e-04, +-8.399319267862555196e-04, +-8.465401716559958507e-04, +-8.531467303080727442e-04, +-8.597515920919620094e-04, +-8.663547463595170023e-04, +-8.729561824665996997e-04, +-8.795558897720728245e-04, +-8.861538576379543453e-04, +-8.927500754298200395e-04, +-8.993445325165783056e-04, +-9.059372182702844388e-04, +-9.125281220666585542e-04, +-9.191172332845316687e-04, +-9.257045413063561424e-04, +-9.322900355180233165e-04, +-9.388737053086385412e-04, +-9.454555400709302448e-04, +-9.520355292013896881e-04, +-9.586136620993467895e-04, +-9.651899281680933595e-04, +-9.717643168146650667e-04, +-9.783368174489162888e-04, +-9.849074194851390428e-04, +-9.914761123403393207e-04, +-9.980428854358483221e-04, +-1.004607728196323796e-03, +-1.011170630049903997e-03, +-1.017731580428606671e-03, +-1.024290568768111568e-03, +-1.030847584507562460e-03, +-1.037402617090096022e-03, +-1.043955655962280861e-03, +-1.050506690574635983e-03, +-1.057055710381435421e-03, +-1.063602704840495728e-03, +-1.070147663413572149e-03, +-1.076690575566518863e-03, +-1.083231430768269834e-03, +-1.089770218492331104e-03, +-1.096306928215774442e-03, +-1.102841549419390863e-03, +-1.109374071588150115e-03, +-1.115904484210639060e-03, +-1.122432776779582744e-03, +-1.128958938791647503e-03, +-1.135482959747229114e-03, +-1.142004829150919431e-03, +-1.148524536511300390e-03, +-1.155042071340734973e-03, +-1.161557423155909095e-03, +-1.168070581477247865e-03, +-1.174581535829458557e-03, +-1.181090275741315289e-03, +-1.187596790745468417e-03, +-1.194101070378814685e-03, +-1.200603104182677633e-03, +-1.207102881701779340e-03, +-1.213600392485734243e-03, +-1.220095626088037568e-03, +-1.226588572066229484e-03, +-1.233079219982353720e-03, +-1.239567559402377298e-03, +-1.246053579896738922e-03, +-1.252537271040120000e-03, +-1.259018622411273332e-03, +-1.265497623593446388e-03, +-1.271974264174211521e-03, +-1.278448533745233295e-03, +-1.284920421902665307e-03, +-1.291389918247317584e-03, +-1.297857012383638303e-03, +-1.304321693921345294e-03, +-1.310783952473694360e-03, +-1.317243777659083456e-03, +-1.323701159100067800e-03, +-1.330156086423515353e-03, +-1.336608549260983030e-03, +-1.343058537248524370e-03, +-1.349506040026480710e-03, +-1.355951047240000961e-03, +-1.362393548538503403e-03, +-1.368833533576159023e-03, +-1.375270992011723469e-03, +-1.381705913508331045e-03, +-1.388138287733938587e-03, +-1.394568104361111009e-03, +-1.400995353066863220e-03, +-1.407420023532994068e-03, +-1.413842105446266742e-03, +-1.420261588497416950e-03, +-1.426678462382752329e-03, +-1.433092716802435943e-03, +-1.439504341462092846e-03, +-1.445913326071812622e-03, +-1.452319660346320686e-03, +-1.458723334005346695e-03, +-1.465124336773415952e-03, +-1.471522658379673110e-03, +-1.477918288558379171e-03, +-1.484311217048365052e-03, +-1.490701433593555033e-03, +-1.497088927942757074e-03, +-1.503473689849460721e-03, +-1.509855709072229803e-03, +-1.516234975374851184e-03, +-1.522611478525339465e-03, +-1.528985208297410853e-03, +-1.535356154469465738e-03, +-1.541724306824776916e-03, +-1.548089655151908958e-03, +-1.554452189244189984e-03, +-1.560811898900203026e-03, +-1.567168773923603448e-03, +-1.573522804122919234e-03, +-1.579873979311988575e-03, +-1.586222289309775768e-03, +-1.592567723940145922e-03, +-1.598910273032418767e-03, +-1.605249926420781017e-03, +-1.611586673944830420e-03, +-1.617920505449340490e-03, +-1.624251410784107634e-03, +-1.630579379804287252e-03, +-1.636904402370574149e-03, +-1.643226468348214829e-03, +-1.649545567608438424e-03, +-1.655861690027493052e-03, +-1.662174825486798044e-03, +-1.668484963873378924e-03, +-1.674792095079325306e-03, +-1.681096209002297870e-03, +-1.687397295545332333e-03, +-1.693695344616654276e-03, +-1.699990346130098506e-03, +-1.706282290004934501e-03, +-1.712571166165648487e-03, +-1.718856964542482720e-03, +-1.725139675070854568e-03, +-1.731419287691826191e-03, +-1.737695792352231174e-03, +-1.743969179003736257e-03, +-1.750239437604242995e-03, +-1.756506558116920427e-03, +-1.762770530510378774e-03, +-1.769031344759012473e-03, +-1.775288990842822153e-03, +-1.781543458747214493e-03, +-1.787794738463522205e-03, +-1.794042819988424632e-03, +-1.800287693324498315e-03, +-1.806529348479990168e-03, +-1.812767775468636204e-03, +-1.819002964310101507e-03, +-1.825234905029767289e-03, +-1.831463587658577153e-03, +-1.837689002233482485e-03, +-1.843911138796958680e-03, +-1.850129987397401959e-03, +-1.856345538089291137e-03, +-1.862557780932249784e-03, +-1.868766705992426632e-03, +-1.874972303341553622e-03, +-1.881174563057087714e-03, +-1.887373475222600770e-03, +-1.893569029927546664e-03, +-1.899761217267112749e-03, +-1.905950027342680642e-03, +-1.912135450261317950e-03, +-1.918317476136262908e-03, +-1.924496095086745484e-03, +-1.930671297237775315e-03, +-1.936843072720515098e-03, +-1.943011411672447781e-03, +-1.949176304236403595e-03, +-1.955337740562100926e-03, +-1.961495710804508300e-03, +-1.967650205125381566e-03, +-1.973801213692379618e-03, +-1.979948726678862521e-03, +-1.986092734264962266e-03, +-1.992233226636695026e-03, +-1.998370193986087357e-03, +-2.004503626511584292e-03, +-2.010633514417824695e-03, +-2.016759847915462148e-03, +-2.022882617221655448e-03, +-2.029001812559542983e-03, +-2.035117424158727154e-03, +-2.041229442255105241e-03, +-2.047337857090647355e-03, +-2.053442658913788056e-03, +-2.059543837979557323e-03, +-2.065641384548637296e-03, +-2.071735288888771741e-03, +-2.077825541273785499e-03, +-2.083912131983762725e-03, +-2.089995051305477535e-03, +-2.096074289531825886e-03, +-2.102149836962378948e-03, +-2.108221683903129407e-03, +-2.114289820666346176e-03, +-2.120354237570982493e-03, +-2.126414924942490736e-03, +-2.132471873112638978e-03, +-2.138525072419981098e-03, +-2.144574513209348068e-03, +-2.150620185832276873e-03, +-2.156662080647138435e-03, +-2.162700188018221691e-03, +-2.168734498317104013e-03, +-2.174765001921762173e-03, +-2.180791689216422715e-03, +-2.186814550592558557e-03, +-2.192833576448051120e-03, +-2.198848757187324768e-03, +-2.204860083221761406e-03, +-2.210867544969200016e-03, +-2.216871132854395920e-03, +-2.222870837308860755e-03, +-2.228866648770660378e-03, +-2.234858557684817754e-03, +-2.240846554503174177e-03, +-2.246830629684149882e-03, +-2.252810773693258821e-03, +-2.258786977002590849e-03, +-2.264759230091207675e-03, +-2.270727523445300721e-03, +-2.276691847557292536e-03, +-2.282652192927145211e-03, +-2.288608550061466563e-03, +-2.294560909473674064e-03, +-2.300509261684319674e-03, +-2.306453597220886435e-03, +-2.312393906617653608e-03, +-2.318330180416153328e-03, +-2.324262409164628944e-03, +-2.330190583418564106e-03, +-2.336114693740454218e-03, +-2.342034730699648574e-03, +-2.347950684872692536e-03, +-2.353862546843463709e-03, +-2.359770307202278122e-03, +-2.365673956547338294e-03, +-2.371573485483185854e-03, +-2.377468884622144837e-03, +-2.383360144583502888e-03, +-2.389247255993316547e-03, +-2.395130209485410010e-03, +-2.401008995700538561e-03, +-2.406883605286530819e-03, +-2.412754028898656498e-03, +-2.418620257199399163e-03, +-2.424482280858316578e-03, +-2.430340090552487835e-03, +-2.436193676966026764e-03, +-2.442043030790527324e-03, +-2.447888142724906173e-03, +-2.453729003475204045e-03, +-2.459565603754939201e-03, +-2.465397934285255745e-03, +-2.471225985794005525e-03, +-2.477049749017208764e-03, +-2.482869214697527947e-03, +-2.488684373585658190e-03, +-2.494495216439489380e-03, +-2.500301734024228464e-03, +-2.506103917112716909e-03, +-2.511901756485294089e-03, +-2.517695242929584784e-03, +-2.523484367240900767e-03, +-2.529269120222091185e-03, +-2.535049492683341330e-03, +-2.540825475442626269e-03, +-2.546597059325249410e-03, +-2.552364235164203323e-03, +-2.558126993800334970e-03, +-2.563885326081449725e-03, +-2.569639222863624121e-03, +-2.575388675010373187e-03, +-2.581133673392471337e-03, +-2.586874208889077768e-03, +-2.592610272386232460e-03, +-2.598341854778343698e-03, +-2.604068946967247420e-03, +-2.609791539862377652e-03, +-2.615509624381107383e-03, +-2.621223191448532157e-03, +-2.626932231997363820e-03, +-2.632636736968249278e-03, +-2.638336697309641259e-03, +-2.644032103977613565e-03, +-2.649722947936302558e-03, +-2.655409220157441824e-03, +-2.661090911620742506e-03, +-2.666768013314025580e-03, +-2.672440516232355359e-03, +-2.678108411379345744e-03, +-2.683771689766223031e-03, +-2.689430342412064013e-03, +-2.695084360344084801e-03, +-2.700733734597232302e-03, +-2.706378456214588411e-03, +-2.712018516247223423e-03, +-2.717653905754013020e-03, +-2.723284615802022083e-03, +-2.728910637466331647e-03, +-2.734531961829896659e-03, +-2.740148579983810954e-03, +-2.745760483027512820e-03, +-2.751367662067872102e-03, +-2.756970108220609204e-03, +-2.762567812608863072e-03, +-2.768160766364272368e-03, +-2.773748960626786376e-03, +-2.779332386543876144e-03, +-2.784911035271814706e-03, +-2.790484897974788037e-03, +-2.796053965825053781e-03, +-2.801618230003260004e-03, +-2.807177681698261318e-03, +-2.812732312106975760e-03, +-2.818282112434802433e-03, +-2.823827073895156595e-03, +-2.829367187709906379e-03, +-2.834902445109218402e-03, +-2.840432837331368678e-03, +-2.845958355623061809e-03, +-2.851478991239605760e-03, +-2.856994735444001992e-03, +-2.862505579508375746e-03, +-2.868011514712456855e-03, +-2.873512532344992248e-03, +-2.879008623702880749e-03, +-2.884499780091296251e-03, +-2.889985992824038990e-03, +-2.895467253223342995e-03, +-2.900943552619691772e-03, +-2.906414882352248517e-03, +-2.911881233768633635e-03, +-2.917342598224798543e-03, +-2.922798967085421615e-03, +-2.928250331723480579e-03, +-2.933696683520588613e-03, +-2.939138013867173462e-03, +-2.944574314161594892e-03, +-2.950005575811411040e-03, +-2.955431790232574372e-03, +-2.960852948849289432e-03, +-2.966269043095026356e-03, +-2.971680064411171690e-03, +-2.977086004248351552e-03, +-2.982486854065618913e-03, +-2.987882605330558980e-03, +-2.993273249519625302e-03, +-2.998658778117980605e-03, +-3.004039182619311181e-03, +-3.009414454526194212e-03, +-3.014784585349949021e-03, +-3.020149566610490915e-03, +-3.025509389836697656e-03, +-3.030864046566015668e-03, +-3.036213528344779665e-03, +-3.041557826728385691e-03, +-3.046896933280436766e-03, +-3.052230839573968901e-03, +-3.057559537190619736e-03, +-3.062883017720766446e-03, +-3.068201272763892637e-03, +-3.073514293928129512e-03, +-3.078822072830683480e-03, +-3.084124601097660082e-03, +-3.089421870363927812e-03, +-3.094713872273462032e-03, +-3.100000598479166723e-03, +-3.105282040642764335e-03, +-3.110558190435052522e-03, +-3.115829039536046827e-03, +-3.121094579634195714e-03, +-3.126354802427646056e-03, +-3.131609699622938184e-03, +-3.136859262936012027e-03, +-3.142103484092022368e-03, +-3.147342354824616759e-03, +-3.152575866877089551e-03, +-3.157804012001616881e-03, +-3.163026781959350775e-03, +-3.168244168520796458e-03, +-3.173456163465362620e-03, +-3.178662758581775154e-03, +-3.183863945667904111e-03, +-3.189059716530646613e-03, +-3.194250062986223049e-03, +-3.199434976860069963e-03, +-3.204614449986653568e-03, +-3.209788474209770721e-03, +-3.214957041382705480e-03, +-3.220120143367379527e-03, +-3.225277772035697443e-03, +-3.230429919268138547e-03, +-3.235576576955023244e-03, +-3.240717736995760590e-03, +-3.245853391298940665e-03, +-3.250983531782674144e-03, +-3.256108150374376758e-03, +-3.261227239010672154e-03, +-3.266340789637743169e-03, +-3.271448794210954965e-03, +-3.276551244695198074e-03, +-3.281648133064770864e-03, +-3.286739451303232959e-03, +-3.291825191403656772e-03, +-3.296905345368793608e-03, +-3.301979905210334666e-03, +-3.307048862949760193e-03, +-3.312112210618218915e-03, +-3.317169940255752618e-03, +-3.322222043912609769e-03, +-3.327268513647844289e-03, +-3.332309341530633948e-03, +-3.337344519639436850e-03, +-3.342374040062150164e-03, +-3.347397894896441458e-03, +-3.352416076249503229e-03, +-3.357428576237961836e-03, +-3.362435386988289927e-03, +-3.367436500636320287e-03, +-3.372431909327692958e-03, +-3.377421605217676131e-03, +-3.382405580471014358e-03, +-3.387383827262244705e-03, +-3.392356337775773948e-03, +-3.397323104205165166e-03, +-3.402284118754203730e-03, +-3.407239373636192573e-03, +-3.412188861074024176e-03, +-3.417132573300569152e-03, +-3.422070502558189221e-03, +-3.427002641099204279e-03, +-3.431928981185674264e-03, +-3.436849515089318054e-03, +-3.441764235091762832e-03, +-3.446673133484484675e-03, +-3.451576202568592145e-03, +-3.456473434655248263e-03, +-3.461364822065241594e-03, +-3.466250357129380035e-03, +-3.471130032188333818e-03, +-3.476003839592501071e-03, +-3.480871771702259351e-03, +-3.485733820888121774e-03, +-3.490589979529974598e-03, +-3.495440240018162729e-03, +-3.500284594752756367e-03, +-3.505123036143671569e-03, +-3.509955556610999845e-03, +-3.514782148584594430e-03, +-3.519602804504451919e-03, +-3.524417516820568721e-03, +-3.529226277992784065e-03, +-3.534029080491123478e-03, +-3.538825916795651765e-03, +-3.543616779396312980e-03, +-3.548401660793212321e-03, +-3.553180553496737559e-03, +-3.557953450026819179e-03, +-3.562720342914136879e-03, +-3.567481224698814193e-03, +-3.572236087931618918e-03, +-3.576984925173257949e-03, +-3.581727728994443631e-03, +-3.586464491976222059e-03, +-3.591195206709774448e-03, +-3.595919865796304814e-03, +-3.600638461847429413e-03, +-3.605350987484725288e-03, +-3.610057435340161772e-03, +-3.614757798055882355e-03, +-3.619452068284165647e-03, +-3.624140238687576735e-03, +-3.628822301939196165e-03, +-3.633498250721849728e-03, +-3.638168077728986226e-03, +-3.642831775664490557e-03, +-3.647489337242007610e-03, +-3.652140755186147458e-03, +-3.656786022231199498e-03, +-3.661425131122306859e-03, +-3.666058074614746056e-03, +-3.670684845474054929e-03, +-3.675305436476283306e-03, +-3.679919840407870710e-03, +-3.684528050065478087e-03, +-3.689130058256382023e-03, +-3.693725857798051040e-03, +-3.698315441518557588e-03, +-3.702898802256383327e-03, +-3.707475932860310273e-03, +-3.712046826189678832e-03, +-3.716611475114491459e-03, +-3.721169872514738276e-03, +-3.725722011281390640e-03, +-3.730267884315733706e-03, +-3.734807484529437983e-03, +-3.739340804844915392e-03, +-3.743867838194929378e-03, +-3.748388577522882882e-03, +-3.752903015782792749e-03, +-3.757411145939061180e-03, +-3.761912960966812703e-03, +-3.766408453851800061e-03, +-3.770897617590168293e-03, +-3.775380445188911832e-03, +-3.779856929665437355e-03, +-3.784327064047929377e-03, +-3.788790841375201928e-03, +-3.793248254696617028e-03, +-3.797699297072241673e-03, +-3.802143961573056005e-03, +-3.806582241280229064e-03, +-3.811014129286099776e-03, +-3.815439618693530766e-03, +-3.819858702616002466e-03, +-3.824271374177921467e-03, +-3.828677626514227599e-03, +-3.833077452770767331e-03, +-3.837470846104151095e-03, +-3.841857799681601925e-03, +-3.846238306681284622e-03, +-3.850612360292135321e-03, +-3.854979953713772584e-03, +-3.859341080156809215e-03, +-3.863695732842472794e-03, +-3.868043905002955217e-03, +-3.872385589881464744e-03, +-3.876720780731585016e-03, +-3.881049470818242163e-03, +-3.885371653417063822e-03, +-3.889687321814441160e-03, +-3.893996469307846753e-03, +-3.898299089205612116e-03, +-3.902595174826884328e-03, +-3.906884719501896655e-03, +-3.911167716571651090e-03, +-3.915444159388236679e-03, +-3.919714041314689007e-03, +-3.923977355724897823e-03, +-3.928234096003842095e-03, +-3.932484255547512818e-03, +-3.936727827762756017e-03, +-3.940964806067612757e-03, +-3.945195183890945305e-03, +-3.949418954672749386e-03, +-3.953636111864257396e-03, +-3.957846648927284411e-03, +-3.962050559335155396e-03, +-3.966247836572090249e-03, +-3.970438474133298340e-03, +-3.974622465525223976e-03, +-3.978799804265391142e-03, +-3.982970483882314165e-03, +-3.987134497915823840e-03, +-3.991291839916668444e-03, +-3.995442503446899711e-03, +-3.999586482079700231e-03, +-4.003723769399282831e-03, +-4.007854359001143847e-03, +-4.011978244492107361e-03, +-4.016095419489750136e-03, +-4.020205877623406025e-03, +-4.024309612533041002e-03, +-4.028406617870330421e-03, +-4.032496887298033655e-03, +-4.036580414489850110e-03, +-4.040657193131173830e-03, +-4.044727216918442975e-03, +-4.048790479559312427e-03, +-4.052846974772818592e-03, +-4.056896696289287452e-03, +-4.060939637850233090e-03, +-4.064975793208630041e-03, +-4.069005156128592364e-03, +-4.073027720385717122e-03, +-4.077043479766923918e-03, +-4.081052428070317852e-03, +-4.085054559105498299e-03, +-4.089049866693572795e-03, +-4.093038344666584567e-03, +-4.097019986868407661e-03, +-4.100994787154125035e-03, +-4.104962739390159536e-03, +-4.108923837454481198e-03, +-4.112878075236339227e-03, +-4.116825446636527414e-03, +-4.120765945567286120e-03, +-4.124699565952162639e-03, +-4.128626301726325172e-03, +-4.132546146836373752e-03, +-4.136459095240263041e-03, +-4.140365140907624995e-03, +-4.144264277819405436e-03, +-4.148156499968140738e-03, +-4.152041801358048040e-03, +-4.155920176004445840e-03, +-4.159791617934618761e-03, +-4.163656121187187843e-03, +-4.167513679812307435e-03, +-4.171364287871749330e-03, +-4.175207939438894088e-03, +-4.179044628598567977e-03, +-4.182874349447337006e-03, +-4.186697096093225899e-03, +-4.190512862655950549e-03, +-4.194321643266873782e-03, +-4.198123432068857908e-03, +-4.201918223216483290e-03, +-4.205706010876020598e-03, +-4.209486789225233908e-03, +-4.213260552453725050e-03, +-4.217027294762606612e-03, +-4.220787010364716180e-03, +-4.224539693484780263e-03, +-4.228285338358799342e-03, +-4.232023939234873591e-03, +-4.235755490372654711e-03, +-4.239479986043453476e-03, +-4.243197420530406272e-03, +-4.246907788128412645e-03, +-4.250611083143968766e-03, +-4.254307299895518715e-03, +-4.257996432713084117e-03, +-4.261678475938602412e-03, +-4.265353423925772464e-03, +-4.269021271039986042e-03, +-4.272682011658478739e-03, +-4.276335640170508649e-03, +-4.279982150976691102e-03, +-4.283621538489977912e-03, +-4.287253797134672056e-03, +-4.290878921347320192e-03, +-4.294496905576185297e-03, +-4.298107744281162539e-03, +-4.301711431934361271e-03, +-4.305307963019623652e-03, +-4.308897332032593161e-03, +-4.312479533480891546e-03, +-4.316054561884091062e-03, +-4.319622411773524524e-03, +-4.323183077692611433e-03, +-4.326736554196525773e-03, +-4.330282835852499596e-03, +-4.333821917239720663e-03, +-4.337353792949207552e-03, +-4.340878457583971853e-03, +-4.344395905759221126e-03, +-4.347906132101677160e-03, +-4.351409131250571702e-03, +-4.354904897856617767e-03, +-4.358393426582944652e-03, +-4.361874712104509000e-03, +-4.365348749108230106e-03, +-4.368815532293141707e-03, +-4.372275056370338205e-03, +-4.375727316062820275e-03, +-4.379172306105738599e-03, +-4.382610021246340949e-03, +-4.386040456243780507e-03, +-4.389463605869462805e-03, +-4.392879464906703120e-03, +-4.396288028150990151e-03, +-4.399689290410052807e-03, +-4.403083246503357133e-03, +-4.406469891262838369e-03, +-4.409849219532462061e-03, +-4.413221226168081816e-03, +-4.416585906038089822e-03, +-4.419943254022585047e-03, +-4.423293265014175552e-03, +-4.426635933917505775e-03, +-4.429971255649273014e-03, +-4.433299225138495440e-03, +-4.436619837326340361e-03, +-4.439933087166085188e-03, +-4.443238969623277031e-03, +-4.446537479675692801e-03, +-4.449828612313215179e-03, +-4.453112362538070267e-03, +-4.456388725364563916e-03, +-4.459657695819342800e-03, +-4.462919268941399620e-03, +-4.466173439781631616e-03, +-4.469420203403562213e-03, +-4.472659554882816267e-03, +-4.475891489307243232e-03, +-4.479116001777071546e-03, +-4.482333087404716948e-03, +-4.485542741314969828e-03, +-4.488744958644936243e-03, +-4.491939734543919961e-03, +-4.495127064173621949e-03, +-4.498306942708103079e-03, +-4.501479365333618463e-03, +-4.504644327248859444e-03, +-4.507801823664988293e-03, +-4.510951849805151619e-03, +-4.514094400905291349e-03, +-4.517229472213289514e-03, +-4.520357058989767952e-03, +-4.523477156507610397e-03, +-4.526589760051862726e-03, +-4.529694864920301087e-03, +-4.532792466422964385e-03, +-4.535882559882203728e-03, +-4.538965140632934825e-03, +-4.542040204022440228e-03, +-4.545107745410383211e-03, +-4.548167760168956089e-03, +-4.551220243682684193e-03, +-4.554265191348637505e-03, +-4.557302598576348264e-03, +-4.560332460787678253e-03, +-4.563354773417079881e-03, +-4.566369531911598778e-03, +-4.569376731730395019e-03, +-4.572376368345567980e-03, +-4.575368437241296785e-03, +-4.578352933914576692e-03, +-4.581329853874822715e-03, +-4.584299192643871354e-03, +-4.587260945756187897e-03, +-4.590215108758786619e-03, +-4.593161677211092878e-03, +-4.596100646685187703e-03, +-4.599032012765720198e-03, +-4.601955771049770494e-03, +-4.604871917147135979e-03, +-4.607780446680041601e-03, +-4.610681355283358443e-03, +-4.613574638604677446e-03, +-4.616460292303856648e-03, +-4.619338312053646554e-03, +-4.622208693539340586e-03, +-4.625071432458632836e-03, +-4.627926524522192261e-03, +-4.630773965452918486e-03, +-4.633613750986646102e-03, +-4.636445876871759554e-03, +-4.639270338869182740e-03, +-4.642087132752594110e-03, +-4.644896254308336463e-03, +-4.647697699335292046e-03, +-4.650491463645134958e-03, +-4.653277543062197576e-03, +-4.656055933423392489e-03, +-4.658826630578446690e-03, +-4.661589630389661315e-03, +-4.664344928732087718e-03, +-4.667092521493608134e-03, +-4.669832404574483786e-03, +-4.672564573888057446e-03, +-4.675289025360201793e-03, +-4.678005754929498092e-03, +-4.680714758547385376e-03, +-4.683416032177887232e-03, +-4.686109571797890221e-03, +-4.688795373397032853e-03, +-4.691473432977612788e-03, +-4.694143746554773310e-03, +-4.696806310156448686e-03, +-4.699461119823240135e-03, +-4.702108171608598841e-03, +-4.704747461578870187e-03, +-4.707378985812911247e-03, +-4.710002740402715292e-03, +-4.712618721452771671e-03, +-4.715226925080549802e-03, +-4.717827347416405498e-03, +-4.720419984603273049e-03, +-4.723004832797128398e-03, +-4.725581888166728931e-03, +-4.728151146893579647e-03, +-4.730712605172176025e-03, +-4.733266259209696104e-03, +-4.735812105226297995e-03, +-4.738350139454993240e-03, +-4.740880358141573089e-03, +-4.743402757544777637e-03, +-4.745917333936235973e-03, +-4.748424083600354291e-03, +-4.750923002834501509e-03, +-4.753414087949056101e-03, +-4.755897335266999308e-03, +-4.758372741124538771e-03, +-4.760840301870497039e-03, +-4.763300013866865815e-03, +-4.765751873488432988e-03, +-4.768195877122878915e-03, +-4.770632021170891773e-03, +-4.773060302046086903e-03, +-4.775480716174942616e-03, +-4.777893259996991888e-03, +-4.780297929964615923e-03, +-4.782694722543212422e-03, +-4.785083634211173900e-03, +-4.787464661459749776e-03, +-4.789837800793231987e-03, +-4.792203048728981875e-03, +-4.794560401797092787e-03, +-4.796909856540900949e-03, +-4.799251409516639387e-03, +-4.801585057293426655e-03, +-4.803910796453613775e-03, +-4.806228623592284643e-03, +-4.808538535317766899e-03, +-4.810840528251334423e-03, +-4.813134599027205605e-03, +-4.815420744292694261e-03, +-4.817698960708187948e-03, +-4.819969244946975366e-03, +-4.822231593695538651e-03, +-4.824486003653270620e-03, +-4.826732471532708089e-03, +-4.828970994059434731e-03, +-4.831201567972019488e-03, +-4.833424190022140611e-03, +-4.835638856974659380e-03, +-4.837845565607245407e-03, +-4.840044312710905725e-03, +-4.842235095089630903e-03, +-4.844417909560437552e-03, +-4.846592752953542659e-03, +-4.848759622112166698e-03, +-4.850918513892693226e-03, +-4.853069425164607299e-03, +-4.855212352810449501e-03, +-4.857347293725930437e-03, +-4.859474244819897773e-03, +-4.861593203014199192e-03, +-4.863704165243997249e-03, +-4.865807128457402472e-03, +-4.867902089615761332e-03, +-4.869989045693617208e-03, +-4.872067993678501352e-03, +-4.874138930571171417e-03, +-4.876201853385653956e-03, +-4.878256759148876659e-03, +-4.880303644901175762e-03, +-4.882342507695959510e-03, +-4.884373344599726371e-03, +-4.886396152692304429e-03, +-4.888410929066549539e-03, +-4.890417670828597733e-03, +-4.892416375097767209e-03, +-4.894407039006510619e-03, +-4.896389659700515692e-03, +-4.898364234338688748e-03, +-4.900330760093053219e-03, +-4.902289234148905772e-03, +-4.904239653704847539e-03, +-4.906182015972437166e-03, +-4.908116318176742460e-03, +-4.910042557555799152e-03, +-4.911960731361054121e-03, +-4.913870836857135542e-03, +-4.915772871321832070e-03, +-4.917666832046246363e-03, +-4.919552716334725691e-03, +-4.921430521504798622e-03, +-4.923300244887314665e-03, +-4.925161883826308963e-03, +-4.927015435679121987e-03, +-4.928860897816363107e-03, +-4.930698267621824726e-03, +-4.932527542492652281e-03, +-4.934348719839296536e-03, +-4.936161797085312358e-03, +-4.937966771667667495e-03, +-4.939763641036673189e-03, +-4.941552402655684934e-03, +-4.943333054001653251e-03, +-4.945105592564513937e-03, +-4.946870015847738833e-03, +-4.948626321368026180e-03, +-4.950374506655284140e-03, +-4.952114569252850235e-03, +-4.953846506717337825e-03, +-4.955570316618594477e-03, +-4.957285996539917937e-03, +-4.958993544077783776e-03, +-4.960692956842097795e-03, +-4.962384232456066788e-03, +-4.964067368556169917e-03, +-4.965742362792255858e-03, +-4.967409212827606120e-03, +-4.969067916338614985e-03, +-4.970718471015237935e-03, +-4.972360874560676804e-03, +-4.973995124691458700e-03, +-4.975621219137532289e-03, +-4.977239155642119474e-03, +-4.978848931961875855e-03, +-4.980450545866791853e-03, +-4.982043995140170156e-03, +-4.983629277578741079e-03, +-4.985206390992609655e-03, +-4.986775333205181043e-03, +-4.988336102053315783e-03, +-4.989888695387191021e-03, +-4.991433111070393315e-03, +-4.992969346979932513e-03, +-4.994497401006081291e-03, +-4.996017271052624956e-03, +-4.997528955036740876e-03, +-4.999032450888856241e-03, +-5.000527756552970715e-03, +-5.002014869986405772e-03, +-5.003493789159841124e-03, +-5.004964512057470845e-03, +-5.006427036676767452e-03, +-5.007881361028714354e-03, +-5.009327483137687026e-03, +-5.010765401041433059e-03, +-5.012195112791162366e-03, +-5.013616616451505546e-03, +-5.015029910100477460e-03, +-5.016434991829583044e-03, +-5.017831859743668126e-03, +-5.019220511961054731e-03, +-5.020600946613572313e-03, +-5.021973161846328762e-03, +-5.023337155817999243e-03, +-5.024692926700657057e-03, +-5.026040472679797928e-03, +-5.027379791954381637e-03, +-5.028710882736829417e-03, +-5.030033743252970181e-03, +-5.031348371742152409e-03, +-5.032654766457080216e-03, +-5.033952925663996367e-03, +-5.035242847642592938e-03, +-5.036524530685975755e-03, +-5.037797973100735516e-03, +-5.039063173206993762e-03, +-5.040320129338206855e-03, +-5.041568839841414906e-03, +-5.042809303077047493e-03, +-5.044041517419061565e-03, +-5.045265481254929303e-03, +-5.046481192985438624e-03, +-5.047688651025037526e-03, +-5.048887853801569542e-03, +-5.050078799756337923e-03, +-5.051261487344186306e-03, +-5.052435915033423250e-03, +-5.053602081305833514e-03, +-5.054759984656691067e-03, +-5.055909623594792048e-03, +-5.057050996642380170e-03, +-5.058184102335260349e-03, +-5.059308939222653852e-03, +-5.060425505867314523e-03, +-5.061533800845592970e-03, +-5.062633822747133854e-03, +-5.063725570175307833e-03, +-5.064809041746808245e-03, +-5.065884236091962485e-03, +-5.066951151854548127e-03, +-5.068009787691869251e-03, +-5.069060142274740832e-03, +-5.070102214287476594e-03, +-5.071136002427928911e-03, +-5.072161505407443705e-03, +-5.073178721950922891e-03, +-5.074187650796715097e-03, +-5.075188290696779590e-03, +-5.076180640416529284e-03, +-5.077164698734920947e-03, +-5.078140464444464743e-03, +-5.079107936351156573e-03, +-5.080067113274513643e-03, +-5.081017994047664667e-03, +-5.081960577517138228e-03, +-5.082894862543103041e-03, +-5.083820847999223104e-03, +-5.084738532772668101e-03, +-5.085647915764196676e-03, +-5.086548995888051476e-03, +-5.087441772072041554e-03, +-5.088326243257532827e-03, +-5.089202408399370881e-03, +-5.090070266465991991e-03, +-5.090929816439363279e-03, +-5.091781057314961889e-03, +-5.092623988101874742e-03, +-5.093458607822673630e-03, +-5.094284915513485473e-03, +-5.095102910224037426e-03, +-5.095912591017498147e-03, +-5.096713956970683364e-03, +-5.097507007173937045e-03, +-5.098291740731110584e-03, +-5.099068156759623514e-03, +-5.099836254390478253e-03, +-5.100596032768204592e-03, +-5.101347491050876176e-03, +-5.102090628410118310e-03, +-5.102825444031157398e-03, +-5.103551937112709054e-03, +-5.104270106867102134e-03, +-5.104979952520172920e-03, +-5.105681473311356189e-03, +-5.106374668493611491e-03, +-5.107059537333480392e-03, +-5.107736079111033570e-03, +-5.108404293119936726e-03, +-5.109064178667421102e-03, +-5.109715735074200210e-03, +-5.110358961674651111e-03, +-5.110993857816648750e-03, +-5.111620422861637945e-03, +-5.112238656184650738e-03, +-5.112848557174245676e-03, +-5.113450125232583271e-03, +-5.114043359775335799e-03, +-5.114628260231777503e-03, +-5.115204826044742956e-03, +-5.115773056670642679e-03, +-5.116332951579395487e-03, +-5.116884510254532566e-03, +-5.117427732193187938e-03, +-5.117962616905929324e-03, +-5.118489163917029627e-03, +-5.119007372764245757e-03, +-5.119517242998925313e-03, +-5.120018774185994444e-03, +-5.120511965903903201e-03, +-5.120996817744696665e-03, +-5.121473329313998464e-03, +-5.121941500230960467e-03, +-5.122401330128314827e-03, +-5.122852818652387855e-03, +-5.123295965463021961e-03, +-5.123730770233666729e-03, +-5.124157232651293907e-03, +-5.124575352416478949e-03, +-5.124985129243355038e-03, +-5.125386562859599211e-03, +-5.125779653006459248e-03, +-5.126164399438786629e-03, +-5.126540801924923778e-03, +-5.126908860246841976e-03, +-5.127268574200036406e-03, +-5.127619943593598149e-03, +-5.127962968250141321e-03, +-5.128297648005872462e-03, +-5.128623982710549777e-03, +-5.128941972227486594e-03, +-5.129251616433572192e-03, +-5.129552915219244905e-03, +-5.129845868488525952e-03, +-5.130130476158938774e-03, +-5.130406738161633062e-03, +-5.130674654441285017e-03, +-5.130934224956133771e-03, +-5.131185449677964916e-03, +-5.131428328592134783e-03, +-5.131662861697565241e-03, +-5.131889049006703798e-03, +-5.132106890545579982e-03, +-5.132316386353758496e-03, +-5.132517536484387799e-03, +-5.132710341004122906e-03, +-5.132894799993225135e-03, +-5.133070913545451086e-03, +-5.133238681768150652e-03, +-5.133398104782200232e-03, +-5.133549182722045232e-03, +-5.133691915735650625e-03, +-5.133826303984583353e-03, +-5.133952347643864871e-03, +-5.134070046902167173e-03, +-5.134179401961629780e-03, +-5.134280413037951678e-03, +-5.134373080360410402e-03, +-5.134457404171779635e-03, +-5.134533384728410740e-03, +-5.134601022300165109e-03, +-5.134660317170449718e-03, +-5.134711269636224942e-03, +-5.134753880007964649e-03, +-5.134788148609706511e-03, +-5.134814075778980878e-03, +-5.134831661866894048e-03, +-5.134840907238066680e-03, +-5.134841812270619053e-03, +-5.134834377356261269e-03, +-5.134818602900176158e-03, +-5.134794489321101683e-03, +-5.134762037051294505e-03, +-5.134721246536539524e-03, +-5.134672118236133405e-03, +-5.134614652622905388e-03, +-5.134548850183179129e-03, +-5.134474711416853361e-03, +-5.134392236837270924e-03, +-5.134301426971338463e-03, +-5.134202282359456165e-03, +-5.134094803555562872e-03, +-5.133978991127071019e-03, +-5.133854845654911743e-03, +-5.133722367733566105e-03, +-5.133581557970954071e-03, +-5.133432416988538589e-03, +-5.133274945421285700e-03, +-5.133109143917657588e-03, +-5.132935013139603916e-03, +-5.132752553762586108e-03, +-5.132561766475571274e-03, +-5.132362651980987983e-03, +-5.132155210994790440e-03, +-5.131939444246409049e-03, +-5.131715352478751282e-03, +-5.131482936448237241e-03, +-5.131242196924738069e-03, +-5.130993134691647951e-03, +-5.130735750545809513e-03, +-5.130470045297565868e-03, +-5.130196019770731121e-03, +-5.129913674802580835e-03, +-5.129623011243878913e-03, +-5.129324029958881072e-03, +-5.129016731825273255e-03, +-5.128701117734201995e-03, +-5.128377188590331655e-03, +-5.128044945311744686e-03, +-5.127704388830010146e-03, +-5.127355520090135996e-03, +-5.126998340050594252e-03, +-5.126632849683329662e-03, +-5.126259049973706794e-03, +-5.125876941920552536e-03, +-5.125486526536170845e-03, +-5.125087804846244731e-03, +-5.124680777889978507e-03, +-5.124265446719965950e-03, +-5.123841812402251013e-03, +-5.123409876016311350e-03, +-5.122969638655082598e-03, +-5.122521101424875982e-03, +-5.122064265445506678e-03, +-5.121599131850179329e-03, +-5.121125701785480232e-03, +-5.120643976411481425e-03, +-5.120153956901666095e-03, +-5.119655644442879135e-03, +-5.119149040235458983e-03, +-5.118634145493091911e-03, +-5.118110961442905692e-03, +-5.117579489325408890e-03, +-5.117039730394534226e-03, +-5.116491685917628172e-03, +-5.115935357175394570e-03, +-5.115370745461972693e-03, +-5.114797852084859188e-03, +-5.114216678364971388e-03, +-5.113627225636586601e-03, +-5.113029495247399352e-03, +-5.112423488558437250e-03, +-5.111809206944168543e-03, +-5.111186651792377217e-03, +-5.110555824504260138e-03, +-5.109916726494394094e-03, +-5.109269359190662073e-03, +-5.108613724034352134e-03, +-5.107949822480138333e-03, +-5.107277655995993981e-03, +-5.106597226063317417e-03, +-5.105908534176781949e-03, +-5.105211581844456420e-03, +-5.104506370587766177e-03, +-5.103792901941452305e-03, +-5.103071177453587237e-03, +-5.102341198685620728e-03, +-5.101602967212313065e-03, +-5.100856484621715120e-03, +-5.100101752515281972e-03, +-5.099338772507733264e-03, +-5.098567546227170295e-03, +-5.097788075314920765e-03, +-5.097000361425683621e-03, +-5.096204406227498700e-03, +-5.095400211401643516e-03, +-5.094587778642739075e-03, +-5.093767109658700436e-03, +-5.092938206170743651e-03, +-5.092101069913371886e-03, +-5.091255702634387564e-03, +-5.090402106094862877e-03, +-5.089540282069171008e-03, +-5.088670232344956641e-03, +-5.087791958723124688e-03, +-5.086905463017913145e-03, +-5.086010747056747376e-03, +-5.085107812680363278e-03, +-5.084196661742783861e-03, +-5.083277296111195220e-03, +-5.082349717666194595e-03, +-5.081413928301471185e-03, +-5.080469929924031659e-03, +-5.079517724454149855e-03, +-5.078557313825297383e-03, +-5.077588699984185265e-03, +-5.076611884890805566e-03, +-5.075626870518296953e-03, +-5.074633658853112961e-03, +-5.073632251894855463e-03, +-5.072622651656374416e-03, +-5.071604860163744441e-03, +-5.070578879456226658e-03, +-5.069544711586264352e-03, +-5.068502358619585320e-03, +-5.067451822635025797e-03, +-5.066393105724664898e-03, +-5.065326209993752625e-03, +-5.064251137560724612e-03, +-5.063167890557218609e-03, +-5.062076471128030240e-03, +-5.060976881431107806e-03, +-5.059869123637627739e-03, +-5.058753199931871440e-03, +-5.057629112511302476e-03, +-5.056496863586559636e-03, +-5.055356455381396219e-03, +-5.054207890132750292e-03, +-5.053051170090715194e-03, +-5.051886297518414642e-03, +-5.050713274692261202e-03, +-5.049532103901722101e-03, +-5.048342787449339175e-03, +-5.047145327650897143e-03, +-5.045939726835209360e-03, +-5.044725987344184613e-03, +-5.043504111532939871e-03, +-5.042274101769619009e-03, +-5.041035960435487351e-03, +-5.039789689924897842e-03, +-5.038535292645296253e-03, +-5.037272771017249802e-03, +-5.036002127474344808e-03, +-5.034723364463276896e-03, +-5.033436484443845789e-03, +-5.032141489888876384e-03, +-5.030838383284205739e-03, +-5.029527167128901646e-03, +-5.028207843934885332e-03, +-5.026880416227289677e-03, +-5.025544886544179926e-03, +-5.024201257436695066e-03, +-5.022849531469048695e-03, +-5.021489711218450960e-03, +-5.020121799275106822e-03, +-5.018745798242326209e-03, +-5.017361710736329729e-03, +-5.015969539386452500e-03, +-5.014569286834975013e-03, +-5.013160955737170840e-03, +-5.011744548761351732e-03, +-5.010320068588808642e-03, +-5.008887517913755347e-03, +-5.007446899443514059e-03, +-5.005998215898284712e-03, +-5.004541470011232562e-03, +-5.003076664528580131e-03, +-5.001603802209392963e-03, +-5.000122885825826827e-03, +-4.998633918162853629e-03, +-4.997136902018469579e-03, +-4.995631840203609321e-03, +-4.994118735542119915e-03, +-4.992597590870769507e-03, +-4.991068409039301976e-03, +-4.989531192910329378e-03, +-4.987985945359416952e-03, +-4.986432669274999847e-03, +-4.984871367558452518e-03, +-4.983302043124043616e-03, +-4.981724698898921250e-03, +-4.980139337823073949e-03, +-4.978545962849521486e-03, +-4.976944576943996557e-03, +-4.975335183085177228e-03, +-4.973717784264633165e-03, +-4.972092383486727621e-03, +-4.970458983768760546e-03, +-4.968817588140815936e-03, +-4.967168199645838160e-03, +-4.965510821339638031e-03, +-4.963845456290830356e-03, +-4.962172107580842609e-03, +-4.960490778303999933e-03, +-4.958801471567325647e-03, +-4.957104190490792782e-03, +-4.955398938207089023e-03, +-4.953685717861645334e-03, +-4.951964532612861472e-03, +-4.950235385631800676e-03, +-4.948498280102275534e-03, +-4.946753219221028397e-03, +-4.945000206197398308e-03, +-4.943239244253590757e-03, +-4.941470336624560582e-03, +-4.939693486557980746e-03, +-4.937908697314329944e-03, +-4.936115972166778970e-03, +-4.934315314401221952e-03, +-4.932506727316332724e-03, +-4.930690214223503245e-03, +-4.928865778446769874e-03, +-4.927033423322984239e-03, +-4.925193152201621551e-03, +-4.923344968444937596e-03, +-4.921488875427810009e-03, +-4.919624876537776435e-03, +-4.917752975175210609e-03, +-4.915873174752991882e-03, +-4.913985478696709062e-03, +-4.912089890444716785e-03, +-4.910186413447905664e-03, +-4.908275051169853215e-03, +-4.906355807086822986e-03, +-4.904428684687647463e-03, +-4.902493687473867719e-03, +-4.900550818959588557e-03, +-4.898600082671543572e-03, +-4.896641482149120296e-03, +-4.894675020944284742e-03, +-4.892700702621528494e-03, +-4.890718530758116772e-03, +-4.888728508943718069e-03, +-4.886730640780719871e-03, +-4.884724929884017020e-03, +-4.882711379880988294e-03, +-4.880689994411819069e-03, +-4.878660777128986971e-03, +-4.876623731697640914e-03, +-4.874578861795500484e-03, +-4.872526171112736247e-03, +-4.870465663352116330e-03, +-4.868397342228911878e-03, +-4.866321211470868435e-03, +-4.864237274818342116e-03, +-4.862145536024068022e-03, +-4.860045998853349328e-03, +-4.857938667083968806e-03, +-4.855823544506226129e-03, +-4.853700634922740106e-03, +-4.851569942148854613e-03, +-4.849431470012127710e-03, +-4.847285222352773135e-03, +-4.845131203023293406e-03, +-4.842969415888701869e-03, +-4.840799864826486262e-03, +-4.838622553726501171e-03, +-4.836437486491011392e-03, +-4.834244667034779536e-03, +-4.832044099284902097e-03, +-4.829835787180853691e-03, +-4.827619734674607616e-03, +-4.825395945730415539e-03, +-4.823164424324967101e-03, +-4.820925174447335260e-03, +-4.818678200098862677e-03, +-4.816423505293392429e-03, +-4.814161094057026885e-03, +-4.811890970428151990e-03, +-4.809613138457703545e-03, +-4.807327602208716182e-03, +-4.805034365756633875e-03, +-4.802733433189270047e-03, +-4.800424808606673123e-03, +-4.798108496121251433e-03, +-4.795784499857640507e-03, +-4.793452823952788940e-03, +-4.791113472555960130e-03, +-4.788766449828642940e-03, +-4.786411759944578584e-03, +-4.784049407089838689e-03, +-4.781679395462657897e-03, +-4.779301729273595194e-03, +-4.776916412745398598e-03, +-4.774523450112952254e-03, +-4.772122845623599091e-03, +-4.769714603536642089e-03, +-4.767298728123703366e-03, +-4.764875223668647852e-03, +-4.762444094467430632e-03, +-4.760005344828230518e-03, +-4.757558979071455259e-03, +-4.755105001529566326e-03, +-4.752643416547297495e-03, +-4.750174228481456214e-03, +-4.747697441701016416e-03, +-4.745213060587110711e-03, +-4.742721089533007833e-03, +-4.740221532943963458e-03, +-4.737714395237576682e-03, +-4.735199680843352882e-03, +-4.732677394203043710e-03, +-4.730147539770394698e-03, +-4.727610122011171277e-03, +-4.725065145403452814e-03, +-4.722512614437118263e-03, +-4.719952533614216530e-03, +-4.717384907448926579e-03, +-4.714809740467343184e-03, +-4.712227037207638268e-03, +-4.709636802220059162e-03, +-4.707039040066765545e-03, +-4.704433755322082709e-03, +-4.701820952572199723e-03, +-4.699200636415317746e-03, +-4.696572811461737634e-03, +-4.693937482333633560e-03, +-4.691294653665084233e-03, +-4.688644330102379083e-03, +-4.685986516303442331e-03, +-4.683321216938483508e-03, +-4.680648436689359947e-03, +-4.677968180249962755e-03, +-4.675280452326185596e-03, +-4.672585257635749473e-03, +-4.669882600908245238e-03, +-4.667172486885294916e-03, +-4.664454920320276754e-03, +-4.661729905978503896e-03, +-4.658997448637187955e-03, +-4.656257553085337529e-03, +-4.653510224123914331e-03, +-4.650755466565632823e-03, +-4.647993285235052160e-03, +-4.645223684968664661e-03, +-4.642446670614701516e-03, +-4.639662247033109373e-03, +-4.636870419095912021e-03, +-4.634071191686623195e-03, +-4.631264569700839842e-03, +-4.628450558045689618e-03, +-4.625629161640149208e-03, +-4.622800385415064273e-03, +-4.619964234312896184e-03, +-4.617120713287905034e-03, +-4.614269827306126219e-03, +-4.611411581345272424e-03, +-4.608545980394748373e-03, +-4.605673029455785265e-03, +-4.602792733541159753e-03, +-4.599905097675512262e-03, +-4.597010126895078111e-03, +-4.594107826247647609e-03, +-4.591198200792986732e-03, +-4.588281255602209147e-03, +-4.585356995758214232e-03, +-4.582425426355596007e-03, +-4.579486552500438429e-03, +-4.576540379310669281e-03, +-4.573586911915570978e-03, +-4.570626155456167412e-03, +-4.567658115085104255e-03, +-4.564682795966568292e-03, +-4.561700203276287426e-03, +-4.558710342201677257e-03, +-4.555713217941624246e-03, +-4.552708835706523877e-03, +-4.549697200718455861e-03, +-4.546678318210905720e-03, +-4.543652193428975548e-03, +-4.540618831629248710e-03, +-4.537578238079679679e-03, +-4.534530418060044206e-03, +-4.531475376861293994e-03, +-4.528413119785949618e-03, +-4.525343652148115271e-03, +-4.522266979273212480e-03, +-4.519183106498230774e-03, +-4.516092039171502176e-03, +-4.512993782652825227e-03, +-4.509888342313483206e-03, +-4.506775723536100148e-03, +-4.503655931714692015e-03, +-4.500528972254785529e-03, +-4.497394850573216071e-03, +-4.494253572098059167e-03, +-4.491105142269117938e-03, +-4.487949566537114722e-03, +-4.484786850364552366e-03, +-4.481616999224941403e-03, +-4.478440018603202510e-03, +-4.475255913995795747e-03, +-4.472064690910170642e-03, +-4.468866354865251057e-03, +-4.465660911391294667e-03, +-4.462448366029731633e-03, +-4.459228724333297311e-03, +-4.456001991866063473e-03, +-4.452768174203237082e-03, +-4.449527276931420500e-03, +-4.446279305648304439e-03, +-4.443024265962847510e-03, +-4.439762163495309180e-03, +-4.436493003877104054e-03, +-4.433216792750672638e-03, +-4.429933535770022579e-03, +-4.426643238599911601e-03, +-4.423345906916669769e-03, +-4.420041546407472641e-03, +-4.416730162770724638e-03, +-4.413411761716098079e-03, +-4.410086348964259093e-03, +-4.406753930246982108e-03, +-4.403414511307293840e-03, +-4.400068097899197464e-03, +-4.396714695787757622e-03, +-4.393354310749274759e-03, +-4.389986948570924301e-03, +-4.386612615051126152e-03, +-4.383231315999275811e-03, +-4.379843057235622075e-03, +-4.376447844591855110e-03, +-4.373045683910298069e-03, +-4.369636581044434448e-03, +-4.366220541858817014e-03, +-4.362797572228811066e-03, +-4.359367678041049798e-03, +-4.355930865192808067e-03, +-4.352487139592474234e-03, +-4.349036507159444349e-03, +-4.345578973823965158e-03, +-4.342114545527180937e-03, +-4.338643228221305236e-03, +-4.335165027869316429e-03, +-4.331679950445098230e-03, +-4.328188001933550716e-03, +-4.324689188330284144e-03, +-4.321183515641948553e-03, +-4.317670989885949266e-03, +-4.314151617090408730e-03, +-4.310625403294656571e-03, +-4.307092354548464584e-03, +-4.303552476912587098e-03, +-4.300005776458657759e-03, +-4.296452259268938867e-03, +-4.292891931436645762e-03, +-4.289324799065643255e-03, +-4.285750868270578329e-03, +-4.282170145176941722e-03, +-4.278582635920877113e-03, +-4.274988346649239226e-03, +-4.271387283519749965e-03, +-4.267779452700734728e-03, +-4.264164860371084248e-03, +-4.260543512720751588e-03, +-4.256915415949941162e-03, +-4.253280576269951804e-03, +-4.249638999902371865e-03, +-4.245990693079542376e-03, +-4.242335662044711443e-03, +-4.238673913051360306e-03, +-4.235005452363765389e-03, +-4.231330286256901156e-03, +-4.227648421016133064e-03, +-4.223959862937626090e-03, +-4.220264618327958760e-03, +-4.216562693504302684e-03, +-4.212854094794476340e-03, +-4.209138828536724761e-03, +-4.205416901079839231e-03, +-4.201688318783252697e-03, +-4.197953088016801240e-03, +-4.194211215160674640e-03, +-4.190462706605963678e-03, +-4.186707568753725121e-03, +-4.182945808015992202e-03, +-4.179177430814848271e-03, +-4.175402443582959360e-03, +-4.171620852763503924e-03, +-4.167832664810013250e-03, +-4.164037886186367984e-03, +-4.160236523366996758e-03, +-4.156428582836563072e-03, +-4.152614071090249791e-03, +-4.148792994633505871e-03, +-4.144965359982127028e-03, +-4.141131173662373696e-03, +-4.137290442210756793e-03, +-4.133443172173954447e-03, +-4.129589370109364513e-03, +-4.125729042584281442e-03, +-4.121862196176389811e-03, +-4.117988837473913512e-03, +-4.114108973074899304e-03, +-4.110222609588127553e-03, +-4.106329753632225778e-03, +-4.102430411836209892e-03, +-4.098524590839407004e-03, +-4.094612297291216028e-03, +-4.090693537851255134e-03, +-4.086768319189456287e-03, +-4.082836647985735659e-03, +-4.078898530930364849e-03, +-4.074953974723642160e-03, +-4.071002986076010556e-03, +-4.067045571708145270e-03, +-4.063081738350794204e-03, +-4.059111492744626147e-03, +-4.055134841640842258e-03, +-4.051151791800262740e-03, +-4.047162349994019859e-03, +-4.043166523003339369e-03, +-4.039164317619369643e-03, +-4.035155740643410656e-03, +-4.031140798886738777e-03, +-4.027119499170588555e-03, +-4.023091848326341806e-03, +-4.019057853195265664e-03, +-4.015017520628593253e-03, +-4.010970857487664194e-03, +-4.006917870643584602e-03, +-4.002858566977613060e-03, +-3.998792953380824085e-03, +-3.994721036754075166e-03, +-3.990642824008552338e-03, +-3.986558322064901079e-03, +-3.982467537853790103e-03, +-3.978370478316053602e-03, +-3.974267150401956591e-03, +-3.970157561071822015e-03, +-3.966041717295899771e-03, +-3.961919626054072677e-03, +-3.957791294336241578e-03, +-3.953656729141972331e-03, +-3.949515937480621575e-03, +-3.945368926371466828e-03, +-3.941215702843427204e-03, +-3.937056273935173566e-03, +-3.932890646695269034e-03, +-3.928718828181913120e-03, +-3.924540825462834170e-03, +-3.920356645615955503e-03, +-3.916166295728338090e-03, +-3.911969782897284711e-03, +-3.907767114229291315e-03, +-3.903558296840736568e-03, +-3.899343337857714455e-03, +-3.895122244415846931e-03, +-3.890895023660356344e-03, +-3.886661682746239341e-03, +-3.882422228837901276e-03, +-3.878176669109527006e-03, +-3.873925010744737416e-03, +-3.869667260936717357e-03, +-3.865403426888363528e-03, +-3.861133515812005621e-03, +-3.856857534929320017e-03, +-3.852575491471979443e-03, +-3.848287392680670247e-03, +-3.843993245805741189e-03, +-3.839693058107294076e-03, +-3.835386836854383190e-03, +-3.831074589326079541e-03, +-3.826756322810431332e-03, +-3.822432044605106674e-03, +-3.818101762017303818e-03, +-3.813765482363454511e-03, +-3.809423212969420460e-03, +-3.805074961170568353e-03, +-3.800720734311470624e-03, +-3.796360539746203820e-03, +-3.791994384838083629e-03, +-3.787622276959759417e-03, +-3.783244223493324385e-03, +-3.778860231830106532e-03, +-3.774470309370522077e-03, +-3.770074463524767609e-03, +-3.765672701711822185e-03, +-3.761265031360112171e-03, +-3.756851459907404548e-03, +-3.752431994800529361e-03, +-3.748006643495704546e-03, +-3.743575413458239288e-03, +-3.739138312162596477e-03, +-3.734695347092629059e-03, +-3.730246525741155034e-03, +-3.725791855610204647e-03, +-3.721331344211047717e-03, +-3.716864999063936026e-03, +-3.712392827698428148e-03, +-3.707914837653075030e-03, +-3.703431036475332821e-03, +-3.698941431722201686e-03, +-3.694446030959427831e-03, +-3.689944841761699963e-03, +-3.685437871713208302e-03, +-3.680925128406723010e-03, +-3.676406619444191805e-03, +-3.671882352436686616e-03, +-3.667352335004077889e-03, +-3.662816574775403650e-03, +-3.658275079388528198e-03, +-3.653727856490276982e-03, +-3.649174913736553255e-03, +-3.644616258792056623e-03, +-3.640051899330382350e-03, +-3.635481843034206115e-03, +-3.630906097594863765e-03, +-3.626324670712799750e-03, +-3.621737570097193284e-03, +-3.617144803465908044e-03, +-3.612546378546112758e-03, +-3.607942303073335792e-03, +-3.603332584792095280e-03, +-3.598717231455812824e-03, +-3.594096250826558057e-03, +-3.589469650675157497e-03, +-3.584837438781376690e-03, +-3.580199622933492171e-03, +-3.575556210928759401e-03, +-3.570907210572960011e-03, +-3.566252629680606058e-03, +-3.561592476075070568e-03, +-3.556926757588294800e-03, +-3.552255482060658141e-03, +-3.547578657341712762e-03, +-3.542896291289197863e-03, +-3.538208391769761315e-03, +-3.533514966658556772e-03, +-3.528816023839144791e-03, +-3.524111571204177184e-03, +-3.519401616654376126e-03, +-3.514686168099238027e-03, +-3.509965233456906024e-03, +-3.505238820653903270e-03, +-3.500506937625286891e-03, +-3.495769592314776353e-03, +-3.491026792674374428e-03, +-3.486278546664793934e-03, +-3.481524862255042704e-03, +-3.476765747422589682e-03, +-3.472001210153507610e-03, +-3.467231258442207177e-03, +-3.462455900291291303e-03, +-3.457675143712304108e-03, +-3.452888996724524408e-03, +-3.448097467356267196e-03, +-3.443300563643689281e-03, +-3.438498293631474939e-03, +-3.433690665372777368e-03, +-3.428877686928907733e-03, +-3.424059366369498238e-03, +-3.419235711772602732e-03, +-3.414406731224436074e-03, +-3.409572432819480813e-03, +-3.404732824660597779e-03, +-3.399887914858712099e-03, +-3.395037711533188327e-03, +-3.390182222811485239e-03, +-3.385321456829049145e-03, +-3.380455421730008646e-03, +-3.375584125666338062e-03, +-3.370707576798025705e-03, +-3.365825783293707046e-03, +-3.360938753329661185e-03, +-3.356046495090464835e-03, +-3.351149016768924238e-03, +-3.346246326565715645e-03, +-3.341338432689826797e-03, +-3.336425343358129323e-03, +-3.331507066795550039e-03, +-3.326583611235227073e-03, +-3.321654984918145145e-03, +-3.316721196093313801e-03, +-3.311782253017879745e-03, +-3.306838163956779455e-03, +-3.301888937183119956e-03, +-3.296934580977864838e-03, +-3.291975103629680727e-03, +-3.287010513435742638e-03, +-3.282040818700544815e-03, +-3.277066027736753352e-03, +-3.272086148864978509e-03, +-3.267101190413580856e-03, +-3.262111160718748470e-03, +-3.257116068124689054e-03, +-3.252115920983220977e-03, +-3.247110727654197414e-03, +-3.242100496505119934e-03, +-3.237085235911252995e-03, +-3.232064954255819099e-03, +-3.227039659929694781e-03, +-3.222009361331265760e-03, +-3.216974066867152489e-03, +-3.211933784951262992e-03, +-3.206888524005473747e-03, +-3.201838292459240672e-03, +-3.196783098749485068e-03, +-3.191722951321323502e-03, +-3.186657858626992714e-03, +-3.181587829126566493e-03, +-3.176512871287850287e-03, +-3.171432993586098883e-03, +-3.166348204504149978e-03, +-3.161258512532591144e-03, +-3.156163926169338729e-03, +-3.151064453920097118e-03, +-3.145960104297932432e-03, +-3.140850885823418242e-03, +-3.135736807024825518e-03, +-3.130617876437793035e-03, +-3.125494102605203776e-03, +-3.120365494077985500e-03, +-3.115232059413828355e-03, +-3.110093807178536656e-03, +-3.104950745944768612e-03, +-3.099802884292828659e-03, +-3.094650230810502660e-03, +-3.089492794092811145e-03, +-3.084330582742122063e-03, +-3.079163605368320789e-03, +-3.073991870588466645e-03, +-3.068815387026950330e-03, +-3.063634163315610143e-03, +-3.058448208093375933e-03, +-3.053257530006660281e-03, +-3.048062137708994635e-03, +-3.042862039861135137e-03, +-3.037657245131255169e-03, +-3.032447762194640482e-03, +-3.027233599733541742e-03, +-3.022014766437973367e-03, +-3.016791271004452390e-03, +-3.011563122137328550e-03, +-3.006330328547541370e-03, +-3.001092898953384731e-03, +-2.995850842080382843e-03, +-2.990604166661011819e-03, +-2.985352881434802028e-03, +-2.980096995148572708e-03, +-2.974836516556003067e-03, +-2.969571454417824826e-03, +-2.964301817501985726e-03, +-2.959027614583200228e-03, +-2.953748854443433505e-03, +-2.948465545871514597e-03, +-2.943177697663015846e-03, +-2.937885318621047837e-03, +-2.932588417555088891e-03, +-2.927287003281769159e-03, +-2.921981084624765673e-03, +-2.916670670414354353e-03, +-2.911355769488156373e-03, +-2.906036390690152401e-03, +-2.900712542871399045e-03, +-2.895384234889936473e-03, +-2.890051475610413284e-03, +-2.884714273904340643e-03, +-2.879372638650166873e-03, +-2.874026578733005106e-03, +-2.868676103044535269e-03, +-2.863321220483676290e-03, +-2.857961939955648047e-03, +-2.852598270372669591e-03, +-2.847230220653555396e-03, +-2.841857799723583947e-03, +-2.836481016515288341e-03, +-2.831099879967304868e-03, +-2.825714399025108532e-03, +-2.820324582640974451e-03, +-2.814930439773528567e-03, +-2.809531979388260690e-03, +-2.804129210457056119e-03, +-2.798722141958387769e-03, +-2.793310782877453640e-03, +-2.787895142205833784e-03, +-2.782475228941622570e-03, +-2.777051052089621243e-03, +-2.771622620661007026e-03, +-2.766189943673204310e-03, +-2.760753030150712561e-03, +-2.755311889123751926e-03, +-2.749866529629720838e-03, +-2.744416960711830358e-03, +-2.738963191419947676e-03, +-2.733505230810460377e-03, +-2.728043087945950743e-03, +-2.722576771895363588e-03, +-2.717106291734181032e-03, +-2.711631656544042594e-03, +-2.706152875412895682e-03, +-2.700669957435188149e-03, +-2.695182911711409019e-03, +-2.689691747348578986e-03, +-2.684196473459758616e-03, +-2.678697099164297716e-03, +-2.673193633587934645e-03, +-2.667686085862515724e-03, +-2.662174465125824365e-03, +-2.656658780522459708e-03, +-2.651139041202433665e-03, +-2.645615256322668418e-03, +-2.640087435045597800e-03, +-2.634555586540035521e-03, +-2.629019719981019049e-03, +-2.623479844549507327e-03, +-2.617935969432522159e-03, +-2.612388103823338158e-03, +-2.606836256921092436e-03, +-2.601280437930970652e-03, +-2.595720656064340586e-03, +-2.590156920538333636e-03, +-2.584589240576308424e-03, +-2.579017625407486070e-03, +-2.573442084266790164e-03, +-2.567862626395695912e-03, +-2.562279261040997184e-03, +-2.556691997455640911e-03, +-2.551100844898595253e-03, +-2.545505812634393360e-03, +-2.539906909933932217e-03, +-2.534304146073406653e-03, +-2.528697530335083463e-03, +-2.523087072007175208e-03, +-2.517472780383516254e-03, +-2.511854664763729303e-03, +-2.506232734453385427e-03, +-2.500606998763635867e-03, +-2.494977467011372501e-03, +-2.489344148519392636e-03, +-2.483707052615967067e-03, +-2.478066188635307584e-03, +-2.472421565917174487e-03, +-2.466773193806750825e-03, +-2.461121081655490671e-03, +-2.455465238819860580e-03, +-2.449805674662189174e-03, +-2.444142398550539635e-03, +-2.438475419858301182e-03, +-2.432804747964700809e-03, +-2.427130392254317568e-03, +-2.421452362117293335e-03, +-2.415770666949453374e-03, +-2.410085316151977172e-03, +-2.404396319131511632e-03, +-2.398703685300380539e-03, +-2.393007424076255829e-03, +-2.387307544881986290e-03, +-2.381604057146502647e-03, +-2.375896970303374711e-03, +-2.370186293792351812e-03, +-2.364472037057914304e-03, +-2.358754209550123580e-03, +-2.353032820724759548e-03, +-2.347307880042382583e-03, +-2.341579396969115014e-03, +-2.335847380976527072e-03, +-2.330111841541217081e-03, +-2.324372788145331013e-03, +-2.318630230276053777e-03, +-2.312884177425842108e-03, +-2.307134639092565075e-03, +-2.301381624779107269e-03, +-2.295625143993557018e-03, +-2.289865206249367281e-03, +-2.284101821065055108e-03, +-2.278334997963999548e-03, +-2.272564746475380561e-03, +-2.266791076132703645e-03, +-2.261013996475370619e-03, +-2.255233517047220727e-03, +-2.249449647397414910e-03, +-2.243662397080317845e-03, +-2.237871775655118044e-03, +-2.232077792686034713e-03, +-2.226280457742505978e-03, +-2.220479780398686240e-03, +-2.214675770233978311e-03, +-2.208868436832543778e-03, +-2.203057789783493831e-03, +-2.197243838681060997e-03, +-2.191426593124267373e-03, +-2.185606062716771974e-03, +-2.179782257067762810e-03, +-2.173955185790647174e-03, +-2.168124858503947192e-03, +-2.162291284831137188e-03, +-2.156454474400199602e-03, +-2.150614436844431633e-03, +-2.144771181801339785e-03, +-2.138924718913452587e-03, +-2.133075057828200463e-03, +-2.127222208197534527e-03, +-2.121366179678146890e-03, +-2.115506981931631562e-03, +-2.109644624624007828e-03, +-2.103779117426235034e-03, +-2.097910470013741174e-03, +-2.092038692066586388e-03, +-2.086163793269670257e-03, +-2.080285783312361449e-03, +-2.074404671888374976e-03, +-2.068520468696646939e-03, +-2.062633183440029140e-03, +-2.056742825826196781e-03, +-2.050849405567464583e-03, +-2.044952932380414250e-03, +-2.039053415986397545e-03, +-2.033150866111039720e-03, +-2.027245292484442050e-03, +-2.021336704841351396e-03, +-2.015425112920762093e-03, +-2.009510526466082476e-03, +-2.003592955225318335e-03, +-1.997672408950737673e-03, +-1.991748897398721088e-03, +-1.985822430330655593e-03, +-1.979893017511486549e-03, +-1.973960668711267647e-03, +-1.968025393703698965e-03, +-1.962087202266980020e-03, +-1.956146104183972834e-03, +-1.950202109241212919e-03, +-1.944255227229734796e-03, +-1.938305467944944271e-03, +-1.932352841186182153e-03, +-1.926397356757252478e-03, +-1.920439024465948712e-03, +-1.914477854124213129e-03, +-1.908513855548348882e-03, +-1.902547038558577430e-03, +-1.896577412979238465e-03, +-1.890604988638980950e-03, +-1.884629775370385164e-03, +-1.878651783009849079e-03, +-1.872671021398468081e-03, +-1.866687500380586912e-03, +-1.860701229805357447e-03, +-1.854712219525280013e-03, +-1.848720479397091779e-03, +-1.842726019281640129e-03, +-1.836728849043523567e-03, +-1.830728978551279503e-03, +-1.824726417677561196e-03, +-1.818721176298661790e-03, +-1.812713264295034076e-03, +-1.806702691550791115e-03, +-1.800689467953917435e-03, +-1.794673603396422555e-03, +-1.788655107774006622e-03, +-1.782633990985917505e-03, +-1.776610262935863051e-03, +-1.770583933530645851e-03, +-1.764555012681031472e-03, +-1.758523510301937326e-03, +-1.752489436311259127e-03, +-1.746452800631406559e-03, +-1.740413613187821815e-03, +-1.734371883909875157e-03, +-1.728327622730747599e-03, +-1.722280839587055773e-03, +-1.716231544419040368e-03, +-1.710179747170760631e-03, +-1.704125457789601710e-03, +-1.698068686226791597e-03, +-1.692009442436923647e-03, +-1.685947736378135041e-03, +-1.679883578012294999e-03, +-1.673816977304656535e-03, +-1.667747944223687108e-03, +-1.661676488742020981e-03, +-1.655602620835077950e-03, +-1.649526350481990335e-03, +-1.643447687665470060e-03, +-1.637366642371360440e-03, +-1.631283224589185439e-03, +-1.625197444311637929e-03, +-1.619109311534786119e-03, +-1.613018836258240307e-03, +-1.606926028484749339e-03, +-1.600830898220380804e-03, +-1.594733455474691905e-03, +-1.588633710260273224e-03, +-1.582531672593232063e-03, +-1.576427352492809283e-03, +-1.570320759981202585e-03, +-1.564211905084434296e-03, +-1.558100797831324640e-03, +-1.551987448253682117e-03, +-1.545871866387147882e-03, +-1.539754062269852635e-03, +-1.533634045943321929e-03, +-1.527511827452351272e-03, +-1.521387416844548158e-03, +-1.515260824170896505e-03, +-1.509132059485232547e-03, +-1.503001132844460595e-03, +-1.496868054308714583e-03, +-1.490732833940948453e-03, +-1.484595481807117652e-03, +-1.478456007976376024e-03, +-1.472314422520574258e-03, +-1.466170735514785942e-03, +-1.460024957036891663e-03, +-1.453877097167414426e-03, +-1.447727165990476137e-03, +-1.441575173592393342e-03, +-1.435421130062635017e-03, +-1.429265045493653208e-03, +-1.423106929980549754e-03, +-1.416946793621231323e-03, +-1.410784646516634929e-03, +-1.404620498770191902e-03, +-1.398454360488397309e-03, +-1.392286241780290841e-03, +-1.386116152757653703e-03, +-1.379944103535190539e-03, +-1.373770104230183147e-03, +-1.367594164962328924e-03, +-1.361416295854677187e-03, +-1.355236507032114325e-03, +-1.349054808622933074e-03, +-1.342871210757616693e-03, +-1.336685723569071196e-03, +-1.330498357193464747e-03, +-1.324309121768863732e-03, +-1.318118027436160399e-03, +-1.311925084338923676e-03, +-1.305730302623050055e-03, +-1.299533692436934031e-03, +-1.293335263931674967e-03, +-1.287135027260561228e-03, +-1.280932992579630501e-03, +-1.274729170047139834e-03, +-1.268523569823781826e-03, +-1.262316202072855066e-03, +-1.256107076959916751e-03, +-1.249896204652626783e-03, +-1.243683595321684512e-03, +-1.237469259139311944e-03, +-1.231253206280877224e-03, +-1.225035446923368725e-03, +-1.218815991246342215e-03, +-1.212594849431772098e-03, +-1.206372031663673679e-03, +-1.200147548128312853e-03, +-1.193921409014385426e-03, +-1.187693624512586909e-03, +-1.181464204815803332e-03, +-1.175233160119311176e-03, +-1.169000500620256955e-03, +-1.162766236518218395e-03, +-1.156530378014749292e-03, +-1.150292935313239210e-03, +-1.144053918619795593e-03, +-1.137813338142177558e-03, +-1.131571204090005148e-03, +-1.125327526675627124e-03, +-1.119082316112721912e-03, +-1.112835582617263631e-03, +-1.106587336407341892e-03, +-1.100337587702755878e-03, +-1.094086346725539963e-03, +-1.087833623699453701e-03, +-1.081579428850188481e-03, +-1.075323772405551185e-03, +-1.069066664595030294e-03, +-1.062808115649992993e-03, +-1.056548135803866235e-03, +-1.050286735291647549e-03, +-1.044023924350430659e-03, +-1.037759713218986551e-03, +-1.031494112137587614e-03, +-1.025227131348988192e-03, +-1.018958781096996908e-03, +-1.012689071627444854e-03, +-1.006418013188030772e-03, +-1.000145616027941792e-03, +-9.938718903980685478e-04, +-9.875968465511723512e-04, +-9.813204947414016447e-04, +-9.750428452248226067e-04, +-9.687639082589179261e-04, +-9.624836941027727424e-04, +-9.562022130172737056e-04, +-9.499194752647434912e-04, +-9.436354911087835914e-04, +-9.373502708151636859e-04, +-9.310638246506106963e-04, +-9.247761628837217933e-04, +-9.184872957844308601e-04, +-9.121972336238728593e-04, +-9.059059866753397736e-04, +-8.996135652128568316e-04, +-8.933199795121599162e-04, +-8.870252398505251278e-04, +-8.807293565064115400e-04, +-8.744323397596519103e-04, +-8.681341998916416568e-04, +-8.618349471848334034e-04, +-8.555345919232929582e-04, +-8.492331443921680547e-04, +-8.429306148779083362e-04, +-8.366270136684341666e-04, +-8.303223510527890346e-04, +-8.240166373209704184e-04, +-8.177098827649019897e-04, +-8.114020976768684598e-04, +-8.050932923511860094e-04, +-7.987834770826406040e-04, +-7.924726621674506571e-04, +-7.861608579031176269e-04, +-7.798480745880500154e-04, +-7.735343225217651379e-04, +-7.672196120050728957e-04, +-7.609039533396476243e-04, +-7.545873568282164198e-04, +-7.482698327747531021e-04, +-7.419513914839696161e-04, +-7.356320432618691915e-04, +-7.293117984152966155e-04, +-7.229906672517850356e-04, +-7.166686600804550878e-04, +-7.103457872109413202e-04, +-7.040220589535887584e-04, +-6.976974856203496493e-04, +-6.913720775232112597e-04, +-6.850458449758834367e-04, +-6.787187982922203346e-04, +-6.723909477871928362e-04, +-6.660623037767336198e-04, +-6.597328765773671213e-04, +-6.534026765064002455e-04, +-6.470717138821204494e-04, +-6.407399990233580500e-04, +-6.344075422496761769e-04, +-6.280743538815684217e-04, +-6.217404442399473118e-04, +-6.154058236466922660e-04, +-6.090705024242123360e-04, +-6.027344908952785886e-04, +-5.963977993840092117e-04, +-5.900604382144289351e-04, +-5.837224177114477396e-04, +-5.773837482007029972e-04, +-5.710444400081096357e-04, +-5.647045034604234902e-04, +-5.583639488847168741e-04, +-5.520227866085799162e-04, +-5.456810269603157163e-04, +-5.393386802684952807e-04, +-5.329957568621607016e-04, +-5.266522670710097965e-04, +-5.203082212250381049e-04, +-5.139636296543679097e-04, +-5.076185026901621107e-04, +-5.012728506633958242e-04, +-4.949266839057676545e-04, +-4.885800127491789517e-04, +-4.822328475255818606e-04, +-4.758851985679515796e-04, +-4.695370762088553755e-04, +-4.631884907814202350e-04, +-4.568394526191846532e-04, +-4.504899720556482029e-04, +-4.441400594248274040e-04, +-4.377897250607387224e-04, +-4.314389792975949732e-04, +-4.250878324700071444e-04, +-4.187362949125309841e-04, +-4.123843769598745709e-04, +-4.060320889470864225e-04, +-3.996794412091869762e-04, +-3.933264440810102947e-04, +-3.869731078981784389e-04, +-3.806194429955280195e-04, +-3.742654597087908186e-04, +-3.679111683730182814e-04, +-3.615565793235607137e-04, +-3.552017028959051389e-04, +-3.488465494253047724e-04, +-3.424911292469737982e-04, +-3.361354526962892476e-04, +-3.297795301083388322e-04, +-3.234233718181253169e-04, +-3.170669881607597780e-04, +-3.107103894709459030e-04, +-3.043535860835342886e-04, +-2.979965883330088546e-04, +-2.916394065536790183e-04, +-2.852820510798790253e-04, +-2.789245322455975859e-04, +-2.725668603843161663e-04, +-2.662090458299855842e-04, +-2.598510989154515297e-04, +-2.534930299741379521e-04, +-2.471348493384694376e-04, +-2.407765673408476955e-04, +-2.344181943134962466e-04, +-2.280597405880836900e-04, +-2.217012164959223015e-04, +-2.153426323681655486e-04, +-2.089839985353627271e-04, +-2.026253253276571532e-04, +-1.962666230749818080e-04, +-1.899079021065453712e-04, +-1.835491727513834841e-04, +-1.771904453379153103e-04, +-1.708317301937878178e-04, +-1.644730376468480368e-04, +-1.581143780237107205e-04, +-1.517557616507343439e-04, +-1.453971988538603163e-04, +-1.390386999581018888e-04, +-1.326802752884492461e-04, +-1.263219351686460656e-04, +-1.199636899220950974e-04, +-1.136055498717002094e-04, +-1.072475253394943978e-04, +-1.008896266468361900e-04, +-9.453186411460550614e-05, +-8.817424806283221100e-05, +-8.181678881053763104e-05, +-7.545949667663980889e-05, +-6.910238197873155332e-05, +-6.274545503398484001e-05, +-5.638872615863790264e-05, +-5.003220566783756276e-05, +-4.367590387661417152e-05, +-3.731983109844691878e-05, +-3.096399764624055699e-05, +-2.460841383216592860e-05, +-1.825308996721845183e-05, +-1.189803636176834478e-05, +-5.543263325047808854e-06, + 8.112188346531152224e-07, + 7.165399809790576171e-06, + 1.351926929400886260e-05, + 1.987281698194443263e-05, + 2.622603256903005274e-05, + 3.257890575186591682e-05, + 3.893142622837766946e-05, + 4.528358369684178276e-05, + 5.163536785746021426e-05, + 5.798676841067730168e-05, + 6.433777505875458013e-05, + 7.068837750479634182e-05, + 7.703856545290687253e-05, + 8.338832860856284113e-05, + 8.973765667841569022e-05, + 9.608653937009783497e-05, + 1.024349663927327531e-04, + 1.087829274563872054e-04, + 1.151304122725827487e-04, + 1.214774105540990072e-04, + 1.278239120147797226e-04, + 1.341699063699730891e-04, + 1.405153833363363800e-04, + 1.468603326316395854e-04, + 1.532047439751364260e-04, + 1.595486070877235956e-04, + 1.658919116909645178e-04, + 1.722346475086645296e-04, + 1.785768042651877387e-04, + 1.849183716870318002e-04, + 1.912593395018536519e-04, + 1.975996974386269416e-04, + 2.039394352280125518e-04, + 2.102785426021631736e-04, + 2.166170092945282036e-04, + 2.229548250403642136e-04, + 2.292919795761878897e-04, + 2.356284626402850644e-04, + 2.419642639725165371e-04, + 2.482993733141222389e-04, + 2.546337804080930608e-04, + 2.609674749993251075e-04, + 2.673004468336502592e-04, + 2.736326856592639564e-04, + 2.799641812257549480e-04, + 2.862949232842589768e-04, + 2.926249015879743716e-04, + 2.989541058912579857e-04, + 3.052825259508430808e-04, + 3.116101515249379214e-04, + 3.179369723733809785e-04, + 3.242629782580153585e-04, + 3.305881589424906116e-04, + 3.369125041920667074e-04, + 3.432360037741261582e-04, + 3.495586474576265509e-04, + 3.558804250136092550e-04, + 3.622013262150052416e-04, + 3.685213408364394934e-04, + 3.748404586546005010e-04, + 3.811586694484000201e-04, + 3.874759629979968012e-04, + 3.937923290862287129e-04, + 4.001077574976410253e-04, + 4.064222380186403665e-04, + 4.127357604379384330e-04, + 4.190483145460028951e-04, + 4.253598901355682728e-04, + 4.316704770014394245e-04, + 4.379800649402972577e-04, + 4.442886437511352833e-04, + 4.505962032350722111e-04, + 4.569027331951507759e-04, + 4.632082234367045775e-04, + 4.695126637675233676e-04, + 4.758160439968767250e-04, + 4.821183539370824632e-04, + 4.884195834018306703e-04, + 4.947197222077545555e-04, + 5.010187601735266580e-04, + 5.073166871196632026e-04, + 5.136134928696024478e-04, + 5.199091672488011110e-04, + 5.262037000848923370e-04, + 5.324970812081240411e-04, + 5.387893004508171333e-04, + 5.450803476478644676e-04, + 5.513702126365482631e-04, + 5.576588852563360565e-04, + 5.639463553493240331e-04, + 5.702326127600381832e-04, + 5.765176473352455434e-04, + 5.828014489243209814e-04, + 5.890840073793931304e-04, + 5.953653125543975546e-04, + 6.016453543066182684e-04, + 6.079241224950320509e-04, + 6.142016069818641679e-04, + 6.204777976316196370e-04, + 6.267526843112474844e-04, + 6.330262568904991820e-04, + 6.392985052417432491e-04, + 6.455694192397600124e-04, + 6.518389887622614816e-04, + 6.581072036893390563e-04, + 6.643740539039690897e-04, + 6.706395292918271647e-04, + 6.769036197410846977e-04, + 6.831663151427803862e-04, + 6.894276053909786104e-04, + 6.956874803818009160e-04, + 7.019459300148436082e-04, + 7.082029441922181243e-04, + 7.144585128186992443e-04, + 7.207126258022384605e-04, + 7.269652730530695110e-04, + 7.332164444849093498e-04, + 7.394661300140727882e-04, + 7.457143195596188613e-04, + 7.519610030437244444e-04, + 7.582061703914889884e-04, + 7.644498115307380619e-04, + 7.706919163925332519e-04, + 7.769324749106263760e-04, + 7.831714770219636371e-04, + 7.894089126664988144e-04, + 7.956447717869897596e-04, + 8.018790443293712534e-04, + 8.081117202429105887e-04, + 8.143427894792441488e-04, + 8.205722419937862191e-04, + 8.268000677447769498e-04, + 8.330262566934312166e-04, + 8.392507988043715426e-04, + 8.454736840450991159e-04, + 8.516949023864791874e-04, + 8.579144438025628275e-04, + 8.641322982703877583e-04, + 8.703484557704143114e-04, + 8.765629062863313555e-04, + 8.827756398048639593e-04, + 8.889866463162746178e-04, + 8.951959158138349205e-04, + 9.014034382942333204e-04, + 9.076092037577590142e-04, + 9.138132022073274614e-04, + 9.200154236498890884e-04, + 9.262158580955476153e-04, + 9.324144955573603457e-04, + 9.386113260523997089e-04, + 9.448063396008718039e-04, + 9.509995262262600562e-04, + 9.571908759557641025e-04, + 9.633803788197627853e-04, + 9.695680248523154887e-04, + 9.757538040909587412e-04, + 9.819377065765362133e-04, + 9.881197223536057270e-04, + 9.942998414702683852e-04, + 1.000478053977962465e-03, + 1.006654349931970609e-03, + 1.012828719390881406e-03, + 1.019001152417021777e-03, + 1.025171639076607457e-03, + 1.031340169438792372e-03, + 1.037506733577067686e-03, + 1.043671321568314650e-03, + 1.049833923492951397e-03, + 1.055994529435291384e-03, + 1.062153129483369481e-03, + 1.068309713728730773e-03, + 1.074464272266941432e-03, + 1.080616795197050090e-03, + 1.086767272622082229e-03, + 1.092915694648855223e-03, + 1.099062051387784261e-03, + 1.105206332953250761e-03, + 1.111348529463733123e-03, + 1.117488631040890580e-03, + 1.123626627811067421e-03, + 1.129762509903735855e-03, + 1.135896267452686688e-03, + 1.142027890595831777e-03, + 1.148157369474326478e-03, + 1.154284694233955475e-03, + 1.160409855024207085e-03, + 1.166532841998397943e-03, + 1.172653645314056378e-03, + 1.178772255132715108e-03, + 1.184888661619730834e-03, + 1.191002854944775598e-03, + 1.197114825281307910e-03, + 1.203224562807070396e-03, + 1.209332057703884451e-03, + 1.215437300157485656e-03, + 1.221540280357854679e-03, + 1.227640988499394863e-03, + 1.233739414779974446e-03, + 1.239835549402446826e-03, + 1.245929382573034887e-03, + 1.252020904502846059e-03, + 1.258110105406926894e-03, + 1.264196975504422449e-03, + 1.270281505018924523e-03, + 1.276363684178292773e-03, + 1.282443503214460850e-03, + 1.288520952363861197e-03, + 1.294596021867234006e-03, + 1.300668701969438573e-03, + 1.306738982919960915e-03, + 1.312806854972357797e-03, + 1.318872308384695614e-03, + 1.324935333419709552e-03, + 1.330995920343923215e-03, + 1.337054059428682308e-03, + 1.343109740949977472e-03, + 1.349162955187570420e-03, + 1.355213692426365021e-03, + 1.361261942955476834e-03, + 1.367307697068382514e-03, + 1.373350945063345685e-03, + 1.379391677242882428e-03, + 1.385429883914260450e-03, + 1.391465555389309779e-03, + 1.397498681984220021e-03, + 1.403529254019984665e-03, + 1.409557261822205710e-03, + 1.415582695720891569e-03, + 1.421605546050969896e-03, + 1.427625803151749175e-03, + 1.433643457367333529e-03, + 1.439658499046785143e-03, + 1.445670918543191840e-03, + 1.451680706215030363e-03, + 1.457687852425233310e-03, + 1.463692347541346991e-03, + 1.469694181935885966e-03, + 1.475693345986124009e-03, + 1.481689830073943184e-03, + 1.487683624586290517e-03, + 1.493674719914671019e-03, + 1.499663106455622350e-03, + 1.505648774610549370e-03, + 1.511631714785509470e-03, + 1.517611917391586181e-03, + 1.523589372845023408e-03, + 1.529564071566313606e-03, + 1.535536003981685313e-03, + 1.541505160521575721e-03, + 1.547471531621773646e-03, + 1.553435107723256893e-03, + 1.559395879271316008e-03, + 1.565353836716923625e-03, + 1.571308970515807903e-03, + 1.577261271128586320e-03, + 1.583210729021147529e-03, + 1.589157334664432564e-03, + 1.595101078534270694e-03, + 1.601041951111856470e-03, + 1.606979942883231911e-03, + 1.612915044339762035e-03, + 1.618847245977959653e-03, + 1.624776538299299317e-03, + 1.630702911810549740e-03, + 1.636626357023946180e-03, + 1.642546864456265188e-03, + 1.648464424630288055e-03, + 1.654379028073245861e-03, + 1.660290665318272076e-03, + 1.666199326903513526e-03, + 1.672105003372248346e-03, + 1.678007685273253530e-03, + 1.683907363160627767e-03, + 1.689804027593580678e-03, + 1.695697669136871913e-03, + 1.701588278360600601e-03, + 1.707475845840061368e-03, + 1.713360362156176502e-03, + 1.719241817895018681e-03, + 1.725120203648202811e-03, + 1.730995510013035856e-03, + 1.736867727591684613e-03, + 1.742736846992163410e-03, + 1.748602858828161941e-03, + 1.754465753718206962e-03, + 1.760325522287115117e-03, + 1.766182155164435158e-03, + 1.772035642985913574e-03, + 1.777885976392572578e-03, + 1.783733146030882935e-03, + 1.789577142553080980e-03, + 1.795417956617004684e-03, + 1.801255578885904143e-03, + 1.807090000028851616e-03, + 1.812921210720557430e-03, + 1.818749201641187835e-03, + 1.824573963476845955e-03, + 1.830395486919058311e-03, + 1.836213762665176406e-03, + 1.842028781418526134e-03, + 1.847840533887516994e-03, + 1.853649010786952460e-03, + 1.859454202837123151e-03, + 1.865256100763983127e-03, + 1.871054695299511792e-03, + 1.876849977181252460e-03, + 1.882641937152751020e-03, + 1.888430565963382466e-03, + 1.894215854368181979e-03, + 1.899997793128235671e-03, + 1.905776373010516439e-03, + 1.911551584787673846e-03, + 1.917323419238420746e-03, + 1.923091867147626094e-03, + 1.928856919305521958e-03, + 1.934618566508809192e-03, + 1.940376799559828886e-03, + 1.946131609267029222e-03, + 1.951882986445115965e-03, + 1.957630921914145852e-03, + 1.963375406500865363e-03, + 1.969116431037782645e-03, + 1.974853986363333831e-03, + 1.980588063322285923e-03, + 1.986318652765224624e-03, + 1.992045745549029644e-03, + 1.997769332536685188e-03, + 2.003489404597117319e-03, + 2.009205952605573435e-03, + 2.014918967443470044e-03, + 2.020628439998183729e-03, + 2.026334361163423681e-03, + 2.032036721839329714e-03, + 2.037735512931633085e-03, + 2.043430725353047751e-03, + 2.049122350021773727e-03, + 2.054810377862897885e-03, + 2.060494799807519647e-03, + 2.066175606792901905e-03, + 2.071852789762796722e-03, + 2.077526339667272286e-03, + 2.083196247462530768e-03, + 2.088862504111309911e-03, + 2.094525100582695677e-03, + 2.100184027851970895e-03, + 2.105839276901042868e-03, + 2.111490838717980205e-03, + 2.117138704297372772e-03, + 2.122782864640511673e-03, + 2.128423310754553113e-03, + 2.134060033653493744e-03, + 2.139693024357980280e-03, + 2.145322273894522801e-03, + 2.150947773296893809e-03, + 2.156569513604621180e-03, + 2.162187485864379421e-03, + 2.167801681129139652e-03, + 2.173412090458321389e-03, + 2.179018704918083121e-03, + 2.184621515581171812e-03, + 2.190220513526754207e-03, + 2.195815689840795431e-03, + 2.201407035615892457e-03, + 2.206994541951089357e-03, + 2.212578199952329201e-03, + 2.218158000732001721e-03, + 2.223733935409289830e-03, + 2.229305995110319235e-03, + 2.234874170967310163e-03, + 2.240438454119845005e-03, + 2.245998835713973203e-03, + 2.251555306902399897e-03, + 2.257107858844840248e-03, + 2.262656482707527204e-03, + 2.268201169663701562e-03, + 2.273741910893404671e-03, + 2.279278697583315364e-03, + 2.284811520927140273e-03, + 2.290340372125438621e-03, + 2.295865242385445280e-03, + 2.301386122921419888e-03, + 2.306903004954733577e-03, + 2.312415879713138663e-03, + 2.317924738431788659e-03, + 2.323429572352475429e-03, + 2.328930372724044660e-03, + 2.334427130802585373e-03, + 2.339919837850520934e-03, + 2.345408485137893614e-03, + 2.350893063941513709e-03, + 2.356373565545070992e-03, + 2.361849981239548882e-03, + 2.367322302322727879e-03, + 2.372790520099631820e-03, + 2.378254625882363950e-03, + 2.383714610989935614e-03, + 2.389170466748635757e-03, + 2.394622184491869595e-03, + 2.400069755560007689e-03, + 2.405513171300660471e-03, + 2.410952423068862555e-03, + 2.416387502226199739e-03, + 2.421818400142164256e-03, + 2.427245108192744444e-03, + 2.432667617761715816e-03, + 2.438085920239873444e-03, + 2.443500007025086601e-03, + 2.448909869522705989e-03, + 2.454315499145322613e-03, + 2.459716887312625097e-03, + 2.465114025451849416e-03, + 2.470506904997294469e-03, + 2.475895517390764439e-03, + 2.481279854081387508e-03, + 2.486659906525466243e-03, + 2.492035666186852294e-03, + 2.497407124536763813e-03, + 2.502774273053629765e-03, + 2.508137103223406512e-03, + 2.513495606539701849e-03, + 2.518849774502953612e-03, + 2.524199598621759775e-03, + 2.529545070411466385e-03, + 2.534886181395478149e-03, + 2.540222923104439642e-03, + 2.545555287076381457e-03, + 2.550883264857025951e-03, + 2.556206847999612473e-03, + 2.561526028064738201e-03, + 2.566840796620786184e-03, + 2.572151145243484292e-03, + 2.577457065516277311e-03, + 2.582758549030237175e-03, + 2.588055587383850022e-03, + 2.593348172183330188e-03, + 2.598636295042758108e-03, + 2.603919947583276280e-03, + 2.609199121434273641e-03, + 2.614473808232561577e-03, + 2.619743999622522242e-03, + 2.625009687256537900e-03, + 2.630270862794210733e-03, + 2.635527517903414954e-03, + 2.640779644259506204e-03, + 2.646027233545490687e-03, + 2.651270277452295789e-03, + 2.656508767678640408e-03, + 2.661742695930829818e-03, + 2.666972053923238363e-03, + 2.672196833377798141e-03, + 2.677417026024443963e-03, + 2.682632623600970240e-03, + 2.687843617852832788e-03, + 2.693050000533472790e-03, + 2.698251763404442127e-03, + 2.703448898234617117e-03, + 2.708641396801350371e-03, + 2.713829250889681060e-03, + 2.719012452292464150e-03, + 2.724190992810731227e-03, + 2.729364864253242939e-03, + 2.734534058436904457e-03, + 2.739698567186600250e-03, + 2.744858382335040557e-03, + 2.750013495723115271e-03, + 2.755163899199739985e-03, + 2.760309584621683382e-03, + 2.765450543853899008e-03, + 2.770586768769605062e-03, + 2.775718251249534568e-03, + 2.780844983183184370e-03, + 2.785966956467474196e-03, + 2.791084163008008667e-03, + 2.796196594718278888e-03, + 2.801304243519791258e-03, + 2.806407101342406167e-03, + 2.811505160124107717e-03, + 2.816598411810908309e-03, + 2.821686848357232887e-03, + 2.826770461725480917e-03, + 2.831849243886419305e-03, + 2.836923186819066602e-03, + 2.841992282510493080e-03, + 2.847056522956193259e-03, + 2.852115900159928920e-03, + 2.857170406133579046e-03, + 2.862220032897394399e-03, + 2.867264772480180961e-03, + 2.872304616918494157e-03, + 2.877339558257879185e-03, + 2.882369588551545250e-03, + 2.887394699861628011e-03, + 2.892414884258402014e-03, + 2.897430133820388682e-03, + 2.902440440634686779e-03, + 2.907445796796795032e-03, + 2.912446194410445600e-03, + 2.917441625588030382e-03, + 2.922432082450158661e-03, + 2.927417557126052623e-03, + 2.932398041753400773e-03, + 2.937373528478203974e-03, + 2.942344009455062116e-03, + 2.947309476847298146e-03, + 2.952269922826183512e-03, + 2.957225339572087421e-03, + 2.962175719273686236e-03, + 2.967121054128097485e-03, + 2.972061336341266704e-03, + 2.976996558127295231e-03, + 2.981926711709346166e-03, + 2.986851789318979104e-03, + 2.991771783196229065e-03, + 2.996686685589958644e-03, + 3.001596488757631194e-03, + 3.006501184965209347e-03, + 3.011400766487534481e-03, + 3.016295225607894346e-03, + 3.021184554618442861e-03, + 3.026068745820006695e-03, + 3.030947791521976849e-03, + 3.035821684042556284e-03, + 3.040690415708923854e-03, + 3.045553978856430262e-03, + 3.050412365829743844e-03, + 3.055265568982076883e-03, + 3.060113580675331325e-03, + 3.064956393280396287e-03, + 3.069793999176754270e-03, + 3.074626390752885786e-03, + 3.079453560406085044e-03, + 3.084275500542302956e-03, + 3.089092203576550896e-03, + 3.093903661932678652e-03, + 3.098709868043246062e-03, + 3.103510814349932836e-03, + 3.108306493303081893e-03, + 3.113096897362082303e-03, + 3.117882018995444312e-03, + 3.122661850680085935e-03, + 3.127436384902397646e-03, + 3.132205614157585784e-03, + 3.136969530949475227e-03, + 3.141728127791395403e-03, + 3.146481397205428288e-03, + 3.151229331722572337e-03, + 3.155971923883037385e-03, + 3.160709166235868214e-03, + 3.165441051339301474e-03, + 3.170167571760633407e-03, + 3.174888720076055482e-03, + 3.179604488870997440e-03, + 3.184314870739990682e-03, + 3.189019858286489591e-03, + 3.193719444123275727e-03, + 3.198413620872053633e-03, + 3.203102381163741401e-03, + 3.207785717638641110e-03, + 3.212463622945672514e-03, + 3.217136089743454202e-03, + 3.221803110699569383e-03, + 3.226464678490691216e-03, + 3.231120785802863403e-03, + 3.235771425331320211e-03, + 3.240416589780380219e-03, + 3.245056271863830128e-03, + 3.249690464304442507e-03, + 3.254319159834454574e-03, + 3.258942351195364372e-03, + 3.263560031137772901e-03, + 3.268172192421712856e-03, + 3.272778827816713674e-03, + 3.277379930101092034e-03, + 3.281975492063148817e-03, + 3.286565506499907093e-03, + 3.291149966218094840e-03, + 3.295728864033940254e-03, + 3.300302192772511679e-03, + 3.304869945268812219e-03, + 3.309432114367001285e-03, + 3.313988692920571532e-03, + 3.318539673792560932e-03, + 3.323085049855446088e-03, + 3.327624813991008658e-03, + 3.332158959090653245e-03, + 3.336687478055070429e-03, + 3.341210363794564625e-03, + 3.345727609228917477e-03, + 3.350239207287280738e-03, + 3.354745150908377931e-03, + 3.359245433040687796e-03, + 3.363740046641684918e-03, + 3.368228984679005888e-03, + 3.372712240129225464e-03, + 3.377189805978987169e-03, + 3.381661675224310708e-03, + 3.386127840870684774e-03, + 3.390588295933344605e-03, + 3.395043033437156188e-03, + 3.399492046416421973e-03, + 3.403935327915227817e-03, + 3.408372870987309844e-03, + 3.412804668695889210e-03, + 3.417230714114061988e-03, + 3.421651000324372853e-03, + 3.426065520419164200e-03, + 3.430474267500671550e-03, + 3.434877234680327063e-03, + 3.439274415079764807e-03, + 3.443665801830205798e-03, + 3.448051388072323128e-03, + 3.452431166956955368e-03, + 3.456805131644501584e-03, + 3.461173275305040598e-03, + 3.465535591118625459e-03, + 3.469892072274897033e-03, + 3.474242711973436152e-03, + 3.478587503423640013e-03, + 3.482926439844576463e-03, + 3.487259514465296251e-03, + 3.491586720524676897e-03, + 3.495908051271315580e-03, + 3.500223499963864802e-03, + 3.504533059870635573e-03, + 3.508836724269945653e-03, + 3.513134486450179839e-03, + 3.517426339709163290e-03, + 3.521712277355097415e-03, + 3.525992292705921495e-03, + 3.530266379089419364e-03, + 3.534534529843459238e-03, + 3.538796738315874452e-03, + 3.543052997864298663e-03, + 3.547303301856556592e-03, + 3.551547643670262874e-03, + 3.555786016693159024e-03, + 3.560018414323005021e-03, + 3.564244829967430118e-03, + 3.568465257044197824e-03, + 3.572679688981293504e-03, + 3.576888119216259116e-03, + 3.581090541197296494e-03, + 3.585286948382123296e-03, + 3.589477334238846875e-03, + 3.593661692245769552e-03, + 3.597840015890866466e-03, + 3.602012298672655540e-03, + 3.606178534099598997e-03, + 3.610338715690206146e-03, + 3.614492836973237210e-03, + 3.618640891487638709e-03, + 3.622782872782327052e-03, + 3.626918774416628723e-03, + 3.631048589959825785e-03, + 3.635172312991550095e-03, + 3.639289937101612433e-03, + 3.643401455889907093e-03, + 3.647506862966640000e-03, + 3.651606151952425418e-03, + 3.655699316477664922e-03, + 3.659786350183537058e-03, + 3.663867246720963443e-03, + 3.667941999751564170e-03, + 3.672010602947054121e-03, + 3.676073049989372205e-03, + 3.680129334570854827e-03, + 3.684179450394174313e-03, + 3.688223391172177571e-03, + 3.692261150628155849e-03, + 3.696292722495760161e-03, + 3.700318100518859479e-03, + 3.704337278451811776e-03, + 3.708350250059210332e-03, + 3.712357009116085387e-03, + 3.716357549408059839e-03, + 3.720351864730707826e-03, + 3.724339948890314535e-03, + 3.728321795703684952e-03, + 3.732297398997614334e-03, + 3.736266752609866595e-03, + 3.740229850388099644e-03, + 3.744186686190880634e-03, + 3.748137253887068830e-03, + 3.752081547355878930e-03, + 3.756019560487163823e-03, + 3.759951287181246757e-03, + 3.763876721348839802e-03, + 3.767795856911268070e-03, + 3.771708687800400320e-03, + 3.775615207958480258e-03, + 3.779515411338470014e-03, + 3.783409291903717074e-03, + 3.787296843628183262e-03, + 3.791178060496594796e-03, + 3.795052936503800871e-03, + 3.798921465655678321e-03, + 3.802783641968514056e-03, + 3.806639459469118685e-03, + 3.810488912195066774e-03, + 3.814331994194396312e-03, + 3.818168699525914447e-03, + 3.821999022259042235e-03, + 3.825822956473734406e-03, + 3.829640496260720492e-03, + 3.833451635721404644e-03, + 3.837256368967716883e-03, + 3.841054690122410169e-03, + 3.844846593319026576e-03, + 3.848632072701437153e-03, + 3.852411122424704952e-03, + 3.856183736654169962e-03, + 3.859949909566137791e-03, + 3.863709635347779923e-03, + 3.867462908196600720e-03, + 3.871209722321269659e-03, + 3.874950071941063619e-03, + 3.878683951285935832e-03, + 3.882411354596806020e-03, + 3.886132276125200870e-03, + 3.889846710133584504e-03, + 3.893554650895220126e-03, + 3.897256092694062913e-03, + 3.900951029825031058e-03, + 3.904639456593867429e-03, + 3.908321367317032884e-03, + 3.911996756321932216e-03, + 3.915665617946992652e-03, + 3.919327946541077516e-03, + 3.922983736464462877e-03, + 3.926632982087798450e-03, + 3.930275677793025266e-03, + 3.933911817972839640e-03, + 3.937541397030779045e-03, + 3.941164409381397310e-03, + 3.944780849450211721e-03, + 3.948390711673523470e-03, + 3.951993990498729910e-03, + 3.955590680384161485e-03, + 3.959180775798994134e-03, + 3.962764271223565872e-03, + 3.966341161148994286e-03, + 3.969911440077493123e-03, + 3.973475102522439940e-03, + 3.977032143007816663e-03, + 3.980582556068912141e-03, + 3.984126336252120926e-03, + 3.987663478114487035e-03, + 3.991193976224561776e-03, + 3.994717825161485207e-03, + 3.998235019515824877e-03, + 4.001745553889061481e-03, + 4.005249422893698147e-03, + 4.008746621153398346e-03, + 4.012237143302939055e-03, + 4.015720983988048561e-03, + 4.019198137865720444e-03, + 4.022668599604026229e-03, + 4.026132363882057273e-03, + 4.029589425390191042e-03, + 4.033039778829769322e-03, + 4.036483418913384448e-03, + 4.039920340364933082e-03, + 4.043350537919071508e-03, + 4.046774006322019675e-03, + 4.050190740331021701e-03, + 4.053600734714433475e-03, + 4.057003984251960314e-03, + 4.060400483734340378e-03, + 4.063790227963656049e-03, + 4.067173211753211635e-03, + 4.070549429927386789e-03, + 4.073918877321958294e-03, + 4.077281548783905779e-03, + 4.080637439171362277e-03, + 4.083986543353789432e-03, + 4.087328856212062503e-03, + 4.090664372637995046e-03, + 4.093993087534979029e-03, + 4.097314995817518193e-03, + 4.100630092411460502e-03, + 4.103938372254142992e-03, + 4.107239830293800235e-03, + 4.110534461490397869e-03, + 4.113822260815047129e-03, + 4.117103223250146229e-03, + 4.120377343789561643e-03, + 4.123644617438379165e-03, + 4.126905039213135500e-03, + 4.130158604141750608e-03, + 4.133405307263391532e-03, + 4.136645143628716985e-03, + 4.139878108299773277e-03, + 4.143104196349904969e-03, + 4.146323402863919677e-03, + 4.149535722938177407e-03, + 4.152741151680093556e-03, + 4.155939684208956840e-03, + 4.159131315655029831e-03, + 4.162316041160398980e-03, + 4.165493855878443785e-03, + 4.168664754973916593e-03, + 4.171828733623156836e-03, + 4.174985787013944447e-03, + 4.178135910345467767e-03, + 4.181279098828503092e-03, + 4.184415347685192625e-03, + 4.187544652149292543e-03, + 4.190667007466042024e-03, + 4.193782408892096462e-03, + 4.196890851695700940e-03, + 4.199992331156772625e-03, + 4.203086842566426326e-03, + 4.206174381227556491e-03, + 4.209254942454688023e-03, + 4.212328521573559074e-03, + 4.215395113921886934e-03, + 4.218454714848538824e-03, + 4.221507319714301251e-03, + 4.224552923891428113e-03, + 4.227591522763657177e-03, + 4.230623111726446867e-03, + 4.233647686186860909e-03, + 4.236665241563463379e-03, + 4.239675773286572837e-03, + 4.242679276798002122e-03, + 4.245675747551303815e-03, + 4.248665181011632326e-03, + 4.251647572655738692e-03, + 4.254622917972034762e-03, + 4.257591212460789219e-03, + 4.260552451633537775e-03, + 4.263506631013862930e-03, + 4.266453746136883093e-03, + 4.269393792549321109e-03, + 4.272326765809755789e-03, + 4.275252661488284506e-03, + 4.278171475166863205e-03, + 4.281083202439122520e-03, + 4.283987838910325273e-03, + 4.286885380197544282e-03, + 4.289775821929612924e-03, + 4.292659159746982020e-03, + 4.295535389301972234e-03, + 4.298404506258546830e-03, + 4.301266506292501617e-03, + 4.304121385091425056e-03, + 4.306969138354550808e-03, + 4.309809761792953754e-03, + 4.312643251129663624e-03, + 4.315469602099116821e-03, + 4.318288810447923169e-03, + 4.321100871934316009e-03, + 4.323905782328311791e-03, + 4.326703537411858390e-03, + 4.329494132978584445e-03, + 4.332277564834058695e-03, + 4.335053828795691101e-03, + 4.337822920692611418e-03, + 4.340584836365896440e-03, + 4.343339571668503214e-03, + 4.346087122465109448e-03, + 4.348827484632353767e-03, + 4.351560654058857398e-03, + 4.354286626644818248e-03, + 4.357005398302676163e-03, + 4.359716964956394762e-03, + 4.362421322542142307e-03, + 4.365118467007872774e-03, + 4.367808394313364012e-03, + 4.370491100430438924e-03, + 4.373166581342782452e-03, + 4.375834833045964996e-03, + 4.378495851547582925e-03, + 4.381149632867066893e-03, + 4.383796173035871789e-03, + 4.386435468097384799e-03, + 4.389067514106888973e-03, + 4.391692307131694201e-03, + 4.394309843251099044e-03, + 4.396920118556246759e-03, + 4.399523129150376827e-03, + 4.402118871148777250e-03, + 4.404707340678468835e-03, + 4.407288533878768975e-03, + 4.409862446900712253e-03, + 4.412429075907574327e-03, + 4.414988417074572694e-03, + 4.417540466588846734e-03, + 4.420085220649683233e-03, + 4.422622675468355913e-03, + 4.425152827268127170e-03, + 4.427675672284379048e-03, + 4.430191206764467517e-03, + 4.432699426967833499e-03, + 4.435200329166018481e-03, + 4.437693909642534407e-03, + 4.440180164693000725e-03, + 4.442659090625224183e-03, + 4.445130683758818056e-03, + 4.447594940425776341e-03, + 4.450051856970050485e-03, + 4.452501429747597952e-03, + 4.454943655126704892e-03, + 4.457378529487469182e-03, + 4.459806049222362484e-03, + 4.462226210735861613e-03, + 4.464639010444537010e-03, + 4.467044444777123861e-03, + 4.469442510174538585e-03, + 4.471833203089714895e-03, + 4.474216519987863142e-03, + 4.476592457346202300e-03, + 4.478961011654210636e-03, + 4.481322179413535500e-03, + 4.483675957137862357e-03, + 4.486022341353151574e-03, + 4.488361328597586380e-03, + 4.490692915421319598e-03, + 4.493017098386909922e-03, + 4.495333874069028755e-03, + 4.497643239054454137e-03, + 4.499945189942304059e-03, + 4.502239723343772794e-03, + 4.504526835882343393e-03, + 4.506806524193724371e-03, + 4.509078784925743891e-03, + 4.511343614738546649e-03, + 4.513601010304499339e-03, + 4.515850968308117788e-03, + 4.518093485446276862e-03, + 4.520328558427984950e-03, + 4.522556183974516669e-03, + 4.524776358819548178e-03, + 4.526989079708729560e-03, + 4.529194343400216524e-03, + 4.531392146664364219e-03, + 4.533582486283728105e-03, + 4.535765359053197526e-03, + 4.537940761779967087e-03, + 4.540108691283422163e-03, + 4.542269144395370481e-03, + 4.544422117959754162e-03, + 4.546567608832955895e-03, + 4.548705613883604650e-03, + 4.550836129992597359e-03, + 4.552959154053191730e-03, + 4.555074682970994965e-03, + 4.557182713663810239e-03, + 4.559283243061927268e-03, + 4.561376268107803986e-03, + 4.563461785756330220e-03, + 4.565539792974796472e-03, + 4.567610286742618091e-03, + 4.569673264051779364e-03, + 4.571728721906539485e-03, + 4.573776657323438619e-03, + 4.575817067331469645e-03, + 4.577849948971981012e-03, + 4.579875299298631630e-03, + 4.581893115377524452e-03, + 4.583903394287045137e-03, + 4.585906133118052008e-03, + 4.587901328973766762e-03, + 4.589888978969759725e-03, + 4.591869080233996689e-03, + 4.593841629906975088e-03, + 4.595806625141336289e-03, + 4.597764063102392947e-03, + 4.599713940967633738e-03, + 4.601656255927157047e-03, + 4.603591005183411619e-03, + 4.605518185951143657e-03, + 4.607437795457714272e-03, + 4.609349830942832335e-03, + 4.611254289658596982e-03, + 4.613151168869592152e-03, + 4.615040465852869242e-03, + 4.616922177897835218e-03, + 4.618796302306455576e-03, + 4.620662836393031429e-03, + 4.622521777484406812e-03, + 4.624373122919893213e-03, + 4.626216870051160293e-03, + 4.628053016242424968e-03, + 4.629881558870457478e-03, + 4.631702495324264805e-03, + 4.633515823005621495e-03, + 4.635321539328493730e-03, + 4.637119641719572756e-03, + 4.638910127617929674e-03, + 4.640692994475097838e-03, + 4.642468239755183877e-03, + 4.644235860934780961e-03, + 4.645995855502914156e-03, + 4.647748220961180066e-03, + 4.649492954823695665e-03, + 4.651230054617029770e-03, + 4.652959517880336619e-03, + 4.654681342165223161e-03, + 4.656395525035833191e-03, + 4.658102064068964446e-03, + 4.659800956853704310e-03, + 4.661492200991885181e-03, + 4.663175794097826864e-03, + 4.664851733798261978e-03, + 4.666520017732638664e-03, + 4.668180643552889003e-03, + 4.669833608923429011e-03, + 4.671478911521346859e-03, + 4.673116549036151340e-03, + 4.674746519170050289e-03, + 4.676368819637724203e-03, + 4.677983448166412109e-03, + 4.679590402495981821e-03, + 4.681189680378851879e-03, + 4.682781279579981137e-03, + 4.684365197876967646e-03, + 4.685941433059895994e-03, + 4.687509982931528131e-03, + 4.689070845307224435e-03, + 4.690624018014783250e-03, + 4.692169498894785233e-03, + 4.693707285800321864e-03, + 4.695237376597033614e-03, + 4.696759769163254793e-03, + 4.698274461389882577e-03, + 4.699781451180385684e-03, + 4.701280736450931877e-03, + 4.702772315130192803e-03, + 4.704256185159535683e-03, + 4.705732344492943517e-03, + 4.707200791096958700e-03, + 4.708661522950793182e-03, + 4.710114538046324129e-03, + 4.711559834387953408e-03, + 4.712997409992835708e-03, + 4.714427262890639146e-03, + 4.715849391123741290e-03, + 4.717263792747188392e-03, + 4.718670465828560950e-03, + 4.720069408448202691e-03, + 4.721460618699032351e-03, + 4.722844094686639085e-03, + 4.724219834529257318e-03, + 4.725587836357803169e-03, + 4.726948098315790318e-03, + 4.728300618559470522e-03, + 4.729645395257678353e-03, + 4.730982426591961304e-03, + 4.732311710756561575e-03, + 4.733633245958285968e-03, + 4.734947030416701910e-03, + 4.736253062364084547e-03, + 4.737551340045225920e-03, + 4.738841861717809668e-03, + 4.740124625651981685e-03, + 4.741399630130729154e-03, + 4.742666873449672381e-03, + 4.743926353917093421e-03, + 4.745178069854008064e-03, + 4.746422019594110329e-03, + 4.747658201483742971e-03, + 4.748886613881998092e-03, + 4.750107255160672046e-03, + 4.751320123704200378e-03, + 4.752525217909771456e-03, + 4.753722536187255342e-03, + 4.754912076959210733e-03, + 4.756093838661007260e-03, + 4.757267819740534920e-03, + 4.758434018658584848e-03, + 4.759592433888559619e-03, + 4.760743063916563454e-03, + 4.761885907241511506e-03, + 4.763020962374893939e-03, + 4.764148227841070830e-03, + 4.765267702177064003e-03, + 4.766379383932555294e-03, + 4.767483271670064360e-03, + 4.768579363964780410e-03, + 4.769667659404582157e-03, + 4.770748156590172255e-03, + 4.771820854134936792e-03, + 4.772885750664944415e-03, + 4.773942844819121546e-03, + 4.774992135249018187e-03, + 4.776033620618966649e-03, + 4.777067299606088495e-03, + 4.778093170900135807e-03, + 4.779111233203722775e-03, + 4.780121485232143551e-03, + 4.781123925713439901e-03, + 4.782118553388408147e-03, + 4.783105367010620848e-03, + 4.784084365346361750e-03, + 4.785055547174712522e-03, + 4.786018911287446068e-03, + 4.786974456489141022e-03, + 4.787922181597139247e-03, + 4.788862085441490321e-03, + 4.789794166865039143e-03, + 4.790718424723408586e-03, + 4.791634857884911891e-03, + 4.792543465230732214e-03, + 4.793444245654710986e-03, + 4.794337198063507513e-03, + 4.795222321376586827e-03, + 4.796099614526053156e-03, + 4.796969076456928348e-03, + 4.797830706126929821e-03, + 4.798684502506539093e-03, + 4.799530464579046876e-03, + 4.800368591340460275e-03, + 4.801198881799633757e-03, + 4.802021334978144249e-03, + 4.802835949910362265e-03, + 4.803642725643417211e-03, + 4.804441661237264169e-03, + 4.805232755764578950e-03, + 4.806016008310860441e-03, + 4.806791417974378561e-03, + 4.807558983866143040e-03, + 4.808318705110038727e-03, + 4.809070580842613948e-03, + 4.809814610213313836e-03, + 4.810550792384304247e-03, + 4.811279126530549829e-03, + 4.811999611839785397e-03, + 4.812712247512589657e-03, + 4.813417032762249900e-03, + 4.814113966814902515e-03, + 4.814803048909466199e-03, + 4.815484278297606398e-03, + 4.816157654243840257e-03, + 4.816823176025412587e-03, + 4.817480842932399081e-03, + 4.818130654267699375e-03, + 4.818772609346919089e-03, + 4.819406707498507733e-03, + 4.820032948063739629e-03, + 4.820651330396612429e-03, + 4.821261853863985890e-03, + 4.821864517845444835e-03, + 4.822459321733437929e-03, + 4.823046264933188339e-03, + 4.823625346862682461e-03, + 4.824196566952723697e-03, + 4.824759924646945461e-03, + 4.825315419401721845e-03, + 4.825863050686270833e-03, + 4.826402817982581445e-03, + 4.826934720785443222e-03, + 4.827458758602454041e-03, + 4.827974930953988879e-03, + 4.828483237373255334e-03, + 4.828983677406257190e-03, + 4.829476250611723295e-03, + 4.829960956561296648e-03, + 4.830437794839328829e-03, + 4.830906765043023986e-03, + 4.831367866782344291e-03, + 4.831821099680094940e-03, + 4.832266463371823542e-03, + 4.832703957505938078e-03, + 4.833133581743597612e-03, + 4.833555335758803369e-03, + 4.833969219238314595e-03, + 4.834375231881696267e-03, + 4.834773373401337303e-03, + 4.835163643522415872e-03, + 4.835546041982895053e-03, + 4.835920568533547126e-03, + 4.836287222937931882e-03, + 4.836646004972414842e-03, + 4.836996914426175062e-03, + 4.837339951101147888e-03, + 4.837675114812117760e-03, + 4.838002405386608931e-03, + 4.838321822664994748e-03, + 4.838633366500417858e-03, + 4.838937036758808423e-03, + 4.839232833318913608e-03, + 4.839520756072264625e-03, + 4.839800804923194075e-03, + 4.840072979788805595e-03, + 4.840337280599030234e-03, + 4.840593707296559668e-03, + 4.840842259836894770e-03, + 4.841082938188360357e-03, + 4.841315742331991565e-03, + 4.841540672261703850e-03, + 4.841757727984139469e-03, + 4.841966909518741202e-03, + 4.842168216897783581e-03, + 4.842361650166287015e-03, + 4.842547209382049023e-03, + 4.842724894615711012e-03, + 4.842894705950643794e-03, + 4.843056643483028244e-03, + 4.843210707321831017e-03, + 4.843356897588801946e-03, + 4.843495214418473173e-03, + 4.843625657958140936e-03, + 4.843748228367914140e-03, + 4.843862925820677928e-03, + 4.843969750502046846e-03, + 4.844068702610497545e-03, + 4.844159782357229140e-03, + 4.844242989966221317e-03, + 4.844318325674255160e-03, + 4.844385789730848088e-03, + 4.844445382398336261e-03, + 4.844497103951794781e-03, + 4.844540954679082793e-03, + 4.844576934880830479e-03, + 4.844605044870444258e-03, + 4.844625284974086836e-03, + 4.844637655530696294e-03, + 4.844642156891984346e-03, + 4.844638789422397313e-03, + 4.844627553499169029e-03, + 4.844608449512323445e-03, + 4.844581477864588759e-03, + 4.844546638971496295e-03, + 4.844503933261302443e-03, + 4.844453361175058911e-03, + 4.844394923166555483e-03, + 4.844328619702335630e-03, + 4.844254451261688701e-03, + 4.844172418336672482e-03, + 4.844082521432093238e-03, + 4.843984761065486637e-03, + 4.843879137767175859e-03, + 4.843765652080194405e-03, + 4.843644304560332063e-03, + 4.843515095776129709e-03, + 4.843378026308855881e-03, + 4.843233096752548421e-03, + 4.843080307713940741e-03, + 4.842919659812544228e-03, + 4.842751153680577986e-03, + 4.842574789963018274e-03, + 4.842390569317542130e-03, + 4.842198492414603699e-03, + 4.841998559937339686e-03, + 4.841790772581649159e-03, + 4.841575131056129362e-03, + 4.841351636082111276e-03, + 4.841120288393682171e-03, + 4.840881088737583257e-03, + 4.840634037873326780e-03, + 4.840379136573116220e-03, + 4.840116385621901808e-03, + 4.839845785817281643e-03, + 4.839567337969656081e-03, + 4.839281042902061208e-03, + 4.838986901450249498e-03, + 4.838684914462724508e-03, + 4.838375082800642872e-03, + 4.838057407337901898e-03, + 4.837731888961056305e-03, + 4.837398528569389344e-03, + 4.837057327074879842e-03, + 4.836708285402185718e-03, + 4.836351404488652660e-03, + 4.835986685284333203e-03, + 4.835614128751956377e-03, + 4.835233735866933773e-03, + 4.834845507617362148e-03, + 4.834449445004014752e-03, + 4.834045549040359539e-03, + 4.833633820752513202e-03, + 4.833214261179294077e-03, + 4.832786871372167503e-03, + 4.832351652395290922e-03, + 4.831908605325448830e-03, + 4.831457731252150785e-03, + 4.830999031277509112e-03, + 4.830532506516337782e-03, + 4.830058158096082153e-03, + 4.829575987156842394e-03, + 4.829085994851391693e-03, + 4.828588182345140700e-03, + 4.828082550816145332e-03, + 4.827569101455104171e-03, + 4.827047835465352391e-03, + 4.826518754062903392e-03, + 4.825981858476355996e-03, + 4.825437149946964696e-03, + 4.824884629728634459e-03, + 4.824324299087878222e-03, + 4.823756159303811686e-03, + 4.823180211668245260e-03, + 4.822596457485531403e-03, + 4.822004898072695597e-03, + 4.821405534759364356e-03, + 4.820798368887760886e-03, + 4.820183401812735448e-03, + 4.819560634901749741e-03, + 4.818930069534861291e-03, + 4.818291707104706105e-03, + 4.817645549016583671e-03, + 4.816991596688309507e-03, + 4.816329851550368683e-03, + 4.815660315045762301e-03, + 4.814982988630143665e-03, + 4.814297873771710735e-03, + 4.813604971951256431e-03, + 4.812904284662156487e-03, + 4.812195813410358181e-03, + 4.811479559714356910e-03, + 4.810755525105269922e-03, + 4.810023711126721821e-03, + 4.809284119334937373e-03, + 4.808536751298705079e-03, + 4.807781608599340749e-03, + 4.807018692830746474e-03, + 4.806248005599356860e-03, + 4.805469548524132078e-03, + 4.804683323236629000e-03, + 4.803889331380898839e-03, + 4.803087574613552208e-03, + 4.802278054603732228e-03, + 4.801460773033108462e-03, + 4.800635731595882978e-03, + 4.799802931998784286e-03, + 4.798962375961023097e-03, + 4.798114065214407684e-03, + 4.797258001503192093e-03, + 4.796394186584149871e-03, + 4.795522622226588809e-03, + 4.794643310212310175e-03, + 4.793756252335591370e-03, + 4.792861450403267456e-03, + 4.791958906234583711e-03, + 4.791048621661336999e-03, + 4.790130598527787310e-03, + 4.789204838690685508e-03, + 4.788271344019249046e-03, + 4.787330116395180184e-03, + 4.786381157712652976e-03, + 4.785424469878317606e-03, + 4.784460054811245748e-03, + 4.783487914443041583e-03, + 4.782508050717724710e-03, + 4.781520465591723203e-03, + 4.780525161034023668e-03, + 4.779522139025964809e-03, + 4.778511401561340646e-03, + 4.777492950646429135e-03, + 4.776466788299914105e-03, + 4.775432916552892204e-03, + 4.774391337448926666e-03, + 4.773342053043949304e-03, + 4.772285065406381074e-03, + 4.771220376616989826e-03, + 4.770147988768986581e-03, + 4.769067903967985633e-03, + 4.767980124332036641e-03, + 4.766884651991471974e-03, + 4.765781489089208553e-03, + 4.764670637780335852e-03, + 4.763552100232540040e-03, + 4.762425878625729282e-03, + 4.761291975152241035e-03, + 4.760150392016859397e-03, + 4.759001131436624288e-03, + 4.757844195640992778e-03, + 4.756679586871796588e-03, + 4.755507307383213464e-03, + 4.754327359441768916e-03, + 4.753139745326327541e-03, + 4.751944467328112105e-03, + 4.750741527750711353e-03, + 4.749530928909998471e-03, + 4.748312673134193543e-03, + 4.747086762763863543e-03, + 4.745853200151920609e-03, + 4.744611987663492798e-03, + 4.743363127676153077e-03, + 4.742106622579662575e-03, + 4.740842474776232537e-03, + 4.739570686680200789e-03, + 4.738291260718329248e-03, + 4.737004199329626977e-03, + 4.735709504965398761e-03, + 4.734407180089203471e-03, + 4.733097227176942534e-03, + 4.731779648716722894e-03, + 4.730454447208941142e-03, + 4.729121625166290456e-03, + 4.727781185113646110e-03, + 4.726433129588246754e-03, + 4.725077461139510528e-03, + 4.723714182329056752e-03, + 4.722343295730879395e-03, + 4.720964803931089471e-03, + 4.719578709528030394e-03, + 4.718185015132401149e-03, + 4.716783723366956178e-03, + 4.715374836866773403e-03, + 4.713958358279102430e-03, + 4.712534290263393176e-03, + 4.711102635491353982e-03, + 4.709663396646819773e-03, + 4.708216576425820581e-03, + 4.706762177536650930e-03, + 4.705300202699707647e-03, + 4.703830654647570518e-03, + 4.702353536125044794e-03, + 4.700868849889051036e-03, + 4.699376598708716185e-03, + 4.697876785365305043e-03, + 4.696369412652143076e-03, + 4.694854483374909584e-03, + 4.693332000351213562e-03, + 4.691801966410920691e-03, + 4.690264384396005022e-03, + 4.688719257160548111e-03, + 4.687166587570752892e-03, + 4.685606378504974905e-03, + 4.684038632853630355e-03, + 4.682463353519281980e-03, + 4.680880543416553186e-03, + 4.679290205472195693e-03, + 4.677692342625035769e-03, + 4.676086957826010651e-03, + 4.674474054038021097e-03, + 4.672853634236254911e-03, + 4.671225701407722038e-03, + 4.669590258551722939e-03, + 4.667947308679447870e-03, + 4.666296854814158158e-03, + 4.664638899991309373e-03, + 4.662973447258206977e-03, + 4.661300499674276947e-03, + 4.659620060310995515e-03, + 4.657932132251852743e-03, + 4.656236718592277057e-03, + 4.654533822439842553e-03, + 4.652823446914012250e-03, + 4.651105595146344529e-03, + 4.649380270280325730e-03, + 4.647647475471435204e-03, + 4.645907213887204290e-03, + 4.644159488707088820e-03, + 4.642404303122439624e-03, + 4.640641660336780085e-03, + 4.638871563565362920e-03, + 4.637094016035616002e-03, + 4.635309020986744244e-03, + 4.633516581669947301e-03, + 4.631716701348421311e-03, + 4.629909383297218378e-03, + 4.628094630803355862e-03, + 4.626272447165767805e-03, + 4.624442835695306668e-03, + 4.622605799714686950e-03, + 4.620761342558616161e-03, + 4.618909467573603135e-03, + 4.617050178118134104e-03, + 4.615183477562520044e-03, + 4.613309369288913150e-03, + 4.611427856691494194e-03, + 4.609538943176130776e-03, + 4.607642632160617591e-03, + 4.605738927074690299e-03, + 4.603827831359760120e-03, + 4.601909348469287661e-03, + 4.599983481868388270e-03, + 4.598050235034064487e-03, + 4.596109611455196503e-03, + 4.594161614632425936e-03, + 4.592206248078188786e-03, + 4.590243515316810852e-03, + 4.588273419884325577e-03, + 4.586295965328586813e-03, + 4.584311155209278357e-03, + 4.582318993097778646e-03, + 4.580319482577340298e-03, + 4.578312627242923580e-03, + 4.576298430701176458e-03, + 4.574276896570698275e-03, + 4.572248028481639033e-03, + 4.570211830075966535e-03, + 4.568168305007416080e-03, + 4.566117456941393322e-03, + 4.564059289555089625e-03, + 4.561993806537354562e-03, + 4.559921011588726272e-03, + 4.557840908421533811e-03, + 4.555753500759749698e-03, + 4.553658792338981243e-03, + 4.551556786906643150e-03, + 4.549447488221738077e-03, + 4.547330900054876585e-03, + 4.545207026188539078e-03, + 4.543075870416602227e-03, + 4.540937436544820356e-03, + 4.538791728390484566e-03, + 4.536638749782428807e-03, + 4.534478504561345602e-03, + 4.532310996579331543e-03, + 4.530136229700173524e-03, + 4.527954207799343538e-03, + 4.525764934763783567e-03, + 4.523568414492149317e-03, + 4.521364650894597707e-03, + 4.519153647892876213e-03, + 4.516935409420375774e-03, + 4.514709939421993751e-03, + 4.512477241854145199e-03, + 4.510237320684943284e-03, + 4.507990179893899170e-03, + 4.505735823472069475e-03, + 4.503474255422211525e-03, + 4.501205479758355749e-03, + 4.498929500506313080e-03, + 4.496646321703196177e-03, + 4.494355947397680497e-03, + 4.492058381650012970e-03, + 4.489753628531856743e-03, + 4.487441692126325869e-03, + 4.485122576528134501e-03, + 4.482796285843335810e-03, + 4.480462824189485917e-03, + 4.478122195695644764e-03, + 4.475774404502228659e-03, + 4.473419454761192425e-03, + 4.471057350635856791e-03, + 4.468688096300891914e-03, + 4.466311695942624428e-03, + 4.463928153758536105e-03, + 4.461537473957570034e-03, + 4.459139660760252054e-03, + 4.456734718398198958e-03, + 4.454322651114703963e-03, + 4.451903463164192006e-03, + 4.449477158812527658e-03, + 4.447043742337036809e-03, + 4.444603218026265540e-03, + 4.442155590180131043e-03, + 4.439700863109955452e-03, + 4.437239041138309713e-03, + 4.434770128599077772e-03, + 4.432294129837561526e-03, + 4.429811049210229286e-03, + 4.427320891084966445e-03, + 4.424823659840902874e-03, + 4.422319359868328789e-03, + 4.419807995569091132e-03, + 4.417289571356021981e-03, + 4.414764091653321926e-03, + 4.412231560896508892e-03, + 4.409691983532219514e-03, + 4.407145364018438122e-03, + 4.404591706824304183e-03, + 4.402031016430186031e-03, + 4.399463297327712956e-03, + 4.396888554019660715e-03, + 4.394306791020000970e-03, + 4.391718012853974146e-03, + 4.389122224057932439e-03, + 4.386519429179323339e-03, + 4.383909632777001006e-03, + 4.381292839420663360e-03, + 4.378669053691452290e-03, + 4.376038280181501761e-03, + 4.373400523493984650e-03, + 4.370755788243465764e-03, + 4.368104079055362340e-03, + 4.365445400566316143e-03, + 4.362779757424119741e-03, + 4.360107154287536091e-03, + 4.357427595826537069e-03, + 4.354741086722097899e-03, + 4.352047631666241395e-03, + 4.349347235362142038e-03, + 4.346639902523947302e-03, + 4.343925637876858321e-03, + 4.341204446157161979e-03, + 4.338476332112157184e-03, + 4.335741300500020427e-03, + 4.332999356090235128e-03, + 4.330250503662944582e-03, + 4.327494748009644114e-03, + 4.324732093932494130e-03, + 4.321962546244776347e-03, + 4.319186109770798386e-03, + 4.316402789345738511e-03, + 4.313612589815707214e-03, + 4.310815516037896401e-03, + 4.308011572880255866e-03, + 4.305200765221828089e-03, + 4.302383097952465485e-03, + 4.299558575972956161e-03, + 4.296727204195025657e-03, + 4.293888987541290975e-03, + 4.291043930945101850e-03, + 4.288192039350979638e-03, + 4.285333317714093426e-03, + 4.282467771000432639e-03, + 4.279595404187107148e-03, + 4.276716222261712358e-03, + 4.273830230223042183e-03, + 4.270937433080413369e-03, + 4.268037835854081828e-03, + 4.265131443575180190e-03, + 4.262218261285510498e-03, + 4.259298294037746312e-03, + 4.256371546895340759e-03, + 4.253438024932458018e-03, + 4.250497733234136384e-03, + 4.247550676896064484e-03, + 4.244596861024695772e-03, + 4.241636290737303173e-03, + 4.238668971161829897e-03, + 4.235694907436806170e-03, + 4.232714104711813273e-03, + 4.229726568146780115e-03, + 4.226732302912513187e-03, + 4.223731314190506611e-03, + 4.220723607172838926e-03, + 4.217709187062372578e-03, + 4.214688059072529275e-03, + 4.211660228427405346e-03, + 4.208625700361776946e-03, + 4.205584480121028930e-03, + 4.202536572961114957e-03, + 4.199481984148702336e-03, + 4.196420718960969937e-03, + 4.193352782685778185e-03, + 4.190278180621537230e-03, + 4.187196918077086376e-03, + 4.184109000372130370e-03, + 4.181014432836752809e-03, + 4.177913220811463844e-03, + 4.174805369647649478e-03, + 4.171690884706917568e-03, + 4.168569771361502023e-03, + 4.165442034994219431e-03, + 4.162307680998281710e-03, + 4.159166714777514685e-03, + 4.156019141746105684e-03, + 4.152864967328744050e-03, + 4.149704196960686195e-03, + 4.146536836087522278e-03, + 4.143362890165330596e-03, + 4.140182364660687127e-03, + 4.136995265050538891e-03, + 4.133801596822138033e-03, + 4.130601365473460761e-03, + 4.127394576512492634e-03, + 4.124181235458026541e-03, + 4.120961347838859520e-03, + 4.117734919194324453e-03, + 4.114501955074193786e-03, + 4.111262461038472232e-03, + 4.108016442657506928e-03, + 4.104763905512110594e-03, + 4.101504855193238881e-03, + 4.098239297302345985e-03, + 4.094967237451048979e-03, + 4.091688681261275266e-03, + 4.088403634365357989e-03, + 4.085112102405817451e-03, + 4.081814091035314285e-03, + 4.078509605917065781e-03, + 4.075198652724348891e-03, + 4.071881237140543598e-03, + 4.068557364859641187e-03, + 4.065227041585401171e-03, + 4.061890273032252481e-03, + 4.058547064924413958e-03, + 4.055197422996495438e-03, + 4.051841352993308665e-03, + 4.048478860669748464e-03, + 4.045109951790874271e-03, + 4.041734632132004679e-03, + 4.038352907478437274e-03, + 4.034964783625760894e-03, + 4.031570266379575461e-03, + 4.028169361555565715e-03, + 4.024762074979659938e-03, + 4.021348412487784491e-03, + 4.017928379925811769e-03, + 4.014501983150044195e-03, + 4.011069228026473490e-03, + 4.007630120431290681e-03, + 4.004184666250808038e-03, + 4.000732871381217082e-03, + 3.997274741728884355e-03, + 3.993810283210065190e-03, + 3.990339501751011264e-03, + 3.986862403288093763e-03, + 3.983378993767539705e-03, + 3.979889279145545564e-03, + 3.976393265388380484e-03, + 3.972890958472120870e-03, + 3.969382364382935749e-03, + 3.965867489116785792e-03, + 3.962346338679577709e-03, + 3.958818919087232768e-03, + 3.955285236365494242e-03, + 3.951745296549822456e-03, + 3.948199105685973320e-03, + 3.944646669829175202e-03, + 3.941087995044640670e-03, + 3.937523087407550013e-03, + 3.933951953002725113e-03, + 3.930374597925005882e-03, + 3.926791028278893772e-03, + 3.923201250178738261e-03, + 3.919605269748761139e-03, + 3.916003093122876963e-03, + 3.912394726444777190e-03, + 3.908780175868014316e-03, + 3.905159447555758140e-03, + 3.901532547681055979e-03, + 3.897899482426633606e-03, + 3.894260257984776853e-03, + 3.890614880557854201e-03, + 3.886963356357573448e-03, + 3.883305691605466563e-03, + 3.879641892532838081e-03, + 3.875971965380534817e-03, + 3.872295916399063828e-03, + 3.868613751848716011e-03, + 3.864925477999234769e-03, + 3.861231101130162963e-03, + 3.857530627530544095e-03, + 3.853824063499022932e-03, + 3.850111415343946981e-03, + 3.846392689383149651e-03, + 3.842667891944024847e-03, + 3.838937029363652734e-03, + 3.835200107988512644e-03, + 3.831457134174759763e-03, + 3.827708114288042984e-03, + 3.823953054703323196e-03, + 3.820191961805506024e-03, + 3.816424841988576202e-03, + 3.812651701656174369e-03, + 3.808872547221487347e-03, + 3.805087385107064693e-03, + 3.801296221744893730e-03, + 3.797499063576544390e-03, + 3.793695917052837454e-03, + 3.789886788634192795e-03, + 3.786071684790300648e-03, + 3.782250612000291178e-03, + 3.778423576752750097e-03, + 3.774590585545617612e-03, + 3.770751644885976354e-03, + 3.766906761290734866e-03, + 3.763055941285613649e-03, + 3.759199191406175592e-03, + 3.755336518196903100e-03, + 3.751467928211725013e-03, + 3.747593428013992322e-03, + 3.743713024176190205e-03, + 3.739826723280110631e-03, + 3.735934531916902668e-03, + 3.732036456686876457e-03, + 3.728132504199584314e-03, + 3.724222681073925678e-03, + 3.720306993937855678e-03, + 3.716385449428725573e-03, + 3.712458054192938842e-03, + 3.708524814886103409e-03, + 3.704585738173123144e-03, + 3.700640830727993606e-03, + 3.696690099233686244e-03, + 3.692733550382744714e-03, + 3.688771190876425320e-03, + 3.684803027425270772e-03, + 3.680829066749019551e-03, + 3.676849315576333991e-03, + 3.672863780645151989e-03, + 3.668872468702331826e-03, + 3.664875386503818264e-03, + 3.660872540814739257e-03, + 3.656863938409117120e-03, + 3.652849586070012079e-03, + 3.648829490589656274e-03, + 3.644803658769080797e-03, + 3.640772097418494297e-03, + 3.636734813357024934e-03, + 3.632691813412582040e-03, + 3.628643104422475847e-03, + 3.624588693232522803e-03, + 3.620528586697667472e-03, + 3.616462791681858933e-03, + 3.612391315057828737e-03, + 3.608314163707223177e-03, + 3.604231344520705208e-03, + 3.600142864397632651e-03, + 3.596048730246426822e-03, + 3.591948948984223424e-03, + 3.587843527537014354e-03, + 3.583732472839733143e-03, + 3.579615791836024668e-03, + 3.575493491478353575e-03, + 3.571365578728081906e-03, + 3.567232060555199785e-03, + 3.563092943938677565e-03, + 3.558948235866114113e-03, + 3.554797943333700815e-03, + 3.550642073346831334e-03, + 3.546480632919156613e-03, + 3.542313629073231065e-03, + 3.538141068840418464e-03, + 3.533962959260616120e-03, + 3.529779307382415344e-03, + 3.525590120263221144e-03, + 3.521395404968890967e-03, + 3.517195168574127184e-03, + 3.512989418162123199e-03, + 3.508778160824701804e-03, + 3.504561403662422719e-03, + 3.500339153784356224e-03, + 3.496111418307970824e-03, + 3.491878204359776840e-03, + 3.487639519074280364e-03, + 3.483395369595105196e-03, + 3.479145763073951576e-03, + 3.474890706671168207e-03, + 3.470630207555900574e-03, + 3.466364272905397489e-03, + 3.462092909905551460e-03, + 3.457816125750860520e-03, + 3.453533927644119456e-03, + 3.449246322796585464e-03, + 3.444953318428111300e-03, + 3.440654921766767970e-03, + 3.436351140049253693e-03, + 3.432041980520519203e-03, + 3.427727450433890044e-03, + 3.423407557051246983e-03, + 3.419082307642735009e-03, + 3.414751709486656649e-03, + 3.410415769870128559e-03, + 3.406074496088046331e-03, + 3.401727895444183868e-03, + 3.397375975250150823e-03, + 3.393018742826033572e-03, + 3.388656205500321494e-03, + 3.384288370609591680e-03, + 3.379915245498711033e-03, + 3.375536837520923435e-03, + 3.371153154037559180e-03, + 3.366764202418184599e-03, + 3.362369990040700498e-03, + 3.357970524291034251e-03, + 3.353565812563464622e-03, + 3.349155862260351155e-03, + 3.344740680792031382e-03, + 3.340320275577465716e-03, + 3.335894654043265566e-03, + 3.331463823624307864e-03, + 3.327027791763868640e-03, + 3.322586565912795994e-03, + 3.318140153530603400e-03, + 3.313688562084366428e-03, + 3.309231799049451757e-03, + 3.304769871909337634e-03, + 3.300302788155417850e-03, + 3.295830555287091509e-03, + 3.291353180811909182e-03, + 3.286870672245287544e-03, + 3.282383037110619094e-03, + 3.277890282939401826e-03, + 3.273392417270923945e-03, + 3.268889447652602136e-03, + 3.264381381639681456e-03, + 3.259868226795134289e-03, + 3.255349990690340790e-03, + 3.250826680904085348e-03, + 3.246298305023207539e-03, + 3.241764870642556157e-03, + 3.237226385364611481e-03, + 3.232682856799911578e-03, + 3.228134292566648984e-03, + 3.223580700290881035e-03, + 3.219022087606584082e-03, + 3.214458462155392413e-03, + 3.209889831586726187e-03, + 3.205316203557913735e-03, + 3.200737585733933518e-03, + 3.196153985787332594e-03, + 3.191565411398858930e-03, + 3.186971870256396274e-03, + 3.182373370056131631e-03, + 3.177769918501422482e-03, + 3.173161523303482008e-03, + 3.168548192181458879e-03, + 3.163929932861741200e-03, + 3.159306753078523766e-03, + 3.154678660573756888e-03, + 3.150045663096769956e-03, + 3.145407768404723768e-03, + 3.140764984262208077e-03, + 3.136117318441377332e-03, + 3.131464778722113304e-03, + 3.126807372891673813e-03, + 3.122145108744891345e-03, + 3.117477994084229872e-03, + 3.112806036719581882e-03, + 3.108129244468147388e-03, + 3.103447625155088783e-03, + 3.098761186612445772e-03, + 3.094069936680331895e-03, + 3.089373883205775301e-03, + 3.084673034043469448e-03, + 3.079967397055597030e-03, + 3.075256980111621807e-03, + 3.070541791088362334e-03, + 3.065821837870215307e-03, + 3.061097128348745297e-03, + 3.056367670422910267e-03, + 3.051633471999127059e-03, + 3.046894540990952634e-03, + 3.042150885319456610e-03, + 3.037402512912905968e-03, + 3.032649431706651438e-03, + 3.027891649643830053e-03, + 3.023129174674327353e-03, + 3.018362014755416635e-03, + 3.013590177851931985e-03, + 3.008813671935348880e-03, + 3.004032504984968134e-03, + 2.999246684986779220e-03, + 2.994456219934151561e-03, + 2.989661117827731307e-03, + 2.984861386675146441e-03, + 2.980057034491176773e-03, + 2.975248069297885788e-03, + 2.970434499124296242e-03, + 2.965616332006527217e-03, + 2.960793575987937225e-03, + 2.955966239118756455e-03, + 2.951134329456490089e-03, + 2.946297855065567895e-03, + 2.941456824017251413e-03, + 2.936611244390355605e-03, + 2.931761124270167249e-03, + 2.926906471749171797e-03, + 2.922047294926942342e-03, + 2.917183601909823908e-03, + 2.912315400811304241e-03, + 2.907442699751656024e-03, + 2.902565506858082595e-03, + 2.897683830264848048e-03, + 2.892797678112975831e-03, + 2.887907058550349352e-03, + 2.883011979731907141e-03, + 2.878112449819320191e-03, + 2.873208476980890907e-03, + 2.868300069392302944e-03, + 2.863387235235383913e-03, + 2.858469982699396884e-03, + 2.853548319980041617e-03, + 2.848622255279638447e-03, + 2.843691796807810892e-03, + 2.838756952780389746e-03, + 2.833817731420162477e-03, + 2.828874140956738354e-03, + 2.823926189626227955e-03, + 2.818973885671642154e-03, + 2.814017237342513519e-03, + 2.809056252895040726e-03, + 2.804090940592242082e-03, + 2.799121308703606849e-03, + 2.794147365505252230e-03, + 2.789169119280064755e-03, + 2.784186578317436600e-03, + 2.779199750913095585e-03, + 2.774208645369913989e-03, + 2.769213269996658247e-03, + 2.764213633109286524e-03, + 2.759209743029739613e-03, + 2.754201608086701610e-03, + 2.749189236615456802e-03, + 2.744172636957616877e-03, + 2.739151817461257972e-03, + 2.734126786481101950e-03, + 2.729097552378082284e-03, + 2.724064123519776438e-03, + 2.719026508280038106e-03, + 2.713984715039092187e-03, + 2.708938752183755530e-03, + 2.703888628107084784e-03, + 2.698834351208280555e-03, + 2.693775929893464129e-03, + 2.688713372574511300e-03, + 2.683646687669804382e-03, + 2.678575883604354928e-03, + 2.673500968808859186e-03, + 2.668421951720955764e-03, + 2.663338840784006123e-03, + 2.658251644447809717e-03, + 2.653160371168561057e-03, + 2.648065029408471979e-03, + 2.642965627635979805e-03, + 2.637862174325883522e-03, + 2.632754677958929184e-03, + 2.627643147022263540e-03, + 2.622527590009010763e-03, + 2.617408015418439416e-03, + 2.612284431756102965e-03, + 2.607156847533559189e-03, + 2.602025271268225762e-03, + 2.596889711484181695e-03, + 2.591750176710989027e-03, + 2.586606675484512050e-03, + 2.581459216346746865e-03, + 2.576307807845494395e-03, + 2.571152458534811409e-03, + 2.565993176974548651e-03, + 2.560829971730556841e-03, + 2.555662851374835426e-03, + 2.550491824485148773e-03, + 2.545316899645205713e-03, + 2.540138085444814363e-03, + 2.534955390479477939e-03, + 2.529768823350794608e-03, + 2.524578392666163018e-03, + 2.519384107038608392e-03, + 2.514185975087519787e-03, + 2.508984005437794873e-03, + 2.503778206719967873e-03, + 2.498568587570977172e-03, + 2.493355156632970967e-03, + 2.488137922554123447e-03, + 2.482916893988474771e-03, + 2.477692079595606237e-03, + 2.472463488041057051e-03, + 2.467231127995928811e-03, + 2.461995008137017778e-03, + 2.456755137147011766e-03, + 2.451511523714096363e-03, + 2.446264176532117560e-03, + 2.441013104300770401e-03, + 2.435758315725252473e-03, + 2.430499819516167195e-03, + 2.425237624390295769e-03, + 2.419971739069329535e-03, + 2.414702172281242565e-03, + 2.409428932758984551e-03, + 2.404152029241286154e-03, + 2.398871470472550577e-03, + 2.393587265202514868e-03, + 2.388299422186430324e-03, + 2.383007950185220356e-03, + 2.377712857965050709e-03, + 2.372414154297792198e-03, + 2.367111847960587465e-03, + 2.361805947736014474e-03, + 2.356496462412251743e-03, + 2.351183400782771733e-03, + 2.345866771646199465e-03, + 2.340546583807071902e-03, + 2.335222846074929814e-03, + 2.329895567264499926e-03, + 2.324564756196416566e-03, + 2.319230421695944473e-03, + 2.313892572594348791e-03, + 2.308551217727599237e-03, + 2.303206365937182382e-03, + 2.297858026069957670e-03, + 2.292506206977867715e-03, + 2.287150917518070148e-03, + 2.281792166553133633e-03, + 2.276429962950581639e-03, + 2.271064315583372524e-03, + 2.265695233329462818e-03, + 2.260322725071952071e-03, + 2.254946799699273675e-03, + 2.249567466104884349e-03, + 2.244184733187099771e-03, + 2.238798609849933750e-03, + 2.233409105001904309e-03, + 2.228016227556825577e-03, + 2.222619986433688969e-03, + 2.217220390556299322e-03, + 2.211817448853714650e-03, + 2.206411170259833278e-03, + 2.201001563713552139e-03, + 2.195588638158926797e-03, + 2.190172402544799789e-03, + 2.184752865824979295e-03, + 2.179330036958372283e-03, + 2.173903924908588987e-03, + 2.168474538644374425e-03, + 2.163041887139193799e-03, + 2.157605979371390783e-03, + 2.152166824324357533e-03, + 2.146724430986212892e-03, + 2.141278808349666215e-03, + 2.135829965412852638e-03, + 2.130377911178111400e-03, + 2.124922654652810702e-03, + 2.119464204849218041e-03, + 2.114002570784121165e-03, + 2.108537761479286048e-03, + 2.103069785961035349e-03, + 2.097598653260415811e-03, + 2.092124372413334439e-03, + 2.086646952460224132e-03, + 2.081166402446192436e-03, + 2.075682731421152512e-03, + 2.070195948439451043e-03, + 2.064706062560292803e-03, + 2.059213082847369865e-03, + 2.053717018368728022e-03, + 2.048217878197599890e-03, + 2.042715671411189302e-03, + 2.037210407091489227e-03, + 2.031702094325138225e-03, + 2.026190742203131182e-03, + 2.020676359820965020e-03, + 2.015158956278810878e-03, + 2.009638540681068283e-03, + 2.004115122136856074e-03, + 1.998588709759538829e-03, + 1.993059312666919849e-03, + 1.987526939981412027e-03, + 1.981991600829700884e-03, + 1.976453304342609251e-03, + 1.970912059655891349e-03, + 1.965367875909163325e-03, + 1.959820762246691685e-03, + 1.954270727816941836e-03, + 1.948717781772445808e-03, + 1.943161933270665500e-03, + 1.937603191472701825e-03, + 1.932041565544182242e-03, + 1.926477064655102676e-03, + 1.920909697979523295e-03, + 1.915339474695707065e-03, + 1.909766403986324886e-03, + 1.904190495037980059e-03, + 1.898611757041705067e-03, + 1.893030199192498840e-03, + 1.887445830689521908e-03, + 1.881858660736232796e-03, + 1.876268698540095722e-03, + 1.870675953312415148e-03, + 1.865080434269213334e-03, + 1.859482150629825645e-03, + 1.853881111618394580e-03, + 1.848277326462471589e-03, + 1.842670804393899391e-03, + 1.837061554648635039e-03, + 1.831449586466455228e-03, + 1.825834909091098111e-03, + 1.820217531770476887e-03, + 1.814597463756255228e-03, + 1.808974714304015761e-03, + 1.803349292673463687e-03, + 1.797721208127955579e-03, + 1.792090469934978824e-03, + 1.786457087365703840e-03, + 1.780821069695168613e-03, + 1.775182426202427666e-03, + 1.769541166170250212e-03, + 1.763897298884949940e-03, + 1.758250833637271240e-03, + 1.752601779721125021e-03, + 1.746950146434414009e-03, + 1.741295943078933865e-03, + 1.735639178959952084e-03, + 1.729979863386715182e-03, + 1.724318005671990296e-03, + 1.718653615132215672e-03, + 1.712986701087709264e-03, + 1.707317272862246766e-03, + 1.701645339783255462e-03, + 1.695970911181972525e-03, + 1.690293996393001574e-03, + 1.684614604754781702e-03, + 1.678932745609228823e-03, + 1.673248428301555039e-03, + 1.667561662181160946e-03, + 1.661872456600354316e-03, + 1.656180820915203154e-03, + 1.650486764485424888e-03, + 1.644790296674028150e-03, + 1.639091426847484080e-03, + 1.633390164375936012e-03, + 1.627686518632695317e-03, + 1.621980498994768111e-03, + 1.616272114842376038e-03, + 1.610561375559143617e-03, + 1.604848290532265428e-03, + 1.599132869152103441e-03, + 1.593415120812383904e-03, + 1.587695054910351301e-03, + 1.581972680846315373e-03, + 1.576248008024152669e-03, + 1.570521045850889561e-03, + 1.564791803736581902e-03, + 1.559060291095173707e-03, + 1.553326517343218451e-03, + 1.547590491900752499e-03, + 1.541852224191152428e-03, + 1.536111723640793065e-03, + 1.530368999679237443e-03, + 1.524624061739402250e-03, + 1.518876919257104849e-03, + 1.513127581671543575e-03, + 1.507376058424846933e-03, + 1.501622358962250532e-03, + 1.495866492732269909e-03, + 1.490108469186361391e-03, + 1.484348297778782669e-03, + 1.478585987967478803e-03, + 1.472821549212647825e-03, + 1.467054990978262311e-03, + 1.461286322730668153e-03, + 1.455515553939359333e-03, + 1.449742694077189344e-03, + 1.443967752619386728e-03, + 1.438190739044365200e-03, + 1.432411662833586600e-03, + 1.426630533471217850e-03, + 1.420847360444313541e-03, + 1.415062153242998720e-03, + 1.409274921359989462e-03, + 1.403485674291094854e-03, + 1.397694421534768352e-03, + 1.391901172592261088e-03, + 1.386105936967818543e-03, + 1.380308724168321025e-03, + 1.374509543703171998e-03, + 1.368708405085148532e-03, + 1.362905317828998339e-03, + 1.357100291452951807e-03, + 1.351293335477289116e-03, + 1.345484459425243598e-03, + 1.339673672822835416e-03, + 1.333860985198552594e-03, + 1.328046406083516900e-03, + 1.322229945011659923e-03, + 1.316411611519333405e-03, + 1.310591415145480115e-03, + 1.304769365431802334e-03, + 1.298945471922308657e-03, + 1.293119744163814680e-03, + 1.287292191705527314e-03, + 1.281462824098905141e-03, + 1.275631650898560255e-03, + 1.269798681660930543e-03, + 1.263963925945178930e-03, + 1.258127393313050475e-03, + 1.252289093328396623e-03, + 1.246449035558009830e-03, + 1.240607229570500972e-03, + 1.234763684937125730e-03, + 1.228918411231636268e-03, + 1.223071418029959877e-03, + 1.217222714910352931e-03, + 1.211372311453590405e-03, + 1.205520217242561686e-03, + 1.199666441862457054e-03, + 1.193810994900933349e-03, + 1.187953885947645597e-03, + 1.182095124594761569e-03, + 1.176234720436547835e-03, + 1.170372683069221664e-03, + 1.164509022091851989e-03, + 1.158643747105043411e-03, + 1.152776867711824155e-03, + 1.146908393517504258e-03, + 1.141038334129275281e-03, + 1.135166699156702971e-03, + 1.129293498211266259e-03, + 1.123418740906529864e-03, + 1.117542436858335111e-03, + 1.111664595684373627e-03, + 1.105785227004387481e-03, + 1.099904340440338102e-03, + 1.094021945616068230e-03, + 1.088138052157151207e-03, + 1.082252669691795635e-03, + 1.076365807849383226e-03, + 1.070477476262038071e-03, + 1.064587684563154946e-03, + 1.058696442388240870e-03, + 1.052803759375094865e-03, + 1.046909645162818515e-03, + 1.041014109392635186e-03, + 1.035117161707759708e-03, + 1.029218811752974231e-03, + 1.023319069175153634e-03, + 1.017417943622774381e-03, + 1.011515444746107937e-03, + 1.005611582197392514e-03, + 9.997063656304349451e-04, + 9.937998047007765706e-04, + 9.878919090658838404e-04, + 9.819826883848115605e-04, + 9.760721523180358175e-04, + 9.701603105283785862e-04, + 9.642471726795301791e-04, + 9.583327484376214477e-04, + 9.524170474697606515e-04, + 9.465000794449295518e-04, + 9.405818540338460425e-04, + 9.346623809086148206e-04, + 9.287416697429102912e-04, + 9.228197302121565445e-04, + 9.168965719931189374e-04, + 9.109722047640862394e-04, + 9.050466382050428036e-04, + 8.991198819972115756e-04, + 8.931919458235461047e-04, + 8.872628393683265700e-04, + 8.813325723170159064e-04, + 8.754011543571617532e-04, + 8.694685951770614752e-04, + 8.635349044666089250e-04, + 8.576000919174758298e-04, + 8.516641672219600438e-04, + 8.457271400745157907e-04, + 8.397890201702538871e-04, + 8.338498172058803363e-04, + 8.279095408795220969e-04, + 8.219682008903965095e-04, + 8.160258069389937684e-04, + 8.100823687272480081e-04, + 8.041378959581396181e-04, + 7.981923983358668725e-04, + 7.922458855660313281e-04, + 7.862983673551625103e-04, + 7.803498534112258619e-04, + 7.744003534432145411e-04, + 7.684498771610000179e-04, + 7.624984342762396606e-04, + 7.565460345010392631e-04, + 7.505926875488700637e-04, + 7.446384031344087167e-04, + 7.386831909731321260e-04, + 7.327270607818286464e-04, + 7.267700222781224443e-04, + 7.208120851806514148e-04, + 7.148532592092496536e-04, + 7.088935540845412060e-04, + 7.029329795281171172e-04, + 6.969715452627160603e-04, + 6.910092610118850898e-04, + 6.850461364998248169e-04, + 6.790821814523045853e-04, + 6.731174055951836188e-04, + 6.671518186559964505e-04, + 6.611854303624673489e-04, + 6.552182504433594649e-04, + 6.492502886286651096e-04, + 6.432815546485862786e-04, + 6.373120582343833659e-04, + 6.313418091182296634e-04, + 6.253708170327922089e-04, + 6.193990917117541545e-04, + 6.134266428893273091e-04, + 6.074534803004385131e-04, + 6.014796136809149284e-04, + 5.955050527670634761e-04, + 5.895298072958614398e-04, + 5.835538870051368765e-04, + 5.775773016332186359e-04, + 5.716000609187895602e-04, + 5.656221746018028507e-04, + 5.596436524220005067e-04, + 5.536645041204944166e-04, + 5.476847394382879401e-04, + 5.417043681171922762e-04, + 5.357233998996728313e-04, + 5.297418445285087801e-04, + 5.237597117469664290e-04, + 5.177770112989952406e-04, + 5.117937529287348462e-04, + 5.058099463810382824e-04, + 4.998256014009876775e-04, + 4.938407277340784579e-04, + 4.878553351264070231e-04, + 4.818694333243121459e-04, + 4.758830320742383634e-04, + 4.698961411236424776e-04, + 4.639087702196522897e-04, + 4.579209291099116267e-04, + 4.519326275427690471e-04, + 4.459438752661232740e-04, + 4.399546820289483963e-04, + 4.339650575798048799e-04, + 4.279750116677580492e-04, + 4.219845540422313408e-04, + 4.159936944526551844e-04, + 4.100024426486526723e-04, + 4.040108083802221393e-04, + 3.980188013972550719e-04, + 3.920264314500533274e-04, + 3.860337082888491028e-04, + 3.800406416639851839e-04, + 3.740472413261019158e-04, + 3.680535170257863550e-04, + 3.620594785134241132e-04, + 3.560651355401183273e-04, + 3.500704978563360325e-04, + 3.440755752128302767e-04, + 3.380803773604886572e-04, + 3.320849140499170416e-04, + 3.260891950319592795e-04, + 3.200932300572109927e-04, + 3.140970288762096356e-04, + 3.081006012396129002e-04, + 3.021039568977848229e-04, + 2.961071056009793932e-04, + 2.901100570995288259e-04, + 2.841128211433552363e-04, + 2.781154074824900273e-04, + 2.721178258666618385e-04, + 2.661200860451409626e-04, + 2.601221977675950529e-04, + 2.541241707830715446e-04, + 2.481260148401816983e-04, + 2.421277396879517802e-04, + 2.361293550744747753e-04, + 2.301308707478253183e-04, + 2.241322964559142213e-04, + 2.181336419460683446e-04, + 2.121349169655526682e-04, + 2.061361312610841888e-04, + 2.001372945790174003e-04, + 1.941384166655295025e-04, + 1.881395072662029829e-04, + 1.821405761262100674e-04, + 1.761416329904982804e-04, + 1.701426876034396523e-04, + 1.641437497086818307e-04, + 1.581448290500676737e-04, + 1.521459353701489989e-04, + 1.461470784117746677e-04, + 1.401482679166055274e-04, + 1.341495136260319708e-04, + 1.281508252810277862e-04, + 1.221522126217967886e-04, + 1.161536853879598444e-04, + 1.101552533187387931e-04, + 1.041569261524725678e-04, + 9.815871362713673109e-05, + 9.216062547985899947e-05, + 8.616267144710454710e-05, + 8.016486126486097063e-05, + 7.416720466828813254e-05, + 6.816971139156737577e-05, + 6.217239116882385445e-05, + 5.617525373277230445e-05, + 5.017830881557054765e-05, + 4.418156614900453134e-05, + 3.818503546333603142e-05, + 3.218872648882431655e-05, + 2.619264895423961215e-05, + 2.019681258778345924e-05, + 1.420122711693924030e-05, + 8.205902268121961562e-06, + 2.210847766863241264e-06, +-3.783926662003991898e-06, +-9.778411294829215548e-06, +-1.577259640862519510e-05, +-2.176647228155168063e-05, +-2.776002919273071011e-05, +-3.375325742206175544e-05, +-3.974614725057167583e-05, +-4.573868896056397515e-05, +-5.173087283469930025e-05, +-5.772268915734735974e-05, +-6.371412821366702589e-05, +-6.970518028975615781e-05, +-7.569583567306798931e-05, +-8.168608465189233813e-05, +-8.767591751583882133e-05, +-9.366532455565254091e-05, +-9.965429606302934928e-05, +-1.056428223310315324e-04, +-1.116308936539044984e-04, +-1.176185003268912974e-04, +-1.236056326467154171e-04, +-1.295922809110638756e-04, +-1.355784354190014680e-04, +-1.415640864711212809e-04, +-1.475492243686923736e-04, +-1.535338394146766247e-04, +-1.595179219135438211e-04, +-1.655014621704211557e-04, +-1.714844504924408636e-04, +-1.774668771878248571e-04, +-1.834487325660319338e-04, +-1.894300069381735945e-04, +-1.954106906164966627e-04, +-2.013907739148673259e-04, +-2.073702471485837319e-04, +-2.133491006341936525e-04, +-2.193273246899090289e-04, +-2.253049096354230391e-04, +-2.312818457917246995e-04, +-2.372581234815814434e-04, +-2.432337330290206554e-04, +-2.492086647597476314e-04, +-2.551829090012924881e-04, +-2.611564560820911116e-04, +-2.671292963328386486e-04, +-2.731014200855679886e-04, +-2.790728176737991670e-04, +-2.850434794328915141e-04, +-2.910133956998535941e-04, +-2.969825568131645292e-04, +-3.029509531132517524e-04, +-3.089185749419769340e-04, +-3.148854126431168787e-04, +-3.208514565621767181e-04, +-3.268166970462109628e-04, +-3.327811244441653514e-04, +-3.387447291070328132e-04, +-3.447075013869978699e-04, +-3.506694316385871365e-04, +-3.566305102178170846e-04, +-3.625907274826779218e-04, +-3.685500737932820184e-04, +-3.745085395109449384e-04, +-3.804661149995353249e-04, +-3.864227906245599965e-04, +-3.923785567533046221e-04, +-3.983334037551912910e-04, +-4.042873220015914338e-04, +-4.102403018656387433e-04, +-4.161923337227135962e-04, +-4.221434079499246958e-04, +-4.280935149265926261e-04, +-4.340426450340628814e-04, +-4.399907886555251297e-04, +-4.459379361763570132e-04, +-4.518840779842756656e-04, +-4.578292044684232416e-04, +-4.637733060208399684e-04, +-4.697163730348930281e-04, +-4.756583959067454351e-04, +-4.815993650344460109e-04, +-4.875392708180758595e-04, +-4.934781036600975352e-04, +-4.994158539651691016e-04, +-5.053525121399645879e-04, +-5.112880685935811608e-04, +-5.172225137373622373e-04, +-5.231558379847106761e-04, +-5.290880317515682125e-04, +-5.350190854559007869e-04, +-5.409489895181800395e-04, +-5.468777343611935749e-04, +-5.528053104098733326e-04, +-5.587317080916295213e-04, +-5.646569178365069613e-04, +-5.705809300762703425e-04, +-5.765037352457426725e-04, +-5.824253237818955223e-04, +-5.883456861240009229e-04, +-5.942648127140345805e-04, +-6.001826939961699874e-04, +-6.060993204172520016e-04, +-6.120146824266173031e-04, +-6.179287704759082360e-04, +-6.238415750194875164e-04, +-6.297530865142566278e-04, +-6.356632954194676045e-04, +-6.415721921972032237e-04, +-6.474797673118674315e-04, +-6.533860112305911591e-04, +-6.592909144233881228e-04, +-6.651944673622335776e-04, +-6.710966605224117634e-04, +-6.769974843816000797e-04, +-6.828969294200204401e-04, +-6.887949861207819883e-04, +-6.946916449696960254e-04, +-7.005868964551024286e-04, +-7.064807310683374848e-04, +-7.123731393032257247e-04, +-7.182641116565561049e-04, +-7.241536386278981264e-04, +-7.300417107194248937e-04, +-7.359283184362485665e-04, +-7.418134522865760510e-04, +-7.476971027808633225e-04, +-7.535792604329529703e-04, +-7.594599157592315554e-04, +-7.653390592791057927e-04, +-7.712166815151482672e-04, +-7.770927729921968960e-04, +-7.829673242386794981e-04, +-7.888403257857092444e-04, +-7.947117681672383974e-04, +-8.005816419203904029e-04, +-8.064499375852902116e-04, +-8.123166457048724845e-04, +-8.181817568253631949e-04, +-8.240452614957640906e-04, +-8.299071502683333205e-04, +-8.357674136984019880e-04, +-8.416260423441853907e-04, +-8.474830267671382058e-04, +-8.533383575320918580e-04, +-8.591920252063551741e-04, +-8.650440203611708999e-04, +-8.708943335701579188e-04, +-8.767429554107712382e-04, +-8.825898764633932116e-04, +-8.884350873114853263e-04, +-8.942785785419287521e-04, +-9.001203407448429535e-04, +-9.059603645134044116e-04, +-9.117986404442560188e-04, +-9.176351591373262334e-04, +-9.234699111956408630e-04, +-9.293028872258070512e-04, +-9.351340778374950301e-04, +-9.409634736439176621e-04, +-9.467910652616503544e-04, +-9.526168433104432749e-04, +-9.584407984135675379e-04, +-9.642629211979579940e-04, +-9.700832022933254849e-04, +-9.759016323335847377e-04, +-9.817182019553317117e-04, +-9.875329017992673722e-04, +-9.933457225093204630e-04, +-9.991566547327816218e-04, +-1.004965689120641001e-03, +-1.010772816327428023e-03, +-1.016578027011002562e-03, +-1.022381311832982987e-03, +-1.028182661458551441e-03, +-1.033982066556288389e-03, +-1.039779517798626466e-03, +-1.045575005861359335e-03, +-1.051368521424038503e-03, +-1.057160055170115786e-03, +-1.062949597786062069e-03, +-1.068737139962667049e-03, +-1.074522672394145201e-03, +-1.080306185778300791e-03, +-1.086087670816970234e-03, +-1.091867118215210895e-03, +-1.097644518682409573e-03, +-1.103419862931456991e-03, +-1.109193141678905441e-03, +-1.114964345645279731e-03, +-1.120733465554924748e-03, +-1.126500492135812034e-03, +-1.132265416119945496e-03, +-1.138028228243182297e-03, +-1.143788919245058728e-03, +-1.149547479869248833e-03, +-1.155303900863065671e-03, +-1.161058172977870060e-03, +-1.166810286969203287e-03, +-1.172560233595907383e-03, +-1.178308003621426165e-03, +-1.184053587812923568e-03, +-1.189796976941412876e-03, +-1.195538161782167636e-03, +-1.201277133114229869e-03, +-1.207013881720861524e-03, +-1.212748398389367757e-03, +-1.218480673910926279e-03, +-1.224210699080982220e-03, +-1.229938464699073574e-03, +-1.235663961568649700e-03, +-1.241387180497402877e-03, +-1.247108112297429846e-03, +-1.252826747784324332e-03, +-1.258543077778619254e-03, +-1.264257093104260380e-03, +-1.269968784590017529e-03, +-1.275678143068688548e-03, +-1.281385159376903071e-03, +-1.287089824356113694e-03, +-1.292792128851757896e-03, +-1.298492063713416102e-03, +-1.304189619795214803e-03, +-1.309884787955313502e-03, +-1.315577559056376345e-03, +-1.321267923965392145e-03, +-1.326955873553499823e-03, +-1.332641398696391734e-03, +-1.338324490274118072e-03, +-1.344005139170929234e-03, +-1.349683336275603893e-03, +-1.355359072481580841e-03, +-1.361032338686099866e-03, +-1.366703125791602757e-03, +-1.372371424704223446e-03, +-1.378037226335207229e-03, +-1.383700521600027570e-03, +-1.389361301418542017e-03, +-1.395019556715297506e-03, +-1.400675278419385734e-03, +-1.406328457464244095e-03, +-1.411979084788070283e-03, +-1.417627151333618460e-03, +-1.423272648048054187e-03, +-1.428915565883392231e-03, +-1.434555895796020813e-03, +-1.440193628747069585e-03, +-1.445828755702585058e-03, +-1.451461267632634614e-03, +-1.457091155512584132e-03, +-1.462718410322250790e-03, +-1.468343023046016259e-03, +-1.473964984673308085e-03, +-1.479584286197774181e-03, +-1.485200918618375049e-03, +-1.490814872938593834e-03, +-1.496426140166539753e-03, +-1.502034711315323881e-03, +-1.507640577402853373e-03, +-1.513243729451662321e-03, +-1.518844158489313350e-03, +-1.524441855548207226e-03, +-1.530036811665432157e-03, +-1.535629017883189014e-03, +-1.541218465248327075e-03, +-1.546805144812727403e-03, +-1.552389047633430776e-03, +-1.557970164771795918e-03, +-1.563548487294752183e-03, +-1.569124006273938483e-03, +-1.574696712785845533e-03, +-1.580266597912209636e-03, +-1.585833652739510697e-03, +-1.591397868359447753e-03, +-1.596959235868749888e-03, +-1.602517746369000592e-03, +-1.608073390967037618e-03, +-1.613626160774774519e-03, +-1.619176046909021104e-03, +-1.624723040491831251e-03, +-1.630267132650605692e-03, +-1.635808314517277120e-03, +-1.641346577229655691e-03, +-1.646881911929979443e-03, +-1.652414309766267377e-03, +-1.657943761891547728e-03, +-1.663470259463692077e-03, +-1.668993793646330638e-03, +-1.674514355608086157e-03, +-1.680031936522704454e-03, +-1.685546527569430205e-03, +-1.691058119932546807e-03, +-1.696566704801800952e-03, +-1.702072273372240430e-03, +-1.707574816844058870e-03, +-1.713074326422945942e-03, +-1.718570793319945320e-03, +-1.724064208751279696e-03, +-1.729554563938653271e-03, +-1.735041850109412653e-03, +-1.740526058495688814e-03, +-1.746007180335758203e-03, +-1.751485206872596852e-03, +-1.756960129355232591e-03, +-1.762431939037899372e-03, +-1.767900627180191662e-03, +-1.773366185047356739e-03, +-1.778828603910147027e-03, +-1.784287875044642717e-03, +-1.789743989732699115e-03, +-1.795196939261458529e-03, +-1.800646714923798261e-03, +-1.806093308018179473e-03, +-1.811536709848446391e-03, +-1.816976911724157420e-03, +-1.822413904960739532e-03, +-1.827847680878619393e-03, +-1.833278230804474742e-03, +-1.838705546070457456e-03, +-1.844129618014006631e-03, +-1.849550437978913922e-03, +-1.854967997313932077e-03, +-1.860382287374135824e-03, +-1.865793299520062754e-03, +-1.871201025117875082e-03, +-1.876605455539649995e-03, +-1.882006582163236975e-03, +-1.887404396372081286e-03, +-1.892798889555637708e-03, +-1.898190053108944446e-03, +-1.903577878433022983e-03, +-1.908962356934738869e-03, +-1.914343480026596588e-03, +-1.919721239127093878e-03, +-1.925095625660839475e-03, +-1.930466631057716972e-03, +-1.935834246754119950e-03, +-1.941198464192095017e-03, +-1.946559274819515068e-03, +-1.951916670090413867e-03, +-1.957270641464549550e-03, +-1.962621180407814886e-03, +-1.967968278392092426e-03, +-1.973311926895074744e-03, +-1.978652117400632200e-03, +-1.983988841398665916e-03, +-1.989322090384927372e-03, +-1.994651855861454687e-03, +-1.999978129336099034e-03, +-2.005300902322922768e-03, +-2.010620166342293094e-03, +-2.015935912920102744e-03, +-2.021248133588941353e-03, +-2.026556819887353859e-03, +-2.031861963359663566e-03, +-2.037163555556889376e-03, +-2.042461588035975571e-03, +-2.047756052359939703e-03, +-2.053046940098220835e-03, +-2.058334242826229815e-03, +-2.063617952125785995e-03, +-2.068898059584942887e-03, +-2.074174556797811660e-03, +-2.079447435364955351e-03, +-2.084716686893211927e-03, +-2.089982302995525149e-03, +-2.095244275291258985e-03, +-2.100502595406341603e-03, +-2.105757254972423151e-03, +-2.111008245628212803e-03, +-2.116255559018063656e-03, +-2.121499186793290685e-03, +-2.126739120611346751e-03, +-2.131975352135976123e-03, +-2.137207873037490734e-03, +-2.142436674992630533e-03, +-2.147661749684413000e-03, +-2.152883088802501777e-03, +-2.158100684042817217e-03, +-2.163314527107916291e-03, +-2.168524609706842538e-03, +-2.173730923554970801e-03, +-2.178933460374314277e-03, +-2.184132211893619925e-03, +-2.189327169847614298e-03, +-2.194518325978157131e-03, +-2.199705672033488470e-03, +-2.204889199768094669e-03, +-2.210068900943680265e-03, +-2.215244767327857398e-03, +-2.220416790695455521e-03, +-2.225584962827684837e-03, +-2.230749275512289818e-03, +-2.235909720543850180e-03, +-2.241066289723610012e-03, +-2.246218974859335964e-03, +-2.251367767765700186e-03, +-2.256512660263871369e-03, +-2.261653644181917631e-03, +-2.266790711354623074e-03, +-2.271923853623361578e-03, +-2.277053062836384770e-03, +-2.282178330848945186e-03, +-2.287299649522504807e-03, +-2.292417010725898187e-03, +-2.297530406334558767e-03, +-2.302639828230613854e-03, +-2.307745268303260620e-03, +-2.312846718448332423e-03, +-2.317944170568690416e-03, +-2.323037616574059622e-03, +-2.328127048380911404e-03, +-2.333212457912768340e-03, +-2.338293837100083664e-03, +-2.343371177880053478e-03, +-2.348444472197053906e-03, +-2.353513712002189631e-03, +-2.358578889253637369e-03, +-2.363639995916781613e-03, +-2.368697023963492552e-03, +-2.373749965372985195e-03, +-2.378798812131663245e-03, +-2.383843556232382276e-03, +-2.388884189675627174e-03, +-2.393920704468695086e-03, +-2.398953092625845038e-03, +-2.403981346168648347e-03, +-2.409005457125532827e-03, +-2.414025417532211261e-03, +-2.419041219431509668e-03, +-2.424052854873216811e-03, +-2.429060315914432881e-03, +-2.434063594619426379e-03, +-2.439062683059456307e-03, +-2.444057573313185468e-03, +-2.449048257466241146e-03, +-2.454034727611593709e-03, +-2.459016975849630769e-03, +-2.463994994287427298e-03, +-2.468968775039852379e-03, +-2.473938310228821543e-03, +-2.478903591983389141e-03, +-2.483864612440068835e-03, +-2.488821363742667499e-03, +-2.493773838042138632e-03, +-2.498722027496957498e-03, +-2.503665924272725166e-03, +-2.508605520542552762e-03, +-2.513540808486893624e-03, +-2.518471780293417978e-03, +-2.523398428157277475e-03, +-2.528320744281240505e-03, +-2.533238720874982260e-03, +-2.538152350156050105e-03, +-2.543061624349128060e-03, +-2.547966535686451393e-03, +-2.552867076407950610e-03, +-2.557763238760450003e-03, +-2.562655014998809540e-03, +-2.567542397385175462e-03, +-2.572425378189064846e-03, +-2.577303949687683067e-03, +-2.582178104165775041e-03, +-2.587047833915446116e-03, +-2.591913131236570599e-03, +-2.596773988436385395e-03, +-2.601630397829854738e-03, +-2.606482351739536612e-03, +-2.611329842495416220e-03, +-2.616172862435212163e-03, +-2.621011403904475751e-03, +-2.625845459255865891e-03, +-2.630675020850329129e-03, +-2.635500081055818129e-03, +-2.640320632248522020e-03, +-2.645136666812074062e-03, +-2.649948177137701269e-03, +-2.654755155624521478e-03, +-2.659557594679347325e-03, +-2.664355486716579562e-03, +-2.669148824158521470e-03, +-2.673937599435230548e-03, +-2.678721804984363682e-03, +-2.683501433251590882e-03, +-2.688276476690157693e-03, +-2.693046927761201786e-03, +-2.697812778933919055e-03, +-2.702574022684818555e-03, +-2.707330651498611549e-03, +-2.712082657867987724e-03, +-2.716830034292979420e-03, +-2.721572773282022843e-03, +-2.726310867351247266e-03, +-2.731044309024534007e-03, +-2.735773090833942735e-03, +-2.740497205319195398e-03, +-2.745216645028132011e-03, +-2.749931402516534156e-03, +-2.754641470347969287e-03, +-2.759346841094164129e-03, +-2.764047507334794779e-03, +-2.768743461657390860e-03, +-2.773434696657685501e-03, +-2.778121204939230666e-03, +-2.782802979113694220e-03, +-2.787480011801010855e-03, +-2.792152295628622279e-03, +-2.796819823232580930e-03, +-2.801482587256788007e-03, +-2.806140580353125302e-03, +-2.810793795181737529e-03, +-2.815442224410882269e-03, +-2.820085860716749562e-03, +-2.824724696783912931e-03, +-2.829358725304853203e-03, +-2.833987938980370071e-03, +-2.838612330519426404e-03, +-2.843231892639014238e-03, +-2.847846618064419320e-03, +-2.852456499529322596e-03, +-2.857061529775157920e-03, +-2.861661701552007612e-03, +-2.866257007617908567e-03, +-2.870847440739273792e-03, +-2.875432993690954422e-03, +-2.880013659255568816e-03, +-2.884589430224526914e-03, +-2.889160299397328102e-03, +-2.893726259581673975e-03, +-2.898287303593727240e-03, +-2.902843424257973808e-03, +-2.907394614407098326e-03, +-2.911940866882318981e-03, +-2.916482174533018869e-03, +-2.921018530217111588e-03, +-2.925549926800873838e-03, +-2.930076357158839170e-03, +-2.934597814174034775e-03, +-2.939114290738121995e-03, +-2.943625779750662537e-03, +-2.948132274120277268e-03, +-2.952633766763421933e-03, +-2.957130250605519064e-03, +-2.961621718580256281e-03, +-2.966108163629712063e-03, +-2.970589578704605545e-03, +-2.975065956764145168e-03, +-2.979537290775925891e-03, +-2.984003573716208484e-03, +-2.988464798569796365e-03, +-2.992920958329870797e-03, +-2.997372045998398984e-03, +-3.001818054585699089e-03, +-3.006258977110828814e-03, +-3.010694806601443580e-03, +-3.015125536093649517e-03, +-3.019551158632241116e-03, +-3.023971667270873836e-03, +-3.028387055071317738e-03, +-3.032797315104598067e-03, +-3.037202440449775741e-03, +-3.041602424195129131e-03, +-3.045997259437356955e-03, +-3.050386939281787314e-03, +-3.054771456842575884e-03, +-3.059150805242609201e-03, +-3.063524977613329460e-03, +-3.067893967095066711e-03, +-3.072257766836904852e-03, +-3.076616369996508591e-03, +-3.080969769740532407e-03, +-3.085317959244190337e-03, +-3.089660931691596418e-03, +-3.093998680275839280e-03, +-3.098331198198335957e-03, +-3.102658478669819385e-03, +-3.106980514909641472e-03, +-3.111297300145894531e-03, +-3.115608827615769932e-03, +-3.119915090564936641e-03, +-3.124216082248374750e-03, +-3.128511795929723224e-03, +-3.132802224881446433e-03, +-3.137087362385049694e-03, +-3.141367201730941791e-03, +-3.145641736218316147e-03, +-3.149910959155410167e-03, +-3.154174863859563784e-03, +-3.158433443656673886e-03, +-3.162686691881972777e-03, +-3.166934601879432733e-03, +-3.171177167002087790e-03, +-3.175414380612187268e-03, +-3.179646236080507088e-03, +-3.183872726787298230e-03, +-3.188093846121663969e-03, +-3.192309587481641838e-03, +-3.196519944274514146e-03, +-3.200724909916425904e-03, +-3.204924477832742612e-03, +-3.209118641457899337e-03, +-3.213307394235281455e-03, +-3.217490729617513909e-03, +-3.221668641066331110e-03, +-3.225841122052450737e-03, +-3.230008166055813989e-03, +-3.234169766565682738e-03, +-3.238325917079998111e-03, +-3.242476611106447342e-03, +-3.246621842161297612e-03, +-3.250761603770470267e-03, +-3.254895889468911556e-03, +-3.259024692800650738e-03, +-3.263148007319071568e-03, +-3.267265826586796939e-03, +-3.271378144175520180e-03, +-3.275484953666370214e-03, +-3.279586248649541628e-03, +-3.283682022724619936e-03, +-3.287772269500482264e-03, +-3.291856982595123444e-03, +-3.295936155635979976e-03, +-3.300009782259787344e-03, +-3.304077856112454682e-03, +-3.308140370849302000e-03, +-3.312197320135162534e-03, +-3.316248697643750867e-03, +-3.320294497058676880e-03, +-3.324334712072372824e-03, +-3.328369336387090784e-03, +-3.332398363714271679e-03, +-3.336421787774677527e-03, +-3.340439602298572730e-03, +-3.344451801025658151e-03, +-3.348458377704899812e-03, +-3.352459326094836805e-03, +-3.356454639963443384e-03, +-3.360444313088001463e-03, +-3.364428339255442785e-03, +-3.368406712261975099e-03, +-3.372379425913370112e-03, +-3.376346474025066283e-03, +-3.380307850421555155e-03, +-3.384263548937283417e-03, +-3.388213563416023633e-03, +-3.392157887710989597e-03, +-3.396096515685142949e-03, +-3.400029441210651506e-03, +-3.403956658169613077e-03, +-3.407878160453527670e-03, +-3.411793941963375994e-03, +-3.415703996609835858e-03, +-3.419608318313196744e-03, +-3.423506901003195435e-03, +-3.427399738619340414e-03, +-3.431286825110725375e-03, +-3.435168154435966348e-03, +-3.439043720563475775e-03, +-3.442913517471135956e-03, +-3.446777539146593083e-03, +-3.450635779587317518e-03, +-3.454488232800020930e-03, +-3.458334892801537535e-03, +-3.462175753618214769e-03, +-3.466010809286024317e-03, +-3.469840053850804969e-03, +-3.473663481367978995e-03, +-3.477481085902791539e-03, +-3.481292861530244694e-03, +-3.485098802334964802e-03, +-3.488898902411437068e-03, +-3.492693155863964369e-03, +-3.496481556806435229e-03, +-3.500264099362670328e-03, +-3.504040777666402560e-03, +-3.507811585860770055e-03, +-3.511576518099234281e-03, +-3.515335568544556127e-03, +-3.519088731369761271e-03, +-3.522836000757579439e-03, +-3.526577370900332506e-03, +-3.530312836000593698e-03, +-3.534042390270630742e-03, +-3.537766027932486533e-03, +-3.541483743218278371e-03, +-3.545195530369831937e-03, +-3.548901383638997445e-03, +-3.552601297287551196e-03, +-3.556295265587072416e-03, +-3.559983282819154018e-03, +-3.563665343275357941e-03, +-3.567341441257063789e-03, +-3.571011571075678737e-03, +-3.574675727052760692e-03, +-3.578333903519384691e-03, +-3.581986094817161612e-03, +-3.585632295297132288e-03, +-3.589272499320805311e-03, +-3.592906701259489157e-03, +-3.596534895494462626e-03, +-3.600157076417111017e-03, +-3.603773238428885795e-03, +-3.607383375941158443e-03, +-3.610987483375471992e-03, +-3.614585555163318982e-03, +-3.618177585746353529e-03, +-3.621763569576308493e-03, +-3.625343501114881850e-03, +-3.628917374833948769e-03, +-3.632485185215635765e-03, +-3.636046926751789442e-03, +-3.639602593944770564e-03, +-3.643152181306914556e-03, +-3.646695683360608262e-03, +-3.650233094638567939e-03, +-3.653764409683357001e-03, +-3.657289623048060826e-03, +-3.660808729295775017e-03, +-3.664321722999670013e-03, +-3.667828598743258246e-03, +-3.671329351120222392e-03, +-3.674823974734326912e-03, +-3.678312464199712511e-03, +-3.681794814140582593e-03, +-3.685271019191477780e-03, +-3.688741073997190908e-03, +-3.692204973212618278e-03, +-3.695662711502995142e-03, +-3.699114283543987643e-03, +-3.702559684021117757e-03, +-3.705998907630584250e-03, +-3.709431949078703227e-03, +-3.712858803082038674e-03, +-3.716279464367558145e-03, +-3.719693927672446283e-03, +-3.723102187744249669e-03, +-3.726504239340906310e-03, +-3.729900077230518390e-03, +-3.733289696191677536e-03, +-3.736673091013319094e-03, +-3.740050256494608944e-03, +-3.743421187445231026e-03, +-3.746785878685100248e-03, +-3.750144325044587126e-03, +-3.753496521364591085e-03, +-3.756842462496040851e-03, +-3.760182143300639518e-03, +-3.763515558650394003e-03, +-3.766842703427497954e-03, +-3.770163572524930663e-03, +-3.773478160845940548e-03, +-3.776786463304131463e-03, +-3.780088474823732007e-03, +-3.783384190339288047e-03, +-3.786673604795880426e-03, +-3.789956713149112821e-03, +-3.793233510364921787e-03, +-3.796503991419881638e-03, +-3.799768151301020566e-03, +-3.803025985005802426e-03, +-3.806277487542256404e-03, +-3.809522653929067661e-03, +-3.812761479195115027e-03, +-3.815993958380216496e-03, +-3.819220086534326920e-03, +-3.822439858718287842e-03, +-3.825653270003379937e-03, +-3.828860315471356839e-03, +-3.832060990214655911e-03, +-3.835255289336305870e-03, +-3.838443207949801018e-03, +-3.841624741179402221e-03, +-3.844799884159778684e-03, +-3.847968632036384822e-03, +-3.851130979965226939e-03, +-3.854286923112874505e-03, +-3.857436456656585921e-03, +-3.860579575784392221e-03, +-3.863716275694631733e-03, +-3.866846551596635293e-03, +-3.869970398710318588e-03, +-3.873087812266009112e-03, +-3.876198787505134424e-03, +-3.879303319679378199e-03, +-3.882401404051453921e-03, +-3.885493035894631731e-03, +-3.888578210492834274e-03, +-3.891656923140784149e-03, +-3.894729169143922812e-03, +-3.897794943818323841e-03, +-3.900854242490932322e-03, +-3.903907060499295974e-03, +-3.906953393191796298e-03, +-3.909993235927585256e-03, +-3.913026584076469486e-03, +-3.916053433019107619e-03, +-3.919073778147038473e-03, +-3.922087614862270789e-03, +-3.925094938577928551e-03, +-3.928095744717797350e-03, +-3.931090028716411992e-03, +-3.934077786019221298e-03, +-3.937059012082401617e-03, +-3.940033702373019024e-03, +-3.943001852368983352e-03, +-3.945963457558944107e-03, +-3.948918513442475214e-03, +-3.951867015530029920e-03, +-3.954808959342817620e-03, +-3.957744340413013769e-03, +-3.960673154283569919e-03, +-3.963595396508363781e-03, +-3.966511062652292897e-03, +-3.969420148290817539e-03, +-3.972322649010624242e-03, +-3.975218560409190388e-03, +-3.978107878094763392e-03, +-3.980990597686732795e-03, +-3.983866714815327559e-03, +-3.986736225121636883e-03, +-3.989599124257789745e-03, +-3.992455407886771022e-03, +-3.995305071682584558e-03, +-3.998148111330208053e-03, +-4.000984522525472507e-03, +-4.003814300975291202e-03, +-4.006637442397540869e-03, +-4.009453942520996642e-03, +-4.012263797085548027e-03, +-4.015067001841935226e-03, +-4.017863552551997203e-03, +-4.020653444988700302e-03, +-4.023436674935692431e-03, +-4.026213238187958780e-03, +-4.028983130551416769e-03, +-4.031746347842916044e-03, +-4.034502885890467461e-03, +-4.037252740533126862e-03, +-4.039995907620901397e-03, +-4.042732383014979378e-03, +-4.045462162587512567e-03, +-4.048185242221776642e-03, +-4.050901617812160786e-03, +-4.053611285264034116e-03, +-4.056314240493920018e-03, +-4.059010479429556000e-03, +-4.061699998009466080e-03, +-4.064382792183674625e-03, +-4.067058857912977769e-03, +-4.069728191169445612e-03, +-4.072390787936403141e-03, +-4.075046644207991342e-03, +-4.077695755989789103e-03, +-4.080338119298404682e-03, +-4.082973730161517344e-03, +-4.085602584618075982e-03, +-4.088224678718195039e-03, +-4.090840008523040881e-03, +-4.093448570105097210e-03, +-4.096050359547896182e-03, +-4.098645372946248255e-03, +-4.101233606406158062e-03, +-4.103815056044722055e-03, +-4.106389717990343614e-03, +-4.108957588382694016e-03, +-4.111518663372394980e-03, +-4.114072939121646635e-03, +-4.116620411803517156e-03, +-4.119161077602595013e-03, +-4.121694932714583919e-03, +-4.124221973346384358e-03, +-4.126742195716228898e-03, +-4.129255596053608458e-03, +-4.131762170599175173e-03, +-4.134261915604943612e-03, +-4.136754827334173691e-03, +-4.139240902061377611e-03, +-4.141720136072387509e-03, +-4.144192525664262654e-03, +-4.146658067145395261e-03, +-4.149116756835576417e-03, +-4.151568591065675148e-03, +-4.154013566178011395e-03, +-4.156451678526310901e-03, +-4.158882924475355673e-03, +-4.161307300401519138e-03, +-4.163724802692389711e-03, +-4.166135427746840182e-03, +-4.168539171975205529e-03, +-4.170936031799038317e-03, +-4.173326003651352430e-03, +-4.175709083976480822e-03, +-4.178085269230081590e-03, +-4.180454555879223842e-03, +-4.182816940402369482e-03, +-4.185172419289282138e-03, +-4.187520989041191091e-03, +-4.189862646170633420e-03, +-4.192197387201582366e-03, +-4.194525208669528001e-03, +-4.196846107121064359e-03, +-4.199160079114494862e-03, +-4.201467121219413375e-03, +-4.203767230016790084e-03, +-4.206060402099106796e-03, +-4.208346634070228576e-03, +-4.210625922545434101e-03, +-4.212898264151510204e-03, +-4.215163655526596616e-03, +-4.217422093320336018e-03, +-4.219673574193861902e-03, +-4.221918094819675400e-03, +-4.224155651881762383e-03, +-4.226386242075735704e-03, +-4.228609862108397184e-03, +-4.230826508698251956e-03, +-4.233036178575184071e-03, +-4.235238868480567520e-03, +-4.237434575167419760e-03, +-4.239623295399959357e-03, +-4.241805025954190587e-03, +-4.243979763617504453e-03, +-4.246147505188751538e-03, +-4.248308247478382524e-03, +-4.250461987308375329e-03, +-4.252608721512144904e-03, +-4.254748446934727112e-03, +-4.256881160432624336e-03, +-4.259006858873913039e-03, +-4.261125539138241151e-03, +-4.263237198116710119e-03, +-4.265341832712050106e-03, +-4.267439439838608718e-03, +-4.269530016422081256e-03, +-4.271613559400012049e-03, +-4.273690065721215924e-03, +-4.275759532346326379e-03, +-4.277821956247470324e-03, +-4.279877334408300170e-03, +-4.281925663824128273e-03, +-4.283966941501853205e-03, +-4.286001164459922463e-03, +-4.288028329728421802e-03, +-4.290048434349055285e-03, +-4.292061475375081106e-03, +-4.294067449871448623e-03, +-4.296066354914633567e-03, +-4.298058187592762071e-03, +-4.300042945005705212e-03, +-4.302020624264768500e-03, +-4.303991222492982438e-03, +-4.305954736825119006e-03, +-4.307911164407350786e-03, +-4.309860502397784392e-03, +-4.311802747965877598e-03, +-4.313737898292998793e-03, +-4.315665950572076560e-03, +-4.317586902007650856e-03, +-4.319500749815977959e-03, +-4.321407491225013123e-03, +-4.323307123474330778e-03, +-4.325199643815203464e-03, +-4.327085049510608766e-03, +-4.328963337835169470e-03, +-4.330834506075242896e-03, +-4.332698551528825492e-03, +-4.334555471505648246e-03, +-4.336405263327200096e-03, +-4.338247924326518040e-03, +-4.340083451848506316e-03, +-4.341911843249726503e-03, +-4.343733095898411403e-03, +-4.345547207174591670e-03, +-4.347354174469944890e-03, +-4.349153995187920486e-03, +-4.350946666743731039e-03, +-4.352732186564250809e-03, +-4.354510552088124153e-03, +-4.356281760765784612e-03, +-4.358045810059313525e-03, +-4.359802697442599628e-03, +-4.361552420401373746e-03, +-4.363294976432930371e-03, +-4.365030363046462462e-03, +-4.366758577762880171e-03, +-4.368479618114850735e-03, +-4.370193481646912105e-03, +-4.371900165915171103e-03, +-4.373599668487719756e-03, +-4.375291986944353402e-03, +-4.376977118876594977e-03, +-4.378655061887848539e-03, +-4.380325813593216253e-03, +-4.381989371619669262e-03, +-4.383645733605976563e-03, +-4.385294897202617406e-03, +-4.386936860071984252e-03, +-4.388571619888230121e-03, +-4.390199174337290275e-03, +-4.391819521116933391e-03, +-4.393432657936835288e-03, +-4.395038582518286628e-03, +-4.396637292594652614e-03, +-4.398228785910869923e-03, +-4.399813060223898599e-03, +-4.401390113302481796e-03, +-4.402959942927136237e-03, +-4.404522546890260633e-03, +-4.406077922996134814e-03, +-4.407626069060795702e-03, +-4.409166982912212512e-03, +-4.410700662390117620e-03, +-4.412227105346180900e-03, +-4.413746309643910848e-03, +-4.415258273158612946e-03, +-4.416762993777512830e-03, +-4.418260469399714653e-03, +-4.419750697936137770e-03, +-4.421233677309566179e-03, +-4.422709405454787294e-03, +-4.424177880318250211e-03, +-4.425639099858499383e-03, +-4.427093062045758289e-03, +-4.428539764862316278e-03, +-4.429979206302267492e-03, +-4.431411384371556836e-03, +-4.432836297088088399e-03, +-4.434253942481641321e-03, +-4.435664318593868054e-03, +-4.437067423478360285e-03, +-4.438463255200602968e-03, +-4.439851811837941357e-03, +-4.441233091479707649e-03, +-4.442607092227081333e-03, +-4.443973812193151643e-03, +-4.445333249503021639e-03, +-4.446685402293556674e-03, +-4.448030268713668023e-03, +-4.449367846924161089e-03, +-4.450698135097724134e-03, +-4.452021131419032357e-03, +-4.453336834084617793e-03, +-4.454645241303018498e-03, +-4.455946351294687476e-03, +-4.457240162291986607e-03, +-4.458526672539233487e-03, +-4.459805880292723977e-03, +-4.461077783820633323e-03, +-4.462342381403093354e-03, +-4.463599671332300033e-03, +-4.464849651912199471e-03, +-4.466092321458872173e-03, +-4.467327678300223384e-03, +-4.468555720776190392e-03, +-4.469776447238713035e-03, +-4.470989856051525539e-03, +-4.472195945590508662e-03, +-4.473394714243414741e-03, +-4.474586160409974381e-03, +-4.475770282501914665e-03, +-4.476947078942876759e-03, +-4.478116548168552952e-03, +-4.479278688626555684e-03, +-4.480433498776493877e-03, +-4.481580977089951248e-03, +-4.482721122050521874e-03, +-4.483853932153718247e-03, +-4.484979405907088372e-03, +-4.486097541830212296e-03, +-4.487208338454517359e-03, +-4.488311794323594783e-03, +-4.489407907992864002e-03, +-4.490496678029871902e-03, +-4.491578103014102000e-03, +-4.492652181537028222e-03, +-4.493718912202132251e-03, +-4.494778293624939088e-03, +-4.495830324432899955e-03, +-4.496875003265536283e-03, +-4.497912328774328686e-03, +-4.498942299622806298e-03, +-4.499964914486503410e-03, +-4.500980172052919566e-03, +-4.501988071021623648e-03, +-4.502988610104174949e-03, +-4.503981788024133577e-03, +-4.504967603517096020e-03, +-4.505946055330714226e-03, +-4.506917142224542948e-03, +-4.507880862970328577e-03, +-4.508837216351667398e-03, +-4.509786201164299631e-03, +-4.510727816215974982e-03, +-4.511662060326405814e-03, +-4.512588932327390306e-03, +-4.513508431062761284e-03, +-4.514420555388340243e-03, +-4.515325304172034503e-03, +-4.516222676293722704e-03, +-4.517112670645362371e-03, +-4.517995286130969956e-03, +-4.518870521666522831e-03, +-4.519738376180089390e-03, +-4.520598848611815171e-03, +-4.521451937913782346e-03, +-4.522297643050202272e-03, +-4.523135962997303604e-03, +-4.523966896743361783e-03, +-4.524790443288697304e-03, +-4.525606601645650560e-03, +-4.526415370838655569e-03, +-4.527216749904170584e-03, +-4.528010737890685901e-03, +-4.528797333858782838e-03, +-4.529576536881073888e-03, +-4.530348346042217464e-03, +-4.531112760438928307e-03, +-4.531869779179987894e-03, +-4.532619401386214948e-03, +-4.533361626190500135e-03, +-4.534096452737782640e-03, +-4.534823880185047569e-03, +-4.535543907701397072e-03, +-4.536256534467888145e-03, +-4.536961759677733859e-03, +-4.537659582536164582e-03, +-4.538350002260473082e-03, +-4.539033018080022332e-03, +-4.539708629236248114e-03, +-4.540376834982610445e-03, +-4.541037634584708070e-03, +-4.541691027320099786e-03, +-4.542337012478504799e-03, +-4.542975589361659614e-03, +-4.543606757283386553e-03, +-4.544230515569566003e-03, +-4.544846863558130341e-03, +-4.545455800599102966e-03, +-4.546057326054601770e-03, +-4.546651439298741125e-03, +-4.547238139717753314e-03, +-4.547817426709962509e-03, +-4.548389299685685026e-03, +-4.548953758067394992e-03, +-4.549510801289596840e-03, +-4.550060428798849595e-03, +-4.550602640053824990e-03, +-4.551137434525216394e-03, +-4.551664811695844623e-03, +-4.552184771060574682e-03, +-4.552697312126328770e-03, +-4.553202434412132252e-03, +-4.553700137449072025e-03, +-4.554190420780310396e-03, +-4.554673283961059062e-03, +-4.555148726558674518e-03, +-4.555616748152481986e-03, +-4.556077348333990515e-03, +-4.556530526706685687e-03, +-4.556976282886177065e-03, +-4.557414616500178248e-03, +-4.557845527188408852e-03, +-4.558269014602705539e-03, +-4.558685078406974310e-03, +-4.559093718277182697e-03, +-4.559494933901393592e-03, +-4.559888724979714071e-03, +-4.560275091224353511e-03, +-4.560654032359592359e-03, +-4.561025548121758720e-03, +-4.561389638259270851e-03, +-4.561746302532657116e-03, +-4.562095540714444092e-03, +-4.562437352589304024e-03, +-4.562771737953918647e-03, +-4.563098696617108423e-03, +-4.563418228399705040e-03, +-4.563730333134644220e-03, +-4.564035010666933623e-03, +-4.564332260853661526e-03, +-4.564622083563946511e-03, +-4.564904478679018135e-03, +-4.565179446092175290e-03, +-4.565446985708754984e-03, +-4.565707097446193054e-03, +-4.565959781233972122e-03, +-4.566205037013676242e-03, +-4.566442864738938859e-03, +-4.566673264375445407e-03, +-4.566896235900971476e-03, +-4.567111779305371537e-03, +-4.567319894590502610e-03, +-4.567520581770369119e-03, +-4.567713840870992782e-03, +-4.567899671930462056e-03, +-4.568078074998950348e-03, +-4.568249050138671781e-03, +-4.568412597423911550e-03, +-4.568568716941022456e-03, +-4.568717408788397147e-03, +-4.568858673076530569e-03, +-4.568992509927941904e-03, +-4.569118919477204929e-03, +-4.569237901870985309e-03, +-4.569349457267972078e-03, +-4.569453585838921875e-03, +-4.569550287766660675e-03, +-4.569639563246041293e-03, +-4.569721412484011036e-03, +-4.569795835699528436e-03, +-4.569862833123622230e-03, +-4.569922404999374882e-03, +-4.569974551581911307e-03, +-4.570019273138417951e-03, +-4.570056569948108965e-03, +-4.570086442302270444e-03, +-4.570108890504208377e-03, +-4.570123914869299829e-03, +-4.570131515724937428e-03, +-4.570131693410577067e-03, +-4.570124448277720561e-03, +-4.570109780689900897e-03, +-4.570087691022660555e-03, +-4.570058179663647781e-03, +-4.570021247012478680e-03, +-4.569976893480853439e-03, +-4.569925119492495615e-03, +-4.569865925483139989e-03, +-4.569799311900573334e-03, +-4.569725279204613598e-03, +-4.569643827867090821e-03, +-4.569554958371884433e-03, +-4.569458671214887691e-03, +-4.569354966904025893e-03, +-4.569243845959239034e-03, +-4.569125308912506088e-03, +-4.568999356307809449e-03, +-4.568865988701150543e-03, +-4.568725206660574113e-03, +-4.568577010766104035e-03, +-4.568421401609813574e-03, +-4.568258379795763803e-03, +-4.568087945940058243e-03, +-4.567910100670766541e-03, +-4.567724844628011198e-03, +-4.567532178463889515e-03, +-4.567332102842523028e-03, +-4.567124618440039294e-03, +-4.566909725944538062e-03, +-4.566687426056177147e-03, +-4.566457719487045791e-03, +-4.566220606961277420e-03, +-4.565976089214986329e-03, +-4.565724166996290231e-03, +-4.565464841065278168e-03, +-4.565198112194025250e-03, +-4.564923981166637765e-03, +-4.564642448779172509e-03, +-4.564353515839662812e-03, +-4.564057183168168837e-03, +-4.563753451596665699e-03, +-4.563442321969187442e-03, +-4.563123795141681323e-03, +-4.562797871982075468e-03, +-4.562464553370312696e-03, +-4.562123840198269858e-03, +-4.561775733369811611e-03, +-4.561420233800744448e-03, +-4.561057342418860933e-03, +-4.560687060163931029e-03, +-4.560309387987639650e-03, +-4.559924326853669052e-03, +-4.559531877737657210e-03, +-4.559132041627175259e-03, +-4.558724819521746581e-03, +-4.558310212432871954e-03, +-4.557888221383966237e-03, +-4.557458847410418221e-03, +-4.557022091559543783e-03, +-4.556577954890604111e-03, +-4.556126438474794420e-03, +-4.555667543395263037e-03, +-4.555201270747058495e-03, +-4.554727621637197181e-03, +-4.554246597184613034e-03, +-4.553758198520156675e-03, +-4.553262426786607552e-03, +-4.552759283138690417e-03, +-4.552248768742990330e-03, +-4.551730884778087960e-03, +-4.551205632434426884e-03, +-4.550673012914372567e-03, +-4.550133027432215829e-03, +-4.549585677214106928e-03, +-4.549030963498190000e-03, +-4.548468887534420045e-03, +-4.547899450584687829e-03, +-4.547322653922801668e-03, +-4.546738498834444926e-03, +-4.546146986617169948e-03, +-4.545548118580450964e-03, +-4.544941896045654600e-03, +-4.544328320346000850e-03, +-4.543707392826604706e-03, +-4.543079114844449269e-03, +-4.542443487768420447e-03, +-4.541800512979257513e-03, +-4.541150191869547034e-03, +-4.540492525843784453e-03, +-4.539827516318305570e-03, +-4.539155164721329037e-03, +-4.538475472492906060e-03, +-4.537788441084921257e-03, +-4.537094071961201083e-03, +-4.536392366597306533e-03, +-4.535683326480737833e-03, +-4.534966953110789595e-03, +-4.534243247998619337e-03, +-4.533512212667199781e-03, +-4.532773848651360481e-03, +-4.532028157497747928e-03, +-4.531275140764852438e-03, +-4.530514800022975193e-03, +-4.529747136854233441e-03, +-4.528972152852596932e-03, +-4.528189849623821123e-03, +-4.527400228785450655e-03, +-4.526603291966932105e-03, +-4.525799040809383271e-03, +-4.524987476965877664e-03, +-4.524168602101150474e-03, +-4.523342417891816278e-03, +-4.522508926026264954e-03, +-4.521668128204662553e-03, +-4.520820026138961702e-03, +-4.519964621552931966e-03, +-4.519101916182081784e-03, +-4.518231911773713111e-03, +-4.517354610086913615e-03, +-4.516470012892494224e-03, +-4.515578121973123568e-03, +-4.514678939123145836e-03, +-4.513772466148659700e-03, +-4.512858704867606791e-03, +-4.511937657109627714e-03, +-4.511009324716061183e-03, +-4.510073709540111421e-03, +-4.509130813446600959e-03, +-4.508180638312193553e-03, +-4.507223186025208564e-03, +-4.506258458485738055e-03, +-4.505286457605588678e-03, +-4.504307185308304221e-03, +-4.503320643529124846e-03, +-4.502326834215035663e-03, +-4.501325759324715549e-03, +-4.500317420828540624e-03, +-4.499301820708628483e-03, +-4.498278960958747991e-03, +-4.497248843584438112e-03, +-4.496211470602872601e-03, +-4.495166844042886023e-03, +-4.494114965945115135e-03, +-4.493055838361766433e-03, +-4.491989463356764467e-03, +-4.490915843005718021e-03, +-4.489834979395897555e-03, +-4.488746874626256891e-03, +-4.487651530807371635e-03, +-4.486548950061492944e-03, +-4.485439134522570086e-03, +-4.484322086336155894e-03, +-4.483197807659424113e-03, +-4.482066300661275218e-03, +-4.480927567522196772e-03, +-4.479781610434265156e-03, +-4.478628431601286083e-03, +-4.477468033238609854e-03, +-4.476300417573279671e-03, +-4.475125586843899800e-03, +-4.473943543300669401e-03, +-4.472754289205486608e-03, +-4.471557826831781129e-03, +-4.470354158464582769e-03, +-4.469143286400562194e-03, +-4.467925212947951134e-03, +-4.466699940426588356e-03, +-4.465467471167872821e-03, +-4.464227807514787975e-03, +-4.462980951821941648e-03, +-4.461726906455427272e-03, +-4.460465673792934904e-03, +-4.459197256223785925e-03, +-4.457921656148776043e-03, +-4.456638875980248153e-03, +-4.455348918142192083e-03, +-4.454051785069992192e-03, +-4.452747479210739621e-03, +-4.451436003022940860e-03, +-4.450117358976648715e-03, +-4.448791549553487469e-03, +-4.447458577246574812e-03, +-4.446118444560533123e-03, +-4.444771154011538036e-03, +-4.443416708127229109e-03, +-4.442055109446759256e-03, +-4.440686360520801693e-03, +-4.439310463911489216e-03, +-4.437927422192489667e-03, +-4.436537237948924399e-03, +-4.435139913777341389e-03, +-4.433735452285890444e-03, +-4.432323856094098555e-03, +-4.430905127832934082e-03, +-4.429479270144946398e-03, +-4.428046285683989204e-03, +-4.426606177115512825e-03, +-4.425158947116286656e-03, +-4.423704598374584782e-03, +-4.422243133590133060e-03, +-4.420774555474040607e-03, +-4.419298866748867446e-03, +-4.417816070148604564e-03, +-4.416326168418644414e-03, +-4.414829164315764443e-03, +-4.413325060608218157e-03, +-4.411813860075597220e-03, +-4.410295565508918179e-03, +-4.408770179710592117e-03, +-4.407237705494330970e-03, +-4.405698145685417282e-03, +-4.404151503120313019e-03, +-4.402597780646922386e-03, +-4.401036981124574476e-03, +-4.399469107423855871e-03, +-4.397894162426810999e-03, +-4.396312149026734839e-03, +-4.394723070128317768e-03, +-4.393126928647615205e-03, +-4.391523727511960004e-03, +-4.389913469660036184e-03, +-4.388296158041860712e-03, +-4.386671795618789574e-03, +-4.385040385363385071e-03, +-4.383401930259690771e-03, +-4.381756433302877625e-03, +-4.380103897499542341e-03, +-4.378444325867523503e-03, +-4.376777721435862537e-03, +-4.375104087245087342e-03, +-4.373423426346776874e-03, +-4.371735741803889873e-03, +-4.370041036690682466e-03, +-4.368339314092565054e-03, +-4.366630577106312208e-03, +-4.364914828839854509e-03, +-4.363192072412393901e-03, +-4.361462310954411503e-03, +-4.359725547607559183e-03, +-4.357981785524711604e-03, +-4.356231027870027805e-03, +-4.354473277818851455e-03, +-4.352708538557624116e-03, +-4.350936813284207900e-03, +-4.349158105207424040e-03, +-4.347372417547518651e-03, +-4.345579753535709980e-03, +-4.343780116414511921e-03, +-4.341973509437604788e-03, +-4.340159935869803212e-03, +-4.338339398987084775e-03, +-4.336511902076638572e-03, +-4.334677448436713432e-03, +-4.332836041376786178e-03, +-4.330987684217419385e-03, +-4.329132380290303013e-03, +-4.327270132938307312e-03, +-4.325400945515373539e-03, +-4.323524821386552121e-03, +-4.321641763928055560e-03, +-4.319751776527162163e-03, +-4.317854862582180472e-03, +-4.315951025502681726e-03, +-4.314040268709102600e-03, +-4.312122595633180629e-03, +-4.310198009717547407e-03, +-4.308266514415965386e-03, +-4.306328113193289703e-03, +-4.304382809525387522e-03, +-4.302430606899157982e-03, +-4.300471508812609388e-03, +-4.298505518774691815e-03, +-4.296532640305480988e-03, +-4.294552876936023889e-03, +-4.292566232208349167e-03, +-4.290572709675564284e-03, +-4.288572312901767908e-03, +-4.286565045461956242e-03, +-4.284550910942304912e-03, +-4.282529912939805547e-03, +-4.280502055062462667e-03, +-4.278467340929333583e-03, +-4.276425774170334107e-03, +-4.274377358426471873e-03, +-4.272322097349564446e-03, +-4.270259994602430137e-03, +-4.268191053858863722e-03, +-4.266115278803551437e-03, +-4.264032673132093533e-03, +-4.261943240551091874e-03, +-4.259846984777938307e-03, +-4.257743909541048845e-03, +-4.255634018579676318e-03, +-4.253517315643945938e-03, +-4.251393804494956775e-03, +-4.249263488904628239e-03, +-4.247126372655664513e-03, +-4.244982459541882421e-03, +-4.242831753367718763e-03, +-4.240674257948551240e-03, +-4.238509977110652485e-03, +-4.236338914691054752e-03, +-4.234161074537699972e-03, +-4.231976460509290563e-03, +-4.229785076475362296e-03, +-4.227586926316328521e-03, +-4.225382013923330987e-03, +-4.223170343198315302e-03, +-4.220951918054092512e-03, +-4.218726742414171706e-03, +-4.216494820212909195e-03, +-4.214256155395420915e-03, +-4.212010751917474004e-03, +-4.209758613745836348e-03, +-4.207499744857792594e-03, +-4.205234149241442523e-03, +-4.202961830895707990e-03, +-4.200682793830147303e-03, +-4.198397042065053243e-03, +-4.196104579631485150e-03, +-4.193805410571150097e-03, +-4.191499538936524320e-03, +-4.189186968790712708e-03, +-4.186867704207528594e-03, +-4.184541749271508508e-03, +-4.182209108077815894e-03, +-4.179869784732269736e-03, +-4.177523783351401801e-03, +-4.175171108062395928e-03, +-4.172811763002918888e-03, +-4.170445752321591364e-03, +-4.168073080177307939e-03, +-4.165693750739920577e-03, +-4.163307768189643612e-03, +-4.160915136717368602e-03, +-4.158515860524692083e-03, +-4.156109943823679646e-03, +-4.153697390837017729e-03, +-4.151278205798024021e-03, +-4.148852392950507818e-03, +-4.146419956548931356e-03, +-4.143980900858233729e-03, +-4.141535230153910695e-03, +-4.139082948722088394e-03, +-4.136624060859368096e-03, +-4.134158570872746401e-03, +-4.131686483080058460e-03, +-4.129207801809343936e-03, +-4.126722531399253796e-03, +-4.124230676199015615e-03, +-4.121732240568195052e-03, +-4.119227228877065349e-03, +-4.116715645506110327e-03, +-4.114197494846418175e-03, +-4.111672781299569555e-03, +-4.109141509277522246e-03, +-4.106603683202687469e-03, +-4.104059307507976727e-03, +-4.101508386636612720e-03, +-4.098950925042400828e-03, +-4.096386927189412525e-03, +-4.093816397552163186e-03, +-4.091239340615652857e-03, +-4.088655760875178034e-03, +-4.086065662836340338e-03, +-4.083469051015397797e-03, +-4.080865929938663761e-03, +-4.078256304142957936e-03, +-4.075640178175467601e-03, +-4.073017556593659140e-03, +-4.070388443965390797e-03, +-4.067752844868818135e-03, +-4.065110763892382760e-03, +-4.062462205634932016e-03, +-4.059807174705526434e-03, +-4.057145675723516053e-03, +-4.054477713318650582e-03, +-4.051803292130808781e-03, +-4.049122416810301169e-03, +-4.046435092017575119e-03, +-4.043741322423296397e-03, +-4.041041112708611965e-03, +-4.038334467564640845e-03, +-4.035621391692802845e-03, +-4.032901889804938259e-03, +-4.030175966622837752e-03, +-4.027443626878580638e-03, +-4.024704875314550484e-03, +-4.021959716683172308e-03, +-4.019208155747190994e-03, +-4.016450197279413693e-03, +-4.013685846062815636e-03, +-4.010915106890647688e-03, +-4.008137984566201295e-03, +-4.005354483902886543e-03, +-4.002564609724374410e-03, +-3.999768366864322675e-03, +-3.996965760166612709e-03, +-3.994156794485194222e-03, +-3.991341474683987242e-03, +-3.988519805637298458e-03, +-3.985691792229220133e-03, +-3.982857439354041233e-03, +-3.980016751916176307e-03, +-3.977169734830003286e-03, +-3.974316393019931143e-03, +-3.971456731420547337e-03, +-3.968590754976299498e-03, +-3.965718468641804204e-03, +-3.962839877381604987e-03, +-3.959954986170227849e-03, +-3.957063799992326103e-03, +-3.954166323842439254e-03, +-3.951262562724993863e-03, +-3.948352521654673909e-03, +-3.945436205655780681e-03, +-3.942513619762921459e-03, +-3.939584769020353788e-03, +-3.936649658482333294e-03, +-3.933708293213279347e-03, +-3.930760678287215613e-03, +-3.927806818788212410e-03, +-3.924846719810319920e-03, +-3.921880386457340939e-03, +-3.918907823843021700e-03, +-3.915929037091030185e-03, +-3.912944031334810412e-03, +-3.909952811717782792e-03, +-3.906955383393110812e-03, +-3.903951751523786467e-03, +-3.900941921282785087e-03, +-3.897925897852766962e-03, +-3.894903686426141095e-03, +-3.891875292205404773e-03, +-3.888840720402470929e-03, +-3.885799976239447898e-03, +-3.882753064947876143e-03, +-3.879699991769207899e-03, +-3.876640761954705267e-03, +-3.873575380765304031e-03, +-3.870503853471678277e-03, +-3.867426185354331473e-03, +-3.864342381703373547e-03, +-3.861252447818658371e-03, +-3.858156389009841872e-03, +-3.855054210596123992e-03, +-3.851945917906538820e-03, +-3.848831516279745558e-03, +-3.845711011063900151e-03, +-3.842584407617219509e-03, +-3.839451711307162278e-03, +-3.836312927510984825e-03, +-3.833168061615745137e-03, +-3.830017119017851794e-03, +-3.826860105123434334e-03, +-3.823697025348321132e-03, +-3.820527885117781363e-03, +-3.817352689866801690e-03, +-3.814171445039889804e-03, +-3.810984156091055779e-03, +-3.807790828484028042e-03, +-3.804591467691939826e-03, +-3.801386079197497866e-03, +-3.798174668493026207e-03, +-3.794957241080233745e-03, +-3.791733802470469671e-03, +-3.788504358184553895e-03, +-3.785268913752615292e-03, +-3.782027474714642033e-03, +-3.778780046619747372e-03, +-3.775526635026631075e-03, +-3.772267245503544732e-03, +-3.769001883628055397e-03, +-3.765730554987177861e-03, +-3.762453265177474401e-03, +-3.759170019804755104e-03, +-3.755880824484405297e-03, +-3.752585684841083270e-03, +-3.749284606508848216e-03, +-3.745977595131240890e-03, +-3.742664656361099733e-03, +-3.739345795860488444e-03, +-3.736021019301156553e-03, +-3.732690332363794786e-03, +-3.729353740738804417e-03, +-3.726011250125677542e-03, +-3.722662866233143655e-03, +-3.719308594779574279e-03, +-3.715948441492266524e-03, +-3.712582412107950491e-03, +-3.709210512372714246e-03, +-3.705832748041782213e-03, +-3.702449124879637031e-03, +-3.699059648660118875e-03, +-3.695664325166160037e-03, +-3.692263160190046006e-03, +-3.688856159533181710e-03, +-3.685443329006160475e-03, +-3.682024674428903237e-03, +-3.678600201630416108e-03, +-3.675169916448756558e-03, +-3.671733824731491808e-03, +-3.668291932334905199e-03, +-3.664844245124902582e-03, +-3.661390768976098987e-03, +-3.657931509772428379e-03, +-3.654466473406983197e-03, +-3.650995665781861695e-03, +-3.647519092808263353e-03, +-3.644036760406574316e-03, +-3.640548674506137103e-03, +-3.637054841045379416e-03, +-3.633555265971872682e-03, +-3.630049955242094836e-03, +-3.626538914821722179e-03, +-3.623022150685347494e-03, +-3.619499668816447083e-03, +-3.615971475207843504e-03, +-3.612437575861116631e-03, +-3.608897976786715114e-03, +-3.605352684004457711e-03, +-3.601801703542644242e-03, +-3.598245041439007957e-03, +-3.594682703739816073e-03, +-3.591114696500462625e-03, +-3.587541025785291084e-03, +-3.583961697667485940e-03, +-3.580376718229093085e-03, +-3.576786093561203691e-03, +-3.573189829763642831e-03, +-3.569587932945128203e-03, +-3.565980409223346026e-03, +-3.562367264724673917e-03, +-3.558748505584483166e-03, +-3.555124137946895878e-03, +-3.551494167964716012e-03, +-3.547858601799915544e-03, +-3.544217445622897637e-03, +-3.540570705613000149e-03, +-3.536918387958425808e-03, +-3.533260498855960319e-03, +-3.529597044511343599e-03, +-3.525928031138895503e-03, +-3.522253464961709254e-03, +-3.518573352211703045e-03, +-3.514887699129408839e-03, +-3.511196511964023541e-03, +-3.507499796973602858e-03, +-3.503797560424780702e-03, +-3.500089808592686362e-03, +-3.496376547761549051e-03, +-3.492657784223742509e-03, +-3.488933524280720885e-03, +-3.485203774242344801e-03, +-3.481468540426942496e-03, +-3.477727829161890091e-03, +-3.473981646782732090e-03, +-3.470229999633762507e-03, +-3.466472894067946803e-03, +-3.462710336446630024e-03, +-3.458942333139897619e-03, +-3.455168890526245408e-03, +-3.451390014992699283e-03, +-3.447605712934938369e-03, +-3.443815990757029179e-03, +-3.440020854871525362e-03, +-3.436220311699603874e-03, +-3.432414367670840339e-03, +-3.428603029223116667e-03, +-3.424786302803168800e-03, +-3.420964194865698093e-03, +-3.417136711874329321e-03, +-3.413303860300701247e-03, +-3.409465646625036914e-03, +-3.405622077336025681e-03, +-3.401773158930645850e-03, +-3.397918897914248369e-03, +-3.394059300800681290e-03, +-3.390194374112010054e-03, +-3.386324124378679249e-03, +-3.382448558139567255e-03, +-3.378567681941715625e-03, +-3.374681502340667796e-03, +-3.370790025900157697e-03, +-3.366893259192073329e-03, +-3.362991208796945082e-03, +-3.359083881303315169e-03, +-3.355171283307865990e-03, +-3.351253421415975684e-03, +-3.347330302240702007e-03, +-3.343401932403885189e-03, +-3.339468318535118371e-03, +-3.335529467272392492e-03, +-3.331585385261966615e-03, +-3.327636079158153692e-03, +-3.323681555623445895e-03, +-3.319721821328601788e-03, +-3.315756882952413439e-03, +-3.311786747181826116e-03, +-3.307811420712001606e-03, +-3.303830910246069712e-03, +-3.299845222495428800e-03, +-3.295854364179474742e-03, +-3.291858342025539771e-03, +-3.287857162769409428e-03, +-3.283850833154538899e-03, +-3.279839359932569098e-03, +-3.275822749863295871e-03, +-3.271801009714333467e-03, +-3.267774146261493134e-03, +-3.263742166288467837e-03, +-3.259705076586916390e-03, +-3.255662883956640836e-03, +-3.251615595205236894e-03, +-3.247563217148291721e-03, +-3.243505756609437688e-03, +-3.239443220420181943e-03, +-3.235375615419735975e-03, +-3.231302948455664834e-03, +-3.227225226383051426e-03, +-3.223142456065070278e-03, +-3.219054644372718651e-03, +-3.214961798184656945e-03, +-3.210863924387842745e-03, +-3.206761029876635700e-03, +-3.202653121553387331e-03, +-3.198540206328378144e-03, +-3.194422291119491508e-03, +-3.190299382852604393e-03, +-3.186171488461229159e-03, +-3.182038614886647989e-03, +-3.177900769078036061e-03, +-3.173757957992193093e-03, +-3.169610188593638758e-03, +-3.165457467854759267e-03, +-3.161299802755556700e-03, +-3.157137200283558365e-03, +-3.152969667434446076e-03, +-3.148797211210995796e-03, +-3.144619838624239036e-03, +-3.140437556692377789e-03, +-3.136250372441433745e-03, +-3.132058292905175005e-03, +-3.127861325124832014e-03, +-3.123659476149238078e-03, +-3.119452753034971607e-03, +-3.115241162846007009e-03, +-3.111024712654064661e-03, +-3.106803409538299969e-03, +-3.102577260585400506e-03, +-3.098346272889733466e-03, +-3.094110453553101069e-03, +-3.089869809684626933e-03, +-3.085624348401351091e-03, +-3.081374076827533490e-03, +-3.077119002094742036e-03, +-3.072859131342507016e-03, +-3.068594471717240365e-03, +-3.064325030373344153e-03, +-3.060050814472186232e-03, +-3.055771831182742520e-03, +-3.051488087681475132e-03, +-3.047199591152114240e-03, +-3.042906348785759559e-03, +-3.038608367781013477e-03, +-3.034305655343662311e-03, +-3.029998218687009800e-03, +-3.025686065031550978e-03, +-3.021369201605109654e-03, +-3.017047635642955070e-03, +-3.012721374387559471e-03, +-3.008390425088472778e-03, +-3.004054795003016903e-03, +-2.999714491395273110e-03, +-2.995369521536780672e-03, +-2.991019892706391157e-03, +-2.986665612189995204e-03, +-2.982306687280894195e-03, +-2.977943125279425545e-03, +-2.973574933493121006e-03, +-2.969202119236840666e-03, +-2.964824689832445091e-03, +-2.960442652608961424e-03, +-2.956056014902672287e-03, +-2.951664784056827386e-03, +-2.947268967421954027e-03, +-2.942868572355535756e-03, +-2.938463606222164147e-03, +-2.934054076393638553e-03, +-2.929639990248722806e-03, +-2.925221355173047641e-03, +-2.920798178559751244e-03, +-2.916370467808529921e-03, +-2.911938230326277348e-03, +-2.907501473526989157e-03, +-2.903060204831464566e-03, +-2.898614431667653323e-03, +-2.894164161470349529e-03, +-2.889709401681280539e-03, +-2.885250159749266994e-03, +-2.880786443129899291e-03, +-2.876318259285700653e-03, +-2.871845615686236843e-03, +-2.867368519807762285e-03, +-2.862886979133610812e-03, +-2.858401001153869966e-03, +-2.853910593365306409e-03, +-2.849415763272008205e-03, +-2.844916518384376942e-03, +-2.840412866219861956e-03, +-2.835904814302798137e-03, +-2.831392370164151351e-03, +-2.826875541341681078e-03, +-2.822354335380049262e-03, +-2.817828759830479438e-03, +-2.813298822251125795e-03, +-2.808764530206731436e-03, +-2.804225891268735931e-03, +-2.799682913015453124e-03, +-2.795135603031709010e-03, +-2.790583968909032559e-03, +-2.786028018245747216e-03, +-2.781467758646743223e-03, +-2.776903197723332335e-03, +-2.772334343093966428e-03, +-2.767761202383105593e-03, +-2.763183783222407722e-03, +-2.758602093249613949e-03, +-2.754016140109262056e-03, +-2.749425931452523838e-03, +-2.744831474936992605e-03, +-2.740232778226779891e-03, +-2.735629848992690225e-03, +-2.731022694911821279e-03, +-2.726411323667981071e-03, +-2.721795742951318032e-03, +-2.717175960458428127e-03, +-2.712551983892551744e-03, +-2.707923820963249739e-03, +-2.703291479386335343e-03, +-2.698654966884522083e-03, +-2.694014291186457976e-03, +-2.689369460027366508e-03, +-2.684720481148962935e-03, +-2.680067362299083916e-03, +-2.675410111232321125e-03, +-2.670748735709157357e-03, +-2.666083243496607941e-03, +-2.661413642368120128e-03, +-2.656739940103267777e-03, +-2.652062144487951720e-03, +-2.647380263314468279e-03, +-2.642694304381213496e-03, +-2.638004275493014902e-03, +-2.633310184460795848e-03, +-2.628612039101706471e-03, +-2.623909847239269417e-03, +-2.619203616703107487e-03, +-2.614493355328818304e-03, +-2.609779070958698557e-03, +-2.605060771440681922e-03, +-2.600338464629070243e-03, +-2.595612158384396490e-03, +-2.590881860573115980e-03, +-2.586147579068001027e-03, +-2.581409321747761467e-03, +-2.576667096497194283e-03, +-2.571920911207324547e-03, +-2.567170773775074959e-03, +-2.562416692103421968e-03, +-2.557658674101522412e-03, +-2.552896727684350088e-03, +-2.548130860773083900e-03, +-2.543361081294796041e-03, +-2.538587397182330996e-03, +-2.533809816375018082e-03, +-2.529028346817624104e-03, +-2.524242996461052886e-03, +-2.519453773262250295e-03, +-2.514660685183909769e-03, +-2.509863740194638853e-03, +-2.505062946269067618e-03, +-2.500258311387513425e-03, +-2.495449843536345219e-03, +-2.490637550707632680e-03, +-2.485821440899275460e-03, +-2.481001522115155837e-03, +-2.476177802364794376e-03, +-2.471350289663514724e-03, +-2.466518992032589765e-03, +-2.461683917498824845e-03, +-2.456845074095005341e-03, +-2.452002469859559247e-03, +-2.447156112836411032e-03, +-2.442306011075736673e-03, +-2.437452172632899837e-03, +-2.432594605569130593e-03, +-2.427733317951470335e-03, +-2.422868317852449119e-03, +-2.417999613350241359e-03, +-2.413127212528815881e-03, +-2.408251123477561217e-03, +-2.403371354291667684e-03, +-2.398487913071777836e-03, +-2.393600807924092713e-03, +-2.388710046960566130e-03, +-2.383815638298582458e-03, +-2.378917590060849498e-03, +-2.374015910376141378e-03, +-2.369110607378115910e-03, +-2.364201689206551008e-03, +-2.359289164006194133e-03, +-2.354373039927405015e-03, +-2.349453325126349933e-03, +-2.344530027764135226e-03, +-2.339603156007529806e-03, +-2.334672718028819004e-03, +-2.329738722005537856e-03, +-2.324801176120609887e-03, +-2.319860088562492387e-03, +-2.314915467524806050e-03, +-2.309967321206732663e-03, +-2.305015657812627822e-03, +-2.300060485552155812e-03, +-2.295101812640473055e-03, +-2.290139647297930597e-03, +-2.285173997749918862e-03, +-2.280204872227667347e-03, +-2.275232278966987827e-03, +-2.270256226209599673e-03, +-2.265276722201897339e-03, +-2.260293775195721441e-03, +-2.255307393448213477e-03, +-2.250317585221538273e-03, +-2.245324358783029692e-03, +-2.240327722405363250e-03, +-2.235327684366177504e-03, +-2.230324252948256633e-03, +-2.225317436439664016e-03, +-2.220307243133343676e-03, +-2.215293681327561333e-03, +-2.210276759325541414e-03, +-2.205256485435355164e-03, +-2.200232867970682189e-03, +-2.195205915249681151e-03, +-2.190175635595693199e-03, +-2.185142037337409800e-03, +-2.180105128808017961e-03, +-2.175064918345906689e-03, +-2.170021414294544693e-03, +-2.164974625002126941e-03, +-2.159924558822025678e-03, +-2.154871224112351550e-03, +-2.149814629236147020e-03, +-2.144754782561509969e-03, +-2.139691692461265400e-03, +-2.134625367313092506e-03, +-2.129555815499718091e-03, +-2.124483045408466411e-03, +-2.119407065431731449e-03, +-2.114327883966601786e-03, +-2.109245509414751744e-03, +-2.104159950183199460e-03, +-2.099071214683174980e-03, +-2.093979311330892209e-03, +-2.088884248547430954e-03, +-2.083786034758434644e-03, +-2.078684678394244773e-03, +-2.073580187890111670e-03, +-2.068472571685722218e-03, +-2.063361838225679073e-03, +-2.058247995959070886e-03, +-2.053131053339641004e-03, +-2.048011018825944031e-03, +-2.042887900881024035e-03, +-2.037761707972310463e-03, +-2.032632448572412216e-03, +-2.027500131157817468e-03, +-2.022364764210204686e-03, +-2.017226356215468148e-03, +-2.012084915663869735e-03, +-2.006940451050754932e-03, +-2.001792970875417455e-03, +-1.996642483641879878e-03, +-1.991488997858737939e-03, +-1.986332522038903366e-03, +-1.981173064699733120e-03, +-1.976010634363192884e-03, +-1.970845239555452880e-03, +-1.965676888807312006e-03, +-1.960505590653800149e-03, +-1.955331353634332144e-03, +-1.950154186292859127e-03, +-1.944974097177566046e-03, +-1.939791094840760633e-03, +-1.934605187839652735e-03, +-1.929416384735059553e-03, +-1.924224694092797113e-03, +-1.919030124482391363e-03, +-1.913832684477866173e-03, +-1.908632382657608892e-03, +-1.903429227604086504e-03, +-1.898223227903987013e-03, +-1.893014392148389437e-03, +-1.887802728932392368e-03, +-1.882588246855287440e-03, +-1.877370954520705916e-03, +-1.872150860536199099e-03, +-1.866927973513699554e-03, +-1.861702302069155514e-03, +-1.856473854822387548e-03, +-1.851242640397903448e-03, +-1.846008667423709075e-03, +-1.840771944532066870e-03, +-1.835532480359633543e-03, +-1.830290283546482776e-03, +-1.825045362737398027e-03, +-1.819797726580607697e-03, +-1.814547383728570308e-03, +-1.809294342837848742e-03, +-1.804038612568797115e-03, +-1.798780201585732739e-03, +-1.793519118557088989e-03, +-1.788255372155056217e-03, +-1.782988971055735712e-03, +-1.777719923939301240e-03, +-1.772448239489587051e-03, +-1.767173926394529368e-03, +-1.761896993345808161e-03, +-1.756617449038704905e-03, +-1.751335302172923099e-03, +-1.746050561451393483e-03, +-1.740763235581078506e-03, +-1.735473333272845916e-03, +-1.730180863241101647e-03, +-1.724885834204243447e-03, +-1.719588254884231318e-03, +-1.714288134006763378e-03, +-1.708985480301423521e-03, +-1.703680302501315181e-03, +-1.698372609343230897e-03, +-1.693062409567809307e-03, +-1.687749711919236126e-03, +-1.682434525145094090e-03, +-1.677116857997188251e-03, +-1.671796719230225206e-03, +-1.666474117603169644e-03, +-1.661149061878206771e-03, +-1.655821560820919898e-03, +-1.650491623201040276e-03, +-1.645159257791248188e-03, +-1.639824473367982628e-03, +-1.634487278711318353e-03, +-1.629147682604608098e-03, +-1.623805693834887197e-03, +-1.618461321192521006e-03, +-1.613114573471312232e-03, +-1.607765459468682868e-03, +-1.602413987985300140e-03, +-1.597060167825251932e-03, +-1.591704007796196189e-03, +-1.586345516709057775e-03, +-1.580984703377888607e-03, +-1.575621576620690354e-03, +-1.570256145258090621e-03, +-1.564888418114763037e-03, +-1.559518404018078730e-03, +-1.554146111798962839e-03, +-1.548771550291724083e-03, +-1.543394728333771131e-03, +-1.538015654765760706e-03, +-1.532634338431769104e-03, +-1.527250788178914674e-03, +-1.521865012857521971e-03, +-1.516477021321290669e-03, +-1.511086822426867520e-03, +-1.505694425034291963e-03, +-1.500299838006646574e-03, +-1.494903070209902896e-03, +-1.489504130513695989e-03, +-1.484103027790409151e-03, +-1.478699770915333509e-03, +-1.473294368767441272e-03, +-1.467886830228052816e-03, +-1.462477164182248530e-03, +-1.457065379517549558e-03, +-1.451651485124733770e-03, +-1.446235489897703709e-03, +-1.440817402733178022e-03, +-1.435397232530834797e-03, +-1.429974988193518422e-03, +-1.424550678626820225e-03, +-1.419124312739268633e-03, +-1.413695899442494195e-03, +-1.408265447650785488e-03, +-1.402832966281563135e-03, +-1.397398464254998160e-03, +-1.391961950493875166e-03, +-1.386523433924439748e-03, +-1.381082923475150572e-03, +-1.375640428077526574e-03, +-1.370195956666013818e-03, +-1.364749518177593452e-03, +-1.359301121552265040e-03, +-1.353850775732604213e-03, +-1.348398489663919656e-03, +-1.342944272294442198e-03, +-1.337488132574925388e-03, +-1.332030079458815719e-03, +-1.326570121902440405e-03, +-1.321108268864655240e-03, +-1.315644529306743112e-03, +-1.310178912193220432e-03, +-1.304711426490508773e-03, +-1.299242081168300962e-03, +-1.293770885198525017e-03, +-1.288297847555504609e-03, +-1.282822977216736436e-03, +-1.277346283161662254e-03, +-1.271867774372502629e-03, +-1.266387459834117076e-03, +-1.260905348533638464e-03, +-1.255421449460924046e-03, +-1.249935771608132401e-03, +-1.244448323969883034e-03, +-1.238959115543427237e-03, +-1.233468155328262556e-03, +-1.227975452326310378e-03, +-1.222481015542075311e-03, +-1.216984853982334448e-03, +-1.211486976655984501e-03, +-1.205987392574900917e-03, +-1.200486110752567448e-03, +-1.194983140205535489e-03, +-1.189478489952051909e-03, +-1.183972169012916008e-03, +-1.178464186411330760e-03, +-1.172954551172590565e-03, +-1.167443272324244531e-03, +-1.161930358896263223e-03, +-1.156415819920604765e-03, +-1.150899664431677578e-03, +-1.145381901465911687e-03, +-1.139862540061909206e-03, +-1.134341589260630823e-03, +-1.128819058105069890e-03, +-1.123294955640102150e-03, +-1.117769290913285659e-03, +-1.112242072973920358e-03, +-1.106713310873206572e-03, +-1.101183013665050798e-03, +-1.095651190404673368e-03, +-1.090117850150087303e-03, +-1.084583001960725710e-03, +-1.079046654898286380e-03, +-1.073508818026595174e-03, +-1.067969500411277946e-03, +-1.062428711119943123e-03, +-1.056886459222341730e-03, +-1.051342753789920488e-03, +-1.045797603896308397e-03, +-1.040251018616859639e-03, +-1.034703007028833343e-03, +-1.029153578211560978e-03, +-1.023602741246111341e-03, +-1.018050505215181483e-03, +-1.012496879203907477e-03, +-1.006941872298649891e-03, +-1.001385493587817355e-03, +-9.958277521617468590e-04, +-9.902686571123078037e-04, +-9.847082175333764491e-04, +-9.791464425204113396e-04, +-9.735833411705955513e-04, +-9.680189225830248016e-04, +-9.624531958583204972e-04, +-9.568861700987920391e-04, +-9.513178544086147402e-04, +-9.457482578933768457e-04, +-9.401773896605674242e-04, +-9.346052588191219781e-04, +-9.290318744795886523e-04, +-9.234572457543147169e-04, +-9.178813817571061275e-04, +-9.123042916030974208e-04, +-9.067259844095992361e-04, +-9.011464692948493137e-04, +-8.955657553788631603e-04, +-8.899838517832911510e-04, +-8.844007676310374324e-04, +-8.788165120467396818e-04, +-8.732310941563201393e-04, +-8.676445230871529003e-04, +-8.620568079682402064e-04, +-8.564679579298202896e-04, +-8.508779821035447480e-04, +-8.452868896226481150e-04, +-8.396946896214939034e-04, +-8.341013912360569675e-04, +-8.285070036035445742e-04, +-8.229115358622494936e-04, +-8.173149971524043501e-04, +-8.117173966149268758e-04, +-8.061187433922743697e-04, +-8.005190466283070884e-04, +-7.949183154679544203e-04, +-7.893165590573999590e-04, +-7.837137865442349175e-04, +-7.781100070770271583e-04, +-7.725052298057931465e-04, +-7.668994638815423677e-04, +-7.612927184564654377e-04, +-7.556850026840887091e-04, +-7.500763257189609371e-04, +-7.444666967165063706e-04, +-7.388561248338214229e-04, +-7.332446192287256706e-04, +-7.276321890599353253e-04, +-7.220188434878571952e-04, +-7.164045916731996049e-04, +-7.107894427784584033e-04, +-7.051734059665259319e-04, +-6.995564904015556763e-04, +-6.939387052488139472e-04, +-6.883200596743605827e-04, +-6.827005628452156990e-04, +-6.770802239295356561e-04, +-6.714590520961594275e-04, +-6.658370565150928053e-04, +-6.602142463570593233e-04, +-6.545906307936682003e-04, +-6.489662189975879203e-04, +-6.433410201422242250e-04, +-6.377150434015732040e-04, +-6.320882979510825854e-04, +-6.264607929663916757e-04, +-6.208325376241874459e-04, +-6.152035411020621760e-04, +-6.095738125781280208e-04, +-6.039433612315043588e-04, +-5.983121962418539710e-04, +-5.926803267895700651e-04, +-5.870477620559380388e-04, +-5.814145112227525397e-04, +-5.757805834724821553e-04, +-5.701459879884513424e-04, +-5.645107339543812674e-04, +-5.588748305548754203e-04, +-5.532382869749733574e-04, +-5.476011124003132228e-04, +-5.419633160173124853e-04, +-5.363249070128386659e-04, +-5.306858945740636213e-04, +-5.250462878893354590e-04, +-5.194060961469002631e-04, +-5.137653285357702149e-04, +-5.081239942455837311e-04, +-5.024821024662095128e-04, +-4.968396623882412669e-04, +-4.911966832025347523e-04, +-4.855531741003865100e-04, +-4.799091442737066313e-04, +-4.742646029146269267e-04, +-4.686195592156699530e-04, +-4.629740223699303466e-04, +-4.573280015706152296e-04, +-4.516815060115336191e-04, +-4.460345448867008558e-04, +-4.403871273902026993e-04, +-4.347392627170584617e-04, +-4.290909600619485873e-04, +-4.234422286200798468e-04, +-4.177930775870435771e-04, +-4.121435161584912884e-04, +-4.064935535302991918e-04, +-4.008431988987535980e-04, +-3.951924614600836800e-04, +-3.895413504109587971e-04, +-3.838898749480301482e-04, +-3.782380442681021839e-04, +-3.725858675683100911e-04, +-3.669333540457269316e-04, +-3.612805128975325611e-04, +-3.556273533211960465e-04, +-3.499738845140110306e-04, +-3.443201156735930016e-04, +-3.386660559974771626e-04, +-3.330117146829876225e-04, +-3.273571009280964637e-04, +-3.217022239301523521e-04, +-3.160470928867467610e-04, +-3.103917169955747592e-04, +-3.047361054541013474e-04, +-2.990802674597384551e-04, +-2.934242122100192795e-04, +-2.877679489021404274e-04, +-2.821114867334520286e-04, +-2.764548349010023708e-04, +-2.707980026017100714e-04, +-2.651409990325400432e-04, +-2.594838333901730294e-04, +-2.538265148708639530e-04, +-2.481690526713094952e-04, +-2.425114559872483630e-04, +-2.368537340149557812e-04, +-2.311958959498448438e-04, +-2.255379509872692850e-04, +-2.198799083226983607e-04, +-2.142217771507560825e-04, +-2.085635666660257776e-04, +-2.029052860629104705e-04, +-1.972469445352998698e-04, +-1.915885512767470124e-04, +-1.859301154806415190e-04, +-1.802716463397544997e-04, +-1.746131530467249008e-04, +-1.689546447936078253e-04, +-1.632961307720442654e-04, +-1.576376201734395891e-04, +-1.519791221886289281e-04, +-1.463206460077402977e-04, +-1.406622008210591391e-04, +-1.350037958176288587e-04, +-1.293454401867475420e-04, +-1.236871431165660531e-04, +-1.180289137949562501e-04, +-1.123707614093709200e-04, +-1.067126951465110232e-04, +-1.010547241925027984e-04, +-9.539685773307039394e-05, +-8.973910495314242511e-05, +-8.408147503702796688e-05, +-7.842397716858898280e-05, +-7.276662053078466195e-05, +-6.710941430616183063e-05, +-6.145236767646008601e-05, +-5.579548982247242185e-05, +-5.013878992491200756e-05, +-4.448227716313696311e-05, +-3.882596071601744295e-05, +-3.316984976179548932e-05, +-2.751395347775441839e-05, +-2.185828104039314637e-05, +-1.620284162560052584e-05, +-1.054764440819917448e-05, +-4.892698562434943208e-06, + 7.619867384792744639e-07, + 6.416402322189281207e-06, + 1.207053901702523424e-05, + 1.772438765239484586e-05, + 2.337793905860905761e-05, + 2.903118406670770406e-05, + 3.468411350891591194e-05, + 4.033671821815431691e-05, + 4.598898902843231382e-05, + 5.164091677498874893e-05, + 5.729249229342466655e-05, + 6.294370642097877125e-05, + 6.859454999565904295e-05, + 7.424501385638494354e-05, + 7.989508884331614701e-05, + 8.554476579767914164e-05, + 9.119403556159260565e-05, + 9.684288897852304321e-05, + 1.024913168927966766e-04, + 1.081393101500539709e-04, + 1.137868595970761073e-04, + 1.194339560816106571e-04, + 1.250805904527013690e-04, + 1.307267535608294131e-04, + 1.363724362570457350e-04, + 1.420176293943709641e-04, + 1.476623238263008269e-04, + 1.533065104082040092e-04, + 1.589501799965197654e-04, + 1.645933234485830632e-04, + 1.702359316235848620e-04, + 1.758779953817666587e-04, + 1.815195055845634673e-04, + 1.871604530949314644e-04, + 1.928008287771739750e-04, + 1.984406234967696803e-04, + 2.040798281208250830e-04, + 2.097184335175865616e-04, + 2.153564305568980665e-04, + 2.209938101100234734e-04, + 2.266305630494749271e-04, + 2.322666802493415718e-04, + 2.379021525854294397e-04, + 2.435369709343975593e-04, + 2.491711261751537298e-04, + 2.548046091873620357e-04, + 2.604374108528395159e-04, + 2.660695220546922444e-04, + 2.717009336774550026e-04, + 2.773316366074190338e-04, + 2.829616217324604135e-04, + 2.885908799418647887e-04, + 2.942194021267201839e-04, + 2.998471791797421198e-04, + 3.054742019951005197e-04, + 3.111004614688738282e-04, + 3.167259484985607948e-04, + 3.223506539834746355e-04, + 3.279745688248795880e-04, + 3.335976839251279954e-04, + 3.392199901889325088e-04, + 3.448414785225619892e-04, + 3.504621398336692814e-04, + 3.560819650323724891e-04, + 3.617009450298264302e-04, + 3.673190707396183845e-04, + 3.729363330769027915e-04, + 3.785527229585425768e-04, + 3.841682313034369060e-04, + 3.897828490323496640e-04, + 3.953965670677326758e-04, + 4.010093763341187299e-04, + 4.066212677579467507e-04, + 4.122322322673908196e-04, + 4.178422607928117998e-04, + 4.234513442662708000e-04, + 4.290594736219171569e-04, + 4.346666397961361028e-04, + 4.402728337266764171e-04, + 4.458780463539254476e-04, + 4.514822686200446766e-04, + 4.570854914691066550e-04, + 4.626877058474896526e-04, + 4.682889027033880318e-04, + 4.738890729872672876e-04, + 4.794882076516916595e-04, + 4.850862976511456713e-04, + 4.906833339424324135e-04, + 4.962793074844903127e-04, + 5.018742092382311518e-04, + 5.074680301668595302e-04, + 5.130607612360149486e-04, + 5.186523934129098684e-04, + 5.242429176677232362e-04, + 5.298323249721716144e-04, + 5.354206063005925156e-04, + 5.410077526297680031e-04, + 5.465937549381246581e-04, + 5.521786042070026381e-04, + 5.577622914197943871e-04, + 5.633448075620807027e-04, + 5.689261436220237594e-04, + 5.745062905898792177e-04, + 5.800852394584509386e-04, + 5.856629812229179445e-04, + 5.912395068806558518e-04, + 5.968148074316343386e-04, + 6.023888738782384690e-04, + 6.079616972250972799e-04, + 6.135332684794143551e-04, + 6.191035786511005310e-04, + 6.246726187519172687e-04, + 6.302403797968682275e-04, + 6.358068528027084870e-04, + 6.413720287893380717e-04, + 6.469358987789402280e-04, + 6.524984537961233452e-04, + 6.580596848682403622e-04, + 6.636195830252236433e-04, + 6.691781392994087954e-04, + 6.747353447259266069e-04, + 6.802911903425225282e-04, + 6.858456671893927402e-04, + 6.913987663096320384e-04, + 6.969504787487473514e-04, + 7.025007955550495713e-04, + 7.080497077797863687e-04, + 7.135972064762972737e-04, + 7.191432827012579068e-04, + 7.246879275138951243e-04, + 7.302311319758111614e-04, + 7.357728871520584010e-04, + 7.413131841097177687e-04, + 7.468520139192907394e-04, + 7.523893676538313249e-04, + 7.579252363890936345e-04, + 7.634596112038549666e-04, + 7.689924831797395176e-04, + 7.745238434010513068e-04, + 7.800536829551605851e-04, + 7.855819929323320985e-04, + 7.911087644255472779e-04, + 7.966339885309623153e-04, + 8.021576563474181040e-04, + 8.076797589768358642e-04, + 8.132002875243398744e-04, + 8.187192330974236119e-04, + 8.242365868071891040e-04, + 8.297523397674990819e-04, + 8.352664830951126145e-04, + 8.407790079100760719e-04, + 8.462899053352405465e-04, + 8.517991664966994376e-04, + 8.573067825236329762e-04, + 8.628127445481274891e-04, + 8.683170437055590975e-04, + 8.738196711344333638e-04, + 8.793206179762005437e-04, + 8.848198753755848580e-04, + 8.903174344807235959e-04, + 8.958132864423185102e-04, + 9.013074224150011528e-04, + 9.067998335559355550e-04, + 9.122905110258727225e-04, + 9.177794459889845359e-04, + 9.232666296120831248e-04, + 9.287520530658565331e-04, + 9.342357075240221740e-04, + 9.397175841634707039e-04, + 9.451976741646457092e-04, + 9.506759687110635142e-04, + 9.561524589897607389e-04, + 9.616271361911236460e-04, + 9.670999915087183547e-04, + 9.725710161396724802e-04, + 9.780402012845037206e-04, + 9.835075381469490959e-04, + 9.889730179342985563e-04, + 9.944366318575075230e-04, + 9.998983711303776646e-04, + 1.005358226970904777e-03, + 1.010816190599823569e-03, + 1.016272253241972670e-03, + 1.021726406125451339e-03, + 1.027178640481753906e-03, + 1.032628947546095901e-03, + 1.038077318557229737e-03, + 1.043523744757296392e-03, + 1.048968217392248683e-03, + 1.054410727711385058e-03, + 1.059851266967791299e-03, + 1.065289826418173991e-03, + 1.070726397322679675e-03, + 1.076160970945231601e-03, + 1.081593538553646174e-03, + 1.087024091418870107e-03, + 1.092452620815902208e-03, + 1.097879118023624683e-03, + 1.103303574324027711e-03, + 1.108725981003554073e-03, + 1.114146329351670172e-03, + 1.119564610662198735e-03, + 1.124980816232497641e-03, + 1.130394937363579178e-03, + 1.135806965360447018e-03, + 1.141216891531909730e-03, + 1.146624707190423576e-03, + 1.152030403652530522e-03, + 1.157433972238379460e-03, + 1.162835404272173764e-03, + 1.168234691081998684e-03, + 1.173631823999652431e-03, + 1.179026794360966014e-03, + 1.184419593505938112e-03, + 1.189810212777899162e-03, + 1.195198643524730429e-03, + 1.200584877098052373e-03, + 1.205968904853324834e-03, + 1.211350718150259673e-03, + 1.216730308352323127e-03, + 1.222107666827191175e-03, + 1.227482784946569341e-03, + 1.232855654086035266e-03, + 1.238226265625407560e-03, + 1.243594610948581215e-03, + 1.248960681443361939e-03, + 1.254324468501903092e-03, + 1.259685963520227551e-03, + 1.265045157898619542e-03, + 1.270402043041740430e-03, + 1.275756610357878023e-03, + 1.281108851259845369e-03, + 1.286458757164831140e-03, + 1.291806319493613584e-03, + 1.297151529671796517e-03, + 1.302494379128964295e-03, + 1.307834859298823192e-03, + 1.313172961619579141e-03, + 1.318508677533462630e-03, + 1.323841998487172364e-03, + 1.329172915931693547e-03, + 1.334501421322155639e-03, + 1.339827506118179733e-03, + 1.345151161783728067e-03, + 1.350472379786937490e-03, + 1.355791151600546857e-03, + 1.361107468701431688e-03, + 1.366421322570984939e-03, + 1.371732704695234530e-03, + 1.377041606564042555e-03, + 1.382348019672294650e-03, + 1.387651935519079250e-03, + 1.392953345607837864e-03, + 1.398252241446656507e-03, + 1.403548614548103500e-03, + 1.408842456429085926e-03, + 1.414133758611247531e-03, + 1.419422512620525717e-03, + 1.424708709987587175e-03, + 1.429992342247638588e-03, + 1.435273400940290014e-03, + 1.440551877609843722e-03, + 1.445827763805443596e-03, + 1.451101051080301010e-03, + 1.456371730992606865e-03, + 1.461639795105372421e-03, + 1.466905234985655185e-03, + 1.472168042205898976e-03, + 1.477428208342506256e-03, + 1.482685724977161499e-03, + 1.487940583696015012e-03, + 1.493192776089825608e-03, + 1.498442293754246842e-03, + 1.503689128289682590e-03, + 1.508933271301119003e-03, + 1.514174714398538665e-03, + 1.519413449196486488e-03, + 1.524649467314474760e-03, + 1.529882760376821606e-03, + 1.535113320012504185e-03, + 1.540341137855441231e-03, + 1.545566205544649831e-03, + 1.550788514723418178e-03, + 1.556008057040501012e-03, + 1.561224824149306687e-03, + 1.566438807708032694e-03, + 1.571649999380028001e-03, + 1.576858390833337691e-03, + 1.582063973741129918e-03, + 1.587266739781528291e-03, + 1.592466680637445340e-03, + 1.597663787996963071e-03, + 1.602858053553160578e-03, + 1.608049469003941219e-03, + 1.613238026052480397e-03, + 1.618423716406740915e-03, + 1.623606531779932033e-03, + 1.628786463890305632e-03, + 1.633963504461023513e-03, + 1.639137645220462491e-03, + 1.644308877902318040e-03, + 1.649477194244841670e-03, + 1.654642585991969363e-03, + 1.659805044892578461e-03, + 1.664964562700552066e-03, + 1.670121131175207304e-03, + 1.675274742080785093e-03, + 1.680425387186913972e-03, + 1.685573058268420143e-03, + 1.690717747105182408e-03, + 1.695859445482483015e-03, + 1.700998145190859342e-03, + 1.706133838025929335e-03, + 1.711266515788823243e-03, + 1.716396170285713722e-03, + 1.721522793328205715e-03, + 1.726646376733434896e-03, + 1.731766912323295503e-03, + 1.736884391925592195e-03, + 1.741998807373254217e-03, + 1.747110150504449250e-03, + 1.752218413162920157e-03, + 1.757323587197779204e-03, + 1.762425664463377738e-03, + 1.767524636819716669e-03, + 1.772620496131984595e-03, + 1.777713234271009052e-03, + 1.782802843113051811e-03, + 1.787889314539684200e-03, + 1.792972640438119953e-03, + 1.798052812701080765e-03, + 1.803129823226613717e-03, + 1.808203663918521269e-03, + 1.813274326685910881e-03, + 1.818341803443544345e-03, + 1.823406086111975695e-03, + 1.828467166616761473e-03, + 1.833525036889614322e-03, + 1.838579688867607396e-03, + 1.843631114493325934e-03, + 1.848679305715138091e-03, + 1.853724254487048575e-03, + 1.858765952768544035e-03, + 1.863804392525000289e-03, + 1.868839565727237152e-03, + 1.873871464351941707e-03, + 1.878900080381483992e-03, + 1.883925405803792965e-03, + 1.888947432612634062e-03, + 1.893966152807723688e-03, + 1.898981558393982635e-03, + 1.903993641382761663e-03, + 1.909002393790517477e-03, + 1.914007807640053915e-03, + 1.919009874959751519e-03, + 1.924008587783699155e-03, + 1.929003938151977642e-03, + 1.933995918110506442e-03, + 1.938984519710889058e-03, + 1.943969735010766912e-03, + 1.948951556073657589e-03, + 1.953929974968795016e-03, + 1.958904983771547759e-03, + 1.963876574562970368e-03, + 1.968844739430222757e-03, + 1.973809470466390218e-03, + 1.978770759770361563e-03, + 1.983728599447092365e-03, + 1.988682981607731593e-03, + 1.993633898368882620e-03, + 1.998581341853803654e-03, + 2.003525304191115363e-03, + 2.008465777516005649e-03, + 2.013402753969493249e-03, + 2.018336225698542669e-03, + 2.023266184856333059e-03, + 2.028192623602141122e-03, + 2.033115534101156367e-03, + 2.038034908524850169e-03, + 2.042950739050784954e-03, + 2.047863017862517482e-03, + 2.052771737149944927e-03, + 2.057676889108895919e-03, + 2.062578465941490927e-03, + 2.067476459856227265e-03, + 2.072370863067261350e-03, + 2.077261667795489864e-03, + 2.082148866267804696e-03, + 2.087032450717227379e-03, + 2.091912413383159326e-03, + 2.096788746511284683e-03, + 2.101661442353359131e-03, + 2.106530493167651369e-03, + 2.111395891218495989e-03, + 2.116257628776682057e-03, + 2.121115698119325609e-03, + 2.125970091529698781e-03, + 2.130820801297571981e-03, + 2.135667819719069046e-03, + 2.140511139096514144e-03, + 2.145350751738819492e-03, + 2.150186649961064681e-03, + 2.155018826084842756e-03, + 2.159847272438377309e-03, + 2.164671981355751392e-03, + 2.169492945178052874e-03, + 2.174310156252583833e-03, + 2.179123606932995873e-03, + 2.183933289579584151e-03, + 2.188739196559123020e-03, + 2.193541320244717270e-03, + 2.198339653016202853e-03, + 2.203134187259707562e-03, + 2.207924915368069969e-03, + 2.212711829740650771e-03, + 2.217494922783225676e-03, + 2.222274186908229556e-03, + 2.227049614534909548e-03, + 2.231821198088550923e-03, + 2.236588930001694869e-03, + 2.241352802712855662e-03, + 2.246112808667712415e-03, + 2.250868940318410862e-03, + 2.255621190123451025e-03, + 2.260369550548451800e-03, + 2.265114014065512573e-03, + 2.269854573153307770e-03, + 2.274591220297367006e-03, + 2.279323947989941954e-03, + 2.284052748729835467e-03, + 2.288777615022802303e-03, + 2.293498539381134092e-03, + 2.298215514324048348e-03, + 2.302928532377512827e-03, + 2.307637586074135373e-03, + 2.312342667953418487e-03, + 2.317043770561878595e-03, + 2.321740886452333067e-03, + 2.326434008185050781e-03, + 2.331123128326510491e-03, + 2.335808239450584776e-03, + 2.340489334137778061e-03, + 2.345166404975379277e-03, + 2.349839444557725102e-03, + 2.354508445486044269e-03, + 2.359173400368328333e-03, + 2.363834301819645652e-03, + 2.368491142461995672e-03, + 2.373143914924174917e-03, + 2.377792611842144323e-03, + 2.382437225858617235e-03, + 2.387077749623410690e-03, + 2.391714175793532588e-03, + 2.396346497032468287e-03, + 2.400974706011250494e-03, + 2.405598795407784887e-03, + 2.410218757906698334e-03, + 2.414834586200246148e-03, + 2.419446272987112959e-03, + 2.424053810973589296e-03, + 2.428657192872835623e-03, + 2.433256411405000739e-03, + 2.437851459297514078e-03, + 2.442442329284917873e-03, + 2.447029014108724043e-03, + 2.451611506517740319e-03, + 2.456189799267946214e-03, + 2.460763885122322584e-03, + 2.465333756851228499e-03, + 2.469899407232005288e-03, + 2.474460829049313516e-03, + 2.479018015095212340e-03, + 2.483570958168476468e-03, + 2.488119651075636554e-03, + 2.492664086630254090e-03, + 2.497204257653032854e-03, + 2.501740156972186244e-03, + 2.506271777422958928e-03, + 2.510799111848081334e-03, + 2.515322153097545883e-03, + 2.519840894028541056e-03, + 2.524355327505704242e-03, + 2.528865446401027620e-03, + 2.533371243593689030e-03, + 2.537872711970326923e-03, + 2.542369844425160924e-03, + 2.546862633859267155e-03, + 2.551351073181734857e-03, + 2.555835155308448185e-03, + 2.560314873163211172e-03, + 2.564790219677086369e-03, + 2.569261187788291195e-03, + 2.573727770442935624e-03, + 2.578189960594387282e-03, + 2.582647751203385068e-03, + 2.587101135238337526e-03, + 2.591550105674958557e-03, + 2.595994655496617395e-03, + 2.600434777694184650e-03, + 2.604870465265914353e-03, + 2.609301711217735815e-03, + 2.613728508563149984e-03, + 2.618150850323029948e-03, + 2.622568729525955739e-03, + 2.626982139208262033e-03, + 2.631391072413380265e-03, + 2.635795522192945373e-03, + 2.640195481605608820e-03, + 2.644590943718134069e-03, + 2.648981901604730450e-03, + 2.653368348347154206e-03, + 2.657750277034960900e-03, + 2.662127680765374871e-03, + 2.666500552643146990e-03, + 2.670868885780870814e-03, + 2.675232673298837734e-03, + 2.679591908324896899e-03, + 2.683946583994832082e-03, + 2.688296693451940576e-03, + 2.692642229847376674e-03, + 2.696983186340237097e-03, + 2.701319556096894864e-03, + 2.705651332291990254e-03, + 2.709978508107795028e-03, + 2.714301076734088828e-03, + 2.718619031369002691e-03, + 2.722932365217888007e-03, + 2.727241071494424570e-03, + 2.731545143419926262e-03, + 2.735844574223465081e-03, + 2.740139357142115303e-03, + 2.744429485420819912e-03, + 2.748714952312266129e-03, + 2.752995751077192896e-03, + 2.757271874984197884e-03, + 2.761543317309689358e-03, + 2.765810071338173706e-03, + 2.770072130361905458e-03, + 2.774329487681172646e-03, + 2.778582136604424314e-03, + 2.782830070447579653e-03, + 2.787073282535025478e-03, + 2.791311766198940544e-03, + 2.795545514779401372e-03, + 2.799774521624694059e-03, + 2.803998780090917464e-03, + 2.808218283542354872e-03, + 2.812433025351320035e-03, + 2.816642998898054827e-03, + 2.820848197570959524e-03, + 2.825048614766545538e-03, + 2.829244243889242859e-03, + 2.833435078351678911e-03, + 2.837621111574767461e-03, + 2.841802336987047251e-03, + 2.845978748025762735e-03, + 2.850150338135771632e-03, + 2.854317100770343337e-03, + 2.858479029391050065e-03, + 2.862636117467164901e-03, + 2.866788358476582942e-03, + 2.870935745905210668e-03, + 2.875078273247047480e-03, + 2.879215934004488841e-03, + 2.883348721687949839e-03, + 2.887476629816221243e-03, + 2.891599651916313806e-03, + 2.895717781523355489e-03, + 2.899831012180854265e-03, + 2.903939337440592742e-03, + 2.908042750862499786e-03, + 2.912141246014853489e-03, + 2.916234816474429919e-03, + 2.920323455825844360e-03, + 2.924407157662578267e-03, + 2.928485915585897232e-03, + 2.932559723205838478e-03, + 2.936628574140623220e-03, + 2.940692462016718245e-03, + 2.944751380469102630e-03, + 2.948805323141134166e-03, + 2.952854283684400172e-03, + 2.956898255759077016e-03, + 2.960937233033564958e-03, + 2.964971209184810372e-03, + 2.969000177898189086e-03, + 2.973024132867370210e-03, + 2.977043067794549452e-03, + 2.981056976390576187e-03, + 2.985065852374290361e-03, + 2.989069689473476590e-03, + 2.993068481424250929e-03, + 2.997062221970965470e-03, + 3.001050904866950798e-03, + 3.005034523873533706e-03, + 3.009013072760992162e-03, + 3.012986545307969836e-03, + 3.016954935301554598e-03, + 3.020918236537530489e-03, + 3.024876442820215953e-03, + 3.028829547962396621e-03, + 3.032777545785609805e-03, + 3.036720430119787140e-03, + 3.040658194803611946e-03, + 3.044590833684362660e-03, + 3.048518340617813096e-03, + 3.052440709468446246e-03, + 3.056357934109575278e-03, + 3.060270008422695184e-03, + 3.064176926298416061e-03, + 3.068078681635829068e-03, + 3.071975268342616583e-03, + 3.075866680335321516e-03, + 3.079752911539014246e-03, + 3.083633955887585786e-03, + 3.087509807323645435e-03, + 3.091380459798411060e-03, + 3.095245907271932436e-03, + 3.099106143713025330e-03, + 3.102961163099120581e-03, + 3.106810959416581985e-03, + 3.110655526660366724e-03, + 3.114494858834297719e-03, + 3.118328949951176821e-03, + 3.122157794032182857e-03, + 3.125981385107594584e-03, + 3.129799717216602030e-03, + 3.133612784406823813e-03, + 3.137420580735119854e-03, + 3.141223100267045813e-03, + 3.145020337076891246e-03, + 3.148812285248007471e-03, + 3.152598938872444578e-03, + 3.156380292051240259e-03, + 3.160156338894349118e-03, + 3.163927073520476571e-03, + 3.167692490057376787e-03, + 3.171452582641719111e-03, + 3.175207345418971840e-03, + 3.178956772543698860e-03, + 3.182700858179259972e-03, + 3.186439596498030335e-03, + 3.190172981681537508e-03, + 3.193901007919842158e-03, + 3.197623669412417990e-03, + 3.201340960367550243e-03, + 3.205052875002455809e-03, + 3.208759407543476227e-03, + 3.212460552225954516e-03, + 3.216156303294161016e-03, + 3.219846655001547091e-03, + 3.223531601610458899e-03, + 3.227211137392401938e-03, + 3.230885256627953877e-03, + 3.234553953606640088e-03, + 3.238217222627132272e-03, + 3.241875057997372928e-03, + 3.245527454034023273e-03, + 3.249174405063098587e-03, + 3.252815905419838109e-03, + 3.256451949448227121e-03, + 3.260082531501834816e-03, + 3.263707645942911812e-03, + 3.267327287143244503e-03, + 3.270941449483617727e-03, + 3.274550127353917980e-03, + 3.278153315153315133e-03, + 3.281751007290159214e-03, + 3.285343198181884562e-03, + 3.288929882255280015e-03, + 3.292511053946183160e-03, + 3.296086707699769601e-03, + 3.299656837970451912e-03, + 3.303221439221744760e-03, + 3.306780505926488686e-03, + 3.310334032566958958e-03, + 3.313882013634265791e-03, + 3.317424443629189180e-03, + 3.320961317061648949e-03, + 3.324492628450749412e-03, + 3.328018372325068207e-03, + 3.331538543222317163e-03, + 3.335053135689628519e-03, + 3.338562144283489450e-03, + 3.342065563569552970e-03, + 3.345563388122970144e-03, + 3.349055612528202292e-03, + 3.352542231378968958e-03, + 3.356023239278512448e-03, + 3.359498630839257826e-03, + 3.362968400683119096e-03, + 3.366432543441553408e-03, + 3.369891053755033703e-03, + 3.373343926273700971e-03, + 3.376791155657206823e-03, + 3.380232736574242947e-03, + 3.383668663703320867e-03, + 3.387098931732224639e-03, + 3.390523535358106692e-03, + 3.393942469287738063e-03, + 3.397355728237177065e-03, + 3.400763306932081103e-03, + 3.404165200107585245e-03, + 3.407561402508199871e-03, + 3.410951908888027514e-03, + 3.414336714010678293e-03, + 3.417715812649161494e-03, + 3.421089199586159653e-03, + 3.424456869613721945e-03, + 3.427818817533513120e-03, + 3.431175038156877247e-03, + 3.434525526304364144e-03, + 3.437870276806409813e-03, + 3.441209284502909707e-03, + 3.444542544243227398e-03, + 3.447870050886435705e-03, + 3.451191799301203938e-03, + 3.454507784365657818e-03, + 3.457818000967711677e-03, + 3.461122444004712841e-03, + 3.464421108383770789e-03, + 3.467713989021607972e-03, + 3.471001080844459200e-03, + 3.474282378788308423e-03, + 3.477557877798915630e-03, + 3.480827572831367983e-03, + 3.484091458850737712e-03, + 3.487349530831560396e-03, + 3.490601783758149820e-03, + 3.493848212624644806e-03, + 3.497088812434505714e-03, + 3.500323578201306341e-03, + 3.503552504948140647e-03, + 3.506775587707775411e-03, + 3.509992821522806353e-03, + 3.513204201445570968e-03, + 3.516409722538049645e-03, + 3.519609379872094650e-03, + 3.522803168529195072e-03, + 3.525991083600710143e-03, + 3.529173120187772093e-03, + 3.532349273401182935e-03, + 3.535519538361603983e-03, + 3.538683910199647790e-03, + 3.541842384055365976e-03, + 3.544994955079045895e-03, + 3.548141618430370597e-03, + 3.551282369279209431e-03, + 3.554417202805118872e-03, + 3.557546114197419288e-03, + 3.560669098655400502e-03, + 3.563786151388190389e-03, + 3.566897267614691554e-03, + 3.570002442563760883e-03, + 3.573101671474165301e-03, + 3.576194949594416108e-03, + 3.579282272183076461e-03, + 3.582363634508468637e-03, + 3.585439031848909087e-03, + 3.588508459492665507e-03, + 3.591571912737777286e-03, + 3.594629386892306180e-03, + 3.597680877274386617e-03, + 3.600726379211748648e-03, + 3.603765888042484260e-03, + 3.606799399114227287e-03, + 3.609826907784903244e-03, + 3.612848409422319065e-03, + 3.615863899404130142e-03, + 3.618873373118129157e-03, + 3.621876825962066972e-03, + 3.624874253343610131e-03, + 3.627865650680525168e-03, + 3.630851013400608791e-03, + 3.633830336941529151e-03, + 3.636803616751169317e-03, + 3.639770848287291177e-03, + 3.642732027017755309e-03, + 3.645687148420609456e-03, + 3.648636207983625788e-03, + 3.651579201204961395e-03, + 3.654516123592726779e-03, + 3.657446970665024447e-03, + 3.660371737950143204e-03, + 3.663290420986446694e-03, + 3.666203015322317023e-03, + 3.669109516516360758e-03, + 3.672009920137169967e-03, + 3.674904221763519978e-03, + 3.677792416984341627e-03, + 3.680674501398588979e-03, + 3.683550470615434055e-03, + 3.686420320254201344e-03, + 3.689284045944277168e-03, + 3.692141643325308736e-03, + 3.694993108047004218e-03, + 3.697838435769273263e-03, + 3.700677622162362301e-03, + 3.703510662906340633e-03, + 3.706337553691835523e-03, + 3.709158290219484021e-03, + 3.711972868200106440e-03, + 3.714781283354801327e-03, + 3.717583531414884318e-03, + 3.720379608121814844e-03, + 3.723169509227375676e-03, + 3.725953230493486874e-03, + 3.728730767692379263e-03, + 3.731502116606546723e-03, + 3.734267273028624330e-03, + 3.737026232761581340e-03, + 3.739778991618767593e-03, + 3.742525545423516266e-03, + 3.745265890009786148e-03, + 3.748000021221446938e-03, + 3.750727934912997420e-03, + 3.753449626949065428e-03, + 3.756165093204553562e-03, + 3.758874329564756717e-03, + 3.761577331925289661e-03, + 3.764274096191986413e-03, + 3.766964618281093240e-03, + 3.769648894119222247e-03, + 3.772326919643201326e-03, + 3.774998690800336100e-03, + 3.777664203548175732e-03, + 3.780323453854692040e-03, + 3.782976437698257373e-03, + 3.785623151067475482e-03, + 3.788263589961442593e-03, + 3.790897750389706205e-03, + 3.793525628371935930e-03, + 3.796147219938539319e-03, + 3.798762521129973174e-03, + 3.801371527997385400e-03, + 3.803974236602236832e-03, + 3.806570643016323786e-03, + 3.809160743321992736e-03, + 3.811744533611963800e-03, + 3.814322009989352426e-03, + 3.816893168567777814e-03, + 3.819458005471324750e-03, + 3.822016516834432151e-03, + 3.824568698802113375e-03, + 3.827114547529722032e-03, + 3.829654059183164056e-03, + 3.832187229938913316e-03, + 3.834714055983652527e-03, + 3.837234533514834872e-03, + 3.839748658740285876e-03, + 3.842256427878268463e-03, + 3.844757837157715841e-03, + 3.847252882817825143e-03, + 3.849741561108570038e-03, + 3.852223868290329499e-03, + 3.854699800633945486e-03, + 3.857169354420895979e-03, + 3.859632525943180060e-03, + 3.862089311503255021e-03, + 3.864539707414236299e-03, + 3.866983709999761293e-03, + 3.869421315593962480e-03, + 3.871852520541640020e-03, + 3.874277321198067465e-03, + 3.876695713929122732e-03, + 3.879107695111417772e-03, + 3.881513261131826729e-03, + 3.883912408388136457e-03, + 3.886305133288588121e-03, + 3.888691432251989519e-03, + 3.891071301707852564e-03, + 3.893444738096213734e-03, + 3.895811737867792800e-03, + 3.898172297483930380e-03, + 3.900526413416543266e-03, + 3.902874082148216368e-03, + 3.905215300172228728e-03, + 3.907550063992389598e-03, + 3.909878370123213639e-03, + 3.912200215089990316e-03, + 3.914515595428386639e-03, + 3.916824507685072107e-03, + 3.919126948417068178e-03, + 3.921422914192325068e-03, + 3.923712401589383482e-03, + 3.925995407197347721e-03, + 3.928271927616210080e-03, + 3.930541959456589768e-03, + 3.932805499339738983e-03, + 3.935062543897706842e-03, + 3.937313089773162439e-03, + 3.939557133619576122e-03, + 3.941794672101128424e-03, + 3.944025701892643274e-03, + 3.946250219679771874e-03, + 3.948468222158879951e-03, + 3.950679706036999174e-03, + 3.952884668031976349e-03, + 3.955083104872489028e-03, + 3.957275013297721980e-03, + 3.959460390057932717e-03, + 3.961639231913833062e-03, + 3.963811535637140789e-03, + 3.965977298010282988e-03, + 3.968136515826374382e-03, + 3.970289185889414214e-03, + 3.972435305014182169e-03, + 3.974574870026179388e-03, + 3.976707877761762912e-03, + 3.978834325068120528e-03, + 3.980954208803145870e-03, + 3.983067525835653523e-03, + 3.985174273045176928e-03, + 3.987274447322113231e-03, + 3.989368045567776196e-03, + 3.991455064694094355e-03, + 3.993535501624032556e-03, + 3.995609353291347358e-03, + 3.997676616640486423e-03, + 3.999737288627001376e-03, + 4.001791366217033463e-03, + 4.003838846387788863e-03, + 4.005879726127234246e-03, + 4.007914002434203454e-03, + 4.009941672318413988e-03, + 4.011962732800493890e-03, + 4.013977180911846437e-03, + 4.015985013694851370e-03, + 4.017986228202776421e-03, + 4.019980821499692311e-03, + 4.021968790660671381e-03, + 4.023950132771594163e-03, + 4.025924844929273418e-03, + 4.027892924241533931e-03, + 4.029854367826888988e-03, + 4.031809172814985326e-03, + 4.033757336346295228e-03, + 4.035698855572187639e-03, + 4.037633727655036593e-03, + 4.039561949768046001e-03, + 4.041483519095463023e-03, + 4.043398432832426281e-03, + 4.045306688184993615e-03, + 4.047208282370219276e-03, + 4.049103212616098416e-03, + 4.050991476161533260e-03, + 4.052873070256437192e-03, + 4.054747992161760774e-03, + 4.056616239149198576e-03, + 4.058477808501699188e-03, + 4.060332697512914445e-03, + 4.062180903487686880e-03, + 4.064022423741797327e-03, + 4.065857255601861703e-03, + 4.067685396405710044e-03, + 4.069506843502042163e-03, + 4.071321594250548216e-03, + 4.073129646022000637e-03, + 4.074930996198072863e-03, + 4.076725642171541431e-03, + 4.078513581346162806e-03, + 4.080294811136695073e-03, + 4.082069328968932626e-03, + 4.083837132279720047e-03, + 4.085598218516865374e-03, + 4.087352585139253716e-03, + 4.089100229616881958e-03, + 4.090841149430566454e-03, + 4.092575342072446963e-03, + 4.094302805045448891e-03, + 4.096023535863735181e-03, + 4.097737532052449574e-03, + 4.099444791147779932e-03, + 4.101145310697011138e-03, + 4.102839088258469595e-03, + 4.104526121401537095e-03, + 4.106206407706721948e-03, + 4.107879944765518467e-03, + 4.109546730180574370e-03, + 4.111206761565611850e-03, + 4.112860036545368594e-03, + 4.114506552755743500e-03, + 4.116146307843751573e-03, + 4.117779299467359128e-03, + 4.119405525295795172e-03, + 4.121024983009338900e-03, + 4.122637670299260718e-03, + 4.124243584868134485e-03, + 4.125842724429447210e-03, + 4.127435086707949459e-03, + 4.129020669439461937e-03, + 4.130599470370889363e-03, + 4.132171487260293333e-03, + 4.133736717876882773e-03, + 4.135295160000914197e-03, + 4.136846811423904209e-03, + 4.138391669948362356e-03, + 4.139929733388042661e-03, + 4.141460999567809186e-03, + 4.142985466323645567e-03, + 4.144503131502708798e-03, + 4.146013992963350908e-03, + 4.147518048574935084e-03, + 4.149015296218150524e-03, + 4.150505733784757428e-03, + 4.151989359177663333e-03, + 4.153466170311006372e-03, + 4.154936165110013901e-03, + 4.156399341511144742e-03, + 4.157855697462021528e-03, + 4.159305230921409025e-03, + 4.160747939859282644e-03, + 4.162183822256812840e-03, + 4.163612876106313060e-03, + 4.165035099411330821e-03, + 4.166450490186541025e-03, + 4.167859046457853510e-03, + 4.169260766262439070e-03, + 4.170655647648516089e-03, + 4.172043688675596863e-03, + 4.173424887414452049e-03, + 4.174799241946897284e-03, + 4.176166750366108044e-03, + 4.177527410776427086e-03, + 4.178881221293357512e-03, + 4.180228180043698075e-03, + 4.181568285165386187e-03, + 4.182901534807651443e-03, + 4.184227927130923681e-03, + 4.185547460306837317e-03, + 4.186860132518264305e-03, + 4.188165941959353170e-03, + 4.189464886835401504e-03, + 4.190756965363001685e-03, + 4.192042175770021792e-03, + 4.193320516295446013e-03, + 4.194591985189644393e-03, + 4.195856580714095278e-03, + 4.197114301141637721e-03, + 4.198365144756324892e-03, + 4.199609109853420612e-03, + 4.200846194739495630e-03, + 4.202076397732356500e-03, + 4.203299717161074200e-03, + 4.204516151365965924e-03, + 4.205725698698615025e-03, + 4.206928357521885764e-03, + 4.208124126209911164e-03, + 4.209313003148061789e-03, + 4.210494986732996915e-03, + 4.211670075372720909e-03, + 4.212838267486344705e-03, + 4.213999561504427546e-03, + 4.215153955868747131e-03, + 4.216301449032294410e-03, + 4.217442039459475683e-03, + 4.218575725625839379e-03, + 4.219702506018334527e-03, + 4.220822379135188464e-03, + 4.221935343485825297e-03, + 4.223041397591071472e-03, + 4.224140539983011790e-03, + 4.225232769204980733e-03, + 4.226318083811694305e-03, + 4.227396482369099109e-03, + 4.228467963454469493e-03, + 4.229532525656417956e-03, + 4.230590167574793670e-03, + 4.231640887820796101e-03, + 4.232684685016981085e-03, + 4.233721557797091688e-03, + 4.234751504806292394e-03, + 4.235774524701031198e-03, + 4.236790616149040470e-03, + 4.237799777829431500e-03, + 4.238802008432569594e-03, + 4.239797306660172092e-03, + 4.240785671225291882e-03, + 4.241767100852284443e-03, + 4.242741594276837336e-03, + 4.243709150245980610e-03, + 4.244669767518026958e-03, + 4.245623444862691408e-03, + 4.246570181060934333e-03, + 4.247509974905118446e-03, + 4.248442825198928130e-03, + 4.249368730757346023e-03, + 4.250287690406720671e-03, + 4.251199702984771733e-03, + 4.252104767340464213e-03, + 4.253002882334207084e-03, + 4.253894046837711912e-03, + 4.254778259734003261e-03, + 4.255655519917492420e-03, + 4.256525826293921025e-03, + 4.257389177780373200e-03, + 4.258245573305301582e-03, + 4.259095011808476140e-03, + 4.259937492241056174e-03, + 4.260773013565520052e-03, + 4.261601574755731134e-03, + 4.262423174796882257e-03, + 4.263237812685509616e-03, + 4.264045487429550876e-03, + 4.264846198048294866e-03, + 4.265639943572321728e-03, + 4.266426723043653842e-03, + 4.267206535515656943e-03, + 4.267979380053010634e-03, + 4.268745255731806396e-03, + 4.269504161639504219e-03, + 4.270256096874864953e-03, + 4.271001060548101219e-03, + 4.271739051780735173e-03, + 4.272470069705657479e-03, + 4.273194113467164608e-03, + 4.273911182220893785e-03, + 4.274621275133838605e-03, + 4.275324391384429691e-03, + 4.276020530162369902e-03, + 4.276709690668822547e-03, + 4.277391872116266536e-03, + 4.278067073728587452e-03, + 4.278735294741055871e-03, + 4.279396534400264906e-03, + 4.280050791964226491e-03, + 4.280698066702338413e-03, + 4.281338357895343553e-03, + 4.281971664835359376e-03, + 4.282597986825928231e-03, + 4.283217323181917613e-03, + 4.283829673229627710e-03, + 4.284435036306679517e-03, + 4.285033411762124121e-03, + 4.285624798956380252e-03, + 4.286209197261229079e-03, + 4.286786606059860179e-03, + 4.287357024746842916e-03, + 4.287920452728096084e-03, + 4.288476889420996321e-03, + 4.289026334254199442e-03, + 4.289568786667842526e-03, + 4.290104246113404275e-03, + 4.290632712053731902e-03, + 4.291154183963099243e-03, + 4.291668661327139971e-03, + 4.292176143642875349e-03, + 4.292676630418721176e-03, + 4.293170121174486910e-03, + 4.293656615441337511e-03, + 4.294136112761866297e-03, + 4.294608612690013413e-03, + 4.295074114791133484e-03, + 4.295532618641975664e-03, + 4.295984123830641141e-03, + 4.296428629956660326e-03, + 4.296866136630934745e-03, + 4.297296643475729226e-03, + 4.297720150124750838e-03, + 4.298136656223036124e-03, + 4.298546161427048255e-03, + 4.298948665404631921e-03, + 4.299344167835021137e-03, + 4.299732668408821033e-03, + 4.300114166828048617e-03, + 4.300488662806087672e-03, + 4.300856156067736462e-03, + 4.301216646349157423e-03, + 4.301570133397900585e-03, + 4.301916616972923518e-03, + 4.302256096844554907e-03, + 4.302588572794517965e-03, + 4.302914044615934776e-03, + 4.303232512113272512e-03, + 4.303543975102446656e-03, + 4.303848433410710841e-03, + 4.304145886876716703e-03, + 4.304436335350518214e-03, + 4.304719778693536121e-03, + 4.304996216778590908e-03, + 4.305265649489876771e-03, + 4.305528076722972899e-03, + 4.305783498384862552e-03, + 4.306031914393882755e-03, + 4.306273324679784145e-03, + 4.306507729183656381e-03, + 4.306735127858046103e-03, + 4.306955520666801672e-03, + 4.307168907585213688e-03, + 4.307375288599903096e-03, + 4.307574663708909658e-03, + 4.307767032921653791e-03, + 4.307952396258918348e-03, + 4.308130753752856430e-03, + 4.308302105447035617e-03, + 4.308466451396366845e-03, + 4.308623791667154715e-03, + 4.308774126337076675e-03, + 4.308917455495190826e-03, + 4.309053779241913372e-03, + 4.309183097689057648e-03, + 4.309305410959812441e-03, + 4.309420719188715096e-03, + 4.309529022521689685e-03, + 4.309630321116024454e-03, + 4.309724615140401310e-03, + 4.309811904774847255e-03, + 4.309892190210763002e-03, + 4.309965471650929920e-03, + 4.310031749309484010e-03, + 4.310091023411942793e-03, + 4.310143294195161942e-03, + 4.310188561907388194e-03, + 4.310226826808222049e-03, + 4.310258089168633386e-03, + 4.310282349270930236e-03, + 4.310299607408829038e-03, + 4.310309863887342753e-03, + 4.310313119022904024e-03, + 4.310309373143257627e-03, + 4.310298626587535931e-03, + 4.310280879706215526e-03, + 4.310256132861112026e-03, + 4.310224386425415624e-03, + 4.310185640783663341e-03, + 4.310139896331742493e-03, + 4.310087153476888956e-03, + 4.310027412637690639e-03, + 4.309960674244065794e-03, + 4.309886938737309860e-03, + 4.309806206570033875e-03, + 4.309718478206213919e-03, + 4.309623754121151215e-03, + 4.309522034801506821e-03, + 4.309413320745259131e-03, + 4.309297612461744642e-03, + 4.309174910471622391e-03, + 4.309045215306901710e-03, + 4.308908527510901462e-03, + 4.308764847638319427e-03, + 4.308614176255122150e-03, + 4.308456513938657695e-03, + 4.308291861277593199e-03, + 4.308120218871883643e-03, + 4.307941587332853386e-03, + 4.307755967283149329e-03, + 4.307563359356711419e-03, + 4.307363764198816891e-03, + 4.307157182466066388e-03, + 4.306943614826389162e-03, + 4.306723061958983231e-03, + 4.306495524554409052e-03, + 4.306261003314535742e-03, + 4.306019498952513326e-03, + 4.305771012192822177e-03, + 4.305515543771239184e-03, + 4.305253094434875055e-03, + 4.304983664942100587e-03, + 4.304707256062635136e-03, + 4.304423868577459886e-03, + 4.304133503278881161e-03, + 4.303836160970467978e-03, + 4.303531842467137915e-03, + 4.303220548595061701e-03, + 4.302902280191697043e-03, + 4.302577038105819852e-03, + 4.302244823197486946e-03, + 4.301905636338009160e-03, + 4.301559478410025943e-03, + 4.301206350307427290e-03, + 4.300846252935397115e-03, + 4.300479187210377689e-03, + 4.300105154060129484e-03, + 4.299724154423627091e-03, + 4.299336189251178053e-03, + 4.298941259504289285e-03, + 4.298539366155823202e-03, + 4.298130510189830319e-03, + 4.297714692601661141e-03, + 4.297291914397913248e-03, + 4.296862176596456459e-03, + 4.296425480226403332e-03, + 4.295981826328137791e-03, + 4.295531215953261352e-03, + 4.295073650164681588e-03, + 4.294609130036492438e-03, + 4.294137656654085228e-03, + 4.293659231114054127e-03, + 4.293173854524263804e-03, + 4.292681528003794780e-03, + 4.292182252682974659e-03, + 4.291676029703377256e-03, + 4.291162860217770554e-03, + 4.290642745390196508e-03, + 4.290115686395870424e-03, + 4.289581684421310201e-03, + 4.289040740664168926e-03, + 4.288492856333367582e-03, + 4.287938032649049082e-03, + 4.287376270842532290e-03, + 4.286807572156389225e-03, + 4.286231937844372196e-03, + 4.285649369171454573e-03, + 4.285059867413803895e-03, + 4.284463433858799221e-03, + 4.283860069805004236e-03, + 4.283249776562201953e-03, + 4.282632555451353074e-03, + 4.282008407804584714e-03, + 4.281377334965267602e-03, + 4.280739338287917195e-03, + 4.280094419138221438e-03, + 4.279442578893098009e-03, + 4.278783818940572019e-03, + 4.278118140679944281e-03, + 4.277445545521567534e-03, + 4.276766034887042461e-03, + 4.276079610209116214e-03, + 4.275386272931691080e-03, + 4.274686024509825356e-03, + 4.273978866409747224e-03, + 4.273264800108849543e-03, + 4.272543827095639547e-03, + 4.271815948869809101e-03, + 4.271081166942177453e-03, + 4.270339482834705977e-03, + 4.269590898080517262e-03, + 4.268835414223821380e-03, + 4.268073032820019104e-03, + 4.267303755435603030e-03, + 4.266527583648190534e-03, + 4.265744519046560206e-03, + 4.264954563230572045e-03, + 4.264157717811237723e-03, + 4.263353984410650326e-03, + 4.262543364662036392e-03, + 4.261725860209724694e-03, + 4.260901472709142761e-03, + 4.260070203826833365e-03, + 4.259232055240418958e-03, + 4.258387028638662385e-03, + 4.257535125721328105e-03, + 4.256676348199381690e-03, + 4.255810697794772980e-03, + 4.254938176240627770e-03, + 4.254058785281068268e-03, + 4.253172526671316310e-03, + 4.252279402177734993e-03, + 4.251379413577636990e-03, + 4.250472562659483172e-03, + 4.249558851222779397e-03, + 4.248638281078069567e-03, + 4.247710854046992009e-03, + 4.246776571962198807e-03, + 4.245835436667387899e-03, + 4.244887450017339504e-03, + 4.243932613877851937e-03, + 4.242970930125745076e-03, + 4.242002400648899399e-03, + 4.241027027346212612e-03, + 4.240044812127603986e-03, + 4.239055756914054257e-03, + 4.238059863637472918e-03, + 4.237057134240915929e-03, + 4.236047570678331577e-03, + 4.235031174914733951e-03, + 4.234007948926142226e-03, + 4.232977894699557243e-03, + 4.231941014232984064e-03, + 4.230897309535431965e-03, + 4.229846782626892759e-03, + 4.228789435538335591e-03, + 4.227725270311726014e-03, + 4.226654288999981759e-03, + 4.225576493667037789e-03, + 4.224491886387769096e-03, + 4.223400469247983770e-03, + 4.222302244344554832e-03, + 4.221197213785208603e-03, + 4.220085379688653070e-03, + 4.218966744184626458e-03, + 4.217841309413653504e-03, + 4.216709077527393268e-03, + 4.215570050688303462e-03, + 4.214424231069803517e-03, + 4.213271620856293663e-03, + 4.212112222243043907e-03, + 4.210946037436266026e-03, + 4.209773068653104022e-03, + 4.208593318121615044e-03, + 4.207406788080749437e-03, + 4.206213480780375893e-03, + 4.205013398481241560e-03, + 4.203806543455032747e-03, + 4.202592917984309881e-03, + 4.201372524362473673e-03, + 4.200145364893915177e-03, + 4.198911441893814558e-03, + 4.197670757688241709e-03, + 4.196423314614203086e-03, + 4.195169115019469971e-03, + 4.193908161262793581e-03, + 4.192640455713679548e-03, + 4.191366000752548386e-03, + 4.190084798770662630e-03, + 4.188796852170119031e-03, + 4.187502163363845085e-03, + 4.186200734775631128e-03, + 4.184892568840083496e-03, + 4.183577668002667026e-03, + 4.182256034719637403e-03, + 4.180927671458022944e-03, + 4.179592580695818890e-03, + 4.178250764921658672e-03, + 4.176902226635045498e-03, + 4.175546968346376640e-03, + 4.174184992576698838e-03, + 4.172816301857900853e-03, + 4.171440898732719539e-03, + 4.170058785754597597e-03, + 4.168669965487798931e-03, + 4.167274440507340132e-03, + 4.165872213399005215e-03, + 4.164463286759367312e-03, + 4.163047663195736624e-03, + 4.161625345326155218e-03, + 4.160196335779469019e-03, + 4.158760637195261026e-03, + 4.157318252223751558e-03, + 4.155869183526078418e-03, + 4.154413433773915254e-03, + 4.152951005649849724e-03, + 4.151481901847037422e-03, + 4.150006125069396166e-03, + 4.148523678031615543e-03, + 4.147034563459011183e-03, + 4.145538784087614108e-03, + 4.144036342664206285e-03, + 4.142527241946190528e-03, + 4.141011484701704985e-03, + 4.139489073709550285e-03, + 4.137960011759177388e-03, + 4.136424301650779532e-03, + 4.134881946195147380e-03, + 4.133332948213708051e-03, + 4.131777310538683849e-03, + 4.130215036012789553e-03, + 4.128646127489440584e-03, + 4.127070587832777290e-03, + 4.125488419917408209e-03, + 4.123899626628758745e-03, + 4.122304210862724229e-03, + 4.120702175525872007e-03, + 4.119093523535439713e-03, + 4.117478257819201688e-03, + 4.115856381315553987e-03, + 4.114227896973504835e-03, + 4.112592807752644269e-03, + 4.110951116623182307e-03, + 4.109302826565858734e-03, + 4.107647940572010763e-03, + 4.105986461643583441e-03, + 4.104318392793055922e-03, + 4.102643737043394634e-03, + 4.100962497428316082e-03, + 4.099274676991896543e-03, + 4.097580278788825331e-03, + 4.095879305884373572e-03, + 4.094171761354273645e-03, + 4.092457648284849279e-03, + 4.090736969772914081e-03, + 4.089009728925770658e-03, + 4.087275928861308638e-03, + 4.085535572707870225e-03, + 4.083788663604283158e-03, + 4.082035204699944846e-03, + 4.080275199154635019e-03, + 4.078508650138740373e-03, + 4.076735560833048139e-03, + 4.074955934428759960e-03, + 4.073169774127706130e-03, + 4.071377083142069774e-03, + 4.069577864694448426e-03, + 4.067772122018036181e-03, + 4.065959858356322718e-03, + 4.064141076963295393e-03, + 4.062315781103415825e-03, + 4.060483974051488920e-03, + 4.058645659092817264e-03, + 4.056800839523081424e-03, + 4.054949518648339087e-03, + 4.053091699785136073e-03, + 4.051227386260334608e-03, + 4.049356581411212193e-03, + 4.047479288585470285e-03, + 4.045595511141118934e-03, + 4.043705252446628574e-03, + 4.041808515880782569e-03, + 4.039905304832655530e-03, + 4.037995622701890872e-03, + 4.036079472898241108e-03, + 4.034156858841924341e-03, + 4.032227783963515839e-03, + 4.030292251703869975e-03, + 4.028350265514151450e-03, + 4.026401828855942847e-03, + 4.024446945201000034e-03, + 4.022485618031524518e-03, + 4.020517850839937929e-03, + 4.018543647128920183e-03, + 4.016563010411563876e-03, + 4.014575944211159174e-03, + 4.012582452061197284e-03, + 4.010582537505672299e-03, + 4.008576204098549499e-03, + 4.006563455404326540e-03, + 4.004544294997584158e-03, + 4.002518726463117141e-03, + 4.000486753396148565e-03, + 3.998448379401948159e-03, + 3.996403608096057818e-03, + 3.994352443104321089e-03, + 3.992294888062705369e-03, + 3.990230946617396440e-03, + 3.988160622424834906e-03, + 3.986083919151578274e-03, + 3.984000840474462291e-03, + 3.981911390080419659e-03, + 3.979815571666584124e-03, + 3.977713388940293943e-03, + 3.975604845619024226e-03, + 3.973489945430319289e-03, + 3.971368692112078880e-03, + 3.969241089412083728e-03, + 3.967107141088525510e-03, + 3.964966850909501170e-03, + 3.962820222653296552e-03, + 3.960667260108387266e-03, + 3.958507967073279094e-03, + 3.956342347356577374e-03, + 3.954170404777043388e-03, + 3.951992143163481595e-03, + 3.949807566354759589e-03, + 3.947616678199896562e-03, + 3.945419482557888102e-03, + 3.943215983297884870e-03, + 3.941006184299038206e-03, + 3.938790089450476713e-03, + 3.936567702651547380e-03, + 3.934339027811523289e-03, + 3.932104068849618349e-03, + 3.929862829695309964e-03, + 3.927615314287799531e-03, + 3.925361526576589231e-03, + 3.923101470520934733e-03, + 3.920835150090182589e-03, + 3.918562569263727736e-03, + 3.916283732030846100e-03, + 3.913998642390813416e-03, + 3.911707304352935594e-03, + 3.909409721936390851e-03, + 3.907105899170326864e-03, + 3.904795840093918443e-03, + 3.902479548756135948e-03, + 3.900157029216029352e-03, + 3.897828285542491011e-03, + 3.895493321814244396e-03, + 3.893152142120161110e-03, + 3.890804750558786874e-03, + 3.888451151238649008e-03, + 3.886091348278203524e-03, + 3.883725345805721929e-03, + 3.881353147959350214e-03, + 3.878974758887178669e-03, + 3.876590182747046733e-03, + 3.874199423706771537e-03, + 3.871802485943907218e-03, + 3.869399373645862009e-03, + 3.866990091009942475e-03, + 3.864574642243247260e-03, + 3.862153031562561706e-03, + 3.859725263194737754e-03, + 3.857291341376195646e-03, + 3.854851270353300361e-03, + 3.852405054382139135e-03, + 3.849952697728475058e-03, + 3.847494204668113534e-03, + 3.845029579486352374e-03, + 3.842558826478358232e-03, + 3.840081949949095477e-03, + 3.837598954213196096e-03, + 3.835109843595011728e-03, + 3.832614622428727729e-03, + 3.830113295058110764e-03, + 3.827605865836778993e-03, + 3.825092339127941863e-03, + 3.822572719304528042e-03, + 3.820047010749239632e-03, + 3.817515217854393437e-03, + 3.814977345021865456e-03, + 3.812433396663487267e-03, + 3.809883377200412417e-03, + 3.807327291063792966e-03, + 3.804765142694113787e-03, + 3.802196936541634049e-03, + 3.799622677066293985e-03, + 3.797042368737562224e-03, + 3.794456016034519503e-03, + 3.791863623445952333e-03, + 3.789265195470139201e-03, + 3.786660736614960287e-03, + 3.784050251397956446e-03, + 3.781433744346131016e-03, + 3.778811219996177934e-03, + 3.776182682894254055e-03, + 3.773548137596057644e-03, + 3.770907588666929863e-03, + 3.768261040681693437e-03, + 3.765608498224565486e-03, + 3.762949965889582100e-03, + 3.760285448279948248e-03, + 3.757614950008696976e-03, + 3.754938475698094830e-03, + 3.752256029979996604e-03, + 3.749567617495790268e-03, + 3.746873242896278135e-03, + 3.744172910841669488e-03, + 3.741466626001773571e-03, + 3.738754393055728539e-03, + 3.736036216692119848e-03, + 3.733312101609047914e-03, + 3.730582052513929919e-03, + 3.727846074123700171e-03, + 3.725104171164646174e-03, + 3.722356348372335769e-03, + 3.719602610492040405e-03, + 3.716842962278094162e-03, + 3.714077408494333501e-03, + 3.711305953914024840e-03, + 3.708528603319660288e-03, + 3.705745361503214822e-03, + 3.702956233265899955e-03, + 3.700161223418289066e-03, + 3.697360336780339089e-03, + 3.694553578181247397e-03, + 3.691740952459518152e-03, + 3.688922464463046010e-03, + 3.686098119048960859e-03, + 3.683267921083548894e-03, + 3.680431875442655935e-03, + 3.677589987011128415e-03, + 3.674742260683240124e-03, + 3.671888701362458450e-03, + 3.669029313961367621e-03, + 3.666164103402067692e-03, + 3.663293074615609889e-03, + 3.660416232542371747e-03, + 3.657533582131986417e-03, + 3.654645128343183939e-03, + 3.651750876144008520e-03, + 3.648850830511562223e-03, + 3.645944996432166733e-03, + 3.643033378901368129e-03, + 3.640115982923792029e-03, + 3.637192813513202578e-03, + 3.634263875692611730e-03, + 3.631329174494079756e-03, + 3.628388714958685323e-03, + 3.625442502136914935e-03, + 3.622490541087992465e-03, + 3.619532836880621184e-03, + 3.616569394592259942e-03, + 3.613600219309596757e-03, + 3.610625316128442553e-03, + 3.607644690153566803e-03, + 3.604658346498791632e-03, + 3.601666290287098941e-03, + 3.598668526650360220e-03, + 3.595665060729596758e-03, + 3.592655897674781884e-03, + 3.589641042644862653e-03, + 3.586620500807907730e-03, + 3.583594277340861924e-03, + 3.580562377429655045e-03, + 3.577524806269326372e-03, + 3.574481569063739286e-03, + 3.571432671025667142e-03, + 3.568378117377088606e-03, + 3.565317913348573127e-03, + 3.562252064179989575e-03, + 3.559180575119804540e-03, + 3.556103451425529031e-03, + 3.553020698363646476e-03, + 3.549932321209429281e-03, + 3.546838325247037276e-03, + 3.543738715769585799e-03, + 3.540633498079003884e-03, + 3.537522677486022119e-03, + 3.534406259310365634e-03, + 3.531284248880426236e-03, + 3.528156651533600249e-03, + 3.525023472616003583e-03, + 3.521884717482456125e-03, + 3.518740391496898070e-03, + 3.515590500031725955e-03, + 3.512435048468270579e-03, + 3.509274042196695951e-03, + 3.506107486615770742e-03, + 3.502935387133281151e-03, + 3.499757749165470586e-03, + 3.496574578137439087e-03, + 3.493385879483094317e-03, + 3.490191658644970722e-03, + 3.486991921074293708e-03, + 3.483786672231108453e-03, + 3.480575917584042243e-03, + 3.477359662610410296e-03, + 3.474137912796308129e-03, + 3.470910673636337044e-03, + 3.467677950633922014e-03, + 3.464439749301052775e-03, + 3.461196075158197525e-03, + 3.457946933734828976e-03, + 3.454692330568670186e-03, + 3.451432271206201965e-03, + 3.448166761202567463e-03, + 3.444895806121359670e-03, + 3.441619411534898535e-03, + 3.438337583023959483e-03, + 3.435050326177885738e-03, + 3.431757646594685036e-03, + 3.428459549880774181e-03, + 3.425156041651134745e-03, + 3.421847127529351659e-03, + 3.418532813147488747e-03, + 3.415213104145917861e-03, + 3.411888006173908246e-03, + 3.408557524888759620e-03, + 3.405221665956692945e-03, + 3.401880435052019938e-03, + 3.398533837857626184e-03, + 3.395181880065062212e-03, + 3.391824567373989685e-03, + 3.388461905492618116e-03, + 3.385093900137684918e-03, + 3.381720557034170911e-03, + 3.378341881915599126e-03, + 3.374957880523767658e-03, + 3.371568558608865028e-03, + 3.368173921929553446e-03, + 3.364773976252738528e-03, + 3.361368727353684655e-03, + 3.357958181016098675e-03, + 3.354542343031957294e-03, + 3.351121219201378711e-03, + 3.347694815333194639e-03, + 3.344263137244074709e-03, + 3.340826190759427217e-03, + 3.337383981712563862e-03, + 3.333936515945239674e-03, + 3.330483799307509037e-03, + 3.327025837657602084e-03, + 3.323562636861957659e-03, + 3.320094202795364265e-03, + 3.316620541340713733e-03, + 3.313141658389221963e-03, + 3.309657559840198209e-03, + 3.306168251601170407e-03, + 3.302673739587918145e-03, + 3.299174029724363799e-03, + 3.295669127942398198e-03, + 3.292159040182469128e-03, + 3.288643772392765147e-03, + 3.285123330529786737e-03, + 3.281597720558201026e-03, + 3.278066948450617576e-03, + 3.274531020188050680e-03, + 3.270989941759233285e-03, + 3.267443719161161261e-03, + 3.263892358398980641e-03, + 3.260335865485762975e-03, + 3.256774246442637605e-03, + 3.253207507298897915e-03, + 3.249635654091705128e-03, + 3.246058692866389279e-03, + 3.242476629676184236e-03, + 3.238889470582316608e-03, + 3.235297221654132374e-03, + 3.231699888968850992e-03, + 3.228097478611530267e-03, + 3.224489996675565517e-03, + 3.220877449261917193e-03, + 3.217259842479624349e-03, + 3.213637182445744367e-03, + 3.210009475285094047e-03, + 3.206376727130554917e-03, + 3.202738944122782670e-03, + 3.199096132410318618e-03, + 3.195448298149698111e-03, + 3.191795447505219388e-03, + 3.188137586648996918e-03, + 3.184474721761155688e-03, + 3.180806859029469951e-03, + 3.177134004649695420e-03, + 3.173456164825327712e-03, + 3.169773345767519079e-03, + 3.166085553695575407e-03, + 3.162392794836233270e-03, + 3.158695075424072796e-03, + 3.154992401701724528e-03, + 3.151284779919171636e-03, + 3.147572216334297655e-03, + 3.143854717212824466e-03, + 3.140132288828009158e-03, + 3.136404937460990101e-03, + 3.132672669400463419e-03, + 3.128935490942840857e-03, + 3.125193408392297912e-03, + 3.121446428060596027e-03, + 3.117694556267108178e-03, + 3.113937799339013598e-03, + 3.110176163611024121e-03, + 3.106409655425292678e-03, + 3.102638281132030426e-03, + 3.098862047088542671e-03, + 3.095080959660223303e-03, + 3.091295025219613270e-03, + 3.087504250147028555e-03, + 3.083708640830389296e-03, + 3.079908203665068442e-03, + 3.076102945053951591e-03, + 3.072292871407587053e-03, + 3.068477989143887467e-03, + 3.064658304688413874e-03, + 3.060833824474111595e-03, + 3.057004554941401744e-03, + 3.053170502538306123e-03, + 3.049331673720239496e-03, + 3.045488074949866467e-03, + 3.041639712697747234e-03, + 3.037786593441430764e-03, + 3.033928723666017273e-03, + 3.030066109864273591e-03, + 3.026198758535881151e-03, + 3.022326676188446474e-03, + 3.018449869336487217e-03, + 3.014568344502079663e-03, + 3.010682108214738154e-03, + 3.006791167011189578e-03, + 3.002895527435485261e-03, + 2.998995196039135405e-03, + 2.995090179380777758e-03, + 2.991180484026528027e-03, + 2.987266116549659820e-03, + 2.983347083530714372e-03, + 2.979423391557644088e-03, + 2.975495047225547567e-03, + 2.971562057136610622e-03, + 2.967624427900680470e-03, + 2.963682166134389267e-03, + 2.959735278461740875e-03, + 2.955783771514059691e-03, + 2.951827651929649337e-03, + 2.947866926354170396e-03, + 2.943901601440342478e-03, + 2.939931683848005361e-03, + 2.935957180244290303e-03, + 2.931978097303333374e-03, + 2.927994441706389950e-03, + 2.924006220141940095e-03, + 2.920013439305410574e-03, + 2.916016105899474960e-03, + 2.912014226633793425e-03, + 2.908007808224926868e-03, + 2.903996857396937571e-03, + 2.899981380880449402e-03, + 2.895961385413292274e-03, + 2.891936877740563724e-03, + 2.887907864613964079e-03, + 2.883874352792390600e-03, + 2.879836349041785259e-03, + 2.875793860134910097e-03, + 2.871746892851659034e-03, + 2.867695453978743453e-03, + 2.863639550309818836e-03, + 2.859579188645609664e-03, + 2.855514375793598032e-03, + 2.851445118568202326e-03, + 2.847371423790853989e-03, + 2.843293298289703477e-03, + 2.839210748899925578e-03, + 2.835123782463485655e-03, + 2.831032405829027754e-03, + 2.826936625852462248e-03, + 2.822836449396085891e-03, + 2.818731883329183337e-03, + 2.814622934527939106e-03, + 2.810509609875202954e-03, + 2.806391916260587028e-03, + 2.802269860580618947e-03, + 2.798143449738390957e-03, + 2.794012690643946778e-03, + 2.789877590213896922e-03, + 2.785738155371594339e-03, + 2.781594393047244571e-03, + 2.777446310177641639e-03, + 2.773293913706101257e-03, + 2.769137210583061913e-03, + 2.764976207765082201e-03, + 2.760810912215877315e-03, + 2.756641330905535824e-03, + 2.752467470810624189e-03, + 2.748289338914801719e-03, + 2.744106942207860840e-03, + 2.739920287686378481e-03, + 2.735729382353604185e-03, + 2.731534233219228957e-03, + 2.727334847299504091e-03, + 2.723131231617343089e-03, + 2.718923393202045402e-03, + 2.714711339089600009e-03, + 2.710495076322370998e-03, + 2.706274611949225934e-03, + 2.702049953025668569e-03, + 2.697821106613574292e-03, + 2.693588079781096458e-03, + 2.689350879603329483e-03, + 2.685109513161227680e-03, + 2.680863987542754946e-03, + 2.676614309841797087e-03, + 2.672360487158875666e-03, + 2.668102526600964544e-03, + 2.663840435281297336e-03, + 2.659574220319471920e-03, + 2.655303888841591825e-03, + 2.651029447979972187e-03, + 2.646750904873242105e-03, + 2.642468266666515506e-03, + 2.638181540511031192e-03, + 2.633890733564499351e-03, + 2.629595852990837014e-03, + 2.625296905960043583e-03, + 2.620993899648818397e-03, + 2.616686841239800922e-03, + 2.612375737921762437e-03, + 2.608060596890161582e-03, + 2.603741425346088774e-03, + 2.599418230497429778e-03, + 2.595091019557790608e-03, + 2.590759799747130269e-03, + 2.586424578291678794e-03, + 2.582085362423673994e-03, + 2.577742159381510648e-03, + 2.573394976409841984e-03, + 2.569043820759314700e-03, + 2.564688699686672180e-03, + 2.560329620454895438e-03, + 2.555966590332871356e-03, + 2.551599616595737891e-03, + 2.547228706524596112e-03, + 2.542853867406406985e-03, + 2.538475106534646662e-03, + 2.534092431208334606e-03, + 2.529705848732685843e-03, + 2.525315366419029432e-03, + 2.520920991584515297e-03, + 2.516522731552273823e-03, + 2.512120593651552027e-03, + 2.507714585217345367e-03, + 2.503304713590775912e-03, + 2.498890986118764042e-03, + 2.494473410154118657e-03, + 2.490051993055715420e-03, + 2.485626742188213559e-03, + 2.481197664921958295e-03, + 2.476764768633594061e-03, + 2.472328060705232273e-03, + 2.467887548525061082e-03, + 2.463443239486999732e-03, + 2.458995140990594044e-03, + 2.454543260441681678e-03, + 2.450087605251392939e-03, + 2.445628182836837722e-03, + 2.441165000620994056e-03, + 2.436698066032434891e-03, + 2.432227386505492889e-03, + 2.427752969480363645e-03, + 2.423274822402760043e-03, + 2.418792952724302999e-03, + 2.414307367902171486e-03, + 2.409818075399190566e-03, + 2.405325082684030020e-03, + 2.400828397230910741e-03, + 2.396328026519473336e-03, + 2.391823978035524916e-03, + 2.387316259269858191e-03, + 2.382804877719486153e-03, + 2.378289840886521015e-03, + 2.373771156278839910e-03, + 2.369248831409989913e-03, + 2.364722873798939112e-03, + 2.360193290970173750e-03, + 2.355660090453883838e-03, + 2.351123279785615350e-03, + 2.346582866506422439e-03, + 2.342038858162997974e-03, + 2.337491262307322265e-03, + 2.332940086497029952e-03, + 2.328385338295138086e-03, + 2.323827025269875699e-03, + 2.319265154995368144e-03, + 2.314699735050862114e-03, + 2.310130773020840564e-03, + 2.305558276495702288e-03, + 2.300982253070606165e-03, + 2.296402710346692830e-03, + 2.291819655929953209e-03, + 2.287233097431911992e-03, + 2.282643042469533097e-03, + 2.278049498664948182e-03, + 2.273452473645581548e-03, + 2.268851975044315801e-03, + 2.264248010499143177e-03, + 2.259640587653344215e-03, + 2.255029714155580567e-03, + 2.250415397659563232e-03, + 2.245797645824445035e-03, + 2.241176466314480191e-03, + 2.236551866798921519e-03, + 2.231923854952725175e-03, + 2.227292438455509820e-03, + 2.222657624992277828e-03, + 2.218019422253263498e-03, + 2.213377837933652031e-03, + 2.208732879733963771e-03, + 2.204084555359655216e-03, + 2.199432872521305503e-03, + 2.194777838934735235e-03, + 2.190119462320673852e-03, + 2.185457750404923988e-03, + 2.180792710918479441e-03, + 2.176124351597290979e-03, + 2.171452680182106316e-03, + 2.166777704419150553e-03, + 2.162099432059251449e-03, + 2.157417870858458712e-03, + 2.152733028577713970e-03, + 2.148044912982687710e-03, + 2.143353531844537346e-03, + 2.138658892938821287e-03, + 2.133961004046235760e-03, + 2.129259872952483403e-03, + 2.124555507447956244e-03, + 2.119847915328145968e-03, + 2.115137104393245357e-03, + 2.110423082448305288e-03, + 2.105705857303391288e-03, + 2.100985436773231824e-03, + 2.096261828677365747e-03, + 2.091535040840311003e-03, + 2.086805081091267985e-03, + 2.082071957264003750e-03, + 2.077335677197575392e-03, + 2.072596248735168647e-03, + 2.067853679725335184e-03, + 2.063107978020832078e-03, + 2.058359151479340413e-03, + 2.053607207963352530e-03, + 2.048852155339881461e-03, + 2.044094001480621387e-03, + 2.039332754262090323e-03, + 2.034568421565240235e-03, + 2.029801011275875981e-03, + 2.025030531284256318e-03, + 2.020256989485267381e-03, + 2.015480393778538038e-03, + 2.010700752068125905e-03, + 2.005918072262666101e-03, + 2.001132362275502216e-03, + 1.996343630024426542e-03, + 1.991551883431535649e-03, + 1.986757130423994107e-03, + 1.981959378932826674e-03, + 1.977158636894182486e-03, + 1.972354912248174951e-03, + 1.967548212939584755e-03, + 1.962738546917752736e-03, + 1.957925922136301896e-03, + 1.953110346553285940e-03, + 1.948291828131334773e-03, + 1.943470374837306036e-03, + 1.938645994642457715e-03, + 1.933818695522581494e-03, + 1.928988485457612447e-03, + 1.924155372432048618e-03, + 1.919319364434622296e-03, + 1.914480469458158633e-03, + 1.909638695500349764e-03, + 1.904794050562626153e-03, + 1.899946542650927245e-03, + 1.895096179775565938e-03, + 1.890242969950842612e-03, + 1.885386921195732939e-03, + 1.880528041532948105e-03, + 1.875666338989642789e-03, + 1.870801821597280071e-03, + 1.865934497391346942e-03, + 1.861064374411508689e-03, + 1.856191460701754614e-03, + 1.851315764310119830e-03, + 1.846437293288556453e-03, + 1.841556055693627280e-03, + 1.836672059585577272e-03, + 1.831785313029012053e-03, + 1.826895824092514969e-03, + 1.822003600848522619e-03, + 1.817108651374071656e-03, + 1.812210983749705257e-03, + 1.807310606060202581e-03, + 1.802407526394475329e-03, + 1.797501752845221019e-03, + 1.792593293509349298e-03, + 1.787682156487570154e-03, + 1.782768349884576286e-03, + 1.777851881809159327e-03, + 1.772932760373886101e-03, + 1.768010993695257136e-03, + 1.763086589893835248e-03, + 1.758159557093975141e-03, + 1.753229903423695257e-03, + 1.748297637015441266e-03, + 1.743362766004839890e-03, + 1.738425298532034636e-03, + 1.733485242740440049e-03, + 1.728542606777517133e-03, + 1.723597398794628503e-03, + 1.718649626946771236e-03, + 1.713699299392708493e-03, + 1.708746424295141259e-03, + 1.703791009820295257e-03, + 1.698833064138354203e-03, + 1.693872595423051922e-03, + 1.688909611851846472e-03, + 1.683944121606031387e-03, + 1.678976132870446626e-03, + 1.674005653833581138e-03, + 1.669032692687747420e-03, + 1.664057257628797888e-03, + 1.659079356855983935e-03, + 1.654098998572718334e-03, + 1.649116190985372215e-03, + 1.644130942304543362e-03, + 1.639143260743869445e-03, + 1.634153154520766793e-03, + 1.629160631856298126e-03, + 1.624165700974901285e-03, + 1.619168370104537551e-03, + 1.614168647476839531e-03, + 1.609166541326702412e-03, + 1.604162059892737593e-03, + 1.599155211416842257e-03, + 1.594146004144370455e-03, + 1.589134446324288368e-03, + 1.584120546208867041e-03, + 1.579104312053568543e-03, + 1.574085752117813583e-03, + 1.569064874663843312e-03, + 1.564041687957504938e-03, + 1.559016200268100154e-03, + 1.553988419868008487e-03, + 1.548958355033370343e-03, + 1.543926014043162402e-03, + 1.538891405179864183e-03, + 1.533854536729373046e-03, + 1.528815416980682180e-03, + 1.523774054226059065e-03, + 1.518730456761176878e-03, + 1.513684632884729599e-03, + 1.508636590898845527e-03, + 1.503586339108701087e-03, + 1.498533885822660042e-03, + 1.493479239352441326e-03, + 1.488422408012812651e-03, + 1.483363400121474928e-03, + 1.478302223999824029e-03, + 1.473238887971825171e-03, + 1.468173400364779658e-03, + 1.463105769509194347e-03, + 1.458036003738440341e-03, + 1.452964111389182114e-03, + 1.447890100800977879e-03, + 1.442813980316419659e-03, + 1.437735758281312838e-03, + 1.432655443044291484e-03, + 1.427573042957009167e-03, + 1.422488566374264726e-03, + 1.417402021653614346e-03, + 1.412313417155798946e-03, + 1.407222761244385310e-03, + 1.402130062285671976e-03, + 1.397035328649411752e-03, + 1.391938568707721223e-03, + 1.386839790835767486e-03, + 1.381739003411947475e-03, + 1.376636214817000001e-03, + 1.371531433434745179e-03, + 1.366424667651967547e-03, + 1.361315925858029227e-03, + 1.356205216445340467e-03, + 1.351092547808936803e-03, + 1.345977928346635396e-03, + 1.340861366459190516e-03, + 1.335742870549945071e-03, + 1.330622449024979363e-03, + 1.325500110293270899e-03, + 1.320375862766402309e-03, + 1.315249714858426466e-03, + 1.310121674986645599e-03, + 1.304991751570359036e-03, + 1.299859953032202848e-03, + 1.294726287796893038e-03, + 1.289590764291997493e-03, + 1.284453390947824314e-03, + 1.279314176197101976e-03, + 1.274173128475159303e-03, + 1.269030256220064030e-03, + 1.263885567872220566e-03, + 1.258739071874812564e-03, + 1.253590776673379863e-03, + 1.248440690715987194e-03, + 1.243288822453376833e-03, + 1.238135180338665459e-03, + 1.232979772827227493e-03, + 1.227822608377462715e-03, + 1.222663695449659150e-03, + 1.217503042506767842e-03, + 1.212340658014276649e-03, + 1.207176550439796082e-03, + 1.202010728253798295e-03, + 1.196843199928604657e-03, + 1.191673973939147511e-03, + 1.186503058762827714e-03, + 1.181330462879201298e-03, + 1.176156194770168559e-03, + 1.170980262920100472e-03, + 1.165802675815442091e-03, + 1.160623441945148613e-03, + 1.155442569800276854e-03, + 1.150260067874140073e-03, + 1.145075944662467130e-03, + 1.139890208663099994e-03, + 1.134702868375864508e-03, + 1.129513932303361206e-03, + 1.124323408949808902e-03, + 1.119131306821819893e-03, + 1.113937634428290241e-03, + 1.108742400280025723e-03, + 1.103545612890195022e-03, + 1.098347280773912752e-03, + 1.093147412448394491e-03, + 1.087946016433117896e-03, + 1.082743101249470773e-03, + 1.077538675420890071e-03, + 1.072332747473042722e-03, + 1.067125325933398691e-03, + 1.061916419331670721e-03, + 1.056706036199470860e-03, + 1.051494185070170817e-03, + 1.046280874479693429e-03, + 1.041066112965346926e-03, + 1.035849909066569128e-03, + 1.030632271325077716e-03, + 1.025413208283991592e-03, + 1.020192728488568358e-03, + 1.014970840486080278e-03, + 1.009747552825442833e-03, + 1.004522874057668788e-03, + 9.992968127354533679e-04, + 9.940693774133299576e-04, + 9.888405766478292579e-04, + 9.836104189971160792e-04, + 9.783789130211539235e-04, + 9.731460672818593744e-04, + 9.679118903426922691e-04, + 9.626763907690890536e-04, + 9.574395771281205003e-04, + 9.522014579883456660e-04, + 9.469620419206166949e-04, + 9.417213374969025681e-04, + 9.364793532910939064e-04, + 9.312360978788626750e-04, + 9.259915798373663043e-04, + 9.207458077454008880e-04, + 9.154987901835681501e-04, + 9.102505357338485942e-04, + 9.050010529800584956e-04, + 8.997503505074284707e-04, + 8.944984369027513633e-04, + 8.892453207545639561e-04, + 8.839910106528234453e-04, + 8.787355151887863347e-04, + 8.734788429558084689e-04, + 8.682210025480487613e-04, + 8.629620025617930042e-04, + 8.577018515944552111e-04, + 8.524405582447298381e-04, + 8.471781311133419435e-04, + 8.419145788018671424e-04, + 8.366499099135315306e-04, + 8.313841330530764850e-04, + 8.261172568264674469e-04, + 8.208492898410407225e-04, + 8.155802407056640538e-04, + 8.103101180303289583e-04, + 8.050389304265899394e-04, + 7.997666865071415389e-04, + 7.944933948859908340e-04, + 7.892190641786068399e-04, + 7.839437030016230051e-04, + 7.786673199726942048e-04, + 7.733899237113192170e-04, + 7.681115228375252598e-04, + 7.628321259732615163e-04, + 7.575517417411029714e-04, + 7.522703787650437219e-04, + 7.469880456703850875e-04, + 7.417047510834098075e-04, + 7.364205036315536702e-04, + 7.311353119435632644e-04, + 7.258491846491338557e-04, + 7.205621303790698488e-04, + 7.152741577654426466e-04, + 7.099852754411720406e-04, + 7.046954920404808163e-04, + 6.994048161985221132e-04, + 6.941132565512544159e-04, + 6.888208217362482011e-04, + 6.835275203914960252e-04, + 6.782333611561617084e-04, + 6.729383526707457836e-04, + 6.676425035760671055e-04, + 6.623458225146057433e-04, + 6.570483181291921805e-04, + 6.517499990638192736e-04, + 6.464508739635053177e-04, + 6.411509514739950231e-04, + 6.358502402419104367e-04, + 6.305487489149233299e-04, + 6.252464861413844013e-04, + 6.199434605704801614e-04, + 6.146396808524081387e-04, + 6.093351556379359357e-04, + 6.040298935788687359e-04, + 5.987239033276797002e-04, + 5.934171935373754167e-04, + 5.881097728623078599e-04, + 5.828016499569828529e-04, + 5.774928334768687733e-04, + 5.721833320782674249e-04, + 5.668731544180041727e-04, + 5.615623091535878629e-04, + 5.562508049433789823e-04, + 5.509386504461579294e-04, + 5.456258543215874264e-04, + 5.403124252297771034e-04, + 5.349983718314587060e-04, + 5.296837027881369075e-04, + 5.243684267617902857e-04, + 5.190525524147297266e-04, + 5.137360884104201410e-04, + 5.084190434121609904e-04, + 5.031014260844296135e-04, + 4.977832450918699908e-04, + 4.924645090994486532e-04, + 4.871452267732135689e-04, + 4.818254067790929017e-04, + 4.765050577837161858e-04, + 4.711841884542739218e-04, + 4.658628074582115059e-04, + 4.605409234633959267e-04, + 4.552185451382714560e-04, + 4.498956811514374606e-04, + 4.445723401721043641e-04, + 4.392485308696700481e-04, + 4.339242619138754904e-04, + 4.285995419749769357e-04, + 4.232743797234281161e-04, + 4.179487838297523696e-04, + 4.126227629653575805e-04, + 4.072963258012169763e-04, + 4.019694810092778320e-04, + 3.966422372611427003e-04, + 3.913146032288862498e-04, + 3.859865875849243476e-04, + 3.806581990017003994e-04, + 3.753294461518476006e-04, + 3.700003377083600775e-04, + 3.646708823442155307e-04, + 3.593410887325411180e-04, + 3.540109655467799880e-04, + 3.486805214602593881e-04, + 3.433497651466515589e-04, + 3.380187052796038041e-04, + 3.326873505326056763e-04, + 3.273557095797466170e-04, + 3.220237910948114068e-04, + 3.166916037514435549e-04, + 3.113591562239053788e-04, + 3.060264571857537600e-04, + 3.006935153112545939e-04, + 2.953603392740603885e-04, + 2.900269377480286744e-04, + 2.846933194070879435e-04, + 2.793594929249277291e-04, + 2.740254669751622670e-04, + 2.686912502314946433e-04, + 2.633568513673461599e-04, + 2.580222790560198322e-04, + 2.526875419708664349e-04, + 2.473526487848530975e-04, + 2.420176081710243075e-04, + 2.366824288021324954e-04, + 2.313471193505030245e-04, + 2.260116884888550132e-04, + 2.206761448890962984e-04, + 2.153404972231429029e-04, + 2.100047541627846483e-04, + 2.046689243793157131e-04, + 1.993330165439957441e-04, + 1.939970393276187232e-04, + 1.886610014006785522e-04, + 1.833249114335337162e-04, + 1.779887780960339653e-04, + 1.726526100576874991e-04, + 1.673164159878238132e-04, + 1.619802045552815582e-04, + 1.566439844282780281e-04, + 1.513077642751656086e-04, + 1.459715527634081005e-04, + 1.406353585603397965e-04, + 1.352991903327345653e-04, + 1.299630567466727386e-04, + 1.246269664683608220e-04, + 1.192909281629264315e-04, + 1.139549504952378016e-04, + 1.086190421297709426e-04, + 1.032832117302380449e-04, + 9.794746796004986326e-05, + 9.261181948188476035e-05, + 8.727627495785354619e-05, + 8.194084304966372113e-05, + 7.660553241824861093e-05, + 7.127035172393154211e-05, + 6.593530962659062715e-05, + 6.060041478534678523e-05, + 5.526567585843155777e-05, + 4.993110150400467809e-05, + 4.459670037883274070e-05, + 3.926248113970162538e-05, + 3.392845244209439392e-05, + 2.859462294101006264e-05, + 2.326100129083040480e-05, + 1.792759614500860838e-05, + 1.259441615623369874e-05, + 7.261469976594912947e-06, + 1.928766257151394811e-06, +-3.403686351606035826e-06, +-8.735879200185260943e-06, +-1.406780363992831378e-05, +-1.939945102284720821e-05, +-2.473081270193512251e-05, +-3.006188003129923577e-05, +-3.539264436540208957e-05, +-4.072309705996710857e-05, +-4.605322947181434730e-05, +-5.138303295810170781e-05, +-5.671249887764669400e-05, +-6.204161858951362160e-05, +-6.737038345433588407e-05, +-7.269878483349669551e-05, +-7.802681408926336916e-05, +-8.335446258509727720e-05, +-8.868172168548991941e-05, +-9.400858275579905955e-05, +-9.933503716261860093e-05, +-1.046610762736147093e-04, +-1.099866914573611765e-04, +-1.153118740837700526e-04, +-1.206366155236289619e-04, +-1.259609071489730932e-04, +-1.312847403332168623e-04, +-1.366081064503367763e-04, +-1.419309968760728647e-04, +-1.472534029871118552e-04, +-1.525753161612189586e-04, +-1.578967277776090455e-04, +-1.632176292164852906e-04, +-1.685380118594679210e-04, +-1.738578670894320197e-04, +-1.791771862903402865e-04, +-1.844959608476163843e-04, +-1.898141821479788110e-04, +-1.951318415792781345e-04, +-2.004489305308045804e-04, +-2.057654403934260784e-04, +-2.110813625588244143e-04, +-2.163966884205232167e-04, +-2.217114093731283649e-04, +-2.270255168127558148e-04, +-2.323390021371664197e-04, +-2.376518567449482249e-04, +-2.429640720367178723e-04, +-2.482756394143018379e-04, +-2.535865502808714689e-04, +-2.588967960413103390e-04, +-2.642063681017565524e-04, +-2.695152578700284554e-04, +-2.748234567554638493e-04, +-2.801309561687540537e-04, +-2.854377475223123179e-04, +-2.907438222301141724e-04, +-2.960491717075280221e-04, +-3.013537873716305954e-04, +-3.066576606413344997e-04, +-3.119607829365775645e-04, +-3.172631456796340204e-04, +-3.225647402937133852e-04, +-3.278655582042719146e-04, +-3.331655908381997216e-04, +-3.384648296239532120e-04, +-3.437632659918659250e-04, +-3.490608913739800482e-04, +-3.543576972038882866e-04, +-3.596536749171598459e-04, +-3.649488159508797549e-04, +-3.702431117440786973e-04, +-3.755365537375679962e-04, +-3.808291333737760624e-04, +-3.861208420971192997e-04, +-3.914116713538336742e-04, +-3.967016125918175051e-04, +-4.019906572609349324e-04, +-4.072787968131516057e-04, +-4.125660227017203391e-04, +-4.178523263824942971e-04, +-4.231376993125217606e-04, +-4.284221329513631066e-04, +-4.337056187602739707e-04, +-4.389881482023391462e-04, +-4.442697127427805513e-04, +-4.495503038487953036e-04, +-4.548299129893905424e-04, +-4.601085316358126094e-04, +-4.653861512610833360e-04, +-4.706627633404375185e-04, +-4.759383593511485244e-04, +-4.812129307723701072e-04, +-4.864864690854436152e-04, +-4.917589657740329204e-04, +-4.970304123233106703e-04, +-5.023008002211471704e-04, +-5.075701209573068272e-04, +-5.128383660235719642e-04, +-5.181055269141730335e-04, +-5.233715951250372637e-04, +-5.286365621548028224e-04, +-5.339004195040636695e-04, +-5.391631586755069256e-04, +-5.444247711742137381e-04, +-5.496852485075054331e-04, +-5.549445821847717774e-04, +-5.602027637179017323e-04, +-5.654597846208251613e-04, +-5.707156364099405478e-04, +-5.759703106039444501e-04, +-5.812237987236781953e-04, +-5.864760922924315643e-04, +-5.917271828360741968e-04, +-5.969770618822428741e-04, +-6.022257209615398867e-04, +-6.074731516067122944e-04, +-6.127193453527914621e-04, +-6.179642937374550758e-04, +-6.232079883005753546e-04, +-6.284504205846374453e-04, +-6.336915821345802608e-04, +-6.389314644976378616e-04, +-6.441700592236972427e-04, +-6.494073578651407986e-04, +-6.546433519766832595e-04, +-6.598780331157960482e-04, +-6.651113928422520234e-04, +-6.703434227184884705e-04, +-6.755741143097396999e-04, +-6.808034591832321349e-04, +-6.860314489093664175e-04, +-6.912580750609101116e-04, +-6.964833292131359386e-04, +-7.017072029441149454e-04, +-7.069296878345704633e-04, +-7.121507754676988881e-04, +-7.173704574296094335e-04, +-7.225887253088566229e-04, +-7.278055706968741866e-04, +-7.330209851877982291e-04, +-7.382349603783243310e-04, +-7.434474878680565535e-04, +-7.486585592593526144e-04, +-7.538681661571598486e-04, +-7.590763001693243139e-04, +-7.642829529067136311e-04, +-7.694881159824208542e-04, +-7.746917810130595503e-04, +-7.798939396173737437e-04, +-7.850945834175423197e-04, +-7.902937040383625116e-04, +-7.954912931073985453e-04, +-8.006873422552684104e-04, +-8.058818431154946742e-04, +-8.110747873243401166e-04, +-8.162661665212235214e-04, +-8.214559723482774307e-04, +-8.266441964507534193e-04, +-8.318308304768857022e-04, +-8.370158660776985801e-04, +-8.421992949073409162e-04, +-8.473811086231947728e-04, +-8.525612988850854619e-04, +-8.577398573564497730e-04, +-8.629167757035441800e-04, +-8.680920455955703921e-04, +-8.732656587050977590e-04, +-8.784376067073095332e-04, +-8.836078812810283086e-04, +-8.887764741079445027e-04, +-8.939433768727707459e-04, +-8.991085812635323405e-04, +-9.042720789714072315e-04, +-9.094338616905762790e-04, +-9.145939211186248459e-04, +-9.197522489561048894e-04, +-9.249088369069524869e-04, +-9.300636766783230373e-04, +-9.352167599804374126e-04, +-9.403680785268718739e-04, +-9.455176240347070403e-04, +-9.506653882237133283e-04, +-9.558113628175288288e-04, +-9.609555395428636109e-04, +-9.660979101296244057e-04, +-9.712384663112826923e-04, +-9.763771998244123946e-04, +-9.815141024091206343e-04, +-9.866491658088835832e-04, +-9.917823817703812304e-04, +-9.969137420438672036e-04, +-1.002043238382994972e-03, +-1.007170862544673430e-03, +-1.012296606289471521e-03, +-1.017420461381175235e-03, +-1.022542419587148862e-03, +-1.027662472678460542e-03, +-1.032780612429090366e-03, +-1.037896830617090907e-03, +-1.043011119023857115e-03, +-1.048123469433967806e-03, +-1.053233873636056717e-03, +-1.058342323422079142e-03, +-1.063448810587446164e-03, +-1.068553326931372246e-03, +-1.073655864256441769e-03, +-1.078756414369009750e-03, +-1.083854969079054830e-03, +-1.088951520200012518e-03, +-1.094046059549139485e-03, +-1.099138578947341828e-03, +-1.104229070219033687e-03, +-1.109317525192541655e-03, +-1.114403935699655483e-03, +-1.119488293575993674e-03, +-1.124570590661127731e-03, +-1.129650818797791560e-03, +-1.134728969833042429e-03, +-1.139805035617471674e-03, +-1.144879008005331329e-03, +-1.149950878854833804e-03, +-1.155020640027992068e-03, +-1.160088283390470687e-03, +-1.165153800811974177e-03, +-1.170217184165841303e-03, +-1.175278425329417389e-03, +-1.180337516183925734e-03, +-1.185394448614294355e-03, +-1.190449214509459999e-03, +-1.195501805762488705e-03, +-1.200552214269808406e-03, +-1.205600431932447305e-03, +-1.210646450654703559e-03, +-1.215690262345401219e-03, +-1.220731858917169449e-03, +-1.225771232286265808e-03, +-1.230808374373474181e-03, +-1.235843277103351040e-03, +-1.240875932404355989e-03, +-1.245906332209171597e-03, +-1.250934468454513882e-03, +-1.255960333080995486e-03, +-1.260983918033533767e-03, +-1.266005215260900636e-03, +-1.271024216716140198e-03, +-1.276040914356411102e-03, +-1.281055300142826519e-03, +-1.286067366040750557e-03, +-1.291077104019928371e-03, +-1.296084506053701846e-03, +-1.301089564120263371e-03, +-1.306092270201331812e-03, +-1.311092616283381345e-03, +-1.316090594356872975e-03, +-1.321086196416398515e-03, +-1.326079414460948390e-03, +-1.331070240493766998e-03, +-1.336058666522206345e-03, +-1.341044684558059547e-03, +-1.346028286617407740e-03, +-1.351009464720476531e-03, +-1.355988210892036501e-03, +-1.360964517160956951e-03, +-1.365938375560564553e-03, +-1.370909778128769985e-03, +-1.375878716907291428e-03, +-1.380845183942782349e-03, +-1.385809171286134147e-03, +-1.390770670992301809e-03, +-1.395729675121163468e-03, +-1.400686175736808948e-03, +-1.405640164907659244e-03, +-1.410591634706821708e-03, +-1.415540577211640968e-03, +-1.420486984504122207e-03, +-1.425430848670763972e-03, +-1.430372161802401405e-03, +-1.435310915994558170e-03, +-1.440247103347301822e-03, +-1.445180715965065782e-03, +-1.450111745957070658e-03, +-1.455040185436891429e-03, +-1.459966026522787697e-03, +-1.464889261337848966e-03, +-1.469809882009209031e-03, +-1.474727880669187211e-03, +-1.479643249454505117e-03, +-1.484555980506431071e-03, +-1.489466065971057230e-03, +-1.494373497999139551e-03, +-1.499278268745957285e-03, +-1.504180370371711092e-03, +-1.509079795041089363e-03, +-1.513976534923666770e-03, +-1.518870582193751180e-03, +-1.523761929030234248e-03, +-1.528650567616877433e-03, +-1.533536490142427787e-03, +-1.538419688799880485e-03, +-1.543300155787676433e-03, +-1.548177883308465190e-03, +-1.553052863570045629e-03, +-1.557925088785220647e-03, +-1.562794551171083112e-03, +-1.567661242950139965e-03, +-1.572525156349553277e-03, +-1.577386283601245852e-03, +-1.582244616942213907e-03, +-1.587100148614361194e-03, +-1.591952870864337668e-03, +-1.596802775943959290e-03, +-1.601649856109761336e-03, +-1.606494103623400203e-03, +-1.611335510751511595e-03, +-1.616174069765541170e-03, +-1.621009772942037493e-03, +-1.625842612562781054e-03, +-1.630672580914022509e-03, +-1.635499670287703057e-03, +-1.640323872980154266e-03, +-1.645145181293300018e-03, +-1.649963587533920554e-03, +-1.654779084013775639e-03, +-1.659591663049874528e-03, +-1.664401316964325911e-03, +-1.669208038084206295e-03, +-1.674011818741877235e-03, +-1.678812651274837675e-03, +-1.683610528025596435e-03, +-1.688405441342022634e-03, +-1.693197383576962745e-03, +-1.697986347088558702e-03, +-1.702772324240375400e-03, +-1.707555307400694016e-03, +-1.712335288943361150e-03, +-1.717112261247616444e-03, +-1.721886216697419286e-03, +-1.726657147682627994e-03, +-1.731425046597750376e-03, +-1.736189905843096674e-03, +-1.740951717824072665e-03, +-1.745710474951301305e-03, +-1.750466169640866893e-03, +-1.755218794314210989e-03, +-1.759968341397943545e-03, +-1.764714803324217169e-03, +-1.769458172530541515e-03, +-1.774198441459654040e-03, +-1.778935602559905769e-03, +-1.783669648284835632e-03, +-1.788400571093518715e-03, +-1.793128363450667085e-03, +-1.797853017825912052e-03, +-1.802574526694875143e-03, +-1.807292882538420005e-03, +-1.812008077842798114e-03, +-1.816720105099960169e-03, +-1.821428956807153842e-03, +-1.826134625467290898e-03, +-1.830837103588821855e-03, +-1.835536383685576608e-03, +-1.840232458277092295e-03, +-1.844925319888472562e-03, +-1.849614961050235779e-03, +-1.854301374298598015e-03, +-1.858984552175579289e-03, +-1.863664487228287566e-03, +-1.868341172010086655e-03, +-1.873014599079399255e-03, +-1.877684761000598598e-03, +-1.882351650343890926e-03, +-1.887015259684611621e-03, +-1.891675581604315270e-03, +-1.896332608690032111e-03, +-1.900986333534398793e-03, +-1.905636748735975178e-03, +-1.910283846898842754e-03, +-1.914927620632983019e-03, +-1.919568062554126127e-03, +-1.924205165283614065e-03, +-1.928838921448714850e-03, +-1.933469323682491560e-03, +-1.938096364623650546e-03, +-1.942720036916808580e-03, +-1.947340333212613196e-03, +-1.951957246167029293e-03, +-1.956570768442487951e-03, +-1.961180892706666703e-03, +-1.965787611633618842e-03, +-1.970390917903070208e-03, +-1.974990804200548421e-03, +-1.979587263217629216e-03, +-1.984180287651806773e-03, +-1.988769870206352330e-03, +-1.993356003590676748e-03, +-1.997938680519935860e-03, +-2.002517893715411237e-03, +-2.007093635904342362e-03, +-2.011665899819812999e-03, +-2.016234678201000129e-03, +-2.020799963793300583e-03, +-2.025361749347659706e-03, +-2.029920027621365860e-03, +-2.034474791377905573e-03, +-2.039026033386305212e-03, +-2.043573746422275902e-03, +-2.048117923266988809e-03, +-2.052658556708207051e-03, +-2.057195639539602643e-03, +-2.061729164560850182e-03, +-2.066259124577898756e-03, +-2.070785512402833605e-03, +-2.075308320853731705e-03, +-2.079827542754983556e-03, +-2.084343170937145735e-03, +-2.088855198236793439e-03, +-2.093363617496914707e-03, +-2.097868421566474999e-03, +-2.102369603300772820e-03, +-2.106867155561527750e-03, +-2.111361071216180489e-03, +-2.115851343138941063e-03, +-2.120337964210072378e-03, +-2.124820927315991710e-03, +-2.129300225349616774e-03, +-2.133775851209945493e-03, +-2.138247797802438933e-03, +-2.142716058038876027e-03, +-2.147180624837189203e-03, +-2.151641491121820439e-03, +-2.156098649823550827e-03, +-2.160552093879383479e-03, +-2.165001816232774243e-03, +-2.169447809833778724e-03, +-2.173890067638378342e-03, +-2.178328582609372413e-03, +-2.182763347715721992e-03, +-2.187194355932910259e-03, +-2.191621600243069592e-03, +-2.196045073634263385e-03, +-2.200464769101535129e-03, +-2.204880679646182423e-03, +-2.209292798275892724e-03, +-2.213701118005052988e-03, +-2.218105631854340714e-03, +-2.222506332851106881e-03, +-2.226903214029227630e-03, +-2.231296268428961151e-03, +-2.235685489097276844e-03, +-2.240070869087690091e-03, +-2.244452401460138215e-03, +-2.248830079281251976e-03, +-2.253203895624436657e-03, +-2.257573843569213746e-03, +-2.261939916202307301e-03, +-2.266302106616482556e-03, +-2.270660407911624483e-03, +-2.275014813194074260e-03, +-2.279365315576720348e-03, +-2.283711908179284714e-03, +-2.288054584128154569e-03, +-2.292393336556272209e-03, +-2.296728158603457241e-03, +-2.301059043416072650e-03, +-2.305385984147327941e-03, +-2.309708973957172885e-03, +-2.314028006012156576e-03, +-2.318343073485683737e-03, +-2.322654169558112727e-03, +-2.326961287416149261e-03, +-2.331264420253566314e-03, +-2.335563561271085734e-03, +-2.339858703675760671e-03, +-2.344149840682038539e-03, +-2.348436965510606114e-03, +-2.352720071389495429e-03, +-2.356999151553380769e-03, +-2.361274199243705747e-03, +-2.365545207708932233e-03, +-2.369812170204411116e-03, +-2.374075079992229650e-03, +-2.378333930341591795e-03, +-2.382588714528402745e-03, +-2.386839425835647101e-03, +-2.391086057553253996e-03, +-2.395328602977942270e-03, +-2.399567055413494125e-03, +-2.403801408170842292e-03, +-2.408031654567435557e-03, +-2.412257787928166405e-03, +-2.416479801584757361e-03, +-2.420697688875833847e-03, +-2.424911443147238169e-03, +-2.429121057751649614e-03, +-2.433326526048932691e-03, +-2.437527841406004429e-03, +-2.441724997196702968e-03, +-2.445917986802078562e-03, +-2.450106803610266944e-03, +-2.454291441016358787e-03, +-2.458471892422735804e-03, +-2.462648151238706028e-03, +-2.466820210880827768e-03, +-2.470988064772823740e-03, +-2.475151706345401527e-03, +-2.479311129036528959e-03, +-2.483466326291513919e-03, +-2.487617291562379835e-03, +-2.491764018308815446e-03, +-2.495906499997502161e-03, +-2.500044730102245032e-03, +-2.504178702104251173e-03, +-2.508308409491770245e-03, +-2.512433845760427518e-03, +-2.516555004413096805e-03, +-2.520671878959774691e-03, +-2.524784462917863299e-03, +-2.528892749812044951e-03, +-2.532996733174144258e-03, +-2.537096406543483309e-03, +-2.541191763466498291e-03, +-2.545282797497039600e-03, +-2.549369502196482430e-03, +-2.553451871133058035e-03, +-2.557529897882835582e-03, +-2.561603576029040843e-03, +-2.565672899162176317e-03, +-2.569737860880278411e-03, +-2.573798454788759141e-03, +-2.577854674500301181e-03, +-2.581906513635175322e-03, +-2.585953965820893524e-03, +-2.589997024692538945e-03, +-2.594035683892617194e-03, +-2.598069937070975229e-03, +-2.602099777885028171e-03, +-2.606125199999678212e-03, +-2.610146197087166720e-03, +-2.614162762827325348e-03, +-2.618174890907643253e-03, +-2.622182575022684661e-03, +-2.626185808875088068e-03, +-2.630184586174444741e-03, +-2.634178900638366877e-03, +-2.638168745991815826e-03, +-2.642154115967237406e-03, +-2.646135004304769629e-03, +-2.650111404752141225e-03, +-2.654083311064519852e-03, +-2.658050717004859908e-03, +-2.662013616343545611e-03, +-2.665972002858713226e-03, +-2.669925870336114452e-03, +-2.673875212569018847e-03, +-2.677820023358425464e-03, +-2.681760296513174737e-03, +-2.685696025849318783e-03, +-2.689627205191032992e-03, +-2.693553828370008445e-03, +-2.697475889225535179e-03, +-2.701393381604826581e-03, +-2.705306299362471214e-03, +-2.709214636361164438e-03, +-2.713118386471162404e-03, +-2.717017543570381805e-03, +-2.720912101544626684e-03, +-2.724802054287445326e-03, +-2.728687395700054794e-03, +-2.732568119691600270e-03, +-2.736444220178864926e-03, +-2.740315691086557884e-03, +-2.744182526347183678e-03, +-2.748044719900955522e-03, +-2.751902265696000872e-03, +-2.755755157688444257e-03, +-2.759603389841842631e-03, +-2.763446956128023241e-03, +-2.767285850526537624e-03, +-2.771120067024690232e-03, +-2.774949599617871059e-03, +-2.778774442309187021e-03, +-2.782594589109767258e-03, +-2.786410034038666866e-03, +-2.790220771122729412e-03, +-2.794026794396873604e-03, +-2.797828097903927187e-03, +-2.801624675694575333e-03, +-2.805416521827616520e-03, +-2.809203630369655914e-03, +-2.812985995395349097e-03, +-2.816763610987533042e-03, +-2.820536471236597710e-03, +-2.824304570241364248e-03, +-2.828067902108505598e-03, +-2.831826460952653612e-03, +-2.835580240896562552e-03, +-2.839329236071053142e-03, +-2.843073440614879432e-03, +-2.846812848675012858e-03, +-2.850547454406316544e-03, +-2.854277251971889650e-03, +-2.858002235542891293e-03, +-2.861722399298474197e-03, +-2.865437737426011072e-03, +-2.869148244120985330e-03, +-2.872853913586900440e-03, +-2.876554740035539275e-03, +-2.880250717686690456e-03, +-2.883941840768333102e-03, +-2.887628103516820706e-03, +-2.891309500176228019e-03, +-2.894986024999240959e-03, +-2.898657672246568971e-03, +-2.902324436187015723e-03, +-2.905986311097743212e-03, +-2.909643291264109571e-03, +-2.913295370979574958e-03, +-2.916942544545999931e-03, +-2.920584806273328424e-03, +-2.924222150479860102e-03, +-2.927854571492178367e-03, +-2.931482063644984259e-03, +-2.935104621281356668e-03, +-2.938722238752819547e-03, +-2.942334910418782038e-03, +-2.945942630647448331e-03, +-2.949545393814833640e-03, +-2.953143194305693584e-03, +-2.956736026512991628e-03, +-2.960323884837780684e-03, +-2.963906763689813737e-03, +-2.967484657487068096e-03, +-2.971057560655775316e-03, +-2.974625467630672305e-03, +-2.978188372854880320e-03, +-2.981746270779784842e-03, +-2.985299155865323972e-03, +-2.988847022579703069e-03, +-2.992389865399641951e-03, +-2.995927678810296393e-03, +-2.999460457305130629e-03, +-3.002988195386142433e-03, +-3.006510887563914290e-03, +-3.010028528357115967e-03, +-3.013541112293340648e-03, +-3.017048633908195072e-03, +-3.020551087746160823e-03, +-3.024048468360045726e-03, +-3.027540770311087492e-03, +-3.031027988169163190e-03, +-3.034510116512650468e-03, +-3.037987149928326937e-03, +-3.041459083011647298e-03, +-3.044925910366610197e-03, +-3.048387626605609472e-03, +-3.051844226349797150e-03, +-3.055295704228719583e-03, +-3.058742054880572887e-03, +-3.062183272952306162e-03, +-3.065619353099064207e-03, +-3.069050289984979422e-03, +-3.072476078282680018e-03, +-3.075896712673190266e-03, +-3.079312187846486044e-03, +-3.082722498501031232e-03, +-3.086127639343879629e-03, +-3.089527605090842781e-03, +-3.092922390466283991e-03, +-3.096311990203318241e-03, +-3.099696399043740634e-03, +-3.103075611737920146e-03, +-3.106449623045034678e-03, +-3.109818427732953961e-03, +-3.113182020578140682e-03, +-3.116540396365923265e-03, +-3.119893549890223085e-03, +-3.123241475953737484e-03, +-3.126584169368070310e-03, +-3.129921624953191546e-03, +-3.133253837538220107e-03, +-3.136580801960858755e-03, +-3.139902513067533308e-03, +-3.143218965713542260e-03, +-3.146530154762973083e-03, +-3.149836075088614622e-03, +-3.153136721572195184e-03, +-3.156432089104104118e-03, +-3.159722172583660262e-03, +-3.163006966919015232e-03, +-3.166286467027034160e-03, +-3.169560667833524678e-03, +-3.172829564273262938e-03, +-3.176093151289519165e-03, +-3.179351423834880785e-03, +-3.182604376870370750e-03, +-3.185852005366248980e-03, +-3.189094304301560469e-03, +-3.192331268664034237e-03, +-3.195562893450617191e-03, +-3.198789173667036974e-03, +-3.202010104327854441e-03, +-3.205225680456689607e-03, +-3.208435897086077231e-03, +-3.211640749257391788e-03, +-3.214840232021102043e-03, +-3.218034340436499129e-03, +-3.221223069571947217e-03, +-3.224406414504771192e-03, +-3.227584370321170352e-03, +-3.230756932116430041e-03, +-3.233924094994942901e-03, +-3.237085854069754812e-03, +-3.240242204463375866e-03, +-3.243393141306878322e-03, +-3.246538659740723191e-03, +-3.249678754914280161e-03, +-3.252813421985862284e-03, +-3.255942656122954963e-03, +-3.259066452502092353e-03, +-3.262184806308777996e-03, +-3.265297712737666534e-03, +-3.268405166992517739e-03, +-3.271507164286065542e-03, +-3.274603699840259591e-03, +-3.277694768886038872e-03, +-3.280780366663480462e-03, +-3.283860488421952613e-03, +-3.286935129419579164e-03, +-3.290004284923972889e-03, +-3.293067950211754982e-03, +-3.296126120568507352e-03, +-3.299178791289333803e-03, +-3.302225957678084616e-03, +-3.305267615048107684e-03, +-3.308303758721808756e-03, +-3.311334384030682233e-03, +-3.314359486315527140e-03, +-3.317379060926329160e-03, +-3.320393103222181713e-03, +-3.323401608571471127e-03, +-3.326404572351815934e-03, +-3.329401989949945431e-03, +-3.332393856761952950e-03, +-3.335380168193054305e-03, +-3.338360919657741739e-03, +-3.341336106579913603e-03, +-3.344305724392400772e-03, +-3.347269768537596783e-03, +-3.350228234467073161e-03, +-3.353181117641589829e-03, +-3.356128413531332330e-03, +-3.359070117615633837e-03, +-3.362006225383250974e-03, +-3.364936732332233279e-03, +-3.367861633969827795e-03, +-3.370780925812714990e-03, +-3.373694603386917686e-03, +-3.376602662227667917e-03, +-3.379505097879609461e-03, +-3.382401905896873732e-03, +-3.385293081842613572e-03, +-3.388178621289729669e-03, +-3.391058519820135900e-03, +-3.393932773025315746e-03, +-3.396801376506238587e-03, +-3.399664325872916917e-03, +-3.402521616745089825e-03, +-3.405373244751781943e-03, +-3.408219205531345941e-03, +-3.411059494731674604e-03, +-3.413894108009967940e-03, +-3.416723041032930942e-03, +-3.419546289476716773e-03, +-3.422363849026822686e-03, +-3.425175715378276503e-03, +-3.427981884235574168e-03, +-3.430782351312566120e-03, +-3.433577112332642043e-03, +-3.436366163028778137e-03, +-3.439149499143129458e-03, +-3.441927116427691714e-03, +-3.444699010643611711e-03, +-3.447465177561817497e-03, +-3.450225612962636718e-03, +-3.452980312635821770e-03, +-3.455729272380771849e-03, +-3.458472488006381160e-03, +-3.461209955330993380e-03, +-3.463941670182615895e-03, +-3.466667628398670004e-03, +-3.469387825826219466e-03, +-3.472102258321895039e-03, +-3.474810921751776086e-03, +-3.477513811991591805e-03, +-3.480210924926761557e-03, +-3.482902256452011930e-03, +-3.485587802471833835e-03, +-3.488267558900406615e-03, +-3.490941521661214669e-03, +-3.493609686687698408e-03, +-3.496272049922551257e-03, +-3.498928607318403574e-03, +-3.501579354837350798e-03, +-3.504224288451097003e-03, +-3.506863404141055945e-03, +-3.509496697898282103e-03, +-3.512124165723393057e-03, +-3.514745803626752492e-03, +-3.517361607628372629e-03, +-3.519971573757874322e-03, +-3.522575698054617160e-03, +-3.525173976567577173e-03, +-3.527766405355432268e-03, +-3.530352980486697097e-03, +-3.532933698039267701e-03, +-3.535508554101048605e-03, +-3.538077544769522610e-03, +-3.540640666151852276e-03, +-3.543197914365000048e-03, +-3.545749285535582541e-03, +-3.548294775799999343e-03, +-3.550834381304392249e-03, +-3.553368098204579776e-03, +-3.555895922666205914e-03, +-3.558417850864646018e-03, +-3.560933878984994232e-03, +-3.563444003222123770e-03, +-3.565948219780826125e-03, +-3.568446524875369587e-03, +-3.570938914730158870e-03, +-3.573425385579058564e-03, +-3.575905933665906190e-03, +-3.578380555244433259e-03, +-3.580849246577885812e-03, +-3.583312003939596868e-03, +-3.585768823612618672e-03, +-3.588219701889763889e-03, +-3.590664635073781245e-03, +-3.593103619477140860e-03, +-3.595536651422238505e-03, +-3.597963727241324915e-03, +-3.600384843276409948e-03, +-3.602799995879421742e-03, +-3.605209181412192404e-03, +-3.607612396246298852e-03, +-3.610009636763265341e-03, +-3.612400899354605097e-03, +-3.614786180421415262e-03, +-3.617165476375046058e-03, +-3.619538783636381749e-03, +-3.621906098636509808e-03, +-3.624267417816274227e-03, +-3.626622737626414295e-03, +-3.628972054527621841e-03, +-3.631315364990562490e-03, +-3.633652665495695246e-03, +-3.635983952533545713e-03, +-3.638309222604459766e-03, +-3.640628472218806946e-03, +-3.642941697896905865e-03, +-3.645248896168945280e-03, +-3.647550063575114628e-03, +-3.649845196665680788e-03, +-3.652134292000630729e-03, +-3.654417346150098684e-03, +-3.656694355694255563e-03, +-3.658965317223010581e-03, +-3.661230227336550319e-03, +-3.663489082644758900e-03, +-3.665741879767777864e-03, +-3.667988615335640145e-03, +-3.670229285988332087e-03, +-3.672463888375947401e-03, +-3.674692419158566599e-03, +-3.676914875006247023e-03, +-3.679131252599151646e-03, +-3.681341548627386877e-03, +-3.683545759791176030e-03, +-3.685743882800760884e-03, +-3.687935914376386064e-03, +-3.690121851248373205e-03, +-3.692301690157204219e-03, +-3.694475427853186923e-03, +-3.696643061096938597e-03, +-3.698804586659025593e-03, +-3.700960001320083466e-03, +-3.703109301870885928e-03, +-3.705252485112203037e-03, +-3.707389547854998517e-03, +-3.709520486920289684e-03, +-3.711645299139133998e-03, +-3.713763981352779988e-03, +-3.715876530412568803e-03, +-3.717982943179877400e-03, +-3.720083216526323677e-03, +-3.722177347333510168e-03, +-3.724265332493284682e-03, +-3.726347168907596756e-03, +-3.728422853488455157e-03, +-3.730492383158077064e-03, +-3.732555754848916260e-03, +-3.734612965503339606e-03, +-3.736664012074078500e-03, +-3.738708891523960000e-03, +-3.740747600825908986e-03, +-3.742780136963135083e-03, +-3.744806496928898467e-03, +-3.746826677726715869e-03, +-3.748840676370286413e-03, +-3.750848489883421358e-03, +-3.752850115300191119e-03, +-3.754845549664864116e-03, +-3.756834790031842591e-03, +-3.758817833465800951e-03, +-3.760794677041554360e-03, +-3.762765317844150251e-03, +-3.764729752968965469e-03, +-3.766687979521348480e-03, +-3.768639994617110738e-03, +-3.770585795382200983e-03, +-3.772525378952742980e-03, +-3.774458742475188169e-03, +-3.776385883106194233e-03, +-3.778306798012613828e-03, +-3.780221484371647234e-03, +-3.782129939370641129e-03, +-3.784032160207276372e-03, +-3.785928144089489508e-03, +-3.787817888235413353e-03, +-3.789701389873503194e-03, +-3.791578646242555438e-03, +-3.793449654591474294e-03, +-3.795314412179543687e-03, +-3.797172916276422491e-03, +-3.799025164161836179e-03, +-3.800871153126051272e-03, +-3.802710880469388315e-03, +-3.804544343502659024e-03, +-3.806371539546918661e-03, +-3.808192465933479473e-03, +-3.810007120004025184e-03, +-3.811815499110552882e-03, +-3.813617600615327053e-03, +-3.815413421891015316e-03, +-3.817202960320514090e-03, +-3.818986213297144178e-03, +-3.820763178224529776e-03, +-3.822533852516581555e-03, +-3.824298233597601612e-03, +-3.826056318902319904e-03, +-3.827808105875590231e-03, +-3.829553591972853412e-03, +-3.831292774659807686e-03, +-3.833025651412465089e-03, +-3.834752219717303245e-03, +-3.836472477071065004e-03, +-3.838186420980944490e-03, +-3.839894048964484323e-03, +-3.841595358549585587e-03, +-3.843290347274542964e-03, +-3.844979012688079425e-03, +-3.846661352349216561e-03, +-3.848337363827456295e-03, +-3.850007044702628660e-03, +-3.851670392565004122e-03, +-3.853327405015269727e-03, +-3.854978079664446704e-03, +-3.856622414134027073e-03, +-3.858260406055957596e-03, +-3.859892053072443759e-03, +-3.861517352836278064e-03, +-3.863136303010604542e-03, +-3.864748901268977299e-03, +-3.866355145295414728e-03, +-3.867955032784326647e-03, +-3.869548561440590631e-03, +-3.871135728979546373e-03, +-3.872716533126905041e-03, +-3.874290971618879822e-03, +-3.875859042202134310e-03, +-3.877420742633723959e-03, +-3.878976070681249173e-03, +-3.880525024122669694e-03, +-3.882067600746467659e-03, +-3.883603798351649341e-03, +-3.885133614747491009e-03, +-3.886657047753971309e-03, +-3.888174095201403935e-03, +-3.889684754930584649e-03, +-3.891189024792835512e-03, +-3.892686902649962824e-03, +-3.894178386374191631e-03, +-3.895663473848318820e-03, +-3.897142162965557856e-03, +-3.898614451629661953e-03, +-3.900080337754894145e-03, +-3.901539819265963972e-03, +-3.902992894098125925e-03, +-3.904439560197142580e-03, +-3.905879815519236898e-03, +-3.907313658031224927e-03, +-3.908741085710334094e-03, +-3.910162096544375805e-03, +-3.911576688531731572e-03, +-3.912984859681137469e-03, +-3.914386608012033683e-03, +-3.915781931554315580e-03, +-3.917170828348364928e-03, +-3.918553296445169594e-03, +-3.919929333906224667e-03, +-3.921298938803540260e-03, +-3.922662109219716108e-03, +-3.924018843247839214e-03, +-3.925369138991587938e-03, +-3.926712994565198164e-03, +-3.928050408093381775e-03, +-3.929381377711482770e-03, +-3.930705901565420025e-03, +-3.932023977811539839e-03, +-3.933335604616933386e-03, +-3.934640780159063753e-03, +-3.935939502626116353e-03, +-3.937231770216793360e-03, +-3.938517581140305035e-03, +-3.939796933616543199e-03, +-3.941069825875915568e-03, +-3.942336256159394321e-03, +-3.943596222718569015e-03, +-3.944849723815611019e-03, +-3.946096757723235350e-03, +-3.947337322724801291e-03, +-3.948571417114204833e-03, +-3.949799039195977558e-03, +-3.951020187285241535e-03, +-3.952234859707664215e-03, +-3.953443054799563386e-03, +-3.954644770907895027e-03, +-3.955840006390088509e-03, +-3.957028759614330225e-03, +-3.958211028959286899e-03, +-3.959386812814315489e-03, +-3.960556109579388591e-03, +-3.961718917665012045e-03, +-3.962875235492390597e-03, +-3.964025061493327284e-03, +-3.965168394110212165e-03, +-3.966305231796098639e-03, +-3.967435573014639269e-03, +-3.968559416240121339e-03, +-3.969676759957457314e-03, +-3.970787602662196117e-03, +-3.971891942860496238e-03, +-3.972989779069217679e-03, +-3.974081109815739803e-03, +-3.975165933638199860e-03, +-3.976244249085317782e-03, +-3.977316054716430876e-03, +-3.978381349101572755e-03, +-3.979440130821395270e-03, +-3.980492398467185000e-03, +-3.981538150640921356e-03, +-3.982577385955169032e-03, +-3.983610103033207242e-03, +-3.984636300508941249e-03, +-3.985655977026921447e-03, +-3.986669131242379788e-03, +-3.987675761821195090e-03, +-3.988675867439899110e-03, +-3.989669446785712968e-03, +-3.990656498556474294e-03, +-3.991637021460723092e-03, +-3.992611014217710419e-03, +-3.993578475557214499e-03, +-3.994539404219842570e-03, +-3.995493798956801026e-03, +-3.996441658529937060e-03, +-3.997382981711837535e-03, +-3.998317767285746588e-03, +-3.999246014045537874e-03, +-4.000167720795845538e-03, +-4.001082886351913295e-03, +-4.001991509539710654e-03, +-4.002893589195881743e-03, +-4.003789124167736642e-03, +-4.004678113313282599e-03, +-4.005560555501250924e-03, +-4.006436449610984232e-03, +-4.007305794532600371e-03, +-4.008168589166817217e-03, +-4.009024832425144361e-03, +-4.009874523229726116e-03, +-4.010717660513388357e-03, +-4.011554243219700097e-03, +-4.012384270302911914e-03, +-4.013207740727946400e-03, +-4.014024653470471028e-03, +-4.014835007516817482e-03, +-4.015638801864032832e-03, +-4.016436035519880404e-03, +-4.017226707502798144e-03, +-4.018010816841962804e-03, +-4.018788362577230960e-03, +-4.019559343759189322e-03, +-4.020323759449111363e-03, +-4.021081608719013697e-03, +-4.021832890651582358e-03, +-4.022577604340249122e-03, +-4.023315748889120386e-03, +-4.024047323413058701e-03, +-4.024772327037637668e-03, +-4.025490758899104640e-03, +-4.026202618144454452e-03, +-4.026907903931422478e-03, +-4.027606615428398762e-03, +-4.028298751814543381e-03, +-4.028984312279732666e-03, +-4.029663296024548792e-03, +-4.030335702260290191e-03, +-4.031001530208983691e-03, +-4.031660779103382782e-03, +-4.032313448186996239e-03, +-4.032959536713973635e-03, +-4.033599043949274467e-03, +-4.034231969168556274e-03, +-4.034858311658166830e-03, +-4.035478070715251692e-03, +-4.036091245647592009e-03, +-4.036697835773797073e-03, +-4.037297840423136920e-03, +-4.037891258935635136e-03, +-4.038478090662038500e-03, +-4.039058334963829128e-03, +-4.039631991213222736e-03, +-4.040199058793159104e-03, +-4.040759537097324619e-03, +-4.041313425530099375e-03, +-4.041860723506654311e-03, +-4.042401430452852336e-03, +-4.042935545805299499e-03, +-4.043463069011361474e-03, +-4.043983999529072483e-03, +-4.044498336827285351e-03, +-4.045006080385535330e-03, +-4.045507229694109488e-03, +-4.046001784254022425e-03, +-4.046489743577031881e-03, +-4.046971107185643075e-03, +-4.047445874613070545e-03, +-4.047914045403287579e-03, +-4.048375619110995000e-03, +-4.048830595301656718e-03, +-4.049278973551426013e-03, +-4.049720753447215785e-03, +-4.050155934586730649e-03, +-4.050584516578310812e-03, +-4.051006499041134162e-03, +-4.051421881605041936e-03, +-4.051830663910652337e-03, +-4.052232845609326714e-03, +-4.052628426363128790e-03, +-4.053017405844899258e-03, +-4.053399783738215016e-03, +-4.053775559737356204e-03, +-4.054144733547392077e-03, +-4.054507304884083854e-03, +-4.054863273473961922e-03, +-4.055212639054279859e-03, +-4.055555401373042192e-03, +-4.055891560188976640e-03, +-4.056221115271571413e-03, +-4.056544066401014496e-03, +-4.056860413368270843e-03, +-4.057170155975040743e-03, +-4.057473294033727730e-03, +-4.057769827367520114e-03, +-4.058059755810290367e-03, +-4.058343079206694001e-03, +-4.058619797412101916e-03, +-4.058889910292622083e-03, +-4.059153417725109084e-03, +-4.059410319597139827e-03, +-4.059660615807034363e-03, +-4.059904306263837671e-03, +-4.060141390887351751e-03, +-4.060371869608085313e-03, +-4.060595742367303224e-03, +-4.060813009116997011e-03, +-4.061023669819893538e-03, +-4.061227724449428984e-03, +-4.061425172989806959e-03, +-4.061616015435955997e-03, +-4.061800251793513082e-03, +-4.061977882078860944e-03, +-4.062148906319121115e-03, +-4.062313324552117508e-03, +-4.062471136826438858e-03, +-4.062622343201381485e-03, +-4.062766943746956225e-03, +-4.062904938543941344e-03, +-4.063036327683800138e-03, +-4.063161111268750320e-03, +-4.063279289411711112e-03, +-4.063390862236350952e-03, +-4.063495829877043254e-03, +-4.063594192478897638e-03, +-4.063685950197730434e-03, +-4.063771103200090710e-03, +-4.063849651663262001e-03, +-4.063921595775217208e-03, +-4.063986935734664567e-03, +-4.064045671751033775e-03, +-4.064097804044469915e-03, +-4.064143332845832589e-03, +-4.064182258396693316e-03, +-4.064214580949332065e-03, +-4.064240300766773679e-03, +-4.064259418122721963e-03, +-4.064271933301612585e-03, +-4.064277846598588796e-03, +-4.064277158319486681e-03, +-4.064269868780883734e-03, +-4.064255978310034670e-03, +-4.064235487244920002e-03, +-4.064208395934219148e-03, +-4.064174704737315638e-03, +-4.064134414024295379e-03, +-4.064087524175955327e-03, +-4.064034035583785273e-03, +-4.063973948649977387e-03, +-4.063907263787433152e-03, +-4.063833981419732143e-03, +-4.063754101981169320e-03, +-4.063667625916728143e-03, +-4.063574553682068428e-03, +-4.063474885743591399e-03, +-4.063368622578326927e-03, +-4.063255764674057573e-03, +-4.063136312529199747e-03, +-4.063010266652896524e-03, +-4.062877627564962998e-03, +-4.062738395795911436e-03, +-4.062592571886907040e-03, +-4.062440156389827799e-03, +-4.062281149867226319e-03, +-4.062115552892324628e-03, +-4.061943366049030647e-03, +-4.061764589931946869e-03, +-4.061579225146290557e-03, +-4.061387272308037734e-03, +-4.061188732043774854e-03, +-4.060983604990769935e-03, +-4.060771891796983828e-03, +-4.060553593121021647e-03, +-4.060328709632160527e-03, +-4.060097242010345282e-03, +-4.059859190946189279e-03, +-4.059614557140944942e-03, +-4.059363341306552325e-03, +-4.059105544165587942e-03, +-4.058841166451291650e-03, +-4.058570208907564050e-03, +-4.058292672288948272e-03, +-4.058008557360658596e-03, +-4.057717864898520606e-03, +-4.057420595689051855e-03, +-4.057116750529376863e-03, +-4.056806330227300840e-03, +-4.056489335601226424e-03, +-4.056165767480226537e-03, +-4.055835626704027905e-03, +-4.055498914122961616e-03, +-4.055155630598006496e-03, +-4.054805777000769149e-03, +-4.054449354213481363e-03, +-4.054086363129053884e-03, +-4.053716804650935035e-03, +-4.053340679693269444e-03, +-4.052957989180812175e-03, +-4.052568734048901840e-03, +-4.052172915243552540e-03, +-4.051770533721348044e-03, +-4.051361590449515521e-03, +-4.050946086405875224e-03, +-4.050524022578868254e-03, +-4.050095399967558289e-03, +-4.049660219581579547e-03, +-4.049218482441208772e-03, +-4.048770189577295849e-03, +-4.048315342031301965e-03, +-4.047853940855294409e-03, +-4.047385987111929220e-03, +-4.046911481874430373e-03, +-4.046430426226670443e-03, +-4.045942821263074328e-03, +-4.045448668088621851e-03, +-4.044947967818945771e-03, +-4.044440721580206018e-03, +-4.043926930509179896e-03, +-4.043406595753193562e-03, +-4.042879718470153254e-03, +-4.042346299828555693e-03, +-4.041806341007451661e-03, +-4.041259843196456404e-03, +-4.040706807595768717e-03, +-4.040147235416127573e-03, +-4.039581127878841618e-03, +-4.039008486215786564e-03, +-4.038429311669380906e-03, +-4.037843605492601531e-03, +-4.037251368948985460e-03, +-4.036652603312565653e-03, +-4.036047309868021071e-03, +-4.035435489910471109e-03, +-4.034817144745610901e-03, +-4.034192275689706987e-03, +-4.033560884069514914e-03, +-4.032922971222337345e-03, +-4.032278538496017993e-03, +-4.031627587248904319e-03, +-4.030970118849904783e-03, +-4.030306134678396900e-03, +-4.029635636124306169e-03, +-4.028958624588100008e-03, +-4.028275101480707082e-03, +-4.027585068223574552e-03, +-4.026888526248707974e-03, +-4.026185476998563745e-03, +-4.025475921926089003e-03, +-4.024759862494814433e-03, +-4.024037300178659980e-03, +-4.023308236462128269e-03, +-4.022572672840145878e-03, +-4.021830610818144004e-03, +-4.021082051912076676e-03, +-4.020326997648329681e-03, +-4.019565449563783886e-03, +-4.018797409205806560e-03, +-4.018022878132215814e-03, +-4.017241857911332641e-03, +-4.016454350121911529e-03, +-4.015660356353166482e-03, +-4.014859878204813520e-03, +-4.014052917286991748e-03, +-4.013239475220259887e-03, +-4.012419553635731585e-03, +-4.011593154174858573e-03, +-4.010760278489603273e-03, +-4.009920928242335578e-03, +-4.009075105105878827e-03, +-4.008222810763505464e-03, +-4.007364046908885868e-03, +-4.006498815246128248e-03, +-4.005627117489797724e-03, +-4.004748955364840872e-03, +-4.003864330606611739e-03, +-4.002973244960949910e-03, +-4.002075700184039991e-03, +-4.001171698042498351e-03, +-4.000261240313340155e-03, +-3.999344328783997586e-03, +-3.998420965252294686e-03, +-3.997491151526446490e-03, +-3.996554889425016528e-03, +-3.995612180777054732e-03, +-3.994663027421914425e-03, +-3.993707431209349464e-03, +-3.992745393999503831e-03, +-3.991776917662889085e-03, +-3.990802004080390430e-03, +-3.989820655143244167e-03, +-3.988832872753056771e-03, +-3.987838658821830917e-03, +-3.986838015271858791e-03, +-3.985830944035833115e-03, +-3.984817447056785561e-03, +-3.983797526288078081e-03, +-3.982771183693445405e-03, +-3.981738421246930858e-03, +-3.980699240932886358e-03, +-3.979653644746107728e-03, +-3.978601634691567544e-03, +-3.977543212784654530e-03, +-3.976478381051059934e-03, +-3.975407141526784462e-03, +-3.974329496258132213e-03, +-3.973245447301741035e-03, +-3.972154996724517467e-03, +-3.971058146603704403e-03, +-3.969954899026813429e-03, +-3.968845256091643042e-03, +-3.967729219906314213e-03, +-3.966606792589228749e-03, +-3.965477976268997305e-03, +-3.964342773084617196e-03, +-3.963201185185278967e-03, +-3.962053214730486966e-03, +-3.960898863889986479e-03, +-3.959738134843742915e-03, +-3.958571029782097066e-03, +-3.957397550905526577e-03, +-3.956217700424782130e-03, +-3.955031480560908252e-03, +-3.953838893545148780e-03, +-3.952639941618984153e-03, +-3.951434627034154830e-03, +-3.950222952052581497e-03, +-3.949004918946467414e-03, +-3.947780529998188258e-03, +-3.946549787500338961e-03, +-3.945312693755771878e-03, +-3.944069251077502239e-03, +-3.942819461788709019e-03, +-3.941563328222908412e-03, +-3.940300852723630301e-03, +-3.939032037644779084e-03, +-3.937756885350283259e-03, +-3.936475398214326141e-03, +-3.935187578621290351e-03, +-3.933893428965690164e-03, +-3.932592951652210539e-03, +-3.931286149095734872e-03, +-3.929973023721272142e-03, +-3.928653577963976858e-03, +-3.927327814269200232e-03, +-3.925995735092393905e-03, +-3.924657342899195815e-03, +-3.923312640165331315e-03, +-3.921961629376680830e-03, +-3.920604313029276387e-03, +-3.919240693629243502e-03, +-3.917870773692788168e-03, +-3.916494555746364258e-03, +-3.915112042326349129e-03, +-3.913723235979423530e-03, +-3.912328139262205573e-03, +-3.910926754741482318e-03, +-3.909519084994136917e-03, +-3.908105132607129530e-03, +-3.906684900177465232e-03, +-3.905258390312305906e-03, +-3.903825605628811080e-03, +-3.902386548754228999e-03, +-3.900941222325900529e-03, +-3.899489628991181529e-03, +-3.898031771407530020e-03, +-3.896567652242421617e-03, +-3.895097274173316571e-03, +-3.893620639887887449e-03, +-3.892137752083649638e-03, +-3.890648613468221557e-03, +-3.889153226759315112e-03, +-3.887651594684554852e-03, +-3.886143719981621954e-03, +-3.884629605398246411e-03, +-3.883109253692089945e-03, +-3.881582667630879575e-03, +-3.880049849992296164e-03, +-3.878510803564006945e-03, +-3.876965531143710189e-03, +-3.875414035539049337e-03, +-3.873856319567621671e-03, +-3.872292386057062021e-03, +-3.870722237844873622e-03, +-3.869145877778623708e-03, +-3.867563308715786952e-03, +-3.865974533523702100e-03, +-3.864379555079853860e-03, +-3.862778376271458307e-03, +-3.861170999995776430e-03, +-3.859557429159988801e-03, +-3.857937666681182133e-03, +-3.856311715486344070e-03, +-3.854679578512436484e-03, +-3.853041258706235879e-03, +-3.851396759024536785e-03, +-3.849746082433926249e-03, +-3.848089231910925643e-03, +-3.846426210441974622e-03, +-3.844757021023360432e-03, +-3.843081666661182349e-03, +-3.841400150371580228e-03, +-3.839712475180349395e-03, +-3.838018644123361751e-03, +-3.836318660246162884e-03, +-3.834612526604194976e-03, +-3.832900246262867499e-03, +-3.831181822297237589e-03, +-3.829457257792305818e-03, +-3.827726555842912975e-03, +-3.825989719553659404e-03, +-3.824246752038980898e-03, +-3.822497656423169948e-03, +-3.820742435840248242e-03, +-3.818981093434122356e-03, +-3.817213632358425895e-03, +-3.815440055776575870e-03, +-3.813660366861850327e-03, +-3.811874568797250871e-03, +-3.810082664775461467e-03, +-3.808284657999157653e-03, +-3.806480551680516914e-03, +-3.804670349041714382e-03, +-3.802854053314483514e-03, +-3.801031667740363724e-03, +-3.799203195570689112e-03, +-3.797368640066450980e-03, +-3.795528004498378068e-03, +-3.793681292146972982e-03, +-3.791828506302393799e-03, +-3.789969650264510444e-03, +-3.788104727342945458e-03, +-3.786233740856952568e-03, +-3.784356694135551560e-03, +-3.782473590517406413e-03, +-3.780584433350767624e-03, +-3.778689225993782288e-03, +-3.776787971814052607e-03, +-3.774880674188897840e-03, +-3.772967336505417615e-03, +-3.771047962160155829e-03, +-3.769122554559516981e-03, +-3.767191117119342465e-03, +-3.765253653265210679e-03, +-3.763310166432345949e-03, +-3.761360660065530929e-03, +-3.759405137619175555e-03, +-3.757443602557346100e-03, +-3.755476058353652419e-03, +-3.753502508491289580e-03, +-3.751522956463141083e-03, +-3.749537405771532095e-03, +-3.747545859928501366e-03, +-3.745548322455584389e-03, +-3.743544796883817305e-03, +-3.741535286753985400e-03, +-3.739519795616218483e-03, +-3.737498327030299231e-03, +-3.735470884565566477e-03, +-3.733437471800818506e-03, +-3.731398092324469170e-03, +-3.729352749734387868e-03, +-3.727301447637933803e-03, +-3.725244189652086955e-03, +-3.723180979403221697e-03, +-3.721111820527229531e-03, +-3.719036716669555948e-03, +-3.716955671485076829e-03, +-3.714868688638049872e-03, +-3.712775771802447663e-03, +-3.710676924661432483e-03, +-3.708572150907862852e-03, +-3.706461454243866784e-03, +-3.704344838381065999e-03, +-3.702222307040635343e-03, +-3.700093863953010480e-03, +-3.697959512858121217e-03, +-3.695819257505360278e-03, +-3.693673101653470112e-03, +-3.691521049070646109e-03, +-3.689363103534449868e-03, +-3.687199268831807021e-03, +-3.685029548759114794e-03, +-3.682853947122081972e-03, +-3.680672467735779645e-03, +-3.678485114424712328e-03, +-3.676291891022716481e-03, +-3.674092801372855557e-03, +-3.671887849327806416e-03, +-3.669677038749275151e-03, +-3.667460373508600775e-03, +-3.665237857486207482e-03, +-3.663009494571925137e-03, +-3.660775288664939401e-03, +-3.658535243673692421e-03, +-3.656289363515905378e-03, +-3.654037652118663059e-03, +-3.651780113418243850e-03, +-3.649516751360305355e-03, +-3.647247569899692704e-03, +-3.644972573000519224e-03, +-3.642691764636241461e-03, +-3.640405148789490914e-03, +-3.638112729452060590e-03, +-3.635814510625228098e-03, +-3.633510496319253009e-03, +-3.631200690553678702e-03, +-3.628885097357433843e-03, +-3.626563720768353604e-03, +-3.624236564833805893e-03, +-3.621903633610091145e-03, +-3.619564931162784927e-03, +-3.617220461566700209e-03, +-3.614870228905758560e-03, +-3.612514237273046092e-03, +-3.610152490770868975e-03, +-3.607784993510625930e-03, +-3.605411749612836853e-03, +-3.603032763207273358e-03, +-3.600648038432701162e-03, +-3.598257579437139000e-03, +-3.595861390377650020e-03, +-3.593459475420297984e-03, +-3.591051838740544084e-03, +-3.588638484522648463e-03, +-3.586219416960076140e-03, +-3.583794640255421986e-03, +-3.581364158620262833e-03, +-3.578927976275320545e-03, +-3.576486097450322366e-03, +-3.574038526384019573e-03, +-3.571585267324324086e-03, +-3.569126324528076009e-03, +-3.566661702261131675e-03, +-3.564191404798495912e-03, +-3.561715436424100004e-03, +-3.559233801430770894e-03, +-3.556746504120632778e-03, +-3.554253548804449641e-03, +-3.551754939802289658e-03, +-3.549250681443023858e-03, +-3.546740778064412861e-03, +-3.544225234013443845e-03, +-3.541704053645814039e-03, +-3.539177241326248603e-03, +-3.536644801428465070e-03, +-3.534106738335041509e-03, +-3.531563056437541856e-03, +-3.529013760136402288e-03, +-3.526458853840958550e-03, +-3.523898341969514906e-03, +-3.521332228949205796e-03, +-3.518760519216042673e-03, +-3.516183217215008983e-03, +-3.513600327399900563e-03, +-3.511011854233248887e-03, +-3.508417802186752574e-03, +-3.505818175740595642e-03, +-3.503212979384157447e-03, +-3.500602217615360855e-03, +-3.497985894941069065e-03, +-3.495364015877010580e-03, +-3.492736584947659512e-03, +-3.490103606686266804e-03, +-3.487465085634981667e-03, +-3.484821026344622156e-03, +-3.482171433374895483e-03, +-3.479516311294198957e-03, +-3.476855664679680703e-03, +-3.474189498117350675e-03, +-3.471517816201894185e-03, +-3.468840623536622886e-03, +-3.466157924733862927e-03, +-3.463469724414398963e-03, +-3.460776027207792052e-03, +-3.458076837752484169e-03, +-3.455372160695324192e-03, +-3.452662000692184596e-03, +-3.449946362407316138e-03, +-3.447225250513794113e-03, +-3.444498669693399091e-03, +-3.441766624636485947e-03, +-3.439029120042066262e-03, +-3.436286160617880309e-03, +-3.433537751080192792e-03, +-3.430783896154002317e-03, +-3.428024600572841894e-03, +-3.425259869078872178e-03, +-3.422489706422920074e-03, +-3.419714117364373775e-03, +-3.416933106671057440e-03, +-3.414146679119719942e-03, +-3.411354839495335783e-03, +-3.408557592591582135e-03, +-3.405754943210752110e-03, +-3.402946896163563505e-03, +-3.400133456269389520e-03, +-3.397314628356041481e-03, +-3.394490417259857316e-03, +-3.391660827825777012e-03, +-3.388825864907153533e-03, +-3.385985533365827409e-03, +-3.383139838072243832e-03, +-3.380288783905183343e-03, +-3.377432375752028107e-03, +-3.374570618508559820e-03, +-3.371703517078890756e-03, +-3.368831076375880529e-03, +-3.365953301320601370e-03, +-3.363070196842489912e-03, +-3.360181767879709749e-03, +-3.357288019378516959e-03, +-3.354388956293711567e-03, +-3.351484583588548206e-03, +-3.348574906234533591e-03, +-3.345659929211699298e-03, +-3.342739657508319445e-03, +-3.339814096121065511e-03, +-3.336883250055041033e-03, +-3.333947124323605963e-03, +-3.331005723948433049e-03, +-3.328059053959668296e-03, +-3.325107119395607439e-03, +-3.322149925302986511e-03, +-3.319187476736804032e-03, +-3.316219778760203917e-03, +-3.313246836444942549e-03, +-3.310268654870737823e-03, +-3.307285239125689821e-03, +-3.304296594306233101e-03, +-3.301302725516959326e-03, +-3.298303637870694457e-03, +-3.295299336488583322e-03, +-3.292289826499895759e-03, +-3.289275113042214402e-03, +-3.286255201261262075e-03, +-3.283230096310925210e-03, +-3.280199803353409105e-03, +-3.277164327559020218e-03, +-3.274123674106102846e-03, +-3.271077848181468475e-03, +-3.268026854979874489e-03, +-3.264970699704133027e-03, +-3.261909387565529485e-03, +-3.258842923783066611e-03, +-3.255771313584258572e-03, +-3.252694562204425793e-03, +-3.249612674887081797e-03, +-3.246525656883948383e-03, +-3.243433513454687615e-03, +-3.240336249867051006e-03, +-3.237233871396959315e-03, +-3.234126383328248845e-03, +-3.231013790952954202e-03, +-3.227896099571020330e-03, +-3.224773314490451698e-03, +-3.221645441027347432e-03, +-3.218512484505756457e-03, +-3.215374450257616791e-03, +-3.212231343623175774e-03, +-3.209083169950324808e-03, +-3.205929934595085941e-03, +-3.202771642921491742e-03, +-3.199608300301408359e-03, +-3.196439912114797458e-03, +-3.193266483749432599e-03, +-3.190088020601038882e-03, +-3.186904528073330242e-03, +-3.183716011577884114e-03, +-3.180522476534132330e-03, +-3.177323928369530249e-03, +-3.174120372519260123e-03, +-3.170911814426523832e-03, +-3.167698259542332112e-03, +-3.164479713325403076e-03, +-3.161256181242603266e-03, +-3.158027668768446320e-03, +-3.154794181385148916e-03, +-3.151555724583129069e-03, +-3.148312303860235483e-03, +-3.145063924722274040e-03, +-3.141810592682889400e-03, +-3.138552313263400211e-03, +-3.135289091993009002e-03, +-3.132020934408599223e-03, +-3.128747846054780787e-03, +-3.125469832484044450e-03, +-3.122186899256501613e-03, +-3.118899051939962811e-03, +-3.115606296110099913e-03, +-3.112308637350120425e-03, +-3.109006081251087118e-03, +-3.105698633411676027e-03, +-3.102386299438087119e-03, +-3.099069084944577716e-03, +-3.095746995552675369e-03, +-3.092420036891701737e-03, +-3.089088214598719687e-03, +-3.085751534318279150e-03, +-3.082410001702586694e-03, +-3.079063622411539781e-03, +-3.075712402112496923e-03, +-3.072356346480574745e-03, +-3.068995461198354389e-03, +-3.065629751955979091e-03, +-3.062259224451280380e-03, +-3.058883884389553866e-03, +-3.055503737483513272e-03, +-3.052118789453739725e-03, +-3.048729046028011286e-03, +-3.045334512941843749e-03, +-3.041935195938162782e-03, +-3.038531100767261420e-03, +-3.035122233187270615e-03, +-3.031708598963433251e-03, +-3.028290203868622826e-03, +-3.024867053683214652e-03, +-3.021439154194956612e-03, +-3.018006511198998657e-03, +-3.014569130498059336e-03, +-3.011127017902109210e-03, +-3.007680179228686135e-03, +-3.004228620302610772e-03, +-3.000772346956085464e-03, +-2.997311365028822172e-03, +-2.993845680367818261e-03, +-2.990375298827266295e-03, +-2.986900226269110885e-03, +-2.983420468562162677e-03, +-2.979936031583029030e-03, +-2.976446921215248394e-03, +-2.972953143349833273e-03, +-2.969454703885152265e-03, +-2.965951608726780445e-03, +-2.962443863787536224e-03, +-2.958931474987650488e-03, +-2.955414448254504653e-03, +-2.951892789522699186e-03, +-2.948366504734211899e-03, +-2.944835599838100011e-03, +-2.941300080790790281e-03, +-2.937759953555800149e-03, +-2.934215224103837484e-03, +-2.930665898412944566e-03, +-2.927111982468250887e-03, +-2.923553482261895525e-03, +-2.919990403793571842e-03, +-2.916422753069657960e-03, +-2.912850536104138327e-03, +-2.909273758917731156e-03, +-2.905692427538443534e-03, +-2.902106548001459098e-03, +-2.898516126348952421e-03, +-2.894921168630170544e-03, +-2.891321680901578258e-03, +-2.887717669226582285e-03, +-2.884109139675637961e-03, +-2.880496098326388449e-03, +-2.876878551263343815e-03, +-2.873256504578198048e-03, +-2.869629964369589236e-03, +-2.865998936743011528e-03, +-2.862363427811335983e-03, +-2.858723443694038188e-03, +-2.855078990517716502e-03, +-2.851430074416034816e-03, +-2.847776701529477518e-03, +-2.844118878005478732e-03, +-2.840456609998532472e-03, +-2.836789903669887768e-03, +-2.833118765187883463e-03, +-2.829443200727627724e-03, +-2.825763216471138990e-03, +-2.822078818607422733e-03, +-2.818390013332255483e-03, +-2.814696806848252485e-03, +-2.810999205365029025e-03, +-2.807297215098865199e-03, +-2.803590842273042012e-03, +-2.799880093117579002e-03, +-2.796164973869137964e-03, +-2.792445490771590204e-03, +-2.788721650075202951e-03, +-2.784993458037165418e-03, +-2.781260920921537622e-03, +-2.777524044999000151e-03, +-2.773782836546989476e-03, +-2.770037301849794659e-03, +-2.766287447198281096e-03, +-2.762533278890183259e-03, +-2.758774803229824529e-03, +-2.755012026528213046e-03, +-2.751244955103180484e-03, +-2.747473595279144396e-03, +-2.743697953387014971e-03, +-2.739918035764783537e-03, +-2.736133848756564565e-03, +-2.732345398713620886e-03, +-2.728552691993414801e-03, +-2.724755734960180968e-03, +-2.720954533984839673e-03, +-2.717149095444786056e-03, +-2.713339425723978581e-03, +-2.709525531213076953e-03, +-2.705707418309164121e-03, +-2.701885093415888096e-03, +-2.698058562943541749e-03, +-2.694227833308771372e-03, +-2.690392910934914089e-03, +-2.686553802251696009e-03, +-2.682710513695317229e-03, +-2.678863051708591913e-03, +-2.675011422740715405e-03, +-2.671155633247186169e-03, +-2.667295689690377374e-03, +-2.663431598538578034e-03, +-2.659563366267015620e-03, +-2.655690999356929722e-03, +-2.651814504296116752e-03, +-2.647933887578847543e-03, +-2.644049155705676096e-03, +-2.640160315183512438e-03, +-2.636267372525758802e-03, +-2.632370334252046810e-03, +-2.628469206888337222e-03, +-2.624563996967059151e-03, +-2.620654711026792604e-03, +-2.616741355612599382e-03, +-2.612823937275732950e-03, +-2.608902462573579450e-03, +-2.604976938070224530e-03, +-2.601047370335598120e-03, +-2.597113765946042555e-03, +-2.593176131484227140e-03, +-2.589234473538845008e-03, +-2.585288798705166497e-03, +-2.581339113584252450e-03, +-2.577385424783563538e-03, +-2.573427738916823221e-03, +-2.569466062603800900e-03, +-2.565500402470433788e-03, +-2.561530765148935761e-03, +-2.557557157277549724e-03, +-2.553579585500638256e-03, +-2.549598056468815876e-03, +-2.545612576838637668e-03, +-2.541623153272936243e-03, +-2.537629792440529875e-03, +-2.533632501016157019e-03, +-2.529631285681039222e-03, +-2.525626153122036317e-03, +-2.521617110032205872e-03, +-2.517604163110740301e-03, +-2.513587319062670668e-03, +-2.509566584599221863e-03, +-2.505541966437467398e-03, +-2.501513471300485965e-03, +-2.497481105917455542e-03, +-2.493444877023391452e-03, +-2.489404791359259121e-03, +-2.485360855672106781e-03, +-2.481313076714805263e-03, +-2.477261461245999861e-03, +-2.473206016030649827e-03, +-2.469146747839119378e-03, +-2.465083663448162151e-03, +-2.461016769639965806e-03, +-2.456946073202734889e-03, +-2.452871580930774103e-03, +-2.448793299623834314e-03, +-2.444711236087673736e-03, +-2.440625397133954280e-03, +-2.436535789579975710e-03, +-2.432442420249003069e-03, +-2.428345295969960502e-03, +-2.424244423577540108e-03, +-2.420139809912320774e-03, +-2.416031461820512295e-03, +-2.411919386154052526e-03, +-2.407803589770748758e-03, +-2.403684079534027917e-03, +-2.399560862312849832e-03, +-2.395433944982305711e-03, +-2.391303334422634555e-03, +-2.387169037520296081e-03, +-2.383031061166934229e-03, +-2.378889412260040692e-03, +-2.374744097702826979e-03, +-2.370595124403987192e-03, +-2.366442499277845481e-03, +-2.362286229244435400e-03, +-2.358126321229230601e-03, +-2.353962782163440161e-03, +-2.349795618983710217e-03, +-2.345624838632251897e-03, +-2.341450448056942805e-03, +-2.337272454211114948e-03, +-2.333090864053422031e-03, +-2.328905684548493015e-03, +-2.324716922666006640e-03, +-2.320524585381241768e-03, +-2.316328679675250853e-03, +-2.312129212534019037e-03, +-2.307926190949559191e-03, +-2.303719621918846796e-03, +-2.299509512444472201e-03, +-2.295295869534540439e-03, +-2.291078700202411455e-03, +-2.286858011466847990e-03, +-2.282633810352133110e-03, +-2.278406103887770096e-03, +-2.274174899108629463e-03, +-2.269940203055064755e-03, +-2.265702022772578608e-03, +-2.261460365312177503e-03, +-2.257215237730093339e-03, +-2.252966647087662876e-03, +-2.248714600451981720e-03, +-2.244459104894954999e-03, +-2.240200167493941377e-03, +-2.235937795331635093e-03, +-2.231671995495794914e-03, +-2.227402775079594111e-03, +-2.223130141181274815e-03, +-2.218854100904285934e-03, +-2.214574661357419320e-03, +-2.210291829654503597e-03, +-2.206005612914527757e-03, +-2.201716018261798587e-03, +-2.197423052825657475e-03, +-2.193126723740397577e-03, +-2.188827038145913038e-03, +-2.184524003186630401e-03, +-2.180217626012650491e-03, +-2.175907913778692832e-03, +-2.171594873644679818e-03, +-2.167278512775888070e-03, +-2.162958838342223314e-03, +-2.158635857518818868e-03, +-2.154309577485924616e-03, +-2.149980005428614709e-03, +-2.145647148537174406e-03, +-2.141311014006724075e-03, +-2.136971609037364907e-03, +-2.132628940834307724e-03, +-2.128283016607576336e-03, +-2.123933843572151526e-03, +-2.119581428948076433e-03, +-2.115225779960220199e-03, +-2.110866903838167809e-03, +-2.106504807816890566e-03, +-2.102139499135651478e-03, +-2.097770985039170127e-03, +-2.093399272776554944e-03, +-2.089024369601941589e-03, +-2.084646282774406216e-03, +-2.080265019557695719e-03, +-2.075880587220379960e-03, +-2.071492993035964954e-03, +-2.067102244282561542e-03, +-2.062708348243239703e-03, +-2.058311312205690288e-03, +-2.053911143462363795e-03, +-2.049507849310583558e-03, +-2.045101437052321541e-03, +-2.040691913994050876e-03, +-2.036279287447443666e-03, +-2.031863564728380450e-03, +-2.027444753157565168e-03, +-2.023022860060659164e-03, +-2.018597892767438982e-03, +-2.014169858612913956e-03, +-2.009738764936242015e-03, +-2.005304619081386703e-03, +-2.000867428397017003e-03, +-1.996427200236253630e-03, +-1.991983941956793937e-03, +-1.987537660921056323e-03, +-1.983088364495822885e-03, +-1.978636060052611952e-03, +-1.974180754967331999e-03, +-1.969722456620412194e-03, +-1.965261172396939003e-03, +-1.960796909686390779e-03, +-1.956329675882544517e-03, +-1.951859478384134839e-03, +-1.947386324593870181e-03, +-1.942910221919091126e-03, +-1.938431177771687136e-03, +-1.933949199567768038e-03, +-1.929464294728054988e-03, +-1.924976470677510106e-03, +-1.920485734845488049e-03, +-1.915992094665880646e-03, +-1.911495557576765609e-03, +-1.906996131020594542e-03, +-1.902493822444291383e-03, +-1.897988639298913479e-03, +-1.893480589040024342e-03, +-1.888969679127396571e-03, +-1.884455917024884354e-03, +-1.879939310201067049e-03, +-1.875419866128497613e-03, +-1.870897592283813629e-03, +-1.866372496148408422e-03, +-1.861844585207391095e-03, +-1.857313866950288661e-03, +-1.852780348870933713e-03, +-1.848244038467138518e-03, +-1.843704943241098772e-03, +-1.839163070699026490e-03, +-1.834618428351281411e-03, +-1.830071023712519316e-03, +-1.825520864301368720e-03, +-1.820967957640566180e-03, +-1.816412311257120226e-03, +-1.811853932681912810e-03, +-1.807292829450105444e-03, +-1.802729009100834546e-03, +-1.798162479177082195e-03, +-1.793593247226368727e-03, +-1.789021320799751361e-03, +-1.784446707452490982e-03, +-1.779869414743965846e-03, +-1.775289450237381873e-03, +-1.770706821499925957e-03, +-1.766121536102911683e-03, +-1.761533601621387063e-03, +-1.756943025634558888e-03, +-1.752349815725404375e-03, +-1.747753979480803650e-03, +-1.743155524491721677e-03, +-1.738554458352881702e-03, +-1.733950788662695641e-03, +-1.729344523023960360e-03, +-1.724735669042794500e-03, +-1.720124234329317627e-03, +-1.715510226497797682e-03, +-1.710893653165741768e-03, +-1.706274521955066219e-03, +-1.701652840490991804e-03, +-1.697028616402698363e-03, +-1.692401857323241323e-03, +-1.687772570889275233e-03, +-1.683140764741200340e-03, +-1.678506446523284892e-03, +-1.673869623883316241e-03, +-1.669230304472987033e-03, +-1.664588495947524199e-03, +-1.659944205965837487e-03, +-1.655297442190648049e-03, +-1.650648212288223461e-03, +-1.645996523928276245e-03, +-1.641342384784648650e-03, +-1.636685802534292413e-03, +-1.632026784857957885e-03, +-1.627365339440086907e-03, +-1.622701473968499479e-03, +-1.618035196134771925e-03, +-1.613366513633890820e-03, +-1.608695434164364229e-03, +-1.604021965428406669e-03, +-1.599346115131557253e-03, +-1.594667890982881574e-03, +-1.589987300695068842e-03, +-1.585304351984087763e-03, +-1.580619052569574899e-03, +-1.575931410174506589e-03, +-1.571241432525088142e-03, +-1.566549127351423007e-03, +-1.561854502386703309e-03, +-1.557157565367375731e-03, +-1.552458324033779459e-03, +-1.547756786129121610e-03, +-1.543052959400158762e-03, +-1.538346851597113037e-03, +-1.533638470473329928e-03, +-1.528927823785677714e-03, +-1.524214919294187079e-03, +-1.519499764762180342e-03, +-1.514782367956418047e-03, +-1.510062736646781718e-03, +-1.505340878606399200e-03, +-1.500616801611810757e-03, +-1.495890513442573767e-03, +-1.491162021881677546e-03, +-1.486431334715209839e-03, +-1.481698459732254045e-03, +-1.476963404725576811e-03, +-1.472226177490612792e-03, +-1.467486785826142490e-03, +-1.462745237534207685e-03, +-1.458001540419816104e-03, +-1.453255702291094287e-03, +-1.448507730959429406e-03, +-1.443757634239087838e-03, +-1.439005419947628249e-03, +-1.434251095905521908e-03, +-1.429494669936276496e-03, +-1.424736149866614359e-03, +-1.419975543526174125e-03, +-1.415212858747394052e-03, +-1.410448103366190083e-03, +-1.405681285221050325e-03, +-1.400912412153691201e-03, +-1.396141492008698805e-03, +-1.391368532633387731e-03, +-1.386593541878542238e-03, +-1.381816527597344406e-03, +-1.377037497646090578e-03, +-1.372256459884092046e-03, +-1.367473422173378196e-03, +-1.362688392378856757e-03, +-1.357901378368447584e-03, +-1.353112388012710785e-03, +-1.348321429185247219e-03, +-1.343528509762327919e-03, +-1.338733637623020075e-03, +-1.333936820649349233e-03, +-1.329138066726028239e-03, +-1.324337383740305457e-03, +-1.319534779582733248e-03, +-1.314730262145961687e-03, +-1.309923839326012501e-03, +-1.305115519021089266e-03, +-1.300305309132317047e-03, +-1.295493217563611216e-03, +-1.290679252221418319e-03, +-1.285863421014834477e-03, +-1.281045731855783628e-03, +-1.276226192658653884e-03, +-1.271404811340470569e-03, +-1.266581595821033050e-03, +-1.261756554022514876e-03, +-1.256929693869906573e-03, +-1.252101023290607979e-03, +-1.247270550214566375e-03, +-1.242438282574461882e-03, +-1.237604228305383500e-03, +-1.232768395344740206e-03, +-1.227930791632975442e-03, +-1.223091425112394874e-03, +-1.218250303728432961e-03, +-1.213407435428444066e-03, +-1.208562828162468555e-03, +-1.203716489883090981e-03, +-1.198868428545169255e-03, +-1.194018652105981225e-03, +-1.189167168525361940e-03, +-1.184313985765385324e-03, +-1.179459111790506212e-03, +-1.174602554567698905e-03, +-1.169744322066084644e-03, +-1.164884422257327556e-03, +-1.160022863115323273e-03, +-1.155159652616058203e-03, +-1.150294798738360665e-03, +-1.145428309462808878e-03, +-1.140560192772468008e-03, +-1.135690456652773935e-03, +-1.130819109091252880e-03, +-1.125946158077656715e-03, +-1.121071611604133184e-03, +-1.116195477664811515e-03, +-1.111317764256244782e-03, +-1.106438479376998770e-03, +-1.101557631027812005e-03, +-1.096675227211738003e-03, +-1.091791275933870096e-03, +-1.086905785201220005e-03, +-1.082018763023390260e-03, +-1.077130217411668891e-03, +-1.072240156379696647e-03, +-1.067348587943088394e-03, +-1.062455520119301704e-03, +-1.057560960928399275e-03, +-1.052664918391925473e-03, +-1.047767400533680887e-03, +-1.042868415379578136e-03, +-1.037967970957368426e-03, +-1.033066075296791390e-03, +-1.028162736429719722e-03, +-1.023257962389769078e-03, +-1.018351761212722218e-03, +-1.013444140936125030e-03, +-1.008535109599455670e-03, +-1.003624675244251842e-03, +-9.987128459138408347e-04, +-9.937996296532150553e-04, +-9.888850345097734054e-04, +-9.839690685321212868e-04, +-9.790517397713601518e-04, +-9.741330562798684260e-04, +-9.692130261120635937e-04, +-9.642916573242691670e-04, +-9.593689579744402738e-04, +-9.544449361222999417e-04, +-9.495195998295057407e-04, +-9.445929571592927548e-04, +-9.396650161766372964e-04, +-9.347357849484014313e-04, +-9.298052715429371354e-04, +-9.248734840305107606e-04, +-9.199404304829121798e-04, +-9.150061189735939982e-04, +-9.100705575778384121e-04, +-9.051337543724584031e-04, +-9.001957174356741385e-04, +-8.952564548478775513e-04, +-8.903159746904019869e-04, +-8.853742850468351725e-04, +-8.804313940017849610e-04, +-8.754873096416562707e-04, +-8.705420400545011393e-04, +-8.655955933297545049e-04, +-8.606479775583737420e-04, +-8.556992008329891491e-04, +-8.507492712475713155e-04, +-8.457981968975717421e-04, +-8.408459858800751722e-04, +-8.358926462934120971e-04, +-8.309381862375756324e-04, +-8.259826138138818370e-04, +-8.210259371248432953e-04, +-8.160681642749338053e-04, +-8.111093033694637350e-04, +-8.061493625153449277e-04, +-8.011883498209674279e-04, +-7.962262733957959412e-04, +-7.912631413510790111e-04, +-7.862989617988917768e-04, +-7.813337428528452583e-04, +-7.763674926279618901e-04, +-7.714002192403812685e-04, +-7.664319308075215895e-04, +-7.614626354482209201e-04, +-7.564923412824051075e-04, +-7.515210564312260148e-04, +-7.465487890172307645e-04, +-7.415755471639472489e-04, +-7.366013389963146658e-04, +-7.316261726403514281e-04, +-7.266500562230170362e-04, +-7.216729978729750309e-04, +-7.166950057194842886e-04, +-7.117160878931461446e-04, +-7.067362525257904439e-04, +-7.017555077501265361e-04, +-6.967738617001708852e-04, +-6.917913225108497091e-04, +-6.868078983181522858e-04, +-6.818235972592790557e-04, +-6.768384274722992304e-04, +-6.718523970963093030e-04, +-6.668655142715712841e-04, +-6.618777871392382897e-04, +-6.568892238412189083e-04, +-6.518998325209467669e-04, +-6.469096213221462756e-04, +-6.419185983901459216e-04, +-6.369267718706513861e-04, +-6.319341499104488662e-04, +-6.269407406575602240e-04, +-6.219465522603919968e-04, +-6.169515928684559574e-04, +-6.119558706322325049e-04, +-6.069593937028270811e-04, +-6.019621702324080793e-04, +-5.969642083737945228e-04, +-5.919655162806186947e-04, +-5.869661021074734815e-04, +-5.819659740095655363e-04, +-5.769651401428735728e-04, +-5.719636086642979848e-04, +-5.669613877313716896e-04, +-5.619584855021325176e-04, +-5.569549101358923452e-04, +-5.519506697919962252e-04, +-5.469457726311479327e-04, +-5.419402268141718061e-04, +-5.369340405027752663e-04, +-5.319272218594274949e-04, +-5.269197790470687591e-04, +-5.219117202292603572e-04, +-5.169030535703410690e-04, +-5.118937872350794518e-04, +-5.068839293888256292e-04, +-5.018734881976683916e-04, +-4.968624718280286205e-04, +-4.918508884470965473e-04, +-4.868387462224763517e-04, +-4.818260533220698272e-04, +-4.768128179148371109e-04, +-4.717990481696722580e-04, +-4.667847522561690676e-04, +-4.617699383444967250e-04, +-4.567546146049936595e-04, +-4.517387892088831720e-04, +-4.467224703273114223e-04, +-4.417056661320536786e-04, +-4.366883847953999882e-04, +-4.316706344898503544e-04, +-4.266524233882801852e-04, +-4.216337596640858478e-04, +-4.166146514908429283e-04, +-4.115951070424573688e-04, +-4.065751344933174732e-04, +-4.015547420178937820e-04, +-3.965339377911702599e-04, +-3.915127299882981637e-04, +-3.864911267844669141e-04, +-3.814691363556782164e-04, +-3.764467668776101412e-04, +-3.714240265263889684e-04, +-3.664009234784642872e-04, +-3.613774659102594487e-04, +-3.563536619986065485e-04, +-3.513295199203393627e-04, +-3.463050478524500693e-04, +-3.412802539722435300e-04, +-3.362551464569885572e-04, +-3.312297334840696474e-04, +-3.262040232311451664e-04, +-3.211780238758533143e-04, +-3.161517435956853815e-04, +-3.111251905687585141e-04, +-3.060983729725669841e-04, +-3.010712989853171675e-04, +-2.960439767846800613e-04, +-2.910164145485059353e-04, +-2.859886204549791562e-04, +-2.809606026817655167e-04, +-2.759323694067256408e-04, +-2.709039288077919809e-04, +-2.658752890626163976e-04, +-2.608464583490082323e-04, +-2.558174448445268089e-04, +-2.507882567266359877e-04, +-2.457589021728607236e-04, +-2.407293893604361642e-04, +-2.356997264664632873e-04, +-2.306699216680626675e-04, +-2.256399831420820398e-04, +-2.206099190649710206e-04, +-2.155797376135516492e-04, +-2.105494469637715833e-04, +-2.055190552920391309e-04, +-2.004885707739725148e-04, +-1.954580015851738574e-04, +-1.904273559011046872e-04, +-1.853966418967892195e-04, +-1.803658677469723254e-04, +-1.753350416262725931e-04, +-1.703041717087782464e-04, +-1.652732661684803105e-04, +-1.602423331788683397e-04, +-1.552113809130859466e-04, +-1.501804175440832410e-04, +-1.451494512443261278e-04, +-1.401184901856681816e-04, +-1.350875425401257160e-04, +-1.300566164787395334e-04, +-1.250257201722927486e-04, +-1.199948617914654500e-04, +-1.149640495058681065e-04, +-1.099332914853172938e-04, +-1.049025958985899323e-04, +-9.987197091419418272e-05, +-9.484142470024504654e-05, +-8.981096542416963982e-05, +-8.478060125286251850e-05, +-7.975034035284146467e-05, +-7.472019088984055847e-05, +-6.969016102924627124e-05, +-6.466025893569147252e-05, +-5.963049277321014565e-05, +-5.460087070539320123e-05, +-4.957140089509372993e-05, +-4.454209150430288170e-05, +-3.951295069492042857e-05, +-3.448398662762111610e-05, +-2.945520746262567341e-05, +-2.442662135957593341e-05, +-1.939823647718497094e-05, +-1.437006097367253702e-05, +-9.342103006359294423e-06, +-4.314370731821798523e-06, + 7.131276939524381272e-07, + 5.740384115914657728e-06, + 1.076739037979978583e-05, + 1.579413833197147938e-05, + 2.082061981982787240e-05, + 2.584682669136606134e-05, + 3.087275079553189071e-05, + 3.589838398234507336e-05, + 4.092371810212796704e-05, + 4.594874500663928053e-05, + 5.097345654835918461e-05, + 5.599784458033394590e-05, + 6.102190095702997324e-05, + 6.604561753361842043e-05, + 7.106898616610043192e-05, + 7.609199871165672345e-05, + 8.111464702821232235e-05, + 8.613692297484169997e-05, + 9.115881841161467948e-05, + 9.618032519944032428e-05, + 1.012014352004176097e-04, + 1.062221402776796365e-04, + 1.112424322952385226e-04, + 1.162623031183917751e-04, + 1.212817446132864144e-04, + 1.263007486472686697e-04, + 1.313193070890087571e-04, + 1.363374118077297277e-04, + 1.413550546743421929e-04, + 1.463722275606718854e-04, + 1.513889223395846397e-04, + 1.564051308852813500e-04, + 1.614208450731416009e-04, + 1.664360567795688704e-04, + 1.714507578823959942e-04, + 1.764649402604508892e-04, + 1.814785957939608516e-04, + 1.864917163643970289e-04, + 1.915042938543219805e-04, + 1.965163201476801899e-04, + 2.015277871299247538e-04, + 2.065386866872464329e-04, + 2.115490107077046375e-04, + 2.165587510805162179e-04, + 2.215678996958979569e-04, + 2.265764484460326754e-04, + 2.315843892237928010e-04, + 2.365917139239884204e-04, + 2.415984144425921561e-04, + 2.466044826768704632e-04, + 2.516099105256694793e-04, + 2.566146898892653506e-04, + 2.616188126692077813e-04, + 2.666222707687245495e-04, + 2.716250560922871217e-04, + 2.766271605460153310e-04, + 2.816285760375223908e-04, + 2.866292944757620762e-04, + 2.916293077713188022e-04, + 2.966286078365324699e-04, + 3.016271865847322065e-04, + 3.066250359313641522e-04, + 3.116221477932222192e-04, + 3.166185140885754848e-04, + 3.216141267375134021e-04, + 3.266089776615135822e-04, + 3.316030587838450635e-04, + 3.365963620294169030e-04, + 3.415888793246163045e-04, + 3.465806025976668936e-04, + 3.515715237784641355e-04, + 3.565616347984285344e-04, + 3.615509275909038604e-04, + 3.665393940907298118e-04, + 3.715270262345831591e-04, + 3.765138159611060601e-04, + 3.814997552101942815e-04, + 3.864848359238459122e-04, + 3.914690500460055091e-04, + 3.964523895218547583e-04, + 4.014348462989390689e-04, + 4.064164123264020728e-04, + 4.113970795551056994e-04, + 4.163768399379810781e-04, + 4.213556854295988146e-04, + 4.263336079865627732e-04, + 4.313105995673656066e-04, + 4.362866521322281317e-04, + 4.412617576434486595e-04, + 4.462359080652511523e-04, + 4.512090953636261172e-04, + 4.561813115067382663e-04, + 4.611525484644919681e-04, + 4.661227982088746689e-04, + 4.710920527140909000e-04, + 4.760603039557845251e-04, + 4.810275439121725993e-04, + 4.859937645632766696e-04, + 4.909589578910448018e-04, + 4.959231158796486520e-04, + 5.008862305153199143e-04, + 5.058482937862093754e-04, + 5.108092976827764134e-04, + 5.157692341973654001e-04, + 5.207280953246036037e-04, + 5.256858730612490749e-04, + 5.306425594060374491e-04, + 5.355981463599705610e-04, + 5.405526259264408027e-04, + 5.455059901104696886e-04, + 5.504582309199365815e-04, + 5.554093403643227530e-04, + 5.603593104556569161e-04, + 5.653081332083713514e-04, + 5.702558006385919720e-04, + 5.752023047652522324e-04, + 5.801476376093436197e-04, + 5.850917911940243989e-04, + 5.900347575449228646e-04, + 5.949765286899730840e-04, + 5.999170966592682046e-04, + 6.048564534854626931e-04, + 6.097945912033338840e-04, + 6.147315018501870376e-04, + 6.196671774657057201e-04, + 6.246016100917940522e-04, + 6.295347917728646731e-04, + 6.344667145559683029e-04, + 6.393973704900246090e-04, + 6.443267516270596070e-04, + 6.492548500208856436e-04, + 6.541816577283296897e-04, + 6.591071668084805789e-04, + 6.640313693228031737e-04, + 6.689542573354304500e-04, + 6.738758229130100818e-04, + 6.787960581245555810e-04, + 6.837149550417856523e-04, + 6.886325057389721879e-04, + 6.935487022927889133e-04, + 6.984635367827072292e-04, + 7.033770012905738063e-04, + 7.082890879009491819e-04, + 7.131997887012290821e-04, + 7.181090957809479298e-04, + 7.230170012326090192e-04, + 7.279234971515378223e-04, + 7.328285756351833298e-04, + 7.377322287843294298e-04, + 7.426344487017946241e-04, + 7.475352274936555505e-04, + 7.524345572684885833e-04, + 7.573324301374914809e-04, + 7.622288382147690729e-04, + 7.671237736171875434e-04, + 7.720172284642151618e-04, + 7.769091948782697694e-04, + 7.817996649845610282e-04, + 7.866886309109471977e-04, + 7.915760847883212192e-04, + 7.964620187501955748e-04, + 8.013464249330303673e-04, + 8.062292954763714469e-04, + 8.111106225220851822e-04, + 8.159903982154662972e-04, + 8.208686147044904225e-04, + 8.257452641399325990e-04, + 8.306203386756540489e-04, + 8.354938304684458340e-04, + 8.403657316778860662e-04, + 8.452360344667323886e-04, + 8.501047310004908970e-04, + 8.549718134478203301e-04, + 8.598372739803738845e-04, + 8.647011047726530647e-04, + 8.695632980022881655e-04, + 8.744238458501656661e-04, + 8.792827404997262094e-04, + 8.841399741379102426e-04, + 8.889955389544505759e-04, + 8.938494271422828610e-04, + 8.987016308976549872e-04, + 9.035521424193773557e-04, + 9.084009539099318015e-04, + 9.132480575747167718e-04, + 9.180934456221671305e-04, + 9.229371102640440737e-04, + 9.277790437152779205e-04, + 9.326192381938264078e-04, + 9.374576859210574133e-04, + 9.422943791213351161e-04, + 9.471293100224080323e-04, + 9.519624708552579858e-04, + 9.567938538539559092e-04, + 9.616234512559359302e-04, + 9.664512553021259098e-04, + 9.712772582361963065e-04, + 9.761014523057616899e-04, + 9.809238297610986708e-04, + 9.857443828563525103e-04, + 9.905631038487760099e-04, + 9.953799849988693733e-04, + 1.000195018570651474e-03, + 1.005008196831514572e-03, + 1.009819512052071008e-03, + 1.014628956506495160e-03, + 1.019436522472365802e-03, + 1.024242202230527974e-03, + 1.029045988065466818e-03, + 1.033847872264911190e-03, + 1.038647847120194702e-03, + 1.043445904926137979e-03, + 1.048242037980867594e-03, + 1.053036238586127884e-03, + 1.057828499047376797e-03, + 1.062618811673057741e-03, + 1.067407168775790904e-03, + 1.072193562671103868e-03, + 1.076977985678603204e-03, + 1.081760430121266915e-03, + 1.086540888325537033e-03, + 1.091319352621614733e-03, + 1.096095815343307031e-03, + 1.100870268827879332e-03, + 1.105642705416389360e-03, + 1.110413117453535378e-03, + 1.115181497287511979e-03, + 1.119947837270396504e-03, + 1.124712129757734873e-03, + 1.129474367108864461e-03, + 1.134234541687048322e-03, + 1.138992645858730125e-03, + 1.143748671994615973e-03, + 1.148502612468939961e-03, + 1.153254459659581272e-03, + 1.158004205948399415e-03, + 1.162751843720820485e-03, + 1.167497365366219030e-03, + 1.172240763277765602e-03, + 1.176982029852299914e-03, + 1.181721157490632024e-03, + 1.186458138597422645e-03, + 1.191192965581015957e-03, + 1.195925630853728874e-03, + 1.200656126831968354e-03, + 1.205384445935543366e-03, + 1.210110580588593396e-03, + 1.214834523218902155e-03, + 1.219556266258288750e-03, + 1.224275802142705920e-03, + 1.228993123311538770e-03, + 1.233708222208651679e-03, + 1.238421091281680314e-03, + 1.243131722982123571e-03, + 1.247840109765706567e-03, + 1.252546244091932211e-03, + 1.257250118424498410e-03, + 1.261951725231125242e-03, + 1.266651056983420518e-03, + 1.271348106157215016e-03, + 1.276042865232392045e-03, + 1.280735326692771653e-03, + 1.285425483026367581e-03, + 1.290113326725503924e-03, + 1.294798850286102811e-03, + 1.299482046208838646e-03, + 1.304162906997900382e-03, + 1.308841425162154438e-03, + 1.313517593214420017e-03, + 1.318191403671584681e-03, + 1.322862849054891017e-03, + 1.327531921889771186e-03, + 1.332198614705721587e-03, + 1.336862920036665636e-03, + 1.341524830420556726e-03, + 1.346184338399752500e-03, + 1.350841436520872595e-03, + 1.355496117334646644e-03, + 1.360148373396247992e-03, + 1.364798197265147325e-03, + 1.369445581504962839e-03, + 1.374090518683739309e-03, + 1.378733001374055859e-03, + 1.383373022152322102e-03, + 1.388010573599922836e-03, + 1.392645648301984226e-03, + 1.397278238848532811e-03, + 1.401908337833779284e-03, + 1.406535937856226263e-03, + 1.411161031518953866e-03, + 1.415783611429461634e-03, + 1.420403670199538648e-03, + 1.425021200445576860e-03, + 1.429636194788421908e-03, + 1.434248645853247132e-03, + 1.438858546269909406e-03, + 1.443465888672559698e-03, + 1.448070665699964857e-03, + 1.452672869995612348e-03, + 1.457272494207000318e-03, + 1.461869530986702496e-03, + 1.466463972991622266e-03, + 1.471055812883143151e-03, + 1.475645043327477495e-03, + 1.480231656995017672e-03, + 1.484815646561213212e-03, + 1.489397004705941092e-03, + 1.493975724113573607e-03, + 1.498551797473302765e-03, + 1.503125217478948382e-03, + 1.507695976828845328e-03, + 1.512264068226155988e-03, + 1.516829484378719346e-03, + 1.521392217998923050e-03, + 1.525952261804060543e-03, + 1.530509608515946609e-03, + 1.535064250861219864e-03, + 1.539616181571469393e-03, + 1.544165393382528713e-03, + 1.548711879035500781e-03, + 1.553255631276067141e-03, + 1.557796642854587235e-03, + 1.562334906526438192e-03, + 1.566870415051587872e-03, + 1.571403161194986475e-03, + 1.575933137726422779e-03, + 1.580460337420372136e-03, + 1.584984753056319778e-03, + 1.589506377418624210e-03, + 1.594025203296367370e-03, + 1.598541223483628936e-03, + 1.603054430779587590e-03, + 1.607564817987837966e-03, + 1.612072377917493941e-03, + 1.616577103382021161e-03, + 1.621078987200322329e-03, + 1.625578022196112488e-03, + 1.630074201197781545e-03, + 1.634567517039151475e-03, + 1.639057962558834909e-03, + 1.643545530600359818e-03, + 1.648030214012460295e-03, + 1.652512005648700769e-03, + 1.656990898367845287e-03, + 1.661466885033701171e-03, + 1.665939958514990864e-03, + 1.670410111685655509e-03, + 1.674877337424732432e-03, + 1.679341628616193164e-03, + 1.683802978149228583e-03, + 1.688261378918343245e-03, + 1.692716823822672115e-03, + 1.697169305767095779e-03, + 1.701618817661038714e-03, + 1.706065352419606834e-03, + 1.710508902962860640e-03, + 1.714949462215965273e-03, + 1.719387023109424269e-03, + 1.723821578578958779e-03, + 1.728253121565353611e-03, + 1.732681645014822825e-03, + 1.737107141878632428e-03, + 1.741529605113444502e-03, + 1.745949027681201627e-03, + 1.750365402548953410e-03, + 1.754778722689145313e-03, + 1.759188981079725994e-03, + 1.763596170703457316e-03, + 1.768000284548904445e-03, + 1.772401315609784238e-03, + 1.776799256885044616e-03, + 1.781194101379249663e-03, + 1.785585842101921087e-03, + 1.789974472068409919e-03, + 1.794359984299253360e-03, + 1.798742371820287759e-03, + 1.803121627662910339e-03, + 1.807497744863944752e-03, + 1.811870716465494068e-03, + 1.816240535515297252e-03, + 1.820607195066357509e-03, + 1.824970688177290088e-03, + 1.829331007912175702e-03, + 1.833688147340455576e-03, + 1.838042099537151109e-03, + 1.842392857582997225e-03, + 1.846740414563756514e-03, + 1.851084763571211921e-03, + 1.855425897702494544e-03, + 1.859763810060184250e-03, + 1.864098493752630375e-03, + 1.868429941893561853e-03, + 1.872758147602428735e-03, + 1.877083104004291384e-03, + 1.881404804229666952e-03, + 1.885723241414830574e-03, + 1.890038408701700222e-03, + 1.894350299237669523e-03, + 1.898658906175998721e-03, + 1.902964222675405503e-03, + 1.907266241900378110e-03, + 1.911564957021280511e-03, + 1.915860361213689951e-03, + 1.920152447659377723e-03, + 1.924441209545675992e-03, + 1.928726640065368293e-03, + 1.933008732417389056e-03, + 1.937287479806249196e-03, + 1.941562875442116995e-03, + 1.945834912541110620e-03, + 1.950103584324963321e-03, + 1.954368884021315082e-03, + 1.958630804863627402e-03, + 1.962889340091020663e-03, + 1.967144482948591806e-03, + 1.971396226687266440e-03, + 1.975644564563673079e-03, + 1.979889489840486183e-03, + 1.984130995786053623e-03, + 1.988369075674705898e-03, + 1.992603722786845475e-03, + 1.996834930408288022e-03, + 2.001062691831250340e-03, + 2.005287000353669479e-03, + 2.009507849279318099e-03, + 2.013725231918055570e-03, + 2.017939141585688764e-03, + 2.022149571603845848e-03, + 2.026356515300317598e-03, + 2.030559966008689196e-03, + 2.034759917068682412e-03, + 2.038956361826019855e-03, + 2.043149293632305716e-03, + 2.047338705845243041e-03, + 2.051524591828787249e-03, + 2.055706944952446179e-03, + 2.059885758592264974e-03, + 2.064061026130221532e-03, + 2.068232740954069945e-03, + 2.072400896458187480e-03, + 2.076565486042483873e-03, + 2.080726503113438687e-03, + 2.084883941083467713e-03, + 2.089037793371020541e-03, + 2.093188053400835136e-03, + 2.097334714603792984e-03, + 2.101477770416800266e-03, + 2.105617214283113554e-03, + 2.109753039652001103e-03, + 2.113885239979039054e-03, + 2.118013808726022969e-03, + 2.122138739360827312e-03, + 2.126260025357623162e-03, + 2.130377660197008312e-03, + 2.134491637365373666e-03, + 2.138601950355807461e-03, + 2.142708592667484646e-03, + 2.146811557805769228e-03, + 2.150910839282484024e-03, + 2.155006430615568052e-03, + 2.159098325329403094e-03, + 2.163186516954691396e-03, + 2.167270999028300844e-03, + 2.171351765093605841e-03, + 2.175428808700302988e-03, + 2.179502123404318710e-03, + 2.183571702768115873e-03, + 2.187637540360367217e-03, + 2.191699629756212100e-03, + 2.195757964537380959e-03, + 2.199812538291538722e-03, + 2.203863344613234999e-03, + 2.207910377103302138e-03, + 2.211953629368747232e-03, + 2.215993095023423027e-03, + 2.220028767687465873e-03, + 2.224060640987378986e-03, + 2.228088708556332127e-03, + 2.232112964033809016e-03, + 2.236133401065901801e-03, + 2.240150013305234732e-03, + 2.244162794410805000e-03, + 2.248171738048264628e-03, + 2.252176837889816822e-03, + 2.256178087614070255e-03, + 2.260175480906370400e-03, + 2.264169011458454315e-03, + 2.268158672968713461e-03, + 2.272144459142328571e-03, + 2.276126363690608723e-03, + 2.280104380331925053e-03, + 2.284078502791090596e-03, + 2.288048724799445714e-03, + 2.292015040095113972e-03, + 2.295977442422851653e-03, + 2.299935925533953211e-03, + 2.303890483186542271e-03, + 2.307841109145247673e-03, + 2.311787797181520925e-03, + 2.315730541073504362e-03, + 2.319669334605905815e-03, + 2.323604171570248841e-03, + 2.327535045764955127e-03, + 2.331461950994737336e-03, + 2.335384881071585293e-03, + 2.339303829813750308e-03, + 2.343218791046519731e-03, + 2.347129758602082509e-03, + 2.351036726318970604e-03, + 2.354939688042951944e-03, + 2.358838637626421535e-03, + 2.362733568928496869e-03, + 2.366624475815241706e-03, + 2.370511352159561120e-03, + 2.374394191841068796e-03, + 2.378272988746407083e-03, + 2.382147736768890946e-03, + 2.386018429808847534e-03, + 2.389885061773479140e-03, + 2.393747626576750009e-03, + 2.397606118139609249e-03, + 2.401460530390078438e-03, + 2.405310857262681328e-03, + 2.409157092699373663e-03, + 2.412999230648533999e-03, + 2.416837265065921708e-03, + 2.420671189914069821e-03, + 2.424500999162401693e-03, + 2.428326686787446540e-03, + 2.432148246772698492e-03, + 2.435965673108535061e-03, + 2.439778959792464341e-03, + 2.443588100828984495e-03, + 2.447393090229530409e-03, + 2.451193922012693139e-03, + 2.454990590203962736e-03, + 2.458783088835948989e-03, + 2.462571411948507195e-03, + 2.466355553588156588e-03, + 2.470135507808775971e-03, + 2.473911268671438908e-03, + 2.477682830243885508e-03, + 2.481450186601498204e-03, + 2.485213331826253980e-03, + 2.488972260007653314e-03, + 2.492726965242197164e-03, + 2.496477441633422958e-03, + 2.500223683292160902e-03, + 2.503965684336385659e-03, + 2.507703438891129618e-03, + 2.511436941088733988e-03, + 2.515166185068718266e-03, + 2.518891164977674849e-03, + 2.522611874969580420e-03, + 2.526328309205445530e-03, + 2.530040461853614274e-03, + 2.533748327089809394e-03, + 2.537451899096588009e-03, + 2.541151172064185556e-03, + 2.544846140189906906e-03, + 2.548536797678287689e-03, + 2.552223138741232644e-03, + 2.555905157597953160e-03, + 2.559582848474814196e-03, + 2.563256205605680786e-03, + 2.566925223231558521e-03, + 2.570589895600889317e-03, + 2.574250216969465981e-03, + 2.577906181600305574e-03, + 2.581557783763833297e-03, + 2.585205017738027335e-03, + 2.588847877807853772e-03, + 2.592486358265985637e-03, + 2.596120453412292892e-03, + 2.599750157554093100e-03, + 2.603375465006308852e-03, + 2.606996370090849339e-03, + 2.610612867137454725e-03, + 2.614224950483145377e-03, + 2.617832614472296454e-03, + 2.621435853456852150e-03, + 2.625034661796218135e-03, + 2.628629033857146201e-03, + 2.632218964014022226e-03, + 2.635804446648570398e-03, + 2.639385476150109960e-03, + 2.642962046915481051e-03, + 2.646534153348900284e-03, + 2.650101789862189302e-03, + 2.653664950874874955e-03, + 2.657223630813592124e-03, + 2.660777824113026106e-03, + 2.664327525214924691e-03, + 2.667872728569009328e-03, + 2.671413428632407432e-03, + 2.674949619869745627e-03, + 2.678481296753363553e-03, + 2.682008453763198071e-03, + 2.685531085386677012e-03, + 2.689049186118961168e-03, + 2.692562750462835445e-03, + 2.696071772928587858e-03, + 2.699576248034329592e-03, + 2.703076170305644590e-03, + 2.706571534275856259e-03, + 2.710062334486123756e-03, + 2.713548565484905084e-03, + 2.717030221828602848e-03, + 2.720507298081419837e-03, + 2.723979788814859422e-03, + 2.727447688608616774e-03, + 2.730910992049628665e-03, + 2.734369693732946471e-03, + 2.737823788261207949e-03, + 2.741273270244705754e-03, + 2.744718134301615126e-03, + 2.748158375057848605e-03, + 2.751593987146992281e-03, + 2.755024965210515694e-03, + 2.758451303897671656e-03, + 2.761872997865389995e-03, + 2.765290041778563357e-03, + 2.768702430309730178e-03, + 2.772110158139319287e-03, + 2.775513219955770463e-03, + 2.778911610454932925e-03, + 2.782305324340904069e-03, + 2.785694356325474352e-03, + 2.789078701128227481e-03, + 2.792458353476745536e-03, + 2.795833308106356139e-03, + 2.799203559760366205e-03, + 2.802569103189986484e-03, + 2.805929933154207960e-03, + 2.809286044420046449e-03, + 2.812637431762432874e-03, + 2.815984089964109621e-03, + 2.819326013815825691e-03, + 2.822663198116423001e-03, + 2.825995637672342863e-03, + 2.829323327298307288e-03, + 2.832646261816794235e-03, + 2.835964436058337722e-03, + 2.839277844861602847e-03, + 2.842586483072863206e-03, + 2.845890345546771543e-03, + 2.849189427145829359e-03, + 2.852483722740474081e-03, + 2.855773227209323657e-03, + 2.859057935438857802e-03, + 2.862337842323725481e-03, + 2.865612942766616964e-03, + 2.868883231678135901e-03, + 2.872148703977097251e-03, + 2.875409354590350783e-03, + 2.878665178452731194e-03, + 2.881916170507224650e-03, + 2.885162325705050313e-03, + 2.888403639005166813e-03, + 2.891640105375086270e-03, + 2.894871719789982641e-03, + 2.898098477233510082e-03, + 2.901320372697339337e-03, + 2.904537401181180294e-03, + 2.907749557693004895e-03, + 2.910956837248943052e-03, + 2.914159234873165555e-03, + 2.917356745598174202e-03, + 2.920549364464483048e-03, + 2.923737086520918505e-03, + 2.926919906824486644e-03, + 2.930097820440283850e-03, + 2.933270822441733181e-03, + 2.936438907910463372e-03, + 2.939602071936222964e-03, + 2.942760309617047706e-03, + 2.945913616059383719e-03, + 2.949061986377536724e-03, + 2.952205415694495599e-03, + 2.955343899141113593e-03, + 2.958477431856823027e-03, + 2.961606008989226772e-03, + 2.964729625694111255e-03, + 2.967848277135670242e-03, + 2.970961958486411161e-03, + 2.974070664927004615e-03, + 2.977174391646579717e-03, + 2.980273133842561897e-03, + 2.983366886720603510e-03, + 2.986455645494824097e-03, + 2.989539405387560151e-03, + 2.992618161629562873e-03, + 2.995691909460079273e-03, + 2.998760644126358208e-03, + 3.001824360884393274e-03, + 3.004883054998395021e-03, + 3.007936721740911076e-03, + 3.010985356393037788e-03, + 3.014028954244005187e-03, + 3.017067510591758556e-03, + 3.020101020742525615e-03, + 3.023129480010885908e-03, + 3.026152883719939075e-03, + 3.029171227201241968e-03, + 3.032184505794674207e-03, + 3.035192714848655889e-03, + 3.038195849720174042e-03, + 3.041193905774399690e-03, + 3.044186878385238184e-03, + 3.047174762934899434e-03, + 3.050157554814161582e-03, + 3.053135249422416538e-03, + 3.056107842167238471e-03, + 3.059075328465015245e-03, + 3.062037703740552470e-03, + 3.064994963427081741e-03, + 3.067947102966523884e-03, + 3.070894117809165862e-03, + 3.073836003413973460e-03, + 3.076772755248452940e-03, + 3.079704368788545223e-03, + 3.082630839518882195e-03, + 3.085552162932654868e-03, + 3.088468334531531412e-03, + 3.091379349825843208e-03, + 3.094285204334628649e-03, + 3.097185893585192515e-03, + 3.100081413113869692e-03, + 3.102971758465176023e-03, + 3.105856925192590663e-03, + 3.108736908858088580e-03, + 3.111611705032219909e-03, + 3.114481309294246571e-03, + 3.117345717232104102e-03, + 3.120204924442261576e-03, + 3.123058926529997861e-03, + 3.125907719109104112e-03, + 3.128751297802169137e-03, + 3.131589658240438445e-03, + 3.134422796063754402e-03, + 3.137250706920750951e-03, + 3.140073386468770784e-03, + 3.142890830373748241e-03, + 3.145703034310406640e-03, + 3.148509993962310318e-03, + 3.151311705021427479e-03, + 3.154108163188855309e-03, + 3.156899364174046291e-03, + 3.159685303695500790e-03, + 3.162465977480359396e-03, + 3.165241381264449760e-03, + 3.168011510792462238e-03, + 3.170776361817870953e-03, + 3.173535930102806303e-03, + 3.176290211418330775e-03, + 3.179039201544171366e-03, + 3.181782896268952471e-03, + 3.184521291390069245e-03, + 3.187254382713677198e-03, + 3.189982166054788470e-03, + 3.192704637237358135e-03, + 3.195421792093872636e-03, + 3.198133626465953470e-03, + 3.200840136203959938e-03, + 3.203541317167016896e-03, + 3.206237165223263692e-03, + 3.208927676249462551e-03, + 3.211612846131509883e-03, + 3.214292670764065489e-03, + 3.216967146050592891e-03, + 3.219636267903545814e-03, + 3.222300032244258469e-03, + 3.224958435002887869e-03, + 3.227611472118600312e-03, + 3.230259139539371459e-03, + 3.232901433222167172e-03, + 3.235538349132877599e-03, + 3.238169883246243014e-03, + 3.240796031545999968e-03, + 3.243416790024932026e-03, + 3.246032154684484663e-03, + 3.248642121535341622e-03, + 3.251246686597049785e-03, + 3.253845845898031310e-03, + 3.256439595475837771e-03, + 3.259027931376845717e-03, + 3.261610849656511671e-03, + 3.264188346379306646e-03, + 3.266760417618572599e-03, + 3.269327059456757483e-03, + 3.271888267985339355e-03, + 3.274444039304686294e-03, + 3.276994369524315314e-03, + 3.279539254762658170e-03, + 3.282078691147240473e-03, + 3.284612674814713779e-03, + 3.287141201910512116e-03, + 3.289664268589403626e-03, + 3.292181871015113694e-03, + 3.294694005360256864e-03, + 3.297200667806780925e-03, + 3.299701854545580501e-03, + 3.302197561776575117e-03, + 3.304687785708891341e-03, + 3.307172522560608216e-03, + 3.309651768559011831e-03, + 3.312125519940463479e-03, + 3.314593772950363230e-03, + 3.317056523843309093e-03, + 3.319513768883009842e-03, + 3.321965504342202623e-03, + 3.324411726502886268e-03, + 3.326852431656060222e-03, + 3.329287616101947889e-03, + 3.331717276150005305e-03, + 3.334141408118566820e-03, + 3.336560008335412789e-03, + 3.338973073137358871e-03, + 3.341380598870338000e-03, + 3.343782581889544799e-03, + 3.346179018559358818e-03, + 3.348569905253237847e-03, + 3.350955238353959479e-03, + 3.353335014253373911e-03, + 3.355709229352636831e-03, + 3.358077880062075408e-03, + 3.360440962801166179e-03, + 3.362798473998659943e-03, + 3.365150410092635977e-03, + 3.367496767530123430e-03, + 3.369837542767641688e-03, + 3.372172732270882056e-03, + 3.374502332514684334e-03, + 3.376826339983294428e-03, + 3.379144751169981409e-03, + 3.381457562577521499e-03, + 3.383764770717857633e-03, + 3.386066372112129380e-03, + 3.388362363290853795e-03, + 3.390652740793809617e-03, + 3.392937501169984802e-03, + 3.395216640977768204e-03, + 3.397490156784740110e-03, + 3.399758045167852651e-03, + 3.402020302713371688e-03, + 3.404276926016794845e-03, + 3.406527911682968174e-03, + 3.408773256326191100e-03, + 3.411012956569813969e-03, + 3.413247009046784051e-03, + 3.415475410399270838e-03, + 3.417698157278738040e-03, + 3.419915246346110545e-03, + 3.422126674271546310e-03, + 3.424332437734634547e-03, + 3.426532533424339784e-03, + 3.428726958038904715e-03, + 3.430915708286021073e-03, + 3.433098780882761544e-03, + 3.435276172555499531e-03, + 3.437447880040076995e-03, + 3.439613900081675644e-03, + 3.441774229434861609e-03, + 3.443928864863740700e-03, + 3.446077803141561150e-03, + 3.448221041051230135e-03, + 3.450358575384997184e-03, + 3.452490402944374381e-03, + 3.454616520540531883e-03, + 3.456736924993966155e-03, + 3.458851613134546806e-03, + 3.460960581801694833e-03, + 3.463063827844163178e-03, + 3.465161348120233617e-03, + 3.467253139497653014e-03, + 3.469339198853507115e-03, + 3.471419523074466013e-03, + 3.473494109056638000e-03, + 3.475562953705544841e-03, + 3.477626053936252321e-03, + 3.479683406673237962e-03, + 3.481735008850505957e-03, + 3.483780857411624462e-03, + 3.485820949309451078e-03, + 3.487855281506542244e-03, + 3.489883850974893897e-03, + 3.491906654695933233e-03, + 3.493923689660690876e-03, + 3.495934952869698530e-03, + 3.497940441332943011e-03, + 3.499940152070032343e-03, + 3.501934082109994534e-03, + 3.503922228491492680e-03, + 3.505904588262685750e-03, + 3.507881158481233799e-03, + 3.509851936214387295e-03, + 3.511816918539020088e-03, + 3.513776102541351851e-03, + 3.515729485317425559e-03, + 3.517677063972594453e-03, + 3.519618835621928388e-03, + 3.521554797390117134e-03, + 3.523484946411216661e-03, + 3.525409279829084998e-03, + 3.527327794797067810e-03, + 3.529240488478057811e-03, + 3.531147358044599283e-03, + 3.533048400678862055e-03, + 3.534943613572508799e-03, + 3.536832993926943090e-03, + 3.538716538953031419e-03, + 3.540594245871369478e-03, + 3.542466111912144239e-03, + 3.544332134315101440e-03, + 3.546192310329665271e-03, + 3.548046637214970038e-03, + 3.549895112239564825e-03, + 3.551737732681894012e-03, + 3.553574495829784231e-03, + 3.555405398980938329e-03, + 3.557230439442581049e-03, + 3.559049614531600413e-03, + 3.560862921574567668e-03, + 3.562670357907728614e-03, + 3.564471920876927710e-03, + 3.566267607837740345e-03, + 3.568057416155410826e-03, + 3.569841343204809871e-03, + 3.571619386370551708e-03, + 3.573391543046866136e-03, + 3.575157810637703479e-03, + 3.576918186556796164e-03, + 3.578672668227349078e-03, + 3.580421253082498399e-03, + 3.582163938564998477e-03, + 3.583900722127184978e-03, + 3.585631601231344372e-03, + 3.587356573349222578e-03, + 3.589075635962475554e-03, + 3.590788786562427743e-03, + 3.592496022650059923e-03, + 3.594197341736146689e-03, + 3.595892741341203108e-03, + 3.597582218995414461e-03, + 3.599265772238754209e-03, + 3.600943398620953632e-03, + 3.602615095701425501e-03, + 3.604280861049408494e-03, + 3.605940692243797194e-03, + 3.607594586873326837e-03, + 3.609242542536515198e-03, + 3.610884556841494758e-03, + 3.612520627406327987e-03, + 3.614150751858783567e-03, + 3.615774927836362847e-03, + 3.617393152986387445e-03, + 3.619005424965991875e-03, + 3.620611741441990411e-03, + 3.622212100091103028e-03, + 3.623806498599734666e-03, + 3.625394934664149561e-03, + 3.626977405990418346e-03, + 3.628553910294338679e-03, + 3.630124445301544534e-03, + 3.631689008747585132e-03, + 3.633247598377584067e-03, + 3.634800211946745841e-03, + 3.636346847219840226e-03, + 3.637887501971613820e-03, + 3.639422173986651271e-03, + 3.640950861059211782e-03, + 3.642473560993534417e-03, + 3.643990271603639482e-03, + 3.645500990713335457e-03, + 3.647005716156313110e-03, + 3.648504445776132917e-03, + 3.649997177426110573e-03, + 3.651483908969498267e-03, + 3.652964638279323790e-03, + 3.654439363238525841e-03, + 3.655908081739885507e-03, + 3.657370791685991135e-03, + 3.658827490989354555e-03, + 3.660278177572375523e-03, + 3.661722849367187761e-03, + 3.663161504315964705e-03, + 3.664594140370593806e-03, + 3.666020755492960161e-03, + 3.667441347654802966e-03, + 3.668855914837659566e-03, + 3.670264455033061049e-03, + 3.671666966242367013e-03, + 3.673063446476819340e-03, + 3.674453893757594677e-03, + 3.675838306115739810e-03, + 3.677216681592162563e-03, + 3.678589018237764068e-03, + 3.679955314113252281e-03, + 3.681315567289269054e-03, + 3.682669775846460821e-03, + 3.684017937875211889e-03, + 3.685360051475925457e-03, + 3.686696114758980253e-03, + 3.688026125844496780e-03, + 3.689350082862714181e-03, + 3.690667983953626382e-03, + 3.691979827267269625e-03, + 3.693285610963585423e-03, + 3.694585333212391069e-03, + 3.695878992193508440e-03, + 3.697166586096668588e-03, + 3.698448113121515640e-03, + 3.699723571477674892e-03, + 3.700992959384708566e-03, + 3.702256275072104974e-03, + 3.703513516779327955e-03, + 3.704764682755758761e-03, + 3.706009771260738560e-03, + 3.707248780563657340e-03, + 3.708481708943678519e-03, + 3.709708554690103240e-03, + 3.710929316102124041e-03, + 3.712143991488856074e-03, + 3.713352579169468953e-03, + 3.714555077473018479e-03, + 3.715751484738603200e-03, + 3.716941799315259028e-03, + 3.718126019561992634e-03, + 3.719304143847810065e-03, + 3.720476170551705042e-03, + 3.721642098062606045e-03, + 3.722801924779459148e-03, + 3.723955649111257947e-03, + 3.725103269476847962e-03, + 3.726244784305195092e-03, + 3.727380192035175278e-03, + 3.728509491115696364e-03, + 3.729632680005698538e-03, + 3.730749757174021616e-03, + 3.731860721099604546e-03, + 3.732965570271359630e-03, + 3.734064303188175133e-03, + 3.735156918358989008e-03, + 3.736243414302707795e-03, + 3.737323789548289889e-03, + 3.738398042634686995e-03, + 3.739466172110851062e-03, + 3.740528176535786332e-03, + 3.741584054478491652e-03, + 3.742633804517986502e-03, + 3.743677425243310125e-03, + 3.744714915253585276e-03, + 3.745746273157834778e-03, + 3.746771497575266015e-03, + 3.747790587134957815e-03, + 3.748803540476134538e-03, + 3.749810356248034666e-03, + 3.750811033109886956e-03, + 3.751805569730991101e-03, + 3.752793964790691709e-03, + 3.753776216978339710e-03, + 3.754752324993363040e-03, + 3.755722287545205061e-03, + 3.756686103353367931e-03, + 3.757643771147423442e-03, + 3.758595289666933660e-03, + 3.759540657661553271e-03, + 3.760479873891014839e-03, + 3.761412937125012575e-03, + 3.762339846143364103e-03, + 3.763260599735976635e-03, + 3.764175196702690841e-03, + 3.765083635853552768e-03, + 3.765985916008535855e-03, + 3.766882035997775116e-03, + 3.767771994661438771e-03, + 3.768655790849710467e-03, + 3.769533423422913743e-03, + 3.770404891251403611e-03, + 3.771270193215588238e-03, + 3.772129328205967112e-03, + 3.772982295123132775e-03, + 3.773829092877684522e-03, + 3.774669720390365878e-03, + 3.775504176591950971e-03, + 3.776332460423293541e-03, + 3.777154570835370307e-03, + 3.777970506789159969e-03, + 3.778780267255791529e-03, + 3.779583851216451046e-03, + 3.780381257662377304e-03, + 3.781172485594932933e-03, + 3.781957534025539788e-03, + 3.782736401975723192e-03, + 3.783509088477095446e-03, + 3.784275592571336756e-03, + 3.785035913310226888e-03, + 3.785790049755648635e-03, + 3.786538000979551826e-03, + 3.787279766063988019e-03, + 3.788015344101133917e-03, + 3.788744734193195528e-03, + 3.789467935452531765e-03, + 3.790184947001565968e-03, + 3.790895767972811067e-03, + 3.791600397508948506e-03, + 3.792298834762635688e-03, + 3.792991078896747106e-03, + 3.793677129084198699e-03, + 3.794356984508010736e-03, + 3.795030644361324298e-03, + 3.795698107847357040e-03, + 3.796359374179450897e-03, + 3.797014442581069481e-03, + 3.797663312285727392e-03, + 3.798305982537092569e-03, + 3.798942452588938146e-03, + 3.799572721705111230e-03, + 3.800196789159594486e-03, + 3.800814654236501795e-03, + 3.801426316229977644e-03, + 3.802031774444381007e-03, + 3.802631028194083246e-03, + 3.803224076803632479e-03, + 3.803810919607684190e-03, + 3.804391555950971740e-03, + 3.804965985188369249e-03, + 3.805534206684865577e-03, + 3.806096219815542636e-03, + 3.806652023965635678e-03, + 3.807201618530440482e-03, + 3.807745002915420909e-03, + 3.808282176536138645e-03, + 3.808813138818256672e-03, + 3.809337889197580464e-03, + 3.809856427120022430e-03, + 3.810368752041606247e-03, + 3.810874863428477272e-03, + 3.811374760756936798e-03, + 3.811868443513331903e-03, + 3.812355911194202467e-03, + 3.812837163306142824e-03, + 3.813312199365934043e-03, + 3.813781018900435499e-03, + 3.814243621446633450e-03, + 3.814700006551638867e-03, + 3.815150173772706519e-03, + 3.815594122677168180e-03, + 3.816031852842512000e-03, + 3.816463363856336093e-03, + 3.816888655316347679e-03, + 3.817307726830435934e-03, + 3.817720578016518904e-03, + 3.818127208502713945e-03, + 3.818527617927246209e-03, + 3.818921805938415258e-03, + 3.819309772194706947e-03, + 3.819691516364714934e-03, + 3.820067038127129833e-03, + 3.820436337170780849e-03, + 3.820799413194621904e-03, + 3.821156265907746374e-03, + 3.821506895029337658e-03, + 3.821851300288721647e-03, + 3.822189481425346778e-03, + 3.822521438188796177e-03, + 3.822847170338754264e-03, + 3.823166677645034074e-03, + 3.823479959887571625e-03, + 3.823787016856439788e-03, + 3.824087848351818367e-03, + 3.824382454184021857e-03, + 3.824670834173467347e-03, + 3.824952988150730031e-03, + 3.825228915956453441e-03, + 3.825498617441453961e-03, + 3.825762092466651436e-03, + 3.826019340903079585e-03, + 3.826270362631891200e-03, + 3.826515157544371597e-03, + 3.826753725541923428e-03, + 3.826986066536060185e-03, + 3.827212180448431780e-03, + 3.827432067210793324e-03, + 3.827645726765016836e-03, + 3.827853159063115962e-03, + 3.828054364067189162e-03, + 3.828249341749481293e-03, + 3.828438092092326800e-03, + 3.828620615088214763e-03, + 3.828796910739709104e-03, + 3.828966979059522310e-03, + 3.829130820070461225e-03, + 3.829288433805453501e-03, + 3.829439820307552374e-03, + 3.829584979629908036e-03, + 3.829723911835788454e-03, + 3.829856616998586743e-03, + 3.829983095201795144e-03, + 3.830103346539009360e-03, + 3.830217371113957183e-03, + 3.830325169040452084e-03, + 3.830426740442460874e-03, + 3.830522085453992674e-03, + 3.830611204219225557e-03, + 3.830694096892409400e-03, + 3.830770763637914456e-03, + 3.830841204630205336e-03, + 3.830905420053876999e-03, + 3.830963410103596645e-03, + 3.831015174984156186e-03, + 3.831060714910443626e-03, + 3.831100030107443492e-03, + 3.831133120810250713e-03, + 3.831159987264056311e-03, + 3.831180629724145227e-03, + 3.831195048455920179e-03, + 3.831203243734848749e-03, + 3.831205215846529306e-03, + 3.831200965086625949e-03, + 3.831190491760919688e-03, + 3.831173796185265070e-03, + 3.831150878685636151e-03, + 3.831121739598067517e-03, + 3.831086379268706325e-03, + 3.831044798053785845e-03, + 3.830996996319621130e-03, + 3.830942974442605106e-03, + 3.830882732809258017e-03, + 3.830816271816129409e-03, + 3.830743591869893543e-03, + 3.830664693387283038e-03, + 3.830579576795129209e-03, + 3.830488242530345581e-03, + 3.830390691039907512e-03, + 3.830286922780872134e-03, + 3.830176938220393110e-03, + 3.830060737835672916e-03, + 3.829938322114010557e-03, + 3.829809691552765131e-03, + 3.829674846659383153e-03, + 3.829533787951340876e-03, + 3.829386515956239266e-03, + 3.829233031211707293e-03, + 3.829073334265452235e-03, + 3.828907425675260115e-03, + 3.828735306008959269e-03, + 3.828556975844445934e-03, + 3.828372435769690323e-03, + 3.828181686382701922e-03, + 3.827984728291555956e-03, + 3.827781562114407690e-03, + 3.827572188479421746e-03, + 3.827356608024858400e-03, + 3.827134821398992491e-03, + 3.826906829260191475e-03, + 3.826672632276840406e-03, + 3.826432231127373153e-03, + 3.826185626500293226e-03, + 3.825932819094122160e-03, + 3.825673809617419034e-03, + 3.825408598788830345e-03, + 3.825137187336988959e-03, + 3.824859576000587402e-03, + 3.824575765528361385e-03, + 3.824285756679061173e-03, + 3.823989550221487156e-03, + 3.823687146934463821e-03, + 3.823378547606853632e-03, + 3.823063753037524940e-03, + 3.822742764035384072e-03, + 3.822415581419372731e-03, + 3.822082206018438504e-03, + 3.821742638671543103e-03, + 3.821396880227688388e-03, + 3.821044931545892510e-03, + 3.820686793495142643e-03, + 3.820322466954503404e-03, + 3.819951952813005827e-03, + 3.819575251969698111e-03, + 3.819192365333653420e-03, + 3.818803293823926949e-03, + 3.818408038369584551e-03, + 3.818006599909706637e-03, + 3.817598979393347844e-03, + 3.817185177779589943e-03, + 3.816765196037464648e-03, + 3.816339035146045552e-03, + 3.815906696094355753e-03, + 3.815468179881456763e-03, + 3.815023487516322302e-03, + 3.814572620018002666e-03, + 3.814115578415442145e-03, + 3.813652363747636886e-03, + 3.813182977063499582e-03, + 3.812707419421957050e-03, + 3.812225691891911634e-03, + 3.811737795552218224e-03, + 3.811243731491707667e-03, + 3.810743500809180267e-03, + 3.810237104613388003e-03, + 3.809724544023076163e-03, + 3.809205820166922194e-03, + 3.808680934183557819e-03, + 3.808149887221595926e-03, + 3.807612680439578963e-03, + 3.807069315006012759e-03, + 3.806519792099354819e-03, + 3.805964112907990905e-03, + 3.805402278630247177e-03, + 3.804834290474440502e-03, + 3.804260149658747481e-03, + 3.803679857411363177e-03, + 3.803093414970362338e-03, + 3.802500823583750134e-03, + 3.801902084509492952e-03, + 3.801297199015464187e-03, + 3.800686168379455512e-03, + 3.800068993889184690e-03, + 3.799445676842306847e-03, + 3.798816218546345949e-03, + 3.798180620318807130e-03, + 3.797538883487038778e-03, + 3.796891009388346592e-03, + 3.796236999369917691e-03, + 3.795576854788833190e-03, + 3.794910577012111999e-03, + 3.794238167416624091e-03, + 3.793559627389152082e-03, + 3.792874958326400772e-03, + 3.792184161634911278e-03, + 3.791487238731171619e-03, + 3.790784191041490087e-03, + 3.790075020002082410e-03, + 3.789359727059073927e-03, + 3.788638313668419785e-03, + 3.787910781295950047e-03, + 3.787177131417404814e-03, + 3.786437365518360940e-03, + 3.785691485094246338e-03, + 3.784939491650378580e-03, + 3.784181386701905483e-03, + 3.783417171773878398e-03, + 3.782646848401152468e-03, + 3.781870418128419151e-03, + 3.781087882510288187e-03, + 3.780299243111158360e-03, + 3.779504501505243520e-03, + 3.778703659276666689e-03, + 3.777896718019345141e-03, + 3.777083679337008611e-03, + 3.776264544843249606e-03, + 3.775439316161473529e-03, + 3.774607994924909522e-03, + 3.773770582776603526e-03, + 3.772927081369391398e-03, + 3.772077492365977398e-03, + 3.771221817438830982e-03, + 3.770360058270212818e-03, + 3.769492216552260220e-03, + 3.768618293986803706e-03, + 3.767738292285595543e-03, + 3.766852213170075996e-03, + 3.765960058371499962e-03, + 3.765061829630962555e-03, + 3.764157528699266404e-03, + 3.763247157337049151e-03, + 3.762330717314693249e-03, + 3.761408210412376264e-03, + 3.760479638420023609e-03, + 3.759545003137345406e-03, + 3.758604306373804823e-03, + 3.757657549948640631e-03, + 3.756704735690821664e-03, + 3.755745865439075442e-03, + 3.754780941041921567e-03, + 3.753809964357577179e-03, + 3.752832937253958688e-03, + 3.751849861608871732e-03, + 3.750860739309685478e-03, + 3.749865572253631863e-03, + 3.748864362347583985e-03, + 3.747857111508182300e-03, + 3.746843821661779549e-03, + 3.745824494744463308e-03, + 3.744799132701988765e-03, + 3.743767737489872398e-03, + 3.742730311073306972e-03, + 3.741686855427194935e-03, + 3.740637372536141040e-03, + 3.739581864394445412e-03, + 3.738520333006102245e-03, + 3.737452780384808038e-03, + 3.736379208553858820e-03, + 3.735299619546375224e-03, + 3.734214015405055726e-03, + 3.733122398182256007e-03, + 3.732024769940109083e-03, + 3.730921132750268567e-03, + 3.729811488694204005e-03, + 3.728695839862898164e-03, + 3.727574188357076455e-03, + 3.726446536287101978e-03, + 3.725312885772967715e-03, + 3.724173238944291330e-03, + 3.723027597940391058e-03, + 3.721875964910172085e-03, + 3.720718342012148232e-03, + 3.719554731414524348e-03, + 3.718385135295079226e-03, + 3.717209555841233682e-03, + 3.716027995250021070e-03, + 3.714840455728036107e-03, + 3.713646939491583188e-03, + 3.712447448766468660e-03, + 3.711241985788135689e-03, + 3.710030552801648219e-03, + 3.708813152061609872e-03, + 3.707589785832251118e-03, + 3.706360456387362921e-03, + 3.705125166010309317e-03, + 3.703883916994071650e-03, + 3.702636711641137113e-03, + 3.701383552263572910e-03, + 3.700124441183074396e-03, + 3.698859380730816319e-03, + 3.697588373247504001e-03, + 3.696311421083527289e-03, + 3.695028526598637900e-03, + 3.693739692162295064e-03, + 3.692444920153396641e-03, + 3.691144212960354148e-03, + 3.689837572981208985e-03, + 3.688525002623414296e-03, + 3.687206504303989357e-03, + 3.685882080449486616e-03, + 3.684551733495921872e-03, + 3.683215465888861444e-03, + 3.681873280083349746e-03, + 3.680525178543897578e-03, + 3.679171163744580138e-03, + 3.677811238168894343e-03, + 3.676445404309820406e-03, + 3.675073664669878653e-03, + 3.673696021761015465e-03, + 3.672312478104600673e-03, + 3.670923036231608406e-03, + 3.669527698682285323e-03, + 3.668126468006517940e-03, + 3.666719346763517781e-03, + 3.665306337521977067e-03, + 3.663887442860058307e-03, + 3.662462665365319708e-03, + 3.661032007634758105e-03, + 3.659595472274835420e-03, + 3.658153061901378480e-03, + 3.656704779139705215e-03, + 3.655250626624475477e-03, + 3.653790606999785147e-03, + 3.652324722919149651e-03, + 3.650852977045474478e-03, + 3.649375372050996189e-03, + 3.647891910617475416e-03, + 3.646402595435970038e-03, + 3.644907429206844292e-03, + 3.643406414640041127e-03, + 3.641899554454653722e-03, + 3.640386851379320571e-03, + 3.638868308151918442e-03, + 3.637343927519705485e-03, + 3.635813712239339881e-03, + 3.634277665076782703e-03, + 3.632735788807335640e-03, + 3.631188086215660516e-03, + 3.629634560095733754e-03, + 3.628075213250838132e-03, + 3.626510048493623937e-03, + 3.624939068646004878e-03, + 3.623362276539270847e-03, + 3.621779675013967349e-03, + 3.620191266919886835e-03, + 3.618597055116283372e-03, + 3.616997042471545645e-03, + 3.615391231863380843e-03, + 3.613779626178846311e-03, + 3.612162228314184757e-03, + 3.610539041174986447e-03, + 3.608910067676056928e-03, + 3.607275310741453467e-03, + 3.605634773304543586e-03, + 3.603988458307886243e-03, + 3.602336368703299048e-03, + 3.600678507451877345e-03, + 3.599014877523921789e-03, + 3.597345481898880232e-03, + 3.595670323565594920e-03, + 3.593989405521975065e-03, + 3.592302730775252285e-03, + 3.590610302341786311e-03, + 3.588912123247107056e-03, + 3.587208196526110206e-03, + 3.585498525222690757e-03, + 3.583783112390011901e-03, + 3.582061961090444741e-03, + 3.580335074395473750e-03, + 3.578602455385820804e-03, + 3.576864107151319847e-03, + 3.575120032790948116e-03, + 3.573370235412902038e-03, + 3.571614718134476663e-03, + 3.569853484082102964e-03, + 3.568086536391397705e-03, + 3.566313878207083218e-03, + 3.564535512682915838e-03, + 3.562751442981967366e-03, + 3.560961672276213071e-03, + 3.559166203746942821e-03, + 3.557365040584374236e-03, + 3.555558185987882109e-03, + 3.553745643165984527e-03, + 3.551927415336225344e-03, + 3.550103505725217545e-03, + 3.548273917568731724e-03, + 3.546438654111503525e-03, + 3.544597718607428796e-03, + 3.542751114319376681e-03, + 3.540898844519314078e-03, + 3.539040912488272250e-03, + 3.537177321516289143e-03, + 3.535308074902375561e-03, + 3.533433175954723334e-03, + 3.531552627990469824e-03, + 3.529666434335653694e-03, + 3.527774598325582236e-03, + 3.525877123304283628e-03, + 3.523974012625051208e-03, + 3.522065269649951244e-03, + 3.520150897750149062e-03, + 3.518230900305791518e-03, + 3.516305280705982281e-03, + 3.514374042348759712e-03, + 3.512437188641214826e-03, + 3.510494722999293101e-03, + 3.508546648847998307e-03, + 3.506592969621182606e-03, + 3.504633688761684025e-03, + 3.502668809721297405e-03, + 3.500698335960729726e-03, + 3.498722270949502101e-03, + 3.496740618166290643e-03, + 3.494753381098453758e-03, + 3.492760563242326612e-03, + 3.490762168103218530e-03, + 3.488758199195203091e-03, + 3.486748660041377908e-03, + 3.484733554173586201e-03, + 3.482712885132609789e-03, + 3.480686656468123981e-03, + 3.478654871738609544e-03, + 3.476617534511416020e-03, + 3.474574648362768661e-03, + 3.472526216877694274e-03, + 3.470472243650113593e-03, + 3.468412732282715946e-03, + 3.466347686387018234e-03, + 3.464277109583427817e-03, + 3.462201005501096360e-03, + 3.460119377777906829e-03, + 3.458032230060768385e-03, + 3.455939566005137176e-03, + 3.453841389275369347e-03, + 3.451737703544632135e-03, + 3.449628512494772471e-03, + 3.447513819816493477e-03, + 3.445393629209207460e-03, + 3.443267944381050646e-03, + 3.441136769049008524e-03, + 3.439000106938695529e-03, + 3.436857961784515504e-03, + 3.434710337329618772e-03, + 3.432557237325808454e-03, + 3.430398665533683153e-03, + 3.428234625722522463e-03, + 3.426065121670196761e-03, + 3.423890157163511985e-03, + 3.421709735997721744e-03, + 3.419523861976856913e-03, + 3.417332538913681831e-03, + 3.415135770629537312e-03, + 3.412933560954452099e-03, + 3.410725913727152402e-03, + 3.408512832794956520e-03, + 3.406294322013869377e-03, + 3.404070385248499694e-03, + 3.401841026372066923e-03, + 3.399606249266501866e-03, + 3.397366057822250214e-03, + 3.395120455938385740e-03, + 3.392869447522654965e-03, + 3.390613036491294582e-03, + 3.388351226769233983e-03, + 3.386084022289926557e-03, + 3.383811426995317166e-03, + 3.381533444836143983e-03, + 3.379250079771480095e-03, + 3.376961335769031007e-03, + 3.374667216805114691e-03, + 3.372367726864517606e-03, + 3.370062869940538067e-03, + 3.367752650035089022e-03, + 3.365437071158517649e-03, + 3.363116137329760173e-03, + 3.360789852576177503e-03, + 3.358458220933673195e-03, + 3.356121246446674370e-03, + 3.353778933168055382e-03, + 3.351431285159064098e-03, + 3.349078306489693558e-03, + 3.346720001238119493e-03, + 3.344356373491095841e-03, + 3.341987427343856305e-03, + 3.339613166899968195e-03, + 3.337233596271633410e-03, + 3.334848719579249984e-03, + 3.332458540951748188e-03, + 3.330063064526505960e-03, + 3.327662294449244829e-03, + 3.325256234874097560e-03, + 3.322844889963629846e-03, + 3.320428263888726243e-03, + 3.318006360828746303e-03, + 3.315579184971332010e-03, + 3.313146740512483684e-03, + 3.310709031656657118e-03, + 3.308266062616594880e-03, + 3.305817837613285980e-03, + 3.303364360876301104e-03, + 3.300905636643281307e-03, + 3.298441669160310109e-03, + 3.295972462681801603e-03, + 3.293498021470410691e-03, + 3.291018349797169250e-03, + 3.288533451941336085e-03, + 3.286043332190438995e-03, + 3.283547994840387962e-03, + 3.281047444195239228e-03, + 3.278541684567361399e-03, + 3.276030720277424597e-03, + 3.273514555654239572e-03, + 3.270993195034982773e-03, + 3.268466642764994694e-03, + 3.265934903197739107e-03, + 3.263397980695158674e-03, + 3.260855879627154539e-03, + 3.258308604371899005e-03, + 3.255756159315861126e-03, + 3.253198548853594198e-03, + 3.250635777387820766e-03, + 3.248067849329525428e-03, + 3.245494769097755777e-03, + 3.242916541119824497e-03, + 3.240333169831104664e-03, + 3.237744659675112577e-03, + 3.235151015103574987e-03, + 3.232552240576289874e-03, + 3.229948340561133394e-03, + 3.227339319534209931e-03, + 3.224725181979600994e-03, + 3.222105932389598536e-03, + 3.219481575264519779e-03, + 3.216852115112670777e-03, + 3.214217556450687293e-03, + 3.211577903803003106e-03, + 3.208933161702217339e-03, + 3.206283334689041115e-03, + 3.203628427312129288e-03, + 3.200968444128191905e-03, + 3.198303389702024119e-03, + 3.195633268606353113e-03, + 3.192958085422013294e-03, + 3.190277844737754616e-03, + 3.187592551150335383e-03, + 3.184902209264578628e-03, + 3.182206823693232035e-03, + 3.179506399056894646e-03, + 3.176800939984424522e-03, + 3.174090451112280414e-03, + 3.171374937085226064e-03, + 3.168654402555671438e-03, + 3.165928852184037457e-03, + 3.163198290638855742e-03, + 3.160462722596309778e-03, + 3.157722152740589233e-03, + 3.154976585763874346e-03, + 3.152226026366129058e-03, + 3.149470479255195993e-03, + 3.146709949146895332e-03, + 3.143944440764800171e-03, + 3.141173958840444685e-03, + 3.138398508113132875e-03, + 3.135618093330028774e-03, + 3.132832719246198081e-03, + 3.130042390624488031e-03, + 3.127247112235433286e-03, + 3.124446888857704361e-03, + 3.121641725277386412e-03, + 3.118831626288734709e-03, + 3.116016596693482917e-03, + 3.113196641301275037e-03, + 3.110371764929576507e-03, + 3.107541972403536721e-03, + 3.104707268556040206e-03, + 3.101867658227827184e-03, + 3.099023146267266757e-03, + 3.096173737530468362e-03, + 3.093319436881350731e-03, + 3.090460249191436318e-03, + 3.087596179340049932e-03, + 3.084727232214163912e-03, + 3.081853412708318758e-03, + 3.078974725725045544e-03, + 3.076091176174224496e-03, + 3.073202768973495261e-03, + 3.070309509048362723e-03, + 3.067411401331589411e-03, + 3.064508450763984808e-03, + 3.061600662293678492e-03, + 3.058688040876524333e-03, + 3.055770591476055387e-03, + 3.052848319063325173e-03, + 3.049921228616986595e-03, + 3.046989325123354835e-03, + 3.044052613576249487e-03, + 3.041111098977044864e-03, + 3.038164786334778857e-03, + 3.035213680665926547e-03, + 3.032257786994613149e-03, + 3.029297110352449206e-03, + 3.026331655778448197e-03, + 3.023361428319468018e-03, + 3.020386433029521867e-03, + 3.017406674970297790e-03, + 3.014422159211019910e-03, + 3.011432890828302268e-03, + 3.008438874906235998e-03, + 3.005440116536476063e-03, + 3.002436620818011402e-03, + 2.999428392857410395e-03, + 2.996415437768577134e-03, + 2.993397760672858107e-03, + 2.990375366699115495e-03, + 2.987348260983576677e-03, + 2.984316448669724516e-03, + 2.981279934908780474e-03, + 2.978238724858953915e-03, + 2.975192823686248315e-03, + 2.972142236563684106e-03, + 2.969086968671752740e-03, + 2.966027025198516871e-03, + 2.962962411339055240e-03, + 2.959893132295945365e-03, + 2.956819193279152519e-03, + 2.953740599505835871e-03, + 2.950657356200502880e-03, + 2.947569468595040952e-03, + 2.944476941928498431e-03, + 2.941379781447351315e-03, + 2.938277992405229598e-03, + 2.935171580063062127e-03, + 2.932060549689103918e-03, + 2.928944906558809957e-03, + 2.925824655954734153e-03, + 2.922699803167001613e-03, + 2.919570353492547971e-03, + 2.916436312235925598e-03, + 2.913297684708561573e-03, + 2.910154476229209579e-03, + 2.907006692123874879e-03, + 2.903854337725640840e-03, + 2.900697418374757839e-03, + 2.897535939418732168e-03, + 2.894369906212118735e-03, + 2.891199324116626879e-03, + 2.888024198501179789e-03, + 2.884844534741692890e-03, + 2.881660338221345759e-03, + 2.878471614330335802e-03, + 2.875278368465826202e-03, + 2.872080606032414302e-03, + 2.868878332441426871e-03, + 2.865671553111345544e-03, + 2.862460273467950806e-03, + 2.859244498943664531e-03, + 2.856024234978380913e-03, + 2.852799487018665460e-03, + 2.849570260518261965e-03, + 2.846336560937978884e-03, + 2.843098393745539278e-03, + 2.839855764415641099e-03, + 2.836608678430098569e-03, + 2.833357141277580236e-03, + 2.830101158453711321e-03, + 2.826840735461205560e-03, + 2.823575877809569434e-03, + 2.820306591015396200e-03, + 2.817032880602119999e-03, + 2.813754752099973788e-03, + 2.810472211046451205e-03, + 2.807185262985594475e-03, + 2.803893913468468845e-03, + 2.800598168053105783e-03, + 2.797298032304263576e-03, + 2.793993511793707498e-03, + 2.790684612099951327e-03, + 2.787371338808352760e-03, + 2.784053697511223568e-03, + 2.780731693807569817e-03, + 2.777405333303240194e-03, + 2.774074621610986714e-03, + 2.770739564350291253e-03, + 2.767400167147274909e-03, + 2.764056435635214512e-03, + 2.760708375453701287e-03, + 2.757355992249506480e-03, + 2.753999291675921293e-03, + 2.750638279392867043e-03, + 2.747272961067375677e-03, + 2.743903342372822594e-03, + 2.740529428989456600e-03, + 2.737151226604278044e-03, + 2.733768740910858842e-03, + 2.730381977609604854e-03, + 2.726990942407460979e-03, + 2.723595641018065547e-03, + 2.720196079161791083e-03, + 2.716792262565612039e-03, + 2.713384196963016751e-03, + 2.709971888094299744e-03, + 2.706555341706378716e-03, + 2.703134563552555148e-03, + 2.699709559392961429e-03, + 2.696280334994210440e-03, + 2.692846896129611964e-03, + 2.689409248578784970e-03, + 2.685967398128148546e-03, + 2.682521350570679468e-03, + 2.679071111705714874e-03, + 2.675616687339069360e-03, + 2.672158083283533714e-03, + 2.668695305357859666e-03, + 2.665228359387696207e-03, + 2.661757251204856668e-03, + 2.658281986647900285e-03, + 2.654802571561822554e-03, + 2.651319011797866575e-03, + 2.647831313213949798e-03, + 2.644339481674451951e-03, + 2.640843523049921440e-03, + 2.637343443217582753e-03, + 2.633839248061065844e-03, + 2.630330943470171514e-03, + 2.626818535341321134e-03, + 2.623302029577321594e-03, + 2.619781432087122004e-03, + 2.616256748786267329e-03, + 2.612727985596652487e-03, + 2.609195148446279491e-03, + 2.605658243269799983e-03, + 2.602117276007871217e-03, + 2.598572252607707703e-03, + 2.595023179022809285e-03, + 2.591470061212751679e-03, + 2.587912905143621885e-03, + 2.584351716787778794e-03, + 2.580786502123609896e-03, + 2.577217267135987078e-03, + 2.573644017816035037e-03, + 2.570066760160873241e-03, + 2.566485500174063485e-03, + 2.562900243865332342e-03, + 2.559310997250650952e-03, + 2.555717766352066326e-03, + 2.552120557197689633e-03, + 2.548519375822321138e-03, + 2.544914228266396787e-03, + 2.541305120576624853e-03, + 2.537692058806010221e-03, + 2.534075049013673111e-03, + 2.530454097264626164e-03, + 2.526829209630231977e-03, + 2.523200392187881745e-03, + 2.519567651021123195e-03, + 2.515930992219354411e-03, + 2.512290421878291772e-03, + 2.508645946099705409e-03, + 2.504997570991167669e-03, + 2.501345302666541440e-03, + 2.497689147245725147e-03, + 2.494029110854385604e-03, + 2.490365199624445039e-03, + 2.486697419693827821e-03, + 2.483025777206193749e-03, + 2.479350278311525692e-03, + 2.475670929165431355e-03, + 2.471987735929736564e-03, + 2.468300704772198595e-03, + 2.464609841866282399e-03, + 2.460915153391619436e-03, + 2.457216645533761776e-03, + 2.453514324483921458e-03, + 2.449808196439440169e-03, + 2.446098267603572397e-03, + 2.442384544185172320e-03, + 2.438667032399235036e-03, + 2.434945738466586917e-03, + 2.431220668613670501e-03, + 2.427491829073072718e-03, + 2.423759226082812350e-03, + 2.420022865887288491e-03, + 2.416282754736208058e-03, + 2.412538898885067170e-03, + 2.408791304595655092e-03, + 2.405039978135019903e-03, + 2.401284925776066542e-03, + 2.397526153797599306e-03, + 2.393763668484180478e-03, + 2.389997476125850593e-03, + 2.386227583018606362e-03, + 2.382453995464083648e-03, + 2.378676719769693641e-03, + 2.374895762248291527e-03, + 2.371111129218653538e-03, + 2.367322827005215440e-03, + 2.363530861937918146e-03, + 2.359735240352262790e-03, + 2.355935968589878849e-03, + 2.352133052997430404e-03, + 2.348326499927628347e-03, + 2.344516315738447154e-03, + 2.340702506793705152e-03, + 2.336885079462791732e-03, + 2.333064040120431427e-03, + 2.329239395147159660e-03, + 2.325411150929052994e-03, + 2.321579313857481935e-03, + 2.317743890329600990e-03, + 2.313904886748070246e-03, + 2.310062309520824649e-03, + 2.306216165061535876e-03, + 2.302366459789354294e-03, + 2.298513200128674775e-03, + 2.294656392509680960e-03, + 2.290796043367669590e-03, + 2.286932159143637271e-03, + 2.283064746284022006e-03, + 2.279193811240336730e-03, + 2.275319360470103025e-03, + 2.271441400435732227e-03, + 2.267559937605106556e-03, + 2.263674978451658045e-03, + 2.259786529454198539e-03, + 2.255894597096623922e-03, + 2.251999187868447116e-03, + 2.248100308264516616e-03, + 2.244197964784730697e-03, + 2.240292163934587324e-03, + 2.236382912224772583e-03, + 2.232470216171375792e-03, + 2.228554082295587657e-03, + 2.224634517123773129e-03, + 2.220711527188089836e-03, + 2.216785119025416889e-03, + 2.212855299177965505e-03, + 2.208922074193336686e-03, + 2.204985450624274024e-03, + 2.201045435028807680e-03, + 2.197102033969894428e-03, + 2.193155254015953688e-03, + 2.189205101740558743e-03, + 2.185251583722193011e-03, + 2.181294706544753981e-03, + 2.177334476797278262e-03, + 2.173370901073754663e-03, + 2.169403985973197922e-03, + 2.165433738100266698e-03, + 2.161460164064098709e-03, + 2.157483270479348524e-03, + 2.153503063965396102e-03, + 2.149519551146956541e-03, + 2.145532738653793854e-03, + 2.141542633120437338e-03, + 2.137549241186728882e-03, + 2.133552569497520687e-03, + 2.129552624702402055e-03, + 2.125549413456240180e-03, + 2.121542942418869638e-03, + 2.117533218254850826e-03, + 2.113520247633969128e-03, + 2.109504037230958227e-03, + 2.105484593725226884e-03, + 2.101461923801388031e-03, + 2.097436034148971676e-03, + 2.093406931462147777e-03, + 2.089374622440332528e-03, + 2.085339113787402533e-03, + 2.081300412212717856e-03, + 2.077258524429966263e-03, + 2.073213457157790755e-03, + 2.069165217119835545e-03, + 2.065113811044599467e-03, + 2.061059245665108983e-03, + 2.057001527719483271e-03, + 2.052940663950635850e-03, + 2.048876661105983581e-03, + 2.044809525938007418e-03, + 2.040739265203854284e-03, + 2.036665885665503613e-03, + 2.032589394089508433e-03, + 2.028509797247059990e-03, + 2.024427101914597071e-03, + 2.020341314872744782e-03, + 2.016252442906802441e-03, + 2.012160492807317774e-03, + 2.008065471368862195e-03, + 2.003967385391127159e-03, + 1.999866241678097557e-03, + 1.995762047038663646e-03, + 1.991654808286349131e-03, + 1.987544532239023630e-03, + 1.983431225719427000e-03, + 1.979314895554901751e-03, + 1.975195548577095110e-03, + 1.971073191622506326e-03, + 1.966947831532187430e-03, + 1.962819475151475219e-03, + 1.958688129330510373e-03, + 1.954553800923964236e-03, + 1.950416496790745649e-03, + 1.946276223794637158e-03, + 1.942132988803553419e-03, + 1.937986798690145319e-03, + 1.933837660331551040e-03, + 1.929685580609092265e-03, + 1.925530566408807610e-03, + 1.921372624621163787e-03, + 1.917211762140792796e-03, + 1.913047985867003887e-03, + 1.908881302703508386e-03, + 1.904711719558139973e-03, + 1.900539243343371413e-03, + 1.896363880976059332e-03, + 1.892185639377130888e-03, + 1.888004525472223010e-03, + 1.883820546190855373e-03, + 1.879633708467506577e-03, + 1.875444019240406776e-03, + 1.871251485452093662e-03, + 1.867056114049951091e-03, + 1.862857911985065906e-03, + 1.858656886212895366e-03, + 1.854453043693323963e-03, + 1.850246391390394322e-03, + 1.846036936272468093e-03, + 1.841824685311843450e-03, + 1.837609645485307596e-03, + 1.833391823773836008e-03, + 1.829171227162317698e-03, + 1.824947862640081053e-03, + 1.820721737200625386e-03, + 1.816492857841401276e-03, + 1.812261231563915085e-03, + 1.808026865374353460e-03, + 1.803789766282360135e-03, + 1.799549941302146369e-03, + 1.795307397451650477e-03, + 1.791062141753158856e-03, + 1.786814181233041445e-03, + 1.782563522921416484e-03, + 1.778310173852750082e-03, + 1.774054141065535724e-03, + 1.769795431602003708e-03, + 1.765534052508675169e-03, + 1.761270010836075853e-03, + 1.757003313638418225e-03, + 1.752733967974193230e-03, + 1.748461980905836573e-03, + 1.744187359499463092e-03, + 1.739910110825406905e-03, + 1.735630241957935617e-03, + 1.731347759974933296e-03, + 1.727062671958577668e-03, + 1.722774984994471237e-03, + 1.718484706172750641e-03, + 1.714191842586858467e-03, + 1.709896401334183363e-03, + 1.705598389516157836e-03, + 1.701297814238042928e-03, + 1.696994682608637646e-03, + 1.692689001740843406e-03, + 1.688380778751254847e-03, + 1.684070020760353257e-03, + 1.679756734892115175e-03, + 1.675440928274556660e-03, + 1.671122608039454652e-03, + 1.666801781322129481e-03, + 1.662478455261538106e-03, + 1.658152637000927026e-03, + 1.653824333686667843e-03, + 1.649493552468926649e-03, + 1.645160300501744477e-03, + 1.640824584942728731e-03, + 1.636486412953245964e-03, + 1.632145791698018334e-03, + 1.627802728345689558e-03, + 1.623457230068528490e-03, + 1.619109304042124246e-03, + 1.614758957445947603e-03, + 1.610406197463066721e-03, + 1.606051031279829254e-03, + 1.601693466086431990e-03, + 1.597333509076630936e-03, + 1.592971167447422782e-03, + 1.588606448399628411e-03, + 1.584239359137583911e-03, + 1.579869906868833522e-03, + 1.575498098804807047e-03, + 1.571123942160016461e-03, + 1.566747444152744593e-03, + 1.562368612004726588e-03, + 1.557987452940845247e-03, + 1.553603974189716064e-03, + 1.549218182983363046e-03, + 1.544830086556939425e-03, + 1.540439692149277130e-03, + 1.536047007002600126e-03, + 1.531652038362212162e-03, + 1.527254793477059256e-03, + 1.522855279599452790e-03, + 1.518453503984737744e-03, + 1.514049473891975525e-03, + 1.509643196583054705e-03, + 1.505234679323848518e-03, + 1.500823929382928993e-03, + 1.496410954032250870e-03, + 1.491995760547223807e-03, + 1.487578356206510502e-03, + 1.483158748291724203e-03, + 1.478736944087998342e-03, + 1.474312950883585605e-03, + 1.469886775970045923e-03, + 1.465458426641833185e-03, + 1.461027910196880265e-03, + 1.456595233936288074e-03, + 1.452160405164116749e-03, + 1.447723431187478236e-03, + 1.443284319317198958e-03, + 1.438843076866648443e-03, + 1.434399711152290749e-03, + 1.429954229494288581e-03, + 1.425506639215201382e-03, + 1.421056947641143042e-03, + 1.416605162100904132e-03, + 1.412151289926614778e-03, + 1.407695338453447600e-03, + 1.403237315019295692e-03, + 1.398777226965369162e-03, + 1.394315081635872245e-03, + 1.389850886377704290e-03, + 1.385384648541038285e-03, + 1.380916375479008824e-03, + 1.376446074547413734e-03, + 1.371973753105273745e-03, + 1.367499418514553193e-03, + 1.363023078139822403e-03, + 1.358544739348962636e-03, + 1.354064409512341230e-03, + 1.349582096003510692e-03, + 1.345097806198884520e-03, + 1.340611547477435148e-03, + 1.336123327221283965e-03, + 1.331633152815371937e-03, + 1.327141031647167740e-03, + 1.322646971107244336e-03, + 1.318150978588965424e-03, + 1.313653061488188152e-03, + 1.309153227203828851e-03, + 1.304651483137466220e-03, + 1.300147836693528892e-03, + 1.295642295278874763e-03, + 1.291134866303383184e-03, + 1.286625557179645312e-03, + 1.282114375322750089e-03, + 1.277601328150370546e-03, + 1.273086423083455302e-03, + 1.268569667545010578e-03, + 1.264051068960792999e-03, + 1.259530634759395027e-03, + 1.255008372371936185e-03, + 1.250484289232240863e-03, + 1.245958392776444533e-03, + 1.241430690443559711e-03, + 1.236901189675183648e-03, + 1.232369897915169604e-03, + 1.227836822610224891e-03, + 1.223301971209598193e-03, + 1.218765351164759507e-03, + 1.214226969929999055e-03, + 1.209686834962103762e-03, + 1.205144953720056929e-03, + 1.200601333665713474e-03, + 1.196055982262994805e-03, + 1.191508906978576855e-03, + 1.186960115281579997e-03, + 1.182409614643250076e-03, + 1.177857412537547345e-03, + 1.173303516440840936e-03, + 1.168747933831587940e-03, + 1.164190672190926895e-03, + 1.159631739002364454e-03, + 1.155071141751463134e-03, + 1.150508887926421364e-03, + 1.145944985017780752e-03, + 1.141379440518089762e-03, + 1.136812261922510005e-03, + 1.132243456728391660e-03, + 1.127673032435476657e-03, + 1.123100996545558887e-03, + 1.118527356562602163e-03, + 1.113952119993415462e-03, + 1.109375294346434063e-03, + 1.104796887132413656e-03, + 1.100216905864519245e-03, + 1.095635358058115244e-03, + 1.091052251230440655e-03, + 1.086467592901213617e-03, + 1.081881390592204662e-03, + 1.077293651827435344e-03, + 1.072704384132754530e-03, + 1.068113595036436665e-03, + 1.063521292068873208e-03, + 1.058927482762332369e-03, + 1.054332174651083148e-03, + 1.049735375272066885e-03, + 1.045137092163571499e-03, + 1.040537332866449697e-03, + 1.035936104923173770e-03, + 1.031333415878544872e-03, + 1.026729273279382943e-03, + 1.022123684674186702e-03, + 1.017516657613759664e-03, + 1.012908199650870136e-03, + 1.008298318339944820e-03, + 1.003687021237662522e-03, + 9.990743159026408207e-04, + 9.944602098951129711e-04, + 9.898447107775322409e-04, + 9.852278261142488180e-04, + 9.806095634711932234e-04, + 9.759899304164779349e-04, + 9.713689345200762467e-04, + 9.667465833535076334e-04, + 9.621228844905302304e-04, + 9.574978455063271401e-04, + 9.528714739781925149e-04, + 9.482437774852262458e-04, + 9.436147636080054494e-04, + 9.389844399291892357e-04, + 9.343528140332053736e-04, + 9.297198935059146222e-04, + 9.250856859352317614e-04, + 9.204501989107926338e-04, + 9.158134400236400512e-04, + 9.111754168668248759e-04, + 9.065361370349849174e-04, + 9.018956081245320649e-04, + 8.972538377333444826e-04, + 8.926108334608391431e-04, + 8.879666029086936887e-04, + 8.833211536795950456e-04, + 8.786744933779470825e-04, + 8.740266296099546365e-04, + 8.693775699834222848e-04, + 8.647273221074103277e-04, + 8.600758935928621077e-04, + 8.554232920521615468e-04, + 8.507695250993421807e-04, + 8.461146003496458883e-04, + 8.414585254201478260e-04, + 8.368013079294181564e-04, + 8.321429554972104492e-04, + 8.274834757450616777e-04, + 8.228228762959754160e-04, + 8.181611647740964690e-04, + 8.134983488053221462e-04, + 8.088344360169728809e-04, + 8.041694340374715231e-04, + 7.995033504970630329e-04, + 7.948361930269656588e-04, + 7.901679692600829330e-04, + 7.854986868306862175e-04, + 7.808283533740877080e-04, + 7.761569765272478046e-04, + 7.714845639284571149e-04, + 7.668111232170102178e-04, + 7.621366620338142260e-04, + 7.574611880210646098e-04, + 7.527847088219235139e-04, + 7.481072320811329827e-04, + 7.434287654446823266e-04, + 7.387493165594941373e-04, + 7.340688930741304285e-04, + 7.293875026378502475e-04, + 7.247051529018418712e-04, + 7.200218515178607222e-04, + 7.153376061388384746e-04, + 7.106524244194994218e-04, + 7.059663140150921777e-04, + 7.012792825821099118e-04, + 6.965913377783847834e-04, + 6.919024872628609093e-04, + 6.872127386952735489e-04, + 6.825220997367598347e-04, + 6.778305780494339825e-04, + 6.731381812965730148e-04, + 6.684449171422006441e-04, + 6.637507932516880293e-04, + 6.590558172914356711e-04, + 6.543599969286546195e-04, + 6.496633398314462715e-04, + 6.449658536695359419e-04, + 6.402675461128908311e-04, + 6.355684248329672914e-04, + 6.308684975017562948e-04, + 6.261677717925021513e-04, + 6.214662553793764890e-04, + 6.167639559371522343e-04, + 6.120608811418196561e-04, + 6.073570386702578519e-04, + 6.026524361999084037e-04, + 5.979470814093965168e-04, + 5.932409819781927487e-04, + 5.885341455863008680e-04, + 5.838265799148596941e-04, + 5.791182926458285710e-04, + 5.744092914616498544e-04, + 5.696995840459797731e-04, + 5.649891780828286561e-04, + 5.602780812572883242e-04, + 5.555663012552018417e-04, + 5.508538457627347147e-04, + 5.461407224675095089e-04, + 5.414269390572401877e-04, + 5.367125032204431330e-04, + 5.319974226465340721e-04, + 5.272817050256090694e-04, + 5.225653580481127601e-04, + 5.178483894054560204e-04, + 5.131308067896895144e-04, + 5.084126178931756140e-04, + 5.036938304092076959e-04, + 4.989744520315737494e-04, + 4.942544904547603157e-04, + 4.895339533736149749e-04, + 4.848128484834513517e-04, + 4.800911834807596468e-04, + 4.753689660619405061e-04, + 4.706462039240290503e-04, + 4.659229047647830209e-04, + 4.611990762823550260e-04, + 4.564747261754954484e-04, + 4.517498621431129103e-04, + 4.470244918848988820e-04, + 4.422986231009933683e-04, + 4.375722634916624667e-04, + 4.328454207579119717e-04, + 4.281181026011638487e-04, + 4.233903167230290395e-04, + 4.186620708254044985e-04, + 4.139333726111948377e-04, + 4.092042297829295351e-04, + 4.044746500440177359e-04, + 3.997446410977864573e-04, + 3.950142106482041303e-04, + 3.902833663995533336e-04, + 3.855521160561012502e-04, + 3.808204673227206442e-04, + 3.760884279045614018e-04, + 3.713560055067173559e-04, + 3.666232078348542560e-04, + 3.618900425948734490e-04, + 3.571565174925883527e-04, + 3.524226402343384398e-04, + 3.476884185266684770e-04, + 3.429538600759933433e-04, + 3.382189725892192239e-04, + 3.334837637734181870e-04, + 3.287482413354955507e-04, + 3.240124129829166232e-04, + 3.192762864227450159e-04, + 3.145398693628977159e-04, + 3.098031695107574695e-04, + 3.050661945739015289e-04, + 3.003289522601949478e-04, + 2.955914502775644167e-04, + 2.908536963336720810e-04, + 2.861156981365334815e-04, + 2.813774633941910474e-04, + 2.766389998143840650e-04, + 2.719003151051665101e-04, + 2.671614169744775959e-04, + 2.624223131303366039e-04, + 2.576830112805150752e-04, + 2.529435191326285886e-04, + 2.482038443948653443e-04, + 2.434639947747043386e-04, + 2.387239779795390787e-04, + 2.339838017172948727e-04, + 2.292434736950491828e-04, + 2.245030016202788099e-04, + 2.197623931999033561e-04, + 2.150216561410100145e-04, + 2.102807981505223987e-04, + 2.055398269348741175e-04, + 2.007987502006270677e-04, + 1.960575756541443578e-04, + 1.913163110012596532e-04, + 1.865749639478989661e-04, + 1.818335421997514106e-04, + 1.770920534619391717e-04, + 1.723505054396389695e-04, + 1.676089058377533024e-04, + 1.628672623605802801e-04, + 1.581255827125403648e-04, + 1.533838745973200679e-04, + 1.486421457185977692e-04, + 1.439004037797145805e-04, + 1.391586564833448020e-04, + 1.344169115321177397e-04, + 1.296751766282884868e-04, + 1.249334594734065112e-04, + 1.201917677689398839e-04, + 1.154501092159442455e-04, + 1.107084915147329242e-04, + 1.059669223654998230e-04, + 1.012254094679888470e-04, + 9.648396052116454979e-05, + 9.174258322394005286e-05, + 8.700128527421258041e-05, + 8.226007437011949384e-05, + 7.751895820865255943e-05, + 7.277794448627788158e-05, + 6.803704089956003737e-05, + 6.329625514387888260e-05, + 5.855559491415825765e-05, + 5.381506790495916784e-05, + 4.907468181014969135e-05, + 4.433444432310443853e-05, + 3.959436313626877034e-05, + 3.485444594178108981e-05, + 3.011470043114286845e-05, + 2.537513429488907251e-05, + 2.063575522321019350e-05, + 1.589657090562253216e-05, + 1.115758903074419206e-05, + 6.418817286388597205e-06, + 1.680263360291705546e-06, +-3.058065061274399066e-06, +-7.796160292245657718e-06, +-1.253401464772966474e-05, +-1.727162044327839653e-05, +-2.200896999521761822e-05, +-2.674605562097639942e-05, +-3.148286963846551567e-05, +-3.621940436640695612e-05, +-4.095565212466317203e-05, +-4.569160523361568663e-05, +-5.042725601449470947e-05, +-5.516259678970812408e-05, +-5.989761988222005713e-05, +-6.463231761588076729e-05, +-6.936668231575516522e-05, +-7.410070630739688607e-05, +-7.883438191770453132e-05, +-8.356770147419570059e-05, +-8.830065730533541001e-05, +-9.303324174097153492e-05, +-9.776544711118605700e-05, +-1.024972657476791568e-04, +-1.072286899830428525e-04, +-1.119597121506680295e-04, +-1.166903245849680977e-04, +-1.214205196217083590e-04, +-1.261502895973828616e-04, +-1.308796268496533529e-04, +-1.356085237171455039e-04, +-1.403369725398877536e-04, +-1.450649656586877839e-04, +-1.497924954154623617e-04, +-1.545195541534614427e-04, +-1.592461342171738194e-04, +-1.639722279516017353e-04, +-1.686978277035393217e-04, +-1.734229258208456136e-04, +-1.781475146523531239e-04, +-1.828715865481948116e-04, +-1.875951338596060257e-04, +-1.923181489393598932e-04, +-1.970406241411465592e-04, +-2.017625518198992881e-04, +-2.064839243321278282e-04, +-2.112047340352933155e-04, +-2.159249732881406896e-04, +-2.206446344510259604e-04, +-2.253637098852944180e-04, +-2.300821919536131307e-04, +-2.348000730202940637e-04, +-2.395173454506795000e-04, +-2.442340016114674358e-04, +-2.489500338710398772e-04, +-2.536654345987401113e-04, +-2.583801961657246175e-04, +-2.630943109442405829e-04, +-2.678077713079523550e-04, +-2.725205696322716901e-04, +-2.772326982937362342e-04, +-2.819441496703399335e-04, +-2.866549161418571572e-04, +-2.913649900892292008e-04, +-2.960743638948881381e-04, +-3.007830299430845210e-04, +-3.054909806192724199e-04, +-3.101982083104325161e-04, +-3.149047054054039218e-04, +-3.196104642941568976e-04, +-3.243154773687535091e-04, +-3.290197370220992773e-04, +-3.337232356493195730e-04, +-3.384259656470362909e-04, +-3.431279194132783495e-04, +-3.478290893476990186e-04, +-3.525294678519093664e-04, +-3.572290473288523491e-04, +-3.619278201832457076e-04, +-3.666257788213733129e-04, +-3.713229156515243223e-04, +-3.760192230833744789e-04, +-3.807146935283119149e-04, +-3.854093193996584914e-04, +-3.901030931125793215e-04, +-3.947960070833604748e-04, +-3.994880537306782532e-04, +-4.041792254749836891e-04, +-4.088695147378836286e-04, +-4.135589139435188609e-04, +-4.182474155173172316e-04, +-4.229350118869474153e-04, +-4.276216954815992223e-04, +-4.323074587323097809e-04, +-4.369922940722916708e-04, +-4.416761939363131936e-04, +-4.463591507610264520e-04, +-4.510411569852965140e-04, +-4.557222050495795141e-04, +-4.604022873962555036e-04, +-4.650813964699476938e-04, +-4.697595247169142731e-04, +-4.744366645853659152e-04, +-4.791128085258019361e-04, +-4.837879489902800843e-04, +-4.884620784332728430e-04, +-4.931351893109422622e-04, +-4.978072740814730793e-04, +-5.024783252053889810e-04, +-5.071483351449423060e-04, +-5.118172963644452688e-04, +-5.164852013305854623e-04, +-5.211520425118139344e-04, +-5.258178123786793386e-04, +-5.304825034041404019e-04, +-5.351461080629611559e-04, +-5.398086188321357280e-04, +-5.444700281906947022e-04, +-5.491303286200288625e-04, +-5.537895126037908552e-04, +-5.584475726271949034e-04, +-5.631045011782573502e-04, +-5.677602907471999147e-04, +-5.724149338258322384e-04, +-5.770684229088101020e-04, +-5.817207504929221284e-04, +-5.863719090769967590e-04, +-5.910218911622277301e-04, +-5.956706892519767491e-04, +-6.003182958522009947e-04, +-6.049647034708446631e-04, +-6.096099046181581568e-04, +-6.142538918070255139e-04, +-6.188966575523506411e-04, +-6.235381943713848513e-04, +-6.281784947840429083e-04, +-6.328175513123033549e-04, +-6.374553564805218470e-04, +-6.420919028157554389e-04, +-6.467271828470568754e-04, +-6.513611891063088863e-04, +-6.559939141275087206e-04, +-6.606253504471006717e-04, +-6.652554906042865927e-04, +-6.698843271404262244e-04, +-6.745118525993567095e-04, +-6.791380595277095051e-04, +-6.837629404743159143e-04, +-6.883864879905116389e-04, +-6.930086946304724483e-04, +-6.976295529505979190e-04, +-7.022490555098381045e-04, +-7.068671948700141344e-04, +-7.114839635952079164e-04, +-7.160993542521905050e-04, +-7.207133594102295470e-04, +-7.253259716414042421e-04, +-7.299371835205165472e-04, +-7.345469876243853604e-04, +-7.391553765330923778e-04, +-7.437623428292668452e-04, +-7.483678790980110738e-04, +-7.529719779270979815e-04, +-7.575746319073030756e-04, +-7.621758336318029377e-04, +-7.667755756965866781e-04, +-7.713738507002699954e-04, +-7.759706512445204004e-04, +-7.805659699334449673e-04, +-7.851597993739128836e-04, +-7.897521321757791212e-04, +-7.943429609517855573e-04, +-7.989322783168554837e-04, +-8.035200768894452819e-04, +-8.081063492903190577e-04, +-8.126910881434877771e-04, +-8.172742860754992223e-04, +-8.218559357157586990e-04, +-8.264360296968520196e-04, +-8.310145606539424707e-04, +-8.355915212250759070e-04, +-8.401669040515227088e-04, +-8.447407017771591366e-04, +-8.493129070487900976e-04, +-8.538835125164720213e-04, +-8.584525108329012612e-04, +-8.630198946537440173e-04, +-8.675856566379477192e-04, +-8.721497894471447144e-04, +-8.767122857459610499e-04, +-8.812731382023460689e-04, +-8.858323394868639934e-04, +-8.903898822735195444e-04, +-8.949457592390619920e-04, +-8.994999630632978397e-04, +-9.040524864294084955e-04, +-9.086033220233581892e-04, +-9.131524625341965731e-04, +-9.176999006543903794e-04, +-9.222456290792162672e-04, +-9.267896405070809871e-04, +-9.313319276398392696e-04, +-9.358724831821889486e-04, +-9.404112998420994379e-04, +-9.449483703306086604e-04, +-9.494836873621497180e-04, +-9.540172436544552652e-04, +-9.585490319278614510e-04, +-9.630790449065318752e-04, +-9.676072753177689025e-04, +-9.721337158919118567e-04, +-9.766583593625666540e-04, +-9.811811984669059107e-04, +-9.857022259450764264e-04, +-9.902214345406269019e-04, +-9.947388170003063860e-04, +-9.992543660744825605e-04, +-1.003768074516543478e-03, +-1.008279935083223689e-03, +-1.012789940534809374e-03, +-1.017298083635043149e-03, +-1.021804357150443406e-03, +-1.026308753851617279e-03, +-1.030811266512163217e-03, +-1.035311887909095554e-03, +-1.039810610823146140e-03, +-1.044307428038073913e-03, +-1.048802332341491504e-03, +-1.053295316524153124e-03, +-1.057786373380290891e-03, +-1.062275495707910161e-03, +-1.066762676308205798e-03, +-1.071247907985874203e-03, +-1.075731183549426219e-03, +-1.080212495810595804e-03, +-1.084691837584649682e-03, +-1.089169201690705227e-03, +-1.093644580951136759e-03, +-1.098117968191890609e-03, +-1.102589356242794335e-03, +-1.107058737936864349e-03, +-1.111526106111225759e-03, +-1.115991453605923210e-03, +-1.120454773265219545e-03, +-1.124916057936924032e-03, +-1.129375300472293918e-03, +-1.133832493726249753e-03, +-1.138287630557679618e-03, +-1.142740703828864493e-03, +-1.147191706405776418e-03, +-1.151640631158393126e-03, +-1.156087470960119948e-03, +-1.160532218688183157e-03, +-1.164974867223451949e-03, +-1.169415409450856504e-03, +-1.173853838258781925e-03, +-1.178290146539396743e-03, +-1.182724327188848512e-03, +-1.187156373107190084e-03, +-1.191586277197683981e-03, +-1.196014032368110814e-03, +-1.200439631529584463e-03, +-1.204863067597464546e-03, +-1.209284333490662526e-03, +-1.213703422131963937e-03, +-1.218120326448321553e-03, +-1.222535039370284014e-03, +-1.226947553832301351e-03, +-1.231357862773031601e-03, +-1.235765959134756207e-03, +-1.240171835863697249e-03, +-1.244575485910310404e-03, +-1.248976902228719202e-03, +-1.253376077777011884e-03, +-1.257773005517554736e-03, +-1.262167678416305141e-03, +-1.266560089443623640e-03, +-1.270950231573579397e-03, +-1.275338097784275678e-03, +-1.279723681058234520e-03, +-1.284106974381349396e-03, +-1.288487970744147011e-03, +-1.292866663141133523e-03, +-1.297243044570698268e-03, +-1.301617108035325399e-03, +-1.305988846541883148e-03, +-1.310358253101072184e-03, +-1.314725320727714664e-03, +-1.319090042441063444e-03, +-1.323452411264218996e-03, +-1.327812420224541408e-03, +-1.332170062353470403e-03, +-1.336525330686809399e-03, +-1.340878218264661328e-03, +-1.345228718130735612e-03, +-1.349576823333554229e-03, +-1.353922526925753055e-03, +-1.358265821964017676e-03, +-1.362606701509380246e-03, +-1.366945158627027148e-03, +-1.371281186386708604e-03, +-1.375614777862160364e-03, +-1.379945926131421596e-03, +-1.384274624277108097e-03, +-1.388600865385870636e-03, +-1.392924642548680307e-03, +-1.397245948861038870e-03, +-1.401564777422885507e-03, +-1.405881121337947386e-03, +-1.410194973714985192e-03, +-1.414506327666661002e-03, +-1.418815176310422128e-03, +-1.423121512767814168e-03, +-1.427425330164800625e-03, +-1.431726621632062367e-03, +-1.436025380304415192e-03, +-1.440321599321131183e-03, +-1.444615271826219741e-03, +-1.448906390967870730e-03, +-1.453194949898752204e-03, +-1.457480941776316801e-03, +-1.461764359762214322e-03, +-1.466045197022615692e-03, +-1.470323446728500922e-03, +-1.474599102055089905e-03, +-1.478872156182146859e-03, +-1.483142602294279782e-03, +-1.487410433580286465e-03, +-1.491675643234003203e-03, +-1.495938224453193053e-03, +-1.500198170440786597e-03, +-1.504455474404233157e-03, +-1.508710129555405378e-03, +-1.512962129110805238e-03, +-1.517211466291866961e-03, +-1.521458134324381100e-03, +-1.525702126438814371e-03, +-1.529943435870578534e-03, +-1.534182055859489597e-03, +-1.538417979650157693e-03, +-1.542651200491795610e-03, +-1.546881711638528438e-03, +-1.551109506349297295e-03, +-1.555334577887220295e-03, +-1.559556919520722288e-03, +-1.563776524522898217e-03, +-1.567993386171428766e-03, +-1.572207497748851846e-03, +-1.576418852542427283e-03, +-1.580627443844478779e-03, +-1.584833264951871325e-03, +-1.589036309166282903e-03, +-1.593236569794522373e-03, +-1.597434040147945739e-03, +-1.601628713542775553e-03, +-1.605820583300374355e-03, +-1.610009642746702569e-03, +-1.614195885212611238e-03, +-1.618379304034115460e-03, +-1.622559892551877657e-03, +-1.626737644111465398e-03, +-1.630912552063661699e-03, +-1.635084609763816019e-03, +-1.639253810572591707e-03, +-1.643420147855347794e-03, +-1.647583614982406353e-03, +-1.651744205329350656e-03, +-1.655901912276479607e-03, +-1.660056729209099819e-03, +-1.664208649517795371e-03, +-1.668357666597914324e-03, +-1.672503773849825463e-03, +-1.676646964679228595e-03, +-1.680787232496595320e-03, +-1.684924570717470215e-03, +-1.689058972762741461e-03, +-1.693190432058026742e-03, +-1.697318942034491606e-03, +-1.701444496127773503e-03, +-1.705567087779170498e-03, +-1.709686710435115659e-03, +-1.713803357546635599e-03, +-1.717917022570437284e-03, +-1.722027698968316058e-03, +-1.726135380207047222e-03, +-1.730240059758671178e-03, +-1.734341731100334490e-03, +-1.738440387714663277e-03, +-1.742536023089212441e-03, +-1.746628630716763391e-03, +-1.750718204095600078e-03, +-1.754804736728977519e-03, +-1.758888222125407162e-03, +-1.762968653798834473e-03, +-1.767046025268584515e-03, +-1.771120330058708605e-03, +-1.775191561699190164e-03, +-1.779259713724866366e-03, +-1.783324779676248020e-03, +-1.787386753098900048e-03, +-1.791445627543724467e-03, +-1.795501396567235992e-03, +-1.799554053731038149e-03, +-1.803603592602087604e-03, +-1.807650006753007930e-03, +-1.811693289761520187e-03, +-1.815733435210744977e-03, +-1.819770436689488458e-03, +-1.823804287791693955e-03, +-1.827834982116734912e-03, +-1.831862513269692664e-03, +-1.835886874860725212e-03, +-1.839908060505821398e-03, +-1.843926063826160358e-03, +-1.847940878448400348e-03, +-1.851952498005037190e-03, +-1.855960916133451467e-03, +-1.859966126477059735e-03, +-1.863968122684698907e-03, +-1.867966898410574218e-03, +-1.871962447314417079e-03, +-1.875954763061759168e-03, +-1.879943839323452992e-03, +-1.883929669775981103e-03, +-1.887912248101329899e-03, +-1.891891567987336346e-03, +-1.895867623127166050e-03, +-1.899840407219594495e-03, +-1.903809913969185070e-03, +-1.907776137086231822e-03, +-1.911739070286122165e-03, +-1.915698707290423462e-03, +-1.919655041826276312e-03, +-1.923608067626313232e-03, +-1.927557778428916693e-03, +-1.931504167978092927e-03, +-1.935447230023791109e-03, +-1.939386958321402460e-03, +-1.943323346632050592e-03, +-1.947256388722830691e-03, +-1.951186078366317495e-03, +-1.955112409340844810e-03, +-1.959035375430740779e-03, +-1.962954970425856253e-03, +-1.966871188121813944e-03, +-1.970784022320276867e-03, +-1.974693466828444412e-03, +-1.978599515459327288e-03, +-1.982502162032004703e-03, +-1.986401400371031953e-03, +-1.990297224307159031e-03, +-1.994189627676701791e-03, +-1.998078604321835983e-03, +-2.001964148090869602e-03, +-2.005846252837713371e-03, +-2.009724912422162623e-03, +-2.013600120710169229e-03, +-2.017471871573328114e-03, +-2.021340158889138768e-03, +-2.025204976541282800e-03, +-2.029066318419124777e-03, +-2.032924178417961584e-03, +-2.036778550439298681e-03, +-2.040629428390254661e-03, +-2.044476806184355750e-03, +-2.048320677740501482e-03, +-2.052161036984094435e-03, +-2.055997877846457798e-03, +-2.059831194264738225e-03, +-2.063660980182109670e-03, +-2.067487229548030554e-03, +-2.071309936317731592e-03, +-2.075129094452579648e-03, +-2.078944697919914240e-03, +-2.082756740693392748e-03, +-2.086565216752497322e-03, +-2.090370120082785110e-03, +-2.094171444676079085e-03, +-2.097969184530403854e-03, +-2.101763333649366364e-03, +-2.105553886043218421e-03, +-2.109340835728341045e-03, +-2.113124176726750066e-03, +-2.116903903067195516e-03, +-2.120680008784171962e-03, +-2.124452487918677881e-03, +-2.128221334517637134e-03, +-2.131986542634167411e-03, +-2.135748106327827866e-03, +-2.139506019664137292e-03, +-2.143260276714827831e-03, +-2.147010871558110816e-03, +-2.150757798278177604e-03, +-2.154501050965466728e-03, +-2.158240623716921932e-03, +-2.161976510635493873e-03, +-2.165708705830409440e-03, +-2.169437203417421550e-03, +-2.173161997518248834e-03, +-2.176883082261239603e-03, +-2.180600451780789848e-03, +-2.184314100217630769e-03, +-2.188024021719061230e-03, +-2.191730210438471577e-03, +-2.195432660535589532e-03, +-2.199131366176747780e-03, +-2.202826321534408650e-03, +-2.206517520787394833e-03, +-2.210204958121157835e-03, +-2.213888627727298754e-03, +-2.217568523803901352e-03, +-2.221244640555375925e-03, +-2.224916972192717782e-03, +-2.228585512933427878e-03, +-2.232250257000952063e-03, +-2.235911198625681155e-03, +-2.239568332044453072e-03, +-2.243221651500078816e-03, +-2.246871151242345148e-03, +-2.250516825527420443e-03, +-2.254158668617821729e-03, +-2.257796674782627626e-03, +-2.261430838297360819e-03, +-2.265061153444298137e-03, +-2.268687614512006085e-03, +-2.272310215795577196e-03, +-2.275928951596898047e-03, +-2.279543816224169177e-03, +-2.283154803992148377e-03, +-2.286761909222417843e-03, +-2.290365126242885005e-03, +-2.293964449388056180e-03, +-2.297559872999275100e-03, +-2.301151391424170398e-03, +-2.304738999017312204e-03, +-2.308322690139653563e-03, +-2.311902459158770261e-03, +-2.315478300449150088e-03, +-2.319050208391652042e-03, +-2.322618177373834622e-03, +-2.326182201790147081e-03, +-2.329742276041465391e-03, +-2.333298394535384106e-03, +-2.336850551686397645e-03, +-2.340398741915488724e-03, +-2.343942959650351272e-03, +-2.347483199325628954e-03, +-2.351019455382469779e-03, +-2.354551722268827512e-03, +-2.358079994439331566e-03, +-2.361604266355532902e-03, +-2.365124532485815122e-03, +-2.368640787304874054e-03, +-2.372153025294645393e-03, +-2.375661240943799466e-03, +-2.379165428747623268e-03, +-2.382665583208230364e-03, +-2.386161698834786838e-03, +-2.389653770143039882e-03, +-2.393141791655652596e-03, +-2.396625757902056102e-03, +-2.400105663418766137e-03, +-2.403581502748924643e-03, +-2.407053270442534396e-03, +-2.410520961056646788e-03, +-2.413984569155262945e-03, +-2.417444089308815047e-03, +-2.420899516095182877e-03, +-2.424350844098768776e-03, +-2.427798067911208016e-03, +-2.431241182130818891e-03, +-2.434680181362879840e-03, +-2.438115060219820263e-03, +-2.441545813320806797e-03, +-2.444972435291969688e-03, +-2.448394920766619205e-03, +-2.451813264384834507e-03, +-2.455227460793678752e-03, +-2.458637504647437182e-03, +-2.462043390607159595e-03, +-2.465445113340922288e-03, +-2.468842667524047060e-03, +-2.472236047838648459e-03, +-2.475625248973883571e-03, +-2.479010265626184050e-03, +-2.482391092498728320e-03, +-2.485767724302056537e-03, +-2.489140155753558417e-03, +-2.492508381577696139e-03, +-2.495872396506248082e-03, +-2.499232195277859524e-03, +-2.502587772638275535e-03, +-2.505939123340585137e-03, +-2.509286242144765072e-03, +-2.512629123817922226e-03, +-2.515967763134520450e-03, +-2.519302154875952514e-03, +-2.522632293830822433e-03, +-2.525958174794822736e-03, +-2.529279792570984699e-03, +-2.532597141969553881e-03, +-2.535910217807542128e-03, +-2.539219014909587565e-03, +-2.542523528107458897e-03, +-2.545823752239976048e-03, +-2.549119682153195340e-03, +-2.552411312700583832e-03, +-2.555698638742664140e-03, +-2.558981655147234743e-03, +-2.562260356789287149e-03, +-2.565534738551299935e-03, +-2.568804795322758225e-03, +-2.572070522000471145e-03, +-2.575331913488625602e-03, +-2.578588964698799724e-03, +-2.581841670549428567e-03, +-2.585090025966745638e-03, +-2.588334025884005737e-03, +-2.591573665241809783e-03, +-2.594808938988278722e-03, +-2.598039842078577778e-03, +-2.601266369475522741e-03, +-2.604488516149050872e-03, +-2.607706277076463769e-03, +-2.610919647242641167e-03, +-2.614128621639622441e-03, +-2.617333195266832984e-03, +-2.620533363131299746e-03, +-2.623729120247238374e-03, +-2.626920461636263106e-03, +-2.630107382327621403e-03, +-2.633289877357758522e-03, +-2.636467941770565156e-03, +-2.639641570617564346e-03, +-2.642810758957446146e-03, +-2.645975501856713367e-03, +-2.649135794388818559e-03, +-2.652291631635121574e-03, +-2.655443008684370883e-03, +-2.658589920632669756e-03, +-2.661732362583605922e-03, +-2.664870329648463213e-03, +-2.668003816945846863e-03, +-2.671132819601850471e-03, +-2.674257332750314044e-03, +-2.677377351532379910e-03, +-2.680492871096805396e-03, +-2.683603886599831862e-03, +-2.686710393205437534e-03, +-2.689812386084962370e-03, +-2.692909860417299749e-03, +-2.696002811389082952e-03, +-2.699091234194566768e-03, +-2.702175124035182969e-03, +-2.705254476120451477e-03, +-2.708329285667145526e-03, +-2.711399547899926571e-03, +-2.714465258050857265e-03, +-2.717526411359636514e-03, +-2.720583003073798103e-03, +-2.723635028448293059e-03, +-2.726682482745752031e-03, +-2.729725361236646618e-03, +-2.732763659198885180e-03, +-2.735797371918077814e-03, +-2.738826494687706357e-03, +-2.741851022808725405e-03, +-2.744870951589772207e-03, +-2.747886276347399990e-03, +-2.750896992405591802e-03, +-2.753903095096312589e-03, +-2.756904579759046452e-03, +-2.759901441740995279e-03, +-2.762893676397377984e-03, +-2.765881279090673731e-03, +-2.768864245191514015e-03, +-2.771842570078219062e-03, +-2.774816249136745783e-03, +-2.777785277760800101e-03, +-2.780749651352087178e-03, +-2.783709365319892923e-03, +-2.786664415081277837e-03, +-2.789614796061314680e-03, +-2.792560503692674730e-03, +-2.795501533415911417e-03, +-2.798437880679334119e-03, +-2.801369540939200285e-03, +-2.804296509659676400e-03, +-2.807218782312367877e-03, +-2.810136354377122236e-03, +-2.813049221341584142e-03, +-2.815957378701113879e-03, +-2.818860821959006356e-03, +-2.821759546626385722e-03, +-2.824653548222432180e-03, +-2.827542822274030712e-03, +-2.830427364315946711e-03, +-2.833307169891058006e-03, +-2.836182234549959342e-03, +-2.839052553851150167e-03, +-2.841918123361189454e-03, +-2.844778938654627179e-03, +-2.847634995313559365e-03, +-2.850486288928481566e-03, +-2.853332815097526023e-03, +-2.856174569427020679e-03, +-2.859011547531083251e-03, +-2.861843745031775622e-03, +-2.864671157559357112e-03, +-2.867493780751869878e-03, +-2.870311610255336238e-03, +-2.873124641723980282e-03, +-2.875932870819838862e-03, +-2.878736293212949809e-03, +-2.881534904581548387e-03, +-2.884328700611741604e-03, +-2.887117676997629206e-03, +-2.889901829441561282e-03, +-2.892681153653723670e-03, +-2.895455645352374308e-03, +-2.898225300263987218e-03, +-2.900990114122886914e-03, +-2.903750082671737159e-03, +-2.906505201660875264e-03, +-2.909255466849088381e-03, +-2.912000874003178082e-03, +-2.914741418897925235e-03, +-2.917477097316228778e-03, +-2.920207905049244067e-03, +-2.922933837896093175e-03, +-2.925654891664001504e-03, +-2.928371062168515920e-03, +-2.931082345233133098e-03, +-2.933788736689541075e-03, +-2.936490232377521672e-03, +-2.939186828145139586e-03, +-2.941878519848662148e-03, +-2.944565303352186369e-03, +-2.947247174528310268e-03, +-2.949924129257788536e-03, +-2.952596163429405899e-03, +-2.955263272940222580e-03, +-2.957925453695422081e-03, +-2.960582701608586564e-03, +-2.963235012601315652e-03, +-2.965882382603425918e-03, +-2.968524807553149080e-03, +-2.971162283396762936e-03, +-2.973794806088756598e-03, +-2.976422371592078123e-03, +-2.979044975877719482e-03, +-2.981662614924924289e-03, +-2.984275284721393806e-03, +-2.986882981262899226e-03, +-2.989485700553491145e-03, +-2.992083438605677367e-03, +-2.994676191440008746e-03, +-2.997263955085563598e-03, +-2.999846725579542652e-03, +-3.002424498967452924e-03, +-3.004997271303263412e-03, +-3.007565038649124070e-03, +-3.010127797075458616e-03, +-3.012685542661226908e-03, +-3.015238271493527692e-03, +-3.017785979667808940e-03, +-3.020328663288024840e-03, +-3.022866318466308801e-03, +-3.025398941323169041e-03, +-3.027926527987626504e-03, +-3.030449074596848827e-03, +-3.032966577296662952e-03, +-3.035479032240873815e-03, +-3.037986435592020251e-03, +-3.040488783521024582e-03, +-3.042986072206865615e-03, +-3.045478297837281214e-03, +-3.047965456608330275e-03, +-3.050447544724404440e-03, +-3.052924558398355595e-03, +-3.055396493851406971e-03, +-3.057863347313383856e-03, +-3.060325115022385304e-03, +-3.062781793224947195e-03, +-3.065233378176219613e-03, +-3.067679866139647656e-03, +-3.070121253387131464e-03, +-3.072557536199152419e-03, +-3.074988710864719806e-03, +-3.077414773680964451e-03, +-3.079835720953926284e-03, +-3.082251548997837470e-03, +-3.084662254135635447e-03, +-3.087067832698607312e-03, +-3.089468281026534237e-03, +-3.091863595467877514e-03, +-3.094253772379457635e-03, +-3.096638808126599141e-03, +-3.099018699083334449e-03, +-3.101393441632051273e-03, +-3.103763032163692551e-03, +-3.106127467077884809e-03, +-3.108486742782662349e-03, +-3.110840855694592573e-03, +-3.113189802238994133e-03, +-3.115533578849502376e-03, +-3.117872181968559843e-03, +-3.120205608047013808e-03, +-3.122533853544303632e-03, +-3.124856914928648977e-03, +-3.127174788676520285e-03, +-3.129487471273263710e-03, +-3.131794959212809253e-03, +-3.134097248997569710e-03, +-3.136394337138579454e-03, +-3.138686220155643188e-03, +-3.140972894577045375e-03, +-3.143254356939722844e-03, +-3.145530603789232268e-03, +-3.147801631679893707e-03, +-3.150067437174526065e-03, +-3.152328016844611024e-03, +-3.154583367270363294e-03, +-3.156833485040724981e-03, +-3.159078366752998256e-03, +-3.161318009013455114e-03, +-3.163552408436995193e-03, +-3.165781561647082465e-03, +-3.168005465275940818e-03, +-3.170224115964417888e-03, +-3.172437510362207530e-03, +-3.174645645127562726e-03, +-3.176848516927441302e-03, +-3.179046122437643399e-03, +-3.181238458342556912e-03, +-3.183425521335282813e-03, +-3.185607308117790852e-03, +-3.187783815400635056e-03, +-3.189955039903106387e-03, +-3.192120978353386266e-03, +-3.194281627488201360e-03, +-3.196436984053220836e-03, +-3.198587044802728499e-03, +-3.200731806499762435e-03, +-3.202871265916271137e-03, +-3.205005419832826410e-03, +-3.207134265038788165e-03, +-3.209257798332419351e-03, +-3.211376016520625740e-03, +-3.213488916419116829e-03, +-3.215596494852523361e-03, +-3.217698748654131483e-03, +-3.219795674666045375e-03, +-3.221887269739295671e-03, +-3.223973530733609608e-03, +-3.226054454517499493e-03, +-3.228130037968463505e-03, +-3.230200277972627033e-03, +-3.232265171425197613e-03, +-3.234324715229862108e-03, +-3.236378906299454579e-03, +-3.238427741555586353e-03, +-3.240471217928634750e-03, +-3.242509332357835020e-03, +-3.244542081791409582e-03, +-3.246569463186304346e-03, +-3.248591473508390375e-03, +-3.250608109732344188e-03, +-3.252619368841883681e-03, +-3.254625247829451978e-03, +-3.256625743696367481e-03, +-3.258620853452948336e-03, +-3.260610574118456926e-03, +-3.262594902720760293e-03, +-3.264573836296903470e-03, +-3.266547371892849268e-03, +-3.268515506563199422e-03, +-3.270478237371782226e-03, +-3.272435561391129951e-03, +-3.274387475702857878e-03, +-3.276333977397402793e-03, +-3.278275063574114922e-03, +-3.280210731341423602e-03, +-3.282140977816562760e-03, +-3.284065800125720094e-03, +-3.285985195404156345e-03, +-3.287899160795963293e-03, +-3.289807693454175654e-03, +-3.291710790540947149e-03, +-3.293608449227238694e-03, +-3.295500666693004007e-03, +-3.297387440127299771e-03, +-3.299268766727972944e-03, +-3.301144643702050643e-03, +-3.303015068265392762e-03, +-3.304880037642871516e-03, +-3.306739549068470757e-03, +-3.308593599785063493e-03, +-3.310442187044498625e-03, +-3.312285308107781791e-03, +-3.314122960244793477e-03, +-3.315955140734435161e-03, +-3.317781846864760725e-03, +-3.319603075932704098e-03, +-3.321418825244280924e-03, +-3.323229092114509189e-03, +-3.325033873867491632e-03, +-3.326833167836436983e-03, +-3.328626971363352061e-03, +-3.330415281799524885e-03, +-3.332198096505308710e-03, +-3.333975412849840558e-03, +-3.335747228211593304e-03, +-3.337513539978042166e-03, +-3.339274345545656473e-03, +-3.341029642320011116e-03, +-3.342779427715712823e-03, +-3.344523699156572768e-03, +-3.346262454075362835e-03, +-3.347995689913933585e-03, +-3.349723404123348264e-03, +-3.351445594163661619e-03, +-3.353162257503977152e-03, +-3.354873391622675231e-03, +-3.356578994007081325e-03, +-3.358279062153651188e-03, +-3.359973593568046316e-03, +-3.361662585764901498e-03, +-3.363346036268127955e-03, +-3.365023942610640556e-03, +-3.366696302334471012e-03, +-3.368363112990906648e-03, +-3.370024372140244077e-03, +-3.371680077351913666e-03, +-3.373330226204618743e-03, +-3.374974816286060650e-03, +-3.376613845193119148e-03, +-3.378247310531916608e-03, +-3.379875209917618945e-03, +-3.381497540974552716e-03, +-3.383114301336319178e-03, +-3.384725488645535380e-03, +-3.386331100554157252e-03, +-3.387931134723067613e-03, +-3.389525588822532402e-03, +-3.391114460532008556e-03, +-3.392697747539905051e-03, +-3.394275447544024393e-03, +-3.395847558251342303e-03, +-3.397414077377931396e-03, +-3.398975002649071327e-03, +-3.400530331799341173e-03, +-3.402080062572409528e-03, +-3.403624192721186725e-03, +-3.405162720007761084e-03, +-3.406695642203529020e-03, +-3.408222957088992509e-03, +-3.409744662453876619e-03, +-3.411260756097190226e-03, +-3.412771235827198255e-03, +-3.414276099461188794e-03, +-3.415775344825919355e-03, +-3.417268969757198804e-03, +-3.418756972100216954e-03, +-3.420239349709290003e-03, +-3.421716100447998871e-03, +-3.423187222189229533e-03, +-3.424652712815051594e-03, +-3.426112570216759481e-03, +-3.427566792295011228e-03, +-3.429015376959627676e-03, +-3.430458322129673141e-03, +-3.431895625733585951e-03, +-3.433327285708958568e-03, +-3.434753300002662494e-03, +-3.436173666570916784e-03, +-3.437588383379157515e-03, +-3.438997448402042988e-03, +-3.440400859623650616e-03, +-3.441798615037189833e-03, +-3.443190712645292223e-03, +-3.444577150459773428e-03, +-3.445957926501748078e-03, +-3.447333038801706113e-03, +-3.448702485399350592e-03, +-3.450066264343668813e-03, +-3.451424373693072391e-03, +-3.452776811515145729e-03, +-3.454123575886793897e-03, +-3.455464664894354089e-03, +-3.456800076633330648e-03, +-3.458129809208604095e-03, +-3.459453860734336157e-03, +-3.460772229334082521e-03, +-3.462084913140724314e-03, +-3.463391910296297234e-03, +-3.464693218952366247e-03, +-3.465988837269761043e-03, +-3.467278763418607697e-03, +-3.468562995578363360e-03, +-3.469841531937911238e-03, +-3.471114370695372806e-03, +-3.472381510058263933e-03, +-3.473642948243404679e-03, +-3.474898683477053302e-03, +-3.476148713994710662e-03, +-3.477393038041268550e-03, +-3.478631653871007944e-03, +-3.479864559747589473e-03, +-3.481091753943873872e-03, +-3.482313234742283239e-03, +-3.483529000434484012e-03, +-3.484739049321499294e-03, +-3.485943379713839826e-03, +-3.487141989931243340e-03, +-3.488334878302943882e-03, +-3.489522043167464505e-03, +-3.490703482872714418e-03, +-3.491879195776047100e-03, +-3.493049180244149274e-03, +-3.494213434653043078e-03, +-3.495371957388278186e-03, +-3.496524746844656417e-03, +-3.497671801426409117e-03, +-3.498813119547222739e-03, +-3.499948699630107875e-03, +-3.501078540107466046e-03, +-3.502202639421179466e-03, +-3.503320996022421530e-03, +-3.504433608371927862e-03, +-3.505540474939601667e-03, +-3.506641594204979503e-03, +-3.507736964656916860e-03, +-3.508826584793673601e-03, +-3.509910453122906150e-03, +-3.510988568161761605e-03, +-3.512060928436736788e-03, +-3.513127532483735493e-03, +-3.514188378848183848e-03, +-3.515243466084825609e-03, +-3.516292792757866586e-03, +-3.517336357440922594e-03, +-3.518374158717084074e-03, +-3.519406195178883135e-03, +-3.520432465428167783e-03, +-3.521452968076326136e-03, +-3.522467701744227443e-03, +-3.523476665061998307e-03, +-3.524479856669388705e-03, +-3.525477275215481866e-03, +-3.526468919358867297e-03, +-3.527454787767539748e-03, +-3.528434879118928259e-03, +-3.529409192099976396e-03, +-3.530377725407022552e-03, +-3.531340477745843320e-03, +-3.532297447831744992e-03, +-3.533248634389416117e-03, +-3.534194036152998181e-03, +-3.535133651866166713e-03, +-3.536067480281995974e-03, +-3.536995520163001457e-03, +-3.537917770281252643e-03, +-3.538834229418170909e-03, +-3.539744896364752872e-03, +-3.540649769921385207e-03, +-3.541548848897921407e-03, +-3.542442132113767222e-03, +-3.543329618397711954e-03, +-3.544211306588042083e-03, +-3.545087195532556010e-03, +-3.545957284088494237e-03, +-3.546821571122564520e-03, +-3.547680055510992608e-03, +-3.548532736139469335e-03, +-3.549379611903125901e-03, +-3.550220681706650963e-03, +-3.551055944464178316e-03, +-3.551885399099302502e-03, +-3.552709044545132588e-03, +-3.553526879744270048e-03, +-3.554338903648850828e-03, +-3.555145115220370577e-03, +-3.555945513429941817e-03, +-3.556740097258143454e-03, +-3.557528865695003002e-03, +-3.558311817740084614e-03, +-3.559088952402417964e-03, +-3.559860268700584980e-03, +-3.560625765662614895e-03, +-3.561385442326039322e-03, +-3.562139297737943865e-03, +-3.562887330954857094e-03, +-3.563629541042818635e-03, +-3.564365927077406491e-03, +-3.565096488143723596e-03, +-3.565821223336260344e-03, +-3.566540131759160862e-03, +-3.567253212525977116e-03, +-3.567960464759836314e-03, +-3.568661887593329880e-03, +-3.569357480168564196e-03, +-3.570047241637207009e-03, +-3.570731171160381173e-03, +-3.571409267908742715e-03, +-3.572081531062493414e-03, +-3.572747959811298831e-03, +-3.573408553354371145e-03, +-3.574063310900454406e-03, +-3.574712231667787673e-03, +-3.575355314884116724e-03, +-3.575992559786758240e-03, +-3.576623965622497889e-03, +-3.577249531647652778e-03, +-3.577869257128106148e-03, +-3.578483141339205888e-03, +-3.579091183565881202e-03, +-3.579693383102504692e-03, +-3.580289739253050222e-03, +-3.580880251331018324e-03, +-3.581464918659371579e-03, +-3.582043740570648241e-03, +-3.582616716406911931e-03, +-3.583183845519754673e-03, +-3.583745127270253957e-03, +-3.584300561029101113e-03, +-3.584850146176445616e-03, +-3.585393882101999170e-03, +-3.585931768204981933e-03, +-3.586463803894163714e-03, +-3.586989988587886528e-03, +-3.587510321713931888e-03, +-3.588024802709682565e-03, +-3.588533431022060578e-03, +-3.589036206107483386e-03, +-3.589533127431920705e-03, +-3.590024194470869782e-03, +-3.590509406709387497e-03, +-3.590988763642053924e-03, +-3.591462264772953689e-03, +-3.591929909615759666e-03, +-3.592391697693653185e-03, +-3.592847628539348314e-03, +-3.593297701695117880e-03, +-3.593741916712754874e-03, +-3.594180273153591097e-03, +-3.594612770588508869e-03, +-3.595039408597923685e-03, +-3.595460186771769467e-03, +-3.595875104709565350e-03, +-3.596284162020307699e-03, +-3.596687358322605416e-03, +-3.597084693244542025e-03, +-3.597476166423766320e-03, +-3.597861777507470240e-03, +-3.598241526152396678e-03, +-3.598615412024790908e-03, +-3.598983434800485590e-03, +-3.599345594164810556e-03, +-3.599701889812651368e-03, +-3.600052321448460151e-03, +-3.600396888786189242e-03, +-3.600735591549344104e-03, +-3.601068429470985488e-03, +-3.601395402293694308e-03, +-3.601716509769621946e-03, +-3.602031751660407424e-03, +-3.602341127737284515e-03, +-3.602644637780992847e-03, +-3.602942281581831240e-03, +-3.603234058939613037e-03, +-3.603519969663732028e-03, +-3.603800013573067468e-03, +-3.604074190496095974e-03, +-3.604342500270778758e-03, +-3.604604942744665287e-03, +-3.604861517774806540e-03, +-3.605112225227810087e-03, +-3.605357064979817106e-03, +-3.605596036916510622e-03, +-3.605829140933093820e-03, +-3.606056376934322141e-03, +-3.606277744834518895e-03, +-3.606493244557471608e-03, +-3.606702876036573836e-03, +-3.606906639214702004e-03, +-3.607104534044312544e-03, +-3.607296560487369044e-03, +-3.607482718515375632e-03, +-3.607663008109377421e-03, +-3.607837429259955729e-03, +-3.608005981967206833e-03, +-3.608168666240774061e-03, +-3.608325482099843887e-03, +-3.608476429573106471e-03, +-3.608621508698818536e-03, +-3.608760719524733117e-03, +-3.608894062108154634e-03, +-3.609021536515931525e-03, +-3.609143142824388154e-03, +-3.609258881119450143e-03, +-3.609368751496516876e-03, +-3.609472754060526981e-03, +-3.609570888925970038e-03, +-3.609663156216829337e-03, +-3.609749556066630446e-03, +-3.609830088618439480e-03, +-3.609904754024808454e-03, +-3.609973552447842508e-03, +-3.610036484059160004e-03, +-3.610093549039918113e-03, +-3.610144747580759043e-03, +-3.610190079881884194e-03, +-3.610229546152983904e-03, +-3.610263146613292527e-03, +-3.610290881491547664e-03, +-3.610312751026016620e-03, +-3.610328755464462577e-03, +-3.610338895064187092e-03, +-3.610343170091998444e-03, +-3.610341580824211194e-03, +-3.610334127546656162e-03, +-3.610320810554691270e-03, +-3.610301630153157307e-03, +-3.610276586656442546e-03, +-3.610245680388409015e-03, +-3.610208911682436742e-03, +-3.610166280881442393e-03, +-3.610117788337798179e-03, +-3.610063434413424231e-03, +-3.610003219479722674e-03, +-3.609937143917612331e-03, +-3.609865208117499225e-03, +-3.609787412479289158e-03, +-3.609703757412420239e-03, +-3.609614243335786121e-03, +-3.609518870677805823e-03, +-3.609417639876378193e-03, +-3.609310551378923544e-03, +-3.609197605642323805e-03, +-3.609078803132966320e-03, +-3.608954144326743420e-03, +-3.608823629709019022e-03, +-3.608687259774662030e-03, +-3.608545035028002529e-03, +-3.608396955982900306e-03, +-3.608243023162662020e-03, +-3.608083237100087170e-03, +-3.607917598337483708e-03, +-3.607746107426602553e-03, +-3.607568764928704812e-03, +-3.607385571414510172e-03, +-3.607196527464224655e-03, +-3.607001633667528909e-03, +-3.606800890623583847e-03, +-3.606594298941012428e-03, +-3.606381859237921782e-03, +-3.606163572141880651e-03, +-3.605939438289916359e-03, +-3.605709458328547334e-03, +-3.605473632913738010e-03, +-3.605231962710933949e-03, +-3.604984448395028018e-03, +-3.604731090650374267e-03, +-3.604471890170806141e-03, +-3.604206847659591813e-03, +-3.603935963829443725e-03, +-3.603659239402589708e-03, +-3.603376675110657630e-03, +-3.603088271694720058e-03, +-3.602794029905344135e-03, +-3.602493950502496170e-03, +-3.602188034255642685e-03, +-3.601876281943639391e-03, +-3.601558694354820966e-03, +-3.601235272286954208e-03, +-3.600906016547238912e-03, +-3.600570927952318704e-03, +-3.600230007328278012e-03, +-3.599883255510623412e-03, +-3.599530673344299679e-03, +-3.599172261683697589e-03, +-3.598808021392603182e-03, +-3.598437953344237224e-03, +-3.598062058421299010e-03, +-3.597680337515820649e-03, +-3.597292791529328390e-03, +-3.596899421372731168e-03, +-3.596500227966367876e-03, +-3.596095212240000422e-03, +-3.595684375132773836e-03, +-3.595267717593273946e-03, +-3.594845240579496153e-03, +-3.594416945058815510e-03, +-3.593982832008043096e-03, +-3.593542902413390892e-03, +-3.593097157270430143e-03, +-3.592645597584188510e-03, +-3.592188224369050314e-03, +-3.591725038648840244e-03, +-3.591256041456713198e-03, +-3.590781233835239287e-03, +-3.590300616836425082e-03, +-3.589814191521603463e-03, +-3.589321958961476551e-03, +-3.588823920236223260e-03, +-3.588320076435315420e-03, +-3.587810428657623590e-03, +-3.587294978011394079e-03, +-3.586773725614261516e-03, +-3.586246672593244519e-03, +-3.585713820084667630e-03, +-3.585175169234284479e-03, +-3.584630721197191484e-03, +-3.584080477137826983e-03, +-3.583524438230018504e-03, +-3.582962605656957612e-03, +-3.582394980611126618e-03, +-3.581821564294433886e-03, +-3.581242357918116691e-03, +-3.580657362702723868e-03, +-3.580066579878209056e-03, +-3.579470010683798858e-03, +-3.578867656368122947e-03, +-3.578259518189133397e-03, +-3.577645597414061320e-03, +-3.577025895319546102e-03, +-3.576400413191539989e-03, +-3.575769152325282505e-03, +-3.575132114025366369e-03, +-3.574489299605731422e-03, +-3.573840710389575726e-03, +-3.573186347709460513e-03, +-3.572526212907276358e-03, +-3.571860307334162946e-03, +-3.571188632350633975e-03, +-3.570511189326437511e-03, +-3.569827979640731192e-03, +-3.569139004681888810e-03, +-3.568444265847562757e-03, +-3.567743764544814566e-03, +-3.567037502189903276e-03, +-3.566325480208379101e-03, +-3.565607700035118566e-03, +-3.564884163114294575e-03, +-3.564154870899294454e-03, +-3.563419824852855251e-03, +-3.562679026446950985e-03, +-3.561932477162858129e-03, +-3.561180178491078416e-03, +-3.560422131931419501e-03, +-3.559658338992955501e-03, +-3.558888801194003138e-03, +-3.558113520062109163e-03, +-3.557332497134176128e-03, +-3.556545733956254212e-03, +-3.555753232083702989e-03, +-3.554954993081100786e-03, +-3.554151018522276346e-03, +-3.553341309990329204e-03, +-3.552525869077552065e-03, +-3.551704697385484142e-03, +-3.550877796524952359e-03, +-3.550045168115912187e-03, +-3.549206813787620686e-03, +-3.548362735178567547e-03, +-3.547512933936368407e-03, +-3.546657411717970849e-03, +-3.545796170189471387e-03, +-3.544929211026170545e-03, +-3.544056535912604080e-03, +-3.543178146542533009e-03, +-3.542294044618844295e-03, +-3.541404231853703070e-03, +-3.540508709968400846e-03, +-3.539607480693460900e-03, +-3.538700545768626998e-03, +-3.537787906942723749e-03, +-3.536869565973849595e-03, +-3.535945524629267086e-03, +-3.535015784685368190e-03, +-3.534080347927762329e-03, +-3.533139216151226503e-03, +-3.532192391159658020e-03, +-3.531239874766142588e-03, +-3.530281668792945634e-03, +-3.529317775071477616e-03, +-3.528348195442282311e-03, +-3.527372931755000818e-03, +-3.526391985868568453e-03, +-3.525405359650920275e-03, +-3.524413054979172368e-03, +-3.523415073739585845e-03, +-3.522411417827577256e-03, +-3.521402089147605829e-03, +-3.520387089613334370e-03, +-3.519366421147523873e-03, +-3.518340085682060414e-03, +-3.517308085157895732e-03, +-3.516270421525122692e-03, +-3.515227096742986126e-03, +-3.514178112779754032e-03, +-3.513123471612779585e-03, +-3.512063175228649029e-03, +-3.510997225622868555e-03, +-3.509925624800148795e-03, +-3.508848374774250437e-03, +-3.507765477567982484e-03, +-3.506676935213278584e-03, +-3.505582749751086011e-03, +-3.504482923231484921e-03, +-3.503377457713596852e-03, +-3.502266355265573009e-03, +-3.501149617964661488e-03, +-3.500027247897160871e-03, +-3.498899247158381628e-03, +-3.497765617852724614e-03, +-3.496626362093621654e-03, +-3.495481482003513427e-03, +-3.494330979713898902e-03, +-3.493174857365340981e-03, +-3.492013117107339425e-03, +-3.490845761098514306e-03, +-3.489672791506393500e-03, +-3.488494210507678966e-03, +-3.487310020287941442e-03, +-3.486120223041787834e-03, +-3.484924820972850387e-03, +-3.483723816293802719e-03, +-3.482517211226201972e-03, +-3.481305008000688296e-03, +-3.480087208856882941e-03, +-3.478863816043312358e-03, +-3.477634831817563461e-03, +-3.476400258446168262e-03, +-3.475160098204657655e-03, +-3.473914353377454724e-03, +-3.472663026257961916e-03, +-3.471406119148651680e-03, +-3.470143634360814498e-03, +-3.468875574214701565e-03, +-3.467601941039632346e-03, +-3.466322737173712677e-03, +-3.465037964964104954e-03, +-3.463747626766804349e-03, +-3.462451724946794939e-03, +-3.461150261878013709e-03, +-3.459843239943216544e-03, +-3.458530661534157339e-03, +-3.457212529051511239e-03, +-3.455888844904770121e-03, +-3.454559611512400021e-03, +-3.453224831301790389e-03, +-3.451884506709108815e-03, +-3.450538640179526967e-03, +-3.449187234167083987e-03, +-3.447830291134619703e-03, +-3.446467813553953305e-03, +-3.445099803905679950e-03, +-3.443726264679322982e-03, +-3.442347198373301841e-03, +-3.440962607494776372e-03, +-3.439572494559854123e-03, +-3.438176862093489730e-03, +-3.436775712629417702e-03, +-3.435369048710280784e-03, +-3.433956872887537586e-03, +-3.432539187721439164e-03, +-3.431115995781104915e-03, +-3.429687299644494820e-03, +-3.428253101898297555e-03, +-3.426813405138110034e-03, +-3.425368211968283019e-03, +-3.423917525002022604e-03, +-3.422461346861266178e-03, +-3.420999680176710616e-03, +-3.419532527588027386e-03, +-3.418059891743495220e-03, +-3.416581775300193101e-03, +-3.415098180924033659e-03, +-3.413609111289677735e-03, +-3.412114569080595527e-03, +-3.410614556988886183e-03, +-3.409109077715526733e-03, +-3.407598133970245018e-03, +-3.406081728471413873e-03, +-3.404559863946241081e-03, +-3.403032543130659216e-03, +-3.401499768769301792e-03, +-3.399961543615452088e-03, +-3.398417870431361034e-03, +-3.396868751987722462e-03, +-3.395314191064127598e-03, +-3.393754190448737204e-03, +-3.392188752938520534e-03, +-3.390617881339124794e-03, +-3.389041578464823973e-03, +-3.387459847138652846e-03, +-3.385872690192319803e-03, +-3.384280110466134431e-03, +-3.382682110809164498e-03, +-3.381078694079145321e-03, +-3.379469863142385219e-03, +-3.377855620873934216e-03, +-3.376235970157502077e-03, +-3.374610913885342078e-03, +-3.372980454958453538e-03, +-3.371344596286467762e-03, +-3.369703340787550024e-03, +-3.368056691388620315e-03, +-3.366404651025052368e-03, +-3.364747222641081750e-03, +-3.363084409189339222e-03, +-3.361416213631098805e-03, +-3.359742638936296863e-03, +-3.358063688083490900e-03, +-3.356379364059690860e-03, +-3.354689669860607196e-03, +-3.352994608490540273e-03, +-3.351294182962240732e-03, +-3.349588396297151476e-03, +-3.347877251525214690e-03, +-3.346160751685013212e-03, +-3.344438899823562374e-03, +-3.342711698996413648e-03, +-3.340979152267869751e-03, +-3.339241262710567013e-03, +-3.337498033405679639e-03, +-3.335749467443004275e-03, +-3.333995567920810393e-03, +-3.332236337945927891e-03, +-3.330471780633574921e-03, +-3.328701899107586008e-03, +-3.326926696500301893e-03, +-3.325146175952438995e-03, +-3.323360340613311457e-03, +-3.321569193640703209e-03, +-3.319772738200834575e-03, +-3.317970977468318473e-03, +-3.316163914626486103e-03, +-3.314351552866845723e-03, +-3.312533895389527597e-03, +-3.310710945403097516e-03, +-3.308882706124454450e-03, +-3.307049180779085117e-03, +-3.305210372600756938e-03, +-3.303366284831771305e-03, +-3.301516920722873377e-03, +-3.299662283533062995e-03, +-3.297802376529908666e-03, +-3.295937202989347205e-03, +-3.294066766195623448e-03, +-3.292191069441475441e-03, +-3.290310116028030783e-03, +-3.288423909264680863e-03, +-3.286532452469295099e-03, +-3.284635748968138102e-03, +-3.282733802095688398e-03, +-3.280826615194968893e-03, +-3.278914191617118834e-03, +-3.276996534721947612e-03, +-3.275073647877325446e-03, +-3.273145534459505172e-03, +-3.271212197853160843e-03, +-3.269273641451267594e-03, +-3.267329868655009274e-03, +-3.265380882874000489e-03, +-3.263426687526119196e-03, +-3.261467286037562224e-03, +-3.259502681842729472e-03, +-3.257532878384393916e-03, +-3.255557879113641761e-03, +-3.253577687489684223e-03, +-3.251592306980132050e-03, +-3.249601741060861079e-03, +-3.247605993215917260e-03, +-3.245605066937549184e-03, +-3.243598965726513395e-03, +-3.241587693091497590e-03, +-3.239571252549635402e-03, +-3.237549647626115218e-03, +-3.235522881854472049e-03, +-3.233490958776456554e-03, +-3.231453881941904506e-03, +-3.229411654908957967e-03, +-3.227364281243974651e-03, +-3.225311764521367891e-03, +-3.223254108323851241e-03, +-3.221191316242335255e-03, +-3.219123391875750115e-03, +-3.217050338831313645e-03, +-3.214972160724434164e-03, +-3.212888861178510129e-03, +-3.210800443825279245e-03, +-3.208706912304411241e-03, +-3.206608270263870426e-03, +-3.204504521359746554e-03, +-3.202395669256043187e-03, +-3.200281717625218063e-03, +-3.198162670147556858e-03, +-3.196038530511479802e-03, +-3.193909302413608896e-03, +-3.191774989558642146e-03, +-3.189635595659224762e-03, +-3.187491124436220204e-03, +-3.185341579618495948e-03, +-3.183186964943051419e-03, +-3.181027284154785105e-03, +-3.178862541006792497e-03, +-3.176692739260201723e-03, +-3.174517882684094183e-03, +-3.172337975055531875e-03, +-3.170153020159877447e-03, +-3.167963021790218704e-03, +-3.165767983747717288e-03, +-3.163567909841622124e-03, +-3.161362803889146249e-03, +-3.159152669715519293e-03, +-3.156937511153814005e-03, +-3.154717332045242021e-03, +-3.152492136238965216e-03, +-3.150261927591972537e-03, +-3.148026709969354089e-03, +-3.145786487244154987e-03, +-3.143541263297265197e-03, +-3.141291042017445995e-03, +-3.139035827301705096e-03, +-3.136775623054611876e-03, +-3.134510433188917103e-03, +-3.132240261625080218e-03, +-3.129965112291586797e-03, +-3.127684989124850101e-03, +-3.125399896069008549e-03, +-3.123109837076241437e-03, +-3.120814816106590259e-03, +-3.118514837127837717e-03, +-3.116209904115752310e-03, +-3.113900021053979048e-03, +-3.111585191933851670e-03, +-3.109265420754698389e-03, +-3.106940711523683597e-03, +-3.104611068255645669e-03, +-3.102276494973398371e-03, +-3.099936995707578639e-03, +-3.097592574496448817e-03, +-3.095243235386309529e-03, +-3.092888982430982720e-03, +-3.090529819692433133e-03, +-3.088165751240104333e-03, +-3.085796781151263057e-03, +-3.083422913511040409e-03, +-3.081044152412333852e-03, +-3.078660501955615084e-03, +-3.076271966249299102e-03, +-3.073878549409432386e-03, +-3.071480255559883715e-03, +-3.069077088832077461e-03, +-3.066669053365309733e-03, +-3.064256153306575779e-03, +-3.061838392810488450e-03, +-3.059415776039286442e-03, +-3.056988307163221140e-03, +-3.054555990359898721e-03, +-3.052118829814664397e-03, +-3.049676829720619330e-03, +-3.047229994278485322e-03, +-3.044778327696687215e-03, +-3.042321834191127807e-03, +-3.039860517985509651e-03, +-3.037394383311158106e-03, +-3.034923434406888200e-03, +-3.032447675519262670e-03, +-3.029967110902463592e-03, +-3.027481744818112403e-03, +-3.024991581535581286e-03, +-3.022496625331835308e-03, +-3.019996880491256346e-03, +-3.017492351305967480e-03, +-3.014983042075637405e-03, +-3.012468957107338179e-03, +-3.009950100715921666e-03, +-3.007426477223532069e-03, +-3.004898090960054797e-03, +-3.002364946262877938e-03, +-2.999827047476740470e-03, +-2.997284398954077472e-03, +-2.994737005054821932e-03, +-2.992184870146226069e-03, +-2.989627998603213051e-03, +-2.987066394808191375e-03, +-2.984500063150870124e-03, +-2.981929008028591597e-03, +-2.979353233846118373e-03, +-2.976772745015705737e-03, +-2.974187545956947717e-03, +-2.971597641096816560e-03, +-2.969003034870070380e-03, +-2.966403731718519378e-03, +-2.963799736091417888e-03, +-2.961191052445759711e-03, +-2.958577685245594637e-03, +-2.955959638962419624e-03, +-2.953336918075234740e-03, +-2.950709527070361025e-03, +-2.948077470441554972e-03, +-2.945440752689734449e-03, +-2.942799378323375948e-03, +-2.940153351858289937e-03, +-2.937502677817444355e-03, +-2.934847360731319358e-03, +-2.932187405137728648e-03, +-2.929522815581613905e-03, +-2.926853596615393033e-03, +-2.924179752798808807e-03, +-2.921501288698696852e-03, +-2.918818208889428431e-03, +-2.916130517952405642e-03, +-2.913438220476477318e-03, +-2.910741321057772057e-03, +-2.908039824299472279e-03, +-2.905333734812184585e-03, +-2.902623057213771056e-03, +-2.899907796129128513e-03, +-2.897187956190558009e-03, +-2.894463542037589189e-03, +-2.891734558316754779e-03, +-2.889001009681986098e-03, +-2.886262900794399257e-03, +-2.883520236322096968e-03, +-2.880773020940631274e-03, +-2.878021259332388167e-03, +-2.875264956187339582e-03, +-2.872504116202272313e-03, +-2.869738744081082489e-03, +-2.866968844535178456e-03, +-2.864194422282734850e-03, +-2.861415482049101990e-03, +-2.858632028566871364e-03, +-2.855844066575715171e-03, +-2.853051600822244065e-03, +-2.850254636060317245e-03, +-2.847453177050831685e-03, +-2.844647228561792383e-03, +-2.841836795368107241e-03, +-2.839021882251910583e-03, +-2.836202494002367999e-03, +-2.833378635415591783e-03, +-2.830550311294645262e-03, +-2.827717526449981689e-03, +-2.824880285698641927e-03, +-2.822038593864978264e-03, +-2.819192455780091498e-03, +-2.816341876282265483e-03, +-2.813486860216753756e-03, +-2.810627412435609106e-03, +-2.807763537798024008e-03, +-2.804895241170145444e-03, +-2.802022527424901429e-03, +-2.799145401442320637e-03, +-2.796263868109390583e-03, +-2.793377932319808261e-03, +-2.790487598974388233e-03, +-2.787592872980861405e-03, +-2.784693759253631731e-03, +-2.781790262714292292e-03, +-2.778882388291038959e-03, +-2.775970140919127496e-03, +-2.773053525540692277e-03, +-2.770132547104526850e-03, +-2.767207210566461663e-03, +-2.764277520889178458e-03, +-2.761343483041983453e-03, +-2.758405102001211529e-03, +-2.755462382750008092e-03, +-2.752515330278125245e-03, +-2.749563949582317732e-03, +-2.746608245666119601e-03, +-2.743648223539650773e-03, +-2.740683888220017770e-03, +-2.737715244731007101e-03, +-2.734742298103227075e-03, +-2.731765053373909173e-03, +-2.728783515586954457e-03, +-2.725797689793389364e-03, +-2.722807581050565567e-03, +-2.719813194422614471e-03, +-2.716814534980514437e-03, +-2.713811607801916437e-03, +-2.710804417970983596e-03, +-2.707792970578729898e-03, +-2.704777270722802905e-03, +-2.701757323507563129e-03, +-2.698733134043832058e-03, +-2.695704707449256016e-03, +-2.692672048848134426e-03, +-2.689635163371262815e-03, +-2.686594056155980088e-03, +-2.683548732346632566e-03, +-2.680499197093698816e-03, +-2.677445455554542525e-03, +-2.674387512893075525e-03, +-2.671325374279603839e-03, +-2.668259044891256593e-03, +-2.665188529911472967e-03, +-2.662113834530416799e-03, +-2.659034963944809180e-03, +-2.655951923357694703e-03, +-2.652864717978835676e-03, +-2.649773353024530848e-03, +-2.646677833717347387e-03, +-2.643578165286575819e-03, +-2.640474352967991066e-03, +-2.637366402003642109e-03, +-2.634254317642242740e-03, +-2.631138105138970760e-03, +-2.628017769755259386e-03, +-2.624893316759259552e-03, +-2.621764751425192854e-03, +-2.618632079034217616e-03, +-2.615495304873468284e-03, +-2.612354434236575408e-03, +-2.609209472423689499e-03, +-2.606060424741366531e-03, +-2.602907296502322051e-03, +-2.599750093025867022e-03, +-2.596588819637658894e-03, +-2.593423481669509915e-03, +-2.590254084459783952e-03, +-2.587080633353112859e-03, +-2.583903133700514877e-03, +-2.580721590859206844e-03, +-2.577536010192631524e-03, +-2.574346397070945928e-03, +-2.571152756870197752e-03, +-2.567955094972685769e-03, +-2.564753416767436879e-03, +-2.561547727649220781e-03, +-2.558338033019441193e-03, +-2.555124338285440656e-03, +-2.551906648861024425e-03, +-2.548684970166223678e-03, +-2.545459307627067399e-03, +-2.542229666676012589e-03, +-2.538996052751720054e-03, +-2.535758471298822387e-03, +-2.532516927768358947e-03, +-2.529271427617516953e-03, +-2.526021976309456712e-03, +-2.522768579313700195e-03, +-2.519511242105908124e-03, +-2.516249970167677014e-03, +-2.512984768987000170e-03, +-2.509715644057709111e-03, +-2.506442600879964060e-03, +-2.503165644960014119e-03, +-2.499884781809985634e-03, +-2.496600016948310671e-03, +-2.493311355899482853e-03, +-2.490018804193841386e-03, +-2.486722367367995637e-03, +-2.483422050964613926e-03, +-2.480117860532154214e-03, +-2.476809801625332909e-03, +-2.473497879804886345e-03, +-2.470182100637327918e-03, +-2.466862469695462433e-03, +-2.463538992557727774e-03, +-2.460211674809035381e-03, +-2.456880522039836968e-03, +-2.453545539846534781e-03, +-2.450206733831936535e-03, +-2.446864109604339910e-03, +-2.443517672778042129e-03, +-2.440167428973421485e-03, +-2.436813383816687981e-03, +-2.433455542940027305e-03, +-2.430093911981302465e-03, +-2.426728496584486597e-03, +-2.423359302399413166e-03, +-2.419986335081568667e-03, +-2.416609600292512865e-03, +-2.413229103699658911e-03, +-2.409844850976102914e-03, +-2.406456847800698962e-03, +-2.403065099858559591e-03, +-2.399669612840083475e-03, +-2.396270392441847072e-03, +-2.392867444365912033e-03, +-2.389460774320352997e-03, +-2.386050388018998245e-03, +-2.382636291181225007e-03, +-2.379218489532388802e-03, +-2.375796988803576676e-03, +-2.372371794731389059e-03, +-2.368942913058376051e-03, +-2.365510349532780679e-03, +-2.362074109908353717e-03, +-2.358634199944745300e-03, +-2.355190625407294156e-03, +-2.351743392066785177e-03, +-2.348292505699903047e-03, +-2.344837972088971607e-03, +-2.341379797021751318e-03, +-2.337917986291928891e-03, +-2.334452545698433371e-03, +-2.330983481046354673e-03, +-2.327510798145926169e-03, +-2.324034502813055510e-03, +-2.320554600869389680e-03, +-2.317071098142148462e-03, +-2.313584000463893720e-03, +-2.310093313672979126e-03, +-2.306599043613306432e-03, +-2.303101196134066993e-03, +-2.299599777090232701e-03, +-2.296094792342209898e-03, +-2.292586247755995944e-03, +-2.289074149202918133e-03, +-2.285558502559729976e-03, +-2.282039313709130750e-03, +-2.278516588538807494e-03, +-2.274990332941998795e-03, +-2.271460552817549002e-03, +-2.267927254069654081e-03, +-2.264390442608029460e-03, +-2.260850124347577386e-03, +-2.257306305208837526e-03, +-2.253758991117749740e-03, +-2.250208188005408620e-03, +-2.246653901808537933e-03, +-2.243096138469227382e-03, +-2.239534903934760433e-03, +-2.235970204157700612e-03, +-2.232402045096423208e-03, +-2.228830432714090908e-03, +-2.225255372979487341e-03, +-2.221676871866723035e-03, +-2.218094935354966105e-03, +-2.214509569428994330e-03, +-2.210920780078549398e-03, +-2.207328573298879878e-03, +-2.203732955090500090e-03, +-2.200133931458934673e-03, +-2.196531508415189120e-03, +-2.192925691975503889e-03, +-2.189316488161090722e-03, +-2.185703902998630942e-03, +-2.182087942519983156e-03, +-2.178468612761986795e-03, +-2.174845919766876280e-03, +-2.171219869582067651e-03, +-2.167590468259894456e-03, +-2.163957721858175004e-03, +-2.160321636439458629e-03, +-2.156682218071969814e-03, +-2.153039472828605083e-03, +-2.149393406787428705e-03, +-2.145744026031767230e-03, +-2.142091336650053801e-03, +-2.138435344735549297e-03, +-2.134776056386815911e-03, +-2.131113477707419213e-03, +-2.127447614806032665e-03, +-2.123778473796140119e-03, +-2.120106060796495950e-03, +-2.116430381930865280e-03, +-2.112751443327796734e-03, +-2.109069251121062187e-03, +-2.105383811449432988e-03, +-2.101695130456487839e-03, +-2.098003214290708202e-03, +-2.094308069106005227e-03, +-2.090609701060678911e-03, +-2.086908116318358323e-03, +-2.083203321047297305e-03, +-2.079495321420898359e-03, +-2.075784123617468481e-03, +-2.072069733819960260e-03, +-2.068352158216482748e-03, +-2.064631402999995285e-03, +-2.060907474368091092e-03, +-2.057180378523454367e-03, +-2.053450121673631307e-03, +-2.049716710030726960e-03, +-2.045980149811950366e-03, +-2.042240447239307508e-03, +-2.038497608539358453e-03, +-2.034751639943797614e-03, +-2.031002547688758129e-03, +-2.027250338015402532e-03, +-2.023495017169663849e-03, +-2.019736591401958496e-03, +-2.015975066967707566e-03, +-2.012210450127057976e-03, +-2.008442747144634829e-03, +-2.004671964290008924e-03, +-2.000898107837463004e-03, +-1.997121184065720704e-03, +-1.993341199258419263e-03, +-1.989558159703804646e-03, +-1.985772071694837364e-03, +-1.981982941528904942e-03, +-1.978190775508253431e-03, +-1.974395579939780977e-03, +-1.970597361134811005e-03, +-1.966796125409209315e-03, +-1.962991879083928783e-03, +-1.959184628484006690e-03, +-1.955374379939139352e-03, +-1.951561139783751292e-03, +-1.947744914356747820e-03, +-1.943925710001644059e-03, +-1.940103533066247707e-03, +-1.936278389903134996e-03, +-1.932450286869393744e-03, +-1.928619230326361405e-03, +-1.924785226640119470e-03, +-1.920948282181228484e-03, +-1.917108403324545903e-03, +-1.913265596449304157e-03, +-1.909419867939696333e-03, +-1.905571224183751425e-03, +-1.901719671574358689e-03, +-1.897865216508472491e-03, +-1.894007865387716200e-03, +-1.890147624618109846e-03, +-1.886284500609792776e-03, +-1.882418499777536915e-03, +-1.878549628540488294e-03, +-1.874677893321868459e-03, +-1.870803300549520910e-03, +-1.866925856655595383e-03, +-1.863045568076320815e-03, +-1.859162441252501042e-03, +-1.855276482629210572e-03, +-1.851387698655580349e-03, +-1.847496095785268726e-03, +-1.843601680476200178e-03, +-1.839704459190291208e-03, +-1.835804438394061629e-03, +-1.831901624557828127e-03, +-1.827996024156728835e-03, +-1.824087643669610945e-03, +-1.820176489579599256e-03, +-1.816262568374187470e-03, +-1.812345886545054094e-03, +-1.808426450587782928e-03, +-1.804504267002380669e-03, +-1.800579342292913266e-03, +-1.796651682967675056e-03, +-1.792721295538825558e-03, +-1.788788186522904684e-03, +-1.784852362440554098e-03, +-1.780913829816329870e-03, +-1.776972595178803521e-03, +-1.773028665061127107e-03, +-1.769082046000000847e-03, +-1.765132744536254683e-03, +-1.761180767214944780e-03, +-1.757226120585064257e-03, +-1.753268811199714490e-03, +-1.749308845615741041e-03, +-1.745346230394253422e-03, +-1.741380972100347972e-03, +-1.737413077302823799e-03, +-1.733442552574722059e-03, +-1.729469404493033657e-03, +-1.725493639638423860e-03, +-1.721515264595759433e-03, +-1.717534285953830221e-03, +-1.713550710305067901e-03, +-1.709564544246066188e-03, +-1.705575794377318672e-03, +-1.701584467302919143e-03, +-1.697590569631192599e-03, +-1.693594107973957555e-03, +-1.689595088947150325e-03, +-1.685593519170531206e-03, +-1.681589405267435540e-03, +-1.677582753865264212e-03, +-1.673573571595210648e-03, +-1.669561865092019466e-03, +-1.665547640994456810e-03, +-1.661530905945065749e-03, +-1.657511666589881350e-03, +-1.653489929578955435e-03, +-1.649465701565974935e-03, +-1.645438989208448596e-03, +-1.641409799167424651e-03, +-1.637378138107555003e-03, +-1.633344012697724498e-03, +-1.629307429609964334e-03, +-1.625268395519968365e-03, +-1.621226917107629339e-03, +-1.617183001055951669e-03, +-1.613136654051668985e-03, +-1.609087882785308976e-03, +-1.605036693950932531e-03, +-1.600983094246292027e-03, +-1.596927090372465743e-03, +-1.592868689034369597e-03, +-1.588807896940510386e-03, +-1.584744720802667463e-03, +-1.580679167336446547e-03, +-1.576611243260983303e-03, +-1.572540955298672724e-03, +-1.568468310175703427e-03, +-1.564393314621749303e-03, +-1.560315975369726662e-03, +-1.556236299156376441e-03, +-1.552154292721558615e-03, +-1.548069962808861942e-03, +-1.543983316165322296e-03, +-1.539894359541139034e-03, +-1.535803099690214064e-03, +-1.531709543369858678e-03, +-1.527613697340520762e-03, +-1.523515568366309121e-03, +-1.519415163214712667e-03, +-1.515312488656323084e-03, +-1.511207551465356107e-03, +-1.507100358419390454e-03, +-1.502990916299043423e-03, +-1.498879231888643323e-03, +-1.494765311975369696e-03, +-1.490649163350343375e-03, +-1.486530792807430395e-03, +-1.482410207143775418e-03, +-1.478287413160342964e-03, +-1.474162417660805462e-03, +-1.470035227452177497e-03, +-1.465905849344887593e-03, +-1.461774290152591076e-03, +-1.457640556691882543e-03, +-1.453504655782831244e-03, +-1.449366594248608546e-03, +-1.445226378915657941e-03, +-1.441084016613311015e-03, +-1.436939514174334111e-03, +-1.432792878434645777e-03, +-1.428644116233102751e-03, +-1.424493234411606645e-03, +-1.420340239815712615e-03, +-1.416185139293440424e-03, +-1.412027939696355611e-03, +-1.407868647878727716e-03, +-1.403707270698186654e-03, +-1.399543815015398540e-03, +-1.395378287693810034e-03, +-1.391210695600174395e-03, +-1.387041045604262652e-03, +-1.382869344578587130e-03, +-1.378695599398931191e-03, +-1.374519816944064525e-03, +-1.370342004095457568e-03, +-1.366162167737832497e-03, +-1.361980314758849024e-03, +-1.357796452048843109e-03, +-1.353610586501450153e-03, +-1.349422725012853217e-03, +-1.345232874482425083e-03, +-1.341041041812427283e-03, +-1.336847233907743166e-03, +-1.332651457676396799e-03, +-1.328453720029279311e-03, +-1.324254027879855945e-03, +-1.320052388144712279e-03, +-1.315848807743258018e-03, +-1.311643293597445107e-03, +-1.307435852632312431e-03, +-1.303226491775691344e-03, +-1.299015217957911854e-03, +-1.294802038112370960e-03, +-1.290586959175118054e-03, +-1.286369988085051159e-03, +-1.282151131783618777e-03, +-1.277930397214901200e-03, +-1.273707791326260386e-03, +-1.269483321067195036e-03, +-1.265256993389987867e-03, +-1.261028815249791912e-03, +-1.256798793604439052e-03, +-1.252566935414121257e-03, +-1.248333247641968471e-03, +-1.244097737253652440e-03, +-1.239860411217553245e-03, +-1.235621276504397835e-03, +-1.231380340087778486e-03, +-1.227137608943887391e-03, +-1.222893090051301338e-03, +-1.218646790391074517e-03, +-1.214398716947375162e-03, +-1.210148876706255419e-03, +-1.205897276656682201e-03, +-1.201643923790140806e-03, +-1.197388825100338281e-03, +-1.193131987583862181e-03, +-1.188873418239404494e-03, +-1.184613124068415856e-03, +-1.180351112074813679e-03, +-1.176087389264676621e-03, +-1.171821962646812281e-03, +-1.167554839232457084e-03, +-1.163286026034974011e-03, +-1.159015530070425055e-03, +-1.154743358357257889e-03, +-1.150469517916025055e-03, +-1.146194015769924765e-03, +-1.141916858944532452e-03, +-1.137638054467461418e-03, +-1.133357609369067777e-03, +-1.129075530681537126e-03, +-1.124791825440044643e-03, +-1.120506500681491338e-03, +-1.116219563445168235e-03, +-1.111931020772831836e-03, +-1.107640879708504840e-03, +-1.103349147298183629e-03, +-1.099055830590391861e-03, +-1.094760936635886649e-03, +-1.090464472487357155e-03, +-1.086166445199991627e-03, +-1.081866861831082532e-03, +-1.077565729440197861e-03, +-1.073263055088891646e-03, +-1.068958845840785711e-03, +-1.064653108762229515e-03, +-1.060345850921133983e-03, +-1.056037079387538982e-03, +-1.051726801234182523e-03, +-1.047415023535223574e-03, +-1.043101753367408875e-03, +-1.038786997809170234e-03, +-1.034470763941310609e-03, +-1.030153058846677546e-03, +-1.025833889609890394e-03, +-1.021513263317885443e-03, +-1.017191187059619502e-03, +-1.012867667925782802e-03, +-1.008542713009346952e-03, +-1.004216329405276326e-03, +-9.998885242102240490e-04, +-9.955593045230949189e-04, +-9.912286774447487663e-04, +-9.868966500777003482e-04, +-9.825632295267822287e-04, +-9.782284228983543963e-04, +-9.738922373009806970e-04, +-9.695546798451190780e-04, +-9.652157576428179028e-04, +-9.608754778082941560e-04, +-9.565338474576227110e-04, +-9.521908737084349220e-04, +-9.478465636804961781e-04, +-9.435009244953958219e-04, +-9.391539632762424886e-04, +-9.348056871482415516e-04, +-9.304561032383957750e-04, +-9.261052186751853651e-04, +-9.217530405892503673e-04, +-9.173995761125067162e-04, +-9.130448323792865993e-04, +-9.086888165250780721e-04, +-9.043315356870880841e-04, +-8.999729970048140704e-04, +-8.956132076188710617e-04, +-8.912521746716576014e-04, +-8.868899053074376024e-04, +-8.825264066720408911e-04, +-8.781616859130503402e-04, +-8.737957501793892218e-04, +-8.694286066219079770e-04, +-8.650602623930662202e-04, +-8.606907246466379436e-04, +-8.563200005382815916e-04, +-8.519480972252382184e-04, +-8.475750218661216948e-04, +-8.432007816210045775e-04, +-8.388253836520943255e-04, +-8.344488351224395219e-04, +-8.300711431971149069e-04, +-8.256923150422982877e-04, +-8.213123578259700665e-04, +-8.169312787175965441e-04, +-8.125490848878215737e-04, +-8.081657835090497524e-04, +-8.037813817551359066e-04, +-7.993958868010837913e-04, +-7.950093058236170317e-04, +-7.906216460008769556e-04, +-7.862329145121147887e-04, +-7.818431185382687752e-04, +-7.774522652616613601e-04, +-7.730603618656891078e-04, +-7.686674155354007981e-04, +-7.642734334571914647e-04, +-7.598784228184958913e-04, +-7.554823908084665630e-04, +-7.510853446170721523e-04, +-7.466872914362719270e-04, +-7.422882384587206703e-04, +-7.378881928784496690e-04, +-7.334871618909500875e-04, +-7.290851526929627421e-04, +-7.246821724821796195e-04, +-7.202782284578104809e-04, +-7.158733278202877425e-04, +-7.114674777709496713e-04, +-7.070606855126250955e-04, +-7.026529582492259613e-04, +-6.982443031859329480e-04, +-6.938347275288888564e-04, +-6.894242384852840430e-04, +-6.850128432640330712e-04, +-6.806005490745844740e-04, +-6.761873631275950192e-04, +-6.717732926350200237e-04, +-6.673583448098025124e-04, +-6.629425268660587255e-04, +-6.585258460186768550e-04, +-6.541083094838889616e-04, +-6.496899244789722770e-04, +-6.452706982219309903e-04, +-6.408506379320918003e-04, +-6.364297508297747522e-04, +-6.320080441361055614e-04, +-6.275855250730898822e-04, +-6.231622008642934271e-04, +-6.187380787335517666e-04, +-6.143131659060401114e-04, +-6.098874696078694473e-04, +-6.054609970657763443e-04, +-6.010337555078051376e-04, +-5.966057521625017139e-04, +-5.921769942595975353e-04, +-5.877474890297003157e-04, +-5.833172437039810124e-04, +-5.788862655147659084e-04, +-5.744545616952168813e-04, +-5.700221394790289109e-04, +-5.655890061010083927e-04, +-5.611551687967714043e-04, +-5.567206348024260343e-04, +-5.522854113551591525e-04, +-5.478495056929299058e-04, +-5.434129250541541072e-04, +-5.389756766783934628e-04, +-5.345377678054457097e-04, +-5.300992056765257456e-04, +-5.256599975329640439e-04, +-5.212201506168901355e-04, +-5.167796721713169587e-04, +-5.123385694399322596e-04, +-5.078968496667937140e-04, +-5.034545200969034462e-04, +-4.990115879758049225e-04, +-4.945680605497701932e-04, +-4.901239450653903894e-04, +-4.856792487701557166e-04, +-4.812339789121517701e-04, +-4.767881427398448085e-04, +-4.723417475021725559e-04, +-4.678948004492210688e-04, +-4.634473088310322227e-04, +-4.589992798981774175e-04, +-4.545507209023464073e-04, +-4.501016390950419760e-04, +-4.456520417287648610e-04, +-4.412019360561029156e-04, +-4.367513293304168664e-04, +-4.323002288055297440e-04, +-4.278486417354178308e-04, +-4.233965753747946127e-04, +-4.189440369787992332e-04, +-4.144910338026907485e-04, +-4.100375731024282302e-04, +-4.055836621343625261e-04, +-4.011293081549278591e-04, +-3.966745184212229058e-04, +-3.922193001907048338e-04, +-3.877636607208740163e-04, +-3.833076072699645063e-04, +-3.788511470961332156e-04, +-3.743942874581414446e-04, +-3.699370356150526065e-04, +-3.654793988259125506e-04, +-3.610213843503437049e-04, +-3.565629994482258326e-04, +-3.521042513793945158e-04, +-3.476451474042200653e-04, +-3.431856947832985765e-04, +-3.387259007771454807e-04, +-3.342657726467740203e-04, +-3.298053176532906249e-04, +-3.253445430580805269e-04, +-3.208834561223988541e-04, +-3.164220641079530097e-04, +-3.119603742765956252e-04, +-3.074983938901113532e-04, +-3.030361302103078310e-04, +-2.985735904996952590e-04, +-2.941107820202841830e-04, +-2.896477120342718487e-04, +-2.851843878041249798e-04, +-2.807208165922734375e-04, +-2.762570056612944800e-04, +-2.717929622735067293e-04, +-2.673286936915517369e-04, +-2.628642071780848779e-04, +-2.583995099954660281e-04, +-2.539346094063443826e-04, +-2.494695126733460972e-04, +-2.450042270588672602e-04, +-2.405387598251573485e-04, +-2.360731182350082652e-04, +-2.316073095504458707e-04, +-2.271413410339129008e-04, +-2.226752199473619237e-04, +-2.182089535529414500e-04, +-2.137425491126821917e-04, +-2.092760138881900704e-04, +-2.048093551412308734e-04, +-2.003425801334182200e-04, +-1.958756961259038325e-04, +-1.914087103799652005e-04, +-1.869416301566912439e-04, +-1.824744627166763507e-04, +-1.780072153206010489e-04, +-1.735398952289256920e-04, +-1.690725097015778567e-04, +-1.646050659985388962e-04, +-1.601375713795318522e-04, +-1.556700331037134065e-04, +-1.512024584303569012e-04, +-1.467348546179458369e-04, +-1.422672289253563310e-04, +-1.377995886105509520e-04, +-1.333319409312636375e-04, +-1.288642931450885713e-04, +-1.243966525092680324e-04, +-1.199290262803823535e-04, +-1.154614217149365696e-04, +-1.109938460689478655e-04, +-1.065263065981360291e-04, +-1.020588105575112652e-04, +-9.759136520195997621e-05, +-9.312397778593584606e-05, +-8.865665556324716008e-05, +-8.418940578714546581e-05, +-7.972223571101091076e-05, +-7.525515258714502386e-05, +-7.078816366745654118e-05, +-6.632127620354895522e-05, +-6.185449744641021623e-05, +-5.738783464659964192e-05, +-5.292129505383886152e-05, +-4.845488591759606521e-05, +-4.398861448677691846e-05, +-3.952248800941337561e-05, +-3.505651373324934560e-05, +-3.059069890543067113e-05, +-2.612505077219404731e-05, +-2.165957657945326000e-05, +-1.719428357248850421e-05, +-1.272917899563580767e-05, +-8.264270092873025154e-06, +-3.799564107509100193e-06, + 6.649317181262322059e-07, + 5.129210141997206169e-06, + 9.593263923170384713e-06, + 1.405708582112927562e-05, + 1.852066859608486718e-05, + 2.298400500928608574e-05, + 2.744708782243402418e-05, + 3.190990979799235067e-05, + 3.637246369949788345e-05, + 4.083474229097468802e-05, + 4.529673833724483993e-05, + 4.975844460423825251e-05, + 5.421985385840772948e-05, + 5.868095886713830546e-05, + 6.314175239856017368e-05, + 6.760222722185932342e-05, + 7.206237610718858129e-05, + 7.652219182498400812e-05, + 8.098166714716990844e-05, + 8.544079484647436004e-05, + 8.989956769634136651e-05, + 9.435797847114131445e-05, + 9.881601994648121789e-05, + 1.032736848986200894e-04, + 1.077309661048774810e-04, + 1.121878563434469472e-04, + 1.166443483938055210e-04, + 1.211004350361284887e-04, + 1.255561090515995126e-04, + 1.300113632227207258e-04, + 1.344661903327275482e-04, + 1.389205831658992289e-04, + 1.433745345078672880e-04, + 1.478280371450326771e-04, + 1.522810838648742612e-04, + 1.567336674562599312e-04, + 1.611857807087606559e-04, + 1.656374164134591343e-04, + 1.700885673622646070e-04, + 1.745392263482237508e-04, + 1.789893861658282406e-04, + 1.834390396104327485e-04, + 1.878881794785635089e-04, + 1.923367985682285079e-04, + 1.967848896783311200e-04, + 2.012324456089823854e-04, + 2.056794591618106311e-04, + 2.101259231393733996e-04, + 2.145718303454729244e-04, + 2.190171735854597342e-04, + 2.234619456655531015e-04, + 2.279061393937455388e-04, + 2.323497475786215599e-04, + 2.367927630306615688e-04, + 2.412351785616574748e-04, + 2.456769869841280633e-04, + 2.501181811125225687e-04, + 2.545587537625352420e-04, + 2.589986977510224633e-04, + 2.634380058962084424e-04, + 2.678766710179944326e-04, + 2.723146859373792796e-04, + 2.767520434768634490e-04, + 2.811887364602644952e-04, + 2.856247577131245589e-04, + 2.900601000621271745e-04, + 2.944947563354066472e-04, + 2.989287193627564372e-04, + 3.033619819755441031e-04, + 3.077945370060275508e-04, + 3.122263772886535275e-04, + 3.166574956588835395e-04, + 3.210878849540947156e-04, + 3.255175380128981695e-04, + 3.299464476754480511e-04, + 3.343746067837498944e-04, + 3.388020081810798638e-04, + 3.432286447122894694e-04, + 3.476545092241183055e-04, + 3.520795945646081472e-04, + 3.565038935834138455e-04, + 3.609273991321134637e-04, + 3.653501040636181999e-04, + 3.697720012324900041e-04, + 3.741930834952465106e-04, + 3.786133437096761466e-04, + 3.830327747356492788e-04, + 3.874513694344273594e-04, + 3.918691206689815191e-04, + 3.962860213042899635e-04, + 4.007020642067664362e-04, + 4.051172422445629279e-04, + 4.095315482878765598e-04, + 4.139449752083719210e-04, + 4.183575158794852408e-04, + 4.227691631767360974e-04, + 4.271799099771437375e-04, + 4.315897491595346641e-04, + 4.359986736048515263e-04, + 4.404066761955709565e-04, + 4.448137498161139954e-04, + 4.492198873526517485e-04, + 4.536250816934231660e-04, + 4.580293257286387654e-04, + 4.624326123498062038e-04, + 4.668349344509285380e-04, + 4.712362849278151598e-04, + 4.756366566780064983e-04, + 4.800360426009737296e-04, + 4.844344355984302685e-04, + 4.888318285737511780e-04, + 4.932282144323780647e-04, + 4.976235860816342763e-04, + 5.020179364311286047e-04, + 5.064112583921794117e-04, + 5.108035448781170131e-04, + 5.151947888044954233e-04, + 5.195849830890034507e-04, + 5.239741206507885895e-04, + 5.283621944117455936e-04, + 5.327491972953503092e-04, + 5.371351222275513220e-04, + 5.415199621360993788e-04, + 5.459037099508495545e-04, + 5.502863586040684062e-04, + 5.546679010298565275e-04, + 5.590483301644509325e-04, + 5.634276389465381731e-04, + 5.678058203166697375e-04, + 5.721828672175726738e-04, + 5.765587725944516491e-04, + 5.809335293944136716e-04, + 5.853071305667758954e-04, + 5.896795690633633430e-04, + 5.940508378379415417e-04, + 5.984209298465179320e-04, + 6.027898380476444688e-04, + 6.071575554017468249e-04, + 6.115240748720136539e-04, + 6.158893894232413731e-04, + 6.202534920231050648e-04, + 6.246163756414966793e-04, + 6.289780332504294087e-04, + 6.333384578242533345e-04, + 6.376976423399480535e-04, + 6.420555797765637720e-04, + 6.464122631155107875e-04, + 6.507676853408713054e-04, + 6.551218394388249201e-04, + 6.594747183980457584e-04, + 6.638263152095226103e-04, + 6.681766228668654332e-04, + 6.725256343662092910e-04, + 6.768733427055554849e-04, + 6.812197408859422751e-04, + 6.855648219108762161e-04, + 6.899085787857593731e-04, + 6.942510045191656451e-04, + 6.985920921216806677e-04, + 7.029318346067958473e-04, + 7.072702249902330105e-04, + 7.116072562902452710e-04, + 7.159429215279299302e-04, + 7.202772137266455011e-04, + 7.246101259123229835e-04, + 7.289416511137592489e-04, + 7.332717823620546645e-04, + 7.376005126909120080e-04, + 7.419278351369367917e-04, + 7.462537427390707667e-04, + 7.505782285388872595e-04, + 7.549012855808997363e-04, + 7.592229069118941508e-04, + 7.635430855817100038e-04, + 7.678618146425782208e-04, + 7.721790871494199583e-04, + 7.764948961601529989e-04, + 7.808092347351150648e-04, + 7.851220959373698873e-04, + 7.894334728330087243e-04, + 7.937433584905777923e-04, + 7.980517459813857468e-04, + 8.023586283797967417e-04, + 8.066639987626675118e-04, + 8.109678502096473712e-04, + 8.152701758034764778e-04, + 8.195709686293212171e-04, + 8.238702217756612963e-04, + 8.281679283331350692e-04, + 8.324640813958026318e-04, + 8.367586740605874578e-04, + 8.410516994267004708e-04, + 8.453431505968170539e-04, + 8.496330206763990983e-04, + 8.539213027736263732e-04, + 8.582079899996856824e-04, + 8.624930754685934892e-04, + 8.667765522975855782e-04, + 8.710584136065627030e-04, + 8.753386525183816944e-04, + 8.796172621591530740e-04, + 8.838942356576826899e-04, + 8.881695661457698725e-04, + 8.924432467584012896e-04, + 8.967152706336731010e-04, + 9.009856309121356665e-04, + 9.052543207380423299e-04, + 9.095213332582139341e-04, + 9.137866616229091106e-04, + 9.180502989851681197e-04, + 9.223122385011123074e-04, + 9.265724733302387918e-04, + 9.308309966348554849e-04, + 9.350878015803873802e-04, + 9.393428813356656006e-04, + 9.435962290723704437e-04, + 9.478478379653229244e-04, + 9.520977011927879170e-04, + 9.563458119359142737e-04, + 9.605921633790254991e-04, + 9.648367487099162795e-04, + 9.690795611192040216e-04, + 9.733205938010962505e-04, + 9.775598399527326079e-04, + 9.817972927744890790e-04, + 9.860329454703647273e-04, + 9.902667912469428121e-04, + 9.944988233146438011e-04, + 9.987290348870698619e-04, + 1.002957419180919860e-03, + 1.007183969416186684e-03, + 1.011408678816456703e-03, + 1.015631540608354869e-03, + 1.019852548021831168e-03, + 1.024071694290463108e-03, + 1.028288972650890851e-03, + 1.032504376343219236e-03, + 1.036717898610825875e-03, + 1.040929532700663428e-03, + 1.045139271863172650e-03, + 1.049347109351633604e-03, + 1.053553038423310148e-03, + 1.057757052338797674e-03, + 1.061959144361940928e-03, + 1.066159307760126962e-03, + 1.070357535804110144e-03, + 1.074553821768394011e-03, + 1.078748158930683968e-03, + 1.082940540572177200e-03, + 1.087130959977848903e-03, + 1.091319410435918858e-03, + 1.095505885238117275e-03, + 1.099690377679902716e-03, + 1.103872881060372979e-03, + 1.108053388681620862e-03, + 1.112231893849955841e-03, + 1.116408389874896196e-03, + 1.120582870069545883e-03, + 1.124755327750887263e-03, + 1.128925756239144680e-03, + 1.133094148858528223e-03, + 1.137260498936598814e-03, + 1.141424799804570053e-03, + 1.145587044797575366e-03, + 1.149747227254133272e-03, + 1.153905340516444026e-03, + 1.158061377930659367e-03, + 1.162215332846359712e-03, + 1.166367198616818706e-03, + 1.170516968599313520e-03, + 1.174664636154565834e-03, + 1.178810194647033271e-03, + 1.182953637445202785e-03, + 1.187094957920947075e-03, + 1.191234149450369831e-03, + 1.195371205412709172e-03, + 1.199506119191546096e-03, + 1.203638884174174995e-03, + 1.207769493751505207e-03, + 1.211897941318282410e-03, + 1.216024220273351003e-03, + 1.220148324019127177e-03, + 1.224270245961968416e-03, + 1.228389979512007615e-03, + 1.232507518083527992e-03, + 1.236622855094421207e-03, + 1.240735983966470774e-03, + 1.244846898125558056e-03, + 1.248955591001564905e-03, + 1.253062056027755451e-03, + 1.257166286641877434e-03, + 1.261268276285626390e-03, + 1.265368018404112874e-03, + 1.269465506447047930e-03, + 1.273560733867669511e-03, + 1.277653694123578399e-03, + 1.281744380676082696e-03, + 1.285832786990517883e-03, + 1.289918906536513749e-03, + 1.294002732787443181e-03, + 1.298084259220736152e-03, + 1.302163479318138410e-03, + 1.306240386565194530e-03, + 1.310314974451515062e-03, + 1.314387236471068615e-03, + 1.318457166121642576e-03, + 1.322524756905135192e-03, + 1.326590002327827922e-03, + 1.330652895899760721e-03, + 1.334713431135473635e-03, + 1.338771601553385765e-03, + 1.342827400676063722e-03, + 1.346880822030520645e-03, + 1.350931859147662395e-03, + 1.354980505562595030e-03, + 1.359026754814883714e-03, + 1.363070600448037725e-03, + 1.367112036009776512e-03, + 1.371151055052321132e-03, + 1.375187651131863208e-03, + 1.379221817808928569e-03, + 1.383253548648211151e-03, + 1.387282837218953117e-03, + 1.391309677094392135e-03, + 1.395334061852069067e-03, + 1.399355985073993643e-03, + 1.403375440346578320e-03, + 1.407392421260022022e-03, + 1.411406921409386972e-03, + 1.415418934393989150e-03, + 1.419428453817312644e-03, + 1.423435473287296745e-03, + 1.427439986416154018e-03, + 1.431441986820760183e-03, + 1.435441468122104639e-03, + 1.439438423945574742e-03, + 1.443432847921245722e-03, + 1.447424733683348340e-03, + 1.451414074870540152e-03, + 1.455400865126091131e-03, + 1.459385098097829882e-03, + 1.463366767437505921e-03, + 1.467345866801957142e-03, + 1.471322389852067029e-03, + 1.475296330253566971e-03, + 1.479267681676419560e-03, + 1.483236437795108081e-03, + 1.487202592288896065e-03, + 1.491166138841315113e-03, + 1.495127071140449392e-03, + 1.499085382879187817e-03, + 1.503041067754727275e-03, + 1.506994119468831094e-03, + 1.510944531728118092e-03, + 1.514892298243527202e-03, + 1.518837412730604129e-03, + 1.522779868909770887e-03, + 1.526719660505807983e-03, + 1.530656781248130888e-03, + 1.534591224871060871e-03, + 1.538522985113218713e-03, + 1.542452055718331570e-03, + 1.546378430434173709e-03, + 1.550302103013744817e-03, + 1.554223067214637478e-03, + 1.558141316798976892e-03, + 1.562056845533594130e-03, + 1.565969647190316918e-03, + 1.569879715545427967e-03, + 1.573787044380050302e-03, + 1.577691627479970967e-03, + 1.581593458635993394e-03, + 1.585492531643442572e-03, + 1.589388840302407690e-03, + 1.593282378417959846e-03, + 1.597173139800054254e-03, + 1.601061118262927640e-03, + 1.604946307626162715e-03, + 1.608828701714096632e-03, + 1.612708294355722112e-03, + 1.616585079384965425e-03, + 1.620459050640532875e-03, + 1.624330201966266195e-03, + 1.628198527210615414e-03, + 1.632064020226922695e-03, + 1.635926674873695993e-03, + 1.639786485014080612e-03, + 1.643643444516152156e-03, + 1.647497547253166548e-03, + 1.651348787103059561e-03, + 1.655197157948715483e-03, + 1.659042653678237953e-03, + 1.662885268184430623e-03, + 1.666724995365081227e-03, + 1.670561829123225249e-03, + 1.674395763366537913e-03, + 1.678226792008053218e-03, + 1.682054908965559606e-03, + 1.685880108161874483e-03, + 1.689702383525094886e-03, + 1.693521728988127591e-03, + 1.697338138488912671e-03, + 1.701151605970712766e-03, + 1.704962125381623457e-03, + 1.708769690674803330e-03, + 1.712574295808765414e-03, + 1.716375934746875191e-03, + 1.720174601457690172e-03, + 1.723970289914803118e-03, + 1.727762994097099434e-03, + 1.731552707988713797e-03, + 1.735339425578387440e-03, + 1.739123140860559082e-03, + 1.742903847834732832e-03, + 1.746681540505432223e-03, + 1.750456212882358503e-03, + 1.754227858980674697e-03, + 1.757996472820485189e-03, + 1.761762048427202186e-03, + 1.765524579831378527e-03, + 1.769284061069055719e-03, + 1.773040486181258046e-03, + 1.776793849214270554e-03, + 1.780544144219898834e-03, + 1.784291365254960090e-03, + 1.788035506381554628e-03, + 1.791776561667328231e-03, + 1.795514525184978413e-03, + 1.799249391012504003e-03, + 1.802981153233482268e-03, + 1.806709805936482357e-03, + 1.810435343215746834e-03, + 1.814157759170614446e-03, + 1.817877047905773610e-03, + 1.821593203531544306e-03, + 1.825306220163356360e-03, + 1.829016091922037405e-03, + 1.832722812934050325e-03, + 1.836426377331008396e-03, + 1.840126779249950245e-03, + 1.843824012833575766e-03, + 1.847518072229767123e-03, + 1.851208951591852428e-03, + 1.854896645078853590e-03, + 1.858581146854919926e-03, + 1.862262451090083417e-03, + 1.865940551959273603e-03, + 1.869615443643407853e-03, + 1.873287120328891771e-03, + 1.876955576207136722e-03, + 1.880620805475577461e-03, + 1.884282802337079515e-03, + 1.887941560999874344e-03, + 1.891597075677743005e-03, + 1.895249340590251207e-03, + 1.898898349962292427e-03, + 1.902544098024404936e-03, + 1.906186579012612630e-03, + 1.909825787168790414e-03, + 1.913461716740152236e-03, + 1.917094361979515419e-03, + 1.920723717145478467e-03, + 1.924349776502355149e-03, + 1.927972534319579703e-03, + 1.931591984872819663e-03, + 1.935208122442969069e-03, + 1.938820941316917812e-03, + 1.942430435786980918e-03, + 1.946036600151133380e-03, + 1.949639428713309617e-03, + 1.953238915782868311e-03, + 1.956835055674891431e-03, + 1.960427842710400857e-03, + 1.964017271215914504e-03, + 1.967603335523662299e-03, + 1.971186029971881085e-03, + 1.974765348904285525e-03, + 1.978341286670383826e-03, + 1.981913837625651643e-03, + 1.985482996131055465e-03, + 1.989048756553642421e-03, + 1.992611113266023765e-03, + 1.996170060646610366e-03, + 1.999725593079869444e-03, + 2.003277704955834949e-03, + 2.006826390670385547e-03, + 2.010371644625470570e-03, + 2.013913461228635567e-03, + 2.017451834893303330e-03, + 2.020986760038982928e-03, + 2.024518231090824752e-03, + 2.028046242479851664e-03, + 2.031570788643227883e-03, + 2.035091864023772391e-03, + 2.038609463070289833e-03, + 2.042123580237428706e-03, + 2.045634209985904700e-03, + 2.049141346782472946e-03, + 2.052644985099338643e-03, + 2.056145119415126767e-03, + 2.059641744214363388e-03, + 2.063134853987373760e-03, + 2.066624443230454921e-03, + 2.070110506446142407e-03, + 2.073593038142713257e-03, + 2.077072032834537726e-03, + 2.080547485041918821e-03, + 2.084019389291408026e-03, + 2.087487740115362943e-03, + 2.090952532052163700e-03, + 2.094413759646402470e-03, + 2.097871417448807143e-03, + 2.101325500015697491e-03, + 2.104776001910007785e-03, + 2.108222917700366527e-03, + 2.111666241961803782e-03, + 2.115105969275209944e-03, + 2.118542094227588140e-03, + 2.121974611412278007e-03, + 2.125403515428523748e-03, + 2.128828800881688802e-03, + 2.132250462383519958e-03, + 2.135668494551667702e-03, + 2.139082892009947726e-03, + 2.142493649388575120e-03, + 2.145900761323705531e-03, + 2.149304222457664153e-03, + 2.152704027439220243e-03, + 2.156100170923093157e-03, + 2.159492647570220372e-03, + 2.162881452047972150e-03, + 2.166266579029662784e-03, + 2.169648023195184204e-03, + 2.173025779230166373e-03, + 2.176399841826932250e-03, + 2.179770205683994287e-03, + 2.183136865505958153e-03, + 2.186499816003727430e-03, + 2.189859051894703541e-03, + 2.193214567902358574e-03, + 2.196566358756448650e-03, + 2.199914419193283680e-03, + 2.203258743955252910e-03, + 2.206599327791136309e-03, + 2.209936165455988772e-03, + 2.213269251711333981e-03, + 2.216598581325145752e-03, + 2.219924149071275145e-03, + 2.223245949730413666e-03, + 2.226563978089601045e-03, + 2.229878228941835783e-03, + 2.233188697087005407e-03, + 2.236495377331030807e-03, + 2.239798264486544521e-03, + 2.243097353372356002e-03, + 2.246392638813703158e-03, + 2.249684115642471786e-03, + 2.252971778696766236e-03, + 2.256255622821146632e-03, + 2.259535642866824894e-03, + 2.262811833691281364e-03, + 2.266084190158439583e-03, + 2.269352707138941674e-03, + 2.272617379509695151e-03, + 2.275878202154086715e-03, + 2.279135169962236401e-03, + 2.282388277830478887e-03, + 2.285637520661966751e-03, + 2.288882893366137473e-03, + 2.292124390858988822e-03, + 2.295362008063266644e-03, + 2.298595739908039851e-03, + 2.301825581328958460e-03, + 2.305051527268429240e-03, + 2.308273572675237102e-03, + 2.311491712504741992e-03, + 2.314705941719096601e-03, + 2.317916255286854316e-03, + 2.321122648183153968e-03, + 2.324325115389986544e-03, + 2.327523651895657426e-03, + 2.330718252695465967e-03, + 2.333908912790842033e-03, + 2.337095627190295330e-03, + 2.340278390908989096e-03, + 2.343457198968316828e-03, + 2.346632046396750996e-03, + 2.349802928229391148e-03, + 2.352969839507868931e-03, + 2.356132775280575780e-03, + 2.359291730602528902e-03, + 2.362446700535671389e-03, + 2.365597680148438103e-03, + 2.368744664515995066e-03, + 2.371887648720444157e-03, + 2.375026627850418057e-03, + 2.378161597001281907e-03, + 2.381292551275311555e-03, + 2.384419485781592504e-03, + 2.387542395635574959e-03, + 2.390661275959962435e-03, + 2.393776121883898177e-03, + 2.396886928543595727e-03, + 2.399993691081846268e-03, + 2.403096404648257141e-03, + 2.406195064399460019e-03, + 2.409289665498686762e-03, + 2.412380203116000574e-03, + 2.415466672428520645e-03, + 2.418549068619981098e-03, + 2.421627386880988598e-03, + 2.424701622409195390e-03, + 2.427771770408921129e-03, + 2.430837826091358875e-03, + 2.433899784674788472e-03, + 2.436957641384095586e-03, + 2.440011391451353279e-03, + 2.443061030115307661e-03, + 2.446106552621629855e-03, + 2.449147954223183151e-03, + 2.452185230179272733e-03, + 2.455218375756539929e-03, + 2.458247386228507719e-03, + 2.461272256875513074e-03, + 2.464292982984822751e-03, + 2.467309559850900443e-03, + 2.470321982774950978e-03, + 2.473330247065174455e-03, + 2.476334348036935383e-03, + 2.479334281012407493e-03, + 2.482330041320814865e-03, + 2.485321624298324379e-03, + 2.488309025288258647e-03, + 2.491292239641009279e-03, + 2.494271262713607974e-03, + 2.497246089870523190e-03, + 2.500216716483173555e-03, + 2.503183137929924831e-03, + 2.506145349596243434e-03, + 2.509103346874603201e-03, + 2.512057125164737781e-03, + 2.515006679873264643e-03, + 2.517952006413887167e-03, + 2.520893100207592837e-03, + 2.523829956682275503e-03, + 2.526762571272927506e-03, + 2.529690939421796233e-03, + 2.532615056578294780e-03, + 2.535534918198588221e-03, + 2.538450519746428876e-03, + 2.541361856692443775e-03, + 2.544268924514416982e-03, + 2.547171718697457000e-03, + 2.550070234733617727e-03, + 2.552964468122333012e-03, + 2.555854414370056261e-03, + 2.558740068990405288e-03, + 2.561621427504379156e-03, + 2.564498485439987378e-03, + 2.567371238332445942e-03, + 2.570239681724362062e-03, + 2.573103811165377251e-03, + 2.575963622212345139e-03, + 2.578819110429558283e-03, + 2.581670271388349612e-03, + 2.584517100667288458e-03, + 2.587359593852399560e-03, + 2.590197746536692953e-03, + 2.593031554320786736e-03, + 2.595861012812106933e-03, + 2.598686117625739669e-03, + 2.601506864384008771e-03, + 2.604323248716385562e-03, + 2.607135266259646717e-03, + 2.609942912658067254e-03, + 2.612746183563046266e-03, + 2.615545074633349350e-03, + 2.618339581535035314e-03, + 2.621129699941643094e-03, + 2.623915425533909426e-03, + 2.626696753999873801e-03, + 2.629473681035083589e-03, + 2.632246202342492999e-03, + 2.635014313632042839e-03, + 2.637778010621432030e-03, + 2.640537289035745083e-03, + 2.643292144607047468e-03, + 2.646042573075274660e-03, + 2.648788570187412053e-03, + 2.651530131698113819e-03, + 2.654267253369271395e-03, + 2.656999930970171779e-03, + 2.659728160277733018e-03, + 2.662451937076100884e-03, + 2.665171257156874821e-03, + 2.667886116319272746e-03, + 2.670596510369781067e-03, + 2.673302435122354177e-03, + 2.676003886398560169e-03, + 2.678700860027308488e-03, + 2.681393351844937097e-03, + 2.684081357695462713e-03, + 2.686764873430160135e-03, + 2.689443894908032789e-03, + 2.692118417995404637e-03, + 2.694788438566111423e-03, + 2.697453952501674152e-03, + 2.700114955690966888e-03, + 2.702771444030392396e-03, + 2.705423413424055176e-03, + 2.708070859783423198e-03, + 2.710713779027515685e-03, + 2.713352167083072242e-03, + 2.715986019884240616e-03, + 2.718615333372754062e-03, + 2.721240103497881042e-03, + 2.723860326216588287e-03, + 2.726475997493472275e-03, + 2.729087113300360679e-03, + 2.731693669617063502e-03, + 2.734295662430953275e-03, + 2.736893087736680993e-03, + 2.739485941536855696e-03, + 2.742074219841649386e-03, + 2.744657918668753655e-03, + 2.747237034043532779e-03, + 2.749811561998937847e-03, + 2.752381498575757861e-03, + 2.754946839822233328e-03, + 2.757507581794271800e-03, + 2.760063720555620045e-03, + 2.762615252177511894e-03, + 2.765162172738867309e-03, + 2.767704478326395590e-03, + 2.770242165034553315e-03, + 2.772775228965142311e-03, + 2.775303666228072941e-03, + 2.777827472940662401e-03, + 2.780346645228171185e-03, + 2.782861179223408872e-03, + 2.785371071066909763e-03, + 2.787876316907096381e-03, + 2.790376912899970255e-03, + 2.792872855209257640e-03, + 2.795364140006611174e-03, + 2.797850763471267273e-03, + 2.800332721790210495e-03, + 2.802810011158369131e-03, + 2.805282627778258719e-03, + 2.807750567860185006e-03, + 2.810213827622396170e-03, + 2.812672403290750623e-03, + 2.815126291098915632e-03, + 2.817575487288515642e-03, + 2.820019988108754105e-03, + 2.822459789816929993e-03, + 2.824894888677752149e-03, + 2.827325280964110808e-03, + 2.829750962956643912e-03, + 2.832171930943713258e-03, + 2.834588181221534605e-03, + 2.836999710094318620e-03, + 2.839406513873967298e-03, + 2.841808588880289071e-03, + 2.844205931440888218e-03, + 2.846598537891426809e-03, + 2.848986404575250871e-03, + 2.851369527843589883e-03, + 2.853747904055664759e-03, + 2.856121529578639715e-03, + 2.858490400787251466e-03, + 2.860854514064456282e-03, + 2.863213865801060489e-03, + 2.865568452395673635e-03, + 2.867918270254884994e-03, + 2.870263315793129995e-03, + 2.872603585432951297e-03, + 2.874939075604654448e-03, + 2.877269782746493931e-03, + 2.879595703304802835e-03, + 2.881916833733717473e-03, + 2.884233170495343040e-03, + 2.886544710059869411e-03, + 2.888851448905323076e-03, + 2.891153383517685097e-03, + 2.893450510391068053e-03, + 2.895742826027415066e-03, + 2.898030326936648117e-03, + 2.900313009636848460e-03, + 2.902590870653866308e-03, + 2.904863906521778800e-03, + 2.907132113782504024e-03, + 2.909395488985971456e-03, + 2.911654028690302803e-03, + 2.913907729461452482e-03, + 2.916156587873432269e-03, + 2.918400600508422749e-03, + 2.920639763956505743e-03, + 2.922874074815787031e-03, + 2.925103529692581542e-03, + 2.927328125201115842e-03, + 2.929547857963706384e-03, + 2.931762724610699651e-03, + 2.933972721780602269e-03, + 2.936177846120035465e-03, + 2.938378094283426289e-03, + 2.940573462933567493e-03, + 2.942763948741281867e-03, + 2.944949548385403151e-03, + 2.947130258552851500e-03, + 2.949306075938818664e-03, + 2.951476997246429285e-03, + 2.953643019186995462e-03, + 2.955804138479881452e-03, + 2.957960351852737847e-03, + 2.960111656041189768e-03, + 2.962258047788989945e-03, + 2.964399523848131046e-03, + 2.966536080978801875e-03, + 2.968667715949045195e-03, + 2.970794425535393506e-03, + 2.972916206522351664e-03, + 2.975033055702572087e-03, + 2.977144969877036466e-03, + 2.979251945854687143e-03, + 2.981353980452866852e-03, + 2.983451070496925383e-03, + 2.985543212820407355e-03, + 2.987630404265197073e-03, + 2.989712641681228824e-03, + 2.991789921926648211e-03, + 2.993862241867914498e-03, + 2.995929598379607622e-03, + 2.997991988344482408e-03, + 3.000049408653662850e-03, + 3.002101856206371502e-03, + 3.004149327910027052e-03, + 3.006191820680464630e-03, + 3.008229331441545067e-03, + 3.010261857125601584e-03, + 3.012289394672894652e-03, + 3.014311941032227389e-03, + 3.016329493160594278e-03, + 3.018342048023167721e-03, + 3.020349602593390415e-03, + 3.022352153853097648e-03, + 3.024349698792267501e-03, + 3.026342234409182610e-03, + 3.028329757710497387e-03, + 3.030312265711055438e-03, + 3.032289755434024441e-03, + 3.034262223910831526e-03, + 3.036229668181325472e-03, + 3.038192085293540349e-03, + 3.040149472303818254e-03, + 3.042101826276882599e-03, + 3.044049144285854592e-03, + 3.045991423411904559e-03, + 3.047928660744812692e-03, + 3.049860853382494168e-03, + 3.051787998431380357e-03, + 3.053710093006091388e-03, + 3.055627134229615266e-03, + 3.057539119233399806e-03, + 3.059446045157126256e-03, + 3.061347909148820316e-03, + 3.063244708365013037e-03, + 3.065136439970478008e-03, + 3.067023101138342377e-03, + 3.068904689050243415e-03, + 3.070781200896067001e-03, + 3.072652633874072090e-03, + 3.074518985191065923e-03, + 3.076380252062031057e-03, + 3.078236431710542568e-03, + 3.080087521368447129e-03, + 3.081933518275979233e-03, + 3.083774419681931632e-03, + 3.085610222843343520e-03, + 3.087440925025713902e-03, + 3.089266523503065784e-03, + 3.091087015557708942e-03, + 3.092902398480392150e-03, + 3.094712669570433283e-03, + 3.096517826135439591e-03, + 3.098317865491461223e-03, + 3.100112784963128271e-03, + 3.101902581883381887e-03, + 3.103687253593665971e-03, + 3.105466797443825252e-03, + 3.107241210792260119e-03, + 3.109010491005858526e-03, + 3.110774635459745766e-03, + 3.112533641537748499e-03, + 3.114287506632147130e-03, + 3.116036228143589503e-03, + 3.117779803481232279e-03, + 3.119518230062824637e-03, + 3.121251505314493174e-03, + 3.122979626670884142e-03, + 3.124702591575117053e-03, + 3.126420397478926055e-03, + 3.128133041842424879e-03, + 3.129840522134242145e-03, + 3.131542835831592486e-03, + 3.133239980420259637e-03, + 3.134931953394291555e-03, + 3.136618752256536882e-03, + 3.138300374518193919e-03, + 3.139976817699120272e-03, + 3.141648079327609942e-03, + 3.143314156940495239e-03, + 3.144975048083251297e-03, + 3.146630750309789212e-03, + 3.148281261182579640e-03, + 3.149926578272736494e-03, + 3.151566699159832636e-03, + 3.153201621432000050e-03, + 3.154831342686036967e-03, + 3.156455860527199262e-03, + 3.158075172569304537e-03, + 3.159689276434873070e-03, + 3.161298169754873238e-03, + 3.162901850168863774e-03, + 3.164500315325085699e-03, + 3.166093562880226836e-03, + 3.167681590499749240e-03, + 3.169264395857444676e-03, + 3.170841976635932480e-03, + 3.172414330526382008e-03, + 3.173981455228514371e-03, + 3.175543348450628883e-03, + 3.177100007909757461e-03, + 3.178651431331438668e-03, + 3.180197616449827007e-03, + 3.181738561007806977e-03, + 3.183274262756770161e-03, + 3.184804719456767880e-03, + 3.186329928876467828e-03, + 3.187849888793209581e-03, + 3.189364596993032354e-03, + 3.190874051270372290e-03, + 3.192378249428558593e-03, + 3.193877189279494769e-03, + 3.195370868643680751e-03, + 3.196859285350292686e-03, + 3.198342437237142177e-03, + 3.199820322150786003e-03, + 3.201292937946344404e-03, + 3.202760282487608200e-03, + 3.204222353647132038e-03, + 3.205679149306029686e-03, + 3.207130667354110218e-03, + 3.208576905689934818e-03, + 3.210017862220656323e-03, + 3.211453534862109861e-03, + 3.212883921538909129e-03, + 3.214309020184265980e-03, + 3.215728828740080196e-03, + 3.217143345157025790e-03, + 3.218552567394375799e-03, + 3.219956493420205249e-03, + 3.221355121211206835e-03, + 3.222748448752770292e-03, + 3.224136474039104687e-03, + 3.225519195073024616e-03, + 3.226896609866049519e-03, + 3.228268716438534216e-03, + 3.229635512819421708e-03, + 3.230996997046422722e-03, + 3.232353167166037832e-03, + 3.233704021233398725e-03, + 3.235049557312380530e-03, + 3.236389773475686384e-03, + 3.237724667804619746e-03, + 3.239054238389377140e-03, + 3.240378483328695998e-03, + 3.241697400730230230e-03, + 3.243010988710380658e-03, + 3.244319245394120237e-03, + 3.245622168915339271e-03, + 3.246919757416679743e-03, + 3.248212009049459854e-03, + 3.249498921973787650e-03, + 3.250780494358513316e-03, + 3.252056724381335862e-03, + 3.253327610228638322e-03, + 3.254593150095561917e-03, + 3.255853342186115339e-03, + 3.257108184712990441e-03, + 3.258357675897672820e-03, + 3.259601813970463072e-03, + 3.260840597170474621e-03, + 3.262074023745452876e-03, + 3.263302091952111766e-03, + 3.264524800055819756e-03, + 3.265742146330852247e-03, + 3.266954129060191652e-03, + 3.268160746535612830e-03, + 3.269361997057778496e-03, + 3.270557878936070518e-03, + 3.271748390488666246e-03, + 3.272933530042649967e-03, + 3.274113295933792165e-03, + 3.275287686506725589e-03, + 3.276456700114945258e-03, + 3.277620335120686162e-03, + 3.278778589894996553e-03, + 3.279931462817832488e-03, + 3.281078952277855301e-03, + 3.282221056672674896e-03, + 3.283357774408622500e-03, + 3.284489103900879465e-03, + 3.285615043573539718e-03, + 3.286735591859372540e-03, + 3.287850747200125705e-03, + 3.288960508046349842e-03, + 3.290064872857391496e-03, + 3.291163840101438229e-03, + 3.292257408255589747e-03, + 3.293345575805729959e-03, + 3.294428341246578591e-03, + 3.295505703081767507e-03, + 3.296577659823727094e-03, + 3.297644209993761278e-03, + 3.298705352121986383e-03, + 3.299761084747451691e-03, + 3.300811406418059646e-03, + 3.301856315690447890e-03, + 3.302895811130267690e-03, + 3.303929891311993550e-03, + 3.304958554818922343e-03, + 3.305981800243247039e-03, + 3.306999626185998589e-03, + 3.308012031257169961e-03, + 3.309019014075536592e-03, + 3.310020573268766548e-03, + 3.311016707473457381e-03, + 3.312007415335035086e-03, + 3.312992695507786193e-03, + 3.313972546654949704e-03, + 3.314946967448656381e-03, + 3.315915956569776956e-03, + 3.316879512708248261e-03, + 3.317837634562780490e-03, + 3.318790320841067537e-03, + 3.319737570259613524e-03, + 3.320679381543820835e-03, + 3.321615753428069050e-03, + 3.322546684655555780e-03, + 3.323472173978390780e-03, + 3.324392220157631941e-03, + 3.325306821963197688e-03, + 3.326215978173883026e-03, + 3.327119687577487044e-03, + 3.328017948970613416e-03, + 3.328910761158806585e-03, + 3.329798122956571273e-03, + 3.330680033187258422e-03, + 3.331556490683144130e-03, + 3.332427494285465641e-03, + 3.333293042844302952e-03, + 3.334153135218751417e-03, + 3.335007770276700572e-03, + 3.335856946895056178e-03, + 3.336700663959640475e-03, + 3.337538920365156619e-03, + 3.338371715015234220e-03, + 3.339199046822473142e-03, + 3.340020914708369346e-03, + 3.340837317603346547e-03, + 3.341648254446740601e-03, + 3.342453724186880606e-03, + 3.343253725780971370e-03, + 3.344048258195157167e-03, + 3.344837320404535179e-03, + 3.345620911393179780e-03, + 3.346399030153971235e-03, + 3.347171675688860679e-03, + 3.347938847008718327e-03, + 3.348700543133265820e-03, + 3.349456763091280924e-03, + 3.350207505920386325e-03, + 3.350952770667236114e-03, + 3.351692556387390019e-03, + 3.352426862145312537e-03, + 3.353155687014508675e-03, + 3.353879030077353517e-03, + 3.354596890425187630e-03, + 3.355309267158346122e-03, + 3.356016159386067572e-03, + 3.356717566226545633e-03, + 3.357413486806974569e-03, + 3.358103920263458622e-03, + 3.358788865741044963e-03, + 3.359468322393799593e-03, + 3.360142289384681572e-03, + 3.360810765885667486e-03, + 3.361473751077648665e-03, + 3.362131244150479321e-03, + 3.362783244303008210e-03, + 3.363429750743007068e-03, + 3.364070762687233068e-03, + 3.364706279361410601e-03, + 3.365336300000226506e-03, + 3.365960823847302750e-03, + 3.366579850155280128e-03, + 3.367193378185722851e-03, + 3.367801407209190974e-03, + 3.368403936505188351e-03, + 3.369000965362198199e-03, + 3.369592493077724297e-03, + 3.370178518958127055e-03, + 3.370759042318839053e-03, + 3.371334062484256620e-03, + 3.371903578787673918e-03, + 3.372467590571420846e-03, + 3.373026097186823148e-03, + 3.373579097994123047e-03, + 3.374126592362563376e-03, + 3.374668579670345950e-03, + 3.375205059304699651e-03, + 3.375736030661774609e-03, + 3.376261493146708557e-03, + 3.376781446173654153e-03, + 3.377295889165706118e-03, + 3.377804821554938539e-03, + 3.378308242782426547e-03, + 3.378806152298237647e-03, + 3.379298549561352352e-03, + 3.379785434039805133e-03, + 3.380266805210572524e-03, + 3.380742662559639913e-03, + 3.381213005581938658e-03, + 3.381677833781415905e-03, + 3.382137146670983422e-03, + 3.382590943772546647e-03, + 3.383039224616986914e-03, + 3.383481988744173590e-03, + 3.383919235702967116e-03, + 3.384350965051180406e-03, + 3.384777176355669055e-03, + 3.385197869192217279e-03, + 3.385613043145627252e-03, + 3.386022697809681382e-03, + 3.386426832787131896e-03, + 3.386825447689736836e-03, + 3.387218542138239249e-03, + 3.387606115762349396e-03, + 3.387988168200794202e-03, + 3.388364699101255231e-03, + 3.388735708120418130e-03, + 3.389101194923963955e-03, + 3.389461159186549655e-03, + 3.389815600591800700e-03, + 3.390164518832383071e-03, + 3.390507913609896139e-03, + 3.390845784634943360e-03, + 3.391178131627126200e-03, + 3.391504954315035895e-03, + 3.391826252436228300e-03, + 3.392142025737258145e-03, + 3.392452273973689016e-03, + 3.392756996910059088e-03, + 3.393056194319851639e-03, + 3.393349865985595230e-03, + 3.393638011698793880e-03, + 3.393920631259915357e-03, + 3.394197724478437150e-03, + 3.394469291172802668e-03, + 3.394735331170469807e-03, + 3.394995844307849807e-03, + 3.395250830430367097e-03, + 3.395500289392419831e-03, + 3.395744221057402003e-03, + 3.395982625297680468e-03, + 3.396215501994610548e-03, + 3.396442851038552948e-03, + 3.396664672328813042e-03, + 3.396880965773726741e-03, + 3.397091731290572021e-03, + 3.397296968805648288e-03, + 3.397496678254215662e-03, + 3.397690859580524900e-03, + 3.397879512737810026e-03, + 3.398062637688287028e-03, + 3.398240234403156462e-03, + 3.398412302862593038e-03, + 3.398578843055767747e-03, + 3.398739854980812290e-03, + 3.398895338644865489e-03, + 3.399045294064021675e-03, + 3.399189721263367985e-03, + 3.399328620276984361e-03, + 3.399461991147887611e-03, + 3.399589833928119871e-03, + 3.399712148678662310e-03, + 3.399828935469511454e-03, + 3.399940194379616303e-03, + 3.400045925496903917e-03, + 3.400146128918271615e-03, + 3.400240804749616891e-03, + 3.400329953105784946e-03, + 3.400413574110612049e-03, + 3.400491667896892584e-03, + 3.400564234606418511e-03, + 3.400631274389914749e-03, + 3.400692787407109865e-03, + 3.400748773826700079e-03, + 3.400799233826341025e-03, + 3.400844167592647748e-03, + 3.400883575321236342e-03, + 3.400917457216654123e-03, + 3.400945813492441648e-03, + 3.400968644371095851e-03, + 3.400985950084074814e-03, + 3.400997730871806006e-03, + 3.401003986983682816e-03, + 3.401004718678058043e-03, + 3.400999926222252143e-03, + 3.400989609892521130e-03, + 3.400973769974116427e-03, + 3.400952406761242365e-03, + 3.400925520557040570e-03, + 3.400893111673619889e-03, + 3.400855180432055952e-03, + 3.400811727162369926e-03, + 3.400762752203542825e-03, + 3.400708255903498161e-03, + 3.400648238619128402e-03, + 3.400582700716274151e-03, + 3.400511642569706370e-03, + 3.400435064563175815e-03, + 3.400352967089352325e-03, + 3.400265350549881195e-03, + 3.400172215355340682e-03, + 3.400073561925239830e-03, + 3.399969390688057508e-03, + 3.399859702081202504e-03, + 3.399744496551029577e-03, + 3.399623774552815170e-03, + 3.399497536550815085e-03, + 3.399365783018185993e-03, + 3.399228514437046145e-03, + 3.399085731298421165e-03, + 3.398937434102306931e-03, + 3.398783623357598017e-03, + 3.398624299582147547e-03, + 3.398459463302736829e-03, + 3.398289115055061482e-03, + 3.398113255383749219e-03, + 3.397931884842360275e-03, + 3.397745003993398252e-03, + 3.397552613408238130e-03, + 3.397354713667247259e-03, + 3.397151305359648321e-03, + 3.396942389083642492e-03, + 3.396727965446297119e-03, + 3.396508035063628556e-03, + 3.396282598560580908e-03, + 3.396051656570966623e-03, + 3.395815209737557995e-03, + 3.395573258712012137e-03, + 3.395325804154892668e-03, + 3.395072846735700499e-03, + 3.394814387132815293e-03, + 3.394550426033525817e-03, + 3.394280964134055532e-03, + 3.394006002139468049e-03, + 3.393725540763793333e-03, + 3.393439580729933156e-03, + 3.393148122769666306e-03, + 3.392851167623701491e-03, + 3.392548716041621400e-03, + 3.392240768781904815e-03, + 3.391927326611936157e-03, + 3.391608390307967319e-03, + 3.391283960655140216e-03, + 3.390954038447505006e-03, + 3.390618624487977146e-03, + 3.390277719588344774e-03, + 3.389931324569306435e-03, + 3.389579440260417735e-03, + 3.389222067500117803e-03, + 3.388859207135723212e-03, + 3.388490860023396761e-03, + 3.388117027028232468e-03, + 3.387737709024139354e-03, + 3.387352906893909086e-03, + 3.386962621529215119e-03, + 3.386566853830590140e-03, + 3.386165604707401782e-03, + 3.385758875077916809e-03, + 3.385346665869241271e-03, + 3.384928978017343049e-03, + 3.384505812467030177e-03, + 3.384077170171979464e-03, + 3.383643052094723481e-03, + 3.383203459206620637e-03, + 3.382758392487886841e-03, + 3.382307852927606343e-03, + 3.381851841523663207e-03, + 3.381390359282818517e-03, + 3.380923407220648349e-03, + 3.380450986361570234e-03, + 3.379973097738846622e-03, + 3.379489742394571009e-03, + 3.379000921379641045e-03, + 3.378506635753833996e-03, + 3.378006886585690517e-03, + 3.377501674952615267e-03, + 3.376991001940850019e-03, + 3.376474868645387793e-03, + 3.375953276170110331e-03, + 3.375426225627689656e-03, + 3.374893718139588064e-03, + 3.374355754836103234e-03, + 3.373812336856346541e-03, + 3.373263465348201422e-03, + 3.372709141468397537e-03, + 3.372149366382415359e-03, + 3.371584141264608037e-03, + 3.371013467298058716e-03, + 3.370437345674655565e-03, + 3.369855777595091341e-03, + 3.369268764268871195e-03, + 3.368676306914240252e-03, + 3.368078406758252558e-03, + 3.367475065036764151e-03, + 3.366866282994367566e-03, + 3.366252061884454725e-03, + 3.365632402969209562e-03, + 3.365007307519567257e-03, + 3.364376776815243726e-03, + 3.363740812144672739e-03, + 3.363099414805158574e-03, + 3.362452586102673054e-03, + 3.361800327351970475e-03, + 3.361142639876599746e-03, + 3.360479525008810281e-03, + 3.359810984089658253e-03, + 3.359137018468898173e-03, + 3.358457629505064851e-03, + 3.357772818565436974e-03, + 3.357082587025999806e-03, + 3.356386936271522382e-03, + 3.355685867695499397e-03, + 3.354979382700124316e-03, + 3.354267482696354861e-03, + 3.353550169103901735e-03, + 3.352827443351118902e-03, + 3.352099306875161010e-03, + 3.351365761121894056e-03, + 3.350626807545831632e-03, + 3.349882447610304063e-03, + 3.349132682787253710e-03, + 3.348377514557401499e-03, + 3.347616944410179707e-03, + 3.346850973843651725e-03, + 3.346079604364641732e-03, + 3.345302837488670945e-03, + 3.344520674739909910e-03, + 3.343733117651265241e-03, + 3.342940167764332348e-03, + 3.342141826629350769e-03, + 3.341338095805273124e-03, + 3.340528976859756440e-03, + 3.339714471369074119e-03, + 3.338894580918227387e-03, + 3.338069307100819533e-03, + 3.337238651519237181e-03, + 3.336402615784436927e-03, + 3.335561201516018190e-03, + 3.334714410342364595e-03, + 3.333862243900391140e-03, + 3.333004703835699880e-03, + 3.332141791802559552e-03, + 3.331273509463881718e-03, + 3.330399858491239849e-03, + 3.329520840564796028e-03, + 3.328636457373378588e-03, + 3.327746710614482538e-03, + 3.326851601994158976e-03, + 3.325951133227149532e-03, + 3.325045306036812642e-03, + 3.324134122155098826e-03, + 3.323217583322548088e-03, + 3.322295691288446474e-03, + 3.321368447810539408e-03, + 3.320435854655281495e-03, + 3.319497913597660877e-03, + 3.318554626421312860e-03, + 3.317605994918486519e-03, + 3.316652020889959262e-03, + 3.315692706145153493e-03, + 3.314728052502088473e-03, + 3.313758061787307890e-03, + 3.312782735835988722e-03, + 3.311802076491902631e-03, + 3.310816085607303210e-03, + 3.309824765043115069e-03, + 3.308828116668815437e-03, + 3.307826142362363473e-03, + 3.306818844010387618e-03, + 3.305806223507990003e-03, + 3.304788282758878721e-03, + 3.303765023675307548e-03, + 3.302736448178002215e-03, + 3.301702558196381154e-03, + 3.300663355668267095e-03, + 3.299618842540049703e-03, + 3.298569020766679068e-03, + 3.297513892311661372e-03, + 3.296453459146929214e-03, + 3.295387723253030698e-03, + 3.294316686619011472e-03, + 3.293240351242376126e-03, + 3.292158719129203558e-03, + 3.291071792294061969e-03, + 3.289979572760048758e-03, + 3.288882062558691650e-03, + 3.287779263730020250e-03, + 3.286671178322688337e-03, + 3.285557808393682871e-03, + 3.284439156008511339e-03, + 3.283315223241213034e-03, + 3.282186012174275348e-03, + 3.281051524898683652e-03, + 3.279911763513810273e-03, + 3.278766730127581457e-03, + 3.277616426856394538e-03, + 3.276460855824999546e-03, + 3.275300019166693492e-03, + 3.274133919023233200e-03, + 3.272962557544755943e-03, + 3.271785936889811969e-03, + 3.270604059225572235e-03, + 3.269416926727425950e-03, + 3.268224541579342265e-03, + 3.267026905973623510e-03, + 3.265824022111043102e-03, + 3.264615892200817791e-03, + 3.263402518460497941e-03, + 3.262183903116116276e-03, + 3.260960048402107223e-03, + 3.259730956561243155e-03, + 3.258496629844761898e-03, + 3.257257070512313817e-03, + 3.256012280831833885e-03, + 3.254762263079752881e-03, + 3.253507019540852543e-03, + 3.252246552508242152e-03, + 3.250980864283464777e-03, + 3.249709957176449143e-03, + 3.248433833505396436e-03, + 3.247152495596976763e-03, + 3.245865945786099299e-03, + 3.244574186416194182e-03, + 3.243277219838894190e-03, + 3.241975048414194333e-03, + 3.240667674510489156e-03, + 3.239355100504519823e-03, + 3.238037328781251823e-03, + 3.236714361734081401e-03, + 3.235386201764696348e-03, + 3.234052851283127604e-03, + 3.232714312707647784e-03, + 3.231370588464894337e-03, + 3.230021680989866948e-03, + 3.228667592725747559e-03, + 3.227308326124023099e-03, + 3.225943883644650286e-03, + 3.224574267755673119e-03, + 3.223199480933441885e-03, + 3.221819525662764517e-03, + 3.220434404436505436e-03, + 3.219044119755946377e-03, + 3.217648674130532249e-03, + 3.216248070078043739e-03, + 3.214842310124530530e-03, + 3.213431396804196805e-03, + 3.212015332659592503e-03, + 3.210594120241502293e-03, + 3.209167762108873587e-03, + 3.207736260828973965e-03, + 3.206299618977286221e-03, + 3.204857839137449822e-03, + 3.203410923901397079e-03, + 3.201958875869299805e-03, + 3.200501697649437479e-03, + 3.199039391858404541e-03, + 3.197571961120897460e-03, + 3.196099408069892536e-03, + 3.194621735346576518e-03, + 3.193138945600199584e-03, + 3.191651041488306056e-03, + 3.190158025676630756e-03, + 3.188659900838971498e-03, + 3.187156669657397259e-03, + 3.185648334822151900e-03, + 3.184134899031517991e-03, + 3.182616364992055333e-03, + 3.181092735418425323e-03, + 3.179564013033473781e-03, + 3.178030200568132940e-03, + 3.176491300761411906e-03, + 3.174947316360679419e-03, + 3.173398250121210219e-03, + 3.171844104806414034e-03, + 3.170284883188004277e-03, + 3.168720588045608171e-03, + 3.167151222167009610e-03, + 3.165576788348140914e-03, + 3.163997289393012148e-03, + 3.162412728113740169e-03, + 3.160823107330457127e-03, + 3.159228429871458344e-03, + 3.157628698573109512e-03, + 3.156023916279766459e-03, + 3.154414085843946017e-03, + 3.152799210126215005e-03, + 3.151179291995159868e-03, + 3.149554334327347646e-03, + 3.147924340007619143e-03, + 3.146289311928617948e-03, + 3.144649252991189858e-03, + 3.143004166104069325e-03, + 3.141354054184132289e-03, + 3.139698920156261744e-03, + 3.138038766953286582e-03, + 3.136373597516096956e-03, + 3.134703414793643412e-03, + 3.133028221742731757e-03, + 3.131348021328297145e-03, + 3.129662816523238848e-03, + 3.127972610308357802e-03, + 3.126277405672531380e-03, + 3.124577205612609314e-03, + 3.122872013133312641e-03, + 3.121161831247460956e-03, + 3.119446662975685746e-03, + 3.117726511346703179e-03, + 3.116001379397147133e-03, + 3.114271270171465548e-03, + 3.112536186722296861e-03, + 3.110796132109997295e-03, + 3.109051109402873308e-03, + 3.107301121677243181e-03, + 3.105546172017322522e-03, + 3.103786263515152279e-03, + 3.102021399270764399e-03, + 3.100251582392056070e-03, + 3.098476815994881655e-03, + 3.096697103202843224e-03, + 3.094912447147549900e-03, + 3.093122850968499458e-03, + 3.091328317812975547e-03, + 3.089528850836079782e-03, + 3.087724453201024042e-03, + 3.085915128078642582e-03, + 3.084100878647650073e-03, + 3.082281708094694508e-03, + 3.080457619614209754e-03, + 3.078628616408520067e-03, + 3.076794701687646672e-03, + 3.074955878669557129e-03, + 3.073112150580033924e-03, + 3.071263520652565190e-03, + 3.069409992128537251e-03, + 3.067551568257162204e-03, + 3.065688252295319192e-03, + 3.063820047507782082e-03, + 3.061946957167128395e-03, + 3.060068984553588819e-03, + 3.058186132955271856e-03, + 3.056298405668071878e-03, + 3.054405805995497394e-03, + 3.052508337249004548e-03, + 3.050606002747602036e-03, + 3.048698805818203690e-03, + 3.046786749795425079e-03, + 3.044869838021511520e-03, + 3.042948073846539307e-03, + 3.041021460628322900e-03, + 3.039090001732260536e-03, + 3.037153700531575792e-03, + 3.035212560407201787e-03, + 3.033266584747642842e-03, + 3.031315776949216906e-03, + 3.029360140415889024e-03, + 3.027399678559333351e-03, + 3.025434394798826466e-03, + 3.023464292561272963e-03, + 3.021489375281469995e-03, + 3.019509646401630654e-03, + 3.017525109371660668e-03, + 3.015535767649194388e-03, + 3.013541624699496782e-03, + 3.011542683995343302e-03, + 3.009538949017254508e-03, + 3.007530423253326930e-03, + 3.005517110199324576e-03, + 3.003499013358484210e-03, + 3.001476136241759077e-03, + 2.999448482367730439e-03, + 2.997416055262444069e-03, + 2.995378858459500464e-03, + 2.993336895500346706e-03, + 2.991290169933683192e-03, + 2.989238685315954991e-03, + 2.987182445211163627e-03, + 2.985121453190731338e-03, + 2.983055712833798580e-03, + 2.980985227726872747e-03, + 2.978910001464130878e-03, + 2.976830037647271339e-03, + 2.974745339885385021e-03, + 2.972655911795201670e-03, + 2.970561757000973659e-03, + 2.968462879134305121e-03, + 2.966359281834449017e-03, + 2.964250968748138437e-03, + 2.962137943529445216e-03, + 2.960020209840079613e-03, + 2.957897771349195151e-03, + 2.955770631733285834e-03, + 2.953638794676495798e-03, + 2.951502263870165680e-03, + 2.949361043013436733e-03, + 2.947215135812591633e-03, + 2.945064545981391883e-03, + 2.942909277241119014e-03, + 2.940749333320484375e-03, + 2.938584717955473012e-03, + 2.936415434889593033e-03, + 2.934241487873787569e-03, + 2.932062880666224877e-03, + 2.929879617032624464e-03, + 2.927691700746017697e-03, + 2.925499135586882241e-03, + 2.923301925342947777e-03, + 2.921100073809266683e-03, + 2.918893584788541905e-03, + 2.916682462090514592e-03, + 2.914466709532295870e-03, + 2.912246330938604924e-03, + 2.910021330141197415e-03, + 2.907791710979206346e-03, + 2.905557477299186304e-03, + 2.903318632954939114e-03, + 2.901075181807614891e-03, + 2.898827127725524689e-03, + 2.896574474584410249e-03, + 2.894317226267304789e-03, + 2.892055386664359531e-03, + 2.889788959673141207e-03, + 2.887517949198486339e-03, + 2.885242359152336879e-03, + 2.882962193454029903e-03, + 2.880677456030147562e-03, + 2.878388150814367892e-03, + 2.876094281747783137e-03, + 2.873795852778502063e-03, + 2.871492867862026396e-03, + 2.869185330961039181e-03, + 2.866873246045291597e-03, + 2.864556617091872266e-03, + 2.862235448085065879e-03, + 2.859909743016176686e-03, + 2.857579505883840309e-03, + 2.855244740693869358e-03, + 2.852905451459076050e-03, + 2.850561642199571019e-03, + 2.848213316942632776e-03, + 2.845860479722506480e-03, + 2.843503134580741779e-03, + 2.841141285565948211e-03, + 2.838774936733914900e-03, + 2.836404092147447927e-03, + 2.834028755876395050e-03, + 2.831648931998003924e-03, + 2.829264624596334460e-03, + 2.826875837762557204e-03, + 2.824482575595024022e-03, + 2.822084842199178330e-03, + 2.819682641687362105e-03, + 2.817275978179111656e-03, + 2.814864855800992827e-03, + 2.812449278686634819e-03, + 2.810029250976574071e-03, + 2.807604776818515765e-03, + 2.805175860367187680e-03, + 2.802742505784234801e-03, + 2.800304717238246647e-03, + 2.797862498905133704e-03, + 2.795415854967431366e-03, + 2.792964789614934846e-03, + 2.790509307044179623e-03, + 2.788049411458858647e-03, + 2.785585107069624144e-03, + 2.783116398093905906e-03, + 2.780643288756277746e-03, + 2.778165783288215514e-03, + 2.775683885928013385e-03, + 2.773197600921019357e-03, + 2.770706932519530728e-03, + 2.768211884982571189e-03, + 2.765712462576251640e-03, + 2.763208669573570270e-03, + 2.760700510254269872e-03, + 2.758187988905124507e-03, + 2.755671109819807230e-03, + 2.753149877298663277e-03, + 2.750624295649157624e-03, + 2.748094369185313801e-03, + 2.745560102228393907e-03, + 2.743021499106165686e-03, + 2.740478564153302383e-03, + 2.737931301711394455e-03, + 2.735379716128861095e-03, + 2.732823811760763319e-03, + 2.730263592969136167e-03, + 2.727699064122804384e-03, + 2.725130229597228903e-03, + 2.722557093774803476e-03, + 2.719979661044646512e-03, + 2.717397935802704292e-03, + 2.714811922451564052e-03, + 2.712221625400514698e-03, + 2.709627049065911099e-03, + 2.707028197870534839e-03, + 2.704425076243928156e-03, + 2.701817688622478938e-03, + 2.699206039449234245e-03, + 2.696590133173996148e-03, + 2.693969974253106192e-03, + 2.691345567149759817e-03, + 2.688716916333837650e-03, + 2.686084026281735076e-03, + 2.683446901476676649e-03, + 2.680805546408552599e-03, + 2.678159965573790463e-03, + 2.675510163475409726e-03, + 2.672856144623404328e-03, + 2.670197913534012348e-03, + 2.667535474730307974e-03, + 2.664868832742000714e-03, + 2.662197992105207276e-03, + 2.659522957362904332e-03, + 2.656843733064404630e-03, + 2.654160323765795016e-03, + 2.651472734029740406e-03, + 2.648780968425284727e-03, + 2.646085031528226921e-03, + 2.643384927920908872e-03, + 2.640680662192043237e-03, + 2.637972238937058653e-03, + 2.635259662757919331e-03, + 2.632542938262921219e-03, + 2.629822070067070611e-03, + 2.627097062791866004e-03, + 2.624367921065128961e-03, + 2.621634649521418278e-03, + 2.618897252801473136e-03, + 2.616155735552923040e-03, + 2.613410102429511959e-03, + 2.610660358091502955e-03, + 2.607906507205724582e-03, + 2.605148554445462037e-03, + 2.602386504490240317e-03, + 2.599620362026200653e-03, + 2.596850131745853316e-03, + 2.594075818348175189e-03, + 2.591297426538353467e-03, + 2.588514961028164692e-03, + 2.585728426535785669e-03, + 2.582937827785564914e-03, + 2.580143169508430315e-03, + 2.577344456441662320e-03, + 2.574541693328775104e-03, + 2.571734884919566876e-03, + 2.568924035970562673e-03, + 2.566109151244169544e-03, + 2.563290235509439394e-03, + 2.560467293541486989e-03, + 2.557640330121920599e-03, + 2.554809350038652910e-03, + 2.551974358085702839e-03, + 2.549135359063551577e-03, + 2.546292357778971727e-03, + 2.543445359044800048e-03, + 2.540594367680323873e-03, + 2.537739388511092448e-03, + 2.534880426368702269e-03, + 2.532017486091182618e-03, + 2.529150572522771354e-03, + 2.526279690513744472e-03, + 2.523404844920853693e-03, + 2.520526040606785225e-03, + 2.517643282440619901e-03, + 2.514756575297608533e-03, + 2.511865924058947260e-03, + 2.508971333612437186e-03, + 2.506072808851650402e-03, + 2.503170354676390562e-03, + 2.500263975992728007e-03, + 2.497353677712861424e-03, + 2.494439464754939599e-03, + 2.491521342043417908e-03, + 2.488599314508860554e-03, + 2.485673387087742377e-03, + 2.482743564722836565e-03, + 2.479809852362926254e-03, + 2.476872254962943741e-03, + 2.473930777483761018e-03, + 2.470985424892246582e-03, + 2.468036202161714727e-03, + 2.465083114271130176e-03, + 2.462126166205562579e-03, + 2.459165362956235081e-03, + 2.456200709520339580e-03, + 2.453232210901123891e-03, + 2.450259872107662332e-03, + 2.447283698155206140e-03, + 2.444303694065003054e-03, + 2.441319864864070505e-03, + 2.438332215585604142e-03, + 2.435340751268753184e-03, + 2.432345476958488149e-03, + 2.429346397705660267e-03, + 2.426343518567448607e-03, + 2.423336844606502252e-03, + 2.420326380891710955e-03, + 2.417312132497620534e-03, + 2.414294104504860483e-03, + 2.411272301999967463e-03, + 2.408246730075161088e-03, + 2.405217393828739010e-03, + 2.402184298364846201e-03, + 2.399147448793308851e-03, + 2.396106850229994759e-03, + 2.393062507796614273e-03, + 2.390014426620506918e-03, + 2.386962611835029974e-03, + 2.383907068579383705e-03, + 2.380847801998338571e-03, + 2.377784817242689294e-03, + 2.374718119469015898e-03, + 2.371647713839462098e-03, + 2.368573605522240107e-03, + 2.365495799690960164e-03, + 2.362414301525474908e-03, + 2.359329116210986000e-03, + 2.356240248938477368e-03, + 2.353147704904819722e-03, + 2.350051489312588848e-03, + 2.346951607369871309e-03, + 2.343848064290664310e-03, + 2.340740865294589027e-03, + 2.337630015607021581e-03, + 2.334515520458802472e-03, + 2.331397385086652480e-03, + 2.328275614732944112e-03, + 2.325150214645572803e-03, + 2.322021190077995078e-03, + 2.318888546289723379e-03, + 2.315752288545466515e-03, + 2.312612422115563338e-03, + 2.309468952276363517e-03, + 2.306321884309333291e-03, + 2.303171223501867745e-03, + 2.300016975146672825e-03, + 2.296859144542216791e-03, + 2.293697736992561520e-03, + 2.290532757807071506e-03, + 2.287364212300897846e-03, + 2.284192105794705455e-03, + 2.281016443614487452e-03, + 2.277837231091958074e-03, + 2.274654473564344508e-03, + 2.271468176374149672e-03, + 2.268278344869600633e-03, + 2.265084984404379300e-03, + 2.261888100337457186e-03, + 2.258687698033518248e-03, + 2.255483782862441073e-03, + 2.252276360199760314e-03, + 2.249065435426441176e-03, + 2.245851013928660839e-03, + 2.242633101098236940e-03, + 2.239411702332384270e-03, + 2.236186823033518324e-03, + 2.232958468609645176e-03, + 2.229726644474169361e-03, + 2.226491356045641034e-03, + 2.223252608748190525e-03, + 2.220010408011239937e-03, + 2.216764759269613735e-03, + 2.213515667963351832e-03, + 2.210263139537726063e-03, + 2.207007179443777525e-03, + 2.203747793137407571e-03, + 2.200484986079838390e-03, + 2.197218763737993769e-03, + 2.193949131583663829e-03, + 2.190676095093978173e-03, + 2.187399659751463991e-03, + 2.184119831043855684e-03, + 2.180836614464180725e-03, + 2.177550015510500321e-03, + 2.174260039686314473e-03, + 2.170966692500336890e-03, + 2.167669979466282492e-03, + 2.164369906103277234e-03, + 2.161066477935635628e-03, + 2.157759700492712859e-03, + 2.154449579308963768e-03, + 2.151136119924429869e-03, + 2.147819327883816916e-03, + 2.144499208737319761e-03, + 2.141175768039986580e-03, + 2.137849011352206761e-03, + 2.134518944239491463e-03, + 2.131185572272226419e-03, + 2.127848901026132503e-03, + 2.124508936082001188e-03, + 2.121165683025496781e-03, + 2.117819147447564960e-03, + 2.114469334944212887e-03, + 2.111116251116282837e-03, + 2.107759901569871992e-03, + 2.104400291916120377e-03, + 2.101037427770955854e-03, + 2.097671314755629717e-03, + 2.094301958496091326e-03, + 2.090929364623509389e-03, + 2.087553538774039076e-03, + 2.084174486588522349e-03, + 2.080792213713270316e-03, + 2.077406725799118680e-03, + 2.074018028501919530e-03, + 2.070626127482623306e-03, + 2.067231028407087983e-03, + 2.063832736945881742e-03, + 2.060431258774710582e-03, + 2.057026599574097829e-03, + 2.053618765029535925e-03, + 2.050207760831170272e-03, + 2.046793592674248097e-03, + 2.043376266258878186e-03, + 2.039955787289871297e-03, + 2.036532161476805637e-03, + 2.033105394534547288e-03, + 2.029675492182334701e-03, + 2.026242460144298246e-03, + 2.022806304149515292e-03, + 2.019367029931802473e-03, + 2.015924643229816300e-03, + 2.012479149786776476e-03, + 2.009030555350899572e-03, + 2.005578865675148800e-03, + 2.002124086517018033e-03, + 1.998666223638961587e-03, + 1.995205282808168272e-03, + 1.991741269796313760e-03, + 1.988274190380002939e-03, + 1.984804050340566953e-03, + 1.981330855463770031e-03, + 1.977854611540303016e-03, + 1.974375324365527495e-03, + 1.970892999739223394e-03, + 1.967407643466147996e-03, + 1.963919261355380648e-03, + 1.960427859220873099e-03, + 1.956933442881192333e-03, + 1.953436018159288544e-03, + 1.949935590882949203e-03, + 1.946432166884560968e-03, + 1.942925752000852291e-03, + 1.939416352073363966e-03, + 1.935903972948199974e-03, + 1.932388620475791133e-03, + 1.928870300511340919e-03, + 1.925349018914517115e-03, + 1.921824781549581274e-03, + 1.918297594285165797e-03, + 1.914767462994321646e-03, + 1.911234393555072365e-03, + 1.907698391849461722e-03, + 1.904159463764080627e-03, + 1.900617615190145632e-03, + 1.897072852023333261e-03, + 1.893525180163536719e-03, + 1.889974605515311714e-03, + 1.886421133987568541e-03, + 1.882864771493724526e-03, + 1.879305523951352959e-03, + 1.875743397282675536e-03, + 1.872178397414288493e-03, + 1.868610530277025781e-03, + 1.865039801806000911e-03, + 1.861466217941157948e-03, + 1.857889784626246075e-03, + 1.854310507809659846e-03, + 1.850728393444146889e-03, + 1.847143447486504324e-03, + 1.843555675898178765e-03, + 1.839965084644593681e-03, + 1.836371679695693012e-03, + 1.832775467025712403e-03, + 1.829176452612919865e-03, + 1.825574642440070273e-03, + 1.821970042494176593e-03, + 1.818362658766256405e-03, + 1.814752497251784008e-03, + 1.811139563950478135e-03, + 1.807523864866002064e-03, + 1.803905406006475580e-03, + 1.800284193384208906e-03, + 1.796660233015443149e-03, + 1.793033530920917773e-03, + 1.789404093125135722e-03, + 1.785771925657300609e-03, + 1.782137034550285420e-03, + 1.778499425841172446e-03, + 1.774859105571320725e-03, + 1.771216079786209043e-03, + 1.767570354535161420e-03, + 1.763921935871848659e-03, + 1.760270829854018379e-03, + 1.756617042543239578e-03, + 1.752960580005394429e-03, + 1.749301448310323307e-03, + 1.745639653531996099e-03, + 1.741975201748256546e-03, + 1.738308099040872983e-03, + 1.734638351496120339e-03, + 1.730965965203784193e-03, + 1.727290946257641286e-03, + 1.723613300755938525e-03, + 1.719933034800397685e-03, + 1.716250154496788086e-03, + 1.712564665954987306e-03, + 1.708876575288735067e-03, + 1.705185888615778304e-03, + 1.701492612057543732e-03, + 1.697796751739602105e-03, + 1.694098313791436196e-03, + 1.690397304346165624e-03, + 1.686693729541032145e-03, + 1.682987595517146601e-03, + 1.679278908419242584e-03, + 1.675567674396128337e-03, + 1.671853899600473379e-03, + 1.668137590188507966e-03, + 1.664418752320623090e-03, + 1.660697392160682658e-03, + 1.656973515876587278e-03, + 1.653247129640045060e-03, + 1.649518239626274327e-03, + 1.645786852014513840e-03, + 1.642052972987758253e-03, + 1.638316608732509833e-03, + 1.634577765439237072e-03, + 1.630836449302150480e-03, + 1.627092666518915919e-03, + 1.623346423291164393e-03, + 1.619597725824206474e-03, + 1.615846580326807868e-03, + 1.612092993011641964e-03, + 1.608336970094971724e-03, + 1.604578517796792590e-03, + 1.600817642340581805e-03, + 1.597054349953359138e-03, + 1.593288646866280588e-03, + 1.589520539313601672e-03, + 1.585750033533261374e-03, + 1.581977135766976907e-03, + 1.578201852260029256e-03, + 1.574424189261026822e-03, + 1.570644153022390278e-03, + 1.566861749800006710e-03, + 1.563076985853387472e-03, + 1.559289867445317994e-03, + 1.555500400842368437e-03, + 1.551708592314600746e-03, + 1.547914448135421410e-03, + 1.544117974581641966e-03, + 1.540319177934043214e-03, + 1.536518064476296219e-03, + 1.532714640495953708e-03, + 1.528908912283666625e-03, + 1.525100886133786944e-03, + 1.521290568344086649e-03, + 1.517477965215501424e-03, + 1.513663083052626786e-03, + 1.509845928163458745e-03, + 1.506026506859113210e-03, + 1.502204825454339469e-03, + 1.498380890267259763e-03, + 1.494554707619081971e-03, + 1.490726283834616778e-03, + 1.486895625242010089e-03, + 1.483062738172474804e-03, + 1.479227628960787157e-03, + 1.475390303945027385e-03, + 1.471550769466308667e-03, + 1.467709031869370842e-03, + 1.463865097501791971e-03, + 1.460018972715006191e-03, + 1.456170663863193921e-03, + 1.452320177303847385e-03, + 1.448467519397860816e-03, + 1.444612696509353297e-03, + 1.440755715005385355e-03, + 1.436896581256478936e-03, + 1.433035301636335522e-03, + 1.429171882521575263e-03, + 1.425306330292244609e-03, + 1.421438651331458514e-03, + 1.417568852025556788e-03, + 1.413696938763846916e-03, + 1.409822917938666296e-03, + 1.405946795945993725e-03, + 1.402068579184374093e-03, + 1.398188274055547431e-03, + 1.394305886964497922e-03, + 1.390421424319195206e-03, + 1.386534892530755280e-03, + 1.382646298013085525e-03, + 1.378755647183385830e-03, + 1.374862946461894234e-03, + 1.370968202271595927e-03, + 1.367071421038746704e-03, + 1.363172609192599312e-03, + 1.359271773165216315e-03, + 1.355368919391554449e-03, + 1.351464054310049651e-03, + 1.347557184361484724e-03, + 1.343648315989931941e-03, + 1.339737455642401980e-03, + 1.335824609768559426e-03, + 1.331909784821333834e-03, + 1.327992987256205451e-03, + 1.324074223531803481e-03, + 1.320153500109640674e-03, + 1.316230823453831862e-03, + 1.312306200031617201e-03, + 1.308379636313078322e-03, + 1.304451138770882030e-03, + 1.300520713880772960e-03, + 1.296588368121312073e-03, + 1.292654107973605603e-03, + 1.288717939921825689e-03, + 1.284779870452908970e-03, + 1.280839906056316325e-03, + 1.276898053224617257e-03, + 1.272954318452695823e-03, + 1.269008708238788001e-03, + 1.265061229083331565e-03, + 1.261111887489580613e-03, + 1.257160689963664982e-03, + 1.253207643014417425e-03, + 1.249252753153089332e-03, + 1.245296026893877653e-03, + 1.241337470753555404e-03, + 1.237377091251638415e-03, + 1.233414894910020605e-03, + 1.229450888253498953e-03, + 1.225485077809489653e-03, + 1.221517470107759016e-03, + 1.217548071680935214e-03, + 1.213576889064246550e-03, + 1.209603928795311562e-03, + 1.205629197414242451e-03, + 1.201652701464231638e-03, + 1.197674447490406626e-03, + 1.193694442040865635e-03, + 1.189712691665887213e-03, + 1.185729202918533055e-03, + 1.181743982354357438e-03, + 1.177757036531155901e-03, + 1.173768372009466581e-03, + 1.169777995352296995e-03, + 1.165785913124859491e-03, + 1.161792131895077141e-03, + 1.157796658233312039e-03, + 1.153799498712094031e-03, + 1.149800659906634629e-03, + 1.145800148394550974e-03, + 1.141797970755596518e-03, + 1.137794133572261673e-03, + 1.133788643429057804e-03, + 1.129781506913128718e-03, + 1.125772730613968558e-03, + 1.121762321123061842e-03, + 1.117750285034846891e-03, + 1.113736628945548356e-03, + 1.109721359453788711e-03, + 1.105704483160673901e-03, + 1.101686006669594722e-03, + 1.097665936585949260e-03, + 1.093644279517672199e-03, + 1.089621042074962257e-03, + 1.085596230869982073e-03, + 1.081569852517407036e-03, + 1.077541913634041471e-03, + 1.073512420838993201e-03, + 1.069481380753396424e-03, + 1.065448800000481314e-03, + 1.061414685206196144e-03, + 1.057379042998125244e-03, + 1.053341880006098113e-03, + 1.049303202862268561e-03, + 1.045263018200844095e-03, + 1.041221332658242909e-03, + 1.037178152872723740e-03, + 1.033133485484931868e-03, + 1.029087337137594461e-03, + 1.025039714475258629e-03, + 1.020990624144801863e-03, + 1.016940072795175084e-03, + 1.012888067077191874e-03, + 1.008834613643611305e-03, + 1.004779719149769815e-03, + 1.000723390252381646e-03, + 9.966656336106200116e-04, + 9.926064558852946192e-04, + 9.885458637394635949e-04, + 9.844838638381704556e-04, + 9.804204628481344615e-04, + 9.763556674383086541e-04, + 9.722894842795798583e-04, + 9.682219200444999079e-04, + 9.641529814078021602e-04, + 9.600826750461313123e-04, + 9.560110076377612920e-04, + 9.519379858631156748e-04, + 9.478636164044980427e-04, + 9.437879059457987075e-04, + 9.397108611730422330e-04, + 9.356324887740830997e-04, + 9.315527954383422430e-04, + 9.274717878574223386e-04, + 9.233894727242823990e-04, + 9.193058567343082065e-04, + 9.152209465841344357e-04, + 9.111347489722611314e-04, + 9.070472705991354566e-04, + 9.029585181669549107e-04, + 8.988684983793922669e-04, + 8.947772179421250964e-04, + 8.906846835624579245e-04, + 8.865909019494961360e-04, + 8.824958798137751788e-04, + 8.783996238677921472e-04, + 8.743021408257141327e-04, + 8.702034374032005222e-04, + 8.661035203174711952e-04, + 8.620023962879395886e-04, + 8.579000720350968365e-04, + 8.537965542811614241e-04, + 8.496918497501348066e-04, + 8.455859651675306848e-04, + 8.414789072605455495e-04, + 8.373706827576762836e-04, + 8.332612983892642147e-04, + 8.291507608872047659e-04, + 8.250390769846666474e-04, + 8.209262534166244163e-04, + 8.168122969195775601e-04, + 8.126972142312645928e-04, + 8.085810120911950723e-04, + 8.044636972403720453e-04, + 8.003452764210047332e-04, + 7.962257563770427189e-04, + 7.921051438538917770e-04, + 7.879834455981290543e-04, + 7.838606683581381953e-04, + 7.797368188833532195e-04, + 7.756119039248997185e-04, + 7.714859302353048323e-04, + 7.673589045682123206e-04, + 7.632308336789175082e-04, + 7.591017243240884282e-04, + 7.549715832614735216e-04, + 7.508404172504439542e-04, + 7.467082330517050030e-04, + 7.425750374270155725e-04, + 7.384408371397163098e-04, + 7.343056389543658547e-04, + 7.301694496368997837e-04, + 7.260322759543561986e-04, + 7.218941246749471753e-04, + 7.177550025686923714e-04, + 7.136149164063143330e-04, + 7.094738729597632482e-04, + 7.053318790027747693e-04, + 7.011889413097361539e-04, + 6.970450666563388466e-04, + 6.929002618196483014e-04, + 6.887545335778155840e-04, + 6.846078887102563732e-04, + 6.804603339972652024e-04, + 6.763118762205656918e-04, + 6.721625221630126096e-04, + 6.680122786083159429e-04, + 6.638611523415710721e-04, + 6.597091501489793725e-04, + 6.555562788176496963e-04, + 6.514025451356764357e-04, + 6.472479558927858156e-04, + 6.430925178791062997e-04, + 6.389362378862847771e-04, + 6.347791227066321021e-04, + 6.306211791337604971e-04, + 6.264624139622988405e-04, + 6.223028339876025350e-04, + 6.181424460062954996e-04, + 6.139812568159823142e-04, + 6.098192732149641587e-04, + 6.056565020027733243e-04, + 6.014929499798948994e-04, + 5.973286239474727335e-04, + 5.931635307078513214e-04, + 5.889976770642910923e-04, + 5.848310698206817459e-04, + 5.806637157821716326e-04, + 5.764956217544222553e-04, + 5.723267945442427453e-04, + 5.681572409593024396e-04, + 5.639869678077470737e-04, + 5.598159818992093665e-04, + 5.556442900435907021e-04, + 5.514718990516998334e-04, + 5.472988157353381004e-04, + 5.431250469070942992e-04, + 5.389505993800634397e-04, + 5.347754799683912324e-04, + 5.305996954868861604e-04, + 5.264232527512008666e-04, + 5.222461585774426001e-04, + 5.180684197827283271e-04, + 5.138900431848853834e-04, + 5.097110356022622807e-04, + 5.055314038538080701e-04, + 5.013511547597050829e-04, + 4.971702951402552379e-04, + 4.929888318165090953e-04, + 4.888067716103517259e-04, + 4.846241213442136083e-04, + 4.804408878412443182e-04, + 4.762570779249275283e-04, + 4.720726984196298853e-04, + 4.678877561503130464e-04, + 4.637022579422400226e-04, + 4.595162106215215083e-04, + 4.553296210148284054e-04, + 4.511424959491028286e-04, + 4.469548422521018877e-04, + 4.427666667521064164e-04, + 4.385779762776360977e-04, + 4.343887776580845905e-04, + 4.301990777229676346e-04, + 4.260088833025594234e-04, + 4.218182012276062119e-04, + 4.176270383290335282e-04, + 4.134354014384939119e-04, + 4.092432973880790045e-04, + 4.050507330100239960e-04, + 4.008577151372606762e-04, + 3.966642506031224777e-04, + 3.924703462410572162e-04, + 3.882760088851739083e-04, + 3.840812453699502535e-04, + 3.798860625299445618e-04, + 3.756904672003433298e-04, + 3.714944662165756443e-04, + 3.672980664144897449e-04, + 3.631012746300623490e-04, + 3.589040976994804007e-04, + 3.547065424597837320e-04, + 3.505086157477325590e-04, + 3.463103244004498717e-04, + 3.421116752555069781e-04, + 3.379126751507214080e-04, + 3.337133309238662394e-04, + 3.295136494132230951e-04, + 3.253136374571928601e-04, + 3.211133018944732740e-04, + 3.169126495636762075e-04, + 3.127116873038714986e-04, + 3.085104219543034873e-04, + 3.043088603541848009e-04, + 3.001070093427824935e-04, + 2.959048757600658570e-04, + 2.917024664454687501e-04, + 2.874997882389187772e-04, + 2.832968479804444275e-04, + 2.790936525098865152e-04, + 2.748902086675416526e-04, + 2.706865232934005448e-04, + 2.664826032277952577e-04, + 2.622784553111047489e-04, + 2.580740863834640308e-04, + 2.538695032853153241e-04, + 2.496647128571142398e-04, + 2.454597219390392666e-04, + 2.412545373715416512e-04, + 2.370491659950536400e-04, + 2.328436146496974245e-04, + 2.286378901758349676e-04, + 2.244319994137744284e-04, + 2.202259492034820633e-04, + 2.160197463852221212e-04, + 2.118133977987062336e-04, + 2.076069102842045583e-04, + 2.034002906813180296e-04, + 1.991935458296213441e-04, + 1.949866825687476368e-04, + 1.907797077381876327e-04, + 1.865726281770006530e-04, + 1.823654507243624618e-04, + 1.781581822192744298e-04, + 1.739508295002716390e-04, + 1.697433994059738477e-04, + 1.655358987746991352e-04, + 1.613283344446405721e-04, + 1.571207132535738652e-04, + 1.529130420389397031e-04, + 1.487053276384897506e-04, + 1.444975768891495376e-04, + 1.402897966275698841e-04, + 1.360819936906793287e-04, + 1.318741749145479385e-04, + 1.276663471350307022e-04, + 1.234585171878523416e-04, + 1.192506919083137772e-04, + 1.150428781314684335e-04, + 1.108350826917374281e-04, + 1.066273124234595065e-04, + 1.024195741605991476e-04, + 9.821187473645500798e-05, + 9.400422098421033117e-05, + 8.979661973664124263e-05, + 8.558907782582344614e-05, + 8.138160208368518046e-05, + 7.717419934171410522e-05, + 7.296687643066449860e-05, + 6.875964018120310300e-05, + 6.455249742314764921e-05, + 6.034545498611255303e-05, + 5.613851969921603154e-05, + 5.193169839078810721e-05, + 4.772499788892172135e-05, + 4.351842502118116507e-05, + 3.931198661430866708e-05, + 3.510568949477657782e-05, + 3.089954048849515668e-05, + 2.669354642051951552e-05, + 2.248771411560178930e-05, + 1.828205039789861832e-05, + 1.407656209067854576e-05, + 9.871256016967705865e-06, + 5.666138998694445955e-06, + 1.461217857803972081e-06, +-2.743500584972130049e-06, +-6.948009509564138225e-06, +-1.115230209601255379e-05, +-1.535637152560454519e-05, +-1.956021098022851250e-05, +-2.376381364229138902e-05, +-2.796717269491708080e-05, +-3.217028132223920457e-05, +-3.637313270884907641e-05, +-4.057572004018194183e-05, +-4.477803650234074545e-05, +-4.898007528248189018e-05, +-5.318182956826370352e-05, +-5.738329254813894859e-05, +-6.158445741155348378e-05, +-6.578531734886302999e-05, +-6.998586555068815834e-05, +-7.418609520914468353e-05, +-7.838599951672835177e-05, +-8.258557166717111662e-05, +-8.678480485479464273e-05, +-9.098369227480344705e-05, +-9.518222712357677956e-05, +-9.938040259811708966e-05, +-1.035782118963423677e-04, +-1.077756482173783918e-04, +-1.119727047610072210e-04, +-1.161693747279597813e-04, +-1.203656513202074204e-04, +-1.245615277404109171e-04, +-1.287569971922128355e-04, +-1.329520528805291761e-04, +-1.371466880109981534e-04, +-1.413408957902732019e-04, +-1.455346694263141112e-04, +-1.497280021277416545e-04, +-1.539208871046931061e-04, +-1.581133175677091446e-04, +-1.623052867289606822e-04, +-1.664967878016061222e-04, +-1.706878139997076592e-04, +-1.748783585384299042e-04, +-1.790684146343321861e-04, +-1.832579755048165571e-04, +-1.874470343684202830e-04, +-1.916355844451085512e-04, +-1.958236189557216358e-04, +-2.000111311223631502e-04, +-2.041981141682212625e-04, +-2.083845613178615652e-04, +-2.125704657971428063e-04, +-2.167558208325772091e-04, +-2.209406196524590460e-04, +-2.251248554862230616e-04, +-2.293085215643631577e-04, +-2.334916111187201133e-04, +-2.376741173823102807e-04, +-2.418560335897061405e-04, +-2.460373529764893485e-04, +-2.502180687795408959e-04, +-2.543981742373322167e-04, +-2.585776625893754167e-04, +-2.627565270765156824e-04, +-2.669347609411275215e-04, +-2.711123574270324181e-04, +-2.752893097788580690e-04, +-2.794656112432594664e-04, +-2.836412550679068495e-04, +-2.878162345018677229e-04, +-2.919905427958963389e-04, +-2.961641732017962405e-04, +-3.003371189731711259e-04, +-3.045093733647894515e-04, +-3.086809296328694692e-04, +-3.128517810353717435e-04, +-3.170219208314540150e-04, +-3.211913422817555324e-04, +-3.253600386486933107e-04, +-3.295280031959100554e-04, +-3.336952291885650541e-04, +-3.378617098936266398e-04, +-3.420274385793237474e-04, +-3.461924085154324685e-04, +-3.503566129735717128e-04, +-3.545200452265593553e-04, +-3.586826985492584012e-04, +-3.628445662174782020e-04, +-3.670056415091869722e-04, +-3.711659177038769352e-04, +-3.753253880824800265e-04, +-3.794840459275643512e-04, +-3.836418845236243161e-04, +-3.877988971565360355e-04, +-3.919550771139345790e-04, +-3.961104176850453783e-04, +-4.002649121610610413e-04, +-4.044185538345972455e-04, +-4.085713359999852017e-04, +-4.127232519535541425e-04, +-4.168742949930915524e-04, +-4.210244584181293431e-04, +-4.251737355301407444e-04, +-4.293221196324553028e-04, +-4.334696040296304241e-04, +-4.376161820286540781e-04, +-4.417618469378527366e-04, +-4.459065920677323346e-04, +-4.500504107303421146e-04, +-4.541932962395622657e-04, +-4.583352419113922668e-04, +-4.624762410634062921e-04, +-4.666162870150457830e-04, +-4.707553730878983049e-04, +-4.748934926051631440e-04, +-4.790306388919346632e-04, +-4.831668052754903211e-04, +-4.873019850847487328e-04, +-4.914361716505554660e-04, +-4.955693583059732820e-04, +-4.997015383856428898e-04, +-5.038327052265382557e-04, +-5.079628521673248097e-04, +-5.120919725486507710e-04, +-5.162200597134308832e-04, +-5.203471070063113608e-04, +-5.244731077739496136e-04, +-5.285980553653034028e-04, +-5.327219431310905836e-04, +-5.368447644240742500e-04, +-5.409665125993533014e-04, +-5.450871810138131855e-04, +-5.492067630264217768e-04, +-5.533252519985081257e-04, +-5.574426412932291389e-04, +-5.615589242759391839e-04, +-5.656740943140263749e-04, +-5.697881447771885018e-04, +-5.739010690373633162e-04, +-5.780128604680874428e-04, +-5.821235124456099631e-04, +-5.862330183482674815e-04, +-5.903413715563920767e-04, +-5.944485654526075052e-04, +-5.985545934216509592e-04, +-6.026594488507495007e-04, +-6.067631251290857676e-04, +-6.108656156480755288e-04, +-6.149669138016647559e-04, +-6.190670129857776555e-04, +-6.231659065986136330e-04, +-6.272635880408308469e-04, +-6.313600507154744357e-04, +-6.354552880273384640e-04, +-6.395492933841717730e-04, +-6.436420601955893323e-04, +-6.477335818739051246e-04, +-6.518238518335009229e-04, +-6.559128634911155558e-04, +-6.600006102661275589e-04, +-6.640870855800136158e-04, +-6.681722828566418349e-04, +-6.722561955225483292e-04, +-6.763388170064023796e-04, +-6.804201407392945072e-04, +-6.845001601550135956e-04, +-6.885788686895170409e-04, +-6.926562597812114521e-04, +-6.967323268712363868e-04, +-7.008070634029297304e-04, +-7.048804628221096982e-04, +-7.089525185773609553e-04, +-7.130232241194054549e-04, +-7.170925729019329365e-04, +-7.211605583805217115e-04, +-7.252271740138280329e-04, +-7.292924132629619201e-04, +-7.333562695914045424e-04, +-7.374187364652079295e-04, +-7.414798073532681902e-04, +-7.455394757267967470e-04, +-7.495977350596924344e-04, +-7.536545788283706285e-04, +-7.577100005121374052e-04, +-7.617639935926540529e-04, +-7.658165515542218922e-04, +-7.698676678839736377e-04, +-7.739173360717878543e-04, +-7.779655496096763833e-04, +-7.820123019928696285e-04, +-7.860575867191999704e-04, +-7.901013972890213186e-04, +-7.941437272054886190e-04, +-7.981845699743905613e-04, +-8.022239191045189670e-04, +-8.062617681071347110e-04, +-8.102981104962562282e-04, +-8.143329397889378278e-04, +-8.183662495047317126e-04, +-8.223980331659797374e-04, +-8.264282842980881462e-04, +-8.304569964289969632e-04, +-8.344841630894641628e-04, +-8.385097778133425743e-04, +-8.425338341370510083e-04, +-8.465563255998616787e-04, +-8.505772457441613870e-04, +-8.545965881148575964e-04, +-8.586143462600908608e-04, +-8.626305137306156372e-04, +-8.666450840800930203e-04, +-8.706580508653561550e-04, +-8.746694076458970835e-04, +-8.786791479841230511e-04, +-8.826872654456646358e-04, +-8.866937535988279016e-04, +-8.906986060148787843e-04, +-8.947018162683244421e-04, +-8.987033779363830807e-04, +-9.027032845993569190e-04, +-9.067015298404565481e-04, +-9.106981072460890040e-04, +-9.146930104057655019e-04, +-9.186862329115025230e-04, +-9.226777683588865010e-04, +-9.266676103465640302e-04, +-9.306557524757069202e-04, +-9.346421883510963981e-04, +-9.386269115805081489e-04, +-9.426099157746303499e-04, +-9.465911945473515264e-04, +-9.505707415155813331e-04, +-9.545485502996207006e-04, +-9.585246145226425027e-04, +-9.624989278109606552e-04, +-9.664714837943130929e-04, +-9.704422761053360397e-04, +-9.744112983798440585e-04, +-9.783785442570103533e-04, +-9.823440073793007418e-04, +-9.863076813918462277e-04, +-9.902695599436192510e-04, +-9.942296366863777844e-04, +-9.981879052754708947e-04, +-1.002144359369222916e-03, +-1.006098992629222066e-03, +-1.010051798720584771e-03, +-1.014002771311443493e-03, +-1.017951904073213223e-03, +-1.021899190680880315e-03, +-1.025844624812461466e-03, +-1.029788200149302311e-03, +-1.033729910376336757e-03, +-1.037669749181571342e-03, +-1.041607710256359969e-03, +-1.045543787295688835e-03, +-1.049477973997542824e-03, +-1.053410264063652088e-03, +-1.057340651198862991e-03, +-1.061269129111428247e-03, +-1.065195691513350605e-03, +-1.069120332119445236e-03, +-1.073043044648478361e-03, +-1.076963822822572022e-03, +-1.080882660367114530e-03, +-1.084799551010954535e-03, +-1.088714488486679883e-03, +-1.092627466530082022e-03, +-1.096538478880541108e-03, +-1.100447519280839956e-03, +-1.104354581477539395e-03, +-1.108259659220450040e-03, +-1.112162746262913317e-03, +-1.116063836361989902e-03, +-1.119962923278370161e-03, +-1.123860000775776542e-03, +-1.127755062622035846e-03, +-1.131648102588451044e-03, +-1.135539114449754441e-03, +-1.139428091984354000e-03, +-1.143315028974177441e-03, +-1.147199919205040214e-03, +-1.151082756466120316e-03, +-1.154963534550236060e-03, +-1.158842247254108669e-03, +-1.162718888377867882e-03, +-1.166593451725297199e-03, +-1.170465931104132254e-03, +-1.174336320325525870e-03, +-1.178204613204332550e-03, +-1.182070803559373464e-03, +-1.185934885212842080e-03, +-1.189796851991005216e-03, +-1.193656697723603907e-03, +-1.197514416244126623e-03, +-1.201370001390080974e-03, +-1.205223447002484348e-03, +-1.209074746926117397e-03, +-1.212923895009824582e-03, +-1.216770885105967082e-03, +-1.220615711070730924e-03, +-1.224458366764363771e-03, +-1.228298846050685086e-03, +-1.232137142797345248e-03, +-1.235973250876103982e-03, +-1.239807164162312104e-03, +-1.243638876535276471e-03, +-1.247468381878084768e-03, +-1.251295674077890002e-03, +-1.255120747025811629e-03, +-1.258943594616372414e-03, +-1.262764210748508259e-03, +-1.266582589325004633e-03, +-1.270398724252400514e-03, +-1.274212609441180725e-03, +-1.278024238806038312e-03, +-1.281833606265366703e-03, +-1.285640705741625733e-03, +-1.289445531161162754e-03, +-1.293248076454573238e-03, +-1.297048335556200962e-03, +-1.300846302404394311e-03, +-1.304641970941696014e-03, +-1.308435335114763783e-03, +-1.312226388873777251e-03, +-1.316015126173564025e-03, +-1.319801540972674863e-03, +-1.323585627233722379e-03, +-1.327367378923650140e-03, +-1.331146790013158472e-03, +-1.334923854477370166e-03, +-1.338698566295264732e-03, +-1.342470919449947290e-03, +-1.346240907928889039e-03, +-1.350008525723452599e-03, +-1.353773766829133567e-03, +-1.357536625245850653e-03, +-1.361297094977416801e-03, +-1.365055170031828679e-03, +-1.368810844421517337e-03, +-1.372564112162846014e-03, +-1.376314967276386818e-03, +-1.380063403787174870e-03, +-1.383809415724126949e-03, +-1.387552997120814965e-03, +-1.391294142014457003e-03, +-1.395032844447022984e-03, +-1.398769098464666769e-03, +-1.402502898117633347e-03, +-1.406234237460449003e-03, +-1.409963110552179578e-03, +-1.413689511455934120e-03, +-1.417413434239128559e-03, +-1.421134872973740500e-03, +-1.424853821735833472e-03, +-1.428570274605877417e-03, +-1.432284225668604928e-03, +-1.435995669013271888e-03, +-1.439704598733573121e-03, +-1.443411008927085546e-03, +-1.447114893696259787e-03, +-1.450816247147934234e-03, +-1.454515063392856477e-03, +-1.458211336546671880e-03, +-1.461905060729374543e-03, +-1.465596230065209938e-03, +-1.469284838682946613e-03, +-1.472970880715718332e-03, +-1.476654350301358004e-03, +-1.480335241581922159e-03, +-1.484013548703936626e-03, +-1.487689265818667363e-03, +-1.491362387081611104e-03, +-1.495032906652781369e-03, +-1.498700818696941783e-03, +-1.502366117383131415e-03, +-1.506028796884927154e-03, +-1.509688851380674643e-03, +-1.513346275052960275e-03, +-1.517001062089237424e-03, +-1.520653206681293673e-03, +-1.524302703025492154e-03, +-1.527949545323016361e-03, +-1.531593727779411752e-03, +-1.535235244604820585e-03, +-1.538874090014242775e-03, +-1.542510258227060152e-03, +-1.546143743467281485e-03, +-1.549774539963803778e-03, +-1.553402641949925460e-03, +-1.557028043663606816e-03, +-1.560650739347721081e-03, +-1.564270723249494349e-03, +-1.567887989621238919e-03, +-1.571502532719391615e-03, +-1.575114346805602319e-03, +-1.578723426146202719e-03, +-1.582329765011788016e-03, +-1.585933357678153246e-03, +-1.589534198425763102e-03, +-1.593132281539665204e-03, +-1.596727601309670067e-03, +-1.600320152030595706e-03, +-1.603909928001792749e-03, +-1.607496923527485314e-03, +-1.611081132916601221e-03, +-1.614662550483126312e-03, +-1.618241170545610267e-03, +-1.621816987427429635e-03, +-1.625389995456939405e-03, +-1.628960188967435926e-03, +-1.632527562296569486e-03, +-1.636092109787407479e-03, +-1.639653825787492671e-03, +-1.643212704649555083e-03, +-1.646768740730977917e-03, +-1.650321928394033258e-03, +-1.653872262006132309e-03, +-1.657419735939365257e-03, +-1.660964344570739579e-03, +-1.664506082282431795e-03, +-1.668044943461311717e-03, +-1.671580922499207649e-03, +-1.675114013793129950e-03, +-1.678644211744823034e-03, +-1.682171510761003904e-03, +-1.685695905253614332e-03, +-1.689217389639339475e-03, +-1.692735958339869817e-03, +-1.696251605782141646e-03, +-1.699764326397797771e-03, +-1.703274114623892039e-03, +-1.706780964901972531e-03, +-1.710284871679096808e-03, +-1.713785829407300223e-03, +-1.717283832543521106e-03, +-1.720778875549769686e-03, +-1.724270952893365745e-03, +-1.727760059046488245e-03, +-1.731246188486414714e-03, +-1.734729335695749369e-03, +-1.738209495161992029e-03, +-1.741686661377832160e-03, +-1.745160828841017028e-03, +-1.748631992054594563e-03, +-1.752100145526831179e-03, +-1.755565283770688318e-03, +-1.759027401304757900e-03, +-1.762486492652737789e-03, +-1.765942552343336162e-03, +-1.769395574910548417e-03, +-1.772845554893484566e-03, +-1.776292486836697536e-03, +-1.779736365289733219e-03, +-1.783177184807347099e-03, +-1.786614939949780724e-03, +-1.790049625282274896e-03, +-1.793481235375328367e-03, +-1.796909764804853742e-03, +-1.800335208152109611e-03, +-1.803757560003177310e-03, +-1.807176814949947117e-03, +-1.810592967589315936e-03, +-1.814006012523469409e-03, +-1.817415944360143646e-03, +-1.820822757712085285e-03, +-1.824226447197684021e-03, +-1.827627007440420530e-03, +-1.831024433069137515e-03, +-1.834418718718262191e-03, +-1.837809859027339640e-03, +-1.841197848641303644e-03, +-1.844582682210680735e-03, +-1.847964354391179063e-03, +-1.851342859843879652e-03, +-1.854718193235512435e-03, +-1.858090349237986362e-03, +-1.861459322528632478e-03, +-1.864825107790441146e-03, +-1.868187699711543800e-03, +-1.871547092985885799e-03, +-1.874903282312344972e-03, +-1.878256262395720409e-03, +-1.881606027946198167e-03, +-1.884952573679305951e-03, +-1.888295894316040831e-03, +-1.891635984583148753e-03, +-1.894972839212630787e-03, +-1.898306452942021775e-03, +-1.901636820514591335e-03, +-1.904963936678912787e-03, +-1.908287796189183424e-03, +-1.911608393805061231e-03, +-1.914925724291918806e-03, +-1.918239782420759227e-03, +-1.921550562967714714e-03, +-1.924858060714936762e-03, +-1.928162270450173733e-03, +-1.931463186966315710e-03, +-1.934760805062381989e-03, +-1.938055119542630078e-03, +-1.941346125217237231e-03, +-1.944633816901785882e-03, +-1.947918189417501521e-03, +-1.951199237591460644e-03, +-1.954476956256191982e-03, +-1.957751340249861902e-03, +-1.961022384416548272e-03, +-1.964290083605781632e-03, +-1.967554432672759864e-03, +-1.970815426478623143e-03, +-1.974073059889969953e-03, +-1.977327327779122498e-03, +-1.980578225024329665e-03, +-1.983825746509282600e-03, +-1.987069887123698014e-03, +-1.990310641762805133e-03, +-1.993548005327595938e-03, +-1.996781972725036793e-03, +-2.000012538867630869e-03, +-2.003239698673665772e-03, +-2.006463447067432116e-03, +-2.009683778978774669e-03, +-2.012900689343357329e-03, +-2.016114173102854807e-03, +-2.019324225204541072e-03, +-2.022530840601507486e-03, +-2.025734014252901765e-03, +-2.028933741123477384e-03, +-2.032130016183928811e-03, +-2.035322834410707628e-03, +-2.038512190786280574e-03, +-2.041698080299057545e-03, +-2.044880497942887232e-03, +-2.048059438717941393e-03, +-2.051234897630210482e-03, +-2.054406869691433827e-03, +-2.057575349919341188e-03, +-2.060740333337503141e-03, +-2.063901814975627278e-03, +-2.067059789869135373e-03, +-2.070214253059396263e-03, +-2.073365199593937055e-03, +-2.076512624526014646e-03, +-2.079656522914868563e-03, +-2.082796889825835884e-03, +-2.085933720330310041e-03, +-2.089067009505239918e-03, +-2.092196752434061398e-03, +-2.095322944205870765e-03, +-2.098445579916035763e-03, +-2.101564654665748471e-03, +-2.104680163562222192e-03, +-2.107792101718890514e-03, +-2.110900464255049958e-03, +-2.114005246296016532e-03, +-2.117106442973388115e-03, +-2.120204049424598194e-03, +-2.123298060793170437e-03, +-2.126388472228905608e-03, +-2.129475278887470440e-03, +-2.132558475930646565e-03, +-2.135638058526504422e-03, +-2.138714021849023785e-03, +-2.141786361078303665e-03, +-2.144855071400750528e-03, +-2.147920148008659793e-03, +-2.150981586100781783e-03, +-2.154039380881544140e-03, +-2.157093527561936095e-03, +-2.160144021359033158e-03, +-2.163190857495956351e-03, +-2.166234031201979323e-03, +-2.169273537712789000e-03, +-2.172309372270038886e-03, +-2.175341530121658717e-03, +-2.178370006521706571e-03, +-2.181394796730659440e-03, +-2.184415896015022476e-03, +-2.187433299647509408e-03, +-2.190447002907219918e-03, +-2.193457001079548562e-03, +-2.196463289455749795e-03, +-2.199465863333725096e-03, +-2.202464718017577150e-03, +-2.205459848817554764e-03, +-2.208451251050240656e-03, +-2.211438920038439563e-03, +-2.214422851111456664e-03, +-2.217403039604679514e-03, +-2.220379480859821768e-03, +-2.223352170225110971e-03, +-2.226321103054893467e-03, +-2.229286274709836937e-03, +-2.232247680557152003e-03, +-2.235205315970198014e-03, +-2.238159176328680805e-03, +-2.241109257018867804e-03, +-2.244055553433183837e-03, +-2.246998060970436216e-03, +-2.249936775036003814e-03, +-2.252871691041394286e-03, +-2.255802804404769685e-03, +-2.258730110550498903e-03, +-2.261653604909350662e-03, +-2.264573282918719462e-03, +-2.267489140022213145e-03, +-2.270401171669881452e-03, +-2.273309373318397296e-03, +-2.276213740430682066e-03, +-2.279114268476115524e-03, +-2.282010952930725763e-03, +-2.284903789276808428e-03, +-2.287792773003200376e-03, +-2.290677899605152168e-03, +-2.293559164584527132e-03, +-2.296436563449751490e-03, +-2.299310091715361590e-03, +-2.302179744902783237e-03, +-2.305045518539901046e-03, +-2.307907408160978641e-03, +-2.310765409306823025e-03, +-2.313619517524953279e-03, +-2.316469728369256655e-03, +-2.319316037400209318e-03, +-2.322158440184797414e-03, +-2.324996932296759505e-03, +-2.327831509316203185e-03, +-2.330662166829814558e-03, +-2.333488900431058589e-03, +-2.336311705719801377e-03, +-2.339130578302488390e-03, +-2.341945513792314040e-03, +-2.344756507809147520e-03, +-2.347563555979080910e-03, +-2.350366653935279625e-03, +-2.353165797317222606e-03, +-2.355960981771279984e-03, +-2.358752202950282432e-03, +-2.361539456513698110e-03, +-2.364322738127860781e-03, +-2.367102043465553907e-03, +-2.369877368206253949e-03, +-2.372648708036296464e-03, +-2.375416058648507911e-03, +-2.378179415742418153e-03, +-2.380938775024420920e-03, +-2.383694132207456792e-03, +-2.386445483011156738e-03, +-2.389192823162054197e-03, +-2.391936148393167868e-03, +-2.394675454444492209e-03, +-2.397410737062576330e-03, +-2.400141992000700067e-03, +-2.402869215019164117e-03, +-2.405592401884573597e-03, +-2.408311548370685885e-03, +-2.411026650257939215e-03, +-2.413737703333448340e-03, +-2.416444703391107743e-03, +-2.419147646231785929e-03, +-2.421846527662956799e-03, +-2.424541343498962023e-03, +-2.427232089560900884e-03, +-2.429918761676852328e-03, +-2.432601355681541459e-03, +-2.435279867416532528e-03, +-2.437954292730343427e-03, +-2.440624627478380632e-03, +-2.443290867522544558e-03, +-2.445953008731957274e-03, +-2.448611046982529689e-03, +-2.451264978156928592e-03, +-2.453914798144752728e-03, +-2.456560502842410933e-03, +-2.459202088153389712e-03, +-2.461839549987881581e-03, +-2.464472884262979783e-03, +-2.467102086902872582e-03, +-2.469727153838447310e-03, +-2.472348081007551442e-03, +-2.474964864355099284e-03, +-2.477577499832786610e-03, +-2.480185983399209055e-03, +-2.482790311020120159e-03, +-2.485390478667962554e-03, +-2.487986482322379709e-03, +-2.490578317969784419e-03, +-2.493165981603586052e-03, +-2.495749469224311980e-03, +-2.498328776839301834e-03, +-2.500903900462905262e-03, +-2.503474836116599891e-03, +-2.506041579828718543e-03, +-2.508604127634573265e-03, +-2.511162475576686048e-03, +-2.513716619704397647e-03, +-2.516266556074078786e-03, +-2.518812280749314035e-03, +-2.521353789800531448e-03, +-2.523891079305265375e-03, +-2.526424145348041099e-03, +-2.528952984020548314e-03, +-2.531477591421592982e-03, +-2.533997963656703118e-03, +-2.536514096838817043e-03, +-2.539025987087893937e-03, +-2.541533630530863966e-03, +-2.544037023301746678e-03, +-2.546536161541811897e-03, +-2.549031041399277449e-03, +-2.551521659029525567e-03, +-2.554008010594972355e-03, +-2.556490092265344474e-03, +-2.558967900217307915e-03, +-2.561441430634667921e-03, +-2.563910679708463099e-03, +-2.566375643636946771e-03, +-2.568836318625178448e-03, +-2.571292700885754144e-03, +-2.573744786638163667e-03, +-2.576192572109269399e-03, +-2.578636053532942871e-03, +-2.581075227150233468e-03, +-2.583510089209541030e-03, +-2.585940635966279752e-03, +-2.588366863683062933e-03, +-2.590788768629866037e-03, +-2.593206347083700566e-03, +-2.595619595328803580e-03, +-2.598028509656777341e-03, +-2.600433086366273593e-03, +-2.602833321763199561e-03, +-2.605229212160834178e-03, +-2.607620753879550963e-03, +-2.610007943246955061e-03, +-2.612390776598058021e-03, +-2.614769250274930849e-03, +-2.617143360627169780e-03, +-2.619513104011235351e-03, +-2.621878476791222184e-03, +-2.624239475338434411e-03, +-2.626596096031323224e-03, +-2.628948335255676394e-03, +-2.631296189404704576e-03, +-2.633639654878775892e-03, +-2.635978728085549942e-03, +-2.638313405440160814e-03, +-2.640643683364903970e-03, +-2.642969558289453083e-03, +-2.645291026650741645e-03, +-2.647608084893156386e-03, +-2.649920729468461383e-03, +-2.652228956835467159e-03, +-2.654532763460629163e-03, +-2.656832145817772384e-03, +-2.659127100387750908e-03, +-2.661417623659124033e-03, +-2.663703712127729519e-03, +-2.665985362296715254e-03, +-2.668262570676648970e-03, +-2.670535333785414162e-03, +-2.672803648148473332e-03, +-2.675067510298504130e-03, +-2.677326916775607957e-03, +-2.679581864127430092e-03, +-2.681832348908880399e-03, +-2.684078367682289027e-03, +-2.686319917017574235e-03, +-2.688556993491901959e-03, +-2.690789593689897445e-03, +-2.693017714203761476e-03, +-2.695241351632936440e-03, +-2.697460502584529598e-03, +-2.699675163672945327e-03, +-2.701885331520035606e-03, +-2.704091002755278257e-03, +-2.706292174015475106e-03, +-2.708488841944893359e-03, +-2.710681003195436478e-03, +-2.712868654426330624e-03, +-2.715051792304302904e-03, +-2.717230413503730121e-03, +-2.719404514706326957e-03, +-2.721574092601319016e-03, +-2.723739143885593739e-03, +-2.725899665263358234e-03, +-2.728055653446564283e-03, +-2.730207105154371875e-03, +-2.732354017113759834e-03, +-2.734496386059224841e-03, +-2.736634208732526864e-03, +-2.738767481883259448e-03, +-2.740896202268514915e-03, +-2.743020366652849235e-03, +-2.745139971808361820e-03, +-2.747255014514887218e-03, +-2.749365491559658137e-03, +-2.751471399737544406e-03, +-2.753572735850944985e-03, +-2.755669496709987031e-03, +-2.757761679132242263e-03, +-2.759849279942871384e-03, +-2.761932295974734667e-03, +-2.764010724068332106e-03, +-2.766084561071507648e-03, +-2.768153803840019481e-03, +-2.770218449237033930e-03, +-2.772278494133522276e-03, +-2.774333935407927686e-03, +-2.776384769946331314e-03, +-2.778430994642592383e-03, +-2.780472606398081466e-03, +-2.782509602121798886e-03, +-2.784541978730529967e-03, +-2.786569733148603484e-03, +-2.788592862307973617e-03, +-2.790611363148419889e-03, +-2.792625232617244446e-03, +-2.794634467669416481e-03, +-2.796639065267728791e-03, +-2.798639022382479018e-03, +-2.800634335991817898e-03, +-2.802625003081458694e-03, +-2.804611020644819444e-03, +-2.806592385683180819e-03, +-2.808569095205224690e-03, +-2.810541146227616988e-03, +-2.812508535774680286e-03, +-2.814471260878373404e-03, +-2.816429318578373819e-03, +-2.818382705922215133e-03, +-2.820331419965046819e-03, +-2.822275457769736137e-03, +-2.824214816407030759e-03, +-2.826149492955294662e-03, +-2.828079484500675960e-03, +-2.830004788137032747e-03, +-2.831925400966080978e-03, +-2.833841320097326821e-03, +-2.835752542647784757e-03, +-2.837659065742519256e-03, +-2.839560886514302593e-03, +-2.841458002103598376e-03, +-2.843350409658723307e-03, +-2.845238106335712305e-03, +-2.847121089298534045e-03, +-2.848999355718822950e-03, +-2.850872902776019260e-03, +-2.852741727657477459e-03, +-2.854605827558252904e-03, +-2.856465199681208506e-03, +-2.858319841237103205e-03, +-2.860169749444560743e-03, +-2.862014921529789507e-03, +-2.863855354727101211e-03, +-2.865691046278494129e-03, +-2.867521993433787969e-03, +-2.869348193450788238e-03, +-2.871169643594952744e-03, +-2.872986341139781470e-03, +-2.874798283366491319e-03, +-2.876605467564156624e-03, +-2.878407891029842718e-03, +-2.880205551068361781e-03, +-2.881998444992375612e-03, +-2.883786570122570409e-03, +-2.885569923787368804e-03, +-2.887348503323084684e-03, +-2.889122306074032049e-03, +-2.890891329392297326e-03, +-2.892655570637866873e-03, +-2.894415027178738001e-03, +-2.896169696390652262e-03, +-2.897919575657448895e-03, +-2.899664662370602525e-03, +-2.901404953929749651e-03, +-2.903140447742395477e-03, +-2.904871141223884859e-03, +-2.906597031797478626e-03, +-2.908318116894513181e-03, +-2.910034393954106027e-03, +-2.911745860423337919e-03, +-2.913452513757325713e-03, +-2.915154351419022450e-03, +-2.916851370879366967e-03, +-2.918543569617216248e-03, +-2.920230945119446034e-03, +-2.921913494880939554e-03, +-2.923591216404306057e-03, +-2.925264107200350495e-03, +-2.926932164787856248e-03, +-2.928595386693334020e-03, +-2.930253770451560040e-03, +-2.931907313605072122e-03, +-2.933556013704578195e-03, +-2.935199868308628873e-03, +-2.936838874983778783e-03, +-2.938473031304691518e-03, +-2.940102334853915856e-03, +-2.941726783222008493e-03, +-2.943346374007628583e-03, +-2.944961104817337815e-03, +-2.946570973265715335e-03, +-2.948175976975465733e-03, +-2.949776113577190495e-03, +-2.951371380709536321e-03, +-2.952961776019267983e-03, +-2.954547297161036739e-03, +-2.956127941797675671e-03, +-2.957703707599941643e-03, +-2.959274592246646275e-03, +-2.960840593424724030e-03, +-2.962401708829068715e-03, +-2.963957936162622386e-03, +-2.965509273136483770e-03, +-2.967055717469707903e-03, +-2.968597266889388096e-03, +-2.970133919130809024e-03, +-2.971665671937214273e-03, +-2.973192523059907822e-03, +-2.974714470258378943e-03, +-2.976231511300089262e-03, +-2.977743643960592459e-03, +-2.979250866023527757e-03, +-2.980753175280664163e-03, +-2.982250569531896562e-03, +-2.983743046585016732e-03, +-2.985230604256095856e-03, +-2.986713240369299766e-03, +-2.988190952756803517e-03, +-2.989663739258928855e-03, +-2.991131597724075268e-03, +-2.992594526008849221e-03, +-2.994052521977872035e-03, +-2.995505583503879198e-03, +-2.996953708467835729e-03, +-2.998396894758724538e-03, +-2.999835140273651377e-03, +-3.001268442917914663e-03, +-3.002696800604986831e-03, +-3.004120211256288819e-03, +-3.005538672801578645e-03, +-3.006952183178613139e-03, +-3.008360740333431566e-03, +-3.009764342220096721e-03, +-3.011162986800838912e-03, +-3.012556672046144430e-03, +-3.013945395934543910e-03, +-3.015329156452731165e-03, +-3.016707951595664662e-03, +-3.018081779366360226e-03, +-3.019450637776008566e-03, +-3.020814524844064614e-03, +-3.022173438598061909e-03, +-3.023527377073709742e-03, +-3.024876338314989865e-03, +-3.026220320373970013e-03, +-3.027559321310895838e-03, +-3.028893339194314947e-03, +-3.030222372100816255e-03, +-3.031546418115348748e-03, +-3.032865475330839399e-03, +-3.034179541848583926e-03, +-3.035488615778076348e-03, +-3.036792695236919647e-03, +-3.038091778350951542e-03, +-3.039385863254289583e-03, +-3.040674948089176332e-03, +-3.041959031006105131e-03, +-3.043238110163748109e-03, +-3.044512183729085851e-03, +-3.045781249877242605e-03, +-3.047045306791544388e-03, +-3.048304352663626111e-03, +-3.049558385693367391e-03, +-3.050807404088711275e-03, +-3.052051406065998604e-03, +-3.053290389849794978e-03, +-3.054524353672823534e-03, +-3.055753295776108495e-03, +-3.056977214408865880e-03, +-3.058196107828641420e-03, +-3.059409974301167436e-03, +-3.060618812100409248e-03, +-3.061822619508666223e-03, +-3.063021394816436028e-03, +-3.064215136322433718e-03, +-3.065403842333770841e-03, +-3.066587511165679188e-03, +-3.067766141141713317e-03, +-3.068939730593742317e-03, +-3.070108277861828376e-03, +-3.071271781294309181e-03, +-3.072430239247884217e-03, +-3.073583650087426122e-03, +-3.074732012186174972e-03, +-3.075875323925575649e-03, +-3.077013583695381929e-03, +-3.078146789893682501e-03, +-3.079274940926792544e-03, +-3.080398035209314447e-03, +-3.081516071164208063e-03, +-3.082629047222683154e-03, +-3.083736961824193323e-03, +-3.084839813416622063e-03, +-3.085937600456045097e-03, +-3.087030321406880433e-03, +-3.088117974741823746e-03, +-3.089200558941919070e-03, +-3.090278072496549684e-03, +-3.091350513903268118e-03, +-3.092417881668074135e-03, +-3.093480174305293737e-03, +-3.094537390337464677e-03, +-3.095589528295486503e-03, +-3.096636586718645289e-03, +-3.097678564154469644e-03, +-3.098715459158833500e-03, +-3.099747270295940063e-03, +-3.100773996138360845e-03, +-3.101795635266959335e-03, +-3.102812186270888402e-03, +-3.103823647747751182e-03, +-3.104830018303394220e-03, +-3.105831296552005478e-03, +-3.106827481116170280e-03, +-3.107818570626817972e-03, +-3.108804563723099185e-03, +-3.109785459052677708e-03, +-3.110761255271430378e-03, +-3.111731951043685603e-03, +-3.112697545042069844e-03, +-3.113658035947527124e-03, +-3.114613422449464750e-03, +-3.115563703245542541e-03, +-3.116508877041792094e-03, +-3.117448942552684867e-03, +-3.118383898500978659e-03, +-3.119313743617787866e-03, +-3.120238476642658507e-03, +-3.121158096323442457e-03, +-3.122072601416349055e-03, +-3.122981990686055261e-03, +-3.123886262905484039e-03, +-3.124785416856033782e-03, +-3.125679451327402231e-03, +-3.126568365117696636e-03, +-3.127452157033441989e-03, +-3.128330825889416664e-03, +-3.129204370508918698e-03, +-3.130072789723577133e-03, +-3.130936082373388888e-03, +-3.131794247306725256e-03, +-3.132647283380403467e-03, +-3.133495189459572193e-03, +-3.134337964417783107e-03, +-3.135175607136970501e-03, +-3.136008116507512863e-03, +-3.136835491428117094e-03, +-3.137657730805903065e-03, +-3.138474833556399723e-03, +-3.139286798603585418e-03, +-3.140093624879692746e-03, +-3.140895311325481772e-03, +-3.141691856890100817e-03, +-3.142483260531062170e-03, +-3.143269521214284590e-03, +-3.144050637914093307e-03, +-3.144826609613261218e-03, +-3.145597435302929529e-03, +-3.146363113982646783e-03, +-3.147123644660403986e-03, +-3.147879026352563923e-03, +-3.148629258083926637e-03, +-3.149374338887720760e-03, +-3.150114267805554941e-03, +-3.150849043887454272e-03, +-3.151578666191908427e-03, +-3.152303133785773655e-03, +-3.153022445744366013e-03, +-3.153736601151397190e-03, +-3.154445599098982308e-03, +-3.155149438687717550e-03, +-3.155848119026581286e-03, +-3.156541639232957920e-03, +-3.157229998432726364e-03, +-3.157913195760130368e-03, +-3.158591230357847036e-03, +-3.159264101377028035e-03, +-3.159931807977216320e-03, +-3.160594349326379532e-03, +-3.161251724600952929e-03, +-3.161903932985772603e-03, +-3.162550973674118845e-03, +-3.163192845867700536e-03, +-3.163829548776679861e-03, +-3.164461081619671448e-03, +-3.165087443623641316e-03, +-3.165708634024073410e-03, +-3.166324652064905851e-03, +-3.166935496998452004e-03, +-3.167541168085475506e-03, +-3.168141664595242740e-03, +-3.168736985805390999e-03, +-3.169327131002029532e-03, +-3.169912099479707014e-03, +-3.170491890541438876e-03, +-3.171066503498663064e-03, +-3.171635937671233967e-03, +-3.172200192387513058e-03, +-3.172759266984311651e-03, +-3.173313160806791149e-03, +-3.173861873208671646e-03, +-3.174405403552062795e-03, +-3.174943751207564852e-03, +-3.175476915554179339e-03, +-3.176004895979371492e-03, +-3.176527691879111898e-03, +-3.177045302657748992e-03, +-3.177557727728111837e-03, +-3.178064966511518798e-03, +-3.178567018437687772e-03, +-3.179063882944801675e-03, +-3.179555559479526651e-03, +-3.180042047496968276e-03, +-3.180523346460673723e-03, +-3.180999455842673830e-03, +-3.181470375123431494e-03, +-3.181936103791865086e-03, +-3.182396641345389653e-03, +-3.182851987289821941e-03, +-3.183302141139490119e-03, +-3.183747102417121885e-03, +-3.184186870653963296e-03, +-3.184621445389693335e-03, +-3.185050826172443426e-03, +-3.185475012558802201e-03, +-3.185894004113851066e-03, +-3.186307800411102616e-03, +-3.186716401032519286e-03, +-3.187119805568574930e-03, +-3.187518013618156378e-03, +-3.187911024788617643e-03, +-3.188298838695784263e-03, +-3.188681454963963272e-03, +-3.189058873225902001e-03, +-3.189431093122797618e-03, +-3.189798114304330523e-03, +-3.190159936428667384e-03, +-3.190516559162363125e-03, +-3.190867982180504471e-03, +-3.191214205166620181e-03, +-3.191555227812705765e-03, +-3.191891049819209607e-03, +-3.192221670895030797e-03, +-3.192547090757573772e-03, +-3.192867309132674594e-03, +-3.193182325754625669e-03, +-3.193492140366223017e-03, +-3.193796752718683438e-03, +-3.194096162571705665e-03, +-3.194390369693461251e-03, +-3.194679373860561181e-03, +-3.194963174858102273e-03, +-3.195241772479633785e-03, +-3.195515166527165656e-03, +-3.195783356811187585e-03, +-3.196046343150626533e-03, +-3.196304125372888792e-03, +-3.196556703313849571e-03, +-3.196804076817827845e-03, +-3.197046245737616716e-03, +-3.197283209934477771e-03, +-3.197514969278118530e-03, +-3.197741523646714136e-03, +-3.197962872926914286e-03, +-3.198179017013815049e-03, +-3.198389955810967532e-03, +-3.198595689230416921e-03, +-3.198796217192627876e-03, +-3.198991539626565208e-03, +-3.199181656469604965e-03, +-3.199366567667632447e-03, +-3.199546273174969351e-03, +-3.199720772954380704e-03, +-3.199890066977135149e-03, +-3.200054155222908665e-03, +-3.200213037679879111e-03, +-3.200366714344645997e-03, +-3.200515185222290761e-03, +-3.200658450326341210e-03, +-3.200796509678778892e-03, +-3.200929363310046905e-03, +-3.201057011259052058e-03, +-3.201179453573137559e-03, +-3.201296690308112064e-03, +-3.201408721528231464e-03, +-3.201515547306227078e-03, +-3.201617167723247535e-03, +-3.201713582868921226e-03, +-3.201804792841308166e-03, +-3.201890797746948999e-03, +-3.201971597700812525e-03, +-3.202047192826312609e-03, +-3.202117583255325532e-03, +-3.202182769128182182e-03, +-3.202242750593639435e-03, +-3.202297527808923520e-03, +-3.202347100939695757e-03, +-3.202391470160057332e-03, +-3.202430635652592228e-03, +-3.202464597608273983e-03, +-3.202493356226557199e-03, +-3.202516911715328537e-03, +-3.202535264290916686e-03, +-3.202548414178105814e-03, +-3.202556361610089594e-03, +-3.202559106828542328e-03, +-3.202556650083543052e-03, +-3.202548991633628883e-03, +-3.202536131745772462e-03, +-3.202518070695374586e-03, +-3.202494808766274178e-03, +-3.202466346250758700e-03, +-3.202432683449540733e-03, +-3.202393820671757107e-03, +-3.202349758234994924e-03, +-3.202300496465261201e-03, +-3.202246035696980266e-03, +-3.202186376273050573e-03, +-3.202121518544747553e-03, +-3.202051462871808186e-03, +-3.201976209622391534e-03, +-3.201895759173051855e-03, +-3.201810111908824034e-03, +-3.201719268223110395e-03, +-3.201623228517777413e-03, +-3.201521993203078082e-03, +-3.201415562697724777e-03, +-3.201303937428816825e-03, +-3.201187117831885611e-03, +-3.201065104350875063e-03, +-3.200937897438146853e-03, +-3.200805497554479098e-03, +-3.200667905169069828e-03, +-3.200525120759519209e-03, +-3.200377144811834308e-03, +-3.200223977820446011e-03, +-3.200065620288186034e-03, +-3.199902072726306442e-03, +-3.199733335654437582e-03, +-3.199559409600643157e-03, +-3.199380295101382065e-03, +-3.199195992701510134e-03, +-3.199006502954286190e-03, +-3.198811826421375966e-03, +-3.198611963672829111e-03, +-3.198406915287117791e-03, +-3.198196681851088116e-03, +-3.197981263959981824e-03, +-3.197760662217444087e-03, +-3.197534877235525680e-03, +-3.197303909634620529e-03, +-3.197067760043553319e-03, +-3.196826429099534385e-03, +-3.196579917448138033e-03, +-3.196328225743339402e-03, +-3.196071354647482370e-03, +-3.195809304831320318e-03, +-3.195542076973971902e-03, +-3.195269671762908902e-03, +-3.194992089894016507e-03, +-3.194709332071556454e-03, +-3.194421399008126258e-03, +-3.194128291424737712e-03, +-3.193830010050751397e-03, +-3.193526555623897936e-03, +-3.193217928890283198e-03, +-3.192904130604376587e-03, +-3.192585161529027521e-03, +-3.192261022435405587e-03, +-3.191931714103075999e-03, +-3.191597237319963604e-03, +-3.191257592882353750e-03, +-3.190912781594845878e-03, +-3.190562804270457610e-03, +-3.190207661730501583e-03, +-3.189847354804696035e-03, +-3.189481884331045111e-03, +-3.189111251155958126e-03, +-3.188735456134165428e-03, +-3.188354500128732713e-03, +-3.187968384011087911e-03, +-3.187577108660985623e-03, +-3.187180674966508861e-03, +-3.186779083824109807e-03, +-3.186372336138543464e-03, +-3.185960432822912761e-03, +-3.185543374798652065e-03, +-3.185121162995521119e-03, +-3.184693798351607204e-03, +-3.184261281813314734e-03, +-3.183823614335388238e-03, +-3.183380796880872030e-03, +-3.182932830421163987e-03, +-3.182479715935930542e-03, +-3.182021454413199064e-03, +-3.181558046849294105e-03, +-3.181089494248827421e-03, +-3.180615797624751322e-03, +-3.180136957998333513e-03, +-3.179652976399096817e-03, +-3.179163853864917181e-03, +-3.178669591441963399e-03, +-3.178170190184665019e-03, +-3.177665651155801244e-03, +-3.177155975426392952e-03, +-3.176641164075816749e-03, +-3.176121218191681368e-03, +-3.175596138869888393e-03, +-3.175065927214681689e-03, +-3.174530584338539855e-03, +-3.173990111362204412e-03, +-3.173444509414754394e-03, +-3.172893779633505738e-03, +-3.172337923164075032e-03, +-3.171776941160304921e-03, +-3.171210834784362557e-03, +-3.170639605206666302e-03, +-3.170063253605869685e-03, +-3.169481781168917781e-03, +-3.168895189091041134e-03, +-3.168303478575676835e-03, +-3.167706650834514054e-03, +-3.167104707087586846e-03, +-3.166497648563065988e-03, +-3.165885476497453267e-03, +-3.165268192135439231e-03, +-3.164645796730003804e-03, +-3.164018291542360778e-03, +-3.163385677841923545e-03, +-3.162747956906394441e-03, +-3.162105130021693623e-03, +-3.161457198481938680e-03, +-3.160804163589532676e-03, +-3.160146026655077413e-03, +-3.159482788997383836e-03, +-3.158814451943508465e-03, +-3.158141016828729976e-03, +-3.157462484996516241e-03, +-3.156778857798575068e-03, +-3.156090136594829915e-03, +-3.155396322753371754e-03, +-3.154697417650558378e-03, +-3.153993422670873896e-03, +-3.153284339207108270e-03, +-3.152570168660164332e-03, +-3.151850912439146252e-03, +-3.151126571961395100e-03, +-3.150397148652420761e-03, +-3.149662643945895426e-03, +-3.148923059283716044e-03, +-3.148178396115940570e-03, +-3.147428655900834805e-03, +-3.146673840104778717e-03, +-3.145913950202378767e-03, +-3.145148987676420205e-03, +-3.144378954017808519e-03, +-3.143603850725622349e-03, +-3.142823679307165958e-03, +-3.142038441277848239e-03, +-3.141248138161209600e-03, +-3.140452771488999161e-03, +-3.139652342801104497e-03, +-3.138846853645565951e-03, +-3.138036305578525021e-03, +-3.137220700164317609e-03, +-3.136400038975401157e-03, +-3.135574323592354214e-03, +-3.134743555603906363e-03, +-3.133907736606931279e-03, +-3.133066868206385146e-03, +-3.132220952015388627e-03, +-3.131369989655179153e-03, +-3.130513982755084908e-03, +-3.129652932952567326e-03, +-3.128786841893238871e-03, +-3.127915711230734672e-03, +-3.127039542626887728e-03, +-3.126158337751553697e-03, +-3.125272098282744476e-03, +-3.124380825906568782e-03, +-3.123484522317165370e-03, +-3.122583189216841804e-03, +-3.121676828315971246e-03, +-3.120765441332959498e-03, +-3.119849029994358619e-03, +-3.118927596034790171e-03, +-3.118001141196891004e-03, +-3.117069667231436424e-03, +-3.116133175897239146e-03, +-3.115191668961203933e-03, +-3.114245148198270790e-03, +-3.113293615391387204e-03, +-3.112337072331693329e-03, +-3.111375520818273482e-03, +-3.110408962658250693e-03, +-3.109437399666850448e-03, +-3.108460833667351687e-03, +-3.107479266490984025e-03, +-3.106492699977094277e-03, +-3.105501135973031106e-03, +-3.104504576334196197e-03, +-3.103503022923955780e-03, +-3.102496477613738216e-03, +-3.101484942283032689e-03, +-3.100468418819262145e-03, +-3.099446909117848335e-03, +-3.098420415082364480e-03, +-3.097388938624253373e-03, +-3.096352481662934062e-03, +-3.095311046125978800e-03, +-3.094264633948796452e-03, +-3.093213247074902243e-03, +-3.092156887455689215e-03, +-3.091095557050615138e-03, +-3.090029257827111003e-03, +-3.088957991760524213e-03, +-3.087881760834228304e-03, +-3.086800567039575238e-03, +-3.085714412375816906e-03, +-3.084623298850229164e-03, +-3.083527228478045046e-03, +-3.082426203282377566e-03, +-3.081320225294377144e-03, +-3.080209296553124056e-03, +-3.079093419105572490e-03, +-3.077972595006725747e-03, +-3.076846826319408132e-03, +-3.075716115114451431e-03, +-3.074580463470635069e-03, +-3.073439873474546023e-03, +-3.072294347220830366e-03, +-3.071143886811984660e-03, +-3.069988494358383713e-03, +-3.068828171978376859e-03, +-3.067662921798221601e-03, +-3.066492745951991238e-03, +-3.065317646581736197e-03, +-3.064137625837381248e-03, +-3.062952685876764534e-03, +-3.061762828865520480e-03, +-3.060568056977268012e-03, +-3.059368372393478711e-03, +-3.058163777303468580e-03, +-3.056954273904368552e-03, +-3.055739864401367783e-03, +-3.054520551007336784e-03, +-3.053296335943036025e-03, +-3.052067221437132407e-03, +-3.050833209726123377e-03, +-3.049594303054368582e-03, +-3.048350503673994891e-03, +-3.047101813845053391e-03, +-3.045848235835428314e-03, +-3.044589771920740325e-03, +-3.043326424384522593e-03, +-3.042058195518138834e-03, +-3.040785087620684422e-03, +-3.039507102999146858e-03, +-3.038224243968327271e-03, +-3.036936512850743272e-03, +-3.035643911976835824e-03, +-3.034346443684730714e-03, +-3.033044110320403785e-03, +-3.031736914237657086e-03, +-3.030424857797968819e-03, +-3.029107943370704104e-03, +-3.027786173332969264e-03, +-3.026459550069584507e-03, +-3.025128075973221396e-03, +-3.023791753444302240e-03, +-3.022450584890934606e-03, +-3.021104572729065713e-03, +-3.019753719382378340e-03, +-3.018398027282234025e-03, +-3.017037498867812702e-03, +-3.015672136585999079e-03, +-3.014301942891456799e-03, +-3.012926920246494864e-03, +-3.011547071121147435e-03, +-3.010162397993315208e-03, +-3.008772903348462709e-03, +-3.007378589679766609e-03, +-3.005979459488196393e-03, +-3.004575515282417644e-03, +-3.003166759578694035e-03, +-3.001753194901077282e-03, +-3.000334823781283539e-03, +-2.998911648758738075e-03, +-2.997483672380458607e-03, +-2.996050897201218369e-03, +-2.994613325783482358e-03, +-2.993170960697304553e-03, +-2.991723804520363909e-03, +-2.990271859838197245e-03, +-2.988815129243778575e-03, +-2.987353615337866915e-03, +-2.985887320728759960e-03, +-2.984416248032476654e-03, +-2.982940399872666560e-03, +-2.981459778880534827e-03, +-2.979974387694977501e-03, +-2.978484228962530785e-03, +-2.976989305337238764e-03, +-2.975489619480871980e-03, +-2.973985174062783454e-03, +-2.972475971759846233e-03, +-2.970962015256619054e-03, +-2.969443307245263081e-03, +-2.967919850425412669e-03, +-2.966391647504399137e-03, +-2.964858701197120236e-03, +-2.963321014225948208e-03, +-2.961778589320965705e-03, +-2.960231429219655278e-03, +-2.958679536667266265e-03, +-2.957122914416418849e-03, +-2.955561565227328696e-03, +-2.953995491867795684e-03, +-2.952424697113170508e-03, +-2.950849183746240625e-03, +-2.949268954557425840e-03, +-2.947684012344662513e-03, +-2.946094359913300782e-03, +-2.944500000076324866e-03, +-2.942900935654179598e-03, +-2.941297169474858461e-03, +-2.939688704373783022e-03, +-2.938075543193816811e-03, +-2.936457688785554590e-03, +-2.934835144006839227e-03, +-2.933207911723046627e-03, +-2.931575994807091804e-03, +-2.929939396139341710e-03, +-2.928298118607559290e-03, +-2.926652165107043561e-03, +-2.925001538540521629e-03, +-2.923346241818199423e-03, +-2.921686277857638535e-03, +-2.920021649583923618e-03, +-2.918352359929588229e-03, +-2.916678411834485590e-03, +-2.914999808246001092e-03, +-2.913316552118938672e-03, +-2.911628646415385067e-03, +-2.909936094104992148e-03, +-2.908238898164770044e-03, +-2.906537061579044217e-03, +-2.904830587339662755e-03, +-2.903119478445728360e-03, +-2.901403737903830802e-03, +-2.899683368727923750e-03, +-2.897958373939247580e-03, +-2.896228756566501979e-03, +-2.894494519645754004e-03, +-2.892755666220314919e-03, +-2.891012199340945322e-03, +-2.889264122065787494e-03, +-2.887511437460167640e-03, +-2.885754148596894261e-03, +-2.883992258556075574e-03, +-2.882225770425050557e-03, +-2.880454687298627473e-03, +-2.878679012278733892e-03, +-2.876898748474859911e-03, +-2.875113899003593678e-03, +-2.873324466988801812e-03, +-2.871530455561876593e-03, +-2.869731867861268892e-03, +-2.867928707032747944e-03, +-2.866120976229429972e-03, +-2.864308678611714870e-03, +-2.862491817347132678e-03, +-2.860670395610596418e-03, +-2.858844416584236867e-03, +-2.857013883457474972e-03, +-2.855178799426844483e-03, +-2.853339167696231776e-03, +-2.851494991476780875e-03, +-2.849646273986747302e-03, +-2.847793018451589154e-03, +-2.845935228104208656e-03, +-2.844072906184450401e-03, +-2.842206055939535455e-03, +-2.840334680623746513e-03, +-2.838458783498669456e-03, +-2.836578367833078422e-03, +-2.834693436902805709e-03, +-2.832803993990981595e-03, +-2.830910042387903367e-03, +-2.829011585390902618e-03, +-2.827108626304607186e-03, +-2.825201168440782430e-03, +-2.823289215118232783e-03, +-2.821372769663013820e-03, +-2.819451835408304328e-03, +-2.817526415694326936e-03, +-2.815596513868549779e-03, +-2.813662133285414584e-03, +-2.811723277306607711e-03, +-2.809779949300900571e-03, +-2.807832152644009534e-03, +-2.805879890719040464e-03, +-2.803923166915926225e-03, +-2.801961984631726795e-03, +-2.799996347270676533e-03, +-2.798026258244056680e-03, +-2.796051720970111655e-03, +-2.794072738874252455e-03, +-2.792089315388948233e-03, +-2.790101453953601398e-03, +-2.788109158014755781e-03, +-2.786112431025978241e-03, +-2.784111276447890325e-03, +-2.782105697748050738e-03, +-2.780095698401003051e-03, +-2.778081281888539374e-03, +-2.776062451699225480e-03, +-2.774039211328653207e-03, +-2.772011564279507675e-03, +-2.769979514061396419e-03, +-2.767943064190962147e-03, +-2.765902218191705793e-03, +-2.763856979594200760e-03, +-2.761807351936012688e-03, +-2.759753338761515573e-03, +-2.757694943622168021e-03, +-2.755632170076374038e-03, +-2.753565021689386751e-03, +-2.751493502033357415e-03, +-2.749417614687622077e-03, +-2.747337363238118273e-03, +-2.745252751277934503e-03, +-2.743163782406871781e-03, +-2.741070460231796214e-03, +-2.738972788366431273e-03, +-2.736870770431284929e-03, +-2.734764410053869971e-03, +-2.732653710868577362e-03, +-2.730538676516540073e-03, +-2.728419310645872897e-03, +-2.726295616911578353e-03, +-2.724167598975344145e-03, +-2.722035260505867565e-03, +-2.719898605178650789e-03, +-2.717757636675924987e-03, +-2.715612358686874967e-03, +-2.713462774907495628e-03, +-2.711308889040466193e-03, +-2.709150704795462890e-03, +-2.706988225888717469e-03, +-2.704821456043598332e-03, +-2.702650398989969987e-03, +-2.700475058464535654e-03, +-2.698295438210855483e-03, +-2.696111541979268923e-03, +-2.693923373526732525e-03, +-2.691730936617110076e-03, +-2.689534235021000860e-03, +-2.687333272515611722e-03, +-2.685128052885033759e-03, +-2.682918579920038921e-03, +-2.680704857418164146e-03, +-2.678486889183569544e-03, +-2.676264679027086108e-03, +-2.674038230766538800e-03, +-2.671807548226154579e-03, +-2.669572635236843860e-03, +-2.667333495636510596e-03, +-2.665090133269392217e-03, +-2.662842551986630349e-03, +-2.660590755645847547e-03, +-2.658334748111466049e-03, +-2.656074533254567261e-03, +-2.653810114952722191e-03, +-2.651541497090296323e-03, +-2.649268683558275717e-03, +-2.646991678254133427e-03, +-2.644710485082108365e-03, +-2.642425107953052642e-03, +-2.640135550784269806e-03, +-2.637841817499811913e-03, +-2.635543912030331205e-03, +-2.633241838312904044e-03, +-2.630935600291397797e-03, +-2.628625201916041064e-03, +-2.626310647143779726e-03, +-2.623991939938121257e-03, +-2.621669084268977296e-03, +-2.619342084112946407e-03, +-2.617010943453171399e-03, +-2.614675666279175827e-03, +-2.612336256587157162e-03, +-2.609992718379822857e-03, +-2.607645055666255041e-03, +-2.605293272462185471e-03, +-2.602937372789831168e-03, +-2.600577360677770386e-03, +-2.598213240161252255e-03, +-2.595845015281740120e-03, +-2.593472690087546013e-03, +-2.591096268633127225e-03, +-2.588715754979397255e-03, +-2.586331153194019843e-03, +-2.583942467350803553e-03, +-2.581549701530041780e-03, +-2.579152859818553949e-03, +-2.576751946309522451e-03, +-2.574346965102618408e-03, +-2.571937920303755346e-03, +-2.569524816025381929e-03, +-2.567107656386372234e-03, +-2.564686445511799376e-03, +-2.562261187533306731e-03, +-2.559831886588885465e-03, +-2.557398546822785192e-03, +-2.554961172385572521e-03, +-2.552519767434487108e-03, +-2.550074336132726084e-03, +-2.547624882650096744e-03, +-2.545171411162523885e-03, +-2.542713925852422771e-03, +-2.540252430908498341e-03, +-2.537786930525645461e-03, +-2.535317428905171835e-03, +-2.532843930254728183e-03, +-2.530366438788052372e-03, +-2.527884958725346281e-03, +-2.525399494293078043e-03, +-2.522910049723816380e-03, +-2.520416629256563672e-03, +-2.517919237136550820e-03, +-2.515417877615110185e-03, +-2.512912554949959208e-03, +-2.510403273405074649e-03, +-2.507890037250448418e-03, +-2.505372850762539044e-03, +-2.502851718223714824e-03, +-2.500326643922968529e-03, +-2.497797632155105557e-03, +-2.495264687221214906e-03, +-2.492727813428644457e-03, +-2.490187015090942427e-03, +-2.487642296527626650e-03, +-2.485093662064554940e-03, +-2.482541116033676158e-03, +-2.479984662773135600e-03, +-2.477424306627052514e-03, +-2.474860051945824112e-03, +-2.472291903085989395e-03, +-2.469719864410082136e-03, +-2.467143940286670774e-03, +-2.464564135090778225e-03, +-2.461980453203163697e-03, +-2.459392899010744669e-03, +-2.456801476906606864e-03, +-2.454206191289865033e-03, +-2.451607046565746229e-03, +-2.449004047145354312e-03, +-2.446397197446012126e-03, +-2.443786501891092363e-03, +-2.441171964909809398e-03, +-2.438553590937583143e-03, +-2.435931384415856039e-03, +-2.433305349791887052e-03, +-2.430675491519134184e-03, +-2.428041814057020284e-03, +-2.425404321870810748e-03, +-2.422763019431907125e-03, +-2.420117911217671038e-03, +-2.417469001711270229e-03, +-2.414816295402065407e-03, +-2.412159796785113240e-03, +-2.409499510361598311e-03, +-2.406835440638633618e-03, +-2.404167592129085804e-03, +-2.401495969351909090e-03, +-2.398820576831982646e-03, +-2.396141419099887676e-03, +-2.393458500692293833e-03, +-2.390771826151753213e-03, +-2.388081400026524290e-03, +-2.385387226870916248e-03, +-2.382689311245018374e-03, +-2.379987657714876560e-03, +-2.377282270852234831e-03, +-2.374573155234629019e-03, +-2.371860315445789222e-03, +-2.369143756074910349e-03, +-2.366423481717060649e-03, +-2.363699496973246765e-03, +-2.360971806450265845e-03, +-2.358240414760536408e-03, +-2.355505326522450496e-03, +-2.352766546360107389e-03, +-2.350024078903444145e-03, +-2.347277928787975393e-03, +-2.344528100655157623e-03, +-2.341774599152192729e-03, +-2.339017428931900074e-03, +-2.336256594652779805e-03, +-2.333492100979396664e-03, +-2.330723952581698240e-03, +-2.327952154135315942e-03, +-2.325176710321957482e-03, +-2.322397625828599363e-03, +-2.319614905348209386e-03, +-2.316828553579165090e-03, +-2.314038575225727326e-03, +-2.311244974997799136e-03, +-2.308447757610767020e-03, +-2.305646927785825334e-03, +-2.302842490249821898e-03, +-2.300034449735051129e-03, +-2.297222810979605324e-03, +-2.294407578727191213e-03, +-2.291588757726938270e-03, +-2.288766352733758239e-03, +-2.285940368508148669e-03, +-2.283110809816009477e-03, +-2.280277681429054935e-03, +-2.277440988124324051e-03, +-2.274600734684592129e-03, +-2.271756925898191226e-03, +-2.268909566558794180e-03, +-2.266058661465802752e-03, +-2.263204215424153339e-03, +-2.260346233244099699e-03, +-2.257484719741595022e-03, +-2.254619679738089841e-03, +-2.251751118060343372e-03, +-2.248879039540786946e-03, +-2.246003449017269001e-03, +-2.243124351333161334e-03, +-2.240241751337113205e-03, +-2.237355653883418231e-03, +-2.234466063831800145e-03, +-2.231572986047306983e-03, +-2.228676425400340135e-03, +-2.225776386767116220e-03, +-2.222872875028858702e-03, +-2.219965895072278407e-03, +-2.217055451789598248e-03, +-2.214141550078359798e-03, +-2.211224194841564673e-03, +-2.208303390987373122e-03, +-2.205379143429511257e-03, +-2.202451457087048134e-03, +-2.199520336884223590e-03, +-2.196585787750787375e-03, +-2.193647814621833923e-03, +-2.190706422437568596e-03, +-2.187761616143722287e-03, +-2.184813400691313322e-03, +-2.181861781036473127e-03, +-2.178906762140873400e-03, +-2.175948348971199625e-03, +-2.172986546499615108e-03, +-2.170021359703545004e-03, +-2.167052793565462081e-03, +-2.164080853073290910e-03, +-2.161105543220181481e-03, +-2.158126869004332697e-03, +-2.155144835429349294e-03, +-2.152159447504051453e-03, +-2.149170710242270538e-03, +-2.146178628663214256e-03, +-2.143183207791297517e-03, +-2.140184452655909120e-03, +-2.137182368291802061e-03, +-2.134176959738819015e-03, +-2.131168232042046293e-03, +-2.128156190251559270e-03, +-2.125140839422508254e-03, +-2.122122184615577323e-03, +-2.119100230896157292e-03, +-2.116074983334840544e-03, +-2.113046447007427102e-03, +-2.110014626994830955e-03, +-2.106979528382840229e-03, +-2.103941156262523551e-03, +-2.100899515729959862e-03, +-2.097854611886341199e-03, +-2.094806449837719430e-03, +-2.091755034695383549e-03, +-2.088700371575658021e-03, +-2.085642465599773978e-03, +-2.082581321893884826e-03, +-2.079516945589579297e-03, +-2.076449341822964208e-03, +-2.073378515735478048e-03, +-2.070304472473264747e-03, +-2.067227217187660258e-03, +-2.064146755034951437e-03, +-2.061063091176193029e-03, +-2.057976230777572822e-03, +-2.054886179010235146e-03, +-2.051792941050047548e-03, +-2.048696522077998045e-03, +-2.045596927279993028e-03, +-2.042494161846634352e-03, +-2.039388230973635668e-03, +-2.036279139861589971e-03, +-2.033166893715768371e-03, +-2.030051497746508237e-03, +-2.026932957169026717e-03, +-2.023811277203167464e-03, +-2.020686463073910651e-03, +-2.017558520010712467e-03, +-2.014427453248359475e-03, +-2.011293268026010609e-03, +-2.008155969587728865e-03, +-2.005015563182514695e-03, +-2.001872054064149451e-03, +-1.998725447490990684e-03, +-1.995575748726382843e-03, +-1.992422963038439129e-03, +-1.989267095699817720e-03, +-1.986108151988126395e-03, +-1.982946137185647578e-03, +-1.979781056579471045e-03, +-1.976612915461253665e-03, +-1.973441719127306138e-03, +-1.970267472879057898e-03, +-1.967090182022215774e-03, +-1.963909851867244941e-03, +-1.960726487729414890e-03, +-1.957540094928681470e-03, +-1.954350678789433179e-03, +-1.951158244640936344e-03, +-1.947962797817006384e-03, +-1.944764343656188877e-03, +-1.941562887501422155e-03, +-1.938358434700479006e-03, +-1.935150990605735526e-03, +-1.931940560573947550e-03, +-1.928727149966686944e-03, +-1.925510764150089628e-03, +-1.922291408494663460e-03, +-1.919069088375667054e-03, +-1.915843809172936094e-03, +-1.912615576270631579e-03, +-1.909384395057719258e-03, +-1.906150270927417555e-03, +-1.902913209277672449e-03, +-1.899673215510938248e-03, +-1.896430295033958583e-03, +-1.893184453258167990e-03, +-1.889935695599491774e-03, +-1.886684027478109432e-03, +-1.883429454318874454e-03, +-1.880171981551102692e-03, +-1.876911614608329061e-03, +-1.873648358928745993e-03, +-1.870382219954963825e-03, +-1.867113203133811093e-03, +-1.863841313916789460e-03, +-1.860566557759461359e-03, +-1.857288940122271389e-03, +-1.854008466469611724e-03, +-1.850725142270253634e-03, +-1.847438972997760996e-03, +-1.844149964129611005e-03, +-1.840858121147709173e-03, +-1.837563449538437248e-03, +-1.834265954792496656e-03, +-1.830965642404695998e-03, +-1.827662517874368469e-03, +-1.824356586705071529e-03, +-1.821047854404725689e-03, +-1.817736326485313095e-03, +-1.814422008463307959e-03, +-1.811104905859442591e-03, +-1.807785024198567533e-03, +-1.804462369009685388e-03, +-1.801136945826482079e-03, +-1.797808760186362558e-03, +-1.794477817631307329e-03, +-1.791144123707213032e-03, +-1.787807683964390531e-03, +-1.784468503957342645e-03, +-1.781126589244528451e-03, +-1.777781945388805847e-03, +-1.774434577957183928e-03, +-1.771084492520603538e-03, +-1.767731694654376589e-03, +-1.764376189937937999e-03, +-1.761017983954631235e-03, +-1.757657082292140042e-03, +-1.754293490542243629e-03, +-1.750927214300595711e-03, +-1.747558259167250345e-03, +-1.744186630746015314e-03, +-1.740812334645008537e-03, +-1.737435376476405237e-03, +-1.734055761856128069e-03, +-1.730673496404655076e-03, +-1.727288585746058645e-03, +-1.723901035508503378e-03, +-1.720510851324318947e-03, +-1.717118038829826407e-03, +-1.713722603665129157e-03, +-1.710324551474531017e-03, +-1.706923887906319813e-03, +-1.703520618612508041e-03, +-1.700114749249300155e-03, +-1.696706285476777282e-03, +-1.693295232959020607e-03, +-1.689881597363894960e-03, +-1.686465384363108021e-03, +-1.683046599632724441e-03, +-1.679625248852272034e-03, +-1.676201337705217299e-03, +-1.672774871879076667e-03, +-1.669345857065166047e-03, +-1.665914298958724856e-03, +-1.662480203258627845e-03, +-1.659043575667819423e-03, +-1.655604421893064077e-03, +-1.652162747644743846e-03, +-1.648718558637270312e-03, +-1.645271860588862342e-03, +-1.641822659221382806e-03, +-1.638370960260405150e-03, +-1.634916769435734024e-03, +-1.631460092480417796e-03, +-1.628000935131624152e-03, +-1.624539303129985237e-03, +-1.621075202220086196e-03, +-1.617608638150241831e-03, +-1.614139616672272820e-03, +-1.610668143541925520e-03, +-1.607194224518643634e-03, +-1.603717865365341831e-03, +-1.600239071848843760e-03, +-1.596757849739645916e-03, +-1.593274204811668269e-03, +-1.589788142842725894e-03, +-1.586299669614271365e-03, +-1.582808790911157748e-03, +-1.579315512522104807e-03, +-1.575819840239429687e-03, +-1.572321779858830947e-03, +-1.568821337179921328e-03, +-1.565318518005493539e-03, +-1.561813328142476085e-03, +-1.558305773400888317e-03, +-1.554795859594386865e-03, +-1.551283592540329392e-03, +-1.547768978059614348e-03, +-1.544252021976437461e-03, +-1.540732730118739508e-03, +-1.537211108317972129e-03, +-1.533687162408856920e-03, +-1.530160898229833205e-03, +-1.526632321622737980e-03, +-1.523101438432973966e-03, +-1.519568254509229667e-03, +-1.516032775703578033e-03, +-1.512495007871992756e-03, +-1.508954956873417375e-03, +-1.505412628570214567e-03, +-1.501868028828629758e-03, +-1.498321163517758519e-03, +-1.494772038510485930e-03, +-1.491220659682767095e-03, +-1.487667032914155802e-03, +-1.484111164087583562e-03, +-1.480553059089092681e-03, +-1.476992723808300077e-03, +-1.473430164138166566e-03, +-1.469865385974741421e-03, +-1.466298395217612753e-03, +-1.462729197769692185e-03, +-1.459157799536931659e-03, +-1.455584206428823472e-03, +-1.452008424358117080e-03, +-1.448430459240603345e-03, +-1.444850316995649258e-03, +-1.441268003545538318e-03, +-1.437683524816035395e-03, +-1.434096886736134545e-03, +-1.430508095237806180e-03, +-1.426917156256473675e-03, +-1.423324075730739938e-03, +-1.419728859602173389e-03, +-1.416131513815757463e-03, +-1.412532044319637133e-03, +-1.408930457064880380e-03, +-1.405326758005946133e-03, +-1.401720953100423417e-03, +-1.398113048308797591e-03, +-1.394503049594993539e-03, +-1.390890962925638843e-03, +-1.387276794271028726e-03, +-1.383660549604058976e-03, +-1.380042234900709722e-03, +-1.376421856140511634e-03, +-1.372799419305578824e-03, +-1.369174930381144217e-03, +-1.365548395355650410e-03, +-1.361919820220490332e-03, +-1.358289210970149707e-03, +-1.354656573601889600e-03, +-1.351021914116212622e-03, +-1.347385238516616386e-03, +-1.343746552809327440e-03, +-1.340105863003790898e-03, +-1.336463175112410874e-03, +-1.332818495150387859e-03, +-1.329171829135774446e-03, +-1.325523183090045187e-03, +-1.321872563037023015e-03, +-1.318219975003855895e-03, +-1.314565425020258315e-03, +-1.310908919119092419e-03, +-1.307250463336091318e-03, +-1.303590063709622084e-03, +-1.299927726281152390e-03, +-1.296263457095007217e-03, +-1.292597262198106039e-03, +-1.288929147640443997e-03, +-1.285259119474839928e-03, +-1.281587183756676589e-03, +-1.277913346544389201e-03, +-1.274237613899199817e-03, +-1.270559991884868392e-03, +-1.266880486568253746e-03, +-1.263199104018649602e-03, +-1.259515850308352055e-03, +-1.255830731512390039e-03, +-1.252143753708201369e-03, +-1.248454922976521570e-03, +-1.244764245400306613e-03, +-1.241071727065288025e-03, +-1.237377374060060495e-03, +-1.233681192475900596e-03, +-1.229983188406510693e-03, +-1.226283367948497946e-03, +-1.222581737201039074e-03, +-1.218878302266039300e-03, +-1.215173069247784754e-03, +-1.211466044253428631e-03, +-1.207757233392745726e-03, +-1.204046642777931208e-03, +-1.200334278523705785e-03, +-1.196620146747854338e-03, +-1.192904253570243201e-03, +-1.189186605113385026e-03, +-1.185467207502503405e-03, +-1.181746066865281986e-03, +-1.178023189332021246e-03, +-1.174298581035288511e-03, +-1.170572248110419511e-03, +-1.166844196695237786e-03, +-1.163114432929823099e-03, +-1.159382962956973092e-03, +-1.155649792921965196e-03, +-1.151914928972278202e-03, +-1.148178377258099025e-03, +-1.144440143932050130e-03, +-1.140700235148937999e-03, +-1.136958657066235168e-03, +-1.133215415843822618e-03, +-1.129470517643738027e-03, +-1.125723968630737166e-03, +-1.121975774971620829e-03, +-1.118225942835808159e-03, +-1.114474478395085545e-03, +-1.110721387823327983e-03, +-1.106966677297006050e-03, +-1.103210352994920488e-03, +-1.099452421097932894e-03, +-1.095692887789465097e-03, +-1.091931759255245458e-03, +-1.088169041683034353e-03, +-1.084404741263114659e-03, +-1.080638864187962378e-03, +-1.076871416652392137e-03, +-1.073102404853297845e-03, +-1.069331834989728156e-03, +-1.065559713263457622e-03, +-1.061786045877977742e-03, +-1.058010839039072015e-03, +-1.054234098954886633e-03, +-1.050455831835751374e-03, +-1.046676043893923725e-03, +-1.042894741344079597e-03, +-1.039111930402960302e-03, +-1.035327617289544949e-03, +-1.031541808224693086e-03, +-1.027754509431636713e-03, +-1.023965727135730478e-03, +-1.020175467564254793e-03, +-1.016383736946514923e-03, +-1.012590541514391766e-03, +-1.008795887501339611e-03, +-1.004999781142881842e-03, +-1.001202228677094486e-03, +-9.974032363435055351e-04, +-9.936028103841047700e-04, +-9.898009570425605336e-04, +-9.859976825648082352e-04, +-9.821929931987914437e-04, +-9.783868951941836808e-04, +-9.745793948028988636e-04, +-9.707704982788226394e-04, +-9.669602118775449126e-04, +-9.631485418568626984e-04, +-9.593354944765132997e-04, +-9.555210759979136659e-04, +-9.517052926846488251e-04, +-9.478881508022140613e-04, +-9.440696566177609944e-04, +-9.402498164006524743e-04, +-9.364286364218050128e-04, +-9.326061229542569053e-04, +-9.287822822728944699e-04, +-9.249571206542118963e-04, +-9.211306443767852594e-04, +-9.173028597210220684e-04, +-9.134737729688952035e-04, +-9.096433904044342765e-04, +-9.058117183134709515e-04, +-9.019787629833627991e-04, +-8.981445307035022200e-04, +-8.943090277649628876e-04, +-8.904722604606581495e-04, +-8.866342350850752894e-04, +-8.827949579343499038e-04, +-8.789544353068610202e-04, +-8.751126735021822400e-04, +-8.712696788215936990e-04, +-8.674254575685832937e-04, +-8.635800160478070402e-04, +-8.597333605656829999e-04, +-8.558854974304588251e-04, +-8.520364329519506839e-04, +-8.481861734417033959e-04, +-8.443347252126360072e-04, +-8.404820945795433420e-04, +-8.366282878588375289e-04, +-8.327733113682680597e-04, +-8.289171714274327744e-04, +-8.250598743575122311e-04, +-8.212014264809990895e-04, +-8.173418341222008551e-04, +-8.134811036069727322e-04, +-8.096192412624573067e-04, +-8.057562534176592817e-04, +-8.018921464027653576e-04, +-7.980269265497274243e-04, +-7.941606001919890171e-04, +-7.902931736642251079e-04, +-7.864246533028476692e-04, +-7.825550454457320211e-04, +-7.786843564319532616e-04, +-7.748125926022853254e-04, +-7.709397602989429433e-04, +-7.670658658653037613e-04, +-7.631909156464167232e-04, +-7.593149159887399103e-04, +-7.554378732398594077e-04, +-7.515597937490093965e-04, +-7.476806838667069939e-04, +-7.438005499449169442e-04, +-7.399193983367859887e-04, +-7.360372353967142064e-04, +-7.321540674809521925e-04, +-7.282699009465530690e-04, +-7.243847421519652172e-04, +-7.204985974571102327e-04, +-7.166114732231993693e-04, +-7.127233758124654163e-04, +-7.088343115886686953e-04, +-7.049442869167374306e-04, +-7.010533081629399203e-04, +-6.971613816945171002e-04, +-6.932685138802028527e-04, +-6.893747110899431981e-04, +-6.854799796947179434e-04, +-6.815843260666169020e-04, +-6.776877565794350118e-04, +-6.737902776075357664e-04, +-6.698918955268806652e-04, +-6.659926167142404558e-04, +-6.620924475477853741e-04, +-6.581913944068235262e-04, +-6.542894636715238747e-04, +-6.503866617234270063e-04, +-6.464829949451790687e-04, +-6.425784697202550824e-04, +-6.386730924334719844e-04, +-6.347668694707162777e-04, +-6.308598072186788345e-04, +-6.269519120653550392e-04, +-6.230431903997881576e-04, +-6.191336486117792045e-04, +-6.152232930924177688e-04, +-6.113121302337973023e-04, +-6.074001664287497068e-04, +-6.034874080714413202e-04, +-5.995738615565816658e-04, +-5.956595332804527935e-04, +-5.917444296397766142e-04, +-5.878285570323016698e-04, +-5.839119218568895441e-04, +-5.799945305133238265e-04, +-5.760763894020457833e-04, +-5.721575049246549341e-04, +-5.682378834836519874e-04, +-5.643175314821530448e-04, +-5.603964553244122947e-04, +-5.564746614154553357e-04, +-5.525521561612505884e-04, +-5.486289459684302221e-04, +-5.447050372443703855e-04, +-5.407804363977922885e-04, +-5.368551498377029368e-04, +-5.329291839739962134e-04, +-5.290025452175266046e-04, +-5.250752399799333420e-04, +-5.211472746733551492e-04, +-5.172186557109535862e-04, +-5.132893895065509257e-04, +-5.093594824747912659e-04, +-5.054289410307828516e-04, +-5.014977715906153476e-04, +-4.975659805710782712e-04, +-4.936335743894857851e-04, +-4.897005594637451106e-04, +-4.857669422129670418e-04, +-4.818327290563083429e-04, +-4.778979264139317012e-04, +-4.739625407066427897e-04, +-4.700265783556143383e-04, +-4.660900457829920940e-04, +-4.621529494111832051e-04, +-4.582152956634587119e-04, +-4.542770909636777263e-04, +-4.503383417360176818e-04, +-4.463990544054874865e-04, +-4.424592353976575026e-04, +-4.385188911383782503e-04, +-4.345780280543077635e-04, +-4.306366525726247098e-04, +-4.266947711207670440e-04, +-4.227523901269395227e-04, +-4.188095160198428710e-04, +-4.148661552284009968e-04, +-4.109223141823646749e-04, +-4.069779993115072315e-04, +-4.030332170466766539e-04, +-3.990879738186297481e-04, +-3.951422760586508929e-04, +-3.911961301986199651e-04, +-3.872495426708298140e-04, +-3.833025199077102238e-04, +-3.793550683423493062e-04, +-3.754071944082104694e-04, +-3.714589045388693367e-04, +-3.675102051685227790e-04, +-3.635611027316276050e-04, +-3.596116036630705092e-04, +-3.556617143978012870e-04, +-3.517114413713505407e-04, +-3.477607910195587375e-04, +-3.438097697783862035e-04, +-3.398583840839917818e-04, +-3.359066403733385227e-04, +-3.319545450830389539e-04, +-3.280021046504019862e-04, +-3.240493255126275138e-04, +-3.200962141074142181e-04, +-3.161427768726861862e-04, +-3.121890202463138372e-04, +-3.082349506666365074e-04, +-3.042805745721852747e-04, +-3.003258984014108230e-04, +-2.963709285931949151e-04, +-2.924156715865841669e-04, +-2.884601338205111361e-04, +-2.845043217343110531e-04, +-2.805482417674496319e-04, +-2.765919003592464363e-04, +-2.726353039494841470e-04, +-2.686784589776887054e-04, +-2.647213718837400451e-04, +-2.607640491075934519e-04, +-2.568064970889205839e-04, +-2.528487222680637870e-04, +-2.488907310848848344e-04, +-2.449325299793670384e-04, +-2.409741253916958606e-04, +-2.370155237620714538e-04, +-2.330567315304322713e-04, +-2.290977551369765685e-04, +-2.251386010218833561e-04, +-2.211792756250414310e-04, +-2.172197853865648061e-04, +-2.132601367464331073e-04, +-2.093003361446525235e-04, +-2.053403900209868431e-04, +-2.013803048150276563e-04, +-1.974200869668098289e-04, +-1.934597429157354595e-04, +-1.894992791011853152e-04, +-1.855387019625943999e-04, +-1.815780179391771369e-04, +-1.776172334700944710e-04, +-1.736563549940885469e-04, +-1.696953889500039936e-04, +-1.657343417765114256e-04, +-1.617732199118319199e-04, +-1.578120297942564305e-04, +-1.538507778618713226e-04, +-1.498894705523705611e-04, +-1.459281143031334487e-04, +-1.419667155518325647e-04, +-1.380052807352756745e-04, +-1.340438162904543970e-04, +-1.300823286537392388e-04, +-1.261208242614875337e-04, +-1.221593095497670520e-04, +-1.181977909540825512e-04, +-1.142362749098932119e-04, +-1.102747678523382667e-04, +-1.063132762159619784e-04, +-1.023518064352319027e-04, +-9.839036494426444941e-05, +-9.442895817654921016e-05, +-9.046759256546833231e-05, +-8.650627454402165994e-05, +-8.254501054455035721e-05, +-7.858380699925716277e-05, +-7.462267033993127345e-05, +-7.066160699767133060e-05, +-6.670062340349578530e-05, +-6.273972598753485596e-05, +-5.877892118008234002e-05, +-5.481821541043547017e-05, +-5.085761510750303653e-05, +-4.689712669988396429e-05, +-4.293675661567933327e-05, +-3.897651128221760734e-05, +-3.501639712657398745e-05, +-3.105642057529484822e-05, +-2.709658805412279095e-05, +-2.313690598851549541e-05, +-1.917738080328269503e-05, +-1.521801892275200734e-05, +-1.125882677049370756e-05, +-7.299810769398584450e-06, +-3.340977342285773289e-06, + 6.176670891674284233e-07, + 4.576116103817740618e-06, + 8.534363280978056845e-06, + 1.249240220069273866e-05, + 1.645022644357141007e-05, + 2.040782959115255483e-05, + 2.436520522538404801e-05, + 2.832234692889867554e-05, + 3.227924828528904382e-05, + 3.623590287858848404e-05, + 4.019230429354646663e-05, + 4.414844611590335846e-05, + 4.810432193187125596e-05, + 5.205992532840994849e-05, + 5.601524989350070650e-05, + 5.997028921562833780e-05, + 6.392503688405606671e-05, + 6.787948648909972876e-05, + 7.183363162152176949e-05, + 7.578746587324689237e-05, + 7.974098283675458713e-05, + 8.369417610535455777e-05, + 8.764703927346155423e-05, + 9.159956593607654102e-05, + 9.555174968906203037e-05, + 9.950358412941569415e-05, + 1.034550628547540804e-04, + 1.074061794635841518e-04, + 1.113569275555817629e-04, + 1.153073007310700775e-04, + 1.192572925912962302e-04, + 1.232068967387052092e-04, + 1.271561067763333672e-04, + 1.311049163086120187e-04, + 1.350533189403211167e-04, + 1.390013082777437792e-04, + 1.429488779281483390e-04, + 1.468960214992703114e-04, + 1.508427326003803878e-04, + 1.547890048416773366e-04, + 1.587348318342099950e-04, + 1.626802071901529273e-04, + 1.666251245226402981e-04, + 1.705695774461272909e-04, + 1.745135595758737842e-04, + 1.784570645282173261e-04, + 1.824000859208491456e-04, + 1.863426173722945755e-04, + 1.902846525021887648e-04, + 1.942261849314621863e-04, + 1.981672082822633866e-04, + 2.021077161773537304e-04, + 2.060477022412600433e-04, + 2.099871600992304975e-04, + 2.139260833780370842e-04, + 2.178644657053675662e-04, + 2.218023007101039277e-04, + 2.257395820225920155e-04, + 2.296763032741265705e-04, + 2.336124580972256113e-04, + 2.375480401259037354e-04, + 2.414830429951546288e-04, + 2.454174603412248817e-04, + 2.493512858018898364e-04, + 2.532845130159344714e-04, + 2.572171356234277586e-04, + 2.611491472659979154e-04, + 2.650805415862244924e-04, + 2.690113122283561693e-04, + 2.729414528377014878e-04, + 2.768709570609060276e-04, + 2.807998185463107354e-04, + 2.847280309429993991e-04, + 2.886555879019496364e-04, + 2.925824830754250919e-04, + 2.965087101169043668e-04, + 3.004342626812602922e-04, + 3.043591344250370511e-04, + 3.082833190059341521e-04, + 3.122068100831657347e-04, + 3.161296013172976670e-04, + 3.200516863706037067e-04, + 3.239730589065574983e-04, + 3.278937125900995573e-04, + 3.318136410878223439e-04, + 3.357328380678988684e-04, + 3.396512971994754835e-04, + 3.435690121537301198e-04, + 3.474859766032761918e-04, + 3.514021842220803609e-04, + 3.553176286857393320e-04, + 3.592323036713109896e-04, + 3.631462028576750030e-04, + 3.670593199250222756e-04, + 3.709716485551230679e-04, + 3.748831824316013013e-04, + 3.787939152394203201e-04, + 3.827038406651549186e-04, + 3.866129523972633127e-04, + 3.905212441255746379e-04, + 3.944287095415590239e-04, + 3.983353423385995124e-04, + 4.022411362114843795e-04, + 4.061460848566689165e-04, + 4.100501819725573221e-04, + 4.139534212588948450e-04, + 4.178557964174792368e-04, + 4.217573011515617304e-04, + 4.256579291661134832e-04, + 4.295576741681033490e-04, + 4.334565298659828281e-04, + 4.373544899699537570e-04, + 4.412515481922466769e-04, + 4.451476982466025310e-04, + 4.490429338485498953e-04, + 4.529372487156662708e-04, + 4.568306365670802725e-04, + 4.607230911237293982e-04, + 4.646146061086386687e-04, + 4.685051752463194373e-04, + 4.723947922635642733e-04, + 4.762834508884095422e-04, + 4.801711448512805411e-04, + 4.840578678843899824e-04, + 4.879436137216602572e-04, + 4.918283760989118148e-04, + 4.957121487541280881e-04, + 4.995949254269524235e-04, + 5.034766998590349714e-04, + 5.073574657938765067e-04, + 5.112372169771865413e-04, + 5.151159471563664842e-04, + 5.189936500807848128e-04, + 5.228703195019595434e-04, + 5.267459491734834218e-04, + 5.306205328504204561e-04, + 5.344940642903620379e-04, + 5.383665372529195360e-04, + 5.422379454992068068e-04, + 5.461082827929814249e-04, + 5.499775428996141495e-04, + 5.538457195868756212e-04, + 5.577128066243486164e-04, + 5.615787977836871709e-04, + 5.654436868388956544e-04, + 5.693074675658069432e-04, + 5.731701337423737459e-04, + 5.770316791489083202e-04, + 5.808920975676039062e-04, + 5.847513827827829002e-04, + 5.886095285811721338e-04, + 5.924665287514000204e-04, + 5.963223770842602340e-04, + 6.001770673729799402e-04, + 6.040305934126272798e-04, + 6.078829490008133898e-04, + 6.117341279370942493e-04, + 6.155841240232455243e-04, + 6.194329310635261375e-04, + 6.232805428641688015e-04, + 6.271269532336600687e-04, + 6.309721559829920825e-04, + 6.348161449251730603e-04, + 6.386589138754792620e-04, + 6.425004566517356899e-04, + 6.463407670738052129e-04, + 6.501798389639386550e-04, + 6.540176661466198631e-04, + 6.578542424488276500e-04, + 6.616895616999655385e-04, + 6.655236177312624140e-04, + 6.693564043768213817e-04, + 6.731879154731095416e-04, + 6.770181448584528579e-04, + 6.808470863740780782e-04, + 6.846747338635211918e-04, + 6.885010811725524038e-04, + 6.923261221494369936e-04, + 6.961498506447865624e-04, + 6.999722605118996899e-04, + 7.037933456062624420e-04, + 7.076130997858131330e-04, + 7.114315169112156532e-04, + 7.152485908453476166e-04, + 7.190643154535698942e-04, + 7.228786846039948451e-04, + 7.266916921669820542e-04, + 7.305033320154027694e-04, + 7.343135980249068315e-04, + 7.381224840733401332e-04, + 7.419299840414244132e-04, + 7.457360918121851232e-04, + 7.495408012712065403e-04, + 7.533441063068995651e-04, + 7.571460008100070003e-04, + 7.609464786738564948e-04, + 7.647455337946377748e-04, + 7.685431600708916584e-04, + 7.723393514037856606e-04, + 7.761341016973668291e-04, + 7.799274048580723349e-04, + 7.837192547949907656e-04, + 7.875096454201203824e-04, + 7.912985706478778674e-04, + 7.950860243954449439e-04, + 7.988720005826055286e-04, + 8.026564931320177582e-04, + 8.064394959691238924e-04, + 8.102210030215841428e-04, + 8.140010082202964745e-04, + 8.177795054988019202e-04, + 8.215564887932308045e-04, + 8.253319520424687349e-04, + 8.291058891884163767e-04, + 8.328782941755031883e-04, + 8.366491609510308966e-04, + 8.404184834650077224e-04, + 8.441862556705046492e-04, + 8.479524715231550637e-04, + 8.517171249814178922e-04, + 8.554802100067528071e-04, + 8.592417205635523563e-04, + 8.630016506185551927e-04, + 8.667599941419555382e-04, + 8.705167451064015982e-04, + 8.742718974877565627e-04, + 8.780254452645278821e-04, + 8.817773824181258501e-04, + 8.855277029331233779e-04, + 8.892764007967673447e-04, + 8.930234699992275300e-04, + 8.967689045338774227e-04, + 9.005126983967799833e-04, + 9.042548455869665013e-04, + 9.079953401066854189e-04, + 9.117341759609125977e-04, + 9.154713471576172729e-04, + 9.192068477080119621e-04, + 9.229406716260749825e-04, + 9.266728129287959146e-04, + 9.304032656364437251e-04, + 9.341320237719949590e-04, + 9.378590813618805375e-04, + 9.415844324350174576e-04, + 9.453080710238755385e-04, + 9.490299911639223096e-04, + 9.527501868935457077e-04, + 9.564686522542251634e-04, + 9.601853812907907258e-04, + 9.639003680509417851e-04, + 9.676136065854987157e-04, + 9.713250909486637356e-04, + 9.750348151975295457e-04, + 9.787427733924276840e-04, + 9.824489595967635103e-04, + 9.861533678772818352e-04, + 9.898559923039863644e-04, + 9.935568269495754796e-04, + 9.972558658904475109e-04, + 1.000953103206118086e-03, + 1.004648532979162453e-03, + 1.008342149295374636e-03, + 1.012033946244046516e-03, + 1.015723917917453695e-03, + 1.019412058411217842e-03, + 1.023098361824145578e-03, + 1.026782822258559156e-03, + 1.030465433819815297e-03, + 1.034146190616576670e-03, + 1.037825086760962379e-03, + 1.041502116368488553e-03, + 1.045177273557497833e-03, + 1.048850552450244448e-03, + 1.052521947171988683e-03, + 1.056191451851341227e-03, + 1.059859060620521858e-03, + 1.063524767614787208e-03, + 1.067188566973102529e-03, + 1.070850452837570103e-03, + 1.074510419353690103e-03, + 1.078168460670616028e-03, + 1.081824570940669202e-03, + 1.085478744319598975e-03, + 1.089130974966830362e-03, + 1.092781257044984824e-03, + 1.096429584720139171e-03, + 1.100075952162076235e-03, + 1.103720353543806085e-03, + 1.107362783041818425e-03, + 1.111003234836335004e-03, + 1.114641703110752545e-03, + 1.118278182052382394e-03, + 1.121912665851487745e-03, + 1.125545148702340086e-03, + 1.129175624802670596e-03, + 1.132804088353588177e-03, + 1.136430533559763985e-03, + 1.140054954629667787e-03, + 1.143677345775103707e-03, + 1.147297701211457202e-03, + 1.150916015157951375e-03, + 1.154532281837161245e-03, + 1.158146495475355928e-03, + 1.161758650302341205e-03, + 1.165368740551796277e-03, + 1.168976760460792600e-03, + 1.172582704270050836e-03, + 1.176186566224106302e-03, + 1.179788340571241755e-03, + 1.183388021562929455e-03, + 1.186985603454888049e-03, + 1.190581080506128691e-03, + 1.194174446979686006e-03, + 1.197765697142057781e-03, + 1.201354825263472106e-03, + 1.204941825618115279e-03, + 1.208526692483684675e-03, + 1.212109420141614484e-03, + 1.215690002877333744e-03, + 1.219268434979808163e-03, + 1.222844710741768882e-03, + 1.226418824459972468e-03, + 1.229990770434727116e-03, + 1.233560542970147224e-03, + 1.237128136374395599e-03, + 1.240693544959134854e-03, + 1.244256763040174456e-03, + 1.247817784936921907e-03, + 1.251376604972640133e-03, + 1.254933217474756045e-03, + 1.258487616774012696e-03, + 1.262039797205494933e-03, + 1.265589753108101612e-03, + 1.269137478824459292e-03, + 1.272682968701098309e-03, + 1.276226217088693689e-03, + 1.279767218341604359e-03, + 1.283305966818115360e-03, + 1.286842456880690246e-03, + 1.290376682895497725e-03, + 1.293908639232741907e-03, + 1.297438320266506824e-03, + 1.300965720375020333e-03, + 1.304490833940556531e-03, + 1.308013655348916207e-03, + 1.311534178990367283e-03, + 1.315052399259112464e-03, + 1.318568310553213784e-03, + 1.322081907274828307e-03, + 1.325593183830090600e-03, + 1.329102134629393328e-03, + 1.332608754086958775e-03, + 1.336113036621069776e-03, + 1.339614976654317138e-03, + 1.343114568613126055e-03, + 1.346611806928020441e-03, + 1.350106686033774499e-03, + 1.353599200369355908e-03, + 1.357089344377357919e-03, + 1.360577112505061874e-03, + 1.364062499203486578e-03, + 1.367545498928105169e-03, + 1.371026106138306276e-03, + 1.374504315297637091e-03, + 1.377980120874046886e-03, + 1.381453517339426874e-03, + 1.384924499169858710e-03, + 1.388393060845842606e-03, + 1.391859196851857796e-03, + 1.395322901676593254e-03, + 1.398784169813186221e-03, + 1.402242995758777025e-03, + 1.405699374014737204e-03, + 1.409153299086922991e-03, + 1.412604765485211272e-03, + 1.416053767723747872e-03, + 1.419500300321173501e-03, + 1.422944357800109191e-03, + 1.426385934687852139e-03, + 1.429825025515454786e-03, + 1.433261624818745481e-03, + 1.436695727137779661e-03, + 1.440127327016799087e-03, + 1.443556419004369748e-03, + 1.446982997653632102e-03, + 1.450407057521845922e-03, + 1.453828593170637283e-03, + 1.457247599166221902e-03, + 1.460664070078966040e-03, + 1.464078000483693114e-03, + 1.467489384959556626e-03, + 1.470898218090253319e-03, + 1.474304494463971786e-03, + 1.477708208672859260e-03, + 1.481109355313954025e-03, + 1.484507928988651774e-03, + 1.487903924302639907e-03, + 1.491297335866141474e-03, + 1.494688158293760571e-03, + 1.498076386204801958e-03, + 1.501462014222824156e-03, + 1.504845036975865609e-03, + 1.508225449096699256e-03, + 1.511603245222370223e-03, + 1.514978419994438474e-03, + 1.518350968059211693e-03, + 1.521720884067305967e-03, + 1.525088162673865879e-03, + 1.528452798538821895e-03, + 1.531814786326424812e-03, + 1.535174120705495556e-03, + 1.538530796349652213e-03, + 1.541884807936793082e-03, + 1.545236150149702963e-03, + 1.548584817675546831e-03, + 1.551930805206086679e-03, + 1.555274107437934136e-03, + 1.558614719072089032e-03, + 1.561952634814197001e-03, + 1.565287849374754400e-03, + 1.568620357468677659e-03, + 1.571950153815564796e-03, + 1.575277233139879725e-03, + 1.578601590170538747e-03, + 1.581923219641150589e-03, + 1.585242116290226742e-03, + 1.588558274860685324e-03, + 1.591871690100521777e-03, + 1.595182356761922849e-03, + 1.598490269602249750e-03, + 1.601795423383593851e-03, + 1.605097812872334755e-03, + 1.608397432840053855e-03, + 1.611694278063010221e-03, + 1.614988343322078376e-03, + 1.618279623402985078e-03, + 1.621568113096158404e-03, + 1.624853807197040000e-03, + 1.628136700505644239e-03, + 1.631416787826801308e-03, + 1.634694063970363849e-03, + 1.637968523750792365e-03, + 1.641240161987379213e-03, + 1.644508973504394973e-03, + 1.647774953131037274e-03, + 1.651038095700914929e-03, + 1.654298396053018299e-03, + 1.657555849030834796e-03, + 1.660810449483027598e-03, + 1.664062192262929325e-03, + 1.667311072228766034e-03, + 1.670557084243883602e-03, + 1.673800223176329441e-03, + 1.677040483899060446e-03, + 1.680277861290190413e-03, + 1.683512350232544861e-03, + 1.686743945613891106e-03, + 1.689972642327171792e-03, + 1.693198435270066009e-03, + 1.696421319345230204e-03, + 1.699641289460505260e-03, + 1.702858340528435981e-03, + 1.706072467466835958e-03, + 1.709283665198313993e-03, + 1.712491928650483781e-03, + 1.715697252756259467e-03, + 1.718899632453083255e-03, + 1.722099062683856091e-03, + 1.725295538396447387e-03, + 1.728489054543632351e-03, + 1.731679606083247032e-03, + 1.734867187978392147e-03, + 1.738051795197041033e-03, + 1.741233422712316773e-03, + 1.744412065502345607e-03, + 1.747587718550577861e-03, + 1.750760376845354261e-03, + 1.753930035380112584e-03, + 1.757096689153570023e-03, + 1.760260333169628424e-03, + 1.763420962436905914e-03, + 1.766578571969585829e-03, + 1.769733156786934894e-03, + 1.772884711913237741e-03, + 1.776033232378012444e-03, + 1.779178713215882369e-03, + 1.782321149466864138e-03, + 1.785460536175956280e-03, + 1.788596868393350870e-03, + 1.791730141174661430e-03, + 1.794860349580499432e-03, + 1.797987488676695703e-03, + 1.801111553534527664e-03, + 1.804232539230299316e-03, + 1.807350440845544850e-03, + 1.810465253467282570e-03, + 1.813576972187493606e-03, + 1.816685592103712372e-03, + 1.819791108318535855e-03, + 1.822893515939854334e-03, + 1.825992810081043718e-03, + 1.829088985860581953e-03, + 1.832182038402239846e-03, + 1.835271962835324571e-03, + 1.838358754294247945e-03, + 1.841442407918751937e-03, + 1.844522918854124864e-03, + 1.847600282250786135e-03, + 1.850674493264512421e-03, + 1.853745547056652107e-03, + 1.856813438793700286e-03, + 1.859878163647535549e-03, + 1.862939716795627932e-03, + 1.865998093420555802e-03, + 1.869053288710636638e-03, + 1.872105297859123427e-03, + 1.875154116065078308e-03, + 1.878199738532930008e-03, + 1.881242160472380159e-03, + 1.884281377098588053e-03, + 1.887317383632342808e-03, + 1.890350175299683683e-03, + 1.893379747332176117e-03, + 1.896406094966782705e-03, + 1.899429213446141842e-03, + 1.902449098018175674e-03, + 1.905465743936276364e-03, + 1.908479146459484983e-03, + 1.911489300852399357e-03, + 1.914496202384730408e-03, + 1.917499846332106853e-03, + 1.920500227975680549e-03, + 1.923497342601736184e-03, + 1.926491185502559288e-03, + 1.929481751975662763e-03, + 1.932469037324364113e-03, + 1.935453036857350895e-03, + 1.938433745888876528e-03, + 1.941411159738970840e-03, + 1.944385273733053665e-03, + 1.947356083202126959e-03, + 1.950323583482987955e-03, + 1.953287769917851427e-03, + 1.956248637854538126e-03, + 1.959206182646684030e-03, + 1.962160399653358270e-03, + 1.965111284239272164e-03, + 1.968058831774957898e-03, + 1.971003037636346114e-03, + 1.973943897205291970e-03, + 1.976881405869098957e-03, + 1.979815559020756122e-03, + 1.982746352059125850e-03, + 1.985673780388550955e-03, + 1.988597839419071946e-03, + 1.991518524566627396e-03, + 1.994435831252658851e-03, + 1.997349754904331146e-03, + 2.000260290954716282e-03, + 2.003167434842425664e-03, + 2.006071182011861641e-03, + 2.008971527913123827e-03, + 2.011868468002164356e-03, + 2.014761997740776613e-03, + 2.017652112596125553e-03, + 2.020538808041523558e-03, + 2.023422079556079587e-03, + 2.026301922624278509e-03, + 2.029178332736803359e-03, + 2.032051305390059157e-03, + 2.034920836086135179e-03, + 2.037786920332989703e-03, + 2.040649553644345061e-03, + 2.043508731539943508e-03, + 2.046364449545157345e-03, + 2.049216703191219634e-03, + 2.052065488015382931e-03, + 2.054910799560572768e-03, + 2.057752633375574576e-03, + 2.060590985015233172e-03, + 2.063425850040087606e-03, + 2.066257224016540724e-03, + 2.069085102517091625e-03, + 2.071909481119878129e-03, + 2.074730355409188948e-03, + 2.077547720975038686e-03, + 2.080361573413358652e-03, + 2.083171908326192454e-03, + 2.085978721321323469e-03, + 2.088782008012481269e-03, + 2.091581764019515097e-03, + 2.094377984968044323e-03, + 2.097170666489649692e-03, + 2.099959804222060241e-03, + 2.102745393808792482e-03, + 2.105527430899326903e-03, + 2.108305911149347366e-03, + 2.111080830220249741e-03, + 2.113852183779754267e-03, + 2.116619967501148347e-03, + 2.119384177064104029e-03, + 2.122144808154322829e-03, + 2.124901856463138911e-03, + 2.127655317688307082e-03, + 2.130405187533552201e-03, + 2.133151461708529713e-03, + 2.135894135928937537e-03, + 2.138633205916723803e-03, + 2.141368667399707378e-03, + 2.144100516111858458e-03, + 2.146828747793153285e-03, + 2.149553358189835225e-03, + 2.152274343054066518e-03, + 2.154991698144106092e-03, + 2.157705419224430557e-03, + 2.160415502065693872e-03, + 2.163121942444312749e-03, + 2.165824736143251179e-03, + 2.168523878951290982e-03, + 2.171219366663596894e-03, + 2.173911195081312375e-03, + 2.176599360011715299e-03, + 2.179283857268426560e-03, + 2.181964682671057917e-03, + 2.184641832045387203e-03, + 2.187315301223544811e-03, + 2.189985086043677153e-03, + 2.192651182350097584e-03, + 2.195313585993529260e-03, + 2.197972292830689678e-03, + 2.200627298724525290e-03, + 2.203278599544361994e-03, + 2.205926191165577706e-03, + 2.208570069469786672e-03, + 2.211210230345002099e-03, + 2.213846669685245409e-03, + 2.216479383391086171e-03, + 2.219108367368936938e-03, + 2.221733617531808716e-03, + 2.224355129798946239e-03, + 2.226972900095724323e-03, + 2.229586924353818295e-03, + 2.232197198511350587e-03, + 2.234803718512564600e-03, + 2.237406480308002082e-03, + 2.240005479854690479e-03, + 2.242600713115779510e-03, + 2.245192176060815687e-03, + 2.247779864665586189e-03, + 2.250363774912340041e-03, + 2.252943902789720891e-03, + 2.255520244292357184e-03, + 2.258092795421570795e-03, + 2.260661552185002764e-03, + 2.263226510596512680e-03, + 2.265787666676344347e-03, + 2.268345016451271939e-03, + 2.270898555954297716e-03, + 2.273448281224841119e-03, + 2.275994188308680215e-03, + 2.278536273258140350e-03, + 2.281074532131798383e-03, + 2.283608960994623193e-03, + 2.286139555918129639e-03, + 2.288666312980298760e-03, + 2.291189228265205248e-03, + 2.293708297863750363e-03, + 2.296223517873056084e-03, + 2.298734884396684119e-03, + 2.301242393544814142e-03, + 2.303746041433862163e-03, + 2.306245824186949327e-03, + 2.308741737933465207e-03, + 2.311233778809295911e-03, + 2.313721942956988888e-03, + 2.316206226525379525e-03, + 2.318686625669828371e-03, + 2.321163136552339534e-03, + 2.323635755341271845e-03, + 2.326104478211483712e-03, + 2.328569301344534780e-03, + 2.331030220928317302e-03, + 2.333487233157265171e-03, + 2.335940334232531300e-03, + 2.338389520361550036e-03, + 2.340834787758613086e-03, + 2.343276132644151345e-03, + 2.345713551245515085e-03, + 2.348147039796530302e-03, + 2.350576594537509990e-03, + 2.353002211715325698e-03, + 2.355423887583607025e-03, + 2.357841618402396408e-03, + 2.360255400438338209e-03, + 2.362665229964829635e-03, + 2.365071103261724532e-03, + 2.367473016615517702e-03, + 2.369870966319291561e-03, + 2.372264948672839734e-03, + 2.374654959982644507e-03, + 2.377040996561499090e-03, + 2.379423054729146430e-03, + 2.381801130811998183e-03, + 2.384175221142765221e-03, + 2.386545322061214402e-03, + 2.388911429913488562e-03, + 2.391273541052619991e-03, + 2.393631651838148792e-03, + 2.395985758636288987e-03, + 2.398335857820115425e-03, + 2.400681945769215543e-03, + 2.403024018869874545e-03, + 2.405362073515241068e-03, + 2.407696106105015367e-03, + 2.410026113045591993e-03, + 2.412352090750258856e-03, + 2.414674035638863289e-03, + 2.416991944137962967e-03, + 2.419305812681032779e-03, + 2.421615637708060629e-03, + 2.423921415665993701e-03, + 2.426223143008370692e-03, + 2.428520816195483580e-03, + 2.430814431694541984e-03, + 2.433103985979368725e-03, + 2.435389475530551611e-03, + 2.437670896835619078e-03, + 2.439948246388715363e-03, + 2.442221520690786123e-03, + 2.444490716249705497e-03, + 2.446755829580008097e-03, + 2.449016857203026483e-03, + 2.451273795647056827e-03, + 2.453526641447051869e-03, + 2.455775391144832554e-03, + 2.458020041289009101e-03, + 2.460260588435104600e-03, + 2.462497029145532031e-03, + 2.464729359989249920e-03, + 2.466957577542362983e-03, + 2.469181678387771285e-03, + 2.471401659115126867e-03, + 2.473617516321005051e-03, + 2.475829246608792986e-03, + 2.478036846588892606e-03, + 2.480240312878440479e-03, + 2.482439642101456987e-03, + 2.484634830888986408e-03, + 2.486825875878829768e-03, + 2.489012773715682317e-03, + 2.491195521051234145e-03, + 2.493374114544141991e-03, + 2.495548550859670589e-03, + 2.497718826670350997e-03, + 2.499884938655393823e-03, + 2.502046883501122913e-03, + 2.504204657900673935e-03, + 2.506358258554084156e-03, + 2.508507682168505375e-03, + 2.510652925457888211e-03, + 2.512793985143128243e-03, + 2.514930857952236455e-03, + 2.517063540620025682e-03, + 2.519192029888288852e-03, + 2.521316322505934293e-03, + 2.523436415228695606e-03, + 2.525552304819306433e-03, + 2.527663988047609746e-03, + 2.529771461690318458e-03, + 2.531874722531120801e-03, + 2.533973767360881563e-03, + 2.536068592977249164e-03, + 2.538159196185137481e-03, + 2.540245573796149053e-03, + 2.542327722629180494e-03, + 2.544405639510123694e-03, + 2.546479321271786014e-03, + 2.548548764754031241e-03, + 2.550613966803891904e-03, + 2.552674924275316441e-03, + 2.554731634029291931e-03, + 2.556784092934008892e-03, + 2.558832297864575053e-03, + 2.560876245703211374e-03, + 2.562915933339158809e-03, + 2.564951357668828359e-03, + 2.566982515595758133e-03, + 2.569009404030277686e-03, + 2.571032019890103458e-03, + 2.573050360099980987e-03, + 2.575064421591677106e-03, + 2.577074201304089228e-03, + 2.579079696183188969e-03, + 2.581080903182186078e-03, + 2.583077819261280373e-03, + 2.585070441387785339e-03, + 2.587058766536277747e-03, + 2.589042791688326173e-03, + 2.591022513832639314e-03, + 2.592997929965192190e-03, + 2.594969037088974608e-03, + 2.596935832214116065e-03, + 2.598898312358040134e-03, + 2.600856474545193420e-03, + 2.602810315807179559e-03, + 2.604759833182904074e-03, + 2.606705023718261689e-03, + 2.608645884466500187e-03, + 2.610582412487921170e-03, + 2.612514604850001056e-03, + 2.614442458627538532e-03, + 2.616365970902391307e-03, + 2.618285138763622698e-03, + 2.620199959307616556e-03, + 2.622110429637834837e-03, + 2.624016546864954211e-03, + 2.625918308106987061e-03, + 2.627815710489043825e-03, + 2.629708751143454860e-03, + 2.631597427209903146e-03, + 2.633481735835138497e-03, + 2.635361674173344448e-03, + 2.637237239385673351e-03, + 2.639108428640742944e-03, + 2.640975239114406493e-03, + 2.642837667989666062e-03, + 2.644695712456797410e-03, + 2.646549369713442363e-03, + 2.648398636964402822e-03, + 2.650243511421784305e-03, + 2.652083990304909648e-03, + 2.653920070840539748e-03, + 2.655751750262550902e-03, + 2.657579025812139509e-03, + 2.659401894737897960e-03, + 2.661220354295589126e-03, + 2.663034401748282098e-03, + 2.664844034366433290e-03, + 2.666649249427826152e-03, + 2.668450044217336985e-03, + 2.670246416027430205e-03, + 2.672038362157674787e-03, + 2.673825879915145854e-03, + 2.675608966614105924e-03, + 2.677387619576156261e-03, + 2.679161836130355707e-03, + 2.680931613612974346e-03, + 2.682696949367631856e-03, + 2.684457840745415463e-03, + 2.686214285104629278e-03, + 2.687966279810951285e-03, + 2.689713822237526589e-03, + 2.691456909764734957e-03, + 2.693195539780349982e-03, + 2.694929709679608470e-03, + 2.696659416864968448e-03, + 2.698384658746433122e-03, + 2.700105432741259880e-03, + 2.701821736274094294e-03, + 2.703533566777127119e-03, + 2.705240921689671882e-03, + 2.706943798458680533e-03, + 2.708642194538439865e-03, + 2.710336107390595370e-03, + 2.712025534484179424e-03, + 2.713710473295766548e-03, + 2.715390921309221439e-03, + 2.717066876015866370e-03, + 2.718738334914413100e-03, + 2.720405295511117271e-03, + 2.722067755319548116e-03, + 2.723725711860707291e-03, + 2.725379162663113444e-03, + 2.727028105262757109e-03, + 2.728672537202856112e-03, + 2.730312456034304867e-03, + 2.731947859315408088e-03, + 2.733578744611835695e-03, + 2.735205109496794979e-03, + 2.736826951550873615e-03, + 2.738444268362265170e-03, + 2.740057057526521910e-03, + 2.741665316646659748e-03, + 2.743269043333288783e-03, + 2.744868235204384749e-03, + 2.746462889885411748e-03, + 2.748053005009427636e-03, + 2.749638578216880621e-03, + 2.751219607155710751e-03, + 2.752796089481452258e-03, + 2.754368022857016721e-03, + 2.755935404952948066e-03, + 2.757498233447207899e-03, + 2.759056506025244892e-03, + 2.760610220380158280e-03, + 2.762159374212448931e-03, + 2.763703965230125160e-03, + 2.765243991148850188e-03, + 2.766779449691686259e-03, + 2.768310338589256847e-03, + 2.769836655579803898e-03, + 2.771358398409004813e-03, + 2.772875564830092152e-03, + 2.774388152603926051e-03, + 2.775896159498838969e-03, + 2.777399583290696833e-03, + 2.778898421763025244e-03, + 2.780392672706769215e-03, + 2.781882333920624069e-03, + 2.783367403210591350e-03, + 2.784847878390453273e-03, + 2.786323757281523785e-03, + 2.787795037712626021e-03, + 2.789261717520166457e-03, + 2.790723794548222083e-03, + 2.792181266648367799e-03, + 2.793634131679784832e-03, + 2.795082387509217371e-03, + 2.796526032011101368e-03, + 2.797965063067371552e-03, + 2.799399478567557702e-03, + 2.800829276408858814e-03, + 2.802254454496106231e-03, + 2.803675010741565020e-03, + 2.805090943065277880e-03, + 2.806502249394930270e-03, + 2.807908927665607977e-03, + 2.809310975820248583e-03, + 2.810708391809260253e-03, + 2.812101173590795828e-03, + 2.813489319130553327e-03, + 2.814872826401853146e-03, + 2.816251693385745606e-03, + 2.817625918070828812e-03, + 2.818995498453340156e-03, + 2.820360432537255633e-03, + 2.821720718334095549e-03, + 2.823076353863049424e-03, + 2.824427337151027596e-03, + 2.825773666232519847e-03, + 2.827115339149672158e-03, + 2.828452353952374751e-03, + 2.829784708698067797e-03, + 2.831112401451973438e-03, + 2.832435430286897159e-03, + 2.833753793283311923e-03, + 2.835067488529456614e-03, + 2.836376514121155198e-03, + 2.837680868161921235e-03, + 2.838980548763028137e-03, + 2.840275554043351740e-03, + 2.841565882129462681e-03, + 2.842851531155687114e-03, + 2.844132499263987441e-03, + 2.845408784604024337e-03, + 2.846680385333153710e-03, + 2.847947299616469200e-03, + 2.849209525626803918e-03, + 2.850467061544529213e-03, + 2.851719905557889480e-03, + 2.852968055862854704e-03, + 2.854211510662917495e-03, + 2.855450268169473435e-03, + 2.856684326601618973e-03, + 2.857913684186073802e-03, + 2.859138339157358665e-03, + 2.860358289757656582e-03, + 2.861573534236995422e-03, + 2.862784070853022396e-03, + 2.863989897871129387e-03, + 2.865191013564538387e-03, + 2.866387416214115011e-03, + 2.867579104108470417e-03, + 2.868766075544036762e-03, + 2.869948328824921922e-03, + 2.871125862262962833e-03, + 2.872298674177858630e-03, + 2.873466762896917381e-03, + 2.874630126755343615e-03, + 2.875788764096002832e-03, + 2.876942673269513012e-03, + 2.878091852634351300e-03, + 2.879236300556670559e-03, + 2.880376015410400416e-03, + 2.881510995577294971e-03, + 2.882641239446837381e-03, + 2.883766745416245503e-03, + 2.884887511890624982e-03, + 2.886003537282766720e-03, + 2.887114820013234918e-03, + 2.888221358510461613e-03, + 2.889323151210568003e-03, + 2.890420196557583459e-03, + 2.891512493003136307e-03, + 2.892600039006818988e-03, + 2.893682833036007214e-03, + 2.894760873565730298e-03, + 2.895834159078934829e-03, + 2.896902688066388398e-03, + 2.897966459026565540e-03, + 2.899025470465782604e-03, + 2.900079720898211203e-03, + 2.901129208845755047e-03, + 2.902173932838186116e-03, + 2.903213891413015859e-03, + 2.904249083115669535e-03, + 2.905279506499320111e-03, + 2.906305160124956349e-03, + 2.907326042561406230e-03, + 2.908342152385382483e-03, + 2.909353488181253607e-03, + 2.910360048541399923e-03, + 2.911361832065883972e-03, + 2.912358837362713764e-03, + 2.913351063047647620e-03, + 2.914338507744285676e-03, + 2.915321170084118896e-03, + 2.916299048706424979e-03, + 2.917272142258296990e-03, + 2.918240449394753945e-03, + 2.919203968778591625e-03, + 2.920162699080437654e-03, + 2.921116638978825224e-03, + 2.922065787160097253e-03, + 2.923010142318414190e-03, + 2.923949703155878047e-03, + 2.924884468382358063e-03, + 2.925814436715606492e-03, + 2.926739606881252533e-03, + 2.927659977612742919e-03, + 2.928575547651459873e-03, + 2.929486315746508609e-03, + 2.930392280654989245e-03, + 2.931293441141826373e-03, + 2.932189795979798109e-03, + 2.933081343949524820e-03, + 2.933968083839566705e-03, + 2.934850014446295854e-03, + 2.935727134573948294e-03, + 2.936599443034712889e-03, + 2.937466938648568716e-03, + 2.938329620243419933e-03, + 2.939187486654999942e-03, + 2.940040536726981103e-03, + 2.940888769310940048e-03, + 2.941732183266187670e-03, + 2.942570777460081811e-03, + 2.943404550767810424e-03, + 2.944233502072432767e-03, + 2.945057630264878105e-03, + 2.945876934244047191e-03, + 2.946691412916647036e-03, + 2.947501065197316236e-03, + 2.948305890008559062e-03, + 2.949105886280843896e-03, + 2.949901052952464894e-03, + 2.950691388969623082e-03, + 2.951476893286464516e-03, + 2.952257564865028681e-03, + 2.953033402675169991e-03, + 2.953804405694777663e-03, + 2.954570572909546305e-03, + 2.955331903313105149e-03, + 2.956088395907034098e-03, + 2.956840049700733188e-03, + 2.957586863711625554e-03, + 2.958328836964944919e-03, + 2.959065968493870911e-03, + 2.959798257339526020e-03, + 2.960525702550916190e-03, + 2.961248303184945557e-03, + 2.961966058306495821e-03, + 2.962678966988314781e-03, + 2.963387028311067085e-03, + 2.964090241363386263e-03, + 2.964788605241783660e-03, + 2.965482119050683561e-03, + 2.966170781902492583e-03, + 2.966854592917472170e-03, + 2.967533551223897753e-03, + 2.968207655957832373e-03, + 2.968876906263402497e-03, + 2.969541301292615443e-03, + 2.970200840205387133e-03, + 2.970855522169565943e-03, + 2.971505346360985185e-03, + 2.972150311963344706e-03, + 2.972790418168298927e-03, + 2.973425664175459882e-03, + 2.974056049192346039e-03, + 2.974681572434429572e-03, + 2.975302233125099068e-03, + 2.975918030495696386e-03, + 2.976528963785551353e-03, + 2.977135032241799185e-03, + 2.977736235119646767e-03, + 2.978332571682215223e-03, + 2.978924041200490917e-03, + 2.979510642953505425e-03, + 2.980092376228155125e-03, + 2.980669240319340843e-03, + 2.981241234529866373e-03, + 2.981808358170489649e-03, + 2.982370610559934021e-03, + 2.982927991024857898e-03, + 2.983480498899853013e-03, + 2.984028133527492563e-03, + 2.984570894258264419e-03, + 2.985108780450624905e-03, + 2.985641791470994028e-03, + 2.986169926693717312e-03, + 2.986693185501088782e-03, + 2.987211567283403445e-03, + 2.987725071438832383e-03, + 2.988233697373581920e-03, + 2.988737444501754839e-03, + 2.989236312245420642e-03, + 2.989730300034637231e-03, + 2.990219407307369813e-03, + 2.990703633509569394e-03, + 2.991182978095142421e-03, + 2.991657440525941677e-03, + 2.992127020271779722e-03, + 2.992591716810447545e-03, + 2.993051529627677697e-03, + 2.993506458217140825e-03, + 2.993956502080522865e-03, + 2.994401660727420093e-03, + 2.994841933675399838e-03, + 2.995277320449999617e-03, + 2.995707820584727135e-03, + 2.996133433621057246e-03, + 2.996554159108363435e-03, + 2.996969996604054859e-03, + 2.997380945673489179e-03, + 2.997787005889961717e-03, + 2.998188176834744919e-03, + 2.998584458097067109e-03, + 2.998975849274138072e-03, + 2.999362349971129108e-03, + 2.999743959801144839e-03, + 3.000120678385298240e-03, + 3.000492505352646451e-03, + 3.000859440340202054e-03, + 3.001221482992949986e-03, + 3.001578632963868790e-03, + 3.001930889913846916e-03, + 3.002278253511795041e-03, + 3.002620723434541988e-03, + 3.002958299366924062e-03, + 3.003290981001715664e-03, + 3.003618768039663118e-03, + 3.003941660189495509e-03, + 3.004259657167884356e-03, + 3.004572758699477868e-03, + 3.004880964516900080e-03, + 3.005184274360734806e-03, + 3.005482687979513495e-03, + 3.005776205129770309e-03, + 3.006064825575992250e-03, + 3.006348549090604848e-03, + 3.006627375454047190e-03, + 3.006901304454690817e-03, + 3.007170335888880493e-03, + 3.007434469560946351e-03, + 3.007693705283158783e-03, + 3.007948042875782657e-03, + 3.008197482167003587e-03, + 3.008442022993022043e-03, + 3.008681665197993071e-03, + 3.008916408634023688e-03, + 3.009146253161174185e-03, + 3.009371198647512336e-03, + 3.009591244969044444e-03, + 3.009806392009727050e-03, + 3.010016639661522442e-03, + 3.010221987824324499e-03, + 3.010422436405999456e-03, + 3.010617985322389806e-03, + 3.010808634497283073e-03, + 3.010994383862455187e-03, + 3.011175233357613230e-03, + 3.011351182930456158e-03, + 3.011522232536642703e-03, + 3.011688382139771428e-03, + 3.011849631711421924e-03, + 3.012005981231136165e-03, + 3.012157430686410696e-03, + 3.012303980072708783e-03, + 3.012445629393442192e-03, + 3.012582378660006756e-03, + 3.012714227891738136e-03, + 3.012841177115935243e-03, + 3.012963226367858932e-03, + 3.013080375690729840e-03, + 3.013192625135719706e-03, + 3.013299974761979999e-03, + 3.013402424636585104e-03, + 3.013499974834587397e-03, + 3.013592625438994699e-03, + 3.013680376540774607e-03, + 3.013763228238834115e-03, + 3.013841180640047801e-03, + 3.013914233859233110e-03, + 3.013982388019178105e-03, + 3.014045643250615452e-03, + 3.014103999692217210e-03, + 3.014157457490625625e-03, + 3.014206016800425377e-03, + 3.014249677784150948e-03, + 3.014288440612288358e-03, + 3.014322305463281674e-03, + 3.014351272523503079e-03, + 3.014375341987284972e-03, + 3.014394514056914325e-03, + 3.014408788942608830e-03, + 3.014418166862539022e-03, + 3.014422648042820035e-03, + 3.014422232717508133e-03, + 3.014416921128608515e-03, + 3.014406713526073586e-03, + 3.014391610167776060e-03, + 3.014371611319546264e-03, + 3.014346717255151752e-03, + 3.014316928256302510e-03, + 3.014282244612640979e-03, + 3.014242666621750732e-03, + 3.014198194589145629e-03, + 3.014148828828282830e-03, + 3.014094569660552385e-03, + 3.014035417415272464e-03, + 3.013971372429714510e-03, + 3.013902435049038188e-03, + 3.013828605626393299e-03, + 3.013749884522811794e-03, + 3.013666272107278030e-03, + 3.013577768756696678e-03, + 3.013484374855898359e-03, + 3.013386090797658297e-03, + 3.013282916982630826e-03, + 3.013174853819453481e-03, + 3.013061901724652450e-03, + 3.012944061122671199e-03, + 3.012821332445892591e-03, + 3.012693716134608093e-03, + 3.012561212637043361e-03, + 3.012423822409313577e-03, + 3.012281545915466378e-03, + 3.012134383627476653e-03, + 3.011982336025210115e-03, + 3.011825403596465802e-03, + 3.011663586836933575e-03, + 3.011496886250242689e-03, + 3.011325302347890240e-03, + 3.011148835649331799e-03, + 3.010967486681880370e-03, + 3.010781255980796590e-03, + 3.010590144089218476e-03, + 3.010394151558190481e-03, + 3.010193278946677372e-03, + 3.009987526821518693e-03, + 3.009776895757474736e-03, + 3.009561386337194448e-03, + 3.009340999151215862e-03, + 3.009115734797979547e-03, + 3.008885593883835977e-03, + 3.008650577023006065e-03, + 3.008410684837585936e-03, + 3.008165917957612845e-03, + 3.007916277020972803e-03, + 3.007661762673445680e-03, + 3.007402375568708677e-03, + 3.007138116368299457e-03, + 3.006868985741671663e-03, + 3.006594984366125958e-03, + 3.006316112926872910e-03, + 3.006032372116979219e-03, + 3.005743762637389828e-03, + 3.005450285196933566e-03, + 3.005151940512320978e-03, + 3.004848729308107896e-03, + 3.004540652316737073e-03, + 3.004227710278532977e-03, + 3.003909903941656689e-03, + 3.003587234062156646e-03, + 3.003259701403939146e-03, + 3.002927306738775726e-03, + 3.002590050846296651e-03, + 3.002247934513978343e-03, + 3.001900958537188045e-03, + 3.001549123719116172e-03, + 3.001192430870814470e-03, + 3.000830880811195152e-03, + 3.000464474367023522e-03, + 3.000093212372892826e-03, + 2.999717095671271087e-03, + 2.999336125112460338e-03, + 2.998950301554589252e-03, + 2.998559625863659109e-03, + 2.998164098913488288e-03, + 2.997763721585735251e-03, + 2.997358494769906782e-03, + 2.996948419363327631e-03, + 2.996533496271190384e-03, + 2.996113726406470466e-03, + 2.995689110690000299e-03, + 2.995259650050433736e-03, + 2.994825345424259946e-03, + 2.994386197755760908e-03, + 2.993942207997075597e-03, + 2.993493377108146208e-03, + 2.993039706056745911e-03, + 2.992581195818422909e-03, + 2.992117847376586735e-03, + 2.991649661722446240e-03, + 2.991176639855004388e-03, + 2.990698782781050884e-03, + 2.990216091515267554e-03, + 2.989728567080047507e-03, + 2.989236210505620463e-03, + 2.988739022830018931e-03, + 2.988237005099069962e-03, + 2.987730158366406000e-03, + 2.987218483693418469e-03, + 2.986701982149333676e-03, + 2.986180654811152087e-03, + 2.985654502763635323e-03, + 2.985123527099351696e-03, + 2.984587728918675336e-03, + 2.984047109329701197e-03, + 2.983501669448356940e-03, + 2.982951410398321408e-03, + 2.982396333311048038e-03, + 2.981836439325772237e-03, + 2.981271729589494903e-03, + 2.980702205256969845e-03, + 2.980127867490741517e-03, + 2.979548717461079528e-03, + 2.978964756346058878e-03, + 2.978375985331482324e-03, + 2.977782405610909875e-03, + 2.977184018385661823e-03, + 2.976580824864829156e-03, + 2.975972826265201130e-03, + 2.975360023811355042e-03, + 2.974742418735618933e-03, + 2.974120012278006972e-03, + 2.973492805686332209e-03, + 2.972860800216115072e-03, + 2.972223997130639742e-03, + 2.971582397700871757e-03, + 2.970936003205514823e-03, + 2.970284814931071962e-03, + 2.969628834171677244e-03, + 2.968968062229219822e-03, + 2.968302500413352602e-03, + 2.967632150041392500e-03, + 2.966957012438359905e-03, + 2.966277088937038526e-03, + 2.965592380877890826e-03, + 2.964902889609102692e-03, + 2.964208616486526185e-03, + 2.963509562873764113e-03, + 2.962805730142101072e-03, + 2.962097119670484800e-03, + 2.961383732845613778e-03, + 2.960665571061841389e-03, + 2.959942635721197167e-03, + 2.959214928233443610e-03, + 2.958482450016000284e-03, + 2.957745202493939057e-03, + 2.957003187100076032e-03, + 2.956256405274825406e-03, + 2.955504858466328696e-03, + 2.954748548130396203e-03, + 2.953987475730457998e-03, + 2.953221642737655864e-03, + 2.952451050630799934e-03, + 2.951675700896296689e-03, + 2.950895595028269532e-03, + 2.950110734528487225e-03, + 2.949321120906317917e-03, + 2.948526755678839741e-03, + 2.947727640370751030e-03, + 2.946923776514379003e-03, + 2.946115165649721822e-03, + 2.945301809324347552e-03, + 2.944483709093566326e-03, + 2.943660866520231723e-03, + 2.942833283174796713e-03, + 2.942000960635474550e-03, + 2.941163900487978999e-03, + 2.940322104325654006e-03, + 2.939475573749509695e-03, + 2.938624310368152109e-03, + 2.937768315797755891e-03, + 2.936907591662157955e-03, + 2.936042139592765117e-03, + 2.935171961228607435e-03, + 2.934297058216283130e-03, + 2.933417432210006295e-03, + 2.932533084871596484e-03, + 2.931644017870422766e-03, + 2.930750232883426714e-03, + 2.929851731595227351e-03, + 2.928948515697917324e-03, + 2.928040586891234639e-03, + 2.927127946882426921e-03, + 2.926210597386370241e-03, + 2.925288540125499295e-03, + 2.924361776829756225e-03, + 2.923430309236705119e-03, + 2.922494139091466516e-03, + 2.921553268146651061e-03, + 2.920607698162484400e-03, + 2.919657430906733887e-03, + 2.918702468154655248e-03, + 2.917742811689105330e-03, + 2.916778463300480524e-03, + 2.915809424786633929e-03, + 2.914835697953056630e-03, + 2.913857284612669969e-03, + 2.912874186585981667e-03, + 2.911886405701022071e-03, + 2.910893943793259591e-03, + 2.909896802705821007e-03, + 2.908894984289208275e-03, + 2.907888490401481108e-03, + 2.906877322908201031e-03, + 2.905861483682463907e-03, + 2.904840974604795852e-03, + 2.903815797563264692e-03, + 2.902785954453452211e-03, + 2.901751447178333148e-03, + 2.900712277648456044e-03, + 2.899668447781815310e-03, + 2.898619959503911936e-03, + 2.897566814747655484e-03, + 2.896509015453431739e-03, + 2.895446563569212869e-03, + 2.894379461050289402e-03, + 2.893307709859451946e-03, + 2.892231311966964296e-03, + 2.891150269350584254e-03, + 2.890064583995414441e-03, + 2.888974257894086611e-03, + 2.887879293046635015e-03, + 2.886779691460569699e-03, + 2.885675455150761570e-03, + 2.884566586139576845e-03, + 2.883453086456814161e-03, + 2.882334958139650370e-03, + 2.881212203232643571e-03, + 2.880084823787928267e-03, + 2.878952821864867988e-03, + 2.877816199530335017e-03, + 2.876674958858608036e-03, + 2.875529101931305342e-03, + 2.874378630837514954e-03, + 2.873223547673633277e-03, + 2.872063854543518199e-03, + 2.870899553558427068e-03, + 2.869730646836891365e-03, + 2.868557136504928766e-03, + 2.867379024695912611e-03, + 2.866196313550529399e-03, + 2.865009005216868562e-03, + 2.863817101850432440e-03, + 2.862620605613971914e-03, + 2.861419518677675491e-03, + 2.860213843219088208e-03, + 2.859003581423025329e-03, + 2.857788735481744079e-03, + 2.856569307594716400e-03, + 2.855345299968921249e-03, + 2.854116714818534951e-03, + 2.852883554365047859e-03, + 2.851645820837372773e-03, + 2.850403516471709635e-03, + 2.849156643511504324e-03, + 2.847905204207595246e-03, + 2.846649200818127893e-03, + 2.845388635608465076e-03, + 2.844123510851357794e-03, + 2.842853828826827269e-03, + 2.841579591822197045e-03, + 2.840300802132045277e-03, + 2.839017462058176979e-03, + 2.837729573909881196e-03, + 2.836437140003522043e-03, + 2.835140162662739063e-03, + 2.833838644218623741e-03, + 2.832532587009319210e-03, + 2.831221993380365898e-03, + 2.829906865684458234e-03, + 2.828587206281615082e-03, + 2.827263017539100379e-03, + 2.825934301831347674e-03, + 2.824601061540084595e-03, + 2.823263299054314633e-03, + 2.821921016770143238e-03, + 2.820574217091003765e-03, + 2.819222902427552524e-03, + 2.817867075197582477e-03, + 2.816506737826165920e-03, + 2.815141892745587262e-03, + 2.813772542395263660e-03, + 2.812398689221913290e-03, + 2.811020335679324193e-03, + 2.809637484228578487e-03, + 2.808250137337950023e-03, + 2.806858297482769504e-03, + 2.805461967145684698e-03, + 2.804061148816472220e-03, + 2.802655844992012375e-03, + 2.801246058176429243e-03, + 2.799831790881005238e-03, + 2.798413045624095676e-03, + 2.796989824931289236e-03, + 2.795562131335328597e-03, + 2.794129967376010257e-03, + 2.792693335600360174e-03, + 2.791252238562417359e-03, + 2.789806678823558272e-03, + 2.788356658952080482e-03, + 2.786902181523427755e-03, + 2.785443249120315816e-03, + 2.783979864332401452e-03, + 2.782512029756477236e-03, + 2.781039747996499716e-03, + 2.779563021663474052e-03, + 2.778081853375558539e-03, + 2.776596245757871617e-03, + 2.775106201442737331e-03, + 2.773611723069539185e-03, + 2.772112813284642076e-03, + 2.770609474741586586e-03, + 2.769101710100960612e-03, + 2.767589522030355995e-03, + 2.766072913204383268e-03, + 2.764551886304908012e-03, + 2.763026444020608933e-03, + 2.761496589047357335e-03, + 2.759962324087926987e-03, + 2.758423651852248693e-03, + 2.756880575057253733e-03, + 2.755333096426805777e-03, + 2.753781218691886065e-03, + 2.752224944590477614e-03, + 2.750664276867488024e-03, + 2.749099218274913409e-03, + 2.747529771571750792e-03, + 2.745955939523890121e-03, + 2.744377724904305520e-03, + 2.742795130492967255e-03, + 2.741208159076707722e-03, + 2.739616813449453469e-03, + 2.738021096412068204e-03, + 2.736421010772305956e-03, + 2.734816559345003631e-03, + 2.733207744951785673e-03, + 2.731594570421459148e-03, + 2.729977038589566189e-03, + 2.728355152298648102e-03, + 2.726728914398209372e-03, + 2.725098327744710728e-03, + 2.723463395201421253e-03, + 2.721824119638650407e-03, + 2.720180503933593199e-03, + 2.718532550970275546e-03, + 2.716880263639711267e-03, + 2.715223644839799728e-03, + 2.713562697475353173e-03, + 2.711897424458004774e-03, + 2.710227828706243767e-03, + 2.708553913145634023e-03, + 2.706875680708419833e-03, + 2.705193134333742748e-03, + 2.703506276967671505e-03, + 2.701815111563104447e-03, + 2.700119641079821997e-03, + 2.698419868484365665e-03, + 2.696715796750194169e-03, + 2.695007428857633999e-03, + 2.693294767793708543e-03, + 2.691577816552408707e-03, + 2.689856578134528983e-03, + 2.688131055547600227e-03, + 2.686401251805946473e-03, + 2.684667169930900904e-03, + 2.682928812950355693e-03, + 2.681186183899140606e-03, + 2.679439285818865143e-03, + 2.677688121757837436e-03, + 2.675932694771269386e-03, + 2.674173007921013413e-03, + 2.672409064275800550e-03, + 2.670640866911124216e-03, + 2.668868418909116184e-03, + 2.667091723358792042e-03, + 2.665310783355902876e-03, + 2.663525602002834655e-03, + 2.661736182408822038e-03, + 2.659942527689827807e-03, + 2.658144640968439221e-03, + 2.656342525374057965e-03, + 2.654536184042825559e-03, + 2.652725620117470269e-03, + 2.650910836747566012e-03, + 2.649091837089211868e-03, + 2.647268624305461858e-03, + 2.645441201565833581e-03, + 2.643609572046547174e-03, + 2.641773738930606845e-03, + 2.639933705407664696e-03, + 2.638089474673939623e-03, + 2.636241049932409007e-03, + 2.634388434392689014e-03, + 2.632531631271071895e-03, + 2.630670643790378530e-03, + 2.628805475180178743e-03, + 2.626936128676703695e-03, + 2.625062607522657236e-03, + 2.623184914967504732e-03, + 2.621303054267323449e-03, + 2.619417028684730558e-03, + 2.617526841488885311e-03, + 2.615632495955816893e-03, + 2.613733995367844166e-03, + 2.611831343014095648e-03, + 2.609924542190093181e-03, + 2.608013596198084129e-03, + 2.606098508346869208e-03, + 2.604179281951701005e-03, + 2.602255920334518163e-03, + 2.600328426823810511e-03, + 2.598396804754477245e-03, + 2.596461057468109259e-03, + 2.594521188312817403e-03, + 2.592577200643126235e-03, + 2.590629097820206037e-03, + 2.588676883211757894e-03, + 2.586720560191847155e-03, + 2.584760132141245177e-03, + 2.582795602447030339e-03, + 2.580826974502928479e-03, + 2.578854251709133353e-03, + 2.576877437472206017e-03, + 2.574896535205317694e-03, + 2.572911548328108821e-03, + 2.570922480266561120e-03, + 2.568929334453243923e-03, + 2.566932114327176700e-03, + 2.564930823333704587e-03, + 2.562925464924746891e-03, + 2.560916042558614939e-03, + 2.558902559700097085e-03, + 2.556885019820273521e-03, + 2.554863426396779529e-03, + 2.552837782913656289e-03, + 2.550808092861275422e-03, + 2.548774359736355900e-03, + 2.546736587042292780e-03, + 2.544694778288583877e-03, + 2.542648936991173236e-03, + 2.540599066672460243e-03, + 2.538545170861176894e-03, + 2.536487253092463683e-03, + 2.534425316907686597e-03, + 2.532359365854704690e-03, + 2.530289403487710493e-03, + 2.528215433367120724e-03, + 2.526137459059816983e-03, + 2.524055484138996563e-03, + 2.521969512184063598e-03, + 2.519879546780862817e-03, + 2.517785591521547704e-03, + 2.515687650004456901e-03, + 2.513585725834390893e-03, + 2.511479822622263765e-03, + 2.509369943985425427e-03, + 2.507256093547484670e-03, + 2.505138274938214192e-03, + 2.503016491793757028e-03, + 2.500890747756549792e-03, + 2.498761046475138359e-03, + 2.496627391604430701e-03, + 2.494489786805610156e-03, + 2.492348235745938962e-03, + 2.490202742099060541e-03, + 2.488053309544834262e-03, + 2.485899941769190158e-03, + 2.483742642464422962e-03, + 2.481581415329029480e-03, + 2.479416264067566770e-03, + 2.477247192390948788e-03, + 2.475074204016074718e-03, + 2.472897302666335079e-03, + 2.470716492071009344e-03, + 2.468531775965595101e-03, + 2.466343158091844484e-03, + 2.464150642197673099e-03, + 2.461954232036972241e-03, + 2.459753931369953236e-03, + 2.457549743962895907e-03, + 2.455341673588255259e-03, + 2.453129724024471527e-03, + 2.450913899056237754e-03, + 2.448694202474370127e-03, + 2.446470638075673529e-03, + 2.444243209663001827e-03, + 2.442011921045612616e-03, + 2.439776776038527981e-03, + 2.437537778462900515e-03, + 2.435294932146064937e-03, + 2.433048240921362008e-03, + 2.430797708628230913e-03, + 2.428543339112032313e-03, + 2.426285136224299015e-03, + 2.424023103822619749e-03, + 2.421757245770442702e-03, + 2.419487565937417269e-03, + 2.417214068199192815e-03, + 2.414936756437285545e-03, + 2.412655634539357784e-03, + 2.410370706399082245e-03, + 2.408081975915962909e-03, + 2.405789446995656392e-03, + 2.403493123549769843e-03, + 2.401193009495749923e-03, + 2.398889108757211973e-03, + 2.396581425263518902e-03, + 2.394269962950135514e-03, + 2.391954725758478877e-03, + 2.389635717635737924e-03, + 2.387312942535205641e-03, + 2.384986404416094326e-03, + 2.382656107243365153e-03, + 2.380322054988058631e-03, + 2.377984251627114631e-03, + 2.375642701143224067e-03, + 2.373297407525116424e-03, + 2.370948374767351159e-03, + 2.368595606870420051e-03, + 2.366239107840586303e-03, + 2.363878881689922273e-03, + 2.361514932436667262e-03, + 2.359147264104587399e-03, + 2.356775880723326055e-03, + 2.354400786328633699e-03, + 2.352021984961808442e-03, + 2.349639480670012628e-03, + 2.347253277506325311e-03, + 2.344863379529585692e-03, + 2.342469790804491570e-03, + 2.340072515401373388e-03, + 2.337671557396510391e-03, + 2.335266920871959754e-03, + 2.332858609915400457e-03, + 2.330446628620437728e-03, + 2.328030981086427840e-03, + 2.325611671418333255e-03, + 2.323188703727013197e-03, + 2.320762082129075327e-03, + 2.318331810746698373e-03, + 2.315897893707994249e-03, + 2.313460335146587821e-03, + 2.311019139201972959e-03, + 2.308574310019346869e-03, + 2.306125851749443127e-03, + 2.303673768548850868e-03, + 2.301218064579849121e-03, + 2.298758744010215120e-03, + 2.296295811013574720e-03, + 2.293829269769200735e-03, + 2.291359124461873724e-03, + 2.288885379282179500e-03, + 2.286408038426347364e-03, + 2.283927106096065793e-03, + 2.281442586498893133e-03, + 2.278954483847702925e-03, + 2.276462802361394269e-03, + 2.273967546264128985e-03, + 2.271468719785660773e-03, + 2.268966327161688664e-03, + 2.266460372633139712e-03, + 2.263950860446585327e-03, + 2.261437794854283777e-03, + 2.258921180114041409e-03, + 2.256401020489060428e-03, + 2.253877320248261987e-03, + 2.251350083666054606e-03, + 2.248819315022430442e-03, + 2.246285018602737615e-03, + 2.243747198698024976e-03, + 2.241205859604837418e-03, + 2.238661005625122193e-03, + 2.236112641066277922e-03, + 2.233560770241508047e-03, + 2.231005397469126936e-03, + 2.228446527073183955e-03, + 2.225884163383001595e-03, + 2.223318310733505502e-03, + 2.220748973465091775e-03, + 2.218176155923427470e-03, + 2.215599862459788870e-03, + 2.213020097430888882e-03, + 2.210436865198686218e-03, + 2.207850170130741443e-03, + 2.205260016600004043e-03, + 2.202666408984681017e-03, + 2.200069351668522671e-03, + 2.197468849040685145e-03, + 2.194864905495517472e-03, + 2.192257525432990059e-03, + 2.189646713258189010e-03, + 2.187032473381745040e-03, + 2.184414810219636148e-03, + 2.181793728192952565e-03, + 2.179169231728519517e-03, + 2.176541325258153897e-03, + 2.173910013219045034e-03, + 2.171275300053816283e-03, + 2.168637190210390142e-03, + 2.165995688141817820e-03, + 2.163350798306615339e-03, + 2.160702525168585290e-03, + 2.158050873196631220e-03, + 2.155395846865088092e-03, + 2.152737450653519329e-03, + 2.150075689046768417e-03, + 2.147410566534830537e-03, + 2.144742087612872515e-03, + 2.142070256781653057e-03, + 2.139395078546782892e-03, + 2.136716557419162787e-03, + 2.134034697915024748e-03, + 2.131349504555778065e-03, + 2.128660981867864458e-03, + 2.125969134383087246e-03, + 2.123273966638368482e-03, + 2.120575483175858242e-03, + 2.117873688542682223e-03, + 2.115168587291313840e-03, + 2.112460183979366930e-03, + 2.109748483169469977e-03, + 2.107033489429332909e-03, + 2.104315207332145207e-03, + 2.101593641455797457e-03, + 2.098868796383520155e-03, + 2.096140676703646052e-03, + 2.093409287009425843e-03, + 2.090674631899440590e-03, + 2.087936715977096059e-03, + 2.085195543851062899e-03, + 2.082451120135058939e-03, + 2.079703449447690890e-03, + 2.076952536412773106e-03, + 2.074198385659194004e-03, + 2.071441001820648487e-03, + 2.068680389536073361e-03, + 2.065916553449399697e-03, + 2.063149498209397147e-03, + 2.060379228470004837e-03, + 2.057605748890167004e-03, + 2.054829064133626565e-03, + 2.052049178869337544e-03, + 2.049266097770929915e-03, + 2.046479825517419967e-03, + 2.043690366792402357e-03, + 2.040897726284490732e-03, + 2.038101908687345483e-03, + 2.035302918699569228e-03, + 2.032500761024494743e-03, + 2.029695440370558792e-03, + 2.026886961451095266e-03, + 2.024075328984154334e-03, + 2.021260547692875845e-03, + 2.018442622305191385e-03, + 2.015621557554001658e-03, + 2.012797358176924081e-03, + 2.009970028916385158e-03, + 2.007139574520031174e-03, + 2.004305999739977064e-03, + 2.001469309333183278e-03, + 1.998629508061786249e-03, + 1.995786600692332075e-03, + 1.992940591996473446e-03, + 1.990091486750422342e-03, + 1.987239289735365060e-03, + 1.984384005737287876e-03, + 1.981525639546755438e-03, + 1.978664195959296303e-03, + 1.975799679775206916e-03, + 1.972932095799337371e-03, + 1.970061448841482592e-03, + 1.967187743716182838e-03, + 1.964310985242496022e-03, + 1.961431178244416214e-03, + 1.958548327550643352e-03, + 1.955662437994385491e-03, + 1.952773514413817411e-03, + 1.949881561651538309e-03, + 1.946986584555021734e-03, + 1.944088587976426728e-03, + 1.941187576772367531e-03, + 1.938283555804327755e-03, + 1.935376529938420557e-03, + 1.932466504045228821e-03, + 1.929553483000146690e-03, + 1.926637471683195681e-03, + 1.923718474978823242e-03, + 1.920796497776283739e-03, + 1.917871544969422266e-03, + 1.914943621456492934e-03, + 1.912012732140585831e-03, + 1.909078881929044584e-03, + 1.906142075734231596e-03, + 1.903202318472687997e-03, + 1.900259615065506402e-03, + 1.897313970438695195e-03, + 1.894365389522427185e-03, + 1.891413877251462436e-03, + 1.888459438565210508e-03, + 1.885502078407508622e-03, + 1.882541801726788202e-03, + 1.879578613475762399e-03, + 1.876612518611825301e-03, + 1.873643522096861544e-03, + 1.870671628897013425e-03, + 1.867696843983090516e-03, + 1.864719172330342846e-03, + 1.861738618918353134e-03, + 1.858755188731047630e-03, + 1.855768886757199398e-03, + 1.852779717989524533e-03, + 1.849787687425487066e-03, + 1.846792800066687041e-03, + 1.843795060919314367e-03, + 1.840794474993943464e-03, + 1.837791047305338326e-03, + 1.834784782872822886e-03, + 1.831775686720075449e-03, + 1.828763763874940692e-03, + 1.825749019369796774e-03, + 1.822731458241359966e-03, + 1.819711085530478431e-03, + 1.816687906282512350e-03, + 1.813661925547136594e-03, + 1.810633148378126703e-03, + 1.807601579833746164e-03, + 1.804567224976556025e-03, + 1.801530088873182873e-03, + 1.798490176594788733e-03, + 1.795447493216466945e-03, + 1.792402043818029081e-03, + 1.789353833483131508e-03, + 1.786302867299713413e-03, + 1.783249150360096324e-03, + 1.780192687760814548e-03, + 1.777133484602395072e-03, + 1.774071545989785829e-03, + 1.771006877032115434e-03, + 1.767939482842491522e-03, + 1.764869368538406896e-03, + 1.761796539241455677e-03, + 1.758721000077445844e-03, + 1.755642756176208855e-03, + 1.752561812671636719e-03, + 1.749478174702176828e-03, + 1.746391847409990185e-03, + 1.743302835941405249e-03, + 1.740211145447007708e-03, + 1.737116781081414745e-03, + 1.734019748003386282e-03, + 1.730920051375572791e-03, + 1.727817696364893898e-03, + 1.724712688142338891e-03, + 1.721605031882744675e-03, + 1.718494732765190637e-03, + 1.715381795972809129e-03, + 1.712266226692614381e-03, + 1.709148030115575359e-03, + 1.706027211437084138e-03, + 1.702903775856056019e-03, + 1.699777728575680011e-03, + 1.696649074803121106e-03, + 1.693517819749322311e-03, + 1.690383968629469982e-03, + 1.687247526662434592e-03, + 1.684108499071241497e-03, + 1.680966891082863847e-03, + 1.677822707928000546e-03, + 1.674675954841475019e-03, + 1.671526637062044178e-03, + 1.668374759832143847e-03, + 1.665220328398329822e-03, + 1.662063348011050398e-03, + 1.658903823924420644e-03, + 1.655741761396638517e-03, + 1.652577165689769973e-03, + 1.649410042069516299e-03, + 1.646240395805720867e-03, + 1.643068232171705388e-03, + 1.639893556445115152e-03, + 1.636716373906983366e-03, + 1.633536689842244845e-03, + 1.630354509539762254e-03, + 1.627169838292199036e-03, + 1.623982681395794115e-03, + 1.620793044150765656e-03, + 1.617600931861044346e-03, + 1.614406349834370544e-03, + 1.611209303382037323e-03, + 1.608009797819291405e-03, + 1.604807838465104183e-03, + 1.601603430642033372e-03, + 1.598396579676278307e-03, + 1.595187290898170216e-03, + 1.591975569641317870e-03, + 1.588761421243010041e-03, + 1.585544851044647660e-03, + 1.582325864390797098e-03, + 1.579104466630053185e-03, + 1.575880663114363972e-03, + 1.572654459199550932e-03, + 1.569425860245060459e-03, + 1.566194871613748978e-03, + 1.562961498672319881e-03, + 1.559725746791062670e-03, + 1.556487621343674490e-03, + 1.553247127707638956e-03, + 1.550004271264036849e-03, + 1.546759057397288726e-03, + 1.543511491495615706e-03, + 1.540261578950771672e-03, + 1.537009325157860477e-03, + 1.533754735515801930e-03, + 1.530497815426753267e-03, + 1.527238570296607888e-03, + 1.523977005534776991e-03, + 1.520713126553946502e-03, + 1.517446938770521375e-03, + 1.514178447604376445e-03, + 1.510907658478657586e-03, + 1.507634576820185467e-03, + 1.504359208059235673e-03, + 1.501081557629323172e-03, + 1.497801630967608233e-03, + 1.494519433514612155e-03, + 1.491234970714351918e-03, + 1.487948248014035963e-03, + 1.484659270864487025e-03, + 1.481368044719930284e-03, + 1.478074575037822058e-03, + 1.474778867278930036e-03, + 1.471480926907816830e-03, + 1.468180759391967847e-03, + 1.464878370202287849e-03, + 1.461573764813170560e-03, + 1.458266948702267082e-03, + 1.454957927350613396e-03, + 1.451646706242348686e-03, + 1.448333290865132976e-03, + 1.445017686709908818e-03, + 1.441699899270693997e-03, + 1.438379934045001547e-03, + 1.435057796533612288e-03, + 1.431733492240333050e-03, + 1.428407026672452902e-03, + 1.425078405340490101e-03, + 1.421747633757978069e-03, + 1.418414717441963697e-03, + 1.415079661912406906e-03, + 1.411742472692705409e-03, + 1.408403155309429508e-03, + 1.405061715292123042e-03, + 1.401718158173738144e-03, + 1.398372489490368100e-03, + 1.395024714781065633e-03, + 1.391674839588233868e-03, + 1.388322869457432260e-03, + 1.384968809937109661e-03, + 1.381612666579067712e-03, + 1.378254444938218411e-03, + 1.374894150572355134e-03, + 1.371531789042581108e-03, + 1.368167365913083465e-03, + 1.364800886750906859e-03, + 1.361432357126452419e-03, + 1.358061782612808577e-03, + 1.354689168786628838e-03, + 1.351314521227161636e-03, + 1.347937845516753406e-03, + 1.344559147240920139e-03, + 1.341178431988190823e-03, + 1.337795705349866969e-03, + 1.334410972920466480e-03, + 1.331024240297421163e-03, + 1.327635513081200109e-03, + 1.324244796875014571e-03, + 1.320852097285260974e-03, + 1.317457419921273928e-03, + 1.314060770395178565e-03, + 1.310662154321948648e-03, + 1.307261577319929376e-03, + 1.303859045009917545e-03, + 1.300454563015690209e-03, + 1.297048136964059533e-03, + 1.293639772484644250e-03, + 1.290229475210012992e-03, + 1.286817250775363578e-03, + 1.283403104818975132e-03, + 1.279987042981973024e-03, + 1.276569070908088613e-03, + 1.273149194244096831e-03, + 1.269727418639600425e-03, + 1.266303749746770183e-03, + 1.262878193220806590e-03, + 1.259450754719697828e-03, + 1.256021439903976054e-03, + 1.252590254437179048e-03, + 1.249157203985592829e-03, + 1.245722294218035891e-03, + 1.242285530806364231e-03, + 1.238846919424862678e-03, + 1.235406465750766387e-03, + 1.231964175464024492e-03, + 1.228520054247058757e-03, + 1.225074107785213305e-03, + 1.221626341766518910e-03, + 1.218176761881445804e-03, + 1.214725373823369444e-03, + 1.211272183288313129e-03, + 1.207817195974717059e-03, + 1.204360417583896737e-03, + 1.200901853819710558e-03, + 1.197441510388718312e-03, + 1.193979392999927700e-03, + 1.190515507364881724e-03, + 1.187049859198161320e-03, + 1.183582454216476360e-03, + 1.180113298139183692e-03, + 1.176642396688349365e-03, + 1.173169755588607038e-03, + 1.169695380566884973e-03, + 1.166219277352886340e-03, + 1.162741451678764174e-03, + 1.159261909279257546e-03, + 1.155780655891381270e-03, + 1.152297697254874758e-03, + 1.148813039111974557e-03, + 1.145326687207151974e-03, + 1.141838647287581445e-03, + 1.138348925102899197e-03, + 1.134857526404952147e-03, + 1.131364456948261935e-03, + 1.127869722489783155e-03, + 1.124373328788652680e-03, + 1.120875281606730466e-03, + 1.117375586707966377e-03, + 1.113874249858942071e-03, + 1.110371276828612738e-03, + 1.106866673388080076e-03, + 1.103360445311035937e-03, + 1.099852598373535304e-03, + 1.096343138353733258e-03, + 1.092832071032364197e-03, + 1.089319402192480543e-03, + 1.085805137619218338e-03, + 1.082289283100257163e-03, + 1.078771844425573806e-03, + 1.075252827387192028e-03, + 1.071732237779731171e-03, + 1.068210081399686897e-03, + 1.064686364046362735e-03, + 1.061161091520836401e-03, + 1.057634269626438368e-03, + 1.054105904169182076e-03, + 1.050576000956842792e-03, + 1.047044565799483884e-03, + 1.043511604509525991e-03, + 1.039977122901581579e-03, + 1.036441126792209252e-03, + 1.032903622000377365e-03, + 1.029364614347141145e-03, + 1.025824109655782985e-03, + 1.022282113751498463e-03, + 1.018738632461854308e-03, + 1.015193671616537296e-03, + 1.011647237047195958e-03, + 1.008099334587504985e-03, + 1.004549970073710359e-03, + 1.000999149343591126e-03, + 9.974468782373928886e-04, + 9.938931625971267683e-04, + 9.903380082670839614e-04, + 9.867814210936149983e-04, + 9.832234069248628125e-04, + 9.796639716112441262e-04, + 9.761031210051959641e-04, + 9.725408609609180466e-04, + 9.689771973348602473e-04, + 9.654121359854553374e-04, + 9.618456827728816532e-04, + 9.582778435595263765e-04, + 9.547086242097426725e-04, + 9.511380305895917589e-04, + 9.475660685673998598e-04, + 9.439927440131047577e-04, + 9.404180627988103624e-04, + 9.368420307985304060e-04, + 9.332646538879463402e-04, + 9.296859379448688815e-04, + 9.261058888490016549e-04, + 9.225245124816795761e-04, + 9.189418147263380939e-04, + 9.153578014682765092e-04, + 9.117724785943970072e-04, + 9.081858519936776954e-04, + 9.045979275569237784e-04, + 9.010087111765188424e-04, + 8.974182087468939896e-04, + 8.938264261641959635e-04, + 8.902333693264443586e-04, + 8.866390441332727126e-04, + 8.830434564860062440e-04, + 8.794466122882074223e-04, + 8.758485174447112453e-04, + 8.722491778621709177e-04, + 8.686485994491271317e-04, + 8.650467881158455455e-04, + 8.614437497740618866e-04, + 8.578394903374517372e-04, + 8.542340157213008283e-04, + 8.506273318426589959e-04, + 8.470194446200093917e-04, + 8.434103599737318704e-04, + 8.398000838258673929e-04, + 8.361886220999301339e-04, + 8.325759807209946522e-04, + 8.289621656162399427e-04, + 8.253471827138920145e-04, + 8.217310379441855779e-04, + 8.181137372386305820e-04, + 8.144952865305589776e-04, + 8.108756917548778443e-04, + 8.072549588478226262e-04, + 8.036330937474213875e-04, + 8.000101023932499993e-04, + 7.963859907261765930e-04, + 7.927607646888392605e-04, + 7.891344302253956028e-04, + 7.855069932812611122e-04, + 7.818784598035968467e-04, + 7.782488357410448842e-04, + 7.746181270434928344e-04, + 7.709863396625274683e-04, + 7.673534795512015070e-04, + 7.637195526637704851e-04, + 7.600845649562508986e-04, + 7.564485223856877178e-04, + 7.528114309111044733e-04, + 7.491732964924589528e-04, + 7.455341250911821580e-04, + 7.418939226702569089e-04, + 7.382526951940488174e-04, + 7.346104486280530168e-04, + 7.309671889393605862e-04, + 7.273229220964220858e-04, + 7.236776540687807346e-04, + 7.200313908275562903e-04, + 7.163841383451112228e-04, + 7.127359025951935040e-04, + 7.090866895527010109e-04, + 7.054365051937360603e-04, + 7.017853554961703873e-04, + 6.981332464386670860e-04, + 6.944801840011439976e-04, + 6.908261741652664805e-04, + 6.871712229133715563e-04, + 6.835153362294376202e-04, + 6.798585200983384017e-04, + 6.762007805064100020e-04, + 6.725421234411885175e-04, + 6.688825548911660939e-04, + 6.652220808462599522e-04, + 6.615607072975594445e-04, + 6.578984402370815663e-04, + 6.542352856582397654e-04, + 6.505712495555901302e-04, + 6.469063379245837582e-04, + 6.432405567620416362e-04, + 6.395739120658999613e-04, + 6.359064098349565463e-04, + 6.322380560694343876e-04, + 6.285688567703129294e-04, + 6.248988179398980288e-04, + 6.212279455815574109e-04, + 6.175562456994748792e-04, + 6.138837242991264983e-04, + 6.102103873870256970e-04, + 6.065362409704677226e-04, + 6.028612910580104841e-04, + 5.991855436592221501e-04, + 5.955090047844244098e-04, + 5.918316804451714732e-04, + 5.881535766539972357e-04, + 5.844746994241561532e-04, + 5.807950547701959182e-04, + 5.771146487071959156e-04, + 5.734334872517559073e-04, + 5.697515764209084687e-04, + 5.660689222326074216e-04, + 5.623855307062124729e-04, + 5.587014078614864357e-04, + 5.550165597191667128e-04, + 5.513309923010341427e-04, + 5.476447116296602729e-04, + 5.439577237285609908e-04, + 5.402700346218520730e-04, + 5.365816503347391360e-04, + 5.328925768932617647e-04, + 5.292028203240322195e-04, + 5.255123866547224600e-04, + 5.218212819138049125e-04, + 5.181295121303786718e-04, + 5.144370833342470223e-04, + 5.107440015564772111e-04, + 5.070502728283211250e-04, + 5.033559031821972524e-04, + 4.996608986509369459e-04, + 4.959652652683530860e-04, + 4.922690090689778135e-04, + 4.885721360878170650e-04, + 4.848746523608186781e-04, + 4.811765639246299632e-04, + 4.774778768163349474e-04, + 4.737785970739347304e-04, + 4.700787307360990933e-04, + 4.663782838419034175e-04, + 4.626772624313124551e-04, + 4.589756725449309089e-04, + 4.552735202237357965e-04, + 4.515708115096511862e-04, + 4.478675524448786477e-04, + 4.441637490724572430e-04, + 4.404594074360163817e-04, + 4.367545335794289314e-04, + 4.330491335477098581e-04, + 4.293432133859387463e-04, + 4.256367791398194640e-04, + 4.219298368557599060e-04, + 4.182223925806935342e-04, + 4.145144523618224212e-04, + 4.108060222471036243e-04, + 4.070971082849902229e-04, + 4.033877165241758810e-04, + 3.996778530140763412e-04, + 3.959675238044963580e-04, + 3.922567349457752517e-04, + 3.885454924885393306e-04, + 3.848338024837684077e-04, + 3.811216709833646263e-04, + 3.774091040391550490e-04, + 3.736961077034537076e-04, + 3.699826880291429729e-04, + 3.662688510694058104e-04, + 3.625546028778902003e-04, + 3.588399495083641980e-04, + 3.551248970152011148e-04, + 3.514094514531245135e-04, + 3.476936188769501140e-04, + 3.439774053420687513e-04, + 3.402608169041909918e-04, + 3.365438596191742569e-04, + 3.328265395430890679e-04, + 3.291088627327961127e-04, + 3.253908352448534242e-04, + 3.216724631364226107e-04, + 3.179537524649248925e-04, + 3.142347092877824659e-04, + 3.105153396629919916e-04, + 3.067956496484466433e-04, + 3.030756453025109515e-04, + 2.993553326837595650e-04, + 2.956347178507206749e-04, + 2.919138068623616279e-04, + 2.881926057778310497e-04, + 2.844711206562008585e-04, + 2.807493575569542646e-04, + 2.770273225397249656e-04, + 2.733050216640408410e-04, + 2.695824609898109215e-04, + 2.658596465770662648e-04, + 2.621365844857008313e-04, + 2.584132807760451895e-04, + 2.546897415081054604e-04, + 2.509659727425526520e-04, + 2.472419805396338494e-04, + 2.435177709597410682e-04, + 2.397933500634861191e-04, + 2.360687239115250480e-04, + 2.323438985642964371e-04, + 2.286188800825153403e-04, + 2.248936745268241154e-04, + 2.211682879579551092e-04, + 2.174427264363840921e-04, + 2.137169960228218080e-04, + 2.099911027779524382e-04, + 2.062650527622593964e-04, + 2.025388520360978085e-04, + 1.988125066602665640e-04, + 1.950860226950012284e-04, + 1.913594062004627468e-04, + 1.876326632372261481e-04, + 1.839057998651904343e-04, + 1.801788221445659358e-04, + 1.764517361351168611e-04, + 1.727245478967329151e-04, + 1.689972634891695783e-04, + 1.652698889717911241e-04, + 1.615424304040555823e-04, + 1.578148938452593008e-04, + 1.540872853542762228e-04, + 1.503596109900459936e-04, + 1.466318768113165449e-04, + 1.429040888763834249e-04, + 1.391762532435798035e-04, + 1.354483759710152610e-04, + 1.317204631163196727e-04, + 1.279925207372125773e-04, + 1.242645548908298330e-04, + 1.205365716342951554e-04, + 1.168085770244600707e-04, + 1.130805771176469064e-04, + 1.093525779701358278e-04, + 1.056245856379060393e-04, + 1.018966061763768906e-04, + 9.816864564089662095e-05, + 9.444071008648314061e-05, + 9.071280556756548884e-05, + 8.698493813847115580e-05, + 8.325711385308548051e-05, + 7.952933876500740994e-05, + 7.580161892720690476e-05, + 7.207396039251391445e-05, + 6.834636921335995776e-05, + 6.461885144160100472e-05, + 6.089141312859177159e-05, + 5.716406032575656684e-05, + 5.343679908358352427e-05, + 4.970963545219542863e-05, + 4.598257548142326522e-05, + 4.225562522054767832e-05, + 3.852879071845464906e-05, + 3.480207802329368715e-05, + 3.107549318296658918e-05, + 2.734904224486799589e-05, + 2.362273125562689457e-05, + 1.989656626159493701e-05, + 1.617055330858755229e-05, + 1.244469844162472597e-05, + 8.719007705419931168e-06, + 4.993487144120982224e-06, + 1.268142801050910831e-06, +-2.457019280720069058e-06, +-6.181993059049166639e-06, +-9.906772492149135731e-06, +-1.363135153884734192e-05, +-1.735572415884484705e-05, +-2.107988431222751922e-05, +-2.480382595972527646e-05, +-2.852754306297100614e-05, +-3.225102958401185571e-05, +-3.597427948556829267e-05, +-3.969728673129300188e-05, +-4.342004528528232711e-05, +-4.714254911233535809e-05, +-5.086479217821251954e-05, +-5.458676844914758526e-05, +-5.830847189210566409e-05, +-6.202989647504327290e-05, +-6.575103616633616241e-05, +-6.947188493553579220e-05, +-7.319243675238435332e-05, +-7.691268558790231120e-05, +-8.063262541381773581e-05, +-8.435225020249296894e-05, +-8.807155392710038693e-05, +-9.179053056188092867e-05, +-9.550917408165629952e-05, +-9.922747846217011547e-05, +-1.029454376799327674e-04, +-1.066630457125611152e-04, +-1.103802965382926431e-04, +-1.140971841362422396e-04, +-1.178137024865798032e-04, +-1.215298455704546870e-04, +-1.252456073694266283e-04, +-1.289609818664703023e-04, +-1.326759630454036633e-04, +-1.363905448908160753e-04, +-1.401047213883261353e-04, +-1.438184865244251150e-04, +-1.475318342868194054e-04, +-1.512447586639422466e-04, +-1.549572536452112532e-04, +-1.586693132212881887e-04, +-1.623809313835920234e-04, +-1.660921021245536679e-04, +-1.698028194378791355e-04, +-1.735130773180578031e-04, +-1.772228697606237574e-04, +-1.809321907624125616e-04, +-1.846410343210742855e-04, +-1.883493944353306518e-04, +-1.920572651052352981e-04, +-1.957646403316028909e-04, +-1.994715141166797856e-04, +-2.031778804635757418e-04, +-2.068837333765218011e-04, +-2.105890668611287611e-04, +-2.142938749238983891e-04, +-2.179981515724836315e-04, +-2.217018908159437262e-04, +-2.254050866642620850e-04, +-2.291077331285988855e-04, +-2.328098242215523371e-04, +-2.365113539566698951e-04, +-2.402123163487915195e-04, +-2.439127054138914353e-04, +-2.476125151693369590e-04, +-2.513117396338150167e-04, +-2.550103728267626396e-04, +-2.587084087693716675e-04, +-2.624058414840148529e-04, +-2.661026649941770146e-04, +-2.697988733246265585e-04, +-2.734944605016780710e-04, +-2.771894205526991158e-04, +-2.808837475064575578e-04, +-2.845774353929602881e-04, +-2.882704782437963743e-04, +-2.919628700916519879e-04, +-2.956546049705629153e-04, +-2.993456769161785070e-04, +-3.030360799652697204e-04, +-3.067258081559907381e-04, +-3.104148555281352733e-04, +-3.141032161226491124e-04, +-3.177908839818894019e-04, +-3.214778531498808456e-04, +-3.251641176717483413e-04, +-3.288496715943850122e-04, +-3.325345089658863617e-04, +-3.362186238358069582e-04, +-3.399020102554171745e-04, +-3.435846622772150793e-04, +-3.472665739551903329e-04, +-3.509477393450733903e-04, +-3.546281525038549832e-04, +-3.583078074900447022e-04, +-3.619866983639202546e-04, +-3.656648191870509579e-04, +-3.693421640225503047e-04, +-3.730187269353318880e-04, +-3.766945019915468639e-04, +-3.803694832593269544e-04, +-3.840436648078167977e-04, +-3.877170407082426457e-04, +-3.913896050334345566e-04, +-3.950613518573428402e-04, +-3.987322752560285314e-04, +-4.024023693071042667e-04, +-4.060716280896580106e-04, +-4.097400456844273956e-04, +-4.134076161740570031e-04, +-4.170743336426124240e-04, +-4.207401921759219995e-04, +-4.244051858614186898e-04, +-4.280693087884779660e-04, +-4.317325550479400023e-04, +-4.353949187323580662e-04, +-4.390563939361774668e-04, +-4.427169747556607441e-04, +-4.463766552883234508e-04, +-4.500354296340096805e-04, +-4.536932918939192674e-04, +-4.573502361713513865e-04, +-4.610062565711433159e-04, +-4.646613471999251708e-04, +-4.683155021663772924e-04, +-4.719687155807389422e-04, +-4.756209815550803822e-04, +-4.792722942035390686e-04, +-4.829226476418540409e-04, +-4.865720359876087833e-04, +-4.902204533604915962e-04, +-4.938678938818173540e-04, +-4.975143516747776310e-04, +-5.011598208646938623e-04, +-5.048042955784606605e-04, +-5.084477699452047937e-04, +-5.120902380957207496e-04, +-5.157316941627330042e-04, +-5.193721322811430032e-04, +-5.230115465875510286e-04, +-5.266499312205119620e-04, +-5.302872803207886628e-04, +-5.339235880308690644e-04, +-5.375588484952257325e-04, +-5.411930558605647975e-04, +-5.448262042753493394e-04, +-5.484582878900548259e-04, +-5.520893008574151179e-04, +-5.557192373319518172e-04, +-5.593480914703082008e-04, +-5.629758574310889758e-04, +-5.666025293751227650e-04, +-5.702281014653820925e-04, +-5.738525678664301152e-04, +-5.774759227454018262e-04, +-5.810981602714464494e-04, +-5.847192746156516536e-04, +-5.883392599512224461e-04, +-5.919581104537243593e-04, +-5.955758203006199540e-04, +-5.991923836715838886e-04, +-6.028077947483691289e-04, +-6.064220477151274378e-04, +-6.100351367579355793e-04, +-6.136470560650549846e-04, +-6.172577998270886365e-04, +-6.208673622369244739e-04, +-6.244757374891691127e-04, +-6.280829197812111235e-04, +-6.316889033122615122e-04, +-6.352936822840862070e-04, +-6.388972509004559345e-04, +-6.424996033673946103e-04, +-6.461007338934268620e-04, +-6.497006366891120398e-04, +-6.532993059672857761e-04, +-6.568967359433220375e-04, +-6.604929208346471854e-04, +-6.640878548609994254e-04, +-6.676815322446748129e-04, +-6.712739472100583355e-04, +-6.748650939838676420e-04, +-6.784549667954122747e-04, +-6.820435598761141272e-04, +-6.856308674597569189e-04, +-6.892168837827431513e-04, +-6.928016030835360689e-04, +-6.963850196033909536e-04, +-6.999671275854055805e-04, +-7.035479212755669067e-04, +-7.071273949222036575e-04, +-7.107055427759144438e-04, +-7.142823590897327780e-04, +-7.178578381193826199e-04, +-7.214319741228047977e-04, +-7.250047613604075668e-04, +-7.285761940953102301e-04, +-7.321462665928795332e-04, +-7.357149731210541662e-04, +-7.392823079501998056e-04, +-7.428482653533503496e-04, +-7.464128396061402637e-04, +-7.499760249862593353e-04, +-7.535378157744116508e-04, +-7.570982062538518824e-04, +-7.606571907099125753e-04, +-7.642147634310554995e-04, +-7.677709187079163585e-04, +-7.713256508340355418e-04, +-7.748789541053110368e-04, +-7.784308228202420485e-04, +-7.819812512801799925e-04, +-7.855302337888599032e-04, +-7.890777646526489324e-04, +-7.926238381807925717e-04, +-7.961684486849440008e-04, +-7.997115904794194164e-04, +-8.032532578814376416e-04, +-8.067934452106556532e-04, +-8.103321467894200082e-04, +-8.138693569430068865e-04, +-8.174050699990784716e-04, +-8.209392802883304363e-04, +-8.244719821439389995e-04, +-8.280031699018141960e-04, +-8.315328379008407860e-04, +-8.350609804824206134e-04, +-8.385875919907073359e-04, +-8.421126667728638139e-04, +-8.456361991785911339e-04, +-8.491581835603767819e-04, +-8.526786142737334930e-04, +-8.561974856767520185e-04, +-8.597147921303259889e-04, +-8.632305279984086536e-04, +-8.667446876474746821e-04, +-8.702572654472221858e-04, +-8.737682557696589518e-04, +-8.772776529901122689e-04, +-8.807854514867819113e-04, +-8.842916456402664504e-04, +-8.877962298345273276e-04, +-8.912991984563325499e-04, +-8.948005458952041063e-04, +-8.983002665436506376e-04, +-9.017983547970232373e-04, +-9.052948050538321472e-04, +-9.087896117152978979e-04, +-9.122827691855870140e-04, +-9.157742718720568269e-04, +-9.192641141847932799e-04, +-9.227522905368599690e-04, +-9.262387953444554609e-04, +-9.297236230268521437e-04, +-9.332067680058521745e-04, +-9.366882247068175800e-04, +-9.401679875577375169e-04, +-9.436460509899352806e-04, +-9.471224094375476710e-04, +-9.505970573377460616e-04, +-9.540699891309983426e-04, +-9.575411992605956666e-04, +-9.610106821729073445e-04, +-9.644784323176114555e-04, +-9.679444441472453368e-04, +-9.714087121174473606e-04, +-9.748712306871896039e-04, +-9.783319943183369036e-04, +-9.817909974758683590e-04, +-9.852482346281419851e-04, +-9.887037002463394935e-04, +-9.921573888051077057e-04, +-9.956092947820223069e-04, +-9.990594126578281053e-04, +-1.002507736916753017e-03, +-1.005954262045679736e-03, +-1.009398982535142332e-03, +-1.012841892878807134e-03, +-1.016282987573394452e-03, +-1.019722261118852702e-03, +-1.023159708018590635e-03, +-1.026595322779022199e-03, +-1.030029099909814160e-03, +-1.033461033924118781e-03, +-1.036891119338125607e-03, +-1.040319350671370033e-03, +-1.043745722446604712e-03, +-1.047170229190021607e-03, +-1.050592865431185415e-03, +-1.054013625702523559e-03, +-1.057432504540227816e-03, +-1.060849496483747770e-03, +-1.064264596075720562e-03, +-1.067677797862190978e-03, +-1.071089096392490456e-03, +-1.074498486219539577e-03, +-1.077905961899400071e-03, +-1.081311517991512695e-03, +-1.084715149058936186e-03, +-1.088116849667895370e-03, +-1.091516614388018166e-03, +-1.094914437792510577e-03, +-1.098310314458059329e-03, +-1.101704238964337692e-03, +-1.105096205894994486e-03, +-1.108486209836805373e-03, +-1.111874245380024351e-03, +-1.115260307118586067e-03, +-1.118644389649598196e-03, +-1.122026487573958130e-03, +-1.125406595495821727e-03, +-1.128784708022852450e-03, +-1.132160819766443206e-03, +-1.135534925341276802e-03, +-1.138907019365567727e-03, +-1.142277096461289396e-03, +-1.145645151253730067e-03, +-1.149011178371729842e-03, +-1.152375172447914426e-03, +-1.155737128118256669e-03, +-1.159097040022297968e-03, +-1.162454902803401746e-03, +-1.165810711108218514e-03, +-1.169164459587375632e-03, +-1.172516142894593043e-03, +-1.175865755687652541e-03, +-1.179213292627896443e-03, +-1.182558748380149738e-03, +-1.185902117612884889e-03, +-1.189243394998451466e-03, +-1.192582575212638345e-03, +-1.195919652934975116e-03, +-1.199254622848602196e-03, +-1.202587479640565950e-03, +-1.205918218001391946e-03, +-1.209246832625303532e-03, +-1.212573318210389888e-03, +-1.215897669458533168e-03, +-1.219219881074903910e-03, +-1.222539947768850731e-03, +-1.225857864253472292e-03, +-1.229173625245176017e-03, +-1.232487225464655835e-03, +-1.235798659635997925e-03, +-1.239107922487377427e-03, +-1.242415008750526097e-03, +-1.245719913160973219e-03, +-1.249022630458280657e-03, +-1.252323155385599851e-03, +-1.255621482689903623e-03, +-1.258917607122214070e-03, +-1.262211523437176044e-03, +-1.265503226393282013e-03, +-1.268792710753093239e-03, +-1.272079971282819976e-03, +-1.275365002752541993e-03, +-1.278647799936443417e-03, +-1.281928357612297951e-03, +-1.285206670562074075e-03, +-1.288482733571426776e-03, +-1.291756541429914598e-03, +-1.295028088931251620e-03, +-1.298297370872850348e-03, +-1.301564382056072822e-03, +-1.304829117286433575e-03, +-1.308091571373198479e-03, +-1.311351739129579036e-03, +-1.314609615372991066e-03, +-1.317865194924604114e-03, +-1.321118472609653918e-03, +-1.324369443257287582e-03, +-1.327618101700813813e-03, +-1.330864442777625941e-03, +-1.334108461328693427e-03, +-1.337350152199455900e-03, +-1.340589510239389688e-03, +-1.343826530301576094e-03, +-1.347061207243591087e-03, +-1.350293535927001151e-03, +-1.353523511217286741e-03, +-1.356751127984086227e-03, +-1.359976381101051261e-03, +-1.363199265446141248e-03, +-1.366419775901205492e-03, +-1.369637907352197871e-03, +-1.372853654689408206e-03, +-1.376067012807040066e-03, +-1.379277976603428485e-03, +-1.382486540981270242e-03, +-1.385692700847187793e-03, +-1.388896451111970836e-03, +-1.392097786690792280e-03, +-1.395296702502709296e-03, +-1.398493193471240549e-03, +-1.401687254523901506e-03, +-1.404878880592384631e-03, +-1.408068066612813956e-03, +-1.411254807525315303e-03, +-1.414439098274236162e-03, +-1.417620933808366865e-03, +-1.420800309080528156e-03, +-1.423977219047774375e-03, +-1.427151658671646506e-03, +-1.430323622917720715e-03, +-1.433493106755857069e-03, +-1.436660105160391006e-03, +-1.439824613109743018e-03, +-1.442986625586633979e-03, +-1.446146137578281166e-03, +-1.449303144075945278e-03, +-1.452457640075554939e-03, +-1.455609620576870777e-03, +-1.458759080584405912e-03, +-1.461906015106951510e-03, +-1.465050419157509776e-03, +-1.468192287753434036e-03, +-1.471331615916654468e-03, +-1.474468398673274561e-03, +-1.477602631053838260e-03, +-1.480734308093214179e-03, +-1.483863424830875969e-03, +-1.486989976310497917e-03, +-1.490113957580157904e-03, +-1.493235363692506324e-03, +-1.496354189704682822e-03, +-1.499470430677846827e-03, +-1.502584081678019767e-03, +-1.505695137775611052e-03, +-1.508803594045347385e-03, +-1.511909445566487651e-03, +-1.515012687422704306e-03, +-1.518113314702356593e-03, +-1.521211322498088958e-03, +-1.524306705907044202e-03, +-1.527399460031079450e-03, +-1.530489579976352429e-03, +-1.533577060853554778e-03, +-1.536661897778110464e-03, +-1.539744085869760963e-03, +-1.542823620252813544e-03, +-1.545900496056321896e-03, +-1.548974708413693646e-03, +-1.552046252462911322e-03, +-1.555115123346736397e-03, +-1.558181316212232459e-03, +-1.561244826211341140e-03, +-1.564305648500388581e-03, +-1.567363778240305969e-03, +-1.570419210596854173e-03, +-1.573471940740196360e-03, +-1.576521963845139767e-03, +-1.579569275091315247e-03, +-1.582613869662816662e-03, +-1.585655742748370671e-03, +-1.588694889541571349e-03, +-1.591731305240487709e-03, +-1.594764985047917617e-03, +-1.597795924171275693e-03, +-1.600824117822811877e-03, +-1.603849561219534894e-03, +-1.606872249582749074e-03, +-1.609892178138882472e-03, +-1.612909342119008731e-03, +-1.615923736758808054e-03, +-1.618935357298677356e-03, +-1.621944198983973776e-03, +-1.624950257064590540e-03, +-1.627953526795254029e-03, +-1.630954003435388473e-03, +-1.633951682249388301e-03, +-1.636946558506227611e-03, +-1.639938627479666606e-03, +-1.642927884448398389e-03, +-1.645914324695980447e-03, +-1.648897943510384051e-03, +-1.651878736184862273e-03, +-1.654856698017221402e-03, +-1.657831824310104134e-03, +-1.660804110371196657e-03, +-1.663773551512761793e-03, +-1.666740143052182184e-03, +-1.669703880311498856e-03, +-1.672664758617626972e-03, +-1.675622773302556847e-03, +-1.678577919702956261e-03, +-1.681530193160394454e-03, +-1.684479589021531864e-03, +-1.687426102637740004e-03, +-1.690369729365292931e-03, +-1.693310464565593414e-03, +-1.696248303604771124e-03, +-1.699183241853882784e-03, +-1.702115274689140279e-03, +-1.705044397491425152e-03, +-1.707970605646917227e-03, +-1.710893894546290346e-03, +-1.713814259585593391e-03, +-1.716731696165776054e-03, +-1.719646199692649808e-03, +-1.722557765577016273e-03, +-1.725466389234874085e-03, +-1.728372066087032486e-03, +-1.731274791559320137e-03, +-1.734174561082774645e-03, +-1.737071370093274574e-03, +-1.739965214031786653e-03, +-1.742856088344266023e-03, +-1.745743988481918184e-03, +-1.748628909900798922e-03, +-1.751510848062032234e-03, +-1.754389798431944337e-03, +-1.757265756482007937e-03, +-1.760138717688387736e-03, +-1.763008677532797381e-03, +-1.765875631501724044e-03, +-1.768739575087026035e-03, +-1.771600503785473318e-03, +-1.774458413098962831e-03, +-1.777313298534716679e-03, +-1.780165155604892689e-03, +-1.783013979826792361e-03, +-1.785859766723057974e-03, +-1.788702511821299839e-03, +-1.791542210654289069e-03, +-1.794378858760157505e-03, +-1.797212451682026271e-03, +-1.800042984968197243e-03, +-1.802870454172356227e-03, +-1.805694854853132992e-03, +-1.808516182574617564e-03, +-1.811334432905924380e-03, +-1.814149601421373784e-03, +-1.816961683700717102e-03, +-1.819770675328743733e-03, +-1.822576571895483675e-03, +-1.825379368996395526e-03, +-1.828179062232018022e-03, +-1.830975647208133751e-03, +-1.833769119535990765e-03, +-1.836559474831923758e-03, +-1.839346708717547706e-03, +-1.842130816819948468e-03, +-1.844911794771317195e-03, +-1.847689638209221163e-03, +-1.850464342776470851e-03, +-1.853235904121300999e-03, +-1.856004317897351963e-03, +-1.858769579763206326e-03, +-1.861531685383164105e-03, +-1.864290630426798222e-03, +-1.867046410568907674e-03, +-1.869799021489649150e-03, +-1.872548458874739342e-03, +-1.875294718415052063e-03, +-1.878037795806922899e-03, +-1.880777686752004149e-03, +-1.883514386957509633e-03, +-1.886247892135887484e-03, +-1.888978198004964996e-03, +-1.891705300288118409e-03, +-1.894429194714193328e-03, +-1.897149877017103138e-03, +-1.899867342936600520e-03, +-1.902581588217580090e-03, +-1.905292608610630913e-03, +-1.908000399871590674e-03, +-1.910704957761773150e-03, +-1.913406278048118258e-03, +-1.916104356502873083e-03, +-1.918799188903744972e-03, +-1.921490771034108612e-03, +-1.924179098682658436e-03, +-1.926864167643567135e-03, +-1.929545973716708784e-03, +-1.932224512707268098e-03, +-1.934899780425962043e-03, +-1.937571772689192489e-03, +-1.940240485318730492e-03, +-1.942905914141860929e-03, +-1.945568054991608656e-03, +-1.948226903706298113e-03, +-1.950882456130104744e-03, +-1.953534708112348965e-03, +-1.956183655508284599e-03, +-1.958829294178669311e-03, +-1.961471619989727747e-03, +-1.964110628813274268e-03, +-1.966746316526885984e-03, +-1.969378679013567956e-03, +-1.972007712161931003e-03, +-1.974633411866374283e-03, +-1.977255774026744420e-03, +-1.979874794548561884e-03, +-1.982490469342929919e-03, +-1.985102794326703678e-03, +-1.987711765422439051e-03, +-1.990317378557991939e-03, +-1.992919629667236434e-03, +-1.995518514689633306e-03, +-1.998114029570213085e-03, +-2.000706170259731759e-03, +-2.003294932714570591e-03, +-2.005880312896979410e-03, +-2.008462306774723167e-03, +-2.011040910321267115e-03, +-2.013616119515960253e-03, +-2.016187930343695325e-03, +-2.018756338795080121e-03, +-2.021321340866621789e-03, +-2.023882932560389005e-03, +-2.026441109884186739e-03, +-2.028995868851744475e-03, +-2.031547205482361895e-03, +-2.034095115801099266e-03, +-2.036639595838954809e-03, +-2.039180641632462251e-03, +-2.041718249224161365e-03, +-2.044252414662198983e-03, +-2.046783134000526323e-03, +-2.049310403299040365e-03, +-2.051834218623272039e-03, +-2.054354576044564468e-03, +-2.056871471640243833e-03, +-2.059384901493275036e-03, +-2.061894861692460321e-03, +-2.064401348332592801e-03, +-2.066904357514135968e-03, +-2.069403885343398027e-03, +-2.071899927932701040e-03, +-2.074392481400001449e-03, +-2.076881541869393145e-03, +-2.079367105470442210e-03, +-2.081849168338937173e-03, +-2.084327726616529933e-03, +-2.086802776450428706e-03, +-2.089274313994063294e-03, +-2.091742335406715590e-03, +-2.094206836853439776e-03, +-2.096667814505277869e-03, +-2.099125264539108797e-03, +-2.101579183137915544e-03, +-2.104029566490431703e-03, +-2.106476410791321020e-03, +-2.108919712241358237e-03, +-2.111359467047102534e-03, +-2.113795671421042372e-03, +-2.116228321581747722e-03, +-2.118657413753801105e-03, +-2.121082944167427663e-03, +-2.123504909059203798e-03, +-2.125923304671409678e-03, +-2.128338127252540554e-03, +-2.130749373056898665e-03, +-2.133157038344805738e-03, +-2.135561119382736132e-03, +-2.137961612443005019e-03, +-2.140358513803955736e-03, +-2.142751819750099863e-03, +-2.145141526571817548e-03, +-2.147527630565523610e-03, +-2.149910128033831035e-03, +-2.152289015285218775e-03, +-2.154664288634238183e-03, +-2.157035944401641380e-03, +-2.159403978914023470e-03, +-2.161768388504263592e-03, +-2.164129169511151956e-03, +-2.166486318279551172e-03, +-2.168839831160624364e-03, +-2.171189704511251005e-03, +-2.173535934694717769e-03, +-2.175878518080354672e-03, +-2.178217451043500379e-03, +-2.180552729965590675e-03, +-2.182884351234352753e-03, +-2.185212311243462605e-03, +-2.187536606392721968e-03, +-2.189857233088236127e-03, +-2.192174187742076952e-03, +-2.194487466772522283e-03, +-2.196797066603943180e-03, +-2.199102983666971749e-03, +-2.201405214398439569e-03, +-2.203703755241054590e-03, +-2.205998602643980972e-03, +-2.208289753062531603e-03, +-2.210577202958083961e-03, +-2.212860948798253159e-03, +-2.215140987056806940e-03, +-2.217417314213854327e-03, +-2.219689926755561565e-03, +-2.221958821174292633e-03, +-2.224223993968790520e-03, +-2.226485441643872784e-03, +-2.228743160710551681e-03, +-2.230997147686207636e-03, +-2.233247399094478221e-03, +-2.235493911464964557e-03, +-2.237736681333839760e-03, +-2.239975705243299475e-03, +-2.242210979741989050e-03, +-2.244442501384659623e-03, +-2.246670266732350273e-03, +-2.248894272352498173e-03, +-2.251114514818680547e-03, +-2.253330990710769935e-03, +-2.255543696615046074e-03, +-2.257752629123968222e-03, +-2.259957784836269697e-03, +-2.262159160357151734e-03, +-2.264356752297966464e-03, +-2.266550557276391254e-03, +-2.268740571916560544e-03, +-2.270926792848793063e-03, +-2.273109216709741018e-03, +-2.275287840142530167e-03, +-2.277462659796438034e-03, +-2.279633672327326284e-03, +-2.281800874397077374e-03, +-2.283964262674207778e-03, +-2.286123833833549231e-03, +-2.288279584556211430e-03, +-2.290431511529676147e-03, +-2.292579611447931234e-03, +-2.294723881011213450e-03, +-2.296864316926188442e-03, +-2.299000915905874843e-03, +-2.301133674669819922e-03, +-2.303262589943827661e-03, +-2.305387658460126589e-03, +-2.307508876957440041e-03, +-2.309626242180946257e-03, +-2.311739750881976110e-03, +-2.313849399818557369e-03, +-2.315955185755159702e-03, +-2.318057105462406273e-03, +-2.320155155717681765e-03, +-2.322249333304588978e-03, +-2.324339635013372967e-03, +-2.326426057640585375e-03, +-2.328508597989234052e-03, +-2.330587252868956093e-03, +-2.332662019095696915e-03, +-2.334732893491881563e-03, +-2.336799872886561723e-03, +-2.338862954115131666e-03, +-2.340922134019473959e-03, +-2.342977409448101719e-03, +-2.345028777255901437e-03, +-2.347076234304250070e-03, +-2.349119777461175073e-03, +-2.351159403601037375e-03, +-2.353195109604908249e-03, +-2.355226892360219332e-03, +-2.357254748760956916e-03, +-2.359278675707764290e-03, +-2.361298670107690647e-03, +-2.363314728874317712e-03, +-2.365326848927917607e-03, +-2.367335027195183531e-03, +-2.369339260609358566e-03, +-2.371339546110372287e-03, +-2.373335880644607872e-03, +-2.375328261165044353e-03, +-2.377316684631197632e-03, +-2.379301148009254924e-03, +-2.381281648272024886e-03, +-2.383258182398645744e-03, +-2.385230747375108751e-03, +-2.387199340194005783e-03, +-2.389163957854268695e-03, +-2.391124597361694078e-03, +-2.393081255728653559e-03, +-2.395033929974042623e-03, +-2.396982617123423302e-03, +-2.398927314208927023e-03, +-2.400868018269469717e-03, +-2.402804726350444772e-03, +-2.404737435503910385e-03, +-2.406666142788668923e-03, +-2.408590845270063528e-03, +-2.410511540020076563e-03, +-2.412428224117478363e-03, +-2.414340894647576136e-03, +-2.416249548702332356e-03, +-2.418154183380520888e-03, +-2.420054795787405632e-03, +-2.421951383035099610e-03, +-2.423843942242287844e-03, +-2.425732470534315392e-03, +-2.427616965043370365e-03, +-2.429497422908194655e-03, +-2.431373841274233564e-03, +-2.433246217293768936e-03, +-2.435114548125657218e-03, +-2.436978830935464767e-03, +-2.438839062895611833e-03, +-2.440695241185114085e-03, +-2.442547362989697535e-03, +-2.444395425501956834e-03, +-2.446239425921090723e-03, +-2.448079361453039081e-03, +-2.449915229310602616e-03, +-2.451747026713174422e-03, +-2.453574750887098192e-03, +-2.455398399065177300e-03, +-2.457217968487228170e-03, +-2.459033456399790582e-03, +-2.460844860056087772e-03, +-2.462652176716115769e-03, +-2.464455403646766563e-03, +-2.466254538121587844e-03, +-2.468049577420959075e-03, +-2.469840518832006494e-03, +-2.471627359648751864e-03, +-2.473410097171922957e-03, +-2.475188728709018602e-03, +-2.476963251574437058e-03, +-2.478733663089430477e-03, +-2.480499960581802193e-03, +-2.482262141386432780e-03, +-2.484020202844970833e-03, +-2.485774142305809120e-03, +-2.487523957124222924e-03, +-2.489269644662260323e-03, +-2.491011202288936910e-03, +-2.492748627379982960e-03, +-2.494481917317981339e-03, +-2.496211069492464650e-03, +-2.497936081299722243e-03, +-2.499656950142877410e-03, +-2.501373673432046550e-03, +-2.503086248584079389e-03, +-2.504794673022703831e-03, +-2.506498944178623973e-03, +-2.508199059489315402e-03, +-2.509895016399126683e-03, +-2.511586812359398180e-03, +-2.513274444828208793e-03, +-2.514957911270689940e-03, +-2.516637209158733689e-03, +-2.518312335971140646e-03, +-2.519983289193724902e-03, +-2.521650066319095461e-03, +-2.523312664846765526e-03, +-2.524971082283276966e-03, +-2.526625316141970033e-03, +-2.528275363943114327e-03, +-2.529921223214006386e-03, +-2.531562891488762807e-03, +-2.533200366308462070e-03, +-2.534833645221094226e-03, +-2.536462725781644598e-03, +-2.538087605552095949e-03, +-2.539708282101137918e-03, +-2.541324753004631926e-03, +-2.542937015845378283e-03, +-2.544545068213031197e-03, +-2.546148907704214124e-03, +-2.547748531922629494e-03, +-2.549343938478838400e-03, +-2.550935124990401977e-03, +-2.552522089081818522e-03, +-2.554104828384678744e-03, +-2.555683340537440694e-03, +-2.557257623185550752e-03, +-2.558827673981519096e-03, +-2.560393490584868086e-03, +-2.561955070661922802e-03, +-2.563512411886231281e-03, +-2.565065511938225372e-03, +-2.566614368505320924e-03, +-2.568158979282066968e-03, +-2.569699341969874668e-03, +-2.571235454277312222e-03, +-2.572767313919855931e-03, +-2.574294918620006426e-03, +-2.575818266107410097e-03, +-2.577337354118625773e-03, +-2.578852180397236179e-03, +-2.580362742693975437e-03, +-2.581869038766503553e-03, +-2.583371066379537388e-03, +-2.584868823304932624e-03, +-2.586362307321484703e-03, +-2.587851516215053729e-03, +-2.589336447778652073e-03, +-2.590817099812210179e-03, +-2.592293470122894027e-03, +-2.593765556524705272e-03, +-2.595233356838900617e-03, +-2.596696868893782345e-03, +-2.598156090524657551e-03, +-2.599611019573924448e-03, +-2.601061653891141318e-03, +-2.602507991332863452e-03, +-2.603950029762730316e-03, +-2.605387767051572673e-03, +-2.606821201077202683e-03, +-2.608250329724588670e-03, +-2.609675150885740636e-03, +-2.611095662459883733e-03, +-2.612511862353232312e-03, +-2.613923748479140847e-03, +-2.615331318758104366e-03, +-2.616734571117794016e-03, +-2.618133503492792516e-03, +-2.619528113825032173e-03, +-2.620918400063401103e-03, +-2.622304360164040733e-03, +-2.623685992090148914e-03, +-2.625063293812030223e-03, +-2.626436263307233010e-03, +-2.627804898560347734e-03, +-2.629169197563101506e-03, +-2.630529158314463909e-03, +-2.631884778820461381e-03, +-2.633236057094260046e-03, +-2.634582991156286282e-03, +-2.635925579034009876e-03, +-2.637263818762086275e-03, +-2.638597708382400386e-03, +-2.639927245943892668e-03, +-2.641252429502788119e-03, +-2.642573257122387241e-03, +-2.643889726873167086e-03, +-2.645201836832876234e-03, +-2.646509585086337466e-03, +-2.647812969725576570e-03, +-2.649111988849867441e-03, +-2.650406640565599811e-03, +-2.651696922986336927e-03, +-2.652982834232943486e-03, +-2.654264372433370531e-03, +-2.655541535722776014e-03, +-2.656814322243611533e-03, +-2.658082730145427171e-03, +-2.659346757585018522e-03, +-2.660606402726372471e-03, +-2.661861663740711439e-03, +-2.663112538806528939e-03, +-2.664359026109354520e-03, +-2.665601123842094647e-03, +-2.666838830204873532e-03, +-2.668072143404958112e-03, +-2.669301061656860832e-03, +-2.670525583182380841e-03, +-2.671745706210489936e-03, +-2.672961428977423202e-03, +-2.674172749726601815e-03, +-2.675379666708779195e-03, +-2.676582178181881842e-03, +-2.677780282411050972e-03, +-2.678973977668752237e-03, +-2.680163262234717177e-03, +-2.681348134395774088e-03, +-2.682528592446180651e-03, +-2.683704634687325997e-03, +-2.684876259427956217e-03, +-2.686043464984012603e-03, +-2.687206249678682386e-03, +-2.688364611842505858e-03, +-2.689518549813215472e-03, +-2.690668061935804368e-03, +-2.691813146562627851e-03, +-2.692953802053225151e-03, +-2.694090026774428274e-03, +-2.695221819100404072e-03, +-2.696349177412553626e-03, +-2.697472100099532633e-03, +-2.698590585557370664e-03, +-2.699704632189315907e-03, +-2.700814238405899355e-03, +-2.701919402625025442e-03, +-2.703020123271785129e-03, +-2.704116398778709605e-03, +-2.705208227585420740e-03, +-2.706295608139033977e-03, +-2.707378538893919807e-03, +-2.708457018311695094e-03, +-2.709531044861307209e-03, +-2.710600617019074798e-03, +-2.711665733268568083e-03, +-2.712726392100648330e-03, +-2.713782592013580606e-03, +-2.714834331512889359e-03, +-2.715881609111412635e-03, +-2.716924423329312912e-03, +-2.717962772694111368e-03, +-2.718996655740691781e-03, +-2.720026071011115779e-03, +-2.721051017054910807e-03, +-2.722071492428927882e-03, +-2.723087495697296048e-03, +-2.724099025431514325e-03, +-2.725106080210380581e-03, +-2.726108658620128578e-03, +-2.727106759254238448e-03, +-2.728100380713546422e-03, +-2.729089521606297298e-03, +-2.730074180548040363e-03, +-2.731054356161641532e-03, +-2.732030047077405217e-03, +-2.733001251932913860e-03, +-2.733967969373120744e-03, +-2.734930198050384686e-03, +-2.735887936624373760e-03, +-2.736841183762094790e-03, +-2.737789938138015210e-03, +-2.738734198433850128e-03, +-2.739673963338788275e-03, +-2.740609231549300754e-03, +-2.741540001769262897e-03, +-2.742466272709951237e-03, +-2.743388043089963271e-03, +-2.744305311635289457e-03, +-2.745218077079328821e-03, +-2.746126338162828678e-03, +-2.747030093633882897e-03, +-2.747929342248062439e-03, +-2.748824082768233212e-03, +-2.749714313964669258e-03, +-2.750600034615076610e-03, +-2.751481243504474029e-03, +-2.752357939425369941e-03, +-2.753230121177527821e-03, +-2.754097787568226402e-03, +-2.754960937412122626e-03, +-2.755819569531170118e-03, +-2.756673682754827784e-03, +-2.757523275919955292e-03, +-2.758368347870730243e-03, +-2.759208897458803426e-03, +-2.760044923543168282e-03, +-2.760876424990315291e-03, +-2.761703400674051997e-03, +-2.762525849475631380e-03, +-2.763343770283738839e-03, +-2.764157161994438856e-03, +-2.764966023511186265e-03, +-2.765770353744914731e-03, +-2.766570151613966487e-03, +-2.767365416044001263e-03, +-2.768156145968242617e-03, +-2.768942340327205150e-03, +-2.769723998068922624e-03, +-2.770501118148790531e-03, +-2.771273699529641990e-03, +-2.772041741181769433e-03, +-2.772805242082840467e-03, +-2.773564201217955990e-03, +-2.774318617579703532e-03, +-2.775068490168041031e-03, +-2.775813817990361448e-03, +-2.776554600061531368e-03, +-2.777290835403823342e-03, +-2.778022523046917627e-03, +-2.778749662028009732e-03, +-2.779472251391637821e-03, +-2.780190290189860081e-03, +-2.780903777482130693e-03, +-2.781612712335338432e-03, +-2.782317093823868243e-03, +-2.783016921029450759e-03, +-2.783712193041357457e-03, +-2.784402908956285731e-03, +-2.785089067878334171e-03, +-2.785770668919074992e-03, +-2.786447711197559234e-03, +-2.787120193840241737e-03, +-2.787788115981037953e-03, +-2.788451476761349100e-03, +-2.789110275329993206e-03, +-2.789764510843256284e-03, +-2.790414182464859370e-03, +-2.791059289366011002e-03, +-2.791699830725402880e-03, +-2.792335805729072827e-03, +-2.792967213570625093e-03, +-2.793594053451101990e-03, +-2.794216324578983890e-03, +-2.794834026170219584e-03, +-2.795447157448214572e-03, +-2.796055717643857515e-03, +-2.796659705995494221e-03, +-2.797259121748911156e-03, +-2.797853964157410913e-03, +-2.798444232481724168e-03, +-2.799029925990042210e-03, +-2.799611043958051635e-03, +-2.800187585668932177e-03, +-2.800759550413243516e-03, +-2.801326937489113066e-03, +-2.801889746202082011e-03, +-2.802447975865198990e-03, +-2.803001625798961106e-03, +-2.803550695331336919e-03, +-2.804095183797797666e-03, +-2.804635090541266092e-03, +-2.805170414912138126e-03, +-2.805701156268324090e-03, +-2.806227313975159354e-03, +-2.806748887405480231e-03, +-2.807265875939624414e-03, +-2.807778278965375029e-03, +-2.808286095878001400e-03, +-2.808789326080284639e-03, +-2.809287968982438280e-03, +-2.809782024002193714e-03, +-2.810271490564763327e-03, +-2.810756368102809710e-03, +-2.811236656056536731e-03, +-2.811712353873564198e-03, +-2.812183461009038019e-03, +-2.812649976925595940e-03, +-2.813111901093337183e-03, +-2.813569232989857581e-03, +-2.814021972100243067e-03, +-2.814470117917061004e-03, +-2.814913669940367121e-03, +-2.815352627677689037e-03, +-2.815786990644090874e-03, +-2.816216758362074385e-03, +-2.816641930361641830e-03, +-2.817062506180309858e-03, +-2.817478485363083054e-03, +-2.817889867462401027e-03, +-2.818296652038262441e-03, +-2.818698838658147392e-03, +-2.819096426896962760e-03, +-2.819489416337188793e-03, +-2.819877806568739462e-03, +-2.820261597189068718e-03, +-2.820640787803097189e-03, +-2.821015378023210892e-03, +-2.821385367469355331e-03, +-2.821750755768913637e-03, +-2.822111542556772924e-03, +-2.822467727475338594e-03, +-2.822819310174488807e-03, +-2.823166290311594426e-03, +-2.823508667551537232e-03, +-2.823846441566680004e-03, +-2.824179612036872584e-03, +-2.824508178649486143e-03, +-2.824832141099364174e-03, +-2.825151499088859354e-03, +-2.825466252327807955e-03, +-2.825776400533541993e-03, +-2.826081943430900495e-03, +-2.826382880752216064e-03, +-2.826679212237295791e-03, +-2.826970937633469395e-03, +-2.827258056695556698e-03, +-2.827540569185853746e-03, +-2.827818474874179214e-03, +-2.828091773537829302e-03, +-2.828360464961607659e-03, +-2.828624548937786354e-03, +-2.828884025266165721e-03, +-2.829138893754057013e-03, +-2.829389154216193497e-03, +-2.829634806474880509e-03, +-2.829875850359887465e-03, +-2.830112285708461309e-03, +-2.830344112365384621e-03, +-2.830571330182906666e-03, +-2.830793939020774183e-03, +-2.831011938746231388e-03, +-2.831225329234024306e-03, +-2.831434110366391668e-03, +-2.831638282033052765e-03, +-2.831837844131233906e-03, +-2.832032796565656704e-03, +-2.832223139248531574e-03, +-2.832408872099550796e-03, +-2.832589995045931008e-03, +-2.832766508022352501e-03, +-2.832938410970991302e-03, +-2.833105703841543033e-03, +-2.833268386591147880e-03, +-2.833426459184490345e-03, +-2.833579921593702526e-03, +-2.833728773798443925e-03, +-2.833873015785835087e-03, +-2.834012647550504440e-03, +-2.834147669094557939e-03, +-2.834278080427608988e-03, +-2.834403881566744179e-03, +-2.834525072536543677e-03, +-2.834641653369083386e-03, +-2.834753624103920205e-03, +-2.834860984788091596e-03, +-2.834963735476143335e-03, +-2.835061876230076609e-03, +-2.835155407119419133e-03, +-2.835244328221147962e-03, +-2.835328639619750200e-03, +-2.835408341407181371e-03, +-2.835483433682885798e-03, +-2.835553916553797908e-03, +-2.835619790134330086e-03, +-2.835681054546377883e-03, +-2.835737709919317409e-03, +-2.835789756390006636e-03, +-2.835837194102801880e-03, +-2.835880023209499685e-03, +-2.835918243869408814e-03, +-2.835951856249321196e-03, +-2.835980860523478093e-03, +-2.836005256873618680e-03, +-2.836025045488959218e-03, +-2.836040226566194367e-03, +-2.836050800309472455e-03, +-2.836056766930448395e-03, +-2.836058126648225569e-03, +-2.836054879689400929e-03, +-2.836047026288032909e-03, +-2.836034566685644021e-03, +-2.836017501131249483e-03, +-2.835995829881314285e-03, +-2.835969553199793949e-03, +-2.835938671358093337e-03, +-2.835903184635094401e-03, +-2.835863093317142307e-03, +-2.835818397698056711e-03, +-2.835769098079123952e-03, +-2.835715194769073636e-03, +-2.835656688084131974e-03, +-2.835593578347960636e-03, +-2.835525865891697084e-03, +-2.835453551053933319e-03, +-2.835376634180732363e-03, +-2.835295115625604406e-03, +-2.835208995749525455e-03, +-2.835118274920918682e-03, +-2.835022953515686523e-03, +-2.834923031917160365e-03, +-2.834818510516138711e-03, +-2.834709389710877644e-03, +-2.834595669907077377e-03, +-2.834477351517893096e-03, +-2.834354434963932360e-03, +-2.834226920673246861e-03, +-2.834094809081339796e-03, +-2.833958100631162828e-03, +-2.833816795773115224e-03, +-2.833670894965033445e-03, +-2.833520398672207622e-03, +-2.833365307367361179e-03, +-2.833205621530671212e-03, +-2.833041341649737265e-03, +-2.832872468219618193e-03, +-2.832699001742800936e-03, +-2.832520942729199222e-03, +-2.832338291696191290e-03, +-2.832151049168559614e-03, +-2.831959215678536007e-03, +-2.831762791765779930e-03, +-2.831561777977391076e-03, +-2.831356174867881176e-03, +-2.831145982999202625e-03, +-2.830931202940733301e-03, +-2.830711835269277433e-03, +-2.830487880569049122e-03, +-2.830259339431720911e-03, +-2.830026212456348764e-03, +-2.829788500249428001e-03, +-2.829546203424864684e-03, +-2.829299322603995564e-03, +-2.829047858415566826e-03, +-2.828791811495743203e-03, +-2.828531182488075446e-03, +-2.828265972043582290e-03, +-2.827996180820636831e-03, +-2.827721809485048924e-03, +-2.827442858710044367e-03, +-2.827159329176237579e-03, +-2.826871221571645911e-03, +-2.826578536591715235e-03, +-2.826281274939255756e-03, +-2.825979437324519210e-03, +-2.825673024465114296e-03, +-2.825362037086091675e-03, +-2.825046475919865043e-03, +-2.824726341706243656e-03, +-2.824401635192445338e-03, +-2.824072357133078706e-03, +-2.823738508290121046e-03, +-2.823400089432955614e-03, +-2.823057101338357321e-03, +-2.822709544790460209e-03, +-2.822357420580809493e-03, +-2.822000729508312121e-03, +-2.821639472379278840e-03, +-2.821273650007359579e-03, +-2.820903263213604163e-03, +-2.820528312826457110e-03, +-2.820148799681700385e-03, +-2.819764724622491562e-03, +-2.819376088499384210e-03, +-2.818982892170276283e-03, +-2.818585136500449586e-03, +-2.818182822362509492e-03, +-2.817775950636480353e-03, +-2.817364522209714426e-03, +-2.816948537976917029e-03, +-2.816527998840176027e-03, +-2.816102905708917602e-03, +-2.815673259499914486e-03, +-2.815239061137298545e-03, +-2.814800311552577688e-03, +-2.814357011684553034e-03, +-2.813909162479413893e-03, +-2.813456764890690052e-03, +-2.812999819879224463e-03, +-2.812538328413244793e-03, +-2.812072291468261948e-03, +-2.811601710027171550e-03, +-2.811126585080195826e-03, +-2.810646917624845444e-03, +-2.810162708666017958e-03, +-2.809673959215924516e-03, +-2.809180670294062539e-03, +-2.808682842927309829e-03, +-2.808180478149842167e-03, +-2.807673577003136356e-03, +-2.807162140536009244e-03, +-2.806646169804614694e-03, +-2.806125665872369855e-03, +-2.805600629810031926e-03, +-2.805071062695670830e-03, +-2.804536965614671824e-03, +-2.803998339659709033e-03, +-2.803455185930731584e-03, +-2.802907505535068983e-03, +-2.802355299587277592e-03, +-2.801798569209236478e-03, +-2.801237315530123121e-03, +-2.800671539686409948e-03, +-2.800101242821837009e-03, +-2.799526426087464454e-03, +-2.798947090641611384e-03, +-2.798363237649918733e-03, +-2.797774868285239983e-03, +-2.797181983727776901e-03, +-2.796584585164988476e-03, +-2.795982673791586135e-03, +-2.795376250809541128e-03, +-2.794765317428178197e-03, +-2.794149874863992560e-03, +-2.793529924340815585e-03, +-2.792905467089673403e-03, +-2.792276504348913547e-03, +-2.791643037364131656e-03, +-2.791005067388126811e-03, +-2.790362595681025130e-03, +-2.789715623510170914e-03, +-2.789064152150122315e-03, +-2.788408182882741969e-03, +-2.787747716997124141e-03, +-2.787082755789560030e-03, +-2.786413300563619303e-03, +-2.785739352630122335e-03, +-2.785060913307072124e-03, +-2.784377983919740594e-03, +-2.783690565800633464e-03, +-2.782998660289445151e-03, +-2.782302268733143329e-03, +-2.781601392485846206e-03, +-2.780896032908997725e-03, +-2.780186191371153328e-03, +-2.779471869248127842e-03, +-2.778753067922941269e-03, +-2.778029788785850007e-03, +-2.777302033234256649e-03, +-2.776569802672807993e-03, +-2.775833098513373360e-03, +-2.775091922174938771e-03, +-2.774346275083768281e-03, +-2.773596158673278644e-03, +-2.772841574384100026e-03, +-2.772082523664031340e-03, +-2.771319007968003380e-03, +-2.770551028758258798e-03, +-2.769778587504110115e-03, +-2.769001685682064614e-03, +-2.768220324775836922e-03, +-2.767434506276280921e-03, +-2.766644231681462170e-03, +-2.765849502496536046e-03, +-2.765050320233878711e-03, +-2.764246686413035937e-03, +-2.763438602560648952e-03, +-2.762626070210562855e-03, +-2.761809090903771541e-03, +-2.760987666188396018e-03, +-2.760161797619672692e-03, +-2.759331486760091285e-03, +-2.758496735179153704e-03, +-2.757657544453569632e-03, +-2.756813916167182802e-03, +-2.755965851910916354e-03, +-2.755113353282893831e-03, +-2.754256421888284789e-03, +-2.753395059339434903e-03, +-2.752529267255819125e-03, +-2.751659047263969263e-03, +-2.750784400997578500e-03, +-2.749905330097458019e-03, +-2.749021836211455044e-03, +-2.748133920994601156e-03, +-2.747241586109009509e-03, +-2.746344833223839706e-03, +-2.745443664015407084e-03, +-2.744538080167114626e-03, +-2.743628083369383137e-03, +-2.742713675319823421e-03, +-2.741794857723019434e-03, +-2.740871632290759873e-03, +-2.739944000741800084e-03, +-2.739011964801992601e-03, +-2.738075526204300156e-03, +-2.737134686688737564e-03, +-2.736189448002334431e-03, +-2.735239811899240966e-03, +-2.734285780140644721e-03, +-2.733327354494797905e-03, +-2.732364536736949304e-03, +-2.731397328649465273e-03, +-2.730425732021733894e-03, +-2.729449748650145894e-03, +-2.728469380338171407e-03, +-2.727484628896332652e-03, +-2.726495496142127602e-03, +-2.725501983900068155e-03, +-2.724504094001815868e-03, +-2.723501828285895300e-03, +-2.722495188597970264e-03, +-2.721484176790626985e-03, +-2.720468794723530665e-03, +-2.719449044263341341e-03, +-2.718424927283672691e-03, +-2.717396445665200017e-03, +-2.716363601295593462e-03, +-2.715326396069450785e-03, +-2.714284831888430938e-03, +-2.713238910661176003e-03, +-2.712188634303247439e-03, +-2.711134004737257488e-03, +-2.710075023892785043e-03, +-2.709011693706317534e-03, +-2.707944016121413989e-03, +-2.706871993088502508e-03, +-2.705795626565030750e-03, +-2.704714918515422131e-03, +-2.703629870910944852e-03, +-2.702540485730013306e-03, +-2.701446764957814682e-03, +-2.700348710586531441e-03, +-2.699246324615313559e-03, +-2.698139609050268558e-03, +-2.697028565904351777e-03, +-2.695913197197522069e-03, +-2.694793504956681518e-03, +-2.693669491215565717e-03, +-2.692541158014905966e-03, +-2.691408507402333426e-03, +-2.690271541432405576e-03, +-2.689130262166540292e-03, +-2.687984671673049678e-03, +-2.686834772027282738e-03, +-2.685680565311338724e-03, +-2.684522053614228024e-03, +-2.683359239031932013e-03, +-2.682192123667250395e-03, +-2.681020709629924805e-03, +-2.679844999036475311e-03, +-2.678664994010397735e-03, +-2.677480696682035290e-03, +-2.676292109188549082e-03, +-2.675099233674005719e-03, +-2.673902072289354760e-03, +-2.672700627192353250e-03, +-2.671494900547570928e-03, +-2.670284894526596224e-03, +-2.669070611307659390e-03, +-2.667852053075988987e-03, +-2.666629222023520016e-03, +-2.665402120349108592e-03, +-2.664170750258441304e-03, +-2.662935113963952813e-03, +-2.661695213684976344e-03, +-2.660451051647656946e-03, +-2.659202630084878637e-03, +-2.657949951236413585e-03, +-2.656693017348832776e-03, +-2.655431830675434018e-03, +-2.654166393476404141e-03, +-2.652896708018701900e-03, +-2.651622776576002902e-03, +-2.650344601428852691e-03, +-2.649062184864575242e-03, +-2.647775529177188395e-03, +-2.646484636667590772e-03, +-2.645189509643318046e-03, +-2.643890150418861263e-03, +-2.642586561315306021e-03, +-2.641278744660519821e-03, +-2.639966702789181118e-03, +-2.638650438042721216e-03, +-2.637329952769213240e-03, +-2.636005249323584640e-03, +-2.634676330067441553e-03, +-2.633343197369167679e-03, +-2.632005853603775966e-03, +-2.630664301153109400e-03, +-2.629318542405708736e-03, +-2.627968579756774763e-03, +-2.626614415608207343e-03, +-2.625256052368762829e-03, +-2.623893492453740085e-03, +-2.622526738285169568e-03, +-2.621155792291818103e-03, +-2.619780656909123390e-03, +-2.618401334579243886e-03, +-2.617017827750907442e-03, +-2.615630138879622511e-03, +-2.614238270427581435e-03, +-2.612842224863532077e-03, +-2.611442004662983818e-03, +-2.610037612308116917e-03, +-2.608629050287659349e-03, +-2.607216321097084993e-03, +-2.605799427238521260e-03, +-2.604378371220636337e-03, +-2.602953155558830004e-03, +-2.601523782775146901e-03, +-2.600090255398143386e-03, +-2.598652575963136466e-03, +-2.597210747011950531e-03, +-2.595764771093102968e-03, +-2.594314650761721762e-03, +-2.592860388579452686e-03, +-2.591401987114631041e-03, +-2.589939448942206630e-03, +-2.588472776643604544e-03, +-2.587001972806934631e-03, +-2.585527040026920371e-03, +-2.584047980904722805e-03, +-2.582564798048210281e-03, +-2.581077494071772407e-03, +-2.579586071596401582e-03, +-2.578090533249579805e-03, +-2.576590881665325079e-03, +-2.575087119484382233e-03, +-2.573579249353874238e-03, +-2.572067273927434485e-03, +-2.570551195865457012e-03, +-2.569031017834667169e-03, +-2.567506742508331510e-03, +-2.565978372566339767e-03, +-2.564445910695034841e-03, +-2.562909359587325995e-03, +-2.561368721942522755e-03, +-2.559824000466553919e-03, +-2.558275197871836583e-03, +-2.556722316877175095e-03, +-2.555165360207990472e-03, +-2.553604330596157771e-03, +-2.552039230779967055e-03, +-2.550470063504251331e-03, +-2.548896831520343614e-03, +-2.547319537585923405e-03, +-2.545738184465282539e-03, +-2.544152774929016834e-03, +-2.542563311754280665e-03, +-2.540969797724705864e-03, +-2.539372235630214802e-03, +-2.537770628267313564e-03, +-2.536164978438908927e-03, +-2.534555288954254589e-03, +-2.532941562629122904e-03, +-2.531323802285709041e-03, +-2.529702010752506516e-03, +-2.528076190864531406e-03, +-2.526446345463200481e-03, +-2.524812477396231030e-03, +-2.523174589517855962e-03, +-2.521532684688567501e-03, +-2.519886765775366556e-03, +-2.518236835651597484e-03, +-2.516582897196855285e-03, +-2.514924953297361168e-03, +-2.513263006845467291e-03, +-2.511597060739930842e-03, +-2.509927117885932257e-03, +-2.508253181195005399e-03, +-2.506575253584907449e-03, +-2.504893337979860902e-03, +-2.503207437310370122e-03, +-2.501517554513314583e-03, +-2.499823692531771488e-03, +-2.498125854315272950e-03, +-2.496424042819636851e-03, +-2.494718261006936486e-03, +-2.493008511845496659e-03, +-2.491294798310169506e-03, +-2.489577123381878261e-03, +-2.487855490047857082e-03, +-2.486129901301727379e-03, +-2.484400360143316101e-03, +-2.482666869578778468e-03, +-2.480929432620424934e-03, +-2.479188052286933255e-03, +-2.477442731603240068e-03, +-2.475693473600419896e-03, +-2.473940281315902424e-03, +-2.472183157793371444e-03, +-2.470422106082613509e-03, +-2.468657129239775101e-03, +-2.466888230327223853e-03, +-2.465115412413417580e-03, +-2.463338678573170123e-03, +-2.461558031887493923e-03, +-2.459773475443466449e-03, +-2.457985012334549385e-03, +-2.456192645660230846e-03, +-2.454396378526300330e-03, +-2.452596214044733790e-03, +-2.450792155333565703e-03, +-2.448984205517118051e-03, +-2.447172367725875420e-03, +-2.445356645096381787e-03, +-2.443537040771435239e-03, +-2.441713557899992566e-03, +-2.439886199637033085e-03, +-2.438054969143806702e-03, +-2.436219869587634423e-03, +-2.434380904142021546e-03, +-2.432538075986523645e-03, +-2.430691388306753520e-03, +-2.428840844294686500e-03, +-2.426986447148163015e-03, +-2.425128200071173523e-03, +-2.423266106273856777e-03, +-2.421400168972472500e-03, +-2.419530391389235289e-03, +-2.417656776752537956e-03, +-2.415779328296840511e-03, +-2.413898049262685336e-03, +-2.412012942896568819e-03, +-2.410124012451156025e-03, +-2.408231261185171408e-03, +-2.406334692363302965e-03, +-2.404434309256220023e-03, +-2.402530115140899796e-03, +-2.400622113300043218e-03, +-2.398710307022545053e-03, +-2.396794699603308279e-03, +-2.394875294343131768e-03, +-2.392952094548986969e-03, +-2.391025103533675738e-03, +-2.389094324616117000e-03, +-2.387159761121217944e-03, +-2.385221416379756498e-03, +-2.383279293728607275e-03, +-2.381333396510599762e-03, +-2.379383728074420303e-03, +-2.377430291774853665e-03, +-2.375473090972606525e-03, +-2.373512129034233316e-03, +-2.371547409332349591e-03, +-2.369578935245515803e-03, +-2.367606710158073370e-03, +-2.365630737460490320e-03, +-2.363651020548913732e-03, +-2.361667562825733955e-03, +-2.359680367698965744e-03, +-2.357689438582578727e-03, +-2.355694778896523858e-03, +-2.353696392066655790e-03, +-2.351694281524557666e-03, +-2.349688450707844260e-03, +-2.347678903059994583e-03, +-2.345665642030223073e-03, +-2.343648671073746744e-03, +-2.341627993651580492e-03, +-2.339603613230636404e-03, +-2.337575533283588886e-03, +-2.335543757288901980e-03, +-2.333508288731133383e-03, +-2.331469131100397107e-03, +-2.329426287892644078e-03, +-2.327379762609887645e-03, +-2.325329558759650205e-03, +-2.323275679855468009e-03, +-2.321218129416503882e-03, +-2.319156910967833454e-03, +-2.317092028040326768e-03, +-2.315023484170496051e-03, +-2.312951282900756363e-03, +-2.310875427779288550e-03, +-2.308795922359894830e-03, +-2.306712770202277649e-03, +-2.304625974871877050e-03, +-2.302535539939736236e-03, +-2.300441468982784322e-03, +-2.298343765583670678e-03, +-2.296242433330620072e-03, +-2.294137475817782223e-03, +-2.292028896644808088e-03, +-2.289916699417205055e-03, +-2.287800887746180810e-03, +-2.285681465248496757e-03, +-2.283558435546728660e-03, +-2.281431802269147380e-03, +-2.279301569049547570e-03, +-2.277167739527536511e-03, +-2.275030317348374943e-03, +-2.272889306162858246e-03, +-2.270744709627548017e-03, +-2.268596531404665391e-03, +-2.266444775161916697e-03, +-2.264289444572787496e-03, +-2.262130543316335281e-03, +-2.259968075077290091e-03, +-2.257802043545890144e-03, +-2.255632452417936050e-03, +-2.253459305395110000e-03, +-2.251282606184410243e-03, +-2.249102358498449462e-03, +-2.246918566055550615e-03, +-2.244731232579566093e-03, +-2.242540361799809628e-03, +-2.240345957451287014e-03, +-2.238148023274498348e-03, +-2.235946563015562064e-03, +-2.233741580425984211e-03, +-2.231533079262946855e-03, +-2.229321063289161926e-03, +-2.227105536272784049e-03, +-2.224886501987410111e-03, +-2.222663964212466970e-03, +-2.220437926732523638e-03, +-2.218208393337888461e-03, +-2.215975367824185409e-03, +-2.213738853992653320e-03, +-2.211498855650016662e-03, +-2.209255376608318562e-03, +-2.207008420685219185e-03, +-2.204757991703831799e-03, +-2.202504093492586162e-03, +-2.200246729885496112e-03, +-2.197985904722013408e-03, +-2.195721621846878115e-03, +-2.193453885110408300e-03, +-2.191182698368333067e-03, +-2.188908065481652912e-03, +-2.186629990316922047e-03, +-2.184348476746090974e-03, +-2.182063528646364242e-03, +-2.179775149900518329e-03, +-2.177483344396474903e-03, +-2.175188116027866776e-03, +-2.172889468693405598e-03, +-2.170587406297208848e-03, +-2.168281932748839305e-03, +-2.165973051963217873e-03, +-2.163660767860453582e-03, +-2.161345084366146727e-03, +-2.159026005411204992e-03, +-2.156703534931722448e-03, +-2.154377676869264485e-03, +-2.152048435170624517e-03, +-2.149715813787985309e-03, +-2.147379816678697800e-03, +-2.145040447805346591e-03, +-2.142697711136119006e-03, +-2.140351610644164546e-03, +-2.138002150307942266e-03, +-2.135649334111286695e-03, +-2.133293166043222656e-03, +-2.130933650098086260e-03, +-2.128570790275289854e-03, +-2.126204590579640341e-03, +-2.123835055021159202e-03, +-2.121462187614955863e-03, +-2.119085992381481397e-03, +-2.116706473346417500e-03, +-2.114323634540520372e-03, +-2.111937479999704409e-03, +-2.109548013765372241e-03, +-2.107155239883748594e-03, +-2.104759162406428033e-03, +-2.102359785390179800e-03, +-2.099957112896771311e-03, +-2.097551148993331577e-03, +-2.095141897751928804e-03, +-2.092729363249924267e-03, +-2.090313549569806223e-03, +-2.087894460799032473e-03, +-2.085472101030342185e-03, +-2.083046474361572014e-03, +-2.080617584895516018e-03, +-2.078185436740214928e-03, +-2.075750034008808260e-03, +-2.073311380819356509e-03, +-2.070869481295144286e-03, +-2.068424339564541546e-03, +-2.065975959760808431e-03, +-2.063524346022476905e-03, +-2.061069502492865468e-03, +-2.058611433320702358e-03, +-2.056150142659426885e-03, +-2.053685634667562401e-03, +-2.051217913508763570e-03, +-2.048746983351683228e-03, +-2.046272848369842280e-03, +-2.043795512741900747e-03, +-2.041314980651466951e-03, +-2.038831256287184680e-03, +-2.036344343842517654e-03, +-2.033854247516053097e-03, +-2.031360971511364695e-03, +-2.028864520036786218e-03, +-2.026364897305790117e-03, +-2.023862107536781967e-03, +-2.021356154953000278e-03, +-2.018847043782545994e-03, +-2.016334778258769764e-03, +-2.013819362619564610e-03, +-2.011300801108000403e-03, +-2.008779097971822095e-03, +-2.006254257463832655e-03, +-2.003726283841729145e-03, +-2.001195181367908856e-03, +-1.998660954309818862e-03, +-1.996123606939752184e-03, +-1.993583143534718126e-03, +-1.991039568376718524e-03, +-1.988492885752601164e-03, +-1.985943099953904525e-03, +-1.983390215277134900e-03, +-1.980834236023623282e-03, +-1.978275166499366203e-03, +-1.975713011015371376e-03, +-1.973147773887224017e-03, +-1.970579459435472386e-03, +-1.968008071985459084e-03, +-1.965433615867057376e-03, +-1.962856095415324749e-03, +-1.960275514969730092e-03, +-1.957691878874559185e-03, +-1.955105191478962411e-03, +-1.952515457136824641e-03, +-1.949922680206593291e-03, +-1.947326865051627210e-03, +-1.944728016039980493e-03, +-1.942126137544263487e-03, +-1.939521233941961112e-03, +-1.936913309615193252e-03, +-1.934302368950833583e-03, +-1.931688416340308781e-03, +-1.929071456179680052e-03, +-1.926451492870012629e-03, +-1.923828530816685568e-03, +-1.921202574429786833e-03, +-1.918573628124169020e-03, +-1.915941696319267869e-03, +-1.913306783439202652e-03, +-1.910668893912535271e-03, +-1.908028032172629342e-03, +-1.905384202657451351e-03, +-1.902737409809389380e-03, +-1.900087658075611538e-03, +-1.897434951907858453e-03, +-1.894779295762340264e-03, +-1.892120694099778695e-03, +-1.889459151385805384e-03, +-1.886794672090204468e-03, +-1.884127260687594755e-03, +-1.881456921656908662e-03, +-1.878783659481779921e-03, +-1.876107478650375316e-03, +-1.873428383655200173e-03, +-1.870746378993445305e-03, +-1.868061469166811157e-03, +-1.865373658681310698e-03, +-1.862682952047627202e-03, +-1.859989353780920835e-03, +-1.857292868400644767e-03, +-1.854593500430902746e-03, +-1.851891254400254158e-03, +-1.849186134841533614e-03, +-1.846478146292181415e-03, +-1.843767293294093501e-03, +-1.841053580393405909e-03, +-1.838337012140908939e-03, +-1.835617593091510040e-03, +-1.832895327804944831e-03, +-1.830170220844982596e-03, +-1.827442276779838934e-03, +-1.824711500182238421e-03, +-1.821977895629279306e-03, +-1.819241467702232282e-03, +-1.816502220986926895e-03, +-1.813760160073472037e-03, +-1.811015289556387785e-03, +-1.808267614034335651e-03, +-1.805517138110503692e-03, +-1.802763866392390535e-03, +-1.800007803491686115e-03, +-1.797248954024329142e-03, +-1.794487322610915188e-03, +-1.791722913875970925e-03, +-1.788955732448363955e-03, +-1.786185782961352249e-03, +-1.783413070052403734e-03, +-1.780637598363309267e-03, +-1.777859372539919609e-03, +-1.775078397232519476e-03, +-1.772294677095624573e-03, +-1.769508216787798365e-03, +-1.766719020972003142e-03, +-1.763927094315416357e-03, +-1.761132441489233081e-03, +-1.758335067169040271e-03, +-1.755534976034590173e-03, +-1.752732172769656772e-03, +-1.749926662062358668e-03, +-1.747118448604980615e-03, +-1.744307537093778369e-03, +-1.741493932229413013e-03, +-1.738677638716427075e-03, +-1.735858661263690352e-03, +-1.733037004584202798e-03, +-1.730212673394889399e-03, +-1.727385672416970096e-03, +-1.724556006375775261e-03, +-1.721723680000540775e-03, +-1.718888698024766040e-03, +-1.716051065186041799e-03, +-1.713210786225839374e-03, +-1.710367865889879293e-03, +-1.707522308927870427e-03, +-1.704674120093634462e-03, +-1.701823304144912041e-03, +-1.698969865843404830e-03, +-1.696113809955223945e-03, +-1.693255141250097837e-03, +-1.690393864501796859e-03, +-1.687529984488430777e-03, +-1.684663505991749457e-03, +-1.681794433797541852e-03, +-1.678922772695697800e-03, +-1.676048527480001596e-03, +-1.673171702948282255e-03, +-1.670292303902109945e-03, +-1.667410335147204506e-03, +-1.664525801493208206e-03, +-1.661638707753506630e-03, +-1.658749058745597306e-03, +-1.655856859290887181e-03, +-1.652962114214491822e-03, +-1.650064828345619659e-03, +-1.647165006517365554e-03, +-1.644262653566506104e-03, +-1.641357774333954567e-03, +-1.638450373664226793e-03, +-1.635540456405882269e-03, +-1.632628027411334387e-03, +-1.629713091536634040e-03, +-1.626795653641872072e-03, +-1.623875718590941626e-03, +-1.620953291251374861e-03, +-1.618028376494693582e-03, +-1.615100979196222976e-03, +-1.612171104234879759e-03, +-1.609238756493568774e-03, +-1.606303940858955963e-03, +-1.603366662221283184e-03, +-1.600426925474814901e-03, +-1.597484735517300204e-03, +-1.594540097250423836e-03, +-1.591593015579612557e-03, +-1.588643495413747178e-03, +-1.585691541665885289e-03, +-1.582737159252410597e-03, +-1.579780353093461400e-03, +-1.576821128113008652e-03, +-1.573859489238699835e-03, +-1.570895441401667491e-03, +-1.567928989536905224e-03, +-1.564960138583009874e-03, +-1.561988893482281916e-03, +-1.559015259180484766e-03, +-1.556039240627192163e-03, +-1.553060842775631171e-03, +-1.550080070582493747e-03, +-1.547096929008030634e-03, +-1.544111423016486778e-03, +-1.541123557575299662e-03, +-1.538133337655566389e-03, +-1.535140768232092032e-03, +-1.532145854283183204e-03, +-1.529148600790774040e-03, +-1.526149012740151247e-03, +-1.523147095120353520e-03, +-1.520142852923943863e-03, +-1.517136291146819202e-03, +-1.514127414788597010e-03, +-1.511116228852410178e-03, +-1.508102738344682583e-03, +-1.505086948275544990e-03, +-1.502068863658607804e-03, +-1.499048489510766777e-03, +-1.496025830852637994e-03, +-1.493000892708055234e-03, +-1.489973680104486739e-03, +-1.486944198072856754e-03, +-1.483912451647320880e-03, +-1.480878445865657688e-03, +-1.477842185769081369e-03, +-1.474803676402002776e-03, +-1.471762922812440552e-03, +-1.468719930051811881e-03, +-1.465674703174713045e-03, +-1.462627247239325998e-03, +-1.459577567307192639e-03, +-1.456525668443028323e-03, +-1.453471555715090931e-03, +-1.450415234194920655e-03, +-1.447356708957461000e-03, +-1.444295985080843239e-03, +-1.441233067646456459e-03, +-1.438167961739408342e-03, +-1.435100672447694016e-03, +-1.432031204862671808e-03, +-1.428959564079131973e-03, +-1.425885755195124968e-03, +-1.422809783311778211e-03, +-1.419731653533675558e-03, +-1.416651370968596661e-03, +-1.413568940727618663e-03, +-1.410484367924852737e-03, +-1.407397657677851317e-03, +-1.404308815107363929e-03, +-1.401217845337230077e-03, +-1.398124753494422827e-03, +-1.395029544709497880e-03, +-1.391932224115739443e-03, +-1.388832796849865606e-03, +-1.385731268051769872e-03, +-1.382627642864294555e-03, +-1.379521926433703279e-03, +-1.376414123909129768e-03, +-1.373304240443051424e-03, +-1.370192281191058396e-03, +-1.367078251311657769e-03, +-1.363962155966671900e-03, +-1.360844000321015726e-03, +-1.357723789542492499e-03, +-1.354601528802190169e-03, +-1.351477223274271918e-03, +-1.348350878135757148e-03, +-1.345222498566931314e-03, +-1.342092089751119538e-03, +-1.338959656874486471e-03, +-1.335825205126502492e-03, +-1.332688739699305772e-03, +-1.329550265788542306e-03, +-1.326409788592439361e-03, +-1.323267313312291842e-03, +-1.320122845152520846e-03, +-1.316976389320529241e-03, +-1.313827951026473552e-03, +-1.310677535483683979e-03, +-1.307525147908448863e-03, +-1.304370793519782660e-03, +-1.301214477539848783e-03, +-1.298056205193671205e-03, +-1.294895981709252202e-03, +-1.291733812317374594e-03, +-1.288569702251648368e-03, +-1.285403656748988375e-03, +-1.282235681048784484e-03, +-1.279065780393294060e-03, +-1.275893960028064589e-03, +-1.272720225201011022e-03, +-1.269544581163240199e-03, +-1.266367033168428521e-03, +-1.263187586473294224e-03, +-1.260006246337367318e-03, +-1.256823018022792471e-03, +-1.253637906794727351e-03, +-1.250450917921122965e-03, +-1.247262056672517440e-03, +-1.244071328322426560e-03, +-1.240878738147141447e-03, +-1.237684291425511290e-03, +-1.234487993439343416e-03, +-1.231289849473185148e-03, +-1.228089864814116286e-03, +-1.224888044752224644e-03, +-1.221684394580031417e-03, +-1.218478919592978641e-03, +-1.215271625089213870e-03, +-1.212062516369359676e-03, +-1.208851598736938437e-03, +-1.205638877498143788e-03, +-1.202424357961626817e-03, +-1.199208045438903943e-03, +-1.195989945244140939e-03, +-1.192770062693935445e-03, +-1.189548403107719421e-03, +-1.186324971807557055e-03, +-1.183099774117904934e-03, +-1.179872815366116851e-03, +-1.176644100881774849e-03, +-1.173413635997558758e-03, +-1.170181426048290570e-03, +-1.166947476371363356e-03, +-1.163711792307163670e-03, +-1.160474379198195294e-03, +-1.157235242389579926e-03, +-1.153994387229112691e-03, +-1.150751819067121840e-03, +-1.147507543256230233e-03, +-1.144261565151781859e-03, +-1.141013890111555393e-03, +-1.137764523495886056e-03, +-1.134513470667377006e-03, +-1.131260736991317834e-03, +-1.128006327835463177e-03, +-1.124750248569877020e-03, +-1.121492504566994714e-03, +-1.118233101202133423e-03, +-1.114972043852514383e-03, +-1.111709337898153039e-03, +-1.108444988721184231e-03, +-1.105179001706356164e-03, +-1.101911382240811175e-03, +-1.098642135713864560e-03, +-1.095371267517417872e-03, +-1.092098783045735788e-03, +-1.088824687695233179e-03, +-1.085548986864882546e-03, +-1.082271685955993063e-03, +-1.078992790371994387e-03, +-1.075712305518855593e-03, +-1.072430236804854456e-03, +-1.069146589640351938e-03, +-1.065861369438227384e-03, +-1.062574581613644339e-03, +-1.059286231583828931e-03, +-1.055996324768556033e-03, +-1.052704866589508712e-03, +-1.049411862471121525e-03, +-1.046117317839633789e-03, +-1.042821238123594826e-03, +-1.039523628753923372e-03, +-1.036224495163743211e-03, +-1.032923842788178483e-03, +-1.029621677064757870e-03, +-1.026318003433204481e-03, +-1.023012827335198624e-03, +-1.019706154214811058e-03, +-1.016397989518197896e-03, +-1.013088338693742636e-03, +-1.009777207191825876e-03, +-1.006464600464883428e-03, +-1.003150523967926084e-03, +-9.998349831576327888e-04, +-9.965179834928636869e-04, +-9.931995304347271229e-04, +-9.898796294463454559e-04, +-9.865582859929940534e-04, +-9.832355055417996668e-04, +-9.799112935621751962e-04, +-9.765856555255805153e-04, +-9.732585969053034625e-04, +-9.699301231768832224e-04, +-9.666002398178943520e-04, +-9.632689523077717910e-04, +-9.599362661278904420e-04, +-9.566021867620654213e-04, +-9.532667196955849510e-04, +-9.499298704160166794e-04, +-9.465916444128952148e-04, +-9.432520471775017066e-04, +-9.399110842033646385e-04, +-9.365687609856617824e-04, +-9.332250830217323758e-04, +-9.298800558108362120e-04, +-9.265336848539372332e-04, +-9.231859756541226829e-04, +-9.198369337163863745e-04, +-9.164865645473846368e-04, +-9.131348736558860413e-04, +-9.097818665525220358e-04, +-9.064275487495745487e-04, +-9.030719257613985035e-04, +-8.997150031041938100e-04, +-8.963567862957773575e-04, +-8.929972808560855419e-04, +-8.896364923065111681e-04, +-8.862744261707667997e-04, +-8.829110879739248069e-04, +-8.795464832429214118e-04, +-8.761806175066246677e-04, +-8.728134962956767082e-04, +-8.694451251422595593e-04, +-8.660755095805321808e-04, +-8.627046551463297096e-04, +-8.593325673772939967e-04, +-8.559592518125713322e-04, +-8.525847139932532818e-04, +-8.492089594621398969e-04, +-8.458319937635809874e-04, +-8.424538224435476792e-04, +-8.390744510501343999e-04, +-8.356938851326678810e-04, +-8.323121302421339004e-04, +-8.289291919316253828e-04, +-8.255450757553536075e-04, +-8.221597872695469034e-04, +-8.187733320317564347e-04, +-8.153857156013790027e-04, +-8.119969435394212322e-04, +-8.086070214082627817e-04, +-8.052159547721026009e-04, +-8.018237491967206230e-04, +-7.984304102492466131e-04, +-7.950359434985959086e-04, +-7.916403545152419542e-04, +-7.882436488709747410e-04, +-7.848458321393478234e-04, +-7.814469098954469504e-04, +-7.780468877156431927e-04, +-7.746457711781226836e-04, +-7.712435658622681907e-04, +-7.678402773491801829e-04, +-7.644359112214411250e-04, +-7.610304730628770619e-04, +-7.576239684590092968e-04, +-7.542164029968088197e-04, +-7.508077822644649386e-04, +-7.473981118518338140e-04, +-7.439873973501971152e-04, +-7.405756443520224120e-04, +-7.371628584514177806e-04, +-7.337490452438919777e-04, +-7.303342103261101703e-04, +-7.269183592963527696e-04, +-7.235014977541926644e-04, +-7.200836313006418049e-04, +-7.166647655379147384e-04, +-7.132449060694911677e-04, +-7.098240585006505713e-04, +-7.064022284375302482e-04, +-7.029794214876699133e-04, +-6.995556432600650394e-04, +-6.961308993649332122e-04, +-6.927051954138595214e-04, +-6.892785370194798658e-04, +-6.858509297959274270e-04, +-6.824223793585998919e-04, +-6.789928913239185425e-04, +-6.755624713097789589e-04, +-6.721311249353037129e-04, +-6.686988578206956753e-04, +-6.652656755872909250e-04, +-6.618315838580977059e-04, +-6.583965882567787949e-04, +-6.549606944085712302e-04, +-6.515239079395880855e-04, +-6.480862344773372606e-04, +-6.446476796504863179e-04, +-6.412082490886295959e-04, +-6.377679484227318646e-04, +-6.343267832848877410e-04, +-6.308847593080895615e-04, +-6.274418821266711460e-04, +-6.239981573760739354e-04, +-6.205535906926046719e-04, +-6.171081877138874039e-04, +-6.136619540786245270e-04, +-6.102148954263551155e-04, +-6.067670173979073604e-04, +-6.033183256351627548e-04, +-5.998688257808113900e-04, +-5.964185234788831058e-04, +-5.929674243740420004e-04, +-5.895155341125093030e-04, +-5.860628583410478019e-04, +-5.826094027074861645e-04, +-5.791551728608009030e-04, +-5.757001744509373728e-04, +-5.722444131285839329e-04, +-5.687878945456107229e-04, +-5.653306243547651100e-04, +-5.618726082098072150e-04, +-5.584138517652012393e-04, +-5.549543606765558685e-04, +-5.514941406003989743e-04, +-5.480331971940018664e-04, +-5.445715361154537760e-04, +-5.411091630241910561e-04, +-5.376460835800603213e-04, +-5.341823034438523098e-04, +-5.307178282773675855e-04, +-5.272526637431773633e-04, +-5.237868155047678163e-04, +-5.203202892262202362e-04, +-5.168530905726686749e-04, +-5.133852252100579508e-04, +-5.099166988048993779e-04, +-5.064475170247284075e-04, +-5.029776855378653450e-04, +-4.995072100131689105e-04, +-4.960360961204949648e-04, +-4.925643495304497452e-04, +-4.890919759141615321e-04, +-4.856189809437183960e-04, +-4.821453702919393223e-04, +-4.786711496321268506e-04, +-4.751963246386035379e-04, +-4.717209009860793265e-04, +-4.682448843501872487e-04, +-4.647682804072407817e-04, +-4.612910948339912038e-04, +-4.578133333080866454e-04, +-4.543350015078247823e-04, +-4.508561051119169675e-04, +-4.473766497999401271e-04, +-4.438966412520976390e-04, +-4.404160851489726230e-04, +-4.369349871719911660e-04, +-4.334533530030952727e-04, +-4.299711883248969304e-04, +-4.264884988204273872e-04, +-4.230052901732135346e-04, +-4.195215680678027691e-04, +-4.160373381888339940e-04, +-4.125526062215604216e-04, +-4.090673778519254671e-04, +-4.055816587663945349e-04, +-4.020954546517140006e-04, +-3.986087711953697739e-04, +-3.951216140852618756e-04, +-3.916339890098553583e-04, +-3.881459016578616057e-04, +-3.846573577186896309e-04, +-3.811683628822060891e-04, +-3.776789228384962106e-04, +-3.741890432783162384e-04, +-3.706987298928543072e-04, +-3.672079883734843302e-04, +-3.637168244122262421e-04, +-3.602252437015040056e-04, +-3.567332519338999313e-04, +-3.532408548026925500e-04, +-3.497480580012215417e-04, +-3.462548672234304868e-04, +-3.427612881636151148e-04, +-3.392673265161861890e-04, +-3.357729879761244918e-04, +-3.322782782387399153e-04, +-3.287832029994301720e-04, +-3.252877679541330154e-04, +-3.217919787990891796e-04, +-3.182958412305961562e-04, +-3.147993609454675717e-04, +-3.113025436407890786e-04, +-3.078053950136776088e-04, +-3.043079207618153972e-04, +-3.008101265828170786e-04, +-2.973120181747683196e-04, +-2.938136012359808427e-04, +-2.903148814646713404e-04, +-2.868158645598101338e-04, +-2.833165562200995837e-04, +-2.798169621445075177e-04, +-2.763170880323401971e-04, +-2.728169395830717719e-04, +-2.693165224961078705e-04, +-2.658158424712363027e-04, +-2.623149052083138875e-04, +-2.588137164074058821e-04, +-2.553122817684704243e-04, +-2.518106069918130303e-04, +-2.483086977778475824e-04, +-2.448065598269264886e-04, +-2.413041988394121857e-04, +-2.378016205162142803e-04, +-2.342988305578423355e-04, +-2.307958346649437707e-04, +-2.272926385383728439e-04, +-2.237892478789462456e-04, +-2.202856683875910110e-04, +-2.167819057650225930e-04, +-2.132779657122044561e-04, +-2.097738539301023414e-04, +-2.062695761194452003e-04, +-2.027651379811798004e-04, +-1.992605452162300055e-04, +-1.957558035252520985e-04, +-1.922509186090949976e-04, +-1.887458961685552542e-04, +-1.852407419041351402e-04, +-1.817354615165787859e-04, +-1.782300607062392225e-04, +-1.747245451736147376e-04, +-1.712189206191060402e-04, +-1.677131927427721804e-04, +-1.642073672447909825e-04, +-1.607014498252141781e-04, +-1.571954461837239486e-04, +-1.536893620200938462e-04, +-1.501832030339431958e-04, +-1.466769749244949106e-04, +-1.431706833910336763e-04, +-1.396643341326643908e-04, +-1.361579328480663482e-04, +-1.326514852359532122e-04, +-1.291449969947529590e-04, +-1.256384738227524559e-04, +-1.221319214178561720e-04, +-1.186253454776525453e-04, +-1.151187516999542401e-04, +-1.116121457818490911e-04, +-1.081055334202389920e-04, +-1.045989203119093122e-04, +-1.010923121533618209e-04, +-9.758571464057171714e-05, +-9.407913346944825361e-05, +-9.057257433551107486e-05, +-8.706604293403884796e-05, +-8.355954495974654973e-05, +-8.005308610724546660e-05, +-7.654667207079938465e-05, +-7.304030854415926232e-05, +-6.953400122063141322e-05, +-6.602775579361685597e-05, +-6.252157795558446643e-05, +-5.901547339892209662e-05, +-5.550944781561508178e-05, +-5.200350689700194241e-05, +-4.849765633431279239e-05, +-4.499190181803436914e-05, +-4.148624903844819770e-05, +-3.798070368538684178e-05, +-3.447527144799013445e-05, +-3.096995801516508990e-05, +-2.746476907534200541e-05, +-2.395971031623075979e-05, +-2.045478742528069807e-05, +-1.695000608943698079e-05, +-1.344537199489667744e-05, +-9.940890827568559697e-06, +-6.436568272829608231e-06, +-2.932410015281051130e-06, + 5.715782607135131071e-07, + 4.075390871740866264e-06, + 7.579022134409479251e-06, + 1.108246636637472267e-05, + 1.458571788580093692e-05, + 1.808877101129261549e-05, + 2.159162006205983040e-05, + 2.509425935816175511e-05, + 2.859668322004728122e-05, + 3.209888596879841005e-05, + 3.560086192637390670e-05, + 3.910260541514962547e-05, + 4.260411075824045691e-05, + 4.610537227935318462e-05, + 4.960638430302965151e-05, + 5.310714115457844148e-05, + 5.660763715953678990e-05, + 6.010786664461727506e-05, + 6.360782393724875340e-05, + 6.710750336511599374e-05, + 7.060689925718486497e-05, + 7.410600594277440127e-05, + 7.760481775226836401e-05, + 8.110332901657820934e-05, + 8.460153406738596296e-05, + 8.809942723738843672e-05, + 9.159700285983731003e-05, + 9.509425526878246551e-05, + 9.859117879931631389e-05, + 1.020877677871131844e-04, + 1.055840165686736630e-04, + 1.090799194815673186e-04, + 1.125754708639742883e-04, + 1.160706650549275023e-04, + 1.195654963945575231e-04, + 1.230599592235534674e-04, + 1.265540478837982668e-04, + 1.300477567178300498e-04, + 1.335410800690867378e-04, + 1.370340122821489472e-04, + 1.405265477022793930e-04, + 1.440186806756688673e-04, + 1.475104055496768507e-04, + 1.510017166723745486e-04, + 1.544926083927861528e-04, + 1.579830750611341424e-04, + 1.614731110283788233e-04, + 1.649627106464616772e-04, + 1.684518682685488193e-04, + 1.719405782484945350e-04, + 1.754288349415512969e-04, + 1.789166327034438016e-04, + 1.824039658913914814e-04, + 1.858908288636502385e-04, + 1.893772159790535839e-04, + 1.928631215979570315e-04, + 1.963485400817008492e-04, + 1.998334657925425939e-04, + 2.033178930938226423e-04, + 2.068018163502038540e-04, + 2.102852299272172634e-04, + 2.137681281915796154e-04, + 2.172505055110474320e-04, + 2.207323562547399418e-04, + 2.242136747926773996e-04, + 2.276944554960260076e-04, + 2.311746927372623349e-04, + 2.346543808901035760e-04, + 2.381335143289742588e-04, + 2.416120874300240395e-04, + 2.450900945702038270e-04, + 2.485675301279766125e-04, + 2.520443884827820637e-04, + 2.555206640152754560e-04, + 2.589963511075731354e-04, + 2.624714441427961780e-04, + 2.659459375053090232e-04, + 2.694198255809640693e-04, + 2.728931027566441946e-04, + 2.763657634205039381e-04, + 2.798378019622133907e-04, + 2.833092127724994155e-04, + 2.867799902433894300e-04, + 2.902501287684512861e-04, + 2.937196227423375262e-04, + 2.971884665610286230e-04, + 3.006566546220718842e-04, + 3.041241813240518196e-04, + 3.075910410672902102e-04, + 3.110572282529334271e-04, + 3.145227372839626365e-04, + 3.179875625646623786e-04, + 3.214516985005522621e-04, + 3.249151394985506794e-04, + 3.283778799672174508e-04, + 3.318399143162966704e-04, + 3.353012369569562069e-04, + 3.387618423020342506e-04, + 3.422217247655795036e-04, + 3.456808787631710737e-04, + 3.491392987117718900e-04, + 3.525969790299724859e-04, + 3.560539141379195503e-04, + 3.595100984567845058e-04, + 3.629655264097008012e-04, + 3.664201924212328698e-04, + 3.698740909173040838e-04, + 3.733272163254420010e-04, + 3.767795630746311299e-04, + 3.802311255956292461e-04, + 3.836818983205137618e-04, + 3.871318756829250749e-04, + 3.905810521183039011e-04, + 3.940294220634377523e-04, + 3.974769799567013035e-04, + 4.009237202382229812e-04, + 4.043696373498108579e-04, + 4.078147257344268140e-04, + 4.112589798371941953e-04, + 4.147023941045629232e-04, + 4.181449629846223956e-04, + 4.215866809273443477e-04, + 4.250275423840517560e-04, + 4.284675418080425798e-04, + 4.319066736540630555e-04, + 4.353449323785431313e-04, + 4.387823124398414426e-04, + 4.422188082977877247e-04, + 4.456544144139241558e-04, + 4.490891252517472429e-04, + 4.525229352762522939e-04, + 4.559558389541744903e-04, + 4.593878307542260020e-04, + 4.628189051466514103e-04, + 4.662490566034551190e-04, + 4.696782795986512637e-04, + 4.731065686077292535e-04, + 4.765339181083567141e-04, + 4.799603225794621983e-04, + 4.833857765022502159e-04, + 4.868102743596647167e-04, + 4.902338106363256101e-04, + 4.936563798186916667e-04, + 4.970779763952956273e-04, + 5.004985948562962108e-04, + 5.039182296937936168e-04, + 5.073368754016814239e-04, + 5.107545264759684889e-04, + 5.141711774143211972e-04, + 5.175868227163087087e-04, + 5.210014568835553972e-04, + 5.244150744196854471e-04, + 5.278276698297884508e-04, + 5.312392376213441242e-04, + 5.346497723037776754e-04, + 5.380592683880112709e-04, + 5.414677203874578145e-04, + 5.448751228171224694e-04, + 5.482814701942917771e-04, + 5.516867570380111800e-04, + 5.550909778693249559e-04, + 5.584941272115075865e-04, + 5.618961995896233543e-04, + 5.652971895307543505e-04, + 5.686970915642471308e-04, + 5.720959002212580016e-04, + 5.754936100349905678e-04, + 5.788902155409391369e-04, + 5.822857112764343295e-04, + 5.856800917808809535e-04, + 5.890733515959971790e-04, + 5.924654852652916272e-04, + 5.958564873346774635e-04, + 5.992463523519469919e-04, + 6.026350748670186372e-04, + 6.060226494321618081e-04, + 6.094090706015549766e-04, + 6.127943329315260453e-04, + 6.161784309807806807e-04, + 6.195613593099605007e-04, + 6.229431124818815991e-04, + 6.263236850617654805e-04, + 6.297030716167971399e-04, + 6.330812667163556720e-04, + 6.364582649322595180e-04, + 6.398340608383100165e-04, + 6.432086490106126526e-04, + 6.465820240274265706e-04, + 6.499541804694080856e-04, + 6.533251129195332720e-04, + 6.566948159625871952e-04, + 6.600632841860757261e-04, + 6.634305121797030641e-04, + 6.667964945353097202e-04, + 6.701612258471047537e-04, + 6.735247007115222236e-04, + 6.768869137275364744e-04, + 6.802478594962107833e-04, + 6.836075326209413048e-04, + 6.869659277076834531e-04, + 6.903230393645144259e-04, + 6.936788622018643562e-04, + 6.970333908326761243e-04, + 7.003866198723395463e-04, + 7.037385439381767032e-04, + 7.070891576504175066e-04, + 7.104384556313212773e-04, + 7.137864325058487346e-04, + 7.171330829011489513e-04, + 7.204784014467964688e-04, + 7.238223827750250514e-04, + 7.271650215202776334e-04, + 7.305063123194531927e-04, + 7.338462498121242411e-04, + 7.371848286401127930e-04, + 7.405220434477132775e-04, + 7.438578888819233651e-04, + 7.471923595920151656e-04, + 7.505254502297569472e-04, + 7.538571554496509026e-04, + 7.571874699084904688e-04, + 7.605163882656018875e-04, + 7.638439051830594193e-04, + 7.671700153251938747e-04, + 7.704947133592505082e-04, + 7.738179939545208972e-04, + 7.771398517833058225e-04, + 7.804602815204137161e-04, + 7.837792778430876942e-04, + 7.870968354311661279e-04, + 7.904129489673132527e-04, + 7.937276131365800669e-04, + 7.970408226267138713e-04, + 8.003525721280163466e-04, + 8.036628563336475645e-04, + 8.069716699391868853e-04, + 8.102790076428770119e-04, + 8.135848641457607078e-04, + 8.168892341516333089e-04, + 8.201921123665197044e-04, + 8.234934934995811638e-04, + 8.267933722625992561e-04, + 8.300917433699117739e-04, + 8.333886015386426926e-04, + 8.366839414885645851e-04, + 8.399777579424054508e-04, + 8.432700456254033257e-04, + 8.465607992655468667e-04, + 8.498500135938026005e-04, + 8.531376833436813507e-04, + 8.564238032514546453e-04, + 8.597083680564080940e-04, + 8.629913725003953481e-04, + 8.662728113280564581e-04, + 8.695526792870688672e-04, + 8.728309711276969248e-04, + 8.761076816030332302e-04, + 8.793828054692134129e-04, + 8.826563374849305185e-04, + 8.859282724120074674e-04, + 8.891986050149087301e-04, + 8.924673300609657330e-04, + 8.957344423205947830e-04, + 8.989999365668813842e-04, + 9.022638075757961028e-04, + 9.055260501264265861e-04, + 9.087866590005525555e-04, + 9.120456289828614543e-04, + 9.153029548611855623e-04, + 9.185586314260716766e-04, + 9.218126534710765563e-04, + 9.250650157926298793e-04, + 9.283157131902674544e-04, + 9.315647404665612901e-04, + 9.348120924266130555e-04, + 9.380577638789531006e-04, + 9.413017496350224245e-04, + 9.445440445091115265e-04, + 9.477846433185201092e-04, + 9.510235408837805320e-04, + 9.542607320282272751e-04, + 9.574962115783006242e-04, + 9.607299743634059412e-04, + 9.639620152162104100e-04, + 9.671923289722262696e-04, + 9.704209104700216911e-04, + 9.736477545514601699e-04, + 9.768728560612643507e-04, + 9.800962098472447946e-04, + 9.833178107605286371e-04, + 9.865376536551293766e-04, + 9.897557333881723887e-04, + 9.929720448201230423e-04, + 9.961865828142836294e-04, + 9.993993422373866412e-04, + 1.002610317959093215e-03, + 1.005819504852217350e-03, + 1.009026897792947731e-03, + 1.012232491660436384e-03, + 1.015436281337004894e-03, + 1.018638261708381407e-03, + 1.021838427663271289e-03, + 1.025036774093586976e-03, + 1.028233295894660478e-03, + 1.031427987964833332e-03, + 1.034620845205670193e-03, + 1.037811862522191935e-03, + 1.041001034822370414e-03, + 1.044188357017716536e-03, + 1.047373824022788252e-03, + 1.050557430755410648e-03, + 1.053739172136970194e-03, + 1.056919043091638678e-03, + 1.060097038547309087e-03, + 1.063273153435095788e-03, + 1.066447382689288560e-03, + 1.069619721247487901e-03, + 1.072790164050835314e-03, + 1.075958706043586783e-03, + 1.079125342173413958e-03, + 1.082290067391264952e-03, + 1.085452876651658155e-03, + 1.088613764912261129e-03, + 1.091772727134115691e-03, + 1.094929758281787315e-03, + 1.098084853323295744e-03, + 1.101238007229640107e-03, + 1.104389214975641997e-03, + 1.107538471539471457e-03, + 1.110685771902570869e-03, + 1.113831111049885022e-03, + 1.116974483969727320e-03, + 1.120115885654062110e-03, + 1.123255311098099625e-03, + 1.126392755300506532e-03, + 1.129528213263633401e-03, + 1.132661679993090349e-03, + 1.135793150497977754e-03, + 1.138922619791094860e-03, + 1.142050082888534067e-03, + 1.145175534809892348e-03, + 1.148298970578494598e-03, + 1.151420385220909212e-03, + 1.154539773767517289e-03, + 1.157657131252028430e-03, + 1.160772452711702346e-03, + 1.163885733187556377e-03, + 1.166996967723974311e-03, + 1.170106151368899370e-03, + 1.173213279174070787e-03, + 1.176318346194603999e-03, + 1.179421347489204453e-03, + 1.182522278120394423e-03, + 1.185621133154101010e-03, + 1.188717907659855855e-03, + 1.191812596711044284e-03, + 1.194905195384459492e-03, + 1.197995698760619338e-03, + 1.201084101923616081e-03, + 1.204170399961339288e-03, + 1.207254587965411220e-03, + 1.210336661030708260e-03, + 1.213416614256217869e-03, + 1.216494442744529879e-03, + 1.219570141601802014e-03, + 1.222643705937888044e-03, + 1.225715130866571320e-03, + 1.228784411505143889e-03, + 1.231851542974686650e-03, + 1.234916520399957467e-03, + 1.237979338909660915e-03, + 1.241039993636037586e-03, + 1.244098479715099797e-03, + 1.247154792286752148e-03, + 1.250208926494747073e-03, + 1.253260877486208442e-03, + 1.256310640412520389e-03, + 1.259358210428534108e-03, + 1.262403582693167421e-03, + 1.265446752368953095e-03, + 1.268487714622239422e-03, + 1.271526464623410095e-03, + 1.274562997546478497e-03, + 1.277597308569299777e-03, + 1.280629392873782477e-03, + 1.283659245645493241e-03, + 1.286686862073861508e-03, + 1.289712237352393098e-03, + 1.292735366678275785e-03, + 1.295756245252582687e-03, + 1.298774868280486942e-03, + 1.301791230970860769e-03, + 1.304805328536488406e-03, + 1.307817156194278395e-03, + 1.310826709164792389e-03, + 1.313833982672870737e-03, + 1.316838971946810008e-03, + 1.319841672219273284e-03, + 1.322842078726806612e-03, + 1.325840186709787176e-03, + 1.328835991412566407e-03, + 1.331829488083670354e-03, + 1.334820671975419336e-03, + 1.337809538344118766e-03, + 1.340796082450285316e-03, + 1.343780299558239690e-03, + 1.346762184936386129e-03, + 1.349741733857089251e-03, + 1.352718941596876790e-03, + 1.355693803436386260e-03, + 1.358666314659896356e-03, + 1.361636470556145751e-03, + 1.364604266417928030e-03, + 1.367569697541713746e-03, + 1.370532759228510616e-03, + 1.373493446783080520e-03, + 1.376451755514541660e-03, + 1.379407680735913848e-03, + 1.382361217764319951e-03, + 1.385312361921199262e-03, + 1.388261108531911765e-03, + 1.391207452925939799e-03, + 1.394151390437116172e-03, + 1.397092916403201105e-03, + 1.400032026166114904e-03, + 1.402968715072130512e-03, + 1.405902978471492738e-03, + 1.408834811718613633e-03, + 1.411764210172288675e-03, + 1.414691169195229047e-03, + 1.417615684154611977e-03, + 1.420537750421615834e-03, + 1.423457363371630462e-03, + 1.426374518384454070e-03, + 1.429289210843922870e-03, + 1.432201436138088669e-03, + 1.435111189659453272e-03, + 1.438018466804554972e-03, + 1.440923262974196876e-03, + 1.443825573573631225e-03, + 1.446725394012183825e-03, + 1.449622719703459392e-03, + 1.452517546065529774e-03, + 1.455409868520505688e-03, + 1.458299682495114167e-03, + 1.461186983419934414e-03, + 1.464071766730244781e-03, + 1.466954027865644168e-03, + 1.469833762269659753e-03, + 1.472710965390546054e-03, + 1.475585632680837585e-03, + 1.478457759597276650e-03, + 1.481327341600961224e-03, + 1.484194374157551391e-03, + 1.487058852736876640e-03, + 1.489920772813206054e-03, + 1.492780129865127307e-03, + 1.495636919375810565e-03, + 1.498491136832634648e-03, + 1.501342777727375901e-03, + 1.504191837556356727e-03, + 1.507038311820370130e-03, + 1.509882196024265330e-03, + 1.512723485677762436e-03, + 1.515562176294704124e-03, + 1.518398263393632873e-03, + 1.521231742497351639e-03, + 1.524062609133132896e-03, + 1.526890858832900344e-03, + 1.529716487132860066e-03, + 1.532539489573703272e-03, + 1.535359861700802322e-03, + 1.538177599063836462e-03, + 1.540992697216978305e-03, + 1.543805151719107637e-03, + 1.546614958133427390e-03, + 1.549422112027672464e-03, + 1.552226608974287096e-03, + 1.555028444550004413e-03, + 1.557827614336360555e-03, + 1.560624113919240183e-03, + 1.563417938889106757e-03, + 1.566209084841223504e-03, + 1.568997547374990963e-03, + 1.571783322094769250e-03, + 1.574566404609440686e-03, + 1.577346790532354074e-03, + 1.580124475481455232e-03, + 1.582899455079490175e-03, + 1.585671724953631066e-03, + 1.588441280735667033e-03, + 1.591208118062204099e-03, + 1.593972232574292214e-03, + 1.596733619917692620e-03, + 1.599492275742745362e-03, + 1.602248195704571599e-03, + 1.605001375463013325e-03, + 1.607751810682222018e-03, + 1.610499497031381158e-03, + 1.613244430184295310e-03, + 1.615986605819348925e-03, + 1.618726019619671141e-03, + 1.621462667273031915e-03, + 1.624196544472097025e-03, + 1.626927646914073326e-03, + 1.629655970300875273e-03, + 1.632381510339344591e-03, + 1.635104262740859522e-03, + 1.637824223221562943e-03, + 1.640541387502453003e-03, + 1.643255751309347784e-03, + 1.645967310372468311e-03, + 1.648676060427226118e-03, + 1.651381997213571210e-03, + 1.654085116476234057e-03, + 1.656785413964917495e-03, + 1.659482885433877144e-03, + 1.662177526642421221e-03, + 1.664869333354475778e-03, + 1.667558301338788098e-03, + 1.670244426369108621e-03, + 1.672927704223843137e-03, + 1.675608130686228421e-03, + 1.678285701544524359e-03, + 1.680960412591660062e-03, + 1.683632259625418614e-03, + 1.686301238448640900e-03, + 1.688967344868839635e-03, + 1.691630574698405791e-03, + 1.694290923754799855e-03, + 1.696948387860133757e-03, + 1.699602962841703646e-03, + 1.702254644531291669e-03, + 1.704903428765961121e-03, + 1.707549311387611055e-03, + 1.710192288242958717e-03, + 1.712832355183636478e-03, + 1.715469508066401732e-03, + 1.718103742752766748e-03, + 1.720735055109256931e-03, + 1.723363441007286570e-03, + 1.725988896323411891e-03, + 1.728611416938981077e-03, + 1.731230998740304269e-03, + 1.733847637618806878e-03, + 1.736461329470947827e-03, + 1.739072070197830548e-03, + 1.741679855705907491e-03, + 1.744284681906633832e-03, + 1.746886544716138093e-03, + 1.749485440055957228e-03, + 1.752081363852377215e-03, + 1.754674312036946533e-03, + 1.757264280546066331e-03, + 1.759851265321188624e-03, + 1.762435262308994968e-03, + 1.765016267461037803e-03, + 1.767594276733942555e-03, + 1.770169286089568307e-03, + 1.772741291494687533e-03, + 1.775310288921140046e-03, + 1.777876274346044862e-03, + 1.780439243751426358e-03, + 1.782999193124415287e-03, + 1.785556118457424200e-03, + 1.788110015747750416e-03, + 1.790660880998030512e-03, + 1.793208710215866064e-03, + 1.795753499413984752e-03, + 1.798295244610419912e-03, + 1.800833941828190688e-03, + 1.803369587095449058e-03, + 1.805902176445694498e-03, + 1.808431705917404927e-03, + 1.810958171554231206e-03, + 1.813481569405165630e-03, + 1.816001895524217095e-03, + 1.818519145970588259e-03, + 1.821033316808826248e-03, + 1.823544404108469854e-03, + 1.826052403944539160e-03, + 1.828557312396871578e-03, + 1.831059125550864959e-03, + 1.833557839497129130e-03, + 1.836053450331180800e-03, + 1.838545954154105141e-03, + 1.841035347072172632e-03, + 1.843521625196792866e-03, + 1.846004784644683693e-03, + 1.848484821537764314e-03, + 1.850961732003396625e-03, + 1.853435512174045645e-03, + 1.855906158187447565e-03, + 1.858373666186801656e-03, + 1.860838032320417034e-03, + 1.863299252741919309e-03, + 1.865757323610332113e-03, + 1.868212241090045668e-03, + 1.870664001350434702e-03, + 1.873112600566585956e-03, + 1.875558034918633783e-03, + 1.878000300592259962e-03, + 1.880439393778327679e-03, + 1.882875310673033089e-03, + 1.885308047478109371e-03, + 1.887737600400455924e-03, + 1.890163965652352828e-03, + 1.892587139451600486e-03, + 1.895007118021222554e-03, + 1.897423897589603633e-03, + 1.899837474390697438e-03, + 1.902247844663667057e-03, + 1.904655004653089869e-03, + 1.907058950609102606e-03, + 1.909459678787082384e-03, + 1.911857185447828631e-03, + 1.914251466857719861e-03, + 1.916642519288347651e-03, + 1.919030339017007781e-03, + 1.921414922326049280e-03, + 1.923796265503588052e-03, + 1.926174364843146478e-03, + 1.928549216643587723e-03, + 1.930920817209227187e-03, + 1.933289162850031781e-03, + 1.935654249881247181e-03, + 1.938016074623678852e-03, + 1.940374633403556303e-03, + 1.942729922552744511e-03, + 1.945081938408467015e-03, + 1.947430677313423657e-03, + 1.949776135615942157e-03, + 1.952118309669916311e-03, + 1.954457195834428691e-03, + 1.956792790474419595e-03, + 1.959125089960286545e-03, + 1.961454090667871276e-03, + 1.963779788978604370e-03, + 1.966102181279405069e-03, + 1.968421263962908101e-03, + 1.970737033427140145e-03, + 1.973049486075703282e-03, + 1.975358618317914639e-03, + 1.977664426568508018e-03, + 1.979966907247804331e-03, + 1.982266056781859052e-03, + 1.984561871602165579e-03, + 1.986854348145810061e-03, + 1.989143482855637059e-03, + 1.991429272179946839e-03, + 1.993711712572645862e-03, + 1.995990800493419818e-03, + 1.998266532407363700e-03, + 2.000538904785415482e-03, + 2.002807914103991397e-03, + 2.005073556845140756e-03, + 2.007335829496718991e-03, + 2.009594728552077138e-03, + 2.011850250510220563e-03, + 2.014102391875971596e-03, + 2.016351149159665949e-03, + 2.018596518877311882e-03, + 2.020838497550744590e-03, + 2.023077081707329999e-03, + 2.025312267880183779e-03, + 2.027544052608048607e-03, + 2.029772432435480219e-03, + 2.031997403912785827e-03, + 2.034218963595674570e-03, + 2.036437108045872479e-03, + 2.038651833830785499e-03, + 2.040863137523438783e-03, + 2.043071015702588138e-03, + 2.045275464952873989e-03, + 2.047476481864531246e-03, + 2.049674063033592696e-03, + 2.051868205061784488e-03, + 2.054058904556758155e-03, + 2.056246158131754941e-03, + 2.058429962405800961e-03, + 2.060610314003832096e-03, + 2.062787209556427720e-03, + 2.064960645699936027e-03, + 2.067130619076649675e-03, + 2.069297126334507849e-03, + 2.071460164127238504e-03, + 2.073619729114535310e-03, + 2.075775817961696395e-03, + 2.077928427340029836e-03, + 2.080077553926516255e-03, + 2.082223194403967550e-03, + 2.084365345461153089e-03, + 2.086504003792558591e-03, + 2.088639166098486301e-03, + 2.090770829085232801e-03, + 2.092898989464806250e-03, + 2.095023643955072970e-03, + 2.097144789279884076e-03, + 2.099262422168835657e-03, + 2.101376539357372418e-03, + 2.103487137586980242e-03, + 2.105594213604806281e-03, + 2.107697764164095672e-03, + 2.109797786023828552e-03, + 2.111894275948891786e-03, + 2.113987230710195637e-03, + 2.116076647084434801e-03, + 2.118162521854197265e-03, + 2.120244851808138209e-03, + 2.122323633740672098e-03, + 2.124398864452166098e-03, + 2.126470540749039392e-03, + 2.128538659443506877e-03, + 2.130603217353765639e-03, + 2.132664211303923404e-03, + 2.134721638124166803e-03, + 2.136775494650494656e-03, + 2.138825777724876701e-03, + 2.140872484195317782e-03, + 2.142915610915860011e-03, + 2.144955154746224554e-03, + 2.146991112552397527e-03, + 2.149023481206296070e-03, + 2.151052257585732343e-03, + 2.153077438574563154e-03, + 2.155099021062590204e-03, + 2.157117001945753516e-03, + 2.159131378125868188e-03, + 2.161142146510750157e-03, + 2.163149304014385776e-03, + 2.165152847556629963e-03, + 2.167152774063364502e-03, + 2.169149080466645490e-03, + 2.171141763704417978e-03, + 2.173130820720677731e-03, + 2.175116248465590058e-03, + 2.177098043895189707e-03, + 2.179076203971756862e-03, + 2.181050725663471936e-03, + 2.183021605944599451e-03, + 2.184988841795598626e-03, + 2.186952430202857532e-03, + 2.188912368158853119e-03, + 2.190868652662275248e-03, + 2.192821280717757813e-03, + 2.194770249336032691e-03, + 2.196715555534055515e-03, + 2.198657196334752838e-03, + 2.200595168767144859e-03, + 2.202529469866503723e-03, + 2.204460096674078131e-03, + 2.206387046237270281e-03, + 2.208310315609576021e-03, + 2.210229901850696739e-03, + 2.212145802026497295e-03, + 2.214058013208740176e-03, + 2.215966532475570783e-03, + 2.217871356911234673e-03, + 2.219772483606047200e-03, + 2.221669909656477648e-03, + 2.223563632165272835e-03, + 2.225453648241221619e-03, + 2.227339954999310589e-03, + 2.229222549560671597e-03, + 2.231101429052723129e-03, + 2.232976590608943494e-03, + 2.234848031368993123e-03, + 2.236715748478793932e-03, + 2.238579739090531488e-03, + 2.240440000362297658e-03, + 2.242296529458714677e-03, + 2.244149323550369193e-03, + 2.245998379814246378e-03, + 2.247843695433410314e-03, + 2.249685267597147965e-03, + 2.251523093501091484e-03, + 2.253357170346971441e-03, + 2.255187495342754304e-03, + 2.257014065702761703e-03, + 2.258836878647433634e-03, + 2.260655931403454666e-03, + 2.262471221203872767e-03, + 2.264282745287869887e-03, + 2.266090500900884690e-03, + 2.267894485294743960e-03, + 2.269694695727398487e-03, + 2.271491129463090470e-03, + 2.273283783772432880e-03, + 2.275072655932174406e-03, + 2.276857743225541627e-03, + 2.278639042941744183e-03, + 2.280416552376543764e-03, + 2.282190268831963548e-03, + 2.283960189616211431e-03, + 2.285726312043816644e-03, + 2.287488633435727763e-03, + 2.289247151119097167e-03, + 2.291001862427376017e-03, + 2.292752764700449562e-03, + 2.294499855284415531e-03, + 2.296243131531725944e-03, + 2.297982590801138109e-03, + 2.299718230457804824e-03, + 2.301450047873263537e-03, + 2.303178040425164427e-03, + 2.304902205497718400e-03, + 2.306622540481504096e-03, + 2.308339042773208550e-03, + 2.310051709776151513e-03, + 2.311760538899820978e-03, + 2.313465527560224898e-03, + 2.315166673179611459e-03, + 2.316863973186633445e-03, + 2.318557425016389006e-03, + 2.320247026110282013e-03, + 2.321932773916073663e-03, + 2.323614665888049883e-03, + 2.325292699486751578e-03, + 2.326966872179133793e-03, + 2.328637181438648548e-03, + 2.330303624745051847e-03, + 2.331966199584490848e-03, + 2.333624903449655653e-03, + 2.335279733839486574e-03, + 2.336930688259493318e-03, + 2.338577764221499555e-03, + 2.340220959243750464e-03, + 2.341860270851034171e-03, + 2.343495696574457964e-03, + 2.345127233951571459e-03, + 2.346754880526471555e-03, + 2.348378633849587324e-03, + 2.349998491477790167e-03, + 2.351614450974524352e-03, + 2.353226509909582369e-03, + 2.354834665859196000e-03, + 2.356438916406185507e-03, + 2.358039259139685980e-03, + 2.359635691655472163e-03, + 2.361228211555562503e-03, + 2.362816816448643290e-03, + 2.364401503949909063e-03, + 2.365982271680789392e-03, + 2.367559117269443271e-03, + 2.369132038350465087e-03, + 2.370701032564885048e-03, + 2.372266097560229905e-03, + 2.373827230990624860e-03, + 2.375384430516607089e-03, + 2.376937693805242831e-03, + 2.378487018530089665e-03, + 2.380032402371310123e-03, + 2.381573843015492159e-03, + 2.383111338155742814e-03, + 2.384644885491756742e-03, + 2.386174482729805368e-03, + 2.387700127582474078e-03, + 2.389221817769125820e-03, + 2.390739551015496483e-03, + 2.392253325054000644e-03, + 2.393763137623485665e-03, + 2.395268986469367874e-03, + 2.396770869343696746e-03, + 2.398268784004986207e-03, + 2.399762728218311335e-03, + 2.401252699755406818e-03, + 2.402738696394471785e-03, + 2.404220715920274334e-03, + 2.405698756124258209e-03, + 2.407172814804332470e-03, + 2.408642889764998993e-03, + 2.410108978817437908e-03, + 2.411571079779273406e-03, + 2.413029190474857803e-03, + 2.414483308735033019e-03, + 2.415933432397233786e-03, + 2.417379559305635108e-03, + 2.418821687310758906e-03, + 2.420259814269961045e-03, + 2.421693938047149875e-03, + 2.423124056512777555e-03, + 2.424550167543930695e-03, + 2.425972269024385865e-03, + 2.427390358844446101e-03, + 2.428804434901064499e-03, + 2.430214495097883683e-03, + 2.431620537345084883e-03, + 2.433022559559537123e-03, + 2.434420559664683160e-03, + 2.435814535590689542e-03, + 2.437204485274381983e-03, + 2.438590406659048044e-03, + 2.439972297694812699e-03, + 2.441350156338408482e-03, + 2.442723980553176792e-03, + 2.444093768309129038e-03, + 2.445459517582920187e-03, + 2.446821226357946341e-03, + 2.448178892624186011e-03, + 2.449532514378282514e-03, + 2.450882089623646325e-03, + 2.452227616370258618e-03, + 2.453569092634795296e-03, + 2.454906516440648247e-03, + 2.456239885817955697e-03, + 2.457569198803328126e-03, + 2.458894453440289320e-03, + 2.460215647778932462e-03, + 2.461532779876051107e-03, + 2.462845847795222445e-03, + 2.464154849606584822e-03, + 2.465459783387133948e-03, + 2.466760647220455314e-03, + 2.468057439196837816e-03, + 2.469350157413396918e-03, + 2.470638799973854348e-03, + 2.471923364988649549e-03, + 2.473203850575031188e-03, + 2.474480254856888019e-03, + 2.475752575964812203e-03, + 2.477020812036241117e-03, + 2.478284961215230543e-03, + 2.479545021652584339e-03, + 2.480800991505910380e-03, + 2.482052868939463135e-03, + 2.483300652124356602e-03, + 2.484544339238265072e-03, + 2.485783928465777008e-03, + 2.487019417998193819e-03, + 2.488250806033509045e-03, + 2.489478090776486418e-03, + 2.490701270438719275e-03, + 2.491920343238465761e-03, + 2.493135307400793244e-03, + 2.494346161157501556e-03, + 2.495552902747217965e-03, + 2.496755530415274444e-03, + 2.497954042413784870e-03, + 2.499148437001665404e-03, + 2.500338712444658343e-03, + 2.501524867015110509e-03, + 2.502706898992311524e-03, + 2.503884806662332908e-03, + 2.505058588317894512e-03, + 2.506228242258658548e-03, + 2.507393766790956807e-03, + 2.508555160228040024e-03, + 2.509712420889848028e-03, + 2.510865547103138980e-03, + 2.512014537201538809e-03, + 2.513159389525399402e-03, + 2.514300102421886639e-03, + 2.515436674245037207e-03, + 2.516569103355637601e-03, + 2.517697388121271397e-03, + 2.518821526916424636e-03, + 2.519941518122317120e-03, + 2.521057360126996525e-03, + 2.522169051325393041e-03, + 2.523276590119174958e-03, + 2.524379974916931245e-03, + 2.525479204133997645e-03, + 2.526574276192555119e-03, + 2.527665189521682756e-03, + 2.528751942557212924e-03, + 2.529834533741831884e-03, + 2.530912961525126192e-03, + 2.531987224363462571e-03, + 2.533057320720036483e-03, + 2.534123249064973177e-03, + 2.535185007875172432e-03, + 2.536242595634372737e-03, + 2.537296010833257551e-03, + 2.538345251969250163e-03, + 2.539390317546755694e-03, + 2.540431206076884402e-03, + 2.541467916077726642e-03, + 2.542500446074246172e-03, + 2.543528794598142254e-03, + 2.544552960188098574e-03, + 2.545572941389658353e-03, + 2.546588736755190947e-03, + 2.547600344843961237e-03, + 2.548607764222072820e-03, + 2.549610993462581195e-03, + 2.550610031145373637e-03, + 2.551604875857184807e-03, + 2.552595526191727294e-03, + 2.553581980749502958e-03, + 2.554564238137931736e-03, + 2.555542296971346442e-03, + 2.556516155871003167e-03, + 2.557485813464896972e-03, + 2.558451268388097551e-03, + 2.559412519282447829e-03, + 2.560369564796782533e-03, + 2.561322403586760357e-03, + 2.562271034314947231e-03, + 2.563215455650883542e-03, + 2.564155666270946654e-03, + 2.565091664858414229e-03, + 2.566023450103539251e-03, + 2.566951020703430331e-03, + 2.567874375362108521e-03, + 2.568793512790554148e-03, + 2.569708431706623549e-03, + 2.570619130835066855e-03, + 2.571525608907644644e-03, + 2.572427864662951875e-03, + 2.573325896846517628e-03, + 2.574219704210854547e-03, + 2.575109285515330901e-03, + 2.575994639526326280e-03, + 2.576875765017006079e-03, + 2.577752660767611195e-03, + 2.578625325565282820e-03, + 2.579493758204041629e-03, + 2.580357957484878412e-03, + 2.581217922215747577e-03, + 2.582073651211502958e-03, + 2.582925143293950294e-03, + 2.583772397291818172e-03, + 2.584615412040847365e-03, + 2.585454186383653787e-03, + 2.586288719169809597e-03, + 2.587119009255874416e-03, + 2.587945055505357604e-03, + 2.588766856788639759e-03, + 2.589584411983136651e-03, + 2.590397719973215086e-03, + 2.591206779650166887e-03, + 2.592011589912237082e-03, + 2.592812149664632144e-03, + 2.593608457819565529e-03, + 2.594400513296167901e-03, + 2.595188315020511855e-03, + 2.595971861925708626e-03, + 2.596751152951770180e-03, + 2.597526187045679467e-03, + 2.598296963161447672e-03, + 2.599063480259994081e-03, + 2.599825737309212001e-03, + 2.600583733284009529e-03, + 2.601337467166251870e-03, + 2.602086937944731414e-03, + 2.602832144615302608e-03, + 2.603573086180719330e-03, + 2.604309761650784507e-03, + 2.605042170042223913e-03, + 2.605770310378745583e-03, + 2.606494181691112241e-03, + 2.607213783016984737e-03, + 2.607929113401034373e-03, + 2.608640171894970224e-03, + 2.609346957557416840e-03, + 2.610049469454023101e-03, + 2.610747706657435326e-03, + 2.611441668247271256e-03, + 2.612131353310152577e-03, + 2.612816760939678466e-03, + 2.613497890236459419e-03, + 2.614174740308139802e-03, + 2.614847310269252136e-03, + 2.615515599241430462e-03, + 2.616179606353282849e-03, + 2.616839330740387479e-03, + 2.617494771545329085e-03, + 2.618145927917747522e-03, + 2.618792799014211994e-03, + 2.619435383998343359e-03, + 2.620073682040733893e-03, + 2.620707692319040535e-03, + 2.621337414017861720e-03, + 2.621962846328829318e-03, + 2.622583988450598660e-03, + 2.623200839588845073e-03, + 2.623813398956183207e-03, + 2.624421665772317096e-03, + 2.625025639263965996e-03, + 2.625625318664774176e-03, + 2.626220703215505214e-03, + 2.626811792163863749e-03, + 2.627398584764628186e-03, + 2.627981080279545752e-03, + 2.628559277977398842e-03, + 2.629133177134021070e-03, + 2.629702777032212700e-03, + 2.630268076961814368e-03, + 2.630829076219718364e-03, + 2.631385774109800107e-03, + 2.631938169942957175e-03, + 2.632486263037149207e-03, + 2.633030052717331114e-03, + 2.633569538315473461e-03, + 2.634104719170607574e-03, + 2.634635594628755711e-03, + 2.635162164043005229e-03, + 2.635684426773441356e-03, + 2.636202382187158907e-03, + 2.636716029658361590e-03, + 2.637225368568199817e-03, + 2.637730398304888660e-03, + 2.638231118263683131e-03, + 2.638727527846865609e-03, + 2.639219626463721550e-03, + 2.639707413530625359e-03, + 2.640190888470932834e-03, + 2.640670050715070941e-03, + 2.641144899700466689e-03, + 2.641615434871624323e-03, + 2.642081655680049001e-03, + 2.642543561584296662e-03, + 2.643001152049968827e-03, + 2.643454426549709125e-03, + 2.643903384563149953e-03, + 2.644348025577016557e-03, + 2.644788349085077164e-03, + 2.645224354588096571e-03, + 2.645656041593913779e-03, + 2.646083409617375204e-03, + 2.646506458180416643e-03, + 2.646925186811977838e-03, + 2.647339595048039344e-03, + 2.647749682431662852e-03, + 2.648155448512903593e-03, + 2.648556892848881027e-03, + 2.648954015003782744e-03, + 2.649346814548795507e-03, + 2.649735291062173780e-03, + 2.650119444129223241e-03, + 2.650499273342272165e-03, + 2.650874778300729966e-03, + 2.651245958611007838e-03, + 2.651612813886586838e-03, + 2.651975343748002277e-03, + 2.652333547822814663e-03, + 2.652687425745638757e-03, + 2.653036977158149644e-03, + 2.653382201709046737e-03, + 2.653723099054085006e-03, + 2.654059668856083212e-03, + 2.654391910784885747e-03, + 2.654719824517386920e-03, + 2.655043409737550038e-03, + 2.655362666136366206e-03, + 2.655677593411874277e-03, + 2.655988191269155647e-03, + 2.656294459420376758e-03, + 2.656596397584737920e-03, + 2.656894005488434716e-03, + 2.657187282864781602e-03, + 2.657476229454119963e-03, + 2.657760845003835897e-03, + 2.658041129268343735e-03, + 2.658317082009151091e-03, + 2.658588702994779500e-03, + 2.658855992000812123e-03, + 2.659118948809878133e-03, + 2.659377573211667463e-03, + 2.659631865002908251e-03, + 2.659881823987369880e-03, + 2.660127449975879452e-03, + 2.660368742786338274e-03, + 2.660605702243646394e-03, + 2.660838328179794543e-03, + 2.661066620433789540e-03, + 2.661290578851724549e-03, + 2.661510203286709259e-03, + 2.661725493598913680e-03, + 2.661936449655563815e-03, + 2.662143071330921266e-03, + 2.662345358506291049e-03, + 2.662543311070054118e-03, + 2.662736928917615320e-03, + 2.662926211951424215e-03, + 2.663111160081000229e-03, + 2.663291773222883213e-03, + 2.663468051300678548e-03, + 2.663639994245033723e-03, + 2.663807601993649181e-03, + 2.663970874491245356e-03, + 2.664129811689626860e-03, + 2.664284413547614392e-03, + 2.664434680031090279e-03, + 2.664580611112971585e-03, + 2.664722206773224855e-03, + 2.664859466998869587e-03, + 2.664992391783955247e-03, + 2.665120981129576443e-03, + 2.665245235043885944e-03, + 2.665365153542067784e-03, + 2.665480736646343770e-03, + 2.665591984385994300e-03, + 2.665698896797319330e-03, + 2.665801473923692586e-03, + 2.665899715815489134e-03, + 2.665993622530162151e-03, + 2.666083194132186536e-03, + 2.666168430693068459e-03, + 2.666249332291370077e-03, + 2.666325899012688284e-03, + 2.666398130949658180e-03, + 2.666466028201944834e-03, + 2.666529590876252822e-03, + 2.666588819086344007e-03, + 2.666643712952985069e-03, + 2.666694272603990865e-03, + 2.666740498174230076e-03, + 2.666782389805580095e-03, + 2.666819947646961297e-03, + 2.666853171854327489e-03, + 2.666882062590671121e-03, + 2.666906620026006803e-03, + 2.666926844337390388e-03, + 2.666942735708898154e-03, + 2.666954294331648923e-03, + 2.666961520403779342e-03, + 2.666964414130462962e-03, + 2.666962975723898965e-03, + 2.666957205403309560e-03, + 2.666947103394957767e-03, + 2.666932669932118357e-03, + 2.666913905255097368e-03, + 2.666890809611217796e-03, + 2.666863383254845180e-03, + 2.666831626447352041e-03, + 2.666795539457136096e-03, + 2.666755122559616789e-03, + 2.666710376037238327e-03, + 2.666661300179458405e-03, + 2.666607895282764682e-03, + 2.666550161650657440e-03, + 2.666488099593648277e-03, + 2.666421709429266616e-03, + 2.666350991482070113e-03, + 2.666275946083622103e-03, + 2.666196573572492037e-03, + 2.666112874294279764e-03, + 2.666024848601579976e-03, + 2.665932496854018195e-03, + 2.665835819418210448e-03, + 2.665734816667800124e-03, + 2.665629488983411143e-03, + 2.665519836752714301e-03, + 2.665405860370361792e-03, + 2.665287560238003683e-03, + 2.665164936764320008e-03, + 2.665037990364966559e-03, + 2.664906721462637334e-03, + 2.664771130486979101e-03, + 2.664631217874687246e-03, + 2.664486984069427272e-03, + 2.664338429521868196e-03, + 2.664185554689679075e-03, + 2.664028360037533349e-03, + 2.663866846037081949e-03, + 2.663701013166976279e-03, + 2.663530861912872128e-03, + 2.663356392767401905e-03, + 2.663177606230191126e-03, + 2.662994502807855806e-03, + 2.662807083014009403e-03, + 2.662615347369234626e-03, + 2.662419296401119864e-03, + 2.662218930644224060e-03, + 2.662014250640085383e-03, + 2.661805256937245512e-03, + 2.661591950091191528e-03, + 2.661374330664436141e-03, + 2.661152399226425751e-03, + 2.660926156353610270e-03, + 2.660695602629420137e-03, + 2.660460738644231625e-03, + 2.660221564995423650e-03, + 2.659978082287320529e-03, + 2.659730291131247489e-03, + 2.659478192145464746e-03, + 2.659221785955233428e-03, + 2.658961073192762665e-03, + 2.658696054497220428e-03, + 2.658426730514748711e-03, + 2.658153101898464831e-03, + 2.657875169308424133e-03, + 2.657592933411643838e-03, + 2.657306394882102182e-03, + 2.657015554400754022e-03, + 2.656720412655475330e-03, + 2.656420970341124774e-03, + 2.656117228159484301e-03, + 2.655809186819317689e-03, + 2.655496847036327174e-03, + 2.655180209533142613e-03, + 2.654859275039357040e-03, + 2.654534044291526236e-03, + 2.654204518033108015e-03, + 2.653870697014530742e-03, + 2.653532581993169048e-03, + 2.653190173733302633e-03, + 2.652843473006156593e-03, + 2.652492480589942192e-03, + 2.652137197269732825e-03, + 2.651777623837573306e-03, + 2.651413761092433902e-03, + 2.651045609840196014e-03, + 2.650673170893712901e-03, + 2.650296445072693879e-03, + 2.649915433203831397e-03, + 2.649530136120729906e-03, + 2.649140554663868136e-03, + 2.648746689680707509e-03, + 2.648348542025595002e-03, + 2.647946112559774849e-03, + 2.647539402151441890e-03, + 2.647128411675679551e-03, + 2.646713142014488467e-03, + 2.646293594056768703e-03, + 2.645869768698337968e-03, + 2.645441666841913397e-03, + 2.645009289397122834e-03, + 2.644572637280453217e-03, + 2.644131711415370276e-03, + 2.643686512732172384e-03, + 2.643237042168059079e-03, + 2.642783300667140168e-03, + 2.642325289180423153e-03, + 2.641863008665787643e-03, + 2.641396460087999665e-03, + 2.640925644418729012e-03, + 2.640450562636532331e-03, + 2.639971215726809751e-03, + 2.639487604681870804e-03, + 2.638999730500924453e-03, + 2.638507594190010568e-03, + 2.638011196762038522e-03, + 2.637510539236862656e-03, + 2.637005622641141762e-03, + 2.636496448008389393e-03, + 2.635983016379067102e-03, + 2.635465328800405769e-03, + 2.634943386326572563e-03, + 2.634417190018538673e-03, + 2.633886740944172983e-03, + 2.633352040178186994e-03, + 2.632813088802130486e-03, + 2.632269887904424045e-03, + 2.631722438580351691e-03, + 2.631170741931993223e-03, + 2.630614799068321796e-03, + 2.630054611105150583e-03, + 2.629490179165090268e-03, + 2.628921504377638822e-03, + 2.628348587879124256e-03, + 2.627771430812675998e-03, + 2.627190034328289077e-03, + 2.626604399582766012e-03, + 2.626014527739753673e-03, + 2.625420419969732005e-03, + 2.624822077449963289e-03, + 2.624219501364574107e-03, + 2.623612692904503732e-03, + 2.623001653267471173e-03, + 2.622386383658049762e-03, + 2.621766885287630730e-03, + 2.621143159374364658e-03, + 2.620515207143253415e-03, + 2.619883029826098123e-03, + 2.619246628661486137e-03, + 2.618606004894820111e-03, + 2.617961159778265084e-03, + 2.617312094570865139e-03, + 2.616658810538374704e-03, + 2.616001308953337483e-03, + 2.615339591095171886e-03, + 2.614673658250001899e-03, + 2.614003511710742515e-03, + 2.613329152777116218e-03, + 2.612650582755619150e-03, + 2.611967802959531525e-03, + 2.611280814708870791e-03, + 2.610589619330445834e-03, + 2.609894218157874334e-03, + 2.609194612531460025e-03, + 2.608490803798331481e-03, + 2.607782793312371419e-03, + 2.607070582434204125e-03, + 2.606354172531175073e-03, + 2.605633564977495771e-03, + 2.604908761153999601e-03, + 2.604179762448356923e-03, + 2.603446570254932396e-03, + 2.602709185974859136e-03, + 2.601967611016023536e-03, + 2.601221846792998484e-03, + 2.600471894727142234e-03, + 2.599717756246551579e-03, + 2.598959432785984212e-03, + 2.598196925786999678e-03, + 2.597430236697862230e-03, + 2.596659366973512635e-03, + 2.595884318075677467e-03, + 2.595105091472781501e-03, + 2.594321688639914317e-03, + 2.593534111058952603e-03, + 2.592742360218398823e-03, + 2.591946437613535173e-03, + 2.591146344746320367e-03, + 2.590342083125371422e-03, + 2.589533654266093759e-03, + 2.588721059690503833e-03, + 2.587904300927329742e-03, + 2.587083379512007762e-03, + 2.586258296986672801e-03, + 2.585429054900080341e-03, + 2.584595654807725698e-03, + 2.583758098271764225e-03, + 2.582916386861036466e-03, + 2.582070522151013511e-03, + 2.581220505723874625e-03, + 2.580366339168474726e-03, + 2.579508024080287131e-03, + 2.578645562061438259e-03, + 2.577778954720815179e-03, + 2.576908203673852239e-03, + 2.576033310542641657e-03, + 2.575154276955974719e-03, + 2.574271104549266317e-03, + 2.573383794964577507e-03, + 2.572492349850574733e-03, + 2.571596770862612236e-03, + 2.570697059662663091e-03, + 2.569793217919281916e-03, + 2.568885247307714156e-03, + 2.567973149509821060e-03, + 2.567056926214032839e-03, + 2.566136579115450584e-03, + 2.565212109915782079e-03, + 2.564283520323317953e-03, + 2.563350812052979811e-03, + 2.562413986826325447e-03, + 2.561473046371425238e-03, + 2.560527992423057737e-03, + 2.559578826722504544e-03, + 2.558625551017692547e-03, + 2.557668167063154464e-03, + 2.556706676619939500e-03, + 2.555741081455737383e-03, + 2.554771383344828922e-03, + 2.553797584068001874e-03, + 2.552819685412686685e-03, + 2.551837689172870623e-03, + 2.550851597149067420e-03, + 2.549861411148395332e-03, + 2.548867132984531606e-03, + 2.547868764477711611e-03, + 2.546866307454710189e-03, + 2.545859763748800457e-03, + 2.544849135199945059e-03, + 2.543834423654539427e-03, + 2.542815630965512830e-03, + 2.541792758992390822e-03, + 2.540765809601230624e-03, + 2.539734784664553040e-03, + 2.538699686061476890e-03, + 2.537660515677619705e-03, + 2.536617275405139791e-03, + 2.535569967142648623e-03, + 2.534518592795340954e-03, + 2.533463154274924120e-03, + 2.532403653499555596e-03, + 2.531340092393879419e-03, + 2.530272472889187520e-03, + 2.529200796923118319e-03, + 2.528125066439802868e-03, + 2.527045283390007540e-03, + 2.525961449730816568e-03, + 2.524873567425923483e-03, + 2.523781638445400394e-03, + 2.522685664765865823e-03, + 2.521585648370404473e-03, + 2.520481591248508249e-03, + 2.519373495396207661e-03, + 2.518261362815982490e-03, + 2.517145195516705836e-03, + 2.516024995513779002e-03, + 2.514900764829055158e-03, + 2.513772505490750441e-03, + 2.512640219533610487e-03, + 2.511503908998825429e-03, + 2.510363575933917575e-03, + 2.509219222392977764e-03, + 2.508070850436402554e-03, + 2.506918462131103691e-03, + 2.505762059550400989e-03, + 2.504601644773970289e-03, + 2.503437219887962289e-03, + 2.502268786984951799e-03, + 2.501096348163827157e-03, + 2.499919905529987985e-03, + 2.498739461195189065e-03, + 2.497555017277551179e-03, + 2.496366575901618357e-03, + 2.495174139198333592e-03, + 2.493977709305030595e-03, + 2.492777288365348367e-03, + 2.491572878529392087e-03, + 2.490364481953613856e-03, + 2.489152100800815729e-03, + 2.487935737240108951e-03, + 2.486715393447143808e-03, + 2.485491071603757908e-03, + 2.484262773898185221e-03, + 2.483030502525040463e-03, + 2.481794259685268789e-03, + 2.480554047586186125e-03, + 2.479309868441362946e-03, + 2.478061724470785598e-03, + 2.476809617900765665e-03, + 2.475553550963878816e-03, + 2.474293525899073226e-03, + 2.473029544951641390e-03, + 2.471761610373095219e-03, + 2.470489724421348187e-03, + 2.469213889360604309e-03, + 2.467934107461312605e-03, + 2.466650381000309346e-03, + 2.465362712260620297e-03, + 2.464071103531648502e-03, + 2.462775557109086674e-03, + 2.461476075294809652e-03, + 2.460172660397077354e-03, + 2.458865314730411186e-03, + 2.457554040615501229e-03, + 2.456238840379433921e-03, + 2.454919716355510786e-03, + 2.453596670883240183e-03, + 2.452269706308437061e-03, + 2.450938824983199971e-03, + 2.449604029265764916e-03, + 2.448265321520698770e-03, + 2.446922704118784792e-03, + 2.445576179437062084e-03, + 2.444225749858732789e-03, + 2.442871417773216734e-03, + 2.441513185576310585e-03, + 2.440151055669853922e-03, + 2.438785030461933928e-03, + 2.437415112366894936e-03, + 2.436041303805302864e-03, + 2.434663607203813810e-03, + 2.433282024995380485e-03, + 2.431896559619108663e-03, + 2.430507213520334379e-03, + 2.429113989150465201e-03, + 2.427716888967197499e-03, + 2.426315915434378544e-03, + 2.424911071021996090e-03, + 2.423502358206145423e-03, + 2.422089779469270045e-03, + 2.420673337299768767e-03, + 2.419253034192327904e-03, + 2.417828872647677114e-03, + 2.416400855172767641e-03, + 2.414968984280692517e-03, + 2.413533262490594623e-03, + 2.412093692327828883e-03, + 2.410650276323881604e-03, + 2.409203017016263351e-03, + 2.407751916948706709e-03, + 2.406296978671035747e-03, + 2.404838204739112237e-03, + 2.403375597714975734e-03, + 2.401909160166774190e-03, + 2.400438894668661168e-03, + 2.398964803800959777e-03, + 2.397486890150095449e-03, + 2.396005156308461930e-03, + 2.394519604874678458e-03, + 2.393030238453250618e-03, + 2.391537059655004030e-03, + 2.390040071096609896e-03, + 2.388539275400840874e-03, + 2.387034675196587560e-03, + 2.385526273118796902e-03, + 2.384014071808344265e-03, + 2.382498073912265885e-03, + 2.380978282083613586e-03, + 2.379454698981380185e-03, + 2.377927327270687712e-03, + 2.376396169622641691e-03, + 2.374861228714397927e-03, + 2.373322507229054523e-03, + 2.371780007855692207e-03, + 2.370233733289585538e-03, + 2.368683686231822568e-03, + 2.367129869389492190e-03, + 2.365572285475768272e-03, + 2.364010937209757440e-03, + 2.362445827316581471e-03, + 2.360876958527242421e-03, + 2.359304333578804772e-03, + 2.357727955214305223e-03, + 2.356147826182633000e-03, + 2.354563949238747123e-03, + 2.352976327143544138e-03, + 2.351384962663771380e-03, + 2.349789858572214323e-03, + 2.348191017647601169e-03, + 2.346588442674492694e-03, + 2.344982136443470033e-03, + 2.343372101751034497e-03, + 2.341758341399515202e-03, + 2.340140858197279402e-03, + 2.338519654958471847e-03, + 2.336894734503236395e-03, + 2.335266099657620602e-03, + 2.333633753253455158e-03, + 2.331997698128569860e-03, + 2.330357937126674352e-03, + 2.328714473097250135e-03, + 2.327067308895760037e-03, + 2.325416447383530684e-03, + 2.323761891427654925e-03, + 2.322103643901177010e-03, + 2.320441707683013229e-03, + 2.318776085657800554e-03, + 2.317106780716181574e-03, + 2.315433795754439326e-03, + 2.313757133674961344e-03, + 2.312076797385729209e-03, + 2.310392789800570952e-03, + 2.308705113839321088e-03, + 2.307013772427431598e-03, + 2.305318768496199180e-03, + 2.303620104982777392e-03, + 2.301917784830147164e-03, + 2.300211810986942454e-03, + 2.298502186407715229e-03, + 2.296788914052758524e-03, + 2.295071996888183204e-03, + 2.293351437885757932e-03, + 2.291627240023127749e-03, + 2.289899406283710422e-03, + 2.288167939656596261e-03, + 2.286432843136591928e-03, + 2.284694119724480638e-03, + 2.282951772426528633e-03, + 2.281205804254917129e-03, + 2.279456218227405781e-03, + 2.277703017367611101e-03, + 2.275946204704853808e-03, + 2.274185783274072087e-03, + 2.272421756116004606e-03, + 2.270654126277131968e-03, + 2.268882896809478085e-03, + 2.267108070770919824e-03, + 2.265329651224991421e-03, + 2.263547641240804681e-03, + 2.261762043893279263e-03, + 2.259972862263000433e-03, + 2.258180099436096332e-03, + 2.256383758504522039e-03, + 2.254583842565742544e-03, + 2.252780354722980823e-03, + 2.250973298085120686e-03, + 2.249162675766507285e-03, + 2.247348490887430671e-03, + 2.245530746573549865e-03, + 2.243709445956196865e-03, + 2.241884592172410477e-03, + 2.240056188364840037e-03, + 2.238224237681616605e-03, + 2.236388743276612745e-03, + 2.234549708309285961e-03, + 2.232707135944581988e-03, + 2.230861029353131686e-03, + 2.229011391711134809e-03, + 2.227158226200396871e-03, + 2.225301536008207712e-03, + 2.223441324327397883e-03, + 2.221577594356594944e-03, + 2.219710349299735142e-03, + 2.217839592366344873e-03, + 2.215965326771592286e-03, + 2.214087555736123352e-03, + 2.212206282486170721e-03, + 2.210321510253371140e-03, + 2.208433242275000506e-03, + 2.206541481793862416e-03, + 2.204646232058134203e-03, + 2.202747496321641029e-03, + 2.200845277843693684e-03, + 2.198939579889018330e-03, + 2.197030405727792065e-03, + 2.195117758635929152e-03, + 2.193201641894517231e-03, + 2.191282058790333404e-03, + 2.189359012615455652e-03, + 2.187432506667545164e-03, + 2.185502544249724472e-03, + 2.183569128670431302e-03, + 2.181632263243681816e-03, + 2.179691951288921428e-03, + 2.177748196130914644e-03, + 2.175801001099973622e-03, + 2.173850369531828055e-03, + 2.171896304767500282e-03, + 2.169938810153553780e-03, + 2.167977889041953089e-03, + 2.166013544789925898e-03, + 2.164045780760240605e-03, + 2.162074600321028505e-03, + 2.160100006845699222e-03, + 2.158122003713184873e-03, + 2.156140594307596591e-03, + 2.154155782018694638e-03, + 2.152167570241341529e-03, + 2.150175962375804311e-03, + 2.148180961827770609e-03, + 2.146182572008280103e-03, + 2.144180796333575775e-03, + 2.142175638225358048e-03, + 2.140167101110607845e-03, + 2.138155188421663345e-03, + 2.136139903596053023e-03, + 2.134121250076736337e-03, + 2.132099231311976231e-03, + 2.130073850755238082e-03, + 2.128045111865229603e-03, + 2.126013018106221765e-03, + 2.123977572947483711e-03, + 2.121938779863551637e-03, + 2.119896642334505484e-03, + 2.117851163845359611e-03, + 2.115802347886612707e-03, + 2.113750197953840563e-03, + 2.111694717547976229e-03, + 2.109635910175195524e-03, + 2.107573779346772619e-03, + 2.105508328579342413e-03, + 2.103439561394741808e-03, + 2.101367481319897819e-03, + 2.099292091887077372e-03, + 2.097213396633741157e-03, + 2.095131399102414388e-03, + 2.093046102840940507e-03, + 2.090957511402337637e-03, + 2.088865628344681487e-03, + 2.086770457231385077e-03, + 2.084672001630841383e-03, + 2.082570265116744264e-03, + 2.080465251267943610e-03, + 2.078356963668277508e-03, + 2.076245405906883626e-03, + 2.074130581578014897e-03, + 2.072012494280922861e-03, + 2.069891147620113968e-03, + 2.067766545205208632e-03, + 2.065638690650800288e-03, + 2.063507587576723836e-03, + 2.061373239607911228e-03, + 2.059235650374231438e-03, + 2.057094823510848686e-03, + 2.054950762657743648e-03, + 2.052803471460314545e-03, + 2.050652953568748299e-03, + 2.048499212638272074e-03, + 2.046342252329457715e-03, + 2.044182076307649292e-03, + 2.042018688243257135e-03, + 2.039852091811845871e-03, + 2.037682290693951410e-03, + 2.035509288575163347e-03, + 2.033333089145969268e-03, + 2.031153696101994574e-03, + 2.028971113143870214e-03, + 2.026785343977077856e-03, + 2.024596392312242189e-03, + 2.022404261864966558e-03, + 2.020208956355737124e-03, + 2.018010479509959286e-03, + 2.015808835058301596e-03, + 2.013604026736050441e-03, + 2.011396058283677728e-03, + 2.009184933446424119e-03, + 2.006970655974608247e-03, + 2.004753229623477094e-03, + 2.002532658153074584e-03, + 2.000308945328485317e-03, + 1.998082094919740453e-03, + 1.995852110701609120e-03, + 1.993618996453922366e-03, + 1.991382755961404460e-03, + 1.989143393013518071e-03, + 1.986900911404751793e-03, + 1.984655314934486575e-03, + 1.982406607406804466e-03, + 1.980154792630871123e-03, + 1.977899874420493455e-03, + 1.975641856594489119e-03, + 1.973380742976508714e-03, + 1.971116537394855366e-03, + 1.968849243683001675e-03, + 1.966578865678946138e-03, + 1.964305407225569629e-03, + 1.962028872170643208e-03, + 1.959749264366760901e-03, + 1.957466587671149744e-03, + 1.955180845946001555e-03, + 1.952892043058228116e-03, + 1.950600182879565908e-03, + 1.948305269286384860e-03, + 1.946007306159972623e-03, + 1.943706297386367174e-03, + 1.941402246856268774e-03, + 1.939095158465065560e-03, + 1.936785036113196530e-03, + 1.934471883705526614e-03, + 1.932155705151691449e-03, + 1.929836504366161994e-03, + 1.927514285268068246e-03, + 1.925189051781289870e-03, + 1.922860807834259533e-03, + 1.920529557360267994e-03, + 1.918195304297267215e-03, + 1.915858052587761070e-03, + 1.913517806179068593e-03, + 1.911174569023182815e-03, + 1.908828345076598373e-03, + 1.906479138300618773e-03, + 1.904126952661196583e-03, + 1.901771792128767978e-03, + 1.899413660678564127e-03, + 1.897052562290432731e-03, + 1.894688500948701632e-03, + 1.892321480642502772e-03, + 1.889951505365383613e-03, + 1.887578579115638689e-03, + 1.885202705896156733e-03, + 1.882823889714259347e-03, + 1.880442134582002408e-03, + 1.878057444516025585e-03, + 1.875669823537359348e-03, + 1.873279275671769313e-03, + 1.870885804949563034e-03, + 1.868489415405445156e-03, + 1.866090111078811016e-03, + 1.863687896013542381e-03, + 1.861282774258091362e-03, + 1.858874749865331230e-03, + 1.856463826892591762e-03, + 1.854050009402026782e-03, + 1.851633301459972535e-03, + 1.849213707137307202e-03, + 1.846791230509499697e-03, + 1.844365875656502974e-03, + 1.841937646662577307e-03, + 1.839506547616604057e-03, + 1.837072582611880755e-03, + 1.834635755746193315e-03, + 1.832196071121622175e-03, + 1.829753532844846957e-03, + 1.827308145026964974e-03, + 1.824859911783408830e-03, + 1.822408837233949024e-03, + 1.819954925503113529e-03, + 1.817498180719490878e-03, + 1.815038607016078182e-03, + 1.812576208530577342e-03, + 1.810110989404695950e-03, + 1.807642953784781769e-03, + 1.805172105821344812e-03, + 1.802698449669409278e-03, + 1.800221989488355904e-03, + 1.797742729441754572e-03, + 1.795260673697667009e-03, + 1.792775826428496741e-03, + 1.790288191810809762e-03, + 1.787797774025648738e-03, + 1.785304577258378829e-03, + 1.782808605698491238e-03, + 1.780309863539952103e-03, + 1.777808354981007125e-03, + 1.775304084224037151e-03, + 1.772797055475902953e-03, + 1.770287272947524771e-03, + 1.767774740854246174e-03, + 1.765259463415670129e-03, + 1.762741444855474250e-03, + 1.760220689401762947e-03, + 1.757697201286848639e-03, + 1.755170984747124463e-03, + 1.752642044023365034e-03, + 1.750110383360547551e-03, + 1.747576007007711285e-03, + 1.745038919218239908e-03, + 1.742499124249661776e-03, + 1.739956626363738188e-03, + 1.737411429826315936e-03, + 1.734863538907335757e-03, + 1.732312957881245201e-03, + 1.729759691026312111e-03, + 1.727203742624947936e-03, + 1.724645116964055756e-03, + 1.722083818334323385e-03, + 1.719519851030625610e-03, + 1.716953219352066254e-03, + 1.714383927601818586e-03, + 1.711811980087204685e-03, + 1.709237381119482931e-03, + 1.706660135014168717e-03, + 1.704080246090863360e-03, + 1.701497718673079113e-03, + 1.698912557088556397e-03, + 1.696324765669116139e-03, + 1.693734348750447916e-03, + 1.691141310672463838e-03, + 1.688545655779120523e-03, + 1.685947388418238251e-03, + 1.683346512941884992e-03, + 1.680743033705926238e-03, + 1.678136955070403400e-03, + 1.675528281399370515e-03, + 1.672917017060697800e-03, + 1.670303166426426178e-03, + 1.667686733872568872e-03, + 1.665067723778954414e-03, + 1.662446140529543013e-03, + 1.659821988512257419e-03, + 1.657195272118801212e-03, + 1.654565995744997292e-03, + 1.651934163790600091e-03, + 1.649299780659136197e-03, + 1.646662850758217255e-03, + 1.644023378499317924e-03, + 1.641381368297877355e-03, + 1.638736824573126805e-03, + 1.636089751748130402e-03, + 1.633440154250182831e-03, + 1.630788036510116530e-03, + 1.628133402962685062e-03, + 1.625476258046639659e-03, + 1.622816606204574618e-03, + 1.620154451882758811e-03, + 1.617489799531494346e-03, + 1.614822653604838570e-03, + 1.612153018560749359e-03, + 1.609480898860829456e-03, + 1.606806298970659330e-03, + 1.604129223359636270e-03, + 1.601449676500833448e-03, + 1.598767662871056292e-03, + 1.596083186951239739e-03, + 1.593396253225698184e-03, + 1.590706866182790532e-03, + 1.588015030314410617e-03, + 1.585320750116383376e-03, + 1.582624030088271641e-03, + 1.579924874733203968e-03, + 1.577223288558220931e-03, + 1.574519276074076712e-03, + 1.571812841795071705e-03, + 1.569103990239387528e-03, + 1.566392725928907699e-03, + 1.563679053389029853e-03, + 1.560962977149019408e-03, + 1.558244501741813974e-03, + 1.555523631703842943e-03, + 1.552800371575383974e-03, + 1.550074725900358946e-03, + 1.547346699226172413e-03, + 1.544616296104096495e-03, + 1.541883521088743304e-03, + 1.539148378738761005e-03, + 1.536410873616070533e-03, + 1.533671010286243334e-03, + 1.530928793318587448e-03, + 1.528184227286001357e-03, + 1.525437316764784688e-03, + 1.522688066335005754e-03, + 1.519936480580302710e-03, + 1.517182564087690352e-03, + 1.514426321447923975e-03, + 1.511667757255255639e-03, + 1.508906876107525248e-03, + 1.506143682605997052e-03, + 1.503378181355388482e-03, + 1.500610376964312724e-03, + 1.497840274044523034e-03, + 1.495067877211327329e-03, + 1.492293191083664088e-03, + 1.489516220283898084e-03, + 1.486736969437922303e-03, + 1.483955443174928956e-03, + 1.481171646127753174e-03, + 1.478385582932695633e-03, + 1.475597258229310914e-03, + 1.472806676660782426e-03, + 1.470013842873731796e-03, + 1.467218761518077281e-03, + 1.464421437247098376e-03, + 1.461621874717854760e-03, + 1.458820078590368800e-03, + 1.456016053528318361e-03, + 1.453209804198755993e-03, + 1.450401335271936333e-03, + 1.447590651421731779e-03, + 1.444777757325128344e-03, + 1.441962657662650225e-03, + 1.439145357118180044e-03, + 1.436325860378750464e-03, + 1.433504172134911518e-03, + 1.430680297080538050e-03, + 1.427854239912635650e-03, + 1.425026005331714047e-03, + 1.422195598041569838e-03, + 1.419363022749118653e-03, + 1.416528284164741882e-03, + 1.413691387002107783e-03, + 1.410852335977956160e-03, + 1.408011135812548085e-03, + 1.405167791229083472e-03, + 1.402322306954446353e-03, + 1.399474687718387390e-03, + 1.396624938253946714e-03, + 1.393773063297517245e-03, + 1.390919067588702873e-03, + 1.388062955870129163e-03, + 1.385204732887812627e-03, + 1.382344403390957767e-03, + 1.379481972131767339e-03, + 1.376617443865800136e-03, + 1.373750823351737238e-03, + 1.370882115351468311e-03, + 1.368011324629849401e-03, + 1.365138455955072641e-03, + 1.362263514098470667e-03, + 1.359386503834367210e-03, + 1.356507429940157546e-03, + 1.353626297196715723e-03, + 1.350743110387587044e-03, + 1.347857874299730318e-03, + 1.344970593722932383e-03, + 1.342081273450256755e-03, + 1.339189918277843699e-03, + 1.336296533004700110e-03, + 1.333401122433089609e-03, + 1.330503691368315486e-03, + 1.327604244618541592e-03, + 1.324702786995143834e-03, + 1.321799323312538438e-03, + 1.318893858387956653e-03, + 1.315986397041838101e-03, + 1.313076944097614149e-03, + 1.310165504381527717e-03, + 1.307252082723060456e-03, + 1.304336683954412327e-03, + 1.301419312910947427e-03, + 1.298499974430991459e-03, + 1.295578673355568707e-03, + 1.292655414529092451e-03, + 1.289730202798534259e-03, + 1.286803043013855057e-03, + 1.283873940028072138e-03, + 1.280942898697107592e-03, + 1.278009923879605287e-03, + 1.275075020437288877e-03, + 1.272138193234779438e-03, + 1.269199447139384481e-03, + 1.266258787021474607e-03, + 1.263316217754225897e-03, + 1.260371744213731370e-03, + 1.257425371278811897e-03, + 1.254477103831049163e-03, + 1.251526946755263580e-03, + 1.248574904938697019e-03, + 1.245620983271488336e-03, + 1.242665186646701786e-03, + 1.239707519960140747e-03, + 1.236747988110467643e-03, + 1.233786595998933320e-03, + 1.230823348529759553e-03, + 1.227858250609936740e-03, + 1.224891307149020281e-03, + 1.221922523059511571e-03, + 1.218951903256661976e-03, + 1.215979452658313888e-03, + 1.213005176184985294e-03, + 1.210029078760302152e-03, + 1.207051165310143179e-03, + 1.204071440763413098e-03, + 1.201089910051456955e-03, + 1.198106578108499871e-03, + 1.195121449871445378e-03, + 1.192134530279670293e-03, + 1.189145824275410906e-03, + 1.186155336803558068e-03, + 1.183163072811455096e-03, + 1.180169037249271819e-03, + 1.177173235069813983e-03, + 1.174175671228311823e-03, + 1.171176350682804962e-03, + 1.168175278393938791e-03, + 1.165172459324754573e-03, + 1.162167898441081705e-03, + 1.159161600711333022e-03, + 1.156153571106293592e-03, + 1.153143814599577165e-03, + 1.150132336167021194e-03, + 1.147119140787478293e-03, + 1.144104233441937176e-03, + 1.141087619113984736e-03, + 1.138069302789875871e-03, + 1.135049289458360663e-03, + 1.132027584110509169e-03, + 1.129004191740089159e-03, + 1.125979117343285088e-03, + 1.122952365918837092e-03, + 1.119923942467754112e-03, + 1.116893851993710921e-03, + 1.113862099502845602e-03, + 1.110828690003601467e-03, + 1.107793628506804472e-03, + 1.104756920026108390e-03, + 1.101718569577190545e-03, + 1.098678582178213257e-03, + 1.095636962849879346e-03, + 1.092593716615226354e-03, + 1.089548848499742768e-03, + 1.086502363531102397e-03, + 1.083454266739560965e-03, + 1.080404563157726702e-03, + 1.077353257820378406e-03, + 1.074300355764837333e-03, + 1.071245862030765963e-03, + 1.068189781659962005e-03, + 1.065132119696748057e-03, + 1.062072881187762141e-03, + 1.059012071181745628e-03, + 1.055949694729949604e-03, + 1.052885756885909132e-03, + 1.049820262705237258e-03, + 1.046753217246105096e-03, + 1.043684625568666981e-03, + 1.040614492735542291e-03, + 1.037542823811598387e-03, + 1.034469623863746787e-03, + 1.031394897961330007e-03, + 1.028318651175911440e-03, + 1.025240888581078254e-03, + 1.022161615252819341e-03, + 1.019080836269326907e-03, + 1.015998556710780501e-03, + 1.012914781659746436e-03, + 1.009829516200965067e-03, + 1.006742765421137420e-03, + 1.003654534409396167e-03, + 1.000564828256683084e-03, + 9.974736520565561249e-04, + 9.943810109042997263e-04, + 9.912869098973196760e-04, + 9.881913541355479523e-04, + 9.850943487206154786e-04, + 9.819958987563139931e-04, + 9.788960093486736777e-04, + 9.757946856057299464e-04, + 9.726919326376635240e-04, + 9.695877555565157345e-04, + 9.664821594765871625e-04, + 9.633751495142291611e-04, + 9.602667307876290711e-04, + 9.571569084172097501e-04, + 9.540456875254169598e-04, + 9.509330732365747340e-04, + 9.478190706769465271e-04, + 9.447036849752028309e-04, + 9.415869212615238888e-04, + 9.384687846684163165e-04, + 9.353492803300844823e-04, + 9.322284133828969300e-04, + 9.291061889651910065e-04, + 9.259826122170308673e-04, + 9.228576882806355198e-04, + 9.197314223001496229e-04, + 9.166038194214355369e-04, + 9.134748847924766468e-04, + 9.103446235631572694e-04, + 9.072130408850562211e-04, + 9.040801419118463461e-04, + 9.009459317990785440e-04, + 8.978104157039666633e-04, + 8.946735987858692131e-04, + 8.915354862057171207e-04, + 8.883960831264971778e-04, + 8.852553947130321638e-04, + 8.821134261316949422e-04, + 8.789701825511690280e-04, + 8.758256691415300518e-04, + 8.726798910747286635e-04, + 8.695328535246451759e-04, + 8.663845616669495946e-04, + 8.632350206788829338e-04, + 8.600842357396577213e-04, + 8.569322120301849956e-04, + 8.537789547331917257e-04, + 8.506244690329456404e-04, + 8.474687601156552985e-04, + 8.443118331692558510e-04, + 8.411536933832632155e-04, + 8.379943459488326234e-04, + 8.348337960592372951e-04, + 8.316720489090277495e-04, + 8.285091096945057087e-04, + 8.253449836137894758e-04, + 8.221796758665959014e-04, + 8.190131916543671271e-04, + 8.158455361799879339e-04, + 8.126767146481971970e-04, + 8.095067322653606368e-04, + 8.063355942392626523e-04, + 8.031633057795123549e-04, + 7.999898720973251014e-04, + 7.968152984053082557e-04, + 7.936395899178686321e-04, + 7.904627518509929444e-04, + 7.872847894220313990e-04, + 7.841057078501818996e-04, + 7.809255123559097822e-04, + 7.777442081614502345e-04, + 7.745618004905692293e-04, + 7.713782945683562249e-04, + 7.681936956216292231e-04, + 7.650080088787240004e-04, + 7.618212395692666424e-04, + 7.586333929245912865e-04, + 7.554444741775220894e-04, + 7.522544885621478212e-04, + 7.490634413142414514e-04, + 7.458713376710347440e-04, + 7.426781828710028255e-04, + 7.394839821542779175e-04, + 7.362887407623561675e-04, + 7.330924639382328497e-04, + 7.298951569261804282e-04, + 7.266968249718095980e-04, + 7.234974733225605368e-04, + 7.202971072268386874e-04, + 7.170957319345059016e-04, + 7.138933526969416972e-04, + 7.106899747668926626e-04, + 7.074856033982510626e-04, + 7.042802438464738825e-04, + 7.010739013682842392e-04, + 6.978665812218143869e-04, + 6.946582886663051765e-04, + 6.914490289625256419e-04, + 6.882388073725532324e-04, + 6.850276291596201807e-04, + 6.818154995881786640e-04, + 6.786024239243886947e-04, + 6.753884074352550955e-04, + 6.721734553890467605e-04, + 6.689575730557175423e-04, + 6.657407657059646227e-04, + 6.625230386120826466e-04, + 6.593043970473112499e-04, + 6.560848462863215404e-04, + 6.528643916050021851e-04, + 6.496430382802238128e-04, + 6.464207915902738877e-04, + 6.431976568146215460e-04, + 6.399736392336981532e-04, + 6.367487441293232875e-04, + 6.335229767844713106e-04, + 6.302963424830573466e-04, + 6.270688465103545911e-04, + 6.238404941527683637e-04, + 6.206112906976156895e-04, + 6.173812414336177440e-04, + 6.141503516503178531e-04, + 6.109186266385717694e-04, + 6.076860716903302899e-04, + 6.044526920984079951e-04, + 6.012184931569106421e-04, + 5.979834801610095420e-04, + 5.947476584067158288e-04, + 5.915110331913025392e-04, + 5.882736098130849538e-04, + 5.850353935711913962e-04, + 5.817963897659910594e-04, + 5.785566036987889113e-04, + 5.753160406719709779e-04, + 5.720747059887740585e-04, + 5.688326049533478507e-04, + 5.655897428712573696e-04, + 5.623461250485997567e-04, + 5.591017567924378524e-04, + 5.558566434112180476e-04, + 5.526107902138964164e-04, + 5.493642025104392927e-04, + 5.461168856118818167e-04, + 5.428688448301055656e-04, + 5.396200854779733191e-04, + 5.363706128690315551e-04, + 5.331204323179358903e-04, + 5.298695491402229639e-04, + 5.266179686520900197e-04, + 5.233656961708159014e-04, + 5.201127370145368399e-04, + 5.168590965020180119e-04, + 5.136047799530848350e-04, + 5.103497926883931177e-04, + 5.070941400291993162e-04, + 5.038378272978710857e-04, + 5.005808598172861983e-04, + 4.973232429113343123e-04, + 4.940649819046973121e-04, + 4.908060821226177236e-04, + 4.875465488913222024e-04, + 4.842863875378040982e-04, + 4.810256033895855257e-04, + 4.777642017751595029e-04, + 4.745021880237442705e-04, + 4.712395674650742038e-04, + 4.679763454298163628e-04, + 4.647125272493489358e-04, + 4.614481182555325270e-04, + 4.581831237811354886e-04, + 4.549175491595396146e-04, + 4.516513997248717085e-04, + 4.483846808117817554e-04, + 4.451173977554991924e-04, + 4.418495558923444893e-04, + 4.385811605588382052e-04, + 4.353122170922051970e-04, + 4.320427308304354975e-04, + 4.287727071121368093e-04, + 4.255021512763028650e-04, + 4.222310686627397361e-04, + 4.189594646117698992e-04, + 4.156873444643660815e-04, + 4.124147135618557065e-04, + 4.091415772463415112e-04, + 4.058679408604830242e-04, + 4.025938097473352913e-04, + 3.993191892504175593e-04, + 3.960440847142124429e-04, + 3.927685014832091705e-04, + 3.894924449027724095e-04, + 3.862159203184739641e-04, + 3.829389330765961704e-04, + 3.796614885239066534e-04, + 3.763835920074253319e-04, + 3.731052488748582622e-04, + 3.698264644743695217e-04, + 3.665472441543497859e-04, + 3.632675932638496303e-04, + 3.599875171523494078e-04, + 3.567070211695356867e-04, + 3.534261106657225716e-04, + 3.501447909916321523e-04, + 3.468630674981618340e-04, + 3.435809455368159585e-04, + 3.402984304594772538e-04, + 3.370155276181783393e-04, + 3.337322423656068006e-04, + 3.304485800544350988e-04, + 3.271645460381914015e-04, + 3.238801456703017988e-04, + 3.205953843045888734e-04, + 3.173102672953418486e-04, + 3.140247999971572108e-04, + 3.107389877647104845e-04, + 3.074528359531906725e-04, + 3.041663499180679653e-04, + 3.008795350148677937e-04, + 2.975923965995989256e-04, + 2.943049400284546060e-04, + 2.910171706579480822e-04, + 2.877290938446853551e-04, + 2.844407149454302852e-04, + 2.811520393176066869e-04, + 2.778630723184122644e-04, + 2.745738193053223861e-04, + 2.712842856361543232e-04, + 2.679944766688369118e-04, + 2.647043977615533413e-04, + 2.614140542724347057e-04, + 2.581234515599922200e-04, + 2.548325949828884537e-04, + 2.515414898997114378e-04, + 2.482501416694012975e-04, + 2.449585556510247932e-04, + 2.416667372036190593e-04, + 2.383746916862565751e-04, + 2.350824244585482620e-04, + 2.317899408796834763e-04, + 2.284972463092262748e-04, + 2.252043461068150903e-04, + 2.219112456319322036e-04, + 2.186179502444103367e-04, + 2.153244653038341731e-04, + 2.120307961700496893e-04, + 2.087369482029304815e-04, + 2.054429267621521167e-04, + 2.021487372076230754e-04, + 1.988543848992547656e-04, + 1.955598751967337859e-04, + 1.922652134599536278e-04, + 1.889704050487850959e-04, + 1.856754553228474056e-04, + 1.823803696419404546e-04, + 1.790851533658161649e-04, + 1.757898118539478452e-04, + 1.724943504660376525e-04, + 1.691987745613451996e-04, + 1.659030894995614219e-04, + 1.626073006398439627e-04, + 1.593114133413243907e-04, + 1.560154329631695377e-04, + 1.527193648644306059e-04, + 1.494232144038097111e-04, + 1.461269869400946483e-04, + 1.428306878319287698e-04, + 1.395343224375823266e-04, + 1.362378961153837644e-04, + 1.329414142234186947e-04, + 1.296448821196660435e-04, + 1.263483051616975646e-04, + 1.230516887071075904e-04, + 1.197550381132875177e-04, + 1.164583587372658609e-04, + 1.131616559357765159e-04, + 1.098649350657621149e-04, + 1.065682014834117692e-04, + 1.032714605450330122e-04, + 9.997471760638196596e-05, + 9.667797802317011006e-05, + 9.338124715083323882e-05, + 9.008453034430404958e-05, + 8.678783295844292342e-05, + 8.349116034781044594e-05, + 8.019451786643681107e-05, + 7.689791086825447188e-05, + 7.360134470686957727e-05, + 7.030482473533193133e-05, + 6.700835630656777977e-05, + 6.371194477315063668e-05, + 6.041559548707205028e-05, + 5.711931380024711901e-05, + 5.382310506391863432e-05, + 5.052697462916185808e-05, + 4.723092784665613541e-05, + 4.393497006638162980e-05, + 4.063910663841980984e-05, + 3.734334291198869232e-05, + 3.404768423594911039e-05, + 3.075213595886917617e-05, + 2.745670342886867400e-05, + 2.416139199339034803e-05, + 2.086620699963150614e-05, + 1.757115379431545995e-05, + 1.427623772346204836e-05, + 1.098146413282007669e-05, + 7.686838367564612450e-06, + 4.392365772435382987e-06, + 1.098051691507584608e-06, +-2.196098531743243349e-06, +-5.490079553935551289e-06, +-8.783886032672101190e-06, +-1.207751262603444019e-05, +-1.537095399251780210e-05, +-1.866420479126051438e-05, +-2.195725968190544137e-05, +-2.525011332490261390e-05, +-2.854276038107720015e-05, +-3.183519551185818420e-05, +-3.512741337950769173e-05, +-3.841940864668903034e-05, +-4.171117597669515126e-05, +-4.500271003360477448e-05, +-4.829400548221701131e-05, +-5.158505698754674290e-05, +-5.487585921578673438e-05, +-5.816640683343618029e-05, +-6.145669450796996229e-05, +-6.474671690733260450e-05, +-6.803646870016783984e-05, +-7.132594455604772898e-05, +-7.461513914503967745e-05, +-7.790404713793665247e-05, +-8.119266320648520414e-05, +-8.448098202295342446e-05, +-8.776899826036081177e-05, +-9.105670659270608870e-05, +-9.434410169453594718e-05, +-9.763117824117370676e-05, +-1.009179309089479321e-04, +-1.042043543747611645e-04, +-1.074904433163180922e-04, +-1.107761924123551440e-04, +-1.140615963421341933e-04, +-1.173466497861127856e-04, +-1.206313474250716940e-04, +-1.239156839410773250e-04, +-1.271996540169766294e-04, +-1.304832523363323347e-04, +-1.337664735835797478e-04, +-1.370493124442523640e-04, +-1.403317636045531465e-04, +-1.436138217516549312e-04, +-1.468954815735633030e-04, +-1.501767377594181931e-04, +-1.534575849990614180e-04, +-1.567380179832669372e-04, +-1.600180314038954330e-04, +-1.632976199538285268e-04, +-1.665767783264667933e-04, +-1.698555012166145508e-04, +-1.731337833199779572e-04, +-1.764116193330989273e-04, +-1.796890039535853909e-04, +-1.829659318799699394e-04, +-1.862423978120152459e-04, +-1.895183964502802486e-04, +-1.927939224963504084e-04, +-1.960689706530639818e-04, +-1.993435356240837609e-04, +-2.026176121141218560e-04, +-2.058911948291719854e-04, +-2.091642784760753887e-04, +-2.124368577627511374e-04, +-2.157089273984224361e-04, +-2.189804820931871691e-04, +-2.222515165582460443e-04, +-2.255220255061316577e-04, +-2.287920036502012766e-04, +-2.320614457052342619e-04, +-2.353303463869272640e-04, +-2.385987004121223928e-04, +-2.418665024990343038e-04, +-2.451337473668203123e-04, +-2.484004297358101626e-04, +-2.516665443277300786e-04, +-2.549320858652781357e-04, +-2.581970490723443272e-04, +-2.614614286742466490e-04, +-2.647252193972949252e-04, +-2.679884159690228270e-04, +-2.712510131184113276e-04, +-2.745130055753902394e-04, +-2.777743880715006076e-04, +-2.810351553390287582e-04, +-2.842953021119635397e-04, +-2.875548231255665999e-04, +-2.908137131159437461e-04, +-2.940719668209277574e-04, +-2.973295789795759106e-04, +-3.005865443321078558e-04, +-3.038428576201323769e-04, +-3.070985135865060122e-04, +-3.103535069756393951e-04, +-3.136078325330647664e-04, +-3.168614850056608915e-04, +-3.201144591418862728e-04, +-3.233667496913455227e-04, +-3.266183514050179136e-04, +-3.298692590354116057e-04, +-3.331194673364982692e-04, +-3.363689710632143518e-04, +-3.396177649724131165e-04, +-3.428658438220009118e-04, +-3.461132023716010286e-04, +-3.493598353820524197e-04, +-3.526057376156356473e-04, +-3.558509038362992101e-04, +-3.590953288092350783e-04, +-3.623390073011009552e-04, +-3.655819340802487181e-04, +-3.688241039162976228e-04, +-3.720655115803578653e-04, +-3.753061518452608671e-04, +-3.785460194851286838e-04, +-3.817851092756021215e-04, +-3.850234159940647870e-04, +-3.882609344191465233e-04, +-3.914976593313094751e-04, +-3.947335855123510363e-04, +-3.979687077456279544e-04, +-4.012030208163552456e-04, +-4.044365195108195511e-04, +-4.076691986173236948e-04, +-4.109010529256936959e-04, +-4.141320772272149642e-04, +-4.173622663147804018e-04, +-4.205916149831198745e-04, +-4.238201180283735782e-04, +-4.270477702483887312e-04, +-4.302745664425859456e-04, +-4.335005014122529383e-04, +-4.367255699601221798e-04, +-4.399497668905954866e-04, +-4.431730870098967855e-04, +-4.463955251260075491e-04, +-4.496170760481697434e-04, +-4.528377345877607793e-04, +-4.560574955577974894e-04, +-4.592763537728714561e-04, +-4.624943040493740914e-04, +-4.657113412053578592e-04, +-4.689274600608400690e-04, +-4.721426554373719052e-04, +-4.753569221582639955e-04, +-4.785702550488157739e-04, +-4.817826489358829922e-04, +-4.849940986481134802e-04, +-4.882045990161591612e-04, +-4.914141448722617782e-04, +-4.946227310504737462e-04, +-4.978303523868800881e-04, +-5.010370037191079961e-04, +-5.042426798869065543e-04, +-5.074473757316527766e-04, +-5.106510860965773370e-04, +-5.138538058269840128e-04, +-5.170555297698334590e-04, +-5.202562527739606991e-04, +-5.234559696903021576e-04, +-5.266546753714717363e-04, +-5.298523646719892561e-04, +-5.330490324484930690e-04, +-5.362446735593299043e-04, +-5.394392828647718175e-04, +-5.426328552272393193e-04, +-5.458253855108824394e-04, +-5.490168685818749795e-04, +-5.522072993082758436e-04, +-5.553966725602587804e-04, +-5.585849832100405008e-04, +-5.617722261313991836e-04, +-5.649583962005285016e-04, +-5.681434882955527666e-04, +-5.713274972964661053e-04, +-5.745104180852761162e-04, +-5.776922455462305765e-04, +-5.808729745653977471e-04, +-5.840526000309581318e-04, +-5.872311168330728547e-04, +-5.904085198641715162e-04, +-5.935848040185408465e-04, +-5.967599641925375349e-04, +-5.999339952847495584e-04, +-6.031068921959205050e-04, +-6.062786498284686212e-04, +-6.094492630873483193e-04, +-6.126187268796277723e-04, +-6.157870361140749650e-04, +-6.189541857020791583e-04, +-6.221201705568252683e-04, +-6.252849855939225958e-04, +-6.284486257309286443e-04, +-6.316110858875609736e-04, +-6.347723609859271584e-04, +-6.379324459501001070e-04, +-6.410913357063392380e-04, +-6.442490251833203315e-04, +-6.474055093117067269e-04, +-6.505607830243746205e-04, +-6.537148412566383621e-04, +-6.568676789458234968e-04, +-6.600192910315004101e-04, +-6.631696724556909771e-04, +-6.663188181623920557e-04, +-6.694667230981431747e-04, +-6.726133822115443889e-04, +-6.757587904534691084e-04, +-6.789029427772956841e-04, +-6.820458341384781718e-04, +-6.851874594947773758e-04, +-6.883278138064745453e-04, +-6.914668920359579680e-04, +-6.946046891479470747e-04, +-6.977412001096986545e-04, +-7.008764198906077599e-04, +-7.040103434624876482e-04, +-7.071429657994420621e-04, +-7.102742818780808775e-04, +-7.134042866774584126e-04, +-7.165329751785919337e-04, +-7.196603423653144885e-04, +-7.227863832238489231e-04, +-7.259110927424129072e-04, +-7.290344659120566971e-04, +-7.321564977261829426e-04, +-7.352771831804873811e-04, +-7.383965172731714495e-04, +-7.415144950048176012e-04, +-7.446311113786734754e-04, +-7.477463614002337203e-04, +-7.508602400774722291e-04, +-7.539727424210495481e-04, +-7.570838634438974103e-04, +-7.601935981614507546e-04, +-7.633019415918519896e-04, +-7.664088887555503809e-04, +-7.695144346755075073e-04, +-7.726185743774252688e-04, +-7.757213028892643919e-04, +-7.788226152417984573e-04, +-7.819225064681494279e-04, +-7.850209716040009106e-04, +-7.881180056878005777e-04, +-7.912136037603769009e-04, +-7.943077608651268268e-04, +-7.974004720482552773e-04, +-8.004917323583567558e-04, +-8.035815368466254658e-04, +-8.066698805670859205e-04, +-8.097567585761720555e-04, +-8.128421659329493820e-04, +-8.159260976993275988e-04, +-8.190085489395866874e-04, +-8.220895147210073757e-04, +-8.251689901130445422e-04, +-8.282469701882418491e-04, +-8.313234500218151914e-04, +-8.343984246912554458e-04, +-8.374718892771575596e-04, +-8.405438388627525011e-04, +-8.436142685338388460e-04, +-8.466831733789283859e-04, +-8.497505484894734857e-04, +-8.528163889594431602e-04, +-8.558806898856231816e-04, +-8.589434463674683025e-04, +-8.620046535074060495e-04, +-8.650643064104177873e-04, +-8.681224001842529573e-04, +-8.711789299395788057e-04, +-8.742338907899210778e-04, +-8.772872778511861015e-04, +-8.803390862425655543e-04, +-8.833893110857148545e-04, +-8.864379475053854682e-04, +-8.894849906289467763e-04, +-8.925304355866024806e-04, +-8.955742775116063608e-04, +-8.986165115398496266e-04, +-9.016571328100857815e-04, +-9.046961364641374886e-04, +-9.077335176464945482e-04, +-9.107692715045260764e-04, +-9.138033931886927917e-04, +-9.168358778521530162e-04, +-9.198667206509623853e-04, +-9.228959167442901462e-04, +-9.259234612940278695e-04, +-9.289493494649877494e-04, +-9.319735764251264919e-04, +-9.349961373450629528e-04, +-9.380170273987081678e-04, +-9.410362417624598989e-04, +-9.440537756160874514e-04, +-9.470696241422557095e-04, +-9.500837825264855626e-04, +-9.530962459572843350e-04, +-9.561070096263514593e-04, +-9.591160687281927166e-04, +-9.621234184603264525e-04, +-9.651290540234868645e-04, +-9.681329706212365082e-04, +-9.711351634602379988e-04, +-9.741356277501274840e-04, +-9.771343587037274736e-04, +-9.801313515369828710e-04, +-9.831266014685030065e-04, +-9.861201037203641637e-04, +-9.891118535176651651e-04, +-9.921018460884547304e-04, +-9.950900766639422454e-04, +-9.980765404783737294e-04, +-1.001061232769300934e-03, +-1.004044148777206861e-03, +-1.007025283745685302e-03, +-1.010004632921669612e-03, +-1.012982191555033065e-03, +-1.015957954898797679e-03, +-1.018931918209275153e-03, +-1.021904076745999441e-03, +-1.024874425771287855e-03, +-1.027842960551093691e-03, +-1.030809676354292603e-03, +-1.033774568452949750e-03, +-1.036737632122536855e-03, +-1.039698862641466647e-03, +-1.042658255291628458e-03, +-1.045615805357941533e-03, +-1.048571508128550833e-03, +-1.051525358895048431e-03, +-1.054477352952056532e-03, +-1.057427485597469677e-03, +-1.060375752132626265e-03, +-1.063322147861946870e-03, +-1.066266668093119414e-03, +-1.069209308137316012e-03, +-1.072150063308800272e-03, +-1.075088928925133948e-03, +-1.078025900307389871e-03, +-1.080960972779679459e-03, +-1.083894141669763120e-03, +-1.086825402308280253e-03, +-1.089754750029591455e-03, +-1.092682180171335518e-03, +-1.095607688074369361e-03, +-1.098531269082910497e-03, +-1.101452918544735225e-03, +-1.104372631810798507e-03, +-1.107290404235427173e-03, +-1.110206231176542619e-03, +-1.113120107995258564e-03, +-1.116032030056153621e-03, +-1.118941992727155070e-03, +-1.121849991379732280e-03, +-1.124756021388849652e-03, +-1.127660078132507572e-03, +-1.130562156992537129e-03, +-1.133462253354214572e-03, +-1.136360362605877503e-03, +-1.139256480139784868e-03, +-1.142150601351330473e-03, +-1.145042721639650358e-03, +-1.147932836407163310e-03, +-1.150820941059780330e-03, +-1.153707031007101527e-03, +-1.156591101662042065e-03, +-1.159473148441023203e-03, +-1.162353166764180457e-03, +-1.165231152054984351e-03, +-1.168107099740434921e-03, +-1.170981005251267928e-03, +-1.173852864021575175e-03, +-1.176722671489002477e-03, +-1.179590423094947641e-03, +-1.182456114284126999e-03, +-1.185319740505084551e-03, +-1.188181297209766306e-03, +-1.191040779853690936e-03, +-1.193898183896186568e-03, +-1.196753504799986153e-03, +-1.199606738031433690e-03, +-1.202457879060688699e-03, +-1.205306923361348492e-03, +-1.208153866410636382e-03, +-1.210998703689614847e-03, +-1.213841430682805183e-03, +-1.216682042878378762e-03, +-1.219520535768365416e-03, +-1.222356904848271794e-03, +-1.225191145617351117e-03, +-1.228023253578465045e-03, +-1.230853224238304426e-03, +-1.233681053107324021e-03, +-1.236506735699289964e-03, +-1.239330267532078381e-03, +-1.242151644127206149e-03, +-1.244970861009807913e-03, +-1.247787913708798494e-03, +-1.250602797756777051e-03, +-1.253415508690288588e-03, +-1.256226042049434291e-03, +-1.259034393378080565e-03, +-1.261840558224048767e-03, +-1.264644532138755901e-03, +-1.267446310677397200e-03, +-1.270245889399085337e-03, +-1.273043263866787539e-03, +-1.275838429646910773e-03, +-1.278631382310101020e-03, +-1.281422117430519245e-03, +-1.284210630586395639e-03, +-1.286996917359604182e-03, +-1.289780973335866035e-03, +-1.292562794104933641e-03, +-1.295342375260219057e-03, +-1.298119712398998656e-03, +-1.300894801122610880e-03, +-1.303667637036068317e-03, +-1.306438215748275625e-03, +-1.309206532872208206e-03, +-1.311972584024549433e-03, +-1.314736364825887108e-03, +-1.317497870900899079e-03, +-1.320257097878000654e-03, +-1.323014041389524581e-03, +-1.325768697071921191e-03, +-1.328521060565332739e-03, +-1.331271127514145267e-03, +-1.334018893566273241e-03, +-1.336764354373951025e-03, +-1.339507505593319795e-03, +-1.342248342884367913e-03, +-1.344986861911061241e-03, +-1.347723058341533968e-03, +-1.350456927847724529e-03, +-1.353188466105640156e-03, +-1.355917668795225250e-03, +-1.358644531600620726e-03, +-1.361369050209803189e-03, +-1.364091220314772937e-03, +-1.366811037611691433e-03, +-1.369528497800816041e-03, +-1.372243596586077185e-03, +-1.374956329675836638e-03, +-1.377666692782449076e-03, +-1.380374681622211115e-03, +-1.383080291915558206e-03, +-1.385783519386938646e-03, +-1.388484359765075745e-03, +-1.391182808782601360e-03, +-1.393878862176246933e-03, +-1.396572515687037131e-03, +-1.399263765059917093e-03, +-1.401952606043963641e-03, +-1.404639034392496291e-03, +-1.407323045863030425e-03, +-1.410004636216859219e-03, +-1.412683801219840121e-03, +-1.415360536641749323e-03, +-1.418034838256525048e-03, +-1.420706701842442765e-03, +-1.423376123181723570e-03, +-1.426043098060995407e-03, +-1.428707622270908827e-03, +-1.431369691606289209e-03, +-1.434029301866361628e-03, +-1.436686448854369641e-03, +-1.439341128377757441e-03, +-1.441993336248389946e-03, +-1.444643068282169861e-03, +-1.447290320299225892e-03, +-1.449935088124115496e-03, +-1.452577367585464055e-03, +-1.455217154516141387e-03, +-1.457854444753462755e-03, +-1.460489234138764945e-03, +-1.463121518517964629e-03, +-1.465751293740825880e-03, +-1.468378555661772021e-03, +-1.471003300139444789e-03, +-1.473625523036673542e-03, +-1.476245220220591707e-03, +-1.478862387562821304e-03, +-1.481477020939126225e-03, +-1.484089116229649888e-03, +-1.486698669318809417e-03, +-1.489305676095538508e-03, +-1.491910132452940480e-03, +-1.494512034288461751e-03, +-1.497111377504088073e-03, +-1.499708158005983718e-03, +-1.502302371704695300e-03, +-1.504894014515251958e-03, +-1.507483082357133916e-03, +-1.510069571153846175e-03, +-1.512653476833713661e-03, +-1.515234795329155901e-03, +-1.517813522577244950e-03, +-1.520389654519286888e-03, +-1.522963187101017196e-03, +-1.525534116272758397e-03, +-1.528102437989104336e-03, +-1.530668148209081945e-03, +-1.533231242896345315e-03, +-1.535791718018821592e-03, +-1.538349569548903535e-03, +-1.540904793463607377e-03, +-1.543457385744269241e-03, +-1.546007342376687181e-03, +-1.548554659351319149e-03, +-1.551099332662891385e-03, +-1.553641358310847926e-03, +-1.556180732298968316e-03, +-1.558717450635532190e-03, +-1.561251509333583818e-03, +-1.563782904410269221e-03, +-1.566311631887614634e-03, +-1.568837687792121660e-03, +-1.571361068154716531e-03, +-1.573881769010877611e-03, +-1.576399786400800845e-03, +-1.578915116369076230e-03, +-1.581427754964908564e-03, +-1.583937698242022683e-03, +-1.586444942258893528e-03, +-1.588949483078404843e-03, +-1.591451316768036301e-03, +-1.593950439399967811e-03, +-1.596446847051050458e-03, +-1.598940535802389085e-03, +-1.601431501740061339e-03, +-1.603919740954693959e-03, +-1.606405249541428088e-03, +-1.608888023600108788e-03, +-1.611368059235147128e-03, +-1.613845352555775409e-03, +-1.616319899675714095e-03, +-1.618791696713328589e-03, +-1.621260739791828293e-03, +-1.623727025038914458e-03, +-1.626190548586973822e-03, +-1.628651306573230401e-03, +-1.631109295139438874e-03, +-1.633564510432038543e-03, +-1.636016948602348701e-03, +-1.638466605806157507e-03, +-1.640913478204197515e-03, +-1.643357561961740401e-03, +-1.645798853248797971e-03, +-1.648237348240267665e-03, +-1.650673043115619002e-03, +-1.653105934059059682e-03, +-1.655536017259718164e-03, +-1.657963288911297592e-03, +-1.660387745212280920e-03, +-1.662809382366064277e-03, +-1.665228196580660321e-03, +-1.667644184068851117e-03, +-1.670057341048370066e-03, +-1.672467663741582710e-03, +-1.674875148375694258e-03, +-1.677279791182655685e-03, +-1.679681588399344365e-03, +-1.682080536267495114e-03, +-1.684476631033335250e-03, +-1.686869868948250289e-03, +-1.689260246268394286e-03, +-1.691647759254651887e-03, +-1.694032404172751520e-03, +-1.696414177293424337e-03, +-1.698793074892102810e-03, +-1.701169093249130194e-03, +-1.703542228649652110e-03, +-1.705912477383855937e-03, +-1.708279835746644680e-03, +-1.710644300037797005e-03, +-1.713005866562096035e-03, +-1.715364531629264304e-03, +-1.717720291553604881e-03, +-1.720073142654657966e-03, +-1.722423081256804940e-03, +-1.724770103689243859e-03, +-1.727114206286157290e-03, +-1.729455385386584158e-03, +-1.731793637334679958e-03, +-1.734128958479366767e-03, +-1.736461345174510843e-03, +-1.738790793779095662e-03, +-1.741117300656898391e-03, +-1.743440862176662927e-03, +-1.745761474712253201e-03, +-1.748079134642353946e-03, +-1.750393838350625944e-03, +-1.752705582225874735e-03, +-1.755014362661739234e-03, +-1.757320176056856309e-03, +-1.759623018815017993e-03, +-1.761922887344816516e-03, +-1.764219778060068444e-03, +-1.766513687379444317e-03, +-1.768804611726647975e-03, +-1.771092547530566611e-03, +-1.773377491224960908e-03, +-1.775659439248644797e-03, +-1.777938388045618816e-03, +-1.780214334064796457e-03, +-1.782487273760134487e-03, +-1.784757203590814660e-03, +-1.787024120020927129e-03, +-1.789288019519695312e-03, +-1.791548898561369637e-03, +-1.793806753625378251e-03, +-1.796061581196300994e-03, +-1.798313377763503590e-03, +-1.800562139821760632e-03, +-1.802807863870947453e-03, +-1.805050546415748686e-03, +-1.807290183966283421e-03, +-1.809526773037719661e-03, +-1.811760310150275187e-03, +-1.813990791829339644e-03, +-1.816218214605394956e-03, +-1.818442575014210484e-03, +-1.820663869596570242e-03, +-1.822882094898402782e-03, +-1.825097247470950333e-03, +-1.827309323870469123e-03, +-1.829518320658390712e-03, +-1.831724234401462285e-03, +-1.833927061671484495e-03, +-1.836126799045424219e-03, +-1.838323443105596266e-03, +-1.840516990439322077e-03, +-1.842707437639313746e-03, +-1.844894781303355697e-03, +-1.847079018034425467e-03, +-1.849260144440893414e-03, +-1.851438157136186613e-03, +-1.853613052738971659e-03, +-1.855784827873295821e-03, +-1.857953479168290411e-03, +-1.860119003258342953e-03, +-1.862281396783229239e-03, +-1.864440656387845313e-03, +-1.866596778722336711e-03, +-1.868749760442261522e-03, +-1.870899598208268597e-03, +-1.873046288686502393e-03, +-1.875189828548067374e-03, +-1.877330214469636249e-03, +-1.879467443133183910e-03, +-1.881601511225674530e-03, +-1.883732415439682379e-03, +-1.885860152473024061e-03, +-1.887984719028750272e-03, +-1.890106111815203702e-03, +-1.892224327546219824e-03, +-1.894339362940798601e-03, +-1.896451214723330865e-03, +-1.898559879623489899e-03, +-1.900665354376437650e-03, +-1.902767635722542620e-03, +-1.904866720407529055e-03, +-1.906962605182556088e-03, +-1.909055286804214489e-03, +-1.911144762034166925e-03, +-1.913231027639783737e-03, +-1.915314080393568097e-03, +-1.917393917073609635e-03, +-1.919470534463225356e-03, +-1.921543929351146335e-03, +-1.923614098531622237e-03, +-1.925681038804174768e-03, +-1.927744746973728430e-03, +-1.929805219850764912e-03, +-1.931862454251038162e-03, +-1.933916446995726391e-03, +-1.935967194911571935e-03, +-1.938014694830614108e-03, +-1.940058943590322778e-03, +-1.942099938033752318e-03, +-1.944137675009261238e-03, +-1.946172151370669824e-03, +-1.948203363977371594e-03, +-1.950231309694064200e-03, +-1.952255985391113504e-03, +-1.954277387944054409e-03, +-1.956295514234155514e-03, +-1.958310361148141773e-03, +-1.960321925578110362e-03, +-1.962330204421655361e-03, +-1.964335194582007837e-03, +-1.966336892967751344e-03, +-1.968335296492979350e-03, +-1.970330402077434453e-03, +-1.972322206646223881e-03, +-1.974310707130030700e-03, +-1.976295900465009723e-03, +-1.978277783592929332e-03, +-1.980256353461141983e-03, +-1.982231607022263281e-03, +-1.984203541234724928e-03, +-1.986172153062453361e-03, +-1.988137439474843299e-03, +-1.990099397446837108e-03, +-1.992058023959072249e-03, +-1.994013315997628880e-03, +-1.995965270554181641e-03, +-1.997913884625947614e-03, +-1.999859155215857626e-03, +-2.001801079332282598e-03, +-2.003739653989185330e-03, +-2.005674876206215481e-03, +-2.007606743008653188e-03, +-2.009535251427125007e-03, +-2.011460398498163358e-03, +-2.013382181263745525e-03, +-2.015300596771452384e-03, +-2.017215642074620188e-03, +-2.019127314232036560e-03, +-2.021035610308291770e-03, +-2.022940527373472998e-03, +-2.024842062503310908e-03, +-2.026740212779312364e-03, +-2.028634975288483300e-03, +-2.030526347123500028e-03, +-2.032414325382815926e-03, +-2.034298907170407726e-03, +-2.036180089595929048e-03, +-2.038057869774821413e-03, +-2.039932244828074857e-03, +-2.041803211882357166e-03, +-2.043670768070141378e-03, +-2.045534910529421720e-03, +-2.047395636404088313e-03, +-2.049252942843441446e-03, +-2.051106827002720234e-03, +-2.052957286042838506e-03, +-2.054804317130317585e-03, +-2.056647917437410319e-03, +-2.058488084142189121e-03, +-2.060324814428352112e-03, +-2.062158105485285570e-03, +-2.063987954508262560e-03, +-2.065814358698143689e-03, +-2.067637315261577902e-03, +-2.069456821410911411e-03, +-2.071272874364326038e-03, +-2.073085471345791075e-03, +-2.074894609584778359e-03, +-2.076700286316769672e-03, +-2.078502498783015625e-03, +-2.080301244230274137e-03, +-2.082096519911381602e-03, +-2.083888323084726827e-03, +-2.085676651014655228e-03, +-2.087461500971159178e-03, +-2.089242870230029366e-03, +-2.091020756072974052e-03, +-2.092795155787373611e-03, +-2.094566066666398926e-03, +-2.096333486009157969e-03, +-2.098097411120440799e-03, +-2.099857839310858339e-03, +-2.101614767896949933e-03, +-2.103368194200959992e-03, +-2.105118115550960733e-03, +-2.106864529280959297e-03, +-2.108607432730647512e-03, +-2.110346823245721083e-03, +-2.112082698177586860e-03, +-2.113815054883499446e-03, +-2.115543890726673086e-03, +-2.117269203076077404e-03, +-2.118990989306519801e-03, +-2.120709246798793343e-03, +-2.122423972939440837e-03, +-2.124135165120867585e-03, +-2.125842820741481905e-03, +-2.127546937205435345e-03, +-2.129247511922772312e-03, +-2.130944542309535887e-03, +-2.132638025787539707e-03, +-2.134327959784524525e-03, +-2.136014341734100101e-03, +-2.137697169075846240e-03, +-2.139376439255281578e-03, +-2.141052149723608571e-03, +-2.142724297938174496e-03, +-2.144392881362194338e-03, +-2.146057897464731263e-03, +-2.147719343720815889e-03, +-2.149377217611356077e-03, +-2.151031516623316472e-03, +-2.152682238249467844e-03, +-2.154329379988532793e-03, +-2.155972939345287675e-03, +-2.157612913830340550e-03, +-2.159249300960240040e-03, +-2.160882098257573339e-03, +-2.162511303250922844e-03, +-2.164136913474603349e-03, +-2.165758926469159035e-03, +-2.167377339780909417e-03, +-2.168992150962301916e-03, +-2.170603357571642116e-03, +-2.172210957173228204e-03, +-2.173814947337431632e-03, +-2.175415325640516276e-03, +-2.177012089664732974e-03, +-2.178605236998424916e-03, +-2.180194765235840722e-03, +-2.181780671977221614e-03, +-2.183362954828921114e-03, +-2.184941611403194706e-03, +-2.186516639318303052e-03, +-2.188088036198650339e-03, +-2.189655799674524502e-03, +-2.191219927382255950e-03, +-2.192780416964308209e-03, +-2.194337266069015975e-03, +-2.195890472350935096e-03, +-2.197440033470412796e-03, +-2.198985947094047808e-03, +-2.200528210894440572e-03, +-2.202066822550176762e-03, +-2.203601779745878453e-03, +-2.205133080172352877e-03, +-2.206660721526330048e-03, +-2.208184701510652707e-03, +-2.209705017834193933e-03, +-2.211221668211988105e-03, +-2.212734650365052666e-03, +-2.214243962020464879e-03, +-2.215749600911452472e-03, +-2.217251564777365878e-03, +-2.218749851363425833e-03, +-2.220244458421149689e-03, +-2.221735383708114617e-03, +-2.223222624987922051e-03, +-2.224706180030309143e-03, +-2.226186046611067660e-03, +-2.227662222512215295e-03, +-2.229134705521761475e-03, +-2.230603493433827925e-03, +-2.232068584048757954e-03, +-2.233529975172912629e-03, +-2.234987664618770953e-03, +-2.236441650204998386e-03, +-2.237891929756426895e-03, +-2.239338501103826842e-03, +-2.240781362084316806e-03, +-2.242220510541028788e-03, +-2.243655944323245683e-03, +-2.245087661286477177e-03, +-2.246515659292258518e-03, +-2.247939936208400748e-03, +-2.249360489908773433e-03, +-2.250777318273390962e-03, +-2.252190419188545255e-03, +-2.253599790546579815e-03, +-2.255005430245999882e-03, +-2.256407336191586926e-03, +-2.257805506294192650e-03, +-2.259199938470846103e-03, +-2.260590630644840858e-03, +-2.261977580745574978e-03, +-2.263360786708605663e-03, +-2.264740246475793230e-03, +-2.266115957995058251e-03, +-2.267487919220653476e-03, +-2.268856128112832927e-03, +-2.270220582638227905e-03, +-2.271581280769633619e-03, +-2.272938220485999205e-03, +-2.274291399772468934e-03, +-2.275640816620506240e-03, +-2.276986469027688590e-03, +-2.278328354997840189e-03, +-2.279666472540973435e-03, +-2.281000819673419892e-03, +-2.282331394417644668e-03, +-2.283658194802333161e-03, +-2.284981218862507275e-03, +-2.286300464639322034e-03, +-2.287615930180172258e-03, +-2.288927613538751116e-03, +-2.290235512775028008e-03, +-2.291539625955046899e-03, +-2.292839951151294953e-03, +-2.294136486442359055e-03, +-2.295429229913220279e-03, +-2.296718179655006260e-03, +-2.298003333765118259e-03, +-2.299284690347296652e-03, +-2.300562247511473910e-03, +-2.301836003373836179e-03, +-2.303105956056940382e-03, +-2.304372103689519488e-03, +-2.305634444406591370e-03, +-2.306892976349528192e-03, +-2.308147697665910696e-03, +-2.309398606509598020e-03, +-2.310645701040822241e-03, +-2.311888979425986285e-03, +-2.313128439837911551e-03, +-2.314364080455614571e-03, +-2.315595899464430174e-03, +-2.316823895056078705e-03, +-2.318048065428407987e-03, +-2.319268408785734627e-03, +-2.320484923338653627e-03, +-2.321697607304012371e-03, +-2.322906458904976101e-03, +-2.324111476371110326e-03, +-2.325312657938209942e-03, +-2.326510001848426743e-03, +-2.327703506350202196e-03, +-2.328893169698382365e-03, +-2.330078990154079571e-03, +-2.331260965984708385e-03, +-2.332439095464094482e-03, +-2.333613376872419130e-03, +-2.334783808496034875e-03, +-2.335950388627798177e-03, +-2.337113115566900271e-03, +-2.338271987618798214e-03, +-2.339427003095341084e-03, +-2.340578160314692787e-03, +-2.341725457601459993e-03, +-2.342868893286515625e-03, +-2.344008465707096440e-03, +-2.345144173206884560e-03, +-2.346276014135827495e-03, +-2.347403986850258705e-03, +-2.348528089712935332e-03, +-2.349648321092935848e-03, +-2.350764679365683913e-03, +-2.351877162913065464e-03, +-2.352985770123243968e-03, +-2.354090499390859483e-03, +-2.355191349116857787e-03, +-2.356288317708562802e-03, +-2.357381403579782413e-03, +-2.358470605150604638e-03, +-2.359555920847525561e-03, +-2.360637349103516126e-03, +-2.361714888357850390e-03, +-2.362788537056213084e-03, +-2.363858293650763359e-03, +-2.364924156599966520e-03, +-2.365986124368715023e-03, +-2.367044195428370974e-03, +-2.368098368256631257e-03, +-2.369148641337631180e-03, +-2.370195013161897207e-03, +-2.371237482226405940e-03, +-2.372276047034572836e-03, +-2.373310706096114740e-03, +-2.374341457927280595e-03, +-2.375368301050744761e-03, +-2.376391233995538491e-03, +-2.377410255297130164e-03, +-2.378425363497476894e-03, +-2.379436557144921742e-03, +-2.380443834794237091e-03, +-2.381447195006622039e-03, +-2.382446636349779597e-03, +-2.383442157397775308e-03, +-2.384433756731132222e-03, +-2.385421432936846078e-03, +-2.386405184608389202e-03, +-2.387385010345526633e-03, +-2.388360908754650052e-03, +-2.389332878448530151e-03, +-2.390300918046386024e-03, +-2.391265026173883864e-03, +-2.392225201463140435e-03, +-2.393181442552800263e-03, +-2.394133748087887321e-03, +-2.395082116719904775e-03, +-2.396026547106864472e-03, +-2.396967037913205843e-03, +-2.397903587809811516e-03, +-2.398836195474117472e-03, +-2.399764859589953881e-03, +-2.400689578847630973e-03, +-2.401610351944000622e-03, +-2.402527177582312792e-03, +-2.403440054472319627e-03, +-2.404348981330291062e-03, +-2.405253956878920709e-03, +-2.406154979847452066e-03, +-2.407052048971560550e-03, +-2.407945162993401205e-03, +-2.408834320661695002e-03, +-2.409719520731569246e-03, +-2.410600761964669467e-03, +-2.411478043129176331e-03, +-2.412351362999711531e-03, +-2.413220720357407614e-03, +-2.414086113989937898e-03, +-2.414947542691424972e-03, +-2.415805005262510515e-03, +-2.416658500510327975e-03, +-2.417508027248555045e-03, +-2.418353584297382869e-03, +-2.419195170483408493e-03, +-2.420032784639849967e-03, +-2.420866425606448338e-03, +-2.421696092229324963e-03, +-2.422521783361238253e-03, +-2.423343497861455732e-03, +-2.424161234595713279e-03, +-2.424974992436280605e-03, +-2.425784770261949115e-03, +-2.426590566958063567e-03, +-2.427392381416463088e-03, +-2.428190212535497224e-03, +-2.428984059220097060e-03, +-2.429773920381679379e-03, +-2.430559794938178322e-03, +-2.431341681814118676e-03, +-2.432119579940505288e-03, +-2.432893488254876408e-03, +-2.433663405701361367e-03, +-2.434429331230552208e-03, +-2.435191263799653307e-03, +-2.435949202372354738e-03, +-2.436703145918886915e-03, +-2.437453093416075672e-03, +-2.438199043847240777e-03, +-2.438940996202245380e-03, +-2.439678949477548046e-03, +-2.440412902676110385e-03, +-2.441142854807437819e-03, +-2.441868804887642030e-03, +-2.442590751939323866e-03, +-2.443308694991657044e-03, +-2.444022633080398989e-03, +-2.444732565247808870e-03, +-2.445438490542782041e-03, +-2.446140408020658786e-03, +-2.446838316743432055e-03, +-2.447532215779655521e-03, +-2.448222104204350776e-03, +-2.448907981099189470e-03, +-2.449589845552417426e-03, +-2.450267696658771800e-03, +-2.450941533519589068e-03, +-2.451611355242810236e-03, +-2.452277160942892362e-03, +-2.452938949740886623e-03, +-2.453596720764390175e-03, +-2.454250473147627683e-03, +-2.454900206031339436e-03, +-2.455545918562853768e-03, +-2.456187609896085325e-03, +-2.456825279191558482e-03, +-2.457458925616266832e-03, +-2.458088548343906939e-03, +-2.458714146554660199e-03, +-2.459335719435359370e-03, +-2.459953266179365841e-03, +-2.460566785986632952e-03, +-2.461176278063732445e-03, +-2.461781741623771200e-03, +-2.462383175886466262e-03, +-2.462980580078129658e-03, +-2.463573953431633708e-03, +-2.464163295186444849e-03, +-2.464748604588650957e-03, +-2.465329880890892392e-03, +-2.465907123352386720e-03, +-2.466480331239005470e-03, +-2.467049503823134926e-03, +-2.467614640383821844e-03, +-2.468175740206668932e-03, +-2.468732802583866945e-03, +-2.469285826814258001e-03, +-2.469834812203175120e-03, +-2.470379758062647355e-03, +-2.470920663711275757e-03, +-2.471457528474239017e-03, +-2.471990351683314279e-03, +-2.472519132676910970e-03, +-2.473043870800010081e-03, +-2.473564565404185421e-03, +-2.474081215847656091e-03, +-2.474593821495207555e-03, +-2.475102381718243243e-03, +-2.475606895894745963e-03, +-2.476107363409340342e-03, +-2.476603783653266375e-03, +-2.477096156024287052e-03, +-2.477584479926867034e-03, +-2.478068754772042546e-03, +-2.478548979977451740e-03, +-2.479025154967328184e-03, +-2.479497279172563750e-03, +-2.479965352030608864e-03, +-2.480429372985553608e-03, +-2.480889341488071772e-03, +-2.481345256995497617e-03, +-2.481797118971725696e-03, +-2.482244926887282408e-03, +-2.482688680219323398e-03, +-2.483128378451620114e-03, +-2.483564021074505593e-03, +-2.483995607584988958e-03, +-2.484423137486670846e-03, +-2.484846610289747747e-03, +-2.485266025511072719e-03, +-2.485681382674085563e-03, +-2.486092681308862268e-03, +-2.486499920952078141e-03, +-2.486903101147029931e-03, +-2.487302221443651439e-03, +-2.487697281398474920e-03, +-2.488088280574650597e-03, +-2.488475218541970953e-03, +-2.488858094876824755e-03, +-2.489236909162224377e-03, +-2.489611660987824018e-03, +-2.489982349949866787e-03, +-2.490348975651235450e-03, +-2.490711537701442019e-03, +-2.491070035716592187e-03, +-2.491424469319460360e-03, +-2.491774838139389041e-03, +-2.492121141812371227e-03, +-2.492463379981038271e-03, +-2.492801552294611304e-03, +-2.493135658408948511e-03, +-2.493465697986554670e-03, +-2.493791670696521735e-03, +-2.494113576214575245e-03, +-2.494431414223081695e-03, +-2.494745184411030318e-03, +-2.495054886474010972e-03, +-2.495360520114256637e-03, +-2.495662085040624336e-03, +-2.495959580968604239e-03, +-2.496253007620282804e-03, +-2.496542364724398284e-03, +-2.496827652016319048e-03, +-2.497108869237999341e-03, +-2.497386016138072960e-03, +-2.497659092471751340e-03, +-2.497928098000918532e-03, +-2.498193032494037957e-03, +-2.498453895726220932e-03, +-2.498710687479210619e-03, +-2.498963407541364683e-03, +-2.499212055707671336e-03, +-2.499456631779747601e-03, +-2.499697135565828905e-03, +-2.499933566880776451e-03, +-2.500165925546090229e-03, +-2.500394211389881261e-03, +-2.500618424246890681e-03, +-2.500838563958490603e-03, +-2.501054630372674583e-03, +-2.501266623344060649e-03, +-2.501474542733892175e-03, +-2.501678388410037875e-03, +-2.501878160247004816e-03, +-2.502073858125894619e-03, +-2.502265481934455495e-03, +-2.502453031567072276e-03, +-2.502636506924721307e-03, +-2.502815907915030297e-03, +-2.502991234452245362e-03, +-2.503162486457226246e-03, +-2.503329663857459340e-03, +-2.503492766587073291e-03, +-2.503651794586790862e-03, +-2.503806747803990086e-03, +-2.503957626192630966e-03, +-2.504104429713332244e-03, +-2.504247158333335402e-03, +-2.504385812026463896e-03, +-2.504520390773211629e-03, +-2.504650894560661849e-03, +-2.504777323382536593e-03, +-2.504899677239170227e-03, +-2.505017956137505115e-03, +-2.505132160091137587e-03, +-2.505242289120261992e-03, +-2.505348343251677639e-03, +-2.505450322518836068e-03, +-2.505548226961780336e-03, +-2.505642056627181008e-03, +-2.505731811568336163e-03, +-2.505817491845160980e-03, +-2.505899097524155652e-03, +-2.505976628678473466e-03, +-2.506050085387872672e-03, +-2.506119467738724717e-03, +-2.506184775824014683e-03, +-2.506246009743343019e-03, +-2.506303169602929447e-03, +-2.506356255515602982e-03, +-2.506405267600809311e-03, +-2.506450205984607320e-03, +-2.506491070799653480e-03, +-2.506527862185236547e-03, +-2.506560580287239826e-03, +-2.506589225258177601e-03, +-2.506613797257145268e-03, +-2.506634296449871367e-03, +-2.506650723008686799e-03, +-2.506663077112513977e-03, +-2.506671358946919309e-03, +-2.506675568704040333e-03, +-2.506675706582632557e-03, +-2.506671772788056449e-03, +-2.506663767532285678e-03, +-2.506651691033898437e-03, +-2.506635543518055328e-03, +-2.506615325216544465e-03, +-2.506591036367739837e-03, +-2.506562677216621262e-03, +-2.506530248014776554e-03, +-2.506493749020382005e-03, +-2.506453180498220169e-03, +-2.506408542719662080e-03, +-2.506359835962700643e-03, +-2.506307060511892525e-03, +-2.506250216658419301e-03, +-2.506189304700034547e-03, +-2.506124324941106339e-03, +-2.506055277692579089e-03, +-2.505982163272001736e-03, +-2.505904982003508662e-03, +-2.505823734217831836e-03, +-2.505738420252285204e-03, +-2.505649040450773791e-03, +-2.505555595163791970e-03, +-2.505458084748429966e-03, +-2.505356509568351306e-03, +-2.505250869993811032e-03, +-2.505141166401650497e-03, +-2.505027399175287824e-03, +-2.504909568704732220e-03, +-2.504787675386573129e-03, +-2.504661719623977201e-03, +-2.504531701826698264e-03, +-2.504397622411053473e-03, +-2.504259481799955400e-03, +-2.504117280422875173e-03, +-2.503971018715878908e-03, +-2.503820697121601248e-03, +-2.503666316089241031e-03, +-2.503507876074586441e-03, +-2.503345377539975547e-03, +-2.503178820954334895e-03, +-2.503008206793154358e-03, +-2.502833535538498411e-03, +-2.502654807678974472e-03, +-2.502472023709787115e-03, +-2.502285184132693827e-03, +-2.502094289456001982e-03, +-2.501899340194620441e-03, +-2.501700336869957641e-03, +-2.501497280010039556e-03, +-2.501290170149436404e-03, +-2.501079007829245734e-03, +-2.500863793597160514e-03, +-2.500644528007420989e-03, +-2.500421211620792571e-03, +-2.500193845004629149e-03, +-2.499962428732823219e-03, +-2.499726963385818460e-03, +-2.499487449550598026e-03, +-2.499243887820703190e-03, +-2.498996278796227280e-03, +-2.498744623083798324e-03, +-2.498488921296579488e-03, +-2.498229174054308974e-03, +-2.497965381983235401e-03, +-2.497697545716155102e-03, +-2.497425665892407352e-03, +-2.497149743157869167e-03, +-2.496869778164953133e-03, +-2.496585771572596996e-03, +-2.496297724046280583e-03, +-2.496005636258028827e-03, +-2.495709508886359736e-03, +-2.495409342616347701e-03, +-2.495105138139599218e-03, +-2.494796896154227728e-03, +-2.494484617364875305e-03, +-2.494168302482729135e-03, +-2.493847952225461666e-03, +-2.493523567317287859e-03, +-2.493195148488942629e-03, +-2.492862696477664806e-03, +-2.492526212027225754e-03, +-2.492185695887883835e-03, +-2.491841148816441222e-03, +-2.491492571576203567e-03, +-2.491139964936952677e-03, +-2.490783329675022844e-03, +-2.490422666573237527e-03, +-2.490057976420907617e-03, +-2.489689260013872637e-03, +-2.489316518154467781e-03, +-2.488939751651503534e-03, +-2.488558961320319445e-03, +-2.488174147982739025e-03, +-2.487785312467090133e-03, +-2.487392455608159435e-03, +-2.486995578247262230e-03, +-2.486594681232206887e-03, +-2.486189765417247573e-03, +-2.485780831663149740e-03, +-2.485367880837192293e-03, +-2.484950913813085190e-03, +-2.484529931471037099e-03, +-2.484104934697748887e-03, +-2.483675924386401484e-03, +-2.483242901436631591e-03, +-2.482805866754554235e-03, +-2.482364821252762335e-03, +-2.481919765850337540e-03, +-2.481470701472784750e-03, +-2.481017629052108438e-03, +-2.480560549526787499e-03, +-2.480099463841718005e-03, +-2.479634372948306444e-03, +-2.479165277804394260e-03, +-2.478692179374276071e-03, +-2.478215078628722215e-03, +-2.477733976544928014e-03, +-2.477248874106562776e-03, +-2.476759772303742477e-03, +-2.476266672133019785e-03, +-2.475769574597405740e-03, +-2.475268480706354583e-03, +-2.474763391475747268e-03, +-2.474254307927916188e-03, +-2.473741231091638234e-03, +-2.473224162002106603e-03, +-2.472703101700968534e-03, +-2.472178051236300581e-03, +-2.471649011662583467e-03, +-2.471115984040757156e-03, +-2.470578969438177921e-03, +-2.470037968928625715e-03, +-2.469492983592297235e-03, +-2.468944014515785969e-03, +-2.468391062792176308e-03, +-2.467834129520892188e-03, +-2.467273215807784265e-03, +-2.466708322765147256e-03, +-2.466139451511670938e-03, +-2.465566603172431471e-03, +-2.464989778878926095e-03, +-2.464408979769060985e-03, +-2.463824206987143012e-03, +-2.463235461683853291e-03, +-2.462642745016291844e-03, +-2.462046058147956788e-03, +-2.461445402248711809e-03, +-2.460840778494803940e-03, +-2.460232188068937290e-03, +-2.459619632160126891e-03, +-2.459003111963781966e-03, +-2.458382628681722408e-03, +-2.457758183522119368e-03, +-2.457129777699552063e-03, +-2.456497412434914974e-03, +-2.455861088955536235e-03, +-2.455220808495083961e-03, +-2.454576572293578392e-03, +-2.453928381597429188e-03, +-2.453276237659409841e-03, +-2.452620141738619513e-03, +-2.451960095100551990e-03, +-2.451296099017055349e-03, +-2.450628154766285993e-03, +-2.449956263632790173e-03, +-2.449280426907473208e-03, +-2.448600645887533556e-03, +-2.447916921876564737e-03, +-2.447229256184459481e-03, +-2.446537650127481728e-03, +-2.445842105028218048e-03, +-2.445142622215569841e-03, +-2.444439203024801471e-03, +-2.443731848797500803e-03, +-2.443020560881533233e-03, +-2.442305340631146637e-03, +-2.441586189406896781e-03, +-2.440863108575618695e-03, +-2.440136099510506040e-03, +-2.439405163591048219e-03, +-2.438670302203058138e-03, +-2.437931516738634473e-03, +-2.437188808596164706e-03, +-2.436442179180416633e-03, +-2.435691629902381368e-03, +-2.434937162179357482e-03, +-2.434178777434967481e-03, +-2.433416477099123974e-03, +-2.432650262607990652e-03, +-2.431880135404059472e-03, +-2.431106096936081710e-03, +-2.430328148659123468e-03, +-2.429546292034470267e-03, +-2.428760528529738064e-03, +-2.427970859618807774e-03, +-2.427177286781790136e-03, +-2.426379811505111582e-03, +-2.425578435281456127e-03, +-2.424773159609727637e-03, +-2.423963985995140034e-03, +-2.423150915949166557e-03, +-2.422333950989471671e-03, +-2.421513092640054186e-03, +-2.420688342431081587e-03, +-2.419859701899022310e-03, +-2.419027172586587192e-03, +-2.418190756042687406e-03, +-2.417350453822498645e-03, +-2.416506267487451582e-03, +-2.415658198605154239e-03, +-2.414806248749476990e-03, +-2.413950419500544321e-03, +-2.413090712444632482e-03, +-2.412227129174291350e-03, +-2.411359671288297157e-03, +-2.410488340391573128e-03, +-2.409613138095348644e-03, +-2.408734066016936758e-03, +-2.407851125780019995e-03, +-2.406964319014346775e-03, +-2.406073647355880165e-03, +-2.405179112446877241e-03, +-2.404280715935696970e-03, +-2.403378459476886945e-03, +-2.402472344731235426e-03, +-2.401562373365702385e-03, +-2.400648547053383947e-03, +-2.399730867473606061e-03, +-2.398809336311848606e-03, +-2.397883955259788331e-03, +-2.396954726015207340e-03, +-2.396021650282123203e-03, +-2.395084729770713926e-03, +-2.394143966197260272e-03, +-2.393199361284203009e-03, +-2.392250916760243519e-03, +-2.391298634360099640e-03, +-2.390342515824743757e-03, +-2.389382562901195498e-03, +-2.388418777342686105e-03, +-2.387451160908582101e-03, +-2.386479715364333253e-03, +-2.385504442481565374e-03, +-2.384525344038053007e-03, +-2.383542421817617073e-03, +-2.382555677610275358e-03, +-2.381565113212157515e-03, +-2.380570730425445643e-03, +-2.379572531058502666e-03, +-2.378570516925799464e-03, +-2.377564689847848529e-03, +-2.376555051651345774e-03, +-2.375541604169009637e-03, +-2.374524349239717693e-03, +-2.373503288708429890e-03, +-2.372478424426124801e-03, +-2.371449758250009088e-03, +-2.370417292043239515e-03, +-2.369381027675088180e-03, +-2.368340967020936445e-03, +-2.367297111962236335e-03, +-2.366249464386455895e-03, +-2.365198026187178941e-03, +-2.364142799264072527e-03, +-2.363083785522771593e-03, +-2.362020986875052429e-03, +-2.360954405238721663e-03, +-2.359884042537646175e-03, +-2.358809900701706701e-03, +-2.357731981666792188e-03, +-2.356650287374978479e-03, +-2.355564819774221691e-03, +-2.354475580818549477e-03, +-2.353382572468067958e-03, +-2.352285796688887137e-03, +-2.351185255453085762e-03, +-2.350080950738828861e-03, +-2.348972884530264957e-03, +-2.347861058817586350e-03, +-2.346745475596910286e-03, +-2.345626136870445928e-03, +-2.344503044646386366e-03, +-2.343376200938878263e-03, +-2.342245607768042234e-03, +-2.341111267160135481e-03, +-2.339973181147221321e-03, +-2.338831351767444149e-03, +-2.337685781064941393e-03, +-2.336536471089730761e-03, +-2.335383423897918406e-03, +-2.334226641551472112e-03, +-2.333066126118390430e-03, +-2.331901879672654103e-03, +-2.330733904294099868e-03, +-2.329562202068605637e-03, +-2.328386775088008530e-03, +-2.327207625449995588e-03, +-2.326024755258281149e-03, +-2.324838166622533557e-03, +-2.323647861658247223e-03, +-2.322453842486947757e-03, +-2.321256111236086588e-03, +-2.320054670038947282e-03, +-2.318849521034860653e-03, +-2.317640666368912025e-03, +-2.316428108192307694e-03, +-2.315211848661996759e-03, +-2.313991889940852399e-03, +-2.312768234197707436e-03, +-2.311540883607292318e-03, +-2.310309840350155755e-03, +-2.309075106612798727e-03, +-2.307836684587620708e-03, +-2.306594576472831195e-03, +-2.305348784472570269e-03, +-2.304099310796851787e-03, +-2.302846157661565547e-03, +-2.301589327288439558e-03, +-2.300328821905013588e-03, +-2.299064643744843858e-03, +-2.297796795047207710e-03, +-2.296525278057203346e-03, +-2.295250095025953667e-03, +-2.293971248210227663e-03, +-2.292688739872773048e-03, +-2.291402572282059090e-03, +-2.290112747712469161e-03, +-2.288819268444213569e-03, +-2.287522136763242824e-03, +-2.286221354961406362e-03, +-2.284916925336371446e-03, +-2.283608850191525593e-03, +-2.282297131836161751e-03, +-2.280981772585355134e-03, +-2.279662774759908146e-03, +-2.278340140686501303e-03, +-2.277013872697603893e-03, +-2.275683973131376828e-03, +-2.274350444331891662e-03, +-2.273013288648872976e-03, +-2.271672508437910885e-03, +-2.270328106060368230e-03, +-2.268980083883273893e-03, +-2.267628444279514918e-03, +-2.266273189627740665e-03, +-2.264914322312247888e-03, +-2.263551844723188898e-03, +-2.262185759256456208e-03, +-2.260816068313578880e-03, +-2.259442774301937632e-03, +-2.258065879634619990e-03, +-2.256685386730374315e-03, +-2.255301298013770266e-03, +-2.253913615914970251e-03, +-2.252522342870037775e-03, +-2.251127481320589624e-03, +-2.249729033713932045e-03, +-2.248327002503267176e-03, +-2.246921390147307504e-03, +-2.245512199110487068e-03, +-2.244099431862999188e-03, +-2.242683090880685879e-03, +-2.241263178645098563e-03, +-2.239839697643380111e-03, +-2.238412650368436577e-03, +-2.236982039318834853e-03, +-2.235547866998728074e-03, +-2.234110135917999600e-03, +-2.232668848592205772e-03, +-2.231224007542485701e-03, +-2.229775615295594236e-03, +-2.228323674384117496e-03, +-2.226868187346048300e-03, +-2.225409156725188624e-03, +-2.223946585070824336e-03, +-2.222480474937968929e-03, +-2.221010828887269844e-03, +-2.219537649484863186e-03, +-2.218060939302613985e-03, +-2.216580700917993897e-03, +-2.215096936913963244e-03, +-2.213609649879198695e-03, +-2.212118842407953187e-03, +-2.210624517099975695e-03, +-2.209126676560700751e-03, +-2.207625323401141756e-03, +-2.206120460237777359e-03, +-2.204612089692773932e-03, +-2.203100214393846363e-03, +-2.201584836974183022e-03, +-2.200065960072652635e-03, +-2.198543586333524553e-03, +-2.197017718406835216e-03, +-2.195488358947959243e-03, +-2.193955510617865735e-03, +-2.192419176083098328e-03, +-2.190879358015750469e-03, +-2.189336059093324478e-03, +-2.187789281998961822e-03, +-2.186239029421257508e-03, +-2.184685304054374139e-03, +-2.183128108597878845e-03, +-2.181567445756924135e-03, +-2.180003318242178939e-03, +-2.178435728769718450e-03, +-2.176864680061086580e-03, +-2.175290174843505855e-03, +-2.173712215849475833e-03, +-2.172130805816992541e-03, +-2.170545947489611795e-03, +-2.168957643616289607e-03, +-2.167365896951496673e-03, +-2.165770710255047939e-03, +-2.164172086292313370e-03, +-2.162570027834104323e-03, +-2.160964537656569900e-03, +-2.159355618541398611e-03, +-2.157743273275707346e-03, +-2.156127504651969822e-03, +-2.154508315468046074e-03, +-2.152885708527424880e-03, +-2.151259686638759289e-03, +-2.149630252616233951e-03, +-2.147997409279463199e-03, +-2.146361159453333625e-03, +-2.144721505968267324e-03, +-2.143078451659930894e-03, +-2.141431999369479162e-03, +-2.139782151943454142e-03, +-2.138128912233643215e-03, +-2.136472283097333707e-03, +-2.134812267397148081e-03, +-2.133148868000980195e-03, +-2.131482087782173972e-03, +-2.129811929619416285e-03, +-2.128138396396640677e-03, +-2.126461491003220350e-03, +-2.124781216333861480e-03, +-2.123097575288487859e-03, +-2.121410570772490692e-03, +-2.119720205696403771e-03, +-2.118026482976319378e-03, +-2.116329405533418605e-03, +-2.114628976294236767e-03, +-2.112925198190660370e-03, +-2.111218074159881136e-03, +-2.109507607144263299e-03, +-2.107793800091566951e-03, +-2.106076655954784542e-03, +-2.104356177692231090e-03, +-2.102632368267368101e-03, +-2.100905230649038630e-03, +-2.099174767811330233e-03, +-2.097440982733513384e-03, +-2.095703878400081380e-03, +-2.093963457800978017e-03, +-2.092219723931162609e-03, +-2.090472679790828132e-03, +-2.088722328385615463e-03, +-2.086968672726130253e-03, +-2.085211715828377919e-03, +-2.083451460713420158e-03, +-2.081687910407652511e-03, +-2.079921067942654741e-03, +-2.078150936355093251e-03, +-2.076377518686942699e-03, +-2.074600817985361532e-03, +-2.072820837302577057e-03, +-2.071037579696086671e-03, +-2.069251048228585872e-03, +-2.067461245967798684e-03, +-2.065668175986729634e-03, +-2.063871841363534940e-03, +-2.062072245181408026e-03, +-2.060269390528838424e-03, +-2.058463280499294758e-03, +-2.056653918191501864e-03, +-2.054841306709302012e-03, +-2.053025449161544318e-03, +-2.051206348662327171e-03, +-2.049384008330841240e-03, +-2.047558431291271030e-03, +-2.045729620673022130e-03, +-2.043897579610600649e-03, +-2.042062311243467067e-03, +-2.040223818716305117e-03, +-2.038382105178822724e-03, +-2.036537173785853486e-03, +-2.034689027697171061e-03, +-2.032837670077735064e-03, +-2.030983104097559659e-03, +-2.029125332931639401e-03, +-2.027264359759973957e-03, +-2.025400187767829180e-03, +-2.023532820145292586e-03, +-2.021662260087500173e-03, +-2.019788510794702334e-03, +-2.017911575472134626e-03, +-2.016031457330071108e-03, +-2.014148159583695110e-03, +-2.012261685453290913e-03, +-2.010372038164158319e-03, +-2.008479220946463029e-03, +-2.006583237035470830e-03, +-2.004684089671443081e-03, +-2.002781782099489257e-03, +-2.000876317569805479e-03, +-1.998967699337553510e-03, +-1.997055930662745404e-03, +-1.995141014810491564e-03, +-1.993222955050696736e-03, +-1.991301754658327591e-03, +-1.989377416913299095e-03, +-1.987449945100311886e-03, +-1.985519342509137631e-03, +-1.983585612434460299e-03, +-1.981648758175748228e-03, +-1.979708783037514332e-03, +-1.977765690329157805e-03, +-1.975819483364870451e-03, +-1.973870165463855689e-03, +-1.971917739950194547e-03, +-1.969962210152725966e-03, +-1.968003579405299634e-03, +-1.966041851046582134e-03, +-1.964077028420154955e-03, +-1.962109114874357498e-03, +-1.960138113762355597e-03, +-1.958164028442412139e-03, +-1.956186862277374018e-03, +-1.954206618634963134e-03, +-1.952223300887818242e-03, +-1.950236912413414944e-03, +-1.948247456593892209e-03, +-1.946254936816348364e-03, +-1.944259356472650708e-03, +-1.942260718959491891e-03, +-1.940259027678243112e-03, +-1.938254286035192642e-03, +-1.936246497441409652e-03, +-1.934235665312660293e-03, +-1.932221793069426562e-03, +-1.930204884137234596e-03, +-1.928184941946098916e-03, +-1.926161969930829032e-03, +-1.924135971531080840e-03, +-1.922106950191204613e-03, +-1.920074909360331089e-03, +-1.918039852492193012e-03, +-1.916001783045372543e-03, +-1.913960704483182434e-03, +-1.911916620273516627e-03, +-1.909869533889089642e-03, +-1.907819448807343554e-03, +-1.905766368510276041e-03, +-1.903710296484699502e-03, +-1.901651236222110962e-03, +-1.899589191218570630e-03, +-1.897524164974920052e-03, +-1.895456160996680404e-03, +-1.893385182793900709e-03, +-1.891311233881464229e-03, +-1.889234317778712034e-03, +-1.887154438009778666e-03, +-1.885071598103419104e-03, +-1.882985801592894489e-03, +-1.880897052016234066e-03, +-1.878805352916059759e-03, +-1.876710707839494233e-03, +-1.874613120338403972e-03, +-1.872512593969237731e-03, +-1.870409132292905757e-03, +-1.868302738875065802e-03, +-1.866193417285893054e-03, +-1.864081171100187909e-03, +-1.861966003897232418e-03, +-1.859847919260823688e-03, +-1.857726920779604121e-03, +-1.855603012046478338e-03, +-1.853476196658953180e-03, +-1.851346478219157224e-03, +-1.849213860333773565e-03, +-1.847078346613854416e-03, +-1.844939940675125551e-03, +-1.842798646137774020e-03, +-1.840654466626546809e-03, +-1.838507405770561324e-03, +-1.836357467203557142e-03, +-1.834204654563789541e-03, +-1.832048971493828275e-03, +-1.829890421640885867e-03, +-1.827729008656640668e-03, +-1.825564736197102418e-03, +-1.823397607922869635e-03, +-1.821227627499008399e-03, +-1.819054798594887338e-03, +-1.816879124884505274e-03, +-1.814700610046102430e-03, +-1.812519257762508235e-03, +-1.810335071720956587e-03, +-1.808148055612965712e-03, +-1.805958213134606187e-03, +-1.803765547986358690e-03, +-1.801570063872947464e-03, +-1.799371764503644765e-03, +-1.797170653592103243e-03, +-1.794966734856210874e-03, +-1.792760012018379144e-03, +-1.790550488805374343e-03, +-1.788338168948197656e-03, +-1.786123056182382885e-03, +-1.783905154247581630e-03, +-1.781684466888117536e-03, +-1.779460997852366994e-03, +-1.777234750893028244e-03, +-1.775005729767419526e-03, +-1.772773938236891231e-03, +-1.770539380067130339e-03, +-1.768302059028260820e-03, +-1.766061978894668209e-03, +-1.763819143444908316e-03, +-1.761573556461953991e-03, +-1.759325221733021652e-03, +-1.757074143049643057e-03, +-1.754820324207460825e-03, +-1.752563769006540905e-03, +-1.750304481251185873e-03, +-1.748042464749862942e-03, +-1.745777723315217406e-03, +-1.743510260764431080e-03, +-1.741240080918569173e-03, +-1.738967187603164674e-03, +-1.736691584647762771e-03, +-1.734413275886278203e-03, +-1.732132265156802490e-03, +-1.729848556301507440e-03, +-1.727562153166878030e-03, +-1.725273059603594020e-03, +-1.722981279466349533e-03, +-1.720686816614180924e-03, +-1.718389674910263598e-03, +-1.716089858221795566e-03, +-1.713787370420263943e-03, +-1.711482215381308555e-03, +-1.709174396984556926e-03, +-1.706863919113959073e-03, +-1.704550785657396985e-03, +-1.702235000507015513e-03, +-1.699916567559073407e-03, +-1.697595490713733196e-03, +-1.695271773875610226e-03, +-1.692945420953103708e-03, +-1.690616435858748653e-03, +-1.688284822509261620e-03, +-1.685950584825440758e-03, +-1.683613726731979753e-03, +-1.681274252157789837e-03, +-1.678932165035839112e-03, +-1.676587469302992734e-03, +-1.674240168900287219e-03, +-1.671890267772765211e-03, +-1.669537769869529689e-03, +-1.667182679143607796e-03, +-1.664824999551977724e-03, +-1.662464735055954688e-03, +-1.660101889620520894e-03, +-1.657736467214708260e-03, +-1.655368471811642216e-03, +-1.652997907388434155e-03, +-1.650624777925992345e-03, +-1.648249087409373427e-03, +-1.645870839827508333e-03, +-1.643490039173368597e-03, +-1.641106689443688586e-03, +-1.638720794639308758e-03, +-1.636332358765002189e-03, +-1.633941385829363983e-03, +-1.631547879844850307e-03, +-1.629151844828146583e-03, +-1.626753284799485524e-03, +-1.624352203783244316e-03, +-1.621948605807496625e-03, +-1.619542494904353683e-03, +-1.617133875109805349e-03, +-1.614722750463559210e-03, +-1.612309125009336137e-03, +-1.609893002794727818e-03, +-1.607474387871006376e-03, +-1.605053284293462418e-03, +-1.602629696121218774e-03, +-1.600203627417058974e-03, +-1.597775082247764001e-03, +-1.595344064683930797e-03, +-1.592910578799800088e-03, +-1.590474628673584686e-03, +-1.588036218387296012e-03, +-1.585595352026560219e-03, +-1.583152033681018474e-03, +-1.580706267443813921e-03, +-1.578258057412238510e-03, +-1.575807407687016123e-03, +-1.573354322372688121e-03, +-1.570898805577651287e-03, +-1.568440861414047887e-03, +-1.565980493997588298e-03, +-1.563517707447874315e-03, +-1.561052505888232403e-03, +-1.558584893445544772e-03, +-1.556114874250555348e-03, +-1.553642452437660080e-03, +-1.551167632145007344e-03, +-1.548690417514320128e-03, +-1.546210812690941789e-03, +-1.543728821824225496e-03, +-1.541244449066858343e-03, +-1.538757698575189854e-03, +-1.536268574509550748e-03, +-1.533777081033530420e-03, +-1.531283222314632451e-03, +-1.528787002523778697e-03, +-1.526288425835667720e-03, +-1.523787496428629078e-03, +-1.521284218484436840e-03, +-1.518778596188627037e-03, +-1.516270633730333519e-03, +-1.513760335302122935e-03, +-1.511247705100300697e-03, +-1.508732747324753338e-03, +-1.506215466178772869e-03, +-1.503695865869375753e-03, +-1.501173950607131383e-03, +-1.498649724605994465e-03, +-1.496123192083686658e-03, +-1.493594357261226460e-03, +-1.491063224363346198e-03, +-1.488529797618279738e-03, +-1.485994081257618936e-03, +-1.483456079516624806e-03, +-1.480915796634054912e-03, +-1.478373236851994888e-03, +-1.475828404416174586e-03, +-1.473281303575810653e-03, +-1.470731938583424384e-03, +-1.468180313695148986e-03, +-1.465626433170600556e-03, +-1.463070301272655603e-03, +-1.460511922267867602e-03, +-1.457951300425942235e-03, +-1.455388440020400059e-03, +-1.452823345327853991e-03, +-1.450256020628324597e-03, +-1.447686470205579662e-03, +-1.445114698346447891e-03, +-1.442540709341204232e-03, +-1.439964507483623224e-03, +-1.437386097070799014e-03, +-1.434805482403255731e-03, +-1.432222667784717202e-03, +-1.429637657522417251e-03, +-1.427050455926948992e-03, +-1.424461067312081169e-03, +-1.421869495995080161e-03, +-1.419275746296541933e-03, +-1.416679822540274072e-03, +-1.414081729053334822e-03, +-1.411481470166432066e-03, +-1.408879050213172847e-03, +-1.406274473530742287e-03, +-1.403667744459384482e-03, +-1.401058867342781745e-03, +-1.398447846527903259e-03, +-1.395834686364792786e-03, +-1.393219391206930360e-03, +-1.390601965411044716e-03, +-1.387982413336928114e-03, +-1.385360739347786096e-03, +-1.382736947810041901e-03, +-1.380111043093174483e-03, +-1.377483029570042254e-03, +-1.374852911616707444e-03, +-1.372220693612263061e-03, +-1.369586379939217134e-03, +-1.366949974983029323e-03, +-1.364311483132517279e-03, +-1.361670908779654982e-03, +-1.359028256319352434e-03, +-1.356383530150081455e-03, +-1.353736734673106987e-03, +-1.351087874292889769e-03, +-1.348436953417145963e-03, +-1.345783976456712498e-03, +-1.343128947825367962e-03, +-1.340471871940176942e-03, +-1.337812753221246731e-03, +-1.335151596091837048e-03, +-1.332488404978129318e-03, +-1.329823184309547384e-03, +-1.327155938518596607e-03, +-1.324486672040731160e-03, +-1.321815389314400652e-03, +-1.319142094781457566e-03, +-1.316466792886457522e-03, +-1.313789488077033970e-03, +-1.311110184803977990e-03, +-1.308428887521039235e-03, +-1.305745600685046925e-03, +-1.303060328755648338e-03, +-1.300373076195675270e-03, +-1.297683847470953002e-03, +-1.294992647050107522e-03, +-1.292299479404927006e-03, +-1.289604349010161017e-03, +-1.286907260343409052e-03, +-1.284208217885165646e-03, +-1.281507226119230200e-03, +-1.278804289531914207e-03, +-1.276099412612717371e-03, +-1.273392599854055026e-03, +-1.270683855751082508e-03, +-1.267973184802101937e-03, +-1.265260591508084523e-03, +-1.262546080373071504e-03, +-1.259829655903993732e-03, +-1.257111322610487579e-03, +-1.254391085005228650e-03, +-1.251668947603775447e-03, +-1.248944914924348618e-03, +-1.246218991488214122e-03, +-1.243491181819465514e-03, +-1.240761490444866524e-03, +-1.238029921894174146e-03, +-1.235296480699980565e-03, +-1.232561171397499999e-03, +-1.229823998524996525e-03, +-1.227084966623236129e-03, +-1.224344080236183189e-03, +-1.221601343910241107e-03, +-1.218856762194631994e-03, +-1.216110339641481236e-03, +-1.213362080805663540e-03, +-1.210611990244630544e-03, +-1.207860072518758413e-03, +-1.205106332191103460e-03, +-1.202350773827508832e-03, +-1.199593401996358827e-03, +-1.196834221268941456e-03, +-1.194073236219240055e-03, +-1.191310451423825733e-03, +-1.188545871461901826e-03, +-1.185779500915713292e-03, +-1.183011344369823111e-03, +-1.180241406411461401e-03, +-1.177469691630889494e-03, +-1.174696204620592635e-03, +-1.171920949976006402e-03, +-1.169143932294968964e-03, +-1.166365156178125273e-03, +-1.163584626228746002e-03, +-1.160802347052537157e-03, +-1.158018323257994399e-03, +-1.155232559456219376e-03, +-1.152445060260715460e-03, +-1.149655830287764184e-03, +-1.146864874156219676e-03, +-1.144072196487324776e-03, +-1.141277801905067743e-03, +-1.138481695035996203e-03, +-1.135683880509016355e-03, +-1.132884362955819931e-03, +-1.130083147010392617e-03, +-1.127280237309419980e-03, +-1.124475638492109008e-03, +-1.121669355199994686e-03, +-1.118861392077290847e-03, +-1.116051753770710194e-03, +-1.113240444929268057e-03, +-1.110427470204638015e-03, +-1.107612834250971262e-03, +-1.104796541724692134e-03, +-1.101978597284869986e-03, +-1.099159005592952260e-03, +-1.096337771312903700e-03, +-1.093514899110979970e-03, +-1.090690393655812003e-03, +-1.087864259618812144e-03, +-1.085036501673438195e-03, +-1.082207124495539706e-03, +-1.079376132763743088e-03, +-1.076543531158680959e-03, +-1.073709324363424956e-03, +-1.070873517063553612e-03, +-1.068036113946930956e-03, +-1.065197119703849629e-03, +-1.062356539026759620e-03, +-1.059514376610633636e-03, +-1.056670637152785398e-03, +-1.053825325352656262e-03, +-1.050978445912200982e-03, +-1.048130003535670870e-03, +-1.045280002929443791e-03, +-1.042428448802368290e-03, +-1.039575345865585785e-03, +-1.036720698832322395e-03, +-1.033864512418332382e-03, +-1.031006791341365809e-03, +-1.028147540321634528e-03, +-1.025286764081583847e-03, +-1.022424467345716022e-03, +-1.019560654840949562e-03, +-1.016695331296424507e-03, +-1.013828501443315945e-03, +-1.010960170015185507e-03, +-1.008090341747801396e-03, +-1.005219021378929998e-03, +-1.002346213648716436e-03, +-9.994719232994781453e-04, +-9.965961550755140456e-04, +-9.937189137234710059e-04, +-9.908402039920890560e-04, +-9.879600306323132759e-04, +-9.850783983971016754e-04, +-9.821953120414750674e-04, +-9.793107763229631085e-04, +-9.764247960008225896e-04, +-9.735373758364795731e-04, +-9.706485205935878316e-04, +-9.677582350378954911e-04, +-9.648665239370319852e-04, +-9.619733920608998859e-04, +-9.590788441814050453e-04, +-9.561828850725739067e-04, +-9.532855195102853813e-04, +-9.503867522726691837e-04, +-9.474865881398771743e-04, +-9.445850318939651808e-04, +-9.416820883189448233e-04, +-9.387777622012228327e-04, +-9.358720583288244370e-04, +-9.329649814918368001e-04, +-9.300565364824644240e-04, +-9.271467280948223920e-04, +-9.242355611250684241e-04, +-9.213230403711261890e-04, +-9.184091706330746408e-04, +-9.154939567129389850e-04, +-9.125774034144871734e-04, +-9.096595155436205428e-04, +-9.067402979081609854e-04, +-9.038197553176542751e-04, +-9.008978925837484537e-04, +-8.979747145199971567e-04, +-8.950502259416485192e-04, +-8.921244316660296341e-04, +-8.891973365123482511e-04, +-8.862689453014847190e-04, +-8.833392628564390014e-04, +-8.804082940018079836e-04, +-8.774760435642318382e-04, +-8.745425163721809794e-04, +-8.716077172557648101e-04, +-8.686716510471094574e-04, +-8.657343225801563281e-04, +-8.627957366904525326e-04, +-8.598558982155410889e-04, +-8.569148119947592613e-04, +-8.539724828690248640e-04, +-8.510289156812293927e-04, +-8.480841152759639387e-04, +-8.451380864996392095e-04, +-8.421908342002928666e-04, +-8.392423632276326765e-04, +-8.362926784334982723e-04, +-8.333417846710626390e-04, +-8.303896867952771784e-04, +-8.274363896629384962e-04, +-8.244818981325475636e-04, +-8.215262170640986236e-04, +-8.185693513194740572e-04, +-8.156113057621646595e-04, +-8.126520852573977920e-04, +-8.096916946718708862e-04, +-8.067301388741273359e-04, +-8.037674227343586308e-04, +-8.008035511242015021e-04, +-7.978385289171139238e-04, +-7.948723609881807152e-04, +-7.919050522139032058e-04, +-7.889366074725855365e-04, +-7.859670316441312631e-04, +-7.829963296098342140e-04, +-7.800245062528404685e-04, +-7.770515664576002927e-04, +-7.740775151103291424e-04, +-7.711023570988061095e-04, +-7.681260973121579495e-04, +-7.651487406412508033e-04, +-7.621702919784882103e-04, +-7.591907562176030506e-04, +-7.562101382540411349e-04, +-7.532284429847610615e-04, +-7.502456753080201943e-04, +-7.472618401237763599e-04, +-7.442769423334675378e-04, +-7.412909868398152944e-04, +-7.383039785472703901e-04, +-7.353159223614229734e-04, +-7.323268231897751834e-04, +-7.293366859408743300e-04, +-7.263455155247795347e-04, +-7.233533168531090015e-04, +-7.203600948388998301e-04, +-7.173658543964085222e-04, +-7.143706004414921871e-04, +-7.113743378914104583e-04, +-7.083770716646078935e-04, +-7.053788066811130701e-04, +-7.023795478622604869e-04, +-6.993793001308183915e-04, +-6.963780684107076470e-04, +-6.933758576274055970e-04, +-6.903726727077233710e-04, +-6.873685185796772970e-04, +-6.843634001725374750e-04, +-6.813573224172949586e-04, +-6.783502902457805165e-04, +-6.753423085914588096e-04, +-6.723333823888228648e-04, +-6.693235165738503070e-04, +-6.663127160837897713e-04, +-6.633009858569648793e-04, +-6.602883308331562034e-04, +-6.572747559533978707e-04, +-6.542602661597663599e-04, +-6.512448663957786212e-04, +-6.482285616061721992e-04, +-6.452113567367117036e-04, +-6.421932567345695802e-04, +-6.391742665481218479e-04, +-6.361543911267427505e-04, +-6.331336354212574111e-04, +-6.301120043834063447e-04, +-6.270895029662994138e-04, +-6.240661361242101548e-04, +-6.210419088122995238e-04, +-6.180168259873480580e-04, +-6.149908926068657460e-04, +-6.119641136295646310e-04, +-6.089364940154130216e-04, +-6.059080387254950871e-04, +-6.028787527217959689e-04, +-5.998486409676047782e-04, +-5.968177084272982980e-04, +-5.937859600661345508e-04, +-5.907534008506453880e-04, +-5.877200357483642473e-04, +-5.846858697279461734e-04, +-5.816509077589655059e-04, +-5.786151548119649940e-04, +-5.755786158589288335e-04, +-5.725412958724594324e-04, +-5.695031998262467619e-04, +-5.664643326951213738e-04, +-5.634246994549163817e-04, +-5.603843050822525720e-04, +-5.573431545549412938e-04, +-5.543012528517009393e-04, +-5.512586049522835794e-04, +-5.482152158372033705e-04, +-5.451710904881233982e-04, +-5.421262338876534732e-04, +-5.390806510192049572e-04, +-5.360343468670473576e-04, +-5.329873264167744266e-04, +-5.299395946544204275e-04, +-5.268911565672568069e-04, +-5.238420171431824391e-04, +-5.207921813711846289e-04, +-5.177416542411315955e-04, +-5.146904407435531383e-04, +-5.116385458700508987e-04, +-5.085859746130760991e-04, +-5.055327319657254960e-04, +-5.024788229221350535e-04, +-4.994242524772704757e-04, +-4.963690256267171965e-04, +-4.933131473670762223e-04, +-4.902566226957524951e-04, +-4.871994566107460214e-04, +-4.841416541110492864e-04, +-4.810832201964343707e-04, +-4.780241598672421276e-04, +-4.749644781248522386e-04, +-4.719041799710554604e-04, +-4.688432704088713846e-04, +-4.657817544416496336e-04, +-4.627196370735382367e-04, +-4.596569233095464048e-04, +-4.565936181553965369e-04, +-4.535297266173193061e-04, +-4.504652537024417497e-04, +-4.474002044185853362e-04, +-4.443345837740491256e-04, +-4.412683967780130375e-04, +-4.382016484402527067e-04, +-4.351343437712676897e-04, +-4.320664877820777432e-04, +-4.289980854842708000e-04, +-4.259291418904802349e-04, +-4.228596620135541490e-04, +-4.197896508669582047e-04, +-4.167191134651764559e-04, +-4.136480548228168262e-04, +-4.105764799554216049e-04, +-4.075043938788419163e-04, +-4.044318016097122746e-04, +-4.013587081652359671e-04, +-3.982851185629692967e-04, +-3.952110378212265866e-04, +-3.921364709588651284e-04, +-3.890614229950739252e-04, +-3.859858989497723532e-04, +-3.829099038434001512e-04, +-3.798334426967028572e-04, +-3.767565205311322043e-04, +-3.736791423686374120e-04, +-3.706013132314461768e-04, +-3.675230381425392281e-04, +-3.644443221250925056e-04, +-3.613651702029509021e-04, +-3.582855874004110971e-04, +-3.552055787420101379e-04, +-3.521251492529294132e-04, +-3.490443039587767284e-04, +-3.459630478853764038e-04, +-3.428813860591721648e-04, +-3.397993235070090540e-04, +-3.367168652559263489e-04, +-3.336340163335554639e-04, +-3.305507817679059291e-04, +-3.274671665871569520e-04, +-3.243831758201234624e-04, +-3.212988144956313943e-04, +-3.182140876433369099e-04, +-3.151290002928214696e-04, +-3.120435574739986793e-04, +-3.089577642175152282e-04, +-3.058716255539202815e-04, +-3.027851465141398186e-04, +-2.996983321295320908e-04, +-2.966111874316799957e-04, +-2.935237174525123457e-04, +-2.904359272240302154e-04, +-2.873478217787024040e-04, +-2.842594061492565642e-04, +-2.811706853684612772e-04, +-2.780816644695336044e-04, +-2.749923484859238191e-04, +-2.719027424511667084e-04, +-2.688128513989448899e-04, +-2.657226803635637474e-04, +-2.626322343790433024e-04, +-2.595415184799418828e-04, +-2.564505377007250089e-04, +-2.533592970762398944e-04, +-2.502678016415006658e-04, +-2.471760564314733110e-04, +-2.440840664814812253e-04, +-2.409918368269904848e-04, +-2.378993725033946871e-04, +-2.348066785464189782e-04, +-2.317137599919083903e-04, +-2.286206218756086696e-04, +-2.255272692335753186e-04, +-2.224337071019561601e-04, +-2.193399405167785075e-04, +-2.162459745144207390e-04, +-2.131518141310545023e-04, +-2.100574644031199211e-04, +-2.069629303671085099e-04, +-2.038682170592801435e-04, +-2.007733295164135690e-04, +-1.976782727749011506e-04, +-1.945830518712241301e-04, +-1.914876718420131796e-04, +-1.883921377239015731e-04, +-1.852964545533117616e-04, +-1.822006273668589130e-04, +-1.791046612010679625e-04, +-1.760085610925039878e-04, +-1.729123320774867117e-04, +-1.698159791924970508e-04, +-1.667195074739627144e-04, +-1.636229219581098317e-04, +-1.605262276810257265e-04, +-1.574294296791335548e-04, +-1.543325329883549744e-04, +-1.512355426445857038e-04, +-1.481384636837563456e-04, +-1.450413011416182296e-04, +-1.419440600538705627e-04, +-1.388467454558785360e-04, +-1.357493623830790337e-04, +-1.326519158707638465e-04, +-1.295544109538667615e-04, +-1.264568526673668042e-04, +-1.233592460460758704e-04, +-1.202615961244905021e-04, +-1.171639079368525893e-04, +-1.140661865176261885e-04, +-1.109684369005904116e-04, +-1.078706641195911574e-04, +-1.047728732082568064e-04, +-1.016750691997829530e-04, +-9.857725712740716343e-05, +-9.547944202384890471e-05, +-9.238162892178458728e-05, +-8.928382285363231044e-05, +-8.618602885133591640e-05, +-8.308825194677236560e-05, +-7.999049717153569594e-05, +-7.689276955672096840e-05, +-7.379507413333173725e-05, +-7.069741593206448364e-05, +-6.759979998309203261e-05, +-6.450223131647183652e-05, +-6.140471496192861965e-05, +-5.830725594864014663e-05, +-5.520985930571248242e-05, +-5.211253006154984726e-05, +-4.901527324467576429e-05, +-4.591809388282609732e-05, +-4.282099700342567968e-05, +-3.972398763364816214e-05, +-3.662707080027026229e-05, +-3.353025152945628612e-05, +-3.043353484716439212e-05, +-2.733692577886205938e-05, +-2.424042934965626639e-05, +-2.114405058400891844e-05, +-1.804779450614331840e-05, +-1.495166613982850878e-05, +-1.185567050823329575e-05, +-8.759812633987128759e-06, +-5.664097539655126810e-06, +-2.568530246901593176e-06, + 5.268842231039839185e-07, + 3.622140849280737493e-06, + 6.717234611542144405e-06, + 9.812160489975599821e-06, + 1.290691346547206594e-05, + 1.600148851925062391e-05, + 1.909588063307415259e-05, + 2.219008478946407764e-05, + 2.528409597129472743e-05, + 2.837790916200819653e-05, + 3.147151934582983427e-05, + 3.456492150736206531e-05, + 3.765811063179942762e-05, + 4.075108170514420673e-05, + 4.384382971380003949e-05, + 4.693634964478721628e-05, + 5.002863648595769186e-05, + 5.312068522552044201e-05, + 5.621249085260142679e-05, + 5.930404835676860164e-05, + 6.239535272824702980e-05, + 6.548639895813428624e-05, + 6.857718203799423415e-05, + 7.166769696007244919e-05, + 7.475793871751066787e-05, + 7.784790230394189223e-05, + 8.093758271370449274e-05, + 8.402697494205811353e-05, + 8.711607398477721857e-05, + 9.020487483843511202e-05, + 9.329337250027510786e-05, + 9.638156196842396866e-05, + 9.946943824183201695e-05, + 1.025569963197982683e-04, + 1.056442312028066626e-04, + 1.087311378921183912e-04, + 1.118177113893693993e-04, + 1.149039466974024852e-04, + 1.179898388197953598e-04, + 1.210753827607987933e-04, + 1.241605735255508125e-04, + 1.272454061199485215e-04, + 1.303298755509305496e-04, + 1.334139768260720206e-04, + 1.364977049537991567e-04, + 1.395810549436048999e-04, + 1.426640218056424169e-04, + 1.457466005509406930e-04, + 1.488287861916186348e-04, + 1.519105737404801207e-04, + 1.549919582112300554e-04, + 1.580729346186856806e-04, + 1.611534979783056524e-04, + 1.642336433067478354e-04, + 1.673133656213958594e-04, + 1.703926599405720292e-04, + 1.734715212837547617e-04, + 1.765499446711709796e-04, + 1.796279251240121661e-04, + 1.827054576646477903e-04, + 1.857825373162225256e-04, + 1.888591591028677236e-04, + 1.919353180499174688e-04, + 1.950110091835048751e-04, + 1.980862275307749426e-04, + 2.011609681200979282e-04, + 2.042352259806682452e-04, + 2.073089961427843498e-04, + 2.103822736377210223e-04, + 2.134550534979416539e-04, + 2.165273307570402960e-04, + 2.195991004492665898e-04, + 2.226703576103585425e-04, + 2.257410972770701127e-04, + 2.288113144871109018e-04, + 2.318810042792910579e-04, + 2.349501616937338876e-04, + 2.380187817714753519e-04, + 2.410868595547430041e-04, + 2.441543900868282978e-04, + 2.472213684123696184e-04, + 2.502877895769489865e-04, + 2.533536486273036672e-04, + 2.564189406114715888e-04, + 2.594836605787337715e-04, + 2.625478035791401518e-04, + 2.656113646643382922e-04, + 2.686743388871072830e-04, + 2.717367213012894913e-04, + 2.747985069620108712e-04, + 2.778596909255490167e-04, + 2.809202682496139149e-04, + 2.839802339929481476e-04, + 2.870395832155374426e-04, + 2.900983109788249120e-04, + 2.931564123453096271e-04, + 2.962138823787581997e-04, + 2.992707161444186953e-04, + 3.023269087086169851e-04, + 3.053824551389728811e-04, + 3.084373505046105802e-04, + 3.114915898757557745e-04, + 3.145451683239524916e-04, + 3.175980809222706111e-04, + 3.206503227448407418e-04, + 3.237018888674055386e-04, + 3.267527743668505137e-04, + 3.298029743214164864e-04, + 3.328524838109127911e-04, + 3.359012979163154724e-04, + 3.389494117199791379e-04, + 3.419968203058520637e-04, + 3.450435187590704324e-04, + 3.480895021661761487e-04, + 3.511347656153238138e-04, + 3.541793041958855881e-04, + 3.572231129987268492e-04, + 3.602661871160780399e-04, + 3.633085216417515618e-04, + 3.663501116710774831e-04, + 3.693909523004332653e-04, + 3.724310386280746963e-04, + 3.754703657536614426e-04, + 3.785089287781987747e-04, + 3.815467228041843125e-04, + 3.845837429358148381e-04, + 3.876199842785912658e-04, + 3.906554419395935423e-04, + 3.936901110273576974e-04, + 3.967239866521509611e-04, + 3.997570639255746197e-04, + 4.027893379607760320e-04, + 4.058208038725887620e-04, + 4.088514567774785861e-04, + 4.118812917930692627e-04, + 4.149103040390380291e-04, + 4.179384886363753083e-04, + 4.209658407076617226e-04, + 4.239923553772826032e-04, + 4.270180277709616202e-04, + 4.300428530163072751e-04, + 4.330668262423469105e-04, + 4.360899425797430087e-04, + 4.391121971609988645e-04, + 4.421335851200591111e-04, + 4.451541015925272109e-04, + 4.481737417158706952e-04, + 4.511925006290232621e-04, + 4.542103734725999901e-04, + 4.572273553891014939e-04, + 4.602434415225210634e-04, + 4.632586270185561918e-04, + 4.662729070248112129e-04, + 4.692862766903437791e-04, + 4.722987311662677325e-04, + 4.753102656049623957e-04, + 4.783208751609531613e-04, + 4.813305549904404600e-04, + 4.843393002512522724e-04, + 4.873471061029782995e-04, + 4.903539677071821947e-04, + 4.933598802270042043e-04, + 4.963648388273741042e-04, + 4.993688386752170904e-04, + 5.023718749390609179e-04, + 5.053739427893085782e-04, + 5.083750373981170845e-04, + 5.113751539396693907e-04, + 5.143742875897834273e-04, + 5.173724335261151728e-04, + 5.203695869283064303e-04, + 5.233657429779218356e-04, + 5.263608968579909985e-04, + 5.293550437538825865e-04, + 5.323481788525141582e-04, + 5.353402973429533538e-04, + 5.383313944159703358e-04, + 5.413214652642312115e-04, + 5.443105050825184504e-04, + 5.472985090673338502e-04, + 5.502854724171013902e-04, + 5.532713903323859157e-04, + 5.562562580154865616e-04, + 5.592400706706580384e-04, + 5.622228235043107755e-04, + 5.652045117246184405e-04, + 5.681851305417317437e-04, + 5.711646751679782565e-04, + 5.741431408174078052e-04, + 5.771205227063338139e-04, + 5.800968160528717586e-04, + 5.830720160771492864e-04, + 5.860461180015795425e-04, + 5.890191170501363812e-04, + 5.919910084492241127e-04, + 5.949617874272269090e-04, + 5.979314492144427754e-04, + 6.008999890432269913e-04, + 6.038674021481987581e-04, + 6.068336837658519717e-04, + 6.097988291347597022e-04, + 6.127628334957796507e-04, + 6.157256920916699076e-04, + 6.186874001673533900e-04, + 6.216479529698004224e-04, + 6.246073457482321329e-04, + 6.275655737540584370e-04, + 6.305226322404298284e-04, + 6.334785164630322074e-04, + 6.364332216796335763e-04, + 6.393867431500238662e-04, + 6.423390761361639058e-04, + 6.452902159023781933e-04, + 6.482401577149715221e-04, + 6.511888968425038260e-04, + 6.541364285556644119e-04, + 6.570827481275401914e-04, + 6.600278508332268861e-04, + 6.629717319500423979e-04, + 6.659143867576551796e-04, + 6.688558105380375046e-04, + 6.717959985750006704e-04, + 6.747349461550672389e-04, + 6.776726485666842307e-04, + 6.806091011008203037e-04, + 6.835442990505251337e-04, + 6.864782377111178484e-04, + 6.894109123804006154e-04, + 6.923423183582751595e-04, + 6.952724509469374861e-04, + 6.982013054510922273e-04, + 7.011288771775586433e-04, + 7.040551614354801984e-04, + 7.069801535365244881e-04, + 7.099038487945061532e-04, + 7.128262425255746642e-04, + 7.157473300484364738e-04, + 7.186671066839576570e-04, + 7.215855677553753306e-04, + 7.245027085884904244e-04, + 7.274185245112313979e-04, + 7.303330108542391676e-04, + 7.332461629500977573e-04, + 7.361579761341853967e-04, + 7.390684457442249023e-04, + 7.419775671202335880e-04, + 7.448853356046540196e-04, + 7.477917465425533991e-04, + 7.506967952812529854e-04, + 7.536004771705178285e-04, + 7.565027875627695995e-04, + 7.594037218126935664e-04, + 7.623032752775151747e-04, + 7.652014433168740628e-04, + 7.680982212930247480e-04, + 7.709936045707807897e-04, + 7.738875885170670146e-04, + 7.767801685017074057e-04, + 7.796713398969783030e-04, + 7.825610980775470375e-04, + 7.854494384206754361e-04, + 7.883363563061029445e-04, + 7.912218471163065103e-04, + 7.941059062361218715e-04, + 7.969885290529437000e-04, + 7.998697109569333349e-04, + 8.027494473406260843e-04, + 8.056277335991486079e-04, + 8.085045651303985692e-04, + 8.113799373346906440e-04, + 8.142538456149336782e-04, + 8.171262853768473120e-04, + 8.199972520285744859e-04, + 8.228667409808859213e-04, + 8.257347476473790712e-04, + 8.286012674440325137e-04, + 8.314662957897350423e-04, + 8.343298281058342042e-04, + 8.371918598163428406e-04, + 8.400523863481357614e-04, + 8.429114031305737437e-04, + 8.457689055957008564e-04, + 8.486248891784486156e-04, + 8.514793493162517435e-04, + 8.543322814492534077e-04, + 8.571836810205028714e-04, + 8.600335434755822022e-04, + 8.628818642627977429e-04, + 8.657286388333798209e-04, + 8.685738626410551390e-04, + 8.714175311426167409e-04, + 8.742596397971611659e-04, + 8.771001840669467040e-04, + 8.799391594169908310e-04, + 8.827765613147126392e-04, + 8.856123852307001268e-04, + 8.884466266382728310e-04, + 8.912792810134192696e-04, + 8.941103438350022888e-04, + 8.969398105846414270e-04, + 8.997676767469588123e-04, + 9.025939378092235439e-04, + 9.054185892615413192e-04, + 9.082416265970498070e-04, + 9.110630453115455734e-04, + 9.138828409036871530e-04, + 9.167010088751249364e-04, + 9.195175447304477188e-04, + 9.223324439767386111e-04, + 9.251457021244143203e-04, + 9.279573146864684855e-04, + 9.307672771790510748e-04, + 9.335755851210275494e-04, + 9.363822340341809583e-04, + 9.391872194434076372e-04, + 9.419905368763406648e-04, + 9.447921818635546688e-04, + 9.475921499387546937e-04, + 9.503904366384106081e-04, + 9.531870375019477074e-04, + 9.559819480719434961e-04, + 9.587751638937664321e-04, + 9.615666805157556873e-04, + 9.643564934894351690e-04, + 9.671445983690670455e-04, + 9.699309907121587190e-04, + 9.727156660790501784e-04, + 9.754986200330835683e-04, + 9.782798481408859492e-04, + 9.810593459716641321e-04, + 9.838371090980426587e-04, + 9.866131330956260000e-04, + 9.893874135429418532e-04, + 9.921599460215786183e-04, + 9.949307261163697121e-04, + 9.976997494150425042e-04, + 1.000467011508392005e-03, + 1.003232507990492938e-03, + 1.005996234458324170e-03, + 1.008758186512018944e-03, + 1.011518359754768389e-03, + 1.014276749792987833e-03, + 1.017033352236283847e-03, + 1.019788162697009932e-03, + 1.022541176791033710e-03, + 1.025292390137299767e-03, + 1.028041798357771973e-03, + 1.030789397077637318e-03, + 1.033535181925181873e-03, + 1.036279148532041677e-03, + 1.039021292532848854e-03, + 1.041761609565412675e-03, + 1.044500095270923818e-03, + 1.047236745293580107e-03, + 1.049971555280784915e-03, + 1.052704520883273589e-03, + 1.055435637755062052e-03, + 1.058164901553019415e-03, + 1.060892307937679824e-03, + 1.063617852572504774e-03, + 1.066341531124446237e-03, + 1.069063339263529467e-03, + 1.071783272663029071e-03, + 1.074501326999678695e-03, + 1.077217497953295456e-03, + 1.079931781206975097e-03, + 1.082644172447282593e-03, + 1.085354667363899782e-03, + 1.088063261649799707e-03, + 1.090769951001448277e-03, + 1.093474731118443009e-03, + 1.096177597703699947e-03, + 1.098878546463646216e-03, + 1.101577573107856379e-03, + 1.104274673349256702e-03, + 1.106969842904290601e-03, + 1.109663077492517493e-03, + 1.112354372837160528e-03, + 1.115043724664390584e-03, + 1.117731128704114269e-03, + 1.120416580689552813e-03, + 1.123100076357206288e-03, + 1.125781611446959431e-03, + 1.128461181702286771e-03, + 1.131138782869885737e-03, + 1.133814410699931444e-03, + 1.136488060945956349e-03, + 1.139159729365111324e-03, + 1.141829411717792042e-03, + 1.144497103767846058e-03, + 1.147162801282679929e-03, + 1.149826500033221703e-03, + 1.152488195793498291e-03, + 1.155147884341370997e-03, + 1.157805561458168401e-03, + 1.160461222928347875e-03, + 1.163114864540274037e-03, + 1.165766482085505568e-03, + 1.168416071359344461e-03, + 1.171063628160422081e-03, + 1.173709148290882822e-03, + 1.176352627556576666e-03, + 1.178994061766700093e-03, + 1.181633446733986468e-03, + 1.184270778274888617e-03, + 1.186906052209230370e-03, + 1.189539264360390874e-03, + 1.192170410555489337e-03, + 1.194799486625036352e-03, + 1.197426488403115826e-03, + 1.200051411727566042e-03, + 1.202674252439593682e-03, + 1.205295006384218999e-03, + 1.207913669409889194e-03, + 1.210530237368669451e-03, + 1.213144706116408384e-03, + 1.215757071512399120e-03, + 1.218367329419566426e-03, + 1.220975475704638453e-03, + 1.223581506237817569e-03, + 1.226185416892942338e-03, + 1.228787203547693089e-03, + 1.231386862083221111e-03, + 1.233984388384416243e-03, + 1.236579778339772645e-03, + 1.239173027841590675e-03, + 1.241764132785901217e-03, + 1.244353089072094878e-03, + 1.246939892603600051e-03, + 1.249524539287552886e-03, + 1.252107025034451858e-03, + 1.254687345758863804e-03, + 1.257265497379028620e-03, + 1.259841475816787272e-03, + 1.262415276997790395e-03, + 1.264986896851367105e-03, + 1.267556331310776318e-03, + 1.270123576312854382e-03, + 1.272688627798205683e-03, + 1.275251481711377416e-03, + 1.277812134000521965e-03, + 1.280370580617565170e-03, + 1.282926817518407992e-03, + 1.285480840662562652e-03, + 1.288032646013352340e-03, + 1.290582229538071246e-03, + 1.293129587207608993e-03, + 1.295674714996901877e-03, + 1.298217608884536271e-03, + 1.300758264852940093e-03, + 1.303296678888547170e-03, + 1.305832846981467210e-03, + 1.308366765125668378e-03, + 1.310898429319138194e-03, + 1.313427835563568680e-03, + 1.315954979864515303e-03, + 1.318479858231588883e-03, + 1.321002466678113411e-03, + 1.323522801221295843e-03, + 1.326040857882417349e-03, + 1.328556632686432809e-03, + 1.331070121662485594e-03, + 1.333581320843251188e-03, + 1.336090226265650377e-03, + 1.338596833970543505e-03, + 1.341101140002376371e-03, + 1.343603140409884095e-03, + 1.346102831245685845e-03, + 1.348600208566240379e-03, + 1.351095268431969218e-03, + 1.353588006907424689e-03, + 1.356078420060966190e-03, + 1.358566503964981145e-03, + 1.361052254695789164e-03, + 1.363535668333868637e-03, + 1.366016740963516734e-03, + 1.368495468673049760e-03, + 1.370971847554884474e-03, + 1.373445873705527245e-03, + 1.375917543225159238e-03, + 1.378386852218324229e-03, + 1.380853796793543500e-03, + 1.383318373063271382e-03, + 1.385780577144050301e-03, + 1.388240405156435748e-03, + 1.390697853225197293e-03, + 1.393152917478999823e-03, + 1.395605594050580061e-03, + 1.398055879076920676e-03, + 1.400503768698914409e-03, + 1.402949259061546427e-03, + 1.405392346314056308e-03, + 1.407833026609624921e-03, + 1.410271296105531638e-03, + 1.412707150963341679e-03, + 1.415140587348562426e-03, + 1.417571601430830767e-03, + 1.420000189384083757e-03, + 1.422426347386167864e-03, + 1.424850071619294771e-03, + 1.427271358269656485e-03, + 1.429690203527605096e-03, + 1.432106603587805652e-03, + 1.434520554648936047e-03, + 1.436932052913845320e-03, + 1.439341094589715632e-03, + 1.441747675887758255e-03, + 1.444151793023376205e-03, + 1.446553442216315377e-03, + 1.448952619690380920e-03, + 1.451349321673627620e-03, + 1.453743544398270133e-03, + 1.456135284100856016e-03, + 1.458524537022208708e-03, + 1.460911299407060410e-03, + 1.463295567504700224e-03, + 1.465677337568615721e-03, + 1.468056605856420940e-03, + 1.470433368630002981e-03, + 1.472807622155654491e-03, + 1.475179362703778327e-03, + 1.477548586549108731e-03, + 1.479915289970600966e-03, + 1.482279469251656387e-03, + 1.484641120679794585e-03, + 1.487000240546852226e-03, + 1.489356825149056778e-03, + 1.491710870786999840e-03, + 1.494062373765270247e-03, + 1.496411330393148395e-03, + 1.498757736984017083e-03, + 1.501101589855603942e-03, + 1.503442885330118477e-03, + 1.505781619733910547e-03, + 1.508117789397883440e-03, + 1.510451390657137610e-03, + 1.512782419851131351e-03, + 1.515110873323845166e-03, + 1.517436747423474720e-03, + 1.519760038502587828e-03, + 1.522080742918295549e-03, + 1.524398857031936030e-03, + 1.526714377209252311e-03, + 1.529027299820522002e-03, + 1.531337621240287097e-03, + 1.533645337847496870e-03, + 1.535950446025673329e-03, + 1.538252942162545182e-03, + 1.540552822650535520e-03, + 1.542850083886134491e-03, + 1.545144722270583217e-03, + 1.547436734209511671e-03, + 1.549726116112899862e-03, + 1.552012864395183218e-03, + 1.554296975475409149e-03, + 1.556578445776944739e-03, + 1.558857271727621388e-03, + 1.561133449759907624e-03, + 1.563406976310590139e-03, + 1.565677847821017295e-03, + 1.567946060736960133e-03, + 1.570211611508854580e-03, + 1.572474496591484867e-03, + 1.574734712444145505e-03, + 1.576992255530754910e-03, + 1.579247122319795121e-03, + 1.581499309283980036e-03, + 1.583748812900907452e-03, + 1.585995629652460145e-03, + 1.588239756025269702e-03, + 1.590481188510361544e-03, + 1.592719923603323198e-03, + 1.594955957804452618e-03, + 1.597189287618449617e-03, + 1.599419909554603654e-03, + 1.601647820126923718e-03, + 1.603873015853843863e-03, + 1.606095493258399495e-03, + 1.608315248868358782e-03, + 1.610532279215947911e-03, + 1.612746580837981633e-03, + 1.614958150276052775e-03, + 1.617166984076154942e-03, + 1.619373078789103620e-03, + 1.621576430970202024e-03, + 1.623777037179367300e-03, + 1.625974893981313755e-03, + 1.628169997945242992e-03, + 1.630362345645004372e-03, + 1.632551933659243766e-03, + 1.634738758571137275e-03, + 1.636922816968485340e-03, + 1.639104105443941074e-03, + 1.641282620594671339e-03, + 1.643458359022507021e-03, + 1.645631317334129724e-03, + 1.647801492140759305e-03, + 1.649968880058348165e-03, + 1.652133477707512727e-03, + 1.654295281713669607e-03, + 1.656454288706982062e-03, + 1.658610495322059009e-03, + 1.660763898198495611e-03, + 1.662914493980591820e-03, + 1.665062279317261083e-03, + 1.667207250862157413e-03, + 1.669349405273832165e-03, + 1.671488739215427639e-03, + 1.673625249354891969e-03, + 1.675758932364874824e-03, + 1.677889784922940780e-03, + 1.680017803711279832e-03, + 1.682142985416841844e-03, + 1.684265326731462092e-03, + 1.686384824351800120e-03, + 1.688501474979023581e-03, + 1.690615275319421254e-03, + 1.692726222083837514e-03, + 1.694834311988128355e-03, + 1.696939541752795575e-03, + 1.699041908103166108e-03, + 1.701141407769521038e-03, + 1.703238037486829760e-03, + 1.705331793994888318e-03, + 1.707422674038460786e-03, + 1.709510674367023400e-03, + 1.711595791734881215e-03, + 1.713678022901340709e-03, + 1.715757364630413366e-03, + 1.717833813690973531e-03, + 1.719907366856901531e-03, + 1.721978020906801340e-03, + 1.724045772624151511e-03, + 1.726110618797453266e-03, + 1.728172556219910233e-03, + 1.730231581689832630e-03, + 1.732287692010110996e-03, + 1.734340883988806431e-03, + 1.736391154438844198e-03, + 1.738438500177959516e-03, + 1.740482918028804027e-03, + 1.742524404819088477e-03, + 1.744562957381298436e-03, + 1.746598572552863875e-03, + 1.748631247176271261e-03, + 1.750660978098813767e-03, + 1.752687762172775365e-03, + 1.754711596255336282e-03, + 1.756732477208727827e-03, + 1.758750401900177748e-03, + 1.760765367201604916e-03, + 1.762777369990167287e-03, + 1.764786407147957452e-03, + 1.766792475561936721e-03, + 1.768795572124113149e-03, + 1.770795693731420321e-03, + 1.772792837285930290e-03, + 1.774786999694564745e-03, + 1.776778177869250920e-03, + 1.778766368727068394e-03, + 1.780751569189947901e-03, + 1.782733776184850221e-03, + 1.784712986643895421e-03, + 1.786689197504076404e-03, + 1.788662405707435853e-03, + 1.790632608201158174e-03, + 1.792599801937362842e-03, + 1.794563983873197644e-03, + 1.796525150970981798e-03, + 1.798483300197923620e-03, + 1.800438428526466824e-03, + 1.802390532933973930e-03, + 1.804339610402876104e-03, + 1.806285657920824513e-03, + 1.808228672480388047e-03, + 1.810168651079235250e-03, + 1.812105590720248377e-03, + 1.814039488411256897e-03, + 1.815970341165203377e-03, + 1.817898146000238458e-03, + 1.819822899939506616e-03, + 1.821744600011244389e-03, + 1.823663243248941062e-03, + 1.825578826691026191e-03, + 1.827491347381271199e-03, + 1.829400802368260715e-03, + 1.831307188705976743e-03, + 1.833210503453540190e-03, + 1.835110743674952171e-03, + 1.837007906439608144e-03, + 1.838901988822017313e-03, + 1.840792987901754925e-03, + 1.842680900763598228e-03, + 1.844565724497435836e-03, + 1.846447456198462445e-03, + 1.848326092966918197e-03, + 1.850201631908199480e-03, + 1.852074070133031538e-03, + 1.853943404757183106e-03, + 1.855809632901624486e-03, + 1.857672751692591084e-03, + 1.859532758261566929e-03, + 1.861389649744982396e-03, + 1.863243423284769969e-03, + 1.865094076027861824e-03, + 1.866941605126576451e-03, + 1.868786007738320286e-03, + 1.870627281025735158e-03, + 1.872465422156797824e-03, + 1.874300428304613748e-03, + 1.876132296647510999e-03, + 1.877961024369197238e-03, + 1.879786608658481298e-03, + 1.881609046709435814e-03, + 1.883428335721515834e-03, + 1.885244472899307933e-03, + 1.887057455452646661e-03, + 1.888867280596778905e-03, + 1.890673945552043397e-03, + 1.892477447544229372e-03, + 1.894277783804270820e-03, + 1.896074951568404564e-03, + 1.897868948078297114e-03, + 1.899659770580639168e-03, + 1.901447416327652811e-03, + 1.903231882576822409e-03, + 1.905013166590861220e-03, + 1.906791265637788587e-03, + 1.908566176991056138e-03, + 1.910337897929313602e-03, + 1.912106425736540428e-03, + 1.913871757702147050e-03, + 1.915633891120761953e-03, + 1.917392823292398199e-03, + 1.919148551522343715e-03, + 1.920901073121330637e-03, + 1.922650385405468530e-03, + 1.924396485695979838e-03, + 1.926139371319677586e-03, + 1.927879039608696278e-03, + 1.929615487900450269e-03, + 1.931348713537773621e-03, + 1.933078713868813204e-03, + 1.934805486247219517e-03, + 1.936529028031907292e-03, + 1.938249336587164135e-03, + 1.939966409282791685e-03, + 1.941680243493858855e-03, + 1.943390836600831714e-03, + 1.945098185989663046e-03, + 1.946802289051720791e-03, + 1.948503143183580744e-03, + 1.950200745787472817e-03, + 1.951895094270869472e-03, + 1.953586186046802307e-03, + 1.955274018533613347e-03, + 1.956958589155073647e-03, + 1.958639895340500824e-03, + 1.960317934524528558e-03, + 1.961992704147232352e-03, + 1.963664201654242731e-03, + 1.965332424496517988e-03, + 1.966997370130473856e-03, + 1.968659036018088459e-03, + 1.970317419626685471e-03, + 1.971972518429054248e-03, + 1.973624329903554773e-03, + 1.975272851533905159e-03, + 1.976918080809304812e-03, + 1.978560015224534174e-03, + 1.980198652279704929e-03, + 1.981833989480600872e-03, + 1.983466024338235989e-03, + 1.985094754369337144e-03, + 1.986720177096085605e-03, + 1.988342290046094495e-03, + 1.989961090752479910e-03, + 1.991576576753971081e-03, + 1.993188745594696130e-03, + 1.994797594824346439e-03, + 1.996403121998074296e-03, + 1.998005324676681987e-03, + 1.999604200426381099e-03, + 2.001199746818907010e-03, + 2.002791961431609098e-03, + 2.004380841847403037e-03, + 2.005966385654531833e-03, + 2.007548590446996042e-03, + 2.009127453824341263e-03, + 2.010702973391456910e-03, + 2.012275146759026807e-03, + 2.013843971543121097e-03, + 2.015409445365513690e-03, + 2.016971565853438540e-03, + 2.018530330639691558e-03, + 2.020085737362749875e-03, + 2.021637783666569311e-03, + 2.023186467200674150e-03, + 2.024731785620284205e-03, + 2.026273736586092777e-03, + 2.027812317764390252e-03, + 2.029347526827166449e-03, + 2.030879361451895081e-03, + 2.032407819321661695e-03, + 2.033932898125251267e-03, + 2.035454595556918794e-03, + 2.036972909316674650e-03, + 2.038487837110037389e-03, + 2.039999376648136964e-03, + 2.041507525647833551e-03, + 2.043012281831512421e-03, + 2.044513642927174579e-03, + 2.046011606668576843e-03, + 2.047506170794986379e-03, + 2.048997333051318179e-03, + 2.050485091188229171e-03, + 2.051969442961932167e-03, + 2.053450386134296046e-03, + 2.054927918472832741e-03, + 2.056402037750765330e-03, + 2.057872741747008086e-03, + 2.059340028245935320e-03, + 2.060803895037797290e-03, + 2.062264339918499015e-03, + 2.063721360689428543e-03, + 2.065174955157837288e-03, + 2.066625121136634029e-03, + 2.068071856444336776e-03, + 2.069515158905179016e-03, + 2.070955026349053773e-03, + 2.072391456611638073e-03, + 2.073824447534212533e-03, + 2.075253996963748095e-03, + 2.076680102753028761e-03, + 2.078102762760416534e-03, + 2.079521974850017958e-03, + 2.080937736891709262e-03, + 2.082350046761019275e-03, + 2.083758902339169754e-03, + 2.085164301513200719e-03, + 2.086566242175759249e-03, + 2.087964722225333237e-03, + 2.089359739566056234e-03, + 2.090751292107785944e-03, + 2.092139377766212647e-03, + 2.093523994462670110e-03, + 2.094905140124236204e-03, + 2.096282812683828746e-03, + 2.097657010080010778e-03, + 2.099027730257103756e-03, + 2.100394971165284261e-03, + 2.101758730760379303e-03, + 2.103119007003982979e-03, + 2.104475797863535839e-03, + 2.105829101312131461e-03, + 2.107178915328785773e-03, + 2.108525237898071884e-03, + 2.109868067010511276e-03, + 2.111207400662421137e-03, + 2.112543236855697528e-03, + 2.113875573598221307e-03, + 2.115204408903616565e-03, + 2.116529740791241090e-03, + 2.117851567286251416e-03, + 2.119169886419677417e-03, + 2.120484696228263580e-03, + 2.121795994754592171e-03, + 2.123103780047008639e-03, + 2.124408050159768205e-03, + 2.125708803152839832e-03, + 2.127006037092000774e-03, + 2.128299750048904225e-03, + 2.129589940101067613e-03, + 2.130876605331631472e-03, + 2.132159743829746285e-03, + 2.133439353690363017e-03, + 2.134715433014200588e-03, + 2.135987979907842151e-03, + 2.137256992483671340e-03, + 2.138522468860005413e-03, + 2.139784407160910933e-03, + 2.141042805516300915e-03, + 2.142297662062015492e-03, + 2.143548974939664051e-03, + 2.144796742296704601e-03, + 2.146040962286535712e-03, + 2.147281633068333015e-03, + 2.148518752807128136e-03, + 2.149752319673893259e-03, + 2.150982331845391511e-03, + 2.152208787504258057e-03, + 2.153431684839066888e-03, + 2.154651022044167755e-03, + 2.155866797319887836e-03, + 2.157079008872359992e-03, + 2.158287654913584788e-03, + 2.159492733661549750e-03, + 2.160694243340022507e-03, + 2.161892182178673516e-03, + 2.163086548413154127e-03, + 2.164277340284909666e-03, + 2.165464556041291327e-03, + 2.166648193935631628e-03, + 2.167828252227083953e-03, + 2.169004729180730104e-03, + 2.170177623067536497e-03, + 2.171346932164434397e-03, + 2.172512654754281316e-03, + 2.173674789125698819e-03, + 2.174833333573384340e-03, + 2.175988286397924701e-03, + 2.177139645905782663e-03, + 2.178287410409338130e-03, + 2.179431578226979655e-03, + 2.180572147682943544e-03, + 2.181709117107427046e-03, + 2.182842484836530240e-03, + 2.183972249212381804e-03, + 2.185098408582948192e-03, + 2.186220961302158539e-03, + 2.187339905729921569e-03, + 2.188455240232131671e-03, + 2.189566963180464201e-03, + 2.190675072952733265e-03, + 2.191779567932602025e-03, + 2.192880446509682009e-03, + 2.193977707079625486e-03, + 2.195071348043943753e-03, + 2.196161367810209666e-03, + 2.197247764791886767e-03, + 2.198330537408396072e-03, + 2.199409684085209746e-03, + 2.200485203253702352e-03, + 2.201557093351218502e-03, + 2.202625352821136612e-03, + 2.203689980112763080e-03, + 2.204750973681371753e-03, + 2.205808331988289364e-03, + 2.206862053500770193e-03, + 2.207912136692030333e-03, + 2.208958580041371286e-03, + 2.210001382033969196e-03, + 2.211040541161129851e-03, + 2.212076055919980338e-03, + 2.213107924813786497e-03, + 2.214136146351795061e-03, + 2.215160719049199395e-03, + 2.216181641427201945e-03, + 2.217198912013081460e-03, + 2.218212529340052048e-03, + 2.219222491947344267e-03, + 2.220228798380263248e-03, + 2.221231447190061617e-03, + 2.222230436934028407e-03, + 2.223225766175459996e-03, + 2.224217433483701746e-03, + 2.225205437434154502e-03, + 2.226189776608108930e-03, + 2.227170449593003990e-03, + 2.228147454982328055e-03, + 2.229120791375449346e-03, + 2.230090457377927309e-03, + 2.231056451601251111e-03, + 2.232018772663029588e-03, + 2.232977419186847699e-03, + 2.233932389802316398e-03, + 2.234883683145174119e-03, + 2.235831297857127174e-03, + 2.236775232585926955e-03, + 2.237715485985438020e-03, + 2.238652056715517095e-03, + 2.239584943442070753e-03, + 2.240514144837107459e-03, + 2.241439659578645625e-03, + 2.242361486350751779e-03, + 2.243279623843617756e-03, + 2.244194070753411947e-03, + 2.245104825782447133e-03, + 2.246011887639033904e-03, + 2.246915255037559584e-03, + 2.247814926698536372e-03, + 2.248710901348475143e-03, + 2.249603177719979551e-03, + 2.250491754551759913e-03, + 2.251376630588557744e-03, + 2.252257804581196503e-03, + 2.253135275286622351e-03, + 2.254009041467815253e-03, + 2.254879101893821070e-03, + 2.255745455339852601e-03, + 2.256608100587124358e-03, + 2.257467036422965319e-03, + 2.258322261640782064e-03, + 2.259173775040096942e-03, + 2.260021575426558044e-03, + 2.260865661611777006e-03, + 2.261706032413577511e-03, + 2.262542686655874720e-03, + 2.263375623168627573e-03, + 2.264204840787899502e-03, + 2.265030338355916543e-03, + 2.265852114720952847e-03, + 2.266670168737387053e-03, + 2.267484499265710537e-03, + 2.268295105172571206e-03, + 2.269101985330652937e-03, + 2.269905138618770555e-03, + 2.270704563921878069e-03, + 2.271500260131068243e-03, + 2.272292226143429478e-03, + 2.273080460862306022e-03, + 2.273864963197055541e-03, + 2.274645732063244712e-03, + 2.275422766382490056e-03, + 2.276196065082542082e-03, + 2.276965627097323874e-03, + 2.277731451366830050e-03, + 2.278493536837186608e-03, + 2.279251882460696897e-03, + 2.280006487195737098e-03, + 2.280757350006827350e-03, + 2.281504469864656034e-03, + 2.282247845746003447e-03, + 2.282987476633782133e-03, + 2.283723361517091526e-03, + 2.284455499391117340e-03, + 2.285183889257192714e-03, + 2.285908530122822500e-03, + 2.286629421001608233e-03, + 2.287346560913359594e-03, + 2.288059948883930470e-03, + 2.288769583945401108e-03, + 2.289475465135993541e-03, + 2.290177591500048605e-03, + 2.290875962088043723e-03, + 2.291570575956667927e-03, + 2.292261432168706935e-03, + 2.292948529793091723e-03, + 2.293631867904972685e-03, + 2.294311445585598633e-03, + 2.294987261922386626e-03, + 2.295659316008901146e-03, + 2.296327606944894434e-03, + 2.296992133836293914e-03, + 2.297652895795095507e-03, + 2.298309891939555750e-03, + 2.298963121394062992e-03, + 2.299612583289157783e-03, + 2.300258276761548912e-03, + 2.300900200954105607e-03, + 2.301538355015901333e-03, + 2.302172738102137902e-03, + 2.302803349374192739e-03, + 2.303430187999641436e-03, + 2.304053253152200074e-03, + 2.304672544011763385e-03, + 2.305288059764411257e-03, + 2.305899799602433020e-03, + 2.306507762724183900e-03, + 2.307111948334324841e-03, + 2.307712355643604368e-03, + 2.308308983868981746e-03, + 2.308901832233623084e-03, + 2.309490899966812425e-03, + 2.310076186304090094e-03, + 2.310657690487114349e-03, + 2.311235411763753328e-03, + 2.311809349388073333e-03, + 2.312379502620305442e-03, + 2.312945870726855913e-03, + 2.313508452980371239e-03, + 2.314067248659626257e-03, + 2.314622257049596572e-03, + 2.315173477441493689e-03, + 2.315720909132666129e-03, + 2.316264551426655809e-03, + 2.316804403633249652e-03, + 2.317340465068359889e-03, + 2.317872735054164138e-03, + 2.318401212918940607e-03, + 2.318925897997248936e-03, + 2.319446789629817877e-03, + 2.319963887163559169e-03, + 2.320477189951581851e-03, + 2.320986697353222186e-03, + 2.321492408733978174e-03, + 2.321994323465574606e-03, + 2.322492440925913622e-03, + 2.322986760499134995e-03, + 2.323477281575543271e-03, + 2.323964003551638995e-03, + 2.324446925830191135e-03, + 2.324926047820099172e-03, + 2.325401368936492411e-03, + 2.325872888600713072e-03, + 2.326340606240331465e-03, + 2.326804521289045375e-03, + 2.327264633186860911e-03, + 2.327720941379900817e-03, + 2.328173445320573173e-03, + 2.328622144467441292e-03, + 2.329067038285290072e-03, + 2.329508126245134238e-03, + 2.329945407824173670e-03, + 2.330378882505830269e-03, + 2.330808549779741883e-03, + 2.331234409141751899e-03, + 2.331656460093900138e-03, + 2.332074702144492674e-03, + 2.332489134807984310e-03, + 2.332899757605066179e-03, + 2.333306570062680923e-03, + 2.333709571713925117e-03, + 2.334108762098165927e-03, + 2.334504140760939629e-03, + 2.334895707254021433e-03, + 2.335283461135423747e-03, + 2.335667401969323750e-03, + 2.336047529326150136e-03, + 2.336423842782564889e-03, + 2.336796341921422090e-03, + 2.337165026331775291e-03, + 2.337529895608946029e-03, + 2.337890949354450541e-03, + 2.338248187176001931e-03, + 2.338601608687589529e-03, + 2.338951213509362671e-03, + 2.339297001267723938e-03, + 2.339638971595279712e-03, + 2.339977124130880083e-03, + 2.340311458519593255e-03, + 2.340641974412672587e-03, + 2.340968671467632059e-03, + 2.341291549348203764e-03, + 2.341610607724328372e-03, + 2.341925846272166403e-03, + 2.342237264674110371e-03, + 2.342544862618787822e-03, + 2.342848639801018828e-03, + 2.343148595921861962e-03, + 2.343444730688619502e-03, + 2.343737043814782782e-03, + 2.344025535020072531e-03, + 2.344310204030461420e-03, + 2.344591050578130696e-03, + 2.344868074401462374e-03, + 2.345141275245094751e-03, + 2.345410652859876866e-03, + 2.345676207002881947e-03, + 2.345937937437412180e-03, + 2.346195843932984831e-03, + 2.346449926265359569e-03, + 2.346700184216499001e-03, + 2.346946617574597726e-03, + 2.347189226134085375e-03, + 2.347428009695609261e-03, + 2.347662968066037848e-03, + 2.347894101058466392e-03, + 2.348121408492214769e-03, + 2.348344890192830946e-03, + 2.348564545992081008e-03, + 2.348780375727966500e-03, + 2.348992379244698846e-03, + 2.349200556392726236e-03, + 2.349404907028708901e-03, + 2.349605431015554680e-03, + 2.349802128222362209e-03, + 2.349994998524482931e-03, + 2.350184041803480336e-03, + 2.350369257947137330e-03, + 2.350550646849464045e-03, + 2.350728208410699134e-03, + 2.350901942537313247e-03, + 2.351071849141972165e-03, + 2.351237928143588840e-03, + 2.351400179467285235e-03, + 2.351558603044420510e-03, + 2.351713198812558064e-03, + 2.351863966715494591e-03, + 2.352010906703267887e-03, + 2.352154018732087459e-03, + 2.352293302764432974e-03, + 2.352428758768976627e-03, + 2.352560386720634316e-03, + 2.352688186600519239e-03, + 2.352812158395977456e-03, + 2.352932302100574878e-03, + 2.353048617714102037e-03, + 2.353161105242551968e-03, + 2.353269764698157941e-03, + 2.353374596099357032e-03, + 2.353475599470803998e-03, + 2.353572774843390360e-03, + 2.353666122254211013e-03, + 2.353755641746573327e-03, + 2.353841333370012764e-03, + 2.353923197180276400e-03, + 2.354001233239325520e-03, + 2.354075441615349935e-03, + 2.354145822382733722e-03, + 2.354212375622093383e-03, + 2.354275101420257466e-03, + 2.354333999870254421e-03, + 2.354389071071346859e-03, + 2.354440315128998595e-03, + 2.354487732154878117e-03, + 2.354531322266895446e-03, + 2.354571085589140991e-03, + 2.354607022251925443e-03, + 2.354639132391779782e-03, + 2.354667416151436619e-03, + 2.354691873679831508e-03, + 2.354712505132128958e-03, + 2.354729310669677767e-03, + 2.354742290460060030e-03, + 2.354751444677043865e-03, + 2.354756773500609433e-03, + 2.354758277116955883e-03, + 2.354755955718467516e-03, + 2.354749809503740247e-03, + 2.354739838677585503e-03, + 2.354726043451003774e-03, + 2.354708424041207591e-03, + 2.354686980671607220e-03, + 2.354661713571813697e-03, + 2.354632622977647933e-03, + 2.354599709131109490e-03, + 2.354562972280426023e-03, + 2.354522412679999933e-03, + 2.354478030590438295e-03, + 2.354429826278560661e-03, + 2.354377800017356994e-03, + 2.354321952086028437e-03, + 2.354262282769975165e-03, + 2.354198792360780342e-03, + 2.354131481156222262e-03, + 2.354060349460278256e-03, + 2.353985397583118182e-03, + 2.353906625841084479e-03, + 2.353824034556744205e-03, + 2.353737624058808812e-03, + 2.353647394682225214e-03, + 2.353553346768088618e-03, + 2.353455480663705409e-03, + 2.353353796722551950e-03, + 2.353248295304300602e-03, + 2.353138976774812787e-03, + 2.353025841506116867e-03, + 2.352908889876426796e-03, + 2.352788122270147754e-03, + 2.352663539077854034e-03, + 2.352535140696313323e-03, + 2.352402927528457217e-03, + 2.352266899983399863e-03, + 2.352127058476435797e-03, + 2.351983403429026495e-03, + 2.351835935268815122e-03, + 2.351684654429614385e-03, + 2.351529561351420848e-03, + 2.351370656480382404e-03, + 2.351207940268830367e-03, + 2.351041413175261260e-03, + 2.350871075664348088e-03, + 2.350696928206913883e-03, + 2.350518971279970740e-03, + 2.350337205366670804e-03, + 2.350151630956343139e-03, + 2.349962248544491990e-03, + 2.349769058632758187e-03, + 2.349572061728959042e-03, + 2.349371258347062331e-03, + 2.349166649007205804e-03, + 2.348958234235675509e-03, + 2.348746014564914025e-03, + 2.348529990533525236e-03, + 2.348310162686254813e-03, + 2.348086531574008866e-03, + 2.347859097753846134e-03, + 2.347627861788971482e-03, + 2.347392824248733297e-03, + 2.347153985708648211e-03, + 2.346911346750353393e-03, + 2.346664907961642111e-03, + 2.346414669936455928e-03, + 2.346160633274869955e-03, + 2.345902798583104562e-03, + 2.345641166473522773e-03, + 2.345375737564627666e-03, + 2.345106512481042859e-03, + 2.344833491853550236e-03, + 2.344556676319055691e-03, + 2.344276066520594327e-03, + 2.343991663107343471e-03, + 2.343703466734595783e-03, + 2.343411478063790049e-03, + 2.343115697762490797e-03, + 2.342816126504365746e-03, + 2.342512764969240015e-03, + 2.342205613843034977e-03, + 2.341894673817825068e-03, + 2.341579945591768831e-03, + 2.341261429869159662e-03, + 2.340939127360429275e-03, + 2.340613038782097827e-03, + 2.340283164856798211e-03, + 2.339949506313298601e-03, + 2.339612063886473397e-03, + 2.339270838317285012e-03, + 2.338925830352837649e-03, + 2.338577040746315713e-03, + 2.338224470257038463e-03, + 2.337868119650390181e-03, + 2.337507989697888700e-03, + 2.337144081177145501e-03, + 2.336776394871871356e-03, + 2.336404931571844663e-03, + 2.336029692073013364e-03, + 2.335650677177340557e-03, + 2.335267887692932861e-03, + 2.334881324433968428e-03, + 2.334490988220716892e-03, + 2.334096879879546307e-03, + 2.333699000242887150e-03, + 2.333297350149282634e-03, + 2.332891930443353138e-03, + 2.332482741975777131e-03, + 2.332069785603341043e-03, + 2.331653062188913245e-03, + 2.331232572601396776e-03, + 2.330808317715803071e-03, + 2.330380298413233745e-03, + 2.329948515580814675e-03, + 2.329512970111763653e-03, + 2.329073662905388649e-03, + 2.328630594867017126e-03, + 2.328183766908084509e-03, + 2.327733179946049179e-03, + 2.327278834904475315e-03, + 2.326820732712955690e-03, + 2.326358874307127723e-03, + 2.325893260628715976e-03, + 2.325423892625487488e-03, + 2.324950771251243099e-03, + 2.324473897465852579e-03, + 2.323993272235248125e-03, + 2.323508896531359738e-03, + 2.323020771332198926e-03, + 2.322528897621809266e-03, + 2.322033276390291553e-03, + 2.321533908633751329e-03, + 2.321030795354333577e-03, + 2.320523937560266085e-03, + 2.320013336265754934e-03, + 2.319498992491036537e-03, + 2.318980907262439221e-03, + 2.318459081612238380e-03, + 2.317933516578792649e-03, + 2.317404213206436352e-03, + 2.316871172545563635e-03, + 2.316334395652576861e-03, + 2.315793883589868825e-03, + 2.315249637425878266e-03, + 2.314701658235063415e-03, + 2.314149947097842146e-03, + 2.313594505100689553e-03, + 2.313035333336082005e-03, + 2.312472432902470693e-03, + 2.311905804904332371e-03, + 2.311335450452151139e-03, + 2.310761370662369005e-03, + 2.310183566657480429e-03, + 2.309602039565920861e-03, + 2.309016790522146114e-03, + 2.308427820666617176e-03, + 2.307835131145729093e-03, + 2.307238723111897268e-03, + 2.306638597723546617e-03, + 2.306034756145014433e-03, + 2.305427199546673106e-03, + 2.304815929104857275e-03, + 2.304200946001852546e-03, + 2.303582251425942765e-03, + 2.302959846571386599e-03, + 2.302333732638371568e-03, + 2.301703910833086900e-03, + 2.301070382367662818e-03, + 2.300433148460226916e-03, + 2.299792210334824800e-03, + 2.299147569221435261e-03, + 2.298499226356082170e-03, + 2.297847182980659268e-03, + 2.297191440343027309e-03, + 2.296531999697007127e-03, + 2.295868862302370087e-03, + 2.295202029424799062e-03, + 2.294531502335942202e-03, + 2.293857282313378244e-03, + 2.293179370640634294e-03, + 2.292497768607131177e-03, + 2.291812477508253267e-03, + 2.291123498645325496e-03, + 2.290430833325552210e-03, + 2.289734482862066604e-03, + 2.289034448573992742e-03, + 2.288330731786272516e-03, + 2.287623333829846492e-03, + 2.286912256041509495e-03, + 2.286197499763995607e-03, + 2.285479066345949984e-03, + 2.284756957141901093e-03, + 2.284031173512299749e-03, + 2.283301716823507837e-03, + 2.282568588447750173e-03, + 2.281831789763163077e-03, + 2.281091322153804349e-03, + 2.280347187009569999e-03, + 2.279599385726279685e-03, + 2.278847919705645052e-03, + 2.278092790355221164e-03, + 2.277333999088475454e-03, + 2.276571547324761271e-03, + 2.275805436489263672e-03, + 2.275035668013091796e-03, + 2.274262243333152658e-03, + 2.273485163892334602e-03, + 2.272704431139290025e-03, + 2.271920046528544228e-03, + 2.271132011520523176e-03, + 2.270340327581508826e-03, + 2.269544996183578411e-03, + 2.268746018804718070e-03, + 2.267943396928756919e-03, + 2.267137132045328029e-03, + 2.266327225649947350e-03, + 2.265513679243962106e-03, + 2.264696494334572478e-03, + 2.263875672434774357e-03, + 2.263051215063379730e-03, + 2.262223123745141142e-03, + 2.261391400010528789e-03, + 2.260556045395848476e-03, + 2.259717061443261132e-03, + 2.258874449700744216e-03, + 2.258028211722091280e-03, + 2.257178349066864698e-03, + 2.256324863300478503e-03, + 2.255467755994163253e-03, + 2.254607028724909222e-03, + 2.253742683075532754e-03, + 2.252874720634673224e-03, + 2.252003142996727558e-03, + 2.251127951761849356e-03, + 2.250249148536111101e-03, + 2.249366734931233097e-03, + 2.248480712564786439e-03, + 2.247591083060142703e-03, + 2.246697848046382874e-03, + 2.245801009158436123e-03, + 2.244900568036925417e-03, + 2.243996526328314971e-03, + 2.243088885684822644e-03, + 2.242177647764365730e-03, + 2.241262814230704069e-03, + 2.240344386753333368e-03, + 2.239422367007438356e-03, + 2.238496756674045012e-03, + 2.237567557439883083e-03, + 2.236634770997415148e-03, + 2.235698399044876508e-03, + 2.234758443286241365e-03, + 2.233814905431168174e-03, + 2.232867787195128885e-03, + 2.231917090299218986e-03, + 2.230962816470409907e-03, + 2.230004967441260623e-03, + 2.229043544950088090e-03, + 2.228078550740956836e-03, + 2.227109986563651205e-03, + 2.226137854173589926e-03, + 2.225162155331984401e-03, + 2.224182891805712940e-03, + 2.223200065367385812e-03, + 2.222213677795240733e-03, + 2.221223730873279900e-03, + 2.220230226391198009e-03, + 2.219233166144309825e-03, + 2.218232551933680286e-03, + 2.217228385566057721e-03, + 2.216220668853836114e-03, + 2.215209403615047302e-03, + 2.214194591673538347e-03, + 2.213176234858663625e-03, + 2.212154335005563251e-03, + 2.211128893954938425e-03, + 2.210099913553235321e-03, + 2.209067395652544903e-03, + 2.208031342110538739e-03, + 2.206991754790616021e-03, + 2.205948635561822465e-03, + 2.204901986298767481e-03, + 2.203851808881774656e-03, + 2.202798105196817572e-03, + 2.201740877135404447e-03, + 2.200680126594775892e-03, + 2.199615855477769170e-03, + 2.198548065692792607e-03, + 2.197476759153966109e-03, + 2.196401937780928168e-03, + 2.195323603498995028e-03, + 2.194241758239103435e-03, + 2.193156403937691814e-03, + 2.192067542536983021e-03, + 2.190975175984628300e-03, + 2.189879306233928017e-03, + 2.188779935243803914e-03, + 2.187677064978768311e-03, + 2.186570697408853417e-03, + 2.185460834509740571e-03, + 2.184347478262698219e-03, + 2.183230630654481742e-03, + 2.182110293677496510e-03, + 2.180986469329699012e-03, + 2.179859159614626340e-03, + 2.178728366541325939e-03, + 2.177594092124382485e-03, + 2.176456338384084432e-03, + 2.175315107346113049e-03, + 2.174170401041725445e-03, + 2.173022221507771908e-03, + 2.171870570786614812e-03, + 2.170715450926179787e-03, + 2.169556863979847736e-03, + 2.168394812006612261e-03, + 2.167229297070967769e-03, + 2.166060321242874349e-03, + 2.164887886597885273e-03, + 2.163711995217057656e-03, + 2.162532649186919495e-03, + 2.161349850599463170e-03, + 2.160163601552348399e-03, + 2.158973904148565708e-03, + 2.157780760496697502e-03, + 2.156584172710751535e-03, + 2.155384142910275400e-03, + 2.154180673220310992e-03, + 2.152973765771300837e-03, + 2.151763422699240307e-03, + 2.150549646145601731e-03, + 2.149332438257248526e-03, + 2.148111801186584381e-03, + 2.146887737091476064e-03, + 2.145660248135174055e-03, + 2.144429336486447860e-03, + 2.143195004319538299e-03, + 2.141957253814032614e-03, + 2.140716087155057016e-03, + 2.139471506533170437e-03, + 2.138223514144281263e-03, + 2.136972112189842923e-03, + 2.135717302876594548e-03, + 2.134459088416900546e-03, + 2.133197471028368958e-03, + 2.131932452934059627e-03, + 2.130664036362494174e-03, + 2.129392223547606558e-03, + 2.128117016728639423e-03, + 2.126838418150347500e-03, + 2.125556430062810250e-03, + 2.124271054721566746e-03, + 2.122982294387437859e-03, + 2.121690151326733990e-03, + 2.120394627811114565e-03, + 2.119095726117592362e-03, + 2.117793448528496655e-03, + 2.116487797331715204e-03, + 2.115178774820318693e-03, + 2.113866383292770188e-03, + 2.112550625052954639e-03, + 2.111231502410057439e-03, + 2.109909017678669816e-03, + 2.108583173178617525e-03, + 2.107253971235171618e-03, + 2.105921414178927881e-03, + 2.104585504345724868e-03, + 2.103246244076835154e-03, + 2.101903635718830893e-03, + 2.100557681623530046e-03, + 2.099208384148159873e-03, + 2.097855745655241577e-03, + 2.096499768512539129e-03, + 2.095140455093185035e-03, + 2.093777807775625693e-03, + 2.092411828943512540e-03, + 2.091042520985904145e-03, + 2.089669886297024649e-03, + 2.088293927276481041e-03, + 2.086914646329142593e-03, + 2.085532045865078846e-03, + 2.084146128299710094e-03, + 2.082756896053731925e-03, + 2.081364351552997261e-03, + 2.079968497228720618e-03, + 2.078569335517367091e-03, + 2.077166868860549128e-03, + 2.075761099705234706e-03, + 2.074352030503590766e-03, + 2.072939663713045666e-03, + 2.071524001796213287e-03, + 2.070105047220891295e-03, + 2.068682802460297503e-03, + 2.067257269992679551e-03, + 2.065828452301491855e-03, + 2.064396351875595961e-03, + 2.062960971208873274e-03, + 2.061522312800437989e-03, + 2.060080379154651409e-03, + 2.058635172781061225e-03, + 2.057186696194414095e-03, + 2.055734951914567170e-03, + 2.054279942466629913e-03, + 2.052821670380907716e-03, + 2.051360138192772232e-03, + 2.049895348442856095e-03, + 2.048427303676967921e-03, + 2.046956006445963070e-03, + 2.045481459305959187e-03, + 2.044003664818216503e-03, + 2.042522625549051101e-03, + 2.041038344070040915e-03, + 2.039550822957777228e-03, + 2.038060064794075445e-03, + 2.036566072165886618e-03, + 2.035068847665174718e-03, + 2.033568393889136072e-03, + 2.032064713440067099e-03, + 2.030557808925281468e-03, + 2.029047682957293985e-03, + 2.027534338153739058e-03, + 2.026017777137209801e-03, + 2.024498002535526919e-03, + 2.022975016981576075e-03, + 2.021448823113236766e-03, + 2.019919423573595264e-03, + 2.018386821010647540e-03, + 2.016851018077688712e-03, + 2.015312017432881100e-03, + 2.013769821739442873e-03, + 2.012224433665858389e-03, + 2.010675855885441041e-03, + 2.009124091076603877e-03, + 2.007569141922856560e-03, + 2.006011011112757668e-03, + 2.004449701339785454e-03, + 2.002885215302550349e-03, + 2.001317555704649250e-03, + 1.999746725254745745e-03, + 1.998172726666388403e-03, + 1.996595562658258407e-03, + 1.995015235954039449e-03, + 1.993431749282337066e-03, + 1.991845105376721138e-03, + 1.990255306975960946e-03, + 1.988662356823604066e-03, + 1.987066257668205355e-03, + 1.985467012263379422e-03, + 1.983864623367665760e-03, + 1.982259093744606800e-03, + 1.980650426162610441e-03, + 1.979038623395128725e-03, + 1.977423688220593650e-03, + 1.975805623422249770e-03, + 1.974184431788411805e-03, + 1.972560116112315881e-03, + 1.970932679192043211e-03, + 1.969302123830694428e-03, + 1.967668452836299816e-03, + 1.966031669021703517e-03, + 1.964391775204801186e-03, + 1.962748774208261573e-03, + 1.961102668859758102e-03, + 1.959453461991869563e-03, + 1.957801156441957811e-03, + 1.956145755052377238e-03, + 1.954487260670383260e-03, + 1.952825676147985304e-03, + 1.951161004342189887e-03, + 1.949493248114856844e-03, + 1.947822410332630816e-03, + 1.946148493867093246e-03, + 1.944471501594704490e-03, + 1.942791436396650940e-03, + 1.941108301159091571e-03, + 1.939422098772974282e-03, + 1.937732832134120243e-03, + 1.936040504143117860e-03, + 1.934345117705333402e-03, + 1.932646675731188339e-03, + 1.930945181135680557e-03, + 1.929240636838673410e-03, + 1.927533045764903523e-03, + 1.925822410843904030e-03, + 1.924108735009898976e-03, + 1.922392021202009530e-03, + 1.920672272364113038e-03, + 1.918949491444894200e-03, + 1.917223681397713445e-03, + 1.915494845180804474e-03, + 1.913762985757170394e-03, + 1.912028106094506522e-03, + 1.910290209165212746e-03, + 1.908549297946676932e-03, + 1.906805375420760800e-03, + 1.905058444574223193e-03, + 1.903308508398558752e-03, + 1.901555569889864551e-03, + 1.899799632049142600e-03, + 1.898040697881932292e-03, + 1.896278770398622006e-03, + 1.894513852614304042e-03, + 1.892745947548657957e-03, + 1.890975058226180639e-03, + 1.889201187676063133e-03, + 1.887424338932070520e-03, + 1.885644515032760486e-03, + 1.883861719021385529e-03, + 1.882075953945736187e-03, + 1.880287222858404925e-03, + 1.878495528816629149e-03, + 1.876700874882213793e-03, + 1.874903264121741218e-03, + 1.873102699606270021e-03, + 1.871299184411765468e-03, + 1.869492721618594899e-03, + 1.867683314311797266e-03, + 1.865870965581115223e-03, + 1.864055678520917933e-03, + 1.862237456230069876e-03, + 1.860416301812158535e-03, + 1.858592218375389226e-03, + 1.856765209032436997e-03, + 1.854935276900700983e-03, + 1.853102425102120740e-03, + 1.851266656763260812e-03, + 1.849427975015195159e-03, + 1.847586382993519081e-03, + 1.845741883838647587e-03, + 1.843894480695309297e-03, + 1.842044176712793633e-03, + 1.840190975045189348e-03, + 1.838334878850836351e-03, + 1.836475891292834416e-03, + 1.834614015538639422e-03, + 1.832749254760381464e-03, + 1.830881612134695495e-03, + 1.829011090842630905e-03, + 1.827137694069866846e-03, + 1.825261425006583643e-03, + 1.823382286847358277e-03, + 1.821500282791379058e-03, + 1.819615416042333301e-03, + 1.817727689808264430e-03, + 1.815837107301833701e-03, + 1.813943671740163646e-03, + 1.812047386344735290e-03, + 1.810148254341658550e-03, + 1.808246278961337652e-03, + 1.806341463438758876e-03, + 1.804433811013348527e-03, + 1.802523324928862131e-03, + 1.800610008433616016e-03, + 1.798693864780353093e-03, + 1.796774897226124240e-03, + 1.794853109032533769e-03, + 1.792928503465588503e-03, + 1.791001083795588488e-03, + 1.789070853297363784e-03, + 1.787137815250146528e-03, + 1.785201972937425869e-03, + 1.783263329647264556e-03, + 1.781321888671884334e-03, + 1.779377653308189186e-03, + 1.777430626857193956e-03, + 1.775480812624278268e-03, + 1.773528213919451074e-03, + 1.771572834056803561e-03, + 1.769614676354833551e-03, + 1.767653744136454602e-03, + 1.765690040728929442e-03, + 1.763723569463719913e-03, + 1.761754333676745880e-03, + 1.759782336708204170e-03, + 1.757807581902648582e-03, + 1.755830072608820106e-03, + 1.753849812179880457e-03, + 1.751866803973303223e-03, + 1.749881051350766744e-03, + 1.747892557678186205e-03, + 1.745901326326024586e-03, + 1.743907360668714998e-03, + 1.741910664085179802e-03, + 1.739911239958426411e-03, + 1.737909091675860851e-03, + 1.735904222629133797e-03, + 1.733896636214016761e-03, + 1.731886335830651455e-03, + 1.729873324883418389e-03, + 1.727857606780797443e-03, + 1.725839184935616362e-03, + 1.723818062764934968e-03, + 1.721794243689880790e-03, + 1.719767731135930745e-03, + 1.717738528532757178e-03, + 1.715706639314097974e-03, + 1.713672066918007879e-03, + 1.711634814786736633e-03, + 1.709594886366570463e-03, + 1.707552285108148880e-03, + 1.705507014466049439e-03, + 1.703459077899334168e-03, + 1.701408478870936568e-03, + 1.699355220848003563e-03, + 1.697299307301898541e-03, + 1.695240741708125025e-03, + 1.693179527546185507e-03, + 1.691115668299845781e-03, + 1.689049167456990524e-03, + 1.686980028509478015e-03, + 1.684908254953412050e-03, + 1.682833850288953294e-03, + 1.680756818020412522e-03, + 1.678677161656084516e-03, + 1.676594884708315072e-03, + 1.674509990693793951e-03, + 1.672422483133019283e-03, + 1.670332365550585962e-03, + 1.668239641475256123e-03, + 1.666144314439799330e-03, + 1.664046387981063047e-03, + 1.661945865639825838e-03, + 1.659842750961019846e-03, + 1.657737047493614132e-03, + 1.655628758790471345e-03, + 1.653517888408605110e-03, + 1.651404439909041682e-03, + 1.649288416856723675e-03, + 1.647169822820545183e-03, + 1.645048661373680731e-03, + 1.642924936092957956e-03, + 1.640798650559382142e-03, + 1.638669808357936727e-03, + 1.636538413077432601e-03, + 1.634404468310824039e-03, + 1.632267977654852003e-03, + 1.630128944710338606e-03, + 1.627987373082064601e-03, + 1.625843266378597645e-03, + 1.623696628212585678e-03, + 1.621547462200613595e-03, + 1.619395771963034114e-03, + 1.617241561124269826e-03, + 1.615084833312642769e-03, + 1.612925592160242361e-03, + 1.610763841303198846e-03, + 1.608599584381538222e-03, + 1.606432825039017225e-03, + 1.604263566923479168e-03, + 1.602091813686384696e-03, + 1.599917568983413732e-03, + 1.597740836473808676e-03, + 1.595561619820716134e-03, + 1.593379922691235502e-03, + 1.591195748756299043e-03, + 1.589009101690544608e-03, + 1.586819985172566302e-03, + 1.584628402884749035e-03, + 1.582434358513344413e-03, + 1.580237855748259758e-03, + 1.578038898283366017e-03, + 1.575837489816319737e-03, + 1.573633634048492158e-03, + 1.571427334684978106e-03, + 1.569218595434947704e-03, + 1.567007420011060038e-03, + 1.564793812129742015e-03, + 1.562577775511465048e-03, + 1.560359313880126412e-03, + 1.558138430963613898e-03, + 1.555915130493364541e-03, + 1.553689416204689878e-03, + 1.551461291836652139e-03, + 1.549230761131871036e-03, + 1.546997827836843606e-03, + 1.544762495701778107e-03, + 1.542524768480436166e-03, + 1.540284649930428107e-03, + 1.538042143813068323e-03, + 1.535797253893194866e-03, + 1.533549983939480827e-03, + 1.531300337724280161e-03, + 1.529048319023453570e-03, + 1.526793931616736693e-03, + 1.524537179287306209e-03, + 1.522278065822153673e-03, + 1.520016595011899679e-03, + 1.517752770650660507e-03, + 1.515486596536323944e-03, + 1.513218076470411151e-03, + 1.510947214257908622e-03, + 1.508674013707556787e-03, + 1.506398478631708424e-03, + 1.504120612846160821e-03, + 1.501840420170454582e-03, + 1.499557904427713598e-03, + 1.497273069444496080e-03, + 1.494985919051075801e-03, + 1.492696457081253009e-03, + 1.490404687372424465e-03, + 1.488110613765453345e-03, + 1.485814240104687666e-03, + 1.483515570238329567e-03, + 1.481214608017804519e-03, + 1.478911357298118897e-03, + 1.476605821937903565e-03, + 1.474298005799250157e-03, + 1.471987912747816036e-03, + 1.469675546652595734e-03, + 1.467360911386242969e-03, + 1.465044010824898902e-03, + 1.462724848848029943e-03, + 1.460403429338735229e-03, + 1.458079756183582910e-03, + 1.455753833272501732e-03, + 1.453425664498824831e-03, + 1.451095253759639506e-03, + 1.448762604955129750e-03, + 1.446427721989157825e-03, + 1.444090608768826018e-03, + 1.441751269204800175e-03, + 1.439409707211175473e-03, + 1.437065926705296441e-03, + 1.434719931608072468e-03, + 1.432371725843804757e-03, + 1.430021313340033677e-03, + 1.427668698027839515e-03, + 1.425313883841683752e-03, + 1.422956874719238408e-03, + 1.420597674601698944e-03, + 1.418236287433619460e-03, + 1.415872717162750720e-03, + 1.413506967740343510e-03, + 1.411139043120988174e-03, + 1.408768947262454370e-03, + 1.406396684126033679e-03, + 1.404022257676090313e-03, + 1.401645671880657638e-03, + 1.399266930710765539e-03, + 1.396886038140792569e-03, + 1.394502998148518637e-03, + 1.392117814714999031e-03, + 1.389730491824424981e-03, + 1.387341033464409030e-03, + 1.384949443625781412e-03, + 1.382555726302675276e-03, + 1.380159885492326759e-03, + 1.377761925195381378e-03, + 1.375361849415708852e-03, + 1.372959662160317014e-03, + 1.370555367439381736e-03, + 1.368148969266622279e-03, + 1.365740471658643184e-03, + 1.363329878635313958e-03, + 1.360917194219808538e-03, + 1.358502422438438977e-03, + 1.356085567320755841e-03, + 1.353666632899330931e-03, + 1.351245623210072140e-03, + 1.348822542292044124e-03, + 1.346397394187312828e-03, + 1.343970182941260985e-03, + 1.341540912602416603e-03, + 1.339109587222278184e-03, + 1.336676210855645410e-03, + 1.334240787560439815e-03, + 1.331803321397540853e-03, + 1.329363816431095328e-03, + 1.326922276728367128e-03, + 1.324478706359545968e-03, + 1.322033109398135751e-03, + 1.319585489920499207e-03, + 1.317135852006252970e-03, + 1.314684199738069608e-03, + 1.312230537201540363e-03, + 1.309774868485458340e-03, + 1.307317197681679951e-03, + 1.304857528884941029e-03, + 1.302395866193172989e-03, + 1.299932213707341274e-03, + 1.297466575531266899e-03, + 1.294998955771960603e-03, + 1.292529358539373481e-03, + 1.290057787946530124e-03, + 1.287584248109326741e-03, + 1.285108743146609871e-03, + 1.282631277180523114e-03, + 1.280151854335859641e-03, + 1.277670478740449474e-03, + 1.275187154525176400e-03, + 1.272701885823884077e-03, + 1.270214676773210151e-03, + 1.267725531512883547e-03, + 1.265234454185522588e-03, + 1.262741448936723033e-03, + 1.260246519914839502e-03, + 1.257749671271298376e-03, + 1.255250907160449913e-03, + 1.252750231739355093e-03, + 1.250247649168150345e-03, + 1.247743163609855207e-03, + 1.245236779230201023e-03, + 1.242728500197954255e-03, + 1.240218330684750596e-03, + 1.237706274864920413e-03, + 1.235192336915859335e-03, + 1.232676521017590874e-03, + 1.230158831353146557e-03, + 1.227639272108378785e-03, + 1.225117847471808401e-03, + 1.222594561634927175e-03, + 1.220069418792047540e-03, + 1.217542423140113069e-03, + 1.215013578879029811e-03, + 1.212482890211495417e-03, + 1.209950361342819383e-03, + 1.207415996481255895e-03, + 1.204879799837825591e-03, + 1.202341775626144691e-03, + 1.199801928062804463e-03, + 1.197260261366862302e-03, + 1.194716779760510248e-03, + 1.192171487468344452e-03, + 1.189624388717668317e-03, + 1.187075487738862211e-03, + 1.184524788764665512e-03, + 1.181972296030585562e-03, + 1.179418013774940609e-03, + 1.176861946238737721e-03, + 1.174304097665501050e-03, + 1.171744472301600778e-03, + 1.169183074396019364e-03, + 1.166619908200454327e-03, + 1.164054977969097284e-03, + 1.161488287958958561e-03, + 1.158919842429680710e-03, + 1.156349645643432907e-03, + 1.153777701864961910e-03, + 1.151204015361962860e-03, + 1.148628590404411186e-03, + 1.146051431264948160e-03, + 1.143472542218918614e-03, + 1.140891927544213091e-03, + 1.138309591521357612e-03, + 1.135725538433287295e-03, + 1.133139772565675734e-03, + 1.130552298206768036e-03, + 1.127963119647190648e-03, + 1.125372241180288765e-03, + 1.122779667101952853e-03, + 1.120185401710435420e-03, + 1.117589449306692542e-03, + 1.114991814194197595e-03, + 1.112392500678768435e-03, + 1.109791513068957708e-03, + 1.107188855675589247e-03, + 1.104584532812152289e-03, + 1.101978548794621060e-03, + 1.099370907941276320e-03, + 1.096761614573041246e-03, + 1.094150673013304488e-03, + 1.091538087587738464e-03, + 1.088923862624637624e-03, + 1.086308002454741076e-03, + 1.083690511411048493e-03, + 1.081071393829160111e-03, + 1.078450654047101529e-03, + 1.075828296405134188e-03, + 1.073204325246103182e-03, + 1.070578744915191794e-03, + 1.067951559760042281e-03, + 1.065322774130555289e-03, + 1.062692392378952744e-03, + 1.060060418860187892e-03, + 1.057426857931212166e-03, + 1.054791713951406477e-03, + 1.052154991282605286e-03, + 1.049516694288995990e-03, + 1.046876827336919212e-03, + 1.044235394795217479e-03, + 1.041592401035000819e-03, + 1.038947850429745206e-03, + 1.036301747355061840e-03, + 1.033654096189032170e-03, + 1.031004901312032899e-03, + 1.028354167106605233e-03, + 1.025701897957509738e-03, + 1.023048098252129882e-03, + 1.020392772379698568e-03, + 1.017735924731997654e-03, + 1.015077559702825399e-03, + 1.012417681688392848e-03, + 1.009756295087150570e-03, + 1.007093404299591339e-03, + 1.004429013728608136e-03, + 1.001763127779304848e-03, + 9.990957508588171540e-04, + 9.964268873766447300e-04, + 9.937565417444853624e-04, + 9.910847183760421782e-04, + 9.884114216873679873e-04, + 9.857366560966861722e-04, + 9.830604260241994352e-04, + 9.803827358924482351e-04, + 9.777035901261084752e-04, + 9.750229931518326681e-04, + 9.723409493986258281e-04, + 9.696574632973354625e-04, + 9.669725392813258375e-04, + 9.642861817857297695e-04, + 9.615983952478349269e-04, + 9.589091841071393412e-04, + 9.562185528052348548e-04, + 9.535265057856134830e-04, + 9.508330474940178282e-04, + 9.481381823782568732e-04, + 9.454419148880184153e-04, + 9.427442494752234911e-04, + 9.400451905937749503e-04, + 9.373447426996694542e-04, + 9.346429102508157626e-04, + 9.319396977070846079e-04, + 9.292351095307188483e-04, + 9.265291501856131240e-04, + 9.238218241376553808e-04, + 9.211131358550868255e-04, + 9.184030898077210833e-04, + 9.156916904676417734e-04, + 9.129789423086634437e-04, + 9.102648498067455194e-04, + 9.075494174398032179e-04, + 9.048326496875191147e-04, + 9.021145510316943162e-04, + 8.993951259560672897e-04, + 8.966743789461202249e-04, + 8.939523144894311827e-04, + 8.912289370754961776e-04, + 8.885042511955267572e-04, + 8.857782613428201489e-04, + 8.830509720125536951e-04, + 8.803223877016092122e-04, + 8.775925129089906258e-04, + 8.748613521353133110e-04, + 8.721289098832427610e-04, + 8.693951906572979123e-04, + 8.666601989636531700e-04, + 8.639239393105073612e-04, + 8.611864162078880372e-04, + 8.584476341674615206e-04, + 8.557075977028937280e-04, + 8.529663113296529538e-04, + 8.502237795648329285e-04, + 8.474800069274930408e-04, + 8.447349979384850827e-04, + 8.419887571202558157e-04, + 8.392412889972609199e-04, + 8.364925980954154112e-04, + 8.337426889428222257e-04, + 8.309915660689588509e-04, + 8.282392340050473640e-04, + 8.254856972844067976e-04, + 8.227309604417172920e-04, + 8.199750280134392470e-04, + 8.172179045378637381e-04, + 8.144595945549823034e-04, + 8.117001026063057735e-04, + 8.089394332352121920e-04, + 8.061775909866969068e-04, + 8.034145804074967114e-04, + 8.006504060458230227e-04, + 7.978850724517365812e-04, + 7.951185841769431873e-04, + 7.923509457746715119e-04, + 7.895821617997275232e-04, + 7.868122368089082181e-04, + 7.840411753602059266e-04, + 7.812689820135334260e-04, + 7.784956613301619987e-04, + 7.757212178731456810e-04, + 7.729456562071315272e-04, + 7.701689808981629359e-04, + 7.673911965140479529e-04, + 7.646123076241573930e-04, + 7.618323187992423690e-04, + 7.590512346117921864e-04, + 7.562690596358420062e-04, + 7.534857984467767129e-04, + 7.507014556217011690e-04, + 7.479160357392424571e-04, + 7.451295433793599272e-04, + 7.423419831237059114e-04, + 7.395533595554288318e-04, + 7.367636772589928988e-04, + 7.339729408205905407e-04, + 7.311811548275812212e-04, + 7.283883238692370450e-04, + 7.255944525359111748e-04, + 7.227995454194815952e-04, + 7.200036071133943723e-04, + 7.172066422125409225e-04, + 7.144086553130541816e-04, + 7.116096510126825470e-04, + 7.088096339105917935e-04, + 7.060086086071690496e-04, + 7.032065797043952210e-04, + 7.004035518055791443e-04, + 6.975995295154849805e-04, + 6.947945174401306623e-04, + 6.919885201868419952e-04, + 6.891815423646860134e-04, + 6.863735885837146406e-04, + 6.835646634553899136e-04, + 6.807547715926417706e-04, + 6.779439176096737621e-04, + 6.751321061220761331e-04, + 6.723193417465733127e-04, + 6.695056291013918920e-04, + 6.666909728060582034e-04, + 6.638753774812134649e-04, + 6.610588477489699397e-04, + 6.582413882327275978e-04, + 6.554230035570285081e-04, + 6.526036983476288288e-04, + 6.497834772319108047e-04, + 6.469623448380731933e-04, + 6.441403057958086740e-04, + 6.413173647360485190e-04, + 6.384935262907607146e-04, + 6.356687950933886293e-04, + 6.328431757783367769e-04, + 6.300166729814041721e-04, + 6.271892913395893908e-04, + 6.243610354908930285e-04, + 6.215319100746834018e-04, + 6.187019197315123424e-04, + 6.158710691029041029e-04, + 6.130393628317350446e-04, + 6.102068055620353364e-04, + 6.073734019387877275e-04, + 6.045391566083073431e-04, + 6.017040742180329756e-04, + 5.988681594163410352e-04, + 5.960314168529728344e-04, + 5.931938511784635385e-04, + 5.903554670448873378e-04, + 5.875162691050333456e-04, + 5.846762620128372187e-04, + 5.818354504234373196e-04, + 5.789938389930420100e-04, + 5.761514323787304825e-04, + 5.733082352388271363e-04, + 5.704642522326398499e-04, + 5.676194880205733895e-04, + 5.647739472638801505e-04, + 5.619276346250214136e-04, + 5.590805547674760918e-04, + 5.562327123556044459e-04, + 5.533841120547020780e-04, + 5.505347585314388165e-04, + 5.476846564530926187e-04, + 5.448338104879126703e-04, + 5.419822253055035181e-04, + 5.391299055759863311e-04, + 5.362768559707542645e-04, + 5.334230811618920860e-04, + 5.305685858226170124e-04, + 5.277133746270774818e-04, + 5.248574522501556119e-04, + 5.220008233678358287e-04, + 5.191434926570196850e-04, + 5.162854647953130311e-04, + 5.134267444614073290e-04, + 5.105673363348808098e-04, + 5.077072450959989802e-04, + 5.048464754260894314e-04, + 5.019850320073394184e-04, + 4.991229195226046071e-04, + 4.962601426558405863e-04, + 4.933967060915890645e-04, + 4.905326145154137191e-04, + 4.876678726137049320e-04, + 4.848024850734781272e-04, + 4.819364565827477672e-04, + 4.790697918303332258e-04, + 4.762024955056531699e-04, + 4.733345722991058970e-04, + 4.704660269018666983e-04, + 4.675968640056928647e-04, + 4.647270883032973568e-04, + 4.618567044881432410e-04, + 4.589857172542550915e-04, + 4.561141312965901135e-04, + 4.532419513107677970e-04, + 4.503691819932050086e-04, + 4.474958280409025661e-04, + 4.446218941515077969e-04, + 4.417473850237562966e-04, + 4.388723053566918452e-04, + 4.359966598501083821e-04, + 4.331204532046094746e-04, + 4.302436901214042714e-04, + 4.273663753024299085e-04, + 4.244885134500862595e-04, + 4.216101092676175746e-04, + 4.187311674589021997e-04, + 4.158516927282660935e-04, + 4.129716897808483663e-04, + 4.100911633224071538e-04, + 4.072101180591819231e-04, + 4.043285586979514777e-04, + 4.014464899464728425e-04, + 3.985639165126399230e-04, + 3.956808431052492229e-04, + 3.927972744334105263e-04, + 3.899132152069891975e-04, + 3.870286701364092905e-04, + 3.841436439324487427e-04, + 3.812581413066187916e-04, + 3.783721669709645902e-04, + 3.754857256378653341e-04, + 3.725988220204074983e-04, + 3.697114608321907647e-04, + 3.668236467871208314e-04, + 3.639353845997963101e-04, + 3.610466789852971982e-04, + 3.581575346589941679e-04, + 3.552679563369184413e-04, + 3.523779487355693991e-04, + 3.494875165717069559e-04, + 3.465966645627974380e-04, + 3.437053974264281690e-04, + 3.408137198810673864e-04, + 3.379216366452233349e-04, + 3.350291524378879761e-04, + 3.321362719785906563e-04, + 3.292429999872640450e-04, + 3.263493411840422023e-04, + 3.234553002896396702e-04, + 3.205608820250842707e-04, + 3.176660911118419522e-04, + 3.147709322715487742e-04, + 3.118754102263906493e-04, + 3.089795296989007603e-04, + 3.060832954118265824e-04, + 3.031867120881817082e-04, + 3.002897844516941111e-04, + 2.973925172260228093e-04, + 2.944949151351991361e-04, + 2.915969829036890270e-04, + 2.886987252561860461e-04, + 2.858001469177373155e-04, + 2.829012526134736037e-04, + 2.800020470689940544e-04, + 2.771025350101579115e-04, + 2.742027211628903925e-04, + 2.713026102535576601e-04, + 2.684022070087674914e-04, + 2.655015161551650140e-04, + 2.626005424198174358e-04, + 2.596992905300079374e-04, + 2.567977652130373723e-04, + 2.538959711966016770e-04, + 2.509939132085917818e-04, + 2.480915959768928707e-04, + 2.451890242298267360e-04, + 2.422862026956292740e-04, + 2.393831361028929752e-04, + 2.364798291803683796e-04, + 2.335762866567594879e-04, + 2.306725132611059696e-04, + 2.277685137225802820e-04, + 2.248642927702853851e-04, + 2.219598551336381695e-04, + 2.190552055421646238e-04, + 2.161503487252984708e-04, + 2.132452894127637557e-04, + 2.103400323343055842e-04, + 2.074345822198144537e-04, + 2.045289437991215284e-04, + 2.016231218020591112e-04, + 1.987171209589024283e-04, + 1.958109459995877575e-04, + 1.929046016541581163e-04, + 1.899980926528169569e-04, + 1.870914237257954871e-04, + 1.841845996031470512e-04, + 1.812776250151303418e-04, + 1.783705046919416282e-04, + 1.754632433638364313e-04, + 1.725558457608630271e-04, + 1.696483166132441937e-04, + 1.667406606511744114e-04, + 1.638328826046167651e-04, + 1.609249872036863172e-04, + 1.580169791784463869e-04, + 1.551088632587069153e-04, + 1.522006441744053998e-04, + 1.492923266554053682e-04, + 1.463839154312942560e-04, + 1.434754152318281468e-04, + 1.405668307864069632e-04, + 1.376581668245199666e-04, + 1.347494280755442302e-04, + 1.318406192685405928e-04, + 1.289317451326375472e-04, + 1.260228103968276273e-04, + 1.231138197897650147e-04, + 1.202047780401473267e-04, + 1.172956898765133724e-04, + 1.143865600270415581e-04, + 1.114773932199296841e-04, + 1.085681941831947734e-04, + 1.056589676444689844e-04, + 1.027497183314470610e-04, + 9.984045097135936975e-05, + 9.693117029141861839e-05, + 9.402188101861697425e-05, + 9.111258787945954044e-05, + 8.820329560067000877e-05, + 8.529400890833910027e-05, + 8.238473252837244911e-05, + 7.947547118654634413e-05, + 7.656622960837082125e-05, + 7.365701251888777141e-05, + 7.074782464305218676e-05, + 6.783867070546460666e-05, + 6.492955543049393067e-05, + 6.202048354200986457e-05, + 5.911145976376470858e-05, + 5.620248881919062515e-05, + 5.329357543126282616e-05, + 5.038472432255637834e-05, + 4.747594021569284038e-05, + 4.456722783255402659e-05, + 4.165859189472854914e-05, + 3.875003712356905715e-05, + 3.584156823998987034e-05, + 3.293318996458905346e-05, + 3.002490701738135353e-05, + 2.711672411817992034e-05, + 2.420864598639370295e-05, + 2.130067734082541540e-05, + 1.839282290005319617e-05, + 1.548508738222807585e-05, + 1.257747550487185815e-05, + 9.669991985258903028e-06, + 6.762641540213464770e-06, + 3.855428885907813523e-06, + 9.483587383084252677e-07, +-1.958564187350404379e-06, +-4.865335176120316312e-06, +-7.771949513541027480e-06, +-1.067840248584244343e-05, +-1.358468937956340253e-05, +-1.649080548175369375e-05, +-1.939674608017616042e-05, +-2.230250646292548288e-05, +-2.520808191863015011e-05, +-2.811346773665472271e-05, +-3.101865920671829203e-05, +-3.392365161909683628e-05, +-3.682844026482517356e-05, +-3.973302043531550903e-05, +-4.263738742262470092e-05, +-4.554153651933196928e-05, +-4.844546301874101159e-05, +-5.134916221482259429e-05, +-5.425262940176929803e-05, +-5.715585987477962623e-05, +-6.005884892961308239e-05, +-6.296159186253236857e-05, +-6.586408397044034725e-05, +-6.876632055108309878e-05, +-7.166829690266764532e-05, +-7.457000832412930826e-05, +-7.747145011500976264e-05, +-8.037261757572299189e-05, +-8.327350600717585774e-05, +-8.617411071096800002e-05, +-8.907442698953070938e-05, +-9.197445014606844816e-05, +-9.487417548411435455e-05, +-9.777359830837830561e-05, +-1.006727139239786922e-04, +-1.035715176370321708e-04, +-1.064700047542077853e-04, +-1.093681705829295639e-04, +-1.122660104315775841e-04, +-1.151635196091074450e-04, +-1.180606934252525933e-04, +-1.209575271907244664e-04, +-1.238540162168333338e-04, +-1.267501558156902295e-04, +-1.296459413004061745e-04, +-1.325413679847152265e-04, +-1.354364311831725363e-04, +-1.383311262113587207e-04, +-1.412254483854981141e-04, +-1.441193930226595632e-04, +-1.470129554409604195e-04, +-1.499061309591187639e-04, +-1.527989148970448929e-04, +-1.556913025750716710e-04, +-1.585832893148037589e-04, +-1.614748704386714372e-04, +-1.643660412698737673e-04, +-1.672567971325169081e-04, +-1.701471333518136638e-04, +-1.730370452537038234e-04, +-1.759265281650567705e-04, +-1.788155774138700015e-04, +-1.817041883288930692e-04, +-1.845923562398893100e-04, +-1.874800764775179905e-04, +-1.903673443735327440e-04, +-1.932541552607257068e-04, +-1.961405044724836731e-04, +-1.990263873435683679e-04, +-2.019117992097399581e-04, +-2.047967354073731094e-04, +-2.076811912743075153e-04, +-2.105651621490776807e-04, +-2.134486433715042451e-04, +-2.163316302822469392e-04, +-2.192141182230083335e-04, +-2.220961025367329251e-04, +-2.249775785672279921e-04, +-2.278585416593657429e-04, +-2.307389871592832977e-04, +-2.336189104140020518e-04, +-2.364983067716323461e-04, +-2.393771715815706021e-04, +-2.422555001941215048e-04, +-2.451332879606999619e-04, +-2.480105302340291067e-04, +-2.508872223677001390e-04, +-2.537633597166922541e-04, +-2.566389376369315354e-04, +-2.595139514854901222e-04, +-2.623883966207873832e-04, +-2.652622684022119641e-04, +-2.681355621903203047e-04, +-2.710082733470384089e-04, +-2.738803972352851931e-04, +-2.767519292191693769e-04, +-2.796228646641902779e-04, +-2.824931989368642494e-04, +-2.853629274049191322e-04, +-2.882320454374973800e-04, +-2.911005484047131625e-04, +-2.939684316782378349e-04, +-2.968356906305380689e-04, +-2.997023206357161637e-04, +-3.025683170691330142e-04, +-3.054336753070303759e-04, +-3.082983907273096464e-04, +-3.111624587090869093e-04, +-3.140258746326404587e-04, +-3.168886338795438309e-04, +-3.197507318328657853e-04, +-3.226121638767935986e-04, +-3.254729253968979895e-04, +-3.283330117800095736e-04, +-3.311924184144844933e-04, +-3.340511406898278202e-04, +-3.369091739968925600e-04, +-3.397665137280152323e-04, +-3.426231552769573780e-04, +-3.454790940384685170e-04, +-3.483343254091238032e-04, +-3.511888447865611253e-04, +-3.540426475700695036e-04, +-3.568957291601433201e-04, +-3.597480849586871788e-04, +-3.625997103692082967e-04, +-3.654506007964466834e-04, +-3.683007516465719769e-04, +-3.711501583273794144e-04, +-3.739988162479204433e-04, +-3.768467208186954392e-04, +-3.796938674518559632e-04, +-3.825402515608279479e-04, +-3.853858685605128704e-04, +-3.882307138674819880e-04, +-3.910747828995422772e-04, +-3.939180710762493699e-04, +-3.967605738184713251e-04, +-3.996022865485893139e-04, +-4.024432046907542508e-04, +-4.052833236701972410e-04, +-4.081226389140627355e-04, +-4.109611458509744705e-04, +-4.137988399109742105e-04, +-4.166357165256593872e-04, +-4.194717711283773350e-04, +-4.223069991538587757e-04, +-4.251413960384088555e-04, +-4.279749572201036020e-04, +-4.308076781384254702e-04, +-4.336395542345167740e-04, +-4.364705809510627016e-04, +-4.393007537324873386e-04, +-4.421300680249001629e-04, +-4.449585192756586776e-04, +-4.477861029341330444e-04, +-4.506128144512768483e-04, +-4.534386492795629124e-04, +-4.562636028731869111e-04, +-4.590876706879467532e-04, +-4.619108481814968264e-04, +-4.647331308129872300e-04, +-4.675545140432505820e-04, +-4.703749933350033019e-04, +-4.731945641524743797e-04, +-4.760132219616010742e-04, +-4.788309622301589090e-04, +-4.816477804277147267e-04, +-4.844636720251815692e-04, +-4.872786324956562788e-04, +-4.900926573137239818e-04, +-4.929057419557249112e-04, +-4.957178818999449007e-04, +-4.985290726261849565e-04, +-5.013393096162732177e-04, +-5.041485883536275889e-04, +-5.069569043234544749e-04, +-5.097642530129464300e-04, +-5.125706299109075671e-04, +-5.153760305079521827e-04, +-5.181804502967020821e-04, +-5.209838847714118792e-04, +-5.237863294281712000e-04, +-5.265877797650945265e-04, +-5.293882312819549532e-04, +-5.321876794803764160e-04, +-5.349861198640354625e-04, +-5.377835479382230173e-04, +-5.405799592104184670e-04, +-5.433753491895444883e-04, +-5.461697133867893066e-04, +-5.489630473151761595e-04, +-5.517553464895045331e-04, +-5.545466064264848198e-04, +-5.573368226449348841e-04, +-5.601259906654082899e-04, +-5.629141060104559183e-04, +-5.657011642045034526e-04, +-5.684871607741121295e-04, +-5.712720912476087001e-04, +-5.740559511552803702e-04, +-5.768387360295089156e-04, +-5.796204414047159302e-04, +-5.824010628169241574e-04, +-5.851805958045298763e-04, +-5.879590359079176843e-04, +-5.907363786691067218e-04, +-5.935126196325608968e-04, +-5.962877543444566148e-04, +-5.990617783532365889e-04, +-6.018346872091944822e-04, +-6.046064764646631251e-04, +-6.073771416742067449e-04, +-6.101466783942594918e-04, +-6.129150821833159344e-04, +-6.156823486021210110e-04, +-6.184484732133152789e-04, +-6.212134515816171692e-04, +-6.239772792740222625e-04, +-6.267399518594373711e-04, +-6.295014649088715754e-04, +-6.322618139956284527e-04, +-6.350209946948864913e-04, +-6.377790025841925106e-04, +-6.405358332430430507e-04, +-6.432914822530718313e-04, +-6.460459451982429558e-04, +-6.487992176644908487e-04, +-6.515512952399097734e-04, +-6.543021735149432425e-04, +-6.570518480820293755e-04, +-6.598003145357804423e-04, +-6.625475684731915726e-04, +-6.652936054932611764e-04, +-6.680384211971926054e-04, +-6.707820111885825880e-04, +-6.735243710729995822e-04, +-6.762654964585426828e-04, +-6.790053829551095672e-04, +-6.817440261752096475e-04, +-6.844814217335901292e-04, +-6.872175652468848379e-04, +-6.899524523343553801e-04, +-6.926860786174661357e-04, +-6.954184397198324335e-04, +-6.981495312674094187e-04, +-7.008793488883797301e-04, +-7.036078882134013486e-04, +-7.063351448752492679e-04, +-7.090611145090073989e-04, +-7.117857927522580879e-04, +-7.145091752447190175e-04, +-7.172312576284403142e-04, +-7.199520355479284732e-04, +-7.226715046500897625e-04, +-7.253896605838193110e-04, +-7.281064990007906235e-04, +-7.308220155547408758e-04, +-7.335362059020170264e-04, +-7.362490657011631695e-04, +-7.389605906131031148e-04, +-7.416707763013423741e-04, +-7.443796184315912929e-04, +-7.470871126719744095e-04, +-7.497932546932080475e-04, +-7.524980401682403609e-04, +-7.552014647724487667e-04, +-7.579035241838288136e-04, +-7.606042140826256613e-04, +-7.633035301515366097e-04, +-7.660014680758917265e-04, +-7.686980235433022411e-04, +-7.713931922438387869e-04, +-7.740869698702379422e-04, +-7.767793521174665974e-04, +-7.794703346832860657e-04, +-7.821599132675284864e-04, +-7.848480835728868831e-04, +-7.875348413045052268e-04, +-7.902201821699202143e-04, +-7.929041018791944083e-04, +-7.955865961450915525e-04, +-7.982676606827380844e-04, +-8.009472912098606831e-04, +-8.036254834466716700e-04, +-8.063022331161236872e-04, +-8.089775359435527786e-04, +-8.116513876568604274e-04, +-8.143237839866494061e-04, +-8.169947206661587252e-04, +-8.196641934308671398e-04, +-8.223321980192035193e-04, +-8.249987301721399460e-04, +-8.276637856331454197e-04, +-8.303273601483579210e-04, +-8.329894494664848810e-04, +-8.356500493390424649e-04, +-8.383091555200057002e-04, +-8.409667637659931161e-04, +-8.436228698364564788e-04, +-8.462774694933186681e-04, +-8.489305585011749054e-04, +-8.515821326274685028e-04, +-8.542321876421394731e-04, +-8.568807193178176263e-04, +-8.595277234299995113e-04, +-8.621731957566955082e-04, +-8.648171320786364772e-04, +-8.674595281794287996e-04, +-8.701003798451669921e-04, +-8.727396828649056602e-04, +-8.753774330302530309e-04, +-8.780136261355563510e-04, +-8.806482579780873943e-04, +-8.832813243576910717e-04, +-8.859128210769676853e-04, +-8.885427439414678684e-04, +-8.911710887593306783e-04, +-8.937978513414746333e-04, +-8.964230275017835443e-04, +-8.990466130567516560e-04, +-9.016686038257330131e-04, +-9.042889956308311971e-04, +-9.069077842970716058e-04, +-9.095249656523683853e-04, +-9.121405355270951944e-04, +-9.147544897548205104e-04, +-9.173668241718863081e-04, +-9.199775346173650172e-04, +-9.225866169331791095e-04, +-9.251940669642892082e-04, +-9.277998805583398791e-04, +-9.304040535659050936e-04, +-9.330065818403852299e-04, +-9.356074612382363816e-04, +-9.382066876186277498e-04, +-9.408042568436300775e-04, +-9.434001647783369715e-04, +-9.459944072908091752e-04, +-9.485869802516727622e-04, +-9.511778795348881620e-04, +-9.537671010171136238e-04, +-9.563546405779473200e-04, +-9.589404941000960469e-04, +-9.615246574689970561e-04, +-9.641071265732675637e-04, +-9.666878973043192087e-04, +-9.692669655565309831e-04, +-9.718443272274314860e-04, +-9.744199782173609782e-04, +-9.769939144296476731e-04, +-9.795661317707868472e-04, +-9.821366261501083151e-04, +-9.847053934799465408e-04, +-9.872724296758274461e-04, +-9.898377306561201641e-04, +-9.924012923422321965e-04, +-9.949631106587677066e-04, +-9.975231815331480484e-04, +-1.000081500896070601e-03, +-1.002638064681117156e-03, +-1.005192868824929340e-03, +-1.007745909267381435e-03, +-1.010297181951261411e-03, +-1.012846682822426611e-03, +-1.015394407829994577e-03, +-1.017940352926010195e-03, +-1.020484514065613316e-03, +-1.023026887207218946e-03, +-1.025567468312186571e-03, +-1.028106253345046966e-03, +-1.030643238273405487e-03, +-1.033178419068160213e-03, +-1.035711791703186006e-03, +-1.038243352155495628e-03, +-1.040773096405369627e-03, +-1.043301020436296486e-03, +-1.045827120234591205e-03, +-1.048351391790083766e-03, +-1.050873831095712127e-03, +-1.053394434147490125e-03, +-1.055913196944677050e-03, +-1.058430115489667703e-03, +-1.060945185788230273e-03, +-1.063458403849172184e-03, +-1.065969765684506845e-03, +-1.068479267309645339e-03, +-1.070986904743054897e-03, +-1.073492674006431939e-03, +-1.075996571124884869e-03, +-1.078498592126596670e-03, +-1.080998733043001415e-03, +-1.083496989908961424e-03, +-1.085993358762376735e-03, +-1.088487835644646974e-03, +-1.090980416600271282e-03, +-1.093471097677040007e-03, +-1.095959874926199281e-03, +-1.098446744402121643e-03, +-1.100931702162479290e-03, +-1.103414744268424712e-03, +-1.105895866784255450e-03, +-1.108375065777587355e-03, +-1.110852337319528276e-03, +-1.113327677484360822e-03, +-1.115801082349701526e-03, +-1.118272547996675614e-03, +-1.120742070509596518e-03, +-1.123209645976191821e-03, +-1.125675270487497661e-03, +-1.128138940138027858e-03, +-1.130600651025729471e-03, +-1.133060399251601584e-03, +-1.135518180920366002e-03, +-1.137973992140073679e-03, +-1.140427829022074143e-03, +-1.142879687681126744e-03, +-1.145329564235563055e-03, +-1.147777454806970295e-03, +-1.150223355520416839e-03, +-1.152667262504349218e-03, +-1.155109171890814817e-03, +-1.157549079815133140e-03, +-1.159986982416091189e-03, +-1.162422875836024994e-03, +-1.164856756220792721e-03, +-1.167288619719398027e-03, +-1.169718462484691749e-03, +-1.172146280672733965e-03, +-1.174572070443300094e-03, +-1.176995827959481482e-03, +-1.179417549387873181e-03, +-1.181837230898739616e-03, +-1.184254868665686293e-03, +-1.186670458865847575e-03, +-1.189083997680030237e-03, +-1.191495481292411188e-03, +-1.193904905890704219e-03, +-1.196312267666331530e-03, +-1.198717562814083934e-03, +-1.201120787532322307e-03, +-1.203521938023114192e-03, +-1.205921010491943024e-03, +-1.208318001147851237e-03, +-1.210712906203625233e-03, +-1.213105721875420680e-03, +-1.215496444383246284e-03, +-1.217885069950329748e-03, +-1.220271594803821634e-03, +-1.222656015174433024e-03, +-1.225038327296368301e-03, +-1.227418527407452865e-03, +-1.229796611749304656e-03, +-1.232172576567005205e-03, +-1.234546418109269857e-03, +-1.236918132628624274e-03, +-1.239287716381071809e-03, +-1.241655165626335058e-03, +-1.244020476627729016e-03, +-1.246383645652351891e-03, +-1.248744668971022440e-03, +-1.251103542857916109e-03, +-1.253460263591214255e-03, +-1.255814827452733347e-03, +-1.258167230727869675e-03, +-1.260517469705792117e-03, +-1.262865540679302062e-03, +-1.265211439945088199e-03, +-1.267555163803392362e-03, +-1.269896708558179970e-03, +-1.272236070517301790e-03, +-1.274573245992194261e-03, +-1.276908231298033236e-03, +-1.279241022753890540e-03, +-1.281571616682445789e-03, +-1.283900009410130372e-03, +-1.286226197267297889e-03, +-1.288550176587917534e-03, +-1.290871943709734565e-03, +-1.293191494974431626e-03, +-1.295508826727269011e-03, +-1.297823935317515311e-03, +-1.300136817098073794e-03, +-1.302447468425655883e-03, +-1.304755885660940527e-03, +-1.307062065168267811e-03, +-1.309366003315799417e-03, +-1.311667696475681032e-03, +-1.313967141023727938e-03, +-1.316264333339608019e-03, +-1.318559269806982926e-03, +-1.320851946813208838e-03, +-1.323142360749494754e-03, +-1.325430508011075969e-03, +-1.327716384996841968e-03, +-1.329999988109815436e-03, +-1.332281313756536207e-03, +-1.334560358347737377e-03, +-1.336837118298040208e-03, +-1.339111590025659658e-03, +-1.341383769953017170e-03, +-1.343653654506387230e-03, +-1.345921240115851170e-03, +-1.348186523215420991e-03, +-1.350449500243177487e-03, +-1.352710167640969706e-03, +-1.354968521854651737e-03, +-1.357224559333953043e-03, +-1.359478276532701587e-03, +-1.361729669908533702e-03, +-1.363978735923036551e-03, +-1.366225471041860456e-03, +-1.368469871734680730e-03, +-1.370711934474833169e-03, +-1.372951655739992330e-03, +-1.375189032011571747e-03, +-1.377424059775166727e-03, +-1.379656735520219538e-03, +-1.381887055740181613e-03, +-1.384115016932647773e-03, +-1.386340615599084957e-03, +-1.388563848244979025e-03, +-1.390784711379982209e-03, +-1.393003201517630353e-03, +-1.395219315175493836e-03, +-1.397433048875326321e-03, +-1.399644399142786332e-03, +-1.401853362507576905e-03, +-1.404059935503609293e-03, +-1.406264114668651262e-03, +-1.408465896544744498e-03, +-1.410665277677847261e-03, +-1.412862254617998966e-03, +-1.415056823919522491e-03, +-1.417248982140476661e-03, +-1.419438725843312618e-03, +-1.421626051594535338e-03, +-1.423810955964649634e-03, +-1.425993435528275519e-03, +-1.428173486864294569e-03, +-1.430351106555560661e-03, +-1.432526291189052626e-03, +-1.434699037356026692e-03, +-1.436869341651734154e-03, +-1.439037200675614362e-03, +-1.441202611031203000e-03, +-1.443365569326287776e-03, +-1.445526072172862450e-03, +-1.447684116186791388e-03, +-1.449839697988402395e-03, +-1.451992814202144547e-03, +-1.454143461456551111e-03, +-1.456291636384383524e-03, +-1.458437335622552681e-03, +-1.460580555812304986e-03, +-1.462721293598935688e-03, +-1.464859545631955629e-03, +-1.466995308565230026e-03, +-1.469128579056680310e-03, +-1.471259353768472351e-03, +-1.473387629367074346e-03, +-1.475513402523248368e-03, +-1.477636669911688025e-03, +-1.479757428211682857e-03, +-1.481875674106565175e-03, +-1.483991404283924523e-03, +-1.486104615435753385e-03, +-1.488215304258107621e-03, +-1.490323467451509353e-03, +-1.492429101720599803e-03, +-1.494532203774312550e-03, +-1.496632770325998646e-03, +-1.498730798093152964e-03, +-1.500826283797566203e-03, +-1.502919224165470387e-03, +-1.505009615927256975e-03, +-1.507097455817629295e-03, +-1.509182740575737208e-03, +-1.511265466944919280e-03, +-1.513345631672830070e-03, +-1.515423231511598421e-03, +-1.517498263217493962e-03, +-1.519570723551363607e-03, +-1.521640609278070372e-03, +-1.523707917167105514e-03, +-1.525772643992265440e-03, +-1.527834786531615929e-03, +-1.529894341567584722e-03, +-1.531951305887112877e-03, +-1.534005676281364854e-03, +-1.536057449545945135e-03, +-1.538106622480783520e-03, +-1.540153191890341559e-03, +-1.542197154583338893e-03, +-1.544238507372895294e-03, +-1.546277247076615008e-03, +-1.548313370516570713e-03, +-1.550346874518972618e-03, +-1.552377755914708399e-03, +-1.554406011539110743e-03, +-1.556431638231650519e-03, +-1.558454632836559764e-03, +-1.560474992202276348e-03, +-1.562492713181868774e-03, +-1.564507792632711123e-03, +-1.566520227416637670e-03, +-1.568530014400067781e-03, +-1.570537150453752426e-03, +-1.572541632452914909e-03, +-1.574543457277372948e-03, +-1.576542621811299503e-03, +-1.578539122943344638e-03, +-1.580532957566781888e-03, +-1.582524122579235257e-03, +-1.584512614882833828e-03, +-1.586498431384332324e-03, +-1.588481568994827694e-03, +-1.590462024630095008e-03, +-1.592439795210290375e-03, +-1.594414877660092116e-03, +-1.596387268908845605e-03, +-1.598356965890282248e-03, +-1.600323965542671707e-03, +-1.602288264808960239e-03, +-1.604249860636499216e-03, +-1.606208749977189971e-03, +-1.608164929787619978e-03, +-1.610118397028806325e-03, +-1.612069148666329726e-03, +-1.614017181670466573e-03, +-1.615962493015887748e-03, +-1.617905079682069097e-03, +-1.619844938652753672e-03, +-1.621782066916537196e-03, +-1.623716461466607423e-03, +-1.625648119300479588e-03, +-1.627577037420536348e-03, +-1.629503212833731136e-03, +-1.631426642551519644e-03, +-1.633347323590026573e-03, +-1.635265252969956510e-03, +-1.637180427716761980e-03, +-1.639092844860385841e-03, +-1.641002501435420875e-03, +-1.642909394481216912e-03, +-1.644813521041634712e-03, +-1.646714878165185178e-03, +-1.648613462905116744e-03, +-1.650509272319368968e-03, +-1.652402303470295198e-03, +-1.654292553425209871e-03, +-1.656180019255869837e-03, +-1.658064698038898060e-03, +-1.659946586855452072e-03, +-1.661825682791378146e-03, +-1.663701982937334893e-03, +-1.665575484388546286e-03, +-1.667446184244936961e-03, +-1.669314079611247366e-03, +-1.671179167596805425e-03, +-1.673041445315649267e-03, +-1.674900909886656037e-03, +-1.676757558433291436e-03, +-1.678611388083742217e-03, +-1.680462395971055395e-03, +-1.682310579232886493e-03, +-1.684155935011616640e-03, +-1.685998460454492427e-03, +-1.687838152713353563e-03, +-1.689675008944981115e-03, +-1.691509026310630001e-03, +-1.693340201976549627e-03, +-1.695168533113726060e-03, +-1.696994016897816759e-03, +-1.698816650509252495e-03, +-1.700636431133374388e-03, +-1.702453355960161559e-03, +-1.704267422184429972e-03, +-1.706078627005745913e-03, +-1.707886967628581901e-03, +-1.709692441262081848e-03, +-1.711495045120208945e-03, +-1.713294776421792932e-03, +-1.715091632390535956e-03, +-1.716885610254680799e-03, +-1.718676707247561442e-03, +-1.720464920607277150e-03, +-1.722250247576677515e-03, +-1.724032685403484094e-03, +-1.725812231340213007e-03, +-1.727588882644344286e-03, +-1.729362636578072069e-03, +-1.731133490408439269e-03, +-1.732901441407471354e-03, +-1.734666486851926988e-03, +-1.736428624023418155e-03, +-1.738187850208548942e-03, +-1.739944162698662047e-03, +-1.741697558789988189e-03, +-1.743448035783741077e-03, +-1.745195590985903610e-03, +-1.746940221707346270e-03, +-1.748681925263934891e-03, +-1.750420698976284765e-03, +-1.752156540170065517e-03, +-1.753889446175720731e-03, +-1.755619414328606510e-03, +-1.757346441969108138e-03, +-1.759070526442401772e-03, +-1.760791665098586714e-03, +-1.762509855292802288e-03, +-1.764225094384991701e-03, +-1.765937379740026075e-03, +-1.767646708727834554e-03, +-1.769353078723173581e-03, +-1.771056487105765248e-03, +-1.772756931260248718e-03, +-1.774454408576292769e-03, +-1.776148916448546788e-03, +-1.777840452276402243e-03, +-1.779529013464436560e-03, +-1.781214597422151828e-03, +-1.782897201563948342e-03, +-1.784576823309196167e-03, +-1.786253460082370004e-03, +-1.787927109312793979e-03, +-1.789597768434829416e-03, +-1.791265434887780953e-03, +-1.792930106116069795e-03, +-1.794591779568994322e-03, +-1.796250452700856723e-03, +-1.797906122971037373e-03, +-1.799558787843970548e-03, +-1.801208444788867302e-03, +-1.802855091280228510e-03, +-1.804498724797416612e-03, +-1.806139342824830815e-03, +-1.807776942851996435e-03, +-1.809411522373335262e-03, +-1.811043078888445717e-03, +-1.812671609901855873e-03, +-1.814297112923135774e-03, +-1.815919585467027329e-03, +-1.817539025053189735e-03, +-1.819155429206355387e-03, +-1.820768795456417267e-03, +-1.822379121338228150e-03, +-1.823986404391698827e-03, +-1.825590642161926047e-03, +-1.827191832198965049e-03, +-1.828789972057956632e-03, +-1.830385059299223863e-03, +-1.831977091488031168e-03, +-1.833566066194879888e-03, +-1.835151980995255441e-03, +-1.836734833469731189e-03, +-1.838314621204100059e-03, +-1.839891341789141009e-03, +-1.841464992820743491e-03, +-1.843035571900014571e-03, +-1.844603076633069029e-03, +-1.846167504631136694e-03, +-1.847728853510681273e-03, +-1.849287120893182207e-03, +-1.850842304405280825e-03, +-1.852394401678712039e-03, +-1.853943410350464369e-03, +-1.855489328062547060e-03, +-1.857032152462122568e-03, +-1.858571881201566845e-03, +-1.860108511938434427e-03, +-1.861642042335234651e-03, +-1.863172470059836936e-03, +-1.864699792785235073e-03, +-1.866224008189527059e-03, +-1.867745113955995981e-03, +-1.869263107773077486e-03, +-1.870777987334477964e-03, +-1.872289750338985460e-03, +-1.873798394490565084e-03, +-1.875303917498462010e-03, +-1.876806317077019332e-03, +-1.878305590945768483e-03, +-1.879801736829539612e-03, +-1.881294752458256229e-03, +-1.882784635567047752e-03, +-1.884271383896346649e-03, +-1.885754995191659886e-03, +-1.887235467203855809e-03, +-1.888712797688893745e-03, +-1.890186984407967764e-03, +-1.891658025127594938e-03, +-1.893125917619412155e-03, +-1.894590659660293219e-03, +-1.896052249032437100e-03, +-1.897510683523177767e-03, +-1.898965960925096943e-03, +-1.900418079036115615e-03, +-1.901867035659298008e-03, +-1.903312828602961738e-03, +-1.904755455680774093e-03, +-1.906194914711559045e-03, +-1.907631203519433421e-03, +-1.909064319933740555e-03, +-1.910494261789165427e-03, +-1.911921026925681106e-03, +-1.913344613188340797e-03, +-1.914765018427680736e-03, +-1.916182240499464525e-03, +-1.917596277264682495e-03, +-1.919007126589615227e-03, +-1.920414786345914660e-03, +-1.921819254410441456e-03, +-1.923220528665373205e-03, +-1.924618606998159970e-03, +-1.926013487301642037e-03, +-1.927405167473870582e-03, +-1.928793645418214794e-03, +-1.930178919043398517e-03, +-1.931560986263502859e-03, +-1.932939844997733731e-03, +-1.934315493170837971e-03, +-1.935687928712725818e-03, +-1.937057149558764086e-03, +-1.938423153649545443e-03, +-1.939785938931002903e-03, +-1.941145503354493960e-03, +-1.942501844876625815e-03, +-1.943854961459342114e-03, +-1.945204851070025075e-03, +-1.946551511681304672e-03, +-1.947894941271181802e-03, +-1.949235137823075335e-03, +-1.950572099325694614e-03, +-1.951905823773085209e-03, +-1.953236309164768127e-03, +-1.954563553505513432e-03, +-1.955887554805490949e-03, +-1.957208311080303222e-03, +-1.958525820350821151e-03, +-1.959840080643443765e-03, +-1.961151089989732633e-03, +-1.962458846426810410e-03, +-1.963763347997180431e-03, +-1.965064592748637807e-03, +-1.966362578734389983e-03, +-1.967657304013133070e-03, +-1.968948766648857557e-03, +-1.970236964710969738e-03, +-1.971521896274349827e-03, +-1.972803559419208843e-03, +-1.974081952231187490e-03, +-1.975357072801319294e-03, +-1.976628919226105195e-03, +-1.977897489607485359e-03, +-1.979162782052662668e-03, +-1.980424794674417142e-03, +-1.981683525590939837e-03, +-1.982938972925784270e-03, +-1.984191134807972677e-03, +-1.985440009371924885e-03, +-1.986685594757589719e-03, +-1.987927889110263722e-03, +-1.989166890580689601e-03, +-1.990402597325132555e-03, +-1.991635007505244536e-03, +-1.992864119288088529e-03, +-1.994089930846302920e-03, +-1.995312440357872516e-03, +-1.996531646006255174e-03, +-1.997747545980448156e-03, +-1.998960138474825936e-03, +-2.000169421689235172e-03, +-2.001375393829071033e-03, +-2.002578053105095925e-03, +-2.003777397733646787e-03, +-2.004973425936461186e-03, +-2.006166135940753211e-03, +-2.007355525979313219e-03, +-2.008541594290317884e-03, +-2.009724339117438183e-03, +-2.010903758709917891e-03, +-2.012079851322413557e-03, +-2.013252615215066921e-03, +-2.014422048653613777e-03, +-2.015588149909193581e-03, +-2.016750917258457870e-03, +-2.017910348983648332e-03, +-2.019066443372391668e-03, +-2.020219198717971947e-03, +-2.021368613318991463e-03, +-2.022514685479738939e-03, +-2.023657413510004770e-03, +-2.024796795724946585e-03, +-2.025932830445412343e-03, +-2.027065515997733894e-03, +-2.028194850713731321e-03, +-2.029320832930740261e-03, +-2.030443460991727261e-03, +-2.031562733245091158e-03, +-2.032678648044811826e-03, +-2.033791203750380788e-03, +-2.034900398726897496e-03, +-2.036006231344941395e-03, +-2.037108699980631332e-03, +-2.038207803015683241e-03, +-2.039303538837406241e-03, +-2.040395905838487955e-03, +-2.041484902417367488e-03, +-2.042570526977902350e-03, +-2.043652777929623899e-03, +-2.044731653687539147e-03, +-2.045807152672239615e-03, +-2.046879273309929956e-03, +-2.047948014032332110e-03, +-2.049013373276739082e-03, +-2.050075349486078693e-03, +-2.051133941108789979e-03, +-2.052189146598893451e-03, +-2.053240964416062214e-03, +-2.054289393025474086e-03, +-2.055334430897901802e-03, +-2.056376076509763753e-03, +-2.057414328342989547e-03, +-2.058449184885182207e-03, +-2.059480644629475051e-03, +-2.060508706074596751e-03, +-2.061533367724965871e-03, +-2.062554628090440198e-03, +-2.063572485686614253e-03, +-2.064586939034671401e-03, +-2.065597986661361300e-03, +-2.066605627099021587e-03, +-2.067609858885689766e-03, +-2.068610680564945785e-03, +-2.069608090685967974e-03, +-2.070602087803640173e-03, +-2.071592670478395598e-03, +-2.072579837276294478e-03, +-2.073563586769015376e-03, +-2.074543917533901161e-03, +-2.075520828153943394e-03, +-2.076494317217637050e-03, +-2.077464383319228142e-03, +-2.078431025058583188e-03, +-2.079394241041164493e-03, +-2.080354029878089123e-03, +-2.081310390186084675e-03, +-2.082263320587595095e-03, +-2.083212819710638861e-03, +-2.084158886188883144e-03, +-2.085101518661699755e-03, +-2.086040715774059758e-03, +-2.086976476176567296e-03, +-2.087908798525530286e-03, +-2.088837681482933958e-03, +-2.089763123716298614e-03, +-2.090685123898942867e-03, +-2.091603680709739049e-03, +-2.092518792833310964e-03, +-2.093430458959881241e-03, +-2.094338677785346353e-03, +-2.095243448011316519e-03, +-2.096144768345032435e-03, +-2.097042637499380458e-03, +-2.097937054193003623e-03, +-2.098828017150152891e-03, +-2.099715525100739628e-03, +-2.100599576780447491e-03, +-2.101480170930549417e-03, +-2.102357306298004765e-03, +-2.103230981635546056e-03, +-2.104101195701498124e-03, +-2.104967947259880033e-03, +-2.105831235080471431e-03, +-2.106691057938662494e-03, +-2.107547414615619594e-03, +-2.108400303898077133e-03, +-2.109249724578578667e-03, +-2.110095675455359379e-03, +-2.110938155332291438e-03, +-2.111777163018969429e-03, +-2.112612697330730309e-03, +-2.113444757088572303e-03, +-2.114273341119206080e-03, +-2.115098448255050417e-03, +-2.115920077334259523e-03, +-2.116738227200679664e-03, +-2.117552896703823583e-03, +-2.118364084699002337e-03, +-2.119171790047225546e-03, +-2.119976011615131144e-03, +-2.120776748275168388e-03, +-2.121573998905517192e-03, +-2.122367762389967567e-03, +-2.123158037618156409e-03, +-2.123944823485367141e-03, +-2.124728118892664150e-03, +-2.125507922746793909e-03, +-2.126284233960229215e-03, +-2.127057051451232937e-03, +-2.127826374143742226e-03, +-2.128592200967420554e-03, +-2.129354530857737078e-03, +-2.130113362755827432e-03, +-2.130868695608570482e-03, +-2.131620528368642978e-03, +-2.132368859994402017e-03, +-2.133113689449942299e-03, +-2.133855015705177650e-03, +-2.134592837735661049e-03, +-2.135327154522790628e-03, +-2.136057965053649640e-03, +-2.136785268321070210e-03, +-2.137509063323679310e-03, +-2.138229349065819389e-03, +-2.138946124557570064e-03, +-2.139659388814824006e-03, +-2.140369140859186767e-03, +-2.141075379718000195e-03, +-2.141778104424430472e-03, +-2.142477314017346250e-03, +-2.143173007541381535e-03, +-2.143865184046972981e-03, +-2.144553842590262750e-03, +-2.145238982233241623e-03, +-2.145920602043537365e-03, +-2.146598701094657585e-03, +-2.147273278465867876e-03, +-2.147944333242118517e-03, +-2.148611864514204505e-03, +-2.149275871378696166e-03, +-2.149936352937901855e-03, +-2.150593308299908295e-03, +-2.151246736578574063e-03, +-2.151896636893568197e-03, +-2.152543008370309038e-03, +-2.153185850139975079e-03, +-2.153825161339575651e-03, +-2.154460941111858985e-03, +-2.155093188605354711e-03, +-2.155721902974405083e-03, +-2.156347083379138527e-03, +-2.156968728985400683e-03, +-2.157586838964910096e-03, +-2.158201412495105997e-03, +-2.158812448759275804e-03, +-2.159419946946447132e-03, +-2.160023906251442877e-03, +-2.160624325874912870e-03, +-2.161221205023261017e-03, +-2.161814542908687808e-03, +-2.162404338749218061e-03, +-2.162990591768648892e-03, +-2.163573301196558378e-03, +-2.164152466268363245e-03, +-2.164728086225246439e-03, +-2.165300160314183146e-03, +-2.165868687787991537e-03, +-2.166433667905231283e-03, +-2.166995099930319781e-03, +-2.167552983133440650e-03, +-2.168107316790583196e-03, +-2.168658100183586644e-03, +-2.169205332600005701e-03, +-2.169749013333274919e-03, +-2.170289141682636268e-03, +-2.170825716953097943e-03, +-2.171358738455492470e-03, +-2.171888205506482348e-03, +-2.172414117428513210e-03, +-2.172936473549861094e-03, +-2.173455273204579104e-03, +-2.173970515732585439e-03, +-2.174482200479584907e-03, +-2.174990326797074554e-03, +-2.175494894042402649e-03, +-2.175995901578740930e-03, +-2.176493348775006970e-03, +-2.176987235006015101e-03, +-2.177477559652369297e-03, +-2.177964322100475313e-03, +-2.178447521742579718e-03, +-2.178927157976721755e-03, +-2.179403230206807939e-03, +-2.179875737842520977e-03, +-2.180344680299380923e-03, +-2.180810056998746908e-03, +-2.181271867367777246e-03, +-2.181730110839450246e-03, +-2.182184786852606282e-03, +-2.182635894851870165e-03, +-2.183083434287710987e-03, +-2.183527404616428247e-03, +-2.183967805300137972e-03, +-2.184404635806768812e-03, +-2.184837895610132301e-03, +-2.185267584189791879e-03, +-2.185693701031215120e-03, +-2.186116245625644924e-03, +-2.186535217470167609e-03, +-2.186950616067723317e-03, +-2.187362440927060041e-03, +-2.187770691562748813e-03, +-2.188175367495232698e-03, +-2.188576468250743971e-03, +-2.188973993361366128e-03, +-2.189367942365027381e-03, +-2.189758314805469435e-03, +-2.190145110232283050e-03, +-2.190528328200876378e-03, +-2.190907968272511400e-03, +-2.191284030014308253e-03, +-2.191656512999143325e-03, +-2.192025416805805805e-03, +-2.192390741018910953e-03, +-2.192752485228873210e-03, +-2.193110649031973849e-03, +-2.193465232030338431e-03, +-2.193816233831911208e-03, +-2.194163654050475080e-03, +-2.194507492305660702e-03, +-2.194847748222956887e-03, +-2.195184421433655532e-03, +-2.195517511574898457e-03, +-2.195847018289686942e-03, +-2.196172941226860482e-03, +-2.196495280041059050e-03, +-2.196814034392824584e-03, +-2.197129203948489529e-03, +-2.197440788380244925e-03, +-2.197748787366152548e-03, +-2.198053200590055576e-03, +-2.198354027741698715e-03, +-2.198651268516644934e-03, +-2.198944922616273730e-03, +-2.199234989747858322e-03, +-2.199521469624484554e-03, +-2.199804361965077351e-03, +-2.200083666494419363e-03, +-2.200359382943125816e-03, +-2.200631511047669228e-03, +-2.200900050550349922e-03, +-2.201165001199325948e-03, +-2.201426362748583592e-03, +-2.201684134957970339e-03, +-2.201938317593161911e-03, +-2.202188910425693490e-03, +-2.202435913232937172e-03, +-2.202679325798098057e-03, +-2.202919147910250251e-03, +-2.203155379364292194e-03, +-2.203388019960967909e-03, +-2.203617069506890857e-03, +-2.203842527814473245e-03, +-2.204064394702012764e-03, +-2.204282669993639678e-03, +-2.204497353519322897e-03, +-2.204708445114869544e-03, +-2.204915944621945768e-03, +-2.205119851888052030e-03, +-2.205320166766560827e-03, +-2.205516889116636032e-03, +-2.205710018803327000e-03, +-2.205899555697529105e-03, +-2.206085499675941673e-03, +-2.206267850621149943e-03, +-2.206446608421570865e-03, +-2.206621772971456130e-03, +-2.206793344170905179e-03, +-2.206961321925861742e-03, +-2.207125706148122066e-03, +-2.207286496755307172e-03, +-2.207443693670890165e-03, +-2.207597296824191039e-03, +-2.207747306150370601e-03, +-2.207893721590423967e-03, +-2.208036543091208750e-03, +-2.208175770605393454e-03, +-2.208311404091511249e-03, +-2.208443443513933950e-03, +-2.208571888842868116e-03, +-2.208696740054366323e-03, +-2.208817997130318924e-03, +-2.208935660058456655e-03, +-2.209049728832361038e-03, +-2.209160203451435329e-03, +-2.209267083920930536e-03, +-2.209370370251943685e-03, +-2.209470062461403941e-03, +-2.209566160572076516e-03, +-2.209658664612570468e-03, +-2.209747574617336972e-03, +-2.209832890626647200e-03, +-2.209914612686630486e-03, +-2.209992740849238326e-03, +-2.210067275172275178e-03, +-2.210138215719354652e-03, +-2.210205562559949388e-03, +-2.210269315769367634e-03, +-2.210329475428732867e-03, +-2.210386041625014147e-03, +-2.210439014451027855e-03, +-2.210488394005404728e-03, +-2.210534180392618921e-03, +-2.210576373722965022e-03, +-2.210614974112582766e-03, +-2.210649981683441862e-03, +-2.210681396563337221e-03, +-2.210709218885902397e-03, +-2.210733448790590944e-03, +-2.210754086422690289e-03, +-2.210771131933322170e-03, +-2.210784585479429621e-03, +-2.210794447223787818e-03, +-2.210800717335000606e-03, +-2.210803395987498768e-03, +-2.210802483361524410e-03, +-2.210797979643167824e-03, +-2.210789885024334097e-03, +-2.210778199702749611e-03, +-2.210762923881966387e-03, +-2.210744057771363378e-03, +-2.210721601586146043e-03, +-2.210695555547325091e-03, +-2.210665919881745108e-03, +-2.210632694822073710e-03, +-2.210595880606792876e-03, +-2.210555477480201109e-03, +-2.210511485692420817e-03, +-2.210463905499392232e-03, +-2.210412737162865612e-03, +-2.210357980950418150e-03, +-2.210299637135432725e-03, +-2.210237705997116116e-03, +-2.210172187820483823e-03, +-2.210103082896365274e-03, +-2.210030391521396881e-03, +-2.209954113998042428e-03, +-2.209874250634566179e-03, +-2.209790801745033749e-03, +-2.209703767649343325e-03, +-2.209613148673181867e-03, +-2.209518945148049827e-03, +-2.209421157411261584e-03, +-2.209319785805920287e-03, +-2.209214830680952986e-03, +-2.209106292391088081e-03, +-2.208994171296843612e-03, +-2.208878467764556312e-03, +-2.208759182166357762e-03, +-2.208636314880178721e-03, +-2.208509866289748696e-03, +-2.208379836784607649e-03, +-2.208246226760076508e-03, +-2.208109036617291430e-03, +-2.207968266763165634e-03, +-2.207823917610423660e-03, +-2.207675989577578823e-03, +-2.207524483088930175e-03, +-2.207369398574578114e-03, +-2.207210736470413548e-03, +-2.207048497218115288e-03, +-2.206882681265159591e-03, +-2.206713289064792406e-03, +-2.206540321076057125e-03, +-2.206363777763793721e-03, +-2.206183659598612290e-03, +-2.205999967056914302e-03, +-2.205812700620876556e-03, +-2.205621860778473296e-03, +-2.205427448023439350e-03, +-2.205229462855302219e-03, +-2.205027905779371241e-03, +-2.204822777306726309e-03, +-2.204614077954220042e-03, +-2.204401808244477786e-03, +-2.204185968705926670e-03, +-2.203966559872729686e-03, +-2.203743582284840765e-03, +-2.203517036487992204e-03, +-2.203286923033655632e-03, +-2.203053242479109664e-03, +-2.202815995387364442e-03, +-2.202575182327226686e-03, +-2.202330803873245486e-03, +-2.202082860605734417e-03, +-2.201831353110788019e-03, +-2.201576281980244069e-03, +-2.201317647811702229e-03, +-2.201055451208527077e-03, +-2.200789692779840309e-03, +-2.200520373140498614e-03, +-2.200247492911144853e-03, +-2.199971052718160784e-03, +-2.199691053193678341e-03, +-2.199407494975572259e-03, +-2.199120378707485664e-03, +-2.198829705038797544e-03, +-2.198535474624628821e-03, +-2.198237688125847557e-03, +-2.197936346209091070e-03, +-2.197631449546694812e-03, +-2.197322998816773464e-03, +-2.197010994703153287e-03, +-2.196695437895418088e-03, +-2.196376329088890137e-03, +-2.196053668984603718e-03, +-2.195727458289345891e-03, +-2.195397697715640879e-03, +-2.195064387981727084e-03, +-2.194727529811582242e-03, +-2.194387123934913881e-03, +-2.194043171087148476e-03, +-2.193695672009438394e-03, +-2.193344627448679234e-03, +-2.192990038157457359e-03, +-2.192631904894104533e-03, +-2.192270228422656293e-03, +-2.191905009512865390e-03, +-2.191536248940229546e-03, +-2.191163947485911222e-03, +-2.190788105936831293e-03, +-2.190408725085606165e-03, +-2.190025805730537369e-03, +-2.189639348675670536e-03, +-2.189249354730748998e-03, +-2.188855824711202942e-03, +-2.188458759438184111e-03, +-2.188058159738549314e-03, +-2.187654026444830514e-03, +-2.187246360395284257e-03, +-2.186835162433844407e-03, +-2.186420433410171150e-03, +-2.186002174179576835e-03, +-2.185580385603072377e-03, +-2.185155068547407591e-03, +-2.184726223884964937e-03, +-2.184293852493817637e-03, +-2.183857955257753961e-03, +-2.183418533066233420e-03, +-2.182975586814387206e-03, +-2.182529117403038139e-03, +-2.182079125738673343e-03, +-2.181625612733479377e-03, +-2.181168579305283687e-03, +-2.180708026377609250e-03, +-2.180243954879657227e-03, +-2.179776365746284410e-03, +-2.179305259917988045e-03, +-2.178830638340996471e-03, +-2.178352501967144219e-03, +-2.177870851753957449e-03, +-2.177385688664599736e-03, +-2.176897013667908071e-03, +-2.176404827738390255e-03, +-2.175909131856161149e-03, +-2.175409927007042419e-03, +-2.174907214182475370e-03, +-2.174400994379540892e-03, +-2.173891268600998492e-03, +-2.173378037855239024e-03, +-2.172861303156272111e-03, +-2.172341065523783390e-03, +-2.171817325983092448e-03, +-2.171290085565124196e-03, +-2.170759345306465683e-03, +-2.170225106249351783e-03, +-2.169687369441603616e-03, +-2.169146135936712242e-03, +-2.168601406793764941e-03, +-2.168053183077514167e-03, +-2.167501465858292543e-03, +-2.166946256212068378e-03, +-2.166387555220434386e-03, +-2.165825363970614193e-03, +-2.165259683555405528e-03, +-2.164690515073255678e-03, +-2.164117859628214655e-03, +-2.163541718329940397e-03, +-2.162962092293674917e-03, +-2.162378982640299815e-03, +-2.161792390496289004e-03, +-2.161202316993695270e-03, +-2.160608763270169350e-03, +-2.160011730469020650e-03, +-2.159411219739072827e-03, +-2.158807232234760069e-03, +-2.158199769116160051e-03, +-2.157588831548868172e-03, +-2.156974420704116380e-03, +-2.156356537758663018e-03, +-2.155735183894906017e-03, +-2.155110360300805696e-03, +-2.154482068169867853e-03, +-2.153850308701204044e-03, +-2.153215083099504264e-03, +-2.152576392574981866e-03, +-2.151934238343467670e-03, +-2.151288621626349252e-03, +-2.150639543650539279e-03, +-2.149987005648549242e-03, +-2.149331008858451283e-03, +-2.148671554523836572e-03, +-2.148008643893895529e-03, +-2.147342278223321552e-03, +-2.146672458772398186e-03, +-2.145999186806954451e-03, +-2.145322463598324948e-03, +-2.144642290423417509e-03, +-2.143958668564685446e-03, +-2.143271599310090248e-03, +-2.142581083953151895e-03, +-2.141887123792933674e-03, +-2.141189720133980165e-03, +-2.140488874286412217e-03, +-2.139784587565867098e-03, +-2.139076861293478550e-03, +-2.138365696795937500e-03, +-2.137651095405397952e-03, +-2.136933058459618805e-03, +-2.136211587301792107e-03, +-2.135486683280614188e-03, +-2.134758347750393640e-03, +-2.134026582070831877e-03, +-2.133291387607164948e-03, +-2.132552765730157032e-03, +-2.131810717816054902e-03, +-2.131065245246607006e-03, +-2.130316349409027473e-03, +-2.129564031696048153e-03, +-2.128808293505903438e-03, +-2.128049136242258273e-03, +-2.127286561314307035e-03, +-2.126520570136734064e-03, +-2.125751164129658592e-03, +-2.124978344718663360e-03, +-2.124202113334899139e-03, +-2.123422471414880899e-03, +-2.122639420400659546e-03, +-2.121852961739694420e-03, +-2.121063096884954341e-03, +-2.120269827294860802e-03, +-2.119473154433261074e-03, +-2.118673079769481122e-03, +-2.117869604778318225e-03, +-2.117062730939960318e-03, +-2.116252459740085735e-03, +-2.115438792669840223e-03, +-2.114621731225724624e-03, +-2.113801276909756197e-03, +-2.112977431229375817e-03, +-2.112150195697406769e-03, +-2.111319571832173583e-03, +-2.110485561157358914e-03, +-2.109648165202112832e-03, +-2.108807385501028538e-03, +-2.107963223594014855e-03, +-2.107115681026548639e-03, +-2.106264759349411094e-03, +-2.105410460118790558e-03, +-2.104552784896337580e-03, +-2.103691735249110274e-03, +-2.102827312749490623e-03, +-2.101959518975345369e-03, +-2.101088355509898083e-03, +-2.100213823941790743e-03, +-2.099335925864998301e-03, +-2.098454662878944908e-03, +-2.097570036588435830e-03, +-2.096682048603615810e-03, +-2.095790700539997692e-03, +-2.094895994018580818e-03, +-2.093997930665629850e-03, +-2.093096512112779285e-03, +-2.092191739997095474e-03, +-2.091283615960971235e-03, +-2.090372141652187873e-03, +-2.089457318723827138e-03, +-2.088539148834382252e-03, +-2.087617633647700227e-03, +-2.086692774832920715e-03, +-2.085764574064588334e-03, +-2.084833033022585012e-03, +-2.083898153392084885e-03, +-2.082959936863649705e-03, +-2.082018385133183307e-03, +-2.081073499901857013e-03, +-2.080125282876231496e-03, +-2.079173735768193899e-03, +-2.078218860294892781e-03, +-2.077260658178876895e-03, +-2.076299131147925619e-03, +-2.075334280935205947e-03, +-2.074366109279178819e-03, +-2.073394617923557046e-03, +-2.072419808617431084e-03, +-2.071441683115173623e-03, +-2.070460243176400553e-03, +-2.069475490566088927e-03, +-2.068487427054498898e-03, +-2.067496054417120813e-03, +-2.066501374434797506e-03, +-2.065503388893624552e-03, +-2.064502099585003615e-03, +-2.063497508305560911e-03, +-2.062489616857183638e-03, +-2.061478427047158321e-03, +-2.060463940687898027e-03, +-2.059446159597102394e-03, +-2.058425085597782346e-03, +-2.057400720518195048e-03, +-2.056373066191797064e-03, +-2.055342124457343669e-03, +-2.054307897158835512e-03, +-2.053270386145515571e-03, +-2.052229593271821025e-03, +-2.051185520397481692e-03, +-2.050138169387466687e-03, +-2.049087542111919374e-03, +-2.048033640446199864e-03, +-2.046976466271025960e-03, +-2.045916021472165246e-03, +-2.044852307940711773e-03, +-2.043785327572951189e-03, +-2.042715082270335145e-03, +-2.041641573939595358e-03, +-2.040564804492577943e-03, +-2.039484775846405178e-03, +-2.038401489923397005e-03, +-2.037314948650982560e-03, +-2.036225153961871478e-03, +-2.035132107793936797e-03, +-2.034035812090186340e-03, +-2.032936268798866790e-03, +-2.031833479873404284e-03, +-2.030727447272317240e-03, +-2.029618172959379418e-03, +-2.028505658903526684e-03, +-2.027389907078774606e-03, +-2.026270919464407978e-03, +-2.025148698044763971e-03, +-2.024023244809404314e-03, +-2.022894561753040693e-03, +-2.021762650875452358e-03, +-2.020627514181641375e-03, +-2.019489153681745027e-03, +-2.018347571390956014e-03, +-2.017202769329673809e-03, +-2.016054749523429196e-03, +-2.014903514002804041e-03, +-2.013749064803568335e-03, +-2.012591403966583047e-03, +-2.011430533537856506e-03, +-2.010266455568447252e-03, +-2.009099172114504808e-03, +-2.007928685237417125e-03, +-2.006754997003528697e-03, +-2.005578109484279330e-03, +-2.004398024756358972e-03, +-2.003214744901369877e-03, +-2.002028272006049943e-03, +-2.000838608162260578e-03, +-1.999645755466902992e-03, +-1.998449716021990195e-03, +-1.997250491934518188e-03, +-1.996048085316639437e-03, +-1.994842498285558791e-03, +-1.993633732963458888e-03, +-1.992421791477662785e-03, +-1.991206675960542887e-03, +-1.989988388549431171e-03, +-1.988766931386790060e-03, +-1.987542306620136527e-03, +-1.986314516401911992e-03, +-1.985083562889721712e-03, +-1.983849448246081081e-03, +-1.982612174638615984e-03, +-1.981371744239969566e-03, +-1.980128159227719387e-03, +-1.978881421784550471e-03, +-1.977631534098139073e-03, +-1.976378498361104977e-03, +-1.975122316771127720e-03, +-1.973862991530907132e-03, +-1.972600524848041898e-03, +-1.971334918935214748e-03, +-1.970066176010087065e-03, +-1.968794298295216492e-03, +-1.967519288018228230e-03, +-1.966241147411700550e-03, +-1.964959878713193851e-03, +-1.963675484165197747e-03, +-1.962387966015131935e-03, +-1.961097326515535717e-03, +-1.959803567923744470e-03, +-1.958506692502067891e-03, +-1.957206702517822524e-03, +-1.955903600243267138e-03, +-1.954597387955519464e-03, +-1.953288067936707114e-03, +-1.951975642473878676e-03, +-1.950660113859019763e-03, +-1.949341484388970392e-03, +-1.948019756365566802e-03, +-1.946694932095559922e-03, +-1.945367013890567662e-03, +-1.944036004067071013e-03, +-1.942701904946640213e-03, +-1.941364718855533586e-03, +-1.940024448125057940e-03, +-1.938681095091290135e-03, +-1.937334662095282654e-03, +-1.935985151482981200e-03, +-1.934632565605109772e-03, +-1.933276906817360617e-03, +-1.931918177480304024e-03, +-1.930556379959272100e-03, +-1.929191516624573655e-03, +-1.927823589851354776e-03, +-1.926452602019540711e-03, +-1.925078555513993084e-03, +-1.923701452724410794e-03, +-1.922321296045268867e-03, +-1.920938087875942706e-03, +-1.919551830620667976e-03, +-1.918162526688402909e-03, +-1.916770178493056422e-03, +-1.915374788453206006e-03, +-1.913976358992475028e-03, +-1.912574892539093850e-03, +-1.911170391526150489e-03, +-1.909762858391590191e-03, +-1.908352295578163603e-03, +-1.906938705533330058e-03, +-1.905522090709416963e-03, +-1.904102453563565143e-03, +-1.902679796557582483e-03, +-1.901254122158161199e-03, +-1.899825432836736673e-03, +-1.898393731069552290e-03, +-1.896959019337545382e-03, +-1.895521300126393844e-03, +-1.894080575926716933e-03, +-1.892636849233700347e-03, +-1.891190122547310899e-03, +-1.889740398372326876e-03, +-1.888287679218230049e-03, +-1.886831967599279618e-03, +-1.885373266034366278e-03, +-1.883911577047199136e-03, +-1.882446903166228513e-03, +-1.880979246924510424e-03, +-1.879508610859918424e-03, +-1.878034997515042569e-03, +-1.876558409437108525e-03, +-1.875078849178014873e-03, +-1.873596319294542787e-03, +-1.872110822347950333e-03, +-1.870622360904315934e-03, +-1.869130937534399170e-03, +-1.867636554813535167e-03, +-1.866139215321870526e-03, +-1.864638921644096387e-03, +-1.863135676369667660e-03, +-1.861629482092690699e-03, +-1.860120341411845889e-03, +-1.858608256930554615e-03, +-1.857093231256900763e-03, +-1.855575267003489563e-03, +-1.854054366787694997e-03, +-1.852530533231502158e-03, +-1.851003768961444152e-03, +-1.849474076608771233e-03, +-1.847941458809356039e-03, +-1.846405918203593201e-03, +-1.844867457436620301e-03, +-1.843326079158014077e-03, +-1.841781786022195265e-03, +-1.840234580687981260e-03, +-1.838684465818814446e-03, +-1.837131444082791684e-03, +-1.835575518152607506e-03, +-1.834016690705422272e-03, +-1.832454964423088119e-03, +-1.830890341992012131e-03, +-1.829322826103082188e-03, +-1.827752419451847150e-03, +-1.826179124738372449e-03, +-1.824602944667315547e-03, +-1.823023881947785207e-03, +-1.821441939293530357e-03, +-1.819857119422839918e-03, +-1.818269425058470804e-03, +-1.816678858927674167e-03, +-1.815085423762440205e-03, +-1.813489122299023933e-03, +-1.811889957278387756e-03, +-1.810287931445846718e-03, +-1.808683047551344972e-03, +-1.807075308349320470e-03, +-1.805464716598598933e-03, +-1.803851275062616109e-03, +-1.802234986509285066e-03, +-1.800615853710898833e-03, +-1.798993879444336615e-03, +-1.797369066490955803e-03, +-1.795741417636465345e-03, +-1.794110935671155375e-03, +-1.792477623389767977e-03, +-1.790841483591395058e-03, +-1.789202519079722284e-03, +-1.787560732662741994e-03, +-1.785916127152985646e-03, +-1.784268705367424070e-03, +-1.782618470127316987e-03, +-1.780965424258599628e-03, +-1.779309570591410027e-03, +-1.777650911960346842e-03, +-1.775989451204477597e-03, +-1.774325191167291406e-03, +-1.772658134696567141e-03, +-1.770988284644581376e-03, +-1.769315643868010594e-03, +-1.767640215227799785e-03, +-1.765962001589400096e-03, +-1.764281005822596884e-03, +-1.762597230801576497e-03, +-1.760910679404833687e-03, +-1.759221354515177246e-03, +-1.757529259020003875e-03, +-1.755834395810831764e-03, +-1.754136767783575105e-03, +-1.752436377838556244e-03, +-1.750733228880401587e-03, +-1.749027323818107315e-03, +-1.747318665564892570e-03, +-1.745607257038403297e-03, +-1.743893101160601863e-03, +-1.742176200857665580e-03, +-1.740456559060171238e-03, +-1.738734178703021157e-03, +-1.737009062725327832e-03, +-1.735281214070459902e-03, +-1.733550635686310166e-03, +-1.731817330524770826e-03, +-1.730081301542223116e-03, +-1.728342551699152841e-03, +-1.726601083960450271e-03, +-1.724856901295237534e-03, +-1.723110006676812885e-03, +-1.721360403082813992e-03, +-1.719608093495147028e-03, +-1.717853080899835530e-03, +-1.716095368287262396e-03, +-1.714334958652037610e-03, +-1.712571854992889610e-03, +-1.710806060312876050e-03, +-1.709037577619281455e-03, +-1.707266409923485599e-03, +-1.705492560241183165e-03, +-1.703716031592279441e-03, +-1.701936827000764341e-03, +-1.700154949494964369e-03, +-1.698370402107200012e-03, +-1.696583187874253686e-03, +-1.694793309836846494e-03, +-1.693000771039905811e-03, +-1.691205574532609300e-03, +-1.689407723368296010e-03, +-1.687607220604338439e-03, +-1.685804069302379972e-03, +-1.683998272528170305e-03, +-1.682189833351635045e-03, +-1.680378754846727175e-03, +-1.678565040091640212e-03, +-1.676748692168689592e-03, +-1.674929714164238729e-03, +-1.673108109168722430e-03, +-1.671283880276917952e-03, +-1.669457030587472284e-03, +-1.667627563203178840e-03, +-1.665795481230985045e-03, +-1.663960787781899745e-03, +-1.662123485971061946e-03, +-1.660283578917544139e-03, +-1.658441069744630509e-03, +-1.656595961579670345e-03, +-1.654748257553947510e-03, +-1.652897960802930666e-03, +-1.651045074466126264e-03, +-1.649189601686978576e-03, +-1.647331545613091742e-03, +-1.645470909396097711e-03, +-1.643607696191544355e-03, +-1.641741909159120114e-03, +-1.639873551462538420e-03, +-1.638002626269398918e-03, +-1.636129136751473048e-03, +-1.634253086084372928e-03, +-1.632374477447840616e-03, +-1.630493314025587221e-03, +-1.628609599005213966e-03, +-1.626723335578408218e-03, +-1.624834526940842220e-03, +-1.622943176292036696e-03, +-1.621049286835593963e-03, +-1.619152861779079309e-03, +-1.617253904333889594e-03, +-1.615352417715498713e-03, +-1.613448405143320333e-03, +-1.611541869840578227e-03, +-1.609632815034598569e-03, +-1.607721243956431118e-03, +-1.605807159841333206e-03, +-1.603890565928231537e-03, +-1.601971465459955729e-03, +-1.600049861683504587e-03, +-1.598125757849525258e-03, +-1.596199157212582331e-03, +-1.594270063031235024e-03, +-1.592338478567875215e-03, +-1.590404407088817423e-03, +-1.588467851864114279e-03, +-1.586528816167817168e-03, +-1.584587303277853066e-03, +-1.582643316475854101e-03, +-1.580696859047436625e-03, +-1.578747934282076970e-03, +-1.576796545472991529e-03, +-1.574842695917186416e-03, +-1.572886388915759092e-03, +-1.570927627773331106e-03, +-1.568966415798551386e-03, +-1.567002756303707877e-03, +-1.565036652605025910e-03, +-1.563068108022527044e-03, +-1.561097125879910884e-03, +-1.559123709504778429e-03, +-1.557147862228527770e-03, +-1.555169587386198184e-03, +-1.553188888316736627e-03, +-1.551205768362842264e-03, +-1.549220230870868671e-03, +-1.547232279191036990e-03, +-1.545241916677329028e-03, +-1.543249146687325924e-03, +-1.541253972582539052e-03, +-1.539256397728028377e-03, +-1.537256425492713194e-03, +-1.535254059249237897e-03, +-1.533249302373778126e-03, +-1.531242158246540587e-03, +-1.529232630251162618e-03, +-1.527220721775034628e-03, +-1.525206436209308129e-03, +-1.523189776948846068e-03, +-1.521170747392049365e-03, +-1.519149350941122320e-03, +-1.517125591001908897e-03, +-1.515099470983947592e-03, +-1.513070994300315733e-03, +-1.511040164367865625e-03, +-1.509006984607108104e-03, +-1.506971458442093060e-03, +-1.504933589300476871e-03, +-1.502893380613804083e-03, +-1.500850835816975497e-03, +-1.498805958348556518e-03, +-1.496758751650823340e-03, +-1.494709219169601403e-03, +-1.492657364354372943e-03, +-1.490603190658068827e-03, +-1.488546701537356949e-03, +-1.486487900452482854e-03, +-1.484426790867137032e-03, +-1.482363376248712521e-03, +-1.480297660068178710e-03, +-1.478229645799922828e-03, +-1.476159336922017520e-03, +-1.474086736916101377e-03, +-1.472011849267204370e-03, +-1.469934677464077239e-03, +-1.467855224998832180e-03, +-1.465773495367228433e-03, +-1.463689492068554312e-03, +-1.461603218605469351e-03, +-1.459514678484285111e-03, +-1.457423875214812958e-03, +-1.455330812310215308e-03, +-1.453235493287293812e-03, +-1.451137921666326288e-03, +-1.449038100970935971e-03, +-1.446936034728353235e-03, +-1.444831726469277032e-03, +-1.442725179727731349e-03, +-1.440616398041330614e-03, +-1.438505384951092566e-03, +-1.436392144001521955e-03, +-1.434276678740470032e-03, +-1.432158992719173574e-03, +-1.430039089492572560e-03, +-1.427916972618748555e-03, +-1.425792645659239343e-03, +-1.423666112179087064e-03, +-1.421537375746730232e-03, +-1.419406439933869725e-03, +-1.417273308315732680e-03, +-1.415137984470876686e-03, +-1.413000471981299506e-03, +-1.410860774432209008e-03, +-1.408718895412337368e-03, +-1.406574838513764995e-03, +-1.404428607331836181e-03, +-1.402280205465194010e-03, +-1.400129636516109525e-03, +-1.397976904089852021e-03, +-1.395822011795213365e-03, +-1.393664963244309156e-03, +-1.391505762052432787e-03, +-1.389344411838369219e-03, +-1.387180916224027647e-03, +-1.385015278834752020e-03, +-1.382847503299187032e-03, +-1.380677593249116791e-03, +-1.378505552319747368e-03, +-1.376331384149564324e-03, +-1.374155092380176376e-03, +-1.371976680656601406e-03, +-1.369796152627105563e-03, +-1.367613511943072948e-03, +-1.365428762259264951e-03, +-1.363241907233686458e-03, +-1.361052950527433204e-03, +-1.358861895805019409e-03, +-1.356668746733977931e-03, +-1.354473506985210459e-03, +-1.352276180232817515e-03, +-1.350076770153963790e-03, +-1.347875280429147032e-03, +-1.345671714742063384e-03, +-1.343466076779439118e-03, +-1.341258370231321632e-03, +-1.339048598790937858e-03, +-1.336836766154531194e-03, +-1.334622876021637761e-03, +-1.332406932094913144e-03, +-1.330188938080200485e-03, +-1.327968897686383678e-03, +-1.325746814625434859e-03, +-1.323522692612744221e-03, +-1.321296535366531938e-03, +-1.319068346608131799e-03, +-1.316838130062284156e-03, +-1.314605889456528336e-03, +-1.312371628521565416e-03, +-1.310135350991267116e-03, +-1.307897060602552630e-03, +-1.305656761095458666e-03, +-1.303414456212958821e-03, +-1.301170149701226389e-03, +-1.298923845309500353e-03, +-1.296675546789923189e-03, +-1.294425257897835989e-03, +-1.292172982391608452e-03, +-1.289918724032513555e-03, +-1.287662486584985376e-03, +-1.285404273816485735e-03, +-1.283144089497343949e-03, +-1.280881937401092069e-03, +-1.278617821304073266e-03, +-1.276351744985767525e-03, +-1.274083712228653081e-03, +-1.271813726818042493e-03, +-1.269541792542364534e-03, +-1.267267913193033217e-03, +-1.264992092564263919e-03, +-1.262714334453392782e-03, +-1.260434642660704331e-03, +-1.258153020989272088e-03, +-1.255869473245267145e-03, +-1.253584003237791624e-03, +-1.251296614778722987e-03, +-1.249007311683060116e-03, +-1.246716097768468378e-03, +-1.244422976855868350e-03, +-1.242127952768783995e-03, +-1.239831029333625856e-03, +-1.237532210380008725e-03, +-1.235231499740118907e-03, +-1.232928901249069403e-03, +-1.230624418744944359e-03, +-1.228318056068697373e-03, +-1.226009817063974548e-03, +-1.223699705577436072e-03, +-1.221387725458528964e-03, +-1.219073880559590943e-03, +-1.216758174735639228e-03, +-1.214440611844665001e-03, +-1.212121195747485744e-03, +-1.209799930307616216e-03, +-1.207476819391340014e-03, +-1.205151866868034828e-03, +-1.202825076609516288e-03, +-1.200496452490646846e-03, +-1.198165998388862419e-03, +-1.195833718184522798e-03, +-1.193499615760753359e-03, +-1.191163695003289152e-03, +-1.188825959800778476e-03, +-1.186486414044606811e-03, +-1.184145061628753479e-03, +-1.181801906450081780e-03, +-1.179456952408194361e-03, +-1.177110203405243045e-03, +-1.174761663346264931e-03, +-1.172411336138997435e-03, +-1.170059225693731919e-03, +-1.167705335923602955e-03, +-1.165349670744439360e-03, +-1.162992234074597658e-03, +-1.160633029835314882e-03, +-1.158272061950243017e-03, +-1.155909334346050948e-03, +-1.153544850951763751e-03, +-1.151178615699106379e-03, +-1.148810632522544650e-03, +-1.146440905359187882e-03, +-1.144069438148618894e-03, +-1.141696234833197579e-03, +-1.139321299357907817e-03, +-1.136944635670179013e-03, +-1.134566247720208759e-03, +-1.132186139460738400e-03, +-1.129804314847148664e-03, +-1.127420777837308957e-03, +-1.125035532391607503e-03, +-1.122648582473321924e-03, +-1.120259932047977611e-03, +-1.117869585083710714e-03, +-1.115477545551320183e-03, +-1.113083817424091260e-03, +-1.110688404677898046e-03, +-1.108291311291000969e-03, +-1.105892541244333019e-03, +-1.103492098521348603e-03, +-1.101089987107860702e-03, +-1.098686210992336426e-03, +-1.096280774165754980e-03, +-1.093873680621474309e-03, +-1.091464934355281836e-03, +-1.089054539365772638e-03, +-1.086642499653635817e-03, +-1.084228819222239322e-03, +-1.081813502077412677e-03, +-1.079396552227279140e-03, +-1.076977973682617402e-03, +-1.074557770456431366e-03, +-1.072135946564328974e-03, +-1.069712506024331601e-03, +-1.067287452856720970e-03, +-1.064860791084361585e-03, +-1.062432524732516426e-03, +-1.060002657828687782e-03, +-1.057571194402933627e-03, +-1.055138138487694789e-03, +-1.052703494117638401e-03, +-1.050267265329953448e-03, +-1.047829456164207657e-03, +-1.045390070662158624e-03, +-1.042949112868134373e-03, +-1.040506586828538306e-03, +-1.038062496592495393e-03, +-1.035616846211133771e-03, +-1.033169639737962706e-03, +-1.030720881228921809e-03, +-1.028270574742262428e-03, +-1.025818724338376344e-03, +-1.023365334080117124e-03, +-1.020910408032634897e-03, +-1.018453950263202221e-03, +-1.015995964841529160e-03, +-1.013536455839547309e-03, +-1.011075427331505853e-03, +-1.008612883393750388e-03, +-1.006148828105044718e-03, +-1.003683265546390438e-03, +-1.001216199800927190e-03, +-9.987476349539686597e-04, +-9.962775750933781406e-04, +-9.938060243088564331e-04, +-9.913329866925938826e-04, +-9.888584663387577686e-04, +-9.863824673438876048e-04, +-9.839049938067036694e-04, +-9.814260498279558671e-04, +-9.789456395107307748e-04, +-9.764637669602859761e-04, +-9.739804362838806002e-04, +-9.714956515910940773e-04, +-9.690094169936594969e-04, +-9.665217366052799436e-04, +-9.640326145419750086e-04, +-9.615420549218798869e-04, +-9.590500618650969495e-04, +-9.565566394940629635e-04, +-9.540617919331021834e-04, +-9.515655233088088577e-04, +-9.490678377498731064e-04, +-9.465687393869105922e-04, +-9.440682323527821440e-04, +-9.415663207824238618e-04, +-9.390630088126774395e-04, +-9.365583005826117391e-04, +-9.340522002333502940e-04, +-9.315447119078967527e-04, +-9.290358397514659940e-04, +-9.265255879113077275e-04, +-9.240139605365275998e-04, +-9.215009617784276344e-04, +-9.189865957902550219e-04, +-9.164708667273392716e-04, +-9.139537787468785153e-04, +-9.114353360080184371e-04, +-9.089155426722313105e-04, +-9.063944029026238438e-04, +-9.038719208643368171e-04, +-9.013481007245877996e-04, +-8.988229466524984366e-04, +-8.962964628191988576e-04, +-8.937686533975940312e-04, +-8.912395225626987836e-04, +-8.887090744914578205e-04, +-8.861773133625717135e-04, +-8.836442433568294239e-04, +-8.811098686569302776e-04, +-8.785741934473632929e-04, +-8.760372219144610655e-04, +-8.734989582467832508e-04, +-8.709594066343774631e-04, +-8.684185712694518066e-04, +-8.658764563458556506e-04, +-8.633330660594760141e-04, +-8.607884046080449027e-04, +-8.582424761909840513e-04, +-8.556952850097235708e-04, +-8.531468352675253318e-04, +-8.505971311693139372e-04, +-8.480461769220037178e-04, +-8.454939767343226577e-04, +-8.429405348166326339e-04, +-8.403858553812726742e-04, +-8.378299426423726918e-04, +-8.352728008156737240e-04, +-8.327144341188760703e-04, +-8.301548467714432679e-04, +-8.275940429944408710e-04, +-8.250320270109162473e-04, +-8.224688030453868341e-04, +-8.199043753245120183e-04, +-8.173387480763457964e-04, +-8.147719255307326160e-04, +-8.122039119193576835e-04, +-8.096347114756134982e-04, +-8.070643284344379813e-04, +-8.044927670326458080e-04, +-8.019200315086853293e-04, +-7.993461261027519794e-04, +-7.967710550565530042e-04, +-7.941948226136443228e-04, +-7.916174330192456707e-04, +-7.890388905201258917e-04, +-7.864591993646497751e-04, +-7.838783638031751990e-04, +-7.812963880873523021e-04, +-7.787132764705261565e-04, +-7.761290332077790512e-04, +-7.735436625557566949e-04, +-7.709571687727746845e-04, +-7.683695561185816068e-04, +-7.657808288546944907e-04, +-7.631909912442237090e-04, +-7.606000475516931083e-04, +-7.580080020433687402e-04, +-7.554148589870960133e-04, +-7.528206226521048624e-04, +-7.502252973093558258e-04, +-7.476288872313589838e-04, +-7.450313966919909449e-04, +-7.424328299668408147e-04, +-7.398331913330230634e-04, +-7.372324850689989566e-04, +-7.346307154549763015e-04, +-7.320278867724387944e-04, +-7.294240033045395859e-04, +-7.268190693359317120e-04, +-7.242130891525777082e-04, +-7.216060670420864709e-04, +-7.189980072935486756e-04, +-7.163889141973365246e-04, +-7.137787920454588238e-04, +-7.111676451313758002e-04, +-7.085554777498153300e-04, +-7.059422941971144625e-04, +-7.033280987710411767e-04, +-7.007128957706134286e-04, +-6.980966894964904393e-04, +-6.954794842504596506e-04, +-6.928612843361057864e-04, +-6.902420940580650298e-04, +-6.876219177223589574e-04, +-6.850007596367366051e-04, +-6.823786241099759169e-04, +-6.797555154522719970e-04, +-6.771314379752998861e-04, +-6.745063959920269935e-04, +-6.718803938168216262e-04, +-6.692534357652165245e-04, +-6.666255261542515780e-04, +-6.639966693022862588e-04, +-6.613668695288222460e-04, +-6.587361311548474430e-04, +-6.561044585026510126e-04, +-6.534718558956995613e-04, +-6.508383276586882050e-04, +-6.482038781179450850e-04, +-6.455685116006637525e-04, +-6.429322324355948902e-04, +-6.402950449525154865e-04, +-6.376569534826300985e-04, +-6.350179623583887068e-04, +-6.323780759133038097e-04, +-6.297372984822955256e-04, +-6.270956344015087957e-04, +-6.244530880081250587e-04, +-6.218096636407152667e-04, +-6.191653656390531859e-04, +-6.165201983439304312e-04, +-6.138741660975035198e-04, +-6.112272732431106408e-04, +-6.085795241250898345e-04, +-6.059309230891778706e-04, +-6.032814744820378609e-04, +-6.006311826516616071e-04, +-5.979800519471881052e-04, +-5.953280867186587326e-04, +-5.926752913176559518e-04, +-5.900216700965378635e-04, +-5.873672274088352413e-04, +-5.847119676093078021e-04, +-5.820558950538202818e-04, +-5.793990140991496637e-04, +-5.767413291033465436e-04, +-5.740828444254798000e-04, +-5.714235644257528203e-04, +-5.687634934652583633e-04, +-5.661026359063255032e-04, +-5.634409961123399780e-04, +-5.607785784476124582e-04, +-5.581153872774317817e-04, +-5.554514269684744567e-04, +-5.527867018880899559e-04, +-5.501212164046972086e-04, +-5.474549748878508463e-04, +-5.447879817080424677e-04, +-5.421202412368231541e-04, +-5.394517578465550783e-04, +-5.367825359107559558e-04, +-5.341125798039210188e-04, +-5.314418939013327388e-04, +-5.287704825794135172e-04, +-5.260983502155369262e-04, +-5.234255011878435025e-04, +-5.207519398755956069e-04, +-5.180776706589791235e-04, +-5.154026979189289034e-04, +-5.127270260375387011e-04, +-5.100506593975688389e-04, +-5.073736023828628655e-04, +-5.046958593781593382e-04, +-5.020174347689075091e-04, +-4.993383329416141610e-04, +-4.966585582836643888e-04, +-4.939781151831264434e-04, +-4.912970080291104939e-04, +-4.886152412115746637e-04, +-4.859328191211503660e-04, +-4.832497461494796530e-04, +-4.805660266890397921e-04, +-4.778816651329482177e-04, +-4.751966658753253056e-04, +-4.725110333110319415e-04, +-4.698247718357968067e-04, +-4.671378858460247451e-04, +-4.644503797388441972e-04, +-4.617622579125260271e-04, +-4.590735247657560234e-04, +-4.563841846980436971e-04, +-4.536942421097797445e-04, +-4.510037014021046420e-04, +-4.483125669767262290e-04, +-4.456208432362675199e-04, +-4.429285345840231923e-04, +-4.402356454240691458e-04, +-4.375421801610186105e-04, +-4.348481432003752718e-04, +-4.321535389483407703e-04, +-4.294583718116921868e-04, +-4.267626461978359814e-04, +-4.240663665152163042e-04, +-4.213695371725302498e-04, +-4.186721625793813598e-04, +-4.159742471460289555e-04, +-4.132757952832079437e-04, +-4.105768114025336031e-04, +-4.078772999160197653e-04, +-4.051772652364873419e-04, +-4.024767117773824497e-04, +-3.997756439525855911e-04, +-3.970740661767631526e-04, +-3.943719828651850957e-04, +-3.916693984335326202e-04, +-3.889663172982555164e-04, +-3.862627438763808585e-04, +-3.835586825853268462e-04, +-3.808541378432585864e-04, +-3.781491140688973272e-04, +-3.754436156813353311e-04, +-3.727376471004478710e-04, +-3.700312127464040930e-04, +-3.673243170400844341e-04, +-3.646169644028897480e-04, +-3.619091592565550400e-04, +-3.592009060235017777e-04, +-3.564922091266516796e-04, +-3.537830729892393108e-04, +-3.510735020351644486e-04, +-3.483635006888044614e-04, +-3.456530733748285305e-04, +-3.429422245185482273e-04, +-3.402309585456735129e-04, +-3.375192798824230020e-04, +-3.348071929553356912e-04, +-3.320947021913270660e-04, +-3.293818120181003393e-04, +-3.266685268634190054e-04, +-3.239548511554579051e-04, +-3.212407893231608493e-04, +-3.185263457955090000e-04, +-3.158115250019343846e-04, +-3.130963313723740516e-04, +-3.103807693370829921e-04, +-3.076648433267443485e-04, +-3.049485577722248187e-04, +-3.022319171049277805e-04, +-2.995149257566026351e-04, +-2.967975881591611428e-04, +-2.940799087450279457e-04, +-2.913618919469554945e-04, +-2.886435421978351262e-04, +-2.859248639310496467e-04, +-2.832058615802882573e-04, +-2.804865395793549221e-04, +-2.777669023625883881e-04, +-2.750469543643667045e-04, +-2.723267000195256707e-04, +-2.696061437631712149e-04, +-2.668852900304884666e-04, +-2.641641432570977538e-04, +-2.614427078788675242e-04, +-2.587209883317249893e-04, +-2.559989890520094659e-04, +-2.532767144762888747e-04, +-2.505541690411659935e-04, +-2.478313571836348347e-04, +-2.451082833408975230e-04, +-2.423849519501671066e-04, +-2.396613674490901248e-04, +-2.369375342751907376e-04, +-2.342134568665950811e-04, +-2.314891396612313431e-04, +-2.287645870971883363e-04, +-2.260398036130721730e-04, +-2.233147936472713933e-04, +-2.205895616383736512e-04, +-2.178641120252202226e-04, +-2.151384492467763618e-04, +-2.124125777419419729e-04, +-2.096865019499105621e-04, +-2.069602263099151274e-04, +-2.042337552613470418e-04, +-2.015070932435038677e-04, +-1.987802446959453003e-04, +-1.960532140583053843e-04, +-1.933260057701635204e-04, +-1.905986242710970221e-04, +-1.878710740011015426e-04, +-1.851433593997904993e-04, +-1.824154849071202159e-04, +-1.796874549628345123e-04, +-1.769592740068823939e-04, +-1.742309464792286681e-04, +-1.715024768196657000e-04, +-1.687738694681696541e-04, +-1.660451288647101084e-04, +-1.633162594490634631e-04, +-1.605872656611671227e-04, +-1.578581519409312777e-04, +-1.551289227280500918e-04, +-1.523995824623587019e-04, +-1.496701355836428595e-04, +-1.469405865314498186e-04, +-1.442109397454463125e-04, +-1.414811996652294958e-04, +-1.387513707301347965e-04, +-1.360214573796568579e-04, +-1.332914640528950231e-04, +-1.305613951892735164e-04, +-1.278312552277466145e-04, +-1.251010486072145198e-04, +-1.223707797665791693e-04, +-1.196404531446143067e-04, +-1.169100731797749471e-04, +-1.141796443105573598e-04, +-1.114491709753072184e-04, +-1.087186576120314645e-04, +-1.059881086587545902e-04, +-1.032575285532698139e-04, +-1.005269217332522706e-04, +-9.779629263606953455e-05, +-9.506564569883539509e-05, +-9.233498535882933491e-05, +-8.960431605275761895e-05, +-8.687364221717323311e-05, +-8.414296828852877970e-05, +-8.141229870298735195e-05, +-7.868163789653716126e-05, +-7.595099030473975840e-05, +-7.322036036308935162e-05, +-7.048975250682232589e-05, +-6.775917117072745332e-05, +-6.502862078950401867e-05, +-6.229810579757238216e-05, +-5.956763062894429529e-05, +-5.683719971727695515e-05, +-5.410681749629229923e-05, +-5.137648839897797554e-05, +-4.864621685824951236e-05, +-4.591600730670080934e-05, +-4.318586417641287755e-05, +-4.045579189937360863e-05, +-3.772579490698379199e-05, +-3.499587763047508826e-05, +-3.226604450072131035e-05, +-2.953629994804794274e-05, +-2.680664840259036518e-05, +-2.407709429410421565e-05, +-2.134764205177532625e-05, +-1.861829610457798771e-05, +-1.588906088108511572e-05, +-1.315994080927841899e-05, +-1.043094031690635710e-05, +-7.702063831294601556e-06, +-4.973315779156076887e-06, +-2.244700587009850981e-06, + 4.837773193737041838e-07, + 3.212113514249834720e-06, + 5.940303572697705639e-06, + 8.668343070201571225e-06, + 1.139622758259708934e-05, + 1.412395268620020587e-05, + 1.685151395799680961e-05, + 1.957890697528492607e-05, + 2.230612731586425129e-05, + 2.503317055822602949e-05, + 2.776003228119491739e-05, + 3.048670806417987875e-05, + 3.321319348705917426e-05, + 3.593948413037045939e-05, + 3.866557557525691994e-05, + 4.139146340304854975e-05, + 4.411714319599925908e-05, + 4.684261053692910146e-05, + 4.956786100886694099e-05, + 5.229289019584721217e-05, + 5.501769368218818008e-05, + 5.774226705304609644e-05, + 6.046660589399670434e-05, + 6.319070579122464159e-05, + 6.591456233171307444e-05, + 6.863817110288635134e-05, + 7.136152769279913524e-05, + 7.408462769032593564e-05, + 7.680746668480372850e-05, + 7.953004026622143409e-05, + 8.225234402540908317e-05, + 8.497437355368073501e-05, + 8.769612444302335896e-05, + 9.041759228628692220e-05, + 9.313877267676554886e-05, + 9.585966120869168587e-05, + 9.858025347681617786e-05, + 1.013005450765997779e-04, + 1.040205316044006875e-04, + 1.067402086571185994e-04, + 1.094595718323832672e-04, + 1.121786167287435907e-04, + 1.148973389453110351e-04, + 1.176157340819486885e-04, + 1.203337977394606048e-04, + 1.230515255192342740e-04, + 1.257689130234302224e-04, + 1.284859558551706363e-04, + 1.312026496181833784e-04, + 1.339189899170506893e-04, + 1.366349723570956724e-04, + 1.393505925445717578e-04, + 1.420658460866072996e-04, + 1.447807285907903808e-04, + 1.474952356659018694e-04, + 1.502093629215001417e-04, + 1.529231059678642435e-04, + 1.556364604161860645e-04, + 1.583494218784552501e-04, + 1.610619859677076742e-04, + 1.637741482976697927e-04, + 1.664859044829472686e-04, + 1.691972501392143544e-04, + 1.719081808828567561e-04, + 1.746186923311612328e-04, + 1.773287801024420695e-04, + 1.800384398159898748e-04, + 1.827476670916534051e-04, + 1.854564575506346903e-04, + 1.881648068147672814e-04, + 1.908727105070720390e-04, + 1.935801642513368154e-04, + 1.962871636723061630e-04, + 1.989937043958719368e-04, + 2.016997820487149659e-04, + 2.044053922584944090e-04, + 2.071105306540348340e-04, + 2.098151928649747463e-04, + 2.125193745219489518e-04, + 2.152230712567818429e-04, + 2.179262787021301001e-04, + 2.206289924916700958e-04, + 2.233312082602878740e-04, + 2.260329216437220138e-04, + 2.287341282787538801e-04, + 2.314348238033938352e-04, + 2.341350038564667211e-04, + 2.368346640781626884e-04, + 2.395338001093180725e-04, + 2.422324075922089475e-04, + 2.449304821701350646e-04, + 2.476280194873650719e-04, + 2.503250151892680016e-04, + 2.530214649224956053e-04, + 2.557173643346332412e-04, + 2.584127090744453917e-04, + 2.611074947917600328e-04, + 2.638017171377217418e-04, + 2.664953717644317414e-04, + 2.691884543251406715e-04, + 2.718809604743727842e-04, + 2.745728858678713542e-04, + 2.772642261621906939e-04, + 2.799549770154180148e-04, + 2.826451340867629485e-04, + 2.853346930365049093e-04, + 2.880236495261778956e-04, + 2.907119992184607695e-04, + 2.933997377774206594e-04, + 2.960868608681631428e-04, + 2.987733641570156388e-04, + 3.014592433117180108e-04, + 3.041444940010687914e-04, + 3.068291118951091715e-04, + 3.095130926653142539e-04, + 3.121964319842359704e-04, + 3.148791255256933063e-04, + 3.175611689649588906e-04, + 3.202425579784019143e-04, + 3.229232882436826910e-04, + 3.256033554399305734e-04, + 3.282827552473392761e-04, + 3.309614833476462003e-04, + 3.336395354237267261e-04, + 3.363169071597759785e-04, + 3.389935942414981835e-04, + 3.416695923557517547e-04, + 3.443448971907386489e-04, + 3.470195044361884095e-04, + 3.496934097830080236e-04, + 3.523666089234683504e-04, + 3.550390975513875139e-04, + 3.577108713617829826e-04, + 3.603819260510539324e-04, + 3.630522573171727162e-04, + 3.657218608592669590e-04, + 3.683907323781707654e-04, + 3.710588675757090383e-04, + 3.737262621554850975e-04, + 3.763929118224671648e-04, + 3.790588122829357262e-04, + 3.817239592446117387e-04, + 3.843883484168395350e-04, + 3.870519755102400420e-04, + 3.897148362369500635e-04, + 3.923769263105170591e-04, + 3.950382414461381018e-04, + 3.976987773603122829e-04, + 4.003585297710288756e-04, + 4.030174943979478543e-04, + 4.056756669620493723e-04, + 4.083330431858277253e-04, + 4.109896187934057891e-04, + 4.136453895104884532e-04, + 4.163003510639546353e-04, + 4.189544991826330282e-04, + 4.216078295965992114e-04, + 4.242603380377133609e-04, + 4.269120202392144873e-04, + 4.295628719359053456e-04, + 4.322128888643358828e-04, + 4.348620667624533112e-04, + 4.375104013697917360e-04, + 4.401578884276501806e-04, + 4.428045236787477024e-04, + 4.454503028674091161e-04, + 4.480952217397440505e-04, + 4.507392760433055322e-04, + 4.533824615272706148e-04, + 4.560247739426245839e-04, + 4.586662090417522675e-04, + 4.613067625789229998e-04, + 4.639464303098789493e-04, + 4.665852079920221980e-04, + 4.692230913846534828e-04, + 4.718600762483355520e-04, + 4.744961583456615392e-04, + 4.771313334408555976e-04, + 4.797655972997103956e-04, + 4.823989456897223170e-04, + 4.850313743802694868e-04, + 4.876628791422673204e-04, + 4.902934557484071561e-04, + 4.929230999730510338e-04, + 4.955518075924683760e-04, + 4.981795743844938135e-04, + 5.008063961287074345e-04, + 5.034322686065610935e-04, + 5.060571876013256112e-04, + 5.086811488976873425e-04, + 5.113041482824571366e-04, + 5.139261815441685316e-04, + 5.165472444730265797e-04, + 5.191673328610882593e-04, + 5.217864425021495004e-04, + 5.244045691919949851e-04, + 5.270217087280439387e-04, + 5.296378569095387808e-04, + 5.322530095377236937e-04, + 5.348671624155043993e-04, + 5.374803113476248843e-04, + 5.400924521408557262e-04, + 5.427035806036448716e-04, + 5.453136925462997824e-04, + 5.479227837811747855e-04, + 5.505308501222647144e-04, + 5.531378873856779461e-04, + 5.557438913892373067e-04, + 5.583488579526602654e-04, + 5.609527828977399965e-04, + 5.635556620480046148e-04, + 5.661574912288953095e-04, + 5.687582662679540203e-04, + 5.713579829944690110e-04, + 5.739566372396710022e-04, + 5.765542248369030657e-04, + 5.791507416212834372e-04, + 5.817461834298825671e-04, + 5.843405461019126387e-04, + 5.869338254783750940e-04, + 5.895260174023055555e-04, + 5.921171177186645377e-04, + 5.947071222745169920e-04, + 5.972960269189789631e-04, + 5.998838275028218559e-04, + 6.024705198791728295e-04, + 6.050560999031151608e-04, + 6.076405634316384792e-04, + 6.102239063237625827e-04, + 6.128061244407115608e-04, + 6.153872136455791012e-04, + 6.179671698035678817e-04, + 6.205459887818725847e-04, + 6.231236664499248184e-04, + 6.257001986790514851e-04, + 6.282755813426516142e-04, + 6.308498103163244063e-04, + 6.334228814778109038e-04, + 6.359947907066005332e-04, + 6.385655338846896135e-04, + 6.411351068958907190e-04, + 6.437035056263643723e-04, + 6.462707259642164800e-04, + 6.488367637996786353e-04, + 6.514016150252946013e-04, + 6.539652755355672940e-04, + 6.565277412271549153e-04, + 6.590890079990365099e-04, + 6.616490717521780317e-04, + 6.642079283897169830e-04, + 6.667655738171302492e-04, + 6.693220039419058021e-04, + 6.718772146737186663e-04, + 6.744312019246029820e-04, + 6.769839616086266356e-04, + 6.795354896420598536e-04, + 6.820857819435559386e-04, + 6.846348344337597645e-04, + 6.871826430357719229e-04, + 6.897292036747507127e-04, + 6.922745122780917925e-04, + 6.948185647756067486e-04, + 6.973613570991947985e-04, + 6.999028851830015182e-04, + 7.024431449636167092e-04, + 7.049821323797239841e-04, + 7.075198433722894179e-04, + 7.100562738847289489e-04, + 7.125914198625802991e-04, + 7.151252772537334754e-04, + 7.176578420083273369e-04, + 7.201891100789231757e-04, + 7.227190774204510487e-04, + 7.252477399898279217e-04, + 7.277750937466394157e-04, + 7.303011346528025119e-04, + 7.328258586722397484e-04, + 7.353492617715637857e-04, + 7.378713399196792878e-04, + 7.403920890877429151e-04, + 7.429115052493336525e-04, + 7.454295843803503520e-04, + 7.479463224592402832e-04, + 7.504617154666681257e-04, + 7.529757593856892250e-04, + 7.554884502019334732e-04, + 7.579997839032629175e-04, + 7.605097564799533647e-04, + 7.630183639248675279e-04, + 7.655256022331278143e-04, + 7.680314674022851356e-04, + 7.705359554324951992e-04, + 7.730390623261392544e-04, + 7.755407840882673140e-04, + 7.780411167262248637e-04, + 7.805400562498139745e-04, + 7.830375986714763160e-04, + 7.855337400059676789e-04, + 7.880284762705175696e-04, + 7.905218034850187286e-04, + 7.930137176716852820e-04, + 7.955042148552426929e-04, + 7.979932910630794423e-04, + 8.004809423249401989e-04, + 8.029671646730833544e-04, + 8.054519541424699997e-04, + 8.079353067703602762e-04, + 8.104172185968411659e-04, + 8.128976856641510328e-04, + 8.153767040174165559e-04, + 8.178542697043209627e-04, + 8.203303787747794193e-04, + 8.228050272816105851e-04, + 8.252782112801594194e-04, + 8.277499268282328872e-04, + 8.302201699862379793e-04, + 8.326889368173385955e-04, + 8.351562233871351630e-04, + 8.376220257638941624e-04, + 8.400863400184427430e-04, + 8.425491622243866472e-04, + 8.450104884578035986e-04, + 8.474703147973967161e-04, + 8.499286373246268955e-04, + 8.523854521236466728e-04, + 8.548407552809367997e-04, + 8.572945428860239856e-04, + 8.597468110308138962e-04, + 8.621975558101148233e-04, + 8.646467733212407584e-04, + 8.670944596641921289e-04, + 8.695406109418163691e-04, + 8.719852232595048849e-04, + 8.744282927253377953e-04, + 8.768698154502748603e-04, + 8.793097875478243656e-04, + 8.817482051342157272e-04, + 8.841850643285642910e-04, + 8.866203612525602740e-04, + 8.890540920306289020e-04, + 8.914862527901067004e-04, + 8.939168396608612645e-04, + 8.963458487757383847e-04, + 8.987732762701766123e-04, + 9.011991182823948267e-04, + 9.036233709535950896e-04, + 9.060460304273869336e-04, + 9.084670928504932864e-04, + 9.108865543723746860e-04, + 9.133044111451828770e-04, + 9.157206593238793142e-04, + 9.181352950664000692e-04, + 9.205483145333330638e-04, + 9.229597138880914339e-04, + 9.253694892970878690e-04, + 9.277776369294034970e-04, + 9.301841529570182773e-04, + 9.325890335547031224e-04, + 9.349922749002005260e-04, + 9.373938731741607040e-04, + 9.397938245597795785e-04, + 9.421921252434522272e-04, + 9.445887714143946052e-04, + 9.469837592645988754e-04, + 9.493770849890119769e-04, + 9.517687447854141945e-04, + 9.541587348546551892e-04, + 9.565470514003300388e-04, + 9.589336906289560713e-04, + 9.613186487501250866e-04, + 9.637019219761970698e-04, + 9.660835065224695432e-04, + 9.684633986072823005e-04, + 9.708415944519746890e-04, + 9.732180902805221854e-04, + 9.755928823202220448e-04, + 9.779659668011260465e-04, + 9.803373399562631887e-04, + 9.827069980217790091e-04, + 9.850749372366067458e-04, + 9.874411538428684923e-04, + 9.898056440855210972e-04, + 9.921684042125266008e-04, + 9.945294304750031556e-04, + 9.968887191269279555e-04, + 9.992462664252894575e-04, + 1.001602068630259336e-03, + 1.003956122004883485e-03, + 1.006308422815239230e-03, + 1.008658967330598602e-03, + 1.011007751823131276e-03, + 1.013354772568051364e-03, + 1.015700025843795443e-03, + 1.018043507931645688e-03, + 1.020385215116226870e-03, + 1.022725143684866242e-03, + 1.025063289928286126e-03, + 1.027399650140250467e-03, + 1.029734220617504548e-03, + 1.032066997659900759e-03, + 1.034397977570547349e-03, + 1.036727156655509619e-03, + 1.039054531223970821e-03, + 1.041380097588393916e-03, + 1.043703852064208244e-03, + 1.046025790970037854e-03, + 1.048345910627588532e-03, + 1.050664207361821922e-03, + 1.052980677500895031e-03, + 1.055295317375820000e-03, + 1.057608123321081674e-03, + 1.059919091674330549e-03, + 1.062228218776083968e-03, + 1.064535500970401364e-03, + 1.066840934604271034e-03, + 1.069144516028081547e-03, + 1.071446241595262012e-03, + 1.073746107662449040e-03, + 1.076044110589639401e-03, + 1.078340246739894256e-03, + 1.080634512479491591e-03, + 1.082926904178099260e-03, + 1.085217418208452543e-03, + 1.087506050946532386e-03, + 1.089792798771715889e-03, + 1.092077658066477287e-03, + 1.094360625216543636e-03, + 1.096641696611060915e-03, + 1.098920868642232337e-03, + 1.101198137705740538e-03, + 1.103473500200393906e-03, + 1.105746952528285313e-03, + 1.108018491094950406e-03, + 1.110288112309064032e-03, + 1.112555812582605901e-03, + 1.114821588331010209e-03, + 1.117085435972879843e-03, + 1.119347351930126020e-03, + 1.121607332628139601e-03, + 1.123865374495490108e-03, + 1.126121473964082718e-03, + 1.128375627469311790e-03, + 1.130627831449760754e-03, + 1.132878082347430447e-03, + 1.135126376607616160e-03, + 1.137372710679080681e-03, + 1.139617081014006805e-03, + 1.141859484067648872e-03, + 1.144099916298939703e-03, + 1.146338374170152979e-03, + 1.148574854146847514e-03, + 1.150809352698032705e-03, + 1.153041866296064012e-03, + 1.155272391416862620e-03, + 1.157500924539608175e-03, + 1.159727462146899462e-03, + 1.161952000724909449e-03, + 1.164174536763086477e-03, + 1.166395066754326434e-03, + 1.168613587195054286e-03, + 1.170830094585195453e-03, + 1.173044585427827132e-03, + 1.175257056229833371e-03, + 1.177467503501309189e-03, + 1.179675923756023969e-03, + 1.181882313511066051e-03, + 1.184086669287001464e-03, + 1.186288987608036336e-03, + 1.188489265001711152e-03, + 1.190687497999065765e-03, + 1.192883683134795094e-03, + 1.195077816946939686e-03, + 1.197269895977059843e-03, + 1.199459916770385893e-03, + 1.201647875875511140e-03, + 1.203833769844568158e-03, + 1.206017595233363233e-03, + 1.208199348601099671e-03, + 1.210379026510524387e-03, + 1.212556625528077086e-03, + 1.214732142223560888e-03, + 1.216905573170588579e-03, + 1.219076914945985439e-03, + 1.221246164130449299e-03, + 1.223413317308209023e-03, + 1.225578371066967038e-03, + 1.227741321998022939e-03, + 1.229902166696411180e-03, + 1.232060901760625689e-03, + 1.234217523792798324e-03, + 1.236372029398633606e-03, + 1.238524415187591083e-03, + 1.240674677772607990e-03, + 1.242822813770244747e-03, + 1.244968819800784708e-03, + 1.247112692488197517e-03, + 1.249254428459811673e-03, + 1.251394024346874200e-03, + 1.253531476784256610e-03, + 1.255666782410372068e-03, + 1.257799937867356893e-03, + 1.259930939800956492e-03, + 1.262059784860743942e-03, + 1.264186469699812940e-03, + 1.266310990974953881e-03, + 1.268433345346780270e-03, + 1.270553529479456593e-03, + 1.272671540040846202e-03, + 1.274787373702662664e-03, + 1.276901027140185923e-03, + 1.279012497032405195e-03, + 1.281121780062175310e-03, + 1.283228872915933086e-03, + 1.285333772283843694e-03, + 1.287436474859952884e-03, + 1.289536977341855213e-03, + 1.291635276431083281e-03, + 1.293731368832768151e-03, + 1.295825251255814129e-03, + 1.297916920413010001e-03, + 1.300006373020779881e-03, + 1.302093605799319823e-03, + 1.304178615472736599e-03, + 1.306261398768781851e-03, + 1.308341952418993689e-03, + 1.310420273158844143e-03, + 1.312496357727457701e-03, + 1.314570202867764185e-03, + 1.316641805326636879e-03, + 1.318711161854578540e-03, + 1.320778269206142504e-03, + 1.322843124139371938e-03, + 1.324905723416426508e-03, + 1.326966063803250179e-03, + 1.329024142069519174e-03, + 1.331079954988762535e-03, + 1.333133499338500687e-03, + 1.335184771899957691e-03, + 1.337233769458266589e-03, + 1.339280488802374429e-03, + 1.341324926725236989e-03, + 1.343367080023547076e-03, + 1.345406945497865494e-03, + 1.347444519952787365e-03, + 1.349479800196642671e-03, + 1.351512783041666039e-03, + 1.353543465304076756e-03, + 1.355571843804041256e-03, + 1.357597915365364120e-03, + 1.359621676816077668e-03, + 1.361643124987906581e-03, + 1.363662256716675772e-03, + 1.365679068842002046e-03, + 1.367693558207445882e-03, + 1.369705721660627448e-03, + 1.371715556052970943e-03, + 1.373723058239864191e-03, + 1.375728225080766849e-03, + 1.377731053438969490e-03, + 1.379731540181720678e-03, + 1.381729682180371380e-03, + 1.383725476310106303e-03, + 1.385718919450090476e-03, + 1.387710008483608029e-03, + 1.389698740297742570e-03, + 1.391685111783746466e-03, + 1.393669119836747237e-03, + 1.395650761355858799e-03, + 1.397630033244384642e-03, + 1.399606932409327553e-03, + 1.401581455761970966e-03, + 1.403553600217575387e-03, + 1.405523362695337191e-03, + 1.407490740118478179e-03, + 1.409455729414397368e-03, + 1.411418327514386492e-03, + 1.413378531353832535e-03, + 1.415336337872134679e-03, + 1.417291744012864332e-03, + 1.419244746723526606e-03, + 1.421195342955685649e-03, + 1.423143529665068944e-03, + 1.425089303811513317e-03, + 1.427032662358664397e-03, + 1.428973602274529776e-03, + 1.430912120531145507e-03, + 1.432848214104553769e-03, + 1.434781879974942080e-03, + 1.436713115126550056e-03, + 1.438641916547855676e-03, + 1.440568281231310952e-03, + 1.442492206173498709e-03, + 1.444413688375228858e-03, + 1.446332724841319604e-03, + 1.448249312580716062e-03, + 1.450163448606631416e-03, + 1.452075129936270447e-03, + 1.453984353590999758e-03, + 1.455891116596452067e-03, + 1.457795415982244321e-03, + 1.459697248782313795e-03, + 1.461596612034642704e-03, + 1.463493502781372264e-03, + 1.465387918068939300e-03, + 1.467279854947830132e-03, + 1.469169310472713281e-03, + 1.471056281702570225e-03, + 1.472940765700434971e-03, + 1.474822759533545632e-03, + 1.476702260273454574e-03, + 1.478579264995793802e-03, + 1.480453770780410048e-03, + 1.482325774711474925e-03, + 1.484195273877258765e-03, + 1.486062265370291296e-03, + 1.487926746287284016e-03, + 1.489788713729258774e-03, + 1.491648164801521320e-03, + 1.493505096613363583e-03, + 1.495359506278557630e-03, + 1.497211390915101749e-03, + 1.499060747645145856e-03, + 1.500907573595110971e-03, + 1.502751865895783764e-03, + 1.504593621682107736e-03, + 1.506432838093334789e-03, + 1.508269512272945216e-03, + 1.510103641368826374e-03, + 1.511935222533013776e-03, + 1.513764252921848521e-03, + 1.515590729696031065e-03, + 1.517414650020598678e-03, + 1.519236011064652864e-03, + 1.521054810001880222e-03, + 1.522871044010073657e-03, + 1.524684710271501445e-03, + 1.526495805972625771e-03, + 1.528304328304238690e-03, + 1.530110274461570115e-03, + 1.531913641644067287e-03, + 1.533714427055509703e-03, + 1.535512627904143338e-03, + 1.537308241402421741e-03, + 1.539101264767161071e-03, + 1.540891695219646137e-03, + 1.542679529985400760e-03, + 1.544464766294299666e-03, + 1.546247401380715283e-03, + 1.548027432483262090e-03, + 1.549804856844934310e-03, + 1.551579671713221916e-03, + 1.553351874339830695e-03, + 1.555121461981014879e-03, + 1.556888431897312597e-03, + 1.558652781353643676e-03, + 1.560414507619450582e-03, + 1.562173607968457729e-03, + 1.563930079678799200e-03, + 1.565683920033145811e-03, + 1.567435126318452278e-03, + 1.569183695826107056e-03, + 1.570929625852029478e-03, + 1.572672913696459640e-03, + 1.574413556664106505e-03, + 1.576151552064068749e-03, + 1.577886897209971381e-03, + 1.579619589419931254e-03, + 1.581349626016268894e-03, + 1.583077004325991397e-03, + 1.584801721680566917e-03, + 1.586523775415698504e-03, + 1.588243162871775778e-03, + 1.589959881393629903e-03, + 1.591673928330478291e-03, + 1.593385301036071835e-03, + 1.595093996868577821e-03, + 1.596800013190797195e-03, + 1.598503347369876386e-03, + 1.600203996777472323e-03, + 1.601901958789855862e-03, + 1.603597230787681726e-03, + 1.605289810156108844e-03, + 1.606979694284917451e-03, + 1.608666880568297231e-03, + 1.610351366404955955e-03, + 1.612033149198228337e-03, + 1.613712226355824494e-03, + 1.615388595290150877e-03, + 1.617062253418021000e-03, + 1.618733198160786629e-03, + 1.620401426944461385e-03, + 1.622066937199487854e-03, + 1.623729726360857066e-03, + 1.625389791868235134e-03, + 1.627047131165721902e-03, + 1.628701741701986047e-03, + 1.630353620930374359e-03, + 1.632002766308695337e-03, + 1.633649175299312214e-03, + 1.635292845369299081e-03, + 1.636933773990155959e-03, + 1.638571958638144034e-03, + 1.640207396793868242e-03, + 1.641840085942739566e-03, + 1.643470023574770131e-03, + 1.645097207184340526e-03, + 1.646721634270677725e-03, + 1.648343302337562568e-03, + 1.649962208893313714e-03, + 1.651578351450882186e-03, + 1.653191727527931598e-03, + 1.654802334646647555e-03, + 1.656410170333874480e-03, + 1.658015232121059232e-03, + 1.659617517544385119e-03, + 1.661217024144563941e-03, + 1.662813749466962414e-03, + 1.664407691061652907e-03, + 1.665998846483395012e-03, + 1.667587213291386178e-03, + 1.669172789049742228e-03, + 1.670755571327048501e-03, + 1.672335557696703542e-03, + 1.673912745736666919e-03, + 1.675487133029571760e-03, + 1.677058717162824069e-03, + 1.678627495728422315e-03, + 1.680193466323025514e-03, + 1.681756626548100691e-03, + 1.683316974009695186e-03, + 1.684874506318545734e-03, + 1.686429221090201625e-03, + 1.687981115944805913e-03, + 1.689530188507194948e-03, + 1.691076436407034115e-03, + 1.692619857278554159e-03, + 1.694160448760835243e-03, + 1.695698208497589676e-03, + 1.697233134137233253e-03, + 1.698765223333058294e-03, + 1.700294473742844197e-03, + 1.701820883029306949e-03, + 1.703344448859872313e-03, + 1.704865168906624867e-03, + 1.706383040846413393e-03, + 1.707898062360914838e-03, + 1.709410231136472341e-03, + 1.710919544864179364e-03, + 1.712426001239980957e-03, + 1.713929597964497032e-03, + 1.715430332743133604e-03, + 1.716928203286040289e-03, + 1.718423207308204846e-03, + 1.719915342529418703e-03, + 1.721404606674058159e-03, + 1.722890997471478169e-03, + 1.724374512655792472e-03, + 1.725855149965831951e-03, + 1.727332907145256741e-03, + 1.728807781942487279e-03, + 1.730279772110840907e-03, + 1.731748875408355582e-03, + 1.733215089597849295e-03, + 1.734678412447072287e-03, + 1.736138841728478068e-03, + 1.737596375219339646e-03, + 1.739051010701815657e-03, + 1.740502745962913943e-03, + 1.741951578794289886e-03, + 1.743397506992641708e-03, + 1.744840528359377406e-03, + 1.746280640700737918e-03, + 1.747717841827908791e-03, + 1.749152129556780363e-03, + 1.750583501708226396e-03, + 1.752011956107874229e-03, + 1.753437490586196718e-03, + 1.754860102978623038e-03, + 1.756279791125354593e-03, + 1.757696552871441118e-03, + 1.759110386066909271e-03, + 1.760521288566547528e-03, + 1.761929258230022837e-03, + 1.763334292921972350e-03, + 1.764736390511821703e-03, + 1.766135548873867854e-03, + 1.767531765887401162e-03, + 1.768925039436469683e-03, + 1.770315367410168431e-03, + 1.771702747702268805e-03, + 1.773087178211630146e-03, + 1.774468656841980078e-03, + 1.775847181501896081e-03, + 1.777222750104847553e-03, + 1.778595360569328954e-03, + 1.779965010818635156e-03, + 1.781331698780990250e-03, + 1.782695422389629506e-03, + 1.784056179582622654e-03, + 1.785413968302984686e-03, + 1.786768786498643550e-03, + 1.788120632122516471e-03, + 1.789469503132480252e-03, + 1.790815397491176981e-03, + 1.792158313166368564e-03, + 1.793498248130761521e-03, + 1.794835200361830259e-03, + 1.796169167842212805e-03, + 1.797500148559343916e-03, + 1.798828140505751060e-03, + 1.800153141678808308e-03, + 1.801475150080872724e-03, + 1.802794163719350935e-03, + 1.804110180606525223e-03, + 1.805423198759659349e-03, + 1.806733216201067502e-03, + 1.808040230957964466e-03, + 1.809344241062540862e-03, + 1.810645244552060076e-03, + 1.811943239468681100e-03, + 1.813238223859562183e-03, + 1.814530195776930871e-03, + 1.815819153277902940e-03, + 1.817105094424701197e-03, + 1.818388017284464434e-03, + 1.819667919929338074e-03, + 1.820944800436556784e-03, + 1.822218656888290522e-03, + 1.823489487371704161e-03, + 1.824757289979081530e-03, + 1.826022062807623530e-03, + 1.827283803959562410e-03, + 1.828542511542239615e-03, + 1.829798183667936213e-03, + 1.831050818453954215e-03, + 1.832300414022734530e-03, + 1.833546968501622134e-03, + 1.834790480023141884e-03, + 1.836030946724673697e-03, + 1.837268366748796020e-03, + 1.838502738243149442e-03, + 1.839734059360236982e-03, + 1.840962328257801390e-03, + 1.842187543098592478e-03, + 1.843409702050378832e-03, + 1.844628803286002235e-03, + 1.845844844983355552e-03, + 1.847057825325457972e-03, + 1.848267742500341385e-03, + 1.849474594701085075e-03, + 1.850678380125933033e-03, + 1.851879096978134576e-03, + 1.853076743465992488e-03, + 1.854271317802965585e-03, + 1.855462818207623829e-03, + 1.856651242903445582e-03, + 1.857836590119205534e-03, + 1.859018858088624070e-03, + 1.860198045050630734e-03, + 1.861374149249163217e-03, + 1.862547168933270788e-03, + 1.863717102357176098e-03, + 1.864883947780132493e-03, + 1.866047703466484301e-03, + 1.867208367685797583e-03, + 1.868365938712644378e-03, + 1.869520414826720666e-03, + 1.870671794312921609e-03, + 1.871820075461176538e-03, + 1.872965256566539154e-03, + 1.874107335929279475e-03, + 1.875246311854701685e-03, + 1.876382182653247351e-03, + 1.877514946640568066e-03, + 1.878644602137340049e-03, + 1.879771147469515248e-03, + 1.880894580968004099e-03, + 1.882014900969010331e-03, + 1.883132105813860747e-03, + 1.884246193848970741e-03, + 1.885357163425911307e-03, + 1.886465012901487534e-03, + 1.887569740637570553e-03, + 1.888671345001225474e-03, + 1.889769824364638529e-03, + 1.890865177105247605e-03, + 1.891957401605569213e-03, + 1.893046496253295843e-03, + 1.894132459441326107e-03, + 1.895215289567760619e-03, + 1.896294985035730908e-03, + 1.897371544253684348e-03, + 1.898444965635224342e-03, + 1.899515247599086907e-03, + 1.900582388569217220e-03, + 1.901646386974715401e-03, + 1.902707241249942125e-03, + 1.903764949834378965e-03, + 1.904819511172703428e-03, + 1.905870923714845979e-03, + 1.906919185915882057e-03, + 1.907964296236052890e-03, + 1.909006253140916633e-03, + 1.910045055101119603e-03, + 1.911080700592544162e-03, + 1.912113188096335606e-03, + 1.913142516098780520e-03, + 1.914168683091389172e-03, + 1.915191687570936283e-03, + 1.916211528039332441e-03, + 1.917228203003796703e-03, + 1.918241710976702208e-03, + 1.919252050475643177e-03, + 1.920259220023498884e-03, + 1.921263218148323718e-03, + 1.922264043383384042e-03, + 1.923261694267258161e-03, + 1.924256169343684965e-03, + 1.925247467161639607e-03, + 1.926235586275399205e-03, + 1.927220525244416859e-03, + 1.928202282633391471e-03, + 1.929180857012318491e-03, + 1.930156246956363057e-03, + 1.931128451046051258e-03, + 1.932097467866985630e-03, + 1.933063296010171942e-03, + 1.934025934071839647e-03, + 1.934985380653436466e-03, + 1.935941634361659607e-03, + 1.936894693808536433e-03, + 1.937844557611284168e-03, + 1.938791224392419398e-03, + 1.939734692779691069e-03, + 1.940674961406185436e-03, + 1.941612028910192495e-03, + 1.942545893935277096e-03, + 1.943476555130315602e-03, + 1.944404011149477229e-03, + 1.945328260652092432e-03, + 1.946249302302899015e-03, + 1.947167134771900752e-03, + 1.948081756734273496e-03, + 1.948993166870611722e-03, + 1.949901363866704323e-03, + 1.950806346413709808e-03, + 1.951708113208010372e-03, + 1.952606662951278035e-03, + 1.953501994350552266e-03, + 1.954394106118099907e-03, + 1.955282996971483261e-03, + 1.956168665633623623e-03, + 1.957051110832702841e-03, + 1.957930331302179788e-03, + 1.958806325780887512e-03, + 1.959679093012918309e-03, + 1.960548631747657550e-03, + 1.961414940739865647e-03, + 1.962278018749541442e-03, + 1.963137864542062721e-03, + 1.963994476888082999e-03, + 1.964847854563557972e-03, + 1.965697996349825751e-03, + 1.966544901033491066e-03, + 1.967388567406464731e-03, + 1.968228994266074238e-03, + 1.969066180414875099e-03, + 1.969900124660771846e-03, + 1.970730825817055762e-03, + 1.971558282702284316e-03, + 1.972382494140373539e-03, + 1.973203458960548148e-03, + 1.974021175997429586e-03, + 1.974835644090920227e-03, + 1.975646862086254552e-03, + 1.976454828834058128e-03, + 1.977259543190301207e-03, + 1.978061004016200275e-03, + 1.978859210178422322e-03, + 1.979654160548959940e-03, + 1.980445854005123511e-03, + 1.981234289429585453e-03, + 1.982019465710352889e-03, + 1.982801381740847448e-03, + 1.983580036419782099e-03, + 1.984355428651231844e-03, + 1.985127557344674911e-03, + 1.985896421414907759e-03, + 1.986662019782077602e-03, + 1.987424351371753096e-03, + 1.988183415114800744e-03, + 1.988939209947462958e-03, + 1.989691734811403160e-03, + 1.990440988653584351e-03, + 1.991186970426390111e-03, + 1.991929679087544799e-03, + 1.992669113600133938e-03, + 1.993405272932667095e-03, + 1.994138156058981176e-03, + 1.994867761958285090e-03, + 1.995594089615228273e-03, + 1.996317138019768414e-03, + 1.997036906167262097e-03, + 1.997753393058493854e-03, + 1.998466597699566881e-03, + 1.999176519101990204e-03, + 1.999883156282692993e-03, + 2.000586508263949535e-03, + 2.001286574073433445e-03, + 2.001983352744196414e-03, + 2.002676843314719814e-03, + 2.003367044828876110e-03, + 2.004053956335844714e-03, + 2.004737576890297610e-03, + 2.005417905552286158e-03, + 2.006094941387224183e-03, + 2.006768683465929605e-03, + 2.007439130864659138e-03, + 2.008106282665031092e-03, + 2.008770137954074813e-03, + 2.009430695824213336e-03, + 2.010087955373320630e-03, + 2.010741915704629228e-03, + 2.011392575926769684e-03, + 2.012039935153826960e-03, + 2.012683992505303558e-03, + 2.013324747106014136e-03, + 2.013962198086301485e-03, + 2.014596344581840066e-03, + 2.015227185733785634e-03, + 2.015854720688649467e-03, + 2.016478948598372529e-03, + 2.017099868620350189e-03, + 2.017717479917357625e-03, + 2.018331781657584090e-03, + 2.018942773014685381e-03, + 2.019550453167694940e-03, + 2.020154821301068087e-03, + 2.020755876604728423e-03, + 2.021353618273977627e-03, + 2.021948045509547494e-03, + 2.022539157517635067e-03, + 2.023126953509828910e-03, + 2.023711432703136862e-03, + 2.024292594320047621e-03, + 2.024870437588420155e-03, + 2.025444961741600363e-03, + 2.026016166018322628e-03, + 2.026584049662762729e-03, + 2.027148611924566458e-03, + 2.027709852058775901e-03, + 2.028267769325869333e-03, + 2.028822362991795480e-03, + 2.029373632327916704e-03, + 2.029921576611020285e-03, + 2.030466195123382597e-03, + 2.031007487152666335e-03, + 2.031545451992015916e-03, + 2.032080088939978990e-03, + 2.032611397300581029e-03, + 2.033139376383315353e-03, + 2.033664025503029073e-03, + 2.034185343980096563e-03, + 2.034703331140330120e-03, + 2.035217986314953945e-03, + 2.035729308840656185e-03, + 2.036237298059605412e-03, + 2.036741953319371259e-03, + 2.037243273973006388e-03, + 2.037741259378987070e-03, + 2.038235908901280848e-03, + 2.038727221909282343e-03, + 2.039215197777825405e-03, + 2.039699835887250328e-03, + 2.040181135623305841e-03, + 2.040659096377191173e-03, + 2.041133717545613735e-03, + 2.041604998530692841e-03, + 2.042072938740007414e-03, + 2.042537537586627209e-03, + 2.042998794489046463e-03, + 2.043456708871248511e-03, + 2.043911280162656347e-03, + 2.044362507798151707e-03, + 2.044810391218104123e-03, + 2.045254929868327558e-03, + 2.045696123200083007e-03, + 2.046133970670133573e-03, + 2.046568471740684188e-03, + 2.046999625879389849e-03, + 2.047427432559414603e-03, + 2.047851891259348280e-03, + 2.048273001463254625e-03, + 2.048690762660691257e-03, + 2.049105174346644610e-03, + 2.049516236021616672e-03, + 2.049923947191516129e-03, + 2.050328307367774161e-03, + 2.050729316067288061e-03, + 2.051126972812382637e-03, + 2.051521277130895216e-03, + 2.051912228556130539e-03, + 2.052299826626850354e-03, + 2.052684070887280353e-03, + 2.053064960887156145e-03, + 2.053442496181654732e-03, + 2.053816676331433975e-03, + 2.054187500902622185e-03, + 2.054554969466845880e-03, + 2.054919081601178175e-03, + 2.055279836888165672e-03, + 2.055637234915859250e-03, + 2.055991275277778071e-03, + 2.056341957572887028e-03, + 2.056689281405665263e-03, + 2.057033246386045892e-03, + 2.057373852129458936e-03, + 2.057711098256793155e-03, + 2.058044984394421639e-03, + 2.058375510174213514e-03, + 2.058702675233489276e-03, + 2.059026479215055917e-03, + 2.059346921767226876e-03, + 2.059664002543754816e-03, + 2.059977721203889306e-03, + 2.060288077412381590e-03, + 2.060595070839433846e-03, + 2.060898701160728680e-03, + 2.061198968057460779e-03, + 2.061495871216267525e-03, + 2.061789410329306193e-03, + 2.062079585094181086e-03, + 2.062366395213996017e-03, + 2.062649840397354738e-03, + 2.062929920358290252e-03, + 2.063206634816362392e-03, + 2.063479983496615319e-03, + 2.063749966129559306e-03, + 2.064016582451179849e-03, + 2.064279832202970191e-03, + 2.064539715131890121e-03, + 2.064796230990381155e-03, + 2.065049379536386051e-03, + 2.065299160533313246e-03, + 2.065545573750059410e-03, + 2.065788618961000769e-03, + 2.066028295946013057e-03, + 2.066264604490458071e-03, + 2.066497544385142038e-03, + 2.066727115426400183e-03, + 2.066953317416040780e-03, + 2.067176150161336053e-03, + 2.067395613475074209e-03, + 2.067611707175491358e-03, + 2.067824431086344363e-03, + 2.068033785036848399e-03, + 2.068239768861710771e-03, + 2.068442382401134393e-03, + 2.068641625500784384e-03, + 2.068837498011825374e-03, + 2.069029999790905020e-03, + 2.069219130700161811e-03, + 2.069404890607189941e-03, + 2.069587279385100894e-03, + 2.069766296912466629e-03, + 2.069941943073368151e-03, + 2.070114217757343042e-03, + 2.070283120859417979e-03, + 2.070448652280121316e-03, + 2.070610811925450555e-03, + 2.070769599706881459e-03, + 2.070925015541387557e-03, + 2.071077059351417171e-03, + 2.071225731064896009e-03, + 2.071371030615247119e-03, + 2.071512957941360530e-03, + 2.071651512987615802e-03, + 2.071786695703883765e-03, + 2.071918506045493987e-03, + 2.072046943973279449e-03, + 2.072172009453542713e-03, + 2.072293702458077175e-03, + 2.072412022964149718e-03, + 2.072526970954504614e-03, + 2.072638546417374800e-03, + 2.072746749346468433e-03, + 2.072851579740982771e-03, + 2.072953037605574679e-03, + 2.073051122950402697e-03, + 2.073145835791098419e-03, + 2.073237176148751311e-03, + 2.073325144049972899e-03, + 2.073409739526803526e-03, + 2.073490962616793450e-03, + 2.073568813362959042e-03, + 2.073643291813798833e-03, + 2.073714398023293517e-03, + 2.073782132050872116e-03, + 2.073846493961470534e-03, + 2.073907483825491657e-03, + 2.073965101718803616e-03, + 2.074019347722763640e-03, + 2.074070221924192471e-03, + 2.074117724415386940e-03, + 2.074161855294120397e-03, + 2.074202614663644886e-03, + 2.074240002632669888e-03, + 2.074274019315388348e-03, + 2.074304664831459321e-03, + 2.074331939306017954e-03, + 2.074355842869662469e-03, + 2.074376375658474551e-03, + 2.074393537813996793e-03, + 2.074407329483236601e-03, + 2.074417750818676170e-03, + 2.074424801978265974e-03, + 2.074428483125421302e-03, + 2.074428794429036133e-03, + 2.074425736063444103e-03, + 2.074419308208471421e-03, + 2.074409511049399128e-03, + 2.074396344776970481e-03, + 2.074379809587403086e-03, + 2.074359905682360283e-03, + 2.074336633268989739e-03, + 2.074309992559889189e-03, + 2.074279983773109470e-03, + 2.074246607132185314e-03, + 2.074209862866091547e-03, + 2.074169751209277782e-03, + 2.074126272401641963e-03, + 2.074079426688541210e-03, + 2.074029214320797024e-03, + 2.073975635554679234e-03, + 2.073918690651925089e-03, + 2.073858379879720600e-03, + 2.073794703510703583e-03, + 2.073727661822974064e-03, + 2.073657255100075196e-03, + 2.073583483631018416e-03, + 2.073506347710252651e-03, + 2.073425847637678197e-03, + 2.073341983718660596e-03, + 2.073254756263997675e-03, + 2.073164165589951643e-03, + 2.073070212018213957e-03, + 2.072972895875947828e-03, + 2.072872217495737475e-03, + 2.072768177215624560e-03, + 2.072660775379109484e-03, + 2.072550012335107588e-03, + 2.072435888437999026e-03, + 2.072318404047600576e-03, + 2.072197559529161733e-03, + 2.072073355253394641e-03, + 2.071945791596422476e-03, + 2.071814868939829326e-03, + 2.071680587670629830e-03, + 2.071542948181272648e-03, + 2.071401950869637427e-03, + 2.071257596139059517e-03, + 2.071109884398289209e-03, + 2.070958816061509080e-03, + 2.070804391548352642e-03, + 2.070646611283862275e-03, + 2.070485475698529993e-03, + 2.070320985228267952e-03, + 2.070153140314408453e-03, + 2.069981941403724324e-03, + 2.069807388948404197e-03, + 2.069629483406079402e-03, + 2.069448225239790568e-03, + 2.069263614917999771e-03, + 2.069075652914596601e-03, + 2.068884339708898165e-03, + 2.068689675785625234e-03, + 2.068491661634939971e-03, + 2.068290297752397363e-03, + 2.068085584638996825e-03, + 2.067877522801125391e-03, + 2.067666112750596308e-03, + 2.067451355004656412e-03, + 2.067233250085929747e-03, + 2.067011798522467875e-03, + 2.066787000847746837e-03, + 2.066558857600630291e-03, + 2.066327369325390330e-03, + 2.066092536571721792e-03, + 2.065854359894714071e-03, + 2.065612839854866298e-03, + 2.065367977018071725e-03, + 2.065119771955632039e-03, + 2.064868225244255624e-03, + 2.064613337466031980e-03, + 2.064355109208469447e-03, + 2.064093541064462682e-03, + 2.063828633632308705e-03, + 2.063560387515673070e-03, + 2.063288803323667063e-03, + 2.063013881670736245e-03, + 2.062735623176761065e-03, + 2.062454028466989640e-03, + 2.062169098172055969e-03, + 2.061880832927999885e-03, + 2.061589233376215878e-03, + 2.061294300163514677e-03, + 2.060996033942079451e-03, + 2.060694435369455398e-03, + 2.060389505108599622e-03, + 2.060081243827828652e-03, + 2.059769652200839265e-03, + 2.059454730906706745e-03, + 2.059136480629882287e-03, + 2.058814902060179981e-03, + 2.058489995892801103e-03, + 2.058161762828315464e-03, + 2.057830203572644061e-03, + 2.057495318837100282e-03, + 2.057157109338339160e-03, + 2.056815575798409419e-03, + 2.056470718944702729e-03, + 2.056122539509966721e-03, + 2.055771038232319728e-03, + 2.055416215855258161e-03, + 2.055058073127598826e-03, + 2.054696610803537909e-03, + 2.054331829642622349e-03, + 2.053963730409753743e-03, + 2.053592313875169263e-03, + 2.053217580814474183e-03, + 2.052839532008634074e-03, + 2.052458168243923627e-03, + 2.052073490311973059e-03, + 2.051685499009795865e-03, + 2.051294195139702521e-03, + 2.050899579509350788e-03, + 2.050501652931756985e-03, + 2.050100416225266505e-03, + 2.049695870213555978e-03, + 2.049288015725624166e-03, + 2.048876853595834463e-03, + 2.048462384663855482e-03, + 2.048044609774691410e-03, + 2.047623529778674206e-03, + 2.047199145531478342e-03, + 2.046771457894059221e-03, + 2.046340467732740351e-03, + 2.045906175919151321e-03, + 2.045468583330223473e-03, + 2.045027690848226758e-03, + 2.044583499360755428e-03, + 2.044136009760674257e-03, + 2.043685222946218290e-03, + 2.043231139820877919e-03, + 2.042773761293488217e-03, + 2.042313088278193377e-03, + 2.041849121694410719e-03, + 2.041381862466888804e-03, + 2.040911311525685744e-03, + 2.040437469806118901e-03, + 2.039960338248843815e-03, + 2.039479917799804764e-03, + 2.038996209410217850e-03, + 2.038509214036615235e-03, + 2.038018932640820423e-03, + 2.037525366189933511e-03, + 2.037028515656335963e-03, + 2.036528382017721833e-03, + 2.036024966257053530e-03, + 2.035518269362570059e-03, + 2.035008292327770540e-03, + 2.034495036151493571e-03, + 2.033978501837806641e-03, + 2.033458690396036488e-03, + 2.032935602840826340e-03, + 2.032409240192074341e-03, + 2.031879603474937446e-03, + 2.031346693719835762e-03, + 2.030810511962471629e-03, + 2.030271059243804032e-03, + 2.029728336610032990e-03, + 2.029182345112642491e-03, + 2.028633085808376636e-03, + 2.028080559759200176e-03, + 2.027524768032357930e-03, + 2.026965711700350493e-03, + 2.026403391840897374e-03, + 2.025837809537002054e-03, + 2.025268965876875649e-03, + 2.024696861953989829e-03, + 2.024121498867078976e-03, + 2.023542877720064734e-03, + 2.022960999622142736e-03, + 2.022375865687754421e-03, + 2.021787477036519811e-03, + 2.021195834793335089e-03, + 2.020600940088327063e-03, + 2.020002794056805460e-03, + 2.019401397839342294e-03, + 2.018796752581734130e-03, + 2.018188859434958283e-03, + 2.017577719555241778e-03, + 2.016963334104022315e-03, + 2.016345704247962146e-03, + 2.015724831158902108e-03, + 2.015100716013880702e-03, + 2.014473359995229071e-03, + 2.013842764290397960e-03, + 2.013208930092048356e-03, + 2.012571858598084015e-03, + 2.011931551011582071e-03, + 2.011288008540799109e-03, + 2.010641232399209329e-03, + 2.009991223805471586e-03, + 2.009337983983443265e-03, + 2.008681514162132583e-03, + 2.008021815575771005e-03, + 2.007358889463761210e-03, + 2.006692737070679688e-03, + 2.006023359646247253e-03, + 2.005350758445452203e-03, + 2.004674934728355173e-03, + 2.003995889760258695e-03, + 2.003313624811576231e-03, + 2.002628141157932352e-03, + 2.001939440080105926e-03, + 2.001247522864003231e-03, + 2.000552390800738184e-03, + 1.999854045186561652e-03, + 1.999152487322848875e-03, + 1.998447718516175361e-03, + 1.997739740078244026e-03, + 1.997028553325889098e-03, + 1.996314159581108645e-03, + 1.995596560171060668e-03, + 1.994875756427982438e-03, + 1.994151749689309760e-03, + 1.993424541297596740e-03, + 1.992694132600500607e-03, + 1.991960524950857608e-03, + 1.991223719706568945e-03, + 1.990483718230719613e-03, + 1.989740521891502495e-03, + 1.988994132062190615e-03, + 1.988244550121224304e-03, + 1.987491777452153521e-03, + 1.986735815443601422e-03, + 1.985976665489331151e-03, + 1.985214328988232392e-03, + 1.984448807344238539e-03, + 1.983680101966445088e-03, + 1.982908214269016398e-03, + 1.982133145671243369e-03, + 1.981354897597472752e-03, + 1.980573471477126233e-03, + 1.979788868744815356e-03, + 1.979001090840141162e-03, + 1.978210139207809554e-03, + 1.977416015297623047e-03, + 1.976618720564487282e-03, + 1.975818256468309976e-03, + 1.975014624474143166e-03, + 1.974207826052086067e-03, + 1.973397862677319769e-03, + 1.972584735830041746e-03, + 1.971768446995566040e-03, + 1.970948997664262112e-03, + 1.970126389331514506e-03, + 1.969300623497806119e-03, + 1.968471701668676570e-03, + 1.967639625354662344e-03, + 1.966804396071390910e-03, + 1.965966015339552959e-03, + 1.965124484684811334e-03, + 1.964279805637938938e-03, + 1.963431979734688200e-03, + 1.962581008515879542e-03, + 1.961726893527369290e-03, + 1.960869636320001531e-03, + 1.960009238449680544e-03, + 1.959145701477343470e-03, + 1.958279026968887462e-03, + 1.957409216495282871e-03, + 1.956536271632513830e-03, + 1.955660193961521014e-03, + 1.954780985068304850e-03, + 1.953898646543875649e-03, + 1.953013179984191584e-03, + 1.952124586990269502e-03, + 1.951232869168051560e-03, + 1.950338028128594534e-03, + 1.949440065487826950e-03, + 1.948538982866678980e-03, + 1.947634781891161362e-03, + 1.946727464192180663e-03, + 1.945817031405606924e-03, + 1.944903485172354979e-03, + 1.943986827138296201e-03, + 1.943067058954224893e-03, + 1.942144182275951092e-03, + 1.941218198764231616e-03, + 1.940289110084810181e-03, + 1.939356917908329576e-03, + 1.938421623910444426e-03, + 1.937483229771765894e-03, + 1.936541737177806385e-03, + 1.935597147819010993e-03, + 1.934649463390894324e-03, + 1.933698685593762505e-03, + 1.932744816132967326e-03, + 1.931787856718704356e-03, + 1.930827809066172325e-03, + 1.929864674895493976e-03, + 1.928898455931649493e-03, + 1.927929153904620269e-03, + 1.926956770549285687e-03, + 1.925981307605403392e-03, + 1.925002766817684964e-03, + 1.924021149935762525e-03, + 1.923036458714111547e-03, + 1.922048694912175098e-03, + 1.921057860294292071e-03, + 1.920063956629644922e-03, + 1.919066985692387175e-03, + 1.918066949261486211e-03, + 1.917063849120854459e-03, + 1.916057687059291711e-03, + 1.915048464870390587e-03, + 1.914036184352788496e-03, + 1.913020847309850406e-03, + 1.912002455549843176e-03, + 1.910981010885947273e-03, + 1.909956515136210361e-03, + 1.908928970123478785e-03, + 1.907898377675509242e-03, + 1.906864739624937336e-03, + 1.905828057809168512e-03, + 1.904788334070531795e-03, + 1.903745570256187630e-03, + 1.902699768218149134e-03, + 1.901650929813224634e-03, + 1.900599056903052794e-03, + 1.899544151354228385e-03, + 1.898486215038042504e-03, + 1.897425249830641310e-03, + 1.896361257613026234e-03, + 1.895294240271017767e-03, + 1.894224199695260669e-03, + 1.893151137781149155e-03, + 1.892075056428957867e-03, + 1.890995957543765114e-03, + 1.889913843035392156e-03, + 1.888828714818517477e-03, + 1.887740574812631468e-03, + 1.886649424941964004e-03, + 1.885555267135504386e-03, + 1.884458103327183928e-03, + 1.883357935455546358e-03, + 1.882254765464029707e-03, + 1.881148595300765301e-03, + 1.880039426918712637e-03, + 1.878927262275619696e-03, + 1.877812103333913879e-03, + 1.876693952060863330e-03, + 1.875572810428504733e-03, + 1.874448680413542696e-03, + 1.873321563997517366e-03, + 1.872191463166718349e-03, + 1.871058379912097320e-03, + 1.869922316229439543e-03, + 1.868783274119250899e-03, + 1.867641255586716034e-03, + 1.866496262641810467e-03, + 1.865348297299248333e-03, + 1.864197361578383717e-03, + 1.863043457503404292e-03, + 1.861886587103079790e-03, + 1.860726752411081186e-03, + 1.859563955465624646e-03, + 1.858398198309670372e-03, + 1.857229482990931275e-03, + 1.856057811561806405e-03, + 1.854883186079338232e-03, + 1.853705608605322585e-03, + 1.852525081206245336e-03, + 1.851341605953210189e-03, + 1.850155184922068138e-03, + 1.848965820193327909e-03, + 1.847773513852203880e-03, + 1.846578267988524362e-03, + 1.845380084696759135e-03, + 1.844178966076202896e-03, + 1.842974914230640455e-03, + 1.841767931268529970e-03, + 1.840558019303137382e-03, + 1.839345180452179934e-03, + 1.838129416838163140e-03, + 1.836910730588135537e-03, + 1.835689123833845679e-03, + 1.834464598711686842e-03, + 1.833237157362602046e-03, + 1.832006801932243439e-03, + 1.830773534570882951e-03, + 1.829537357433335537e-03, + 1.828298272679105326e-03, + 1.827056282472315583e-03, + 1.825811388981609176e-03, + 1.824563594380326824e-03, + 1.823312900846400623e-03, + 1.822059310562279240e-03, + 1.820802825715118296e-03, + 1.819543448496541409e-03, + 1.818281181102856820e-03, + 1.817016025734943764e-03, + 1.815747984598180048e-03, + 1.814477059902595358e-03, + 1.813203253862799699e-03, + 1.811926568697878881e-03, + 1.810647006631564736e-03, + 1.809364569892152720e-03, + 1.808079260712403252e-03, + 1.806791081329716482e-03, + 1.805500033986042092e-03, + 1.804206120927778030e-03, + 1.802909344405981707e-03, + 1.801609706676110881e-03, + 1.800307209998341972e-03, + 1.799001856637215098e-03, + 1.797693648861792368e-03, + 1.796382588945828101e-03, + 1.795068679167414073e-03, + 1.793751921809198747e-03, + 1.792432319158380983e-03, + 1.791109873506635660e-03, + 1.789784587150180031e-03, + 1.788456462389628439e-03, + 1.787125501530171644e-03, + 1.785791706881503099e-03, + 1.784455080757703805e-03, + 1.783115625477423808e-03, + 1.781773343363783971e-03, + 1.780428236744332387e-03, + 1.779080307951043513e-03, + 1.777729559320533710e-03, + 1.776375993193684156e-03, + 1.775019611915968276e-03, + 1.773660417837196303e-03, + 1.772298413311715424e-03, + 1.770933600698319137e-03, + 1.769565982360155098e-03, + 1.768195560664881025e-03, + 1.766822337984605721e-03, + 1.765446316695768077e-03, + 1.764067499179312491e-03, + 1.762685887820611245e-03, + 1.761301485009364540e-03, + 1.759914293139763558e-03, + 1.758524314610424542e-03, + 1.757131551824256312e-03, + 1.755736007188697916e-03, + 1.754337683115462111e-03, + 1.752936582020737455e-03, + 1.751532706325109167e-03, + 1.750126058453410583e-03, + 1.748716640835076396e-03, + 1.747304455903731955e-03, + 1.745889506097393412e-03, + 1.744471793858514991e-03, + 1.743051321633904208e-03, + 1.741628091874644667e-03, + 1.740202107036241787e-03, + 1.738773369578549719e-03, + 1.737341881965777206e-03, + 1.735907646666385229e-03, + 1.734470666153267856e-03, + 1.733030942903646425e-03, + 1.731588479399008172e-03, + 1.730143278125138764e-03, + 1.728695341572318968e-03, + 1.727244672234965351e-03, + 1.725791272611836491e-03, + 1.724335145206051844e-03, + 1.722876292525011947e-03, + 1.721414717080440486e-03, + 1.719950421388261128e-03, + 1.718483407968781403e-03, + 1.717013679346587321e-03, + 1.715541238050468341e-03, + 1.714066086613558540e-03, + 1.712588227573293891e-03, + 1.711107663471286063e-03, + 1.709624396853393763e-03, + 1.708138430269925912e-03, + 1.706649766275215776e-03, + 1.705158407427976143e-03, + 1.703664356291169227e-03, + 1.702167615431896723e-03, + 1.700668187421632482e-03, + 1.699166074835947336e-03, + 1.697661280254736784e-03, + 1.696153806262125146e-03, + 1.694643655446358230e-03, + 1.693130830399990246e-03, + 1.691615333719787961e-03, + 1.690097168006620331e-03, + 1.688576335865663415e-03, + 1.687052839906295421e-03, + 1.685526682741968771e-03, + 1.683997866990444292e-03, + 1.682466395273650482e-03, + 1.680932270217608705e-03, + 1.679395494452632894e-03, + 1.677856070613055472e-03, + 1.676314001337594244e-03, + 1.674769289268944516e-03, + 1.673221937053972087e-03, + 1.671671947343777651e-03, + 1.670119322793600950e-03, + 1.668564066062723636e-03, + 1.667006179814674825e-03, + 1.665445666717078237e-03, + 1.663882529441717672e-03, + 1.662316770664403658e-03, + 1.660748393065170775e-03, + 1.659177399328166632e-03, + 1.657603792141585947e-03, + 1.656027574197684211e-03, + 1.654448748193038110e-03, + 1.652867316828112278e-03, + 1.651283282807453155e-03, + 1.649696648839919051e-03, + 1.648107417638198114e-03, + 1.646515591919234635e-03, + 1.644921174403912896e-03, + 1.643324167817279647e-03, + 1.641724574888457589e-03, + 1.640122398350517654e-03, + 1.638517640940696058e-03, + 1.636910305400280687e-03, + 1.635300394474492255e-03, + 1.633687910912711566e-03, + 1.632072857468346797e-03, + 1.630455236898736360e-03, + 1.628835051965352295e-03, + 1.627212305433687733e-03, + 1.625587000073148471e-03, + 1.623959138657295404e-03, + 1.622328723963564799e-03, + 1.620695758773487089e-03, + 1.619060245872602733e-03, + 1.617422188050341445e-03, + 1.615781588100220810e-03, + 1.614138448819758907e-03, + 1.612492773010329667e-03, + 1.610844563477399237e-03, + 1.609193823030407580e-03, + 1.607540554482644662e-03, + 1.605884760651476615e-03, + 1.604226444358185710e-03, + 1.602565608428042345e-03, + 1.600902255690198582e-03, + 1.599236388977702235e-03, + 1.597568011127757951e-03, + 1.595897124981298515e-03, + 1.594223733383162440e-03, + 1.592547839182348324e-03, + 1.590869445231544088e-03, + 1.589188554387389353e-03, + 1.587505169510508183e-03, + 1.585819293465383969e-03, + 1.584130929120451366e-03, + 1.582440079347906779e-03, + 1.580746747023960763e-03, + 1.579050935028707484e-03, + 1.577352646246005458e-03, + 1.575651883563698947e-03, + 1.573948649873501728e-03, + 1.572242948070881087e-03, + 1.570534781055272708e-03, + 1.568824151729979839e-03, + 1.567111063002022591e-03, + 1.565395517782428502e-03, + 1.563677518985915954e-03, + 1.561957069531147869e-03, + 1.560234172340616140e-03, + 1.558508830340526704e-03, + 1.556781046461015944e-03, + 1.555050823636040976e-03, + 1.553318164803250837e-03, + 1.551583072904213741e-03, + 1.549845550884301065e-03, + 1.548105601692559849e-03, + 1.546363228281950018e-03, + 1.544618433609208858e-03, + 1.542871220634747147e-03, + 1.541121592322854941e-03, + 1.539369551641565827e-03, + 1.537615101562707018e-03, + 1.535858245061798083e-03, + 1.534098985118070033e-03, + 1.532337324714735504e-03, + 1.530573266838519512e-03, + 1.528806814479932025e-03, + 1.527037970633288123e-03, + 1.525266738296635798e-03, + 1.523493120471634300e-03, + 1.521717120163773584e-03, + 1.519938740382222736e-03, + 1.518157984139898060e-03, + 1.516374854453306307e-03, + 1.514589354342773435e-03, + 1.512801486832308657e-03, + 1.511011254949537865e-03, + 1.509218661725738545e-03, + 1.507423710196092613e-03, + 1.505626403399186594e-03, + 1.503826744377474364e-03, + 1.502024736176909604e-03, + 1.500220381847222921e-03, + 1.498413684441807789e-03, + 1.496604647017575054e-03, + 1.494793272635209667e-03, + 1.492979564359017599e-03, + 1.491163525256837151e-03, + 1.489345158400243651e-03, + 1.487524466864436484e-03, + 1.485701453728108766e-03, + 1.483876122073691075e-03, + 1.482048474987222647e-03, + 1.480218515558211949e-03, + 1.478386246879899923e-03, + 1.476551672049106027e-03, + 1.474714794166122637e-03, + 1.472875616334979590e-03, + 1.471034141663126729e-03, + 1.469190373261698886e-03, + 1.467344314245395314e-03, + 1.465495967732360644e-03, + 1.463645336844409750e-03, + 1.461792424706910218e-03, + 1.459937234448650941e-03, + 1.458079769202075878e-03, + 1.456220032103173459e-03, + 1.454358026291328702e-03, + 1.452493754909576704e-03, + 1.450627221104424172e-03, + 1.448758428025938554e-03, + 1.446887378827605352e-03, + 1.445014076666376480e-03, + 1.443138524702941312e-03, + 1.441260726101240962e-03, + 1.439380684028736951e-03, + 1.437498401656450665e-03, + 1.435613882158888336e-03, + 1.433727128713897705e-03, + 1.431838144502910019e-03, + 1.429946932710784123e-03, + 1.428053496525860016e-03, + 1.426157839139819859e-03, + 1.424259963747898528e-03, + 1.422359873548775843e-03, + 1.420457571744473567e-03, + 1.418553061540403113e-03, + 1.416646346145651993e-03, + 1.414737428772426314e-03, + 1.412826312636512654e-03, + 1.410913000957098084e-03, + 1.408997496956647865e-03, + 1.407079803861186699e-03, + 1.405159924899968037e-03, + 1.403237863305737982e-03, + 1.401313622314644212e-03, + 1.399387205166063809e-03, + 1.397458615102873660e-03, + 1.395527855371307344e-03, + 1.393594929220832827e-03, + 1.391659839904397936e-03, + 1.389722590678296125e-03, + 1.387783184802023582e-03, + 1.385841625538548330e-03, + 1.383897916154162551e-03, + 1.381952059918361599e-03, + 1.380004060104119377e-03, + 1.378053919987517117e-03, + 1.376101642848237550e-03, + 1.374147231969008714e-03, + 1.372190690635900160e-03, + 1.370232022138356560e-03, + 1.368271229769108368e-03, + 1.366308316824029791e-03, + 1.364343286602411357e-03, + 1.362376142406802057e-03, + 1.360406887542887260e-03, + 1.358435525319738298e-03, + 1.356462059049639212e-03, + 1.354486492048157876e-03, + 1.352508827633973820e-03, + 1.350529069129136495e-03, + 1.348547219858926491e-03, + 1.346563283151744513e-03, + 1.344577262339193566e-03, + 1.342589160756325721e-03, + 1.340598981741111719e-03, + 1.338606728634935805e-03, + 1.336612404782200640e-03, + 1.334616013530636304e-03, + 1.332617558231159998e-03, + 1.330617042237725121e-03, + 1.328614468907601863e-03, + 1.326609841601221517e-03, + 1.324603163682053089e-03, + 1.322594438516844001e-03, + 1.320583669475507106e-03, + 1.318570859930951345e-03, + 1.316556013259373610e-03, + 1.314539132840095029e-03, + 1.312520222055439320e-03, + 1.310499284291024875e-03, + 1.308476322935410007e-03, + 1.306451341380403253e-03, + 1.304424343020919169e-03, + 1.302395331254781446e-03, + 1.300364309483237465e-03, + 1.298331281110348548e-03, + 1.296296249543300253e-03, + 1.294259218192450730e-03, + 1.292220190471229024e-03, + 1.290179169795987188e-03, + 1.288136159586294105e-03, + 1.286091163264742061e-03, + 1.284044184256865869e-03, + 1.281995225991361875e-03, + 1.279944291899928364e-03, + 1.277891385417328877e-03, + 1.275836509981278372e-03, + 1.273779669032452325e-03, + 1.271720866014818289e-03, + 1.269660104375082725e-03, + 1.267597387563000654e-03, + 1.265532719031407533e-03, + 1.263466102236092837e-03, + 1.261397540635878336e-03, + 1.259327037692420338e-03, + 1.257254596870493318e-03, + 1.255180221637838562e-03, + 1.253103915465023435e-03, + 1.251025681825703980e-03, + 1.248945524196493507e-03, + 1.246863446056859165e-03, + 1.244779450889156635e-03, + 1.242693542178956254e-03, + 1.240605723414428064e-03, + 1.238515998086900599e-03, + 1.236424369690428951e-03, + 1.234330841722118500e-03, + 1.232235417681980727e-03, + 1.230138101072786186e-03, + 1.228038895400335563e-03, + 1.225937804173320243e-03, + 1.223834830903171170e-03, + 1.221729979104327303e-03, + 1.219623252294110057e-03, + 1.217514653992554608e-03, + 1.215404187722699371e-03, + 1.213291857010429008e-03, + 1.211177665384340204e-03, + 1.209061616376001878e-03, + 1.206943713519825724e-03, + 1.204823960352902935e-03, + 1.202702360415345726e-03, + 1.200578917249831316e-03, + 1.198453634402193036e-03, + 1.196326515420780652e-03, + 1.194197563856784754e-03, + 1.192066783264288153e-03, + 1.189934177200159190e-03, + 1.187799749223905155e-03, + 1.185663502897952660e-03, + 1.183525441787490647e-03, + 1.181385569460338550e-03, + 1.179243889487207155e-03, + 1.177100405441515799e-03, + 1.174955120899475207e-03, + 1.172808039439937437e-03, + 1.170659164644446189e-03, + 1.168508500097551871e-03, + 1.166356049386248466e-03, + 1.164201816100286866e-03, + 1.162045803832219976e-03, + 1.159888016177266536e-03, + 1.157728456733379862e-03, + 1.155567129101073504e-03, + 1.153404036883673650e-03, + 1.151239183687203550e-03, + 1.149072573120203970e-03, + 1.146904208794033084e-03, + 1.144734094322708180e-03, + 1.142562233322757127e-03, + 1.140388629413508935e-03, + 1.138213286216922240e-03, + 1.136036207357460403e-03, + 1.133857396462361906e-03, + 1.131676857161483364e-03, + 1.129494593087164217e-03, + 1.127310607874547647e-03, + 1.125124905161182468e-03, + 1.122937488587381341e-03, + 1.120748361796032556e-03, + 1.118557528432483376e-03, + 1.116364992144806530e-03, + 1.114170756583645174e-03, + 1.111974825402073678e-03, + 1.109777202255873450e-03, + 1.107577890803385480e-03, + 1.105376894705363978e-03, + 1.103174217625245033e-03, + 1.100969863229015648e-03, + 1.098763835185042215e-03, + 1.096556137164422665e-03, + 1.094346772840526115e-03, + 1.092135745889584193e-03, + 1.089923059990044853e-03, + 1.087708718822856004e-03, + 1.085492726071765395e-03, + 1.083275085422707616e-03, + 1.081055800564164476e-03, + 1.078834875187184962e-03, + 1.076612312985245155e-03, + 1.074388117654342554e-03, + 1.072162292892781411e-03, + 1.069934842401473697e-03, + 1.067705769883776261e-03, + 1.065475079045344895e-03, + 1.063242773594412754e-03, + 1.061008857241654618e-03, + 1.058773333700059388e-03, + 1.056536206684992969e-03, + 1.054297479914525701e-03, + 1.052057157108785522e-03, + 1.049815241990556883e-03, + 1.047571738284805215e-03, + 1.045326649719046427e-03, + 1.043079980023161072e-03, + 1.040831732929276389e-03, + 1.038581912172018267e-03, + 1.036330521488385481e-03, + 1.034077564617578602e-03, + 1.031823045301307699e-03, + 1.029566967283610185e-03, + 1.027309334310727877e-03, + 1.025050150131371317e-03, + 1.022789418496582951e-03, + 1.020527143159575580e-03, + 1.018263327876070632e-03, + 1.015997976403897659e-03, + 1.013731092503333906e-03, + 1.011462679936960549e-03, + 1.009192742469431758e-03, + 1.006921283868048023e-03, + 1.004648307902073542e-03, + 1.002373818343097909e-03, + 1.000097818965073413e-03, + 9.978203135442081321e-04, + 9.955413058588087269e-04, + 9.932607996895794628e-04, + 9.909787988194112239e-04, + 9.886953070334751886e-04, + 9.864103281190189990e-04, + 9.841238658656594959e-04, + 9.818359240652270274e-04, + 9.795465065116576789e-04, + 9.772556170010355571e-04, + 9.749632593319449390e-04, + 9.726694373048515177e-04, + 9.703741547224532501e-04, + 9.680774153897279532e-04, + 9.657792231137686144e-04, + 9.634795817038798848e-04, + 9.611784949713765265e-04, + 9.588759667298683408e-04, + 9.565720007951147765e-04, + 9.542666009848540598e-04, + 9.519597711191144689e-04, + 9.496515150200429212e-04, + 9.473418365118078293e-04, + 9.450307394206367223e-04, + 9.427182275751685037e-04, + 9.404043048057844981e-04, + 9.380889749451608523e-04, + 9.357722418280649225e-04, + 9.334541092911903667e-04, + 9.311345811735054993e-04, + 9.288136613158444379e-04, + 9.264913535612570843e-04, + 9.241676617548455182e-04, + 9.218425897436116666e-04, + 9.195161413767464608e-04, + 9.171883205054822763e-04, + 9.148591309829277006e-04, + 9.125285766643605927e-04, + 9.101966614070867035e-04, + 9.078633890702570959e-04, + 9.055287635151916710e-04, + 9.031927886051979975e-04, + 9.008554682054305826e-04, + 8.985168061832268663e-04, + 8.961768064076461099e-04, + 8.938354727500855482e-04, + 8.914928090835932224e-04, + 8.891488192832320550e-04, + 8.868035072261189894e-04, + 8.844568767913179794e-04, + 8.821089318596768165e-04, + 8.797596763141356940e-04, + 8.774091140395066804e-04, + 8.750572489225767183e-04, + 8.727040848518910010e-04, + 8.703496257180589344e-04, + 8.679938754135885790e-04, + 8.656368378327849522e-04, + 8.632785168717851563e-04, + 8.609189164289205018e-04, + 8.585580404040924407e-04, + 8.561958926990616151e-04, + 8.538324772177760449e-04, + 8.514677978656646617e-04, + 8.491018585502737356e-04, + 8.467346631807845135e-04, + 8.443662156683655849e-04, + 8.419965199260274905e-04, + 8.396255798684376485e-04, + 8.372533994122478927e-04, + 8.348799824759109162e-04, + 8.325053329795331462e-04, + 8.301294548451788619e-04, + 8.277523519967020351e-04, + 8.253740283595848923e-04, + 8.229944878612448526e-04, + 8.206137344308744993e-04, + 8.182317719992724444e-04, + 8.158486044992089214e-04, + 8.134642358649978510e-04, + 8.110786700328547361e-04, + 8.086919109407385850e-04, + 8.063039625281826677e-04, + 8.039148287366037300e-04, + 8.015245135091442425e-04, + 7.991330207904981690e-04, + 7.967403545272254937e-04, + 7.943465186675925183e-04, + 7.919515171613930767e-04, + 7.895553539602763980e-04, + 7.871580330175187738e-04, + 7.847595582881220031e-04, + 7.823599337286494615e-04, + 7.799591632972779258e-04, + 7.775572509541562281e-04, + 7.751542006607638419e-04, + 7.727500163802232406e-04, + 7.703447020776110635e-04, + 7.679382617193142085e-04, + 7.655306992733967256e-04, + 7.631220187096470885e-04, + 7.607122239994081915e-04, + 7.583013191156789392e-04, + 7.558893080329001169e-04, + 7.534761947272575330e-04, + 7.510619831765227503e-04, + 7.486466773598826488e-04, + 7.462302812582603502e-04, + 7.438127988541367577e-04, + 7.413942341313939973e-04, + 7.389745910756250662e-04, + 7.365538736739681664e-04, + 7.341320859149372442e-04, + 7.317092317887883418e-04, + 7.292853152870980597e-04, + 7.268603404031136455e-04, + 7.244343111315955678e-04, + 7.220072314686502239e-04, + 7.195791054120425148e-04, + 7.171499369610295294e-04, + 7.147197301161928177e-04, + 7.122884888797543276e-04, + 7.098562172554077031e-04, + 7.074229192481501245e-04, + 7.049885988645994373e-04, + 7.025532601128271857e-04, + 7.001169070021900183e-04, + 6.976795435436434567e-04, + 6.952411737495213691e-04, + 6.928018016336391855e-04, + 6.903614312111251965e-04, + 6.879200664984647887e-04, + 6.854777115138711331e-04, + 6.830343702766397598e-04, + 6.805900468075068866e-04, + 6.781447451287062316e-04, + 6.756984692638517021e-04, + 6.732512232377688014e-04, + 6.708030110768085051e-04, + 6.683538368086315053e-04, + 6.659037044623045956e-04, + 6.634526180680770007e-04, + 6.610005816577065041e-04, + 6.585475992642783865e-04, + 6.560936749220994992e-04, + 6.536388126667400057e-04, + 6.511830165354135034e-04, + 6.487262905662598235e-04, + 6.462686387989869871e-04, + 6.438100652743828809e-04, + 6.413505740346851867e-04, + 6.388901691234123541e-04, + 6.364288545851924054e-04, + 6.339666344660854855e-04, + 6.315035128134094140e-04, + 6.290394936755779216e-04, + 6.265745811024082393e-04, + 6.241087791449663816e-04, + 6.216420918553820741e-04, + 6.191745232871808443e-04, + 6.167060774951057785e-04, + 6.142367585349512056e-04, + 6.117665704638844881e-04, + 6.092955173402709234e-04, + 6.068236032235086201e-04, + 6.043508321744016799e-04, + 6.018772082547114467e-04, + 5.994027355275450848e-04, + 5.969274180571718059e-04, + 5.944512599088613240e-04, + 5.919742651491974057e-04, + 5.894964378459136142e-04, + 5.870177820677214631e-04, + 5.845383018846283044e-04, + 5.820580013677709033e-04, + 5.795768845892403402e-04, + 5.770949556224101978e-04, + 5.746122185417020488e-04, + 5.721286774226960444e-04, + 5.696443363419564660e-04, + 5.671591993770761777e-04, + 5.646732706070661800e-04, + 5.621865541116751646e-04, + 5.596990539717753817e-04, + 5.572107742694095865e-04, + 5.547217190876805584e-04, + 5.522318925105640765e-04, + 5.497412986232468653e-04, + 5.472499415118938166e-04, + 5.447578252637519641e-04, + 5.422649539669228014e-04, + 5.397713317106878680e-04, + 5.372769625853364688e-04, + 5.347818506820463044e-04, + 5.322860000929345364e-04, + 5.297894149114383425e-04, + 5.272920992315842728e-04, + 5.247940571485961618e-04, + 5.222952927586682051e-04, + 5.197958101587805361e-04, + 5.172956134470966952e-04, + 5.147947067225000246e-04, + 5.122930940849818125e-04, + 5.097907796354694474e-04, + 5.072877674756441635e-04, + 5.047840617082806130e-04, + 5.022796664370623347e-04, + 4.997745857664131607e-04, + 4.972688238018265969e-04, + 4.947623846496845444e-04, + 4.922552724170914168e-04, + 4.897474912121988584e-04, + 4.872390451440270680e-04, + 4.847299383223022768e-04, + 4.822201748578277083e-04, + 4.797097588619798035e-04, + 4.771986944473773366e-04, + 4.746869857271378691e-04, + 4.721746368152697428e-04, + 4.696616518267184297e-04, + 4.671480348772500887e-04, + 4.646337900832716423e-04, + 4.621189215621686135e-04, + 4.596034334321212459e-04, + 4.570873298119356386e-04, + 4.545706148213726392e-04, + 4.520532925809121381e-04, + 4.495353672118659882e-04, + 4.470168428361405107e-04, + 4.444977235765706458e-04, + 4.419780135567411678e-04, + 4.394577169008715973e-04, + 4.369368377338612498e-04, + 4.344153801816812285e-04, + 4.318933483706303912e-04, + 4.293707464280106453e-04, + 4.268475784816059887e-04, + 4.243238486600769423e-04, + 4.217995610927800852e-04, + 4.192747199095967501e-04, + 4.167493292412587720e-04, + 4.142233932191758837e-04, + 4.116969159752608331e-04, + 4.091699016422589816e-04, + 4.066423543535726626e-04, + 4.041142782430860291e-04, + 4.015856774454969278e-04, + 3.990565560961384394e-04, + 3.965269183308069785e-04, + 3.939967682861463720e-04, + 3.914661100991928197e-04, + 3.889349479077600026e-04, + 3.864032858502678878e-04, + 3.838711280655043661e-04, + 3.813384786932432478e-04, + 3.788053418735044570e-04, + 3.762717217469378392e-04, + 3.737376224548762875e-04, + 3.712030481392175640e-04, + 3.686680029422433470e-04, + 3.661324910069566887e-04, + 3.635965164768996524e-04, + 3.610600834959829301e-04, + 3.585231962088166325e-04, + 3.559858587604733371e-04, + 3.534480752966004109e-04, + 3.509098499632390031e-04, + 3.483711869068769544e-04, + 3.458320902748369409e-04, + 3.432925642145879521e-04, + 3.407526128741386389e-04, + 3.382122404020873499e-04, + 3.356714509474430751e-04, + 3.331302486597299091e-04, + 3.305886376887602900e-04, + 3.280466221849627538e-04, + 3.255042062992067817e-04, + 3.229613941826264541e-04, + 3.204181899869520001e-04, + 3.178745978643376805e-04, + 3.153306219672339056e-04, + 3.127862664484461078e-04, + 3.102415354615163808e-04, + 3.076964331599861676e-04, + 3.051509636980654847e-04, + 3.026051312301185217e-04, + 3.000589399110531420e-04, + 2.975123938961428014e-04, + 2.949654973408520468e-04, + 2.924182544011669801e-04, + 2.898706692334215699e-04, + 2.873227459941168601e-04, + 2.847744888402584823e-04, + 2.822259019291778167e-04, + 2.796769894183551586e-04, + 2.771277554657527857e-04, + 2.745782042296396417e-04, + 2.720283398684109804e-04, + 2.694781665409267985e-04, + 2.669276884063309912e-04, + 2.643769096238774460e-04, + 2.618258343533161813e-04, + 2.592744667543801394e-04, + 2.567228109874569579e-04, + 2.541708712128461288e-04, + 2.516186515911471430e-04, + 2.490661562833125075e-04, + 2.465133894505245802e-04, + 2.439603552540195225e-04, + 2.414070578554224804e-04, + 2.388535014165690709e-04, + 2.362996900993267861e-04, + 2.337456280659339157e-04, + 2.311913194787594496e-04, + 2.286367685004143176e-04, + 2.260819792935729838e-04, + 2.235269560210219103e-04, + 2.209717028460529600e-04, + 2.184162239317737357e-04, + 2.158605234414972965e-04, + 2.133046055387934677e-04, + 2.107484743873133356e-04, + 2.081921341508925717e-04, + 2.056355889933199018e-04, + 2.030788430786689529e-04, + 2.005219005711254311e-04, + 1.979647656348036753e-04, + 1.954074424340862830e-04, + 1.928499351334439971e-04, + 1.902922478972592253e-04, + 1.877343848901602183e-04, + 1.851763502768435856e-04, + 1.826181482218971097e-04, + 1.800597828901340605e-04, + 1.775012584464169302e-04, + 1.749425790554777005e-04, + 1.723837488823112721e-04, + 1.698247720917123204e-04, + 1.672656528486679670e-04, + 1.647063953181799971e-04, + 1.621470036650859395e-04, + 1.595874820543957380e-04, + 1.570278346511133735e-04, + 1.544680656200585667e-04, + 1.519081791262034227e-04, + 1.493481793344931044e-04, + 1.467880704096692971e-04, + 1.442278565166042509e-04, + 1.416675418201246797e-04, + 1.391071304848319999e-04, + 1.365466266754961945e-04, + 1.339860345565347993e-04, + 1.314253582926916137e-04, + 1.288646020482875441e-04, + 1.263037699875558661e-04, + 1.237428662749792490e-04, + 1.211818950745965846e-04, + 1.186208605503968509e-04, + 1.160597668663688494e-04, + 1.134986181863231524e-04, + 1.109374186740001846e-04, + 1.083761724928344764e-04, + 1.058148838062904413e-04, + 1.032535567776846216e-04, + 1.006921955700078108e-04, + 9.813080434625999103e-05, + 9.556938726927373016e-05, + 9.300794850159174807e-05, + 9.044649220551784718e-05, + 8.788502254351087078e-05, + 8.532354367743359496e-05, + 8.276205976923274013e-05, + 8.020057498041829652e-05, + 7.763909347245524643e-05, + 7.507761940658655463e-05, + 7.251615694365522375e-05, + 6.995471024443957017e-05, + 6.739328346947538783e-05, + 6.483188077887773243e-05, + 6.227050633267729521e-05, + 5.970916429064170608e-05, + 5.714785881209813104e-05, + 5.458659405626844650e-05, + 5.202537418209150468e-05, + 4.946420334804556160e-05, + 4.690308571254048724e-05, + 4.434202543345457402e-05, + 4.178102666852724162e-05, + 3.922009357518162762e-05, + 3.665923031028882096e-05, + 3.409844103078931305e-05, + 3.153772989294427491e-05, + 2.897710105272834324e-05, + 2.641655866587970717e-05, + 2.385610688777974831e-05, + 2.129574987327442518e-05, + 1.873549177701060967e-05, + 1.617533675320068304e-05, + 1.361528895573001086e-05, + 1.105535253792195402e-05, + 8.495531652873659703e-06, + 5.935830453277999837e-06, + 3.376253091302701157e-06, + 8.168037186407268456e-07, +-1.742513513096859953e-06, +-4.301694453072648250e-06, +-6.860734950830018763e-06, +-9.419630856242730530e-06, +-1.197837801969298258e-05, +-1.453697229196392548e-05, +-1.709540952447461890e-05, +-1.965368556894433303e-05, +-2.221179627757071347e-05, +-2.476973750320726682e-05, +-2.732750509902812197e-05, +-2.988509491870541915e-05, +-3.244250281653081509e-05, +-3.499972464736452891e-05, +-3.755675626624304053e-05, +-4.011359352912722062e-05, +-4.267023229222466363e-05, +-4.522666841250951524e-05, +-4.778289774733055368e-05, +-5.033891615458789429e-05, +-5.289471949291193033e-05, +-5.545030362132715579e-05, +-5.800566439943011682e-05, +-6.056079768756733611e-05, +-6.311569934649956931e-05, +-6.567036523758000728e-05, +-6.822479122293131947e-05, +-7.077897316511143507e-05, +-7.333290692728962421e-05, +-7.588658837342570306e-05, +-7.844001336793412083e-05, +-8.099317777586125401e-05, +-8.354607746306420477e-05, +-8.609870829581668000e-05, +-8.865106614133049249e-05, +-9.120314686707774491e-05, +-9.375494634153781791e-05, +-9.630646043380551244e-05, +-9.885768501354066137e-05, +-1.014086159510892621e-04, +-1.039592491176605129e-04, +-1.065095803849916325e-04, +-1.090596056255826839e-04, +-1.116093207125896453e-04, +-1.141587215200574326e-04, +-1.167078039225872925e-04, +-1.192565637955118614e-04, +-1.218049970150173947e-04, +-1.243530994580923494e-04, +-1.269008670021364200e-04, +-1.294482955256499835e-04, +-1.319953809078993647e-04, +-1.345421190285807204e-04, +-1.370885057685691420e-04, +-1.396345370092401882e-04, +-1.421802086329894085e-04, +-1.447255165228408368e-04, +-1.472704565626238257e-04, +-1.498150246371512072e-04, +-1.523592166318838684e-04, +-1.549030284331088310e-04, +-1.574464559281149199e-04, +-1.599894950048601563e-04, +-1.625321415521481039e-04, +-1.650743914598043493e-04, +-1.676162406183432188e-04, +-1.701576849191451532e-04, +-1.726987202546311840e-04, +-1.752393425178759535e-04, +-1.777795476030661433e-04, +-1.803193314051085348e-04, +-1.828586898198100686e-04, +-1.853976187440527256e-04, +-1.879361140754598643e-04, +-1.904741717125738401e-04, +-1.930117875550308869e-04, +-1.955489575032309780e-04, +-1.980856774585103492e-04, +-2.006219433233213142e-04, +-2.031577510008966496e-04, +-2.056930963954855987e-04, +-2.082279754122433909e-04, +-2.107623839574122230e-04, +-2.132963179382666417e-04, +-2.158297732627270258e-04, +-2.183627458400437451e-04, +-2.208952315804672644e-04, +-2.234272263949099268e-04, +-2.259587261956361301e-04, +-2.284897268958701970e-04, +-2.310202244097484545e-04, +-2.335502146524938980e-04, +-2.360796935403100213e-04, +-2.386086569906141366e-04, +-2.411371009217047688e-04, +-2.436650212529365095e-04, +-2.461924139048967970e-04, +-2.487192747990754236e-04, +-2.512455998580379545e-04, +-2.537713850056019099e-04, +-2.562966261665066531e-04, +-2.588213192665858326e-04, +-2.613454602329486607e-04, +-2.638690449935860772e-04, +-2.663920694778296920e-04, +-2.689145296159670020e-04, +-2.714364213394137248e-04, +-2.739577405808896562e-04, +-2.764784832740892358e-04, +-2.789986453538549648e-04, +-2.815182227563543479e-04, +-2.840372114187460131e-04, +-2.865556072793599062e-04, +-2.890734062778677277e-04, +-2.915906043549546358e-04, +-2.941071974524941826e-04, +-2.966231815137238470e-04, +-2.991385524828551004e-04, +-3.016533063055899214e-04, +-3.041674389284510839e-04, +-3.066809462995191433e-04, +-3.091938243681024599e-04, +-3.117060690844033729e-04, +-3.142176764002049881e-04, +-3.167286422684794018e-04, +-3.192389626433407546e-04, +-3.217486334801612953e-04, +-3.242576507357485395e-04, +-3.267660103680158890e-04, +-3.292737083362108023e-04, +-3.317807406008110361e-04, +-3.342871031237548761e-04, +-3.367927918681106175e-04, +-3.392978027982528023e-04, +-3.418021318799801807e-04, +-3.443057750804644820e-04, +-3.468087283678668786e-04, +-3.493109877120719907e-04, +-3.518125490840217522e-04, +-3.543134084562275343e-04, +-3.568135618023809161e-04, +-3.593130050975332289e-04, +-3.618117343182664807e-04, +-3.643097454423647888e-04, +-3.668070344489879060e-04, +-3.693035973188484879e-04, +-3.717994300338796224e-04, +-3.742945285774100365e-04, +-3.767888889343391952e-04, +-3.792825070908088965e-04, +-3.817753790343735997e-04, +-3.842675007541789390e-04, +-3.867588682406305003e-04, +-3.892494774855703829e-04, +-3.917393244824453054e-04, +-3.942284052259304957e-04, +-3.967167157123748108e-04, +-3.992042519394241925e-04, +-4.016910099061873343e-04, +-4.041769856134141948e-04, +-4.066621750631703577e-04, +-4.091465742590036738e-04, +-4.116301792061231543e-04, +-4.141129859110704572e-04, +-4.165949903818909209e-04, +-4.190761886283100174e-04, +-4.215565766614031047e-04, +-4.240361504938265245e-04, +-4.265149061397114044e-04, +-4.289928396148395156e-04, +-4.314699469365877618e-04, +-4.339462241235548341e-04, +-4.364216671962244175e-04, +-4.388962721765916290e-04, +-4.413700350881057176e-04, +-4.438429519557956148e-04, +-4.463150188064357094e-04, +-4.487862316682245437e-04, +-4.512565865710094605e-04, +-4.537260795461849593e-04, +-4.561947066269175051e-04, +-4.586624638478218404e-04, +-4.611293472451331019e-04, +-4.635953528568241859e-04, +-4.660604767225575004e-04, +-4.685247148832983395e-04, +-4.709880633820494843e-04, +-4.734505182632418809e-04, +-4.759120755729664975e-04, +-4.783727313591427011e-04, +-4.808324816711434481e-04, +-4.832913225602340616e-04, +-4.857492500792045783e-04, +-4.882062602825288007e-04, +-4.906623492265496959e-04, +-4.931175129691382514e-04, +-4.955717475698820720e-04, +-4.980250490902462211e-04, +-5.004774135932519175e-04, +-5.029288371436488152e-04, +-5.053793158080866323e-04, +-5.078288456547880476e-04, +-5.102774227537262928e-04, +-5.127250431767876740e-04, +-5.151717029974048952e-04, +-5.176173982910425636e-04, +-5.200621251345596786e-04, +-5.225058796069204353e-04, +-5.249486577888188730e-04, +-5.273904557626274848e-04, +-5.298312696125212495e-04, +-5.322710954246385280e-04, +-5.347099292867619818e-04, +-5.371477672884969251e-04, +-5.395846055214258228e-04, +-5.420204400788030882e-04, +-5.444552670557686706e-04, +-5.468890825492493928e-04, +-5.493218826581278700e-04, +-5.517536634831964309e-04, +-5.541844211267762379e-04, +-5.566141516933871070e-04, +-5.590428512894150912e-04, +-5.614705160227995802e-04, +-5.638971420037488733e-04, +-5.663227253440862976e-04, +-5.687472621577472059e-04, +-5.711707485604162029e-04, +-5.735931806696784995e-04, +-5.760145546052006498e-04, +-5.784348664884090847e-04, +-5.808541124426578380e-04, +-5.832722885933973572e-04, +-5.856893910678561809e-04, +-5.881054159952099668e-04, +-5.905203595067488919e-04, +-5.929342177355583551e-04, +-5.953469868166925581e-04, +-5.977586628873376778e-04, +-6.001692420864375996e-04, +-6.025787205551419098e-04, +-6.049870944364257744e-04, +-6.073943598752574481e-04, +-6.098005130187725059e-04, +-6.122055500159523768e-04, +-6.146094670177939135e-04, +-6.170122601774731064e-04, +-6.194139256500348937e-04, +-6.218144595925537317e-04, +-6.242138581643065249e-04, +-6.266121175264539791e-04, +-6.290092338422077854e-04, +-6.314052032770009482e-04, +-6.338000219981629584e-04, +-6.361936861751511622e-04, +-6.385861919794420154e-04, +-6.409775355847078084e-04, +-6.433677131667537826e-04, +-6.457567209031635962e-04, +-6.481445549739394373e-04, +-6.505312115611383821e-04, +-6.529166868488226307e-04, +-6.553009770232262566e-04, +-6.576840782726511240e-04, +-6.600659867876967381e-04, +-6.624466987609324911e-04, +-6.648262103870769893e-04, +-6.672045178631510337e-04, +-6.695816173881771879e-04, +-6.719575051633340599e-04, +-6.743321773920738296e-04, +-6.767056302800796399e-04, +-6.790778600348902454e-04, +-6.814488628666039854e-04, +-6.838186349872458266e-04, +-6.861871726112473389e-04, +-6.885544719550858736e-04, +-6.909205292374491448e-04, +-6.932853406793976431e-04, +-6.956489025040557463e-04, +-6.980112109367738078e-04, +-7.003722622052985930e-04, +-7.027320525394513797e-04, +-7.050905781713027315e-04, +-7.074478353353335020e-04, +-7.098038202681232348e-04, +-7.121585292085146372e-04, +-7.145119583977780535e-04, +-7.168641040793011666e-04, +-7.192149624987539047e-04, +-7.215645299042516142e-04, +-7.239128025459909844e-04, +-7.262597766767330595e-04, +-7.286054485511768951e-04, +-7.309498144266429309e-04, +-7.332928705627270215e-04, +-7.356346132212312648e-04, +-7.379750386662949730e-04, +-7.403141431645470037e-04, +-7.426519229848013151e-04, +-7.449883743982156940e-04, +-7.473234936784645772e-04, +-7.496572771014173688e-04, +-7.519897209453649299e-04, +-7.543208214909146283e-04, +-7.566505750211583890e-04, +-7.589789778216187019e-04, +-7.613060261798951711e-04, +-7.636317163862946537e-04, +-7.659560447334752076e-04, +-7.682790075163896046e-04, +-7.706006010324651994e-04, +-7.729208215814846678e-04, +-7.752396654658183506e-04, +-7.775571289901089681e-04, +-7.798732084614317566e-04, +-7.821879001894621944e-04, +-7.845012004861661370e-04, +-7.868131056659660250e-04, +-7.891236120458914802e-04, +-7.914327159452899316e-04, +-7.937404136859766693e-04, +-7.960467015923971493e-04, +-7.983515759913256942e-04, +-8.006550332120272555e-04, +-8.029570695864100697e-04, +-8.052576814486835923e-04, +-8.075568651357647489e-04, +-8.098546169869256768e-04, +-8.121509333439603682e-04, +-8.144458105513432879e-04, +-8.167392449559128954e-04, +-8.190312329070517303e-04, +-8.213217707568377674e-04, +-8.236108548597341180e-04, +-8.258984815727632607e-04, +-8.281846472556567704e-04, +-8.304693482705570538e-04, +-8.327525809821735830e-04, +-8.350343417579521397e-04, +-8.373146269677042347e-04, +-8.395934329840930473e-04, +-8.418707561820132617e-04, +-8.441465929392663083e-04, +-8.464209396362027934e-04, +-8.486937926556856367e-04, +-8.509651483831925283e-04, +-8.532350032069733548e-04, +-8.555033535177567058e-04, +-8.577701957089514271e-04, +-8.600355261765539215e-04, +-8.622993413193582668e-04, +-8.645616375386575188e-04, +-8.668224112384009198e-04, +-8.690816588253496991e-04, +-8.713393767087796761e-04, +-8.735955613006417221e-04, +-8.758502090156673617e-04, +-8.781033162713162976e-04, +-8.803548794874452950e-04, +-8.826048950869513302e-04, +-8.848533594951860136e-04, +-8.871002691404073761e-04, +-8.893456204534327079e-04, +-8.915894098678044414e-04, +-8.938316338199314226e-04, +-8.960722887488092956e-04, +-8.983113710961618823e-04, +-9.005488773066096676e-04, +-9.027848038273670900e-04, +-9.050191471084001850e-04, +-9.072519036025883474e-04, +-9.094830697654107806e-04, +-9.117126420551333044e-04, +-9.139406169329346644e-04, +-9.161669908625748749e-04, +-9.183917603108059146e-04, +-9.206149217470145901e-04, +-9.228364716433876602e-04, +-9.250564064751156659e-04, +-9.272747227198446492e-04, +-9.294914168583384923e-04, +-9.317064853741227571e-04, +-9.339199247534566047e-04, +-9.361317314854265782e-04, +-9.383419020621002350e-04, +-9.405504329782453377e-04, +-9.427573207315207825e-04, +-9.449625618223909474e-04, +-9.471661527543264857e-04, +-9.493680900335153871e-04, +-9.515683701690097777e-04, +-9.537669896728406295e-04, +-9.559639450599636580e-04, +-9.581592328479304841e-04, +-9.603528495574752957e-04, +-9.625447917121816724e-04, +-9.647350558384361818e-04, +-9.669236384655825528e-04, +-9.691105361258295185e-04, +-9.712957453544538875e-04, +-9.734792626895048817e-04, +-9.756610846719627550e-04, +-9.778412078458914494e-04, +-9.800196287581511723e-04, +-9.821963439585405364e-04, +-9.843713499999172303e-04, +-9.865446434381376292e-04, +-9.887162208317302331e-04, +-9.908860787425323099e-04, +-9.930542137351111489e-04, +-9.952206223772092335e-04, +-9.973853012394072719e-04, +-9.995482468952720818e-04, +-1.001709455921510330e-03, +-1.003868924897691629e-03, +-1.006026650406383408e-03, +-1.008182629033312679e-03, +-1.010336857367080243e-03, +-1.012489331999304448e-03, +-1.014640049524777972e-03, +-1.016789006541181806e-03, +-1.018936199649236613e-03, +-1.021081625452848656e-03, +-1.023225280558827041e-03, +-1.025367161577040928e-03, +-1.027507265120555487e-03, +-1.029645587805316179e-03, +-1.031782126250577018e-03, +-1.033916877078328109e-03, +-1.036049836913928391e-03, +-1.038181002385781026e-03, +-1.040310370125277235e-03, +-1.042437936766910361e-03, +-1.044563698948420497e-03, +-1.046687653310508044e-03, +-1.048809796497033198e-03, +-1.050930125154929872e-03, +-1.053048635934397377e-03, +-1.055165325488620701e-03, +-1.057280190473916656e-03, +-1.059393227549841653e-03, +-1.061504433379138138e-03, +-1.063613804627416273e-03, +-1.065721337963724657e-03, +-1.067827030060275375e-03, +-1.069930877592158202e-03, +-1.072032877237964667e-03, +-1.074133025679228828e-03, +-1.076231319600851836e-03, +-1.078327755690783405e-03, +-1.080422330640158418e-03, +-1.082515041143456737e-03, +-1.084605883898216326e-03, +-1.086694855605178532e-03, +-1.088781952968447247e-03, +-1.090867172695195089e-03, +-1.092950511495816924e-03, +-1.095031966084084691e-03, +-1.097111533176854453e-03, +-1.099189209494224467e-03, +-1.101264991759673536e-03, +-1.103338876699747452e-03, +-1.105410861044427411e-03, +-1.107480941526815810e-03, +-1.109549114883280011e-03, +-1.111615377853596978e-03, +-1.113679727180670728e-03, +-1.115742159610696050e-03, +-1.117802671893282102e-03, +-1.119861260781195023e-03, +-1.121917923030493021e-03, +-1.123972655400674696e-03, +-1.126025454654398230e-03, +-1.128076317557685868e-03, +-1.130125240879828723e-03, +-1.132172221393523389e-03, +-1.134217255874843747e-03, +-1.136260341102917010e-03, +-1.138301473860477532e-03, +-1.140340650933609201e-03, +-1.142377869111454438e-03, +-1.144413125186790562e-03, +-1.146446415955698021e-03, +-1.148477738217535240e-03, +-1.150507088775057883e-03, +-1.152534464434363994e-03, +-1.154559862005049035e-03, +-1.156583278299957605e-03, +-1.158604710135326338e-03, +-1.160624154330907503e-03, +-1.162641607709722670e-03, +-1.164657067098186748e-03, +-1.166670529326261068e-03, +-1.168681991227183857e-03, +-1.170691449637597083e-03, +-1.172698901397715814e-03, +-1.174704343350984302e-03, +-1.176707772344468906e-03, +-1.178709185228527835e-03, +-1.180708578856967282e-03, +-1.182705950087167401e-03, +-1.184701295779828608e-03, +-1.186694612799099298e-03, +-1.188685898012734358e-03, +-1.190675148291803513e-03, +-1.192662360510858945e-03, +-1.194647531548058460e-03, +-1.196630658284904411e-03, +-1.198611737606381173e-03, +-1.200590766401100863e-03, +-1.202567741560991088e-03, +-1.204542659981695232e-03, +-1.206515518562052691e-03, +-1.208486314204686943e-03, +-1.210455043815720404e-03, +-1.212421704304541756e-03, +-1.214386292584314873e-03, +-1.216348805571698015e-03, +-1.218309240186793516e-03, +-1.220267593353235825e-03, +-1.222223861998338740e-03, +-1.224178043052828258e-03, +-1.226130133451031013e-03, +-1.228080130130781034e-03, +-1.230028030033613815e-03, +-1.231973830104490276e-03, +-1.233917527291952029e-03, +-1.235859118548198344e-03, +-1.237798600829055802e-03, +-1.239735971093669075e-03, +-1.241671226305090733e-03, +-1.243604363429737410e-03, +-1.245535379437810904e-03, +-1.247464271302977474e-03, +-1.249391036002518761e-03, +-1.251315670517462973e-03, +-1.253238171832317524e-03, +-1.255158536935223855e-03, +-1.257076762818076050e-03, +-1.258992846476271249e-03, +-1.260906784908848643e-03, +-1.262818575118616546e-03, +-1.264728214111892615e-03, +-1.266635698898662581e-03, +-1.268541026492686500e-03, +-1.270444193911260010e-03, +-1.272345198175344220e-03, +-1.274244036309695816e-03, +-1.276140705342576707e-03, +-1.278035202306108996e-03, +-1.279927524235954274e-03, +-1.281817668171477548e-03, +-1.283705631155857615e-03, +-1.285591410235842466e-03, +-1.287475002461887629e-03, +-1.289356404888279770e-03, +-1.291235614572897516e-03, +-1.293112628577320743e-03, +-1.294987443966997978e-03, +-1.296860057810955182e-03, +-1.298730467182007816e-03, +-1.300598669156655682e-03, +-1.302464660815221041e-03, +-1.304328439241817395e-03, +-1.306190001524050459e-03, +-1.308049344753532076e-03, +-1.309906466025592686e-03, +-1.311761362439234921e-03, +-1.313614031097232919e-03, +-1.315464469106255706e-03, +-1.317312673576621950e-03, +-1.319158641622469961e-03, +-1.321002370361684837e-03, +-1.322843856916069982e-03, +-1.324683098411082779e-03, +-1.326520091975993097e-03, +-1.328354834743948566e-03, +-1.330187323851951368e-03, +-1.332017556440556619e-03, +-1.333845529654434413e-03, +-1.335671240641907740e-03, +-1.337494686555117064e-03, +-1.339315864550167344e-03, +-1.341134771786827275e-03, +-1.342951405428859102e-03, +-1.344765762643758411e-03, +-1.346577840602859516e-03, +-1.348387636481472715e-03, +-1.350195147458643167e-03, +-1.352000370717272321e-03, +-1.353803303444250190e-03, +-1.355603942830212270e-03, +-1.357402286069666394e-03, +-1.359198330361121969e-03, +-1.360992072906849065e-03, +-1.362783510912999848e-03, +-1.364572641589744534e-03, +-1.366359462150977793e-03, +-1.368143969814704288e-03, +-1.369926161802541027e-03, +-1.371706035340264232e-03, +-1.373483587657512274e-03, +-1.375258815987764199e-03, +-1.377031717568420830e-03, +-1.378802289640928365e-03, +-1.380570529450533346e-03, +-1.382336434246431199e-03, +-1.384100001281861640e-03, +-1.385861227813894436e-03, +-1.387620111103577509e-03, +-1.389376648415876440e-03, +-1.391130837019789387e-03, +-1.392882674188313484e-03, +-1.394632157198169662e-03, +-1.396379283330280354e-03, +-1.398124049869549183e-03, +-1.399866454104609645e-03, +-1.401606493328355066e-03, +-1.403344164837464587e-03, +-1.405079465932768546e-03, +-1.406812393918964628e-03, +-1.408542946104746670e-03, +-1.410271119802934334e-03, +-1.411996912330229590e-03, +-1.413720321007345742e-03, +-1.415441343159121483e-03, +-1.417159976114306004e-03, +-1.418876217205660263e-03, +-1.420590063770095111e-03, +-1.422301513148427126e-03, +-1.424010562685513494e-03, +-1.425717209730360206e-03, +-1.427421451635867491e-03, +-1.429123285759128408e-03, +-1.430822709461178170e-03, +-1.432519720107096935e-03, +-1.434214315066154651e-03, +-1.435906491711549764e-03, +-1.437596247420556885e-03, +-1.439283579574636299e-03, +-1.440968485559206060e-03, +-1.442650962763768630e-03, +-1.444331008582011924e-03, +-1.446008620411610253e-03, +-1.447683795654322331e-03, +-1.449356531716107293e-03, +-1.451026826006920206e-03, +-1.452694675940857790e-03, +-1.454360078936080139e-03, +-1.456023032414929981e-03, +-1.457683533803913380e-03, +-1.459341580533423267e-03, +-1.460997170038198052e-03, +-1.462650299757070746e-03, +-1.464300967132923853e-03, +-1.465949169612816875e-03, +-1.467594904647914972e-03, +-1.469238169693617762e-03, +-1.470878962209386503e-03, +-1.472517279658811526e-03, +-1.474153119509756657e-03, +-1.475786479234134562e-03, +-1.477417356308016695e-03, +-1.479045748211713085e-03, +-1.480671652429742637e-03, +-1.482295066450578774e-03, +-1.483915987767123450e-03, +-1.485534413876279979e-03, +-1.487150342279281541e-03, +-1.488763770481448326e-03, +-1.490374695992283593e-03, +-1.491983116325597486e-03, +-1.493589028999295614e-03, +-1.495192431535487905e-03, +-1.496793321460596592e-03, +-1.498391696305153686e-03, +-1.499987553603897685e-03, +-1.501580890895902161e-03, +-1.503171705724351982e-03, +-1.504759995636661268e-03, +-1.506345758184588109e-03, +-1.507928990924002535e-03, +-1.509509691415025952e-03, +-1.511087857222122213e-03, +-1.512663485913859525e-03, +-1.514236575063239616e-03, +-1.515807122247258198e-03, +-1.517375125047387436e-03, +-1.518940581049323764e-03, +-1.520503487842954056e-03, +-1.522063843022439765e-03, +-1.523621644186313843e-03, +-1.525176888937280822e-03, +-1.526729574882321324e-03, +-1.528279699632807643e-03, +-1.529827260804295140e-03, +-1.531372256016659940e-03, +-1.532914682894039732e-03, +-1.534454539064932649e-03, +-1.535991822162184042e-03, +-1.537526529822725186e-03, +-1.539058659688005660e-03, +-1.540588209403759377e-03, +-1.542115176619953624e-03, +-1.543639558990922639e-03, +-1.545161354175278706e-03, +-1.546680559836067625e-03, +-1.548197173640561853e-03, +-1.549711193260365884e-03, +-1.551222616371525321e-03, +-1.552731440654323697e-03, +-1.554237663793379184e-03, +-1.555741283477744125e-03, +-1.557242297400837812e-03, +-1.558740703260243742e-03, +-1.560236498758130284e-03, +-1.561729681600895281e-03, +-1.563220249499303960e-03, +-1.564708200168591929e-03, +-1.566193531328224269e-03, +-1.567676240702190220e-03, +-1.569156326018740369e-03, +-1.570633785010519794e-03, +-1.572108615414656097e-03, +-1.573580814972560561e-03, +-1.575050381430051320e-03, +-1.576517312537426430e-03, +-1.577981606049289748e-03, +-1.579443259724653496e-03, +-1.580902271327034973e-03, +-1.582358638624248824e-03, +-1.583812359388534971e-03, +-1.585263431396651858e-03, +-1.586711852429633805e-03, +-1.588157620273120173e-03, +-1.589600732716925152e-03, +-1.591041187555504834e-03, +-1.592478982587716739e-03, +-1.593914115616781434e-03, +-1.595346584450364497e-03, +-1.596776386900671495e-03, +-1.598203520784261498e-03, +-1.599627983922166131e-03, +-1.601049774139846416e-03, +-1.602468889267315288e-03, +-1.603885327138950033e-03, +-1.605299085593585957e-03, +-1.606710162474626977e-03, +-1.608118555629848515e-03, +-1.609524262911494856e-03, +-1.610927282176363067e-03, +-1.612327611285745100e-03, +-1.613725248105237408e-03, +-1.615120190505136893e-03, +-1.616512436360078566e-03, +-1.617901983549310070e-03, +-1.619288829956483725e-03, +-1.620672973469746737e-03, +-1.622054411981850054e-03, +-1.623433143389948000e-03, +-1.624809165595711901e-03, +-1.626182476505405334e-03, +-1.627553074029726909e-03, +-1.628920956083885303e-03, +-1.630286120587706375e-03, +-1.631648565465444950e-03, +-1.633008288645886085e-03, +-1.634365288062438739e-03, +-1.635719561652917856e-03, +-1.637071107359802180e-03, +-1.638419923130013086e-03, +-1.639766006915020823e-03, +-1.641109356670963351e-03, +-1.642449970358315654e-03, +-1.643787845942273548e-03, +-1.645122981392575009e-03, +-1.646455374683456147e-03, +-1.647785023793697833e-03, +-1.649111926706747127e-03, +-1.650436081410536215e-03, +-1.651757485897575655e-03, +-1.653076138164945481e-03, +-1.654392036214371751e-03, +-1.655705178052074974e-03, +-1.657015561688869208e-03, +-1.658323185140202173e-03, +-1.659628046426139206e-03, +-1.660930143571174612e-03, +-1.662229474604552150e-03, +-1.663526037560097417e-03, +-1.664819830476178385e-03, +-1.666110851395792352e-03, +-1.667399098366510648e-03, +-1.668684569440607654e-03, +-1.669967262674876708e-03, +-1.671247176130729629e-03, +-1.672524307874282161e-03, +-1.673798655976189596e-03, +-1.675070218511715524e-03, +-1.676338993560825066e-03, +-1.677604979208136525e-03, +-1.678868173542721887e-03, +-1.680128574658495836e-03, +-1.681386180653868592e-03, +-1.682640989631995930e-03, +-1.683892999700608521e-03, +-1.685142208972065930e-03, +-1.686388615563474578e-03, +-1.687632217596504074e-03, +-1.688873013197478724e-03, +-1.690111000497468603e-03, +-1.691346177632115219e-03, +-1.692578542741720628e-03, +-1.693808093971352173e-03, +-1.695034829470648628e-03, +-1.696258747393922543e-03, +-1.697479845900247636e-03, +-1.698698123153293557e-03, +-1.699913577321398965e-03, +-1.701126206577686885e-03, +-1.702336009099832907e-03, +-1.703542983070363342e-03, +-1.704747126676278571e-03, +-1.705948438109456365e-03, +-1.707146915566432879e-03, +-1.708342557248390507e-03, +-1.709535361361216432e-03, +-1.710725326115578298e-03, +-1.711912449726776548e-03, +-1.713096730414839395e-03, +-1.714278166404495070e-03, +-1.715456755925247280e-03, +-1.716632497211254427e-03, +-1.717805388501382306e-03, +-1.718975428039283245e-03, +-1.720142614073358594e-03, +-1.721306944856571593e-03, +-1.722468418646781090e-03, +-1.723627033706560908e-03, +-1.724782788303144774e-03, +-1.725935680708556635e-03, +-1.727085709199516986e-03, +-1.728232872057574926e-03, +-1.729377167568951377e-03, +-1.730518594024611084e-03, +-1.731657149720346308e-03, +-1.732792832956625909e-03, +-1.733925642038681211e-03, +-1.735055575276570408e-03, +-1.736182630985045857e-03, +-1.737306807483605031e-03, +-1.738428103096610220e-03, +-1.739546516153103566e-03, +-1.740662044986902466e-03, +-1.741774687936668321e-03, +-1.742884443345746933e-03, +-1.743991309562350003e-03, +-1.745095284939404863e-03, +-1.746196367834625812e-03, +-1.747294556610566162e-03, +-1.748389849634524778e-03, +-1.749482245278566241e-03, +-1.750571741919625590e-03, +-1.751658337939365631e-03, +-1.752742031724252407e-03, +-1.753822821665605497e-03, +-1.754900706159493720e-03, +-1.755975683606803223e-03, +-1.757047752413209507e-03, +-1.758116910989235759e-03, +-1.759183157750259787e-03, +-1.760246491116300438e-03, +-1.761306909512371042e-03, +-1.762364411368279272e-03, +-1.763418995118515471e-03, +-1.764470659202538880e-03, +-1.765519402064613490e-03, +-1.766565222153777251e-03, +-1.767608117923925989e-03, +-1.768648087833763535e-03, +-1.769685130346894094e-03, +-1.770719243931696699e-03, +-1.771750427061385491e-03, +-1.772778678214086048e-03, +-1.773803995872692482e-03, +-1.774826378524957220e-03, +-1.775845824663531544e-03, +-1.776862332785872356e-03, +-1.777875901394268413e-03, +-1.778886528995934869e-03, +-1.779894214102859104e-03, +-1.780898955231975927e-03, +-1.781900750905009720e-03, +-1.782899599648550765e-03, +-1.783895499994122462e-03, +-1.784888450478048843e-03, +-1.785878449641519622e-03, +-1.786865496030669558e-03, +-1.787849588196433175e-03, +-1.788830724694628026e-03, +-1.789808904086008035e-03, +-1.790784124936146407e-03, +-1.791756385815501543e-03, +-1.792725685299469737e-03, +-1.793692021968261137e-03, +-1.794655394407068238e-03, +-1.795615801205836890e-03, +-1.796573240959529550e-03, +-1.797527712267990400e-03, +-1.798479213735848861e-03, +-1.799427743972761146e-03, +-1.800373301593243729e-03, +-1.801315885216690262e-03, +-1.802255493467396288e-03, +-1.803192124974618881e-03, +-1.804125778372466481e-03, +-1.805056452299984553e-03, +-1.805984145401094655e-03, +-1.806908856324711309e-03, +-1.807830583724599110e-03, +-1.808749326259421726e-03, +-1.809665082592832328e-03, +-1.810577851393411998e-03, +-1.811487631334545269e-03, +-1.812394421094657348e-03, +-1.813298219357101573e-03, +-1.814199024810090460e-03, +-1.815096836146813447e-03, +-1.815991652065361214e-03, +-1.816883471268822400e-03, +-1.817772292465162165e-03, +-1.818658114367283562e-03, +-1.819540935693092368e-03, +-1.820420755165376306e-03, +-1.821297571511865977e-03, +-1.822171383465300996e-03, +-1.823042189763302706e-03, +-1.823909989148444436e-03, +-1.824774780368323707e-03, +-1.825636562175387027e-03, +-1.826495333327138705e-03, +-1.827351092585968685e-03, +-1.828203838719221494e-03, +-1.829053570499271928e-03, +-1.829900286703389518e-03, +-1.830743986113816382e-03, +-1.831584667517804736e-03, +-1.832422329707529508e-03, +-1.833256971480127801e-03, +-1.834088591637767418e-03, +-1.834917188987524343e-03, +-1.835742762341457338e-03, +-1.836565310516652828e-03, +-1.837384832335122549e-03, +-1.838201326623866870e-03, +-1.839014792214857226e-03, +-1.839825227945077971e-03, +-1.840632632656522905e-03, +-1.841437005196052161e-03, +-1.842238344415626826e-03, +-1.843036649172181659e-03, +-1.843831918327602315e-03, +-1.844624150748764169e-03, +-1.845413345307589771e-03, +-1.846199500880947152e-03, +-1.846982616350721597e-03, +-1.847762690603771190e-03, +-1.848539722532007053e-03, +-1.849313711032294890e-03, +-1.850084655006492941e-03, +-1.850852553361509879e-03, +-1.851617405009273144e-03, +-1.852379208866614894e-03, +-1.853137963855489056e-03, +-1.853893668902796771e-03, +-1.854646322940455352e-03, +-1.855395924905445769e-03, +-1.856142473739684495e-03, +-1.856885968390183756e-03, +-1.857626407808919255e-03, +-1.858363790952879393e-03, +-1.859098116784132712e-03, +-1.859829384269717084e-03, +-1.860557592381691756e-03, +-1.861282740097187655e-03, +-1.862004826398320004e-03, +-1.862723850272223879e-03, +-1.863439810711117316e-03, +-1.864152706712196789e-03, +-1.864862537277689036e-03, +-1.865569301414910690e-03, +-1.866272998136140129e-03, +-1.866973626458775549e-03, +-1.867671185405128534e-03, +-1.868365674002668217e-03, +-1.869057091283861036e-03, +-1.869745436286208680e-03, +-1.870430708052232913e-03, +-1.871112905629556669e-03, +-1.871792028070798667e-03, +-1.872468074433629795e-03, +-1.873141043780801292e-03, +-1.873810935180080135e-03, +-1.874477747704297393e-03, +-1.875141480431303121e-03, +-1.875802132444050283e-03, +-1.876459702830557451e-03, +-1.877114190683793231e-03, +-1.877765595101887680e-03, +-1.878413915188027576e-03, +-1.879059150050351032e-03, +-1.879701298802183632e-03, +-1.880340360561819210e-03, +-1.880976334452689417e-03, +-1.881609219603221474e-03, +-1.882239015146933364e-03, +-1.882865720222434485e-03, +-1.883489333973359077e-03, +-1.884109855548416097e-03, +-1.884727284101414806e-03, +-1.885341618791215547e-03, +-1.885952858781716947e-03, +-1.886561003241956323e-03, +-1.887166051345988676e-03, +-1.887768002272953048e-03, +-1.888366855207102013e-03, +-1.888962609337702147e-03, +-1.889555263859161744e-03, +-1.890144817970924136e-03, +-1.890731270877509538e-03, +-1.891314621788559502e-03, +-1.891894869918763411e-03, +-1.892472014487877989e-03, +-1.893046054720803418e-03, +-1.893616989847471659e-03, +-1.894184819102903705e-03, +-1.894749541727243618e-03, +-1.895311156965684592e-03, +-1.895869664068510580e-03, +-1.896425062291134467e-03, +-1.896977350894009373e-03, +-1.897526529142733610e-03, +-1.898072596307917971e-03, +-1.898615551665337091e-03, +-1.899155394495868725e-03, +-1.899692124085401376e-03, +-1.900225739724996929e-03, +-1.900756240710801742e-03, +-1.901283626344034286e-03, +-1.901807895931020712e-03, +-1.902329048783180099e-03, +-1.902847084217072814e-03, +-1.903362001554305535e-03, +-1.903873800121600639e-03, +-1.904382479250822657e-03, +-1.904888038278892406e-03, +-1.905390476547840113e-03, +-1.905889793404826451e-03, +-1.906385988202134512e-03, +-1.906879060297068332e-03, +-1.907369009052127442e-03, +-1.907855833834878499e-03, +-1.908339534018016872e-03, +-1.908820108979328040e-03, +-1.909297558101712535e-03, +-1.909771880773193089e-03, +-1.910243076386905535e-03, +-1.910711144341066493e-03, +-1.911176084039052734e-03, +-1.911637894889324637e-03, +-1.912096576305458281e-03, +-1.912552127706165610e-03, +-1.913004548515251282e-03, +-1.913453838161639341e-03, +-1.913899996079397505e-03, +-1.914343021707679482e-03, +-1.914782914490765738e-03, +-1.915219673878080196e-03, +-1.915653299324115207e-03, +-1.916083790288566208e-03, +-1.916511146236148707e-03, +-1.916935366636767640e-03, +-1.917356450965453400e-03, +-1.917774398702323238e-03, +-1.918189209332629187e-03, +-1.918600882346761750e-03, +-1.919009417240231680e-03, +-1.919414813513654157e-03, +-1.919817070672804509e-03, +-1.920216188228559455e-03, +-1.920612165696927243e-03, +-1.921005002599037673e-03, +-1.921394698461168773e-03, +-1.921781252814724244e-03, +-1.922164665196198548e-03, +-1.922544935147264518e-03, +-1.922922062214708948e-03, +-1.923296045950434767e-03, +-1.923666885911488140e-03, +-1.924034581660036139e-03, +-1.924399132763395361e-03, +-1.924760538794001571e-03, +-1.925118799329417728e-03, +-1.925473913952359785e-03, +-1.925825882250664168e-03, +-1.926174703817285384e-03, +-1.926520378250346768e-03, +-1.926862905153098413e-03, +-1.927202284133874670e-03, +-1.927538514806224901e-03, +-1.927871596788778607e-03, +-1.928201529705310694e-03, +-1.928528313184755573e-03, +-1.928851946861150340e-03, +-1.929172430373703086e-03, +-1.929489763366737821e-03, +-1.929803945489710080e-03, +-1.930114976397235985e-03, +-1.930422855749062104e-03, +-1.930727583210050920e-03, +-1.931029158450242415e-03, +-1.931327581144789670e-03, +-1.931622850973979894e-03, +-1.931914967623267389e-03, +-1.932203930783219772e-03, +-1.932489740149555919e-03, +-1.932772395423138379e-03, +-1.933051896309954942e-03, +-1.933328242521164609e-03, +-1.933601433773022345e-03, +-1.933871469786965390e-03, +-1.934138350289553183e-03, +-1.934402075012491007e-03, +-1.934662643692615890e-03, +-1.934920056071928263e-03, +-1.935174311897546427e-03, +-1.935425410921747967e-03, +-1.935673352901934405e-03, +-1.935918137600676960e-03, +-1.936159764785664499e-03, +-1.936398234229734115e-03, +-1.936633545710876982e-03, +-1.936865699012217971e-03, +-1.937094693922020204e-03, +-1.937320530233696330e-03, +-1.937543207745813512e-03, +-1.937762726262050924e-03, +-1.937979085591257653e-03, +-1.938192285547415397e-03, +-1.938402325949652562e-03, +-1.938609206622239492e-03, +-1.938812927394583047e-03, +-1.939013488101248937e-03, +-1.939210888581934834e-03, +-1.939405128681471677e-03, +-1.939596208249858575e-03, +-1.939784127142226604e-03, +-1.939968885218828175e-03, +-1.940150482345097968e-03, +-1.940328918391587016e-03, +-1.940504193233991105e-03, +-1.940676306753160970e-03, +-1.940845258835078441e-03, +-1.941011049370878778e-03, +-1.941173678256830938e-03, +-1.941333145394340612e-03, +-1.941489450689983182e-03, +-1.941642594055442142e-03, +-1.941792575407562437e-03, +-1.941939394668329650e-03, +-1.942083051764869782e-03, +-1.942223546629444049e-03, +-1.942360879199468400e-03, +-1.942495049417485541e-03, +-1.942626057231191606e-03, +-1.942753902593414043e-03, +-1.942878585462135032e-03, +-1.943000105800457003e-03, +-1.943118463576638203e-03, +-1.943233658764075564e-03, +-1.943345691341309255e-03, +-1.943454561291997097e-03, +-1.943560268604959881e-03, +-1.943662813274157301e-03, +-1.943762195298676890e-03, +-1.943858414682750509e-03, +-1.943951471435738723e-03, +-1.944041365572160085e-03, +-1.944128097111653183e-03, +-1.944211666079004178e-03, +-1.944292072504133799e-03, +-1.944369316422094518e-03, +-1.944443397873086600e-03, +-1.944514316902433383e-03, +-1.944582073560605128e-03, +-1.944646667903201457e-03, +-1.944708099990961978e-03, +-1.944766369889753058e-03, +-1.944821477670587119e-03, +-1.944873423409602693e-03, +-1.944922207188071140e-03, +-1.944967829092402074e-03, +-1.945010289214134684e-03, +-1.945049587649945108e-03, +-1.945085724501633426e-03, +-1.945118699876137967e-03, +-1.945148513885528157e-03, +-1.945175166647004949e-03, +-1.945198658282894537e-03, +-1.945218988920651175e-03, +-1.945236158692868885e-03, +-1.945250167737262595e-03, +-1.945261016196674639e-03, +-1.945268704219082134e-03, +-1.945273231957584618e-03, +-1.945274599570409688e-03, +-1.945272807220913436e-03, +-1.945267855077569821e-03, +-1.945259743313983462e-03, +-1.945248472108885955e-03, +-1.945234041646136522e-03, +-1.945216452114707046e-03, +-1.945195703708690318e-03, +-1.945171796627323882e-03, +-1.945144731074939948e-03, +-1.945114507261007462e-03, +-1.945081125400116486e-03, +-1.945044585711966931e-03, +-1.945004888421388934e-03, +-1.944962033758329198e-03, +-1.944916021957838418e-03, +-1.944866853260108358e-03, +-1.944814527910429568e-03, +-1.944759046159215020e-03, +-1.944700408261996203e-03, +-1.944638614479411850e-03, +-1.944573665077224418e-03, +-1.944505560326294279e-03, +-1.944434300502615939e-03, +-1.944359885887275534e-03, +-1.944282316766482921e-03, +-1.944201593431553032e-03, +-1.944117716178916065e-03, +-1.944030685310099921e-03, +-1.943940501131756222e-03, +-1.943847163955634508e-03, +-1.943750674098584192e-03, +-1.943651031882579492e-03, +-1.943548237634678232e-03, +-1.943442291687067815e-03, +-1.943333194377014263e-03, +-1.943220946046899300e-03, +-1.943105547044200613e-03, +-1.942986997721508988e-03, +-1.942865298436499471e-03, +-1.942740449551953264e-03, +-1.942612451435758595e-03, +-1.942481304460884481e-03, +-1.942347009005411084e-03, +-1.942209565452506295e-03, +-1.942068974190430501e-03, +-1.941925235612555452e-03, +-1.941778350117328699e-03, +-1.941628318108292242e-03, +-1.941475139994080362e-03, +-1.941318816188430029e-03, +-1.941159347110149895e-03, +-1.940996733183140456e-03, +-1.940830974836405117e-03, +-1.940662072504020482e-03, +-1.940490026625141338e-03, +-1.940314837644027766e-03, +-1.940136506010004588e-03, +-1.939955032177500616e-03, +-1.939770416605996394e-03, +-1.939582659760081878e-03, +-1.939391762109412849e-03, +-1.939197724128716984e-03, +-1.939000546297814462e-03, +-1.938800229101604730e-03, +-1.938596773030038748e-03, +-1.938390178578163012e-03, +-1.938180446246090712e-03, +-1.937967576539007149e-03, +-1.937751569967174946e-03, +-1.937532427045908024e-03, +-1.937310148295612149e-03, +-1.937084734241756095e-03, +-1.936856185414854731e-03, +-1.936624502350516074e-03, +-1.936389685589403773e-03, +-1.936151735677225840e-03, +-1.935910653164784299e-03, +-1.935666438607926837e-03, +-1.935419092567549834e-03, +-1.935168615609622871e-03, +-1.934915008305178753e-03, +-1.934658271230279246e-03, +-1.934398404966071894e-03, +-1.934135410098737108e-03, +-1.933869287219530447e-03, +-1.933600036924734049e-03, +-1.933327659815685688e-03, +-1.933052156498789829e-03, +-1.932773527585482723e-03, +-1.932491773692238254e-03, +-1.932206895440605459e-03, +-1.931918893457148676e-03, +-1.931627768373489831e-03, +-1.931333520826281546e-03, +-1.931036151457230779e-03, +-1.930735660913081905e-03, +-1.930432049845589183e-03, +-1.930125318911585274e-03, +-1.929815468772904481e-03, +-1.929502500096435657e-03, +-1.929186413554076886e-03, +-1.928867209822785356e-03, +-1.928544889584527054e-03, +-1.928219453526296926e-03, +-1.927890902340128427e-03, +-1.927559236723067277e-03, +-1.927224457377201602e-03, +-1.926886565009614015e-03, +-1.926545560332430405e-03, +-1.926201444062797166e-03, +-1.925854216922852358e-03, +-1.925503879639786425e-03, +-1.925150432945788633e-03, +-1.924793877578045553e-03, +-1.924434214278786812e-03, +-1.924071443795240428e-03, +-1.923705566879624568e-03, +-1.923336584289206527e-03, +-1.922964496786211874e-03, +-1.922589305137906417e-03, +-1.922211010116563028e-03, +-1.921829612499413500e-03, +-1.921445113068733336e-03, +-1.921057512611784287e-03, +-1.920666811920816296e-03, +-1.920273011793089844e-03, +-1.919876113030851870e-03, +-1.919476116441327105e-03, +-1.919073022836760784e-03, +-1.918666833034367910e-03, +-1.918257547856358188e-03, +-1.917845168129922147e-03, +-1.917429694687235479e-03, +-1.917011128365476817e-03, +-1.916589470006779816e-03, +-1.916164720458247680e-03, +-1.915736880572017128e-03, +-1.915305951205151496e-03, +-1.914871933219690174e-03, +-1.914434827482675277e-03, +-1.913994634866107844e-03, +-1.913551356246935911e-03, +-1.913104992507110025e-03, +-1.912655544533528595e-03, +-1.912203013218073027e-03, +-1.911747399457546133e-03, +-1.911288704153760393e-03, +-1.910826928213462924e-03, +-1.910362072548366921e-03, +-1.909894138075111762e-03, +-1.909423125715357765e-03, +-1.908949036395647192e-03, +-1.908471871047513107e-03, +-1.907991630607438604e-03, +-1.907508316016824504e-03, +-1.907021928222059608e-03, +-1.906532468174423987e-03, +-1.906039936830186557e-03, +-1.905544335150549141e-03, +-1.905045664101615455e-03, +-1.904543924654469172e-03, +-1.904039117785114293e-03, +-1.903531244474467553e-03, +-1.903020305708405698e-03, +-1.902506302477736640e-03, +-1.901989235778151106e-03, +-1.901469106610307637e-03, +-1.900945915979792688e-03, +-1.900419664897076179e-03, +-1.899890354377585435e-03, +-1.899357985441620621e-03, +-1.898822559114467928e-03, +-1.898284076426271210e-03, +-1.897742538412077948e-03, +-1.897197946111891294e-03, +-1.896650300570605673e-03, +-1.896099602838001354e-03, +-1.895545853968773516e-03, +-1.894989055022552838e-03, +-1.894429207063810967e-03, +-1.893866311161957654e-03, +-1.893300368391289583e-03, +-1.892731379831012490e-03, +-1.892159346565197575e-03, +-1.891584269682788227e-03, +-1.891006150277701071e-03, +-1.890424989448658997e-03, +-1.889840788299265977e-03, +-1.889253547938085122e-03, +-1.888663269478474318e-03, +-1.888069954038731294e-03, +-1.887473602741980864e-03, +-1.886874216716253423e-03, +-1.886271797094453938e-03, +-1.885666345014325954e-03, +-1.885057861618504504e-03, +-1.884446348054507865e-03, +-1.883831805474661669e-03, +-1.883214235036201464e-03, +-1.882593637901225662e-03, +-1.881970015236633523e-03, +-1.881343368214239429e-03, +-1.880713698010693952e-03, +-1.880081005807466297e-03, +-1.879445292790925823e-03, +-1.878806560152234935e-03, +-1.878164809087439716e-03, +-1.877520040797422442e-03, +-1.876872256487875125e-03, +-1.876221457369365003e-03, +-1.875567644657282059e-03, +-1.874910819571822115e-03, +-1.874250983338046021e-03, +-1.873588137185851904e-03, +-1.872922282349907515e-03, +-1.872253420069756912e-03, +-1.871581551589758009e-03, +-1.870906678159063065e-03, +-1.870228801031673972e-03, +-1.869547921466352272e-03, +-1.868864040726770509e-03, +-1.868177160081315336e-03, +-1.867487280803190736e-03, +-1.866794404170488923e-03, +-1.866098531466025548e-03, +-1.865399663977416675e-03, +-1.864697802997122584e-03, +-1.863992949822369924e-03, +-1.863285105755210259e-03, +-1.862574272102424230e-03, +-1.861860450175637557e-03, +-1.861143641291263364e-03, +-1.860423846770450354e-03, +-1.859701067939166291e-03, +-1.858975306128173716e-03, +-1.858246562672969228e-03, +-1.857514838913822738e-03, +-1.856780136195851838e-03, +-1.856042455868846166e-03, +-1.855301799287446081e-03, +-1.854558167810971790e-03, +-1.853811562803574058e-03, +-1.853061985634152234e-03, +-1.852309437676331058e-03, +-1.851553920308511830e-03, +-1.850795434913876094e-03, +-1.850033982880291755e-03, +-1.849269565600416936e-03, +-1.848502184471674178e-03, +-1.847731840896161756e-03, +-1.846958536280774452e-03, +-1.846182272037146964e-03, +-1.845403049581592105e-03, +-1.844620870335210092e-03, +-1.843835735723829130e-03, +-1.843047647177960963e-03, +-1.842256606132887820e-03, +-1.841462614028554004e-03, +-1.840665672309735020e-03, +-1.839865782425810113e-03, +-1.839062945830907550e-03, +-1.838257163983886191e-03, +-1.837448438348321172e-03, +-1.836636770392433438e-03, +-1.835822161589218977e-03, +-1.835004613416357311e-03, +-1.834184127356177458e-03, +-1.833360704895763311e-03, +-1.832534347526863436e-03, +-1.831705056745951132e-03, +-1.830872834054126427e-03, +-1.830037680957189794e-03, +-1.829199598965699841e-03, +-1.828358589594807418e-03, +-1.827514654364352769e-03, +-1.826667794798880490e-03, +-1.825818012427596598e-03, +-1.824965308784390209e-03, +-1.824109685407766758e-03, +-1.823251143840939502e-03, +-1.822389685631793741e-03, +-1.821525312332809409e-03, +-1.820658025501177947e-03, +-1.819787826698754385e-03, +-1.818914717491986865e-03, +-1.818038699451968903e-03, +-1.817159774154534797e-03, +-1.816277943180042787e-03, +-1.815393208113555250e-03, +-1.814505570544772345e-03, +-1.813615032067975421e-03, +-1.812721594282143455e-03, +-1.811825258790809292e-03, +-1.810926027202191266e-03, +-1.810023901129126193e-03, +-1.809118882189004974e-03, +-1.808210972003905081e-03, +-1.807300172200501870e-03, +-1.806386484410034323e-03, +-1.805469910268397635e-03, +-1.804550451416103533e-03, +-1.803628109498196146e-03, +-1.802702886164370827e-03, +-1.801774783068937512e-03, +-1.800843801870718585e-03, +-1.799909944233216066e-03, +-1.798973211824419051e-03, +-1.798033606317039857e-03, +-1.797091129388244920e-03, +-1.796145782719806147e-03, +-1.795197567998102007e-03, +-1.794246486914089335e-03, +-1.793292541163231564e-03, +-1.792335732445619932e-03, +-1.791376062465878730e-03, +-1.790413532933229045e-03, +-1.789448145561369939e-03, +-1.788479902068627631e-03, +-1.787508804177870064e-03, +-1.786534853616479580e-03, +-1.785558052116357694e-03, +-1.784578401414069508e-03, +-1.783595903250602367e-03, +-1.782610559371471679e-03, +-1.781622371526844079e-03, +-1.780631341471290664e-03, +-1.779637470963985404e-03, +-1.778640761768564196e-03, +-1.777641215653237615e-03, +-1.776638834390724354e-03, +-1.775633619758205245e-03, +-1.774625573537440141e-03, +-1.773614697514667516e-03, +-1.772600993480601432e-03, +-1.771584463230503961e-03, +-1.770565108564132713e-03, +-1.769542931285680767e-03, +-1.768517933203891815e-03, +-1.767490116132010508e-03, +-1.766459481887687043e-03, +-1.765426032293150854e-03, +-1.764389769175015452e-03, +-1.763350694364442797e-03, +-1.762308809697061976e-03, +-1.761264117012908709e-03, +-1.760216618156546344e-03, +-1.759166314977007308e-03, +-1.758113209327712449e-03, +-1.757057303066600264e-03, +-1.755998598056081154e-03, +-1.754937096162925963e-03, +-1.753872799258432945e-03, +-1.752805709218314143e-03, +-1.751735827922750247e-03, +-1.750663157256287811e-03, +-1.749587699107977169e-03, +-1.748509455371288291e-03, +-1.747428427944083904e-03, +-1.746344618728622525e-03, +-1.745258029631727810e-03, +-1.744168662564485415e-03, +-1.743076519442432297e-03, +-1.741981602185562351e-03, +-1.740883912718237721e-03, +-1.739783452969267084e-03, +-1.738680224871773806e-03, +-1.737574230363349466e-03, +-1.736465471385994445e-03, +-1.735353949886012321e-03, +-1.734239667814161875e-03, +-1.733122627125599632e-03, +-1.732002829779801141e-03, +-1.730880277740607168e-03, +-1.729754972976358567e-03, +-1.728626917459613090e-03, +-1.727496113167406675e-03, +-1.726362562081037479e-03, +-1.725226266186240210e-03, +-1.724087227473113278e-03, +-1.722945447936026844e-03, +-1.721800929573764644e-03, +-1.720653674389464134e-03, +-1.719503684390532574e-03, +-1.718350961588793182e-03, +-1.717195508000385817e-03, +-1.716037325645727732e-03, +-1.714876416549631537e-03, +-1.713712782741223014e-03, +-1.712546426253888860e-03, +-1.711377349125404188e-03, +-1.710205553397852515e-03, +-1.709031041117559623e-03, +-1.707853814335246433e-03, +-1.706673875105826910e-03, +-1.705491225488678245e-03, +-1.704305867547327956e-03, +-1.703117803349617383e-03, +-1.701927034967736386e-03, +-1.700733564478139207e-03, +-1.699537393961514115e-03, +-1.698338525502879684e-03, +-1.697136961191510196e-03, +-1.695932703120985952e-03, +-1.694725753389064032e-03, +-1.693516114097850470e-03, +-1.692303787353703756e-03, +-1.691088775267197324e-03, +-1.689871079953115434e-03, +-1.688650703530664154e-03, +-1.687427648123130492e-03, +-1.686201915858061718e-03, +-1.684973508867311552e-03, +-1.683742429286928929e-03, +-1.682508679257218275e-03, +-1.681272260922646268e-03, +-1.680033176431964355e-03, +-1.678791427938154321e-03, +-1.677547017598327679e-03, +-1.676299947573895019e-03, +-1.675050220030465178e-03, +-1.673797837137782794e-03, +-1.672542801069857969e-03, +-1.671285114004913801e-03, +-1.670024778125274705e-03, +-1.668761795617542277e-03, +-1.667496168672498143e-03, +-1.666227899485027203e-03, +-1.664956990254299989e-03, +-1.663683443183556262e-03, +-1.662407260480281519e-03, +-1.661128444356132616e-03, +-1.659846997026844960e-03, +-1.658562920712392539e-03, +-1.657276217636913761e-03, +-1.655986890028606504e-03, +-1.654694940119899637e-03, +-1.653400370147367583e-03, +-1.652103182351646838e-03, +-1.650803378977582121e-03, +-1.649500962274133781e-03, +-1.648195934494404470e-03, +-1.646888297895587753e-03, +-1.645578054738938397e-03, +-1.644265207290023477e-03, +-1.642949757818339433e-03, +-1.641631708597525441e-03, +-1.640311061905377291e-03, +-1.638987820023794914e-03, +-1.637661985238689569e-03, +-1.636333559840154502e-03, +-1.635002546122334621e-03, +-1.633668946383495021e-03, +-1.632332762925897815e-03, +-1.630993998055965850e-03, +-1.629652654084186650e-03, +-1.628308733325042803e-03, +-1.626962238097174815e-03, +-1.625613170723259025e-03, +-1.624261533529963155e-03, +-1.622907328848095495e-03, +-1.621550559012505371e-03, +-1.620191226361999883e-03, +-1.618829333239544914e-03, +-1.617464881992037662e-03, +-1.616097874970481201e-03, +-1.614728314529916605e-03, +-1.613356203029317568e-03, +-1.611981542831771898e-03, +-1.610604336304384369e-03, +-1.609224585818180234e-03, +-1.607842293748283028e-03, +-1.606457462473823714e-03, +-1.605070094377843539e-03, +-1.603680191847471192e-03, +-1.602287757273823925e-03, +-1.600892793051926022e-03, +-1.599495301580899399e-03, +-1.598095285263695159e-03, +-1.596692746507456578e-03, +-1.595287687723118391e-03, +-1.593880111325570934e-03, +-1.592470019733871565e-03, +-1.591057415370838741e-03, +-1.589642300663285119e-03, +-1.588224678042025363e-03, +-1.586804549941835812e-03, +-1.585381918801331315e-03, +-1.583956787063165372e-03, +-1.582529157173896781e-03, +-1.581099031584039510e-03, +-1.579666412747945383e-03, +-1.578231303123978860e-03, +-1.576793705174425958e-03, +-1.575353621365421179e-03, +-1.573911054166975262e-03, +-1.572466006053203523e-03, +-1.571018479501913633e-03, +-1.569568476994867351e-03, +-1.568116001017757317e-03, +-1.566661054060152630e-03, +-1.565203638615526817e-03, +-1.563743757181140087e-03, +-1.562281412258228856e-03, +-1.560816606351893418e-03, +-1.559349341971009474e-03, +-1.557879621628415054e-03, +-1.556407447840801005e-03, +-1.554932823128616888e-03, +-1.553455750016263749e-03, +-1.551976231031979405e-03, +-1.550494268707755183e-03, +-1.549009865579540181e-03, +-1.547523024187001444e-03, +-1.546033747073710446e-03, +-1.544542036787083456e-03, +-1.543047895878244284e-03, +-1.541551326902232660e-03, +-1.540052332417908825e-03, +-1.538550914987830585e-03, +-1.537047077178464293e-03, +-1.535540821560063638e-03, +-1.534032150706589196e-03, +-1.532521067195885154e-03, +-1.531007573609570243e-03, +-1.529491672532964659e-03, +-1.527973366555251391e-03, +-1.526452658269350244e-03, +-1.524929550271980931e-03, +-1.523404045163572005e-03, +-1.521876145548265412e-03, +-1.520345854034156315e-03, +-1.518813173232894543e-03, +-1.517278105759910754e-03, +-1.515740654234435303e-03, +-1.514200821279438605e-03, +-1.512658609521520337e-03, +-1.511114021591106107e-03, +-1.509567060122327543e-03, +-1.508017727753041375e-03, +-1.506466027124737277e-03, +-1.504911960882707221e-03, +-1.503355531675950934e-03, +-1.501796742157097617e-03, +-1.500235594982435652e-03, +-1.498672092812158938e-03, +-1.497106238309902412e-03, +-1.495538034143154699e-03, +-1.493967482982946947e-03, +-1.492394587504084196e-03, +-1.490819350385040425e-03, +-1.489241774307855119e-03, +-1.487661861958322141e-03, +-1.486079616025899304e-03, +-1.484495039203583260e-03, +-1.482908134188128070e-03, +-1.481318903679923558e-03, +-1.479727350382890145e-03, +-1.478133477004696123e-03, +-1.476537286256621477e-03, +-1.474938780853474402e-03, +-1.473337963513789064e-03, +-1.471734836959701998e-03, +-1.470129403916868192e-03, +-1.468521667114672724e-03, +-1.466911629285934989e-03, +-1.465299293167311159e-03, +-1.463684661498839031e-03, +-1.462067737024181973e-03, +-1.460448522490641939e-03, +-1.458827020649109589e-03, +-1.457203234253936575e-03, +-1.455577166063152378e-03, +-1.453948818838342013e-03, +-1.452318195344550400e-03, +-1.450685298350474486e-03, +-1.449050130628328588e-03, +-1.447412694953908790e-03, +-1.445772994106470435e-03, +-1.444131030868780162e-03, +-1.442486808027338818e-03, +-1.440840328371959271e-03, +-1.439191594695981733e-03, +-1.437540609796466966e-03, +-1.435887376473741562e-03, +-1.434231897531822088e-03, +-1.432574175778072480e-03, +-1.430914214023467929e-03, +-1.429252015082473244e-03, +-1.427587581772935942e-03, +-1.425920916916290949e-03, +-1.424252023337452830e-03, +-1.422580903864693923e-03, +-1.420907561329876577e-03, +-1.419231998568311554e-03, +-1.417554218418673462e-03, +-1.415874223723185285e-03, +-1.414192017327534252e-03, +-1.412507602080729152e-03, +-1.410820980835372470e-03, +-1.409132156447350306e-03, +-1.407441131776089333e-03, +-1.405747909684445553e-03, +-1.404052493038578315e-03, +-1.402354884708175613e-03, +-1.400655087566338728e-03, +-1.398953104489460359e-03, +-1.397248938357437565e-03, +-1.395542592053582642e-03, +-1.393834068464470033e-03, +-1.392123370480174418e-03, +-1.390410500994157745e-03, +-1.388695462903147358e-03, +-1.386978259107384068e-03, +-1.385258892510290822e-03, +-1.383537366018916569e-03, +-1.381813682543441002e-03, +-1.380087844997394866e-03, +-1.378359856297883736e-03, +-1.376629719365125284e-03, +-1.374897437122715987e-03, +-1.373163012497657801e-03, +-1.371426448420245622e-03, +-1.369687747824125616e-03, +-1.367946913646161857e-03, +-1.366203948826631492e-03, +-1.364458856309124120e-03, +-1.362711639040414726e-03, +-1.360962299970702423e-03, +-1.359210842053463000e-03, +-1.357457268245392543e-03, +-1.355701581506426733e-03, +-1.353943784800015586e-03, +-1.352183881092604333e-03, +-1.350421873354107219e-03, +-1.348657764557539092e-03, +-1.346891557679291869e-03, +-1.345123255699011162e-03, +-1.343352861599473756e-03, +-1.341580378366810959e-03, +-1.339805808990399963e-03, +-1.338029156462725282e-03, +-1.336250423779623353e-03, +-1.334469613940147655e-03, +-1.332686729946453352e-03, +-1.330901774804028664e-03, +-1.329114751521564761e-03, +-1.327325663110837583e-03, +-1.325534512586982799e-03, +-1.323741302968162300e-03, +-1.321946037275850867e-03, +-1.320148718534704330e-03, +-1.318349349772393467e-03, +-1.316547934020040290e-03, +-1.314744474311697409e-03, +-1.312938973684612577e-03, +-1.311131435179282035e-03, +-1.309321861839339487e-03, +-1.307510256711455704e-03, +-1.305696622845549945e-03, +-1.303880963294698448e-03, +-1.302063281114967247e-03, +-1.300243579365679969e-03, +-1.298421861109233305e-03, +-1.296598129411193501e-03, +-1.294772387340140237e-03, +-1.292944637967732542e-03, +-1.291114884368959248e-03, +-1.289283129621666924e-03, +-1.287449376806836356e-03, +-1.285613629008607690e-03, +-1.283775889314167249e-03, +-1.281936160813807379e-03, +-1.280094446600774224e-03, +-1.278250749771495847e-03, +-1.276405073425463613e-03, +-1.274557420665093418e-03, +-1.272707794595982636e-03, +-1.270856198326758123e-03, +-1.269002634969012460e-03, +-1.267147107637333009e-03, +-1.265289619449565814e-03, +-1.263430173526308405e-03, +-1.261568772991326351e-03, +-1.259705420971405591e-03, +-1.257840120596213224e-03, +-1.255972874998582652e-03, +-1.254103687314174443e-03, +-1.252232560681768633e-03, +-1.250359498243131147e-03, +-1.248484503142881534e-03, +-1.246607578528734087e-03, +-1.244728727551380320e-03, +-1.242847953364352789e-03, +-1.240965259124261668e-03, +-1.239080647990673965e-03, +-1.237194123125979518e-03, +-1.235305687695636458e-03, +-1.233415344868046956e-03, +-1.231523097814406741e-03, +-1.229628949709018646e-03, +-1.227732903728900567e-03, +-1.225834963054266624e-03, +-1.223935130867999377e-03, +-1.222033410355931283e-03, +-1.220129804706876573e-03, +-1.218224317112544296e-03, +-1.216316950767409302e-03, +-1.214407708868956185e-03, +-1.212496594617509501e-03, +-1.210583611216305101e-03, +-1.208668761871321221e-03, +-1.206752049791540420e-03, +-1.204833478188780012e-03, +-1.202913050277639589e-03, +-1.200990769275525529e-03, +-1.199066638402930931e-03, +-1.197140660882940353e-03, +-1.195212839941460752e-03, +-1.193283178807491227e-03, +-1.191351680712537551e-03, +-1.189418348891146688e-03, +-1.187483186580499343e-03, +-1.185546197020710289e-03, +-1.183607383454690024e-03, +-1.181666749128014665e-03, +-1.179724297289184423e-03, +-1.177780031189470727e-03, +-1.175833954082796317e-03, +-1.173886069225988727e-03, +-1.171936379878635867e-03, +-1.169984889302965250e-03, +-1.168031600764081425e-03, +-1.166076517529840428e-03, +-1.164119642870714046e-03, +-1.162160980060088179e-03, +-1.160200532373907448e-03, +-1.158238303090968792e-03, +-1.156274295492799387e-03, +-1.154308512863511582e-03, +-1.152340958490055082e-03, +-1.150371635662092266e-03, +-1.148400547671850087e-03, +-1.146427697814386129e-03, +-1.144453089387439861e-03, +-1.142476725691313807e-03, +-1.140498610029111633e-03, +-1.138518745706572702e-03, +-1.136537136032144931e-03, +-1.134553784316804162e-03, +-1.132568693874318275e-03, +-1.130581868021102989e-03, +-1.128593310076139678e-03, +-1.126603023360990769e-03, +-1.124611011200133022e-03, +-1.122617276920394400e-03, +-1.120621823851283014e-03, +-1.118624655325001216e-03, +-1.116625774676327639e-03, +-1.114625185242688974e-03, +-1.112622890363975867e-03, +-1.110618893382817442e-03, +-1.108613197644421275e-03, +-1.106605806496456946e-03, +-1.104596723289295868e-03, +-1.102585951375890938e-03, +-1.100573494111670722e-03, +-1.098559354854580002e-03, +-1.096543536965391592e-03, +-1.094526043807108511e-03, +-1.092506878745510418e-03, +-1.090486045148737933e-03, +-1.088463546387591655e-03, +-1.086439385835412256e-03, +-1.084413566867916973e-03, +-1.082386092863486717e-03, +-1.080356967203001482e-03, +-1.078326193269722819e-03, +-1.076293774449544943e-03, +-1.074259714130851393e-03, +-1.072224015704385369e-03, +-1.070186682563507548e-03, +-1.068147718104056013e-03, +-1.066107125724205084e-03, +-1.064064908824729431e-03, +-1.062021070808869851e-03, +-1.059975615082179960e-03, +-1.057928545052851240e-03, +-1.055879864131284993e-03, +-1.053829575730647018e-03, +-1.051777683266250703e-03, +-1.049724190155891393e-03, +-1.047669099819878696e-03, +-1.045612415680927413e-03, +-1.043554141164034594e-03, +-1.041494279696732802e-03, +-1.039432834708908186e-03, +-1.037369809632888735e-03, +-1.035305207903248689e-03, +-1.033239032957080240e-03, +-1.031171288233854533e-03, +-1.029101977175320842e-03, +-1.027031103225543428e-03, +-1.024958669831219213e-03, +-1.022884680441128952e-03, +-1.020809138506440167e-03, +-1.018732047480755496e-03, +-1.016653410819969797e-03, +-1.014573231982349513e-03, +-1.012491514428346404e-03, +-1.010408261620873802e-03, +-1.008323477025155693e-03, +-1.006237164108579043e-03, +-1.004149326340976348e-03, +-1.002059967194476441e-03, +-9.999690901433531433e-04, +-9.978766986643065016e-04, +-9.957827962363123044e-04, +-9.936873863404828682e-04, +-9.915904724603328852e-04, +-9.894920580816423793e-04, +-9.873921466922988468e-04, +-9.852907417826309733e-04, +-9.831878468450239595e-04, +-9.810834653742365411e-04, +-9.789776008672652474e-04, +-9.768702568231852398e-04, +-9.747614367434359996e-04, +-9.726511441316730089e-04, +-9.705393824936185644e-04, +-9.684261553373335867e-04, +-9.663114661730819871e-04, +-9.641953185131746503e-04, +-9.620777158722456897e-04, +-9.599586617670697588e-04, +-9.578381597166357774e-04, +-9.557162132420085870e-04, +-9.535928258663648382e-04, +-9.514680011153224797e-04, +-9.493417425163681910e-04, +-9.472140535991770052e-04, +-9.450849378956593634e-04, +-9.429543989398534538e-04, +-9.408224402677887099e-04, +-9.386890654177550185e-04, +-9.365542779301100568e-04, +-9.344180813473636433e-04, +-9.322804792139958085e-04, +-9.301414750767178713e-04, +-9.280010724843364795e-04, +-9.258592749876038818e-04, +-9.237160861394873518e-04, +-9.215715094950365904e-04, +-9.194255486112215287e-04, +-9.172782070472169317e-04, +-9.151294883642547293e-04, +-9.129793961254772158e-04, +-9.108279338962581902e-04, +-9.086751052438173061e-04, +-9.065209137375573661e-04, +-9.043653629489018008e-04, +-9.022084564511543723e-04, +-9.000501978197707675e-04, +-8.978905906322283848e-04, +-8.957296384678560064e-04, +-8.935673449081194854e-04, +-8.914037135364819920e-04, +-8.892387479382495149e-04, +-8.870724517008452730e-04, +-8.849048284136718043e-04, +-8.827358816679521311e-04, +-8.805656150570616335e-04, +-8.783940321760945859e-04, +-8.762211366224272914e-04, +-8.740469319950970508e-04, +-8.718714218950716953e-04, +-8.696946099255493685e-04, +-8.675164996913531075e-04, +-8.653370947992845104e-04, +-8.631563988581483467e-04, +-8.609744154786623527e-04, +-8.587911482733015392e-04, +-8.566066008565744469e-04, +-8.544207768448407831e-04, +-8.522336798563878582e-04, +-8.500453135112359714e-04, +-8.478556814314255072e-04, +-8.456647872408605939e-04, +-8.434726345652105491e-04, +-8.412792270319433821e-04, +-8.390845682706800021e-04, +-8.368886619125778499e-04, +-8.346915115906908527e-04, +-8.324931209399890480e-04, +-8.302934935972297809e-04, +-8.280926332010275261e-04, +-8.258905433916715255e-04, +-8.236872278113940198e-04, +-8.214826901042328799e-04, +-8.192769339158759156e-04, +-8.170699628939414672e-04, +-8.148617806878309536e-04, +-8.126523909485731815e-04, +-8.104417973291213077e-04, +-8.082300034841837042e-04, +-8.060170130700808431e-04, +-8.038028297450884466e-04, +-8.015874571690236473e-04, +-7.993708990035975704e-04, +-7.971531589122488005e-04, +-7.949342405600014596e-04, +-7.927141476137455813e-04, +-7.904928837420889011e-04, +-7.882704526152015979e-04, +-7.860468579051015483e-04, +-7.838221032855067659e-04, +-7.815961924316810116e-04, +-7.793691290207169870e-04, +-7.771409167313895333e-04, +-7.749115592439991809e-04, +-7.726810602406580537e-04, +-7.704494234050949294e-04, +-7.682166524227385064e-04, +-7.659827509805737468e-04, +-7.637477227671720173e-04, +-7.615115714730432382e-04, +-7.592743007900273206e-04, +-7.570359144116439298e-04, +-7.547964160331244697e-04, +-7.525558093513152634e-04, +-7.503140980645204520e-04, +-7.480712858727957054e-04, +-7.458273764777358268e-04, +-7.435823735825775353e-04, +-7.413362808919888051e-04, +-7.390891021123634436e-04, +-7.368408409516656165e-04, +-7.345915011193232709e-04, +-7.323410863262678171e-04, +-7.300896002852902888e-04, +-7.278370467103690298e-04, +-7.255834293172755455e-04, +-7.233287518231144766e-04, +-7.210730179466676160e-04, +-7.188162314082357238e-04, +-7.165583959294853297e-04, +-7.142995152337436359e-04, +-7.120395930458354528e-04, +-7.097786330919370491e-04, +-7.075166390998643322e-04, +-7.052536147989103268e-04, +-7.029895639197089987e-04, +-7.007244901945015349e-04, +-6.984583973570056975e-04, +-6.961912891422454954e-04, +-6.939231692868439187e-04, +-6.916540415288798243e-04, +-6.893839096077134876e-04, +-6.871127772643506777e-04, +-6.848406482409643073e-04, +-6.825675262815102595e-04, +-6.802934151310537731e-04, +-6.780183185361244105e-04, +-6.757422402447543297e-04, +-6.734651840063740928e-04, +-6.711871535716536132e-04, +-6.689081526928049738e-04, +-6.666281851234104718e-04, +-6.643472546182843837e-04, +-6.620653649337532309e-04, +-6.597825198274546608e-04, +-6.574987230584333981e-04, +-6.552139783869802411e-04, +-6.529282895746792246e-04, +-6.506416603847519622e-04, +-6.483540945814493008e-04, +-6.460655959303432958e-04, +-6.437761681986299209e-04, +-6.414858151544600064e-04, +-6.391945405675430320e-04, +-6.369023482086864484e-04, +-6.346092418501415389e-04, +-6.323152252654475102e-04, +-6.300203022292681036e-04, +-6.277244765176991830e-04, +-6.254277519081000332e-04, +-6.231301321789428724e-04, +-6.208316211101049366e-04, +-6.185322224827154982e-04, +-6.162319400789921520e-04, +-6.139307776825450418e-04, +-6.116287390782122789e-04, +-6.093258280519059855e-04, +-6.070220483909598893e-04, +-6.047174038837148336e-04, +-6.024118983198703840e-04, +-6.001055354903296786e-04, +-5.977983191870306183e-04, +-5.954902532032560567e-04, +-5.931813413334690015e-04, +-5.908715873731517189e-04, +-5.885609951191115869e-04, +-5.862495683693152125e-04, +-5.839373109227326318e-04, +-5.816242265796402362e-04, +-5.793103191414551061e-04, +-5.769955924105802953e-04, +-5.746800501907502580e-04, +-5.723636962865750501e-04, +-5.700465345041379412e-04, +-5.677285686503252696e-04, +-5.654098025331350062e-04, +-5.630902399619706813e-04, +-5.607698847470179689e-04, +-5.584487406996065930e-04, +-5.561268116322470824e-04, +-5.538041013584739944e-04, +-5.514806136929447950e-04, +-5.491563524512204156e-04, +-5.468313214500775035e-04, +-5.445055245073362506e-04, +-5.421789654417123999e-04, +-5.398516480731108472e-04, +-5.375235762224666973e-04, +-5.351947537116392289e-04, +-5.328651843634522271e-04, +-5.305348720020540464e-04, +-5.282038204522357568e-04, +-5.258720335400479456e-04, +-5.235395150923262712e-04, +-5.212062689370497914e-04, +-5.188722989031814775e-04, +-5.165376088204969105e-04, +-5.142022025199023856e-04, +-5.118660838332628497e-04, +-5.095292565932437161e-04, +-5.071917246336165013e-04, +-5.048534917890983627e-04, +-5.025145618951820962e-04, +-5.001749387884514217e-04, +-4.978346263064136910e-04, +-4.954936282873382333e-04, +-4.931519485706150089e-04, +-4.908095909963312289e-04, +-4.884665594056281654e-04, +-4.861228576405422080e-04, +-4.837784895437861258e-04, +-4.814334589593208215e-04, +-4.790877697316663747e-04, +-4.767414257062635159e-04, +-4.743944307295187282e-04, +-4.720467886486944724e-04, +-4.696985033117459605e-04, +-4.673495785676259786e-04, +-4.650000182661254556e-04, +-4.626498262577060619e-04, +-4.602990063938142487e-04, +-4.579475625266597456e-04, +-4.555954985093129219e-04, +-4.532428181955517514e-04, +-4.508895254398914655e-04, +-4.485356240979598494e-04, +-4.461811180258550154e-04, +-4.438260110805064421e-04, +-4.414703071197232753e-04, +-4.391140100020261687e-04, +-4.367571235867524510e-04, +-4.343996517338353288e-04, +-4.320415983041126125e-04, +-4.296829671591654957e-04, +-4.273237621611521847e-04, +-4.249639871731173833e-04, +-4.226036460588303138e-04, +-4.202427426826690860e-04, +-4.178812809096724688e-04, +-4.155192646058964833e-04, +-4.131566976377263147e-04, +-4.107935838724512101e-04, +-4.084299271780429219e-04, +-4.060657314229957336e-04, +-4.037010004766849514e-04, +-4.013357382089444993e-04, +-3.989699484904218321e-04, +-3.966036351924200759e-04, +-3.942368021867320911e-04, +-3.918694533459477890e-04, +-3.895015925432922612e-04, +-3.871332236524613595e-04, +-3.847643505479279294e-04, +-3.823949771047835703e-04, +-3.800251071985692296e-04, +-3.776547447055863681e-04, +-3.752838935027343298e-04, +-3.729125574673427786e-04, +-3.705407404775356108e-04, +-3.681684464117532555e-04, +-3.657956791493744645e-04, +-3.634224425700246998e-04, +-3.610487405539442203e-04, +-3.586745769820280346e-04, +-3.562999557357175349e-04, +-3.539248806968364573e-04, +-3.515493557478980907e-04, +-3.491733847718915800e-04, +-3.467969716523767402e-04, +-3.444201202732706307e-04, +-3.420428345191583422e-04, +-3.396651182751214216e-04, +-3.372869754266359568e-04, +-3.349084098596106867e-04, +-3.325294254607541120e-04, +-3.301500261169348156e-04, +-3.277702157154911114e-04, +-3.253899981445399869e-04, +-3.230093772922869007e-04, +-3.206283570476515295e-04, +-3.182469412997876294e-04, +-3.158651339384440206e-04, +-3.134829388538021744e-04, +-3.111003599363085952e-04, +-3.087174010769897815e-04, +-3.063340661672830901e-04, +-3.039503590988732926e-04, +-3.015662837640056934e-04, +-2.991818440553166143e-04, +-2.967970438656724447e-04, +-2.944118870884785311e-04, +-2.920263776175156790e-04, +-2.896405193467715055e-04, +-2.872543161708104235e-04, +-2.848677719843384424e-04, +-2.824808906825710384e-04, +-2.800936761610648860e-04, +-2.777061323155544147e-04, +-2.753182630422643302e-04, +-2.729300722377412921e-04, +-2.705415637986921507e-04, +-2.681527416222924030e-04, +-2.657636096060233448e-04, +-2.633741716475037492e-04, +-2.609844316448047181e-04, +-2.585943934962310533e-04, +-2.562040611004176419e-04, +-2.538134383561665552e-04, +-2.514225291624952409e-04, +-2.490313374189977798e-04, +-2.466398670252043391e-04, +-2.442481218808928802e-04, +-2.418561058864011112e-04, +-2.394638229419821451e-04, +-2.370712769481711773e-04, +-2.346784718058321062e-04, +-2.322854114159907557e-04, +-2.298920996799366551e-04, +-2.274985404990019153e-04, +-2.251047377748743741e-04, +-2.227106954094337462e-04, +-2.203164173045829479e-04, +-2.179219073625631668e-04, +-2.155271694857859726e-04, +-2.131322075767224582e-04, +-2.107370255379470674e-04, +-2.083416272725090439e-04, +-2.059460166832271296e-04, +-2.035501976733300846e-04, +-2.011541741459629145e-04, +-1.987579500045603780e-04, +-1.963615291526752218e-04, +-1.939649154938160658e-04, +-1.915681129317585148e-04, +-1.891711253703807659e-04, +-1.867739567134943108e-04, +-1.843766108651612547e-04, +-1.819790917295241233e-04, +-1.795814032106435581e-04, +-1.771835492128090211e-04, +-1.747855336403730212e-04, +-1.723873603975852032e-04, +-1.699890333889062248e-04, +-1.675905565188410336e-04, +-1.651919336917722519e-04, +-1.627931688123276672e-04, +-1.603942657848934797e-04, +-1.579952285142487774e-04, +-1.555960609048645722e-04, +-1.531967668612715342e-04, +-1.507973502881069378e-04, +-1.483978150900020128e-04, +-1.459981651714147607e-04, +-1.435984044369443191e-04, +-1.411985367911106515e-04, +-1.387985661384554057e-04, +-1.363984963833226878e-04, +-1.339983314301710683e-04, +-1.315980751834082960e-04, +-1.291977315472797063e-04, +-1.267973044259116972e-04, +-1.243967977236827983e-04, +-1.219962153445734607e-04, +-1.195955611925364340e-04, +-1.171948391715413275e-04, +-1.147940531854096073e-04, +-1.123932071379144117e-04, +-1.099923049325607149e-04, +-1.075913504728995561e-04, +-1.051903476623613706e-04, +-1.027893004040892261e-04, +-1.003882126012534305e-04, +-9.798708815688497210e-05, +-9.558593097370776583e-05, +-9.318474495445456293e-05, +-9.078353400169904860e-05, +-8.838230201768993203e-05, +-8.598105290466479575e-05, +-8.357979056468383327e-05, +-8.117851889946270578e-05, +-7.877724181074066939e-05, +-7.637596319984669101e-05, +-7.397468696806725039e-05, +-7.157341701647931874e-05, +-6.917215724578425901e-05, +-6.677091155662132288e-05, +-6.436968384940214738e-05, +-6.196847802414317782e-05, +-5.956729798078033039e-05, +-5.716614761900230964e-05, +-5.476503083808391918e-05, +-5.236395153720068357e-05, +-4.996291361520800988e-05, +-4.756192097074286558e-05, +-4.516097750205593723e-05, +-4.276008710705961319e-05, +-4.035925368369558917e-05, +-3.795848112928681349e-05, +-3.555777334090570919e-05, +-3.315713421542122849e-05, +-3.075656764938562813e-05, +-2.835607753886760051e-05, +-2.595566777976702778e-05, +-2.355534226759451605e-05, +-2.115510489757223977e-05, +-1.875495956441349636e-05, +-1.635491016263763975e-05, +-1.395496058640297950e-05, +-1.155511472939360528e-05, +-9.155376484866558194e-06, +-6.755749746020102844e-06, +-4.356238405291772550e-06, +-1.956846354940695586e-06, + 4.424225131727705518e-07, + 2.841564307753869747e-06, + 5.240575137705156809e-06, + 7.639451112560913671e-06, + 1.003818834211883887e-05, + 1.243678293660690336e-05, + 1.483523100685022276e-05, + 1.723352866395615762e-05, + 1.963167201948132123e-05, + 2.202965718559828413e-05, + 2.442748027478070151e-05, + 2.682513739997052259e-05, + 2.922262467474436481e-05, + 3.161993821299902748e-05, + 3.401707412911823185e-05, + 3.641402853813926642e-05, + 3.881079755538514761e-05, + 4.120737729695197544e-05, + 4.360376387907356391e-05, + 4.599995341882294020e-05, + 4.839594203374431215e-05, + 5.079172584180572937e-05, + 5.318730096151269403e-05, + 5.558266351207424031e-05, + 5.797780961308908498e-05, + 6.037273538471174073e-05, + 6.276743694781955105e-05, + 6.516191042369764823e-05, + 6.755615193426029992e-05, + 6.995015760194873674e-05, + 7.234392354995209903e-05, + 7.473744590189299118e-05, + 7.713072078199373046e-05, + 7.952374431518987653e-05, + 8.191651262708281116e-05, + 8.430902184357196331e-05, + 8.670126809150280963e-05, + 8.909324749829773075e-05, + 9.148495619191058322e-05, + 9.387639030099204031e-05, + 9.626754595478950662e-05, + 9.865841928336683165e-05, + 1.010490064172903790e-04, + 1.034393034877948824e-04, + 1.058293066269504667e-04, + 1.082190119673486227e-04, + 1.106084156422682251e-04, + 1.129975137858419987e-04, + 1.153863025327426281e-04, + 1.177747780183489114e-04, + 1.201629363789128634e-04, + 1.225507737511909916e-04, + 1.249382862728785871e-04, + 1.273254700822421394e-04, + 1.297123213182860052e-04, + 1.320988361209173565e-04, + 1.344850106306340386e-04, + 1.368708409886901548e-04, + 1.392563233372612450e-04, + 1.416414538191327125e-04, + 1.440262285778640811e-04, + 1.464106437579562332e-04, + 1.487946955045371536e-04, + 1.511783799635285446e-04, + 1.535616932818115188e-04, + 1.559446316069138612e-04, + 1.583271910872285232e-04, + 1.607093678719131709e-04, + 1.630911581110572610e-04, + 1.654725579556342544e-04, + 1.678535635571343969e-04, + 1.702341710682119609e-04, + 1.726143766423162101e-04, + 1.749941764336465134e-04, + 1.773735665972633944e-04, + 1.797525432892560135e-04, + 1.821311026664267465e-04, + 1.845092408865135812e-04, + 1.868869541080857093e-04, + 1.892642384907671155e-04, + 1.916410901949200992e-04, + 1.940175053818117806e-04, + 1.963934802137281589e-04, + 1.987690108539245373e-04, + 2.011440934662628570e-04, + 2.035187242159064273e-04, + 2.058928992686885129e-04, + 2.082666147915972438e-04, + 2.106398669524112686e-04, + 2.130126519198624396e-04, + 2.153849658638043246e-04, + 2.177568049548965414e-04, + 2.201281653647731889e-04, + 2.224990432662063173e-04, + 2.248694348327949521e-04, + 2.272393362391305434e-04, + 2.296087436609591079e-04, + 2.319776532748740207e-04, + 2.343460612584785912e-04, + 2.367139637905500758e-04, + 2.390813570507312495e-04, + 2.414482372196921417e-04, + 2.438146004792973557e-04, + 2.461804430122401508e-04, + 2.485457610025261586e-04, + 2.509105506348424859e-04, + 2.532748080952565645e-04, + 2.556385295708439175e-04, + 2.580017112496493987e-04, + 2.603643493207945833e-04, + 2.627264399746433252e-04, + 2.650879794024922718e-04, + 2.674489637967334939e-04, + 2.698093893510189055e-04, + 2.721692522599523500e-04, + 2.745285487193043807e-04, + 2.768872749259138153e-04, + 2.792454270778509627e-04, + 2.816030013743736041e-04, + 2.839599940155594486e-04, + 2.863164012029519923e-04, + 2.886722191391887459e-04, + 2.910274440279630699e-04, + 2.933820720741821980e-04, + 2.957360994838717722e-04, + 2.980895224643903530e-04, + 3.004423372241206381e-04, + 3.027945399726339904e-04, + 3.051461269208523091e-04, + 3.074970942807414174e-04, + 3.098474382654724463e-04, + 3.121971550895873918e-04, + 3.145462409686876782e-04, + 3.168946921196016671e-04, + 3.192425047605419210e-04, + 3.215896751108054214e-04, + 3.239361993909266584e-04, + 3.262820738228512109e-04, + 3.286272946295656547e-04, + 3.309718580355301590e-04, + 3.333157602663133811e-04, + 3.356589975487575908e-04, + 3.380015661111404873e-04, + 3.403434621828703216e-04, + 3.426846819946435395e-04, + 3.450252217786127246e-04, + 3.473650777680779801e-04, + 3.497042461976467400e-04, + 3.520427233033988391e-04, + 3.543805053225810935e-04, + 3.567175884937651598e-04, + 3.590539690570168337e-04, + 3.613896432535290476e-04, + 3.637246073261035813e-04, + 3.660588575185269957e-04, + 3.683923900762587213e-04, + 3.707252012461204342e-04, + 3.730572872759922633e-04, + 3.753886444154418437e-04, + 3.777192689153674519e-04, + 3.800491570279494334e-04, + 3.823783050068164653e-04, + 3.847067091069433157e-04, + 3.870343655848693110e-04, + 3.893612706983861390e-04, + 3.916874207067057388e-04, + 3.940128118706221166e-04, + 3.963374404521974705e-04, + 3.986613027149346318e-04, + 4.009843949238815286e-04, + 4.033067133455871126e-04, + 4.056282542477390187e-04, + 4.079490138998514374e-04, + 4.102689885726445171e-04, + 4.125881745385172393e-04, + 4.149065680711910950e-04, + 4.172241654458714146e-04, + 4.195409629394099976e-04, + 4.218569568299969830e-04, + 4.241721433973267316e-04, + 4.264865189227540600e-04, + 4.288000796889957595e-04, + 4.311128219802835230e-04, + 4.334247420825355196e-04, + 4.357358362830414346e-04, + 4.380461008706314414e-04, + 4.403555321358326529e-04, + 4.426641263705163214e-04, + 4.449718798683171541e-04, + 4.472787889242702138e-04, + 4.495848498349858005e-04, + 4.518900588988493785e-04, + 4.541944124154626700e-04, + 4.564979066863274616e-04, + 4.588005380144801197e-04, + 4.611023027044537518e-04, + 4.634031970623819102e-04, + 4.657032173961645296e-04, + 4.680023600151590919e-04, + 4.703006212303454249e-04, + 4.725979973544834536e-04, + 4.748944847018101117e-04, + 4.771900795882536342e-04, + 4.794847783313364127e-04, + 4.817785772503304698e-04, + 4.840714726662164770e-04, + 4.863634609013300870e-04, + 4.886545382799809597e-04, + 4.909447011281040281e-04, + 4.932339457732078363e-04, + 4.955222685445393382e-04, + 4.978096657729853434e-04, + 5.000961337912837200e-04, + 5.023816689337207934e-04, + 5.046662675362932182e-04, + 5.069499259368658375e-04, + 5.092326404748694080e-04, + 5.115144074914614947e-04, + 5.137952233296368435e-04, + 5.160750843341756645e-04, + 5.183539868512991805e-04, + 5.206319272293320755e-04, + 5.229089018181046645e-04, + 5.251849069694081509e-04, + 5.274599390366508257e-04, + 5.297339943750137585e-04, + 5.320070693416106096e-04, + 5.342791602951840529e-04, + 5.365502635962729602e-04, + 5.388203756073606113e-04, + 5.410894926925813092e-04, + 5.433576112178796491e-04, + 5.456247275511638250e-04, + 5.478908380620113767e-04, + 5.501559391218253155e-04, + 5.524200271039916583e-04, + 5.546830983835810552e-04, + 5.569451493375077340e-04, + 5.592061763446873595e-04, + 5.614661757856864027e-04, + 5.637251440431865048e-04, + 5.659830775013801425e-04, + 5.682399725466347022e-04, + 5.704958255671447763e-04, + 5.727506329528895537e-04, + 5.750043910957332175e-04, + 5.772570963895914779e-04, + 5.795087452301263698e-04, + 5.817593340149555033e-04, + 5.840088591435629427e-04, + 5.862573170174988080e-04, + 5.885047040400856726e-04, + 5.907510166165756650e-04, + 5.929962511542596470e-04, + 5.952404040624152811e-04, + 5.974834717519702772e-04, + 5.997254506361014139e-04, + 6.019663371299467918e-04, + 6.042061276503065933e-04, + 6.064448186163015186e-04, + 6.086824064487759327e-04, + 6.109188875707591932e-04, + 6.131542584071123089e-04, + 6.153885153846914372e-04, + 6.176216549325021666e-04, + 6.198536734814029869e-04, + 6.220845674642598968e-04, + 6.243143333161040465e-04, + 6.265429674738421479e-04, + 6.287704663764028413e-04, + 6.309968264649004101e-04, + 6.332220441823344570e-04, + 6.354461159737493899e-04, + 6.376690382863888125e-04, + 6.398908075693506394e-04, + 6.421114202739956235e-04, + 6.443308728535979179e-04, + 6.465491617635060794e-04, + 6.487662834612939900e-04, + 6.509822344064703989e-04, + 6.531970110606341801e-04, + 6.554106098876254704e-04, + 6.576230273532368380e-04, + 6.598342599253662630e-04, + 6.620443040741721789e-04, + 6.642531562717812798e-04, + 6.664608129924909407e-04, + 6.686672707126832408e-04, + 6.708725259109663431e-04, + 6.730765750681380654e-04, + 6.752794146668502110e-04, + 6.774810411921966405e-04, + 6.796814511314287766e-04, + 6.818806409736628696e-04, + 6.840786072104815133e-04, + 6.862753463355887595e-04, + 6.884708548447721716e-04, + 6.906651292360470231e-04, + 6.928581660095734646e-04, + 6.950499616678526560e-04, + 6.972405127154421636e-04, + 6.994298156591035199e-04, + 7.016178670079571559e-04, + 7.038046632731958466e-04, + 7.059902009682351987e-04, + 7.081744766088164320e-04, + 7.103574867129643132e-04, + 7.125392278006532215e-04, + 7.147196963944397801e-04, + 7.168988890188910485e-04, + 7.190768022010219978e-04, + 7.212534324699699248e-04, + 7.234287763571333385e-04, + 7.256028303963309037e-04, + 7.277755911235168386e-04, + 7.299470550769270646e-04, + 7.321172187972335970e-04, + 7.342860788272564726e-04, + 7.364536317121194407e-04, + 7.386198739993931868e-04, + 7.407848022388175595e-04, + 7.429484129824509737e-04, + 7.451107027848142845e-04, + 7.472716682026170256e-04, + 7.494313057948962962e-04, + 7.515896121231800415e-04, + 7.537465837511417343e-04, + 7.559022172450468495e-04, + 7.580565091731821404e-04, + 7.602094561064788375e-04, + 7.623610546181903156e-04, + 7.645113012838441720e-04, + 7.666601926813444668e-04, + 7.688077253911239448e-04, + 7.709538959958574808e-04, + 7.730987010806574531e-04, + 7.752421372329966563e-04, + 7.773842010428869782e-04, + 7.795248891026108429e-04, + 7.816641980068642168e-04, + 7.838021243528598249e-04, + 7.859386647402836741e-04, + 7.880738157709665402e-04, + 7.902075740494608714e-04, + 7.923399361827159620e-04, + 7.944708987800312228e-04, + 7.966004584532064515e-04, + 7.987286118164545548e-04, + 8.008553554865921508e-04, + 8.029806860827634228e-04, + 8.051046002265849688e-04, + 8.072270945422954213e-04, + 8.093481656564815779e-04, + 8.114678101982117581e-04, + 8.135860247991983252e-04, + 8.157028060935136255e-04, + 8.178181507177310428e-04, + 8.199320553110789550e-04, + 8.220445165151668652e-04, + 8.241555309741179988e-04, + 8.262650953347293326e-04, + 8.283732062461430807e-04, + 8.304798603602277923e-04, + 8.325850543312496212e-04, + 8.346887848160317036e-04, + 8.367910484740863223e-04, + 8.388918419673442898e-04, + 8.409911619603068454e-04, + 8.430890051201803126e-04, + 8.451853681166067835e-04, + 8.472802476218101609e-04, + 8.493736403107430676e-04, + 8.514655428608048455e-04, + 8.535559519520402897e-04, + 8.556448642670441305e-04, + 8.577322764911196520e-04, + 8.598181853122248072e-04, + 8.619025874206559567e-04, + 8.639854795096084004e-04, + 8.660668582748657545e-04, + 8.681467204147420543e-04, + 8.702250626302004749e-04, + 8.723018816249785562e-04, + 8.743771741053287536e-04, + 8.764509367801993911e-04, + 8.785231663611569241e-04, + 8.805938595625672181e-04, + 8.826630131013291601e-04, + 8.847306236970144122e-04, + 8.867966880719682426e-04, + 8.888612029512668079e-04, + 8.909241650624004577e-04, + 8.929855711358781773e-04, + 8.950454179047238673e-04, + 8.971037021046692232e-04, + 8.991604204742944650e-04, + 9.012155697547094731e-04, + 9.032691466899348855e-04, + 9.053211480265716329e-04, + 9.073715705139634609e-04, + 9.094204109043194442e-04, + 9.114676659524536704e-04, + 9.135133324159342089e-04, + 9.155574070552116974e-04, + 9.175998866333613018e-04, + 9.196407679162154226e-04, + 9.216800476725186273e-04, + 9.237177226736409874e-04, + 9.257537896937397329e-04, + 9.277882455098885976e-04, + 9.298210869017645933e-04, + 9.318523106520710652e-04, + 9.338819135459806289e-04, + 9.359098923717509974e-04, + 9.379362439204029728e-04, + 9.399609649856746933e-04, + 9.419840523641247404e-04, + 9.440055028552733025e-04, + 9.460253132613270039e-04, + 9.480434803873337294e-04, + 9.500600010413120773e-04, + 9.520748720339871404e-04, + 9.540880901789786138e-04, + 9.560996522927160115e-04, + 9.581095551946221126e-04, + 9.601177957068503677e-04, + 9.621243706544194488e-04, + 9.641292768653101763e-04, + 9.661325111704354872e-04, + 9.681340704033143067e-04, + 9.701339514006248168e-04, + 9.721321510018967596e-04, + 9.741286660494698040e-04, + 9.761234933886276614e-04, + 9.781166298675205654e-04, + 9.801080723373478513e-04, + 9.820978176520913511e-04, + 9.840858626686561222e-04, + 9.860722042470079253e-04, + 9.880568392499190864e-04, + 9.900397645430931808e-04, + 9.920209769953144355e-04, + 9.940004734781781974e-04, + 9.959782508662407691e-04, + 9.979543060371404064e-04, + 9.999286358713032827e-04, + 1.001901237252307997e-03, + 1.003872107066564436e-03, + 1.005841242203462738e-03, + 1.007808639555512944e-03, + 1.009774296018068739e-03, + 1.011738208489493338e-03, + 1.013700373871263783e-03, + 1.015660789067733723e-03, + 1.017619450986264598e-03, + 1.019576356537361169e-03, + 1.021531502634410657e-03, + 1.023484886193823905e-03, + 1.025436504135171989e-03, + 1.027386353380921671e-03, + 1.029334430856621886e-03, + 1.031280733490820252e-03, + 1.033225258215194047e-03, + 1.035168001964515512e-03, + 1.037108961676354345e-03, + 1.039048134291597255e-03, + 1.040985516754160210e-03, + 1.042921106010928373e-03, + 1.044854899011876670e-03, + 1.046786892710182106e-03, + 1.048717084061973103e-03, + 1.050645470026520100e-03, + 1.052572047566132339e-03, + 1.054496813646359091e-03, + 1.056419765235711884e-03, + 1.058340899305819762e-03, + 1.060260212831507995e-03, + 1.062177702790761437e-03, + 1.064093366164427018e-03, + 1.066007199936787504e-03, + 1.067919201095032192e-03, + 1.069829366629669121e-03, + 1.071737693534212171e-03, + 1.073644178805322012e-03, + 1.075548819442942493e-03, + 1.077451612450039571e-03, + 1.079352554832747023e-03, + 1.081251643600479855e-03, + 1.083148875765705755e-03, + 1.085044248344058278e-03, + 1.086937758354485821e-03, + 1.088829402818987727e-03, + 1.090719178762751106e-03, + 1.092607083214284418e-03, + 1.094493113205170266e-03, + 1.096377265770187267e-03, + 1.098259537947452943e-03, + 1.100139926778120805e-03, + 1.102018429306783447e-03, + 1.103895042580945634e-03, + 1.105769763651601742e-03, + 1.107642589572923946e-03, + 1.109513517402244869e-03, + 1.111382544200129139e-03, + 1.113249667030515424e-03, + 1.115114882960462290e-03, + 1.116978189060281994e-03, + 1.118839582403673844e-03, + 1.120699060067468101e-03, + 1.122556619131808353e-03, + 1.124412256680066505e-03, + 1.126265969798973107e-03, + 1.128117755578578966e-03, + 1.129967611111977379e-03, + 1.131815533495792673e-03, + 1.133661519829906985e-03, + 1.135505567217415593e-03, + 1.137347672764762443e-03, + 1.139187833581651026e-03, + 1.141026046781229344e-03, + 1.142862309479831433e-03, + 1.144696618797118315e-03, + 1.146528971856193785e-03, + 1.148359365783379552e-03, + 1.150187797708315633e-03, + 1.152014264764126454e-03, + 1.153838764087132887e-03, + 1.155661292817022684e-03, + 1.157481848096955646e-03, + 1.159300427073320329e-03, + 1.161117026895867399e-03, + 1.162931644717842775e-03, + 1.164744277695692722e-03, + 1.166554922989409063e-03, + 1.168363577762233409e-03, + 1.170170239180796370e-03, + 1.171974904415238120e-03, + 1.173777570638966181e-03, + 1.175578235028790523e-03, + 1.177376894765039782e-03, + 1.179173547031332281e-03, + 1.180968189014691390e-03, + 1.182760817905681916e-03, + 1.184551430898156182e-03, + 1.186340025189406254e-03, + 1.188126597980256093e-03, + 1.189911146474820214e-03, + 1.191693667880827645e-03, + 1.193474159409189115e-03, + 1.195252618274485158e-03, + 1.197029041694757951e-03, + 1.198803426891256090e-03, + 1.200575771088930937e-03, + 1.202346071516149310e-03, + 1.204114325404672227e-03, + 1.205880529989736662e-03, + 1.207644682510161140e-03, + 1.209406780208134320e-03, + 1.211166820329368085e-03, + 1.212924800123016227e-03, + 1.214680716841858759e-03, + 1.216434567742040408e-03, + 1.218186350083211343e-03, + 1.219936061128607842e-03, + 1.221683698145014773e-03, + 1.223429258402495851e-03, + 1.225172739174907981e-03, + 1.226914137739432880e-03, + 1.228653451376934868e-03, + 1.230390677371700223e-03, + 1.232125813011539749e-03, + 1.233858855587929935e-03, + 1.235589802395767713e-03, + 1.237318650733501861e-03, + 1.239045397903247277e-03, + 1.240770041210559251e-03, + 1.242492577964558797e-03, + 1.244213005478043673e-03, + 1.245931321067260053e-03, + 1.247647522052033279e-03, + 1.249361605755885604e-03, + 1.251073569505755170e-03, + 1.252783410632329073e-03, + 1.254491126469767107e-03, + 1.256196714355821897e-03, + 1.257900171631994154e-03, + 1.259601495643123065e-03, + 1.261300683737884157e-03, + 1.262997733268522152e-03, + 1.264692641590822991e-03, + 1.266385406064188864e-03, + 1.268076024051762027e-03, + 1.269764492920193210e-03, + 1.271450810039763272e-03, + 1.273134972784512216e-03, + 1.274816978531991126e-03, + 1.276496824663443446e-03, + 1.278174508563716290e-03, + 1.279850027621385125e-03, + 1.281523379228719298e-03, + 1.283194560781420303e-03, + 1.284863569679077153e-03, + 1.286530403324913753e-03, + 1.288195059125742722e-03, + 1.289857534492103511e-03, + 1.291517826838161796e-03, + 1.293175933581884032e-03, + 1.294831852144820179e-03, + 1.296485579952195207e-03, + 1.298137114433064575e-03, + 1.299786453020050766e-03, + 1.301433593149490956e-03, + 1.303078532261498163e-03, + 1.304721267799934361e-03, + 1.306361797212158291e-03, + 1.308000117949512705e-03, + 1.309636227466862059e-03, + 1.311270123222959627e-03, + 1.312901802680174063e-03, + 1.314531263304607143e-03, + 1.316158502566215855e-03, + 1.317783517938588174e-03, + 1.319406306899052143e-03, + 1.321026866928808139e-03, + 1.322645195512689269e-03, + 1.324261290139294722e-03, + 1.325875148301093858e-03, + 1.327486767494213266e-03, + 1.329096145218548004e-03, + 1.330703278977877612e-03, + 1.332308166279651002e-03, + 1.333910804635097700e-03, + 1.335511191559339518e-03, + 1.337109324571149858e-03, + 1.338705201193269006e-03, + 1.340298818951982584e-03, + 1.341890175377598391e-03, + 1.343479268004180768e-03, + 1.345066094369549948e-03, + 1.346650652015323043e-03, + 1.348232938487041758e-03, + 1.349812951333971165e-03, + 1.351390688109220918e-03, + 1.352966146369707521e-03, + 1.354539323676270338e-03, + 1.356110217593489665e-03, + 1.357678825689779319e-03, + 1.359245145537463619e-03, + 1.360809174712756349e-03, + 1.362370910795497082e-03, + 1.363930351369603512e-03, + 1.365487494022842680e-03, + 1.367042336346637561e-03, + 1.368594875936514615e-03, + 1.370145110391697649e-03, + 1.371693037315423972e-03, + 1.373238654314695674e-03, + 1.374781959000408432e-03, + 1.376322948987429356e-03, + 1.377861621894415061e-03, + 1.379397975343915096e-03, + 1.380932006962473646e-03, + 1.382463714380429819e-03, + 1.383993095232024769e-03, + 1.385520147155509460e-03, + 1.387044867792939758e-03, + 1.388567254790282245e-03, + 1.390087305797523291e-03, + 1.391605018468431180e-03, + 1.393120390460840172e-03, + 1.394633419436399832e-03, + 1.396144103060696032e-03, + 1.397652439003351996e-03, + 1.399158424937817528e-03, + 1.400662058541493485e-03, + 1.402163337495825231e-03, + 1.403662259486099890e-03, + 1.405158822201567565e-03, + 1.406653023335520045e-03, + 1.408144860585118854e-03, + 1.409634331651511479e-03, + 1.411121434239794286e-03, + 1.412606166059076490e-03, + 1.414088524822498805e-03, + 1.415568508246956318e-03, + 1.417046114053546486e-03, + 1.418521339967328439e-03, + 1.419994183717160352e-03, + 1.421464643036087589e-03, + 1.422932715661124128e-03, + 1.424398399333199434e-03, + 1.425861691797292467e-03, + 1.427322590802338875e-03, + 1.428781094101397309e-03, + 1.430237199451430199e-03, + 1.431690904613406971e-03, + 1.433142207352432630e-03, + 1.434591105437517042e-03, + 1.436037596641704826e-03, + 1.437481678742133463e-03, + 1.438923349520000771e-03, + 1.440362606760351534e-03, + 1.441799448252489933e-03, + 1.443233871789602243e-03, + 1.444665875169048701e-03, + 1.446095456192138425e-03, + 1.447522612664246290e-03, + 1.448947342394880586e-03, + 1.450369643197520382e-03, + 1.451789512889712676e-03, + 1.453206949293156742e-03, + 1.454621950233525021e-03, + 1.456034513540572844e-03, + 1.457444637048208903e-03, + 1.458852318594339777e-03, + 1.460257556020951898e-03, + 1.461660347174203707e-03, + 1.463060689904227465e-03, + 1.464458582065359098e-03, + 1.465854021515951072e-03, + 1.467247006118441340e-03, + 1.468637533739505785e-03, + 1.470025602249691110e-03, + 1.471411209523855890e-03, + 1.472794353440927710e-03, + 1.474175031883893190e-03, + 1.475553242739853282e-03, + 1.476928983900119979e-03, + 1.478302253260049565e-03, + 1.479673048719139542e-03, + 1.481041368180991335e-03, + 1.482407209553446032e-03, + 1.483770570748376436e-03, + 1.485131449681795267e-03, + 1.486489844273927155e-03, + 1.487845752449167003e-03, + 1.489199172135882232e-03, + 1.490550101266771652e-03, + 1.491898537778657725e-03, + 1.493244479612471608e-03, + 1.494587924713320802e-03, + 1.495928871030462052e-03, + 1.497267316517404776e-03, + 1.498603259131740199e-03, + 1.499936696835233287e-03, + 1.501267627593919247e-03, + 1.502596049377923114e-03, + 1.503921960161552990e-03, + 1.505245357923395456e-03, + 1.506566240646133644e-03, + 1.507884606316646763e-03, + 1.509200452926101827e-03, + 1.510513778469771504e-03, + 1.511824580947134736e-03, + 1.513132858361954363e-03, + 1.514438608722098881e-03, + 1.515741830039754297e-03, + 1.517042520331236561e-03, + 1.518340677617080253e-03, + 1.519636299922129440e-03, + 1.520929385275352711e-03, + 1.522219931709959187e-03, + 1.523507937263467041e-03, + 1.524793399977541304e-03, + 1.526076317898079513e-03, + 1.527356689075308645e-03, + 1.528634511563607516e-03, + 1.529909783421624751e-03, + 1.531182502712236061e-03, + 1.532452667502614283e-03, + 1.533720275864221142e-03, + 1.534985325872597348e-03, + 1.536247815607711493e-03, + 1.537507743153773785e-03, + 1.538765106599199401e-03, + 1.540019904036658794e-03, + 1.541272133563199778e-03, + 1.542521793280035450e-03, + 1.543768881292696855e-03, + 1.545013395710962941e-03, + 1.546255334648975049e-03, + 1.547494696225081229e-03, + 1.548731478561905621e-03, + 1.549965679786432377e-03, + 1.551197298029956002e-03, + 1.552426331427899644e-03, + 1.553652778120188710e-03, + 1.554876636250927336e-03, + 1.556097903968532833e-03, + 1.557316579425803990e-03, + 1.558532660779751505e-03, + 1.559746146191790320e-03, + 1.560957033827584150e-03, + 1.562165321857105545e-03, + 1.563371008454738026e-03, + 1.564574091799097403e-03, + 1.565774570073126971e-03, + 1.566972441464188149e-03, + 1.568167704163882670e-03, + 1.569360356368148862e-03, + 1.570550396277355099e-03, + 1.571737822096110722e-03, + 1.572922632033375541e-03, + 1.574104824302536816e-03, + 1.575284397121219952e-03, + 1.576461348711530926e-03, + 1.577635677299751415e-03, + 1.578807381116669253e-03, + 1.579976458397407135e-03, + 1.581142907381395289e-03, + 1.582306726312430025e-03, + 1.583467913438748112e-03, + 1.584626467012883663e-03, + 1.585782385291734705e-03, + 1.586935666536652299e-03, + 1.588086309013292440e-03, + 1.589234310991719055e-03, + 1.590379670746326808e-03, + 1.591522386555974892e-03, + 1.592662456703928479e-03, + 1.593799879477682431e-03, + 1.594934653169272250e-03, + 1.596066776075146356e-03, + 1.597196246495976571e-03, + 1.598323062737000725e-03, + 1.599447223107832708e-03, + 1.600568725922430153e-03, + 1.601687569499193539e-03, + 1.602803752160902656e-03, + 1.603917272234829357e-03, + 1.605028128052574717e-03, + 1.606136317950172679e-03, + 1.607241840268140145e-03, + 1.608344693351342969e-03, + 1.609444875549076405e-03, + 1.610542385215126037e-03, + 1.611637220707650905e-03, + 1.612729380389225356e-03, + 1.613818862626936182e-03, + 1.614905665792216310e-03, + 1.615989788261022828e-03, + 1.617071228413687143e-03, + 1.618149984634993481e-03, + 1.619226055314231145e-03, + 1.620299438845073303e-03, + 1.621370133625635312e-03, + 1.622438138058577726e-03, + 1.623503450550921540e-03, + 1.624566069514162903e-03, + 1.625625993364322123e-03, + 1.626683220521805322e-03, + 1.627737749411503100e-03, + 1.628789578462828047e-03, + 1.629838706109590276e-03, + 1.630885130790107797e-03, + 1.631928850947140597e-03, + 1.632969865027973254e-03, + 1.634008171484397373e-03, + 1.635043768772542240e-03, + 1.636076655353156488e-03, + 1.637106829691459568e-03, + 1.638134290257108787e-03, + 1.639159035524251134e-03, + 1.640181063971595486e-03, + 1.641200374082272748e-03, + 1.642216964343945138e-03, + 1.643230833248737668e-03, + 1.644241979293355237e-03, + 1.645250400978935179e-03, + 1.646256096811112750e-03, + 1.647259065300095068e-03, + 1.648259304960600401e-03, + 1.649256814311737601e-03, + 1.650251591877288215e-03, + 1.651243636185429579e-03, + 1.652232945768952960e-03, + 1.653219519165106130e-03, + 1.654203354915654081e-03, + 1.655184451566957303e-03, + 1.656162807669834961e-03, + 1.657138421779639917e-03, + 1.658111292456317500e-03, + 1.659081418264285153e-03, + 1.660048797772496190e-03, + 1.661013429554500940e-03, + 1.661975312188334426e-03, + 1.662934444256561903e-03, + 1.663890824346369928e-03, + 1.664844451049419779e-03, + 1.665795322961918139e-03, + 1.666743438684692349e-03, + 1.667688796823037743e-03, + 1.668631395986904138e-03, + 1.669571234790653618e-03, + 1.670508311853323349e-03, + 1.671442625798513033e-03, + 1.672374175254318562e-03, + 1.673302958853412894e-03, + 1.674228975233092677e-03, + 1.675152223035161585e-03, + 1.676072700905997326e-03, + 1.676990407496608236e-03, + 1.677905341462518135e-03, + 1.678817501463840270e-03, + 1.679726886165252599e-03, + 1.680633494236056331e-03, + 1.681537324350140371e-03, + 1.682438375185875716e-03, + 1.683336645426322317e-03, + 1.684232133759121534e-03, + 1.685124838876455363e-03, + 1.686014759475120165e-03, + 1.686901894256483733e-03, + 1.687786241926575925e-03, + 1.688667801195952931e-03, + 1.689546570779778363e-03, + 1.690422549397872483e-03, + 1.691295735774599011e-03, + 1.692166128638920419e-03, + 1.693033726724461029e-03, + 1.693898528769457795e-03, + 1.694760533516642556e-03, + 1.695619739713500728e-03, + 1.696476146112048822e-03, + 1.697329751468915114e-03, + 1.698180554545414452e-03, + 1.699028554107388875e-03, + 1.699873748925393889e-03, + 1.700716137774535824e-03, + 1.701555719434550773e-03, + 1.702392492689860535e-03, + 1.703226456329446194e-03, + 1.704057609146933557e-03, + 1.704885949940621774e-03, + 1.705711477513400295e-03, + 1.706534190672778350e-03, + 1.707354088230964538e-03, + 1.708171169004755801e-03, + 1.708985431815571469e-03, + 1.709796875489544982e-03, + 1.710605498857368416e-03, + 1.711411300754473331e-03, + 1.712214280020805902e-03, + 1.713014435501075206e-03, + 1.713811766044617043e-03, + 1.714606270505385482e-03, + 1.715397947741978879e-03, + 1.716186796617712521e-03, + 1.716972816000506301e-03, + 1.717756004762923750e-03, + 1.718536361782253353e-03, + 1.719313885940382562e-03, + 1.720088576123881717e-03, + 1.720860431223977371e-03, + 1.721629450136591107e-03, + 1.722395631762279038e-03, + 1.723158975006259348e-03, + 1.723919478778446765e-03, + 1.724677141993458855e-03, + 1.725431963570470736e-03, + 1.726183942433457286e-03, + 1.726933077510990405e-03, + 1.727679367736367592e-03, + 1.728422812047535626e-03, + 1.729163409387108122e-03, + 1.729901158702436877e-03, + 1.730636058945508437e-03, + 1.731368109072990063e-03, + 1.732097308046277656e-03, + 1.732823654831424634e-03, + 1.733547148399154940e-03, + 1.734267787724941539e-03, + 1.734985571788900819e-03, + 1.735700499575834870e-03, + 1.736412570075298060e-03, + 1.737121782281464541e-03, + 1.737828135193284591e-03, + 1.738531627814349527e-03, + 1.739232259152958269e-03, + 1.739930028222165265e-03, + 1.740624934039619381e-03, + 1.741316975627780301e-03, + 1.742006152013777804e-03, + 1.742692462229436046e-03, + 1.743375905311272695e-03, + 1.744056480300571789e-03, + 1.744734186243275748e-03, + 1.745409022190048259e-03, + 1.746080987196298347e-03, + 1.746750080322115317e-03, + 1.747416300632313865e-03, + 1.748079647196411953e-03, + 1.748740119088681988e-03, + 1.749397715388116559e-03, + 1.750052435178358181e-03, + 1.750704277547852385e-03, + 1.751353241589750139e-03, + 1.751999326401899393e-03, + 1.752642531086892131e-03, + 1.753282854752032062e-03, + 1.753920296509389265e-03, + 1.754554855475730802e-03, + 1.755186530772545215e-03, + 1.755815321526098694e-03, + 1.756441226867349421e-03, + 1.757064245931985519e-03, + 1.757684377860465816e-03, + 1.758301621797996647e-03, + 1.758915976894434921e-03, + 1.759527442304469622e-03, + 1.760136017187480424e-03, + 1.760741700707618360e-03, + 1.761344492033753342e-03, + 1.761944390339486742e-03, + 1.762541394803218177e-03, + 1.763135504608041425e-03, + 1.763726718941794518e-03, + 1.764315036997113296e-03, + 1.764900457971343376e-03, + 1.765482981066565302e-03, + 1.766062605489662415e-03, + 1.766639330452225232e-03, + 1.767213155170600011e-03, + 1.767784078865932123e-03, + 1.768352100764068692e-03, + 1.768917220095617788e-03, + 1.769479436095991150e-03, + 1.770038748005296411e-03, + 1.770595155068469592e-03, + 1.771148656535122008e-03, + 1.771699251659683821e-03, + 1.772246939701360236e-03, + 1.772791719924075122e-03, + 1.773333591596521321e-03, + 1.773872553992191436e-03, + 1.774408606389309313e-03, + 1.774941748070884466e-03, + 1.775471978324661988e-03, + 1.775999296443213837e-03, + 1.776523701723826520e-03, + 1.777045193468574378e-03, + 1.777563770984312216e-03, + 1.778079433582686799e-03, + 1.778592180580036231e-03, + 1.779102011297553675e-03, + 1.779608925061187171e-03, + 1.780112921201655249e-03, + 1.780613999054433266e-03, + 1.781112157959782900e-03, + 1.781607397262776433e-03, + 1.782099716313227363e-03, + 1.782589114465724664e-03, + 1.783075591079673989e-03, + 1.783559145519237818e-03, + 1.784039777153342615e-03, + 1.784517485355744098e-03, + 1.784992269504945706e-03, + 1.785464128984224188e-03, + 1.785933063181690747e-03, + 1.786399071490202359e-03, + 1.786862153307397115e-03, + 1.787322308035736934e-03, + 1.787779535082426041e-03, + 1.788233833859503765e-03, + 1.788685203783769301e-03, + 1.789133644276799055e-03, + 1.789579154765005408e-03, + 1.790021734679544344e-03, + 1.790461383456384836e-03, + 1.790898100536305595e-03, + 1.791331885364847148e-03, + 1.791762737392343496e-03, + 1.792190656073966134e-03, + 1.792615640869634711e-03, + 1.793037691244085555e-03, + 1.793456806666835889e-03, + 1.793872986612220265e-03, + 1.794286230559382755e-03, + 1.794696537992205394e-03, + 1.795103908399431347e-03, + 1.795508341274590965e-03, + 1.795909836115969693e-03, + 1.796308392426710634e-03, + 1.796704009714734755e-03, + 1.797096687492760834e-03, + 1.797486425278310013e-03, + 1.797873222593700812e-03, + 1.798257078966080573e-03, + 1.798637993927370594e-03, + 1.799015967014300178e-03, + 1.799390997768434385e-03, + 1.799763085736106379e-03, + 1.800132230468456246e-03, + 1.800498431521457658e-03, + 1.800861688455888824e-03, + 1.801222000837286947e-03, + 1.801579368236059901e-03, + 1.801933790227373258e-03, + 1.802285266391245692e-03, + 1.802633796312468756e-03, + 1.802979379580648724e-03, + 1.803322015790221559e-03, + 1.803661704540413880e-03, + 1.803998445435266813e-03, + 1.804332238083638596e-03, + 1.804663082099191782e-03, + 1.804990977100402348e-03, + 1.805315922710561865e-03, + 1.805637918557769688e-03, + 1.805956964274932092e-03, + 1.806273059499784823e-03, + 1.806586203874859702e-03, + 1.806896397047521056e-03, + 1.807203638669924737e-03, + 1.807507928399047174e-03, + 1.807809265896708796e-03, + 1.808107650829486428e-03, + 1.808403082868822141e-03, + 1.808695561690964928e-03, + 1.808985086976957687e-03, + 1.809271658412674958e-03, + 1.809555275688812725e-03, + 1.809835938500869990e-03, + 1.810113646549168500e-03, + 1.810388399538846033e-03, + 1.810660197179856821e-03, + 1.810929039186983270e-03, + 1.811194925279794969e-03, + 1.811457855182720903e-03, + 1.811717828624987868e-03, + 1.811974845340613097e-03, + 1.812228905068490135e-03, + 1.812480007552286915e-03, + 1.812728152540502360e-03, + 1.812973339786455324e-03, + 1.813215569048279600e-03, + 1.813454840088936934e-03, + 1.813691152676199896e-03, + 1.813924506582662716e-03, + 1.814154901585747362e-03, + 1.814382337467675783e-03, + 1.814606814015499395e-03, + 1.814828331021108628e-03, + 1.815046888281181530e-03, + 1.815262485597232559e-03, + 1.815475122775599788e-03, + 1.815684799627431461e-03, + 1.815891515968701391e-03, + 1.816095271620200065e-03, + 1.816296066407543106e-03, + 1.816493900161165846e-03, + 1.816688772716320080e-03, + 1.816880683913071892e-03, + 1.817069633596324211e-03, + 1.817255621615792302e-03, + 1.817438647825997053e-03, + 1.817618712086307032e-03, + 1.817795814260893825e-03, + 1.817969954218737671e-03, + 1.818141131833675385e-03, + 1.818309346984327496e-03, + 1.818474599554151380e-03, + 1.818636889431415448e-03, + 1.818796216509224739e-03, + 1.818952580685492945e-03, + 1.819105981862944145e-03, + 1.819256419949136661e-03, + 1.819403894856446574e-03, + 1.819548406502062522e-03, + 1.819689954807993072e-03, + 1.819828539701072142e-03, + 1.819964161112952493e-03, + 1.820096818980098795e-03, + 1.820226513243787189e-03, + 1.820353243850138464e-03, + 1.820477010750073607e-03, + 1.820597813899322692e-03, + 1.820715653258456537e-03, + 1.820830528792856352e-03, + 1.820942440472704408e-03, + 1.821051388273022204e-03, + 1.821157372173634256e-03, + 1.821260392159188696e-03, + 1.821360448219151848e-03, + 1.821457540347798257e-03, + 1.821551668544228904e-03, + 1.821642832812354939e-03, + 1.821731033160898768e-03, + 1.821816269603410100e-03, + 1.821898542158242960e-03, + 1.821977850848574988e-03, + 1.822054195702387273e-03, + 1.822127576752485172e-03, + 1.822197994036488982e-03, + 1.822265447596818329e-03, + 1.822329937480726865e-03, + 1.822391463740263015e-03, + 1.822450026432301858e-03, + 1.822505625618521270e-03, + 1.822558261365413634e-03, + 1.822607933744275653e-03, + 1.822654642831241737e-03, + 1.822698388707224811e-03, + 1.822739171457962932e-03, + 1.822776991174011266e-03, + 1.822811847950716506e-03, + 1.822843741888255245e-03, + 1.822872673091595168e-03, + 1.822898641670522586e-03, + 1.822921647739625308e-03, + 1.822941691418306955e-03, + 1.822958772830771340e-03, + 1.822972892106033971e-03, + 1.822984049377912932e-03, + 1.822992244785026509e-03, + 1.822997478470812912e-03, + 1.822999750583506866e-03, + 1.822999061276138954e-03, + 1.822995410706561856e-03, + 1.822988799037415656e-03, + 1.822979226436149741e-03, + 1.822966693075014129e-03, + 1.822951199131065108e-03, + 1.822932744786150052e-03, + 1.822911330226932580e-03, + 1.822886955644856992e-03, + 1.822859621236185132e-03, + 1.822829327201960174e-03, + 1.822796073748041319e-03, + 1.822759861085074739e-03, + 1.822720689428504849e-03, + 1.822678558998572359e-03, + 1.822633470020319909e-03, + 1.822585422723577110e-03, + 1.822534417342974635e-03, + 1.822480454117930129e-03, + 1.822423533292661865e-03, + 1.822363655116176172e-03, + 1.822300819842277621e-03, + 1.822235027729556239e-03, + 1.822166279041390101e-03, + 1.822094574045950328e-03, + 1.822019913016204333e-03, + 1.821942296229903894e-03, + 1.821861723969577570e-03, + 1.821778196522560837e-03, + 1.821691714180960963e-03, + 1.821602277241677822e-03, + 1.821509886006385248e-03, + 1.821414540781561174e-03, + 1.821316241878456841e-03, + 1.821214989613097884e-03, + 1.821110784306304497e-03, + 1.821003626283673434e-03, + 1.820893515875575625e-03, + 1.820780453417177860e-03, + 1.820664439248409613e-03, + 1.820545473713985809e-03, + 1.820423557163398801e-03, + 1.820298689950913817e-03, + 1.820170872435577852e-03, + 1.820040104981205135e-03, + 1.819906387956388844e-03, + 1.819769721734496547e-03, + 1.819630106693664786e-03, + 1.819487543216793219e-03, + 1.819342031691575847e-03, + 1.819193572510446584e-03, + 1.819042166070635423e-03, + 1.818887812774120077e-03, + 1.818730513027651784e-03, + 1.818570267242756392e-03, + 1.818407075835709423e-03, + 1.818240939227560140e-03, + 1.818071857844125259e-03, + 1.817899832115962930e-03, + 1.817724862478420442e-03, + 1.817546949371594322e-03, + 1.817366093240327298e-03, + 1.817182294534234544e-03, + 1.816995553707692612e-03, + 1.816805871219823610e-03, + 1.816613247534502136e-03, + 1.816417683120382385e-03, + 1.816219178450830061e-03, + 1.816017734004005861e-03, + 1.815813350262793051e-03, + 1.815606027714845600e-03, + 1.815395766852545036e-03, + 1.815182568173034916e-03, + 1.814966432178207823e-03, + 1.814747359374696686e-03, + 1.814525350273877170e-03, + 1.814300405391874394e-03, + 1.814072525249560766e-03, + 1.813841710372537551e-03, + 1.813607961291153949e-03, + 1.813371278540497778e-03, + 1.813131662660401973e-03, + 1.812889114195430059e-03, + 1.812643633694865312e-03, + 1.812395221712768218e-03, + 1.812143878807897981e-03, + 1.811889605543746777e-03, + 1.811632402488557976e-03, + 1.811372270215290360e-03, + 1.811109209301648478e-03, + 1.810843220330034947e-03, + 1.810574303887607260e-03, + 1.810302460566246777e-03, + 1.810027690962534228e-03, + 1.809749995677802613e-03, + 1.809469375318094059e-03, + 1.809185830494172394e-03, + 1.808899361821509700e-03, + 1.808609969920321010e-03, + 1.808317655415520725e-03, + 1.808022418936736705e-03, + 1.807724261118329786e-03, + 1.807423182599347594e-03, + 1.807119184023578320e-03, + 1.806812266039487186e-03, + 1.806502429300281499e-03, + 1.806189674463865111e-03, + 1.805874002192833653e-03, + 1.805555413154505753e-03, + 1.805233908020902880e-03, + 1.804909487468734589e-03, + 1.804582152179429536e-03, + 1.804251902839115740e-03, + 1.803918740138598471e-03, + 1.803582664773397759e-03, + 1.803243677443734519e-03, + 1.802901778854505612e-03, + 1.802556969715319625e-03, + 1.802209250740453503e-03, + 1.801858622648910445e-03, + 1.801505086164349864e-03, + 1.801148642015123818e-03, + 1.800789290934279611e-03, + 1.800427033659556973e-03, + 1.800061870933351415e-03, + 1.799693803502765621e-03, + 1.799322832119576703e-03, + 1.798948957540222977e-03, + 1.798572180525838653e-03, + 1.798192501842234324e-03, + 1.797809922259896529e-03, + 1.797424442553949373e-03, + 1.797036063504239747e-03, + 1.796644785895260997e-03, + 1.796250610516168106e-03, + 1.795853538160765333e-03, + 1.795453569627583406e-03, + 1.795050705719762434e-03, + 1.794644947245121287e-03, + 1.794236295016133102e-03, + 1.793824749849937854e-03, + 1.793410312568339106e-03, + 1.792992983997776036e-03, + 1.792572764969357262e-03, + 1.792149656318850872e-03, + 1.791723658886648857e-03, + 1.791294773517810700e-03, + 1.790863001062057303e-03, + 1.790428342373720895e-03, + 1.789990798311807269e-03, + 1.789550369739960215e-03, + 1.789107057526443528e-03, + 1.788660862544196517e-03, + 1.788211785670753770e-03, + 1.787759827788323874e-03, + 1.787304989783737802e-03, + 1.786847272548434170e-03, + 1.786386676978539466e-03, + 1.785923203974751610e-03, + 1.785456854442413893e-03, + 1.784987629291514112e-03, + 1.784515529436654212e-03, + 1.784040555797040961e-03, + 1.783562709296526499e-03, + 1.783081990863579500e-03, + 1.782598401431254812e-03, + 1.782111941937269137e-03, + 1.781622613323917328e-03, + 1.781130416538136141e-03, + 1.780635352531446339e-03, + 1.780137422259965704e-03, + 1.779636626684474518e-03, + 1.779132966770309099e-03, + 1.778626443487407770e-03, + 1.778117057810338396e-03, + 1.777604810718250465e-03, + 1.777089703194913032e-03, + 1.776571736228643164e-03, + 1.776050910812396362e-03, + 1.775527227943715387e-03, + 1.775000688624696864e-03, + 1.774471293862072384e-03, + 1.773939044667140631e-03, + 1.773403942055776271e-03, + 1.772865987048415212e-03, + 1.772325180670158247e-03, + 1.771781523950585226e-03, + 1.771235017923925058e-03, + 1.770685663628932547e-03, + 1.770133462108958644e-03, + 1.769578414411939393e-03, + 1.769020521590341719e-03, + 1.768459784701225876e-03, + 1.767896204806234609e-03, + 1.767329782971522895e-03, + 1.766760520267848149e-03, + 1.766188417770524254e-03, + 1.765613476559396407e-03, + 1.765035697718883622e-03, + 1.764455082337980244e-03, + 1.763871631510177240e-03, + 1.763285346333554569e-03, + 1.762696227910749529e-03, + 1.762104277348896901e-03, + 1.761509495759731522e-03, + 1.760911884259456226e-03, + 1.760311443968918133e-03, + 1.759708176013407644e-03, + 1.759102081522774443e-03, + 1.758493161631423385e-03, + 1.757881417478286950e-03, + 1.757266850206794890e-03, + 1.756649460964930824e-03, + 1.756029250905201660e-03, + 1.755406221184646490e-03, + 1.754780372964779341e-03, + 1.754151707411675696e-03, + 1.753520225695932595e-03, + 1.752885928992623096e-03, + 1.752248818481335095e-03, + 1.751608895346221627e-03, + 1.750966160775887029e-03, + 1.750320615963442666e-03, + 1.749672262106527964e-03, + 1.749021100407274635e-03, + 1.748367132072326403e-03, + 1.747710358312781981e-03, + 1.747050780344276168e-03, + 1.746388399386928671e-03, + 1.745723216665316354e-03, + 1.745055233408544793e-03, + 1.744384450850196451e-03, + 1.743710870228300540e-03, + 1.743034492785415631e-03, + 1.742355319768572851e-03, + 1.741673352429228602e-03, + 1.740988592023372554e-03, + 1.740301039811453917e-03, + 1.739610697058353254e-03, + 1.738917565033474850e-03, + 1.738221645010633526e-03, + 1.737522938268143110e-03, + 1.736821446088783255e-03, + 1.736117169759748271e-03, + 1.735410110572726487e-03, + 1.734700269823863600e-03, + 1.733987648813710859e-03, + 1.733272248847318514e-03, + 1.732554071234173590e-03, + 1.731833117288161502e-03, + 1.731109388327666454e-03, + 1.730382885675490340e-03, + 1.729653610658879416e-03, + 1.728921564609493290e-03, + 1.728186748863409262e-03, + 1.727449164761217298e-03, + 1.726708813647846123e-03, + 1.725965696872652777e-03, + 1.725219815789507186e-03, + 1.724471171756606757e-03, + 1.723719766136578083e-03, + 1.722965600296497536e-03, + 1.722208675607834897e-03, + 1.721448993446497580e-03, + 1.720686555192734802e-03, + 1.719921362231260735e-03, + 1.719153415951191199e-03, + 1.718382717745986629e-03, + 1.717609269013565913e-03, + 1.716833071156230938e-03, + 1.716054125580653792e-03, + 1.715272433697869608e-03, + 1.714487996923404938e-03, + 1.713700816677065676e-03, + 1.712910894383098829e-03, + 1.712118231470091245e-03, + 1.711322829371045295e-03, + 1.710524689523328350e-03, + 1.709723813368652394e-03, + 1.708920202353136691e-03, + 1.708113857927258134e-03, + 1.707304781545821099e-03, + 1.706492974668045266e-03, + 1.705678438757492329e-03, + 1.704861175282050816e-03, + 1.704041185714001358e-03, + 1.703218471529978307e-03, + 1.702393034210912060e-03, + 1.701564875242156123e-03, + 1.700733996113325784e-03, + 1.699900398318442965e-03, + 1.699064083355859020e-03, + 1.698225052728189041e-03, + 1.697383307942511993e-03, + 1.696538850510127209e-03, + 1.695691681946677118e-03, + 1.694841803772171532e-03, + 1.693989217510926499e-03, + 1.693133924691552156e-03, + 1.692275926846996100e-03, + 1.691415225514527340e-03, + 1.690551822235728712e-03, + 1.689685718556451768e-03, + 1.688816916026892679e-03, + 1.687945416201561220e-03, + 1.687071220639230467e-03, + 1.686194330902945470e-03, + 1.685314748560162680e-03, + 1.684432475182521616e-03, + 1.683547512345960661e-03, + 1.682659861630748065e-03, + 1.681769524621424920e-03, + 1.680876502906815785e-03, + 1.679980798079975992e-03, + 1.679082411738289874e-03, + 1.678181345483417426e-03, + 1.677277600921231416e-03, + 1.676371179661922126e-03, + 1.675462083319953326e-03, + 1.674550313513980312e-03, + 1.673635871866990203e-03, + 1.672718760006209346e-03, + 1.671798979563066242e-03, + 1.670876532173322078e-03, + 1.669951419476892055e-03, + 1.669023643118009966e-03, + 1.668093204745137994e-03, + 1.667160106010927246e-03, + 1.666224348572310559e-03, + 1.665285934090470626e-03, + 1.664344864230745888e-03, + 1.663401140662762803e-03, + 1.662454765060368631e-03, + 1.661505739101592615e-03, + 1.660554064468708433e-03, + 1.659599742848226825e-03, + 1.658642775930805604e-03, + 1.657683165411365451e-03, + 1.656720912989020304e-03, + 1.655756020367108155e-03, + 1.654788489253106263e-03, + 1.653818321358698591e-03, + 1.652845518399863843e-03, + 1.651870082096653205e-03, + 1.650892014173329985e-03, + 1.649911316358382415e-03, + 1.648927990384476371e-03, + 1.647942037988396613e-03, + 1.646953460911165616e-03, + 1.645962260897958348e-03, + 1.644968439698135665e-03, + 1.643971999065172969e-03, + 1.642972940756760175e-03, + 1.641971266534749448e-03, + 1.640966978165110755e-03, + 1.639960077417950725e-03, + 1.638950566067648613e-03, + 1.637938445892576358e-03, + 1.636923718675347729e-03, + 1.635906386202720967e-03, + 1.634886450265509231e-03, + 1.633863912658765774e-03, + 1.632838775181582290e-03, + 1.631811039637241995e-03, + 1.630780707833160434e-03, + 1.629747781580804600e-03, + 1.628712262695826722e-03, + 1.627674152998004851e-03, + 1.626633454311149406e-03, + 1.625590168463263846e-03, + 1.624544297286445796e-03, + 1.623495842616829365e-03, + 1.622444806294726528e-03, + 1.621391190164538651e-03, + 1.620334996074692746e-03, + 1.619276225877799760e-03, + 1.618214881430451177e-03, + 1.617150964593467308e-03, + 1.616084477231627750e-03, + 1.615015421213802579e-03, + 1.613943798412988996e-03, + 1.612869610706248657e-03, + 1.611792859974650865e-03, + 1.610713548103390310e-03, + 1.609631676981727443e-03, + 1.608547248502917347e-03, + 1.607460264564326618e-03, + 1.606370727067357685e-03, + 1.605278637917486977e-03, + 1.604183999024188590e-03, + 1.603086812300949255e-03, + 1.601987079665437687e-03, + 1.600884803039220525e-03, + 1.599779984347891350e-03, + 1.598672625521220742e-03, + 1.597562728492852050e-03, + 1.596450295200476819e-03, + 1.595335327585860156e-03, + 1.594217827594752480e-03, + 1.593097797176937442e-03, + 1.591975238286140416e-03, + 1.590850152880161211e-03, + 1.589722542920798606e-03, + 1.588592410373786167e-03, + 1.587459757208908905e-03, + 1.586324585399955791e-03, + 1.585186896924629767e-03, + 1.584046693764684134e-03, + 1.582903977905858808e-03, + 1.581758751337799650e-03, + 1.580611016054218497e-03, + 1.579460774052701254e-03, + 1.578308027334878339e-03, + 1.577152777906342708e-03, + 1.575995027776572015e-03, + 1.574834778959071724e-03, + 1.573672033471306374e-03, + 1.572506793334612404e-03, + 1.571339060574351680e-03, + 1.570168837219822590e-03, + 1.568996125304189353e-03, + 1.567820926864631420e-03, + 1.566643243942256094e-03, + 1.565463078582025012e-03, + 1.564280432832929795e-03, + 1.563095308747748094e-03, + 1.561907708383359966e-03, + 1.560717633800408300e-03, + 1.559525087063446920e-03, + 1.558330070241084131e-03, + 1.557132585405683698e-03, + 1.555932634633533981e-03, + 1.554730220004872220e-03, + 1.553525343603829895e-03, + 1.552318007518348588e-03, + 1.551108213840333722e-03, + 1.549895964665545280e-03, + 1.548681262093654391e-03, + 1.547464108228120607e-03, + 1.546244505176361901e-03, + 1.545022455049654270e-03, + 1.543797959963094874e-03, + 1.542571022035612010e-03, + 1.541341643390141403e-03, + 1.540109826153299643e-03, + 1.538875572455677141e-03, + 1.537638884431609789e-03, + 1.536399764219350053e-03, + 1.535158213960992162e-03, + 1.533914235802381247e-03, + 1.532667831893278583e-03, + 1.531419004387270938e-03, + 1.530167755441689485e-03, + 1.528914087217762450e-03, + 1.527658001880545947e-03, + 1.526399501598807310e-03, + 1.525138588545220690e-03, + 1.523875264896267087e-03, + 1.522609532832128101e-03, + 1.521341394536888892e-03, + 1.520070852198410465e-03, + 1.518797908008274154e-03, + 1.517522564161948159e-03, + 1.516244822858547501e-03, + 1.514964686301166225e-03, + 1.513682156696504865e-03, + 1.512397236255054976e-03, + 1.511109927191141419e-03, + 1.509820231722845598e-03, + 1.508528152071931085e-03, + 1.507233690463995624e-03, + 1.505936849128395672e-03, + 1.504637630298145999e-03, + 1.503336036210094900e-03, + 1.502032069104797338e-03, + 1.500725731226586939e-03, + 1.499417024823456943e-03, + 1.498105952147107478e-03, + 1.496792515453145489e-03, + 1.495476717000709596e-03, + 1.494158559052696919e-03, + 1.492838043875781935e-03, + 1.491515173740300690e-03, + 1.490189950920341871e-03, + 1.488862377693600438e-03, + 1.487532456341560420e-03, + 1.486200189149392784e-03, + 1.484865578405889733e-03, + 1.483528626403600231e-03, + 1.482189335438757576e-03, + 1.480847707811221289e-03, + 1.479503745824496848e-03, + 1.478157451785933659e-03, + 1.476808828006335615e-03, + 1.475457876800301315e-03, + 1.474104600486080517e-03, + 1.472749001385488055e-03, + 1.471391081824112218e-03, + 1.470030844131065603e-03, + 1.468668290639197618e-03, + 1.467303423684994303e-03, + 1.465936245608482702e-03, + 1.464566758753421899e-03, + 1.463194965467190913e-03, + 1.461820868100701092e-03, + 1.460444469008570240e-03, + 1.459065770549045418e-03, + 1.457684775083880214e-03, + 1.456301484978526645e-03, + 1.454915902602048209e-03, + 1.453528030327008854e-03, + 1.452137870529695033e-03, + 1.450745425589822094e-03, + 1.449350697890918740e-03, + 1.447953689819908314e-03, + 1.446554403767313923e-03, + 1.445152842127307670e-03, + 1.443749007297626293e-03, + 1.442342901679478148e-03, + 1.440934527677734242e-03, + 1.439523887700818513e-03, + 1.438110984160613504e-03, + 1.436695819472649663e-03, + 1.435278396055969822e-03, + 1.433858716333197064e-03, + 1.432436782730418063e-03, + 1.431012597677226456e-03, + 1.429586163606936427e-03, + 1.428157482956197814e-03, + 1.426726558165179563e-03, + 1.425293391677755770e-03, + 1.423857985941093685e-03, + 1.422420343406027984e-03, + 1.420980466526781689e-03, + 1.419538357761147883e-03, + 1.418094019570435935e-03, + 1.416647454419350501e-03, + 1.415198664776168465e-03, + 1.413747653112663481e-03, + 1.412294421903984541e-03, + 1.410838973628854168e-03, + 1.409381310769462596e-03, + 1.407921435811376916e-03, + 1.406459351243715197e-03, + 1.404995059559064957e-03, + 1.403528563253360643e-03, + 1.402059864826119126e-03, + 1.400588966780172114e-03, + 1.399115871621896875e-03, + 1.397640581861095020e-03, + 1.396163100010918779e-03, + 1.394683428588031461e-03, + 1.393201570112528745e-03, + 1.391717527107829387e-03, + 1.390231302100868212e-03, + 1.388742897621977716e-03, + 1.387252316204813044e-03, + 1.385759560386526324e-03, + 1.384264632707668226e-03, + 1.382767535712085827e-03, + 1.381268271947106926e-03, + 1.379766843963429242e-03, + 1.378263254315148815e-03, + 1.376757505559674790e-03, + 1.375249600257764547e-03, + 1.373739540973735549e-03, + 1.372227330275073084e-03, + 1.370712970732646235e-03, + 1.369196464920759268e-03, + 1.367677815417029340e-03, + 1.366157024802449379e-03, + 1.364634095661256463e-03, + 1.363109030581128277e-03, + 1.361581832153072741e-03, + 1.360052502971324144e-03, + 1.358521045633546975e-03, + 1.356987462740729452e-03, + 1.355451756897092016e-03, + 1.353913930710153686e-03, + 1.352373986790925044e-03, + 1.350831927753493207e-03, + 1.349287756215410616e-03, + 1.347741474797385392e-03, + 1.346193086123519426e-03, + 1.344642592821196055e-03, + 1.343089997520977496e-03, + 1.341535302856813883e-03, + 1.339978511465910339e-03, + 1.338419625988643280e-03, + 1.336858649068762509e-03, + 1.335295583353263279e-03, + 1.333730431492303244e-03, + 1.332163196139377666e-03, + 1.330593879951241570e-03, + 1.329022485587777469e-03, + 1.327449015712211990e-03, + 1.325873472990996395e-03, + 1.324295860093713121e-03, + 1.322716179693297607e-03, + 1.321134434465732555e-03, + 1.319550627090461869e-03, + 1.317964760249920987e-03, + 1.316376836629792099e-03, + 1.314786858919017370e-03, + 1.313194829809737150e-03, + 1.311600751997187182e-03, + 1.310004628179881189e-03, + 1.308406461059485101e-03, + 1.306806253340874304e-03, + 1.305204007731994645e-03, + 1.303599726944061057e-03, + 1.301993413691454127e-03, + 1.300385070691644201e-03, + 1.298774700665208297e-03, + 1.297162306336104628e-03, + 1.295547890431207475e-03, + 1.293931455680573037e-03, + 1.292313004817464365e-03, + 1.290692540578238824e-03, + 1.289070065702414662e-03, + 1.287445582932524859e-03, + 1.285819095014330716e-03, + 1.284190604696700639e-03, + 1.282560114731503675e-03, + 1.280927627873825261e-03, + 1.279293146881844935e-03, + 1.277656674516723352e-03, + 1.276018213542829110e-03, + 1.274377766727607985e-03, + 1.272735336841479504e-03, + 1.271090926658045980e-03, + 1.269444538953983870e-03, + 1.267796176508922783e-03, + 1.266145842105696360e-03, + 1.264493538530057134e-03, + 1.262839268570910495e-03, + 1.261183035020216467e-03, + 1.259524840672864368e-03, + 1.257864688326883369e-03, + 1.256202580783354235e-03, + 1.254538520846257754e-03, + 1.252872511322717817e-03, + 1.251204555022874783e-03, + 1.249534654759771419e-03, + 1.247862813349571477e-03, + 1.246189033611411591e-03, + 1.244513318367453754e-03, + 1.242835670442798794e-03, + 1.241156092665478576e-03, + 1.239474587866749812e-03, + 1.237791158880622222e-03, + 1.236105808544121776e-03, + 1.234418539697307391e-03, + 1.232729355183227347e-03, + 1.231038257847759908e-03, + 1.229345250539860953e-03, + 1.227650336111397013e-03, + 1.225953517417227882e-03, + 1.224254797315035967e-03, + 1.222554178665555919e-03, + 1.220851664332454727e-03, + 1.219147257182217649e-03, + 1.217440960084364846e-03, + 1.215732775911333415e-03, + 1.214022707538401713e-03, + 1.212310757843717765e-03, + 1.210596929708560770e-03, + 1.208881226016839984e-03, + 1.207163649655562014e-03, + 1.205444203514453297e-03, + 1.203722890486252613e-03, + 1.201999713466571883e-03, + 1.200274675353787740e-03, + 1.198547779049259025e-03, + 1.196819027457210992e-03, + 1.195088423484612578e-03, + 1.193355970041404517e-03, + 1.191621670040380514e-03, + 1.189885526397062342e-03, + 1.188147542029928611e-03, + 1.186407719860294420e-03, + 1.184666062812190362e-03, + 1.182922573812624032e-03, + 1.181177255791276666e-03, + 1.179430111680755114e-03, + 1.177681144416484931e-03, + 1.175930356936536261e-03, + 1.174177752182055130e-03, + 1.172423333096757553e-03, + 1.170667102627174138e-03, + 1.168909063722719252e-03, + 1.167149219335574147e-03, + 1.165387572420592630e-03, + 1.163624125935505118e-03, + 1.161858882840779419e-03, + 1.160091846099681450e-03, + 1.158323018678116727e-03, + 1.156552403544859999e-03, + 1.154780003671429479e-03, + 1.153005822032020060e-03, + 1.151229861603510467e-03, + 1.149452125365751660e-03, + 1.147672616301096066e-03, + 1.145891337394635895e-03, + 1.144108291634283146e-03, + 1.142323482010610238e-03, + 1.140536911516936086e-03, + 1.138748583149163046e-03, + 1.136958499906017819e-03, + 1.135166664788908987e-03, + 1.133373080801824018e-03, + 1.131577750951539381e-03, + 1.129780678247516894e-03, + 1.127981865701770808e-03, + 1.126181316329100471e-03, + 1.124379033146963910e-03, + 1.122575019175366161e-03, + 1.120769277437114924e-03, + 1.118961810957502020e-03, + 1.117152622764598950e-03, + 1.115341715889090141e-03, + 1.113529093364192283e-03, + 1.111714758225857292e-03, + 1.109898713512659334e-03, + 1.108080962265674480e-03, + 1.106261507528706872e-03, + 1.104440352348165554e-03, + 1.102617499772943262e-03, + 1.100792952854650827e-03, + 1.098966714647485552e-03, + 1.097138788208112383e-03, + 1.095309176595898968e-03, + 1.093477882872746733e-03, + 1.091644910103168947e-03, + 1.089810261354162355e-03, + 1.087973939695246637e-03, + 1.086135948198738719e-03, + 1.084296289939260536e-03, + 1.082454967994017463e-03, + 1.080611985442846016e-03, + 1.078767345368108468e-03, + 1.076921050854573805e-03, + 1.075073104989662971e-03, + 1.073223510863274962e-03, + 1.071372271567863806e-03, + 1.069519390198262268e-03, + 1.067664869851942932e-03, + 1.065808713628864238e-03, + 1.063950924631404784e-03, + 1.062091505964388042e-03, + 1.060230460735364470e-03, + 1.058367792054077869e-03, + 1.056503503032910985e-03, + 1.054637596786708138e-03, + 1.052770076432661597e-03, + 1.050900945090571352e-03, + 1.049030205882541759e-03, + 1.047157861933235021e-03, + 1.045283916369759087e-03, + 1.043408372321536458e-03, + 1.041531232920542066e-03, + 1.039652501301177286e-03, + 1.037772180600141569e-03, + 1.035890273956670965e-03, + 1.034006784512417343e-03, + 1.032121715411306795e-03, + 1.030235069799791603e-03, + 1.028346850826723823e-03, + 1.026457061643211953e-03, + 1.024565705402924074e-03, + 1.022672785261690819e-03, + 1.020778304378009956e-03, + 1.018882265912501688e-03, + 1.016984673028185774e-03, + 1.015085528890525548e-03, + 1.013184836667335546e-03, + 1.011282599528656170e-03, + 1.009378820646991996e-03, + 1.007473503197183623e-03, + 1.005566650356280170e-03, + 1.003658265303779967e-03, + 1.001748351221461207e-03, + 9.998369112934600046e-04, + 9.979239487061381236e-04, + 9.960094666481213600e-04, + 9.940934683105862035e-04, + 9.921759568867502630e-04, + 9.902569355721240179e-04, + 9.883364075647512945e-04, + 9.864143760647001245e-04, + 9.844908442743548291e-04, + 9.825658153984554843e-04, + 9.806392926439582748e-04, + 9.787112792201204964e-04, + 9.767817783383227464e-04, + 9.748507932123201330e-04, + 9.729183270581077264e-04, + 9.709843830937934898e-04, + 9.690489645398369127e-04, + 9.671120746189240018e-04, + 9.651737165558383702e-04, + 9.632338935776979180e-04, + 9.612926089138368714e-04, + 9.593498657956561629e-04, + 9.574056674569340550e-04, + 9.554600171334659683e-04, + 9.535129180633653478e-04, + 9.515643734869290047e-04, + 9.496143866464981220e-04, + 9.476629607867132583e-04, + 9.457100991543863043e-04, + 9.437558049983560664e-04, + 9.418000815697486925e-04, + 9.398429321218379181e-04, + 9.378843599099121429e-04, + 9.359243681915313876e-04, + 9.339629602263875389e-04, + 9.320001392761666573e-04, + 9.300359086048574312e-04, + 9.280702714783435180e-04, + 9.261032311649313332e-04, + 9.241347909347657737e-04, + 9.221649540600961731e-04, + 9.201937238155275109e-04, + 9.182211034774945746e-04, + 9.162470963245581638e-04, + 9.142717056374516024e-04, + 9.122949346989737279e-04, + 9.103167867938674607e-04, + 9.083372652090675441e-04, + 9.063563732335189410e-04, + 9.043741141582702916e-04, + 9.023904912762774561e-04, + 9.004055078826744569e-04, + 8.984191672746275449e-04, + 8.964314727512484636e-04, + 8.944424276136262158e-04, + 8.924520351651354108e-04, + 8.904602987108570841e-04, + 8.884672215580960777e-04, + 8.864728070159913790e-04, + 8.844770583958013735e-04, + 8.824799790107896785e-04, + 8.804815721760615374e-04, + 8.784818412088419171e-04, + 8.764807894283300083e-04, + 8.744784201555609897e-04, + 8.724747367136693804e-04, + 8.704697424277475521e-04, + 8.684634406247066256e-04, + 8.664558346335402570e-04, + 8.644469277851855350e-04, + 8.624367234123829018e-04, + 8.604252248499324584e-04, + 8.584124354345677634e-04, + 8.563983585048051293e-04, + 8.543829974012524028e-04, + 8.523663554662039071e-04, + 8.503484360441785316e-04, + 8.483292424813105182e-04, + 8.463087781256839384e-04, + 8.442870463273520996e-04, + 8.422640504382548216e-04, + 8.402397938120680565e-04, + 8.382142798044773255e-04, + 8.361875117730336281e-04, + 8.341594930770065324e-04, + 8.321302270776599966e-04, + 8.300997171380585134e-04, + 8.280679666231550388e-04, + 8.260349788996487449e-04, + 8.240007573360278456e-04, + 8.219653053028728486e-04, + 8.199286261723156459e-04, + 8.178907233183511146e-04, + 8.158516001168693169e-04, + 8.138112599455211678e-04, + 8.117697061837993167e-04, + 8.097269422128531820e-04, + 8.076829714157584845e-04, + 8.056377971773644826e-04, + 8.035914228841701569e-04, + 8.015438519245721670e-04, + 7.994950876887359399e-04, + 7.974451335684940804e-04, + 7.953939929573850768e-04, + 7.933416692509706472e-04, + 7.912881658462360673e-04, + 7.892334861420817471e-04, + 7.871776335391432542e-04, + 7.851206114396413679e-04, + 7.830624232477002931e-04, + 7.810030723689751278e-04, + 7.789425622109694266e-04, + 7.768808961828811352e-04, + 7.748180776954768229e-04, + 7.727541101613497228e-04, + 7.706889969947750994e-04, + 7.686227416115738557e-04, + 7.665553474293792472e-04, + 7.644868178674912732e-04, + 7.624171563467393086e-04, + 7.603463662897426379e-04, + 7.582744511207795916e-04, + 7.562014142656274095e-04, + 7.541272591518959588e-04, + 7.520519892085987144e-04, + 7.499756078666959449e-04, + 7.478981185585015451e-04, + 7.458195247179896488e-04, + 7.437398297808386471e-04, + 7.416590371843356701e-04, + 7.395771503672281602e-04, + 7.374941727700011019e-04, + 7.354101078347236075e-04, + 7.333249590049153435e-04, + 7.312387297258086906e-04, + 7.291514234441651881e-04, + 7.270630436083590177e-04, + 7.249735936682324793e-04, + 7.228830770751370821e-04, + 7.207914972822520834e-04, + 7.186988577440243898e-04, + 7.166051619164365716e-04, + 7.145104132572826844e-04, + 7.124146152255637172e-04, + 7.103177712820266587e-04, + 7.082198848887539091e-04, + 7.061209595094744464e-04, + 7.040209986094221216e-04, + 7.019200056551909168e-04, + 6.998179841150064303e-04, + 6.977149374585822194e-04, + 6.956108691569687710e-04, + 6.935057826828394060e-04, + 6.913996815103330695e-04, + 6.892925691149131683e-04, + 6.871844489736399220e-04, + 6.850753245650320188e-04, + 6.829651993689077804e-04, + 6.808540768667202883e-04, + 6.787419605411666376e-04, + 6.766288538765165587e-04, + 6.745147603584618215e-04, + 6.723996834739749641e-04, + 6.702836267115769818e-04, + 6.681665935612001762e-04, + 6.660485875140384265e-04, + 6.639296120628144452e-04, + 6.618096707016473974e-04, + 6.596887669258960163e-04, + 6.575669042324403879e-04, + 6.554440861195318969e-04, + 6.533203160866449082e-04, + 6.511955976347625621e-04, + 6.490699342661668736e-04, + 6.469433294845420559e-04, + 6.448157867948229498e-04, + 6.426873097032297175e-04, + 6.405579017176015605e-04, + 6.384275663468200320e-04, + 6.362963071011338645e-04, + 6.341641274921999520e-04, + 6.320310310329385010e-04, + 6.298970212376180317e-04, + 6.277621016216654260e-04, + 6.256262757019404475e-04, + 6.234895469965866634e-04, + 6.213519190248860532e-04, + 6.192133953075390582e-04, + 6.170739793665126847e-04, + 6.149336747249396730e-04, + 6.127924849071679373e-04, + 6.106504134390760685e-04, + 6.085074638474579408e-04, + 6.063636396605832446e-04, + 6.042189444077658653e-04, + 6.020733816196907704e-04, + 5.999269548282635221e-04, + 5.977796675664628261e-04, + 5.956315233686244838e-04, + 5.934825257702842916e-04, + 5.913326783080347093e-04, + 5.891819845198070782e-04, + 5.870304479447170133e-04, + 5.848780721229208555e-04, + 5.827248605958914923e-04, + 5.805708169062705811e-04, + 5.784159445977254347e-04, + 5.762602472152193126e-04, + 5.741037283048709087e-04, + 5.719463914137996353e-04, + 5.697882400904611842e-04, + 5.676292778842010516e-04, + 5.654695083458338278e-04, + 5.633089350270052524e-04, + 5.611475614805308109e-04, + 5.589853912604295615e-04, + 5.568224279218297011e-04, + 5.546586750208127659e-04, + 5.524941361146998601e-04, + 5.503288147618488023e-04, + 5.481627145217540884e-04, + 5.459958389548359063e-04, + 5.438281916227312440e-04, + 5.416597760881450285e-04, + 5.394905959147418143e-04, + 5.373206546671932711e-04, + 5.351499559115038785e-04, + 5.329785032144322872e-04, + 5.308063001438212414e-04, + 5.286333502686394294e-04, + 5.264596571588321889e-04, + 5.242852243854066166e-04, + 5.221100555202448689e-04, + 5.199341541363707670e-04, + 5.177575238078173077e-04, + 5.155801681094596958e-04, + 5.134020906173132831e-04, + 5.112232949083715889e-04, + 5.090437845604618835e-04, + 5.068635631525275154e-04, + 5.046826342644762306e-04, + 5.025010014770309869e-04, + 5.003186683720126050e-04, + 4.981356385321901491e-04, + 4.959519155411285960e-04, + 4.937675029835225530e-04, + 4.915824044448026918e-04, + 4.893966235114702258e-04, + 4.872101637709431695e-04, + 4.850230288114070441e-04, + 4.828352222220982882e-04, + 4.806467475931563180e-04, + 4.784576085154674022e-04, + 4.762678085809544698e-04, + 4.740773513824194665e-04, + 4.718862405133998606e-04, + 4.696944795684485302e-04, + 4.675020721429329687e-04, + 4.653090218331340554e-04, + 4.631153322360812572e-04, + 4.609210069496085188e-04, + 4.587260495726825055e-04, + 4.565304637048136637e-04, + 4.543342529463891260e-04, + 4.521374208987193315e-04, + 4.499399711639330752e-04, + 4.477419073448233883e-04, + 4.455432330451369123e-04, + 4.433439518693731043e-04, + 4.411440674228722203e-04, + 4.389435833116185322e-04, + 4.367425031425245519e-04, + 4.345408305232824949e-04, + 4.323385690622039818e-04, + 4.301357223685158622e-04, + 4.279322940522030600e-04, + 4.257282877239064412e-04, + 4.235237069949625505e-04, + 4.213185554777470316e-04, + 4.191128367850260579e-04, + 4.169065545305404466e-04, + 4.146997123285588584e-04, + 4.124923137942153642e-04, + 4.102843625433540793e-04, + 4.080758621923784584e-04, + 4.058668163585400735e-04, + 4.036572286597859042e-04, + 4.014471027146009107e-04, + 3.992364421422996850e-04, + 3.970252505628756381e-04, + 3.948135315968438449e-04, + 3.926012888655309595e-04, + 3.903885259909224519e-04, + 3.881752465955088673e-04, + 3.859614543026252363e-04, + 3.837471527360484017e-04, + 3.815323455203397350e-04, + 3.793170362806894450e-04, + 3.771012286427119888e-04, + 3.748849262329869802e-04, + 3.726681326784060124e-04, + 3.704508516065177048e-04, + 3.682330866455675480e-04, + 3.660148414243933864e-04, + 3.637961195722757440e-04, + 3.615769247192211809e-04, + 3.593572604957657275e-04, + 3.571371305330612407e-04, + 3.549165384626778628e-04, + 3.526954879168909553e-04, + 3.504739825285258415e-04, + 3.482520259308590892e-04, + 3.460296217576529893e-04, + 3.438067736435040174e-04, + 3.415834852232397471e-04, + 3.393597601322574458e-04, + 3.371356020065718884e-04, + 3.349110144826572262e-04, + 3.326860011975422884e-04, + 3.304605657886061014e-04, + 3.282347118938665036e-04, + 3.260084431518310132e-04, + 3.237817632013385350e-04, + 3.215546756818499262e-04, + 3.193271842332947989e-04, + 3.170992924959186473e-04, + 3.148710041105718424e-04, + 3.126423227185562708e-04, + 3.104132519614669875e-04, + 3.081837954815402447e-04, + 3.059539569212458860e-04, + 3.037237399236284363e-04, + 3.014931481321561266e-04, + 2.992621851905612998e-04, + 2.970308547431355301e-04, + 2.947991604345746365e-04, + 2.925671059098217445e-04, + 2.903346948143597497e-04, + 2.881019307940592585e-04, + 2.858688174950199689e-04, + 2.836353585638654116e-04, + 2.814015576475866615e-04, + 2.791674183933863214e-04, + 2.769329444489725036e-04, + 2.746981394623545115e-04, + 2.724630070819347260e-04, + 2.702275509563527517e-04, + 2.679917747345333923e-04, + 2.657556820660225911e-04, + 2.635192766003910652e-04, + 2.612825619875722518e-04, + 2.590455418779069770e-04, + 2.568082199220380170e-04, + 2.545705997707567924e-04, + 2.523326850752935545e-04, + 2.500944794871142601e-04, + 2.478559866580100184e-04, + 2.456172102398987899e-04, + 2.433781538851137038e-04, + 2.411388212462466606e-04, + 2.388992159760470958e-04, + 2.366593417274626371e-04, + 2.344192021539812782e-04, + 2.321788009089808310e-04, + 2.299381416463189211e-04, + 2.276972280198783275e-04, + 2.254560636839102953e-04, + 2.232146522928793865e-04, + 2.209729975013085201e-04, + 2.187311029640695115e-04, + 2.164889723362318260e-04, + 2.142466092729025781e-04, + 2.120040174295228163e-04, + 2.097612004617109105e-04, + 2.075181620251063182e-04, + 2.052749057756648673e-04, + 2.030314353695005436e-04, + 2.007877544627325369e-04, + 1.985438667117770273e-04, + 1.962997757731905720e-04, + 1.940554853035178560e-04, + 1.918109989596313730e-04, + 1.895663203982786080e-04, + 1.873214532766740120e-04, + 1.850764012518452009e-04, + 1.828311679809746146e-04, + 1.805857571214453247e-04, + 1.783401723307344842e-04, + 1.760944172662567964e-04, + 1.738484955856598509e-04, + 1.716024109466678636e-04, + 1.693561670069241144e-04, + 1.671097674242867995e-04, + 1.648632158566232762e-04, + 1.626165159619019499e-04, + 1.603696713980388316e-04, + 1.581226858229398222e-04, + 1.558755628948464104e-04, + 1.536283062717276517e-04, + 1.513809196115756142e-04, + 1.491334065726995762e-04, + 1.468857708131192255e-04, + 1.446380159909092192e-04, + 1.423901457642434188e-04, + 1.401421637912382502e-04, + 1.378940737300475170e-04, + 1.356458792386561858e-04, + 1.333975839751735807e-04, + 1.311491915976800780e-04, + 1.289007057640670503e-04, + 1.266521301323349951e-04, + 1.244034683604348078e-04, + 1.221547241061132012e-04, + 1.199059010272063351e-04, + 1.176570027814838397e-04, + 1.154080330264935038e-04, + 1.131589954199041542e-04, + 1.109098936191003801e-04, + 1.086607312815267545e-04, + 1.064115120645323049e-04, + 1.041622396252128843e-04, + 1.019129176207074559e-04, + 9.966354970803980033e-05, + 9.741413954396510046e-05, + 9.516469078526190381e-05, + 9.291520708857731192e-05, + 9.066569211027061131e-05, + 8.841614950670737688e-05, + 8.616658293410422770e-05, + 8.391699604837130598e-05, + 8.166739250545817824e-05, + 7.941777596089650529e-05, + 7.716815007039539115e-05, + 7.491851848918366539e-05, + 7.266888487230582967e-05, + 7.041925287491506336e-05, + 6.816962615166776438e-05, + 6.592000835706661791e-05, + 6.367040314550626837e-05, + 6.142081417116647131e-05, + 5.917124508785567692e-05, + 5.692169954930627860e-05, + 5.467218120896799794e-05, + 5.242269372010204085e-05, + 5.017324073557479424e-05, + 4.792382590815287812e-05, + 4.567445289034653932e-05, + 4.342512533430342004e-05, + 4.117584689185311176e-05, + 3.892662121485205353e-05, + 3.667745195452561097e-05, + 3.442834276206394023e-05, + 3.217929728816513232e-05, + 2.993031918337960649e-05, + 2.768141209795447647e-05, + 2.543257968167678495e-05, + 2.318382558416848789e-05, + 2.093515345473026505e-05, + 1.868656694218508315e-05, + 1.643806969517305145e-05, + 1.418966536199536270e-05, + 1.194135759045759878e-05, + 9.693150028164872629e-06, + 7.445046322365564999e-06, + 5.197050119794799577e-06, + 2.949165067019651254e-06, + 7.013948100320638902e-07, +-1.546257005406025367e-06, +-3.793786733919072722e-06, +-6.041190730724320645e-06, +-8.288465351086275938e-06, +-1.053560695097426702e-05, +-1.278261188671748978e-05, +-1.502947651496070221e-05, +-1.727619719277052708e-05, +-1.952277027779154991e-05, +-2.176919212795154983e-05, +-2.401545910161776871e-05, +-2.626156755775326492e-05, +-2.850751385562176981e-05, +-3.075329435499450946e-05, +-3.299890541605542165e-05, +-3.524434339955771468e-05, +-3.748960466677950319e-05, +-3.973468557917894710e-05, +-4.197958249900131004e-05, +-4.422429178893439307e-05, +-4.646880981206406207e-05, +-4.871313293203039321e-05, +-5.095725751293388942e-05, +-5.320117991954085543e-05, +-5.544489651698959927e-05, +-5.768840367094581201e-05, +-5.993169774775941117e-05, +-6.217477511416934634e-05, +-6.441763213746027315e-05, +-6.666026518556789711e-05, +-6.890267062703523955e-05, +-7.114484483066822729e-05, +-7.338678416619160783e-05, +-7.562848500370512709e-05, +-7.786994371388882312e-05, +-8.011115666815935444e-05, +-8.235212023832596921e-05, +-8.459283079699576641e-05, +-8.683328471723011216e-05, +-8.907347837270037185e-05, +-9.131340813784335759e-05, +-9.355307038756825483e-05, +-9.579246149741094498e-05, +-9.803157784369129603e-05, +-1.002704158032177853e-04, +-1.025089717534450879e-04, +-1.047472420726273295e-04, +-1.069852231395268955e-04, +-1.092229113335675217e-04, +-1.114603030349924919e-04, +-1.136973946245186968e-04, +-1.159341824837932316e-04, +-1.181706629947999314e-04, +-1.204068325405140800e-04, +-1.226426875045579044e-04, +-1.248782242711583184e-04, +-1.271134392252513718e-04, +-1.293483287526377113e-04, +-1.315828892396897379e-04, +-1.338171170735067284e-04, +-1.360510086420701212e-04, +-1.382845603339499135e-04, +-1.405177685385115003e-04, +-1.427506296458197228e-04, +-1.449831400467948845e-04, +-1.472152961331706035e-04, +-1.494470942971466774e-04, +-1.516785309319978634e-04, +-1.539096024317766439e-04, +-1.561403051910225520e-04, +-1.583706356054142379e-04, +-1.606005900711785785e-04, +-1.628301649855438472e-04, +-1.650593567463974577e-04, +-1.672881617524415207e-04, +-1.695165764033462036e-04, +-1.717445970994603034e-04, +-1.739722202419620044e-04, +-1.761994422330177682e-04, +-1.784262594754877835e-04, +-1.806526683730797324e-04, +-1.828786653305082229e-04, +-1.851042467531972835e-04, +-1.873294090474371116e-04, +-1.895541486205406872e-04, +-1.917784618805001070e-04, +-1.940023452363882819e-04, +-1.962257950980202592e-04, +-1.984488078761061764e-04, +-2.006713799824071153e-04, +-2.028935078294398194e-04, +-2.051151878306359093e-04, +-2.073364164004939145e-04, +-2.095571899542876505e-04, +-2.117775049082205820e-04, +-2.139973576795823273e-04, +-2.162167446864534303e-04, +-2.184356623478627866e-04, +-2.206541070839409765e-04, +-2.228720753155795278e-04, +-2.250895634648816183e-04, +-2.273065679545760106e-04, +-2.295230852086631551e-04, +-2.317391116521254910e-04, +-2.339546437106370432e-04, +-2.361696778111613867e-04, +-2.383842103816120742e-04, +-2.405982378508101900e-04, +-2.428117566486350269e-04, +-2.450247632059330129e-04, +-2.472372539547226800e-04, +-2.494492253279014145e-04, +-2.516606737594000100e-04, +-2.538715956843372746e-04, +-2.560819875387289769e-04, +-2.582918457596421278e-04, +-2.605011667852987932e-04, +-2.627099470550321833e-04, +-2.649181830089494122e-04, +-2.671258710885752964e-04, +-2.693330077362684582e-04, +-2.715395893956680171e-04, +-2.737456125113593296e-04, +-2.759510735290233931e-04, +-2.781559688955898262e-04, +-2.803602950589506940e-04, +-2.825640484681103985e-04, +-2.847672255733433222e-04, +-2.869698228258981657e-04, +-2.891718366781561331e-04, +-2.913732635837840753e-04, +-2.935740999974419726e-04, +-2.957743423749369452e-04, +-2.979739871733810591e-04, +-3.001730308508953932e-04, +-3.023714698667674108e-04, +-3.045693006816022064e-04, +-3.067665197569865651e-04, +-3.089631235559328897e-04, +-3.111591085422998025e-04, +-3.133544711814318252e-04, +-3.155492079398276124e-04, +-3.177433152850889404e-04, +-3.199367896860302657e-04, +-3.221296276128279108e-04, +-3.243218255367354618e-04, +-3.265133799302812555e-04, +-3.287042872671798541e-04, +-3.308945440225295872e-04, +-3.330841466725278943e-04, +-3.352730916946232214e-04, +-3.374613755676160692e-04, +-3.396489947716193648e-04, +-3.418359457877191069e-04, +-3.440222250985676411e-04, +-3.462078291880463644e-04, +-3.483927545412261522e-04, +-3.505769976445123701e-04, +-3.527605549855590051e-04, +-3.549434230534698935e-04, +-3.571255983385065286e-04, +-3.593070773322437519e-04, +-3.614878565277195358e-04, +-3.636679324191535246e-04, +-3.658473015020884144e-04, +-3.680259602735535597e-04, +-3.702039052317703948e-04, +-3.723811328763062829e-04, +-3.745576397082279844e-04, +-3.767334222298122839e-04, +-3.789084769446991871e-04, +-3.810828003580439809e-04, +-3.832563889761817812e-04, +-3.854292393070214229e-04, +-3.876013478597108218e-04, +-3.897727111447919063e-04, +-3.919433256743455217e-04, +-3.941131879617108379e-04, +-3.962822945216338318e-04, +-3.984506418704222190e-04, +-4.006182265256536413e-04, +-4.027850450063333635e-04, +-4.049510938330397737e-04, +-4.071163695276446589e-04, +-4.092808686134575126e-04, +-4.114445876153839362e-04, +-4.136075230595848205e-04, +-4.157696714739225492e-04, +-4.179310293873861543e-04, +-4.200915933307214009e-04, +-4.222513598361033035e-04, +-4.244103254370866322e-04, +-4.265684866687161222e-04, +-4.287258400676705094e-04, +-4.308823821719799880e-04, +-4.330381095212276548e-04, +-4.351930186564561599e-04, +-4.373471061203657896e-04, +-4.395003684570299184e-04, +-4.416528022120497243e-04, +-4.438044039326980621e-04, +-4.459551701676420709e-04, +-4.481050974670869390e-04, +-4.502541823828826433e-04, +-4.524024214684803109e-04, +-4.545498112785983382e-04, +-4.566963483698588183e-04, +-4.588420293002061371e-04, +-4.609868506293576221e-04, +-4.631308089184619104e-04, +-4.652739007302548568e-04, +-4.674161226292083407e-04, +-4.695574711812451206e-04, +-4.716979429538896472e-04, +-4.738375345164168155e-04, +-4.759762424395748426e-04, +-4.781140632957249135e-04, +-4.802509936589993656e-04, +-4.823870301050147010e-04, +-4.845221692110212599e-04, +-4.866564075560576115e-04, +-4.887897417206096265e-04, +-4.909221682870121197e-04, +-4.930536838391099286e-04, +-4.951842849624119242e-04, +-4.973139682442336918e-04, +-4.994427302734268060e-04, +-5.015705676405183677e-04, +-5.036974769378588885e-04, +-5.058234547593523254e-04, +-5.079484977005912800e-04, +-5.100726023590169186e-04, +-5.121957653336285145e-04, +-5.143179832251873864e-04, +-5.164392526361217053e-04, +-5.185595701707263134e-04, +-5.206789324348785539e-04, +-5.227973360361928791e-04, +-5.249147775841096460e-04, +-5.270312536898687705e-04, +-5.291467609661702634e-04, +-5.312612960277524358e-04, +-5.333748554910683727e-04, +-5.354874359742401802e-04, +-5.375990340972103395e-04, +-5.397096464816468400e-04, +-5.418192697511439726e-04, +-5.439279005309403297e-04, +-5.460355354480664726e-04, +-5.481421711314920587e-04, +-5.502478042118481762e-04, +-5.523524313215767484e-04, +-5.544560490950716956e-04, +-5.565586541684066930e-04, +-5.586602431794796941e-04, +-5.607608127681607078e-04, +-5.628603595759652366e-04, +-5.649588802464362413e-04, +-5.670563714248286376e-04, +-5.691528297582407019e-04, +-5.712482518957717140e-04, +-5.733426344882425587e-04, +-5.754359741883406827e-04, +-5.775282676507681977e-04, +-5.796195115319637816e-04, +-5.817097024902494803e-04, +-5.837988371859781584e-04, +-5.858869122812532335e-04, +-5.879739244400813318e-04, +-5.900598703285099816e-04, +-5.921447466143610078e-04, +-5.942285499674150638e-04, +-5.963112770593282557e-04, +-5.983929245637756907e-04, +-6.004734891564093022e-04, +-6.025529675145418042e-04, +-6.046313563177029959e-04, +-6.067086522473240416e-04, +-6.087848519866970306e-04, +-6.108599522210735305e-04, +-6.129339496378023895e-04, +-6.150068409260643241e-04, +-6.170786227770616540e-04, +-6.191492918839286387e-04, +-6.212188449419186109e-04, +-6.232872786481389975e-04, +-6.253545897016945425e-04, +-6.274207748037769709e-04, +-6.294858306576311610e-04, +-6.315497539682384497e-04, +-6.336125414429145692e-04, +-6.356741897907664625e-04, +-6.377346957231143625e-04, +-6.397940559531688090e-04, +-6.418522671961795090e-04, +-6.439093261695729223e-04, +-6.459652295926883664e-04, +-6.480199741869141928e-04, +-6.500735566758340453e-04, +-6.521259737849600382e-04, +-6.541772222418692573e-04, +-6.562272987763517534e-04, +-6.582762001201345045e-04, +-6.603239230070335293e-04, +-6.623704641730874610e-04, +-6.644158203562906167e-04, +-6.664599882967394730e-04, +-6.685029647367712272e-04, +-6.705447464206485114e-04, +-6.725853300949775687e-04, +-6.746247125081665866e-04, +-6.766628904110183213e-04, +-6.786998605564263046e-04, +-6.807356196993233442e-04, +-6.827701645967824626e-04, +-6.848034920081651081e-04, +-6.868355986948403461e-04, +-6.888664814203363223e-04, +-6.908961369504782813e-04, +-6.929245620531212027e-04, +-6.949517534983362839e-04, +-6.969777080583261552e-04, +-6.990024225075701630e-04, +-7.010258936227713525e-04, +-7.030481181825590708e-04, +-7.050690929680302008e-04, +-7.070888147624842905e-04, +-7.091072803511523940e-04, +-7.111244865217563032e-04, +-7.131404300641849131e-04, +-7.151551077704619130e-04, +-7.171685164348803355e-04, +-7.191806528539248199e-04, +-7.211915138264534319e-04, +-7.232010961534261805e-04, +-7.252093966380596243e-04, +-7.272164120859509048e-04, +-7.292221393048214408e-04, +-7.312265751046626450e-04, +-7.332297162978616920e-04, +-7.352315596989483565e-04, +-7.372321021247259850e-04, +-7.392313403944232846e-04, +-7.412292713293709050e-04, +-7.432258917533774399e-04, +-7.452211984924138159e-04, +-7.472151883747533713e-04, +-7.492078582311144288e-04, +-7.511992048943943404e-04, +-7.531892251998082658e-04, +-7.551779159850283835e-04, +-7.571652740899245497e-04, +-7.591512963566966797e-04, +-7.611359796300243676e-04, +-7.631193207567862945e-04, +-7.651013165862183057e-04, +-7.670819639700410210e-04, +-7.690612597621550653e-04, +-7.710392008190503554e-04, +-7.730157839992696364e-04, +-7.749910061639976372e-04, +-7.769648641767999946e-04, +-7.789373549033568652e-04, +-7.809084752120076280e-04, +-7.828782219734321292e-04, +-7.848465920606304078e-04, +-7.868135823490002160e-04, +-7.887791897164786155e-04, +-7.907434110432903351e-04, +-7.927062432121164716e-04, +-7.946676831080196806e-04, +-7.966277276186218767e-04, +-7.985863736338480370e-04, +-8.005436180460583648e-04, +-8.024994577501464105e-04, +-8.044538896434980883e-04, +-8.064069106256851723e-04, +-8.083585175990472965e-04, +-8.103087074681661166e-04, +-8.122574771402680908e-04, +-8.142048235249159166e-04, +-8.161507435341558729e-04, +-8.180952340826420704e-04, +-8.200382920873888195e-04, +-8.219799144678983493e-04, +-8.239200981463068495e-04, +-8.258588400471126613e-04, +-8.277961370973263306e-04, +-8.297319862266015799e-04, +-8.316663843669734732e-04, +-8.335993284530027235e-04, +-8.355308154219009183e-04, +-8.374608422132419046e-04, +-8.393894057693077580e-04, +-8.413165030347873746e-04, +-8.432421309569182845e-04, +-8.451662864856589316e-04, +-8.470889665732234423e-04, +-8.490101681746423752e-04, +-8.509298882474697692e-04, +-8.528481237517388002e-04, +-8.547648716500622860e-04, +-8.566801289077552017e-04, +-8.585938924925916012e-04, +-8.605061593749324450e-04, +-8.624169265278627513e-04, +-8.643261909269338815e-04, +-8.662339495503437346e-04, +-8.681401993788576002e-04, +-8.700449373959364199e-04, +-8.719481605877028516e-04, +-8.738498659426412705e-04, +-8.757500504521244754e-04, +-8.776487111101114119e-04, +-8.795458449131091181e-04, +-8.814414488603145373e-04, +-8.833355199535209519e-04, +-8.852280551973024060e-04, +-8.871190515987683505e-04, +-8.890085061676730391e-04, +-8.908964159165730628e-04, +-8.927827778605644310e-04, +-8.946675890174173376e-04, +-8.965508464076651744e-04, +-8.984325470545664752e-04, +-9.003126879838181445e-04, +-9.021912662240975586e-04, +-9.040682788066193437e-04, +-9.059437227652948621e-04, +-9.078175951368700142e-04, +-9.096898929606362988e-04, +-9.115606132787647470e-04, +-9.134297531360265239e-04, +-9.152973095799142502e-04, +-9.171632796607776363e-04, +-9.190276604315780187e-04, +-9.208904489480127182e-04, +-9.227516422686494807e-04, +-9.246112374546803635e-04, +-9.264692315700472861e-04, +-9.283256216815849275e-04, +-9.301804048587539045e-04, +-9.320335781737893073e-04, +-9.338851387018187690e-04, +-9.357350835205838257e-04, +-9.375834097108085453e-04, +-9.394301143557223701e-04, +-9.412751945415853043e-04, +-9.431186473574098162e-04, +-9.449604698949334077e-04, +-9.468006592486890877e-04, +-9.486392125161479446e-04, +-9.504761267974667438e-04, +-9.523113991956205261e-04, +-9.541450268165328199e-04, +-9.559770067688263834e-04, +-9.578073361640015559e-04, +-9.596360121163458349e-04, +-9.614630317430787262e-04, +-9.632883921642972080e-04, +-9.651120905027074995e-04, +-9.669341238841139274e-04, +-9.687544894371743305e-04, +-9.705731842931759543e-04, +-9.723902055865450266e-04, +-9.742055504543875978e-04, +-9.760192160368457012e-04, +-9.778311994768163276e-04, +-9.796414979200852163e-04, +-9.814501085154494781e-04, +-9.832570284144816729e-04, +-9.850622547716480961e-04, +-9.868657847444425694e-04, +-9.886676154931496509e-04, +-9.904677441809582594e-04, +-9.922661679741021871e-04, +-9.940628840416079141e-04, +-9.958578895554362053e-04, +-9.976511816905937833e-04, +-9.994427576248611934e-04, +-1.001232614539120016e-03, +-1.003020749617074010e-03, +-1.004807160045375746e-03, +-1.006591843013749992e-03, +-1.008374795714754753e-03, +-1.010156015343916577e-03, +-1.011935499099839413e-03, +-1.013713244183983868e-03, +-1.015489247800776271e-03, +-1.017263507157753532e-03, +-1.019036019465304225e-03, +-1.020806781936811495e-03, +-1.022575791788765589e-03, +-1.024343046240498451e-03, +-1.026108542514537385e-03, +-1.027872277836134945e-03, +-1.029634249433797810e-03, +-1.031394454539038717e-03, +-1.033152890386153985e-03, +-1.034909554212700561e-03, +-1.036664443259221937e-03, +-1.038417554769214754e-03, +-1.040168885989242210e-03, +-1.041918434168879201e-03, +-1.043666196560856735e-03, +-1.045412170420832948e-03, +-1.047156353007523862e-03, +-1.048898741582819172e-03, +-1.050639333411550018e-03, +-1.052378125761609324e-03, +-1.054115115904048078e-03, +-1.055850301113018955e-03, +-1.057583678665528250e-03, +-1.059315245841927020e-03, +-1.061044999925466999e-03, +-1.062772938202645153e-03, +-1.064499057962929379e-03, +-1.066223356498900319e-03, +-1.067945831106345252e-03, +-1.069666479084051443e-03, +-1.071385297733910011e-03, +-1.073102284361057094e-03, +-1.074817436273622527e-03, +-1.076530750782862767e-03, +-1.078242225203281677e-03, +-1.079951856852400666e-03, +-1.081659643050872106e-03, +-1.083365581122615502e-03, +-1.085069668394572683e-03, +-1.086771902196834866e-03, +-1.088472279862769945e-03, +-1.090170798728745801e-03, +-1.091867456134480935e-03, +-1.093562249422595388e-03, +-1.095255175939114029e-03, +-1.096946233033189435e-03, +-1.098635418057080206e-03, +-1.100322728366232711e-03, +-1.102008161319388861e-03, +-1.103691714278369485e-03, +-1.105373384608228284e-03, +-1.107053169677183532e-03, +-1.108731066856766820e-03, +-1.110407073521602322e-03, +-1.112081187049534505e-03, +-1.113753404821691889e-03, +-1.115423724222458415e-03, +-1.117092142639230373e-03, +-1.118758657462834904e-03, +-1.120423266087317059e-03, +-1.122085965909869112e-03, +-1.123746754330963047e-03, +-1.125405628754280740e-03, +-1.127062586586864224e-03, +-1.128717625238893213e-03, +-1.130370742123807401e-03, +-1.132021934658417701e-03, +-1.133671200262684415e-03, +-1.135318536359840617e-03, +-1.136963940376505130e-03, +-1.138607409742453756e-03, +-1.140248941890750897e-03, +-1.141888534257853426e-03, +-1.143526184283397747e-03, +-1.145161889410309299e-03, +-1.146795647084922903e-03, +-1.148427454756725374e-03, +-1.150057309878661045e-03, +-1.151685209906860071e-03, +-1.153311152300777855e-03, +-1.154935134523290023e-03, +-1.156557154040480139e-03, +-1.158177208321764387e-03, +-1.159795294839986984e-03, +-1.161411411071219812e-03, +-1.163025554494871499e-03, +-1.164637722593801902e-03, +-1.166247912854094862e-03, +-1.167856122765194163e-03, +-1.169462349820001544e-03, +-1.171066591514622127e-03, +-1.172668845348709844e-03, +-1.174269108825023783e-03, +-1.175867379449910223e-03, +-1.177463654733046762e-03, +-1.179057932187420419e-03, +-1.180650209329387043e-03, +-1.182240483678800988e-03, +-1.183828752758796969e-03, +-1.185415014095923206e-03, +-1.186999265220104122e-03, +-1.188581503664755271e-03, +-1.190161726966595772e-03, +-1.191739932665742633e-03, +-1.193316118305800741e-03, +-1.194890281433816023e-03, +-1.196462419600052970e-03, +-1.198032530358388416e-03, +-1.199600611266144140e-03, +-1.201166659883845305e-03, +-1.202730673775702711e-03, +-1.204292650509186484e-03, +-1.205852587655342019e-03, +-1.207410482788557737e-03, +-1.208966333486670257e-03, +-1.210520137331071513e-03, +-1.212071891906498205e-03, +-1.213621594801153223e-03, +-1.215169243606802150e-03, +-1.216714835918574194e-03, +-1.218258369335064976e-03, +-1.219799841458450588e-03, +-1.221339249894283106e-03, +-1.222876592251584058e-03, +-1.224411866142978205e-03, +-1.225945069184434209e-03, +-1.227476198995545434e-03, +-1.229005253199302698e-03, +-1.230532229422202049e-03, +-1.232057125294330193e-03, +-1.233579938449190158e-03, +-1.235100666523794967e-03, +-1.236619307158767170e-03, +-1.238135857998150626e-03, +-1.239650316689505909e-03, +-1.241162680884025675e-03, +-1.242672948236326919e-03, +-1.244181116404588028e-03, +-1.245687183050493913e-03, +-1.247191145839377392e-03, +-1.248693002439994542e-03, +-1.250192750524669553e-03, +-1.251690387769324644e-03, +-1.253185911853485273e-03, +-1.254679320460023182e-03, +-1.256170611275575760e-03, +-1.257659781990310777e-03, +-1.259146830297892990e-03, +-1.260631753895603401e-03, +-1.262114550484253828e-03, +-1.263595217768338254e-03, +-1.265073753455834638e-03, +-1.266550155258302710e-03, +-1.268024420891001930e-03, +-1.269496548072667928e-03, +-1.270966534525649113e-03, +-1.272434377975979530e-03, +-1.273900076153209509e-03, +-1.275363626790484376e-03, +-1.276825027624672176e-03, +-1.278284276396111701e-03, +-1.279741370848896985e-03, +-1.281196308730642467e-03, +-1.282649087792583605e-03, +-1.284099705789681174e-03, +-1.285548160480442376e-03, +-1.286994449626993045e-03, +-1.288438570995202766e-03, +-1.289880522354486681e-03, +-1.291320301477894613e-03, +-1.292757906142233577e-03, +-1.294193334127860485e-03, +-1.295626583218785141e-03, +-1.297057651202777797e-03, +-1.298486535871170092e-03, +-1.299913235018996431e-03, +-1.301337746444919830e-03, +-1.302760067951345968e-03, +-1.304180197344386762e-03, +-1.305598132433637886e-03, +-1.307013871032574291e-03, +-1.308427410958320786e-03, +-1.309838750031625584e-03, +-1.311247886076939446e-03, +-1.312654816922489845e-03, +-1.314059540400121587e-03, +-1.315462054345399373e-03, +-1.316862356597578530e-03, +-1.318260444999702153e-03, +-1.319656317398441078e-03, +-1.321049971644173678e-03, +-1.322441405591074986e-03, +-1.323830617097057497e-03, +-1.325217604023575359e-03, +-1.326602364236036807e-03, +-1.327984895603419920e-03, +-1.329365195998563186e-03, +-1.330743263297953219e-03, +-1.332119095381812356e-03, +-1.333492690134210987e-03, +-1.334864045442865675e-03, +-1.336233159199246056e-03, +-1.337600029298677620e-03, +-1.338964653640138105e-03, +-1.340327030126374150e-03, +-1.341687156663990636e-03, +-1.343045031163261384e-03, +-1.344400651538231939e-03, +-1.345754015706822349e-03, +-1.347105121590626590e-03, +-1.348453967115030095e-03, +-1.349800550209283908e-03, +-1.351144868806301511e-03, +-1.352486920842955890e-03, +-1.353826704259680118e-03, +-1.355164217000896483e-03, +-1.356499457014793139e-03, +-1.357832422253297871e-03, +-1.359163110672147482e-03, +-1.360491520230983856e-03, +-1.361817648893147090e-03, +-1.363141494625826414e-03, +-1.364463055400090118e-03, +-1.365782329190749159e-03, +-1.367099313976470349e-03, +-1.368414007739710437e-03, +-1.369726408466827349e-03, +-1.371036514148029880e-03, +-1.372344322777194463e-03, +-1.373649832352205179e-03, +-1.374953040874770738e-03, +-1.376253946350375259e-03, +-1.377552546788361754e-03, +-1.378848840202002600e-03, +-1.380142824608347535e-03, +-1.381434498028318416e-03, +-1.382723858486684066e-03, +-1.384010904012159589e-03, +-1.385295632637233978e-03, +-1.386578042398269213e-03, +-1.387858131335592635e-03, +-1.389135897493308297e-03, +-1.390411338919409065e-03, +-1.391684453665851650e-03, +-1.392955239788391374e-03, +-1.394223695346672809e-03, +-1.395489818404317163e-03, +-1.396753607028714764e-03, +-1.398015059291282452e-03, +-1.399274173267237194e-03, +-1.400530947035707975e-03, +-1.401785378679808658e-03, +-1.403037466286474050e-03, +-1.404287207946552929e-03, +-1.405534601754894562e-03, +-1.406779645810178701e-03, +-1.408022338215000153e-03, +-1.409262677075967659e-03, +-1.410500660503520879e-03, +-1.411736286612044235e-03, +-1.412969553519919600e-03, +-1.414200459349358252e-03, +-1.415429002226653056e-03, +-1.416655180281826965e-03, +-1.417878991649027670e-03, +-1.419100434466338736e-03, +-1.420319506875629108e-03, +-1.421536207022884666e-03, +-1.422750533058011330e-03, +-1.423962483134823785e-03, +-1.425172055411087768e-03, +-1.426379248048628267e-03, +-1.427584059213135885e-03, +-1.428786487074305183e-03, +-1.429986529805764642e-03, +-1.431184185585216958e-03, +-1.432379452594233693e-03, +-1.433572329018384947e-03, +-1.434762813047269501e-03, +-1.435950902874489872e-03, +-1.437136596697482322e-03, +-1.438319892717862059e-03, +-1.439500789141094075e-03, +-1.440679284176752924e-03, +-1.441855376038326695e-03, +-1.443029062943300715e-03, +-1.444200343113249702e-03, +-1.445369214773669720e-03, +-1.446535676154063173e-03, +-1.447699725488036607e-03, +-1.448861361013107718e-03, +-1.450020580970830253e-03, +-1.451177383606845183e-03, +-1.452331767170738676e-03, +-1.453483729916125794e-03, +-1.454633270100715112e-03, +-1.455780385986151729e-03, +-1.456925075838219142e-03, +-1.458067337926637584e-03, +-1.459207170525188280e-03, +-1.460344571911783478e-03, +-1.461479540368194972e-03, +-1.462612074180398656e-03, +-1.463742171638393466e-03, +-1.464869831036170805e-03, +-1.465995050671784362e-03, +-1.467117828847413000e-03, +-1.468238163869211134e-03, +-1.469356054047406962e-03, +-1.470471497696359056e-03, +-1.471584493134413252e-03, +-1.472695038684018222e-03, +-1.473803132671653270e-03, +-1.474908773427936531e-03, +-1.476011959287575320e-03, +-1.477112688589207398e-03, +-1.478210959675702605e-03, +-1.479306770893989379e-03, +-1.480400120595025274e-03, +-1.481491007133887809e-03, +-1.482579428869714409e-03, +-1.483665384165814075e-03, +-1.484748871389514509e-03, +-1.485829888912235412e-03, +-1.486908435109579986e-03, +-1.487984508361171222e-03, +-1.489058107050748175e-03, +-1.490129229566188301e-03, +-1.491197874299523933e-03, +-1.492264039646733469e-03, +-1.493327724008096553e-03, +-1.494388925787874670e-03, +-1.495447643394554006e-03, +-1.496503875240668075e-03, +-1.497557619742865371e-03, +-1.498608875322007816e-03, +-1.499657640403003573e-03, +-1.500703913414893134e-03, +-1.501747692790919792e-03, +-1.502788976968402138e-03, +-1.503827764388780902e-03, +-1.504864053497717612e-03, +-1.505897842744944974e-03, +-1.506929130584333011e-03, +-1.507957915473979267e-03, +-1.508984195876055499e-03, +-1.510007970256884010e-03, +-1.511029237087009418e-03, +-1.512047994841045134e-03, +-1.513064241997873509e-03, +-1.514077977040379766e-03, +-1.515089198455748642e-03, +-1.516097904735304357e-03, +-1.517104094374499123e-03, +-1.518107765872943717e-03, +-1.519108917734500941e-03, +-1.520107548467131663e-03, +-1.521103656582980254e-03, +-1.522097240598424247e-03, +-1.523088299033964824e-03, +-1.524076830414310092e-03, +-1.525062833268323904e-03, +-1.526046306129105658e-03, +-1.527027247533957553e-03, +-1.528005656024259470e-03, +-1.528981530145697310e-03, +-1.529954868448159559e-03, +-1.530925669485605880e-03, +-1.531893931816345105e-03, +-1.532859654002775244e-03, +-1.533822834611591216e-03, +-1.534783472213626775e-03, +-1.535741565383925413e-03, +-1.536697112701804983e-03, +-1.537650112750727372e-03, +-1.538600564118376354e-03, +-1.539548465396713963e-03, +-1.540493815181848440e-03, +-1.541436612074127471e-03, +-1.542376854678163996e-03, +-1.543314541602747950e-03, +-1.544249671460888552e-03, +-1.545182242869889110e-03, +-1.546112254451201089e-03, +-1.547039704830593032e-03, +-1.547964592638001154e-03, +-1.548886916507603070e-03, +-1.549806675077876773e-03, +-1.550723866991480940e-03, +-1.551638490895308276e-03, +-1.552550545440578317e-03, +-1.553460029282668952e-03, +-1.554366941081228087e-03, +-1.555271279500204228e-03, +-1.556173043207742393e-03, +-1.557072230876243527e-03, +-1.557968841182419796e-03, +-1.558862872807169255e-03, +-1.559754324435746933e-03, +-1.560643194757529561e-03, +-1.561529482466274699e-03, +-1.562413186260012314e-03, +-1.563294304840915326e-03, +-1.564172836915555045e-03, +-1.565048781194743749e-03, +-1.565922136393534895e-03, +-1.566792901231272347e-03, +-1.567661074431561967e-03, +-1.568526654722345341e-03, +-1.569389640835786807e-03, +-1.570250031508335035e-03, +-1.571107825480780058e-03, +-1.571963021498143766e-03, +-1.572815618309724144e-03, +-1.573665614669166393e-03, +-1.574513009334418045e-03, +-1.575357801067597992e-03, +-1.576199988635266233e-03, +-1.577039570808175598e-03, +-1.577876546361467545e-03, +-1.578710914074509105e-03, +-1.579542672730982868e-03, +-1.580371821118927312e-03, +-1.581198358030632507e-03, +-1.582022282262695624e-03, +-1.582843592616079266e-03, +-1.583662287896004783e-03, +-1.584478366911994769e-03, +-1.585291828477963707e-03, +-1.586102671412060322e-03, +-1.586910894536769281e-03, +-1.587716496678950439e-03, +-1.588519476669703751e-03, +-1.589319833344527777e-03, +-1.590117565543193489e-03, +-1.590912672109796736e-03, +-1.591705151892832196e-03, +-1.592495003744997780e-03, +-1.593282226523439014e-03, +-1.594066819089603321e-03, +-1.594848780309250863e-03, +-1.595628109052461266e-03, +-1.596404804193720349e-03, +-1.597178864611795233e-03, +-1.597950289189807626e-03, +-1.598719076815206938e-03, +-1.599485226379843139e-03, +-1.600248736779855087e-03, +-1.601009606915726252e-03, +-1.601767835692329174e-03, +-1.602523422018907462e-03, +-1.603276364808937232e-03, +-1.604026662980370188e-03, +-1.604774315455485085e-03, +-1.605519321160883608e-03, +-1.606261679027543715e-03, +-1.607001387990790366e-03, +-1.607738446990353200e-03, +-1.608472854970277848e-03, +-1.609204610878970168e-03, +-1.609933713669256094e-03, +-1.610660162298279286e-03, +-1.611383955727546018e-03, +-1.612105092922983072e-03, +-1.612823572854845582e-03, +-1.613539394497754114e-03, +-1.614252556830753863e-03, +-1.614963058837224231e-03, +-1.615670899504907014e-03, +-1.616376077825987072e-03, +-1.617078592796953327e-03, +-1.617778443418745136e-03, +-1.618475628696632159e-03, +-1.619170147640271390e-03, +-1.619861999263755943e-03, +-1.620551182585508801e-03, +-1.621237696628351124e-03, +-1.621921540419538890e-03, +-1.622602712990659467e-03, +-1.623281213377711623e-03, +-1.623957040621118973e-03, +-1.624630193765660155e-03, +-1.625300671860512632e-03, +-1.625968473959290206e-03, +-1.626633599119946521e-03, +-1.627296046404914497e-03, +-1.627955814880921795e-03, +-1.628612903619187056e-03, +-1.629267311695309969e-03, +-1.629919038189285140e-03, +-1.630568082185499066e-03, +-1.631214442772788023e-03, +-1.631858119044366949e-03, +-1.632499110097856759e-03, +-1.633137415035288689e-03, +-1.633773032963155031e-03, +-1.634405962992298549e-03, +-1.635036204237994657e-03, +-1.635663755819954240e-03, +-1.636288616862327776e-03, +-1.636910786493589540e-03, +-1.637530263846726257e-03, +-1.638147048059144508e-03, +-1.638761138272576629e-03, +-1.639372533633296890e-03, +-1.639981233291920061e-03, +-1.640587236403544952e-03, +-1.641190542127660091e-03, +-1.641791149628170614e-03, +-1.642389058073468302e-03, +-1.642984266636313183e-03, +-1.643576774493915940e-03, +-1.644166580827956118e-03, +-1.644753684824494088e-03, +-1.645338085674035887e-03, +-1.645919782571559015e-03, +-1.646498774716439366e-03, +-1.647075061312490690e-03, +-1.647648641568003839e-03, +-1.648219514695654832e-03, +-1.648787679912618910e-03, +-1.649353136440469703e-03, +-1.649915883505223037e-03, +-1.650475920337381164e-03, +-1.651033246171842127e-03, +-1.651587860247967195e-03, +-1.652139761809588671e-03, +-1.652688950104955895e-03, +-1.653235424386760187e-03, +-1.653779183912188833e-03, +-1.654320227942841174e-03, +-1.654858555744772837e-03, +-1.655394166588486631e-03, +-1.655927059748976997e-03, +-1.656457234505648258e-03, +-1.656984690142366884e-03, +-1.657509425947485335e-03, +-1.658031441213811494e-03, +-1.658550735238551203e-03, +-1.659067307323434243e-03, +-1.659581156774644082e-03, +-1.660092282902800092e-03, +-1.660600685022988561e-03, +-1.661106362454757047e-03, +-1.661609314522147565e-03, +-1.662109540553631743e-03, +-1.662607039882137714e-03, +-1.663101811845112566e-03, +-1.663593855784425198e-03, +-1.664083171046404699e-03, +-1.664569756981901716e-03, +-1.665053612946191738e-03, +-1.665534738299011969e-03, +-1.666013132404622898e-03, +-1.666488794631696422e-03, +-1.666961724353433144e-03, +-1.667431920947463290e-03, +-1.667899383795907195e-03, +-1.668364112285369892e-03, +-1.668826105806919206e-03, +-1.669285363756092908e-03, +-1.669741885532936452e-03, +-1.670195670541940952e-03, +-1.670646718192080483e-03, +-1.671095027896837663e-03, +-1.671540599074145764e-03, +-1.671983431146414727e-03, +-1.672423523540566507e-03, +-1.672860875687981735e-03, +-1.673295487024532239e-03, +-1.673727356990557412e-03, +-1.674156485030898252e-03, +-1.674582870594911463e-03, +-1.675006513136353438e-03, +-1.675427412113542893e-03, +-1.675845566989270013e-03, +-1.676260977230796230e-03, +-1.676673642309863335e-03, +-1.677083561702735976e-03, +-1.677490734890145930e-03, +-1.677895161357313572e-03, +-1.678296840593947225e-03, +-1.678695772094268308e-03, +-1.679091955356969276e-03, +-1.679485389885231831e-03, +-1.679876075186745787e-03, +-1.680264010773710372e-03, +-1.680649196162757250e-03, +-1.681031630875078455e-03, +-1.681411314436320791e-03, +-1.681788246376656523e-03, +-1.682162426230729164e-03, +-1.682533853537675379e-03, +-1.682902527841162498e-03, +-1.683268448689329965e-03, +-1.683631615634805824e-03, +-1.683992028234746613e-03, +-1.684349686050787926e-03, +-1.684704588649060461e-03, +-1.685056735600221458e-03, +-1.685406126479395720e-03, +-1.685752760866222454e-03, +-1.686096638344862638e-03, +-1.686437758503948718e-03, +-1.686776120936614096e-03, +-1.687111725240536065e-03, +-1.687444571017840834e-03, +-1.687774657875217585e-03, +-1.688101985423785768e-03, +-1.688426553279228888e-03, +-1.688748361061725555e-03, +-1.689067408395936252e-03, +-1.689383694911038465e-03, +-1.689697220240732106e-03, +-1.690007984023203730e-03, +-1.690315985901132178e-03, +-1.690621225521748419e-03, +-1.690923702536757060e-03, +-1.691223416602370168e-03, +-1.691520367379310092e-03, +-1.691814554532822040e-03, +-1.692105977732666919e-03, +-1.692394636653059324e-03, +-1.692680530972783762e-03, +-1.692963660375112686e-03, +-1.693244024547825360e-03, +-1.693521623183200488e-03, +-1.693796455978050040e-03, +-1.694068522633681738e-03, +-1.694337822855919440e-03, +-1.694604356355081673e-03, +-1.694868122846034325e-03, +-1.695129122048113016e-03, +-1.695387353685186846e-03, +-1.695642817485647127e-03, +-1.695895513182370945e-03, +-1.696145440512755644e-03, +-1.696392599218731184e-03, +-1.696636989046712649e-03, +-1.696878609747636251e-03, +-1.697117461076963875e-03, +-1.697353542794653378e-03, +-1.697586854665192411e-03, +-1.697817396457560694e-03, +-1.698045167945260153e-03, +-1.698270168906323161e-03, +-1.698492399123273724e-03, +-1.698711858383157407e-03, +-1.698928546477535472e-03, +-1.699142463202476432e-03, +-1.699353608358571436e-03, +-1.699561981750920617e-03, +-1.699767583189146962e-03, +-1.699970412487361842e-03, +-1.700170469464227022e-03, +-1.700367753942895249e-03, +-1.700562265751047117e-03, +-1.700754004720849213e-03, +-1.700942970689019390e-03, +-1.701129163496778842e-03, +-1.701312582989840177e-03, +-1.701493229018467054e-03, +-1.701671101437410207e-03, +-1.701846200105943448e-03, +-1.702018524887856724e-03, +-1.702188075651463487e-03, +-1.702354852269572947e-03, +-1.702518854619513699e-03, +-1.702680082583138280e-03, +-1.702838536046809076e-03, +-1.702994214901398101e-03, +-1.703147119042294159e-03, +-1.703297248369406739e-03, +-1.703444602787156483e-03, +-1.703589182204458263e-03, +-1.703730986534776701e-03, +-1.703870015696062412e-03, +-1.704006269610787569e-03, +-1.704139748205950235e-03, +-1.704270451413035991e-03, +-1.704398379168068668e-03, +-1.704523531411571103e-03, +-1.704645908088583571e-03, +-1.704765509148661396e-03, +-1.704882334545868667e-03, +-1.704996384238781706e-03, +-1.705107658190493621e-03, +-1.705216156368611052e-03, +-1.705321878745237260e-03, +-1.705424825297008123e-03, +-1.705524996005058306e-03, +-1.705622390855044031e-03, +-1.705717009837119874e-03, +-1.705808852945953080e-03, +-1.705897920180739821e-03, +-1.705984211545160745e-03, +-1.706067727047423915e-03, +-1.706148466700246370e-03, +-1.706226430520846977e-03, +-1.706301618530949677e-03, +-1.706374030756817534e-03, +-1.706443667229182908e-03, +-1.706510527983309692e-03, +-1.706574613058971408e-03, +-1.706635922500434515e-03, +-1.706694456356492012e-03, +-1.706750214680423112e-03, +-1.706803197530031620e-03, +-1.706853404967630322e-03, +-1.706900837060016914e-03, +-1.706945493878512165e-03, +-1.706987375498941490e-03, +-1.707026482001631693e-03, +-1.707062813471411618e-03, +-1.707096369997619959e-03, +-1.707127151674102004e-03, +-1.707155158599201177e-03, +-1.707180390875767066e-03, +-1.707202848611147177e-03, +-1.707222531917199516e-03, +-1.707239440910276107e-03, +-1.707253575711240772e-03, +-1.707264936445448966e-03, +-1.707273523242762523e-03, +-1.707279336237535342e-03, +-1.707282375568639409e-03, +-1.707282641379425552e-03, +-1.707280133817751840e-03, +-1.707274853035981857e-03, +-1.707266799190967346e-03, +-1.707255972444058842e-03, +-1.707242372961111088e-03, +-1.707226000912471110e-03, +-1.707206856472971278e-03, +-1.707184939821957065e-03, +-1.707160251143260152e-03, +-1.707132790625206240e-03, +-1.707102558460617215e-03, +-1.707069554846803346e-03, +-1.707033779985578023e-03, +-1.706995234083232178e-03, +-1.706953917350564204e-03, +-1.706909830002850898e-03, +-1.706862972259863293e-03, +-1.706813344345865357e-03, +-1.706760946489607050e-03, +-1.706705778924323680e-03, +-1.706647841887753893e-03, +-1.706587135622103686e-03, +-1.706523660374076757e-03, +-1.706457416394856295e-03, +-1.706388403940123626e-03, +-1.706316623270026124e-03, +-1.706242074649217321e-03, +-1.706164758346814629e-03, +-1.706084674636424055e-03, +-1.706001823796146274e-03, +-1.705916206108539120e-03, +-1.705827821860664197e-03, +-1.705736671344053931e-03, +-1.705642754854713511e-03, +-1.705546072693134990e-03, +-1.705446625164289479e-03, +-1.705344412577618901e-03, +-1.705239435247044239e-03, +-1.705131693490963794e-03, +-1.705021187632245168e-03, +-1.704907917998239354e-03, +-1.704791884920763825e-03, +-1.704673088736107520e-03, +-1.704551529785034098e-03, +-1.704427208412778250e-03, +-1.704300124969051122e-03, +-1.704170279808011257e-03, +-1.704037673288310781e-03, +-1.703902305773063964e-03, +-1.703764177629834425e-03, +-1.703623289230676114e-03, +-1.703479640952089511e-03, +-1.703333233175050466e-03, +-1.703184066284996754e-03, +-1.703032140671820269e-03, +-1.702877456729886543e-03, +-1.702720014858014790e-03, +-1.702559815459486585e-03, +-1.702396858942038273e-03, +-1.702231145717872244e-03, +-1.702062676203645007e-03, +-1.701891450820459169e-03, +-1.701717469993894874e-03, +-1.701540734153964051e-03, +-1.701361243735145540e-03, +-1.701178999176364932e-03, +-1.700994000921004752e-03, +-1.700806249416897094e-03, +-1.700615745116312123e-03, +-1.700422488475993206e-03, +-1.700226479957110508e-03, +-1.700027720025276169e-03, +-1.699826209150579869e-03, +-1.699621947807517268e-03, +-1.699414936475056792e-03, +-1.699205175636599304e-03, +-1.698992665779977670e-03, +-1.698777407397486896e-03, +-1.698559400985838594e-03, +-1.698338647046204785e-03, +-1.698115146084181685e-03, +-1.697888898609799030e-03, +-1.697659905137528097e-03, +-1.697428166186284310e-03, +-1.697193682279394059e-03, +-1.696956453944636987e-03, +-1.696716481714215198e-03, +-1.696473766124751955e-03, +-1.696228307717320954e-03, +-1.695980107037401438e-03, +-1.695729164634910725e-03, +-1.695475481064194880e-03, +-1.695219056884010285e-03, +-1.694959892657556168e-03, +-1.694697988952442074e-03, +-1.694433346340690249e-03, +-1.694165965398758628e-03, +-1.693895846707521753e-03, +-1.693622990852264049e-03, +-1.693347398422686114e-03, +-1.693069070012911872e-03, +-1.692788006221468845e-03, +-1.692504207651309616e-03, +-1.692217674909778438e-03, +-1.691928408608667613e-03, +-1.691636409364133571e-03, +-1.691341677796757374e-03, +-1.691044214531539506e-03, +-1.690744020197877760e-03, +-1.690441095429562248e-03, +-1.690135440864797738e-03, +-1.689827057146192158e-03, +-1.689515944920757682e-03, +-1.689202104839878423e-03, +-1.688885537559364422e-03, +-1.688566243739415872e-03, +-1.688244224044626153e-03, +-1.687919479143960150e-03, +-1.687592009710828407e-03, +-1.687261816422978063e-03, +-1.686928899962570911e-03, +-1.686593261016153689e-03, +-1.686254900274662422e-03, +-1.685913818433420466e-03, +-1.685570016192123981e-03, +-1.685223494254863182e-03, +-1.684874253330113664e-03, +-1.684522294130710168e-03, +-1.684167617373883005e-03, +-1.683810223781250035e-03, +-1.683450114078773301e-03, +-1.683087288996818441e-03, +-1.682721749270119126e-03, +-1.682353495637755594e-03, +-1.681982528843213630e-03, +-1.681608849634333609e-03, +-1.681232458763303990e-03, +-1.680853356986722032e-03, +-1.680471545065497733e-03, +-1.680087023764944253e-03, +-1.679699793854729341e-03, +-1.679309856108857340e-03, +-1.678917211305716020e-03, +-1.678521860228047741e-03, +-1.678123803662932324e-03, +-1.677723042401819140e-03, +-1.677319577240517137e-03, +-1.676913408979156892e-03, +-1.676504538422249595e-03, +-1.676092966378647797e-03, +-1.675678693661525895e-03, +-1.675261721088437163e-03, +-1.674842049481243492e-03, +-1.674419679666193893e-03, +-1.673994612473840354e-03, +-1.673566848739069506e-03, +-1.673136389301129725e-03, +-1.672703235003605978e-03, +-1.672267386694384047e-03, +-1.671828845225712757e-03, +-1.671387611454161048e-03, +-1.670943686240636186e-03, +-1.670497070450346466e-03, +-1.670047764952851304e-03, +-1.669595770622030444e-03, +-1.669141088336081576e-03, +-1.668683718977497345e-03, +-1.668223663433153394e-03, +-1.667760922594188882e-03, +-1.667295497356044648e-03, +-1.666827388618553635e-03, +-1.666356597285774356e-03, +-1.665883124266139209e-03, +-1.665406970472335874e-03, +-1.664928136821406833e-03, +-1.664446624234679336e-03, +-1.663962433637774076e-03, +-1.663475565960627085e-03, +-1.662986022137486483e-03, +-1.662493803106861743e-03, +-1.661998909811591334e-03, +-1.661501343198811941e-03, +-1.661001104219918126e-03, +-1.660498193830624780e-03, +-1.659992612990943703e-03, +-1.659484362665140673e-03, +-1.658973443821807866e-03, +-1.658459857433774304e-03, +-1.657943604478189338e-03, +-1.657424685936490774e-03, +-1.656903102794346971e-03, +-1.656378856041741416e-03, +-1.655851946672944096e-03, +-1.655322375686445798e-03, +-1.654790144085056119e-03, +-1.654255252875846439e-03, +-1.653717703070129320e-03, +-1.653177495683513798e-03, +-1.652634631735853130e-03, +-1.652089112251289458e-03, +-1.651540938258193748e-03, +-1.650990110789179012e-03, +-1.650436630881190738e-03, +-1.649880499575363986e-03, +-1.649321717917070010e-03, +-1.648760286956018391e-03, +-1.648196207746084867e-03, +-1.647629481345415196e-03, +-1.647060108816408028e-03, +-1.646488091225701243e-03, +-1.645913429644191685e-03, +-1.645336125146966422e-03, +-1.644756178813400974e-03, +-1.644173591727085375e-03, +-1.643588364975827202e-03, +-1.643000499651689310e-03, +-1.642409996850964895e-03, +-1.641816857674134990e-03, +-1.641221083225953472e-03, +-1.640622674615390027e-03, +-1.640021632955587002e-03, +-1.639417959363973897e-03, +-1.638811654962142681e-03, +-1.638202720875926504e-03, +-1.637591158235380184e-03, +-1.636976968174733366e-03, +-1.636360151832456878e-03, +-1.635740710351229988e-03, +-1.635118644877899853e-03, +-1.634493956563546789e-03, +-1.633866646563464321e-03, +-1.633236716037093266e-03, +-1.632604166148111068e-03, +-1.631968998064401875e-03, +-1.631331212957986285e-03, +-1.630690812005121523e-03, +-1.630047796386235523e-03, +-1.629402167285960322e-03, +-1.628753925893081100e-03, +-1.628103073400547244e-03, +-1.627449611005577510e-03, +-1.626793539909475710e-03, +-1.626134861317739787e-03, +-1.625473576440065277e-03, +-1.624809686490315177e-03, +-1.624143192686491096e-03, +-1.623474096250785738e-03, +-1.622802398409548420e-03, +-1.622128100393308492e-03, +-1.621451203436708116e-03, +-1.620771708778589440e-03, +-1.620089617661941029e-03, +-1.619404931333893105e-03, +-1.618717651045692820e-03, +-1.618027778052834580e-03, +-1.617335313614852313e-03, +-1.616640258995494673e-03, +-1.615942615462598623e-03, +-1.615242384288174439e-03, +-1.614539566748383155e-03, +-1.613834164123458068e-03, +-1.613126177697820317e-03, +-1.612415608760025534e-03, +-1.611702458602700316e-03, +-1.610986728522641534e-03, +-1.610268419820774918e-03, +-1.609547533802104316e-03, +-1.608824071775783468e-03, +-1.608098035055099094e-03, +-1.607369424957390443e-03, +-1.606638242804160534e-03, +-1.605904489921021082e-03, +-1.605168167637642616e-03, +-1.604429277287860740e-03, +-1.603687820209540819e-03, +-1.602943797744742997e-03, +-1.602197211239539398e-03, +-1.601448062044115179e-03, +-1.600696351512770257e-03, +-1.599942081003904787e-03, +-1.599185251879944999e-03, +-1.598425865507455742e-03, +-1.597663923257092557e-03, +-1.596899426503525787e-03, +-1.596132376625562224e-03, +-1.595362775006067477e-03, +-1.594590623031991996e-03, +-1.593815922094317513e-03, +-1.593038673588093902e-03, +-1.592258878912519195e-03, +-1.591476539470757217e-03, +-1.590691656670056853e-03, +-1.589904231921743802e-03, +-1.589114266641213210e-03, +-1.588321762247851821e-03, +-1.587526720165147913e-03, +-1.586729141820629723e-03, +-1.585929028645872594e-03, +-1.585126382076451493e-03, +-1.584321203552030346e-03, +-1.583513494516311732e-03, +-1.582703256416996117e-03, +-1.581890490705801589e-03, +-1.581075198838578994e-03, +-1.580257382275081874e-03, +-1.579437042479154250e-03, +-1.578614180918668604e-03, +-1.577788799065463861e-03, +-1.576960898395463138e-03, +-1.576130480388528241e-03, +-1.575297546528599745e-03, +-1.574462098303608306e-03, +-1.573624137205447771e-03, +-1.572783664730067555e-03, +-1.571940682377414959e-03, +-1.571095191651387252e-03, +-1.570247194059921220e-03, +-1.569396691114958043e-03, +-1.568543684332365665e-03, +-1.567688175232056103e-03, +-1.566830165337927986e-03, +-1.565969656177806490e-03, +-1.565106649283563682e-03, +-1.564241146190968688e-03, +-1.563373148439880242e-03, +-1.562502657574023346e-03, +-1.561629675141113730e-03, +-1.560754202692859810e-03, +-1.559876241784944901e-03, +-1.558995793976946558e-03, +-1.558112860832459520e-03, +-1.557227443919030445e-03, +-1.556339544808111501e-03, +-1.555449165075150145e-03, +-1.554556306299523195e-03, +-1.553660970064576520e-03, +-1.552763157957526372e-03, +-1.551862871569603154e-03, +-1.550960112495953624e-03, +-1.550054882335626149e-03, +-1.549147182691586536e-03, +-1.548237015170831222e-03, +-1.547324381384157857e-03, +-1.546409282946367616e-03, +-1.545491721476116012e-03, +-1.544571698596020233e-03, +-1.543649215932620111e-03, +-1.542724275116301577e-03, +-1.541796877781418740e-03, +-1.540867025566226020e-03, +-1.539934720112821334e-03, +-1.538999963067266006e-03, +-1.538062756079509310e-03, +-1.537123100803333394e-03, +-1.536180998896476222e-03, +-1.535236452020552218e-03, +-1.534289461841017348e-03, +-1.533340030027268873e-03, +-1.532388158252510468e-03, +-1.531433848193881030e-03, +-1.530477101532399815e-03, +-1.529517919952851079e-03, +-1.528556305144054914e-03, +-1.527592258798559765e-03, +-1.526625782612786846e-03, +-1.525656878287066356e-03, +-1.524685547525584783e-03, +-1.523711792036313781e-03, +-1.522735613531131819e-03, +-1.521757013725766935e-03, +-1.520775994339730597e-03, +-1.519792557096430246e-03, +-1.518806703723089065e-03, +-1.517818435950789996e-03, +-1.516827755514403098e-03, +-1.515834664152596826e-03, +-1.514839163608003260e-03, +-1.513841255626936430e-03, +-1.512840941959562322e-03, +-1.511838224359890633e-03, +-1.510833104585732924e-03, +-1.509825584398730809e-03, +-1.508815665564260979e-03, +-1.507803349851571809e-03, +-1.506788639033709637e-03, +-1.505771534887457609e-03, +-1.504752039193454080e-03, +-1.503730153736126908e-03, +-1.502705880303646614e-03, +-1.501679220687950024e-03, +-1.500650176684891618e-03, +-1.499618750093934536e-03, +-1.498584942718441358e-03, +-1.497548756365455749e-03, +-1.496510192845854461e-03, +-1.495469253974272958e-03, +-1.494425941569060097e-03, +-1.493380257452371802e-03, +-1.492332203450130084e-03, +-1.491281781391947791e-03, +-1.490228993111242673e-03, +-1.489173840445182735e-03, +-1.488116325234619666e-03, +-1.487056449324204851e-03, +-1.485994214562331474e-03, +-1.484929622801054068e-03, +-1.483862675896232717e-03, +-1.482793375707444367e-03, +-1.481721724097935554e-03, +-1.480647722934750124e-03, +-1.479571374088550989e-03, +-1.478492679433862124e-03, +-1.477411640848787754e-03, +-1.476328260215162627e-03, +-1.475242539418575869e-03, +-1.474154480348310479e-03, +-1.473064084897282838e-03, +-1.471971354962171939e-03, +-1.470876292443354990e-03, +-1.469778899244815256e-03, +-1.468679177274302521e-03, +-1.467577128443220977e-03, +-1.466472754666671516e-03, +-1.465366057863396430e-03, +-1.464257039955768136e-03, +-1.463145702869991056e-03, +-1.462032048535772018e-03, +-1.460916078886515413e-03, +-1.459797795859329268e-03, +-1.458677201394952168e-03, +-1.457554297437802264e-03, +-1.456429085935866466e-03, +-1.455301568840853535e-03, +-1.454171748108117968e-03, +-1.453039625696572832e-03, +-1.451905203568844586e-03, +-1.450768483691188514e-03, +-1.449629468033412395e-03, +-1.448488158569029164e-03, +-1.447344557275168867e-03, +-1.446198666132508413e-03, +-1.445050487125406876e-03, +-1.443900022241839144e-03, +-1.442747273473316775e-03, +-1.441592242815055176e-03, +-1.440434932265756982e-03, +-1.439275343827817622e-03, +-1.438113479507213644e-03, +-1.436949341313439182e-03, +-1.435782931259652322e-03, +-1.434614251362594873e-03, +-1.433443303642514084e-03, +-1.432270090123307716e-03, +-1.431094612832447925e-03, +-1.429916873800895832e-03, +-1.428736875063269136e-03, +-1.427554618657726976e-03, +-1.426370106625931980e-03, +-1.425183341013188179e-03, +-1.423994323868237608e-03, +-1.422803057243543284e-03, +-1.421609543194955923e-03, +-1.420413783781874616e-03, +-1.419215781067389081e-03, +-1.418015537117971745e-03, +-1.416813054003644061e-03, +-1.415608333798013593e-03, +-1.414401378578184236e-03, +-1.413192190424800675e-03, +-1.411980771421962296e-03, +-1.410767123657339630e-03, +-1.409551249222123831e-03, +-1.408333150210933863e-03, +-1.407112828721968946e-03, +-1.405890286856923332e-03, +-1.404665526720942073e-03, +-1.403438550422623837e-03, +-1.402209360074224524e-03, +-1.400977957791293624e-03, +-1.399744345692995572e-03, +-1.398508525901863420e-03, +-1.397270500543990306e-03, +-1.396030271748930360e-03, +-1.394787841649632780e-03, +-1.393543212382578663e-03, +-1.392296386087718552e-03, +-1.391047364908375075e-03, +-1.389796150991397120e-03, +-1.388542746487087627e-03, +-1.387287153549117717e-03, +-1.386029374334663304e-03, +-1.384769411004350232e-03, +-1.383507265722156484e-03, +-1.382242940655601477e-03, +-1.380976437975501257e-03, +-1.379707759856197260e-03, +-1.378436908475442688e-03, +-1.377163886014293442e-03, +-1.375888694657409310e-03, +-1.374611336592695748e-03, +-1.373331814011482556e-03, +-1.372050129108559656e-03, +-1.370766284082114211e-03, +-1.369480281133637163e-03, +-1.368192122468092154e-03, +-1.366901810293803853e-03, +-1.365609346822502842e-03, +-1.364314734269213509e-03, +-1.363017974852416244e-03, +-1.361719070793961355e-03, +-1.360418024319013991e-03, +-1.359114837656062160e-03, +-1.357809513037131627e-03, +-1.356502052697429201e-03, +-1.355192458875536599e-03, +-1.353880733813449038e-03, +-1.352566879756463133e-03, +-1.351250898953256473e-03, +-1.349932793655743424e-03, +-1.348612566119266167e-03, +-1.347290218602483674e-03, +-1.345965753367309257e-03, +-1.344639172679043494e-03, +-1.343310478806316113e-03, +-1.341979674020974756e-03, +-1.340646760598266469e-03, +-1.339311740816743600e-03, +-1.337974616958162530e-03, +-1.336635391307704635e-03, +-1.335294066153721931e-03, +-1.333950643787946543e-03, +-1.332605126505386622e-03, +-1.331257516604254787e-03, +-1.329907816386118394e-03, +-1.328556028155825162e-03, +-1.327202154221399089e-03, +-1.325846196894227584e-03, +-1.324488158488941556e-03, +-1.323128041323360987e-03, +-1.321765847718633707e-03, +-1.320401579999165359e-03, +-1.319035240492510757e-03, +-1.317666831529560592e-03, +-1.316296355444446882e-03, +-1.314923814574438026e-03, +-1.313549211260152611e-03, +-1.312172547845294425e-03, +-1.310793826676986615e-03, +-1.309413050105403490e-03, +-1.308030220483947029e-03, +-1.306645340169301089e-03, +-1.305258411521357251e-03, +-1.303869436903107911e-03, +-1.302478418680838405e-03, +-1.301085359224004060e-03, +-1.299690260905271176e-03, +-1.298293126100407086e-03, +-1.296893957188447128e-03, +-1.295492756551609205e-03, +-1.294089526575222015e-03, +-1.292684269647749766e-03, +-1.291276988161009671e-03, +-1.289867684509795514e-03, +-1.288456361092062174e-03, +-1.287043020309096937e-03, +-1.285627664565118337e-03, +-1.284210296267655847e-03, +-1.282790917827248463e-03, +-1.281369531657662207e-03, +-1.279946140175804896e-03, +-1.278520745801611444e-03, +-1.277093350958242047e-03, +-1.275663958071971164e-03, +-1.274232569572101431e-03, +-1.272799187891138000e-03, +-1.271363815464698335e-03, +-1.269926454731404872e-03, +-1.268487108133079747e-03, +-1.267045778114637457e-03, +-1.265602467123987064e-03, +-1.264157177612260530e-03, +-1.262709912033540150e-03, +-1.261260672845084712e-03, +-1.259809462507222597e-03, +-1.258356283483269165e-03, +-1.256901138239693719e-03, +-1.255444029246027349e-03, +-1.253984958974770558e-03, +-1.252523929901565650e-03, +-1.251060944505116715e-03, +-1.249596005267064299e-03, +-1.248129114672199202e-03, +-1.246660275208306577e-03, +-1.245189489366245504e-03, +-1.243716759639836023e-03, +-1.242242088525891651e-03, +-1.240765478524439485e-03, +-1.239286932138330749e-03, +-1.237806451873427497e-03, +-1.236324040238797337e-03, +-1.234839699746310970e-03, +-1.233353432910875083e-03, +-1.231865242250457931e-03, +-1.230375130285985040e-03, +-1.228883099541398620e-03, +-1.227389152543529845e-03, +-1.225893291822282303e-03, +-1.224395519910537232e-03, +-1.222895839344041637e-03, +-1.221394252661614933e-03, +-1.219890762405032719e-03, +-1.218385371118924651e-03, +-1.216878081350977183e-03, +-1.215368895651827751e-03, +-1.213857816574950279e-03, +-1.212344846676900864e-03, +-1.210829988517023951e-03, +-1.209313244657711029e-03, +-1.207794617664272041e-03, +-1.206274110104836291e-03, +-1.204751724550558655e-03, +-1.203227463575499891e-03, +-1.201701329756538596e-03, +-1.200173325673551620e-03, +-1.198643453909316054e-03, +-1.197111717049410785e-03, +-1.195578117682407097e-03, +-1.194042658399759819e-03, +-1.192505341795702372e-03, +-1.190966170467456457e-03, +-1.189425147015084382e-03, +-1.187882274041542410e-03, +-1.186337554152597923e-03, +-1.184790989956836359e-03, +-1.183242584065907549e-03, +-1.181692339094106772e-03, +-1.180140257658617194e-03, +-1.178586342379529806e-03, +-1.177030595879775777e-03, +-1.175473020785018901e-03, +-1.173913619723857688e-03, +-1.172352395327676180e-03, +-1.170789350230718329e-03, +-1.169224487069949218e-03, +-1.167657808485241325e-03, +-1.166089317119275862e-03, +-1.164519015617470352e-03, +-1.162946906628008767e-03, +-1.161372992802079621e-03, +-1.159797276793409762e-03, +-1.158219761258699352e-03, +-1.156640448857277964e-03, +-1.155059342251365650e-03, +-1.153476444105952601e-03, +-1.151891757088693543e-03, +-1.150305283870104844e-03, +-1.148717027123474311e-03, +-1.147126989524725879e-03, +-1.145535173752651849e-03, +-1.143941582488781266e-03, +-1.142346218417282771e-03, +-1.140749084225163232e-03, +-1.139150182602170595e-03, +-1.137549516240663134e-03, +-1.135947087835836910e-03, +-1.134342900085602178e-03, +-1.132736955690481035e-03, +-1.131129257353841611e-03, +-1.129519807781584513e-03, +-1.127908609682555692e-03, +-1.126295665768087826e-03, +-1.124680978752236240e-03, +-1.123064551351817941e-03, +-1.121446386286327913e-03, +-1.119826486277838507e-03, +-1.118204854051194595e-03, +-1.116581492333914476e-03, +-1.114956403856071912e-03, +-1.113329591350509283e-03, +-1.111701057552685586e-03, +-1.110070805200744299e-03, +-1.108438837035408218e-03, +-1.106805155800000707e-03, +-1.105169764240697232e-03, +-1.103532665106096234e-03, +-1.101893861147445726e-03, +-1.100253355118704012e-03, +-1.098611149776435600e-03, +-1.096967247879716877e-03, +-1.095321652190336904e-03, +-1.093674365472656904e-03, +-1.092025390493670759e-03, +-1.090374730022859078e-03, +-1.088722386832402999e-03, +-1.087068363697067967e-03, +-1.085412663394129786e-03, +-1.083755288703399126e-03, +-1.082096242407480863e-03, +-1.080435527291294428e-03, +-1.078773146142456962e-03, +-1.077109101751155384e-03, +-1.075443396910016067e-03, +-1.073776034414354206e-03, +-1.072107017061890624e-03, +-1.070436347652989209e-03, +-1.068764028990547852e-03, +-1.067090063879891533e-03, +-1.065414455128970957e-03, +-1.063737205548259766e-03, +-1.062058317950642650e-03, +-1.060377795151615059e-03, +-1.058695639969189526e-03, +-1.057011855223758843e-03, +-1.055326443738328077e-03, +-1.053639408338399430e-03, +-1.051950751851844085e-03, +-1.050260477109163067e-03, +-1.048568586943155693e-03, +-1.046875084189346746e-03, +-1.045179971685517451e-03, +-1.043483252271935760e-03, +-1.041784928791413380e-03, +-1.040085004089214048e-03, +-1.038383481012934055e-03, +-1.036680362412726892e-03, +-1.034975651141197212e-03, +-1.033269350053255334e-03, +-1.031561462006362053e-03, +-1.029851989860371434e-03, +-1.028140936477587837e-03, +-1.026428304722619336e-03, +-1.024714097462603229e-03, +-1.022998317567078977e-03, +-1.021280967907912300e-03, +-1.019562051359326846e-03, +-1.017841570798167427e-03, +-1.016119529103402808e-03, +-1.014395929156569360e-03, +-1.012670773841428239e-03, +-1.010944066044232098e-03, +-1.009215808653599099e-03, +-1.007486004560393224e-03, +-1.005754656657958240e-03, +-1.004021767841982394e-03, +-1.002287341010394978e-03, +-1.000551379063578184e-03, +-9.988138849042591146e-04, +-9.970748614373775142e-04, +-9.953343115703258085e-04, +-9.935922382128081591e-04, +-9.918486442767457043e-04, +-9.901035326765183359e-04, +-9.883569063286710976e-04, +-9.866087681521602988e-04, +-9.848591210682444436e-04, +-9.831079680003289734e-04, +-9.813553118743743604e-04, +-9.796011556183936882e-04, +-9.778455021627234858e-04, +-9.760883544400509411e-04, +-9.743297153853333441e-04, +-9.725695879356788254e-04, +-9.708079750305690508e-04, +-9.690448796117495005e-04, +-9.672803046230955696e-04, +-9.655142530108411182e-04, +-9.637467277234330800e-04, +-9.619777317115839376e-04, +-9.602072679281641694e-04, +-9.584353393282329329e-04, +-9.566619488693012003e-04, +-9.548870995108669612e-04, +-9.531107942146718531e-04, +-9.513330359447552632e-04, +-9.495538276673041664e-04, +-9.477731723507556907e-04, +-9.459910729656090082e-04, +-9.442075324846773039e-04, +-9.424225538829525753e-04, +-9.406361401374855030e-04, +-9.388482942276193130e-04, +-9.370590191348605403e-04, +-9.352683178428042180e-04, +-9.334761933371598991e-04, +-9.316826486060256337e-04, +-9.298876866393754673e-04, +-9.280913104295171901e-04, +-9.262935229707392132e-04, +-9.244943272595893165e-04, +-9.226937262947321845e-04, +-9.208917230768388180e-04, +-9.190883206088210468e-04, +-9.172835218956997992e-04, +-9.154773299444842133e-04, +-9.136697477644053914e-04, +-9.118607783667941015e-04, +-9.100504247649529501e-04, +-9.082386899743917627e-04, +-9.064255770126986717e-04, +-9.046110888994294197e-04, +-9.027952286563220314e-04, +-9.009779993071853578e-04, +-8.991594038777758020e-04, +-8.973394453960592630e-04, +-8.955181268918589862e-04, +-8.936954513973227468e-04, +-8.918714219464037333e-04, +-8.900460415751310561e-04, +-8.882193133216440082e-04, +-8.863912402261143282e-04, +-8.845618253306068799e-04, +-8.827310716793323802e-04, +-8.808989823185110063e-04, +-8.790655602962458692e-04, +-8.772308086627708624e-04, +-8.753947304702651552e-04, +-8.735573287729500114e-04, +-8.717186066269471930e-04, +-8.698785670903221110e-04, +-8.680372132233586712e-04, +-8.661945480880654195e-04, +-8.643505747484674095e-04, +-8.625052962706231162e-04, +-8.606587157225085343e-04, +-8.588108361740982768e-04, +-8.569616606971793091e-04, +-8.551111923656097482e-04, +-8.532594342551820359e-04, +-8.514063894434968464e-04, +-8.495520610102026953e-04, +-8.476964520368689788e-04, +-8.458395656068552195e-04, +-8.439814048055582643e-04, +-8.421219727202769760e-04, +-8.402612724400903687e-04, +-8.383993070560922297e-04, +-8.365360796612675200e-04, +-8.346715933503620535e-04, +-8.328058512201664491e-04, +-8.309388563691832812e-04, +-8.290706118979038761e-04, +-8.272011209086861227e-04, +-8.253303865056186217e-04, +-8.234584117947776416e-04, +-8.215851998840809686e-04, +-8.197107538831621383e-04, +-8.178350769036268507e-04, +-8.159581720589098542e-04, +-8.140800424641451679e-04, +-8.122006912364207595e-04, +-8.103201214946411778e-04, +-8.084383363593965807e-04, +-8.065553389532524337e-04, +-8.046711324003636432e-04, +-8.027857198269855400e-04, +-8.008991043609014213e-04, +-7.990112891316916493e-04, +-7.971222772709613338e-04, +-7.952320719118472370e-04, +-7.933406761892961966e-04, +-7.914480932401056750e-04, +-7.895543262027889930e-04, +-7.876593782176611984e-04, +-7.857632524266604983e-04, +-7.838659519735956737e-04, +-7.819674800040140239e-04, +-7.800678396650763576e-04, +-7.781670341057959515e-04, +-7.762650664769058439e-04, +-7.743619399307844582e-04, +-7.724576576214740344e-04, +-7.705522227049834468e-04, +-7.686456383387233349e-04, +-7.667379076820227254e-04, +-7.648290338957254922e-04, +-7.629190201424961015e-04, +-7.610078695866797499e-04, +-7.590955853941726934e-04, +-7.571821707326710721e-04, +-7.552676287715337586e-04, +-7.533519626816594095e-04, +-7.514351756357282421e-04, +-7.495172708080705213e-04, +-7.475982513745368886e-04, +-7.456781205127457771e-04, +-7.437568814019489705e-04, +-7.418345372229044263e-04, +-7.399110911581620710e-04, +-7.379865463917235783e-04, +-7.360609061093289227e-04, +-7.341341734983363593e-04, +-7.322063517475232552e-04, +-7.302774440475777755e-04, +-7.283474535905162328e-04, +-7.264163835699903506e-04, +-7.244842371813209813e-04, +-7.225510176214009622e-04, +-7.206167280885719499e-04, +-7.186813717828703174e-04, +-7.167449519058473936e-04, +-7.148074716606604272e-04, +-7.128689342518823103e-04, +-7.109293428857665562e-04, +-7.089887007701016920e-04, +-7.070470111141305934e-04, +-7.051042771285779154e-04, +-7.031605020259546444e-04, +-7.012156890200315013e-04, +-6.992698413261366633e-04, +-6.973229621611947955e-04, +-6.953750547435865381e-04, +-6.934261222932387118e-04, +-6.914761680314378354e-04, +-6.895251951810869731e-04, +-6.875732069665770399e-04, +-6.856202066136384823e-04, +-6.836661973496084262e-04, +-6.817111824032868030e-04, +-6.797551650048085222e-04, +-6.777981483858887182e-04, +-6.758401357796970906e-04, +-6.738811304207164166e-04, +-6.719211355450414652e-04, +-6.699601543900304259e-04, +-6.679981901945953671e-04, +-6.660352461990799375e-04, +-6.640713256451077949e-04, +-6.621064317758505128e-04, +-6.601405678358851156e-04, +-6.581737370710599635e-04, +-6.562059427287525752e-04, +-6.542371880577323683e-04, +-6.522674763080184117e-04, +-6.502968107311501511e-04, +-6.483251945800356207e-04, +-6.463526311088228565e-04, +-6.443791235731568525e-04, +-6.424046752300455534e-04, +-6.404292893377093671e-04, +-6.384529691559051243e-04, +-6.364757179455036735e-04, +-6.344975389690246095e-04, +-6.325184354900572009e-04, +-6.305384107735595217e-04, +-6.285574680859030115e-04, +-6.265756106947704528e-04, +-6.245928418690258662e-04, +-6.226091648789729843e-04, +-6.206245829961672513e-04, +-6.186390994935066787e-04, +-6.166527176450449293e-04, +-6.146654407262508750e-04, +-6.126772720138746976e-04, +-6.106882147858478174e-04, +-6.086982723213295136e-04, +-6.067074479010026947e-04, +-6.047157448065449163e-04, +-6.027231663208836021e-04, +-6.007297157284580960e-04, +-5.987353963146401555e-04, +-5.967402113662561040e-04, +-5.947441641711854587e-04, +-5.927472580186674347e-04, +-5.907494961991581559e-04, +-5.887508820041949123e-04, +-5.867514187266572364e-04, +-5.847511096606249808e-04, +-5.827499581012466961e-04, +-5.807479673449930093e-04, +-5.787451406895223992e-04, +-5.767414814335399247e-04, +-5.747369928770612287e-04, +-5.727316783212715911e-04, +-5.707255410683896449e-04, +-5.687185844219686762e-04, +-5.667108116865371024e-04, +-5.647022261679122404e-04, +-5.626928311730483015e-04, +-5.606826300099043356e-04, +-5.586716259877068250e-04, +-5.566598224168111233e-04, +-5.546472226085555216e-04, +-5.526338298755319742e-04, +-5.506196475314424415e-04, +-5.486046788909585943e-04, +-5.465889272699863593e-04, +-5.445723959854825800e-04, +-5.425550883555355737e-04, +-5.405370076992299308e-04, +-5.385181573366804508e-04, +-5.364985405893442838e-04, +-5.344781607794798052e-04, +-5.324570212304014036e-04, +-5.304351252667530246e-04, +-5.284124762139577212e-04, +-5.263890773985297963e-04, +-5.243649321481120987e-04, +-5.223400437913363779e-04, +-5.203144156579114299e-04, +-5.182880510784300008e-04, +-5.162609533846403793e-04, +-5.142331259093017642e-04, +-5.122045719860457034e-04, +-5.101752949496429160e-04, +-5.081452981358539978e-04, +-5.061145848813012682e-04, +-5.040831585237237752e-04, +-5.020510224018402516e-04, +-5.000181798552074102e-04, +-4.979846342245342538e-04, +-4.959503888513099772e-04, +-4.939154470781165424e-04, +-4.918798122484900094e-04, +-4.898434877067734099e-04, +-4.878064767983920262e-04, +-4.857687828697028498e-04, +-4.837304092678579174e-04, +-4.816913593410727598e-04, +-4.796516364384758604e-04, +-4.776112439099812609e-04, +-4.755701851065408559e-04, +-4.735284633800126617e-04, +-4.714860820830137447e-04, +-4.694430445692363745e-04, +-4.673993541930310941e-04, +-4.653550143099467610e-04, +-4.633100282761351031e-04, +-4.612643994486184630e-04, +-4.592181311855529332e-04, +-4.571712268456865806e-04, +-4.551236897886602587e-04, +-4.530755233750570466e-04, +-4.510267309662988706e-04, +-4.489773159245110334e-04, +-4.469272816127865962e-04, +-4.448766313949966441e-04, +-4.428253686358767506e-04, +-4.407734967008456991e-04, +-4.387210189562646616e-04, +-4.366679387692975534e-04, +-4.346142595078177377e-04, +-4.325599845404429905e-04, +-4.305051172368536605e-04, +-4.284496609671919662e-04, +-4.263936191026040435e-04, +-4.243369950148244787e-04, +-4.222797920764894265e-04, +-4.202220136609933869e-04, +-4.181636631423493429e-04, +-4.161047438954546072e-04, +-4.140452592959525859e-04, +-4.119852127200815872e-04, +-4.099246075449530812e-04, +-4.078634471484049537e-04, +-4.058017349088537291e-04, +-4.037394742055745657e-04, +-4.016766684185496300e-04, +-3.996133209283272048e-04, +-3.975494351162927936e-04, +-3.954850143645249764e-04, +-3.934200620556509934e-04, +-3.913545815731679406e-04, +-3.892885763010588531e-04, +-3.872220496241218150e-04, +-3.851550049278174665e-04, +-3.830874455981289790e-04, +-3.810193750218319672e-04, +-3.789507965863507240e-04, +-3.768817136796146178e-04, +-3.748121296903287637e-04, +-3.727420480078324811e-04, +-3.706714720219503778e-04, +-3.686004051232689310e-04, +-3.665288507029431189e-04, +-3.644568121527836995e-04, +-3.623842928651144755e-04, +-3.603112962328121381e-04, +-3.582378256496224754e-04, +-3.561638845096042841e-04, +-3.540894762074427594e-04, +-3.520146041384937291e-04, +-3.499392716986825529e-04, +-3.478634822843634463e-04, +-3.457872392925888513e-04, +-3.437105461209193752e-04, +-3.416334061675104189e-04, +-3.395558228309229830e-04, +-3.374777995103948273e-04, +-3.353993396056942117e-04, +-3.333204465170256790e-04, +-3.312411236450704417e-04, +-3.291613743912966800e-04, +-3.270812021573656168e-04, +-3.250006103456250456e-04, +-3.229196023589227401e-04, +-3.208381816004590020e-04, +-3.187563514741097539e-04, +-3.166741153840470138e-04, +-3.145914767350586807e-04, +-3.125084389324049865e-04, +-3.104250053816699057e-04, +-3.083411794890390909e-04, +-3.062569646611523126e-04, +-3.041723643049588270e-04, +-3.020873818279917874e-04, +-3.000020206382190578e-04, +-2.979162841439055194e-04, +-2.958301757538786460e-04, +-2.937436988773903224e-04, +-2.916568569239667364e-04, +-2.895696533037294112e-04, +-2.874820914269736677e-04, +-2.853941747047185860e-04, +-2.833059065480971958e-04, +-2.812172903686783760e-04, +-2.791283295785036635e-04, +-2.770390275899922770e-04, +-2.749493878157975146e-04, +-2.728594136690746055e-04, +-2.707691085633394390e-04, +-2.686784759123239316e-04, +-2.665875191302477824e-04, +-2.644962416316268402e-04, +-2.624046468313624963e-04, +-2.603127381445933110e-04, +-2.582205189867400083e-04, +-2.561279927738228761e-04, +-2.540351629218970050e-04, +-2.519420328473291940e-04, +-2.498486059670695426e-04, +-2.477548856980401237e-04, +-2.456608754576891738e-04, +-2.435665786635676029e-04, +-2.414719987336463143e-04, +-2.393771390861736039e-04, +-2.372820031395285500e-04, +-2.351865943124963726e-04, +-2.330909160241196817e-04, +-2.309949716935581266e-04, +-2.288987647403580104e-04, +-2.268022985843099067e-04, +-2.247055766453009377e-04, +-2.226086023435909739e-04, +-2.205113790996646953e-04, +-2.184139103340899675e-04, +-2.163161994678337234e-04, +-2.142182499218883479e-04, +-2.121200651175891047e-04, +-2.100216484764697478e-04, +-2.079230034201160187e-04, +-2.058241333704432564e-04, +-2.037250417495471298e-04, +-2.016257319795590052e-04, +-1.995262074829219840e-04, +-1.974264716822442104e-04, +-1.953265280001517180e-04, +-1.932263798595666357e-04, +-1.911260306835575956e-04, +-1.890254838951976207e-04, +-1.869247429178357716e-04, +-1.848238111749061108e-04, +-1.827226920900163897e-04, +-1.806213890868003534e-04, +-1.785199055889602417e-04, +-1.764182450205889323e-04, +-1.743164108056009787e-04, +-1.722144063680567869e-04, +-1.701122351322039230e-04, +-1.680099005223284155e-04, +-1.659074059628451231e-04, +-1.638047548781055055e-04, +-1.617019506926704094e-04, +-1.595989968311668718e-04, +-1.574958967181390424e-04, +-1.553926537783260106e-04, +-1.532892714365156547e-04, +-1.511857531174433508e-04, +-1.490821022458359367e-04, +-1.469783222467313890e-04, +-1.448744165448665204e-04, +-1.427703885652321990e-04, +-1.406662417326465253e-04, +-1.385619794720775451e-04, +-1.364576052084966922e-04, +-1.343531223667326923e-04, +-1.322485343717480076e-04, +-1.301438446484906261e-04, +-1.280390566217501336e-04, +-1.259341737164324242e-04, +-1.238291993574129255e-04, +-1.217241369693919530e-04, +-1.196189899771687423e-04, +-1.175137618054961791e-04, +-1.154084558789345949e-04, +-1.133030756221271136e-04, +-1.111976244596535551e-04, +-1.090921058158842853e-04, +-1.069865231153037280e-04, +-1.048808797820803161e-04, +-1.027751792406268077e-04, +-1.006694249149826429e-04, +-9.856362022913757828e-05, +-9.645776860707376739e-05, +-9.435187347266497070e-05, +-9.224593824953109629e-05, +-9.013996636131398022e-05, +-8.803396123153123612e-05, +-8.592792628342961676e-05, +-8.382186494026088938e-05, +-8.171578062508976924e-05, +-7.960967676087993749e-05, +-7.750355677035023535e-05, +-7.539742407601415612e-05, +-7.329128210050398103e-05, +-7.118513426600108515e-05, +-6.907898399455963956e-05, +-6.697283470814804137e-05, +-6.486668982850178752e-05, +-6.276055277721250133e-05, +-6.065442697553434818e-05, +-5.854831584466038512e-05, +-5.644222280557575309e-05, +-5.433615127891160102e-05, +-5.223010468522116439e-05, +-5.012408644483340464e-05, +-4.801809997775334396e-05, +-4.591214870370383415e-05, +-4.380623604244837779e-05, +-4.170036541317538278e-05, +-3.959454023500884182e-05, +-3.748876392681537161e-05, +-3.538303990705738469e-05, +-3.327737159411675772e-05, +-3.117176240591294838e-05, +-2.906621576022682955e-05, +-2.696073507455370885e-05, +-2.485532376595748645e-05, +-2.274998525134642869e-05, +-2.064472294732673979e-05, +-1.853954027005662148e-05, +-1.643444063552187379e-05, +-1.432942745938999361e-05, +-1.222450415686342627e-05, +-1.011967414295598963e-05, +-8.014940832346366181e-06, +-5.910307639231698505e-06, +-3.805777977650816173e-06, +-1.701355261056101266e-06, + 4.029570971287313866e-07, + 2.507155684124336045e-06, + 4.611237087472715917e-06, + 6.715197894995823471e-06, + 8.819034694894929734e-06, + 1.092274407589699810e-05, + 1.302632262697855072e-05, + 1.512976693755894031e-05, + 1.723307359741205194e-05, + 1.933623919685952661e-05, + 2.143926032649457931e-05, + 2.354213357732845102e-05, + 2.564485554093679808e-05, + 2.774742280918338658e-05, + 2.984983197436647665e-05, + 3.195207962931834541e-05, + 3.405416236736374513e-05, + 3.615607678199684818e-05, + 3.825781946749692825e-05, + 4.035938701837101601e-05, + 4.246077602978089182e-05, + 4.456198309722101672e-05, + 4.666300481666474381e-05, + 4.876383778470953366e-05, + 5.086447859830265110e-05, + 5.296492385488581135e-05, + 5.506517015254238083e-05, + 5.716521408972125115e-05, + 5.926505226538257624e-05, + 6.136468127914468851e-05, + 6.346409773100783057e-05, + 6.556329822150022441e-05, + 6.766227935182477068e-05, + 6.976103772353536695e-05, + 7.185956993891847908e-05, + 7.395787260067014385e-05, + 7.605594231204156378e-05, + 7.815377567703267784e-05, + 8.025136929988235606e-05, + 8.234871978568247808e-05, + 8.444582374005504420e-05, + 8.654267776911229028e-05, + 8.863927847955449632e-05, + 9.073562247881652998e-05, + 9.283170637479232364e-05, + 9.492752677602761850e-05, + 9.702308029163179178e-05, + 9.911836353147020781e-05, + 1.012133731058900232e-04, + 1.033081056258646841e-04, + 1.054025577030936588e-04, + 1.074967259499611438e-04, + 1.095906069792135674e-04, + 1.116841974045278065e-04, + 1.137774938401866581e-04, + 1.158704929010407296e-04, + 1.179631912026510922e-04, + 1.200555853612037243e-04, + 1.221476719937008323e-04, + 1.242394477176853008e-04, + 1.263309091513876287e-04, + 1.284220529138707656e-04, + 1.305128756247553746e-04, + 1.326033739043660370e-04, + 1.346935443738754784e-04, + 1.367833836550312685e-04, + 1.388728883703004534e-04, + 1.409620551430148389e-04, + 1.430508805970518284e-04, + 1.451393613572094215e-04, + 1.472274940488890304e-04, + 1.493152752982374292e-04, + 1.514027017322950729e-04, + 1.534897699787201133e-04, + 1.555764766659335741e-04, + 1.576628184232650948e-04, + 1.597487918806791691e-04, + 1.618343936689196970e-04, + 1.639196204196548333e-04, + 1.660044687652043928e-04, + 1.680889353386839675e-04, + 1.701730167741493424e-04, + 1.722567097063240626e-04, + 1.743400107707440119e-04, + 1.764229166039019635e-04, + 1.785054238429278222e-04, + 1.805875291260121678e-04, + 1.826692290918549653e-04, + 1.847505203802726368e-04, + 1.868313996318817730e-04, + 1.889118634880550057e-04, + 1.909919085910208899e-04, + 1.930715315840077781e-04, + 1.951507291109718745e-04, + 1.972294978167874315e-04, + 1.993078343471586583e-04, + 2.013857353488124921e-04, + 2.034631974692235629e-04, + 2.055402173567616453e-04, + 2.076167916607864715e-04, + 2.096929170316091343e-04, + 2.117685901201712170e-04, + 2.138438075786092834e-04, + 2.159185660599312979e-04, + 2.179928622179806025e-04, + 2.200666927075762668e-04, + 2.221400541844299303e-04, + 2.242129433053308206e-04, + 2.262853567278785795e-04, + 2.283572911106263232e-04, + 2.304287431132213992e-04, + 2.324997093961382382e-04, + 2.345701866208188134e-04, + 2.366401714498189799e-04, + 2.387096605465337923e-04, + 2.407786505753446043e-04, + 2.428471382017614508e-04, + 2.449151200921518353e-04, + 2.469825929138824076e-04, + 2.490495533354666327e-04, + 2.511159980262449233e-04, + 2.531819236567587174e-04, + 2.552473268984326981e-04, + 2.573122044237218659e-04, + 2.593765529062507500e-04, + 2.614403690205437136e-04, + 2.635036494421707782e-04, + 2.655663908478881371e-04, + 2.676285899153687305e-04, + 2.696902433233447100e-04, + 2.717513477517529926e-04, + 2.738118998814611745e-04, + 2.758718963944609527e-04, + 2.779313339737768894e-04, + 2.799902093036138635e-04, + 2.820485190693135399e-04, + 2.841062599570408180e-04, + 2.861634286543366127e-04, + 2.882200218498501645e-04, + 2.902760362330692357e-04, + 2.923314684948762521e-04, + 2.943863153272288972e-04, + 2.964405734231256341e-04, + 2.984942394767416108e-04, + 3.005473101833490792e-04, + 3.025997822395015474e-04, + 3.046516523427661438e-04, + 3.067029171918632629e-04, + 3.087535734868147755e-04, + 3.108036179286697794e-04, + 3.128530472196501544e-04, + 3.149018580632910740e-04, + 3.169500471641721238e-04, + 3.189976112280611749e-04, + 3.210445469620576615e-04, + 3.230908510742722529e-04, + 3.251365202742050237e-04, + 3.271815512724267523e-04, + 3.292259407807218729e-04, + 3.312696855122316446e-04, + 3.333127821811830466e-04, + 3.353552275030355248e-04, + 3.373970181946187941e-04, + 3.394381509738647151e-04, + 3.414786225599541493e-04, + 3.435184296734523218e-04, + 3.455575690360454142e-04, + 3.475960373706802643e-04, + 3.496338314017073180e-04, + 3.516709478545683790e-04, + 3.537073834562060579e-04, + 3.557431349345298028e-04, + 3.577781990190079275e-04, + 3.598125724404048552e-04, + 3.618462519305049182e-04, + 3.638792342226727277e-04, + 3.659115160515353940e-04, + 3.679430941529423572e-04, + 3.699739652640607421e-04, + 3.720041261235205879e-04, + 3.740335734711443933e-04, + 3.760623040481335996e-04, + 3.780903145969852154e-04, + 3.801176018616792755e-04, + 3.821441625874061093e-04, + 3.841699935207149854e-04, + 3.861950914096057806e-04, + 3.882194530034883766e-04, + 3.902430750528749093e-04, + 3.922659543099678943e-04, + 3.942880875281267990e-04, + 3.963094714622787933e-04, + 3.983301028686081794e-04, + 4.003499785046941940e-04, + 4.023690951296560203e-04, + 4.043874495038851527e-04, + 4.064050383891849340e-04, + 4.084218585489119888e-04, + 4.104379067477116247e-04, + 4.124531797516575314e-04, + 4.144676743283905044e-04, + 4.164813872468580737e-04, + 4.184943152774478611e-04, + 4.205064551921343808e-04, + 4.225178037642112958e-04, + 4.245283577684303583e-04, + 4.265381139811436030e-04, + 4.285470691799925062e-04, + 4.305552201442723863e-04, + 4.325625636546279597e-04, + 4.345690964931838785e-04, + 4.365748154436916405e-04, + 4.385797172912659649e-04, + 4.405837988225176074e-04, + 4.425870568257032510e-04, + 4.445894880904508232e-04, + 4.465910894079076526e-04, + 4.485918575708755063e-04, + 4.505917893735476702e-04, + 4.525908816116939689e-04, + 4.545891310825769566e-04, + 4.565865345850899900e-04, + 4.585830889197155410e-04, + 4.605787908882242763e-04, + 4.625736372942081055e-04, + 4.645676249427776886e-04, + 4.665607506405240008e-04, + 4.685530111956045813e-04, + 4.705444034178952128e-04, + 4.725349241187159436e-04, + 4.745245701110203896e-04, + 4.765133382093099195e-04, + 4.785012252298186737e-04, + 4.804882279902490195e-04, + 4.824743433099112498e-04, + 4.844595680098168254e-04, + 4.864438989126437882e-04, + 4.884273328424215297e-04, + 4.904098666251228197e-04, + 4.923914970881745597e-04, + 4.943722210606419894e-04, + 4.963520353733665968e-04, + 4.983309368586635174e-04, + 5.003089223506757433e-04, + 5.022859886850741242e-04, + 5.042621326991912666e-04, + 5.062373512321647565e-04, + 5.082116411246691452e-04, + 5.101849992190614488e-04, + 5.121574223595133125e-04, + 5.141289073917551392e-04, + 5.160994511632055427e-04, + 5.180690505231220523e-04, + 5.200377023223300621e-04, + 5.220054034133632349e-04, + 5.239721506506039069e-04, + 5.259379408899745234e-04, + 5.279027709893480092e-04, + 5.298666378080096797e-04, + 5.318295382072491060e-04, + 5.337914690500509011e-04, + 5.357524272010501590e-04, + 5.377124095266404410e-04, + 5.396714128950932552e-04, + 5.416294341763120508e-04, + 5.435864702419622137e-04, + 5.455425179656120133e-04, + 5.474975742224697916e-04, + 5.494516358895694700e-04, + 5.514046998456841389e-04, + 5.533567629714610404e-04, + 5.553078221493909939e-04, + 5.572578742634963630e-04, + 5.592069161998674100e-04, + 5.611549448464058822e-04, + 5.631019570925616590e-04, + 5.650479498299087891e-04, + 5.669929199516321201e-04, + 5.689368643529147925e-04, + 5.708797799306442045e-04, + 5.728216635835481872e-04, + 5.747625122123258684e-04, + 5.767023227193983055e-04, + 5.786410920090357714e-04, + 5.805788169875002180e-04, + 5.825154945627853938e-04, + 5.844511216447550788e-04, + 5.863856951452750326e-04, + 5.883192119779562549e-04, + 5.902516690583004856e-04, + 5.921830633038178407e-04, + 5.941133916337466543e-04, + 5.960426509693910998e-04, + 5.979708382338287794e-04, + 5.998979503520462508e-04, + 6.018239842510733585e-04, + 6.037489368597224841e-04, + 6.056728051087345880e-04, + 6.075955859309030253e-04, + 6.095172762608249382e-04, + 6.114378730350350467e-04, + 6.133573731921384631e-04, + 6.152757736725574227e-04, + 6.171930714186675678e-04, + 6.191092633749263174e-04, + 6.210243464876282708e-04, + 6.229383177050709826e-04, + 6.248511739774866578e-04, + 6.267629122571628233e-04, + 6.286735294984161990e-04, + 6.305830226572878196e-04, + 6.324913886920660545e-04, + 6.343986245629956071e-04, + 6.363047272322323042e-04, + 6.382096936639774284e-04, + 6.401135208244049680e-04, + 6.420162056818273918e-04, + 6.439177452064486678e-04, + 6.458181363704998965e-04, + 6.477173761483649705e-04, + 6.496154615163357614e-04, + 6.515123894527408144e-04, + 6.534081569380433604e-04, + 6.553027609547871059e-04, + 6.571961984873212793e-04, + 6.590884665223477193e-04, + 6.609795620484200818e-04, + 6.628694820563264551e-04, + 6.647582235388016124e-04, + 6.666457834906566824e-04, + 6.685321589089092539e-04, + 6.704173467925413814e-04, + 6.723013441426218834e-04, + 6.741841479624426266e-04, + 6.760657552572708938e-04, + 6.779461630344798140e-04, + 6.798253683036774905e-04, + 6.817033680764612120e-04, + 6.835801593665502681e-04, + 6.854557391899083552e-04, + 6.873301045645085214e-04, + 6.892032525104557902e-04, + 6.910751800501165054e-04, + 6.929458842078378483e-04, + 6.948153620103208030e-04, + 6.966836104861257603e-04, + 6.985506266662269790e-04, + 7.004164075837102012e-04, + 7.022809502737510775e-04, + 7.041442517736963731e-04, + 7.060063091231903861e-04, + 7.078671193639386999e-04, + 7.097266795398283123e-04, + 7.115849866970624027e-04, + 7.134420378839153015e-04, + 7.152978301509023851e-04, + 7.171523605507004956e-04, + 7.190056261382793456e-04, + 7.208576239708660649e-04, + 7.227083511076543097e-04, + 7.245578046103113429e-04, + 7.264059815426887699e-04, + 7.282528789707901204e-04, + 7.300984939628930382e-04, + 7.319428235894821690e-04, + 7.337858649234085383e-04, + 7.356276150396453889e-04, + 7.374680710154330300e-04, + 7.393072299303860657e-04, + 7.411450888662622421e-04, + 7.429816449070910343e-04, + 7.448168951392575635e-04, + 7.466508366514651917e-04, + 7.484834665344537383e-04, + 7.503147818815424476e-04, + 7.521447797881734322e-04, + 7.539734573520907824e-04, + 7.558008116734575522e-04, + 7.576268398545843831e-04, + 7.594515390002542230e-04, + 7.612749062174436858e-04, + 7.630969386154489277e-04, + 7.649176333060107641e-04, + 7.667369874030810235e-04, + 7.685549980229406178e-04, + 7.703716622843368019e-04, + 7.721869773082317475e-04, + 7.740009402179374174e-04, + 7.758135481392411164e-04, + 7.776247982001598114e-04, + 7.794346875310794506e-04, + 7.812432132648637097e-04, + 7.830503725365932409e-04, + 7.848561624839179305e-04, + 7.866605802465913419e-04, + 7.884636229669864712e-04, + 7.902652877898255638e-04, + 7.920655718621467207e-04, + 7.938644723333788174e-04, + 7.956619863554801730e-04, + 7.974581110826891835e-04, + 7.992528436716998547e-04, + 8.010461812815743068e-04, + 8.028381210739215590e-04, + 8.046286602126522837e-04, + 8.064177958641032722e-04, + 8.082055251971694909e-04, + 8.099918453830546065e-04, + 8.117767535954176781e-04, + 8.135602470104279097e-04, + 8.153423228067639998e-04, + 8.171229781653005899e-04, + 8.189022102696690139e-04, + 8.206800163057535779e-04, + 8.224563934620736328e-04, + 8.242313389294968033e-04, + 8.260048499013742957e-04, + 8.277769235736525712e-04, + 8.295475571446495663e-04, + 8.313167478151737384e-04, + 8.330844927886457132e-04, + 8.348507892708664823e-04, + 8.366156344701445799e-04, + 8.383790255974120928e-04, + 8.401409598660002304e-04, + 8.419014344917512141e-04, + 8.436604466931521768e-04, + 8.454179936910543539e-04, + 8.471740727090039825e-04, + 8.489286809729563966e-04, + 8.506818157114083003e-04, + 8.524334741555612653e-04, + 8.541836535388851225e-04, + 8.559323510976375119e-04, + 8.576795640705972773e-04, + 8.594252896990240255e-04, + 8.611695252267385740e-04, + 8.629122679002565249e-04, + 8.646535149685456202e-04, + 8.663932636831896735e-04, + 8.681315112983189640e-04, + 8.698682550707658194e-04, + 8.716034922598400779e-04, + 8.733372201274439053e-04, + 8.750694359381588558e-04, + 8.768001369592071667e-04, + 8.785293204601886223e-04, + 8.802569837135503384e-04, + 8.819831239943164711e-04, + 8.837077385800526548e-04, + 8.854308247509906854e-04, + 8.871523797899563126e-04, + 8.888724009825200523e-04, + 8.905908856167800208e-04, + 8.923078309834757763e-04, + 8.940232343761063882e-04, + 8.957370930907096939e-04, + 8.974494044259803682e-04, + 8.991601656833844150e-04, + 9.008693741669410258e-04, + 9.025770271833329517e-04, + 9.042831220420364993e-04, + 9.059876560550444080e-04, + 9.076906265371855820e-04, + 9.093920308058648814e-04, + 9.110918661811698077e-04, + 9.127901299859989817e-04, + 9.144868195458348949e-04, + 9.161819321888576423e-04, + 9.178754652460768696e-04, + 9.195674160510897794e-04, + 9.212577819402101515e-04, + 9.229465602525881466e-04, + 9.246337483299787215e-04, + 9.263193435168668539e-04, + 9.280033431605787817e-04, + 9.296857446110681983e-04, + 9.313665452210249983e-04, + 9.330457423459954068e-04, + 9.347233333441250236e-04, + 9.363993155764980701e-04, + 9.380736864066905895e-04, + 9.397464432012693969e-04, + 9.414175833295226545e-04, + 9.430871041634352608e-04, + 9.447550030777629015e-04, + 9.464212774501521786e-04, + 9.480859246609172654e-04, + 9.497489420931975491e-04, + 9.514103271328798938e-04, + 9.530700771687565000e-04, + 9.547281895923114253e-04, + 9.563846617978206564e-04, + 9.580394911824474105e-04, + 9.596926751462011521e-04, + 9.613442110916802039e-04, + 9.629940964245200640e-04, + 9.646423285531475090e-04, + 9.662889048887369006e-04, + 9.679338228453320501e-04, + 9.695770798397703241e-04, + 9.712186732918402874e-04, + 9.728586006240650796e-04, + 9.744968592618040047e-04, + 9.761334466333904418e-04, + 9.777683601698888751e-04, + 9.794015973052302027e-04, + 9.810331554763122418e-04, + 9.826630321227985011e-04, + 9.842912246872082774e-04, + 9.859177306150582534e-04, + 9.875425473546226712e-04, + 9.891656723570666897e-04, + 9.907871030765487332e-04, + 9.924068369699678722e-04, + 9.940248714972689179e-04, + 9.956412041211770095e-04, + 9.972558323073296704e-04, + 9.988687535243713500e-04, + 1.000479965243753931e-03, + 1.002089464939838427e-03, + 1.003697250090013812e-03, + 1.005303318174481696e-03, + 1.006907666676374723e-03, + 1.008510293081852196e-03, + 1.010111194879912072e-03, + 1.011710369562518041e-03, + 1.013307814624539015e-03, + 1.014903527563864715e-03, + 1.016497505881370968e-03, + 1.018089747080664059e-03, + 1.019680248668535438e-03, + 1.021269008154720168e-03, + 1.022856023051717808e-03, + 1.024441290875206150e-03, + 1.026024809143799869e-03, + 1.027606575379021690e-03, + 1.029186587105402131e-03, + 1.030764841850431148e-03, + 1.032341337144684554e-03, + 1.033916070521629510e-03, + 1.035489039517725578e-03, + 1.037060241672542677e-03, + 1.038629674528540126e-03, + 1.040197335631193277e-03, + 1.041763222529085240e-03, + 1.043327332773720181e-03, + 1.044889663919612013e-03, + 1.046450213524402137e-03, + 1.048008979148623739e-03, + 1.049565958355978476e-03, + 1.051121148713095787e-03, + 1.052674547789640008e-03, + 1.054226153158429203e-03, + 1.055775962395216587e-03, + 1.057323973078804586e-03, + 1.058870182791155643e-03, + 1.060414589117184697e-03, + 1.061957189644861755e-03, + 1.063497981965334837e-03, + 1.065036963672704893e-03, + 1.066574132364150928e-03, + 1.068109485640031256e-03, + 1.069643021103642601e-03, + 1.071174736361537759e-03, + 1.072704629023115992e-03, + 1.074232696701074487e-03, + 1.075758937011200194e-03, + 1.077283347572175094e-03, + 1.078805926005991459e-03, + 1.080326669937703129e-03, + 1.081845576995413803e-03, + 1.083362644810332122e-03, + 1.084877871016893310e-03, + 1.086391253252541470e-03, + 1.087902789157889610e-03, + 1.089412476376630306e-03, + 1.090920312555698985e-03, + 1.092426295345057946e-03, + 1.093930422397813027e-03, + 1.095432691370275182e-03, + 1.096933099921939452e-03, + 1.098431645715238630e-03, + 1.099928326416003835e-03, + 1.101423139693048607e-03, + 1.102916083218485064e-03, + 1.104407154667482989e-03, + 1.105896351718383460e-03, + 1.107383672052797289e-03, + 1.108869113355410302e-03, + 1.110352673314083955e-03, + 1.111834349619960499e-03, + 1.113314139967275847e-03, + 1.114792042053445878e-03, + 1.116268053579179843e-03, + 1.117742172248285858e-03, + 1.119214395767770221e-03, + 1.120684721847939758e-03, + 1.122153148202182813e-03, + 1.123619672547217967e-03, + 1.125084292602885868e-03, + 1.126547006092246160e-03, + 1.128007810741675065e-03, + 1.129466704280670869e-03, + 1.130923684441967553e-03, + 1.132378748961619793e-03, + 1.133831895578828620e-03, + 1.135283122036023599e-03, + 1.136732426078979280e-03, + 1.138179805456614830e-03, + 1.139625257921102241e-03, + 1.141068781227960001e-03, + 1.142510373135866616e-03, + 1.143950031406787892e-03, + 1.145387753805924679e-03, + 1.146823538101810229e-03, + 1.148257382066271166e-03, + 1.149689283474219104e-03, + 1.151119240104042478e-03, + 1.152547249737358691e-03, + 1.153973310159019756e-03, + 1.155397419157160651e-03, + 1.156819574523299497e-03, + 1.158239774052155415e-03, + 1.159658015541773640e-03, + 1.161074296793470663e-03, + 1.162488615611958695e-03, + 1.163900969805165475e-03, + 1.165311357184321654e-03, + 1.166719775564047535e-03, + 1.168126222762302111e-03, + 1.169530696600177937e-03, + 1.170933194902315511e-03, + 1.172333715496551125e-03, + 1.173732256214056295e-03, + 1.175128814889425796e-03, + 1.176523389360474483e-03, + 1.177915977468479069e-03, + 1.179306577057957816e-03, + 1.180695185976792612e-03, + 1.182081802076297063e-03, + 1.183466423211048876e-03, + 1.184849047238982662e-03, + 1.186229672021489471e-03, + 1.187608295423228785e-03, + 1.188984915312224153e-03, + 1.190359529559970085e-03, + 1.191732136041239072e-03, + 1.193102732634173735e-03, + 1.194471317220395252e-03, + 1.195837887684789332e-03, + 1.197202441915774015e-03, + 1.198564977804946873e-03, + 1.199925493247480310e-03, + 1.201283986141918380e-03, + 1.202640454390131904e-03, + 1.203994895897407373e-03, + 1.205347308572525446e-03, + 1.206697690327576851e-03, + 1.208046039078074707e-03, + 1.209392352743037793e-03, + 1.210736629244803632e-03, + 1.212078866509173338e-03, + 1.213419062465335508e-03, + 1.214757215045975721e-03, + 1.216093322187232310e-03, + 1.217427381828505104e-03, + 1.218759391912807577e-03, + 1.220089350386596629e-03, + 1.221417255199592827e-03, + 1.222743104305174184e-03, + 1.224066895660019024e-03, + 1.225388627224384408e-03, + 1.226708296961882133e-03, + 1.228025902839599082e-03, + 1.229341442828164009e-03, + 1.230654914901586211e-03, + 1.231966317037344648e-03, + 1.233275647216479668e-03, + 1.234582903423418667e-03, + 1.235888083646068461e-03, + 1.237191185875898989e-03, + 1.238492208107787405e-03, + 1.239791148340093534e-03, + 1.241088004574752469e-03, + 1.242382774817085049e-03, + 1.243675457076017952e-03, + 1.244966049363893310e-03, + 1.246254549696559129e-03, + 1.247540956093450394e-03, + 1.248825266577433587e-03, + 1.250107479174877812e-03, + 1.251387591915757149e-03, + 1.252665602833481729e-03, + 1.253941509964978836e-03, + 1.255215311350787446e-03, + 1.256487005034885628e-03, + 1.257756589064784429e-03, + 1.259024061491613965e-03, + 1.260289420369926959e-03, + 1.261552663757948547e-03, + 1.262813789717261203e-03, + 1.264072796313156239e-03, + 1.265329681614470094e-03, + 1.266584443693427120e-03, + 1.267837080625967231e-03, + 1.269087590491563321e-03, + 1.270335971373194161e-03, + 1.271582221357424628e-03, + 1.272826338534361473e-03, + 1.274068320997759785e-03, + 1.275308166844864484e-03, + 1.276545874176497706e-03, + 1.277781441097136867e-03, + 1.279014865714758102e-03, + 1.280246146140920187e-03, + 1.281475280490828499e-03, + 1.282702266883295993e-03, + 1.283927103440568422e-03, + 1.285149788288676926e-03, + 1.286370319557110379e-03, + 1.287588695379069965e-03, + 1.288804913891281609e-03, + 1.290018973234062765e-03, + 1.291230871551444495e-03, + 1.292440606990960484e-03, + 1.293648177703785821e-03, + 1.294853581844774724e-03, + 1.296056817572326103e-03, + 1.297257883048460536e-03, + 1.298456776438910044e-03, + 1.299653495912951118e-03, + 1.300848039643489945e-03, + 1.302040405807148703e-03, + 1.303230592584101854e-03, + 1.304418598158168727e-03, + 1.305604420716893104e-03, + 1.306788058451344376e-03, + 1.307969509556385990e-03, + 1.309148772230342385e-03, + 1.310325844675346149e-03, + 1.311500725097163684e-03, + 1.312673411705162678e-03, + 1.313843902712376723e-03, + 1.315012196335577088e-03, + 1.316178290795130259e-03, + 1.317342184315066457e-03, + 1.318503875123167891e-03, + 1.319663361450815892e-03, + 1.320820641533085446e-03, + 1.321975713608717880e-03, + 1.323128575920186562e-03, + 1.324279226713666758e-03, + 1.325427664238881245e-03, + 1.326573886749385671e-03, + 1.327717892502410912e-03, + 1.328859679758829246e-03, + 1.329999246783236319e-03, + 1.331136591843904739e-03, + 1.332271713212889895e-03, + 1.333404609165876652e-03, + 1.334535277982253944e-03, + 1.335663717945202375e-03, + 1.336789927341541133e-03, + 1.337913904461806485e-03, + 1.339035647600303166e-03, + 1.340155155055080096e-03, + 1.341272425127765580e-03, + 1.342387456123890835e-03, + 1.343500246352612865e-03, + 1.344610794126820715e-03, + 1.345719097763211150e-03, + 1.346825155582128406e-03, + 1.347928965907744603e-03, + 1.349030527067910778e-03, + 1.350129837394208488e-03, + 1.351226895222050646e-03, + 1.352321698890529729e-03, + 1.353414246742480013e-03, + 1.354504537124569296e-03, + 1.355592568387155999e-03, + 1.356678338884340562e-03, + 1.357761846974079928e-03, + 1.358843091018006703e-03, + 1.359922069381528254e-03, + 1.360998780433894575e-03, + 1.362073222548026768e-03, + 1.363145394100745596e-03, + 1.364215293472477875e-03, + 1.365282919047571767e-03, + 1.366348269214139998e-03, + 1.367411342364029071e-03, + 1.368472136892859813e-03, + 1.369530651200140565e-03, + 1.370586883689068995e-03, + 1.371640832766684312e-03, + 1.372692496843785958e-03, + 1.373741874335047009e-03, + 1.374788963658867165e-03, + 1.375833763237453841e-03, + 1.376876271496863587e-03, + 1.377916486866992765e-03, + 1.378954407781390196e-03, + 1.379990032677575048e-03, + 1.381023359996876379e-03, + 1.382054388184293702e-03, + 1.383083115688825719e-03, + 1.384109540963152866e-03, + 1.385133662463895136e-03, + 1.386155478651418440e-03, + 1.387174987989919610e-03, + 1.388192188947493617e-03, + 1.389207079996006506e-03, + 1.390219659611153721e-03, + 1.391229926272539476e-03, + 1.392237878463543606e-03, + 1.393243514671383375e-03, + 1.394246833387188930e-03, + 1.395247833105871466e-03, + 1.396246512326193481e-03, + 1.397242869550829707e-03, + 1.398236903286229635e-03, + 1.399228612042781447e-03, + 1.400217994334659790e-03, + 1.401205048679912734e-03, + 1.402189773600507738e-03, + 1.403172167622207403e-03, + 1.404152229274654691e-03, + 1.405129957091417808e-03, + 1.406105349609868558e-03, + 1.407078405371262574e-03, + 1.408049122920788107e-03, + 1.409017500807449585e-03, + 1.409983537584145021e-03, + 1.410947231807650835e-03, + 1.411908582038675199e-03, + 1.412867586841754820e-03, + 1.413824244785311752e-03, + 1.414778554441709557e-03, + 1.415730514387220996e-03, + 1.416680123201877325e-03, + 1.417627379469753226e-03, + 1.418572281778782704e-03, + 1.419514828720768417e-03, + 1.420455018891435229e-03, + 1.421392850890391621e-03, + 1.422328323321221839e-03, + 1.423261434791344305e-03, + 1.424192183912097913e-03, + 1.425120569298801666e-03, + 1.426046589570616543e-03, + 1.426970243350626170e-03, + 1.427891529265899913e-03, + 1.428810445947363214e-03, + 1.429726992029865026e-03, + 1.430641166152237659e-03, + 1.431552966957167980e-03, + 1.432462393091346814e-03, + 1.433369443205337324e-03, + 1.434274115953640925e-03, + 1.435176409994749335e-03, + 1.436076323991031592e-03, + 1.436973856608800412e-03, + 1.437869006518365097e-03, + 1.438761772393923333e-03, + 1.439652152913615613e-03, + 1.440540146759588342e-03, + 1.441425752617881296e-03, + 1.442308969178478359e-03, + 1.443189795135384505e-03, + 1.444068229186493742e-03, + 1.444944270033665223e-03, + 1.445817916382764225e-03, + 1.446689166943541808e-03, + 1.447558020429819342e-03, + 1.448424475559233508e-03, + 1.449288531053509726e-03, + 1.450150185638322299e-03, + 1.451009438043275547e-03, + 1.451866287001943485e-03, + 1.452720731251939002e-03, + 1.453572769534780497e-03, + 1.454422400595995531e-03, + 1.455269623185064670e-03, + 1.456114436055513418e-03, + 1.456956837964782335e-03, + 1.457796827674303144e-03, + 1.458634403949531696e-03, + 1.459469565559934736e-03, + 1.460302311278843541e-03, + 1.461132639883703501e-03, + 1.461960550155938380e-03, + 1.462786040880924721e-03, + 1.463609110848048019e-03, + 1.464429758850687964e-03, + 1.465247983686267024e-03, + 1.466063784156165220e-03, + 1.466877159065760024e-03, + 1.467688107224491417e-03, + 1.468496627445754332e-03, + 1.469302718546948525e-03, + 1.470106379349544285e-03, + 1.470907608678963816e-03, + 1.471706405364651060e-03, + 1.472502768240113984e-03, + 1.473296696142826134e-03, + 1.474088187914280408e-03, + 1.474877242400045654e-03, + 1.475663858449641772e-03, + 1.476448034916679570e-03, + 1.477229770658753218e-03, + 1.478009064537469516e-03, + 1.478785915418530730e-03, + 1.479560322171610560e-03, + 1.480332283670417670e-03, + 1.481101798792741012e-03, + 1.481868866420363307e-03, + 1.482633485439100287e-03, + 1.483395654738852961e-03, + 1.484155373213518489e-03, + 1.484912639761050467e-03, + 1.485667453283425962e-03, + 1.486419812686706450e-03, + 1.487169716881016780e-03, + 1.487917164780423089e-03, + 1.488662155303149652e-03, + 1.489404687371443563e-03, + 1.490144759911594691e-03, + 1.490882371853919849e-03, + 1.491617522132856252e-03, + 1.492350209686850926e-03, + 1.493080433458418175e-03, + 1.493808192394121583e-03, + 1.494533485444631037e-03, + 1.495256311564640986e-03, + 1.495976669712904914e-03, + 1.496694558852282178e-03, + 1.497409977949664068e-03, + 1.498122925976010664e-03, + 1.498833401906397248e-03, + 1.499541404719920623e-03, + 1.500246933399752890e-03, + 1.500949986933195011e-03, + 1.501650564311549085e-03, + 1.502348664530273395e-03, + 1.503044286588849478e-03, + 1.503737429490836991e-03, + 1.504428092243931822e-03, + 1.505116273859863525e-03, + 1.505801973354439771e-03, + 1.506485189747616390e-03, + 1.507165922063378538e-03, + 1.507844169329802288e-03, + 1.508519930579103191e-03, + 1.509193204847540009e-03, + 1.509863991175465665e-03, + 1.510532288607376256e-03, + 1.511198096191798072e-03, + 1.511861412981430281e-03, + 1.512522238032966903e-03, + 1.513180570407292834e-03, + 1.513836409169395155e-03, + 1.514489753388267509e-03, + 1.515140602137104173e-03, + 1.515788954493179925e-03, + 1.516434809537856769e-03, + 1.517078166356595646e-03, + 1.517719024039017360e-03, + 1.518357381678806526e-03, + 1.518993238373768590e-03, + 1.519626593225812273e-03, + 1.520257445341002475e-03, + 1.520885793829479180e-03, + 1.521511637805488459e-03, + 1.522134976387431917e-03, + 1.522755808697838931e-03, + 1.523374133863275364e-03, + 1.523989951014531347e-03, + 1.524603259286443037e-03, + 1.525214057818023369e-03, + 1.525822345752374676e-03, + 1.526428122236724244e-03, + 1.527031386422464431e-03, + 1.527632137465075686e-03, + 1.528230374524170787e-03, + 1.528826096763527802e-03, + 1.529419303351018744e-03, + 1.530009993458648389e-03, + 1.530598166262596774e-03, + 1.531183820943139186e-03, + 1.531766956684679987e-03, + 1.532347572675807259e-03, + 1.532925668109190454e-03, + 1.533501242181695753e-03, + 1.534074294094291092e-03, + 1.534644823052076085e-03, + 1.535212828264341219e-03, + 1.535778308944474183e-03, + 1.536341264310017111e-03, + 1.536901693582685014e-03, + 1.537459595988313740e-03, + 1.538014970756874066e-03, + 1.538567817122534149e-03, + 1.539118134323564551e-03, + 1.539665921602394617e-03, + 1.540211178205634591e-03, + 1.540753903384025096e-03, + 1.541294096392454476e-03, + 1.541831756489966390e-03, + 1.542366882939776940e-03, + 1.542899475009281395e-03, + 1.543429531969950103e-03, + 1.543957053097483540e-03, + 1.544482037671736406e-03, + 1.545004484976699854e-03, + 1.545524394300520346e-03, + 1.546041764935551484e-03, + 1.546556596178265755e-03, + 1.547068887329312858e-03, + 1.547578637693504313e-03, + 1.548085846579845114e-03, + 1.548590513301469985e-03, + 1.549092637175686522e-03, + 1.549592217523999924e-03, + 1.550089253672079156e-03, + 1.550583744949717707e-03, + 1.551075690690937019e-03, + 1.551565090233901489e-03, + 1.552051942920947523e-03, + 1.552536248098606306e-03, + 1.553018005117553059e-03, + 1.553497213332677516e-03, + 1.553973872103013446e-03, + 1.554447980791770966e-03, + 1.554919538766371453e-03, + 1.555388545398380968e-03, + 1.555855000063550379e-03, + 1.556318902141834654e-03, + 1.556780251017349497e-03, + 1.557239046078380020e-03, + 1.557695286717428879e-03, + 1.558148972331161418e-03, + 1.558600102320417810e-03, + 1.559048676090250569e-03, + 1.559494693049866222e-03, + 1.559938152612709442e-03, + 1.560379054196324054e-03, + 1.560817397222526073e-03, + 1.561253181117288344e-03, + 1.561686405310769386e-03, + 1.562117069237312951e-03, + 1.562545172335479907e-03, + 1.562970714047993157e-03, + 1.563393693821773199e-03, + 1.563814111107959381e-03, + 1.564231965361849615e-03, + 1.564647256042957625e-03, + 1.565059982614968497e-03, + 1.565470144545795268e-03, + 1.565877741307544670e-03, + 1.566282772376473547e-03, + 1.566685237233084909e-03, + 1.567085135362087170e-03, + 1.567482466252319772e-03, + 1.567877229396897167e-03, + 1.568269424293079794e-03, + 1.568659050442377297e-03, + 1.569046107350456371e-03, + 1.569430594527197569e-03, + 1.569812511486702459e-03, + 1.570191857747250258e-03, + 1.570568632831329707e-03, + 1.570942836265652731e-03, + 1.571314467581113672e-03, + 1.571683526312806856e-03, + 1.572050012000061068e-03, + 1.572413924186387727e-03, + 1.572775262419495420e-03, + 1.573134026251338680e-03, + 1.573490215238030395e-03, + 1.573843828939935907e-03, + 1.574194866921601026e-03, + 1.574543328751778484e-03, + 1.574889214003458507e-03, + 1.575232522253814391e-03, + 1.575573253084227437e-03, + 1.575911406080317528e-03, + 1.576246980831888262e-03, + 1.576579976932956017e-03, + 1.576910393981782038e-03, + 1.577238231580799363e-03, + 1.577563489336662912e-03, + 1.577886166860268139e-03, + 1.578206263766684025e-03, + 1.578523779675239163e-03, + 1.578838714209423316e-03, + 1.579151066996980221e-03, + 1.579460837669874849e-03, + 1.579768025864235941e-03, + 1.580072631220464643e-03, + 1.580374653383158834e-03, + 1.580674092001128081e-03, + 1.580970946727397334e-03, + 1.581265217219205614e-03, + 1.581556903138036383e-03, + 1.581846004149557033e-03, + 1.582132519923668337e-03, + 1.582416450134497719e-03, + 1.582697794460378657e-03, + 1.582976552583861959e-03, + 1.583252724191729424e-03, + 1.583526308974994275e-03, + 1.583797306628840227e-03, + 1.584065716852727955e-03, + 1.584331539350300336e-03, + 1.584594773829452055e-03, + 1.584855420002273009e-03, + 1.585113477585075193e-03, + 1.585368946298418508e-03, + 1.585621825867053079e-03, + 1.585872116019964575e-03, + 1.586119816490370307e-03, + 1.586364927015697325e-03, + 1.586607447337590659e-03, + 1.586847377201939559e-03, + 1.587084716358836724e-03, + 1.587319464562590883e-03, + 1.587551621571771246e-03, + 1.587781187149135296e-03, + 1.588008161061665218e-03, + 1.588232543080598472e-03, + 1.588454332981353639e-03, + 1.588673530543619535e-03, + 1.588890135551258723e-03, + 1.589104147792392077e-03, + 1.589315567059371463e-03, + 1.589524393148745475e-03, + 1.589730625861297169e-03, + 1.589934265002048829e-03, + 1.590135310380233350e-03, + 1.590333761809301820e-03, + 1.590529619106955186e-03, + 1.590722882095096111e-03, + 1.590913550599864753e-03, + 1.591101624451611660e-03, + 1.591287103484938757e-03, + 1.591469987538658573e-03, + 1.591650276455792296e-03, + 1.591827970083607279e-03, + 1.592003068273604256e-03, + 1.592175570881488493e-03, + 1.592345477767197551e-03, + 1.592512788794892171e-03, + 1.592677503832969511e-03, + 1.592839622754044053e-03, + 1.592999145434948697e-03, + 1.593156071756755138e-03, + 1.593310401604752834e-03, + 1.593462134868455079e-03, + 1.593611271441601820e-03, + 1.593757811222175054e-03, + 1.593901754112343316e-03, + 1.594043100018538439e-03, + 1.594181848851401783e-03, + 1.594318000525787480e-03, + 1.594451554960794534e-03, + 1.594582512079736674e-03, + 1.594710871810161006e-03, + 1.594836634083823942e-03, + 1.594959798836712451e-03, + 1.595080366009046227e-03, + 1.595198335545263161e-03, + 1.595313707394015439e-03, + 1.595426481508199898e-03, + 1.595536657844914222e-03, + 1.595644236365492945e-03, + 1.595749217035497469e-03, + 1.595851599824700236e-03, + 1.595951384707101645e-03, + 1.596048571660931134e-03, + 1.596143160668633300e-03, + 1.596235151716878312e-03, + 1.596324544796551498e-03, + 1.596411339902767228e-03, + 1.596495537034866305e-03, + 1.596577136196405131e-03, + 1.596656137395152881e-03, + 1.596732540643119262e-03, + 1.596806345956517000e-03, + 1.596877553355784607e-03, + 1.596946162865587465e-03, + 1.597012174514806336e-03, + 1.597075588336536057e-03, + 1.597136404368096818e-03, + 1.597194622651031126e-03, + 1.597250243231100987e-03, + 1.597303266158268172e-03, + 1.597353691486736935e-03, + 1.597401519274921269e-03, + 1.597446749585444041e-03, + 1.597489382485160628e-03, + 1.597529418045128772e-03, + 1.597566856340632219e-03, + 1.597601697451163372e-03, + 1.597633941460440852e-03, + 1.597663588456395408e-03, + 1.597690638531159939e-03, + 1.597715091781101802e-03, + 1.597736948306794844e-03, + 1.597756208213018964e-03, + 1.597772871608776598e-03, + 1.597786938607282520e-03, + 1.597798409325971005e-03, + 1.597807283886470021e-03, + 1.597813562414627251e-03, + 1.597817245040518115e-03, + 1.597818331898410646e-03, + 1.597816823126786733e-03, + 1.597812718868339525e-03, + 1.597806019269972129e-03, + 1.597796724482809533e-03, + 1.597784834662156544e-03, + 1.597770349967555679e-03, + 1.597753270562740765e-03, + 1.597733596615659056e-03, + 1.597711328298460172e-03, + 1.597686465787501739e-03, + 1.597659009263351776e-03, + 1.597628958910783051e-03, + 1.597596314918761379e-03, + 1.597561077480469903e-03, + 1.597523246793291314e-03, + 1.597482823058811105e-03, + 1.597439806482814969e-03, + 1.597394197275299856e-03, + 1.597345995650450339e-03, + 1.597295201826656177e-03, + 1.597241816026517521e-03, + 1.597185838476825178e-03, + 1.597127269408571458e-03, + 1.597066109056939544e-03, + 1.597002357661325396e-03, + 1.596936015465309344e-03, + 1.596867082716677336e-03, + 1.596795559667402945e-03, + 1.596721446573662112e-03, + 1.596644743695824036e-03, + 1.596565451298447708e-03, + 1.596483569650290800e-03, + 1.596399099024300560e-03, + 1.596312039697617710e-03, + 1.596222391951575802e-03, + 1.596130156071694488e-03, + 1.596035332347689071e-03, + 1.595937921073460955e-03, + 1.595837922547100468e-03, + 1.595735337070886429e-03, + 1.595630164951285712e-03, + 1.595522406498951296e-03, + 1.595412062028717277e-03, + 1.595299131859611880e-03, + 1.595183616314841627e-03, + 1.595065515721792639e-03, + 1.594944830412044516e-03, + 1.594821560721355154e-03, + 1.594695706989658363e-03, + 1.594567269561063651e-03, + 1.594436248783881807e-03, + 1.594302645010581970e-03, + 1.594166458597822637e-03, + 1.594027689906430409e-03, + 1.593886339301414526e-03, + 1.593742407151957320e-03, + 1.593595893831425926e-03, + 1.593446799717343444e-03, + 1.593295125191418644e-03, + 1.593140870639531441e-03, + 1.592984036451732671e-03, + 1.592824623022233042e-03, + 1.592662630749432616e-03, + 1.592498060035885468e-03, + 1.592330911288320503e-03, + 1.592161184917624973e-03, + 1.591988881338873103e-03, + 1.591814000971277085e-03, + 1.591636544238226973e-03, + 1.591456511567282016e-03, + 1.591273903390155904e-03, + 1.591088720142727836e-03, + 1.590900962265034057e-03, + 1.590710630201266559e-03, + 1.590517724399797802e-03, + 1.590322245313123247e-03, + 1.590124193397924679e-03, + 1.589923569115035294e-03, + 1.589720372929425167e-03, + 1.589514605310232915e-03, + 1.589306266730755503e-03, + 1.589095357668427431e-03, + 1.588881878604846533e-03, + 1.588665830025749910e-03, + 1.588447212421032796e-03, + 1.588226026284735113e-03, + 1.588002272115031279e-03, + 1.587775950414268373e-03, + 1.587547061688924501e-03, + 1.587315606449605327e-03, + 1.587081585211082236e-03, + 1.586844998492272603e-03, + 1.586605846816203143e-03, + 1.586364130710067816e-03, + 1.586119850705191604e-03, + 1.585873007337035290e-03, + 1.585623601145191982e-03, + 1.585371632673401431e-03, + 1.585117102469530944e-03, + 1.584860011085581022e-03, + 1.584600359077665199e-03, + 1.584338147006074437e-03, + 1.584073375435185189e-03, + 1.583806044933511875e-03, + 1.583536156073714471e-03, + 1.583263709432567281e-03, + 1.582988705590960025e-03, + 1.582711145133922775e-03, + 1.582431028650599500e-03, + 1.582148356734260205e-03, + 1.581863129982283593e-03, + 1.581575348996182425e-03, + 1.581285014381587266e-03, + 1.580992126748225011e-03, + 1.580696686709958786e-03, + 1.580398694884767134e-03, + 1.580098151894718641e-03, + 1.579795058366015954e-03, + 1.579489414928974969e-03, + 1.579181222217994687e-03, + 1.578870480871612291e-03, + 1.578557191532446334e-03, + 1.578241354847237940e-03, + 1.577922971466832807e-03, + 1.577602042046162122e-03, + 1.577278567244280076e-03, + 1.576952547724333508e-03, + 1.576623984153552793e-03, + 1.576292877203289578e-03, + 1.575959227548992493e-03, + 1.575623035870178743e-03, + 1.575284302850476180e-03, + 1.574943029177622430e-03, + 1.574599215543407869e-03, + 1.574252862643751080e-03, + 1.573903971178616671e-03, + 1.573552541852113289e-03, + 1.573198575372388016e-03, + 1.572842072451673644e-03, + 1.572483033806322279e-03, + 1.572121460156744198e-03, + 1.571757352227410014e-03, + 1.571390710746905107e-03, + 1.571021536447882129e-03, + 1.570649830067051035e-03, + 1.570275592345215512e-03, + 1.569898824027249123e-03, + 1.569519525862104201e-03, + 1.569137698602774333e-03, + 1.568753343006356162e-03, + 1.568366459834001679e-03, + 1.567977049850922998e-03, + 1.567585113826380858e-03, + 1.567190652533746861e-03, + 1.566793666750412178e-03, + 1.566394157257850871e-03, + 1.565992124841569582e-03, + 1.565587570291164131e-03, + 1.565180494400270073e-03, + 1.564770897966565304e-03, + 1.564358781791795215e-03, + 1.563944146681772686e-03, + 1.563526993446314991e-03, + 1.563107322899321208e-03, + 1.562685135858744899e-03, + 1.562260433146548571e-03, + 1.561833215588761354e-03, + 1.561403484015464697e-03, + 1.560971239260744653e-03, + 1.560536482162768216e-03, + 1.560099213563702651e-03, + 1.559659434309769704e-03, + 1.559217145251234980e-03, + 1.558772347242364789e-03, + 1.558325041141482526e-03, + 1.557875227810941133e-03, + 1.557422908117097726e-03, + 1.556968082930354795e-03, + 1.556510753125146546e-03, + 1.556050919579899001e-03, + 1.555588583177084424e-03, + 1.555123744803194865e-03, + 1.554656405348715060e-03, + 1.554186565708177504e-03, + 1.553714226780107807e-03, + 1.553239389467062212e-03, + 1.552762054675584438e-03, + 1.552282223316224768e-03, + 1.551799896303587747e-03, + 1.551315074556238079e-03, + 1.550827758996745510e-03, + 1.550337950551704345e-03, + 1.549845650151708510e-03, + 1.549350858731318812e-03, + 1.548853577229131889e-03, + 1.548353806587723838e-03, + 1.547851547753667989e-03, + 1.547346801677517564e-03, + 1.546839569313820419e-03, + 1.546329851621143113e-03, + 1.545817649561989160e-03, + 1.545302964102856927e-03, + 1.544785796214282782e-03, + 1.544266146870707738e-03, + 1.543744017050613197e-03, + 1.543219407736407542e-03, + 1.542692319914513305e-03, + 1.542162754575323799e-03, + 1.541630712713171680e-03, + 1.541096195326396162e-03, + 1.540559203417298786e-03, + 1.540019737992123685e-03, + 1.539477800061101820e-03, + 1.538933390638441874e-03, + 1.538386510742259993e-03, + 1.537837161394683657e-03, + 1.537285343621796379e-03, + 1.536731058453586320e-03, + 1.536174306924043866e-03, + 1.535615090071112618e-03, + 1.535053408936641259e-03, + 1.534489264566484164e-03, + 1.533922658010368695e-03, + 1.533353590322066072e-03, + 1.532782062559204239e-03, + 1.532208075783371730e-03, + 1.531631631060115933e-03, + 1.531052729458923364e-03, + 1.530471372053169568e-03, + 1.529887559920209980e-03, + 1.529301294141329837e-03, + 1.528712575801698201e-03, + 1.528121405990448848e-03, + 1.527527785800637762e-03, + 1.526931716329249858e-03, + 1.526333198677150846e-03, + 1.525732233949145776e-03, + 1.525128823253998770e-03, + 1.524522967704331541e-03, + 1.523914668416672183e-03, + 1.523303926511531932e-03, + 1.522690743113251427e-03, + 1.522075119350134930e-03, + 1.521457056354341046e-03, + 1.520836555261965766e-03, + 1.520213617213008643e-03, + 1.519588243351336363e-03, + 1.518960434824730013e-03, + 1.518330192784887690e-03, + 1.517697518387346213e-03, + 1.517062412791575022e-03, + 1.516424877160935623e-03, + 1.515784912662625000e-03, + 1.515142520467774269e-03, + 1.514497701751395991e-03, + 1.513850457692327576e-03, + 1.513200789473360952e-03, + 1.512548698281084491e-03, + 1.511894185306017881e-03, + 1.511237251742543388e-03, + 1.510577898788873549e-03, + 1.509916127647127062e-03, + 1.509251939523288677e-03, + 1.508585335627163002e-03, + 1.507916317172453219e-03, + 1.507244885376726393e-03, + 1.506571041461362290e-03, + 1.505894786651630797e-03, + 1.505216122176658089e-03, + 1.504535049269373941e-03, + 1.503851569166613856e-03, + 1.503165683108987011e-03, + 1.502477392341038456e-03, + 1.501786698111080192e-03, + 1.501093601671248633e-03, + 1.500398104277612813e-03, + 1.499700207189979444e-03, + 1.498999911672010878e-03, + 1.498297218991217735e-03, + 1.497592130418927241e-03, + 1.496884647230309687e-03, + 1.496174770704303617e-03, + 1.495462502123720344e-03, + 1.494747842775183888e-03, + 1.494030793949090640e-03, + 1.493311356939693718e-03, + 1.492589533045058942e-03, + 1.491865323567029278e-03, + 1.491138729811232857e-03, + 1.490409753087207660e-03, + 1.489678394708167765e-03, + 1.488944655991215199e-03, + 1.488208538257182944e-03, + 1.487470042830741192e-03, + 1.486729171040360046e-03, + 1.485985924218242733e-03, + 1.485240303700441833e-03, + 1.484492310826774708e-03, + 1.483741946940808328e-03, + 1.482989213389929737e-03, + 1.482234111525313966e-03, + 1.481476642701845970e-03, + 1.480716808278251381e-03, + 1.479954609617007387e-03, + 1.479190048084322350e-03, + 1.478423125050238804e-03, + 1.477653841888484487e-03, + 1.476882199976604828e-03, + 1.476108200695905055e-03, + 1.475331845431370392e-03, + 1.474553135571867292e-03, + 1.473772072509904911e-03, + 1.472988657641766293e-03, + 1.472202892367504906e-03, + 1.471414778090917534e-03, + 1.470624316219503076e-03, + 1.469831508164536060e-03, + 1.469036355341036279e-03, + 1.468238859167695937e-03, + 1.467439021067002379e-03, + 1.466636842465146367e-03, + 1.465832324792060463e-03, + 1.465025469481370671e-03, + 1.464216277970406413e-03, + 1.463404751700317190e-03, + 1.462590892115860509e-03, + 1.461774700665535243e-03, + 1.460956178801576209e-03, + 1.460135327979911884e-03, + 1.459312149660195630e-03, + 1.458486645305729149e-03, + 1.457658816383564397e-03, + 1.456828664364462171e-03, + 1.455996190722812526e-03, + 1.455161396936757506e-03, + 1.454324284488128912e-03, + 1.453484854862414043e-03, + 1.452643109548757425e-03, + 1.451799050040102198e-03, + 1.450952677832940746e-03, + 1.450103994427516356e-03, + 1.449253001327748197e-03, + 1.448399700041169517e-03, + 1.447544092079053411e-03, + 1.446686178956275558e-03, + 1.445825962191420698e-03, + 1.444963443306736001e-03, + 1.444098623828079684e-03, + 1.443231505285014031e-03, + 1.442362089210753352e-03, + 1.441490377142112377e-03, + 1.440616370619600579e-03, + 1.439740071187381194e-03, + 1.438861480393199008e-03, + 1.437980599788498326e-03, + 1.437097430928361381e-03, + 1.436211975371433315e-03, + 1.435324234680083718e-03, + 1.434434210420207790e-03, + 1.433541904161462913e-03, + 1.432647317477013212e-03, + 1.431750451943663129e-03, + 1.430851309141871518e-03, + 1.429949890655714999e-03, + 1.429046198072819436e-03, + 1.428140232984483537e-03, + 1.427231996985591899e-03, + 1.426321491674650789e-03, + 1.425408718653706393e-03, + 1.424493679528466682e-03, + 1.423576375908235277e-03, + 1.422656809405864605e-03, + 1.421734981637778460e-03, + 1.420810894224110122e-03, + 1.419884548788449309e-03, + 1.418955946957977049e-03, + 1.418025090363570200e-03, + 1.417091980639530397e-03, + 1.416156619423850332e-03, + 1.415219008357993013e-03, + 1.414279149087067618e-03, + 1.413337043259730620e-03, + 1.412392692528151089e-03, + 1.411446098548111740e-03, + 1.410497262978951255e-03, + 1.409546187483501183e-03, + 1.408592873728202379e-03, + 1.407637323383046464e-03, + 1.406679538121499273e-03, + 1.405719519620637036e-03, + 1.404757269561073300e-03, + 1.403792789626890193e-03, + 1.402826081505786958e-03, + 1.401857146888917105e-03, + 1.400885987471006374e-03, + 1.399912604950315437e-03, + 1.398937001028563139e-03, + 1.397959177411042505e-03, + 1.396979135806570432e-03, + 1.395996877927399875e-03, + 1.395012405489367505e-03, + 1.394025720211803949e-03, + 1.393036823817489110e-03, + 1.392045718032765365e-03, + 1.391052404587441718e-03, + 1.390056885214849530e-03, + 1.389059161651769224e-03, + 1.388059235638437229e-03, + 1.387057108918720531e-03, + 1.386052783239825458e-03, + 1.385046260352437979e-03, + 1.384037542010850986e-03, + 1.383026629972703434e-03, + 1.382013525999119122e-03, + 1.380998231854738785e-03, + 1.379980749307644847e-03, + 1.378961080129384627e-03, + 1.377939226094924367e-03, + 1.376915188982727727e-03, + 1.375888970574720444e-03, + 1.374860572656212265e-03, + 1.373829997016014041e-03, + 1.372797245446381138e-03, + 1.371762319742951845e-03, + 1.370725221704856018e-03, + 1.369685953134660216e-03, + 1.368644515838285522e-03, + 1.367600911625179707e-03, + 1.366555142308118398e-03, + 1.365507209703369649e-03, + 1.364457115630606345e-03, + 1.363404861912863699e-03, + 1.362350450376643117e-03, + 1.361293882851859942e-03, + 1.360235161171758017e-03, + 1.359174287173061258e-03, + 1.358111262695883880e-03, + 1.357046089583665129e-03, + 1.355978769683310881e-03, + 1.354909304845115792e-03, + 1.353837696922680469e-03, + 1.352763947773064123e-03, + 1.351688059256710194e-03, + 1.350610033237357663e-03, + 1.349529871582213223e-03, + 1.348447576161740944e-03, + 1.347363148849933757e-03, + 1.346276591524002723e-03, + 1.345187906064537709e-03, + 1.344097094355548808e-03, + 1.343004158284378949e-03, + 1.341909099741666169e-03, + 1.340811920621459838e-03, + 1.339712622821117661e-03, + 1.338611208241382656e-03, + 1.337507678786248495e-03, + 1.336402036363116283e-03, + 1.335294282882716057e-03, + 1.334184420259065373e-03, + 1.333072450409471471e-03, + 1.331958375254710392e-03, + 1.330842196718729463e-03, + 1.329723916728816875e-03, + 1.328603537215612305e-03, + 1.327481060113048800e-03, + 1.326356487358374900e-03, + 1.325229820892080473e-03, + 1.324101062658011212e-03, + 1.322970214603317891e-03, + 1.321837278678365726e-03, + 1.320702256836875105e-03, + 1.319565151035858707e-03, + 1.318425963235522833e-03, + 1.317284695399439801e-03, + 1.316141349494446460e-03, + 1.314995927490574370e-03, + 1.313848431361205708e-03, + 1.312698863082973743e-03, + 1.311547224635707751e-03, + 1.310393518002588064e-03, + 1.309237745169948520e-03, + 1.308079908127447993e-03, + 1.306920008867995140e-03, + 1.305758049387659939e-03, + 1.304594031685836096e-03, + 1.303427957765147154e-03, + 1.302259829631371253e-03, + 1.301089649293599637e-03, + 1.299917418764145365e-03, + 1.298743140058463948e-03, + 1.297566815195315545e-03, + 1.296388446196644834e-03, + 1.295208035087628282e-03, + 1.294025583896612130e-03, + 1.292841094655111742e-03, + 1.291654569398006762e-03, + 1.290466010163213465e-03, + 1.289275418991872330e-03, + 1.288082797928360394e-03, + 1.286888149020256125e-03, + 1.285691474318231440e-03, + 1.284492775876222353e-03, + 1.283292055751316871e-03, + 1.282089316003800095e-03, + 1.280884558697049490e-03, + 1.279677785897688838e-03, + 1.278468999675502586e-03, + 1.277258202103360388e-03, + 1.276045395257364556e-03, + 1.274830581216765922e-03, + 1.273613762063894022e-03, + 1.272394939884292399e-03, + 1.271174116766656155e-03, + 1.269951294802737192e-03, + 1.268726476087518335e-03, + 1.267499662719018391e-03, + 1.266270856798463237e-03, + 1.265040060430193663e-03, + 1.263807275721606175e-03, + 1.262572504783273123e-03, + 1.261335749728896083e-03, + 1.260097012675206758e-03, + 1.258856295742109225e-03, + 1.257613601052626814e-03, + 1.256368930732788478e-03, + 1.255122286911801617e-03, + 1.253873671721970331e-03, + 1.252623087298598706e-03, + 1.251370535780192477e-03, + 1.250116019308189714e-03, + 1.248859540027304725e-03, + 1.247601100085163990e-03, + 1.246340701632453821e-03, + 1.245078346823096007e-03, + 1.243814037813910410e-03, + 1.242547776764805351e-03, + 1.241279565838794303e-03, + 1.240009407201943421e-03, + 1.238737303023285889e-03, + 1.237463255474977389e-03, + 1.236187266732192026e-03, + 1.234909338973163087e-03, + 1.233629474379077228e-03, + 1.232347675134228210e-03, + 1.231063943425945127e-03, + 1.229778281444505452e-03, + 1.228490691383195971e-03, + 1.227201175438475192e-03, + 1.225909735809617516e-03, + 1.224616374699046299e-03, + 1.223321094312070176e-03, + 1.222023896857088628e-03, + 1.220724784545492011e-03, + 1.219423759591580468e-03, + 1.218120824212719829e-03, + 1.216815980629272443e-03, + 1.215509231064486155e-03, + 1.214200577744675366e-03, + 1.212890022899122374e-03, + 1.211577568760002126e-03, + 1.210263217562527289e-03, + 1.208946971544886664e-03, + 1.207628832948128743e-03, + 1.206308804016380069e-03, + 1.204986886996596953e-03, + 1.203663084138767349e-03, + 1.202337397695828680e-03, + 1.201009829923557672e-03, + 1.199680383080766171e-03, + 1.198349059429191414e-03, + 1.197015861233406264e-03, + 1.195680790761006985e-03, + 1.194343850282493123e-03, + 1.193005042071204613e-03, + 1.191664368403470972e-03, + 1.190321831558542771e-03, + 1.188977433818471947e-03, + 1.187631177468312154e-03, + 1.186283064795975442e-03, + 1.184933098092292962e-03, + 1.183581279650939731e-03, + 1.182227611768428988e-03, + 1.180872096744345085e-03, + 1.179514736880960977e-03, + 1.178155534483461787e-03, + 1.176794491859954779e-03, + 1.175431611321418185e-03, + 1.174066895181596903e-03, + 1.172700345757185731e-03, + 1.171331965367696437e-03, + 1.169961756335533443e-03, + 1.168589720985846372e-03, + 1.167215861646716960e-03, + 1.165840180649069940e-03, + 1.164462680326598882e-03, + 1.163083363015799364e-03, + 1.161702231056173677e-03, + 1.160319286789837255e-03, + 1.158934532561866704e-03, + 1.157547970720042415e-03, + 1.156159603615036129e-03, + 1.154769433600332440e-03, + 1.153377463032120593e-03, + 1.151983694269484220e-03, + 1.150588129674304195e-03, + 1.149190771611148260e-03, + 1.147791622447476810e-03, + 1.146390684553513653e-03, + 1.144987960302191804e-03, + 1.143583452069294642e-03, + 1.142177162233375901e-03, + 1.140769093175672934e-03, + 1.139359247280268689e-03, + 1.137947626934006059e-03, + 1.136534234526390087e-03, + 1.135119072449804157e-03, + 1.133702143099214656e-03, + 1.132283448872552179e-03, + 1.130862992170298667e-03, + 1.129440775395695569e-03, + 1.128016800954786351e-03, + 1.126591071256332136e-03, + 1.125163588711722154e-03, + 1.123734355735163046e-03, + 1.122303374743570869e-03, + 1.120870648156476130e-03, + 1.119436178396211127e-03, + 1.117999967887776816e-03, + 1.116562019058904391e-03, + 1.115122334339953367e-03, + 1.113680916163941725e-03, + 1.112237766966758410e-03, + 1.110792889186792542e-03, + 1.109346285265099289e-03, + 1.107897957645602839e-03, + 1.106447908774672471e-03, + 1.104996141101501810e-03, + 1.103542657077811323e-03, + 1.102087459158084893e-03, + 1.100630549799443613e-03, + 1.099171931461574237e-03, + 1.097711606606896137e-03, + 1.096249577700468504e-03, + 1.094785847209892764e-03, + 1.093320417605492126e-03, + 1.091853291360223325e-03, + 1.090384470949566902e-03, + 1.088913958851714771e-03, + 1.087441757547484567e-03, + 1.085967869520194744e-03, + 1.084492297255905922e-03, + 1.083015043243151137e-03, + 1.081536109973155711e-03, + 1.080055499939743154e-03, + 1.078573215639225214e-03, + 1.077089259570600949e-03, + 1.075603634235440054e-03, + 1.074116342137805026e-03, + 1.072627385784420944e-03, + 1.071136767684582880e-03, + 1.069644490350050731e-03, + 1.068150556295244377e-03, + 1.066654968037142629e-03, + 1.065157728095168744e-03, + 1.063658838991433280e-03, + 1.062158303250423149e-03, + 1.060656123399389547e-03, + 1.059152301967928797e-03, + 1.057646841488160813e-03, + 1.056139744494934011e-03, + 1.054631013525418951e-03, + 1.053120651119336237e-03, + 1.051608659818984706e-03, + 1.050095042169142331e-03, + 1.048579800717125855e-03, + 1.047062938012647236e-03, + 1.045544456608020738e-03, + 1.044024359058047568e-03, + 1.042502647919918510e-03, + 1.040979325753413863e-03, + 1.039454395120778963e-03, + 1.037927858586681906e-03, + 1.036399718718218317e-03, + 1.034869978085154645e-03, + 1.033338639259487324e-03, + 1.031805704815828102e-03, + 1.030271177331119978e-03, + 1.028735059384847756e-03, + 1.027197353558943933e-03, + 1.025658062437677896e-03, + 1.024117188607859318e-03, + 1.022574734658727785e-03, + 1.021030703181848714e-03, + 1.019485096771313715e-03, + 1.017937918023627611e-03, + 1.016389169537614988e-03, + 1.014838853914604936e-03, + 1.013286973758341066e-03, + 1.011733531674855304e-03, + 1.010178530272721597e-03, + 1.008621972162766214e-03, + 1.007063859958304318e-03, + 1.005504196275039137e-03, + 1.003942983730910605e-03, + 1.002380224946477225e-03, + 1.000815922544463733e-03, + 9.992500791499926878e-04, + 9.976826973906150441e-04, + 9.961137798962444497e-04, + 9.945433292990377670e-04, + 9.929713482336097446e-04, + 9.913978393369185255e-04, + 9.898228052481511559e-04, + 9.882462486089473638e-04, + 9.866681720632284724e-04, + 9.850885782572852203e-04, + 9.835074698396602342e-04, + 9.819248494611762176e-04, + 9.803407197751816318e-04, + 9.787550834371213510e-04, + 9.771679431047782232e-04, + 9.755793014383111255e-04, + 9.739891611001342923e-04, + 9.723975247549862706e-04, + 9.708043950697947200e-04, + 9.692097747138663649e-04, + 9.676136663587864891e-04, + 9.660160726783153943e-04, + 9.644169963485778102e-04, + 9.628164400479705207e-04, + 9.612144064570735677e-04, + 9.596108982586902579e-04, + 9.580059181380878560e-04, + 9.563994687825296426e-04, + 9.547915528816595899e-04, + 9.531821731273644504e-04, + 9.515713322136573138e-04, + 9.499590328369163488e-04, + 9.483452776956055119e-04, + 9.467300694905111209e-04, + 9.451134109246418910e-04, + 9.434953047031004571e-04, + 9.418757535333072617e-04, + 9.402547601248833521e-04, + 9.386323271895397925e-04, + 9.370084574412836619e-04, + 9.353831535963127780e-04, + 9.337564183729043501e-04, + 9.321282544916112195e-04, + 9.304986646751713282e-04, + 9.288676516483764228e-04, + 9.272352181383310696e-04, + 9.256013668741172032e-04, + 9.239661005872292160e-04, + 9.223294220110928986e-04, + 9.206913338813187088e-04, + 9.190518389357282261e-04, + 9.174109399142837875e-04, + 9.157686395589733448e-04, + 9.141249406140180894e-04, + 9.124798458257280366e-04, + 9.108333579425731494e-04, + 9.091854797150221174e-04, + 9.075362138957672204e-04, + 9.058855632396028978e-04, + 9.042335305033551672e-04, + 9.025801184459119816e-04, + 9.009253298284647903e-04, + 8.992691674140776761e-04, + 8.976116339678954148e-04, + 8.959527322573654102e-04, + 8.942924650517438409e-04, + 8.926308351225466882e-04, + 8.909678452431996467e-04, + 8.893034981893045135e-04, + 8.876377967385156971e-04, + 8.859707436704264850e-04, + 8.843023417667861003e-04, + 8.826325938113877044e-04, + 8.809615025899463154e-04, + 8.792890708903205272e-04, + 8.776153015023981270e-04, + 8.759401972179752058e-04, + 8.742637608309815648e-04, + 8.725859951373533211e-04, + 8.709069029349299088e-04, + 8.692264870236980244e-04, + 8.675447502055016026e-04, + 8.658616952842799076e-04, + 8.641773250659726645e-04, + 8.624916423583876791e-04, + 8.608046499714271105e-04, + 8.591163507169651730e-04, + 8.574267474087441613e-04, + 8.557358428625727511e-04, + 8.540436398962309144e-04, + 8.523501413293366712e-04, + 8.506553499835806022e-04, + 8.489592686825537865e-04, + 8.472619002518367052e-04, + 8.455632475188687045e-04, + 8.438633133129865927e-04, + 8.421621004656780181e-04, + 8.404596118101360794e-04, + 8.387558501814644562e-04, + 8.370508184169176682e-04, + 8.353445193554260868e-04, + 8.336369558378653585e-04, + 8.319281307070895823e-04, + 8.302180468078081436e-04, + 8.285067069866620428e-04, + 8.267941140920627820e-04, + 8.250802709744177715e-04, + 8.233651804860119341e-04, + 8.216488454808906121e-04, + 8.199312688150760817e-04, + 8.182124533464557722e-04, + 8.164924019346625700e-04, + 8.147711174412937190e-04, + 8.130486027297978468e-04, + 8.113248606653513653e-04, + 8.095998941151225830e-04, + 8.078737059479605383e-04, + 8.061462990346598707e-04, + 8.044176762478410158e-04, + 8.026878404618257397e-04, + 8.009567945528683983e-04, + 7.992245413990333152e-04, + 7.974910838800755184e-04, + 7.957564248776678815e-04, + 7.940205672752739460e-04, + 7.922835139580389598e-04, + 7.905452678130085601e-04, + 7.888058317290086441e-04, + 7.870652085965270826e-04, + 7.853234013079385834e-04, + 7.835804127573901996e-04, + 7.818362458406661296e-04, + 7.800909034554717779e-04, + 7.783443885010696804e-04, + 7.765967038787405068e-04, + 7.748478524912734856e-04, + 7.730978372432416833e-04, + 7.713466610410231461e-04, + 7.695943267927244638e-04, + 7.678408374080663863e-04, + 7.660861957986016399e-04, + 7.643304048775553328e-04, + 7.625734675599058366e-04, + 7.608153867622169516e-04, + 7.590561654028703600e-04, + 7.572958064019431109e-04, + 7.555343126811219683e-04, + 7.537716871637451530e-04, + 7.520079327750582143e-04, + 7.502430524417559544e-04, + 7.484770490922383005e-04, + 7.467099256566499862e-04, + 7.449416850667600967e-04, + 7.431723302560293981e-04, + 7.414018641594548624e-04, + 7.396302897137995184e-04, + 7.378576098574648415e-04, + 7.360838275303726837e-04, + 7.343089456741962087e-04, + 7.325329672322321729e-04, + 7.307558951492845907e-04, + 7.289777323718924168e-04, + 7.271984818482059472e-04, + 7.254181465278664726e-04, + 7.236367293622359125e-04, + 7.218542333042732165e-04, + 7.200706613084113068e-04, + 7.182860163308312732e-04, + 7.165003013291397146e-04, + 7.147135192626357780e-04, + 7.129256730921981842e-04, + 7.111367657801505706e-04, + 7.093468002905019667e-04, + 7.075557795888171237e-04, + 7.057637066420983365e-04, + 7.039705844190154030e-04, + 7.021764158897818081e-04, + 7.003812040260292814e-04, + 6.985849518010461053e-04, + 6.967876621896074369e-04, + 6.949893381680561895e-04, + 6.931899827141685920e-04, + 6.913895988072021100e-04, + 6.895881894281594496e-04, + 6.877857575593103153e-04, + 6.859823061844628946e-04, + 6.841778382889998535e-04, + 6.823723568597935517e-04, + 6.805658648850841782e-04, + 6.787583653547086269e-04, + 6.769498612599396002e-04, + 6.751403555935631302e-04, + 6.733298513497031545e-04, + 6.715183515240713162e-04, + 6.697058591138288367e-04, + 6.678923771175148500e-04, + 6.660779085350644006e-04, + 6.642624563680989006e-04, + 6.624460236193944378e-04, + 6.606286132933159982e-04, + 6.588102283956566788e-04, + 6.569908719335072582e-04, + 6.551705469155360293e-04, + 6.533492563516618036e-04, + 6.515270032533276726e-04, + 6.497037906333792516e-04, + 6.478796215059358767e-04, + 6.460544988866310807e-04, + 6.442284257924791278e-04, + 6.424014052417617148e-04, + 6.405734402542499067e-04, + 6.387445338510893203e-04, + 6.369146890546690436e-04, + 6.350839088888603776e-04, + 6.332521963788942127e-04, + 6.314195545512257205e-04, + 6.295859864338193904e-04, + 6.277514950557794250e-04, + 6.259160834478296083e-04, + 6.240797546417798779e-04, + 6.222425116708057242e-04, + 6.204043575694898234e-04, + 6.185652953737259775e-04, + 6.167253281205987677e-04, + 6.148844588486194768e-04, + 6.130426905976022736e-04, + 6.112000264085322649e-04, + 6.093564693238110678e-04, + 6.075120223870848551e-04, + 6.056666886433175389e-04, + 6.038204711386296582e-04, + 6.019733729205356022e-04, + 6.001253970378135063e-04, + 5.982765465404249125e-04, + 5.964268244795367787e-04, + 5.945762339078229956e-04, + 5.927247778789102505e-04, + 5.908724594478729662e-04, + 5.890192816708559979e-04, + 5.871652476053589118e-04, + 5.853103603101068560e-04, + 5.834546228449207818e-04, + 5.815980382709612807e-04, + 5.797406096506009738e-04, + 5.778823400472922391e-04, + 5.760232325258112657e-04, + 5.741632901521314183e-04, + 5.723025159932893392e-04, + 5.704409131176375663e-04, + 5.685784845946997932e-04, + 5.667152334950569187e-04, + 5.648511628906225431e-04, + 5.629862758543121778e-04, + 5.611205754603232950e-04, + 5.592540647840090178e-04, + 5.573867469017484500e-04, + 5.555186248911879107e-04, + 5.536497018311162515e-04, + 5.517799808013307402e-04, + 5.499094648828833920e-04, + 5.480381571579486964e-04, + 5.461660607096999100e-04, + 5.442931786225446537e-04, + 5.424195139820043492e-04, + 5.405450698745753327e-04, + 5.386698493879821248e-04, + 5.367938556110010305e-04, + 5.349170916335338651e-04, + 5.330395605464885835e-04, + 5.311612654418112643e-04, + 5.292822094127646411e-04, + 5.274023955534370674e-04, + 5.255218269590181211e-04, + 5.236405067258435983e-04, + 5.217584379512951167e-04, + 5.198756237336849733e-04, + 5.179920671724903315e-04, + 5.161077713681853875e-04, + 5.142227394223180224e-04, + 5.123369744373400172e-04, + 5.104504795168527320e-04, + 5.085632577654712562e-04, + 5.066753122887409245e-04, + 5.047866461931768906e-04, + 5.028972625865424416e-04, + 5.010071645773060299e-04, + 4.991163552751424993e-04, + 4.972248377905397372e-04, + 4.953326152350979138e-04, + 4.934396907213916801e-04, + 4.915460673628406062e-04, + 4.896517482739600651e-04, + 4.877567365702263581e-04, + 4.858610353679431956e-04, + 4.839646477844947495e-04, + 4.820675769382104536e-04, + 4.801698259482343025e-04, + 4.782713979347719417e-04, + 4.763722960189616475e-04, + 4.744725233227377716e-04, + 4.725720829690867753e-04, + 4.706709780819052537e-04, + 4.687692117858762819e-04, + 4.668667872067577048e-04, + 4.649637074709938298e-04, + 4.630599757062202858e-04, + 4.611555950407124349e-04, + 4.592505686036663440e-04, + 4.573448995252480070e-04, + 4.554385909364948998e-04, + 4.535316459691866343e-04, + 4.516240677560949220e-04, + 4.497158594308497829e-04, + 4.478070241278088990e-04, + 4.458975649823056805e-04, + 4.439874851304735160e-04, + 4.420767877093264913e-04, + 4.401654758566299905e-04, + 4.382535527109324082e-04, + 4.363410214118596192e-04, + 4.344278850996048072e-04, + 4.325141469152082429e-04, + 4.305998100006103559e-04, + 4.286848774985086742e-04, + 4.267693525524399525e-04, + 4.248532383066056157e-04, + 4.229365379061235646e-04, + 4.210192544968895069e-04, + 4.191013912254528697e-04, + 4.171829512392580892e-04, + 4.152639376865190600e-04, + 4.133443537160810073e-04, + 4.114242024776732691e-04, + 4.095034871217787041e-04, + 4.075822107994942628e-04, + 4.056603766627849082e-04, + 4.037379878643565468e-04, + 4.018150475575119388e-04, + 3.998915588964505334e-04, + 3.979675250359231511e-04, + 3.960429491315210857e-04, + 3.941178343395458378e-04, + 3.921921838168752157e-04, + 3.902660007212151953e-04, + 3.883392882109642326e-04, + 3.864120494450830508e-04, + 3.844842875833423264e-04, + 3.825560057861929100e-04, + 3.806272072146308976e-04, + 3.786978950304476475e-04, + 3.767680723960982123e-04, + 3.748377424745661930e-04, + 3.729069084296611904e-04, + 3.709755734256225284e-04, + 3.690437406276356061e-04, + 3.671114132012643716e-04, + 3.651785943127029655e-04, + 3.632452871290317554e-04, + 3.613114948176946958e-04, + 3.593772205467946654e-04, + 3.574424674851323894e-04, + 3.555072388020698304e-04, + 3.535715376676162197e-04, + 3.516353672522428211e-04, + 3.496987307271452001e-04, + 3.477616312640995121e-04, + 3.458240720353377112e-04, + 3.438860562137912246e-04, + 3.419475869729649681e-04, + 3.400086674868404188e-04, + 3.380693009299137242e-04, + 3.361294904774974907e-04, + 3.341892393051488662e-04, + 3.322485505891858374e-04, + 3.303074275062907916e-04, + 3.283658732338099731e-04, + 3.264238909496182828e-04, + 3.244814838319827780e-04, + 3.225386550598187060e-04, + 3.205954078125548465e-04, + 3.186517452699965769e-04, + 3.167076706125808764e-04, + 3.147631870212411805e-04, + 3.128182976772758673e-04, + 3.108730057625978946e-04, + 3.089273144596004135e-04, + 3.069812269510256882e-04, + 3.050347464202579390e-04, + 3.030878760509749339e-04, + 3.011406190274455480e-04, + 2.991929785343930455e-04, + 2.972449577568180294e-04, + 2.952965598804697446e-04, + 2.933477880912772505e-04, + 2.913986455756464389e-04, + 2.894491355205017756e-04, + 2.874992611131895891e-04, + 2.855490255413460155e-04, + 2.835984319931514059e-04, + 2.816474836571940970e-04, + 2.796961837223362404e-04, + 2.777445353779690786e-04, + 2.757925418138312866e-04, + 2.738402062200947867e-04, + 2.718875317872262412e-04, + 2.699345217060279819e-04, + 2.679811791679318281e-04, + 2.660275073644787240e-04, + 2.640735094876140213e-04, + 2.621191887297264563e-04, + 2.601645482835127326e-04, + 2.582095913420597586e-04, + 2.562543210986630428e-04, + 2.542987407470870655e-04, + 2.523428534814240072e-04, + 2.503866624959635899e-04, + 2.484301709854434739e-04, + 2.464733821449189904e-04, + 2.445162991696657267e-04, + 2.425589252552215111e-04, + 2.406012635976844608e-04, + 2.386433173931416882e-04, + 2.366850898381872516e-04, + 2.347265841295245238e-04, + 2.327678034642653780e-04, + 2.308087510397960178e-04, + 2.288494300536392018e-04, + 2.268898437037114167e-04, + 2.249299951881866203e-04, + 2.229698877053609869e-04, + 2.210095244539070445e-04, + 2.190489086327407516e-04, + 2.170880434408846437e-04, + 2.151269320777214015e-04, + 2.131655777428611979e-04, + 2.112039836360055231e-04, + 2.092421529572007790e-04, + 2.072800889067044888e-04, + 2.053177946848497445e-04, + 2.033552734923433085e-04, + 2.013925285298697170e-04, + 1.994295629986078482e-04, + 1.974663800996604693e-04, + 1.955029830343524462e-04, + 1.935393750042702630e-04, + 1.915755592111699187e-04, + 1.896115388568397756e-04, + 1.876473171433581662e-04, + 1.856828972729122765e-04, + 1.837182824478818472e-04, + 1.817534758706585178e-04, + 1.797884807439022680e-04, + 1.778233002704054043e-04, + 1.758579376530009723e-04, + 1.738923960945993209e-04, + 1.719266787984911915e-04, + 1.699607889678154558e-04, + 1.679947298058179152e-04, + 1.660285045161082832e-04, + 1.640621163020851252e-04, + 1.620955683674578200e-04, + 1.601288639158458663e-04, + 1.581620061510799111e-04, + 1.561949982770663599e-04, + 1.542278434976497375e-04, + 1.522605450168711073e-04, + 1.502931060388310557e-04, + 1.483255297675524042e-04, + 1.463578194072398769e-04, + 1.443899781621408337e-04, + 1.424220092364099626e-04, + 1.404539158343680782e-04, + 1.384857011603628837e-04, + 1.365173684186342308e-04, + 1.345489208136153663e-04, + 1.325803615495768249e-04, + 1.306116938309271605e-04, + 1.286429208620785318e-04, + 1.266740458473076809e-04, + 1.247050719910151927e-04, + 1.227360024975880724e-04, + 1.207668405712628788e-04, + 1.187975894163844823e-04, + 1.168282522372684394e-04, + 1.148588322380644371e-04, + 1.128893326230142653e-04, + 1.109197565962718801e-04, + 1.089501073619844341e-04, + 1.069803881241567514e-04, + 1.050106020866895049e-04, + 1.030407524536808549e-04, + 1.010708424288957728e-04, + 9.910087521602240065e-05, + 9.713085401893217861e-05, + 9.516078204114610548e-05, + 9.319066248613801728e-05, + 9.122049855737294089e-05, + 8.925029345816968499e-05, + 8.728005039178449978e-05, + 8.530977256122948668e-05, + 8.333946316953066557e-05, + 8.136912541959212422e-05, + 7.939876251405738954e-05, + 7.742837765556943278e-05, + 7.545797404663250150e-05, + 7.348755488947626908e-05, + 7.151712338631280416e-05, + 6.954668273920074724e-05, + 6.757623614990780668e-05, + 6.560578682021346803e-05, + 6.363533795155134276e-05, + 6.166489274531297530e-05, + 5.969445440270962762e-05, + 5.772402612463599494e-05, + 5.575361111192848987e-05, + 5.378321256522780618e-05, + 5.181283368484232969e-05, + 4.984247767100665946e-05, + 4.787214772374438852e-05, + 4.590184704273098608e-05, + 4.393157882755256959e-05, + 4.196134627756860401e-05, + 3.999115259177524493e-05, + 3.802100096906326350e-05, + 3.605089460808157923e-05, + 3.408083670709998646e-05, + 3.211083046431143672e-05, + 3.014087907743182579e-05, + 2.817098574422143738e-05, + 2.620115366190917754e-05, + 2.423138602749472825e-05, + 2.226168603778715861e-05, + 2.029205688931200530e-05, + 1.832250177817432426e-05, + 1.635302390031706629e-05, + 1.438362645134011522e-05, + 1.241431262658308874e-05, + 1.044508562094437830e-05, + 8.475948629139506044e-06, + 6.506904845564221363e-06, + 4.537957464201476393e-06, + 2.569109678660213323e-06, + 6.003646824775062486e-07, +-1.368274331413500359e-06, +-3.336804170381396974e-06, +-5.305221642057767636e-06, +-7.273523554474121192e-06, +-9.241706715979155552e-06, +-1.120976793541964306e-05, +-1.317770402188214429e-05, +-1.514551178482982850e-05, +-1.711318803423943452e-05, +-1.908072958034293427e-05, +-2.104813323376448437e-05, +-2.301539580565726436e-05, +-2.498251410744512484e-05, +-2.694948495095961707e-05, +-2.891630514857676851e-05, +-3.088297151295885969e-05, +-3.284948085719126748e-05, +-3.481582999491927448e-05, +-3.678201574004606110e-05, +-3.874803490708881855e-05, +-4.071388431087713056e-05, +-4.267956076668894590e-05, +-4.464506109038814330e-05, +-4.661038209816638968e-05, +-4.857552060667924142e-05, +-5.054047343318349242e-05, +-5.250523739527910015e-05, +-5.446980931104572054e-05, +-5.643418599917915482e-05, +-5.839836427873423781e-05, +-6.036234096930457146e-05, +-6.232611289094026105e-05, +-6.428967686428465342e-05, +-6.625302971053515660e-05, +-6.821616825114257699e-05, +-7.017908930834134166e-05, +-7.214178970484784622e-05, +-7.410426626382208757e-05, +-7.606651580896063428e-05, +-7.802853516463272108e-05, +-7.999032115562283208e-05, +-8.195187060731065132e-05, +-8.391318034558924611e-05, +-8.587424719704473287e-05, +-8.783506798869929416e-05, +-8.979563954814694788e-05, +-9.175595870364688347e-05, +-9.371602228408414613e-05, +-9.567582711866920431e-05, +-9.763537003751112677e-05, +-9.959464787114217349e-05, +-1.015536574506974615e-04, +-1.035123956080509104e-04, +-1.054708591755154060e-04, +-1.074290449861963316e-04, +-1.093869498736920712e-04, +-1.113445706722282600e-04, +-1.133019042167969287e-04, +-1.152589473428961323e-04, +-1.172156968866694464e-04, +-1.191721496850384562e-04, +-1.211283025754494196e-04, +-1.230841523960069493e-04, +-1.250396959856112859e-04, +-1.269949301837005836e-04, +-1.289498518303878853e-04, +-1.309044577665962412e-04, +-1.328587448337596049e-04, +-1.348127098742192174e-04, +-1.367663497307053313e-04, +-1.387196612469110792e-04, +-1.406726412671903067e-04, +-1.426252866365197605e-04, +-1.445775942005910559e-04, +-1.465295608059474764e-04, +-1.484811832997268003e-04, +-1.504324585297973959e-04, +-1.523833833448927973e-04, +-1.543339545943582731e-04, +-1.562841691283273335e-04, +-1.582340237976399822e-04, +-1.601835154540246181e-04, +-1.621326409498383418e-04, +-1.640813971382048392e-04, +-1.660297808731057794e-04, +-1.679777890093433828e-04, +-1.699254184022384439e-04, +-1.718726659082034402e-04, +-1.738195283842251782e-04, +-1.757660026882601478e-04, +-1.777120856789363395e-04, +-1.796577742156868723e-04, +-1.816030651588897203e-04, +-1.835479553696066639e-04, +-1.854924417097223116e-04, +-1.874365210420778365e-04, +-1.893801902302157006e-04, +-1.913234461385168608e-04, +-1.932662856323323912e-04, +-1.952087055777317038e-04, +-1.971507028416353093e-04, +-1.990922742919512913e-04, +-2.010334167972762016e-04, +-2.029741272272478055e-04, +-2.049144024522453001e-04, +-2.068542393435251375e-04, +-2.087936347733561706e-04, +-2.107325856147653539e-04, +-2.126710887416706931e-04, +-2.146091410290180718e-04, +-2.165467393525269521e-04, +-2.184838805888217794e-04, +-2.204205616155717094e-04, +-2.223567793112323778e-04, +-2.242925305551819954e-04, +-2.262278122278567371e-04, +-2.281626212104944371e-04, +-2.300969543853147831e-04, +-2.320308086354371609e-04, +-2.339641808450126828e-04, +-2.358970678991906050e-04, +-2.378294666838184641e-04, +-2.397613740859640661e-04, +-2.416927869936210988e-04, +-2.436237022956687988e-04, +-2.455541168819644891e-04, +-2.474840276434773145e-04, +-2.494134314720353250e-04, +-2.513423252605006555e-04, +-2.532707059026915444e-04, +-2.551985702935572701e-04, +-2.571259153289271577e-04, +-2.590527379056406293e-04, +-2.609790349216422885e-04, +-2.629048032759431059e-04, +-2.648300398683212336e-04, +-2.667547415998903441e-04, +-2.686789053725861516e-04, +-2.706025280895590023e-04, +-2.725256066548768568e-04, +-2.744481379736613577e-04, +-2.763701189522202646e-04, +-2.782915464977928836e-04, +-2.802124175186900381e-04, +-2.821327289244196729e-04, +-2.840524776254396569e-04, +-2.859716605332911395e-04, +-2.878902745607299558e-04, +-2.898083166214765016e-04, +-2.917257836303469758e-04, +-2.936426725033896646e-04, +-2.955589801576297745e-04, +-2.974747035112058793e-04, +-2.993898394835026807e-04, +-3.013043849948518764e-04, +-3.032183369669311473e-04, +-3.051316923222465046e-04, +-3.070444479846979181e-04, +-3.089566008792867988e-04, +-3.108681479320721426e-04, +-3.127790860702674039e-04, +-3.146894122223686482e-04, +-3.165991233179065952e-04, +-3.185082162875774820e-04, +-3.204166880633760404e-04, +-3.223245355783469434e-04, +-3.242317557667576274e-04, +-3.261383455640201210e-04, +-3.280443019068203362e-04, +-3.299496217330835364e-04, +-3.318543019816816561e-04, +-3.337583395929455865e-04, +-3.356617315083752057e-04, +-3.375644746706020277e-04, +-3.394665660235174093e-04, +-3.413680025121989333e-04, +-3.432687810830785673e-04, +-3.451688986836982313e-04, +-3.470683522628395220e-04, +-3.489671387706550637e-04, +-3.508652551584199013e-04, +-3.527626983786655073e-04, +-3.546594653853091814e-04, +-3.565555531334050634e-04, +-3.584509585792751592e-04, +-3.603456786806470886e-04, +-3.622397103963942021e-04, +-3.641330506866804302e-04, +-3.660256965130797083e-04, +-3.679176448382935963e-04, +-3.698088926264919891e-04, +-3.716994368430170752e-04, +-3.735892744545252588e-04, +-3.754784024291062052e-04, +-3.773668177360474602e-04, +-3.792545173459532792e-04, +-3.811414982308866032e-04, +-3.830277573641156265e-04, +-3.849132917202410819e-04, +-3.867980982753401148e-04, +-3.886821740067046105e-04, +-3.905655158929817071e-04, +-3.924481209142969065e-04, +-3.943299860519763021e-04, +-3.962111082889158576e-04, +-3.980914846090903721e-04, +-3.999711119981059896e-04, +-4.018499874429449776e-04, +-4.037281079317265524e-04, +-4.056054704542115747e-04, +-4.074820720015119298e-04, +-4.093579095660610369e-04, +-4.112329801417333283e-04, +-4.131072807237733428e-04, +-4.149808083089673544e-04, +-4.168535598953934640e-04, +-4.187255324825550650e-04, +-4.205967230715084533e-04, +-4.224671286646198036e-04, +-4.243367462656935933e-04, +-4.262055728800600435e-04, +-4.280736055145409661e-04, +-4.299408411771596860e-04, +-4.318072768776879669e-04, +-4.336729096271545419e-04, +-4.355377364382185135e-04, +-4.374017543248900626e-04, +-4.392649603026531260e-04, +-4.411273513885980487e-04, +-4.429889246011792106e-04, +-4.448496769603395469e-04, +-4.467096054876432544e-04, +-4.485687072060320088e-04, +-4.504269791399506239e-04, +-4.522844183154785106e-04, +-4.541410217600882256e-04, +-4.559967865027698833e-04, +-4.578517095741619107e-04, +-4.597057880062683415e-04, +-4.615590188327900944e-04, +-4.634113990888437851e-04, +-4.652629258110894451e-04, +-4.671135960378997119e-04, +-4.689634068089120530e-04, +-4.708123551655684280e-04, +-4.726604381508326368e-04, +-4.745076528091505294e-04, +-4.763539961865423801e-04, +-4.781994653307271369e-04, +-4.800440572908829754e-04, +-4.818877691177690008e-04, +-4.837305978638647302e-04, +-4.855725405831176362e-04, +-4.874135943311174324e-04, +-4.892537561650161680e-04, +-4.910930231436592529e-04, +-4.929313923275458311e-04, +-4.947688607785463450e-04, +-4.966054255604039798e-04, +-4.984410837384487588e-04, +-5.002758323795548261e-04, +-5.021096685522856212e-04, +-5.039425893267965176e-04, +-5.057745917750175110e-04, +-5.076056729704032022e-04, +-5.094358299880708159e-04, +-5.112650599049131748e-04, +-5.130933597993726433e-04, +-5.149207267515562699e-04, +-5.167471578433324979e-04, +-5.185726501582860627e-04, +-5.203972007814426041e-04, +-5.222208067998014439e-04, +-5.240434653018532238e-04, +-5.258651733779460408e-04, +-5.276859281200126615e-04, +-5.295057266216872914e-04, +-5.313245659784463035e-04, +-5.331424432873516084e-04, +-5.349593556471932262e-04, +-5.367753001586058389e-04, +-5.385902739238309159e-04, +-5.404042740468499627e-04, +-5.422172976335009643e-04, +-5.440293417912470163e-04, +-5.458404036292976470e-04, +-5.476504802587416326e-04, +-5.494595687922991479e-04, +-5.512676663444576177e-04, +-5.530747700315884847e-04, +-5.548808769716777854e-04, +-5.566859842846866475e-04, +-5.584900890920748914e-04, +-5.602931885173328313e-04, +-5.620952796856965635e-04, +-5.638963597241203199e-04, +-5.656964257613529036e-04, +-5.674954749280739733e-04, +-5.692935043566433760e-04, +-5.710905111812786305e-04, +-5.728864925379774072e-04, +-5.746814455646730027e-04, +-5.764753674010096932e-04, +-5.782682551884617793e-04, +-5.800601060704184799e-04, +-5.818509171921506466e-04, +-5.836406857005349428e-04, +-5.854294087445319770e-04, +-5.872170834749649085e-04, +-5.890037070442665033e-04, +-5.907892766070184159e-04, +-5.925737893194687198e-04, +-5.943572423398943557e-04, +-5.961396328283306238e-04, +-5.979209579466959745e-04, +-5.997012148589133318e-04, +-6.014804007306702666e-04, +-6.032585127295590766e-04, +-6.050355480251824953e-04, +-6.068115037889288289e-04, +-6.085863771940992414e-04, +-6.103601654160186688e-04, +-6.121328656318170266e-04, +-6.139044750205407746e-04, +-6.156749907632854063e-04, +-6.174444100429162668e-04, +-6.192127300443908862e-04, +-6.209799479544886877e-04, +-6.227460609619322020e-04, +-6.245110662575134846e-04, +-6.262749610338571096e-04, +-6.280377424855408414e-04, +-6.297994078092298588e-04, +-6.315599542034323758e-04, +-6.333193788686294207e-04, +-6.350776790073926889e-04, +-6.368348518241567519e-04, +-6.385908945253812542e-04, +-6.403458043194708987e-04, +-6.420995784169044674e-04, +-6.438522140301967652e-04, +-6.456037083736268110e-04, +-6.473540586637194401e-04, +-6.491032621190058038e-04, +-6.508513159597973134e-04, +-6.525982174086612797e-04, +-6.543439636901485614e-04, +-6.560885520307590873e-04, +-6.578319796590663231e-04, +-6.595742438056396420e-04, +-6.613153417032068470e-04, +-6.630552705864256212e-04, +-6.647940276920020304e-04, +-6.665316102588166166e-04, +-6.682680155276866322e-04, +-6.700032407414988544e-04, +-6.717372831453154039e-04, +-6.734701399861637346e-04, +-6.752018085131427771e-04, +-6.769322859775452365e-04, +-6.786615696325995527e-04, +-6.803896567337756451e-04, +-6.821165445385184156e-04, +-6.838422303063760102e-04, +-6.855667112991127923e-04, +-6.872899847804807933e-04, +-6.890120480163468893e-04, +-6.907328982748064256e-04, +-6.924525328259624728e-04, +-6.941709489420377173e-04, +-6.958881438975013118e-04, +-6.976041149688385918e-04, +-6.993188594346716382e-04, +-7.010323745758782147e-04, +-7.027446576753312336e-04, +-7.044557060182028750e-04, +-7.061655168917077390e-04, +-7.078740875852152772e-04, +-7.095814153904144838e-04, +-7.112874976008926823e-04, +-7.129923315126338252e-04, +-7.146959144237653326e-04, +-7.163982436345150496e-04, +-7.180993164472912601e-04, +-7.197991301668135505e-04, +-7.214976820998709236e-04, +-7.231949695554946208e-04, +-7.248909898448734459e-04, +-7.265857402815159615e-04, +-7.282792181810326731e-04, +-7.299714208612380524e-04, +-7.316623456422496332e-04, +-7.333519898464414995e-04, +-7.350403507981862448e-04, +-7.367274258243118558e-04, +-7.384132122538506100e-04, +-7.400977074179931068e-04, +-7.417809086502109980e-04, +-7.434628132861886840e-04, +-7.451434186639746679e-04, +-7.468227221237586436e-04, +-7.485007210079924929e-04, +-7.501774126615028257e-04, +-7.518527944312777172e-04, +-7.535268636665723094e-04, +-7.551996177190328438e-04, +-7.568710539424765684e-04, +-7.585411696930033018e-04, +-7.602099623291131781e-04, +-7.618774292114944679e-04, +-7.635435677031286381e-04, +-7.652083751694106978e-04, +-7.668718489778921345e-04, +-7.685339864985881765e-04, +-7.701947851037158500e-04, +-7.718542421678040253e-04, +-7.735123550678228710e-04, +-7.751691211829596405e-04, +-7.768245378947241653e-04, +-7.784786025870810188e-04, +-7.801313126462160880e-04, +-7.817826654606664606e-04, +-7.834326584214201718e-04, +-7.850812889217115070e-04, +-7.867285543571621645e-04, +-7.883744521257227090e-04, +-7.900189796277769802e-04, +-7.916621342661168308e-04, +-7.933039134456833274e-04, +-7.949443145740120323e-04, +-7.965833350609879742e-04, +-7.982209723188055323e-04, +-7.998572237620432462e-04, +-8.014920868077860059e-04, +-8.031255588754041995e-04, +-8.047576373867070193e-04, +-8.063883197658702545e-04, +-8.080176034395879702e-04, +-8.096454858368600047e-04, +-8.112719643890972448e-04, +-8.128970365302136750e-04, +-8.145206996965743355e-04, +-8.161429513267627611e-04, +-8.177637888620487060e-04, +-8.193832097459879645e-04, +-8.210012114245846763e-04, +-8.226177913463916152e-04, +-8.242329469622703634e-04, +-8.258466757256788422e-04, +-8.274589750924194517e-04, +-8.290698425207613685e-04, +-8.306792754715449549e-04, +-8.322872714079710982e-04, +-8.338938277957124497e-04, +-8.354989421030322534e-04, +-8.371026118005593739e-04, +-8.387048343614144979e-04, +-8.403056072613109646e-04, +-8.419049279783474664e-04, +-8.435027939931211312e-04, +-8.450992027888394121e-04, +-8.466941518510668176e-04, +-8.482876386680600388e-04, +-8.498796607303312324e-04, +-8.514702155311342857e-04, +-8.530593005661996206e-04, +-8.546469133337119672e-04, +-8.562330513343891858e-04, +-8.578177120715826639e-04, +-8.594008930510785814e-04, +-8.609825917811987422e-04, +-8.625628057729186433e-04, +-8.641415325396550797e-04, +-8.657187695974090423e-04, +-8.672945144647084721e-04, +-8.688687646627042118e-04, +-8.704415177151519000e-04, +-8.720127711481634718e-04, +-8.735825224906254441e-04, +-8.751507692740117823e-04, +-8.767175090321537240e-04, +-8.782827393017171537e-04, +-8.798464576217796549e-04, +-8.814086615341460134e-04, +-8.829693485831157642e-04, +-8.845285163155821792e-04, +-8.860861622811482766e-04, +-8.876422840319186545e-04, +-8.891968791226053086e-04, +-8.907499451106426665e-04, +-8.923014795559734572e-04, +-8.938514800211685160e-04, +-8.953999440715202426e-04, +-8.969468692748504800e-04, +-8.984922532016151406e-04, +-9.000360934250080727e-04, +-9.015783875207271977e-04, +-9.031191330672518492e-04, +-9.046583276456054415e-04, +-9.061959688394649734e-04, +-9.077320542352650037e-04, +-9.092665814219962062e-04, +-9.107995479913132478e-04, +-9.123309515376410404e-04, +-9.138607896579721036e-04, +-9.153890599519734668e-04, +-9.169157600220925958e-04, +-9.184408874733558398e-04, +-9.199644399134782611e-04, +-9.214864149529640317e-04, +-9.230068102049080250e-04, +-9.245256232851370871e-04, +-9.260428518121460685e-04, +-9.275584934072007154e-04, +-9.290725456943120823e-04, +-9.305850062999919360e-04, +-9.320958728536768954e-04, +-9.336051429874893653e-04, +-9.351128143362041423e-04, +-9.366188845373278875e-04, +-9.381233512311899824e-04, +-9.396262120607611415e-04, +-9.411274646717782046e-04, +-9.426271067126887337e-04, +-9.441251358347849121e-04, +-9.456215496920077372e-04, +-9.471163459410509959e-04, +-9.486095222414289187e-04, +-9.501010762554536280e-04, +-9.515910056479944456e-04, +-9.530793080869255597e-04, +-9.545659812427218340e-04, +-9.560510227887697573e-04, +-9.575344304011317378e-04, +-9.590162017586507286e-04, +-9.604963345430550699e-04, +-9.619748264387644170e-04, +-9.634516751329902460e-04, +-9.649268783158324557e-04, +-9.664004336801049200e-04, +-9.678723389214115985e-04, +-9.693425917382699191e-04, +-9.708111898319065139e-04, +-9.722781309063604355e-04, +-9.737434126685907097e-04, +-9.752070328282745658e-04, +-9.766689890979185669e-04, +-9.781292791929520683e-04, +-9.795879008315060404e-04, +-9.810448517347104651e-04, +-9.825001296263097695e-04, +-9.839537322330811110e-04, +-9.854056572846153685e-04, +-9.868559025132883026e-04, +-9.883044656543338476e-04, +-9.897513444459317151e-04, +-9.911965366290328375e-04, +-9.926400399474424180e-04, +-9.940818521479420113e-04, +-9.955219709800711657e-04, +-9.969603941962922218e-04, +-9.983971195519009741e-04, +-9.998321448051435481e-04, +-1.001265467717183657e-03, +-1.002697086051876872e-03, +-1.004126997576167005e-03, +-1.005555200059859511e-03, +-1.006981691275593083e-03, +-1.008406468998938096e-03, +-1.009829531008343481e-03, +-1.011250875085264013e-03, +-1.012670499013960381e-03, +-1.014088400581622355e-03, +-1.015504577578446197e-03, +-1.016919027797459673e-03, +-1.018331749034614205e-03, +-1.019742739088850799e-03, +-1.021151995762082905e-03, +-1.022559516858965924e-03, +-1.023965300187314187e-03, +-1.025369343557766804e-03, +-1.026771644783898256e-03, +-1.028172201682335703e-03, +-1.029571012072533470e-03, +-1.030968073777020029e-03, +-1.032363384621205011e-03, +-1.033756942433442958e-03, +-1.035148745045164293e-03, +-1.036538790290669971e-03, +-1.037927076007229494e-03, +-1.039313600035195184e-03, +-1.040698360217794018e-03, +-1.042081354401243852e-03, +-1.043462580434837122e-03, +-1.044842036170771709e-03, +-1.046219719464230305e-03, +-1.047595628173487309e-03, +-1.048969760159699583e-03, +-1.050342113287175329e-03, +-1.051712685423016741e-03, +-1.053081474437518551e-03, +-1.054448478203962687e-03, +-1.055813694598583576e-03, +-1.057177121500632762e-03, +-1.058538756792484076e-03, +-1.059898598359438043e-03, +-1.061256644089863263e-03, +-1.062612891875121821e-03, +-1.063967339609715648e-03, +-1.065319985191083996e-03, +-1.066670826519715764e-03, +-1.068019861499232325e-03, +-1.069367088036215357e-03, +-1.070712504040304425e-03, +-1.072056107424245331e-03, +-1.073397896103882310e-03, +-1.074737867997934034e-03, +-1.076076021028400621e-03, +-1.077412353120197610e-03, +-1.078746862201433515e-03, +-1.080079546203202524e-03, +-1.081410403059676010e-03, +-1.082739430708195985e-03, +-1.084066627089102933e-03, +-1.085391990145820372e-03, +-1.086715517824957643e-03, +-1.088037208076124288e-03, +-1.089357058852028935e-03, +-1.090675068108570584e-03, +-1.091991233804662752e-03, +-1.093305553902326711e-03, +-1.094618026366778012e-03, +-1.095928649166230890e-03, +-1.097237420272134190e-03, +-1.098544337658967970e-03, +-1.099849399304331753e-03, +-1.101152603189072465e-03, +-1.102453947296954621e-03, +-1.103753429615055839e-03, +-1.105051048133556075e-03, +-1.106346800845717671e-03, +-1.107640685747942168e-03, +-1.108932700839860078e-03, +-1.110222844124170204e-03, +-1.111511113606712935e-03, +-1.112797507296571725e-03, +-1.114082023205903525e-03, +-1.115364659350048500e-03, +-1.116645413747484718e-03, +-1.117924284419908373e-03, +-1.119201269392220343e-03, +-1.120476366692312606e-03, +-1.121749574351432526e-03, +-1.123020890403968186e-03, +-1.124290312887439060e-03, +-1.125557839842572776e-03, +-1.126823469313252861e-03, +-1.128087199346644283e-03, +-1.129349027993014568e-03, +-1.130608953305831804e-03, +-1.131866973341842924e-03, +-1.133123086160913676e-03, +-1.134377289826116230e-03, +-1.135629582403780780e-03, +-1.136879961963489479e-03, +-1.138128426577856124e-03, +-1.139374974322912137e-03, +-1.140619603277770672e-03, +-1.141862311524877724e-03, +-1.143103097149821088e-03, +-1.144341958241414277e-03, +-1.145578892891792582e-03, +-1.146813899196235482e-03, +-1.148046975253259232e-03, +-1.149278119164710539e-03, +-1.150507329035592224e-03, +-1.151734602974149521e-03, +-1.152959939091961804e-03, +-1.154183335503778871e-03, +-1.155404790327604642e-03, +-1.156624301684784552e-03, +-1.157841867699837927e-03, +-1.159057486500545591e-03, +-1.160271156218049176e-03, +-1.161482874986633851e-03, +-1.162692640944004794e-03, +-1.163900452230941978e-03, +-1.165106306991674657e-03, +-1.166310203373681223e-03, +-1.167512139527668823e-03, +-1.168712113607628866e-03, +-1.169910123770927885e-03, +-1.171106168178139267e-03, +-1.172300244993154271e-03, +-1.173492352383145171e-03, +-1.174682488518653941e-03, +-1.175870651573452611e-03, +-1.177056839724613087e-03, +-1.178241051152571339e-03, +-1.179423284041103978e-03, +-1.180603536577137010e-03, +-1.181781806951075859e-03, +-1.182958093356618022e-03, +-1.184132393990733985e-03, +-1.185304707053733576e-03, +-1.186475030749246885e-03, +-1.187643363284293435e-03, +-1.188809702869159882e-03, +-1.189974047717468975e-03, +-1.191136396046253276e-03, +-1.192296746075815301e-03, +-1.193455096029795177e-03, +-1.194611444135262792e-03, +-1.195765788622560810e-03, +-1.196918127725376006e-03, +-1.198068459680835763e-03, +-1.199216782729346526e-03, +-1.200363095114673163e-03, +-1.201507395084015946e-03, +-1.202649680887849003e-03, +-1.203789950780105285e-03, +-1.204928203018020873e-03, +-1.206064435862203715e-03, +-1.207198647576706706e-03, +-1.208330836428896278e-03, +-1.209461000689514851e-03, +-1.210589138632763668e-03, +-1.211715248536154475e-03, +-1.212839328680594088e-03, +-1.213961377350451613e-03, +-1.215081392833417722e-03, +-1.216199373420599620e-03, +-1.217315317406489177e-03, +-1.218429223089022339e-03, +-1.219541088769567853e-03, +-1.220650912752751409e-03, +-1.221758693346760303e-03, +-1.222864428863190776e-03, +-1.223968117616910109e-03, +-1.225069757926346538e-03, +-1.226169348113326403e-03, +-1.227266886503053551e-03, +-1.228362371424173522e-03, +-1.229455801208739719e-03, +-1.230547174192309686e-03, +-1.231636488713798959e-03, +-1.232723743115561946e-03, +-1.233808935743457630e-03, +-1.234892064946719031e-03, +-1.235973129078020210e-03, +-1.237052126493549346e-03, +-1.238129055552872337e-03, +-1.239203914619006319e-03, +-1.240276702058498151e-03, +-1.241347416241244447e-03, +-1.242416055540698436e-03, +-1.243482618333706683e-03, +-1.244547103000573493e-03, +-1.245609507925140051e-03, +-1.246669831494649988e-03, +-1.247728072099803806e-03, +-1.248784228134857321e-03, +-1.249838297997469443e-03, +-1.250890280088765927e-03, +-1.251940172813439554e-03, +-1.252987974579579042e-03, +-1.254033683798761421e-03, +-1.255077298886129880e-03, +-1.256118818260210969e-03, +-1.257158240343125366e-03, +-1.258195563560411158e-03, +-1.259230786341105149e-03, +-1.260263907117841744e-03, +-1.261294924326582332e-03, +-1.262323836406941194e-03, +-1.263350641802011166e-03, +-1.264375338958343255e-03, +-1.265397926326000634e-03, +-1.266418402358638652e-03, +-1.267436765513346112e-03, +-1.268453014250753253e-03, +-1.269467147034992506e-03, +-1.270479162333787177e-03, +-1.271489058618307686e-03, +-1.272496834363264374e-03, +-1.273502488046926581e-03, +-1.274506018151130241e-03, +-1.275507423161106142e-03, +-1.276506701565751842e-03, +-1.277503851857480751e-03, +-1.278498872532208468e-03, +-1.279491762089406343e-03, +-1.280482519032074369e-03, +-1.281471141866828136e-03, +-1.282457629103752250e-03, +-1.283441979256501591e-03, +-1.284424190842340351e-03, +-1.285404262382020598e-03, +-1.286382192399856440e-03, +-1.287357979423791243e-03, +-1.288331621985259936e-03, +-1.289303118619257969e-03, +-1.290272467864428700e-03, +-1.291239668262903146e-03, +-1.292204718360388891e-03, +-1.293167616706237524e-03, +-1.294128361853279403e-03, +-1.295086952358015563e-03, +-1.296043386780466140e-03, +-1.296997663684219164e-03, +-1.297949781636530521e-03, +-1.298899739208159154e-03, +-1.299847534973463340e-03, +-1.300793167510456419e-03, +-1.301736635400673869e-03, +-1.302677937229253539e-03, +-1.303617071584988124e-03, +-1.304554037060202867e-03, +-1.305488832250858988e-03, +-1.306421455756479099e-03, +-1.307351906180253230e-03, +-1.308280182128991999e-03, +-1.309206282212981324e-03, +-1.310130205046255644e-03, +-1.311051949246434855e-03, +-1.311971513434723223e-03, +-1.312888896235922401e-03, +-1.313804096278536372e-03, +-1.314717112194624003e-03, +-1.315627942619876454e-03, +-1.316536586193600049e-03, +-1.317443041558791954e-03, +-1.318347307362013757e-03, +-1.319249382253456738e-03, +-1.320149264886993912e-03, +-1.321046953920145765e-03, +-1.321942448013954706e-03, +-1.322835745833239856e-03, +-1.323726846046387141e-03, +-1.324615747325418686e-03, +-1.325502448346069142e-03, +-1.326386947787638014e-03, +-1.327269244333152296e-03, +-1.328149336669232463e-03, +-1.329027223486151446e-03, +-1.329902903477897091e-03, +-1.330776375342059177e-03, +-1.331647637779878428e-03, +-1.332516689496318499e-03, +-1.333383529199954525e-03, +-1.334248155603014966e-03, +-1.335110567421463577e-03, +-1.335970763374864749e-03, +-1.336828742186460918e-03, +-1.337684502583220709e-03, +-1.338538043295716849e-03, +-1.339389363058280562e-03, +-1.340238460608799689e-03, +-1.341085334688951573e-03, +-1.341929984044072524e-03, +-1.342772407423152830e-03, +-1.343612603578862126e-03, +-1.344450571267612497e-03, +-1.345286309249455478e-03, +-1.346119816288122604e-03, +-1.346951091151105421e-03, +-1.347780132609527771e-03, +-1.348606939438228838e-03, +-1.349431510415728458e-03, +-1.350253844324278288e-03, +-1.351073939949856825e-03, +-1.351891796082035175e-03, +-1.352707411514195200e-03, +-1.353520785043424999e-03, +-1.354331915470415688e-03, +-1.355140801599695379e-03, +-1.355947442239409731e-03, +-1.356751836201496942e-03, +-1.357553982301550706e-03, +-1.358353879358884832e-03, +-1.359151526196587237e-03, +-1.359946921641406970e-03, +-1.360740064523821439e-03, +-1.361530953678088008e-03, +-1.362319587942119109e-03, +-1.363105966157580895e-03, +-1.363890087169900836e-03, +-1.364671949828192687e-03, +-1.365451552985304413e-03, +-1.366228895497864377e-03, +-1.367003976226170312e-03, +-1.367776794034330709e-03, +-1.368547347790132753e-03, +-1.369315636365108250e-03, +-1.370081658634590433e-03, +-1.370845413477591451e-03, +-1.371606899776878045e-03, +-1.372366116419012749e-03, +-1.373123062294260210e-03, +-1.373877736296620373e-03, +-1.374630137323914775e-03, +-1.375380264277662520e-03, +-1.376128116063130794e-03, +-1.376873691589398626e-03, +-1.377616989769251711e-03, +-1.378358009519253758e-03, +-1.379096749759714177e-03, +-1.379833209414737302e-03, +-1.380567387412210247e-03, +-1.381299282683676709e-03, +-1.382028894164567248e-03, +-1.382756220794044899e-03, +-1.383481261515016447e-03, +-1.384204015274173192e-03, +-1.384924481022011770e-03, +-1.385642657712763889e-03, +-1.386358544304447729e-03, +-1.387072139758856659e-03, +-1.387783443041595019e-03, +-1.388492453122014154e-03, +-1.389199168973239513e-03, +-1.389903589572218795e-03, +-1.390605713899688550e-03, +-1.391305540940095684e-03, +-1.392003069681768982e-03, +-1.392698299116759512e-03, +-1.393391228240968560e-03, +-1.394081856054043113e-03, +-1.394770181559417928e-03, +-1.395456203764382100e-03, +-1.396139921679967607e-03, +-1.396821334321005255e-03, +-1.397500440706173682e-03, +-1.398177239857904168e-03, +-1.398851730802431375e-03, +-1.399523912569840831e-03, +-1.400193784193974611e-03, +-1.400861344712485759e-03, +-1.401526593166876238e-03, +-1.402189528602411058e-03, +-1.402850150068176392e-03, +-1.403508456617099959e-03, +-1.404164447305871009e-03, +-1.404818121195074978e-03, +-1.405469477348988798e-03, +-1.406118514835825051e-03, +-1.406765232727566527e-03, +-1.407409630100013489e-03, +-1.408051706032772618e-03, +-1.408691459609322932e-03, +-1.409328889916922761e-03, +-1.409963996046650079e-03, +-1.410596777093461700e-03, +-1.411227232156090283e-03, +-1.411855360337116970e-03, +-1.412481160742937994e-03, +-1.413104632483801323e-03, +-1.413725774673817073e-03, +-1.414344586430828481e-03, +-1.414961066876608588e-03, +-1.415575215136751159e-03, +-1.416187030340650306e-03, +-1.416796511621565323e-03, +-1.417403658116574931e-03, +-1.418008468966642762e-03, +-1.418610943316525206e-03, +-1.419211080314837330e-03, +-1.419808879114062847e-03, +-1.420404338870501215e-03, +-1.420997458744294954e-03, +-1.421588237899463689e-03, +-1.422176675503888758e-03, +-1.422762770729217368e-03, +-1.423346522751048858e-03, +-1.423927930748777274e-03, +-1.424506993905648618e-03, +-1.425083711408807897e-03, +-1.425658082449203718e-03, +-1.426230106221685646e-03, +-1.426799781924932217e-03, +-1.427367108761480857e-03, +-1.427932085937753904e-03, +-1.428494712664016113e-03, +-1.429054988154381802e-03, +-1.429612911626873409e-03, +-1.430168482303334964e-03, +-1.430721699409478066e-03, +-1.431272562174915487e-03, +-1.431821069833101763e-03, +-1.432367221621348588e-03, +-1.432911016780873169e-03, +-1.433452454556723632e-03, +-1.433991534197875083e-03, +-1.434528254957093867e-03, +-1.435062616091086103e-03, +-1.435594616860430680e-03, +-1.436124256529548032e-03, +-1.436651534366740904e-03, +-1.437176449644228396e-03, +-1.437699001638063131e-03, +-1.438219189628201508e-03, +-1.438737012898455569e-03, +-1.439252470736563467e-03, +-1.439765562434110538e-03, +-1.440276287286562911e-03, +-1.440784644593305023e-03, +-1.441290633657571311e-03, +-1.441794253786492621e-03, +-1.442295504291090345e-03, +-1.442794384486310692e-03, +-1.443290893690893492e-03, +-1.443785031227566920e-03, +-1.444276796422887905e-03, +-1.444766188607350980e-03, +-1.445253207115306752e-03, +-1.445737851284999197e-03, +-1.446220120458605127e-03, +-1.446700013982157211e-03, +-1.447177531205585824e-03, +-1.447652671482756994e-03, +-1.448125434171391741e-03, +-1.448595818633115076e-03, +-1.449063824233482248e-03, +-1.449529450341918886e-03, +-1.449992696331748763e-03, +-1.450453561580230871e-03, +-1.450912045468486780e-03, +-1.451368147381576533e-03, +-1.451821866708437716e-03, +-1.452273202841912123e-03, +-1.452722155178791299e-03, +-1.453168723119693806e-03, +-1.453612906069212890e-03, +-1.454054703435840373e-03, +-1.454494114631954722e-03, +-1.454931139073841655e-03, +-1.455365776181728830e-03, +-1.455798025379724482e-03, +-1.456227886095852768e-03, +-1.456655357762070896e-03, +-1.457080439814228577e-03, +-1.457503131692094262e-03, +-1.457923432839343001e-03, +-1.458341342703581159e-03, +-1.458756860736345118e-03, +-1.459169986393026898e-03, +-1.459580719132997110e-03, +-1.459989058419527107e-03, +-1.460395003719798523e-03, +-1.460798554504907617e-03, +-1.461199710249875671e-03, +-1.461598470433663095e-03, +-1.461994834539126920e-03, +-1.462388802053045302e-03, +-1.462780372466148749e-03, +-1.463169545273051812e-03, +-1.463556319972311856e-03, +-1.463940696066413005e-03, +-1.464322673061778726e-03, +-1.464702250468707424e-03, +-1.465079427801473273e-03, +-1.465454204578248588e-03, +-1.465826580321160418e-03, +-1.466196554556236341e-03, +-1.466564126813428527e-03, +-1.466929296626657327e-03, +-1.467292063533728440e-03, +-1.467652427076390591e-03, +-1.468010386800348973e-03, +-1.468365942255203888e-03, +-1.468719092994495191e-03, +-1.469069838575719211e-03, +-1.469418178560277137e-03, +-1.469764112513496273e-03, +-1.470107640004682508e-03, +-1.470448760607027082e-03, +-1.470787473897674667e-03, +-1.471123779457711661e-03, +-1.471457676872144288e-03, +-1.471789165729946516e-03, +-1.472118245623973759e-03, +-1.472444916151058715e-03, +-1.472769176911976462e-03, +-1.473091027511416046e-03, +-1.473410467558004984e-03, +-1.473727496664331603e-03, +-1.474042114446901886e-03, +-1.474354320526170261e-03, +-1.474664114526521392e-03, +-1.474971496076299231e-03, +-1.475276464807768421e-03, +-1.475579020357138367e-03, +-1.475879162364567357e-03, +-1.476176890474165809e-03, +-1.476472204333944670e-03, +-1.476765103595896510e-03, +-1.477055587915949986e-03, +-1.477343656953962036e-03, +-1.477629310373744986e-03, +-1.477912547843046164e-03, +-1.478193369033566767e-03, +-1.478471773620948200e-03, +-1.478747761284762751e-03, +-1.479021331708558692e-03, +-1.479292484579798487e-03, +-1.479561219589901715e-03, +-1.479827536434243562e-03, +-1.480091434812132916e-03, +-1.480352914426817787e-03, +-1.480611974985516317e-03, +-1.480868616199379484e-03, +-1.481122837783490449e-03, +-1.481374639456913998e-03, +-1.481624020942629971e-03, +-1.481870981967591590e-03, +-1.482115522262684049e-03, +-1.482357641562736432e-03, +-1.482597339606545571e-03, +-1.482834616136846553e-03, +-1.483069470900307951e-03, +-1.483301903647580395e-03, +-1.483531914133243233e-03, +-1.483759502115816666e-03, +-1.483984667357790164e-03, +-1.484207409625590800e-03, +-1.484427728689606671e-03, +-1.484645624324153505e-03, +-1.484861096307522801e-03, +-1.485074144421955370e-03, +-1.485284768453612719e-03, +-1.485492968192634287e-03, +-1.485698743433120760e-03, +-1.485902093973080719e-03, +-1.486103019614511524e-03, +-1.486301520163356383e-03, +-1.486497595429492422e-03, +-1.486691245226763863e-03, +-1.486882469372956435e-03, +-1.487071267689818628e-03, +-1.487257640003041741e-03, +-1.487441586142262484e-03, +-1.487623105941089218e-03, +-1.487802199237068992e-03, +-1.487978865871695134e-03, +-1.488153105690425033e-03, +-1.488324918542668646e-03, +-1.488494304281771366e-03, +-1.488661262765044596e-03, +-1.488825793853746022e-03, +-1.488987897413095217e-03, +-1.489147573312253701e-03, +-1.489304821424328835e-03, +-1.489459641626398115e-03, +-1.489612033799476640e-03, +-1.489761997828535980e-03, +-1.489909533602500058e-03, +-1.490054641014244927e-03, +-1.490197319960596825e-03, +-1.490337570342332605e-03, +-1.490475392064193397e-03, +-1.490610785034844274e-03, +-1.490743749166930634e-03, +-1.490874284377030276e-03, +-1.491002390585692864e-03, +-1.491128067717393960e-03, +-1.491251315700575786e-03, +-1.491372134467633566e-03, +-1.491490523954897528e-03, +-1.491606484102669982e-03, +-1.491720014855192579e-03, +-1.491831116160658886e-03, +-1.491939787971209401e-03, +-1.492046030242944127e-03, +-1.492149842935903276e-03, +-1.492251226014085913e-03, +-1.492350179445429579e-03, +-1.492446703201842813e-03, +-1.492540797259158097e-03, +-1.492632461597169806e-03, +-1.492721696199629435e-03, +-1.492808501054224569e-03, +-1.492892876152592538e-03, +-1.492974821490327579e-03, +-1.493054337066968039e-03, +-1.493131422886001796e-03, +-1.493206078954859971e-03, +-1.493278305284921051e-03, +-1.493348101891524759e-03, +-1.493415468793940840e-03, +-1.493480406015396372e-03, +-1.493542913583063196e-03, +-1.493602991528061386e-03, +-1.493660639885447967e-03, +-1.493715858694235135e-03, +-1.493768647997384619e-03, +-1.493819007841790114e-03, +-1.493866938278304605e-03, +-1.493912439361710226e-03, +-1.493955511150755555e-03, +-1.493996153708112900e-03, +-1.494034367100402364e-03, +-1.494070151398202255e-03, +-1.494103506676017429e-03, +-1.494134433012298153e-03, +-1.494162930489448130e-03, +-1.494188999193804546e-03, +-1.494212639215646747e-03, +-1.494233850649195590e-03, +-1.494252633592619292e-03, +-1.494268988148015438e-03, +-1.494282914421435479e-03, +-1.494294412522860450e-03, +-1.494303482566215497e-03, +-1.494310124669358166e-03, +-1.494314338954103342e-03, +-1.494316125546183783e-03, +-1.494315484575280692e-03, +-1.494312416175008111e-03, +-1.494306920482920721e-03, +-1.494298997640511675e-03, +-1.494288647793202843e-03, +-1.494275871090359987e-03, +-1.494260667685276935e-03, +-1.494243037735190757e-03, +-1.494222981401267889e-03, +-1.494200498848608904e-03, +-1.494175590246242654e-03, +-1.494148255767145357e-03, +-1.494118495588209368e-03, +-1.494086309890273103e-03, +-1.494051698858095889e-03, +-1.494014662680373138e-03, +-1.493975201549725944e-03, +-1.493933315662714523e-03, +-1.493889005219818048e-03, +-1.493842270425450479e-03, +-1.493793111487954923e-03, +-1.493741528619595832e-03, +-1.493687522036575045e-03, +-1.493631091959012709e-03, +-1.493572238610953997e-03, +-1.493510962220378222e-03, +-1.493447263019179096e-03, +-1.493381141243181002e-03, +-1.493312597132132047e-03, +-1.493241630929702983e-03, +-1.493168242883481135e-03, +-1.493092433244988179e-03, +-1.493014202269653257e-03, +-1.492933550216832489e-03, +-1.492850477349805076e-03, +-1.492764983935763535e-03, +-1.492677070245826279e-03, +-1.492586736555022008e-03, +-1.492493983142295340e-03, +-1.492398810290519393e-03, +-1.492301218286473880e-03, +-1.492201207420852703e-03, +-1.492098777988269806e-03, +-1.491993930287252666e-03, +-1.491886664620241431e-03, +-1.491776981293583279e-03, +-1.491664880617546733e-03, +-1.491550362906300838e-03, +-1.491433428477929478e-03, +-1.491314077654435060e-03, +-1.491192310761717699e-03, +-1.491068128129583240e-03, +-1.490941530091763204e-03, +-1.490812516985870343e-03, +-1.490681089153446338e-03, +-1.490547246939920821e-03, +-1.490410990694637176e-03, +-1.490272320770843649e-03, +-1.490131237525683591e-03, +-1.489987741320210205e-03, +-1.489841832519371795e-03, +-1.489693511492020447e-03, +-1.489542778610905083e-03, +-1.489389634252679491e-03, +-1.489234078797890392e-03, +-1.489076112630976795e-03, +-1.488915736140287343e-03, +-1.488752949718052769e-03, +-1.488587753760407806e-03, +-1.488420148667373615e-03, +-1.488250134842871233e-03, +-1.488077712694707913e-03, +-1.487902882634583408e-03, +-1.487725645078090408e-03, +-1.487546000444712156e-03, +-1.487363949157813553e-03, +-1.487179491644651571e-03, +-1.486992628336365491e-03, +-1.486803359667990135e-03, +-1.486611686078435262e-03, +-1.486417608010507469e-03, +-1.486221125910870081e-03, +-1.486022240230096920e-03, +-1.485820951422624605e-03, +-1.485617259946785725e-03, +-1.485411166264782824e-03, +-1.485202670842683190e-03, +-1.484991774150457022e-03, +-1.484778476661940353e-03, +-1.484562778854834611e-03, +-1.484344681210725920e-03, +-1.484124184215080550e-03, +-1.483901288357214335e-03, +-1.483675994130331495e-03, +-1.483448302031511404e-03, +-1.483218212561691679e-03, +-1.482985726225673814e-03, +-1.482750843532136846e-03, +-1.482513564993634316e-03, +-1.482273891126560227e-03, +-1.482031822451180484e-03, +-1.481787359491646338e-03, +-1.481540502775941914e-03, +-1.481291252835932994e-03, +-1.481039610207323222e-03, +-1.480785575429698336e-03, +-1.480529149046495374e-03, +-1.480270331604993357e-03, +-1.480009123656342990e-03, +-1.479745525755544978e-03, +-1.479479538461450465e-03, +-1.479211162336760378e-03, +-1.478940397948039307e-03, +-1.478667245865686666e-03, +-1.478391706663955340e-03, +-1.478113780920953420e-03, +-1.477833469218625120e-03, +-1.477550772142762056e-03, +-1.477265690283013433e-03, +-1.476978224232842465e-03, +-1.476688374589589688e-03, +-1.476396141954392080e-03, +-1.476101526932286278e-03, +-1.475804530132093870e-03, +-1.475505152166486878e-03, +-1.475203393651988194e-03, +-1.474899255208949678e-03, +-1.474592737461536546e-03, +-1.474283841037777676e-03, +-1.473972566569516172e-03, +-1.473658914692417381e-03, +-1.473342886045986245e-03, +-1.473024481273554724e-03, +-1.472703701022286564e-03, +-1.472380545943150626e-03, +-1.472055016690944958e-03, +-1.471727113924316092e-03, +-1.471396838305697894e-03, +-1.471064190501351465e-03, +-1.470729171181366004e-03, +-1.470391781019647539e-03, +-1.470052020693915452e-03, +-1.469709890885687736e-03, +-1.469365392280319160e-03, +-1.469018525566969822e-03, +-1.468669291438593665e-03, +-1.468317690591969260e-03, +-1.467963723727693740e-03, +-1.467607391550151573e-03, +-1.467248694767514993e-03, +-1.466887634091810578e-03, +-1.466524210238827081e-03, +-1.466158423928166183e-03, +-1.465790275883240316e-03, +-1.465419766831231683e-03, +-1.465046897503151022e-03, +-1.464671668633776022e-03, +-1.464294080961699900e-03, +-1.463914135229311009e-03, +-1.463531832182755552e-03, +-1.463147172572009345e-03, +-1.462760157150820367e-03, +-1.462370786676709397e-03, +-1.461979061911007106e-03, +-1.461584983618821089e-03, +-1.461188552569024808e-03, +-1.460789769534289687e-03, +-1.460388635291074919e-03, +-1.459985150619587998e-03, +-1.459579316303839802e-03, +-1.459171133131596017e-03, +-1.458760601894430048e-03, +-1.458347723387653193e-03, +-1.457932498410347824e-03, +-1.457514927765390369e-03, +-1.457095012259411850e-03, +-1.456672752702799179e-03, +-1.456248149909717716e-03, +-1.455821204698091531e-03, +-1.455391917889620104e-03, +-1.454960290309727580e-03, +-1.454526322787631299e-03, +-1.454090016156304056e-03, +-1.453651371252446351e-03, +-1.453210388916514580e-03, +-1.452767069992770034e-03, +-1.452321415329164414e-03, +-1.451873425777408348e-03, +-1.451423102193006090e-03, +-1.450970445435145577e-03, +-1.450515456366806202e-03, +-1.450058135854677714e-03, +-1.449598484769202287e-03, +-1.449136503984590129e-03, +-1.448672194378730366e-03, +-1.448205556833295771e-03, +-1.447736592233692674e-03, +-1.447265301469024970e-03, +-1.446791685432152665e-03, +-1.446315745019683416e-03, +-1.445837481131905531e-03, +-1.445356894672870582e-03, +-1.444873986550354811e-03, +-1.444388757675826819e-03, +-1.443901208964516519e-03, +-1.443411341335336428e-03, +-1.442919155710940425e-03, +-1.442424653017703590e-03, +-1.441927834185685988e-03, +-1.441428700148681243e-03, +-1.440927251844208732e-03, +-1.440423490213459806e-03, +-1.439917416201355691e-03, +-1.439409030756537509e-03, +-1.438898334831315321e-03, +-1.438385329381727763e-03, +-1.437870015367515584e-03, +-1.437352393752088908e-03, +-1.436832465502589900e-03, +-1.436310231589835954e-03, +-1.435785692988358724e-03, +-1.435258850676354031e-03, +-1.434729705635697048e-03, +-1.434198258852022309e-03, +-1.433664511314574740e-03, +-1.433128464016301387e-03, +-1.432590117953857914e-03, +-1.432049474127561122e-03, +-1.431506533541423206e-03, +-1.430961297203100146e-03, +-1.430413766123953510e-03, +-1.429863941319019878e-03, +-1.429311823806978530e-03, +-1.428757414610205660e-03, +-1.428200714754750307e-03, +-1.427641725270296404e-03, +-1.427080447190194655e-03, +-1.426516881551517183e-03, +-1.425951029394915276e-03, +-1.425382891764762940e-03, +-1.424812469709040887e-03, +-1.424239764279419587e-03, +-1.423664776531219150e-03, +-1.423087507523377671e-03, +-1.422507958318528420e-03, +-1.421926129982932410e-03, +-1.421342023586474488e-03, +-1.420755640202711698e-03, +-1.420166980908846386e-03, +-1.419576046785679148e-03, +-1.418982838917694483e-03, +-1.418387358393000293e-03, +-1.417789606303302731e-03, +-1.417189583743987949e-03, +-1.416587291814058345e-03, +-1.415982731616112402e-03, +-1.415375904256426431e-03, +-1.414766810844828590e-03, +-1.414155452494872140e-03, +-1.413541830323634214e-03, +-1.412925945451839853e-03, +-1.412307799003843572e-03, +-1.411687392107621774e-03, +-1.411064725894719835e-03, +-1.410439801500321501e-03, +-1.409812620063226763e-03, +-1.409183182725835381e-03, +-1.408551490634118259e-03, +-1.407917544937686621e-03, +-1.407281346789748854e-03, +-1.406642897347087960e-03, +-1.406002197770064594e-03, +-1.405359249222714853e-03, +-1.404714052872579411e-03, +-1.404066609890811503e-03, +-1.403416921452174107e-03, +-1.402764988734995274e-03, +-1.402110812921201306e-03, +-1.401454395196267966e-03, +-1.400795736749272085e-03, +-1.400134838772883542e-03, +-1.399471702463298255e-03, +-1.398806329020321022e-03, +-1.398138719647334721e-03, +-1.397468875551235697e-03, +-1.396796797942545651e-03, +-1.396122488035333575e-03, +-1.395445947047192986e-03, +-1.394767176199317822e-03, +-1.394086176716462103e-03, +-1.393402949826886162e-03, +-1.392717496762463760e-03, +-1.392029818758561523e-03, +-1.391339917054130234e-03, +-1.390647792891676858e-03, +-1.389953447517198190e-03, +-1.389256882180289927e-03, +-1.388558098134065784e-03, +-1.387857096635153158e-03, +-1.387153878943744954e-03, +-1.386448446323572045e-03, +-1.385740800041847113e-03, +-1.385030941369362438e-03, +-1.384318871580410976e-03, +-1.383604591952830153e-03, +-1.382888103767951783e-03, +-1.382169408310597938e-03, +-1.381448506869213449e-03, +-1.380725400735658380e-03, +-1.380000091205319922e-03, +-1.379272579577125405e-03, +-1.378542867153513887e-03, +-1.377810955240376094e-03, +-1.377076845147160887e-03, +-1.376340538186788956e-03, +-1.375602035675706821e-03, +-1.374861338933804859e-03, +-1.374118449284514017e-03, +-1.373373368054756375e-03, +-1.372626096574892235e-03, +-1.371876636178823118e-03, +-1.371124988203929317e-03, +-1.370371153991038890e-03, +-1.369615134884448254e-03, +-1.368856932232024107e-03, +-1.368096547384994172e-03, +-1.367333981698139970e-03, +-1.366569236529653055e-03, +-1.365802313241227389e-03, +-1.365033213198035703e-03, +-1.364261937768658809e-03, +-1.363488488325183398e-03, +-1.362712866243164737e-03, +-1.361935072901544926e-03, +-1.361155109682792323e-03, +-1.360372977972803101e-03, +-1.359588679160883681e-03, +-1.358802214639838555e-03, +-1.358013585805905015e-03, +-1.357222794058720629e-03, +-1.356429840801416913e-03, +-1.355634727440508747e-03, +-1.354837455385977203e-03, +-1.354038026051251984e-03, +-1.353236440853105389e-03, +-1.352432701211873272e-03, +-1.351626808551197002e-03, +-1.350818764298161809e-03, +-1.350008569883301987e-03, +-1.349196226740575957e-03, +-1.348381736307291889e-03, +-1.347565100024232174e-03, +-1.346746319335560393e-03, +-1.345925395688869894e-03, +-1.345102330535094017e-03, +-1.344277125328638151e-03, +-1.343449781527289097e-03, +-1.342620300592198149e-03, +-1.341788683987893676e-03, +-1.340954933182399514e-03, +-1.340119049647020295e-03, +-1.339281034856463961e-03, +-1.338440890288855644e-03, +-1.337598617425687355e-03, +-1.336754217751839457e-03, +-1.335907692755514305e-03, +-1.335059043928349225e-03, +-1.334208272765338666e-03, +-1.333355380764793654e-03, +-1.332500369428450855e-03, +-1.331643240261400594e-03, +-1.330783994772041746e-03, +-1.329922634472179314e-03, +-1.329059160876980197e-03, +-1.328193575504900978e-03, +-1.327325879877822154e-03, +-1.326456075520895690e-03, +-1.325584163962676646e-03, +-1.324710146735048801e-03, +-1.323834025373195377e-03, +-1.322955801415674065e-03, +-1.322075476404384938e-03, +-1.321193051884500405e-03, +-1.320308529404572336e-03, +-1.319421910516481097e-03, +-1.318533196775366172e-03, +-1.317642389739753870e-03, +-1.316749490971473634e-03, +-1.315854502035622691e-03, +-1.314957424500657560e-03, +-1.314058259938330302e-03, +-1.313157009923708466e-03, +-1.312253676035140398e-03, +-1.311348259854236160e-03, +-1.310440762966029720e-03, +-1.309531186958729160e-03, +-1.308619533423859135e-03, +-1.307705803956260657e-03, +-1.306790000154079171e-03, +-1.305872123618661770e-03, +-1.304952175954715056e-03, +-1.304030158770191732e-03, +-1.303106073676343945e-03, +-1.302179922287634599e-03, +-1.301251706221856182e-03, +-1.300321427100067017e-03, +-1.299389086546553313e-03, +-1.298454686188836972e-03, +-1.297518227657820005e-03, +-1.296579712587518250e-03, +-1.295639142615279300e-03, +-1.294696519381708993e-03, +-1.293751844530582722e-03, +-1.292805119709020427e-03, +-1.291856346567285801e-03, +-1.290905526758950655e-03, +-1.289952661940817289e-03, +-1.288997753772860378e-03, +-1.288040803918347752e-03, +-1.287081814043774912e-03, +-1.286120785818793038e-03, +-1.285157720916342344e-03, +-1.284192621012575320e-03, +-1.283225487786803388e-03, +-1.282256322921610523e-03, +-1.281285128102785387e-03, +-1.280311905019269935e-03, +-1.279336655363282147e-03, +-1.278359380830144075e-03, +-1.277380083118514727e-03, +-1.276398763930135065e-03, +-1.275415424969938809e-03, +-1.274430067946107732e-03, +-1.273442694570005307e-03, +-1.272453306556107968e-03, +-1.271461905622142370e-03, +-1.270468493489008846e-03, +-1.269473071880717653e-03, +-1.268475642524518211e-03, +-1.267476207150801523e-03, +-1.266474767493146365e-03, +-1.265471325288250112e-03, +-1.264465882275953891e-03, +-1.263458440199372685e-03, +-1.262449000804657679e-03, +-1.261437565841098821e-03, +-1.260424137061267940e-03, +-1.259408716220729264e-03, +-1.258391305078297240e-03, +-1.257371905395838563e-03, +-1.256350518938412902e-03, +-1.255327147474220428e-03, +-1.254301792774518975e-03, +-1.253274456613756756e-03, +-1.252245140769513371e-03, +-1.251213847022414598e-03, +-1.250180577156266831e-03, +-1.249145332957999179e-03, +-1.248108116217572401e-03, +-1.247068928728132858e-03, +-1.246027772285927945e-03, +-1.244984648690231717e-03, +-1.243939559743515539e-03, +-1.242892507251252502e-03, +-1.241843493022073757e-03, +-1.240792518867697616e-03, +-1.239739586602869046e-03, +-1.238684698045471565e-03, +-1.237627855016477365e-03, +-1.236569059339860579e-03, +-1.235508312842742342e-03, +-1.234445617355309482e-03, +-1.233380974710747294e-03, +-1.232314386745375287e-03, +-1.231245855298572370e-03, +-1.230175382212710935e-03, +-1.229102969333298019e-03, +-1.228028618508790774e-03, +-1.226952331590846481e-03, +-1.225874110434026134e-03, +-1.224793956895943404e-03, +-1.223711872837381521e-03, +-1.222627860122019617e-03, +-1.221541920616589505e-03, +-1.220454056190913190e-03, +-1.219364268717816786e-03, +-1.218272560073096903e-03, +-1.217178932135626031e-03, +-1.216083386787276651e-03, +-1.214985925912959175e-03, +-1.213886551400520037e-03, +-1.212785265140874612e-03, +-1.211682069027957128e-03, +-1.210576964958643906e-03, +-1.209469954832781977e-03, +-1.208361040553364296e-03, +-1.207250224026197973e-03, +-1.206137507160203511e-03, +-1.205022891867179539e-03, +-1.203906380061982567e-03, +-1.202787973662453264e-03, +-1.201667674589322133e-03, +-1.200545484766363897e-03, +-1.199421406120327466e-03, +-1.198295440580848760e-03, +-1.197167590080594913e-03, +-1.196037856555194016e-03, +-1.194906241943152064e-03, +-1.193772748186000413e-03, +-1.192637377228218795e-03, +-1.191500131017152707e-03, +-1.190361011503168016e-03, +-1.189220020639568127e-03, +-1.188077160382503775e-03, +-1.186932432691175775e-03, +-1.185785839527568088e-03, +-1.184637382856777200e-03, +-1.183487064646665185e-03, +-1.182334886868032084e-03, +-1.181180851494649086e-03, +-1.180024960503196730e-03, +-1.178867215873180118e-03, +-1.177707619587095664e-03, +-1.176546173630327232e-03, +-1.175382879991090403e-03, +-1.174217740660562148e-03, +-1.173050757632787371e-03, +-1.171881932904731164e-03, +-1.170711268476173862e-03, +-1.169538766349766980e-03, +-1.168364428531183923e-03, +-1.167188257028815759e-03, +-1.166010253853955745e-03, +-1.164830421020805404e-03, +-1.163648760546414458e-03, +-1.162465274450707716e-03, +-1.161279964756400289e-03, +-1.160092833489120541e-03, +-1.158903882677365200e-03, +-1.157713114352380964e-03, +-1.156520530548348817e-03, +-1.155326133302278860e-03, +-1.154129924653971278e-03, +-1.152931906646025668e-03, +-1.151732081324030555e-03, +-1.150530450736219701e-03, +-1.149327016933742070e-03, +-1.148121781970573140e-03, +-1.146914747903424268e-03, +-1.145705916791920059e-03, +-1.144495290698386517e-03, +-1.143282871688031891e-03, +-1.142068661828870560e-03, +-1.140852663191630660e-03, +-1.139634877849908913e-03, +-1.138415307880098629e-03, +-1.137193955361296251e-03, +-1.135970822375460734e-03, +-1.134745911007335696e-03, +-1.133519223344347940e-03, +-1.132290761476791334e-03, +-1.131060527497719037e-03, +-1.129828523502867397e-03, +-1.128594751590850011e-03, +-1.127359213862896663e-03, +-1.126121912423184426e-03, +-1.124882849378475115e-03, +-1.123642026838312172e-03, +-1.122399446915026307e-03, +-1.121155111723692128e-03, +-1.119909023382047696e-03, +-1.118661184010635683e-03, +-1.117411595732700378e-03, +-1.116160260674245799e-03, +-1.114907180963912742e-03, +-1.113652358733139029e-03, +-1.112395796116081876e-03, +-1.111137495249556097e-03, +-1.109877458273053619e-03, +-1.108615687328934080e-03, +-1.107352184562093288e-03, +-1.106086952120126929e-03, +-1.104819992153484309e-03, +-1.103551306815117507e-03, +-1.102280898260792757e-03, +-1.101008768648858429e-03, +-1.099734920140418067e-03, +-1.098459354899249075e-03, +-1.097182075091722919e-03, +-1.095903082886956481e-03, +-1.094622380456729228e-03, +-1.093339969975404930e-03, +-1.092055853620078247e-03, +-1.090770033570505988e-03, +-1.089482512009000642e-03, +-1.088193291120609710e-03, +-1.086902373093023974e-03, +-1.085609760116481226e-03, +-1.084315454383974215e-03, +-1.083019458091006269e-03, +-1.081721773435794041e-03, +-1.080422402619184022e-03, +-1.079121347844549115e-03, +-1.077818611317964918e-03, +-1.076514195248123428e-03, +-1.075208101846230474e-03, +-1.073900333326191980e-03, +-1.072590891904510102e-03, +-1.071279779800196055e-03, +-1.069966999234943589e-03, +-1.068652552433033360e-03, +-1.067336441621250312e-03, +-1.066018669029044361e-03, +-1.064699236888410694e-03, +-1.063378147433957860e-03, +-1.062055402902795445e-03, +-1.060731005534581561e-03, +-1.059404957571708243e-03, +-1.058077261258947568e-03, +-1.056747918843663507e-03, +-1.055416932575823849e-03, +-1.054084304707919540e-03, +-1.052750037495012820e-03, +-1.051414133194623381e-03, +-1.050076594066883190e-03, +-1.048737422374474912e-03, +-1.047396620382503533e-03, +-1.046054190358698460e-03, +-1.044710134573311605e-03, +-1.043364455299043659e-03, +-1.042017154811092665e-03, +-1.040668235387331607e-03, +-1.039317699307937184e-03, +-1.037965548855739788e-03, +-1.036611786315943997e-03, +-1.035256413976341295e-03, +-1.033899434127210542e-03, +-1.032540849061233191e-03, +-1.031180661073655266e-03, +-1.029818872462212338e-03, +-1.028455485527015028e-03, +-1.027090502570737881e-03, +-1.025723925898529157e-03, +-1.024355757817905230e-03, +-1.022986000638926012e-03, +-1.021614656674123831e-03, +-1.020241728238373974e-03, +-1.018867217649102206e-03, +-1.017491127226176351e-03, +-1.016113459291808708e-03, +-1.014734216170774415e-03, +-1.013353400190126737e-03, +-1.011971013679561354e-03, +-1.010587058971011091e-03, +-1.009201538398867308e-03, +-1.007814454299992262e-03, +-1.006425809013664465e-03, +-1.005035604881483269e-03, +-1.003643844247534321e-03, +-1.002250529458283308e-03, +-1.000855662862616723e-03, +-9.994592468117245547e-04, +-9.980612836592826515e-04, +-9.966617757613432157e-04, +-9.952607254762855810e-04, +-9.938581351648272718e-04, +-9.924540071902540703e-04, +-9.910483439180275359e-04, +-9.896411477160120367e-04, +-9.882324209544871094e-04, +-9.868221660060650605e-04, +-9.854103852457395379e-04, +-9.839970810507630162e-04, +-9.825822558008226546e-04, +-9.811659118779500911e-04, +-9.797480516664199609e-04, +-9.783286775529335608e-04, +-9.769077919265210536e-04, +-9.754853971784438905e-04, +-9.740614957023794500e-04, +-9.726360898943243278e-04, +-9.712091821524915540e-04, +-9.697807748774961000e-04, +-9.683508704722640229e-04, +-9.669194713419187320e-04, +-9.654865798940177792e-04, +-9.640521985382806153e-04, +-9.626163296868039130e-04, +-9.611789757539811185e-04, +-9.597401391563864428e-04, +-9.582998223129617771e-04, +-9.568580276449268132e-04, +-9.554147575756775619e-04, +-9.539700145309639454e-04, +-9.525238009387979651e-04, +-9.510761192293535216e-04, +-9.496269718351566923e-04, +-9.481763611909416406e-04, +-9.467242897337237997e-04, +-9.452707599026979575e-04, +-9.438157741392561462e-04, +-9.423593348872186855e-04, +-9.409014445924439784e-04, +-9.394421057030392800e-04, +-9.379813206694033066e-04, +-9.365190919441455713e-04, +-9.350554219819926004e-04, +-9.335903132399737655e-04, +-9.321237681772946487e-04, +-9.306557892553821458e-04, +-9.291863789377719255e-04, +-9.277155396902803846e-04, +-9.262432739809167183e-04, +-9.247695842797704893e-04, +-9.232944730592077594e-04, +-9.218179427937742707e-04, +-9.203399959601158645e-04, +-9.188606350370131766e-04, +-9.173798625056033560e-04, +-9.158976808489565757e-04, +-9.144140925524578889e-04, +-9.129291001035113500e-04, +-9.114427059917622762e-04, +-9.099549127090012955e-04, +-9.084657227490567939e-04, +-9.069751386079856264e-04, +-9.054831627839756477e-04, +-9.039897977772446639e-04, +-9.024950460902180253e-04, +-9.009989102274498047e-04, +-8.995013926955013669e-04, +-8.980024960031411868e-04, +-8.965022226612401161e-04, +-8.950005751826733708e-04, +-8.934975560825399741e-04, +-8.919931678778994033e-04, +-8.904874130879963457e-04, +-8.889802942341596499e-04, +-8.874718138396601877e-04, +-8.859619744300821931e-04, +-8.844507785328728847e-04, +-8.829382286775867361e-04, +-8.814243273958964273e-04, +-8.799090772215389586e-04, +-8.783924806902022441e-04, +-8.768745403397255802e-04, +-8.753552587099543624e-04, +-8.738346383428131610e-04, +-8.723126817821603290e-04, +-8.707893915739850022e-04, +-8.692647702663034489e-04, +-8.677388204090933678e-04, +-8.662115445543140538e-04, +-8.646829452561368996e-04, +-8.631530250705552994e-04, +-8.616217865555876121e-04, +-8.600892322713319131e-04, +-8.585553647798456478e-04, +-8.570201866452151294e-04, +-8.554837004334131826e-04, +-8.539459087125038416e-04, +-8.524068140525217861e-04, +-8.508664190253897256e-04, +-8.493247262050911128e-04, +-8.477817381675875272e-04, +-8.462374574906956180e-04, +-8.446918867542973315e-04, +-8.431450285402281291e-04, +-8.415968854321688930e-04, +-8.400474600158906301e-04, +-8.384967548789608706e-04, +-8.369447726109950940e-04, +-8.353915158035358406e-04, +-8.338369870499562179e-04, +-8.322811889456583094e-04, +-8.307241240879580319e-04, +-8.291657950759909190e-04, +-8.276062045109033741e-04, +-8.260453549957514057e-04, +-8.244832491353887381e-04, +-8.229198895366750862e-04, +-8.213552788083624233e-04, +-8.197894195609856929e-04, +-8.182223144070734696e-04, +-8.166539659610031095e-04, +-8.150843768390586466e-04, +-8.135135496593298536e-04, +-8.119414870417398893e-04, +-8.103681916082836056e-04, +-8.087936659826080706e-04, +-8.072179127902506584e-04, +-8.056409346586670224e-04, +-8.040627342171604046e-04, +-8.024833140967741916e-04, +-8.009026769304877216e-04, +-7.993208253530892154e-04, +-7.977377620012181692e-04, +-7.961534895132435985e-04, +-7.945680105294559417e-04, +-7.929813276919617845e-04, +-7.913934436446082906e-04, +-7.898043610330152944e-04, +-7.882140825048181620e-04, +-7.866226107091978982e-04, +-7.850299482973136346e-04, +-7.834360979219684787e-04, +-7.818410622378544348e-04, +-7.802448439014491883e-04, +-7.786474455708976023e-04, +-7.770488699062215107e-04, +-7.754491195692111895e-04, +-7.738481972233167199e-04, +-7.722461055338467224e-04, +-7.706428471678678513e-04, +-7.690384247940909536e-04, +-7.674328410830750071e-04, +-7.658260987071222785e-04, +-7.642182003401662167e-04, +-7.626091486579735478e-04, +-7.609989463380433363e-04, +-7.593875960594911921e-04, +-7.577751005032867110e-04, +-7.561614623519467534e-04, +-7.545466842899352985e-04, +-7.529307690032164277e-04, +-7.513137191794874280e-04, +-7.496955375082121854e-04, +-7.480762266805490853e-04, +-7.464557893892343528e-04, +-7.448342283287963991e-04, +-7.432115461954381854e-04, +-7.415877456869345496e-04, +-7.399628295028318073e-04, +-7.383368003443098416e-04, +-7.367096609142437941e-04, +-7.350814139170920667e-04, +-7.334520620589270049e-04, +-7.318216080476887091e-04, +-7.301900545927386688e-04, +-7.285574044050788798e-04, +-7.269236601975617457e-04, +-7.252888246844134629e-04, +-7.236529005816704115e-04, +-7.220158906068415349e-04, +-7.203777974791556469e-04, +-7.187386239194589735e-04, +-7.170983726500927474e-04, +-7.154570463951103734e-04, +-7.138146478801618523e-04, +-7.121711798323778798e-04, +-7.105266449805950355e-04, +-7.088810460552256781e-04, +-7.072343857881554889e-04, +-7.055866669129551077e-04, +-7.039378921647644486e-04, +-7.022880642801799427e-04, +-7.006371859975048808e-04, +-6.989852600564563532e-04, +-6.973322891984085449e-04, +-6.956782761662860500e-04, +-6.940232237044455851e-04, +-6.923671345588951068e-04, +-6.907100114771721642e-04, +-6.890518572082379722e-04, +-6.873926745026859037e-04, +-6.857324661126333945e-04, +-6.840712347915966097e-04, +-6.824089832947230049e-04, +-6.807457143786566686e-04, +-6.790814308014396592e-04, +-6.774161353227584450e-04, +-6.757498307036084511e-04, +-6.740825197067268739e-04, +-6.724142050961194259e-04, +-6.707448896372669852e-04, +-6.690745760973504591e-04, +-6.674032672447966115e-04, +-6.657309658495357777e-04, +-6.640576746830334151e-04, +-6.623833965182080287e-04, +-6.607081341293244859e-04, +-6.590318902922039177e-04, +-6.573546677840692203e-04, +-6.556764693836245267e-04, +-6.539972978708918179e-04, +-6.523171560274355690e-04, +-6.506360466362437044e-04, +-6.489539724816472581e-04, +-6.472709363493589713e-04, +-6.455869410267243936e-04, +-6.439019893022313902e-04, +-6.422160839659609528e-04, +-6.405292278092345089e-04, +-6.388414236248831290e-04, +-6.371526742071223015e-04, +-6.354629823514405850e-04, +-6.337723508548127622e-04, +-6.320807825155925043e-04, +-6.303882801333846519e-04, +-6.286948465092772340e-04, +-6.270004844457110387e-04, +-6.253051967463722771e-04, +-6.236089862164122428e-04, +-6.219118556623253391e-04, +-6.202138078918356711e-04, +-6.185148457141528095e-04, +-6.168149719396687561e-04, +-6.151141893802170675e-04, +-6.134125008489517503e-04, +-6.117099091601924370e-04, +-6.100064171298408278e-04, +-6.083020275748775123e-04, +-6.065967433136252142e-04, +-6.048905671657812087e-04, +-6.031835019523404525e-04, +-6.014755504954709007e-04, +-5.997667156187409723e-04, +-5.980570001469988784e-04, +-5.963464069062556373e-04, +-5.946349387239087446e-04, +-5.929225984285830132e-04, +-5.912093888502028887e-04, +-5.894953128198755733e-04, +-5.877803731699227921e-04, +-5.860645727341413274e-04, +-5.843479143473450516e-04, +-5.826304008456216661e-04, +-5.809120350663718414e-04, +-5.791928198481867017e-04, +-5.774727580309182984e-04, +-5.757518524555273881e-04, +-5.740301059643025498e-04, +-5.723075214007431995e-04, +-5.705841016094405447e-04, +-5.688598494362997375e-04, +-5.671347677284265757e-04, +-5.654088593340393567e-04, +-5.636821271025037891e-04, +-5.619545738846024171e-04, +-5.602262025320208167e-04, +-5.584970158977783494e-04, +-5.567670168360570751e-04, +-5.550362082020901880e-04, +-5.533045928524236339e-04, +-5.515721736446026679e-04, +-5.498389534374373755e-04, +-5.481049350908834099e-04, +-5.463701214659217546e-04, +-5.446345154247822853e-04, +-5.428981198308278694e-04, +-5.411609375484296817e-04, +-5.394229714431975986e-04, +-5.376842243818571402e-04, +-5.359446992321298831e-04, +-5.342043988629601673e-04, +-5.324633261443935568e-04, +-5.307214839474619144e-04, +-5.289788751444380807e-04, +-5.272355026084973861e-04, +-5.254913692141610897e-04, +-5.237464778368020914e-04, +-5.220008313529064413e-04, +-5.202544326401054324e-04, +-5.185072845770938516e-04, +-5.167593900435112596e-04, +-5.150107519201692395e-04, +-5.132613730888899595e-04, +-5.115112564325795729e-04, +-5.097604048350686239e-04, +-5.080088211813431993e-04, +-5.062565083574168843e-04, +-5.045034692502542179e-04, +-5.027497067478006168e-04, +-5.009952237392557026e-04, +-4.992400231145935428e-04, +-4.974841077647993316e-04, +-4.957274805820945790e-04, +-4.939701444594229822e-04, +-4.922121022909199933e-04, +-4.904533569715514548e-04, +-4.886939113973856261e-04, +-4.869337684654682832e-04, +-4.851729310737037276e-04, +-4.834114021210826856e-04, +-4.816491845075587634e-04, +-4.798862811339315703e-04, +-4.781226949020708772e-04, +-4.763584287147973545e-04, +-4.745934854757628222e-04, +-4.728278680896712098e-04, +-4.710615794621670466e-04, +-4.692946224997103987e-04, +-4.675270001098404929e-04, +-4.657587152008636831e-04, +-4.639897706821207064e-04, +-4.622201694638640055e-04, +-4.604499144571367318e-04, +-4.586790085740038970e-04, +-4.569074547274244377e-04, +-4.551352558311343925e-04, +-4.533624147998794088e-04, +-4.515889345492829585e-04, +-4.498148179957348275e-04, +-4.480400680566120762e-04, +-4.462646876501641141e-04, +-4.444886796953843844e-04, +-4.427120471122873236e-04, +-4.409347928215404371e-04, +-4.391569197449403730e-04, +-4.373784308048914746e-04, +-4.355993289246379080e-04, +-4.338196170284977417e-04, +-4.320392980413815067e-04, +-4.302583748890678544e-04, +-4.284768504982307703e-04, +-4.266947277963272509e-04, +-4.249120097116606209e-04, +-4.231286991732244622e-04, +-4.213447991109345249e-04, +-4.195603124555016589e-04, +-4.177752421383087024e-04, +-4.159895910916498198e-04, +-4.142033622485987170e-04, +-4.124165585429276511e-04, +-4.106291829091449444e-04, +-4.088412382827610468e-04, +-4.070527275997777149e-04, +-4.052636537971487972e-04, +-4.034740198124260797e-04, +-4.016838285840295775e-04, +-3.998930830511237189e-04, +-3.981017861534905480e-04, +-3.963099408317705260e-04, +-3.945175500273292286e-04, +-3.927246166821417154e-04, +-3.909311437390197252e-04, +-3.891371341414940396e-04, +-3.873425908336831317e-04, +-3.855475167605315829e-04, +-3.837519148676853988e-04, +-3.819557881013679770e-04, +-3.801591394086120180e-04, +-3.783619717371364678e-04, +-3.765642880352237866e-04, +-3.747660912519926255e-04, +-3.729673843370326131e-04, +-3.711681702408802658e-04, +-3.693684519144972700e-04, +-3.675682323095392557e-04, +-3.657675143783955325e-04, +-3.639663010741054435e-04, +-3.621645953502275559e-04, +-3.603624001610821435e-04, +-3.585597184615807497e-04, +-3.567565532073016478e-04, +-3.549529073543320357e-04, +-3.531487838594934417e-04, +-3.513441856802218652e-04, +-3.495391157744836977e-04, +-3.477335771008092241e-04, +-3.459275726185673055e-04, +-3.441211052874831259e-04, +-3.423141780679093515e-04, +-3.405067939208641318e-04, +-3.386989558079084219e-04, +-3.368906666912137998e-04, +-3.350819295334059615e-04, +-3.332727472977949513e-04, +-3.314631229482501535e-04, +-3.296530594490773981e-04, +-3.278425597652556960e-04, +-3.260316268623076230e-04, +-3.242202637061764254e-04, +-3.224084732634658994e-04, +-3.205962585013057880e-04, +-3.187836223872370718e-04, +-3.169705678894399773e-04, +-3.151570979766139011e-04, +-3.133432156178475223e-04, +-3.115289237828998284e-04, +-3.097142254418706257e-04, +-3.078991235654770110e-04, +-3.060836211249297182e-04, +-3.042677210918064297e-04, +-3.024514264382899753e-04, +-3.006347401370386614e-04, +-2.988176651610650577e-04, +-2.970002044839712145e-04, +-2.951823610798223535e-04, +-2.933641379230203950e-04, +-2.915455379885436757e-04, +-2.897265642517793307e-04, +-2.879072196885973443e-04, +-2.860875072752280357e-04, +-2.842674299882945845e-04, +-2.824469908050922674e-04, +-2.806261927030998080e-04, +-2.788050386602544391e-04, +-2.769835316549908253e-04, +-2.751616746661515625e-04, +-2.733394706728664515e-04, +-2.715169226547840841e-04, +-2.696940335919101881e-04, +-2.678708064646791848e-04, +-2.660472442537930226e-04, +-2.642233499404534128e-04, +-2.623991265062393147e-04, +-2.605745769329795422e-04, +-2.587497042029902037e-04, +-2.569245112989489350e-04, +-2.550990012038087591e-04, +-2.532731769008353287e-04, +-2.514470413738825847e-04, +-2.496205976068638279e-04, +-2.477938485842313705e-04, +-2.459667972906075814e-04, +-2.441394467110650720e-04, +-2.423117998309977025e-04, +-2.404838596359966309e-04, +-2.386556291120855576e-04, +-2.368271112455981023e-04, +-2.349983090230480247e-04, +-2.331692254313685896e-04, +-2.313398634577885883e-04, +-2.295102260897006888e-04, +-2.276803163149046505e-04, +-2.258501371214784929e-04, +-2.240196914976515089e-04, +-2.221889824320863471e-04, +-2.203580129135449147e-04, +-2.185267859311714085e-04, +-2.166953044743642981e-04, +-2.148635715326501514e-04, +-2.130315900959208852e-04, +-2.111993631543082693e-04, +-2.093668936980579414e-04, +-2.075341847177667668e-04, +-2.057012392042565285e-04, +-2.038680601484479428e-04, +-2.020346505415984522e-04, +-2.002010133751352581e-04, +-1.983671516407330040e-04, +-1.965330683301427155e-04, +-1.946987664354360166e-04, +-1.928642489488739957e-04, +-1.910295188628222313e-04, +-1.891945791697875734e-04, +-1.873594328626973797e-04, +-1.855240829344055804e-04, +-1.836885323779744350e-04, +-1.818527841867087936e-04, +-1.800168413540292986e-04, +-1.781807068735503127e-04, +-1.763443837389102676e-04, +-1.745078749440123029e-04, +-1.726711834828972521e-04, +-1.708343123496150560e-04, +-1.689972645384675695e-04, +-1.671600430438778886e-04, +-1.653226508602647997e-04, +-1.634850909822825778e-04, +-1.616473664046938366e-04, +-1.598094801222425419e-04, +-1.579714351299332201e-04, +-1.561332344227007378e-04, +-1.542948809956921940e-04, +-1.524563778441372227e-04, +-1.506177279632222254e-04, +-1.487789343483309553e-04, +-1.469399999949152537e-04, +-1.451009278983691737e-04, +-1.432617210542682100e-04, +-1.414223824582438560e-04, +-1.395829151058526597e-04, +-1.377433219928202233e-04, +-1.359036061149110721e-04, +-1.340637704678025884e-04, +-1.322238180473250813e-04, +-1.303837518492929220e-04, +-1.285435748695819833e-04, +-1.267032901040022726e-04, +-1.248629005483331415e-04, +-1.230224091986052053e-04, +-1.211818190506049986e-04, +-1.193411331001555798e-04, +-1.175003543431531503e-04, +-1.156594857754808878e-04, +-1.138185303928796545e-04, +-1.119774911911907236e-04, +-1.101363711661854778e-04, +-1.082951733136435125e-04, +-1.064539006291835414e-04, +-1.046125561085041157e-04, +-1.027711427472561905e-04, +-1.009296635409562390e-04, +-9.908812148502239717e-05, +-9.724651957505634305e-05, +-9.540486080630520692e-05, +-9.356314817415009935e-05, +-9.172138467373017765e-05, +-8.987957330022598853e-05, +-8.803771704873246742e-05, +-8.619581891412860376e-05, +-8.435388189132103415e-05, +-8.251190897511485964e-05, +-8.066990316008619782e-05, +-7.882786744082302471e-05, +-7.698580481179772683e-05, +-7.514371826723888073e-05, +-7.330161080137284038e-05, +-7.145948540829494744e-05, +-6.961734508184323528e-05, +-6.777519281583784796e-05, +-6.593303160395433762e-05, +-6.409086443959515942e-05, +-6.224869431617263476e-05, +-6.040652422673402063e-05, +-5.856435716444953607e-05, +-5.672219612207424558e-05, +-5.488004409222948409e-05, +-5.303790406744028228e-05, +-5.119577904004790533e-05, +-4.935367200208138852e-05, +-4.751158594549993096e-05, +-4.566952386206385520e-05, +-4.382748874320759974e-05, +-4.198548358028043220e-05, +-4.014351136437766616e-05, +-3.830157508641819522e-05, +-3.645967773701581168e-05, +-3.461782230651587293e-05, +-3.277601178527804108e-05, +-3.093424916317833595e-05, +-2.909253742985069537e-05, +-2.725087957492860653e-05, +-2.540927858750662683e-05, +-2.356773745662792249e-05, +-2.172625917090998502e-05, +-1.988484671882750294e-05, +-1.804350308858390756e-05, +-1.620223126798367428e-05, +-1.436103424467362025e-05, +-1.251991500601507866e-05, +-1.067887653895570025e-05, +-8.837921830271138957e-06, +-6.997053866436889892e-06, +-5.156275633500380578e-06, +-3.315590117322430827e-06, +-1.475000303449256534e-06, + 3.654908230155255251e-07, + 2.205880277128358793e-06, + 4.046165074438997322e-06, + 5.886342230707981434e-06, + 7.726408762034613645e-06, + 9.566361684984968803e-06, + 1.140619801635036730e-05, + 1.324591477327539308e-05, + 1.508550897338592268e-05, + 1.692497763454751079e-05, + 1.876431777499357680e-05, + 2.060352641345305268e-05, + 2.244260056890927675e-05, + 2.428153726072789734e-05, + 2.612033350878435465e-05, + 2.795898633318223551e-05, + 2.979749275462680811e-05, + 3.163584979393744618e-05, + 3.347405447258623685e-05, + 3.531210381245638316e-05, + 3.714999483560077259e-05, + 3.898772456473932765e-05, + 4.082529002297662546e-05, + 4.266268823376536014e-05, + 4.449991622099351942e-05, + 4.633697100911240182e-05, + 4.817384962289475827e-05, + 5.001054908760430706e-05, + 5.184706642891801019e-05, + 5.368339867309520881e-05, + 5.551954284673626635e-05, + 5.735549597691069404e-05, + 5.919125509124343313e-05, + 6.102681721787854086e-05, + 6.286217938519835500e-05, + 6.469733862235948953e-05, + 6.653229195880697654e-05, + 6.836703642464692684e-05, + 7.020156905036591133e-05, + 7.203588686695674200e-05, + 7.386998690604806123e-05, + 7.570386619966222586e-05, + 7.753752178034322947e-05, + 7.937095068128457054e-05, + 8.120414993608790900e-05, + 8.303711657889140867e-05, + 8.486984764449648048e-05, + 8.670234016812769951e-05, + 8.853459118555992761e-05, + 9.036659773324604602e-05, + 9.219835684803508993e-05, + 9.402986556750504428e-05, + 9.586112092968026004e-05, + 9.769211997315970181e-05, + 9.952285973728508040e-05, + 1.013533372616954762e-04, + 1.031835495868644800e-04, + 1.050134937538180430e-04, + 1.068431668040984404e-04, + 1.086725657798514417e-04, + 1.105016877239527824e-04, + 1.123305296797684878e-04, + 1.141590886912812776e-04, + 1.159873618032198023e-04, + 1.178153460608159856e-04, + 1.196430385099744040e-04, + 1.214704361971959313e-04, + 1.232975361697033847e-04, + 1.251243354754069518e-04, + 1.269508311626224746e-04, + 1.287770202805661572e-04, + 1.306028998790732831e-04, + 1.324284670085630600e-04, + 1.342537187201652276e-04, + 1.360786520656426181e-04, + 1.379032640975601568e-04, + 1.397275518690446836e-04, + 1.415515124339117238e-04, + 1.433751428467915535e-04, + 1.451984401628921386e-04, + 1.470214014381234120e-04, + 1.488440237291843618e-04, + 1.506663040935278758e-04, + 1.524882395890797982e-04, + 1.543098272747720856e-04, + 1.561310642101014013e-04, + 1.579519474552957300e-04, + 1.597724740714417176e-04, + 1.615926411202030222e-04, + 1.634124456641522971e-04, + 1.652318847664914665e-04, + 1.670509554911767342e-04, + 1.688696549030454077e-04, + 1.706879800675793800e-04, + 1.725059280510279696e-04, + 1.743234959205378347e-04, + 1.761406807439117657e-04, + 1.779574795897359975e-04, + 1.797738895275076572e-04, + 1.815899076273944784e-04, + 1.834055309603607308e-04, + 1.852207565982972974e-04, + 1.870355816137373426e-04, + 1.888500030802306602e-04, + 1.906640180718579777e-04, + 1.924776236637657119e-04, + 1.942908169318853778e-04, + 1.961035949528977551e-04, + 1.979159548043197333e-04, + 1.997278935646287508e-04, + 2.015394083130260592e-04, + 2.033504961296023629e-04, + 2.051611540952635231e-04, + 2.069713792918936770e-04, + 2.087811688021208871e-04, + 2.105905197094398186e-04, + 2.123994290983000478e-04, + 2.142078940540690908e-04, + 2.160159116627540074e-04, + 2.178234790114908100e-04, + 2.196305931883091647e-04, + 2.214372512818895571e-04, + 2.232434503820991862e-04, + 2.250491875795078141e-04, + 2.268544599657566926e-04, + 2.286592646332820378e-04, + 2.304635986754387917e-04, + 2.322674591866283951e-04, + 2.340708432620602095e-04, + 2.358737479978762809e-04, + 2.376761704912792763e-04, + 2.394781078402929834e-04, + 2.412795571438904627e-04, + 2.430805155021174846e-04, + 2.448809800158544383e-04, + 2.466809477869459752e-04, + 2.484804159183221688e-04, + 2.502793815137237775e-04, + 2.520778416780286167e-04, + 2.538757935169739491e-04, + 2.556732341372808964e-04, + 2.574701606467826465e-04, + 2.592665701541854413e-04, + 2.610624597691947775e-04, + 2.628578266026384636e-04, + 2.646526677662350345e-04, + 2.664469803727137183e-04, + 2.682407615359419929e-04, + 2.700340083706900970e-04, + 2.718267179927537618e-04, + 2.736188875190821474e-04, + 2.754105140674981177e-04, + 2.772015947570662738e-04, + 2.789921267076171511e-04, + 2.807821070402706726e-04, + 2.825715328772003890e-04, + 2.843604013414002666e-04, + 2.861487095571681877e-04, + 2.879364546498288822e-04, + 2.897236337457025405e-04, + 2.915102439722240210e-04, + 2.932962824578727026e-04, + 2.950817463323339223e-04, + 2.968666327262642997e-04, + 2.986509387714170703e-04, + 3.004346616007655228e-04, + 3.022177983482683228e-04, + 3.040003461489940878e-04, + 3.057823021392069309e-04, + 3.075636634563282427e-04, + 3.093444272386627674e-04, + 3.111245906259262300e-04, + 3.129041507587640588e-04, + 3.146831047791217488e-04, + 3.164614498299632406e-04, + 3.182391830554036805e-04, + 3.200163016008242376e-04, + 3.217928026126469152e-04, + 3.235686832384492050e-04, + 3.253439406270972815e-04, + 3.271185719285036827e-04, + 3.288925742937582274e-04, + 3.306659448752458682e-04, + 3.324386808264169491e-04, + 3.342107793019091777e-04, + 3.359822374576706288e-04, + 3.377530524507290255e-04, + 3.395232214393115980e-04, + 3.412927415829713389e-04, + 3.430616100423130254e-04, + 3.448298239793546921e-04, + 3.465973805570573044e-04, + 3.483642769398404048e-04, + 3.501305102933171339e-04, + 3.518960777842506456e-04, + 3.536609765806445296e-04, + 3.554252038518617481e-04, + 3.571887567683940806e-04, + 3.589516325020235070e-04, + 3.607138282257500543e-04, + 3.624753411139492224e-04, + 3.642361683421467414e-04, + 3.659963070871358280e-04, + 3.677557545270621325e-04, + 3.695145078413890447e-04, + 3.712725642106285404e-04, + 3.730299208168143818e-04, + 3.747865748432330723e-04, + 3.765425234743889453e-04, + 3.782977638961285225e-04, + 3.800522932955614211e-04, + 3.818061088612277544e-04, + 3.835592077828630232e-04, + 3.853115872515204131e-04, + 3.870632444596980803e-04, + 3.888141766011003557e-04, + 3.905643808707671451e-04, + 3.923138544651895042e-04, + 3.940625945820858600e-04, + 3.958105984205191044e-04, + 3.975578631810190006e-04, + 3.993043860653545550e-04, + 4.010501642766519780e-04, + 4.027951950195201268e-04, + 4.045394754997802132e-04, + 4.062830029247805480e-04, + 4.080257745031309110e-04, + 4.097677874448225725e-04, + 4.115090389613484771e-04, + 4.132495262654785968e-04, + 4.149892465713748025e-04, + 4.167281970947143001e-04, + 4.184663750524661224e-04, + 4.202037776630026394e-04, + 4.219404021462292830e-04, + 4.236762457233500339e-04, + 4.254113056170305942e-04, + 4.271455790513219511e-04, + 4.288790632517859277e-04, + 4.306117554454575607e-04, + 4.323436528605771405e-04, + 4.340747527270627602e-04, + 4.358050522762412708e-04, + 4.375345487408126115e-04, + 4.392632393549403941e-04, + 4.409911213543590770e-04, + 4.427181919761557691e-04, + 4.444444484589254877e-04, + 4.461698880427023115e-04, + 4.478945079691113319e-04, + 4.496183054811482343e-04, + 4.513412778232941155e-04, + 4.530634222416033037e-04, + 4.547847359836610748e-04, + 4.565052162983264253e-04, + 4.582248604361922081e-04, + 4.599436656493621658e-04, + 4.616616291912236281e-04, + 4.633787483169526412e-04, + 4.650950202830532367e-04, + 4.668104423477137540e-04, + 4.685250117705369284e-04, + 4.702387258126634363e-04, + 4.719515817368876874e-04, + 4.736635768074357804e-04, + 4.753747082900804826e-04, + 4.770849734522674855e-04, + 4.787943695628804576e-04, + 4.805028938923686555e-04, + 4.822105437128617949e-04, + 4.839173162979453499e-04, + 4.856232089227818208e-04, + 4.873282188642265810e-04, + 4.890323434005674520e-04, + 4.907355798118304482e-04, + 4.924379253795235258e-04, + 4.941393773867489058e-04, + 4.958399331183274868e-04, + 4.975395898605673673e-04, + 4.992383449013913484e-04, + 5.009361955304466544e-04, + 5.026331390388882013e-04, + 5.043291727194912453e-04, + 5.060242938667742227e-04, + 5.077184997767721520e-04, + 5.094117877471956860e-04, + 5.111041550773539168e-04, + 5.127955990683181987e-04, + 5.144861170226932732e-04, + 5.161757062447360975e-04, + 5.178643640404380268e-04, + 5.195520877174895783e-04, + 5.212388745850197883e-04, + 5.229247219540550471e-04, + 5.246096271372609502e-04, + 5.262935874489009904e-04, + 5.279766002049634090e-04, + 5.296586627230850854e-04, + 5.313397723227078788e-04, + 5.330199263248547401e-04, + 5.346991220522512517e-04, + 5.363773568294386007e-04, + 5.380546279825537031e-04, + 5.397309328394491162e-04, + 5.414062687298016761e-04, + 5.430806329849025959e-04, + 5.447540229377656690e-04, + 5.464264359232479410e-04, + 5.480978692777891759e-04, + 5.497683203397196608e-04, + 5.514377864489980463e-04, + 5.531062649473301746e-04, + 5.547737531782866074e-04, + 5.564402484870797135e-04, + 5.581057482206783779e-04, + 5.597702497279342026e-04, + 5.614337503593471021e-04, + 5.630962474671945403e-04, + 5.647577384056390835e-04, + 5.664182205305138369e-04, + 5.680776911994344421e-04, + 5.697361477719190990e-04, + 5.713935876091665207e-04, + 5.730500080742107578e-04, + 5.747054065318487736e-04, + 5.763597803487577548e-04, + 5.780131268934624771e-04, + 5.796654435360803007e-04, + 5.813167276487648258e-04, + 5.829669766054595623e-04, + 5.846161877818578136e-04, + 5.862643585554863776e-04, + 5.879114863058125572e-04, + 5.895575684140371862e-04, + 5.912026022632404544e-04, + 5.928465852383081819e-04, + 5.944895147260945579e-04, + 5.961313881151938075e-04, + 5.977722027960623817e-04, + 5.994119561610946343e-04, + 6.010506456045873686e-04, + 6.026882685224914469e-04, + 6.043248223128899234e-04, + 6.059603043755630624e-04, + 6.075947121123206462e-04, + 6.092280429267548855e-04, + 6.108602942243468881e-04, + 6.124914634125866800e-04, + 6.141215479007543047e-04, + 6.157505451000347494e-04, + 6.173784524236348211e-04, + 6.190052672865617531e-04, + 6.206309871057379135e-04, + 6.222556093001244040e-04, + 6.238791312904915344e-04, + 6.255015504995402537e-04, + 6.271228643520174000e-04, + 6.287430702744969090e-04, + 6.303621656954940889e-04, + 6.319801480455800036e-04, + 6.335970147571290704e-04, + 6.352127632646531030e-04, + 6.368273910043654616e-04, + 6.384408954146637404e-04, + 6.400532739358709682e-04, + 6.416645240102091538e-04, + 6.432746430818773488e-04, + 6.448836285971601759e-04, + 6.464914780042134825e-04, + 6.480981887531826269e-04, + 6.497037582963113324e-04, + 6.513081840877286413e-04, + 6.529114635835989687e-04, + 6.545135942420537978e-04, + 6.561145735233004251e-04, + 6.577143988895991925e-04, + 6.593130678050013269e-04, + 6.609105777357967160e-04, + 6.625069261502639995e-04, + 6.641021105186300198e-04, + 6.656961283131945057e-04, + 6.672889770082546116e-04, + 6.688806540802507425e-04, + 6.704711570075612068e-04, + 6.720604832706112862e-04, + 6.736486303519824154e-04, + 6.752355957362041238e-04, + 6.768213769098647319e-04, + 6.784059713617207480e-04, + 6.799893765824920619e-04, + 6.815715900649645109e-04, + 6.831526093041068648e-04, + 6.847324317968599486e-04, + 6.863110550422477736e-04, + 6.878884765414873667e-04, + 6.894646937977400546e-04, + 6.910397043164081014e-04, + 6.926135056048814392e-04, + 6.941860951726560626e-04, + 6.957574705314361610e-04, + 6.973276291949338660e-04, + 6.988965686789709499e-04, + 7.004642865015980879e-04, + 7.020307801828769333e-04, + 7.035960472449966693e-04, + 7.051600852123811282e-04, + 7.067228916114824677e-04, + 7.082844639708900250e-04, + 7.098447998214401462e-04, + 7.114038966959749513e-04, + 7.129617521296556688e-04, + 7.145183636595584453e-04, + 7.160737288251214699e-04, + 7.176278451679449395e-04, + 7.191807102315838675e-04, + 7.207323215619699467e-04, + 7.222826767071766031e-04, + 7.238317732173783379e-04, + 7.253796086449305252e-04, + 7.269261805444809758e-04, + 7.284714864727562418e-04, + 7.300155239887121030e-04, + 7.315582906534634196e-04, + 7.330997840304299571e-04, + 7.346400016851280029e-04, + 7.361789411852823640e-04, + 7.377166001008981415e-04, + 7.392529760042286383e-04, + 7.407880664695395447e-04, + 7.423218690735597499e-04, + 7.438543813950722729e-04, + 7.453856010152261867e-04, + 7.469155255173019975e-04, + 7.484441524868182217e-04, + 7.499714795116381796e-04, + 7.514975041817631299e-04, + 7.530222240894507727e-04, + 7.545456368293056723e-04, + 7.560677399980941836e-04, + 7.575885311948355252e-04, + 7.591080080209216922e-04, + 7.606261680799060367e-04, + 7.621430089776142901e-04, + 7.636585283222515740e-04, + 7.651727237241635502e-04, + 7.666855927961147357e-04, + 7.681971331530570253e-04, + 7.697073424122293298e-04, + 7.712162181933034013e-04, + 7.727237581180085909e-04, + 7.742299598105820092e-04, + 7.757348208975281588e-04, + 7.772383390075979009e-04, + 7.787405117718488451e-04, + 7.802413368237673223e-04, + 7.817408117990420034e-04, + 7.832389343357001833e-04, + 7.847357020741921318e-04, + 7.862311126571960461e-04, + 7.877251637297634414e-04, + 7.892178529392485705e-04, + 7.907091779354164093e-04, + 7.921991363704078545e-04, + 7.936877258985194136e-04, + 7.951749441765955774e-04, + 7.966607888638075350e-04, + 7.981452576216197794e-04, + 7.996283481138940835e-04, + 8.011100580068300850e-04, + 8.025903849690951743e-04, + 8.040693266716353012e-04, + 8.055468807877716854e-04, + 8.070230449933147665e-04, + 8.084978169663551697e-04, + 8.099711943873774385e-04, + 8.114431749393228102e-04, + 8.129137563075686159e-04, + 8.143829361796887803e-04, + 8.158507122458959595e-04, + 8.173170821986446141e-04, + 8.187820437329366464e-04, + 8.202455945460871041e-04, + 8.217077323378308654e-04, + 8.231684548104226031e-04, + 8.246277596684498676e-04, + 8.260856446189216665e-04, + 8.275421073713865342e-04, + 8.289971456377301113e-04, + 8.304507571322752163e-04, + 8.319029395718920009e-04, + 8.333536906757954207e-04, + 8.348030081656554989e-04, + 8.362508897656938198e-04, + 8.376973332024913003e-04, + 8.391423362050944414e-04, + 8.405858965051088948e-04, + 8.420280118364828394e-04, + 8.434686799357949457e-04, + 8.449078985418824938e-04, + 8.463456653962433962e-04, + 8.477819782428371378e-04, + 8.492168348280431430e-04, + 8.506502329007300557e-04, + 8.520821702123541853e-04, + 8.535126445167795289e-04, + 8.549416535703987683e-04, + 8.563691951320747233e-04, + 8.577952669632794543e-04, + 8.592198668278984560e-04, + 8.606429924923334395e-04, + 8.620646417255634813e-04, + 8.634848122991265916e-04, + 8.649035019868936587e-04, + 8.663207085654537742e-04, + 8.677364298139341467e-04, + 8.691506635137965977e-04, + 8.705634074492744944e-04, + 8.719746594069792932e-04, + 8.733844171762014056e-04, + 8.747926785486788296e-04, + 8.761994413187075212e-04, + 8.776047032832351782e-04, + 8.790084622416694448e-04, + 8.804107159959878495e-04, + 8.818114623508234570e-04, + 8.832106991132913964e-04, + 8.846084240930749461e-04, + 8.860046351025349307e-04, + 8.873993299565104435e-04, + 8.887925064724294362e-04, + 8.901841624704048871e-04, + 8.915742957730054923e-04, + 8.929629042055304026e-04, + 8.943499855957727594e-04, + 8.957355377741322341e-04, + 8.971195585737063187e-04, + 8.985020458301040593e-04, + 8.998829973815478632e-04, + 9.012624110689673902e-04, + 9.026402847358156725e-04, + 9.040166162281681019e-04, + 9.053914033948172978e-04, + 9.067646440870919368e-04, + 9.081363361589503197e-04, + 9.095064774670772985e-04, + 9.108750658706771947e-04, + 9.122420992317405121e-04, + 9.136075754146985107e-04, + 9.149714922868053876e-04, + 9.163338477179692500e-04, + 9.176946395805689934e-04, + 9.190538657498301947e-04, + 9.204115241035974292e-04, + 9.217676125223299346e-04, + 9.231221288891786969e-04, + 9.244750710899397221e-04, + 9.258264370131716716e-04, + 9.271762245500189204e-04, + 9.285244315943093525e-04, + 9.298710560426434821e-04, + 9.312160957942201139e-04, + 9.325595487509301265e-04, + 9.339014128174148027e-04, + 9.352416859010453378e-04, + 9.365803659117142395e-04, + 9.379174507622239053e-04, + 9.392529383679381607e-04, + 9.405868266470469126e-04, + 9.419191135203693662e-04, + 9.432497969114337147e-04, + 9.445788747465826314e-04, + 9.459063449547937263e-04, + 9.472322054677655232e-04, + 9.485564542200224103e-04, + 9.498790891487246882e-04, + 9.512001081937753637e-04, + 9.525195092979022241e-04, + 9.538372904064842559e-04, + 9.551534494676534523e-04, + 9.564679844323721158e-04, + 9.577808932542371603e-04, + 9.590921738897214546e-04, + 9.604018242979676066e-04, + 9.617098424408762180e-04, + 9.630162262832353375e-04, + 9.643209737923898878e-04, + 9.656240829386351227e-04, + 9.669255516950083515e-04, + 9.682253780372682313e-04, + 9.695235599439535300e-04, + 9.708200953964694294e-04, + 9.721149823789281474e-04, + 9.734082188782541053e-04, + 9.746998028841382831e-04, + 9.759897323891517356e-04, + 9.772780053885843712e-04, + 9.785646198805200875e-04, + 9.798495738659119061e-04, + 9.811328653485458691e-04, + 9.824144923348500022e-04, + 9.836944528342375735e-04, + 9.849727448589095519e-04, + 9.862493664238327056e-04, + 9.875243155468274234e-04, + 9.887975902485059143e-04, + 9.900691885524025293e-04, + 9.913391084847940002e-04, + 9.926073480747981022e-04, + 9.938739053544519333e-04, + 9.951387783585544881e-04, + 9.964019651247458045e-04, + 9.976634636935991212e-04, + 9.989232721084565121e-04, + 1.000181388415513671e-03, + 1.001437810663906216e-03, + 1.002692536905547271e-03, + 1.003945565195210306e-03, + 1.005196893590625841e-03, + 1.006446520152272633e-03, + 1.007694442943620101e-03, + 1.008940660030927753e-03, + 1.010185169483332783e-03, + 1.011427969372935293e-03, + 1.012669057774638701e-03, + 1.013908432766231701e-03, + 1.015146092428478039e-03, + 1.016382034844949978e-03, + 1.017616258102113300e-03, + 1.018848760289427268e-03, + 1.020079539499151641e-03, + 1.021308593826491954e-03, + 1.022535921369534468e-03, + 1.023761520229322930e-03, + 1.024985388509844914e-03, + 1.026207524317845768e-03, + 1.027427925763149327e-03, + 1.028646590958471859e-03, + 1.029863518019408838e-03, + 1.031078705064475496e-03, + 1.032292150215206351e-03, + 1.033503851595981736e-03, + 1.034713807334150960e-03, + 1.035922015559972683e-03, + 1.037128474406737427e-03, + 1.038333182010587382e-03, + 1.039536136510620708e-03, + 1.040737336048942491e-03, + 1.041936778770633735e-03, + 1.043134462823572467e-03, + 1.044330386358760087e-03, + 1.045524547530156780e-03, + 1.046716944494534068e-03, + 1.047907575411807009e-03, + 1.049096438444743632e-03, + 1.050283531759178303e-03, + 1.051468853523853438e-03, + 1.052652401910479782e-03, + 1.053834175093843958e-03, + 1.055014171251626547e-03, + 1.056192388564500088e-03, + 1.057368825216206936e-03, + 1.058543479393407680e-03, + 1.059716349285752058e-03, + 1.060887433085972407e-03, + 1.062056728989725380e-03, + 1.063224235195667179e-03, + 1.064389949905544417e-03, + 1.065553871324007853e-03, + 1.066715997658827493e-03, + 1.067876327120705028e-03, + 1.069034857923365986e-03, + 1.070191588283636065e-03, + 1.071346516421280452e-03, + 1.072499640559093593e-03, + 1.073650958922984198e-03, + 1.074800469741805670e-03, + 1.075948171247448912e-03, + 1.077094061674923210e-03, + 1.078238139262197503e-03, + 1.079380402250307725e-03, + 1.080520848883312346e-03, + 1.081659477408398193e-03, + 1.082796286075718472e-03, + 1.083931273138485354e-03, + 1.085064436853019421e-03, + 1.086195775478717785e-03, + 1.087325287277896013e-03, + 1.088452970516084117e-03, + 1.089578823461845921e-03, + 1.090702844386775379e-03, + 1.091825031565554901e-03, + 1.092945383275921532e-03, + 1.094063897798764956e-03, + 1.095180573417974196e-03, + 1.096295408420532805e-03, + 1.097408401096570257e-03, + 1.098519549739237480e-03, + 1.099628852644776462e-03, + 1.100736308112591376e-03, + 1.101841914445111752e-03, + 1.102945669947867288e-03, + 1.104047572929560926e-03, + 1.105147621701894293e-03, + 1.106245814579780856e-03, + 1.107342149881168983e-03, + 1.108436625927113495e-03, + 1.109529241041860457e-03, + 1.110619993552697986e-03, + 1.111708881790030414e-03, + 1.112795904087459384e-03, + 1.113881058781635318e-03, + 1.114964344212338509e-03, + 1.116045758722548518e-03, + 1.117125300658303004e-03, + 1.118202968368775790e-03, + 1.119278760206345383e-03, + 1.120352674526463354e-03, + 1.121424709687739120e-03, + 1.122494864051913057e-03, + 1.123563135983908111e-03, + 1.124629523851826754e-03, + 1.125694026026779473e-03, + 1.126756640883169258e-03, + 1.127817366798535264e-03, + 1.128876202153533724e-03, + 1.129933145331968531e-03, + 1.130988194720888591e-03, + 1.132041348710438643e-03, + 1.133092605693945777e-03, + 1.134141964067893844e-03, + 1.135189422232011931e-03, + 1.136234978589124736e-03, + 1.137278631545248853e-03, + 1.138320379509611627e-03, + 1.139360220894663741e-03, + 1.140398154115894458e-03, + 1.141434177592138893e-03, + 1.142468289745313679e-03, + 1.143500489000618845e-03, + 1.144530773786381263e-03, + 1.145559142534119043e-03, + 1.146585593678626537e-03, + 1.147610125657831008e-03, + 1.148632736912860719e-03, + 1.149653425888122775e-03, + 1.150672191031161312e-03, + 1.151689030792735994e-03, + 1.152703943626886413e-03, + 1.153716927990799815e-03, + 1.154727982344887867e-03, + 1.155737105152843461e-03, + 1.156744294881519508e-03, + 1.157749550000992467e-03, + 1.158752868984636074e-03, + 1.159754250308965215e-03, + 1.160753692453837587e-03, + 1.161751193902186988e-03, + 1.162746753140321034e-03, + 1.163740368657767638e-03, + 1.164732038947246607e-03, + 1.165721762504724930e-03, + 1.166709537829478151e-03, + 1.167695363423970232e-03, + 1.168679237793914059e-03, + 1.169661159448336703e-03, + 1.170641126899457348e-03, + 1.171619138662778354e-03, + 1.172595193257032140e-03, + 1.173569289204268997e-03, + 1.174541425029813294e-03, + 1.175511599262129029e-03, + 1.176479810433078742e-03, + 1.177446057077779313e-03, + 1.178410337734571607e-03, + 1.179372650945069044e-03, + 1.180332995254237396e-03, + 1.181291369210249291e-03, + 1.182247771364582653e-03, + 1.183202200271972785e-03, + 1.184154654490517967e-03, + 1.185105132581530272e-03, + 1.186053633109614277e-03, + 1.187000154642732768e-03, + 1.187944695752077501e-03, + 1.188887255012138376e-03, + 1.189827831000769137e-03, + 1.190766422299058356e-03, + 1.191703027491397516e-03, + 1.192637645165549754e-03, + 1.193570273912502406e-03, + 1.194500912326631374e-03, + 1.195429559005562999e-03, + 1.196356212550238243e-03, + 1.197280871564981863e-03, + 1.198203534657364070e-03, + 1.199124200438280753e-03, + 1.200042867522013766e-03, + 1.200959534526100823e-03, + 1.201874200071413774e-03, + 1.202786862782210002e-03, + 1.203697521286014238e-03, + 1.204606174213686222e-03, + 1.205512820199483581e-03, + 1.206417457880910697e-03, + 1.207320085898920363e-03, + 1.208220702897664853e-03, + 1.209119307524749408e-03, + 1.210015898431139429e-03, + 1.210910474271009772e-03, + 1.211803033702016016e-03, + 1.212693575385142891e-03, + 1.213582097984683460e-03, + 1.214468600168287912e-03, + 1.215353080607020153e-03, + 1.216235537975246571e-03, + 1.217115970950712360e-03, + 1.217994378214504875e-03, + 1.218870758451138202e-03, + 1.219745110348427388e-03, + 1.220617432597561084e-03, + 1.221487723893134288e-03, + 1.222355982933138584e-03, + 1.223222208418815781e-03, + 1.224086399054924619e-03, + 1.224948553549506805e-03, + 1.225808670614054628e-03, + 1.226666748963387574e-03, + 1.227522787315708710e-03, + 1.228376784392668864e-03, + 1.229228738919236306e-03, + 1.230078649623784787e-03, + 1.230926515238128230e-03, + 1.231772334497413177e-03, + 1.232616106140182761e-03, + 1.233457828908443273e-03, + 1.234297501547530589e-03, + 1.235135122806188014e-03, + 1.235970691436617244e-03, + 1.236804206194342835e-03, + 1.237635665838380476e-03, + 1.238465069131090834e-03, + 1.239292414838245697e-03, + 1.240117701729102125e-03, + 1.240940928576206000e-03, + 1.241762094155619270e-03, + 1.242581197246810662e-03, + 1.243398236632628148e-03, + 1.244213211099340355e-03, + 1.245026119436696633e-03, + 1.245836960437806708e-03, + 1.246645732899215060e-03, + 1.247452435620944071e-03, + 1.248257067406392763e-03, + 1.249059627062407704e-03, + 1.249860113399253519e-03, + 1.250658525230661242e-03, + 1.251454861373817694e-03, + 1.252249120649242316e-03, + 1.253041301881000109e-03, + 1.253831403896584103e-03, + 1.254619425526884565e-03, + 1.255405365606263599e-03, + 1.256189222972509383e-03, + 1.256970996466915324e-03, + 1.257750684934164261e-03, + 1.258528287222395684e-03, + 1.259303802183257348e-03, + 1.260077228671791861e-03, + 1.260848565546510841e-03, + 1.261617811669404248e-03, + 1.262384965905955338e-03, + 1.263150027124988880e-03, + 1.263912994198930495e-03, + 1.264673866003573769e-03, + 1.265432641418248521e-03, + 1.266189319325702846e-03, + 1.266943898612162304e-03, + 1.267696378167361155e-03, + 1.268446756884469926e-03, + 1.269195033660119052e-03, + 1.269941207394481054e-03, + 1.270685276991149765e-03, + 1.271427241357191065e-03, + 1.272167099403216607e-03, + 1.272904850043260656e-03, + 1.273640492194841670e-03, + 1.274374024779020625e-03, + 1.275105446720292170e-03, + 1.275834756946638828e-03, + 1.276561954389582179e-03, + 1.277287037984074433e-03, + 1.278010006668646101e-03, + 1.278730859385196310e-03, + 1.279449595079228509e-03, + 1.280166212699732076e-03, + 1.280880711199147617e-03, + 1.281593089533432242e-03, + 1.282303346662089054e-03, + 1.283011481548074553e-03, + 1.283717493157870634e-03, + 1.284421380461450105e-03, + 1.285123142432341306e-03, + 1.285822778047533135e-03, + 1.286520286287528821e-03, + 1.287215666136380188e-03, + 1.287908916581660332e-03, + 1.288600036614368860e-03, + 1.289289025229118811e-03, + 1.289975881424040155e-03, + 1.290660604200688727e-03, + 1.291343192564248102e-03, + 1.292023645523360459e-03, + 1.292701962090240424e-03, + 1.293378141280582695e-03, + 1.294052182113622756e-03, + 1.294724083612155963e-03, + 1.295393844802469668e-03, + 1.296061464714386591e-03, + 1.296726942381293875e-03, + 1.297390276840083454e-03, + 1.298051467131177208e-03, + 1.298710512298570981e-03, + 1.299367411389769095e-03, + 1.300022163455804517e-03, + 1.300674767551300223e-03, + 1.301325222734363600e-03, + 1.301973528066701366e-03, + 1.302619682613520482e-03, + 1.303263685443580835e-03, + 1.303905535629228856e-03, + 1.304545232246319018e-03, + 1.305182774374254173e-03, + 1.305818161096033471e-03, + 1.306451391498162154e-03, + 1.307082464670709454e-03, + 1.307711379707332229e-03, + 1.308338135705205355e-03, + 1.308962731765066830e-03, + 1.309585166991249867e-03, + 1.310205440491594205e-03, + 1.310823551377572095e-03, + 1.311439498764118295e-03, + 1.312053281769821975e-03, + 1.312664899516837597e-03, + 1.313274351130789717e-03, + 1.313881635740973570e-03, + 1.314486752480227994e-03, + 1.315089700484934135e-03, + 1.315690478895067267e-03, + 1.316289086854150392e-03, + 1.316885523509334251e-03, + 1.317479788011291942e-03, + 1.318071879514282670e-03, + 1.318661797176182105e-03, + 1.319249540158395212e-03, + 1.319835107625917832e-03, + 1.320418498747352948e-03, + 1.320999712694892253e-03, + 1.321578748644236566e-03, + 1.322155605774762372e-03, + 1.322730283269371978e-03, + 1.323302780314591530e-03, + 1.323873096100512898e-03, + 1.324441229820807120e-03, + 1.325007180672780780e-03, + 1.325570947857286890e-03, + 1.326132530578773673e-03, + 1.326691928045323600e-03, + 1.327249139468573589e-03, + 1.327804164063752738e-03, + 1.328357001049734146e-03, + 1.328907649648937775e-03, + 1.329456109087395928e-03, + 1.330002378594767349e-03, + 1.330546457404273688e-03, + 1.331088344752776693e-03, + 1.331628039880712730e-03, + 1.332165542032114893e-03, + 1.332700850454678499e-03, + 1.333233964399612543e-03, + 1.333764883121810576e-03, + 1.334293605879758975e-03, + 1.334820131935537382e-03, + 1.335344460554826074e-03, + 1.335866591006953886e-03, + 1.336386522564829470e-03, + 1.336904254504990520e-03, + 1.337419786107571030e-03, + 1.337933116656348778e-03, + 1.338444245438696325e-03, + 1.338953171745598794e-03, + 1.339459894871681189e-03, + 1.339964414115195606e-03, + 1.340466728777949890e-03, + 1.340966838165441643e-03, + 1.341464741586778642e-03, + 1.341960438354665832e-03, + 1.342453927785443703e-03, + 1.342945209199067911e-03, + 1.343434281919152207e-03, + 1.343921145272906426e-03, + 1.344405798591158602e-03, + 1.344888241208414817e-03, + 1.345368472462756199e-03, + 1.345846491695907015e-03, + 1.346322298253259386e-03, + 1.346795891483785253e-03, + 1.347267270740109667e-03, + 1.347736435378511875e-03, + 1.348203384758879563e-03, + 1.348668118244729028e-03, + 1.349130635203248541e-03, + 1.349590935005213783e-03, + 1.350049017025096477e-03, + 1.350504880640959662e-03, + 1.350958525234507990e-03, + 1.351409950191125031e-03, + 1.351859154899792172e-03, + 1.352306138753144125e-03, + 1.352750901147481725e-03, + 1.353193441482722272e-03, + 1.353633759162420564e-03, + 1.354071853593818335e-03, + 1.354507724187754489e-03, + 1.354941370358742070e-03, + 1.355372791524921215e-03, + 1.355801987108103601e-03, + 1.356228956533755536e-03, + 1.356653699230936589e-03, + 1.357076214632410831e-03, + 1.357496502174589158e-03, + 1.357914561297512805e-03, + 1.358330391444870699e-03, + 1.358743992064037837e-03, + 1.359155362606014571e-03, + 1.359564502525454363e-03, + 1.359971411280671595e-03, + 1.360376088333655441e-03, + 1.360778533150021515e-03, + 1.361178745199050468e-03, + 1.361576723953691458e-03, + 1.361972468890565620e-03, + 1.362365979489890385e-03, + 1.362757255235605685e-03, + 1.363146295615309768e-03, + 1.363533100120204117e-03, + 1.363917668245217922e-03, + 1.364299999488892065e-03, + 1.364680093353478002e-03, + 1.365057949344844522e-03, + 1.365433566972541713e-03, + 1.365806945749805301e-03, + 1.366178085193500919e-03, + 1.366546984824174417e-03, + 1.366913644166050344e-03, + 1.367278062746999203e-03, + 1.367640240098566074e-03, + 1.368000175755974520e-03, + 1.368357869258104900e-03, + 1.368713320147498490e-03, + 1.369066527970395431e-03, + 1.369417492276668374e-03, + 1.369766212619894690e-03, + 1.370112688557299872e-03, + 1.370456919649781606e-03, + 1.370798905461930589e-03, + 1.371138645561989326e-03, + 1.371476139521869914e-03, + 1.371811386917185047e-03, + 1.372144387327197497e-03, + 1.372475140334841791e-03, + 1.372803645526753059e-03, + 1.373129902493216287e-03, + 1.373453910828205567e-03, + 1.373775670129356993e-03, + 1.374095179998003355e-03, + 1.374412440039160044e-03, + 1.374727449861475612e-03, + 1.375040209077323496e-03, + 1.375350717302752579e-03, + 1.375658974157445555e-03, + 1.375964979264816075e-03, + 1.376268732251936322e-03, + 1.376570232749560864e-03, + 1.376869480392124701e-03, + 1.377166474817728518e-03, + 1.377461215668188566e-03, + 1.377753702588976371e-03, + 1.378043935229244545e-03, + 1.378331913241846512e-03, + 1.378617636283309845e-03, + 1.378901104013830620e-03, + 1.379182316097316355e-03, + 1.379461272201338955e-03, + 1.379737971997152925e-03, + 1.380012415159711636e-03, + 1.380284601367640432e-03, + 1.380554530303264608e-03, + 1.380822201652579483e-03, + 1.381087615105263192e-03, + 1.381350770354704662e-03, + 1.381611667097955689e-03, + 1.381870305035759125e-03, + 1.382126683872557773e-03, + 1.382380803316467927e-03, + 1.382632663079291085e-03, + 1.382882262876538454e-03, + 1.383129602427385189e-03, + 1.383374681454698808e-03, + 1.383617499685052847e-03, + 1.383858056848692166e-03, + 1.384096352679555723e-03, + 1.384332386915266590e-03, + 1.384566159297146055e-03, + 1.384797669570212754e-03, + 1.385026917483146670e-03, + 1.385253902788340531e-03, + 1.385478625241885926e-03, + 1.385701084603537317e-03, + 1.385921280636757784e-03, + 1.386139213108701466e-03, + 1.386354881790203804e-03, + 1.386568286455805606e-03, + 1.386779426883716620e-03, + 1.386988302855866927e-03, + 1.387194914157859884e-03, + 1.387399260578987955e-03, + 1.387601341912249840e-03, + 1.387801157954336381e-03, + 1.387998708505602157e-03, + 1.388193993370133569e-03, + 1.388387012355680322e-03, + 1.388577765273704212e-03, + 1.388766251939349203e-03, + 1.388952472171443159e-03, + 1.389136425792531458e-03, + 1.389318112628836876e-03, + 1.389497532510269341e-03, + 1.389674685270446105e-03, + 1.389849570746671354e-03, + 1.390022188779934048e-03, + 1.390192539214936537e-03, + 1.390360621900057917e-03, + 1.390526436687369426e-03, + 1.390689983432653312e-03, + 1.390851261995367264e-03, + 1.391010272238665238e-03, + 1.391167014029408072e-03, + 1.391321487238132704e-03, + 1.391473691739089028e-03, + 1.391623627410192411e-03, + 1.391771294133074431e-03, + 1.391916691793060540e-03, + 1.392059820279159229e-03, + 1.392200679484073078e-03, + 1.392339269304207656e-03, + 1.392475589639654383e-03, + 1.392609640394195736e-03, + 1.392741421475309589e-03, + 1.392870932794179400e-03, + 1.392998174265665376e-03, + 1.393123145808318128e-03, + 1.393245847344400578e-03, + 1.393366278799860417e-03, + 1.393484440104325334e-03, + 1.393600331191133159e-03, + 1.393713951997308659e-03, + 1.393825302463563972e-03, + 1.393934382534308585e-03, + 1.394041192157648244e-03, + 1.394145731285372164e-03, + 1.394247999872968860e-03, + 1.394347997879612049e-03, + 1.394445725268176478e-03, + 1.394541182005222101e-03, + 1.394634368060997543e-03, + 1.394725283409451811e-03, + 1.394813928028227788e-03, + 1.394900301898634046e-03, + 1.394984405005708595e-03, + 1.395066237338145592e-03, + 1.395145798888353236e-03, + 1.395223089652413871e-03, + 1.395298109630110223e-03, + 1.395370858824914340e-03, + 1.395441337243990198e-03, + 1.395509544898175048e-03, + 1.395575481802014545e-03, + 1.395639147973735429e-03, + 1.395700543435252679e-03, + 1.395759668212178837e-03, + 1.395816522333796035e-03, + 1.395871105833092641e-03, + 1.395923418746738759e-03, + 1.395973461115093380e-03, + 1.396021232982191159e-03, + 1.396066734395774072e-03, + 1.396109965407257153e-03, + 1.396150926071748448e-03, + 1.396189616448032097e-03, + 1.396226036598588937e-03, + 1.396260186589583707e-03, + 1.396292066490865697e-03, + 1.396321676375962030e-03, + 1.396349016322094138e-03, + 1.396374086410166705e-03, + 1.396396886724757692e-03, + 1.396417417354146309e-03, + 1.396435678390281140e-03, + 1.396451669928799443e-03, + 1.396465392069016088e-03, + 1.396476844913934834e-03, + 1.396486028570242044e-03, + 1.396492943148295836e-03, + 1.396497588762143438e-03, + 1.396499965529516413e-03, + 1.396500073571809841e-03, + 1.396497913014118752e-03, + 1.396493483985209068e-03, + 1.396486786617522806e-03, + 1.396477821047188489e-03, + 1.396466587413997072e-03, + 1.396453085861439677e-03, + 1.396437316536669210e-03, + 1.396419279590520096e-03, + 1.396398975177501767e-03, + 1.396376403455803442e-03, + 1.396351564587282844e-03, + 1.396324458737484200e-03, + 1.396295086075615690e-03, + 1.396263446774562026e-03, + 1.396229541010885963e-03, + 1.396193368964815948e-03, + 1.396154930820266930e-03, + 1.396114226764810437e-03, + 1.396071256989696264e-03, + 1.396026021689849867e-03, + 1.395978521063857185e-03, + 1.395928755313983072e-03, + 1.395876724646159589e-03, + 1.395822429269983830e-03, + 1.395765869398727689e-03, + 1.395707045249330912e-03, + 1.395645957042391996e-03, + 1.395582605002184231e-03, + 1.395516989356645511e-03, + 1.395449110337380503e-03, + 1.395378968179658260e-03, + 1.395306563122411785e-03, + 1.395231895408231750e-03, + 1.395154965283386004e-03, + 1.395075772997793773e-03, + 1.394994318805044958e-03, + 1.394910602962380619e-03, + 1.394824625730710756e-03, + 1.394736387374604985e-03, + 1.394645888162290154e-03, + 1.394553128365653158e-03, + 1.394458108260235524e-03, + 1.394360828125247934e-03, + 1.394261288243544422e-03, + 1.394159488901645146e-03, + 1.394055430389721205e-03, + 1.393949113001598109e-03, + 1.393840537034755130e-03, + 1.393729702790335494e-03, + 1.393616610573120357e-03, + 1.393501260691554829e-03, + 1.393383653457730192e-03, + 1.393263789187388886e-03, + 1.393141668199925380e-03, + 1.393017290818381396e-03, + 1.392890657369451985e-03, + 1.392761768183472951e-03, + 1.392630623594435591e-03, + 1.392497223939966966e-03, + 1.392361569561354189e-03, + 1.392223660803517098e-03, + 1.392083498015024090e-03, + 1.391941081548094070e-03, + 1.391796411758568263e-03, + 1.391649489005956615e-03, + 1.391500313653394431e-03, + 1.391348886067659066e-03, + 1.391195206619162553e-03, + 1.391039275681967436e-03, + 1.390881093633772455e-03, + 1.390720660855906910e-03, + 1.390557977733332395e-03, + 1.390393044654658411e-03, + 1.390225862012123932e-03, + 1.390056430201597627e-03, + 1.389884749622588697e-03, + 1.389710820678234518e-03, + 1.389534643775303027e-03, + 1.389356219324188596e-03, + 1.389175547738926136e-03, + 1.388992629437172223e-03, + 1.388807464840214646e-03, + 1.388620054372947249e-03, + 1.388430398463935201e-03, + 1.388238497545330645e-03, + 1.388044352052912166e-03, + 1.387847962426097580e-03, + 1.387649329107918132e-03, + 1.387448452545039096e-03, + 1.387245333187720527e-03, + 1.387039971489868653e-03, + 1.386832367908993370e-03, + 1.386622522906220826e-03, + 1.386410436946305339e-03, + 1.386196110497608805e-03, + 1.385979544032107848e-03, + 1.385760738025399244e-03, + 1.385539692956692763e-03, + 1.385316409308794258e-03, + 1.385090887568139924e-03, + 1.384863128224771579e-03, + 1.384633131772324303e-03, + 1.384400898708071327e-03, + 1.384166429532859626e-03, + 1.383929724751162618e-03, + 1.383690784871062160e-03, + 1.383449610404219928e-03, + 1.383206201865930327e-03, + 1.382960559775072568e-03, + 1.382712684654125194e-03, + 1.382462577029167821e-03, + 1.382210237429898477e-03, + 1.381955666389577016e-03, + 1.381698864445090377e-03, + 1.381439832136910958e-03, + 1.381178570009097047e-03, + 1.380915078609314508e-03, + 1.380649358488803598e-03, + 1.380381410202426249e-03, + 1.380111234308601656e-03, + 1.379838831369346614e-03, + 1.379564201950284627e-03, + 1.379287346620606874e-03, + 1.379008265953089122e-03, + 1.378726960524101703e-03, + 1.378443430913595634e-03, + 1.378157677705106089e-03, + 1.377869701485737869e-03, + 1.377579502846188603e-03, + 1.377287082380735089e-03, + 1.376992440687212259e-03, + 1.376695578367055899e-03, + 1.376396496025275324e-03, + 1.376095194270432996e-03, + 1.375791673714668812e-03, + 1.375485934973724169e-03, + 1.375177978666874967e-03, + 1.374867805416987764e-03, + 1.374555415850482265e-03, + 1.374240810597355611e-03, + 1.373923990291177604e-03, + 1.373604955569056882e-03, + 1.373283707071687757e-03, + 1.372960245443328097e-03, + 1.372634571331775039e-03, + 1.372306685388402937e-03, + 1.371976588268148615e-03, + 1.371644280629479712e-03, + 1.371309763134448021e-03, + 1.370973036448652847e-03, + 1.370634101241230592e-03, + 1.370292958184895528e-03, + 1.369949607955878645e-03, + 1.369604051233991619e-03, + 1.369256288702588647e-03, + 1.368906321048545850e-03, + 1.368554148962323504e-03, + 1.368199773137896433e-03, + 1.367843194272782637e-03, + 1.367484413068057814e-03, + 1.367123430228335415e-03, + 1.366760246461747345e-03, + 1.366394862479987328e-03, + 1.366027278998271661e-03, + 1.365657496735367838e-03, + 1.365285516413541856e-03, + 1.364911338758623268e-03, + 1.364534964499973090e-03, + 1.364156394370458431e-03, + 1.363775629106472875e-03, + 1.363392669447983539e-03, + 1.363007516138426984e-03, + 1.362620169924781861e-03, + 1.362230631557562839e-03, + 1.361838901790786340e-03, + 1.361444981382008276e-03, + 1.361048871092280241e-03, + 1.360650571686182909e-03, + 1.360250083931816706e-03, + 1.359847408600776009e-03, + 1.359442546468191647e-03, + 1.359035498312692949e-03, + 1.358626264916408836e-03, + 1.358214847064990799e-03, + 1.357801245547604662e-03, + 1.357385461156891985e-03, + 1.356967494689024492e-03, + 1.356547346943657445e-03, + 1.356125018723954370e-03, + 1.355700510836593126e-03, + 1.355273824091711042e-03, + 1.354844959302976479e-03, + 1.354413917287547410e-03, + 1.353980698866046701e-03, + 1.353545304862618709e-03, + 1.353107736104898267e-03, + 1.352667993423977083e-03, + 1.352226077654463798e-03, + 1.351781989634450159e-03, + 1.351335730205485003e-03, + 1.350887300212628029e-03, + 1.350436700504409901e-03, + 1.349983931932846777e-03, + 1.349528995353415587e-03, + 1.349071891625057938e-03, + 1.348612621610248852e-03, + 1.348151186174881841e-03, + 1.347687586188318996e-03, + 1.347221822523425247e-03, + 1.346753896056520012e-03, + 1.346283807667371336e-03, + 1.345811558239231025e-03, + 1.345337148658811224e-03, + 1.344860579816296777e-03, + 1.344381852605292102e-03, + 1.343900967922898168e-03, + 1.343417926669668479e-03, + 1.342932729749591724e-03, + 1.342445378070103272e-03, + 1.341955872542144801e-03, + 1.341464214080048505e-03, + 1.340970403601596510e-03, + 1.340474442028075303e-03, + 1.339976330284149090e-03, + 1.339476069297971042e-03, + 1.338973660001095689e-03, + 1.338469103328553296e-03, + 1.337962400218802375e-03, + 1.337453551613712772e-03, + 1.336942558458619010e-03, + 1.336429421702292099e-03, + 1.335914142296888794e-03, + 1.335396721198042671e-03, + 1.334877159364807747e-03, + 1.334355457759635929e-03, + 1.333831617348420163e-03, + 1.333305639100497040e-03, + 1.332777523988574585e-03, + 1.332247272988829187e-03, + 1.331714887080816907e-03, + 1.331180367247528995e-03, + 1.330643714475375624e-03, + 1.330104929754148376e-03, + 1.329564014077077487e-03, + 1.329020968440805181e-03, + 1.328475793845341427e-03, + 1.327928491294138973e-03, + 1.327379061794046501e-03, + 1.326827506355282614e-03, + 1.326273825991506521e-03, + 1.325718021719749081e-03, + 1.325160094560458128e-03, + 1.324600045537446423e-03, + 1.324037875677905752e-03, + 1.323473586012499517e-03, + 1.322907177575188180e-03, + 1.322338651403334427e-03, + 1.321768008537746973e-03, + 1.321195250022551325e-03, + 1.320620376905258953e-03, + 1.320043390236792227e-03, + 1.319464291071427171e-03, + 1.318883080466835096e-03, + 1.318299759484018417e-03, + 1.317714329187390232e-03, + 1.317126790644729002e-03, + 1.316537144927144073e-03, + 1.315945393109152657e-03, + 1.315351536268622151e-03, + 1.314755575486757991e-03, + 1.314157511848152229e-03, + 1.313557346440759029e-03, + 1.312955080355847175e-03, + 1.312350714688094618e-03, + 1.311744250535466609e-03, + 1.311135688999333230e-03, + 1.310525031184403251e-03, + 1.309912278198685108e-03, + 1.309297431153584471e-03, + 1.308680491163840501e-03, + 1.308061459347492237e-03, + 1.307440336825950152e-03, + 1.306817124723974252e-03, + 1.306191824169605558e-03, + 1.305564436294262814e-03, + 1.304934962232687625e-03, + 1.304303403122919524e-03, + 1.303669760106354082e-03, + 1.303034034327699760e-03, + 1.302396226935001108e-03, + 1.301756339079589977e-03, + 1.301114371916109154e-03, + 1.300470326602590860e-03, + 1.299824204300304960e-03, + 1.299176006173837676e-03, + 1.298525733391118478e-03, + 1.297873387123384516e-03, + 1.297218968545129671e-03, + 1.296562478834191500e-03, + 1.295903919171706572e-03, + 1.295243290742107648e-03, + 1.294580594733093322e-03, + 1.293915832335693723e-03, + 1.293249004744229753e-03, + 1.292580113156284894e-03, + 1.291909158772719520e-03, + 1.291236142797759371e-03, + 1.290561066438822724e-03, + 1.289883930906668722e-03, + 1.289204737415288078e-03, + 1.288523487181984827e-03, + 1.287840181427343366e-03, + 1.287154821375175763e-03, + 1.286467408252606756e-03, + 1.285777943290027352e-03, + 1.285086427721059263e-03, + 1.284392862782622342e-03, + 1.283697249714905097e-03, + 1.282999589761309178e-03, + 1.282299884168535895e-03, + 1.281598134186541331e-03, + 1.280894341068501002e-03, + 1.280188506070865581e-03, + 1.279480630453356778e-03, + 1.278770715478881473e-03, + 1.278058762413656615e-03, + 1.277344772527064156e-03, + 1.276628747091832329e-03, + 1.275910687383840277e-03, + 1.275190594682205436e-03, + 1.274468470269323221e-03, + 1.273744315430810209e-03, + 1.273018131455465546e-03, + 1.272289919635367006e-03, + 1.271559681265812007e-03, + 1.270827417645268610e-03, + 1.270093130075476348e-03, + 1.269356819861377703e-03, + 1.268618488311139573e-03, + 1.267878136736115546e-03, + 1.267135766450844811e-03, + 1.266391378773183349e-03, + 1.265644975024080151e-03, + 1.264896556527719687e-03, + 1.264146124611505856e-03, + 1.263393680606047023e-03, + 1.262639225845103982e-03, + 1.261882761665665195e-03, + 1.261124289407909932e-03, + 1.260363810415217594e-03, + 1.259601326034098757e-03, + 1.258836837614305112e-03, + 1.258070346508767014e-03, + 1.257301854073562689e-03, + 1.256531361667930597e-03, + 1.255758870654379153e-03, + 1.254984382398485277e-03, + 1.254207898269044672e-03, + 1.253429419638036908e-03, + 1.252648947880546492e-03, + 1.251866484374889290e-03, + 1.251082030502480248e-03, + 1.250295587647933578e-03, + 1.249507157199030230e-03, + 1.248716740546639177e-03, + 1.247924339084842968e-03, + 1.247129954210870291e-03, + 1.246333587325038289e-03, + 1.245535239830863807e-03, + 1.244734913135004620e-03, + 1.243932608647203278e-03, + 1.243128327780388797e-03, + 1.242322071950631348e-03, + 1.241513842577069392e-03, + 1.240703641082044556e-03, + 1.239891468890940741e-03, + 1.239077327432381442e-03, + 1.238261218138008790e-03, + 1.237443142442600213e-03, + 1.236623101784087948e-03, + 1.235801097603515244e-03, + 1.234977131344981716e-03, + 1.234151204455748293e-03, + 1.233323318386184315e-03, + 1.232493474589708765e-03, + 1.231661674522896302e-03, + 1.230827919645397905e-03, + 1.229992211419981413e-03, + 1.229154551312457372e-03, + 1.228314940791770541e-03, + 1.227473381329962374e-03, + 1.226629874402125489e-03, + 1.225784421486408437e-03, + 1.224937024064159247e-03, + 1.224087683619670859e-03, + 1.223236401640399916e-03, + 1.222383179616809337e-03, + 1.221528019042482371e-03, + 1.220670921414070999e-03, + 1.219811888231240845e-03, + 1.218950920996770930e-03, + 1.218088021216495991e-03, + 1.217223190399260293e-03, + 1.216356430057013256e-03, + 1.215487741704761315e-03, + 1.214617126860497234e-03, + 1.213744587045320449e-03, + 1.212870123783372882e-03, + 1.211993738601786904e-03, + 1.211115433030799824e-03, + 1.210235208603610991e-03, + 1.209353066856520354e-03, + 1.208469009328843897e-03, + 1.207583037562860295e-03, + 1.206695153104001515e-03, + 1.205805357500606056e-03, + 1.204913652304059673e-03, + 1.204020039068796465e-03, + 1.203124519352265264e-03, + 1.202227094714873904e-03, + 1.201327766720092227e-03, + 1.200426536934398082e-03, + 1.199523406927217048e-03, + 1.198618378271033239e-03, + 1.197711452541304301e-03, + 1.196802631316511503e-03, + 1.195891916178084711e-03, + 1.194979308710426239e-03, + 1.194064810501036617e-03, + 1.193148423140297535e-03, + 1.192230148221578093e-03, + 1.191309987341276216e-03, + 1.190387942098734960e-03, + 1.189464014096302136e-03, + 1.188538204939234254e-03, + 1.187610516235807325e-03, + 1.186680949597277400e-03, + 1.185749506637788194e-03, + 1.184816188974510730e-03, + 1.183880998227572652e-03, + 1.182943936020012902e-03, + 1.182005003977807745e-03, + 1.181064203729996530e-03, + 1.180121536908423658e-03, + 1.179177005147976449e-03, + 1.178230610086411240e-03, + 1.177282353364469394e-03, + 1.176332236625833062e-03, + 1.175380261517054714e-03, + 1.174426429687675530e-03, + 1.173470742790164688e-03, + 1.172513202479852574e-03, + 1.171553810415044842e-03, + 1.170592568256973625e-03, + 1.169629477669719688e-03, + 1.168664540320339500e-03, + 1.167697757878793235e-03, + 1.166729132017886887e-03, + 1.165758664413396725e-03, + 1.164786356743992973e-03, + 1.163812210691183647e-03, + 1.162836227939452677e-03, + 1.161858410176073216e-03, + 1.160878759091351796e-03, + 1.159897276378354242e-03, + 1.158913963733052043e-03, + 1.157928822854336444e-03, + 1.156941855443976378e-03, + 1.155953063206555369e-03, + 1.154962447849582768e-03, + 1.153970011083421112e-03, + 1.152975754621321037e-03, + 1.151979680179322611e-03, + 1.150981789476399541e-03, + 1.149982084234375248e-03, + 1.148980566177888393e-03, + 1.147977237034399382e-03, + 1.146972098534354079e-03, + 1.145965152410905168e-03, + 1.144956400400072398e-03, + 1.143945844240762530e-03, + 1.142933485674681084e-03, + 1.141919326446406069e-03, + 1.140903368303268495e-03, + 1.139885612995493762e-03, + 1.138866062276128795e-03, + 1.137844717900977866e-03, + 1.136821581628732038e-03, + 1.135796655220890896e-03, + 1.134769940441700525e-03, + 1.133741439058281444e-03, + 1.132711152840565295e-03, + 1.131679083561216125e-03, + 1.130645232995755502e-03, + 1.129609602922515034e-03, + 1.128572195122547021e-03, + 1.127533011379779938e-03, + 1.126492053480845825e-03, + 1.125449323215221885e-03, + 1.124404822375175625e-03, + 1.123358552755670745e-03, + 1.122310516154527600e-03, + 1.121260714372334082e-03, + 1.120209149212371890e-03, + 1.119155822480768321e-03, + 1.118100735986401724e-03, + 1.117043891540852717e-03, + 1.115985290958514554e-03, + 1.114924936056545203e-03, + 1.113862828654777360e-03, + 1.112798970575886934e-03, + 1.111733363645171432e-03, + 1.110666009690841182e-03, + 1.109596910543693199e-03, + 1.108526068037272517e-03, + 1.107453484007984946e-03, + 1.106379160294828409e-03, + 1.105303098739552530e-03, + 1.104225301186668399e-03, + 1.103145769483388937e-03, + 1.102064505479661422e-03, + 1.100981511028079453e-03, + 1.099896787984016525e-03, + 1.098810338205550349e-03, + 1.097722163553389776e-03, + 1.096632265891019000e-03, + 1.095540647084612554e-03, + 1.094447309002997580e-03, + 1.093352253517667055e-03, + 1.092255482502938087e-03, + 1.091156997835647036e-03, + 1.090056801395438780e-03, + 1.088954895064528187e-03, + 1.087851280727884003e-03, + 1.086745960273141675e-03, + 1.085638935590538300e-03, + 1.084530208573041866e-03, + 1.083419781116285114e-03, + 1.082307655118485736e-03, + 1.081193832480587544e-03, + 1.080078315106189780e-03, + 1.078961104901467963e-03, + 1.077842203775305954e-03, + 1.076721613639244988e-03, + 1.075599336407379817e-03, + 1.074475373996540851e-03, + 1.073349728326101604e-03, + 1.072222401318126796e-03, + 1.071093394897312942e-03, + 1.069962710990878191e-03, + 1.068830351528833817e-03, + 1.067696318443660253e-03, + 1.066560613670469726e-03, + 1.065423239147043986e-03, + 1.064284196813758843e-03, + 1.063143488613524975e-03, + 1.062001116491927783e-03, + 1.060857082397118978e-03, + 1.059711388279874038e-03, + 1.058564036093480104e-03, + 1.057415027793882781e-03, + 1.056264365339618701e-03, + 1.055112050691743965e-03, + 1.053958085813870571e-03, + 1.052802472672340322e-03, + 1.051645213235899998e-03, + 1.050486309475902151e-03, + 1.049325763366300551e-03, + 1.048163576883590119e-03, + 1.046999752006849867e-03, + 1.045834290717624496e-03, + 1.044667195000098525e-03, + 1.043498466840989819e-03, + 1.042328108229491259e-03, + 1.041156121157405185e-03, + 1.039982507619079859e-03, + 1.038807269611308204e-03, + 1.037630409133494334e-03, + 1.036451928187566386e-03, + 1.035271828777902144e-03, + 1.034090112911498389e-03, + 1.032906782597760569e-03, + 1.031721839848692094e-03, + 1.030535286678800014e-03, + 1.029347125105017826e-03, + 1.028157357146860509e-03, + 1.026965984826345600e-03, + 1.025773010167901683e-03, + 1.024578435198529505e-03, + 1.023382261947717187e-03, + 1.022184492447364770e-03, + 1.020985128731924938e-03, + 1.019784172838332113e-03, + 1.018581626805913120e-03, + 1.017377492676549595e-03, + 1.016171772494561332e-03, + 1.014964468306759834e-03, + 1.013755582162365922e-03, + 1.012545116113027291e-03, + 1.011333072213005000e-03, + 1.010119452518855147e-03, + 1.008904259089604075e-03, + 1.007687493986772443e-03, + 1.006469159274328822e-03, + 1.005249257018587779e-03, + 1.004027789288385736e-03, + 1.002804758154955851e-03, + 1.001580165691985267e-03, + 1.000354013975504955e-03, + 9.991263050840462710e-04, + 9.978970410985488031e-04, + 9.966662241023170003e-04, + 9.954338561810355691e-04, + 9.941999394229563899e-04, + 9.929644759185663177e-04, + 9.917274677607526307e-04, + 9.904889170449624088e-04, + 9.892488258688365062e-04, + 9.880071963325458718e-04, + 9.867640305385328575e-04, + 9.855193305916981356e-04, + 9.842730985993243704e-04, + 9.830253366709847118e-04, + 9.817760469186997876e-04, + 9.805252314568605083e-04, + 9.792728924021352598e-04, + 9.780190318736320994e-04, + 9.767636519928161402e-04, + 9.755067548834223806e-04, + 9.742483426716142154e-04, + 9.729884174859017949e-04, + 9.717269814570493255e-04, + 9.704640367182713109e-04, + 9.691995854050048688e-04, + 9.679336296551028281e-04, + 9.666661716087372345e-04, + 9.653972134083283353e-04, + 9.641267571986889950e-04, + 9.628548051269598604e-04, + 9.615813593424974706e-04, + 9.603064219970590051e-04, + 9.590299952447001522e-04, + 9.577520812416995396e-04, + 9.564726821467143180e-04, + 9.551918001206658859e-04, + 9.539094373267971352e-04, + 9.526255959305778009e-04, + 9.513402780997348186e-04, + 9.500534860044413006e-04, + 9.487652218169789157e-04, + 9.474754877119000857e-04, + 9.461842858661953862e-04, + 9.448916184589492041e-04, + 9.435974876715337014e-04, + 9.423018956876429673e-04, + 9.410048446931804783e-04, + 9.397063368763467015e-04, + 9.384063744274916434e-04, + 9.371049595392924418e-04, + 9.358020944066693407e-04, + 9.344977812266917977e-04, + 9.331920221987465361e-04, + 9.318848195244438691e-04, + 9.305761754075369272e-04, + 9.292660920540841800e-04, + 9.279545716723557611e-04, + 9.266416164727589834e-04, + 9.253272286680140884e-04, + 9.240114104729389233e-04, + 9.226941641046348822e-04, + 9.213754917824063494e-04, + 9.200553957276626877e-04, + 9.187338781640893258e-04, + 9.174109413175562510e-04, + 9.160865874160365862e-04, + 9.147608186897687862e-04, + 9.134336373711615534e-04, + 9.121050456947071014e-04, + 9.107750458971637349e-04, + 9.094436402174433092e-04, + 9.081108308965354448e-04, + 9.067766201777019246e-04, + 9.054410103062134497e-04, + 9.041040035296917052e-04, + 9.027656020977322749e-04, + 9.014258082620688972e-04, + 9.000846242767469385e-04, + 8.987420523977813266e-04, + 8.973980948833312158e-04, + 8.960527539937502943e-04, + 8.947060319915171780e-04, + 8.933579311411324114e-04, + 8.920084537093098294e-04, + 8.906576019648361530e-04, + 8.893053781786426550e-04, + 8.879517846236718035e-04, + 8.865968235750539862e-04, + 8.852404973100212087e-04, + 8.838828081078291396e-04, + 8.825237582498026475e-04, + 8.811633500195246689e-04, + 8.798015857024484975e-04, + 8.784384675862571970e-04, + 8.770739979605862626e-04, + 8.757081791172285348e-04, + 8.743410133500476803e-04, + 8.729725029548737834e-04, + 8.716026502296856000e-04, + 8.702314574745204610e-04, + 8.688589269913685621e-04, + 8.674850610843624823e-04, + 8.661098620596747273e-04, + 8.647333322254265476e-04, + 8.633554738918619532e-04, + 8.619762893712620616e-04, + 8.605957809778354848e-04, + 8.592139510279139195e-04, + 8.578308018398414503e-04, + 8.564463357338895477e-04, + 8.550605550324612237e-04, + 8.536734620598186805e-04, + 8.522850591424342660e-04, + 8.508953486086017880e-04, + 8.495043327886453314e-04, + 8.481120140149320513e-04, + 8.467183946218243603e-04, + 8.453234769455758449e-04, + 8.439272633245098335e-04, + 8.425297560989336359e-04, + 8.411309576110224256e-04, + 8.397308702050235033e-04, + 8.383294962271110136e-04, + 8.369268380254559847e-04, + 8.355228979501192095e-04, + 8.341176783530858310e-04, + 8.327111815884773042e-04, + 8.313034100121731180e-04, + 8.298943659820224314e-04, + 8.284840518578762743e-04, + 8.270724700015194596e-04, + 8.256596227765681259e-04, + 8.242455125486650028e-04, + 8.228301416853333683e-04, + 8.214135125560533771e-04, + 8.199956275321199214e-04, + 8.185764889868337758e-04, + 8.171560992954005499e-04, + 8.157344608348624914e-04, + 8.143115759841326393e-04, + 8.128874471242025562e-04, + 8.114620766377313079e-04, + 8.100354669093959856e-04, + 8.086076203257509766e-04, + 8.071785392751349396e-04, + 8.057482261478846096e-04, + 8.043166833360825040e-04, + 8.028839132337704017e-04, + 8.014499182368517655e-04, + 8.000147007429936211e-04, + 7.985782631518119562e-04, + 7.971406078647694802e-04, + 7.957017372850844423e-04, + 7.942616538179093086e-04, + 7.928203598702309070e-04, + 7.913778578507828232e-04, + 7.899341501702139947e-04, + 7.884892392410067447e-04, + 7.870431274773656517e-04, + 7.855958172954420875e-04, + 7.841473111130397482e-04, + 7.826976113499945582e-04, + 7.812467204277606138e-04, + 7.797946407696204098e-04, + 7.783413748007234371e-04, + 7.768869249480059519e-04, + 7.754312936401045646e-04, + 7.739744833075294954e-04, + 7.725164963825790305e-04, + 7.710573352992290425e-04, + 7.695970024933256525e-04, + 7.681355004024516568e-04, + 7.666728314659893018e-04, + 7.652089981250109968e-04, + 7.637440028223212727e-04, + 7.622778480026689597e-04, + 7.608105361123553576e-04, + 7.593420695994276565e-04, + 7.578724509138697572e-04, + 7.564016825071742276e-04, + 7.549297668327240507e-04, + 7.534567063455095389e-04, + 7.519825035023349835e-04, + 7.505071607617275816e-04, + 7.490306805838321596e-04, + 7.475530654306089323e-04, + 7.460743177657160833e-04, + 7.445944400544272576e-04, + 7.431134347638052506e-04, + 7.416313043626153803e-04, + 7.401480513212125136e-04, + 7.386636781117416435e-04, + 7.371781872080232891e-04, + 7.356915810854653499e-04, + 7.342038622212797294e-04, + 7.327150330942187656e-04, + 7.312250961847997690e-04, + 7.297340539752020239e-04, + 7.282419089491633550e-04, + 7.267486635921807051e-04, + 7.252543203913938002e-04, + 7.237588818354950522e-04, + 7.222623504149159332e-04, + 7.207647286217256028e-04, + 7.192660189495261739e-04, + 7.177662238936545914e-04, + 7.162653459510672730e-04, + 7.147633876202433983e-04, + 7.132603514013811496e-04, + 7.117562397962582830e-04, + 7.102510553082926276e-04, + 7.087448004424415793e-04, + 7.072374777052289896e-04, + 7.057290896049762084e-04, + 7.042196386513962679e-04, + 7.027091273558244916e-04, + 7.011975582312435402e-04, + 6.996849337921856159e-04, + 6.981712565547917686e-04, + 6.966565290366735514e-04, + 6.951407537571073101e-04, + 6.936239332369364963e-04, + 6.921060699984630301e-04, + 6.905871665656408307e-04, + 6.890672254639757443e-04, + 6.875462492204511677e-04, + 6.860242403635632849e-04, + 6.845012014235425700e-04, + 6.829771349319241174e-04, + 6.814520434219318830e-04, + 6.799259294281894198e-04, + 6.783987954869360668e-04, + 6.768706441359317568e-04, + 6.753414779143472949e-04, + 6.738112993629609242e-04, + 6.722801110240564110e-04, + 6.707479154413162510e-04, + 6.692147151600227883e-04, + 6.676805127269426401e-04, + 6.661453106902388756e-04, + 6.646091115996496934e-04, + 6.630719180063963719e-04, + 6.615337324630733316e-04, + 6.599945575238467610e-04, + 6.584543957443490152e-04, + 6.569132496815724724e-04, + 6.553711218941019869e-04, + 6.538280149418090360e-04, + 6.522839313862495133e-04, + 6.507388737902200732e-04, + 6.491928447179965474e-04, + 6.476458467353519424e-04, + 6.460978824094995186e-04, + 6.445489543089733117e-04, + 6.429990650038330466e-04, + 6.414482170655272028e-04, + 6.398964130669506940e-04, + 6.383436555823095594e-04, + 6.367899471873179635e-04, + 6.352352904590923780e-04, + 6.336796879760770969e-04, + 6.321231423180786058e-04, + 6.305656560664999865e-04, + 6.290072318039204632e-04, + 6.274478721143351197e-04, + 6.258875795831886184e-04, + 6.243263567972595152e-04, + 6.227642063447295408e-04, + 6.212011308150441717e-04, + 6.196371327991086544e-04, + 6.180722148891841386e-04, + 6.165063796787815338e-04, + 6.149396297628617614e-04, + 6.133719677377246242e-04, + 6.118033962009425614e-04, + 6.102339177513895971e-04, + 6.086635349894699981e-04, + 6.070922505166780883e-04, + 6.055200669359629738e-04, + 6.039469868515947529e-04, + 6.023730128690477472e-04, + 6.007981475952461816e-04, + 5.992223936382775219e-04, + 5.976457536076344680e-04, + 5.960682301141031732e-04, + 5.944898257696585100e-04, + 5.929105431876639971e-04, + 5.913303849827686916e-04, + 5.897493537707910712e-04, + 5.881674521689308870e-04, + 5.865846827956558646e-04, + 5.850010482705946934e-04, + 5.834165512147393385e-04, + 5.818311942503425838e-04, + 5.802449800007983358e-04, + 5.786579110908951105e-04, + 5.770699901464827492e-04, + 5.754812197948989440e-04, + 5.738916026645071505e-04, + 5.723011413849327274e-04, + 5.707098385870983896e-04, + 5.691176969031502657e-04, + 5.675247189663455748e-04, + 5.659309074112561311e-04, + 5.643362648736335776e-04, + 5.627407939904628372e-04, + 5.611444973998296233e-04, + 5.595473777411147289e-04, + 5.579494376548921114e-04, + 5.563506797828189545e-04, + 5.547511067678384143e-04, + 5.531507212540729334e-04, + 5.515495258867463956e-04, + 5.499475233122180610e-04, + 5.483447161782252109e-04, + 5.467411071334161814e-04, + 5.451366988277738532e-04, + 5.435314939122883309e-04, + 5.419254950392102125e-04, + 5.403187048619262313e-04, + 5.387111260348591843e-04, + 5.371027612136724128e-04, + 5.354936130551576955e-04, + 5.338836842171275875e-04, + 5.322729773586209849e-04, + 5.306614951397969817e-04, + 5.290492402218158240e-04, + 5.274362152670548833e-04, + 5.258224229389945985e-04, + 5.242078659021100553e-04, + 5.225925468221127640e-04, + 5.209764683656590081e-04, + 5.193596332006019224e-04, + 5.177420439958761332e-04, + 5.161237034213477046e-04, + 5.145046141482094394e-04, + 5.128847788485079492e-04, + 5.112642001953860826e-04, + 5.096428808631215225e-04, + 5.080208235270459050e-04, + 5.063980308634348807e-04, + 5.047745055497181253e-04, + 5.031502502643299358e-04, + 5.015252676867813309e-04, + 4.998995604975057681e-04, + 4.982731313780764185e-04, + 4.966459830110871209e-04, + 4.950181180800824511e-04, + 4.933895392695871037e-04, + 4.917602492653511386e-04, + 4.901302507539159747e-04, + 4.884995464228640821e-04, + 4.868681389608402318e-04, + 4.852360310574565746e-04, + 4.836032254033448990e-04, + 4.819697246900119447e-04, + 4.803355316100579235e-04, + 4.787006488570542755e-04, + 4.770650791254385016e-04, + 4.754288251107212458e-04, + 4.737918895093783090e-04, + 4.721542750187327419e-04, + 4.705159843371697339e-04, + 4.688770201640252112e-04, + 4.672373851994696104e-04, + 4.655970821447603350e-04, + 4.639561137019442504e-04, + 4.623144825741083513e-04, + 4.606721914652680346e-04, + 4.590292430802520658e-04, + 4.573856401249138900e-04, + 4.557413853060236449e-04, + 4.540964813311502003e-04, + 4.524509309088757753e-04, + 4.508047367486833442e-04, + 4.491579015608431749e-04, + 4.475104280566259284e-04, + 4.458623189481884385e-04, + 4.442135769484617676e-04, + 4.425642047713628435e-04, + 4.409142051316463024e-04, + 4.392635807449736074e-04, + 4.376123343277959002e-04, + 4.359604685973887499e-04, + 4.343079862721054224e-04, + 4.326548900709241722e-04, + 4.310011827137137088e-04, + 4.293468669212542306e-04, + 4.276919454151661927e-04, + 4.260364209177908276e-04, + 4.243802961524100218e-04, + 4.227235738430930095e-04, + 4.210662567147658696e-04, + 4.194083474930596837e-04, + 4.177498489045266172e-04, + 4.160907636765255905e-04, + 4.144310945371450293e-04, + 4.127708442152317045e-04, + 4.111100154406474171e-04, + 4.094486109438239332e-04, + 4.077866334560104533e-04, + 4.061240857093110709e-04, + 4.044609704365686553e-04, + 4.027972903714319630e-04, + 4.011330482482081323e-04, + 3.994682468020741028e-04, + 3.978028887689647798e-04, + 3.961369768854576751e-04, + 3.944705138889883383e-04, + 3.928035025177364068e-04, + 3.911359455105102470e-04, + 3.894678456069637943e-04, + 3.877992055474809778e-04, + 3.861300280730612820e-04, + 3.844603159255341484e-04, + 3.827900718474496877e-04, + 3.811192985819552973e-04, + 3.794479988730565753e-04, + 3.777761754653149897e-04, + 3.761038311040982760e-04, + 3.744309685354720702e-04, + 3.727575905060804846e-04, + 3.710836997633619179e-04, + 3.694092990554357562e-04, + 3.677343911309884235e-04, + 3.660589787394885955e-04, + 3.643830646310712985e-04, + 3.627066515564228758e-04, + 3.610297422670011888e-04, + 3.593523395148787874e-04, + 3.576744460528162020e-04, + 3.559960646341424643e-04, + 3.543171980127913742e-04, + 3.526378489435535220e-04, + 3.509580201816304111e-04, + 3.492777144828480992e-04, + 3.475969346038789180e-04, + 3.459156833017880601e-04, + 3.442339633342929740e-04, + 3.425517774597941012e-04, + 3.408691284372576203e-04, + 3.391860190262864071e-04, + 3.375024519869674342e-04, + 3.358184300800909957e-04, + 3.341339560670312289e-04, + 3.324490327096327603e-04, + 3.307636627704290647e-04, + 3.290778490125279183e-04, + 3.273915941994898606e-04, + 3.257049010955532196e-04, + 3.240177724655133869e-04, + 3.223302110746103849e-04, + 3.206422196887821372e-04, + 3.189538010743615966e-04, + 3.172649579983358691e-04, + 3.155756932282284153e-04, + 3.138860095319813068e-04, + 3.121959096781771071e-04, + 3.105053964359205860e-04, + 3.088144725747221674e-04, + 3.071231408647172637e-04, + 3.054314040765530847e-04, + 3.037392649812663400e-04, + 3.020467263505084276e-04, + 3.003537909564245995e-04, + 2.986604615715379523e-04, + 2.969667409690109365e-04, + 2.952726319222970025e-04, + 2.935781372055917913e-04, + 2.918832595933386841e-04, + 2.901880018604461849e-04, + 2.884923667825178254e-04, + 2.867963571353846571e-04, + 2.850999756953731036e-04, + 2.834032252393357517e-04, + 2.817061085445694401e-04, + 2.800086283886987076e-04, + 2.783107875498982715e-04, + 2.766125888067376068e-04, + 2.749140349382499021e-04, + 2.732151287237802166e-04, + 2.715158729432036217e-04, + 2.698162703768091373e-04, + 2.681163238052199885e-04, + 2.664160360094262403e-04, + 2.647154097710448977e-04, + 2.630144478718235033e-04, + 2.613131530940914372e-04, + 2.596115282204106405e-04, + 2.579095760338409203e-04, + 2.562072993178192231e-04, + 2.545047008560402104e-04, + 2.528017834326827485e-04, + 2.510985498322878271e-04, + 2.493950028396430918e-04, + 2.476911452400045095e-04, + 2.459869798189777564e-04, + 2.442825093624009076e-04, + 2.425777366565664271e-04, + 2.408726644881041827e-04, + 2.391672956438613707e-04, + 2.374616329111265930e-04, + 2.357556790775130887e-04, + 2.340494369308352980e-04, + 2.323429092593766053e-04, + 2.306360988515375162e-04, + 2.289290084962904799e-04, + 2.272216409826799909e-04, + 2.255139991000829330e-04, + 2.238060856382456860e-04, + 2.220979033871987450e-04, + 2.203894551371419033e-04, + 2.186807436786658359e-04, + 2.169717718026343558e-04, + 2.152625423000660999e-04, + 2.135530579623571158e-04, + 2.118433215811228666e-04, + 2.101333359482751280e-04, + 2.084231038558973588e-04, + 2.067126280962796399e-04, + 2.050019114621842492e-04, + 2.032909567463794549e-04, + 2.015797667419040335e-04, + 1.998683442421003383e-04, + 1.981566920405337159e-04, + 1.964448129308728370e-04, + 1.947327097071151843e-04, + 1.930203851634294896e-04, + 1.913078420942255847e-04, + 1.895950832940006606e-04, + 1.878821115575610688e-04, + 1.861689296799044139e-04, + 1.844555404561376154e-04, + 1.827419466815127943e-04, + 1.810281511516867502e-04, + 1.793141566622224450e-04, + 1.775999660090042795e-04, + 1.758855819880788781e-04, + 1.741710073955389168e-04, + 1.724562450277836027e-04, + 1.707412976812095135e-04, + 1.690261681524727038e-04, + 1.673108592383704997e-04, + 1.655953737357221010e-04, + 1.638797144415930925e-04, + 1.621638841531755041e-04, + 1.604478856676705271e-04, + 1.587317217825111012e-04, + 1.570153952952442239e-04, + 1.552989090034113636e-04, + 1.535822657047720486e-04, + 1.518654681971870176e-04, + 1.501485192784970057e-04, + 1.484314217467862327e-04, + 1.467141784000345912e-04, + 1.449967920365709511e-04, + 1.432792654545713914e-04, + 1.415616014523241246e-04, + 1.398438028282601253e-04, + 1.381258723808752038e-04, + 1.364078129086084934e-04, + 1.346896272100693201e-04, + 1.329713180839152842e-04, + 1.312528883287359793e-04, + 1.295343407432749284e-04, + 1.278156781262749500e-04, + 1.260969032765481973e-04, + 1.243780189928570857e-04, + 1.226590280739485266e-04, + 1.209399333188172527e-04, + 1.192207375262410886e-04, + 1.175014434950071696e-04, + 1.157820540241369947e-04, + 1.140625719123826795e-04, + 1.123429999586841096e-04, + 1.106233409618182423e-04, + 1.089035977206629741e-04, + 1.071837730340776345e-04, + 1.054638697007841304e-04, + 1.037438905195909694e-04, + 1.020238382892756372e-04, + 1.003037158084629912e-04, + 9.858352587585264429e-05, + 9.686327129009739904e-05, + 9.514295484968576073e-05, + 9.342257935316627233e-05, + 9.170214759902716806e-05, + 8.998166238557906273e-05, + 8.826112651121685430e-05, + 8.654054277410908643e-05, + 8.481991397246173487e-05, + 8.309924290439904006e-05, + 8.137853236784309296e-05, + 7.965778516074027064e-05, + 7.793700408094118804e-05, + 7.621619192608078516e-05, + 7.449535149380483048e-05, + 7.277448558164918149e-05, + 7.105359698692134912e-05, + 6.933268850692503608e-05, + 6.761176293884132180e-05, + 6.589082307960835664e-05, + 6.416987172614770270e-05, + 6.244891167520559300e-05, + 6.072794572342599324e-05, + 5.900697666723020782e-05, + 5.728600730285101874e-05, + 5.556504042659671591e-05, + 5.384407883438621835e-05, + 5.212312532201277926e-05, + 5.040218268517845013e-05, + 4.868125371937368683e-05, + 4.696034121994989630e-05, + 4.523944798196204430e-05, + 4.351857680039305132e-05, + 4.179773047003518092e-05, + 4.007691178536995755e-05, + 3.835612354079417523e-05, + 3.663536853049980188e-05, + 3.491464954839302329e-05, + 3.319396938812816506e-05, + 3.147333084337131641e-05, + 2.975273670729756525e-05, + 2.803218977304634281e-05, + 2.631169283337213434e-05, + 2.459124868090810286e-05, + 2.287086010804655588e-05, + 2.115052990681953068e-05, + 1.943026086912418981e-05, + 1.771005578660337924e-05, + 1.598991745052584439e-05, + 1.426984865201214225e-05, + 1.254985218191483029e-05, + 1.082993083069891281e-05, + 9.110087388667448217e-06, + 7.390324645842074979e-06, + 5.670645391843277609e-06, + 3.951052416116109088e-06, + 2.231548507810512306e-06, + 5.121364556618389709e-07, +-1.207180951745257382e-06, +-2.926400926326479767e-06, +-4.645520680042201175e-06, +-6.364537425400541052e-06, +-8.083448375193380388e-06, +-9.802250742462585427e-06, +-1.152094174058120468e-05, +-1.323951858337297339e-05, +-1.495797848488680036e-05, +-1.667631865955464303e-05, +-1.839453632211930466e-05, +-2.011262868779233994e-05, +-2.183059297202852739e-05, +-2.354842639064533147e-05, +-2.526612615990417033e-05, +-2.698368949647637864e-05, +-2.870111361717971933e-05, +-3.041839573944272031e-05, +-3.213553308104056958e-05, +-3.385252286006177941e-05, +-3.556936229502725543e-05, +-3.728604860481840729e-05, +-3.900257900883496103e-05, +-4.071895072676918754e-05, +-4.243516097872574756e-05, +-4.415120698534094037e-05, +-4.586708596755733204e-05, +-4.758279514674315316e-05, +-4.929833174477357341e-05, +-5.101369298399661690e-05, +-5.272887608696978239e-05, +-5.444387827696246931e-05, +-5.615869677753880393e-05, +-5.787332881271564823e-05, +-5.958777160708188247e-05, +-6.130202238553506607e-05, +-6.301607837359142451e-05, +-6.472993679712381126e-05, +-6.644359488247930982e-05, +-6.815704985660001383e-05, +-6.987029894679649663e-05, +-7.158333938086901141e-05, +-7.329616838722440898e-05, +-7.500878319465298177e-05, +-7.672118103244633018e-05, +-7.843335913051810210e-05, +-8.014531471917761139e-05, +-8.185704502924912734e-05, +-8.356854729219220746e-05, +-8.527981873983726065e-05, +-8.699085660473501258e-05, +-8.870165811970198114e-05, +-9.041222051832086275e-05, +-9.212254103467944297e-05, +-9.383261690333489916e-05, +-9.554244535939572546e-05, +-9.725202363864102217e-05, +-9.896134897729468353e-05, +-1.006704186121839216e-04, +-1.023792297806662589e-04, +-1.040877797207874017e-04, +-1.057960656710562410e-04, +-1.075040848705643043e-04, +-1.092118345591040291e-04, +-1.109193119769448201e-04, +-1.126265143649517566e-04, +-1.143334389646665276e-04, +-1.160400830182728866e-04, +-1.177464437683357792e-04, +-1.194525184583000217e-04, +-1.211583043320375110e-04, +-1.228637986341953893e-04, +-1.245689986099334369e-04, +-1.262739015050420464e-04, +-1.279785045660623258e-04, +-1.296828050400605976e-04, +-1.313868001747484201e-04, +-1.330904872186002778e-04, +-1.347938634206298557e-04, +-1.364969260305085703e-04, +-1.381996722986847501e-04, +-1.399020994761595584e-04, +-1.416042048146040600e-04, +-1.433059855664805431e-04, +-1.450074389847788147e-04, +-1.467085623233241949e-04, +-1.484093528365186098e-04, +-1.501098077794557606e-04, +-1.518099244080801491e-04, +-1.535096999787718551e-04, +-1.552091317488456495e-04, +-1.569082169762896467e-04, +-1.586069529197305561e-04, +-1.603053368385164341e-04, +-1.620033659928319888e-04, +-1.637010376434774026e-04, +-1.653983490520234006e-04, +-1.670952974807417800e-04, +-1.687918801927573340e-04, +-1.704880944518300358e-04, +-1.721839375224692862e-04, +-1.738794066700155539e-04, +-1.755744991606065489e-04, +-1.772692122609170675e-04, +-1.789635432386170141e-04, +-1.806574893621112465e-04, +-1.823510479005063453e-04, +-1.840442161237281144e-04, +-1.857369913024497251e-04, +-1.874293707082494138e-04, +-1.891213516133854826e-04, +-1.908129312909156159e-04, +-1.925041070148152751e-04, +-1.941948760597523747e-04, +-1.958852357012095798e-04, +-1.975751832155971176e-04, +-1.992647158800347443e-04, +-2.009538309724669147e-04, +-2.026425257717804447e-04, +-2.043307975575459024e-04, +-2.060186436103239225e-04, +-2.077060612114031539e-04, +-2.093930476429213387e-04, +-2.110796001879799121e-04, +-2.127657161304235568e-04, +-2.144513927549565385e-04, +-2.161366273472625906e-04, +-2.178214171937793199e-04, +-2.195057595818203139e-04, +-2.211896517996868143e-04, +-2.228730911364521774e-04, +-2.245560748820744955e-04, +-2.262386003275165369e-04, +-2.279206647645231319e-04, +-2.296022654857757803e-04, +-2.312833997848236960e-04, +-2.329640649561981361e-04, +-2.346442582953807692e-04, +-2.363239770985454458e-04, +-2.380032186630128585e-04, +-2.396819802869904414e-04, +-2.413602592695421756e-04, +-2.430380529106647815e-04, +-2.447153585114078479e-04, +-2.463921733736501888e-04, +-2.480684948002566999e-04, +-2.497443200950041453e-04, +-2.514196465627409685e-04, +-2.530944715091604778e-04, +-2.547687922409223307e-04, +-2.564426060657300005e-04, +-2.581159102922966778e-04, +-2.597887022300897786e-04, +-2.614609791897824602e-04, +-2.631327384829974781e-04, +-2.648039774222720041e-04, +-2.664746933211771052e-04, +-2.681448834942434215e-04, +-2.698145452571199475e-04, +-2.714836759263491149e-04, +-2.731522728194867586e-04, +-2.748203332552174227e-04, +-2.764878545531328571e-04, +-2.781548340338511178e-04, +-2.798212690191307327e-04, +-2.814871568316524523e-04, +-2.831524947951345544e-04, +-2.848172802344505882e-04, +-2.864815104754057581e-04, +-2.881451828448599803e-04, +-2.898082946708368450e-04, +-2.914708432822718108e-04, +-2.931328260093129081e-04, +-2.947942401830626986e-04, +-2.964550831356993271e-04, +-2.981153522005856459e-04, +-2.997750447120547598e-04, +-3.014341580055256565e-04, +-3.030926894176182401e-04, +-3.047506362859305818e-04, +-3.064079959491648503e-04, +-3.080647657472324248e-04, +-3.097209430210405784e-04, +-3.113765251126451882e-04, +-3.130315093651770634e-04, +-3.146858931229647312e-04, +-3.163396737314928581e-04, +-3.179928485371544006e-04, +-3.196454148876956710e-04, +-3.212973701319978156e-04, +-3.229487116198620348e-04, +-3.245994367024542687e-04, +-3.262495427320545832e-04, +-3.278990270620195488e-04, +-3.295478870469016651e-04, +-3.311961200423797552e-04, +-3.328437234054047907e-04, +-3.344906944939908034e-04, +-3.361370306673232516e-04, +-3.377827292858806129e-04, +-3.394277877112090330e-04, +-3.410722033060438647e-04, +-3.427159734344235637e-04, +-3.443590954614674264e-04, +-3.460015667534981055e-04, +-3.476433846781500840e-04, +-3.492845466041207426e-04, +-3.509250499014648830e-04, +-3.525648919413449278e-04, +-3.542040700961412926e-04, +-3.558425817395740329e-04, +-3.574804242464774389e-04, +-3.591175949929210865e-04, +-3.607540913563219440e-04, +-3.623899107152293202e-04, +-3.640250504494372966e-04, +-3.656595079400988936e-04, +-3.672932805695143803e-04, +-3.689263657212394775e-04, +-3.705587607802041865e-04, +-3.721904631324569716e-04, +-3.738214701655024892e-04, +-3.754517792678632444e-04, +-3.770813878295581584e-04, +-3.787102932418950517e-04, +-3.803384928972451304e-04, +-3.819659841894927133e-04, +-3.835927645137799020e-04, +-3.852188312664781749e-04, +-3.868441818452616251e-04, +-3.884688136492229159e-04, +-3.900927240786577414e-04, +-3.917159105352141209e-04, +-3.933383704218256665e-04, +-3.949601011428599561e-04, +-3.965811001039041325e-04, +-3.982013647118801537e-04, +-3.998208923751159173e-04, +-4.014396805033225999e-04, +-4.030577265073358043e-04, +-4.046750277995952647e-04, +-4.062915817937156108e-04, +-4.079073859048120624e-04, +-4.095224375492549662e-04, +-4.111367341447795705e-04, +-4.127502731106008974e-04, +-4.143630518672003710e-04, +-4.159750678364380872e-04, +-4.175863184416638897e-04, +-4.191968011075093660e-04, +-4.208065132599939366e-04, +-4.224154523266419490e-04, +-4.240236157362683848e-04, +-4.256310009190915626e-04, +-4.272376053068461664e-04, +-4.288434263325334450e-04, +-4.304484614307136758e-04, +-4.320527080372596712e-04, +-4.336561635894704576e-04, +-4.352588255262119501e-04, +-4.368606912875338502e-04, +-4.384617583151363403e-04, +-4.400620240521246201e-04, +-4.416614859429750261e-04, +-4.432601414336128764e-04, +-4.448579879715247945e-04, +-4.464550230055451758e-04, +-4.480512439859656915e-04, +-4.496466483646559069e-04, +-4.512412335948440549e-04, +-4.528349971312635664e-04, +-4.544279364300946858e-04, +-4.560200489490660067e-04, +-4.576113321474276378e-04, +-4.592017834857043844e-04, +-4.607914004261282363e-04, +-4.623801804323929049e-04, +-4.639681209696197789e-04, +-4.655552195044384265e-04, +-4.671414735050913834e-04, +-4.687268804412293472e-04, +-4.703114377840561891e-04, +-4.718951430062592943e-04, +-4.734779935821575554e-04, +-4.750599869874961873e-04, +-4.766411206995504308e-04, +-4.782213921972044827e-04, +-4.798007989609191868e-04, +-4.813793384724880881e-04, +-4.829570082155028809e-04, +-4.845338056749648849e-04, +-4.861097283374352616e-04, +-4.876847736911403444e-04, +-4.892589392257295361e-04, +-4.908322224325677727e-04, +-4.924046208044810611e-04, +-4.939761318358779638e-04, +-4.955467530228487493e-04, +-4.971164818629670917e-04, +-4.986853158553966473e-04, +-5.002532525009950300e-04, +-5.018202893021158359e-04, +-5.033864237627119678e-04, +-5.049516533884475245e-04, +-5.065159756864894176e-04, +-5.080793881656172012e-04, +-5.096418883363361537e-04, +-5.112034737106263939e-04, +-5.127641418022723697e-04, +-5.143238901264408870e-04, +-5.158827162001411362e-04, +-5.174406175419861680e-04, +-5.189975916721565729e-04, +-5.205536361124789768e-04, +-5.221087483865346785e-04, +-5.236629260194507239e-04, +-5.252161665380093020e-04, +-5.267684674707628868e-04, +-5.283198263478181564e-04, +-5.298702407009865884e-04, +-5.314197080637174560e-04, +-5.329682259712059233e-04, +-5.345157919603609527e-04, +-5.360624035695664555e-04, +-5.376080583391041300e-04, +-5.391527538109454039e-04, +-5.406964875285503146e-04, +-5.422392570373189705e-04, +-5.437810598841853011e-04, +-5.453218936179263796e-04, +-5.468617557889271508e-04, +-5.484006439492857075e-04, +-5.499385556529274568e-04, +-5.514754884553907735e-04, +-5.530114399139453947e-04, +-5.545464075876932507e-04, +-5.560803890373673458e-04, +-5.576133818254392022e-04, +-5.591453835162243534e-04, +-5.606763916756828505e-04, +-5.622064038715249724e-04, +-5.637354176733153088e-04, +-5.652634306522410666e-04, +-5.667904403813870231e-04, +-5.683164444355004712e-04, +-5.698414403910955200e-04, +-5.713654258265682363e-04, +-5.728883983219795880e-04, +-5.744103554591803440e-04, +-5.759312948219011711e-04, +-5.774512139955642002e-04, +-5.789701105673786524e-04, +-5.804879821264540300e-04, +-5.820048262635976960e-04, +-5.835206405714223185e-04, +-5.850354226444439906e-04, +-5.865491700788610539e-04, +-5.880618804728527955e-04, +-5.895735514261797030e-04, +-5.910841805406284212e-04, +-5.925937654198135595e-04, +-5.941023036689755971e-04, +-5.956097928953909279e-04, +-5.971162307081414678e-04, +-5.986216147180828872e-04, +-6.001259425379485866e-04, +-6.016292117822878965e-04, +-6.031314200676061565e-04, +-6.046325650121615360e-04, +-6.061326442360739962e-04, +-6.076316553614263382e-04, +-6.091295960120726239e-04, +-6.106264638137346703e-04, +-6.121222563940792449e-04, +-6.136169713826832624e-04, +-6.151106064108078373e-04, +-6.166031591118358674e-04, +-6.180946271208705546e-04, +-6.195850080750446185e-04, +-6.210742996132892534e-04, +-6.225624993764326820e-04, +-6.240496050073149727e-04, +-6.255356141505812820e-04, +-6.270205244527908171e-04, +-6.285043335625196178e-04, +-6.299870391301611722e-04, +-6.314686388080360292e-04, +-6.329491302504933886e-04, +-6.344285111137083549e-04, +-6.359067790557958871e-04, +-6.373839317369093529e-04, +-6.388599668190411435e-04, +-6.403348819661347805e-04, +-6.418086748441797834e-04, +-6.432813431209861554e-04, +-6.447528844664882856e-04, +-6.462232965523492150e-04, +-6.476925770523960521e-04, +-6.491607236423912065e-04, +-6.506277339999987780e-04, +-6.520936058048629452e-04, +-6.535583367387042420e-04, +-6.550219244851300396e-04, +-6.564843667297283296e-04, +-6.579456611601785295e-04, +-6.594058054660589287e-04, +-6.608647973389748407e-04, +-6.623226344724981052e-04, +-6.637793145622749658e-04, +-6.652348353059902913e-04, +-6.666891944031443388e-04, +-6.681423895554520652e-04, +-6.695944184666100234e-04, +-6.710452788422764138e-04, +-6.724949683901677942e-04, +-6.739434848199985818e-04, +-6.753908258436107240e-04, +-6.768369891747916603e-04, +-6.782819725293656125e-04, +-6.797257736253025468e-04, +-6.811683901825171632e-04, +-6.826098199229801338e-04, +-6.840500605707843483e-04, +-6.854891098521087014e-04, +-6.869269654950023365e-04, +-6.883636252298116045e-04, +-6.897990867888132782e-04, +-6.912333479063657990e-04, +-6.926664063189981804e-04, +-6.940982597651892657e-04, +-6.955289059856360669e-04, +-6.969583427230189275e-04, +-6.983865677221139535e-04, +-6.998135787298872309e-04, +-7.012393734953056325e-04, +-7.026639497694391664e-04, +-7.040873053055593132e-04, +-7.055094378589469055e-04, +-7.069303451870008730e-04, +-7.083500250493246541e-04, +-7.097684752075506627e-04, +-7.111856934254327713e-04, +-7.126016774689433470e-04, +-7.140164251060628076e-04, +-7.154299341070615142e-04, +-7.168422022441212765e-04, +-7.182532272917589505e-04, +-7.196630070266023336e-04, +-7.210715392273605662e-04, +-7.224788216748994837e-04, +-7.238848521523266180e-04, +-7.252896284448183753e-04, +-7.266931483397407084e-04, +-7.280954096265949060e-04, +-7.294964100971432523e-04, +-7.308961475452255795e-04, +-7.322946197668587977e-04, +-7.336918245603003211e-04, +-7.350877597260190108e-04, +-7.364824230664798526e-04, +-7.378758123865338360e-04, +-7.392679254932134738e-04, +-7.406587601955623651e-04, +-7.420483143050492529e-04, +-7.434365856351812882e-04, +-7.448235720017995845e-04, +-7.462092712228596660e-04, +-7.475936811185330579e-04, +-7.489767995112983591e-04, +-7.503586242257626743e-04, +-7.517391530887558310e-04, +-7.531183839294257895e-04, +-7.544963145790599662e-04, +-7.558729428711776074e-04, +-7.572482666416292113e-04, +-7.586222837284111288e-04, +-7.599949919717643347e-04, +-7.613663892142686447e-04, +-7.627364733006301032e-04, +-7.641052420779366385e-04, +-7.654726933954346087e-04, +-7.668388251046342943e-04, +-7.682036350594035733e-04, +-7.695671211157800295e-04, +-7.709292811320777455e-04, +-7.722901129689744735e-04, +-7.736496144893292718e-04, +-7.750077835582906000e-04, +-7.763646180433772005e-04, +-7.777201158143027832e-04, +-7.790742747431038525e-04, +-7.804270927040805102e-04, +-7.817785675739212471e-04, +-7.831286972315222063e-04, +-7.844774795580906164e-04, +-7.858249124371924962e-04, +-7.871709937547389938e-04, +-7.885157213987731241e-04, +-7.898590932598387225e-04, +-7.912011072307662072e-04, +-7.925417612066524122e-04, +-7.938810530849489504e-04, +-7.952189807654101716e-04, +-7.965555421502119914e-04, +-7.978907351437805866e-04, +-7.992245576528781564e-04, +-8.005570075867041863e-04, +-8.018880828567102664e-04, +-8.032177813767042837e-04, +-8.045461010629323872e-04, +-8.058730398339079013e-04, +-8.071985956105094456e-04, +-8.085227663160580221e-04, +-8.098455498761322671e-04, +-8.111669442187963500e-04, +-8.124869472743899640e-04, +-8.138055569756418419e-04, +-8.151227712577381688e-04, +-8.164385880581662407e-04, +-8.177530053167917680e-04, +-8.190660209759687048e-04, +-8.203776329803404068e-04, +-8.216878392769574836e-04, +-8.229966378153527173e-04, +-8.243040265473716016e-04, +-8.256100034272647161e-04, +-8.269145664117835692e-04, +-8.282177134599953087e-04, +-8.295194425334139095e-04, +-8.308197515959471566e-04, +-8.321186386139740572e-04, +-8.334161015563312878e-04, +-8.347121383941065453e-04, +-8.360067471009924311e-04, +-8.372999256530840300e-04, +-8.385916720288621052e-04, +-8.398819842092396107e-04, +-8.411708601776604621e-04, +-8.424582979199321357e-04, +-8.437442954243358235e-04, +-8.450288506815784029e-04, +-8.463119616849077960e-04, +-8.475936264299449184e-04, +-8.488738429147735590e-04, +-8.501526091399937233e-04, +-8.514299231087116586e-04, +-8.527057828263264827e-04, +-8.539801863008810324e-04, +-8.552531315428738620e-04, +-8.565246165652205378e-04, +-8.577946393833550112e-04, +-8.590631980151626143e-04, +-8.603302904811046354e-04, +-8.615959148040560137e-04, +-8.628600690093779805e-04, +-8.641227511250258297e-04, +-8.653839591813660120e-04, +-8.666436912112671000e-04, +-8.679019452501978002e-04, +-8.691587193360457821e-04, +-8.704140115092217625e-04, +-8.716678198127269421e-04, +-8.729201422920090242e-04, +-8.741709769950322534e-04, +-8.754203219723747775e-04, +-8.766681752770277445e-04, +-8.779145349646326349e-04, +-8.791593990932787322e-04, +-8.804027657235930036e-04, +-8.816446329188274865e-04, +-8.828849987446991520e-04, +-8.841238612694662328e-04, +-8.853612185640271021e-04, +-8.865970687017437658e-04, +-8.878314097585403080e-04, +-8.890642398129808451e-04, +-8.902955569461066783e-04, +-8.915253592415556651e-04, +-8.927536447855047557e-04, +-8.939804116667577055e-04, +-8.952056579767205717e-04, +-8.964293818092081839e-04, +-8.976515812607830649e-04, +-8.988722544305658042e-04, +-9.000913994202047004e-04, +-9.013090143339360424e-04, +-9.025250972786735566e-04, +-9.037396463638411141e-04, +-9.049526597014900418e-04, +-9.061641354062440444e-04, +-9.073740715954100103e-04, +-9.085824663888215609e-04, +-9.097893179089222094e-04, +-9.109946242808503614e-04, +-9.121983836322782035e-04, +-9.134005940934899819e-04, +-9.146012537974781715e-04, +-9.158003608797791106e-04, +-9.169979134785519312e-04, +-9.181939097346682220e-04, +-9.193883477915245706e-04, +-9.205812257952581019e-04, +-9.217725418945681279e-04, +-9.229622942407929081e-04, +-9.241504809879913995e-04, +-9.253371002927963463e-04, +-9.265221503144852955e-04, +-9.277056292150715616e-04, +-9.288875351591361750e-04, +-9.300678663139307729e-04, +-9.312466208494360378e-04, +-9.324237969382260637e-04, +-9.335993927555352517e-04, +-9.347734064793545867e-04, +-9.359458362902263982e-04, +-9.371166803715193141e-04, +-9.382859369090837008e-04, +-9.394536040916097756e-04, +-9.406196801104743004e-04, +-9.417841631595797944e-04, +-9.429470514356791443e-04, +-9.441083431381842427e-04, +-9.452680364691575313e-04, +-9.464261296333574287e-04, +-9.475826208383109723e-04, +-9.487375082941836056e-04, +-9.498907902138671068e-04, +-9.510424648129286312e-04, +-9.521925303097381055e-04, +-9.533409849252885747e-04, +-9.544878268832988769e-04, +-9.556330544102579864e-04, +-9.567766657353981262e-04, +-9.579186590905230296e-04, +-9.590590327103503321e-04, +-9.601977848321901045e-04, +-9.613349136961971478e-04, +-9.624704175451761611e-04, +-9.636042946246807300e-04, +-9.647365431830715477e-04, +-9.658671614713868533e-04, +-9.669961477434007614e-04, +-9.681235002557236598e-04, +-9.692492172676327481e-04, +-9.703732970411663638e-04, +-9.714957378411954309e-04, +-9.726165379352671178e-04, +-9.737356955937004647e-04, +-9.748532090896527358e-04, +-9.759690766989446466e-04, +-9.770832967002764449e-04, +-9.781958673750375255e-04, +-9.793067870073957678e-04, +-9.804160538844012944e-04, +-9.815236662957043615e-04, +-9.826296225338942807e-04, +-9.837339208943181399e-04, +-9.848365596750651915e-04, +-9.859375371770136894e-04, +-9.870368517039102528e-04, +-9.881345015622269683e-04, +-9.892304850612348988e-04, +-9.903248005130765082e-04, +-9.914174462326286186e-04, +-9.925084205376017224e-04, +-9.935977217484881583e-04, +-9.946853481886399565e-04, +-9.957712981842582137e-04, +-9.968555700642003220e-04, +-9.979381621603002420e-04, +-9.990190728071850559e-04, +-1.000098300342267812e-03, +-1.001175843105775063e-03, +-1.002251699440846397e-03, +-1.003325867693378309e-03, +-1.004398346212123736e-03, +-1.005469133348656924e-03, +-1.006538227457454094e-03, +-1.007605626895775918e-03, +-1.008671330023716084e-03, +-1.009735335204269393e-03, +-1.010797640803301175e-03, +-1.011858245189395291e-03, +-1.012917146734146215e-03, +-1.013974343811918340e-03, +-1.015029834799935533e-03, +-1.016083618078354213e-03, +-1.017135692030101584e-03, +-1.018186055041067324e-03, +-1.019234705499939223e-03, +-1.020281641798283191e-03, +-1.021326862330602242e-03, +-1.022370365494210728e-03, +-1.023412149689305025e-03, +-1.024452213319030540e-03, +-1.025490554789352041e-03, +-1.026527172509116318e-03, +-1.027562064890131990e-03, +-1.028595230347031800e-03, +-1.029626667297337895e-03, +-1.030656374161545517e-03, +-1.031684349362953874e-03, +-1.032710591327878642e-03, +-1.033735098485377875e-03, +-1.034757869267553853e-03, +-1.035778902109399987e-03, +-1.036798195448769165e-03, +-1.037815747726431211e-03, +-1.038831557386137071e-03, +-1.039845622874494132e-03, +-1.040857942641023898e-03, +-1.041868515138239838e-03, +-1.042877338821519015e-03, +-1.043884412149183186e-03, +-1.044889733582462154e-03, +-1.045893301585567713e-03, +-1.046895114625668926e-03, +-1.047895171172723424e-03, +-1.048893469699783152e-03, +-1.049890008682829567e-03, +-1.050884786600657633e-03, +-1.051877801935166166e-03, +-1.052869053171085270e-03, +-1.053858538796195775e-03, +-1.054846257301152515e-03, +-1.055832207179577134e-03, +-1.056816386928110564e-03, +-1.057798795046284435e-03, +-1.058779430036601091e-03, +-1.059758290404586500e-03, +-1.060735374658671425e-03, +-1.061710681310254522e-03, +-1.062684208873771949e-03, +-1.063655955866567695e-03, +-1.064625920808963400e-03, +-1.065594102224319724e-03, +-1.066560498638898435e-03, +-1.067525108582024389e-03, +-1.068487930585944583e-03, +-1.069448963185893210e-03, +-1.070408204920158873e-03, +-1.071365654329956658e-03, +-1.072321309959495131e-03, +-1.073275170356046164e-03, +-1.074227234069813092e-03, +-1.075177499653992954e-03, +-1.076125965664865604e-03, +-1.077072630661634993e-03, +-1.078017493206526308e-03, +-1.078960551864822622e-03, +-1.079901805204745843e-03, +-1.080841251797632361e-03, +-1.081778890217685628e-03, +-1.082714719042252851e-03, +-1.083648736851705943e-03, +-1.084580942229306216e-03, +-1.085511333761467190e-03, +-1.086439910037611698e-03, +-1.087366669650144998e-03, +-1.088291611194523072e-03, +-1.089214733269214036e-03, +-1.090136034475789424e-03, +-1.091055513418787582e-03, +-1.091973168705785225e-03, +-1.092888998947471159e-03, +-1.093803002757505125e-03, +-1.094715178752596937e-03, +-1.095625525552545304e-03, +-1.096534041780221347e-03, +-1.097440726061413340e-03, +-1.098345577025121615e-03, +-1.099248593303289246e-03, +-1.100149773531000456e-03, +-1.101049116346341410e-03, +-1.101946620390457671e-03, +-1.102842284307616006e-03, +-1.103736106745096613e-03, +-1.104628086353238873e-03, +-1.105518221785515729e-03, +-1.106406511698416160e-03, +-1.107292954751492014e-03, +-1.108177549607447130e-03, +-1.109060294931985989e-03, +-1.109941189393902393e-03, +-1.110820231665132383e-03, +-1.111697420420633886e-03, +-1.112572754338446131e-03, +-1.113446232099766413e-03, +-1.114317852388790496e-03, +-1.115187613892915574e-03, +-1.116055515302486140e-03, +-1.116921555311066981e-03, +-1.117785732615292262e-03, +-1.118648045914864440e-03, +-1.119508493912587440e-03, +-1.120367075314417614e-03, +-1.121223788829374185e-03, +-1.122078633169566785e-03, +-1.122931607050283278e-03, +-1.123782709189861386e-03, +-1.124631938309769794e-03, +-1.125479293134576267e-03, +-1.126324772391998396e-03, +-1.127168374812897089e-03, +-1.128010099131138231e-03, +-1.128849944083821230e-03, +-1.129687908411155638e-03, +-1.130523990856433826e-03, +-1.131358190166098423e-03, +-1.132190505089701550e-03, +-1.133020934379990255e-03, +-1.133849476792775975e-03, +-1.134676131087019538e-03, +-1.135500896024864989e-03, +-1.136323770371543964e-03, +-1.137144752895428166e-03, +-1.137963842368072079e-03, +-1.138781037564189774e-03, +-1.139596337261529783e-03, +-1.140409740241125122e-03, +-1.141221245287076663e-03, +-1.142030851186642045e-03, +-1.142838556730287275e-03, +-1.143644360711559664e-03, +-1.144448261927237444e-03, +-1.145250259177204655e-03, +-1.146050351264500796e-03, +-1.146848536995390003e-03, +-1.147644815179240481e-03, +-1.148439184628588039e-03, +-1.149231644159192690e-03, +-1.150022192589930659e-03, +-1.150810828742840353e-03, +-1.151597551443201729e-03, +-1.152382359519404454e-03, +-1.153165251803017939e-03, +-1.153946227128848810e-03, +-1.154725284334800605e-03, +-1.155502422262060479e-03, +-1.156277639754865879e-03, +-1.157050935660751097e-03, +-1.157822308830413474e-03, +-1.158591758117710367e-03, +-1.159359282379687555e-03, +-1.160124880476629764e-03, +-1.160888551271967639e-03, +-1.161650293632348870e-03, +-1.162410106427587452e-03, +-1.163167988530764297e-03, +-1.163923938818095180e-03, +-1.164677956169005114e-03, +-1.165430039466153938e-03, +-1.166180187595426991e-03, +-1.166928399445806962e-03, +-1.167674673909596802e-03, +-1.168419009882300892e-03, +-1.169161406262538526e-03, +-1.169901861952259668e-03, +-1.170640375856542422e-03, +-1.171376946883755446e-03, +-1.172111573945423075e-03, +-1.172844255956297316e-03, +-1.173574991834406634e-03, +-1.174303780500939942e-03, +-1.175030620880320115e-03, +-1.175755511900239110e-03, +-1.176478452491574707e-03, +-1.177199441588423897e-03, +-1.177918478128173792e-03, +-1.178635561051381278e-03, +-1.179350689301853460e-03, +-1.180063861826669567e-03, +-1.180775077576084022e-03, +-1.181484335503655029e-03, +-1.182191634566130949e-03, +-1.182896973723501690e-03, +-1.183600351939049231e-03, +-1.184301768179251996e-03, +-1.185001221413832994e-03, +-1.185698710615808822e-03, +-1.186394234761400761e-03, +-1.187087792830076628e-03, +-1.187779383804611491e-03, +-1.188469006670972959e-03, +-1.189156660418412255e-03, +-1.189842344039412827e-03, +-1.190526056529765588e-03, +-1.191207796888475896e-03, +-1.191887564117799113e-03, +-1.192565357223302402e-03, +-1.193241175213815078e-03, +-1.193915017101342515e-03, +-1.194586881901255233e-03, +-1.195256768632172676e-03, +-1.195924676315949326e-03, +-1.196590603977725669e-03, +-1.197254550645903901e-03, +-1.197916515352201059e-03, +-1.198576497131563154e-03, +-1.199234495022220674e-03, +-1.199890508065709193e-03, +-1.200544535306819491e-03, +-1.201196575793601895e-03, +-1.201846628577447592e-03, +-1.202494692712984111e-03, +-1.203140767258115227e-03, +-1.203784851274081451e-03, +-1.204426943825348583e-03, +-1.205067043979733904e-03, +-1.205705150808298850e-03, +-1.206341263385384780e-03, +-1.206975380788687146e-03, +-1.207607502099138823e-03, +-1.208237626400974303e-03, +-1.208865752781759827e-03, +-1.209491880332324003e-03, +-1.210116008146793149e-03, +-1.210738135322629453e-03, +-1.211358260960562891e-03, +-1.211976384164617244e-03, +-1.212592504042175369e-03, +-1.213206619703864923e-03, +-1.213818730263652255e-03, +-1.214428834838783642e-03, +-1.215036932549855113e-03, +-1.215643022520771898e-03, +-1.216247103878678173e-03, +-1.216849175754111667e-03, +-1.217449237280907167e-03, +-1.218047287596191099e-03, +-1.218643325840403861e-03, +-1.219237351157347092e-03, +-1.219829362694093908e-03, +-1.220419359601056762e-03, +-1.221007341031952543e-03, +-1.221593306143866318e-03, +-1.222177254097162004e-03, +-1.222759184055526591e-03, +-1.223339095186001379e-03, +-1.223916986658972429e-03, +-1.224492857648066266e-03, +-1.225066707330323135e-03, +-1.225638534886106142e-03, +-1.226208339499067429e-03, +-1.226776120356221035e-03, +-1.227341876647897135e-03, +-1.227905607567797343e-03, +-1.228467312312918379e-03, +-1.229026990083602810e-03, +-1.229584640083565506e-03, +-1.230140261519820999e-03, +-1.230693853602724897e-03, +-1.231245415546014651e-03, +-1.231794946566733013e-03, +-1.232342445885261642e-03, +-1.232887912725374232e-03, +-1.233431346314138501e-03, +-1.233972745881989699e-03, +-1.234512110662726271e-03, +-1.235049439893463668e-03, +-1.235584732814706778e-03, +-1.236117988670283347e-03, +-1.236649206707361986e-03, +-1.237178386176515264e-03, +-1.237705526331619966e-03, +-1.238230626429919976e-03, +-1.238753685732047307e-03, +-1.239274703501950766e-03, +-1.239793679006947992e-03, +-1.240310611517741286e-03, +-1.240825500308362101e-03, +-1.241338344656222649e-03, +-1.241849143842072532e-03, +-1.242357897150058810e-03, +-1.242864603867695206e-03, +-1.243369263285804428e-03, +-1.243871874698630709e-03, +-1.244372437403787552e-03, +-1.244870950702219340e-03, +-1.245367413898254040e-03, +-1.245861826299615553e-03, +-1.246354187217363872e-03, +-1.246844495965950808e-03, +-1.247332751863178355e-03, +-1.247818954230267650e-03, +-1.248303102391772230e-03, +-1.248785195675623360e-03, +-1.249265233413171007e-03, +-1.249743214939096243e-03, +-1.250219139591466754e-03, +-1.250693006711757222e-03, +-1.251164815644802272e-03, +-1.251634565738798856e-03, +-1.252102256345368489e-03, +-1.252567886819478098e-03, +-1.253031456519510499e-03, +-1.253492964807205630e-03, +-1.253952411047692646e-03, +-1.254409794609509434e-03, +-1.254865114864555991e-03, +-1.255318371188124784e-03, +-1.255769562958915274e-03, +-1.256218689558997494e-03, +-1.256665750373820497e-03, +-1.257110744792269610e-03, +-1.257553672206580559e-03, +-1.257994532012383058e-03, +-1.258433323608737020e-03, +-1.258870046398047121e-03, +-1.259304699786172087e-03, +-1.259737283182292642e-03, +-1.260167795999043994e-03, +-1.260596237652462492e-03, +-1.261022607561923612e-03, +-1.261446905150258833e-03, +-1.261869129843685598e-03, +-1.262289281071813382e-03, +-1.262707358267640230e-03, +-1.263123360867605006e-03, +-1.263537288311517362e-03, +-1.263949140042595464e-03, +-1.264358915507458837e-03, +-1.264766614156154819e-03, +-1.265172235442108039e-03, +-1.265575778822159228e-03, +-1.265977243756560887e-03, +-1.266376629708989210e-03, +-1.266773936146473826e-03, +-1.267169162539514898e-03, +-1.267562308361982071e-03, +-1.267953373091181913e-03, +-1.268342356207816492e-03, +-1.268729257195988589e-03, +-1.269114075543246794e-03, +-1.269496810740524144e-03, +-1.269877462282169344e-03, +-1.270256029665963035e-03, +-1.270632512393086999e-03, +-1.271006909968131968e-03, +-1.271379221899127327e-03, +-1.271749447697501437e-03, +-1.272117586878091389e-03, +-1.272483638959185075e-03, +-1.272847603462449627e-03, +-1.273209479913004058e-03, +-1.273569267839373296e-03, +-1.273926966773481677e-03, +-1.274282576250731006e-03, +-1.274636095809866983e-03, +-1.274987524993119285e-03, +-1.275336863346123069e-03, +-1.275684110417927208e-03, +-1.276029265760999501e-03, +-1.276372328931262880e-03, +-1.276713299488029061e-03, +-1.277052176994046464e-03, +-1.277388961015501079e-03, +-1.277723651121991750e-03, +-1.278056246886551204e-03, +-1.278386747885623719e-03, +-1.278715153699105022e-03, +-1.279041463910320390e-03, +-1.279365678105983230e-03, +-1.279687795876276613e-03, +-1.280007816814809256e-03, +-1.280325740518602944e-03, +-1.280641566588112262e-03, +-1.280955294627240211e-03, +-1.281266924243305025e-03, +-1.281576455047062513e-03, +-1.281883886652684370e-03, +-1.282189218677818460e-03, +-1.282492450743497958e-03, +-1.282793582474212263e-03, +-1.283092613497882704e-03, +-1.283389543445878373e-03, +-1.283684371952963001e-03, +-1.283977098657384727e-03, +-1.284267723200784592e-03, +-1.284556245228277637e-03, +-1.284842664388387420e-03, +-1.285126980333083091e-03, +-1.285409192717777010e-03, +-1.285689301201311304e-03, +-1.285967305445963500e-03, +-1.286243205117463444e-03, +-1.286516999884968577e-03, +-1.286788689421068492e-03, +-1.287058273401810518e-03, +-1.287325751506668498e-03, +-1.287591123418555146e-03, +-1.287854388823838530e-03, +-1.288115547412312361e-03, +-1.288374598877208141e-03, +-1.288631542915215757e-03, +-1.288886379226447925e-03, +-1.289139107514487891e-03, +-1.289389727486310935e-03, +-1.289638238852383470e-03, +-1.289884641326601673e-03, +-1.290128934626287582e-03, +-1.290371118472219240e-03, +-1.290611192588626355e-03, +-1.290849156703165147e-03, +-1.291085010546935696e-03, +-1.291318753854507097e-03, +-1.291550386363870618e-03, +-1.291779907816461388e-03, +-1.292007317957168588e-03, +-1.292232616534320921e-03, +-1.292455803299712202e-03, +-1.292676878008537818e-03, +-1.292895840419482556e-03, +-1.293112690294668556e-03, +-1.293327427399635363e-03, +-1.293540051503401728e-03, +-1.293750562378415299e-03, +-1.293958959800586232e-03, +-1.294165243549252279e-03, +-1.294369413407204595e-03, +-1.294571469160693154e-03, +-1.294771410599404420e-03, +-1.294969237516465678e-03, +-1.295164949708474313e-03, +-1.295358546975453138e-03, +-1.295550029120882268e-03, +-1.295739395951690017e-03, +-1.295926647278254629e-03, +-1.296111782914390184e-03, +-1.296294802677384981e-03, +-1.296475706387944507e-03, +-1.296654493870252585e-03, +-1.296831164951915650e-03, +-1.297005719464001559e-03, +-1.297178157241032654e-03, +-1.297348478120974704e-03, +-1.297516681945230397e-03, +-1.297682768558676859e-03, +-1.297846737809617724e-03, +-1.298008589549810897e-03, +-1.298168323634476574e-03, +-1.298325939922268619e-03, +-1.298481438275294079e-03, +-1.298634818559121209e-03, +-1.298786080642744560e-03, +-1.298935224398640705e-03, +-1.299082249702692565e-03, +-1.299227156434270289e-03, +-1.299369944476182030e-03, +-1.299510613714673080e-03, +-1.299649164039452754e-03, +-1.299785595343680086e-03, +-1.299919907523952329e-03, +-1.300052100480324473e-03, +-1.300182174116294937e-03, +-1.300310128338817489e-03, +-1.300435963058297782e-03, +-1.300559678188574269e-03, +-1.300681273646958971e-03, +-1.300800749354191072e-03, +-1.300918105234470309e-03, +-1.301033341215441152e-03, +-1.301146457228206238e-03, +-1.301257453207300572e-03, +-1.301366329090720801e-03, +-1.301473084819903961e-03, +-1.301577720339747862e-03, +-1.301680235598583549e-03, +-1.301780630548201321e-03, +-1.301878905143837939e-03, +-1.301975059344167521e-03, +-1.302069093111327559e-03, +-1.302161006410900920e-03, +-1.302250799211905445e-03, +-1.302338471486815625e-03, +-1.302424023211561739e-03, +-1.302507454365507515e-03, +-1.302588764931462929e-03, +-1.302667954895700680e-03, +-1.302745024247920196e-03, +-1.302819972981284716e-03, +-1.302892801092396784e-03, +-1.302963508581300419e-03, +-1.303032095451499327e-03, +-1.303098561709920911e-03, +-1.303162907366961802e-03, +-1.303225132436450348e-03, +-1.303285236935663961e-03, +-1.303343220885321962e-03, +-1.303399084309597939e-03, +-1.303452827236091993e-03, +-1.303504449695870853e-03, +-1.303553951723428845e-03, +-1.303601333356707841e-03, +-1.303646594637097910e-03, +-1.303689735609426257e-03, +-1.303730756321968935e-03, +-1.303769656826441088e-03, +-1.303806437178000851e-03, +-1.303841097435246748e-03, +-1.303873637660225718e-03, +-1.303904057918418369e-03, +-1.303932358278752420e-03, +-1.303958538813593596e-03, +-1.303982599598748010e-03, +-1.304004540713463904e-03, +-1.304024362240430559e-03, +-1.304042064265773741e-03, +-1.304057646879061344e-03, +-1.304071110173295146e-03, +-1.304082454244923821e-03, +-1.304091679193835349e-03, +-1.304098785123338150e-03, +-1.304103772140203805e-03, +-1.304106640354619779e-03, +-1.304107389880221303e-03, +-1.304106020834079008e-03, +-1.304102533336697414e-03, +-1.304096927512018609e-03, +-1.304089203487420953e-03, +-1.304079361393714522e-03, +-1.304067401365147181e-03, +-1.304053323539393090e-03, +-1.304037128057575472e-03, +-1.304018815064237995e-03, +-1.303998384707363628e-03, +-1.303975837138356651e-03, +-1.303951172512075830e-03, +-1.303924390986789961e-03, +-1.303895492724206932e-03, +-1.303864477889467213e-03, +-1.303831346651138654e-03, +-1.303796099181222341e-03, +-1.303758735655141752e-03, +-1.303719256251755767e-03, +-1.303677661153352816e-03, +-1.303633950545642637e-03, +-1.303588124617763430e-03, +-1.303540183562285982e-03, +-1.303490127575203470e-03, +-1.303437956855933852e-03, +-1.303383671607322462e-03, +-1.303327272035640933e-03, +-1.303268758350577651e-03, +-1.303208130765256189e-03, +-1.303145389496214489e-03, +-1.303080534763418523e-03, +-1.303013566790247333e-03, +-1.302944485803516662e-03, +-1.302873292033449471e-03, +-1.302799985713695230e-03, +-1.302724567081321467e-03, +-1.302647036376821787e-03, +-1.302567393844096359e-03, +-1.302485639730471215e-03, +-1.302401774286691310e-03, +-1.302315797766913797e-03, +-1.302227710428713022e-03, +-1.302137512533083985e-03, +-1.302045204344426301e-03, +-1.301950786130568697e-03, +-1.301854258162741043e-03, +-1.301755620715593217e-03, +-1.301654874067186213e-03, +-1.301552018498993227e-03, +-1.301447054295890330e-03, +-1.301339981746182711e-03, +-1.301230801141568024e-03, +-1.301119512777164366e-03, +-1.301006116951494230e-03, +-1.300890613966481030e-03, +-1.300773004127468192e-03, +-1.300653287743201800e-03, +-1.300531465125829081e-03, +-1.300407536590904474e-03, +-1.300281502457391802e-03, +-1.300153363047656463e-03, +-1.300023118687454590e-03, +-1.299890769705966441e-03, +-1.299756316435761710e-03, +-1.299619759212808411e-03, +-1.299481098376476353e-03, +-1.299340334269547545e-03, +-1.299197467238185190e-03, +-1.299052497631953632e-03, +-1.298905425803829634e-03, +-1.298756252110166596e-03, +-1.298604976910722533e-03, +-1.298451600568648577e-03, +-1.298296123450498087e-03, +-1.298138545926208866e-03, +-1.297978868369107286e-03, +-1.297817091155923242e-03, +-1.297653214666770211e-03, +-1.297487239285153486e-03, +-1.297319165397965626e-03, +-1.297148993395494691e-03, +-1.296976723671407119e-03, +-1.296802356622761164e-03, +-1.296625892650001260e-03, +-1.296447332156956287e-03, +-1.296266675550839572e-03, +-1.296083923242243897e-03, +-1.295899075645151480e-03, +-1.295712133176927247e-03, +-1.295523096258302141e-03, +-1.295331965313407377e-03, +-1.295138740769744522e-03, +-1.294943423058183326e-03, +-1.294746012612987525e-03, +-1.294546509871792291e-03, +-1.294344915275601193e-03, +-1.294141229268797912e-03, +-1.293935452299145366e-03, +-1.293727584817762517e-03, +-1.293517627279158625e-03, +-1.293305580141204409e-03, +-1.293091443865148965e-03, +-1.292875218915596341e-03, +-1.292656905760523976e-03, +-1.292436504871294183e-03, +-1.292214016722606886e-03, +-1.291989441792541467e-03, +-1.291762780562545924e-03, +-1.291534033517429932e-03, +-1.291303201145352266e-03, +-1.291070283937851594e-03, +-1.290835282389815467e-03, +-1.290598196999502437e-03, +-1.290359028268507798e-03, +-1.290117776701803047e-03, +-1.289874442807719193e-03, +-1.289629027097930923e-03, +-1.289381530087452482e-03, +-1.289131952294697960e-03, +-1.288880294241393030e-03, +-1.288626556452617672e-03, +-1.288370739456825252e-03, +-1.288112843785795469e-03, +-1.287852869974679890e-03, +-1.287590818561945788e-03, +-1.287326690089431874e-03, +-1.287060485102321187e-03, +-1.286792204149117243e-03, +-1.286521847781688923e-03, +-1.286249416555248137e-03, +-1.285974911028325536e-03, +-1.285698331762814318e-03, +-1.285419679323940734e-03, +-1.285138954280253465e-03, +-1.284856157203654193e-03, +-1.284571288669377658e-03, +-1.284284349255982761e-03, +-1.283995339545379458e-03, +-1.283704260122782350e-03, +-1.283411111576759911e-03, +-1.283115894499206513e-03, +-1.282818609485332452e-03, +-1.282519257133685631e-03, +-1.282217838046145275e-03, +-1.281914352827896340e-03, +-1.281608802087465726e-03, +-1.281301186436703196e-03, +-1.280991506490753188e-03, +-1.280679762868117046e-03, +-1.280365956190593606e-03, +-1.280050087083305435e-03, +-1.279732156174688638e-03, +-1.279412164096485052e-03, +-1.279090111483783014e-03, +-1.278765998974951005e-03, +-1.278439827211674297e-03, +-1.278111596838962978e-03, +-1.277781308505135469e-03, +-1.277448962861795542e-03, +-1.277114560563876551e-03, +-1.276778102269608478e-03, +-1.276439588640538095e-03, +-1.276099020341487983e-03, +-1.275756398040609006e-03, +-1.275411722409345618e-03, +-1.275064994122424369e-03, +-1.274716213857890771e-03, +-1.274365382297086525e-03, +-1.274012500124629358e-03, +-1.273657568028447283e-03, +-1.273300586699771010e-03, +-1.272941556833085807e-03, +-1.272580479126213249e-03, +-1.272217354280218192e-03, +-1.271852182999486406e-03, +-1.271484965991685973e-03, +-1.271115703967747122e-03, +-1.270744397641907549e-03, +-1.270371047731683363e-03, +-1.269995654957857805e-03, +-1.269618220044499467e-03, +-1.269238743718973999e-03, +-1.268857226711890985e-03, +-1.268473669757157066e-03, +-1.268088073591953392e-03, +-1.267700438956716105e-03, +-1.267310766595185993e-03, +-1.266919057254314168e-03, +-1.266525311684398893e-03, +-1.266129530638947665e-03, +-1.265731714874743143e-03, +-1.265331865151842925e-03, +-1.264929982233578250e-03, +-1.264526066886506074e-03, +-1.264120119880473691e-03, +-1.263712141988585337e-03, +-1.263302133987181160e-03, +-1.262890096655876031e-03, +-1.262476030777532005e-03, +-1.262059937138279358e-03, +-1.261641816527458906e-03, +-1.261221669737703751e-03, +-1.260799497564882689e-03, +-1.260375300808105848e-03, +-1.259949080269703653e-03, +-1.259520836755323751e-03, +-1.259090571073774459e-03, +-1.258658284037159417e-03, +-1.258223976460785213e-03, +-1.257787649163224272e-03, +-1.257349302966281673e-03, +-1.256908938694975423e-03, +-1.256466557177575482e-03, +-1.256022159245589456e-03, +-1.255575745733731804e-03, +-1.255127317479965256e-03, +-1.254676875325481944e-03, +-1.254224420114675000e-03, +-1.253769952695187994e-03, +-1.253313473917887612e-03, +-1.252854984636827011e-03, +-1.252394485709323879e-03, +-1.251931977995877606e-03, +-1.251467462360222188e-03, +-1.251000939669316692e-03, +-1.250532410793287570e-03, +-1.250061876605547710e-03, +-1.249589337982653318e-03, +-1.249114795804378945e-03, +-1.248638250953737440e-03, +-1.248159704316933322e-03, +-1.247679156783347608e-03, +-1.247196609245599178e-03, +-1.246712062599503136e-03, +-1.246225517744037640e-03, +-1.245736975581418059e-03, +-1.245246437017037558e-03, +-1.244753902959496589e-03, +-1.244259374320567327e-03, +-1.243762852015197146e-03, +-1.243264336961587540e-03, +-1.242763830081066844e-03, +-1.242261332298154200e-03, +-1.241756844540578206e-03, +-1.241250367739245688e-03, +-1.240741902828215249e-03, +-1.240231450744752996e-03, +-1.239719012429289389e-03, +-1.239204588825443525e-03, +-1.238688180879980423e-03, +-1.238169789542859379e-03, +-1.237649415767217700e-03, +-1.237127060509335364e-03, +-1.236602724728646293e-03, +-1.236076409387816847e-03, +-1.235548115452603365e-03, +-1.235017843891972507e-03, +-1.234485595678007147e-03, +-1.233951371785984219e-03, +-1.233415173194339154e-03, +-1.232877000884620563e-03, +-1.232336855841565477e-03, +-1.231794739053066389e-03, +-1.231250651510119431e-03, +-1.230704594206919779e-03, +-1.230156568140794437e-03, +-1.229606574312180987e-03, +-1.229054613724695237e-03, +-1.228500687385095666e-03, +-1.227944796303240488e-03, +-1.227386941492159423e-03, +-1.226827123968017488e-03, +-1.226265344750077698e-03, +-1.225701604860778482e-03, +-1.225135905325631545e-03, +-1.224568247173357183e-03, +-1.223998631435727720e-03, +-1.223427059147656195e-03, +-1.222853531347194633e-03, +-1.222278049075517991e-03, +-1.221700613376885134e-03, +-1.221121225298701062e-03, +-1.220539885891491327e-03, +-1.219956596208854761e-03, +-1.219371357307536333e-03, +-1.218784170247376409e-03, +-1.218195036091337426e-03, +-1.217603955905457915e-03, +-1.217010930758871375e-03, +-1.216415961723880858e-03, +-1.215819049875821282e-03, +-1.215220196293116672e-03, +-1.214619402057365597e-03, +-1.214016668253171168e-03, +-1.213411995968287620e-03, +-1.212805386293518400e-03, +-1.212196840322773625e-03, +-1.211586359153069004e-03, +-1.210973943884454274e-03, +-1.210359595620096691e-03, +-1.209743315466252182e-03, +-1.209125104532208323e-03, +-1.208504963930367819e-03, +-1.207882894776210556e-03, +-1.207258898188247201e-03, +-1.206632975288095310e-03, +-1.206005127200440730e-03, +-1.205375355053001606e-03, +-1.204743659976601237e-03, +-1.204110043105078307e-03, +-1.203474505575371448e-03, +-1.202837048527474577e-03, +-1.202197673104397641e-03, +-1.201556380452246421e-03, +-1.200913171720172871e-03, +-1.200268048060344327e-03, +-1.199621010628012033e-03, +-1.198972060581473187e-03, +-1.198321199082028445e-03, +-1.197668427294058032e-03, +-1.197013746384987263e-03, +-1.196357157525229512e-03, +-1.195698661888293119e-03, +-1.195038260650651283e-03, +-1.194375954991901871e-03, +-1.193711746094589833e-03, +-1.193045635144282437e-03, +-1.192377623329666202e-03, +-1.191707711842353041e-03, +-1.191035901876999741e-03, +-1.190362194631305361e-03, +-1.189686591305966126e-03, +-1.189009093104713595e-03, +-1.188329701234247440e-03, +-1.187648416904316540e-03, +-1.186965241327684511e-03, +-1.186280175720065512e-03, +-1.185593221300230721e-03, +-1.184904379289949570e-03, +-1.184213650913957215e-03, +-1.183521037399979910e-03, +-1.182826539978820441e-03, +-1.182130159884168391e-03, +-1.181431898352785321e-03, +-1.180731756624356886e-03, +-1.180029735941600386e-03, +-1.179325837550216196e-03, +-1.178620062698841576e-03, +-1.177912412639137195e-03, +-1.177202888625750263e-03, +-1.176491491916244712e-03, +-1.175778223771207446e-03, +-1.175063085454197166e-03, +-1.174346078231698620e-03, +-1.173627203373201313e-03, +-1.172906462151163294e-03, +-1.172183855840956300e-03, +-1.171459385720975037e-03, +-1.170733053072510986e-03, +-1.170004859179850408e-03, +-1.169274805330241173e-03, +-1.168542892813810791e-03, +-1.167809122923747040e-03, +-1.167073496956100211e-03, +-1.166336016209860733e-03, +-1.165596681987009480e-03, +-1.164855495592453157e-03, +-1.164112458333998274e-03, +-1.163367571522429212e-03, +-1.162620836471456396e-03, +-1.161872254497688106e-03, +-1.161121826920690110e-03, +-1.160369555062945764e-03, +-1.159615440249883766e-03, +-1.158859483809810721e-03, +-1.158101687073943235e-03, +-1.157342051376503318e-03, +-1.156580578054537331e-03, +-1.155817268448016593e-03, +-1.155052123899850611e-03, +-1.154285145755844146e-03, +-1.153516335364718030e-03, +-1.152745694078052136e-03, +-1.151973223250368642e-03, +-1.151198924239093006e-03, +-1.150422798404491078e-03, +-1.149644847109769930e-03, +-1.148865071721034926e-03, +-1.148083473607239410e-03, +-1.147300054140206176e-03, +-1.146514814694740659e-03, +-1.145727756648413876e-03, +-1.144938881381746959e-03, +-1.144148190278123332e-03, +-1.143355684723758574e-03, +-1.142561366107808403e-03, +-1.141765235822225343e-03, +-1.140967295261878858e-03, +-1.140167545824506343e-03, +-1.139365988910648721e-03, +-1.138562625923762337e-03, +-1.137757458270159325e-03, +-1.136950487358949491e-03, +-1.136141714602154594e-03, +-1.135331141414635267e-03, +-1.134518769214057192e-03, +-1.133704599420972195e-03, +-1.132888633458780953e-03, +-1.132070872753669893e-03, +-1.131251318734730017e-03, +-1.130429972833795794e-03, +-1.129606836485666120e-03, +-1.128781911127855597e-03, +-1.127955198200726811e-03, +-1.127126699147498788e-03, +-1.126296415414214467e-03, +-1.125464348449681500e-03, +-1.124630499705581979e-03, +-1.123794870636387428e-03, +-1.122957462699406949e-03, +-1.122118277354696141e-03, +-1.121277316065181140e-03, +-1.120434580296580766e-03, +-1.119590071517389401e-03, +-1.118743791198876982e-03, +-1.117895740815220192e-03, +-1.117045921843281067e-03, +-1.116194335762712812e-03, +-1.115340984056066489e-03, +-1.114485868208552489e-03, +-1.113628989708251738e-03, +-1.112770350045960222e-03, +-1.111909950715302825e-03, +-1.111047793212684978e-03, +-1.110183879037221098e-03, +-1.109318209690863611e-03, +-1.108450786678321417e-03, +-1.107581611507023464e-03, +-1.106710685687208300e-03, +-1.105838010731885045e-03, +-1.104963588156754892e-03, +-1.104087419480335357e-03, +-1.103209506223896529e-03, +-1.102329849911400789e-03, +-1.101448452069632693e-03, +-1.100565314228050661e-03, +-1.099680437918898208e-03, +-1.098793824677177710e-03, +-1.097905476040554997e-03, +-1.097015393549495522e-03, +-1.096123578747196063e-03, +-1.095230033179517065e-03, +-1.094334758395111877e-03, +-1.093437755945353678e-03, +-1.092539027384279099e-03, +-1.091638574268696208e-03, +-1.090736398158115988e-03, +-1.089832500614774241e-03, +-1.088926883203588216e-03, +-1.088019547492149889e-03, +-1.087110495050885341e-03, +-1.086199727452797151e-03, +-1.085287246273588429e-03, +-1.084373053091779908e-03, +-1.083457149488461450e-03, +-1.082539537047442742e-03, +-1.081620217355254389e-03, +-1.080699192001094346e-03, +-1.079776462576864790e-03, +-1.078852030677086241e-03, +-1.077925897899015967e-03, +-1.076998065842590079e-03, +-1.076068536110352846e-03, +-1.075137310307577691e-03, +-1.074204390042205392e-03, +-1.073269776924781196e-03, +-1.072333472568569096e-03, +-1.071395478589490897e-03, +-1.070455796606067673e-03, +-1.069514428239548781e-03, +-1.068571375113754008e-03, +-1.067626638855210825e-03, +-1.066680221093090205e-03, +-1.065732123459148077e-03, +-1.064782347587833527e-03, +-1.063830895116234373e-03, +-1.062877767684011678e-03, +-1.061922966933510123e-03, +-1.060966494509713986e-03, +-1.060008352060161059e-03, +-1.059048541235078607e-03, +-1.058087063687306820e-03, +-1.057123921072240704e-03, +-1.056159115047956929e-03, +-1.055192647275114953e-03, +-1.054224519417005807e-03, +-1.053254733139482278e-03, +-1.052283290110977336e-03, +-1.051310192002648768e-03, +-1.050335440488130460e-03, +-1.049359037243657736e-03, +-1.048380983948110721e-03, +-1.047401282282950591e-03, +-1.046419933932161463e-03, +-1.045436940582370518e-03, +-1.044452303922765611e-03, +-1.043466025645132991e-03, +-1.042478107443760380e-03, +-1.041488551015579437e-03, +-1.040497358060081838e-03, +-1.039504530279281762e-03, +-1.038510069377739098e-03, +-1.037513977062691495e-03, +-1.036516255043812588e-03, +-1.035516905033344922e-03, +-1.034515928746125102e-03, +-1.033513327899512457e-03, +-1.032509104213436089e-03, +-1.031503259410298601e-03, +-1.030495795215107934e-03, +-1.029486713355399303e-03, +-1.028476015561189012e-03, +-1.027463703565074417e-03, +-1.026449779102181882e-03, +-1.025434243910102166e-03, +-1.024417099729004908e-03, +-1.023398348301583554e-03, +-1.022377991372969488e-03, +-1.021356030690882301e-03, +-1.020332468005541535e-03, +-1.019307305069615732e-03, +-1.018280543638352097e-03, +-1.017252185469419727e-03, +-1.016222232323042967e-03, +-1.015190685961940694e-03, +-1.014157548151260399e-03, +-1.013122820658697229e-03, +-1.012086505254437179e-03, +-1.011048603711071003e-03, +-1.010009117803750342e-03, +-1.008968049310085590e-03, +-1.007925400010100574e-03, +-1.006881171686357240e-03, +-1.005835366123854170e-03, +-1.004787985110085560e-03, +-1.003739030434951020e-03, +-1.002688503890788313e-03, +-1.001636407272526227e-03, +-1.000582742377410057e-03, +-9.995275110051473223e-04, +-9.984707149579474458e-04, +-9.974123560404523671e-04, +-9.963524360596812471e-04, +-9.952909568251505981e-04, +-9.942279201487916676e-04, +-9.931633278449873009e-04, +-9.920971817304726284e-04, +-9.910294836244862033e-04, +-9.899602353486739413e-04, +-9.888894387270648345e-04, +-9.878170955860653135e-04, +-9.867432077546437787e-04, +-9.856677770640088088e-04, +-9.845908053478678520e-04, +-9.835122944423294305e-04, +-9.824322461858270294e-04, +-9.813506624192921361e-04, +-9.802675449859408682e-04, +-9.791828957314613249e-04, +-9.780967165039266328e-04, +-9.770090091537142821e-04, +-9.759197755336549871e-04, +-9.748290174989624303e-04, +-9.737367369071427310e-04, +-9.726429356181516550e-04, +-9.715476154943070109e-04, +-9.704507784002222972e-04, +-9.693524262029399501e-04, +-9.682525607718614133e-04, +-9.671511839786728695e-04, +-9.660482976975070038e-04, +-9.649439038047209587e-04, +-9.638380041791880931e-04, +-9.627306007019792271e-04, +-9.616216952565253802e-04, +-9.605112897286455275e-04, +-9.593993860064836069e-04, +-9.582859859804504065e-04, +-9.571710915433425011e-04, +-9.560547045902914034e-04, +-9.549368270186612152e-04, +-9.538174607282232922e-04, +-9.526966076210185508e-04, +-9.515742696014363976e-04, +-9.504504485760862514e-04, +-9.493251464539702571e-04, +-9.481983651463739976e-04, +-9.470701065668444846e-04, +-9.459403726311854969e-04, +-9.448091652576504594e-04, +-9.436764863665989683e-04, +-9.425423378808002592e-04, +-9.414067217252061748e-04, +-9.402696398271179158e-04, +-9.391310941161131820e-04, +-9.379910865239621471e-04, +-9.368496189847837999e-04, +-9.357066934349522703e-04, +-9.345623118130374140e-04, +-9.334164760599328575e-04, +-9.322691881187913790e-04, +-9.311204499349413173e-04, +-9.299702634560348897e-04, +-9.288186306319652511e-04, +-9.276655534147947198e-04, +-9.265110337589221780e-04, +-9.253550736208836875e-04, +-9.241976749595138185e-04, +-9.230388397358866692e-04, +-9.218785699131924836e-04, +-9.207168674570197610e-04, +-9.195537343350284774e-04, +-9.183891725171108725e-04, +-9.172231839754297223e-04, +-9.160557706843487332e-04, +-9.148869346203653214e-04, +-9.137166777622513425e-04, +-9.125450020909779561e-04, +-9.113719095896333352e-04, +-9.101974022435784656e-04, +-9.090214820403277754e-04, +-9.078441509696126696e-04, +-9.066654110232952269e-04, +-9.054852641953839215e-04, +-9.043037124822236828e-04, +-9.031207578821678168e-04, +-9.019364023957718605e-04, +-9.007506480258004131e-04, +-8.995634967771835508e-04, +-8.983749506569281389e-04, +-8.971850116742767760e-04, +-8.959936818405943868e-04, +-8.948009631694185282e-04, +-8.936068576763547648e-04, +-8.924113673792298659e-04, +-8.912144942980046360e-04, +-8.900162404547204637e-04, +-8.888166078735268601e-04, +-8.876155985808544977e-04, +-8.864132146050753133e-04, +-8.852094579768150827e-04, +-8.840043307287079582e-04, +-8.827978348955800234e-04, +-8.815899725143736161e-04, +-8.803807456240499672e-04, +-8.791701562657599622e-04, +-8.779582064827501408e-04, +-8.767448983202827915e-04, +-8.755302338257980399e-04, +-8.743142150488223416e-04, +-8.730968440408868421e-04, +-8.718781228556859953e-04, +-8.706580535489951648e-04, +-8.694366381785836699e-04, +-8.682138788043735136e-04, +-8.669897774883567661e-04, +-8.657643362945056844e-04, +-8.645375572889677602e-04, +-8.633094425398087643e-04, +-8.620799941173433196e-04, +-8.608492140937722354e-04, +-8.596171045433696409e-04, +-8.583836675425122586e-04, +-8.571489051696161952e-04, +-8.559128195050499889e-04, +-8.546754126313038527e-04, +-8.534366866328920971e-04, +-8.521966435962782110e-04, +-8.509552856100321798e-04, +-8.497126147647090545e-04, +-8.484686331529177989e-04, +-8.472233428692195912e-04, +-8.459767460101560131e-04, +-8.447288446744440982e-04, +-8.434796409626328564e-04, +-8.422291369773009240e-04, +-8.409773348230808500e-04, +-8.397242366065584820e-04, +-8.384698444363473425e-04, +-8.372141604229560311e-04, +-8.359571866789583354e-04, +-8.346989253189053028e-04, +-8.334393784592415396e-04, +-8.321785482184606859e-04, +-8.309164367170276781e-04, +-8.296530460772825804e-04, +-8.283883784236164421e-04, +-8.271224358823678650e-04, +-8.258552205817487352e-04, +-8.245867346520075044e-04, +-8.233169802253269493e-04, +-8.220459594357606373e-04, +-8.207736744194042309e-04, +-8.195001273141772373e-04, +-8.182253202600191407e-04, +-8.169492553987917158e-04, +-8.156719348741981465e-04, +-8.143933608319482579e-04, +-8.131135354196671180e-04, +-8.118324607868060254e-04, +-8.105501390848147882e-04, +-8.092665724670485916e-04, +-8.079817630886773584e-04, +-8.066957131068574864e-04, +-8.054084246806398001e-04, +-8.041198999708795616e-04, +-8.028301411404363975e-04, +-8.015391503539131147e-04, +-8.002469297779889841e-04, +-7.989534815810497024e-04, +-7.976588079333577202e-04, +-7.963629110072135715e-04, +-7.950657929766132654e-04, +-7.937674560174442021e-04, +-7.924679023075106507e-04, +-7.911671340264441951e-04, +-7.898651533557533898e-04, +-7.885619624787112199e-04, +-7.872575635805205505e-04, +-7.859519588482248966e-04, +-7.846451504706185428e-04, +-7.833371406384154623e-04, +-7.820279315441608457e-04, +-7.807175253821653981e-04, +-7.794059243485323366e-04, +-7.780931306413647972e-04, +-7.767791464603673911e-04, +-7.754639740072121227e-04, +-7.741476154852527025e-04, +-7.728300730997393272e-04, +-7.715113490577199095e-04, +-7.701914455679568106e-04, +-7.688703648410843755e-04, +-7.675481090895350982e-04, +-7.662246805274304431e-04, +-7.649000813707709052e-04, +-7.635743138373260724e-04, +-7.622473801465590561e-04, +-7.609192825197886884e-04, +-7.595900231800963888e-04, +-7.582596043522492942e-04, +-7.569280282628821884e-04, +-7.555952971402737223e-04, +-7.542614132145385349e-04, +-7.529263787175419264e-04, +-7.515901958827768013e-04, +-7.502528669456828576e-04, +-7.489143941432602853e-04, +-7.475747797142704527e-04, +-7.462340258992681066e-04, +-7.448921349405255871e-04, +-7.435491090819563911e-04, +-7.422049505692797540e-04, +-7.408596616499281678e-04, +-7.395132445729568496e-04, +-7.381657015892187325e-04, +-7.368170349512383720e-04, +-7.354672469132696264e-04, +-7.341163397312055593e-04, +-7.327643156626001235e-04, +-7.314111769668719910e-04, +-7.300569259049525129e-04, +-7.287015647394767554e-04, +-7.273450957348193873e-04, +-7.259875211570006792e-04, +-7.246288432737373530e-04, +-7.232690643543220185e-04, +-7.219081866698023918e-04, +-7.205462124928821996e-04, +-7.191831440978305396e-04, +-7.178189837606578465e-04, +-7.164537337590160372e-04, +-7.150873963721497218e-04, +-7.137199738809042260e-04, +-7.123514685679467693e-04, +-7.109818827173598884e-04, +-7.096112186150106086e-04, +-7.082394785482673582e-04, +-7.068666648062069428e-04, +-7.054927796795242316e-04, +-7.041178254604382649e-04, +-7.027418044428641007e-04, +-7.013647189223229340e-04, +-6.999865711958508071e-04, +-6.986073635621639502e-04, +-6.972270983215799606e-04, +-6.958457777759105740e-04, +-6.944634042286438116e-04, +-6.930799799848549663e-04, +-6.916955073510988334e-04, +-6.903099886356043246e-04, +-6.889234261481660482e-04, +-6.875358222000533441e-04, +-6.861471791042212699e-04, +-6.847574991750343459e-04, +-6.833667847286205473e-04, +-6.819750380824819670e-04, +-6.805822615556944176e-04, +-6.791884574689377885e-04, +-6.777936281444370660e-04, +-6.763977759058561893e-04, +-6.750009030784847501e-04, +-6.736030119891096238e-04, +-6.722041049660761177e-04, +-6.708041843391512535e-04, +-6.694032524397158877e-04, +-6.680013116006623631e-04, +-6.665983641563298905e-04, +-6.651944124425321955e-04, +-6.637894587967670948e-04, +-6.623835055578497109e-04, +-6.609765550660830170e-04, +-6.595686096634449701e-04, +-6.581596716931881154e-04, +-6.567497435001963969e-04, +-6.553388274307071684e-04, +-6.539269258325292261e-04, +-6.525140410549365574e-04, +-6.511001754485785682e-04, +-6.496853313656590851e-04, +-6.482695111598397531e-04, +-6.468527171861463603e-04, +-6.454349518011449124e-04, +-6.440162173628475239e-04, +-6.425965162306212369e-04, +-6.411758507653557470e-04, +-6.397542233293878342e-04, +-6.383316362863774391e-04, +-6.369080920015482471e-04, +-6.354835928414131682e-04, +-6.340581411740059230e-04, +-6.326317393687707789e-04, +-6.312043897964689839e-04, +-6.297760948293648154e-04, +-6.283468568411233399e-04, +-6.269166782067196655e-04, +-6.254855613026120888e-04, +-6.240535085066580695e-04, +-6.226205221980015813e-04, +-6.211866047572690277e-04, +-6.197517585664308977e-04, +-6.183159860088714797e-04, +-6.168792894692749123e-04, +-6.154416713336702868e-04, +-6.140031339896335257e-04, +-6.125636798259158269e-04, +-6.111233112326201712e-04, +-6.096820306013933351e-04, +-6.082398403250436009e-04, +-6.067967427977480560e-04, +-6.053527404150910824e-04, +-6.039078355739630919e-04, +-6.024620306726174469e-04, +-6.010153281105352603e-04, +-5.995677302886256478e-04, +-5.981192396091127537e-04, +-5.966698584754426184e-04, +-5.952195892924687934e-04, +-5.937684344663551970e-04, +-5.923163964044715971e-04, +-5.908634775155849729e-04, +-5.894096802097590097e-04, +-5.879550068982532674e-04, +-5.864994599937465268e-04, +-5.850430419100680155e-04, +-5.835857550624274758e-04, +-5.821276018673127075e-04, +-5.806685847423850508e-04, +-5.792087061066683628e-04, +-5.777479683804543666e-04, +-5.762863739852003026e-04, +-5.748239253437107494e-04, +-5.733606248800481768e-04, +-5.718964750194211648e-04, +-5.704314781883867156e-04, +-5.689656368147352197e-04, +-5.674989533273994916e-04, +-5.660314301566751879e-04, +-5.645630697339537683e-04, +-5.630938744919502864e-04, +-5.616238468646004992e-04, +-5.601529892869231732e-04, +-5.586813041953826416e-04, +-5.572087940274513288e-04, +-5.557354612218380835e-04, +-5.542613082185204876e-04, +-5.527863374586703717e-04, +-5.513105513845532012e-04, +-5.498339524397220400e-04, +-5.483565430688785557e-04, +-5.468783257179403489e-04, +-5.453993028339001146e-04, +-5.439194768650226428e-04, +-5.424388502607372644e-04, +-5.409574254715772456e-04, +-5.394752049491958329e-04, +-5.379921911466041280e-04, +-5.365083865177651618e-04, +-5.350237935178240711e-04, +-5.335384146031337937e-04, +-5.320522522311541295e-04, +-5.305653088605116969e-04, +-5.290775869508714544e-04, +-5.275890889631175461e-04, +-5.260998173592601685e-04, +-5.246097746023304026e-04, +-5.231189631565717930e-04, +-5.216273854873420103e-04, +-5.201350440610010700e-04, +-5.186419413451159215e-04, +-5.171480798083515941e-04, +-5.156534619203645116e-04, +-5.141580901520075150e-04, +-5.126619669752156957e-04, +-5.111650948629059988e-04, +-5.096674762892117357e-04, +-5.081691137292025347e-04, +-5.066700096591192880e-04, +-5.051701665562727782e-04, +-5.036695868989310302e-04, +-5.021682731665214061e-04, +-5.006662278395263054e-04, +-4.991634533993766958e-04, +-4.976599523286521489e-04, +-4.961557271109688421e-04, +-4.946507802308859917e-04, +-4.931451141740913601e-04, +-4.916387314272713683e-04, +-4.901316344781698597e-04, +-4.886238258154858597e-04, +-4.871153079289027954e-04, +-4.856060833093169362e-04, +-4.840961544484305478e-04, +-4.825855238389868381e-04, +-4.810741939747960869e-04, +-4.795621673506628960e-04, +-4.780494464622875262e-04, +-4.765360338064559046e-04, +-4.750219318809061585e-04, +-4.735071431843881928e-04, +-4.719916702165299536e-04, +-4.704755154780296570e-04, +-4.689586814705544709e-04, +-4.674411706966663548e-04, +-4.659229856598567552e-04, +-4.644041288647691372e-04, +-4.628846028167649790e-04, +-4.613644100222900695e-04, +-4.598435529887279238e-04, +-4.583220342243057833e-04, +-4.567998562383148169e-04, +-4.552770215408455758e-04, +-4.537535326430140498e-04, +-4.522293920568601854e-04, +-4.507046022952400084e-04, +-4.491791658720245745e-04, +-4.476530853019961031e-04, +-4.461263631007400987e-04, +-4.445990017848431642e-04, +-4.430710038717955305e-04, +-4.415423718798720657e-04, +-4.400131083283425563e-04, +-4.384832157373611179e-04, +-4.369526966278606487e-04, +-4.354215535217869086e-04, +-4.338897889417876784e-04, +-4.323574054116180346e-04, +-4.308244054556931157e-04, +-4.292907915993211723e-04, +-4.277565663687359293e-04, +-4.262217322910230783e-04, +-4.246862918940122358e-04, +-4.231502477064797438e-04, +-4.216136022580422010e-04, +-4.200763580790461450e-04, +-4.185385177007763281e-04, +-4.170000836553051753e-04, +-4.154610584755665100e-04, +-4.139214446952065854e-04, +-4.123812448487901359e-04, +-4.108404614716922834e-04, +-4.092990971000265996e-04, +-4.077571542706726450e-04, +-4.062146355215125963e-04, +-4.046715433909864519e-04, +-4.031278804184889046e-04, +-4.015836491440700476e-04, +-4.000388521086560632e-04, +-3.984934918539560908e-04, +-3.969475709223470837e-04, +-3.954010918570761220e-04, +-3.938540572021558407e-04, +-3.923064695022571483e-04, +-3.907583313029081235e-04, +-3.892096451503900402e-04, +-3.876604135916256405e-04, +-3.861106391743902291e-04, +-3.845603244471927900e-04, +-3.830094719591761320e-04, +-3.814580842603525397e-04, +-3.799061639013224232e-04, +-3.783537134335123006e-04, +-3.768007354090662691e-04, +-3.752472323807404578e-04, +-3.736932069021041479e-04, +-3.721386615274305384e-04, +-3.705835988115941814e-04, +-3.690280213102686314e-04, +-3.674719315798193812e-04, +-3.659153321772003740e-04, +-3.643582256601517080e-04, +-3.628006145870950111e-04, +-3.612425015170239902e-04, +-3.596838890097102132e-04, +-3.581247796255559285e-04, +-3.565651759256638874e-04, +-3.550050804717266471e-04, +-3.534444958260567660e-04, +-3.518834245518270083e-04, +-3.503218692126491320e-04, +-3.487598323728111657e-04, +-3.471973165973116704e-04, +-3.456343244517807545e-04, +-3.440708585023754488e-04, +-3.425069213159858674e-04, +-3.409425154600843953e-04, +-3.393776435027976248e-04, +-3.378123080127639461e-04, +-3.362465115593323353e-04, +-3.346802567124559404e-04, +-3.331135460426219328e-04, +-3.315463821208777459e-04, +-3.299787675190713875e-04, +-3.284107048093973767e-04, +-3.268421965648062467e-04, +-3.252732453586881746e-04, +-3.237038537651166017e-04, +-3.221340243587334710e-04, +-3.205637597146443842e-04, +-3.189930624086217818e-04, +-3.174219350169965766e-04, +-3.158503801165506554e-04, +-3.142784002847193539e-04, +-3.127059980994841199e-04, +-3.111331761392650700e-04, +-3.095599369831221622e-04, +-3.079862832106505712e-04, +-3.064122174018682021e-04, +-3.048377421374243992e-04, +-3.032628599984871893e-04, +-3.016875735666375716e-04, +-3.001118854241079884e-04, +-2.985357981534635151e-04, +-2.969593143380191698e-04, +-2.953824365613780430e-04, +-2.938051674076743217e-04, +-2.922275094616035387e-04, +-2.906494653083463529e-04, +-2.890710375334636529e-04, +-2.874922287230971345e-04, +-2.859130414638640246e-04, +-2.843334783427465466e-04, +-2.827535419472965638e-04, +-2.811732348654931153e-04, +-2.795925596858073051e-04, +-2.780115189970930691e-04, +-2.764301153886183460e-04, +-2.748483514503056069e-04, +-2.732662297723064695e-04, +-2.716837529452457512e-04, +-2.701009235602481952e-04, +-2.685177442088308632e-04, +-2.669342174829713861e-04, +-2.653503459749594821e-04, +-2.637661322776050699e-04, +-2.621815789841289808e-04, +-2.605966886880539419e-04, +-2.590114639834085151e-04, +-2.574259074646201946e-04, +-2.558400217264050346e-04, +-2.542538093639720763e-04, +-2.526672729729186680e-04, +-2.510804151491145093e-04, +-2.494932384889139926e-04, +-2.479057455890417653e-04, +-2.463179390464866406e-04, +-2.447298214587416399e-04, +-2.431413954235188478e-04, +-2.415526635389914870e-04, +-2.399636284036838721e-04, +-2.383742926163610919e-04, +-2.367846587762384501e-04, +-2.351947294828681933e-04, +-2.336045073360312806e-04, +-2.320139949359453335e-04, +-2.304231948831525023e-04, +-2.288321097784112900e-04, +-2.272407422229039326e-04, +-2.256490948181248896e-04, +-2.240571701657720978e-04, +-2.224649708679884779e-04, +-2.208724995270412814e-04, +-2.192797587457411619e-04, +-2.176867511269780825e-04, +-2.160934792739303497e-04, +-2.144999457902706935e-04, +-2.129061532797403924e-04, +-2.113121043463888553e-04, +-2.097178015946078548e-04, +-2.081232476290206682e-04, +-2.065284450545477250e-04, +-2.049333964762595900e-04, +-2.033381044995890869e-04, +-2.017425717302162103e-04, +-2.001468007739614946e-04, +-1.985507942369914432e-04, +-1.969545547257100810e-04, +-1.953580848466818405e-04, +-1.937613872066643050e-04, +-1.921644644128521809e-04, +-1.905673190724103592e-04, +-1.889699537928974857e-04, +-1.873723711819412160e-04, +-1.857745738474814558e-04, +-1.841765643976626726e-04, +-1.825783454407189162e-04, +-1.809799195851863763e-04, +-1.793812894397907884e-04, +-1.777824576133367907e-04, +-1.761834267149168772e-04, +-1.745841993538006461e-04, +-1.729847781393239949e-04, +-1.713851656810977744e-04, +-1.697853645888980681e-04, +-1.681853774725535432e-04, +-1.665852069421908598e-04, +-1.649848556079461649e-04, +-1.633843260802100676e-04, +-1.617836209695162105e-04, +-1.601827428863940078e-04, +-1.585816944417571420e-04, +-1.569804782464362999e-04, +-1.553790969114230639e-04, +-1.537775530479028178e-04, +-1.521758492671784182e-04, +-1.505739881805585499e-04, +-1.489719723995691170e-04, +-1.473698045358386979e-04, +-1.457674872009923745e-04, +-1.441650230068561582e-04, +-1.425624145653131168e-04, +-1.409596644883705674e-04, +-1.393567753880474555e-04, +-1.377537498764062570e-04, +-1.361505905657986861e-04, +-1.345473000684337486e-04, +-1.329438809966216879e-04, +-1.313403359628074324e-04, +-1.297366675794574319e-04, +-1.281328784591286669e-04, +-1.265289712143195442e-04, +-1.249249484576814512e-04, +-1.233208128019073276e-04, +-1.217165668596186505e-04, +-1.201122132435776399e-04, +-1.185077545665744208e-04, +-1.169031934413518873e-04, +-1.152985324806365757e-04, +-1.136937742973860251e-04, +-1.120889215043180441e-04, +-1.104839767143364360e-04, +-1.088789425402050473e-04, +-1.072738215947937999e-04, +-1.056686164909664090e-04, +-1.040633298414695497e-04, +-1.024579642591438438e-04, +-1.008525223568103969e-04, +-9.924700674716076634e-05, +-9.764142004296766191e-05, +-9.603576485697144349e-05, +-9.443004380177092837e-05, +-9.282425949003191045e-05, +-9.121841453437659869e-05, +-8.961251154727183587e-05, +-8.800655314123939318e-05, +-8.640054192874444645e-05, +-8.479448052208387622e-05, +-8.318837153363304573e-05, +-8.158221757551880552e-05, +-7.997602126004462267e-05, +-7.836978519922217833e-05, +-7.676351200501619417e-05, +-7.515720428937728366e-05, +-7.355086466416521770e-05, +-7.194449574103788873e-05, +-7.033810013166118518e-05, +-6.873168044756243445e-05, +-6.712523930019679674e-05, +-6.551877930080070799e-05, +-6.391230306060202541e-05, +-6.230581319070835464e-05, +-6.069931230203104715e-05, +-5.909280300531749596e-05, +-5.748628791139637537e-05, +-5.587976963074513915e-05, +-5.427325077369948842e-05, +-5.266673395066424895e-05, +-5.106022177164389812e-05, +-4.945371684666788380e-05, +-4.784722178546411693e-05, +-4.624073919770558004e-05, +-4.463427169289817335e-05, +-4.302782188026965855e-05, +-4.142139236897976365e-05, +-3.981498576800881508e-05, +-3.820860468604622749e-05, +-3.660225173170068993e-05, +-3.499592951338879112e-05, +-3.338964063922336700e-05, +-3.178338771722407312e-05, +-3.017717335520582361e-05, +-2.857100016066678631e-05, +-2.696487074103527936e-05, +-2.535878770337894746e-05, +-2.375275365465093344e-05, +-2.214677120157848995e-05, +-2.054084295055129316e-05, +-1.893497150783198123e-05, +-1.732915947944472544e-05, +-1.572340947106317790e-05, +-1.411772408822148946e-05, +-1.251210593620253020e-05, +-1.090655761992616234e-05, +-9.301081744159924515e-06, +-7.695680913371722497e-06, +-6.090357731796953227e-06, +-4.485114803327080149e-06, +-2.879954731541173757e-06, +-1.274880119952271973e-06, + 3.301064284264316919e-07, + 1.935002310870982186e-06, + 3.539804924736105560e-06, + 5.144511667888999736e-06, + 6.749119938462926806e-06, + 8.353627134825694823e-06, + 9.958030655691222209e-06, + 1.156232790005212918e-05, + 1.316651626732714095e-05, + 1.477059315715061531e-05, + 1.637455596948400198e-05, + 1.797840210472750866e-05, + 1.958212896350946768e-05, + 2.118573394679816802e-05, + 2.278921445601297081e-05, + 2.439256789281434682e-05, + 2.599579165921486824e-05, + 2.759888315769126776e-05, + 2.920183979093785712e-05, + 3.080465896215704924e-05, + 3.240733807481306817e-05, + 3.400987453274364558e-05, + 3.561226574027120912e-05, + 3.721450910199305880e-05, + 3.881660202289201659e-05, + 4.041854190844868200e-05, + 4.202032616443049379e-05, + 4.362195219700377546e-05, + 4.522341741284462206e-05, + 4.682471921892898507e-05, + 4.842585502264379636e-05, + 5.002682223189882396e-05, + 5.162761825487996865e-05, + 5.322824050034006730e-05, + 5.482868637735290772e-05, + 5.642895329542373600e-05, + 5.802903866463773115e-05, + 5.962893989526967209e-05, + 6.122865439825389176e-05, + 6.282817958493786513e-05, + 6.442751286704992029e-05, + 6.602665165677657595e-05, + 6.762559336687209326e-05, + 6.922433541044949591e-05, + 7.082287520112691024e-05, + 7.242121015296140187e-05, + 7.401933768059452978e-05, + 7.561725519904306824e-05, + 7.721496012381031369e-05, + 7.881244987096214152e-05, + 8.040972185709366685e-05, + 8.200677349908622063e-05, + 8.360360221453720870e-05, + 8.520020542151620691e-05, + 8.679658053853259777e-05, + 8.839272498464760910e-05, + 8.998863617940621265e-05, + 9.158431154298393858e-05, + 9.317974849597807172e-05, + 9.477494445951806397e-05, + 9.636989685537633978e-05, + 9.796460310575968208e-05, + 9.955906063341880450e-05, + 1.011532668617611761e-04, + 1.027472192146394666e-04, + 1.043409151164643436e-04, + 1.059343519923143165e-04, + 1.075275272677269050e-04, + 1.091204383688086996e-04, + 1.107130827223481453e-04, + 1.123054577555675443e-04, + 1.138975608964153975e-04, + 1.154893895733185015e-04, + 1.170809412152949632e-04, + 1.186722132520637041e-04, + 1.202632031138359416e-04, + 1.218539082314251670e-04, + 1.234443260363596729e-04, + 1.250344539606708350e-04, + 1.266242894370066285e-04, + 1.282138298987400751e-04, + 1.298030727797620386e-04, + 1.313920155146256949e-04, + 1.329806555384811003e-04, + 1.345689902871856174e-04, + 1.361570171972710909e-04, + 1.377447337057020166e-04, + 1.393321372503028793e-04, + 1.409192252695160236e-04, + 1.425059952023695613e-04, + 1.440924444885515040e-04, + 1.456785705685216255e-04, + 1.472643708833025900e-04, + 1.488498428746251004e-04, + 1.504349839848617611e-04, + 1.520197916571733917e-04, + 1.536042633352987456e-04, + 1.551883964636675925e-04, + 1.567721884874735769e-04, + 1.583556368526434265e-04, + 1.599387390055931151e-04, + 1.615214923936932295e-04, + 1.631038944648823430e-04, + 1.646859426678138163e-04, + 1.662676344519648409e-04, + 1.678489672673935782e-04, + 1.694299385650273944e-04, + 1.710105457964160151e-04, + 1.725907864138466127e-04, + 1.741706578704493814e-04, + 1.757501576199914839e-04, + 1.773292831169888330e-04, + 1.789080318168121807e-04, + 1.804864011754833697e-04, + 1.820643886497825062e-04, + 1.836419916973596063e-04, + 1.852192077765265645e-04, + 1.867960343463662240e-04, + 1.883724688668428305e-04, + 1.899485087985600649e-04, + 1.915241516030812084e-04, + 1.930993947425110467e-04, + 1.946742356799581746e-04, + 1.962486718792908055e-04, + 1.978227008051088270e-04, + 1.993963199228144633e-04, + 2.009695266987245716e-04, + 2.025423185998629901e-04, + 2.041146930940710184e-04, + 2.056866476501135067e-04, + 2.072581797374766790e-04, + 2.088292868265102450e-04, + 2.103999663883602070e-04, + 2.119702158950812637e-04, + 2.135400328196028485e-04, + 2.151094146354895205e-04, + 2.166783588173653479e-04, + 2.182468628407061755e-04, + 2.198149241816372309e-04, + 2.213825403173867821e-04, + 2.229497087258756850e-04, + 2.245164268860336731e-04, + 2.260826922775581763e-04, + 2.276485023810240964e-04, + 2.292138546779934197e-04, + 2.307787466508075930e-04, + 2.323431757826978675e-04, + 2.339071395578943972e-04, + 2.354706354614196978e-04, + 2.370336609791978265e-04, + 2.385962135981634796e-04, + 2.401582908060561022e-04, + 2.417198900915286343e-04, + 2.432810089442565265e-04, + 2.448416448546988640e-04, + 2.464017953143767892e-04, + 2.479614578156399377e-04, + 2.495206298517706027e-04, + 2.510793089170923996e-04, + 2.526374925067684956e-04, + 2.541951781169045550e-04, + 2.557523632446647485e-04, + 2.573090453880611471e-04, + 2.588652220460612211e-04, + 2.604208907187020058e-04, + 2.619760489068817186e-04, + 2.635306941124672571e-04, + 2.650848238384045713e-04, + 2.666384355885123938e-04, + 2.681915268676278484e-04, + 2.697440951815383080e-04, + 2.712961380370902480e-04, + 2.728476529421591606e-04, + 2.743986374054113546e-04, + 2.759490889367213740e-04, + 2.774990050469358042e-04, + 2.790483832478426432e-04, + 2.805972210522427509e-04, + 2.821455159740596783e-04, + 2.836932655281335070e-04, + 2.852404672303671075e-04, + 2.867871185976563170e-04, + 2.883332171480361438e-04, + 2.898787604004744440e-04, + 2.914237458749824555e-04, + 2.929681710926850002e-04, + 2.945120335757911022e-04, + 2.960553308473575776e-04, + 2.975980604317392491e-04, + 2.991402198541803651e-04, + 3.006818066411285294e-04, + 3.022228183199986173e-04, + 3.037632524192770750e-04, + 3.053031064686339180e-04, + 3.068423779987148898e-04, + 3.083810645412512368e-04, + 3.099191636291673160e-04, + 3.114566727963782281e-04, + 3.129935895778954732e-04, + 3.145299115099354256e-04, + 3.160656361297155574e-04, + 3.176007609755632927e-04, + 3.191352835870210126e-04, + 3.206692015046469415e-04, + 3.222025122701178751e-04, + 3.237352134263395522e-04, + 3.252673025172090520e-04, + 3.267987770879282367e-04, + 3.283296346845942485e-04, + 3.298598728546514591e-04, + 3.313894891466539214e-04, + 3.329184811102341981e-04, + 3.344468462961803948e-04, + 3.359745822565369361e-04, + 3.375016865444049646e-04, + 3.390281567140534169e-04, + 3.405539903210170896e-04, + 3.420791849219034894e-04, + 3.436037380745279781e-04, + 3.451276473378528950e-04, + 3.466509102720910984e-04, + 3.481735244386774506e-04, + 3.496954874000339801e-04, + 3.512167967199823120e-04, + 3.527374499635082335e-04, + 3.542574446967336672e-04, + 3.557767784870200498e-04, + 3.572954489029071291e-04, + 3.588134535142498984e-04, + 3.603307898920212176e-04, + 3.618474556084160594e-04, + 3.633634482369561347e-04, + 3.648787653522934894e-04, + 3.663934045303122024e-04, + 3.679073633482053641e-04, + 3.694206393844379427e-04, + 3.709332302185190471e-04, + 3.724451334314440106e-04, + 3.739563466053275509e-04, + 3.754668673235391331e-04, + 3.769766931708132870e-04, + 3.784858217330117330e-04, + 3.799942505974028355e-04, + 3.815019773524242711e-04, + 3.830089995877903643e-04, + 3.845153148945985020e-04, + 3.860209208651274723e-04, + 3.875258150929437699e-04, + 3.890299951730094748e-04, + 3.905334587014790723e-04, + 3.920362032758068979e-04, + 3.935382264948515457e-04, + 3.950395259586783267e-04, + 3.965400992686637861e-04, + 3.980399440275989736e-04, + 3.995390578394611100e-04, + 4.010374383097158632e-04, + 4.025350830449210180e-04, + 4.040319896531675294e-04, + 4.055281557438433836e-04, + 4.070235789276101246e-04, + 4.085182568164685032e-04, + 4.100121870238665174e-04, + 4.115053671645013829e-04, + 4.129977948544558174e-04, + 4.144894677111365662e-04, + 4.159803833534094397e-04, + 4.174705394014070303e-04, + 4.189599334766278080e-04, + 4.204485632020441618e-04, + 4.219364262019017673e-04, + 4.234235201018290377e-04, + 4.249098425289005491e-04, + 4.263953911116153024e-04, + 4.278801634796583616e-04, + 4.293641572643479786e-04, + 4.308473700982315109e-04, + 4.323297996153901371e-04, + 4.338114434512134509e-04, + 4.352922992425006170e-04, + 4.367723646275627745e-04, + 4.382516372460303739e-04, + 4.397301147389518394e-04, + 4.412077947489035073e-04, + 4.426846749197886144e-04, + 4.441607528969411653e-04, + 4.456360263272344602e-04, + 4.471104928588796510e-04, + 4.485841501415302034e-04, + 4.500569958263889625e-04, + 4.515290275659745610e-04, + 4.530002430143945298e-04, + 4.544706398271155558e-04, + 4.559402156610650714e-04, + 4.574089681747696532e-04, + 4.588768950279946868e-04, + 4.603439938821757174e-04, + 4.618102624001909837e-04, + 4.632756982463374028e-04, + 4.647402990863928039e-04, + 4.662040625877236972e-04, + 4.676669864190899015e-04, + 4.691290682507469464e-04, + 4.705903057545450063e-04, + 4.720506966037434473e-04, + 4.735102384731375161e-04, + 4.749689290390022331e-04, + 4.764267659791899699e-04, + 4.778837469731072479e-04, + 4.793398697014793577e-04, + 4.807951318467619767e-04, + 4.822495310928976570e-04, + 4.837030651253036283e-04, + 4.851557316309585343e-04, + 4.866075282983550526e-04, + 4.880584528176236565e-04, + 4.895085028803435306e-04, + 4.909576761796484966e-04, + 4.924059704103193880e-04, + 4.938533832686022289e-04, + 4.952999124523010423e-04, + 4.967455556608530928e-04, + 4.981903105952961448e-04, + 4.996341749580433811e-04, + 5.010771464533180604e-04, + 5.025192227867545302e-04, + 5.039604016657046230e-04, + 5.054006807990078049e-04, + 5.068400578970958014e-04, + 5.082785306720933195e-04, + 5.097160968376216990e-04, + 5.111527541089097180e-04, + 5.125885002028858582e-04, + 5.140233328379881358e-04, + 5.154572497342736065e-04, + 5.168902486135058599e-04, + 5.183223271989759098e-04, + 5.197534832155959773e-04, + 5.211837143900054179e-04, + 5.226130184503730708e-04, + 5.240413931265061132e-04, + 5.254688361499423258e-04, + 5.268953452537368303e-04, + 5.283209181727466924e-04, + 5.297455526432555710e-04, + 5.311692464033912443e-04, + 5.325919971929025899e-04, + 5.340138027531382255e-04, + 5.354346608271071161e-04, + 5.368545691595827656e-04, + 5.382735254969095787e-04, + 5.396915275871408792e-04, + 5.411085731799746175e-04, + 5.425246600268843417e-04, + 5.439397858809342330e-04, + 5.453539484968728890e-04, + 5.467671456312088929e-04, + 5.481793750421762269e-04, + 5.495906344895123367e-04, + 5.510009217348539731e-04, + 5.524102345415079921e-04, + 5.538185706744282611e-04, + 5.552259279003142131e-04, + 5.566323039875464449e-04, + 5.580376967063259289e-04, + 5.594421038284754953e-04, + 5.608455231275505295e-04, + 5.622479523789283102e-04, + 5.636493893596275983e-04, + 5.650498318484028538e-04, + 5.664492776258461511e-04, + 5.678477244741961423e-04, + 5.692451701774437671e-04, + 5.706416125214219164e-04, + 5.720370492936288154e-04, + 5.734314782833138929e-04, + 5.748248972815930315e-04, + 5.762173040812100435e-04, + 5.776086964768154192e-04, + 5.789990722647280191e-04, + 5.803884292430504330e-04, + 5.817767652117507293e-04, + 5.831640779724948367e-04, + 5.845503653287271008e-04, + 5.859356250857783791e-04, + 5.873198550506841115e-04, + 5.887030530322691054e-04, + 5.900852168412536788e-04, + 5.914663442900741164e-04, + 5.928464331929958605e-04, + 5.942254813660702512e-04, + 5.956034866272253824e-04, + 5.969804467962321667e-04, + 5.983563596945016974e-04, + 5.997312231454539865e-04, + 6.011050349743344082e-04, + 6.024777930080380591e-04, + 6.038494950754778445e-04, + 6.052201390073729502e-04, + 6.065897226362241233e-04, + 6.079582437964081059e-04, + 6.093257003241170280e-04, + 6.106920900574895963e-04, + 6.120574108364259126e-04, + 6.134216605026841839e-04, + 6.147848368999792772e-04, + 6.161469378737973205e-04, + 6.175079612714932812e-04, + 6.188679049423870260e-04, + 6.202267667375808502e-04, + 6.215845445100590073e-04, + 6.229412361147756375e-04, + 6.242968394084503960e-04, + 6.256513522498153256e-04, + 6.270047724994044129e-04, + 6.283570980196403252e-04, + 6.297083266749451064e-04, + 6.310584563315472986e-04, + 6.324074848575829888e-04, + 6.337554101231864488e-04, + 6.351022300003172048e-04, + 6.364479423628490503e-04, + 6.377925450866653474e-04, + 6.391360360494801338e-04, + 6.404784131309372184e-04, + 6.418196742126972432e-04, + 6.431598171782351540e-04, + 6.444988399130795924e-04, + 6.458367403046137278e-04, + 6.471735162421550546e-04, + 6.485091656170933029e-04, + 6.498436863225572633e-04, + 6.511770762538060748e-04, + 6.525093333080258292e-04, + 6.538404553843025742e-04, + 6.551704403836840045e-04, + 6.564992862092741124e-04, + 6.578269907660540781e-04, + 6.591535519610113979e-04, + 6.604789677030783015e-04, + 6.618032359032522067e-04, + 6.631263544744277769e-04, + 6.644483213314817055e-04, + 6.657691343913437311e-04, + 6.670887915729573894e-04, + 6.684072907970948314e-04, + 6.697246299866935768e-04, + 6.710408070666717658e-04, + 6.723558199638885857e-04, + 6.736696666072441260e-04, + 6.749823449276188799e-04, + 6.762938528579970181e-04, + 6.776041883332921574e-04, + 6.789133492904448307e-04, + 6.802213336684982724e-04, + 6.815281394084450042e-04, + 6.828337644533032710e-04, + 6.841382067482145108e-04, + 6.854414642402730266e-04, + 6.867435348786087111e-04, + 6.880444166144887444e-04, + 6.893441074011065007e-04, + 6.906426051938264685e-04, + 6.919399079499729405e-04, + 6.932360136289348555e-04, + 6.945309201922437526e-04, + 6.958246256034085388e-04, + 6.971171278280054780e-04, + 6.984084248337665531e-04, + 6.996985145904069696e-04, + 7.009873950697219748e-04, + 7.022750642456763049e-04, + 7.035615200942201952e-04, + 7.048467605933954154e-04, + 7.061307837234233071e-04, + 7.074135874665213363e-04, + 7.086951698070359084e-04, + 7.099755287313846887e-04, + 7.112546622281416039e-04, + 7.125325682880136397e-04, + 7.138092449036425409e-04, + 7.150846900699582608e-04, + 7.163589017839681926e-04, + 7.176318780447455683e-04, + 7.189036168534808499e-04, + 7.201741162135760549e-04, + 7.214433741304715009e-04, + 7.227113886117652848e-04, + 7.239781576671648188e-04, + 7.252436793085922147e-04, + 7.265079515500277255e-04, + 7.277709724075908434e-04, + 7.290327398996064362e-04, + 7.302932520465718960e-04, + 7.315525068709681630e-04, + 7.328105023976288959e-04, + 7.340672366534327755e-04, + 7.353227076674169124e-04, + 7.365769134708700884e-04, + 7.378298520971302270e-04, + 7.390815215818241114e-04, + 7.403319199626608432e-04, + 7.415810452795302881e-04, + 7.428288955745833075e-04, + 7.440754688920670672e-04, + 7.453207632784187133e-04, + 7.465647767823450605e-04, + 7.478075074546581191e-04, + 7.490489533483673601e-04, + 7.502891125187624403e-04, + 7.515279830232502465e-04, + 7.527655629214379451e-04, + 7.540018502752294767e-04, + 7.552368431486203163e-04, + 7.564705396079591995e-04, + 7.577029377216186337e-04, + 7.589340355603517094e-04, + 7.601638311971120133e-04, + 7.613923227070136220e-04, + 7.626195081674062371e-04, + 7.638453856579478264e-04, + 7.650699532604500171e-04, + 7.662932090589597359e-04, + 7.675151511398456200e-04, + 7.687357775916389647e-04, + 7.699550865051394332e-04, + 7.711730759733707126e-04, + 7.723897440916639972e-04, + 7.736050889576308841e-04, + 7.748191086709748298e-04, + 7.760318013338247597e-04, + 7.772431650505740638e-04, + 7.784531979277179662e-04, + 7.796618980742116376e-04, + 7.808692636011450427e-04, + 7.820752926219944751e-04, + 7.832799832524290273e-04, + 7.844833336104043743e-04, + 7.856853418162367160e-04, + 7.868860059924495795e-04, + 7.880853242638557847e-04, + 7.892832947576426629e-04, + 7.904799156032121365e-04, + 7.916751849322630104e-04, + 7.928691008788799847e-04, + 7.940616615793660371e-04, + 7.952528651723349057e-04, + 7.964427097987924033e-04, + 7.976311936019439726e-04, + 7.988183147274293067e-04, + 8.000040713231106049e-04, + 8.011884615391883652e-04, + 8.023714835282548356e-04, + 8.035531354451567543e-04, + 8.047334154470688582e-04, + 8.059123216935772582e-04, + 8.070898523465313374e-04, + 8.082660055701090199e-04, + 8.094407795309168426e-04, + 8.106141723978236386e-04, + 8.117861823420470567e-04, + 8.129568075372337922e-04, + 8.141260461593020524e-04, + 8.152938963865596260e-04, + 8.164603563996349284e-04, + 8.176254243815804339e-04, + 8.187890985178340785e-04, + 8.199513769960471970e-04, + 8.211122580063960142e-04, + 8.222717397414060041e-04, + 8.234298203959220745e-04, + 8.245864981671676558e-04, + 8.257417712548282933e-04, + 8.268956378608970396e-04, + 8.280480961897769120e-04, + 8.291991444482318865e-04, + 8.303487808455020398e-04, + 8.314970035931381004e-04, + 8.326438109050960995e-04, + 8.337892009977826901e-04, + 8.349331720900264164e-04, + 8.360757224029154080e-04, + 8.372168501601270863e-04, + 8.383565535876169985e-04, + 8.394948309138595098e-04, + 8.406316803696694531e-04, + 8.417671001882843108e-04, + 8.429010886054397840e-04, + 8.440336438592163778e-04, + 8.451647641901267882e-04, + 8.462944478411911454e-04, + 8.474226930577843583e-04, + 8.485494980877206824e-04, + 8.496748611813252769e-04, + 8.507987805912926079e-04, + 8.519212545727578977e-04, + 8.530422813833879805e-04, + 8.541618592832130345e-04, + 8.552799865347197146e-04, + 8.563966614029280226e-04, + 8.575118821552118716e-04, + 8.586256470615320812e-04, + 8.597379543941389805e-04, + 8.608488024278986451e-04, + 8.619581894401177977e-04, + 8.630661137105262448e-04, + 8.641725735213283757e-04, + 8.652775671572800328e-04, + 8.663810929055388915e-04, + 8.674831490557483775e-04, + 8.685837339001071643e-04, + 8.696828457332279015e-04, + 8.707804828522394550e-04, + 8.718766435567385517e-04, + 8.729713261488585181e-04, + 8.740645289332655936e-04, + 8.751562502169752669e-04, + 8.762464883096484801e-04, + 8.773352415234316002e-04, + 8.784225081729308323e-04, + 8.795082865752835597e-04, + 8.805925750501166025e-04, + 8.816753719196499754e-04, + 8.827566755085454247e-04, + 8.838364841439880692e-04, + 8.849147961557544875e-04, + 8.859916098760780602e-04, + 8.870669236397235634e-04, + 8.881407357840301027e-04, + 8.892130446488981030e-04, + 8.902838485766187632e-04, + 8.913531459121916195e-04, + 8.924209350030585901e-04, + 8.934872141992067579e-04, + 8.945519818532481678e-04, + 8.956152363202378973e-04, + 8.966769759578830908e-04, + 8.977371991263762094e-04, + 8.987959041884580232e-04, + 8.998530895095099846e-04, + 9.009087534573981043e-04, + 9.019628944025529643e-04, + 9.030155107180433361e-04, + 9.040666007794379445e-04, + 9.051161629648759406e-04, + 9.061641956551387848e-04, + 9.072106972335187329e-04, + 9.082556660858836714e-04, + 9.092991006007566978e-04, + 9.103409991691487199e-04, + 9.113813601847726943e-04, + 9.124201820437726840e-04, + 9.134574631450149669e-04, + 9.144932018899503421e-04, + 9.155273966825665331e-04, + 9.165600459294546499e-04, + 9.175911480398816133e-04, + 9.186207014256378249e-04, + 9.196487045011530678e-04, + 9.206751556834378517e-04, + 9.217000533921853277e-04, + 9.227233960496287156e-04, + 9.237451820806243542e-04, + 9.247654099127055856e-04, + 9.257840779759683725e-04, + 9.268011847031239897e-04, + 9.278167285295590896e-04, + 9.288307078933106566e-04, + 9.298431212349051117e-04, + 9.308539669976664431e-04, + 9.318632436274365896e-04, + 9.328709495727891378e-04, + 9.338770832848644144e-04, + 9.348816432174468982e-04, + 9.358846278270365610e-04, + 9.368860355727083545e-04, + 9.378858649161911408e-04, + 9.388841143219267809e-04, + 9.398807822569483789e-04, + 9.408758671909421903e-04, + 9.418693675963238409e-04, + 9.428612819481005250e-04, + 9.438516087239411535e-04, + 9.448403464042527894e-04, + 9.458274934720122722e-04, + 9.468130484129671197e-04, + 9.477970097154611888e-04, + 9.487793758705195682e-04, + 9.497601453719254488e-04, + 9.507393167159935250e-04, + 9.517168884018523210e-04, + 9.526928589312893669e-04, + 9.536672268087371040e-04, + 9.546399905413143015e-04, + 9.556111486388980470e-04, + 9.565806996139896313e-04, + 9.575486419817917432e-04, + 9.585149742602658242e-04, + 9.594796949700104202e-04, + 9.604428026343432567e-04, + 9.614042957792690372e-04, + 9.623641729335439534e-04, + 9.633224326286521583e-04, + 9.642790733986561459e-04, + 9.652340937804663925e-04, + 9.661874923136882674e-04, + 9.671392675405968793e-04, + 9.680894180062095010e-04, + 9.690379422582484897e-04, + 9.699848388472242285e-04, + 9.709301063263042634e-04, + 9.718737432513923410e-04, + 9.728157481811782826e-04, + 9.737561196770310812e-04, + 9.746948563030497512e-04, + 9.756319566261111411e-04, + 9.765674192158608265e-04, + 9.775012426445496127e-04, + 9.784334254873319064e-04, + 9.793639663219905461e-04, + 9.802928637291509310e-04, + 9.812201162921196929e-04, + 9.821457225969564692e-04, + 9.830696812325458948e-04, + 9.839919907904575228e-04, + 9.849126498650280070e-04, + 9.858316570534079396e-04, + 9.867490109554627551e-04, + 9.876647101738078582e-04, + 9.885787533139022993e-04, + 9.894911389839039246e-04, + 9.904018657947463548e-04, + 9.913109323601955805e-04, + 9.922183372967376385e-04, + 9.931240792236317380e-04, + 9.940281567629826853e-04, + 9.949305685395871436e-04, + 9.958313131811437520e-04, + 9.967303893179779543e-04, + 9.976277955833386373e-04, + 9.985235306132365842e-04, + 9.994175930464433907e-04, + 1.000309981524514450e-03, + 1.001200694691872220e-03, + 1.002089731195669828e-03, + 1.002977089685890607e-03, + 1.003862768815288672e-03, + 1.004746767239496916e-03, + 1.005629083616882804e-03, + 1.006509716608627739e-03, + 1.007388664878766313e-03, + 1.008265927094164401e-03, + 1.009141501924381255e-03, + 1.010015388041916699e-03, + 1.010887584122063896e-03, + 1.011758088842904359e-03, + 1.012626900885357393e-03, + 1.013494018933147134e-03, + 1.014359441672887550e-03, + 1.015223167793959493e-03, + 1.016085195988580088e-03, + 1.016945524951845883e-03, + 1.017804153381643949e-03, + 1.018661079978689168e-03, + 1.019516303446598186e-03, + 1.020369822491766021e-03, + 1.021221635823433291e-03, + 1.022071742153742588e-03, + 1.022920140197625073e-03, + 1.023766828672858370e-03, + 1.024611806300132055e-03, + 1.025455071802910392e-03, + 1.026296623907583692e-03, + 1.027136461343344494e-03, + 1.027974582842244378e-03, + 1.028810987139253163e-03, + 1.029645672972143763e-03, + 1.030478639081547267e-03, + 1.031309884211024496e-03, + 1.032139407106945003e-03, + 1.032967206518548226e-03, + 1.033793281197997911e-03, + 1.034617629900279551e-03, + 1.035440251383270421e-03, + 1.036261144407703153e-03, + 1.037080307737226446e-03, + 1.037897740138395966e-03, + 1.038713440380528187e-03, + 1.039527407235938056e-03, + 1.040339639479831869e-03, + 1.041150135890186058e-03, + 1.041958895247978127e-03, + 1.042765916337067608e-03, + 1.043571197944155940e-03, + 1.044374738858869743e-03, + 1.045176537873707470e-03, + 1.045976593784127663e-03, + 1.046774905388424054e-03, + 1.047571471487806875e-03, + 1.048366290886432574e-03, + 1.049159362391315770e-03, + 1.049950684812375442e-03, + 1.050740256962496080e-03, + 1.051528077657419048e-03, + 1.052314145715795924e-03, + 1.053098459959253986e-03, + 1.053881019212256137e-03, + 1.054661822302260712e-03, + 1.055440868059590726e-03, + 1.056218155317491985e-03, + 1.056993682912184913e-03, + 1.057767449682764371e-03, + 1.058539454471247579e-03, + 1.059309696122641333e-03, + 1.060078173484820148e-03, + 1.060844885408601494e-03, + 1.061609830747776810e-03, + 1.062373008359028450e-03, + 1.063134417101972620e-03, + 1.063894055839222910e-03, + 1.064651923436254338e-03, + 1.065408018761557522e-03, + 1.066162340686517248e-03, + 1.066914888085461260e-03, + 1.067665659835732254e-03, + 1.068414654817504642e-03, + 1.069161871914005519e-03, + 1.069907310011395394e-03, + 1.070650967998752149e-03, + 1.071392844768114623e-03, + 1.072132939214525977e-03, + 1.072871250235937855e-03, + 1.073607776733280852e-03, + 1.074342517610426357e-03, + 1.075075471774260922e-03, + 1.075806638134591724e-03, + 1.076536015604184510e-03, + 1.077263603098812389e-03, + 1.077989399537233927e-03, + 1.078713403841072369e-03, + 1.079435614935036385e-03, + 1.080156031746781937e-03, + 1.080874653206915321e-03, + 1.081591478249032410e-03, + 1.082306505809692851e-03, + 1.083019734828485989e-03, + 1.083731164247940439e-03, + 1.084440793013560734e-03, + 1.085148620073890643e-03, + 1.085854644380407135e-03, + 1.086558864887585216e-03, + 1.087261280552929369e-03, + 1.087961890336895275e-03, + 1.088660693202921472e-03, + 1.089357688117499612e-03, + 1.090052874050046741e-03, + 1.090746249973047330e-03, + 1.091437814861931192e-03, + 1.092127567695134202e-03, + 1.092815507454138841e-03, + 1.093501633123385294e-03, + 1.094185943690316118e-03, + 1.094868438145435441e-03, + 1.095549115482195553e-03, + 1.096227974697076054e-03, + 1.096905014789594261e-03, + 1.097580234762251866e-03, + 1.098253633620549247e-03, + 1.098925210373060497e-03, + 1.099594964031320662e-03, + 1.100262893609909665e-03, + 1.100928998126401558e-03, + 1.101593276601426762e-03, + 1.102255728058652764e-03, + 1.102916351524676564e-03, + 1.103575146029222654e-03, + 1.104232110605010957e-03, + 1.104887244287774397e-03, + 1.105540546116267134e-03, + 1.106192015132318558e-03, + 1.106841650380753495e-03, + 1.107489450909437088e-03, + 1.108135415769259191e-03, + 1.108779544014189874e-03, + 1.109421834701190953e-03, + 1.110062286890265868e-03, + 1.110700899644488301e-03, + 1.111337672029985915e-03, + 1.111972603115843426e-03, + 1.112605691974295373e-03, + 1.113236937680558720e-03, + 1.113866339312901159e-03, + 1.114493895952680140e-03, + 1.115119606684250282e-03, + 1.115743470595068759e-03, + 1.116365486775604873e-03, + 1.116985654319381689e-03, + 1.117603972323023744e-03, + 1.118220439886165752e-03, + 1.118835056111498142e-03, + 1.119447820104818234e-03, + 1.120058730974938729e-03, + 1.120667787833729782e-03, + 1.121274989796176673e-03, + 1.121880335980279851e-03, + 1.122483825507102854e-03, + 1.123085457500824780e-03, + 1.123685231088629487e-03, + 1.124283145400849140e-03, + 1.124879199570779243e-03, + 1.125473392734876402e-03, + 1.126065724032653155e-03, + 1.126656192606669080e-03, + 1.127244797602561157e-03, + 1.127831538169084746e-03, + 1.128416413458027722e-03, + 1.128999422624257527e-03, + 1.129580564825765406e-03, + 1.130159839223585094e-03, + 1.130737244981839650e-03, + 1.131312781267727148e-03, + 1.131886447251553201e-03, + 1.132458242106736167e-03, + 1.133028165009681166e-03, + 1.133596215139977617e-03, + 1.134162391680293641e-03, + 1.134726693816320332e-03, + 1.135289120736927013e-03, + 1.135849671634001426e-03, + 1.136408345702595015e-03, + 1.136965142140804316e-03, + 1.137520060149825596e-03, + 1.138073098933989769e-03, + 1.138624257700687368e-03, + 1.139173535660413863e-03, + 1.139720932026797202e-03, + 1.140266446016532540e-03, + 1.140810076849420188e-03, + 1.141351823748397269e-03, + 1.141891685939473754e-03, + 1.142429662651764551e-03, + 1.142965753117522682e-03, + 1.143499956572071197e-03, + 1.144032272253888826e-03, + 1.144562699404521721e-03, + 1.145091237268629431e-03, + 1.145617885094032820e-03, + 1.146142642131612157e-03, + 1.146665507635377147e-03, + 1.147186480862479301e-03, + 1.147705561073156201e-03, + 1.148222747530765978e-03, + 1.148738039501814856e-03, + 1.149251436255897731e-03, + 1.149762937065728751e-03, + 1.150272541207184029e-03, + 1.150780247959203853e-03, + 1.151286056603926687e-03, + 1.151789966426523077e-03, + 1.152291976715363485e-03, + 1.152792086761943256e-03, + 1.153290295860819308e-03, + 1.153786603309744571e-03, + 1.154281008409592741e-03, + 1.154773510464341150e-03, + 1.155264108781104380e-03, + 1.155752802670154643e-03, + 1.156239591444874724e-03, + 1.156724474421790298e-03, + 1.157207450920544551e-03, + 1.157688520263957816e-03, + 1.158167681777954065e-03, + 1.158644934791595166e-03, + 1.159120278637098015e-03, + 1.159593712649840611e-03, + 1.160065236168269674e-03, + 1.160534848534048105e-03, + 1.161002549091938105e-03, + 1.161468337189877718e-03, + 1.161932212178922721e-03, + 1.162394173413271560e-03, + 1.162854220250303080e-03, + 1.163312352050515155e-03, + 1.163768568177542912e-03, + 1.164222867998215751e-03, + 1.164675250882467360e-03, + 1.165125716203395346e-03, + 1.165574263337269909e-03, + 1.166020891663487220e-03, + 1.166465600564595660e-03, + 1.166908389426332248e-03, + 1.167349257637547832e-03, + 1.167788204590258696e-03, + 1.168225229679667378e-03, + 1.168660332304084608e-03, + 1.169093511865039459e-03, + 1.169524767767145777e-03, + 1.169954099418236840e-03, + 1.170381506229291194e-03, + 1.170806987614442414e-03, + 1.171230542990968695e-03, + 1.171652171779357689e-03, + 1.172071873403217378e-03, + 1.172489647289322486e-03, + 1.172905492867651334e-03, + 1.173319409571309084e-03, + 1.173731396836580863e-03, + 1.174141454102907260e-03, + 1.174549580812919020e-03, + 1.174955776412422298e-03, + 1.175360040350335996e-03, + 1.175762372078814058e-03, + 1.176162771053157431e-03, + 1.176561236731825345e-03, + 1.176957768576465451e-03, + 1.177352366051880863e-03, + 1.177745028626082631e-03, + 1.178135755770219053e-03, + 1.178524546958626415e-03, + 1.178911401668830509e-03, + 1.179296319381516710e-03, + 1.179679299580543416e-03, + 1.180060341752960486e-03, + 1.180439445389013138e-03, + 1.180816609982067574e-03, + 1.181191835028730461e-03, + 1.181565120028757422e-03, + 1.181936464485079923e-03, + 1.182305867903840841e-03, + 1.182673329794331138e-03, + 1.183038849669057523e-03, + 1.183402427043681948e-03, + 1.183764061437054789e-03, + 1.184123752371236309e-03, + 1.184481499371438330e-03, + 1.184837301966068903e-03, + 1.185191159686741630e-03, + 1.185543072068237502e-03, + 1.185893038648517259e-03, + 1.186241058968759985e-03, + 1.186587132573308900e-03, + 1.186931259009692177e-03, + 1.187273437828657635e-03, + 1.187613668584104653e-03, + 1.187951950833168735e-03, + 1.188288284136122417e-03, + 1.188622668056471109e-03, + 1.188955102160911244e-03, + 1.189285586019310113e-03, + 1.189614119204735788e-03, + 1.189940701293465365e-03, + 1.190265331864958287e-03, + 1.190588010501867191e-03, + 1.190908736790035520e-03, + 1.191227510318523765e-03, + 1.191544330679573027e-03, + 1.191859197468613267e-03, + 1.192172110284291054e-03, + 1.192483068728457645e-03, + 1.192792072406121708e-03, + 1.193099120925525435e-03, + 1.193404213898119175e-03, + 1.193707350938507435e-03, + 1.194008531664543645e-03, + 1.194307755697246237e-03, + 1.194605022660865648e-03, + 1.194900332182830763e-03, + 1.195193683893773420e-03, + 1.195485077427543797e-03, + 1.195774512421184836e-03, + 1.196061988514932018e-03, + 1.196347505352251097e-03, + 1.196631062579787356e-03, + 1.196912659847392283e-03, + 1.197192296808145470e-03, + 1.197469973118304304e-03, + 1.197745688437343433e-03, + 1.198019442427951083e-03, + 1.198291234755998261e-03, + 1.198561065090593186e-03, + 1.198828933104032933e-03, + 1.199094838471809936e-03, + 1.199358780872660781e-03, + 1.199620759988497248e-03, + 1.199880775504444039e-03, + 1.200138827108854396e-03, + 1.200394914493272151e-03, + 1.200649037352449940e-03, + 1.200901195384364382e-03, + 1.201151388290192662e-03, + 1.201399615774315132e-03, + 1.201645877544341547e-03, + 1.201890173311073121e-03, + 1.202132502788537871e-03, + 1.202372865693956570e-03, + 1.202611261747783301e-03, + 1.202847690673680952e-03, + 1.203082152198502132e-03, + 1.203314646052333625e-03, + 1.203545171968474492e-03, + 1.203773729683428042e-03, + 1.204000318936912679e-03, + 1.204224939471860599e-03, + 1.204447591034424510e-03, + 1.204668273373964192e-03, + 1.204886986243047797e-03, + 1.205103729397476566e-03, + 1.205318502596252955e-03, + 1.205531305601586708e-03, + 1.205742138178918276e-03, + 1.205951000096913391e-03, + 1.206157891127411464e-03, + 1.206362811045507116e-03, + 1.206565759629493794e-03, + 1.206766736660887414e-03, + 1.206965741924416599e-03, + 1.207162775208022246e-03, + 1.207357836302875524e-03, + 1.207550925003348817e-03, + 1.207742041107031554e-03, + 1.207931184414751244e-03, + 1.208118354730527933e-03, + 1.208303551861605006e-03, + 1.208486775618455682e-03, + 1.208668025814756998e-03, + 1.208847302267406941e-03, + 1.209024604796531599e-03, + 1.209199933225456975e-03, + 1.209373287380730889e-03, + 1.209544667092143141e-03, + 1.209714072192667180e-03, + 1.209881502518522127e-03, + 1.210046957909117690e-03, + 1.210210438207112282e-03, + 1.210371943258366613e-03, + 1.210531472911958659e-03, + 1.210689027020188857e-03, + 1.210844605438582498e-03, + 1.210998208025868255e-03, + 1.211149834644005292e-03, + 1.211299485158167646e-03, + 1.211447159436756810e-03, + 1.211592857351376142e-03, + 1.211736578776861440e-03, + 1.211878323591263377e-03, + 1.212018091675855962e-03, + 1.212155882915119621e-03, + 1.212291697196765054e-03, + 1.212425534411721737e-03, + 1.212557394454136630e-03, + 1.212687277221372213e-03, + 1.212815182614004981e-03, + 1.212941110535852539e-03, + 1.213065060893923517e-03, + 1.213187033598462456e-03, + 1.213307028562930073e-03, + 1.213425045704003913e-03, + 1.213541084941581819e-03, + 1.213655146198776291e-03, + 1.213767229401923166e-03, + 1.213877334480572287e-03, + 1.213985461367500952e-03, + 1.214091609998695261e-03, + 1.214195780313360963e-03, + 1.214297972253931476e-03, + 1.214398185766043387e-03, + 1.214496420798568755e-03, + 1.214592677303576737e-03, + 1.214686955236375003e-03, + 1.214779254555478508e-03, + 1.214869575222617950e-03, + 1.214957917202744760e-03, + 1.215044280464033484e-03, + 1.215128664977867690e-03, + 1.215211070718847340e-03, + 1.215291497664800716e-03, + 1.215369945796759702e-03, + 1.215446415098979729e-03, + 1.215520905558930892e-03, + 1.215593417167302927e-03, + 1.215663949917998934e-03, + 1.215732503808132766e-03, + 1.215799078838046814e-03, + 1.215863675011290539e-03, + 1.215926292334635651e-03, + 1.215986930818053341e-03, + 1.216045590474747673e-03, + 1.216102271321128914e-03, + 1.216156973376830014e-03, + 1.216209696664681235e-03, + 1.216260441210747882e-03, + 1.216309207044295824e-03, + 1.216355994197807324e-03, + 1.216400802706985376e-03, + 1.216443632610734842e-03, + 1.216484483951183696e-03, + 1.216523356773665902e-03, + 1.216560251126732684e-03, + 1.216595167062146021e-03, + 1.216628104634876698e-03, + 1.216659063903111461e-03, + 1.216688044928252149e-03, + 1.216715047774898995e-03, + 1.216740072510877953e-03, + 1.216763119207219879e-03, + 1.216784187938161612e-03, + 1.216803278781153569e-03, + 1.216820391816859307e-03, + 1.216835527129146634e-03, + 1.216848684805094550e-03, + 1.216859864934992375e-03, + 1.216869067612338885e-03, + 1.216876292933829519e-03, + 1.216881540999388035e-03, + 1.216884811912127698e-03, + 1.216886105778379034e-03, + 1.216885422707673133e-03, + 1.216882762812749458e-03, + 1.216878126209562129e-03, + 1.216871513017253039e-03, + 1.216862923358184813e-03, + 1.216852357357922371e-03, + 1.216839815145226216e-03, + 1.216825296852072592e-03, + 1.216808802613634187e-03, + 1.216790332568293579e-03, + 1.216769886857622853e-03, + 1.216747465626415040e-03, + 1.216723069022651160e-03, + 1.216696697197520386e-03, + 1.216668350305413543e-03, + 1.216638028503916162e-03, + 1.216605731953819330e-03, + 1.216571460819118817e-03, + 1.216535215266999898e-03, + 1.216496995467851883e-03, + 1.216456801595260529e-03, + 1.216414633826014540e-03, + 1.216370492340097332e-03, + 1.216324377320686812e-03, + 1.216276288954161455e-03, + 1.216226227430097914e-03, + 1.216174192941261696e-03, + 1.216120185683618226e-03, + 1.216064205856327634e-03, + 1.216006253661744115e-03, + 1.215946329305414835e-03, + 1.215884432996078854e-03, + 1.215820564945672760e-03, + 1.215754725369321779e-03, + 1.215686914485339127e-03, + 1.215617132515236848e-03, + 1.215545379683716058e-03, + 1.215471656218658925e-03, + 1.215395962351152300e-03, + 1.215318298315459095e-03, + 1.215238664349034981e-03, + 1.215157060692527956e-03, + 1.215073487589766630e-03, + 1.214987945287765219e-03, + 1.214900434036731997e-03, + 1.214810954090057588e-03, + 1.214719505704312148e-03, + 1.214626089139255773e-03, + 1.214530704657830040e-03, + 1.214433352526165383e-03, + 1.214334033013565479e-03, + 1.214232746392518957e-03, + 1.214129492938699397e-03, + 1.214024272930959479e-03, + 1.213917086651327077e-03, + 1.213807934385014364e-03, + 1.213696816420417601e-03, + 1.213583733049095233e-03, + 1.213468684565797160e-03, + 1.213351671268445659e-03, + 1.213232693458138204e-03, + 1.213111751439150928e-03, + 1.212988845518925621e-03, + 1.212863976008094445e-03, + 1.212737143220445242e-03, + 1.212608347472947119e-03, + 1.212477589085745461e-03, + 1.212344868382145887e-03, + 1.212210185688640269e-03, + 1.212073541334867917e-03, + 1.211934935653660467e-03, + 1.211794368981005234e-03, + 1.211651841656058003e-03, + 1.211507354021143252e-03, + 1.211360906421760000e-03, + 1.211212499206551670e-03, + 1.211062132727345987e-03, + 1.210909807339134161e-03, + 1.210755523400055492e-03, + 1.210599281271423607e-03, + 1.210441081317716267e-03, + 1.210280923906559974e-03, + 1.210118809408754041e-03, + 1.209954738198251722e-03, + 1.209788710652161736e-03, + 1.209620727150757368e-03, + 1.209450788077457827e-03, + 1.209278893818859467e-03, + 1.209105044764693070e-03, + 1.208929241307852252e-03, + 1.208751483844381757e-03, + 1.208571772773490679e-03, + 1.208390108497521889e-03, + 1.208206491421979795e-03, + 1.208020921955526433e-03, + 1.207833400509955666e-03, + 1.207643927500227227e-03, + 1.207452503344438530e-03, + 1.207259128463840066e-03, + 1.207063803282825212e-03, + 1.206866528228920038e-03, + 1.206667303732829495e-03, + 1.206466130228370194e-03, + 1.206263008152504233e-03, + 1.206057937945361749e-03, + 1.205850920050179987e-03, + 1.205641954913362493e-03, + 1.205431042984431850e-03, + 1.205218184716063496e-03, + 1.205003380564067953e-03, + 1.204786630987382144e-03, + 1.204567936448088265e-03, + 1.204347297411405976e-03, + 1.204124714345673752e-03, + 1.203900187722375991e-03, + 1.203673718016129999e-03, + 1.203445305704670598e-03, + 1.203214951268873761e-03, + 1.202982655192745770e-03, + 1.202748417963406084e-03, + 1.202512240071122035e-03, + 1.202274122009265025e-03, + 1.202034064274350427e-03, + 1.201792067366011562e-03, + 1.201548131786993844e-03, + 1.201302258043183187e-03, + 1.201054446643572832e-03, + 1.200804698100277216e-03, + 1.200553012928539135e-03, + 1.200299391646716084e-03, + 1.200043834776267238e-03, + 1.199786342841788374e-03, + 1.199526916370985841e-03, + 1.199265555894669629e-03, + 1.199002261946773527e-03, + 1.198737035064326292e-03, + 1.198469875787499779e-03, + 1.198200784659546499e-03, + 1.197929762226826499e-03, + 1.197656809038839679e-03, + 1.197381925648154663e-03, + 1.197105112610460410e-03, + 1.196826370484558840e-03, + 1.196545699832349654e-03, + 1.196263101218821880e-03, + 1.195978575212079675e-03, + 1.195692122383331052e-03, + 1.195403743306875950e-03, + 1.195113438560100596e-03, + 1.194821208723509170e-03, + 1.194527054380694090e-03, + 1.194230976118333632e-03, + 1.193932974526195831e-03, + 1.193633050197173825e-03, + 1.193331203727209964e-03, + 1.193027435715368232e-03, + 1.192721746763773533e-03, + 1.192414137477660696e-03, + 1.192104608465354961e-03, + 1.191793160338232944e-03, + 1.191479793710790948e-03, + 1.191164509200599419e-03, + 1.190847307428291677e-03, + 1.190528189017605329e-03, + 1.190207154595356682e-03, + 1.189884204791411470e-03, + 1.189559340238746004e-03, + 1.189232561573400114e-03, + 1.188903869434476289e-03, + 1.188573264464170675e-03, + 1.188240747307748365e-03, + 1.187906318613520407e-03, + 1.187569979032906042e-03, + 1.187231729220348782e-03, + 1.186891569833413342e-03, + 1.186549501532685241e-03, + 1.186205524981829348e-03, + 1.185859640847574704e-03, + 1.185511849799723199e-03, + 1.185162152511117038e-03, + 1.184810549657671491e-03, + 1.184457041918365134e-03, + 1.184101629975212091e-03, + 1.183744314513303668e-03, + 1.183385096220781248e-03, + 1.183023975788838897e-03, + 1.182660953911716419e-03, + 1.182296031286694804e-03, + 1.181929208614146756e-03, + 1.181560486597446266e-03, + 1.181189865943029329e-03, + 1.180817347360388521e-03, + 1.180442931562045465e-03, + 1.180066619263588122e-03, + 1.179688411183608780e-03, + 1.179308308043766065e-03, + 1.178926310568766296e-03, + 1.178542419486320767e-03, + 1.178156635527196705e-03, + 1.177768959425209028e-03, + 1.177379391917179798e-03, + 1.176987933742962289e-03, + 1.176594585645477416e-03, + 1.176199348370633941e-03, + 1.175802222667388965e-03, + 1.175403209287732322e-03, + 1.175002308986647761e-03, + 1.174599522522187106e-03, + 1.174194850655376366e-03, + 1.173788294150301817e-03, + 1.173379853774061217e-03, + 1.172969530296748839e-03, + 1.172557324491489954e-03, + 1.172143237134442347e-03, + 1.171727269004742104e-03, + 1.171309420884563248e-03, + 1.170889693559090412e-03, + 1.170468087816498677e-03, + 1.170044604447987397e-03, + 1.169619244247766107e-03, + 1.169192008013029147e-03, + 1.168762896544000337e-03, + 1.168331910643866187e-03, + 1.167899051118876947e-03, + 1.167464318778226257e-03, + 1.167027714434113166e-03, + 1.166589238901754276e-03, + 1.166148892999360536e-03, + 1.165706677548106890e-03, + 1.165262593372189083e-03, + 1.164816641298781815e-03, + 1.164368822158060859e-03, + 1.163919136783156871e-03, + 1.163467586010218926e-03, + 1.163014170678376572e-03, + 1.162558891629725732e-03, + 1.162101749709329142e-03, + 1.161642745765294193e-03, + 1.161181880648644565e-03, + 1.160719155213376166e-03, + 1.160254570316523711e-03, + 1.159788126818022151e-03, + 1.159319825580835267e-03, + 1.158849667470852668e-03, + 1.158377653356955275e-03, + 1.157903784110999928e-03, + 1.157428060607783174e-03, + 1.156950483725079646e-03, + 1.156471054343642495e-03, + 1.155989773347143330e-03, + 1.155506641622250493e-03, + 1.155021660058586563e-03, + 1.154534829548702112e-03, + 1.154046150988124499e-03, + 1.153555625275347676e-03, + 1.153063253311772561e-03, + 1.152569036001795935e-03, + 1.152072974252723063e-03, + 1.151575068974828404e-03, + 1.151075321081346725e-03, + 1.150573731488403056e-03, + 1.150070301115109408e-03, + 1.149565030883516409e-03, + 1.149057921718574932e-03, + 1.148548974548206777e-03, + 1.148038190303268032e-03, + 1.147525569917515892e-03, + 1.147011114327669157e-03, + 1.146494824473378096e-03, + 1.145976701297188229e-03, + 1.145456745744600612e-03, + 1.144934958764031721e-03, + 1.144411341306832749e-03, + 1.143885894327254914e-03, + 1.143358618782446641e-03, + 1.142829515632557422e-03, + 1.142298585840571725e-03, + 1.141765830372406566e-03, + 1.141231250196912380e-03, + 1.140694846285833335e-03, + 1.140156619613842464e-03, + 1.139616571158481818e-03, + 1.139074701900227296e-03, + 1.138531012822467832e-03, + 1.137985504911452703e-03, + 1.137438179156373711e-03, + 1.136889036549307503e-03, + 1.136338078085217087e-03, + 1.135785304761939042e-03, + 1.135230717580278494e-03, + 1.134674317543851035e-03, + 1.134116105659213483e-03, + 1.133556082935768469e-03, + 1.132994250385838163e-03, + 1.132430609024623726e-03, + 1.131865159870186228e-03, + 1.131297903943484159e-03, + 1.130728842268369531e-03, + 1.130157975871530626e-03, + 1.129585305782561389e-03, + 1.129010833033932586e-03, + 1.128434558660953643e-03, + 1.127856483701833142e-03, + 1.127276609197647812e-03, + 1.126694936192305886e-03, + 1.126111465732618656e-03, + 1.125526198868252335e-03, + 1.124939136651697483e-03, + 1.124350280138358563e-03, + 1.123759630386428386e-03, + 1.123167188457039039e-03, + 1.122572955414107053e-03, + 1.121976932324406703e-03, + 1.121379120257588432e-03, + 1.120779520286145896e-03, + 1.120178133485387993e-03, + 1.119574960933495452e-03, + 1.118970003711477687e-03, + 1.118363262903203370e-03, + 1.117754739595334295e-03, + 1.117144434877407775e-03, + 1.116532349841791545e-03, + 1.115918485583665106e-03, + 1.115302843201014527e-03, + 1.114685423794743030e-03, + 1.114066228468494051e-03, + 1.113445258328745130e-03, + 1.112822514484829162e-03, + 1.112197998048880185e-03, + 1.111571710135864609e-03, + 1.110943651863527219e-03, + 1.110313824352462736e-03, + 1.109682228726078948e-03, + 1.109048866110551182e-03, + 1.108413737634908382e-03, + 1.107776844430977603e-03, + 1.107138187633359069e-03, + 1.106497768379484511e-03, + 1.105855587809594608e-03, + 1.105211647066679358e-03, + 1.104565947296572408e-03, + 1.103918489647896621e-03, + 1.103269275272023096e-03, + 1.102618305323178937e-03, + 1.101965580958307826e-03, + 1.101311103337189717e-03, + 1.100654873622392265e-03, + 1.099996892979214448e-03, + 1.099337162575776336e-03, + 1.098675683582986569e-03, + 1.098012457174473181e-03, + 1.097347484526685520e-03, + 1.096680766818846102e-03, + 1.096012305232902696e-03, + 1.095342100953612240e-03, + 1.094670155168482291e-03, + 1.093996469067797048e-03, + 1.093321043844575286e-03, + 1.092643880694576641e-03, + 1.091964980816407431e-03, + 1.091284345411338511e-03, + 1.090601975683408702e-03, + 1.089917872839439974e-03, + 1.089232038088993422e-03, + 1.088544472644343035e-03, + 1.087855177720542478e-03, + 1.087164154535377389e-03, + 1.086471404309385328e-03, + 1.085776928265794845e-03, + 1.085080727630621323e-03, + 1.084382803632607997e-03, + 1.083683157503184539e-03, + 1.082981790476556395e-03, + 1.082278703789655563e-03, + 1.081573898682089852e-03, + 1.080867376396240677e-03, + 1.080159138177208414e-03, + 1.079449185272758193e-03, + 1.078737518933443277e-03, + 1.078024140412463900e-03, + 1.077309050965772437e-03, + 1.076592251852044775e-03, + 1.075873744332602909e-03, + 1.075153529671526824e-03, + 1.074431609135602025e-03, + 1.073707983994263808e-03, + 1.072982655519692016e-03, + 1.072255624986760518e-03, + 1.071526893673000998e-03, + 1.070796462858670389e-03, + 1.070064333826723771e-03, + 1.069330507862752133e-03, + 1.068594986255095572e-03, + 1.067857770294710794e-03, + 1.067118861275291033e-03, + 1.066378260493196228e-03, + 1.065635969247403364e-03, + 1.064891988839680162e-03, + 1.064146320574363902e-03, + 1.063398965758477000e-03, + 1.062649925701740234e-03, + 1.061899201716543471e-03, + 1.061146795117884952e-03, + 1.060392707223475157e-03, + 1.059636939353665033e-03, + 1.058879492831476567e-03, + 1.058120368982537517e-03, + 1.057359569135170319e-03, + 1.056597094620353484e-03, + 1.055832946771673901e-03, + 1.055067126925348514e-03, + 1.054299636420329925e-03, + 1.053530476598116879e-03, + 1.052759648802855958e-03, + 1.051987154381368687e-03, + 1.051212994683078245e-03, + 1.050437171060073643e-03, + 1.049659684867007385e-03, + 1.048880537461212986e-03, + 1.048099730202641661e-03, + 1.047317264453817868e-03, + 1.046533141579938627e-03, + 1.045747362948809978e-03, + 1.044959929930802103e-03, + 1.044170843898952752e-03, + 1.043380106228897859e-03, + 1.042587718298840747e-03, + 1.041793681489644506e-03, + 1.040997997184713161e-03, + 1.040200666770100743e-03, + 1.039401691634452311e-03, + 1.038601073168964484e-03, + 1.037798812767466976e-03, + 1.036994911826390068e-03, + 1.036189371744685676e-03, + 1.035382193923956593e-03, + 1.034573379768379073e-03, + 1.033762930684656431e-03, + 1.032950848082126154e-03, + 1.032137133372697246e-03, + 1.031321787970801646e-03, + 1.030504813293487256e-03, + 1.029686210760361780e-03, + 1.028865981793607902e-03, + 1.028044127817937100e-03, + 1.027220650260606558e-03, + 1.026395550551532140e-03, + 1.025568830123082826e-03, + 1.024740490410195421e-03, + 1.023910532850397107e-03, + 1.023078958883756433e-03, + 1.022245769952838217e-03, + 1.021410967502799387e-03, + 1.020574552981326532e-03, + 1.019736527838651730e-03, + 1.018896893527497906e-03, + 1.018055651503172723e-03, + 1.017212803223509167e-03, + 1.016368350148836707e-03, + 1.015522293741987804e-03, + 1.014674635468432564e-03, + 1.013825376796028289e-03, + 1.012974519195246510e-03, + 1.012122064138995178e-03, + 1.011268013102752886e-03, + 1.010412367564505337e-03, + 1.009555129004698721e-03, + 1.008696298906329057e-03, + 1.007835878754899904e-03, + 1.006973870038361651e-03, + 1.006110274247208874e-03, + 1.005245092874444560e-03, + 1.004378327415495972e-03, + 1.003509979368339767e-03, + 1.002640050233442144e-03, + 1.001768541513692930e-03, + 1.000895454714525274e-03, + 1.000020791343849509e-03, + 9.991445529119915691e-04, + 9.982667409318358911e-04, + 9.973873569186332902e-04, + 9.965064023902488102e-04, + 9.956238788668898051e-04, + 9.947397878712481867e-04, + 9.938541309285197235e-04, + 9.929669095663504804e-04, + 9.920781253147941021e-04, + 9.911877797064070055e-04, + 9.902958742762024095e-04, + 9.894024105615794283e-04, + 9.885073901024460201e-04, + 9.876108144411248780e-04, + 9.867126851224037373e-04, + 9.858130036934655525e-04, + 9.849117717039160367e-04, + 9.840089907059027061e-04, + 9.831046622538839458e-04, + 9.821987879047515239e-04, + 9.812913692179370609e-04, + 9.803824077551496520e-04, + 9.794719050806215480e-04, + 9.785598627609234067e-04, + 9.776462823650956986e-04, + 9.767311654645879915e-04, + 9.758145136332026801e-04, + 9.748963284472025393e-04, + 9.739766114852581400e-04, + 9.730553643283741238e-04, + 9.721325885600152952e-04, + 9.712082857660418950e-04, + 9.702824575346469336e-04, + 9.693551054564663455e-04, + 9.684262311245270564e-04, + 9.674958361341796540e-04, + 9.665639220832365156e-04, + 9.656304905718041901e-04, + 9.646955432024270551e-04, + 9.637590815800247583e-04, + 9.628211073118203350e-04, + 9.618816220074716131e-04, + 9.609406272789921752e-04, + 9.599981247407077733e-04, + 9.590541160093534736e-04, + 9.581086027040255177e-04, + 9.571615864461124759e-04, + 9.562130688594129915e-04, + 9.552630515700754991e-04, + 9.543115362065287275e-04, + 9.533585243996321864e-04, + 9.524040177824746141e-04, + 9.514480179906301734e-04, + 9.504905266618829569e-04, + 9.495315454363452727e-04, + 9.485710759565866646e-04, + 9.476091198673729449e-04, + 9.466456788158161394e-04, + 9.456807544513886905e-04, + 9.447143484258800888e-04, + 9.437464623933363751e-04, + 9.427770980101682352e-04, + 9.418062569350823697e-04, + 9.408339408291068644e-04, + 9.398601513555171396e-04, + 9.388848901799403584e-04, + 9.379081589703148775e-04, + 9.369299593968166305e-04, + 9.359502931319042297e-04, + 9.349691618504436504e-04, + 9.339865672294468289e-04, + 9.330025109483057423e-04, + 9.320169946886168759e-04, + 9.310300201343066654e-04, + 9.300415889715874787e-04, + 9.290517028888714210e-04, + 9.280603635769085714e-04, + 9.270675727287119557e-04, + 9.260733320394931448e-04, + 9.250776432067894317e-04, + 9.240805079303949848e-04, + 9.230819279122933017e-04, + 9.220819048567841696e-04, + 9.210804404704168785e-04, + 9.200775364619193141e-04, + 9.190731945423521315e-04, + 9.180674164249282357e-04, + 9.170602038251576306e-04, + 9.160515584607895230e-04, + 9.150414820517151779e-04, + 9.140299763202085030e-04, + 9.130170429906372172e-04, + 9.120026837896098686e-04, + 9.109869004460022885e-04, + 9.099696946909052253e-04, + 9.089510682575562559e-04, + 9.079310228814694564e-04, + 9.069095603003676396e-04, + 9.058866822541148094e-04, + 9.048623904848347721e-04, + 9.038366867368380613e-04, + 9.028095727566427548e-04, + 9.017810502929273116e-04, + 9.007511210965235245e-04, + 8.997197869205982327e-04, + 8.986870495203573344e-04, + 8.976529106532196928e-04, + 8.966173720788136667e-04, + 8.955804355589362361e-04, + 8.945421028575649284e-04, + 8.935023757407862611e-04, + 8.924612559769184734e-04, + 8.914187453364448479e-04, + 8.903748455919367321e-04, + 8.893295585181934006e-04, + 8.882828858921644260e-04, + 8.872348294929147680e-04, + 8.861853911016236889e-04, + 8.851345725017548648e-04, + 8.840823754787568208e-04, + 8.830288018203088281e-04, + 8.819738533162241930e-04, + 8.809175317583779405e-04, + 8.798598389408736732e-04, + 8.788007766598386573e-04, + 8.777403467136072690e-04, + 8.766785509026221159e-04, + 8.756153910293817781e-04, + 8.745508688985672262e-04, + 8.734849863169675535e-04, + 8.724177450934163334e-04, + 8.713491470389161941e-04, + 8.702791939665761520e-04, + 8.692078876915344159e-04, + 8.681352300310960814e-04, + 8.670612228046559351e-04, + 8.659858678336306926e-04, + 8.649091669416213027e-04, + 8.638311219541877596e-04, + 8.627517346991420534e-04, + 8.616710070062312586e-04, + 8.605889407072972366e-04, + 8.595055376363074269e-04, + 8.584207996292882777e-04, + 8.573347285242694090e-04, + 8.562473261614098139e-04, + 8.551585943829048339e-04, + 8.540685350330293104e-04, + 8.529771499580382716e-04, + 8.518844410063098303e-04, + 8.507904100282686396e-04, + 8.496950588763369948e-04, + 8.485983894049482779e-04, + 8.475004034707240078e-04, + 8.464011029321687456e-04, + 8.453004896498218833e-04, + 8.441985654863977222e-04, + 8.430953323064624893e-04, + 8.419907919767266385e-04, + 8.408849463658196613e-04, + 8.397777973444624754e-04, + 8.386693467853876269e-04, + 8.375595965632625295e-04, + 8.364485485548359394e-04, + 8.353362046388559904e-04, + 8.342225666959947328e-04, + 8.331076366090050178e-04, + 8.319914162626212929e-04, + 8.308739075434987782e-04, + 8.297551123403549547e-04, + 8.286350325438862977e-04, + 8.275136700467032244e-04, + 8.263910267434845932e-04, + 8.252671045307892689e-04, + 8.241419053072181027e-04, + 8.230154309733421578e-04, + 8.218876834316198770e-04, + 8.207586645865496289e-04, + 8.196283763445839487e-04, + 8.184968206140585218e-04, + 8.173639993053324806e-04, + 8.162299143307148947e-04, + 8.150945676043858416e-04, + 8.139579610425437496e-04, + 8.128200965633188783e-04, + 8.116809760867115192e-04, + 8.105406015347486632e-04, + 8.093989748312602206e-04, + 8.082560979021814057e-04, + 8.071119726752190192e-04, + 8.059666010799946710e-04, + 8.048199850482040500e-04, + 8.036721265132953495e-04, + 8.025230274106626887e-04, + 8.013726896776484981e-04, + 8.002211152534780339e-04, + 7.990683060792984089e-04, + 7.979142640980774366e-04, + 7.967589912547539018e-04, + 7.956024894961589555e-04, + 7.944447607709292708e-04, + 7.932858070296650108e-04, + 7.921256302248434180e-04, + 7.909642323107699165e-04, + 7.898016152436007718e-04, + 7.886377809815107087e-04, + 7.874727314843648317e-04, + 7.863064687140189487e-04, + 7.851389946340898290e-04, + 7.839703112101256395e-04, + 7.828004204095308097e-04, + 7.816293242014821143e-04, + 7.804570245570773175e-04, + 7.792835234492646998e-04, + 7.781088228527507922e-04, + 7.769329247441593206e-04, + 7.757558311019501071e-04, + 7.745775439063284310e-04, + 7.733980651394142727e-04, + 7.722173967851459278e-04, + 7.710355408292060651e-04, + 7.698524992591725385e-04, + 7.686682740644352292e-04, + 7.674828672361237291e-04, + 7.662962807672721397e-04, + 7.651085166525885706e-04, + 7.639195768887719435e-04, + 7.627294634741509528e-04, + 7.615381784088826912e-04, + 7.603457236949637092e-04, + 7.591521013361784065e-04, + 7.579573133380212947e-04, + 7.567613617078363178e-04, + 7.555642484547254534e-04, + 7.543659755895905632e-04, + 7.531665451250261654e-04, + 7.519659590754666691e-04, + 7.507642194571157931e-04, + 7.495613282878851999e-04, + 7.483572875874132521e-04, + 7.471520993772534473e-04, + 7.459457656805504582e-04, + 7.447382885222218448e-04, + 7.435296699289800637e-04, + 7.423199119292560322e-04, + 7.411090165532388096e-04, + 7.398969858327728152e-04, + 7.386838218015116765e-04, + 7.374695264948389738e-04, + 7.362541019497763004e-04, + 7.350375502051480605e-04, + 7.338198733014926738e-04, + 7.326010732809846212e-04, + 7.313811521875857990e-04, + 7.301601120669617105e-04, + 7.289379549664061139e-04, + 7.277146829349874979e-04, + 7.264902980234737295e-04, + 7.252648022842397889e-04, + 7.240381977714596727e-04, + 7.228104865408867350e-04, + 7.215816706500352909e-04, + 7.203517521580989763e-04, + 7.191207331258620602e-04, + 7.178886156158687968e-04, + 7.166554016923257393e-04, + 7.154210934210242191e-04, + 7.141856928694996151e-04, + 7.129492021069434252e-04, + 7.117116232041229267e-04, + 7.104729582335338319e-04, + 7.092332092692941450e-04, + 7.079923783871981549e-04, + 7.067504676646158219e-04, + 7.055074791805328923e-04, + 7.042634150157356474e-04, + 7.030182772524712223e-04, + 7.017720679746427626e-04, + 7.005247892678323008e-04, + 6.992764432192375475e-04, + 6.980270319175975154e-04, + 6.967765574533384522e-04, + 6.955250219184749621e-04, + 6.942724274066502292e-04, + 6.930187760130293324e-04, + 6.917640698344563457e-04, + 6.905083109693760596e-04, + 6.892515015177625316e-04, + 6.879936435811573586e-04, + 6.867347392628501968e-04, + 6.854747906675132769e-04, + 6.842137999015179915e-04, + 6.829517690728001281e-04, + 6.816887002907867947e-04, + 6.804245956665860460e-04, + 6.791594573127516122e-04, + 6.778932873434884631e-04, + 6.766260878745534958e-04, + 6.753578610231736768e-04, + 6.740886089082105161e-04, + 6.728183336500719210e-04, + 6.715470373706211235e-04, + 6.702747221933499358e-04, + 6.690013902432791117e-04, + 6.677270436468829952e-04, + 6.664516845322441272e-04, + 6.651753150289724725e-04, + 6.638979372681146724e-04, + 6.626195533823460567e-04, + 6.613401655057459970e-04, + 6.600597757739859071e-04, + 6.587783863242457601e-04, + 6.574959992951250748e-04, + 6.562126168268094493e-04, + 6.549282410609754768e-04, + 6.536428741407143087e-04, + 6.523565182106859373e-04, + 6.510691754170380968e-04, + 6.497808479073168171e-04, + 6.484915378306302467e-04, + 6.472012473375310165e-04, + 6.459099785800764132e-04, + 6.446177337117051055e-04, + 6.433245148874007502e-04, + 6.420303242636120865e-04, + 6.407351639981866912e-04, + 6.394390362503960239e-04, + 6.381419431811349201e-04, + 6.368438869525716107e-04, + 6.355448697283465646e-04, + 6.342448936735921132e-04, + 6.329439609548548210e-04, + 6.316420737401363603e-04, + 6.303392341987822719e-04, + 6.290354445016482820e-04, + 6.277307068210116140e-04, + 6.264250233304829519e-04, + 6.251183962051669015e-04, + 6.238108276215855548e-04, + 6.225023197575768998e-04, + 6.211928747924676426e-04, + 6.198824949069869049e-04, + 6.185711822831727654e-04, + 6.172589391045668747e-04, + 6.159457675559886153e-04, + 6.146316698237250546e-04, + 6.133166480954477858e-04, + 6.120007045601173019e-04, + 6.106838414081528898e-04, + 6.093660608313504479e-04, + 6.080473650227778606e-04, + 6.067277561769585537e-04, + 6.054072364897731574e-04, + 6.040858081583715773e-04, + 6.027634733813423467e-04, + 6.014402343586215541e-04, + 6.001160932914053475e-04, + 5.987910523823151672e-04, + 5.974651138352866150e-04, + 5.961382798556076178e-04, + 5.948105526498490394e-04, + 5.934819344258743289e-04, + 5.921524273930422674e-04, + 5.908220337618606734e-04, + 5.894907557441791740e-04, + 5.881585955532166350e-04, + 5.868255554035038072e-04, + 5.854916375107853139e-04, + 5.841568440921943162e-04, + 5.828211773661317327e-04, + 5.814846395523237026e-04, + 5.801472328716953840e-04, + 5.788089595465474623e-04, + 5.774698218004616079e-04, + 5.761298218582413871e-04, + 5.747889619459355722e-04, + 5.734472442910389361e-04, + 5.721046711221106128e-04, + 5.707612446691173562e-04, + 5.694169671631724638e-04, + 5.680718408367301745e-04, + 5.667258679235008837e-04, + 5.653790506583543244e-04, + 5.640313912774934726e-04, + 5.626828920183632584e-04, + 5.613335551195587332e-04, + 5.599833828209982173e-04, + 5.586323773638304921e-04, + 5.572805409903406910e-04, + 5.559278759441282176e-04, + 5.545743844700098176e-04, + 5.532200688139327343e-04, + 5.518649312231402662e-04, + 5.505089739460865489e-04, + 5.491521992323435304e-04, + 5.477946093327980791e-04, + 5.464362064993874384e-04, + 5.450769929854540861e-04, + 5.437169710453470736e-04, + 5.423561429346301921e-04, + 5.409945109101150411e-04, + 5.396320772297864355e-04, + 5.382688441527164278e-04, + 5.369048139392359380e-04, + 5.355399888508473663e-04, + 5.341743711501222448e-04, + 5.328079631008815400e-04, + 5.314407669680781257e-04, + 5.300727850178400423e-04, + 5.287040195173899407e-04, + 5.273344727350589602e-04, + 5.259641469405059539e-04, + 5.245930444043426805e-04, + 5.232211673983443558e-04, + 5.218485181954775169e-04, + 5.204750990698059137e-04, + 5.191009122965432009e-04, + 5.177259601519323745e-04, + 5.163502449134198952e-04, + 5.149737688595653739e-04, + 5.135965342699439938e-04, + 5.122185434253268129e-04, + 5.108397986075801506e-04, + 5.094603020995797180e-04, + 5.080800561853827902e-04, + 5.066990631501343137e-04, + 5.053173252799726895e-04, + 5.039348448622107263e-04, + 5.025516241852365446e-04, + 5.011676655384165405e-04, + 4.997829712123162378e-04, + 4.983975434984379109e-04, + 4.970113846894399189e-04, + 4.956244970790386938e-04, + 4.942368829619148488e-04, + 4.928485446338873007e-04, + 4.914594843918243658e-04, + 4.900697045335466150e-04, + 4.886792073580041411e-04, + 4.872879951651791432e-04, + 4.858960702560003288e-04, + 4.845034349325102606e-04, + 4.831100914977792707e-04, + 4.817160422558030035e-04, + 4.803212895117164372e-04, + 4.789258355715152985e-04, + 4.775296827424193235e-04, + 4.761328333324659542e-04, + 4.747352896506960070e-04, + 4.733370540073315912e-04, + 4.719381287134042811e-04, + 4.705385160809649097e-04, + 4.691382184231123538e-04, + 4.677372380539269103e-04, + 4.663355772883761869e-04, + 4.649332384424948090e-04, + 4.635302238332537190e-04, + 4.621265357786254451e-04, + 4.607221765974513954e-04, + 4.593171486096238950e-04, + 4.579114541359929989e-04, + 4.565050954982942302e-04, + 4.550980750191853884e-04, + 4.536903950224481573e-04, + 4.522820578325913946e-04, + 4.508730657752146116e-04, + 4.494634211767219059e-04, + 4.480531263645445481e-04, + 4.466421836670349471e-04, + 4.452305954133737882e-04, + 4.438183639337510943e-04, + 4.424054915592723347e-04, + 4.409919806218569435e-04, + 4.395778334544239892e-04, + 4.381630523907948673e-04, + 4.367476397655936085e-04, + 4.353315979144327104e-04, + 4.339149291738137707e-04, + 4.324976358810339204e-04, + 4.310797203743930149e-04, + 4.296611849929500137e-04, + 4.282420320767256722e-04, + 4.268222639666179735e-04, + 4.254018830042621043e-04, + 4.239808915323785917e-04, + 4.225592918943571865e-04, + 4.211370864344753844e-04, + 4.197142774979255309e-04, + 4.182908674307453780e-04, + 4.168668585797244094e-04, + 4.154422532925860947e-04, + 4.140170539178909077e-04, + 4.125912628049328932e-04, + 4.111648823039350405e-04, + 4.097379147659069819e-04, + 4.083103625427170918e-04, + 4.068822279869827659e-04, + 4.054535134521039226e-04, + 4.040242212924785971e-04, + 4.025943538631220607e-04, + 4.011639135198796498e-04, + 3.997329026194620027e-04, + 3.983013235193353925e-04, + 3.968691785777928504e-04, + 3.954364701538150631e-04, + 3.940032006072612461e-04, + 3.925693722987677711e-04, + 3.911349875896503168e-04, + 3.897000488420889960e-04, + 3.882645584190333259e-04, + 3.868285186841281765e-04, + 3.853919320017463513e-04, + 3.839548007372080838e-04, + 3.825171272563593914e-04, + 3.810789139259206462e-04, + 3.796401631133576636e-04, + 3.782008771867762637e-04, + 3.767610585151485981e-04, + 3.753207094680478459e-04, + 3.738798324158731316e-04, + 3.724384297297429476e-04, + 3.709965037814049490e-04, + 3.695540569434140337e-04, + 3.681110915890401848e-04, + 3.666676100921618399e-04, + 3.652236148274621858e-04, + 3.637791081703213342e-04, + 3.623340924967205327e-04, + 3.608885701834276178e-04, + 3.594425436079029599e-04, + 3.579960151481931577e-04, + 3.565489871831536246e-04, + 3.551014620921542821e-04, + 3.536534422554676502e-04, + 3.522049300538372262e-04, + 3.507559278687076066e-04, + 3.493064380822471474e-04, + 3.478564630772802550e-04, + 3.464060052371909469e-04, + 3.449550669461077623e-04, + 3.435036505887712724e-04, + 3.420517585505984280e-04, + 3.405993932175458956e-04, + 3.391465569763004438e-04, + 3.376932522141789248e-04, + 3.362394813190615426e-04, + 3.347852466794147292e-04, + 3.333305506845179057e-04, + 3.318753957240744160e-04, + 3.304197841883938901e-04, + 3.289637184685859366e-04, + 3.275072009561390382e-04, + 3.260502340433011617e-04, + 3.245928201227843120e-04, + 3.231349615879879869e-04, + 3.216766608329012732e-04, + 3.202179202519954025e-04, + 3.187587422404204794e-04, + 3.172991291938990674e-04, + 3.158390835086294780e-04, + 3.143786075814743674e-04, + 3.129177038098581169e-04, + 3.114563745916678456e-04, + 3.099946223254446630e-04, + 3.085324494102785562e-04, + 3.070698582457124376e-04, + 3.056068512319583892e-04, + 3.041434307696440679e-04, + 3.026795992600256422e-04, + 3.012153591048917327e-04, + 2.997507127064635022e-04, + 2.982856624675816267e-04, + 2.968202107916062776e-04, + 2.953543600823179717e-04, + 2.938881127441061677e-04, + 2.924214711818669721e-04, + 2.909544378009049103e-04, + 2.894870150071215779e-04, + 2.880192052069148099e-04, + 2.865510108070783374e-04, + 2.850824342150224235e-04, + 2.836134778384811280e-04, + 2.821441440858955731e-04, + 2.806744353659895328e-04, + 2.792043540879574873e-04, + 2.777339026616594542e-04, + 2.762630834972251465e-04, + 2.747918990052765592e-04, + 2.733203515969581643e-04, + 2.718484436838345081e-04, + 2.703761776779530944e-04, + 2.689035559917072335e-04, + 2.674305810380296264e-04, + 2.659572552302904495e-04, + 2.644835809821950061e-04, + 2.630095607079750339e-04, + 2.615351968222895005e-04, + 2.600604917401514197e-04, + 2.585854478769592391e-04, + 2.571100676487218122e-04, + 2.556343534716279701e-04, + 2.541583077624349368e-04, + 2.526819329381724505e-04, + 2.512052314163637783e-04, + 2.497282056149288968e-04, + 2.482508579520763432e-04, + 2.467731908465007565e-04, + 2.452952067172786861e-04, + 2.438169079837635323e-04, + 2.423382970657844975e-04, + 2.408593763835388708e-04, + 2.393801483574924170e-04, + 2.379006154085710361e-04, + 2.364207799580581709e-04, + 2.349406444274939492e-04, + 2.334602112388674668e-04, + 2.319794828145126228e-04, + 2.304984615770082649e-04, + 2.290171499494029442e-04, + 2.275355503549148894e-04, + 2.260536652173232412e-04, + 2.245714969605360249e-04, + 2.230890480088174802e-04, + 2.216063207868142725e-04, + 2.201233177194902228e-04, + 2.186400412320194608e-04, + 2.171564937499812821e-04, + 2.156726776992265481e-04, + 2.141885955059362869e-04, + 2.127042495964878482e-04, + 2.112196423976485425e-04, + 2.097347763364722348e-04, + 2.082496538402303621e-04, + 2.067642773364394186e-04, + 2.052786492530901555e-04, + 2.037927720182450980e-04, + 2.023066480602675834e-04, + 2.008202798078497062e-04, + 1.993336696899099421e-04, + 1.978468201356557341e-04, + 1.963597335744445786e-04, + 1.948724124359825700e-04, + 1.933848591502182034e-04, + 1.918970761472399986e-04, + 1.904090658574711143e-04, + 1.889208307115661592e-04, + 1.874323731403085725e-04, + 1.859436955748038284e-04, + 1.844548004463769251e-04, + 1.829656901864692769e-04, + 1.814763672268332744e-04, + 1.799868339994294749e-04, + 1.784970929363212725e-04, + 1.770071464699061038e-04, + 1.755169970326435304e-04, + 1.740266470572841406e-04, + 1.725360989767664693e-04, + 1.710453552241149474e-04, + 1.695544182326305042e-04, + 1.680632904357927187e-04, + 1.665719742671523205e-04, + 1.650804721605272679e-04, + 1.635887865499000742e-04, + 1.620969198693137780e-04, + 1.606048745530669374e-04, + 1.591126530355770746e-04, + 1.576202577514432886e-04, + 1.561276911353420903e-04, + 1.546349556220570013e-04, + 1.531420536467074022e-04, + 1.516489876443452361e-04, + 1.501557600501847510e-04, + 1.486623732996306894e-04, + 1.471688298282075168e-04, + 1.456751320714566665e-04, + 1.441812824651328613e-04, + 1.426872834450651462e-04, + 1.411931374472203684e-04, + 1.396988469075664591e-04, + 1.382044142622672648e-04, + 1.367098419475799821e-04, + 1.352151323997832202e-04, + 1.337202880552077660e-04, + 1.322253113504648348e-04, + 1.307302047220082160e-04, + 1.292349706064989715e-04, + 1.277396114406667386e-04, + 1.262441296612059726e-04, + 1.247485277050049840e-04, + 1.232528080088764872e-04, + 1.217569730097858930e-04, + 1.202610251447471982e-04, + 1.187649668507201892e-04, + 1.172688005648052194e-04, + 1.157725287241398844e-04, + 1.142761537657954675e-04, + 1.127796781269716755e-04, + 1.112831042448942769e-04, + 1.097864345567099882e-04, + 1.082896714996823623e-04, + 1.067928175110889925e-04, + 1.052958750281166430e-04, + 1.037988464880910050e-04, + 1.023017343282056461e-04, + 1.008045409857520510e-04, + 9.930726889801471129e-05, + 9.780992050216819381e-05, + 9.631249823547269047e-05, + 9.481500453516988035e-05, + 9.331744183837923940e-05, + 9.181981258229376605e-05, + 9.032211920407661604e-05, + 8.882436414075692418e-05, + 8.732654982942501495e-05, + 8.582867870709640285e-05, + 8.433075321077386304e-05, + 8.283277577730988668e-05, + 8.133474884360327394e-05, + 7.983667484649464396e-05, + 7.833855622269640900e-05, + 7.684039540882150576e-05, + 7.534219484161349019e-05, + 7.384395695754170997e-05, + 7.234568419303164324e-05, + 7.084737898449323696e-05, + 6.934904376821813805e-05, + 6.785068098044118128e-05, + 6.635229305720410497e-05, + 6.485388243455081586e-05, + 6.335545154842417306e-05, + 6.185700283456134897e-05, + 6.035853872869048322e-05, + 5.886006166642636887e-05, + 5.736157408316609800e-05, + 5.586307841428625091e-05, + 5.436457709503815543e-05, + 5.286607256044348509e-05, + 5.136756724552488915e-05, + 4.986906358503423063e-05, + 4.837056401368278273e-05, + 4.687207096603685403e-05, + 4.537358687641366445e-05, + 4.387511417907777556e-05, + 4.237665530813730533e-05, + 4.087821269743942461e-05, + 3.937978878076650959e-05, + 3.788138599173298681e-05, + 3.638300676367991473e-05, + 3.488465352987257968e-05, + 3.338632872339558568e-05, + 3.188803477704918438e-05, + 3.038977412354546150e-05, + 2.889154919537070747e-05, + 2.739336242484870099e-05, + 2.589521624403609706e-05, + 2.439711308475219848e-05, + 2.289905537880860685e-05, + 2.140104555760473381e-05, + 1.990308605235732327e-05, + 1.840517929413016868e-05, + 1.690732771376336890e-05, + 1.540953374176906178e-05, + 1.391179980852789178e-05, + 1.241412834415166186e-05, + 1.091652177854595638e-05, + 9.418982541272740406e-06, + 7.921513061746813847e-06, + 6.424115769131618716e-06, + 4.926793092268600844e-06, + 3.429547459706590910e-06, + 1.932381299931695952e-06, + 4.352970409291931807e-07, +-1.061702889419640592e-06, +-2.558616063642011041e-06, +-4.055440054443782571e-06, +-5.552172434813608737e-06, +-7.048810778126988121e-06, +-8.545352657949892454e-06, +-1.004179564814286103e-05, +-1.153813732296502652e-05, +-1.303437525687782186e-05, +-1.453050702464901116e-05, +-1.602653020145668498e-05, +-1.752244236269304180e-05, +-1.901824108406839858e-05, +-2.051392394171516403e-05, +-2.200948851199163023e-05, +-2.350493237158591709e-05, +-2.500025309761995417e-05, +-2.649544826742014815e-05, +-2.799051545882112209e-05, +-2.948545224976952765e-05, +-3.098025621876184925e-05, +-3.247492494461434325e-05, +-3.396945600643384568e-05, +-3.546384698368861140e-05, +-3.695809545631187571e-05, +-3.845219900450593220e-05, +-3.994615520884602647e-05, +-4.143996165038424980e-05, +-4.293361591045342728e-05, +-4.442711557080437782e-05, +-4.592045821354322693e-05, +-4.741364142123526653e-05, +-4.890666277687557304e-05, +-5.039951986365914978e-05, +-5.189221026538581546e-05, +-5.338473156622967571e-05, +-5.487708135071039852e-05, +-5.636925720379676227e-05, +-5.786125671084423283e-05, +-5.935307745773218290e-05, +-6.084471703066663496e-05, +-6.233617301628626914e-05, +-6.382744300176463638e-05, +-6.531852457461470389e-05, +-6.680941532279262686e-05, +-6.830011283480149980e-05, +-6.979061469949588846e-05, +-7.128091850618477484e-05, +-7.277102184473596583e-05, +-7.426092230538025921e-05, +-7.575061747881489010e-05, +-7.724010495630719421e-05, +-7.872938232946619357e-05, +-8.021844719051181749e-05, +-8.170729713204644758e-05, +-8.319592974715871658e-05, +-8.468434262952604676e-05, +-8.617253337322148578e-05, +-8.766049957281398181e-05, +-8.914823882347459470e-05, +-9.063574872078043157e-05, +-9.212302686081709035e-05, +-9.361007084028377320e-05, +-9.509687825629634117e-05, +-9.658344670649210233e-05, +-9.806977378913247221e-05, +-9.955585710287510155e-05, +-1.010416942470759486e-04, +-1.025272828213947787e-04, +-1.040126204262315960e-04, +-1.054977046625293598e-04, +-1.069825331315811453e-04, +-1.084671034354300922e-04, +-1.099514131766427390e-04, +-1.114354599582782719e-04, +-1.129192413839592965e-04, +-1.144027550579759751e-04, +-1.158859985850894069e-04, +-1.173689695706695111e-04, +-1.188516656206313981e-04, +-1.203340843415736186e-04, +-1.218162233405801614e-04, +-1.232980802253272063e-04, +-1.247796526041502639e-04, +-1.262609380860169343e-04, +-1.277419342802981004e-04, +-1.292226387972017032e-04, +-1.307030492473812368e-04, +-1.321831632422347709e-04, +-1.336629783936797082e-04, +-1.351424923142536692e-04, +-1.366217026172200123e-04, +-1.381006069163704547e-04, +-1.395792028261302940e-04, +-1.410574879616608660e-04, +-1.425354599386646044e-04, +-1.440131163734882300e-04, +-1.454904548832255061e-04, +-1.469674730855243861e-04, +-1.484441685986869223e-04, +-1.499205390417753013e-04, +-1.513965820343823453e-04, +-1.528722951969010177e-04, +-1.543476761502958190e-04, +-1.558227225162072500e-04, +-1.572974319170848429e-04, +-1.587718019758316247e-04, +-1.602458303162339760e-04, +-1.617195145627365238e-04, +-1.631928523404113228e-04, +-1.646658412750287624e-04, +-1.661384789931601050e-04, +-1.676107631219826005e-04, +-1.690826912893836787e-04, +-1.705542611240621319e-04, +-1.720254702553361569e-04, +-1.734963163132763602e-04, +-1.749667969286463156e-04, +-1.764369097330031248e-04, +-1.779066523586688483e-04, +-1.793760224385054249e-04, +-1.808450176063109208e-04, +-1.823136354965948557e-04, +-1.837818737445480889e-04, +-1.852497299861457917e-04, +-1.867172018580860813e-04, +-1.881842869979233779e-04, +-1.896509830438767447e-04, +-1.911172876349319383e-04, +-1.925831984109439474e-04, +-1.940487130124425141e-04, +-1.955138290807348887e-04, +-1.969785442579770893e-04, +-1.984428561871423244e-04, +-1.999067625117969421e-04, +-2.013702608765286634e-04, +-2.028333489265596572e-04, +-2.042960243080423923e-04, +-2.057582846678363724e-04, +-2.072201276536092117e-04, +-2.086815509139381428e-04, +-2.101425520981178689e-04, +-2.116031288562632924e-04, +-2.130632788394097490e-04, +-2.145229996993231099e-04, +-2.159822890885978476e-04, +-2.174411446607628004e-04, +-2.188995640700861238e-04, +-2.203575449716789134e-04, +-2.218150850215947617e-04, +-2.232721818766403212e-04, +-2.247288331944752673e-04, +-2.261850366337138070e-04, +-2.276407898537009811e-04, +-2.290960905148094098e-04, +-2.305509362780514470e-04, +-2.320053248055086597e-04, +-2.334592537601038202e-04, +-2.349127208055758339e-04, +-2.363657236065466348e-04, +-2.378182598286219618e-04, +-2.392703271382028705e-04, +-2.407219232026154576e-04, +-2.421730456900529106e-04, +-2.436236922697075365e-04, +-2.450738606115803755e-04, +-2.465235483865814360e-04, +-2.479727532666005201e-04, +-2.494214729244744258e-04, +-2.508697050337687522e-04, +-2.523174472691662061e-04, +-2.537646973062778421e-04, +-2.552114528214545746e-04, +-2.566577114922066012e-04, +-2.581034709968238776e-04, +-2.595487290146672801e-04, +-2.609934832259489467e-04, +-2.624377313118315350e-04, +-2.638814709545263975e-04, +-2.653246998371104051e-04, +-2.667674156436181045e-04, +-2.682096160591485121e-04, +-2.696512987696715840e-04, +-2.710924614621316488e-04, +-2.725331018245449855e-04, +-2.739732175458119861e-04, +-2.754128063158166849e-04, +-2.768518658255286194e-04, +-2.782903937667771535e-04, +-2.797283878325185712e-04, +-2.811658457166082850e-04, +-2.826027651139077931e-04, +-2.840391437203770527e-04, +-2.854749792328926603e-04, +-2.869102693493431520e-04, +-2.883450117687296724e-04, +-2.897792041909810095e-04, +-2.912128443170468360e-04, +-2.926459298490040155e-04, +-2.940784584898635599e-04, +-2.955104279436725451e-04, +-2.969418359156129894e-04, +-2.983726801117827371e-04, +-2.998029582394846145e-04, +-3.012326680068489653e-04, +-3.026618071232516647e-04, +-3.040903732991261728e-04, +-3.055183642457765642e-04, +-3.069457776757587874e-04, +-3.083726113026715224e-04, +-3.097988628411184504e-04, +-3.112245300068116325e-04, +-3.126496105165104691e-04, +-3.140741020881544061e-04, +-3.154980024406709772e-04, +-3.169213092940822182e-04, +-3.183440203695981794e-04, +-3.197661333894285998e-04, +-3.211876460768883996e-04, +-3.226085561564586671e-04, +-3.240288613537622097e-04, +-3.254485593953431355e-04, +-3.268676480090828619e-04, +-3.282861249238248728e-04, +-3.297039878696618161e-04, +-3.311212345777195839e-04, +-3.325378627802519100e-04, +-3.339538702107428805e-04, +-3.353692546037202889e-04, +-3.367840136948522926e-04, +-3.381981452210455329e-04, +-3.396116469202627728e-04, +-3.410245165316168423e-04, +-3.424367517954720664e-04, +-3.438483504532571311e-04, +-3.452593102475641799e-04, +-3.466696289222451991e-04, +-3.480793042221975086e-04, +-3.494883338936178446e-04, +-3.508967156837852481e-04, +-3.523044473411605947e-04, +-3.537115266155135547e-04, +-3.551179512575835628e-04, +-3.565237190194895929e-04, +-3.579288276545146180e-04, +-3.593332749170779095e-04, +-3.607370585627998178e-04, +-3.621401763486014106e-04, +-3.635426260325215139e-04, +-3.649444053738398774e-04, +-3.663455121330244277e-04, +-3.677459440718570905e-04, +-3.691456989532467653e-04, +-3.705447745413344390e-04, +-3.719431686015509195e-04, +-3.733408789005954230e-04, +-3.747379032062152639e-04, +-3.761342392875894453e-04, +-3.775298849151083498e-04, +-3.789248378603528680e-04, +-3.803190958961814600e-04, +-3.817126567966828846e-04, +-3.831055183372965994e-04, +-3.844976782946299648e-04, +-3.858891344465609718e-04, +-3.872798845723263877e-04, +-3.886699264523464951e-04, +-3.900592578683171404e-04, +-3.914478766033094260e-04, +-3.928357804415838245e-04, +-3.942229671686916593e-04, +-3.956094345715623290e-04, +-3.969951804383358525e-04, +-3.983802025584420696e-04, +-3.997644987227109590e-04, +-4.011480667231520571e-04, +-4.025309043532079986e-04, +-4.039130094075402242e-04, +-4.052943796821269922e-04, +-4.066750129743588430e-04, +-4.080549070828555849e-04, +-4.094340598075634939e-04, +-4.108124689498510477e-04, +-4.121901323123310090e-04, +-4.135670476989471069e-04, +-4.149432129150815358e-04, +-4.163186257673636478e-04, +-4.176932840638040685e-04, +-4.190671856137312716e-04, +-4.204403282278914330e-04, +-4.218127097184181285e-04, +-4.231843278986220517e-04, +-4.245551805833621371e-04, +-4.259252655888370138e-04, +-4.272945807325541595e-04, +-4.286631238333967419e-04, +-4.300308927117173479e-04, +-4.313978851891603372e-04, +-4.327640990887863626e-04, +-4.341295322350123055e-04, +-4.354941824537407295e-04, +-4.368580475721812041e-04, +-4.382211254189367694e-04, +-4.395834138240795053e-04, +-4.409449106191158912e-04, +-4.423056136367797234e-04, +-4.436655207114320772e-04, +-4.450246296787259089e-04, +-4.463829383757381662e-04, +-4.477404446410598849e-04, +-4.490971463145842818e-04, +-4.504530412377588861e-04, +-4.518081272533742824e-04, +-4.531624022056564304e-04, +-4.545158639403653819e-04, +-4.558685103046114539e-04, +-4.572203391469561139e-04, +-4.585713483174983906e-04, +-4.599215356677038955e-04, +-4.612708990504944860e-04, +-4.626194363203430795e-04, +-4.639671453330988251e-04, +-4.653140239460783938e-04, +-4.666600700181579731e-04, +-4.680052814095701417e-04, +-4.693496559821451041e-04, +-4.706931915991039881e-04, +-4.720358861251535494e-04, +-4.733777374265794673e-04, +-4.747187433710674514e-04, +-4.760589018277986513e-04, +-4.773982106675438738e-04, +-4.787366677624855572e-04, +-4.800742709863078678e-04, +-4.814110182142983989e-04, +-4.827469073231660784e-04, +-4.840819361911600518e-04, +-4.854161026980232784e-04, +-4.867494047250789965e-04, +-4.880818401552058949e-04, +-4.894134068726314641e-04, +-4.907441027632937405e-04, +-4.920739257146703816e-04, +-4.934028736155908826e-04, +-4.947309443566147999e-04, +-4.960581358298100322e-04, +-4.973844459287391591e-04, +-4.987098725485416238e-04, +-5.000344135858872212e-04, +-5.013580669390893963e-04, +-5.026808305079383862e-04, +-5.040027021937880641e-04, +-5.053236798996489643e-04, +-5.066437615300178453e-04, +-5.079629449909628001e-04, +-5.092812281902232190e-04, +-5.105986090370293789e-04, +-5.119150854421968769e-04, +-5.132306553182213902e-04, +-5.145453165790699664e-04, +-5.158590671404197654e-04, +-5.171719049194656130e-04, +-5.184838278349986063e-04, +-5.197948338075052089e-04, +-5.211049207589904184e-04, +-5.224140866130725248e-04, +-5.237223292950722326e-04, +-5.250296467318409229e-04, +-5.263360368518510760e-04, +-5.276414975852875607e-04, +-5.289460268638774155e-04, +-5.302496226209735481e-04, +-5.315522827916610961e-04, +-5.328540053125649812e-04, +-5.341547881219858677e-04, +-5.354546291598391225e-04, +-5.367535263677445864e-04, +-5.380514776890043486e-04, +-5.393484810683979403e-04, +-5.406445344525389295e-04, +-5.419396357896702227e-04, +-5.432337830296398882e-04, +-5.445269741239679422e-04, +-5.458192070259271222e-04, +-5.471104796903755946e-04, +-5.484007900738831556e-04, +-5.496901361346652037e-04, +-5.509785158327114339e-04, +-5.522659271296069452e-04, +-5.535523679886300346e-04, +-5.548378363748079261e-04, +-5.561223302548936763e-04, +-5.574058475971654892e-04, +-5.586883863718074879e-04, +-5.599699445505629865e-04, +-5.612505201070030472e-04, +-5.625301110163213490e-04, +-5.638087152554272126e-04, +-5.650863308030372152e-04, +-5.663629556395002006e-04, +-5.676385877468926883e-04, +-5.689132251091026833e-04, +-5.701868657116672618e-04, +-5.714595075418510677e-04, +-5.727311485887509384e-04, +-5.740017868431119153e-04, +-5.752714202974266652e-04, +-5.765400469460190726e-04, +-5.778076647848773804e-04, +-5.790742718117438542e-04, +-5.803398660262029272e-04, +-5.816044454294846348e-04, +-5.828680080247252565e-04, +-5.841305518166240579e-04, +-5.853920748118254715e-04, +-5.866525750187139661e-04, +-5.879120504473946390e-04, +-5.891704991097506793e-04, +-5.904279190195308629e-04, +-5.916843081921858375e-04, +-5.929396646449505226e-04, +-5.941939863969402779e-04, +-5.954472714689793824e-04, +-5.966995178837116234e-04, +-5.979507236655610481e-04, +-5.992008868408078576e-04, +-6.004500054375652056e-04, +-6.016980774855919560e-04, +-6.029451010166230395e-04, +-6.041910740641855734e-04, +-6.054359946635653588e-04, +-6.066798608519044598e-04, +-6.079226706681349580e-04, +-6.091644221531063467e-04, +-6.104051133494137931e-04, +-6.116447423014870427e-04, +-6.128833070556772645e-04, +-6.141208056600925766e-04, +-6.153572361646823981e-04, +-6.165925966213294971e-04, +-6.178268850836843252e-04, +-6.190600996072440554e-04, +-6.202922382494505940e-04, +-6.215232990695205781e-04, +-6.227532801285295093e-04, +-6.239821794895032605e-04, +-6.252099952172273647e-04, +-6.264367253784653734e-04, +-6.276623680417725906e-04, +-6.288869212775841100e-04, +-6.301103831582959133e-04, +-6.313327517581040832e-04, +-6.325540251530911056e-04, +-6.337742014213137987e-04, +-6.349932786426361287e-04, +-6.362112548988177897e-04, +-6.374281282735971442e-04, +-6.386438968525398694e-04, +-6.398585587231041174e-04, +-6.410721119747472005e-04, +-6.422845546987224121e-04, +-6.434958849883341391e-04, +-6.447061009386097826e-04, +-6.459152006466660012e-04, +-6.471231822115074833e-04, +-6.483300437340124185e-04, +-6.495357833169894185e-04, +-6.507403990652554709e-04, +-6.519438890854836093e-04, +-6.531462514862849868e-04, +-6.543474843782860718e-04, +-6.555475858739835812e-04, +-6.567465540878399989e-04, +-6.579443871362456288e-04, +-6.591410831376168233e-04, +-6.603366402122518930e-04, +-6.615310564824001703e-04, +-6.627243300723292298e-04, +-6.639164591082965909e-04, +-6.651074417183670297e-04, +-6.662972760327565960e-04, +-6.674859601835276277e-04, +-6.686734923048205529e-04, +-6.698598705326734787e-04, +-6.710450930051074098e-04, +-6.722291578622064789e-04, +-6.734120632459663757e-04, +-6.745938073003621095e-04, +-6.757743881714551280e-04, +-6.769538040072116056e-04, +-6.781320529576024062e-04, +-6.793091331746791946e-04, +-6.804850428124136494e-04, +-6.816597800267909209e-04, +-6.828333429758836823e-04, +-6.840057298196722604e-04, +-6.851769387202557302e-04, +-6.863469678416764903e-04, +-6.875158153499973503e-04, +-6.886834794134123359e-04, +-6.898499582019533040e-04, +-6.910152498878484881e-04, +-6.921793526453270170e-04, +-6.933422646506043861e-04, +-6.945039840819313554e-04, +-6.956645091196856723e-04, +-6.968238379462041296e-04, +-6.979819687458740712e-04, +-6.991388997052123229e-04, +-7.002946290127088497e-04, +-7.014491548589361523e-04, +-7.026024754364980926e-04, +-7.037545889401153288e-04, +-7.049054935665964756e-04, +-7.060551875146622467e-04, +-7.072036689852555366e-04, +-7.083509361813740196e-04, +-7.094969873080297093e-04, +-7.106418205723472959e-04, +-7.117854341835006112e-04, +-7.129278263528292898e-04, +-7.140689952936780894e-04, +-7.152089392214842781e-04, +-7.163476563538561303e-04, +-7.174851449104169103e-04, +-7.186214031128866208e-04, +-7.197564291851402249e-04, +-7.208902213531815165e-04, +-7.220227778449674798e-04, +-7.231540968907368026e-04, +-7.242841767227222371e-04, +-7.254130155753633208e-04, +-7.265406116851484079e-04, +-7.276669632906826489e-04, +-7.287920686327647524e-04, +-7.299159259542516761e-04, +-7.310385335001245467e-04, +-7.321598895175701919e-04, +-7.332799922558342308e-04, +-7.343988399662996786e-04, +-7.355164309025604558e-04, +-7.366327633202830434e-04, +-7.377478354772726201e-04, +-7.388616456335600144e-04, +-7.399741920512511095e-04, +-7.410854729946027373e-04, +-7.421954867301013914e-04, +-7.433042315262919234e-04, +-7.444117056540090196e-04, +-7.455179073860686376e-04, +-7.466228349976090960e-04, +-7.477264867659103378e-04, +-7.488288609703702952e-04, +-7.499299558925685318e-04, +-7.510297698163268497e-04, +-7.521283010275822212e-04, +-7.532255478144673447e-04, +-7.543215084672842989e-04, +-7.554161812785934469e-04, +-7.565095645430653347e-04, +-7.576016565575754503e-04, +-7.586924556212319790e-04, +-7.597819600353750450e-04, +-7.608701681033915292e-04, +-7.619570781310182122e-04, +-7.630426884262071167e-04, +-7.641269972989601662e-04, +-7.652100030616664807e-04, +-7.662917040288087745e-04, +-7.673720985171826907e-04, +-7.684511848457270143e-04, +-7.695289613356072651e-04, +-7.706054263102798821e-04, +-7.716805780953568065e-04, +-7.727544150186849538e-04, +-7.738269354104109410e-04, +-7.748981376028410070e-04, +-7.759680199305252560e-04, +-7.770365807303212993e-04, +-7.781038183412549358e-04, +-7.791697311046037440e-04, +-7.802343173639583393e-04, +-7.812975754650665740e-04, +-7.823595037560226225e-04, +-7.834201005871063023e-04, +-7.844793643108546313e-04, +-7.855372932821329517e-04, +-7.865938858580055846e-04, +-7.876491403977924251e-04, +-7.887030552631587145e-04, +-7.897556288179696489e-04, +-7.908068594283571657e-04, +-7.918567454628080895e-04, +-7.929052852920095247e-04, +-7.939524772889304961e-04, +-7.949983198288966503e-04, +-7.960428112894213371e-04, +-7.970859500504252687e-04, +-7.981277344939557115e-04, +-7.991681630044928817e-04, +-8.002072339688116008e-04, +-8.012449457758462042e-04, +-8.022812968169708075e-04, +-8.033162854858385193e-04, +-8.043499101783610581e-04, +-8.053821692927846465e-04, +-8.064130612296391623e-04, +-8.074425843918356079e-04, +-8.084707371845366568e-04, +-8.094975180152178028e-04, +-8.105229252937449884e-04, +-8.115469574322382125e-04, +-8.125696128451417866e-04, +-8.135908899492780028e-04, +-8.146107871638147164e-04, +-8.156293029101190865e-04, +-8.166464356120543226e-04, +-8.176621836957034296e-04, +-8.186765455895850729e-04, +-8.196895197244825990e-04, +-8.207011045335363018e-04, +-8.217112984522960059e-04, +-8.227200999185864090e-04, +-8.237275073725959865e-04, +-8.247335192569239370e-04, +-8.257381340164679680e-04, +-8.267413500984781803e-04, +-8.277431659526369740e-04, +-8.287435800309214630e-04, +-8.297425907876750323e-04, +-8.307401966796766190e-04, +-8.317363961659894655e-04, +-8.327311877081376278e-04, +-8.337245697699503929e-04, +-8.347165408176391481e-04, +-8.357070993198862860e-04, +-8.366962437475952957e-04, +-8.376839725741915205e-04, +-8.386702842754669004e-04, +-8.396551773295588298e-04, +-8.406386502169896227e-04, +-8.416207014207528151e-04, +-8.426013294261670145e-04, +-8.435805327209702255e-04, +-8.445583097952841798e-04, +-8.455346591416969520e-04, +-8.465095792551406619e-04, +-8.474830686329498045e-04, +-8.484551257749173032e-04, +-8.494257491832730425e-04, +-8.503949373625263337e-04, +-8.513626888197347968e-04, +-8.523290020643596197e-04, +-8.532938756082366098e-04, +-8.542573079656471009e-04, +-8.552192976532784884e-04, +-8.561798431903125915e-04, +-8.571389430982986933e-04, +-8.580965959012140393e-04, +-8.590528001255456946e-04, +-8.600075543001430923e-04, +-8.609608569563044446e-04, +-8.619127066278336633e-04, +-8.628631018509091716e-04, +-8.638120411641629420e-04, +-8.647595231087379592e-04, +-8.657055462281626696e-04, +-8.666501090684241649e-04, +-8.675932101780233678e-04, +-8.685348481078370136e-04, +-8.694750214112915553e-04, +-8.704137286442019438e-04, +-8.713509683648553274e-04, +-8.722867391340723099e-04, +-8.732210395150691480e-04, +-8.741538680735422111e-04, +-8.750852233777200225e-04, +-8.760151039982467082e-04, +-8.769435085082394592e-04, +-8.778704354833669196e-04, +-8.787958835017078063e-04, +-8.797198511438533665e-04, +-8.806423369928528420e-04, +-8.815633396342968447e-04, +-8.824828576562772408e-04, +-8.834008896492592149e-04, +-8.843174342063269506e-04, +-8.852324899230421418e-04, +-8.861460553974250193e-04, +-8.870581292299907798e-04, +-8.879687100238324192e-04, +-8.888777963844753409e-04, +-8.897853869199805719e-04, +-8.906914802408971666e-04, +-8.915960749603448225e-04, +-8.924991696939031834e-04, +-8.934007630596570507e-04, +-8.943008536782638207e-04, +-8.951994401729132609e-04, +-8.960965211691979473e-04, +-8.969920952953762926e-04, +-8.978861611821580902e-04, +-8.987787174627739038e-04, +-8.996697627730512866e-04, +-9.005592957512710160e-04, +-9.014473150383244112e-04, +-9.023338192775864821e-04, +-9.032188071149663440e-04, +-9.041022771989748723e-04, +-9.049842281806130297e-04, +-9.058646587134192452e-04, +-9.067435674535399967e-04, +-9.076209530596186792e-04, +-9.084968141928430937e-04, +-9.093711495170170040e-04, +-9.102439576984421759e-04, +-9.111152374059728037e-04, +-9.119849873110882606e-04, +-9.128532060877473818e-04, +-9.137198924125521787e-04, +-9.145850449646101459e-04, +-9.154486624255990957e-04, +-9.163107434798236457e-04, +-9.171712868141028950e-04, +-9.180302911178285378e-04, +-9.188877550830241688e-04, +-9.197436774042370804e-04, +-9.205980567785925807e-04, +-9.214508919058570944e-04, +-9.223021814883164068e-04, +-9.231519242308683631e-04, +-9.240001188409776569e-04, +-9.248467640287358956e-04, +-9.256918585068439273e-04, +-9.265354009904817369e-04, +-9.273773901975401399e-04, +-9.282178248485080255e-04, +-9.290567036663598165e-04, +-9.298940253767800073e-04, +-9.307297887080445524e-04, +-9.315639923909888823e-04, +-9.323966351590779432e-04, +-9.332277157483706348e-04, +-9.340572328975857300e-04, +-9.348851853480001769e-04, +-9.357115718435118738e-04, +-9.365363911306804354e-04, +-9.373596419586357944e-04, +-9.381813230791254728e-04, +-9.390014332465742132e-04, +-9.398199712179774014e-04, +-9.406369357529534335e-04, +-9.414523256138036724e-04, +-9.422661395653888486e-04, +-9.430783763752685969e-04, +-9.438890348135910852e-04, +-9.446981136531219618e-04, +-9.455056116693397661e-04, +-9.463115276402919458e-04, +-9.471158603466704263e-04, +-9.479186085718699405e-04, +-9.487197711018648637e-04, +-9.495193467252817463e-04, +-9.503173342334494044e-04, +-9.511137324202887646e-04, +-9.519085400823799762e-04, +-9.527017560190011169e-04, +-9.534933790320335428e-04, +-9.542834079260420098e-04, +-9.550718415082182959e-04, +-9.558586785884601311e-04, +-9.566439179793456097e-04, +-9.574275584960031948e-04, +-9.582095989563426536e-04, +-9.589900381809113999e-04, +-9.597688749929078307e-04, +-9.605461082181820844e-04, +-9.613217366853255962e-04, +-9.620957592255427286e-04, +-9.628681746727398927e-04, +-9.636389818634745908e-04, +-9.644081796370409599e-04, +-9.651757668353649292e-04, +-9.659417423030523591e-04, +-9.667061048874283974e-04, +-9.674688534385265286e-04, +-9.682299868089621567e-04, +-9.689895038541575766e-04, +-9.697474034321500701e-04, +-9.705036844037292750e-04, +-9.712583456323405822e-04, +-9.720113859841132166e-04, +-9.727628043279334209e-04, +-9.735125995353385289e-04, +-9.742607704805620683e-04, +-9.750073160405970784e-04, +-9.757522350950881230e-04, +-9.764955265263887537e-04, +-9.772371892196130092e-04, +-9.779772220625316571e-04, +-9.787156239456254285e-04, +-9.794523937621470340e-04, +-9.801875304080098165e-04, +-9.809210327818404431e-04, +-9.816528997850391871e-04, +-9.823831303216600148e-04, +-9.831117232985571702e-04, +-9.838386776251999925e-04, +-9.845639922138717595e-04, +-9.852876659795788312e-04, +-9.860096978400096669e-04, +-9.867300867155927215e-04, +-9.874488315295322245e-04, +-9.881659312077162392e-04, +-9.888813846787702228e-04, +-9.895951908741047309e-04, +-9.903073487278158879e-04, +-9.910178571767580286e-04, +-9.917267151605118226e-04, +-9.924339216214274253e-04, +-9.931394755046244784e-04, +-9.938433757578607041e-04, +-9.945456213317472281e-04, +-9.952462111796199929e-04, +-9.959451442575386736e-04, +-9.966424195243283116e-04, +-9.973380359415517753e-04, +-9.980319924735787159e-04, +-9.987242880874801828e-04, +-9.994149217530893387e-04, +-1.000103892443049598e-03, +-1.000791199132710979e-03, +-1.001476840800188863e-03, +-1.002160816426395009e-03, +-1.002843124995026489e-03, +-1.003523765492443610e-03, +-1.004202736907894343e-03, +-1.004880038233327191e-03, +-1.005555668463465344e-03, +-1.006229626595853957e-03, +-1.006901911630745869e-03, +-1.007572522571235831e-03, +-1.008241458423144278e-03, +-1.008908718195074793e-03, +-1.009574300898457688e-03, +-1.010238205547458069e-03, +-1.010900431159023104e-03, +-1.011560976752931898e-03, +-1.012219841351698563e-03, +-1.012877023980636405e-03, +-1.013532523667882860e-03, +-1.014186339444321430e-03, +-1.014838470343629824e-03, +-1.015488915402325927e-03, +-1.016137673659659379e-03, +-1.016784744157748187e-03, +-1.017430125941410669e-03, +-1.018073818058345438e-03, +-1.018715819559040756e-03, +-1.019356129496753940e-03, +-1.019994746927550605e-03, +-1.020631670910336327e-03, +-1.021266900506788118e-03, +-1.021900434781382186e-03, +-1.022532272801447923e-03, +-1.023162413637083989e-03, +-1.023790856361215347e-03, +-1.024417600049561811e-03, +-1.025042643780700504e-03, +-1.025665986635980855e-03, +-1.026287627699568614e-03, +-1.026907566058479033e-03, +-1.027525800802555614e-03, +-1.028142331024379033e-03, +-1.028757155819454714e-03, +-1.029370274286032626e-03, +-1.029981685525248455e-03, +-1.030591388641024283e-03, +-1.031199382740103721e-03, +-1.031805666932102648e-03, +-1.032410240329422043e-03, +-1.033013102047298289e-03, +-1.033614251203840472e-03, +-1.034213686919943642e-03, +-1.034811408319347148e-03, +-1.035407414528658702e-03, +-1.036001704677288896e-03, +-1.036594277897478957e-03, +-1.037185133324359512e-03, +-1.037774270095840430e-03, +-1.038361687352732906e-03, +-1.038947384238647111e-03, +-1.039531359900039680e-03, +-1.040113613486267491e-03, +-1.040694144149441076e-03, +-1.041272951044595278e-03, +-1.041850033329604465e-03, +-1.042425390165167788e-03, +-1.042999020714834761e-03, +-1.043570924145046904e-03, +-1.044141099625060538e-03, +-1.044709546326987992e-03, +-1.045276263425840967e-03, +-1.045841250099446189e-03, +-1.046404505528497880e-03, +-1.046966028896548434e-03, +-1.047525819390026638e-03, +-1.048083876198242868e-03, +-1.048640198513291948e-03, +-1.049194785530213614e-03, +-1.049747636446895149e-03, +-1.050298750464065097e-03, +-1.050848126785341617e-03, +-1.051395764617190200e-03, +-1.051941663168991107e-03, +-1.052485821652953931e-03, +-1.053028239284162270e-03, +-1.053568915280610153e-03, +-1.054107848863132871e-03, +-1.054645039255440149e-03, +-1.055180485684138487e-03, +-1.055714187378731369e-03, +-1.056246143571523645e-03, +-1.056776353497792609e-03, +-1.057304816395627112e-03, +-1.057831531506054409e-03, +-1.058356498072940410e-03, +-1.058879715343047151e-03, +-1.059401182566051649e-03, +-1.059920898994480640e-03, +-1.060438863883751996e-03, +-1.060955076492205726e-03, +-1.061469536081040884e-03, +-1.061982241914337897e-03, +-1.062493193259116467e-03, +-1.063002389385246009e-03, +-1.063509829565490762e-03, +-1.064015513075545994e-03, +-1.064519439193973823e-03, +-1.065021607202219474e-03, +-1.065522016384675254e-03, +-1.066020666028576896e-03, +-1.066517555424126946e-03, +-1.067012683864339501e-03, +-1.067506050645200674e-03, +-1.067997655065594216e-03, +-1.068487496427281786e-03, +-1.068975574034925066e-03, +-1.069461887196132815e-03, +-1.069946435221386712e-03, +-1.070429217424081472e-03, +-1.070910233120510747e-03, +-1.071389481629917654e-03, +-1.071866962274418012e-03, +-1.072342674379036555e-03, +-1.072816617271735769e-03, +-1.073288790283406357e-03, +-1.073759192747778977e-03, +-1.074227824001575170e-03, +-1.074694683384409127e-03, +-1.075159770238806123e-03, +-1.075623083910205767e-03, +-1.076084623746962655e-03, +-1.076544389100383232e-03, +-1.077002379324665292e-03, +-1.077458593776919882e-03, +-1.077913031817220304e-03, +-1.078365692808529045e-03, +-1.078816576116729863e-03, +-1.079265681110665957e-03, +-1.079713007162074259e-03, +-1.080158553645619917e-03, +-1.080602319938924263e-03, +-1.081044305422509738e-03, +-1.081484509479823525e-03, +-1.081922931497277885e-03, +-1.082359570864171224e-03, +-1.082794426972779169e-03, +-1.083227499218270863e-03, +-1.083658786998763831e-03, +-1.084088289715322241e-03, +-1.084516006771931319e-03, +-1.084941937575501251e-03, +-1.085366081535911421e-03, +-1.085788438065954029e-03, +-1.086209006581351005e-03, +-1.086627786500798032e-03, +-1.087044777245900354e-03, +-1.087459978241202925e-03, +-1.087873388914225746e-03, +-1.088285008695384940e-03, +-1.088694837018090115e-03, +-1.089102873318632250e-03, +-1.089509117036296026e-03, +-1.089913567613316238e-03, +-1.090316224494815344e-03, +-1.090717087128920343e-03, +-1.091116154966697942e-03, +-1.091513427462132216e-03, +-1.091908904072182943e-03, +-1.092302584256738115e-03, +-1.092694467478666628e-03, +-1.093084553203761255e-03, +-1.093472840900763582e-03, +-1.093859330041403472e-03, +-1.094244020100323391e-03, +-1.094626910555128929e-03, +-1.095008000886396821e-03, +-1.095387290577661942e-03, +-1.095764779115372418e-03, +-1.096140465988980047e-03, +-1.096514350690863107e-03, +-1.096886432716383166e-03, +-1.097256711563842583e-03, +-1.097625186734493179e-03, +-1.097991857732579608e-03, +-1.098356724065274737e-03, +-1.098719785242718893e-03, +-1.099081040778035912e-03, +-1.099440490187286517e-03, +-1.099798132989490869e-03, +-1.100153968706665862e-03, +-1.100507996863760510e-03, +-1.100860216988688248e-03, +-1.101210628612357949e-03, +-1.101559231268609083e-03, +-1.101906024494272432e-03, +-1.102251007829133230e-03, +-1.102594180815934417e-03, +-1.102935543000428242e-03, +-1.103275093931273482e-03, +-1.103612833160146252e-03, +-1.103948760241684271e-03, +-1.104282874733484047e-03, +-1.104615176196109116e-03, +-1.104945664193114543e-03, +-1.105274338291014832e-03, +-1.105601198059291733e-03, +-1.105926243070400744e-03, +-1.106249472899792797e-03, +-1.106570887125868288e-03, +-1.106890485330000061e-03, +-1.107208267096559213e-03, +-1.107524232012889942e-03, +-1.107838379669273763e-03, +-1.108150709659012131e-03, +-1.108461221578375695e-03, +-1.108769915026599313e-03, +-1.109076789605897883e-03, +-1.109381844921465471e-03, +-1.109685080581494180e-03, +-1.109986496197127312e-03, +-1.110286091382499049e-03, +-1.110583865754738789e-03, +-1.110879818933933200e-03, +-1.111173950543158529e-03, +-1.111466260208482772e-03, +-1.111756747558949624e-03, +-1.112045412226569810e-03, +-1.112332253846367268e-03, +-1.112617272056320170e-03, +-1.112900466497415350e-03, +-1.113181836813608187e-03, +-1.113461382651833882e-03, +-1.113739103662036295e-03, +-1.114014999497121329e-03, +-1.114289069812984681e-03, +-1.114561314268525940e-03, +-1.114831732525613022e-03, +-1.115100324249095835e-03, +-1.115367089106839450e-03, +-1.115632026769673366e-03, +-1.115895136911408854e-03, +-1.116156419208876472e-03, +-1.116415873341869685e-03, +-1.116673498993176958e-03, +-1.116929295848576118e-03, +-1.117183263596836741e-03, +-1.117435401929735977e-03, +-1.117685710541995890e-03, +-1.117934189131373655e-03, +-1.118180837398606705e-03, +-1.118425655047411860e-03, +-1.118668641784497471e-03, +-1.118909797319586619e-03, +-1.119149121365371584e-03, +-1.119386613637547451e-03, +-1.119622273854792597e-03, +-1.119856101738799263e-03, +-1.120088097014231270e-03, +-1.120318259408755466e-03, +-1.120546588653034128e-03, +-1.120773084480732127e-03, +-1.120997746628483310e-03, +-1.121220574835943848e-03, +-1.121441568845753418e-03, +-1.121660728403533471e-03, +-1.121878053257935803e-03, +-1.122093543160569262e-03, +-1.122307197866071089e-03, +-1.122519017132055964e-03, +-1.122729000719131830e-03, +-1.122937148390925483e-03, +-1.123143459914040070e-03, +-1.123347935058076341e-03, +-1.123550573595650430e-03, +-1.123751375302360677e-03, +-1.123950339956799986e-03, +-1.124147467340571660e-03, +-1.124342757238274652e-03, +-1.124536209437498793e-03, +-1.124727823728841926e-03, +-1.124917599905884752e-03, +-1.125105537765235496e-03, +-1.125291637106470280e-03, +-1.125475897732180607e-03, +-1.125658319447957320e-03, +-1.125838902062388427e-03, +-1.126017645387053252e-03, +-1.126194549236548669e-03, +-1.126369613428460483e-03, +-1.126542837783368846e-03, +-1.126714222124866474e-03, +-1.126883766279541087e-03, +-1.127051470076976484e-03, +-1.127217333349758840e-03, +-1.127381355933483641e-03, +-1.127543537666740071e-03, +-1.127703878391111449e-03, +-1.127862377951188667e-03, +-1.128019036194580606e-03, +-1.128173852971854499e-03, +-1.128326828136616816e-03, +-1.128477961545467723e-03, +-1.128627253057997186e-03, +-1.128774702536804913e-03, +-1.128920309847483662e-03, +-1.129064074858641357e-03, +-1.129205997441876585e-03, +-1.129346077471789223e-03, +-1.129484314825990191e-03, +-1.129620709385080858e-03, +-1.129755261032664533e-03, +-1.129887969655361856e-03, +-1.130018835142774592e-03, +-1.130147857387513817e-03, +-1.130275036285199918e-03, +-1.130400371734440693e-03, +-1.130523863636858674e-03, +-1.130645511897072041e-03, +-1.130765316422691590e-03, +-1.130883277124352607e-03, +-1.130999393915668684e-03, +-1.131113666713261636e-03, +-1.131226095436766062e-03, +-1.131336680008801585e-03, +-1.131445420354997575e-03, +-1.131552316403988592e-03, +-1.131657368087399208e-03, +-1.131760575339862225e-03, +-1.131861938099016068e-03, +-1.131961456305485055e-03, +-1.132059129902916262e-03, +-1.132154958837935498e-03, +-1.132248943060180056e-03, +-1.132341082522296321e-03, +-1.132431377179911151e-03, +-1.132519826991666570e-03, +-1.132606431919208059e-03, +-1.132691191927165039e-03, +-1.132774106983179064e-03, +-1.132855177057892973e-03, +-1.132934402124946126e-03, +-1.133011782160974834e-03, +-1.133087317145612576e-03, +-1.133161007061507563e-03, +-1.133232851894292598e-03, +-1.133302851632602424e-03, +-1.133371006268075456e-03, +-1.133437315795350533e-03, +-1.133501780212051082e-03, +-1.133564399518818952e-03, +-1.133625173719276895e-03, +-1.133684102820060663e-03, +-1.133741186830795585e-03, +-1.133796425764100691e-03, +-1.133849819635606273e-03, +-1.133901368463926347e-03, +-1.133951072270681206e-03, +-1.133998931080483323e-03, +-1.134044944920945810e-03, +-1.134089113822675261e-03, +-1.134131437819276521e-03, +-1.134171916947348353e-03, +-1.134210551246491025e-03, +-1.134247340759292648e-03, +-1.134282285531342839e-03, +-1.134315385611224481e-03, +-1.134346641050515457e-03, +-1.134376051903788433e-03, +-1.134403618228610857e-03, +-1.134429340085542793e-03, +-1.134453217538141691e-03, +-1.134475250652955663e-03, +-1.134495439499525436e-03, +-1.134513784150388907e-03, +-1.134530284681072899e-03, +-1.134544941170100756e-03, +-1.134557753698983446e-03, +-1.134568722352227157e-03, +-1.134577847217327221e-03, +-1.134585128384776789e-03, +-1.134590565948045363e-03, +-1.134594160003610241e-03, +-1.134595910650932444e-03, +-1.134595817992455416e-03, +-1.134593882133623022e-03, +-1.134590103182868273e-03, +-1.134584481251601183e-03, +-1.134577016454233920e-03, +-1.134567708908159559e-03, +-1.134556558733760320e-03, +-1.134543566054409302e-03, +-1.134528730996463329e-03, +-1.134512053689264470e-03, +-1.134493534265145018e-03, +-1.134473172859424249e-03, +-1.134450969610402557e-03, +-1.134426924659365796e-03, +-1.134401038150592003e-03, +-1.134373310231333830e-03, +-1.134343741051832642e-03, +-1.134312330765315912e-03, +-1.134279079527992021e-03, +-1.134243987499047217e-03, +-1.134207054840657763e-03, +-1.134168281717978224e-03, +-1.134127668299145372e-03, +-1.134085214755277968e-03, +-1.134040921260471776e-03, +-1.133994787991807803e-03, +-1.133946815129339720e-03, +-1.133897002856108175e-03, +-1.133845351358130169e-03, +-1.133791860824394501e-03, +-1.133736531446878464e-03, +-1.133679363420531582e-03, +-1.133620356943273446e-03, +-1.133559512216014958e-03, +-1.133496829442628192e-03, +-1.133432308829968732e-03, +-1.133365950587867862e-03, +-1.133297754929126063e-03, +-1.133227722069516047e-03, +-1.133155852227792082e-03, +-1.133082145625678716e-03, +-1.133006602487865140e-03, +-1.132929223042022969e-03, +-1.132850007518787809e-03, +-1.132768956151766196e-03, +-1.132686069177537983e-03, +-1.132601346835654171e-03, +-1.132514789368626934e-03, +-1.132426397021941977e-03, +-1.132336170044055288e-03, +-1.132244108686386412e-03, +-1.132150213203317584e-03, +-1.132054483852208042e-03, +-1.131956920893373861e-03, +-1.131857524590098142e-03, +-1.131756295208627113e-03, +-1.131653233018175110e-03, +-1.131548338290913960e-03, +-1.131441611301981648e-03, +-1.131333052329476464e-03, +-1.131222661654461992e-03, +-1.131110439560953666e-03, +-1.130996386335935680e-03, +-1.130880502269346463e-03, +-1.130762787654084750e-03, +-1.130643242786008714e-03, +-1.130521867963930546e-03, +-1.130398663489622308e-03, +-1.130273629667813981e-03, +-1.130146766806180460e-03, +-1.130018075215364530e-03, +-1.129887555208960613e-03, +-1.129755207103501965e-03, +-1.129621031218497546e-03, +-1.129485027876395804e-03, +-1.129347197402593133e-03, +-1.129207540125442329e-03, +-1.129066056376245002e-03, +-1.128922746489253309e-03, +-1.128777610801664100e-03, +-1.128630649653626942e-03, +-1.128481863388233926e-03, +-1.128331252351526173e-03, +-1.128178816892494050e-03, +-1.128024557363062428e-03, +-1.127868474118113445e-03, +-1.127710567515454419e-03, +-1.127550837915859260e-03, +-1.127389285683029008e-03, +-1.127225911183599855e-03, +-1.127060714787160274e-03, +-1.126893696866238014e-03, +-1.126724857796297490e-03, +-1.126554197955736318e-03, +-1.126381717725892040e-03, +-1.126207417491044502e-03, +-1.126031297638399381e-03, +-1.125853358558106393e-03, +-1.125673600643246289e-03, +-1.125492024289830202e-03, +-1.125308629896797259e-03, +-1.125123417866040606e-03, +-1.124936388602351895e-03, +-1.124747542513481347e-03, +-1.124556880010091570e-03, +-1.124364401505773816e-03, +-1.124170107417064683e-03, +-1.123973998163400141e-03, +-1.123776074167159552e-03, +-1.123576335853651575e-03, +-1.123374783651092269e-03, +-1.123171417990632840e-03, +-1.122966239306346205e-03, +-1.122759248035222219e-03, +-1.122550444617170925e-03, +-1.122339829495032316e-03, +-1.122127403114547926e-03, +-1.121913165924394440e-03, +-1.121697118376160929e-03, +-1.121479260924340606e-03, +-1.121259594026358802e-03, +-1.121038118142538053e-03, +-1.120814833736141032e-03, +-1.120589741273313308e-03, +-1.120362841223125844e-03, +-1.120134134057561553e-03, +-1.119903620251512695e-03, +-1.119671300282772423e-03, +-1.119437174632051694e-03, +-1.119201243782963224e-03, +-1.118963508222032546e-03, +-1.118723968438675026e-03, +-1.118482624925224269e-03, +-1.118239478176916287e-03, +-1.117994528691883651e-03, +-1.117747776971146807e-03, +-1.117499223518663093e-03, +-1.117248868841258427e-03, +-1.116996713448658316e-03, +-1.116742757853501737e-03, +-1.116487002571310127e-03, +-1.116229448120513185e-03, +-1.115970095022415266e-03, +-1.115708943801227253e-03, +-1.115445994984060486e-03, +-1.115181249100892285e-03, +-1.114914706684612357e-03, +-1.114646368270997417e-03, +-1.114376234398691250e-03, +-1.114104305609249805e-03, +-1.113830582447112140e-03, +-1.113555065459581345e-03, +-1.113277755196862050e-03, +-1.112998652212046982e-03, +-1.112717757061087477e-03, +-1.112435070302845086e-03, +-1.112150592499029341e-03, +-1.111864324214251317e-03, +-1.111576266015996961e-03, +-1.111286418474617113e-03, +-1.110994782163347676e-03, +-1.110701357658300291e-03, +-1.110406145538445858e-03, +-1.110109146385641204e-03, +-1.109810360784615427e-03, +-1.109509789322949075e-03, +-1.109207432591109710e-03, +-1.108903291182433692e-03, +-1.108597365693102547e-03, +-1.108289656722186546e-03, +-1.107980164871593320e-03, +-1.107668890746138978e-03, +-1.107355834953456606e-03, +-1.107040998104038762e-03, +-1.106724380811289522e-03, +-1.106405983691417577e-03, +-1.106085807363500415e-03, +-1.105763852449490612e-03, +-1.105440119574178535e-03, +-1.105114609365221183e-03, +-1.104787322453108789e-03, +-1.104458259471198436e-03, +-1.104127421055701042e-03, +-1.103794807845653609e-03, +-1.103460420482962803e-03, +-1.103124259612383706e-03, +-1.102786325881498133e-03, +-1.102446619940724822e-03, +-1.102105142443375596e-03, +-1.101761894045544124e-03, +-1.101416875406208270e-03, +-1.101070087187149427e-03, +-1.100721530053016270e-03, +-1.100371204671284206e-03, +-1.100019111712249734e-03, +-1.099665251849063193e-03, +-1.099309625757709892e-03, +-1.098952234116983223e-03, +-1.098593077608524780e-03, +-1.098232156916809392e-03, +-1.097869472729121054e-03, +-1.097505025735586327e-03, +-1.097138816629159149e-03, +-1.096770846105595042e-03, +-1.096401114863503794e-03, +-1.096029623604285064e-03, +-1.095656373032181073e-03, +-1.095281363854254050e-03, +-1.094904596780348939e-03, +-1.094526072523187288e-03, +-1.094145791798256879e-03, +-1.093763755323859648e-03, +-1.093379963821134457e-03, +-1.092994418014031285e-03, +-1.092607118629275887e-03, +-1.092218066396438746e-03, +-1.091827262047878480e-03, +-1.091434706318776971e-03, +-1.091040399947085368e-03, +-1.090644343673588491e-03, +-1.090246538241874475e-03, +-1.089846984398308962e-03, +-1.089445682892053102e-03, +-1.089042634475111690e-03, +-1.088637839902238192e-03, +-1.088231299930985047e-03, +-1.087823015321720370e-03, +-1.087412986837589133e-03, +-1.087001215244537888e-03, +-1.086587701311281804e-03, +-1.086172445809338713e-03, +-1.085755449513023472e-03, +-1.085336713199398090e-03, +-1.084916237648345452e-03, +-1.084494023642525087e-03, +-1.084070071967345840e-03, +-1.083644383411028981e-03, +-1.083216958764572201e-03, +-1.082787798821720129e-03, +-1.082356904379030461e-03, +-1.081924276235792870e-03, +-1.081489915194104893e-03, +-1.081053822058824446e-03, +-1.080615997637557465e-03, +-1.080176442740702790e-03, +-1.079735158181423325e-03, +-1.079292144775622839e-03, +-1.078847403341991066e-03, +-1.078400934701983539e-03, +-1.077952739679783212e-03, +-1.077502819102362473e-03, +-1.077051173799448234e-03, +-1.076597804603500030e-03, +-1.076142712349753821e-03, +-1.075685897876189033e-03, +-1.075227362023547855e-03, +-1.074767105635303800e-03, +-1.074305129557663000e-03, +-1.073841434639638591e-03, +-1.073376021732932745e-03, +-1.072908891692000424e-03, +-1.072440045374055666e-03, +-1.071969483639046870e-03, +-1.071497207349644864e-03, +-1.071023217371278469e-03, +-1.070547514572097640e-03, +-1.070070099823008372e-03, +-1.069590973997609600e-03, +-1.069110137972263458e-03, +-1.068627592626060800e-03, +-1.068143338840798649e-03, +-1.067657377500998844e-03, +-1.067169709493955313e-03, +-1.066680335709619580e-03, +-1.066189257040709619e-03, +-1.065696474382654127e-03, +-1.065201988633572572e-03, +-1.064705800694344803e-03, +-1.064207911468523010e-03, +-1.063708321862400679e-03, +-1.063207032784980067e-03, +-1.062704045147954421e-03, +-1.062199359865740721e-03, +-1.061692977855475343e-03, +-1.061184900036961582e-03, +-1.060675127332738827e-03, +-1.060163660668045262e-03, +-1.059650500970794667e-03, +-1.059135649171622602e-03, +-1.058619106203867108e-03, +-1.058100873003523608e-03, +-1.057580950509327952e-03, +-1.057059339662669252e-03, +-1.056536041407643220e-03, +-1.056011056691052606e-03, +-1.055484386462337588e-03, +-1.054956031673669019e-03, +-1.054425993279893775e-03, +-1.053894272238507660e-03, +-1.053360869509720231e-03, +-1.052825786056420113e-03, +-1.052289022844135526e-03, +-1.051750580841107150e-03, +-1.051210461018234777e-03, +-1.050668664349098998e-03, +-1.050125191809929978e-03, +-1.049580044379612659e-03, +-1.049033223039767641e-03, +-1.048484728774611539e-03, +-1.047934562571020082e-03, +-1.047382725418597935e-03, +-1.046829218309544259e-03, +-1.046274042238723185e-03, +-1.045717198203681159e-03, +-1.045158687204600974e-03, +-1.044598510244331910e-03, +-1.044036668328344412e-03, +-1.043473162464775197e-03, +-1.042907993664423782e-03, +-1.042341162940696756e-03, +-1.041772671309667631e-03, +-1.041202519790065560e-03, +-1.040630709403213110e-03, +-1.040057241173112344e-03, +-1.039482116126391915e-03, +-1.038905335292289716e-03, +-1.038326899702713812e-03, +-1.037746810392163946e-03, +-1.037165068397795072e-03, +-1.036581674759393936e-03, +-1.035996630519333325e-03, +-1.035409936722642100e-03, +-1.034821594416983738e-03, +-1.034231604652584551e-03, +-1.033639968482337771e-03, +-1.033046686961752812e-03, +-1.032451761148904090e-03, +-1.031855192104527740e-03, +-1.031256980891961115e-03, +-1.030657128577113944e-03, +-1.030055636228556807e-03, +-1.029452504917392113e-03, +-1.028847735717423667e-03, +-1.028241329704972576e-03, +-1.027633287958958346e-03, +-1.027023611560976511e-03, +-1.026412301595138171e-03, +-1.025799359148159111e-03, +-1.025184785309376937e-03, +-1.024568581170712690e-03, +-1.023950747826636804e-03, +-1.023331286374245218e-03, +-1.022710197913201261e-03, +-1.022087483545763625e-03, +-1.021463144376734975e-03, +-1.020837181513527649e-03, +-1.020209596066130485e-03, +-1.019580389147086699e-03, +-1.018949561871489769e-03, +-1.018317115357083398e-03, +-1.017683050724088037e-03, +-1.017047369095355498e-03, +-1.016410071596246870e-03, +-1.015771159354725110e-03, +-1.015130633501316448e-03, +-1.014488495169054219e-03, +-1.013844745493581870e-03, +-1.013199385613085734e-03, +-1.012552416668266843e-03, +-1.011903839802415521e-03, +-1.011253656161372567e-03, +-1.010601866893479171e-03, +-1.009948473149665377e-03, +-1.009293476083400433e-03, +-1.008636876850648552e-03, +-1.007978676609962371e-03, +-1.007318876522420937e-03, +-1.006657477751597175e-03, +-1.005994481463656992e-03, +-1.005329888827214855e-03, +-1.004663701013522011e-03, +-1.003995919196265909e-03, +-1.003326544551668429e-03, +-1.002655578258500628e-03, +-1.001983021498063439e-03, +-1.001308875454118719e-03, +-1.000633141312991595e-03, +-9.999558202635234084e-04, +-9.992769134970201118e-04, +-9.985964222073383505e-04, +-9.979143475908269171e-04, +-9.972306908463575426e-04, +-9.965454531752748063e-04, +-9.958586357814011233e-04, +-9.951702398711575245e-04, +-9.944802666533613441e-04, +-9.937887173393476509e-04, +-9.930955931429692480e-04, +-9.924008952805550392e-04, +-9.917046249709345323e-04, +-9.910067834353786416e-04, +-9.903073718976905439e-04, +-9.896063915841497340e-04, +-9.889038437234706075e-04, +-9.881997295468954862e-04, +-9.874940502881308663e-04, +-9.867868071833370107e-04, +-9.860780014711233946e-04, +-9.853676343926601622e-04, +-9.846557071914788500e-04, +-9.839422211136332821e-04, +-9.832271774076423252e-04, +-9.825105773244404480e-04, +-9.817924221174713969e-04, +-9.810727130425832450e-04, +-9.803514513581222840e-04, +-9.796286383248781638e-04, +-9.789042752060541849e-04, +-9.781783632673377721e-04, +-9.774509037768659963e-04, +-9.767218980051702807e-04, +-9.759913472252663893e-04, +-9.752592527126125767e-04, +-9.745256157450533181e-04, +-9.737904376029119001e-04, +-9.730537195689500886e-04, +-9.723154629282984140e-04, +-9.715756689685914804e-04, +-9.708343389798004559e-04, +-9.700914742544357100e-04, +-9.693470760873242270e-04, +-9.686011457757342895e-04, +-9.678536846193805734e-04, +-9.671046939203875028e-04, +-9.663541749832464233e-04, +-9.656021291149040732e-04, +-9.648485576247128187e-04, +-9.640934618243831656e-04, +-9.633368430280747239e-04, +-9.625787025523286624e-04, +-9.618190417161069563e-04, +-9.610578618407262510e-04, +-9.602951642498861601e-04, +-9.595309502697673852e-04, +-9.587652212288490282e-04, +-9.579979784579901233e-04, +-9.572292232905389242e-04, +-9.564589570621018612e-04, +-9.556871811107510569e-04, +-9.549138967768700447e-04, +-9.541391054032688024e-04, +-9.533628083351194590e-04, +-9.525850069199255036e-04, +-9.518057025076032086e-04, +-9.510248964504316484e-04, +-9.502425901030117162e-04, +-9.494587848223436446e-04, +-9.486734819677897093e-04, +-9.478866829010241385e-04, +-9.470983889861182229e-04, +-9.463086015894966226e-04, +-9.455173220798782779e-04, +-9.447245518284058631e-04, +-9.439302922084865169e-04, +-9.431345445959305124e-04, +-9.423373103688805668e-04, +-9.415385909077666300e-04, +-9.407383875954069326e-04, +-9.399367018169544263e-04, +-9.391335349598314060e-04, +-9.383288884138449781e-04, +-9.375227635711295970e-04, +-9.367151618260840737e-04, +-9.359060845754838985e-04, +-9.350955332184248629e-04, +-9.342835091562603925e-04, +-9.334700137927110517e-04, +-9.326550485337910344e-04, +-9.318386147878437260e-04, +-9.310207139654773020e-04, +-9.302013474795910739e-04, +-9.293805167454834756e-04, +-9.285582231806541968e-04, +-9.277344682049111935e-04, +-9.269092532403951914e-04, +-9.260825797115191868e-04, +-9.252544490449984794e-04, +-9.244248626697871380e-04, +-9.235938220171754703e-04, +-9.227613285207300663e-04, +-9.219273836162499968e-04, +-9.210919887418598379e-04, +-9.202551453379617490e-04, +-9.194168548471887440e-04, +-9.185771187144277849e-04, +-9.177359383869403446e-04, +-9.168933153141267016e-04, +-9.160492509477383355e-04, +-9.152037467417115015e-04, +-9.143568041522953833e-04, +-9.135084246379953895e-04, +-9.126586096595070167e-04, +-9.118073606798374978e-04, +-9.109546791642397735e-04, +-9.101005665801468981e-04, +-9.092450243973024693e-04, +-9.083880540876767109e-04, +-9.075296571254282000e-04, +-9.066698349870040479e-04, +-9.058085891510801605e-04, +-9.049459210985112559e-04, +-9.040818323124250825e-04, +-9.032163242781847965e-04, +-9.023493984833072133e-04, +-9.014810564176161138e-04, +-9.006112995730422089e-04, +-8.997401294438729397e-04, +-8.988675475264938956e-04, +-8.979935553195099191e-04, +-8.971181543237762230e-04, +-8.962413460423492755e-04, +-8.953631319804332411e-04, +-8.944835136454801607e-04, +-8.936024925471268508e-04, +-8.927200701972170215e-04, +-8.918362481097292854e-04, +-8.909510278008899147e-04, +-8.900644107891048616e-04, +-8.891763985949298343e-04, +-8.882869927410816813e-04, +-8.873961947525668692e-04, +-8.865040061564547760e-04, +-8.856104284819995556e-04, +-8.847154632606754826e-04, +-8.838191120260934690e-04, +-8.829213763140570086e-04, +-8.820222576624650330e-04, +-8.811217576114437500e-04, +-8.802198777032670639e-04, +-8.793166194823087613e-04, +-8.784119844951538596e-04, +-8.775059742905327951e-04, +-8.765985904192845606e-04, +-8.756898344343750284e-04, +-8.747797078910239102e-04, +-8.738682123464543063e-04, +-8.729553493601014151e-04, +-8.720411204935386981e-04, +-8.711255273104042633e-04, +-8.702085713765454972e-04, +-8.692902542598541582e-04, +-8.683705775304086235e-04, +-8.674495427604026572e-04, +-8.665271515240854537e-04, +-8.656034053978842614e-04, +-8.646783059603383543e-04, +-8.637518547920334383e-04, +-8.628240534757177687e-04, +-8.618949035962513014e-04, +-8.609644067405305577e-04, +-8.600325644976096213e-04, +-8.590993784586380133e-04, +-8.581648502168013866e-04, +-8.572289813674477269e-04, +-8.562917735079202770e-04, +-8.553532282377841354e-04, +-8.544133471585660475e-04, +-8.534721318738879795e-04, +-8.525295839894957411e-04, +-8.515857051132024987e-04, +-8.506404968548361917e-04, +-8.496939608263509884e-04, +-8.487460986417468380e-04, +-8.477969119171092612e-04, +-8.468464022705170843e-04, +-8.458945713221717845e-04, +-8.449414206943282098e-04, +-8.439869520112297432e-04, +-8.430311668992348292e-04, +-8.420740669867447662e-04, +-8.411156539041641329e-04, +-8.401559292839140157e-04, +-8.391948947605841220e-04, +-8.382325519706485028e-04, +-8.372689025527196892e-04, +-8.363039481473560303e-04, +-8.353376903972063250e-04, +-8.343701309469406507e-04, +-8.334012714431897556e-04, +-8.324311135346660565e-04, +-8.314596588720986944e-04, +-8.304869091081599174e-04, +-8.295128658976040755e-04, +-8.285375308971857635e-04, +-8.275609057656050684e-04, +-8.265829921636211938e-04, +-8.256037917540024786e-04, +-8.246233062014395520e-04, +-8.236415371727060127e-04, +-8.226584863364791011e-04, +-8.216741553634892116e-04, +-8.206885459264481181e-04, +-8.197016596999674417e-04, +-8.187134983607842736e-04, +-8.177240635874901244e-04, +-8.167333570606587516e-04, +-8.157413804628901779e-04, +-8.147481354787454227e-04, +-8.137536237946874128e-04, +-8.127578470992027383e-04, +-8.117608070827215302e-04, +-8.107625054376470589e-04, +-8.097629438582712750e-04, +-8.087621240409017696e-04, +-8.077600476837963964e-04, +-8.067567164871105798e-04, +-8.057521321529208420e-04, +-8.047462963853769169e-04, +-8.037392108904275545e-04, +-8.027308773759826103e-04, +-8.017212975519213925e-04, +-8.007104731300319477e-04, +-7.996984058240478145e-04, +-7.986850973495539154e-04, +-7.976705494241297795e-04, +-7.966547637672615053e-04, +-7.956377421002847321e-04, +-7.946194861465146354e-04, +-7.935999976311691653e-04, +-7.925792782813061632e-04, +-7.915573298259501048e-04, +-7.905341539960260722e-04, +-7.895097525242852693e-04, +-7.884841271454634233e-04, +-7.874572795960932186e-04, +-7.864292116146633484e-04, +-7.853999249415451146e-04, +-7.843694213189242315e-04, +-7.833377024909304962e-04, +-7.823047702035700263e-04, +-7.812706262046539190e-04, +-7.802352722439261871e-04, +-7.791987100730015259e-04, +-7.781609414452861665e-04, +-7.771219681161173039e-04, +-7.760817918426878535e-04, +-7.750404143839766287e-04, +-7.739978375008834321e-04, +-7.729540629561308272e-04, +-7.719090925143129271e-04, +-7.708629279418188502e-04, +-7.698155710068540786e-04, +-7.687670234795970173e-04, +-7.677172871319228476e-04, +-7.666663637375612786e-04, +-7.656142550721147617e-04, +-7.645609629130100272e-04, +-7.635064890394225147e-04, +-7.624508352324239338e-04, +-7.613940032748692894e-04, +-7.603359949514555379e-04, +-7.592768120486151177e-04, +-7.582164563546605826e-04, +-7.571549296597053459e-04, +-7.560922337556150001e-04, +-7.550283704360356146e-04, +-7.539633414965418376e-04, +-7.528971487343367889e-04, +-7.518297939485317841e-04, +-7.507612789399248322e-04, +-7.496916055111737826e-04, +-7.486207754667104563e-04, +-7.475487906126704980e-04, +-7.464756527570427791e-04, +-7.454013637095751807e-04, +-7.443259252817172392e-04, +-7.432493392867557799e-04, +-7.421716075397327347e-04, +-7.410927318573814994e-04, +-7.400127140582597480e-04, +-7.389315559626771172e-04, +-7.378492593926216968e-04, +-7.367658261718969650e-04, +-7.356812581260535914e-04, +-7.345955570823009670e-04, +-7.335087248696909755e-04, +-7.324207633189065746e-04, +-7.313316742624354850e-04, +-7.302414595344902844e-04, +-7.291501209709419463e-04, +-7.280576604094487515e-04, +-7.269640796893877665e-04, +-7.258693806517798166e-04, +-7.247735651394305407e-04, +-7.236766349968536301e-04, +-7.225785920701966684e-04, +-7.214794382073832710e-04, +-7.203791752580070498e-04, +-7.192778050733875583e-04, +-7.181753295064884340e-04, +-7.170717504119404921e-04, +-7.159670696462009949e-04, +-7.148612890672723010e-04, +-7.137544105348345722e-04, +-7.126464359103900801e-04, +-7.115373670569765437e-04, +-7.104272058393160984e-04, +-7.093159541238603987e-04, +-7.082036137786910891e-04, +-7.070901866735838795e-04, +-7.059756746798958975e-04, +-7.048600796707163918e-04, +-7.037434035207854174e-04, +-7.026256481064183752e-04, +-7.015068153056538969e-04, +-7.003869069981687352e-04, +-6.992659250652115193e-04, +-6.981438713897358947e-04, +-6.970207478563368803e-04, +-6.958965563511604465e-04, +-6.947712987620763368e-04, +-6.936449769784861635e-04, +-6.925175928914848464e-04, +-6.913891483937831999e-04, +-6.902596453796359423e-04, +-6.891290857449785222e-04, +-6.879974713873596810e-04, +-6.868648042058598125e-04, +-6.857310861012288735e-04, +-6.845963189758238251e-04, +-6.834605047335179937e-04, +-6.823236452798523170e-04, +-6.811857425219614015e-04, +-6.800467983684835337e-04, +-6.789068147297481386e-04, +-6.777657935175323764e-04, +-6.766237366453682969e-04, +-6.754806460282141095e-04, +-6.743365235825913347e-04, +-6.731913712267439650e-04, +-6.720451908803302260e-04, +-6.708979844645870504e-04, +-6.697497539023679163e-04, +-6.686005011180759516e-04, +-6.674502280375861976e-04, +-6.662989365884037932e-04, +-6.651466286995495920e-04, +-6.639933063016114452e-04, +-6.628389713266394671e-04, +-6.616836257082920779e-04, +-6.605272713817655298e-04, +-6.593699102837262535e-04, +-6.582115443523440341e-04, +-6.570521755274651588e-04, +-6.558918057502727359e-04, +-6.547304369635942832e-04, +-6.535680711116667813e-04, +-6.524047101403119891e-04, +-6.512403559968621761e-04, +-6.500750106300663385e-04, +-6.489086759902591185e-04, +-6.477413540292622498e-04, +-6.465730467003201563e-04, +-6.454037559582404644e-04, +-6.442334837593152903e-04, +-6.430622320612476225e-04, +-6.418900028232912922e-04, +-6.407167980061801750e-04, +-6.395426195720418884e-04, +-6.383674694845798293e-04, +-6.371913497088572010e-04, +-6.360142622114792676e-04, +-6.348362089605111714e-04, +-6.336571919253718979e-04, +-6.324772130771158431e-04, +-6.312962743880877123e-04, +-6.301143778321093274e-04, +-6.289315253844963245e-04, +-6.277477190220049187e-04, +-6.265629607227490719e-04, +-6.253772524663558582e-04, +-6.241905962338828483e-04, +-6.230029940077339750e-04, +-6.218144477718159837e-04, +-6.206249595114315303e-04, +-6.194345312133288373e-04, +-6.182431648656092115e-04, +-6.170508624577658585e-04, +-6.158576259808542109e-04, +-6.146634574271740399e-04, +-6.134683587904557218e-04, +-6.122723320658765003e-04, +-6.110753792499818825e-04, +-6.098775023407336689e-04, +-6.086787033374022916e-04, +-6.074789842407217477e-04, +-6.062783470528057897e-04, +-6.050767937770696464e-04, +-6.038743264183747640e-04, +-6.026709469829573569e-04, +-6.014666574783679096e-04, +-6.002614599134960044e-04, +-5.990553562987454205e-04, +-5.978483486456955378e-04, +-5.966404389673871317e-04, +-5.954316292782071236e-04, +-5.942219215938121437e-04, +-5.930113179313076417e-04, +-5.917998203090351662e-04, +-5.905874307467534265e-04, +-5.893741512655522067e-04, +-5.881599838877724605e-04, +-5.869449306371625442e-04, +-5.857289935387950588e-04, +-5.845121746189840166e-04, +-5.832944759054356542e-04, +-5.820758994271731882e-04, +-5.808564472144526819e-04, +-5.796361212989089781e-04, +-5.784149237134872867e-04, +-5.771928564923502680e-04, +-5.759699216710647326e-04, +-5.747461212863540095e-04, +-5.735214573764253754e-04, +-5.722959319806045697e-04, +-5.710695471395306260e-04, +-5.698423048951756047e-04, +-5.686142072907895148e-04, +-5.673852563708091335e-04, +-5.661554541810286589e-04, +-5.649248027685038667e-04, +-5.636933041814727466e-04, +-5.624609604695154225e-04, +-5.612277736834374916e-04, +-5.599937458753305236e-04, +-5.587588790984710126e-04, +-5.575231754073641790e-04, +-5.562866368579153821e-04, +-5.550492655071046421e-04, +-5.538110634131511141e-04, +-5.525720326356657434e-04, +-5.513321752352991168e-04, +-5.500914932740644464e-04, +-5.488499888150853842e-04, +-5.476076639227874920e-04, +-5.463645206628089035e-04, +-5.451205611019204183e-04, +-5.438757873081813020e-04, +-5.426302013508551517e-04, +-5.413838053003241363e-04, +-5.401366012282519512e-04, +-5.388885912074953483e-04, +-5.376397773120226032e-04, +-5.363901616170656294e-04, +-5.351397461990461436e-04, +-5.338885331354830755e-04, +-5.326365245051778571e-04, +-5.313837223880011609e-04, +-5.301301288650753707e-04, +-5.288757460186867612e-04, +-5.276205759322047254e-04, +-5.263646206902407179e-04, +-5.251078823785618448e-04, +-5.238503630840064037e-04, +-5.225920648946456469e-04, +-5.213329898996935758e-04, +-5.200731401894271438e-04, +-5.188125178553459589e-04, +-5.175511249900815363e-04, +-5.162889636873183681e-04, +-5.150260360419488563e-04, +-5.137623441499666269e-04, +-5.124978901085132594e-04, +-5.112326760157936099e-04, +-5.099667039710971709e-04, +-5.086999760749961541e-04, +-5.074324944290009316e-04, +-5.061642611357528064e-04, +-5.048952782990514436e-04, +-5.036255480237655313e-04, +-5.023550724158874249e-04, +-5.010838535824139930e-04, +-4.998118936315141267e-04, +-4.985391946724385343e-04, +-4.972657588154348477e-04, +-4.959915881719143731e-04, +-4.947166848543549465e-04, +-4.934410509762534452e-04, +-4.921646886521410759e-04, +-4.908875999977835173e-04, +-4.896097871298065460e-04, +-4.883312521660321389e-04, +-4.870519972252207040e-04, +-4.857720244272685137e-04, +-4.844913358931153308e-04, +-4.832099337446576180e-04, +-4.819278201049132285e-04, +-4.806449970979383016e-04, +-4.793614668487299556e-04, +-4.780772314834031214e-04, +-4.767922931290919882e-04, +-4.755066539138695018e-04, +-4.742203159669077721e-04, +-4.729332814183951858e-04, +-4.716455523994428399e-04, +-4.703571310422536233e-04, +-4.690680194800341245e-04, +-4.677782198469036682e-04, +-4.664877342780944037e-04, +-4.651965649096817187e-04, +-4.639047138789362257e-04, +-4.626121833239385983e-04, +-4.613189753837813423e-04, +-4.600250921985907498e-04, +-4.587305359094705215e-04, +-4.574353086584059228e-04, +-4.561394125884370935e-04, +-4.548428498435418458e-04, +-4.535456225686832063e-04, +-4.522477329096968759e-04, +-4.509491830134587935e-04, +-4.496499750277938457e-04, +-4.483501111014143929e-04, +-4.470495933839513858e-04, +-4.457484240261404686e-04, +-4.444466051794864728e-04, +-4.431441389964520142e-04, +-4.418410276304869828e-04, +-4.405372732359356816e-04, +-4.392328779680941802e-04, +-4.379278439830899144e-04, +-4.366221734380515808e-04, +-4.353158684910163291e-04, +-4.340089313008444892e-04, +-4.327013640273848043e-04, +-4.313931688313886155e-04, +-4.300843478744410700e-04, +-4.287749033189966821e-04, +-4.274648373285711293e-04, +-4.261541520673602632e-04, +-4.248428497005621719e-04, +-4.235309323942504909e-04, +-4.222184023152910281e-04, +-4.209052616315329628e-04, +-4.195915125115779105e-04, +-4.182771571249802836e-04, +-4.169621976421565980e-04, +-4.156466362342893582e-04, +-4.143304750735061137e-04, +-4.130137163327813926e-04, +-4.116963621858496947e-04, +-4.103784148073771746e-04, +-4.090598763728683462e-04, +-4.077407490585743593e-04, +-4.064210350416693450e-04, +-4.051007365001539759e-04, +-4.037798556127645015e-04, +-4.024583945591793431e-04, +-4.011363555197462543e-04, +-3.998137406758310000e-04, +-3.984905522094372358e-04, +-3.971667923034029649e-04, +-3.958424631414276976e-04, +-3.945175669080120610e-04, +-3.931921057883647208e-04, +-3.918660819685737388e-04, +-3.905394976354887747e-04, +-3.892123549767726939e-04, +-3.878846561807823600e-04, +-3.865564034367428110e-04, +-3.852275989346499530e-04, +-3.838982448651868050e-04, +-3.825683434198891113e-04, +-3.812378967910567615e-04, +-3.799069071716917748e-04, +-3.785753767555239411e-04, +-3.772433077372114524e-04, +-3.759107023119556863e-04, +-3.745775626758511318e-04, +-3.732438910256169408e-04, +-3.719096895588004333e-04, +-3.705749604736808742e-04, +-3.692397059691828994e-04, +-3.679039282450468447e-04, +-3.665676295017359374e-04, +-3.652308119403464164e-04, +-3.638934777627796492e-04, +-3.625556291716495951e-04, +-3.612172683701930873e-04, +-3.598783975624399991e-04, +-3.585390189531210319e-04, +-3.571991347475817922e-04, +-3.558587471519746416e-04, +-3.545178583730316645e-04, +-3.531764706182568972e-04, +-3.518345860958406218e-04, +-3.504922070145351167e-04, +-3.491493355839769895e-04, +-3.478059740142963228e-04, +-3.464621245163266835e-04, +-3.451177893016238798e-04, +-3.437729705824069809e-04, +-3.424276705714640991e-04, +-3.410818914823286817e-04, +-3.397356355291559658e-04, +-3.383889049267776766e-04, +-3.370417018905826566e-04, +-3.356940286366876273e-04, +-3.343458873818474174e-04, +-3.329972803433888266e-04, +-3.316482097392410913e-04, +-3.302986777881372757e-04, +-3.289486867092536113e-04, +-3.275982387224147369e-04, +-3.262473360481212372e-04, +-3.248959809074551544e-04, +-3.235441755221348491e-04, +-3.221919221143947076e-04, +-3.208392229071577477e-04, +-3.194860801239457915e-04, +-3.181324959887834062e-04, +-3.167784727263747908e-04, +-3.154240125620091256e-04, +-3.140691177214680898e-04, +-3.127137904312036706e-04, +-3.113580329182416692e-04, +-3.100018474100883509e-04, +-3.086452361349386665e-04, +-3.072882013214333361e-04, +-3.059307451988594814e-04, +-3.045728699970633472e-04, +-3.032145779463551625e-04, +-3.018558712776832093e-04, +-3.004967522225417196e-04, +-2.991372230128766583e-04, +-2.977772858812628275e-04, +-2.964169430608104626e-04, +-2.950561967850702559e-04, +-2.936950492882100280e-04, +-2.923335028049227325e-04, +-2.909715595703294745e-04, +-2.896092218201585665e-04, +-2.882464917906223632e-04, +-2.868833717184714714e-04, +-2.855198638409025928e-04, +-2.841559703955812382e-04, +-2.827916936208558032e-04, +-2.814270357553860119e-04, +-2.800619990383528186e-04, +-2.786965857094854588e-04, +-2.773307980089953668e-04, +-2.759646381774847777e-04, +-2.745981084561214462e-04, +-2.732312110865156443e-04, +-2.718639483107773529e-04, +-2.704963223713897349e-04, +-2.691283355113899809e-04, +-2.677599899742706463e-04, +-2.663912880039202911e-04, +-2.650222318446456525e-04, +-2.636528237413837141e-04, +-2.622830659393005515e-04, +-2.609129606841551906e-04, +-2.595425102220193952e-04, +-2.581717167994900626e-04, +-2.568005826635903440e-04, +-2.554291100616768915e-04, +-2.540573012416216239e-04, +-2.526851584517105171e-04, +-2.513126839405530185e-04, +-2.499398799572605614e-04, +-2.485667487513508293e-04, +-2.471932925726506121e-04, +-2.458195136714804991e-04, +-2.444454142985543203e-04, +-2.430709967048858228e-04, +-2.416962631419693804e-04, +-2.403212158616828496e-04, +-2.389458571161923487e-04, +-2.375701891581655483e-04, +-2.361942142405175338e-04, +-2.348179346166280796e-04, +-2.334413525402398155e-04, +-2.320644702653686174e-04, +-2.306872900464773505e-04, +-2.293098141383872362e-04, +-2.279320447961761262e-04, +-2.265539842753615436e-04, +-2.251756348318054081e-04, +-2.237969987216181659e-04, +-2.224180782013370048e-04, +-2.210388755278020118e-04, +-2.196593929582133647e-04, +-2.182796327500341330e-04, +-2.168995971610194432e-04, +-2.155192884494255671e-04, +-2.141387088736385828e-04, +-2.127578606923566558e-04, +-2.113767461647674147e-04, +-2.099953675501780215e-04, +-2.086137271082253710e-04, +-2.072318270989043890e-04, +-2.058496697824713478e-04, +-2.044672574195005436e-04, +-2.030845922707590436e-04, +-2.017016765973882631e-04, +-2.003185126608063597e-04, +-1.989351027226122007e-04, +-1.975514490447670749e-04, +-1.961675538894992559e-04, +-1.947834195192069660e-04, +-1.933990481966392212e-04, +-1.920144421848000418e-04, +-1.906296037468532866e-04, +-1.892445351463336656e-04, +-1.878592386468959103e-04, +-1.864737165125284694e-04, +-1.850879710074566627e-04, +-1.837020043960450215e-04, +-1.823158189429811425e-04, +-1.809294169131778381e-04, +-1.795428005716772659e-04, +-1.781559721838322889e-04, +-1.767689340152103609e-04, +-1.753816883314974931e-04, +-1.739942373986789635e-04, +-1.726065834829438803e-04, +-1.712187288505880912e-04, +-1.698306757682273922e-04, +-1.684424265025153637e-04, +-1.670539833205107792e-04, +-1.656653484892705967e-04, +-1.642765242760355461e-04, +-1.628875129484073968e-04, +-1.614983167739767237e-04, +-1.601089380205361157e-04, +-1.587193789561050581e-04, +-1.573296418488666424e-04, +-1.559397289670709909e-04, +-1.545496425792149088e-04, +-1.531593849539166863e-04, +-1.517689583599738865e-04, +-1.503783650662351382e-04, +-1.489876073417829329e-04, +-1.475966874558361274e-04, +-1.462056076776851359e-04, +-1.448143702767191435e-04, +-1.434229775226392330e-04, +-1.420314316850504000e-04, +-1.406397350338330001e-04, +-1.392478898388567368e-04, +-1.378558983701956857e-04, +-1.364637628980318004e-04, +-1.350714856925563315e-04, +-1.336790690241558761e-04, +-1.322865151633107329e-04, +-1.308938263805021769e-04, +-1.295010049463934118e-04, +-1.281080531317321824e-04, +-1.267149732072553369e-04, +-1.253217674438696452e-04, +-1.239284381125568498e-04, +-1.225349874842760877e-04, +-1.211414178301767461e-04, +-1.197477314213469412e-04, +-1.183539305290277975e-04, +-1.169600174245162349e-04, +-1.155659943790357188e-04, +-1.141718636640767402e-04, +-1.127776275509871358e-04, +-1.113832883111866794e-04, +-1.099888482161950404e-04, +-1.085943095375640756e-04, +-1.071996745467840046e-04, +-1.058049455154625205e-04, +-1.044101247152307352e-04, +-1.030152144176451132e-04, +-1.016202168943699022e-04, +-1.002251344170503223e-04, +-9.882996925736937802e-05, +-9.743472368695217732e-05, +-9.603939997739306407e-05, +-9.464400040046965293e-05, +-9.324852722776507980e-05, +-9.185298273088352765e-05, +-9.045736918147659973e-05, +-8.906168885114589050e-05, +-8.766594401150307745e-05, +-8.627013693404065719e-05, +-8.487426989031468766e-05, +-8.347834515184848390e-05, +-8.208236499003535155e-05, +-8.068633167632183060e-05, +-7.929024748210983253e-05, +-7.789411467869168312e-05, +-7.649793553727680733e-05, +-7.510171232920661818e-05, +-7.370544732554516266e-05, +-7.230914279741929018e-05, +-7.091280101588919884e-05, +-6.951642425185165677e-05, +-6.812001477625472846e-05, +-6.672357485984435599e-05, +-6.532710677337909885e-05, +-6.393061278753315202e-05, +-6.253409517279799536e-05, +-6.113755619966784629e-05, +-5.974099813854020466e-05, +-5.834442325962021250e-05, +-5.694783383310306429e-05, +-5.555123212907765528e-05, +-5.415462041742848825e-05, +-5.275800096801990663e-05, +-5.136137605059787250e-05, +-4.996474793469406894e-05, +-4.856811888983904063e-05, +-4.717149118527897312e-05, +-4.577486709034563615e-05, +-4.437824887404749039e-05, +-4.298163880528450853e-05, +-4.158503915287519223e-05, +-4.018845218549065267e-05, +-3.879188017155825880e-05, +-3.739532537944328868e-05, +-3.599879007735356032e-05, +-3.460227653324106747e-05, +-3.320578701498562988e-05, +-3.180932379026669998e-05, +-3.041288912662176068e-05, +-2.901648529134951294e-05, +-2.762011455153702821e-05, +-2.622377917427432223e-05, +-2.482748142627666643e-05, +-2.343122357406823822e-05, +-2.203500788416469725e-05, +-2.063883662266541356e-05, +-1.924271205562269268e-05, +-1.784663644875841935e-05, +-1.645061206767816712e-05, +-1.505464117777403354e-05, +-1.365872604412767350e-05, +-1.226286893169343792e-05, +-1.086707210520125972e-05, +-9.471337829059600798e-06, +-8.075668367538541592e-06, +-6.680065984672785628e-06, +-5.284532944164575158e-06, +-3.889071509566806123e-06, +-2.493683944185934042e-06, +-1.098372510985011392e-06, + 2.968605272021780082e-07, + 1.692012907923725618e-06, + 3.087082368895415939e-06, + 4.482066648097761971e-06, + 5.876963483873008489e-06, + 7.271770614742103256e-06, + 8.666485779501678269e-06, + 1.006110671732109730e-05, + 1.145563116755938070e-05, + 1.285005686986220854e-05, + 1.424438156425904637e-05, + 1.563860299097985588e-05, + 1.703271889055238164e-05, + 1.842672700389893481e-05, + 1.982062507212238516e-05, + 2.121441083678966811e-05, + 2.260808203956237331e-05, + 2.400163642260464184e-05, + 2.539507172839992926e-05, + 2.678838569956871395e-05, + 2.818157607924462717e-05, + 2.957464061086070942e-05, + 3.096757703812234598e-05, + 3.236038310510335435e-05, + 3.375305655618834877e-05, + 3.514559513619998826e-05, + 3.653799659021666124e-05, + 3.793025866366899309e-05, + 3.932237910243715329e-05, + 4.071435565266740843e-05, + 4.210618606086958518e-05, + 4.349786807398267131e-05, + 4.488939943934722952e-05, + 4.628077790449165377e-05, + 4.767200121753992415e-05, + 4.906306712684172454e-05, + 5.045397338125691015e-05, + 5.184471772994030017e-05, + 5.323529792243943213e-05, + 5.462571170879111014e-05, + 5.601595683933860838e-05, + 5.740603106482878849e-05, + 5.879593213650828192e-05, + 6.018565780594137775e-05, + 6.157520582510636771e-05, + 6.296457394649325305e-05, + 6.435375992291967413e-05, + 6.574276150762858352e-05, + 6.713157645438507198e-05, + 6.852020251729334162e-05, + 6.990863745089326764e-05, + 7.129687901025808492e-05, + 7.268492495077996001e-05, + 7.407277302845249347e-05, + 7.546042099950360906e-05, + 7.684786662080061168e-05, + 7.823510764963825294e-05, + 7.962214184370985069e-05, + 8.100896696117448252e-05, + 8.239558076075236838e-05, + 8.378198100154298216e-05, + 8.516816544315291974e-05, + 8.655413184563653895e-05, + 8.793987796962519650e-05, + 8.932540157614302838e-05, + 9.071070042670532777e-05, + 9.209577228338249933e-05, + 9.348061490877374025e-05, + 9.486522606579358789e-05, + 9.624960351804702670e-05, + 9.763374502961585965e-05, + 9.901764836503305336e-05, + 1.004013112893774025e-04, + 1.017847315682156740e-04, + 1.031679069677302990e-04, + 1.045508352545377147e-04, + 1.059335141957840727e-04, + 1.073159415592411087e-04, + 1.086981151131258678e-04, + 1.100800326261960324e-04, + 1.114616918678148388e-04, + 1.128430906079247583e-04, + 1.142242266168344924e-04, + 1.156050976656238405e-04, + 1.169857015258077873e-04, + 1.183660359694635304e-04, + 1.197460987693272998e-04, + 1.211258876985804990e-04, + 1.225054005311017411e-04, + 1.238846350412526785e-04, + 1.252635890039770987e-04, + 1.266422601948929462e-04, + 1.280206463901142151e-04, + 1.293987453663459795e-04, + 1.307765549009797489e-04, + 1.321540727719128943e-04, + 1.335312967576447090e-04, + 1.349082246373723597e-04, + 1.362848541908086059e-04, + 1.376611831982791604e-04, + 1.390372094408182080e-04, + 1.404129306999566068e-04, + 1.417883447580017473e-04, + 1.431634493976720681e-04, + 1.445382424025014908e-04, + 1.459127215566267532e-04, + 1.472868846447610090e-04, + 1.486607294522575252e-04, + 1.500342537652069887e-04, + 1.514074553702551439e-04, + 1.527803320547314056e-04, + 1.541528816065885512e-04, + 1.555251018145307367e-04, + 1.568969904678325174e-04, + 1.582685453564336604e-04, + 1.596397642710055799e-04, + 1.610106450029226053e-04, + 1.623811853440522424e-04, + 1.637513830871257267e-04, + 1.651212360255579104e-04, + 1.664907419532669322e-04, + 1.678598986650759687e-04, + 1.692287039563505143e-04, + 1.705971556232746902e-04, + 1.719652514626430779e-04, + 1.733329892719545563e-04, + 1.747003668495093385e-04, + 1.760673819942266082e-04, + 1.774340325057420444e-04, + 1.788003161845012521e-04, + 1.801662308315814384e-04, + 1.815317742487854939e-04, + 1.828969442387379176e-04, + 1.842617386047047038e-04, + 1.856261551506881017e-04, + 1.869901916815225936e-04, + 1.883538460026648045e-04, + 1.897171159204393172e-04, + 1.910799992418317256e-04, + 1.924424937745803309e-04, + 1.938045973272740181e-04, + 1.951663077091714651e-04, + 1.965276227302944383e-04, + 1.978885402015271059e-04, + 1.992490579344331054e-04, + 2.006091737413506282e-04, + 2.019688854354897815e-04, + 2.033281908307499536e-04, + 2.046870877418485095e-04, + 2.060455739842611319e-04, + 2.074036473743478062e-04, + 2.087613057291740895e-04, + 2.101185468666042432e-04, + 2.114753686053687796e-04, + 2.128317687650342659e-04, + 2.141877451657952939e-04, + 2.155432956288439209e-04, + 2.168984179761576008e-04, + 2.182531100304755203e-04, + 2.196073696153912449e-04, + 2.209611945552950117e-04, + 2.223145826755002559e-04, + 2.236675318020656664e-04, + 2.250200397618853368e-04, + 2.263721043827888644e-04, + 2.277237234933584729e-04, + 2.290748949230265628e-04, + 2.304256165021681944e-04, + 2.317758860619230615e-04, + 2.331257014342904947e-04, + 2.344750604522238412e-04, + 2.358239609494204277e-04, + 2.371724007605699512e-04, + 2.385203777211423277e-04, + 2.398678896674862732e-04, + 2.412149344369190487e-04, + 2.425615098675540718e-04, + 2.439076137983886561e-04, + 2.452532440694024565e-04, + 2.465983985213789824e-04, + 2.479430749959982160e-04, + 2.492872713359319675e-04, + 2.506309853846660661e-04, + 2.519742149865933844e-04, + 2.533169579871094113e-04, + 2.546592122324333580e-04, + 2.560009755697329500e-04, + 2.573422458470664767e-04, + 2.586830209134791223e-04, + 2.600232986189726083e-04, + 2.613630768143017434e-04, + 2.627023533513371425e-04, + 2.640411260828558139e-04, + 2.653793928625200168e-04, + 2.667171515449348325e-04, + 2.680543999857469897e-04, + 2.693911360414643990e-04, + 2.707273575695796431e-04, + 2.720630624285173935e-04, + 2.733982484777532931e-04, + 2.747329135776407547e-04, + 2.760670555894993239e-04, + 2.774006723756869408e-04, + 2.787337617995624267e-04, + 2.800663217252889184e-04, + 2.813983500182206028e-04, + 2.827298445445486710e-04, + 2.840608031715749710e-04, + 2.853912237675047077e-04, + 2.867211042015398474e-04, + 2.880504423439718712e-04, + 2.893792360660078149e-04, + 2.907074832398612329e-04, + 2.920351817388452779e-04, + 2.933623294371986317e-04, + 2.946889242101763612e-04, + 2.960149639341428892e-04, + 2.973404464863997686e-04, + 2.986653697452751831e-04, + 2.999897315902154003e-04, + 3.013135299016162318e-04, + 3.026367625609057582e-04, + 3.039594274506468943e-04, + 3.052815224543251570e-04, + 3.066030454565953751e-04, + 3.079239943430718421e-04, + 3.092443670004242683e-04, + 3.105641613164716180e-04, + 3.118833751800012110e-04, + 3.132020064808688480e-04, + 3.145200531100848427e-04, + 3.158375129596434762e-04, + 3.171543839226120647e-04, + 3.184706638932275073e-04, + 3.197863507667179353e-04, + 3.211014424394255514e-04, + 3.224159368087521496e-04, + 3.237298317732500248e-04, + 3.250431252325949763e-04, + 3.263558150873865980e-04, + 3.276678992395000477e-04, + 3.289793755918882885e-04, + 3.302902420485515143e-04, + 3.316004965146045875e-04, + 3.329101368963631783e-04, + 3.342191611011736539e-04, + 3.355275670375341837e-04, + 3.368353526150383065e-04, + 3.381425157444972827e-04, + 3.394490543377618515e-04, + 3.407549663078218694e-04, + 3.420602495688931000e-04, + 3.433649020362434709e-04, + 3.446689216262875080e-04, + 3.459723062566731795e-04, + 3.472750538461168266e-04, + 3.485771623144868635e-04, + 3.498786295828962604e-04, + 3.511794535735057060e-04, + 3.524796322097566029e-04, + 3.537791634161703276e-04, + 3.550780451184404416e-04, + 3.563762752435230058e-04, + 3.576738517194634330e-04, + 3.589707724754907596e-04, + 3.602670354421035146e-04, + 3.615626385509042697e-04, + 3.628575797346822560e-04, + 3.641518569275140863e-04, + 3.654454680645819343e-04, + 3.667384110822733355e-04, + 3.680306839182640203e-04, + 3.693222845113238958e-04, + 3.706132108015775797e-04, + 3.719034607301616299e-04, + 3.731930322396033103e-04, + 3.744819232736516725e-04, + 3.757701317771057091e-04, + 3.770576556961657442e-04, + 3.783444929782334523e-04, + 3.796306415718876258e-04, + 3.809160994269420179e-04, + 3.822008644945408605e-04, + 3.834849347269812716e-04, + 3.847683080778398906e-04, + 3.860509825019135723e-04, + 3.873329559553387032e-04, + 3.886142263954214695e-04, + 3.898947917807292561e-04, + 3.911746500711506020e-04, + 3.924537992278672826e-04, + 3.937322372131603463e-04, + 3.950099619907829706e-04, + 3.962869715256231678e-04, + 3.975632637839611200e-04, + 3.988388367332744563e-04, + 4.001136883423276995e-04, + 4.013878165812592735e-04, + 4.026612194214132349e-04, + 4.039338948354301837e-04, + 4.052058407973368722e-04, + 4.064770552823731664e-04, + 4.077475362670870225e-04, + 4.090172817294185663e-04, + 4.102862896485343731e-04, + 4.115545580049166435e-04, + 4.128220847804501561e-04, + 4.140888679582272196e-04, + 4.153549055227792044e-04, + 4.166201954598782961e-04, + 4.178847357566296524e-04, + 4.191485244015854617e-04, + 4.204115593844345356e-04, + 4.216738386963786900e-04, + 4.229353603299332515e-04, + 4.241961222789056990e-04, + 4.254561225384522589e-04, + 4.267153591051662674e-04, + 4.279738299769142939e-04, + 4.292315331529211416e-04, + 4.304884666338614093e-04, + 4.317446284216875361e-04, + 4.330000165197515037e-04, + 4.342546289327479697e-04, + 4.355084636668051239e-04, + 4.367615187294561193e-04, + 4.380137921294480360e-04, + 4.392652818770809652e-04, + 4.405159859840145878e-04, + 4.417659024632437253e-04, + 4.430150293291872988e-04, + 4.442633645976308662e-04, + 4.455109062858472399e-04, + 4.467576524124269172e-04, + 4.480036009973668225e-04, + 4.492487500621619224e-04, + 4.504930976296315907e-04, + 4.517366417240152891e-04, + 4.529793803710243922e-04, + 4.542213115978216420e-04, + 4.554624334328309242e-04, + 4.567027439060973863e-04, + 4.579422410489586534e-04, + 4.591809228942989106e-04, + 4.604187874763597641e-04, + 4.616558328308198217e-04, + 4.628920569948876090e-04, + 4.641274580071362284e-04, + 4.653620339075887941e-04, + 4.665957827378048434e-04, + 4.678287025407191157e-04, + 4.690607913607227047e-04, + 4.702920472437588481e-04, + 4.715224682371457689e-04, + 4.727520523896781564e-04, + 4.739807977517024101e-04, + 4.752087023749581294e-04, + 4.764357643126617054e-04, + 4.776619816195961472e-04, + 4.788873523519177142e-04, + 4.801118745674082104e-04, + 4.813355463251467957e-04, + 4.825583656858714056e-04, + 4.837803307117929724e-04, + 4.850014394665600804e-04, + 4.862216900153317162e-04, + 4.874410804248511023e-04, + 4.886596087632881632e-04, + 4.898772731003265320e-04, + 4.910940715072464923e-04, + 4.923100020567666843e-04, + 4.935250628231500859e-04, + 4.947392518821593435e-04, + 4.959525673111381955e-04, + 4.971650071889901134e-04, + 4.983765695959847721e-04, + 4.995872526140950195e-04, + 5.007970543268320781e-04, + 5.020059728190855164e-04, + 5.032140061774817950e-04, + 5.044211524900598731e-04, + 5.056274098465194907e-04, + 5.068327763380329511e-04, + 5.080372500573299057e-04, + 5.092408290987819218e-04, + 5.104435115582438634e-04, + 5.116452955331362911e-04, + 5.128461791225306802e-04, + 5.140461604269905846e-04, + 5.152452375486564224e-04, + 5.164434085913233207e-04, + 5.176406716602927971e-04, + 5.188370248624477868e-04, + 5.200324663063421969e-04, + 5.212269941020091120e-04, + 5.224206063611845727e-04, + 5.236133011971231535e-04, + 5.248050767246739646e-04, + 5.259959310603725931e-04, + 5.271858623222783636e-04, + 5.283748686300607494e-04, + 5.295629481050770013e-04, + 5.307500988702237204e-04, + 5.319363190500093911e-04, + 5.331216067706479479e-04, + 5.343059601598939765e-04, + 5.354893773471264143e-04, + 5.366718564634360457e-04, + 5.378533956414384767e-04, + 5.390339930155165632e-04, + 5.402136467215072927e-04, + 5.413923548970445013e-04, + 5.425701156814063258e-04, + 5.437469272153629823e-04, + 5.449227876414878234e-04, + 5.460976951039834323e-04, + 5.472716477486531082e-04, + 5.484446437229864102e-04, + 5.496166811761076573e-04, + 5.507877582588843485e-04, + 5.519578731237714721e-04, + 5.531270239248950969e-04, + 5.542952088181311941e-04, + 5.554624259609569929e-04, + 5.566286735125223215e-04, + 5.577939496337183450e-04, + 5.589582524871395102e-04, + 5.601215802369171205e-04, + 5.612839310490516436e-04, + 5.624453030911066419e-04, + 5.636056945324491394e-04, + 5.647651035440645487e-04, + 5.659235282986378778e-04, + 5.670809669706435019e-04, + 5.682374177361785217e-04, + 5.693928787730530771e-04, + 5.705473482608699283e-04, + 5.717008243808698476e-04, + 5.728533053160092493e-04, + 5.740047892510496356e-04, + 5.751552743723942077e-04, + 5.763047588681778546e-04, + 5.774532409283404449e-04, + 5.786007187444803515e-04, + 5.797471905099282853e-04, + 5.808926544198377180e-04, + 5.820371086709931951e-04, + 5.831805514620585097e-04, + 5.843229809932610911e-04, + 5.854643954667355888e-04, + 5.866047930863403171e-04, + 5.877441720576437019e-04, + 5.888825305879687340e-04, + 5.900198668864768854e-04, + 5.911561791640200080e-04, + 5.922914656332382366e-04, + 5.934257245085217168e-04, + 5.945589540061050390e-04, + 5.956911523439245570e-04, + 5.968223177416950419e-04, + 5.979524484209600968e-04, + 5.990815426050777369e-04, + 6.002095985190344495e-04, + 6.013366143897640572e-04, + 6.024625884459660057e-04, + 6.035875189180799939e-04, + 6.047114040383730349e-04, + 6.058342420408866554e-04, + 6.069560311615401120e-04, + 6.080767696379854332e-04, + 6.091964557096811450e-04, + 6.103150876179742369e-04, + 6.114326636059520597e-04, + 6.125491819185146418e-04, + 6.136646408024361635e-04, + 6.147790385063382854e-04, + 6.158923732805148335e-04, + 6.170046433772667085e-04, + 6.181158470506221622e-04, + 6.192259825564463017e-04, + 6.203350481525115624e-04, + 6.214430420983360539e-04, + 6.225499626553709096e-04, + 6.236558080868430777e-04, + 6.247605766578244934e-04, + 6.258642666353111169e-04, + 6.269668762880807947e-04, + 6.280684038867613474e-04, + 6.291688477039177399e-04, + 6.302682060138967146e-04, + 6.313664770929119019e-04, + 6.324636592191172201e-04, + 6.335597506724575815e-04, + 6.346547497347558445e-04, + 6.357486546897760235e-04, + 6.368414638230658620e-04, + 6.379331754221731314e-04, + 6.390237877763560405e-04, + 6.401132991769042675e-04, + 6.412017079169721016e-04, + 6.422890122915569759e-04, + 6.433752105975441360e-04, + 6.444603011337908830e-04, + 6.455442822009779293e-04, + 6.466271521017136984e-04, + 6.477089091404829345e-04, + 6.487895516237528453e-04, + 6.498690778598232654e-04, + 6.509474861589066704e-04, + 6.520247748331780505e-04, + 6.531009421967546354e-04, + 6.541759865655262171e-04, + 6.552499062574503779e-04, + 6.563226995924072073e-04, + 6.573943648920647529e-04, + 6.584649004801821628e-04, + 6.595343046823362500e-04, + 6.606025758261324784e-04, + 6.616697122410454763e-04, + 6.627357122584836549e-04, + 6.638005742118741016e-04, + 6.648642964365190314e-04, + 6.659268772696668023e-04, + 6.669883150505874839e-04, + 6.680486081204344050e-04, + 6.691077548223146269e-04, + 6.701657535013667887e-04, + 6.712226025046209204e-04, + 6.722783001810656630e-04, + 6.733328448817304515e-04, + 6.743862349595178968e-04, + 6.754384687693965571e-04, + 6.764895446682386328e-04, + 6.775394610148908732e-04, + 6.785882161702504710e-04, + 6.796358084971248744e-04, + 6.806822363603085490e-04, + 6.817274981266498732e-04, + 6.827715921649170220e-04, + 6.838145168458673560e-04, + 6.848562705423287371e-04, + 6.858968516290500162e-04, + 6.869362584828033825e-04, + 6.879744894823411035e-04, + 6.890115430084886583e-04, + 6.900474174440111635e-04, + 6.910821111736781003e-04, + 6.921156225843193678e-04, + 6.931479500648062009e-04, + 6.941790920058811673e-04, + 6.952090468004473245e-04, + 6.962378128434113357e-04, + 6.972653885316481247e-04, + 6.982917722640941171e-04, + 6.993169624416831643e-04, + 7.003409574674514942e-04, + 7.013637557464044627e-04, + 7.023853556855808467e-04, + 7.034057556941277628e-04, + 7.044249541831653586e-04, + 7.054429495658604303e-04, + 7.064597402574894144e-04, + 7.074753246753154399e-04, + 7.084897012386489343e-04, + 7.095028683689256870e-04, + 7.105148244895422667e-04, + 7.115255680260495520e-04, + 7.125350974059922694e-04, + 7.135434110589715514e-04, + 7.145505074167323237e-04, + 7.155563849130136848e-04, + 7.165610419836270775e-04, + 7.175644770665260026e-04, + 7.185666886016722288e-04, + 7.195676750311066992e-04, + 7.205674347990136076e-04, + 7.215659663515984262e-04, + 7.225632681371507889e-04, + 7.235593386061145308e-04, + 7.245541762109557410e-04, + 7.255477794062591482e-04, + 7.265401466486764038e-04, + 7.275312763970070724e-04, + 7.285211671121693579e-04, + 7.295098172570521101e-04, + 7.304972252967827312e-04, + 7.314833896985673640e-04, + 7.324683089316856880e-04, + 7.334519814675239877e-04, + 7.344344057796505041e-04, + 7.354155803436811028e-04, + 7.363955036373791285e-04, + 7.373741741405980508e-04, + 7.383515903353882583e-04, + 7.393277507058574130e-04, + 7.403026537382396228e-04, + 7.412762979209453146e-04, + 7.422486817445406344e-04, + 7.432198037015927319e-04, + 7.441896622869611936e-04, + 7.451582559975372926e-04, + 7.461255833324388197e-04, + 7.470916427928642580e-04, + 7.480564328821601118e-04, + 7.490199521058838990e-04, + 7.499821989716845636e-04, + 7.509431719893585287e-04, + 7.519028696709281930e-04, + 7.528612905305071641e-04, + 7.538184330843694311e-04, + 7.547742958510166933e-04, + 7.557288773510516169e-04, + 7.566821761072459228e-04, + 7.576341906446040298e-04, + 7.585849194902347927e-04, + 7.595343611734270721e-04, + 7.604825142257051361e-04, + 7.614293771806920517e-04, + 7.623749485742724232e-04, + 7.633192269444542648e-04, + 7.642622108314260296e-04, + 7.652038987776319618e-04, + 7.661442893276429683e-04, + 7.670833810282187432e-04, + 7.680211724283788916e-04, + 7.689576620792794390e-04, + 7.698928485342670415e-04, + 7.708267303489637701e-04, + 7.717593060811223701e-04, + 7.726905742907269831e-04, + 7.736205335399484783e-04, + 7.745491823932095041e-04, + 7.754765194171624795e-04, + 7.764025431805559110e-04, + 7.773272522544735687e-04, + 7.782506452122013455e-04, + 7.791727206292008026e-04, + 7.800934770831612118e-04, + 7.810129131540536566e-04, + 7.819310274240219615e-04, + 7.828478184774573939e-04, + 7.837632849009573558e-04, + 7.846774252834236123e-04, + 7.855902382159265498e-04, + 7.865017222917778175e-04, + 7.874118761065888742e-04, + 7.883206982581572554e-04, + 7.892281873465193743e-04, + 7.901343419740228377e-04, + 7.910391607452037146e-04, + 7.919426422668493113e-04, + 7.928447851480609470e-04, + 7.937455880001143080e-04, + 7.946450494366221872e-04, + 7.955431680734013434e-04, + 7.964399425285246517e-04, + 7.973353714223940705e-04, + 7.982294533776130305e-04, + 7.991221870190583177e-04, + 8.000135709739360180e-04, + 8.009036038716610623e-04, + 8.017922843439240135e-04, + 8.026796110247579616e-04, + 8.035655825504066851e-04, + 8.044501975593985931e-04, + 8.053334546926080913e-04, + 8.062153525931080224e-04, + 8.070958899063650389e-04, + 8.079750652799879600e-04, + 8.088528773640025083e-04, + 8.097293248107265183e-04, + 8.106044062746511078e-04, + 8.114781204126871169e-04, + 8.123504658840226440e-04, + 8.132214413501114448e-04, + 8.140910454747054582e-04, + 8.149592769239257135e-04, + 8.158261343661377552e-04, + 8.166916164720420656e-04, + 8.175557219146260346e-04, + 8.184184493692519971e-04, + 8.192797975135408979e-04, + 8.201397650274256344e-04, + 8.209983505932054839e-04, + 8.218555528955142275e-04, + 8.227113706211970938e-04, + 8.235658024595621848e-04, + 8.244188471021386992e-04, + 8.252705032428776181e-04, + 8.261207695779907009e-04, + 8.269696448060341858e-04, + 8.278171276279489054e-04, + 8.286632167469624912e-04, + 8.295079108686340434e-04, + 8.303512087009333855e-04, + 8.311931089541041298e-04, + 8.320336103407456434e-04, + 8.328727115758557649e-04, + 8.337104113767268305e-04, + 8.345467084630038947e-04, + 8.353816015567413263e-04, + 8.362150893822703187e-04, + 8.370471706663573999e-04, + 8.378778441380741121e-04, + 8.387071085288460171e-04, + 8.395349625725477809e-04, + 8.403614050052751663e-04, + 8.411864345656135892e-04, + 8.420100499944919688e-04, + 8.428322500351763304e-04, + 8.436530334333033074e-04, + 8.444723989369394470e-04, + 8.452903452964747417e-04, + 8.461068712646759721e-04, + 8.469219755967441693e-04, + 8.477356570502084720e-04, + 8.485479143850020202e-04, + 8.493587463634184789e-04, + 8.501681517501877153e-04, + 8.509761293124362257e-04, + 8.517826778195794740e-04, + 8.525877960435319014e-04, + 8.533914827585853879e-04, + 8.541937367413977595e-04, + 8.549945567710318193e-04, + 8.557939416289467825e-04, + 8.565918900990477161e-04, + 8.573884009675992362e-04, + 8.581834730232645392e-04, + 8.589771050571733818e-04, + 8.597692958628084560e-04, + 8.605600442360675142e-04, + 8.613493489752942689e-04, + 8.621372088812663580e-04, + 8.629236227570768417e-04, + 8.637085894083537533e-04, + 8.644921076430648341e-04, + 8.652741762716640098e-04, + 8.660547941069810180e-04, + 8.668339599642744262e-04, + 8.676116726612765175e-04, + 8.683879310181012419e-04, + 8.691627338572913792e-04, + 8.699360800038807720e-04, + 8.707079682852785331e-04, + 8.714783975313366996e-04, + 8.722473665743945767e-04, + 8.730148742491783409e-04, + 8.737809193928647907e-04, + 8.745455008451134393e-04, + 8.753086174479883432e-04, + 8.760702680459968089e-04, + 8.768304514861460959e-04, + 8.775891666178239382e-04, + 8.783464122929644270e-04, + 8.791021873658261829e-04, + 8.798564906932287120e-04, + 8.806093211344367217e-04, + 8.813606775511402796e-04, + 8.821105588074825690e-04, + 8.828589637701286276e-04, + 8.836058913081518314e-04, + 8.843513402930978625e-04, + 8.850953095990229816e-04, + 8.858377981024079424e-04, + 8.865788046822207667e-04, + 8.873183282198854110e-04, + 8.880563675993329411e-04, + 8.887929217069879791e-04, + 8.895279894316521522e-04, + 8.902615696647080308e-04, + 8.909936613000237187e-04, + 8.917242632338395541e-04, + 8.924533743650053330e-04, + 8.931809935947709498e-04, + 8.939071198269438233e-04, + 8.946317519677658399e-04, + 8.953548889259717921e-04, + 8.960765296128449979e-04, + 8.967966729421054115e-04, + 8.975153178299683865e-04, + 8.982324631952065845e-04, + 8.989481079590324469e-04, + 8.996622510451629225e-04, + 9.003748913798680390e-04, + 9.010860278918702898e-04, + 9.017956595123986265e-04, + 9.025037851752386580e-04, + 9.032104038166180503e-04, + 9.039155143753440031e-04, + 9.046191157926813855e-04, + 9.053212070124136684e-04, + 9.060217869808832565e-04, + 9.067208546469089810e-04, + 9.074184089618171070e-04, + 9.081144488795063864e-04, + 9.088089733563557921e-04, + 9.095019813512569351e-04, + 9.101934718256787923e-04, + 9.108834437435660075e-04, + 9.115718960713989566e-04, + 9.122588277782224791e-04, + 9.129442378355549130e-04, + 9.136281252175294755e-04, + 9.143104889006946605e-04, + 9.149913278642359590e-04, + 9.156706410898690640e-04, + 9.163484275617613754e-04, + 9.170246862667041704e-04, + 9.176994161940255426e-04, + 9.183726163355565748e-04, + 9.190442856856883679e-04, + 9.197144232413484053e-04, + 9.203830280020549801e-04, + 9.210500989698239532e-04, + 9.217156351492286018e-04, + 9.223796355474357233e-04, + 9.230420991741185733e-04, + 9.237030250415108595e-04, + 9.243624121644244138e-04, + 9.250202595602475663e-04, + 9.256765662488379174e-04, + 9.263313312527185787e-04, + 9.269845535968973278e-04, + 9.276362323090085304e-04, + 9.282863664192024435e-04, + 9.289349549601997507e-04, + 9.295819969673274489e-04, + 9.302274914784427378e-04, + 9.308714375339694489e-04, + 9.315138341769498703e-04, + 9.321546804529519392e-04, + 9.327939754101242107e-04, + 9.334317180992276249e-04, + 9.340679075735652511e-04, + 9.347025428890061395e-04, + 9.353356231040620833e-04, + 9.359671472797469974e-04, + 9.365971144797302248e-04, + 9.372255237702181415e-04, + 9.378523742200014276e-04, + 9.384776649005164336e-04, + 9.391013948856876455e-04, + 9.397235632521144929e-04, + 9.403441690789735539e-04, + 9.409632114480064122e-04, + 9.415806894435434010e-04, + 9.421966021525611740e-04, + 9.428109486645824171e-04, + 9.434237280717468633e-04, + 9.440349394687745383e-04, + 9.446445819530341738e-04, + 9.452526546244477976e-04, + 9.458591565855437510e-04, + 9.464640869414833605e-04, + 9.470674448000493363e-04, + 9.476692292715403884e-04, + 9.482694394689525049e-04, + 9.488680745078762781e-04, + 9.494651335064879056e-04, + 9.500606155855849692e-04, + 9.506545198685658346e-04, + 9.512468454814886325e-04, + 9.518375915529819200e-04, + 9.524267572142927109e-04, + 9.530143415993282173e-04, + 9.536003438445742096e-04, + 9.541847630891344811e-04, + 9.547675984747689033e-04, + 9.553488491458704416e-04, + 9.559285142493702866e-04, + 9.565065929349306261e-04, + 9.570830843547776775e-04, + 9.576579876637722694e-04, + 9.582313020194442111e-04, + 9.588030265818963402e-04, + 9.593731605139207497e-04, + 9.599417029809051123e-04, + 9.605086531508614123e-04, + 9.610740101944917563e-04, + 9.616377732850833141e-04, + 9.621999415985628542e-04, + 9.627605143135439065e-04, + 9.633194906112349304e-04, + 9.638768696754877784e-04, + 9.644326506928313069e-04, + 9.649868328524071909e-04, + 9.655394153459956200e-04, + 9.660903973680651713e-04, + 9.666397781156820619e-04, + 9.671875567886216050e-04, + 9.677337325892178309e-04, + 9.682783047225376099e-04, + 9.688212723962869770e-04, + 9.693626348207943274e-04, + 9.699023912090431587e-04, + 9.704405407767159814e-04, + 9.709770827421083418e-04, + 9.715120163261866098e-04, + 9.720453407525671621e-04, + 9.725770552475639791e-04, + 9.731071590401076544e-04, + 9.736356513617960276e-04, + 9.741625314469150006e-04, + 9.746877985324228170e-04, + 9.752114518578778538e-04, + 9.757334906655675336e-04, + 9.762539142004583422e-04, + 9.767727217101021542e-04, + 9.772899124448123070e-04, + 9.778054856575066085e-04, + 9.783194406038288760e-04, + 9.788317765420547194e-04, + 9.793424927331368605e-04, + 9.798515884407344063e-04, + 9.803590629311540860e-04, + 9.808649154733741025e-04, + 9.813691453390868506e-04, + 9.818717518026303954e-04, + 9.823727341410196968e-04, + 9.828720916339880268e-04, + 9.833698235639167125e-04, + 9.838659292158657109e-04, + 9.843604078776243497e-04, + 9.848532588396078941e-04, + 9.853444813949692200e-04, + 9.858340748395174984e-04, + 9.863220384717476859e-04, + 9.868083715928726175e-04, + 9.872930735067703134e-04, + 9.877761435200028452e-04, + 9.882575809418631726e-04, + 9.887373850842990329e-04, + 9.892155552619526226e-04, + 9.896920907921991951e-04, + 9.901669909950724675e-04, + 9.906402551933136263e-04, + 9.911118827123559325e-04, + 9.915818728803440195e-04, + 9.920502250281434346e-04, + 9.925169384892469637e-04, + 9.929820125999181801e-04, + 9.934454466991222716e-04, + 9.939072401284620734e-04, + 9.943673922323105572e-04, + 9.948259023577338527e-04, + 9.952827698544856102e-04, + 9.957379940750323705e-04, + 9.961915743745425062e-04, + 9.966435101109215669e-04, + 9.970938006447543824e-04, + 9.975424453393378060e-04, + 9.979894435607115054e-04, + 9.984347946775920437e-04, + 9.988784980614106093e-04, + 9.993205530863505295e-04, + 9.997609591292715928e-04, + 1.000199715569746696e-03, + 1.000636821790105643e-03, + 1.001072277175347981e-03, + 1.001506081113234716e-03, + 1.001938232994211125e-03, + 1.002368732211452503e-03, + 1.002797578160876529e-03, + 1.003224770241091003e-03, + 1.003650307853432228e-03, + 1.004074190401987995e-03, + 1.004496417293541640e-03, + 1.004916987937595459e-03, + 1.005335901746411478e-03, + 1.005753158134950302e-03, + 1.006168756520899304e-03, + 1.006582696324696911e-03, + 1.006994976969489671e-03, + 1.007405597881155888e-03, + 1.007814558488303669e-03, + 1.008221858222280252e-03, + 1.008627496517185878e-03, + 1.009031472809787059e-03, + 1.009433786539642563e-03, + 1.009834437149047031e-03, + 1.010233424082991951e-03, + 1.010630746789220082e-03, + 1.011026404718230005e-03, + 1.011420397323237533e-03, + 1.011812724060193701e-03, + 1.012203384387791926e-03, + 1.012592377767484271e-03, + 1.012979703663438721e-03, + 1.013365361542563695e-03, + 1.013749350874523433e-03, + 1.014131671131741040e-03, + 1.014512321789321284e-03, + 1.014891302325169643e-03, + 1.015268612219926607e-03, + 1.015644250956960299e-03, + 1.016018218022392066e-03, + 1.016390512905083685e-03, + 1.016761135096665982e-03, + 1.017130084091492654e-03, + 1.017497359386667364e-03, + 1.017862960482069767e-03, + 1.018226886880298481e-03, + 1.018589138086704480e-03, + 1.018949713609419499e-03, + 1.019308612959295320e-03, + 1.019665835649941716e-03, + 1.020021381197739035e-03, + 1.020375249121803279e-03, + 1.020727438943998472e-03, + 1.021077950188975037e-03, + 1.021426782384103008e-03, + 1.021773935059534051e-03, + 1.022119407748162644e-03, + 1.022463199985636706e-03, + 1.022805311310378846e-03, + 1.023145741263561427e-03, + 1.023484489389099843e-03, + 1.023821555233704562e-03, + 1.024156938346810217e-03, + 1.024490638280626349e-03, + 1.024822654590136755e-03, + 1.025152986833067830e-03, + 1.025481634569915240e-03, + 1.025808597363928086e-03, + 1.026133874781137538e-03, + 1.026457466390347283e-03, + 1.026779371763074118e-03, + 1.027099590473650945e-03, + 1.027418122099164107e-03, + 1.027734966219454038e-03, + 1.028050122417128055e-03, + 1.028363590277582259e-03, + 1.028675369388957952e-03, + 1.028985459342171777e-03, + 1.029293859730901622e-03, + 1.029600570151619149e-03, + 1.029905590203539266e-03, + 1.030208919488652224e-03, + 1.030510557611727948e-03, + 1.030810504180320816e-03, + 1.031108758804706984e-03, + 1.031405321097988038e-03, + 1.031700190676014019e-03, + 1.031993367157400983e-03, + 1.032284850163562012e-03, + 1.032574639318659289e-03, + 1.032862734249649856e-03, + 1.033149134586254817e-03, + 1.033433839960962381e-03, + 1.033716850009059945e-03, + 1.033998164368590518e-03, + 1.034277782680378954e-03, + 1.034555704588033037e-03, + 1.034831929737936107e-03, + 1.035106457779234271e-03, + 1.035379288363879983e-03, + 1.035650421146582607e-03, + 1.035919855784829232e-03, + 1.036187591938909826e-03, + 1.036453629271862596e-03, + 1.036717967449542720e-03, + 1.036980606140539734e-03, + 1.037241545016259932e-03, + 1.037500783750891454e-03, + 1.037758322021385638e-03, + 1.038014159507473716e-03, + 1.038268295891698039e-03, + 1.038520730859352663e-03, + 1.038771464098527369e-03, + 1.039020495300103757e-03, + 1.039267824157732913e-03, + 1.039513450367855795e-03, + 1.039757373629696070e-03, + 1.039999593645271397e-03, + 1.040240110119374992e-03, + 1.040478922759580181e-03, + 1.040716031276262953e-03, + 1.040951435382585482e-03, + 1.041185134794465113e-03, + 1.041417129230646794e-03, + 1.041647418412631945e-03, + 1.041876002064731806e-03, + 1.042102879914029922e-03, + 1.042328051690397540e-03, + 1.042551517126512036e-03, + 1.042773275957816154e-03, + 1.042993327922550747e-03, + 1.043211672761752175e-03, + 1.043428310219242979e-03, + 1.043643240041619309e-03, + 1.043856461978293635e-03, + 1.044067975781450084e-03, + 1.044277781206065037e-03, + 1.044485878009917754e-03, + 1.044692265953553511e-03, + 1.044896944800341497e-03, + 1.045099914316412150e-03, + 1.045301174270700951e-03, + 1.045500724434943662e-03, + 1.045698564583641410e-03, + 1.045894694494110344e-03, + 1.046089113946458869e-03, + 1.046281822723574414e-03, + 1.046472820611142086e-03, + 1.046662107397646401e-03, + 1.046849682874358709e-03, + 1.047035546835336757e-03, + 1.047219699077451367e-03, + 1.047402139400347397e-03, + 1.047582867606474321e-03, + 1.047761883501062375e-03, + 1.047939186892155082e-03, + 1.048114777590585835e-03, + 1.048288655409959462e-03, + 1.048460820166700804e-03, + 1.048631271680026305e-03, + 1.048800009771936638e-03, + 1.048967034267231889e-03, + 1.049132344993503963e-03, + 1.049295941781151547e-03, + 1.049457824463356261e-03, + 1.049617992876095010e-03, + 1.049776446858150187e-03, + 1.049933186251087976e-03, + 1.050088210899277445e-03, + 1.050241520649880349e-03, + 1.050393115352865657e-03, + 1.050542994860972044e-03, + 1.050691159029759928e-03, + 1.050837607717570489e-03, + 1.050982340785548870e-03, + 1.051125358097633770e-03, + 1.051266659520556793e-03, + 1.051406244923852205e-03, + 1.051544114179846960e-03, + 1.051680267163662436e-03, + 1.051814703753217468e-03, + 1.051947423829233119e-03, + 1.052078427275214686e-03, + 1.052207713977481402e-03, + 1.052335283825128710e-03, + 1.052461136710063170e-03, + 1.052585272526984899e-03, + 1.052707691173385618e-03, + 1.052828392549557757e-03, + 1.052947376558590990e-03, + 1.053064643106369847e-03, + 1.053180192101578049e-03, + 1.053294023455683334e-03, + 1.053406137082969329e-03, + 1.053516532900506926e-03, + 1.053625210828159058e-03, + 1.053732170788588282e-03, + 1.053837412707258085e-03, + 1.053940936512426808e-03, + 1.054042742135136374e-03, + 1.054142829509246981e-03, + 1.054241198571402192e-03, + 1.054337849261038039e-03, + 1.054432781520391700e-03, + 1.054525995294496726e-03, + 1.054617490531188032e-03, + 1.054707267181084762e-03, + 1.054795325197603953e-03, + 1.054881664536972243e-03, + 1.054966285158197899e-03, + 1.055049187023083396e-03, + 1.055130370096233217e-03, + 1.055209834345048224e-03, + 1.055287579739722396e-03, + 1.055363606253236332e-03, + 1.055437913861383267e-03, + 1.055510502542738064e-03, + 1.055581372278667626e-03, + 1.055650523053346937e-03, + 1.055717954853735863e-03, + 1.055783667669584792e-03, + 1.055847661493453712e-03, + 1.055909936320682287e-03, + 1.055970492149403304e-03, + 1.056029328980556551e-03, + 1.056086446817860840e-03, + 1.056141845667839816e-03, + 1.056195525539804607e-03, + 1.056247486445858162e-03, + 1.056297728400899805e-03, + 1.056346251422618510e-03, + 1.056393055531495073e-03, + 1.056438140750812519e-03, + 1.056481507106629648e-03, + 1.056523154627807921e-03, + 1.056563083345999103e-03, + 1.056601293295643526e-03, + 1.056637784513974210e-03, + 1.056672557041018817e-03, + 1.056705610919587502e-03, + 1.056736946195290698e-03, + 1.056766562916519386e-03, + 1.056794461134463519e-03, + 1.056820640903098586e-03, + 1.056845102279186472e-03, + 1.056867845322283271e-03, + 1.056888870094733861e-03, + 1.056908176661670602e-03, + 1.056925765091014206e-03, + 1.056941635453473739e-03, + 1.056955787822546180e-03, + 1.056968222274513826e-03, + 1.056978938888455564e-03, + 1.056987937746226274e-03, + 1.056995218932471788e-03, + 1.057000782534627155e-03, + 1.057004628642910574e-03, + 1.057006757350327075e-03, + 1.057007168752667004e-03, + 1.057005862948507324e-03, + 1.057002840039206627e-03, + 1.056998100128913589e-03, + 1.056991643324556350e-03, + 1.056983469735847713e-03, + 1.056973579475287963e-03, + 1.056961972658155115e-03, + 1.056948649402512713e-03, + 1.056933609829207883e-03, + 1.056916854061871113e-03, + 1.056898382226912356e-03, + 1.056878194453520371e-03, + 1.056856290873671184e-03, + 1.056832671622117466e-03, + 1.056807336836393081e-03, + 1.056780286656815258e-03, + 1.056751521226474613e-03, + 1.056721040691242959e-03, + 1.056688845199777859e-03, + 1.056654934903504409e-03, + 1.056619309956632370e-03, + 1.056581970516150314e-03, + 1.056542916741818900e-03, + 1.056502148796177381e-03, + 1.056459666844543170e-03, + 1.056415471055008369e-03, + 1.056369561598439772e-03, + 1.056321938648483632e-03, + 1.056272602381551785e-03, + 1.056221552976838781e-03, + 1.056168790616310174e-03, + 1.056114315484703607e-03, + 1.056058127769531193e-03, + 1.056000227661071066e-03, + 1.055940615352387755e-03, + 1.055879291039301835e-03, + 1.055816254920413340e-03, + 1.055751507197085935e-03, + 1.055685048073462962e-03, + 1.055616877756453348e-03, + 1.055546996455726831e-03, + 1.055475404383729573e-03, + 1.055402101755679610e-03, + 1.055327088789550800e-03, + 1.055250365706092777e-03, + 1.055171932728821193e-03, + 1.055091790084013593e-03, + 1.055009938000712241e-03, + 1.054926376710728451e-03, + 1.054841106448639121e-03, + 1.054754127451774806e-03, + 1.054665439960244871e-03, + 1.054575044216904964e-03, + 1.054482940467385858e-03, + 1.054389128960068730e-03, + 1.054293609946105759e-03, + 1.054196383679408206e-03, + 1.054097450416634912e-03, + 1.053996810417219846e-03, + 1.053894463943348030e-03, + 1.053790411259961611e-03, + 1.053684652634764851e-03, + 1.053577188338216753e-03, + 1.053468018643526072e-03, + 1.053357143826666713e-03, + 1.053244564166371227e-03, + 1.053130279944107170e-03, + 1.053014291444117657e-03, + 1.052896598953382331e-03, + 1.052777202761646849e-03, + 1.052656103161401634e-03, + 1.052533300447887734e-03, + 1.052408794919098981e-03, + 1.052282586875783518e-03, + 1.052154676621425361e-03, + 1.052025064462273896e-03, + 1.051893750707316982e-03, + 1.051760735668295053e-03, + 1.051626019659685721e-03, + 1.051489602998720903e-03, + 1.051351486005386174e-03, + 1.051211669002389973e-03, + 1.051070152315198300e-03, + 1.050926936272025825e-03, + 1.050782021203821789e-03, + 1.050635407444267628e-03, + 1.050487095329812309e-03, + 1.050337085199623110e-03, + 1.050185377395615764e-03, + 1.050031972262441445e-03, + 1.049876870147494140e-03, + 1.049720071400904583e-03, + 1.049561576375537212e-03, + 1.049401385426995377e-03, + 1.049239498913620691e-03, + 1.049075917196483701e-03, + 1.048910640639389314e-03, + 1.048743669608884601e-03, + 1.048575004474237328e-03, + 1.048404645607452007e-03, + 1.048232593383269674e-03, + 1.048058848179152713e-03, + 1.047883410375298084e-03, + 1.047706280354627779e-03, + 1.047527458502795546e-03, + 1.047346945208182554e-03, + 1.047164740861893919e-03, + 1.046980845857756973e-03, + 1.046795260592337093e-03, + 1.046607985464904304e-03, + 1.046419020877465376e-03, + 1.046228367234749729e-03, + 1.046036024944197286e-03, + 1.045841994415978859e-03, + 1.045646276062985091e-03, + 1.045448870300823849e-03, + 1.045249777547815244e-03, + 1.045048998224997481e-03, + 1.044846532756140084e-03, + 1.044642381567714197e-03, + 1.044436545088899080e-03, + 1.044229023751615726e-03, + 1.044019817990469827e-03, + 1.043808928242786907e-03, + 1.043596354948614705e-03, + 1.043382098550699319e-03, + 1.043166159494506679e-03, + 1.042948538228200429e-03, + 1.042729235202656882e-03, + 1.042508250871469798e-03, + 1.042285585690913736e-03, + 1.042061240119994143e-03, + 1.041835214620414393e-03, + 1.041607509656568200e-03, + 1.041378125695563688e-03, + 1.041147063207211246e-03, + 1.040914322664014853e-03, + 1.040679904541187478e-03, + 1.040443809316628741e-03, + 1.040206037470942264e-03, + 1.039966589487437186e-03, + 1.039725465852103228e-03, + 1.039482667053633460e-03, + 1.039238193583418447e-03, + 1.038992045935532155e-03, + 1.038744224606747346e-03, + 1.038494730096532976e-03, + 1.038243562907034461e-03, + 1.037990723543090379e-03, + 1.037736212512245688e-03, + 1.037480030324705767e-03, + 1.037222177493378255e-03, + 1.036962654533851160e-03, + 1.036701461964406297e-03, + 1.036438600305994570e-03, + 1.036174070082241608e-03, + 1.035907871819497861e-03, + 1.035640006046749037e-03, + 1.035370473295670318e-03, + 1.035099274100621585e-03, + 1.034826408998653496e-03, + 1.034551878529461942e-03, + 1.034275683235440745e-03, + 1.033997823661649993e-03, + 1.033718300355834048e-03, + 1.033437113868384671e-03, + 1.033154264752390904e-03, + 1.032869753563599603e-03, + 1.032583580860426493e-03, + 1.032295747203945116e-03, + 1.032006253157927806e-03, + 1.031715099288782597e-03, + 1.031422286165585523e-03, + 1.031127814360084964e-03, + 1.030831684446693181e-03, + 1.030533897002484586e-03, + 1.030234452607176011e-03, + 1.029933351843162698e-03, + 1.029630595295498137e-03, + 1.029326183551874984e-03, + 1.029020117202657800e-03, + 1.028712396840871131e-03, + 1.028403023062168277e-03, + 1.028091996464875748e-03, + 1.027779317649976784e-03, + 1.027464987221077958e-03, + 1.027149005784459054e-03, + 1.026831373949047693e-03, + 1.026512092326395051e-03, + 1.026191161530727678e-03, + 1.025868582178893077e-03, + 1.025544354890395261e-03, + 1.025218480287383481e-03, + 1.024890958994631191e-03, + 1.024561791639568790e-03, + 1.024230978852265841e-03, + 1.023898521265403320e-03, + 1.023564419514334106e-03, + 1.023228674237032683e-03, + 1.022891286074091447e-03, + 1.022552255668756922e-03, + 1.022211583666897449e-03, + 1.021869270717025739e-03, + 1.021525317470259623e-03, + 1.021179724580347425e-03, + 1.020832492703702436e-03, + 1.020483622499317265e-03, + 1.020133114628825419e-03, + 1.019780969756486780e-03, + 1.019427188549191501e-03, + 1.019071771676427702e-03, + 1.018714719810317462e-03, + 1.018356033625607065e-03, + 1.017995713799653120e-03, + 1.017633761012411066e-03, + 1.017270175946478113e-03, + 1.016904959287057890e-03, + 1.016538111721956763e-03, + 1.016169633941575159e-03, + 1.015799526638981728e-03, + 1.015427790509784538e-03, + 1.015054426252238627e-03, + 1.014679434567205673e-03, + 1.014302816158125804e-03, + 1.013924571731070071e-03, + 1.013544701994682556e-03, + 1.013163207660230892e-03, + 1.012780089441584798e-03, + 1.012395348055182684e-03, + 1.012008984220089764e-03, + 1.011620998657957729e-03, + 1.011231392093014762e-03, + 1.010840165252105665e-03, + 1.010447318864658673e-03, + 1.010052853662678088e-03, + 1.009656770380774633e-03, + 1.009259069756149188e-03, + 1.008859752528557235e-03, + 1.008458819440379755e-03, + 1.008056271236534981e-03, + 1.007652108664585083e-03, + 1.007246332474613865e-03, + 1.006838943419303099e-03, + 1.006429942253922547e-03, + 1.006019329736315866e-03, + 1.005607106626884781e-03, + 1.005193273688620957e-03, + 1.004777831687097330e-03, + 1.004360781390420832e-03, + 1.003942123569300264e-03, + 1.003521858997005961e-03, + 1.003099988449374135e-03, + 1.002676512704791037e-03, + 1.002251432544224189e-03, + 1.001824748751206553e-03, + 1.001396462111815494e-03, + 1.000966573414677121e-03, + 1.000535083451028952e-03, + 1.000101993014603039e-03, + 9.996673029017302640e-04, + 9.992310139112611962e-04, + 9.987931268446224690e-04, + 9.983536425057931447e-04, + 9.979125617012769584e-04, + 9.974698852401493732e-04, + 9.970256139340328595e-04, + 9.965797485970645866e-04, + 9.961322900459582217e-04, + 9.956832390999696691e-04, + 9.952325965808584730e-04, + 9.947803633129606755e-04, + 9.943265401231441477e-04, + 9.938711278407882065e-04, + 9.934141272978458479e-04, + 9.929555393287528911e-04, + 9.924953647705236047e-04, + 9.920336044626899916e-04, + 9.915702592472755515e-04, + 9.911053299689006647e-04, + 9.906388174746553078e-04, + 9.901707226141536963e-04, + 9.897010462395639929e-04, + 9.892297892055662394e-04, + 9.887569523693356607e-04, + 9.882825365905927549e-04, + 9.878065427315720678e-04, + 9.873289716569950882e-04, + 9.868498242341298791e-04, + 9.863691013327388190e-04, + 9.858868038251122120e-04, + 9.854029325860199327e-04, + 9.849174884927380975e-04, + 9.844304724250995883e-04, + 9.839418852653882344e-04, + 9.834517278983954079e-04, + 9.829600012114362868e-04, + 9.824667060943088719e-04, + 9.819718434393293321e-04, + 9.814754141412702047e-04, + 9.809774190974284835e-04, + 9.804778592075987301e-04, + 9.799767353740381631e-04, + 9.794740485015163145e-04, + 9.789697994972922611e-04, + 9.784639892710951092e-04, + 9.779566187351259460e-04, + 9.774476888041311318e-04, + 9.769372003952583178e-04, + 9.764251544282012956e-04, + 9.759115518250820361e-04, + 9.753963935105269085e-04, + 9.748796804116416359e-04, + 9.743614134579729139e-04, + 9.738415935815710779e-04, + 9.733202217169531316e-04, + 9.727972988010750999e-04, + 9.722728257733935031e-04, + 9.717468035758227481e-04, + 9.712192331527157206e-04, + 9.706901154509133337e-04, + 9.701594514197204580e-04, + 9.696272420108616868e-04, + 9.690934881785558206e-04, + 9.685581908794773775e-04, + 9.680213510727183213e-04, + 9.674829697198631968e-04, + 9.669430477848955626e-04, + 9.664015862343214823e-04, + 9.658585860370322643e-04, + 9.653140481643612738e-04, + 9.647679735901224223e-04, + 9.642203632905613784e-04, + 9.636712182443346424e-04, + 9.631205394325608295e-04, + 9.625683278388086350e-04, + 9.620145844490328663e-04, + 9.614593102516638895e-04, + 9.609025062375477818e-04, + 9.603441733999724603e-04, + 9.597843127346251816e-04, + 9.592229252396112984e-04, + 9.586600119155328642e-04, + 9.580955737653328334e-04, + 9.575296117943978436e-04, + 9.569621270105441212e-04, + 9.563931204240065306e-04, + 9.558225930474340210e-04, + 9.552505458958595935e-04, + 9.546769799867605832e-04, + 9.541018963400266749e-04, + 9.535252959779121984e-04, + 9.529471799251211300e-04, + 9.523675492087564599e-04, + 9.517864048582895097e-04, + 9.512037479056258517e-04, + 9.506195793850710481e-04, + 9.500339003332918366e-04, + 9.494467117893845435e-04, + 9.488580147948373535e-04, + 9.482678103934976755e-04, + 9.476760996316439161e-04, + 9.470828835578986356e-04, + 9.464881632233082369e-04, + 9.458919396812956936e-04, + 9.452942139876336627e-04, + 9.446949872005131138e-04, + 9.440942603805003953e-04, + 9.434920345905038405e-04, + 9.428883108958389285e-04, + 9.422830903641997696e-04, + 9.416763740656060875e-04, + 9.410681630724951601e-04, + 9.404584584596587188e-04, + 9.398472613042248422e-04, + 9.392345726857323322e-04, + 9.386203936860140545e-04, + 9.380047253893628208e-04, + 9.373875688823382927e-04, + 9.367689252538638012e-04, + 9.361487955952932415e-04, + 9.355271810002532135e-04, + 9.349040825647342030e-04, + 9.342795013870957860e-04, + 9.336534385680388733e-04, + 9.330258952106204552e-04, + 9.323968724201900675e-04, + 9.317663713044908392e-04, + 9.311343929735941150e-04, + 9.305009385398724589e-04, + 9.298660091180721869e-04, + 9.292296058252724929e-04, + 9.285917297808558499e-04, + 9.279523821065155994e-04, + 9.273115639263641548e-04, + 9.266692763667314483e-04, + 9.260255205563446912e-04, + 9.253802976261924157e-04, + 9.247336087096331113e-04, + 9.240854549423273539e-04, + 9.234358374622244703e-04, + 9.227847574096166398e-04, + 9.221322159271122228e-04, + 9.214782141595828516e-04, + 9.208227532542558047e-04, + 9.201658343606566523e-04, + 9.195074586305743451e-04, + 9.188476272181417704e-04, + 9.181863412797854453e-04, + 9.175236019741943999e-04, + 9.168594104624044200e-04, + 9.161937679076864825e-04, + 9.155266754756491042e-04, + 9.148581343341843485e-04, + 9.141881456534162176e-04, + 9.135167106058554760e-04, + 9.128438303662100243e-04, + 9.121695061114757546e-04, + 9.114937390209660413e-04, + 9.108165302762590487e-04, + 9.101378810611763723e-04, + 9.094577925618467897e-04, + 9.087762659666574717e-04, + 9.080933024662801115e-04, + 9.074089032536050052e-04, + 9.067230695238345101e-04, + 9.060358024744343637e-04, + 9.053471033050918340e-04, + 9.046569732177485706e-04, + 9.039654134166808354e-04, + 9.032724251083396917e-04, + 9.025780095014341621e-04, + 9.018821678069570327e-04, + 9.011849012381314018e-04, + 9.004862110104460251e-04, + 8.997860983415783371e-04, + 8.990845644514979928e-04, + 8.983816105624166685e-04, + 8.976772378987302745e-04, + 8.969714476871233633e-04, + 8.962642411565026682e-04, + 8.955556195379860444e-04, + 8.948455840648961808e-04, + 8.941341359728768260e-04, + 8.934212764996895010e-04, + 8.927070068853947774e-04, + 8.919913283722088375e-04, + 8.912742422046149304e-04, + 8.905557496293086198e-04, + 8.898358518951562587e-04, + 8.891145502532780400e-04, + 8.883918459570065793e-04, + 8.876677402618303198e-04, + 8.869422344254957727e-04, + 8.862153297079482109e-04, + 8.854870273712826638e-04, + 8.847573286798478915e-04, + 8.840262349001799238e-04, + 8.832937473009697506e-04, + 8.825598671531400836e-04, + 8.818245957298078428e-04, + 8.810879343062287539e-04, + 8.803498841599039252e-04, + 8.796104465704407448e-04, + 8.788696228197403386e-04, + 8.781274141917832241e-04, + 8.773838219727453196e-04, + 8.766388474510030402e-04, + 8.758924919171133484e-04, + 8.751447566637426305e-04, + 8.743956429857862840e-04, + 8.736451521802800300e-04, + 8.728932855464398115e-04, + 8.721400443855971754e-04, + 8.713854300012875264e-04, + 8.706294436992012293e-04, + 8.698720867871546610e-04, + 8.691133605750947641e-04, + 8.683532663752186343e-04, + 8.675918055017740275e-04, + 8.668289792711479386e-04, + 8.660647890019745887e-04, + 8.652992360149103441e-04, + 8.645323216328307161e-04, + 8.637640471806833434e-04, + 8.629944139856022666e-04, + 8.622234233768440691e-04, + 8.614510766857517727e-04, + 8.606773752458415742e-04, + 8.599023203927549236e-04, + 8.591259134642085420e-04, + 8.583481558000822425e-04, + 8.575690487423815248e-04, + 8.567885936351690539e-04, + 8.560067918246773086e-04, + 8.552236446592441799e-04, + 8.544391534892666756e-04, + 8.536533196673156288e-04, + 8.528661445480013653e-04, + 8.520776294880821238e-04, + 8.512877758464159174e-04, + 8.504965849839058898e-04, + 8.497040582636036397e-04, + 8.489101970506503485e-04, + 8.481150027122210527e-04, + 8.473184766176408700e-04, + 8.465206201383107315e-04, + 8.457214346476636885e-04, + 8.449209215212678033e-04, + 8.441190821367511223e-04, + 8.433159178738319252e-04, + 8.425114301142682012e-04, + 8.417056202418718523e-04, + 8.408984896426319666e-04, + 8.400900397044883290e-04, + 8.392802718174536105e-04, + 8.384691873737044410e-04, + 8.376567877673716167e-04, + 8.368430743946583860e-04, + 8.360280486538561708e-04, + 8.352117119452961026e-04, + 8.343940656713700558e-04, + 8.335751112364684148e-04, + 8.327548500470766763e-04, + 8.319332835117225402e-04, + 8.311104130409222414e-04, + 8.302862400472802969e-04, + 8.294607659454370299e-04, + 8.286339921520119748e-04, + 8.278059200857138152e-04, + 8.269765511672647063e-04, + 8.261458868193725198e-04, + 8.253139284668319997e-04, + 8.244806775363896709e-04, + 8.236461354568623420e-04, + 8.228103036590845220e-04, + 8.219731835758472714e-04, + 8.211347766420067302e-04, + 8.202950842944295830e-04, + 8.194541079719312596e-04, + 8.186118491153844632e-04, + 8.177683091676640932e-04, + 8.169234895735919509e-04, + 8.160773917800335587e-04, + 8.152300172358526234e-04, + 8.143813673918470688e-04, + 8.135314437008820667e-04, + 8.126802476177049641e-04, + 8.118277805991863010e-04, + 8.109740441040639387e-04, + 8.101190395930536487e-04, + 8.092627685289551474e-04, + 8.084052323764381832e-04, + 8.075464326021565943e-04, + 8.066863706747682584e-04, + 8.058250480649057105e-04, + 8.049624662450971047e-04, + 8.040986266898971857e-04, + 8.032335308757983846e-04, + 8.023671802812646454e-04, + 8.014995763866597598e-04, + 8.006307206743542692e-04, + 7.997606146286681105e-04, + 7.988892597358290912e-04, + 7.980166574839877430e-04, + 7.971428093633546900e-04, + 7.962677168659543182e-04, + 7.953913814857767805e-04, + 7.945138047187801653e-04, + 7.936349880628314072e-04, + 7.927549330177461858e-04, + 7.918736410852104295e-04, + 7.909911137688891694e-04, + 7.901073525743672332e-04, + 7.892223590090908071e-04, + 7.883361345824787831e-04, + 7.874486808058619352e-04, + 7.865599991924286010e-04, + 7.856700912573219347e-04, + 7.847789585176038031e-04, + 7.838866024921711936e-04, + 7.829930247018817647e-04, + 7.820982266694895529e-04, + 7.812022099195871849e-04, + 7.803049759787368490e-04, + 7.794065263753116764e-04, + 7.785068626396293148e-04, + 7.776059863038962006e-04, + 7.767038989021362184e-04, + 7.758006019703150586e-04, + 7.748960970462729974e-04, + 7.739903856696686265e-04, + 7.730834693820871645e-04, + 7.721753497269825614e-04, + 7.712660282496206854e-04, + 7.703555064971854670e-04, + 7.694437860187045225e-04, + 7.685308683650803789e-04, + 7.676167550890365893e-04, + 7.667014477451229368e-04, + 7.657849478898683072e-04, + 7.648672570815218900e-04, + 7.639483768802016054e-04, + 7.630283088479060307e-04, + 7.621070545484752608e-04, + 7.611846155475276987e-04, + 7.602609934125697773e-04, + 7.593361897129310154e-04, + 7.584102060197776786e-04, + 7.574830439060549914e-04, + 7.565547049465807042e-04, + 7.556251907180000981e-04, + 7.546945027987374136e-04, + 7.537626427690101612e-04, + 7.528296122109712609e-04, + 7.518954127084420029e-04, + 7.509600458471343094e-04, + 7.500235132145618294e-04, + 7.490858163999864882e-04, + 7.481469569945411102e-04, + 7.472069365910855455e-04, + 7.462657567843271247e-04, + 7.453234191707657982e-04, + 7.443799253486336380e-04, + 7.434352769180107385e-04, + 7.424894754807531173e-04, + 7.415425226404419746e-04, + 7.405944200024993773e-04, + 7.396451691741194124e-04, + 7.386947717642101821e-04, + 7.377432293835103558e-04, + 7.367905436445257436e-04, + 7.358367161614641364e-04, + 7.348817485503799382e-04, + 7.339256424289817204e-04, + 7.329683994168822384e-04, + 7.320100211353189248e-04, + 7.310505092073031836e-04, + 7.300898652576396893e-04, + 7.291280909128706588e-04, + 7.281651878012271708e-04, + 7.272011575527379109e-04, + 7.262360017991712760e-04, + 7.252697221739637075e-04, + 7.243023203123514228e-04, + 7.233337978512726198e-04, + 7.223641564294196269e-04, + 7.213933976871606240e-04, + 7.204215232665645788e-04, + 7.194485348115475061e-04, + 7.184744339676130175e-04, + 7.174992223819729939e-04, + 7.165229017036832187e-04, + 7.155454735833506434e-04, + 7.145669396733984749e-04, + 7.135873016278611531e-04, + 7.126065611025396082e-04, + 7.116247197549280777e-04, + 7.106417792441489453e-04, + 7.096577412310811107e-04, + 7.086726073782898417e-04, + 7.076863793499617219e-04, + 7.066990588120268405e-04, + 7.057106474320928727e-04, + 7.047211468793866413e-04, + 7.037305588248658978e-04, + 7.027388849411619681e-04, + 7.017461269025054849e-04, + 7.007522863848841387e-04, + 6.997573650658556535e-04, + 6.987613646247051039e-04, + 6.977642867423737918e-04, + 6.967661331013888818e-04, + 6.957669053859953483e-04, + 6.947666052820882128e-04, + 6.937652344771388186e-04, + 6.927627946603256938e-04, + 6.917592875224725345e-04, + 6.907547147559624451e-04, + 6.897490780548927621e-04, + 6.887423791149795355e-04, + 6.877346196335078730e-04, + 6.867258013094478409e-04, + 6.857159258433773771e-04, + 6.847049949375093965e-04, + 6.836930102956340028e-04, + 6.826799736231297646e-04, + 6.816658866271179968e-04, + 6.806507510162001671e-04, + 6.796345685005979751e-04, + 6.786173407921834927e-04, + 6.775990696044104263e-04, + 6.765797566523414379e-04, + 6.755594036525746368e-04, + 6.745380123233591556e-04, + 6.735155843845356269e-04, + 6.724921215574623497e-04, + 6.714676255651472365e-04, + 6.704420981321750636e-04, + 6.694155409846632354e-04, + 6.683879558502806495e-04, + 6.673593444583988347e-04, + 6.663297085398061552e-04, + 6.652990498269594540e-04, + 6.642673700537927994e-04, + 6.632346709558655873e-04, + 6.622009542702904416e-04, + 6.611662217356705472e-04, + 6.601304750922229242e-04, + 6.590937160817126163e-04, + 6.580559464473797245e-04, + 6.570171679340767752e-04, + 6.559773822881928259e-04, + 6.549365912575857030e-04, + 6.538947965917095038e-04, + 6.528520000415545315e-04, + 6.518082033595643541e-04, + 6.507634082997759912e-04, + 6.497176166177485741e-04, + 6.486708300704886439e-04, + 6.476230504166122399e-04, + 6.465742794161283844e-04, + 6.455245188307193486e-04, + 6.444737704234341493e-04, + 6.434220359588485767e-04, + 6.423693172030826501e-04, + 6.413156159237545393e-04, + 6.402609338899110675e-04, + 6.392052728721560806e-04, + 6.381486346425783475e-04, + 6.370910209746888939e-04, + 6.360324336435493713e-04, + 6.349728744256756714e-04, + 6.339123450990824873e-04, + 6.328508474432151167e-04, + 6.317883832389627977e-04, + 6.307249542688220982e-04, + 6.296605623166188180e-04, + 6.285952091676575001e-04, + 6.275288966087497287e-04, + 6.264616264281444146e-04, + 6.253934004155569607e-04, + 6.243242203620914159e-04, + 6.232540880603617975e-04, + 6.221830053044286653e-04, + 6.211109738897249623e-04, + 6.200379956131870946e-04, + 6.189640722731889035e-04, + 6.178892056694644704e-04, + 6.168133976032480871e-04, + 6.157366498771973864e-04, + 6.146589642953226513e-04, + 6.135803426631253766e-04, + 6.125007867875247600e-04, + 6.114202984767788803e-04, + 6.103388795406528575e-04, + 6.092565317902262981e-04, + 6.081732570380516973e-04, + 6.070890570980836407e-04, + 6.060039337856041024e-04, + 6.049178889173611150e-04, + 6.038309243114975368e-04, + 6.027430417874706046e-04, + 6.016542431661953735e-04, + 6.005645302699748941e-04, + 5.994739049224135849e-04, + 5.983823689485693459e-04, + 5.972899241748757127e-04, + 5.961965724290596742e-04, + 5.951023155403167711e-04, + 5.940071553390854735e-04, + 5.929110936573325427e-04, + 5.918141323282454435e-04, + 5.907162731863848911e-04, + 5.896175180677124981e-04, + 5.885178688095462143e-04, + 5.874173272504707713e-04, + 5.863158952304927231e-04, + 5.852135745909281235e-04, + 5.841103671744610724e-04, + 5.830062748250338864e-04, + 5.819012993879917311e-04, + 5.807954427100142083e-04, + 5.796887066390229819e-04, + 5.785810930243427816e-04, + 5.774726037166156428e-04, + 5.763632405677484314e-04, + 5.752530054309359367e-04, + 5.741419001608325011e-04, + 5.730299266132253501e-04, + 5.719170866453272177e-04, + 5.708033821155558208e-04, + 5.696888148836975726e-04, + 5.685733868108315808e-04, + 5.674570997592567889e-04, + 5.663399555926340069e-04, + 5.652219561759067642e-04, + 5.641031033752291019e-04, + 5.629833990581039173e-04, + 5.618628450933146586e-04, + 5.607414433508373965e-04, + 5.596191957019958649e-04, + 5.584961040193792787e-04, + 5.573721701767645961e-04, + 5.562473960492861965e-04, + 5.551217835132410492e-04, + 5.539953344462497176e-04, + 5.528680507271846933e-04, + 5.517399342360671801e-04, + 5.506109868543366268e-04, + 5.494812104645223219e-04, + 5.483506069504195772e-04, + 5.472191781971072911e-04, + 5.460869260908940643e-04, + 5.449538525192475094e-04, + 5.438199593709284758e-04, + 5.426852485359005178e-04, + 5.415497219053701195e-04, + 5.404133813716845624e-04, + 5.392762288284781843e-04, + 5.381382661705977864e-04, + 5.369994952940432189e-04, + 5.358599180959950281e-04, + 5.347195364749825078e-04, + 5.335783523305860860e-04, + 5.324363675635995210e-04, + 5.312935840760615609e-04, + 5.301500037711717002e-04, + 5.290056285533403790e-04, + 5.278604603280832733e-04, + 5.267145010021690712e-04, + 5.255677524835431456e-04, + 5.244202166812437452e-04, + 5.232718955055587701e-04, + 5.221227908679377345e-04, + 5.209729046809428695e-04, + 5.198222388582709151e-04, + 5.186707953149254004e-04, + 5.175185759668849859e-04, + 5.163655827314073653e-04, + 5.152118175267921506e-04, + 5.140572822725600908e-04, + 5.129019788893711060e-04, + 5.117459092989465504e-04, + 5.105890754242183981e-04, + 5.094314791892470612e-04, + 5.082731225191448442e-04, + 5.071140073402251314e-04, + 5.059541355799225884e-04, + 5.047935091667107637e-04, + 5.036321300302571292e-04, + 5.024700001013379701e-04, + 5.013071213117625997e-04, + 5.001434955945235211e-04, + 4.989791248837109920e-04, + 4.978140111144387569e-04, + 4.966481562230204471e-04, + 4.954815621467297546e-04, + 4.943142308241122492e-04, + 4.931461641946420114e-04, + 4.919773641989054046e-04, + 4.908078327786152785e-04, + 4.896375718765625046e-04, + 4.884665834365320598e-04, + 4.872948694034589341e-04, + 4.861224317233141267e-04, + 4.849492723431630850e-04, + 4.837753932110477970e-04, + 4.826007962761481754e-04, + 4.814254834886984649e-04, + 4.802494567999256603e-04, + 4.790727181620847968e-04, + 4.778952695286255918e-04, + 4.767171128538856702e-04, + 4.755382500932366606e-04, + 4.743586832032437896e-04, + 4.731784141413153595e-04, + 4.719974448660245393e-04, + 4.708157773368591855e-04, + 4.696334135144093541e-04, + 4.684503553602808903e-04, + 4.672666048370170406e-04, + 4.660821639082510541e-04, + 4.648970345386230240e-04, + 4.637112186937009041e-04, + 4.625247183401302365e-04, + 4.613375354455590709e-04, + 4.601496719785476506e-04, + 4.589611299087280067e-04, + 4.577719112067217219e-04, + 4.565820178440562296e-04, + 4.553914517933453881e-04, + 4.542002150280776275e-04, + 4.530083095227955474e-04, + 4.518157372530136806e-04, + 4.506225001951364730e-04, + 4.494286003266130536e-04, + 4.482340396258559733e-04, + 4.470388200721565290e-04, + 4.458429436458420810e-04, + 4.446464123281908352e-04, + 4.434492281013524247e-04, + 4.422513929485022465e-04, + 4.410529088537301677e-04, + 4.398537778020941398e-04, + 4.386540017795352510e-04, + 4.374535827728988141e-04, + 4.362525227701199819e-04, + 4.350508237599016309e-04, + 4.338484877318688599e-04, + 4.326455166767279341e-04, + 4.314419125859388017e-04, + 4.302376774519047213e-04, + 4.290328132679887413e-04, + 4.278273220284358001e-04, + 4.266212057284204310e-04, + 4.254144663639373666e-04, + 4.242071059319585846e-04, + 4.229991264303477653e-04, + 4.217905298577810896e-04, + 4.205813182138990283e-04, + 4.193714934992258934e-04, + 4.181610577150892284e-04, + 4.169500128637709997e-04, + 4.157383609484262277e-04, + 4.145261039730019424e-04, + 4.133132439424155890e-04, + 4.120997828623488668e-04, + 4.108857227394140999e-04, + 4.096710655810892397e-04, + 4.084558133956203404e-04, + 4.072399681921862495e-04, + 4.060235319808140945e-04, + 4.048065067722920042e-04, + 4.035888945783290289e-04, + 4.023706974114743128e-04, + 4.011519172850280812e-04, + 3.999325562132009099e-04, + 3.987126162110328975e-04, + 3.974920992943065503e-04, + 3.962710074797304999e-04, + 3.950493427846986480e-04, + 3.938271072276071870e-04, + 3.926043028274984938e-04, + 3.913809316042248443e-04, + 3.901569955786054057e-04, + 3.889324967720929533e-04, + 3.877074372069699479e-04, + 3.864818189063639860e-04, + 3.852556438941937521e-04, + 3.840289141950841258e-04, + 3.828016318345244212e-04, + 3.815737988387594786e-04, + 3.803454172348365563e-04, + 3.791164890504957179e-04, + 3.778870163143283425e-04, + 3.766570010556964600e-04, + 3.754264453046668860e-04, + 3.741953510920434226e-04, + 3.729637204495484621e-04, + 3.717315554094950160e-04, + 3.704988580049746070e-04, + 3.692656302698797124e-04, + 3.680318742388194670e-04, + 3.667975919471710001e-04, + 3.655627854309671126e-04, + 3.643274567270541903e-04, + 3.630916078730119737e-04, + 3.618552409070623760e-04, + 3.606183578682364507e-04, + 3.593809607962807702e-04, + 3.581430517315814781e-04, + 3.569046327153178660e-04, + 3.556657057893794320e-04, + 3.544262729962818553e-04, + 3.531863363793265906e-04, + 3.519458979825125598e-04, + 3.507049598504561379e-04, + 3.494635240285747630e-04, + 3.482215925628688482e-04, + 3.469791675001042538e-04, + 3.457362508877337903e-04, + 3.444928447738057663e-04, + 3.432489512071270525e-04, + 3.420045722371792187e-04, + 3.407597099140310384e-04, + 3.395143662884995473e-04, + 3.382685434120656924e-04, + 3.370222433367857525e-04, + 3.357754681154576006e-04, + 3.345282198015033935e-04, + 3.332805004490222637e-04, + 3.320323121127037461e-04, + 3.307836568478538528e-04, + 3.295345367105844835e-04, + 3.282849537574755879e-04, + 3.270349100457695091e-04, + 3.257844076333928302e-04, + 3.245334485788956046e-04, + 3.232820349413714506e-04, + 3.220301687806132970e-04, + 3.207778521570043661e-04, + 3.195250871315661505e-04, + 3.182718757658473357e-04, + 3.170182201220843711e-04, + 3.157641222631161972e-04, + 3.145095842523267285e-04, + 3.132546081536659419e-04, + 3.119991960318426469e-04, + 3.107433499519608993e-04, + 3.094870719798196198e-04, + 3.082303641818003796e-04, + 3.069732286247813685e-04, + 3.057156673763265884e-04, + 3.044576825044578456e-04, + 3.031992760778514794e-04, + 3.019404501657489150e-04, + 3.006812068378681389e-04, + 2.994215481645707199e-04, + 2.981614762167708447e-04, + 2.969009930658519968e-04, + 2.956401007838273102e-04, + 2.943788014432586336e-04, + 2.931170971171606328e-04, + 2.918549898791722571e-04, + 2.905924818034654497e-04, + 2.893295749646605255e-04, + 2.880662714380179666e-04, + 2.868025732991780511e-04, + 2.855384826245028649e-04, + 2.842740014907023599e-04, + 2.830091319750271798e-04, + 2.817438761552952227e-04, + 2.804782361098315767e-04, + 2.792122139173815122e-04, + 2.779458116572743054e-04, + 2.766790314093360678e-04, + 2.754118752538013844e-04, + 2.741443452714816356e-04, + 2.728764435436435666e-04, + 2.716081721520688104e-04, + 2.703395331789593451e-04, + 2.690705287069673638e-04, + 2.678011608193866361e-04, + 2.665314315998113101e-04, + 2.652613431323021741e-04, + 2.639908975015514562e-04, + 2.627200967925133815e-04, + 2.614489430907395709e-04, + 2.601774384821214882e-04, + 2.589055850530838079e-04, + 2.576333848904974080e-04, + 2.563608400815903569e-04, + 2.550879527141142840e-04, + 2.538147248762566139e-04, + 2.525411586565519872e-04, + 2.512672561440483054e-04, + 2.499930194282186944e-04, + 2.487184505988740088e-04, + 2.474435517463266553e-04, + 2.461683249613054827e-04, + 2.448927723348652509e-04, + 2.436168959585820312e-04, + 2.423406979243236269e-04, + 2.410641803244436448e-04, + 2.397873452516942989e-04, + 2.385101947991356353e-04, + 2.372327310603059686e-04, + 2.359549561291291288e-04, + 2.346768720998289987e-04, + 2.333984810670945297e-04, + 2.321197851259930597e-04, + 2.308407863718799178e-04, + 2.295614869005650120e-04, + 2.282818888082276923e-04, + 2.270019941913232651e-04, + 2.257218051467545141e-04, + 2.244413237717502157e-04, + 2.231605521639226826e-04, + 2.218794924211760678e-04, + 2.205981466417329543e-04, + 2.193165169243296473e-04, + 2.180346053678717502e-04, + 2.167524140716281013e-04, + 2.154699451352577429e-04, + 2.141872006587216138e-04, + 2.129041827423329642e-04, + 2.116208934866437041e-04, + 2.103373349926095819e-04, + 2.090535093615014965e-04, + 2.077694186948174327e-04, + 2.064850650944486700e-04, + 2.052004506625928560e-04, + 2.039155775016917465e-04, + 2.026304477144573078e-04, + 2.013450634040668454e-04, + 2.000594266737901747e-04, + 1.987735396273276748e-04, + 1.974874043685497275e-04, + 1.962010230016939341e-04, + 1.949143976312753160e-04, + 1.936275303619983319e-04, + 1.923404232989227064e-04, + 1.910530785473769379e-04, + 1.897654982128661955e-04, + 1.884776844012432976e-04, + 1.871896392186179103e-04, + 1.859013647712673173e-04, + 1.846128631658046338e-04, + 1.833241365090904713e-04, + 1.820351869081420003e-04, + 1.807460164703028713e-04, + 1.794566273031532539e-04, + 1.781670215144199015e-04, + 1.768772012121740459e-04, + 1.755871685045701312e-04, + 1.742969255001852779e-04, + 1.730064743076443925e-04, + 1.717158170358170049e-04, + 1.704249557938413643e-04, + 1.691338926910660281e-04, + 1.678426298369582465e-04, + 1.665511693412737222e-04, + 1.652595133139662411e-04, + 1.639676638650994190e-04, + 1.626756231050137771e-04, + 1.613833931442110571e-04, + 1.600909760934050982e-04, + 1.587983740634338803e-04, + 1.575055891652854913e-04, + 1.562126235102939068e-04, + 1.549194792097928854e-04, + 1.536261583753114777e-04, + 1.523326631186011583e-04, + 1.510389955515455932e-04, + 1.497451577862133048e-04, + 1.484511519347423943e-04, + 1.471569801095056113e-04, + 1.458626444230243767e-04, + 1.445681469878762728e-04, + 1.432734899168658328e-04, + 1.419786753229346059e-04, + 1.406837053190990866e-04, + 1.393885820184769257e-04, + 1.380933075344852577e-04, + 1.367978839804618804e-04, + 1.355023134699806227e-04, + 1.342065981167293170e-04, + 1.329107400344241210e-04, + 1.316147413370039412e-04, + 1.303186041383987126e-04, + 1.290223305527272112e-04, + 1.277259226942069022e-04, + 1.264293826770639519e-04, + 1.251327126157035009e-04, + 1.238359146246185917e-04, + 1.225389908183009929e-04, + 1.212419433114104972e-04, + 1.199447742186856376e-04, + 1.186474856548520857e-04, + 1.173500797347941724e-04, + 1.160525585734643032e-04, + 1.147549242857915188e-04, + 1.134571789868822221e-04, + 1.121593247917556865e-04, + 1.108613638156879112e-04, + 1.095632981738309031e-04, + 1.082651299814141625e-04, + 1.069668613537683730e-04, + 1.056684944062638050e-04, + 1.043700312542215740e-04, + 1.030714740130828436e-04, + 1.017728247982896178e-04, + 1.004740857253398590e-04, + 9.917525890966695176e-05, + 9.787634646681184702e-05, + 9.657735051233095919e-05, + 9.527827316170697693e-05, + 9.397911653051850014e-05, + 9.267988273435048482e-05, + 9.138057388873187443e-05, + 9.008119210916235248e-05, + 8.878173951131037211e-05, + 8.748221821063413258e-05, + 8.618263032272505445e-05, + 8.488297796304439984e-05, + 8.358326324712176271e-05, + 8.228348829046573058e-05, + 8.098365520847176805e-05, + 7.968376611659554003e-05, + 7.838382313025930447e-05, + 7.708382836476345497e-05, + 7.578378393545680833e-05, + 7.448369195764570772e-05, + 7.318355454650425076e-05, + 7.188337381724377740e-05, + 7.058315188502368076e-05, + 6.928289086486007665e-05, + 6.798259287182601503e-05, + 6.668226002081512397e-05, + 6.538189442674240386e-05, + 6.408149820445301894e-05, + 6.278107346860260134e-05, + 6.148062233397352642e-05, + 6.018014691509433072e-05, + 5.887964932643871048e-05, + 5.757913168245191516e-05, + 5.627859609748867015e-05, + 5.497804468572305240e-05, + 5.367747956131881863e-05, + 5.237690283831044122e-05, + 5.107631663065705406e-05, + 4.977572305212370527e-05, + 4.847512421645113655e-05, + 4.717452223726620769e-05, + 4.587391922801975827e-05, + 4.457331730201264205e-05, + 4.327271857259494233e-05, + 4.197212515281477179e-05, + 4.067153915561797574e-05, + 3.937096269387345502e-05, + 3.807039788028260122e-05, + 3.676984682743429287e-05, + 3.546931164768529434e-05, + 3.416879445333054341e-05, + 3.286829735651327760e-05, + 3.156782246913419844e-05, + 3.026737190302195883e-05, + 2.896694776984332672e-05, + 2.766655218104106375e-05, + 2.636618724785996299e-05, + 2.506585508154619989e-05, + 2.376555779296704156e-05, + 2.246529749295535881e-05, + 2.116507629204525019e-05, + 1.986489630067155216e-05, + 1.856475962907951151e-05, + 1.726466838723422732e-05, + 1.596462468499140270e-05, + 1.466463063200681047e-05, + 1.336468833764594189e-05, + 1.206479991115451435e-05, + 1.076496746156812689e-05, + 9.465193097621800401e-06, + 8.165478927920602316e-06, + 6.865827060849177516e-06, + 5.566239604481413133e-06, + 4.266718666750919170e-06, + 2.967266355360685667e-06, + 1.667884777692707244e-06, + 3.685760410074457051e-07, +-9.306577478204046435e-07, +-2.229814481957572582e-06, +-3.528892054992357519e-06, +-4.827888360735157783e-06, +-6.126801293192944651e-06, +-7.425628746630623214e-06, +-8.724368615661287973e-06, +-1.002301879507587647e-05, +-1.132157717996244845e-05, +-1.262004166565166324e-05, +-1.391841014783590894e-05, +-1.521668052239919117e-05, +-1.651485068550717262e-05, +-1.781291853366860837e-05, +-1.911088196370978922e-05, +-2.040873887257516536e-05, +-2.170648715767841953e-05, +-2.300412471670295009e-05, +-2.430164944757643968e-05, +-2.559905924856102700e-05, +-2.689635201819901876e-05, +-2.819352565543168434e-05, +-2.949057805942945280e-05, +-3.078750712968178986e-05, +-3.208431076608760004e-05, +-3.338098686878469856e-05, +-3.467753333824060314e-05, +-3.597394807534205183e-05, +-3.727022898122532536e-05, +-3.856637395736602585e-05, +-3.986238090566959416e-05, +-4.115824772830096139e-05, +-4.245397232777459862e-05, +-4.374955260704518336e-05, +-4.504498646930775398e-05, +-4.634027181823324580e-05, +-4.763540655776872691e-05, +-4.893038859222809166e-05, +-5.022521582638209684e-05, +-5.151988616528786416e-05, +-5.281439751437952629e-05, +-5.410874777955808015e-05, +-5.540293486702116714e-05, +-5.669695668335343462e-05, +-5.799081113561682963e-05, +-5.928449613117980996e-05, +-6.057800957783700615e-05, +-6.187134938375477423e-05, +-6.316451345756080504e-05, +-6.445749970831878776e-05, +-6.575030604533005515e-05, +-6.704293037848298121e-05, +-6.833537061808300545e-05, +-6.962762467468351082e-05, +-7.091969045943461163e-05, +-7.221156588388535436e-05, +-7.350324885995777814e-05, +-7.479473730003664605e-05, +-7.608602911691617011e-05, +-7.737712222391722710e-05, +-7.866801453471868380e-05, +-7.995870396344725026e-05, +-8.124918842476706198e-05, +-8.253946583370956862e-05, +-8.382953410576485091e-05, +-8.511939115696991534e-05, +-8.640903490373995170e-05, +-8.769846326295779328e-05, +-8.898767415206451550e-05, +-9.027666548885940063e-05, +-9.156543519173573821e-05, +-9.285398117948141317e-05, +-9.414230137136863708e-05, +-9.543039368724384210e-05, +-9.671825604735923660e-05, +-9.800588637246109990e-05, +-9.929328258387963547e-05, +-1.005804426033607841e-04, +-1.018673643531548440e-04, +-1.031540457561061746e-04, +-1.044404847354851051e-04, +-1.057266792150761067e-04, +-1.070126271192678766e-04, +-1.082983263728556201e-04, +-1.095837749013032375e-04, +-1.108689706304016924e-04, +-1.121539114866454737e-04, +-1.134385953970639478e-04, +-1.147230202890520335e-04, +-1.160071840907190573e-04, +-1.172910847306897215e-04, +-1.185747201380801835e-04, +-1.198580882425575109e-04, +-1.211411869744296162e-04, +-1.224240142644770156e-04, +-1.237065680440700992e-04, +-1.249888462451147848e-04, +-1.262708468001725128e-04, +-1.275525676422889281e-04, +-1.288340067050843028e-04, +-1.301151619228159320e-04, +-1.313960312303495920e-04, +-1.326766125629648451e-04, +-1.339569038567004118e-04, +-1.352369030481582828e-04, +-1.365166080744782402e-04, +-1.377960168734260031e-04, +-1.390751273833397764e-04, +-1.403539375432498384e-04, +-1.416324452927071283e-04, +-1.429106485718741569e-04, +-1.441885453216142088e-04, +-1.454661334833228035e-04, +-1.467434109990160850e-04, +-1.480203758114207293e-04, +-1.492970258638060281e-04, +-1.505733591000720352e-04, +-1.518493734648379827e-04, +-1.531250669032488865e-04, +-1.544004373612030390e-04, +-1.556754827851581269e-04, +-1.569502011222197017e-04, +-1.582245903202296510e-04, +-1.594986483275986618e-04, +-1.607723730933951253e-04, +-1.620457625674329031e-04, +-1.633188147001061216e-04, +-1.645915274424749057e-04, +-1.658638987463561805e-04, +-1.671359265641552403e-04, +-1.684076088489556294e-04, +-1.696789435546049022e-04, +-1.709499286355513153e-04, +-1.722205620469570181e-04, +-1.734908417446476649e-04, +-1.747607656851981749e-04, +-1.760303318259099639e-04, +-1.772995381246130235e-04, +-1.785683825400130283e-04, +-1.798368630314924662e-04, +-1.811049775590888185e-04, +-1.823727240835511828e-04, +-1.836401005664315084e-04, +-1.849071049699170055e-04, +-1.861737352569450984e-04, +-1.874399893911524401e-04, +-1.887058653369905702e-04, +-1.899713610595581885e-04, +-1.912364745246909541e-04, +-1.925012036990206288e-04, +-1.937655465499496521e-04, +-1.950295010454574220e-04, +-1.962930651544693027e-04, +-1.975562368465531295e-04, +-1.988190140920287948e-04, +-2.000813948620622207e-04, +-2.013433771284694443e-04, +-2.026049588639428631e-04, +-2.038661380418608224e-04, +-2.051269126363730773e-04, +-2.063872806224886401e-04, +-2.076472399759127165e-04, +-2.089067886731293760e-04, +-2.101659246914949286e-04, +-2.114246460090679494e-04, +-2.126829506046996193e-04, +-2.139408364581200006e-04, +-2.151983015497715577e-04, +-2.164553438609005556e-04, +-2.177119613736398383e-04, +-2.189681520708187143e-04, +-2.202239139362173101e-04, +-2.214792449542349133e-04, +-2.227341431102545892e-04, +-2.239886063904529036e-04, +-2.252426327817750944e-04, +-2.264962202719919928e-04, +-2.277493668497899569e-04, +-2.290020705046045830e-04, +-2.302543292267080649e-04, +-2.315061410072966346e-04, +-2.327575038383263332e-04, +-2.340084157126256863e-04, +-2.352588746238486498e-04, +-2.365088785665535938e-04, +-2.377584255361857117e-04, +-2.390075135288812673e-04, +-2.402561405418060286e-04, +-2.415043045729929356e-04, +-2.427520036211740489e-04, +-2.439992356861503712e-04, +-2.452459987684580756e-04, +-2.464922908696251633e-04, +-2.477381099919743557e-04, +-2.489834541387163629e-04, +-2.502283213140320392e-04, +-2.514727095229100776e-04, +-2.527166167712338552e-04, +-2.539600410658689276e-04, +-2.552029804144956824e-04, +-2.564454328257008463e-04, +-2.576873963090609140e-04, +-2.589288688749794096e-04, +-2.601698485347732977e-04, +-2.614103333007597191e-04, +-2.626503211860654430e-04, +-2.638898102048499407e-04, +-2.651287983721160846e-04, +-2.663672837037980227e-04, +-2.676052642168440113e-04, +-2.688427379290544354e-04, +-2.700797028591693039e-04, +-2.713161570269549856e-04, +-2.725520984530384891e-04, +-2.737875251589961503e-04, +-2.750224351674379294e-04, +-2.762568265018470028e-04, +-2.774906971866640060e-04, +-2.787240452473729022e-04, +-2.799568687103114097e-04, +-2.811891656029235124e-04, +-2.824209339534311091e-04, +-2.836521717911936438e-04, +-2.848828771465473182e-04, +-2.861130480506444669e-04, +-2.873426825357856492e-04, +-2.885717786352285578e-04, +-2.898003343831680157e-04, +-2.910283478148155563e-04, +-2.922558169663521527e-04, +-2.934827398750423292e-04, +-2.947091145790668699e-04, +-2.959349391176140532e-04, +-2.971602115309608053e-04, +-2.983849298603141894e-04, +-2.996090921478956480e-04, +-3.008326964369988457e-04, +-3.020557407719652739e-04, +-3.032782231979969556e-04, +-3.045001417615128764e-04, +-3.057214945098260550e-04, +-3.069422794913935059e-04, +-3.081624947556237397e-04, +-3.093821383529669683e-04, +-3.106012083349953359e-04, +-3.118197027542486373e-04, +-3.130376196643114587e-04, +-3.142549571199045760e-04, +-3.154717131767198306e-04, +-3.166878858915088716e-04, +-3.179034733221662058e-04, +-3.191184735275666212e-04, +-3.203328845676546338e-04, +-3.215467045035253694e-04, +-3.227599313972670829e-04, +-3.239725633120432865e-04, +-3.251845983121791068e-04, +-3.263960344629737720e-04, +-3.276068698309488395e-04, +-3.288171024835233693e-04, +-3.300267304893729579e-04, +-3.312357519182392972e-04, +-3.324441648409083290e-04, +-3.336519673292691703e-04, +-3.348591574563933152e-04, +-3.360657332963806233e-04, +-3.372716929244413400e-04, +-3.384770344169786582e-04, +-3.396817558514335150e-04, +-3.408858553063913856e-04, +-3.420893308615330060e-04, +-3.432921805977224650e-04, +-3.444944025969753280e-04, +-3.456959949422794731e-04, +-3.468969557179180747e-04, +-3.480972830092876743e-04, +-3.492969749028685279e-04, +-3.504960294863143774e-04, +-3.516944448483976448e-04, +-3.528922190791232189e-04, +-3.540893502695654452e-04, +-3.552858365119589829e-04, +-3.564816758997745895e-04, +-3.576768665275654362e-04, +-3.588714064910515124e-04, +-3.600652938871741612e-04, +-3.612585268140719019e-04, +-3.624511033708973620e-04, +-3.636430216581673668e-04, +-3.648342797774726978e-04, +-3.660248758315886274e-04, +-3.672148079245554750e-04, +-3.684040741614962445e-04, +-3.695926726488318382e-04, +-3.707806014941023259e-04, +-3.719678588060422973e-04, +-3.731544426946708506e-04, +-3.743403512711289080e-04, +-3.755255826477658433e-04, +-3.767101349382227489e-04, +-3.778940062572718112e-04, +-3.790771947209031550e-04, +-3.802596984464067550e-04, +-3.814415155522140341e-04, +-3.826226441579810757e-04, +-3.838030823846742758e-04, +-3.849828283543832094e-04, +-3.861618801905654982e-04, +-3.873402360177291928e-04, +-3.885178939617848137e-04, +-3.896948521498552905e-04, +-3.908711087102600241e-04, +-3.920466617725667114e-04, +-3.932215094676752630e-04, +-3.943956499276584792e-04, +-3.955690812858776804e-04, +-3.967418016769258407e-04, +-3.979138092367417003e-04, +-3.990851021024494115e-04, +-4.002556784124439745e-04, +-4.014255363064724979e-04, +-4.025946739254794831e-04, +-4.037630894116886276e-04, +-4.049307809086544869e-04, +-4.060977465612468080e-04, +-4.072639845154625831e-04, +-4.084294929187748369e-04, +-4.095942699198179917e-04, +-4.107583136686280721e-04, +-4.119216223164614264e-04, +-4.130841940158766924e-04, +-4.142460269208176845e-04, +-4.154071191864556968e-04, +-4.165674689692743958e-04, +-4.177270744271499429e-04, +-4.188859337191951407e-04, +-4.200440450058468196e-04, +-4.212014064489370694e-04, +-4.223580162115505047e-04, +-4.235138724580972858e-04, +-4.246689733543976318e-04, +-4.258233170675037411e-04, +-4.269769017659072528e-04, +-4.281297256193615465e-04, +-4.292817867989643581e-04, +-4.304330834772374147e-04, +-4.315836138279738332e-04, +-4.327333760263156947e-04, +-4.338823682488399678e-04, +-4.350305886734025457e-04, +-4.361780354792217846e-04, +-4.373247068469521205e-04, +-4.384706009585411716e-04, +-4.396157159973296475e-04, +-4.407600501480041862e-04, +-4.419036015967034979e-04, +-4.430463685308673352e-04, +-4.441883491393160198e-04, +-4.453295416123031884e-04, +-4.464699441414949764e-04, +-4.476095549197946482e-04, +-4.487483721416485045e-04, +-4.498863940028723020e-04, +-4.510236187006307074e-04, +-4.521600444335115111e-04, +-4.532956694014820425e-04, +-4.544304918059927654e-04, +-4.555645098498250557e-04, +-4.566977217371714329e-04, +-4.578301256737190433e-04, +-4.589617198664936977e-04, +-4.600925025239409696e-04, +-4.612224718559828447e-04, +-4.623516260739913208e-04, +-4.634799633906122791e-04, +-4.646074820201076582e-04, +-4.657341801780403852e-04, +-4.668600560815149600e-04, +-4.679851079490002968e-04, +-4.691093340004078406e-04, +-4.702327324571690340e-04, +-4.713553015420911176e-04, +-4.724770394794305310e-04, +-4.735979444949734688e-04, +-4.747180148158888628e-04, +-4.758372486708038968e-04, +-4.769556442898855385e-04, +-4.780731999046885887e-04, +-4.791899137482367251e-04, +-4.803057840551013240e-04, +-4.814208090612490760e-04, +-4.825349870041267700e-04, +-4.836483161227324713e-04, +-4.847607946574493138e-04, +-4.858724208502677067e-04, +-4.869831929444898354e-04, +-4.880931091850615358e-04, +-4.892021678183949189e-04, +-4.903103670923477167e-04, +-4.914177052562756489e-04, +-4.925241805611138470e-04, +-4.936297912592232766e-04, +-4.947345356044987241e-04, +-4.958384118523172972e-04, +-4.969414182596466282e-04, +-4.980435530848928687e-04, +-4.991448145879810293e-04, +-5.002452010304038769e-04, +-5.013447106752064305e-04, +-5.024433417868069598e-04, +-5.035410926313034887e-04, +-5.046379614763016244e-04, +-5.057339465908902709e-04, +-5.068290462457183910e-04, +-5.079232587129548903e-04, +-5.090165822663800157e-04, +-5.101090151812489627e-04, +-5.112005557343622403e-04, +-5.122912022041462270e-04, +-5.133809528705058278e-04, +-5.144698060149028619e-04, +-5.155577599204327162e-04, +-5.166448128716747247e-04, +-5.177309631547748940e-04, +-5.188162090575207126e-04, +-5.199005488691938077e-04, +-5.209839808806485508e-04, +-5.220665033843855654e-04, +-5.231481146743905070e-04, +-5.242288130463200035e-04, +-5.253085967973459636e-04, +-5.263874642262242071e-04, +-5.274654136333701421e-04, +-5.285424433207194447e-04, +-5.296185515918003760e-04, +-5.306937367518094585e-04, +-5.317679971074719403e-04, +-5.328413309671117251e-04, +-5.339137366407318208e-04, +-5.349852124398675381e-04, +-5.360557566776886227e-04, +-5.371253676689550192e-04, +-5.381940437300860441e-04, +-5.392617831791452062e-04, +-5.403285843356712883e-04, +-5.413944455209694553e-04, +-5.424593650579701996e-04, +-5.435233412710881781e-04, +-5.445863724865136453e-04, +-5.456484570320449447e-04, +-5.467095932370685590e-04, +-5.477697794326342453e-04, +-5.488290139514074390e-04, +-5.498872951277708433e-04, +-5.509446212976804470e-04, +-5.520009907987419610e-04, +-5.530564019702836768e-04, +-5.541108531532174713e-04, +-5.551643426901110151e-04, +-5.562168689252624740e-04, +-5.572684302045618392e-04, +-5.583190248755648703e-04, +-5.593686512875615082e-04, +-5.604173077914193163e-04, +-5.614649927397744088e-04, +-5.625117044868639411e-04, +-5.635574413886030882e-04, +-5.646022018026580118e-04, +-5.656459840883092506e-04, +-5.666887866065185072e-04, +-5.677306077200085536e-04, +-5.687714457931232611e-04, +-5.698112991918941701e-04, +-5.708501662841221303e-04, +-5.718880454392374392e-04, +-5.729249350283673872e-04, +-5.739608334244137786e-04, +-5.749957390018917104e-04, +-5.760296501371386067e-04, +-5.770625652080439271e-04, +-5.780944825943451536e-04, +-5.791254006774969277e-04, +-5.801553178405362840e-04, +-5.811842324683551102e-04, +-5.822121429475496596e-04, +-5.832390476663920371e-04, +-5.842649450148867940e-04, +-5.852898333848363058e-04, +-5.863137111697071984e-04, +-5.873365767647255407e-04, +-5.883584285668327181e-04, +-5.893792649747807335e-04, +-5.903990843889949476e-04, +-5.914178852116478043e-04, +-5.924356658467063190e-04, +-5.934524246999083345e-04, +-5.944681601786122507e-04, +-5.954828706920669906e-04, +-5.964965546512563093e-04, +-5.975092104688818802e-04, +-5.985208365594284555e-04, +-5.995314313391280877e-04, +-6.005409932260455646e-04, +-6.015495206399463536e-04, +-6.025570120023786757e-04, +-6.035634657367234873e-04, +-6.045688802680780367e-04, +-6.055732540233169049e-04, +-6.065765854311712607e-04, +-6.075788729220843367e-04, +-6.085801149282875399e-04, +-6.095803098838756956e-04, +-6.105794562246400804e-04, +-6.115775523882605426e-04, +-6.125745968141451487e-04, +-6.135705879435062945e-04, +-6.145655242194242394e-04, +-6.155594040867132070e-04, +-6.165522259920006411e-04, +-6.175439883837862938e-04, +-6.185346897123189525e-04, +-6.195243284296599734e-04, +-6.205129029897549480e-04, +-6.215004118483037068e-04, +-6.224868534628235283e-04, +-6.234722262927287198e-04, +-6.244565287991901041e-04, +-6.254397594452296713e-04, +-6.264219166956807878e-04, +-6.274029990172522728e-04, +-6.283830048785139788e-04, +-6.293619327497403408e-04, +-6.303397811031811017e-04, +-6.313165484129025853e-04, +-6.322922331547795646e-04, +-6.332668338065286550e-04, +-6.342403488477890879e-04, +-6.352127767599818724e-04, +-6.361841160264061811e-04, +-6.371543651322014029e-04, +-6.381235225644247720e-04, +-6.390915868119374180e-04, +-6.400585563654623712e-04, +-6.410244297176316162e-04, +-6.419892053629701551e-04, +-6.429528817977443267e-04, +-6.439154575202459766e-04, +-6.448769310305572933e-04, +-6.458373008306367855e-04, +-6.467965654243912734e-04, +-6.477547233175241000e-04, +-6.487117730177095797e-04, +-6.496677130344456546e-04, +-6.506225418791215494e-04, +-6.515762580650833651e-04, +-6.525288601075050592e-04, +-6.534803465234632555e-04, +-6.544307158319915630e-04, +-6.553799665539656498e-04, +-6.563280972121647181e-04, +-6.572751063313380738e-04, +-6.582209924380794672e-04, +-6.591657540608919291e-04, +-6.601093897302598695e-04, +-6.610518979784925191e-04, +-6.619932773399294940e-04, +-6.629335263506749495e-04, +-6.638726435488883628e-04, +-6.648106274746310102e-04, +-6.657474766698451502e-04, +-6.666831896784067161e-04, +-6.676177650461864645e-04, +-6.685512013209205223e-04, +-6.694834970522861714e-04, +-6.704146507919582281e-04, +-6.713446610934909733e-04, +-6.722735265124016356e-04, +-6.732012456061309269e-04, +-6.741278169341093952e-04, +-6.750532390577372588e-04, +-6.759775105402396648e-04, +-6.769006299469220193e-04, +-6.778225958450447616e-04, +-6.787434068037050778e-04, +-6.796630613941010129e-04, +-6.805815581892915361e-04, +-6.814988957643817232e-04, +-6.824150726963884236e-04, +-6.833300875642873149e-04, +-6.842439389490926997e-04, +-6.851566254337350999e-04, +-6.860681456031079853e-04, +-6.869784980441597140e-04, +-6.878876813457469484e-04, +-6.887956940987110914e-04, +-6.897025348959411701e-04, +-6.906082023322489358e-04, +-6.915126950044367350e-04, +-6.924160115113602845e-04, +-6.933181504537827382e-04, +-6.942191104345459907e-04, +-6.951188900584316828e-04, +-6.960174879322164956e-04, +-6.969149026647426240e-04, +-6.978111328667917918e-04, +-6.987061771511563759e-04, +-6.996000341326952428e-04, +-7.004927024282148109e-04, +-7.013841806565386571e-04, +-7.022744674385619432e-04, +-7.031635613971367075e-04, +-7.040514611571338814e-04, +-7.049381653455071483e-04, +-7.058236725911504802e-04, +-7.067079815250860292e-04, +-7.075910907802187731e-04, +-7.084729989916073488e-04, +-7.093537047963417545e-04, +-7.102332068334194252e-04, +-7.111115037440040318e-04, +-7.119885941712668625e-04, +-7.128644767603845456e-04, +-7.137391501585734193e-04, +-7.146126130151546916e-04, +-7.154848639814372383e-04, +-7.163559017107947987e-04, +-7.172257248586329063e-04, +-7.180943320824707474e-04, +-7.189617220418179945e-04, +-7.198278933982465815e-04, +-7.206928448154210605e-04, +-7.215565749590893870e-04, +-7.224190824969411052e-04, +-7.232803660988724364e-04, +-7.241404244367435255e-04, +-7.249992561845650324e-04, +-7.258568600183570776e-04, +-7.267132346162133178e-04, +-7.275683786583629631e-04, +-7.284222908270483699e-04, +-7.292749698065960568e-04, +-7.301264142834679866e-04, +-7.309766229461545561e-04, +-7.318255944852272883e-04, +-7.326733275934036674e-04, +-7.335198209654328642e-04, +-7.343650732981543911e-04, +-7.352090832905599019e-04, +-7.360518496436743632e-04, +-7.368933710606247927e-04, +-7.377336462466895905e-04, +-7.385726739091753737e-04, +-7.394104527575839437e-04, +-7.402469815033907831e-04, +-7.410822588602905200e-04, +-7.419162835440685578e-04, +-7.427490542725823184e-04, +-7.435805697658053699e-04, +-7.444108287458750224e-04, +-7.452398299369950756e-04, +-7.460675720654866673e-04, +-7.468940538598446525e-04, +-7.477192740506343870e-04, +-7.485432313705629595e-04, +-7.493659245544402690e-04, +-7.501873523392477627e-04, +-7.510075134641135000e-04, +-7.518264066701860595e-04, +-7.526440307008605947e-04, +-7.534603843016458033e-04, +-7.542754662201543855e-04, +-7.550892752061579049e-04, +-7.559018100115485160e-04, +-7.567130693904182198e-04, +-7.575230520989492504e-04, +-7.583317568954738149e-04, +-7.591391825405242920e-04, +-7.599453277967284977e-04, +-7.607501914288725695e-04, +-7.615537722039291552e-04, +-7.623560688910492817e-04, +-7.631570802614300823e-04, +-7.639568050885609104e-04, +-7.647552421480138720e-04, +-7.655523902175328382e-04, +-7.663482480770757296e-04, +-7.671428145087041441e-04, +-7.679360882967124855e-04, +-7.687280682275186763e-04, +-7.695187530897115366e-04, +-7.703081416741108496e-04, +-7.710962327736574232e-04, +-7.718830251834735883e-04, +-7.726685177009165418e-04, +-7.734527091254683002e-04, +-7.742355982587985829e-04, +-7.750171839048166375e-04, +-7.757974648695698666e-04, +-7.765764399612871960e-04, +-7.773541079904501983e-04, +-7.781304677696598447e-04, +-7.789055181137984844e-04, +-7.796792578398300264e-04, +-7.804516857670132021e-04, +-7.812228007167995418e-04, +-7.819926015127975959e-04, +-7.827610869808318073e-04, +-7.835282559489730857e-04, +-7.842941072474595527e-04, +-7.850586397087450053e-04, +-7.858218521674874236e-04, +-7.865837434606027471e-04, +-7.873443124271751027e-04, +-7.881035579085012574e-04, +-7.888614787481334437e-04, +-7.896180737918596275e-04, +-7.903733418875878236e-04, +-7.911272818855541542e-04, +-7.918798926382139948e-04, +-7.926311730001566478e-04, +-7.933811218283113404e-04, +-7.941297379817585742e-04, +-7.948770203218728054e-04, +-7.956229677122198798e-04, +-7.963675790185970396e-04, +-7.971108531090858327e-04, +-7.978527888539638582e-04, +-7.985933851257453163e-04, +-7.993326407992404218e-04, +-8.000705547514470927e-04, +-8.008071258616164360e-04, +-8.015423530112936222e-04, +-8.022762350842241015e-04, +-8.030087709664040195e-04, +-8.037399595461342102e-04, +-8.044697997138991995e-04, +-8.051982903625083676e-04, +-8.059254303869829760e-04, +-8.066512186845951980e-04, +-8.073756541549353396e-04, +-8.080987356998037448e-04, +-8.088204622232657640e-04, +-8.095408326317009772e-04, +-8.102598458337117960e-04, +-8.109775007401624942e-04, +-8.116937962642440437e-04, +-8.124087313213682960e-04, +-8.131223048292366123e-04, +-8.138345157078112407e-04, +-8.145453628793838377e-04, +-8.152548452684695414e-04, +-8.159629618018708315e-04, +-8.166697114086992129e-04, +-8.173750930203704454e-04, +-8.180791055704894014e-04, +-8.187817479950404518e-04, +-8.194830192322841416e-04, +-8.201829182227368068e-04, +-8.208814439092291214e-04, +-8.215785952368579587e-04, +-8.222743711530749707e-04, +-8.229687706075700365e-04, +-8.236617925523433614e-04, +-8.243534359417283540e-04, +-8.250436997323247305e-04, +-8.257325828830267044e-04, +-8.264200843550736182e-04, +-8.271062031120135147e-04, +-8.277909381196201953e-04, +-8.284742883460790523e-04, +-8.291562527618102354e-04, +-8.298368303396094900e-04, +-8.305160200545393025e-04, +-8.311938208839732452e-04, +-8.318702318076571242e-04, +-8.325452518075976329e-04, +-8.332188798681306558e-04, +-8.338911149759549880e-04, +-8.345619561200464656e-04, +-8.352314022917057797e-04, +-8.358994524846083494e-04, +-8.365661056947062014e-04, +-8.372313609202829392e-04, +-8.378952171619964608e-04, +-8.385576734227953664e-04, +-8.392187287079563634e-04, +-8.398783820251415127e-04, +-8.405366323842816765e-04, +-8.411934787977283067e-04, +-8.418489202800608908e-04, +-8.425029558482932755e-04, +-8.431555845217684987e-04, +-8.438068053221376482e-04, +-8.444566172733994347e-04, +-8.451050194019442104e-04, +-8.457520107364695098e-04, +-8.463975903080277544e-04, +-8.470417571500158446e-04, +-8.476845102982244907e-04, +-8.483258487907520190e-04, +-8.489657716680558712e-04, +-8.496042779729767822e-04, +-8.502413667507275046e-04, +-8.508770370487914354e-04, +-8.515112879171096412e-04, +-8.521441184079586685e-04, +-8.527755275759534709e-04, +-8.534055144780924038e-04, +-8.540340781737220961e-04, +-8.546612177246042368e-04, +-8.552869321948195153e-04, +-8.559112206508238908e-04, +-8.565340821614891419e-04, +-8.571555157980163472e-04, +-8.577755206339804459e-04, +-8.583940957453752322e-04, +-8.590112402105303056e-04, +-8.596269531101549807e-04, +-8.602412335273769937e-04, +-8.608540805476679091e-04, +-8.614654932588796570e-04, +-8.620754707512912627e-04, +-8.626840121175115934e-04, +-8.632911164525933082e-04, +-8.638967828539299669e-04, +-8.645010104213119752e-04, +-8.651037982569574842e-04, +-8.657051454654369300e-04, +-8.663050511537152094e-04, +-8.669035144311916866e-04, +-8.675005344096200707e-04, +-8.680961102031535190e-04, +-8.686902409283839928e-04, +-8.692829257042633279e-04, +-8.698741636521566860e-04, +-8.704639538958175091e-04, +-8.710522955614333814e-04, +-8.716391877776088993e-04, +-8.722246296752753569e-04, +-8.728086203878490396e-04, +-8.733911590511464398e-04, +-8.739722448033617050e-04, +-8.745518767851075126e-04, +-8.751300541394444518e-04, +-8.757067760118091406e-04, +-8.762820415500648585e-04, +-8.768558499044787780e-04, +-8.774282002277794274e-04, +-8.779990916750683282e-04, +-8.785685234038698686e-04, +-8.791364945741730452e-04, +-8.797030043483424497e-04, +-8.802680518911754071e-04, +-8.808316363699262609e-04, +-8.813937569542377439e-04, +-8.819544128161843459e-04, +-8.825136031303079838e-04, +-8.830713270735229175e-04, +-8.836275838252279644e-04, +-8.841823725672203057e-04, +-8.847356924837262776e-04, +-8.852875427614466906e-04, +-8.858379225894808277e-04, +-8.863868311593634149e-04, +-8.869342676651047370e-04, +-8.874802313031192975e-04, +-8.880247212722593196e-04, +-8.885677367738591993e-04, +-8.891092770116565749e-04, +-8.896493411918336355e-04, +-8.901879285230563689e-04, +-8.907250382163841391e-04, +-8.912606694853885151e-04, +-8.917948215460012656e-04, +-8.923274936166812176e-04, +-8.928586849183338088e-04, +-8.933883946742470113e-04, +-8.939166221102289164e-04, +-8.944433664545386716e-04, +-8.949686269378573150e-04, +-8.954924027933285416e-04, +-8.960146932565872177e-04, +-8.965354975656925941e-04, +-8.970548149611724332e-04, +-8.975726446860038182e-04, +-8.980889859856659545e-04, +-8.986038381080597211e-04, +-8.991172003035541836e-04, +-8.996290718250042661e-04, +-9.001394519277456556e-04, +-9.006483398695080663e-04, +-9.011557349105583535e-04, +-9.016616363136289568e-04, +-9.021660433438902530e-04, +-9.026689552690033563e-04, +-9.031703713590813042e-04, +-9.036702908867567116e-04, +-9.041687131270897222e-04, +-9.046656373576308918e-04, +-9.051610628584243331e-04, +-9.056549889119737797e-04, +-9.061474148032531029e-04, +-9.066383398197484875e-04, +-9.071277632513993425e-04, +-9.076156843906219365e-04, +-9.081021025323548265e-04, +-9.085870169739631219e-04, +-9.090704270153579644e-04, +-9.095523319588889747e-04, +-9.100327311093971616e-04, +-9.105116237742500503e-04, +-9.109890092632639451e-04, +-9.114648868887487067e-04, +-9.119392559655316050e-04, +-9.124121158109046266e-04, +-9.128834657446528809e-04, +-9.133533050890844159e-04, +-9.138216331689716712e-04, +-9.142884493115790165e-04, +-9.147537528467034095e-04, +-9.152175431066053319e-04, +-9.156798194260512905e-04, +-9.161405811423062274e-04, +-9.165998275951444708e-04, +-9.170575581268554811e-04, +-9.175137720821753291e-04, +-9.179684688083939240e-04, +-9.184216476553055735e-04, +-9.188733079751796023e-04, +-9.193234491227985153e-04, +-9.197720704554744782e-04, +-9.202191713330020459e-04, +-9.206647511176920982e-04, +-9.211088091743592629e-04, +-9.215513448703532493e-04, +-9.219923575755021444e-04, +-9.224318466621529624e-04, +-9.228698115051818356e-04, +-9.233062514819897863e-04, +-9.237411659724310614e-04, +-9.241745543589452959e-04, +-9.246064160264383597e-04, +-9.250367503623768998e-04, +-9.254655567567055072e-04, +-9.258928346019017945e-04, +-9.263185832929823589e-04, +-9.267428022274572458e-04, +-9.271654908053579211e-04, +-9.275866484292667616e-04, +-9.280062745042640376e-04, +-9.284243684379466692e-04, +-9.288409296404697519e-04, +-9.292559575244828049e-04, +-9.296694515051663089e-04, +-9.300814110002493789e-04, +-9.304918354299631430e-04, +-9.309007242170690404e-04, +-9.313080767868848423e-04, +-9.317138925672218764e-04, +-9.321181709884679683e-04, +-9.325209114834765280e-04, +-9.329221134876887391e-04, +-9.333217764390766384e-04, +-9.337198997781173118e-04, +-9.341164829478344192e-04, +-9.345115253937996041e-04, +-9.349050265641093999e-04, +-9.352969859093857724e-04, +-9.356874028828224147e-04, +-9.360762769401186111e-04, +-9.364636075395280264e-04, +-9.368493941418324679e-04, +-9.372336362103719180e-04, +-9.376163332110349930e-04, +-9.379974846122059260e-04, +-9.383770898848558563e-04, +-9.387551485025077014e-04, +-9.391316599411702378e-04, +-9.395066236794599648e-04, +-9.398800391985002740e-04, +-9.402519059819871520e-04, +-9.406222235161438606e-04, +-9.409909912897396938e-04, +-9.413582087941176242e-04, +-9.417238755231460571e-04, +-9.420879909732385619e-04, +-9.424505546433926875e-04, +-9.428115660351233914e-04, +-9.431710246525023969e-04, +-9.435289300021784675e-04, +-9.438852815933253650e-04, +-9.442400789376778451e-04, +-9.445933215495381629e-04, +-9.449450089457415948e-04, +-9.452951406457072879e-04, +-9.456437161713867603e-04, +-9.459907350472872116e-04, +-9.463361968005007960e-04, +-9.466801009606522557e-04, +-9.470224470599220143e-04, +-9.473632346330771847e-04, +-9.477024632174224552e-04, +-9.480401323528171113e-04, +-9.483762415817158014e-04, +-9.487107904490986064e-04, +-9.490437785025186354e-04, +-9.493752052921087484e-04, +-9.497050703705341764e-04, +-9.500333732930708007e-04, +-9.503601136174998770e-04, +-9.506852909042094084e-04, +-9.510089047161610770e-04, +-9.513309546188338656e-04, +-9.516514401803185998e-04, +-9.519703609712668827e-04, +-9.522877165648852395e-04, +-9.526035065369444421e-04, +-9.529177304658108423e-04, +-9.532303879323975829e-04, +-9.535414785201960395e-04, +-9.538510018152539195e-04, +-9.541589574062229670e-04, +-9.544653448842974888e-04, +-9.547701638432481812e-04, +-9.550734138794280932e-04, +-9.553750945917758794e-04, +-9.556752055817585535e-04, +-9.559737464534691755e-04, +-9.562707168135362121e-04, +-9.565661162711949859e-04, +-9.568599444382361752e-04, +-9.571522009290235958e-04, +-9.574428853605214135e-04, +-9.577319973522507770e-04, +-9.580195365263057547e-04, +-9.583055025073836932e-04, +-9.585898949227401140e-04, +-9.588727134022062776e-04, +-9.591539575782184572e-04, +-9.594336270857665473e-04, +-9.597117215624240963e-04, +-9.599882406483629428e-04, +-9.602631839863170040e-04, +-9.605365512216204387e-04, +-9.608083420021708938e-04, +-9.610785559784555242e-04, +-9.613471928035603178e-04, +-9.616142521331153426e-04, +-9.618797336253717255e-04, +-9.621436369411612115e-04, +-9.624059617438817434e-04, +-9.626667076995208813e-04, +-9.629258744766693544e-04, +-9.631834617464843070e-04, +-9.634394691827076213e-04, +-9.636938964616893364e-04, +-9.639467432623466652e-04, +-9.641980092661901237e-04, +-9.644476941573111714e-04, +-9.646957976224005337e-04, +-9.649423193507476607e-04, +-9.651872590341907445e-04, +-9.654306163671904457e-04, +-9.656723910468009448e-04, +-9.659125827726443552e-04, +-9.661511912469406471e-04, +-9.663882161744984317e-04, +-9.666236572627282973e-04, +-9.668575142216250277e-04, +-9.670897867637626155e-04, +-9.673204746043319920e-04, +-9.675495774610960329e-04, +-9.677770950544088572e-04, +-9.680030271072323066e-04, +-9.682273733451203339e-04, +-9.684501334961980769e-04, +-9.686713072912085882e-04, +-9.688908944634769477e-04, +-9.691088947489176356e-04, +-9.693253078860633717e-04, +-9.695401336160074362e-04, +-9.697533716824654690e-04, +-9.699650218317388238e-04, +-9.701750838127137008e-04, +-9.703835573768931303e-04, +-9.705904422783587010e-04, +-9.707957382737928938e-04, +-9.709994451224833109e-04, +-9.712015625863037018e-04, +-9.714020904297216612e-04, +-9.716010284198165186e-04, +-9.717983763262549434e-04, +-9.719941339212976672e-04, +-9.721883009798183489e-04, +-9.723808772792671452e-04, +-9.725718625997223192e-04, +-9.727612567238192245e-04, +-9.729490594368254410e-04, +-9.731352705266069474e-04, +-9.733198897836068710e-04, +-9.735029170008784472e-04, +-9.736843519740858875e-04, +-9.738641945014766231e-04, +-9.740424443839027727e-04, +-9.742191014248121434e-04, +-9.743941654302720832e-04, +-9.745676362089264379e-04, +-9.747395135720233073e-04, +-9.749097973334281634e-04, +-9.750784873096014077e-04, +-9.752455833195788557e-04, +-9.754110851850307171e-04, +-9.755749927302202881e-04, +-9.757373057819937598e-04, +-9.758980241698194660e-04, +-9.760571477257567671e-04, +-9.762146762844754570e-04, +-9.763706096832392833e-04, +-9.765249477619091997e-04, +-9.766776903629636412e-04, +-9.768288373314729361e-04, +-9.769783885151045108e-04, +-9.771263437641458747e-04, +-9.772727029314697087e-04, +-9.774174658725520801e-04, +-9.775606324454878381e-04, +-9.777022025109572204e-04, +-9.778421759322475371e-04, +-9.779805525752553394e-04, +-9.781173323084723249e-04, +-9.782525150030022508e-04, +-9.783861005325403346e-04, +-9.785180887733869147e-04, +-9.786484796044576419e-04, +-9.787772729072607113e-04, +-9.789044685659031506e-04, +-9.790300664671064326e-04, +-9.791540665001912964e-04, +-9.792764685570734106e-04, +-9.793972725322867921e-04, +-9.795164783229595197e-04, +-9.796340858288213240e-04, +-9.797500949522072733e-04, +-9.798645055980601589e-04, +-9.799773176739242069e-04, +-9.800885310899364045e-04, +-9.801981457588562069e-04, +-9.803061615960379990e-04, +-9.804125785194282763e-04, +-9.805173964495871117e-04, +-9.806206153096862048e-04, +-9.807222350254832938e-04, +-9.808222555253542484e-04, +-9.809206767402598934e-04, +-9.810174986037880750e-04, +-9.811127210521085589e-04, +-9.812063440240064230e-04, +-9.812983674608664452e-04, +-9.813887913066739709e-04, +-9.814776155080194662e-04, +-9.815648400140946153e-04, +-9.816504647767029454e-04, +-9.817344897502322879e-04, +-9.818169148916914245e-04, +-9.818977401606745255e-04, +-9.819769655193988801e-04, +-9.820545909326658645e-04, +-9.821306163678837110e-04, +-9.822050417950714107e-04, +-9.822778671868413660e-04, +-9.823490925184056796e-04, +-9.824187177675876466e-04, +-9.824867429148054915e-04, +-9.825531679430784399e-04, +-9.826179928380325730e-04, +-9.826812175878906364e-04, +-9.827428421834794123e-04, +-9.828028666182229978e-04, +-9.828612908881519117e-04, +-9.829181149918890005e-04, +-9.829733389306700379e-04, +-9.830269627083142343e-04, +-9.830789863312639192e-04, +-9.831294098085383536e-04, +-9.831782331517684246e-04, +-9.832254563751881889e-04, +-9.832710794956231633e-04, +-9.833151025325033347e-04, +-9.833575255078547041e-04, +-9.833983484463040565e-04, +-9.834375713750763588e-04, +-9.834751943239990971e-04, +-9.835112173254923016e-04, +-9.835456404145767866e-04, +-9.835784636288721992e-04, +-9.836096870085920315e-04, +-9.836393105965601010e-04, +-9.836673344381814937e-04, +-9.836937585814629469e-04, +-9.837185830770150182e-04, +-9.837418079780414597e-04, +-9.837634333403385677e-04, +-9.837834592223010377e-04, +-9.838018856849223975e-04, +-9.838187127917889362e-04, +-9.838339406090851249e-04, +-9.838475692055894967e-04, +-9.838595986526711776e-04, +-9.838700290243007282e-04, +-9.838788603970397353e-04, +-9.838860928500423302e-04, +-9.838917264650612598e-04, +-9.838957613264383457e-04, +-9.838981975211127246e-04, +-9.838990351386123906e-04, +-9.838982742710628698e-04, +-9.838959150131750767e-04, +-9.838919574622585415e-04, +-9.838864017182112186e-04, +-9.838792478835268595e-04, +-9.838704960632809176e-04, +-9.838601463651528833e-04, +-9.838481988994011301e-04, +-9.838346537788798286e-04, +-9.838195111190324409e-04, +-9.838027710378880342e-04, +-9.837844336560753761e-04, +-9.837644990967984310e-04, +-9.837429674858569600e-04, +-9.837198389516415339e-04, +-9.836951136251250762e-04, +-9.836687916398711030e-04, +-9.836408731320224474e-04, +-9.836113582403235942e-04, +-9.835802471060929239e-04, +-9.835475398732361572e-04, +-9.835132366882504747e-04, +-9.834773377002123743e-04, +-9.834398430607848261e-04, +-9.834007529242157555e-04, +-9.833600674473371751e-04, +-9.833177867895638840e-04, +-9.832739111128949855e-04, +-9.832284405819099841e-04, +-9.831813753637718215e-04, +-9.831327156282277432e-04, +-9.830824615475993247e-04, +-9.830306132967996015e-04, +-9.829771710533092167e-04, +-9.829221349972074289e-04, +-9.828655053111309131e-04, +-9.828072821803121410e-04, +-9.827474657925533603e-04, +-9.826860563382424241e-04, +-9.826230540103393467e-04, +-9.825584590043834592e-04, +-9.824922715184890732e-04, +-9.824244917533524191e-04, +-9.823551199122384191e-04, +-9.822841562009919630e-04, +-9.822116008280340049e-04, +-9.821374540043576601e-04, +-9.820617159435292894e-04, +-9.819843868616908843e-04, +-9.819054669775559470e-04, +-9.818249565124103576e-04, +-9.817428556901121577e-04, +-9.816591647370956700e-04, +-9.815738838823604394e-04, +-9.814870133574725344e-04, +-9.813985533965805929e-04, +-9.813085042363939216e-04, +-9.812168661161898685e-04, +-9.811236392778157744e-04, +-9.810288239656922253e-04, +-9.809324204267972237e-04, +-9.808344289106831013e-04, +-9.807348496694632926e-04, +-9.806336829578242605e-04, +-9.805309290330079322e-04, +-9.804265881548251439e-04, +-9.803206605856560740e-04, +-9.802131465904328957e-04, +-9.801040464366540892e-04, +-9.799933603943896451e-04, +-9.798810887362621996e-04, +-9.797672317374533230e-04, +-9.796517896757082899e-04, +-9.795347628313349955e-04, +-9.794161514872035210e-04, +-9.792959559287231497e-04, +-9.791741764438859508e-04, +-9.790508133232266649e-04, +-9.789258668598402671e-04, +-9.787993373493767638e-04, +-9.786712250900437941e-04, +-9.785415303826001249e-04, +-9.784102535303625895e-04, +-9.782773948392034860e-04, +-9.781429546175347475e-04, +-9.780069331763415526e-04, +-9.778693308291396078e-04, +-9.777301478920083239e-04, +-9.775893846835797575e-04, +-9.774470415250221308e-04, +-9.773031187400610820e-04, +-9.771576166549733773e-04, +-9.770105355985791041e-04, +-9.768618759022427555e-04, +-9.767116378998810366e-04, +-9.765598219279502876e-04, +-9.764064283254526638e-04, +-9.762514574339449178e-04, +-9.760949095975071741e-04, +-9.759367851627795756e-04, +-9.757770844789355035e-04, +-9.756158078976976235e-04, +-9.754529557733185871e-04, +-9.752885284625901390e-04, +-9.751225263248612229e-04, +-9.749549497220025285e-04, +-9.747857990184192849e-04, +-9.746150745810649215e-04, +-9.744427767794278409e-04, +-9.742689059855261062e-04, +-9.740934625739114524e-04, +-9.739164469216794783e-04, +-9.737378594084511061e-04, +-9.735577004163754010e-04, +-9.733759703301438819e-04, +-9.731926695369769696e-04, +-9.730077984266127106e-04, +-9.728213573913235823e-04, +-9.726333468259296122e-04, +-9.724437671277516484e-04, +-9.722526186966542940e-04, +-9.720599019350154415e-04, +-9.718656172477496908e-04, +-9.716697650422951226e-04, +-9.714723457286015889e-04, +-9.712733597191549988e-04, +-9.710728074289637661e-04, +-9.708706892755433054e-04, +-9.706670056789415109e-04, +-9.704617570617281308e-04, +-9.702549438489753604e-04, +-9.700465664682892840e-04, +-9.698366253497906842e-04, +-9.696251209261082119e-04, +-9.694120536323923721e-04, +-9.691974239063131389e-04, +-9.689812321880364281e-04, +-9.687634789202648634e-04, +-9.685441645481848673e-04, +-9.683232895195239068e-04, +-9.681008542844992109e-04, +-9.678768592958411892e-04, +-9.676513050087907214e-04, +-9.674241918811007836e-04, +-9.671955203730179087e-04, +-9.669652909473067971e-04, +-9.667335040692368736e-04, +-9.665001602065686256e-04, +-9.662652598295799495e-04, +-9.660288034110411058e-04, +-9.657907914262345598e-04, +-9.655512243529305871e-04, +-9.653101026713930199e-04, +-9.650674268644156761e-04, +-9.648231974172583915e-04, +-9.645774148176824731e-04, +-9.643300795559634929e-04, +-9.640811921248494372e-04, +-9.638307530195963776e-04, +-9.635787627379446179e-04, +-9.633252217801269342e-04, +-9.630701306488829950e-04, +-9.628134898494130657e-04, +-9.625552998894283153e-04, +-9.622955612791282655e-04, +-9.620342745311805154e-04, +-9.617714401607596652e-04, +-9.615070586855183673e-04, +-9.612411306255828815e-04, +-9.609736565035746506e-04, +-9.607046368446030358e-04, +-9.604340721762328996e-04, +-9.601619630285409841e-04, +-9.598883099340514008e-04, +-9.596131134277934190e-04, +-9.593363740472639518e-04, +-9.590580923324240874e-04, +-9.587782688257241335e-04, +-9.584969040720896314e-04, +-9.582139986189019487e-04, +-9.579295530160330824e-04, +-9.576435678158224567e-04, +-9.573560435730669484e-04, +-9.570669808450384510e-04, +-9.567763801914915727e-04, +-9.564842421746214607e-04, +-9.561905673591135661e-04, +-9.558953563120840130e-04, +-9.555986096031634071e-04, +-9.553003278044025102e-04, +-9.550005114903139820e-04, +-9.546991612379075081e-04, +-9.543962776266163997e-04, +-9.540918612383371671e-04, +-9.537859126574321214e-04, +-9.534784324707281820e-04, +-9.531694212674815319e-04, +-9.528588796394213108e-04, +-9.525468081807228352e-04, +-9.522332074880226691e-04, +-9.519180781603863144e-04, +-9.516014207993456165e-04, +-9.512832360088847774e-04, +-9.509635243954187803e-04, +-9.506422865678043404e-04, +-9.503195231373787188e-04, +-9.499952347178794920e-04, +-9.496694219255193614e-04, +-9.493420853789241373e-04, +-9.490132256991815280e-04, +-9.486828435098212985e-04, +-9.483509394367804681e-04, +-9.480175141084670612e-04, +-9.476825681557134867e-04, +-9.473461022117684064e-04, +-9.470081169123399948e-04, +-9.466686128955602688e-04, +-9.463275908019769559e-04, +-9.459850512745882978e-04, +-9.456409949588160530e-04, +-9.452954225024886919e-04, +-9.449483345558994021e-04, +-9.445997317717253145e-04, +-9.442496148050928814e-04, +-9.438979843135522890e-04, +-9.435448409570439555e-04, +-9.431901853979837496e-04, +-9.428340183011564134e-04, +-9.424763403337751934e-04, +-9.421171521654824908e-04, +-9.417564544683386949e-04, +-9.413942479167923668e-04, +-9.410305331877298965e-04, +-9.406653109604479635e-04, +-9.402985819166304439e-04, +-9.399303467403931876e-04, +-9.395606061182514923e-04, +-9.391893607391370172e-04, +-9.388166112943700271e-04, +-9.384423584776636212e-04, +-9.380666029851843397e-04, +-9.376893455154512247e-04, +-9.373105867693924155e-04, +-9.369303274503508949e-04, +-9.365485682640584683e-04, +-9.361653099186470397e-04, +-9.357805531246284449e-04, +-9.353942985949225330e-04, +-9.350065470448503356e-04, +-9.346172991920937345e-04, +-9.342265557567502139e-04, +-9.338343174613054302e-04, +-9.334405850306162983e-04, +-9.330453591919183644e-04, +-9.326486406748794736e-04, +-9.322504302114938439e-04, +-9.318507285361669586e-04, +-9.314495363856897629e-04, +-9.310468544992071133e-04, +-9.306426836182704696e-04, +-9.302370244867772886e-04, +-9.298298778510252337e-04, +-9.294212444596903827e-04, +-9.290111250637827752e-04, +-9.285995204167210061e-04, +-9.281864312742909174e-04, +-9.277718583946194687e-04, +-9.273558025382266706e-04, +-9.269382644679945767e-04, +-9.265192449491489604e-04, +-9.260987447493026830e-04, +-9.256767646384279381e-04, +-9.252533053888340256e-04, +-9.248283677752203689e-04, +-9.244019525746033318e-04, +-9.239740605664135790e-04, +-9.235446925323870064e-04, +-9.231138492566150471e-04, +-9.226815315255667898e-04, +-9.222477401280533083e-04, +-9.218124758552134583e-04, +-9.213757395005588722e-04, +-9.209375318599341683e-04, +-9.204978537315448156e-04, +-9.200567059159062838e-04, +-9.196140892159067109e-04, +-9.191700044367693894e-04, +-9.187244523860424667e-04, +-9.182774338736013299e-04, +-9.178289497117130078e-04, +-9.173790007149200528e-04, +-9.169275877001015814e-04, +-9.164747114865211958e-04, +-9.160203728957127091e-04, +-9.155645727515762059e-04, +-9.151073118803100623e-04, +-9.146485911104600608e-04, +-9.141884112728974887e-04, +-9.137267732007944192e-04, +-9.132636777296606820e-04, +-9.127991256973337804e-04, +-9.123331179439407275e-04, +-9.118656553119491122e-04, +-9.113967386461480167e-04, +-9.109263687936035650e-04, +-9.104545466037288533e-04, +-9.099812729282457865e-04, +-9.095065486211569971e-04, +-9.090303745388090542e-04, +-9.085527515398166779e-04, +-9.080736804851283336e-04, +-9.075931622380007530e-04, +-9.071111976639518798e-04, +-9.066277876308355714e-04, +-9.061429330088046274e-04, +-9.056566346702751196e-04, +-9.051688934899936121e-04, +-9.046797103449965042e-04, +-9.041890861145802146e-04, +-9.036970216803641735e-04, +-9.032035179262486472e-04, +-9.027085757384330613e-04, +-9.022121960053748006e-04, +-9.017143796178075325e-04, +-9.012151274688127642e-04, +-9.007144404536914731e-04, +-9.002123194700204856e-04, +-8.997087654177156855e-04, +-8.992037791989141620e-04, +-8.986973617180293947e-04, +-8.981895138817747818e-04, +-8.976802365991187532e-04, +-8.971695307813210918e-04, +-8.966573973418657129e-04, +-8.961438371965413287e-04, +-8.956288512634018751e-04, +-8.951124404627288896e-04, +-8.945946057171039363e-04, +-8.940753479513618767e-04, +-8.935546680925803530e-04, +-8.930325670700755593e-04, +-8.925090458154938573e-04, +-8.919841052626499046e-04, +-8.914577463476723715e-04, +-8.909299700088930268e-04, +-8.904007771869207897e-04, +-8.898701688246175509e-04, +-8.893381458670562151e-04, +-8.888047092615855354e-04, +-8.882698599577953111e-04, +-8.877335989074844032e-04, +-8.871959270647219922e-04, +-8.866568453858163527e-04, +-8.861163548292723532e-04, +-8.855744563558681087e-04, +-8.850311509286104203e-04, +-8.844864395127019236e-04, +-8.839403230756096106e-04, +-8.833928025870254729e-04, +-8.828438790188318074e-04, +-8.822935533451852419e-04, +-8.817418265423970390e-04, +-8.811886995890884627e-04, +-8.806341734660254371e-04, +-8.800782491561968263e-04, +-8.795209276448412135e-04, +-8.789622099193996306e-04, +-8.784020969694983187e-04, +-8.778405897869949156e-04, +-8.772776893659580723e-04, +-8.767133967026639841e-04, +-8.761477127955616959e-04, +-8.755806386453394551e-04, +-8.750121752548821030e-04, +-8.744423236292554616e-04, +-8.738710847757028650e-04, +-8.732984597037421947e-04, +-8.727244494250084540e-04, +-8.721490549533453826e-04, +-8.715722773048039393e-04, +-8.709941174976162806e-04, +-8.704145765522152767e-04, +-8.698336554911775906e-04, +-8.692513553392998979e-04, +-8.686676771235620235e-04, +-8.680826218730867180e-04, +-8.674961906192081790e-04, +-8.669083843954398507e-04, +-8.663192042374297545e-04, +-8.657286511830386598e-04, +-8.651367262722927049e-04, +-8.645434305473496776e-04, +-8.639487650525792470e-04, +-8.633527308345088610e-04, +-8.627553289417905702e-04, +-8.621565604252909082e-04, +-8.615564263379862659e-04, +-8.609549277350473512e-04, +-8.603520656737995067e-04, +-8.597478412136853052e-04, +-8.591422554163366488e-04, +-8.585353093455377980e-04, +-8.579270040671784251e-04, +-8.573173406493394839e-04, +-8.567063201622386734e-04, +-8.560939436782058270e-04, +-8.554802122717462300e-04, +-8.548651270194899867e-04, +-8.542486890002215115e-04, +-8.536308992948314980e-04, +-8.530117589863300386e-04, +-8.523912691599401905e-04, +-8.517694309029341529e-04, +-8.511462453047257499e-04, +-8.505217134568796456e-04, +-8.498958364530861910e-04, +-8.492686153891170799e-04, +-8.486400513629044958e-04, +-8.480101454744824567e-04, +-8.473788988260224850e-04, +-8.467463125217599904e-04, +-8.461123876680893543e-04, +-8.454771253735174179e-04, +-8.448405267486283534e-04, +-8.442025929060968919e-04, +-8.435633249607929485e-04, +-8.429227240295846229e-04, +-8.422807912315035403e-04, +-8.416375276876728604e-04, +-8.409929345212795214e-04, +-8.403470128576524117e-04, +-8.396997638241612133e-04, +-8.390511885503134379e-04, +-8.384012881676973982e-04, +-8.377500638099517416e-04, +-8.370975166128442717e-04, +-8.364436477142203402e-04, +-8.357884582539694537e-04, +-8.351319493740980236e-04, +-8.344741222186929366e-04, +-8.338149779338763440e-04, +-8.331545176678794955e-04, +-8.324927425710098878e-04, +-8.318296537956036685e-04, +-8.311652524961168171e-04, +-8.304995398290027390e-04, +-8.298325169528725101e-04, +-8.291641850283204291e-04, +-8.284945452180107533e-04, +-8.278235986866938536e-04, +-8.271513466011746639e-04, +-8.264777901302709394e-04, +-8.258029304448927287e-04, +-8.251267687180000900e-04, +-8.244493061245582047e-04, +-8.237705438416192353e-04, +-8.230904830482643200e-04, +-8.224091249256304612e-04, +-8.217264706568527376e-04, +-8.210425214271416076e-04, +-8.203572784237482150e-04, +-8.196707428359242733e-04, +-8.189829158549370280e-04, +-8.182937986741756166e-04, +-8.176033924889603574e-04, +-8.169116984966585428e-04, +-8.162187178966853057e-04, +-8.155244518904604693e-04, +-8.148289016814431324e-04, +-8.141320684750579439e-04, +-8.134339534787927897e-04, +-8.127345579021463167e-04, +-8.120338829565823969e-04, +-8.113319298556191401e-04, +-8.106286998147814058e-04, +-8.099241940515471356e-04, +-8.092184137854488337e-04, +-8.085113602380152378e-04, +-8.078030346327296852e-04, +-8.070934381951286665e-04, +-8.063825721526809379e-04, +-8.056704377348984343e-04, +-8.049570361732736028e-04, +-8.042423687012477439e-04, +-8.035264365542872309e-04, +-8.028092409698478395e-04, +-8.020907831873126236e-04, +-8.013710644480938295e-04, +-8.006500859955823727e-04, +-7.999278490750911337e-04, +-7.992043549339564396e-04, +-7.984796048214838540e-04, +-7.977535999888979781e-04, +-7.970263416894358011e-04, +-7.962978311782876106e-04, +-7.955680697126154242e-04, +-7.948370585515129828e-04, +-7.941047989560090026e-04, +-7.933712921891908831e-04, +-7.926365395159964316e-04, +-7.919005422033350769e-04, +-7.911633015200932907e-04, +-7.904248187371040128e-04, +-7.896850951270998134e-04, +-7.889441319647986540e-04, +-7.882019305268456654e-04, +-7.874584920918366749e-04, +-7.867138179402578162e-04, +-7.859679093545754100e-04, +-7.852207676191840305e-04, +-7.844723940203788583e-04, +-7.837227898463652214e-04, +-7.829719563873662564e-04, +-7.822198949354170188e-04, +-7.814666067845532421e-04, +-7.807120932306616098e-04, +-7.799563555715953314e-04, +-7.791993951071209080e-04, +-7.784412131388645725e-04, +-7.776818109704132292e-04, +-7.769211899072591592e-04, +-7.761593512567467861e-04, +-7.753962963281800123e-04, +-7.746320264327555402e-04, +-7.738665428835182032e-04, +-7.730998469954614713e-04, +-7.723319400854698801e-04, +-7.715628234722719759e-04, +-7.707924984765295463e-04, +-7.700209664207959860e-04, +-7.692482286294559076e-04, +-7.684742864288425599e-04, +-7.676991411470854981e-04, +-7.669227941143126788e-04, +-7.661452466624214764e-04, +-7.653665001251978373e-04, +-7.645865558383356866e-04, +-7.638054151393977890e-04, +-7.630230793677602371e-04, +-7.622395498647130656e-04, +-7.614548279734091856e-04, +-7.606689150388062709e-04, +-7.598818124077751784e-04, +-7.590935214290195007e-04, +-7.583040434531171988e-04, +-7.575133798324557672e-04, +-7.567215319212563032e-04, +-7.559285010756909258e-04, +-7.551342886536645260e-04, +-7.543388960149467141e-04, +-7.535423245211756143e-04, +-7.527445755358121117e-04, +-7.519456504241618612e-04, +-7.511455505533181504e-04, +-7.503442772922485271e-04, +-7.495418320117491545e-04, +-7.487382160843889748e-04, +-7.479334308846123831e-04, +-7.471274777886801385e-04, +-7.463203581746200325e-04, +-7.455120734223296720e-04, +-7.447026249135137036e-04, +-7.438920140316390359e-04, +-7.430802421620315507e-04, +-7.422673106918250370e-04, +-7.414532210098976565e-04, +-7.406379745070054092e-04, +-7.398215725756273091e-04, +-7.390040166100967896e-04, +-7.381853080065363263e-04, +-7.373654481628069126e-04, +-7.365444384786164807e-04, +-7.357222803554524636e-04, +-7.348989751965416799e-04, +-7.340745244069357689e-04, +-7.332489293934764960e-04, +-7.324221915647204009e-04, +-7.315943123310604448e-04, +-7.307652931046528270e-04, +-7.299351352993766525e-04, +-7.291038403309488573e-04, +-7.282714096167602772e-04, +-7.274378445760898860e-04, +-7.266031466298735354e-04, +-7.257673172007955698e-04, +-7.249303577134144855e-04, +-7.240922695939287432e-04, +-7.232530542703023181e-04, +-7.224127131722889866e-04, +-7.215712477313851632e-04, +-7.207286593807776419e-04, +-7.198849495554470292e-04, +-7.190401196920956448e-04, +-7.181941712291796138e-04, +-7.173471056068322135e-04, +-7.164989242669753296e-04, +-7.156496286532580903e-04, +-7.147992202110202203e-04, +-7.139477003873052679e-04, +-7.130950706309882158e-04, +-7.122413323925368481e-04, +-7.113864871242241454e-04, +-7.105305362799667389e-04, +-7.096734813154442810e-04, +-7.088153236880494635e-04, +-7.079560648568213391e-04, +-7.070957062825627406e-04, +-7.062342494277771806e-04, +-7.053716957566095449e-04, +-7.045080467349590673e-04, +-7.036433038304183967e-04, +-7.027774685122164600e-04, +-7.019105422513267738e-04, +-7.010425265204113911e-04, +-7.001734227937562831e-04, +-6.993032325474085988e-04, +-6.984319572590170708e-04, +-6.975595984079641793e-04, +-6.966861574753090147e-04, +-6.958116359436991322e-04, +-6.949360352975934635e-04, +-6.940593570229998312e-04, +-6.931816026076054876e-04, +-6.923027735408036768e-04, +-6.914228713136427859e-04, +-6.905418974187710508e-04, +-6.896598533505515901e-04, +-6.887767406049925822e-04, +-6.878925606797004280e-04, +-6.870073150739809068e-04, +-6.861210052887672939e-04, +-6.852336328266509348e-04, +-6.843451991918282282e-04, +-6.834557058901050705e-04, +-6.825651544290459345e-04, +-6.816735463177234179e-04, +-6.807808830668637436e-04, +-6.798871661888520723e-04, +-6.789923971976806775e-04, +-6.780965776089881939e-04, +-6.771997089399610630e-04, +-6.763017927094694924e-04, +-6.754028304379981751e-04, +-6.745028236475735395e-04, +-6.736017738618998172e-04, +-6.726996826062806543e-04, +-6.717965514075888633e-04, +-6.708923817942716262e-04, +-6.699871752964991394e-04, +-6.690809334458917195e-04, +-6.681736577757658091e-04, +-6.672653498209486864e-04, +-6.663560111179136656e-04, +-6.654456432047178632e-04, +-6.645342476209460366e-04, +-6.636218259078158601e-04, +-6.627083796081276179e-04, +-6.617939102661914543e-04, +-6.608784194279550923e-04, +-6.599619086409305420e-04, +-6.590443794541418418e-04, +-6.581258334182293586e-04, +-6.572062720854064200e-04, +-6.562856970093744208e-04, +-6.553641097454568311e-04, +-6.544415118505278548e-04, +-6.535179048829575701e-04, +-6.525932904027415991e-04, +-6.516676699713178783e-04, +-6.507410451518133142e-04, +-6.498134175087750099e-04, +-6.488847886083037300e-04, +-6.479551600180773197e-04, +-6.470245333073113480e-04, +-6.460929100466826719e-04, +-6.451602918084617085e-04, +-6.442266801664225549e-04, +-6.432920766958809353e-04, +-6.423564829736114765e-04, +-6.414199005779645845e-04, +-6.404823310888119094e-04, +-6.395437760874857387e-04, +-6.386042371568142334e-04, +-6.376637158812497978e-04, +-6.367222138466299046e-04, +-6.357797326402915864e-04, +-6.348362738511885298e-04, +-6.338918390696326012e-04, +-6.329464298875273846e-04, +-6.320000478981878779e-04, +-6.310526946964747181e-04, +-6.301043718787329231e-04, +-6.291550810427313936e-04, +-6.282048237877767543e-04, +-6.272536017146577341e-04, +-6.263014164255691638e-04, +-6.253482695242426224e-04, +-6.243941626158783492e-04, +-6.234390973070748788e-04, +-6.224830752059661932e-04, +-6.215260979221395388e-04, +-6.205681670665809998e-04, +-6.196092842518129747e-04, +-6.186494510917276432e-04, +-6.176886692017313817e-04, +-6.167269401986739648e-04, +-6.157642657007903440e-04, +-6.148006473278180666e-04, +-6.138360867009348253e-04, +-6.128705854426898291e-04, +-6.119041451771300034e-04, +-6.109367675297338544e-04, +-6.099684541273422966e-04, +-6.089992065982863722e-04, +-6.080290265722993219e-04, +-6.070579156805530141e-04, +-6.060858755555958207e-04, +-6.051129078313714814e-04, +-6.041390141433585327e-04, +-6.031641961283183391e-04, +-6.021884554244155479e-04, +-6.012117936713555662e-04, +-6.002342125101064628e-04, +-5.992557135830581293e-04, +-5.982762985340424463e-04, +-5.972959690082558712e-04, +-5.963147266523109377e-04, +-5.953325731141439906e-04, +-5.943495100431319539e-04, +-5.933655390900413737e-04, +-5.923806619069476448e-04, +-5.913948801473707531e-04, +-5.904081954661994898e-04, +-5.894206095196542631e-04, +-5.884321239652967475e-04, +-5.874427404621866602e-04, +-5.864524606705926032e-04, +-5.854612862522517308e-04, +-5.844692188701676536e-04, +-5.834762601887690577e-04, +-5.824824118738292566e-04, +-5.814876755924054761e-04, +-5.804920530129697174e-04, +-5.794955458053329712e-04, +-5.784981556405785399e-04, +-5.774998841911979956e-04, +-5.765007331310096489e-04, +-5.755007041351053142e-04, +-5.744997988799653435e-04, +-5.734980190433987789e-04, +-5.724953663044675661e-04, +-5.714918423436257666e-04, +-5.704874488426408445e-04, +-5.694821874845257953e-04, +-5.684760599537025351e-04, +-5.674690679357826751e-04, +-5.664612131178424752e-04, +-5.654524971881277244e-04, +-5.644429218362060708e-04, +-5.634324887529883804e-04, +-5.624211996306808159e-04, +-5.614090561627126282e-04, +-5.603960600438712483e-04, +-5.593822129702052514e-04, +-5.583675166390701097e-04, +-5.573519727490365777e-04, +-5.563355830000199292e-04, +-5.553183490932072069e-04, +-5.543002727310153725e-04, +-5.532813556171074613e-04, +-5.522615994565481653e-04, +-5.512410059555303971e-04, +-5.502195768215295719e-04, +-5.491973137633269185e-04, +-5.481742184909303315e-04, +-5.471502927156281487e-04, +-5.461255381498881026e-04, +-5.450999565074903528e-04, +-5.440735495034629754e-04, +-5.430463188540020575e-04, +-5.420182662766109090e-04, +-5.409893934900318656e-04, +-5.399597022141645409e-04, +-5.389291941702099159e-04, +-5.378978710805963973e-04, +-5.368657346689051152e-04, +-5.358327866600053405e-04, +-5.347990287799881315e-04, +-5.337644627560880544e-04, +-5.327290903168419110e-04, +-5.316929131919081097e-04, +-5.306559331122144433e-04, +-5.296181518098984570e-04, +-5.285795710182242908e-04, +-5.275401924717243842e-04, +-5.265000179061262928e-04, +-5.254590490582792877e-04, +-5.244172876662915074e-04, +-5.233747354694577494e-04, +-5.223313942081843353e-04, +-5.212872656241289730e-04, +-5.202423514601018772e-04, +-5.191966534601133660e-04, +-5.181501733692972077e-04, +-5.171029129339337147e-04, +-5.160548739016042417e-04, +-5.150060580209211113e-04, +-5.139564670416715960e-04, +-5.129061027148499024e-04, +-5.118549667926070804e-04, +-5.108030610281713351e-04, +-5.097503871759911410e-04, +-5.086969469916360377e-04, +-5.076427422318405399e-04, +-5.065877746544095953e-04, +-5.055320460183563864e-04, +-5.044755580838241596e-04, +-5.034183126120431824e-04, +-5.023603113653458139e-04, +-5.013015561073314117e-04, +-5.002420486025555999e-04, +-4.991817906167880922e-04, +-4.981207839169134871e-04, +-4.970590302708600364e-04, +-4.959965314477597816e-04, +-4.949332892177577339e-04, +-4.938693053521732044e-04, +-4.928045816234283543e-04, +-4.917391198049704580e-04, +-4.906729216714151263e-04, +-4.896059889984711710e-04, +-4.885383235628636264e-04, +-4.874699271424748044e-04, +-4.864008015162740923e-04, +-4.853309484642373420e-04, +-4.842603697674885757e-04, +-4.831890672082300546e-04, +-4.821170425696626443e-04, +-4.810442976361512099e-04, +-4.799708341930057696e-04, +-4.788966540267678329e-04, +-4.778217589248965236e-04, +-4.767461506759284456e-04, +-4.756698310695075529e-04, +-4.745928018963238375e-04, +-4.735150649480437241e-04, +-4.724366220174550275e-04, +-4.713574748983828189e-04, +-4.702776253856209040e-04, +-4.691970752750711433e-04, +-4.681158263636465782e-04, +-4.670338804493113843e-04, +-4.659512393309857867e-04, +-4.648679048086879818e-04, +-4.637838786834554789e-04, +-4.626991627572952267e-04, +-4.616137588332093087e-04, +-4.605276687153517191e-04, +-4.594408942087434885e-04, +-4.583534371194368864e-04, +-4.572652992545328228e-04, +-4.561764824221125974e-04, +-4.550869884312748709e-04, +-4.539968190920410686e-04, +-4.529059762154987118e-04, +-4.518144616137215121e-04, +-4.507222770996944529e-04, +-4.496294244874623255e-04, +-4.485359055920436970e-04, +-4.474417222293645578e-04, +-4.463468762163939549e-04, +-4.452513693710734104e-04, +-4.441552035122383170e-04, +-4.430583804597853928e-04, +-4.419609020344736762e-04, +-4.408627700580960464e-04, +-4.397639863533994264e-04, +-4.386645527440076963e-04, +-4.375644710545713669e-04, +-4.364637431106830668e-04, +-4.353623707388069603e-04, +-4.342603557664216998e-04, +-4.331577000219394356e-04, +-4.320544053346377284e-04, +-4.309504735347936106e-04, +-4.298459064536163114e-04, +-4.287407059231622018e-04, +-4.276348737764877747e-04, +-4.265284118475407373e-04, +-4.254213219712095050e-04, +-4.243136059832466563e-04, +-4.232052657202898041e-04, +-4.220963030200309478e-04, +-4.209867197209176673e-04, +-4.198765176623239933e-04, +-4.187656986845686219e-04, +-4.176542646288677516e-04, +-4.165422173372517627e-04, +-4.154295586527155960e-04, +-4.143162904191138017e-04, +-4.132024144812101421e-04, +-4.120879326845694967e-04, +-4.109728468757123062e-04, +-4.098571589020281081e-04, +-4.087408706117278312e-04, +-4.076239838538662933e-04, +-4.065065004785108484e-04, +-4.053884223364134158e-04, +-4.042697512793105873e-04, +-4.031504891596961616e-04, +-4.020306378309835031e-04, +-4.009101991474428757e-04, +-3.997891749641098273e-04, +-3.986675671369383335e-04, +-3.975453775227260418e-04, +-3.964226079790253128e-04, +-3.952992603643032486e-04, +-3.941753365378502941e-04, +-3.930508383597180588e-04, +-3.919257676908494744e-04, +-3.908001263930116292e-04, +-3.896739163287152655e-04, +-3.885471393613614184e-04, +-3.874197973551597751e-04, +-3.862918921750577140e-04, +-3.851634256869066754e-04, +-3.840343997572339373e-04, +-3.829048162535445650e-04, +-3.817746770439876401e-04, +-3.806439839975339612e-04, +-3.795127389839885661e-04, +-3.783809438739498573e-04, +-3.772486005387228124e-04, +-3.761157108504677355e-04, +-3.749822766821247978e-04, +-3.738482999073312039e-04, +-3.727137824005748233e-04, +-3.715787260370831142e-04, +-3.704431326928774417e-04, +-3.693070042446907871e-04, +-3.681703425699880223e-04, +-3.670331495471439360e-04, +-3.658954270551334226e-04, +-3.647571769737097255e-04, +-3.636184011834203743e-04, +-3.624791015655331344e-04, +-3.613392800020814345e-04, +-3.601989383757607174e-04, +-3.590580785700762706e-04, +-3.579167024692657601e-04, +-3.567748119582193249e-04, +-3.556324089226271367e-04, +-3.544894952489038853e-04, +-3.533460728241038314e-04, +-3.522021435360770942e-04, +-3.510577092733825361e-04, +-3.499127719252171807e-04, +-3.487673333815574303e-04, +-3.476213955330842019e-04, +-3.464749602711031840e-04, +-3.453280294877174956e-04, +-3.441806050756251035e-04, +-3.430326889282884996e-04, +-3.418842829398604328e-04, +-3.407353890050996131e-04, +-3.395860090195271068e-04, +-3.384361448793380290e-04, +-3.372857984813281427e-04, +-3.361349717230421776e-04, +-3.349836665026950633e-04, +-3.338318847190887163e-04, +-3.326796282717684361e-04, +-3.315268990609339470e-04, +-3.303736989873701712e-04, +-3.292200299526157141e-04, +-3.280658938587305198e-04, +-3.269112926086037299e-04, +-3.257562281056121606e-04, +-3.246007022537747465e-04, +-3.234447169579037873e-04, +-3.222882741232904204e-04, +-3.211313756558838942e-04, +-3.199740234623129264e-04, +-3.188162194498320905e-04, +-3.176579655262400125e-04, +-3.164992636000334364e-04, +-3.153401155802978278e-04, +-3.141805233767578438e-04, +-3.130204888996704305e-04, +-3.118600140599754188e-04, +-3.106991007692181663e-04, +-3.095377509394907941e-04, +-3.083759664834572313e-04, +-3.072137493145314581e-04, +-3.060511013465356568e-04, +-3.048880244940089385e-04, +-3.037245206719732635e-04, +-3.025605917961083236e-04, +-3.013962397826726661e-04, +-3.002314665484215653e-04, +-2.990662740107600040e-04, +-2.979006640876622793e-04, +-2.967346386975900372e-04, +-2.955681997596456873e-04, +-2.944013491934909790e-04, +-2.932340889192649818e-04, +-2.920664208577387465e-04, +-2.908983469302330689e-04, +-2.897298690585370113e-04, +-2.885609891650877182e-04, +-2.873917091727570990e-04, +-2.862220310050359257e-04, +-2.850519565859453079e-04, +-2.838814878399358618e-04, +-2.827106266921653745e-04, +-2.815393750681625387e-04, +-2.803677348940025933e-04, +-2.791957080963312302e-04, +-2.780232966023094628e-04, +-2.768505023395314972e-04, +-2.756773272361792856e-04, +-2.745037732209395305e-04, +-2.733298422229235624e-04, +-2.721555361718209164e-04, +-2.709808569977905333e-04, +-2.698058066315100361e-04, +-2.686303870040954991e-04, +-2.674546000471226441e-04, +-2.662784476928086613e-04, +-2.651019318736932908e-04, +-2.639250545228191800e-04, +-2.627478175737556817e-04, +-2.615702229605177558e-04, +-2.603922726176118854e-04, +-2.592139684799330771e-04, +-2.580353124829144816e-04, +-2.568563065624473790e-04, +-2.556769526548004060e-04, +-2.544972526967711275e-04, +-2.533172086256073232e-04, +-2.521368223789481155e-04, +-2.509560958948503701e-04, +-2.497750311119657459e-04, +-2.485936299691990088e-04, +-2.474118944060181135e-04, +-2.462298263622163838e-04, +-2.450474277780916770e-04, +-2.438647005943662342e-04, +-2.426816467521010284e-04, +-2.414982681928547084e-04, +-2.403145668585989771e-04, +-2.391305446916373303e-04, +-2.379462036347582273e-04, +-2.367615456311558360e-04, +-2.355765726243451126e-04, +-2.343912865583191736e-04, +-2.332056893774627491e-04, +-2.320197830264763162e-04, +-2.308335694505251766e-04, +-2.296470505951610957e-04, +-2.284602284062368135e-04, +-2.272731048300909824e-04, +-2.260856818133053869e-04, +-2.248979613030172215e-04, +-2.237099452465765364e-04, +-2.225216355917235863e-04, +-2.213330342866158269e-04, +-2.201441432797694221e-04, +-2.189549645199776850e-04, +-2.177654999564659563e-04, +-2.165757515387833193e-04, +-2.153857212168526361e-04, +-2.141954109408597149e-04, +-2.130048226614114409e-04, +-2.118139583294506665e-04, +-2.106228198962019739e-04, +-2.094314093131939829e-04, +-2.082397285324419573e-04, +-2.070477795061260410e-04, +-2.058555641867484672e-04, +-2.046630845272887349e-04, +-2.034703424808536015e-04, +-2.022773400009961631e-04, +-2.010840790414707168e-04, +-1.998905615564167495e-04, +-1.986967895002754274e-04, +-1.975027648277082265e-04, +-1.963084894937505373e-04, +-1.951139654537312976e-04, +-1.939191946631877480e-04, +-1.927241790780238602e-04, +-1.915289206544266911e-04, +-1.903334213487821675e-04, +-1.891376831178333251e-04, +-1.879417079185968526e-04, +-1.867454977082778998e-04, +-1.855490544444569944e-04, +-1.843523800848707081e-04, +-1.831554765875964585e-04, +-1.819583459109685108e-04, +-1.807609900134957951e-04, +-1.795634108540173810e-04, +-1.783656103916206749e-04, +-1.771675905855575291e-04, +-1.759693533954009099e-04, +-1.747709007809617116e-04, +-1.735722347022062488e-04, +-1.723733571194119480e-04, +-1.711742699930850838e-04, +-1.699749752838769425e-04, +-1.687754749527680829e-04, +-1.675757709608242279e-04, +-1.663758652695133662e-04, +-1.651757598403560707e-04, +-1.639754566350824360e-04, +-1.627749576157885565e-04, +-1.615742647446132983e-04, +-1.603733799839220174e-04, +-1.591723052963294361e-04, +-1.579710426446176506e-04, +-1.567695939917850012e-04, +-1.555679613009366220e-04, +-1.543661465354419216e-04, +-1.531641516588496624e-04, +-1.519619786348076220e-04, +-1.507596294272162780e-04, +-1.495571060001469514e-04, +-1.483544103177863766e-04, +-1.471515443444574634e-04, +-1.459485100448059704e-04, +-1.447453093834483282e-04, +-1.435419443252894194e-04, +-1.423384168352781454e-04, +-1.411347288785935294e-04, +-1.399308824205584411e-04, +-1.387268794265584171e-04, +-1.375227218621975420e-04, +-1.363184116932162119e-04, +-1.351139508854059157e-04, +-1.339093414047689656e-04, +-1.327045852174328991e-04, +-1.314996842895678085e-04, +-1.302946405875438486e-04, +-1.290894560778475906e-04, +-1.278841327269985651e-04, +-1.266786725017332788e-04, +-1.254730773687880217e-04, +-1.242673492950828560e-04, +-1.230614902476387829e-04, +-1.218555021934659212e-04, +-1.206493870998571766e-04, +-1.194431469340342228e-04, +-1.182367836633335775e-04, +-1.170302992552302383e-04, +-1.158236956772801788e-04, +-1.146169748970364728e-04, +-1.134101388822073567e-04, +-1.122031896005467119e-04, +-1.109961290199026370e-04, +-1.097889591081087292e-04, +-1.085816818331401150e-04, +-1.073742991630317688e-04, +-1.061668130658199524e-04, +-1.049592255095660269e-04, +-1.037515384625427458e-04, +-1.025437538929065275e-04, +-1.013358737688840200e-04, +-1.001279000587952206e-04, +-9.891983473096922070e-05, +-9.771167975379570496e-05, +-9.650343709561270934e-05, +-9.529510872486655448e-05, +-9.408669661002707469e-05, +-9.287820271950300945e-05, +-9.166962902180185555e-05, +-9.046097748544433700e-05, +-8.925225007888181600e-05, +-8.804344877065338026e-05, +-8.683457552930263048e-05, +-8.562563232329389862e-05, +-8.441662112116964697e-05, +-8.320754389146759443e-05, +-8.199840260263576927e-05, +-8.078919922321844982e-05, +-7.957993572163781968e-05, +-7.837061406637794330e-05, +-7.716123622590220397e-05, +-7.595180416856853276e-05, +-7.474231986278800021e-05, +-7.353278527694100748e-05, +-7.232320237929296255e-05, +-7.111357313815296673e-05, +-6.990389952178921982e-05, +-6.869418349834609217e-05, +-6.748442703600171348e-05, +-6.627463210285711311e-05, +-6.506480066698710986e-05, +-6.385493469635624558e-05, +-6.264503615884258348e-05, +-6.143510702242272717e-05, +-6.022514925484616024e-05, +-5.901516482381957419e-05, +-5.780515569703129682e-05, +-5.659512384209421581e-05, +-5.538507122646139387e-05, +-5.417499981758510768e-05, +-5.296491158280495820e-05, +-5.175480848939965488e-05, +-5.054469250447526154e-05, +-4.933456559512386255e-05, +-4.812442972833995056e-05, +-4.691428687096253005e-05, +-4.570413898969957289e-05, +-4.449398805131337629e-05, +-4.328383602226656393e-05, +-4.207368486901588451e-05, +-4.086353655790095222e-05, +-3.965339305506023463e-05, +-3.844325632661663427e-05, +-3.723312833845835774e-05, +-3.602301105642487678e-05, +-3.481290644622253664e-05, +-3.360281647334071339e-05, +-3.239274310321007356e-05, +-3.118268830111874497e-05, +-2.997265403212829107e-05, +-2.876264226123210609e-05, +-2.755265495327156896e-05, +-2.634269407285164493e-05, +-2.513276158449991095e-05, +-2.392285945258202173e-05, +-2.271298964121798230e-05, +-2.150315411446754652e-05, +-2.029335483608448606e-05, +-1.908359376983678244e-05, +-1.787387287915308222e-05, +-1.666419412730819720e-05, +-1.545455947744686545e-05, +-1.424497089252676117e-05, +-1.303543033523423361e-05, +-1.182593976814304775e-05, +-1.061650115363030280e-05, +-9.407116453792323482e-06, +-8.197787630603266937e-06, +-6.988516645804147893e-06, +-5.779305460953496296e-06, +-4.570156037343366371e-06, +-3.361070336023072186e-06, +-2.152050317984833550e-06, +-9.430979438369438027e-07, + 2.657848260375545538e-07, + 1.474596031322292368e-06, + 2.683333712094302824e-06, + 3.891995908638440227e-06, + 5.100580661423607072e-06, + 6.309086011186789875e-06, + 7.517509998882344560e-06, + 8.725850665792928549e-06, + 9.934106053371037843e-06, + 1.114227420332293782e-05, + 1.235035315769275327e-05, + 1.355834095870390893e-05, + 1.476623564884311786e-05, + 1.597403527094441221e-05, + 1.718173786803067689e-05, + 1.838934148339764648e-05, + 1.959684416069772754e-05, + 2.080424394375480002e-05, + 2.201153887678282962e-05, + 2.321872700420040488e-05, + 2.442580637071463748e-05, + 2.563277502140539119e-05, + 2.683963100156664278e-05, + 2.804637235679039586e-05, + 2.925299713305082175e-05, + 3.045950337654565427e-05, + 3.166588913378028992e-05, + 3.287215245165163739e-05, + 3.407829137728960719e-05, + 3.528430395814122542e-05, + 3.649018824205467975e-05, + 3.769594227712058545e-05, + 3.890156411178280444e-05, + 4.010705179478844318e-05, + 4.131240337527081451e-05, + 4.251761690272643223e-05, + 4.372269042682909072e-05, + 4.492762199775682648e-05, + 4.613240966600588936e-05, + 4.733705148236718824e-05, + 4.854154549798359112e-05, + 4.974588976443336806e-05, + 5.095008233357233810e-05, + 5.215412125764404451e-05, + 5.335800458922986119e-05, + 5.456173038135878170e-05, + 5.576529668735016247e-05, + 5.696870156089689469e-05, + 5.817194305612249434e-05, + 5.937501922755752075e-05, + 6.057792812995408999e-05, + 6.178066781863938571e-05, + 6.298323634919500641e-05, + 6.418563177770287599e-05, + 6.538785216055997395e-05, + 6.658989555456240172e-05, + 6.779176001698821569e-05, + 6.899344360544086845e-05, + 7.019494437793114732e-05, + 7.139626039296237913e-05, + 7.259738970937162168e-05, + 7.379833038641378431e-05, + 7.499908048384485392e-05, + 7.619963806176408938e-05, + 7.740000118069835890e-05, + 7.860016790168453940e-05, + 7.980013628611248334e-05, + 8.099990439580897670e-05, + 8.219947029312002983e-05, + 8.339883204072740344e-05, + 8.459798770189278438e-05, + 8.579693534013893542e-05, + 8.699567301960153235e-05, + 8.819419880484472766e-05, + 8.939251076083720325e-05, + 9.059060695300883348e-05, + 9.178848544733479221e-05, + 9.298614431017723217e-05, + 9.418358160836899889e-05, + 9.538079540929752089e-05, + 9.657778378074598755e-05, + 9.777454479100586228e-05, + 9.897107650882340415e-05, + 1.001673770034859298e-04, + 1.013634443447960771e-04, + 1.025592766028891173e-04, + 1.037548718485562909e-04, + 1.049502281530601818e-04, + 1.061453435881131146e-04, + 1.073402162259573175e-04, + 1.085348441393176923e-04, + 1.097292254015098814e-04, + 1.109233580862840083e-04, + 1.121172402679068860e-04, + 1.133108700212469787e-04, + 1.145042454216144818e-04, + 1.156973645448479491e-04, + 1.168902254673684495e-04, + 1.180828262661560936e-04, + 1.192751650185677249e-04, + 1.204672398026847188e-04, + 1.216590486970252892e-04, + 1.228505897806518110e-04, + 1.240418611332555780e-04, + 1.252328608349723117e-04, + 1.264235869665989343e-04, + 1.276140376094096068e-04, + 1.288042108452403238e-04, + 1.299941047565690902e-04, + 1.311837174263616934e-04, + 1.323730469381541840e-04, + 1.335620913761344892e-04, + 1.347508488249879140e-04, + 1.359393173699777787e-04, + 1.371274950970303660e-04, + 1.383153800925765735e-04, + 1.395029704436366439e-04, + 1.406902642379009383e-04, + 1.418772595635490910e-04, + 1.430639545094906213e-04, + 1.442503471650494575e-04, + 1.454364356203134841e-04, + 1.466222179659500374e-04, + 1.478076922931840045e-04, + 1.489928566938521963e-04, + 1.501777092604877526e-04, + 1.513622480861635832e-04, + 1.525464712645734392e-04, + 1.537303768901175107e-04, + 1.549139630577432930e-04, + 1.560972278630568259e-04, + 1.572801694022718717e-04, + 1.584627857723190127e-04, + 1.596450750706901770e-04, + 1.608270353955204687e-04, + 1.620086648456448442e-04, + 1.631899615205740703e-04, + 1.643709235203125781e-04, + 1.655515489457065463e-04, + 1.667318358981282895e-04, + 1.679117824797177650e-04, + 1.690913867932000464e-04, + 1.702706469419693232e-04, + 1.714495610301686429e-04, + 1.726281271625365512e-04, + 1.738063434444882987e-04, + 1.749842079821992699e-04, + 1.761617188824484250e-04, + 1.773388742526998312e-04, + 1.785156722011877189e-04, + 1.796921108367576458e-04, + 1.808681882689518780e-04, + 1.820439026080896479e-04, + 1.832192519650859030e-04, + 1.843942344516648661e-04, + 1.855688481801801937e-04, + 1.867430912636952340e-04, + 1.879169618160932630e-04, + 1.890904579517871896e-04, + 1.902635777860704844e-04, + 1.914363194349304263e-04, + 1.926086810150283424e-04, + 1.937806606437546589e-04, + 1.949522564393086439e-04, + 1.961234665205464564e-04, + 1.972942890070608624e-04, + 1.984647220192658297e-04, + 1.996347636782386953e-04, + 2.008044121058301845e-04, + 2.019736654246134539e-04, + 2.031425217579691195e-04, + 2.043109792300574741e-04, + 2.054790359656408682e-04, + 2.066466900904004864e-04, + 2.078139397307567223e-04, + 2.089807830138440251e-04, + 2.101472180675946543e-04, + 2.113132430206887517e-04, + 2.124788560026599164e-04, + 2.136440551437439035e-04, + 2.148088385749597504e-04, + 2.159732044281900069e-04, + 2.171371508360272671e-04, + 2.183006759318557009e-04, + 2.194637778499070534e-04, + 2.206264547252357352e-04, + 2.217887046935405795e-04, + 2.229505258915069621e-04, + 2.241119164564969366e-04, + 2.252728745267847772e-04, + 2.264333982413798199e-04, + 2.275934857401067210e-04, + 2.287531351636875850e-04, + 2.299123446535867069e-04, + 2.310711123520942459e-04, + 2.322294364024038264e-04, + 2.333873149484627294e-04, + 2.345447461350514719e-04, + 2.357017281078639030e-04, + 2.368582590133574484e-04, + 2.380143369988280285e-04, + 2.391699602124981229e-04, + 2.403251268033586665e-04, + 2.414798349212523166e-04, + 2.426340827169535478e-04, + 2.437878683419898945e-04, + 2.449411899488776836e-04, + 2.460940456908168312e-04, + 2.472464337220265664e-04, + 2.483983521975697628e-04, + 2.495497992733298727e-04, + 2.507007731060641067e-04, + 2.518512718534851830e-04, + 2.530012936741093759e-04, + 2.541508367273616299e-04, + 2.552998991735279627e-04, + 2.564484791738605245e-04, + 2.575965748904278699e-04, + 2.587441844861925323e-04, + 2.598913061250675651e-04, + 2.610379379718922557e-04, + 2.621840781922556715e-04, + 2.633297249528086933e-04, + 2.644748764210863687e-04, + 2.656195307654848729e-04, + 2.667636861553417398e-04, + 2.679073407608879940e-04, + 2.690504927533537527e-04, + 2.701931403048144311e-04, + 2.713352815882748227e-04, + 2.724769147777480831e-04, + 2.736180380481009603e-04, + 2.747586495751384709e-04, + 2.758987475356807157e-04, + 2.770383301074128262e-04, + 2.781773954689660089e-04, + 2.793159417999947400e-04, + 2.804539672810274172e-04, + 2.815914700935478370e-04, + 2.827284484200713599e-04, + 2.838649004439708964e-04, + 2.850008243496837180e-04, + 2.861362183225372806e-04, + 2.872710805488243595e-04, + 2.884054092158878338e-04, + 2.895392025119658086e-04, + 2.906724586262757486e-04, + 2.918051757490887463e-04, + 2.929373520715831546e-04, + 2.940689857859236792e-04, + 2.952000750853373814e-04, + 2.963306181639683949e-04, + 2.974606132169538199e-04, + 2.985900584405033580e-04, + 2.997189520317267608e-04, + 3.008472921888613507e-04, + 3.019750771109754365e-04, + 3.031023049982934118e-04, + 3.042289740520548089e-04, + 3.053550824743597996e-04, + 3.064806284684773799e-04, + 3.076056102386712471e-04, + 3.087300259901781157e-04, + 3.098538739292850210e-04, + 3.109771522632804762e-04, + 3.120998592005633254e-04, + 3.132219929504884625e-04, + 3.143435517234481461e-04, + 3.154645337309508208e-04, + 3.165849371854711721e-04, + 3.177047603005311166e-04, + 3.188240012907492954e-04, + 3.199426583718209083e-04, + 3.210607297603457048e-04, + 3.221782136741562267e-04, + 3.232951083320176463e-04, + 3.244114119538590271e-04, + 3.255271227605988755e-04, + 3.266422389742260762e-04, + 3.277567588178740524e-04, + 3.288706805156736929e-04, + 3.299840022928343967e-04, + 3.310967223757207262e-04, + 3.322088389917034375e-04, + 3.333203503692389524e-04, + 3.344312547379451445e-04, + 3.355415503284575737e-04, + 3.366512353725048382e-04, + 3.377603081029873422e-04, + 3.388687667538033891e-04, + 3.399766095600553978e-04, + 3.410838347578723636e-04, + 3.421904405844949687e-04, + 3.432964252783709917e-04, + 3.444017870788887025e-04, + 3.455065242267002794e-04, + 3.466106349635542463e-04, + 3.477141175322683670e-04, + 3.488169701767855906e-04, + 3.499191911422530350e-04, + 3.510207786748691149e-04, + 3.521217310219939135e-04, + 3.532220464320943217e-04, + 3.543217231548532716e-04, + 3.554207594410189238e-04, + 3.565191535424823508e-04, + 3.576169037123340237e-04, + 3.587140082048348639e-04, + 3.598104652752518785e-04, + 3.609062731801549601e-04, + 3.620014301772462879e-04, + 3.630959345253402157e-04, + 3.641897844844375399e-04, + 3.652829783156817515e-04, + 3.663755142814597047e-04, + 3.674673906452530269e-04, + 3.685586056717211141e-04, + 3.696491576267725261e-04, + 3.707390447774198657e-04, + 3.718282653918616901e-04, + 3.729168177395541768e-04, + 3.740047000910680635e-04, + 3.750919107181644330e-04, + 3.761784478938700661e-04, + 3.772643098923372535e-04, + 3.783494949889155707e-04, + 3.794340014602312411e-04, + 3.805178275840146937e-04, + 3.816009716393036345e-04, + 3.826834319062702786e-04, + 3.837652066663013099e-04, + 3.848462942020697101e-04, + 3.859266927973963057e-04, + 3.870064007373207830e-04, + 3.880854163081794259e-04, + 3.891637377974627057e-04, + 3.902413634938884106e-04, + 3.913182916874808465e-04, + 3.923945206694244158e-04, + 3.934700487321641767e-04, + 3.945448741693633431e-04, + 3.956189952759736487e-04, + 3.966924103482157775e-04, + 3.977651176834166792e-04, + 3.988371155802935761e-04, + 3.999084023387977291e-04, + 4.009789762600848937e-04, + 4.020488356465708310e-04, + 4.031179788020039490e-04, + 4.041864040313261999e-04, + 4.052541096407661042e-04, + 4.063210939378033518e-04, + 4.073873552312572729e-04, + 4.084528918311516378e-04, + 4.095177020487862142e-04, + 4.105817841967907065e-04, + 4.116451365891003072e-04, + 4.127077575407911685e-04, + 4.137696453683969901e-04, + 4.148307983896452325e-04, + 4.158912149235555623e-04, + 4.169508932905168852e-04, + 4.180098318121227099e-04, + 4.190680288113582267e-04, + 4.201254826124468391e-04, + 4.211821915409142943e-04, + 4.222381539236707030e-04, + 4.232933680888623833e-04, + 4.243478323659532841e-04, + 4.254015450857954583e-04, + 4.264545045804884961e-04, + 4.275067091834544434e-04, + 4.285581572295119610e-04, + 4.296088470547381431e-04, + 4.306587769965357381e-04, + 4.317079453937158187e-04, + 4.327563505863293511e-04, + 4.338039909158817589e-04, + 4.348508647250563428e-04, + 4.358969703580202427e-04, + 4.369423061602630541e-04, + 4.379868704785760112e-04, + 4.390306616611002345e-04, + 4.400736780574053346e-04, + 4.411159180183425038e-04, + 4.421573798961232283e-04, + 4.431980620443923095e-04, + 4.442379628180869724e-04, + 4.452770805735350936e-04, + 4.463154136684115082e-04, + 4.473529604618096760e-04, + 4.483897193142171236e-04, + 4.494256885873653372e-04, + 4.504608666445013548e-04, + 4.514952518502542470e-04, + 4.525288425704988870e-04, + 4.535616371726381140e-04, + 4.545936340254416209e-04, + 4.556248314990240535e-04, + 4.566552279649189528e-04, + 4.576848217960351704e-04, + 4.587136113667509229e-04, + 4.597415950527776159e-04, + 4.607687712312315102e-04, + 4.617951382807075557e-04, + 4.628206945811420229e-04, + 4.638454385138817836e-04, + 4.648693684617625902e-04, + 4.658924828089675333e-04, + 4.669147799410974060e-04, + 4.679362582452490922e-04, + 4.689569161098526106e-04, + 4.699767519248575979e-04, + 4.709957640815756112e-04, + 4.720139509727521734e-04, + 4.730313109926379510e-04, + 4.740478425368505186e-04, + 4.750635440024537763e-04, + 4.760784137880172016e-04, + 4.770924502934940936e-04, + 4.781056519202810952e-04, + 4.791180170712983164e-04, + 4.801295441508483873e-04, + 4.811402315646904010e-04, + 4.821500777201123927e-04, + 4.831590810257932120e-04, + 4.841672398918981496e-04, + 4.851745527300372501e-04, + 4.861810179533322066e-04, + 4.871866339764014536e-04, + 4.881913992151963979e-04, + 4.891953120872881899e-04, + 4.901983710116953902e-04, + 4.912005744088783314e-04, + 4.922019207007760893e-04, + 4.932024083108858467e-04, + 4.942020356641231398e-04, + 4.952008011869177013e-04, + 4.961987033071697676e-04, + 4.971957404543436449e-04, + 4.981919110593334855e-04, + 4.991872135545354951e-04, + 5.001816463738918434e-04, + 5.011752079528750516e-04, + 5.021678967283314332e-04, + 5.031597111387729618e-04, + 5.041506496241131589e-04, + 5.051407106258725506e-04, + 5.061298925870196148e-04, + 5.071181939520446160e-04, + 5.081056131670292101e-04, + 5.090921486795113539e-04, + 5.100777989385549098e-04, + 5.110625623948260830e-04, + 5.120464375004526916e-04, + 5.130294227090974584e-04, + 5.140115164760308700e-04, + 5.149927172579914225e-04, + 5.159730235132642265e-04, + 5.169524337017441075e-04, + 5.179309462848044176e-04, + 5.189085597253720620e-04, + 5.198852724879888653e-04, + 5.208610830386644448e-04, + 5.218359898450736440e-04, + 5.228099913762983839e-04, + 5.237830861031125915e-04, + 5.247552724978325799e-04, + 5.257265490342976407e-04, + 5.266969141879133042e-04, + 5.276663664357269081e-04, + 5.286349042562854582e-04, + 5.296025261297208474e-04, + 5.305692305378027643e-04, + 5.315350159638180215e-04, + 5.324998808926587014e-04, + 5.334638238107785712e-04, + 5.344268432062630140e-04, + 5.353889375688111393e-04, + 5.363501053895813929e-04, + 5.373103451614611977e-04, + 5.382696553789098528e-04, + 5.392280345379420539e-04, + 5.401854811361985831e-04, + 5.411419936729031576e-04, + 5.420975706489479734e-04, + 5.430522105667719493e-04, + 5.440059119304237190e-04, + 5.449586732456305864e-04, + 5.459104930196713489e-04, + 5.468613697614417828e-04, + 5.478113019815046255e-04, + 5.487602881920621446e-04, + 5.497083269068155174e-04, + 5.506554166412443380e-04, + 5.516015559123705865e-04, + 5.525467432388504610e-04, + 5.534909771410355265e-04, + 5.544342561408319853e-04, + 5.553765787618676446e-04, + 5.563179435293509698e-04, + 5.572583489701301738e-04, + 5.581977936127659667e-04, + 5.591362759874038369e-04, + 5.600737946258380192e-04, + 5.610103480615792572e-04, + 5.619459348297318546e-04, + 5.628805534670572102e-04, + 5.638142025120361587e-04, + 5.647468805047527445e-04, + 5.656785859869522268e-04, + 5.666093175021122029e-04, + 5.675390735952932052e-04, + 5.684678528133302799e-04, + 5.693956537045882825e-04, + 5.703224748192306515e-04, + 5.712483147090810639e-04, + 5.721731719275969814e-04, + 5.730970450299220165e-04, + 5.740199325729450222e-04, + 5.749418331151790948e-04, + 5.758627452168260837e-04, + 5.767826674398432701e-04, + 5.777015983478196596e-04, + 5.786195365060569718e-04, + 5.795364804815374398e-04, + 5.804524288430042579e-04, + 5.813673801608437285e-04, + 5.822813330071424003e-04, + 5.831942859557386755e-04, + 5.841062375821985241e-04, + 5.850171864636752967e-04, + 5.859271311791850031e-04, + 5.868360703093496817e-04, + 5.877440024365959172e-04, + 5.886509261450068465e-04, + 5.895568400203900303e-04, + 5.904617426503355661e-04, + 5.913656326241036564e-04, + 5.922685085326786017e-04, + 5.931703689688411175e-04, + 5.940712125270428915e-04, + 5.949710378034693591e-04, + 5.958698433961057313e-04, + 5.967676279046179493e-04, + 5.976643899304119904e-04, + 5.985601280766984864e-04, + 5.994548409483536205e-04, + 6.003485271520862029e-04, + 6.012411852962908695e-04, + 6.021328139911176882e-04, + 6.030234118485507631e-04, + 6.039129774821920451e-04, + 6.048015095075225155e-04, + 6.056890065417640592e-04, + 6.065754672038651532e-04, + 6.074608901145340427e-04, + 6.083452738963127928e-04, + 6.092286171734514122e-04, + 6.101109185719701946e-04, + 6.109921767197276990e-04, + 6.118723902462949813e-04, + 6.127515577830420059e-04, + 6.136296779631037097e-04, + 6.145067494214343212e-04, + 6.153827707947899040e-04, + 6.162577407216012892e-04, + 6.171316578422014320e-04, + 6.180045207986973677e-04, + 6.188763282349524306e-04, + 6.197470787966380791e-04, + 6.206167711312100431e-04, + 6.214854038879792306e-04, + 6.223529757180020069e-04, + 6.232194852741355972e-04, + 6.240849312111042225e-04, + 6.249493121853808139e-04, + 6.258126268552441493e-04, + 6.266748738808323050e-04, + 6.275360519241113223e-04, + 6.283961596487466208e-04, + 6.292551957203595210e-04, + 6.301131588062968509e-04, + 6.309700475757992148e-04, + 6.318258606998814050e-04, + 6.326805968513777223e-04, + 6.335342547050130989e-04, + 6.343868329372831863e-04, + 6.352383302265189732e-04, + 6.360887452529390444e-04, + 6.369380766985489667e-04, + 6.377863232471834643e-04, + 6.386334835845824216e-04, + 6.394795563982692355e-04, + 6.403245403776115308e-04, + 6.411684342138819839e-04, + 6.420112366001446986e-04, + 6.428529462313136442e-04, + 6.436935618042156481e-04, + 6.445330820174511839e-04, + 6.453715055715803124e-04, + 6.462088311688797115e-04, + 6.470450575136102575e-04, + 6.478801833118701158e-04, + 6.487142072715884524e-04, + 6.495471281025583937e-04, + 6.503789445164999102e-04, + 6.512096552269499867e-04, + 6.520392589493312525e-04, + 6.528677544009278038e-04, + 6.536951403009542668e-04, + 6.545214153704500886e-04, + 6.553465783323314704e-04, + 6.561706279114395057e-04, + 6.569935628345137260e-04, + 6.578153818300740314e-04, + 6.586360836286362297e-04, + 6.594556669625889793e-04, + 6.602741305661792614e-04, + 6.610914731755616024e-04, + 6.619076935287727037e-04, + 6.627227903658031074e-04, + 6.635367624284853067e-04, + 6.643496084605554370e-04, + 6.651613272077108469e-04, + 6.659719174174977751e-04, + 6.667813778393690298e-04, + 6.675897072247470891e-04, + 6.683969043269066823e-04, + 6.692029679010378903e-04, + 6.700078967043017648e-04, + 6.708116894957232099e-04, + 6.716143450362424810e-04, + 6.724158620887802371e-04, + 6.732162394181045095e-04, + 6.740154757909846582e-04, + 6.748135699760590992e-04, + 6.756105207438955866e-04, + 6.764063268670497588e-04, + 6.772009871199533579e-04, + 6.779945002789737520e-04, + 6.787868651224670613e-04, + 6.795780804306777610e-04, + 6.803681449857848680e-04, + 6.811570575719685114e-04, + 6.819448169752935973e-04, + 6.827314219837768124e-04, + 6.835168713874328113e-04, + 6.843011639781540869e-04, + 6.850842985498752265e-04, + 6.858662738983559637e-04, + 6.866470888214227380e-04, + 6.874267421188562637e-04, + 6.882052325922852773e-04, + 6.889825590454149795e-04, + 6.897587202838881488e-04, + 6.905337151152767926e-04, + 6.913075423491395026e-04, + 6.920802007969816634e-04, + 6.928516892723338410e-04, + 6.936220065906449888e-04, + 6.943911515693348144e-04, + 6.951591230278540614e-04, + 6.959259197875747880e-04, + 6.966915406718520581e-04, + 6.974559845060512636e-04, + 6.982192501175406426e-04, + 6.989813363355655128e-04, + 6.997422419914801819e-04, + 7.005019659185431416e-04, + 7.012605069520654955e-04, + 7.020178639293004784e-04, + 7.027740356894952812e-04, + 7.035290210739424425e-04, + 7.042828189258792341e-04, + 7.050354280905403535e-04, + 7.057868474152130013e-04, + 7.065370757491360506e-04, + 7.072861119435485105e-04, + 7.080339548517493743e-04, + 7.087806033289920180e-04, + 7.095260562325373267e-04, + 7.102703124217105059e-04, + 7.110133707577773752e-04, + 7.117552301040888912e-04, + 7.124958893259577663e-04, + 7.132353472907183162e-04, + 7.139736028677885846e-04, + 7.147106549284888482e-04, + 7.154465023462651787e-04, + 7.161811439965668196e-04, + 7.169145787568439098e-04, + 7.176468055065642884e-04, + 7.183778231272820161e-04, + 7.191076305025296059e-04, + 7.198362265178907728e-04, + 7.205636100609651975e-04, + 7.212897800214367224e-04, + 7.220147352909828207e-04, + 7.227384747633170976e-04, + 7.234609973342269115e-04, + 7.241823019015580874e-04, + 7.249023873651079053e-04, + 7.256212526268112587e-04, + 7.263388965906396062e-04, + 7.270553181625770108e-04, + 7.277705162506818313e-04, + 7.284844897650405351e-04, + 7.291972376178461942e-04, + 7.299087587233039432e-04, + 7.306190519976689260e-04, + 7.313281163593110231e-04, + 7.320359507286095749e-04, + 7.327425540280046654e-04, + 7.334479251820531743e-04, + 7.341520631173271885e-04, + 7.348549667624660426e-04, + 7.355566350482282533e-04, + 7.362570669073786531e-04, + 7.369562612748158928e-04, + 7.376542170874689002e-04, + 7.383509332843402485e-04, + 7.390464088065549445e-04, + 7.397406425972743440e-04, + 7.404336336017371340e-04, + 7.411253807673100734e-04, + 7.418158830433987634e-04, + 7.425051393814936177e-04, + 7.431931487352185428e-04, + 7.438799100602400821e-04, + 7.445654223143119768e-04, + 7.452496844573260146e-04, + 7.459326954512258360e-04, + 7.466144542600600597e-04, + 7.472949598499569130e-04, + 7.479742111891787663e-04, + 7.486522072480994742e-04, + 7.493289469991024597e-04, + 7.500044294167634027e-04, + 7.506786534777495174e-04, + 7.513516181607997118e-04, + 7.520233224467630763e-04, + 7.526937653186411680e-04, + 7.533629457615032259e-04, + 7.540308627625384296e-04, + 7.546975153110396361e-04, + 7.553629023984568310e-04, + 7.560270230183153799e-04, + 7.566898761662534329e-04, + 7.573514608400600890e-04, + 7.580117760396618432e-04, + 7.586708207670134077e-04, + 7.593285940262998069e-04, + 7.599850948237729881e-04, + 7.606403221678115613e-04, + 7.612942750689642756e-04, + 7.619469525398542839e-04, + 7.625983535952892984e-04, + 7.632484772521710590e-04, + 7.638973225295319800e-04, + 7.645448884485852399e-04, + 7.651911740326358766e-04, + 7.658361783071293604e-04, + 7.664799002996927927e-04, + 7.671223390400538087e-04, + 7.677634935600779814e-04, + 7.684033628938257430e-04, + 7.690419460774519872e-04, + 7.696792421492640746e-04, + 7.703152501497599960e-04, + 7.709499691215305778e-04, + 7.715833981093864419e-04, + 7.722155361601960259e-04, + 7.728463823230641511e-04, + 7.734759356492398657e-04, + 7.741041951920971456e-04, + 7.747311600071709985e-04, + 7.753568291521989887e-04, + 7.759812016870406811e-04, + 7.766042766737086493e-04, + 7.772260531764315760e-04, + 7.778465302615585183e-04, + 7.784657069976176711e-04, + 7.790835824552931653e-04, + 7.797001557074676771e-04, + 7.803154258292055142e-04, + 7.809293918976630607e-04, + 7.815420529922547689e-04, + 7.821534081945657720e-04, + 7.827634565882789176e-04, + 7.833721972593377233e-04, + 7.839796292958485817e-04, + 7.845857517880699180e-04, + 7.851905638284629313e-04, + 7.857940645116492017e-04, + 7.863962529344838744e-04, + 7.869971281959645864e-04, + 7.875966893972716903e-04, + 7.881949356418200799e-04, + 7.887918660351746214e-04, + 7.893874796850891854e-04, + 7.899817757015510991e-04, + 7.905747531966999392e-04, + 7.911664112848732855e-04, + 7.917567490826455355e-04, + 7.923457657087311931e-04, + 7.929334602841049988e-04, + 7.935198319318953518e-04, + 7.941048797774317991e-04, + 7.946886029482921974e-04, + 7.952710005742183626e-04, + 7.958520717871514147e-04, + 7.964318157212882648e-04, + 7.970102315129879399e-04, + 7.975873183008205889e-04, + 7.981630752256068393e-04, + 7.987375014303413606e-04, + 7.993105960602292937e-04, + 7.998823582627301613e-04, + 8.004527871874697218e-04, + 8.010218819863511005e-04, + 8.015896418134138427e-04, + 8.021560658249813659e-04, + 8.027211531796097851e-04, + 8.032849030379933704e-04, + 8.038473145631311887e-04, + 8.044083869202274658e-04, + 8.049681192766951644e-04, + 8.055265108021650907e-04, + 8.060835606685430327e-04, + 8.066392680499198794e-04, + 8.071936321226310350e-04, + 8.077466520652315908e-04, + 8.082983270585508608e-04, + 8.088486562856081388e-04, + 8.093976389316643065e-04, + 8.099452741842371210e-04, + 8.104915612330962273e-04, + 8.110364992701743622e-04, + 8.115800874897375738e-04, + 8.121223250882219410e-04, + 8.126632112643597744e-04, + 8.132027452190924467e-04, + 8.137409261556053037e-04, + 8.142777532793591061e-04, + 8.148132257980352780e-04, + 8.153473429215607341e-04, + 8.158801038621430086e-04, + 8.164115078342106240e-04, + 8.169415540544367263e-04, + 8.174702417417925365e-04, + 8.179975701174598554e-04, + 8.185235384048774676e-04, + 8.190481458297797389e-04, + 8.195713916201174693e-04, + 8.200932750061020208e-04, + 8.206137952202419627e-04, + 8.211329514972578536e-04, + 8.216507430741910954e-04, + 8.221671691902617939e-04, + 8.226822290870264027e-04, + 8.231959220082955397e-04, + 8.237082472001223867e-04, + 8.242192039108269756e-04, + 8.247287913910317497e-04, + 8.252370088935947774e-04, + 8.257438556736471568e-04, + 8.262493309886209886e-04, + 8.267534340981914790e-04, + 8.272561642643174893e-04, + 8.277575207512186594e-04, + 8.282575028254176913e-04, + 8.287561097557252787e-04, + 8.292533408131568407e-04, + 8.297491952710804065e-04, + 8.302436724051343248e-04, + 8.307367714932082899e-04, + 8.312284918154888786e-04, + 8.317188326544407932e-04, + 8.322077932948347256e-04, + 8.326953730237050735e-04, + 8.331815711303655527e-04, + 8.336663869064523487e-04, + 8.341498196458558114e-04, + 8.346318686447577522e-04, + 8.351125332016504175e-04, + 8.355918126173295492e-04, + 8.360697061948215271e-04, + 8.365462132395136896e-04, + 8.370213330590515512e-04, + 8.374950649633720878e-04, + 8.379674082647426596e-04, + 8.384383622776876103e-04, + 8.389079263190675224e-04, + 8.393760997080113462e-04, + 8.398428817659535882e-04, + 8.403082718166549102e-04, + 8.407722691861496548e-04, + 8.412348732027754433e-04, + 8.416960831972073289e-04, + 8.421558985023899248e-04, + 8.426143184535754603e-04, + 8.430713423883569573e-04, + 8.435269696465989495e-04, + 8.439811995704811758e-04, + 8.444340315045180964e-04, + 8.448854647955016464e-04, + 8.453354987925774553e-04, + 8.457841328471367524e-04, + 8.462313663129460367e-04, + 8.466771985460758458e-04, + 8.471216289048905633e-04, + 8.475646567500692364e-04, + 8.480062814446434139e-04, + 8.484465023539297093e-04, + 8.488853188455577729e-04, + 8.493227302895201654e-04, + 8.497587360580882232e-04, + 8.501933355258719073e-04, + 8.506265280697877101e-04, + 8.510583130691018071e-04, + 8.514886899054101071e-04, + 8.519176579625750440e-04, + 8.523452166268453804e-04, + 8.527713652867996126e-04, + 8.531961033332761480e-04, + 8.536194301595169615e-04, + 8.540413451610446476e-04, + 8.544618477357490477e-04, + 8.548809372838229569e-04, + 8.552986132077897716e-04, + 8.557148749125349308e-04, + 8.561297218052505136e-04, + 8.565431532954624529e-04, + 8.569551687950556886e-04, + 8.573657677182298237e-04, + 8.577749494815167970e-04, + 8.581827135038176376e-04, + 8.585890592063384966e-04, + 8.589939860126278356e-04, + 8.593974933486074348e-04, + 8.597995806424919450e-04, + 8.602002473248803946e-04, + 8.605994928286918961e-04, + 8.609973165891782231e-04, + 8.613937180439703222e-04, + 8.617886966330106594e-04, + 8.621822517985924675e-04, + 8.625743829853825149e-04, + 8.629650896403639679e-04, + 8.633543712128680494e-04, + 8.637422271546032039e-04, + 8.641286569196030562e-04, + 8.645136599642415896e-04, + 8.648972357472825860e-04, + 8.652793837298087187e-04, + 8.656601033752624273e-04, + 8.660393941494331236e-04, + 8.664172555204786592e-04, + 8.667936869589238074e-04, + 8.671686879375957533e-04, + 8.675422579317244908e-04, + 8.679143964188945756e-04, + 8.682851028790303802e-04, + 8.686543767944145253e-04, + 8.690222176496909152e-04, + 8.693886249318806764e-04, + 8.697535981303434506e-04, + 8.701171367367992963e-04, + 8.704792402453549261e-04, + 8.708399081524517736e-04, + 8.711991399568950502e-04, + 8.715569351598756453e-04, + 8.719132932649498527e-04, + 8.722682137779898216e-04, + 8.726216962072964227e-04, + 8.729737400634909363e-04, + 8.733243448595953912e-04, + 8.736735101109732596e-04, + 8.740212353353610068e-04, + 8.743675200528870650e-04, + 8.747123637860185989e-04, + 8.750557660596007536e-04, + 8.753977264008680394e-04, + 8.757382443394071429e-04, + 8.760773194071712388e-04, + 8.764149511385156601e-04, + 8.767511390701421704e-04, + 8.770858827411260683e-04, + 8.774191816929399323e-04, + 8.777510354694100349e-04, + 8.780814436167394370e-04, + 8.784104056835278281e-04, + 8.787379212207206778e-04, + 8.790639897816819853e-04, + 8.793886109220967013e-04, + 8.797117842000804497e-04, + 8.800335091761107885e-04, + 8.803537854130385944e-04, + 8.806726124760899058e-04, + 8.809899899328970394e-04, + 8.813059173534511020e-04, + 8.816203943101303970e-04, + 8.819334203776899072e-04, + 8.822449951332898095e-04, + 8.825551181564521069e-04, + 8.828637890290842640e-04, + 8.831710073354871217e-04, + 8.834767726623628118e-04, + 8.837810845987493797e-04, + 8.840839427361191216e-04, + 8.843853466683185196e-04, + 8.846852959915717110e-04, + 8.849837903044965350e-04, + 8.852808292080904373e-04, + 8.855764123057616958e-04, + 8.858705392032900638e-04, + 8.861632095088411900e-04, + 8.864544228329951326e-04, + 8.867441787886967035e-04, + 8.870324769912936317e-04, + 8.873193170585291908e-04, + 8.876046986105336342e-04, + 8.878886212698219177e-04, + 8.881710846613250334e-04, + 8.884520884123465329e-04, + 8.887316321525870304e-04, + 8.890097155141585142e-04, + 8.892863381315411955e-04, + 8.895614996416421633e-04, + 8.898351996837413919e-04, + 8.901074378995119064e-04, + 8.903782139330506827e-04, + 8.906475274308256300e-04, + 8.909153780417090928e-04, + 8.911817654169855484e-04, + 8.914466892103216833e-04, + 8.917101490777802706e-04, + 8.919721446778462997e-04, + 8.922326756713868604e-04, + 8.924917417216612263e-04, + 8.927493424943586933e-04, + 8.930054776575371053e-04, + 8.932601468816896411e-04, + 8.935133498396684868e-04, + 8.937650862067652831e-04, + 8.940153556606676493e-04, + 8.942641578814508347e-04, + 8.945114925515987520e-04, + 8.947573593560170964e-04, + 8.950017579819930132e-04, + 8.952446881192292500e-04, + 8.954861494598223646e-04, + 8.957261416982955759e-04, + 8.959646645315627687e-04, + 8.962017176589376008e-04, + 8.964373007821596325e-04, + 8.966714136053593066e-04, + 8.969040558350748621e-04, + 8.971352271802599237e-04, + 8.973649273522830679e-04, + 8.975931560648880330e-04, + 8.978199130342656015e-04, + 8.980451979789859460e-04, + 8.982690106200532732e-04, + 8.984913506808602868e-04, + 8.987122178872142091e-04, + 8.989316119673442613e-04, + 8.991495326518759686e-04, + 8.993659796738439531e-04, + 8.995809527687124258e-04, + 8.997944516743363718e-04, + 9.000064761309854028e-04, + 9.002170258813568761e-04, + 9.004261006705431515e-04, + 9.006337002460464451e-04, + 9.008398243578013805e-04, + 9.010444727581306450e-04, + 9.012476452017930198e-04, + 9.014493414459430476e-04, + 9.016495612501520662e-04, + 9.018483043764256640e-04, + 9.020455705891394955e-04, + 9.022413596551271016e-04, + 9.024356713436202781e-04, + 9.026285054262591593e-04, + 9.028198616771003493e-04, + 9.030097398726283061e-04, + 9.031981397917292122e-04, + 9.033850612157107076e-04, + 9.035705039282897460e-04, + 9.037544677156133036e-04, + 9.039369523662315990e-04, + 9.041179576711104535e-04, + 9.042974834236431085e-04, + 9.044755294196407929e-04, + 9.046520954573078954e-04, + 9.048271813372901025e-04, + 9.050007868626496789e-04, + 9.051729118388551678e-04, + 9.053435560737932083e-04, + 9.055127193777742821e-04, + 9.056804015635292436e-04, + 9.058466024461999961e-04, + 9.060113218433458885e-04, + 9.061745595749569424e-04, + 9.063363154634280485e-04, + 9.064965893335755545e-04, + 9.066553810126470230e-04, + 9.068126903302932591e-04, + 9.069685171185857663e-04, + 9.071228612120310576e-04, + 9.072757224475336843e-04, + 9.074271006644368939e-04, + 9.075769957044937898e-04, + 9.077254074118723190e-04, + 9.078723356331720772e-04, + 9.080177802174093466e-04, + 9.081617410160071216e-04, + 9.083042178828330555e-04, + 9.084452106741577188e-04, + 9.085847192486719466e-04, + 9.087227434674964880e-04, + 9.088592831941661766e-04, + 9.089943382946340505e-04, + 9.091279086372862058e-04, + 9.092599940929144749e-04, + 9.093905945347411464e-04, + 9.095197098384025930e-04, + 9.096473398819629333e-04, + 9.097734845459131640e-04, + 9.098981437131400431e-04, + 9.100213172689765057e-04, + 9.101430051011726073e-04, + 9.102632070998912953e-04, + 9.103819231577166488e-04, + 9.104991531696676483e-04, + 9.106148970331706368e-04, + 9.107291546480750406e-04, + 9.108419259166545623e-04, + 9.109532107436118424e-04, + 9.110630090360555830e-04, + 9.111713207035217980e-04, + 9.112781456579777161e-04, + 9.113834838138043255e-04, + 9.114873350877934462e-04, + 9.115896993991815574e-04, + 9.116905766696024177e-04, + 9.117899668231278310e-04, + 9.118878697862444448e-04, + 9.119842854878572195e-04, + 9.120792138593039567e-04, + 9.121726548343330734e-04, + 9.122646083491144434e-04, + 9.123550743422446018e-04, + 9.124440527547394812e-04, + 9.125315435300295321e-04, + 9.126175466139779379e-04, + 9.127020619548627256e-04, + 9.127850895033786088e-04, + 9.128666292126511907e-04, + 9.129466810382161476e-04, + 9.130252449380363592e-04, + 9.131023208724964877e-04, + 9.131779088043950627e-04, + 9.132520086989629133e-04, + 9.133246205238332435e-04, + 9.133957442490752430e-04, + 9.134653798471765226e-04, + 9.135335272930359589e-04, + 9.136001865639800656e-04, + 9.136653576397525851e-04, + 9.137290405025209937e-04, + 9.137912351368619734e-04, + 9.138519415297856980e-04, + 9.139111596707107880e-04, + 9.139688895514837177e-04, + 9.140251311663595167e-04, + 9.140798845120196589e-04, + 9.141331495875731471e-04, + 9.141849263945239865e-04, + 9.142352149368175888e-04, + 9.142840152208082461e-04, + 9.143313272552667202e-04, + 9.143771510513878324e-04, + 9.144214866227788618e-04, + 9.144643339854690873e-04, + 9.145056931579038234e-04, + 9.145455641609430116e-04, + 9.145839470178696766e-04, + 9.146208417543810363e-04, + 9.146562483985911035e-04, + 9.146901669810310114e-04, + 9.147225975346460862e-04, + 9.147535400948011595e-04, + 9.147829946992806771e-04, + 9.148109613882747125e-04, + 9.148374402043978320e-04, + 9.148624311926785782e-04, + 9.148859344005593613e-04, + 9.149079498778974352e-04, + 9.149284776769652221e-04, + 9.149475178524517230e-04, + 9.149650704614588305e-04, + 9.149811355635019796e-04, + 9.149957132205101479e-04, + 9.150088034968288913e-04, + 9.150204064592179585e-04, + 9.150305221768434850e-04, + 9.150391507212905697e-04, + 9.150462921665588299e-04, + 9.150519465890493906e-04, + 9.150561140675904717e-04, + 9.150587946834125600e-04, + 9.150599885201605522e-04, + 9.150596956638902850e-04, + 9.150579162030664758e-04, + 9.150546502285695528e-04, + 9.150498978336856805e-04, + 9.150436591141130477e-04, + 9.150359341679631690e-04, + 9.150267230957518858e-04, + 9.150160260004061965e-04, + 9.150038429872640400e-04, + 9.149901741640671399e-04, + 9.149750196409718464e-04, + 9.149583795305375354e-04, + 9.149402539477330051e-04, + 9.149206430099376692e-04, + 9.148995468369319067e-04, + 9.148769655509049773e-04, + 9.148528992764571894e-04, + 9.148273481405863475e-04, + 9.148003122727058588e-04, + 9.147717918046276023e-04, + 9.147417868705658324e-04, + 9.147102976071504058e-04, + 9.146773241534029292e-04, + 9.146428666507564918e-04, + 9.146069252430471001e-04, + 9.145695000765134610e-04, + 9.145305912997925366e-04, + 9.144901990639304947e-04, + 9.144483235223706740e-04, + 9.144049648309594391e-04, + 9.143601231479454210e-04, + 9.143137986339768073e-04, + 9.142659914521009080e-04, + 9.142167017677690346e-04, + 9.141659297488275012e-04, + 9.141136755655268403e-04, + 9.140599393905118279e-04, + 9.140047213988234352e-04, + 9.139480217679107552e-04, + 9.138898406776080167e-04, + 9.138301783101563779e-04, + 9.137690348501858193e-04, + 9.137064104847290218e-04, + 9.136423054032095491e-04, + 9.135767197974472686e-04, + 9.135096538616621457e-04, + 9.134411077924577647e-04, + 9.133710817888403017e-04, + 9.132995760522085501e-04, + 9.132265907863524029e-04, + 9.131521261974536114e-04, + 9.130761824940813402e-04, + 9.129987598872096226e-04, + 9.129198585901903643e-04, + 9.128394788187739429e-04, + 9.127576207910940292e-04, + 9.126742847276830915e-04, + 9.125894708514538552e-04, + 9.125031793877089528e-04, + 9.124154105641429837e-04, + 9.123261646108414297e-04, + 9.122354417602627661e-04, + 9.121432422472670843e-04, + 9.120495663090919143e-04, + 9.119544141853618740e-04, + 9.118577861180830312e-04, + 9.117596823516599261e-04, + 9.116601031328614184e-04, + 9.115590487108545144e-04, + 9.114565193371801897e-04, + 9.113525152657681342e-04, + 9.112470367529237414e-04, + 9.111400840573353728e-04, + 9.110316574400731653e-04, + 9.109217571645926090e-04, + 9.108103834967155735e-04, + 9.106975367046529681e-04, + 9.105832170589906469e-04, + 9.104674248326928782e-04, + 9.103501603010995258e-04, + 9.102314237419296267e-04, + 9.101112154352715249e-04, + 9.099895356636002186e-04, + 9.098663847117571942e-04, + 9.097417628669571482e-04, + 9.096156704187956851e-04, + 9.094881076592262236e-04, + 9.093590748825978358e-04, + 9.092285723856122041e-04, + 9.090966004673459557e-04, + 9.089631594292505541e-04, + 9.088282495751460110e-04, + 9.086918712112178505e-04, + 9.085540246460196024e-04, + 9.084147101904855963e-04, + 9.082739281578972425e-04, + 9.081316788639161005e-04, + 9.079879626265644713e-04, + 9.078427797662394928e-04, + 9.076961306056852748e-04, + 9.075480154700191378e-04, + 9.073984346867309614e-04, + 9.072473885856605254e-04, + 9.070948774990050985e-04, + 9.069409017613433996e-04, + 9.067854617095950486e-04, + 9.066285576830521165e-04, + 9.064701900233550561e-04, + 9.063103590745118926e-04, + 9.061490651828872731e-04, + 9.059863086971945518e-04, + 9.058220899685123784e-04, + 9.056564093502787348e-04, + 9.054892671982680587e-04, + 9.053206638706285401e-04, + 9.051505997278570760e-04, + 9.049790751327925487e-04, + 9.048060904506374010e-04, + 9.046316460489451684e-04, + 9.044557422976100703e-04, + 9.042783795688925973e-04, + 9.040995582373789622e-04, + 9.039192786800288046e-04, + 9.037375412761343169e-04, + 9.035543464073336880e-04, + 9.033696944576209698e-04, + 9.031835858133305727e-04, + 9.029960208631352065e-04, + 9.028069999980593233e-04, + 9.026165236114742398e-04, + 9.024245920990779700e-04, + 9.022312058589239576e-04, + 9.020363652914051376e-04, + 9.018400707992435279e-04, + 9.016423227875095285e-04, + 9.014431216636149824e-04, + 9.012424678372999483e-04, + 9.010403617206485301e-04, + 9.008368037280671927e-04, + 9.006317942763203237e-04, + 9.004253337844918530e-04, + 9.002174226739938180e-04, + 9.000080613685813250e-04, + 8.997972502943389975e-04, + 8.995849898796883480e-04, + 8.993712805553581800e-04, + 8.991561227544360869e-04, + 8.989395169123246508e-04, + 8.987214634667444781e-04, + 8.985019628577565337e-04, + 8.982810155277489144e-04, + 8.980586219214227537e-04, + 8.978347824858043651e-04, + 8.976094976702655168e-04, + 8.973827679264680286e-04, + 8.971545937084215603e-04, + 8.969249754724364487e-04, + 8.966939136771599197e-04, + 8.964614087835485502e-04, + 8.962274612548758570e-04, + 8.959920715567325136e-04, + 8.957552401570413126e-04, + 8.955169675260120626e-04, + 8.952772541361916784e-04, + 8.950361004624380517e-04, + 8.947935069819072575e-04, + 8.945494741740778405e-04, + 8.943040025207489715e-04, + 8.940570925060042353e-04, + 8.938087446162593357e-04, + 8.935589593402304366e-04, + 8.933077371689334030e-04, + 8.930550785957027749e-04, + 8.928009841161598913e-04, + 8.925454542282616798e-04, + 8.922884894322396154e-04, + 8.920300902306314882e-04, + 8.917702571282875830e-04, + 8.915089906323591870e-04, + 8.912462912522814591e-04, + 8.909821594998009690e-04, + 8.907165958889604095e-04, + 8.904496009361010907e-04, + 8.901811751598473271e-04, + 8.899113190811318080e-04, + 8.896400332231837798e-04, + 8.893673181115086630e-04, + 8.890931742739008456e-04, + 8.888176022404839071e-04, + 8.885406025436310383e-04, + 8.882621757180098184e-04, + 8.879823223005899133e-04, + 8.877010428306234512e-04, + 8.874183378496458899e-04, + 8.871342079014717889e-04, + 8.868486535322060845e-04, + 8.865616752902418136e-04, + 8.862732737262357186e-04, + 8.859834493931418578e-04, + 8.856922028461938247e-04, + 8.853995346428846901e-04, + 8.851054453430060335e-04, + 8.848099355086251746e-04, + 8.845130057040619716e-04, + 8.842146564959325146e-04, + 8.839148884531312358e-04, + 8.836137021467957821e-04, + 8.833110981503666456e-04, + 8.830070770395289422e-04, + 8.827016393922518765e-04, + 8.823947857887772493e-04, + 8.820865168115923525e-04, + 8.817768330454703015e-04, + 8.814657350774459657e-04, + 8.811532234968025247e-04, + 8.808392988951017173e-04, + 8.805239618661687712e-04, + 8.802072130060686591e-04, + 8.798890529131480568e-04, + 8.795694821880047694e-04, + 8.792485014334835026e-04, + 8.789261112547021000e-04, + 8.786023122590058991e-04, + 8.782771050560371192e-04, + 8.779504902576523544e-04, + 8.776224684779673508e-04, + 8.772930403333577655e-04, + 8.769622064424497342e-04, + 8.766299674261031740e-04, + 8.762963239074331428e-04, + 8.759612765118025748e-04, + 8.756248258668261836e-04, + 8.752869726023346838e-04, + 8.749477173504297597e-04, + 8.746070607454495879e-04, + 8.742650034239472616e-04, + 8.739215460247463018e-04, + 8.735766891888967472e-04, + 8.732304335596803579e-04, + 8.728827797825992321e-04, + 8.725337285054377131e-04, + 8.721832803781591741e-04, + 8.718314360529963317e-04, + 8.714781961843850013e-04, + 8.711235614290101757e-04, + 8.707675324457840160e-04, + 8.704101098958226491e-04, + 8.700512944424952828e-04, + 8.696910867513923298e-04, + 8.693294874903019888e-04, + 8.689664973292604436e-04, + 8.686021169405268175e-04, + 8.682363469985536833e-04, + 8.678691881800342260e-04, + 8.675006411638803419e-04, + 8.671307066311959673e-04, + 8.667593852653317221e-04, + 8.663866777518197497e-04, + 8.660125847784296612e-04, + 8.656371070351380698e-04, + 8.652602452141009435e-04, + 8.648820000097405579e-04, + 8.645023721186379439e-04, + 8.641213622395857961e-04, + 8.637389710735966048e-04, + 8.633551993238926811e-04, + 8.629700476958670173e-04, + 8.625835168971411832e-04, + 8.621956076375265118e-04, + 8.618063206290411211e-04, + 8.614156565858794483e-04, + 8.610236162244467271e-04, + 8.606302002633550849e-04, + 8.602354094233828847e-04, + 8.598392444274965182e-04, + 8.594417060009008208e-04, + 8.590427948709431199e-04, + 8.586425117671606143e-04, + 8.582408574213028175e-04, + 8.578378325672864546e-04, + 8.574334379412273379e-04, + 8.570276742813949392e-04, + 8.566205423282672498e-04, + 8.562120428245028085e-04, + 8.558021765149077418e-04, + 8.553909441464978888e-04, + 8.549783464684629136e-04, + 8.545643842321388756e-04, + 8.541490581910604878e-04, + 8.537323691009397579e-04, + 8.533143177196269571e-04, + 8.528949048071807681e-04, + 8.524741311257892466e-04, + 8.520519974398338978e-04, + 8.516285045158628964e-04, + 8.512036531225602954e-04, + 8.507774440307972006e-04, + 8.503498780136106282e-04, + 8.499209558461665341e-04, + 8.494906783058153244e-04, + 8.490590461720634499e-04, + 8.486260602265506374e-04, + 8.481917212530935835e-04, + 8.477560300376608005e-04, + 8.473189873683467047e-04, + 8.468805940354235491e-04, + 8.464408508312985975e-04, + 8.459997585505397120e-04, + 8.455573179898394657e-04, + 8.451135299480238162e-04, + 8.446683952261224704e-04, + 8.442219146272436593e-04, + 8.437740889566474299e-04, + 8.433249190217528011e-04, + 8.428744056321120677e-04, + 8.424225495993892254e-04, + 8.419693517374053984e-04, + 8.415148128621081566e-04, + 8.410589337915850682e-04, + 8.406017153460244515e-04, + 8.401431583477720786e-04, + 8.396832636212942045e-04, + 8.392220319931782170e-04, + 8.387594642921063996e-04, + 8.382955613489563281e-04, + 8.378303239966506007e-04, + 8.373637530702841229e-04, + 8.368958494070275053e-04, + 8.364266138461998136e-04, + 8.359560472292283445e-04, + 8.354841503996356155e-04, + 8.350109242030744928e-04, + 8.345363694873171329e-04, + 8.340604871022046750e-04, + 8.335832778997284481e-04, + 8.331047427339739178e-04, + 8.326248824611050736e-04, + 8.321436979394227591e-04, + 8.316611900293242312e-04, + 8.311773595932745373e-04, + 8.306922074958741692e-04, + 8.302057346038148279e-04, + 8.297179417858566554e-04, + 8.292288299128893836e-04, + 8.287383998578476581e-04, + 8.282466524958273730e-04, + 8.277535887039533984e-04, + 8.272592093614451747e-04, + 8.267635153496300481e-04, + 8.262665075519209359e-04, + 8.257681868537805484e-04, + 8.252685541427851393e-04, + 8.247676103085901369e-04, + 8.242653562428977265e-04, + 8.237617928395214685e-04, + 8.232569209943326307e-04, + 8.227507416052907627e-04, + 8.222432555724062909e-04, + 8.217344637977464818e-04, + 8.212243671855135041e-04, + 8.207129666419150840e-04, + 8.202002630752171968e-04, + 8.196862573958180100e-04, + 8.191709505161155020e-04, + 8.186543433505771763e-04, + 8.181364368157475423e-04, + 8.176172318302250223e-04, + 8.170967293146658541e-04, + 8.165749301917581788e-04, + 8.160518353862657344e-04, + 8.155274458250096406e-04, + 8.150017624368245976e-04, + 8.144747861526249137e-04, + 8.139465179053747982e-04, + 8.134169586300432587e-04, + 8.128861092636850911e-04, + 8.123539707453877531e-04, + 8.118205440162458864e-04, + 8.112858300194399205e-04, + 8.107498297001412054e-04, + 8.102125440055857374e-04, + 8.096739738850431507e-04, + 8.091341202897864683e-04, + 8.085929841731452281e-04, + 8.080505664904771845e-04, + 8.075068681991376266e-04, + 8.069618902585338040e-04, + 8.064156336301007500e-04, + 8.058680992772596476e-04, + 8.053192881654800631e-04, + 8.047692012622591293e-04, + 8.042178395370651670e-04, + 8.036652039614365639e-04, + 8.031112955088545984e-04, + 8.025561151549071535e-04, + 8.019996638771112333e-04, + 8.014419426549931934e-04, + 8.008829524701608412e-04, + 8.003226943061480690e-04, + 7.997611691485074451e-04, + 7.991983779848140087e-04, + 7.986343218046435856e-04, + 7.980690015995314801e-04, + 7.975024183630473936e-04, + 7.969345730907378533e-04, + 7.963654667801574371e-04, + 7.957951004308174911e-04, + 7.952234750442444596e-04, + 7.946505916239631883e-04, + 7.940764511754505204e-04, + 7.935010547061569809e-04, + 7.929244032255883083e-04, + 7.923464977451492213e-04, + 7.917673392782760165e-04, + 7.911869288403332442e-04, + 7.906052674487017455e-04, + 7.900223561227315977e-04, + 7.894381958837053603e-04, + 7.888527877549186308e-04, + 7.882661327616243170e-04, + 7.876782319310124706e-04, + 7.870890862922705691e-04, + 7.864986968765461106e-04, + 7.859070647169160394e-04, + 7.853141908484436665e-04, + 7.847200763081578533e-04, + 7.841247221350001019e-04, + 7.835281293699166046e-04, + 7.829302990557532923e-04, + 7.823312322373444146e-04, + 7.817309299614701472e-04, + 7.811293932768096455e-04, + 7.805266232340718003e-04, + 7.799226208858317392e-04, + 7.793173872866153949e-04, + 7.787109234929170693e-04, + 7.781032305631675576e-04, + 7.774943095576882868e-04, + 7.768841615387795697e-04, + 7.762727875706706233e-04, + 7.756601887194758752e-04, + 7.750463660532822419e-04, + 7.744313206420883056e-04, + 7.738150535578268647e-04, + 7.731975658743292642e-04, + 7.725788586673316841e-04, + 7.719589330145695729e-04, + 7.713377899956150177e-04, + 7.707154306919634804e-04, + 7.700918561870543971e-04, + 7.694670675662248832e-04, + 7.688410659167323928e-04, + 7.682138523276974733e-04, + 7.675854278901952715e-04, + 7.669557936971968786e-04, + 7.663249508435346358e-04, + 7.656929004259819312e-04, + 7.650596435432112418e-04, + 7.644251812957625824e-04, + 7.637895147860536979e-04, + 7.631526451184808936e-04, + 7.625145733992291916e-04, + 7.618753007364292146e-04, + 7.612348282400958205e-04, + 7.605931570220913476e-04, + 7.599502881962113751e-04, + 7.593062228780758692e-04, + 7.586609621852270866e-04, + 7.580145072370824116e-04, + 7.573668591548955416e-04, + 7.567180190618266354e-04, + 7.560679880829146654e-04, + 7.554167673450233166e-04, + 7.547643579769196991e-04, + 7.541107611092414970e-04, + 7.534559778744474206e-04, + 7.528000094068974368e-04, + 7.521428568428067995e-04, + 7.514845213202098369e-04, + 7.508250039790553615e-04, + 7.501643059610700603e-04, + 7.495024284099266552e-04, + 7.488393724710715139e-04, + 7.481751392918067249e-04, + 7.475097300213087454e-04, + 7.468431458105999950e-04, + 7.461753878124921524e-04, + 7.455064571816939246e-04, + 7.448363550747389480e-04, + 7.441650826499564058e-04, + 7.434926410675551630e-04, + 7.428190314895571954e-04, + 7.421442550798308755e-04, + 7.414683130040409902e-04, + 7.407912064296628355e-04, + 7.401129365260868424e-04, + 7.394335044644280821e-04, + 7.387529114176304579e-04, + 7.380711585605381547e-04, + 7.373882470697086132e-04, + 7.367041781235855692e-04, + 7.360189529023669977e-04, + 7.353325725881020404e-04, + 7.346450383646464452e-04, + 7.339563514176196315e-04, + 7.332665129344869814e-04, + 7.325755241045143031e-04, + 7.318833861187216440e-04, + 7.311901001699758814e-04, + 7.304956674529283810e-04, + 7.298000891639887591e-04, + 7.291033665013944886e-04, + 7.284055006651794567e-04, + 7.277064928571111901e-04, + 7.270063442808097917e-04, + 7.263050561416102471e-04, + 7.256026296466788674e-04, + 7.248990660049602726e-04, + 7.241943664271246984e-04, + 7.234885321256679606e-04, + 7.227815643148552925e-04, + 7.220734642106764597e-04, + 7.213642330309369410e-04, + 7.206538719952061038e-04, + 7.199423823247703665e-04, + 7.192297652427283913e-04, + 7.185160219739331880e-04, + 7.178011537449549258e-04, + 7.170851617841741748e-04, + 7.163680473216548373e-04, + 7.156498115893130665e-04, + 7.149304558207290492e-04, + 7.142099812512236589e-04, + 7.134883891179591778e-04, + 7.127656806597475019e-04, + 7.120418571171530315e-04, + 7.113169197325161985e-04, + 7.105908697498932933e-04, + 7.098637084150945199e-04, + 7.091354369756123306e-04, + 7.084060566807141249e-04, + 7.076755687814027850e-04, + 7.069439745303543335e-04, + 7.062112751820161629e-04, + 7.054774719925592215e-04, + 7.047425662198406092e-04, + 7.040065591234198400e-04, + 7.032694519646644432e-04, + 7.025312460065478689e-04, + 7.017919425138308739e-04, + 7.010515427529198174e-04, + 7.003100479919757313e-04, + 6.995674595008637966e-04, + 6.988237785511034698e-04, + 6.980790064159619413e-04, + 6.973331443704045875e-04, + 6.965861936910443383e-04, + 6.958381556562374124e-04, + 6.950890315460265048e-04, + 6.943388226421018643e-04, + 6.935875302278800064e-04, + 6.928351555884747649e-04, + 6.920817000106216149e-04, + 6.913271647827949834e-04, + 6.905715511951373425e-04, + 6.898148605394290684e-04, + 6.890570941091796230e-04, + 6.882982531994979915e-04, + 6.875383391072689742e-04, + 6.867773531309523914e-04, + 6.860152965706830478e-04, + 6.852521707282971863e-04, + 6.844879769072906382e-04, + 6.837227164127639622e-04, + 6.829563905515264200e-04, + 6.821890006320261530e-04, + 6.814205479643771794e-04, + 6.806510338602932576e-04, + 6.798804596331850308e-04, + 6.791088265981105876e-04, + 6.783361360717363219e-04, + 6.775623893723495099e-04, + 6.767875878199786565e-04, + 6.760117327361896654e-04, + 6.752348254441940421e-04, + 6.744568672688720963e-04, + 6.736778595367163463e-04, + 6.728978035758612260e-04, + 6.721167007160155395e-04, + 6.713345522885652431e-04, + 6.705513596265116460e-04, + 6.697671240644266326e-04, + 6.689818469385453619e-04, + 6.681955295867202972e-04, + 6.674081733483581058e-04, + 6.666197795645343671e-04, + 6.658303495779228833e-04, + 6.650398847327561053e-04, + 6.642483863749172905e-04, + 6.634558558518897616e-04, + 6.626622945127013959e-04, + 6.618677037080499589e-04, + 6.610720847901488222e-04, + 6.602754391128596700e-04, + 6.594777680316309164e-04, + 6.586790729034446880e-04, + 6.578793550869198228e-04, + 6.570786159422548414e-04, + 6.562768568311766644e-04, + 6.554740791170433943e-04, + 6.546702841647813239e-04, + 6.538654733408426518e-04, + 6.530596480132990498e-04, + 6.522528095517925477e-04, + 6.514449593274724334e-04, + 6.506360987131260074e-04, + 6.498262290830119411e-04, + 6.490153518130706116e-04, + 6.482034682806924082e-04, + 6.473905798648367776e-04, + 6.465766879460532572e-04, + 6.457617939064396254e-04, + 6.449458991295833540e-04, + 6.441290050006764261e-04, + 6.433111129064288157e-04, + 6.424922242351109895e-04, + 6.416723403764734582e-04, + 6.408514627218622446e-04, + 6.400295926641485188e-04, + 6.392067315976842539e-04, + 6.383828809184029490e-04, + 6.375580420237606481e-04, + 6.367322163127031977e-04, + 6.359054051856761125e-04, + 6.350776100447574988e-04, + 6.342488322934093387e-04, + 6.334190733366981251e-04, + 6.325883345811328818e-04, + 6.317566174347816069e-04, + 6.309239233072221585e-04, + 6.300902536094809972e-04, + 6.292556097541393296e-04, + 6.284199931552795484e-04, + 6.275834052284267944e-04, + 6.267458473906503289e-04, + 6.259073210605208167e-04, + 6.250678276580360574e-04, + 6.242273686047394897e-04, + 6.233859453236577407e-04, + 6.225435592392484759e-04, + 6.217002117775180352e-04, + 6.208559043658818961e-04, + 6.200106384332825264e-04, + 6.191644154101374510e-04, + 6.183172367282774523e-04, + 6.174691038210595442e-04, + 6.166200181233027870e-04, + 6.157699810712393904e-04, + 6.149189941026129416e-04, + 6.140670586566271232e-04, + 6.132141761738854309e-04, + 6.123603480965057744e-04, + 6.115055758680295120e-04, + 6.106498609334723004e-04, + 6.097932047392360571e-04, + 6.089356087332285479e-04, + 6.080770743647905289e-04, + 6.072176030846734114e-04, + 6.063571963450375274e-04, + 6.054958555995956782e-04, + 6.046335823033791631e-04, + 6.037703779128644147e-04, + 6.029062438859951164e-04, + 6.020411816821184510e-04, + 6.011751927620244580e-04, + 6.003082785878624409e-04, + 5.994404406232596875e-04, + 5.985716803332552256e-04, + 5.977019991842426848e-04, + 5.968313986440830542e-04, + 5.959598801820459183e-04, + 5.950874452687463564e-04, + 5.942140953762580250e-04, + 5.933398319780592732e-04, + 5.924646565489588741e-04, + 5.915885705652455372e-04, + 5.907115755045206154e-04, + 5.898336728458314620e-04, + 5.889548640696144017e-04, + 5.880751506576321723e-04, + 5.871945340930862477e-04, + 5.863130158605599175e-04, + 5.854305974459536686e-04, + 5.845472803366041220e-04, + 5.836630660212149694e-04, + 5.827779559898075331e-04, + 5.818919517338231153e-04, + 5.810050547460720400e-04, + 5.801172665206656741e-04, + 5.792285885531349302e-04, + 5.783390223403473253e-04, + 5.774485693805442776e-04, + 5.765572311732835350e-04, + 5.756650092194513183e-04, + 5.747719050213956783e-04, + 5.738779200826940423e-04, + 5.729830559082866800e-04, + 5.720873140044913400e-04, + 5.711906958789608572e-04, + 5.702932030406267748e-04, + 5.693948369998129682e-04, + 5.684955992681467408e-04, + 5.675954913586077214e-04, + 5.666945147854393931e-04, + 5.657926710642646696e-04, + 5.648899617120279985e-04, + 5.639863882469488493e-04, + 5.630819521885426383e-04, + 5.621766550577541937e-04, + 5.612704983767003667e-04, + 5.603634836689023752e-04, + 5.594556124591061521e-04, + 5.585468862734192796e-04, + 5.576373066392458291e-04, + 5.567268750852308497e-04, + 5.558155931413699810e-04, + 5.549034623389493886e-04, + 5.539904842104870003e-04, + 5.530766602898436364e-04, + 5.521619921121657644e-04, + 5.512464812138171940e-04, + 5.503301291325061453e-04, + 5.494129374072135837e-04, + 5.484949075781314198e-04, + 5.475760411867828560e-04, + 5.466563397759638399e-04, + 5.457358048896703137e-04, + 5.448144380732444737e-04, + 5.438922408732059597e-04, + 5.429692148373921508e-04, + 5.420453615149013532e-04, + 5.411206824560161471e-04, + 5.401951792123342502e-04, + 5.392688533367014049e-04, + 5.383417063831413395e-04, + 5.374137399069877155e-04, + 5.364849554648105099e-04, + 5.355553546143556254e-04, + 5.346249389146654537e-04, + 5.336937099259914889e-04, + 5.327616692098368278e-04, + 5.318288183288892752e-04, + 5.308951588470412928e-04, + 5.299606923295282351e-04, + 5.290254203426802840e-04, + 5.280893444540447467e-04, + 5.271524662325067275e-04, + 5.262147872480370508e-04, + 5.252763090718346167e-04, + 5.243370332763483020e-04, + 5.233969614352038851e-04, + 5.224560951232557621e-04, + 5.215144359164852490e-04, + 5.205719853921384919e-04, + 5.196287451286469954e-04, + 5.186847167055762308e-04, + 5.177399017037363337e-04, + 5.167943017051249664e-04, + 5.158479182928572783e-04, + 5.149007530512913480e-04, + 5.139528075659598790e-04, + 5.130040834235090504e-04, + 5.120545822118372946e-04, + 5.111043055199333178e-04, + 5.101532549380055539e-04, + 5.092014320574354347e-04, + 5.082488384706942324e-04, + 5.072954757714799937e-04, + 5.063413455546425133e-04, + 5.053864494161218598e-04, + 5.044307889530732754e-04, + 5.034743657637949683e-04, + 5.025171814476717342e-04, + 5.015592376052889056e-04, + 5.006005358383740222e-04, + 4.996410777497280924e-04, + 4.986808649433692496e-04, + 4.977198990243412828e-04, + 4.967581815989637615e-04, + 4.957957142745591421e-04, + 4.948324986595673686e-04, + 4.938685363636821559e-04, + 4.929038289975837348e-04, + 4.919383781730902062e-04, + 4.909721855031732619e-04, + 4.900052526019159013e-04, + 4.890375810844455355e-04, + 4.880691725670548218e-04, + 4.871000286671194274e-04, + 4.861301510031333195e-04, + 4.851595411946247943e-04, + 4.841882008622804012e-04, + 4.832161316278739817e-04, + 4.822433351142285055e-04, + 4.812698129452285391e-04, + 4.802955667459726840e-04, + 4.793205981424880527e-04, + 4.783449087619860859e-04, + 4.773685002326680466e-04, + 4.763913741838712249e-04, + 4.754135322460030185e-04, + 4.744349760504704052e-04, + 4.734557072298119446e-04, + 4.724757274176259497e-04, + 4.714950382485046218e-04, + 4.705136413581605765e-04, + 4.695315383833585936e-04, + 4.685487309618500767e-04, + 4.675652207324991461e-04, + 4.665810093352149848e-04, + 4.655960984108816359e-04, + 4.646104896015103335e-04, + 4.636241845500639700e-04, + 4.626371849006021626e-04, + 4.616494922982171769e-04, + 4.606611083889412274e-04, + 4.596720348199865745e-04, + 4.586822732394563672e-04, + 4.576918252964956731e-04, + 4.567006926413114815e-04, + 4.557088769251261369e-04, + 4.547163798001055109e-04, + 4.537232029194944731e-04, + 4.527293479375403464e-04, + 4.517348165094315412e-04, + 4.507396102914225096e-04, + 4.497437309407420220e-04, + 4.487471801156397338e-04, + 4.477499594753103448e-04, + 4.467520706799204340e-04, + 4.457535153907532001e-04, + 4.447542952699448920e-04, + 4.437544119806346456e-04, + 4.427538671869878486e-04, + 4.417526625541191615e-04, + 4.407507997481422833e-04, + 4.397482804360762759e-04, + 4.387451062859695967e-04, + 4.377412789668392755e-04, + 4.367368001485990854e-04, + 4.357316715021870997e-04, + 4.347258946994963028e-04, + 4.337194714133365886e-04, + 4.327124033174364957e-04, + 4.317046920866147823e-04, + 4.306963393964784214e-04, + 4.296873469236616675e-04, + 4.286777163457448502e-04, + 4.276674493411764194e-04, + 4.266565475894276076e-04, + 4.256450127708141318e-04, + 4.246328465666464108e-04, + 4.236200506591605006e-04, + 4.226066267314509831e-04, + 4.215925764675990096e-04, + 4.205779015526026955e-04, + 4.195626036723087071e-04, + 4.185466845135442089e-04, + 4.175301457640442763e-04, + 4.165129891123846751e-04, + 4.154952162481104477e-04, + 4.144768288616695060e-04, + 4.134578286443417244e-04, + 4.124382172883880177e-04, + 4.114179964868546423e-04, + 4.103971679338307491e-04, + 4.093757333241607437e-04, + 4.083536943535936905e-04, + 4.073310527188066222e-04, + 4.063078101173540706e-04, + 4.052839682475994367e-04, + 4.042595288088467751e-04, + 4.032344935012699958e-04, + 4.022088640258420660e-04, + 4.011826420844707519e-04, + 4.001558293798981674e-04, + 3.991284276157542254e-04, + 3.981004384964747264e-04, + 3.970718637273268911e-04, + 3.960427050145670582e-04, + 3.950129640651596583e-04, + 3.939826425869178902e-04, + 3.929517422886277529e-04, + 3.919202648797598647e-04, + 3.908882120707335753e-04, + 3.898555855727109669e-04, + 3.888223870977504859e-04, + 3.877886183587433543e-04, + 3.867542810693325801e-04, + 3.857193769440550417e-04, + 3.846839076982649431e-04, + 3.836478750480644254e-04, + 3.826112807104406640e-04, + 3.815741264031869925e-04, + 3.805364138448405617e-04, + 3.794981447548096245e-04, + 3.784593208533053397e-04, + 3.774199438612699437e-04, + 3.763800155005337430e-04, + 3.753395374936286310e-04, + 3.742985115639473038e-04, + 3.732569394356693169e-04, + 3.722148228336907751e-04, + 3.711721634837600748e-04, + 3.701289631124028766e-04, + 3.690852234468561862e-04, + 3.680409462151954772e-04, + 3.669961331462703435e-04, + 3.659507859696275209e-04, + 3.649049064156508577e-04, + 3.638584962154822766e-04, + 3.628115571009567220e-04, + 3.617640908047585024e-04, + 3.607160990602092747e-04, + 3.596675836015432687e-04, + 3.586185461636040355e-04, + 3.575689884819806242e-04, + 3.565189122931444613e-04, + 3.554683193341649111e-04, + 3.544172113428727187e-04, + 3.533655900578783335e-04, + 3.523134572184997548e-04, + 3.512608145648082859e-04, + 3.502076638375264017e-04, + 3.491540067781715145e-04, + 3.480998451289810548e-04, + 3.470451806328364152e-04, + 3.459900150334054686e-04, + 3.449343500750634214e-04, + 3.438781875028494995e-04, + 3.428215290624835911e-04, + 3.417643765005280092e-04, + 3.407067315640805545e-04, + 3.396485960010526130e-04, + 3.385899715599537249e-04, + 3.375308599900570883e-04, + 3.364712630413210087e-04, + 3.354111824643203773e-04, + 3.343506200103813831e-04, + 3.332895774315085464e-04, + 3.322280564803127274e-04, + 3.311660589101489286e-04, + 3.301035864750422977e-04, + 3.290406409296149984e-04, + 3.279772240292239040e-04, + 3.269133375298860587e-04, + 3.258489831882117817e-04, + 3.247841627615320617e-04, + 3.237188780078337214e-04, + 3.226531306856838480e-04, + 3.215869225543885757e-04, + 3.205202553737824243e-04, + 3.194531309045045542e-04, + 3.183855509076947022e-04, + 3.173175171451475172e-04, + 3.162490313793397197e-04, + 3.151800953733772470e-04, + 3.141107108909226117e-04, + 3.130408796963336793e-04, + 3.119706035545644096e-04, + 3.108998842312114775e-04, + 3.098287234924146892e-04, + 3.087571231049999879e-04, + 3.076850848364000909e-04, + 3.066126104546070008e-04, + 3.055397017281948286e-04, + 3.044663604264790085e-04, + 3.033925883192301770e-04, + 3.023183871768380499e-04, + 3.012437587703327814e-04, + 3.001687048713092866e-04, + 2.990932272519708263e-04, + 2.980173276850353863e-04, + 2.969410079438704439e-04, + 2.958642698024213560e-04, + 2.947871150351385008e-04, + 2.937095454171119360e-04, + 2.926315627240033647e-04, + 2.915531687319667721e-04, + 2.904743652177909437e-04, + 2.893951539588253603e-04, + 2.883155367329047372e-04, + 2.872355153184883987e-04, + 2.861550914945881785e-04, + 2.850742670406916581e-04, + 2.839930437369259900e-04, + 2.829114233638690837e-04, + 2.818294077027057309e-04, + 2.807469985351595176e-04, + 2.796641976434144903e-04, + 2.785810068102581626e-04, + 2.774974278190061629e-04, + 2.764134624534264487e-04, + 2.753291124978796568e-04, + 2.742443797372469492e-04, + 2.731592659568528726e-04, + 2.720737729426070633e-04, + 2.709879024809296543e-04, + 2.699016563586751098e-04, + 2.688150363632992468e-04, + 2.677280442826376785e-04, + 2.666406819051942117e-04, + 2.655529510198223627e-04, + 2.644648534158940589e-04, + 2.633763908833171492e-04, + 2.622875652124868309e-04, + 2.611983781942106781e-04, + 2.601088316198466597e-04, + 2.590189272812097360e-04, + 2.579286669706114320e-04, + 2.568380524807640478e-04, + 2.557470856049200332e-04, + 2.546557681368000507e-04, + 2.535641018705381148e-04, + 2.524720886007032219e-04, + 2.513797301224687569e-04, + 2.502870282313169941e-04, + 2.491939847231793384e-04, + 2.481006013945833972e-04, + 2.470068800423314069e-04, + 2.459128224637890090e-04, + 2.448184304566653206e-04, + 2.437237058191788440e-04, + 2.426286503499802444e-04, + 2.415332658480793019e-04, + 2.404375541129863728e-04, + 2.393415169446362514e-04, + 2.382451561433137125e-04, + 2.371484735097927228e-04, + 2.360514708452660494e-04, + 2.349541499512648117e-04, + 2.338565126298040083e-04, + 2.327585606833050243e-04, + 2.316602959145213627e-04, + 2.305617201267032811e-04, + 2.294628351234036918e-04, + 2.283636427086432863e-04, + 2.272641446868343702e-04, + 2.261643428627065132e-04, + 2.250642390414474964e-04, + 2.239638350286300467e-04, + 2.228631326301331510e-04, + 2.217621336522864720e-04, + 2.206608399017956194e-04, + 2.195592531856625697e-04, + 2.184573753113328465e-04, + 2.173552080865920333e-04, + 2.162527533196133430e-04, + 2.151500128188563535e-04, + 2.140469883932116400e-04, + 2.129436818519222249e-04, + 2.118400950045344362e-04, + 2.107362296609157964e-04, + 2.096320876314286855e-04, + 2.085276707266282272e-04, + 2.074229807574341626e-04, + 2.063180195351511784e-04, + 2.052127888713912518e-04, + 2.041072905781236857e-04, + 2.030015264675688027e-04, + 2.018954983523463731e-04, + 2.007892080453960876e-04, + 1.996826573599036155e-04, + 1.985758481094423370e-04, + 1.974687821078983431e-04, + 1.963614611693945415e-04, + 1.952538871084322539e-04, + 1.941460617398165411e-04, + 1.930379868785810679e-04, + 1.919296643401526307e-04, + 1.908210959401557846e-04, + 1.897122834945804066e-04, + 1.886032288197043104e-04, + 1.874939337320174614e-04, + 1.863844000483667440e-04, + 1.852746295858777911e-04, + 1.841646241618797404e-04, + 1.830543855940487013e-04, + 1.819439157003325657e-04, + 1.808332162988728368e-04, + 1.797222892081495329e-04, + 1.786111362469037210e-04, + 1.774997592340622191e-04, + 1.763881599888823099e-04, + 1.752763403308486877e-04, + 1.741643020797206210e-04, + 1.730520470554560309e-04, + 1.719395770782308991e-04, + 1.708268939686106525e-04, + 1.697139995472516012e-04, + 1.686008956350687731e-04, + 1.674875840532591160e-04, + 1.663740666232493468e-04, + 1.652603451666164803e-04, + 1.641464215052370961e-04, + 1.630322974611813313e-04, + 1.619179748567624820e-04, + 1.608034555144338424e-04, + 1.596887412569335534e-04, + 1.585738339072091153e-04, + 1.574587352883629612e-04, + 1.563434472236750620e-04, + 1.552279715367745289e-04, + 1.541123100513119403e-04, + 1.529964645912567115e-04, + 1.518804369806683006e-04, + 1.507642290438692475e-04, + 1.496478426053655388e-04, + 1.485312794897703892e-04, + 1.474145415219512312e-04, + 1.462976305269497019e-04, + 1.451805483299059378e-04, + 1.440632967562046447e-04, + 1.429458776313970614e-04, + 1.418282927811223830e-04, + 1.407105440312573261e-04, + 1.395926332078345424e-04, + 1.384745621369670504e-04, + 1.373563326449949817e-04, + 1.362379465584069495e-04, + 1.351194057037620943e-04, + 1.340007119078629599e-04, + 1.328818669975517178e-04, + 1.317628727998819860e-04, + 1.306437311420423927e-04, + 1.295244438512760203e-04, + 1.284050127550301335e-04, + 1.272854396808761651e-04, + 1.261657264564330905e-04, + 1.250458749095134420e-04, + 1.239258868680463037e-04, + 1.228057641599980836e-04, + 1.216855086135213332e-04, + 1.205651220568495808e-04, + 1.194446063183455506e-04, + 1.183239632264244831e-04, + 1.172031946095732031e-04, + 1.160823022965244597e-04, + 1.149612881159527936e-04, + 1.138401538966476984e-04, + 1.127189014675345722e-04, + 1.115975326576214294e-04, + 1.104760492959227353e-04, + 1.093544532116041745e-04, + 1.082327462338812776e-04, + 1.071109301920664624e-04, + 1.059890069154645434e-04, + 1.048669782335214580e-04, + 1.037448459757448345e-04, + 1.026226119716279895e-04, + 1.015002780507946425e-04, + 1.003778460429218417e-04, + 9.925531777766308141e-05, + 9.813269508479414017e-05, + 9.700997979413457123e-05, + 9.588717373547178127e-05, + 9.476427873873051824e-05, + 9.364129663377229404e-05, + 9.251822925056529248e-05, + 9.139507841910796018e-05, + 9.027184596935070005e-05, + 8.914853373134179134e-05, + 8.802514353515083145e-05, + 8.690167721079017187e-05, + 8.577813658836177342e-05, + 8.465452349797987551e-05, + 8.353083976969174096e-05, + 8.240708723362642210e-05, + 8.128326771991523450e-05, + 8.015938305861473802e-05, + 7.903543507987791875e-05, + 7.791142561372776693e-05, + 7.678735649035220705e-05, + 7.566322953977779367e-05, + 7.453904659201584832e-05, + 7.341480947721011423e-05, + 7.229052002533304429e-05, + 7.116618006635820268e-05, + 7.004179143028284337e-05, + 6.891735594707378140e-05, + 6.779287544659067194e-05, + 6.666835175873155094e-05, + 6.554378671333162482e-05, + 6.441918214020894251e-05, + 6.329453986906150465e-05, + 6.216986172961571798e-05, + 6.104514955154616437e-05, + 5.992040516442469076e-05, + 5.879563039774140880e-05, + 5.767082708107635117e-05, + 5.654599704377280821e-05, + 5.542114211523315928e-05, + 5.429626412469143427e-05, + 5.317136490138523413e-05, + 5.204644627447781743e-05, + 5.092151007298007848e-05, + 4.979655812589748378e-05, + 4.867159226215244993e-05, + 4.754661431050585422e-05, + 4.642162609970451316e-05, + 4.529662945840331648e-05, + 4.417162621508638530e-05, + 4.304661819821497084e-05, + 4.192160723614969680e-05, + 4.079659515707140585e-05, + 3.967158378915432024e-05, + 3.854657496036272002e-05, + 3.742157049862259257e-05, + 3.629657223174452552e-05, + 3.517158198731956231e-05, + 3.404660159299267191e-05, + 3.292163287613340881e-05, + 3.179667766400865359e-05, + 3.067173778380488642e-05, + 2.954681506257448523e-05, + 2.842191132715837128e-05, + 2.729702840433290495e-05, + 2.617216812073179950e-05, + 2.504733230276802124e-05, + 2.392252277678134269e-05, + 2.279774136893503500e-05, + 2.167298990526278008e-05, + 2.054827021159098409e-05, + 1.942358411356053265e-05, + 1.829893343679943308e-05, + 1.717432000661912940e-05, + 1.604974564818671088e-05, + 1.492521218654744989e-05, + 1.380072144654631247e-05, + 1.267627525287528201e-05, + 1.155187542997007042e-05, + 1.042752380215763903e-05, + 9.303222193578010693e-06, + 8.178972428106056461e-06, + 7.054776329499024157e-06, + 5.930635721318384334e-06, + 4.806552426876660329e-06, + 3.682528269259623065e-06, + 2.558565071498800743e-06, + 1.434664656242601789e-06, + 3.108288460542378299e-07, +-8.129405368168781089e-07, +-1.936641670262587816e-06, +-3.060272732394162048e-06, +-4.183831901620403423e-06, +-5.307317356500240564e-06, +-6.430727275820884247e-06, +-7.554059838675873445e-06, +-8.677313224317771635e-06, +-9.800485612236221737e-06, +-1.092357518223605017e-05, +-1.204658011428993140e-05, +-1.316949858861649285e-05, +-1.429232878575830970e-05, +-1.541506888643468377e-05, +-1.653771707161965019e-05, +-1.766027152262012633e-05, +-1.878273042090342204e-05, +-1.990509194832564883e-05, +-2.102735428683422499e-05, +-2.214951561879614826e-05, +-2.327157412682588216e-05, +-2.439352799376316366e-05, +-2.551537540272586491e-05, +-2.663711453718819463e-05, +-2.775874358083367014e-05, +-2.888026071763249896e-05, +-3.000166413192027827e-05, +-3.112295200825035369e-05, +-3.224412253149694390e-05, +-3.336517388680823528e-05, +-3.448610425968401080e-05, +-3.560691183595380676e-05, +-3.672759480160476858e-05, +-3.784815134308459043e-05, +-3.896857964715440254e-05, +-4.008887790074176018e-05, +-4.120904429126847252e-05, +-4.232907700635380225e-05, +-4.344897423404191092e-05, +-4.456873416263037877e-05, +-4.568835498074741349e-05, +-4.680783487743072594e-05, +-4.792717204197948909e-05, +-4.904636466403261748e-05, +-5.016541093364724980e-05, +-5.128430904115071476e-05, +-5.240305717721898657e-05, +-5.352165353295482885e-05, +-5.464009629973996368e-05, +-5.575838366931371688e-05, +-5.687651383385082987e-05, +-5.799448498578865140e-05, +-5.911229531803115727e-05, +-6.022994302377618272e-05, +-6.134742629659330204e-05, +-6.246474333050195890e-05, +-6.358189231982455691e-05, +-6.469887145926386492e-05, +-6.581567894398152681e-05, +-6.693231296945014916e-05, +-6.804877173153244809e-05, +-6.916505342655775320e-05, +-7.028115625117614174e-05, +-7.139707840243529505e-05, +-7.251281807785921153e-05, +-7.362837347527583214e-05, +-7.474374279304472283e-05, +-7.585892422976069430e-05, +-7.697391598458068896e-05, +-7.808871625707674961e-05, +-7.920332324709068207e-05, +-8.031773515503462318e-05, +-8.143195018172011629e-05, +-8.254596652833599358e-05, +-8.365978239652611329e-05, +-8.477339598834241386e-05, +-8.588680550634716763e-05, +-8.700000915346660011e-05, +-8.811300513306938613e-05, +-8.922579164904242206e-05, +-9.033836690564584090e-05, +-9.145072910758959752e-05, +-9.256287646008743493e-05, +-9.367480716883322151e-05, +-9.478651943983128691e-05, +-9.589801147972138460e-05, +-9.700928149548393789e-05, +-9.812032769466638076e-05, +-9.923114828521203002e-05, +-1.003417414755376058e-04, +-1.014521054746111994e-04, +-1.025622384918047807e-04, +-1.036721387369724917e-04, +-1.047818044205286271e-04, +-1.058912337533000480e-04, +-1.070004249466047994e-04, +-1.081093762123285065e-04, +-1.092180857627793078e-04, +-1.103265518107641562e-04, +-1.114347725696673152e-04, +-1.125427462532780791e-04, +-1.136504710759934510e-04, +-1.147579452526470965e-04, +-1.158651669985855494e-04, +-1.169721345297716991e-04, +-1.180788460625146341e-04, +-1.191852998137936425e-04, +-1.202914940010886970e-04, +-1.213974268423588656e-04, +-1.225030965560930526e-04, +-1.236085013613896192e-04, +-1.247136394778076041e-04, +-1.258185091254714711e-04, +-1.269231085250232280e-04, +-1.280274358977238805e-04, +-1.291314894653084475e-04, +-1.302352674500633733e-04, +-1.313387680748772410e-04, +-1.324419895632213378e-04, +-1.335449301389771322e-04, +-1.346475880267370036e-04, +-1.357499614516339691e-04, +-1.368520486393197822e-04, +-1.379538478160416946e-04, +-1.390553572085959978e-04, +-1.401565750444293962e-04, +-1.412574995514942120e-04, +-1.423581289583256615e-04, +-1.434584614941169362e-04, +-1.445584953885758171e-04, +-1.456582288720016801e-04, +-1.467576601753600349e-04, +-1.478567875301401693e-04, +-1.489556091684303657e-04, +-1.500541233229943643e-04, +-1.511523282271279506e-04, +-1.522502221147348494e-04, +-1.533478032204021850e-04, +-1.544450697792330537e-04, +-1.555420200270451222e-04, +-1.566386522002016551e-04, +-1.577349645356881133e-04, +-1.588309552711878315e-04, +-1.599266226449385785e-04, +-1.610219648958080986e-04, +-1.621169802633728790e-04, +-1.632116669877693162e-04, +-1.643060233097744076e-04, +-1.654000474708803984e-04, +-1.664937377131506919e-04, +-1.675870922792954448e-04, +-1.686801094127489528e-04, +-1.697727873575013817e-04, +-1.708651243583194843e-04, +-1.719571186604589073e-04, +-1.730487685099829198e-04, +-1.741400721535949305e-04, +-1.752310278386168317e-04, +-1.763216338130396579e-04, +-1.774118883256009711e-04, +-1.785017896256409328e-04, +-1.795913359632015629e-04, +-1.806805255889826938e-04, +-1.817693567544412291e-04, +-1.828578277116464841e-04, +-1.839459367133589800e-04, +-1.850336820130789621e-04, +-1.861210618650277514e-04, +-1.872080745239763054e-04, +-1.882947182455443219e-04, +-1.893809912860548207e-04, +-1.904668919023904598e-04, +-1.915524183523131308e-04, +-1.926375688941765643e-04, +-1.937223417871449048e-04, +-1.948067352910276139e-04, +-1.958907476663545243e-04, +-1.969743771744504601e-04, +-1.980576220772951304e-04, +-1.991404806375946326e-04, +-2.002229511188613855e-04, +-2.013050317852671653e-04, +-2.023867209017229300e-04, +-2.034680167339505399e-04, +-2.045489175483419461e-04, +-2.056294216120348954e-04, +-2.067095271929877943e-04, +-2.077892325598123353e-04, +-2.088685359819718518e-04, +-2.099474357296118572e-04, +-2.110259300736391644e-04, +-2.121040172857924678e-04, +-2.131816956385051368e-04, +-2.142589634049764488e-04, +-2.153358188592482958e-04, +-2.164122602760644822e-04, +-2.174882859309428245e-04, +-2.185638941002531052e-04, +-2.196390830610742020e-04, +-2.207138510912907991e-04, +-2.217881964695542197e-04, +-2.228621174753744752e-04, +-2.239356123889817314e-04, +-2.250086794914029069e-04, +-2.260813170645089177e-04, +-2.271535233909964080e-04, +-2.282252967542208917e-04, +-2.292966354384869663e-04, +-2.303675377288857365e-04, +-2.314380019112697695e-04, +-2.325080262723316449e-04, +-2.335776090995553289e-04, +-2.346467486813175738e-04, +-2.357154433067445054e-04, +-2.367836912657888182e-04, +-2.378514908493018745e-04, +-2.389188403488931383e-04, +-2.399857380570070173e-04, +-2.410521822669952610e-04, +-2.421181712729765566e-04, +-2.431837033699099291e-04, +-2.442487768536713132e-04, +-2.453133900208884026e-04, +-2.463775411691336917e-04, +-2.474412285967598395e-04, +-2.485044506029761876e-04, +-2.495672054879187452e-04, +-2.506294915525158562e-04, +-2.516913070985561792e-04, +-2.527526504287666413e-04, +-2.538135198466723590e-04, +-2.548739136566685755e-04, +-2.559338301640972594e-04, +-2.569932676751038271e-04, +-2.580522244967150972e-04, +-2.591106989369099806e-04, +-2.601686893044818406e-04, +-2.612261939091342828e-04, +-2.622832110614393584e-04, +-2.633397390729065200e-04, +-2.643957762559676051e-04, +-2.654513209238085680e-04, +-2.665063713906595582e-04, +-2.675609259716303385e-04, +-2.686149829826889259e-04, +-2.696685407407144468e-04, +-2.707215975635662007e-04, +-2.717741517699483514e-04, +-2.728262016795050121e-04, +-2.738777456127789367e-04, +-2.749287818913023762e-04, +-2.759793088374644810e-04, +-2.770293247745824242e-04, +-2.780788280269485646e-04, +-2.791278169198145088e-04, +-2.801762897792246321e-04, +-2.812242449323270818e-04, +-2.822716807070943783e-04, +-2.833185954325357020e-04, +-2.843649874385362143e-04, +-2.854108550559314884e-04, +-2.864561966165773315e-04, +-2.875010104532146394e-04, +-2.885452948995420922e-04, +-2.895890482902873319e-04, +-2.906322689610706242e-04, +-2.916749552484762531e-04, +-2.927171054901277648e-04, +-2.937587180245475088e-04, +-2.947997911912329664e-04, +-2.958403233307245668e-04, +-2.968803127844733608e-04, +-2.979197578949086206e-04, +-2.989586570055149267e-04, +-2.999970084606700792e-04, +-3.010348106058334246e-04, +-3.020720617873838749e-04, +-3.031087603526981338e-04, +-3.041449046502168866e-04, +-3.051804930293092752e-04, +-3.062155238403494969e-04, +-3.072499954347832117e-04, +-3.082839061649951615e-04, +-3.093172543843802393e-04, +-3.103500384474131490e-04, +-3.113822567095159708e-04, +-3.124139075271500465e-04, +-3.134449892577766236e-04, +-3.144755002599217988e-04, +-3.155054388931637782e-04, +-3.165348035179682421e-04, +-3.175635924959728388e-04, +-3.185918041898203263e-04, +-3.196194369631479471e-04, +-3.206464891806295493e-04, +-3.216729592080482284e-04, +-3.226988454121632413e-04, +-3.237241461608025969e-04, +-3.247488598228196344e-04, +-3.257729847681887581e-04, +-3.267965193678693155e-04, +-3.278194619938755287e-04, +-3.288418110193532017e-04, +-3.298635648184372561e-04, +-3.308847217663295768e-04, +-3.319052802393666120e-04, +-3.329252386148862878e-04, +-3.339445952712966916e-04, +-3.349633485881524549e-04, +-3.359814969459906588e-04, +-3.369990387265208950e-04, +-3.380159723124671889e-04, +-3.390322960876370633e-04, +-3.400480084369963485e-04, +-3.410631077465283985e-04, +-3.420775924033141592e-04, +-3.430914607955949983e-04, +-3.441047113126402698e-04, +-3.451173423448236958e-04, +-3.461293522836863049e-04, +-3.471407395218086586e-04, +-3.481515024528778553e-04, +-3.491616394717614183e-04, +-3.501711489743452080e-04, +-3.511800293577481478e-04, +-3.521882790200466201e-04, +-3.531958963605730554e-04, +-3.542028797797843105e-04, +-3.552092276791269016e-04, +-3.562149384613096819e-04, +-3.572200105301520526e-04, +-3.582244422905602192e-04, +-3.592282321485752218e-04, +-3.602313785114456303e-04, +-3.612338797874914235e-04, +-3.622357343862023802e-04, +-3.632369407181860912e-04, +-3.642374971952697126e-04, +-3.652374022303635725e-04, +-3.662366542375295841e-04, +-3.672352516320328544e-04, +-3.682331928303169636e-04, +-3.692304762498539120e-04, +-3.702271003094345235e-04, +-3.712230634289034664e-04, +-3.722183640293663903e-04, +-3.732130005330277296e-04, +-3.742069713632684407e-04, +-3.752002749447130056e-04, +-3.761929097030961293e-04, +-3.771848740653319662e-04, +-3.781761664595881711e-04, +-3.791667853151502654e-04, +-3.801567290624891828e-04, +-3.811459961333359711e-04, +-3.821345849605505495e-04, +-3.831224939781847005e-04, +-3.841097216215561211e-04, +-3.850962663270952250e-04, +-3.860821265325243613e-04, +-3.870673006767036948e-04, +-3.880517871997035228e-04, +-3.890355845428905232e-04, +-3.900186911486941085e-04, +-3.910011054608869639e-04, +-3.919828259244394382e-04, +-3.929638509854980772e-04, +-3.939441790914340871e-04, +-3.949238086909083868e-04, +-3.959027382337432384e-04, +-3.968809661709909314e-04, +-3.978584909550047979e-04, +-3.988353110393036329e-04, +-3.998114248786697068e-04, +-4.007868309291015476e-04, +-4.017615276478824632e-04, +-4.027355134935642778e-04, +-4.037087869258144056e-04, +-4.046813464056816427e-04, +-4.056531903954446500e-04, +-4.066243173585923831e-04, +-4.075947257598923974e-04, +-4.085644140653519794e-04, +-4.095333807423042860e-04, +-4.105016242592803011e-04, +-4.114691430860797417e-04, +-4.124359356938348095e-04, +-4.134020005548847483e-04, +-4.143673361428429564e-04, +-4.153319409326412760e-04, +-4.162958134005151399e-04, +-4.172589520238461996e-04, +-4.182213552814561977e-04, +-4.191830216533404176e-04, +-4.201439496208728142e-04, +-4.211041376666480453e-04, +-4.220635842745588300e-04, +-4.230222879298552543e-04, +-4.239802471190226357e-04, +-4.249374603298438648e-04, +-4.258939260514715049e-04, +-4.268496427742965492e-04, +-4.278046089900182977e-04, +-4.287588231917109811e-04, +-4.297122838736951752e-04, +-4.306649895316061048e-04, +-4.316169386624614610e-04, +-4.325681297645316763e-04, +-4.335185613374110481e-04, +-4.344682318820814360e-04, +-4.354171399007627499e-04, +-4.363652838971137445e-04, +-4.373126623759748463e-04, +-4.382592738436447881e-04, +-4.392051168077377109e-04, +-4.401501897771669010e-04, +-4.410944912621800806e-04, +-4.420380197744355733e-04, +-4.429807738268708986e-04, +-4.439227519337737328e-04, +-4.448639526108413779e-04, +-4.458043743750632337e-04, +-4.467440157448005953e-04, +-4.476828752397541268e-04, +-4.486209513810226254e-04, +-4.495582426910884385e-04, +-4.504947476936737531e-04, +-4.514304649139881729e-04, +-4.523653928786134683e-04, +-4.532995301153744470e-04, +-4.542328751536156973e-04, +-4.551654265239527637e-04, +-4.560971827584623154e-04, +-4.570281423905380022e-04, +-4.579583039549564279e-04, +-4.588876659879388958e-04, +-4.598162270270351819e-04, +-4.607439856111795887e-04, +-4.616709402807625561e-04, +-4.625970895775064666e-04, +-4.635224320445260893e-04, +-4.644469662264031186e-04, +-4.653706906690502159e-04, +-4.662936039197889087e-04, +-4.672157045274019584e-04, +-4.681369910420026047e-04, +-4.690574620151919923e-04, +-4.699771159999235372e-04, +-4.708959515505641296e-04, +-4.718139672229598367e-04, +-4.727311615743108402e-04, +-4.736475331632423970e-04, +-4.745630805498594288e-04, +-4.754778022956362591e-04, +-4.763916969634701183e-04, +-4.773047631177527008e-04, +-4.782169993242471628e-04, +-4.791284041501463436e-04, +-4.800389761641463290e-04, +-4.809487139362972645e-04, +-4.818576160381942840e-04, +-4.827656810427333471e-04, +-4.836729075243739956e-04, +-4.845792940590309332e-04, +-4.854848392239414817e-04, +-4.863895415979173332e-04, +-4.872933997612076689e-04, +-4.881964122954759577e-04, +-4.890985777838647913e-04, +-4.899998948109566361e-04, +-4.909003619628618705e-04, +-4.917999778270910113e-04, +-4.926987409926250790e-04, +-4.935966500499765295e-04, +-4.944937035910674985e-04, +-4.953899002092960460e-04, +-4.962852384995748625e-04, +-4.971797170583189089e-04, +-4.980733344833012180e-04, +-4.989660893739191741e-04, +-4.998579803309566392e-04, +-5.007490059567616539e-04, +-5.016391648551162246e-04, +-5.025284556312928103e-04, +-5.034168768921157971e-04, +-5.043044272458477653e-04, +-5.051911053022492288e-04, +-5.060769096726448800e-04, +-5.069618389697969551e-04, +-5.078458918079742975e-04, +-5.087290668030158922e-04, +-5.096113625722044479e-04, +-5.104927777343392552e-04, +-5.113733109097913726e-04, +-5.122529607203673424e-04, +-5.131317257894699776e-04, +-5.140096047419678241e-04, +-5.148865962042459016e-04, +-5.157626988042937404e-04, +-5.166379111714915770e-04, +-5.175122319368651415e-04, +-5.183856597329514334e-04, +-5.192581931937815913e-04, +-5.201298309549190566e-04, +-5.210005716535275532e-04, +-5.218704139282490063e-04, +-5.227393564192843152e-04, +-5.236073977683624540e-04, +-5.244745366188137631e-04, +-5.253407716154594696e-04, +-5.262061014046684991e-04, +-5.270705246344037712e-04, +-5.279340399541969375e-04, +-5.287966460150264093e-04, +-5.296583414695375585e-04, +-5.305191249719229136e-04, +-5.313789951778951628e-04, +-5.322379507447531823e-04, +-5.330959903313391016e-04, +-5.339531125981277502e-04, +-5.348093162071004564e-04, +-5.356645998218183399e-04, +-5.365189621074688232e-04, +-5.373724017307618742e-04, +-5.382249173599864926e-04, +-5.390765076650712090e-04, +-5.399271713174675323e-04, +-5.407769069902155449e-04, +-5.416257133579957268e-04, +-5.424735890970279082e-04, +-5.433205328851149632e-04, +-5.441665434017164266e-04, +-5.450116193278106919e-04, +-5.458557593460457158e-04, +-5.466989621406168282e-04, +-5.475412263973194246e-04, +-5.483825508036096813e-04, +-5.492229340484916901e-04, +-5.500623748225779569e-04, +-5.509008718181513092e-04, +-5.517384237290412973e-04, +-5.525750292507003057e-04, +-5.534106870802499561e-04, +-5.542453959163693268e-04, +-5.550791544593652090e-04, +-5.559119614112165587e-04, +-5.567438154754543672e-04, +-5.575747153573276530e-04, +-5.584046597635858615e-04, +-5.592336474027150050e-04, +-5.600616769848195927e-04, +-5.608887472215971521e-04, +-5.617148568263860423e-04, +-5.625400045142131588e-04, +-5.633641890016926690e-04, +-5.641874090071013646e-04, +-5.650096632503336666e-04, +-5.658309504529967105e-04, +-5.666512693382801330e-04, +-5.674706186310292562e-04, +-5.682889970577756616e-04, +-5.691064033467262400e-04, +-5.699228362276292925e-04, +-5.707382944320051402e-04, +-5.715527766930318491e-04, +-5.723662817454376779e-04, +-5.731788083257474079e-04, +-5.739903551720541191e-04, +-5.748009210241966736e-04, +-5.756105046236273349e-04, +-5.764191047134686885e-04, +-5.772267200385714295e-04, +-5.780333493454097374e-04, +-5.788389913821312578e-04, +-5.796436448986205282e-04, +-5.804473086463873052e-04, +-5.812499813786259784e-04, +-5.820516618502663119e-04, +-5.828523488178762989e-04, +-5.836520410397099757e-04, +-5.844507372757657511e-04, +-5.852484362876640006e-04, +-5.860451368387929998e-04, +-5.868408376941802295e-04, +-5.876355376205518984e-04, +-5.884292353863947427e-04, +-5.892219297618344872e-04, +-5.900136195187063179e-04, +-5.908043034306076835e-04, +-5.915939802727854290e-04, +-5.923826488221972707e-04, +-5.931703078575701260e-04, +-5.939569561592829110e-04, +-5.947425925094572885e-04, +-5.955272156919083366e-04, +-5.963108244922087336e-04, +-5.970934176976672907e-04, +-5.978749940972124003e-04, +-5.986555524816028050e-04, +-5.994350916433224298e-04, +-6.002136103764780335e-04, +-6.009911074770163744e-04, +-6.017675817425928051e-04, +-6.025430319725670440e-04, +-6.033174569680496875e-04, +-6.040908555318721777e-04, +-6.048632264686560830e-04, +-6.056345685847168208e-04, +-6.064048806881085435e-04, +-6.071741615886866970e-04, +-6.079424100979972153e-04, +-6.087096250293386451e-04, +-6.094758051978108266e-04, +-6.102409494202131954e-04, +-6.110050565151004020e-04, +-6.117681253028364134e-04, +-6.125301546054711310e-04, +-6.132911432468861074e-04, +-6.140510900526709474e-04, +-6.148099938501792525e-04, +-6.155678534685800124e-04, +-6.163246677387624120e-04, +-6.170804354933772480e-04, +-6.178351555669001375e-04, +-6.185888267955333983e-04, +-6.193414480172442123e-04, +-6.200930180718314125e-04, +-6.208435358008231346e-04, +-6.215930000475194256e-04, +-6.223414096570616333e-04, +-6.230887634763162880e-04, +-6.238350603539540322e-04, +-6.245802991404156854e-04, +-6.253244786879615753e-04, +-6.260675978506654660e-04, +-6.268096554842821772e-04, +-6.275506504464683274e-04, +-6.282905815966585185e-04, +-6.290294477960465787e-04, +-6.297672479076297982e-04, +-6.305039807962534897e-04, +-6.312396453285151450e-04, +-6.319742403728351252e-04, +-6.327077647994194722e-04, +-6.334402174803359115e-04, +-6.341715972894081425e-04, +-6.349019031022718916e-04, +-6.356311337964077636e-04, +-6.363592882511294241e-04, +-6.370863653474658547e-04, +-6.378123639683797117e-04, +-6.385372829985694592e-04, +-6.392611213246234339e-04, +-6.399838778349026432e-04, +-6.407055514195880361e-04, +-6.414261409707447967e-04, +-6.421456453822094786e-04, +-6.428640635496525634e-04, +-6.435813943706224791e-04, +-6.442976367444525759e-04, +-6.450127895723119752e-04, +-6.457268517572512141e-04, +-6.464398222041167026e-04, +-6.471516998195894288e-04, +-6.478624835122401456e-04, +-6.485721721924380800e-04, +-6.492807647723937599e-04, +-6.499882601662140911e-04, +-6.506946572897900341e-04, +-6.513999550609234556e-04, +-6.521041523992234792e-04, +-6.528072482261508287e-04, +-6.535092414650674848e-04, +-6.542101310411451787e-04, +-6.549099158814120124e-04, +-6.556085949148056933e-04, +-6.563061670720753051e-04, +-6.570026312858361691e-04, +-6.576979864906094169e-04, +-6.583922316227431692e-04, +-6.590853656204585060e-04, +-6.597773874238396005e-04, +-6.604682959748692803e-04, +-6.611580902174158010e-04, +-6.618467690971333158e-04, +-6.625343315616419619e-04, +-6.632207765604216081e-04, +-6.639061030448036157e-04, +-6.645903099679967502e-04, +-6.652733962851447528e-04, +-6.659553609532208474e-04, +-6.666362029310999486e-04, +-6.673159211795339418e-04, +-6.679945146612043753e-04, +-6.686719823406381095e-04, +-6.693483231842539379e-04, +-6.700235361603952208e-04, +-6.706976202393118884e-04, +-6.713705743930611274e-04, +-6.720423975957071994e-04, +-6.727130888231453668e-04, +-6.733826470531783289e-04, +-6.740510712655576383e-04, +-6.747183604418698598e-04, +-6.753845135656769746e-04, +-6.760495296223995032e-04, +-6.767134075993607410e-04, +-6.773761464858507261e-04, +-6.780377452730158676e-04, +-6.786982029539222628e-04, +-6.793575185235908257e-04, +-6.800156909789174895e-04, +-6.806727193187136473e-04, +-6.813286025437587361e-04, +-6.819833396567001648e-04, +-6.826369296621163062e-04, +-6.832893715665501076e-04, +-6.839406643784102114e-04, +-6.845908071081065888e-04, +-6.852397987678732726e-04, +-6.858876383719624296e-04, +-6.865343249365453730e-04, +-6.871798574796964074e-04, +-6.878242350214175491e-04, +-6.884674565837013011e-04, +-6.891095211904253769e-04, +-6.897504278674077786e-04, +-6.903901756424517906e-04, +-6.910287635452564249e-04, +-6.916661906074825575e-04, +-6.923024558627151976e-04, +-6.929375583465332026e-04, +-6.935714970964186382e-04, +-6.942042711518024234e-04, +-6.948358795540910023e-04, +-6.954663213466635244e-04, +-6.960955955747585465e-04, +-6.967237012856775363e-04, +-6.973506375285993663e-04, +-6.979764033547221271e-04, +-6.986009978171591524e-04, +-6.992244199709823872e-04, +-6.998466688732692250e-04, +-7.004677435830189165e-04, +-7.010876431611932262e-04, +-7.017063666707619701e-04, +-7.023239131766226750e-04, +-7.029402817456396110e-04, +-7.035554714466895438e-04, +-7.041694813505811794e-04, +-7.047823105300914841e-04, +-7.053939580600171845e-04, +-7.060044230170757799e-04, +-7.066137044800134201e-04, +-7.072218015295165432e-04, +-7.078287132482515573e-04, +-7.084344387209194844e-04, +-7.090389770341080748e-04, +-7.096423272764727612e-04, +-7.102444885386375618e-04, +-7.108454599131903105e-04, +-7.114452404947059667e-04, +-7.120438293797833702e-04, +-7.126412256669815981e-04, +-7.132374284568429503e-04, +-7.138324368519490025e-04, +-7.144262499568360385e-04, +-7.150188668780455741e-04, +-7.156102867241061422e-04, +-7.162005086055696140e-04, +-7.167895316350079461e-04, +-7.173773549269047605e-04, +-7.179639775978330449e-04, +-7.185493987663568163e-04, +-7.191336175530133393e-04, +-7.197166330803641925e-04, +-7.202984444729678380e-04, +-7.208790508574273266e-04, +-7.214584513623172220e-04, +-7.220366451182243673e-04, +-7.226136312577913614e-04, +-7.231894089156328583e-04, +-7.237639772283775263e-04, +-7.243373353347025249e-04, +-7.249094823753116047e-04, +-7.254804174928544420e-04, +-7.260501398320880770e-04, +-7.266186485397296791e-04, +-7.271859427645688701e-04, +-7.277520216573844574e-04, +-7.283168843709822730e-04, +-7.288805300602276991e-04, +-7.294429578819836522e-04, +-7.300041669951366037e-04, +-7.305641565606441762e-04, +-7.311229257414616350e-04, +-7.316804737025707278e-04, +-7.322367996110328101e-04, +-7.327919026359041698e-04, +-7.333457819482757083e-04, +-7.338984367213189112e-04, +-7.344498661302045327e-04, +-7.350000693521452052e-04, +-7.355490455664332773e-04, +-7.360967939543532111e-04, +-7.366433136992966155e-04, +-7.371886039866136020e-04, +-7.377326640037791018e-04, +-7.382754929402970219e-04, +-7.388170899876998115e-04, +-7.393574543395698209e-04, +-7.398965851915806097e-04, +-7.404344817414172577e-04, +-7.409711431888173477e-04, +-7.415065687356194295e-04, +-7.420407575856734651e-04, +-7.425737089449011095e-04, +-7.431054220212697991e-04, +-7.436358960248335174e-04, +-7.441651301677203265e-04, +-7.446931236640425954e-04, +-7.452198757300548598e-04, +-7.457453855840555932e-04, +-7.462696524463970733e-04, +-7.467926755394971999e-04, +-7.473144540878386274e-04, +-7.478349873180047602e-04, +-7.483542744586155681e-04, +-7.488723147403639072e-04, +-7.493891073960433835e-04, +-7.499046516604946852e-04, +-7.504189467706290015e-04, +-7.509319919654654273e-04, +-7.514437864860700313e-04, +-7.519543295755848041e-04, +-7.524636204792648463e-04, +-7.529716584444135332e-04, +-7.534784427204129810e-04, +-7.539839725587623191e-04, +-7.544882472129983263e-04, +-7.549912659387904073e-04, +-7.554930279938560245e-04, +-7.559935326380046085e-04, +-7.564927791331590252e-04, +-7.569907667433044014e-04, +-7.574874947345146877e-04, +-7.579829623749859439e-04, +-7.584771689349745390e-04, +-7.589701136868300026e-04, +-7.594617959050285272e-04, +-7.599522148661100839e-04, +-7.604413698487079128e-04, +-7.609292601335888558e-04, +-7.614158850035739924e-04, +-7.619012437436367604e-04, +-7.623853356407749114e-04, +-7.628681599841546012e-04, +-7.633497160650452298e-04, +-7.638300031767517864e-04, +-7.643090206147485320e-04, +-7.647867676766089600e-04, +-7.652632436619862802e-04, +-7.657384478726599313e-04, +-7.662123796124955741e-04, +-7.666850381875124198e-04, +-7.671564229058011565e-04, +-7.676265330775655822e-04, +-7.680953680151578417e-04, +-7.685629270330055678e-04, +-7.690292094476541655e-04, +-7.694942145777871950e-04, +-7.699579417442141199e-04, +-7.704203902698003766e-04, +-7.708815594795972613e-04, +-7.713414487007325343e-04, +-7.718000572624906510e-04, +-7.722573844962460831e-04, +-7.727134297354988808e-04, +-7.731681923159005850e-04, +-7.736216715751960057e-04, +-7.740738668532553147e-04, +-7.745247774921116667e-04, +-7.749744028358862818e-04, +-7.754227422308337643e-04, +-7.758697950253650886e-04, +-7.763155605699919790e-04, +-7.767600382173601948e-04, +-7.772032273222700223e-04, +-7.776451272416234732e-04, +-7.780857373344924818e-04, +-7.785250569620474556e-04, +-7.789630854876072570e-04, +-7.793998222766521057e-04, +-7.798352666967434555e-04, +-7.802694181176323069e-04, +-7.807022759111988163e-04, +-7.811338394514492607e-04, +-7.815641081145268797e-04, +-7.819930812787428834e-04, +-7.824207583245299403e-04, +-7.828471386344684150e-04, +-7.832722215932714062e-04, +-7.836960065878328854e-04, +-7.841184930071590665e-04, +-7.845396802424044018e-04, +-7.849595676868912058e-04, +-7.853781547361009816e-04, +-7.857954407876030804e-04, +-7.862114252411809027e-04, +-7.866261074987552452e-04, +-7.870394869643771449e-04, +-7.874515630442703801e-04, +-7.878623351467917884e-04, +-7.882718026824898135e-04, +-7.886799650640351168e-04, +-7.890868217062534280e-04, +-7.894923720261617581e-04, +-7.898966154429033467e-04, +-7.902995513777789959e-04, +-7.907011792542760183e-04, +-7.911014984980224837e-04, +-7.915005085367973021e-04, +-7.918982088005756519e-04, +-7.922945987214575310e-04, +-7.926896777337377959e-04, +-7.930834452738592163e-04, +-7.934759007804169199e-04, +-7.938670436942091334e-04, +-7.942568734581705037e-04, +-7.946453895173988778e-04, +-7.950325913191947681e-04, +-7.954184783129989019e-04, +-7.958030499504140142e-04, +-7.961863056852501669e-04, +-7.965682449734600226e-04, +-7.969488672731616123e-04, +-7.973281720446810531e-04, +-7.977061587504857615e-04, +-7.980828268552207739e-04, +-7.984581758257292385e-04, +-7.988322051310002645e-04, +-7.992049142422359264e-04, +-7.995763026327601906e-04, +-7.999463697781261434e-04, +-8.003151151560563593e-04, +-8.006825382464353123e-04, +-8.010486385313254215e-04, +-8.014134154949993606e-04, +-8.017768686238854140e-04, +-8.021389974066011957e-04, +-8.024998013339386871e-04, +-8.028592798988992566e-04, +-8.032174325966457383e-04, +-8.035742589245206463e-04, +-8.039297583820716533e-04, +-8.042839304710459533e-04, +-8.046367746953179446e-04, +-8.049882905610108779e-04, +-8.053384775764252986e-04, +-8.056873352520109660e-04, +-8.060348631004589023e-04, +-8.063810606366105362e-04, +-8.067259273775356570e-04, +-8.070694628424647608e-04, +-8.074116665528239612e-04, +-8.077525380322571075e-04, +-8.080920768065772124e-04, +-8.084302824037899789e-04, +-8.087671543541220982e-04, +-8.091026921899724606e-04, +-8.094368954459325383e-04, +-8.097697636588160929e-04, +-8.101012963676139638e-04, +-8.104314931135146683e-04, +-8.107603534399217488e-04, +-8.110878768924150665e-04, +-8.114140630187986151e-04, +-8.117389113690627904e-04, +-8.120624214953887270e-04, +-8.123845929521903656e-04, +-8.127054252960553638e-04, +-8.130249180857800073e-04, +-8.133430708823796186e-04, +-8.136598832490599337e-04, +-8.139753547512216560e-04, +-8.142894849564984031e-04, +-8.146022734347097612e-04, +-8.149137197578838364e-04, +-8.152238235002497732e-04, +-8.155325842382616080e-04, +-8.158400015505862333e-04, +-8.161460750180539589e-04, +-8.164508042237507771e-04, +-8.167541887529721758e-04, +-8.170562281931781443e-04, +-8.173569221340852217e-04, +-8.176562701676125039e-04, +-8.179542718878781739e-04, +-8.182509268912164157e-04, +-8.185462347761709090e-04, +-8.188401951435184643e-04, +-8.191328075962317273e-04, +-8.194240717394889358e-04, +-8.197139871807151198e-04, +-8.200025535295244221e-04, +-8.202897703977440587e-04, +-8.205756373994472792e-04, +-8.208601541508924338e-04, +-8.211433202705650412e-04, +-8.214251353791835342e-04, +-8.217055990996591447e-04, +-8.219847110571490293e-04, +-8.222624708790093233e-04, +-8.225388781948166084e-04, +-8.228139326363873192e-04, +-8.230876338377367610e-04, +-8.233599814351056723e-04, +-8.236309750669737776e-04, +-8.239006143740234666e-04, +-8.241688989991571412e-04, +-8.244358285875247544e-04, +-8.247014027864774067e-04, +-8.249656212455905475e-04, +-8.252284836166862017e-04, +-8.254899895537833130e-04, +-8.257501387131434972e-04, +-8.260089307532366733e-04, +-8.262663653347847564e-04, +-8.265224421207285899e-04, +-8.267771607762058276e-04, +-8.270305209686222743e-04, +-8.272825223675931219e-04, +-8.275331646449639832e-04, +-8.277824474747985314e-04, +-8.280303705334104850e-04, +-8.282769334993271776e-04, +-8.285221360533073396e-04, +-8.287659778783367610e-04, +-8.290084586596507344e-04, +-8.292495780846949154e-04, +-8.294893358431450550e-04, +-8.297277316269275997e-04, +-8.299647651301971397e-04, +-8.302004360493100629e-04, +-8.304347440828995820e-04, +-8.306676889317959368e-04, +-8.308992702990888445e-04, +-8.311294878900909620e-04, +-8.313583414123368017e-04, +-8.315858305756215459e-04, +-8.318119550919543179e-04, +-8.320367146755809499e-04, +-8.322601090430020894e-04, +-8.324821379129295059e-04, +-8.327028010063170990e-04, +-8.329220980463713066e-04, +-8.331400287585191211e-04, +-8.333565928704219673e-04, +-8.335717901119950009e-04, +-8.337856202153805458e-04, +-8.339980829149502622e-04, +-8.342091779473361553e-04, +-8.344189050513868815e-04, +-8.346272639682066714e-04, +-8.348342544411280078e-04, +-8.350398762157249617e-04, +-8.352441290398173119e-04, +-8.354470126634576431e-04, +-8.356485268389348157e-04, +-8.358486713207978177e-04, +-8.360474458658149989e-04, +-8.362448502330006340e-04, +-8.364408841836225121e-04, +-8.366355474811789511e-04, +-8.368288398914080139e-04, +-8.370207611822933630e-04, +-8.372113111240630677e-04, +-8.374004894891963263e-04, +-8.375882960523877959e-04, +-8.377747305906022360e-04, +-8.379597928830374290e-04, +-8.381434827111348051e-04, +-8.383257998585731544e-04, +-8.385067441112918282e-04, +-8.386863152574581051e-04, +-8.388645130874916936e-04, +-8.390413373940444576e-04, +-8.392167879720387972e-04, +-8.393908646186156071e-04, +-8.395635671331731992e-04, +-8.397348953173522325e-04, +-8.399048489750530599e-04, +-8.400734279123903006e-04, +-8.402406319377534469e-04, +-8.404064608617644715e-04, +-8.405709144972921395e-04, +-8.407339926594600311e-04, +-8.408956951656264842e-04, +-8.410560218354077959e-04, +-8.412149724906570810e-04, +-8.413725469554768485e-04, +-8.415287450562269162e-04, +-8.416835666215015345e-04, +-8.418370114821418539e-04, +-8.419890794712517551e-04, +-8.421397704241695512e-04, +-8.422890841784822988e-04, +-8.424370205740312192e-04, +-8.425835794529005314e-04, +-8.427287606594203789e-04, +-8.428725640401804912e-04, +-8.430149894440053552e-04, +-8.431560367219843562e-04, +-8.432957057274304696e-04, +-8.434339963159308935e-04, +-8.435709083453126790e-04, +-8.437064416756480433e-04, +-8.438405961692545861e-04, +-8.439733716907168656e-04, +-8.441047681068504028e-04, +-8.442347852867249916e-04, +-8.443634231016682772e-04, +-8.444906814252479748e-04, +-8.446165601332854224e-04, +-8.447410591038414856e-04, +-8.448641782172507109e-04, +-8.449859173560729693e-04, +-8.451062764051259831e-04, +-8.452252552514818561e-04, +-8.453428537844662064e-04, +-8.454590718956350726e-04, +-8.455739094788166559e-04, +-8.456873664300725056e-04, +-8.457994426477298284e-04, +-8.459101380323536239e-04, +-8.460194524867614306e-04, +-8.461273859160245176e-04, +-8.462339382274650665e-04, +-8.463391093306446783e-04, +-8.464428991373920208e-04, +-8.465453075617739888e-04, +-8.466463345201060038e-04, +-8.467459799309675185e-04, +-8.468442437151742610e-04, +-8.469411257957982922e-04, +-8.470366260981610678e-04, +-8.471307445498305099e-04, +-8.472234810806325003e-04, +-8.473148356226393877e-04, +-8.474048081101665181e-04, +-8.474933984797952203e-04, +-8.475806066703388698e-04, +-8.476664326228723796e-04, +-8.477508762807213580e-04, +-8.478339375894530013e-04, +-8.479156164968882367e-04, +-8.479959129531075774e-04, +-8.480748269104232580e-04, +-8.481523583234066655e-04, +-8.482285071488835683e-04, +-8.483032733459226239e-04, +-8.483766568758451367e-04, +-8.484486577022170347e-04, +-8.485192757908596034e-04, +-8.485885111098454741e-04, +-8.486563636294822523e-04, +-8.487228333223403821e-04, +-8.487879201632414364e-04, +-8.488516241292468414e-04, +-8.489139451996673092e-04, +-8.489748833560658734e-04, +-8.490344385822558293e-04, +-8.490926108642953126e-04, +-8.491494001904923957e-04, +-8.492048065514020512e-04, +-8.492588299398326577e-04, +-8.493114703508338565e-04, +-8.493627277817055506e-04, +-8.494126022319994224e-04, +-8.494610937035065737e-04, +-8.495082022002764998e-04, +-8.495539277285946459e-04, +-8.495982702970040915e-04, +-8.496412299162892871e-04, +-8.496828065994776807e-04, +-8.497230003618554389e-04, +-8.497618112209463044e-04, +-8.497992391965181018e-04, +-8.498352843105949888e-04, +-8.498699465874431447e-04, +-8.499032260535665422e-04, +-8.499351227377284143e-04, +-8.499656366709284865e-04, +-8.499947678864118667e-04, +-8.500225164196763099e-04, +-8.500488823084562801e-04, +-8.500738655927360691e-04, +-8.500974663147444843e-04, +-8.501196845189515957e-04, +-8.501405202520754580e-04, +-8.501599735630727865e-04, +-8.501780445031515343e-04, +-8.501947331257592904e-04, +-8.502100394865839310e-04, +-8.502239636435634856e-04, +-8.502365056568726926e-04, +-8.502476655889349257e-04, +-8.502574435044074489e-04, +-8.502658394701994140e-04, +-8.502728535554539713e-04, +-8.502784858315631236e-04, +-8.502827363721529802e-04, +-8.502856052530966598e-04, +-8.502870925525070258e-04, +-8.502871983507366864e-04, +-8.502859227303745252e-04, +-8.502832657762605549e-04, +-8.502792275754659677e-04, +-8.502738082173001829e-04, +-8.502670077933190866e-04, +-8.502588263973147320e-04, +-8.502492641253160980e-04, +-8.502383210755903907e-04, +-8.502259973486467294e-04, +-8.502122930472269307e-04, +-8.501972082763158091e-04, +-8.501807431431358635e-04, +-8.501628977571379538e-04, +-8.501436722300169131e-04, +-8.501230666757064519e-04, +-8.501010812103670152e-04, +-8.500777159524047560e-04, +-8.500529710224538626e-04, +-8.500268465433859916e-04, +-8.499993426403118935e-04, +-8.499704594405671021e-04, +-8.499401970737301484e-04, +-8.499085556716080327e-04, +-8.498755353682442473e-04, +-8.498411362999134643e-04, +-8.498053586051240293e-04, +-8.497682024246161177e-04, +-8.497296679013605428e-04, +-8.496897551805632004e-04, +-8.496484644096580219e-04, +-8.496057957383090341e-04, +-8.495617493184152384e-04, +-8.495163253041012859e-04, +-8.494695238517222489e-04, +-8.494213451198665476e-04, +-8.493717892693444576e-04, +-8.493208564632000364e-04, +-8.492685468667050515e-04, +-8.492148606473564872e-04, +-8.491597979748795799e-04, +-8.491033590212293362e-04, +-8.490455439605822932e-04, +-8.489863529693463841e-04, +-8.489257862261502053e-04, +-8.488638439118504969e-04, +-8.488005262095275893e-04, +-8.487358333044860538e-04, +-8.486697653842574128e-04, +-8.486023226385918999e-04, +-8.485335052594680013e-04, +-8.484633134410779270e-04, +-8.483917473798518972e-04, +-8.483188072744216046e-04, +-8.482444933256569689e-04, +-8.481688057366402241e-04, +-8.480917447126749180e-04, +-8.480133104612879716e-04, +-8.479335031922182950e-04, +-8.478523231174322919e-04, +-8.477697704511130174e-04, +-8.476858454096549735e-04, +-8.476005482116752768e-04, +-8.475138790780108395e-04, +-8.474258382317073103e-04, +-8.473364258980307841e-04, +-8.472456423044680187e-04, +-8.471534876807099547e-04, +-8.470599622586702558e-04, +-8.469650662724704550e-04, +-8.468687999584514469e-04, +-8.467711635551652483e-04, +-8.466721573033735883e-04, +-8.465717814460531126e-04, +-8.464700362283926732e-04, +-8.463669218977848711e-04, +-8.462624387038424284e-04, +-8.461565868983824670e-04, +-8.460493667354309537e-04, +-8.459407784712223754e-04, +-8.458308223642029911e-04, +-8.457194986750249778e-04, +-8.456068076665466471e-04, +-8.454927496038286503e-04, +-8.453773247541493743e-04, +-8.452605333869792461e-04, +-8.451423757739960196e-04, +-8.450228521890967024e-04, +-8.449019629083628609e-04, +-8.447797082100828468e-04, +-8.446560883747554829e-04, +-8.445311036850772701e-04, +-8.444047544259445552e-04, +-8.442770408844540737e-04, +-8.441479633499067436e-04, +-8.440175221137995350e-04, +-8.438857174698275289e-04, +-8.437525497138855446e-04, +-8.436180191440673798e-04, +-8.434821260606620167e-04, +-8.433448707661537298e-04, +-8.432062535652279410e-04, +-8.430662747647581006e-04, +-8.429249346738175051e-04, +-8.427822336036695392e-04, +-8.426381718677732058e-04, +-8.424927497817823662e-04, +-8.423459676635350075e-04, +-8.421978258330679867e-04, +-8.420483246126124781e-04, +-8.418974643265720714e-04, +-8.417452453015587680e-04, +-8.415916678663659840e-04, +-8.414367323519729956e-04, +-8.412804390915433125e-04, +-8.411227884204450613e-04, +-8.409637806762053401e-04, +-8.408034161985592251e-04, +-8.406416953294199544e-04, +-8.404786184128748084e-04, +-8.403141857952083115e-04, +-8.401483978248748020e-04, +-8.399812548525277056e-04, +-8.398127572309853827e-04, +-8.396429053152506443e-04, +-8.394716994625067404e-04, +-8.392991400321261420e-04, +-8.391252273856404003e-04, +-8.389499618867737570e-04, +-8.387733439014235202e-04, +-8.385953737976620161e-04, +-8.384160519457334445e-04, +-8.382353787180626611e-04, +-8.380533544892510575e-04, +-8.378699796360645265e-04, +-8.376852545374384494e-04, +-8.374991795744992718e-04, +-8.373117551305270983e-04, +-8.371229815909718474e-04, +-8.369328593434682134e-04, +-8.367413887778035742e-04, +-8.365485702859434694e-04, +-8.363544042620123025e-04, +-8.361588911023076515e-04, +-8.359620312052936557e-04, +-8.357638249715899567e-04, +-8.355642728039889373e-04, +-8.353633751074487825e-04, +-8.351611322890764577e-04, +-8.349575447581529704e-04, +-8.347526129261224198e-04, +-8.345463372065758424e-04, +-8.343387180152733295e-04, +-8.341297557701363294e-04, +-8.339194508912314927e-04, +-8.337078038007960431e-04, +-8.334948149232126232e-04, +-8.332804846850238234e-04, +-8.330648135149331572e-04, +-8.328478018437817515e-04, +-8.326294501045792456e-04, +-8.324097587324817823e-04, +-8.321887281647927671e-04, +-8.319663588409666622e-04, +-8.317426512026191788e-04, +-8.315176056934943166e-04, +-8.312912227594986252e-04, +-8.310635028486843988e-04, +-8.308344464112495673e-04, +-8.306040538995289151e-04, +-8.303723257680023203e-04, +-8.301392624733141623e-04, +-8.299048644742262676e-04, +-8.296691322316405688e-04, +-8.294320662086342340e-04, +-8.291936668703884334e-04, +-8.289539346842317085e-04, +-8.287128701196373693e-04, +-8.284704736482167726e-04, +-8.282267457437211648e-04, +-8.279816868820125174e-04, +-8.277352975411175198e-04, +-8.274875782011884397e-04, +-8.272385293444945581e-04, +-8.269881514554545867e-04, +-8.267364450206182366e-04, +-8.264834105286493048e-04, +-8.262290484703553812e-04, +-8.259733593386694170e-04, +-8.257163436286459306e-04, +-8.254580018374785711e-04, +-8.251983344644622798e-04, +-8.249373420110432719e-04, +-8.246750249807813064e-04, +-8.244113838793454578e-04, +-8.241464192145460995e-04, +-8.238801314963124615e-04, +-8.236125212366725724e-04, +-8.233435889497959766e-04, +-8.230733351519659794e-04, +-8.228017603615706476e-04, +-8.225288650991237349e-04, +-8.222546498872568754e-04, +-8.219791152507051639e-04, +-8.217022617163275387e-04, +-8.214240898130767497e-04, +-8.211446000720466288e-04, +-8.208637930264190731e-04, +-8.205816692114730436e-04, +-8.202982291646362814e-04, +-8.200134734254071371e-04, +-8.197274025353959871e-04, +-8.194400170383327143e-04, +-8.191513174800436154e-04, +-8.188613044084479308e-04, +-8.185699783735815886e-04, +-8.182773399275747621e-04, +-8.179833896246648797e-04, +-8.176881280211686530e-04, +-8.173915556755188307e-04, +-8.170936731482492370e-04, +-8.167944810019687508e-04, +-8.164939798013824473e-04, +-8.161921701133243411e-04, +-8.158890525066765046e-04, +-8.155846275524426857e-04, +-8.152788958236936636e-04, +-8.149718578956079065e-04, +-8.146635143454532485e-04, +-8.143538657525639050e-04, +-8.140429126983834062e-04, +-8.137306557664338068e-04, +-8.134170955423113483e-04, +-8.131022326137052163e-04, +-8.127860675703923359e-04, +-8.124686010042087491e-04, +-8.121498335090903808e-04, +-8.118297656810516795e-04, +-8.115083981181671867e-04, +-8.111857314206049295e-04, +-8.108617661906051708e-04, +-8.105365030324734703e-04, +-8.102099425526032355e-04, +-8.098820853594411364e-04, +-8.095529320635206066e-04, +-8.092224832774467733e-04, +-8.088907396158753153e-04, +-8.085577016955430374e-04, +-8.082233701352611486e-04, +-8.078877455558825188e-04, +-8.075508285803406020e-04, +-8.072126198336409793e-04, +-8.068731199428243878e-04, +-8.065323295370109558e-04, +-8.061902492473800369e-04, +-8.058468797071710772e-04, +-8.055022215516703882e-04, +-8.051562754182136402e-04, +-8.048090419462289053e-04, +-8.044605217771607633e-04, +-8.041107155545121517e-04, +-8.037596239238496785e-04, +-8.034072475327958159e-04, +-8.030535870309950730e-04, +-8.026986430701625683e-04, +-8.023424163040559489e-04, +-8.019849073884840638e-04, +-8.016261169812758476e-04, +-8.012660457423317114e-04, +-8.009046943335876561e-04, +-8.005420634190054058e-04, +-8.001781536645899721e-04, +-7.998129657384145906e-04, +-7.994465003105480794e-04, +-7.990787580531185904e-04, +-7.987097396402951773e-04, +-7.983394457482522345e-04, +-7.979678770552320550e-04, +-7.975950342414720807e-04, +-7.972209179892696292e-04, +-7.968455289829428625e-04, +-7.964688679088186441e-04, +-7.960909354552755815e-04, +-7.957117323127111752e-04, +-7.953312591735270734e-04, +-7.949495167321740663e-04, +-7.945665056851164160e-04, +-7.941822267308212314e-04, +-7.937966805697955477e-04, +-7.934098679045625824e-04, +-7.930217894396413524e-04, +-7.926324458815950293e-04, +-7.922418379389610087e-04, +-7.918499663223471869e-04, +-7.914568317443219144e-04, +-7.910624349194716760e-04, +-7.906667765644074869e-04, +-7.902698573977519911e-04, +-7.898716781401025986e-04, +-7.894722395140920919e-04, +-7.890715422443519804e-04, +-7.886695870574907076e-04, +-7.882663746821504634e-04, +-7.878619058489564437e-04, +-7.874561812905423288e-04, +-7.870492017415227446e-04, +-7.866409679384990094e-04, +-7.862314806201175718e-04, +-7.858207405269699393e-04, +-7.854087484016314923e-04, +-7.849955049887278376e-04, +-7.845810110348098000e-04, +-7.841652672884551201e-04, +-7.837482745001999327e-04, +-7.833300334225895079e-04, +-7.829105448101496278e-04, +-7.824898094193628428e-04, +-7.820678280087239821e-04, +-7.816446013387002558e-04, +-7.812201301717167264e-04, +-7.807944152721976163e-04, +-7.803674574065460343e-04, +-7.799392573431081959e-04, +-7.795098158522325129e-04, +-7.790791337062419461e-04, +-7.786472116793968171e-04, +-7.782140505479651733e-04, +-7.777796510901448333e-04, +-7.773440140861264877e-04, +-7.769071403180714732e-04, +-7.764690305700671031e-04, +-7.760296856281946468e-04, +-7.755891062804984304e-04, +-7.751472933169468050e-04, +-7.747042475295021864e-04, +-7.742599697120766027e-04, +-7.738144606605099020e-04, +-7.733677211726273232e-04, +-7.729197520481997062e-04, +-7.724705540889258192e-04, +-7.720201280984773529e-04, +-7.715684748824676959e-04, +-7.711155952484648364e-04, +-7.706614900059595950e-04, +-7.702061599663818882e-04, +-7.697496059431569978e-04, +-7.692918287515930313e-04, +-7.688328292089502023e-04, +-7.683726081344410472e-04, +-7.679111663492084157e-04, +-7.674485046763370724e-04, +-7.669846239408165079e-04, +-7.665195249695988360e-04, +-7.660532085915635562e-04, +-7.655856756374924011e-04, +-7.651169269401193176e-04, +-7.646469633341139872e-04, +-7.641757856560393251e-04, +-7.637033947443762003e-04, +-7.632297914395879453e-04, +-7.627549765839869997e-04, +-7.622789510218537382e-04, +-7.618017155993455063e-04, +-7.613232711645664431e-04, +-7.608436185675344129e-04, +-7.603627586601470695e-04, +-7.598806922962491857e-04, +-7.593974203315861406e-04, +-7.589129436237905839e-04, +-7.584272630324247200e-04, +-7.579403794189623102e-04, +-7.574522936467423771e-04, +-7.569630065810427138e-04, +-7.564725190890417197e-04, +-7.559808320397803450e-04, +-7.554879463042313715e-04, +-7.549938627552667779e-04, +-7.544985822676159980e-04, +-7.540021057179460435e-04, +-7.535044339847608895e-04, +-7.530055679485304953e-04, +-7.525055084915482310e-04, +-7.520042564980028692e-04, +-7.515018128539969079e-04, +-7.509981784475038523e-04, +-7.504933541683573737e-04, +-7.499873409083017244e-04, +-7.494801395609580188e-04, +-7.489717510217921417e-04, +-7.484621761881801250e-04, +-7.479514159593617442e-04, +-7.474394712364563478e-04, +-7.469263429224356435e-04, +-7.464120319221294450e-04, +-7.458965391423027580e-04, +-7.453798654915146180e-04, +-7.448620118802091626e-04, +-7.443429792207081506e-04, +-7.438227684271859173e-04, +-7.433013804156895403e-04, +-7.427788161040886411e-04, +-7.422550764121446654e-04, +-7.417301622614717437e-04, +-7.412040745755080684e-04, +-7.406768142795742233e-04, +-7.401483823008405500e-04, +-7.396187795683050294e-04, +-7.390880070128013051e-04, +-7.385560655670767461e-04, +-7.380229561656408751e-04, +-7.374886797448907023e-04, +-7.369532372430684418e-04, +-7.364166296002178178e-04, +-7.358788577582615854e-04, +-7.353399226609175048e-04, +-7.347998252537719585e-04, +-7.342585664842399447e-04, +-7.337161473015351527e-04, +-7.331725686567367502e-04, +-7.326278315027418952e-04, +-7.320819367942517494e-04, +-7.315348854878170153e-04, +-7.309866785418136495e-04, +-7.304373169164041571e-04, +-7.298868015736040531e-04, +-7.293351334772467344e-04, +-7.287823135929434723e-04, +-7.282283428881715587e-04, +-7.276732223321555858e-04, +-7.271169528960203183e-04, +-7.265595355526223171e-04, +-7.260009712766399281e-04, +-7.254412610445816305e-04, +-7.248804058347589315e-04, +-7.243184066272447333e-04, +-7.237552644039590933e-04, +-7.231909801486011364e-04, +-7.226255548466764848e-04, +-7.220589894854598538e-04, +-7.214912850540438401e-04, +-7.209224425433242859e-04, +-7.203524629459411889e-04, +-7.197813472563683668e-04, +-7.192090964708584876e-04, +-7.186357115874296257e-04, +-7.180611936058679725e-04, +-7.174855435278156566e-04, +-7.169087623566133176e-04, +-7.163308510974329213e-04, +-7.157518107571783379e-04, +-7.151716423445652476e-04, +-7.145903468700821101e-04, +-7.140079253459476628e-04, +-7.134243787861916947e-04, +-7.128397082066099434e-04, +-7.122539146247251719e-04, +-7.116669990598656651e-04, +-7.110789625331168746e-04, +-7.104898060672886753e-04, +-7.098995306869914767e-04, +-7.093081374185898191e-04, +-7.087156272901613905e-04, +-7.081220013315940630e-04, +-7.075272605744751956e-04, +-7.069314060521771775e-04, +-7.063344387998249027e-04, +-7.057363598542365718e-04, +-7.051371702540621452e-04, +-7.045368710396210377e-04, +-7.039354632529836505e-04, +-7.033329479379879599e-04, +-7.027293261402059064e-04, +-7.021245989069090261e-04, +-7.015187672871423929e-04, +-7.009118323316665053e-04, +-7.003037950929840664e-04, +-6.996946566252922788e-04, +-6.990844179845515831e-04, +-6.984730802284443499e-04, +-6.978606444163536291e-04, +-6.972471116093681377e-04, +-6.966324828703752839e-04, +-6.960167592639011393e-04, +-6.953999418561968493e-04, +-6.947820317152606428e-04, +-6.941630299107832969e-04, +-6.935429375141806624e-04, +-6.929217555985378281e-04, +-6.922994852386859903e-04, +-6.916761275111604941e-04, +-6.910516834941578994e-04, +-6.904261542676163200e-04, +-6.897995409131761754e-04, +-6.891718445141278241e-04, +-6.885430661555022027e-04, +-6.879132069240227959e-04, +-6.872822679080642198e-04, +-6.866502501977425361e-04, +-6.860171548848074822e-04, +-6.853829830627416759e-04, +-6.847477358267021769e-04, +-6.841114142734919723e-04, +-6.834740195016364124e-04, +-6.828355526113349646e-04, +-6.821960147044284694e-04, +-6.815554068844677715e-04, +-6.809137302566785907e-04, +-6.802709859279166367e-04, +-6.796271750067469719e-04, +-6.789822986034007527e-04, +-6.783363578297332700e-04, +-6.776893537993075416e-04, +-6.770412876273423789e-04, +-6.763921604306761745e-04, +-6.757419733278625289e-04, +-6.750907274390392787e-04, +-6.744384238860953555e-04, +-6.737850637924847367e-04, +-6.731306482833312880e-04, +-6.724751784854304977e-04, +-6.718186555272220471e-04, +-6.711610805387509954e-04, +-6.705024546517476857e-04, +-6.698427789995606329e-04, +-6.691820547171977232e-04, +-6.685202829412621381e-04, +-6.678574648100248871e-04, +-6.671936014633966187e-04, +-6.665286940428890227e-04, +-6.658627436916245883e-04, +-6.651957515544409038e-04, +-6.645277187777091617e-04, +-6.638586465094474575e-04, +-6.631885358993122245e-04, +-6.625173880985680934e-04, +-6.618452042601126115e-04, +-6.611719855384143351e-04, +-6.604977330895952289e-04, +-6.598224480713880567e-04, +-6.591461316430931219e-04, +-6.584687849656583897e-04, +-6.577904092016400228e-04, +-6.571110055151478451e-04, +-6.564305750719424872e-04, +-6.557491190393779229e-04, +-6.550666385863621131e-04, +-6.543831348834456933e-04, +-6.536986091027671133e-04, +-6.530130624180129550e-04, +-6.523264960045182213e-04, +-6.516389110391457729e-04, +-6.509503087003856410e-04, +-6.502606901683127437e-04, +-6.495700566245366870e-04, +-6.488784092522927299e-04, +-6.481857492363881160e-04, +-6.474920777631641266e-04, +-6.467973960205782632e-04, +-6.461017051981586025e-04, +-6.454050064869546821e-04, +-6.447073010796335610e-04, +-6.440085901704045756e-04, +-6.433088749550590216e-04, +-6.426081566309183295e-04, +-6.419064363968419789e-04, +-6.412037154533435082e-04, +-6.404999950023982855e-04, +-6.397952762475306787e-04, +-6.390895603939077303e-04, +-6.383828486481563612e-04, +-6.376751422184602979e-04, +-6.369664423145798057e-04, +-6.362567501478034408e-04, +-6.355460669309740719e-04, +-6.348343938784237195e-04, +-6.341217322060662548e-04, +-6.334080831313575015e-04, +-6.326934478732281235e-04, +-6.319778276521904187e-04, +-6.312612236902823745e-04, +-6.305436372110206130e-04, +-6.298250694394945002e-04, +-6.291055216023119356e-04, +-6.283849949275511050e-04, +-6.276634906448759488e-04, +-6.269410099853970578e-04, +-6.262175541817893102e-04, +-6.254931244682339743e-04, +-6.247677220803775095e-04, +-6.240413482554189525e-04, +-6.233140042320598276e-04, +-6.225856912504607781e-04, +-6.218564105523263514e-04, +-6.211261633808627149e-04, +-6.203949509807209521e-04, +-6.196627745980968095e-04, +-6.189296354806747514e-04, +-6.181955348775853513e-04, +-6.174604740395056883e-04, +-6.167244542185236055e-04, +-6.159874766683170371e-04, +-6.152495426439538641e-04, +-6.145106534019770250e-04, +-6.137708102005068637e-04, +-6.130300142990367579e-04, +-6.122882669585536820e-04, +-6.115455694415467729e-04, +-6.108019230119710085e-04, +-6.100573289352004790e-04, +-6.093117884781228209e-04, +-6.085653029090698279e-04, +-6.078178734978525793e-04, +-6.070695015156858708e-04, +-6.063201882352925150e-04, +-6.055699349308507574e-04, +-6.048187428779503664e-04, +-6.040666133536206055e-04, +-6.033135476364316066e-04, +-6.025595470062876120e-04, +-6.018046127446129157e-04, +-6.010487461342092904e-04, +-6.002919484593642998e-04, +-5.995342210058043518e-04, +-5.987755650606384292e-04, +-5.980159819124553425e-04, +-5.972554728512753739e-04, +-5.964940391684957427e-04, +-5.957316821569903515e-04, +-5.949684031110529740e-04, +-5.942042033263505258e-04, +-5.934390841000160895e-04, +-5.926730467306029438e-04, +-5.919060925180258002e-04, +-5.911382227636613083e-04, +-5.903694387702950385e-04, +-5.895997418420745361e-04, +-5.888291332846152474e-04, +-5.880576144048673803e-04, +-5.872851865112401534e-04, +-5.865118509135317567e-04, +-5.857376089228949825e-04, +-5.849624618519212510e-04, +-5.841864110145976756e-04, +-5.834094577262492753e-04, +-5.826316033036379625e-04, +-5.818528490649158133e-04, +-5.810731963295629431e-04, +-5.802926464184902889e-04, +-5.795112006539764006e-04, +-5.787288603596884738e-04, +-5.779456268606352962e-04, +-5.771615014831803659e-04, +-5.763764855551609372e-04, +-5.755905804056752999e-04, +-5.748037873652083298e-04, +-5.740161077656426563e-04, +-5.732275429402178962e-04, +-5.724380942234831657e-04, +-5.716477629513957428e-04, +-5.708565504612491846e-04, +-5.700644580917041187e-04, +-5.692714871827227576e-04, +-5.684776390756658259e-04, +-5.676829151132349897e-04, +-5.668873166394446670e-04, +-5.660908449996310265e-04, +-5.652935015405708167e-04, +-5.644952876102587785e-04, +-5.636962045580887074e-04, +-5.628962537347904612e-04, +-5.620954364923671847e-04, +-5.612937541842177164e-04, +-5.604912081650016047e-04, +-5.596877997907469867e-04, +-5.588835304188040755e-04, +-5.580784014077892156e-04, +-5.572724141176876650e-04, +-5.564655699097943980e-04, +-5.556578701466639066e-04, +-5.548493161922134166e-04, +-5.540399094116679182e-04, +-5.532296511714993427e-04, +-5.524185428395371510e-04, +-5.516065857849065338e-04, +-5.507937813779816829e-04, +-5.499801309905007164e-04, +-5.491656359954053251e-04, +-5.483502977670478553e-04, +-5.475341176809694812e-04, +-5.467170971140096003e-04, +-5.458992374443257835e-04, +-5.450805400513602725e-04, +-5.442610063157766629e-04, +-5.434406376195710349e-04, +-5.426194353460112377e-04, +-5.417974008795864741e-04, +-5.409745356061053129e-04, +-5.401508409126259741e-04, +-5.393263181874914571e-04, +-5.385009688202704523e-04, +-5.376747942017702422e-04, +-5.368477957241695169e-04, +-5.360199747807888482e-04, +-5.351913327662042056e-04, +-5.343618710763525575e-04, +-5.335315911082878174e-04, +-5.327004942604029970e-04, +-5.318685819322643230e-04, +-5.310358555247306081e-04, +-5.302023164398969807e-04, +-5.293679660810493483e-04, +-5.285328058527525436e-04, +-5.276968371608106419e-04, +-5.268600614121965973e-04, +-5.260224800151700950e-04, +-5.251840943792133662e-04, +-5.243449059149744851e-04, +-5.235049160343792580e-04, +-5.226641261505717007e-04, +-5.218225376778516970e-04, +-5.209801520318091145e-04, +-5.201369706291715826e-04, +-5.192929948879247302e-04, +-5.184482262272680593e-04, +-5.176026660675395923e-04, +-5.167563158303433747e-04, +-5.159091769384739059e-04, +-5.150612508158722291e-04, +-5.142125388877249190e-04, +-5.133630425804121484e-04, +-5.125127633214480571e-04, +-5.116617025395857029e-04, +-5.108098616647664290e-04, +-5.099572421280554628e-04, +-5.091038453617535882e-04, +-5.082496727993213604e-04, +-5.073947258754106559e-04, +-5.065390060258086191e-04, +-5.056825146874545764e-04, +-5.048252532985677546e-04, +-5.039672232984198155e-04, +-5.031084261274631174e-04, +-5.022488632273475195e-04, +-5.013885360408628115e-04, +-5.005274460119730822e-04, +-4.996655945857408259e-04, +-4.988029832084282062e-04, +-4.979396133274546646e-04, +-4.970754863913247118e-04, +-4.962106038497415524e-04, +-4.953449671535501645e-04, +-4.944785777546995692e-04, +-4.936114371062506369e-04, +-4.927435466625148652e-04, +-4.918749078788007840e-04, +-4.910055222116417465e-04, +-4.901353911186194208e-04, +-4.892645160584971472e-04, +-4.883928984911623666e-04, +-4.875205398775603219e-04, +-4.866474416798118019e-04, +-4.857736053611534568e-04, +-4.848990323858727450e-04, +-4.840237242194259494e-04, +-4.831476823283761064e-04, +-4.822709081803308812e-04, +-4.813934032440605288e-04, +-4.805151689894331677e-04, +-4.796362068873556901e-04, +-4.787565184098886337e-04, +-4.778761050301821053e-04, +-4.769949682224205946e-04, +-4.761131094619512898e-04, +-4.752305302251101714e-04, +-4.743472319894515379e-04, +-4.734632162334902368e-04, +-4.725784844368407134e-04, +-4.716930380802293707e-04, +-4.708068786454565140e-04, +-4.699200076153325998e-04, +-4.690324264737943537e-04, +-4.681441367058426458e-04, +-4.672551397974828054e-04, +-4.663654372358387330e-04, +-4.654750305090718022e-04, +-4.645839211064186985e-04, +-4.636921105181296193e-04, +-4.627996002354832906e-04, +-4.619063917509246605e-04, +-4.610124865578274045e-04, +-4.601178861506240842e-04, +-4.592225920248299456e-04, +-4.583266056769771078e-04, +-4.574299286046505588e-04, +-4.565325623064100924e-04, +-4.556345082819045840e-04, +-4.547357680318121959e-04, +-4.538363430577742417e-04, +-4.529362348625147190e-04, +-4.520354449497784020e-04, +-4.511339748242867683e-04, +-4.502318259917560510e-04, +-4.493289999590382934e-04, +-4.484254982338510033e-04, +-4.475213223250021789e-04, +-4.466164737423017296e-04, +-4.457109539965061276e-04, +-4.448047645994494879e-04, +-4.438979070638831605e-04, +-4.429903829036138034e-04, +-4.420821936334394693e-04, +-4.411733407690909500e-04, +-4.402638258273438828e-04, +-4.393536503259585233e-04, +-4.384428157836199515e-04, +-4.375313237200499617e-04, +-4.366191756559487862e-04, +-4.357063731129321577e-04, +-4.347929176136468309e-04, +-4.338788106817111144e-04, +-4.329640538416479204e-04, +-4.320486486190254949e-04, +-4.311325965402732657e-04, +-4.302158991329248661e-04, +-4.292985579253438323e-04, +-4.283805744468736562e-04, +-4.274619502278471104e-04, +-4.265426867995475955e-04, +-4.256227856941419748e-04, +-4.247022484448056902e-04, +-4.237810765856351593e-04, +-4.228592716516820903e-04, +-4.219368351788802983e-04, +-4.210137687041530952e-04, +-4.200900737653562615e-04, +-4.191657519012158121e-04, +-4.182408046514454161e-04, +-4.173152335566782545e-04, +-4.163890401584322172e-04, +-4.154622259991215582e-04, +-4.145347926221984382e-04, +-4.136067415718891385e-04, +-4.126780743934279228e-04, +-4.117487926328801504e-04, +-4.108188978372764454e-04, +-4.098883915545507351e-04, +-4.089572753334756857e-04, +-4.080255507237839159e-04, +-4.070932192761056554e-04, +-4.061602825419001147e-04, +-4.052267420735783800e-04, +-4.042925994244411791e-04, +-4.033578561486118787e-04, +-4.024225138011581311e-04, +-4.014865739380267138e-04, +-4.005500381159835736e-04, +-3.996129078927471287e-04, +-3.986751848268291622e-04, +-3.977368704776735459e-04, +-3.967979664055879354e-04, +-3.958584741716651115e-04, +-3.949183953380018259e-04, +-3.939777314674336060e-04, +-3.930364841236708216e-04, +-3.920946548713187432e-04, +-3.911522452758388357e-04, +-3.902092569034732979e-04, +-3.892656913213774438e-04, +-3.883215500975270573e-04, +-3.873768348007632241e-04, +-3.864315470006988193e-04, +-3.854856882678489366e-04, +-3.845392601735594940e-04, +-3.835922642899682565e-04, +-3.826447021900182262e-04, +-3.816965754476021660e-04, +-3.807478856373133964e-04, +-3.797986343345860364e-04, +-3.788488231157112127e-04, +-3.778984535577780248e-04, +-3.769475272387065048e-04, +-3.759960457371638084e-04, +-3.750440106326886815e-04, +-3.740914235056244565e-04, +-3.731382859370513437e-04, +-3.721845995089148010e-04, +-3.712303658039560906e-04, +-3.702755864056470102e-04, +-3.693202628983145762e-04, +-3.683643968670755379e-04, +-3.674079898977685062e-04, +-3.664510435771018934e-04, +-3.654935594924777300e-04, +-3.645355392321443749e-04, +-3.635769843851214341e-04, +-3.626178965411420811e-04, +-3.616582772907706391e-04, +-3.606981282253418110e-04, +-3.597374509368893390e-04, +-3.587762470182760547e-04, +-3.578145180631241650e-04, +-3.568522656657477062e-04, +-3.558894914212818892e-04, +-3.549261969256116509e-04, +-3.539623837753103964e-04, +-3.529980535677590446e-04, +-3.520332079010854757e-04, +-3.510678483740938406e-04, +-3.501019765864128806e-04, +-3.491355941383007160e-04, +-3.481687026308988753e-04, +-3.472013036659512154e-04, +-3.462333988459525658e-04, +-3.452649897741647206e-04, +-3.442960780545731791e-04, +-3.433266652918199788e-04, +-3.423567530913287590e-04, +-3.413863430592162349e-04, +-3.404154368023356203e-04, +-3.394440359281815432e-04, +-3.384721420450234565e-04, +-3.374997567618333760e-04, +-3.365268816882432718e-04, +-3.355535184345635530e-04, +-3.345796686119271047e-04, +-3.336053338320347172e-04, +-3.326305157072978751e-04, +-3.316552158508615259e-04, +-3.306794358765332274e-04, +-3.297031773988260816e-04, +-3.287264420328684755e-04, +-3.277492313945322877e-04, +-3.267715471003643669e-04, +-3.257933907675185522e-04, +-3.248147640138833924e-04, +-3.238356684580163351e-04, +-3.228561057190719517e-04, +-3.218760774169329643e-04, +-3.208955851721421028e-04, +-3.199146306058322283e-04, +-3.189332153398551366e-04, +-3.179513409967140661e-04, +-3.169690091994949600e-04, +-3.159862215720191754e-04, +-3.150029797386600912e-04, +-3.140192853245003172e-04, +-3.130351399552576430e-04, +-3.120505452572219915e-04, +-3.110655028573787472e-04, +-3.100800143833442463e-04, +-3.090940814632957365e-04, +-3.081077057261015907e-04, +-3.071208888012507245e-04, +-3.061336323187856473e-04, +-3.051459379094306149e-04, +-3.041578072045029958e-04, +-3.031692418359497004e-04, +-3.021802434362855986e-04, +-3.011908136386081563e-04, +-3.002009540767470010e-04, +-2.992106663850038219e-04, +-2.982199521982748305e-04, +-2.972288131521847137e-04, +-2.962372508828166676e-04, +-2.952452670268676006e-04, +-2.942528632216625541e-04, +-2.932600411050895954e-04, +-2.922668023156406924e-04, +-2.912731484923192313e-04, +-2.902790812747714218e-04, +-2.892846023032167452e-04, +-2.882897132183772650e-04, +-2.872944156616119050e-04, +-2.862987112748419647e-04, +-2.853026017004866091e-04, +-2.843060885815899917e-04, +-2.833091735617538709e-04, +-2.823118582850676255e-04, +-2.813141443962601505e-04, +-2.803160335405216691e-04, +-2.793175273636545452e-04, +-2.783186275120044361e-04, +-2.773193356323914462e-04, +-2.763196533722394178e-04, +-2.753195823795093612e-04, +-2.743191243026257831e-04, +-2.733182807906115613e-04, +-2.723170534930164960e-04, +-2.713154440598468365e-04, +-2.703134541416999932e-04, +-2.693110853896886437e-04, +-2.683083394553784995e-04, +-2.673052179909361369e-04, +-2.663017226489277690e-04, +-2.652978550825842250e-04, +-2.642936169455072939e-04, +-2.632890098918022137e-04, +-2.622840355762086437e-04, +-2.612786956538270654e-04, +-2.602729917802784859e-04, +-2.592669256117172312e-04, +-2.582604988047885542e-04, +-2.572537130165559387e-04, +-2.562465699046355947e-04, +-2.552390711270990432e-04, +-2.542312183425220131e-04, +-2.532230132098857792e-04, +-2.522144573887133380e-04, +-2.512055525389971997e-04, +-2.501963003211513038e-04, +-2.491867023960338419e-04, +-2.481767604250975276e-04, +-2.471664760700985428e-04, +-2.461558509933609745e-04, +-2.451448868575722799e-04, +-2.441335853259402793e-04, +-2.431219480621182373e-04, +-2.421099767301392687e-04, +-2.410976729945466868e-04, +-2.400850385203235303e-04, +-2.390720749728215478e-04, +-2.380587840178969943e-04, +-2.370451673218357128e-04, +-2.360312265512859410e-04, +-2.350169633733900415e-04, +-2.340023794557136768e-04, +-2.329874764661758778e-04, +-2.319722560732040309e-04, +-2.309567199455505118e-04, +-2.299408697524487298e-04, +-2.289247071635404590e-04, +-2.279082338488088344e-04, +-2.268914514787091069e-04, +-2.258743617240961373e-04, +-2.248569662561578260e-04, +-2.238392667465451092e-04, +-2.228212648673040064e-04, +-2.218029622908023011e-04, +-2.207843606898630604e-04, +-2.197654617376955985e-04, +-2.187462671078232957e-04, +-2.177267784742180400e-04, +-2.167069975112048707e-04, +-2.156869258935068109e-04, +-2.146665652961733640e-04, +-2.136459173945987283e-04, +-2.126249838646799282e-04, +-2.116037663825423749e-04, +-2.105822666246932547e-04, +-2.095604862680425890e-04, +-2.085384269898570746e-04, +-2.075160904676866562e-04, +-2.064934783794991841e-04, +-2.054705924035867123e-04, +-2.044474342186075925e-04, +-2.034240055034938831e-04, +-2.024003079375843539e-04, +-2.013763432005532541e-04, +-2.003521129723629323e-04, +-1.993276189332828104e-04, +-1.983028627640462675e-04, +-1.972778461455538125e-04, +-1.962525707591168125e-04, +-1.952270382863666100e-04, +-1.942012504091837784e-04, +-1.931752088098530004e-04, +-1.921489151708796479e-04, +-1.911223711751442540e-04, +-1.900955785058344250e-04, +-1.890685388463717107e-04, +-1.880412538805450702e-04, +-1.870137252924427835e-04, +-1.859859547663774793e-04, +-1.849579439870227440e-04, +-1.839296946393411585e-04, +-1.829012084085122251e-04, +-1.818724869800697366e-04, +-1.808435320398256647e-04, +-1.798143452738028313e-04, +-1.787849283683898684e-04, +-1.777552830101347041e-04, +-1.767254108860144210e-04, +-1.756953136831352843e-04, +-1.746649930888920384e-04, +-1.736344507909851184e-04, +-1.726036884773744632e-04, +-1.715727078362069553e-04, +-1.705415105559519460e-04, +-1.695100983253283971e-04, +-1.684784728332349498e-04, +-1.674466357688830375e-04, +-1.664145888217036988e-04, +-1.653823336813901868e-04, +-1.643498720378270346e-04, +-1.633172055811093278e-04, +-1.622843360016998587e-04, +-1.612512649901537941e-04, +-1.602179942372505947e-04, +-1.591845254341312215e-04, +-1.581508602719952910e-04, +-1.571170004423742665e-04, +-1.560829476369226957e-04, +-1.550487035475757176e-04, +-1.540142698664779663e-04, +-1.529796482859100619e-04, +-1.519448404984263313e-04, +-1.509098481967812995e-04, +-1.498746730738581318e-04, +-1.488393168228042680e-04, +-1.478037811369601630e-04, +-1.467680677097861844e-04, +-1.457321782349985443e-04, +-1.446961144064979861e-04, +-1.436598779182977936e-04, +-1.426234704646814875e-04, +-1.415868937400156932e-04, +-1.405501494389103576e-04, +-1.395132392561451869e-04, +-1.384761648865981160e-04, +-1.374389280253810234e-04, +-1.364015303677676048e-04, +-1.353639736091224121e-04, +-1.343262594450350775e-04, +-1.332883895712485666e-04, +-1.322503656835878106e-04, +-1.312121894780959364e-04, +-1.301738626509600530e-04, +-1.291353868984415100e-04, +-1.280967639170341101e-04, +-1.270579954032525539e-04, +-1.260190830539078817e-04, +-1.249800285658038152e-04, +-1.239408336358736656e-04, +-1.229014999613148827e-04, +-1.218620292393091548e-04, +-1.208224231671823148e-04, +-1.197826834424238696e-04, +-1.187428117626154018e-04, +-1.177028098254738838e-04, +-1.166626793287560919e-04, +-1.156224219703943211e-04, +-1.145820394484263997e-04, +-1.135415334609198501e-04, +-1.125009057061118311e-04, +-1.114601578823335972e-04, +-1.104192916879638363e-04, +-1.093783088214479694e-04, +-1.083372109814574597e-04, +-1.072959998665864127e-04, +-1.062546771756261912e-04, +-1.052132446073549303e-04, +-1.041717038606960213e-04, +-1.031300566346469338e-04, +-1.020883046282057333e-04, +-1.010464495405082334e-04, +-1.000044930707550696e-04, +-9.896243691814065658e-05, +-9.792028278198737197e-05, +-9.687803236167531371e-05, +-9.583568735656889943e-05, +-9.479324946615324556e-05, +-9.375072038996277264e-05, +-9.270810182750667994e-05, +-9.166539547840819771e-05, +-9.062260304233048193e-05, +-8.957972621890423028e-05, +-8.853676670788760198e-05, +-8.749372620895561146e-05, +-8.645060642197395723e-05, +-8.540740904669597380e-05, +-8.436413578292209069e-05, +-8.332078833051934812e-05, +-8.227736838937400377e-05, +-8.123387765931719721e-05, +-8.019031784026260288e-05, +-7.914669063213363950e-05, +-7.810299773479177719e-05, +-7.705924084817192721e-05, +-7.601542167218719480e-05, +-7.497154190677322307e-05, +-7.392760325181483314e-05, +-7.288360740716711187e-05, +-7.183955607281507423e-05, +-7.079545094859215014e-05, +-6.975129373433992818e-05, +-6.870708612992849787e-05, +-6.766282983518436380e-05, +-6.661852654993411188e-05, +-6.557417797390819995e-05, +-6.452978580687844816e-05, +-6.348535174858476046e-05, +-6.244087749866306580e-05, +-6.139636475678192764e-05, +-6.035181522257015985e-05, +-5.930723059556732615e-05, +-5.826261257524431960e-05, +-5.721796286116374321e-05, +-5.617328315267405652e-05, +-5.512857514916344150e-05, +-5.408384054996340348e-05, +-5.303908105427663778e-05, +-5.199429836133707830e-05, +-5.094949417022056194e-05, +-4.990467018000567675e-05, +-4.885982808970055119e-05, +-4.781496959817046333e-05, +-4.677009640427515501e-05, +-4.572521020679541106e-05, +-4.468031270436146127e-05, +-4.363540559558876320e-05, +-4.259049057900664807e-05, +-4.154556935298471705e-05, +-4.050064361587023672e-05, +-3.945571506591557208e-05, +-3.841078540120523334e-05, +-3.736585631981649363e-05, +-3.632092951960703449e-05, +-3.527600669849141065e-05, +-3.423108955413552184e-05, +-3.318617978411719669e-05, +-3.214127908594650119e-05, +-3.109638915701643463e-05, +-3.005151169453028120e-05, +-2.900664839563875827e-05, +-2.796180095734393569e-05, +-2.691697107654311208e-05, +-2.587216044993300533e-05, +-2.482737077414651103e-05, +-2.378260374568032191e-05, +-2.273786106084539670e-05, +-2.169314441578776664e-05, +-2.064845550664850613e-05, +-1.960379602928172837e-05, +-1.855916767939143200e-05, +-1.751457215266867299e-05, +-1.647001114448587721e-05, +-1.542548635017357969e-05, +-1.438099946480819882e-05, +-1.333655218337219496e-05, +-1.229214620068158994e-05, +-1.124778321131313569e-05, +-1.020346490974156579e-05, +-9.159192990266784562e-06, +-8.114969146941322019e-06, +-7.070795073707387225e-06, +-6.026672464324144578e-06, +-4.982603012295195928e-06, +-3.938588411005524632e-06, +-2.894630353648898478e-06, +-1.850730533155289122e-06, +-8.068906423511008680e-07, + 2.368876262298256778e-07, + 1.280602580162693331e-06, + 2.324252527344019658e-06, + 3.367835775715012314e-06, + 4.411350633590239436e-06, + 5.454795409380957757e-06, + 6.498168411807446617e-06, + 7.541467949761987679e-06, + 8.584692332288400187e-06, + 9.627839868770951339e-06, + 1.067090886879741308e-05, + 1.171389764211527897e-05, + 1.275680449877414534e-05, + 1.379962774908187564e-05, + 1.484236570346770467e-05, + 1.588501667267121673e-05, + 1.692757896769836763e-05, + 1.797005089980108986e-05, + 1.901243078045676053e-05, + 2.005471692132426232e-05, + 2.109690763443297691e-05, + 2.213900123204585026e-05, + 2.318099602661566870e-05, + 2.422289033095051164e-05, + 2.526468245805365553e-05, + 2.630637072121955625e-05, + 2.734795343398984408e-05, + 2.838942891024900787e-05, + 2.943079546406455322e-05, + 3.047205140989895378e-05, + 3.151319506233314248e-05, + 3.255422473639512976e-05, + 3.359513874728343042e-05, + 3.463593541055556233e-05, + 3.567661304206175082e-05, + 3.671716995792371899e-05, + 3.775760447449123835e-05, + 3.879791490853071894e-05, + 3.983809957708830854e-05, + 4.087815679744672781e-05, + 4.191808488731289155e-05, + 4.295788216454281944e-05, + 4.399754694746885506e-05, + 4.503707755462431919e-05, + 4.607647230493123943e-05, + 4.711572951765713793e-05, + 4.815484751227848295e-05, + 4.919382460866862850e-05, + 5.023265912707809542e-05, + 5.127134938799716231e-05, + 5.230989371232167392e-05, + 5.334829042130892767e-05, + 5.438653783644147076e-05, + 5.542463427961539900e-05, + 5.646257807309617552e-05, + 5.750036753949882380e-05, + 5.853800100176710419e-05, + 5.957547678312973926e-05, + 6.061279320728879392e-05, + 6.164994859828343862e-05, + 6.268694128044555809e-05, + 6.372376957854247975e-05, + 6.476043181773292123e-05, + 6.579692632343025213e-05, + 6.683325142149102328e-05, + 6.786940543817159856e-05, + 6.890538670010702661e-05, + 6.994119353429080683e-05, + 7.097682426803099279e-05, + 7.201227722913954813e-05, + 7.304755074579411076e-05, + 7.408264314649534309e-05, + 7.511755276023219152e-05, + 7.615227791634447739e-05, + 7.718681694450377434e-05, + 7.822116817490041966e-05, + 7.925532993810690478e-05, + 8.028930056503569984e-05, + 8.132307838712581776e-05, + 8.235666173606822650e-05, + 8.339004894413323745e-05, + 8.442323834389372215e-05, + 8.545622826841472574e-05, + 8.648901705120894687e-05, + 8.752160302610076522e-05, + 8.855398452741432345e-05, + 8.958615988992926467e-05, + 9.061812744886056626e-05, + 9.164988553979289143e-05, + 9.268143249886602846e-05, + 9.371276666250243071e-05, + 9.474388636773182668e-05, + 9.577478995191775722e-05, + 9.680547575296750409e-05, + 9.783594210917315951e-05, + 9.886618735930649386e-05, + 9.989620984257690215e-05, + 1.009260078987232496e-04, + 1.019555798678587491e-04, + 1.029849240906327248e-04, + 1.040140389081876092e-04, + 1.050429226620235132e-04, + 1.060715736941856034e-04, + 1.070999903472197713e-04, + 1.081281709641531726e-04, + 1.091561138884733419e-04, + 1.101838174640849610e-04, + 1.112112800354965849e-04, + 1.122384999476858217e-04, + 1.132654755460544194e-04, + 1.142922051765709197e-04, + 1.153186871857260162e-04, + 1.163449199203976387e-04, + 1.173709017280375990e-04, + 1.183966309566508414e-04, + 1.194221059546609481e-04, + 1.204473250711187799e-04, + 1.214722866554305718e-04, + 1.224969890576804970e-04, + 1.235214306283590878e-04, + 1.245456097185491354e-04, + 1.255695246798594722e-04, + 1.265931738644049550e-04, + 1.276165556247625817e-04, + 1.286396683141578388e-04, + 1.296625102863306937e-04, + 1.306850798954910340e-04, + 1.317073754965049066e-04, + 1.327293954446233588e-04, + 1.337511380958047709e-04, + 1.347726018064421532e-04, + 1.357937849335511188e-04, + 1.368146858347231822e-04, + 1.378353028679957628e-04, + 1.388556343920331116e-04, + 1.398756787660858977e-04, + 1.408954343499718004e-04, + 1.419148995040066632e-04, + 1.429340725891921414e-04, + 1.439529519669656042e-04, + 1.449715359994108762e-04, + 1.459898230492114545e-04, + 1.470078114796334319e-04, + 1.480254996545038676e-04, + 1.490428859381677713e-04, + 1.500599686956745587e-04, + 1.510767462926410629e-04, + 1.520932170952119065e-04, + 1.531093794701958942e-04, + 1.541252317850252745e-04, + 1.551407724076206201e-04, + 1.561559997065759019e-04, + 1.571709120511157712e-04, + 1.581855078110740382e-04, + 1.591997853568757556e-04, + 1.602137430594925769e-04, + 1.612273792906286965e-04, + 1.622406924225847829e-04, + 1.632536808282189196e-04, + 1.642663428811038425e-04, + 1.652786769553735516e-04, + 1.662906814258157122e-04, + 1.673023546678297239e-04, + 1.683136950575186606e-04, + 1.693247009715332534e-04, + 1.703353707872807903e-04, + 1.713457028826526551e-04, + 1.723556956363458210e-04, + 1.733653474275936705e-04, + 1.743746566363491978e-04, + 1.753836216432430508e-04, + 1.763922408294486561e-04, + 1.774005125768680512e-04, + 1.784084352680887062e-04, + 1.794160072863611080e-04, + 1.804232270155369606e-04, + 1.814300928402501117e-04, + 1.824366031456504077e-04, + 1.834427563177181938e-04, + 1.844485507430021270e-04, + 1.854539848088191572e-04, + 1.864590569031018439e-04, + 1.874637654144921406e-04, + 1.884681087322957760e-04, + 1.894720852465784776e-04, + 1.904756933480083829e-04, + 1.914789314280166094e-04, + 1.924817978787556484e-04, + 1.934842910929662795e-04, + 1.944864094641615053e-04, + 1.954881513865807708e-04, + 1.964895152551744326e-04, + 1.974904994655802041e-04, + 1.984911024140826881e-04, + 1.994913224977950617e-04, + 2.004911581145276984e-04, + 2.014906076627440677e-04, + 2.024896695416993780e-04, + 2.034883421513989971e-04, + 2.044866238924637671e-04, + 2.054845131663144548e-04, + 2.064820083751285184e-04, + 2.074791079218198879e-04, + 2.084758102100196385e-04, + 2.094721136440345476e-04, + 2.104680166290479428e-04, + 2.114635175708816925e-04, + 2.124586148761705459e-04, + 2.134533069523273025e-04, + 2.144475922074050376e-04, + 2.154414690502832325e-04, + 2.164349358906212078e-04, + 2.174279911388422404e-04, + 2.184206332060676162e-04, + 2.194128605042969336e-04, + 2.204046714461429884e-04, + 2.213960644451479275e-04, + 2.223870379155184866e-04, + 2.233775902723038266e-04, + 2.243677199313560142e-04, + 2.253574253091988064e-04, + 2.263467048232084685e-04, + 2.273355568915688338e-04, + 2.283239799332569106e-04, + 2.293119723679731142e-04, + 2.302995326163255539e-04, + 2.312866590995646746e-04, + 2.322733502398955339e-04, + 2.332596044602162932e-04, + 2.342454201843178997e-04, + 2.352307958367334372e-04, + 2.362157298428273016e-04, + 2.372002206287572535e-04, + 2.381842666215590949e-04, + 2.391678662490010333e-04, + 2.401510179397361208e-04, + 2.411337201232620299e-04, + 2.421159712297942836e-04, + 2.430977696904387244e-04, + 2.440791139371563867e-04, + 2.450600024027389389e-04, + 2.460404335207938575e-04, + 2.470204057256975894e-04, + 2.479999174527793785e-04, + 2.489789671381875832e-04, + 2.499575532188521090e-04, + 2.509356741326129411e-04, + 2.519133283181863164e-04, + 2.528905142150285486e-04, + 2.538672302635187157e-04, + 2.548434749049364881e-04, + 2.558192465813357653e-04, + 2.567945437357404279e-04, + 2.577693648118867318e-04, + 2.587437082545342030e-04, + 2.597175725091997907e-04, + 2.606909560223402310e-04, + 2.616638572413106296e-04, + 2.626362746142321355e-04, + 2.636082065901707255e-04, + 2.645796516191015343e-04, + 2.655506081518787674e-04, + 2.665210746401820881e-04, + 2.674910495366891131e-04, + 2.684605312948178070e-04, + 2.694295183690325517e-04, + 2.703980092145863781e-04, + 2.713660022876981785e-04, + 2.723334960455095553e-04, + 2.733004889459595419e-04, + 2.742669794479575323e-04, + 2.752329660113459310e-04, + 2.761984470968772217e-04, + 2.771634211661564502e-04, + 2.781278866818100897e-04, + 2.790918421072573273e-04, + 2.800552859069008844e-04, + 2.810182165460919424e-04, + 2.819806324911076456e-04, + 2.829425322091314770e-04, + 2.839039141682152571e-04, + 2.848647768374516407e-04, + 2.858251186868480780e-04, + 2.867849381872872956e-04, + 2.877442338106569130e-04, + 2.887030040298100859e-04, + 2.896612473184374619e-04, + 2.906189621512437430e-04, + 2.915761470039063773e-04, + 2.925328003530556641e-04, + 2.934889206762567558e-04, + 2.944445064519676455e-04, + 2.953995561597139944e-04, + 2.963540682799650446e-04, + 2.973080412940894385e-04, + 2.982614736845315634e-04, + 2.992143639345555182e-04, + 3.001667105285480927e-04, + 3.011185119517651191e-04, + 3.020697666905234301e-04, + 3.030204732320369268e-04, + 3.039706300646057729e-04, + 3.049202356773685453e-04, + 3.058692885605969751e-04, + 3.068177872054476106e-04, + 3.077657301041319829e-04, + 3.087131157498785509e-04, + 3.096599426368035180e-04, + 3.106062092600885330e-04, + 3.115519141159366718e-04, + 3.124970557015547103e-04, + 3.134416325150910540e-04, + 3.143856430558117040e-04, + 3.153290858238423796e-04, + 3.162719593204712273e-04, + 3.172142620478960937e-04, + 3.181559925094189223e-04, + 3.190971492092963512e-04, + 3.200377306528306770e-04, + 3.209777353463274087e-04, + 3.219171617971844433e-04, + 3.228560085137422288e-04, + 3.237942740054394557e-04, + 3.247319567827689846e-04, + 3.256690553571571739e-04, + 3.266055682411298173e-04, + 3.275414939482786960e-04, + 3.284768309932383228e-04, + 3.294115778916677272e-04, + 3.303457331602122917e-04, + 3.312792953166741883e-04, + 3.322122628798875326e-04, + 3.331446343696797862e-04, + 3.340764083070396455e-04, + 3.350075832138713614e-04, + 3.359381576132879077e-04, + 3.368681300293632948e-04, + 3.377974989873025187e-04, + 3.387262630133775388e-04, + 3.396544206349134541e-04, + 3.405819703802475209e-04, + 3.415089107789186164e-04, + 3.424352403614402615e-04, + 3.433609576594717078e-04, + 3.442860612057719672e-04, + 3.452105495340883562e-04, + 3.461344211793137594e-04, + 3.470576746774569222e-04, + 3.479803085656162673e-04, + 3.489023213819246547e-04, + 3.498237116657173249e-04, + 3.507444779572809596e-04, + 3.516646187981546027e-04, + 3.525841327308736257e-04, + 3.535030182991460729e-04, + 3.544212740478060414e-04, + 3.553388985227006521e-04, + 3.562558902708475852e-04, + 3.571722478404054809e-04, + 3.580879697806486233e-04, + 3.590030546419112670e-04, + 3.599175009757535739e-04, + 3.608313073347165834e-04, + 3.617444722726135382e-04, + 3.626569943442825225e-04, + 3.635688721057789632e-04, + 3.644801041142506750e-04, + 3.653906889279185072e-04, + 3.663006251062479192e-04, + 3.672099112098208278e-04, + 3.681185458003075257e-04, + 3.690265274405779756e-04, + 3.699338546946763853e-04, + 3.708405261276922962e-04, + 3.717465403059310738e-04, + 3.726518957968702147e-04, + 3.735565911691456856e-04, + 3.744606249925341423e-04, + 3.753639958379106998e-04, + 3.762667022774167673e-04, + 3.771687428843386713e-04, + 3.780701162330709015e-04, + 3.789708208992795539e-04, + 3.798708554596627769e-04, + 3.807702184922341269e-04, + 3.816689085760836646e-04, + 3.825669242915613480e-04, + 3.834642642201196061e-04, + 3.843609269444950511e-04, + 3.852569110484683817e-04, + 3.861522151171513178e-04, + 3.870468377367431421e-04, + 3.879407774947003242e-04, + 3.888340329796928811e-04, + 3.897266027814845187e-04, + 3.906184854911027432e-04, + 3.915096797007964146e-04, + 3.924001840040159056e-04, + 3.932899969953618734e-04, + 3.941791172707394329e-04, + 3.950675434271267339e-04, + 3.959552740628533300e-04, + 3.968423077773647984e-04, + 3.977286431713847195e-04, + 3.986142788468738569e-04, + 3.994992134069158280e-04, + 4.003834454558793552e-04, + 4.012669735993971780e-04, + 4.021497964442512902e-04, + 4.030319125985149160e-04, + 4.039133206715115275e-04, + 4.047940192737029008e-04, + 4.056740070168428011e-04, + 4.065532825139505833e-04, + 4.074318443792812670e-04, + 4.083096912283155086e-04, + 4.091868216777217620e-04, + 4.100632343455144638e-04, + 4.109389278509354760e-04, + 4.118139008144244329e-04, + 4.126881518577694453e-04, + 4.135616796038816948e-04, + 4.144344826770651833e-04, + 4.153065597027889963e-04, + 4.161779093078419103e-04, + 4.170485301202791041e-04, + 4.179184207694059501e-04, + 4.187875798857328027e-04, + 4.196560061011438093e-04, + 4.205236980487772136e-04, + 4.213906543629874634e-04, + 4.222568736795049671e-04, + 4.231223546352232113e-04, + 4.239870958683757021e-04, + 4.248510960185028973e-04, + 4.257143537264271066e-04, + 4.265768676342072269e-04, + 4.274386363852846751e-04, + 4.282996586242610189e-04, + 4.291599329971659371e-04, + 4.300194581512343074e-04, + 4.308782327350530622e-04, + 4.317362553985334864e-04, + 4.325935247927942869e-04, + 4.334500395703145734e-04, + 4.343057983849035004e-04, + 4.351607998916784750e-04, + 4.360150427470119768e-04, + 4.368685256086865445e-04, + 4.377212471356668223e-04, + 4.385732059883707193e-04, + 4.394244008284394496e-04, + 4.402748303189150708e-04, + 4.411244931241037662e-04, + 4.419733879096619843e-04, + 4.428215133425523120e-04, + 4.436688680911267412e-04, + 4.445154508249952638e-04, + 4.453612602151969585e-04, + 4.462062949339731213e-04, + 4.470505536550412984e-04, + 4.478940350533629406e-04, + 4.487367378052988789e-04, + 4.495786605885589084e-04, + 4.504198020821779361e-04, + 4.512601609664845391e-04, + 4.520997359232553549e-04, + 4.529385256355999935e-04, + 4.537765287879273724e-04, + 4.546137440661005415e-04, + 4.554501701572060183e-04, + 4.562858057498295010e-04, + 4.571206495338239035e-04, + 4.579547002004634199e-04, + 4.587879564423935435e-04, + 4.596204169536079187e-04, + 4.604520804294173330e-04, + 4.612829455666206412e-04, + 4.621130110632979001e-04, + 4.629422756189630777e-04, + 4.637707379345295763e-04, + 4.645983967122014322e-04, + 4.654252506556210930e-04, + 4.662512984698355899e-04, + 4.670765388612823353e-04, + 4.679009705377327978e-04, + 4.687245922084415806e-04, + 4.695474025839325625e-04, + 4.703694003762500528e-04, + 4.711905842987475354e-04, + 4.720109530662358241e-04, + 4.728305053949444117e-04, + 4.736492400024151631e-04, + 4.744671556076522612e-04, + 4.752842509310870782e-04, + 4.761005246945612082e-04, + 4.769159756212718775e-04, + 4.777306024359264974e-04, + 4.785444038645167170e-04, + 4.793573786345829680e-04, + 4.801695254749948597e-04, + 4.809808431161151105e-04, + 4.817913302896973077e-04, + 4.826009857288653072e-04, + 4.834098081682609025e-04, + 4.842177963439414754e-04, + 4.850249489933393388e-04, + 4.858312648554133622e-04, + 4.866367426704284994e-04, + 4.874413811802197913e-04, + 4.882451791279684246e-04, + 4.890481352583535193e-04, + 4.898502483174952630e-04, + 4.906515170529478090e-04, + 4.914519402136529810e-04, + 4.922515165500944466e-04, + 4.930502448141903813e-04, + 4.938481237592596412e-04, + 4.946451521401657456e-04, + 4.954413287131020959e-04, + 4.962366522358499076e-04, + 4.970311214675634300e-04, + 4.978247351689282394e-04, + 4.986174921020252804e-04, + 4.994093910304932792e-04, + 5.002004307193141800e-04, + 5.009906099350660896e-04, + 5.017799274457108820e-04, + 5.025683820207382888e-04, + 5.033559724311345660e-04, + 5.041426974492745072e-04, + 5.049285558490652090e-04, + 5.057135464059175564e-04, + 5.064976678967242135e-04, + 5.072809190998148459e-04, + 5.080632987950887188e-04, + 5.088448057638194320e-04, + 5.096254387888914930e-04, + 5.104051966545955108e-04, + 5.111840781467736966e-04, + 5.119620820527814821e-04, + 5.127392071613846294e-04, + 5.135154522629044056e-04, + 5.142908161492028372e-04, + 5.150652976135730978e-04, + 5.158388954509048486e-04, + 5.166116084574759633e-04, + 5.173834354311941967e-04, + 5.181543751713942221e-04, + 5.189244264789786860e-04, + 5.196935881563655157e-04, + 5.204618590074719820e-04, + 5.212292378376871598e-04, + 5.219957234540055025e-04, + 5.227613146649280704e-04, + 5.235260102804335835e-04, + 5.242898091121101509e-04, + 5.250527099729539356e-04, + 5.258147116776197127e-04, + 5.265758130422002348e-04, + 5.273360128843802971e-04, + 5.280953100233815511e-04, + 5.288537032799452663e-04, + 5.296111914763014300e-04, + 5.303677734363072003e-04, + 5.311234479853485686e-04, + 5.318782139503055572e-04, + 5.326320701596911050e-04, + 5.333850154434619829e-04, + 5.341370486331841350e-04, + 5.348881685619849731e-04, + 5.356383740645560875e-04, + 5.363876639770870022e-04, + 5.371360371374162045e-04, + 5.378834923848166893e-04, + 5.386300285602500966e-04, + 5.393756445061512802e-04, + 5.401203390665761930e-04, + 5.408641110871601453e-04, + 5.416069594150256473e-04, + 5.423488828989169591e-04, + 5.430898803891694073e-04, + 5.438299507376882433e-04, + 5.445690927979424632e-04, + 5.453073054249270779e-04, + 5.460445874753008062e-04, + 5.467809378072853530e-04, + 5.475163552806411229e-04, + 5.482508387567732551e-04, + 5.489843870986285158e-04, + 5.497169991707572066e-04, + 5.504486738392835648e-04, + 5.511794099719741777e-04, + 5.519092064381224058e-04, + 5.526380621086998462e-04, + 5.533659758561602004e-04, + 5.540929465546732451e-04, + 5.548189730799226284e-04, + 5.555440543092490932e-04, + 5.562681891215931224e-04, + 5.569913763974901691e-04, + 5.577136150190270709e-04, + 5.584349038699887432e-04, + 5.591552418357487826e-04, + 5.598746278032521199e-04, + 5.605930606611310299e-04, + 5.613105392995276473e-04, + 5.620270626103092892e-04, + 5.627426294868890198e-04, + 5.634572388243581399e-04, + 5.641708895193737550e-04, + 5.648835804702929996e-04, + 5.655953105769880723e-04, + 5.663060787410746774e-04, + 5.670158838657153502e-04, + 5.677247248557512962e-04, + 5.684326006176749612e-04, + 5.691395100595342954e-04, + 5.698454520910601478e-04, + 5.705504256236361253e-04, + 5.712544295702897020e-04, + 5.719574628456702099e-04, + 5.726595243660253121e-04, + 5.733606130493257942e-04, + 5.740607278151730816e-04, + 5.747598675847669309e-04, + 5.754580312810099463e-04, + 5.761552178284678983e-04, + 5.768514261532811443e-04, + 5.775466551832931063e-04, + 5.782409038480187209e-04, + 5.789341710786312118e-04, + 5.796264558079499470e-04, + 5.803177569704040095e-04, + 5.810080735021829011e-04, + 5.816974043410618779e-04, + 5.823857484265291271e-04, + 5.830731046997409892e-04, + 5.837594721035050446e-04, + 5.844448495822582128e-04, + 5.851292360821844967e-04, + 5.858126305511278126e-04, + 5.864950319385600066e-04, + 5.871764391957110668e-04, + 5.878568512753778704e-04, + 5.885362671321465533e-04, + 5.892146857222142677e-04, + 5.898921060035022639e-04, + 5.905685269356179433e-04, + 5.912439474798419567e-04, + 5.919183665990982801e-04, + 5.925917832580780307e-04, + 5.932641964231451411e-04, + 5.939356050623152174e-04, + 5.946060081453736091e-04, + 5.952754046436946724e-04, + 5.959437935304598031e-04, + 5.966111737804719300e-04, + 5.972775443702987375e-04, + 5.979429042781449471e-04, + 5.986072524840013948e-04, + 5.992705879694557296e-04, + 5.999329097179100130e-04, + 6.005942167143975968e-04, + 6.012545079457108426e-04, + 6.019137824003677282e-04, + 6.025720390685268459e-04, + 6.032292769421010274e-04, + 6.038854950147442245e-04, + 6.045406922818199590e-04, + 6.051948677403995881e-04, + 6.058480203892360662e-04, + 6.065001492288725829e-04, + 6.071512532615636320e-04, + 6.078013314912470398e-04, + 6.084503829236336285e-04, + 6.090984065661741477e-04, + 6.097454014279775261e-04, + 6.103913665199291573e-04, + 6.110363008546789744e-04, + 6.116802034465503761e-04, + 6.123230733116783548e-04, + 6.129649094678299524e-04, + 6.136057109346203416e-04, + 6.142454767333271025e-04, + 6.148842058870171825e-04, + 6.155218974204988659e-04, + 6.161585503603131007e-04, + 6.167941637347033575e-04, + 6.174287365737356507e-04, + 6.180622679092080077e-04, + 6.186947567746294355e-04, + 6.193262022053325688e-04, + 6.199566032383037762e-04, + 6.205859589123853635e-04, + 6.212142682681047034e-04, + 6.218415303477913296e-04, + 6.224677441955350863e-04, + 6.230929088571714918e-04, + 6.237170233802603794e-04, + 6.243400868141900893e-04, + 6.249620982101059116e-04, + 6.255830566208771260e-04, + 6.262029611012119275e-04, + 6.268218107075018437e-04, + 6.274396044979568257e-04, + 6.280563415325675185e-04, + 6.286720208731080796e-04, + 6.292866415831024603e-04, + 6.299002027278187681e-04, + 6.305127033743721573e-04, + 6.311241425916428631e-04, + 6.317345194502474708e-04, + 6.323438330226341083e-04, + 6.329520823830439569e-04, + 6.335592666074339480e-04, + 6.341653847735934232e-04, + 6.347704359611129089e-04, + 6.353744192513680706e-04, + 6.359773337275190621e-04, + 6.365791784744725783e-04, + 6.371799525789976484e-04, + 6.377796551296496331e-04, + 6.383782852167347709e-04, + 6.389758419324145875e-04, + 6.395723243706048474e-04, + 6.401677316270450516e-04, + 6.407620627992526843e-04, + 6.413553169865968302e-04, + 6.419474932901923564e-04, + 6.425385908130307753e-04, + 6.431286086598169641e-04, + 6.437175459371578161e-04, + 6.443054017534026456e-04, + 6.448921752187534518e-04, + 6.454778654452279470e-04, + 6.460624715466390658e-04, + 6.466459926385797856e-04, + 6.472284278385243917e-04, + 6.478097762657547510e-04, + 6.483900370413276781e-04, + 6.489692092881927873e-04, + 6.495472921310253096e-04, + 6.501242846964188629e-04, + 6.507001861127239065e-04, + 6.512749955101686293e-04, + 6.518487120207745993e-04, + 6.524213347784006732e-04, + 6.529928629187247823e-04, + 6.535632955792943476e-04, + 6.541326318994360742e-04, + 6.547008710203500604e-04, + 6.552680120850895226e-04, + 6.558340542384722164e-04, + 6.563989966271965544e-04, + 6.569628383998121161e-04, + 6.575255787067080466e-04, + 6.580872167001032991e-04, + 6.586477515340212648e-04, + 6.592071823643903860e-04, + 6.597655083489762859e-04, + 6.603227286473524948e-04, + 6.608788424209733085e-04, + 6.614338488331602357e-04, + 6.619877470490217672e-04, + 6.625405362355507371e-04, + 6.630922155616126136e-04, + 6.636427841979214296e-04, + 6.641922413170357710e-04, + 6.647405860933335150e-04, + 6.652878177031268641e-04, + 6.658339353245212909e-04, + 6.663789381375225494e-04, + 6.669228253239966675e-04, + 6.674655960676609484e-04, + 6.680072495540561065e-04, + 6.685477849706567477e-04, + 6.690872015067846328e-04, + 6.696254983535948006e-04, + 6.701626747041728198e-04, + 6.706987297533879887e-04, + 6.712336626980646391e-04, + 6.717674727368423823e-04, + 6.723001590702679412e-04, + 6.728317209007632750e-04, + 6.733621574326139779e-04, + 6.738914678719436918e-04, + 6.744196514268238282e-04, + 6.749467073071814104e-04, + 6.754726347247957128e-04, + 6.759974328933852136e-04, + 6.765211010284672994e-04, + 6.770436383475293522e-04, + 6.775650440698797799e-04, + 6.780853174167659776e-04, + 6.786044576112972406e-04, + 6.791224638784341397e-04, + 6.796393354450868578e-04, + 6.801550715400482951e-04, + 6.806696713939639279e-04, + 6.811831342394101966e-04, + 6.816954593108674005e-04, + 6.822066458446563808e-04, + 6.827166930790262321e-04, + 6.832256002541366299e-04, + 6.837333666120468806e-04, + 6.842399913967011759e-04, + 6.847454738539175342e-04, + 6.852498132314667305e-04, + 6.857530087790134239e-04, + 6.862550597480958836e-04, + 6.867559653921959193e-04, + 6.872557249666775159e-04, + 6.877543377288172994e-04, + 6.882518029377870808e-04, + 6.887481198547107776e-04, + 6.892432877425734485e-04, + 6.897373058663266781e-04, + 6.902301734927592317e-04, + 6.907218898906518790e-04, + 6.912124543306458809e-04, + 6.917018660853324358e-04, + 6.921901244292153832e-04, + 6.926772286387144562e-04, + 6.931631779921264671e-04, + 6.936479717697309087e-04, + 6.941316092537161203e-04, + 6.946140897281580370e-04, + 6.950954124791165756e-04, + 6.955755767944910017e-04, + 6.960545819641908005e-04, + 6.965324272799967896e-04, + 6.970091120356475311e-04, + 6.974846355268208989e-04, + 6.979589970510744487e-04, + 6.984321959079261904e-04, + 6.989042313988493840e-04, + 6.993751028272049940e-04, + 6.998448094983230044e-04, + 7.003133507194782411e-04, + 7.007807257998278135e-04, + 7.012469340504975251e-04, + 7.017119747845640930e-04, + 7.021758473170379086e-04, + 7.026385509648699771e-04, + 7.031000850469061635e-04, + 7.035604488839962639e-04, + 7.040196417989223396e-04, + 7.044776631163776831e-04, + 7.049345121630300279e-04, + 7.053901882675078869e-04, + 7.058446907603305133e-04, + 7.062980189739958290e-04, + 7.067501722429674147e-04, + 7.072011499036521751e-04, + 7.076509512944003386e-04, + 7.080995757554827980e-04, + 7.085470226291726422e-04, + 7.089932912596917051e-04, + 7.094383809931776056e-04, + 7.098822911777727613e-04, + 7.103250211635494691e-04, + 7.107665703025120747e-04, + 7.112069379486685291e-04, + 7.116461234579822505e-04, + 7.120841261883402483e-04, + 7.125209454996466905e-04, + 7.129565807536936660e-04, + 7.133910313143097207e-04, + 7.138242965472344154e-04, + 7.142563758202018090e-04, + 7.146872685029262559e-04, + 7.151169739670343176e-04, + 7.155454915861513910e-04, + 7.159728207358814333e-04, + 7.163989607937970962e-04, + 7.168239111394143553e-04, + 7.172476711542669948e-04, + 7.176702402217923328e-04, + 7.180916177274709747e-04, + 7.185118030587045153e-04, + 7.189307956049134423e-04, + 7.193485947574605917e-04, + 7.197651999096963587e-04, + 7.201806104569401581e-04, + 7.205948257965165285e-04, + 7.210078453276885617e-04, + 7.214196684517342308e-04, + 7.218302945719177674e-04, + 7.222397230934365355e-04, + 7.226479534234997448e-04, + 7.230549849713125126e-04, + 7.234608171480562400e-04, + 7.238654493668983695e-04, + 7.242688810429525953e-04, + 7.246711115933768743e-04, + 7.250721404373014359e-04, + 7.254719669958151207e-04, + 7.258705906920285894e-04, + 7.262680109510484105e-04, + 7.266642271999263197e-04, + 7.270592388677344633e-04, + 7.274530453855550987e-04, + 7.278456461864266005e-04, + 7.282370407054251015e-04, + 7.286272283795607345e-04, + 7.290162086479019896e-04, + 7.294039809514680540e-04, + 7.297905447333040549e-04, + 7.301758994384467986e-04, + 7.305600445139318186e-04, + 7.309429794087593307e-04, + 7.313247035739806447e-04, + 7.317052164626337623e-04, + 7.320845175297365469e-04, + 7.324626062323511249e-04, + 7.328394820294796943e-04, + 7.332151443821926769e-04, + 7.335895927535231176e-04, + 7.339628266085302180e-04, + 7.343348454142926149e-04, + 7.347056486398529773e-04, + 7.350752357562840341e-04, + 7.354436062366783832e-04, + 7.358107595561366732e-04, + 7.361766951917453772e-04, + 7.365414126226429298e-04, + 7.369049113299218226e-04, + 7.372671907967415792e-04, + 7.376282505082386570e-04, + 7.379880899515894399e-04, + 7.383467086159754356e-04, + 7.387041059925628919e-04, + 7.390602815745764146e-04, + 7.394152348572497445e-04, + 7.397689653378105787e-04, + 7.401214725155224206e-04, + 7.404727558916868570e-04, + 7.408228149695708078e-04, + 7.411716492544957562e-04, + 7.415192582538074990e-04, + 7.418656414768708346e-04, + 7.422107984350719478e-04, + 7.425547286417879438e-04, + 7.428974316124620919e-04, + 7.432389068645547112e-04, + 7.435791539175225706e-04, + 7.439181722928877357e-04, + 7.442559615141657947e-04, + 7.445925211069100939e-04, + 7.449278505986952573e-04, + 7.452619495191464610e-04, + 7.455948173998813190e-04, + 7.459264537745916327e-04, + 7.462568581789449451e-04, + 7.465860301506869979e-04, + 7.469139692295605247e-04, + 7.472406749573642318e-04, + 7.475661468779358845e-04, + 7.478903845371026506e-04, + 7.482133874827549347e-04, + 7.485351552648230678e-04, + 7.488556874352689588e-04, + 7.491749835480711328e-04, + 7.494930431592806757e-04, + 7.498098658269312456e-04, + 7.501254511111464084e-04, + 7.504397985740522518e-04, + 7.507529077798328959e-04, + 7.510647782947197596e-04, + 7.513754096869458077e-04, + 7.516848015268096268e-04, + 7.519929533866593794e-04, + 7.522998648408620124e-04, + 7.526055354658435894e-04, + 7.529099648400789909e-04, + 7.532131525440530998e-04, + 7.535150981603144695e-04, + 7.538158012734607954e-04, + 7.541152614701376140e-04, + 7.544134783390285450e-04, + 7.547104514708374021e-04, + 7.550061804583564976e-04, + 7.553006648964096133e-04, + 7.555939043818510250e-04, + 7.558858985136058346e-04, + 7.561766468926490450e-04, + 7.564661491219774794e-04, + 7.567544048066493544e-04, + 7.570414135537841720e-04, + 7.573271749725558888e-04, + 7.576116886741726415e-04, + 7.578949542718827100e-04, + 7.581769713810141992e-04, + 7.584577396189447901e-04, + 7.587372586050840665e-04, + 7.590155279609262081e-04, + 7.592925473099819021e-04, + 7.595683162778350470e-04, + 7.598428344921316939e-04, + 7.601161015825722402e-04, + 7.603881171808944076e-04, + 7.606588809209231155e-04, + 7.609283924384967548e-04, + 7.611966513715564186e-04, + 7.614636573600657788e-04, + 7.617294100460684407e-04, + 7.619939090736742825e-04, + 7.622571540890133758e-04, + 7.625191447403045081e-04, + 7.627798806778269929e-04, + 7.630393615539165500e-04, + 7.632975870229624865e-04, + 7.635545567414369706e-04, + 7.638102703678333397e-04, + 7.640647275627505605e-04, + 7.643179279888210210e-04, + 7.645698713107585602e-04, + 7.648205571953315806e-04, + 7.650699853113700948e-04, + 7.653181553297667018e-04, + 7.655650669234951265e-04, + 7.658107197675740078e-04, + 7.660551135390969305e-04, + 7.662982479172387139e-04, + 7.665401225832051049e-04, + 7.667807372202869879e-04, + 7.670200915138513861e-04, + 7.672581851513298606e-04, + 7.674950178222147154e-04, + 7.677305892180512998e-04, + 7.679648990324854964e-04, + 7.681979469612180761e-04, + 7.684297327020103360e-04, + 7.686602559547064343e-04, + 7.688895164212261255e-04, + 7.691175138055324515e-04, + 7.693442478136738091e-04, + 7.695697181537875268e-04, + 7.697939245360515105e-04, + 7.700168666727469097e-04, + 7.702385442781907888e-04, + 7.704589570688077926e-04, + 7.706781047630698652e-04, + 7.708959870815377743e-04, + 7.711126037468508118e-04, + 7.713279544836966527e-04, + 7.715420390188529884e-04, + 7.717548570811744082e-04, + 7.719664084015939167e-04, + 7.721766927131034188e-04, + 7.723857097507916660e-04, + 7.725934592517934079e-04, + 7.727999409553537938e-04, + 7.730051546027657053e-04, + 7.732090999374148597e-04, + 7.734117767047694013e-04, + 7.736131846523540976e-04, + 7.738133235297773357e-04, + 7.740121930887382783e-04, + 7.742097930830060468e-04, + 7.744061232684230824e-04, + 7.746011834029270472e-04, + 7.747949732465062630e-04, + 7.749874925612498019e-04, + 7.751787411113222242e-04, + 7.753687186629695414e-04, + 7.755574249845188914e-04, + 7.757448598463523000e-04, + 7.759310230209684814e-04, + 7.761159142829325303e-04, + 7.762995334088806931e-04, + 7.764818801775427021e-04, + 7.766629543697348365e-04, + 7.768427557683333599e-04, + 7.770212841583075880e-04, + 7.771985393267143594e-04, + 7.773745210626931568e-04, + 7.775492291574605773e-04, + 7.777226634043024178e-04, + 7.778948235986121642e-04, + 7.780657095378583571e-04, + 7.782353210215827485e-04, + 7.784036578514288160e-04, + 7.785707198310992628e-04, + 7.787365067664007946e-04, + 7.789010184652150632e-04, + 7.790642547375142791e-04, + 7.792262153953485263e-04, + 7.793869002528603989e-04, + 7.795463091262619078e-04, + 7.797044418338695002e-04, + 7.798612981960671969e-04, + 7.800168780353382509e-04, + 7.801711811762528960e-04, + 7.803242074454486144e-04, + 7.804759566716577834e-04, + 7.806264286857062668e-04, + 7.807756233205024633e-04, + 7.809235404110363319e-04, + 7.810701797943931605e-04, + 7.812155413097251599e-04, + 7.813596247982960248e-04, + 7.815024301034375655e-04, + 7.816439570705802824e-04, + 7.817842055472369947e-04, + 7.819231753830045749e-04, + 7.820608664295714300e-04, + 7.821972785407134898e-04, + 7.823324115722890028e-04, + 7.824662653822500287e-04, + 7.825988398306428723e-04, + 7.827301347795774002e-04, + 7.828601500932725775e-04, + 7.829888856380318564e-04, + 7.831163412822446943e-04, + 7.832425168963896974e-04, + 7.833674123530213942e-04, + 7.834910275268017850e-04, + 7.836133622944783331e-04, + 7.837344165348704124e-04, + 7.838541901289120244e-04, + 7.839726829595952034e-04, + 7.840898949120261776e-04, + 7.842058258733849291e-04, + 7.843204757329499130e-04, + 7.844338443820851560e-04, + 7.845459317142422073e-04, + 7.846567376249534171e-04, + 7.847662620118609931e-04, + 7.848745047746714639e-04, + 7.849814658152005648e-04, + 7.850871450373515543e-04, + 7.851915423470968904e-04, + 7.852946576525180215e-04, + 7.853964908637782807e-04, + 7.854970418931357884e-04, + 7.855963106549271888e-04, + 7.856942970655942131e-04, + 7.857910010436461659e-04, + 7.858864225097034022e-04, + 7.859805613864571027e-04, + 7.860734175987029934e-04, + 7.861649910733217207e-04, + 7.862552817392757078e-04, + 7.863442895276178280e-04, + 7.864320143715020301e-04, + 7.865184562061617625e-04, + 7.866036149689191893e-04, + 7.866874905991915867e-04, + 7.867700830384756223e-04, + 7.868513922303702317e-04, + 7.869314181205491884e-04, + 7.870101606567885336e-04, + 7.870876197889455431e-04, + 7.871637954689625219e-04, + 7.872386876508810074e-04, + 7.873122962908276744e-04, + 7.873846213470108660e-04, + 7.874556627797391333e-04, + 7.875254205514039966e-04, + 7.875938946264828726e-04, + 7.876610849715427612e-04, + 7.877269915552432807e-04, + 7.877916143483307048e-04, + 7.878549533236414324e-04, + 7.879170084560894105e-04, + 7.879777797226868424e-04, + 7.880372671025362733e-04, + 7.880954705768209410e-04, + 7.881523901288172438e-04, + 7.882080257438832480e-04, + 7.882623774094686632e-04, + 7.883154451151109382e-04, + 7.883672288524345029e-04, + 7.884177286151496837e-04, + 7.884669443990600761e-04, + 7.885148762020429206e-04, + 7.885615240240766415e-04, + 7.886068878672212231e-04, + 7.886509677356185345e-04, + 7.886937636355069664e-04, + 7.887352755752010487e-04, + 7.887755035651083631e-04, + 7.888144476177201114e-04, + 7.888521077476141506e-04, + 7.888884839714539092e-04, + 7.889235763079884955e-04, + 7.889573847780519383e-04, + 7.889899094045656810e-04, + 7.890211502125347868e-04, + 7.890511072290471795e-04, + 7.890797804832813418e-04, + 7.891071700064943885e-04, + 7.891332758320314996e-04, + 7.891580979953223421e-04, + 7.891816365338811786e-04, + 7.892038914872990607e-04, + 7.892248628972656221e-04, + 7.892445508075365520e-04, + 7.892629552639651453e-04, + 7.892800763144762824e-04, + 7.892959140090899557e-04, + 7.893104683999016460e-04, + 7.893237395410867673e-04, + 7.893357274889103168e-04, + 7.893464323017142974e-04, + 7.893558540399224889e-04, + 7.893639927660474950e-04, + 7.893708485446733958e-04, + 7.893764214424716860e-04, + 7.893807115281909750e-04, + 7.893837188726645759e-04, + 7.893854435488067110e-04, + 7.893858856316091511e-04, + 7.893850451981389380e-04, + 7.893829223275552988e-04, + 7.893795171010838411e-04, + 7.893748296020411653e-04, + 7.893688599158149143e-04, + 7.893616081298715807e-04, + 7.893530743337614933e-04, + 7.893432586191087346e-04, + 7.893321610796171037e-04, + 7.893197818110640447e-04, + 7.893061209113150668e-04, + 7.892911784802973977e-04, + 7.892749546200277400e-04, + 7.892574494345947064e-04, + 7.892386630301613136e-04, + 7.892185955149678012e-04, + 7.891972469993338004e-04, + 7.891746175956477084e-04, + 7.891507074183768799e-04, + 7.891255165840625318e-04, + 7.890990452113208270e-04, + 7.890712934208392966e-04, + 7.890422613353844294e-04, + 7.890119490797881194e-04, + 7.889803567809673982e-04, + 7.889474845678988478e-04, + 7.889133325716392005e-04, + 7.888779009253140632e-04, + 7.888411897641238804e-04, + 7.888031992253378630e-04, + 7.887639294482960478e-04, + 7.887233805744117915e-04, + 7.886815527471659161e-04, + 7.886384461121116957e-04, + 7.885940608168695446e-04, + 7.885483970111300525e-04, + 7.885014548466527922e-04, + 7.884532344772642596e-04, + 7.884037360588668723e-04, + 7.883529597494172859e-04, + 7.883009057089503547e-04, + 7.882475740995634108e-04, + 7.881929650854195167e-04, + 7.881370788327542957e-04, + 7.880799155098588017e-04, + 7.880214752871009861e-04, + 7.879617583369039058e-04, + 7.879007648337597088e-04, + 7.878384949542213949e-04, + 7.877749488769156087e-04, + 7.877101267825208477e-04, + 7.876440288537844836e-04, + 7.875766552755140894e-04, + 7.875080062345776559e-04, + 7.874380819199107472e-04, + 7.873668825225058759e-04, + 7.872944082354180325e-04, + 7.872206592537590473e-04, + 7.871456357747055052e-04, + 7.870693379974874702e-04, + 7.869917661234037722e-04, + 7.869129203557995644e-04, + 7.868328009000883326e-04, + 7.867514079637354151e-04, + 7.866687417562634238e-04, + 7.865848024892553884e-04, + 7.864995903763495524e-04, + 7.864131056332382885e-04, + 7.863253484776674485e-04, + 7.862363191294417840e-04, + 7.861460178104165983e-04, + 7.860544447445067450e-04, + 7.859616001576738347e-04, + 7.858674842779383779e-04, + 7.857720973353643891e-04, + 7.856754395620771684e-04, + 7.855775111922530009e-04, + 7.854783124621122180e-04, + 7.853778436099274375e-04, + 7.852761048760272498e-04, + 7.851730965027756181e-04, + 7.850688187346073314e-04, + 7.849632718179861551e-04, + 7.848564560014317185e-04, + 7.847483715355091068e-04, + 7.846390186728302704e-04, + 7.845283976680490377e-04, + 7.844165087778800886e-04, + 7.843033522610659948e-04, + 7.841889283783994458e-04, + 7.840732373927229238e-04, + 7.839562795689076699e-04, + 7.838380551738913064e-04, + 7.837185644766280716e-04, + 7.835978077481345729e-04, + 7.834757852614549845e-04, + 7.833524972916840320e-04, + 7.832279441159425981e-04, + 7.831021260134120917e-04, + 7.829750432652922724e-04, + 7.828466961548344273e-04, + 7.827170849673213129e-04, + 7.825862099900714923e-04, + 7.824540715124479002e-04, + 7.823206698258466756e-04, + 7.821860052236930417e-04, + 7.820500780014499800e-04, + 7.819128884566220244e-04, + 7.817744368887321682e-04, + 7.816347235993568836e-04, + 7.814937488920867649e-04, + 7.813515130725532006e-04, + 7.812080164484152536e-04, + 7.810632593293585779e-04, + 7.809172420271139579e-04, + 7.807699648554292278e-04, + 7.806214281300768608e-04, + 7.804716321688704491e-04, + 7.803205772916335875e-04, + 7.801682638202396634e-04, + 7.800146920785659948e-04, + 7.798598623925306937e-04, + 7.797037750900675124e-04, + 7.795464305011323486e-04, + 7.793878289577128946e-04, + 7.792279707938206150e-04, + 7.790668563454828310e-04, + 7.789044859507430465e-04, + 7.787408599496810054e-04, + 7.785759786843764792e-04, + 7.784098424989567555e-04, + 7.782424517395358137e-04, + 7.780738067542727638e-04, + 7.779039078933263100e-04, + 7.777327555088764345e-04, + 7.775603499551165913e-04, + 7.773866915882723548e-04, + 7.772117807665649900e-04, + 7.770356178502278244e-04, + 7.768582032015260890e-04, + 7.766795371847130076e-04, + 7.764996201660795622e-04, + 7.763184525139148109e-04, + 7.761360345985121763e-04, + 7.759523667921792035e-04, + 7.757674494692394030e-04, + 7.755812830060100247e-04, + 7.753938677808383789e-04, + 7.752052041740527212e-04, + 7.750152925680073562e-04, + 7.748241333470475087e-04, + 7.746317268975215758e-04, + 7.744380736078011838e-04, + 7.742431738682476871e-04, + 7.740470280712232268e-04, + 7.738496366110859601e-04, + 7.736509998842028540e-04, + 7.734511182889513116e-04, + 7.732499922256904409e-04, + 7.730476220967778594e-04, + 7.728440083065824884e-04, + 7.726391512614549538e-04, + 7.724330513697512217e-04, + 7.722257090418224073e-04, + 7.720171246900128228e-04, + 7.718072987286541233e-04, + 7.715962315740805934e-04, + 7.713839236446016091e-04, + 7.711703753605491252e-04, + 7.709555871442151176e-04, + 7.707395594198960349e-04, + 7.705222926138723073e-04, + 7.703037871544096476e-04, + 7.700840434717624123e-04, + 7.698630619981870456e-04, + 7.696408431679044575e-04, + 7.694173874171242019e-04, + 7.691926951840516316e-04, + 7.689667669088530964e-04, + 7.687396030337085261e-04, + 7.685112040027495227e-04, + 7.682815702621071741e-04, + 7.680507022598850571e-04, + 7.678186004461558765e-04, + 7.675852652729845587e-04, + 7.673506971944197945e-04, + 7.671148966664641158e-04, + 7.668778641471143357e-04, + 7.666396000963333597e-04, + 7.664001049760442224e-04, + 7.661593792501739976e-04, + 7.659174233846053345e-04, + 7.656742378471883843e-04, + 7.654298231077389563e-04, + 7.651841796380602027e-04, + 7.649373079119004427e-04, + 7.646892084050054212e-04, + 7.644398815950579186e-04, + 7.641893279617297929e-04, + 7.639375479866394782e-04, + 7.636845421533656466e-04, + 7.634303109474783241e-04, + 7.631748548564932458e-04, + 7.629181743698795542e-04, + 7.626602699790694479e-04, + 7.624011421774577486e-04, + 7.621407914604144771e-04, + 7.618792183252425703e-04, + 7.616164232712015160e-04, + 7.613524067995283869e-04, + 7.610871694133914366e-04, + 7.608207116179188309e-04, + 7.605530339202172963e-04, + 7.602841368293110792e-04, + 7.600140208561803265e-04, + 7.597426865137776745e-04, + 7.594701343169731706e-04, + 7.591963647826221453e-04, + 7.589213784294887750e-04, + 7.586451757783176401e-04, + 7.583677573517751775e-04, + 7.580891236744710399e-04, + 7.578092752729692627e-04, + 7.575282126757877221e-04, + 7.572459364133639825e-04, + 7.569624470180736199e-04, + 7.566777450242554836e-04, + 7.563918309681515227e-04, + 7.561047053879898366e-04, + 7.558163688238843858e-04, + 7.555268218179248723e-04, + 7.552360649141021468e-04, + 7.549440986583678395e-04, + 7.546509235985774397e-04, + 7.543565402845580584e-04, + 7.540609492680277635e-04, + 7.537641511026590057e-04, + 7.534661463440367685e-04, + 7.531669355496714699e-04, + 7.528665192790255254e-04, + 7.525648980934662941e-04, + 7.522620725562887377e-04, + 7.519580432326989413e-04, + 7.516528106898398088e-04, + 7.513463754967894363e-04, + 7.510387382245188289e-04, + 7.507298994459219322e-04, + 7.504198597358294025e-04, + 7.501086196709700086e-04, + 7.497961798299820164e-04, + 7.494825407934498345e-04, + 7.491677031438569601e-04, + 7.488516674655795822e-04, + 7.485344343449386231e-04, + 7.482160043701231939e-04, + 7.478963781312907748e-04, + 7.475755562204504465e-04, + 7.472535392315555894e-04, + 7.469303277604484809e-04, + 7.466059224048710290e-04, + 7.462803237644809271e-04, + 7.459535324408562073e-04, + 7.456255490374438495e-04, + 7.452963741596003305e-04, + 7.449660084145988881e-04, + 7.446344524115783466e-04, + 7.443017067616230229e-04, + 7.439677720776700269e-04, + 7.436326489745750728e-04, + 7.432963380690810369e-04, + 7.429588399798143800e-04, + 7.426201553273030368e-04, + 7.422802847339869323e-04, + 7.419392288241623626e-04, + 7.415969882240171229e-04, + 7.412535635616511074e-04, + 7.409089554670170033e-04, + 7.405631645719848010e-04, + 7.402161915103024374e-04, + 7.398680369175821350e-04, + 7.395187014313212188e-04, + 7.391681856909048266e-04, + 7.388164903376209791e-04, + 7.384636160145968296e-04, + 7.381095633668445250e-04, + 7.377543330412773609e-04, + 7.373979256866551374e-04, + 7.370403419536090961e-04, + 7.366815824946803008e-04, + 7.363216479642525252e-04, + 7.359605390185810928e-04, + 7.355982563157821433e-04, + 7.352348005158511725e-04, + 7.348701722806719227e-04, + 7.345043722739564261e-04, + 7.341374011612872893e-04, + 7.337692596101340640e-04, + 7.333999482897978449e-04, + 7.330294678714589741e-04, + 7.326578190281563333e-04, + 7.322850024347899453e-04, + 7.319110187680933277e-04, + 7.315358687066895451e-04, + 7.311595529310167254e-04, + 7.307820721234172890e-04, + 7.304034269680375517e-04, + 7.300236181509055710e-04, + 7.296426463598837658e-04, + 7.292605122846774817e-04, + 7.288772166168463757e-04, + 7.284927600498271837e-04, + 7.281071432788517551e-04, + 7.277203670010131895e-04, + 7.273324319152608486e-04, + 7.269433387223501585e-04, + 7.265530881249369346e-04, + 7.261616808274477114e-04, + 7.257691175361973782e-04, + 7.253753989592983233e-04, + 7.249805258067238594e-04, + 7.245844987902733125e-04, + 7.241873186235839484e-04, + 7.237889860220995302e-04, + 7.233895017031309257e-04, + 7.229888663857865017e-04, + 7.225870807909982527e-04, + 7.221841456415586643e-04, + 7.217800616620689965e-04, + 7.213748295789381999e-04, + 7.209684501203982021e-04, + 7.205609240165109560e-04, + 7.201522519991865453e-04, + 7.197424348021018697e-04, + 7.193314731607690577e-04, + 7.189193678125329733e-04, + 7.185061194965340278e-04, + 7.180917289537106733e-04, + 7.176761969268570822e-04, + 7.172595241605560354e-04, + 7.168417114011859693e-04, + 7.164227593969296499e-04, + 7.160026688977966149e-04, + 7.155814406556139590e-04, + 7.151590754239708220e-04, + 7.147355739582929822e-04, + 7.143109370157856106e-04, + 7.138851653554533286e-04, + 7.134582597381064961e-04, + 7.130302209263808359e-04, + 7.126010496846595880e-04, + 7.121707467791337908e-04, + 7.117393129778079195e-04, + 7.113067490504357011e-04, + 7.108730557686290764e-04, + 7.104382339057167123e-04, + 7.100022842368641307e-04, + 7.095652075389986824e-04, + 7.091270045908260261e-04, + 7.086876761728466093e-04, + 7.082472230673720389e-04, + 7.078056460584466938e-04, + 7.073629459319019349e-04, + 7.069191234753767050e-04, + 7.064741794782393577e-04, + 7.060281147316984631e-04, + 7.055809300286682581e-04, + 7.051326261638869329e-04, + 7.046832039338194863e-04, + 7.042326641367221279e-04, + 7.037810075726508427e-04, + 7.033282350433740044e-04, + 7.028743473524367777e-04, + 7.024193453051820425e-04, + 7.019632297086771024e-04, + 7.015060013717468613e-04, + 7.010476611050217447e-04, + 7.005882097208603965e-04, + 7.001276480333712545e-04, + 6.996659768584146104e-04, + 6.992031970136139939e-04, + 6.987393093183775312e-04, + 6.982743145938135948e-04, + 6.978082136627869643e-04, + 6.973410073499463659e-04, + 6.968726964816399040e-04, + 6.964032818859963768e-04, + 6.959327643928739935e-04, + 6.954611448338874789e-04, + 6.949884240423568997e-04, + 6.945146028533867024e-04, + 6.940396821037645575e-04, + 6.935636626320869098e-04, + 6.930865452786144545e-04, + 6.926083308853920499e-04, + 6.921290202961663182e-04, + 6.916486143564114491e-04, + 6.911671139133423189e-04, + 6.906845198159327053e-04, + 6.902008329148327792e-04, + 6.897160540624213635e-04, + 6.892301841128379170e-04, + 6.887432239218848479e-04, + 6.882551743471668334e-04, + 6.877660362479228774e-04, + 6.872758104851671478e-04, + 6.867844979216005058e-04, + 6.862920994216213481e-04, + 6.857986158513960798e-04, + 6.853040480787689088e-04, + 6.848083969732850478e-04, + 6.843116634061962439e-04, + 6.838138482504935211e-04, + 6.833149523808161076e-04, + 6.828149766735773117e-04, + 6.823139220068513309e-04, + 6.818117892604098982e-04, + 6.813085793157183786e-04, + 6.808042930559525746e-04, + 6.802989313660145554e-04, + 6.797924951324491732e-04, + 6.792849852435003336e-04, + 6.787764025891411361e-04, + 6.782667480609963538e-04, + 6.777560225523695386e-04, + 6.772442269583081815e-04, + 6.767313621755055922e-04, + 6.762174291023320162e-04, + 6.757024286388420070e-04, + 6.751863616867707397e-04, + 6.746692291495780302e-04, + 6.741510319323355772e-04, + 6.736317709418067606e-04, + 6.731114470864590004e-04, + 6.725900612763895982e-04, + 6.720676144233983778e-04, + 6.715441074409454021e-04, + 6.710195412441663683e-04, + 6.704939167498324927e-04, + 6.699672348764222846e-04, + 6.694394965440206074e-04, + 6.689107026744523605e-04, + 6.683808541911237522e-04, + 6.678499520191560901e-04, + 6.673179970852886368e-04, + 6.667849903179107023e-04, + 6.662509326471163958e-04, + 6.657158250046197332e-04, + 6.651796683237723093e-04, + 6.646424635395747904e-04, + 6.641042115887053204e-04, + 6.635649134094356036e-04, + 6.630245699417561299e-04, + 6.624831821272212425e-04, + 6.619407509090821694e-04, + 6.613972772321822895e-04, + 6.608527620430373634e-04, + 6.603072062897852269e-04, + 6.597606109222113775e-04, + 6.592129768916951986e-04, + 6.586643051512956109e-04, + 6.581145966556641198e-04, + 6.575638523610680174e-04, + 6.570120732254580362e-04, + 6.564592602083729397e-04, + 6.559054142709632666e-04, + 6.553505363759968595e-04, + 6.547946274878772973e-04, + 6.542376885726535439e-04, + 6.536797205979386332e-04, + 6.531207245329655057e-04, + 6.525607013486150890e-04, + 6.519996520173474515e-04, + 6.514375775132134026e-04, + 6.508744788119346161e-04, + 6.503103568907997629e-04, + 6.497452127286929176e-04, + 6.491790473060950759e-04, + 6.486118616051015024e-04, + 6.480436566094444984e-04, + 6.474744333043783683e-04, + 6.469041926768108247e-04, + 6.463329357152134335e-04, + 6.457606634096423222e-04, + 6.451873767517606224e-04, + 6.446130767348521315e-04, + 6.440377643537336001e-04, + 6.434614406048078583e-04, + 6.428841064861080508e-04, + 6.423057629971809773e-04, + 6.417264111392434337e-04, + 6.411460519150005005e-04, + 6.405646863287971140e-04, + 6.399823153865148500e-04, + 6.393989400955974031e-04, + 6.388145614651208424e-04, + 6.382291805056910464e-04, + 6.376427982294714586e-04, + 6.370554156501916521e-04, + 6.364670337831843019e-04, + 6.358776536452739447e-04, + 6.352872762549439467e-04, + 6.346959026321426483e-04, + 6.341035337984410065e-04, + 6.335101707769114901e-04, + 6.329158145922075514e-04, + 6.323204662705755527e-04, + 6.317241268397440690e-04, + 6.311267973290041189e-04, + 6.305284787692313911e-04, + 6.299291721928076395e-04, + 6.293288786336483304e-04, + 6.287275991272694292e-04, + 6.281253347106917741e-04, + 6.275220864224580978e-04, + 6.269178553026487485e-04, + 6.263126423928884121e-04, + 6.257064487363775537e-04, + 6.250992753777815042e-04, + 6.244911233633021258e-04, + 6.238819937407140241e-04, + 6.232718875592612243e-04, + 6.226608058697482434e-04, + 6.220487497244934702e-04, + 6.214357201773451026e-04, + 6.208217182836311661e-04, + 6.202067451002475510e-04, + 6.195908016855367984e-04, + 6.189738890994506224e-04, + 6.183560084033534526e-04, + 6.177371606601928704e-04, + 6.171173469343734083e-04, + 6.164965682918017607e-04, + 6.158748257999467407e-04, + 6.152521205277444120e-04, + 6.146284535456145691e-04, + 6.140038259254740729e-04, + 6.133782387407756649e-04, + 6.127516930664047515e-04, + 6.121241899788282649e-04, + 6.114957305559086138e-04, + 6.108663158770689158e-04, + 6.102359470231752533e-04, + 6.096046250765656217e-04, + 6.089723511211316779e-04, + 6.083391262422012131e-04, + 6.077049515265589693e-04, + 6.070698280625186306e-04, + 6.064337569398305572e-04, + 6.057967392497023854e-04, + 6.051587760848883661e-04, + 6.045198685395651150e-04, + 6.038800177093679332e-04, + 6.032392246913967707e-04, + 6.025974905842316218e-04, + 6.019548164879555104e-04, + 6.013112035040419495e-04, + 6.006666527354399430e-04, + 6.000211652865954527e-04, + 5.993747422633687819e-04, + 5.987273847730592959e-04, + 5.980790939244861942e-04, + 5.974298708278799825e-04, + 5.967797165949004700e-04, + 5.961286323386558519e-04, + 5.954766191737099730e-04, + 5.948236782161161551e-04, + 5.941698105832917548e-04, + 5.935150173941065258e-04, + 5.928592997689122179e-04, + 5.922026588294237483e-04, + 5.915450956988689297e-04, + 5.908866115018702927e-04, + 5.902272073644589633e-04, + 5.895668844140961300e-04, + 5.889056437797080641e-04, + 5.882434865915766144e-04, + 5.875804139815010794e-04, + 5.869164270825983883e-04, + 5.862515270294779831e-04, + 5.855857149581204964e-04, + 5.849189920059012782e-04, + 5.842513593116850472e-04, + 5.835828180156990390e-04, + 5.829133692595629300e-04, + 5.822430141863033657e-04, + 5.815717539403951605e-04, + 5.808995896676375902e-04, + 5.802265225153374053e-04, + 5.795525536320928579e-04, + 5.788776841679703182e-04, + 5.782019152743738451e-04, + 5.775252481041440655e-04, + 5.768476838114932302e-04, + 5.761692235520389331e-04, + 5.754898684827388419e-04, + 5.748096197619956488e-04, + 5.741284785495471329e-04, + 5.734464460064982519e-04, + 5.727635232954050599e-04, + 5.720797115801565290e-04, + 5.713950120259989442e-04, + 5.707094257995497808e-04, + 5.700229540688181960e-04, + 5.693355980032168469e-04, + 5.686473587734563974e-04, + 5.679582375516248815e-04, + 5.672682355112161103e-04, + 5.665773538270420673e-04, + 5.658855936752542684e-04, + 5.651929562334381948e-04, + 5.644994426804887189e-04, + 5.638050541966199702e-04, + 5.631097919634602033e-04, + 5.624136571639067311e-04, + 5.617166509823120829e-04, + 5.610187746042651037e-04, + 5.603200292167745096e-04, + 5.596204160081406269e-04, + 5.589199361679897610e-04, + 5.582185908873586559e-04, + 5.575163813585725216e-04, + 5.568133087752756083e-04, + 5.561093743324403140e-04, + 5.554045792264112030e-04, + 5.546989246547865023e-04, + 5.539924118165928755e-04, + 5.532850419120727021e-04, + 5.525768161428648139e-04, + 5.518677357118800288e-04, + 5.511578018233274966e-04, + 5.504470156828121692e-04, + 5.497353784972000340e-04, + 5.490228914746541093e-04, + 5.483095558246406246e-04, + 5.475953727579864830e-04, + 5.468803434867341952e-04, + 5.461644692243291209e-04, + 5.454477511854672472e-04, + 5.447301905861250040e-04, + 5.440117886435757435e-04, + 5.432925465763996072e-04, + 5.425724656045193038e-04, + 5.418515469490628499e-04, + 5.411297918324659180e-04, + 5.404072014784949305e-04, + 5.396837771121499152e-04, + 5.389595199596993076e-04, + 5.382344312487684227e-04, + 5.375085122082098920e-04, + 5.367817640681374911e-04, + 5.360541880599393669e-04, + 5.353257854162846510e-04, + 5.345965573711648766e-04, + 5.338665051597532487e-04, + 5.331356300185076435e-04, + 5.324039331851927260e-04, + 5.316714158987533153e-04, + 5.309380793995095412e-04, + 5.302039249289174517e-04, + 5.294689537297742532e-04, + 5.287331670460597996e-04, + 5.279965661230726602e-04, + 5.272591522072712835e-04, + 5.265209265464809718e-04, + 5.257818903896513451e-04, + 5.250420449870572435e-04, + 5.243013915901633109e-04, + 5.235599314516540268e-04, + 5.228176658255295501e-04, + 5.220745959669778917e-04, + 5.213307231323984414e-04, + 5.205860485794185566e-04, + 5.198405735669431099e-04, + 5.190942993550184221e-04, + 5.183472272050299121e-04, + 5.175993583794631387e-04, + 5.168506941421088232e-04, + 5.161012357579219034e-04, + 5.153509844930578539e-04, + 5.145999416149597480e-04, + 5.138481083922360679e-04, + 5.130954860946681855e-04, + 5.123420759933080496e-04, + 5.115878793603626093e-04, + 5.108328974692203771e-04, + 5.100771315945546456e-04, + 5.093205830121830821e-04, + 5.085632529991043760e-04, + 5.078051428335040923e-04, + 5.070462537947812353e-04, + 5.062865871635677641e-04, + 5.055261442216019575e-04, + 5.047649262518172104e-04, + 5.040029345383845345e-04, + 5.032401703665689017e-04, + 5.024766350229262430e-04, + 5.017123297950747910e-04, + 5.009472559718872002e-04, + 5.001814148433578406e-04, + 4.994148077006480089e-04, + 4.986474358361040349e-04, + 4.978793005432849287e-04, + 4.971104031168304327e-04, + 4.963407448525544805e-04, + 4.955703270474788071e-04, + 4.947991509996989409e-04, + 4.940272180085635316e-04, + 4.932545293745228864e-04, + 4.924810863991575935e-04, + 4.917068903851969531e-04, + 4.909319426365631048e-04, + 4.901562444582384295e-04, + 4.893797971564627656e-04, + 4.886026020384973785e-04, + 4.878246604128208216e-04, + 4.870459735889966636e-04, + 4.862665428777023825e-04, + 4.854863695908304133e-04, + 4.847054550413486653e-04, + 4.839238005433319639e-04, + 4.831414074119786393e-04, + 4.823582769636602908e-04, + 4.815744105157763414e-04, + 4.807898093869691436e-04, + 4.800044748968685954e-04, + 4.792184083663060534e-04, + 4.784316111171505641e-04, + 4.776440844724323003e-04, + 4.768558297562682392e-04, + 4.760668482938946880e-04, + 4.752771414115975705e-04, + 4.744867104368311462e-04, + 4.736955566980913766e-04, + 4.729036815249524077e-04, + 4.721110862481658291e-04, + 4.713177721995213541e-04, + 4.705237407118778819e-04, + 4.697289931191816581e-04, + 4.689335307564745686e-04, + 4.681373549599336052e-04, + 4.673404670667271536e-04, + 4.665428684151164758e-04, + 4.657445603444893196e-04, + 4.649455441952169668e-04, + 4.641458213088615328e-04, + 4.633453930279325087e-04, + 4.625442606960893446e-04, + 4.617424256579845117e-04, + 4.609398892594000568e-04, + 4.601366528470896889e-04, + 4.593327177689852654e-04, + 4.585280853739484011e-04, + 4.577227570119804783e-04, + 4.569167340340793697e-04, + 4.561100177922710968e-04, + 4.553026096397159192e-04, + 4.544945109305625094e-04, + 4.536857230199795575e-04, + 4.528762472641766415e-04, + 4.520660850204506862e-04, + 4.512552376470438235e-04, + 4.504437065033513429e-04, + 4.496314929496742765e-04, + 4.488185983474274571e-04, + 4.480050240589993310e-04, + 4.471907714477799849e-04, + 4.463758418782663674e-04, + 4.455602367159229690e-04, + 4.447439573272098491e-04, + 4.439270050795987360e-04, + 4.431093813416255023e-04, + 4.422910874827453158e-04, + 4.414721248735269826e-04, + 4.406524948854875518e-04, + 4.398321988911297210e-04, + 4.390112382639506719e-04, + 4.381896143784676581e-04, + 4.373673286102417487e-04, + 4.365443823357393217e-04, + 4.357207769324312682e-04, + 4.348965137788335963e-04, + 4.340715942543533113e-04, + 4.332460197395097555e-04, + 4.324197916156746714e-04, + 4.315929112652885534e-04, + 4.307653800717149315e-04, + 4.299371994192887269e-04, + 4.291083706933362008e-04, + 4.282788952802049328e-04, + 4.274487745671204353e-04, + 4.266180099422892612e-04, + 4.257866027949360832e-04, + 4.249545545151526649e-04, + 4.241218664941167065e-04, + 4.232885401238317994e-04, + 4.224545767973470855e-04, + 4.216199779085910487e-04, + 4.207847448525087750e-04, + 4.199488790249009487e-04, + 4.191123818226435115e-04, + 4.182752546434208405e-04, + 4.174374988859490937e-04, + 4.165991159498280542e-04, + 4.157601072355698066e-04, + 4.149204741447120367e-04, + 4.140802180796677068e-04, + 4.132393404437553048e-04, + 4.123978426412221003e-04, + 4.115557260772906571e-04, + 4.107129921580100263e-04, + 4.098696422904795798e-04, + 4.090256778825823508e-04, + 4.081811003432089758e-04, + 4.073359110820855777e-04, + 4.064901115098998579e-04, + 4.056437030382315455e-04, + 4.047966870795805861e-04, + 4.039490650472920608e-04, + 4.031008383556841765e-04, + 4.022520084198792927e-04, + 4.014025766560252615e-04, + 4.005525444810292563e-04, + 3.997019133127844236e-04, + 3.988506845700121321e-04, + 3.979988596723188932e-04, + 3.971464400402148465e-04, + 3.962934270951428708e-04, + 3.954398222593333550e-04, + 3.945856269559083361e-04, + 3.937308426089206385e-04, + 3.928754706431998090e-04, + 3.920195124845731317e-04, + 3.911629695596041721e-04, + 3.903058432958152017e-04, + 3.894481351215297715e-04, + 3.885898464659334273e-04, + 3.877309787590844437e-04, + 3.868715334319537767e-04, + 3.860115119162499104e-04, + 3.851509156446250191e-04, + 3.842897460505213889e-04, + 3.834280045682055709e-04, + 3.825656926328863420e-04, + 3.817028116805467621e-04, + 3.808393631479969205e-04, + 3.799753484728751827e-04, + 3.791107690937132969e-04, + 3.782456264497773956e-04, + 3.773799219812931302e-04, + 3.765136571291812883e-04, + 3.756468333352777243e-04, + 3.747794520421830343e-04, + 3.739115146932979017e-04, + 3.730430227329328721e-04, + 3.721739776061560234e-04, + 3.713043807588262504e-04, + 3.704342336376094196e-04, + 3.695635376900404398e-04, + 3.686922943643563492e-04, + 3.678205051097338096e-04, + 3.669481713760125809e-04, + 3.660752946139243964e-04, + 3.652018762749201404e-04, + 3.643279178112790819e-04, + 3.634534206761296914e-04, + 3.625783863232886909e-04, + 3.617028162073790691e-04, + 3.608267117838630960e-04, + 3.599500745088844624e-04, + 3.590729058395029016e-04, + 3.581952072334134893e-04, + 3.573169801491846262e-04, + 3.564382260460949195e-04, + 3.555589463841897784e-04, + 3.546791426243003334e-04, + 3.537988162280788357e-04, + 3.529179686578411222e-04, + 3.520366013766783970e-04, + 3.511547158484982687e-04, + 3.502723135378631495e-04, + 3.493893959102223833e-04, + 3.485059644316374546e-04, + 3.476220205690127066e-04, + 3.467375657899190501e-04, + 3.458526015627442877e-04, + 3.449671293565200760e-04, + 3.440811506411483602e-04, + 3.431946668871293485e-04, + 3.423076795657915795e-04, + 3.414201901491343335e-04, + 3.405322001098625979e-04, + 3.396437109215053539e-04, + 3.387547240582520786e-04, + 3.378652409949929147e-04, + 3.369752632073339579e-04, + 3.360847921716551530e-04, + 3.351938293649499951e-04, + 3.343023762650569521e-04, + 3.334104343503868965e-04, + 3.325180051001503539e-04, + 3.316250899942032216e-04, + 3.307316905130790229e-04, + 3.298378081381082784e-04, + 3.289434443512570137e-04, + 3.280486006351634597e-04, + 3.271532784731546410e-04, + 3.262574793492655661e-04, + 3.253612047482751690e-04, + 3.244644561555267651e-04, + 3.235672350571407716e-04, + 3.226695429398570647e-04, + 3.217713812910894065e-04, + 3.208727515989448519e-04, + 3.199736553522600159e-04, + 3.190740940404395809e-04, + 3.181740691535716020e-04, + 3.172735821824698450e-04, + 3.163726346185062230e-04, + 3.154712279538494837e-04, + 3.145693636811870025e-04, + 3.136670432939552846e-04, + 3.127642682861835142e-04, + 3.118610401525474395e-04, + 3.109573603883891593e-04, + 3.100532304897538776e-04, + 3.091486519532258095e-04, + 3.082436262760482565e-04, + 3.073381549561601984e-04, + 3.064322394920323623e-04, + 3.055258813829074809e-04, + 3.046190821285168289e-04, + 3.037118432293145183e-04, + 3.028041661862996355e-04, + 3.018960525011736670e-04, + 3.009875036761535836e-04, + 3.000785212142122616e-04, + 2.991691066187968616e-04, + 2.982592613940650218e-04, + 2.973489870447223364e-04, + 2.964382850760602481e-04, + 2.955271569940746599e-04, + 2.946156043052992933e-04, + 2.937036285168489482e-04, + 2.927912311364343559e-04, + 2.918784136723770874e-04, + 2.909651776336523248e-04, + 2.900515245297208104e-04, + 2.891374558706525538e-04, + 2.882229731671582737e-04, + 2.873080779304500241e-04, + 2.863927716723789420e-04, + 2.854770559053523057e-04, + 2.845609321423705064e-04, + 2.836444018969436730e-04, + 2.827274666832318051e-04, + 2.818101280158600251e-04, + 2.808923874101578616e-04, + 2.799742463818749171e-04, + 2.790557064474192303e-04, + 2.781367691236957297e-04, + 2.772174359281604980e-04, + 2.762977083788438113e-04, + 2.753775879943819063e-04, + 2.744570762938581990e-04, + 2.735361747969178303e-04, + 2.726148850238096252e-04, + 2.716932084952177699e-04, + 2.707711467325061910e-04, + 2.698487012574278272e-04, + 2.689258735923698209e-04, + 2.680026652601864975e-04, + 2.670790777842568819e-04, + 2.661551126885046479e-04, + 2.652307714974372040e-04, + 2.643060557359537890e-04, + 2.633809669295758657e-04, + 2.624555066042742984e-04, + 2.615296762865107700e-04, + 2.606034775033589952e-04, + 2.596769117823351518e-04, + 2.587499806514389177e-04, + 2.578226856391717934e-04, + 2.568950282745936439e-04, + 2.559670100871571405e-04, + 2.550386326069540373e-04, + 2.541098973644217323e-04, + 2.531808058905877547e-04, + 2.522513597169046950e-04, + 2.513215603752878813e-04, + 2.503914093982350210e-04, + 2.494609083186621066e-04, + 2.485300586699380559e-04, + 2.475988619859058543e-04, + 2.466673198008994140e-04, + 2.457354336497832013e-04, + 2.448032050677830473e-04, + 2.438706355906092586e-04, + 2.429377267544933453e-04, + 2.420044800960443904e-04, + 2.410708971523647622e-04, + 2.401369794610756195e-04, + 2.392027285601415422e-04, + 2.382681459879984400e-04, + 2.373332332835880842e-04, + 2.363979919861913576e-04, + 2.354624236356752352e-04, + 2.345265297721987495e-04, + 2.335903119364597809e-04, + 2.326537716695278749e-04, + 2.317169105128996708e-04, + 2.307797300085235952e-04, + 2.298422316988332282e-04, + 2.289044171265822874e-04, + 2.279662878349632943e-04, + 2.270278453676505086e-04, + 2.260890912686281903e-04, + 2.251500270824391805e-04, + 2.242106543538883990e-04, + 2.232709746282960056e-04, + 2.223309894513002651e-04, + 2.213907003690263303e-04, + 2.204501089278948262e-04, + 2.195092166748694004e-04, + 2.185680251571614952e-04, + 2.176265359224809873e-04, + 2.166847505188627433e-04, + 2.157426704947087949e-04, + 2.148002973989092271e-04, + 2.138576327806739107e-04, + 2.129146781895711806e-04, + 2.119714351755462676e-04, + 2.110279052889390519e-04, + 2.100840900805245586e-04, + 2.091399911013420868e-04, + 2.081956099028191612e-04, + 2.072509480368091002e-04, + 2.063060070554644345e-04, + 2.053607885112763726e-04, + 2.044152939571959333e-04, + 2.034695249464672762e-04, + 2.025234830326419326e-04, + 2.015771697697053312e-04, + 2.006305867118845696e-04, + 1.996837354138962625e-04, + 1.987366174306517475e-04, + 1.977892343175068578e-04, + 1.968415876300892361e-04, + 1.958936789243608933e-04, + 1.949455097566350401e-04, + 1.939970816836177482e-04, + 1.930483962622345858e-04, + 1.920994550497561685e-04, + 1.911502596038361877e-04, + 1.902008114823430069e-04, + 1.892511122436062090e-04, + 1.883011634461225880e-04, + 1.873509666488033202e-04, + 1.864005234108060207e-04, + 1.854498352915922069e-04, + 1.844989038509494968e-04, + 1.835477306490269271e-04, + 1.825963172461671463e-04, + 1.816446652030285493e-04, + 1.806927760806265049e-04, + 1.797406514401596388e-04, + 1.787882928432418263e-04, + 1.778357018517083912e-04, + 1.768828800276562479e-04, + 1.759298289334617097e-04, + 1.749765501317996524e-04, + 1.740230451856837645e-04, + 1.730693156582941328e-04, + 1.721153631131008138e-04, + 1.711611891139055216e-04, + 1.702067952247107913e-04, + 1.692521830097596888e-04, + 1.682973540336608453e-04, + 1.673423098612161514e-04, + 1.663870520574608450e-04, + 1.654315821876818345e-04, + 1.644759018174365907e-04, + 1.635200125125928564e-04, + 1.625639158391559592e-04, + 1.616076133633945525e-04, + 1.606511066518798636e-04, + 1.596943972713341759e-04, + 1.587374867887779558e-04, + 1.577803767714415983e-04, + 1.568230687868047292e-04, + 1.558655644025108244e-04, + 1.549078651865106230e-04, + 1.539499727068697349e-04, + 1.529918885320226700e-04, + 1.520336142304691530e-04, + 1.510751513710297781e-04, + 1.501165015226711274e-04, + 1.491576662545688443e-04, + 1.481986471361252517e-04, + 1.472394457370094676e-04, + 1.462800636269854777e-04, + 1.453205023760355177e-04, + 1.443607635544015436e-04, + 1.434008487324117871e-04, + 1.424407594807344042e-04, + 1.414804973700755795e-04, + 1.405200639714332292e-04, + 1.395594608559241521e-04, + 1.385986895948237388e-04, + 1.376377517596914953e-04, + 1.366766489221977055e-04, + 1.357153826541425683e-04, + 1.347539545275809885e-04, + 1.337923661146718187e-04, + 1.328306189877162405e-04, + 1.318687147192847782e-04, + 1.309066548820439621e-04, + 1.299444410487944927e-04, + 1.289820747924923553e-04, + 1.280195576862672515e-04, + 1.270568913034606548e-04, + 1.260940772174556717e-04, + 1.251311170017990152e-04, + 1.241680122302448602e-04, + 1.232047644766207550e-04, + 1.222413753148699595e-04, + 1.212778463191770226e-04, + 1.203141790637924806e-04, + 1.193503751230749104e-04, + 1.183864360715085481e-04, + 1.174223634837228992e-04, + 1.164581589345332202e-04, + 1.154938239987652167e-04, + 1.145293602513816237e-04, + 1.135647692675244356e-04, + 1.126000526223588623e-04, + 1.116352118912024305e-04, + 1.106702486495414635e-04, + 1.097051644728591136e-04, + 1.087399609367596112e-04, + 1.077746396170099931e-04, + 1.068092020893654650e-04, + 1.058436499298234026e-04, + 1.048779847143218485e-04, + 1.039122080189936901e-04, + 1.029463214199923877e-04, + 1.019803264935537329e-04, + 1.010142248160151749e-04, + 1.000480179638554753e-04, + 9.908170751352169607e-05, + 9.811529504155391032e-05, + 9.714878212462613074e-05, + 9.618217033937244431e-05, + 9.521546126264200302e-05, + 9.424865647119508142e-05, + 9.328175754195877211e-05, + 9.231476605183142276e-05, + 9.134768357782966752e-05, + 9.038051169700094542e-05, + 8.941325198646253168e-05, + 8.844590602331413743e-05, + 8.747847538478586266e-05, + 8.651096164808376519e-05, + 8.554336639043242914e-05, + 8.457569118919891634e-05, + 8.360793762172068991e-05, + 8.264010726534410343e-05, + 8.167220169744452644e-05, + 8.070422249544443704e-05, + 7.973617123685500111e-05, + 7.876804949909982161e-05, + 7.779985885964282031e-05, + 7.683160089602831253e-05, + 7.586327718574904626e-05, + 7.489488930628691388e-05, + 7.392643883523957349e-05, + 7.295792735014556705e-05, + 7.198935642850319908e-05, + 7.102072764789740182e-05, + 7.005204258580311524e-05, + 6.908330281984152461e-05, + 6.811450992747531839e-05, + 6.714566548626550865e-05, + 6.617677107369541079e-05, + 6.520782826723404231e-05, + 6.423883864435361911e-05, + 6.326980378257140568e-05, + 6.230072525927415569e-05, + 6.133160465184459768e-05, + 6.036244353770249928e-05, + 5.939324349412945331e-05, + 5.842400609852508832e-05, + 5.745473292810250945e-05, + 5.648542556014431919e-05, + 5.551608557182823023e-05, + 5.454671454026676085e-05, + 5.357731404263471674e-05, + 5.260788565599399747e-05, + 5.163843095733373911e-05, + 5.066895152358991795e-05, + 4.969944893170697380e-05, + 4.872992475846305699e-05, + 4.776038058070461581e-05, + 4.679081797514964767e-05, + 4.582123851842832287e-05, + 4.485164378710224266e-05, + 4.388203535768263357e-05, + 4.291241480667233311e-05, + 4.194278371038918680e-05, + 4.097314364509365873e-05, + 4.000349618702973994e-05, + 3.903384291229205225e-05, + 3.806418539686719709e-05, + 3.709452521676046482e-05, + 3.612486394782028884e-05, + 3.515520316577951983e-05, + 3.418554444627377586e-05, + 3.321588936486082928e-05, + 3.224623949706125078e-05, + 3.127659641818307350e-05, + 3.030696170344862782e-05, + 2.933733692803536830e-05, + 2.836772366692232017e-05, + 2.739812349503813055e-05, + 2.642853798717267883e-05, + 2.545896871801756484e-05, + 2.448941726207690619e-05, + 2.351988519381648034e-05, + 2.255037408746621015e-05, + 2.158088551727724850e-05, + 2.061142105721684655e-05, + 1.964198228122495050e-05, + 1.867257076303906568e-05, + 1.770318807623453804e-05, + 1.673383579435212750e-05, + 1.576451549072211303e-05, + 1.479522873850527727e-05, + 1.382597711071191725e-05, + 1.285676218026400991e-05, + 1.188758551981987622e-05, + 1.091844870203095757e-05, + 9.949353299236699208e-06, + 8.980300883721362208e-06, + 8.011293027516873131e-06, + 7.042331302551712099e-06, + 6.073417280561833729e-06, + 5.104552533131326405e-06, + 4.135738631603488222e-06, + 3.166977147229526156e-06, + 2.198269651014712441e-06, + 1.229617713759139975e-06, + 2.610229061847335950e-07, +-7.075132012400826266e-07, +-1.675989038259737749e-06, +-2.644403034812451381e-06, +-3.612753621011153472e-06, +-4.581039227102837370e-06, +-5.549258283643933015e-06, +-6.517409221373173016e-06, +-7.485490471171024003e-06, +-8.453500464191708572e-06, +-9.421437631822660361e-06, +-1.038930040555736661e-05, +-1.135708721717081242e-05, +-1.232479649867872997e-05, +-1.329242668231844713e-05, +-1.425997620053009515e-05, +-1.522744348591568516e-05, +-1.619482697143617543e-05, +-1.716212509017632149e-05, +-1.812933627552012713e-05, +-1.909645896108836050e-05, +-2.006349158071977874e-05, +-2.103043256843025699e-05, +-2.199728035858820548e-05, +-2.296403338578733506e-05, +-2.393069008480630113e-05, +-2.489724889078367693e-05, +-2.586370823896160754e-05, +-2.683006656499046722e-05, +-2.779632230467240500e-05, +-2.876247389413644670e-05, +-2.972851976979795256e-05, +-3.069445836823171133e-05, +-3.166028812634700510e-05, +-3.262600748134695166e-05, +-3.359161487070940567e-05, +-3.455710873212510485e-05, +-3.552248750367217916e-05, +-3.648774962356053652e-05, +-3.745289353043569701e-05, +-3.841791766312286683e-05, +-3.938282046082348394e-05, +-4.034760036298835277e-05, +-4.131225580929856229e-05, +-4.227678523984056434e-05, +-4.324118709497915935e-05, +-4.420545981531719110e-05, +-4.516960184182712145e-05, +-4.613361161581046760e-05, +-4.709748757877139772e-05, +-4.806122817259092154e-05, +-4.902483183948712044e-05, +-4.998829702199529307e-05, +-5.095162216294990331e-05, +-5.191480570544281821e-05, +-5.287784609299931463e-05, +-5.384074176945031955e-05, +-5.480349117889295874e-05, +-5.576609276584247371e-05, +-5.672854497508547503e-05, +-5.769084625176705794e-05, +-5.865299504135179816e-05, +-5.961498978971086757e-05, +-6.057682894297493505e-05, +-6.153851094772997343e-05, +-6.250003425076167910e-05, +-6.346139729935891993e-05, +-6.442259854105848694e-05, +-6.538363642381911551e-05, +-6.634450939598149192e-05, +-6.730521590614164560e-05, +-6.826575440332534306e-05, +-6.922612333694713217e-05, +-7.018632115679237149e-05, +-7.114634631295471245e-05, +-7.210619725601007319e-05, +-7.306587243676214915e-05, +-7.402537030654482420e-05, +-7.498468931696777612e-05, +-7.594382792008981347e-05, +-7.690278456837936990e-05, +-7.786155771458755771e-05, +-7.882014581192261593e-05, +-7.977854731403108586e-05, +-8.073676067487105430e-05, +-8.169478434886522935e-05, +-8.265261679086044542e-05, +-8.361025645600155703e-05, +-8.456770179990530411e-05, +-8.552495127861987130e-05, +-8.648200334860623969e-05, +-8.743885646671892861e-05, +-8.839550909016570404e-05, +-8.935195967668172856e-05, +-9.030820668440307558e-05, +-9.126424857182674944e-05, +-9.222008379794110133e-05, +-9.317571082218628305e-05, +-9.413112810432769351e-05, +-9.508633410462988473e-05, +-9.604132728381651414e-05, +-9.699610610305035461e-05, +-9.795066902391592011e-05, +-9.890501450837821179e-05, +-9.985914101895605483e-05, +-1.008130470185971848e-04, +-1.017667309706369802e-04, +-1.027201913389730461e-04, +-1.036734265878096406e-04, +-1.046264351819614413e-04, +-1.055792155865969143e-04, +-1.065317662674363170e-04, +-1.074840856905801635e-04, +-1.084361723227057094e-04, +-1.093880246308131669e-04, +-1.103396410825255005e-04, +-1.112910201458373795e-04, +-1.122421602892853309e-04, +-1.131930599819104283e-04, +-1.141437176931303025e-04, +-1.150941318929138874e-04, +-1.160443010517407219e-04, +-1.169942236405816785e-04, +-1.179438981308376239e-04, +-1.188933229945129597e-04, +-1.198424967039623932e-04, +-1.207914177321899740e-04, +-1.217400845525981959e-04, +-1.226884956391809849e-04, +-1.236366494663769663e-04, +-1.245845445091570407e-04, +-1.255321792429857732e-04, +-1.264795521439063947e-04, +-1.274266616883958439e-04, +-1.283735063535170980e-04, +-1.293200846168762925e-04, +-1.302663949565005042e-04, +-1.312124358510083778e-04, +-1.321582057795710132e-04, +-1.331037032218919077e-04, +-1.340489266581897446e-04, +-1.349938745691581145e-04, +-1.359385454361364948e-04, +-1.368829377409861076e-04, +-1.378270499660505641e-04, +-1.387708805942852903e-04, +-1.397144281092160031e-04, +-1.406576909948158963e-04, +-1.416006677356775685e-04, +-1.425433568169709019e-04, +-1.434857567244275851e-04, +-1.444278659443193748e-04, +-1.453696829634197423e-04, +-1.463112062691961297e-04, +-1.472524343495813998e-04, +-1.481933656931420777e-04, +-1.491339987890410806e-04, +-1.500743321269139567e-04, +-1.510143641970369908e-04, +-1.519540934902909642e-04, +-1.528935184981403659e-04, +-1.538326377125728936e-04, +-1.547714496262713271e-04, +-1.557099527323619660e-04, +-1.566481455247131652e-04, +-1.575860264976831763e-04, +-1.585235941462932404e-04, +-1.594608469661859551e-04, +-1.603977834535032470e-04, +-1.613344021050552640e-04, +-1.622707014182824003e-04, +-1.632066798912348328e-04, +-1.641423360225136756e-04, +-1.650776683114406850e-04, +-1.660126752578078627e-04, +-1.669473553621757473e-04, +-1.678817071256214996e-04, +-1.688157290499319178e-04, +-1.697494196374799743e-04, +-1.706827773912053265e-04, +-1.716158008147846998e-04, +-1.725484884125084236e-04, +-1.734808386892418340e-04, +-1.744128501505521798e-04, +-1.753445213026698618e-04, +-1.762758506523646172e-04, +-1.772068367071160104e-04, +-1.781374779750737243e-04, +-1.790677729650385318e-04, +-1.799977201864445429e-04, +-1.809273181493197393e-04, +-1.818565653644550284e-04, +-1.827854603432797504e-04, +-1.837140015978276067e-04, +-1.846421876408989380e-04, +-1.855700169858186222e-04, +-1.864974881467265048e-04, +-1.874245996383322877e-04, +-1.883513499761033951e-04, +-1.892777376761020983e-04, +-1.902037612551754956e-04, +-1.911294192307053325e-04, +-1.920547101209061573e-04, +-1.929796324445737590e-04, +-1.939041847212570407e-04, +-1.948283654712175514e-04, +-1.957521732153065107e-04, +-1.966756064751341068e-04, +-1.975986637730309530e-04, +-1.985213436320283284e-04, +-1.994436445757992785e-04, +-2.003655651288257177e-04, +-2.012871038161549719e-04, +-2.022082591636876884e-04, +-2.031290296979353538e-04, +-2.040494139461873158e-04, +-2.049694104364705859e-04, +-2.058890176974288700e-04, +-2.068082342584911886e-04, +-2.077270586498529035e-04, +-2.086454894023519289e-04, +-2.095635250476200046e-04, +-2.104811641180403040e-04, +-2.113984051466273042e-04, +-2.123152466671938347e-04, +-2.132316872143119374e-04, +-2.141477253232951402e-04, +-2.150633595301806487e-04, +-2.159785883716885534e-04, +-2.168934103853909650e-04, +-2.178078241095892287e-04, +-2.187218280832764646e-04, +-2.196354208463043186e-04, +-2.205486009391370919e-04, +-2.214613669031432021e-04, +-2.223737172803508038e-04, +-2.232856506136136985e-04, +-2.241971654465525440e-04, +-2.251082603235374528e-04, +-2.260189337896475787e-04, +-2.269291843908397097e-04, +-2.278390106738236668e-04, +-2.287484111860296418e-04, +-2.296573844757675482e-04, +-2.305659290920105873e-04, +-2.314740435845768791e-04, +-2.323817265040931687e-04, +-2.332889764019767203e-04, +-2.341957918303746826e-04, +-2.351021713423313549e-04, +-2.360081134915461112e-04, +-2.369136168326588980e-04, +-2.378186799210097314e-04, +-2.387233013128041729e-04, +-2.396274795650731872e-04, +-2.405312132355553708e-04, +-2.414345008828605306e-04, +-2.423373410664315475e-04, +-2.432397323465275711e-04, +-2.441416732841629792e-04, +-2.450431624412749681e-04, +-2.459441983804803392e-04, +-2.468447796653612135e-04, +-2.477449048602263439e-04, +-2.486445725302949424e-04, +-2.495437812415553539e-04, +-2.504425295608509253e-04, +-2.513408160558393474e-04, +-2.522386392950792290e-04, +-2.531359978478858980e-04, +-2.540328902844800449e-04, +-2.549293151759471745e-04, +-2.558252710941185597e-04, +-2.567207566117364744e-04, +-2.576157703024129940e-04, +-2.585103107406174720e-04, +-2.594043765016519837e-04, +-2.602979661616188541e-04, +-2.611910782975816617e-04, +-2.620837114874462474e-04, +-2.629758643099242856e-04, +-2.638675353446951551e-04, +-2.647587231721673607e-04, +-2.656494263737621607e-04, +-2.665396435316741202e-04, +-2.674293732290561310e-04, +-2.683186140498584611e-04, +-2.692073645790135032e-04, +-2.700956234021967078e-04, +-2.709833891061085845e-04, +-2.718706602782380746e-04, +-2.727574355070244228e-04, +-2.736437133818176576e-04, +-2.745294924927645336e-04, +-2.754147714309675837e-04, +-2.762995487884486361e-04, +-2.771838231581291896e-04, +-2.780675931337771257e-04, +-2.789508573101626707e-04, +-2.798336142828280028e-04, +-2.807158626483629649e-04, +-2.815976010041690335e-04, +-2.824788279486248766e-04, +-2.833595420810432566e-04, +-2.842397420015582731e-04, +-2.851194263112850663e-04, +-2.859985936122807311e-04, +-2.868772425075291383e-04, +-2.877553716008828216e-04, +-2.886329794972228432e-04, +-2.895100648022445552e-04, +-2.903866261226357884e-04, +-2.912626620660429709e-04, +-2.921381712410507452e-04, +-2.930131522571640789e-04, +-2.938876037247734074e-04, +-2.947615242553135780e-04, +-2.956349124611464853e-04, +-2.965077669555256173e-04, +-2.973800863527559755e-04, +-2.982518692679567976e-04, +-2.991231143173432865e-04, +-2.999938201179911225e-04, +-3.008639852879955697e-04, +-3.017336084464155850e-04, +-3.026026882132545198e-04, +-3.034712232094248291e-04, +-3.043392120569091293e-04, +-3.052066533786390937e-04, +-3.060735457984620580e-04, +-3.069398879413017000e-04, +-3.078056784329217914e-04, +-3.086709159002021274e-04, +-3.095355989709111153e-04, +-3.103997262738774580e-04, +-3.112632964388392328e-04, +-3.121263080966217010e-04, +-3.129887598789054507e-04, +-3.138506504185005377e-04, +-3.147119783491150627e-04, +-3.155727423055154700e-04, +-3.164329409234849688e-04, +-3.172925728397137037e-04, +-3.181516366919534696e-04, +-3.190101311189825844e-04, +-3.198680547605881074e-04, +-3.207254062575097867e-04, +-3.215821842515962921e-04, +-3.224383873855780208e-04, +-3.232940143033353835e-04, +-3.241490636496736693e-04, +-3.250035340704767860e-04, +-3.258574242126714270e-04, +-3.267107327241156696e-04, +-3.275634582537499499e-04, +-3.284155994515860046e-04, +-3.292671549685905353e-04, +-3.301181234568596030e-04, +-3.309685035693919752e-04, +-3.318182939603597434e-04, +-3.326674932848799351e-04, +-3.335161001991685794e-04, +-3.343641133604888824e-04, +-3.352115314271288918e-04, +-3.360583530583729291e-04, +-3.369045769146479562e-04, +-3.377502016574177035e-04, +-3.385952259491442347e-04, +-3.394396484534418492e-04, +-3.402834678348505928e-04, +-3.411266827591062775e-04, +-3.419692918929153475e-04, +-3.428112939041057456e-04, +-3.436526874615727033e-04, +-3.444934712352635620e-04, +-3.453336438961438371e-04, +-3.461732041163439653e-04, +-3.470121505690546785e-04, +-3.478504819284875395e-04, +-3.486881968700303617e-04, +-3.495252940700393682e-04, +-3.503617722060133684e-04, +-3.511976299565568952e-04, +-3.520328660013622075e-04, +-3.528674790211582782e-04, +-3.537014676978608480e-04, +-3.545348307143480495e-04, +-3.553675667547286933e-04, +-3.561996745041161577e-04, +-3.570311526487819111e-04, +-3.578619998761207641e-04, +-3.586922148745377327e-04, +-3.595217963336028080e-04, +-3.603507429440141476e-04, +-3.611790533975818671e-04, +-3.620067263871752389e-04, +-3.628337606068713912e-04, +-3.636601547517340216e-04, +-3.644859075180805993e-04, +-3.653110176032544113e-04, +-3.661354837057993901e-04, +-3.669593045253290338e-04, +-3.677824787626038177e-04, +-3.686050051194960124e-04, +-3.694268822990658487e-04, +-3.702481090054349374e-04, +-3.710686839439519347e-04, +-3.718886058209753230e-04, +-3.727078733441351911e-04, +-3.735264852221096719e-04, +-3.743444401647777605e-04, +-3.751617368831634239e-04, +-3.759783740894241080e-04, +-3.767943504968100806e-04, +-3.776096648198168154e-04, +-3.784243157740772227e-04, +-3.792383020763239734e-04, +-3.800516224445416123e-04, +-3.808642755977467904e-04, +-3.816762602562460342e-04, +-3.824875751414212361e-04, +-3.832982189758935856e-04, +-3.841081904833783950e-04, +-3.849174883888546684e-04, +-3.857261114183460930e-04, +-3.865340582991778863e-04, +-3.873413277597622870e-04, +-3.881479185297448680e-04, +-3.889538293399679987e-04, +-3.897590589223697433e-04, +-3.905636060101232349e-04, +-3.913674693376097331e-04, +-3.921706476403976445e-04, +-3.929731396551921076e-04, +-3.937749441199813057e-04, +-3.945760597738208735e-04, +-3.953764853570915574e-04, +-3.961762196112811286e-04, +-3.969752612791302079e-04, +-3.977736091046042395e-04, +-3.985712618327793785e-04, +-3.993682182099946043e-04, +-4.001644769838142075e-04, +-4.009600369030119605e-04, +-4.017548967175585406e-04, +-4.025490551785832036e-04, +-4.033425110385402629e-04, +-4.041352630510115481e-04, +-4.049273099708538561e-04, +-4.057186505541456631e-04, +-4.065092835581715657e-04, +-4.072992077413880208e-04, +-4.080884218635686279e-04, +-4.088769246857029737e-04, +-4.096647149699533179e-04, +-4.104517914798074658e-04, +-4.112381529798653430e-04, +-4.120237982360875489e-04, +-4.128087260155856178e-04, +-4.135929350867662176e-04, +-4.143764242192794333e-04, +-4.151591921840026129e-04, +-4.159412377530082201e-04, +-4.167225596997052692e-04, +-4.175031567987365962e-04, +-4.182830278259457371e-04, +-4.190621715585187953e-04, +-4.198405867747750280e-04, +-4.206182722544166467e-04, +-4.213952267783186985e-04, +-4.221714491286872512e-04, +-4.229469380889243021e-04, +-4.237216924437872635e-04, +-4.244957109791753754e-04, +-4.252689924823836254e-04, +-4.260415357418919800e-04, +-4.268133395475037827e-04, +-4.275844026903182697e-04, +-4.283547239626237218e-04, +-4.291243021580427473e-04, +-4.298931360714955820e-04, +-4.306612244991827958e-04, +-4.314285662385772160e-04, +-4.321951600883860880e-04, +-4.329610048486898536e-04, +-4.337260993208457110e-04, +-4.344904423074489631e-04, +-4.352540326124602487e-04, +-4.360168690410845993e-04, +-4.367789503998413710e-04, +-4.375402754965363795e-04, +-4.383008431403257604e-04, +-4.390606521416015313e-04, +-4.398197013121490180e-04, +-4.405779894649401512e-04, +-4.413355154143756777e-04, +-4.420922779760807337e-04, +-4.428482759670494774e-04, +-4.436035082055858917e-04, +-4.443579735112996101e-04, +-4.451116707050609763e-04, +-4.458645986091525613e-04, +-4.466167560471570575e-04, +-4.473681418439331547e-04, +-4.481187548257501980e-04, +-4.488685938200879903e-04, +-4.496176576558694616e-04, +-4.503659451632711507e-04, +-4.511134551738503278e-04, +-4.518601865204994040e-04, +-4.526061380374299934e-04, +-4.533513085601439106e-04, +-4.540956969255838206e-04, +-4.548393019719506594e-04, +-4.555821225388396469e-04, +-4.563241574672093873e-04, +-4.570654055992824476e-04, +-4.578058657786807204e-04, +-4.585455368503947951e-04, +-4.592844176607675322e-04, +-4.600225070574485813e-04, +-4.607598038895260027e-04, +-4.614963070073295395e-04, +-4.622320152626688164e-04, +-4.629669275086283715e-04, +-4.637010425997096868e-04, +-4.644343593917944876e-04, +-4.651668767420512850e-04, +-4.658985935090634734e-04, +-4.666295085528078643e-04, +-4.673596207346298573e-04, +-4.680889289172327069e-04, +-4.688174319646499296e-04, +-4.695451287423722635e-04, +-4.702720181172555117e-04, +-4.709980989574851971e-04, +-4.717233701327017874e-04, +-4.724478305138916793e-04, +-4.731714789733817766e-04, +-4.738943143849692159e-04, +-4.746163356238255224e-04, +-4.753375415664656562e-04, +-4.760579310908781168e-04, +-4.767775030763344484e-04, +-4.774962564036170851e-04, +-4.782141899548275014e-04, +-4.789313026135138228e-04, +-4.796475932646287045e-04, +-4.803630607945130683e-04, +-4.810777040908638478e-04, +-4.817915220428675076e-04, +-4.825045135411043626e-04, +-4.832166774775170279e-04, +-4.839280127455395470e-04, +-4.846385182399109634e-04, +-4.853481928568959014e-04, +-4.860570354941000891e-04, +-4.867650450506116303e-04, +-4.874722204268752365e-04, +-4.881785605248374561e-04, +-4.888840642477635529e-04, +-4.895887305004495210e-04, +-4.902925581890441682e-04, +-4.909955462211742323e-04, +-4.916976935059112590e-04, +-4.923989989536822634e-04, +-4.930994614763975579e-04, +-4.937990799874168160e-04, +-4.944978534015418087e-04, +-4.951957806349974308e-04, +-4.958928606054017769e-04, +-4.965890922318941855e-04, +-4.972844744350449252e-04, +-4.979790061368231024e-04, +-4.986726862606956487e-04, +-4.993655137315911085e-04, +-5.000574874758120358e-04, +-5.007486064211643393e-04, +-5.014388694969218289e-04, +-5.021282756338141815e-04, +-5.028168237640177245e-04, +-5.035045128211172727e-04, +-5.041913417402540129e-04, +-5.048773094579576699e-04, +-5.055624149122640333e-04, +-5.062466570426795050e-04, +-5.069300347901625585e-04, +-5.076125470970916471e-04, +-5.082941929073974763e-04, +-5.089749711664678109e-04, +-5.096548808211172257e-04, +-5.103339208197134151e-04, +-5.110120901119967821e-04, +-5.116893876492908813e-04, +-5.123658123843278633e-04, +-5.130413632713643748e-04, +-5.137160392661449136e-04, +-5.143898393258830712e-04, +-5.150627624092324764e-04, +-5.157348074764160325e-04, +-5.164059734891267121e-04, +-5.170762594105098855e-04, +-5.177456642052771611e-04, +-5.184141868395290105e-04, +-5.190818262809730179e-04, +-5.197485814987354465e-04, +-5.204144514635035933e-04, +-5.210794351474407884e-04, +-5.217435315241633013e-04, +-5.224067395688696859e-04, +-5.230690582582517680e-04, +-5.237304865704602757e-04, +-5.243910234852056703e-04, +-5.250506679837200910e-04, +-5.257094190486775575e-04, +-5.263672756643078109e-04, +-5.270242368163739798e-04, +-5.276803014921546903e-04, +-5.283354686804338750e-04, +-5.289897373714729087e-04, +-5.296431065571264012e-04, +-5.302955752307602320e-04, +-5.309471423872199995e-04, +-5.315978070229398752e-04, +-5.322475681358314727e-04, +-5.328964247253573571e-04, +-5.335443757924950492e-04, +-5.341914203397975236e-04, +-5.348375573712954145e-04, +-5.354827858926272275e-04, +-5.361271049108673860e-04, +-5.367705134347320120e-04, +-5.374130104744029605e-04, +-5.380545950416488164e-04, +-5.386952661497827191e-04, +-5.393350228136467497e-04, +-5.399738640495864526e-04, +-5.406117888755703144e-04, +-5.412487963110969563e-04, +-5.418848853771771360e-04, +-5.425200550964441202e-04, +-5.431543044929858493e-04, +-5.437876325925449731e-04, +-5.444200384223493901e-04, +-5.450515210112308589e-04, +-5.456820793895782694e-04, +-5.463117125893303784e-04, +-5.469404196439416575e-04, +-5.475681995885212875e-04, +-5.481950514596733472e-04, +-5.488209742956084861e-04, +-5.494459671361196385e-04, +-5.500700290225061292e-04, +-5.506931589976725525e-04, +-5.513153561061169550e-04, +-5.519366193939105603e-04, +-5.525569479086872527e-04, +-5.531763406996145207e-04, +-5.537947968175095746e-04, +-5.544123153147582483e-04, +-5.550288952452829072e-04, +-5.556445356646340632e-04, +-5.562592356299602336e-04, +-5.568729941999257587e-04, +-5.574858104348257275e-04, +-5.580976833965569208e-04, +-5.587086121486053427e-04, +-5.593185957560416676e-04, +-5.599276332854788473e-04, +-5.605357238052009142e-04, +-5.611428663850729932e-04, +-5.617490600965131115e-04, +-5.623543040125974753e-04, +-5.629585972079746009e-04, +-5.635619387588513282e-04, +-5.641643277431083970e-04, +-5.647657632402173968e-04, +-5.653662443312130114e-04, +-5.659657700988090286e-04, +-5.665643396272297466e-04, +-5.671619520024053472e-04, +-5.677586063118106752e-04, +-5.683543016445751763e-04, +-5.689490370914425648e-04, +-5.695428117447552110e-04, +-5.701356246984356016e-04, +-5.707274750480924828e-04, +-5.713183618909392202e-04, +-5.719082843257710302e-04, +-5.724972414530717741e-04, +-5.730852323748580500e-04, +-5.736722561948614466e-04, +-5.742583120183792494e-04, +-5.748433989523837277e-04, +-5.754275161054414698e-04, +-5.760106625877611970e-04, +-5.765928375111693685e-04, +-5.771740399891694875e-04, +-5.777542691368427880e-04, +-5.783335240709479817e-04, +-5.789118039098952373e-04, +-5.794891077736661657e-04, +-5.800654347839236504e-04, +-5.806407840639834410e-04, +-5.812151547388037451e-04, +-5.817885459349783975e-04, +-5.823609567807004313e-04, +-5.829323864058796054e-04, +-5.835028339420618481e-04, +-5.840722985223979237e-04, +-5.846407792817335299e-04, +-5.852082753565776389e-04, +-5.857747858850249770e-04, +-5.863403100068696489e-04, +-5.869048468635822613e-04, +-5.874683955982391240e-04, +-5.880309553556434645e-04, +-5.885925252821668082e-04, +-5.891531045259271139e-04, +-5.897126922366455496e-04, +-5.902712875657452644e-04, +-5.908288896663126816e-04, +-5.913854976930878497e-04, +-5.919411108024384216e-04, +-5.924957281524680748e-04, +-5.930493489029341116e-04, +-5.936019722152310885e-04, +-5.941535972524837313e-04, +-5.947042231794083750e-04, +-5.952538491624807977e-04, +-5.958024743697886609e-04, +-5.963500979711394961e-04, +-5.968967191380283952e-04, +-5.974423370435702485e-04, +-5.979869508625979728e-04, +-5.985305597716374668e-04, +-5.990731629489013223e-04, +-5.996147595742490344e-04, +-6.001553488292863140e-04, +-6.006949298972342251e-04, +-6.012335019630372793e-04, +-6.017710642133468476e-04, +-6.023076158365002356e-04, +-6.028431560225156957e-04, +-6.033776839630721530e-04, +-6.039111988516007116e-04, +-6.044436998832155910e-04, +-6.049751862546930928e-04, +-6.055056571645459768e-04, +-6.060351118129953798e-04, +-6.065635494019058728e-04, +-6.070909691348780508e-04, +-6.076173702172272834e-04, +-6.081427518559754742e-04, +-6.086671132598343642e-04, +-6.091904536391920880e-04, +-6.097127722061980665e-04, +-6.102340681747043518e-04, +-6.107543407602332095e-04, +-6.112735891800677576e-04, +-6.117918126531691342e-04, +-6.123090104002213829e-04, +-6.128251816436128046e-04, +-6.133403256074833375e-04, +-6.138544415176435667e-04, +-6.143675286016809763e-04, +-6.148795860888197620e-04, +-6.153906132100856298e-04, +-6.159006091981696204e-04, +-6.164095732875192902e-04, +-6.169175047143212560e-04, +-6.174244027164241082e-04, +-6.179302665334391329e-04, +-6.184350954067201461e-04, +-6.189388885793463630e-04, +-6.194416452960906311e-04, +-6.199433648035186347e-04, +-6.204440463498430694e-04, +-6.209436891850934285e-04, +-6.214422925609735388e-04, +-6.219398557309709563e-04, +-6.224363779502731578e-04, +-6.229318584758187149e-04, +-6.234262965662686713e-04, +-6.239196914820623789e-04, +-6.244120424853359663e-04, +-6.249033488399968229e-04, +-6.253936098117057101e-04, +-6.258828246678196233e-04, +-6.263709926774661688e-04, +-6.268581131115306612e-04, +-6.273441852426528713e-04, +-6.278292083452020889e-04, +-6.283131816952669318e-04, +-6.287961045707411061e-04, +-6.292779762512591126e-04, +-6.297587960181780329e-04, +-6.302385631546384608e-04, +-6.307172769455449872e-04, +-6.311949366775054847e-04, +-6.316715416389210962e-04, +-6.321470911199544677e-04, +-6.326215844125325678e-04, +-6.330950208103298818e-04, +-6.335673996087501977e-04, +-6.340387201050101977e-04, +-6.345089815980852485e-04, +-6.349781833886775258e-04, +-6.354463247792966783e-04, +-6.359134050742009563e-04, +-6.363794235793821408e-04, +-6.368443796026539063e-04, +-6.373082724535853588e-04, +-6.377711014434878090e-04, +-6.382328658854989059e-04, +-6.386935650944484131e-04, +-6.391531983870172608e-04, +-6.396117650816067913e-04, +-6.400692644984257119e-04, +-6.405256959594688446e-04, +-6.409810587884581454e-04, +-6.414353523109212005e-04, +-6.418885758541798426e-04, +-6.423407287473335619e-04, +-6.427918103212299080e-04, +-6.432418199085566468e-04, +-6.436907568437072111e-04, +-6.441386204629328139e-04, +-6.445854101042171151e-04, +-6.450311251073754257e-04, +-6.454757648139724168e-04, +-6.459193285673780647e-04, +-6.463618157127354498e-04, +-6.468032255970133405e-04, +-6.472435575689246615e-04, +-6.476828109790106272e-04, +-6.481209851796127701e-04, +-6.485580795248161281e-04, +-6.489940933705281743e-04, +-6.494290260744662409e-04, +-6.498628769961393038e-04, +-6.502956454968510189e-04, +-6.507273309396664372e-04, +-6.511579326895035108e-04, +-6.515874501130699929e-04, +-6.520158825788435969e-04, +-6.524432294571362893e-04, +-6.528694901200678352e-04, +-6.532946639415201538e-04, +-6.537187502972049719e-04, +-6.541417485646576447e-04, +-6.545636581231864147e-04, +-6.549844783539523173e-04, +-6.554042086398564242e-04, +-6.558228483656767778e-04, +-6.562403969179552007e-04, +-6.566568536850729727e-04, +-6.570722180572339177e-04, +-6.574864894264026037e-04, +-6.578996671863915130e-04, +-6.583117507328333949e-04, +-6.587227394631777963e-04, +-6.591326327766615714e-04, +-6.595414300743887874e-04, +-6.599491307592112452e-04, +-6.603557342358682336e-04, +-6.607612399108714948e-04, +-6.611656471925818779e-04, +-6.615689554911905823e-04, +-6.619711642186624535e-04, +-6.623722727888172986e-04, +-6.627722806173080936e-04, +-6.631711871216071060e-04, +-6.635689917209921249e-04, +-6.639656938366064179e-04, +-6.643612928913721028e-04, +-6.647557883100632236e-04, +-6.651491795192913297e-04, +-6.655414659474999470e-04, +-6.659326470249521098e-04, +-6.663227221837184338e-04, +-6.667116908577435785e-04, +-6.670995524827975660e-04, +-6.674863064964588677e-04, +-6.678719523381636269e-04, +-6.682564894491959014e-04, +-6.686399172726306336e-04, +-6.690222352534046669e-04, +-6.694034428383053605e-04, +-6.697835394759547607e-04, +-6.701625246168086249e-04, +-6.705403977131351714e-04, +-6.709171582190851186e-04, +-6.712928055906467991e-04, +-6.716673392856235001e-04, +-6.720407587637014426e-04, +-6.724130634863559981e-04, +-6.727842529169652044e-04, +-6.731543265207060077e-04, +-6.735232837646424079e-04, +-6.738911241176488058e-04, +-6.742578470504888245e-04, +-6.746234520357165384e-04, +-6.749879385477948685e-04, +-6.753513060629930164e-04, +-6.757135540594575883e-04, +-6.760746820171936212e-04, +-6.764346894180187217e-04, +-6.767935757456282255e-04, +-6.771513404855796945e-04, +-6.775079831252815319e-04, +-6.778635031539779121e-04, +-6.782179000628055926e-04, +-6.785711733447044678e-04, +-6.789233224945245794e-04, +-6.792743470089387297e-04, +-6.796242463865037392e-04, +-6.799730201276198973e-04, +-6.803206677345499361e-04, +-6.806671887114095973e-04, +-6.810125825642054714e-04, +-6.813568488007672348e-04, +-6.816999869308147620e-04, +-6.820419964659404531e-04, +-6.823828769195583845e-04, +-6.827226278069755414e-04, +-6.830612486453695913e-04, +-6.833987389537842221e-04, +-6.837350982531230706e-04, +-6.840703260661337845e-04, +-6.844044219174693884e-04, +-6.847373853336492528e-04, +-6.850692158430354579e-04, +-6.853999129758819083e-04, +-6.857294762643233827e-04, +-6.860579052423291298e-04, +-6.863851994457592469e-04, +-6.867113584123575240e-04, +-6.870363816817440716e-04, +-6.873602687953984068e-04, +-6.876830192966557672e-04, +-6.880046327307746566e-04, +-6.883251086448447962e-04, +-6.886444465878634527e-04, +-6.889626461107080076e-04, +-6.892797067660939988e-04, +-6.895956281086429917e-04, +-6.899104096948615455e-04, +-6.902240510831334072e-04, +-6.905365518337007544e-04, +-6.908479115087280556e-04, +-6.911581296722034071e-04, +-6.914672058900543259e-04, +-6.917751397300483289e-04, +-6.920819307618634054e-04, +-6.923875785570642732e-04, +-6.926920826890672509e-04, +-6.929954427331930580e-04, +-6.932976582666581416e-04, +-6.935987288685614488e-04, +-6.938986541198659957e-04, +-6.941974336034638111e-04, +-6.944950669040812850e-04, +-6.947915536083813012e-04, +-6.950868933048835480e-04, +-6.953810855840226318e-04, +-6.956741300381091538e-04, +-6.959660262613279755e-04, +-6.962567738497846227e-04, +-6.965463724014690728e-04, +-6.968348215162494669e-04, +-6.971221207958992142e-04, +-6.974082698440949328e-04, +-6.976932682663777429e-04, +-6.979771156701931661e-04, +-6.982598116648979555e-04, +-6.985413558617391706e-04, +-6.988217478738549364e-04, +-6.991009873162591561e-04, +-6.993790738058948539e-04, +-6.996560069615981791e-04, +-6.999317864040811681e-04, +-7.002064117559873629e-04, +-7.004798826418155927e-04, +-7.007521986880070348e-04, +-7.010233595228719224e-04, +-7.012933647766457067e-04, +-7.015622140814394003e-04, +-7.018299070712994249e-04, +-7.020964433821243449e-04, +-7.023618226517628791e-04, +-7.026260445199382235e-04, +-7.028891086282875161e-04, +-7.031510146203635717e-04, +-7.034117621415938992e-04, +-7.036713508393216843e-04, +-7.039297803628098010e-04, +-7.041870503632202119e-04, +-7.044431604936068122e-04, +-7.046981104089582561e-04, +-7.049518997661278086e-04, +-7.052045282239169377e-04, +-7.054559954430106956e-04, +-7.057063010860120883e-04, +-7.059554448174464123e-04, +-7.062034263037106222e-04, +-7.064502452131344798e-04, +-7.066959012159684111e-04, +-7.069403939843480530e-04, +-7.071837231923396808e-04, +-7.074258885159234039e-04, +-7.076668896329655180e-04, +-7.079067262232550430e-04, +-7.081453979685119627e-04, +-7.083829045523529645e-04, +-7.086192456603146407e-04, +-7.088544209798259502e-04, +-7.090884302002534298e-04, +-7.093212730128805937e-04, +-7.095529491108829977e-04, +-7.097834581893822320e-04, +-7.100127999453745807e-04, +-7.102409740778107107e-04, +-7.104679802875306198e-04, +-7.106938182773074380e-04, +-7.109184877518342008e-04, +-7.111419884177107298e-04, +-7.113643199834413563e-04, +-7.115854821594725429e-04, +-7.118054746581689227e-04, +-7.120242971937941088e-04, +-7.122419494825552554e-04, +-7.124584312425542680e-04, +-7.126737421938197882e-04, +-7.128878820583127223e-04, +-7.131008505599110633e-04, +-7.133126474244005661e-04, +-7.135232723795115022e-04, +-7.137327251548593538e-04, +-7.139410054820195155e-04, +-7.141481130944621336e-04, +-7.143540477275936310e-04, +-7.145588091187531294e-04, +-7.147623970071738516e-04, +-7.149648111340273574e-04, +-7.151660512424141102e-04, +-7.153661170773585988e-04, +-7.155650083857950259e-04, +-7.157627249166069894e-04, +-7.159592664205696949e-04, +-7.161546326504115382e-04, +-7.163488233607708455e-04, +-7.165418383082256893e-04, +-7.167336772512627715e-04, +-7.169243399503096243e-04, +-7.171138261677046863e-04, +-7.173021356677332979e-04, +-7.174892682165894290e-04, +-7.176752235824040852e-04, +-7.178600015352444401e-04, +-7.180436018470793581e-04, +-7.182260242918215697e-04, +-7.184072686453176967e-04, +-7.185873346853391451e-04, +-7.187662221915844902e-04, +-7.189439309456664663e-04, +-7.191204607311522988e-04, +-7.192958113335270586e-04, +-7.194699825402026605e-04, +-7.196429741405331506e-04, +-7.198147859257804457e-04, +-7.199854176891578098e-04, +-7.201548692257966769e-04, +-7.203231403327673603e-04, +-7.204902308090711371e-04, +-7.206561404556387305e-04, +-7.208208690753180586e-04, +-7.209844164729135906e-04, +-7.211467824551417863e-04, +-7.213079668306609116e-04, +-7.214679694100696291e-04, +-7.216267900058753390e-04, +-7.217844284325337532e-04, +-7.219408845064324148e-04, +-7.220961580458969869e-04, +-7.222502488711693511e-04, +-7.224031568044489166e-04, +-7.225548816698359154e-04, +-7.227054232933997078e-04, +-7.228547815031145969e-04, +-7.230029561289077512e-04, +-7.231499470026416399e-04, +-7.232957539580911564e-04, +-7.234403768309823242e-04, +-7.235838154589748416e-04, +-7.237260696816683698e-04, +-7.238671393405809572e-04, +-7.240070242791840594e-04, +-7.241457243428642667e-04, +-7.242832393789640699e-04, +-7.244195692367449979e-04, +-7.245547137674165656e-04, +-7.246886728241209866e-04, +-7.248214462619236324e-04, +-7.249530339378404626e-04, +-7.250834357108223039e-04, +-7.252126514417441168e-04, +-7.253406809934427255e-04, +-7.254675242306538258e-04, +-7.255931810200826754e-04, +-7.257176512303511844e-04, +-7.258409347320275143e-04, +-7.259630313976195726e-04, +-7.260839411015629786e-04, +-7.262036637202284352e-04, +-7.263221991319288853e-04, +-7.264395472169249326e-04, +-7.265557078573932912e-04, +-7.266706809374673349e-04, +-7.267844663431982828e-04, +-7.268970639625928210e-04, +-7.270084736855833953e-04, +-7.271186954040469684e-04, +-7.272277290117909248e-04, +-7.273355744045743214e-04, +-7.274422314800680972e-04, +-7.275477001379066812e-04, +-7.276519802796497204e-04, +-7.277550718087948730e-04, +-7.278569746307875666e-04, +-7.279576886529942181e-04, +-7.280572137847284714e-04, +-7.281555499372456683e-04, +-7.282526970237340660e-04, +-7.283486549593168975e-04, +-7.284434236610685259e-04, +-7.285370030479790997e-04, +-7.286293930409957521e-04, +-7.287205935629965806e-04, +-7.288106045387971518e-04, +-7.288994258951600426e-04, +-7.289870575607686025e-04, +-7.290734994662553597e-04, +-7.291587515441919380e-04, +-7.292428137290821177e-04, +-7.293256859573760392e-04, +-7.294073681674487350e-04, +-7.294878602996262597e-04, +-7.295671622961630298e-04, +-7.296452741012603637e-04, +-7.297221956610503270e-04, +-7.297979269236092850e-04, +-7.298724678389367608e-04, +-7.299458183589878531e-04, +-7.300179784376489497e-04, +-7.300889480307382702e-04, +-7.301587270960249471e-04, +-7.302273155931967175e-04, +-7.302947134838951590e-04, +-7.303609207316904281e-04, +-7.304259373020975232e-04, +-7.304897631625626234e-04, +-7.305523982824725215e-04, +-7.306138426331451911e-04, +-7.306740961878431225e-04, +-7.307331589217652993e-04, +-7.307910308120404768e-04, +-7.308477118377453962e-04, +-7.309032019798812575e-04, +-7.309575012213945363e-04, +-7.310106095471666839e-04, +-7.310625269440164040e-04, +-7.311132534006927136e-04, +-7.311627889078922910e-04, +-7.312111334582357307e-04, +-7.312582870462871684e-04, +-7.313042496685449563e-04, +-7.313490213234451328e-04, +-7.313926020113590372e-04, +-7.314349917345900568e-04, +-7.314761904973767718e-04, +-7.315161983059000018e-04, +-7.315550151682721812e-04, +-7.315926410945393105e-04, +-7.316290760966863774e-04, +-7.316643201886255388e-04, +-7.316983733862120589e-04, +-7.317312357072315154e-04, +-7.317629071714069552e-04, +-7.317933878003905464e-04, +-7.318226776177729018e-04, +-7.318507766490797185e-04, +-7.318776849217662481e-04, +-7.319034024652225009e-04, +-7.319279293107783420e-04, +-7.319512654916841918e-04, +-7.319734110431363973e-04, +-7.319943660022573901e-04, +-7.320141304081024093e-04, +-7.320327043016621035e-04, +-7.320500877258599281e-04, +-7.320662807255485681e-04, +-7.320812833475130819e-04, +-7.320950956404751299e-04, +-7.321077176550805062e-04, +-7.321191494439132329e-04, +-7.321293910614837426e-04, +-7.321384425642356005e-04, +-7.321463040105453957e-04, +-7.321529754607165614e-04, +-7.321584569769845792e-04, +-7.321627486235178462e-04, +-7.321658504664059659e-04, +-7.321677625736783962e-04, +-7.321684850152907886e-04, +-7.321680178631246629e-04, +-7.321663611909958640e-04, +-7.321635150746437200e-04, +-7.321594795917406914e-04, +-7.321542548218857574e-04, +-7.321478408466036572e-04, +-7.321402377493536721e-04, +-7.321314456155124948e-04, +-7.321214645323952629e-04, +-7.321102945892339836e-04, +-7.320979358771962904e-04, +-7.320843884893704807e-04, +-7.320696525207731056e-04, +-7.320537280683469096e-04, +-7.320366152309580121e-04, +-7.320183141094004607e-04, +-7.319988248063961228e-04, +-7.319781474265856869e-04, +-7.319562820765384203e-04, +-7.319332288647444713e-04, +-7.319089879016218081e-04, +-7.318835592995119902e-04, +-7.318569431726763743e-04, +-7.318291396373012092e-04, +-7.318001488114960103e-04, +-7.317699708152957273e-04, +-7.317386057706502279e-04, +-7.317060538014373084e-04, +-7.316723150334522845e-04, +-7.316373895944164492e-04, +-7.316012776139672056e-04, +-7.315639792236642474e-04, +-7.315254945569886914e-04, +-7.314858237493425354e-04, +-7.314449669380416108e-04, +-7.314029242623256658e-04, +-7.313596958633535950e-04, +-7.313152818842000779e-04, +-7.312696824698605670e-04, +-7.312228977672444565e-04, +-7.311749279251855997e-04, +-7.311257730944276719e-04, +-7.310754334276355548e-04, +-7.310239090793854699e-04, +-7.309712002061775557e-04, +-7.309173069664204716e-04, +-7.308622295204414811e-04, +-7.308059680304831995e-04, +-7.307485226606983894e-04, +-7.306898935771606943e-04, +-7.306300809478482672e-04, +-7.305690849426631781e-04, +-7.305069057334155841e-04, +-7.304435434938263321e-04, +-7.303789983995282592e-04, +-7.303132706280672775e-04, +-7.302463603589079031e-04, +-7.301782677734122229e-04, +-7.301089930548598436e-04, +-7.300385363884416036e-04, +-7.299668979612562118e-04, +-7.298940779623087297e-04, +-7.298200765825204380e-04, +-7.297448940147148498e-04, +-7.296685304536234574e-04, +-7.295909860958886594e-04, +-7.295122611400573637e-04, +-7.294323557865856501e-04, +-7.293512702378345414e-04, +-7.292690046980680523e-04, +-7.291855593734601279e-04, +-7.291009344720840186e-04, +-7.290151302039224717e-04, +-7.289281467808632863e-04, +-7.288399844166933497e-04, +-7.287506433271021076e-04, +-7.286601237296873096e-04, +-7.285684258439389634e-04, +-7.284755498912595011e-04, +-7.283814960949471905e-04, +-7.282862646802031829e-04, +-7.281898558741255493e-04, +-7.280922699057117749e-04, +-7.279935070058585417e-04, +-7.278935674073698601e-04, +-7.277924513449397217e-04, +-7.276901590551580626e-04, +-7.275866907765162926e-04, +-7.274820467494003563e-04, +-7.273762272160956121e-04, +-7.272692324207831460e-04, +-7.271610626095352178e-04, +-7.270517180303158033e-04, +-7.269411989329957729e-04, +-7.268295055693236185e-04, +-7.267166381929578709e-04, +-7.266025970594335980e-04, +-7.264873824261899437e-04, +-7.263709945525495277e-04, +-7.262534336997270110e-04, +-7.261347001308340833e-04, +-7.260147941108679700e-04, +-7.258937159067145768e-04, +-7.257714657871448035e-04, +-7.256480440228211572e-04, +-7.255234508863037156e-04, +-7.253976866520251907e-04, +-7.252707515963089258e-04, +-7.251426459973656438e-04, +-7.250133701352942054e-04, +-7.248829242920717432e-04, +-7.247513087515658047e-04, +-7.246185237995274135e-04, +-7.244845697235834797e-04, +-7.243494468132521957e-04, +-7.242131553599256890e-04, +-7.240756956568888871e-04, +-7.239370679992939307e-04, +-7.237972726841837004e-04, +-7.236563100104765299e-04, +-7.235141802789639290e-04, +-7.233708837923226182e-04, +-7.232264208551135529e-04, +-7.230807917737614322e-04, +-7.229339968565729130e-04, +-7.227860364137330329e-04, +-7.226369107572964273e-04, +-7.224866202012016417e-04, +-7.223351650612493385e-04, +-7.221825456551269088e-04, +-7.220287623023814759e-04, +-7.218738153244427715e-04, +-7.217177050445983079e-04, +-7.215604317880288309e-04, +-7.214019958817645189e-04, +-7.212423976547159901e-04, +-7.210816374376584738e-04, +-7.209197155632311596e-04, +-7.207566323659515091e-04, +-7.205923881822038713e-04, +-7.204269833502286412e-04, +-7.202604182101327761e-04, +-7.200926931038946748e-04, +-7.199238083753608164e-04, +-7.197537643702341592e-04, +-7.195825614360743579e-04, +-7.194101999223189055e-04, +-7.192366801802545099e-04, +-7.190620025630268522e-04, +-7.188861674256593432e-04, +-7.187091751250204892e-04, +-7.185310260198399376e-04, +-7.183517204707017554e-04, +-7.181712588400516930e-04, +-7.179896414922052076e-04, +-7.178068687933060466e-04, +-7.176229411113790478e-04, +-7.174378588162893741e-04, +-7.172516222797512952e-04, +-7.170642318753461851e-04, +-7.168756879785097291e-04, +-7.166859909665154434e-04, +-7.164951412184914804e-04, +-7.163031391154240984e-04, +-7.161099850401344592e-04, +-7.159156793773163588e-04, +-7.157202225134861370e-04, +-7.155236148370253948e-04, +-7.153258567381545405e-04, +-7.151269486089330057e-04, +-7.149268908432759428e-04, +-7.147256838369507549e-04, +-7.145233279875477144e-04, +-7.143198236945094530e-04, +-7.141151713591262998e-04, +-7.139093713845150310e-04, +-7.137024241756548650e-04, +-7.134943301393420348e-04, +-7.132850896842319634e-04, +-7.130747032207975216e-04, +-7.128631711613610126e-04, +-7.126504939200917861e-04, +-7.124366719129747970e-04, +-7.122217055578367343e-04, +-7.120055952743455877e-04, +-7.117883414839957937e-04, +-7.115699446101046580e-04, +-7.113504050778505193e-04, +-7.111297233142225508e-04, +-7.109078997480363727e-04, +-7.106849348099435930e-04, +-7.104608289324202070e-04, +-7.102355825497906660e-04, +-7.100091960981798475e-04, +-7.097816700155431960e-04, +-7.095530047416766977e-04, +-7.093232007181841372e-04, +-7.090922583885018180e-04, +-7.088601781978885871e-04, +-7.086269605934307145e-04, +-7.083926060240152214e-04, +-7.081571149403759593e-04, +-7.079204877950386401e-04, +-7.076827250423812273e-04, +-7.074438271385667144e-04, +-7.072037945415965768e-04, +-7.069626277112783536e-04, +-7.067203271092322618e-04, +-7.064768931988975927e-04, +-7.062323264455414940e-04, +-7.059866273162196133e-04, +-7.057397962798069978e-04, +-7.054918338069989621e-04, +-7.052427403702807296e-04, +-7.049925164439789331e-04, +-7.047411625041961284e-04, +-7.044886790288624025e-04, +-7.042350664977063170e-04, +-7.039803253922551247e-04, +-7.037244561958491901e-04, +-7.034674593936483854e-04, +-7.032093354725833020e-04, +-7.029500849214131465e-04, +-7.026897082306842162e-04, +-7.024282058927327176e-04, +-7.021655784017255325e-04, +-7.019018262536072007e-04, +-7.016369499461226882e-04, +-7.013709499788058944e-04, +-7.011038268529919040e-04, +-7.008355810718312979e-04, +-7.005662131402360521e-04, +-7.002957235649220381e-04, +-7.000241128544092400e-04, +-6.997513815189924805e-04, +-6.994775300707521551e-04, +-6.992025590235846980e-04, +-6.989264688931607315e-04, +-6.986492601969273436e-04, +-6.983709334541230492e-04, +-6.980914891857731286e-04, +-6.978109279147064322e-04, +-6.975292501655068087e-04, +-6.972464564645440045e-04, +-6.969625473399880837e-04, +-6.966775233217686620e-04, +-6.963913849416017952e-04, +-6.961041327330025558e-04, +-6.958157672312342921e-04, +-6.955262889733403956e-04, +-6.952356984981611062e-04, +-6.949439963462785428e-04, +-6.946511830600905378e-04, +-6.943572591837280207e-04, +-6.940622252631224558e-04, +-6.937660818459544503e-04, +-6.934688294816798845e-04, +-6.931704687215262247e-04, +-6.928710001185043417e-04, +-6.925704242273679609e-04, +-6.922687416046345880e-04, +-6.919659528086103371e-04, +-6.916620583993326847e-04, +-6.913570589386475564e-04, +-6.910509549901101226e-04, +-6.907437471190752210e-04, +-6.904354358926310031e-04, +-6.901260218796434953e-04, +-6.898155056507256988e-04, +-6.895038877782548288e-04, +-6.891911688363479196e-04, +-6.888773494008990127e-04, +-6.885624300495369818e-04, +-6.882464113616322543e-04, +-6.879292939183464682e-04, +-6.876110783025661186e-04, +-6.872917650989223987e-04, +-6.869713548937949948e-04, +-6.866498482753126279e-04, +-6.863272458333758222e-04, +-6.860035481595932625e-04, +-6.856787558473277644e-04, +-6.853528694916975750e-04, +-6.850258896895500271e-04, +-6.846978170394599130e-04, +-6.843686521417808753e-04, +-6.840383955985792708e-04, +-6.837070480136587820e-04, +-6.833746099925516347e-04, +-6.830410821425355120e-04, +-6.827064650726437454e-04, +-6.823707593935989619e-04, +-6.820339657178922307e-04, +-6.816960846597239741e-04, +-6.813571168350218569e-04, +-6.810170628614517366e-04, +-6.806759233584273134e-04, +-6.803336989470517996e-04, +-6.799903902501622634e-04, +-6.796459978923420978e-04, +-6.793005224998575941e-04, +-6.789539647007524848e-04, +-6.786063251247355117e-04, +-6.782576044032759439e-04, +-6.779078031695370083e-04, +-6.775569220583905258e-04, +-6.772049617064637489e-04, +-6.768519227520744183e-04, +-6.764978058352515795e-04, +-6.761426115977308120e-04, +-6.757863406829849127e-04, +-6.754289937361561327e-04, +-6.750705714041555991e-04, +-6.747110743355443779e-04, +-6.743505031806273659e-04, +-6.739888585913887805e-04, +-6.736261412215279387e-04, +-6.732623517264783386e-04, +-6.728974907633278628e-04, +-6.725315589908800349e-04, +-6.721645570696560806e-04, +-6.717964856618578468e-04, +-6.714273454313722479e-04, +-6.710571370438294866e-04, +-6.706858611665201132e-04, +-6.703135184684306950e-04, +-6.699401096202335171e-04, +-6.695656352943037126e-04, +-6.691900961647325981e-04, +-6.688134929072562249e-04, +-6.684358261993094807e-04, +-6.680570967200381242e-04, +-6.676773051502402382e-04, +-6.672964521724242346e-04, +-6.669145384707684133e-04, +-6.665315647311491516e-04, +-6.661475316410933080e-04, +-6.657624398898422981e-04, +-6.653762901682737070e-04, +-6.649890831689994099e-04, +-6.646008195862498870e-04, +-6.642115001159737539e-04, +-6.638211254557646861e-04, +-6.634296963048814770e-04, +-6.630372133642959591e-04, +-6.626436773366252420e-04, +-6.622490889261436380e-04, +-6.618534488387946974e-04, +-6.614567577822135424e-04, +-6.610590164656555273e-04, +-6.606602256001020560e-04, +-6.602603858981313453e-04, +-6.598594980740335675e-04, +-6.594575628437255232e-04, +-6.590545809247776382e-04, +-6.586505530364576569e-04, +-6.582454798996666741e-04, +-6.578393622369401112e-04, +-6.574322007725030099e-04, +-6.570239962322054145e-04, +-6.566147493435380922e-04, +-6.562044608356879362e-04, +-6.557931314394613125e-04, +-6.553807618873055268e-04, +-6.549673529133096927e-04, +-6.545529052532153558e-04, +-6.541374196444387206e-04, +-6.537208968259910699e-04, +-6.533033375385292885e-04, +-6.528847425243815587e-04, +-6.524651125274823086e-04, +-6.520444482933973650e-04, +-6.516227505693679726e-04, +-6.512000201042482351e-04, +-6.507762576485089101e-04, +-6.503514639542582257e-04, +-6.499256397752398206e-04, +-6.494987858668526933e-04, +-6.490709029860785607e-04, +-6.486419918915350925e-04, +-6.482120533434893549e-04, +-6.477810881037966619e-04, +-6.473490969359525088e-04, +-6.469160806051016789e-04, +-6.464820398779585553e-04, +-6.460469755228668599e-04, +-6.456108883098146158e-04, +-6.451737790103591200e-04, +-6.447356483977351475e-04, +-6.442964972467220275e-04, +-6.438563263337644237e-04, +-6.434151364368828879e-04, +-6.429729283356957602e-04, +-6.425297028114793432e-04, +-6.420854606470847428e-04, +-6.416402026269584684e-04, +-6.411939295371524078e-04, +-6.407466421653425833e-04, +-6.402983413007646424e-04, +-6.398490277343116522e-04, +-6.393987022584145122e-04, +-6.389473656671431105e-04, +-6.384950187561275019e-04, +-6.380416623226142867e-04, +-6.375872971654359279e-04, +-6.371319240850260380e-04, +-6.366755438833742765e-04, +-6.362181573641017022e-04, +-6.357597653323803248e-04, +-6.353003685949604271e-04, +-6.348399679602262933e-04, +-6.343785642381108815e-04, +-6.339161582401215203e-04, +-6.334527507793394742e-04, +-6.329883426704408693e-04, +-6.325229347297013551e-04, +-6.320565277749234630e-04, +-6.315891226254958038e-04, +-6.311207201024061865e-04, +-6.306513210281824208e-04, +-6.301809262269133507e-04, +-6.297095365243067511e-04, +-6.292371527476025911e-04, +-6.287637757255881048e-04, +-6.282894062886537363e-04, +-6.278140452686997892e-04, +-6.273376934992615445e-04, +-6.268603518153598566e-04, +-6.263820210536209581e-04, +-6.259027020522050112e-04, +-6.254223956508079500e-04, +-6.249411026907331470e-04, +-6.244588240148080376e-04, +-6.239755604673948540e-04, +-6.234913128944073214e-04, +-6.230060821433364626e-04, +-6.225198690631698244e-04, +-6.220326745045107403e-04, +-6.215444993194280598e-04, +-6.210553443615917822e-04, +-6.205652104861758035e-04, +-6.200740985498832871e-04, +-6.195820094110042345e-04, +-6.190889439293385072e-04, +-6.185949029662042836e-04, +-6.180998873844521530e-04, +-6.176038980484967753e-04, +-6.171069358242312281e-04, +-6.166090015791386800e-04, +-6.161100961821947041e-04, +-6.156102205038924309e-04, +-6.151093754162467774e-04, +-6.146075617928053970e-04, +-6.141047805086672197e-04, +-6.136010324404010284e-04, +-6.130963184660995604e-04, +-6.125906394654036854e-04, +-6.120839963194386543e-04, +-6.115763899108291697e-04, +-6.110678211237670398e-04, +-6.105582908439215152e-04, +-6.100477999584582624e-04, +-6.095363493560503141e-04, +-6.090239399268838156e-04, +-6.085105725626869730e-04, +-6.079962481566331253e-04, +-6.074809676034031948e-04, +-6.069647317992130087e-04, +-6.064475416417239610e-04, +-6.059293980301653105e-04, +-6.054103018651860787e-04, +-6.048902540489803836e-04, +-6.043692554851947405e-04, +-6.038473070790067749e-04, +-6.033244097370224403e-04, +-6.028005643674214098e-04, +-6.022757718797812181e-04, +-6.017500331852231954e-04, +-6.012233491963186842e-04, +-6.006957208271002059e-04, +-6.001671489931446196e-04, +-5.996376346114660029e-04, +-5.991071786005459010e-04, +-5.985757818803374465e-04, +-5.980434453723005965e-04, +-5.975101699993104086e-04, +-5.969759566857900726e-04, +-5.964408063575492563e-04, +-5.959047199419239670e-04, +-5.953676983676660719e-04, +-5.948297425650238539e-04, +-5.942908534656978848e-04, +-5.937510320028607574e-04, +-5.932102791111026592e-04, +-5.926685957265217944e-04, +-5.921259827866351541e-04, +-5.915824412303980319e-04, +-5.910379719982818700e-04, +-5.904925760321639953e-04, +-5.899462542753700122e-04, +-5.893990076726592737e-04, +-5.888508371702579503e-04, +-5.883017437158661852e-04, +-5.877517282585686476e-04, +-5.872007917489000190e-04, +-5.866489351388715556e-04, +-5.860961593818920503e-04, +-5.855424654327981903e-04, +-5.849878542479177660e-04, +-5.844323267849733938e-04, +-5.838758840031069109e-04, +-5.833185268628895666e-04, +-5.827602563263304791e-04, +-5.822010733569021141e-04, +-5.816409789194267694e-04, +-5.810799739802087385e-04, +-5.805180595069367325e-04, +-5.799552364687080583e-04, +-5.793915058360950797e-04, +-5.788268685810488319e-04, +-5.782613256769248257e-04, +-5.776948780984874927e-04, +-5.771275268219523604e-04, +-5.765592728248764400e-04, +-5.759901170863157603e-04, +-5.754200605866422466e-04, +-5.748491043076916053e-04, +-5.742772492326693240e-04, +-5.737044963461641152e-04, +-5.731308466342299908e-04, +-5.725563010842748060e-04, +-5.719808606850948452e-04, +-5.714045264268766654e-04, +-5.708272993012361270e-04, +-5.702491803011175637e-04, +-5.696701704209430764e-04, +-5.690902706564299543e-04, +-5.685094820047465825e-04, +-5.679278054643923128e-04, +-5.673452420352879944e-04, +-5.667617927187190534e-04, +-5.661774585173641157e-04, +-5.655922404352392791e-04, +-5.650061394777861502e-04, +-5.644191566517823980e-04, +-5.638312929653622454e-04, +-5.632425494280945315e-04, +-5.626529270508773273e-04, +-5.620624268459633059e-04, +-5.614710498269665732e-04, +-5.608787970088818580e-04, +-5.602856694080964386e-04, +-5.596916680422998284e-04, +-5.590967939305445996e-04, +-5.585010480932858486e-04, +-5.579044315522594397e-04, +-5.573069453306518997e-04, +-5.567085904529052616e-04, +-5.561093679448728642e-04, +-5.555092788337106071e-04, +-5.549083241479655293e-04, +-5.543065049174645707e-04, +-5.537038221734674444e-04, +-5.531002769484856833e-04, +-5.524958702764291157e-04, +-5.518906031925067696e-04, +-5.512844767332517005e-04, +-5.506774919365934164e-04, +-5.500696498417526016e-04, +-5.494609514892676797e-04, +-5.488513979210039211e-04, +-5.482409901801933412e-04, +-5.476297293113207513e-04, +-5.470176163602965798e-04, +-5.464046523742449113e-04, +-5.457908384016871501e-04, +-5.451761754924145179e-04, +-5.445606646975244833e-04, +-5.439443070694911266e-04, +-5.433271036620612726e-04, +-5.427090555302796450e-04, +-5.420901637304955875e-04, +-5.414704293204105527e-04, +-5.408498533589542858e-04, +-5.402284369064477799e-04, +-5.396061810244703535e-04, +-5.389830867758859962e-04, +-5.383591552248557285e-04, +-5.377343874368482272e-04, +-5.371087844786705083e-04, +-5.364823474183471469e-04, +-5.358550773252131931e-04, +-5.352269752699287007e-04, +-5.345980423243713907e-04, +-5.339682795618010168e-04, +-5.333376880566618235e-04, +-5.327062688847509228e-04, +-5.320740231230993572e-04, +-5.314409518500180698e-04, +-5.308070561451057106e-04, +-5.301723370892756334e-04, +-5.295367957646456318e-04, +-5.289004332546148098e-04, +-5.282632506438925298e-04, +-5.276252490183859804e-04, +-5.269864294653626990e-04, +-5.263467930732547645e-04, +-5.257063409318277159e-04, +-5.250650741320442684e-04, +-5.244229937661860691e-04, +-5.237801009277170874e-04, +-5.231363967114516667e-04, +-5.224918822133575247e-04, +-5.218465585307248888e-04, +-5.212004267620452824e-04, +-5.205534880070448100e-04, +-5.199057433667613522e-04, +-5.192571939434360373e-04, +-5.186078408405332988e-04, +-5.179576851627580060e-04, +-5.173067280160888572e-04, +-5.166549705076763565e-04, +-5.160024137459950358e-04, +-5.153490588406553453e-04, +-5.146949069025661761e-04, +-5.140399590438095257e-04, +-5.133842163777300538e-04, +-5.127276800188828232e-04, +-5.120703510830619228e-04, +-5.114122306872363917e-04, +-5.107533199496480138e-04, +-5.100936199897131975e-04, +-5.094331319280468286e-04, +-5.087718568865495479e-04, +-5.081097959882851286e-04, +-5.074469503575148449e-04, +-5.067833211197030020e-04, +-5.061189094015359092e-04, +-5.054537163309449736e-04, +-5.047877430369851611e-04, +-5.041209906499294303e-04, +-5.034534603012901996e-04, +-5.027851531237006273e-04, +-5.021160702510901437e-04, +-5.014462128184744415e-04, +-5.007755819621338266e-04, +-5.001041788194890772e-04, +-4.994320045291526181e-04, +-4.987590602309244009e-04, +-4.980853470658380905e-04, +-4.974108661760148070e-04, +-4.967356187048285743e-04, +-4.960596057967838054e-04, +-4.953828285975429499e-04, +-4.947052882540151813e-04, +-4.940269859142347496e-04, +-4.933479227273877615e-04, +-4.926680998438280092e-04, +-4.919875184151157850e-04, +-4.913061795939008963e-04, +-4.906240845340957037e-04, +-4.899412343906681469e-04, +-4.892576303198145670e-04, +-4.885732734788426120e-04, +-4.878881650261954151e-04, +-4.872023061215428300e-04, +-4.865156979256564764e-04, +-4.858283416004416161e-04, +-4.851402383089439829e-04, +-4.844513892154027465e-04, +-4.837617954851173175e-04, +-4.830714582846304156e-04, +-4.823803787815202819e-04, +-4.816885581445716578e-04, +-4.809959975436439456e-04, +-4.803026981497530664e-04, +-4.796086611350943362e-04, +-4.789138876729110610e-04, +-4.782183789375864767e-04, +-4.775221361046715594e-04, +-4.768251603507631066e-04, +-4.761274528536840397e-04, +-4.754290147922662934e-04, +-4.747298473465322560e-04, +-4.740299516975719839e-04, +-4.733293290275841845e-04, +-4.726279805198967620e-04, +-4.719259073589858445e-04, +-4.712231107303567392e-04, +-4.705195918206345716e-04, +-4.698153518175885715e-04, +-4.691103919100130817e-04, +-4.684047132879050964e-04, +-4.676983171422476916e-04, +-4.669912046651963455e-04, +-4.662833770499336008e-04, +-4.655748354907934231e-04, +-4.648655811831194410e-04, +-4.641556153234495863e-04, +-4.634449391092911757e-04, +-4.627335537393176940e-04, +-4.620214604132275764e-04, +-4.613086603317841615e-04, +-4.605951546969018311e-04, +-4.598809447115228448e-04, +-4.591660315796423312e-04, +-4.584504165063251467e-04, +-4.577341006977507076e-04, +-4.570170853610808258e-04, +-4.562993717046554616e-04, +-4.555809609377605416e-04, +-4.548618542708210552e-04, +-4.541420529152713297e-04, +-4.534215580835820273e-04, +-4.527003709893591865e-04, +-4.519784928472093477e-04, +-4.512559248727553282e-04, +-4.505326682827305476e-04, +-4.498087242948342872e-04, +-4.490840941279149201e-04, +-4.483587790017559975e-04, +-4.476327801372541673e-04, +-4.469060987562963332e-04, +-4.461787360818019387e-04, +-4.454506933377411280e-04, +-4.447219717491576762e-04, +-4.439925725420459869e-04, +-4.432624969434425990e-04, +-4.425317461814567066e-04, +-4.418003214851329535e-04, +-4.410682240846560765e-04, +-4.403354552111105914e-04, +-4.396020160966803954e-04, +-4.388679079745102596e-04, +-4.381331320787601479e-04, +-4.373976896446128606e-04, +-4.366615819083085118e-04, +-4.359248101070123654e-04, +-4.351873754789048238e-04, +-4.344492792632212723e-04, +-4.337105227001120003e-04, +-4.329711070308196849e-04, +-4.322310334975364935e-04, +-4.314903033434302668e-04, +-4.307489178126580717e-04, +-4.300068781504165624e-04, +-4.292641856028045033e-04, +-4.285208414170201484e-04, +-4.277768468411326372e-04, +-4.270322031242680433e-04, +-4.262869115164846377e-04, +-4.255409732688001019e-04, +-4.247943896332881841e-04, +-4.240471618629419281e-04, +-4.232992912117130289e-04, +-4.225507789345170915e-04, +-4.218016262872845883e-04, +-4.210518345268280446e-04, +-4.203014049110381160e-04, +-4.195503386986465283e-04, +-4.187986371494250822e-04, +-4.180463015240361421e-04, +-4.172933330841424116e-04, +-4.165397330923442123e-04, +-4.157855028122022520e-04, +-4.150306435081782108e-04, +-4.142751564457421306e-04, +-4.135190428912246391e-04, +-4.127623041120106421e-04, +-4.120049413763110990e-04, +-4.112469559533521619e-04, +-4.104883491132458847e-04, +-4.097291221270334279e-04, +-4.089692762667068520e-04, +-4.082088128052298792e-04, +-4.074477330164148368e-04, +-4.066860381750071708e-04, +-4.059237295567289221e-04, +-4.051608084381331186e-04, +-4.043972760968117248e-04, +-4.036331338111481728e-04, +-4.028683828605287274e-04, +-4.021030245251938423e-04, +-4.013370600862948634e-04, +-4.005704908259079614e-04, +-3.998033180270604771e-04, +-3.990355429735818445e-04, +-3.982671669502862240e-04, +-3.974981912428344837e-04, +-3.967286171377645571e-04, +-3.959584459225934665e-04, +-3.951876788856789786e-04, +-3.944163173162500168e-04, +-3.936443625044222191e-04, +-3.928718157412481910e-04, +-3.920986783185761255e-04, +-3.913249515292563439e-04, +-3.905506366668933926e-04, +-3.897757350260598478e-04, +-3.890002479021451237e-04, +-3.882241765913964013e-04, +-3.874475223910143627e-04, +-3.866702865990176668e-04, +-3.858924705142705415e-04, +-3.851140754365025166e-04, +-3.843351026663210002e-04, +-3.835555535052408778e-04, +-3.827754292555520768e-04, +-3.819947312204125911e-04, +-3.812134607038862653e-04, +-3.804316190108167567e-04, +-3.796492074469311846e-04, +-3.788662273188535745e-04, +-3.780826799339651045e-04, +-3.772985666005079721e-04, +-3.765138886276101133e-04, +-3.757286473251548824e-04, +-3.749428440039800025e-04, +-3.741564799756338911e-04, +-3.733695565525827972e-04, +-3.725820750480686081e-04, +-3.717940367761619750e-04, +-3.710054430517704992e-04, +-3.702162951906787930e-04, +-3.694265945094017873e-04, +-3.686363423252926098e-04, +-3.678455399565677382e-04, +-3.670541887221725596e-04, +-3.662622899419824352e-04, +-3.654698449365629295e-04, +-3.646768550273690322e-04, +-3.638833215365932616e-04, +-3.630892457872993465e-04, +-3.622946291032607888e-04, +-3.614994728091749931e-04, +-3.607037782304102144e-04, +-3.599075466932144833e-04, +-3.591107795245765031e-04, +-3.583134780522543813e-04, +-3.575156436048817729e-04, +-3.567172775118226512e-04, +-3.559183811032062199e-04, +-3.551189557099426329e-04, +-3.543190026637350843e-04, +-3.535185232971176463e-04, +-3.527175189433071133e-04, +-3.519159909363101749e-04, +-3.511139406109564849e-04, +-3.503113693027872584e-04, +-3.495082783480908347e-04, +-3.487046690840070310e-04, +-3.479005428483820765e-04, +-3.470959009797844959e-04, +-3.462907448176101143e-04, +-3.454850757019181802e-04, +-3.446788949736423512e-04, +-3.438722039743433330e-04, +-3.430650040464168840e-04, +-3.422572965329477189e-04, +-3.414490827777646401e-04, +-3.406403641254526272e-04, +-3.398311419213904581e-04, +-3.390214175116000594e-04, +-3.382111922428569328e-04, +-3.374004674627188857e-04, +-3.365892445193850312e-04, +-3.357775247619060690e-04, +-3.349653095399300401e-04, +-3.341526002039192211e-04, +-3.333393981049993121e-04, +-3.325257045950152186e-04, +-3.317115210265441164e-04, +-3.308968487529309046e-04, +-3.300816891281418389e-04, +-3.292660435068685059e-04, +-3.284499132445636567e-04, +-3.276332996972933210e-04, +-3.268162042219346745e-04, +-3.259986281760102102e-04, +-3.251805729177209689e-04, +-3.243620398059631816e-04, +-3.235430302003806371e-04, +-3.227235454612175009e-04, +-3.219035869495315240e-04, +-3.210831560269424532e-04, +-3.202622540558419336e-04, +-3.194408823992494172e-04, +-3.186190424208468035e-04, +-3.177967354850817099e-04, +-3.169739629570247365e-04, +-3.161507262023976008e-04, +-3.153270265875951473e-04, +-3.145028654796967857e-04, +-3.136782442465037334e-04, +-3.128531642563876607e-04, +-3.120276268784017673e-04, +-3.112016334823115198e-04, +-3.103751854384660105e-04, +-3.095482841179239423e-04, +-3.087209308923789266e-04, +-3.078931271341910883e-04, +-3.070648742163139904e-04, +-3.062361735124202386e-04, +-3.054070263967331592e-04, +-3.045774342442452115e-04, +-3.037473984304588093e-04, +-3.029169203316056007e-04, +-3.020860013244954932e-04, +-3.012546427865698878e-04, +-3.004228460959164782e-04, +-2.995906126313087163e-04, +-2.987579437720491986e-04, +-2.979248408980851343e-04, +-2.970913053900362086e-04, +-2.962573386290485956e-04, +-2.954229419970151593e-04, +-2.945881168763114506e-04, +-2.937528646500167217e-04, +-2.929171867017447365e-04, +-2.920810844157904090e-04, +-2.912445591769613181e-04, +-2.904076123707945481e-04, +-2.895702453832989741e-04, +-2.887324596011722646e-04, +-2.878942564116533220e-04, +-2.870556372025531819e-04, +-2.862166033623684755e-04, +-2.853771562801256834e-04, +-2.845372973454216850e-04, +-2.836970279484355762e-04, +-2.828563494799452580e-04, +-2.820152633313655456e-04, +-2.811737708945947004e-04, +-2.803318735621216566e-04, +-2.794895727270663545e-04, +-2.786468697830616703e-04, +-2.778037661242896829e-04, +-2.769602631455900937e-04, +-2.761163622423099570e-04, +-2.752720648103394036e-04, +-2.744273722461253564e-04, +-2.735822859466900160e-04, +-2.727368073096662600e-04, +-2.718909377331257967e-04, +-2.710446786157824531e-04, +-2.701980313568401698e-04, +-2.693509973560503012e-04, +-2.685035780137210479e-04, +-2.676557747307604452e-04, +-2.668075889085177988e-04, +-2.659590219488984475e-04, +-2.651100752543956388e-04, +-2.642607502279388488e-04, +-2.634110482731198384e-04, +-2.625609707939229043e-04, +-2.617105191949499585e-04, +-2.608596948812693371e-04, +-2.600084992584671909e-04, +-2.591569337326653753e-04, +-2.583049997105570116e-04, +-2.574526985992541027e-04, +-2.566000318063954653e-04, +-2.557470007401851648e-04, +-2.548936068092378542e-04, +-2.540398514228024989e-04, +-2.531857359904979396e-04, +-2.523312619225346666e-04, +-2.514764306295431896e-04, +-2.506212435226858742e-04, +-2.497657020136733125e-04, +-2.489098075146100415e-04, +-2.480535614381052943e-04, +-2.471969651973115437e-04, +-2.463400202058046431e-04, +-2.454827278776211780e-04, +-2.446250896273701922e-04, +-2.437671068700789881e-04, +-2.429087810212284166e-04, +-2.420501134967685715e-04, +-2.411911057131383861e-04, +-2.403317590872981323e-04, +-2.394720750365765755e-04, +-2.386120549787823758e-04, +-2.377517003322404904e-04, +-2.368910125156738330e-04, +-2.360299929482422780e-04, +-2.351686430496493455e-04, +-2.343069642399949132e-04, +-2.334449579397839978e-04, +-2.325826255700440390e-04, +-2.317199685521499088e-04, +-2.308569883080488570e-04, +-2.299936862599927126e-04, +-2.291300638307640217e-04, +-2.282661224435204644e-04, +-2.274018635218521818e-04, +-2.265372884897934585e-04, +-2.256723987718642474e-04, +-2.248071957929120661e-04, +-2.239416809782238322e-04, +-2.230758557535639458e-04, +-2.222097215450168637e-04, +-2.213432797792156217e-04, +-2.204765318830708657e-04, +-2.196094792839987779e-04, +-2.187421234097646535e-04, +-2.178744656885389273e-04, +-2.170065075489133275e-04, +-2.161382504199384712e-04, +-2.152696957309655434e-04, +-2.144008449117598941e-04, +-2.135316993925400158e-04, +-2.126622606038151299e-04, +-2.117925299766024064e-04, +-2.109225089422443029e-04, +-2.100521989324492496e-04, +-2.091816013793060692e-04, +-2.083107177153023537e-04, +-2.074395493733604331e-04, +-2.065680977866790548e-04, +-2.056963643888504775e-04, +-2.048243506138920211e-04, +-2.039520578961320633e-04, +-2.030794876702431075e-04, +-2.022066413713576570e-04, +-2.013335204349106262e-04, +-2.004601262966742789e-04, +-1.995864603927777984e-04, +-1.987125241597207585e-04, +-1.978383190344132933e-04, +-1.969638464540164483e-04, +-1.960891078560562928e-04, +-1.952141046784617315e-04, +-1.943388383594238020e-04, +-1.934633103375315254e-04, +-1.925875220516918922e-04, +-1.917114749411636895e-04, +-1.908351704454811729e-04, +-1.899586100045840627e-04, +-1.890817950586429056e-04, +-1.882047270482902000e-04, +-1.873274074143415659e-04, +-1.864498375980336189e-04, +-1.855720190408590364e-04, +-1.846939531846283834e-04, +-1.838156414714832052e-04, +-1.829370853439340550e-04, +-1.820582862447031223e-04, +-1.811792456168368815e-04, +-1.802999649037452046e-04, +-1.794204455490393810e-04, +-1.785406889967682844e-04, +-1.776606966911390003e-04, +-1.767804700767516108e-04, +-1.759000105984181864e-04, +-1.750193197013003444e-04, +-1.741383988308247896e-04, +-1.732572494327255710e-04, +-1.723758729529568034e-04, +-1.714942708378332074e-04, +-1.706124445338868861e-04, +-1.697303954879066275e-04, +-1.688481251470502005e-04, +-1.679656349586885556e-04, +-1.670829263704394615e-04, +-1.662000008301882685e-04, +-1.653168597861011347e-04, +-1.644335046866656305e-04, +-1.635499369805281885e-04, +-1.626661581166124993e-04, +-1.617821695441530670e-04, +-1.608979727125788202e-04, +-1.600135690715466410e-04, +-1.591289600710592180e-04, +-1.582441471613037708e-04, +-1.573591317926901058e-04, +-1.564739154158676922e-04, +-1.555884994817426027e-04, +-1.547028854415146207e-04, +-1.538170747464982920e-04, +-1.529310688483359170e-04, +-1.520448691988386333e-04, +-1.511584772500433095e-04, +-1.502718944542292146e-04, +-1.493851222639547998e-04, +-1.484981621318983477e-04, +-1.476110155109739276e-04, +-1.467236838543680420e-04, +-1.458361686153792725e-04, +-1.449484712476531727e-04, +-1.440605932049032214e-04, +-1.431725359411463656e-04, +-1.422843009105408238e-04, +-1.413958895674243042e-04, +-1.405073033664307463e-04, +-1.396185437623288284e-04, +-1.387296122100586688e-04, +-1.378405101647516928e-04, +-1.369512390817843287e-04, +-1.360618004166200658e-04, +-1.351721956250426671e-04, +-1.342824261628779083e-04, +-1.333924934862282805e-04, +-1.325023990512920642e-04, +-1.316121443144810193e-04, +-1.307217307324355367e-04, +-1.298311597618664263e-04, +-1.289404328596698154e-04, +-1.280495514829647159e-04, +-1.271585170889712960e-04, +-1.262673311350494233e-04, +-1.253759950788140237e-04, +-1.244845103779746473e-04, +-1.235928784903723575e-04, +-1.227011008739973771e-04, +-1.218091789870072889e-04, +-1.209171142877626248e-04, +-1.200249082346676645e-04, +-1.191325622862855093e-04, +-1.182400779013766129e-04, +-1.173474565387567500e-04, +-1.164546996574337349e-04, +-1.155618087165261059e-04, +-1.146687851752992160e-04, +-1.137756304930850150e-04, +-1.128823461294177380e-04, +-1.119889335438526399e-04, +-1.110953941962025145e-04, +-1.102017295462573329e-04, +-1.093079410540191091e-04, +-1.084140301795421564e-04, +-1.075199983829690828e-04, +-1.066258471246486571e-04, +-1.057315778649738162e-04, +-1.048371920644189744e-04, +-1.039426911835582252e-04, +-1.030480766831220037e-04, +-1.021533500238355004e-04, +-1.012585126666556133e-04, +-1.003635660724895568e-04, +-9.946851170243056729e-05, +-9.857335101759908118e-05, +-9.767808547917585708e-05, +-9.678271654852294579e-05, +-9.588724568701998926e-05, +-9.499167435608224551e-05, +-9.409600401727735719e-05, +-9.320023613218417484e-05, +-9.230437216243031105e-05, +-9.140841356980789248e-05, +-9.051236181611353173e-05, +-8.961621836318479711e-05, +-8.871998467291841370e-05, +-8.782366220728670260e-05, +-8.692725242837634112e-05, +-8.603075679822546143e-05, +-8.513417677894185567e-05, +-8.423751383273986597e-05, +-8.334076942181845233e-05, +-8.244394500839825879e-05, +-8.154704205484006253e-05, +-8.065006202348170986e-05, +-7.975300637667653760e-05, +-7.885587657680955486e-05, +-7.795867408631701283e-05, +-7.706140036772189889e-05, +-7.616405688347366440e-05, +-7.526664509606404460e-05, +-7.436916646806579175e-05, +-7.347162246199011608e-05, +-7.257401454040353567e-05, +-7.167634416594691779e-05, +-7.077861280117164235e-05, +-6.988082190865820009e-05, +-6.898297295105340783e-05, +-6.808506739090833379e-05, +-6.718710669091522284e-05, +-6.628909231362588859e-05, +-6.539102572168911296e-05, +-6.449290837768813787e-05, +-6.359474174417820570e-05, +-6.269652728380434433e-05, +-6.179826645913921116e-05, +-6.089996073272025410e-05, +-6.000161156706761449e-05, +-5.910322042474164402e-05, +-5.820478876818059290e-05, +-5.730631805993831437e-05, +-5.640780976240180298e-05, +-5.550926533802858740e-05, +-5.461068624916478096e-05, +-5.371207395818240944e-05, +-5.281342992739704556e-05, +-5.191475561910565442e-05, +-5.101605249550418737e-05, +-5.011732201882493685e-05, +-4.921856565119416709e-05, +-4.831978485467002736e-05, +-4.742098109136029624e-05, +-4.652215582325964973e-05, +-4.562331051228686964e-05, +-4.472444662030366136e-05, +-4.382556560913134370e-05, +-4.292666894058899934e-05, +-4.202775807633036333e-05, +-4.112883447796224511e-05, +-4.022989960708200799e-05, +-3.933095492515479007e-05, +-3.843200189355124800e-05, +-3.753304197366576889e-05, +-3.663407662675332503e-05, +-3.573510731394752580e-05, +-3.483613549637813847e-05, +-3.393716263498870500e-05, +-3.303819019077431442e-05, +-3.213921962449901225e-05, +-3.124025239693354575e-05, +-3.034128996869295719e-05, +-2.944233380027434460e-05, +-2.854338535217435874e-05, +-2.764444608472683035e-05, +-2.674551745814040206e-05, +-2.584660093251636018e-05, +-2.494769796790593811e-05, +-2.404881002414823159e-05, +-2.314993856110765245e-05, +-2.225108503839168033e-05, +-2.135225091558851641e-05, +-2.045343765210444627e-05, +-1.955464670720179042e-05, +-1.865587954011646224e-05, +-1.775713760989561552e-05, +-1.685842237543507655e-05, +-1.595973529549719953e-05, +-1.506107782876856141e-05, +-1.416245143369722992e-05, +-1.326385756873094919e-05, +-1.236529769203424607e-05, +-1.146677326172642598e-05, +-1.056828573569900687e-05, +-9.669836571733461856e-06, +-8.771427227518939157e-06, +-7.873059160489680899e-06, +-6.974733827942731047e-06, +-6.076452687075786763e-06, +-5.178217194864565829e-06, +-4.280028808100522477e-06, +-3.381888983508703557e-06, +-2.483799177585074164e-06, +-1.585760846634314365e-06, +-6.877754467874324064e-07, + 2.101555659805405892e-07, + 1.108030735812864296e-06, + 2.005848607133658154e-06, + 2.903607724530097459e-06, + 3.801306632714717773e-06, + 4.698943876687930030e-06, + 5.596518001500180669e-06, + 6.494027552534520979e-06, + 7.391471075268770840e-06, + 8.288847115458005188e-06, + 9.186154218976835638e-06, + 1.008339093200176990e-05, + 1.098055580077352840e-05, + 1.187764737187954758e-05, + 1.277466419201613807e-05, + 1.367160480815088640e-05, + 1.456846776748516354e-05, + 1.546525161733618750e-05, + 1.636195490529960276e-05, + 1.725857617921177720e-05, + 1.815511398713207875e-05, + 1.905156687728531444e-05, + 1.994793339822398799e-05, + 2.084421209859066307e-05, + 2.174040152740046910e-05, + 2.263650023380307821e-05, + 2.353250676724556257e-05, + 2.442841967743418304e-05, + 2.532423751421719371e-05, + 2.621995882774687589e-05, + 2.711558216846206892e-05, + 2.801110608697045967e-05, + 2.890652913419089088e-05, + 2.980184986131566481e-05, + 3.069706681969292081e-05, + 3.159217856098914712e-05, + 3.248718363715113550e-05, + 3.338208060038875597e-05, + 3.427686800315675919e-05, + 3.517154439811799485e-05, + 3.606610833830464611e-05, + 3.696055837700135263e-05, + 3.785489306770733120e-05, + 3.874911096425849761e-05, + 3.964321062079007523e-05, + 4.053719059161899968e-05, + 4.143104943140589192e-05, + 4.232478569511763291e-05, + 4.321839793800963012e-05, + 4.411188471560808410e-05, + 4.500524458367288836e-05, + 4.589847609835885709e-05, + 4.679157781609878712e-05, + 4.768454829356608008e-05, + 4.857738608783597001e-05, + 4.947008975616940804e-05, + 5.036265785619379204e-05, + 5.125508894586626647e-05, + 5.214738158345581939e-05, + 5.303953432748567752e-05, + 5.393154573689527245e-05, + 5.482341437080325442e-05, + 5.571513878878891048e-05, + 5.660671755065547643e-05, + 5.749814921659136444e-05, + 5.838943234713353736e-05, + 5.928056550304913416e-05, + 6.017154724549826286e-05, + 6.106237613599580958e-05, + 6.195305073639407090e-05, + 6.284356960882516243e-05, + 6.373393131586278858e-05, + 6.462413442028556792e-05, + 6.551417748535839729e-05, + 6.640405907459516054e-05, + 6.729377775194069833e-05, + 6.818333208163387341e-05, + 6.907272062828948207e-05, + 6.996194195686003601e-05, + 7.085099463271871741e-05, + 7.173987722152184781e-05, + 7.262858828935030880e-05, + 7.351712640267244869e-05, + 7.440549012822740885e-05, + 7.529367803318497577e-05, + 7.618168868511012760e-05, + 7.706952065194378962e-05, + 7.795717250198672024e-05, + 7.884464280386037133e-05, + 7.973193012667029102e-05, + 8.061903303988669886e-05, + 8.150595011330938474e-05, + 8.239267991722747965e-05, + 8.327922102218403473e-05, + 8.416557199925608424e-05, + 8.505173141981888581e-05, + 8.593769785572676534e-05, + 8.682346987915608388e-05, + 8.770904606278747849e-05, + 8.859442497956878781e-05, + 8.947960520299587405e-05, + 9.036458530687575190e-05, + 9.124936386548967960e-05, + 9.213393945355362628e-05, + 9.301831064610234360e-05, + 9.390247601865072216e-05, + 9.478643414715610190e-05, + 9.567018360800059963e-05, + 9.655372297793361920e-05, + 9.743705083423398038e-05, + 9.832016575447276318e-05, + 9.920306631679454991e-05, + 1.000857510996802153e-04, + 1.009682186821098143e-04, + 1.018504676435227511e-04, + 1.027324965637039790e-04, + 1.036143040229420086e-04, + 1.044958886019941056e-04, + 1.053772488820663817e-04, + 1.062583834447588800e-04, + 1.071392908722244646e-04, + 1.080199697469543386e-04, + 1.089004186519581841e-04, + 1.097806361707272179e-04, + 1.106606208872157467e-04, + 1.115403713858243351e-04, + 1.124198862513627793e-04, + 1.132991640692097976e-04, + 1.141782034251976431e-04, + 1.150570029055739000e-04, + 1.159355610971621347e-04, + 1.168138765871275459e-04, + 1.176919479632554687e-04, + 1.185697738137158046e-04, + 1.194473527272253542e-04, + 1.203246832929882122e-04, + 1.212017641006805625e-04, + 1.220785937404125136e-04, + 1.229551708028873546e-04, + 1.238314938792871853e-04, + 1.247075615612346306e-04, + 1.255833724409530716e-04, + 1.264589251110324040e-04, + 1.273342181647068379e-04, + 1.282092501956217398e-04, + 1.290840197980118215e-04, + 1.299585255665465598e-04, + 1.308327660965097946e-04, + 1.317067399835661107e-04, + 1.325804458240372277e-04, + 1.334538822146690592e-04, + 1.343270477527915517e-04, + 1.351999410362807099e-04, + 1.360725606634443491e-04, + 1.369449052331806057e-04, + 1.378169733449401797e-04, + 1.386887635987103426e-04, + 1.395602745949576650e-04, + 1.404315049347864446e-04, + 1.413024532197080163e-04, + 1.421731180519141327e-04, + 1.430434980340470057e-04, + 1.439135917693758681e-04, + 1.447833978616626686e-04, + 1.456529149152439558e-04, + 1.465221415349917116e-04, + 1.473910763263948018e-04, + 1.482597178954254838e-04, + 1.491280648486765852e-04, + 1.499961157933259691e-04, + 1.508638693370206870e-04, + 1.517313240880362754e-04, + 1.525984786552394591e-04, + 1.534653316480705330e-04, + 1.543318816765265839e-04, + 1.551981273511250886e-04, + 1.560640672830608793e-04, + 1.569297000840927901e-04, + 1.577950243665053305e-04, + 1.586600387432688763e-04, + 1.595247418278058073e-04, + 1.603891322342678458e-04, + 1.612532085773022220e-04, + 1.621169694722107528e-04, + 1.629804135348946836e-04, + 1.638435393818340341e-04, + 1.647063456300565084e-04, + 1.655688308973092061e-04, + 1.664309938018494522e-04, + 1.672928329626024947e-04, + 1.681543469991254001e-04, + 1.690155345314908817e-04, + 1.698763941804468124e-04, + 1.707369245673777359e-04, + 1.715971243142898773e-04, + 1.724569920437524337e-04, + 1.733165263790573585e-04, + 1.741757259439878571e-04, + 1.750345893630921750e-04, + 1.758931152614526359e-04, + 1.767513022648437991e-04, + 1.776091489996944862e-04, + 1.784666540929762157e-04, + 1.793238161723575399e-04, + 1.801806338661694859e-04, + 1.810371058033872593e-04, + 1.818932306135747333e-04, + 1.827490069270418206e-04, + 1.836044333746142431e-04, + 1.844595085879060191e-04, + 1.853142311990911301e-04, + 1.861685998410762344e-04, + 1.870226131473917046e-04, + 1.878762697521710280e-04, + 1.887295682903088558e-04, + 1.895825073973458072e-04, + 1.904350857094344520e-04, + 1.912873018634940806e-04, + 1.921391544969828591e-04, + 1.929906422481665758e-04, + 1.938417637558955667e-04, + 1.946925176597540639e-04, + 1.955429026000100249e-04, + 1.963929172175946135e-04, + 1.972425601540688607e-04, + 1.980918300517769167e-04, + 1.989407255537341886e-04, + 1.997892453035912631e-04, + 2.006373879457886496e-04, + 2.014851521253300463e-04, + 2.023325364880526861e-04, + 2.031795396803974313e-04, + 2.040261603495867727e-04, + 2.048723971434715779e-04, + 2.057182487107054030e-04, + 2.065637137005182477e-04, + 2.074087907629857351e-04, + 2.082534785488017004e-04, + 2.090977757094333942e-04, + 2.099416808970855418e-04, + 2.107851927645889678e-04, + 2.116283099655532794e-04, + 2.124710311543316296e-04, + 2.133133549860048337e-04, + 2.141552801163255058e-04, + 2.149968052018719883e-04, + 2.158379288998240578e-04, + 2.166786498682290963e-04, + 2.175189667657766320e-04, + 2.183588782519542469e-04, + 2.191983829870093050e-04, + 2.200374796318391223e-04, + 2.208761668481427009e-04, + 2.217144432983883117e-04, + 2.225523076457930566e-04, + 2.233897585543078801e-04, + 2.242267946885819255e-04, + 2.250634147141342459e-04, + 2.258996172971493505e-04, + 2.267354011046272854e-04, + 2.275707648043330013e-04, + 2.284057070647775426e-04, + 2.292402265551824316e-04, + 2.300743219456330825e-04, + 2.309079919069676444e-04, + 2.317412351107412760e-04, + 2.325740502293796423e-04, + 2.334064359359535083e-04, + 2.342383909044465373e-04, + 2.350699138095307527e-04, + 2.359010033267176212e-04, + 2.367316581323047648e-04, + 2.375618769033611066e-04, + 2.383916583176893308e-04, + 2.392210010539773998e-04, + 2.400499037916901880e-04, + 2.408783652110336223e-04, + 2.417063839931053314e-04, + 2.425339588196738483e-04, + 2.433610883734409062e-04, + 2.441877713378209653e-04, + 2.450140063971098883e-04, + 2.458397922363375968e-04, + 2.466651275414407578e-04, + 2.474900109990380557e-04, + 2.483144412966931114e-04, + 2.491384171226962321e-04, + 2.499619371662121343e-04, + 2.507850001172468209e-04, + 2.516076046665365593e-04, + 2.524297495056995072e-04, + 2.532514333272022100e-04, + 2.540726548243386765e-04, + 2.548934126911815896e-04, + 2.557137056227305706e-04, + 2.565335323146901892e-04, + 2.573528914637356470e-04, + 2.581717817672892152e-04, + 2.589902019236883942e-04, + 2.598081506320619352e-04, + 2.606256265924026443e-04, + 2.614426285055355069e-04, + 2.622591550731889201e-04, + 2.630752049978720688e-04, + 2.638907769830407010e-04, + 2.647058697328811541e-04, + 2.655204819525637874e-04, + 2.663346123480307497e-04, + 2.671482596261417499e-04, + 2.679614224946222866e-04, + 2.687740996620459214e-04, + 2.695862898378008311e-04, + 2.703979917322392652e-04, + 2.712092040565670654e-04, + 2.720199255228123868e-04, + 2.728301548439704383e-04, + 2.736398907337888654e-04, + 2.744491319070260066e-04, + 2.752578770792301504e-04, + 2.760661249668915399e-04, + 2.768738742873890846e-04, + 2.776811237589710615e-04, + 2.784878721007231312e-04, + 2.792941180327357929e-04, + 2.800998602759026683e-04, + 2.809050975520706642e-04, + 2.817098285840038681e-04, + 2.825140520952774590e-04, + 2.833177668104273276e-04, + 2.841209714549097981e-04, + 2.849236647550916534e-04, + 2.857258454381946780e-04, + 2.865275122324419175e-04, + 2.873286638668460418e-04, + 2.881292990714599041e-04, + 2.889294165771662064e-04, + 2.897290151158200713e-04, + 2.905280934202166790e-04, + 2.913266502239869669e-04, + 2.921246842617397145e-04, + 2.929221942690315647e-04, + 2.937191789823468584e-04, + 2.945156371390872797e-04, + 2.953115674775304397e-04, + 2.961069687369838332e-04, + 2.969018396576715937e-04, + 2.976961789807068461e-04, + 2.984899854482137883e-04, + 2.992832578032266974e-04, + 3.000759947896713357e-04, + 3.008681951525109385e-04, + 3.016598576376403962e-04, + 3.024509809918532943e-04, + 3.032415639629861665e-04, + 3.040316052997064250e-04, + 3.048211037517648166e-04, + 3.056100580697803716e-04, + 3.063984670053910534e-04, + 3.071863293111954285e-04, + 3.079736437407416079e-04, + 3.087604090484910341e-04, + 3.095466239899646323e-04, + 3.103322873216358534e-04, + 3.111173978009003165e-04, + 3.119019541862145866e-04, + 3.126859552368930497e-04, + 3.134693997133492557e-04, + 3.142522863768927393e-04, + 3.150346139898859039e-04, + 3.158163813156052440e-04, + 3.165975871184028363e-04, + 3.173782301634968188e-04, + 3.181583092172218406e-04, + 3.189378230468136312e-04, + 3.197167704205580241e-04, + 3.204951501077548531e-04, + 3.212729608786151696e-04, + 3.220502015044046282e-04, + 3.228268707574067872e-04, + 3.236029674109115609e-04, + 3.243784902391973310e-04, + 3.251534380174989623e-04, + 3.259278095221491826e-04, + 3.267016035304753669e-04, + 3.274748188207666859e-04, + 3.282474541723814964e-04, + 3.290195083657140016e-04, + 3.297909801820899517e-04, + 3.305618684039106792e-04, + 3.313321718146362404e-04, + 3.321018891986811687e-04, + 3.328710193415777559e-04, + 3.336395610297644156e-04, + 3.344075130508314723e-04, + 3.351748741933189570e-04, + 3.359416432468520248e-04, + 3.367078190020943878e-04, + 3.374734002507301009e-04, + 3.382383857854350472e-04, + 3.390027744000121920e-04, + 3.397665648892921075e-04, + 3.405297560491022356e-04, + 3.412923466764032805e-04, + 3.420543355690861920e-04, + 3.428157215262159479e-04, + 3.435765033478245262e-04, + 3.443366798350523390e-04, + 3.450962497900980338e-04, + 3.458552120162023931e-04, + 3.466135653176173267e-04, + 3.473713084997442154e-04, + 3.481284403690322127e-04, + 3.488849597329469663e-04, + 3.496408654001100999e-04, + 3.503961561801100747e-04, + 3.511508308836607537e-04, + 3.519048883225677914e-04, + 3.526583273097153525e-04, + 3.534111466590111970e-04, + 3.541633451855325594e-04, + 3.549149217053192292e-04, + 3.556658750356141889e-04, + 3.564162039946587547e-04, + 3.571659074018371000e-04, + 3.579149840776389051e-04, + 3.586634328435601526e-04, + 3.594112525222428267e-04, + 3.601584419374384300e-04, + 3.609049999139983880e-04, + 3.616509252778544797e-04, + 3.623962168559904311e-04, + 3.631408734765757059e-04, + 3.638848939688685237e-04, + 3.646282771631822496e-04, + 3.653710218910051445e-04, + 3.661131269848871199e-04, + 3.668545912785055492e-04, + 3.675954136066343679e-04, + 3.683355928052148721e-04, + 3.690751277112371605e-04, + 3.698140171628947967e-04, + 3.705522599993865077e-04, + 3.712898550611494508e-04, + 3.720268011896614544e-04, + 3.727630972275793628e-04, + 3.734987420186854762e-04, + 3.742337344078769802e-04, + 3.749680732411332022e-04, + 3.757017573656502699e-04, + 3.764347856297419609e-04, + 3.771671568828124346e-04, + 3.778988699754838977e-04, + 3.786299237594070309e-04, + 3.793603170874895389e-04, + 3.800900488137013192e-04, + 3.808191177932083071e-04, + 3.815475228823225480e-04, + 3.822752629384928188e-04, + 3.830023368202688499e-04, + 3.837287433874507817e-04, + 3.844544815009146629e-04, + 3.851795500227396269e-04, + 3.859039478161837688e-04, + 3.866276737455809831e-04, + 3.873507266764773566e-04, + 3.880731054755996181e-04, + 3.887948090108417484e-04, + 3.895158361512451937e-04, + 3.902361857669757179e-04, + 3.909558567294517720e-04, + 3.916748479112458861e-04, + 3.923931581860564798e-04, + 3.931107864288106994e-04, + 3.938277315156265244e-04, + 3.945439923237232128e-04, + 3.952595677315491282e-04, + 3.959744566187527919e-04, + 3.966886578661668909e-04, + 3.974021703557959178e-04, + 3.981149929707855422e-04, + 3.988271245955507093e-04, + 3.995385641156838077e-04, + 4.002493104179223604e-04, + 4.009593623902634081e-04, + 4.016687189218695088e-04, + 4.023773789030549142e-04, + 4.030853412254144274e-04, + 4.037926047817299983e-04, + 4.044991684659395535e-04, + 4.052050311732647149e-04, + 4.059101918000275694e-04, + 4.066146492438678351e-04, + 4.073184024035589801e-04, + 4.080214501791320928e-04, + 4.087237914718369592e-04, + 4.094254251841208123e-04, + 4.101263502196027450e-04, + 4.108265654831985019e-04, + 4.115260698810348271e-04, + 4.122248623204082104e-04, + 4.129229417099231233e-04, + 4.136203069592969163e-04, + 4.143169569795881525e-04, + 4.150128906830047575e-04, + 4.157081069830513629e-04, + 4.164026047944167116e-04, + 4.170963830330429926e-04, + 4.177894406160883277e-04, + 4.184817764620013102e-04, + 4.191733894904071641e-04, + 4.198642786222167599e-04, + 4.205544427796039557e-04, + 4.212438808859059582e-04, + 4.219325918657566257e-04, + 4.226205746450529123e-04, + 4.233078281509410437e-04, + 4.239943513118027483e-04, + 4.246801430572307544e-04, + 4.253652023181450702e-04, + 4.260495280267109644e-04, + 4.267331191163034046e-04, + 4.274159745216054478e-04, + 4.280980931785772331e-04, + 4.287794740243630652e-04, + 4.294601159974215186e-04, + 4.301400180375059760e-04, + 4.308191790855770255e-04, + 4.314975980839462250e-04, + 4.321752739760823555e-04, + 4.328522057068402967e-04, + 4.335283922222712364e-04, + 4.342038324697487643e-04, + 4.348785253979248525e-04, + 4.355524699567153279e-04, + 4.362256650972723871e-04, + 4.368981097721084126e-04, + 4.375698029350035987e-04, + 4.382407435409791719e-04, + 4.389109305464205558e-04, + 4.395803629088970688e-04, + 4.402490395873733973e-04, + 4.409169595420335216e-04, + 4.415841217343996527e-04, + 4.422505251272902736e-04, + 4.429161686848071835e-04, + 4.435810513723056816e-04, + 4.442451721565163778e-04, + 4.449085300054569383e-04, + 4.455711238884072574e-04, + 4.462329527760230279e-04, + 4.468940156401820011e-04, + 4.475543114541098082e-04, + 4.482138391923634266e-04, + 4.488725978308096042e-04, + 4.495305863466104394e-04, + 4.501878037182035944e-04, + 4.508442489254134260e-04, + 4.514999209493714052e-04, + 4.521548187724823984e-04, + 4.528089413785158488e-04, + 4.534622877525811111e-04, + 4.541148568810391426e-04, + 4.547666477516178088e-04, + 4.554176593533877594e-04, + 4.560678906767539720e-04, + 4.567173407134328205e-04, + 4.573660084564276813e-04, + 4.580138929001527489e-04, + 4.586609930403440769e-04, + 4.593073078740254802e-04, + 4.599528363996227011e-04, + 4.605975776168549896e-04, + 4.612415305267988539e-04, + 4.618846941318608475e-04, + 4.625270674358312366e-04, + 4.631686494437939577e-04, + 4.638094391622508126e-04, + 4.644494355989511945e-04, + 4.650886377630963518e-04, + 4.657270446651682466e-04, + 4.663646553170472994e-04, + 4.670014687319685867e-04, + 4.676374839245070426e-04, + 4.682726999105570206e-04, + 4.689071157074416359e-04, + 4.695407303338323718e-04, + 4.701735428097225710e-04, + 4.708055521565389454e-04, + 4.714367573969736338e-04, + 4.720671575551893323e-04, + 4.726967516566435998e-04, + 4.733255387282230280e-04, + 4.739535177981437654e-04, + 4.745806878960075713e-04, + 4.752070480527797514e-04, + 4.758325973008435314e-04, + 4.764573346739022614e-04, + 4.770812592070829573e-04, + 4.777043699369078406e-04, + 4.783266659012093370e-04, + 4.789481461392466281e-04, + 4.795688096916787086e-04, + 4.801886556005525693e-04, + 4.808076829092872585e-04, + 4.814258906626505720e-04, + 4.820432779068729487e-04, + 4.826598436895618727e-04, + 4.832755870596763944e-04, + 4.838905070676151137e-04, + 4.845046027651869064e-04, + 4.851178732055285792e-04, + 4.857303174432194698e-04, + 4.863419345342566728e-04, + 4.869527235360355784e-04, + 4.875626835073461319e-04, + 4.881718135083391689e-04, + 4.887801126006582550e-04, + 4.893875798472852945e-04, + 4.899942143126554024e-04, + 4.906000150626134816e-04, + 4.912049811644034897e-04, + 4.918091116866437186e-04, + 4.924124056994367334e-04, + 4.930148622742885987e-04, + 4.936164804840813400e-04, + 4.942172594031878693e-04, + 4.948171981073063190e-04, + 4.954162956736530296e-04, + 4.960145511808008957e-04, + 4.966119637087876770e-04, + 4.972085323390936645e-04, + 4.978042561545592808e-04, + 4.983991342394972950e-04, + 4.989931656796633324e-04, + 4.995863495622436231e-04, + 5.001786849758254033e-04, + 5.007701710104899397e-04, + 5.013608067576680056e-04, + 5.019505913103195329e-04, + 5.025395237627771619e-04, + 5.031276032108701656e-04, + 5.037148287518411829e-04, + 5.043011994843385210e-04, + 5.048867145085204552e-04, + 5.054713729259805279e-04, + 5.060551738397207682e-04, + 5.066381163542297552e-04, + 5.072201995754615838e-04, + 5.078014226107555257e-04, + 5.083817845689467263e-04, + 5.089612845603345460e-04, + 5.095399216966755131e-04, + 5.101176950911729150e-04, + 5.106946038584464411e-04, + 5.112706471146443972e-04, + 5.118458239773595719e-04, + 5.124201335656123225e-04, + 5.129935749999372033e-04, + 5.135661474022992648e-04, + 5.141378498961357959e-04, + 5.147086816063456980e-04, + 5.152786416593345886e-04, + 5.158477291829266552e-04, + 5.164159433064843515e-04, + 5.169832831607530307e-04, + 5.175497478780390808e-04, + 5.181153365920685436e-04, + 5.186800484380749360e-04, + 5.192438825527798422e-04, + 5.198068380743636405e-04, + 5.203689141424530347e-04, + 5.209301098982250296e-04, + 5.214904244843206280e-04, + 5.220498570448344226e-04, + 5.226084067254079457e-04, + 5.231660726730824346e-04, + 5.237228540364789178e-04, + 5.242787499656423062e-04, + 5.248337596121501391e-04, + 5.253878821290852621e-04, + 5.259411166709597159e-04, + 5.264934623938206633e-04, + 5.270449184552268617e-04, + 5.275954840142302316e-04, + 5.281451582313502697e-04, + 5.286939402686660974e-04, + 5.292418292896844054e-04, + 5.297888244594538363e-04, + 5.303349249445403740e-04, + 5.308801299130136821e-04, + 5.314244385344408161e-04, + 5.319678499798559737e-04, + 5.325103634218698910e-04, + 5.330519780345877685e-04, + 5.335926929935937667e-04, + 5.341325074760188774e-04, + 5.346714206605228175e-04, + 5.352094317272186770e-04, + 5.357465398577749421e-04, + 5.362827442353882822e-04, + 5.368180440447780201e-04, + 5.373524384721694355e-04, + 5.378859267052747912e-04, + 5.384185079333905864e-04, + 5.389501813473236138e-04, + 5.394809461393732875e-04, + 5.400108015034103554e-04, + 5.405397466348006805e-04, + 5.410677807304507770e-04, + 5.415949029887847169e-04, + 5.421211126097961715e-04, + 5.426464087949611336e-04, + 5.431707907473503488e-04, + 5.436942576714915137e-04, + 5.442168087735239912e-04, + 5.447384432610683815e-04, + 5.452591603433243166e-04, + 5.457789592310376093e-04, + 5.462978391364407306e-04, + 5.468157992733386780e-04, + 5.473328388571001941e-04, + 5.478489571046295768e-04, + 5.483641532343482483e-04, + 5.488784264662807319e-04, + 5.493917760219196693e-04, + 5.499042011243882337e-04, + 5.504157009983022195e-04, + 5.509262748698753182e-04, + 5.514359219668397549e-04, + 5.519446415184939931e-04, + 5.524524327556796415e-04, + 5.529592949108302425e-04, + 5.534652272178916923e-04, + 5.539702289124006284e-04, + 5.544742992314679502e-04, + 5.549774374137058514e-04, + 5.554796426993242062e-04, + 5.559809143301070421e-04, + 5.564812515494074437e-04, + 5.569806536021255439e-04, + 5.574791197346988742e-04, + 5.579766491951905103e-04, + 5.584732412332153468e-04, + 5.589688950999316397e-04, + 5.594636100480989034e-04, + 5.599573853320596959e-04, + 5.604502202076770603e-04, + 5.609421139324190925e-04, + 5.614330657653432205e-04, + 5.619230749670837358e-04, + 5.624121407998394339e-04, + 5.629002625273565917e-04, + 5.633874394150276306e-04, + 5.638736707297716368e-04, + 5.643589557401218568e-04, + 5.648432937162085670e-04, + 5.653266839296871909e-04, + 5.658091256538375037e-04, + 5.662906181635311061e-04, + 5.667711607352325090e-04, + 5.672507526469583667e-04, + 5.677293931783718032e-04, + 5.682070816106503559e-04, + 5.686838172266402581e-04, + 5.691595993107234066e-04, + 5.696344271489139650e-04, + 5.701083000288288726e-04, + 5.705812172396278886e-04, + 5.710531780720985934e-04, + 5.715241818186408843e-04, + 5.719942277732554831e-04, + 5.724633152315037124e-04, + 5.729314434906114702e-04, + 5.733986118493255733e-04, + 5.738648196080754120e-04, + 5.743300660688411110e-04, + 5.747943505352481799e-04, + 5.752576723125108100e-04, + 5.757200307074165869e-04, + 5.761814250284202736e-04, + 5.766418545855675915e-04, + 5.771013186904906667e-04, + 5.775598166564618061e-04, + 5.780173477983772349e-04, + 5.784739114326938872e-04, + 5.789295068775171180e-04, + 5.793841334525778267e-04, + 5.798377904792229162e-04, + 5.802904772804079198e-04, + 5.807421931806746674e-04, + 5.811929375062393219e-04, + 5.816427095849266773e-04, + 5.820915087461523774e-04, + 5.825393343210082423e-04, + 5.829861856421347669e-04, + 5.834320620438755104e-04, + 5.838769628621402709e-04, + 5.843208874345128543e-04, + 5.847638351001630376e-04, + 5.852058051999387261e-04, + 5.856467970762450643e-04, + 5.860868100731948154e-04, + 5.865258435364765219e-04, + 5.869638968134422178e-04, + 5.874009692530910570e-04, + 5.878370602060003581e-04, + 5.882721690244207971e-04, + 5.887062950622450747e-04, + 5.891394376750026026e-04, + 5.895715962198333753e-04, + 5.900027700555662488e-04, + 5.904329585425989197e-04, + 5.908621610430427745e-04, + 5.912903769206005918e-04, + 5.917176055406451465e-04, + 5.921438462702080432e-04, + 5.925690984779135792e-04, + 5.929933615340587591e-04, + 5.934166348106148124e-04, + 5.938389176811534678e-04, + 5.942602095209318465e-04, + 5.946805097068563577e-04, + 5.950998176174455111e-04, + 5.955181326328925833e-04, + 5.959354541350556436e-04, + 5.963517815074412904e-04, + 5.967671141352060612e-04, + 5.971814514051293271e-04, + 5.975947927056965599e-04, + 5.980071374270375323e-04, + 5.984184849609124404e-04, + 5.988288347007689324e-04, + 5.992381860417253037e-04, + 5.996465383805085888e-04, + 6.000538911155373946e-04, + 6.004602436469032517e-04, + 6.008655953763581466e-04, + 6.012699457073098592e-04, + 6.016732940448033147e-04, + 6.020756397955940925e-04, + 6.024769823680949750e-04, + 6.028773211723592509e-04, + 6.032766556201543326e-04, + 6.036749851248600579e-04, + 6.040723091015549927e-04, + 6.044686269669960477e-04, + 6.048639381396146838e-04, + 6.052582420394842780e-04, + 6.056515380883969926e-04, + 6.060438257097551388e-04, + 6.064351043287043164e-04, + 6.068253733720136095e-04, + 6.072146322681585282e-04, + 6.076028804473019261e-04, + 6.079901173412393571e-04, + 6.083763423834719335e-04, + 6.087615550091883283e-04, + 6.091457546552589203e-04, + 6.095289407602104241e-04, + 6.099111127642917012e-04, + 6.102922701093793255e-04, + 6.106724122390890398e-04, + 6.110515385986792615e-04, + 6.114296486351302297e-04, + 6.118067417970825305e-04, + 6.121828175348692979e-04, + 6.125578753005074322e-04, + 6.129319145477214520e-04, + 6.133049347319004512e-04, + 6.136769353101379984e-04, + 6.140479157412377740e-04, + 6.144178754856471089e-04, + 6.147868140055285421e-04, + 6.151547307647530979e-04, + 6.155216252288827228e-04, + 6.158874968651643217e-04, + 6.162523451425166391e-04, + 6.166161695315971547e-04, + 6.169789695047486321e-04, + 6.173407445359897945e-04, + 6.177014941010818948e-04, + 6.180612176774209461e-04, + 6.184199147441645731e-04, + 6.187775847821306392e-04, + 6.191342272738699967e-04, + 6.194898417036042533e-04, + 6.198444275572966792e-04, + 6.201979843225592908e-04, + 6.205505114887643068e-04, + 6.209020085469475455e-04, + 6.212524749898782478e-04, + 6.216019103120388025e-04, + 6.219503140095760654e-04, + 6.222976855803729170e-04, + 6.226440245240262529e-04, + 6.229893303418444902e-04, + 6.233336025368204627e-04, + 6.236768406136976653e-04, + 6.240190440788782053e-04, + 6.243602124405288377e-04, + 6.247003452084914097e-04, + 6.250394418943435761e-04, + 6.253775020113874154e-04, + 6.257145250745981468e-04, + 6.260505106006921099e-04, + 6.263854581081086583e-04, + 6.267193671170067986e-04, + 6.270522371492361340e-04, + 6.273840677284053856e-04, + 6.277148583797965238e-04, + 6.280446086304325307e-04, + 6.283733180090655826e-04, + 6.287009860461689184e-04, + 6.290276122739310929e-04, + 6.293531962262367873e-04, + 6.296777374387343539e-04, + 6.300012354487884375e-04, + 6.303236897954628444e-04, + 6.306451000195866788e-04, + 6.309654656636620772e-04, + 6.312847862719657985e-04, + 6.316030613904701852e-04, + 6.319202905668909768e-04, + 6.322364733506774439e-04, + 6.325516092929964499e-04, + 6.328656979467246453e-04, + 6.331787388665049542e-04, + 6.334907316087012548e-04, + 6.338016757313899227e-04, + 6.341115707944134988e-04, + 6.344204163592949289e-04, + 6.347282119893471767e-04, + 6.350349572495721760e-04, + 6.353406517067408448e-04, + 6.356452949293269492e-04, + 6.359488864875767087e-04, + 6.362514259534245544e-04, + 6.365529129005870201e-04, + 6.368533469044861985e-04, + 6.371527275423003725e-04, + 6.374510543929555592e-04, + 6.377483270370788888e-04, + 6.380445450570609465e-04, + 6.383397080370356060e-04, + 6.386338155628841495e-04, + 6.389268672221995980e-04, + 6.392188626043574006e-04, + 6.395098013004244701e-04, + 6.397996829032609901e-04, + 6.400885070074325937e-04, + 6.403762732092721640e-04, + 6.406629811068641125e-04, + 6.409486303000023122e-04, + 6.412332203902486446e-04, + 6.415167509809223748e-04, + 6.417992216770627457e-04, + 6.420806320854804787e-04, + 6.423609818147342455e-04, + 6.426402704751019374e-04, + 6.429184976786301046e-04, + 6.431956630391186692e-04, + 6.434717661721199491e-04, + 6.437468066949280331e-04, + 6.440207842265710829e-04, + 6.442936983878584959e-04, + 6.445655488013482710e-04, + 6.448363350913265167e-04, + 6.451060568838668657e-04, + 6.453747138067542554e-04, + 6.456423054895687368e-04, + 6.459088315636130496e-04, + 6.461742916619666157e-04, + 6.464386854194596266e-04, + 6.467020124726785731e-04, + 6.469642724599415249e-04, + 6.472254650213544016e-04, + 6.474855897987802887e-04, + 6.477446464358153693e-04, + 6.480026345778461695e-04, + 6.482595538719841807e-04, + 6.485154039671151916e-04, + 6.487701845138915896e-04, + 6.490238951647256394e-04, + 6.492765355737743034e-04, + 6.495281053969819600e-04, + 6.497786042920137249e-04, + 6.500280319183413197e-04, + 6.502763879371659854e-04, + 6.505236720114679220e-04, + 6.507698838059998913e-04, + 6.510150229872499212e-04, + 6.512590892234838055e-04, + 6.515020821847389244e-04, + 6.517440015428184984e-04, + 6.519848469712749995e-04, + 6.522246181454500503e-04, + 6.524633147424188043e-04, + 6.527009364410591178e-04, + 6.529374829219857391e-04, + 6.531729538676057109e-04, + 6.534073489620786891e-04, + 6.536406678913345061e-04, + 6.538729103430690514e-04, + 6.541040760067620523e-04, + 6.543341645736406448e-04, + 6.545631757367297889e-04, + 6.547911091907892764e-04, + 6.550179646323818191e-04, + 6.552437417598177541e-04, + 6.554684402731963521e-04, + 6.556920598743842419e-04, + 6.559146002670166028e-04, + 6.561360611564876237e-04, + 6.563564422499886669e-04, + 6.565757432564785613e-04, + 6.567939638866765548e-04, + 6.570111038530980930e-04, + 6.572271628699983322e-04, + 6.574421406534458655e-04, + 6.576560369212540924e-04, + 6.578688513930392237e-04, + 6.580805837901623854e-04, + 6.582912338357934778e-04, + 6.585008012548447141e-04, + 6.587092857740336127e-04, + 6.589166871218346414e-04, + 6.591230050285157554e-04, + 6.593282392261222424e-04, + 6.595323894484570989e-04, + 6.597354554311160493e-04, + 6.599374369114755119e-04, + 6.601383336286945503e-04, + 6.603381453236962248e-04, + 6.605368717392034799e-04, + 6.607345126196915476e-04, + 6.609310677114451932e-04, + 6.611265367625077582e-04, + 6.613209195227180226e-04, + 6.615142157436976287e-04, + 6.617064251788295050e-04, + 6.618975475832906095e-04, + 6.620875827140459665e-04, + 6.622765303298418357e-04, + 6.624643901912017014e-04, + 6.626511620604205255e-04, + 6.628368457016006353e-04, + 6.630214408806086798e-04, + 6.632049473651051210e-04, + 6.633873649245371857e-04, + 6.635686933301287831e-04, + 6.637489323548793115e-04, + 6.639280817735916315e-04, + 6.641061413628472371e-04, + 6.642831109010072319e-04, + 6.644589901682302182e-04, + 6.646337789464396625e-04, + 6.648074770193685649e-04, + 6.649800841725175002e-04, + 6.651516001931860600e-04, + 6.653220248704577820e-04, + 6.654913579952039448e-04, + 6.656595993600668715e-04, + 6.658267487594980933e-04, + 6.659928059897333042e-04, + 6.661577708487822786e-04, + 6.663216431364624810e-04, + 6.664844226543548307e-04, + 6.666461092058537921e-04, + 6.668067025961229221e-04, + 6.669662026321318419e-04, + 6.671246091226215418e-04, + 6.672819218781436299e-04, + 6.674381407110123021e-04, + 6.675932654353560576e-04, + 6.677472958670771508e-04, + 6.679002318238751179e-04, + 6.680520731252492708e-04, + 6.682028195924650865e-04, + 6.683524710485925883e-04, + 6.685010273184970216e-04, + 6.686484882288313723e-04, + 6.687948536080328982e-04, + 6.689401232863449211e-04, + 6.690842970957793130e-04, + 6.692273748701610576e-04, + 6.693693564450939890e-04, + 6.695102416579873546e-04, + 6.696500303480253493e-04, + 6.697887223561960635e-04, + 6.699263175252733772e-04, + 6.700628156998331142e-04, + 6.701982167262290815e-04, + 6.703325204526292816e-04, + 6.704657267289676655e-04, + 6.705978354069951986e-04, + 6.707288463402395285e-04, + 6.708587593840320898e-04, + 6.709875743954967203e-04, + 6.711152912335486848e-04, + 6.712419097588866526e-04, + 6.713674298340193683e-04, + 6.714918513232448352e-04, + 6.716151740926500991e-04, + 6.717373980101265345e-04, + 6.718585229453404636e-04, + 6.719785487697735966e-04, + 6.720974753566888796e-04, + 6.722153025811481667e-04, + 6.723320303200139552e-04, + 6.724476584519360495e-04, + 6.725621868573535131e-04, + 6.726756154185123404e-04, + 6.727879440194446409e-04, + 6.728991725459843596e-04, + 6.730093008857638073e-04, + 6.731183289281926279e-04, + 6.732262565644910827e-04, + 6.733330836876704265e-04, + 6.734388101925429908e-04, + 6.735434359757041861e-04, + 6.736469609355612330e-04, + 6.737493849722953239e-04, + 6.738507079879047738e-04, + 6.739509298861688083e-04, + 6.740500505726716328e-04, + 6.741480699547923493e-04, + 6.742449879416970420e-04, + 6.743408044443523295e-04, + 6.744355193755247144e-04, + 6.745291326497778730e-04, + 6.746216441834648487e-04, + 6.747130538947302206e-04, + 6.748033617035264749e-04, + 6.748925675315978505e-04, + 6.749806713024819648e-04, + 6.750676729415159942e-04, + 6.751535723758317949e-04, + 6.752383695343476631e-04, + 6.753220643477946808e-04, + 6.754046567486940563e-04, + 6.754861466713535465e-04, + 6.755665340518929350e-04, + 6.756458188282112899e-04, + 6.757240009400168872e-04, + 6.758010803288048767e-04, + 6.758770569378717017e-04, + 6.759519307123131471e-04, + 6.760257015990155582e-04, + 6.760983695466526956e-04, + 6.761699345057100219e-04, + 6.762403964284623668e-04, + 6.763097552689768550e-04, + 6.763780109831259157e-04, + 6.764451635285637565e-04, + 6.765112128647526001e-04, + 6.765761589529414345e-04, + 6.766400017561847698e-04, + 6.767027412393210621e-04, + 6.767643773689962410e-04, + 6.768249101136375803e-04, + 6.768843394434816705e-04, + 6.769426653305514333e-04, + 6.769998877486684821e-04, + 6.770560066734504110e-04, + 6.771110220823083016e-04, + 6.771649339544444455e-04, + 6.772177422708614523e-04, + 6.772694470143599725e-04, + 6.773200481695292648e-04, + 6.773695457227496899e-04, + 6.774179396622025768e-04, + 6.774652299778679459e-04, + 6.775114166615092215e-04, + 6.775564997066917724e-04, + 6.776004791087769479e-04, + 6.776433548649100436e-04, + 6.776851269740380825e-04, + 6.777257954369022251e-04, + 6.777653602560351678e-04, + 6.778038214357663465e-04, + 6.778411789822103364e-04, + 6.778774329032854996e-04, + 6.779125832086965297e-04, + 6.779466299099457275e-04, + 6.779795730203247613e-04, + 6.780114125549229062e-04, + 6.780421485306155523e-04, + 6.780717809660756967e-04, + 6.781003098817678723e-04, + 6.781277352999479308e-04, + 6.781540572446679216e-04, + 6.781792757417622140e-04, + 6.782033908188672298e-04, + 6.782264025054066982e-04, + 6.782483108325974017e-04, + 6.782691158334476587e-04, + 6.782888175427538536e-04, + 6.783074159971047741e-04, + 6.783249112348817191e-04, + 6.783413032962587160e-04, + 6.783565922231944972e-04, + 6.783707780594435592e-04, + 6.783838608505473808e-04, + 6.783958406438365908e-04, + 6.784067174884347634e-04, + 6.784164914352557073e-04, + 6.784251625369999966e-04, + 6.784327308481568133e-04, + 6.784391964250050325e-04, + 6.784445593256150644e-04, + 6.784488196098437595e-04, + 6.784519773393364681e-04, + 6.784540325775266067e-04, + 6.784549853896358748e-04, + 6.784548358426750140e-04, + 6.784535840054379532e-04, + 6.784512299485130843e-04, + 6.784477737442691676e-04, + 6.784432154668666075e-04, + 6.784375551922484536e-04, + 6.784307929981479900e-04, + 6.784229289640812547e-04, + 6.784139631713530022e-04, + 6.784038957030510660e-04, + 6.783927266440532974e-04, + 6.783804560810163982e-04, + 6.783670841023863290e-04, + 6.783526107983944061e-04, + 6.783370362610520975e-04, + 6.783203605841593709e-04, + 6.783025838632969961e-04, + 6.782837061958312073e-04, + 6.782637276809105583e-04, + 6.782426484194710187e-04, + 6.782204685142218794e-04, + 6.781971880696648341e-04, + 6.781728071920785838e-04, + 6.781473259895253423e-04, + 6.781207445718475833e-04, + 6.780930630506715098e-04, + 6.780642815394034763e-04, + 6.780344001532294471e-04, + 6.780034190091170556e-04, + 6.779713382258161468e-04, + 6.779381579238498868e-04, + 6.779038782255292911e-04, + 6.778684992549409731e-04, + 6.778320211379494208e-04, + 6.777944440021963467e-04, + 6.777557679771091439e-04, + 6.777159931938852742e-04, + 6.776751197855036520e-04, + 6.776331478867217168e-04, + 6.775900776340695788e-04, + 6.775459091658584754e-04, + 6.775006426221719894e-04, + 6.774542781448771077e-04, + 6.774068158776082836e-04, + 6.773582559657781704e-04, + 6.773085985565746939e-04, + 6.772578437989636548e-04, + 6.772059918436772359e-04, + 6.771530428432293979e-04, + 6.770989969519051457e-04, + 6.770438543257626968e-04, + 6.769876151226306626e-04, + 6.769302795021124933e-04, + 6.768718476255874538e-04, + 6.768123196561996735e-04, + 6.767516957588667111e-04, + 6.766899761002808560e-04, + 6.766271608488999122e-04, + 6.765632501749543545e-04, + 6.764982442504480871e-04, + 6.764321432491487941e-04, + 6.763649473465930357e-04, + 6.762966567200936205e-04, + 6.762272715487196561e-04, + 6.761567920133226784e-04, + 6.760852182965090048e-04, + 6.760125505826584903e-04, + 6.759387890579156375e-04, + 6.758639339101919817e-04, + 6.757879853291634889e-04, + 6.757109435062759765e-04, + 6.756328086347342717e-04, + 6.755535809095124028e-04, + 6.754732605273443833e-04, + 6.753918476867293080e-04, + 6.753093425879348223e-04, + 6.752257454329853043e-04, + 6.751410564256703217e-04, + 6.750552757715369339e-04, + 6.749684036778983657e-04, + 6.748804403538306461e-04, + 6.747913860101658863e-04, + 6.747012408594970506e-04, + 6.746100051161809915e-04, + 6.745176789963274995e-04, + 6.744242627178072182e-04, + 6.743297565002522942e-04, + 6.742341605650539922e-04, + 6.741374751353551055e-04, + 6.740397004360552686e-04, + 6.739408366938139930e-04, + 6.738408841370520765e-04, + 6.737398429959363163e-04, + 6.736377135023888327e-04, + 6.735344958900947674e-04, + 6.734301903944839600e-04, + 6.733247972527414650e-04, + 6.732183167038155750e-04, + 6.731107489883974377e-04, + 6.730020943489266935e-04, + 6.728923530296092564e-04, + 6.727815252763800179e-04, + 6.726696113369504430e-04, + 6.725566114607628172e-04, + 6.724425258990148575e-04, + 6.723273549046574361e-04, + 6.722110987323790757e-04, + 6.720937576386249238e-04, + 6.719753318815908970e-04, + 6.718558217212127317e-04, + 6.717352274191705367e-04, + 6.716135492388992023e-04, + 6.714907874455671496e-04, + 6.713669423061036524e-04, + 6.712420140891658775e-04, + 6.711160030651647972e-04, + 6.709889095062529377e-04, + 6.708607336863188497e-04, + 6.707314758809979505e-04, + 6.706011363676734997e-04, + 6.704697154254605530e-04, + 6.703372133352153948e-04, + 6.702036303795391161e-04, + 6.700689668427635198e-04, + 6.699332230109706363e-04, + 6.697963991719762438e-04, + 6.696584956153259650e-04, + 6.695195126323090365e-04, + 6.693794505159486596e-04, + 6.692383095610146852e-04, + 6.690960900639940151e-04, + 6.689527923231194419e-04, + 6.688084166383555544e-04, + 6.686629633113989543e-04, + 6.685164326456754375e-04, + 6.683688249463549556e-04, + 6.682201405203345946e-04, + 6.680703796762314187e-04, + 6.679195427244015524e-04, + 6.677676299769296636e-04, + 6.676146417476386133e-04, + 6.674605783520653861e-04, + 6.673054401074773531e-04, + 6.671492273328792112e-04, + 6.669919403489907566e-04, + 6.668335794782631479e-04, + 6.666741450448734852e-04, + 6.665136373747271954e-04, + 6.663520567954404677e-04, + 6.661894036363716961e-04, + 6.660256782285801707e-04, + 6.658608809048711811e-04, + 6.656950119997523223e-04, + 6.655280718494654794e-04, + 6.653600607919631918e-04, + 6.651909791669175431e-04, + 6.650208273157227640e-04, + 6.648496055815048813e-04, + 6.646773143090835539e-04, + 6.645039538450051410e-04, + 6.643295245375397751e-04, + 6.641540267366566417e-04, + 6.639774607940636614e-04, + 6.637998270631587008e-04, + 6.636211258990708803e-04, + 6.634413576586317349e-04, + 6.632605227003798756e-04, + 6.630786213845849507e-04, + 6.628956540732168544e-04, + 6.627116211299494131e-04, + 6.625265229201761060e-04, + 6.623403598109904415e-04, + 6.621531321711930044e-04, + 6.619648403713050081e-04, + 6.617754847835487795e-04, + 6.615850657818441805e-04, + 6.613935837418167402e-04, + 6.612010390408028584e-04, + 6.610074320578520832e-04, + 6.608127631736997881e-04, + 6.606170327707830024e-04, + 6.604202412332573239e-04, + 6.602223889469650440e-04, + 6.600234762994425198e-04, + 6.598235036799497731e-04, + 6.596224714794303749e-04, + 6.594203800905204440e-04, + 6.592172299075581884e-04, + 6.590130213265771829e-04, + 6.588077547453225239e-04, + 6.586014305632094130e-04, + 6.583940491813577425e-04, + 6.581856110025870003e-04, + 6.579761164313959951e-04, + 6.577655658739821548e-04, + 6.575539597382478157e-04, + 6.573412984337642260e-04, + 6.571275823717953992e-04, + 6.569128119653081964e-04, + 6.566969876289365481e-04, + 6.564801097790277495e-04, + 6.562621788335902019e-04, + 6.560431952123378652e-04, + 6.558231593366572977e-04, + 6.556020716296098250e-04, + 6.553799325159690532e-04, + 6.551567424221751154e-04, + 6.549325017763422616e-04, + 6.547072110082711094e-04, + 6.544808705494509216e-04, + 6.542534808330309828e-04, + 6.540250422938690637e-04, + 6.537955553684677776e-04, + 6.535650204950337787e-04, + 6.533334381134278885e-04, + 6.531008086651966457e-04, + 6.528671325935666691e-04, + 6.526324103434311043e-04, + 6.523966423613485402e-04, + 6.521598290955674029e-04, + 6.519219709959919121e-04, + 6.516830685141919476e-04, + 6.514431221034313463e-04, + 6.512021322186265946e-04, + 6.509600993163596220e-04, + 6.507170238548754156e-04, + 6.504729062940941631e-04, + 6.502277470956151564e-04, + 6.499815467226735316e-04, + 6.497343056401753969e-04, + 6.494860243147040132e-04, + 6.492367032144919295e-04, + 6.489863428094238022e-04, + 6.487349435710721736e-04, + 6.484825059726506344e-04, + 6.482290304890228226e-04, + 6.479745175967311548e-04, + 6.477189677739460857e-04, + 6.474623815005337620e-04, + 6.472047592579743824e-04, + 6.469461015294307189e-04, + 6.466864087997008454e-04, + 6.464256815552368949e-04, + 6.461639202841483118e-04, + 6.459011254762068392e-04, + 6.456372976228112823e-04, + 6.453724372170129876e-04, + 6.451065447535228896e-04, + 6.448396207286763828e-04, + 6.445716656404931700e-04, + 6.443026799885947543e-04, + 6.440326642742798995e-04, + 6.437616190004677094e-04, + 6.434895446717203964e-04, + 6.432164417942625801e-04, + 6.429423108759470262e-04, + 6.426671524262590925e-04, + 6.423909669563207395e-04, + 6.421137549789123237e-04, + 6.418355170084160018e-04, + 6.415562535608917332e-04, + 6.412759651540096261e-04, + 6.409946523070710793e-04, + 6.407123155410116011e-04, + 6.404289553784023271e-04, + 6.401445723434610793e-04, + 6.398591669620100819e-04, + 6.395727397615061025e-04, + 6.392852912710469569e-04, + 6.389968220213454887e-04, + 6.387073325447285930e-04, + 6.384168233751861144e-04, + 6.381252950483051441e-04, + 6.378327481012971249e-04, + 6.375391830729928641e-04, + 6.372446005038474122e-04, + 6.369490009359613132e-04, + 6.366523849130179382e-04, + 6.363547529803240338e-04, + 6.360561056848290217e-04, + 6.357564435750684027e-04, + 6.354557672012110282e-04, + 6.351540771150401268e-04, + 6.348513738699491839e-04, + 6.345476580209318592e-04, + 6.342429301246178732e-04, + 6.339371907392127260e-04, + 6.336304404245774943e-04, + 6.333226797421362408e-04, + 6.330139092549507155e-04, + 6.327041295276761203e-04, + 6.323933411265568807e-04, + 6.320815446194830243e-04, + 6.317687405759201411e-04, + 6.314549295669385489e-04, + 6.311401121651983312e-04, + 6.308242889449894525e-04, + 6.305074604821629116e-04, + 6.301896273542158516e-04, + 6.298707901401963665e-04, + 6.295509494207784202e-04, + 6.292301057782072023e-04, + 6.289082597963416288e-04, + 6.285854120606260446e-04, + 6.282615631581041013e-04, + 6.279367136773887246e-04, + 6.276108642087091689e-04, + 6.272840153438648302e-04, + 6.269561676762347869e-04, + 6.266273218008180240e-04, + 6.262974783141795482e-04, + 6.259666378144629643e-04, + 6.256348009013909094e-04, + 6.253019681762780630e-04, + 6.249681402420436153e-04, + 6.246333177031452395e-04, + 6.242975011656318922e-04, + 6.239606912371515116e-04, + 6.236228885269048299e-04, + 6.232840936456612033e-04, + 6.229443072058031723e-04, + 6.226035298212631445e-04, + 6.222617621075375973e-04, + 6.219190046816983541e-04, + 6.215752581623916083e-04, + 6.212305231698536439e-04, + 6.208848003258474104e-04, + 6.205380902537397173e-04, + 6.201903935784377001e-04, + 6.198417109264077940e-04, + 6.194920429257182344e-04, + 6.191413902059772576e-04, + 6.187897533983430752e-04, + 6.184371331355369931e-04, + 6.180835300518655291e-04, + 6.177289447831485307e-04, + 6.173733779668177284e-04, + 6.170168302418123276e-04, + 6.166593022486578299e-04, + 6.163007946294133408e-04, + 6.159413080276818697e-04, + 6.155808430886547822e-04, + 6.152194004590541207e-04, + 6.148569807871394344e-04, + 6.144935847227166702e-04, + 6.141292129171660365e-04, + 6.137638660233715304e-04, + 6.133975446958154793e-04, + 6.130302495904716396e-04, + 6.126619813648910649e-04, + 6.122927406781354274e-04, + 6.119225281908248319e-04, + 6.115513445651319605e-04, + 6.111791904647414153e-04, + 6.108060665548699928e-04, + 6.104319735022983428e-04, + 6.100569119753148067e-04, + 6.096808826437342824e-04, + 6.093038861789408338e-04, + 6.089259232538274088e-04, + 6.085469945428046215e-04, + 6.081671007218135460e-04, + 6.077862424683289685e-04, + 6.074044204613730487e-04, + 6.070216353814550381e-04, + 6.066378879106142140e-04, + 6.062531787324341916e-04, + 6.058675085319801482e-04, + 6.054808779958945585e-04, + 6.050932878122790163e-04, + 6.047047386707911625e-04, + 6.043152312625778982e-04, + 6.039247662803256915e-04, + 6.035333444181986695e-04, + 6.031409663719291495e-04, + 6.027476328387015208e-04, + 6.023533445172536173e-04, + 6.019581021078015829e-04, + 6.015619063120658918e-04, + 6.011647578333117895e-04, + 6.007666573762859754e-04, + 6.003676056472267942e-04, + 5.999676033538787643e-04, + 5.995666512055091660e-04, + 5.991647499128452663e-04, + 5.987619001881699455e-04, + 5.983581027452072052e-04, + 5.979533582992141091e-04, + 5.975476675669212602e-04, + 5.971410312665434254e-04, + 5.967334501178273498e-04, + 5.963249248419914741e-04, + 5.959154561617179121e-04, + 5.955050448012188039e-04, + 5.950936914861636737e-04, + 5.946813969437005727e-04, + 5.942681619025054094e-04, + 5.938539870927101762e-04, + 5.934388732459240905e-04, + 5.930228210952279578e-04, + 5.926058313752017095e-04, + 5.921879048219223438e-04, + 5.917690421729040768e-04, + 5.913492441671411694e-04, + 5.909285115451339476e-04, + 5.905068450488228831e-04, + 5.900842454216151563e-04, + 5.896607134084346381e-04, + 5.892362497556435019e-04, + 5.888108552110637994e-04, + 5.883845305239841826e-04, + 5.879572764451671679e-04, + 5.875290937268698443e-04, + 5.870999831227598480e-04, + 5.866699453879808479e-04, + 5.862389812791610026e-04, + 5.858070915543398850e-04, + 5.853742769730746259e-04, + 5.849405382963447208e-04, + 5.845058762865776173e-04, + 5.840702917076560875e-04, + 5.836337853249389364e-04, + 5.831963579051910708e-04, + 5.827580102166891006e-04, + 5.823187430290989322e-04, + 5.818785571135731303e-04, + 5.814374532426829379e-04, + 5.809954321904344313e-04, + 5.805524947323255488e-04, + 5.801086416452633666e-04, + 5.796638737075876253e-04, + 5.792181916990768020e-04, + 5.787715964009734803e-04, + 5.783240885959068300e-04, + 5.778756690680151220e-04, + 5.774263386027910123e-04, + 5.769760979872169595e-04, + 5.765249480096594058e-04, + 5.760728894599505268e-04, + 5.756199231293313099e-04, + 5.751660498104882013e-04, + 5.747112702974945583e-04, + 5.742555853858919649e-04, + 5.737989958726122776e-04, + 5.733415025559989841e-04, + 5.728831062358634733e-04, + 5.724238077134059972e-04, + 5.719636077912328012e-04, + 5.715025072733663156e-04, + 5.710405069652497089e-04, + 5.705776076737722590e-04, + 5.701138102071801224e-04, + 5.696491153751438805e-04, + 5.691835239887682975e-04, + 5.687170368605163175e-04, + 5.682496548043243154e-04, + 5.677813786354658126e-04, + 5.673122091706651014e-04, + 5.668421472280163638e-04, + 5.663711936270137033e-04, + 5.658993491885619875e-04, + 5.654266147349896413e-04, + 5.649529910899619110e-04, + 5.644784790785906939e-04, + 5.640030795273443323e-04, + 5.635267932640748278e-04, + 5.630496211180768210e-04, + 5.625715639200000971e-04, + 5.620926225018723537e-04, + 5.616127976971051639e-04, + 5.611320903405250934e-04, + 5.606505012682901079e-04, + 5.601680313180128472e-04, + 5.596846813286095960e-04, + 5.592004521404306044e-04, + 5.587153445951690157e-04, + 5.582293595358813572e-04, + 5.577424978070546525e-04, + 5.572547602545123132e-04, + 5.567661477254416767e-04, + 5.562766610683967175e-04, + 5.557863011333321994e-04, + 5.552950687715153127e-04, + 5.548029648356552369e-04, + 5.543099901797453885e-04, + 5.538161456591990557e-04, + 5.533214321307461814e-04, + 5.528258504524948382e-04, + 5.523294014839462982e-04, + 5.518320860859024426e-04, + 5.513339051205288621e-04, + 5.508348594513790344e-04, + 5.503349499433044445e-04, + 5.498341774625805679e-04, + 5.493325428767563846e-04, + 5.488300470547814464e-04, + 5.483266908669208765e-04, + 5.478224751847818232e-04, + 5.473174008813252783e-04, + 5.468114688308875438e-04, + 5.463046799090862321e-04, + 5.457970349928934492e-04, + 5.452885349606457696e-04, + 5.447791806919631379e-04, + 5.442689730678750698e-04, + 5.437579129706670211e-04, + 5.432460012840068051e-04, + 5.427332388928512432e-04, + 5.422196266835279136e-04, + 5.417051655436333447e-04, + 5.411898563621681067e-04, + 5.406737000293745064e-04, + 5.401566974368789435e-04, + 5.396388494775848990e-04, + 5.391201570457126177e-04, + 5.386006210368480054e-04, + 5.380802423478602296e-04, + 5.375590218769237287e-04, + 5.370369605235225489e-04, + 5.365140591884867737e-04, + 5.359903187738965713e-04, + 5.354657401832225994e-04, + 5.349403243211582788e-04, + 5.344140720937613906e-04, + 5.338869844083583404e-04, + 5.333590621735620485e-04, + 5.328303062993454582e-04, + 5.323007176969452589e-04, + 5.317702972788722945e-04, + 5.312390459589756394e-04, + 5.307069646523655121e-04, + 5.301740542754344171e-04, + 5.296403157459189442e-04, + 5.291057499828107557e-04, + 5.285703579063817398e-04, + 5.280341404381837939e-04, + 5.274970985010656293e-04, + 5.269592330191952148e-04, + 5.264205449179641498e-04, + 5.258810351240510899e-04, + 5.253407045654521048e-04, + 5.247995541713764865e-04, + 5.242575848723938755e-04, + 5.237147976002610051e-04, + 5.231711932880680690e-04, + 5.226267728701400588e-04, + 5.220815372820664709e-04, + 5.215354874607199551e-04, + 5.209886243442684575e-04, + 5.204409488720883759e-04, + 5.198924619848290700e-04, + 5.193431646244327021e-04, + 5.187930577340445736e-04, + 5.182421422581354230e-04, + 5.176904191423973428e-04, + 5.171378893337625357e-04, + 5.165845537804196865e-04, + 5.160304134318359709e-04, + 5.154754692386753073e-04, + 5.149197221529283521e-04, + 5.143631731277500865e-04, + 5.138058231175979436e-04, + 5.132476730781337969e-04, + 5.126887239662523662e-04, + 5.121289767401449684e-04, + 5.115684323592054094e-04, + 5.110070917840515590e-04, + 5.104449559765321821e-04, + 5.098820258997699808e-04, + 5.093183025180545841e-04, + 5.087537867969891322e-04, + 5.081884797033243929e-04, + 5.076223822050913602e-04, + 5.070554952715011819e-04, + 5.064878198730232229e-04, + 5.059193569813339982e-04, + 5.053501075693430863e-04, + 5.047800726111427135e-04, + 5.042092530820872255e-04, + 5.036376499586840173e-04, + 5.030652642187415265e-04, + 5.024920968411915323e-04, + 5.019181488062372581e-04, + 5.013434210952537329e-04, + 5.007679146908192332e-04, + 5.001916305767293777e-04, + 4.996145697380252083e-04, + 4.990367331608780476e-04, + 4.984581218326763433e-04, + 4.978787367420444256e-04, + 4.972985788787353872e-04, + 4.967176492337878595e-04, + 4.961359487993466854e-04, + 4.955534785688059255e-04, + 4.949702395367007630e-04, + 4.943862326988070341e-04, + 4.938014590520175195e-04, + 4.932159195945045758e-04, + 4.926296153255281226e-04, + 4.920425472455962129e-04, + 4.914547163563558543e-04, + 4.908661236606189212e-04, + 4.902767701624384826e-04, + 4.896866568670010323e-04, + 4.890957847806550038e-04, + 4.885041549109159741e-04, + 4.879117682665096525e-04, + 4.873186258572632977e-04, + 4.867247286942597288e-04, + 4.861300777896572934e-04, + 4.855346741568375901e-04, + 4.849385188103056679e-04, + 4.843416127657104633e-04, + 4.837439570399263864e-04, + 4.831455526509383959e-04, + 4.825464006178769097e-04, + 4.819465019610210581e-04, + 4.813458577018141877e-04, + 4.807444688628857081e-04, + 4.801423364679349736e-04, + 4.795394615418695737e-04, + 4.789358451107003276e-04, + 4.783314882015822131e-04, + 4.777263918428203298e-04, + 4.771205570638980880e-04, + 4.765139848953679758e-04, + 4.759066763689308679e-04, + 4.752986325174590114e-04, + 4.746898543748899360e-04, + 4.740803429763834468e-04, + 4.734700993581316721e-04, + 4.728591245575206633e-04, + 4.722474196130207287e-04, + 4.716349855642195006e-04, + 4.710218234518447587e-04, + 4.704079343177785242e-04, + 4.697933192049538981e-04, + 4.691779791574323105e-04, + 4.685619152204277527e-04, + 4.679451284402003086e-04, + 4.673276198642104906e-04, + 4.667093905409368769e-04, + 4.660904415200281710e-04, + 4.654707738521845356e-04, + 4.648503885892641156e-04, + 4.642292867841519579e-04, + 4.636074694909362486e-04, + 4.629849377647017724e-04, + 4.623616926616953620e-04, + 4.617377352392215977e-04, + 4.611130665556578776e-04, + 4.604876876705432686e-04, + 4.598615996444649899e-04, + 4.592348035390797717e-04, + 4.586073004171300105e-04, + 4.579790913424835585e-04, + 4.573501773800191781e-04, + 4.567205595957937259e-04, + 4.560902390568392440e-04, + 4.554592168313390346e-04, + 4.548274939885056331e-04, + 4.541950715986104066e-04, + 4.535619507330625926e-04, + 4.529281324643004447e-04, + 4.522936178658024001e-04, + 4.516584080121619979e-04, + 4.510225039789710023e-04, + 4.503859068429784548e-04, + 4.497486176818942167e-04, + 4.491106375745565872e-04, + 4.484719676008171066e-04, + 4.478326088415830568e-04, + 4.471925623788249428e-04, + 4.465518292956060912e-04, + 4.459104106759711941e-04, + 4.452683076050212275e-04, + 4.446255211689456523e-04, + 4.439820524549099282e-04, + 4.433379025512140781e-04, + 4.426930725471025737e-04, + 4.420475635329246342e-04, + 4.414013766000256440e-04, + 4.407545128407829309e-04, + 4.401069733486214874e-04, + 4.394587592180364678e-04, + 4.388098715444817863e-04, + 4.381603114244534379e-04, + 4.375100799555122128e-04, + 4.368591782361712101e-04, + 4.362076073660509871e-04, + 4.355553684457457689e-04, + 4.349024625768551072e-04, + 4.342488908619938004e-04, + 4.335946544048321178e-04, + 4.329397543099787601e-04, + 4.322841916831548191e-04, + 4.316279676309883761e-04, + 4.309710832611853720e-04, + 4.303135396824130012e-04, + 4.296553380043231850e-04, + 4.289964793376463545e-04, + 4.283369647940623768e-04, + 4.276767954862368756e-04, + 4.270159725278282244e-04, + 4.263544970335034299e-04, + 4.256923701189649118e-04, + 4.250295929008280423e-04, + 4.243661664967142790e-04, + 4.237020920252719818e-04, + 4.230373706060753104e-04, + 4.223720033597227249e-04, + 4.217059914077791972e-04, + 4.210393358728034790e-04, + 4.203720378782826702e-04, + 4.197040985487393377e-04, + 4.190355190095939306e-04, + 4.183663003873419389e-04, + 4.176964438093404134e-04, + 4.170259504039910341e-04, + 4.163548213006126614e-04, + 4.156830576294890962e-04, + 4.150106605218775897e-04, + 4.143376311100412622e-04, + 4.136639705271233890e-04, + 4.129896799072404253e-04, + 4.123147603855042325e-04, + 4.116392130979041708e-04, + 4.109630391814842040e-04, + 4.102862397741306125e-04, + 4.096088160147495316e-04, + 4.089307690431324559e-04, + 4.082521000000719782e-04, + 4.075728100272251256e-04, + 4.068929002672907352e-04, + 4.062123718638023713e-04, + 4.055312259612999545e-04, + 4.048494637052099578e-04, + 4.041670862418767396e-04, + 4.034840947186471116e-04, + 4.028004902837476072e-04, + 4.021162740863170075e-04, + 4.014314472764146354e-04, + 4.007460110050367814e-04, + 4.000599664241416943e-04, + 3.993733146865318913e-04, + 3.986860569459397554e-04, + 3.979981943570515507e-04, + 3.973097280754241015e-04, + 3.966206592575061509e-04, + 3.959309890607319278e-04, + 3.952407186433897412e-04, + 3.945498491646601985e-04, + 3.938583817846270474e-04, + 3.931663176642822720e-04, + 3.924736579655671294e-04, + 3.917804038512238312e-04, + 3.910865564849657088e-04, + 3.903921170313510124e-04, + 3.896970866558277968e-04, + 3.890014665247479081e-04, + 3.883052578053934915e-04, + 3.876084616658549654e-04, + 3.869110792751197627e-04, + 3.862131118031025259e-04, + 3.855145604205146778e-04, + 3.848154262990579515e-04, + 3.841157106111941599e-04, + 3.834154145303372624e-04, + 3.827145392307248323e-04, + 3.820130858874618051e-04, + 3.813110556765366321e-04, + 3.806084497748450798e-04, + 3.799052693600713459e-04, + 3.792015156107728991e-04, + 3.784971897064126796e-04, + 3.777922928272337650e-04, + 3.770868261544396737e-04, + 3.763807908699793128e-04, + 3.756741881567291787e-04, + 3.749670191983534408e-04, + 3.742592851794227155e-04, + 3.735509872852746925e-04, + 3.728421267022006169e-04, + 3.721327046172206434e-04, + 3.714227222182730831e-04, + 3.707121806940858713e-04, + 3.700010812342039443e-04, + 3.692894250290854074e-04, + 3.685772132699712683e-04, + 3.678644471489155780e-04, + 3.671511278587982242e-04, + 3.664372565933397309e-04, + 3.657228345471312363e-04, + 3.650078629155047139e-04, + 3.642923428946275152e-04, + 3.635762756815299080e-04, + 3.628596624739956265e-04, + 3.621425044706651957e-04, + 3.614248028709769506e-04, + 3.607065588751934911e-04, + 3.599877736843344611e-04, + 3.592684485002889264e-04, + 3.585485845256700913e-04, + 3.578281829640004804e-04, + 3.571072450194934180e-04, + 3.563857718972354444e-04, + 3.556637648030613625e-04, + 3.549412249435981472e-04, + 3.542181535262801787e-04, + 3.534945517593762938e-04, + 3.527704208518640718e-04, + 3.520457620135219383e-04, + 3.513205764549559443e-04, + 3.505948653874756799e-04, + 3.498686300232800518e-04, + 3.491418715752316070e-04, + 3.484145912570497374e-04, + 3.476867902831763473e-04, + 3.469584698688232328e-04, + 3.462296312299898088e-04, + 3.455002755834848472e-04, + 3.447704041467899755e-04, + 3.440400181382275661e-04, + 3.433091187768322035e-04, + 3.425777072823797415e-04, + 3.418457848754843931e-04, + 3.411133527774649942e-04, + 3.403804122103762288e-04, + 3.396469643970246211e-04, + 3.389130105609801900e-04, + 3.381785519266060488e-04, + 3.374435897189300890e-04, + 3.367081251637378970e-04, + 3.359721594876043040e-04, + 3.352356939177911460e-04, + 3.344987296822835303e-04, + 3.337612680098777642e-04, + 3.330233101300567804e-04, + 3.322848572730134468e-04, + 3.315459106696712214e-04, + 3.308064715516945598e-04, + 3.300665411515190566e-04, + 3.293261207022215036e-04, + 3.285852114376165462e-04, + 3.278438145922815119e-04, + 3.271019314014454423e-04, + 3.263595631010837435e-04, + 3.256167109279327148e-04, + 3.248733761193540234e-04, + 3.241295599134355891e-04, + 3.233852635490164131e-04, + 3.226404882655595631e-04, + 3.218952353033428305e-04, + 3.211495059032268198e-04, + 3.204033013068537366e-04, + 3.196566227565096402e-04, + 3.189094714951724733e-04, + 3.181618487665288132e-04, + 3.174137558150041754e-04, + 3.166651938856258073e-04, + 3.159161642241234110e-04, + 3.151666680769581999e-04, + 3.144167066911899753e-04, + 3.136662813146704398e-04, + 3.129153931958151896e-04, + 3.121640435837935040e-04, + 3.114122337283816528e-04, + 3.106599648800765752e-04, + 3.099072382900245389e-04, + 3.091540552100560516e-04, + 3.084004168926152796e-04, + 3.076463245908737801e-04, + 3.068917795586138960e-04, + 3.061367830502572697e-04, + 3.053813363209656202e-04, + 3.046254406265041874e-04, + 3.038690972232726867e-04, + 3.031123073683185897e-04, + 3.023550723193546346e-04, + 3.015973933347886418e-04, + 3.008392716735878254e-04, + 3.000807085953762637e-04, + 2.993217053604689971e-04, + 2.985622632297643664e-04, + 2.978023834647808765e-04, + 2.970420673277529848e-04, + 2.962813160814946551e-04, + 2.955201309894324251e-04, + 2.947585133156175501e-04, + 2.939964643247440002e-04, + 2.932339852821770837e-04, + 2.924710774538011164e-04, + 2.917077421062032479e-04, + 2.909439805065349555e-04, + 2.901797939225613746e-04, + 2.894151836226772911e-04, + 2.886501508759369570e-04, + 2.878846969519165589e-04, + 2.871188231208159710e-04, + 2.863525306534867813e-04, + 2.855858208213006696e-04, + 2.848186948963426124e-04, + 2.840511541511791887e-04, + 2.832831998590541701e-04, + 2.825148332937550558e-04, + 2.817460557296577414e-04, + 2.809768684417447335e-04, + 2.802072727056367546e-04, + 2.794372697974513626e-04, + 2.786668609939073056e-04, + 2.778960475723539578e-04, + 2.771248308106311325e-04, + 2.763532119872777362e-04, + 2.755811923812838122e-04, + 2.748087732722967014e-04, + 2.740359559404663805e-04, + 2.732627416665419566e-04, + 2.724891317318917788e-04, + 2.717151274183591853e-04, + 2.709407300083668574e-04, + 2.701659407849470694e-04, + 2.693907610316385263e-04, + 2.686151920325155289e-04, + 2.678392350722927622e-04, + 2.670628914361812588e-04, + 2.662861624099245573e-04, + 2.655090492798133387e-04, + 2.647315533326969738e-04, + 2.639536758560203852e-04, + 2.631754181376799034e-04, + 2.623967814661294098e-04, + 2.616177671304074416e-04, + 2.608383764200190142e-04, + 2.600586106250498959e-04, + 2.592784710360990078e-04, + 2.584979589443094864e-04, + 2.577170756412972886e-04, + 2.569358224192694242e-04, + 2.561542005708679934e-04, + 2.553722113893733660e-04, + 2.545898561684630012e-04, + 2.538071362024130000e-04, + 2.530240527859605208e-04, + 2.522406072143526762e-04, + 2.514568007833603569e-04, + 2.506726347893135226e-04, + 2.498881105289586834e-04, + 2.491032292995600558e-04, + 2.483179923989341491e-04, + 2.475324011253067589e-04, + 2.467464567775208627e-04, + 2.459601606547896389e-04, + 2.451735140569047421e-04, + 2.443865182840938388e-04, + 2.435991746370527538e-04, + 2.428114844170489576e-04, + 2.420234489257804575e-04, + 2.412350694653893227e-04, + 2.404463473385655512e-04, + 2.396572838484217901e-04, + 2.388678802985270543e-04, + 2.380781379930086957e-04, + 2.372880582364118634e-04, + 2.364976423337291841e-04, + 2.357068915904201147e-04, + 2.349158073124226246e-04, + 2.341243908061892999e-04, + 2.333326433785418163e-04, + 2.325405663367773534e-04, + 2.317481609886981120e-04, + 2.309554286425064722e-04, + 2.301623706068370041e-04, + 2.293689881908590874e-04, + 2.285752827041354508e-04, + 2.277812554566543989e-04, + 2.269869077588454259e-04, + 2.261922409215940950e-04, + 2.253972562562754601e-04, + 2.246019550746126579e-04, + 2.238063386887768989e-04, + 2.230104084114240047e-04, + 2.222141655555667707e-04, + 2.214176114346791575e-04, + 2.206207473627129338e-04, + 2.198235746539525012e-04, + 2.190260946231190053e-04, + 2.182283085854049487e-04, + 2.174302178563287447e-04, + 2.166318237519453246e-04, + 2.158331275885987490e-04, + 2.150341306831282607e-04, + 2.142348343527266069e-04, + 2.134352399149738657e-04, + 2.126353486879406897e-04, + 2.118351619900445950e-04, + 2.110346811400834357e-04, + 2.102339074572499053e-04, + 2.094328422611849063e-04, + 2.086314868718301804e-04, + 2.078298426096421129e-04, + 2.070279107953391679e-04, + 2.062256927501146899e-04, + 2.054231897954718344e-04, + 2.046204032533480881e-04, + 2.038173344460429530e-04, + 2.030139846962479241e-04, + 2.022103553269756645e-04, + 2.014064476616830347e-04, + 2.006022630241408803e-04, + 1.997978027384719518e-04, + 1.989930681292515185e-04, + 1.981880605213651755e-04, + 1.973827812400424811e-04, + 1.965772316108707531e-04, + 1.957714129598104647e-04, + 1.949653266132334354e-04, + 1.941589738977713678e-04, + 1.933523561404249999e-04, + 1.925454746685966313e-04, + 1.917383308099801303e-04, + 1.909309258925949784e-04, + 1.901232612448923865e-04, + 1.893153381956081955e-04, + 1.885071580737788144e-04, + 1.876987222088477699e-04, + 1.868900319305020737e-04, + 1.860810885688838311e-04, + 1.852718934543383540e-04, + 1.844624479176257975e-04, + 1.836527532897775836e-04, + 1.828428109021448930e-04, + 1.820326220864191831e-04, + 1.812221881746606754e-04, + 1.804115104991550517e-04, + 1.796005903925210873e-04, + 1.787894291877394103e-04, + 1.779780282180109044e-04, + 1.771663888169684265e-04, + 1.763545123184232931e-04, + 1.755424000565778927e-04, + 1.747300533658808629e-04, + 1.739174735810616228e-04, + 1.731046620372328026e-04, + 1.722916200697487013e-04, + 1.714783490142347496e-04, + 1.706648502066059417e-04, + 1.698511249831180091e-04, + 1.690371746802209185e-04, + 1.682230006347551390e-04, + 1.674086041837876565e-04, + 1.665939866646447710e-04, + 1.657791494149275465e-04, + 1.649640937725312454e-04, + 1.641488210756736257e-04, + 1.633333326627532905e-04, + 1.625176298724532564e-04, + 1.617017140437750241e-04, + 1.608855865159296706e-04, + 1.600692486283690204e-04, + 1.592527017208947965e-04, + 1.584359471335092999e-04, + 1.576189862064517836e-04, + 1.568018202802120057e-04, + 1.559844506955474408e-04, + 1.551668787935175681e-04, + 1.543491059153361488e-04, + 1.535311334024767730e-04, + 1.527129625967104277e-04, + 1.518945948399711636e-04, + 1.510760314744853867e-04, + 1.502572738426957472e-04, + 1.494383232872933942e-04, + 1.486191811511452805e-04, + 1.477998487774188723e-04, + 1.469803275094154807e-04, + 1.461606186907869395e-04, + 1.453407236652786761e-04, + 1.445206437769455221e-04, + 1.437003803700042347e-04, + 1.428799347888675135e-04, + 1.420593083782511199e-04, + 1.412385024830262897e-04, + 1.404175184482535604e-04, + 1.395963576191989802e-04, + 1.387750213413861493e-04, + 1.379535109604484978e-04, + 1.371318278223469388e-04, + 1.363099732731104464e-04, + 1.354879486590534381e-04, + 1.346657553266105692e-04, + 1.338433946224603050e-04, + 1.330208678934513848e-04, + 1.321981764866362696e-04, + 1.313753217491956543e-04, + 1.305523050285650754e-04, + 1.297291276723040482e-04, + 1.289057910281304084e-04, + 1.280822964440284887e-04, + 1.272586452680996613e-04, + 1.264348388485978187e-04, + 1.256108785339447962e-04, + 1.247867656727460388e-04, + 1.239625016138257835e-04, + 1.231380877060782525e-04, + 1.223135252985750165e-04, + 1.214888157405999734e-04, + 1.206639603815363071e-04, + 1.198389605709017917e-04, + 1.190138176584561679e-04, + 1.181885329940524722e-04, + 1.173631079276713109e-04, + 1.165375438094368930e-04, + 1.157118419896338622e-04, + 1.148860038187407448e-04, + 1.140600306472631720e-04, + 1.132339238259342677e-04, + 1.124076847055635787e-04, + 1.115813146370740050e-04, + 1.107548149716077265e-04, + 1.099281870603789006e-04, + 1.091014322547061475e-04, + 1.082745519060308598e-04, + 1.074475473659686480e-04, + 1.066204199861606823e-04, + 1.057931711184913876e-04, + 1.049658021148299283e-04, + 1.041383143272486757e-04, + 1.033107091078719884e-04, + 1.024829878089130483e-04, + 1.016551517827813593e-04, + 1.008272023819320701e-04, + 9.999914095890253900e-05, + 9.917096886632760782e-05, + 9.834268745699184652e-05, + 9.751429808368160051e-05, + 9.668580209940288810e-05, + 9.585720085712094805e-05, + 9.502849570998023773e-05, + 9.419968801113525695e-05, + 9.337077911387823984e-05, + 9.254177037156243401e-05, + 9.171266313763752685e-05, + 9.088345876557323640e-05, + 9.005415860898635270e-05, + 8.922476402150873623e-05, + 8.839527635682366572e-05, + 8.756569696877233400e-05, + 8.673602721120563745e-05, + 8.590626843801782702e-05, + 8.507642200316342174e-05, + 8.424648926067297033e-05, + 8.341647156468794892e-05, + 8.258637026931138513e-05, + 8.175618672871541094e-05, + 8.092592229717679735e-05, + 8.009557832896356045e-05, + 7.926515617836975074e-05, + 7.843465719982457807e-05, + 7.760408274774151780e-05, + 7.677343417653527857e-05, + 7.594271284073012766e-05, + 7.511192009479131107e-05, + 7.428105729334521438e-05, + 7.345012579091751432e-05, + 7.261912694215388170e-05, + 7.178806210166830152e-05, + 7.095693262407981388e-05, + 7.012573986411959248e-05, + 6.929448517648155513e-05, + 6.846316991585708531e-05, + 6.763179543695148495e-05, + 6.680036309453669377e-05, + 6.596887424330154736e-05, + 6.513733023807197870e-05, + 6.430573243354841082e-05, + 6.347408218452731349e-05, + 6.264238084574975376e-05, + 6.181062977193642924e-05, + 6.097883031789696920e-05, + 6.014698383837923051e-05, + 5.931509168810420894e-05, + 5.848315522178256643e-05, + 5.765117579416769605e-05, + 5.681915475990526184e-05, + 5.598709347373521277e-05, + 5.515499329032228128e-05, + 5.432285556429184326e-05, + 5.349068165024470389e-05, + 5.265847290277489207e-05, + 5.182623067650330459e-05, + 5.099395632592856734e-05, + 5.016165120553466272e-05, + 4.932931666982701320e-05, + 4.849695407321809125e-05, + 4.766456477006262882e-05, + 4.683215011476727757e-05, + 4.599971146163910518e-05, + 4.516725016492096750e-05, + 4.433476757880790023e-05, + 4.350226505746305003e-05, + 4.266974395505346664e-05, + 4.183720562559848407e-05, + 4.100465142307948923e-05, + 4.017208270147431826e-05, + 3.933950081460737240e-05, + 3.850690711636916885e-05, + 3.767430296045512267e-05, + 3.684168970058583625e-05, + 3.600906869033727268e-05, + 3.517644128328807840e-05, + 3.434380883284959395e-05, + 3.351117269248653647e-05, + 3.267853421545511070e-05, + 3.184589475502342727e-05, + 3.101325566432083249e-05, + 3.018061829637281627e-05, + 2.934798400421028615e-05, + 2.851535414071874796e-05, + 2.768273005867331885e-05, + 2.685011311075506817e-05, + 2.601750464960462118e-05, + 2.518490602767107541e-05, + 2.435231859743320165e-05, + 2.351974371113682986e-05, + 2.268718272101555208e-05, + 2.185463697912160040e-05, + 2.102210783745356266e-05, + 2.018959664787977332e-05, + 1.935710476217338409e-05, + 1.852463353193595810e-05, + 1.769218430872505684e-05, + 1.685975844392227917e-05, + 1.602735728876819634e-05, + 1.519498219447131263e-05, + 1.436263451205772209e-05, + 1.353031559240569457e-05, + 1.269802678626227929e-05, + 1.186576944425970843e-05, + 1.103354491695010012e-05, + 1.020135455465495421e-05, + 9.369199707574367016e-06, + 8.537081725821818955e-06, + 7.705001959273668656e-06, + 6.872961757789489093e-06, + 6.040962470950275964e-06, + 5.209005448278762653e-06, + 4.377092039088942284e-06, + 3.545223592539439270e-06, + 2.713401457649938785e-06, + 1.881626983336067584e-06, + 1.049901518240273070e-06, + 2.182264109337051070e-07, +-6.133969902343927706e-07, +-1.444967337101748485e-06, +-2.276483281583936418e-06, +-3.107943475824985290e-06, +-3.939346572162430935e-06, +-4.770691223110953635e-06, +-5.601976081308892433e-06, +-6.433199799668884442e-06, +-7.264361031157399952e-06, +-8.095458429056562858e-06, +-8.926490646743866190e-06, +-9.757456337842583137e-06, +-1.058835415618700143e-05, +-1.141918275571317812e-05, +-1.224994079060971821e-05, +-1.308062691528242458e-05, +-1.391123978433843138e-05, +-1.474177805253242251e-05, +-1.557224037491720188e-05, +-1.640262540662352586e-05, +-1.723293180312160435e-05, +-1.806315822000094336e-05, +-1.889330331313941280e-05, +-1.972336573859404023e-05, +-2.055334415258480878e-05, +-2.138323721164495808e-05, +-2.221304357251193385e-05, +-2.304276189209280865e-05, +-2.387239082761423038e-05, +-2.470192903640271214e-05, +-2.553137517614580295e-05, +-2.636072790467204556e-05, +-2.718998588010148064e-05, +-2.801914776079218205e-05, +-2.884821220532381763e-05, +-2.967717787246274469e-05, +-3.050604342131260226e-05, +-3.133480751120510147e-05, +-3.216346880166507359e-05, +-3.299202595256108938e-05, +-3.382047762388533222e-05, +-3.464882247601468076e-05, +-3.547705916949106308e-05, +-3.630518636519015181e-05, +-3.713320272417515943e-05, +-3.796110690786607550e-05, +-3.878889757781928219e-05, +-3.961657339598896902e-05, +-4.044413302450737183e-05, +-4.127157512583475181e-05, +-4.209889836272458588e-05, +-4.292610139811497023e-05, +-4.375318289527817251e-05, +-4.458014151778651331e-05, +-4.540697592949565593e-05, +-4.623368479449114159e-05, +-4.706026677723863962e-05, +-4.788672054236471490e-05, +-4.871304475491671122e-05, +-4.953923808014395921e-05, +-5.036529918364759278e-05, +-5.119122673134549550e-05, +-5.201701938936396171e-05, +-5.284267582418747904e-05, +-5.366819470264198427e-05, +-5.449357469178701908e-05, +-5.531881445904668137e-05, +-5.614391267217447675e-05, +-5.696886799914542690e-05, +-5.779367910830552680e-05, +-5.861834466833686736e-05, +-5.944286334824175181e-05, +-6.026723381732573473e-05, +-6.109145474516336125e-05, +-6.191552480174801736e-05, +-6.273944265738247970e-05, +-6.356320698264573217e-05, +-6.438681644854092568e-05, +-6.521026972627749416e-05, +-6.603356548753094293e-05, +-6.685670240422375858e-05, +-6.767967914867483912e-05, +-6.850249439354669332e-05, +-6.932514681182900152e-05, +-7.014763507680428706e-05, +-7.096995786219650621e-05, +-7.179211384206330554e-05, +-7.261410169076130039e-05, +-7.343592008309565407e-05, +-7.425756769411921590e-05, +-7.507904319930061316e-05, +-7.590034527448963797e-05, +-7.672147259590079451e-05, +-7.754242384006048480e-05, +-7.836319768395572061e-05, +-7.918379280481641568e-05, +-8.000420788037429314e-05, +-8.082444158864494736e-05, +-8.164449260807601374e-05, +-8.246435961751353129e-05, +-8.328404129609371222e-05, +-8.410353632339138269e-05, +-8.492284337938611511e-05, +-8.574196114444565336e-05, +-8.656088829927271913e-05, +-8.737962352505436079e-05, +-8.819816550324371702e-05, +-8.901651291581908691e-05, +-8.983466444506573432e-05, +-9.065261877374316667e-05, +-9.147037458495885253e-05, +-9.228793056224407509e-05, +-9.310528538951846520e-05, +-9.392243775116620725e-05, +-9.473938633190986513e-05, +-9.555612981697710539e-05, +-9.637266689188296240e-05, +-9.718899624268824433e-05, +-9.800511655578266563e-05, +-9.882102651803242052e-05, +-9.963672481672822257e-05, +-1.004522101395680117e-04, +-1.012674811746243467e-04, +-1.020825366104906914e-04, +-1.028973751361749730e-04, +-1.037119954410653755e-04, +-1.045263962150775607e-04, +-1.053405761484387903e-04, +-1.061545339319446918e-04, +-1.069682682567432583e-04, +-1.077817778144815955e-04, +-1.085950612972546117e-04, +-1.094081173975880228e-04, +-1.102209448084048914e-04, +-1.110335422231903846e-04, +-1.118459083357948019e-04, +-1.126580418405810397e-04, +-1.134699414323890707e-04, +-1.142816058064308573e-04, +-1.150930336584360007e-04, +-1.159042236846196078e-04, +-1.167151745816638326e-04, +-1.175258850466674477e-04, +-1.183363537772915601e-04, +-1.191465794715459704e-04, +-1.199565608280426854e-04, +-1.207662965457822628e-04, +-1.215757853243007479e-04, +-1.223850258636346403e-04, +-1.231940168642149127e-04, +-1.240027570270136497e-04, +-1.248112450535105052e-04, +-1.256194796456761682e-04, +-1.264274595059556661e-04, +-1.272351833372367333e-04, +-1.280426498429932780e-04, +-1.288498577271814344e-04, +-1.296568056942046514e-04, +-1.304634924490414660e-04, +-1.312699166971409588e-04, +-1.320760771444055154e-04, +-1.328819724973372206e-04, +-1.336876014629325554e-04, +-1.344929627486471878e-04, +-1.352980550625438032e-04, +-1.361028771130764299e-04, +-1.369074276093450095e-04, +-1.377117052608830834e-04, +-1.385157087778012323e-04, +-1.393194368707366881e-04, +-1.401228882508371795e-04, +-1.409260616297274026e-04, +-1.417289557196538437e-04, +-1.425315692333801261e-04, +-1.433339008841522891e-04, +-1.441359493858448027e-04, +-1.449377134527479554e-04, +-1.457391917998199042e-04, +-1.465403831424742526e-04, +-1.473412861967427889e-04, +-1.481418996791353531e-04, +-1.489422223068020338e-04, +-1.497422527973207189e-04, +-1.505419898689499040e-04, +-1.513414322404153486e-04, +-1.521405786310563353e-04, +-1.529394277607910835e-04, +-1.537379783500118801e-04, +-1.545362291197294950e-04, +-1.553341787915406280e-04, +-1.561318260876116460e-04, +-1.569291697306259990e-04, +-1.577262084439306686e-04, +-1.585229409513229056e-04, +-1.593193659773030390e-04, +-1.601154822468612942e-04, +-1.609112884856230496e-04, +-1.617067834198162560e-04, +-1.625019657761638838e-04, +-1.632968342820324045e-04, +-1.640913876654115432e-04, +-1.648856246548133122e-04, +-1.656795439794308742e-04, +-1.664731443689309166e-04, +-1.672664245537010676e-04, +-1.680593832646408610e-04, +-1.688520192333048246e-04, +-1.696443311918513865e-04, +-1.704363178730274259e-04, +-1.712279780101348518e-04, +-1.720193103371736641e-04, +-1.728103135887400926e-04, +-1.736009864999888395e-04, +-1.743913278067814798e-04, +-1.751813362454726565e-04, +-1.759710105531611820e-04, +-1.767603494674797296e-04, +-1.775493517267388703e-04, +-1.783380160698750034e-04, +-1.791263412364343650e-04, +-1.799143259665417487e-04, +-1.807019690010414244e-04, +-1.814892690813952236e-04, +-1.822762249496476554e-04, +-1.830628353485694272e-04, +-1.838490990214668153e-04, +-1.846350147123403107e-04, +-1.854205811658535838e-04, +-1.862057971273142396e-04, +-1.869906613426278749e-04, +-1.877751725584369917e-04, +-1.885593295219139414e-04, +-1.893431309810077439e-04, +-1.901265756842357847e-04, +-1.909096623808279329e-04, +-1.916923898206897867e-04, +-1.924747567543024927e-04, +-1.932567619328650482e-04, +-1.940384041082578170e-04, +-1.948196820330319861e-04, +-1.956005944603891823e-04, +-1.963811401441521178e-04, +-1.971613178389049128e-04, +-1.979411262998902860e-04, +-1.987205642829763784e-04, +-1.994996305447824388e-04, +-2.002783238425550087e-04, +-2.010566429342454148e-04, +-2.018345865784702776e-04, +-2.026121535345893840e-04, +-2.033893425625811122e-04, +-2.041661524232036803e-04, +-2.049425818777871142e-04, +-2.057186296884787931e-04, +-2.064942946180375590e-04, +-2.072695754299745544e-04, +-2.080444708885019131e-04, +-2.088189797585185566e-04, +-2.095931008055775598e-04, +-2.103668327960249830e-04, +-2.111401744969012640e-04, +-2.119131246759053575e-04, +-2.126856821015362786e-04, +-2.134578455428875912e-04, +-2.142296137698918696e-04, +-2.150009855531137234e-04, +-2.157719596639098261e-04, +-2.165425348742893515e-04, +-2.173127099570747872e-04, +-2.180824836856936873e-04, +-2.188518548344252194e-04, +-2.196208221781909139e-04, +-2.203893844927002179e-04, +-2.211575405544121960e-04, +-2.219252891404388192e-04, +-2.226926290286812494e-04, +-2.234595589977999967e-04, +-2.242260778271963249e-04, +-2.249921842970011932e-04, +-2.257578771880402091e-04, +-2.265231552819725689e-04, +-2.272880173611918533e-04, +-2.280524622087920646e-04, +-2.288164886086728488e-04, +-2.295800953455090021e-04, +-2.303432812046455475e-04, +-2.311060449722412014e-04, +-2.318683854352324874e-04, +-2.326303013813205893e-04, +-2.333917915989551430e-04, +-2.341528548773030112e-04, +-2.349134900064040561e-04, +-2.356736957769821903e-04, +-2.364334709805884641e-04, +-2.371928144095482110e-04, +-2.379517248569480638e-04, +-2.387102011166024264e-04, +-2.394682419831911397e-04, +-2.402258462521632862e-04, +-2.409830127196985379e-04, +-2.417397401828513012e-04, +-2.424960274393448269e-04, +-2.432518732878111709e-04, +-2.440072765275925148e-04, +-2.447622359588743322e-04, +-2.455167503826408831e-04, +-2.462708186006552910e-04, +-2.470244394154335493e-04, +-2.477776116303752763e-04, +-2.485303340496691185e-04, +-2.492826054782591402e-04, +-2.500344247219808908e-04, +-2.507857905873620203e-04, +-2.515367018818604784e-04, +-2.522871574136629613e-04, +-2.530371559918381092e-04, +-2.537866964262078121e-04, +-2.545357775274928718e-04, +-2.552843981071219116e-04, +-2.560325569774602513e-04, +-2.567802529516173527e-04, +-2.575274848435780083e-04, +-2.582742514681725800e-04, +-2.590205516409796915e-04, +-2.597663841784583934e-04, +-2.605117478979196476e-04, +-2.612566416175118541e-04, +-2.620010641562023649e-04, +-2.627450143337508128e-04, +-2.634884909708389987e-04, +-2.642314928889788429e-04, +-2.649740189104759559e-04, +-2.657160678585332881e-04, +-2.664576385572202844e-04, +-2.671987298313742215e-04, +-2.679393405067341072e-04, +-2.686794694099287539e-04, +-2.694191153683747012e-04, +-2.701582772104329914e-04, +-2.708969537652058273e-04, +-2.716351438627766148e-04, +-2.723728463340072711e-04, +-2.731100600106777616e-04, +-2.738467837254328113e-04, +-2.745830163117727435e-04, +-2.753187566040188393e-04, +-2.760540034374473449e-04, +-2.767887556481953091e-04, +-2.775230120732246415e-04, +-2.782567715504593729e-04, +-2.789900329185893602e-04, +-2.797227950173019262e-04, +-2.804550566870867576e-04, +-2.811868167693676898e-04, +-2.819180741064568449e-04, +-2.826488275415410252e-04, +-2.833790759186471811e-04, +-2.841088180827797799e-04, +-2.848380528798214926e-04, +-2.855667791565009387e-04, +-2.862949957605302178e-04, +-2.870227015404232512e-04, +-2.877498953456433957e-04, +-2.884765760265774778e-04, +-2.892027424345166567e-04, +-2.899283934216444441e-04, +-2.906535278410047750e-04, +-2.913781445466346047e-04, +-2.921022423934689334e-04, +-2.928258202373068705e-04, +-2.935488769349153381e-04, +-2.942714113439957326e-04, +-2.949934223230888395e-04, +-2.957149087317049378e-04, +-2.964358694302975626e-04, +-2.971563032802435013e-04, +-2.978762091438330898e-04, +-2.985955858842355187e-04, +-2.993144323656342495e-04, +-3.000327474531286776e-04, +-3.007505300127038292e-04, +-3.014677789113485930e-04, +-3.021844930169382474e-04, +-3.029006711983070477e-04, +-3.036163123252152659e-04, +-3.043314152684137557e-04, +-3.050459788995354775e-04, +-3.057600020912402939e-04, +-3.064734837170263724e-04, +-3.071864226514535315e-04, +-3.078988177699547519e-04, +-3.086106679489649795e-04, +-3.093219720658766194e-04, +-3.100327289990227305e-04, +-3.107429376276481313e-04, +-3.114525968320409682e-04, +-3.121617054934349204e-04, +-3.128702624939787877e-04, +-3.135782667168724499e-04, +-3.142857170461697586e-04, +-3.149926123670074665e-04, +-3.156989515654135946e-04, +-3.164047335284541794e-04, +-3.171099571441236592e-04, +-3.178146213014092225e-04, +-3.185187248902605580e-04, +-3.192222668016565334e-04, +-3.199252459274957452e-04, +-3.206276611607056432e-04, +-3.213295113952184079e-04, +-3.220307955258746180e-04, +-3.227315124485494527e-04, +-3.234316610601285129e-04, +-3.241312402584868428e-04, +-3.248302489424807434e-04, +-3.255286860119133499e-04, +-3.262265503676680420e-04, +-3.269238409116092398e-04, +-3.276205565465569250e-04, +-3.283166961763805871e-04, +-3.290122587059724976e-04, +-3.297072430411496983e-04, +-3.304016480887893639e-04, +-3.310954727567905838e-04, +-3.317887159540649296e-04, +-3.324813765905237700e-04, +-3.331734535770439556e-04, +-3.338649458256164092e-04, +-3.345558522491698340e-04, +-3.352461717617014688e-04, +-3.359359032782302502e-04, +-3.366250457147839650e-04, +-3.373135979883675915e-04, +-3.380015590170930241e-04, +-3.386889277200836094e-04, +-3.393757030174484506e-04, +-3.400618838304051935e-04, +-3.407474690810965252e-04, +-3.414324576928118391e-04, +-3.421168485897958735e-04, +-3.428006406973839112e-04, +-3.434838329419479495e-04, +-3.441664242508888933e-04, +-3.448484135526053845e-04, +-3.455297997766177808e-04, +-3.462105818534788712e-04, +-3.468907587147441150e-04, +-3.475703292930978428e-04, +-3.482492925221680204e-04, +-3.489276473367431439e-04, +-3.496053926725941588e-04, +-3.502825274666072214e-04, +-3.509590506566982629e-04, +-3.516349611817992204e-04, +-3.523102579819777872e-04, +-3.529849399983539830e-04, +-3.536590061730650802e-04, +-3.543324554493617186e-04, +-3.550052867715808541e-04, +-3.556774990850523010e-04, +-3.563490913362242279e-04, +-3.570200624726319332e-04, +-3.576904114428896587e-04, +-3.583601371966717254e-04, +-3.590292386846869995e-04, +-3.596977148587983180e-04, +-3.603655646719372703e-04, +-3.610327870780747619e-04, +-3.616993810323245557e-04, +-3.623653454908465073e-04, +-3.630306794108989314e-04, +-3.636953817508201711e-04, +-3.643594514700814520e-04, +-3.650228875291913646e-04, +-3.656856888898256429e-04, +-3.663478545146536380e-04, +-3.670093833675467558e-04, +-3.676702744134041178e-04, +-3.683305266182658054e-04, +-3.689901389492813099e-04, +-3.696491103746870352e-04, +-3.703074398637814699e-04, +-3.709651263870447201e-04, +-3.716221689160525326e-04, +-3.722785664234492435e-04, +-3.729343178830625961e-04, +-3.735894222697342792e-04, +-3.742438785595229443e-04, +-3.748976857295326310e-04, +-3.755508427580311610e-04, +-3.762033486244209198e-04, +-3.768552023091533126e-04, +-3.775064027938480264e-04, +-3.781569490612801286e-04, +-3.788068400952917039e-04, +-3.794560748809007087e-04, +-3.801046524042669267e-04, +-3.807525716526103830e-04, +-3.813998316143263237e-04, +-3.820464312789644532e-04, +-3.826923696372058954e-04, +-3.833376456808589646e-04, +-3.839822584028253932e-04, +-3.846262067972229005e-04, +-3.852694898592968304e-04, +-3.859121065853944555e-04, +-3.865540559730507920e-04, +-3.871953370209639880e-04, +-3.878359487289094552e-04, +-3.884758900978549563e-04, +-3.891151601299369699e-04, +-3.897537578284459452e-04, +-3.903916821978098764e-04, +-3.910289322435732688e-04, +-3.916655069725102759e-04, +-3.923014053925434922e-04, +-3.929366265127079037e-04, +-3.935711693432645121e-04, +-3.942050328956064431e-04, +-3.948382161822524953e-04, +-3.954707182169603851e-04, +-3.961025380146418538e-04, +-3.967336745913355080e-04, +-3.973641269643260281e-04, +-3.979938941519693945e-04, +-3.986229751739010004e-04, +-3.992513690508562706e-04, +-3.998790748047937726e-04, +-4.005060914588696292e-04, +-4.011324180373448739e-04, +-4.017580535657089410e-04, +-4.023829970706499048e-04, +-4.030072475800408724e-04, +-4.036308041228990552e-04, +-4.042536657295036219e-04, +-4.048758314312247736e-04, +-4.054973002607190633e-04, +-4.061180712517735414e-04, +-4.067381434394199769e-04, +-4.073575158598476327e-04, +-4.079761875504565546e-04, +-4.085941575498324720e-04, +-4.092114248978037726e-04, +-4.098279886353461466e-04, +-4.104438478046790271e-04, +-4.110590014492439053e-04, +-4.116734486136155351e-04, +-4.122871883436225499e-04, +-4.129002196863160753e-04, +-4.135125416899574236e-04, +-4.141241534040067634e-04, +-4.147350538790979665e-04, +-4.153452421671495216e-04, +-4.159547173212812675e-04, +-4.165634783957929805e-04, +-4.171715244462449843e-04, +-4.177788545294309369e-04, +-4.183854677033009605e-04, +-4.189913630270704955e-04, +-4.195965395612063142e-04, +-4.202009963673508978e-04, +-4.208047325084392047e-04, +-4.214077470485459611e-04, +-4.220100390530689451e-04, +-4.226116075885745960e-04, +-4.232124517229010684e-04, +-4.238125705251238624e-04, +-4.244119630655428135e-04, +-4.250106284156548791e-04, +-4.256085656482680338e-04, +-4.262057738374114431e-04, +-4.268022520583253810e-04, +-4.273979993875562594e-04, +-4.279930149028045696e-04, +-4.285872976831113100e-04, +-4.291808468086986635e-04, +-4.297736613610819408e-04, +-4.303657404230392769e-04, +-4.309570830785329726e-04, +-4.315476884128252870e-04, +-4.321375555124422796e-04, +-4.327266834651713706e-04, +-4.333150713600154250e-04, +-4.339027182873049135e-04, +-4.344896233385412993e-04, +-4.350757856065779914e-04, +-4.356612041854680687e-04, +-4.362458781705849512e-04, +-4.368298066585377245e-04, +-4.374129887471713018e-04, +-4.379954235356595571e-04, +-4.385771101244387011e-04, +-4.391580476151764898e-04, +-4.397382351108550572e-04, +-4.403176717157428893e-04, +-4.408963565353223447e-04, +-4.414742886763905940e-04, +-4.420514672470391825e-04, +-4.426278913566402610e-04, +-4.432035601158337921e-04, +-4.437784726365062997e-04, +-4.443526280318920254e-04, +-4.449260254165014793e-04, +-4.454986639060899440e-04, +-4.460705426177578718e-04, +-4.466416606698534689e-04, +-4.472120171820313512e-04, +-4.477816112752272277e-04, +-4.483504420717079907e-04, +-4.489185086949843296e-04, +-4.494858102699329739e-04, +-4.500523459226328711e-04, +-4.506181147805568728e-04, +-4.511831159724124661e-04, +-4.517473486282499225e-04, +-4.523108118794352470e-04, +-4.528735048585753680e-04, +-4.534354266996218959e-04, +-4.539965765378479751e-04, +-4.545569535098346772e-04, +-4.551165567534361440e-04, +-4.556753854078817194e-04, +-4.562334386136244861e-04, +-4.567907155125187500e-04, +-4.573472152476760577e-04, +-4.579029369635602810e-04, +-4.584578798059638191e-04, +-4.590120429219392392e-04, +-4.595654254598960961e-04, +-4.601180265695923124e-04, +-4.606698454020572548e-04, +-4.612208811096838910e-04, +-4.617711328462060214e-04, +-4.623205997666172355e-04, +-4.628692810272814996e-04, +-4.634171757859033964e-04, +-4.639642832015193966e-04, +-4.645106024344853365e-04, +-4.650561326464552761e-04, +-4.656008730004781559e-04, +-4.661448226609290579e-04, +-4.666879807934818845e-04, +-4.672303465651871492e-04, +-4.677719191444490465e-04, +-4.683126977009487981e-04, +-4.688526814057515017e-04, +-4.693918694312734416e-04, +-4.699302609512803547e-04, +-4.704678551408707330e-04, +-4.710046511764522971e-04, +-4.715406482358470552e-04, +-4.720758454982108550e-04, +-4.726102421440176631e-04, +-4.731438373551534568e-04, +-4.736766303147852525e-04, +-4.742086202074720196e-04, +-4.747398062191421830e-04, +-4.752701875370802880e-04, +-4.757997633498939317e-04, +-4.763285328476131301e-04, +-4.768564952215434633e-04, +-4.773836496644366743e-04, +-4.779099953703492892e-04, +-4.784355315347417676e-04, +-4.789602573544460306e-04, +-4.794841720276081607e-04, +-4.800072747537750839e-04, +-4.805295647338767343e-04, +-4.810510411702170015e-04, +-4.815717032664332351e-04, +-4.820915502275946365e-04, +-4.826105812600665706e-04, +-4.831287955716688054e-04, +-4.836461923715429682e-04, +-4.841627708702556532e-04, +-4.846785302797130949e-04, +-4.851934698132213952e-04, +-4.857075886854538894e-04, +-4.862208861124984170e-04, +-4.867333613117862524e-04, +-4.872450135021664272e-04, +-4.877558419038866477e-04, +-4.882658457385257497e-04, +-4.887750242290835783e-04, +-4.892833765999645085e-04, +-4.897909020769632962e-04, +-4.902975998872578138e-04, +-4.908034692593799941e-04, +-4.913085094233204551e-04, +-4.918127196104517393e-04, +-4.923160990535087973e-04, +-4.928186469866583774e-04, +-4.933203626454816778e-04, +-4.938212452669013802e-04, +-4.943212940892752162e-04, +-4.948205083523909802e-04, +-4.953188872973893339e-04, +-4.958164301668787320e-04, +-4.963131362047913317e-04, +-4.968090046565465986e-04, +-4.973040347689171910e-04, +-4.977982257901206837e-04, +-4.982915769697940887e-04, +-4.987840875589302130e-04, +-4.992757568099722007e-04, +-4.997665839767881629e-04, +-5.002565683146594682e-04, +-5.007457090802515777e-04, +-5.012340055317034918e-04, +-5.017214569284973204e-04, +-5.022080625316119144e-04, +-5.026938216033882082e-04, +-5.031787334076280984e-04, +-5.036627972095643032e-04, +-5.041460122758002977e-04, +-5.046283778743990015e-04, +-5.051098932748587095e-04, +-5.055905577481073455e-04, +-5.060703705664688521e-04, +-5.065493310037488426e-04, +-5.070274383351237955e-04, +-5.075046918372306095e-04, +-5.079810907881526175e-04, +-5.084566344674053837e-04, +-5.089313221559321494e-04, +-5.094051531360775957e-04, +-5.098781266916783744e-04, +-5.103502421080001157e-04, +-5.108214986717144433e-04, +-5.112918956709682546e-04, +-5.117614323953573749e-04, +-5.122301081358709377e-04, +-5.126979221849708567e-04, +-5.131648738365772976e-04, +-5.136309623860543664e-04, +-5.140961871302043634e-04, +-5.145605473672447980e-04, +-5.150240423968976185e-04, +-5.154866715203197149e-04, +-5.159484340400947869e-04, +-5.164093292603029505e-04, +-5.168693564864128591e-04, +-5.173285150254134344e-04, +-5.177868041857032781e-04, +-5.182442232771746968e-04, +-5.187007716111363990e-04, +-5.191564485004100974e-04, +-5.196112532592039824e-04, +-5.200651852032567041e-04, +-5.205182436497196282e-04, +-5.209704279172363076e-04, +-5.214217373259250271e-04, +-5.218721711973168956e-04, +-5.223217288544397627e-04, +-5.227704096217981617e-04, +-5.232182128253661533e-04, +-5.236651377925523061e-04, +-5.241111838522893602e-04, +-5.245563503349073755e-04, +-5.250006365722794483e-04, +-5.254440418977027747e-04, +-5.258865656459865787e-04, +-5.263282071533855432e-04, +-5.267689657576380812e-04, +-5.272088407979519170e-04, +-5.276478316150426829e-04, +-5.280859375510616035e-04, +-5.285231579496712812e-04, +-5.289594921560265058e-04, +-5.293949395167115877e-04, +-5.298294993798231909e-04, +-5.302631710949514679e-04, +-5.306959540131718197e-04, +-5.311278474870375233e-04, +-5.315588508705528436e-04, +-5.319889635192612872e-04, +-5.324181847901887903e-04, +-5.328465140418159633e-04, +-5.332739506341634171e-04, +-5.337004939286751036e-04, +-5.341261432883570928e-04, +-5.345508980776590702e-04, +-5.349747576625494714e-04, +-5.353977214104984608e-04, +-5.358197886904571142e-04, +-5.362409588728475531e-04, +-5.366612313296450186e-04, +-5.370806054342767153e-04, +-5.374990805616984644e-04, +-5.379166560883749714e-04, +-5.383333313922256157e-04, +-5.387491058527004535e-04, +-5.391639788507594008e-04, +-5.395779497688726672e-04, +-5.399910179909806407e-04, +-5.404031829025820327e-04, +-5.408144438906134239e-04, +-5.412248003435846805e-04, +-5.416342516514699923e-04, +-5.420427972057789961e-04, +-5.424504363995405129e-04, +-5.428571686272513734e-04, +-5.432629932849452649e-04, +-5.436679097701801544e-04, +-5.440719174820266880e-04, +-5.444750158210450970e-04, +-5.448772041893533945e-04, +-5.452784819905257853e-04, +-5.456788486297151812e-04, +-5.460783035135496595e-04, +-5.464768460502118265e-04, +-5.468744756493855831e-04, +-5.472711917222497285e-04, +-5.476669936815500590e-04, +-5.480618809415451582e-04, +-5.484558529179904595e-04, +-5.488489090282117544e-04, +-5.492410486909970980e-04, +-5.496322713267219259e-04, +-5.500225763572435611e-04, +-5.504119632059775421e-04, +-5.508004312978635785e-04, +-5.511879800593657685e-04, +-5.515746089184479870e-04, +-5.519603173046544421e-04, +-5.523451046490488511e-04, +-5.527289703842001292e-04, +-5.531119139442586090e-04, +-5.534939347648483790e-04, +-5.538750322831826429e-04, +-5.542552059379752486e-04, +-5.546344551695097519e-04, +-5.550127794195667749e-04, +-5.553901781315188739e-04, +-5.557666507502091085e-04, +-5.561421967220842900e-04, +-5.565168154950913323e-04, +-5.568905065187386167e-04, +-5.572632692440923066e-04, +-5.576351031237164989e-04, +-5.580060076117426132e-04, +-5.583759821638578993e-04, +-5.587450262372956793e-04, +-5.591131392908107360e-04, +-5.594803207847456666e-04, +-5.598465701809324365e-04, +-5.602118869428116422e-04, +-5.605762705353314630e-04, +-5.609397204250154241e-04, +-5.613022360799445071e-04, +-5.616638169697155169e-04, +-5.620244625654947489e-04, +-5.623841723400186407e-04, +-5.627429457675714366e-04, +-5.631007823239716353e-04, +-5.634576814866324888e-04, +-5.638136427344747235e-04, +-5.641686655480007001e-04, +-5.645227494092816198e-04, +-5.648758938019433212e-04, +-5.652280982111653048e-04, +-5.655793621236644697e-04, +-5.659296850277545279e-04, +-5.662790664133063225e-04, +-5.666275057717289629e-04, +-5.669750025960336838e-04, +-5.673215563807387611e-04, +-5.676671666219843286e-04, +-5.680118328174363178e-04, +-5.683555544663503175e-04, +-5.686983310695475045e-04, +-5.690401621294092225e-04, +-5.693810471498607188e-04, +-5.697209856364382572e-04, +-5.700599770962364249e-04, +-5.703980210378979416e-04, +-5.707351169716746997e-04, +-5.710712644093377758e-04, +-5.714064628642849834e-04, +-5.717407118514442705e-04, +-5.720740108873526497e-04, +-5.724063594900902783e-04, +-5.727377571793485465e-04, +-5.730682034763434499e-04, +-5.733976979039195638e-04, +-5.737262399864586455e-04, +-5.740538292499484810e-04, +-5.743804652219582736e-04, +-5.747061474316014556e-04, +-5.750308754095910914e-04, +-5.753546486882284931e-04, +-5.756774668014004014e-04, +-5.759993292845486286e-04, +-5.763202356747369531e-04, +-5.766401855105573364e-04, +-5.769591783322397527e-04, +-5.772772136815641515e-04, +-5.775942911019180288e-04, +-5.779104101382603236e-04, +-5.782255703371390896e-04, +-5.785397712466808706e-04, +-5.788530124166256117e-04, +-5.791652933982726660e-04, +-5.794766137445425940e-04, +-5.797869730098967160e-04, +-5.800963707504372922e-04, +-5.804048065238215457e-04, +-5.807122798893204259e-04, +-5.810187904077925881e-04, +-5.813243376416884047e-04, +-5.816289211550270885e-04, +-5.819325405134550232e-04, +-5.822351952842084663e-04, +-5.825368850361007560e-04, +-5.828376093395675221e-04, +-5.831373677666001161e-04, +-5.834361598908286610e-04, +-5.837339852874528796e-04, +-5.840308435332864376e-04, +-5.843267342067416572e-04, +-5.846216568878271312e-04, +-5.849156111581253889e-04, +-5.852085966008631519e-04, +-5.855006128008345733e-04, +-5.857916593444551217e-04, +-5.860817358197486799e-04, +-5.863708418163085133e-04, +-5.866589769253486610e-04, +-5.869461407397002497e-04, +-5.872323328537905687e-04, +-5.875175528636384075e-04, +-5.878018003668976409e-04, +-5.880850749627822022e-04, +-5.883673762521596500e-04, +-5.886487038374708285e-04, +-5.889290573227865715e-04, +-5.892084363137875362e-04, +-5.894868404177364477e-04, +-5.897642692435183225e-04, +-5.900407224016413366e-04, +-5.903161995042177429e-04, +-5.905907001649695091e-04, +-5.908642239992050078e-04, +-5.911367706238837430e-04, +-5.914083396575636579e-04, +-5.916789307204020024e-04, +-5.919485434341926295e-04, +-5.922171774223332526e-04, +-5.924848323098111337e-04, +-5.927515077232670517e-04, +-5.930172032909477057e-04, +-5.932819186426959573e-04, +-5.935456534100039564e-04, +-5.938084072259380061e-04, +-5.940701797252232385e-04, +-5.943309705441753108e-04, +-5.945907793207407368e-04, +-5.948496056944920082e-04, +-5.951074493066120909e-04, +-5.953643097998830404e-04, +-5.956201868187406458e-04, +-5.958750800092356154e-04, +-5.961289890190223009e-04, +-5.963819134974026074e-04, +-5.966338530952652788e-04, +-5.968848074651576709e-04, +-5.971347762612253625e-04, +-5.973837591392601844e-04, +-5.976317557566506724e-04, +-5.978787657724437578e-04, +-5.981247888472701743e-04, +-5.983698246434251229e-04, +-5.986138728247999670e-04, +-5.988569330569335153e-04, +-5.990990050069956501e-04, +-5.993400883437507900e-04, +-5.995801827376147017e-04, +-5.998192878606320574e-04, +-6.000574033864805546e-04, +-6.002945289904439196e-04, +-6.005306643494694781e-04, +-6.007658091420931294e-04, +-6.009999630485182752e-04, +-6.012331257505508769e-04, +-6.014652969316495448e-04, +-6.016964762769052644e-04, +-6.019266634730143992e-04, +-6.021558582083243356e-04, +-6.023840601728231835e-04, +-6.026112690581112612e-04, +-6.028374845574517278e-04, +-6.030627063656993515e-04, +-6.032869341793870282e-04, +-6.035101676966482618e-04, +-6.037324066172757107e-04, +-6.039536506426909385e-04, +-6.041738994759489681e-04, +-6.043931528217235359e-04, +-6.046114103863560983e-04, +-6.048286718778144149e-04, +-6.050449370056903801e-04, +-6.052602054812379704e-04, +-6.054744770173148055e-04, +-6.056877513284543565e-04, +-6.059000281307990506e-04, +-6.061113071421498190e-04, +-6.063215880819474487e-04, +-6.065308706712605477e-04, +-6.067391546327934601e-04, +-6.069464396909071907e-04, +-6.071527255716053107e-04, +-6.073580120025122734e-04, +-6.075622987129223121e-04, +-6.077655854337414348e-04, +-6.079678718975328527e-04, +-6.081691578385062464e-04, +-6.083694429925163563e-04, +-6.085687270970446599e-04, +-6.087670098912377524e-04, +-6.089642911158599670e-04, +-6.091605705133478019e-04, +-6.093558478277604808e-04, +-6.095501228048134544e-04, +-6.097433951918768830e-04, +-6.099356647379405080e-04, +-6.101269311936509485e-04, +-6.103171943113125690e-04, +-6.105064538448690473e-04, +-6.106947095499097719e-04, +-6.108819611836569397e-04, +-6.110682085050017686e-04, +-6.112534512744824877e-04, +-6.114376892542646054e-04, +-6.116209222081869876e-04, +-6.118031499017170804e-04, +-6.119843721019815929e-04, +-6.121645885777468729e-04, +-6.123437990994460125e-04, +-6.125220034391390574e-04, +-6.126992013705610373e-04, +-6.128753926690679726e-04, +-6.130505771116914098e-04, +-6.132247544770962457e-04, +-6.133979245456111940e-04, +-6.135700870992126304e-04, +-6.137412419215261105e-04, +-6.139113887978170456e-04, +-6.140805275150235543e-04, +-6.142486578617291403e-04, +-6.144157796281584641e-04, +-6.145818926062100859e-04, +-6.147469965894058336e-04, +-6.149110913729529272e-04, +-6.150741767536827215e-04, +-6.152362525301009050e-04, +-6.153973185023628879e-04, +-6.155573744722740194e-04, +-6.157164202432821067e-04, +-6.158744556205128680e-04, +-6.160314804107296007e-04, +-6.161874944223589851e-04, +-6.163424974654862056e-04, +-6.164964893518332665e-04, +-6.166494698947915182e-04, +-6.168014389094065870e-04, +-6.169523962123868313e-04, +-6.171023416220859951e-04, +-6.172512749585050505e-04, +-6.173991960433223387e-04, +-6.175461046998659232e-04, +-6.176920007531100116e-04, +-6.178368840296994584e-04, +-6.179807543579357793e-04, +-6.181236115677619719e-04, +-6.182654554907902715e-04, +-6.184062859602927186e-04, +-6.185461028111974725e-04, +-6.186849058800906543e-04, +-6.188226950052001926e-04, +-6.189594700264386493e-04, +-6.190952307853652727e-04, +-6.192299771251918517e-04, +-6.193637088908010395e-04, +-6.194964259287265122e-04, +-6.196281280871538365e-04, +-6.197588152159444301e-04, +-6.198884871666100835e-04, +-6.200171437923170797e-04, +-6.201447849479089624e-04, +-6.202714104898617584e-04, +-6.203970202763359112e-04, +-6.205216141671377915e-04, +-6.206451920237391045e-04, +-6.207677537092767817e-04, +-6.208892990885392111e-04, +-6.210098280279689482e-04, +-6.211293403956861343e-04, +-6.212478360614668129e-04, +-6.213653148967371830e-04, +-6.214817767746020055e-04, +-6.215972215698049213e-04, +-6.217116491587704099e-04, +-6.218250594195688782e-04, +-6.219374522319489696e-04, +-6.220488274773005926e-04, +-6.221591850386963378e-04, +-6.222685248008494102e-04, +-6.223768466501499504e-04, +-6.224841504746397728e-04, +-6.225904361640303628e-04, +-6.226957036096990826e-04, +-6.227999527046652103e-04, +-6.229031833436240919e-04, +-6.230053954229360829e-04, +-6.231065888406196089e-04, +-6.232067634963569126e-04, +-6.233059192914812592e-04, +-6.234040561290007899e-04, +-6.235011739135870286e-04, +-6.235972725515646908e-04, +-6.236923519509231760e-04, +-6.237864120213281686e-04, +-6.238794526740845583e-04, +-6.239714738221720019e-04, +-6.240624753802391771e-04, +-6.241524572645840499e-04, +-6.242414193931808712e-04, +-6.243293616856483014e-04, +-6.244162840632877911e-04, +-6.245021864490500792e-04, +-6.245870687675534076e-04, +-6.246709309450826537e-04, +-6.247537729095793560e-04, +-6.248355945906439906e-04, +-6.249163959195474637e-04, +-6.249961768292298112e-04, +-6.250749372542750443e-04, +-6.251526771309503985e-04, +-6.252293963971635067e-04, +-6.253050949925106471e-04, +-6.253797728582267609e-04, +-6.254534299372267606e-04, +-6.255260661740807016e-04, +-6.255976815150262509e-04, +-6.256682759079518815e-04, +-6.257378493024211589e-04, +-6.258064016496585379e-04, +-6.258739329025476278e-04, +-6.259404430156384567e-04, +-6.260059319451369546e-04, +-6.260703996489166631e-04, +-6.261338460865130970e-04, +-6.261962712191279732e-04, +-6.262576750096199947e-04, +-6.263180574225079948e-04, +-6.263774184239809121e-04, +-6.264357579818844541e-04, +-6.264930760657311812e-04, +-6.265493726466894470e-04, +-6.266046476975999872e-04, +-6.266589011929508740e-04, +-6.267121331089034290e-04, +-6.267643434232796464e-04, +-6.268155321155611083e-04, +-6.268656991668951654e-04, +-6.269148445600784565e-04, +-6.269629682795862906e-04, +-6.270100703115447831e-04, +-6.270561506437466849e-04, +-6.271012092656424921e-04, +-6.271452461683455415e-04, +-6.271882613446314687e-04, +-6.272302547889346304e-04, +-6.272712264973547176e-04, +-6.273111764676465646e-04, +-6.273501046992316409e-04, +-6.273880111931858005e-04, +-6.274248959522540263e-04, +-6.274607589808328667e-04, +-6.274956002849845296e-04, +-6.275294198724348229e-04, +-6.275622177525623123e-04, +-6.275939939364056936e-04, +-6.276247484366698649e-04, +-6.276544812677189869e-04, +-6.276831924455707375e-04, +-6.277108819879065023e-04, +-6.277375499140682314e-04, +-6.277631962450549693e-04, +-6.277878210035245897e-04, +-6.278114242137982411e-04, +-6.278340059018485287e-04, +-6.278555660953144763e-04, +-6.278761048234882992e-04, +-6.278956221173241864e-04, +-6.279141180094310361e-04, +-6.279315925340802620e-04, +-6.279480457271979874e-04, +-6.279634776263688396e-04, +-6.279778882708344319e-04, +-6.279912777014960744e-04, +-6.280036459609105457e-04, +-6.280149930932929113e-04, +-6.280253191445140304e-04, +-6.280346241621015315e-04, +-6.280429081952402463e-04, +-6.280501712947735102e-04, +-6.280564135131953569e-04, +-6.280616349046627689e-04, +-6.280658355249814752e-04, +-6.280690154316183110e-04, +-6.280711746836935196e-04, +-6.280723133419827044e-04, +-6.280724314689173707e-04, +-6.280715291285805888e-04, +-6.280696063867133912e-04, +-6.280666633107127124e-04, +-6.280626999696247749e-04, +-6.280577164341537635e-04, +-6.280517127766542355e-04, +-6.280446890711383848e-04, +-6.280366453932678021e-04, +-6.280275818203613896e-04, +-6.280174984313861451e-04, +-6.280063953069636674e-04, +-6.279942725293727584e-04, +-6.279811301825347861e-04, +-6.279669683520311407e-04, +-6.279517871250914164e-04, +-6.279355865905963388e-04, +-6.279183668390806924e-04, +-6.279001279627257313e-04, +-6.278808700553691535e-04, +-6.278605932124915485e-04, +-6.278392975312304921e-04, +-6.278169831103707884e-04, +-6.277936500503488067e-04, +-6.277692984532435910e-04, +-6.277439284227924726e-04, +-6.277175400643753489e-04, +-6.276901334850219479e-04, +-6.276617087934133459e-04, +-6.276322660998753539e-04, +-6.276018055163815534e-04, +-6.275703271565545973e-04, +-6.275378311356628490e-04, +-6.275043175706211413e-04, +-6.274697865799940292e-04, +-6.274342382839889591e-04, +-6.273976728044619068e-04, +-6.273600902649092460e-04, +-6.273214907904809757e-04, +-6.272818745079639146e-04, +-6.272412415457978563e-04, +-6.271995920340593059e-04, +-6.271569261044730812e-04, +-6.271132438904051566e-04, +-6.270685455268705782e-04, +-6.270228311505194772e-04, +-6.269761008996517070e-04, +-6.269283549142061094e-04, +-6.268795933357658272e-04, +-6.268298163075493052e-04, +-6.267790239744280715e-04, +-6.267272164829052698e-04, +-6.266743939811282365e-04, +-6.266205566188856818e-04, +-6.265657045476023769e-04, +-6.265098379203472853e-04, +-6.264529568918286847e-04, +-6.263950616183925398e-04, +-6.263361522580196839e-04, +-6.262762289703378534e-04, +-6.262152919166029310e-04, +-6.261533412597198710e-04, +-6.260903771642172206e-04, +-6.260263997962730318e-04, +-6.259614093236963222e-04, +-6.258954059159272916e-04, +-6.258283897440532597e-04, +-6.257603609807876324e-04, +-6.256913198004826959e-04, +-6.256212663791235447e-04, +-6.255502008943317682e-04, +-6.254781235253586199e-04, +-6.254050344530944503e-04, +-6.253309338600601414e-04, +-6.252558219304076492e-04, +-6.251796988499206537e-04, +-6.251025648060169445e-04, +-6.250244199877496134e-04, +-6.249452645857935017e-04, +-6.248650987924603793e-04, +-6.247839228016913550e-04, +-6.247017368090568767e-04, +-6.246185410117512018e-04, +-6.245343356086082267e-04, +-6.244491208000853321e-04, +-6.243628967882650094e-04, +-6.242756637768606068e-04, +-6.241874219712078729e-04, +-6.240981715782825201e-04, +-6.240079128066699761e-04, +-6.239166458665922716e-04, +-6.238243709698919944e-04, +-6.237310883300371681e-04, +-6.236367981621233122e-04, +-6.235415006828682379e-04, +-6.234451961106149756e-04, +-6.233478846653237515e-04, +-6.232495665685877087e-04, +-6.231502420436081874e-04, +-6.230499113152254079e-04, +-6.229485746098854023e-04, +-6.228462321556675532e-04, +-6.227428841822618254e-04, +-6.226385309209800422e-04, +-6.225331726047591370e-04, +-6.224268094681528057e-04, +-6.223194417473271699e-04, +-6.222110696800728109e-04, +-6.221016935057981567e-04, +-6.219913134655192903e-04, +-6.218799298018828263e-04, +-6.217675427591410828e-04, +-6.216541525831695367e-04, +-6.215397595214453572e-04, +-6.214243638230777626e-04, +-6.213079657387774466e-04, +-6.211905655208734911e-04, +-6.210721634233051271e-04, +-6.209527597016297569e-04, +-6.208323546130100528e-04, +-6.207109484162179683e-04, +-6.205885413716489413e-04, +-6.204651337413006435e-04, +-6.203407257887806787e-04, +-6.202153177792988845e-04, +-6.200889099796866311e-04, +-6.199615026583829439e-04, +-6.198330960854258297e-04, +-6.197036905324600827e-04, +-6.195732862727500786e-04, +-6.194418835811520184e-04, +-6.193094827341295416e-04, +-6.191760840097616401e-04, +-6.190416876877276970e-04, +-6.189062940493028240e-04, +-6.187699033773704383e-04, +-6.186325159564167332e-04, +-6.184941320725377252e-04, +-6.183547520134185464e-04, +-6.182143760683511159e-04, +-6.180730045282330568e-04, +-6.179306376855459026e-04, +-6.177872758343841550e-04, +-6.176429192704465006e-04, +-6.174975682910147784e-04, +-6.173512231949729529e-04, +-6.172038842828101498e-04, +-6.170555518565944185e-04, +-6.169062262200161002e-04, +-6.167559076783345933e-04, +-6.166045965384209628e-04, +-6.164522931087306184e-04, +-6.162989976993119880e-04, +-6.161447106218187692e-04, +-6.159894321894865106e-04, +-6.158331627171455139e-04, +-6.156759025212076063e-04, +-6.155176519196919448e-04, +-6.153584112321912976e-04, +-6.151981807799047864e-04, +-6.150369608856018919e-04, +-6.148747518736562799e-04, +-6.147115540700127338e-04, +-6.145473678022106813e-04, +-6.143821933993865803e-04, +-6.142160311922459457e-04, +-6.140488815130802636e-04, +-6.138807446957754476e-04, +-6.137116210757929740e-04, +-6.135415109901710745e-04, +-6.133704147775506481e-04, +-6.131983327781382904e-04, +-6.130252653337236405e-04, +-6.128512127876740686e-04, +-6.126761754849386872e-04, +-6.125001537720593022e-04, +-6.123231479971350671e-04, +-6.121451585098476372e-04, +-6.119661856614671321e-04, +-6.117862298048238386e-04, +-6.116052912943342312e-04, +-6.114233704859899131e-04, +-6.112404677373552316e-04, +-6.110565834075607720e-04, +-6.108717178573202719e-04, +-6.106858714489078526e-04, +-6.104990445461883769e-04, +-6.103112375145737555e-04, +-6.101224507210690259e-04, +-6.099326845342294178e-04, +-6.097419393241805194e-04, +-6.095502154626335645e-04, +-6.093575133228550751e-04, +-6.091638332796768356e-04, +-6.089691757094901469e-04, +-6.087735409902708715e-04, +-6.085769295015348726e-04, +-6.083793416243912485e-04, +-6.081807777414830266e-04, +-6.079812382370371453e-04, +-6.077807234968283503e-04, +-6.075792339081899276e-04, +-6.073767698600313764e-04, +-6.071733317428165081e-04, +-6.069689199485540140e-04, +-6.067635348708283645e-04, +-6.065571769047682594e-04, +-6.063498464470560602e-04, +-6.061415438959520761e-04, +-6.059322696512532561e-04, +-6.057220241143118373e-04, +-6.055108076880329595e-04, +-6.052986207768755325e-04, +-6.050854637868668734e-04, +-6.048713371255612890e-04, +-6.046562412020691337e-04, +-6.044401764270643978e-04, +-6.042231432127539168e-04, +-6.040051419728920080e-04, +-6.037861731227980346e-04, +-6.035662370793271319e-04, +-6.033453342608777973e-04, +-6.031234650873913477e-04, +-6.029006299803554977e-04, +-6.026768293628172613e-04, +-6.024520636593476072e-04, +-6.022263332960549028e-04, +-6.019996387006124527e-04, +-6.017719803022033133e-04, +-6.015433585315803572e-04, +-6.013137738210217126e-04, +-6.010832266043390033e-04, +-6.008517173168793002e-04, +-6.006192463955404084e-04, +-6.003858142787354144e-04, +-6.001514214064394143e-04, +-5.999160682201332443e-04, +-5.996797551628523784e-04, +-5.994424826791493058e-04, +-5.992042512151046990e-04, +-5.989650612183549522e-04, +-5.987249131380487045e-04, +-5.984838074248609351e-04, +-5.982417445309927461e-04, +-5.979987249101912034e-04, +-5.977547490177000057e-04, +-5.975098173103273553e-04, +-5.972639302463686548e-04, +-5.970170882856701495e-04, +-5.967692918895805719e-04, +-5.965205415209848608e-04, +-5.962708376442842116e-04, +-5.960201807254087618e-04, +-5.957685712317897266e-04, +-5.955160096323981050e-04, +-5.952624963977079259e-04, +-5.950080319997063305e-04, +-5.947526169119206774e-04, +-5.944962516093795120e-04, +-5.942389365686201550e-04, +-5.939806722676917389e-04, +-5.937214591861660496e-04, +-5.934612978051386108e-04, +-5.932001886071909535e-04, +-5.929381320764194564e-04, +-5.926751286984469460e-04, +-5.924111789603869185e-04, +-5.921462833508553576e-04, +-5.918804423600042362e-04, +-5.916136564794717513e-04, +-5.913459262023919739e-04, +-5.910772520234254231e-04, +-5.908076344387039889e-04, +-5.905370739459053081e-04, +-5.902655710441663539e-04, +-5.899931262341566191e-04, +-5.897197400180203284e-04, +-5.894454128994015916e-04, +-5.891701453834677143e-04, +-5.888939379768659381e-04, +-5.886167911877328730e-04, +-5.883387055257020869e-04, +-5.880596815019149479e-04, +-5.877797196289798578e-04, +-5.874988204210361119e-04, +-5.872169843936743188e-04, +-5.869342120640058972e-04, +-5.866505039506097335e-04, +-5.863658605735520227e-04, +-5.860802824544110966e-04, +-5.857937701162389344e-04, +-5.855063240835612715e-04, +-5.852179448823938623e-04, +-5.849286330402533223e-04, +-5.846383890861038936e-04, +-5.843472135504338815e-04, +-5.840551069651907104e-04, +-5.837620698637949104e-04, +-5.834681027811487904e-04, +-5.831732062536366555e-04, +-5.828773808191379255e-04, +-5.825806270169796471e-04, +-5.822829453879645742e-04, +-5.819843364743959970e-04, +-5.816848008200232057e-04, +-5.813843389700668616e-04, +-5.810829514712479446e-04, +-5.807806388717392902e-04, +-5.804774017211762139e-04, +-5.801732405706626914e-04, +-5.798681559727740693e-04, +-5.795621484815751713e-04, +-5.792552186525584982e-04, +-5.789473670426918250e-04, +-5.786385942104227539e-04, +-5.783289007156286248e-04, +-5.780182871196951197e-04, +-5.777067539854211778e-04, +-5.773943018770983596e-04, +-5.770809313604494811e-04, +-5.767666430026814140e-04, +-5.764514373724214432e-04, +-5.761353150398015096e-04, +-5.758182765763604147e-04, +-5.755003225551227506e-04, +-5.751814535505450155e-04, +-5.748616701385294908e-04, +-5.745409728964575267e-04, +-5.742193624031461741e-04, +-5.738968392388466662e-04, +-5.735734039852635009e-04, +-5.732490572255609460e-04, +-5.729237995443175026e-04, +-5.725976315276052686e-04, +-5.722705537628879156e-04, +-5.719425668391022203e-04, +-5.716136713466144804e-04, +-5.712838678772140088e-04, +-5.709531570241679942e-04, +-5.706215393821572083e-04, +-5.702890155472916181e-04, +-5.699555861171349972e-04, +-5.696212516906712072e-04, +-5.692860128683074504e-04, +-5.689498702519195893e-04, +-5.686128244447928408e-04, +-5.682748760516346783e-04, +-5.679360256785817703e-04, +-5.675962739332072451e-04, +-5.672556214245307732e-04, +-5.669140687629605629e-04, +-5.665716165603420411e-04, +-5.662282654299591539e-04, +-5.658840159864861200e-04, +-5.655388688460685287e-04, +-5.651928246262202327e-04, +-5.648458839459117101e-04, +-5.644980474255109756e-04, +-5.641493156867991932e-04, +-5.637996893529826021e-04, +-5.634491690487067198e-04, +-5.630977553999916155e-04, +-5.627454490342756032e-04, +-5.623922505804344321e-04, +-5.620381606687139577e-04, +-5.616831799308149263e-04, +-5.613273089998238033e-04, +-5.609705485102286018e-04, +-5.606128990979183414e-04, +-5.602543614002156820e-04, +-5.598949360558020056e-04, +-5.595346237048218251e-04, +-5.591734249887591853e-04, +-5.588113405505467333e-04, +-5.584483710344841870e-04, +-5.580845170862668491e-04, +-5.577197793530216030e-04, +-5.573541584832509676e-04, +-5.569876551268444819e-04, +-5.566202699350824993e-04, +-5.562520035606628591e-04, +-5.558828566576321482e-04, +-5.555128298814877245e-04, +-5.551419238890557438e-04, +-5.547701393385927500e-04, +-5.543974768897064198e-04, +-5.540239372034167116e-04, +-5.536495209421179184e-04, +-5.532742287695964489e-04, +-5.528980613509978676e-04, +-5.525210193528755755e-04, +-5.521431034431436473e-04, +-5.517643142910846378e-04, +-5.513846525673955518e-04, +-5.510041189441310322e-04, +-5.506227140947070461e-04, +-5.502404386939162804e-04, +-5.498572934179311780e-04, +-5.494732789443184653e-04, +-5.490883959519776789e-04, +-5.487026451211791120e-04, +-5.483160271335929797e-04, +-5.479285426722101636e-04, +-5.475401924214430430e-04, +-5.471509770670159901e-04, +-5.467608972960523233e-04, +-5.463699537970057854e-04, +-5.459781472597254872e-04, +-5.455854783753742677e-04, +-5.451919478365350536e-04, +-5.447975563370882363e-04, +-5.444023045723085999e-04, +-5.440061932388067737e-04, +-5.436092230345302085e-04, +-5.432113946588264936e-04, +-5.428127088123663787e-04, +-5.424131661971617717e-04, +-5.420127675165722437e-04, +-5.416115134753303993e-04, +-5.412094047794728134e-04, +-5.408064421364406444e-04, +-5.404026262549561444e-04, +-5.399979578451298860e-04, +-5.395924376183851940e-04, +-5.391860662874771188e-04, +-5.387788445665420926e-04, +-5.383707731710266975e-04, +-5.379618528177078319e-04, +-5.375520842246943364e-04, +-5.371414681114561589e-04, +-5.367300051987504124e-04, +-5.363176962087187359e-04, +-5.359045418648044614e-04, +-5.354905428917733226e-04, +-5.350757000157164902e-04, +-5.346600139640568603e-04, +-5.342434854655752925e-04, +-5.338261152503253910e-04, +-5.334079040496953047e-04, +-5.329888525964192195e-04, +-5.325689616245058008e-04, +-5.321482318693458551e-04, +-5.317266640675835264e-04, +-5.313042589572246083e-04, +-5.308810172775606500e-04, +-5.304569397691973618e-04, +-5.300320271740602534e-04, +-5.296062802354148001e-04, +-5.291796996977871873e-04, +-5.287522863070232915e-04, +-5.283240408103029914e-04, +-5.278949639560622138e-04, +-5.274650564941098111e-04, +-5.270343191754908426e-04, +-5.266027527525960795e-04, +-5.261703579790838340e-04, +-5.257371356099441433e-04, +-5.253030864014214671e-04, +-5.248682111111187699e-04, +-5.244325104978700197e-04, +-5.239959853218495835e-04, +-5.235586363444949239e-04, +-5.231204643285269820e-04, +-5.226814700380022190e-04, +-5.222416542382378067e-04, +-5.218010176958259383e-04, +-5.213595611786473816e-04, +-5.209172854558955477e-04, +-5.204741912979959353e-04, +-5.200302794767277777e-04, +-5.195855507650782180e-04, +-5.191400059373661247e-04, +-5.186936457691457064e-04, +-5.182464710372785026e-04, +-5.177984825198922924e-04, +-5.173496809963951896e-04, +-5.169000672474394296e-04, +-5.164496420549885905e-04, +-5.159984062022267368e-04, +-5.155463604736730196e-04, +-5.150935056550455006e-04, +-5.146398425333772704e-04, +-5.141853718969366513e-04, +-5.137300945352527839e-04, +-5.132740112391296142e-04, +-5.128171228006552168e-04, +-5.123594300131322984e-04, +-5.119009336711275284e-04, +-5.114416345704953914e-04, +-5.109815335082925356e-04, +-5.105206312829015883e-04, +-5.100589286938861985e-04, +-5.095964265421080216e-04, +-5.091331256296519102e-04, +-5.086690267598454294e-04, +-5.082041307372780472e-04, +-5.077384383678095912e-04, +-5.072719504584853557e-04, +-5.068046678176418114e-04, +-5.063365912548288680e-04, +-5.058677215808219090e-04, +-5.053980596076867353e-04, +-5.049276061486943469e-04, +-5.044563620183424102e-04, +-5.039843280323604621e-04, +-5.035115050077428695e-04, +-5.030378937626623108e-04, +-5.025634951165923979e-04, +-5.020883098901641290e-04, +-5.016123389052873187e-04, +-5.011355829850629943e-04, +-5.006580429538096339e-04, +-5.001797196371179184e-04, +-4.997006138617665974e-04, +-4.992207264557482933e-04, +-4.987400582482690676e-04, +-4.982586100697659849e-04, +-4.977763827519195812e-04, +-4.972933771275745004e-04, +-4.968095940307959814e-04, +-4.963250342968954449e-04, +-4.958396987623473352e-04, +-4.953535882648586177e-04, +-4.948667036433732243e-04, +-4.943790457379875934e-04, +-4.938906153900144216e-04, +-4.934014134419974088e-04, +-4.929114407376297257e-04, +-4.924206981218802156e-04, +-4.919291864408381360e-04, +-4.914369065418449983e-04, +-4.909438592734041446e-04, +-4.904500454852139249e-04, +-4.899554660281734428e-04, +-4.894601217544065170e-04, +-4.889640135171732099e-04, +-4.884671421709300011e-04, +-4.879695085713545611e-04, +-4.874711135752522392e-04, +-4.869719580406906131e-04, +-4.864720428268446101e-04, +-4.859713687941182633e-04, +-4.854699368040565118e-04, +-4.849677477194238055e-04, +-4.844648024041053338e-04, +-4.839611017232366965e-04, +-4.834566465430533626e-04, +-4.829514377310162743e-04, +-4.824454761557193114e-04, +-4.819387626869190517e-04, +-4.814312981955921802e-04, +-4.809230835538498366e-04, +-4.804141196349531739e-04, +-4.799044073133275075e-04, +-4.793939474645958162e-04, +-4.788827409654798097e-04, +-4.783707886939407659e-04, +-4.778580915290182017e-04, +-4.773446503509610615e-04, +-4.768304660411417403e-04, +-4.763155394820711534e-04, +-4.757998715574654155e-04, +-4.752834631521619230e-04, +-4.747663151521291664e-04, +-4.742484284444820172e-04, +-4.737298039174958771e-04, +-4.732104424606171944e-04, +-4.726903449643718490e-04, +-4.721695123204780182e-04, +-4.716479454217605786e-04, +-4.711256451621812467e-04, +-4.706026124368494217e-04, +-4.700788481420396401e-04, +-4.695543531751064127e-04, +-4.690291284345430960e-04, +-4.685031748200079132e-04, +-4.679764932322300628e-04, +-4.674490845731449178e-04, +-4.669209497457328596e-04, +-4.663920896541542071e-04, +-4.658625052036577635e-04, +-4.653321973006099821e-04, +-4.648011668525112291e-04, +-4.642694147680117211e-04, +-4.637369419568162241e-04, +-4.632037493297623326e-04, +-4.626698377988270835e-04, +-4.621352082770472671e-04, +-4.615998616786449234e-04, +-4.610637989188721389e-04, +-4.605270209141432646e-04, +-4.599895285819307787e-04, +-4.594513228408596121e-04, +-4.589124046105931445e-04, +-4.583727748119820655e-04, +-4.578324343668889506e-04, +-4.572913841983347908e-04, +-4.567496252303997889e-04, +-4.562071583882446090e-04, +-4.556639845981827475e-04, +-4.551201047875822500e-04, +-4.545755198848890760e-04, +-4.540302308196346882e-04, +-4.534842385224511227e-04, +-4.529375439250878490e-04, +-4.523901479603174435e-04, +-4.518420515620084487e-04, +-4.512932556651402805e-04, +-4.507437612057274968e-04, +-4.501935691208909756e-04, +-4.496426803488196965e-04, +-4.490910958287852692e-04, +-4.485388165010960717e-04, +-4.479858433071754213e-04, +-4.474321771894592802e-04, +-4.468778190915310760e-04, +-4.463227699579557645e-04, +-4.457670307344240826e-04, +-4.452106023676503628e-04, +-4.446534858054110220e-04, +-4.440956819965505785e-04, +-4.435371918910097338e-04, +-4.429780164397243238e-04, +-4.424181565946922693e-04, +-4.418576133090039329e-04, +-4.412963875367385781e-04, +-4.407344802331107907e-04, +-4.401718923542942419e-04, +-4.396086248575718498e-04, +-4.390446787012350577e-04, +-4.384800548446143539e-04, +-4.379147542480954264e-04, +-4.373487778731403050e-04, +-4.367821266821750922e-04, +-4.362148016387223438e-04, +-4.356468037073040335e-04, +-4.350781338534597670e-04, +-4.345087930438243026e-04, +-4.339387822460249317e-04, +-4.333681024287005601e-04, +-4.327967545615230677e-04, +-4.322247396151950309e-04, +-4.316520585614832249e-04, +-4.310787123731111246e-04, +-4.305047020238363174e-04, +-4.299300284884699096e-04, +-4.293546927428026384e-04, +-4.287786957636280740e-04, +-4.282020385288153150e-04, +-4.276247220172066398e-04, +-4.270467472086411967e-04, +-4.264681150839673635e-04, +-4.258888266250525595e-04, +-4.253088828148036829e-04, +-4.247282846370734901e-04, +-4.241470330767239667e-04, +-4.235651291196560354e-04, +-4.229825737527191870e-04, +-4.223993679637829302e-04, +-4.218155127417520778e-04, +-4.212310090764568638e-04, +-4.206458579587382695e-04, +-4.200600603804583778e-04, +-4.194736173344082160e-04, +-4.188865298144511416e-04, +-4.182987988153486110e-04, +-4.177104253329097993e-04, +-4.171214103638824756e-04, +-4.165317549059979426e-04, +-4.159414599579775427e-04, +-4.153505265195571059e-04, +-4.147589555913817286e-04, +-4.141667481750838358e-04, +-4.135739052733051362e-04, +-4.129804278895931897e-04, +-4.123863170285541166e-04, +-4.117915736956666577e-04, +-4.111961988974422561e-04, +-4.106001936413014044e-04, +-4.100035589356791372e-04, +-4.094062957899030045e-04, +-4.088084052143499013e-04, +-4.082098882202627832e-04, +-4.076107458199022923e-04, +-4.070109790264444627e-04, +-4.064105888540016451e-04, +-4.058095763177004076e-04, +-4.052079424335765299e-04, +-4.046056882185989647e-04, +-4.040028146906780773e-04, +-4.033993228686824509e-04, +-4.027952137724600287e-04, +-4.021904884227303439e-04, +-4.015851478411657264e-04, +-4.009791930504102227e-04, +-4.003726250740061946e-04, +-3.997654449364109082e-04, +-3.991576536630798543e-04, +-3.985492522803573529e-04, +-3.979402418154871779e-04, +-3.973306232966925173e-04, +-3.967203977530519947e-04, +-3.961095662146618657e-04, +-3.954981297124404282e-04, +-3.948860892782942301e-04, +-3.942734459450050960e-04, +-3.936602007462708386e-04, +-3.930463547167129023e-04, +-3.924319088919074258e-04, +-3.918168643082690157e-04, +-3.912012220031381329e-04, +-3.905849830147969221e-04, +-3.899681483823685979e-04, +-3.893507191459690702e-04, +-3.887326963465244194e-04, +-3.881140810259255569e-04, +-3.874948742269173664e-04, +-3.868750769931460286e-04, +-3.862546903691604309e-04, +-3.856337154004425795e-04, +-3.850121531332997751e-04, +-3.843900046149388810e-04, +-3.837672708934929946e-04, +-3.831439530179147615e-04, +-3.825200520381217130e-04, +-3.818955690048717998e-04, +-3.812705049697854014e-04, +-3.806448609853656543e-04, +-3.800186381050021391e-04, +-3.793918373830023759e-04, +-3.787644598744758693e-04, +-3.781365066354182964e-04, +-3.775079787227339501e-04, +-3.768788771941543152e-04, +-3.762492031082633847e-04, +-3.756189575245744757e-04, +-3.749881415034247360e-04, +-3.743567561059974250e-04, +-3.737248023943319964e-04, +-3.730922814313410120e-04, +-3.724591942808319883e-04, +-3.718255420073955067e-04, +-3.711913256764874506e-04, +-3.705565463544571942e-04, +-3.699212051084437361e-04, +-3.692853030064741993e-04, +-3.686488411174062055e-04, +-3.680118205109531916e-04, +-3.673742422576284643e-04, +-3.667361074288386590e-04, +-3.660974170967580261e-04, +-3.654581723344926336e-04, +-3.648183742158865117e-04, +-3.641780238156820605e-04, +-3.635371222094131477e-04, +-3.628956704734375804e-04, +-3.622536696849568377e-04, +-3.616111209220357488e-04, +-3.609680252634936393e-04, +-3.603243837889839114e-04, +-3.596801975790207156e-04, +-3.590354677148650006e-04, +-3.583901952786935408e-04, +-3.577443813533953774e-04, +-3.570980270227410076e-04, +-3.564511333712725555e-04, +-3.558037014843226913e-04, +-3.551557324481012046e-04, +-3.545072273495816512e-04, +-3.538581872765108401e-04, +-3.532086133174921539e-04, +-3.525585065618868871e-04, +-3.519078680998382063e-04, +-3.512566990223549052e-04, +-3.506050004212006533e-04, +-3.499527733889111806e-04, +-3.493000190188155817e-04, +-3.486467384050430927e-04, +-3.479929326425551831e-04, +-3.473386028270215777e-04, +-3.466837500549133891e-04, +-3.460283754235219289e-04, +-3.453724800308760915e-04, +-3.447160649757668028e-04, +-3.440591313578329432e-04, +-3.434016802774427358e-04, +-3.427437128357213939e-04, +-3.420852301345646729e-04, +-3.414262332766494963e-04, +-3.407667233654636078e-04, +-3.401067015051838162e-04, +-3.394461688007675013e-04, +-3.387851263579731058e-04, +-3.381235752832609850e-04, +-3.374615166838766190e-04, +-3.367989516678642197e-04, +-3.361358813439484445e-04, +-3.354723068216199935e-04, +-3.348082292111624982e-04, +-3.341436496235335304e-04, +-3.334785691705393750e-04, +-3.328129889646277311e-04, +-3.321469101190606421e-04, +-3.314803337477966968e-04, +-3.308132609655343981e-04, +-3.301456928877190473e-04, +-3.294776306305794984e-04, +-3.288090753110015237e-04, +-3.281400280466153629e-04, +-3.274704899558252133e-04, +-3.268004621576901304e-04, +-3.261299457720953318e-04, +-3.254589419195468491e-04, +-3.247874517213473317e-04, +-3.241154762994586237e-04, +-3.234430167766041671e-04, +-3.227700742762093164e-04, +-3.220966499224292025e-04, +-3.214227448400838434e-04, +-3.207483601547656969e-04, +-3.200734969927287467e-04, +-3.193981564809202697e-04, +-3.187223397470673007e-04, +-3.180460479195516246e-04, +-3.173692821274427898e-04, +-3.166920435005113896e-04, +-3.160143331692377906e-04, +-3.153361522648407008e-04, +-3.146575019191625699e-04, +-3.139783832647468384e-04, +-3.132987974348743669e-04, +-3.126187455634680807e-04, +-3.119382287851222972e-04, +-3.112572482351892451e-04, +-3.105758050496590437e-04, +-3.098939003651706532e-04, +-3.092115353191028388e-04, +-3.085287110494346345e-04, +-3.078454286949253204e-04, +-3.071616893949010514e-04, +-3.064774942894334261e-04, +-3.057928445192196814e-04, +-3.051077412256202612e-04, +-3.044221855506793611e-04, +-3.037361786371481852e-04, +-3.030497216283627019e-04, +-3.023628156683339039e-04, +-3.016754619017762143e-04, +-3.009876614739830200e-04, +-3.002994155310065956e-04, +-2.996107252194467915e-04, +-2.989215916866281935e-04, +-2.982320160804769566e-04, +-2.975419995495492118e-04, +-2.968515432431245238e-04, +-2.961606483110760580e-04, +-2.954693159039025645e-04, +-2.947775471727416053e-04, +-2.940853432694114588e-04, +-2.933927053462908816e-04, +-2.926996345564809800e-04, +-2.920061320536684922e-04, +-2.913121989921534896e-04, +-2.906178365268623871e-04, +-2.899230458133625799e-04, +-2.892278280078901449e-04, +-2.885321842672242901e-04, +-2.878361157487818430e-04, +-2.871396236106389882e-04, +-2.864427090114443153e-04, +-2.857453731104429417e-04, +-2.850476170675678026e-04, +-2.843494420433174074e-04, +-2.836508491987789330e-04, +-2.829518396956495286e-04, +-2.822524146962421699e-04, +-2.815525753635189990e-04, +-2.808523228609646890e-04, +-2.801516583526785474e-04, +-2.794505830034009161e-04, +-2.787490979784044802e-04, +-2.780472044436019296e-04, +-2.773449035654775453e-04, +-2.766421965111231411e-04, +-2.759390844481686748e-04, +-2.752355685448896918e-04, +-2.745316499700684401e-04, +-2.738273298931748223e-04, +-2.731226094841499898e-04, +-2.724174899135888136e-04, +-2.717119723526137376e-04, +-2.710060579729060577e-04, +-2.702997479467936334e-04, +-2.695930434471283197e-04, +-2.688859456473122580e-04, +-2.681784557213137601e-04, +-2.674705748437094838e-04, +-2.667623041895599663e-04, +-2.660536449345954563e-04, +-2.653445982549911051e-04, +-2.646351653275593580e-04, +-2.639253473296002800e-04, +-2.632151454390141507e-04, +-2.625045608342334844e-04, +-2.617935946942555564e-04, +-2.610822481985753990e-04, +-2.603705225272947643e-04, +-2.596584188610092585e-04, +-2.589459383808384281e-04, +-2.582330822685198154e-04, +-2.575198517062773896e-04, +-2.568062478768550492e-04, +-2.560922719635266506e-04, +-2.553779251501137352e-04, +-2.546632086210119292e-04, +-2.539481235610647428e-04, +-2.532326711556541553e-04, +-2.525168525907329239e-04, +-2.518006690527258137e-04, +-2.510841217285602256e-04, +-2.503672118057589501e-04, +-2.496499404723115812e-04, +-2.489323089167031931e-04, +-2.482143183279307119e-04, +-2.474959698955144080e-04, +-2.467772648095283082e-04, +-2.460582042604561592e-04, +-2.453387894393631655e-04, +-2.446190215377670773e-04, +-2.438989017476852182e-04, +-2.431784312616461403e-04, +-2.424576112727217165e-04, +-2.417364429743957079e-04, +-2.410149275606589573e-04, +-2.402930662260399901e-04, +-2.395708601654722816e-04, +-2.388483105744859160e-04, +-2.381254186489841060e-04, +-2.374021855854279947e-04, +-2.366786125807112133e-04, +-2.359547008321873931e-04, +-2.352304515377656832e-04, +-2.345058658957795898e-04, +-2.337809451050173602e-04, +-2.330556903647367558e-04, +-2.323301028747099645e-04, +-2.316041838350933616e-04, +-2.308779344466207410e-04, +-2.301513559103717302e-04, +-2.294244494279672176e-04, +-2.286972162014201660e-04, +-2.279696574332303993e-04, +-2.272417743264002420e-04, +-2.265135680843008371e-04, +-2.257850399107696972e-04, +-2.250561910101397608e-04, +-2.243270225871396464e-04, +-2.235975358469266387e-04, +-2.228677319951783580e-04, +-2.221376122379632256e-04, +-2.214071777817721220e-04, +-2.206764298335295272e-04, +-2.199453696006099736e-04, +-2.192139982908667230e-04, +-2.184823171125036955e-04, +-2.177503272741649969e-04, +-2.170180299849712132e-04, +-2.162854264543996054e-04, +-2.155525178923978701e-04, +-2.148193055093172710e-04, +-2.140857905159417767e-04, +-2.133519741234224127e-04, +-2.126178575433876057e-04, +-2.118834419877962743e-04, +-2.111487286691312237e-04, +-2.104137188001672888e-04, +-2.096784135941665180e-04, +-2.089428142647453039e-04, +-2.082069220259050938e-04, +-2.074707380921277718e-04, +-2.067342636782443894e-04, +-2.059974999994638426e-04, +-2.052604482713892974e-04, +-2.045231097100630219e-04, +-2.037854855318356581e-04, +-2.030475769535602406e-04, +-2.023093851923583333e-04, +-2.015709114658190896e-04, +-2.008321569918615859e-04, +-2.000931229887699218e-04, +-1.993538106752851887e-04, +-1.986142212704763673e-04, +-1.978743559937517669e-04, +-1.971342160649566572e-04, +-1.963938027042563914e-04, +-1.956531171321674147e-04, +-1.949121605696537037e-04, +-1.941709342379918917e-04, +-1.934294393588045812e-04, +-1.926876771540727846e-04, +-1.919456488461515099e-04, +-1.912033556578008231e-04, +-1.904607988120501872e-04, +-1.897179795322978567e-04, +-1.889748990423403135e-04, +-1.882315585662710838e-04, +-1.874879593285138605e-04, +-1.867441025539167201e-04, +-1.859999894676186581e-04, +-1.852556212950819516e-04, +-1.845109992621076910e-04, +-1.837661245948446162e-04, +-1.830209985198281476e-04, +-1.822756222638390608e-04, +-1.815299970540051031e-04, +-1.807841241178305923e-04, +-1.800380046830607830e-04, +-1.792916399778813870e-04, +-1.785450312306827321e-04, +-1.777981796702559486e-04, +-1.770510865256436474e-04, +-1.763037530262693739e-04, +-1.755561804017862805e-04, +-1.748083698822751558e-04, +-1.740603226980088551e-04, +-1.733120400796501397e-04, +-1.725635232581168566e-04, +-1.718147734646130822e-04, +-1.710657919307257248e-04, +-1.703165798882923330e-04, +-1.695671385694292579e-04, +-1.688174692065471576e-04, +-1.680675730324009782e-04, +-1.673174512799508243e-04, +-1.665671051825634574e-04, +-1.658165359737756421e-04, +-1.650657448874909012e-04, +-1.643147331578297067e-04, +-1.635635020192421278e-04, +-1.628120527064415323e-04, +-1.620603864544322066e-04, +-1.613085044984447099e-04, +-1.605564080740475475e-04, +-1.598040984170308082e-04, +-1.590515767634349776e-04, +-1.582988443496501692e-04, +-1.575459024122826323e-04, +-1.567927521881818569e-04, +-1.560393949144589509e-04, +-1.552858318284993527e-04, +-1.545320641679955194e-04, +-1.537780931708094233e-04, +-1.530239200750728131e-04, +-1.522695461192171383e-04, +-1.515149725418721760e-04, +-1.507602005818965783e-04, +-1.500052314784772938e-04, +-1.492500664709916840e-04, +-1.484947067990420285e-04, +-1.477391537024678840e-04, +-1.469834084213605865e-04, +-1.462274721960965898e-04, +-1.454713462671835091e-04, +-1.447150318754425382e-04, +-1.439585302618714329e-04, +-1.432018426676785825e-04, +-1.424449703343780673e-04, +-1.416879145036571144e-04, +-1.409306764174042602e-04, +-1.401732573177269145e-04, +-1.394156584469973307e-04, +-1.386578810477177035e-04, +-1.378999263627199608e-04, +-1.371417956349269679e-04, +-1.363834901075533762e-04, +-1.356250110239692029e-04, +-1.348663596277302164e-04, +-1.341075371626780893e-04, +-1.333485448728032464e-04, +-1.325893840022769577e-04, +-1.318300557954649990e-04, +-1.310705614969773084e-04, +-1.303109023515302385e-04, +-1.295510796041476757e-04, +-1.287910944999229497e-04, +-1.280309482842180012e-04, +-1.272706422025104013e-04, +-1.265101775004928535e-04, +-1.257495554240872890e-04, +-1.249887772193080402e-04, +-1.242278441323621020e-04, +-1.234667574096784328e-04, +-1.227055182978072589e-04, +-1.219441280434504322e-04, +-1.211825878935602962e-04, +-1.204208990952045262e-04, +-1.196590628955950100e-04, +-1.188970805421054390e-04, +-1.181349532822845356e-04, +-1.173726823638880098e-04, +-1.166102690347415298e-04, +-1.158477145428406718e-04, +-1.150850201363816302e-04, +-1.143221870636246620e-04, +-1.135592165730946103e-04, +-1.127961099133419461e-04, +-1.120328683331447007e-04, +-1.112694930813529372e-04, +-1.105059854070222563e-04, +-1.097423465592603953e-04, +-1.089785777874278461e-04, +-1.082146803408973521e-04, +-1.074506554692579007e-04, +-1.066865044221749158e-04, +-1.059222284494221601e-04, +-1.051578288009834061e-04, +-1.043933067269125879e-04, +-1.036286634773665846e-04, +-1.028639003026202094e-04, +-1.020990184531144157e-04, +-1.013340191793195798e-04, +-1.005689037319366333e-04, +-9.980367336165651981e-05, +-9.903832931936356373e-05, +-9.827287285599583893e-05, +-9.750730522257850777e-05, +-9.674162767032289014e-05, +-9.597584145048917634e-05, +-9.520994781439996604e-05, +-9.444394801354202070e-05, +-9.367784329944419590e-05, +-9.291163492370943890e-05, +-9.214532413811502313e-05, +-9.137891219447451566e-05, +-9.061240034466902938e-05, +-8.984578984066389257e-05, +-8.907908193452092750e-05, +-8.831227787843355149e-05, +-8.754537892458615588e-05, +-8.677838632525520786e-05, +-8.601130133284119381e-05, +-8.524412519973035640e-05, +-8.447685917849683055e-05, +-8.370950452166256038e-05, +-8.294206248189897439e-05, +-8.217453431188945440e-05, +-8.140692126437792139e-05, +-8.063922459218339088e-05, +-7.987144554823350190e-05, +-7.910358538542457357e-05, +-7.833564535672242241e-05, +-7.756762671519502384e-05, +-7.679953071387273151e-05, +-7.603135860593489552e-05, +-7.526311164455436078e-05, +-7.449479108292870555e-05, +-7.372639817429594883e-05, +-7.295793417198332591e-05, +-7.218940032926920167e-05, +-7.142079789958524717e-05, +-7.065212813627584165e-05, +-6.988339229280091320e-05, +-6.911459162259693046e-05, +-6.834572737910918480e-05, +-6.757680081589253975e-05, +-6.680781318647230078e-05, +-6.603876574437668717e-05, +-6.526965974315150935e-05, +-6.450049643640967635e-05, +-6.373127707769248561e-05, +-6.296200292067257213e-05, +-6.219267521891229400e-05, +-6.142329522606735910e-05, +-6.065386419573053740e-05, +-5.988438338154924940e-05, +-5.911485403715587234e-05, +-5.834527741619866697e-05, +-5.757565477227234805e-05, +-5.680598735903553048e-05, +-5.603627643008844488e-05, +-5.526652323900592444e-05, +-5.449672903943729381e-05, +-5.372689508496799780e-05, +-5.295702262915150403e-05, +-5.218711292552444112e-05, +-5.141716722762138447e-05, +-5.064718678900776181e-05, +-4.987717286314022151e-05, +-4.910712670346774800e-05, +-4.833704956346323233e-05, +-4.756694269648520260e-05, +-4.679680735598103046e-05, +-4.602664479524480173e-05, +-4.525645626762122089e-05, +-4.448624302634909979e-05, +-4.371600632469686929e-05, +-4.294574741580568848e-05, +-4.217546755289351863e-05, +-4.140516798901296662e-05, +-4.063484997725489811e-05, +-3.986451477060932086e-05, +-3.909416362199771426e-05, +-3.832379778437390762e-05, +-3.755341851058454326e-05, +-3.678302705340176531e-05, +-3.601262466553778181e-05, +-3.524221259969521241e-05, +-3.447179210842674514e-05, +-3.370136444433963050e-05, +-3.293093085985340296e-05, +-3.216049260740354152e-05, +-3.139005093930237337e-05, +-3.061960710777100362e-05, +-2.984916236504091866e-05, +-2.907871796321370386e-05, +-2.830827515429436254e-05, +-2.753783519020568837e-05, +-2.676739932283817258e-05, +-2.599696880391031467e-05, +-2.522654488515568792e-05, +-2.445612881816632982e-05, +-2.368572185442498009e-05, +-2.291532524532025956e-05, +-2.214494024216178458e-05, +-2.137456809621271345e-05, +-2.060421005854984030e-05, +-1.983386738016519154e-05, +-1.906354131199790151e-05, +-1.829323310479498727e-05, +-1.752294400931538198e-05, +-1.675267527608754109e-05, +-1.598242815561325887e-05, +-1.521220389822863978e-05, +-1.444200375415321791e-05, +-1.367182897350535773e-05, +-1.290168080633437188e-05, +-1.213156050248138079e-05, +-1.136146931168008586e-05, +-1.059140848358911766e-05, +-9.821379267652809104e-06, +-9.051382913305042421e-06, +-8.281420669726894388e-06, +-7.511493786050730609e-06, +-6.741603511203526447e-06, +-5.971751094042293188e-06, +-5.201937783197514171e-06, +-4.432164827277156901e-06, +-3.662433474624221310e-06, +-2.892744973520855212e-06, +-2.123100572048906845e-06, +-1.353501518122266073e-06, +-5.839490595878549596e-07, + 1.855555559137512422e-07, + 9.550110809159769029e-07, + 1.724416268111110282e-06, + 2.493769870300841460e-06, + 3.263070640535567869e-06, + 4.032317331910483125e-06, + 4.801508697807832472e-06, + 5.570643491693016076e-06, + 6.339720467253887399e-06, + 7.108738378368419839e-06, + 7.877695979003816629e-06, + 8.646592023355730025e-06, + 9.415425265833223082e-06, + 1.018419446095771015e-05, + 1.095289836351945045e-05, + 1.172153572837367741e-05, + 1.249010531068284160e-05, + 1.325860586571261812e-05, + 1.402703614897132313e-05, + 1.479539491616036581e-05, + 1.556368092315906781e-05, + 1.633189292599256922e-05, + 1.710002968097073010e-05, + 1.786808994458757746e-05, + 1.863607247348878434e-05, + 1.940397602461090167e-05, + 2.017179935497764683e-05, + 2.093954122194198908e-05, + 2.170720038298232634e-05, + 2.247477559584170007e-05, + 2.324226561847837606e-05, + 2.400966920905060458e-05, + 2.477698512588458557e-05, + 2.554421212761339224e-05, + 2.631134897307593361e-05, + 2.707839442128539398e-05, + 2.784534723156741122e-05, + 2.861220616337441044e-05, + 2.937896997644121754e-05, + 3.014563743075325146e-05, + 3.091220728653090819e-05, + 3.167867830418058880e-05, + 3.244504924443360265e-05, + 3.321131886814244577e-05, + 3.397748593652302523e-05, + 3.474354921095061227e-05, + 3.550950745309923001e-05, + 3.627535942490908000e-05, + 3.704110388848613831e-05, + 3.780673960624091306e-05, + 3.857226534085641981e-05, + 3.933767985527256226e-05, + 4.010298191267163109e-05, + 4.086817027644572362e-05, + 4.163324371033563694e-05, + 4.239820097833019971e-05, + 4.316304084463420010e-05, + 4.392776207379010106e-05, + 4.469236343056001812e-05, + 4.545684367999659232e-05, + 4.622120158741022702e-05, + 4.698543591844006243e-05, + 4.774954543893566208e-05, + 4.851352891511358516e-05, + 4.927738511335340744e-05, + 5.004111280043972194e-05, + 5.080471074335883076e-05, + 5.156817770943709597e-05, + 5.233151246629204215e-05, + 5.309471378181719110e-05, + 5.385778042414992878e-05, + 5.462071116180983600e-05, + 5.538350476359867747e-05, + 5.614615999856763186e-05, + 5.690867563615657787e-05, + 5.767105044599032520e-05, + 5.843328319812075080e-05, + 5.919537266282283330e-05, + 5.995731761075076462e-05, + 6.071911681280323781e-05, + 6.148076904027959249e-05, + 6.224227306467601875e-05, + 6.300362765792695476e-05, + 6.376483159220270008e-05, + 6.452588364004706192e-05, + 6.528678257434589974e-05, + 6.604752716822618599e-05, + 6.680811619519524481e-05, + 6.756854842910753475e-05, + 6.832882264415036445e-05, + 6.908893761479461561e-05, + 6.984889211593250447e-05, + 7.060868492267617766e-05, + 7.136831481059687367e-05, + 7.212778055552345098e-05, + 7.288708093368040700e-05, + 7.364621472165537911e-05, + 7.440518069629931672e-05, + 7.516397763486479841e-05, + 7.592260431497364133e-05, + 7.668105951460126165e-05, + 7.743934201206337947e-05, + 7.819745058598244925e-05, + 7.895538401544272781e-05, + 7.971314107980605483e-05, + 8.047072055884931614e-05, + 8.122812123271496343e-05, + 8.198534188189689252e-05, + 8.274238128720809351e-05, + 8.349923822991827662e-05, + 8.425591149165362424e-05, + 8.501239985436572844e-05, + 8.576870210046852580e-05, + 8.652481701263735401e-05, + 8.728074337404762549e-05, + 8.803647996817362651e-05, + 8.879202557892627867e-05, + 8.954737899060383481e-05, + 9.030253898787721516e-05, + 9.105750435575825374e-05, + 9.181227387973645699e-05, + 9.256684634568027351e-05, + 9.332122053980383626e-05, + 9.407539524880601141e-05, + 9.482936925966782874e-05, + 9.558314135989255114e-05, + 9.633671033730321334e-05, + 9.709007498019819144e-05, + 9.784323407721669404e-05, + 9.859618641749380314e-05, + 9.934893079045875835e-05, + 1.001014659860744843e-04, + 1.008537907946354951e-04, + 1.016059040069062526e-04, + 1.023578044140880571e-04, + 1.031094908077213743e-04, + 1.038609619798210086e-04, + 1.046122167228454605e-04, + 1.053632538296813006e-04, + 1.061140720936286548e-04, + 1.068646703083700201e-04, + 1.076150472681050715e-04, + 1.083652017674538426e-04, + 1.091151326014233732e-04, + 1.098648385655284212e-04, + 1.106143184556743827e-04, + 1.113635710682281171e-04, + 1.121125951999850422e-04, + 1.128613896482392001e-04, + 1.136099532106666109e-04, + 1.143582846854787551e-04, + 1.151063828712231481e-04, + 1.158542465670202656e-04, + 1.166018745723642805e-04, + 1.173492656872585343e-04, + 1.180964187121675879e-04, + 1.188433324480023685e-04, + 1.195900056960891067e-04, + 1.203364372583038186e-04, + 1.210826259369749851e-04, + 1.218285705348518791e-04, + 1.225742698552398477e-04, + 1.233197227018018754e-04, + 1.240649278787946152e-04, + 1.248098841908692341e-04, + 1.255545904432072910e-04, + 1.262990454414736547e-04, + 1.270432479917991302e-04, + 1.277871969007513475e-04, + 1.285308909754866581e-04, + 1.292743290235662821e-04, + 1.300175098530950311e-04, + 1.307604322726867770e-04, + 1.315030950913684455e-04, + 1.322454971187134545e-04, + 1.329876371648129824e-04, + 1.337295140402580793e-04, + 1.344711265561269271e-04, + 1.352124735239530187e-04, + 1.359535537558595713e-04, + 1.366943660644627078e-04, + 1.374349092628390659e-04, + 1.381751821646281738e-04, + 1.389151835840005480e-04, + 1.396549123355600062e-04, + 1.403943672344792469e-04, + 1.411335470964670798e-04, + 1.418724507377551436e-04, + 1.426110769750825111e-04, + 1.433494246256638129e-04, + 1.440874925073250073e-04, + 1.448252794384049884e-04, + 1.455627842377256085e-04, + 1.463000057247067925e-04, + 1.470369427192713728e-04, + 1.477735940418310485e-04, + 1.485099585134174653e-04, + 1.492460349555879988e-04, + 1.499818221903936346e-04, + 1.507173190405120000e-04, + 1.514525243290516386e-04, + 1.521874368797864147e-04, + 1.529220555169572124e-04, + 1.536563790654065940e-04, + 1.543904063505322605e-04, + 1.551241361982705715e-04, + 1.558575674350674075e-04, + 1.565906988880096291e-04, + 1.573235293847299930e-04, + 1.580560577533755742e-04, + 1.587882828227411770e-04, + 1.595202034220734202e-04, + 1.602518183813032165e-04, + 1.609831265308509418e-04, + 1.617141267017748352e-04, + 1.624448177256429548e-04, + 1.631751984346812255e-04, + 1.639052676615798004e-04, + 1.646350242397239417e-04, + 1.653644670029994336e-04, + 1.660935947859242044e-04, + 1.668224064236197848e-04, + 1.675509007517131876e-04, + 1.682790766064699937e-04, + 1.690069328247636689e-04, + 1.697344682440610089e-04, + 1.704616817024082339e-04, + 1.711885720383985983e-04, + 1.719151380913069946e-04, + 1.726413787009921309e-04, + 1.733672927078660380e-04, + 1.740928789529952523e-04, + 1.748181362780682900e-04, + 1.755430635252996680e-04, + 1.762676595375637755e-04, + 1.769919231583627281e-04, + 1.777158532318123265e-04, + 1.784394486026274476e-04, + 1.791627081160919845e-04, + 1.798856306182061357e-04, + 1.806082149555103848e-04, + 1.813304599752159569e-04, + 1.820523645251590926e-04, + 1.827739274537874413e-04, + 1.834951476101266677e-04, + 1.842160238439143234e-04, + 1.849365550055047359e-04, + 1.856567399458358312e-04, + 1.863765775165634943e-04, + 1.870960665698671985e-04, + 1.878152059586798289e-04, + 1.885339945364929333e-04, + 1.892524311574902680e-04, + 1.899705146765017741e-04, + 1.906882439489864737e-04, + 1.914056178310031425e-04, + 1.921226351793417963e-04, + 1.928392948514299349e-04, + 1.935555957052977657e-04, + 1.942715365997140550e-04, + 1.949871163939917570e-04, + 1.957023339482158323e-04, + 1.964171881230509099e-04, + 1.971316777798902029e-04, + 1.978458017807594750e-04, + 1.985595589883024038e-04, + 1.992729482659111458e-04, + 1.999859684776328242e-04, + 2.006986184881379240e-04, + 2.014108971628187652e-04, + 2.021228033677585753e-04, + 2.028343359696393869e-04, + 2.035454938358702444e-04, + 2.042562758345564124e-04, + 2.049666808344852002e-04, + 2.056767077051149567e-04, + 2.063863553165404036e-04, + 2.070956225396255307e-04, + 2.078045082459069402e-04, + 2.085130113075669847e-04, + 2.092211305975434621e-04, + 2.099288649894232278e-04, + 2.106362133575051055e-04, + 2.113431745767714815e-04, + 2.120497475229535462e-04, + 2.127559310724202177e-04, + 2.134617241023250786e-04, + 2.141671254904166128e-04, + 2.148721341152611995e-04, + 2.155767488560564132e-04, + 2.162809685927590138e-04, + 2.169847922060380281e-04, + 2.176882185772622809e-04, + 2.183912465884694414e-04, + 2.190938751224951245e-04, + 2.197961030628786466e-04, + 2.204979292938350800e-04, + 2.211993527003805059e-04, + 2.219003721681484041e-04, + 2.226009865836080118e-04, + 2.233011948338796296e-04, + 2.240009958068612291e-04, + 2.247003883912002641e-04, + 2.253993714761980431e-04, + 2.260979439519413524e-04, + 2.267961047092842950e-04, + 2.274938526397592240e-04, + 2.281911866356858669e-04, + 2.288881055901435704e-04, + 2.295846083968778152e-04, + 2.302806939504282058e-04, + 2.309763611460973539e-04, + 2.316716088799396570e-04, + 2.323664360487440596e-04, + 2.330608415500073276e-04, + 2.337548242820593821e-04, + 2.344483831439714673e-04, + 2.351415170355274737e-04, + 2.358342248573181820e-04, + 2.365265055107126132e-04, + 2.372183578977650584e-04, + 2.379097809213445323e-04, + 2.386007734851007837e-04, + 2.392913344934538599e-04, + 2.399814628515789820e-04, + 2.406711574653788710e-04, + 2.413604172416056388e-04, + 2.420492410877751906e-04, + 2.427376279121329101e-04, + 2.434255766237663891e-04, + 2.441130861325130266e-04, + 2.448001553489478855e-04, + 2.454867831845084576e-04, + 2.461729685514010965e-04, + 2.468587103625769484e-04, + 2.475440075318526782e-04, + 2.482288589737280523e-04, + 2.489132636036064114e-04, + 2.495972203376081331e-04, + 2.502807280926945023e-04, + 2.509637857866293302e-04, + 2.516463923379578128e-04, + 2.523285466659832199e-04, + 2.530102476908887058e-04, + 2.536914943336468866e-04, + 2.543722855159914883e-04, + 2.550526201605424637e-04, + 2.557324971906222203e-04, + 2.564119155304731110e-04, + 2.570908741050749631e-04, + 2.577693718402837477e-04, + 2.584474076627267915e-04, + 2.591249804998662027e-04, + 2.598020892799699768e-04, + 2.604787329321724956e-04, + 2.611549103863725573e-04, + 2.618306205733398999e-04, + 2.625058624246877164e-04, + 2.631806348727812024e-04, + 2.638549368508617517e-04, + 2.645287672930198507e-04, + 2.652021251341790328e-04, + 2.658750093100835724e-04, + 2.665474187572695907e-04, + 2.672193524131883302e-04, + 2.678908092161177371e-04, + 2.685617881051307492e-04, + 2.692322880201921146e-04, + 2.699023079021265164e-04, + 2.705718466925296681e-04, + 2.712409033338931594e-04, + 2.719094767695903617e-04, + 2.725775659437837286e-04, + 2.732451698015683989e-04, + 2.739122872887886947e-04, + 2.745789173522516016e-04, + 2.752450589395490132e-04, + 2.759107109991768849e-04, + 2.765758724804958778e-04, + 2.772405423337137402e-04, + 2.779047195098608585e-04, + 2.785684029609083816e-04, + 2.792315916396826228e-04, + 2.798942844998355693e-04, + 2.805564804959658799e-04, + 2.812181785834417256e-04, + 2.818793777186121008e-04, + 2.825400768586281471e-04, + 2.832002749615650716e-04, + 2.838599709863920059e-04, + 2.845191638928882519e-04, + 2.851778526417605921e-04, + 2.858360361946153173e-04, + 2.864937135139468969e-04, + 2.871508835630938515e-04, + 2.878075453063587744e-04, + 2.884636977088470022e-04, + 2.891193397366034409e-04, + 2.897744703565824256e-04, + 2.904290885366338964e-04, + 2.910831932454929359e-04, + 2.917367834527503879e-04, + 2.923898581289715768e-04, + 2.930424162456113065e-04, + 2.936944567749848580e-04, + 2.943459786903587371e-04, + 2.949969809659211840e-04, + 2.956474625766987441e-04, + 2.962974224986702717e-04, + 2.969468597087464930e-04, + 2.975957731847492433e-04, + 2.982441619054029564e-04, + 2.988920248503061498e-04, + 2.995393610000509038e-04, + 3.001861693361341740e-04, + 3.008324488409318785e-04, + 3.014781984978041744e-04, + 3.021234172909906691e-04, + 3.027681042056749308e-04, + 3.034122582279552148e-04, + 3.040558783449009506e-04, + 3.046989635444602050e-04, + 3.053415128155840944e-04, + 3.059835251480587338e-04, + 3.066249995327077651e-04, + 3.072659349612221380e-04, + 3.079063304262750892e-04, + 3.085461849214966097e-04, + 3.091854974413882806e-04, + 3.098242669814389575e-04, + 3.104624925380978281e-04, + 3.111001731087647084e-04, + 3.117373076917411456e-04, + 3.123738952863560768e-04, + 3.130099348927886161e-04, + 3.136454255122730775e-04, + 3.142803661469264782e-04, + 3.149147557998817327e-04, + 3.155485934751892075e-04, + 3.161818781778710937e-04, + 3.168146089138980967e-04, + 3.174467846902491756e-04, + 3.180784045148093574e-04, + 3.187094673964747417e-04, + 3.193399723451222517e-04, + 3.199699183715275057e-04, + 3.205993044874827784e-04, + 3.212281297057639328e-04, + 3.218563930401229932e-04, + 3.224840935052749181e-04, + 3.231112301168662668e-04, + 3.237378018915970635e-04, + 3.243638078471313508e-04, + 3.249892470020741505e-04, + 3.256141183760566274e-04, + 3.262384209897066533e-04, + 3.268621538645723168e-04, + 3.274853160232295301e-04, + 3.281079064892589896e-04, + 3.287299242872327863e-04, + 3.293513684426998232e-04, + 3.299722379821643480e-04, + 3.305925319331948610e-04, + 3.312122493243432344e-04, + 3.318313891851182025e-04, + 3.324499505460851091e-04, + 3.330679324387830743e-04, + 3.336853338957124172e-04, + 3.343021539504502869e-04, + 3.349183916375637633e-04, + 3.355340459925858416e-04, + 3.361491160521314428e-04, + 3.367636008537265428e-04, + 3.373774994360076115e-04, + 3.379908108385555133e-04, + 3.386035341020086973e-04, + 3.392156682680352799e-04, + 3.398272123792550354e-04, + 3.404381654793452150e-04, + 3.410485266130222778e-04, + 3.416582948260232962e-04, + 3.422674691650684975e-04, + 3.428760486779745625e-04, + 3.434840324134861948e-04, + 3.440914194214762106e-04, + 3.446982087527775953e-04, + 3.453043994593092713e-04, + 3.459099905939844286e-04, + 3.465149812107641927e-04, + 3.471193703646288393e-04, + 3.477231571116425209e-04, + 3.483263405088501052e-04, + 3.489289196143806077e-04, + 3.495308934874157502e-04, + 3.501322611881165056e-04, + 3.507330217777260978e-04, + 3.513331743185497263e-04, + 3.519327178739412856e-04, + 3.525316515082879145e-04, + 3.531299742869892884e-04, + 3.537276852765631118e-04, + 3.543247835445701463e-04, + 3.549212681595829305e-04, + 3.555171381912727337e-04, + 3.561123927103812038e-04, + 3.567070307886434431e-04, + 3.573010514988956155e-04, + 3.578944539150620443e-04, + 3.584872371120796978e-04, + 3.590794001660147406e-04, + 3.596709421539077641e-04, + 3.602618621539627089e-04, + 3.608521592453836917e-04, + 3.614418325084876003e-04, + 3.620308810246761211e-04, + 3.626193038763578388e-04, + 3.632071001470590422e-04, + 3.637942689213927703e-04, + 3.643808092850523610e-04, + 3.649667203247710648e-04, + 3.655520011284272121e-04, + 3.661366507848910702e-04, + 3.667206683842074767e-04, + 3.673040530174416117e-04, + 3.678868037767856836e-04, + 3.684689197555310650e-04, + 3.690504000479939706e-04, + 3.696312437496199741e-04, + 3.702114499569609152e-04, + 3.707910177676612381e-04, + 3.713699462804244899e-04, + 3.719482345951111700e-04, + 3.725258818126030418e-04, + 3.731028870349223413e-04, + 3.736792493652020151e-04, + 3.742549679076790530e-04, + 3.748300417676788212e-04, + 3.754044700515933781e-04, + 3.759782518669890273e-04, + 3.765513863225205572e-04, + 3.771238725279160622e-04, + 3.776957095940534871e-04, + 3.782668966329346609e-04, + 3.788374327576094565e-04, + 3.794073170822805791e-04, + 3.799765487222796592e-04, + 3.805451267940557062e-04, + 3.811130504151643205e-04, + 3.816803187042396668e-04, + 3.822469307811038699e-04, + 3.828128857666886274e-04, + 3.833781827830100557e-04, + 3.839428209532730991e-04, + 3.845067994017213131e-04, + 3.850701172538158667e-04, + 3.856327736360802300e-04, + 3.861947676762254541e-04, + 3.867560985030377390e-04, + 3.873167652465045268e-04, + 3.878767670376553401e-04, + 3.884361030087483740e-04, + 3.889947722931129067e-04, + 3.895527740252570695e-04, + 3.901101073408402538e-04, + 3.906667713766002526e-04, + 3.912227652704563141e-04, + 3.917780881614850181e-04, + 3.923327391899050429e-04, + 3.928867174970481087e-04, + 3.934400222254540083e-04, + 3.939926525187246726e-04, + 3.945446075217013846e-04, + 3.950958863803138575e-04, + 3.956464882416962990e-04, + 3.961964122540982897e-04, + 3.967456575669403487e-04, + 3.972942233307852561e-04, + 3.978421086973916673e-04, + 3.983893128196320382e-04, + 3.989358348515720980e-04, + 3.994816739484565913e-04, + 4.000268292666305653e-04, + 4.005712999636400380e-04, + 4.011150851982126452e-04, + 4.016581841302404557e-04, + 4.022005959207746589e-04, + 4.027423197319981887e-04, + 4.032833547273277468e-04, + 4.038237000713411611e-04, + 4.043633549297509858e-04, + 4.049023184694857617e-04, + 4.054405898586600928e-04, + 4.059781682665056365e-04, + 4.065150528634719888e-04, + 4.070512428211981695e-04, + 4.075867373125072559e-04, + 4.081215355113936970e-04, + 4.086556365929970764e-04, + 4.091890397337181757e-04, + 4.097217441110822026e-04, + 4.102537489038405975e-04, + 4.107850532919437659e-04, + 4.113156564564733153e-04, + 4.118455575797408809e-04, + 4.123747558452595563e-04, + 4.129032504377404787e-04, + 4.134310405430519542e-04, + 4.139581253483204512e-04, + 4.144845040417849381e-04, + 4.150101758129700843e-04, + 4.155351398525391885e-04, + 4.160593953523937624e-04, + 4.165829415056506542e-04, + 4.171057775065726593e-04, + 4.176279025506606781e-04, + 4.181493158346362600e-04, + 4.186700165564309238e-04, + 4.191900039151459883e-04, + 4.197092771111537828e-04, + 4.202278353459565374e-04, + 4.207456778223504779e-04, + 4.212628037442904083e-04, + 4.217792123169888073e-04, + 4.222949027468534864e-04, + 4.228098742414762600e-04, + 4.233241260097234224e-04, + 4.238376572616722672e-04, + 4.243504672085854465e-04, + 4.248625550629832868e-04, + 4.253739200386215630e-04, + 4.258845613504220009e-04, + 4.263944782145693679e-04, + 4.269036698484854515e-04, + 4.274121354708225549e-04, + 4.279198743014479920e-04, + 4.284268855614293430e-04, + 4.289331684731214614e-04, + 4.294387222601020178e-04, + 4.299435461471480817e-04, + 4.304476393603302300e-04, + 4.309510011268751785e-04, + 4.314536306753296050e-04, + 4.319555272354188777e-04, + 4.324566900381580773e-04, + 4.329571183157564251e-04, + 4.334568113017217453e-04, + 4.339557682307297647e-04, + 4.344539883387767685e-04, + 4.349514708630509052e-04, + 4.354482150420209289e-04, + 4.359442201154169541e-04, + 4.364394853241599292e-04, + 4.369340099104555277e-04, + 4.374277931177749583e-04, + 4.379208341908429839e-04, + 4.384131323756012221e-04, + 4.389046869193056685e-04, + 4.393954970703922562e-04, + 4.398855620786270714e-04, + 4.403748811949852486e-04, + 4.408634536717327733e-04, + 4.413512787624088098e-04, + 4.418383557217565828e-04, + 4.423246838058206309e-04, + 4.428102622719278327e-04, + 4.432950903786305407e-04, + 4.437791673857765119e-04, + 4.442624925544959519e-04, + 4.447450651471327224e-04, + 4.452268844273319986e-04, + 4.457079496600240063e-04, + 4.461882601114085722e-04, + 4.466678150489489436e-04, + 4.471466137413514599e-04, + 4.476246554586518550e-04, + 4.481019394721506388e-04, + 4.485784650543965090e-04, + 4.490542314792693467e-04, + 4.495292380218526601e-04, + 4.500034839585891132e-04, + 4.504769685671490662e-04, + 4.509496911265181793e-04, + 4.514216509169657540e-04, + 4.518928472200374686e-04, + 4.523632793185334232e-04, + 4.528329464965933585e-04, + 4.533018480396382708e-04, + 4.537699832343448252e-04, + 4.542373513687337724e-04, + 4.547039517320550228e-04, + 4.551697836148832195e-04, + 4.556348463090976260e-04, + 4.560991391078747536e-04, + 4.565626613056529082e-04, + 4.570254121982217452e-04, + 4.574873910825953097e-04, + 4.579485972571619812e-04, + 4.584090300215583813e-04, + 4.588686886767531282e-04, + 4.593275725250287847e-04, + 4.597856808699171856e-04, + 4.602430130162900768e-04, + 4.606995682703329321e-04, + 4.611553459395379057e-04, + 4.616103453326768358e-04, + 4.620645657598809871e-04, + 4.625180065325151758e-04, + 4.629706669633343818e-04, + 4.634225463663487659e-04, + 4.638736440569263980e-04, + 4.643239593517183928e-04, + 4.647734915686974532e-04, + 4.652222400271471912e-04, + 4.656702040476958459e-04, + 4.661173829522500937e-04, + 4.665637760640689363e-04, + 4.670093827077359452e-04, + 4.674542022091119904e-04, + 4.678982338954052259e-04, + 4.683414770951624699e-04, + 4.687839311382492016e-04, + 4.692255953558511876e-04, + 4.696664690804460752e-04, + 4.701065516458934903e-04, + 4.705458423873673285e-04, + 4.709843406413433955e-04, + 4.714220457456767105e-04, + 4.718589570394855510e-04, + 4.722950738632864898e-04, + 4.727303955588840778e-04, + 4.731649214694444070e-04, + 4.735986509394683850e-04, + 4.740315833147864220e-04, + 4.744637179425317060e-04, + 4.748950541712398401e-04, + 4.753255913507327250e-04, + 4.757553288322035603e-04, + 4.761842659681967327e-04, + 4.766124021125491602e-04, + 4.770397366204697106e-04, + 4.774662688485217452e-04, + 4.778919981546149876e-04, + 4.783169238979724015e-04, + 4.787410454392160048e-04, + 4.791643621402448430e-04, + 4.795868733643772908e-04, + 4.800085784762311934e-04, + 4.804294768418041514e-04, + 4.808495678284569331e-04, + 4.812688508048519999e-04, + 4.816873251410364477e-04, + 4.821049902084224912e-04, + 4.825218453797728820e-04, + 4.829378900291819883e-04, + 4.833531235321488167e-04, + 4.837675452654636044e-04, + 4.841811546073425312e-04, + 4.845939509373111136e-04, + 4.850059336362992895e-04, + 4.854171020865766912e-04, + 4.858274556717472243e-04, + 4.862369937768271848e-04, + 4.866457157881875248e-04, + 4.870536210935341747e-04, + 4.874607090819923941e-04, + 4.878669791439811665e-04, + 4.882724306713616814e-04, + 4.886770630573105366e-04, + 4.890808756964069078e-04, + 4.894838679845999688e-04, + 4.898860393191988623e-04, + 4.902873890988607196e-04, + 4.906879167236620010e-04, + 4.910876215950425510e-04, + 4.914865031157932386e-04, + 4.918845606901245870e-04, + 4.922817937235614977e-04, + 4.926782016230704274e-04, + 4.930737837969505341e-04, + 4.934685396549183534e-04, + 4.938624686080339641e-04, + 4.942555700687851225e-04, + 4.946478434509783001e-04, + 4.950392881698670528e-04, + 4.954299036420411074e-04, + 4.958196892855076766e-04, + 4.962086445196628361e-04, + 4.965967687652482650e-04, + 4.969840614444193333e-04, + 4.973705219807286228e-04, + 4.977561497991188789e-04, + 4.981409443258946051e-04, + 4.985249049887962225e-04, + 4.989080312168939256e-04, + 4.992903224407150772e-04, + 4.996717780921313421e-04, + 5.000523976044379424e-04, + 5.004321804123359856e-04, + 5.008111259518759767e-04, + 5.011892336605314364e-04, + 5.015665029771921787e-04, + 5.019429333421112933e-04, + 5.023185241969854850e-04, + 5.026932749848489305e-04, + 5.030671851501986123e-04, + 5.034402541388907767e-04, + 5.038124813982070710e-04, + 5.041838663768357862e-04, + 5.045544085248594973e-04, + 5.049241072937395592e-04, + 5.052929621363883147e-04, + 5.056609725071119568e-04, + 5.060281378616022889e-04, + 5.063944576569989579e-04, + 5.067599313517927436e-04, + 5.071245584059449292e-04, + 5.074883382807808324e-04, + 5.078512704390684106e-04, + 5.082133543449800965e-04, + 5.085745894641001711e-04, + 5.089349752633962488e-04, + 5.092945112112959305e-04, + 5.096531967776299918e-04, + 5.100110314336241428e-04, + 5.103680146519594179e-04, + 5.107241459066844645e-04, + 5.110794246732941470e-04, + 5.114338504287097064e-04, + 5.117874226512682430e-04, + 5.121401408207080803e-04, + 5.124920044182262272e-04, + 5.128430129263857875e-04, + 5.131931658292308851e-04, + 5.135424626121873511e-04, + 5.138909027621294022e-04, + 5.142384857673654381e-04, + 5.145852111175876252e-04, + 5.149310783039417203e-04, + 5.152760868190047350e-04, + 5.156202361567864545e-04, + 5.159635258127128485e-04, + 5.163059552836200003e-04, + 5.166475240678089671e-04, + 5.169882316650081583e-04, + 5.173280775763511091e-04, + 5.176670613044364374e-04, + 5.180051823532727659e-04, + 5.183424402283103808e-04, + 5.186788344364232344e-04, + 5.190143644859496024e-04, + 5.193490298866263810e-04, + 5.196828301496696440e-04, + 5.200157647876785813e-04, + 5.203478333147437034e-04, + 5.206790352463541412e-04, + 5.210093700994656261e-04, + 5.213388373924683974e-04, + 5.216674366451920812e-04, + 5.219951673788803198e-04, + 5.223220291162588604e-04, + 5.226480213814893670e-04, + 5.229731437001520740e-04, + 5.232973955993113803e-04, + 5.236207766074214148e-04, + 5.239432862544400951e-04, + 5.242649240717264531e-04, + 5.245856895921210830e-04, + 5.249055823498824987e-04, + 5.252246018807525110e-04, + 5.255427477218730693e-04, + 5.258600194118819970e-04, + 5.261764164908370968e-04, + 5.264919385002650486e-04, + 5.268065849831508928e-04, + 5.271203554838997576e-04, + 5.274332495483860820e-04, + 5.277452667239504718e-04, + 5.280564065593817014e-04, + 5.283666686049060890e-04, + 5.286760524122397550e-04, + 5.289845575345058972e-04, + 5.292921835263322610e-04, + 5.295989299437710166e-04, + 5.299047963443523183e-04, + 5.302097822870693433e-04, + 5.305138873323434878e-04, + 5.308171110420776021e-04, + 5.311194529796348486e-04, + 5.314209127098480255e-04, + 5.317214897989986418e-04, + 5.320211838148143158e-04, + 5.323199943265235264e-04, + 5.326179209047841650e-04, + 5.329149631217411061e-04, + 5.332111205510035477e-04, + 5.335063927676355787e-04, + 5.338007793481492399e-04, + 5.340942798705601438e-04, + 5.343868939143404202e-04, + 5.346786210604080906e-04, + 5.349694608911889767e-04, + 5.352594129905241093e-04, + 5.355484769437765221e-04, + 5.358366523377421304e-04, + 5.361239387607101212e-04, + 5.364103358024385586e-04, + 5.366958430541512396e-04, + 5.369804601085250090e-04, + 5.372641865597426684e-04, + 5.375470220034543785e-04, + 5.378289660367611795e-04, + 5.381100182582791757e-04, + 5.383901782680436919e-04, + 5.386694456676194287e-04, + 5.389478200600117744e-04, + 5.392253010497281710e-04, + 5.395018882427282409e-04, + 5.397775812464848276e-04, + 5.400523796698981265e-04, + 5.403262831233955404e-04, + 5.405992912188535083e-04, + 5.408714035696460774e-04, + 5.411426197906336281e-04, + 5.414129394981279618e-04, + 5.416823623099365371e-04, + 5.419508878453634451e-04, + 5.422185157251880510e-04, + 5.424852455716717156e-04, + 5.427510770085371963e-04, + 5.430160096610240489e-04, + 5.432800431558524159e-04, + 5.435431771212048116e-04, + 5.438054111867733935e-04, + 5.440667449837375191e-04, + 5.443271781447371832e-04, + 5.445867103039144343e-04, + 5.448453410969152175e-04, + 5.451030701608429712e-04, + 5.453598971343300754e-04, + 5.456158216574459119e-04, + 5.458708433717980200e-04, + 5.461249619204532751e-04, + 5.463781769479854854e-04, + 5.466304881004607546e-04, + 5.468818950254300017e-04, + 5.471323973719216961e-04, + 5.473819947904830577e-04, + 5.476306869331494824e-04, + 5.478784734534346756e-04, + 5.481253540063727196e-04, + 5.483713282484526958e-04, + 5.486163958376980487e-04, + 5.488605564336028345e-04, + 5.491038096971684757e-04, + 5.493461552908975812e-04, + 5.495875928787822369e-04, + 5.498281221262929465e-04, + 5.500677427004288305e-04, + 5.503064542696840160e-04, + 5.505442565040263858e-04, + 5.507811490749589447e-04, + 5.510171316554455514e-04, + 5.512522039199700078e-04, + 5.514863655445213135e-04, + 5.517196162065883536e-04, + 5.519519555851543687e-04, + 5.521833833606916431e-04, + 5.524138992151992342e-04, + 5.526435028321746755e-04, + 5.528721938965993395e-04, + 5.530999720949787701e-04, + 5.533268371153250102e-04, + 5.535527886471250511e-04, + 5.537778263813913568e-04, + 5.540019500106447333e-04, + 5.542251592289102087e-04, + 5.544474537317146479e-04, + 5.546688332160739591e-04, + 5.548892973805401481e-04, + 5.551088459251634797e-04, + 5.553274785514875989e-04, + 5.555451949625824903e-04, + 5.557619948630148797e-04, + 5.559778779588638465e-04, + 5.561928439577077049e-04, + 5.564068925686568553e-04, + 5.566200235023048863e-04, + 5.568322364707863634e-04, + 5.570435311877036449e-04, + 5.572539073682111245e-04, + 5.574633647289493118e-04, + 5.576719029880803941e-04, + 5.578795218652840083e-04, + 5.580862210817419530e-04, + 5.582920003601399240e-04, + 5.584968594246942936e-04, + 5.587007980011342214e-04, + 5.589038158166888606e-04, + 5.591059126001208602e-04, + 5.593070880816786595e-04, + 5.595073419931548189e-04, + 5.597066740678359291e-04, + 5.599050840405427271e-04, + 5.601025716475913898e-04, + 5.602991366268382034e-04, + 5.604947787176217753e-04, + 5.606894976608341576e-04, + 5.608832931988563374e-04, + 5.610761650756027974e-04, + 5.612681130365117579e-04, + 5.614591368285128678e-04, + 5.616492362000717652e-04, + 5.618384109011740311e-04, + 5.620266606833264908e-04, + 5.622139852995486483e-04, + 5.624003845043686750e-04, + 5.625858580538522493e-04, + 5.627704057055872696e-04, + 5.629540272186633627e-04, + 5.631367223537067949e-04, + 5.633184908728695222e-04, + 5.634993325398007834e-04, + 5.636792471196855900e-04, + 5.638582343792360521e-04, + 5.640362940866863913e-04, + 5.642134260117868689e-04, + 5.643896299257980401e-04, + 5.645649056015335796e-04, + 5.647392528133041200e-04, + 5.649126713369564999e-04, + 5.650851609498640064e-04, + 5.652567214309207368e-04, + 5.654273525605278293e-04, + 5.655970541206355303e-04, + 5.657658258947147883e-04, + 5.659336676677476042e-04, + 5.661005792262616175e-04, + 5.662665603582857626e-04, + 5.664316108533976480e-04, + 5.665957305026831162e-04, + 5.667589190987677933e-04, + 5.669211764358014771e-04, + 5.670825023094579198e-04, + 5.672428965169271304e-04, + 5.674023588569443227e-04, + 5.675608891297695326e-04, + 5.677184871371771012e-04, + 5.678751526824908028e-04, + 5.680308855705351644e-04, + 5.681856856076904346e-04, + 5.683395526018449875e-04, + 5.684924863624294744e-04, + 5.686444867004016458e-04, + 5.687955534282317137e-04, + 5.689456863599423597e-04, + 5.690948853110798945e-04, + 5.692431500987090538e-04, + 5.693904805414363090e-04, + 5.695368764594032534e-04, + 5.696823376742614483e-04, + 5.698268640092060341e-04, + 5.699704552889665139e-04, + 5.701131113398014410e-04, + 5.702548319894989613e-04, + 5.703956170673684647e-04, + 5.705354664042656303e-04, + 5.706743798325765969e-04, + 5.708123571862088559e-04, + 5.709493983006164045e-04, + 5.710855030127741589e-04, + 5.712206711611938917e-04, + 5.713549025859142576e-04, + 5.714881971285206341e-04, + 5.716205546321148721e-04, + 5.717519749413487980e-04, + 5.718824579023858330e-04, + 5.720120033629456620e-04, + 5.721406111722623835e-04, + 5.722682811811176861e-04, + 5.723950132418262121e-04, + 5.725208072082289433e-04, + 5.726456629356979720e-04, + 5.727695802811523301e-04, + 5.728925591030398830e-04, + 5.730145992613372213e-04, + 5.731357006175721034e-04, + 5.732558630347807382e-04, + 5.733750863775595018e-04, + 5.734933705120236289e-04, + 5.736107153058322581e-04, + 5.737271206281831194e-04, + 5.738425863497939941e-04, + 5.739571123429268928e-04, + 5.740706984813871878e-04, + 5.741833446405026882e-04, + 5.742950506971453237e-04, + 5.744058165297266996e-04, + 5.745156420181799905e-04, + 5.746245270439830338e-04, + 5.747324714901521497e-04, + 5.748394752412408406e-04, + 5.749455381833355619e-04, + 5.750506602040525786e-04, + 5.751548411925566130e-04, + 5.752580810395440400e-04, + 5.753603796372481994e-04, + 5.754617368794367940e-04, + 5.755621526614232734e-04, + 5.756616268800452589e-04, + 5.757601594336822157e-04, + 5.758577502222554526e-04, + 5.759543991472224848e-04, + 5.760501061115761660e-04, + 5.761448710198369908e-04, + 5.762386937780787904e-04, + 5.763315742939081323e-04, + 5.764235124764607431e-04, + 5.765145082364233004e-04, + 5.766045614860110984e-04, + 5.766936721389703249e-04, + 5.767818401106016967e-04, + 5.768690653177327042e-04, + 5.769553476787302963e-04, + 5.770406871135041332e-04, + 5.771250835434893478e-04, + 5.772085368916741923e-04, + 5.772910470825713073e-04, + 5.773726140422402731e-04, + 5.774532376982776348e-04, + 5.775329179798161438e-04, + 5.776116548175195533e-04, + 5.776894481435995319e-04, + 5.777662978918054722e-04, + 5.778422039974184191e-04, + 5.779171663972641889e-04, + 5.779911850296948293e-04, + 5.780642598346159410e-04, + 5.781363907534610913e-04, + 5.782075777292037394e-04, + 5.782778207063578877e-04, + 5.783471196309706002e-04, + 5.784154744506291588e-04, + 5.784828851144642068e-04, + 5.785493515731337036e-04, + 5.786148737788418973e-04, + 5.786794516853318443e-04, + 5.787430852478758683e-04, + 5.788057744232883535e-04, + 5.788675191699253113e-04, + 5.789283194476783087e-04, + 5.789881752179758777e-04, + 5.790470864437799372e-04, + 5.791050530895943587e-04, + 5.791620751214668090e-04, + 5.792181525069717285e-04, + 5.792732852152252931e-04, + 5.793274732168855225e-04, + 5.793807164841412215e-04, + 5.794330149907205452e-04, + 5.794843687118889390e-04, + 5.795347776244551014e-04, + 5.795842417067561311e-04, + 5.796327609386672840e-04, + 5.796803353016078287e-04, + 5.797269647785277102e-04, + 5.797726493539149227e-04, + 5.798173890137977866e-04, + 5.798611837457407197e-04, + 5.799040335388376240e-04, + 5.799459383837253295e-04, + 5.799868982725794745e-04, + 5.800269131991058315e-04, + 5.800659831585553783e-04, + 5.801041081477021797e-04, + 5.801412881648685413e-04, + 5.801775232099075537e-04, + 5.802128132842094893e-04, + 5.802471583907016939e-04, + 5.802805585338432744e-04, + 5.803130137196307360e-04, + 5.803445239555985249e-04, + 5.803750892508181608e-04, + 5.804047096158885871e-04, + 5.804333850629538440e-04, + 5.804611156056819262e-04, + 5.804879012592888523e-04, + 5.805137420405121016e-04, + 5.805386379676358765e-04, + 5.805625890604726707e-04, + 5.805855953403689070e-04, + 5.806076568302053712e-04, + 5.806287735544048015e-04, + 5.806489455389120475e-04, + 5.806681728112141278e-04, + 5.806864554003318820e-04, + 5.807037933368135738e-04, + 5.807201866527470337e-04, + 5.807356353817507691e-04, + 5.807501395589794932e-04, + 5.807636992211166445e-04, + 5.807763144063787233e-04, + 5.807879851545194117e-04, + 5.807987115068249115e-04, + 5.808084935061050540e-04, + 5.808173311967132491e-04, + 5.808252246245295715e-04, + 5.808321738369653150e-04, + 5.808381788829634256e-04, + 5.808432398130020796e-04, + 5.808473566790864438e-04, + 5.808505295347575655e-04, + 5.808527584350813141e-04, + 5.808540434366603073e-04, + 5.808543845976261045e-04, + 5.808537819776371470e-04, + 5.808522356378884076e-04, + 5.808497456410998978e-04, + 5.808463120515212214e-04, + 5.808419349349351526e-04, + 5.808366143586550338e-04, + 5.808303503915161021e-04, + 5.808231431038909931e-04, + 5.808149925676753212e-04, + 5.808058988562953776e-04, + 5.807958620447066121e-04, + 5.807848822093918985e-04, + 5.807729594283617515e-04, + 5.807600937811541100e-04, + 5.807462853488378060e-04, + 5.807315342140032411e-04, + 5.807158404607733367e-04, + 5.806992041747930169e-04, + 5.806816254432366903e-04, + 5.806631043548056469e-04, + 5.806436409997240474e-04, + 5.806232354697473796e-04, + 5.806018878581494479e-04, + 5.805795982597350587e-04, + 5.805563667708324308e-04, + 5.805321934892948219e-04, + 5.805070785144985767e-04, + 5.804810219473463800e-04, + 5.804540238902651961e-04, + 5.804260844472021496e-04, + 5.803972037236336317e-04, + 5.803673818265539172e-04, + 5.803366188644836204e-04, + 5.803049149474637323e-04, + 5.802722701870613670e-04, + 5.802386846963626058e-04, + 5.802041585899747741e-04, + 5.801686919840293687e-04, + 5.801322849961785882e-04, + 5.800949377455947914e-04, + 5.800566503529695208e-04, + 5.800174229405194665e-04, + 5.799772556319795266e-04, + 5.799361485526005307e-04, + 5.798941018291587811e-04, + 5.798511155899432586e-04, + 5.798071899647716694e-04, + 5.797623250849688690e-04, + 5.797165210833862695e-04, + 5.796697780943907809e-04, + 5.796220962538648110e-04, + 5.795734756992103852e-04, + 5.795239165693483879e-04, + 5.794734190047147676e-04, + 5.794219831472576096e-04, + 5.793696091404497124e-04, + 5.793162971292703739e-04, + 5.792620472602224126e-04, + 5.792068596813195911e-04, + 5.791507345420897606e-04, + 5.790936719935768119e-04, + 5.790356721883392664e-04, + 5.789767352804479992e-04, + 5.789168614254865640e-04, + 5.788560507805542293e-04, + 5.787943035042612079e-04, + 5.787316197567298490e-04, + 5.786679996995932294e-04, + 5.786034434960001405e-04, + 5.785379513106082578e-04, + 5.784715233095852251e-04, + 5.784041596606084379e-04, + 5.783358605328678620e-04, + 5.782666260970650580e-04, + 5.781964565254057000e-04, + 5.781253519916064064e-04, + 5.780533126708938723e-04, + 5.779803387400040023e-04, + 5.779064303771749714e-04, + 5.778315877621599105e-04, + 5.777558110762167146e-04, + 5.776791005021034891e-04, + 5.776014562240954636e-04, + 5.775228784279625490e-04, + 5.774433673009917800e-04, + 5.773629230319653064e-04, + 5.772815458111769807e-04, + 5.771992358304214085e-04, + 5.771159932829937307e-04, + 5.770318183637012256e-04, + 5.769467112688521403e-04, + 5.768606721962500541e-04, + 5.767737013452052617e-04, + 5.766857989165344485e-04, + 5.765969651125469209e-04, + 5.765072001370633633e-04, + 5.764165041953940452e-04, + 5.763248774943592048e-04, + 5.762323202422710506e-04, + 5.761388326489429775e-04, + 5.760444149256916269e-04, + 5.759490672853296222e-04, + 5.758527899421649185e-04, + 5.757555831120024286e-04, + 5.756574470121526973e-04, + 5.755583818614091324e-04, + 5.754583878800735922e-04, + 5.753574652899420740e-04, + 5.752556143142977755e-04, + 5.751528351779224783e-04, + 5.750491281070948136e-04, + 5.749444933295896117e-04, + 5.748389310746705293e-04, + 5.747324415730888569e-04, + 5.746250250571018417e-04, + 5.745166817604481849e-04, + 5.744074119183567150e-04, + 5.742972157675578808e-04, + 5.741860935462686803e-04, + 5.740740454941894088e-04, + 5.739610718525154764e-04, + 5.738471728639271078e-04, + 5.737323487726071237e-04, + 5.736165998242091736e-04, + 5.734999262658788772e-04, + 5.733823283462556684e-04, + 5.732638063154593504e-04, + 5.731443604250998540e-04, + 5.730239909282689977e-04, + 5.729026980795477514e-04, + 5.727804821349970210e-04, + 5.726573433521664307e-04, + 5.725332819900814203e-04, + 5.724082983092649299e-04, + 5.722823925717073672e-04, + 5.721555650408908936e-04, + 5.720278159817743539e-04, + 5.718991456607947941e-04, + 5.717695543458780867e-04, + 5.716390423064288476e-04, + 5.715076098133246895e-04, + 5.713752571389229444e-04, + 5.712419845570661930e-04, + 5.711077923430643750e-04, + 5.709726807737169072e-04, + 5.708366501272904570e-04, + 5.706997006835340131e-04, + 5.705618327236641404e-04, + 5.704230465303801586e-04, + 5.702833423878527581e-04, + 5.701427205817316980e-04, + 5.700011813991273744e-04, + 5.698587251286376006e-04, + 5.697153520603233205e-04, + 5.695710624857139217e-04, + 5.694258566978241485e-04, + 5.692797349911314425e-04, + 5.691326976615783276e-04, + 5.689847450065798912e-04, + 5.688358773250203147e-04, + 5.686860949172617636e-04, + 5.685353980851207524e-04, + 5.683837871318784445e-04, + 5.682312623622994083e-04, + 5.680778240825999593e-04, + 5.679234726004586762e-04, + 5.677682082250380853e-04, + 5.676120312669485565e-04, + 5.674549420382680358e-04, + 5.672969408525339137e-04, + 5.671380280247500724e-04, + 5.669782038713900305e-04, + 5.668174687103708130e-04, + 5.666558228610855865e-04, + 5.664932666443785051e-04, + 5.663298003825468791e-04, + 5.661654243993677381e-04, + 5.660001390200614015e-04, + 5.658339445713063322e-04, + 5.656668413812342578e-04, + 5.654988297794468670e-04, + 5.653299100969797061e-04, + 5.651600826663514014e-04, + 5.649893478215096661e-04, + 5.648177058978717411e-04, + 5.646451572322989162e-04, + 5.644717021630995656e-04, + 5.642973410300547357e-04, + 5.641220741743819319e-04, + 5.639459019387486720e-04, + 5.637688246672692329e-04, + 5.635908427055214562e-04, + 5.634119564005098850e-04, + 5.632321661007163964e-04, + 5.630514721560389438e-04, + 5.628698749178457673e-04, + 5.626873747389322424e-04, + 5.625039719735524298e-04, + 5.623196669774010786e-04, + 5.621344601076195885e-04, + 5.619483517227796387e-04, + 5.617613421829156057e-04, + 5.615734318494841225e-04, + 5.613846210853884727e-04, + 5.611949102549844458e-04, + 5.610042997240591951e-04, + 5.608127898598352489e-04, + 5.606203810309702941e-04, + 5.604270736075697527e-04, + 5.602328679611807104e-04, + 5.600377644647712080e-04, + 5.598417634927480230e-04, + 5.596448654209648004e-04, + 5.594470706266885512e-04, + 5.592483794886474657e-04, + 5.590487923869776792e-04, + 5.588483097032644715e-04, + 5.586469318205083317e-04, + 5.584446591231557490e-04, + 5.582414919970678799e-04, + 5.580374308295578444e-04, + 5.578324760093403105e-04, + 5.576266279265806088e-04, + 5.574198869728557012e-04, + 5.572122535411668659e-04, + 5.570037280259587794e-04, + 5.567943108230928454e-04, + 5.565840023298462185e-04, + 5.563728029449232972e-04, + 5.561607130684608196e-04, + 5.559477331019952286e-04, + 5.557338634485184002e-04, + 5.555191045124081460e-04, + 5.553034566994874107e-04, + 5.550869204169816629e-04, + 5.548694960735307130e-04, + 5.546511840792153845e-04, + 5.544319848455211931e-04, + 5.542118987853394312e-04, + 5.539909263129815875e-04, + 5.537690678441849852e-04, + 5.535463237960791712e-04, + 5.533226945872325372e-04, + 5.530981806376133970e-04, + 5.528727823685919375e-04, + 5.526465002029564821e-04, + 5.524193345649027571e-04, + 5.521912858800556842e-04, + 5.519623545754184226e-04, + 5.517325410794119431e-04, + 5.515018458218735094e-04, + 5.512702692340252369e-04, + 5.510378117485285193e-04, + 5.508044737994120376e-04, + 5.505702558221326924e-04, + 5.503351582535375482e-04, + 5.500991815318759769e-04, + 5.498623260967994402e-04, + 5.496245923893781872e-04, + 5.493859808520533319e-04, + 5.491464919286745839e-04, + 5.489061260645013325e-04, + 5.486648837061639406e-04, + 5.484227653017255443e-04, + 5.481797713006099533e-04, + 5.479359021536614992e-04, + 5.476911583130924513e-04, + 5.474455402325360343e-04, + 5.471990483669875562e-04, + 5.469516831728698939e-04, + 5.467034451079602012e-04, + 5.464543346314523591e-04, + 5.462043522039112219e-04, + 5.459534982872871461e-04, + 5.457017733449414688e-04, + 5.454491778416051999e-04, + 5.451957122433940921e-04, + 5.449413770178021359e-04, + 5.446861726337284479e-04, + 5.444300995614241448e-04, + 5.441731582725622745e-04, + 5.439153492401584524e-04, + 5.436566729386355882e-04, + 5.433971298437761813e-04, + 5.431367204327533288e-04, + 5.428754451841147875e-04, + 5.426133045777931660e-04, + 5.423502990950761085e-04, + 5.420864292186503139e-04, + 5.418216954325614197e-04, + 5.415560982222198576e-04, + 5.412896380744384745e-04, + 5.410223154773851533e-04, + 5.407541309205895347e-04, + 5.404850848949575457e-04, + 5.402151778927618588e-04, + 5.399444104076671531e-04, + 5.396727829346728697e-04, + 5.394002959701487722e-04, + 5.391269500118535960e-04, + 5.388527455588742240e-04, + 5.385776831117076524e-04, + 5.383017631721686170e-04, + 5.380249862434646193e-04, + 5.377473528301483308e-04, + 5.374688634381290849e-04, + 5.371895185746807921e-04, + 5.369093187484565762e-04, + 5.366282644694289269e-04, + 5.363463562489571368e-04, + 5.360635945997378618e-04, + 5.357799800358156381e-04, + 5.354955130726181184e-04, + 5.352101942269097768e-04, + 5.349240240167978718e-04, + 5.346370029617436136e-04, + 5.343491315825721387e-04, + 5.340604104014323944e-04, + 5.337708399418570953e-04, + 5.334804207286902985e-04, + 5.331891532881475769e-04, + 5.328970381477739519e-04, + 5.326040758364509412e-04, + 5.323102668844346139e-04, + 5.320156118233062593e-04, + 5.317201111859806272e-04, + 5.314237655067122158e-04, + 5.311265753211154381e-04, + 5.308285411661109541e-04, + 5.305296635800022149e-04, + 5.302299431023825473e-04, + 5.299293802742136494e-04, + 5.296279756377685619e-04, + 5.293257297366634351e-04, + 5.290226431158696722e-04, + 5.287187163216541894e-04, + 5.284139499016243021e-04, + 5.281083444047369405e-04, + 5.278019003812415124e-04, + 5.274946183827652294e-04, + 5.271864989622123852e-04, + 5.268775426738515249e-04, + 5.265677500732495256e-04, + 5.262571217173028218e-04, + 5.259456581642323091e-04, + 5.256333599736050287e-04, + 5.253202277062755119e-04, + 5.250062619244202575e-04, + 5.246914631915590909e-04, + 5.243758320724969425e-04, + 5.240593691333975731e-04, + 5.237420749416986810e-04, + 5.234239500661836764e-04, + 5.231049950769229174e-04, + 5.227852105453305222e-04, + 5.224645970440925952e-04, + 5.221431551472581912e-04, + 5.218208854301355573e-04, + 5.214977884693789778e-04, + 5.211738648429263239e-04, + 5.208491151300203041e-04, + 5.205235399112373039e-04, + 5.201971397684430421e-04, + 5.198699152847992928e-04, + 5.195418670447674633e-04, + 5.192129956341336389e-04, + 5.188833016399505785e-04, + 5.185527856506165359e-04, + 5.182214482557842951e-04, + 5.178892900464321858e-04, + 5.175563116148193055e-04, + 5.172225135544902905e-04, + 5.168878964603222615e-04, + 5.165524609284608557e-04, + 5.162162075563334540e-04, + 5.158791369426842010e-04, + 5.155412496875114462e-04, + 5.152025463921564323e-04, + 5.148630276591930309e-04, + 5.145226940925213101e-04, + 5.141815462973063850e-04, + 5.138395848799944638e-04, + 5.134968104483256419e-04, + 5.131532236113455023e-04, + 5.128088249793410396e-04, + 5.124636151638900993e-04, + 5.121175947778702688e-04, + 5.117707644354017394e-04, + 5.114231247519336089e-04, + 5.110746763441393649e-04, + 5.107254198300034036e-04, + 5.103753558287632422e-04, + 5.100244849609300102e-04, + 5.096728078482920272e-04, + 5.093203251139324754e-04, + 5.089670373821660824e-04, + 5.086129452785836816e-04, + 5.082580494300684756e-04, + 5.079023504647264299e-04, + 5.075458490119792981e-04, + 5.071885457024903534e-04, + 5.068304411681755564e-04, + 5.064715360422140716e-04, + 5.061118309590682167e-04, + 5.057513265544227475e-04, + 5.053900234652756052e-04, + 5.050279223298267863e-04, + 5.046650237875702823e-04, + 5.043013284792350996e-04, + 5.039368370467942580e-04, + 5.035715501335131464e-04, + 5.032054683838867474e-04, + 5.028385924436521055e-04, + 5.024709229597951578e-04, + 5.021024605805753452e-04, + 5.017332059554592593e-04, + 5.013631597352168111e-04, + 5.009923225718039205e-04, + 5.006206951184630216e-04, + 5.002482780296482528e-04, + 4.998750719610752218e-04, + 4.995010775696958521e-04, + 4.991262955137103089e-04, + 4.987507264525284020e-04, + 4.983743710468336620e-04, + 4.979972299585009405e-04, + 4.976193038507010363e-04, + 4.972405933877783969e-04, + 4.968610992353521662e-04, + 4.964808220602474464e-04, + 4.960997625305211016e-04, + 4.957179213154627338e-04, + 4.953352990856198365e-04, + 4.949518965127235265e-04, + 4.945677142697365745e-04, + 4.941827530308727035e-04, + 4.937970134715283926e-04, + 4.934104962683781787e-04, + 4.930232020992583210e-04, + 4.926351316432703428e-04, + 4.922462855807036193e-04, + 4.918566645930697468e-04, + 4.914662693631036269e-04, + 4.910751005747772359e-04, + 4.906831589132273084e-04, + 4.902904450648471694e-04, + 4.898969597172143095e-04, + 4.895027035591066481e-04, + 4.891076772805576104e-04, + 4.887118815727774148e-04, + 4.883153171281781179e-04, + 4.879179846403739395e-04, + 4.875198848042129217e-04, + 4.871210183156992994e-04, + 4.867213858721015419e-04, + 4.863209881718257173e-04, + 4.859198259145250517e-04, + 4.855178998010178546e-04, + 4.851152105333166303e-04, + 4.847117588146697647e-04, + 4.843075453494958779e-04, + 4.839025708433963998e-04, + 4.834968360031644072e-04, + 4.830903415367940020e-04, + 4.826830881534942969e-04, + 4.822750765636187259e-04, + 4.818663074787159478e-04, + 4.814567816115481141e-04, + 4.810464996760255470e-04, + 4.806354623872598100e-04, + 4.802236704615704308e-04, + 4.798111246164162166e-04, + 4.793978255704400317e-04, + 4.789837740434930839e-04, + 4.785689707565587590e-04, + 4.781534164318571381e-04, + 4.777371117927207479e-04, + 4.773200575637030351e-04, + 4.769022544704985692e-04, + 4.764837032399754603e-04, + 4.760644046001790992e-04, + 4.756443592803504265e-04, + 4.752235680108541044e-04, + 4.748020315232250824e-04, + 4.743797505501957576e-04, + 4.739567258256117857e-04, + 4.735329580845483075e-04, + 4.731084480631732856e-04, + 4.726831964988631343e-04, + 4.722572041301151160e-04, + 4.718304716966186278e-04, + 4.714029999391748616e-04, + 4.709747895998014303e-04, + 4.705458414216074129e-04, + 4.701161561488965707e-04, + 4.696857345270973624e-04, + 4.692545773027794235e-04, + 4.688226852237036566e-04, + 4.683900590387530594e-04, + 4.679566994979418863e-04, + 4.675226073524342964e-04, + 4.670877833545443534e-04, + 4.666522282577514219e-04, + 4.662159428166348435e-04, + 4.657789277869182811e-04, + 4.653411839254927582e-04, + 4.649027119903564311e-04, + 4.644635127406328040e-04, + 4.640235869366264566e-04, + 4.635829353397461199e-04, + 4.631415587125141636e-04, + 4.626994578186191249e-04, + 4.622566334228289187e-04, + 4.618130862911067384e-04, + 4.613688171904773740e-04, + 4.609238268891324339e-04, + 4.604781161563630161e-04, + 4.600316857625797113e-04, + 4.595845364793204636e-04, + 4.591366690792782722e-04, + 4.586880843362084372e-04, + 4.582387830249980035e-04, + 4.577887659216744879e-04, + 4.573380338033325334e-04, + 4.568865874482472083e-04, + 4.564344276357363119e-04, + 4.559815551462764933e-04, + 4.555279707614230743e-04, + 4.550736752638385638e-04, + 4.546186694373021450e-04, + 4.541629540667256669e-04, + 4.537065299380763409e-04, + 4.532493978384316015e-04, + 4.527915585559985677e-04, + 4.523330128800360345e-04, + 4.518737616009579059e-04, + 4.514138055102461335e-04, + 4.509531454004659496e-04, + 4.504917820652808830e-04, + 4.500297162994498323e-04, + 4.495669488988557967e-04, + 4.491034806604248864e-04, + 4.486393123821755453e-04, + 4.481744448632464690e-04, + 4.477088789038297101e-04, + 4.472426153051947467e-04, + 4.467756548697401453e-04, + 4.463079984009195094e-04, + 4.458396467032510208e-04, + 4.453706005823380933e-04, + 4.449008608448651444e-04, + 4.444304282986268149e-04, + 4.439593037524414490e-04, + 4.434874880162078528e-04, + 4.430149819009287669e-04, + 4.425417862186384419e-04, + 4.420679017824661727e-04, + 4.415933294066027963e-04, + 4.411180699063118054e-04, + 4.406421240978952497e-04, + 4.401654927987539096e-04, + 4.396881768273039749e-04, + 4.392101770030922415e-04, + 4.387314941466521293e-04, + 4.382521290796272811e-04, + 4.377720826246870494e-04, + 4.372913556055527335e-04, + 4.368099488470141142e-04, + 4.363278631749406750e-04, + 4.358450994162013713e-04, + 4.353616583987265378e-04, + 4.348775409515227429e-04, + 4.343927479045954303e-04, + 4.339072800890618931e-04, + 4.334211383370160193e-04, + 4.329343234816422420e-04, + 4.324468363571244657e-04, + 4.319586777987302010e-04, + 4.314698486427098962e-04, + 4.309803497264250898e-04, + 4.304901818881984657e-04, + 4.299993459674408673e-04, + 4.295078428045602244e-04, + 4.290156732409860564e-04, + 4.285228381192322474e-04, + 4.280293382828071662e-04, + 4.275351745762348619e-04, + 4.270403478450643885e-04, + 4.265448589358788577e-04, + 4.260487086963179906e-04, + 4.255518979749847133e-04, + 4.250544276215157389e-04, + 4.245562984865957701e-04, + 4.240575114218930980e-04, + 4.235580672800829663e-04, + 4.230579669149046548e-04, + 4.225572111810786463e-04, + 4.220558009343260337e-04, + 4.215537370313763264e-04, + 4.210510203299768286e-04, + 4.205476516889145944e-04, + 4.200436319679139163e-04, + 4.195389620277623099e-04, + 4.190336427302090321e-04, + 4.185276749380105097e-04, + 4.180210595149277367e-04, + 4.175137973257544641e-04, + 4.170058892362272650e-04, + 4.164973361130840817e-04, + 4.159881388240909512e-04, + 4.154782982379515285e-04, + 4.149678152244356730e-04, + 4.144566906542231067e-04, + 4.139449253990379633e-04, + 4.134325203315559810e-04, + 4.129194763254373534e-04, + 4.124057942553363792e-04, + 4.118914749969196766e-04, + 4.113765194267809651e-04, + 4.108609284225011303e-04, + 4.103447028626725098e-04, + 4.098278436268056523e-04, + 4.093103515954648426e-04, + 4.087922276501055794e-04, + 4.082734726732135163e-04, + 4.077540875481940356e-04, + 4.072340731594482508e-04, + 4.067134303923737116e-04, + 4.061921601332766371e-04, + 4.056702632694385410e-04, + 4.051477406891364512e-04, + 4.046245932815748219e-04, + 4.041008219369014720e-04, + 4.035764275462831534e-04, + 4.030514110018051542e-04, + 4.025257731964972108e-04, + 4.019995150243391461e-04, + 4.014726373802769699e-04, + 4.009451411602392499e-04, + 4.004170272610429494e-04, + 3.998882965804665562e-04, + 3.993589500172656410e-04, + 3.988289884711080226e-04, + 3.982984128425878074e-04, + 3.977672240333006881e-04, + 3.972354229457438174e-04, + 3.967030104833327753e-04, + 3.961699875504605503e-04, + 3.956363550524006115e-04, + 3.951021138954379885e-04, + 3.945672649867091350e-04, + 3.940318092343373995e-04, + 3.934957475473410313e-04, + 3.929590808356633208e-04, + 3.924218100101841463e-04, + 3.918839359827451280e-04, + 3.913454596660482544e-04, + 3.908063819737283618e-04, + 3.902667038203768237e-04, + 3.897264261214406660e-04, + 3.891855497933673080e-04, + 3.886440757534349389e-04, + 3.881020049198938434e-04, + 3.875593382118720765e-04, + 3.870160765493914010e-04, + 3.864722208534447537e-04, + 3.859277720458945474e-04, + 3.853827310494965775e-04, + 3.848370987879099424e-04, + 3.842908761857333102e-04, + 3.837440641684022446e-04, + 3.831966636623257059e-04, + 3.826486755947735110e-04, + 3.821001008938998606e-04, + 3.815509404887513080e-04, + 3.810011953092787393e-04, + 3.804508662863641537e-04, + 3.798999543517142486e-04, + 3.793484604379371815e-04, + 3.787963854785648499e-04, + 3.782437304079745580e-04, + 3.776904961614175856e-04, + 3.771366836750868960e-04, + 3.765822938860180946e-04, + 3.760273277321129017e-04, + 3.754717861521506450e-04, + 3.749156700857979091e-04, + 3.743589804736308156e-04, + 3.738017182570371744e-04, + 3.732438843782888535e-04, + 3.726854797805598859e-04, + 3.721265054078445032e-04, + 3.715669622050406739e-04, + 3.710068511178962183e-04, + 3.704461730930345043e-04, + 3.698849290779040316e-04, + 3.693231200208595849e-04, + 3.687607468710532165e-04, + 3.681978105785812107e-04, + 3.676343120943045936e-04, + 3.670702523700006509e-04, + 3.665056323582630178e-04, + 3.659404530125325797e-04, + 3.653747152871092353e-04, + 3.648084201371805196e-04, + 3.642415685187141592e-04, + 3.636741613885348889e-04, + 3.631061997043468392e-04, + 3.625376844246299421e-04, + 3.619686165087903631e-04, + 3.613989969169854573e-04, + 3.608288266102701908e-04, + 3.602581065504805347e-04, + 3.596868377003238334e-04, + 3.591150210233260039e-04, + 3.585426574838533826e-04, + 3.579697480470625266e-04, + 3.573962936789834804e-04, + 3.568222953464352627e-04, + 3.562477540170444598e-04, + 3.556726706593243189e-04, + 3.550970462425649178e-04, + 3.545208817368647155e-04, + 3.539441781131364611e-04, + 3.533669363431203667e-04, + 3.527891573994059544e-04, + 3.522108422553319297e-04, + 3.516319918850568721e-04, + 3.510526072635870441e-04, + 3.504726893666962697e-04, + 3.498922391709478343e-04, + 3.493112576537734152e-04, + 3.487297457933684016e-04, + 3.481477045687117900e-04, + 3.475651349595838564e-04, + 3.469820379465700594e-04, + 3.463984145110913441e-04, + 3.458142656352847710e-04, + 3.452295923021407218e-04, + 3.446443954954031530e-04, + 3.440586761996009295e-04, + 3.434724354000646290e-04, + 3.428856740829469801e-04, + 3.422983932351190495e-04, + 3.417105938442452145e-04, + 3.411222768988112441e-04, + 3.405334433880132222e-04, + 3.399440943019149198e-04, + 3.393542306312645647e-04, + 3.387638533676483646e-04, + 3.381729635033842011e-04, + 3.375815620315467287e-04, + 3.369896499460439199e-04, + 3.363972282415109757e-04, + 3.358042979133345034e-04, + 3.352108599576642260e-04, + 3.346169153714515258e-04, + 3.340224651523398310e-04, + 3.334275102988238856e-04, + 3.328320518100615858e-04, + 3.322360906860327072e-04, + 3.316396279274168237e-04, + 3.310426645356712074e-04, + 3.304452015130415082e-04, + 3.298472398624564231e-04, + 3.292487805876023982e-04, + 3.286498246929529018e-04, + 3.280503731836820680e-04, + 3.274504270656940783e-04, + 3.268499873456963455e-04, + 3.262490550310970022e-04, + 3.256476311300254465e-04, + 3.250457166513463282e-04, + 3.244433126046693608e-04, + 3.238404200003765893e-04, + 3.232370398495125062e-04, + 3.226331731638624393e-04, + 3.220288209559774343e-04, + 3.214239842390804710e-04, + 3.208186640271554766e-04, + 3.202128613348959344e-04, + 3.196065771777271644e-04, + 3.189998125717519498e-04, + 3.183925685338420989e-04, + 3.177848460815177185e-04, + 3.171766462331032307e-04, + 3.165679700075422999e-04, + 3.159588184245529273e-04, + 3.153491925045207663e-04, + 3.147390932685242208e-04, + 3.141285217384126712e-04, + 3.135174789366961022e-04, + 3.129059658865732379e-04, + 3.122939836119417874e-04, + 3.116815331374351997e-04, + 3.110686154883154897e-04, + 3.104552316906349476e-04, + 3.098413827710407107e-04, + 3.092270697569378282e-04, + 3.086122936763818162e-04, + 3.079970555580984447e-04, + 3.073813564315692809e-04, + 3.067651973269155713e-04, + 3.061485792749163480e-04, + 3.055315033070815037e-04, + 3.049139704555613151e-04, + 3.042959817531675306e-04, + 3.036775382334546856e-04, + 3.030586409306100558e-04, + 3.024392908794791904e-04, + 3.018194891155752358e-04, + 3.011992366750948741e-04, + 3.005785345949419578e-04, + 2.999573839126147535e-04, + 2.993357856662895336e-04, + 2.987137408948436156e-04, + 2.980912506377731254e-04, + 2.974683159352178256e-04, + 2.968449378280417256e-04, + 2.962211173577219514e-04, + 2.955968555663740071e-04, + 2.949721534967635929e-04, + 2.943470121923200491e-04, + 2.937214326971596123e-04, + 2.930954160559769411e-04, + 2.924689633141224192e-04, + 2.918420755176314297e-04, + 2.912147537131223852e-04, + 2.905869989478799403e-04, + 2.899588122698688159e-04, + 2.893301947276177887e-04, + 2.887011473703033921e-04, + 2.880716712477729554e-04, + 2.874417674104390568e-04, + 2.868114369094340219e-04, + 2.861806807964220861e-04, + 2.855495001237609402e-04, + 2.849178959443892452e-04, + 2.842858693118521102e-04, + 2.836534212803841428e-04, + 2.830205529047949030e-04, + 2.823872652404961709e-04, + 2.817535593435136019e-04, + 2.811194362705267879e-04, + 2.804848970787553620e-04, + 2.798499428261271038e-04, + 2.792145745710769827e-04, + 2.785787933727151551e-04, + 2.779426002907001126e-04, + 2.773059963853346339e-04, + 2.766689827175039854e-04, + 2.760315603487103445e-04, + 2.753937303410055248e-04, + 2.747554937570956019e-04, + 2.741168516602343359e-04, + 2.734778051142551015e-04, + 2.728383551836490047e-04, + 2.721985029334529388e-04, + 2.715582494292762016e-04, + 2.709175957373103076e-04, + 2.702765429243447087e-04, + 2.696350920577910803e-04, + 2.689932442055682337e-04, + 2.683510004361877675e-04, + 2.677083618187775407e-04, + 2.670653294229956959e-04, + 2.664219043190593902e-04, + 2.657780875778247009e-04, + 2.651338802706749531e-04, + 2.644892834695287964e-04, + 2.638442982469286222e-04, + 2.631989256759079110e-04, + 2.625531668301590133e-04, + 2.619070227838345231e-04, + 2.612604946117165223e-04, + 2.606135833890984026e-04, + 2.599662901918135425e-04, + 2.593186160963195500e-04, + 2.586705621795799218e-04, + 2.580221295190936420e-04, + 2.573733191929039100e-04, + 2.567241322796446528e-04, + 2.560745698584192568e-04, + 2.554246330089733901e-04, + 2.547743228114906838e-04, + 2.541236403467659341e-04, + 2.534725866960853518e-04, + 2.528211629412550226e-04, + 2.521693701646862337e-04, + 2.515172094492757783e-04, + 2.508646818784364212e-04, + 2.502117885361063859e-04, + 2.495585305067934815e-04, + 2.489049088754555152e-04, + 2.482509247276734935e-04, + 2.475965791494475214e-04, + 2.469418732273670220e-04, + 2.462868080484795479e-04, + 2.456313847003762708e-04, + 2.449756042712043411e-04, + 2.443194678495486561e-04, + 2.436629765245185413e-04, + 2.430061313857727421e-04, + 2.423489335234325513e-04, + 2.416913840281079931e-04, + 2.410334839909823365e-04, + 2.403752345036970614e-04, + 2.397166366583758737e-04, + 2.390576915476393962e-04, + 2.383984002646164716e-04, + 2.377387639029719451e-04, + 2.370787835567907359e-04, + 2.364184603206586103e-04, + 2.357577952896944371e-04, + 2.350967895594291630e-04, + 2.344354442259773878e-04, + 2.337737603858363537e-04, + 2.331117391360538603e-04, + 2.324493815740994080e-04, + 2.317866887979749217e-04, + 2.311236619060856492e-04, + 2.304603019974115743e-04, + 2.297966101712999541e-04, + 2.291325875276418544e-04, + 2.284682351667510173e-04, + 2.278035541893913996e-04, + 2.271385456968645872e-04, + 2.264732107908896648e-04, + 2.258075505736307825e-04, + 2.251415661477102739e-04, + 2.244752586162513470e-04, + 2.238086290827575209e-04, + 2.231416786512888085e-04, + 2.224744084262523299e-04, + 2.218068195125774114e-04, + 2.211389130155981932e-04, + 2.204706900410768314e-04, + 2.198021516952947607e-04, + 2.191332990849301796e-04, + 2.184641333170719282e-04, + 2.177946554993061702e-04, + 2.171248667396093819e-04, + 2.164547681463802823e-04, + 2.157843608285209042e-04, + 2.151136458953230236e-04, + 2.144426244564897634e-04, + 2.137712976221525600e-04, + 2.130996665028838766e-04, + 2.124277322097213529e-04, + 2.117554958540529076e-04, + 2.110829585476991642e-04, + 2.104101214029442429e-04, + 2.097369855324424646e-04, + 2.090635520492495217e-04, + 2.083898220669057723e-04, + 2.077157966993192545e-04, + 2.070414770607904333e-04, + 2.063668642660274608e-04, + 2.056919594301583195e-04, + 2.050167636687587401e-04, + 2.043412780977319908e-04, + 2.036655038333942853e-04, + 2.029894419925058454e-04, + 2.023130936921468405e-04, + 2.016364600498824584e-04, + 2.009595421836235843e-04, + 2.002823412116576200e-04, + 1.996048582526608977e-04, + 1.989270944257395812e-04, + 1.982490508503111364e-04, + 1.975707286462797814e-04, + 1.968921289338277237e-04, + 1.962132528335890124e-04, + 1.955341014665321726e-04, + 1.948546759539847902e-04, + 1.941749774177247746e-04, + 1.934950069798549433e-04, + 1.928147657628347892e-04, + 1.921342548894915396e-04, + 1.914534754830625213e-04, + 1.907724286670764403e-04, + 1.900911155655281553e-04, + 1.894095373026694811e-04, + 1.887276950031854252e-04, + 1.880455897920572537e-04, + 1.873632227946691220e-04, + 1.866805951367399871e-04, + 1.859977079443584378e-04, + 1.853145623439156364e-04, + 1.846311594622120046e-04, + 1.839475004263480440e-04, + 1.832635863637528781e-04, + 1.825794184022745117e-04, + 1.818949976700553106e-04, + 1.812103252955604617e-04, + 1.805254024075930708e-04, + 1.798402301353056818e-04, + 1.791548096082290356e-04, + 1.784691419561493112e-04, + 1.777832283091966233e-04, + 1.770970697978750013e-04, + 1.764106675529380575e-04, + 1.757240227055676914e-04, + 1.750371363871628869e-04, + 1.743500097295191205e-04, + 1.736626438646866292e-04, + 1.729750399250952291e-04, + 1.722871990434118785e-04, + 1.715991223527226070e-04, + 1.709108109863176806e-04, + 1.702222660778727450e-04, + 1.695334887613231668e-04, + 1.688444801708959084e-04, + 1.681552414411961564e-04, + 1.674657737070853756e-04, + 1.667760781037091458e-04, + 1.660861557665097119e-04, + 1.653960078312718181e-04, + 1.647056354339981605e-04, + 1.640150397110888222e-04, + 1.633242217991283905e-04, + 1.626331828350655821e-04, + 1.619419239560893184e-04, + 1.612504462996586501e-04, + 1.605587510035911462e-04, + 1.598668392059395124e-04, + 1.591747120450199150e-04, + 1.584823706594256699e-04, + 1.577898161880711251e-04, + 1.570970497700674656e-04, + 1.564040725448890569e-04, + 1.557108856522346674e-04, + 1.550174902320537328e-04, + 1.543238874245636766e-04, + 1.536300783702596680e-04, + 1.529360642099456837e-04, + 1.522418460846091206e-04, + 1.515474251355108926e-04, + 1.508528025042143246e-04, + 1.501579793324608219e-04, + 1.494629567623523682e-04, + 1.487677359361334927e-04, + 1.480723179963755302e-04, + 1.473767040858495799e-04, + 1.466808953475734240e-04, + 1.459848929248223968e-04, + 1.452886979611598241e-04, + 1.445923116003121226e-04, + 1.438957349862585449e-04, + 1.431989692632605886e-04, + 1.425020155757356056e-04, + 1.418048750684432029e-04, + 1.411075488862634968e-04, + 1.404100381743821860e-04, + 1.397123440781505540e-04, + 1.390144677432058966e-04, + 1.383164103153306575e-04, + 1.376181729406370674e-04, + 1.369197567653472950e-04, + 1.362211629359787375e-04, + 1.355223925992169245e-04, + 1.348234469019456594e-04, + 1.341243269913369534e-04, + 1.334250340147278061e-04, + 1.327255691196450068e-04, + 1.320259334538226444e-04, + 1.313261281652452312e-04, + 1.306261544020212038e-04, + 1.299260133125680237e-04, + 1.292257060453933307e-04, + 1.285252337492782005e-04, + 1.278245975731365236e-04, + 1.271237986661209317e-04, + 1.264228381775599143e-04, + 1.257217172569868478e-04, + 1.250204370540739678e-04, + 1.243189987187419551e-04, + 1.236174034010480453e-04, + 1.229156522512157639e-04, + 1.222137464197243454e-04, + 1.215116870571854188e-04, + 1.208094753143704517e-04, + 1.201071123422246687e-04, + 1.194045992918806037e-04, + 1.187019373146879837e-04, + 1.179991275620871069e-04, + 1.172961711856991844e-04, + 1.165930693373579987e-04, + 1.158898231689804497e-04, + 1.151864338327545560e-04, + 1.144829024809170708e-04, + 1.137792302659403309e-04, + 1.130754183404046191e-04, + 1.123714678570433075e-04, + 1.116673799687563964e-04, + 1.109631558286407638e-04, + 1.102587965898464543e-04, + 1.095543034057478609e-04, + 1.088496774298154641e-04, + 1.081449198156464876e-04, + 1.074400317170561204e-04, + 1.067350142879509362e-04, + 1.060298686823576926e-04, + 1.053245960544376558e-04, + 1.046191975585311076e-04, + 1.039136743490316317e-04, + 1.032080275805694796e-04, + 1.025022584077932395e-04, + 1.017963679855547467e-04, + 1.010903574687811208e-04, + 1.003842280125049474e-04, + 9.967798077195708529e-05, + 9.897161690243820240e-05, + 9.826513755934880817e-05, + 9.755854389820291445e-05, + 9.685183707467334160e-05, + 9.614501824446448734e-05, + 9.543808856349795579e-05, + 9.473104918769216618e-05, + 9.402390127314764307e-05, + 9.331664597600444375e-05, + 9.260928445253469488e-05, + 9.190181785915567067e-05, + 9.119424735230328006e-05, + 9.048657408852297710e-05, + 8.977879922450090458e-05, + 8.907092391693579561e-05, + 8.836294932272425020e-05, + 8.765487659874094035e-05, + 8.694670690202455077e-05, + 8.623844138964915180e-05, + 8.553008121877092855e-05, + 8.482162754664148948e-05, + 8.411308153063703141e-05, + 8.340444432813066120e-05, + 8.269571709658584042e-05, + 8.198690099358504890e-05, + 8.127799717670198447e-05, + 8.056900680368910277e-05, + 7.985993103225498991e-05, + 7.915077102025167195e-05, + 7.844152792553021273e-05, + 7.773220290606615605e-05, + 7.702279711981444585e-05, + 7.631331172489811809e-05, + 7.560374787938406059e-05, + 7.489410674147181331e-05, + 7.418438946936476515e-05, + 7.347459722129988813e-05, + 7.276473115564064005e-05, + 7.205479243074858133e-05, + 7.134478220501365138e-05, + 7.063470163686746365e-05, + 6.992455188482886918e-05, + 6.921433410737577686e-05, + 6.850404946313366902e-05, + 6.779369911065053465e-05, + 6.708328420858690293e-05, + 6.637280591558601000e-05, + 6.566226539030385850e-05, + 6.495166379150254024e-05, + 6.424100227792129748e-05, + 6.353028200830696188e-05, + 6.281950414142718178e-05, + 6.210866983608492344e-05, + 6.139778025114789350e-05, + 6.068683654540435370e-05, + 5.997583987773515667e-05, + 5.926479140698555928e-05, + 5.855369229201031877e-05, + 5.784254369168868176e-05, + 5.713134676495264811e-05, + 5.642010267065969230e-05, + 5.570881256768514430e-05, + 5.499747761495260139e-05, + 5.428609897130450153e-05, + 5.357467779569137088e-05, + 5.286321524694704156e-05, + 5.215171248397782459e-05, + 5.144017066563324591e-05, + 5.072859095075213175e-05, + 5.001697449817608661e-05, + 4.930532246677999319e-05, + 4.859363601534258582e-05, + 4.788191630264018646e-05, + 4.717016448747628313e-05, + 4.645838172855294349e-05, + 4.574656918465923566e-05, + 4.503472801444701520e-05, + 4.432285937661995575e-05, + 4.361096442978815754e-05, + 4.289904433259370475e-05, + 4.218710024356621592e-05, + 4.147513332131036348e-05, + 4.076314472428307022e-05, + 4.005113561098113046e-05, + 3.933910713981282018e-05, + 3.862706046912777358e-05, + 3.791499675730981790e-05, + 3.720291716264903753e-05, + 3.649082284337076967e-05, + 3.577871495764992256e-05, + 3.506659466365692534e-05, + 3.435446311942847082e-05, + 3.364232148305635635e-05, + 3.293017091246356904e-05, + 3.221801256559221860e-05, + 3.150584760025960273e-05, + 3.079367717426689165e-05, + 3.008150244533400476e-05, + 2.936932457112931106e-05, + 2.865714470920449229e-05, + 2.794496401710348151e-05, + 2.723278365221804741e-05, + 2.652060477197611344e-05, + 2.580842853361789036e-05, + 2.509625609438423949e-05, + 2.438408861138800494e-05, + 2.367192724165974668e-05, + 2.295977314216160811e-05, + 2.224762746981717571e-05, + 2.153549138138285198e-05, + 2.082336603354105616e-05, + 2.011125258292997884e-05, + 1.939915218601500233e-05, + 1.868706599927704351e-05, + 1.797499517898868305e-05, + 1.726294088140247436e-05, + 1.655090426262245890e-05, + 1.583888647864959418e-05, + 1.512688868539588064e-05, + 1.441491203871430255e-05, + 1.370295769425395825e-05, + 1.299102680763288200e-05, + 1.227912053430919163e-05, + 1.156724002961091089e-05, + 1.085538644882937341e-05, + 1.014356094709033317e-05, + 9.431764679383893482e-06, + 8.719998800578459378e-06, + 8.008264465466553584e-06, + 7.296562828635849838e-06, + 6.584895044657924866e-06, + 5.873262267864003017e-06, + 5.161665652533732805e-06, + 4.450106352766217671e-06, + 3.738585522509912858e-06, + 3.027104315656046370e-06, + 2.315663885909698439e-06, + 1.604265386819756630e-06, + 8.929099717928568460e-07, + 1.815987941074313899e-07, +-5.296669930564630063e-07, +-1.240886236745917219e-06, +-1.952057784141840835e-06, +-2.663180482529104110e-06, +-3.374253179409464747e-06, +-4.085274722408202200e-06, +-4.796243959260189709e-06, +-5.507159737938606878e-06, +-6.218020906561632647e-06, +-6.928826313362593310e-06, +-7.639574806818729308e-06, +-8.350265235462710919e-06, +-9.060896448106542099e-06, +-9.771467293653154096e-06, +-1.048197662122498844e-05, +-1.119242328011847740e-05, +-1.190280611978991207e-05, +-1.261312398982569458e-05, +-1.332337574007088382e-05, +-1.403356022053612516e-05, +-1.474367628136761125e-05, +-1.545372277297590220e-05, +-1.616369854584745228e-05, +-1.687360245076852136e-05, +-1.758343333863665250e-05, +-1.829319006060530793e-05, +-1.900287146795890455e-05, +-1.971247641225726691e-05, +-2.042200374514735559e-05, +-2.113145231858689057e-05, +-2.184082098465613380e-05, +-2.255010859568659754e-05, +-2.325931400423090689e-05, +-2.396843606296991761e-05, +-2.467747362484114658e-05, +-2.538642554300903420e-05, +-2.609529067085063632e-05, +-2.680406786194209877e-05, +-2.751275597002871990e-05, +-2.822135384915307272e-05, +-2.892986035356240050e-05, +-2.963827433767852340e-05, +-3.034659465619472885e-05, +-3.105482016404567143e-05, +-3.176294971631502250e-05, +-3.247098216836298936e-05, +-3.317891637581295923e-05, +-3.388675119445832222e-05, +-3.459448548040627722e-05, +-3.530211808989059693e-05, +-3.600964787949437722e-05, +-3.671707370596183996e-05, +-3.742439442632761057e-05, +-3.813160889787019220e-05, +-3.883871597809844707e-05, +-3.954571452472199777e-05, +-4.025260339577901403e-05, +-4.095938144954341177e-05, +-4.166604754449553227e-05, +-4.237260053944965781e-05, +-4.307903929336680390e-05, +-4.378536266557768545e-05, +-4.449156951559438404e-05, +-4.519765870323944258e-05, +-4.590362908859985439e-05, +-4.660947953201298222e-05, +-4.731520889403712887e-05, +-4.802081603557943921e-05, +-4.872629981780326862e-05, +-4.943165910209784567e-05, +-5.013689275020725831e-05, +-5.084199962405845197e-05, +-5.154697858590418836e-05, +-5.225182849829444293e-05, +-5.295654822406207297e-05, +-5.366113662630837751e-05, +-5.436559256837456916e-05, +-5.506991491396825311e-05, +-5.577410252707210340e-05, +-5.647815427191277347e-05, +-5.718206901305871825e-05, +-5.788584561538911825e-05, +-5.858948294400242708e-05, +-5.929297986434324346e-05, +-5.999633524217331556e-05, +-6.069954794355695850e-05, +-6.140261683484793550e-05, +-6.210554078265898502e-05, +-6.280831865399010222e-05, +-6.351094931613602938e-05, +-6.421343163665590504e-05, +-6.491576448348577706e-05, +-6.561794672483049415e-05, +-6.631997722922786348e-05, +-6.702185486551944502e-05, +-6.772357850291491250e-05, +-6.842514701088435144e-05, +-6.912655925930084530e-05, +-6.982781411825438576e-05, +-7.052891045827306348e-05, +-7.122984715013704613e-05, +-7.193062306500537582e-05, +-7.263123707437087987e-05, +-7.333168805004676731e-05, +-7.403197486413623063e-05, +-7.473209638916034092e-05, +-7.543205149796579584e-05, +-7.613183906369479237e-05, +-7.683145795991303038e-05, +-7.753090706042275559e-05, +-7.823018523948443818e-05, +-7.892929137163020876e-05, +-7.962822433179127918e-05, +-8.032698299525254163e-05, +-8.102556623763874498e-05, +-8.172397293488539759e-05, +-8.242220196338068930e-05, +-8.312025219979582739e-05, +-8.381812252121160361e-05, +-8.451581180508897166e-05, +-8.521331892917732365e-05, +-8.591064277164128760e-05, +-8.660778221103046460e-05, +-8.730473612626675722e-05, +-8.800150339663024776e-05, +-8.869808290172901679e-05, +-8.939447352162657756e-05, +-9.009067413674985432e-05, +-9.078668362786009862e-05, +-9.148250087614726912e-05, +-9.217812476320188294e-05, +-9.287355417092246551e-05, +-9.356878798164190074e-05, +-9.426382507809913337e-05, +-9.495866434342380038e-05, +-9.565330466112412862e-05, +-9.634774491505645512e-05, +-9.704198398955142827e-05, +-9.773602076932331431e-05, +-9.842985413944020884e-05, +-9.912348298543444927e-05, +-9.981690619321158253e-05, +-1.005101226490362839e-04, +-1.012031312396581383e-04, +-1.018959308522210952e-04, +-1.025885203742341148e-04, +-1.032808986936957691e-04, +-1.039730646989111613e-04, +-1.046650172787112054e-04, +-1.053567553222664691e-04, +-1.060482777192149601e-04, +-1.067395833596159800e-04, +-1.074306711339375475e-04, +-1.081215399330265559e-04, +-1.088121886482340523e-04, +-1.095026161713251271e-04, +-1.101928213944486108e-04, +-1.108828032102642365e-04, +-1.115725605117565920e-04, +-1.122620921924554014e-04, +-1.129513971462505205e-04, +-1.136404742675336415e-04, +-1.143293224510909571e-04, +-1.150179405921678195e-04, +-1.157063275864386812e-04, +-1.163944823300711034e-04, +-1.170824037196190298e-04, +-1.177700906521341476e-04, +-1.184575420251340801e-04, +-1.191447567365134684e-04, +-1.198317336846695488e-04, +-1.205184717684713484e-04, +-1.212049698872472029e-04, +-1.218912269407706350e-04, +-1.225772418292318399e-04, +-1.232630134533630188e-04, +-1.239485407143449348e-04, +-1.246338225137820705e-04, +-1.253188577537942298e-04, +-1.260036453369865327e-04, +-1.266881841663623537e-04, +-1.273724731454445086e-04, +-1.280565111782641413e-04, +-1.287402971692682958e-04, +-1.294238300234616483e-04, +-1.301071086462231416e-04, +-1.307901319435229067e-04, +-1.314728988217388705e-04, +-1.321554081877828477e-04, +-1.328376589490553846e-04, +-1.335196500134320976e-04, +-1.342013802892352131e-04, +-1.348828486853573293e-04, +-1.355640541111715898e-04, +-1.362449954765033858e-04, +-1.369256716917521940e-04, +-1.376060816677137668e-04, +-1.382862243157916059e-04, +-1.389660985478190182e-04, +-1.396457032761801392e-04, +-1.403250374137829642e-04, +-1.410040998739686539e-04, +-1.416828895706351613e-04, +-1.423614054182099095e-04, +-1.430396463316350195e-04, +-1.437176112263225053e-04, +-1.443952990182802317e-04, +-1.450727086239432658e-04, +-1.457498389603160711e-04, +-1.464266889449404683e-04, +-1.471032574958840080e-04, +-1.477795435317258487e-04, +-1.484555459715290824e-04, +-1.491312637349620572e-04, +-1.498066957422114237e-04, +-1.504818409139506939e-04, +-1.511566981714354335e-04, +-1.518312664364741512e-04, +-1.525055446313371176e-04, +-1.531795316788823764e-04, +-1.538532265025252782e-04, +-1.545266280262243047e-04, +-1.551997351744701997e-04, +-1.558725468722547980e-04, +-1.565450620451958172e-04, +-1.572172796194460287e-04, +-1.578891985216664779e-04, +-1.585608176791333053e-04, +-1.592321360196316028e-04, +-1.599031524715215774e-04, +-1.605738659637074889e-04, +-1.612442754256997201e-04, +-1.619143797875110462e-04, +-1.625841779797952225e-04, +-1.632536689336663296e-04, +-1.639228515809123339e-04, +-1.645917248538158691e-04, +-1.652602876852753957e-04, +-1.659285390087636219e-04, +-1.665964777583122975e-04, +-1.672641028684849194e-04, +-1.679314132744995987e-04, +-1.685984079121376352e-04, +-1.692650857177178492e-04, +-1.699314456282171443e-04, +-1.705974865810932952e-04, +-1.712632075144946591e-04, +-1.719286073670842638e-04, +-1.725936850781742220e-04, +-1.732584395876238703e-04, +-1.739228698359017314e-04, +-1.745869747640558340e-04, +-1.752507533137755938e-04, +-1.759142044272900339e-04, +-1.765773270474724915e-04, +-1.772401201178139198e-04, +-1.779025825823341456e-04, +-1.785647133857027312e-04, +-1.792265114732105407e-04, +-1.798879757907583562e-04, +-1.805491052848414010e-04, +-1.812098989025228844e-04, +-1.818703555915531834e-04, +-1.825304743002838649e-04, +-1.831902539776392798e-04, +-1.838496935732059827e-04, +-1.845087920372058164e-04, +-1.851675483204094739e-04, +-1.858259613742549747e-04, +-1.864840301508202344e-04, +-1.871417536028113554e-04, +-1.877991306835465263e-04, +-1.884561603469316277e-04, +-1.891128415475918539e-04, +-1.897691732407135552e-04, +-1.904251543821610607e-04, +-1.910807839284373217e-04, +-1.917360608366677299e-04, +-1.923909840645746929e-04, +-1.930455525705950805e-04, +-1.936997653137963887e-04, +-1.943536212538452977e-04, +-1.950071193511301328e-04, +-1.956602585665846543e-04, +-1.963130378618947877e-04, +-1.969654561993258290e-04, +-1.976175125418407313e-04, +-1.982692058530705602e-04, +-1.989205350972324195e-04, +-1.995714992392429404e-04, +-2.002220972446955944e-04, +-2.008723280798441321e-04, +-2.015221907115634706e-04, +-2.021716841074639142e-04, +-2.028208072357224256e-04, +-2.034695590652857509e-04, +-2.041179385656968390e-04, +-2.047659447072286865e-04, +-2.054135764607992545e-04, +-2.060608327979558023e-04, +-2.067077126909964535e-04, +-2.073542151128822126e-04, +-2.080003390372091017e-04, +-2.086460834382994768e-04, +-2.092914472911718601e-04, +-2.099364295714572668e-04, +-2.105810292555170579e-04, +-2.112252453204131785e-04, +-2.118690767438982919e-04, +-2.125125225044012783e-04, +-2.131555815809987474e-04, +-2.137982529535372008e-04, +-2.144405356025409564e-04, +-2.150824285091894339e-04, +-2.157239306554200730e-04, +-2.163650410238268792e-04, +-2.170057585977204072e-04, +-2.176460823611006288e-04, +-2.182860112987163742e-04, +-2.189255443959659648e-04, +-2.195646806390278598e-04, +-2.202034190146914935e-04, +-2.208417585105572020e-04, +-2.214796981148682261e-04, +-2.221172368166253930e-04, +-2.227543736055600382e-04, +-2.233911074720513351e-04, +-2.240274374072400278e-04, +-2.246633624030038468e-04, +-2.252988814519416797e-04, +-2.259339935473373047e-04, +-2.265686976832692200e-04, +-2.272029928544452490e-04, +-2.278368780564022234e-04, +-2.284703522853368473e-04, +-2.291034145382205684e-04, +-2.297360638127740997e-04, +-2.303682991073818212e-04, +-2.310001194212091724e-04, +-2.316315237541745440e-04, +-2.322625111069350748e-04, +-2.328930804808501144e-04, +-2.335232308780918389e-04, +-2.341529613014927032e-04, +-2.347822707546753289e-04, +-2.354111582420236916e-04, +-2.360396227686732814e-04, +-2.366676633404940272e-04, +-2.372952789640712414e-04, +-2.379224686468105979e-04, +-2.385492313968632413e-04, +-2.391755662230937479e-04, +-2.398014721351698442e-04, +-2.404269481435334309e-04, +-2.410519932593177777e-04, +-2.416766064944636679e-04, +-2.423007868616914803e-04, +-2.429245333744885584e-04, +-2.435478450470952242e-04, +-2.441707208944816844e-04, +-2.447931599324605981e-04, +-2.454151611776023189e-04, +-2.460367236472112053e-04, +-2.466578463594234702e-04, +-2.472785283331109573e-04, +-2.478987685879406643e-04, +-2.485185661443439515e-04, +-2.491379200235794796e-04, +-2.497568292476330838e-04, +-2.503752928393456552e-04, +-2.509933098222485049e-04, +-2.516108792207581409e-04, +-2.522280000600127703e-04, +-2.528446713659845144e-04, +-2.534608921654509482e-04, +-2.540766614859172007e-04, +-2.546919783557249710e-04, +-2.553068418040286766e-04, +-2.559212508607826048e-04, +-2.565352045566977619e-04, +-2.571487019233604306e-04, +-2.577617419930627635e-04, +-2.583743237989985357e-04, +-2.589864463751000265e-04, +-2.595981087561643292e-04, +-2.602093099777557728e-04, +-2.608200490762639808e-04, +-2.614303250888809407e-04, +-2.620401370536503348e-04, +-2.626494840093797204e-04, +-2.632583649957359389e-04, +-2.638667790532176318e-04, +-2.644747252230749009e-04, +-2.650822025474222285e-04, +-2.656892100692115886e-04, +-2.662957468322206295e-04, +-2.669018118810381453e-04, +-2.675074042610421209e-04, +-2.681125230185083148e-04, +-2.687171672005285103e-04, +-2.693213358549881265e-04, +-2.699250280306469919e-04, +-2.705282427771139192e-04, +-2.711309791447667457e-04, +-2.717332361848643859e-04, +-2.723350129495179369e-04, +-2.729363084916807043e-04, +-2.735371218651352454e-04, +-2.741374521244677826e-04, +-2.747372983251933202e-04, +-2.753366595236059699e-04, +-2.759355347768893772e-04, +-2.765339231430910798e-04, +-2.771318236810446623e-04, +-2.777292354504750315e-04, +-2.783261575119764619e-04, +-2.789225889270027293e-04, +-2.795185287578203816e-04, +-2.801139760676250195e-04, +-2.807089299203811600e-04, +-2.813033893810045990e-04, +-2.818973535152127915e-04, +-2.824908213896264414e-04, +-2.830837920717440225e-04, +-2.836762646298706010e-04, +-2.842682381332167145e-04, +-2.848597116518791273e-04, +-2.854506842568265736e-04, +-2.860411550198624061e-04, +-2.866311230137312278e-04, +-2.872205873119627125e-04, +-2.878095469890558649e-04, +-2.883980011203255518e-04, +-2.889859487820187829e-04, +-2.895733890512398466e-04, +-2.901603210059382210e-04, +-2.907467437250126573e-04, +-2.913326562882396771e-04, +-2.919180577762397447e-04, +-2.925029472705669852e-04, +-2.930873238536776341e-04, +-2.936711866088566368e-04, +-2.942545346203199433e-04, +-2.948373669731960763e-04, +-2.954196827535069954e-04, +-2.960014810481615376e-04, +-2.965827609449297217e-04, +-2.971635215325482411e-04, +-2.977437619006424556e-04, +-2.983234811397032977e-04, +-2.989026783411934162e-04, +-2.994813525973890451e-04, +-3.000595030015688718e-04, +-3.006371286478544424e-04, +-3.012142286313317010e-04, +-3.017908020479451712e-04, +-3.023668479946216639e-04, +-3.029423655691106825e-04, +-3.035173538701692797e-04, +-3.040918119974079376e-04, +-3.046657390513981753e-04, +-3.052391341336415406e-04, +-3.058119963465014677e-04, +-3.063843247933010182e-04, +-3.069561185783034195e-04, +-3.075273768066982415e-04, +-3.080980985845634492e-04, +-3.086682830189727391e-04, +-3.092379292178383835e-04, +-3.098070362900962505e-04, +-3.103756033455532556e-04, +-3.109436294949869469e-04, +-3.115111138501263136e-04, +-3.120780555235724233e-04, +-3.126444536289056490e-04, +-3.132103072806722796e-04, +-3.137756155943074868e-04, +-3.143403776862295431e-04, +-3.149045926738172152e-04, +-3.154682596753256309e-04, +-3.160313778099995774e-04, +-3.165939461980456920e-04, +-3.171559639606189094e-04, +-3.177174302198137882e-04, +-3.182783440986398449e-04, +-3.188387047211252586e-04, +-3.193985112122396750e-04, +-3.199577626978731193e-04, +-3.205164583049109682e-04, +-3.210745971612119954e-04, +-3.216321783955311759e-04, +-3.221892011376264260e-04, +-3.227456645182290589e-04, +-3.233015676690392847e-04, +-3.238569097227085385e-04, +-3.244116898128181757e-04, +-3.249659070739838802e-04, +-3.255195606417772775e-04, +-3.260726496527058759e-04, +-3.266251732443108623e-04, +-3.271771305550349378e-04, +-3.277285207243337732e-04, +-3.282793428926535670e-04, +-3.288295962014167869e-04, +-3.293792797929906207e-04, +-3.299283928107851500e-04, +-3.304769343991049231e-04, +-3.310249037033278488e-04, +-3.315722998697535700e-04, +-3.321191220457039698e-04, +-3.326653693795041979e-04, +-3.332110410204053665e-04, +-3.337561361186848941e-04, +-3.343006538256263383e-04, +-3.348445932935059524e-04, +-3.353879536755586415e-04, +-3.359307341260736428e-04, +-3.364729338002534170e-04, +-3.370145518543847356e-04, +-3.375555874456912290e-04, +-3.380960397324505890e-04, +-3.386359078739000265e-04, +-3.391751910302982873e-04, +-3.397138883628936690e-04, +-3.402519990339779592e-04, +-3.407895222068019225e-04, +-3.413264570456632290e-04, +-3.418628027158778318e-04, +-3.423985583837162150e-04, +-3.429337232164966364e-04, +-3.434682963825632794e-04, +-3.440022770512757917e-04, +-3.445356643929984967e-04, +-3.450684575790764329e-04, +-3.456006557819358595e-04, +-3.461322581750103135e-04, +-3.466632639327176251e-04, +-3.471936722305619949e-04, +-3.477234822449843743e-04, +-3.482526931535375098e-04, +-3.487813041347398468e-04, +-3.493093143681864974e-04, +-3.498367230344534519e-04, +-3.503635293152075158e-04, +-3.508897323930640637e-04, +-3.514153314517536259e-04, +-3.519403256759832195e-04, +-3.524647142515310535e-04, +-3.529884963652222965e-04, +-3.535116712048638624e-04, +-3.540342379593344529e-04, +-3.545561958185665602e-04, +-3.550775439735363837e-04, +-3.555982816162261539e-04, +-3.561184079397213312e-04, +-3.566379221380706899e-04, +-3.571568234064519294e-04, +-3.576751109410344150e-04, +-3.581927839390684071e-04, +-3.587098415988685274e-04, +-3.592262831197452376e-04, +-3.597421077020909242e-04, +-3.602573145473700876e-04, +-3.607719028581002590e-04, +-3.612858718378187707e-04, +-3.617992206911833149e-04, +-3.623119486238378286e-04, +-3.628240548425228649e-04, +-3.633355385550516323e-04, +-3.638463989703014838e-04, +-3.643566352982005813e-04, +-3.648662467497103311e-04, +-3.653752325369117953e-04, +-3.658835918729465481e-04, +-3.663913239719892461e-04, +-3.668984280493428206e-04, +-3.674049033212993748e-04, +-3.679107490053058500e-04, +-3.684159643198230247e-04, +-3.689205484844247738e-04, +-3.694245007197575190e-04, +-3.699278202475375730e-04, +-3.704305062905215401e-04, +-3.709325580726055213e-04, +-3.714339748187535026e-04, +-3.719347557549786522e-04, +-3.724349001084336893e-04, +-3.729344071072759003e-04, +-3.734332759808300407e-04, +-3.739315059594486897e-04, +-3.744290962746190440e-04, +-3.749260461588707605e-04, +-3.754223548458818292e-04, +-3.759180215703431557e-04, +-3.764130455681162046e-04, +-3.769074260761008893e-04, +-3.774011623323249645e-04, +-3.778942535759260285e-04, +-3.783866990470798573e-04, +-3.788784979870972783e-04, +-3.793696496383978239e-04, +-3.798601532445046902e-04, +-3.803500080500063019e-04, +-3.808392133006524268e-04, +-3.813277682432200059e-04, +-3.818156721256665679e-04, +-3.823029241970037030e-04, +-3.827895237073814677e-04, +-3.832754699080728267e-04, +-3.837607620514036136e-04, +-3.842453993908449047e-04, +-3.847293811810018516e-04, +-3.852127066775491715e-04, +-3.856953751373108359e-04, +-3.861773858182352965e-04, +-3.866587379793344449e-04, +-3.871394308807710530e-04, +-3.876194637838375231e-04, +-3.880988359509483527e-04, +-3.885775466456264731e-04, +-3.890555951324870952e-04, +-3.895329806773204884e-04, +-3.900097025470350052e-04, +-3.904857600096287300e-04, +-3.909611523342825575e-04, +-3.914358787912301427e-04, +-3.919099386519103939e-04, +-3.923833311888374228e-04, +-3.928560556756906957e-04, +-3.933281113872817486e-04, +-3.937994975995458930e-04, +-3.942702135895185807e-04, +-3.947402586354280480e-04, +-3.952096320166272828e-04, +-3.956783330135751594e-04, +-3.961463609079251256e-04, +-3.966137149824053992e-04, +-3.970803945209170878e-04, +-3.975463988085157032e-04, +-3.980117271314012411e-04, +-3.984763787768841369e-04, +-3.989403530334753091e-04, +-3.994036491907584398e-04, +-3.998662665395393782e-04, +-4.003282043717189091e-04, +-4.007894619803819831e-04, +-4.012500386597726170e-04, +-4.017099337052351302e-04, +-4.021691464133023987e-04, +-4.026276760816671781e-04, +-4.030855220091793386e-04, +-4.035426834958160498e-04, +-4.039991598427614692e-04, +-4.044549503522885101e-04, +-4.049100543278986498e-04, +-4.053644710742059735e-04, +-4.058181998970268383e-04, +-4.062712401033088038e-04, +-4.067235910011737289e-04, +-4.071752518998978765e-04, +-4.076262221099573421e-04, +-4.080765009429512379e-04, +-4.085260877116973191e-04, +-4.089749817301144025e-04, +-4.094231823133601686e-04, +-4.098706887777152060e-04, +-4.103175004406606403e-04, +-4.107636166208506498e-04, +-4.112090366381059058e-04, +-4.116537598133910214e-04, +-4.120977854688970049e-04, +-4.125411129279846103e-04, +-4.129837415151586962e-04, +-4.134256705561578887e-04, +-4.138668993778289772e-04, +-4.143074273082705166e-04, +-4.147472536767156251e-04, +-4.151863778136176365e-04, +-4.156247990505788133e-04, +-4.160625167204328552e-04, +-4.164995301571311655e-04, +-4.169358386958865628e-04, +-4.173714416730436643e-04, +-4.178063384261729405e-04, +-4.182405282940419291e-04, +-4.186740106165610801e-04, +-4.191067847348646904e-04, +-4.195388499912878111e-04, +-4.199702057293611514e-04, +-4.204008512937825641e-04, +-4.208307860304959756e-04, +-4.212600092865708226e-04, +-4.216885204103483649e-04, +-4.221163187513165692e-04, +-4.225434036601945676e-04, +-4.229697744889142266e-04, +-4.233954305905597028e-04, +-4.238203713194482161e-04, +-4.242445960311096121e-04, +-4.246681040822827846e-04, +-4.250908948309003337e-04, +-4.255129676360725746e-04, +-4.259343218581790975e-04, +-4.263549568587576377e-04, +-4.267748720005871792e-04, +-4.271940666476568382e-04, +-4.276125401651565934e-04, +-4.280302919194666606e-04, +-4.284473212782205932e-04, +-4.288636276102658716e-04, +-4.292792102856302929e-04, +-4.296940686756111467e-04, +-4.301082021526541092e-04, +-4.305216100904899076e-04, +-4.309342918640249234e-04, +-4.313462468494112865e-04, +-4.317574744240244324e-04, +-4.321679739664513378e-04, +-4.325777448564755595e-04, +-4.329867864751516101e-04, +-4.333950982047491221e-04, +-4.338026794287373430e-04, +-4.342095295318591872e-04, +-4.346156479000191832e-04, +-4.350210339204163969e-04, +-4.354256869814350354e-04, +-4.358296064727238653e-04, +-4.362327917851300217e-04, +-4.366352423107777215e-04, +-4.370369574429588131e-04, +-4.374379365762682474e-04, +-4.378381791064852495e-04, +-4.382376844306560431e-04, +-4.386364519470729796e-04, +-4.390344810552206534e-04, +-4.394317711558488686e-04, +-4.398283216509565928e-04, +-4.402241319437838799e-04, +-4.406192014387878548e-04, +-4.410135295417093380e-04, +-4.414071156594715265e-04, +-4.417999592003041894e-04, +-4.421920595736379580e-04, +-4.425834161901843946e-04, +-4.429740284618769570e-04, +-4.433638958019040671e-04, +-4.437530176246953415e-04, +-4.441413933459561775e-04, +-4.445290223826063331e-04, +-4.449159041528623804e-04, +-4.453020380761286349e-04, +-4.456874235731269349e-04, +-4.460720600657881664e-04, +-4.464559469773229537e-04, +-4.468390837322016012e-04, +-4.472214697561361502e-04, +-4.476031044760753370e-04, +-4.479839873202650920e-04, +-4.483641177182046827e-04, +-4.487434951006274704e-04, +-4.491221188995678584e-04, +-4.494999885482644738e-04, +-4.498771034812754717e-04, +-4.502534631343835594e-04, +-4.506290669446566034e-04, +-4.510039143504319622e-04, +-4.513780047912993565e-04, +-4.517513377080926290e-04, +-4.521239125429634700e-04, +-4.524957287392915371e-04, +-4.528667857417441409e-04, +-4.532370829962748351e-04, +-4.536066199500612918e-04, +-4.539753960515775094e-04, +-4.543434107505814530e-04, +-4.547106634981013386e-04, +-4.550771537464151965e-04, +-4.554428809491189588e-04, +-4.558078445610220511e-04, +-4.561720440382713705e-04, +-4.565354788382495880e-04, +-4.568981484196414471e-04, +-4.572600522424175550e-04, +-4.576211897677906352e-04, +-4.579815604582717975e-04, +-4.583411637776692912e-04, +-4.586999991910676341e-04, +-4.590580661648274502e-04, +-4.594153641665700192e-04, +-4.597718926652381551e-04, +-4.601276511310553857e-04, +-4.604826390355047563e-04, +-4.608368558513875938e-04, +-4.611903010527789999e-04, +-4.615429741150147325e-04, +-4.618948745147616244e-04, +-4.622460017299715590e-04, +-4.625963552398548533e-04, +-4.629459345249589165e-04, +-4.632947390670666063e-04, +-4.636427683493075762e-04, +-4.639900218560670943e-04, +-4.643364990730454575e-04, +-4.646821994872430838e-04, +-4.650271225869433817e-04, +-4.653712678617049985e-04, +-4.657146348024225895e-04, +-4.660572229012815526e-04, +-4.663990316517397055e-04, +-4.667400605485978130e-04, +-4.670803090878992980e-04, +-4.674197767670457094e-04, +-4.677584630846973006e-04, +-4.680963675408502246e-04, +-4.684334896367740842e-04, +-4.687698288750790439e-04, +-4.691053847596252991e-04, +-4.694401567956343153e-04, +-4.697741444895955324e-04, +-4.701073473493238815e-04, +-4.704397648839548523e-04, +-4.707713966038902824e-04, +-4.711022420208656864e-04, +-4.714323006479319332e-04, +-4.717615719994524811e-04, +-4.720900555910927522e-04, +-4.724177509398062012e-04, +-4.727446575639004511e-04, +-4.730707749829843301e-04, +-4.733961027179591440e-04, +-4.737206402910660013e-04, +-4.740443872258640209e-04, +-4.743673430471937943e-04, +-4.746895072812359331e-04, +-4.750108794554923114e-04, +-4.753314590987861208e-04, +-4.756512457412490221e-04, +-4.759702389143124720e-04, +-4.762884381507700646e-04, +-4.766058429846982761e-04, +-4.769224529515198908e-04, +-4.772382675879804199e-04, +-4.775532864321369335e-04, +-4.778675090233486288e-04, +-4.781809349023393883e-04, +-4.784935636111446538e-04, +-4.788053946931067101e-04, +-4.791164276929294375e-04, +-4.794266621565940688e-04, +-4.797360976314579608e-04, +-4.800447336661691584e-04, +-4.803525698107287910e-04, +-4.806596056164667320e-04, +-4.809658406360339008e-04, +-4.812712744233892527e-04, +-4.815759065338638006e-04, +-4.818797365241074895e-04, +-4.821827639520859438e-04, +-4.824849883771290936e-04, +-4.827864093598544675e-04, +-4.830870264622605967e-04, +-4.833868392476488979e-04, +-4.836858472806791309e-04, +-4.839840501273283066e-04, +-4.842814473549347061e-04, +-4.845780385321330451e-04, +-4.848738232289400720e-04, +-4.851688010166799745e-04, +-4.854629714680352829e-04, +-4.857563341570332637e-04, +-4.860488886590101946e-04, +-4.863406345506651415e-04, +-4.866315714100406592e-04, +-4.869216988165278332e-04, +-4.872110163508487700e-04, +-4.874995235950504708e-04, +-4.877872201325575787e-04, +-4.880741055481344309e-04, +-4.883601794278681456e-04, +-4.886454413592205550e-04, +-4.889298909309778987e-04, +-4.892135277332806389e-04, +-4.894963513576099622e-04, +-4.897783613968162940e-04, +-4.900595574450715940e-04, +-4.903399390979300710e-04, +-4.906195059522496871e-04, +-4.908982576062845314e-04, +-4.911761936596095767e-04, +-4.914533137131656734e-04, +-4.917296173692509847e-04, +-4.920051042315053743e-04, +-4.922797739049089962e-04, +-4.925536259958204592e-04, +-4.928266601119515649e-04, +-4.930988758623464909e-04, +-4.933702728574403378e-04, +-4.936408507089769465e-04, +-4.939106090301022484e-04, +-4.941795474352867444e-04, +-4.944476655403793903e-04, +-4.947149629625834186e-04, +-4.949814393204590495e-04, +-4.952470942339047338e-04, +-4.955119273242147241e-04, +-4.957759382140170586e-04, +-4.960391265273146524e-04, +-4.963014918894795508e-04, +-4.965630339272138986e-04, +-4.968237522686044750e-04, +-4.970836465431005763e-04, +-4.973427163815219302e-04, +-4.976009614160399391e-04, +-4.978583812801754037e-04, +-4.981149756088464444e-04, +-4.983707440383252415e-04, +-4.986256862062367345e-04, +-4.988798017515870282e-04, +-4.991330903147576459e-04, +-4.993855515374642220e-04, +-4.996371850628142895e-04, +-4.998879905352813678e-04, +-5.001379676007159129e-04, +-5.003871159063273200e-04, +-5.006354351006798032e-04, +-5.008829248337340291e-04, +-5.011295847568179515e-04, +-5.013754145226119582e-04, +-5.016204137851948408e-04, +-5.018645822000019447e-04, +-5.021079194238277713e-04, +-5.023504251148646835e-04, +-5.025920989326772108e-04, +-5.028329405381830753e-04, +-5.030729495937065346e-04, +-5.033121257629043308e-04, +-5.035504687108508003e-04, +-5.037879781039657744e-04, +-5.040246536100648862e-04, +-5.042604948983384289e-04, +-5.044955016393501629e-04, +-5.047296735050247393e-04, +-5.049630101686894412e-04, +-5.051955113050498984e-04, +-5.054271765901721973e-04, +-5.056580057015276587e-04, +-5.058879983179329900e-04, +-5.061171541196189151e-04, +-5.063454727881721695e-04, +-5.065729540065853735e-04, +-5.067995974592120383e-04, +-5.070254028317955136e-04, +-5.072503698114552186e-04, +-5.074744980867109279e-04, +-5.076977873474437407e-04, +-5.079202372849352196e-04, +-5.081418475918536223e-04, +-5.083626179622312410e-04, +-5.085825480914935677e-04, +-5.088016376764635225e-04, +-5.090198864153474678e-04, +-5.092372940077311960e-04, +-5.094538601545732081e-04, +-5.096695845582461300e-04, +-5.098844669225006086e-04, +-5.100985069524647695e-04, +-5.103117043546674192e-04, +-5.105240588370311061e-04, +-5.107355701088444732e-04, +-5.109462378807983624e-04, +-5.111560618649829951e-04, +-5.113650417748596749e-04, +-5.115731773253062156e-04, +-5.117804682325547078e-04, +-5.119869142142637270e-04, +-5.121925149894604370e-04, +-5.123972702785765856e-04, +-5.126011798034370119e-04, +-5.128042432872543339e-04, +-5.130064604546196241e-04, +-5.132078310315418748e-04, +-5.134083547454198083e-04, +-5.136080313250313608e-04, +-5.138068605005713038e-04, +-5.140048420035977931e-04, +-5.142019755670974206e-04, +-5.143982609254277522e-04, +-5.145936978143559248e-04, +-5.147882859710502983e-04, +-5.149820251340557356e-04, +-5.151749150433248279e-04, +-5.153669554402098710e-04, +-5.155581460674653598e-04, +-5.157484866692265205e-04, +-5.159379769910508355e-04, +-5.161266167798673034e-04, +-5.163144057840193726e-04, +-5.165013437532484618e-04, +-5.166874304387014411e-04, +-5.168726655929191394e-04, +-5.170570489698240926e-04, +-5.172405803247702005e-04, +-5.174232594144975153e-04, +-5.176050859971443848e-04, +-5.177860598322576438e-04, +-5.179661806807897952e-04, +-5.181454483050752661e-04, +-5.183238624688629335e-04, +-5.185014229373099449e-04, +-5.186781294769758632e-04, +-5.188539818558171373e-04, +-5.190289798431822234e-04, +-5.192031232098449781e-04, +-5.193764117279788548e-04, +-5.195488451711488802e-04, +-5.197204233143395188e-04, +-5.198911459339304944e-04, +-5.200610128077079583e-04, +-5.202300237148631875e-04, +-5.203981784360002831e-04, +-5.205654767531171963e-04, +-5.207319184496359780e-04, +-5.208975033103573505e-04, +-5.210622311215167609e-04, +-5.212261016707370014e-04, +-5.213891147470610605e-04, +-5.215512701409357518e-04, +-5.217125676442161590e-04, +-5.218730070501502406e-04, +-5.220325881534125479e-04, +-5.221913107500890470e-04, +-5.223491746376546750e-04, +-5.225061796150156247e-04, +-5.226623254824616389e-04, +-5.228176120417187033e-04, +-5.229720390959009075e-04, +-5.231256064495438387e-04, +-5.232783139086002447e-04, +-5.234301612804104350e-04, +-5.235811483737371928e-04, +-5.237312749987656658e-04, +-5.238805409670705153e-04, +-5.240289460916535379e-04, +-5.241764901869288120e-04, +-5.243231730687052420e-04, +-5.244689945542142058e-04, +-5.246139544621014226e-04, +-5.247580526124284717e-04, +-5.249012888266615159e-04, +-5.250436629276687001e-04, +-5.251851747397514843e-04, +-5.253258240886207915e-04, +-5.254656108013875749e-04, +-5.256045347065888386e-04, +-5.257425956341750615e-04, +-5.258797934154983787e-04, +-5.260161278833340491e-04, +-5.261515988718692884e-04, +-5.262862062167130263e-04, +-5.264199497548800776e-04, +-5.265528293247943945e-04, +-5.266848447663054385e-04, +-5.268159959206789641e-04, +-5.269462826305854183e-04, +-5.270757047401231424e-04, +-5.272042620947972298e-04, +-5.273319545415219118e-04, +-5.274587819286427831e-04, +-5.275847441059156604e-04, +-5.277098409245048471e-04, +-5.278340722370083960e-04, +-5.279574378974145237e-04, +-5.280799377611546282e-04, +-5.282015716850566684e-04, +-5.283223395273770398e-04, +-5.284422411477936350e-04, +-5.285612764073827508e-04, +-5.286794451686483614e-04, +-5.287967472955175646e-04, +-5.289131826533310411e-04, +-5.290287511088404525e-04, +-5.291434525302266554e-04, +-5.292572867870755241e-04, +-5.293702537504015862e-04, +-5.294823532926300246e-04, +-5.295935852876113145e-04, +-5.297039496106097306e-04, +-5.298134461383076843e-04, +-5.299220747488057231e-04, +-5.300298353216289279e-04, +-5.301367277377122761e-04, +-5.302427518794169048e-04, +-5.303479076305238219e-04, +-5.304521948762238237e-04, +-5.305556135031306133e-04, +-5.306581633992821017e-04, +-5.307598444541371556e-04, +-5.308606565585665977e-04, +-5.309605996048573275e-04, +-5.310596734867271745e-04, +-5.311578780993102614e-04, +-5.312552133391559199e-04, +-5.313516791042355216e-04, +-5.314472752939483320e-04, +-5.315420018090966829e-04, +-5.316358585519151371e-04, +-5.317288454260579115e-04, +-5.318209623365952998e-04, +-5.319122091900252728e-04, +-5.320025858942519035e-04, +-5.320920923586138808e-04, +-5.321807284938631514e-04, +-5.322684942121726171e-04, +-5.323553894271433997e-04, +-5.324414140537844569e-04, +-5.325265680085293886e-04, +-5.326108512092401224e-04, +-5.326942635751926022e-04, +-5.327768050270825350e-04, +-5.328584754870348229e-04, +-5.329392748785785183e-04, +-5.330192031266835781e-04, +-5.330982601577247603e-04, +-5.331764458995077527e-04, +-5.332537602812577890e-04, +-5.333302032336149868e-04, +-5.334057746886422622e-04, +-5.334804745798294497e-04, +-5.335543028420836531e-04, +-5.336272594117324975e-04, +-5.336993442265262986e-04, +-5.337705572256328575e-04, +-5.338408983496420153e-04, +-5.339103675405686882e-04, +-5.339789647418478804e-04, +-5.340466898983315400e-04, +-5.341135429562935463e-04, +-5.341795238634324200e-04, +-5.342446325688665534e-04, +-5.343088690231321495e-04, +-5.343722331781910291e-04, +-5.344347249874254260e-04, +-5.344963444056336508e-04, +-5.345570913890376795e-04, +-5.346169658952808776e-04, +-5.346759678834343962e-04, +-5.347340973139786324e-04, +-5.347913541488175408e-04, +-5.348477383512813439e-04, +-5.349032498861178587e-04, +-5.349578887194956405e-04, +-5.350116548190049590e-04, +-5.350645481536554131e-04, +-5.351165686938779906e-04, +-5.351677164115233335e-04, +-5.352179912798662922e-04, +-5.352673932735944320e-04, +-5.353159223688288507e-04, +-5.353635785430950131e-04, +-5.354103617753511570e-04, +-5.354562720459700789e-04, +-5.355013093367472655e-04, +-5.355454736308993755e-04, +-5.355887649130583851e-04, +-5.356311831692782020e-04, +-5.356727283870353152e-04, +-5.357134005552260849e-04, +-5.357531996641637069e-04, +-5.357921257055836333e-04, +-5.358301786726375011e-04, +-5.358673585599022394e-04, +-5.359036653633682517e-04, +-5.359390990804497159e-04, +-5.359736597099798135e-04, +-5.360073472522104048e-04, +-5.360401617088079084e-04, +-5.360721030828662038e-04, +-5.361031713788916688e-04, +-5.361333666028125040e-04, +-5.361626887619767813e-04, +-5.361911378651473478e-04, +-5.362187139225075725e-04, +-5.362454169456588524e-04, +-5.362712469476251659e-04, +-5.362962039428427734e-04, +-5.363202879471678066e-04, +-5.363434989778757258e-04, +-5.363658370536596946e-04, +-5.363873021946300368e-04, +-5.364078944223127192e-04, +-5.364276137596590008e-04, +-5.364464602310267845e-04, +-5.364644338621972052e-04, +-5.364815346803676914e-04, +-5.364977627141545666e-04, +-5.365131179935876292e-04, +-5.365276005501152471e-04, +-5.365412104166008894e-04, +-5.365539476273259445e-04, +-5.365658122179872268e-04, +-5.365768042257014220e-04, +-5.365869236889941364e-04, +-5.365961706478116064e-04, +-5.366045451435144100e-04, +-5.366120472188786600e-04, +-5.366186769180975209e-04, +-5.366244342867786078e-04, +-5.366293193719392151e-04, +-5.366333322220209539e-04, +-5.366364728868721875e-04, +-5.366387414177599575e-04, +-5.366401378673656478e-04, +-5.366406622897827066e-04, +-5.366403147405189242e-04, +-5.366390952764959988e-04, +-5.366370039560512716e-04, +-5.366340408389337147e-04, +-5.366302059863053411e-04, +-5.366254994607413129e-04, +-5.366199213262308086e-04, +-5.366134716481743127e-04, +-5.366061504933844831e-04, +-5.365979579300895119e-04, +-5.365888940279240184e-04, +-5.365789588579394573e-04, +-5.365681524925982639e-04, +-5.365564750057698427e-04, +-5.365439264727415178e-04, +-5.365305069702056310e-04, +-5.365162165762714678e-04, +-5.365010553704501872e-04, +-5.364850234336718433e-04, +-5.364681208482730262e-04, +-5.364503476980005472e-04, +-5.364317040680103557e-04, +-5.364121900448678634e-04, +-5.363918057165487042e-04, +-5.363705511724375409e-04, +-5.363484265033262224e-04, +-5.363254318014147592e-04, +-5.363015671603155524e-04, +-5.362768326750454780e-04, +-5.362512284420291406e-04, +-5.362247545591009327e-04, +-5.361974111254979875e-04, +-5.361691982418715632e-04, +-5.361401160102727314e-04, +-5.361101645341626769e-04, +-5.360793439184095540e-04, +-5.360476542692855584e-04, +-5.360150956944682290e-04, +-5.359816683030421821e-04, +-5.359473722054988948e-04, +-5.359122075137280313e-04, +-5.358761743410322964e-04, +-5.358392728021112812e-04, +-5.358015030130769667e-04, +-5.357628650914380035e-04, +-5.357233591561082761e-04, +-5.356829853274069041e-04, +-5.356417437270542294e-04, +-5.355996344781724676e-04, +-5.355566577052926465e-04, +-5.355128135343386686e-04, +-5.354681020926408633e-04, +-5.354225235089319756e-04, +-5.353760779133426122e-04, +-5.353287654374074217e-04, +-5.352805862140619505e-04, +-5.352315403776401487e-04, +-5.351816280638739369e-04, +-5.351308494098992773e-04, +-5.350792045542501025e-04, +-5.350266936368598333e-04, +-5.349733167990574755e-04, +-5.349190741835744504e-04, +-5.348639659345361379e-04, +-5.348079921974700085e-04, +-5.347511531192984668e-04, +-5.346934488483444901e-04, +-5.346348795343202438e-04, +-5.345754453283407424e-04, +-5.345151463829138751e-04, +-5.344539828519492960e-04, +-5.343919548907444380e-04, +-5.343290626559958970e-04, +-5.342653063057935768e-04, +-5.342006859996202561e-04, +-5.341352018983595027e-04, +-5.340688541642798440e-04, +-5.340016429610489708e-04, +-5.339335684537248458e-04, +-5.338646308087593908e-04, +-5.337948301939965346e-04, +-5.337241667786726471e-04, +-5.336526407334131776e-04, +-5.335802522302371008e-04, +-5.335070014425555068e-04, +-5.334328885451617352e-04, +-5.333579137142524084e-04, +-5.332820771274054223e-04, +-5.332053789635887286e-04, +-5.331278194031570817e-04, +-5.330493986278611466e-04, +-5.329701168208293921e-04, +-5.328899741665904261e-04, +-5.328089708510479498e-04, +-5.327271070615026589e-04, +-5.326443829866327282e-04, +-5.325607988165115920e-04, +-5.324763547425903805e-04, +-5.323910509577148330e-04, +-5.323048876561049152e-04, +-5.322178650333712988e-04, +-5.321299832865108081e-04, +-5.320412426138949272e-04, +-5.319516432152913759e-04, +-5.318611852918441602e-04, +-5.317698690460764994e-04, +-5.316776946818957059e-04, +-5.315846624045936176e-04, +-5.314907724208454065e-04, +-5.313960249387011210e-04, +-5.313004201675916496e-04, +-5.312039583183340331e-04, +-5.311066396031116242e-04, +-5.310084642355076970e-04, +-5.309094324304643566e-04, +-5.308095444043146307e-04, +-5.307088003747617621e-04, +-5.306072005608892909e-04, +-5.305047451831554177e-04, +-5.304014344634037361e-04, +-5.302972686248416580e-04, +-5.301922478920615550e-04, +-5.300863724910226523e-04, +-5.299796426490619794e-04, +-5.298720585948978393e-04, +-5.297636205586148464e-04, +-5.296543287716706490e-04, +-5.295441834668962542e-04, +-5.294331848784990637e-04, +-5.293213332420496466e-04, +-5.292086287945038572e-04, +-5.290950717741748624e-04, +-5.289806624207558016e-04, +-5.288654009753022229e-04, +-5.287492876802404309e-04, +-5.286323227793718240e-04, +-5.285145065178654131e-04, +-5.283958391422502324e-04, +-5.282763209004284581e-04, +-5.281559520416712885e-04, +-5.280347328166062589e-04, +-5.279126634772468400e-04, +-5.277897442769508051e-04, +-5.276659754704551408e-04, +-5.275413573138502434e-04, +-5.274158900645983502e-04, +-5.272895739815303953e-04, +-5.271624093248283372e-04, +-5.270343963560399038e-04, +-5.269055353380804356e-04, +-5.267758265352153217e-04, +-5.266452702130893816e-04, +-5.265138666386891351e-04, +-5.263816160803757617e-04, +-5.262485188078592970e-04, +-5.261145750922100166e-04, +-5.259797852058570268e-04, +-5.258441494226007325e-04, +-5.257076680175800949e-04, +-5.255703412672951824e-04, +-5.254321694496115079e-04, +-5.252931528437344410e-04, +-5.251532917302463967e-04, +-5.250125863910641176e-04, +-5.248710371094685977e-04, +-5.247286441700900125e-04, +-5.245854078589170426e-04, +-5.244413284632798520e-04, +-5.242964062718769762e-04, +-5.241506415747446395e-04, +-5.240040346632756198e-04, +-5.238565858302113342e-04, +-5.237082953696360925e-04, +-5.235591635769979140e-04, +-5.234091907490855426e-04, +-5.232583771840347347e-04, +-5.231067231813256576e-04, +-5.229542290417936229e-04, +-5.228008950676061011e-04, +-5.226467215623004526e-04, +-5.224917088307298252e-04, +-5.223358571791172564e-04, +-5.221791669150138227e-04, +-5.220216383473126262e-04, +-5.218632717862621302e-04, +-5.217040675434492453e-04, +-5.215440259317919575e-04, +-5.213831472655612283e-04, +-5.212214318603628892e-04, +-5.210588800331335214e-04, +-5.208954921021707049e-04, +-5.207312683870959392e-04, +-5.205662092088693882e-04, +-5.204003148897858684e-04, +-5.202335857534810294e-04, +-5.200660221249362326e-04, +-5.198976243304523131e-04, +-5.197283926976668193e-04, +-5.195583275555636614e-04, +-5.193874292344414535e-04, +-5.192156980659580739e-04, +-5.190431343830760212e-04, +-5.188697385201096858e-04, +-5.186955108126924986e-04, +-5.185204515977912421e-04, +-5.183445612137010635e-04, +-5.181678400000630383e-04, +-5.179902882978228628e-04, +-5.178119064492620787e-04, +-5.176326947979993740e-04, +-5.174526536889577323e-04, +-5.172717834684159317e-04, +-5.170900844839591056e-04, +-5.169075570844998847e-04, +-5.167242016202703734e-04, +-5.165400184428383052e-04, +-5.163550079050771178e-04, +-5.161691703612080210e-04, +-5.159825061667443766e-04, +-5.157950156785427644e-04, +-5.156066992547661196e-04, +-5.154175572548947912e-04, +-5.152275900397459496e-04, +-5.150367979714417111e-04, +-5.148451814134222563e-04, +-5.146527407304382412e-04, +-5.144594762885742155e-04, +-5.142653884552049297e-04, +-5.140704775990526890e-04, +-5.138747440901223016e-04, +-5.136781882997505178e-04, +-5.134808106005767569e-04, +-5.132826113665580692e-04, +-5.130835909729613295e-04, +-5.128837497963695258e-04, +-5.126830882146596411e-04, +-5.124816066070369148e-04, +-5.122793053539937509e-04, +-5.120761848373591579e-04, +-5.118722454402395514e-04, +-5.116674875470686272e-04, +-5.114619115435725585e-04, +-5.112555178167852831e-04, +-5.110483067550461184e-04, +-5.108402787480107116e-04, +-5.106314341866190556e-04, +-5.104217734631125115e-04, +-5.102112969710511552e-04, +-5.100000051052714940e-04, +-5.097878982619415437e-04, +-5.095749768384969696e-04, +-5.093612412336947538e-04, +-5.091466918475708037e-04, +-5.089313290814764888e-04, +-5.087151533380350563e-04, +-5.084981650212005034e-04, +-5.082803645361863446e-04, +-5.080617522895258939e-04, +-5.078423286890275954e-04, +-5.076220941437921538e-04, +-5.074010490642311827e-04, +-5.071791938620379310e-04, +-5.069565289501876083e-04, +-5.067330547429454079e-04, +-5.065087716558803847e-04, +-5.062836801058255565e-04, +-5.060577805109340655e-04, +-5.058310732906116328e-04, +-5.056035588655739127e-04, +-5.053752376578099547e-04, +-5.051461100905805775e-04, +-5.049161765884637972e-04, +-5.046854375772971473e-04, +-5.044538934842021823e-04, +-5.042215447375749358e-04, +-5.039883917671002331e-04, +-5.037544350037572198e-04, +-5.035196748797735001e-04, +-5.032841118286779380e-04, +-5.030477462852657455e-04, +-5.028105786856018437e-04, +-5.025726094670386439e-04, +-5.023338390682138789e-04, +-5.020942679290140657e-04, +-5.018538964906064893e-04, +-5.016127251954438648e-04, +-5.013707544872273662e-04, +-5.011279848109612698e-04, +-5.008844166128853005e-04, +-5.006400503405361059e-04, +-5.003948864426996596e-04, +-5.001489253694326202e-04, +-4.999021675720595123e-04, +-4.996546135031915917e-04, +-4.994062636166745868e-04, +-4.991571183676270793e-04, +-4.989071782124432147e-04, +-4.986564436087581164e-04, +-4.984049150154991684e-04, +-4.981525928928228061e-04, +-4.978994777021714373e-04, +-4.976455699062236771e-04, +-4.973908699689396674e-04, +-4.971353783555087103e-04, +-4.968790955324157294e-04, +-4.966220219673621230e-04, +-4.963641581293343945e-04, +-4.961055044885537366e-04, +-4.958460615164917524e-04, +-4.955858296858989698e-04, +-4.953248094707616905e-04, +-4.950630013463097959e-04, +-4.948004057890247704e-04, +-4.945370232766530373e-04, +-4.942728542881626988e-04, +-4.940078993038057691e-04, +-4.937421588050464006e-04, +-4.934756332746176961e-04, +-4.932083231964813760e-04, +-4.929402290558410060e-04, +-4.926713513391668253e-04, +-4.924016905341580159e-04, +-4.921312471297407520e-04, +-4.918600216161073384e-04, +-4.915880144846584239e-04, +-4.913152262280766173e-04, +-4.910416573402393188e-04, +-4.907673083162889752e-04, +-4.904921796525903632e-04, +-4.902162718467408887e-04, +-4.899395853975785017e-04, +-4.896621208051931892e-04, +-4.893838785708743908e-04, +-4.891048591971545838e-04, +-4.888250631878116688e-04, +-4.885444910478222401e-04, +-4.882631432834367213e-04, +-4.879810204020870994e-04, +-4.876981229124701918e-04, +-4.874144513244819976e-04, +-4.871300061492508742e-04, +-4.868447878991309782e-04, +-4.865587970877202628e-04, +-4.862720342298102252e-04, +-4.859844998414145838e-04, +-4.856961944397930760e-04, +-4.854071185433897679e-04, +-4.851172726719064541e-04, +-4.848266573462451409e-04, +-4.845352730885158529e-04, +-4.842431204220475289e-04, +-4.839501998713997312e-04, +-4.836565119623199285e-04, +-4.833620572218083307e-04, +-4.830668361780347309e-04, +-4.827708493604136947e-04, +-4.824740972995487779e-04, +-4.821765805272478140e-04, +-4.818782995765589095e-04, +-4.815792549817182397e-04, +-4.812794472781646853e-04, +-4.809788770025400493e-04, +-4.806775446926987608e-04, +-4.803754508877176865e-04, +-4.800725961278448487e-04, +-4.797689809545362333e-04, +-4.794646059104684210e-04, +-4.791594715394932678e-04, +-4.788535783866786164e-04, +-4.785469269982885643e-04, +-4.782395179217839511e-04, +-4.779313517058076137e-04, +-4.776224289002217369e-04, +-4.773127500560514751e-04, +-4.770023157255575395e-04, +-4.766911264621524974e-04, +-4.763791828204697824e-04, +-4.760664853563110013e-04, +-4.757530346266720099e-04, +-4.754388311897415572e-04, +-4.751238756049154348e-04, +-4.748081684327407482e-04, +-4.744917102349602072e-04, +-4.741745015745187390e-04, +-4.738565430155131271e-04, +-4.735378351232667131e-04, +-4.732183784642412508e-04, +-4.728981736061063494e-04, +-4.725772211176909013e-04, +-4.722555215690253660e-04, +-4.719330755312841448e-04, +-4.716098835768667871e-04, +-4.712859462793000335e-04, +-4.709612642133178292e-04, +-4.706358379548092287e-04, +-4.703096680808277735e-04, +-4.699827551696320418e-04, +-4.696550998006319261e-04, +-4.693267025543983368e-04, +-4.689975640126721468e-04, +-4.686676847583645168e-04, +-4.683370653755807478e-04, +-4.680057064495480733e-04, +-4.676736085666705739e-04, +-4.673407723145383392e-04, +-4.670071982818766181e-04, +-4.666728870585663651e-04, +-4.663378392356874453e-04, +-4.660020554054552090e-04, +-4.656655361612340436e-04, +-4.653282820975485957e-04, +-4.649902938100865897e-04, +-4.646515718957070678e-04, +-4.643121169523872099e-04, +-4.639719295792871690e-04, +-4.636310103766998181e-04, +-4.632893599460689653e-04, +-4.629469788899945575e-04, +-4.626038678122460163e-04, +-4.622600273177062389e-04, +-4.619154580124095453e-04, +-4.615701605035602180e-04, +-4.612241353994676668e-04, +-4.608773833096359296e-04, +-4.605299048446625707e-04, +-4.601817006163211343e-04, +-4.598327712375042237e-04, +-4.594831173222405237e-04, +-4.591327394857091116e-04, +-4.587816383442432523e-04, +-4.584298145152786272e-04, +-4.580772686173912819e-04, +-4.577240012703132381e-04, +-4.573700130948709112e-04, +-4.570153047130774302e-04, +-4.566598767480200974e-04, +-4.563037298239582375e-04, +-4.559468645662441053e-04, +-4.555892816013895098e-04, +-4.552309815569942570e-04, +-4.548719650618362467e-04, +-4.545122327457650044e-04, +-4.541517852397905313e-04, +-4.537906231760181980e-04, +-4.534287471876717298e-04, +-4.530661579091290391e-04, +-4.527028559758648177e-04, +-4.523388420244617574e-04, +-4.519741166926213383e-04, +-4.516086806191656720e-04, +-4.512425344440545234e-04, +-4.508756788083234028e-04, +-4.505081143541221633e-04, +-4.501398417247407511e-04, +-4.497708615645448034e-04, +-4.494011745190295334e-04, +-4.490307812347952817e-04, +-4.486596823595489798e-04, +-4.482878785420865860e-04, +-4.479153704323330385e-04, +-4.475421586812788292e-04, +-4.471682439410731369e-04, +-4.467936268649084683e-04, +-4.464183081071154170e-04, +-4.460422883231018941e-04, +-4.456655681693692285e-04, +-4.452881483035247981e-04, +-4.449100293842947148e-04, +-4.445312120714595312e-04, +-4.441516970258972295e-04, +-4.437714849096046884e-04, +-4.433905763856258006e-04, +-4.430089721181536592e-04, +-4.426266727724084216e-04, +-4.422436790147392795e-04, +-4.418599915125588098e-04, +-4.414756109343599970e-04, +-4.410905379497300025e-04, +-4.407047732293632833e-04, +-4.403183174449836921e-04, +-4.399311712694369599e-04, +-4.395433353766235837e-04, +-4.391548104415117829e-04, +-4.387655971401895408e-04, +-4.383756961497923426e-04, +-4.379851081485246428e-04, +-4.375938338156596481e-04, +-4.372018738315542252e-04, +-4.368092288776595261e-04, +-4.364158996364523040e-04, +-4.360218867914874966e-04, +-4.356271910274141105e-04, +-4.352318130299172153e-04, +-4.348357534857413636e-04, +-4.344390130827354758e-04, +-4.340415925097865419e-04, +-4.336434924568305718e-04, +-4.332447136148671234e-04, +-4.328452566759609832e-04, +-4.324451223332609773e-04, +-4.320443112809294441e-04, +-4.316428242141903725e-04, +-4.312406618293490265e-04, +-4.308378248237282478e-04, +-4.304343138957203896e-04, +-4.300301297447923577e-04, +-4.296252730714182817e-04, +-4.292197445771294968e-04, +-4.288135449645270121e-04, +-4.284066749372165668e-04, +-4.279991351999058290e-04, +-4.275909264582887655e-04, +-4.271820494191417021e-04, +-4.267725047902555611e-04, +-4.263622932804608519e-04, +-4.259514155996348811e-04, +-4.255398724587188832e-04, +-4.251276645696455410e-04, +-4.247147926453904315e-04, +-4.243012573999873130e-04, +-4.238870595484610132e-04, +-4.234721998069250069e-04, +-4.230566788924647022e-04, +-4.226404975232346930e-04, +-4.222236564183834071e-04, +-4.218061562981083464e-04, +-4.213879978836268677e-04, +-4.209691818971864280e-04, +-4.205497090620282643e-04, +-4.201295801024540174e-04, +-4.197087957437559635e-04, +-4.192873567122332775e-04, +-4.188652637352530735e-04, +-4.184425175411645901e-04, +-4.180191188593282469e-04, +-4.175950684201145606e-04, +-4.171703669549146616e-04, +-4.167450151961632249e-04, +-4.163190138772513002e-04, +-4.158923637325927193e-04, +-4.154650654976347755e-04, +-4.150371199088010322e-04, +-4.146085277035131689e-04, +-4.141792896202402588e-04, +-4.137494063984253683e-04, +-4.133188787785063191e-04, +-4.128877075019166641e-04, +-4.124558933110996197e-04, +-4.120234369495221058e-04, +-4.115903391615920214e-04, +-4.111566006927564192e-04, +-4.107222222894287554e-04, +-4.102872046990147480e-04, +-4.098515486699205084e-04, +-4.094152549515672865e-04, +-4.089783242943175281e-04, +-4.085407574495319039e-04, +-4.081025551695845427e-04, +-4.076637182077844264e-04, +-4.072242473184915627e-04, +-4.067841432569798332e-04, +-4.063434067795524611e-04, +-4.059020386434612922e-04, +-4.054600396069275034e-04, +-4.050174104291968426e-04, +-4.045741518704596145e-04, +-4.041302646918715517e-04, +-4.036857496555602658e-04, +-4.032406075246554962e-04, +-4.027948390632053017e-04, +-4.023484450362970572e-04, +-4.019014262099149357e-04, +-4.014537833510601456e-04, +-4.010055172276568770e-04, +-4.005566286086157811e-04, +-4.001071182638344043e-04, +-3.996569869641255763e-04, +-3.992062354812707533e-04, +-3.987548645880375814e-04, +-3.983028750581218925e-04, +-3.978502676661645632e-04, +-3.973970431878105498e-04, +-3.969432023996277356e-04, +-3.964887460791254167e-04, +-3.960336750047639513e-04, +-3.955779899559608856e-04, +-3.951216917131112282e-04, +-3.946647810575081407e-04, +-3.942072587713979070e-04, +-3.937491256380012917e-04, +-3.932903824414401943e-04, +-3.928310299668087723e-04, +-3.923710690001281222e-04, +-3.919105003283708901e-04, +-3.914493247394138387e-04, +-3.909875430221101630e-04, +-3.905251559661982006e-04, +-3.900621643624166282e-04, +-3.895985690023680693e-04, +-3.891343706786340732e-04, +-3.886695701846942883e-04, +-3.882041683149563857e-04, +-3.877381658647641909e-04, +-3.872715636304186089e-04, +-3.868043624090880149e-04, +-3.863365629988773720e-04, +-3.858681661988425972e-04, +-3.853991728089049633e-04, +-3.849295836299774631e-04, +-3.844593994638180077e-04, +-3.839886211131496654e-04, +-3.835172493815795628e-04, +-3.830452850736162864e-04, +-3.825727289947322782e-04, +-3.820995819512771003e-04, +-3.816258447504881132e-04, +-3.811515182005528724e-04, +-3.806766031105317705e-04, +-3.802011002903785282e-04, +-3.797250105510027534e-04, +-3.792483347041855353e-04, +-3.787710735625951660e-04, +-3.782932279397997711e-04, +-3.778147986502759835e-04, +-3.773357865094251521e-04, +-3.768561923334940323e-04, +-3.763760169396315443e-04, +-3.758952611459099691e-04, +-3.754139257712609803e-04, +-3.749320116354928835e-04, +-3.744495195593555595e-04, +-3.739664503644554629e-04, +-3.734828048732697714e-04, +-3.729985839091614014e-04, +-3.725137882963850257e-04, +-3.720284188601081610e-04, +-3.715424764263238356e-04, +-3.710559618219152621e-04, +-3.705688758746711244e-04, +-3.700812194132152675e-04, +-3.695929932670647560e-04, +-3.691041982666433191e-04, +-3.686148352431883250e-04, +-3.681249050288203876e-04, +-3.676344084565599541e-04, +-3.671433463602372625e-04, +-3.666517195746277582e-04, +-3.661595289352916863e-04, +-3.656667752787071774e-04, +-3.651734594421811807e-04, +-3.646795822638682744e-04, +-3.641851445828345798e-04, +-3.636901472389731933e-04, +-3.631945910730196366e-04, +-3.626984769265631319e-04, +-3.622018056420788033e-04, +-3.617045780628369285e-04, +-3.612067950330362419e-04, +-3.607084573976458036e-04, +-3.602095660025346154e-04, +-3.597101216943750191e-04, +-3.592101253207169637e-04, +-3.587095777299384577e-04, +-3.582084797712719692e-04, +-3.577068322947562877e-04, +-3.572046361513122009e-04, +-3.567018921926636736e-04, +-3.561986012713598570e-04, +-3.556947642408388936e-04, +-3.551903819553341884e-04, +-3.546854552699065552e-04, +-3.541799850404394462e-04, +-3.536739721236590098e-04, +-3.531674173771506787e-04, +-3.526603216592672841e-04, +-3.521526858291989864e-04, +-3.516445107469927367e-04, +-3.511357972734783345e-04, +-3.506265462702980260e-04, +-3.501167585999651597e-04, +-3.496064351257772876e-04, +-3.490955767118242422e-04, +-3.485841842230537856e-04, +-3.480722585251710488e-04, +-3.475598004847670649e-04, +-3.470468109691668716e-04, +-3.465332908465579894e-04, +-3.460192409859007040e-04, +-3.455046622569479613e-04, +-3.449895555303129132e-04, +-3.444739216773762183e-04, +-3.439577615703087016e-04, +-3.434410760820782939e-04, +-3.429238660864860808e-04, +-3.424061324580714356e-04, +-3.418878760722481405e-04, +-3.413690978051419733e-04, +-3.408497985337289433e-04, +-3.403299791357404232e-04, +-3.398096404896835325e-04, +-3.392887834749106889e-04, +-3.387674089715263129e-04, +-3.382455178604059092e-04, +-3.377231110232098909e-04, +-3.372001893424101423e-04, +-3.366767537012053425e-04, +-3.361528049836380594e-04, +-3.356283440744945151e-04, +-3.351033718593240474e-04, +-3.345778892244512530e-04, +-3.340518970569808662e-04, +-3.335253962448268155e-04, +-3.329983876766134531e-04, +-3.324708722417417449e-04, +-3.319428508304169182e-04, +-3.314143243335724589e-04, +-3.308852936428941264e-04, +-3.303557596508878793e-04, +-3.298257232507837062e-04, +-3.292951853365602916e-04, +-3.287641468029515210e-04, +-3.282326085454596539e-04, +-3.277005714603766287e-04, +-3.271680364446897908e-04, +-3.266350043961456983e-04, +-3.261014762132798833e-04, +-3.255674527953258328e-04, +-3.250329350423008580e-04, +-3.244979238549558411e-04, +-3.239624201347945345e-04, +-3.234264247840321440e-04, +-3.228899387056665066e-04, +-3.223529628033785068e-04, +-3.218154979816696616e-04, +-3.212775451456920096e-04, +-3.207391052013942607e-04, +-3.202001790554216709e-04, +-3.196607676151389725e-04, +-3.191208717886988961e-04, +-3.185804924849500131e-04, +-3.180396306134533786e-04, +-3.174982870844957040e-04, +-3.169564628091251900e-04, +-3.164141586990504794e-04, +-3.158713756667864275e-04, +-3.153281146254816058e-04, +-3.147843764890643440e-04, +-3.142401621721301356e-04, +-3.136954725900243626e-04, +-3.131503086587946448e-04, +-3.126046712952123066e-04, +-3.120585614167218540e-04, +-3.115119799415263548e-04, +-3.109649277884971789e-04, +-3.104174058772001823e-04, +-3.098694151279666130e-04, +-3.093209564617922813e-04, +-3.087720308003626037e-04, +-3.082226390660617113e-04, +-3.076727821819844294e-04, +-3.071224610719574741e-04, +-3.065716766604419823e-04, +-3.060204298726038768e-04, +-3.054687216343372302e-04, +-3.049165528721896183e-04, +-3.043639245133864597e-04, +-3.038108374858983457e-04, +-3.032572927183460089e-04, +-3.027032911400223333e-04, +-3.021488336809006483e-04, +-3.015939212716501781e-04, +-3.010385548436524681e-04, +-3.004827353289077634e-04, +-2.999264636601034766e-04, +-2.993697407706396663e-04, +-2.988125675945266344e-04, +-2.982549450665201258e-04, +-2.976968741220084634e-04, +-2.971383556970356413e-04, +-2.965793907283141182e-04, +-2.960199801532557720e-04, +-2.954601249098769231e-04, +-2.948998259369396604e-04, +-2.943390841737816756e-04, +-2.937779005604618178e-04, +-2.932162760376563347e-04, +-2.926542115466874419e-04, +-2.920917080295929282e-04, +-2.915287664290244036e-04, +-2.909653876882733201e-04, +-2.904015727512810545e-04, +-2.898373225626713263e-04, +-2.892726380676558721e-04, +-2.887075202121743619e-04, +-2.881419699427255885e-04, +-2.875759882065081433e-04, +-2.870095759513154108e-04, +-2.864427341256123847e-04, +-2.858754636784912695e-04, +-2.853077655596901832e-04, +-2.847396407195429587e-04, +-2.841710901090683194e-04, +-2.836021146798733852e-04, +-2.830327153841846809e-04, +-2.824628931749188798e-04, +-2.818926490055777452e-04, +-2.813219838302776746e-04, +-2.807508986037555001e-04, +-2.801793942813817699e-04, +-2.796074718191850889e-04, +-2.790351321737469508e-04, +-2.784623763022795297e-04, +-2.778892051626462257e-04, +-2.773156197132602922e-04, +-2.767416209132340758e-04, +-2.761672097222016959e-04, +-2.755923871004683384e-04, +-2.750171540088960356e-04, +-2.744415114090011901e-04, +-2.738654602628402455e-04, +-2.732890015331601195e-04, +-2.727121361832185518e-04, +-2.721348651769373017e-04, +-2.715571894787941073e-04, +-2.709791100538505495e-04, +-2.704006278678247480e-04, +-2.698217438869895545e-04, +-2.692424590781966761e-04, +-2.686627744088825303e-04, +-2.680826908471125886e-04, +-2.675022093614734986e-04, +-2.669213309212236794e-04, +-2.663400564961164885e-04, +-2.657583870565482153e-04, +-2.651763235734571960e-04, +-2.645938670183453894e-04, +-2.640110183633556261e-04, +-2.634277785811654110e-04, +-2.628441486450134321e-04, +-2.622601295287085052e-04, +-2.616757222066675207e-04, +-2.610909276538109810e-04, +-2.605057468457036758e-04, +-2.599201807584336846e-04, +-2.593342303686414340e-04, +-2.587478966535284794e-04, +-2.581611805908675880e-04, +-2.575740831590301694e-04, +-2.569866053368773670e-04, +-2.563987481038404524e-04, +-2.558105124399405027e-04, +-2.552218993257116398e-04, +-2.546329097422263461e-04, +-2.540435446711688649e-04, +-2.534538050947311174e-04, +-2.528636919956376390e-04, +-2.522732063571571262e-04, +-2.516823491631107849e-04, +-2.510911213979006283e-04, +-2.504995240464014897e-04, +-2.499075580940385982e-04, +-2.493152245268102918e-04, +-2.487225243311843139e-04, +-2.481294584942519868e-04, +-2.475360280035425963e-04, +-2.469422338471790831e-04, +-2.463480770137605694e-04, +-2.457535584924623226e-04, +-2.451586792729183359e-04, +-2.445634403453770199e-04, +-2.439678427005153704e-04, +-2.433718873295936025e-04, +-2.427755752243513656e-04, +-2.421789073770285600e-04, +-2.415818847804464080e-04, +-2.409845084278988713e-04, +-2.403867793131757985e-04, +-2.397886984305771282e-04, +-2.391902667749488032e-04, +-2.385914853415785515e-04, +-2.379923551263469161e-04, +-2.373928771255476018e-04, +-2.367930523360394271e-04, +-2.361928817551262212e-04, +-2.355923663806506075e-04, +-2.349915072109385467e-04, +-2.343903052448203703e-04, +-2.337887614815807721e-04, +-2.331868769210487964e-04, +-2.325846525635008567e-04, +-2.319820894096886804e-04, +-2.313791884609158541e-04, +-2.307759507189313815e-04, +-2.301723771859513410e-04, +-2.295684688646738468e-04, +-2.289642267582890785e-04, +-2.283596518705039737e-04, +-2.277547452054365991e-04, +-2.271495077676899312e-04, +-2.265439405623812647e-04, +-2.259380445950311903e-04, +-2.253318208717222952e-04, +-2.247252703989129237e-04, +-2.241183941835922456e-04, +-2.235111932331749259e-04, +-2.229036685555355751e-04, +-2.222958211590251752e-04, +-2.216876520524945252e-04, +-2.210791622451692602e-04, +-2.204703527467993893e-04, +-2.198612245675481928e-04, +-2.192517787180174561e-04, +-2.186420162093284875e-04, +-2.180319380530100926e-04, +-2.174215452610246495e-04, +-2.168108388457813630e-04, +-2.161998198201736698e-04, +-2.155884891974690562e-04, +-2.149768479914715262e-04, +-2.143648972163284504e-04, +-2.137526378866927087e-04, +-2.131400710176119663e-04, +-2.125271976245548297e-04, +-2.119140187234896412e-04, +-2.113005353307747039e-04, +-2.106867484631834615e-04, +-2.100726591379165336e-04, +-2.094582683726420205e-04, +-2.088435771853825839e-04, +-2.082285865946789714e-04, +-2.076132976193978419e-04, +-2.069977112788911700e-04, +-2.063818285928749514e-04, +-2.057656505815068316e-04, +-2.051491782654010136e-04, +-2.045324126655133866e-04, +-2.039153548032255519e-04, +-2.032980057003679433e-04, +-2.026803663791101602e-04, +-2.020624378621227034e-04, +-2.014442211723840685e-04, +-2.008257173333428611e-04, +-2.002069273688073436e-04, +-1.995878523029843586e-04, +-1.989684931604913086e-04, +-1.983488509663810389e-04, +-1.977289267460335530e-04, +-1.971087215252313913e-04, +-1.964882363301907753e-04, +-1.958674721874473592e-04, +-1.952464301240190237e-04, +-1.946251111672129142e-04, +-1.940035163447879365e-04, +-1.933816466848304249e-04, +-1.927595032158613438e-04, +-1.921370869667101398e-04, +-1.915143989666805982e-04, +-1.908914402453547917e-04, +-1.902682118327557383e-04, +-1.896447147592379505e-04, +-1.890209500555113426e-04, +-1.883969187527226806e-04, +-1.877726218823443170e-04, +-1.871480604761988553e-04, +-1.865232355664723509e-04, +-1.858981481857531796e-04, +-1.852727993669203103e-04, +-1.846471901433079143e-04, +-1.840213215485089076e-04, +-1.833951946165399399e-04, +-1.827688103817287179e-04, +-1.821421698787411116e-04, +-1.815152741426602999e-04, +-1.808881242088763183e-04, +-1.802607211130973885e-04, +-1.796330658914313419e-04, +-1.790051595802864695e-04, +-1.783770032163993046e-04, +-1.777485978369138235e-04, +-1.771199444792692851e-04, +-1.764910441812280134e-04, +-1.758618979808858329e-04, +-1.752325069166841035e-04, +-1.746028720274382347e-04, +-1.739729943522208089e-04, +-1.733428749304462301e-04, +-1.727125148018967724e-04, +-1.720819150066083859e-04, +-1.714510765850364173e-04, +-1.708200005778589626e-04, +-1.701886880261426686e-04, +-1.695571399712290819e-04, +-1.689253574547743843e-04, +-1.682933415187637589e-04, +-1.676610932055335346e-04, +-1.670286135576626578e-04, +-1.663959036180507006e-04, +-1.657629644299468902e-04, +-1.651297970368339910e-04, +-1.644964024825836435e-04, +-1.638627818113260436e-04, +-1.632289360674766133e-04, +-1.625948662957492558e-04, +-1.619605735411967957e-04, +-1.613260588490954034e-04, +-1.606913232651131340e-04, +-1.600563678351106783e-04, +-1.594211936053078148e-04, +-1.587858016221709782e-04, +-1.581501929324378433e-04, +-1.575143685832001040e-04, +-1.568783296217910416e-04, +-1.562420770958096482e-04, +-1.556056120531348029e-04, +-1.549689355419637063e-04, +-1.543320486107006687e-04, +-1.536949523081209605e-04, +-1.530576476831737849e-04, +-1.524201357851499774e-04, +-1.517824176635521451e-04, +-1.511444943681915676e-04, +-1.505063669491324147e-04, +-1.498680364567154361e-04, +-1.492295039415004175e-04, +-1.485907704543645445e-04, +-1.479518370463729767e-04, +-1.473127047689463563e-04, +-1.466733746736606373e-04, +-1.460338478124162756e-04, +-1.453941252373225986e-04, +-1.447542080007382459e-04, +-1.441140971552856980e-04, +-1.434737937538742606e-04, +-1.428332988495884740e-04, +-1.421926134957686146e-04, +-1.415517387460399953e-04, +-1.409106756541949506e-04, +-1.402694252743641402e-04, +-1.396279886608145352e-04, +-1.389863668681172253e-04, +-1.383445609510345806e-04, +-1.377025719645588221e-04, +-1.370604009639260620e-04, +-1.364180490046418368e-04, +-1.357755171423522499e-04, +-1.351328064329978466e-04, +-1.344899179326993941e-04, +-1.338468526977831699e-04, +-1.332036117848654755e-04, +-1.325601962507370066e-04, +-1.319166071523890360e-04, +-1.312728455470263433e-04, +-1.306289124921086037e-04, +-1.299848090452332405e-04, +-1.293405362643067831e-04, +-1.286960952073423108e-04, +-1.280514869326281275e-04, +-1.274067124986132159e-04, +-1.267617729639344511e-04, +-1.261166693874982408e-04, +-1.254714028283671718e-04, +-1.248259743457847846e-04, +-1.241803849991896132e-04, +-1.235346358482267322e-04, +-1.228887279527754038e-04, +-1.222426623728319029e-04, +-1.215964401685951010e-04, +-1.209500624004915655e-04, +-1.203035301290755288e-04, +-1.196568444151108266e-04, +-1.190100063195864564e-04, +-1.183630169035965424e-04, +-1.177158772284284273e-04, +-1.170685883555864029e-04, +-1.164211513466772719e-04, +-1.157735672635800398e-04, +-1.151258371682423420e-04, +-1.144779621228537807e-04, +-1.138299431897257953e-04, +-1.131817814313352475e-04, +-1.125334779103366996e-04, +-1.118850336895889369e-04, +-1.112364498320384432e-04, +-1.105877274008040904e-04, +-1.099388674592043791e-04, +-1.092898710706397485e-04, +-1.086407392987641244e-04, +-1.079914732072821459e-04, +-1.073420738601189791e-04, +-1.066925423212898870e-04, +-1.060428796550137866e-04, +-1.053930869255808542e-04, +-1.047431651975251436e-04, +-1.040931155354196723e-04, +-1.034429390040489041e-04, +-1.027926366682904767e-04, +-1.021422095931433498e-04, +-1.014916588438115872e-04, +-1.008409854855886993e-04, +-1.001901905838828238e-04, +-9.953927520423098280e-05, +-9.888824041233990341e-05, +-9.823708727396901833e-05, +-9.758581685510193265e-05, +-9.693443022174274290e-05, +-9.628292844008674465e-05, +-9.563131257640427381e-05, +-9.497958369706756775e-05, +-9.432774286863473674e-05, +-9.367579115773388987e-05, +-9.302372963107468176e-05, +-9.237155935553399168e-05, +-9.171928139802388127e-05, +-9.106689682566315594e-05, +-9.041440670557318257e-05, +-8.976181210505056217e-05, +-8.910911409144809813e-05, +-8.845631373221739171e-05, +-8.780341209492217782e-05, +-8.715041024726407476e-05, +-8.649730925696660173e-05, +-8.584411019185856750e-05, +-8.519081411990297797e-05, +-8.453742210907822115e-05, +-8.388393522755090257e-05, +-8.323035454347097167e-05, +-8.257668112514364922e-05, +-8.192291604091219792e-05, +-8.126906035919914922e-05, +-8.061511514851957120e-05, +-7.996108147750801104e-05, +-7.930696041480110299e-05, +-7.865275302912214973e-05, +-7.799846038930905411e-05, +-7.734408356419624950e-05, +-7.668962362277228866e-05, +-7.603508163404830282e-05, +-7.538045866708452402e-05, +-7.472575579100307873e-05, +-7.407097407503063756e-05, +-7.341611458837935639e-05, +-7.276117840042014542e-05, +-7.210616658047753807e-05, +-7.145108019800161840e-05, +-7.079592032245130668e-05, +-7.014068802332024480e-05, +-6.948538437022342394e-05, +-6.883001043277858647e-05, +-6.817456728063326320e-05, +-6.751905598347824461e-05, +-6.686347761106000852e-05, +-6.620783323320844854e-05, +-6.555212391971819463e-05, +-6.489635074043407527e-05, +-6.424051476527940167e-05, +-6.358461706415172165e-05, +-6.292865870702266118e-05, +-6.227264076387842870e-05, +-6.161656430474746237e-05, +-6.096043039963957915e-05, +-6.030424011864696151e-05, +-5.964799453181094958e-05, +-5.899169470929491047e-05, +-5.833534172117920205e-05, +-5.767893663763378473e-05, +-5.702248052879957586e-05, +-5.636597446483172292e-05, +-5.570941951591051335e-05, +-5.505281675227083094e-05, +-5.439616724408238537e-05, +-5.373947206153535742e-05, +-5.308273227486914387e-05, +-5.242594895425253961e-05, +-5.176912316995813834e-05, +-5.111225599215548710e-05, +-5.045534849108482294e-05, +-4.979840173692405482e-05, +-4.914141679990366874e-05, +-4.848439475017355380e-05, +-4.782733665797659657e-05, +-4.717024359344241835e-05, +-4.651311662676114572e-05, +-4.585595682806426344e-05, +-4.519876526745263438e-05, +-4.454154301508213108e-05, +-4.388429114104515962e-05, +-4.322701071539817121e-05, +-4.256970280817409666e-05, +-4.191236848939580402e-05, +-4.125500882910350858e-05, +-4.059762489723563937e-05, +-3.994021776371538561e-05, +-3.928278849847758491e-05, +-3.862533817138005587e-05, +-3.796786785223024236e-05, +-3.731037861087186833e-05, +-3.665287151706604158e-05, +-3.599534764051839258e-05, +-3.533780805089262032e-05, +-3.468025381782263532e-05, +-3.402268601094076247e-05, +-3.336510569974408596e-05, +-3.270751395375331885e-05, +-3.204991184239465885e-05, +-3.139230043504142171e-05, +-3.073468080102694324e-05, +-3.007705400967268384e-05, +-2.941942113016875280e-05, +-2.876178323166026844e-05, +-2.810414138327501537e-05, +-2.744649665400425344e-05, +-2.678885011287719637e-05, +-2.613120282875369530e-05, +-2.547355587049865311e-05, +-2.481591030686291119e-05, +-2.415826720652564859e-05, +-2.350062763810697224e-05, +-2.284299267019595722e-05, +-2.218536337123127263e-05, +-2.152774080958761625e-05, +-2.087012605360314489e-05, +-2.021252017146057801e-05, +-1.955492423136133756e-05, +-1.889733930131858397e-05, +-1.823976644933144738e-05, +-1.758220674325134558e-05, +-1.692466125089740067e-05, +-1.626713103992301785e-05, +-1.560961717798983546e-05, +-1.495212073256082199e-05, +-1.429464277107460215e-05, +-1.363718436082627945e-05, +-1.297974656899513237e-05, +-1.232233046273082545e-05, +-1.166493710903432151e-05, +-1.100756757478548984e-05, +-1.035022292675626232e-05, +-9.692904231623181385e-06, +-9.035612555995377486e-06, +-8.378348966295203542e-06, +-7.721114528844820330e-06, +-7.063910309893510761e-06, +-6.406737375528120544e-06, +-5.749596791700667223e-06, +-5.092489624314496982e-06, +-4.435416939105344279e-06, +-3.778379801654244015e-06, +-3.121379277473765419e-06, +-2.464416431874386247e-06, +-1.807492330138581766e-06, +-1.150608037313997103e-06, +-4.937646183875518967e-07, + 1.630368618335205530e-07, + 8.197953386794206895e-07, + 1.476509747604858670e-06, + 2.133179024161496891e-06, + 2.789802104116833335e-06, + 3.446377923368052131e-06, + 4.102905417914440453e-06, + 4.759383523976287806e-06, + 5.415811177820861412e-06, + 6.072187315969119943e-06, + 6.728510875021776152e-06, + 7.384780791778094094e-06, + 8.040996003193704337e-06, + 8.697155446367668081e-06, + 9.353258058514924022e-06, + 1.000930277708518298e-05, + 1.066528853967667113e-05, + 1.132121428400871497e-05, + 1.197707894804046820e-05, + 1.263288146981167124e-05, + 1.328862078757599960e-05, + 1.394429583977372510e-05, + 1.459990556501847499e-05, + 1.525544890208462984e-05, + 1.591092478987958487e-05, + 1.656633216756253280e-05, + 1.722166997445840188e-05, + 1.787693715003051031e-05, + 1.853213263396957076e-05, + 1.918725536616672759e-05, + 1.984230428662703079e-05, + 2.049727833558845423e-05, + 2.115217645349430951e-05, + 2.180699758098012371e-05, + 2.246174065886093055e-05, + 2.311640462810374855e-05, + 2.377098842994616564e-05, + 2.442549100581031116e-05, + 2.507991129727535432e-05, + 2.573424824618161479e-05, + 2.638850079452999950e-05, + 2.704266788454173204e-05, + 2.769674845863152882e-05, + 2.835074145946711837e-05, + 2.900464582986918646e-05, + 2.965846051294400106e-05, + 3.031218445191041780e-05, + 3.096581659030568179e-05, + 3.161935587181205698e-05, + 3.227280124037514649e-05, + 3.292615164016204573e-05, + 3.357940601554830837e-05, + 3.423256331109041426e-05, + 3.488562247164444223e-05, + 3.553858244227991661e-05, + 3.619144216825250572e-05, + 3.684420059512237604e-05, + 3.749685666858105192e-05, + 3.814940933465683800e-05, + 3.880185753954205164e-05, + 3.945420022972545815e-05, + 4.010643635189249033e-05, + 4.075856485298460179e-05, + 4.141058468017246681e-05, + 4.206249478091522519e-05, + 4.271429410286094576e-05, + 4.336598159394982206e-05, + 4.401755620238691821e-05, + 4.466901687655617137e-05, + 4.532036256513938293e-05, + 4.597159221708767008e-05, + 4.662270478160934311e-05, + 4.727369920815707792e-05, + 4.792457444639997748e-05, + 4.857532944634223101e-05, + 4.922596315823730615e-05, + 4.987647453256008491e-05, + 5.052686252009683899e-05, + 5.117712607191671518e-05, + 5.182726413928697112e-05, + 5.247727567379076709e-05, + 5.312715962729929522e-05, + 5.377691495195995492e-05, + 5.442654060018232602e-05, + 5.507603552461197172e-05, + 5.572539867826157965e-05, + 5.637462901435411164e-05, + 5.702372548643974177e-05, + 5.767268704835467019e-05, + 5.832151265420764514e-05, + 5.897020125835330514e-05, + 5.961875181550921186e-05, + 6.026716328067120097e-05, + 6.091543460908534880e-05, + 6.156356475636642141e-05, + 6.221155267832471393e-05, + 6.285939733117158821e-05, + 6.350709767134648837e-05, + 6.415465265563482741e-05, + 6.480206124114089577e-05, + 6.544932238520230418e-05, + 6.609643504550749766e-05, + 6.674339818006881306e-05, + 6.739021074720922470e-05, + 6.803687170552104985e-05, + 6.868338001398336778e-05, + 6.932973463178919795e-05, + 6.997593451855103766e-05, + 7.062197863412820282e-05, + 7.126786593875847722e-05, + 7.191359539297351763e-05, + 7.255916595758587053e-05, + 7.320457659380630983e-05, + 7.384982626315815784e-05, + 7.449491392745164386e-05, + 7.513983854887073524e-05, + 7.578459908994610006e-05, + 7.642919451347112217e-05, + 7.707362378261777523e-05, + 7.771788586091085943e-05, + 7.836197971221321560e-05, + 7.900590430071516789e-05, + 7.964965859090604981e-05, + 8.029324154769147432e-05, + 8.093665213630867115e-05, + 8.157988932229864995e-05, + 8.222295207160987707e-05, + 8.286583935049831218e-05, + 8.350855012558649722e-05, + 8.415108336383723747e-05, + 8.479343803261248720e-05, + 8.543561309957319657e-05, + 8.607760753281213989e-05, + 8.671942030068232709e-05, + 8.736105037199941076e-05, + 8.800249671587127658e-05, + 8.864375830181523211e-05, + 8.928483409971549247e-05, + 8.992572307981111859e-05, + 9.056642421266893929e-05, + 9.120693646929962863e-05, + 9.184725882107408685e-05, + 9.248739023969460059e-05, + 9.312732969731428131e-05, + 9.376707616636287463e-05, + 9.440662861975317893e-05, + 9.504598603070643452e-05, + 9.568514737287229068e-05, + 9.632411162029980319e-05, + 9.696287774735306989e-05, + 9.760144472882896147e-05, + 9.823981153994259315e-05, + 9.887797715624412574e-05, + 9.951594055372084326e-05, + 1.001537007087692754e-04, + 1.007912565981113886e-04, + 1.014286071989110025e-04, + 1.020657514887458850e-04, + 1.027026884455972222e-04, + 1.033394170478335990e-04, + 1.039759362741875129e-04, + 1.046122451038686188e-04, + 1.052483425164811939e-04, + 1.058842274919971144e-04, + 1.065198990108420085e-04, + 1.071553560538696424e-04, + 1.077905976022774606e-04, + 1.084256226377224740e-04, + 1.090604301422938837e-04, + 1.096950190985004496e-04, + 1.103293884892593644e-04, + 1.109635372978666138e-04, + 1.115974645081155341e-04, + 1.122311691042105776e-04, + 1.128646500707423624e-04, + 1.134979063927875136e-04, + 1.141309370558258034e-04, + 1.147637410457267475e-04, + 1.153963173488656556e-04, + 1.160286649520400935e-04, + 1.166607828424421137e-04, + 1.172926700077746450e-04, + 1.179243254360818824e-04, + 1.185557481159502032e-04, + 1.191869370363389638e-04, + 1.198178911866961842e-04, + 1.204486095569311580e-04, + 1.210790911373311860e-04, + 1.217093349186778570e-04, + 1.223393398922181395e-04, + 1.229691050496525243e-04, + 1.235986293830961143e-04, + 1.242279118851899455e-04, + 1.248569515489362830e-04, + 1.254857473678958914e-04, + 1.261142983360211221e-04, + 1.267426034477839032e-04, + 1.273706616980791915e-04, + 1.279984720822829772e-04, + 1.286260335962254226e-04, + 1.292533452362485422e-04, + 1.298804059991101416e-04, + 1.305072148820824807e-04, + 1.311337708829278244e-04, + 1.317600729998136039e-04, + 1.323861202314274507e-04, + 1.330119115769507149e-04, + 1.336374460360461322e-04, + 1.342627226088446242e-04, + 1.348877402959194937e-04, + 1.355124980984003750e-04, + 1.361369950178898855e-04, + 1.367612300564382557e-04, + 1.373852022166282486e-04, + 1.380089105015482997e-04, + 1.386323539147112549e-04, + 1.392555314601679145e-04, + 1.398784421424787892e-04, + 1.405010849667040983e-04, + 1.411234589383900009e-04, + 1.417455630635424931e-04, + 1.423673963487543683e-04, + 1.429889578010542963e-04, + 1.436102464280189842e-04, + 1.442312612377467213e-04, + 1.448520012387769320e-04, + 1.454724654402011705e-04, + 1.460926528516376692e-04, + 1.467125624832204156e-04, + 1.473321933455557572e-04, + 1.479515444498386272e-04, + 1.485706148076852532e-04, + 1.491894034313299663e-04, + 1.498079093334601583e-04, + 1.504261315273278197e-04, + 1.510440690267254426e-04, + 1.516617208459024833e-04, + 1.522790859996789867e-04, + 1.528961635034189689e-04, + 1.535129523730173527e-04, + 1.541294516248613701e-04, + 1.547456602759432920e-04, + 1.553615773436936240e-04, + 1.559772018461775905e-04, + 1.565925328019318000e-04, + 1.572075692300886032e-04, + 1.578223101502949943e-04, + 1.584367545827021755e-04, + 1.590509015480744658e-04, + 1.596647500677106412e-04, + 1.602782991634168846e-04, + 1.608915478575911092e-04, + 1.615044951731968567e-04, + 1.621171401336821713e-04, + 1.627294817630927097e-04, + 1.633415190860427113e-04, + 1.639532511277058907e-04, + 1.645646769138014249e-04, + 1.651757954705686910e-04, + 1.657866058248785867e-04, + 1.663971070041529471e-04, + 1.670072980363375209e-04, + 1.676171779500019066e-04, + 1.682267457742413512e-04, + 1.688360005387380073e-04, + 1.694449412737297355e-04, + 1.700535670100714698e-04, + 1.706618767791371792e-04, + 1.712698696129460682e-04, + 1.718775445440001097e-04, + 1.724849006054772493e-04, + 1.730919368310672034e-04, + 1.736986522550848662e-04, + 1.743050459124421752e-04, + 1.749111168385688285e-04, + 1.755168640695240661e-04, + 1.761222866419678032e-04, + 1.767273835931519566e-04, + 1.773321539608787298e-04, + 1.779365967836131263e-04, + 1.785407111003183402e-04, + 1.791444959506507506e-04, + 1.797479503747959355e-04, + 1.803510734135804533e-04, + 1.809538641084460387e-04, + 1.815563215013677183e-04, + 1.821584446349668116e-04, + 1.827602325524971618e-04, + 1.833616842977651756e-04, + 1.839627989152271305e-04, + 1.845635754499629641e-04, + 1.851640129475963417e-04, + 1.857641104544057321e-04, + 1.863638670172974659e-04, + 1.869632816837930498e-04, + 1.875623535020207373e-04, + 1.881610815206846829e-04, + 1.887594647891803013e-04, + 1.893575023575095641e-04, + 1.899551932762588279e-04, + 1.905525365966798243e-04, + 1.911495313706654817e-04, + 1.917461766506687194e-04, + 1.923424714898132521e-04, + 1.929384149418671363e-04, + 1.935340060612316835e-04, + 1.941292439029291823e-04, + 1.947241275225770126e-04, + 1.953186559764974483e-04, + 1.959128283216376705e-04, + 1.965066436155457250e-04, + 1.971001009164777501e-04, + 1.976931992832523411e-04, + 1.982859377753750979e-04, + 1.988783154530086470e-04, + 1.994703313769651605e-04, + 2.000619846086655899e-04, + 2.006532742102481136e-04, + 2.012441992444094908e-04, + 2.018347587745942823e-04, + 2.024249518648348219e-04, + 2.030147775798599619e-04, + 2.036042349850711937e-04, + 2.041933231464611428e-04, + 2.047820411307261904e-04, + 2.053703880052352754e-04, + 2.059583628380238227e-04, + 2.065459646977519206e-04, + 2.071331926538132824e-04, + 2.077200457761760593e-04, + 2.083065231355736319e-04, + 2.088926238033415200e-04, + 2.094783468515433390e-04, + 2.100636913528762040e-04, + 2.106486563807269722e-04, + 2.112332410091448127e-04, + 2.118174443128993743e-04, + 2.124012653673867576e-04, + 2.129847032487236513e-04, + 2.135677570337235877e-04, + 2.141504257998187721e-04, + 2.147327086251666056e-04, + 2.153146045886259407e-04, + 2.158961127697433396e-04, + 2.164772322487427470e-04, + 2.170579621065015289e-04, + 2.176383014246545834e-04, + 2.182182492855191784e-04, + 2.187978047720694186e-04, + 2.193769669680416842e-04, + 2.199557349577808095e-04, + 2.205341078264229338e-04, + 2.211120846597404877e-04, + 2.216896645442634065e-04, + 2.222668465671717134e-04, + 2.228436298164177898e-04, + 2.234200133805708743e-04, + 2.239959963490001837e-04, + 2.245715778117208486e-04, + 2.251467568594973186e-04, + 2.257215325838228981e-04, + 2.262959040768390280e-04, + 2.268698704314428376e-04, + 2.274434307412615311e-04, + 2.280165841006426839e-04, + 2.285893296046145602e-04, + 2.291616663489930161e-04, + 2.297335934302252656e-04, + 2.303051099455752251e-04, + 2.308762149929674426e-04, + 2.314469076710938913e-04, + 2.320171870793874883e-04, + 2.325870523179473929e-04, + 2.331565024876440116e-04, + 2.337255366900936279e-04, + 2.342941540276464757e-04, + 2.348623536033509884e-04, + 2.354301345210578543e-04, + 2.359974958852783394e-04, + 2.365644368013037659e-04, + 2.371309563751806298e-04, + 2.376970537136959916e-04, + 2.382627279243712147e-04, + 2.388279781154342099e-04, + 2.393928033959248202e-04, + 2.399572028756171370e-04, + 2.405211756649997684e-04, + 2.410847208753492932e-04, + 2.416478376187086588e-04, + 2.422105250078105006e-04, + 2.427727821561841799e-04, + 2.433346081781256431e-04, + 2.438960021886904831e-04, + 2.444569633036824193e-04, + 2.450174906396274392e-04, + 2.455775833138785060e-04, + 2.461372404445396635e-04, + 2.466964611504413171e-04, + 2.472552445512451839e-04, + 2.478135897672931014e-04, + 2.483714959197840227e-04, + 2.489289621306250478e-04, + 2.494859875225465657e-04, + 2.500425712190015317e-04, + 2.505987123442815858e-04, + 2.511544100233659149e-04, + 2.517096633821010675e-04, + 2.522644715470490572e-04, + 2.528188336455903075e-04, + 2.533727488058989323e-04, + 2.539262161568720997e-04, + 2.544792348282263637e-04, + 2.550318039504789617e-04, + 2.555839226549342074e-04, + 2.561355900736462490e-04, + 2.566868053395238028e-04, + 2.572375675861784190e-04, + 2.577878759481025623e-04, + 2.583377295605203709e-04, + 2.588871275595013900e-04, + 2.594360690818744313e-04, + 2.599845532652788564e-04, + 2.605325792481436508e-04, + 2.610801461697318773e-04, + 2.616272531700628836e-04, + 2.621738993899952984e-04, + 2.627200839712051845e-04, + 2.632658060561131265e-04, + 2.638110647879854951e-04, + 2.643558593109085345e-04, + 2.649001887697797976e-04, + 2.654440523102952437e-04, + 2.659874490789292893e-04, + 2.665303782230297298e-04, + 2.670728388907491640e-04, + 2.676148302310200574e-04, + 2.681563513936542176e-04, + 2.686974015291982158e-04, + 2.692379797891043662e-04, + 2.697780853255877186e-04, + 2.703177172917222825e-04, + 2.708568748414063860e-04, + 2.713955571293554664e-04, + 2.719337633110733925e-04, + 2.724714925429673365e-04, + 2.730087439822124107e-04, + 2.735455167868537456e-04, + 2.740818101157806858e-04, + 2.746176231286570754e-04, + 2.751529549860164516e-04, + 2.756878048492429623e-04, + 2.762221718805598736e-04, + 2.767560552429908639e-04, + 2.772894541004626979e-04, + 2.778223676176609191e-04, + 2.783547949601957328e-04, + 2.788867352944643667e-04, + 2.794181877877448001e-04, + 2.799491516081750015e-04, + 2.804796259246827264e-04, + 2.810096099070770242e-04, + 2.815391027260354443e-04, + 2.820681035530868516e-04, + 2.825966115605740760e-04, + 2.831246259217607602e-04, + 2.836521458106780534e-04, + 2.841791704023006321e-04, + 2.847056988724035848e-04, + 2.852317303976675800e-04, + 2.857572641556003156e-04, + 2.862822993245838984e-04, + 2.868068350838523474e-04, + 2.873308706135414121e-04, + 2.878544050946055775e-04, + 2.883774377089254543e-04, + 2.888999676391689462e-04, + 2.894219940689577841e-04, + 2.899435161827257118e-04, + 2.904645331658135712e-04, + 2.909850442044397572e-04, + 2.915050484856812445e-04, + 2.920245451974614443e-04, + 2.925435335286378623e-04, + 2.930620126689364503e-04, + 2.935799818089284579e-04, + 2.940974401401254637e-04, + 2.946143868548395666e-04, + 2.951308211463511124e-04, + 2.956467422087640071e-04, + 2.961621492371184733e-04, + 2.966770414272954784e-04, + 2.971914179761237450e-04, + 2.977052780812408650e-04, + 2.982186209412577183e-04, + 2.987314457556198579e-04, + 2.992437517247027029e-04, + 2.997555380497872522e-04, + 3.002668039329952493e-04, + 3.007775485773802552e-04, + 3.012877711869063981e-04, + 3.017974709664392120e-04, + 3.023066471217109963e-04, + 3.028152988594137317e-04, + 3.033234253870644229e-04, + 3.038310259131646925e-04, + 3.043380996470666116e-04, + 3.048446457990639348e-04, + 3.053506635803709046e-04, + 3.058561522030547051e-04, + 3.063611108801294084e-04, + 3.068655388255311467e-04, + 3.073694352541135036e-04, + 3.078727993816068030e-04, + 3.083756304247182892e-04, + 3.088779276010034862e-04, + 3.093796901289691970e-04, + 3.098809172280562107e-04, + 3.103816081186247739e-04, + 3.108817620219475977e-04, + 3.113813781601857886e-04, + 3.118804557564823607e-04, + 3.123789940348960996e-04, + 3.128769922203781433e-04, + 3.133744495388646276e-04, + 3.138713652171428413e-04, + 3.143677384830090315e-04, + 3.148635685651367819e-04, + 3.153588546931643450e-04, + 3.158535960976676998e-04, + 3.163477920101442887e-04, + 3.168414416629954534e-04, + 3.173345442896181043e-04, + 3.178270991243338679e-04, + 3.183191054023764015e-04, + 3.188105623599721120e-04, + 3.193014692342130336e-04, + 3.197918252632159339e-04, + 3.202816296859831028e-04, + 3.207708817425106097e-04, + 3.212595806736962011e-04, + 3.217477257214415402e-04, + 3.222353161285214525e-04, + 3.227223511387380993e-04, + 3.232088299967920118e-04, + 3.236947519483685020e-04, + 3.241801162401192313e-04, + 3.246649221195965079e-04, + 3.251491688353430587e-04, + 3.256328556368685021e-04, + 3.261159817746441978e-04, + 3.265985465000664388e-04, + 3.270805490655505051e-04, + 3.275619887243938380e-04, + 3.280428647309368271e-04, + 3.285231763404308628e-04, + 3.290029228091348305e-04, + 3.294821033942433902e-04, + 3.299607173539294237e-04, + 3.304387639473253314e-04, + 3.309162424345666177e-04, + 3.313931520767168099e-04, + 3.318694921358668250e-04, + 3.323452618750050830e-04, + 3.328204605581715713e-04, + 3.332950874503287707e-04, + 3.337691418174471448e-04, + 3.342426229264792818e-04, + 3.347155300453430351e-04, + 3.351878624429061276e-04, + 3.356596193890734841e-04, + 3.361308001547189811e-04, + 3.366014040116720564e-04, + 3.370714302327980491e-04, + 3.375408780918760635e-04, + 3.380097468637461504e-04, + 3.384780358241840266e-04, + 3.389457442499889503e-04, + 3.394128714189466409e-04, + 3.398794166098281951e-04, + 3.403453791023643366e-04, + 3.408107581773435371e-04, + 3.412755531164978493e-04, + 3.417397632025859027e-04, + 3.422033877193745265e-04, + 3.426664259515777087e-04, + 3.431288771849393755e-04, + 3.435907407062152846e-04, + 3.440520158031635384e-04, + 3.445127017645126547e-04, + 3.449727978800488449e-04, + 3.454323034404886195e-04, + 3.458912177376304150e-04, + 3.463495400642248138e-04, + 3.468072697140643168e-04, + 3.472644059819600870e-04, + 3.477209481636835652e-04, + 3.481768955560459421e-04, + 3.486322474568847142e-04, + 3.490870031650500772e-04, + 3.495411619803946257e-04, + 3.499947232037599093e-04, + 3.504476861370524354e-04, + 3.509000500831898381e-04, + 3.513518143460743698e-04, + 3.518029782306737285e-04, + 3.522535410429519938e-04, + 3.527035020898676757e-04, + 3.531528606794543789e-04, + 3.536016161207560220e-04, + 3.540497677238177844e-04, + 3.544973147997566333e-04, + 3.549442566606490009e-04, + 3.553905926196683691e-04, + 3.558363219909716998e-04, + 3.562814440897732688e-04, + 3.567259582323203254e-04, + 3.571698637358836060e-04, + 3.576131599187358122e-04, + 3.580558461002375341e-04, + 3.584979216007733909e-04, + 3.589393857417343581e-04, + 3.593802378456018476e-04, + 3.598204772358242170e-04, + 3.602601032369611312e-04, + 3.606991151745631073e-04, + 3.611375123752632384e-04, + 3.615752941666969624e-04, + 3.620124598775936232e-04, + 3.624490088376611653e-04, + 3.628849403777189490e-04, + 3.633202538295869448e-04, + 3.637549485261626575e-04, + 3.641890238014016648e-04, + 3.646224789902625940e-04, + 3.650553134287843173e-04, + 3.654875264540661107e-04, + 3.659191174042625045e-04, + 3.663500856185531417e-04, + 3.667804304372198113e-04, + 3.672101512015356968e-04, + 3.676392472538977572e-04, + 3.680677179377125604e-04, + 3.684955625974740750e-04, + 3.689227805787494130e-04, + 3.693493712281165965e-04, + 3.697753338932446799e-04, + 3.702006679228887092e-04, + 3.706253726668246149e-04, + 3.710494474759448930e-04, + 3.714728917021418368e-04, + 3.718957046984391044e-04, + 3.723178858188820519e-04, + 3.727394344186180184e-04, + 3.731603498538568070e-04, + 3.735806314818769730e-04, + 3.740002786609972012e-04, + 3.744192907506587050e-04, + 3.748376671113655412e-04, + 3.752554071046684554e-04, + 3.756725100932448960e-04, + 3.760889754407784513e-04, + 3.765048025121010963e-04, + 3.769199906730733886e-04, + 3.773345392906657294e-04, + 3.777484477329309874e-04, + 3.781617153689901330e-04, + 3.785743415690224806e-04, + 3.789863257043377879e-04, + 3.793976671473185767e-04, + 3.798083652714078265e-04, + 3.802184194511821591e-04, + 3.806278290622455858e-04, + 3.810365934813225871e-04, + 3.814447120862373493e-04, + 3.818521842558997791e-04, + 3.822590093702858249e-04, + 3.826651868105122325e-04, + 3.830707159587207525e-04, + 3.834755961982130152e-04, + 3.838798269133411340e-04, + 3.842834074895774745e-04, + 3.846863373135050047e-04, + 3.850886157727552244e-04, + 3.854902422560876917e-04, + 3.858912161533680678e-04, + 3.862915368555683879e-04, + 3.866912037547468408e-04, + 3.870902162440392042e-04, + 3.874885737177313229e-04, + 3.878862755712037067e-04, + 3.882833212009136948e-04, + 3.886797100044613214e-04, + 3.890754413805270280e-04, + 3.894705147289074425e-04, + 3.898649294505023141e-04, + 3.902586849473418896e-04, + 3.906517806225374197e-04, + 3.910442158803516320e-04, + 3.914359901260998516e-04, + 3.918271027662733295e-04, + 3.922175532084309305e-04, + 3.926073408612760032e-04, + 3.929964651346255886e-04, + 3.933849254394052161e-04, + 3.937727211876325861e-04, + 3.941598517924872844e-04, + 3.945463166682595534e-04, + 3.949321152303354385e-04, + 3.953172468952642800e-04, + 3.957017110806552258e-04, + 3.960855072053044625e-04, + 3.964686346890878795e-04, + 3.968510929530293736e-04, + 3.972328814192829056e-04, + 3.976139995111168876e-04, + 3.979944466529024738e-04, + 3.983742222701908641e-04, + 3.987533257896181110e-04, + 3.991317566389775986e-04, + 3.995095142472021533e-04, + 3.998865980443118396e-04, + 4.002630074614864386e-04, + 4.006387419310473421e-04, + 4.010138008864494214e-04, + 4.013881837622740333e-04, + 4.017618899942134087e-04, + 4.021349190191390649e-04, + 4.025072702750515530e-04, + 4.028789432010655507e-04, + 4.032499372374585963e-04, + 4.036202518256577537e-04, + 4.039898864081876246e-04, + 4.043588404287416348e-04, + 4.047271133321638198e-04, + 4.050947045644395545e-04, + 4.054616135726927888e-04, + 4.058278398051673452e-04, + 4.061933827112913201e-04, + 4.065582417416369141e-04, + 4.069224163478928394e-04, + 4.072859059829340338e-04, + 4.076487101007651736e-04, + 4.080108281565163371e-04, + 4.083722596065122849e-04, + 4.087330039082189546e-04, + 4.090930605202294746e-04, + 4.094524289023337158e-04, + 4.098111085154151835e-04, + 4.101690988215708224e-04, + 4.105263992840137090e-04, + 4.108830093671352848e-04, + 4.112389285364864916e-04, + 4.115941562587667663e-04, + 4.119486920018107599e-04, + 4.123025352346519797e-04, + 4.126556854274771448e-04, + 4.130081420516101397e-04, + 4.133599045795789098e-04, + 4.137109724850115402e-04, + 4.140613452427624030e-04, + 4.144110223288080194e-04, + 4.147600032203218700e-04, + 4.151082873956086919e-04, + 4.154558743341837338e-04, + 4.158027635166725760e-04, + 4.161489544249232907e-04, + 4.164944465419161287e-04, + 4.168392393518205474e-04, + 4.171833323399864297e-04, + 4.175267249928976796e-04, + 4.178694167982300103e-04, + 4.182114072448403735e-04, + 4.185526958227637063e-04, + 4.188932820231946086e-04, + 4.192331653384827892e-04, + 4.195723452621948112e-04, + 4.199108212890605867e-04, + 4.202485929149680642e-04, + 4.205856596370049702e-04, + 4.209220209534439015e-04, + 4.212576763637026979e-04, + 4.215926253683980555e-04, + 4.219268674693449307e-04, + 4.222604021695091606e-04, + 4.225932289730766349e-04, + 4.229253473853631989e-04, + 4.232567569129217183e-04, + 4.235874570634536084e-04, + 4.239174473458642910e-04, + 4.242467272702480697e-04, + 4.245752963478776677e-04, + 4.249031540911906205e-04, + 4.252303000138502628e-04, + 4.255567336307018180e-04, + 4.258824544577566231e-04, + 4.262074620122540368e-04, + 4.265317558125719384e-04, + 4.268553353783332508e-04, + 4.271782002303147049e-04, + 4.275003498905084222e-04, + 4.278217838821006644e-04, + 4.281425017294663042e-04, + 4.284625029581502851e-04, + 4.287817870949324028e-04, + 4.291003536677826359e-04, + 4.294182022058418472e-04, + 4.297353322394906845e-04, + 4.300517433002611100e-04, + 4.303674349209071987e-04, + 4.306824066353910976e-04, + 4.309966579788746780e-04, + 4.313101884877140594e-04, + 4.316229976994464374e-04, + 4.319350851528464073e-04, + 4.322464503878859030e-04, + 4.325570929457190727e-04, + 4.328670123687260261e-04, + 4.331762082005004202e-04, + 4.334846799858040859e-04, + 4.337924272706296944e-04, + 4.340994496021818925e-04, + 4.344057465288748087e-04, + 4.347113176003231626e-04, + 4.350161623673312605e-04, + 4.353202803819472056e-04, + 4.356236711974254927e-04, + 4.359263343682049990e-04, + 4.362282694499702417e-04, + 4.365294759995944573e-04, + 4.368299535751725068e-04, + 4.371297017360041256e-04, + 4.374287200426284000e-04, + 4.377270080567667392e-04, + 4.380245653413935105e-04, + 4.383213914606527185e-04, + 4.386174859799495660e-04, + 4.389128484658759151e-04, + 4.392074784862596182e-04, + 4.395013756101517790e-04, + 4.397945394078120614e-04, + 4.400869694507005578e-04, + 4.403786653115354145e-04, + 4.406696265642427962e-04, + 4.409598527839563974e-04, + 4.412493435470652564e-04, + 4.415380984311317891e-04, + 4.418261170149916442e-04, + 4.421133988786711956e-04, + 4.423999436034476069e-04, + 4.426857507718040541e-04, + 4.429708199674555293e-04, + 4.432551507753397881e-04, + 4.435387427816403342e-04, + 4.438215955737394194e-04, + 4.441037087402747476e-04, + 4.443850818711118813e-04, + 4.446657145573184385e-04, + 4.449456063912101702e-04, + 4.452247569663403902e-04, + 4.455031658774938493e-04, + 4.457808327206824522e-04, + 4.460577570931281276e-04, + 4.463339385933209956e-04, + 4.466093768209780592e-04, + 4.468840713770312243e-04, + 4.471580218636651382e-04, + 4.474312278843098171e-04, + 4.477036890435948384e-04, + 4.479754049474092971e-04, + 4.482463752028845129e-04, + 4.485165994183887175e-04, + 4.487860772035236396e-04, + 4.490548081691101388e-04, + 4.493227919272461024e-04, + 4.495900280912381404e-04, + 4.498565162756518925e-04, + 4.501222560962959821e-04, + 4.503872471702106322e-04, + 4.506514891156643580e-04, + 4.509149815521946796e-04, + 4.511777241005772215e-04, + 4.514397163828170936e-04, + 4.517009580221880306e-04, + 4.519614486431708638e-04, + 4.522211878715325052e-04, + 4.524801753342532515e-04, + 4.527384106595833254e-04, + 4.529958934770133856e-04, + 4.532526234172802181e-04, + 4.535086001123486850e-04, + 4.537638231954621397e-04, + 4.540182923011088704e-04, + 4.542720070650050788e-04, + 4.545249671241498486e-04, + 4.547771721167502275e-04, + 4.550286216823056862e-04, + 4.552793154615368326e-04, + 4.555292530964413561e-04, + 4.557784342302575445e-04, + 4.560268585074578329e-04, + 4.562745255737988398e-04, + 4.565214350762864556e-04, + 4.567675866631585495e-04, + 4.570129799839319157e-04, + 4.572576146893796135e-04, + 4.575014904315050546e-04, + 4.577446068635845043e-04, + 4.579869636401542876e-04, + 4.582285604170134455e-04, + 4.584693968512079058e-04, + 4.587094726010281518e-04, + 4.589487873260509102e-04, + 4.591873406871049444e-04, + 4.594251323462665007e-04, + 4.596621619668840824e-04, + 4.598984292135749265e-04, + 4.601339337521897664e-04, + 4.603686752498547369e-04, + 4.606026533749734342e-04, + 4.608358677971863661e-04, + 4.610683181874276025e-04, + 4.613000042178530546e-04, + 4.615309255619247180e-04, + 4.617610818943377053e-04, + 4.619904728910704996e-04, + 4.622190982293669019e-04, + 4.624469575877291467e-04, + 4.626740506459129146e-04, + 4.629003770849645749e-04, + 4.631259365871906648e-04, + 4.633507288361539867e-04, + 4.635747535167091156e-04, + 4.637980103149398950e-04, + 4.640204989182387463e-04, + 4.642422190152396648e-04, + 4.644631702958629434e-04, + 4.646833524513036798e-04, + 4.649027651740014733e-04, + 4.651214081576807028e-04, + 4.653392810973428287e-04, + 4.655563836892646586e-04, + 4.657727156309747116e-04, + 4.659882766213018987e-04, + 4.662030663603173013e-04, + 4.664170845493792201e-04, + 4.666303308911279703e-04, + 4.668428050894739560e-04, + 4.670545068495989167e-04, + 4.672654358779465490e-04, + 4.674755918822563337e-04, + 4.676849745715410929e-04, + 4.678935836560761479e-04, + 4.681014188474259905e-04, + 4.683084798584377781e-04, + 4.685147664032086987e-04, + 4.687202781971337305e-04, + 4.689250149568867767e-04, + 4.691289764004196892e-04, + 4.693321622469601010e-04, + 4.695345722170000415e-04, + 4.697362060323331248e-04, + 4.699370634160320525e-04, + 4.701371440924305076e-04, + 4.703364477871656009e-04, + 4.705349742271392735e-04, + 4.707327231405404144e-04, + 4.709296942568338019e-04, + 4.711258873067801609e-04, + 4.713213020224082451e-04, + 4.715159381370454114e-04, + 4.717097953852751732e-04, + 4.719028735029943923e-04, + 4.720951722273623212e-04, + 4.722866912968343763e-04, + 4.724774304511571502e-04, + 4.726673894313368073e-04, + 4.728565679796788200e-04, + 4.730449658397808672e-04, + 4.732325827565228051e-04, + 4.734194184760605415e-04, + 4.736054727458579119e-04, + 4.737907453146322518e-04, + 4.739752359324216177e-04, + 4.741589443505272159e-04, + 4.743418703215592099e-04, + 4.745240135993983939e-04, + 4.747053739392189612e-04, + 4.748859510974838419e-04, + 4.750657448319532141e-04, + 4.752447549016608139e-04, + 4.754229810669444558e-04, + 4.756004230894335101e-04, + 4.757770807320265685e-04, + 4.759529537589276020e-04, + 4.761280419356357695e-04, + 4.763023450289385332e-04, + 4.764758628069113333e-04, + 4.766485950389108116e-04, + 4.768205414956051152e-04, + 4.769917019489518326e-04, + 4.771620761721846586e-04, + 4.773316639398489012e-04, + 4.775004650277806656e-04, + 4.776684792130940602e-04, + 4.778357062742062417e-04, + 4.780021459908327533e-04, + 4.781677981439848681e-04, + 4.783326625159634092e-04, + 4.784967388903506183e-04, + 4.786600270520514639e-04, + 4.788225267872425750e-04, + 4.789842378834088875e-04, + 4.791451601293377893e-04, + 4.793052933150896300e-04, + 4.794646372320337710e-04, + 4.796231916728420255e-04, + 4.797809564314811778e-04, + 4.799379313032046891e-04, + 4.800941160845815917e-04, + 4.802495105734529580e-04, + 4.804041145689816653e-04, + 4.805579278716151539e-04, + 4.807109502831030993e-04, + 4.808631816065026161e-04, + 4.810146216461529968e-04, + 4.811652702076974495e-04, + 4.813151270980865672e-04, + 4.814641921255684623e-04, + 4.816124650996809597e-04, + 4.817599458312806534e-04, + 4.819066341324972622e-04, + 4.820525298167882729e-04, + 4.821976326988916149e-04, + 4.823419425948610598e-04, + 4.824854593220460550e-04, + 4.826281826990841883e-04, + 4.827701125459345276e-04, + 4.829112486838508947e-04, + 4.830515909353825165e-04, + 4.831911391243883360e-04, + 4.833298930760358196e-04, + 4.834678526167736357e-04, + 4.836050175743668907e-04, + 4.837413877778862876e-04, + 4.838769630577028670e-04, + 4.840117432454925069e-04, + 4.841457281742200932e-04, + 4.842789176781736181e-04, + 4.844113115929399478e-04, + 4.845429097554015160e-04, + 4.846737120037556768e-04, + 4.848037181774974658e-04, + 4.849329281174267559e-04, + 4.850613416656471191e-04, + 4.851889586655758007e-04, + 4.853157789619218731e-04, + 4.854418024007162136e-04, + 4.855670288292737204e-04, + 4.856914580962352706e-04, + 4.858150900515315084e-04, + 4.859379245464092454e-04, + 4.860599614334256595e-04, + 4.861812005664280212e-04, + 4.863016418005762444e-04, + 4.864212849923427238e-04, + 4.865401299995071312e-04, + 4.866581766811449764e-04, + 4.867754248976537915e-04, + 4.868918745107175144e-04, + 4.870075253833489352e-04, + 4.871223773798548937e-04, + 4.872364303658533553e-04, + 4.873496842082761758e-04, + 4.874621387753510495e-04, + 4.875737939366157664e-04, + 4.876846495629272109e-04, + 4.877947055264377266e-04, + 4.879039617006158242e-04, + 4.880124179602388632e-04, + 4.881200741813838907e-04, + 4.882269302414408139e-04, + 4.883329860191115875e-04, + 4.884382413944092375e-04, + 4.885426962486502179e-04, + 4.886463504644538141e-04, + 4.887492039257614962e-04, + 4.888512565178208726e-04, + 4.889525081271804859e-04, + 4.890529586417068347e-04, + 4.891526079505786277e-04, + 4.892514559442717129e-04, + 4.893495025145785937e-04, + 4.894467475546040915e-04, + 4.895431909587630694e-04, + 4.896388326227804318e-04, + 4.897336724436777890e-04, + 4.898277103198050075e-04, + 4.899209461508160319e-04, + 4.900133798376720296e-04, + 4.901050112826509314e-04, + 4.901958403893310603e-04, + 4.902858670626081532e-04, + 4.903750912086878803e-04, + 4.904635127350895308e-04, + 4.905511315506350632e-04, + 4.906379475654698129e-04, + 4.907239606910319182e-04, + 4.908091708400876647e-04, + 4.908935779267030799e-04, + 4.909771818662619306e-04, + 4.910599825754611691e-04, + 4.911419799722961882e-04, + 4.912231739760832645e-04, + 4.913035645074517515e-04, + 4.913831514883372498e-04, + 4.914619348419864853e-04, + 4.915399144929665258e-04, + 4.916170903671369160e-04, + 4.916934623916912033e-04, + 4.917690304951140030e-04, + 4.918437946072191621e-04, + 4.919177546591207029e-04, + 4.919909105832462673e-04, + 4.920632623133344057e-04, + 4.921348097844420585e-04, + 4.922055529329273172e-04, + 4.922754916964668798e-04, + 4.923446260140523648e-04, + 4.924129558259756744e-04, + 4.924804810738475343e-04, + 4.925472017005904464e-04, + 4.926131176504399897e-04, + 4.926782288689413513e-04, + 4.927425353029436881e-04, + 4.928060369006230035e-04, + 4.928687336114573195e-04, + 4.929306253862375184e-04, + 4.929917121770697281e-04, + 4.930519939373629625e-04, + 4.931114706218505880e-04, + 4.931701421865648458e-04, + 4.932280085888610284e-04, + 4.932850697873967724e-04, + 4.933413257421501641e-04, + 4.933967764143997901e-04, + 4.934514217667465303e-04, + 4.935052617630945838e-04, + 4.935582963686654554e-04, + 4.936105255499916673e-04, + 4.936619492749127472e-04, + 4.937125675125804327e-04, + 4.937623802334640925e-04, + 4.938113874093387999e-04, + 4.938595890132884770e-04, + 4.939069850197195556e-04, + 4.939535754043336557e-04, + 4.939993601441570754e-04, + 4.940443392175194320e-04, + 4.940885126040661310e-04, + 4.941318802847527274e-04, + 4.941744422418424326e-04, + 4.942161984589093669e-04, + 4.942571489208426793e-04, + 4.942972936138423194e-04, + 4.943366325254143750e-04, + 4.943751656443798543e-04, + 4.944128929608647112e-04, + 4.944498144663140487e-04, + 4.944859301534749877e-04, + 4.945212400164094614e-04, + 4.945557440504923718e-04, + 4.945894422523972782e-04, + 4.946223346201227434e-04, + 4.946544211529684812e-04, + 4.946857018515446805e-04, + 4.947161767177752582e-04, + 4.947458457548918956e-04, + 4.947747089674338220e-04, + 4.948027663612496576e-04, + 4.948300179435030513e-04, + 4.948564637226629233e-04, + 4.948821037085095360e-04, + 4.949069379121265799e-04, + 4.949309663459136414e-04, + 4.949541890235782888e-04, + 4.949766059601323851e-04, + 4.949982171719037984e-04, + 4.950190226765202465e-04, + 4.950390224929271865e-04, + 4.950582166413704677e-04, + 4.950766051434115104e-04, + 4.950941880219131026e-04, + 4.951109653010510011e-04, + 4.951269370063062338e-04, + 4.951421031644690027e-04, + 4.951564638036370578e-04, + 4.951700189532155880e-04, + 4.951827686439175475e-04, + 4.951947129077611609e-04, + 4.952058517780740443e-04, + 4.952161852894903854e-04, + 4.952257134779521367e-04, + 4.952344363807050041e-04, + 4.952423540363041924e-04, + 4.952494664846093103e-04, + 4.952557737667880565e-04, + 4.952612759253131837e-04, + 4.952659730039649924e-04, + 4.952698650478263437e-04, + 4.952729521032875381e-04, + 4.952752342180455564e-04, + 4.952767114411023254e-04, + 4.952773838227629826e-04, + 4.952772514146394547e-04, + 4.952763142696483970e-04, + 4.952745724420114107e-04, + 4.952720259872511396e-04, + 4.952686749622009195e-04, + 4.952645194249926351e-04, + 4.952595594350644179e-04, + 4.952537950531575020e-04, + 4.952472263413188261e-04, + 4.952398533628952874e-04, + 4.952316761825398131e-04, + 4.952226948662069150e-04, + 4.952129094811540989e-04, + 4.952023200959425157e-04, + 4.951909267804335997e-04, + 4.951787296057923215e-04, + 4.951657286444885973e-04, + 4.951519239702886158e-04, + 4.951373156582632943e-04, + 4.951219037847860022e-04, + 4.951056884275289831e-04, + 4.950886696654653064e-04, + 4.950708475788721200e-04, + 4.950522222493250121e-04, + 4.950327937596971442e-04, + 4.950125621941681413e-04, + 4.949915276382120576e-04, + 4.949696901786047485e-04, + 4.949470499034209440e-04, + 4.949236069020373921e-04, + 4.948993612651246196e-04, + 4.948743130846566893e-04, + 4.948484624539023101e-04, + 4.948218094674319920e-04, + 4.947943542211139271e-04, + 4.947660968121116035e-04, + 4.947370373388874920e-04, + 4.947071759012026124e-04, + 4.946765126001128471e-04, + 4.946450475379697001e-04, + 4.946127808184292958e-04, + 4.945797125464330805e-04, + 4.945458428282271208e-04, + 4.945111717713477923e-04, + 4.944756994846312122e-04, + 4.944394260782046741e-04, + 4.944023516634954299e-04, + 4.943644763532207154e-04, + 4.943258002613952311e-04, + 4.942863235033259379e-04, + 4.942460461956153100e-04, + 4.942049684561604676e-04, + 4.941630904041486227e-04, + 4.941204121600641271e-04, + 4.940769338456777382e-04, + 4.940326555840609309e-04, + 4.939875774995746219e-04, + 4.939416997178665671e-04, + 4.938950223658837221e-04, + 4.938475455718603158e-04, + 4.937992694653212111e-04, + 4.937501941770843991e-04, + 4.937003198392590471e-04, + 4.936496465852401863e-04, + 4.935981745497165177e-04, + 4.935459038686669433e-04, + 4.934928346793541684e-04, + 4.934389671203391224e-04, + 4.933843013314624182e-04, + 4.933288374538571464e-04, + 4.932725756299461643e-04, + 4.932155160034349404e-04, + 4.931576587193220711e-04, + 4.930990039238912579e-04, + 4.930395517647117405e-04, + 4.929793023906381888e-04, + 4.929182559518138470e-04, + 4.928564125996676062e-04, + 4.927937724869154140e-04, + 4.927303357675534437e-04, + 4.926661025968685033e-04, + 4.926010731314259998e-04, + 4.925352475290775299e-04, + 4.924686259489646735e-04, + 4.924012085515037072e-04, + 4.923329954983994821e-04, + 4.922639869526344728e-04, + 4.921941830784811378e-04, + 4.921235840414837047e-04, + 4.920521900084796375e-04, + 4.919800011475814220e-04, + 4.919070176281827456e-04, + 4.918332396209574133e-04, + 4.917586672978606485e-04, + 4.916833008321307196e-04, + 4.916071403982814588e-04, + 4.915301861721041053e-04, + 4.914524383306740274e-04, + 4.913738970523382540e-04, + 4.912945625167339063e-04, + 4.912144349047615263e-04, + 4.911335143986081701e-04, + 4.910518011817358074e-04, + 4.909692954388792611e-04, + 4.908859973560527126e-04, + 4.908019071205513284e-04, + 4.907170249209349966e-04, + 4.906313509470458913e-04, + 4.905448853899997989e-04, + 4.904576284421815644e-04, + 4.903695802972601620e-04, + 4.902807411501667939e-04, + 4.901911111971166829e-04, + 4.901006906355846781e-04, + 4.900094796643321426e-04, + 4.899174784833781144e-04, + 4.898246872940263024e-04, + 4.897311062988417762e-04, + 4.896367357016652780e-04, + 4.895415757076076926e-04, + 4.894456265230392056e-04, + 4.893488883556171678e-04, + 4.892513614142598565e-04, + 4.891530459091482114e-04, + 4.890539420517359169e-04, + 4.889540500547486434e-04, + 4.888533701321676759e-04, + 4.887519024992581030e-04, + 4.886496473725341228e-04, + 4.885466049697885331e-04, + 4.884427755100703965e-04, + 4.883381592137006535e-04, + 4.882327563022614966e-04, + 4.881265669986011415e-04, + 4.880195915268279176e-04, + 4.879118301123183460e-04, + 4.878032829817043449e-04, + 4.876939503628926380e-04, + 4.875838324850394916e-04, + 4.874729295785684420e-04, + 4.873612418751649281e-04, + 4.872487696077684857e-04, + 4.871355130105834807e-04, + 4.870214723190798142e-04, + 4.869066477699784479e-04, + 4.867910396012553619e-04, + 4.866746480521574381e-04, + 4.865574733631737830e-04, + 4.864395157760688501e-04, + 4.863207755338488296e-04, + 4.862012528807840373e-04, + 4.860809480623963920e-04, + 4.859598613254652701e-04, + 4.858379929180204043e-04, + 4.857153430893590678e-04, + 4.855919120900179940e-04, + 4.854677001717961444e-04, + 4.853427075877389876e-04, + 4.852169345921441917e-04, + 4.850903814405719237e-04, + 4.849630483898238710e-04, + 4.848349356979563592e-04, + 4.847060436242712459e-04, + 4.845763724293293637e-04, + 4.844459223749274278e-04, + 4.843146937241304528e-04, + 4.841826867412322879e-04, + 4.840499016917886857e-04, + 4.839163388425952918e-04, + 4.837819984616906275e-04, + 4.836468808183736531e-04, + 4.835109861831801865e-04, + 4.833743148278909813e-04, + 4.832368670255298825e-04, + 4.830986430503659418e-04, + 4.829596431779251261e-04, + 4.828198676849591474e-04, + 4.826793168494628635e-04, + 4.825379909506874519e-04, + 4.823958902691118404e-04, + 4.822530150864581030e-04, + 4.821093656857044704e-04, + 4.819649423510489008e-04, + 4.818197453679348837e-04, + 4.816737750230511692e-04, + 4.815270316043131736e-04, + 4.813795154008908977e-04, + 4.812312267031750457e-04, + 4.810821658028055937e-04, + 4.809323329926478287e-04, + 4.807817285668066604e-04, + 4.806303528206232602e-04, + 4.804782060506803732e-04, + 4.803252885547837250e-04, + 4.801716006319690683e-04, + 4.800171425825228372e-04, + 4.798619147079401345e-04, + 4.797059173109734123e-04, + 4.795491506955838453e-04, + 4.793916151669765134e-04, + 4.792333110315789347e-04, + 4.790742385970553222e-04, + 4.789143981722853338e-04, + 4.787537900673989296e-04, + 4.785924145937299674e-04, + 4.784302720638569694e-04, + 4.782673627915750409e-04, + 4.781036870918996652e-04, + 4.779392452810909356e-04, + 4.777740376766208665e-04, + 4.776080645971851569e-04, + 4.774413263626997215e-04, + 4.772738232943166277e-04, + 4.771055557143902693e-04, + 4.769365239465228482e-04, + 4.767667283155116280e-04, + 4.765961691473934408e-04, + 4.764248467694128116e-04, + 4.762527615100291679e-04, + 4.760799136989427526e-04, + 4.759063036670560260e-04, + 4.757319317464860260e-04, + 4.755567982705711984e-04, + 4.753809035738620729e-04, + 4.752042479921417002e-04, + 4.750268318623841811e-04, + 4.748486555227936440e-04, + 4.746697193127825606e-04, + 4.744900235729696317e-04, + 4.743095686451937192e-04, + 4.741283548725167734e-04, + 4.739463825991901144e-04, + 4.737636521706819169e-04, + 4.735801639336816005e-04, + 4.733959182360658949e-04, + 4.732109154269483874e-04, + 4.730251558566253133e-04, + 4.728386398766163757e-04, + 4.726513678396386704e-04, + 4.724633400996134085e-04, + 4.722745570116730174e-04, + 4.720850189321627128e-04, + 4.718947262186150206e-04, + 4.717036792297688583e-04, + 4.715118783255773413e-04, + 4.713193238671762870e-04, + 4.711260162169293177e-04, + 4.709319557383747344e-04, + 4.707371427962690476e-04, + 4.705415777565511988e-04, + 4.703452609863783391e-04, + 4.701481928540819730e-04, + 4.699503737292194585e-04, + 4.697518039825185495e-04, + 4.695524839859211439e-04, + 4.693524141125530883e-04, + 4.691515947367289486e-04, + 4.689500262339810124e-04, + 4.687477089810186313e-04, + 4.685446433557424240e-04, + 4.683408297372414035e-04, + 4.681362685058025716e-04, + 4.679309600429154732e-04, + 4.677249047312376641e-04, + 4.675181029546199730e-04, + 4.673105550981145246e-04, + 4.671022615479425389e-04, + 4.668932226915270740e-04, + 4.666834389174716129e-04, + 4.664729106155702013e-04, + 4.662616381767878231e-04, + 4.660496219932898365e-04, + 4.658368624584066837e-04, + 4.656233599666782341e-04, + 4.654091149137967016e-04, + 4.651941276966580895e-04, + 4.649783987133250572e-04, + 4.647619283630405264e-04, + 4.645447170462294159e-04, + 4.643267651645093756e-04, + 4.641080731206533808e-04, + 4.638886413186126640e-04, + 4.636684701635343324e-04, + 4.634475600617107903e-04, + 4.632259114206474472e-04, + 4.630035246489864445e-04, + 4.627804001565679671e-04, + 4.625565383543916997e-04, + 4.623319396546264224e-04, + 4.621066044706185756e-04, + 4.618805332168965426e-04, + 4.616537263091342750e-04, + 4.614261841641916244e-04, + 4.611979072000870752e-04, + 4.609688958359994251e-04, + 4.607391504922985219e-04, + 4.605086715905033052e-04, + 4.602774595532955213e-04, + 4.600455148045170129e-04, + 4.598128377691832716e-04, + 4.595794288734814863e-04, + 4.593452885447401311e-04, + 4.591104172114518424e-04, + 4.588748153032837728e-04, + 4.586384832510483176e-04, + 4.584014214867102163e-04, + 4.581636304434194042e-04, + 4.579251105554663971e-04, + 4.576858622582938925e-04, + 4.574458859884977997e-04, + 4.572051821838378103e-04, + 4.569637512832375615e-04, + 4.567215937267521636e-04, + 4.564787099555923239e-04, + 4.562351004121396880e-04, + 4.559907655398990809e-04, + 4.557457057835426336e-04, + 4.554999215888998632e-04, + 4.552534134029317600e-04, + 4.550061816737448282e-04, + 4.547582268506098965e-04, + 4.545095493839180459e-04, + 4.542601497252439805e-04, + 4.540100283272662852e-04, + 4.537591856438357297e-04, + 4.535076221299303291e-04, + 4.532553382416673778e-04, + 4.530023344363132078e-04, + 4.527486111722907780e-04, + 4.524941689091334330e-04, + 4.522390081075192722e-04, + 4.519831292292812871e-04, + 4.517265327373619333e-04, + 4.514692190958776948e-04, + 4.512111887700417804e-04, + 4.509524422262291754e-04, + 4.506929799319279073e-04, + 4.504328023557811669e-04, + 4.501719099675327183e-04, + 4.499103032380997037e-04, + 4.496479826394911110e-04, + 4.493849486448717417e-04, + 4.491212017285168916e-04, + 4.488567423658278545e-04, + 4.485915710333565880e-04, + 4.483256882087680918e-04, + 4.480590943708435514e-04, + 4.477917899994928613e-04, + 4.475237755757495287e-04, + 4.472550515817921954e-04, + 4.469856185008871203e-04, + 4.467154768174344754e-04, + 4.464446270169640085e-04, + 4.461730695861150400e-04, + 4.459008050126315298e-04, + 4.456278337854096736e-04, + 4.453541563944439638e-04, + 4.450797733308305506e-04, + 4.448046850868063820e-04, + 4.445288921556922283e-04, + 4.442523950319620719e-04, + 4.439751942111631465e-04, + 4.436972901899816947e-04, + 4.434186834661988405e-04, + 4.431393745387006184e-04, + 4.428593639074928268e-04, + 4.425786520737058530e-04, + 4.422972395395458837e-04, + 4.420151268083318766e-04, + 4.417323143845063482e-04, + 4.414488027735836029e-04, + 4.411645924822270911e-04, + 4.408796840181584444e-04, + 4.405940778902315809e-04, + 4.403077746083826154e-04, + 4.400207746836484529e-04, + 4.397330786281704209e-04, + 4.394446869552046781e-04, + 4.391556001790767856e-04, + 4.388658188152107643e-04, + 4.385753433801481221e-04, + 4.382841743914940775e-04, + 4.379923123679798475e-04, + 4.376997578294147795e-04, + 4.374065112966925859e-04, + 4.371125732917972525e-04, + 4.368179443378070507e-04, + 4.365226249589122635e-04, + 4.362266156803560973e-04, + 4.359299170284763685e-04, + 4.356325295307148285e-04, + 4.353344537155806257e-04, + 4.350356901126616353e-04, + 4.347362392526582324e-04, + 4.344361016673353704e-04, + 4.341352778895336936e-04, + 4.338337684531717062e-04, + 4.335315738932579688e-04, + 4.332286947458973878e-04, + 4.329251315482368959e-04, + 4.326208848385103387e-04, + 4.323159551560475816e-04, + 4.320103430412231189e-04, + 4.317040490355083865e-04, + 4.313970736814409161e-04, + 4.310894175226324672e-04, + 4.307810811037539561e-04, + 4.304720649705661936e-04, + 4.301623696698670838e-04, + 4.298519957495712594e-04, + 4.295409437586127739e-04, + 4.292292142470257124e-04, + 4.289168077658886261e-04, + 4.286037248673446988e-04, + 4.282899661046065710e-04, + 4.279755320319709772e-04, + 4.276604232047601442e-04, + 4.273446401793651599e-04, + 4.270281835132559473e-04, + 4.267110537649288437e-04, + 4.263932514939811937e-04, + 4.260747772610247756e-04, + 4.257556316277543774e-04, + 4.254358151569051331e-04, + 4.251153284122546373e-04, + 4.247941719586683187e-04, + 4.244723463620458806e-04, + 4.241498521893191328e-04, + 4.238266900084972566e-04, + 4.235028603886211059e-04, + 4.231783638997699292e-04, + 4.228532011131040875e-04, + 4.225273726008084039e-04, + 4.222008789361076687e-04, + 4.218737206932675061e-04, + 4.215458984476045659e-04, + 4.212174127754976364e-04, + 4.208882642543303448e-04, + 4.205584534625356630e-04, + 4.202279809796029557e-04, + 4.198968473860407915e-04, + 4.195650532633851291e-04, + 4.192325991942434443e-04, + 4.188994857622375381e-04, + 4.185657135520149752e-04, + 4.182312831492537462e-04, + 4.178961951406732177e-04, + 4.175604501140459503e-04, + 4.172240486581323213e-04, + 4.168869913627346806e-04, + 4.165492788187016328e-04, + 4.162109116178771889e-04, + 4.158718903531489586e-04, + 4.155322156184484755e-04, + 4.151918880086946022e-04, + 4.148509081198354883e-04, + 4.145092765488639667e-04, + 4.141669938937532058e-04, + 4.138240607535496256e-04, + 4.134804777282642067e-04, + 4.131362454189658399e-04, + 4.127913644277111244e-04, + 4.124458353575771101e-04, + 4.120996588126585878e-04, + 4.117528353980871164e-04, + 4.114053657199693323e-04, + 4.110572503854281485e-04, + 4.107084900026205360e-04, + 4.103590851806731220e-04, + 4.100090365297738050e-04, + 4.096583446610637682e-04, + 4.093070101867281188e-04, + 4.089550337199238431e-04, + 4.086024158748384071e-04, + 4.082491572666481234e-04, + 4.078952585115423832e-04, + 4.075407202266880403e-04, + 4.071855430302793923e-04, + 4.068297275414849471e-04, + 4.064732743804666667e-04, + 4.061161841684168849e-04, + 4.057584575275010610e-04, + 4.054000950808712240e-04, + 4.050410974526698761e-04, + 4.046814652680414846e-04, + 4.043211991531439750e-04, + 4.039602997350830822e-04, + 4.035987676419629288e-04, + 4.032366035028984931e-04, + 4.028738079479656821e-04, + 4.025103816082193286e-04, + 4.021463251157366683e-04, + 4.017816391035541304e-04, + 4.014163242056736805e-04, + 4.010503810571112841e-04, + 4.006838102938211753e-04, + 4.003166125527919173e-04, + 3.999487884719335907e-04, + 3.995803386901741251e-04, + 3.992112638473906691e-04, + 3.988415645844347983e-04, + 3.984712415431398329e-04, + 3.981002953663343369e-04, + 3.977287266977767941e-04, + 3.973565361822060243e-04, + 3.969837244653505611e-04, + 3.966102921938669066e-04, + 3.962362400154349957e-04, + 3.958615685786429994e-04, + 3.954862785330833853e-04, + 3.951103705292875398e-04, + 3.947338452187407307e-04, + 3.943567032539282394e-04, + 3.939789452882726402e-04, + 3.936005719761443713e-04, + 3.932215839728749073e-04, + 3.928419819347713426e-04, + 3.924617665190578437e-04, + 3.920809383839623315e-04, + 3.916994981886402620e-04, + 3.913174465931887748e-04, + 3.909347842586586739e-04, + 3.905515118470554575e-04, + 3.901676300213586710e-04, + 3.897831394454550659e-04, + 3.893980407841829438e-04, + 3.890123347033528647e-04, + 3.886260218696914307e-04, + 3.882391029508629166e-04, + 3.878515786155120409e-04, + 3.874634495331987514e-04, + 3.870747163744156808e-04, + 3.866853798105907491e-04, + 3.862954405140996855e-04, + 3.859048991582761661e-04, + 3.855137564173486591e-04, + 3.851220129664878044e-04, + 3.847296694818185024e-04, + 3.843367266403661920e-04, + 3.839431851201090544e-04, + 3.835490455999476019e-04, + 3.831543087597157364e-04, + 3.827589752801506084e-04, + 3.823630458429482372e-04, + 3.819665211306850681e-04, + 3.815694018269210805e-04, + 3.811716886160757553e-04, + 3.807733821835353563e-04, + 3.803744832155774155e-04, + 3.799749923993892735e-04, + 3.795749104231182234e-04, + 3.791742379758033144e-04, + 3.787729757473867905e-04, + 3.783711244287266129e-04, + 3.779686847116160838e-04, + 3.775656572887201501e-04, + 3.771620428536699991e-04, + 3.767578421009487848e-04, + 3.763530557259874162e-04, + 3.759476844250904523e-04, + 3.755417288954932941e-04, + 3.751351898353243457e-04, + 3.747280679436265898e-04, + 3.743203639203154668e-04, + 3.739120784662450106e-04, + 3.735032122831388399e-04, + 3.730937660736116787e-04, + 3.726837405412176583e-04, + 3.722731363903818494e-04, + 3.718619543264129476e-04, + 3.714501950555128685e-04, + 3.710378592847854754e-04, + 3.706249477222521918e-04, + 3.702114610767768665e-04, + 3.697974000581233443e-04, + 3.693827653769683143e-04, + 3.689675577448472618e-04, + 3.685517778741706236e-04, + 3.681354264782783769e-04, + 3.677185042713664769e-04, + 3.673010119685007338e-04, + 3.668829502856271133e-04, + 3.664643199395802475e-04, + 3.660451216480982341e-04, + 3.656253561297431102e-04, + 3.652050241039934433e-04, + 3.647841262911754841e-04, + 3.643626634124812733e-04, + 3.639406361900177013e-04, + 3.635180453467328366e-04, + 3.630948916064365801e-04, + 3.626711756938048935e-04, + 3.622468983344090182e-04, + 3.618220602546365458e-04, + 3.613966621818066687e-04, + 3.609707048440340040e-04, + 3.605441889703413509e-04, + 3.601171152905850974e-04, + 3.596894845354685561e-04, + 3.592612974366008903e-04, + 3.588325547264194313e-04, + 3.584032571382082181e-04, + 3.579734054061028763e-04, + 3.575430002651201625e-04, + 3.571120424510822872e-04, + 3.566805327007284247e-04, + 3.562484717515761526e-04, + 3.558158603420434780e-04, + 3.553826992113522901e-04, + 3.549489890995908095e-04, + 3.545147307477191181e-04, + 3.540799248974932107e-04, + 3.536445722915174160e-04, + 3.532086736732667313e-04, + 3.527722297870248603e-04, + 3.523352413779048671e-04, + 3.518977091919024106e-04, + 3.514596339758217476e-04, + 3.510210164772869547e-04, + 3.505818574447593832e-04, + 3.501421576275379850e-04, + 3.497019177757807254e-04, + 3.492611386404272252e-04, + 3.488198209732521577e-04, + 3.483779655268880171e-04, + 3.479355730547518261e-04, + 3.474926443111110014e-04, + 3.470491800510484425e-04, + 3.466051810304770597e-04, + 3.461606480060994422e-04, + 3.457155817354764333e-04, + 3.452699829769361123e-04, + 3.448238524896912131e-04, + 3.443771910336999127e-04, + 3.439299993697834132e-04, + 3.434822782595466865e-04, + 3.430340284653907797e-04, + 3.425852507505799819e-04, + 3.421359458791556297e-04, + 3.416861146159550812e-04, + 3.412357577266220154e-04, + 3.407848759776328871e-04, + 3.403334701362200568e-04, + 3.398815409704825964e-04, + 3.394290892492539077e-04, + 3.389761157422146965e-04, + 3.385226212198131214e-04, + 3.380686064532835498e-04, + 3.376140722147072198e-04, + 3.371590192769265875e-04, + 3.367034484135681500e-04, + 3.362473603990492757e-04, + 3.357907560086043335e-04, + 3.353336360182118344e-04, + 3.348760012046919556e-04, + 3.344178523456239785e-04, + 3.339591902193595700e-04, + 3.335000156050364978e-04, + 3.330403292825815579e-04, + 3.325801320327322042e-04, + 3.321194246369566969e-04, + 3.316582078775114030e-04, + 3.311964825374572757e-04, + 3.307342494006027173e-04, + 3.302715092515182702e-04, + 3.298082628755983617e-04, + 3.293445110589781461e-04, + 3.288802545885530747e-04, + 3.284154942519868100e-04, + 3.279502308377200623e-04, + 3.274844651349912436e-04, + 3.270181979337505448e-04, + 3.265514300247241743e-04, + 3.260841621994289949e-04, + 3.256163952500916426e-04, + 3.251481299697701194e-04, + 3.246793671522093779e-04, + 3.242101075919610171e-04, + 3.237403520842914505e-04, + 3.232701014252617575e-04, + 3.227993564116339001e-04, + 3.223281178409939424e-04, + 3.218563865116061168e-04, + 3.213841632225327371e-04, + 3.209114487735551056e-04, + 3.204382439651878790e-04, + 3.199645495987426028e-04, + 3.194903664762429804e-04, + 3.190156954004435760e-04, + 3.185405371748409819e-04, + 3.180648926037000558e-04, + 3.175887624919727144e-04, + 3.171121476454193100e-04, + 3.166350488704637806e-04, + 3.161574669743135086e-04, + 3.156794027648681398e-04, + 3.152008570507894053e-04, + 3.147218306414560737e-04, + 3.142423243469900799e-04, + 3.137623389782047000e-04, + 3.132818753466817471e-04, + 3.128009342646954601e-04, + 3.123195165452343500e-04, + 3.118376230020577415e-04, + 3.113552544496152709e-04, + 3.108724117030643957e-04, + 3.103890955782793396e-04, + 3.099053068918617717e-04, + 3.094210464611583705e-04, + 3.089363151041776660e-04, + 3.084511136396477730e-04, + 3.079654428870421410e-04, + 3.074793036664871262e-04, + 3.069926967988941555e-04, + 3.065056231058037100e-04, + 3.060180834095175975e-04, + 3.055300785330040850e-04, + 3.050416092999386100e-04, + 3.045526765347048113e-04, + 3.040632810624200612e-04, + 3.035734237088320874e-04, + 3.030831053004436559e-04, + 3.025923266644151011e-04, + 3.021010886285934371e-04, + 3.016093920215710670e-04, + 3.011172376725981792e-04, + 3.006246264116038355e-04, + 3.001315590692063789e-04, + 2.996380364767424909e-04, + 2.991440594661801838e-04, + 2.986496288702481460e-04, + 2.981547455222794004e-04, + 2.976594102563465041e-04, + 2.971636239071645124e-04, + 2.966673873101201980e-04, + 2.961707013013277793e-04, + 2.956735667175480926e-04, + 2.951759843962036087e-04, + 2.946779551753888411e-04, + 2.941794798939034142e-04, + 2.936805593911614781e-04, + 2.931811945073234935e-04, + 2.926813860831394020e-04, + 2.921811349600803021e-04, + 2.916804419802368053e-04, + 2.911793079863858233e-04, + 2.906777338219968562e-04, + 2.901757203311475328e-04, + 2.896732683585814534e-04, + 2.891703787497348606e-04, + 2.886670523506654619e-04, + 2.881632900080760107e-04, + 2.876590925693756724e-04, + 2.871544608825932882e-04, + 2.866493957963954812e-04, + 2.861438981600999921e-04, + 2.856379688236793655e-04, + 2.851316086377886513e-04, + 2.846248184536697237e-04, + 2.841175991232203994e-04, + 2.836099514990116218e-04, + 2.831018764341993702e-04, + 2.825933747826566604e-04, + 2.820844473988167161e-04, + 2.815750951378024215e-04, + 2.810653188553269006e-04, + 2.805551194077829098e-04, + 2.800444976521373986e-04, + 2.795334544460645419e-04, + 2.790219906477907526e-04, + 2.785101071162257623e-04, + 2.779978047108703555e-04, + 2.774850842918390290e-04, + 2.769719467199254241e-04, + 2.764583928565109280e-04, + 2.759444235635855991e-04, + 2.754300397037582498e-04, + 2.749152421402890813e-04, + 2.744000317369973637e-04, + 2.738844093583944674e-04, + 2.733683758695276841e-04, + 2.728519321361108185e-04, + 2.723350790244343628e-04, + 2.718178174013856081e-04, + 2.713001481345152146e-04, + 2.707820720919462470e-04, + 2.702635901423823604e-04, + 2.697447031551770263e-04, + 2.692254120002486400e-04, + 2.687057175481049145e-04, + 2.681856206699101560e-04, + 2.676651222373890946e-04, + 2.671442231228518755e-04, + 2.666229241992021902e-04, + 2.661012263399481189e-04, + 2.655791304192224589e-04, + 2.650566373116908388e-04, + 2.645337478926182884e-04, + 2.640104630378915730e-04, + 2.634867836239229168e-04, + 2.629627105277930086e-04, + 2.624382446270789935e-04, + 2.619133868000011111e-04, + 2.613881379253227321e-04, + 2.608624988823832094e-04, + 2.603364705511122443e-04, + 2.598100538120486970e-04, + 2.592832495462456645e-04, + 2.587560586353419303e-04, + 2.582284819615809370e-04, + 2.577005204077157025e-04, + 2.571721748571376229e-04, + 2.566434461937710338e-04, + 2.561143353020890398e-04, + 2.555848430671327589e-04, + 2.550549703745358257e-04, + 2.545247181104366252e-04, + 2.539940871616132214e-04, + 2.534630784153185049e-04, + 2.529316927594200547e-04, + 2.523999310823047282e-04, + 2.518677942728996953e-04, + 2.513352832207435073e-04, + 2.508023988158883020e-04, + 2.502691419489232226e-04, + 2.497355135109853683e-04, + 2.492015143937896093e-04, + 2.486671454895383816e-04, + 2.481324076910582425e-04, + 2.475973018916345831e-04, + 2.470618289851502446e-04, + 2.465259898659798079e-04, + 2.459897854290699331e-04, + 2.454532165698895406e-04, + 2.449162841844527961e-04, + 2.443789891692708634e-04, + 2.438413324214336807e-04, + 2.433033148384988840e-04, + 2.427649373186370355e-04, + 2.422262007604588838e-04, + 2.416871060631622459e-04, + 2.411476541264291704e-04, + 2.406078458504663244e-04, + 2.400676821360088963e-04, + 2.395271638843494901e-04, + 2.389862919972371858e-04, + 2.384450673769467120e-04, + 2.379034909263060655e-04, + 2.373615635485923467e-04, + 2.368192861476806207e-04, + 2.362766596278691709e-04, + 2.357336848940262729e-04, + 2.351903628514769495e-04, + 2.346466944061012809e-04, + 2.341026804642202652e-04, + 2.335583219327430529e-04, + 2.330136197189950741e-04, + 2.324685747308591474e-04, + 2.319231878766809640e-04, + 2.313774600652906911e-04, + 2.308313922060713306e-04, + 2.302849852088642308e-04, + 2.297382399839891984e-04, + 2.291911574422567772e-04, + 2.286437384950013431e-04, + 2.280959840539842310e-04, + 2.275478950315368493e-04, + 2.269994723403890777e-04, + 2.264507168938143336e-04, + 2.259016296055313703e-04, + 2.253522113897241455e-04, + 2.248024631611164950e-04, + 2.242523858348721970e-04, + 2.237019803266163034e-04, + 2.231512475524485297e-04, + 2.226001884289759440e-04, + 2.220488038732159849e-04, + 2.214970948027265927e-04, + 2.209450621354975457e-04, + 2.203927067899708427e-04, + 2.198400296850530633e-04, + 2.192870317401259114e-04, + 2.187337138750686044e-04, + 2.181800770101588309e-04, + 2.176261220661441999e-04, + 2.170718499642659578e-04, + 2.165172616261591871e-04, + 2.159623579739967079e-04, + 2.154071399303198332e-04, + 2.148516084181798847e-04, + 2.142957643610398017e-04, + 2.137396086828119250e-04, + 2.131831423078648822e-04, + 2.126263661610490387e-04, + 2.120692811675952880e-04, + 2.115118882531894819e-04, + 2.109541883439922170e-04, + 2.103961823665420974e-04, + 2.098378712479000954e-04, + 2.092792559154755920e-04, + 2.087203372971734754e-04, + 2.081611163212809508e-04, + 2.076015939165659586e-04, + 2.070417710121612732e-04, + 2.064816485377161557e-04, + 2.059212274232181386e-04, + 2.053605085991402597e-04, + 2.047994929963428343e-04, + 2.042381815460918857e-04, + 2.036765751801384011e-04, + 2.031146748306124317e-04, + 2.025524814300486262e-04, + 2.019899959113963131e-04, + 2.014272192080565811e-04, + 2.008641522537790356e-04, + 2.003007959828109036e-04, + 1.997371513297222065e-04, + 1.991732192295511510e-04, + 1.986090006177061175e-04, + 1.980444964299839022e-04, + 1.974797076026504352e-04, + 1.969146350723330655e-04, + 1.963492797760327854e-04, + 1.957836426512008291e-04, + 1.952177246356208743e-04, + 1.946515266675597465e-04, + 1.940850496855891214e-04, + 1.935182946287364737e-04, + 1.929512624363806405e-04, + 1.923839540482898233e-04, + 1.918163704046314810e-04, + 1.912485124459969955e-04, + 1.906803811132981032e-04, + 1.901119773478417054e-04, + 1.895433020913545876e-04, + 1.889743562858784960e-04, + 1.884051408739216278e-04, + 1.878356567982804423e-04, + 1.872659050021888746e-04, + 1.866958864292159865e-04, + 1.861256020233029921e-04, + 1.855550527287730162e-04, + 1.849842394903561654e-04, + 1.844131632530854727e-04, + 1.838418249623734689e-04, + 1.832702255640322405e-04, + 1.826983660041748756e-04, + 1.821262472293489561e-04, + 1.815538701864252377e-04, + 1.809812358226184934e-04, + 1.804083450854987350e-04, + 1.798351989230300547e-04, + 1.792617982834638583e-04, + 1.786881441154930929e-04, + 1.781142373680713478e-04, + 1.775400789905634774e-04, + 1.769656699326427915e-04, + 1.763910111443150975e-04, + 1.758161035759936192e-04, + 1.752409481783947771e-04, + 1.746655459025621502e-04, + 1.740898976998781844e-04, + 1.735140045220763907e-04, + 1.729378673212629742e-04, + 1.723614870498142693e-04, + 1.717848646604528231e-04, + 1.712080011062698114e-04, + 1.706308973406334508e-04, + 1.700535543172799905e-04, + 1.694759729902581193e-04, + 1.688981543139539843e-04, + 1.683200992430380102e-04, + 1.677418087325539397e-04, + 1.671632837378007907e-04, + 1.665845252144863798e-04, + 1.660055341185435226e-04, + 1.654263114062872971e-04, + 1.648468580343048079e-04, + 1.642671749594978490e-04, + 1.636872631390894636e-04, + 1.631071235306508324e-04, + 1.625267570919962953e-04, + 1.619461647812584870e-04, + 1.613653475569125687e-04, + 1.607843063776726326e-04, + 1.602030422026430839e-04, + 1.596215559911373075e-04, + 1.590398487028318690e-04, + 1.584579212976476863e-04, + 1.578757747358507785e-04, + 1.572934099779374224e-04, + 1.567108279847843953e-04, + 1.561280297174691065e-04, + 1.555450161374201379e-04, + 1.549617882063163328e-04, + 1.543783468861067445e-04, + 1.537946931390894582e-04, + 1.532108279278059895e-04, + 1.526267522150643783e-04, + 1.520424669639528761e-04, + 1.514579731378743431e-04, + 1.508732717004435467e-04, + 1.502883636156394920e-04, + 1.497032498476232217e-04, + 1.491179313608909053e-04, + 1.485324091201696746e-04, + 1.479466840904416656e-04, + 1.473607572370192354e-04, + 1.467746295254403633e-04, + 1.461883019214938048e-04, + 1.456017753912286863e-04, + 1.450150509009683834e-04, + 1.444281294173314185e-04, + 1.438410119071163458e-04, + 1.432536993374410983e-04, + 1.426661926756383624e-04, + 1.420784928892927931e-04, + 1.414906009462521812e-04, + 1.409025178146509807e-04, + 1.403142444628076616e-04, + 1.397257818592969453e-04, + 1.391371309729782103e-04, + 1.385482927728871265e-04, + 1.379592682283915090e-04, + 1.373700583090067600e-04, + 1.367806639845519669e-04, + 1.361910862250414274e-04, + 1.356013260007251449e-04, + 1.350113842820981254e-04, + 1.344212620399260459e-04, + 1.338309602451381625e-04, + 1.332404798689061046e-04, + 1.326498218826659115e-04, + 1.320589872580133796e-04, + 1.314679769668583716e-04, + 1.308767919812424808e-04, + 1.302854332734906838e-04, + 1.296939018160952767e-04, + 1.291021985818169228e-04, + 1.285103245435666912e-04, + 1.279182806745609083e-04, + 1.273260679481350000e-04, + 1.267336873379023275e-04, + 1.261411398176437340e-04, + 1.255484263613357884e-04, + 1.249555479432248092e-04, + 1.243625055377228891e-04, + 1.237693001194310164e-04, + 1.231759326631507291e-04, + 1.225824041438961778e-04, + 1.219887155369189937e-04, + 1.213948678175996249e-04, + 1.208008619615281906e-04, + 1.202066989445255553e-04, + 1.196123797425516325e-04, + 1.190179053317951566e-04, + 1.184232766886204755e-04, + 1.178284947895911052e-04, + 1.172335606114154245e-04, + 1.166384751310382497e-04, + 1.160432393255201222e-04, + 1.154478541721938942e-04, + 1.148523206484782866e-04, + 1.142566397320346922e-04, + 1.136608124006609097e-04, + 1.130648396323275461e-04, + 1.124687224051905394e-04, + 1.118724616976161354e-04, + 1.112760584880734033e-04, + 1.106795137552118503e-04, + 1.100828284778854101e-04, + 1.094860036350471397e-04, + 1.088890402059043412e-04, + 1.082919391697327436e-04, + 1.076947015060331292e-04, + 1.070973281944247022e-04, + 1.064998202146822363e-04, + 1.059021785467485836e-04, + 1.053044041707582561e-04, + 1.047064980669186376e-04, + 1.041084612156516757e-04, + 1.035102945974889578e-04, + 1.029119991930937207e-04, + 1.023135759833413523e-04, + 1.017150259492100365e-04, + 1.011163500718064757e-04, + 1.005175493323774515e-04, + 9.991862471232101852e-05, + 9.931957719321186158e-05, + 9.872040775669372920e-05, + 9.812111738455713016e-05, + 9.752170705876375527e-05, + 9.692217776136662576e-05, + 9.632253047453357992e-05, + 9.572276618062629781e-05, + 9.512288586209203015e-05, + 9.452289050148868406e-05, + 9.392278108149634266e-05, + 9.332255858492887965e-05, + 9.272222399475984458e-05, + 9.212177829401325664e-05, + 9.152122246584189756e-05, + 9.092055749355382036e-05, + 9.031978436051557081e-05, + 8.971890405023175423e-05, + 8.911791754635629771e-05, + 8.851682583258442289e-05, + 8.791562989273100665e-05, + 8.731433071075504347e-05, + 8.671292927065248556e-05, + 8.611142655661385877e-05, + 8.550982355283605861e-05, + 8.490812124368077936e-05, + 8.430632061356650036e-05, + 8.370442264700663642e-05, + 8.310242832862107100e-05, + 8.250033864316194665e-05, + 8.189815457540468920e-05, + 8.129587711022609735e-05, + 8.069350723263083792e-05, + 8.009104592764160256e-05, + 7.948849418045830935e-05, + 7.888585297627002078e-05, + 7.828312330041230216e-05, + 7.768030613824695649e-05, + 7.707740247526597235e-05, + 7.647441329697048627e-05, + 7.587133958902925245e-05, + 7.526818233709011352e-05, + 7.466494252693842962e-05, + 7.406162114438852263e-05, + 7.345821917530968349e-05, + 7.285473760570302857e-05, + 7.225117742159526139e-05, + 7.164753960906153579e-05, + 7.104382515423891353e-05, + 7.044003504333694885e-05, + 6.983617026266383126e-05, + 6.923223179851682697e-05, + 6.862822063726153399e-05, + 6.802413776535729320e-05, + 6.741998416927435524e-05, + 6.681576083551937285e-05, + 6.621146875071522522e-05, + 6.560710890149051074e-05, + 6.500268227450619121e-05, + 6.439818985646633904e-05, + 6.379363263413037513e-05, + 6.318901159433876452e-05, + 6.258432772388972901e-05, + 6.197958200968606171e-05, + 6.137477543862558194e-05, + 6.076990899763992936e-05, + 6.016498367370681544e-05, + 5.956000045387460098e-05, + 5.895496032515390976e-05, + 5.834986427459587407e-05, + 5.774471328931819622e-05, + 5.713950835639539338e-05, + 5.653425046301893426e-05, + 5.592894059630688707e-05, + 5.532357974346450345e-05, + 5.471816889167419224e-05, + 5.411270902813450335e-05, + 5.350720114007253506e-05, + 5.290164621476837608e-05, + 5.229604523944649550e-05, + 5.169039920135424588e-05, + 5.108470908778793828e-05, + 5.047897588598314133e-05, + 4.987320058327436389e-05, + 4.926738416690575333e-05, + 4.866152762419005315e-05, + 4.805563194238681319e-05, + 4.744969810878057413e-05, + 4.684372711069354590e-05, + 4.623771993537621847e-05, + 4.563167757008571577e-05, + 4.502560100211197916e-05, + 4.441949121869546974e-05, + 4.381334920705142057e-05, + 4.320717595445042002e-05, + 4.260097244810786378e-05, + 4.199473967521021289e-05, + 4.138847862292608650e-05, + 4.078219027841879118e-05, + 4.017587562887130496e-05, + 3.956953566137688818e-05, + 3.896317136301845379e-05, + 3.835678372089374122e-05, + 3.775037372201959487e-05, + 3.714394235342463629e-05, + 3.653749060209351583e-05, + 3.593101945499270315e-05, + 3.532452989901452203e-05, + 3.471802292107024944e-05, + 3.411149950796691635e-05, + 3.350496064656781700e-05, + 3.289840732360173006e-05, + 3.229184052582348213e-05, + 3.168526123990421975e-05, + 3.107867045247046097e-05, + 3.047206915011580478e-05, + 2.986545831942663342e-05, + 2.925883894687212011e-05, + 2.865221201888369767e-05, + 2.804557852188089304e-05, + 2.743893944216121633e-05, + 2.683229576606071092e-05, + 2.622564847976360474e-05, + 2.561899856946226744e-05, + 2.501234702124805148e-05, + 2.440569482113629323e-05, + 2.379904295514606615e-05, + 2.319239240919034436e-05, + 2.258574416908804404e-05, + 2.197909922064329898e-05, + 2.137245854954939681e-05, + 2.076582314141431205e-05, + 2.015919398184001202e-05, + 1.955257205631271192e-05, + 1.894595835022861447e-05, + 1.833935384890544984e-05, + 1.773275953759458149e-05, + 1.712617640150661027e-05, + 1.651960542570116188e-05, + 1.591304759516686709e-05, + 1.530650389484667449e-05, + 1.469997530955493615e-05, + 1.409346282400317941e-05, + 1.348696742287929769e-05, + 1.288049009073808165e-05, + 1.227403181202648621e-05, + 1.166759357109560585e-05, + 1.106117635221262460e-05, + 1.045478113958623883e-05, + 9.848408917256890339e-06, + 9.242060669176333141e-06, + 8.635737379233063158e-06, + 8.029440031156035956e-06, + 7.423169608594299708e-06, + 6.816927095128824858e-06, + 6.210713474162763371e-06, + 5.604529729001043580e-06, + 4.998376842875788797e-06, + 4.392255798836498638e-06, + 3.786167579910796827e-06, + 3.180113168913521821e-06, + 2.574093548607339507e-06, + 1.968109701593053704e-06, + 1.362162610348542578e-06, + 7.562532572406948094e-07, + 1.503826245508483855e-07, +-4.554483056349211910e-07, +-1.061238551346301245e-06, +-1.666987130703296107e-06, +-2.272693062025919096e-06, +-2.878355363673650188e-06, +-3.483973054236165805e-06, +-4.089545152372808712e-06, +-4.695070676935743645e-06, +-5.300548646877000945e-06, +-5.905978081304117309e-06, +-6.511357999454615958e-06, +-7.116687420751717687e-06, +-7.721965364711376456e-06, +-8.327190851038338861e-06, +-8.932362899600684858e-06, +-9.537480530350601389e-06, +-1.014254276343371061e-05, +-1.074754861916386221e-05, +-1.135249711801111230e-05, +-1.195738728058980226e-05, +-1.256221812763315288e-05, +-1.316698868010295168e-05, +-1.377169795910993356e-05, +-1.437634498588852393e-05, +-1.498092878187933975e-05, +-1.558544836870383611e-05, +-1.618990276808475123e-05, +-1.679429100195590902e-05, +-1.739861209245009127e-05, +-1.800286506181964354e-05, +-1.860704893255970153e-05, +-1.921116272724766140e-05, +-1.981520546873372150e-05, +-2.041917617998043405e-05, +-2.102307388417254830e-05, +-2.162689760467770151e-05, +-2.223064636503474336e-05, +-2.283431918892832503e-05, +-2.343791510029831550e-05, +-2.404143312326045490e-05, +-2.464487228208106547e-05, +-2.524823160128625787e-05, +-2.585151010550196048e-05, +-2.645470681964416984e-05, +-2.705782076875866486e-05, +-2.766085097813060612e-05, +-2.826379647325874542e-05, +-2.886665627977666527e-05, +-2.946942942356192078e-05, +-3.007211493071042875e-05, +-3.067471182752488706e-05, +-3.127721914047585180e-05, +-3.187963589631104857e-05, +-3.248196112190875447e-05, +-3.308419384440053655e-05, +-3.368633309114594924e-05, +-3.428837788972072335e-05, +-3.489032726790466363e-05, +-3.549218025365646819e-05, +-3.609393587522291444e-05, +-3.669559316105975297e-05, +-3.729715113980593068e-05, +-3.789860884036666772e-05, +-3.849996529188751799e-05, +-3.910121952367524948e-05, +-3.970237056530728770e-05, +-4.030341744660618949e-05, +-4.090435919762787945e-05, +-4.150519484864946616e-05, +-4.210592343014452922e-05, +-4.270654397289147845e-05, +-4.330705550789496275e-05, +-4.390745706636036430e-05, +-4.450774767978948616e-05, +-4.510792637988807657e-05, +-4.570799219862118430e-05, +-4.630794416818741557e-05, +-4.690778132107483150e-05, +-4.750750268996821490e-05, +-4.810710730787146993e-05, +-4.870659420794800726e-05, +-4.930596242371011344e-05, +-4.990521098886032542e-05, +-5.050433893739872588e-05, +-5.110334530359935507e-05, +-5.170222912193000694e-05, +-5.230098942716199782e-05, +-5.289962525434407106e-05, +-5.349813563879125009e-05, +-5.409651961604584094e-05, +-5.469477622198601520e-05, +-5.529290449266710983e-05, +-5.589090346451024453e-05, +-5.648877217414318791e-05, +-5.708650965850940793e-05, +-5.768411495484230856e-05, +-5.828158710058718749e-05, +-5.887892513350903302e-05, +-5.947612809168104499e-05, +-6.007319501340603694e-05, +-6.067012493731156129e-05, +-6.126691690232471520e-05, +-6.186356994759294636e-05, +-6.246008311259363874e-05, +-6.305645543710788165e-05, +-6.365268596120887560e-05, +-6.424877372525073784e-05, +-6.484471776984254937e-05, +-6.544051713595735781e-05, +-6.603617086485256992e-05, +-6.663167799804642442e-05, +-6.722703757739835841e-05, +-6.782224864508417923e-05, +-6.841731024351714802e-05, +-6.901222141545763325e-05, +-6.960698120398624961e-05, +-7.020158865249292112e-05, +-7.079604280466511752e-05, +-7.139034270446264661e-05, +-7.198448739622541033e-05, +-7.257847592459589793e-05, +-7.317230733449298888e-05, +-7.376598067120734912e-05, +-7.435949498032301617e-05, +-7.495284930770578456e-05, +-7.554604269961010823e-05, +-7.613907420260304366e-05, +-7.673194286353675190e-05, +-7.732464772965754211e-05, +-7.791718784844809309e-05, +-7.850956226781478984e-05, +-7.910177003592933521e-05, +-7.969381020133735978e-05, +-8.028568181293271281e-05, +-8.087738391987976552e-05, +-8.146891557172122151e-05, +-8.206027581835205519e-05, +-8.265146371000921190e-05, +-8.324247829723244109e-05, +-8.383331863097206603e-05, +-8.442398376243185579e-05, +-8.501447274325525053e-05, +-8.560478462536864007e-05, +-8.619491846110191363e-05, +-8.678487330309660078e-05, +-8.737464820436170786e-05, +-8.796424221824742610e-05, +-8.855365439849999221e-05, +-8.914288379917187583e-05, +-8.973192947471305574e-05, +-9.032079047994924102e-05, +-9.090946587000165357e-05, +-9.149795470039558392e-05, +-9.208625602703533254e-05, +-9.267436890619144341e-05, +-9.326229239449079713e-05, +-9.385002554889058999e-05, +-9.443756742678501958e-05, +-9.502491708592888909e-05, +-9.561207358441155941e-05, +-9.619903598073864374e-05, +-9.678580333380564795e-05, +-9.737237470282244232e-05, +-9.795874914741818521e-05, +-9.854492572763109092e-05, +-9.913090350383002829e-05, +-9.971668153683508403e-05, +-1.003022588877607057e-04, +-1.008876346182016425e-04, +-1.014728077900763455e-04, +-1.020577774657346025e-04, +-1.026425427079309606e-04, +-1.032271025797489277e-04, +-1.038114561447075492e-04, +-1.043956024667354955e-04, +-1.049795406101599357e-04, +-1.055632696396694575e-04, +-1.061467886204195063e-04, +-1.067300966178770321e-04, +-1.073131926980048449e-04, +-1.078960759271072647e-04, +-1.084787453719350726e-04, +-1.090612000996606280e-04, +-1.096434391778022458e-04, +-1.102254616743291875e-04, +-1.108072666576379311e-04, +-1.113888531965391603e-04, +-1.119702203602213628e-04, +-1.125513672183559840e-04, +-1.131322928409561558e-04, +-1.137129962984952537e-04, +-1.142934766618814319e-04, +-1.148737330024471472e-04, +-1.154537643919375714e-04, +-1.160335699024856143e-04, +-1.166131486067170501e-04, +-1.171924995776753422e-04, +-1.177716218887962996e-04, +-1.183505146139867222e-04, +-1.189291768276012261e-04, +-1.195076076043657530e-04, +-1.200858060194813016e-04, +-1.206637711486024055e-04, +-1.212415020678214402e-04, +-1.218189978536615887e-04, +-1.223962575830492760e-04, +-1.229732803334202852e-04, +-1.235500651826441888e-04, +-1.241266112089987883e-04, +-1.247029174912759328e-04, +-1.252789831086272368e-04, +-1.258548071407463885e-04, +-1.264303886677168199e-04, +-1.270057267701280143e-04, +-1.275808205289739980e-04, +-1.281556690257716537e-04, +-1.287302713424064659e-04, +-1.293046265613154795e-04, +-1.298787337653326663e-04, +-1.304525920377952843e-04, +-1.310262004625177763e-04, +-1.315995581237169323e-04, +-1.321726641061173556e-04, +-1.327455174949244662e-04, +-1.333181173758160435e-04, +-1.338904628349023827e-04, +-1.344625529588326814e-04, +-1.350343868346417608e-04, +-1.356059635499303688e-04, +-1.361772821927143126e-04, +-1.367483418515398998e-04, +-1.373191416153957383e-04, +-1.378896805737664312e-04, +-1.384599578166075321e-04, +-1.390299724343984267e-04, +-1.395997235180548922e-04, +-1.401692101590186251e-04, +-1.407384314492342021e-04, +-1.413073864810739447e-04, +-1.418760743474405388e-04, +-1.424444941417446736e-04, +-1.430126449578914341e-04, +-1.435805258902712216e-04, +-1.441481360337334885e-04, +-1.447154744836923125e-04, +-1.452825403360504756e-04, +-1.458493326871748523e-04, +-1.464158506339999785e-04, +-1.469820932738776181e-04, +-1.475480597047554938e-04, +-1.481137490250259868e-04, +-1.486791603336297320e-04, +-1.492442927300189996e-04, +-1.498091453141458770e-04, +-1.503737171864390123e-04, +-1.509380074479186218e-04, +-1.515020152000585247e-04, +-1.520657395448891697e-04, +-1.526291795849733757e-04, +-1.531923344233328233e-04, +-1.537552031635496441e-04, +-1.543177849097421620e-04, +-1.548800787665552436e-04, +-1.554420838391227307e-04, +-1.560037992331699517e-04, +-1.565652240548635324e-04, +-1.571263574109905872e-04, +-1.576871984088070941e-04, +-1.582477461561414896e-04, +-1.588079997613700035e-04, +-1.593679583333434751e-04, +-1.599276209814885091e-04, +-1.604869868157845179e-04, +-1.610460549467509009e-04, +-1.616048244854141657e-04, +-1.621632945434055338e-04, +-1.627214642328158743e-04, +-1.632793326663687153e-04, +-1.638368989572739850e-04, +-1.643941622193425037e-04, +-1.649511215669092763e-04, +-1.655077761148260112e-04, +-1.660641249785591055e-04, +-1.666201672741200387e-04, +-1.671759021180366418e-04, +-1.677313286274349812e-04, +-1.682864459200112783e-04, +-1.688412531139610838e-04, +-1.693957493280798645e-04, +-1.699499336817384190e-04, +-1.705038052948737979e-04, +-1.710573632879759133e-04, +-1.716106067820656112e-04, +-1.721635348987953396e-04, +-1.727161467603759376e-04, +-1.732684414895528918e-04, +-1.738204182097070579e-04, +-1.743720760447071017e-04, +-1.749234141190845429e-04, +-1.754744315578883097e-04, +-1.760251274867928877e-04, +-1.765755010320059189e-04, +-1.771255513203773540e-04, +-1.776752774792553073e-04, +-1.782246786366563579e-04, +-1.787737539211241972e-04, +-1.793225024618248483e-04, +-1.798709233885249824e-04, +-1.804190158315209307e-04, +-1.809667789217373466e-04, +-1.815142117907026214e-04, +-1.820613135705410510e-04, +-1.826080833939342928e-04, +-1.831545203942228192e-04, +-1.837006237052588194e-04, +-1.842463924615810262e-04, +-1.847918257982666956e-04, +-1.853369228510334137e-04, +-1.858816827562136988e-04, +-1.864261046506840945e-04, +-1.869701876719651067e-04, +-1.875139309582087076e-04, +-1.880573336481272662e-04, +-1.886003948810811794e-04, +-1.891431137970526609e-04, +-1.896854895365790363e-04, +-1.902275212408473118e-04, +-1.907692080516727078e-04, +-1.913105491114875452e-04, +-1.918515435633315152e-04, +-1.923921905508270945e-04, +-1.929324892182783437e-04, +-1.934724387106017080e-04, +-1.940120381733001042e-04, +-1.945512867525624786e-04, +-1.950901835951198240e-04, +-1.956287278484162401e-04, +-1.961669186604645993e-04, +-1.967047551799441243e-04, +-1.972422365561680524e-04, +-1.977793619390692966e-04, +-1.983161304791808486e-04, +-1.988525413277299691e-04, +-1.993885936365711296e-04, +-1.999242865581622145e-04, +-2.004596192456590631e-04, +-2.009945908527765025e-04, +-2.015292005339556667e-04, +-2.020634474442229692e-04, +-2.025973307392967882e-04, +-2.031308495754945783e-04, +-2.036640031098437562e-04, +-2.041967904999348465e-04, +-2.047292109040942489e-04, +-2.052612634812412318e-04, +-2.057929473909829356e-04, +-2.063242617935946949e-04, +-2.068552058499468539e-04, +-2.073857787216046224e-04, +-2.079159795708028675e-04, +-2.084458075604357869e-04, +-2.089752618540253039e-04, +-2.095043416158137402e-04, +-2.100330460106247126e-04, +-2.105613742040312653e-04, +-2.110893253622122948e-04, +-2.116168986520629487e-04, +-2.121440932411120905e-04, +-2.126709082975707912e-04, +-2.131973429903099128e-04, +-2.137233964889096024e-04, +-2.142490679635768657e-04, +-2.147743565852536078e-04, +-2.152992615254769064e-04, +-2.158237819565428622e-04, +-2.163479170513708837e-04, +-2.168716659835948687e-04, +-2.173950279275318706e-04, +-2.179180020581707416e-04, +-2.184405875511500966e-04, +-2.189627835828518519e-04, +-2.194845893303369870e-04, +-2.200060039713171655e-04, +-2.205270266842533156e-04, +-2.210476566482170427e-04, +-2.215678930430527442e-04, +-2.220877350492424099e-04, +-2.226071818479965863e-04, +-2.231262326212219587e-04, +-2.236448865515130308e-04, +-2.241631428221284880e-04, +-2.246810006170946313e-04, +-2.251984591210845152e-04, +-2.257155175195069065e-04, +-2.262321749984870132e-04, +-2.267484307447975556e-04, +-2.272642839459529569e-04, +-2.277797337901864662e-04, +-2.282947794664420544e-04, +-2.288094201643373884e-04, +-2.293236550742623581e-04, +-2.298374833872373713e-04, +-2.303509042950784231e-04, +-2.308639169902605953e-04, +-2.313765206660075300e-04, +-2.318887145162761693e-04, +-2.324004977356830027e-04, +-2.329118695196004255e-04, +-2.334228290641345396e-04, +-2.339333755661139862e-04, +-2.344435082230583419e-04, +-2.349532262332698412e-04, +-2.354625287956970119e-04, +-2.359714151100979825e-04, +-2.364798843769013522e-04, +-2.369879357973141230e-04, +-2.374955685732519045e-04, +-2.380027819073286409e-04, +-2.385095750029498523e-04, +-2.390159470642466341e-04, +-2.395218972960515334e-04, +-2.400274249039926306e-04, +-2.405325290943588815e-04, +-2.410372090742579230e-04, +-2.415414640514838005e-04, +-2.420452932346069293e-04, +-2.425486958329427071e-04, +-2.430516710565407265e-04, +-2.435542181161637679e-04, +-2.440563362233788731e-04, +-2.445580245904925912e-04, +-2.450592824305247676e-04, +-2.455601089573078845e-04, +-2.460605033853453284e-04, +-2.465604649299755384e-04, +-2.470599928072344208e-04, +-2.475590862339606250e-04, +-2.480577444277070730e-04, +-2.485559666068401638e-04, +-2.490537519904091265e-04, +-2.495510997983017669e-04, +-2.500480092511150128e-04, +-2.505444795702425182e-04, +-2.510405099778534126e-04, +-2.515360996968293633e-04, +-2.520312479508507149e-04, +-2.525259539643808773e-04, +-2.530202169626511463e-04, +-2.535140361716313223e-04, +-2.540074108181201865e-04, +-2.545003401296108973e-04, +-2.549928233344512358e-04, +-2.554848596617086760e-04, +-2.559764483412601036e-04, +-2.564675886037748472e-04, +-2.569582796806438264e-04, +-2.574485208040737144e-04, +-2.579383112070760963e-04, +-2.584276501233990012e-04, +-2.589165367876334798e-04, +-2.594049704350769405e-04, +-2.598929503018910093e-04, +-2.603804756249725638e-04, +-2.608675456420381385e-04, +-2.613541595915947597e-04, +-2.618403167129325186e-04, +-2.623260162460993639e-04, +-2.628112574319938009e-04, +-2.632960395122962613e-04, +-2.637803617294537622e-04, +-2.642642233267632266e-04, +-2.647476235482446321e-04, +-2.652305616387946418e-04, +-2.657130368440555252e-04, +-2.661950484105065013e-04, +-2.666765955854274723e-04, +-2.671576776168956631e-04, +-2.676382937537570518e-04, +-2.681184432457229725e-04, +-2.685981253433002386e-04, +-2.690773392977718979e-04, +-2.695560843612868963e-04, +-2.700343597867406529e-04, +-2.705121648278732346e-04, +-2.709894987392491897e-04, +-2.714663607762491456e-04, +-2.719427501950372281e-04, +-2.724186662526494247e-04, +-2.728941082068647261e-04, +-2.733690753163551808e-04, +-2.738435668405630541e-04, +-2.743175820397830114e-04, +-2.747911201751444994e-04, +-2.752641805085463147e-04, +-2.757367623027466466e-04, +-2.762088648213398756e-04, +-2.766804873287483329e-04, +-2.771516290902138442e-04, +-2.776222893717737142e-04, +-2.780924674403528296e-04, +-2.785621625636937283e-04, +-2.790313740103448356e-04, +-2.795001010497288234e-04, +-2.799683429520737630e-04, +-2.804360989884532407e-04, +-2.809033684307712334e-04, +-2.813701505517997303e-04, +-2.818364446251095065e-04, +-2.823022499251673758e-04, +-2.827675657272059242e-04, +-2.832323913073762738e-04, +-2.836967259426232367e-04, +-2.841605689107661969e-04, +-2.846239194904739566e-04, +-2.850867769612510749e-04, +-2.855491406034209008e-04, +-2.860110096982094899e-04, +-2.864723835276832085e-04, +-2.869332613747304110e-04, +-2.873936425231451400e-04, +-2.878535262575024432e-04, +-2.883129118633062584e-04, +-2.887717986268674951e-04, +-2.892301858353935897e-04, +-2.896880727769112558e-04, +-2.901454587403607017e-04, +-2.906023430154671522e-04, +-2.910587248928953475e-04, +-2.915146036641188968e-04, +-2.919699786215078276e-04, +-2.924248490583079862e-04, +-2.928792142685815686e-04, +-2.933330735472876229e-04, +-2.937864261902667622e-04, +-2.942392714942291838e-04, +-2.946916087567234984e-04, +-2.951434372762251472e-04, +-2.955947563520080318e-04, +-2.960455652842940806e-04, +-2.964958633741294320e-04, +-2.969456499234677019e-04, +-2.973949242351488415e-04, +-2.978436856128423250e-04, +-2.982919333611270553e-04, +-2.987396667854743423e-04, +-2.991868851922348379e-04, +-2.996335878886350669e-04, +-3.000797741827528151e-04, +-3.005254433836140036e-04, +-3.009705948010787382e-04, +-3.014152277459254984e-04, +-3.018593415298197495e-04, +-3.023029354653086298e-04, +-3.027460088657974780e-04, +-3.031885610456350514e-04, +-3.036305913200518887e-04, +-3.040720990051412826e-04, +-3.045130834179433595e-04, +-3.049535438763215892e-04, +-3.053934796991093683e-04, +-3.058328902059838741e-04, +-3.062717747175548060e-04, +-3.067101325553308840e-04, +-3.071479630417088980e-04, +-3.075852654999632453e-04, +-3.080220392543166750e-04, +-3.084582836298877038e-04, +-3.088939979526711551e-04, +-3.093291815496155162e-04, +-3.097638337485086098e-04, +-3.101979538781161005e-04, +-3.106315412680620155e-04, +-3.110645952489224202e-04, +-3.114971151521431811e-04, +-3.119291003101322857e-04, +-3.123605500561432366e-04, +-3.127914637244110646e-04, +-3.132218406500399512e-04, +-3.136516801690771169e-04, +-3.140809816184980761e-04, +-3.145097443361490118e-04, +-3.149379676608223444e-04, +-3.153656509322437756e-04, +-3.157927934910593863e-04, +-3.162193946788266919e-04, +-3.166454538380000057e-04, +-3.170709703120049776e-04, +-3.174959434451843842e-04, +-3.179203725827774748e-04, +-3.183442570709807949e-04, +-3.187675962569287789e-04, +-3.191903894886374804e-04, +-3.196126361150818758e-04, +-3.200343354861894668e-04, +-3.204554869527802708e-04, +-3.208760898666552911e-04, +-3.212961435804850070e-04, +-3.217156474479416464e-04, +-3.221346008235857240e-04, +-3.225530030629431282e-04, +-3.229708535224815936e-04, +-3.233881515595958480e-04, +-3.238048965325925955e-04, +-3.242210878007696639e-04, +-3.246367247243549638e-04, +-3.250518066644940201e-04, +-3.254663329833223972e-04, +-3.258803030438565734e-04, +-3.262937162101229075e-04, +-3.267065718470507358e-04, +-3.271188693205444179e-04, +-3.275306079974576404e-04, +-3.279417872455850152e-04, +-3.283524064336434847e-04, +-3.287624649313510353e-04, +-3.291719621093687465e-04, +-3.295808973392811672e-04, +-3.299892699936789317e-04, +-3.303970794460487671e-04, +-3.308043250708647296e-04, +-3.312110062435665741e-04, +-3.316171223405541164e-04, +-3.320226727391775842e-04, +-3.324276568177189682e-04, +-3.328320739554699228e-04, +-3.332359235326750073e-04, +-3.336392049305129297e-04, +-3.340419175311572079e-04, +-3.344440607177539973e-04, +-3.348456338743721096e-04, +-3.352466363860729433e-04, +-3.356470676388963355e-04, +-3.360469270198525381e-04, +-3.364462139169102921e-04, +-3.368449277189831123e-04, +-3.372430678160036094e-04, +-3.376406335988668943e-04, +-3.380376244594142615e-04, +-3.384340397904995416e-04, +-3.388298789859230738e-04, +-3.392251414404735019e-04, +-3.396198265499055478e-04, +-3.400139337109811576e-04, +-3.404074623214029308e-04, +-3.408004117799039471e-04, +-3.411927814861306181e-04, +-3.415845708407768029e-04, +-3.419757792454735453e-04, +-3.423664061028638831e-04, +-3.427564508165734667e-04, +-3.431459127912071978e-04, +-3.435347914323297683e-04, +-3.439230861465359702e-04, +-3.443107963414016363e-04, +-3.446979214254653704e-04, +-3.450844608082992383e-04, +-3.454704139004064725e-04, +-3.458557801133420903e-04, +-3.462405588596117372e-04, +-3.466247495527477983e-04, +-3.470083516072465144e-04, +-3.473913644386381842e-04, +-3.477737874633909953e-04, +-3.481556200990335937e-04, +-3.485368617640448741e-04, +-3.489175118779329647e-04, +-3.492975698612132713e-04, +-3.496770351353571953e-04, +-3.500559071228662384e-04, +-3.504341852472518367e-04, +-3.508118689330292348e-04, +-3.511889576057102219e-04, +-3.515654506917835075e-04, +-3.519413476187896938e-04, +-3.523166478152673373e-04, +-3.526913507107358719e-04, +-3.530654557357495484e-04, +-3.534389623218810628e-04, +-3.538118699016708701e-04, +-3.541841779086950552e-04, +-3.545558857775519429e-04, +-3.549269929438530992e-04, +-3.552974988442136276e-04, +-3.556674029162389420e-04, +-3.560367045986010943e-04, +-3.564054033309449368e-04, +-3.567734985539597337e-04, +-3.571409897093503214e-04, +-3.575078762398356449e-04, +-3.578741575891243630e-04, +-3.582398332019923149e-04, +-3.586049025242250572e-04, +-3.589693650026074012e-04, +-3.593332200849881945e-04, +-3.596964672201814414e-04, +-3.600591058580830716e-04, +-3.604211354495766143e-04, +-3.607825554465942395e-04, +-3.611433653020952898e-04, +-3.615035644700588004e-04, +-3.618631524054700000e-04, +-3.622221285643809725e-04, +-3.625804924038701074e-04, +-3.629382433820213917e-04, +-3.632953809579903296e-04, +-3.636519045919087492e-04, +-3.640078137450007581e-04, +-3.643631078794831593e-04, +-3.647177864586393400e-04, +-3.650718489467746561e-04, +-3.654252948092058615e-04, +-3.657781235123301177e-04, +-3.661303345235714340e-04, +-3.664819273113713435e-04, +-3.668329013452362283e-04, +-3.671832560957191596e-04, +-3.675329910343778299e-04, +-3.678821056338313117e-04, +-3.682305993677562625e-04, +-3.685784717108700655e-04, +-3.689257221389274683e-04, +-3.692723501287039950e-04, +-3.696183551580630583e-04, +-3.699637367059079290e-04, +-3.703084942521626542e-04, +-3.706526272778348872e-04, +-3.709961352649580445e-04, +-3.713390176966214476e-04, +-3.716812740569593173e-04, +-3.720229038311816745e-04, +-3.723639065055186657e-04, +-3.727042815672933131e-04, +-3.730440285048284362e-04, +-3.733831468075578903e-04, +-3.737216359659267665e-04, +-3.740594954714671766e-04, +-3.743967248167630714e-04, +-3.747333234954520836e-04, +-3.750692910022034639e-04, +-3.754046268327890972e-04, +-3.757393304840299418e-04, +-3.760734014537866522e-04, +-3.764068392410184504e-04, +-3.767396433456957397e-04, +-3.770718132689029412e-04, +-3.774033485127514863e-04, +-3.777342485804392313e-04, +-3.780645129762409706e-04, +-3.783941412054543890e-04, +-3.787231327744708604e-04, +-3.790514871907614070e-04, +-3.793792039628371263e-04, +-3.797062826002997149e-04, +-3.800327226138305718e-04, +-3.803585235151401667e-04, +-3.806836848170355855e-04, +-3.810082060334029123e-04, +-3.813320866791999105e-04, +-3.816553262704515783e-04, +-3.819779243242335054e-04, +-3.822998803587339444e-04, +-3.826211938932092493e-04, +-3.829418644479684803e-04, +-3.832618915444235483e-04, +-3.835812747050668797e-04, +-3.839000134534355300e-04, +-3.842181073141655019e-04, +-3.845355558129822044e-04, +-3.848523584766885266e-04, +-3.851685148331650006e-04, +-3.854840244113501768e-04, +-3.857988867413007436e-04, +-3.861131013541497310e-04, +-3.864266677820933919e-04, +-3.867395855584415633e-04, +-3.870518542175736473e-04, +-3.873634732949343294e-04, +-3.876744423270903897e-04, +-3.879847608516907506e-04, +-3.882944284074489128e-04, +-3.886034445342022607e-04, +-3.889118087728285792e-04, +-3.892195206653474267e-04, +-3.895265797548299832e-04, +-3.898329855854642113e-04, +-3.901387377025249863e-04, +-3.904438356523783787e-04, +-3.907482789824593739e-04, +-3.910520672413335635e-04, +-3.913551999786524216e-04, +-3.916576767451442520e-04, +-3.919594970926665550e-04, +-3.922606605741264471e-04, +-3.925611667435750947e-04, +-3.928610151561293270e-04, +-3.931602053680306155e-04, +-3.934587369365989966e-04, +-3.937566094202617478e-04, +-3.940538223785401066e-04, +-3.943503753720777852e-04, +-3.946462679625928859e-04, +-3.949414997129250095e-04, +-3.952360701870237633e-04, +-3.955299789499117894e-04, +-3.958232255677319273e-04, +-3.961158096077429321e-04, +-3.964077306383070594e-04, +-3.966989882288865423e-04, +-3.969895819500314483e-04, +-3.972795113734309074e-04, +-3.975687760718774966e-04, +-3.978573756192516813e-04, +-3.981453095905636654e-04, +-3.984325775619405440e-04, +-3.987191791105872173e-04, +-3.990051138148377279e-04, +-3.992903812541465330e-04, +-3.995749810090815112e-04, +-3.998589126613154516e-04, +-4.001421757936142356e-04, +-4.004247699898992878e-04, +-4.007066948351746083e-04, +-4.009879499155789232e-04, +-4.012685348183650850e-04, +-4.015484491318984457e-04, +-4.018276924456426545e-04, +-4.021062643502099098e-04, +-4.023841644373237175e-04, +-4.026613922998098375e-04, +-4.029379475316462655e-04, +-4.032138297278827855e-04, +-4.034890384847396316e-04, +-4.037635733995217284e-04, +-4.040374340706792970e-04, +-4.043106200977872561e-04, +-4.045831310815163270e-04, +-4.048549666236787880e-04, +-4.051261263272140536e-04, +-4.053966097961927951e-04, +-4.056664166357875040e-04, +-4.059355464523273531e-04, +-4.062039988532290240e-04, +-4.064717734470766675e-04, +-4.067388698435515926e-04, +-4.070052876534890245e-04, +-4.072710264888392364e-04, +-4.075360859626657060e-04, +-4.078004656891893510e-04, +-4.080641652837592556e-04, +-4.083271843628339141e-04, +-4.085895225440237854e-04, +-4.088511794460769817e-04, +-4.091121546888438695e-04, +-4.093724478933274849e-04, +-4.096320586816679750e-04, +-4.098909866771425440e-04, +-4.101492315041554786e-04, +-4.104067927882287694e-04, +-4.106636701560525808e-04, +-4.109198632354431292e-04, +-4.111753716553400817e-04, +-4.114301950458423883e-04, +-4.116843330381694138e-04, +-4.119377852646850607e-04, +-4.121905513588872529e-04, +-4.124426309554278308e-04, +-4.126940236900818139e-04, +-4.129447291997881127e-04, +-4.131947471225887593e-04, +-4.134440770977072951e-04, +-4.136927187654794360e-04, +-4.139406717674054938e-04, +-4.141879357461294509e-04, +-4.144345103454114758e-04, +-4.146803952101764412e-04, +-4.149255899864963599e-04, +-4.151700943215893549e-04, +-4.154139078638022578e-04, +-4.156570302626559285e-04, +-4.158994611687799321e-04, +-4.161412002339885414e-04, +-4.163822471112182868e-04, +-4.166226014545675298e-04, +-4.168622629192908252e-04, +-4.171012311617646601e-04, +-4.173395058395288162e-04, +-4.175770866112879422e-04, +-4.178139731368715466e-04, +-4.180501650772800760e-04, +-4.182856620946701163e-04, +-4.185204638523219744e-04, +-4.187545700146845648e-04, +-4.189879802473660850e-04, +-4.192206942171291368e-04, +-4.194527115918824322e-04, +-4.196840320406745048e-04, +-4.199146552337361025e-04, +-4.201445808424450587e-04, +-4.203738085393234742e-04, +-4.206023379980615147e-04, +-4.208301688935126949e-04, +-4.210573009016609189e-04, +-4.212837336996656367e-04, +-4.215094669658456359e-04, +-4.217345003796813181e-04, +-4.219588336218068388e-04, +-4.221824663739978559e-04, +-4.224053983192163067e-04, +-4.226276291415803220e-04, +-4.228491585263527875e-04, +-4.230699861599778811e-04, +-4.232901117300520710e-04, +-4.235095349253165261e-04, +-4.237282554357017848e-04, +-4.239462729522952837e-04, +-4.241635871673333342e-04, +-4.243801977742409667e-04, +-4.245961044675726796e-04, +-4.248113069430798218e-04, +-4.250258048976565456e-04, +-4.252395980293758020e-04, +-4.254526860374825649e-04, +-4.256650686223627678e-04, +-4.258767454855818483e-04, +-4.260877163298797056e-04, +-4.262979808591619191e-04, +-4.265075387784894481e-04, +-4.267163897941108871e-04, +-4.269245336134167663e-04, +-4.271319699449937081e-04, +-4.273386984985783478e-04, +-4.275447189850918660e-04, +-4.277500311166149973e-04, +-4.279546346064030471e-04, +-4.281585291688759162e-04, +-4.283617145196408696e-04, +-4.285641903754574622e-04, +-4.287659564542702821e-04, +-4.289670124752027703e-04, +-4.291673581585266463e-04, +-4.293669932257017526e-04, +-4.295659173993655921e-04, +-4.297641304033299669e-04, +-4.299616319625775094e-04, +-4.301584218032484543e-04, +-4.303544996526830857e-04, +-4.305498652393947401e-04, +-4.307445182930569045e-04, +-4.309384585445307555e-04, +-4.311316857258624480e-04, +-4.313241995702487468e-04, +-4.315159998120815868e-04, +-4.317070861869338159e-04, +-4.318974584315445043e-04, +-4.320871162838496810e-04, +-4.322760594829316481e-04, +-4.324642877690878270e-04, +-4.326518008837669537e-04, +-4.328385985696151569e-04, +-4.330246805704611045e-04, +-4.332100466312912299e-04, +-4.333946964982873535e-04, +-4.335786299188164371e-04, +-4.337618466414270061e-04, +-4.339443464158338078e-04, +-4.341261289929580899e-04, +-4.343071941248737695e-04, +-4.344875415648629443e-04, +-4.346671710673753980e-04, +-4.348460823880536449e-04, +-4.350242752837285933e-04, +-4.352017495123918444e-04, +-4.353785048332365661e-04, +-4.355545410066423147e-04, +-4.357298577941721616e-04, +-4.359044549585632065e-04, +-4.360783322637591035e-04, +-4.362514894748643077e-04, +-4.364239263581825646e-04, +-4.365956426812068808e-04, +-4.367666382126163802e-04, +-4.369369127222754909e-04, +-4.371064659812209344e-04, +-4.372752977616998897e-04, +-4.374434078371428882e-04, +-4.376107959821556826e-04, +-4.377774619725440745e-04, +-4.379434055853084393e-04, +-4.381086265986181396e-04, +-4.382731247918391715e-04, +-4.384368999455392070e-04, +-4.385999518414707881e-04, +-4.387622802625723573e-04, +-4.389238849929624569e-04, +-4.390847658179686231e-04, +-4.392449225241090629e-04, +-4.394043548990767705e-04, +-4.395630627317782336e-04, +-4.397210458122849689e-04, +-4.398783039318861069e-04, +-4.400348368830451313e-04, +-4.401906444594334356e-04, +-4.403457264558978510e-04, +-4.405000826685008162e-04, +-4.406537128944681731e-04, +-4.408066169322472799e-04, +-4.409587945814623963e-04, +-4.411102456429397286e-04, +-4.412609699187036889e-04, +-4.414109672119593858e-04, +-4.415602373271132778e-04, +-4.417087800697705176e-04, +-4.418565952467326747e-04, +-4.420036826659858639e-04, +-4.421500421367333795e-04, +-4.422956734693436536e-04, +-4.424405764754089118e-04, +-4.425847509676997444e-04, +-4.427281967601999642e-04, +-4.428709136680745138e-04, +-4.430129015076936434e-04, +-4.431541600966193580e-04, +-4.432946892536223857e-04, +-4.434344887986578368e-04, +-4.435735585528874847e-04, +-4.437118983386749947e-04, +-4.438495079795677645e-04, +-4.439863873003169269e-04, +-4.441225361268833134e-04, +-4.442579542864193479e-04, +-4.443926416072775578e-04, +-4.445265979189991896e-04, +-4.446598230523409346e-04, +-4.447923168392569314e-04, +-4.449240791128903087e-04, +-4.450551097075995319e-04, +-4.451854084589263101e-04, +-4.453149752036286648e-04, +-4.454438097796541499e-04, +-4.455719120261579578e-04, +-4.456992817834988540e-04, +-4.458259188932307739e-04, +-4.459518231981017935e-04, +-4.460769945420775475e-04, +-4.462014327703230153e-04, +-4.463251377291898897e-04, +-4.464481092662560963e-04, +-4.465703472302791181e-04, +-4.466918514712271129e-04, +-4.468126218402772320e-04, +-4.469326581898036945e-04, +-4.470519603733833706e-04, +-4.471705282458037509e-04, +-4.472883616630380635e-04, +-4.474054604822824623e-04, +-4.475218245619237180e-04, +-4.476374537615594924e-04, +-4.477523479419942727e-04, +-4.478665069652241928e-04, +-4.479799306944554646e-04, +-4.480926189941047575e-04, +-4.482045717297885191e-04, +-4.483157887683244386e-04, +-4.484262699777452166e-04, +-4.485360152272699417e-04, +-4.486450243873455076e-04, +-4.487532973296051416e-04, +-4.488608339268988713e-04, +-4.489676340532790504e-04, +-4.490736975840009006e-04, +-4.491790243955243547e-04, +-4.492836143655237605e-04, +-4.493874673728683652e-04, +-4.494905832976408546e-04, +-4.495929620211338846e-04, +-4.496946034258313780e-04, +-4.497955073954339493e-04, +-4.498956738148485505e-04, +-4.499951025701914528e-04, +-4.500937935487804402e-04, +-4.501917466391337254e-04, +-4.502889617309905495e-04, +-4.503854387152909076e-04, +-4.504811774841786928e-04, +-4.505761779310135141e-04, +-4.506704399503464104e-04, +-4.507639634379556831e-04, +-4.508567482908098709e-04, +-4.509487944070981070e-04, +-4.510401016862083815e-04, +-4.511306700287448339e-04, +-4.512204993365057440e-04, +-4.513095895125125343e-04, +-4.513979404609821228e-04, +-4.514855520873479024e-04, +-4.515724242982542655e-04, +-4.516585570015396365e-04, +-4.517439501062586434e-04, +-4.518286035226787571e-04, +-4.519125171622730814e-04, +-4.519956909377171000e-04, +-4.520781247629046149e-04, +-4.521598185529279593e-04, +-4.522407722240959953e-04, +-4.523209856939206159e-04, +-4.524004588811261773e-04, +-4.524791917056498244e-04, +-4.525571840886259863e-04, +-4.526344359524041034e-04, +-4.527109472205443448e-04, +-4.527867178178176621e-04, +-4.528617476701965743e-04, +-4.529360367048703459e-04, +-4.530095848502304050e-04, +-4.530823920358797757e-04, +-4.531544581926337284e-04, +-4.532257832525164731e-04, +-4.532963671487581780e-04, +-4.533662098157957825e-04, +-4.534353111892824840e-04, +-4.535036712060785762e-04, +-4.535712898042504738e-04, +-4.536381669230797652e-04, +-4.537043025030480878e-04, +-4.537696964858548552e-04, +-4.538343488144061435e-04, +-4.538982594328181612e-04, +-4.539614282864176827e-04, +-4.540238553217370069e-04, +-4.540855404865167216e-04, +-4.541464837297134018e-04, +-4.542066850014905019e-04, +-4.542661442532173804e-04, +-4.543248614374811715e-04, +-4.543828365080653723e-04, +-4.544400694199744544e-04, +-4.544965601294182508e-04, +-4.545523085938150466e-04, +-4.546073147717920120e-04, +-4.546615786231926839e-04, +-4.547151001090578293e-04, +-4.547678791916491352e-04, +-4.548199158344298017e-04, +-4.548712100020756545e-04, +-4.549217616604743866e-04, +-4.549715707767174261e-04, +-4.550206373191062795e-04, +-4.550689612571559464e-04, +-4.551165425615878181e-04, +-4.551633812043327136e-04, +-4.552094771585321804e-04, +-4.552548303985309050e-04, +-4.552994408998911331e-04, +-4.553433086393768943e-04, +-4.553864335949679341e-04, +-4.554288157458452396e-04, +-4.554704550724051346e-04, +-4.555113515562489793e-04, +-4.555515051801897297e-04, +-4.555909159282445654e-04, +-4.556295837856468153e-04, +-4.556675087388292614e-04, +-4.557046907754416483e-04, +-4.557411298843342035e-04, +-4.557768260555737920e-04, +-4.558117792804305263e-04, +-4.558459895513847053e-04, +-4.558794568621222609e-04, +-4.559121812075395824e-04, +-4.559441625837416735e-04, +-4.559754009880394418e-04, +-4.560058964189557160e-04, +-4.560356488762140788e-04, +-4.560646583607535576e-04, +-4.560929248747157229e-04, +-4.561204484214507592e-04, +-4.561472290055210437e-04, +-4.561732666326897070e-04, +-4.561985613099290367e-04, +-4.562231130454221569e-04, +-4.562469218485550601e-04, +-4.562699877299235458e-04, +-4.562923107013302929e-04, +-4.563138907757806860e-04, +-4.563347279674932777e-04, +-4.563548222918893259e-04, +-4.563741737655976731e-04, +-4.563927824064514392e-04, +-4.564106482334963160e-04, +-4.564277712669763095e-04, +-4.564441515283474554e-04, +-4.564597890402683866e-04, +-4.564746838266051576e-04, +-4.564888359124303773e-04, +-4.565022453240213658e-04, +-4.565149120888596125e-04, +-4.565268362356333779e-04, +-4.565380177942373143e-04, +-4.565484567957691048e-04, +-4.565581532725327156e-04, +-4.565671072580369328e-04, +-4.565753187869947658e-04, +-4.565827878953241520e-04, +-4.565895146201480112e-04, +-4.565954989997928360e-04, +-4.566007410737885292e-04, +-4.566052408828718732e-04, +-4.566089984689825727e-04, +-4.566120138752595143e-04, +-4.566142871460532890e-04, +-4.566158183269100916e-04, +-4.566166074645857070e-04, +-4.566166546070351564e-04, +-4.566159598034175756e-04, +-4.566145231040951856e-04, +-4.566123445606345391e-04, +-4.566094242257997442e-04, +-4.566057621535631441e-04, +-4.566013583990947999e-04, +-4.565962130187681831e-04, +-4.565903260701602837e-04, +-4.565836976120473279e-04, +-4.565763277044097650e-04, +-4.565682164084264674e-04, +-4.565593637864773864e-04, +-4.565497699021483775e-04, +-4.565394348202178642e-04, +-4.565283586066715832e-04, +-4.565165413286947785e-04, +-4.565039830546690569e-04, +-4.564906838541797607e-04, +-4.564766437980113598e-04, +-4.564618629581459878e-04, +-4.564463414077673999e-04, +-4.564300792212584246e-04, +-4.564130764741997168e-04, +-4.563953332433706798e-04, +-4.563768496067526631e-04, +-4.563576256435183378e-04, +-4.563376614340470920e-04, +-4.563169570599107192e-04, +-4.562955126038807912e-04, +-4.562733281499240499e-04, +-4.562504037832091296e-04, +-4.562267395900995097e-04, +-4.562023356581534602e-04, +-4.561771920761279451e-04, +-4.561513089339767251e-04, +-4.561246863228497609e-04, +-4.560973243350908827e-04, +-4.560692230642446202e-04, +-4.560403826050469871e-04, +-4.560108030534271075e-04, +-4.559804845065152388e-04, +-4.559494270626344775e-04, +-4.559176308212990248e-04, +-4.558850958832212337e-04, +-4.558518223503055375e-04, +-4.558178103256530032e-04, +-4.557830599135552063e-04, +-4.557475712194974287e-04, +-4.557113443501620200e-04, +-4.556743794134190191e-04, +-4.556366765183335809e-04, +-4.555982357751615854e-04, +-4.555590572953553295e-04, +-4.555191411915562633e-04, +-4.554784875775930923e-04, +-4.554370965684947340e-04, +-4.553949682804723197e-04, +-4.553521028309346448e-04, +-4.553085003384772182e-04, +-4.552641609228886047e-04, +-4.552190847051422397e-04, +-4.551732718074079213e-04, +-4.551267223530389085e-04, +-4.550794364665830885e-04, +-4.550314142737717552e-04, +-4.549826559015294754e-04, +-4.549331614779656861e-04, +-4.548829311323795196e-04, +-4.548319649952576888e-04, +-4.547802631982754635e-04, +-4.547278258742926582e-04, +-4.546746531573570482e-04, +-4.546207451827025798e-04, +-4.545661020867518645e-04, +-4.545107240071117878e-04, +-4.544546110825730214e-04, +-4.543977634531150105e-04, +-4.543401812598981673e-04, +-4.542818646452718946e-04, +-4.542228137527675922e-04, +-4.541630287271017472e-04, +-4.541025097141714343e-04, +-4.540412568610654835e-04, +-4.539792703160433918e-04, +-4.539165502285612904e-04, +-4.538530967492454354e-04, +-4.537889100299141091e-04, +-4.537239902235607066e-04, +-4.536583374843620835e-04, +-4.535919519676766590e-04, +-4.535248338300479397e-04, +-4.534569832291925388e-04, +-4.533884003240099339e-04, +-4.533190852745829554e-04, +-4.532490382421674861e-04, +-4.531782593892070437e-04, +-4.531067488793163013e-04, +-4.530345068772929592e-04, +-4.529615335491105348e-04, +-4.528878290619209649e-04, +-4.528133935840527625e-04, +-4.527382272850172511e-04, +-4.526623303354928977e-04, +-4.525857029073426601e-04, +-4.525083451736037414e-04, +-4.524302573084807593e-04, +-4.523514394873684062e-04, +-4.522718918868266747e-04, +-4.521916146845929470e-04, +-4.521106080595740798e-04, +-4.520288721918581140e-04, +-4.519464072627002340e-04, +-4.518632134545361037e-04, +-4.517792909509666332e-04, +-4.516946399367697965e-04, +-4.516092605978940184e-04, +-4.515231531214552465e-04, +-4.514363176957493658e-04, +-4.513487545102375618e-04, +-4.512604637555533136e-04, +-4.511714456234960512e-04, +-4.510817003070373356e-04, +-4.509912280003243825e-04, +-4.509000288986659676e-04, +-4.508081031985370344e-04, +-4.507154510975883437e-04, +-4.506220727946324330e-04, +-4.505279684896505558e-04, +-4.504331383837968010e-04, +-4.503375826793845952e-04, +-4.502413015798917436e-04, +-4.501442952899706220e-04, +-4.500465640154263842e-04, +-4.499481079632458016e-04, +-4.498489273415641953e-04, +-4.497490223596923241e-04, +-4.496483932280970317e-04, +-4.495470401584080226e-04, +-4.494449633634221451e-04, +-4.493421630571026323e-04, +-4.492386394545644108e-04, +-4.491343927720889005e-04, +-4.490294232271205993e-04, +-4.489237310382561863e-04, +-4.488173164252684294e-04, +-4.487101796090732790e-04, +-4.486023208117570818e-04, +-4.484937402565570110e-04, +-4.483844381678766242e-04, +-4.482744147712672701e-04, +-4.481636702934522652e-04, +-4.480522049622986513e-04, +-4.479400190068408847e-04, +-4.478271126572576886e-04, +-4.477134861448886960e-04, +-4.475991397022364006e-04, +-4.474840735629530383e-04, +-4.473682879618403707e-04, +-4.472517831348568401e-04, +-4.471345593191148053e-04, +-4.470166167528865590e-04, +-4.468979556755888231e-04, +-4.467785763277867068e-04, +-4.466584789512100234e-04, +-4.465376637887291666e-04, +-4.464161310843628634e-04, +-4.462938810832943275e-04, +-4.461709140318462696e-04, +-4.460472301774886486e-04, +-4.459228297688467495e-04, +-4.457977130556860582e-04, +-4.456718802889334582e-04, +-4.455453317206492579e-04, +-4.454180676040489289e-04, +-4.452900881934895535e-04, +-4.451613937444737819e-04, +-4.450319845136531936e-04, +-4.449018607588279173e-04, +-4.447710227389340006e-04, +-4.446394707140537638e-04, +-4.445072049454171551e-04, +-4.443742256953872225e-04, +-4.442405332274866224e-04, +-4.441061278063603772e-04, +-4.439710096978101905e-04, +-4.438351791687706487e-04, +-4.436986364873156722e-04, +-4.435613819226606291e-04, +-4.434234157451710638e-04, +-4.432847382263349406e-04, +-4.431453496387830274e-04, +-4.430052502562940452e-04, +-4.428644403537644191e-04, +-4.427229202072485020e-04, +-4.425806900939300063e-04, +-4.424377502921208105e-04, +-4.422941010812701758e-04, +-4.421497427419645286e-04, +-4.420046755559350503e-04, +-4.418588998060286746e-04, +-4.417124157762303683e-04, +-4.415652237516671966e-04, +-4.414173240185869100e-04, +-4.412687168643671066e-04, +-4.411194025775312774e-04, +-4.409693814477244666e-04, +-4.408186537657172283e-04, +-4.406672198234106688e-04, +-4.405150799138370424e-04, +-4.403622343311660941e-04, +-4.402086833706807733e-04, +-4.400544273287919795e-04, +-4.398994665030470726e-04, +-4.397438011921086230e-04, +-4.395874316957712707e-04, +-4.394303583149545157e-04, +-4.392725813517025005e-04, +-4.391141011091759879e-04, +-4.389549178916680810e-04, +-4.387950320045806425e-04, +-4.386344437544594226e-04, +-4.384731534489517209e-04, +-4.383111613968383702e-04, +-4.381484679080121071e-04, +-4.379850732934832095e-04, +-4.378209778653889832e-04, +-4.376561819369895342e-04, +-4.374906858226509086e-04, +-4.373244898378563688e-04, +-4.371575942992196205e-04, +-4.369899995244508231e-04, +-4.368217058324000120e-04, +-4.366527135430084178e-04, +-4.364830229773487445e-04, +-4.363126344575962755e-04, +-4.361415483070473051e-04, +-4.359697648500985385e-04, +-4.357972844122811359e-04, +-4.356241073202154470e-04, +-4.354502339016459223e-04, +-4.352756644854214891e-04, +-4.351003994014900219e-04, +-4.349244389809355849e-04, +-4.347477835559314320e-04, +-4.345704334597603894e-04, +-4.343923890268095432e-04, +-4.342136505925770699e-04, +-4.340342184936781997e-04, +-4.338540930678147500e-04, +-4.336732746537957255e-04, +-4.334917635915484855e-04, +-4.333095602220884946e-04, +-4.331266648875332003e-04, +-4.329430779311187302e-04, +-4.327587996971745754e-04, +-4.325738305311242955e-04, +-4.323881707794938667e-04, +-4.322018207899098389e-04, +-4.320147809111103405e-04, +-4.318270514929116845e-04, +-4.316386328862442559e-04, +-4.314495254431225334e-04, +-4.312597295166612985e-04, +-4.310692454610717318e-04, +-4.308780736316729061e-04, +-4.306862143848586098e-04, +-4.304936680781210902e-04, +-4.303004350700577224e-04, +-4.301065157203362056e-04, +-4.299119103897442742e-04, +-4.297166194401381436e-04, +-4.295206432344772594e-04, +-4.293239821368027755e-04, +-4.291266365122444392e-04, +-4.289286067270245482e-04, +-4.287298931484649980e-04, +-4.285304961449552439e-04, +-4.283304160859743100e-04, +-4.281296533420998968e-04, +-4.279282082849735782e-04, +-4.277260812873520299e-04, +-4.275232727230447965e-04, +-4.273197829669667666e-04, +-4.271156123950977865e-04, +-4.269107613845073254e-04, +-4.267052303133616318e-04, +-4.264990195608802563e-04, +-4.262921295073723730e-04, +-4.260845605342349898e-04, +-4.258763130239344636e-04, +-4.256673873600078551e-04, +-4.254577839270894373e-04, +-4.252475031108807180e-04, +-4.250365452981507645e-04, +-4.248249108767440641e-04, +-4.246126002355865960e-04, +-4.243996137646863730e-04, +-4.241859518551066078e-04, +-4.239716148989838189e-04, +-4.237566032895399197e-04, +-4.235409174210529992e-04, +-4.233245576888691394e-04, +-4.231075244894231787e-04, +-4.228898182202084615e-04, +-4.226714392797721229e-04, +-4.224523880677510837e-04, +-4.222326649848228818e-04, +-4.220122704327648158e-04, +-4.217912048143844473e-04, +-4.215694685335783648e-04, +-4.213470619952903876e-04, +-4.211239856055307021e-04, +-4.209002397713719587e-04, +-4.206758249009660226e-04, +-4.204507414034985998e-04, +-4.202249896892206252e-04, +-4.199985701694578574e-04, +-4.197714832565672396e-04, +-4.195437293640006510e-04, +-4.193153089062300423e-04, +-4.190862222988084220e-04, +-4.188564699583310967e-04, +-4.186260523024397905e-04, +-4.183949697498571228e-04, +-4.181632227203426985e-04, +-4.179308116347045456e-04, +-4.176977369148013384e-04, +-4.174639989835570884e-04, +-4.172295982649233594e-04, +-4.169945351839261598e-04, +-4.167588101666289710e-04, +-4.165224236401388730e-04, +-4.162853760326043224e-04, +-4.160476677732311435e-04, +-4.158092992922825834e-04, +-4.155702710210409305e-04, +-4.153305833918398242e-04, +-4.150902368380684831e-04, +-4.148492317941451964e-04, +-4.146075686955224735e-04, +-4.143652479787210343e-04, +-4.141222700812876331e-04, +-4.138786354418002634e-04, +-4.136343444998757468e-04, +-4.133893976961749376e-04, +-4.131437954724102575e-04, +-4.128975382713053095e-04, +-4.126506265366225792e-04, +-4.124030607131766077e-04, +-4.121548412467930631e-04, +-4.119059685843460368e-04, +-4.116564431737379320e-04, +-4.114062654639086790e-04, +-4.111554359048097689e-04, +-4.109039549474441519e-04, +-4.106518230438208636e-04, +-4.103990406470101569e-04, +-4.101456082110747632e-04, +-4.098915261911283852e-04, +-4.096367950432963949e-04, +-4.093814152247278676e-04, +-4.091253871936026843e-04, +-4.088687114091383613e-04, +-4.086113883315487427e-04, +-4.083534184220756046e-04, +-4.080948021429967325e-04, +-4.078355399575829326e-04, +-4.075756323301617831e-04, +-4.073150797260431492e-04, +-4.070538826115781641e-04, +-4.067920414541155894e-04, +-4.065295567220365098e-04, +-4.062664288847302099e-04, +-4.060026584126071297e-04, +-4.057382457770732239e-04, +-4.054731914505685592e-04, +-4.052074959065307225e-04, +-4.049411596193997539e-04, +-4.046741830646570699e-04, +-4.044065667187745597e-04, +-4.041383110592248313e-04, +-4.038694165644921615e-04, +-4.035998837140692980e-04, +-4.033297129884750231e-04, +-4.030589048692020579e-04, +-4.027874598387547926e-04, +-4.025153783806580143e-04, +-4.022426609794198813e-04, +-4.019693081205457470e-04, +-4.016953202905715532e-04, +-4.014206979770120051e-04, +-4.011454416683800329e-04, +-4.008695518541833766e-04, +-4.005930290249346145e-04, +-4.003158736721578316e-04, +-4.000380862883390711e-04, +-3.997596673669899774e-04, +-3.994806174025963504e-04, +-3.992009368906366314e-04, +-3.989206263275863482e-04, +-3.986396862109350828e-04, +-3.983581170391283042e-04, +-3.980759193116074836e-04, +-3.977930935288213703e-04, +-3.975096401921775278e-04, +-3.972255598041097712e-04, +-3.969408528679976649e-04, +-3.966555198882346653e-04, +-3.963695613701829633e-04, +-3.960829778201773333e-04, +-3.957957697455703446e-04, +-3.955079376546739769e-04, +-3.952194820567771303e-04, +-3.949304034621458964e-04, +-3.946407023820465432e-04, +-3.943503793286896788e-04, +-3.940594348153104824e-04, +-3.937678693560691745e-04, +-3.934756834661412767e-04, +-3.931828776616457834e-04, +-3.928894524596881501e-04, +-3.925954083783671244e-04, +-3.923007459367215655e-04, +-3.920054656547653014e-04, +-3.917095680535016573e-04, +-3.914130536548863213e-04, +-3.911159229818328745e-04, +-3.908181765582551285e-04, +-3.905198149090145961e-04, +-3.902208385599305741e-04, +-3.899212480377887632e-04, +-3.896210438703425686e-04, +-3.893202265863266527e-04, +-3.890187967154057065e-04, +-3.887167547882136977e-04, +-3.884141013363595629e-04, +-3.881108368923876341e-04, +-3.878069619898205189e-04, +-3.875024771631279297e-04, +-3.871973829477451693e-04, +-3.868916798800412014e-04, +-3.865853684973663551e-04, +-3.862784493379888451e-04, +-3.859709229411785263e-04, +-3.856627898471086651e-04, +-3.853540505969355739e-04, +-3.850447057327448350e-04, +-3.847347557975659910e-04, +-3.844242013354056678e-04, +-3.841130428912020917e-04, +-3.838012810108264996e-04, +-3.834889162410998892e-04, +-3.831759491298032650e-04, +-3.828623802256297167e-04, +-3.825482100782597169e-04, +-3.822334392382664161e-04, +-3.819180682571992887e-04, +-3.816020976875246105e-04, +-3.812855280826382524e-04, +-3.809683599969110540e-04, +-3.806505939856258316e-04, +-3.803322306049906594e-04, +-3.800132704121690652e-04, +-3.796937139652428956e-04, +-3.793735618232175750e-04, +-3.790528145460605948e-04, +-3.787314726946555427e-04, +-3.784095368308029164e-04, +-3.780870075172342178e-04, +-3.777638853176131461e-04, +-3.774401707965520771e-04, +-3.771158645195536794e-04, +-3.767909670530522766e-04, +-3.764654789644251228e-04, +-3.761394008219517992e-04, +-3.758127331948265745e-04, +-3.754854766531982488e-04, +-3.751576317681148596e-04, +-3.748291991115360955e-04, +-3.745001792563375795e-04, +-3.741705727763187288e-04, +-3.738403802462179882e-04, +-3.735096022416500546e-04, +-3.731782393391506547e-04, +-3.728462921161910734e-04, +-3.725137611511235639e-04, +-3.721806470232256374e-04, +-3.718469503127059725e-04, +-3.715126716006466267e-04, +-3.711778114690423387e-04, +-3.708423705008182013e-04, +-3.705063492797663980e-04, +-3.701697483906351616e-04, +-3.698325684190269681e-04, +-3.694948099514803390e-04, +-3.691564735754138972e-04, +-3.688175598791411120e-04, +-3.684780694519110104e-04, +-3.681380028838444809e-04, +-3.677973607659605106e-04, +-3.674561436901682709e-04, +-3.671143522492946562e-04, +-3.667719870370258453e-04, +-3.664290486479930076e-04, +-3.660855376776667560e-04, +-3.657414547224470814e-04, +-3.653968003795918500e-04, +-3.650515752472729644e-04, +-3.647057799245421029e-04, +-3.643594150113448689e-04, +-3.640124811084915167e-04, +-3.636649788177074216e-04, +-3.633169087415764843e-04, +-3.629682714835611888e-04, +-3.626190676480445067e-04, +-3.622692978402627852e-04, +-3.619189626663279189e-04, +-3.615680627332312530e-04, +-3.612165986488470528e-04, +-3.608645710219502301e-04, +-3.605119804621535144e-04, +-3.601588275799520668e-04, +-3.598051129867352446e-04, +-3.594508372947439914e-04, +-3.590960011170830348e-04, +-3.587406050677645797e-04, +-3.583846497616480263e-04, +-3.580281358144526559e-04, +-3.576710638427647859e-04, +-3.573134344640457394e-04, +-3.569552482966440420e-04, +-3.565965059597256534e-04, +-3.562372080733581018e-04, +-3.558773552584486841e-04, +-3.555169481367575308e-04, +-3.551559873309411363e-04, +-3.547944734644943544e-04, +-3.544324071617587467e-04, +-3.540697890479352133e-04, +-3.537066197491007440e-04, +-3.533428998921507385e-04, +-3.529786301048878027e-04, +-3.526138110159091543e-04, +-3.522484432547043636e-04, +-3.518825274515905181e-04, +-3.515160642377236069e-04, +-3.511490542451479601e-04, +-3.507814981067324434e-04, +-3.504133964561801078e-04, +-3.500447499280430973e-04, +-3.496755591577362554e-04, +-3.493058247814815058e-04, +-3.489355474363945342e-04, +-3.485647277603771813e-04, +-3.481933663922090580e-04, +-3.478214639714772888e-04, +-3.474490211386222112e-04, +-3.470760385349418208e-04, +-3.467025168025319776e-04, +-3.463284565843261420e-04, +-3.459538585241186308e-04, +-3.455787232665090522e-04, +-3.452030514569178095e-04, +-3.448268437416387392e-04, +-3.444501007677667407e-04, +-3.440728231832167498e-04, +-3.436950116367280751e-04, +-3.433166667778758370e-04, +-3.429377892570803998e-04, +-3.425583797255458431e-04, +-3.421784388353060953e-04, +-3.417979672392377263e-04, +-3.414169655909983113e-04, +-3.410354345451192923e-04, +-3.406533747568914324e-04, +-3.402707868824649960e-04, +-3.398876715787688672e-04, +-3.395040295035801556e-04, +-3.391198613154483023e-04, +-3.387351676737894598e-04, +-3.383499492387735718e-04, +-3.379642066714229820e-04, +-3.375779406335396838e-04, +-3.371911517877260829e-04, +-3.368038407974311300e-04, +-3.364160083268860819e-04, +-3.360276550411137172e-04, +-3.356387816059412384e-04, +-3.352493886880224976e-04, +-3.348594769547683374e-04, +-3.344690470744467702e-04, +-3.340780997160674570e-04, +-3.336866355494766292e-04, +-3.332946552452910609e-04, +-3.329021594749139519e-04, +-3.325091489105835006e-04, +-3.321156242253059539e-04, +-3.317215860928590773e-04, +-3.313270351878473403e-04, +-3.309319721856355634e-04, +-3.305363977623697888e-04, +-3.301403125950244438e-04, +-3.297437173613320836e-04, +-3.293466127398037208e-04, +-3.289489994097294758e-04, +-3.285508780511932131e-04, +-3.281522493450827332e-04, +-3.277531139730237449e-04, +-3.273534726174289790e-04, +-3.269533259615131507e-04, +-3.265526746892408096e-04, +-3.261515194853430904e-04, +-3.257498610353683449e-04, +-3.253477000256114527e-04, +-3.249450371431301921e-04, +-3.245418730757499565e-04, +-3.241382085120774153e-04, +-3.237340441415101637e-04, +-3.233293806541712363e-04, +-3.229242187409554028e-04, +-3.225185590935500390e-04, +-3.221124024043589074e-04, +-3.217057493666050476e-04, +-3.212986006742413300e-04, +-3.208909570219729531e-04, +-3.204828191052647070e-04, +-3.200741876203636342e-04, +-3.196650632642274712e-04, +-3.192554467346336660e-04, +-3.188453387300495441e-04, +-3.184347399497393198e-04, +-3.180236510936915628e-04, +-3.176120728626363287e-04, +-3.172000059580976886e-04, +-3.167874510823195694e-04, +-3.163744089382841858e-04, +-3.159608802297182739e-04, +-3.155468656611209012e-04, +-3.151323659376878438e-04, +-3.147173817654202229e-04, +-3.143019138509968945e-04, +-3.138859629018801592e-04, +-3.134695296262351516e-04, +-3.130526147329906099e-04, +-3.126352189318019588e-04, +-3.122173429330690362e-04, +-3.117989874478961946e-04, +-3.113801531881575701e-04, +-3.109608408664304036e-04, +-3.105410511960130936e-04, +-3.101207848909766948e-04, +-3.097000426660930362e-04, +-3.092788252368509840e-04, +-3.088571333194654401e-04, +-3.084349676308821130e-04, +-3.080123288887959493e-04, +-3.075892178115815275e-04, +-3.071656351183368059e-04, +-3.067415815289096853e-04, +-3.063170577638203804e-04, +-3.058920645443671295e-04, +-3.054666025925005892e-04, +-3.050406726309311711e-04, +-3.046142753830446905e-04, +-3.041874115729749535e-04, +-3.037600819255205451e-04, +-3.033322871662547668e-04, +-3.029040280213921173e-04, +-3.024753052178992064e-04, +-3.020461194834226553e-04, +-3.016164715463026495e-04, +-3.011863621356293172e-04, +-3.007557919811645582e-04, +-3.003247618133637279e-04, +-2.998932723633809501e-04, +-2.994613243630947583e-04, +-2.990289185450345868e-04, +-2.985960556424910881e-04, +-2.981627363893834810e-04, +-2.977289615203700850e-04, +-2.972947317707737812e-04, +-2.968600478765976792e-04, +-2.964249105745816039e-04, +-2.959893206021261473e-04, +-2.955532786973077389e-04, +-2.951167855988869396e-04, +-2.946798420463415101e-04, +-2.942424487797807588e-04, +-2.938046065400536913e-04, +-2.933663160686622736e-04, +-2.929275781077785089e-04, +-2.924883934002491534e-04, +-2.920487626896117088e-04, +-2.916086867201054806e-04, +-2.911681662365961723e-04, +-2.907272019846326430e-04, +-2.902857947104630081e-04, +-2.898439451609598292e-04, +-2.894016540837314076e-04, +-2.889589222269854456e-04, +-2.885157503396477128e-04, +-2.880721391712756890e-04, +-2.876280894720942348e-04, +-2.871836019930011749e-04, +-2.867386774855831821e-04, +-2.862933167020404249e-04, +-2.858475203952406149e-04, +-2.854012893187387939e-04, +-2.849546242266981868e-04, +-2.845075258740063740e-04, +-2.840599950161350499e-04, +-2.836120324092579296e-04, +-2.831636388101620616e-04, +-2.827148149763237216e-04, +-2.822655616658167432e-04, +-2.818158796374347079e-04, +-2.813657696505471794e-04, +-2.809152324652175025e-04, +-2.804642688421245234e-04, +-2.800128795425793952e-04, +-2.795610653285826065e-04, +-2.791088269627474915e-04, +-2.786561652083138904e-04, +-2.782030808291606721e-04, +-2.777495745898303460e-04, +-2.772956472554540886e-04, +-2.768412995918635797e-04, +-2.763865323654537422e-04, +-2.759313463433005404e-04, +-2.754757422930684437e-04, +-2.750197209830843145e-04, +-2.745632831822862347e-04, +-2.741064296602523987e-04, +-2.736491611871548187e-04, +-2.731914785338283337e-04, +-2.727333824716785069e-04, +-2.722748737728033813e-04, +-2.718159532098498774e-04, +-2.713566215561325130e-04, +-2.708968795855520883e-04, +-2.704367280726269651e-04, +-2.699761677924969157e-04, +-2.695151995209473547e-04, +-2.690538240343226572e-04, +-2.685920421095890965e-04, +-2.681298545243518123e-04, +-2.676672620567724652e-04, +-2.672042654856900709e-04, +-2.667408655904786449e-04, +-2.662770631511658138e-04, +-2.658128589483509585e-04, +-2.653482537632355712e-04, +-2.648832483776296528e-04, +-2.644178435739736135e-04, +-2.639520401352431342e-04, +-2.634858388450610558e-04, +-2.630192404876139506e-04, +-2.625522458476719080e-04, +-2.620848557106469196e-04, +-2.616170708625120515e-04, +-2.611488920898188460e-04, +-2.606803201797068081e-04, +-2.602113559199333297e-04, +-2.597420000987892843e-04, +-2.592722535052215962e-04, +-2.588021169286881741e-04, +-2.583315911592786915e-04, +-2.578606769876339217e-04, +-2.573893752049607542e-04, +-2.569176866030974094e-04, +-2.564456119744244257e-04, +-2.559731521118899754e-04, +-2.555003078090129008e-04, +-2.550270798599163784e-04, +-2.545534690592427549e-04, +-2.540794762022753573e-04, +-2.536051020847933726e-04, +-2.531303475031963139e-04, +-2.526552132544051415e-04, +-2.521797001359370725e-04, +-2.517038089458622672e-04, +-2.512275404828217726e-04, +-2.507508955459850216e-04, +-2.502738749351243719e-04, +-2.497964794505146548e-04, +-2.493187098930614359e-04, +-2.488405670641508538e-04, +-2.483620517657765796e-04, +-2.478831648004505873e-04, +-2.474039069712363303e-04, +-2.469242790817583908e-04, +-2.464442819362186346e-04, +-2.459639163393153834e-04, +-2.454831830963019623e-04, +-2.450020830130065401e-04, +-2.445206168957476706e-04, +-2.440387855514595172e-04, +-2.435565897875410139e-04, +-2.430740304119841805e-04, +-2.425911082332752428e-04, +-2.421078240604786864e-04, +-2.416241787031401926e-04, +-2.411401729714138969e-04, +-2.406558076759096523e-04, +-2.401710836278230789e-04, +-2.396860016388456028e-04, +-2.392005625211853534e-04, +-2.387147670876325683e-04, +-2.382286161514686018e-04, +-2.377421105264870664e-04, +-2.372552510270065996e-04, +-2.367680384678970743e-04, +-2.362804736644937573e-04, +-2.357925574327276845e-04, +-2.353042905889689122e-04, +-2.348156739501599285e-04, +-2.343267083337215715e-04, +-2.338373945575793482e-04, +-2.333477334402238518e-04, +-2.328577258006217759e-04, +-2.323673724582388451e-04, +-2.318766742330483261e-04, +-2.313856319455410027e-04, +-2.308942464167424954e-04, +-2.304025184681186920e-04, +-2.299104489216913239e-04, +-2.294180385999488713e-04, +-2.289252883258803366e-04, +-2.284321989229820744e-04, +-2.279387712152810479e-04, +-2.274450060272444063e-04, +-2.269509041838423146e-04, +-2.264564665105716702e-04, +-2.259616938333649757e-04, +-2.254665869787210941e-04, +-2.249711467735503428e-04, +-2.244753740453037853e-04, +-2.239792696218868471e-04, +-2.234828343316866645e-04, +-2.229860690035861525e-04, +-2.224889744669811351e-04, +-2.219915515516928501e-04, +-2.214938010880317814e-04, +-2.209957239068187471e-04, +-2.204973208392952625e-04, +-2.199985927172541330e-04, +-2.194995403728842770e-04, +-2.190001646389010202e-04, +-2.185004663484457798e-04, +-2.180004463351735867e-04, +-2.175001054331497609e-04, +-2.169994444769861959e-04, +-2.164984643016797583e-04, +-2.159971657427460512e-04, +-2.154955496361293983e-04, +-2.149936168182247991e-04, +-2.144913681259395387e-04, +-2.139888043966076711e-04, +-2.134859264680065807e-04, +-2.129827351783707243e-04, +-2.124792313663966729e-04, +-2.119754158712673978e-04, +-2.114712895325626338e-04, +-2.109668531903200557e-04, +-2.104621076850601608e-04, +-2.099570538577057936e-04, +-2.094516925496563869e-04, +-2.089460246027467077e-04, +-2.084400508592628223e-04, +-2.079337721618990261e-04, +-2.074271893538344696e-04, +-2.069203032786297801e-04, +-2.064131147803610416e-04, +-2.059056247034608236e-04, +-2.053978338928521890e-04, +-2.048897431938571326e-04, +-2.043813534522284300e-04, +-2.038726655141602625e-04, +-2.033636802263092509e-04, +-2.028543984356999668e-04, +-2.023448209897980626e-04, +-2.018349487365239865e-04, +-2.013247825241657580e-04, +-2.008143232015111327e-04, +-2.003035716176895255e-04, +-1.997925286223042017e-04, +-1.992811950653433997e-04, +-1.987695717972081408e-04, +-1.982576596687278688e-04, +-1.977454595311772009e-04, +-1.972329722361752325e-04, +-1.967201986358068321e-04, +-1.962071395825321920e-04, +-1.956937959292071841e-04, +-1.951801685291494148e-04, +-1.946662582360485076e-04, +-1.941520659039839647e-04, +-1.936375923874378529e-04, +-1.931228385413257030e-04, +-1.926078052209058704e-04, +-1.920924932819125669e-04, +-1.915769035803971062e-04, +-1.910610369728618846e-04, +-1.905448943161678710e-04, +-1.900284764675568060e-04, +-1.895117842847174740e-04, +-1.889948186256922718e-04, +-1.884775803489013054e-04, +-1.879600703131488948e-04, +-1.874422893776362320e-04, +-1.869242384019820355e-04, +-1.864059182461291460e-04, +-1.858873297704116657e-04, +-1.853684738355778619e-04, +-1.848493513027064667e-04, +-1.843299630332767168e-04, +-1.838103098891746411e-04, +-1.832903927326033709e-04, +-1.827702124261497093e-04, +-1.822497698328035389e-04, +-1.817290658158675885e-04, +-1.812081012390917394e-04, +-1.806868769665115055e-04, +-1.801653938625842101e-04, +-1.796436527920967463e-04, +-1.791216546201963421e-04, +-1.785994002124025406e-04, +-1.780768904346290463e-04, +-1.775541261530881804e-04, +-1.770311082343600795e-04, +-1.765078375454149490e-04, +-1.759843149535169216e-04, +-1.754605413263636213e-04, +-1.749365175319213641e-04, +-1.744122444385635842e-04, +-1.738877229149651783e-04, +-1.733629538301920060e-04, +-1.728379380535972952e-04, +-1.723126764549587386e-04, +-1.717871699043135327e-04, +-1.712614192720986737e-04, +-1.707354254290531894e-04, +-1.702091892462424252e-04, +-1.696827115951266202e-04, +-1.691559933474644944e-04, +-1.686290353753364503e-04, +-1.681018385511541958e-04, +-1.675744037476715857e-04, +-1.670467318380064144e-04, +-1.665188236955441930e-04, +-1.659906801940093813e-04, +-1.654623022074843612e-04, +-1.649336906103401564e-04, +-1.644048462772574389e-04, +-1.638757700832949146e-04, +-1.633464629037960554e-04, +-1.628169256143963898e-04, +-1.622871590910953321e-04, +-1.617571642101463790e-04, +-1.612269418481998182e-04, +-1.606964928821336743e-04, +-1.601658181891947358e-04, +-1.596349186469039048e-04, +-1.591037951330881537e-04, +-1.585724485258918008e-04, +-1.580408797037991160e-04, +-1.575090895455378540e-04, +-1.569770789301486700e-04, +-1.564448487370069670e-04, +-1.559123998457286509e-04, +-1.553797331363083122e-04, +-1.548468494889525845e-04, +-1.543137497842224999e-04, +-1.537804349029353417e-04, +-1.532469057261995826e-04, +-1.527131631354248327e-04, +-1.521792080123446616e-04, +-1.516450412389203756e-04, +-1.511106636974104067e-04, +-1.505760762703911560e-04, +-1.500412798406640239e-04, +-1.495062752913813400e-04, +-1.489710635059387828e-04, +-1.484356453679991784e-04, +-1.479000217615020684e-04, +-1.473641935706726004e-04, +-1.468281616800465458e-04, +-1.462919269743707972e-04, +-1.457554903386763898e-04, +-1.452188526582984501e-04, +-1.446820148188045847e-04, +-1.441449777060160766e-04, +-1.436077422060797132e-04, +-1.430703092053687447e-04, +-1.425326795905072243e-04, +-1.419948542483797662e-04, +-1.414568340661410593e-04, +-1.409186199312402888e-04, +-1.403802127313220406e-04, +-1.398416133542980204e-04, +-1.393028226883691724e-04, +-1.387638416219397013e-04, +-1.382246710437004479e-04, +-1.376853118425784464e-04, +-1.371457649077610478e-04, +-1.366060311286449900e-04, +-1.360661113949186880e-04, +-1.355260065964548715e-04, +-1.349857176234504463e-04, +-1.344452453662595007e-04, +-1.339045907155337093e-04, +-1.333637545621263812e-04, +-1.328227377971260973e-04, +-1.322815413118677964e-04, +-1.317401659979555706e-04, +-1.311986127471639213e-04, +-1.306568824515093438e-04, +-1.301149760032732313e-04, +-1.295728942949026972e-04, +-1.290306382191553974e-04, +-1.284882086689276574e-04, +-1.279456065374000805e-04, +-1.274028327179362291e-04, +-1.268598881041198398e-04, +-1.263167735897651237e-04, +-1.257734900689389652e-04, +-1.252300384358506584e-04, +-1.246864195849829878e-04, +-1.241426344109961401e-04, +-1.235986838087472746e-04, +-1.230545686733640863e-04, +-1.225102899001459533e-04, +-1.219658483845858788e-04, +-1.214212450223817397e-04, +-1.208764807094471689e-04, +-1.203315563419336056e-04, +-1.197864728161329202e-04, +-1.192412310285473050e-04, +-1.186958318759133430e-04, +-1.181502762551267917e-04, +-1.176045650632662594e-04, +-1.170586991976633394e-04, +-1.165126795558058312e-04, +-1.159665070353585307e-04, +-1.154201825341750337e-04, +-1.148737069503091070e-04, +-1.143270811820355456e-04, +-1.137803061277529467e-04, +-1.132333826860554705e-04, +-1.126863117557538196e-04, +-1.121390942357905084e-04, +-1.115917310253106750e-04, +-1.110442230236730727e-04, +-1.104965711303501738e-04, +-1.099487762450014486e-04, +-1.094008392674946425e-04, +-1.088527610978077100e-04, +-1.083045426361735423e-04, +-1.077561847829075655e-04, +-1.072076884385527660e-04, +-1.066590545037806762e-04, +-1.061102838794257297e-04, +-1.055613774664974588e-04, +-1.050123361662023410e-04, +-1.044631608798449201e-04, +-1.039138525088997969e-04, +-1.033644119550343433e-04, +-1.028148401200091726e-04, +-1.022651379058241682e-04, +-1.017153062145449564e-04, +-1.011653459484491659e-04, +-1.006152580099138198e-04, +-1.000650433015001333e-04, +-9.951470272590259738e-05, +-9.896423718597344068e-05, +-9.841364758466943617e-05, +-9.786293482513931479e-05, +-9.731209981063362760e-05, +-9.676114344453022457e-05, +-9.621006663040444307e-05, +-9.565887027193098761e-05, +-9.510755527290564099e-05, +-9.455612253725767839e-05, +-9.400457296905864941e-05, +-9.345290747254697593e-05, +-9.290112695202800222e-05, +-9.234923231194587751e-05, +-9.179722445690666308e-05, +-9.124510429160333257e-05, +-9.069287272083854023e-05, +-9.014053064959733021e-05, +-8.958807898294714601e-05, +-8.903551862604837440e-05, +-8.848285048422697334e-05, +-8.793007546286233842e-05, +-8.737719446753306027e-05, +-8.682420840384379103e-05, +-8.627111817757048679e-05, +-8.571792469456177227e-05, +-8.516462886077294416e-05, +-8.461123158227819546e-05, +-8.405773376529263833e-05, +-8.350413631607280147e-05, +-8.295044014098936652e-05, +-8.239664614654950260e-05, +-8.184275523929778384e-05, +-8.128876832596148596e-05, +-8.073468631327771026e-05, +-8.018051010813893778e-05, +-7.962624061749340465e-05, +-7.907187874836804652e-05, +-7.851742540794088264e-05, +-7.796288150344158089e-05, +-7.740824794217404995e-05, +-7.685352563152701016e-05, +-7.629871547901002980e-05, +-7.574381839215304656e-05, +-7.518883527864181153e-05, +-7.463376704620286895e-05, +-7.407861460262872317e-05, +-7.352337885578892466e-05, +-7.296806071363913667e-05, +-7.241266108424594986e-05, +-7.185718087568591602e-05, +-7.130162099611851484e-05, +-7.074598235380881374e-05, +-7.019026585705246822e-05, +-6.963447241419872045e-05, +-6.907860293372298664e-05, +-6.852265832412656832e-05, +-6.796663949395989493e-05, +-6.741054735183339296e-05, +-6.685438280642843636e-05, +-6.629814676652065692e-05, +-6.574184014087907279e-05, +-6.518546383833931281e-05, +-6.462901876782675063e-05, +-6.407250583826842687e-05, +-6.351592595867809122e-05, +-6.295928003810512296e-05, +-6.240256898565826145e-05, +-6.184579371045421492e-05, +-6.128895512170256707e-05, +-6.073205412859373158e-05, +-6.017509164044523802e-05, +-5.961806856652719568e-05, +-5.906098581620952145e-05, +-5.850384429886154266e-05, +-5.794664492388669160e-05, +-5.738938860073492638e-05, +-5.683207623892468601e-05, +-5.627470874794303541e-05, +-5.571728703731823243e-05, +-5.515981201664344472e-05, +-5.460228459547542429e-05, +-5.404470568348246047e-05, +-5.348707619026873234e-05, +-5.292939702552213973e-05, +-5.237166909890094986e-05, +-5.181389332011894109e-05, +-5.125607059889512309e-05, +-5.069820184497576642e-05, +-5.014028796808459699e-05, +-4.958232987800722836e-05, +-4.902432848450327354e-05, +-4.846628469732972315e-05, +-4.790819942631348527e-05, +-4.735007358125142883e-05, +-4.679190807193261650e-05, +-4.623370380815054260e-05, +-4.567546169971261992e-05, +-4.511718265646483175e-05, +-4.455886758819016920e-05, +-4.400051740468188946e-05, +-4.344213301576674475e-05, +-4.288371533122931187e-05, +-4.232526526083490943e-05, +-4.176678371440300521e-05, +-4.120827160170610745e-05, +-4.064972983249340728e-05, +-4.009115931650133612e-05, +-3.953256096346485494e-05, +-3.897393568314094081e-05, +-3.841528438519454912e-05, +-3.785660797933474195e-05, +-3.729790737521314581e-05, +-3.673918348246010292e-05, +-3.618043721069552686e-05, +-3.562166946955202992e-05, +-3.506288116857462085e-05, +-3.450407321729304148e-05, +-3.394524652524570727e-05, +-3.338640200187872740e-05, +-3.282754055669322076e-05, +-3.226866309907037994e-05, +-3.170977053841866520e-05, +-3.115086378407298725e-05, +-3.059194374531831571e-05, +-3.003301133146264599e-05, +-2.947406745173616500e-05, +-2.891511301531432104e-05, +-2.835614893132907231e-05, +-2.779717610890485878e-05, +-2.723819545705722923e-05, +-2.667920788484085860e-05, +-2.612021430117394109e-05, +-2.556121561498591951e-05, +-2.500221273510396929e-05, +-2.444320657032656162e-05, +-2.388419802943388194e-05, +-2.332518802108714143e-05, +-2.276617745390171324e-05, +-2.220716723647049028e-05, +-2.164815827728792667e-05, +-2.108915148477313124e-05, +-2.053014776734332904e-05, +-1.997114803331281706e-05, +-1.941215319091620681e-05, +-1.885316414831956450e-05, +-1.829418181363123277e-05, +-1.773520709492542558e-05, +-1.717624090014113655e-05, +-1.661728413715524470e-05, +-1.605833771380597044e-05, +-1.549940253781685950e-05, +-1.494047951681994415e-05, +-1.438156955842927586e-05, +-1.382267357013967941e-05, +-1.326379245933769830e-05, +-1.270492713337494778e-05, +-1.214607849945448536e-05, +-1.158724746477886375e-05, +-1.102843493637417663e-05, +-1.046964182123820142e-05, +-9.910869026239216007e-06, +-9.352117458139402366e-06, +-8.793388023668128388e-06, +-8.234681629420951098e-06, +-7.675999181882845672e-06, +-7.117341587439428627e-06, +-6.558709752412630616e-06, +-6.000104582959774990e-06, +-5.441526985221490928e-06, +-4.882977865145852454e-06, +-4.324458128636411850e-06, +-3.765968681451093139e-06, +-3.207510429225618053e-06, +-2.649084277546776925e-06, +-2.090691131851342507e-06, +-1.532331897449473490e-06, +-9.740074795357593886e-07, +-4.157187832250748640e-07, + 1.425332865484925074e-07, + 7.007478248961299078e-07, + 1.258923927087837956e-06, + 1.817060688528978694e-06, + 2.375157204749292032e-06, + 2.933212571391903193e-06, + 3.491225884189908182e-06, + 4.049196239067390507e-06, + 4.607122732066232247e-06, + 5.165004459322627937e-06, + 5.722840517143295939e-06, + 6.280630001981976667e-06, + 6.838372010366291286e-06, + 7.396065638998679247e-06, + 7.953709984733037960e-06, + 8.511304144563697818e-06, + 9.068847215614464973e-06, + 9.626338295115191565e-06, + 1.018377648050270901e-05, + 1.074116086934778834e-05, + 1.129849055933148938e-05, + 1.185576464833392806e-05, + 1.241298223434847711e-05, + 1.297014241553314704e-05, + 1.352724429018703186e-05, + 1.408428695680150375e-05, + 1.464126951397474069e-05, + 1.519819106052501028e-05, + 1.575505069534286254e-05, + 1.631184751756686551e-05, + 1.686858062643557777e-05, + 1.742524912138865878e-05, + 1.798185210204339757e-05, + 1.853838866812154945e-05, + 1.909485791955039719e-05, + 1.965125895643903749e-05, + 2.020759087906766430e-05, + 2.076385278785172582e-05, + 2.132004378344247743e-05, + 2.187616296657992999e-05, + 2.243220943826749794e-05, + 2.298818229962499494e-05, + 2.354408065200155360e-05, + 2.409990359689018354e-05, + 2.465565023597899655e-05, + 2.521131967112773704e-05, + 2.576691100441887161e-05, + 2.632242333807212012e-05, + 2.687785577453295362e-05, + 2.743320741644902656e-05, + 2.798847736659729803e-05, + 2.854366472798464577e-05, + 2.909876860382457271e-05, + 2.965378809752626673e-05, + 3.020872231268339949e-05, + 3.076357035305115489e-05, + 3.131833132264670073e-05, + 3.187300432567597797e-05, + 3.242758846651091890e-05, + 3.298208284976477213e-05, + 3.353648658026879223e-05, + 3.409079876299967268e-05, + 3.464501850317983463e-05, + 3.519914490625408266e-05, + 3.575317707787872205e-05, + 3.630711412391065586e-05, + 3.686095515038417613e-05, + 3.741469926362343639e-05, + 3.796834557010811894e-05, + 3.852189317657358808e-05, + 3.907534118998789145e-05, + 3.962868871747857635e-05, + 4.018193486643365615e-05, + 4.073507874447756123e-05, + 4.128811945946087979e-05, + 4.184105611942430812e-05, + 4.239388783269915610e-05, + 4.294661370776037008e-05, + 4.349923285340110297e-05, + 4.405174437858554057e-05, + 4.460414739254992889e-05, + 4.515644100477815928e-05, + 4.570862432493013651e-05, + 4.626069646294148476e-05, + 4.681265652900053539e-05, + 4.736450363353701741e-05, + 4.791623688718671240e-05, + 4.846785540089187206e-05, + 4.901935828575435618e-05, + 4.957074465320925407e-05, + 5.012201361487928983e-05, + 5.067316428268621724e-05, + 5.122419576877963520e-05, + 5.177510718552441095e-05, + 5.232589764560171414e-05, + 5.287656626193665992e-05, + 5.342711214767449716e-05, + 5.397753441625633992e-05, + 5.452783218139543024e-05, + 5.507800455700581795e-05, + 5.562805065730081980e-05, + 5.617796959677065776e-05, + 5.672776049017196260e-05, + 5.727742245251588157e-05, + 5.782695459904549308e-05, + 5.837635604533568883e-05, + 5.892562590722034933e-05, + 5.947476330076979247e-05, + 6.002376734238995093e-05, + 6.057263714867672314e-05, + 6.112137183658932372e-05, + 6.166997052330416005e-05, + 6.221843232632658647e-05, + 6.276675636339475585e-05, + 6.331494175259085196e-05, + 6.386298761219583349e-05, + 6.441089306086171377e-05, + 6.495865721746660294e-05, + 6.550627920121454941e-05, + 6.605375813161076587e-05, + 6.660109312839165754e-05, + 6.714828331162233266e-05, + 6.769532780167478289e-05, + 6.824222571921663471e-05, + 6.878897618517598061e-05, + 6.933557832084028547e-05, + 6.988203124771122539e-05, + 7.042833408767764508e-05, + 7.097448596286939383e-05, + 7.152048599575785818e-05, + 7.206633330913174353e-05, + 7.261202702602501536e-05, + 7.315756626981767584e-05, + 7.370295016422305154e-05, + 7.424817783321703568e-05, + 7.479324840112478367e-05, + 7.533816099259711815e-05, + 7.588291473253970347e-05, + 7.642750874621113890e-05, + 7.697194215920059694e-05, + 7.751621409741680515e-05, + 7.806032368707679751e-05, + 7.860427005468409488e-05, + 7.914805232712599859e-05, + 7.969166963160364582e-05, + 8.023512109560726273e-05, + 8.077840584699228898e-05, + 8.132152301395518645e-05, + 8.186447172496258667e-05, + 8.240725110884935688e-05, + 8.294986029479627901e-05, + 8.349229841231946519e-05, + 8.403456459125763190e-05, + 8.457665796175253012e-05, + 8.511857765434477526e-05, + 8.566032279990329270e-05, + 8.620189252960294257e-05, + 8.674328597502186755e-05, + 8.728450226801038572e-05, + 8.782554054080124039e-05, + 8.836639992598676403e-05, + 8.890707955650783306e-05, + 8.944757856561917327e-05, + 8.998789608698806296e-05, + 9.052803125454929377e-05, + 9.106798320267746392e-05, + 9.160775106604143769e-05, + 9.214733397970474246e-05, + 9.268673107910030688e-05, + 9.322594149996107189e-05, + 9.376496437841731139e-05, + 9.430379885097405380e-05, + 9.484244405450068720e-05, + 9.538089912619500453e-05, + 9.591916320368251649e-05, + 9.645723542487184604e-05, + 9.699511492812652031e-05, + 9.753280085211999914e-05, + 9.807029233594597914e-05, + 9.860758851903650933e-05, + 9.914468854120970956e-05, + 9.968159154264889961e-05, + 1.002182966639506565e-04, + 1.007548030460427946e-04, + 1.012911098302701665e-04, + 1.018272161583710412e-04, + 1.023631211724066039e-04, + 1.028988240148591573e-04, + 1.034343238286087707e-04, + 1.039696197569235089e-04, + 1.045047109434470855e-04, + 1.050395965321778975e-04, + 1.055742756675661015e-04, + 1.061087474944418944e-04, + 1.066430111579945200e-04, + 1.071770658038678011e-04, + 1.077109105780196265e-04, + 1.082445446268888510e-04, + 1.087779670972553514e-04, + 1.093111771363466581e-04, + 1.098441738917456352e-04, + 1.103769565114986838e-04, + 1.109095241439729258e-04, + 1.114418759380261792e-04, + 1.119740110428636947e-04, + 1.125059286081367909e-04, + 1.130376277839179717e-04, + 1.135691077206325947e-04, + 1.141003675691552025e-04, + 1.146314064807860497e-04, + 1.151622236072420360e-04, + 1.156928181006212941e-04, + 1.162231891134999132e-04, + 1.167533357987913189e-04, + 1.172832573099127652e-04, + 1.178129528006447953e-04, + 1.183424214252286571e-04, + 1.188716623383411088e-04, + 1.194006746950275374e-04, + 1.199294576507964604e-04, + 1.204580103615981941e-04, + 1.209863319838128733e-04, + 1.215144216742179522e-04, + 1.220422785900834108e-04, + 1.225699018890301719e-04, + 1.230972907291998737e-04, + 1.236244442691109143e-04, + 1.241513616677682142e-04, + 1.246780420845937051e-04, + 1.252044846794144579e-04, + 1.257306886125602067e-04, + 1.262566530447925507e-04, + 1.267823771372828901e-04, + 1.273078600517094897e-04, + 1.278331009501147979e-04, + 1.283580989950742568e-04, + 1.288828533495548683e-04, + 1.294073631770106575e-04, + 1.299316276413497952e-04, + 1.304556459069235923e-04, + 1.309794171385031901e-04, + 1.315029405013765692e-04, + 1.320262151612793769e-04, + 1.325492402843705605e-04, + 1.330720150373307853e-04, + 1.335945385872202413e-04, + 1.341168101016460988e-04, + 1.346388287486214533e-04, + 1.351605936966735291e-04, + 1.356821041147502477e-04, + 1.362033591723285403e-04, + 1.367243580392724794e-04, + 1.372450998860016286e-04, + 1.377655838833492016e-04, + 1.382858092026585835e-04, + 1.388057750157608065e-04, + 1.393254804949052420e-04, + 1.398449248128559596e-04, + 1.403641071428674675e-04, + 1.408830266586757953e-04, + 1.414016825344651816e-04, + 1.419200739449608009e-04, + 1.424382000652921806e-04, + 1.429560600711564280e-04, + 1.434736531386806722e-04, + 1.439909784445156848e-04, + 1.445080351658138435e-04, + 1.450248224801616948e-04, + 1.455413395656733036e-04, + 1.460575856009801706e-04, + 1.465735597651632793e-04, + 1.470892612378576407e-04, + 1.476046891991168492e-04, + 1.481198428295730292e-04, + 1.486347213103033434e-04, + 1.491493238229198994e-04, + 1.496636495495390405e-04, + 1.501776976727704760e-04, + 1.506914673756945403e-04, + 1.512049578419559764e-04, + 1.517181682556992088e-04, + 1.522310978015409949e-04, + 1.527437456646679216e-04, + 1.532561110306985489e-04, + 1.537681930858458780e-04, + 1.542799910167798468e-04, + 1.547915040107208972e-04, + 1.553027312554083428e-04, + 1.558136719390878740e-04, + 1.563243252504906600e-04, + 1.568346903789273486e-04, + 1.573447665142199789e-04, + 1.578545528466795381e-04, + 1.583640485671991755e-04, + 1.588732528671315256e-04, + 1.593821649383896739e-04, + 1.598907839734285631e-04, + 1.603991091652329855e-04, + 1.609071397072845690e-04, + 1.614148747936557506e-04, + 1.619223136188737897e-04, + 1.624294553780792250e-04, + 1.629362992668943874e-04, + 1.634428444815136871e-04, + 1.639490902186808725e-04, + 1.644550356756246284e-04, + 1.649606800501489986e-04, + 1.654660225406121628e-04, + 1.659710623459182506e-04, + 1.664757986654809936e-04, + 1.669802306993195692e-04, + 1.674843576479203373e-04, + 1.679881787123996338e-04, + 1.684916930943669165e-04, + 1.689948999960300959e-04, + 1.694977986201151956e-04, + 1.700003881699141384e-04, + 1.705026678492644178e-04, + 1.710046368625936042e-04, + 1.715062944148420144e-04, + 1.720076397115664424e-04, + 1.725086719588049869e-04, + 1.730093903632381363e-04, + 1.735097941320508310e-04, + 1.740098824730285782e-04, + 1.745096545945217816e-04, + 1.750091097054362545e-04, + 1.755082470152132164e-04, + 1.760070657339189563e-04, + 1.765055650721790491e-04, + 1.770037442411580536e-04, + 1.775016024526501518e-04, + 1.779991389189438408e-04, + 1.784963528529842647e-04, + 1.789932434682350328e-04, + 1.794898099787854478e-04, + 1.799860515992571014e-04, + 1.804819675449089063e-04, + 1.809775570315042817e-04, + 1.814728192754677661e-04, + 1.819677534937516876e-04, + 1.824623589039282129e-04, + 1.829566347241667413e-04, + 1.834505801731701536e-04, + 1.839441944702636359e-04, + 1.844374768353737538e-04, + 1.849304264890195084e-04, + 1.854230426522782377e-04, + 1.859153245468790204e-04, + 1.864072713950675581e-04, + 1.868988824197636818e-04, + 1.873901568444302996e-04, + 1.878810938931623007e-04, + 1.883716927906662275e-04, + 1.888619527621955747e-04, + 1.893518730336384481e-04, + 1.898414528314987530e-04, + 1.903306913828859759e-04, + 1.908195879155043966e-04, + 1.913081416576326780e-04, + 1.917963518382258085e-04, + 1.922842176867925327e-04, + 1.927717384334865056e-04, + 1.932589133090739837e-04, + 1.937457415449231725e-04, + 1.942322223729852531e-04, + 1.947183550258821481e-04, + 1.952041387368411444e-04, + 1.956895727396783051e-04, + 1.961746562688797843e-04, + 1.966593885594795834e-04, + 1.971437688472089001e-04, + 1.976277963683681924e-04, + 1.981114703599144570e-04, + 1.985947900594321454e-04, + 1.990777547051194218e-04, + 1.995603635357720085e-04, + 2.000426157908688919e-04, + 2.005245107105081107e-04, + 2.010060475353871048e-04, + 2.014872255068912406e-04, + 2.019680438669625136e-04, + 2.024485018582552944e-04, + 2.029285987240071461e-04, + 2.034083337081349656e-04, + 2.038877060551518255e-04, + 2.043667150102656095e-04, + 2.048453598192488808e-04, + 2.053236397285917547e-04, + 2.058015539853765106e-04, + 2.062791018373599100e-04, + 2.067562825329567712e-04, + 2.072330953211749165e-04, + 2.077095394517034540e-04, + 2.081856141748902531e-04, + 2.086613187417351136e-04, + 2.091366524038790328e-04, + 2.096116144135832800e-04, + 2.100862040238168915e-04, + 2.105604204881940313e-04, + 2.110342630609533094e-04, + 2.115077309970332968e-04, + 2.119808235520002904e-04, + 2.124535399820907055e-04, + 2.129258795441905027e-04, + 2.133978414958823241e-04, + 2.138694250953685145e-04, + 2.143406296015685369e-04, + 2.148114542739948862e-04, + 2.152818983729004045e-04, + 2.157519611591537879e-04, + 2.162216418943230700e-04, + 2.166909398406498179e-04, + 2.171598542610335197e-04, + 2.176283844190180319e-04, + 2.180965295788711057e-04, + 2.185642890055255962e-04, + 2.190316619645610579e-04, + 2.194986477222848973e-04, + 2.199652455456095059e-04, + 2.204314547022021237e-04, + 2.208972744603575811e-04, + 2.213627040890832733e-04, + 2.218277428580708627e-04, + 2.222923900376857619e-04, + 2.227566448989460191e-04, + 2.232205067136217665e-04, + 2.236839747541157137e-04, + 2.241470482935521073e-04, + 2.246097266057555883e-04, + 2.250720089651899077e-04, + 2.255338946470410849e-04, + 2.259953829272011449e-04, + 2.264564730822538063e-04, + 2.269171643894502769e-04, + 2.273774561267876142e-04, + 2.278373475728907101e-04, + 2.282968380071532101e-04, + 2.287559267096206091e-04, + 2.292146129610673924e-04, + 2.296728960429826973e-04, + 2.301307752375061552e-04, + 2.305882498275153869e-04, + 2.310453190966013095e-04, + 2.315019823290642611e-04, + 2.319582388098987129e-04, + 2.324140878247815873e-04, + 2.328695286601491275e-04, + 2.333245606031371041e-04, + 2.337791829415667745e-04, + 2.342333949640111276e-04, + 2.346871959597382885e-04, + 2.351405852187014899e-04, + 2.355935620316211186e-04, + 2.360461256899264398e-04, + 2.364982754857346725e-04, + 2.369500107119334152e-04, + 2.374013306620620888e-04, + 2.378522346304522324e-04, + 2.383027219121086474e-04, + 2.387527918027907130e-04, + 2.392024435989841154e-04, + 2.396516765978908459e-04, + 2.401004900974101192e-04, + 2.405488833962203662e-04, + 2.409968557937220964e-04, + 2.414444065900143706e-04, + 2.418915350859798027e-04, + 2.423382405831629662e-04, + 2.427845223839151894e-04, + 2.432303797912709834e-04, + 2.436758121090420429e-04, + 2.441208186417392911e-04, + 2.445653986946604843e-04, + 2.450095515737733885e-04, + 2.454532765858578099e-04, + 2.458965730383846525e-04, + 2.463394402395991029e-04, + 2.467818774984965619e-04, + 2.472238841247740172e-04, + 2.476654594288985652e-04, + 2.481066027220991716e-04, + 2.485473133163497569e-04, + 2.489875905243670289e-04, + 2.494274336595850034e-04, + 2.498668420362415779e-04, + 2.503058149693160274e-04, + 2.507443517745129580e-04, + 2.511824517683202578e-04, + 2.516201142679916412e-04, + 2.520573385914885896e-04, + 2.524941240575607451e-04, + 2.529304699857260158e-04, + 2.533663756962624978e-04, + 2.538018405102000731e-04, + 2.542368637493005686e-04, + 2.546714447361481245e-04, + 2.551055827940424542e-04, + 2.555392772470780455e-04, + 2.559725274201159716e-04, + 2.564053326387738074e-04, + 2.568376922294096924e-04, + 2.572696055192002303e-04, + 2.577010718360813997e-04, + 2.581320905087328339e-04, + 2.585626608666540937e-04, + 2.589927822400531579e-04, + 2.594224539599772317e-04, + 2.598516753582028093e-04, + 2.602804457673124345e-04, + 2.607087645206656451e-04, + 2.611366309523925210e-04, + 2.615640443973715670e-04, + 2.619910041913119493e-04, + 2.624175096706962500e-04, + 2.628435601727598667e-04, + 2.632691550355698885e-04, + 2.636942935979122850e-04, + 2.641189751994259672e-04, + 2.645431991804879715e-04, + 2.649669648823034475e-04, + 2.653902716468467863e-04, + 2.658131188168526759e-04, + 2.662355057358968742e-04, + 2.666574317483352222e-04, + 2.670788961992915018e-04, + 2.674998984347087719e-04, + 2.679204378013372257e-04, + 2.683405136466733673e-04, + 2.687601253190427899e-04, + 2.691792721675757816e-04, + 2.695979535422038018e-04, + 2.700161687936475006e-04, + 2.704339172734014315e-04, + 2.708511983338090785e-04, + 2.712680113280084831e-04, + 2.716843556099125118e-04, + 2.721002305342783536e-04, + 2.725156354566384020e-04, + 2.729305697333464964e-04, + 2.733450327215513590e-04, + 2.737590237792390953e-04, + 2.741725422651702026e-04, + 2.745855875389639203e-04, + 2.749981589609828167e-04, + 2.754102558924700493e-04, + 2.758218776954380713e-04, + 2.762330237327387250e-04, + 2.766436933680422629e-04, + 2.770538859658270474e-04, + 2.774636008913599814e-04, + 2.778728375107739198e-04, + 2.782815951910135141e-04, + 2.786898732998153170e-04, + 2.790976712057851401e-04, + 2.795049882782868153e-04, + 2.799118238875717020e-04, + 2.803181774046708099e-04, + 2.807240482014683068e-04, + 2.811294356506761493e-04, + 2.815343391258231316e-04, + 2.819387580012403037e-04, + 2.823426916521439662e-04, + 2.827461394545340272e-04, + 2.831491007852705464e-04, + 2.835515750220530813e-04, + 2.839535615433726569e-04, + 2.843550597285794202e-04, + 2.847560689578688162e-04, + 2.851565886122733482e-04, + 2.855566180736523324e-04, + 2.859561567246776941e-04, + 2.863552039489041163e-04, + 2.867537591307193828e-04, + 2.871518216553246459e-04, + 2.875493909087887450e-04, + 2.879464662780345996e-04, + 2.883430471507828310e-04, + 2.887391329156266807e-04, + 2.891347229620134704e-04, + 2.895298166802375006e-04, + 2.899244134614319731e-04, + 2.903185126975521861e-04, + 2.907121137814462782e-04, + 2.911052161068064395e-04, + 2.914978190681480948e-04, + 2.918899220608732210e-04, + 2.922815244812215036e-04, + 2.926726257262586822e-04, + 2.930632251939521726e-04, + 2.934533222831130629e-04, + 2.938429163933870599e-04, + 2.942320069253182946e-04, + 2.946205932802495211e-04, + 2.950086748604441983e-04, + 2.953962510689847371e-04, + 2.957833213098387450e-04, + 2.961698849878354996e-04, + 2.965559415086638879e-04, + 2.969414902788442717e-04, + 2.973265307058107240e-04, + 2.977110621978541088e-04, + 2.980950841641031072e-04, + 2.984785960146011416e-04, + 2.988615971601971968e-04, + 2.992440870126726171e-04, + 2.996260649846345294e-04, + 3.000075304895974296e-04, + 3.003884829419219788e-04, + 3.007689217568488855e-04, + 3.011488463504865989e-04, + 3.015282561398441069e-04, + 3.019071505427717381e-04, + 3.022855289780220943e-04, + 3.026633908652346001e-04, + 3.030407356248823779e-04, + 3.034175626783476533e-04, + 3.037938714478987702e-04, + 3.041696613566852040e-04, + 3.045449318287313267e-04, + 3.049196822889184096e-04, + 3.052939121630540123e-04, + 3.056676208778224884e-04, + 3.060408078607678014e-04, + 3.064134725403462709e-04, + 3.067856143459088457e-04, + 3.071572327076537248e-04, + 3.075283270566935771e-04, + 3.078988968250482780e-04, + 3.082689414455926503e-04, + 3.086384603521381050e-04, + 3.090074529793277987e-04, + 3.093759187627570344e-04, + 3.097438571388750868e-04, + 3.101112675450508512e-04, + 3.104781494195488819e-04, + 3.108445022015209904e-04, + 3.112103253309946981e-04, + 3.115756182489338977e-04, + 3.119403803971981955e-04, + 3.123046112185175953e-04, + 3.126683101565684466e-04, + 3.130314766558690365e-04, + 3.133941101618989596e-04, + 3.137562101210009439e-04, + 3.141177759804450356e-04, + 3.144788071884156971e-04, + 3.148393031939634512e-04, + 3.151992634470687413e-04, + 3.155586873986288119e-04, + 3.159175745004507156e-04, + 3.162759242052238292e-04, + 3.166337359665908138e-04, + 3.169910092390555126e-04, + 3.173477434780580314e-04, + 3.177039381399609694e-04, + 3.180595926820370054e-04, + 3.184147065624694933e-04, + 3.187692792403295323e-04, + 3.191233101756467644e-04, + 3.194767988293579293e-04, + 3.198297446632941254e-04, + 3.201821471402292729e-04, + 3.205340057238640142e-04, + 3.208853198787789841e-04, + 3.212360890705007839e-04, + 3.215863127654843630e-04, + 3.219359904311084653e-04, + 3.222851215356670098e-04, + 3.226337055483530984e-04, + 3.229817419393248273e-04, + 3.233292301796599128e-04, + 3.236761697413352546e-04, + 3.240225600972918246e-04, + 3.243684007213710791e-04, + 3.247136910883510622e-04, + 3.250584306739337753e-04, + 3.254026189547754261e-04, + 3.257462554084289657e-04, + 3.260893395134239407e-04, + 3.264318707491619211e-04, + 3.267738485960383654e-04, + 3.271152725353400543e-04, + 3.274561420493141009e-04, + 3.277964566211436100e-04, + 3.281362157349411186e-04, + 3.284754188757315740e-04, + 3.288140655295196087e-04, + 3.291521551832393960e-04, + 3.294896873247418019e-04, + 3.298266614428577571e-04, + 3.301630770273056661e-04, + 3.304989335687983634e-04, + 3.308342305589556730e-04, + 3.311689674903631176e-04, + 3.315031438565568486e-04, + 3.318367591519821749e-04, + 3.321698128720531403e-04, + 3.325023045131435782e-04, + 3.328342335725467259e-04, + 3.331655995485251513e-04, + 3.334964019402999655e-04, + 3.338266402480026844e-04, + 3.341563139727379492e-04, + 3.344854226165695950e-04, + 3.348139656825148500e-04, + 3.351419426745332769e-04, + 3.354693530975176108e-04, + 3.357961964573510602e-04, + 3.361224722608655642e-04, + 3.364481800158251510e-04, + 3.367733192309733709e-04, + 3.370978894160184432e-04, + 3.374218900815891290e-04, + 3.377453207392939831e-04, + 3.380681809017095358e-04, + 3.383904700823735169e-04, + 3.387121877957752604e-04, + 3.390333335573441579e-04, + 3.393539068835082595e-04, + 3.396739072916515564e-04, + 3.399933343001005910e-04, + 3.403121874281728122e-04, + 3.406304661961406344e-04, + 3.409481701252177217e-04, + 3.412652987376195955e-04, + 3.415818515565250367e-04, + 3.418978281060556482e-04, + 3.422132279113402568e-04, + 3.425280504984262796e-04, + 3.428422953943802295e-04, + 3.431559621272056953e-04, + 3.434690502258973353e-04, + 3.437815592204307934e-04, + 3.440934886417173805e-04, + 3.444048380216643552e-04, + 3.447156068931611552e-04, + 3.450257947900702352e-04, + 3.453354012472095572e-04, + 3.456444258004098369e-04, + 3.459528679864270475e-04, + 3.462607273430479138e-04, + 3.465680034089972119e-04, + 3.468746957240130134e-04, + 3.471808038287885179e-04, + 3.474863272650027899e-04, + 3.477912655753128985e-04, + 3.480956183033783661e-04, + 3.483993849938110785e-04, + 3.487025651922285728e-04, + 3.490051584452385342e-04, + 3.493071643003983003e-04, + 3.496085823062729746e-04, + 3.499094120124173206e-04, + 3.502096529693770623e-04, + 3.505093047286736516e-04, + 3.508083668427986845e-04, + 3.511068388652669727e-04, + 3.514047203505724169e-04, + 3.517020108541810673e-04, + 3.519987099325710771e-04, + 3.522948171432158430e-04, + 3.525903320445469250e-04, + 3.528852541960102629e-04, + 3.531795831580565267e-04, + 3.534733184921062593e-04, + 3.537664597606040326e-04, + 3.540590065269452638e-04, + 3.543509583555682100e-04, + 3.546423148118738457e-04, + 3.549330754622764946e-04, + 3.552232398741998732e-04, + 3.555128076160311195e-04, + 3.558017782571740823e-04, + 3.560901513680414065e-04, + 3.563779265200441785e-04, + 3.566651032855764768e-04, + 3.569516812380640522e-04, + 3.572376599518917954e-04, + 3.575230390024896048e-04, + 3.578078179662610471e-04, + 3.580919964206319287e-04, + 3.583755739440393998e-04, + 3.586585501158924896e-04, + 3.589409245166275087e-04, + 3.592226967276903227e-04, + 3.595038663315377071e-04, + 3.597844329116113809e-04, + 3.600643960523953069e-04, + 3.603437553393427787e-04, + 3.606225103589368649e-04, + 3.609006606986760982e-04, + 3.611782059470714933e-04, + 3.614551456936353257e-04, + 3.617314795288753852e-04, + 3.620072070443443074e-04, + 3.622823278325991870e-04, + 3.625568414871929040e-04, + 3.628307476027124506e-04, + 3.631040457747632100e-04, + 3.633767355999387616e-04, + 3.636488166758621889e-04, + 3.639202886011838026e-04, + 3.641911509755699737e-04, + 3.644614033996974411e-04, + 3.647310454752428492e-04, + 3.650000768049351690e-04, + 3.652684969925135768e-04, + 3.655363056427198649e-04, + 3.658035023613415387e-04, + 3.660700867551678521e-04, + 3.663360584320188101e-04, + 3.666014170007268454e-04, + 3.668661620711686404e-04, + 3.671302932542172591e-04, + 3.673938101618036758e-04, + 3.676567124068374115e-04, + 3.679189996032983115e-04, + 3.681806713661596214e-04, + 3.684417273114404625e-04, + 3.687021670561928212e-04, + 3.689619902184643608e-04, + 3.692211964173524154e-04, + 3.694797852729839855e-04, + 3.697377564065174732e-04, + 3.699951094401246303e-04, + 3.702518439970339803e-04, + 3.705079597014652787e-04, + 3.707634561787111530e-04, + 3.710183330550639196e-04, + 3.712725899578749435e-04, + 3.715262265155085597e-04, + 3.717792423573697204e-04, + 3.720316371138908222e-04, + 3.722834104165572387e-04, + 3.725345618978634105e-04, + 3.727850911913592490e-04, + 3.730349979316358792e-04, + 3.732842817542916499e-04, + 3.735329422959784290e-04, + 3.737809791943947735e-04, + 3.740283920882729184e-04, + 3.742751806173818131e-04, + 3.745213444225093942e-04, + 3.747668831455150612e-04, + 3.750117964292890189e-04, + 3.752560839177486451e-04, + 3.754997452558654332e-04, + 3.757427800896622817e-04, + 3.759851880661746796e-04, + 3.762269688334967310e-04, + 3.764681220407735114e-04, + 3.767086473381902256e-04, + 3.769485443769739967e-04, + 3.771878128093795546e-04, + 3.774264522887385673e-04, + 3.776644624694023948e-04, + 3.779018430067831807e-04, + 3.781385935573478886e-04, + 3.783747137785818736e-04, + 3.786102033290332253e-04, + 3.788450618683059383e-04, + 3.790792890570516714e-04, + 3.793128845569541897e-04, + 3.795458480307751180e-04, + 3.797781791422881296e-04, + 3.800098775563550573e-04, + 3.802409429388607328e-04, + 3.804713749567591738e-04, + 3.807011732780618204e-04, + 3.809303375718028407e-04, + 3.811588675080888953e-04, + 3.813867627580852060e-04, + 3.816140229940087787e-04, + 3.818406478891153938e-04, + 3.820666371177421062e-04, + 3.822919903552462052e-04, + 3.825167072780750370e-04, + 3.827407875637057772e-04, + 3.829642308906962798e-04, + 3.831870369386459379e-04, + 3.834092053882025676e-04, + 3.836307359210901647e-04, + 3.838516282200934537e-04, + 3.840718819690346866e-04, + 3.842914968528134871e-04, + 3.845104725573941654e-04, + 3.847288087697756315e-04, + 3.849465051780322157e-04, + 3.851635614713052659e-04, + 3.853799773397946905e-04, + 3.855957524747618864e-04, + 3.858108865685108192e-04, + 3.860253793144360532e-04, + 3.862392304069906055e-04, + 3.864524395416765127e-04, + 3.866650064150800137e-04, + 3.868769307248230856e-04, + 3.870882121696228042e-04, + 3.872988504492401690e-04, + 3.875088452645187556e-04, + 3.877181963173512136e-04, + 3.879269033107186774e-04, + 3.881349659486373689e-04, + 3.883423839362238131e-04, + 3.885491569796371033e-04, + 3.887552847861203728e-04, + 3.889607670639891931e-04, + 3.891656035226061499e-04, + 3.893697938724147785e-04, + 3.895733378249336006e-04, + 3.897762350927539560e-04, + 3.899784853895217878e-04, + 3.901800884299755899e-04, + 3.903810439298951778e-04, + 3.905813516061634348e-04, + 3.907810111767134561e-04, + 3.909800223605634610e-04, + 3.911783848778094741e-04, + 3.913760984495973528e-04, + 3.915731627981619274e-04, + 3.917695776468149119e-04, + 3.919653427199433320e-04, + 3.921604577429944004e-04, + 3.923549224425151448e-04, + 3.925487365461000403e-04, + 3.927418997824318843e-04, + 3.929344118812744236e-04, + 3.931262725734704574e-04, + 3.933174815909328383e-04, + 3.935080386666386714e-04, + 3.936979435346665032e-04, + 3.938871959301674811e-04, + 3.940757955893573849e-04, + 3.942637422495457377e-04, + 3.944510356491242047e-04, + 3.946376755275424154e-04, + 3.948236616253420622e-04, + 3.950089936841537559e-04, + 3.951936714466813588e-04, + 3.953776946567109300e-04, + 3.955610630590961421e-04, + 3.957437763997912958e-04, + 3.959258344258304485e-04, + 3.961072368853171691e-04, + 3.962879835274571178e-04, + 3.964680741025116426e-04, + 3.966475083618532359e-04, + 3.968262860579183180e-04, + 3.970044069442418768e-04, + 3.971818707754275982e-04, + 3.973586773071874400e-04, + 3.975348262962814577e-04, + 3.977103175005946754e-04, + 3.978851506790673708e-04, + 3.980593255917451120e-04, + 3.982328419997594577e-04, + 3.984056996653086049e-04, + 3.985778983516909992e-04, + 3.987494378232954136e-04, + 3.989203178456002990e-04, + 3.990905381851561108e-04, + 3.992600986096247746e-04, + 3.994289988877259634e-04, + 3.995972387892975965e-04, + 3.997648180852466163e-04, + 3.999317365475847132e-04, + 4.000979939494001361e-04, + 4.002635900648778043e-04, + 4.004285246692860264e-04, + 4.005927975389973706e-04, + 4.007564084514574944e-04, + 4.009193571852171824e-04, + 4.010816435199200951e-04, + 4.012432672362843916e-04, + 4.014042281161294551e-04, + 4.015645259423733450e-04, + 4.017241604990239067e-04, + 4.018831315711786085e-04, + 4.020414389450177660e-04, + 4.021990824078319716e-04, + 4.023560617480048565e-04, + 4.025123767549988870e-04, + 4.026680272193913063e-04, + 4.028230129328276760e-04, + 4.029773336880723461e-04, + 4.031309892789685019e-04, + 4.032839795004654858e-04, + 4.034363041486053536e-04, + 4.035879630205242295e-04, + 4.037389559144441203e-04, + 4.038892826297021889e-04, + 4.040389429667163852e-04, + 4.041879367270117380e-04, + 4.043362637132128195e-04, + 4.044839237290238508e-04, + 4.046309165792573784e-04, + 4.047772420698280403e-04, + 4.049229000077462235e-04, + 4.050678902011129140e-04, + 4.052122124591417602e-04, + 4.053558665921232944e-04, + 4.054988524114686260e-04, + 4.056411697296730665e-04, + 4.057828183603417170e-04, + 4.059237981181797097e-04, + 4.060641088189780598e-04, + 4.062037502796362709e-04, + 4.063427223181579435e-04, + 4.064810247536462221e-04, + 4.066186574062989156e-04, + 4.067556200974232431e-04, + 4.068919126494136072e-04, + 4.070275348857833072e-04, + 4.071624866311300073e-04, + 4.072967677111714608e-04, + 4.074303779527159658e-04, + 4.075633171836651842e-04, + 4.076955852330413550e-04, + 4.078271819309633875e-04, + 4.079581071086462113e-04, + 4.080883605984211046e-04, + 4.082179422337020298e-04, + 4.083468518490275382e-04, + 4.084750892800241779e-04, + 4.086026543634313220e-04, + 4.087295469370925494e-04, + 4.088557668399543979e-04, + 4.089813139120558475e-04, + 4.091061879945566177e-04, + 4.092303889297167849e-04, + 4.093539165608955899e-04, + 4.094767707325687846e-04, + 4.095989512902988711e-04, + 4.097204580807741869e-04, + 4.098412909517710123e-04, + 4.099614497521883189e-04, + 4.100809343320142679e-04, + 4.101997445423628016e-04, + 4.103178802354270774e-04, + 4.104353412645349243e-04, + 4.105521274840979941e-04, + 4.106682387496510094e-04, + 4.107836749178344162e-04, + 4.108984358463818078e-04, + 4.110125213941420957e-04, + 4.111259314210762039e-04, + 4.112386657882524058e-04, + 4.113507243578343447e-04, + 4.114621069931143722e-04, + 4.115728135584673076e-04, + 4.116828439193991182e-04, + 4.117921979425090266e-04, + 4.119008754955113031e-04, + 4.120088764472349947e-04, + 4.121162006676007232e-04, + 4.122228480276494164e-04, + 4.123288183995328757e-04, + 4.124341116565044519e-04, + 4.125387276729387777e-04, + 4.126426663243009762e-04, + 4.127459274871834701e-04, + 4.128485110392789842e-04, + 4.129504168593921471e-04, + 4.130516448274416052e-04, + 4.131521948244531377e-04, + 4.132520667325513086e-04, + 4.133512604349905291e-04, + 4.134497758161242119e-04, + 4.135476127614162636e-04, + 4.136447711574505717e-04, + 4.137412508919027614e-04, + 4.138370518535802018e-04, + 4.139321739323874208e-04, + 4.140266170193451323e-04, + 4.141203810065879594e-04, + 4.142134657873572249e-04, + 4.143058712560005168e-04, + 4.143975973079858923e-04, + 4.144886438398948840e-04, + 4.145790107494082971e-04, + 4.146686979353353202e-04, + 4.147577052975792646e-04, + 4.148460327371636933e-04, + 4.149336801562271090e-04, + 4.150206474580175864e-04, + 4.151069345468927189e-04, + 4.151925413283297011e-04, + 4.152774677089026692e-04, + 4.153617135963162026e-04, + 4.154452788993745873e-04, + 4.155281635280004635e-04, + 4.156103673932329289e-04, + 4.156918904072116547e-04, + 4.157727324831969433e-04, + 4.158528935355624103e-04, + 4.159323734797947133e-04, + 4.160111722324885100e-04, + 4.160892897113602825e-04, + 4.161667258352247552e-04, + 4.162434805240259575e-04, + 4.163195536988103357e-04, + 4.163949452817448048e-04, + 4.164696551961042802e-04, + 4.165436833662775865e-04, + 4.166170297177666988e-04, + 4.166896941771928140e-04, + 4.167616766722793834e-04, + 4.168329771318787834e-04, + 4.169035954859387060e-04, + 4.169735316655357143e-04, + 4.170427856028512278e-04, + 4.171113572311827976e-04, + 4.171792464849455166e-04, + 4.172464532996635620e-04, + 4.173129776119709547e-04, + 4.173788193596239190e-04, + 4.174439784814906371e-04, + 4.175084549175477251e-04, + 4.175722486088950867e-04, + 4.176353594977312480e-04, + 4.176977875273861539e-04, + 4.177595326422907027e-04, + 4.178205947879991885e-04, + 4.178809739111690271e-04, + 4.179406699595858009e-04, + 4.179996828821313831e-04, + 4.180580126288174401e-04, + 4.181156591507609820e-04, + 4.181726224001946091e-04, + 4.182289023304697640e-04, + 4.182844988960431249e-04, + 4.183394120524897789e-04, + 4.183936417565004571e-04, + 4.184471879658783360e-04, + 4.185000506395396887e-04, + 4.185522297375166489e-04, + 4.186037252209511396e-04, + 4.186545370521045227e-04, + 4.187046651943478952e-04, + 4.187541096121684316e-04, + 4.188028702711692219e-04, + 4.188509471380608140e-04, + 4.188983401806704843e-04, + 4.189450493679422374e-04, + 4.189910746699325775e-04, + 4.190364160578124064e-04, + 4.190810735038588914e-04, + 4.191250469814739510e-04, + 4.191683364651647937e-04, + 4.192109419305587717e-04, + 4.192528633543933514e-04, + 4.192941007145182283e-04, + 4.193346539898981456e-04, + 4.193745231606117556e-04, + 4.194137082078530296e-04, + 4.194522091139236681e-04, + 4.194900258622465453e-04, + 4.195271584373489577e-04, + 4.195636068248786705e-04, + 4.195993710115917749e-04, + 4.196344509853619574e-04, + 4.196688467351740491e-04, + 4.197025582511258691e-04, + 4.197355855244247545e-04, + 4.197679285473970476e-04, + 4.197995873134773622e-04, + 4.198305618172153055e-04, + 4.198608520542763457e-04, + 4.198904580214285844e-04, + 4.199193797165648749e-04, + 4.199476171386799989e-04, + 4.199751702878898037e-04, + 4.200020391654175401e-04, + 4.200282237735989050e-04, + 4.200537241158834503e-04, + 4.200785401968329565e-04, + 4.201026720221201320e-04, + 4.201261195985295347e-04, + 4.201488829339597940e-04, + 4.201709620374171066e-04, + 4.201923569190232585e-04, + 4.202130675900102590e-04, + 4.202330940627232135e-04, + 4.202524363506160952e-04, + 4.202710944682531004e-04, + 4.202890684313142318e-04, + 4.203063582565890648e-04, + 4.203229639619729526e-04, + 4.203388855664830183e-04, + 4.203541230902358198e-04, + 4.203686765544660531e-04, + 4.203825459815141918e-04, + 4.203957313948352152e-04, + 4.204082328189931873e-04, + 4.204200502796611480e-04, + 4.204311838036230110e-04, + 4.204416334187734551e-04, + 4.204513991541170025e-04, + 4.204604810397662303e-04, + 4.204688791069458357e-04, + 4.204765933879891127e-04, + 4.204836239163358921e-04, + 4.204899707265396429e-04, + 4.204956338542622683e-04, + 4.205006133362725875e-04, + 4.205049092104496972e-04, + 4.205085215157800438e-04, + 4.205114502923612183e-04, + 4.205136955813974027e-04, + 4.205152574252009421e-04, + 4.205161358671933203e-04, + 4.205163309519045637e-04, + 4.205158427249709101e-04, + 4.205146712331362183e-04, + 4.205128165242551664e-04, + 4.205102786472866383e-04, + 4.205070576522955666e-04, + 4.205031535904598175e-04, + 4.204985665140584272e-04, + 4.204932964764806548e-04, + 4.204873435322195856e-04, + 4.204807077368779319e-04, + 4.204733891471634788e-04, + 4.204653878208881087e-04, + 4.204567038169733308e-04, + 4.204473371954437757e-04, + 4.204372880174296894e-04, + 4.204265563451707274e-04, + 4.204151422420066854e-04, + 4.204030457723840044e-04, + 4.203902670018565832e-04, + 4.203768059970792201e-04, + 4.203626628258141712e-04, + 4.203478375569283322e-04, + 4.203323302603903110e-04, + 4.203161410072739509e-04, + 4.202992698697580057e-04, + 4.202817169211237004e-04, + 4.202634822357550560e-04, + 4.202445658891413292e-04, + 4.202249679578730010e-04, + 4.202046885196442159e-04, + 4.201837276532530531e-04, + 4.201620854385962681e-04, + 4.201397619566780745e-04, + 4.201167572895999529e-04, + 4.200930715205685112e-04, + 4.200687047338872988e-04, + 4.200436570149710096e-04, + 4.200179284503227140e-04, + 4.199915191275571690e-04, + 4.199644291353848264e-04, + 4.199366585636168741e-04, + 4.199082075031651280e-04, + 4.198790760460422485e-04, + 4.198492642853614157e-04, + 4.198187723153340521e-04, + 4.197876002312704189e-04, + 4.197557481295833030e-04, + 4.197232161077799387e-04, + 4.196900042644688389e-04, + 4.196561126993588191e-04, + 4.196215415132520041e-04, + 4.195862908080543450e-04, + 4.195503606867655362e-04, + 4.195137512534815086e-04, + 4.194764626134013150e-04, + 4.194384948728169921e-04, + 4.193998481391181688e-04, + 4.193605225207893013e-04, + 4.193205181274153111e-04, + 4.192798350696737785e-04, + 4.192384734593389544e-04, + 4.191964334092806218e-04, + 4.191537150334652341e-04, + 4.191103184469521206e-04, + 4.190662437658949501e-04, + 4.190214911075449832e-04, + 4.189760605902476034e-04, + 4.189299523334387930e-04, + 4.188831664576496872e-04, + 4.188357030845045134e-04, + 4.187875623367250371e-04, + 4.187387443381192318e-04, + 4.186892492135934219e-04, + 4.186390770891417119e-04, + 4.185882280918532504e-04, + 4.185367023499057251e-04, + 4.184844999925740904e-04, + 4.184316211502201051e-04, + 4.183780659542960727e-04, + 4.183238345373481481e-04, + 4.182689270330084232e-04, + 4.182133435760051186e-04, + 4.181570843021521202e-04, + 4.181001493483516365e-04, + 4.180425388525988058e-04, + 4.179842529539741611e-04, + 4.179252917926480214e-04, + 4.178656555098834188e-04, + 4.178053442480246602e-04, + 4.177443581505058384e-04, + 4.176826973618527291e-04, + 4.176203620276682633e-04, + 4.175573522946550778e-04, + 4.174936683105918262e-04, + 4.174293102243490619e-04, + 4.173642781858800770e-04, + 4.172985723462240460e-04, + 4.172321928575094415e-04, + 4.171651398729438968e-04, + 4.170974135468228251e-04, + 4.170290140345246492e-04, + 4.169599414925114519e-04, + 4.168901960783295726e-04, + 4.168197779506103116e-04, + 4.167486872690653226e-04, + 4.166769241944901902e-04, + 4.166044888887603646e-04, + 4.165313815148351728e-04, + 4.164576022367592824e-04, + 4.163831512196514259e-04, + 4.163080286297145380e-04, + 4.162322346342336955e-04, + 4.161557694015696122e-04, + 4.160786331011692642e-04, + 4.160008259035532043e-04, + 4.159223479803272720e-04, + 4.158431995041669805e-04, + 4.157633806488376287e-04, + 4.156828915891708828e-04, + 4.156017325010880319e-04, + 4.155199035615778167e-04, + 4.154374049487128545e-04, + 4.153542368416378761e-04, + 4.152703994205745501e-04, + 4.151858928668201824e-04, + 4.151007173627551967e-04, + 4.150148730918259499e-04, + 4.149283602385540025e-04, + 4.148411789885419728e-04, + 4.147533295284578161e-04, + 4.146648120460538528e-04, + 4.145756267301456801e-04, + 4.144857737706293568e-04, + 4.143952533584685017e-04, + 4.143040656856998225e-04, + 4.142122109454309475e-04, + 4.141196893318485031e-04, + 4.140265010401995198e-04, + 4.139326462668089417e-04, + 4.138381252090688389e-04, + 4.137429380654384617e-04, + 4.136470850354535106e-04, + 4.135505663197159990e-04, + 4.134533821198945781e-04, + 4.133555326387235076e-04, + 4.132570180800100817e-04, + 4.131578386486326241e-04, + 4.130579945505281274e-04, + 4.129574859927029871e-04, + 4.128563131832310501e-04, + 4.127544763312520964e-04, + 4.126519756469644671e-04, + 4.125488113416458805e-04, + 4.124449836276299053e-04, + 4.123404927183120863e-04, + 4.122353388281526005e-04, + 4.121295221726782631e-04, + 4.120230429684809551e-04, + 4.119159014332086249e-04, + 4.118080977855727689e-04, + 4.116996322453501120e-04, + 4.115905050333739886e-04, + 4.114807163715393295e-04, + 4.113702664828111188e-04, + 4.112591555912008669e-04, + 4.111473839217820599e-04, + 4.110349517006939551e-04, + 4.109218591551245039e-04, + 4.108081065133348015e-04, + 4.106936940046276982e-04, + 4.105786218593750138e-04, + 4.104628903089972626e-04, + 4.103464995859728692e-04, + 4.102294499238380056e-04, + 4.101117415571910369e-04, + 4.099933747216730597e-04, + 4.098743496539844901e-04, + 4.097546665918852808e-04, + 4.096343257741761105e-04, + 4.095133274407285239e-04, + 4.093916718324516475e-04, + 4.092693591913152285e-04, + 4.091463897603365703e-04, + 4.090227637835857364e-04, + 4.088984815061849545e-04, + 4.087735431743082909e-04, + 4.086479490351731941e-04, + 4.085216993370533963e-04, + 4.083947943292685055e-04, + 4.082672342621812946e-04, + 4.081390193872146154e-04, + 4.080101499568353522e-04, + 4.078806262245504100e-04, + 4.077504484449156054e-04, + 4.076196168735332268e-04, + 4.074881317670628225e-04, + 4.073559933831924149e-04, + 4.072232019806585040e-04, + 4.070897578192520308e-04, + 4.069556611597939825e-04, + 4.068209122641536072e-04, + 4.066855113952473838e-04, + 4.065494588170340891e-04, + 4.064127547945054191e-04, + 4.062753995936979157e-04, + 4.061373934816893882e-04, + 4.059987367266078588e-04, + 4.058594295976036435e-04, + 4.057194723648789515e-04, + 4.055788652996689114e-04, + 4.054376086742435227e-04, + 4.052957027619138357e-04, + 4.051531478370410592e-04, + 4.050099441750015404e-04, + 4.048660920522179356e-04, + 4.047215917461511876e-04, + 4.045764435352839370e-04, + 4.044306476991576019e-04, + 4.042842045183219629e-04, + 4.041371142743783681e-04, + 4.039893772499506767e-04, + 4.038409937286937157e-04, + 4.036919639953059111e-04, + 4.035422883355128075e-04, + 4.033919670360641414e-04, + 4.032410003847412675e-04, + 4.030893886703624716e-04, + 4.029371321827628582e-04, + 4.027842312128259014e-04, + 4.026306860524411064e-04, + 4.024764969945454260e-04, + 4.023216643330835250e-04, + 4.021661883630361857e-04, + 4.020100693804220431e-04, + 4.018533076822645707e-04, + 4.016959035666183724e-04, + 4.015378573325722729e-04, + 4.013791692802269823e-04, + 4.012198397107027948e-04, + 4.010598689261612722e-04, + 4.008992572297761332e-04, + 4.007380049257376988e-04, + 4.005761123192553858e-04, + 4.004135797165682235e-04, + 4.002504074249400292e-04, + 4.000865957526381035e-04, + 3.999221450089535048e-04, + 3.997570555042023505e-04, + 3.995913275497077650e-04, + 3.994249614578188534e-04, + 3.992579575418972568e-04, + 3.990903161163239293e-04, + 3.989220374964849345e-04, + 3.987531219987960028e-04, + 3.985835699406666444e-04, + 3.984133816405468240e-04, + 3.982425574178740518e-04, + 3.980710975931141499e-04, + 3.978990024877372363e-04, + 3.977262724242209245e-04, + 3.975529077260606223e-04, + 3.973789087177693156e-04, + 3.972042757248520897e-04, + 3.970290090738277586e-04, + 3.968531090922316302e-04, + 3.966765761085918164e-04, + 3.964994104524652827e-04, + 3.963216124543912817e-04, + 3.961431824459337998e-04, + 3.959641207596496814e-04, + 3.957844277290978991e-04, + 3.956041036888568465e-04, + 3.954231489745010280e-04, + 3.952415639225982939e-04, + 3.950593488707330428e-04, + 3.948765041574795495e-04, + 3.946930301224108560e-04, + 3.945089271061174197e-04, + 3.943241954501799538e-04, + 3.941388354971710542e-04, + 3.939528475906633846e-04, + 3.937662320752326585e-04, + 3.935789892964615421e-04, + 3.933911196009094594e-04, + 3.932026233361365529e-04, + 3.930135008507084542e-04, + 3.928237524941754675e-04, + 3.926333786170750086e-04, + 3.924423795709627220e-04, + 3.922507557083686246e-04, + 3.920585073828156998e-04, + 3.918656349488150187e-04, + 3.916721387618743596e-04, + 3.914780191785026528e-04, + 3.912832765561787018e-04, + 3.910879112533735720e-04, + 3.908919236295587221e-04, + 3.906953140451767848e-04, + 3.904980828616665578e-04, + 3.903002304414623534e-04, + 3.901017571479667304e-04, + 3.899026633455682754e-04, + 3.897029493996547215e-04, + 3.895026156765767902e-04, + 3.893016625436940530e-04, + 3.891000903693208842e-04, + 3.888978995227746534e-04, + 3.886950903743412481e-04, + 3.884916632952798983e-04, + 3.882876186578541303e-04, + 3.880829568352912179e-04, + 3.878776782017937289e-04, + 3.876717831325405010e-04, + 3.874652720036999231e-04, + 3.872581451923963252e-04, + 3.870504030767589845e-04, + 3.868420460358614637e-04, + 3.866330744497738703e-04, + 3.864234886995223609e-04, + 3.862132891671180360e-04, + 3.860024762355397546e-04, + 3.857910502887432419e-04, + 3.855790117116401645e-04, + 3.853663608901309267e-04, + 3.851530982110724162e-04, + 3.849392240622844007e-04, + 3.847247388325774459e-04, + 3.845096429117156735e-04, + 3.842939366904257054e-04, + 3.840776205603998084e-04, + 3.838606949142986044e-04, + 3.836431601457621294e-04, + 3.834250166493734040e-04, + 3.832062648206770281e-04, + 3.829869050562004305e-04, + 3.827669377534137539e-04, + 3.825463633107466601e-04, + 3.823251821276101221e-04, + 3.821033946043609166e-04, + 3.818810011423056359e-04, + 3.816580021437286597e-04, + 3.814343980118459145e-04, + 3.812101891508648836e-04, + 3.809853759659141887e-04, + 3.807599588631020281e-04, + 3.805339382494771997e-04, + 3.803073145330366903e-04, + 3.800800881227550036e-04, + 3.798522594285430685e-04, + 3.796238288612615208e-04, + 3.793947968327172340e-04, + 3.791651637556845691e-04, + 3.789349300438636875e-04, + 3.787040961119359536e-04, + 3.784726623754953046e-04, + 3.782406292511093456e-04, + 3.780079971562763067e-04, + 3.777747665094351799e-04, + 3.775409377299935297e-04, + 3.773065112382909545e-04, + 3.770714874556014727e-04, + 3.768358668041453942e-04, + 3.765996497070973979e-04, + 3.763628365885494519e-04, + 3.761254278735641564e-04, + 3.758874239881267675e-04, + 3.756488253591578285e-04, + 3.754096324145175605e-04, + 3.751698455830039113e-04, + 3.749294652943717995e-04, + 3.746884919792834584e-04, + 3.744469260693422089e-04, + 3.742047679971007533e-04, + 3.739620181960297339e-04, + 3.737186771005264604e-04, + 3.734747451459484121e-04, + 3.732302227685668338e-04, + 3.729851104055806137e-04, + 3.727394084951137355e-04, + 3.724931174762291020e-04, + 3.722462377889296735e-04, + 3.719987698741223639e-04, + 3.717507141736440071e-04, + 3.715020711302738257e-04, + 3.712528411876959717e-04, + 3.710030247905309140e-04, + 3.707526223843222654e-04, + 3.705016344155380838e-04, + 3.702500613315520611e-04, + 3.699979035806828798e-04, + 3.697451616121401113e-04, + 3.694918358760936050e-04, + 3.692379268235907635e-04, + 3.689834349066249014e-04, + 3.687283605780920944e-04, + 3.684727042917956786e-04, + 3.682164665024848481e-04, + 3.679596476658048357e-04, + 3.677022482383125257e-04, + 3.674442686774735808e-04, + 3.671857094416855895e-04, + 3.669265709902298192e-04, + 3.666668537833331245e-04, + 3.664065582820997505e-04, + 3.661456849485648381e-04, + 3.658842342456594589e-04, + 3.656222066372130544e-04, + 3.653596025879914371e-04, + 3.650964225636499534e-04, + 3.648326670307367359e-04, + 3.645683364567251753e-04, + 3.643034313099780333e-04, + 3.640379520597519965e-04, + 3.637718991762360567e-04, + 3.635052731305021259e-04, + 3.632380743945165828e-04, + 3.629703034411437966e-04, + 3.627019607441540417e-04, + 3.624330467782316831e-04, + 3.621635620189266589e-04, + 3.618935069426956253e-04, + 3.616228820269035290e-04, + 3.613516877497931407e-04, + 3.610799245904941631e-04, + 3.608075930290605268e-04, + 3.605346935464163430e-04, + 3.602612266243740099e-04, + 3.599871927456338330e-04, + 3.597125923937932951e-04, + 3.594374260533543747e-04, + 3.591616942096757326e-04, + 3.588853973490112011e-04, + 3.586085359585158014e-04, + 3.583311105262024297e-04, + 3.580531215410004040e-04, + 3.577745694927074883e-04, + 3.574954548719956929e-04, + 3.572157781704201653e-04, + 3.569355398804319830e-04, + 3.566547404953345152e-04, + 3.563733805093514018e-04, + 3.560914604175422567e-04, + 3.558089807158724364e-04, + 3.555259419011684791e-04, + 3.552423444711236343e-04, + 3.549581889243375444e-04, + 3.546734757602640407e-04, + 3.543882054792261049e-04, + 3.541023785824145686e-04, + 3.538159955719134830e-04, + 3.535290569506454217e-04, + 3.532415632224439046e-04, + 3.529535148919700775e-04, + 3.526649124647820467e-04, + 3.523757564472799640e-04, + 3.520860473467476060e-04, + 3.517957856713289553e-04, + 3.515049719300385547e-04, + 3.512136066327333178e-04, + 3.509216902901590956e-04, + 3.506292234139049232e-04, + 3.503362065164109342e-04, + 3.500426401110123798e-04, + 3.497485247118810271e-04, + 3.494538608340406636e-04, + 3.491586489933751745e-04, + 3.488628897066255608e-04, + 3.485665834914123827e-04, + 3.482697308661746104e-04, + 3.479723323502119619e-04, + 3.476743884636962880e-04, + 3.473758997276195836e-04, + 3.470768666638680399e-04, + 3.467772897951321089e-04, + 3.464771696449853795e-04, + 3.461765067378226699e-04, + 3.458753015989101168e-04, + 3.455735547543285812e-04, + 3.452712667310517099e-04, + 3.449684380568459729e-04, + 3.446650692603608684e-04, + 3.443611608710640880e-04, + 3.440567134192602729e-04, + 3.437517274361260341e-04, + 3.434462034536588863e-04, + 3.431401420046883608e-04, + 3.428335436228806678e-04, + 3.425264088427607597e-04, + 3.422187381996560614e-04, + 3.419105322297742613e-04, + 3.416017914701097993e-04, + 3.412925164585262658e-04, + 3.409827077336982887e-04, + 3.406723658351235137e-04, + 3.403614913031681411e-04, + 3.400500846790005722e-04, + 3.397381465046179182e-04, + 3.394256773228407418e-04, + 3.391126776773365848e-04, + 3.387991481125677629e-04, + 3.384850891738592376e-04, + 3.381705014073390389e-04, + 3.378553853599547451e-04, + 3.375397415794726156e-04, + 3.372235706144874573e-04, + 3.369068730144350924e-04, + 3.365896493295364141e-04, + 3.362719001108362008e-04, + 3.359536259102175902e-04, + 3.356348272803601749e-04, + 3.353155047747502482e-04, + 3.349956589477246058e-04, + 3.346752903544118361e-04, + 3.343543995507446804e-04, + 3.340329870934706036e-04, + 3.337110535401510898e-04, + 3.333885994491803985e-04, + 3.330656253797253377e-04, + 3.327421318917674390e-04, + 3.324181195461161850e-04, + 3.320935889043515467e-04, + 3.317685405289068704e-04, + 3.314429749829715709e-04, + 3.311168928305698988e-04, + 3.307902946365030980e-04, + 3.304631809663999297e-04, + 3.301355523866538431e-04, + 3.298074094645051034e-04, + 3.294787527679456530e-04, + 3.291495828657974455e-04, + 3.288199003276568800e-04, + 3.284897057239098716e-04, + 3.281589996257704492e-04, + 3.278277826052244850e-04, + 3.274960552350428679e-04, + 3.271638180887880627e-04, + 3.268310717408335177e-04, + 3.264978167663056593e-04, + 3.261640537411688396e-04, + 3.258297832421266742e-04, + 3.254950058467015678e-04, + 3.251597221331735659e-04, + 3.248239326806290350e-04, + 3.244876380689299257e-04, + 3.241508388787265661e-04, + 3.238135356914298522e-04, + 3.234757290892591695e-04, + 3.231374196551916526e-04, + 3.227986079729751410e-04, + 3.224592946271707884e-04, + 3.221194802030937030e-04, + 3.217791652868272042e-04, + 3.214383504652288943e-04, + 3.210970363259370557e-04, + 3.207552234573820887e-04, + 3.204129124487313800e-04, + 3.200701038899288219e-04, + 3.197267983717089071e-04, + 3.193829964855370430e-04, + 3.190386988236982397e-04, + 3.186939059791919424e-04, + 3.183486185458186046e-04, + 3.180028371181195155e-04, + 3.176565622914034707e-04, + 3.173097946617432492e-04, + 3.169625348259980015e-04, + 3.166147833817404460e-04, + 3.162665409273410027e-04, + 3.159178080619041507e-04, + 3.155685853852845286e-04, + 3.152188734981299775e-04, + 3.148686730018202288e-04, + 3.145179844984820837e-04, + 3.141668085909933160e-04, + 3.138151458830082592e-04, + 3.134629969788917787e-04, + 3.131103624838132721e-04, + 3.127572430036379783e-04, + 3.124036391450136585e-04, + 3.120495515153154657e-04, + 3.116949807226532623e-04, + 3.113399273759215476e-04, + 3.109843920847342978e-04, + 3.106283754594399817e-04, + 3.102718781111305597e-04, + 3.099149006516589938e-04, + 3.095574436935786948e-04, + 3.091995078502374141e-04, + 3.088410937356641617e-04, + 3.084822019646631520e-04, + 3.081228331527432768e-04, + 3.077629879161613105e-04, + 3.074026668719333482e-04, + 3.070418706377646585e-04, + 3.066805998321018331e-04, + 3.063188550741428699e-04, + 3.059566369837768917e-04, + 3.055939461816752729e-04, + 3.052307832891794793e-04, + 3.048671489283983206e-04, + 3.045030437221403507e-04, + 3.041384682939360395e-04, + 3.037734232680481270e-04, + 3.034079092694828990e-04, + 3.030419269239289842e-04, + 3.026754768578007759e-04, + 3.023085596982549666e-04, + 3.019411760731254956e-04, + 3.015733266110171159e-04, + 3.012050119411958894e-04, + 3.008362326936799350e-04, + 3.004669894991676541e-04, + 3.000972829891014821e-04, + 2.997271137955966557e-04, + 2.993564825515314734e-04, + 2.989853898904363269e-04, + 2.986138364465908460e-04, + 2.982418228549562440e-04, + 2.978693497511896294e-04, + 2.974964177716943130e-04, + 2.971230275535520450e-04, + 2.967491797345361338e-04, + 2.963748749531255953e-04, + 2.960001138485183797e-04, + 2.956248970605730958e-04, + 2.952492252299037702e-04, + 2.948730989977615068e-04, + 2.944965190061350465e-04, + 2.941194858976839801e-04, + 2.937420003157504038e-04, + 2.933640629044115028e-04, + 2.929856743084101084e-04, + 2.926068351731633170e-04, + 2.922275461448084607e-04, + 2.918478078701478126e-04, + 2.914676209966602966e-04, + 2.910869861725538538e-04, + 2.907059040466949159e-04, + 2.903243752686242882e-04, + 2.899424004885648473e-04, + 2.895599803574313538e-04, + 2.891771155268414565e-04, + 2.887938066490503691e-04, + 2.884100543770009065e-04, + 2.880258593643348687e-04, + 2.876412222653316206e-04, + 2.872561437349998160e-04, + 2.868706244289662122e-04, + 2.864846650035696163e-04, + 2.860982661157951282e-04, + 2.857114284232999449e-04, + 2.853241525844146071e-04, + 2.849364392581675565e-04, + 2.845482891042081029e-04, + 2.841597027828615023e-04, + 2.837706809551422378e-04, + 2.833812242826851189e-04, + 2.829913334278488768e-04, + 2.826010090535908850e-04, + 2.822102518235746036e-04, + 2.818190624020841441e-04, + 2.814274414540985920e-04, + 2.810353896452105283e-04, + 2.806429076417264810e-04, + 2.802499961105492897e-04, + 2.798566557192766588e-04, + 2.794628871361327991e-04, + 2.790686910299847450e-04, + 2.786740680703923899e-04, + 2.782790189275379054e-04, + 2.778835442722429796e-04, + 2.774876447759757562e-04, + 2.770913211108751747e-04, + 2.766945739496819612e-04, + 2.762974039658402177e-04, + 2.758998118333738777e-04, + 2.755017982269944215e-04, + 2.751033638220134895e-04, + 2.747045092944111868e-04, + 2.743052353207948838e-04, + 2.739055425784173224e-04, + 2.735054317451382348e-04, + 2.731049034994892334e-04, + 2.727039585205894598e-04, + 2.723025974882498307e-04, + 2.719008210828521496e-04, + 2.714986299854513468e-04, + 2.710960248777024586e-04, + 2.706930064418899546e-04, + 2.702895753609308826e-04, + 2.698857323183950340e-04, + 2.694814779984304053e-04, + 2.690768130858167575e-04, + 2.686717382659823674e-04, + 2.682662542249294882e-04, + 2.678603616493442879e-04, + 2.674540612264651187e-04, + 2.670473536441942981e-04, + 2.666402395910211849e-04, + 2.662327197560501518e-04, + 2.658247948290072527e-04, + 2.654164655002577331e-04, + 2.650077324607242810e-04, + 2.645985964019836293e-04, + 2.641890580161935891e-04, + 2.637791179961101258e-04, + 2.633687770351424910e-04, + 2.629580358272752137e-04, + 2.625468950670890801e-04, + 2.621353554497680180e-04, + 2.617234176711230576e-04, + 2.613110824275208829e-04, + 2.608983504159910591e-04, + 2.604852223340976629e-04, + 2.600716988800468900e-04, + 2.596577807526119193e-04, + 2.592434686511543265e-04, + 2.588287632756708671e-04, + 2.584136653267255510e-04, + 2.579981755054633580e-04, + 2.575822945136187485e-04, + 2.571660230535246627e-04, + 2.567493618281281326e-04, + 2.563323115409156896e-04, + 2.559148728959699049e-04, + 2.554970465979844603e-04, + 2.550788333521976326e-04, + 2.546602338644477501e-04, + 2.542412488411824084e-04, + 2.538218789893806251e-04, + 2.534021250166085129e-04, + 2.529819876310387418e-04, + 2.525614675413711207e-04, + 2.521405654569439992e-04, + 2.517192820876061696e-04, + 2.512976181438236604e-04, + 2.508755743366048179e-04, + 2.504531513775276282e-04, + 2.500303499787492586e-04, + 2.496071708530199886e-04, + 2.491836147136111657e-04, + 2.487596822743661082e-04, + 2.483353742497207048e-04, + 2.479106913546281175e-04, + 2.474856343046654122e-04, + 2.470602038159049182e-04, + 2.466344006050264436e-04, + 2.462082253892270691e-04, + 2.457816788862989942e-04, + 2.453547618145432885e-04, + 2.449274748928789627e-04, + 2.444998188407140026e-04, + 2.440717943780527596e-04, + 2.436434022254229564e-04, + 2.432146431038928447e-04, + 2.427855177351233827e-04, + 2.423560268412962434e-04, + 2.419261711451269070e-04, + 2.414959513698766681e-04, + 2.410653682393593307e-04, + 2.406344224779573629e-04, + 2.402031148105479542e-04, + 2.397714459625578762e-04, + 2.393394166599774960e-04, + 2.389070276293094389e-04, + 2.384742795975789971e-04, + 2.380411732923959562e-04, + 2.376077094418740118e-04, + 2.371738887746412865e-04, + 2.367397120198915580e-04, + 2.363051799073041912e-04, + 2.358702931671511217e-04, + 2.354350525301663179e-04, + 2.349994587276565321e-04, + 2.345635124914249728e-04, + 2.341272145537982472e-04, + 2.336905656476355767e-04, + 2.332535665063448433e-04, + 2.328162178638064784e-04, + 2.323785204544280526e-04, + 2.319404750131660680e-04, + 2.315020822754409568e-04, + 2.310633429772594608e-04, + 2.306242578550725733e-04, + 2.301848276458923627e-04, + 2.297450530872122826e-04, + 2.293049349170372324e-04, + 2.288644738738899260e-04, + 2.284236706968293784e-04, + 2.279825261253723813e-04, + 2.275410408995506687e-04, + 2.270992157599302421e-04, + 2.266570514475284564e-04, + 2.262145487039243915e-04, + 2.257717082711665059e-04, + 2.253285308917947266e-04, + 2.248850173088432955e-04, + 2.244411682658757623e-04, + 2.239969845068983561e-04, + 2.235524667764832597e-04, + 2.231076158196232720e-04, + 2.226624323818535915e-04, + 2.222169172091703648e-04, + 2.217710710480480074e-04, + 2.213248946454977233e-04, + 2.208783887489876806e-04, + 2.204315541064615785e-04, + 2.199843914663478629e-04, + 2.195369015775660421e-04, + 2.190890851895468526e-04, + 2.186409430521527334e-04, + 2.181924759157339059e-04, + 2.177436845311487841e-04, + 2.172945696496922006e-04, + 2.168451320231639008e-04, + 2.163953724038275876e-04, + 2.159452915444289457e-04, + 2.154948901981564480e-04, + 2.150441691187078986e-04, + 2.145931290601994952e-04, + 2.141417707772862568e-04, + 2.136900950250186109e-04, + 2.132381025589620625e-04, + 2.127857941351170713e-04, + 2.123331705099449642e-04, + 2.118802324403796990e-04, + 2.114269806838442629e-04, + 2.109734159981719323e-04, + 2.105195391416626513e-04, + 2.100653508731015445e-04, + 2.096108519516808272e-04, + 2.091560431371149208e-04, + 2.087009251895009158e-04, + 2.082454988694378071e-04, + 2.077897649379340384e-04, + 2.073337241564866221e-04, + 2.068773772869905540e-04, + 2.064207250918562869e-04, + 2.059637683338686755e-04, + 2.055065077763082448e-04, + 2.050489441828652669e-04, + 2.045910783176628544e-04, + 2.041329109453126885e-04, + 2.036744428308368481e-04, + 2.032156747396820400e-04, + 2.027566074377326090e-04, + 2.022972416913172873e-04, + 2.018375782672284392e-04, + 2.013776179326390650e-04, + 2.009173614551656040e-04, + 2.004568096028823269e-04, + 1.999959631442617858e-04, + 1.995348228481936799e-04, + 1.990733894840440797e-04, + 1.986116638215731087e-04, + 1.981496466309538092e-04, + 1.976873386827811133e-04, + 1.972247407480814117e-04, + 1.967618535983296020e-04, + 1.962986780053589382e-04, + 1.958352147414690436e-04, + 1.953714645793458156e-04, + 1.949074282920885580e-04, + 1.944431066532191694e-04, + 1.939785004367032312e-04, + 1.935136104168647890e-04, + 1.930484373684463091e-04, + 1.925829820666304711e-04, + 1.921172452869541092e-04, + 1.916512278054313776e-04, + 1.911849303984078168e-04, + 1.907183538426840885e-04, + 1.902514989154305671e-04, + 1.897843663942175893e-04, + 1.893169570570253472e-04, + 1.888492716822610734e-04, + 1.883813110486778062e-04, + 1.879130759354333442e-04, + 1.874445671221096799e-04, + 1.869757853886301125e-04, + 1.865067315153803537e-04, + 1.860374062830642198e-04, + 1.855678104728257407e-04, + 1.850979448661539120e-04, + 1.846278102449442780e-04, + 1.841574073915088795e-04, + 1.836867370884901949e-04, + 1.832158001189231294e-04, + 1.827445972662552088e-04, + 1.822731293142806322e-04, + 1.818013970471623090e-04, + 1.813294012494918962e-04, + 1.808571427062039027e-04, + 1.803846222025981593e-04, + 1.799118405243464594e-04, + 1.794387984575025340e-04, + 1.789654967885222171e-04, + 1.784919363041765478e-04, + 1.780181177916166592e-04, + 1.775440420383900416e-04, + 1.770697098323771167e-04, + 1.765951219618135451e-04, + 1.761202792153480413e-04, + 1.756451823819594864e-04, + 1.751698322509651681e-04, + 1.746942296120836916e-04, + 1.742183752553372929e-04, + 1.737422699711782840e-04, + 1.732659145503392972e-04, + 1.727893097839592153e-04, + 1.723124564634974658e-04, + 1.718353553807635647e-04, + 1.713580073279263600e-04, + 1.708804130975353629e-04, + 1.704025734824335240e-04, + 1.699244892758193309e-04, + 1.694461612712679229e-04, + 1.689675902626432439e-04, + 1.684887770442253273e-04, + 1.680097224105600801e-04, + 1.675304271565847519e-04, + 1.670508920775429066e-04, + 1.665711179690135605e-04, + 1.660911056269214544e-04, + 1.656108558475570037e-04, + 1.651303694274891824e-04, + 1.646496471636285154e-04, + 1.641686898532474881e-04, + 1.636874982938927268e-04, + 1.632060732835028511e-04, + 1.627244156203088896e-04, + 1.622425261028559104e-04, + 1.617604055300129410e-04, + 1.612780547009794738e-04, + 1.607954744153086680e-04, + 1.603126654728189327e-04, + 1.598296286736564857e-04, + 1.593463648183165494e-04, + 1.588628747075776211e-04, + 1.583791591425205009e-04, + 1.578952189245920695e-04, + 1.574110548555180105e-04, + 1.569266677373235181e-04, + 1.564420583723415375e-04, + 1.559572275632232000e-04, + 1.554721761129572845e-04, + 1.549869048247836170e-04, + 1.545014145022562254e-04, + 1.540157059492619875e-04, + 1.535297799699464718e-04, + 1.530436373687852779e-04, + 1.525572789505427556e-04, + 1.520707055202883762e-04, + 1.515839178833564818e-04, + 1.510969168454173001e-04, + 1.506097032123793937e-04, + 1.501222777905180023e-04, + 1.496346413863234714e-04, + 1.491467948066277783e-04, + 1.486587388585178509e-04, + 1.481704743493660872e-04, + 1.476820020868415231e-04, + 1.471933228789269353e-04, + 1.467044375338346805e-04, + 1.462153468600661907e-04, + 1.457260516664362325e-04, + 1.452365527619834870e-04, + 1.447468509560967788e-04, + 1.442569470583666481e-04, + 1.437668418787102780e-04, + 1.432765362272749195e-04, + 1.427860309145103973e-04, + 1.422953267511263380e-04, + 1.418044245481107099e-04, + 1.413133251166866721e-04, + 1.408220292683873569e-04, + 1.403305378149766419e-04, + 1.398388515684711867e-04, + 1.393469713412030992e-04, + 1.388548979457332813e-04, + 1.383626321948699142e-04, + 1.378701749016803305e-04, + 1.373775268794968419e-04, + 1.368846889419418926e-04, + 1.363916619028362543e-04, + 1.358984465762639704e-04, + 1.354050437765921420e-04, + 1.349114543184063103e-04, + 1.344176790165283180e-04, + 1.339237186860819581e-04, + 1.334295741424045847e-04, + 1.329352462010661940e-04, + 1.324407356778795357e-04, + 1.319460433889108725e-04, + 1.314511701504993612e-04, + 1.309561167791571700e-04, + 1.304608840916884156e-04, + 1.299654729051016682e-04, + 1.294698840366402548e-04, + 1.289741183037912582e-04, + 1.284781765243074993e-04, + 1.279820595161179002e-04, + 1.274857680973920219e-04, + 1.269893030865602032e-04, + 1.264926653022243577e-04, + 1.259958555632901926e-04, + 1.254988746888097010e-04, + 1.250017234981121877e-04, + 1.245044028107169100e-04, + 1.240069134463510749e-04, + 1.235092562250159217e-04, + 1.230114319668973292e-04, + 1.225134414923863344e-04, + 1.220152856220884296e-04, + 1.215169651768557764e-04, + 1.210184809776974343e-04, + 1.205198338459098303e-04, + 1.200210246029223012e-04, + 1.195220540704275094e-04, + 1.190229230702793381e-04, + 1.185236324245600849e-04, + 1.180241829555890267e-04, + 1.175245754858330005e-04, + 1.170248108379706015e-04, + 1.165248898349130675e-04, + 1.160248132997382782e-04, + 1.155245820557094036e-04, + 1.150241969263409586e-04, + 1.145236587353085436e-04, + 1.140229683064704336e-04, + 1.135221264638759127e-04, + 1.130211340317762792e-04, + 1.125199918346448215e-04, + 1.120187006970875212e-04, + 1.115172614439075894e-04, + 1.110156749001261892e-04, + 1.105139418909044949e-04, + 1.100120632416184746e-04, + 1.095100397778148719e-04, + 1.090078723252300031e-04, + 1.085055617097463622e-04, + 1.080031087574661973e-04, + 1.075005142946139597e-04, + 1.069977791476638872e-04, + 1.064949041431859664e-04, + 1.059918901079778797e-04, + 1.054887378689735669e-04, + 1.049854482532752221e-04, + 1.044820220881642175e-04, + 1.039784602011215947e-04, + 1.034747634197365446e-04, + 1.029709325717737494e-04, + 1.024669684851918690e-04, + 1.019628719880558420e-04, + 1.014586439086671664e-04, + 1.009542850754076797e-04, + 1.004497963168706929e-04, + 9.994517846177215390e-05, + 9.944043233897042046e-05, + 9.893555877753129895e-05, + 9.843055860663960045e-05, + 9.792543265560635076e-05, + 9.742018175393656651e-05, + 9.691480673124772322e-05, + 9.640930841729279460e-05, + 9.590368764202483027e-05, + 9.539794523550557115e-05, + 9.489208202792796018e-05, + 9.438609884962459906e-05, + 9.387999653107853614e-05, + 9.337377590294377130e-05, + 9.286743779595438633e-05, + 9.236098304099088453e-05, + 9.185441246909996382e-05, + 9.134772691142789254e-05, + 9.084092719923926617e-05, + 9.033401416398517648e-05, + 8.982698863721045809e-05, + 8.931985145057512855e-05, + 8.881260343586521680e-05, + 8.830524542500127418e-05, + 8.779777825006042434e-05, + 8.729020274318480244e-05, + 8.678251973664740683e-05, + 8.627473006287347140e-05, + 8.576683455436034302e-05, + 8.525883404374365857e-05, + 8.475072936380729247e-05, + 8.424252134739210749e-05, + 8.373421082746104760e-05, + 8.322579863712190615e-05, + 8.271728560953445046e-05, + 8.220867257804596059e-05, + 8.169996037602947998e-05, + 8.119114983702085855e-05, + 8.068224179462449492e-05, + 8.017323708253594201e-05, + 7.966413653460817888e-05, + 7.915494098475944003e-05, + 7.864565126699476388e-05, + 7.813626821541579126e-05, + 7.762679266425364386e-05, + 7.711722544777660439e-05, + 7.660756740042484227e-05, + 7.609781935665035826e-05, + 7.558798215105184569e-05, + 7.507805661827101360e-05, + 7.456804359307045958e-05, + 7.405794391028826880e-05, + 7.354775840485685201e-05, + 7.303748791175864233e-05, + 7.252713326610254509e-05, + 7.201669530304393720e-05, + 7.150617485780628351e-05, + 7.099557276574624306e-05, + 7.048488986226399209e-05, + 6.997412698282188582e-05, + 6.946328496295710298e-05, + 6.895236463828943849e-05, + 6.844136684454359739e-05, + 6.793029241745709187e-05, + 6.741914219284686548e-05, + 6.690791700663042149e-05, + 6.639661769475674574e-05, + 6.588524509322720454e-05, + 6.537380003816258911e-05, + 6.486228336571097188e-05, + 6.435069591206879426e-05, + 6.383903851349088195e-05, + 6.332731200630097523e-05, + 6.281551722691226108e-05, + 6.230365501172408936e-05, + 6.179172619724624944e-05, + 6.127973162000545783e-05, + 6.076767211656767913e-05, + 6.025554852360440471e-05, + 5.974336167780139675e-05, + 5.923111241587804125e-05, + 5.871880157459989088e-05, + 5.820642999080901590e-05, + 5.769399850133333094e-05, + 5.718150794312115129e-05, + 5.666895915308019563e-05, + 5.615635296821330785e-05, + 5.564369022552607621e-05, + 5.513097176204767038e-05, + 5.461819841489858372e-05, + 5.410537102119718184e-05, + 5.359249041808201688e-05, + 5.307955744272149036e-05, + 5.256657293234644711e-05, + 5.205353772415811968e-05, + 5.154045265546325382e-05, + 5.102731856351321287e-05, + 5.051413628563936075e-05, + 5.000090665914908695e-05, + 4.948763052139291187e-05, + 4.897430870977461059e-05, + 4.846094206165862196e-05, + 4.794753141443667963e-05, + 4.743407760554993653e-05, + 4.692058147241869503e-05, + 4.640704385246391481e-05, + 4.589346558317452824e-05, + 4.537984750201458524e-05, + 4.486619044644470696e-05, + 4.435249525393226370e-05, + 4.383876276196138345e-05, + 4.332499380805464952e-05, + 4.281118922967953384e-05, + 4.229734986431681694e-05, + 4.178347654948099803e-05, + 4.126957012263976591e-05, + 4.075563142129174976e-05, + 4.024166128292049483e-05, + 3.972766054501506225e-05, + 3.921363004502339476e-05, + 3.869957062043088752e-05, + 3.818548310865606753e-05, + 3.767136834718650513e-05, + 3.715722717341736275e-05, + 3.664306042478727933e-05, + 3.612886893868557617e-05, + 3.561465355247339887e-05, + 3.510041510355158158e-05, + 3.458615442926722271e-05, + 3.407187236693568063e-05, + 3.355756975385018923e-05, + 3.304324742731523098e-05, + 3.252890622455325491e-05, + 3.201454698284119120e-05, + 3.150017053934809871e-05, + 3.098577773127201158e-05, + 3.047136939574615239e-05, + 2.995694636986103633e-05, + 2.944250949073179673e-05, + 2.892805959540488951e-05, + 2.841359752086861329e-05, + 2.789912410411995726e-05, + 2.738464018208349606e-05, + 2.687014659163276893e-05, + 2.635564416965760858e-05, + 2.584113375297134716e-05, + 2.532661617833202583e-05, + 2.481209228245279645e-05, + 2.429756290201199101e-05, + 2.378302887367444998e-05, + 2.326849103399873829e-05, + 2.275395021950444381e-05, + 2.223940726669375296e-05, + 2.172486301198130960e-05, + 2.121031829171587539e-05, + 2.069577394224757740e-05, + 2.018123079983499197e-05, + 1.966668970066667635e-05, + 1.915215148087123136e-05, + 1.863761697652754041e-05, + 1.812308702368605371e-05, + 1.760856245827617704e-05, + 1.709404411617323824e-05, + 1.657953283322038805e-05, + 1.606502944513533163e-05, + 1.555053478763513379e-05, + 1.503604969633182217e-05, + 1.452157500675378667e-05, + 1.400711155435585748e-05, + 1.349266017455262564e-05, + 1.297822170262502884e-05, + 1.246379697385682372e-05, + 1.194938682337260265e-05, + 1.143499208627406607e-05, + 1.092061359754691497e-05, + 1.040625219208244850e-05, + 9.891908704745014947e-06, + 9.377583970278990512e-06, + 8.863278823330178802e-06, + 8.348994098456100562e-06, + 7.834730630159009334e-06, + 7.320489252792738156e-06, + 6.806270800699002415e-06, + 6.292076108045524225e-06, + 5.777906008962236170e-06, + 5.263761337436795560e-06, + 4.749642927393446581e-06, + 4.235551612645808376e-06, + 3.721488226918498524e-06, + 3.207453603799881308e-06, + 2.693448576820993822e-06, + 2.179473979373947048e-06, + 1.665530644733512711e-06, + 1.151619406124524432e-06, + 6.377410966288449334e-07, + 1.238965492069625673e-07, +-3.899134032919202024e-07, +-9.036879281197577157e-07, +-1.417426192608091423e-06, +-1.931127364261090470e-06, +-2.444790610688113373e-06, +-2.958415099582142610e-06, +-3.471999998812817217e-06, +-3.985544476290257204e-06, +-4.499047700126850236e-06, +-5.012508838501051279e-06, +-5.525927059761895875e-06, +-6.039301532338658999e-06, +-6.552631424845310310e-06, +-7.065915905944415445e-06, +-7.579154144508795638e-06, +-8.092345309485461199e-06, +-8.605488569988597097e-06, +-9.118583095277894160e-06, +-9.631628054691373435e-06, +-1.014462261773813121e-05, +-1.065756595407693282e-05, +-1.117045723350596857e-05, +-1.168329562592994998e-05, +-1.219608030145306819e-05, +-1.270881043024277925e-05, +-1.322148518269164326e-05, +-1.373410372928114020e-05, +-1.424666524067458595e-05, +-1.475916888769561096e-05, +-1.527161384126092273e-05, +-1.578399927247303052e-05, +-1.629632435259876968e-05, +-1.680858825305927277e-05, +-1.732079014539684211e-05, +-1.783292920136791672e-05, +-1.834500459281846363e-05, +-1.885701549178848477e-05, +-1.936896107049010935e-05, +-1.988084050129793764e-05, +-2.039265295673848359e-05, +-2.090439760946905659e-05, +-2.141607363237029135e-05, +-2.192768019847895445e-05, +-2.243921648096652800e-05, +-2.295068165320881539e-05, +-2.346207488876485357e-05, +-2.397339536130932997e-05, +-2.448464224472542749e-05, +-2.499581471308349960e-05, +-2.550691194063057051e-05, +-2.601793310178061462e-05, +-2.652887737109288943e-05, +-2.703974392336462126e-05, +-2.755053193356388298e-05, +-2.806124057680796754e-05, +-2.857186902845616861e-05, +-2.908241646397422141e-05, +-2.959288205909498486e-05, +-3.010326498968344484e-05, +-3.061356443184022163e-05, +-3.112377956181186576e-05, +-3.163390955609492444e-05, +-3.214395359130013506e-05, +-3.265391084431357497e-05, +-3.316378049216113613e-05, +-3.367356171210113638e-05, +-3.418325368160274373e-05, +-3.469285557827887789e-05, +-3.520236657997880106e-05, +-3.571178586476648814e-05, +-3.622111261091107219e-05, +-3.673034599685309184e-05, +-3.723948520129780727e-05, +-3.774852940307923439e-05, +-3.825747778132140646e-05, +-3.876632951530263192e-05, +-3.927508378455946939e-05, +-3.978373976880840082e-05, +-4.029229664799255389e-05, +-4.080075360226039058e-05, +-4.130910981201251766e-05, +-4.181736445782304812e-05, +-4.232551672052125517e-05, +-4.283356578116931894e-05, +-4.334151082099593950e-05, +-4.384935102148879892e-05, +-4.435708556437213185e-05, +-4.486471363159802482e-05, +-4.537223440533523538e-05, +-4.587964706794861257e-05, +-4.638695080209071886e-05, +-4.689414479063509062e-05, +-4.740122821665528600e-05, +-4.790820026351655419e-05, +-4.841506011474079125e-05, +-4.892180695416756449e-05, +-4.942843996581813994e-05, +-4.993495833398851370e-05, +-5.044136124321622856e-05, +-5.094764787827031800e-05, +-5.145381742413020497e-05, +-5.195986906607739144e-05, +-5.246580198962888167e-05, +-5.297161538051613509e-05, +-5.347730842477641715e-05, +-5.398288030862970845e-05, +-5.448833021858241548e-05, +-5.499365734140576113e-05, +-5.549886086412510525e-05, +-5.600393997398822501e-05, +-5.650889385855669957e-05, +-5.701372170557150965e-05, +-5.751842270311301837e-05, +-5.802299603946557471e-05, +-5.852744090321072780e-05, +-5.903175648320479747e-05, +-5.953594196851260241e-05, +-6.003999654849933275e-05, +-6.054391941280949619e-05, +-6.104770975135623864e-05, +-6.155136675428943477e-05, +-6.205488961208665936e-05, +-6.255827751542002017e-05, +-6.306152965531405840e-05, +-6.356464522301306951e-05, +-6.406762341008285556e-05, +-6.457046340833378750e-05, +-6.507316440986646365e-05, +-6.557572560705142157e-05, +-6.607814619257494561e-05, +-6.658042535936111274e-05, +-6.708256230067502219e-05, +-6.758455620998920815e-05, +-6.808640628114198754e-05, +-6.858811170820318154e-05, +-6.908967168556730276e-05, +-6.959108540791918607e-05, +-7.009235207022448825e-05, +-7.059347086770939984e-05, +-7.109444099595074241e-05, +-7.159526165081065883e-05, +-7.209593202841449563e-05, +-7.259645132524312279e-05, +-7.309681873799847910e-05, +-7.359703346376273304e-05, +-7.409709469986416701e-05, +-7.459700164398040689e-05, +-7.509675349404854169e-05, +-7.559634944836884105e-05, +-7.609578870547095111e-05, +-7.659507046427155112e-05, +-7.709419392394190453e-05, +-7.759315828399832211e-05, +-7.809196274428153507e-05, +-7.859060650488993523e-05, +-7.908908876627116305e-05, +-7.958740872920104699e-05, +-8.008556559477307318e-05, +-8.058355856436613045e-05, +-8.108138683973639639e-05, +-8.157904962288311320e-05, +-8.207654611620705733e-05, +-8.257387552237729108e-05, +-8.307103704442197806e-05, +-8.356802988570778332e-05, +-8.406485324987297814e-05, +-8.456150634092017993e-05, +-8.505798836319260821e-05, +-8.555429852136580402e-05, +-8.605043602041533425e-05, +-8.654640006570706501e-05, +-8.704218986287582587e-05, +-8.753780461792640328e-05, +-8.803324353721441798e-05, +-8.852850582743358558e-05, +-8.902359069560841179e-05, +-8.951849734907153257e-05, +-9.001322499555512594e-05, +-9.050777284312500602e-05, +-9.100214010015892545e-05, +-9.149632597543800076e-05, +-9.199032967801380268e-05, +-9.248415041736580944e-05, +-9.297778740326859202e-05, +-9.347123984588206038e-05, +-9.396450695572034688e-05, +-9.445758794364061191e-05, +-9.495048202082318942e-05, +-9.544318839886138596e-05, +-9.593570628969529015e-05, +-9.642803490559189112e-05, +-9.692017345923491819e-05, +-9.741212116359274445e-05, +-9.790387723207453889e-05, +-9.839544087839945748e-05, +-9.888681131669632197e-05, +-9.937798776141810347e-05, +-9.986896942744089652e-05, +-1.003597555299334489e-04, +-1.008503452845125958e-04, +-1.013407379071131007e-04, +-1.018309326140759104e-04, +-1.023209286221277712e-04, +-1.028107251483171257e-04, +-1.033003214101016487e-04, +-1.037897166253296801e-04, +-1.042789100122291663e-04, +-1.047679007893757163e-04, +-1.052566881757820898e-04, +-1.057452713907687292e-04, +-1.062336496541172425e-04, +-1.067218221859400683e-04, +-1.072097882067812256e-04, +-1.076975469375402296e-04, +-1.081850975995172896e-04, +-1.086724394143929665e-04, +-1.091595716042726794e-04, +-1.096464933916114755e-04, +-1.101332039993147119e-04, +-1.106197026506054574e-04, +-1.111059885691822986e-04, +-1.115920609790868227e-04, +-1.120779191047930240e-04, +-1.125635621711756044e-04, +-1.130489894035012184e-04, +-1.135342000274069382e-04, +-1.140191932689883585e-04, +-1.145039683547367402e-04, +-1.149885245115176650e-04, +-1.154728609666591944e-04, +-1.159569769478224570e-04, +-1.164408716831564046e-04, +-1.169245444011666915e-04, +-1.174079943308055954e-04, +-1.178912207014389495e-04, +-1.183742227428382141e-04, +-1.188569996851591585e-04, +-1.193395507590397239e-04, +-1.198218751954842711e-04, +-1.203039722259495985e-04, +-1.207858410823251823e-04, +-1.212674809968689380e-04, +-1.217488912022964090e-04, +-1.222300709317588393e-04, +-1.227110194188340653e-04, +-1.231917358974958607e-04, +-1.236722196022001577e-04, +-1.241524697677587232e-04, +-1.246324856294895927e-04, +-1.251122664230902180e-04, +-1.255918113847237429e-04, +-1.260711197509996502e-04, +-1.265501907589096852e-04, +-1.270290236459158660e-04, +-1.275076176499291244e-04, +-1.279859720093015814e-04, +-1.284640859628143495e-04, +-1.289419587496598335e-04, +-1.294195896095271111e-04, +-1.298969777825396456e-04, +-1.303741225092348486e-04, +-1.308510230306400828e-04, +-1.313276785882099137e-04, +-1.318040884238159450e-04, +-1.322802517798353711e-04, +-1.327561678990849762e-04, +-1.332318360248039223e-04, +-1.337072554007391579e-04, +-1.341824252710187553e-04, +-1.346573448803010161e-04, +-1.351320134736504924e-04, +-1.356064302966227442e-04, +-1.360805945952328979e-04, +-1.365545056159474604e-04, +-1.370281626056642341e-04, +-1.375015648117983483e-04, +-1.379747114822186713e-04, +-1.384476018652285110e-04, +-1.389202352096540318e-04, +-1.393926107647128221e-04, +-1.398647277801690980e-04, +-1.403365855062039245e-04, +-1.408081831935136603e-04, +-1.412795200932250386e-04, +-1.417505954569942624e-04, +-1.422214085368776596e-04, +-1.426919585854832275e-04, +-1.431622448558443226e-04, +-1.436322666015055574e-04, +-1.441020230765029857e-04, +-1.445715135353015449e-04, +-1.450407372328800840e-04, +-1.455096934247132037e-04, +-1.459783813667609560e-04, +-1.464468003154584090e-04, +-1.469149495276972155e-04, +-1.473828282609105874e-04, +-1.478504357730120379e-04, +-1.483177713223732101e-04, +-1.487848341678905549e-04, +-1.492516235689651653e-04, +-1.497181387854387539e-04, +-1.501843790776825850e-04, +-1.506503437065843823e-04, +-1.511160319334882917e-04, +-1.515814430202911311e-04, +-1.520465762293162436e-04, +-1.525114308234621957e-04, +-1.529760060660787988e-04, +-1.534403012210504844e-04, +-1.539043155527670850e-04, +-1.543680483261144554e-04, +-1.548314988064548219e-04, +-1.552946662597115123e-04, +-1.557575499523069671e-04, +-1.562201491511435759e-04, +-1.566824631236874864e-04, +-1.571444911378463603e-04, +-1.576062324621141961e-04, +-1.580676863654494372e-04, +-1.585288521173578867e-04, +-1.589897289878638401e-04, +-1.594503162475007342e-04, +-1.599106131672895176e-04, +-1.603706190188260638e-04, +-1.608303330742173937e-04, +-1.612897546060645991e-04, +-1.617488828875438597e-04, +-1.622077171922953393e-04, +-1.626662567945195449e-04, +-1.631245009689525792e-04, +-1.635824489908618850e-04, +-1.640401001360144247e-04, +-1.644974536807602169e-04, +-1.649545089019094704e-04, +-1.654112650768791402e-04, +-1.658677214835699526e-04, +-1.663238774004493462e-04, +-1.667797321065334201e-04, +-1.672352848813236437e-04, +-1.676905350048939181e-04, +-1.681454817578679703e-04, +-1.686001244214123331e-04, +-1.690544622772253405e-04, +-1.695084946075205666e-04, +-1.699622206951066498e-04, +-1.704156398233287457e-04, +-1.708687512760487953e-04, +-1.713215543377194668e-04, +-1.717740482933114603e-04, +-1.722262324283569573e-04, +-1.726781060289308092e-04, +-1.731296683816909788e-04, +-1.735809187738092320e-04, +-1.740318564930630517e-04, +-1.744824808277164834e-04, +-1.749327910666619219e-04, +-1.753827864992995483e-04, +-1.758324664156210300e-04, +-1.762818301061774558e-04, +-1.767308768620736977e-04, +-1.771796059749459681e-04, +-1.776280167370468215e-04, +-1.780761084411834627e-04, +-1.785238803806999395e-04, +-1.789713318495577527e-04, +-1.794184621422171904e-04, +-1.798652705537797649e-04, +-1.803117563798670804e-04, +-1.807579189167022292e-04, +-1.812037574610829850e-04, +-1.816492713103706627e-04, +-1.820944597624725816e-04, +-1.825393221159328126e-04, +-1.829838576698221051e-04, +-1.834280657238206657e-04, +-1.838719455781995368e-04, +-1.843154965337592040e-04, +-1.847587178919128897e-04, +-1.852016089546674440e-04, +-1.856441690246131264e-04, +-1.860863974049172084e-04, +-1.865282933993012062e-04, +-1.869698563121260709e-04, +-1.874110854483302540e-04, +-1.878519801134128210e-04, +-1.882925396134933532e-04, +-1.887327632552927305e-04, +-1.891726503460769155e-04, +-1.896122001937331728e-04, +-1.900514121067559202e-04, +-1.904902853942344772e-04, +-1.909288193658472104e-04, +-1.913670133318398224e-04, +-1.918048666031082388e-04, +-1.922423784911376490e-04, +-1.926795483079865687e-04, +-1.931163753663547107e-04, +-1.935528589795270130e-04, +-1.939889984613631221e-04, +-1.944247931263777052e-04, +-1.948602422896830689e-04, +-1.952953452669698602e-04, +-1.957301013745879755e-04, +-1.961645099294271352e-04, +-1.965985702490586978e-04, +-1.970322816516171019e-04, +-1.974656434558789866e-04, +-1.978986549812353809e-04, +-1.983313155476844943e-04, +-1.987636244758106288e-04, +-1.991955810868655484e-04, +-1.996271847027096340e-04, +-2.000584346457935875e-04, +-2.004893302392378495e-04, +-2.009198708067169421e-04, +-2.013500556725973526e-04, +-2.017798841618187585e-04, +-2.022093555999875407e-04, +-2.026384693133058759e-04, +-2.030672246286122323e-04, +-2.034956208733641032e-04, +-2.039236573756789356e-04, +-2.043513334642635491e-04, +-2.047786484684866956e-04, +-2.052056017183592730e-04, +-2.056321925444766995e-04, +-2.060584202780988197e-04, +-2.064842842511297653e-04, +-2.069097837961104741e-04, +-2.073349182462115071e-04, +-2.077596869352116629e-04, +-2.081840891975782627e-04, +-2.086081243684099584e-04, +-2.090317917834181661e-04, +-2.094550907789862360e-04, +-2.098780206921508316e-04, +-2.103005808605457679e-04, +-2.107227706224807241e-04, +-2.111445893169293722e-04, +-2.115660362834769555e-04, +-2.119871108624050461e-04, +-2.124078123945783542e-04, +-2.128281402215806601e-04, +-2.132480936855982623e-04, +-2.136676721295012926e-04, +-2.140868748968122203e-04, +-2.145057013317015423e-04, +-2.149241507789659365e-04, +-2.153422225841067036e-04, +-2.157599160932748526e-04, +-2.161772306532518020e-04, +-2.165941656115274690e-04, +-2.170107203161856428e-04, +-2.174268941160405666e-04, +-2.178426863605201962e-04, +-2.182580963997475965e-04, +-2.186731235845091475e-04, +-2.190877672662506137e-04, +-2.195020267970548909e-04, +-2.199159015297212345e-04, +-2.203293908177095045e-04, +-2.207424940151206220e-04, +-2.211552104767755544e-04, +-2.215675395581096050e-04, +-2.219794806152613445e-04, +-2.223910330050523916e-04, +-2.228021960849793615e-04, +-2.232129692132070367e-04, +-2.236233517485499073e-04, +-2.240333430505464670e-04, +-2.244429424794058424e-04, +-2.248521493959893349e-04, +-2.252609631618690761e-04, +-2.256693831393076174e-04, +-2.260774086912041266e-04, +-2.264850391811709597e-04, +-2.268922739735157717e-04, +-2.272991124332316229e-04, +-2.277055539259893356e-04, +-2.281115978181213935e-04, +-2.285172434766958574e-04, +-2.289224902694607724e-04, +-2.293273375648289354e-04, +-2.297317847319419978e-04, +-2.301358311406079618e-04, +-2.305394761613367965e-04, +-2.309427191653250959e-04, +-2.313455595244942706e-04, +-2.317479966114255763e-04, +-2.321500297994434625e-04, +-2.325516584625083986e-04, +-2.329528819753449455e-04, +-2.333536997133331186e-04, +-2.337541110525810293e-04, +-2.341541153699020893e-04, +-2.345537120428026786e-04, +-2.349529004494673996e-04, +-2.353516799688327218e-04, +-2.357500499805325006e-04, +-2.361480098648818229e-04, +-2.365455590029476697e-04, +-2.369426967764468386e-04, +-2.373394225678675641e-04, +-2.377357357603655157e-04, +-2.381316357378443266e-04, +-2.385271218848960444e-04, +-2.389221935868342532e-04, +-2.393168502296790846e-04, +-2.397110912001962758e-04, +-2.401049158858302207e-04, +-2.404983236747718946e-04, +-2.408913139559408295e-04, +-2.412838861189312565e-04, +-2.416760395540868615e-04, +-2.420677736524797787e-04, +-2.424590878059069315e-04, +-2.428499814068808436e-04, +-2.432404538486109913e-04, +-2.436305045250779623e-04, +-2.440201328309785415e-04, +-2.444093381617133773e-04, +-2.447981199134371001e-04, +-2.451864774830417597e-04, +-2.455744102681071701e-04, +-2.459619176669702433e-04, +-2.463489990787097027e-04, +-2.467356539031376802e-04, +-2.471218815407907172e-04, +-2.475076813929150197e-04, +-2.478930528615456053e-04, +-2.482779953494102421e-04, +-2.486625082600012237e-04, +-2.490465909975489141e-04, +-2.494302429670163272e-04, +-2.498134635740786348e-04, +-2.501962522251992239e-04, +-2.505786083275726673e-04, +-2.509605312891115508e-04, +-2.513420205185166751e-04, +-2.517230754251743277e-04, +-2.521036954192755995e-04, +-2.524838799117159333e-04, +-2.528636283141651089e-04, +-2.532429400390513057e-04, +-2.536218144995074889e-04, +-2.540002511094442673e-04, +-2.543782492835325467e-04, +-2.547558084371957777e-04, +-2.551329279865839346e-04, +-2.555096073486445851e-04, +-2.558858459410225474e-04, +-2.562616431821761165e-04, +-2.566369984912785646e-04, +-2.570119112882953902e-04, +-2.573863809939336321e-04, +-2.577604070296350930e-04, +-2.581339888176426380e-04, +-2.585071257809561768e-04, +-2.588798173433070216e-04, +-2.592520629292202833e-04, +-2.596238619639890132e-04, +-2.599952138736332744e-04, +-2.603661180849613449e-04, +-2.607365740255568700e-04, +-2.611065811237733326e-04, +-2.614761388087218563e-04, +-2.618452465102586281e-04, +-2.622139036590529870e-04, +-2.625821096865349480e-04, +-2.629498640248834388e-04, +-2.633171661070742215e-04, +-2.636840153668643344e-04, +-2.640504112387455794e-04, +-2.644163531580094660e-04, +-2.647818405607402182e-04, +-2.651468728837666359e-04, +-2.655114495647353866e-04, +-2.658755700420158672e-04, +-2.662392337548146956e-04, +-2.666024401430776986e-04, +-2.669651886475566988e-04, +-2.673274787097859877e-04, +-2.676893097720751697e-04, +-2.680506812774933328e-04, +-2.684115926699344261e-04, +-2.687720433940708558e-04, +-2.691320328953377642e-04, +-2.694915606199968353e-04, +-2.698506260150425112e-04, +-2.702092285283142067e-04, +-2.705673676084017674e-04, +-2.709250427047104129e-04, +-2.712822532674427395e-04, +-2.716389987475569239e-04, +-2.719952785968263002e-04, +-2.723510922678266206e-04, +-2.727064392139301463e-04, +-2.730613188892788137e-04, +-2.734157307488528643e-04, +-2.737696742483826449e-04, +-2.741231488444185386e-04, +-2.744761539943195807e-04, +-2.748286891562455440e-04, +-2.751807537891478857e-04, +-2.755323473527555443e-04, +-2.758834693076416184e-04, +-2.762341191151714329e-04, +-2.765842962374945703e-04, +-2.769340001375854743e-04, +-2.772832302792362395e-04, +-2.776319861270018052e-04, +-2.779802671462717838e-04, +-2.783280728032506740e-04, +-2.786754025649496752e-04, +-2.790222558991871209e-04, +-2.793686322745621872e-04, +-2.797145311605304615e-04, +-2.800599520273491360e-04, +-2.804048943460645937e-04, +-2.807493575885690036e-04, +-2.810933412275475746e-04, +-2.814368447365050096e-04, +-2.817798675897586211e-04, +-2.821224092624625632e-04, +-2.824644692305601263e-04, +-2.828060469708526927e-04, +-2.831471419609041099e-04, +-2.834877536791550199e-04, +-2.838278816048270150e-04, +-2.841675252179881248e-04, +-2.845066839995354134e-04, +-2.848453574311510706e-04, +-2.851835449953671374e-04, +-2.855212461755442027e-04, +-2.858584604558708601e-04, +-2.861951873213391517e-04, +-2.865314262578077219e-04, +-2.868671767519069505e-04, +-2.872024382911533900e-04, +-2.875372103638526209e-04, +-2.878714924591711344e-04, +-2.882052840670850497e-04, +-2.885385846784091165e-04, +-2.888713937847840296e-04, +-2.892037108787064614e-04, +-2.895355354534770746e-04, +-2.898668670032537560e-04, +-2.901977050230404500e-04, +-2.905280490086355498e-04, +-2.908578984567011241e-04, +-2.911872528647430763e-04, +-2.915161117311083254e-04, +-2.918444745549719039e-04, +-2.921723408363312117e-04, +-2.924997100760607684e-04, +-2.928265817758672184e-04, +-2.931529554382810375e-04, +-2.934788305666966479e-04, +-2.938042066653603836e-04, +-2.941290832393253876e-04, +-2.944534597945153089e-04, +-2.947773358377048952e-04, +-2.951007108765179329e-04, +-2.954235844194181941e-04, +-2.957459559756949624e-04, +-2.960678250555322049e-04, +-2.963891911699278537e-04, +-2.967100538307513766e-04, +-2.970304125507322308e-04, +-2.973502668434150850e-04, +-2.976696162232190168e-04, +-2.979884602054254784e-04, +-2.983067983061700023e-04, +-2.986246300424208423e-04, +-2.989419549320394723e-04, +-2.992587724936937414e-04, +-2.995750822469583257e-04, +-2.998908837122311356e-04, +-3.002061764107892615e-04, +-3.005209598647788356e-04, +-3.008352335971662436e-04, +-3.011489971318057784e-04, +-3.014622499934169805e-04, +-3.017749917075831742e-04, +-3.020872218007290789e-04, +-3.023989398001793562e-04, +-3.027101452340731744e-04, +-3.030208376314642805e-04, +-3.033310165222383842e-04, +-3.036406814371747404e-04, +-3.039498319079067925e-04, +-3.042584674669160470e-04, +-3.045665876475843318e-04, +-3.048741919841595899e-04, +-3.051812800117384775e-04, +-3.054878512663088109e-04, +-3.057939052847352549e-04, +-3.060994416047240320e-04, +-3.064044597648723622e-04, +-3.067089593046583794e-04, +-3.070129397644358739e-04, +-3.073164006854256177e-04, +-3.076193416097033851e-04, +-3.079217620802569811e-04, +-3.082236616409434154e-04, +-3.085250398364774104e-04, +-3.088258962124802980e-04, +-3.091262303154306348e-04, +-3.094260416926938547e-04, +-3.097253298925105596e-04, +-3.100240944640211848e-04, +-3.103223349572219267e-04, +-3.106200509230264335e-04, +-3.109172419131817251e-04, +-3.112139074803678862e-04, +-3.115100471781155579e-04, +-3.118056605608590637e-04, +-3.121007471839287663e-04, +-3.123953066035052594e-04, +-3.126893383766766684e-04, +-3.129828420614278622e-04, +-3.132758172166292860e-04, +-3.135682634020229751e-04, +-3.138601801782725368e-04, +-3.141515671068868766e-04, +-3.144424237503109457e-04, +-3.147327496718489801e-04, +-3.150225444357191438e-04, +-3.153118076070375369e-04, +-3.156005387517810080e-04, +-3.158887374368413094e-04, +-3.161764032300168033e-04, +-3.164635356999792311e-04, +-3.167501344163119853e-04, +-3.170361989495030629e-04, +-3.173217288709064129e-04, +-3.176067237527947372e-04, +-3.178911831683432819e-04, +-3.181751066916289157e-04, +-3.184584938976208054e-04, +-3.187413443621707671e-04, +-3.190236576620638438e-04, +-3.193054333749803042e-04, +-3.195866710794837166e-04, +-3.198673703550607389e-04, +-3.201475307821077289e-04, +-3.204271519418949114e-04, +-3.207062334166139203e-04, +-3.209847747893716189e-04, +-3.212627756441803961e-04, +-3.215402355659522033e-04, +-3.218171541404881461e-04, +-3.220935309545296587e-04, +-3.223693655957199063e-04, +-3.226446576525938102e-04, +-3.229194067146262952e-04, +-3.231936123721653397e-04, +-3.234672742164901435e-04, +-3.237403918397971955e-04, +-3.240129648351962083e-04, +-3.242849927966909816e-04, +-3.245564753192276496e-04, +-3.248274119986276770e-04, +-3.250978024316665722e-04, +-3.253676462160069380e-04, +-3.256369429502447123e-04, +-3.259056922338999531e-04, +-3.261738936673765055e-04, +-3.264415468520175134e-04, +-3.267086513900891559e-04, +-3.269752068847751728e-04, +-3.272412129401624983e-04, +-3.275066691612892912e-04, +-3.277715751540693665e-04, +-3.280359305253831054e-04, +-3.282997348829996636e-04, +-3.285629878356370365e-04, +-3.288256889929163057e-04, +-3.290878379653893403e-04, +-3.293494343645269251e-04, +-3.296104778027404442e-04, +-3.298709678933439346e-04, +-3.301309042505955562e-04, +-3.303902864896846362e-04, +-3.306491142266991426e-04, +-3.309073870786697572e-04, +-3.311651046635647258e-04, +-3.314222666002797205e-04, +-3.316788725086317687e-04, +-3.319349220093522051e-04, +-3.321904147241312331e-04, +-3.324453502755851273e-04, +-3.326997282872424101e-04, +-3.329535483835931284e-04, +-3.332068101900203866e-04, +-3.334595133328793846e-04, +-3.337116574394299266e-04, +-3.339632421378862397e-04, +-3.342142670573938811e-04, +-3.344647318280283277e-04, +-3.347146360807848938e-04, +-3.349639794476293089e-04, +-3.352127615614352673e-04, +-3.354609820560311038e-04, +-3.357086405661884087e-04, +-3.359557367275888516e-04, +-3.362022701768700435e-04, +-3.364482405516153987e-04, +-3.366936474903480642e-04, +-3.369384906325141680e-04, +-3.371827696185301991e-04, +-3.374264840897138354e-04, +-3.376696336883647709e-04, +-3.379122180576967362e-04, +-3.381542368418841192e-04, +-3.383956896860490634e-04, +-3.386365762362323565e-04, +-3.388768961394347389e-04, +-3.391166490436074710e-04, +-3.393558345976480507e-04, +-3.395944524513846551e-04, +-3.398325022556166895e-04, +-3.400699836620540723e-04, +-3.403068963233937252e-04, +-3.405432398932535455e-04, +-3.407790140262203279e-04, +-3.410142183778179970e-04, +-3.412488526045083124e-04, +-3.414829163637267016e-04, +-3.417164093138542330e-04, +-3.419493311142092679e-04, +-3.421816814250754329e-04, +-3.424134599076952769e-04, +-3.426446662242364988e-04, +-3.428753000378363994e-04, +-3.431053610125921237e-04, +-3.433348488135512283e-04, +-3.435637631067159099e-04, +-3.437921035590232183e-04, +-3.440198698383947133e-04, +-3.442470616137001437e-04, +-3.444736785547546283e-04, +-3.446997203323508025e-04, +-3.449251866182050964e-04, +-3.451500770850283702e-04, +-3.453743914064624884e-04, +-3.455981292571304645e-04, +-3.458212903125939598e-04, +-3.460438742493990370e-04, +-3.462658807450159871e-04, +-3.464873094779117538e-04, +-3.467081601274893269e-04, +-3.469284323741285620e-04, +-3.471481258991772909e-04, +-3.473672403849178188e-04, +-3.475857755146123532e-04, +-3.478037309724925949e-04, +-3.480211064437522032e-04, +-3.482379016145345984e-04, +-3.484541161719722103e-04, +-3.486697498041305327e-04, +-3.488848022000725800e-04, +-3.490992730498031042e-04, +-3.493131620443089280e-04, +-3.495264688755496743e-04, +-3.497391932364246440e-04, +-3.499513348208177022e-04, +-3.501628933235920735e-04, +-3.503738684405578708e-04, +-3.505842598685093370e-04, +-3.507940673052157383e-04, +-3.510032904493919277e-04, +-3.512119290007363463e-04, +-3.514199826599248436e-04, +-3.516274511286039011e-04, +-3.518343341093866749e-04, +-3.520406313058443764e-04, +-3.522463424225431351e-04, +-3.524514671650184113e-04, +-3.526560052397644256e-04, +-3.528599563542740569e-04, +-3.530633202169787240e-04, +-3.532660965373193461e-04, +-3.534682850256870373e-04, +-3.536698853934632761e-04, +-3.538708973530046184e-04, +-3.540713206176399866e-04, +-3.542711549016598280e-04, +-3.544703999203534651e-04, +-3.546690553899865448e-04, +-3.548671210277862384e-04, +-3.550645965519813032e-04, +-3.552614816817503663e-04, +-3.554577761372659426e-04, +-3.556534796396853279e-04, +-3.558485919111431181e-04, +-3.560431126747402582e-04, +-3.562370416545848086e-04, +-3.564303785757297663e-04, +-3.566231231642422368e-04, +-3.568152751471490068e-04, +-3.570068342524704806e-04, +-3.571978002092166676e-04, +-3.573881727473561206e-04, +-3.575779515978544246e-04, +-3.577671364926641681e-04, +-3.579557271647223950e-04, +-3.581437233479379742e-04, +-3.583311247772253717e-04, +-3.585179311884522844e-04, +-3.587041423185038241e-04, +-3.588897579052271157e-04, +-3.590747776874780254e-04, +-3.592592014050781726e-04, +-3.594430287988444744e-04, +-3.596262596105770024e-04, +-3.598088935830738903e-04, +-3.599909304601058013e-04, +-3.601723699864521405e-04, +-3.603532119078509642e-04, +-3.605334559710575816e-04, +-3.607131019237984760e-04, +-3.608921495148004156e-04, +-3.610705984937786898e-04, +-3.612484486114368927e-04, +-3.614256996194549964e-04, +-3.616023512705249135e-04, +-3.617784033183264812e-04, +-3.619538555175184089e-04, +-3.621287076237718339e-04, +-3.623029593937202855e-04, +-3.624766105850196958e-04, +-3.626496609562969539e-04, +-3.628221102671902931e-04, +-3.629939582783150293e-04, +-3.631652047512980933e-04, +-3.633358494487356929e-04, +-3.635058921342431857e-04, +-3.636753325724150724e-04, +-3.638441705288474395e-04, +-3.640124057701399113e-04, +-3.641800380638667012e-04, +-3.643470671786100596e-04, +-3.645134928839517631e-04, +-3.646793149504703492e-04, +-3.648445331497310882e-04, +-3.650091472543140090e-04, +-3.651731570377699356e-04, +-3.653365622746762684e-04, +-3.654993627405871658e-04, +-3.656615582120682382e-04, +-3.658231484666866823e-04, +-3.659841332829887289e-04, +-3.661445124405345009e-04, +-3.663042857198853816e-04, +-3.664634529026017926e-04, +-3.666220137712341404e-04, +-3.667799681093533368e-04, +-3.669373157015065634e-04, +-3.670940563332528335e-04, +-3.672501897911587096e-04, +-3.674057158627915269e-04, +-3.675606343367149483e-04, +-3.677149450024853319e-04, +-3.678686476506796499e-04, +-3.680217420728741293e-04, +-3.681742280616362288e-04, +-3.683261054105560267e-04, +-3.684773739141992748e-04, +-3.686280333681639398e-04, +-3.687780835690316304e-04, +-3.689275243144012084e-04, +-3.690763554028736091e-04, +-3.692245766340531972e-04, +-3.693721878085367075e-04, +-3.695191887279457711e-04, +-3.696655791949033884e-04, +-3.698113590130274234e-04, +-3.699565279869587394e-04, +-3.701010859223226551e-04, +-3.702450326257724755e-04, +-3.703883679049537131e-04, +-3.705310915685297297e-04, +-3.706732034261602687e-04, +-3.708147032885281808e-04, +-3.709555909672997967e-04, +-3.710958662751756131e-04, +-3.712355290258447025e-04, +-3.713745790340174015e-04, +-3.715130161154130053e-04, +-3.716508400867451307e-04, +-3.717880507657486048e-04, +-3.719246479711656953e-04, +-3.720606315227507725e-04, +-3.721960012412623949e-04, +-3.723307569484778914e-04, +-3.724648984671694008e-04, +-3.725984256211367228e-04, +-3.727313382351772858e-04, +-3.728636361351117339e-04, +-3.729953191477611047e-04, +-3.731263871009635256e-04, +-3.732568398235633724e-04, +-3.733866771454282365e-04, +-3.735158988974220909e-04, +-3.736445049114390637e-04, +-3.737724950203647855e-04, +-3.738998690581165599e-04, +-3.740266268596114871e-04, +-3.741527682607884739e-04, +-3.742782930985973371e-04, +-3.744032012110009178e-04, +-3.745274924369660285e-04, +-3.746511666164882267e-04, +-3.747742235905727874e-04, +-3.748966632012334563e-04, +-3.750184852915096887e-04, +-3.751396897054362373e-04, +-3.752602762880847317e-04, +-3.753802448855241588e-04, +-3.754995953448492154e-04, +-3.756183275141699533e-04, +-3.757364412426078223e-04, +-3.758539363802938815e-04, +-3.759708127783877181e-04, +-3.760870702890559809e-04, +-3.762027087654875039e-04, +-3.763177280618872360e-04, +-3.764321280334680000e-04, +-3.765459085364649132e-04, +-3.766590694281325138e-04, +-3.767716105667429723e-04, +-3.768835318115780139e-04, +-3.769948330229493019e-04, +-3.771055140621672663e-04, +-3.772155747915793768e-04, +-3.773250150745351768e-04, +-3.774338347754131176e-04, +-3.775420337596125894e-04, +-3.776496118935359779e-04, +-3.777565690446119204e-04, +-3.778629050812922158e-04, +-3.779686198730441808e-04, +-3.780737132903559086e-04, +-3.781781852047227162e-04, +-3.782820354886732195e-04, +-3.783852640157538290e-04, +-3.784878706605202935e-04, +-3.785898552985617689e-04, +-3.786912178064737134e-04, +-3.787919580618809810e-04, +-3.788920759434199321e-04, +-3.789915713307574069e-04, +-3.790904441045706138e-04, +-3.791886941465662112e-04, +-3.792863213394592737e-04, +-3.793833255669980123e-04, +-3.794797067139413314e-04, +-3.795754646660769887e-04, +-3.796705993102093986e-04, +-3.797651105341667333e-04, +-3.798589982267876956e-04, +-3.799522622779474314e-04, +-3.800449025785362250e-04, +-3.801369190204604751e-04, +-3.802283114966596082e-04, +-3.803190799010793531e-04, +-3.804092241287028030e-04, +-3.804987440755240699e-04, +-3.805876396385655773e-04, +-3.806759107158661881e-04, +-3.807635572064961126e-04, +-3.808505790105335981e-04, +-3.809369760290934434e-04, +-3.810227481643011405e-04, +-3.811078953193156428e-04, +-3.811924173983147830e-04, +-3.812763143064935379e-04, +-3.813595859500714010e-04, +-3.814422322362960691e-04, +-3.815242530734373706e-04, +-3.816056483707804892e-04, +-3.816864180386484611e-04, +-3.817665619883670470e-04, +-3.818460801323050641e-04, +-3.819249723838397462e-04, +-3.820032386573794033e-04, +-3.820808788683610906e-04, +-3.821578929332319061e-04, +-3.822342807694676932e-04, +-3.823100422955737990e-04, +-3.823851774310755344e-04, +-3.824596860965216423e-04, +-3.825335682134807210e-04, +-3.826068237045535288e-04, +-3.826794524933570469e-04, +-3.827514545045372727e-04, +-3.828228296637649916e-04, +-3.828935778977319280e-04, +-3.829636991341512330e-04, +-3.830331933017666461e-04, +-3.831020603303452311e-04, +-3.831703001506725514e-04, +-3.832379126945685533e-04, +-3.833048978948648522e-04, +-3.833712556854288020e-04, +-3.834369860011452259e-04, +-3.835020887779269877e-04, +-3.835665639527118475e-04, +-3.836304114634608896e-04, +-3.836936312491557579e-04, +-3.837562232498079257e-04, +-3.838181874064551177e-04, +-3.838795236611535042e-04, +-3.839402319569925541e-04, +-3.840003122380753029e-04, +-3.840597644495381390e-04, +-3.841185885375387153e-04, +-3.841767844492615866e-04, +-3.842343521329131140e-04, +-3.842912915377302472e-04, +-3.843476026139657246e-04, +-3.844032853129054753e-04, +-3.844583395868539279e-04, +-3.845127653891455030e-04, +-3.845665626741423364e-04, +-3.846197313972180161e-04, +-3.846722715147825734e-04, +-3.847241829842688757e-04, +-3.847754657641344698e-04, +-3.848261198138627206e-04, +-3.848761450939532157e-04, +-3.849255415659421481e-04, +-3.849743091923869213e-04, +-3.850224479368651725e-04, +-3.850699577639862662e-04, +-3.851168386393794213e-04, +-3.851630905297003253e-04, +-3.852087134026288572e-04, +-3.852537072268713645e-04, +-3.852980719721558383e-04, +-3.853418076092407496e-04, +-3.853849141099017681e-04, +-3.854273914469449349e-04, +-3.854692395941973384e-04, +-3.855104585265146499e-04, +-3.855510482197749430e-04, +-3.855910086508801036e-04, +-3.856303397977555044e-04, +-3.856690416393548297e-04, +-3.857071141556549254e-04, +-3.857445573276552567e-04, +-3.857813711373827875e-04, +-3.858175555678840110e-04, +-3.858531106032352500e-04, +-3.858880362285317602e-04, +-3.859223324298975970e-04, +-3.859559991944808990e-04, +-3.859890365104513398e-04, +-3.860214443670019176e-04, +-3.860532227543523156e-04, +-3.860843716637450533e-04, +-3.861148910874468419e-04, +-3.861447810187505899e-04, +-3.861740414519675970e-04, +-3.862026723824362275e-04, +-3.862306738065190374e-04, +-3.862580457216028824e-04, +-3.862847881260951239e-04, +-3.863109010194278568e-04, +-3.863363844020567713e-04, +-3.863612382754629958e-04, +-3.863854626421477307e-04, +-3.864090575056372350e-04, +-3.864320228704811464e-04, +-3.864543587422512340e-04, +-3.864760651275389049e-04, +-3.864971420339648536e-04, +-3.865175894701718519e-04, +-3.865374074458206833e-04, +-3.865565959715970817e-04, +-3.865751550592102679e-04, +-3.865930847213917029e-04, +-3.866103849718927564e-04, +-3.866270558254918631e-04, +-3.866430972979862822e-04, +-3.866585094061954046e-04, +-3.866732921679605904e-04, +-3.866874456021471740e-04, +-3.867009697286392066e-04, +-3.867138645683467196e-04, +-3.867261301431962383e-04, +-3.867377664761383711e-04, +-3.867487735911470507e-04, +-3.867591515132128119e-04, +-3.867689002683520074e-04, +-3.867780198836006278e-04, +-3.867865103870119165e-04, +-3.867943718076653141e-04, +-3.868016041756575140e-04, +-3.868082075221077748e-04, +-3.868141818791555353e-04, +-3.868195272799582456e-04, +-3.868242437586975478e-04, +-3.868283313505712522e-04, +-3.868317900917997887e-04, +-3.868346200196230082e-04, +-3.868368211722995323e-04, +-3.868383935891058314e-04, +-3.868393373103444109e-04, +-3.868396523773286319e-04, +-3.868393388323985950e-04, +-3.868383967189087803e-04, +-3.868368260812323845e-04, +-3.868346269647627298e-04, +-3.868317994159146738e-04, +-3.868283434821158276e-04, +-3.868242592118167466e-04, +-3.868195466544830166e-04, +-3.868142058605992108e-04, +-3.868082368816702448e-04, +-3.868016397702148178e-04, +-3.867944145797710498e-04, +-3.867865613648963736e-04, +-3.867780801811623848e-04, +-3.867689710851573894e-04, +-3.867592341344908494e-04, +-3.867488693877839498e-04, +-3.867378769046796822e-04, +-3.867262567458317314e-04, +-3.867140089729147754e-04, +-3.867011336486172752e-04, +-3.866876308366441316e-04, +-3.866735006017150587e-04, +-3.866587430095684325e-04, +-3.866433581269544065e-04, +-3.866273460216404956e-04, +-3.866107067624076723e-04, +-3.865934404190534573e-04, +-3.865755470623886123e-04, +-3.865570267642408266e-04, +-3.865378795974488621e-04, +-3.865181056358678118e-04, +-3.864977049543654678e-04, +-3.864766776288238392e-04, +-3.864550237361387723e-04, +-3.864327433542205474e-04, +-3.864098365619900296e-04, +-3.863863034393820299e-04, +-3.863621440673461181e-04, +-3.863373585278400096e-04, +-3.863119469038381304e-04, +-3.862859092793274971e-04, +-3.862592457393014826e-04, +-3.862319563697714717e-04, +-3.862040412577562353e-04, +-3.861755004912878942e-04, +-3.861463341594093164e-04, +-3.861165423521728166e-04, +-3.860861251606444926e-04, +-3.860550826768989127e-04, +-3.860234149940191704e-04, +-3.859911222061020880e-04, +-3.859582044082528500e-04, +-3.859246616965841359e-04, +-3.858904941682210531e-04, +-3.858557019212947945e-04, +-3.858202850549504988e-04, +-3.857842436693355954e-04, +-3.857475778656118391e-04, +-3.857102877459436005e-04, +-3.856723734135070821e-04, +-3.856338349724857642e-04, +-3.855946725280680744e-04, +-3.855548861864549221e-04, +-3.855144760548485320e-04, +-3.854734422414617676e-04, +-3.854317848555102711e-04, +-3.853895040072214079e-04, +-3.853465998078238583e-04, +-3.853030723695545566e-04, +-3.852589218056533781e-04, +-3.852141482303693735e-04, +-3.851687517589509027e-04, +-3.851227325076605427e-04, +-3.850760905937559509e-04, +-3.850288261355020629e-04, +-3.849809392521698998e-04, +-3.849324300640307676e-04, +-3.848832986923645511e-04, +-3.848335452594486557e-04, +-3.847831698885673850e-04, +-3.847321727040054363e-04, +-3.846805538310502310e-04, +-3.846283133959932702e-04, +-3.845754515261259063e-04, +-3.845219683497408066e-04, +-3.844678639961351518e-04, +-3.844131385956029378e-04, +-3.843577922794386083e-04, +-3.843018251799436681e-04, +-3.842452374304130766e-04, +-3.841880291651448968e-04, +-3.841302005194334110e-04, +-3.840717516295756259e-04, +-3.840126826328693751e-04, +-3.839529936676069227e-04, +-3.838926848730788658e-04, +-3.838317563895776588e-04, +-3.837702083583910536e-04, +-3.837080409218016660e-04, +-3.836452542230963541e-04, +-3.835818484065549425e-04, +-3.835178236174552097e-04, +-3.834531800020657866e-04, +-3.833879177076573780e-04, +-3.833220368824988592e-04, +-3.832555376758462720e-04, +-3.831884202379562138e-04, +-3.831206847200789535e-04, +-3.830523312744584853e-04, +-3.829833600543323122e-04, +-3.829137712139374632e-04, +-3.828435649084974829e-04, +-3.827727412942304543e-04, +-3.827013005283518726e-04, +-3.826292427690625012e-04, +-3.825565681755652321e-04, +-3.824832769080431841e-04, +-3.824093691276831222e-04, +-3.823348449966522552e-04, +-3.822597046781126017e-04, +-3.821839483362218033e-04, +-3.821075761361227160e-04, +-3.820305882439476927e-04, +-3.819529848268204270e-04, +-3.818747660528542176e-04, +-3.817959320911464938e-04, +-3.817164831117946986e-04, +-3.816364192858711355e-04, +-3.815557407854450861e-04, +-3.814744477835671434e-04, +-3.813925404542808668e-04, +-3.813100189726125909e-04, +-3.812268835145785810e-04, +-3.811431342571760888e-04, +-3.810587713783933263e-04, +-3.809737950572025279e-04, +-3.808882054735546912e-04, +-3.808020028083977378e-04, +-3.807151872436553711e-04, +-3.806277589622367803e-04, +-3.805397181480337128e-04, +-3.804510649859220461e-04, +-3.803617996617665586e-04, +-3.802719223624047751e-04, +-3.801814332756597056e-04, +-3.800903325903409301e-04, +-3.799986204962327806e-04, +-3.799062971840998703e-04, +-3.798133628456976650e-04, +-3.797198176737534548e-04, +-3.796256618619732936e-04, +-3.795308956050489919e-04, +-3.794355190986446183e-04, +-3.793395325394102150e-04, +-3.792429361249681908e-04, +-3.791457300539229709e-04, +-3.790479145258528106e-04, +-3.789494897413131567e-04, +-3.788504559018381654e-04, +-3.787508132099449846e-04, +-3.786505618691145638e-04, +-3.785497020838085136e-04, +-3.784482340594673162e-04, +-3.783461580024970444e-04, +-3.782434741202915333e-04, +-3.781401826212065225e-04, +-3.780362837145788456e-04, +-3.779317776107148845e-04, +-3.778266645208889964e-04, +-3.777209446573605908e-04, +-3.776146182333531493e-04, +-3.775076854630614364e-04, +-3.774001465616500894e-04, +-3.772920017452602325e-04, +-3.771832512309935387e-04, +-3.770738952369336429e-04, +-3.769639339821298247e-04, +-3.768533676865947857e-04, +-3.767421965713105042e-04, +-3.766304208582309460e-04, +-3.765180407702826602e-04, +-3.764050565313503596e-04, +-3.762914683662855401e-04, +-3.761772765009151545e-04, +-3.760624811620236142e-04, +-3.759470825773610840e-04, +-3.758310809756496072e-04, +-3.757144765865742158e-04, +-3.755972696407784304e-04, +-3.754794603698728803e-04, +-3.753610490064305865e-04, +-3.752420357839965034e-04, +-3.751224209370642619e-04, +-3.750022047010961737e-04, +-3.748813873125184061e-04, +-3.747599690087103567e-04, +-3.746379500280212424e-04, +-3.745153306097567629e-04, +-3.743921109941841970e-04, +-3.742682914225234033e-04, +-3.741438721369629212e-04, +-3.740188533806377441e-04, +-3.738932353976566416e-04, +-3.737670184330711513e-04, +-3.736402027329007868e-04, +-3.735127885441134128e-04, +-3.733847761146319140e-04, +-3.732561656933462290e-04, +-3.731269575300955152e-04, +-3.729971518756681494e-04, +-3.728667489818095334e-04, +-3.727357491012264854e-04, +-3.726041524875637668e-04, +-3.724719593954396984e-04, +-3.723391700804048522e-04, +-3.722057847989757159e-04, +-3.720718038086089975e-04, +-3.719372273677205441e-04, +-3.718020557356751512e-04, +-3.716662891727882424e-04, +-3.715299279403165458e-04, +-3.713929723004779347e-04, +-3.712554225164296350e-04, +-3.711172788522757067e-04, +-3.709785415730770721e-04, +-3.708392109448400780e-04, +-3.706992872345084180e-04, +-3.705587707099749508e-04, +-3.704176616400803985e-04, +-3.702759602946174128e-04, +-3.701336669443110595e-04, +-3.699907818608336174e-04, +-3.698473053168055001e-04, +-3.697032375857853899e-04, +-3.695585789422697496e-04, +-3.694133296617115795e-04, +-3.692674900204971069e-04, +-3.691210602959503939e-04, +-3.689740407663350723e-04, +-3.688264317108578671e-04, +-3.686782334096743428e-04, +-3.685294461438609853e-04, +-3.683800701954471316e-04, +-3.682301058473907377e-04, +-3.680795533835832579e-04, +-3.679284130888704069e-04, +-3.677766852490236453e-04, +-3.676243701507450590e-04, +-3.674714680816759237e-04, +-3.673179793303980607e-04, +-3.671639041864125318e-04, +-3.670092429401774245e-04, +-3.668539958830593331e-04, +-3.666981633073749928e-04, +-3.665417455063626020e-04, +-3.663847427741900625e-04, +-3.662271554059694538e-04, +-3.660689836977372999e-04, +-3.659102279464510467e-04, +-3.657508884500035892e-04, +-3.655909655072219172e-04, +-3.654304594178453764e-04, +-3.652693704825668683e-04, +-3.651076990029795077e-04, +-3.649454452816215623e-04, +-3.647826096219432767e-04, +-3.646191923283256288e-04, +-3.644551937060875940e-04, +-3.642906140614528060e-04, +-3.641254537015716744e-04, +-3.639597129345317934e-04, +-3.637933920693278548e-04, +-3.636264914158766101e-04, +-3.634590112850319952e-04, +-3.632909519885588385e-04, +-3.631223138391386071e-04, +-3.629530971503722257e-04, +-3.627833022367839256e-04, +-3.626129294138265573e-04, +-3.624419789978540517e-04, +-3.622704513061397432e-04, +-3.620983466568858562e-04, +-3.619256653691995990e-04, +-3.617524077630992888e-04, +-3.615785741595376628e-04, +-3.614041648803726042e-04, +-3.612291802483641608e-04, +-3.610536205872042523e-04, +-3.608774862214781808e-04, +-3.607007774767076740e-04, +-3.605234946793015537e-04, +-3.603456381565982910e-04, +-3.601672082368351062e-04, +-3.599882052491555043e-04, +-3.598086295236293869e-04, +-3.596284813912263806e-04, +-3.594477611838188731e-04, +-3.592664692341865124e-04, +-3.590846058760272658e-04, +-3.589021714439270621e-04, +-3.587191662734031598e-04, +-3.585355907008517260e-04, +-3.583514450635907162e-04, +-3.581667296998327699e-04, +-3.579814449486883542e-04, +-3.577955911501897249e-04, +-3.576091686452580751e-04, +-3.574221777757154617e-04, +-3.572346188842820945e-04, +-3.570464923145912441e-04, +-3.568577984111539515e-04, +-3.566685375194058650e-04, +-3.564787099856677214e-04, +-3.562883161571539113e-04, +-3.560973563819749724e-04, +-3.559058310091457213e-04, +-3.557137403885833019e-04, +-3.555210848710825739e-04, +-3.553278648083362792e-04, +-3.551340805529439319e-04, +-3.549397324583847138e-04, +-3.547448208790259308e-04, +-3.545493461701505517e-04, +-3.543533086879153580e-04, +-3.541567087893676951e-04, +-3.539595468324428697e-04, +-3.537618231759696256e-04, +-3.535635381796787082e-04, +-3.533646922041676830e-04, +-3.531652856109255461e-04, +-3.529653187623411274e-04, +-3.527647920216668239e-04, +-3.525637057530714544e-04, +-3.523620603215781889e-04, +-3.521598560931159944e-04, +-3.519570934344803319e-04, +-3.517537727133661710e-04, +-3.515498942983278740e-04, +-3.513454585588355206e-04, +-3.511404658652048680e-04, +-3.509349165886567110e-04, +-3.507288111012766586e-04, +-3.505221497760254335e-04, +-3.503149329867642965e-04, +-3.501071611082177504e-04, +-3.498988345159830264e-04, +-3.496899535865349634e-04, +-3.494805186972348978e-04, +-3.492705302262972709e-04, +-3.490599885528429709e-04, +-3.488488940568346065e-04, +-3.486372471191290907e-04, +-3.484250481214393137e-04, +-3.482122974463616825e-04, +-3.479989954773577972e-04, +-3.477851425987665401e-04, +-3.475707391957805485e-04, +-3.473557856544800962e-04, +-3.471402823617985613e-04, +-3.469242297055348946e-04, +-3.467076280743747077e-04, +-3.464904778578567165e-04, +-3.462727794463801140e-04, +-3.460545332312103166e-04, +-3.458357396044780424e-04, +-3.456163989591934057e-04, +-3.453965116892052599e-04, +-3.451760781892292238e-04, +-3.449550988548546202e-04, +-3.447335740825084810e-04, +-3.445115042695113291e-04, +-3.442888898140086026e-04, +-3.440657311150266537e-04, +-3.438420285724368619e-04, +-3.436177825869672349e-04, +-3.433929935602060947e-04, +-3.431676618946110226e-04, +-3.429417879934667916e-04, +-3.427153722609347524e-04, +-3.424884151020170546e-04, +-3.422609169225608204e-04, +-3.420328781292907255e-04, +-3.418042991297690460e-04, +-3.415751803324018382e-04, +-3.413455221464458235e-04, +-3.411153249820210193e-04, +-3.408845892500695935e-04, +-3.406533153624187482e-04, +-3.404215037317053676e-04, +-3.401891547714384683e-04, +-3.399562688959561563e-04, +-3.397228465204374988e-04, +-3.394888880609294129e-04, +-3.392543939343085012e-04, +-3.390193645582859853e-04, +-3.387838003514161622e-04, +-3.385477017331096862e-04, +-3.383110691235930736e-04, +-3.380739029439648645e-04, +-3.378362036161284025e-04, +-3.375979715628509232e-04, +-3.373592072077150907e-04, +-3.371199109751509817e-04, +-3.368800832904396089e-04, +-3.366397245796717212e-04, +-3.363988352697766439e-04, +-3.361574157885328495e-04, +-3.359154665645365154e-04, +-3.356729880272097104e-04, +-3.354299806068308061e-04, +-3.351864447344963128e-04, +-3.349423808421242411e-04, +-3.346977893624614739e-04, +-3.344526707290902180e-04, +-3.342070253764344544e-04, +-3.339608537397185765e-04, +-3.337141562549977478e-04, +-3.334669333591675508e-04, +-3.332191854899256068e-04, +-3.329709130858250266e-04, +-3.327221165862057268e-04, +-3.324727964312591561e-04, +-3.322229530619728389e-04, +-3.319725869201781338e-04, +-3.317216984484981927e-04, +-3.314702880904155059e-04, +-3.312183562901896655e-04, +-3.309659034929261041e-04, +-3.307129301445307749e-04, +-3.304594366917183376e-04, +-3.302054235820491295e-04, +-3.299508912638766901e-04, +-3.296958401863668976e-04, +-3.294402707994966133e-04, +-3.291841835540697822e-04, +-3.289275789016750948e-04, +-3.286704572947499550e-04, +-3.284128191865043150e-04, +-3.281546650309809026e-04, +-3.278959952830159193e-04, +-3.276368103982480926e-04, +-3.273771108331491970e-04, +-3.271168970449781920e-04, +-3.268561694917903292e-04, +-3.265949286324657213e-04, +-3.263331749266711241e-04, +-3.260709088348700733e-04, +-3.258081308183551398e-04, +-3.255448413392044533e-04, +-3.252810408602876111e-04, +-3.250167298452768454e-04, +-3.247519087586438246e-04, +-3.244865780656794947e-04, +-3.242207382324393812e-04, +-3.239543897257828910e-04, +-3.236875330133808480e-04, +-3.234201685636695772e-04, +-3.231522968459175828e-04, +-3.228839183301501423e-04, +-3.226150334872073650e-04, +-3.223456427887068420e-04, +-3.220757467070548127e-04, +-3.218053457154546222e-04, +-3.215344402879123046e-04, +-3.212630308991948412e-04, +-3.209911180248606810e-04, +-3.207187021412730762e-04, +-3.204457837255497753e-04, +-3.201723632556295390e-04, +-3.198984412102157614e-04, +-3.196240180687901313e-04, +-3.193490943116138246e-04, +-3.190736704197488630e-04, +-3.187977468750078616e-04, +-3.185213241600217912e-04, +-3.182444027581623493e-04, +-3.179669831536060371e-04, +-3.176890658312884054e-04, +-3.174106512769173365e-04, +-3.171317399770016672e-04, +-3.168523324188114525e-04, +-3.165724290903804594e-04, +-3.162920304805161959e-04, +-3.160111370788163364e-04, +-3.157297493756200412e-04, +-3.154478678620778877e-04, +-3.151654930300663263e-04, +-3.148826253722623826e-04, +-3.145992653820859773e-04, +-3.143154135537397711e-04, +-3.140310703821894860e-04, +-3.137462363631693808e-04, +-3.134609119931610005e-04, +-3.131750977694323706e-04, +-3.128887941899845997e-04, +-3.126020017536212687e-04, +-3.123147209598665193e-04, +-3.120269523090317865e-04, +-3.117386963021712924e-04, +-3.114499534410966283e-04, +-3.111607242283816882e-04, +-3.108710091673779017e-04, +-3.105808087621576927e-04, +-3.102901235175567094e-04, +-3.099989539391832566e-04, +-3.097073005333646277e-04, +-3.094151638072263600e-04, +-3.091225442686006196e-04, +-3.088294424261004692e-04, +-3.085358587890644653e-04, +-3.082417938676025745e-04, +-3.079472481725428301e-04, +-3.076522222155035949e-04, +-3.073567165088035721e-04, +-3.070607315655403012e-04, +-3.067642678995354606e-04, +-3.064673260253454384e-04, +-3.061699064583036701e-04, +-3.058720097144649111e-04, +-3.055736363106165122e-04, +-3.052747867642868762e-04, +-3.049754615937634561e-04, +-3.046756613180361052e-04, +-3.043753864568791512e-04, +-3.040746375307577212e-04, +-3.037734150609033650e-04, +-3.034717195692614709e-04, +-3.031695515785083964e-04, +-3.028669116120794947e-04, +-3.025638001941284030e-04, +-3.022602178495271508e-04, +-3.019561651038816098e-04, +-3.016516424835434746e-04, +-3.013466505155609309e-04, +-3.010411897277548757e-04, +-3.007352606486258921e-04, +-3.004288638074338299e-04, +-3.001219997341342174e-04, +-2.998146689594216835e-04, +-2.995068720147300119e-04, +-2.991986094321851951e-04, +-2.988898817446380691e-04, +-2.985806894856795463e-04, +-2.982710331895851584e-04, +-2.979609133913974561e-04, +-2.976503306268265875e-04, +-2.973392854323337817e-04, +-2.970277783450744826e-04, +-2.967158099029184063e-04, +-2.964033806444551795e-04, +-2.960904911090074575e-04, +-2.957771418365754139e-04, +-2.954633333678761509e-04, +-2.951490662443566554e-04, +-2.948343410081386679e-04, +-2.945191582021001054e-04, +-2.942035183697765620e-04, +-2.938874220554439252e-04, +-2.935708698040563050e-04, +-2.932538621612991599e-04, +-2.929363996735251125e-04, +-2.926184828878392215e-04, +-2.923001123519982053e-04, +-2.919812886144933293e-04, +-2.916620122244951117e-04, +-2.913422837318645447e-04, +-2.910221036871966254e-04, +-2.907014726417586647e-04, +-2.903803911475103991e-04, +-2.900588597571043164e-04, +-2.897368790239044658e-04, +-2.894144495019388623e-04, +-2.890915717459702845e-04, +-2.887682463114082921e-04, +-2.884444737543827883e-04, +-2.881202546316953940e-04, +-2.877955895008243265e-04, +-2.874704789199743812e-04, +-2.871449234480126381e-04, +-2.868189236444774071e-04, +-2.864924800696204573e-04, +-2.861655932843400673e-04, +-2.858382638502659731e-04, +-2.855104923296614638e-04, +-2.851822792855041554e-04, +-2.848536252814283650e-04, +-2.845245308817509152e-04, +-2.841949966514674473e-04, +-2.838650231562765453e-04, +-2.835346109625135991e-04, +-2.832037606371965040e-04, +-2.828724727480381291e-04, +-2.825407478633874445e-04, +-2.822085865523166919e-04, +-2.818759893845156745e-04, +-2.815429569303833719e-04, +-2.812094897609627802e-04, +-2.808755884479660105e-04, +-2.805412535637791141e-04, +-2.802064856814749302e-04, +-2.798712853747550812e-04, +-2.795356532179929607e-04, +-2.791995897862448476e-04, +-2.788630956551939061e-04, +-2.785261714012283031e-04, +-2.781888176013715477e-04, +-2.778510348333021701e-04, +-2.775128236753532872e-04, +-2.771741847065390036e-04, +-2.768351185064916358e-04, +-2.764956256555519180e-04, +-2.761557067346587929e-04, +-2.758153623254452555e-04, +-2.754745930101724872e-04, +-2.751333993717438968e-04, +-2.747917819937524997e-04, +-2.744497414604146193e-04, +-2.741072783565912997e-04, +-2.737643932677874927e-04, +-2.734210867801625203e-04, +-2.730773594805429769e-04, +-2.727332119563620136e-04, +-2.723886447957034654e-04, +-2.720436585873163798e-04, +-2.716982539205578789e-04, +-2.713524313854520859e-04, +-2.710061915726509857e-04, +-2.706595350734529101e-04, +-2.703124624797722890e-04, +-2.699649743841867045e-04, +-2.696170713798734108e-04, +-2.692687540606950947e-04, +-2.689200230210954672e-04, +-2.685708788561883302e-04, +-2.682213221616936089e-04, +-2.678713535339626137e-04, +-2.675209735699827563e-04, +-2.671701828673935420e-04, +-2.668189820244210833e-04, +-2.664673716399254262e-04, +-2.661153523134155655e-04, +-2.657629246449862907e-04, +-2.654100892354068191e-04, +-2.650568466860152490e-04, +-2.647031975988101203e-04, +-2.643491425763771227e-04, +-2.639946822219527926e-04, +-2.636398171393521963e-04, +-2.632845479330615758e-04, +-2.629288752081278139e-04, +-2.625727995702523262e-04, +-2.622163216257247624e-04, +-2.618594419814425215e-04, +-2.615021612449516808e-04, +-2.611444800243851961e-04, +-2.607863989284782977e-04, +-2.604279185665749410e-04, +-2.600690395486494368e-04, +-2.597097624852430248e-04, +-2.593500879875573328e-04, +-2.589900166673445459e-04, +-2.586295491369981553e-04, +-2.582686860094896399e-04, +-2.579074278983868986e-04, +-2.575457754178929557e-04, +-2.571837291827898538e-04, +-2.568212898084484656e-04, +-2.564584579108361920e-04, +-2.560952341065249305e-04, +-2.557316190127063632e-04, +-2.553676132471164955e-04, +-2.550032174281251576e-04, +-2.546384321746693801e-04, +-2.542732581062776259e-04, +-2.539076958430753735e-04, +-2.535417460058023566e-04, +-2.531754092157439875e-04, +-2.528086860947806888e-04, +-2.524415772654031807e-04, +-2.520740833506459103e-04, +-2.517062049741837634e-04, +-2.513379427602165420e-04, +-2.509692973335658382e-04, +-2.506002693196104155e-04, +-2.502308593443070255e-04, +-2.498610680341996782e-04, +-2.494908960164327603e-04, +-2.491203439186860376e-04, +-2.487494123692232813e-04, +-2.483781019969063630e-04, +-2.480064134311286300e-04, +-2.476343473019123752e-04, +-2.472619042397942914e-04, +-2.468890848759210436e-04, +-2.465158898419750550e-04, +-2.461423197702391260e-04, +-2.457683752935211903e-04, +-2.453940570452525435e-04, +-2.450193656593704244e-04, +-2.446443017704185742e-04, +-2.442688660134753002e-04, +-2.438930590241737229e-04, +-2.435168814387474482e-04, +-2.431403338939649192e-04, +-2.427634170271432119e-04, +-2.423861314761567370e-04, +-2.420084778794445301e-04, +-2.416304568760239404e-04, +-2.412520691054252263e-04, +-2.408733152077390969e-04, +-2.404941958236333284e-04, +-2.401147115942915331e-04, +-2.397348631614724924e-04, +-2.393546511674745139e-04, +-2.389740762551517759e-04, +-2.385931390678781687e-04, +-2.382118402496077663e-04, +-2.378301804447950293e-04, +-2.374481602984969094e-04, +-2.370657804562521776e-04, +-2.366830415641845049e-04, +-2.362999442689287910e-04, +-2.359164892176601660e-04, +-2.355326770580997917e-04, +-2.351485084385280069e-04, +-2.347639840077219591e-04, +-2.343791044149979154e-04, +-2.339938703102316180e-04, +-2.336082823437893297e-04, +-2.332223411666253029e-04, +-2.328360474301668004e-04, +-2.324494017864089631e-04, +-2.320624048878515736e-04, +-2.316750573875196566e-04, +-2.312873599389722330e-04, +-2.308993131963169845e-04, +-2.305109178141366631e-04, +-2.301221744475747430e-04, +-2.297330837522718863e-04, +-2.293436463843813932e-04, +-2.289538630006153616e-04, +-2.285637342581784965e-04, +-2.281732608147853765e-04, +-2.277824433286632175e-04, +-2.273912824585641796e-04, +-2.269997788637778343e-04, +-2.266079332040643244e-04, +-2.262157461397011464e-04, +-2.258232183315042932e-04, +-2.254303504407707912e-04, +-2.250371431292962640e-04, +-2.246435970594280317e-04, +-2.242497128939904090e-04, +-2.238554912963058201e-04, +-2.234609329301971844e-04, +-2.230660384600009261e-04, +-2.226708085505785489e-04, +-2.222752438672480325e-04, +-2.218793450758364165e-04, +-2.214831128426922422e-04, +-2.210865478346271131e-04, +-2.206896507189653523e-04, +-2.202924221635505072e-04, +-2.198948628366771262e-04, +-2.194969734071397917e-04, +-2.190987545442497084e-04, +-2.187002069177650435e-04, +-2.183013311979936546e-04, +-2.179021280556694095e-04, +-2.175025981620557272e-04, +-2.171027421888755663e-04, +-2.167025608083367671e-04, +-2.163020546931376635e-04, +-2.159012245164859201e-04, +-2.155000709520250510e-04, +-2.150985946738880603e-04, +-2.146967963567114287e-04, +-2.142946766755661036e-04, +-2.138922363060615287e-04, +-2.134894759242178975e-04, +-2.130863962065767422e-04, +-2.126829978301147668e-04, +-2.122792814723083025e-04, +-2.118752478110939516e-04, +-2.114708975248887264e-04, +-2.110662312925491203e-04, +-2.106612497934359438e-04, +-2.102559537073487022e-04, +-2.098503437145421847e-04, +-2.094444204957813518e-04, +-2.090381847322650617e-04, +-2.086316371056458840e-04, +-2.082247782980362256e-04, +-2.078176089920174381e-04, +-2.074101298706543456e-04, +-2.070023416174256669e-04, +-2.065942449162730746e-04, +-2.061858404516209013e-04, +-2.057771289083198149e-04, +-2.053681109716640576e-04, +-2.049587873274432163e-04, +-2.045491586618702049e-04, +-2.041392256615990448e-04, +-2.037289890137304756e-04, +-2.033184494058201414e-04, +-2.029076075258976180e-04, +-2.024964640623819266e-04, +-2.020850197041805215e-04, +-2.016732751406157811e-04, +-2.012612310614505953e-04, +-2.008488881568974184e-04, +-2.004362471176333123e-04, +-2.000233086347283893e-04, +-1.996100733996980438e-04, +-1.991965421045194858e-04, +-1.987827154415578530e-04, +-1.983685941036767450e-04, +-1.979541787841056796e-04, +-1.975394701765509256e-04, +-1.971244689751215054e-04, +-1.967091758743525875e-04, +-1.962935915692176289e-04, +-1.958777167551424428e-04, +-1.954615521279310937e-04, +-1.950450983838209200e-04, +-1.946283562195007765e-04, +-1.942113263320307214e-04, +-1.937940094189596256e-04, +-1.933764061781882921e-04, +-1.929585173080811827e-04, +-1.925403435073843716e-04, +-1.921218854752747404e-04, +-1.917031439113744528e-04, +-1.912841195156701540e-04, +-1.908648129885703794e-04, +-1.904452250309221430e-04, +-1.900253563439543417e-04, +-1.896052076292940999e-04, +-1.891847795890235818e-04, +-1.887640729256024436e-04, +-1.883430883418850995e-04, +-1.879218265411311572e-04, +-1.875002882270112453e-04, +-1.870784741036248487e-04, +-1.866563848754254715e-04, +-1.862340212472756871e-04, +-1.858113839244626426e-04, +-1.853884736126341448e-04, +-1.849652910178600806e-04, +-1.845418368465958519e-04, +-1.841181118056994792e-04, +-1.836941166023938171e-04, +-1.832698519443276758e-04, +-1.828453185394941544e-04, +-1.824205170963409846e-04, +-1.819954483236359548e-04, +-1.815701129305808867e-04, +-1.811445116267340334e-04, +-1.807186451220369134e-04, +-1.802925141268241769e-04, +-1.798661193518380258e-04, +-1.794394615081552197e-04, +-1.790125413072419364e-04, +-1.785853594609681648e-04, +-1.781579166815344944e-04, +-1.777302136815825677e-04, +-1.773022511740628354e-04, +-1.768740298723459308e-04, +-1.764455504901449594e-04, +-1.760168137415358549e-04, +-1.755878203410099361e-04, +-1.751585710034000726e-04, +-1.747290664438848589e-04, +-1.742993073780498177e-04, +-1.738692945218137012e-04, +-1.734390285914510154e-04, +-1.730085103036469081e-04, +-1.725777403754173982e-04, +-1.721467195241297864e-04, +-1.717154484675102169e-04, +-1.712839279236520805e-04, +-1.708521586110337681e-04, +-1.704201412484406897e-04, +-1.699878765550220320e-04, +-1.695553652503092174e-04, +-1.691226080541558387e-04, +-1.686896056867562266e-04, +-1.682563588687027223e-04, +-1.678228683209059889e-04, +-1.673891347646147435e-04, +-1.669551589214225338e-04, +-1.665209415132784716e-04, +-1.660864832625021949e-04, +-1.656517848917081091e-04, +-1.652168471238607626e-04, +-1.647816706822928718e-04, +-1.643462562906391577e-04, +-1.639106046728877641e-04, +-1.634747165533950296e-04, +-1.630385926568011644e-04, +-1.626022337080917782e-04, +-1.621656404326123004e-04, +-1.617288135559926548e-04, +-1.612917538042593396e-04, +-1.608544619037001998e-04, +-1.604169385809794339e-04, +-1.599791845630589354e-04, +-1.595412005772157483e-04, +-1.591029873510995567e-04, +-1.586645456126529422e-04, +-1.582258760901316579e-04, +-1.577869795121114864e-04, +-1.573478566075159953e-04, +-1.569085081055395588e-04, +-1.564689347357599519e-04, +-1.560291372280035575e-04, +-1.555891163124584209e-04, +-1.551488727195884357e-04, +-1.547084071801973386e-04, +-1.542677204253912776e-04, +-1.538268131865945325e-04, +-1.533856861955105652e-04, +-1.529443401841893487e-04, +-1.525027758849582219e-04, +-1.520609940304381257e-04, +-1.516189953536026648e-04, +-1.511767805876990697e-04, +-1.507343504662652181e-04, +-1.502917057231391491e-04, +-1.498488470924676285e-04, +-1.494057753087233060e-04, +-1.489624911066268699e-04, +-1.485189952212036691e-04, +-1.480752883878017653e-04, +-1.476313713420331693e-04, +-1.471872448197908087e-04, +-1.467429095573069932e-04, +-1.462983662910732929e-04, +-1.458536157578499426e-04, +-1.454086586947230615e-04, +-1.449634958390133360e-04, +-1.445181279283962845e-04, +-1.440725557007596581e-04, +-1.436267798943237600e-04, +-1.431808012475587204e-04, +-1.427346204992136077e-04, +-1.422882383883258611e-04, +-1.418416556542390170e-04, +-1.413948730365231017e-04, +-1.409478912750313081e-04, +-1.405007111099211645e-04, +-1.400533332815712411e-04, +-1.396057585307003575e-04, +-1.391579875982275317e-04, +-1.387100212253895609e-04, +-1.382618601536606830e-04, +-1.378135051247697605e-04, +-1.373649568807613485e-04, +-1.369162161639121298e-04, +-1.364672837167526804e-04, +-1.360181602820719686e-04, +-1.355688466029503962e-04, +-1.351193434226763694e-04, +-1.346696514848546916e-04, +-1.342197715333165475e-04, +-1.337697043121385311e-04, +-1.333194505656499910e-04, +-1.328690110384413787e-04, +-1.324183864753870985e-04, +-1.319675776215582829e-04, +-1.315165852222867067e-04, +-1.310654100231803995e-04, +-1.306140527700633367e-04, +-1.301625142089955247e-04, +-1.297107950863296501e-04, +-1.292588961486309032e-04, +-1.288068181426956535e-04, +-1.283545618155609088e-04, +-1.279021279145111734e-04, +-1.274495171870995626e-04, +-1.269967303810648344e-04, +-1.265437682443906135e-04, +-1.260906315253251515e-04, +-1.256373209723084955e-04, +-1.251838373340418494e-04, +-1.247301813594471338e-04, +-1.242763537976847939e-04, +-1.238223553981131415e-04, +-1.233681869103564705e-04, +-1.229138490842145799e-04, +-1.224593426697807895e-04, +-1.220046684173016168e-04, +-1.215498270772948872e-04, +-1.210948194004681210e-04, +-1.206396461377382792e-04, +-1.201843080402902427e-04, +-1.197288058594952803e-04, +-1.192731403469291548e-04, +-1.188173122543825181e-04, +-1.183613223338892897e-04, +-1.179051713376430652e-04, +-1.174488600181194681e-04, +-1.169923891279327373e-04, +-1.165357594199551653e-04, +-1.160789716472347531e-04, +-1.156220265630153899e-04, +-1.151649249207959016e-04, +-1.147076674742467838e-04, +-1.142502549772204614e-04, +-1.137926881838104045e-04, +-1.133349678482782564e-04, +-1.128770947250747726e-04, +-1.124190695688960631e-04, +-1.119608931346050159e-04, +-1.115025661772478977e-04, +-1.110440894520637738e-04, +-1.105854637144935878e-04, +-1.101266897201998537e-04, +-1.096677682249828196e-04, +-1.092086999848414409e-04, +-1.087494857559912018e-04, +-1.082901262948032778e-04, +-1.078306223578225472e-04, +-1.073709747018282250e-04, +-1.069111840837504336e-04, +-1.064512512606896507e-04, +-1.059911769899254914e-04, +-1.055309620289261540e-04, +-1.050706071353673261e-04, +-1.046101130670487009e-04, +-1.041494805819550315e-04, +-1.036887104382744535e-04, +-1.032278033943160998e-04, +-1.027667602086208918e-04, +-1.023055816398681903e-04, +-1.018442684468955680e-04, +-1.013828213887077548e-04, +-1.009212412245045690e-04, +-1.004595287136003477e-04, +-9.999768461554337201e-05, +-9.953570968997272467e-05, +-9.907360469673885380e-05, +-9.861137039582086160e-05, +-9.814900754734591168e-05, +-9.768651691164888717e-05, +-9.722389924919027607e-05, +-9.676115532057475170e-05, +-9.629828588655870792e-05, +-9.583529170808278519e-05, +-9.537217354618632704e-05, +-9.490893216212989490e-05, +-9.444556831724998500e-05, +-9.398208277308241058e-05, +-9.351847629126645845e-05, +-9.305474963361724588e-05, +-9.259090356208225770e-05, +-9.212693883876194609e-05, +-9.166285622586584753e-05, +-9.119865648578427567e-05, +-9.073434038101481239e-05, +-9.026990867418202677e-05, +-8.980536212809693000e-05, +-8.934070150567461667e-05, +-8.887592756995256070e-05, +-8.841104108410109143e-05, +-8.794604281143014279e-05, +-8.748093351541091022e-05, +-8.701571395959098476e-05, +-8.655038490765517678e-05, +-8.608494712344466572e-05, +-8.561940137089467200e-05, +-8.515374841405260386e-05, +-8.468798901713978913e-05, +-8.422212394446692099e-05, +-8.375615396044380225e-05, +-8.329007982963931530e-05, +-8.282390231668790965e-05, +-8.235762218641208966e-05, +-8.189124020367610150e-05, +-8.142475713350877321e-05, +-8.095817374102072235e-05, +-8.049149079142200135e-05, +-8.002470905008424943e-05, +-7.955782928245592155e-05, +-7.909085225408237320e-05, +-7.862377873061393780e-05, +-7.815660947783709741e-05, +-7.768934526158953555e-05, +-7.722198684788289600e-05, +-7.675453500275735059e-05, +-7.628699049240385657e-05, +-7.581935408308114737e-05, +-7.535162654113348644e-05, +-7.488380863305352383e-05, +-7.441590112539640030e-05, +-7.394790478480030651e-05, +-7.347982037799533279e-05, +-7.301164867183313563e-05, +-7.254339043320325085e-05, +-7.207504642914496970e-05, +-7.160661742675367733e-05, +-7.113810419319989409e-05, +-7.066950749573849128e-05, +-7.020082810171778486e-05, +-6.973206677859886138e-05, +-6.926322429387183688e-05, +-6.879430141511628767e-05, +-6.832529891002107761e-05, +-6.785621754632108140e-05, +-6.738705809181527717e-05, +-6.691782131443015883e-05, +-6.644850798213346058e-05, +-6.597911886295411985e-05, +-6.550965472499230616e-05, +-6.504011633642729513e-05, +-6.457050446553790567e-05, +-6.410081988061744438e-05, +-6.363106335003543724e-05, +-6.316123564225669805e-05, +-6.269133752575719437e-05, +-6.222136976914734835e-05, +-6.175133314102535778e-05, +-6.128122841010098484e-05, +-6.081105634509967198e-05, +-6.034081771484586288e-05, +-5.987051328816707087e-05, +-5.940014383401806070e-05, +-5.892971012133402052e-05, +-5.845921291915351039e-05, +-5.798865299653444336e-05, +-5.751803112257355369e-05, +-5.704734806646776950e-05, +-5.657660459742925191e-05, +-5.610580148470535800e-05, +-5.563493949758768027e-05, +-5.516401940544188255e-05, +-5.469304197762341009e-05, +-5.422200798360097336e-05, +-5.375091819280950996e-05, +-5.327977337477419697e-05, +-5.280857429901504796e-05, +-5.233732173511856521e-05, +-5.186601645269556422e-05, +-5.139465922139996432e-05, +-5.092325081088561704e-05, +-5.045179199087940176e-05, +-4.998028353110526369e-05, +-4.950872620130491542e-05, +-4.903712077129893169e-05, +-4.856546801090216810e-05, +-4.809376868994296497e-05, +-4.762202357827232925e-05, +-4.715023344577385495e-05, +-4.667839906238257467e-05, +-4.620652119800051384e-05, +-4.573460062255785329e-05, +-4.526263810603313600e-05, +-4.479063441836745257e-05, +-4.431859032958988337e-05, +-4.384650660966855630e-05, +-4.337438402863591952e-05, +-4.290222335650311665e-05, +-4.243002536329078484e-05, +-4.195779081903745056e-05, +-4.148552049381986522e-05, +-4.101321515765740558e-05, +-4.054087558062583369e-05, +-4.006850253277226834e-05, +-3.959609678413491076e-05, +-3.912365910480491868e-05, +-3.865119026484093053e-05, +-3.817869103428890636e-05, +-3.770616218319149940e-05, +-3.723360448161828497e-05, +-3.676101869958005433e-05, +-3.628840560715436523e-05, +-3.581576597433652515e-05, +-3.534310057116478275e-05, +-3.487041016763520445e-05, +-3.439769553372066830e-05, +-3.392495743943382223e-05, +-3.345219665474043598e-05, +-3.297941394958019747e-05, +-3.250661009387562355e-05, +-3.203378585756237702e-05, +-3.156094201050360111e-05, +-3.108807932261534136e-05, +-3.061519856371792855e-05, +-3.014230050366065525e-05, +-2.966938591222617282e-05, +-2.919645555919205386e-05, +-2.872351021434054995e-05, +-2.825055064737271948e-05, +-2.777757762797039659e-05, +-2.730459192581615743e-05, +-2.683159431052882364e-05, +-2.635858555168322200e-05, +-2.588556641887214654e-05, +-2.541253768162089633e-05, +-2.493950010940708924e-05, +-2.446645447166983703e-05, +-2.399340153781909322e-05, +-2.352034207725565317e-05, +-2.304727685928541748e-05, +-2.257420665318126939e-05, +-2.210113222820315963e-05, +-2.162805435351243755e-05, +-2.115497379829702219e-05, +-2.068189133162262272e-05, +-2.020880772255803485e-05, +-1.973572374007907045e-05, +-1.926264015315141761e-05, +-1.878955773063466510e-05, +-1.831647724140767337e-05, +-1.784339945421952727e-05, +-1.737032513781493418e-05, +-1.689725506084848055e-05, +-1.642418999190474048e-05, +-1.595113069956009220e-05, +-1.547807795229705249e-05, +-1.500503251852439378e-05, +-1.453199516658610740e-05, +-1.405896666479208314e-05, +-1.358594778133237427e-05, +-1.311293928440249232e-05, +-1.263994194205452244e-05, +-1.216695652232246394e-05, +-1.169398379313660370e-05, +-1.122102452234340455e-05, +-1.074807947776738945e-05, +-1.027514942712569623e-05, +-9.802235138047926948e-06, +-9.329337378085270427e-06, +-8.856456914741130977e-06, +-8.383594515385334119e-06, +-7.910750947368991025e-06, +-7.437926977928266264e-06, +-6.965123374204341516e-06, +-6.492340903252609273e-06, +-6.019580332052052875e-06, +-5.546842427525011184e-06, +-5.074127956451662133e-06, +-4.601437685532016221e-06, +-4.128772381405776050e-06, +-3.656132810566711879e-06, +-3.183519739487950079e-06, +-2.710933934473209163e-06, +-2.238376161781934925e-06, +-1.765847187543850487e-06, +-1.293347777789267160e-06, +-8.208786984584148310e-07, +-3.484407154212652866e-07, + 1.239654056079981571e-07, + 5.963388990090000242e-07, + 1.068678999235333897e-06, + 1.540984940900096331e-06, + 2.013255958650684323e-06, + 2.485491287317539960e-06, + 2.957690161788961915e-06, + 3.429851817107143313e-06, + 3.901975488385146829e-06, + 4.374060410902951030e-06, + 4.846105819982284735e-06, + 5.318110951135262243e-06, + 5.790075039939361689e-06, + 6.261997322122766159e-06, + 6.733877033544643067e-06, + 7.205713410133120164e-06, + 7.677505687970873991e-06, + 8.149253103275130573e-06, + 8.620954892388537803e-06, + 9.092610291748671398e-06, + 9.564218537973670788e-06, + 1.003577886773690703e-05, + 1.050729051791581497e-05, + 1.097875272546664248e-05, + 1.145016472752054127e-05, + 1.192152576131104900e-05, + 1.239283506421740825e-05, + 1.286409187374479846e-05, + 1.333529542756765657e-05, + 1.380644496345716762e-05, + 1.427753971937730476e-05, + 1.474857893335971906e-05, + 1.521956184365235821e-05, + 1.569048768859431577e-05, + 1.616135570670131365e-05, + 1.663216513663528183e-05, + 1.710291521719530696e-05, + 1.757360518729745769e-05, + 1.804423428606048751e-05, + 1.851480175274366588e-05, + 1.898530682672737782e-05, + 1.945574874759788481e-05, + 1.992612675502300739e-05, + 2.039644008890001721e-05, + 2.086668798923112987e-05, + 2.133686969620851324e-05, + 2.180698445018418042e-05, + 2.227703149166049290e-05, + 2.274701006127062791e-05, + 2.321691939987423898e-05, + 2.368675874844291672e-05, + 2.415652734814600347e-05, + 2.462622444033001371e-05, + 2.509584926645767828e-05, + 2.556540106819251546e-05, + 2.603487908737938989e-05, + 2.650428256603519183e-05, + 2.697361074631853710e-05, + 2.744286287061484646e-05, + 2.791203818141189271e-05, + 2.838113592144752331e-05, + 2.885015533358550559e-05, + 2.931909566090032840e-05, + 2.978795614665726626e-05, + 3.025673603425108130e-05, + 3.072543456729100782e-05, + 3.119405098958086389e-05, + 3.166258454510986953e-05, + 3.213103447802242123e-05, + 3.259940003270307300e-05, + 3.306768045365227331e-05, + 3.353587498563393853e-05, + 3.400398287355098652e-05, + 3.447200336254122754e-05, + 3.493993569791499553e-05, + 3.540777912514678617e-05, + 3.587553288995939780e-05, + 3.634319623826301953e-05, + 3.681076841613502445e-05, + 3.727824866990512014e-05, + 3.774563624603086197e-05, + 3.821293039124559922e-05, + 3.868013035243385284e-05, + 3.914723537671649985e-05, + 3.961424471142022596e-05, + 4.008115760406870284e-05, + 4.054797330236242200e-05, + 4.101469105426421122e-05, + 4.148131010793686580e-05, + 4.194782971172416827e-05, + 4.241424911423525966e-05, + 4.288056756422091843e-05, + 4.334678431072046994e-05, + 4.381289860293791625e-05, + 4.427890969033739345e-05, + 4.474481682256024369e-05, + 4.521061924952064179e-05, + 4.567631622128173199e-05, + 4.614190698820204938e-05, + 4.660739080081276794e-05, + 4.707276690990102821e-05, + 4.753803456649130938e-05, + 4.800319302178371783e-05, + 4.846824152723836518e-05, + 4.893317933455608302e-05, + 4.939800569566899717e-05, + 4.986271986271057654e-05, + 5.032732108809996380e-05, + 5.079180862441855921e-05, + 5.125618172455646251e-05, + 5.172043964158959216e-05, + 5.218458162886297234e-05, + 5.264860693997219993e-05, + 5.311251482870184146e-05, + 5.357630454910954011e-05, + 5.403997535551712526e-05, + 5.450352650244951087e-05, + 5.496695724472908893e-05, + 5.543026683735269950e-05, + 5.589345453563772706e-05, + 5.635651959509899606e-05, + 5.681946127153305410e-05, + 5.728227882098827509e-05, + 5.774497149975515558e-05, + 5.820753856434734806e-05, + 5.866997927158584244e-05, + 5.913229287853727497e-05, + 5.959447864249513765e-05, + 6.005653582106339054e-05, + 6.051846367203393337e-05, + 6.098026145353159050e-05, + 6.144192842389261246e-05, + 6.190346384174738028e-05, + 6.236486696599119982e-05, + 6.282613705577503856e-05, + 6.328727337048609808e-05, + 6.374827516983125699e-05, + 6.420914171377708742e-05, + 6.466987226252944490e-05, + 6.513046607661776512e-05, + 6.559092241678288963e-05, + 6.605124054407029370e-05, + 6.651141971981223760e-05, + 6.697145920561669425e-05, + 6.743135826333867199e-05, + 6.789111615516403705e-05, + 6.835073214348622614e-05, + 6.881020549105262732e-05, + 6.926953546084133333e-05, + 6.972872131614501817e-05, + 7.018776232055190935e-05, + 7.064665773788416454e-05, + 7.110540683228287306e-05, + 7.156400886818733401e-05, + 7.202246311032628782e-05, + 7.248076882370922908e-05, + 7.293892527360693154e-05, + 7.339693172563409144e-05, + 7.385478744569027915e-05, + 7.431249169993875653e-05, + 7.477004375488131404e-05, + 7.522744287728617128e-05, + 7.568468833423114175e-05, + 7.614177939308360227e-05, + 7.659871532154352222e-05, + 7.705549538757213660e-05, + 7.751211885948514676e-05, + 7.796858500583213000e-05, + 7.842489309553964073e-05, + 7.888104239779089111e-05, + 7.933703218210763543e-05, + 7.979286171832096443e-05, + 8.024853027656333635e-05, + 8.070403712724739443e-05, + 8.115938154115065657e-05, + 8.161456278935362097e-05, + 8.206958014322240534e-05, + 8.252443287449018404e-05, + 8.297912025513639440e-05, + 8.343364155753120665e-05, + 8.388799605431264319e-05, + 8.434218301848216452e-05, + 8.479620172332134832e-05, + 8.525005144248710954e-05, + 8.570373144988909062e-05, + 8.615724101983438898e-05, + 8.661057942690569269e-05, + 8.706374594604506217e-05, + 8.751673985253352009e-05, + 8.796956042193123054e-05, + 8.842220693016110454e-05, + 8.887467865348864745e-05, + 8.932697486851309560e-05, + 8.977909485213835970e-05, + 9.023103788165547838e-05, + 9.068280323462148574e-05, + 9.113439018900310875e-05, + 9.158579802305596008e-05, + 9.203702601540628689e-05, + 9.248807344503365074e-05, + 9.293893959120873500e-05, + 9.338962373357754675e-05, + 9.384012515214127769e-05, + 9.429044312724802358e-05, + 9.474057693958313478e-05, + 9.519052587015035120e-05, + 9.564028920036416273e-05, + 9.608986621193991182e-05, + 9.653925618697483757e-05, + 9.698845840791990006e-05, + 9.743747215757064589e-05, + 9.788629671904828893e-05, + 9.833493137588045620e-05, + 9.878337541194319666e-05, + 9.923162811144139778e-05, + 9.967968875898999229e-05, + 1.001275566394960648e-04, + 1.005752310382985646e-04, + 1.010227112410499789e-04, + 1.014699965337978509e-04, + 1.019170862029557099e-04, + 1.023639795352940859e-04, + 1.028106758179215359e-04, + 1.032571743383660270e-04, + 1.037034743845160508e-04, + 1.041495752446018391e-04, + 1.045954762072759614e-04, + 1.050411765614947670e-04, + 1.054866755966603478e-04, + 1.059319726025001647e-04, + 1.063770668691589881e-04, + 1.068219576871207404e-04, + 1.072666443472974413e-04, + 1.077111261409131573e-04, + 1.081554023596425763e-04, + 1.085994722954943480e-04, + 1.090433352408900401e-04, + 1.094869904886469815e-04, + 1.099304373319186440e-04, + 1.103736750642760804e-04, + 1.108167029796883673e-04, + 1.112595203725141895e-04, + 1.117021265374935999e-04, + 1.121445207697281514e-04, + 1.125867023647617921e-04, + 1.130286706185237280e-04, + 1.134704248273075110e-04, + 1.139119642878330148e-04, + 1.143532882972283832e-04, + 1.147943961529691517e-04, + 1.152352871529615147e-04, + 1.156759605955319438e-04, + 1.161164157793689259e-04, + 1.165566520036138189e-04, + 1.169966685677427691e-04, + 1.174364647717061660e-04, + 1.178760399158118203e-04, + 1.183153933008038118e-04, + 1.187545242278357100e-04, + 1.191934319984600167e-04, + 1.196321159146110353e-04, + 1.200705752786843295e-04, + 1.205088093934782173e-04, + 1.209468175621755285e-04, + 1.213845990884243110e-04, + 1.218221532762187845e-04, + 1.222594794300404500e-04, + 1.226965768547400200e-04, + 1.231334448556162264e-04, + 1.235700827383907484e-04, + 1.240064898091949852e-04, + 1.244426653745546332e-04, + 1.248786087414691852e-04, + 1.253143192173527057e-04, + 1.257497961100154809e-04, + 1.261850387277461472e-04, + 1.266200463792002077e-04, + 1.270548183734944935e-04, + 1.274893540201846667e-04, + 1.279236526292587691e-04, + 1.283577135111275188e-04, + 1.287915359766069086e-04, + 1.292251193369952928e-04, + 1.296584629040187166e-04, + 1.300915659898105325e-04, + 1.305244279069713031e-04, + 1.309570479685514264e-04, + 1.313894254879923449e-04, + 1.318215597792060450e-04, + 1.322534501565572488e-04, + 1.326850959348547675e-04, + 1.331164964293414727e-04, + 1.335476509556773558e-04, + 1.339785588300180239e-04, + 1.344092193689568580e-04, + 1.348396318895081535e-04, + 1.352697957091742863e-04, + 1.356997101458794143e-04, + 1.361293745180111375e-04, + 1.365587881443998169e-04, + 1.369879503443589342e-04, + 1.374168604376198224e-04, + 1.378455177444181854e-04, + 1.382739215853794979e-04, + 1.387020712816559940e-04, + 1.391299661548115255e-04, + 1.395576055268999761e-04, + 1.399849887204365848e-04, + 1.404121150583900854e-04, + 1.408389838641651963e-04, + 1.412655944616791383e-04, + 1.416919461753058252e-04, + 1.421180383298582188e-04, + 1.425438702506648728e-04, + 1.429694412634575289e-04, + 1.433947506945046086e-04, + 1.438197978704992971e-04, + 1.442445821186445168e-04, + 1.446691027665891228e-04, + 1.450933591424657682e-04, + 1.455173505748731503e-04, + 1.459410763929163974e-04, + 1.463645359261397938e-04, + 1.467877285045949762e-04, + 1.472106534588237491e-04, + 1.476333101198010016e-04, + 1.480556978190121736e-04, + 1.484778158884362067e-04, + 1.488996636605355696e-04, + 1.493212404682490481e-04, + 1.497425456449725275e-04, + 1.501635785246381127e-04, + 1.505843384416552012e-04, + 1.510048247308950608e-04, + 1.514250367277490781e-04, + 1.518449737681075895e-04, + 1.522646351883078127e-04, + 1.526840203252090625e-04, + 1.531031285161733987e-04, + 1.535219590990604213e-04, + 1.539405114122157779e-04, + 1.543587847944554706e-04, + 1.547767785851505041e-04, + 1.551944921241260556e-04, + 1.556119247517346313e-04, + 1.560290758088311565e-04, + 1.564459446367657386e-04, + 1.568625305773627425e-04, + 1.572788329729991506e-04, + 1.576948511665497027e-04, + 1.581105845013669193e-04, + 1.585260323213580802e-04, + 1.589411939708757469e-04, + 1.593560687948474062e-04, + 1.597706561386655051e-04, + 1.601849553482618269e-04, + 1.605989657700831238e-04, + 1.610126867510796244e-04, + 1.614261176386907494e-04, + 1.618392577809180783e-04, + 1.622521065262711934e-04, + 1.626646632237498450e-04, + 1.630769272229213901e-04, + 1.634888978738075480e-04, + 1.639005745270166996e-04, + 1.643119565336339225e-04, + 1.647230432453041220e-04, + 1.651338340141795830e-04, + 1.655443281929092362e-04, + 1.659545251347160704e-04, + 1.663644241933405368e-04, + 1.667740247230246658e-04, + 1.671833260785677677e-04, + 1.675923276153093292e-04, + 1.680010286890740992e-04, + 1.684094286562475213e-04, + 1.688175268737577910e-04, + 1.692253226990678594e-04, + 1.696328154901672746e-04, + 1.700400046055557015e-04, + 1.704468894043150763e-04, + 1.708534692460582144e-04, + 1.712597434909089158e-04, + 1.716657114995701614e-04, + 1.720713726332571904e-04, + 1.724767262537391067e-04, + 1.728817717233188753e-04, + 1.732865084048715136e-04, + 1.736909356617815324e-04, + 1.740950528580266911e-04, + 1.744988593580667038e-04, + 1.749023545269762442e-04, + 1.753055377303323512e-04, + 1.757084083342905668e-04, + 1.761109657055600535e-04, + 1.765132092113909097e-04, + 1.769151382195617280e-04, + 1.773167520984506376e-04, + 1.777180502169823956e-04, + 1.781190319446101719e-04, + 1.785196966513927718e-04, + 1.789200437078816892e-04, + 1.793200724852535960e-04, + 1.797197823551990490e-04, + 1.801191726899978687e-04, + 1.805182428625026053e-04, + 1.809169922460818897e-04, + 1.813154202146979529e-04, + 1.817135261428971132e-04, + 1.821113094057542914e-04, + 1.825087693789400960e-04, + 1.829059054387032867e-04, + 1.833027169618154793e-04, + 1.836992033256467695e-04, + 1.840953639081471924e-04, + 1.844911980878407058e-04, + 1.848867052438128570e-04, + 1.852818847556999681e-04, + 1.856767360037555432e-04, + 1.860712583688023467e-04, + 1.864654512322124543e-04, + 1.868593139759637122e-04, + 1.872528459826217398e-04, + 1.876460466352874816e-04, + 1.880389153176702276e-04, + 1.884314514140706461e-04, + 1.888236543093708085e-04, + 1.892155233890295551e-04, + 1.896070580390634395e-04, + 1.899982576461189097e-04, + 1.903891215974205103e-04, + 1.907796492807556496e-04, + 1.911698400845330647e-04, + 1.915596933977367709e-04, + 1.919492086099116679e-04, + 1.923383851112405460e-04, + 1.927272222924899029e-04, + 1.931157195449921624e-04, + 1.935038762607200244e-04, + 1.938916918321786128e-04, + 1.942791656525311085e-04, + 1.946662971154953972e-04, + 1.950530856154116693e-04, + 1.954395305472299250e-04, + 1.958256313064559535e-04, + 1.962113872892238663e-04, + 1.965967978922767713e-04, + 1.969818625129618939e-04, + 1.973665805492040950e-04, + 1.977509513995774561e-04, + 1.981349744631981597e-04, + 1.985186491398532925e-04, + 1.989019748298920460e-04, + 1.992849509343083594e-04, + 1.996675768546787681e-04, + 2.000498519931989141e-04, + 2.004317757526679331e-04, + 2.008133475365222011e-04, + 2.011945667487777354e-04, + 2.015754327940893922e-04, + 2.019559450777377754e-04, + 2.023361030055745920e-04, + 2.027159059840949690e-04, + 2.030953534204212713e-04, + 2.034744447222929919e-04, + 2.038531792980618454e-04, + 2.042315565566749905e-04, + 2.046095759077418976e-04, + 2.049872367614891111e-04, + 2.053645385287381040e-04, + 2.057414806209613856e-04, + 2.061180624502659947e-04, + 2.064942834293403192e-04, + 2.068701429715280116e-04, + 2.072456404908066846e-04, + 2.076207754017851193e-04, + 2.079955471196908237e-04, + 2.083699550603600040e-04, + 2.087439986403076314e-04, + 2.091176772766409765e-04, + 2.094909903871256917e-04, + 2.098639373901614710e-04, + 2.102365177047751379e-04, + 2.106087307506043012e-04, + 2.109805759479648738e-04, + 2.113520527178033132e-04, + 2.117231604816790581e-04, + 2.120938986618336184e-04, + 2.124642666810903414e-04, + 2.128342639629718846e-04, + 2.132038899316028276e-04, + 2.135731440117754286e-04, + 2.139420256289335516e-04, + 2.143105342091260993e-04, + 2.146786691790720115e-04, + 2.150464299661447609e-04, + 2.154138159983669861e-04, + 2.157808267043849590e-04, + 2.161474615135337450e-04, + 2.165137198557428504e-04, + 2.168796011616502806e-04, + 2.172451048625050432e-04, + 2.176102303902425540e-04, + 2.179749771774349538e-04, + 2.183393446572839795e-04, + 2.187033322636895672e-04, + 2.190669394311988403e-04, + 2.194301655949920692e-04, + 2.197930101909329240e-04, + 2.201554726555519134e-04, + 2.205175524259983544e-04, + 2.208792489401061564e-04, + 2.212405616363822744e-04, + 2.216014899539927229e-04, + 2.219620333327615728e-04, + 2.223221912131501078e-04, + 2.226819630363282459e-04, + 2.230413482441224711e-04, + 2.234003462790011964e-04, + 2.237589565841352349e-04, + 2.241171786033368412e-04, + 2.244750117810994738e-04, + 2.248324555625744582e-04, + 2.251895093936128909e-04, + 2.255461727207027831e-04, + 2.259024449910469875e-04, + 2.262583256524644006e-04, + 2.266138141535067039e-04, + 2.269689099433594307e-04, + 2.273236124719082377e-04, + 2.276779211897256511e-04, + 2.280318355480210029e-04, + 2.283853549987071370e-04, + 2.287384789943829803e-04, + 2.290912069883303717e-04, + 2.294435384344874174e-04, + 2.297954727875148719e-04, + 2.301470095026995075e-04, + 2.304981480360692304e-04, + 2.308488878442965320e-04, + 2.311992283847624297e-04, + 2.315491691155446494e-04, + 2.318987094953650684e-04, + 2.322478489836609478e-04, + 2.325965870405724101e-04, + 2.329449231268973357e-04, + 2.332928567041493413e-04, + 2.336403872345411373e-04, + 2.339875141809367141e-04, + 2.343342370069188341e-04, + 2.346805551767700308e-04, + 2.350264681554691936e-04, + 2.353719754086823794e-04, + 2.357170764027487718e-04, + 2.360617706047435111e-04, + 2.364060574824303684e-04, + 2.367499365042525573e-04, + 2.370934071393730118e-04, + 2.374364688576635716e-04, + 2.377791211296586594e-04, + 2.381213634266179208e-04, + 2.384631952205127801e-04, + 2.388046159840168450e-04, + 2.391456251905012449e-04, + 2.394862223140192619e-04, + 2.398264068293685914e-04, + 2.401661782120471608e-04, + 2.405055359382354840e-04, + 2.408444794848635839e-04, + 2.411830083295223048e-04, + 2.415211219505371731e-04, + 2.418588198269527856e-04, + 2.421961014385247857e-04, + 2.425329662656969330e-04, + 2.428694137896667514e-04, + 2.432054434922917730e-04, + 2.435410548561974973e-04, + 2.438762473646879719e-04, + 2.442110205018045558e-04, + 2.445453737523157556e-04, + 2.448793066016691135e-04, + 2.452128185360536307e-04, + 2.455459090423862956e-04, + 2.458785776083045492e-04, + 2.462108237221429202e-04, + 2.465426468729975894e-04, + 2.468740465506335277e-04, + 2.472050222455926451e-04, + 2.475355734491028808e-04, + 2.478656996531486759e-04, + 2.481954003504158960e-04, + 2.485246750343263634e-04, + 2.488535231990206178e-04, + 2.491819443393908221e-04, + 2.495099379510285040e-04, + 2.498375035302760551e-04, + 2.501646405742145342e-04, + 2.504913485806194314e-04, + 2.508176270480194322e-04, + 2.511434754756849247e-04, + 2.514688933636184047e-04, + 2.517938802125513852e-04, + 2.521184355239273209e-04, + 2.524425587999607509e-04, + 2.527662495435985929e-04, + 2.530895072584999229e-04, + 2.534123314490873118e-04, + 2.537347216205261720e-04, + 2.540566772786882191e-04, + 2.543781979302045439e-04, + 2.546992830824651791e-04, + 2.550199322435690082e-04, + 2.553401449223977634e-04, + 2.556599206285231087e-04, + 2.559792588723133256e-04, + 2.562981591648444630e-04, + 2.566166210179595883e-04, + 2.569346439442573497e-04, + 2.572522274570442167e-04, + 2.575693710704001285e-04, + 2.578860742991565392e-04, + 2.582023366588981524e-04, + 2.585181576659353279e-04, + 2.588335368373668576e-04, + 2.591484736909918196e-04, + 2.594629677454130651e-04, + 2.597770185199484768e-04, + 2.600906255346939065e-04, + 2.604037883105051777e-04, + 2.607165063689569399e-04, + 2.610287792324027874e-04, + 2.613406064239598642e-04, + 2.616519874675008947e-04, + 2.619629218876384628e-04, + 2.622734092097760779e-04, + 2.625834489600366176e-04, + 2.628930406653233139e-04, + 2.632021838533091284e-04, + 2.635108780524254759e-04, + 2.638191227918631468e-04, + 2.641269176015511103e-04, + 2.644342620122206453e-04, + 2.647411555553580691e-04, + 2.650475977631950339e-04, + 2.653535881687495092e-04, + 2.656591263058141273e-04, + 2.659642117089137904e-04, + 2.662688439133611821e-04, + 2.665730224552465217e-04, + 2.668767468714271012e-04, + 2.671800166995265272e-04, + 2.674828314779162885e-04, + 2.677851907457737073e-04, + 2.680870940430446427e-04, + 2.683885409104222941e-04, + 2.686895308894124705e-04, + 2.689900635222449029e-04, + 2.692901383519729903e-04, + 2.695897549223908048e-04, + 2.698889127780977094e-04, + 2.701876114644413294e-04, + 2.704858505275828211e-04, + 2.707836295144126835e-04, + 2.710809479726489332e-04, + 2.713778054507549214e-04, + 2.716742014979950078e-04, + 2.719701356644226345e-04, + 2.722656075008380964e-04, + 2.725606165588438895e-04, + 2.728551623908348446e-04, + 2.731492445499872313e-04, + 2.734428625902433625e-04, + 2.737360160663637439e-04, + 2.740287045338479278e-04, + 2.743209275490279169e-04, + 2.746126846689917822e-04, + 2.749039754516334824e-04, + 2.751947994556439730e-04, + 2.754851562404682179e-04, + 2.757750453663627066e-04, + 2.760644663943870509e-04, + 2.763534188863649545e-04, + 2.766419024049336520e-04, + 2.769299165135285135e-04, + 2.772174607763437421e-04, + 2.775045347583888610e-04, + 2.777911380254754320e-04, + 2.780772701442075687e-04, + 2.783629306819805811e-04, + 2.786481192069652007e-04, + 2.789328352881629289e-04, + 2.792170784953671141e-04, + 2.795008483991477189e-04, + 2.797841445709091618e-04, + 2.800669665828076473e-04, + 2.803493140078461960e-04, + 2.806311864197951183e-04, + 2.809125833932495315e-04, + 2.811935045036014955e-04, + 2.814739493270435370e-04, + 2.817539174405504342e-04, + 2.820334084219331566e-04, + 2.823124218498031940e-04, + 2.825909573035548846e-04, + 2.828690143634239617e-04, + 2.831465926104113884e-04, + 2.834236916263471089e-04, + 2.837003109938740562e-04, + 2.839764502964432194e-04, + 2.842521091182968924e-04, + 2.845272870445177886e-04, + 2.848019836609556941e-04, + 2.850761985543159393e-04, + 2.853499313120816611e-04, + 2.856231815225695309e-04, + 2.858959487749144135e-04, + 2.861682326590326121e-04, + 2.864400327656748866e-04, + 2.867113486864111111e-04, + 2.869821800136277269e-04, + 2.872525263405085517e-04, + 2.875223872610832977e-04, + 2.877917623701582370e-04, + 2.880606512633978960e-04, + 2.883290535372546367e-04, + 2.885969687890269325e-04, + 2.888643966168101453e-04, + 2.891313366195300276e-04, + 2.893977883969241281e-04, + 2.896637515495717702e-04, + 2.899292256788471600e-04, + 2.901942103869662782e-04, + 2.904587052769766887e-04, + 2.907227099527149835e-04, + 2.909862240188641909e-04, + 2.912492470809352908e-04, + 2.915117787452664003e-04, + 2.917738186190151311e-04, + 2.920353663101469882e-04, + 2.922964214274853512e-04, + 2.925569835806751543e-04, + 2.928170523801722062e-04, + 2.930766274372908413e-04, + 2.933357083641321451e-04, + 2.935942947736701488e-04, + 2.938523862796785908e-04, + 2.941099824967884340e-04, + 2.943670830404358243e-04, + 2.946236875269204743e-04, + 2.948797955733332391e-04, + 2.951354067976404670e-04, + 2.953905208186111955e-04, + 2.956451372558694096e-04, + 2.958992557298770198e-04, + 2.961528758619044266e-04, + 2.964059972740758393e-04, + 2.966586195893571335e-04, + 2.969107424315522731e-04, + 2.971623654252854210e-04, + 2.974134881960484268e-04, + 2.976641103701314927e-04, + 2.979142315747045967e-04, + 2.981638514377495130e-04, + 2.984129695881049152e-04, + 2.986615856554584612e-04, + 2.989096992703094971e-04, + 2.991573100640171410e-04, + 2.994044176687880865e-04, + 2.996510217176735660e-04, + 2.998971218445525464e-04, + 3.001427176841742835e-04, + 3.003878088721021605e-04, + 3.006323950447596042e-04, + 3.008764758394215193e-04, + 3.011200508942122830e-04, + 3.013631198480949029e-04, + 3.016056823408642409e-04, + 3.018477380131915190e-04, + 3.020892865065911981e-04, + 3.023303274634102974e-04, + 3.025708605268724680e-04, + 3.028108853410135370e-04, + 3.030504015507590816e-04, + 3.032894088018580226e-04, + 3.035279067409281059e-04, + 3.037658950154386640e-04, + 3.040033732737061167e-04, + 3.042403411648863815e-04, + 3.044767983390133086e-04, + 3.047127444469711964e-04, + 3.049481791404842204e-04, + 3.051831020721561152e-04, + 3.054175128954104350e-04, + 3.056514112645669894e-04, + 3.058847968347708831e-04, + 3.061176692620503573e-04, + 3.063500282032682724e-04, + 3.065818733161724142e-04, + 3.068132042593323941e-04, + 3.070440206922161390e-04, + 3.072743222751223458e-04, + 3.075041086692275900e-04, + 3.077333795365754291e-04, + 3.079621345400411123e-04, + 3.081903733433820499e-04, + 3.084180956112191649e-04, + 3.086453010090396579e-04, + 3.088719892031759192e-04, + 3.090981598608514994e-04, + 3.093238126501173576e-04, + 3.095489472399262925e-04, + 3.097735633000697872e-04, + 3.099976605012252267e-04, + 3.102212385149215280e-04, + 3.104442970135588733e-04, + 3.106668356704014996e-04, + 3.108888541595952086e-04, + 3.111103521561312630e-04, + 3.113313293358983738e-04, + 3.115517853756181359e-04, + 3.117717199529153934e-04, + 3.119911327462605594e-04, + 3.122100234350100030e-04, + 3.124283916993916290e-04, + 3.126462372204985357e-04, + 3.128635596802797447e-04, + 3.130803587615846534e-04, + 3.132966341481269851e-04, + 3.135123855244807776e-04, + 3.137276125761172458e-04, + 3.139423149893496505e-04, + 3.141564924513970489e-04, + 3.143701446503309525e-04, + 3.145832712751108883e-04, + 3.147958720155761593e-04, + 3.150079465624336470e-04, + 3.152194946072535832e-04, + 3.154305158425131346e-04, + 3.156410099615434401e-04, + 3.158509766585670150e-04, + 3.160604156286895661e-04, + 3.162693265678721811e-04, + 3.164777091729706858e-04, + 3.166855631417245850e-04, + 3.168928881727517497e-04, + 3.170996839655412076e-04, + 3.173059502204829039e-04, + 3.175116866388157143e-04, + 3.177168929226939064e-04, + 3.179215687751323332e-04, + 3.181257139000400976e-04, + 3.183293280022151317e-04, + 3.185324107873166032e-04, + 3.187349619619006405e-04, + 3.189369812334132853e-04, + 3.191384683101842579e-04, + 3.193394229014169831e-04, + 3.195398447172208994e-04, + 3.197397334685606095e-04, + 3.199390888673198487e-04, + 3.201379106262462987e-04, + 3.203361984589931668e-04, + 3.205339520800912678e-04, + 3.207311712049478857e-04, + 3.209278555498794620e-04, + 3.211240048320887193e-04, + 3.213196187696526810e-04, + 3.215146970815626780e-04, + 3.217092394876661814e-04, + 3.219032457087343487e-04, + 3.220967154664053193e-04, + 3.222896484832244932e-04, + 3.224820444826276169e-04, + 3.226739031889381279e-04, + 3.228652243273561493e-04, + 3.230560076240027254e-04, + 3.232462528058820377e-04, + 3.234359596008825428e-04, + 3.236251277378050534e-04, + 3.238137569463175815e-04, + 3.240018469570125838e-04, + 3.241893975013530231e-04, + 3.243764083117205610e-04, + 3.245628791213696959e-04, + 3.247488096644763895e-04, + 3.249341996760814720e-04, + 3.251190488921523324e-04, + 3.253033570495351056e-04, + 3.254871238859840003e-04, + 3.256703491401563111e-04, + 3.258530325515861812e-04, + 3.260351738607195136e-04, + 3.262167728089072492e-04, + 3.263978291383979398e-04, + 3.265783425923274481e-04, + 3.267583129147536426e-04, + 3.269377398506051685e-04, + 3.271166231457428683e-04, + 3.272949625469054628e-04, + 3.274727578017459263e-04, + 3.276500086588264994e-04, + 3.278267148675877889e-04, + 3.280028761783863357e-04, + 3.281784923424899527e-04, + 3.283535631120562573e-04, + 3.285280882401628126e-04, + 3.287020674807640845e-04, + 3.288755005887499341e-04, + 3.290483873198904322e-04, + 3.292207274308773298e-04, + 3.293925206793040547e-04, + 3.295637668236681508e-04, + 3.297344656233602736e-04, + 3.299046168386983425e-04, + 3.300742202309017367e-04, + 3.302432755620855493e-04, + 3.304117825952934380e-04, + 3.305797410944458009e-04, + 3.307471508244013043e-04, + 3.309140115509087449e-04, + 3.310803230406339915e-04, + 3.312460850611530466e-04, + 3.314112973809486850e-04, + 3.315759597693992869e-04, + 3.317400719968151041e-04, + 3.319036338344104504e-04, + 3.320666450543006119e-04, + 3.322291054295292765e-04, + 3.323910147340266305e-04, + 3.325523727426579301e-04, + 3.327131792311850667e-04, + 3.328734339762932926e-04, + 3.330331367555680730e-04, + 3.331922873475252271e-04, + 3.333508855315672347e-04, + 3.335089310880360366e-04, + 3.336664237981680947e-04, + 3.338233634441272434e-04, + 3.339797498089907028e-04, + 3.341355826767372617e-04, + 3.342908618322662506e-04, + 3.344455870613990598e-04, + 3.345997581508711703e-04, + 3.347533748883303652e-04, + 3.349064370623291401e-04, + 3.350589444623547353e-04, + 3.352108968788053921e-04, + 3.353622941029875339e-04, + 3.355131359271390219e-04, + 3.356634221444027011e-04, + 3.358131525488425003e-04, + 3.359623269354380113e-04, + 3.361109451000959814e-04, + 3.362590068396290087e-04, + 3.364065119517845991e-04, + 3.365534602352049419e-04, + 3.366998514894756992e-04, + 3.368456855150857819e-04, + 3.369909621134525033e-04, + 3.371356810869136100e-04, + 3.372798422387241922e-04, + 3.374234453730486061e-04, + 3.375664902949887720e-04, + 3.377089768105659049e-04, + 3.378509047267109740e-04, + 3.379922738512940302e-04, + 3.381330839930803502e-04, + 3.382733349617858391e-04, + 3.384130265680274823e-04, + 3.385521586233560887e-04, + 3.386907309402459364e-04, + 3.388287433320909779e-04, + 3.389661956131953535e-04, + 3.391030875988107962e-04, + 3.392394191050942392e-04, + 3.393751899491345963e-04, + 3.395103999489512974e-04, + 3.396450489234691898e-04, + 3.397791366925500341e-04, + 3.399126630769814454e-04, + 3.400456278984766764e-04, + 3.401780309796645341e-04, + 3.403098721441159976e-04, + 3.404411512163038308e-04, + 3.405718680216515888e-04, + 3.407020223864905750e-04, + 3.408316141380891688e-04, + 3.409606431046459407e-04, + 3.410891091152686190e-04, + 3.412170120000030922e-04, + 3.413443515898258738e-04, + 3.414711277166388977e-04, + 3.415973402132699527e-04, + 3.417229889134657428e-04, + 3.418480736519162824e-04, + 3.419725942642355427e-04, + 3.420965505869585249e-04, + 3.422199424575593659e-04, + 3.423427697144366478e-04, + 3.424650321969075970e-04, + 3.425867297452350269e-04, + 3.427078622006066297e-04, + 3.428284294051331328e-04, + 3.429484312018673273e-04, + 3.430678674347721374e-04, + 3.431867379487627966e-04, + 3.433050425896684121e-04, + 3.434227812042584200e-04, + 3.435399536402329894e-04, + 3.436565597462196077e-04, + 3.437725993717693942e-04, + 3.438880723673794345e-04, + 3.440029785844733734e-04, + 3.441173178753998969e-04, + 3.442310900934517602e-04, + 3.443442950928369477e-04, + 3.444569327287134758e-04, + 3.445690028571578431e-04, + 3.446805053351897495e-04, + 3.447914400207510634e-04, + 3.449018067727323300e-04, + 3.450116054509328183e-04, + 3.451208359161103407e-04, + 3.452294980299376137e-04, + 3.453375916550315851e-04, + 3.454451166549448154e-04, + 3.455520728941495934e-04, + 3.456584602380622772e-04, + 3.457642785530333734e-04, + 3.458695277063493262e-04, + 3.459742075662291020e-04, + 3.460783180018173590e-04, + 3.461818588832056435e-04, + 3.462848300814192165e-04, + 3.463872314684106031e-04, + 3.464890629170750964e-04, + 3.465903243012441438e-04, + 3.466910154956760770e-04, + 3.467911363760674964e-04, + 3.468906868190595053e-04, + 3.469896667022180311e-04, + 3.470880759040551847e-04, + 3.471859143040058413e-04, + 3.472831817824555589e-04, + 3.473798782207162378e-04, + 3.474760035010401068e-04, + 3.475715575066203739e-04, + 3.476665401215817933e-04, + 3.477609512309800697e-04, + 3.478547907208190426e-04, + 3.479480584780371335e-04, + 3.480407543905051238e-04, + 3.481328783470406829e-04, + 3.482244302373832144e-04, + 3.483154099522274127e-04, + 3.484058173831914413e-04, + 3.484956524228398638e-04, + 3.485849149646766507e-04, + 3.486736049031373733e-04, + 3.487617221335948415e-04, + 3.488492665523668557e-04, + 3.489362380567073707e-04, + 3.490226365448061705e-04, + 3.491084619157979211e-04, + 3.491937140697457453e-04, + 3.492783929076575394e-04, + 3.493624983314809322e-04, + 3.494460302441051817e-04, + 3.495289885493543455e-04, + 3.496113731519859789e-04, + 3.496931839577062601e-04, + 3.497744208731620209e-04, + 3.498550838059283330e-04, + 3.499351726645305713e-04, + 3.500146873584330837e-04, + 3.500936277980310602e-04, + 3.501719938946641392e-04, + 3.502497855606152692e-04, + 3.503270027091058298e-04, + 3.504036452542974209e-04, + 3.504797131112825925e-04, + 3.505552061961072336e-04, + 3.506301244257547427e-04, + 3.507044677181389266e-04, + 3.507782359921283403e-04, + 3.508514291675222181e-04, + 3.509240471650619661e-04, + 3.509960899064280175e-04, + 3.510675573142486156e-04, + 3.511384493120838206e-04, + 3.512087658244447013e-04, + 3.512785067767678552e-04, + 3.513476720954477185e-04, + 3.514162617078065332e-04, + 3.514842755421148388e-04, + 3.515517135275826903e-04, + 3.516185755943629105e-04, + 3.516848616735404110e-04, + 3.517505716971513824e-04, + 3.518157055981711509e-04, + 3.518802633105124985e-04, + 3.519442447690365587e-04, + 3.520076499095348729e-04, + 3.520704786687506413e-04, + 3.521327309843620256e-04, + 3.521944067949935877e-04, + 3.522555060402069111e-04, + 3.523160286605110636e-04, + 3.523759745973457924e-04, + 3.524353437931049423e-04, + 3.524941361911136878e-04, + 3.525523517356475610e-04, + 3.526099903719206335e-04, + 3.526670520460837275e-04, + 3.527235367052331981e-04, + 3.527794442974087645e-04, + 3.528347747715927514e-04, + 3.528895280777052099e-04, + 3.529437041666055983e-04, + 3.529973029901035150e-04, + 3.530503245009466648e-04, + 3.531027686528207497e-04, + 3.531546354003577636e-04, + 3.532059246991336608e-04, + 3.532566365056590864e-04, + 3.533067707773886461e-04, + 3.533563274727233999e-04, + 3.534053065510050617e-04, + 3.534537079725133969e-04, + 3.535015316984707764e-04, + 3.535487776910439654e-04, + 3.535954459133410876e-04, + 3.536415363294086438e-04, + 3.536870489042422453e-04, + 3.537319836037737118e-04, + 3.537763403948739451e-04, + 3.538201192453627945e-04, + 3.538633201239988119e-04, + 3.539059430004808235e-04, + 3.539479878454530252e-04, + 3.539894546304947921e-04, + 3.540303433281365608e-04, + 3.540706539118411824e-04, + 3.541103863560202927e-04, + 3.541495406360240677e-04, + 3.541881167281462099e-04, + 3.542261146096160884e-04, + 3.542635342586109904e-04, + 3.543003756542492905e-04, + 3.543366387765876317e-04, + 3.543723236066291114e-04, + 3.544074301263111927e-04, + 3.544419583185197983e-04, + 3.544759081670758672e-04, + 3.545092796567476598e-04, + 3.545420727732433316e-04, + 3.545742875032061080e-04, + 3.546059238342288132e-04, + 3.546369817548427564e-04, + 3.546674612545176785e-04, + 3.546973623236669010e-04, + 3.547266849536462427e-04, + 3.547554291367470804e-04, + 3.547835948662065946e-04, + 3.548111821362022402e-04, + 3.548381909418500658e-04, + 3.548646212792124117e-04, + 3.548904731452811050e-04, + 3.549157465380014739e-04, + 3.549404414562509899e-04, + 3.549645578998514642e-04, + 3.549880958695631936e-04, + 3.550110553670901103e-04, + 3.550334363950714335e-04, + 3.550552389570898006e-04, + 3.550764630576680155e-04, + 3.550971087022687764e-04, + 3.551171758972936467e-04, + 3.551366646500853856e-04, + 3.551555749689267556e-04, + 3.551739068630392214e-04, + 3.551916603425856606e-04, + 3.552088354186673275e-04, + 3.552254321033246668e-04, + 3.552414504095380179e-04, + 3.552568903512288078e-04, + 3.552717519432545094e-04, + 3.552860352014147131e-04, + 3.552997401424477114e-04, + 3.553128667840275718e-04, + 3.553254151447725936e-04, + 3.553373852442355497e-04, + 3.553487771029095960e-04, + 3.553595907422286504e-04, + 3.553698261845614301e-04, + 3.553794834532158966e-04, + 3.553885625724401772e-04, + 3.553970635674212641e-04, + 3.554049864642800272e-04, + 3.554123312900801584e-04, + 3.554190980728205284e-04, + 3.554252868414365957e-04, + 3.554308976258058281e-04, + 3.554359304567411971e-04, + 3.554403853659917744e-04, + 3.554442623862433823e-04, + 3.554475615511226596e-04, + 3.554502828951912612e-04, + 3.554524264539477008e-04, + 3.554539922638261587e-04, + 3.554549803622035291e-04, + 3.554553907873842411e-04, + 3.554552235786155459e-04, + 3.554544787760786809e-04, + 3.554531564208940732e-04, + 3.554512565551139138e-04, + 3.554487792217279028e-04, + 3.554457244646641719e-04, + 3.554420923287827786e-04, + 3.554378828598815611e-04, + 3.554330961046942407e-04, + 3.554277321108876035e-04, + 3.554217909270654570e-04, + 3.554152726027667332e-04, + 3.554081771884632117e-04, + 3.554005047355635310e-04, + 3.553922552964099905e-04, + 3.553834289242783877e-04, + 3.553740256733811079e-04, + 3.553640455988620289e-04, + 3.553534887568012370e-04, + 3.553423552042110157e-04, + 3.553306449990376341e-04, + 3.553183582001619980e-04, + 3.553054948673984030e-04, + 3.552920550614900889e-04, + 3.552780388441185641e-04, + 3.552634462778969378e-04, + 3.552482774263680224e-04, + 3.552325323540120859e-04, + 3.552162111262366600e-04, + 3.551993138093844011e-04, + 3.551818404707288612e-04, + 3.551637911784763860e-04, + 3.551451660017651384e-04, + 3.551259650106623885e-04, + 3.551061882761690131e-04, + 3.550858358702172726e-04, + 3.550649078656670167e-04, + 3.550434043363129484e-04, + 3.550213253568780644e-04, + 3.549986710030157699e-04, + 3.549754413513110164e-04, + 3.549516364792765070e-04, + 3.549272564653582263e-04, + 3.549023013889279592e-04, + 3.548767713302883320e-04, + 3.548506663706722710e-04, + 3.548239865922405627e-04, + 3.547967320780818536e-04, + 3.547689029122166621e-04, + 3.547404991795920118e-04, + 3.547115209660811055e-04, + 3.546819683584881509e-04, + 3.546518414445442940e-04, + 3.546211403129095711e-04, + 3.545898650531670001e-04, + 3.545580157558328796e-04, + 3.545255925123455142e-04, + 3.544925954150726405e-04, + 3.544590245573062235e-04, + 3.544248800332690697e-04, + 3.543901619381052866e-04, + 3.543548703678862455e-04, + 3.543190054196113949e-04, + 3.542825671912020803e-04, + 3.542455557815079952e-04, + 3.542079712903007304e-04, + 3.541698138182796285e-04, + 3.541310834670667964e-04, + 3.540917803392088403e-04, + 3.540519045381783293e-04, + 3.540114561683694043e-04, + 3.539704353351001633e-04, + 3.539288421446133660e-04, + 3.538866767040731815e-04, + 3.538439391215662182e-04, + 3.538006295061074864e-04, + 3.537567479676271176e-04, + 3.537122946169814772e-04, + 3.536672695659461713e-04, + 3.536216729272213593e-04, + 3.535755048144299112e-04, + 3.535287653421104680e-04, + 3.534814546257264412e-04, + 3.534335727816622177e-04, + 3.533851199272199615e-04, + 3.533360961806240592e-04, + 3.532865016610194932e-04, + 3.532363364884709206e-04, + 3.531856007839597454e-04, + 3.531342946693880221e-04, + 3.530824182675762870e-04, + 3.530299717022671903e-04, + 3.529769550981181779e-04, + 3.529233685807045811e-04, + 3.528692122765216227e-04, + 3.528144863129791583e-04, + 3.527591908184087781e-04, + 3.527033259220544283e-04, + 3.526468917540815187e-04, + 3.525898884455669477e-04, + 3.525323161285098361e-04, + 3.524741749358165652e-04, + 3.524154650013191538e-04, + 3.523561864597582905e-04, + 3.522963394467926580e-04, + 3.522359240989924277e-04, + 3.521749405538446265e-04, + 3.521133889497531913e-04, + 3.520512694260332222e-04, + 3.519885821229129345e-04, + 3.519253271815321951e-04, + 3.518615047439503283e-04, + 3.517971149531306661e-04, + 3.517321579529586006e-04, + 3.516666338882236940e-04, + 3.516005429046330688e-04, + 3.515338851488021381e-04, + 3.514666607682550388e-04, + 3.513988699114341187e-04, + 3.513305127276900161e-04, + 3.512615893672781358e-04, + 3.511920999813713347e-04, + 3.511220447220480493e-04, + 3.510514237422943562e-04, + 3.509802371960120491e-04, + 3.509084852380082303e-04, + 3.508361680239964497e-04, + 3.507632857105996314e-04, + 3.506898384553484480e-04, + 3.506158264166860908e-04, + 3.505412497539573194e-04, + 3.504661086274118227e-04, + 3.503904031982137059e-04, + 3.503141336284264196e-04, + 3.502373000810204582e-04, + 3.501599027198766664e-04, + 3.500819417097777281e-04, + 3.500034172164100100e-04, + 3.499243294063659462e-04, + 3.498446784471407863e-04, + 3.497644645071392084e-04, + 3.496836877556639355e-04, + 3.496023483629199092e-04, + 3.495204465000219880e-04, + 3.494379823389766782e-04, + 3.493549560527060946e-04, + 3.492713678150262771e-04, + 3.491872178006548877e-04, + 3.491025061852111571e-04, + 3.490172331452166972e-04, + 3.489313988580905685e-04, + 3.488450035021605010e-04, + 3.487580472566429455e-04, + 3.486705303016611251e-04, + 3.485824528182348441e-04, + 3.484938149882792408e-04, + 3.484046169946156840e-04, + 3.483148590209608764e-04, + 3.482245412519245241e-04, + 3.481336638730169798e-04, + 3.480422270706471288e-04, + 3.479502310321151790e-04, + 3.478576759456264845e-04, + 3.477645620002720842e-04, + 3.476708893860471872e-04, + 3.475766582938355606e-04, + 3.474818689154188537e-04, + 3.473865214434735077e-04, + 3.472906160715708099e-04, + 3.471941529941697385e-04, + 3.470971324066319239e-04, + 3.469995545052021336e-04, + 3.469014194870204690e-04, + 3.468027275501254559e-04, + 3.467034788934445031e-04, + 3.466036737167905958e-04, + 3.465033122208701017e-04, + 3.464023946072816327e-04, + 3.463009210785197856e-04, + 3.461988918379588242e-04, + 3.460963070898643353e-04, + 3.459931670393982155e-04, + 3.458894718926007277e-04, + 3.457852218564049212e-04, + 3.456804171386360352e-04, + 3.455750579480032589e-04, + 3.454691444941000570e-04, + 3.453626769874068255e-04, + 3.452556556392917054e-04, + 3.451480806620163826e-04, + 3.450399522687126698e-04, + 3.449312706734102615e-04, + 3.448220360910160803e-04, + 3.447122487373192098e-04, + 3.446019088290025499e-04, + 3.444910165836274755e-04, + 3.443795722196346491e-04, + 3.442675759563472741e-04, + 3.441550280139789547e-04, + 3.440419286136109822e-04, + 3.439282779772235600e-04, + 3.438140763276623015e-04, + 3.436993238886624624e-04, + 3.435840208848346287e-04, + 3.434681675416653137e-04, + 3.433517640855320821e-04, + 3.432348107436855524e-04, + 3.431173077442483126e-04, + 3.429992553162248409e-04, + 3.428806536895031860e-04, + 3.427615030948351804e-04, + 3.426418037638665815e-04, + 3.425215559291028104e-04, + 3.424007598239365451e-04, + 3.422794156826261991e-04, + 3.421575237403097448e-04, + 3.420350842330066653e-04, + 3.419120973975975711e-04, + 3.417885634718400840e-04, + 3.416644826943730654e-04, + 3.415398553046969919e-04, + 3.414146815431847435e-04, + 3.412889616510938009e-04, + 3.411626958705428806e-04, + 3.410358844445194704e-04, + 3.409085276168831360e-04, + 3.407806256323651960e-04, + 3.406521787365727875e-04, + 3.405231871759689709e-04, + 3.403936511978905110e-04, + 3.402635710505468470e-04, + 3.401329469830025824e-04, + 3.400017792452093607e-04, + 3.398700680879661296e-04, + 3.397378137629498778e-04, + 3.396050165226942763e-04, + 3.394716766206078932e-04, + 3.393377943109513167e-04, + 3.392033698488665372e-04, + 3.390684034903427408e-04, + 3.389328954922448236e-04, + 3.387968461122925750e-04, + 3.386602556090643102e-04, + 3.385231242420158972e-04, + 3.383854522714536527e-04, + 3.382472399585446411e-04, + 3.381084875653138019e-04, + 3.379691953546576648e-04, + 3.378293635903144255e-04, + 3.376889925369042241e-04, + 3.375480824598825784e-04, + 3.374066336255810415e-04, + 3.372646463011757059e-04, + 3.371221207547005390e-04, + 3.369790572550572494e-04, + 3.368354560719986446e-04, + 3.366913174761232636e-04, + 3.365466417388985254e-04, + 3.364014291326369302e-04, + 3.362556799305014264e-04, + 3.361093944065255226e-04, + 3.359625728355828756e-04, + 3.358152154934004635e-04, + 3.356673226565559296e-04, + 3.355188946024792083e-04, + 3.353699316094637469e-04, + 3.352204339566364731e-04, + 3.350704019239755761e-04, + 3.349198357923202640e-04, + 3.347687358433449061e-04, + 3.346171023595890105e-04, + 3.344649356244220424e-04, + 3.343122359220749738e-04, + 3.341590035376149678e-04, + 3.340052387569577381e-04, + 3.338509418668676038e-04, + 3.336961131549616086e-04, + 3.335407529096885422e-04, + 3.333848614203412998e-04, + 3.332284389770691336e-04, + 3.330714858708466990e-04, + 3.329140023935101586e-04, + 3.327559888377292093e-04, + 3.325974454970109318e-04, + 3.324383726657036391e-04, + 3.322787706390079357e-04, + 3.321186397129433782e-04, + 3.319579801843958546e-04, + 3.317967923510661940e-04, + 3.316350765115092512e-04, + 3.314728329651066936e-04, + 3.313100620120778433e-04, + 3.311467639534905190e-04, + 3.309829390912425503e-04, + 3.308185877280626452e-04, + 3.306537101675120164e-04, + 3.304883067140015115e-04, + 3.303223776727545334e-04, + 3.301559233498532276e-04, + 3.299889440521892045e-04, + 3.298214400875027342e-04, + 3.296534117643530387e-04, + 3.294848593921388918e-04, + 3.293157832810862055e-04, + 3.291461837422588713e-04, + 3.289760610875318183e-04, + 3.288054156296324297e-04, + 3.286342476820963070e-04, + 3.284625575592892794e-04, + 3.282903455764209569e-04, + 3.281176120495158896e-04, + 3.279443572954217540e-04, + 3.277705816318114132e-04, + 3.275962853771864939e-04, + 3.274214688508839469e-04, + 3.272461323730446042e-04, + 3.270702762646384961e-04, + 3.268939008474688619e-04, + 3.267170064441396785e-04, + 3.265395933781062385e-04, + 3.263616619736157899e-04, + 3.261832125557562710e-04, + 3.260042454504195018e-04, + 3.258247609843314876e-04, + 3.256447594850166399e-04, + 3.254642412808455361e-04, + 3.252832067009800042e-04, + 3.251016560754145393e-04, + 3.249195897349522891e-04, + 3.247370080112041858e-04, + 3.245539112366181657e-04, + 3.243702997444436616e-04, + 3.241861738687406018e-04, + 3.240015339443822829e-04, + 3.238163803070636098e-04, + 3.236307132932755089e-04, + 3.234445332403468863e-04, + 3.232578404863874363e-04, + 3.230706353703381110e-04, + 3.228829182319394617e-04, + 3.226946894117332649e-04, + 3.225059492510929889e-04, + 3.223166980921849246e-04, + 3.221269362779813589e-04, + 3.219366641522582433e-04, + 3.217458820596109156e-04, + 3.215545903454197839e-04, + 3.213627893558935870e-04, + 3.211704794380330192e-04, + 3.209776609396388074e-04, + 3.207843342093130668e-04, + 3.205904995964658057e-04, + 3.203961574513191539e-04, + 3.202013081248765718e-04, + 3.200059519689456180e-04, + 3.198100893361465694e-04, + 3.196137205798757204e-04, + 3.194168460543593221e-04, + 3.192194661145918372e-04, + 3.190215811163854337e-04, + 3.188231914163341518e-04, + 3.186242973718320646e-04, + 3.184248993410674234e-04, + 3.182249976830414141e-04, + 3.180245927575220790e-04, + 3.178236849250806913e-04, + 3.176222745470894788e-04, + 3.174203619856933800e-04, + 3.172179476038589421e-04, + 3.170150317653129546e-04, + 3.168116148345919434e-04, + 3.166076971770079101e-04, + 3.164032791586766295e-04, + 3.161983611464808412e-04, + 3.159929435081215319e-04, + 3.157870266120562991e-04, + 3.155806108275486274e-04, + 3.153736965246368811e-04, + 3.151662840741397786e-04, + 3.149583738476793783e-04, + 3.147499662176518587e-04, + 3.145410615572288198e-04, + 3.143316602403661191e-04, + 3.141217626418132502e-04, + 3.139113691370794073e-04, + 3.137004801024835749e-04, + 3.134890959150939756e-04, + 3.132772169527801116e-04, + 3.130648435941733540e-04, + 3.128519762186925839e-04, + 3.126386152065317248e-04, + 3.124247609386648916e-04, + 3.122104137968283394e-04, + 3.119955741635502245e-04, + 3.117802424221104347e-04, + 3.115644189565959922e-04, + 3.113481041518319356e-04, + 3.111312983934420352e-04, + 3.109140020678041781e-04, + 3.106962155620690709e-04, + 3.104779392641599683e-04, + 3.102591735627868762e-04, + 3.100399188474027502e-04, + 3.098201755082341784e-04, + 3.095999439362886454e-04, + 3.093792245233179948e-04, + 3.091580176618707420e-04, + 3.089363237452290821e-04, + 3.087141431674650513e-04, + 3.084914763233961832e-04, + 3.082683236086094158e-04, + 3.080446854194519835e-04, + 3.078205621530522886e-04, + 3.075959542072735512e-04, + 3.073708619807446552e-04, + 3.071452858728698516e-04, + 3.069192262837864204e-04, + 3.066926836144203989e-04, + 3.064656582664394727e-04, + 3.062381506422649563e-04, + 3.060101611450742327e-04, + 3.057816901788131133e-04, + 3.055527381481594083e-04, + 3.053233054585774626e-04, + 3.050933925162534286e-04, + 3.048629997281492596e-04, + 3.046321275019631906e-04, + 3.044007762461401465e-04, + 3.041689463699009076e-04, + 3.039366382832019934e-04, + 3.037038523967410843e-04, + 3.034705891219668873e-04, + 3.032368488710900328e-04, + 3.030026320570418743e-04, + 3.027679390935371557e-04, + 3.025327703949993096e-04, + 3.022971263766211728e-04, + 3.020610074543226479e-04, + 3.018244140447768329e-04, + 3.015873465653992874e-04, + 3.013498054343494961e-04, + 3.011117910705145523e-04, + 3.008733038935402192e-04, + 3.006343443237878338e-04, + 3.003949127823933953e-04, + 3.001550096911956831e-04, + 2.999146354727935562e-04, + 2.996737905505111508e-04, + 2.994324753484062826e-04, + 2.991906902912777654e-04, + 2.989484358046732714e-04, + 2.987057123148500288e-04, + 2.984625202488013851e-04, + 2.982188600342706303e-04, + 2.979747320997055689e-04, + 2.977301368743202653e-04, + 2.974850747880243540e-04, + 2.972395462714808815e-04, + 2.969935517560606613e-04, + 2.967470916738842871e-04, + 2.965001664577710666e-04, + 2.962527765413074349e-04, + 2.960049223587639584e-04, + 2.957566043451637485e-04, + 2.955078229362387678e-04, + 2.952585785684383956e-04, + 2.950088716789610863e-04, + 2.947587027057098092e-04, + 2.945080720873052209e-04, + 2.942569802630866957e-04, + 2.940054276731298897e-04, + 2.937534147582013667e-04, + 2.935009419598232170e-04, + 2.932480097201968917e-04, + 2.929946184822696106e-04, + 2.927407686896830790e-04, + 2.924864607867926243e-04, + 2.922316952186921322e-04, + 2.919764724311747447e-04, + 2.917207928707383352e-04, + 2.914646569845933148e-04, + 2.912080652206665895e-04, + 2.909510180276120230e-04, + 2.906935158547583947e-04, + 2.904355591521727174e-04, + 2.901771483706118275e-04, + 2.899182839615387563e-04, + 2.896589663771305910e-04, + 2.893991960702837324e-04, + 2.891389734945744847e-04, + 2.888782991042858892e-04, + 2.886171733544227406e-04, + 2.883555967006626352e-04, + 2.880935695994253057e-04, + 2.878310925077902762e-04, + 2.875681658835665217e-04, + 2.873047901852448724e-04, + 2.870409658720144384e-04, + 2.867766934037662969e-04, + 2.865119732411069899e-04, + 2.862468058453103859e-04, + 2.859811916783503143e-04, + 2.857151312029120038e-04, + 2.854486248823468169e-04, + 2.851816731807378983e-04, + 2.849142765628201609e-04, + 2.846464354940492409e-04, + 2.843781504405472338e-04, + 2.841094218691503446e-04, + 2.838402502473506123e-04, + 2.835706360433740809e-04, + 2.833005797260886960e-04, + 2.830300817650804705e-04, + 2.827591426306020391e-04, + 2.824877627935849637e-04, + 2.822159427256742113e-04, + 2.819436828991810995e-04, + 2.816709837870916451e-04, + 2.813978458630746952e-04, + 2.811242696014837708e-04, + 2.808502554773709982e-04, + 2.805758039664392424e-04, + 2.803009155450731683e-04, + 2.800255906903526860e-04, + 2.797498298800129429e-04, + 2.794736335924793980e-04, + 2.791970023068477097e-04, + 2.789199365028940903e-04, + 2.786424366610498814e-04, + 2.783645032624411809e-04, + 2.780861367888369648e-04, + 2.778073377227201018e-04, + 2.775281065471985574e-04, + 2.772484437460807460e-04, + 2.769683498038251696e-04, + 2.766878252055581444e-04, + 2.764068704370783005e-04, + 2.761254859848679116e-04, + 2.758436723360431302e-04, + 2.755614299783911759e-04, + 2.752787594003801470e-04, + 2.749956610911109909e-04, + 2.747121355403872719e-04, + 2.744281832386318508e-04, + 2.741438046769577915e-04, + 2.738590003471168613e-04, + 2.735737707415224077e-04, + 2.732881163532473526e-04, + 2.730020376760426237e-04, + 2.727155352042766020e-04, + 2.724286094330022876e-04, + 2.721412608579092704e-04, + 2.718534899753339206e-04, + 2.715652972822954394e-04, + 2.712766832764456596e-04, + 2.709876484560804302e-04, + 2.706981933201455253e-04, + 2.704083183682550210e-04, + 2.701180241006374654e-04, + 2.698273110182149701e-04, + 2.695361796225092654e-04, + 2.692446304157214421e-04, + 2.689526639006754654e-04, + 2.686602805808355220e-04, + 2.683674809603368654e-04, + 2.680742655439402253e-04, + 2.677806348370402102e-04, + 2.674865893456720837e-04, + 2.671921295765140414e-04, + 2.668972560369059673e-04, + 2.666019692347895861e-04, + 2.663062696787522107e-04, + 2.660101578780350905e-04, + 2.657136343424892845e-04, + 2.654166995826117109e-04, + 2.651193541095530075e-04, + 2.648215984350638097e-04, + 2.645234330715302037e-04, + 2.642248585319920498e-04, + 2.639258753300838928e-04, + 2.636264839801147602e-04, + 2.633266849969766545e-04, + 2.630264788962218578e-04, + 2.627258661940070402e-04, + 2.624248474071170590e-04, + 2.621234230529644700e-04, + 2.618215936496070921e-04, + 2.615193597156926586e-04, + 2.612167217704957343e-04, + 2.609136803339332194e-04, + 2.606102359265075378e-04, + 2.603063890693868673e-04, + 2.600021402843113571e-04, + 2.596974900936714604e-04, + 2.593924390204479786e-04, + 2.590869875882629647e-04, + 2.587811363213197123e-04, + 2.584748857444829325e-04, + 2.581682363831825310e-04, + 2.578611887634940018e-04, + 2.575537434120843796e-04, + 2.572459008562225395e-04, + 2.569376616238216440e-04, + 2.566290262433815173e-04, + 2.563199952440053421e-04, + 2.560105691553993886e-04, + 2.557007485078848321e-04, + 2.553905338324062102e-04, + 2.550799256604789470e-04, + 2.547689245242281677e-04, + 2.544575309564007875e-04, + 2.541457454903255043e-04, + 2.538335686599219065e-04, + 2.535210009997464426e-04, + 2.532080430449299715e-04, + 2.528946953311889839e-04, + 2.525809583948637662e-04, + 2.522668327728564927e-04, + 2.519523190027102635e-04, + 2.516374176225149965e-04, + 2.513221291709878745e-04, + 2.510064541874174006e-04, + 2.506903932116826429e-04, + 2.503739467842601191e-04, + 2.500571154462364817e-04, + 2.497398997392507843e-04, + 2.494223002055376325e-04, + 2.491043173879391105e-04, + 2.487859518298462342e-04, + 2.484672040752856329e-04, + 2.481480746688169295e-04, + 2.478285641556179594e-04, + 2.475086730814280659e-04, + 2.471884019925665865e-04, + 2.468677514359402794e-04, + 2.465467219590548702e-04, + 2.462253141099616550e-04, + 2.459035284372934420e-04, + 2.455813654902809767e-04, + 2.452588258186958587e-04, + 2.449359099729257858e-04, + 2.446126185039109108e-04, + 2.442889519631566897e-04, + 2.439649109027397359e-04, + 2.436404958753150851e-04, + 2.433157074341283645e-04, + 2.429905461329583583e-04, + 2.426650125261591007e-04, + 2.423391071686716134e-04, + 2.420128306159834912e-04, + 2.416861834241384706e-04, + 2.413591661497798519e-04, + 2.410317793500941477e-04, + 2.407040235828220064e-04, + 2.403758994062649341e-04, + 2.400474073792917458e-04, + 2.397185480613527682e-04, + 2.393893220124207238e-04, + 2.390597297930316866e-04, + 2.387297719643019956e-04, + 2.383994490878717676e-04, + 2.380687617259601651e-04, + 2.377377104413311889e-04, + 2.374062957973082884e-04, + 2.370745183577460907e-04, + 2.367423786870778615e-04, + 2.364098773502515643e-04, + 2.360770149128135612e-04, + 2.357437919408071039e-04, + 2.354102090008599105e-04, + 2.350762666601237210e-04, + 2.347419654862945449e-04, + 2.344073060476190040e-04, + 2.340722889129102696e-04, + 2.337369146514858300e-04, + 2.334011838332121860e-04, + 2.330650970285185668e-04, + 2.327286548083348046e-04, + 2.323918577441824891e-04, + 2.320547064080680927e-04, + 2.317172013725703563e-04, + 2.313793432107836407e-04, + 2.310411324963330775e-04, + 2.307025698033883391e-04, + 2.303636557066712548e-04, + 2.300243907813914366e-04, + 2.296847756033258594e-04, + 2.293448107487588235e-04, + 2.290044967944956423e-04, + 2.286638343179070681e-04, + 2.283228238968669228e-04, + 2.279814661097682256e-04, + 2.276397615355270961e-04, + 2.272977107535932714e-04, + 2.269553143439590229e-04, + 2.266125728871022367e-04, + 2.262694869640287506e-04, + 2.259260571562871545e-04, + 2.255822840459208135e-04, + 2.252381682154850804e-04, + 2.248937102480881426e-04, + 2.245489107273324482e-04, + 2.242037702373276349e-04, + 2.238582893626967104e-04, + 2.235124686885832889e-04, + 2.231663088006645478e-04, + 2.228198102850930328e-04, + 2.224729737285367737e-04, + 2.221257997181963061e-04, + 2.217782888417489434e-04, + 2.214304416873945846e-04, + 2.210822588438621109e-04, + 2.207337409003462579e-04, + 2.203848884465552127e-04, + 2.200357020727210754e-04, + 2.196861823695402019e-04, + 2.193363299282638697e-04, + 2.189861453405893971e-04, + 2.186356291987513788e-04, + 2.182847820954597509e-04, + 2.179336046239204448e-04, + 2.175820973778446030e-04, + 2.172302609514594753e-04, + 2.168780959394491675e-04, + 2.165256029369975750e-04, + 2.161727825398045925e-04, + 2.158196353440220100e-04, + 2.154661619463450197e-04, + 2.151123629439047173e-04, + 2.147582389343581448e-04, + 2.144037905158192002e-04, + 2.140490182869089167e-04, + 2.136939228467275452e-04, + 2.133385047948666154e-04, + 2.129827647313760309e-04, + 2.126267032568199050e-04, + 2.122703209722199115e-04, + 2.119136184790692710e-04, + 2.115565963793789104e-04, + 2.111992552756144440e-04, + 2.108415957707110270e-04, + 2.104836184680782343e-04, + 2.101253239716097370e-04, + 2.097667128856966926e-04, + 2.094077858151620417e-04, + 2.090485433653097860e-04, + 2.086889861419376181e-04, + 2.083291147512894884e-04, + 2.079689298000705672e-04, + 2.076084318954921841e-04, + 2.072476216452103816e-04, + 2.068864996573291674e-04, + 2.065250665404493578e-04, + 2.061633229035967491e-04, + 2.058012693563138413e-04, + 2.054389065085502253e-04, + 2.050762349707546315e-04, + 2.047132553538129405e-04, + 2.043499682690680787e-04, + 2.039863743283292061e-04, + 2.036224741438850798e-04, + 2.032582683284418475e-04, + 2.028937574951648708e-04, + 2.025289422577007073e-04, + 2.021638232301039813e-04, + 2.017984010269400033e-04, + 2.014326762631671341e-04, + 2.010666495542324931e-04, + 2.007003215160083152e-04, + 2.003336927648050698e-04, + 1.999667639174203856e-04, + 1.995995355910715316e-04, + 1.992320084034136590e-04, + 1.988641829725431079e-04, + 1.984960599170241331e-04, + 1.981276398558197318e-04, + 1.977589234083827708e-04, + 1.973899111945797401e-04, + 1.970206038347083980e-04, + 1.966510019495008616e-04, + 1.962811061601349633e-04, + 1.959109170882473972e-04, + 1.955404353558679346e-04, + 1.951696615854664246e-04, + 1.947985963999687860e-04, + 1.944272404227081639e-04, + 1.940555942774368017e-04, + 1.936836585883795737e-04, + 1.933114339801614246e-04, + 1.929389210778266689e-04, + 1.925661205068449533e-04, + 1.921930328931171659e-04, + 1.918196588629941118e-04, + 1.914459990432057957e-04, + 1.910720540609137075e-04, + 1.906978245437219359e-04, + 1.903233111196216294e-04, + 1.899485144170463726e-04, + 1.895734350648397410e-04, + 1.891980736922669562e-04, + 1.888224309289857484e-04, + 1.884465074050992650e-04, + 1.880703037510824533e-04, + 1.876938205978799642e-04, + 1.873170585767884079e-04, + 1.869400183195566692e-04, + 1.865627004583162753e-04, + 1.861851056255978479e-04, + 1.858072344543806246e-04, + 1.854290875780237205e-04, + 1.850506656302827160e-04, + 1.846719692453154308e-04, + 1.842929990577083779e-04, + 1.839137557024055319e-04, + 1.835342398148105962e-04, + 1.831544520306680119e-04, + 1.827743929861611863e-04, + 1.823940633178379813e-04, + 1.820134636626648966e-04, + 1.816325946579973078e-04, + 1.812514569415915556e-04, + 1.808700511515714442e-04, + 1.804883779264858661e-04, + 1.801064379052484666e-04, + 1.797242317271558853e-04, + 1.793417600319324799e-04, + 1.789590234596663576e-04, + 1.785760226508228195e-04, + 1.781927582462531430e-04, + 1.778092308871993517e-04, + 1.774254412153128640e-04, + 1.770413898725857005e-04, + 1.766570775013978092e-04, + 1.762725047445342231e-04, + 1.758876722451348891e-04, + 1.755025806467070001e-04, + 1.751172305931778775e-04, + 1.747316227288243083e-04, + 1.743457576982894582e-04, + 1.739596361465897028e-04, + 1.735732587191225415e-04, + 1.731866260616809095e-04, + 1.727997388203783677e-04, + 1.724125976417391457e-04, + 1.720252031726302434e-04, + 1.716375560602856364e-04, + 1.712496569523129974e-04, + 1.708615064967111794e-04, + 1.704731053417999590e-04, + 1.700844541362693681e-04, + 1.696955535291973390e-04, + 1.693064041699792312e-04, + 1.689170067084291231e-04, + 1.685273617946609021e-04, + 1.681374700791870083e-04, + 1.677473322128507263e-04, + 1.673569488468419327e-04, + 1.669663206327472681e-04, + 1.665754482224796366e-04, + 1.661843322682969083e-04, + 1.657929734228054972e-04, + 1.654013723389895262e-04, + 1.650095296701365323e-04, + 1.646174460699425255e-04, + 1.642251221923895826e-04, + 1.638325586918483315e-04, + 1.634397562229979910e-04, + 1.630467154408797136e-04, + 1.626534370009019256e-04, + 1.622599215587698803e-04, + 1.618661697705381613e-04, + 1.614721822926259965e-04, + 1.610779597817629122e-04, + 1.606835028950087641e-04, + 1.602888122898001413e-04, + 1.598938886238825217e-04, + 1.594987325553262646e-04, + 1.591033447425337663e-04, + 1.587077258442464529e-04, + 1.583118765195628598e-04, + 1.579157974278664505e-04, + 1.575194892288768456e-04, + 1.571229525826668444e-04, + 1.567261881496087030e-04, + 1.563291965903899363e-04, + 1.559319785660661728e-04, + 1.555345347379875377e-04, + 1.551368657678097113e-04, + 1.547389723175415799e-04, + 1.543408550494684199e-04, + 1.539425146262550330e-04, + 1.535439517108204389e-04, + 1.531451669664441275e-04, + 1.527461610566934987e-04, + 1.523469346454411010e-04, + 1.519474883969145049e-04, + 1.515478229756278897e-04, + 1.511479390463957859e-04, + 1.507478372743428058e-04, + 1.503475183249266287e-04, + 1.499469828638684489e-04, + 1.495462315572565720e-04, + 1.491452650714233843e-04, + 1.487440840730473767e-04, + 1.483426892290838368e-04, + 1.479410812067810579e-04, + 1.475392606737306188e-04, + 1.471372282977976697e-04, + 1.467349847471359210e-04, + 1.463325306901960463e-04, + 1.459298667957524890e-04, + 1.455269937328272428e-04, + 1.451239121707919568e-04, + 1.447206227792832863e-04, + 1.443171262282192367e-04, + 1.439134231878094370e-04, + 1.435095143285609128e-04, + 1.431054003212956503e-04, + 1.427010818370782260e-04, + 1.422965595472678213e-04, + 1.418918341235349192e-04, + 1.414869062378067686e-04, + 1.410817765622848134e-04, + 1.406764457694960563e-04, + 1.402709145322209050e-04, + 1.398651835235097335e-04, + 1.394592534166919627e-04, + 1.390531248853822937e-04, + 1.386467986034976764e-04, + 1.382402752451856163e-04, + 1.378335554848758094e-04, + 1.374266399972979777e-04, + 1.370195294574066524e-04, + 1.366122245404918713e-04, + 1.362047259220477730e-04, + 1.357970342778824812e-04, + 1.353891502840352172e-04, + 1.349810746168466106e-04, + 1.345728079528764082e-04, + 1.341643509690119214e-04, + 1.337557043423389790e-04, + 1.333468687502503745e-04, + 1.329378448703719237e-04, + 1.325286333805788088e-04, + 1.321192349590500866e-04, + 1.317096502841945296e-04, + 1.312998800346668342e-04, + 1.308899248893769180e-04, + 1.304797855275148836e-04, + 1.300694626284781060e-04, + 1.296589568719791106e-04, + 1.292482689379155503e-04, + 1.288373995064812007e-04, + 1.284263492580801187e-04, + 1.280151188733905825e-04, + 1.276037090333276606e-04, + 1.271921204190596094e-04, + 1.267803537119716886e-04, + 1.263684095937259004e-04, + 1.259562887462000575e-04, + 1.255439918515014711e-04, + 1.251315195920222180e-04, + 1.247188726503652525e-04, + 1.243060517093599914e-04, + 1.238930574520719368e-04, + 1.234798905618106715e-04, + 1.230665517221447944e-04, + 1.226530416168308780e-04, + 1.222393609298642631e-04, + 1.218255103454986017e-04, + 1.214114905481880282e-04, + 1.209973022226061063e-04, + 1.205829460536967995e-04, + 1.201684227266041878e-04, + 1.197537329266855057e-04, + 1.193388773395218886e-04, + 1.189238566509253259e-04, + 1.185086715469562248e-04, + 1.180933227138394794e-04, + 1.176778108380646106e-04, + 1.172621366063104410e-04, + 1.168463007054633635e-04, + 1.164303038226709825e-04, + 1.160141466452666806e-04, + 1.155978298607886868e-04, + 1.151813541569847384e-04, + 1.147647202218430489e-04, + 1.143479287435143538e-04, + 1.139309804104224176e-04, + 1.135138759111327102e-04, + 1.130966159344647299e-04, + 1.126792011694129520e-04, + 1.122616323051685121e-04, + 1.118439100311700016e-04, + 1.114260350370304466e-04, + 1.110080080125538417e-04, + 1.105898296477432274e-04, + 1.101715006328279038e-04, + 1.097530216581879293e-04, + 1.093343934144632725e-04, + 1.089156165924240336e-04, + 1.084966918830810597e-04, + 1.080776199775999272e-04, + 1.076584015673554500e-04, + 1.072390373439415320e-04, + 1.068195279990941891e-04, + 1.063998742247460706e-04, + 1.059800767130454060e-04, + 1.055601361562975664e-04, + 1.051400532469833467e-04, + 1.047198286778129589e-04, + 1.042994631416513309e-04, + 1.038789573315351686e-04, + 1.034583119406803697e-04, + 1.030375276624917539e-04, + 1.026166051905794347e-04, + 1.021955452186831418e-04, + 1.017743484407278412e-04, + 1.013530155508398484e-04, + 1.009315472432727374e-04, + 1.005099442125170615e-04, + 1.000882071531683249e-04, + 9.966633676003899421e-05, + 9.924433372807212809e-05, + 9.882219875241659397e-05, + 9.839993252833922042e-05, + 9.797753575133861137e-05, + 9.755500911701094893e-05, + 9.713235332116260134e-05, + 9.670956905973329373e-05, + 9.628665702881349596e-05, + 9.586361792470043529e-05, + 9.544045244382156517e-05, + 9.501716128275146530e-05, + 9.459374513822077274e-05, + 9.417020470714362575e-05, + 9.374654068653995363e-05, + 9.332275377364836926e-05, + 9.289884466579335432e-05, + 9.247481406049632227e-05, + 9.205066265539934471e-05, + 9.162639114828359640e-05, + 9.120200023712321297e-05, + 9.077749062001063004e-05, + 9.035286299516310203e-05, + 8.992811806097964985e-05, + 8.950325651597259354e-05, + 8.907827905878639026e-05, + 8.865318638825202063e-05, + 8.822797920331167728e-05, + 8.780265820303456714e-05, + 8.737722408662763147e-05, + 8.695167755344137346e-05, + 8.652601930299013279e-05, + 8.610025003487274914e-05, + 8.567437044883025531e-05, + 8.524838124476215382e-05, + 8.482228312265053627e-05, + 8.439607678267263709e-05, + 8.396976292506583685e-05, + 8.354334225024140858e-05, + 8.311681545870729549e-05, + 8.269018325109536510e-05, + 8.226344632816926970e-05, + 8.183660539084245766e-05, + 8.140966114010265878e-05, + 8.098261427706456288e-05, + 8.055546550299092119e-05, + 8.012821551921319623e-05, + 7.970086502723560458e-05, + 7.927341472864865178e-05, + 7.884586532514729267e-05, + 7.841821751853815493e-05, + 7.799047201076804003e-05, + 7.756262950384582001e-05, + 7.713469069995663107e-05, + 7.670665630132596886e-05, + 7.627852701033399044e-05, + 7.585030352943737046e-05, + 7.542198656118813914e-05, + 7.499357680828863779e-05, + 7.456507497351459463e-05, + 7.413648175973361050e-05, + 7.370779786991242294e-05, + 7.327902400714554274e-05, + 7.285016087457622910e-05, + 7.242120917551191658e-05, + 7.199216961328745647e-05, + 7.156304289138005581e-05, + 7.113382971332109109e-05, + 7.070453078276235301e-05, + 7.027514680343675769e-05, + 6.984567847917585656e-05, + 6.941612651387119807e-05, + 6.898649161153900037e-05, + 6.855677447625318827e-05, + 6.812697581216283535e-05, + 6.769709632354787838e-05, + 6.726713671474296571e-05, + 6.683709769015377445e-05, + 6.640697995426630756e-05, + 6.597678421165535060e-05, + 6.554651116700166988e-05, + 6.511616152501568467e-05, + 6.468573599049216513e-05, + 6.425523526832959895e-05, + 6.382466006345155951e-05, + 6.339401108092089954e-05, + 6.296328902580388700e-05, + 6.253249460328519826e-05, + 6.210162851858881206e-05, + 6.167069147700641552e-05, + 6.123968418390584743e-05, + 6.080860734474865555e-05, + 6.037746166500262854e-05, + 5.994624785024699751e-05, + 5.951496660609331636e-05, + 5.908361863820455048e-05, + 5.865220465235098095e-05, + 5.822072535433214200e-05, + 5.778918144999546245e-05, + 5.735757364524414660e-05, + 5.692590264606487549e-05, + 5.649416915845019844e-05, + 5.606237388851224548e-05, + 5.563051754234754766e-05, + 5.519860082615058697e-05, + 5.476662444613621480e-05, + 5.433458910855746681e-05, + 5.390249551976246319e-05, + 5.347034438611568879e-05, + 5.303813641401691927e-05, + 5.260587230990856650e-05, + 5.217355278030491822e-05, + 5.174117853171252365e-05, + 5.130875027074517316e-05, + 5.087626870398837979e-05, + 5.044373453811275965e-05, + 5.001114847978735677e-05, + 4.957851123573541174e-05, + 4.914582351274313695e-05, + 4.871308601758157954e-05, + 4.828029945706327090e-05, + 4.784746453806010253e-05, + 4.741458196742551412e-05, + 4.698165245210832809e-05, + 4.654867669901772569e-05, + 4.611565541513643773e-05, + 4.568258930744335290e-05, + 4.524947908294134108e-05, + 4.481632544866533742e-05, + 4.438312911170032657e-05, + 4.394989077910382895e-05, + 4.351661115796175079e-05, + 4.308329095540725597e-05, + 4.264993087854165312e-05, + 4.221653163454974804e-05, + 4.178309393056326804e-05, + 4.134961847377541466e-05, + 4.091610597135332799e-05, + 4.048255713051343184e-05, + 4.004897265843394545e-05, + 3.961535326236953112e-05, + 3.918169964951458980e-05, + 3.874801252711868803e-05, + 3.831429260240734337e-05, + 3.788054058260078113e-05, + 3.744675717497039419e-05, + 3.701294308676043648e-05, + 3.657909902520637313e-05, + 3.614522569754326269e-05, + 3.571132381103311290e-05, + 3.527739407288749579e-05, + 3.484343719038128045e-05, + 3.440945387071676220e-05, + 3.397544482113840504e-05, + 3.354141074885429798e-05, + 3.310735236105445776e-05, + 3.267327036496745125e-05, + 3.223916546778208902e-05, + 3.180503837665601757e-05, + 3.137088979877236217e-05, + 3.093672044125153376e-05, + 3.050253101126657791e-05, + 3.006832221590613507e-05, + 2.963409476228921348e-05, + 2.919984935748755358e-05, + 2.876558670855257718e-05, + 2.833130752252416610e-05, + 2.789701250644912074e-05, + 2.746270236730235888e-05, + 2.702837781204396508e-05, + 2.659403954763722567e-05, + 2.615968828097022740e-05, + 2.572532471897090144e-05, + 2.529094956846993282e-05, + 2.485656353631644137e-05, + 2.442216732929885196e-05, + 2.398776165417301255e-05, + 2.355334721767076618e-05, + 2.311892472651796569e-05, + 2.268449488735604862e-05, + 2.225005840679906621e-05, + 2.181561599145165751e-05, + 2.138116834783053614e-05, + 2.094671618246989847e-05, + 2.051226020183316283e-05, + 2.007780111233105190e-05, + 1.964333962033027993e-05, + 1.920887643218143029e-05, + 1.877441225414017121e-05, + 1.833994779248258441e-05, + 1.790548375336821005e-05, + 1.747102084295524998e-05, + 1.703655976732190887e-05, + 1.660210123248458507e-05, + 1.616764594445490647e-05, + 1.573319460916111563e-05, + 1.529874793246608451e-05, + 1.486430662017620658e-05, + 1.442987137806897119e-05, + 1.399544291181457231e-05, + 1.356102192709090175e-05, + 1.312660912944674149e-05, + 1.269220522441703805e-05, + 1.225781091743431814e-05, + 1.182342691389564656e-05, + 1.138905391912246504e-05, + 1.095469263837901685e-05, + 1.052034377683236347e-05, + 1.008600803961906644e-05, + 9.651686131756980684e-06, + 9.217378758260036007e-06, + 8.783086624001890151e-06, + 8.348810433830696702e-06, + 7.914550892490674911e-06, + 7.480308704649938971e-06, + 7.046084574909072522e-06, + 6.611879207819323772e-06, + 6.177693307804006767e-06, + 5.743527579215486379e-06, + 5.309382726353403066e-06, + 4.875259453386050429e-06, + 4.441158464465386191e-06, + 4.007080463590452371e-06, + 3.573026154722316807e-06, + 3.138996241695847049e-06, + 2.704991428296004315e-06, + 2.271012418169613148e-06, + 1.837059914940331104e-06, + 1.403134622072032293e-06, + 9.692372429838185673e-07, + 5.353684809714324419e-07, + 1.015290392255042759e-07, +-3.322803791115407990e-07, +-7.660590710240332202e-07, +-1.199806333604834392e-06, +-1.633521464046797560e-06, +-2.067203759614886269e-06, +-2.500852517724696907e-06, +-2.934467035827524914e-06, +-3.368046611546882986e-06, +-3.801590542563636843e-06, +-4.235098126694432858e-06, +-4.668568661873546986e-06, +-5.102001446095996762e-06, +-5.535395777495979092e-06, +-5.968750954328722576e-06, +-6.402066274961957031e-06, +-6.835341037867304256e-06, +-7.268574541602158301e-06, +-7.701766084897783667e-06, +-8.134914966554118054e-06, +-8.568020485518217769e-06, +-9.001081940856437785e-06, +-9.434098631745860608e-06, +-9.867069857456130811e-06, +-1.029999491742784115e-05, +-1.073287311121569499e-05, +-1.116570373847042039e-05, +-1.159848609901702756e-05, +-1.203121949274015442e-05, +-1.246390321972028308e-05, +-1.289653658011916507e-05, +-1.332911887425796691e-05, +-1.376164940258967548e-05, +-1.419412746569040573e-05, +-1.462655236424123526e-05, +-1.505892339910663447e-05, +-1.549123987127761030e-05, +-1.592350108185358823e-05, +-1.635570633212074418e-05, +-1.678785492343719932e-05, +-1.721994615736942126e-05, +-1.765197933557743405e-05, +-1.808395375990294016e-05, +-1.851586873229292148e-05, +-1.894772355488810343e-05, +-1.937951752990777884e-05, +-1.981124995978638011e-05, +-2.024292014705877742e-05, +-2.067452739443825660e-05, +-2.110607100479876529e-05, +-2.153755028111802621e-05, +-2.196896452655565057e-05, +-2.240031304443521141e-05, +-2.283159513823563441e-05, +-2.326281011158253103e-05, +-2.369395726823028545e-05, +-2.412503591214007308e-05, +-2.455604534742346850e-05, +-2.498698487832374637e-05, +-2.541785380928514160e-05, +-2.584865144488588634e-05, +-2.627937708987824073e-05, +-2.671003004917030542e-05, +-2.714060962786563221e-05, +-2.757111513119671505e-05, +-2.800154586461318985e-05, +-2.843190113366705140e-05, +-2.886218024414875116e-05, +-2.929238250197291904e-05, +-2.972250721325581267e-05, +-3.015255368428852067e-05, +-3.058252122152780450e-05, +-3.101240913157817870e-05, +-3.144221672126989206e-05, +-3.187194329760249155e-05, +-3.230158816772658740e-05, +-3.273115063902190883e-05, +-3.316063001898300887e-05, +-3.359002561535503356e-05, +-3.401933673601960286e-05, +-3.444856268907239892e-05, +-3.487770278279599324e-05, +-3.530675632565073257e-05, +-3.573572262625752049e-05, +-3.616460099348411982e-05, +-3.659339073634215348e-05, +-3.702209116406349329e-05, +-3.745070158608333283e-05, +-3.787922131198305682e-05, +-3.830764965156856791e-05, +-3.873598591485176716e-05, +-3.916422941204222602e-05, +-3.959237945351970180e-05, +-4.002043534991185463e-05, +-4.044839641198018262e-05, +-4.087626195075533031e-05, +-4.130403127742379629e-05, +-4.173170370340433558e-05, +-4.215927854033146621e-05, +-4.258675509999800652e-05, +-4.301413269443329354e-05, +-4.344141063588526655e-05, +-4.386858823681119042e-05, +-4.429566480987014068e-05, +-4.472263966790447046e-05, +-4.514951212401779174e-05, +-4.557628149151793953e-05, +-4.600294708389986859e-05, +-4.642950821491311788e-05, +-4.685596419849627736e-05, +-4.728231434881598536e-05, +-4.770855798024926963e-05, +-4.813469440742264641e-05, +-4.856072294514651261e-05, +-4.898664290850201754e-05, +-4.941245361272772311e-05, +-4.983815437335422787e-05, +-5.026374450609080686e-05, +-5.068922332690312186e-05, +-5.111459015198497788e-05, +-5.153984429775063889e-05, +-5.196498508081637605e-05, +-5.239001181807809659e-05, +-5.281492382665510760e-05, +-5.323972042387204373e-05, +-5.366440092733650962e-05, +-5.408896465482589599e-05, +-5.451341092442106849e-05, +-5.493773905439399698e-05, +-5.536194836329414609e-05, +-5.578603816987384143e-05, +-5.621000779317428074e-05, +-5.663385655241306147e-05, +-5.705758376711834399e-05, +-5.748118875701559312e-05, +-5.790467084210480049e-05, +-5.832802934264264254e-05, +-5.875126357908671876e-05, +-5.917437287217211658e-05, +-5.959735654289420652e-05, +-6.002021391249948065e-05, +-6.044294430247802415e-05, +-6.086554703454454180e-05, +-6.128802143071644085e-05, +-6.171036681325727631e-05, +-6.213258250465909880e-05, +-6.255466782770024254e-05, +-6.297662210542766638e-05, +-6.339844466110153753e-05, +-6.382013481827149162e-05, +-6.424169190075870273e-05, +-6.466311523264795511e-05, +-6.508440413827906452e-05, +-6.550555794222916498e-05, +-6.592657596939857764e-05, +-6.634745754490840787e-05, +-6.676820199417671047e-05, +-6.718880864289147946e-05, +-6.760927681700205580e-05, +-6.802960584270207830e-05, +-6.844979504650510675e-05, +-6.886984375518912427e-05, +-6.928975129577984063e-05, +-6.970951699562600364e-05, +-7.012914018228805159e-05, +-7.054862018367075182e-05, +-7.096795632791131107e-05, +-7.138714794345610987e-05, +-7.180619435903281146e-05, +-7.222509490364285368e-05, +-7.264384890654320727e-05, +-7.306245569732274436e-05, +-7.348091460584721521e-05, +-7.389922496224080322e-05, +-7.431738609696321169e-05, +-7.473539734069734053e-05, +-7.515325802448231778e-05, +-7.557096747960169133e-05, +-7.598852503766885048e-05, +-7.640593003057184003e-05, +-7.682318179046556761e-05, +-7.724027964984674912e-05, +-7.765722294150024076e-05, +-7.807401099847957756e-05, +-7.849064315416588624e-05, +-7.890711874224967063e-05, +-7.932343709667508363e-05, +-7.973959755171652615e-05, +-8.015559944196078482e-05, +-8.057144210229902250e-05, +-8.098712486791783359e-05, +-8.140264707428241178e-05, +-8.181800805721168527e-05, +-8.223320715282378141e-05, +-8.264824369751832709e-05, +-8.306311702804230048e-05, +-8.347782648142686266e-05, +-8.389237139502474911e-05, +-8.430675110649277334e-05, +-8.472096495383073624e-05, +-8.513501227531728192e-05, +-8.554889240959346263e-05, +-8.596260469555426433e-05, +-8.637614847247750474e-05, +-8.678952307991539964e-05, +-8.720272785776845116e-05, +-8.761576214625976583e-05, +-8.802862528592579811e-05, +-8.844131661759965378e-05, +-8.885383548248621151e-05, +-8.926618122210642201e-05, +-8.967835317828229185e-05, +-9.009035069320905063e-05, +-9.050217310934721867e-05, +-9.091381976955261639e-05, +-9.132529001696622296e-05, +-9.173658319508889135e-05, +-9.214769864775592377e-05, +-9.255863571912730035e-05, +-9.296939375367125344e-05, +-9.337997209624796804e-05, +-9.379037009200968608e-05, +-9.420058708647466262e-05, +-9.461062242551044200e-05, +-9.502047545527915983e-05, +-9.543014552231322031e-05, +-9.583963197349595680e-05, +-9.624893415605591262e-05, +-9.665805141755679864e-05, +-9.706698310588121668e-05, +-9.747572856930462925e-05, +-9.788428715644112226e-05, +-9.829265821622720984e-05, +-9.870084109797668133e-05, +-9.910883515136355228e-05, +-9.951663972636883005e-05, +-9.992425417335354843e-05, +-1.003316778430436701e-04, +-1.007389100865189465e-04, +-1.011459502552072392e-04, +-1.015527977008661835e-04, +-1.019594517756578899e-04, +-1.023659118320943408e-04, +-1.027721772230212903e-04, +-1.031782473016818391e-04, +-1.035841214216641487e-04, +-1.039897989368916296e-04, +-1.043952792016993774e-04, +-1.048005615707779567e-04, +-1.052056453991571656e-04, +-1.056105300422808591e-04, +-1.060152148558971599e-04, +-1.064196991961881153e-04, +-1.068239824196611420e-04, +-1.072280638832220874e-04, +-1.076319429441501300e-04, +-1.080356189600892422e-04, +-1.084390912890304627e-04, +-1.088423592893866527e-04, +-1.092454223199385027e-04, +-1.096482797398171035e-04, +-1.100509309085777809e-04, +-1.104533751860925560e-04, +-1.108556119326779187e-04, +-1.112576405089862446e-04, +-1.116594602760898752e-04, +-1.120610705954185862e-04, +-1.124624708287946887e-04, +-1.128636603384180809e-04, +-1.132646384869037069e-04, +-1.136654046372168302e-04, +-1.140659581527399426e-04, +-1.144662983972544271e-04, +-1.148664247348870802e-04, +-1.152663365301845148e-04, +-1.156660331480955018e-04, +-1.160655139539616996e-04, +-1.164647783135123283e-04, +-1.168638255928444643e-04, +-1.172626551584980128e-04, +-1.176612663774021753e-04, +-1.180596586168573299e-04, +-1.184578312445916945e-04, +-1.188557836287431528e-04, +-1.192535151378070905e-04, +-1.196510251407087119e-04, +-1.200483130067950298e-04, +-1.204453781057827704e-04, +-1.208422198078391320e-04, +-1.212388374834763740e-04, +-1.216352305036765675e-04, +-1.220313982397861976e-04, +-1.224273400635897673e-04, +-1.228230553472819465e-04, +-1.232185434634598610e-04, +-1.236138037851079545e-04, +-1.240088356856696675e-04, +-1.244036385389934172e-04, +-1.247982117193169847e-04, +-1.251925546013404010e-04, +-1.255866665601194508e-04, +-1.259805469711897596e-04, +-1.263741952104640112e-04, +-1.267676106543021229e-04, +-1.271607926794944131e-04, +-1.275537406632097225e-04, +-1.279464539830681093e-04, +-1.283389320171218762e-04, +-1.287311741438511520e-04, +-1.291231797421350249e-04, +-1.295149481913249428e-04, +-1.299064788711482466e-04, +-1.302977711617883737e-04, +-1.306888244438687851e-04, +-1.310796380984441292e-04, +-1.314702115069928958e-04, +-1.318605440514012891e-04, +-1.322506351140339447e-04, +-1.326404840776824296e-04, +-1.330300903255488443e-04, +-1.334194532412982977e-04, +-1.338085722090439993e-04, +-1.341974466132951366e-04, +-1.345860758390265348e-04, +-1.349744592716638843e-04, +-1.353625962970762331e-04, +-1.357504863015653344e-04, +-1.361381286718526900e-04, +-1.365255227951480993e-04, +-1.369126680590991357e-04, +-1.372995638517744493e-04, +-1.376862095617255939e-04, +-1.380726045779272063e-04, +-1.384587482898135436e-04, +-1.388446400872598620e-04, +-1.392302793606206893e-04, +-1.396156655006690556e-04, +-1.400007978986741487e-04, +-1.403856759463004025e-04, +-1.407702990357280329e-04, +-1.411546665595517192e-04, +-1.415387779108498575e-04, +-1.419226324831587296e-04, +-1.423062296704664042e-04, +-1.426895688671959051e-04, +-1.430726494682743285e-04, +-1.434554708690831870e-04, +-1.438380324654413062e-04, +-1.442203336536760836e-04, +-1.446023738305190532e-04, +-1.449841523932288883e-04, +-1.453656687394877783e-04, +-1.457469222674735829e-04, +-1.461279123758406416e-04, +-1.465086384636704153e-04, +-1.468890999305424473e-04, +-1.472692961765242805e-04, +-1.476492266021231558e-04, +-1.480288906083453452e-04, +-1.484082875966804584e-04, +-1.487874169690515415e-04, +-1.491662781278838977e-04, +-1.495448704760892844e-04, +-1.499231934170578361e-04, +-1.503012463546510714e-04, +-1.506790286931846540e-04, +-1.510565398374989472e-04, +-1.514337791929089782e-04, +-1.518107461651857623e-04, +-1.521874401606108929e-04, +-1.525638605859607117e-04, +-1.529400068484535087e-04, +-1.533158783558211872e-04, +-1.536914745162911041e-04, +-1.540667947385810819e-04, +-1.544418384318889468e-04, +-1.548166050058777561e-04, +-1.551910938707463797e-04, +-1.555653044371756426e-04, +-1.559392361163155041e-04, +-1.563128883198447428e-04, +-1.566862604599195119e-04, +-1.570593519491678093e-04, +-1.574321622007560475e-04, +-1.578046906283415930e-04, +-1.581769366460549311e-04, +-1.585488996685685125e-04, +-1.589205791109971153e-04, +-1.592919743890159690e-04, +-1.596630849187611972e-04, +-1.600339101168971197e-04, +-1.604044494006019413e-04, +-1.607747021875165769e-04, +-1.611446678958140138e-04, +-1.615143459441832922e-04, +-1.618837357518204526e-04, +-1.622528367384059298e-04, +-1.626216483241729120e-04, +-1.629901699298055883e-04, +-1.633584009765597122e-04, +-1.637263408861617706e-04, +-1.640939890808846885e-04, +-1.644613449834910163e-04, +-1.648284080172669741e-04, +-1.651951776060079779e-04, +-1.655616531740501348e-04, +-1.659278341462152207e-04, +-1.662937199478691723e-04, +-1.666593100049052281e-04, +-1.670246037436976330e-04, +-1.673896005911650097e-04, +-1.677542999747589476e-04, +-1.681187013224532149e-04, +-1.684828040627387444e-04, +-1.688466076246065842e-04, +-1.692101114376144677e-04, +-1.695733149318399220e-04, +-1.699362175378641131e-04, +-1.702988186868204727e-04, +-1.706611178103812536e-04, +-1.710231143407086327e-04, +-1.713848077105198440e-04, +-1.717461973530820562e-04, +-1.721072827021625259e-04, +-1.724680631921029475e-04, +-1.728285382577243409e-04, +-1.731887073344395920e-04, +-1.735485698581579889e-04, +-1.739081252653510866e-04, +-1.742673729930378269e-04, +-1.746263124787345022e-04, +-1.749849431605228435e-04, +-1.753432644770347600e-04, +-1.757012758674424732e-04, +-1.760589767714389197e-04, +-1.764163666292995782e-04, +-1.767734448817893087e-04, +-1.771302109702745683e-04, +-1.774866643366278382e-04, +-1.778428044232933534e-04, +-1.781986306732715180e-04, +-1.785541425300714432e-04, +-1.789093394377761360e-04, +-1.792642208410284580e-04, +-1.796187861850219100e-04, +-1.799730349154784873e-04, +-1.803269664787141653e-04, +-1.806805803215509436e-04, +-1.810338758913894062e-04, +-1.813868526361955488e-04, +-1.817395100044899093e-04, +-1.820918474453457516e-04, +-1.824438644083676263e-04, +-1.827955603437615446e-04, +-1.831469347022859190e-04, +-1.834979869352348122e-04, +-1.838487164944898158e-04, +-1.841991228325021612e-04, +-1.845492054022471293e-04, +-1.848989636572889392e-04, +-1.852483970517651091e-04, +-1.855975050403785146e-04, +-1.859462870783916422e-04, +-1.862947426216113290e-04, +-1.866428711264532460e-04, +-1.869906720498934070e-04, +-1.873381448494555377e-04, +-1.876852889832733085e-04, +-1.880321039099994249e-04, +-1.883785890889110926e-04, +-1.887247439798237696e-04, +-1.890705680431560554e-04, +-1.894160607398726352e-04, +-1.897612215315531536e-04, +-1.901060498802984041e-04, +-1.904505452488435468e-04, +-1.907947071004632953e-04, +-1.911385348990342033e-04, +-1.914820281090223058e-04, +-1.918251861954355759e-04, +-1.921680086238869987e-04, +-1.925104948605819402e-04, +-1.928526443723070887e-04, +-1.931944566264134054e-04, +-1.935359310908735600e-04, +-1.938770672341936499e-04, +-1.942178645255199666e-04, +-1.945583224345491156e-04, +-1.948984404315978660e-04, +-1.952382179875469348e-04, +-1.955776545738781476e-04, +-1.959167496626541913e-04, +-1.962555027265551521e-04, +-1.965939132388218921e-04, +-1.969319806733120493e-04, +-1.972697045044847228e-04, +-1.976070842073585142e-04, +-1.979441192575674452e-04, +-1.982808091313540734e-04, +-1.986171533055553970e-04, +-1.989531512576005515e-04, +-1.992888024654956034e-04, +-1.996241064078835064e-04, +-1.999590625640024959e-04, +-2.002936704136680361e-04, +-2.006279294373215013e-04, +-2.009618391160160810e-04, +-2.012953989313694819e-04, +-2.016286083656278411e-04, +-2.019614669016516861e-04, +-2.022939740229063395e-04, +-2.026261292134585578e-04, +-2.029579319579593471e-04, +-2.032893817417147613e-04, +-2.036204780506023916e-04, +-2.039512203711334637e-04, +-2.042816081904368466e-04, +-2.046116409962175811e-04, +-2.049413182768149394e-04, +-2.052706395211900106e-04, +-2.055996042189186265e-04, +-2.059282118601684578e-04, +-2.062564619357614099e-04, +-2.065843539370837965e-04, +-2.069118873561913723e-04, +-2.072390616857218643e-04, +-2.075658764189540072e-04, +-2.078923310497932044e-04, +-2.082184250727300845e-04, +-2.085441579828982352e-04, +-2.088695292760609217e-04, +-2.091945384486037412e-04, +-2.095191849975157035e-04, +-2.098434684204460437e-04, +-2.101673882156185693e-04, +-2.104909438819342268e-04, +-2.108141349188839581e-04, +-2.111369608266173850e-04, +-2.114594211058955925e-04, +-2.117815152580886616e-04, +-2.121032427852325363e-04, +-2.124246031899873629e-04, +-2.127455959756225008e-04, +-2.130662206460603514e-04, +-2.133864767058664110e-04, +-2.137063636602017818e-04, +-2.140258810148828040e-04, +-2.143450282763709181e-04, +-2.146638049517633404e-04, +-2.149822105487853659e-04, +-2.153002445757787125e-04, +-2.156179065417612067e-04, +-2.159351959563805693e-04, +-2.162521123299041969e-04, +-2.165686551732751337e-04, +-2.168848239980282087e-04, +-2.172006183163898362e-04, +-2.175160376411952373e-04, +-2.178310814859497511e-04, +-2.181457493647758991e-04, +-2.184600407924764038e-04, +-2.187739552844505974e-04, +-2.190874923567930023e-04, +-2.194006515262118264e-04, +-2.197134323100840138e-04, +-2.200258342264411224e-04, +-2.203378567939298595e-04, +-2.206494995318695714e-04, +-2.209607619602352486e-04, +-2.212716435996562789e-04, +-2.215821439713920528e-04, +-2.218922625973906190e-04, +-2.222019990002041436e-04, +-2.225113527030909608e-04, +-2.228203232299259633e-04, +-2.231289101052657360e-04, +-2.234371128543260587e-04, +-2.237449310029508709e-04, +-2.240523640776572660e-04, +-2.243594116056338381e-04, +-2.246660731147259098e-04, +-2.249723481334185639e-04, +-2.252782361908949201e-04, +-2.255837368169559846e-04, +-2.258888495420878983e-04, +-2.261935738974464323e-04, +-2.264979094148511605e-04, +-2.268018556267807433e-04, +-2.271054120663576947e-04, +-2.274085782674050858e-04, +-2.277113537644073510e-04, +-2.280137380924942691e-04, +-2.283157307875004313e-04, +-2.286173313858796171e-04, +-2.289185394248045673e-04, +-2.292193544420830127e-04, +-2.295197759762158691e-04, +-2.298198035663757694e-04, +-2.301194367524000712e-04, +-2.304186750747792009e-04, +-2.307175180747142527e-04, +-2.310159652940699606e-04, +-2.313140162753696033e-04, +-2.316116705618446873e-04, +-2.319089276973567218e-04, +-2.322057872264922764e-04, +-2.325022486944813404e-04, +-2.327983116472612907e-04, +-2.330939756314211913e-04, +-2.333892401942644595e-04, +-2.336841048837276329e-04, +-2.339785692484769438e-04, +-2.342726328378270592e-04, +-2.345662952017949106e-04, +-2.348595558910894759e-04, +-2.351524144570689802e-04, +-2.354448704517981964e-04, +-2.357369234280337806e-04, +-2.360285729392191771e-04, +-2.363198185394631507e-04, +-2.366106597835983337e-04, +-2.369010962270972547e-04, +-2.371911274261689136e-04, +-2.374807529376790388e-04, +-2.377699723192092573e-04, +-2.380587851290146483e-04, +-2.383471909260455356e-04, +-2.386351892699424462e-04, +-2.389227797210544059e-04, +-2.392099618404011554e-04, +-2.394967351897151625e-04, +-2.397830993314303740e-04, +-2.400690538286452712e-04, +-2.403545982451727977e-04, +-2.406397321455304927e-04, +-2.409244550949336068e-04, +-2.412087666592898434e-04, +-2.414926664051855894e-04, +-2.417761538999390139e-04, +-2.420592287115638016e-04, +-2.423418904087548957e-04, +-2.426241385609408108e-04, +-2.429059727382069521e-04, +-2.431873925113871228e-04, +-2.434683974519877649e-04, +-2.437489871322377245e-04, +-2.440291611250712837e-04, +-2.443089190041216555e-04, +-2.445882603437089494e-04, +-2.448671847189000188e-04, +-2.451456917054348986e-04, +-2.454237808797829663e-04, +-2.457014518191284139e-04, +-2.459787041013323009e-04, +-2.462555373049856800e-04, +-2.465319510093966411e-04, +-2.468079447945841854e-04, +-2.470835182412590893e-04, +-2.473586709308808794e-04, +-2.476334024455730475e-04, +-2.479077123682199243e-04, +-2.481816002823881832e-04, +-2.484550657723782856e-04, +-2.487281084232133136e-04, +-2.490007278206011858e-04, +-2.492729235509858312e-04, +-2.495446952015341249e-04, +-2.498160423601326354e-04, +-2.500869646153677296e-04, +-2.503574615565752289e-04, +-2.506275327737699367e-04, +-2.508971778577280911e-04, +-2.511663963999177600e-04, +-2.514351879925544602e-04, +-2.517035522285632643e-04, +-2.519714887015727842e-04, +-2.522389970059681877e-04, +-2.525060767368524930e-04, +-2.527727274900338291e-04, +-2.530389488620776945e-04, +-2.533047404502330687e-04, +-2.535701018525193654e-04, +-2.538350326676516765e-04, +-2.540995324950914586e-04, +-2.543636009350300534e-04, +-2.546272375883796885e-04, +-2.548904420567665386e-04, +-2.551532139425764247e-04, +-2.554155528489206618e-04, +-2.556774583796241323e-04, +-2.559389301392733167e-04, +-2.561999677331459825e-04, +-2.564605707672955900e-04, +-2.567207388484788128e-04, +-2.569804715842114828e-04, +-2.572397685827213193e-04, +-2.574986294530004580e-04, +-2.577570538047357918e-04, +-2.580150412483933208e-04, +-2.582725913951466499e-04, +-2.585297038569256151e-04, +-2.587863782464049534e-04, +-2.590426141769667351e-04, +-2.592984112627538156e-04, +-2.595537691186542762e-04, +-2.598086873602952992e-04, +-2.600631656040307532e-04, +-2.603172034669842361e-04, +-2.605708005669809873e-04, +-2.608239565226313172e-04, +-2.610766709532607839e-04, +-2.613289434789553512e-04, +-2.615807737205523347e-04, +-2.618321612996050572e-04, +-2.620831058384321256e-04, +-2.623336069601077273e-04, +-2.625836642884317061e-04, +-2.628332774479805742e-04, +-2.630824460640399662e-04, +-2.633311697626809669e-04, +-2.635794481706998840e-04, +-2.638272809156571707e-04, +-2.640746676258644158e-04, +-2.643216079303806025e-04, +-2.645681014589959545e-04, +-2.648141478422844108e-04, +-2.650597467115642153e-04, +-2.653048976988928750e-04, +-2.655496004371083602e-04, +-2.657938545597625878e-04, +-2.660376597012038217e-04, +-2.662810154965065241e-04, +-2.665239215815190066e-04, +-2.667663775928457034e-04, +-2.670083831678409913e-04, +-2.672499379446022509e-04, +-2.674910415620119879e-04, +-2.677316936597065535e-04, +-2.679718938780635681e-04, +-2.682116418582498971e-04, +-2.684509372421574661e-04, +-2.686897796724571456e-04, +-2.689281687925865541e-04, +-2.691661042467447993e-04, +-2.694035856798765406e-04, +-2.696406127377174171e-04, +-2.698771850667280197e-04, +-2.701133023141713573e-04, +-2.703489641280473711e-04, +-2.705841701571373866e-04, +-2.708189200509941936e-04, +-2.710532134599093028e-04, +-2.712870500349558807e-04, +-2.715204294279805093e-04, +-2.717533512915993915e-04, +-2.719858152791773177e-04, +-2.722178210448756956e-04, +-2.724493682435883660e-04, +-2.726804565310152737e-04, +-2.729110855636011023e-04, +-2.731412549985803222e-04, +-2.733709644939449359e-04, +-2.736002137084629637e-04, +-2.738290023016686859e-04, +-2.740573299338854105e-04, +-2.742851962661886113e-04, +-2.745126009604537403e-04, +-2.747395436792940491e-04, +-2.749660240861318754e-04, +-2.751920418451417219e-04, +-2.754175966212877701e-04, +-2.756426880803101108e-04, +-2.758673158887206241e-04, +-2.760914797137930588e-04, +-2.763151792236034194e-04, +-2.765384140870020472e-04, +-2.767611839736009360e-04, +-2.769834885538184546e-04, +-2.772053274988158129e-04, +-2.774267004805699207e-04, +-2.776476071718126716e-04, +-2.778680472460765341e-04, +-2.780880203776578516e-04, +-2.783075262416552227e-04, +-2.785265645139196281e-04, +-2.787451348711168266e-04, +-2.789632369906717350e-04, +-2.791808705508087071e-04, +-2.793980352305402027e-04, +-2.796147307096387077e-04, +-2.798309566686775539e-04, +-2.800467127890207816e-04, +-2.802619987528170140e-04, +-2.804768142429882902e-04, +-2.806911589432666563e-04, +-2.809050325381401729e-04, +-2.811184347129155815e-04, +-2.813313651536661548e-04, +-2.815438235472675290e-04, +-2.817558095813897895e-04, +-2.819673229444687938e-04, +-2.821783633257441727e-04, +-2.823889304152528250e-04, +-2.825990239038215991e-04, +-2.828086434830635529e-04, +-2.830177888453702011e-04, +-2.832264596839497339e-04, +-2.834346556927985566e-04, +-2.836423765666907723e-04, +-2.838496220012151541e-04, +-2.840563916927437565e-04, +-2.842626853384280674e-04, +-2.844685026362425923e-04, +-2.846738432849481542e-04, +-2.848787069840895631e-04, +-2.850830934340316107e-04, +-2.852870023359026382e-04, +-2.854904333916595885e-04, +-2.856933863040367772e-04, +-2.858958607765792323e-04, +-2.860978565136294122e-04, +-2.862993732203246585e-04, +-2.865004106025902564e-04, +-2.867009683671702266e-04, +-2.869010462216079176e-04, +-2.871006438742312612e-04, +-2.872997610341928871e-04, +-2.874983974114149921e-04, +-2.876965527166547168e-04, +-2.878942266614464666e-04, +-2.880914189581477189e-04, +-2.882881293198992869e-04, +-2.884843574606695557e-04, +-2.886801030951978864e-04, +-2.888753659390611863e-04, +-2.890701457086174218e-04, +-2.892644421210432948e-04, +-2.894582548943269240e-04, +-2.896515837472381379e-04, +-2.898444283993674517e-04, +-2.900367885711173941e-04, +-2.902286639836969230e-04, +-2.904200543591175230e-04, +-2.906109594201862121e-04, +-2.908013788905408864e-04, +-2.909913124946237033e-04, +-2.911807599576713237e-04, +-2.913697210057442392e-04, +-2.915581953657182617e-04, +-2.917461827652555748e-04, +-2.919336829328428437e-04, +-2.921206955977886130e-04, +-2.923072204901929491e-04, +-2.924932573409902122e-04, +-2.926788058818975019e-04, +-2.928638658454741262e-04, +-2.930484369650700476e-04, +-2.932325189748632879e-04, +-2.934161116098457254e-04, +-2.935992146058158305e-04, +-2.937818276993773106e-04, +-2.939639506279693591e-04, +-2.941455831298416109e-04, +-2.943267249440451429e-04, +-2.945073758104708550e-04, +-2.946875354697948805e-04, +-2.948672036635411448e-04, +-2.950463801340269922e-04, +-2.952250646244015128e-04, +-2.954032568786323153e-04, +-2.955809566414983706e-04, +-2.957581636585882782e-04, +-2.959348776763262860e-04, +-2.961110984419558652e-04, +-2.962868257035246940e-04, +-2.964620592099212492e-04, +-2.966367987108316554e-04, +-2.968110439567726985e-04, +-2.969847946990876518e-04, +-2.971580506899397706e-04, +-2.973308116823045947e-04, +-2.975030774299956978e-04, +-2.976748476876245721e-04, +-2.978461222106522908e-04, +-2.980169007553417487e-04, +-2.981871830787931701e-04, +-2.983569689389327243e-04, +-2.985262580944919803e-04, +-2.986950503050391317e-04, +-2.988633453309696725e-04, +-2.990311429335046085e-04, +-2.991984428746875292e-04, +-2.993652449173740920e-04, +-2.995315488252672039e-04, +-2.996973543628914344e-04, +-2.998626612955866732e-04, +-3.000274693895355602e-04, +-3.001917784117356762e-04, +-3.003555881300167267e-04, +-3.005188983130328449e-04, +-3.006817087302769568e-04, +-3.008440191520565495e-04, +-3.010058293495254927e-04, +-3.011671390946438686e-04, +-3.013279481602224789e-04, +-3.014882563198874993e-04, +-3.016480633481052540e-04, +-3.018073690201709394e-04, +-3.019661731122101969e-04, +-3.021244754011644215e-04, +-3.022822756648296848e-04, +-3.024395736818259977e-04, +-3.025963692315974192e-04, +-3.027526620944348784e-04, +-3.029084520514412635e-04, +-3.030637388845738140e-04, +-3.032185223766064447e-04, +-3.033728023111615670e-04, +-3.035265784726801650e-04, +-3.036798506464555682e-04, +-3.038326186185896500e-04, +-3.039848821760450862e-04, +-3.041366411066014986e-04, +-3.042878951988841328e-04, +-3.044386442423566478e-04, +-3.045888880273027932e-04, +-3.047386263448511831e-04, +-3.048878589869715014e-04, +-3.050365857464682677e-04, +-3.051848064169816505e-04, +-3.053325207929777634e-04, +-3.054797286697760956e-04, +-3.056264298435337908e-04, +-3.057726241112336671e-04, +-3.059183112707051415e-04, +-3.060634911206236886e-04, +-3.062081634604833010e-04, +-3.063523280906296667e-04, +-3.064959848122495432e-04, +-3.066391334273705954e-04, +-3.067817737388563539e-04, +-3.069239055503999807e-04, +-3.070655286665550606e-04, +-3.072066428927018827e-04, +-3.073472480350684195e-04, +-3.074873439007251769e-04, +-3.076269302975802073e-04, +-3.077660070343749346e-04, +-3.079045739207074655e-04, +-3.080426307670160548e-04, +-3.081801773845697272e-04, +-3.083172135855003155e-04, +-3.084537391827557313e-04, +-3.085897539901510315e-04, +-3.087252578223311753e-04, +-3.088602504947903231e-04, +-3.089947318238697228e-04, +-3.091287016267499571e-04, +-3.092621597214476373e-04, +-3.093951059268387131e-04, +-3.095275400626422641e-04, +-3.096594619494098745e-04, +-3.097908714085589182e-04, +-3.099217682623276186e-04, +-3.100521523338221029e-04, +-3.101820234469783466e-04, +-3.103113814265924227e-04, +-3.104402260983013659e-04, +-3.105685572885753657e-04, +-3.106963748247531664e-04, +-3.108236785350132806e-04, +-3.109504682483732311e-04, +-3.110767437947084156e-04, +-3.112025050047432704e-04, +-3.113277517100369591e-04, +-3.114524837430048400e-04, +-3.115767009369147791e-04, +-3.117004031258823805e-04, +-3.118235901448685463e-04, +-3.119462618296767664e-04, +-3.120684180169720919e-04, +-3.121900585442671490e-04, +-3.123111832499160675e-04, +-3.124317919731335082e-04, +-3.125518845539762319e-04, +-3.126714608333540498e-04, +-3.127905206530241853e-04, +-3.129090638556040137e-04, +-3.130270902845492696e-04, +-3.131445997841818566e-04, +-3.132615921996530933e-04, +-3.133780673769896827e-04, +-3.134940251630533806e-04, +-3.136094654055653899e-04, +-3.137243879530995840e-04, +-3.138387926550817485e-04, +-3.139526793617767328e-04, +-3.140660479243221693e-04, +-3.141788981946999041e-04, +-3.142912300257407680e-04, +-3.144030432711394300e-04, +-3.145143377854266414e-04, +-3.146251134240058279e-04, +-3.147353700431188288e-04, +-3.148451074998715382e-04, +-3.149543256522221958e-04, +-3.150630243589809532e-04, +-3.151712034798060790e-04, +-3.152788628752230954e-04, +-3.153860024066025515e-04, +-3.154926219361756904e-04, +-3.155987213270313591e-04, +-3.157043004431003960e-04, +-3.158093591491784534e-04, +-3.159138973109187876e-04, +-3.160179147948283555e-04, +-3.161214114682700917e-04, +-3.162243871994531506e-04, +-3.163268418574577347e-04, +-3.164287753122150366e-04, +-3.165301874345077273e-04, +-3.166310780959817736e-04, +-3.167314471691413426e-04, +-3.168312945273364959e-04, +-3.169306200447816755e-04, +-3.170294235965495774e-04, +-3.171277050585718030e-04, +-3.172254643076340879e-04, +-3.173227012213737002e-04, +-3.174194156782964623e-04, +-3.175156075577632527e-04, +-3.176112767399882171e-04, +-3.177064231060506400e-04, +-3.178010465378845371e-04, +-3.178951469182749682e-04, +-3.179887241308777704e-04, +-3.180817780602056256e-04, +-3.181743085916217181e-04, +-3.182663156113593587e-04, +-3.183577990064968854e-04, +-3.184487586649875873e-04, +-3.185391944756301059e-04, +-3.186291063280915830e-04, +-3.187184941128996373e-04, +-3.188073577214367267e-04, +-3.188956970459401485e-04, +-3.189835119795161877e-04, +-3.190708024161329078e-04, +-3.191575682506080070e-04, +-3.192438093786322375e-04, +-3.193295256967403485e-04, +-3.194147171023443716e-04, +-3.194993834937057023e-04, +-3.195835247699531519e-04, +-3.196671408310724312e-04, +-3.197502315779097819e-04, +-3.198327969121727361e-04, +-3.199148367364349952e-04, +-3.199963509541225515e-04, +-3.200773394695304399e-04, +-3.201578021878154733e-04, +-3.202377390149881110e-04, +-3.203171498579229759e-04, +-3.203960346243596132e-04, +-3.204743932229025985e-04, +-3.205522255630121600e-04, +-3.206295315550068887e-04, +-3.207063111100743095e-04, +-3.207825641402671946e-04, +-3.208582905584887648e-04, +-3.209334902785146437e-04, +-3.210081632149834802e-04, +-3.210823092833854555e-04, +-3.211559284000803350e-04, +-3.212290204822929149e-04, +-3.213015854481091733e-04, +-3.213736232164757819e-04, +-3.214451337071972336e-04, +-3.215161168409536225e-04, +-3.215865725392754370e-04, +-3.216565007245643219e-04, +-3.217259013200840252e-04, +-3.217947742499595852e-04, +-3.218631194391739152e-04, +-3.219309368135812475e-04, +-3.219982262999003032e-04, +-3.220649878257025823e-04, +-3.221312213194373010e-04, +-3.221969267104023344e-04, +-3.222621039287706718e-04, +-3.223267529055717675e-04, +-3.223908735727029802e-04, +-3.224544658629265904e-04, +-3.225175297098617239e-04, +-3.225800650479941092e-04, +-3.226420718126783000e-04, +-3.227035499401281348e-04, +-3.227644993674208562e-04, +-3.228249200325035081e-04, +-3.228848118741765643e-04, +-3.229441748321152869e-04, +-3.230030088468498857e-04, +-3.230613138597844916e-04, +-3.231190898131807310e-04, +-3.231763366501619545e-04, +-3.232330543147217470e-04, +-3.232892427517167731e-04, +-3.233449019068655836e-04, +-3.234000317267531695e-04, +-3.234546321588296610e-04, +-3.235087031514057737e-04, +-3.235622446536574165e-04, +-3.236152566156275351e-04, +-3.236677389882243764e-04, +-3.237196917232187791e-04, +-3.237711147732395107e-04, +-3.238220080917903984e-04, +-3.238723716332370475e-04, +-3.239222053528036972e-04, +-3.239715092065869359e-04, +-3.240202831515422025e-04, +-3.240685271454929483e-04, +-3.241162411471229933e-04, +-3.241634251159856875e-04, +-3.242100790124954543e-04, +-3.242562027979348921e-04, +-3.243017964344455583e-04, +-3.243468598850389201e-04, +-3.243913931135857290e-04, +-3.244353960848277846e-04, +-3.244788687643676887e-04, +-3.245218111186734533e-04, +-3.245642231150731882e-04, +-3.246061047217669183e-04, +-3.246474559078157420e-04, +-3.246882766431438911e-04, +-3.247285668985445311e-04, +-3.247683266456675641e-04, +-3.248075558570351871e-04, +-3.248462545060300743e-04, +-3.248844225669000928e-04, +-3.249220600147608514e-04, +-3.249591668255858877e-04, +-3.249957429762151797e-04, +-3.250317884443581270e-04, +-3.250673032085820043e-04, +-3.251022872483212852e-04, +-3.251367405438778052e-04, +-3.251706630764106243e-04, +-3.252040548279473567e-04, +-3.252369157813794548e-04, +-3.252692459204641062e-04, +-3.253010452298201144e-04, +-3.253323136949284942e-04, +-3.253630513021395199e-04, +-3.253932580386651894e-04, +-3.254229338925793873e-04, +-3.254520788528227635e-04, +-3.254806929092005107e-04, +-3.255087760523775399e-04, +-3.255363282738846058e-04, +-3.255633495661180358e-04, +-3.255898399223374536e-04, +-3.256157993366645860e-04, +-3.256412278040834258e-04, +-3.256661253204447856e-04, +-3.256904918824625027e-04, +-3.257143274877117049e-04, +-3.257376321346331467e-04, +-3.257604058225309872e-04, +-3.257826485515683446e-04, +-3.258043603227774878e-04, +-3.258255411380512711e-04, +-3.258461910001442729e-04, +-3.258663099126770778e-04, +-3.258858978801295551e-04, +-3.259049549078488271e-04, +-3.259234810020404335e-04, +-3.259414761697753240e-04, +-3.259589404189889910e-04, +-3.259758737584743144e-04, +-3.259922761978890958e-04, +-3.260081477477549212e-04, +-3.260234884194556423e-04, +-3.260382982252357504e-04, +-3.260525771782041174e-04, +-3.260663252923282486e-04, +-3.260795425824406261e-04, +-3.260922290642350222e-04, +-3.261043847542679087e-04, +-3.261160096699553673e-04, +-3.261271038295787271e-04, +-3.261376672522755659e-04, +-3.261476999580502812e-04, +-3.261572019677656874e-04, +-3.261661733031472987e-04, +-3.261746139867820280e-04, +-3.261825240421146630e-04, +-3.261899034934565402e-04, +-3.261967523659756239e-04, +-3.262030706857033373e-04, +-3.262088584795290328e-04, +-3.262141157752061716e-04, +-3.262188426013440303e-04, +-3.262230389874188675e-04, +-3.262267049637611305e-04, +-3.262298405615645085e-04, +-3.262324458128835472e-04, +-3.262345207506294202e-04, +-3.262360654085763264e-04, +-3.262370798213578031e-04, +-3.262375640244649915e-04, +-3.262375180542505942e-04, +-3.262369419479256225e-04, +-3.262358357435616186e-04, +-3.262341994800879458e-04, +-3.262320331972928182e-04, +-3.262293369358261735e-04, +-3.262261107371920840e-04, +-3.262223546437583517e-04, +-3.262180686987459373e-04, +-3.262132529462395312e-04, +-3.262079074311785001e-04, +-3.262020321993617665e-04, +-3.261956272974461820e-04, +-3.261886927729460935e-04, +-3.261812286742326933e-04, +-3.261732350505367828e-04, +-3.261647119519466053e-04, +-3.261556594294047007e-04, +-3.261460775347140863e-04, +-3.261359663205328353e-04, +-3.261253258403774922e-04, +-3.261141561486196575e-04, +-3.261024573004870719e-04, +-3.260902293520677366e-04, +-3.260774723603024859e-04, +-3.260641863829876440e-04, +-3.260503714787787652e-04, +-3.260360277071845084e-04, +-3.260211551285699979e-04, +-3.260057538041565527e-04, +-3.259898237960193548e-04, +-3.259733651670900520e-04, +-3.259563779811552940e-04, +-3.259388623028557563e-04, +-3.259208181976876043e-04, +-3.259022457320015715e-04, +-3.258831449730007911e-04, +-3.258635159887450245e-04, +-3.258433588481475713e-04, +-3.258226736209746187e-04, +-3.258014603778482230e-04, +-3.257797191902399672e-04, +-3.257574501304783877e-04, +-3.257346532717422523e-04, +-3.257113286880680410e-04, +-3.256874764543383994e-04, +-3.256630966462944988e-04, +-3.256381893405270911e-04, +-3.256127546144788943e-04, +-3.255867925464448636e-04, +-3.255603032155745223e-04, +-3.255332867018647519e-04, +-3.255057430861662431e-04, +-3.254776724501820865e-04, +-3.254490748764631101e-04, +-3.254199504484142223e-04, +-3.253902992502917015e-04, +-3.253601213671978827e-04, +-3.253294168850883687e-04, +-3.252981858907699145e-04, +-3.252664284718964714e-04, +-3.252341447169745524e-04, +-3.252013347153575955e-04, +-3.251679985572512215e-04, +-3.251341363337060240e-04, +-3.250997481366252675e-04, +-3.250648340587588159e-04, +-3.250293941937065475e-04, +-3.249934286359157528e-04, +-3.249569374806811893e-04, +-3.249199208241467613e-04, +-3.248823787633019428e-04, +-3.248443113959863303e-04, +-3.248057188208857402e-04, +-3.247666011375318295e-04, +-3.247269584463025288e-04, +-3.246867908484241030e-04, +-3.246460984459701750e-04, +-3.246048813418587987e-04, +-3.245631396398506157e-04, +-3.245208734445582878e-04, +-3.244780828614350046e-04, +-3.244347679967806092e-04, +-3.243909289577403513e-04, +-3.243465658523061340e-04, +-3.243016787893108761e-04, +-3.242562678784297048e-04, +-3.242103332301872736e-04, +-3.241638749559516372e-04, +-3.241168931679299140e-04, +-3.240693879791747378e-04, +-3.240213595035845284e-04, +-3.239728078558935711e-04, +-3.239237331516865996e-04, +-3.238741355073863275e-04, +-3.238240150402594652e-04, +-3.237733718684089688e-04, +-3.237222061107878084e-04, +-3.236705178871827058e-04, +-3.236183073182288795e-04, +-3.235655745253946487e-04, +-3.235123196309944442e-04, +-3.234585427581800261e-04, +-3.234042440309426521e-04, +-3.233494235741159509e-04, +-3.232940815133742958e-04, +-3.232382179752257573e-04, +-3.231818330870205600e-04, +-3.231249269769484261e-04, +-3.230674997740345098e-04, +-3.230095516081467701e-04, +-3.229510826099859415e-04, +-3.228920929110952378e-04, +-3.228325826438503232e-04, +-3.227725519414684197e-04, +-3.227120009379993624e-04, +-3.226509297683334597e-04, +-3.225893385681946092e-04, +-3.225272274741438749e-04, +-3.224645966235774276e-04, +-3.224014461547239428e-04, +-3.223377762066547921e-04, +-3.222735869192699487e-04, +-3.222088784333059560e-04, +-3.221436508903314285e-04, +-3.220779044327497080e-04, +-3.220116392038036338e-04, +-3.219448553475617739e-04, +-3.218775530089283449e-04, +-3.218097323336409897e-04, +-3.217413934682678499e-04, +-3.216725365602146679e-04, +-3.216031617577121008e-04, +-3.215332692098269969e-04, +-3.214628590664551856e-04, +-3.213919314783257055e-04, +-3.213204865969942450e-04, +-3.212485245748543643e-04, +-3.211760455651206355e-04, +-3.211030497218449057e-04, +-3.210295371999034495e-04, +-3.209555081550008720e-04, +-3.208809627436787280e-04, +-3.208059011233006146e-04, +-3.207303234520589470e-04, +-3.206542298889717606e-04, +-3.205776205938908963e-04, +-3.205004957274890987e-04, +-3.204228554512720509e-04, +-3.203446999275668273e-04, +-3.202660293195314350e-04, +-3.201868437911461942e-04, +-3.201071435072143888e-04, +-3.200269286333736504e-04, +-3.199461993360827854e-04, +-3.198649557826197150e-04, +-3.197831981410929132e-04, +-3.197009265804330049e-04, +-3.196181412703919520e-04, +-3.195348423815501555e-04, +-3.194510300853099500e-04, +-3.193667045538928933e-04, +-3.192818659603418804e-04, +-3.191965144785248844e-04, +-3.191106502831373955e-04, +-3.190242735496861583e-04, +-3.189373844545005015e-04, +-3.188499831747365664e-04, +-3.187620698883629955e-04, +-3.186736447741769784e-04, +-3.185847080117872846e-04, +-3.184952597816272189e-04, +-3.184053002649471953e-04, +-3.183148296438133816e-04, +-3.182238481011114939e-04, +-3.181323558205532477e-04, +-3.180403529866577097e-04, +-3.179478397847603508e-04, +-3.178548164010232377e-04, +-3.177612830224126983e-04, +-3.176672398367238787e-04, +-3.175726870325576499e-04, +-3.174776247993353531e-04, +-3.173820533272874692e-04, +-3.172859728074697199e-04, +-3.171893834317363416e-04, +-3.170922853927741840e-04, +-3.169946788840676899e-04, +-3.168965640999253501e-04, +-3.167979412354601874e-04, +-3.166988104865984307e-04, +-3.165991720500864535e-04, +-3.164990261234752701e-04, +-3.163983729051296425e-04, +-3.162972125942193529e-04, +-3.161955453907351415e-04, +-3.160933714954643117e-04, +-3.159906911100214674e-04, +-3.158875044368137102e-04, +-3.157838116790682862e-04, +-3.156796130408120950e-04, +-3.155749087268886030e-04, +-3.154696989429427189e-04, +-3.153639838954336956e-04, +-3.152577637916181082e-04, +-3.151510388395687735e-04, +-3.150438092481578907e-04, +-3.149360752270616488e-04, +-3.148278369867727497e-04, +-3.147190947385823017e-04, +-3.146098486945823674e-04, +-3.145000990676711139e-04, +-3.143898460715516740e-04, +-3.142790899207372965e-04, +-3.141678308305342698e-04, +-3.140560690170511376e-04, +-3.139438046972086198e-04, +-3.138310380887148377e-04, +-3.137177694100970276e-04, +-3.136039988806677134e-04, +-3.134897267205485590e-04, +-3.133749531506589301e-04, +-3.132596783927137259e-04, +-3.131439026692308595e-04, +-3.130276262035367883e-04, +-3.129108492197375650e-04, +-3.127935719427523938e-04, +-3.126757945982901036e-04, +-3.125575174128546771e-04, +-3.124387406137569601e-04, +-3.123194644290990495e-04, +-3.121996890877766777e-04, +-3.120794148194790509e-04, +-3.119586418546996362e-04, +-3.118373704247134480e-04, +-3.117156007616062128e-04, +-3.115933330982421142e-04, +-3.114705676682885129e-04, +-3.113473047062006050e-04, +-3.112235444472220727e-04, +-3.110992871274015641e-04, +-3.109745329835713885e-04, +-3.108492822533533173e-04, +-3.107235351751578786e-04, +-3.105972919881966636e-04, +-3.104705529324548957e-04, +-3.103433182487268845e-04, +-3.102155881785785660e-04, +-3.100873629643765054e-04, +-3.099586428492632313e-04, +-3.098294280771762637e-04, +-3.096997188928468127e-04, +-3.095695155417804798e-04, +-3.094388182702715153e-04, +-3.093076273254075342e-04, +-3.091759429550478867e-04, +-3.090437654078555881e-04, +-3.089110949332608889e-04, +-3.087779317814889771e-04, +-3.086442762035411665e-04, +-3.085101284512014566e-04, +-3.083754887770413572e-04, +-3.082403574344199423e-04, +-3.081047346774648771e-04, +-3.079686207610886264e-04, +-3.078320159409905690e-04, +-3.076949204736381324e-04, +-3.075573346162983434e-04, +-3.074192586269968992e-04, +-3.072806927645514523e-04, +-3.071416372885484090e-04, +-3.070020924593624989e-04, +-3.068620585381315129e-04, +-3.067215357867900767e-04, +-3.065805244680293177e-04, +-3.064390248453298252e-04, +-3.062970371829412133e-04, +-3.061545617458820119e-04, +-3.060115987999615142e-04, +-3.058681486117551646e-04, +-3.057242114486067273e-04, +-3.055797875786335450e-04, +-3.054348772707346157e-04, +-3.052894807945679334e-04, +-3.051435984205801946e-04, +-3.049972304199708036e-04, +-3.048503770647232594e-04, +-3.047030386275829299e-04, +-3.045552153820625272e-04, +-3.044069076024559311e-04, +-3.042581155638200284e-04, +-3.041088395419740630e-04, +-3.039590798135056527e-04, +-3.038088366557722530e-04, +-3.036581103469086383e-04, +-3.035069011657943756e-04, +-3.033552093920920969e-04, +-3.032030353062191473e-04, +-3.030503791893574515e-04, +-3.028972413234561154e-04, +-3.027436219912366848e-04, +-3.025895214761698351e-04, +-3.024349400624893030e-04, +-3.022798780351995305e-04, +-3.021243356800554442e-04, +-3.019683132835904280e-04, +-3.018118111330768578e-04, +-3.016548295165645370e-04, +-3.014973687228500671e-04, +-3.013394290414919728e-04, +-3.011810107628080458e-04, +-3.010221141778851020e-04, +-3.008627395785496003e-04, +-3.007028872573885132e-04, +-3.005425575077552897e-04, +-3.003817506237414499e-04, +-3.002204669002180547e-04, +-3.000587066327861045e-04, +-2.998964701178183888e-04, +-2.997337576524264184e-04, +-2.995705695344905118e-04, +-2.994069060626240709e-04, +-2.992427675362176534e-04, +-2.990781542553880702e-04, +-2.989130665210216445e-04, +-2.987475046347425533e-04, +-2.985814688989232358e-04, +-2.984149596167015236e-04, +-2.982479770919540781e-04, +-2.980805216293018109e-04, +-2.979125935341125951e-04, +-2.977441931125129741e-04, +-2.975753206713573160e-04, +-2.974059765182708029e-04, +-2.972361609615991771e-04, +-2.970658743104523272e-04, +-2.968951168746663941e-04, +-2.967238889648364064e-04, +-2.965521908922928609e-04, +-2.963800229691147337e-04, +-2.962073855081109939e-04, +-2.960342788228494441e-04, +-2.958607032276156824e-04, +-2.956866590374650368e-04, +-2.955121465681649932e-04, +-2.953371661362417079e-04, +-2.951617180589478613e-04, +-2.949858026542762101e-04, +-2.948094202409564974e-04, +-2.946325711384721493e-04, +-2.944552556670183168e-04, +-2.942774741475358649e-04, +-2.940992269017064938e-04, +-2.939205142519307843e-04, +-2.937413365213686380e-04, +-2.935616940338888620e-04, +-2.933815871141085799e-04, +-2.932010160873695418e-04, +-2.930199812797415937e-04, +-2.928384830180330318e-04, +-2.926565216297920659e-04, +-2.924740974432745106e-04, +-2.922912107874838460e-04, +-2.921078619921419449e-04, +-2.919240513876951437e-04, +-2.917397793053360354e-04, +-2.915550460769730573e-04, +-2.913698520352364543e-04, +-2.911841975134828327e-04, +-2.909980828458059478e-04, +-2.908115083670041777e-04, +-2.906244744126279577e-04, +-2.904369813189238347e-04, +-2.902490294228796792e-04, +-2.900606190621955738e-04, +-2.898717505752881505e-04, +-2.896824243013144430e-04, +-2.894926405801406615e-04, +-2.893023997523501076e-04, +-2.891117021592436078e-04, +-2.889205481428447722e-04, +-2.887289380459085592e-04, +-2.885368722118857683e-04, +-2.883443509849494403e-04, +-2.881513747100001156e-04, +-2.879579437326368319e-04, +-2.877640583991845544e-04, +-2.875697190566920075e-04, +-2.873749260529037566e-04, +-2.871796797362782057e-04, +-2.869839804560016922e-04, +-2.867878285619508108e-04, +-2.865912244047423411e-04, +-2.863941683356754594e-04, +-2.861966607067787933e-04, +-2.859987018707789257e-04, +-2.858002921811103689e-04, +-2.856014319919218539e-04, +-2.854021216580793110e-04, +-2.852023615351384402e-04, +-2.850021519793616786e-04, +-2.848014933477320239e-04, +-2.846003859979155757e-04, +-2.843988302883128177e-04, +-2.841968265779993121e-04, +-2.839943752267719951e-04, +-2.837914765951168134e-04, +-2.835881310442365339e-04, +-2.833843389360145315e-04, +-2.831801006330647162e-04, +-2.829754164986701681e-04, +-2.827702868968361540e-04, +-2.825647121922528313e-04, +-2.823586927503040299e-04, +-2.821522289370932191e-04, +-2.819453211194068612e-04, +-2.817379696647238441e-04, +-2.815301749412185716e-04, +-2.813219373177641073e-04, +-2.811132571639402521e-04, +-2.809041348500002588e-04, +-2.806945707468930045e-04, +-2.804845652262731278e-04, +-2.802741186604757666e-04, +-2.800632314225174257e-04, +-2.798519038861330024e-04, +-2.796401364257292740e-04, +-2.794279294163952519e-04, +-2.792152832339254379e-04, +-2.790021982547793837e-04, +-2.787886748561360629e-04, +-2.785747134158277896e-04, +-2.783603143123963256e-04, +-2.781454779250536863e-04, +-2.779302046336972658e-04, +-2.777144948189120047e-04, +-2.774983488619794979e-04, +-2.772817671448414567e-04, +-2.770647500501248624e-04, +-2.768472979611524831e-04, +-2.766294112619038965e-04, +-2.764110903370693749e-04, +-2.761923355719884650e-04, +-2.759731473526998071e-04, +-2.757535260659066032e-04, +-2.755334720989885975e-04, +-2.753129858400082562e-04, +-2.750920676777152672e-04, +-2.748707180015110322e-04, +-2.746489372014776151e-04, +-2.744267256683829460e-04, +-2.742040837936450971e-04, +-2.739810119693833479e-04, +-2.737575105883721617e-04, +-2.735335800440543579e-04, +-2.733092207305414922e-04, +-2.730844330426280045e-04, +-2.728592173757561461e-04, +-2.726335741260667734e-04, +-2.724075036903358688e-04, +-2.721810064660305935e-04, +-2.719540828512678169e-04, +-2.717267332448270725e-04, +-2.714989580461743567e-04, +-2.712707576554273799e-04, +-2.710421324733604449e-04, +-2.708130829014104650e-04, +-2.705836093416818969e-04, +-2.703537121969546006e-04, +-2.701233918706444294e-04, +-2.698926487668305515e-04, +-2.696614832902686229e-04, +-2.694298958463492086e-04, +-2.691978868411389276e-04, +-2.689654566813535650e-04, +-2.687326057743716248e-04, +-2.684993345282118320e-04, +-2.682656433515664181e-04, +-2.680315326537573736e-04, +-2.677970028447969461e-04, +-2.675620543353114753e-04, +-2.673266875366061743e-04, +-2.670909028606234417e-04, +-2.668547007199538663e-04, +-2.666180815278440877e-04, +-2.663810456982045483e-04, +-2.661435936455689984e-04, +-2.659057257851232272e-04, +-2.656674425327162307e-04, +-2.654287443048164094e-04, +-2.651896315185733682e-04, +-2.649501045917477138e-04, +-2.647101639427671630e-04, +-2.644698099906832821e-04, +-2.642290431552098682e-04, +-2.639878638566784969e-04, +-2.637462725160950091e-04, +-2.635042695550732120e-04, +-2.632618553958897939e-04, +-2.630190304614444803e-04, +-2.627757951752720676e-04, +-2.625321499615684991e-04, +-2.622880952451528088e-04, +-2.620436314514728139e-04, +-2.617987590066127583e-04, +-2.615534783372970530e-04, +-2.613077898708966729e-04, +-2.610616940353934325e-04, +-2.608151912594040009e-04, +-2.605682819721930749e-04, +-2.603209666036395515e-04, +-2.600732455842487802e-04, +-2.598251193451798298e-04, +-2.595765883182057530e-04, +-2.593276529357215550e-04, +-2.590783136307491267e-04, +-2.588285708369430995e-04, +-2.585784249885981090e-04, +-2.583278765206012536e-04, +-2.580769258684930800e-04, +-2.578255734684181981e-04, +-2.575738197571466942e-04, +-2.573216651720727213e-04, +-2.570691101512291902e-04, +-2.568161551332433169e-04, +-2.565628005573654630e-04, +-2.563090468634812236e-04, +-2.560548944920687108e-04, +-2.558003438842587803e-04, +-2.555453954817638539e-04, +-2.552900497269354908e-04, +-2.550343070627266568e-04, +-2.547781679327032717e-04, +-2.545216327810506597e-04, +-2.542647020525834163e-04, +-2.540073761927006302e-04, +-2.537496556474166747e-04, +-2.534915408633738390e-04, +-2.532330322877965204e-04, +-2.529741303685564932e-04, +-2.527148355540943586e-04, +-2.524551482934861684e-04, +-2.521950690363930644e-04, +-2.519345982330964601e-04, +-2.516737363344789596e-04, +-2.514124837920327050e-04, +-2.511508410578346031e-04, +-2.508888085845904520e-04, +-2.506263868255863693e-04, +-2.503635762347073313e-04, +-2.501003772664661760e-04, +-2.498367903759563316e-04, +-2.495728160188667786e-04, +-2.493084546514833509e-04, +-2.490437067306944274e-04, +-2.487785727140016663e-04, +-2.485130530594751187e-04, +-2.482471482257841825e-04, +-2.479808586722099628e-04, +-2.477141848586084084e-04, +-2.474471272454247862e-04, +-2.471796862937211117e-04, +-2.469118624651355453e-04, +-2.466436562218842356e-04, +-2.463750680267966101e-04, +-2.461060983432594306e-04, +-2.458367476352887838e-04, +-2.455670163674470319e-04, +-2.452969050049132313e-04, +-2.450264140134308737e-04, +-2.447555438593307636e-04, +-2.444842950095313426e-04, +-2.442126679315540319e-04, +-2.439406630934698342e-04, +-2.436682809639390706e-04, +-2.433955220122199726e-04, +-2.431223867081198117e-04, +-2.428488755220672697e-04, +-2.425749889250275459e-04, +-2.423007273885714752e-04, +-2.420260913848302348e-04, +-2.417510813865098463e-04, +-2.414756978668968130e-04, +-2.411999412998700734e-04, +-2.409238121598519680e-04, +-2.406473109218415518e-04, +-2.403704380614314260e-04, +-2.400931940547497878e-04, +-2.398155793785349693e-04, +-2.395375945100743965e-04, +-2.392592399272177629e-04, +-2.389805161083839681e-04, +-2.387014235325619037e-04, +-2.384219626793272046e-04, +-2.381421340287893668e-04, +-2.378619380616261438e-04, +-2.375813752591004330e-04, +-2.373004461030168803e-04, +-2.370191510757361109e-04, +-2.367374906602113475e-04, +-2.364554653399370194e-04, +-2.361730755989609328e-04, +-2.358903219218884721e-04, +-2.356072047938897822e-04, +-2.353237247007089581e-04, +-2.350398821286181006e-04, +-2.347556775644468892e-04, +-2.344711114956000368e-04, +-2.341861844100110487e-04, +-2.339008967961854826e-04, +-2.336152491431712412e-04, +-2.333292419405762989e-04, +-2.330428756785388861e-04, +-2.327561508477729178e-04, +-2.324690679395078740e-04, +-2.321816274455648296e-04, +-2.318938298582697455e-04, +-2.316056756705231012e-04, +-2.313171653757539791e-04, +-2.310282994679345111e-04, +-2.307390784415861405e-04, +-2.304495027917935533e-04, +-2.301595730141501434e-04, +-2.298692896047973958e-04, +-2.295786530604350514e-04, +-2.292876638782713147e-04, +-2.289963225560957664e-04, +-2.287046295921929800e-04, +-2.284125854854139701e-04, +-2.281201907351218473e-04, +-2.278274458412330177e-04, +-2.275343513041916226e-04, +-2.272409076249815735e-04, +-2.269471153051005581e-04, +-2.266529748466017012e-04, +-2.263584867520521203e-04, +-2.260636515245397567e-04, +-2.257684696677165267e-04, +-2.254729416857404790e-04, +-2.251770680832930341e-04, +-2.248808493655794175e-04, +-2.245842860383386616e-04, +-2.242873786078535534e-04, +-2.239901275808984843e-04, +-2.236925334647767735e-04, +-2.233945967673349529e-04, +-2.230963179969187209e-04, +-2.227976976623890159e-04, +-2.224987362731599633e-04, +-2.221994343391429038e-04, +-2.218997923707619513e-04, +-2.215998108789577609e-04, +-2.212994903751929767e-04, +-2.209988313714654864e-04, +-2.206978343802480853e-04, +-2.203964999145609823e-04, +-2.200948284879158284e-04, +-2.197928206143365596e-04, +-2.194904768083643038e-04, +-2.191877975850700926e-04, +-2.188847834600020337e-04, +-2.185814349492213335e-04, +-2.182777525693178824e-04, +-2.179737368373540389e-04, +-2.176693882709444274e-04, +-2.173647073881629398e-04, +-2.170596947076181157e-04, +-2.167543507484046505e-04, +-2.164486760301103621e-04, +-2.161426710728586373e-04, +-2.158363363972525407e-04, +-2.155296725243882594e-04, +-2.152226799758610659e-04, +-2.149153592737830445e-04, +-2.146077109407308603e-04, +-2.142997354998220870e-04, +-2.139914334746249468e-04, +-2.136828053892330390e-04, +-2.133738517682071459e-04, +-2.130645731366151039e-04, +-2.127549700200343245e-04, +-2.124450429445009722e-04, +-2.121347924365459871e-04, +-2.118242190232115106e-04, +-2.115133232320055661e-04, +-2.112021055909161799e-04, +-2.108905666284529613e-04, +-2.105787068735894224e-04, +-2.102665268557774524e-04, +-2.099540271049510852e-04, +-2.096412081515347666e-04, +-2.093280705264547381e-04, +-2.090146147610845017e-04, +-2.087008413872834176e-04, +-2.083867509374100126e-04, +-2.080723439442745465e-04, +-2.077576209411840060e-04, +-2.074425824619171416e-04, +-2.071272290407311350e-04, +-2.068115612123399151e-04, +-2.064955795119583122e-04, +-2.061792844752372499e-04, +-2.058626766383501289e-04, +-2.055457565378915623e-04, +-2.052285247109616182e-04, +-2.049109816951073543e-04, +-2.045931280283446916e-04, +-2.042749642491640248e-04, +-2.039564908965425284e-04, +-2.036377085098881035e-04, +-2.033186176290794657e-04, +-2.029992187944810534e-04, +-2.026795125468844262e-04, +-2.023594994275914780e-04, +-2.020391799783170751e-04, +-2.017185547412692331e-04, +-2.013976242590962893e-04, +-2.010763890748950883e-04, +-2.007548497322577113e-04, +-2.004330067752091611e-04, +-2.001108607482163075e-04, +-1.997884121962290049e-04, +-1.994656616646290541e-04, +-1.991426096992440255e-04, +-1.988192568463891365e-04, +-1.984956036528072682e-04, +-1.981716506656868001e-04, +-1.978473984326623697e-04, +-1.975228475018253615e-04, +-1.971979984217356980e-04, +-1.968728517413623712e-04, +-1.965474080101281659e-04, +-1.962216677779210711e-04, +-1.958956315950507218e-04, +-1.955693000122623313e-04, +-1.952426735807792190e-04, +-1.949157528522425559e-04, +-1.945885383787264347e-04, +-1.942610307127442127e-04, +-1.939332304072534992e-04, +-1.936051380156704937e-04, +-1.932767540918119272e-04, +-1.929480791899370207e-04, +-1.926191138647587880e-04, +-1.922898586713973337e-04, +-1.919603141654165806e-04, +-1.916304809028353826e-04, +-1.913003594400662676e-04, +-1.909699503339591577e-04, +-1.906392541418122926e-04, +-1.903082714213169080e-04, +-1.899770027306408010e-04, +-1.896454486283270108e-04, +-1.893136096733797420e-04, +-1.889814864252049235e-04, +-1.886490794436240586e-04, +-1.883163892889166177e-04, +-1.879834165217625483e-04, +-1.876501617032532798e-04, +-1.873166253948992316e-04, +-1.869828081586521204e-04, +-1.866487105568431608e-04, +-1.863143331522710481e-04, +-1.859796765080996101e-04, +-1.856447411879430249e-04, +-1.853095277557991426e-04, +-1.849740367761009308e-04, +-1.846382688136854664e-04, +-1.843022244338077861e-04, +-1.839659042021099056e-04, +-1.836293086846729696e-04, +-1.832924384479630415e-04, +-1.829552940588459844e-04, +-1.826178760846297990e-04, +-1.822801850930067273e-04, +-1.819422216520634168e-04, +-1.816039863302905974e-04, +-1.812654796965892066e-04, +-1.809267023202825603e-04, +-1.805876547710565582e-04, +-1.802483376190055467e-04, +-1.799087514346422111e-04, +-1.795688967888558346e-04, +-1.792287742529230586e-04, +-1.788883843985540698e-04, +-1.785477277978319666e-04, +-1.782068050232241423e-04, +-1.778656166475910680e-04, +-1.775241632441920388e-04, +-1.771824453867006772e-04, +-1.768404636491335391e-04, +-1.764982186059335157e-04, +-1.761557108319098774e-04, +-1.758129409022497660e-04, +-1.754699093925647343e-04, +-1.751266168788277538e-04, +-1.747830639373885292e-04, +-1.744392511449795429e-04, +-1.740951790787378202e-04, +-1.737508483161429127e-04, +-1.734062594351083242e-04, +-1.730614130138729547e-04, +-1.727163096310919022e-04, +-1.723709498657747445e-04, +-1.720253342972983060e-04, +-1.716794635054540369e-04, +-1.713333380703841542e-04, +-1.709869585725964946e-04, +-1.706403255929707765e-04, +-1.702934397127812049e-04, +-1.699463015136350251e-04, +-1.695989115775594475e-04, +-1.692512704868997337e-04, +-1.689033788244049563e-04, +-1.685552371731602632e-04, +-1.682068461166313304e-04, +-1.678582062386720054e-04, +-1.675093181234604204e-04, +-1.671601823555458031e-04, +-1.668107995198606737e-04, +-1.664611702016761485e-04, +-1.661112949866145173e-04, +-1.657611744606955111e-04, +-1.654108092102733914e-04, +-1.650601998220508552e-04, +-1.647093468830862994e-04, +-1.643582509808017348e-04, +-1.640069127029942250e-04, +-1.636553326377761740e-04, +-1.633035113736182873e-04, +-1.629514494993666482e-04, +-1.625991476041854995e-04, +-1.622466062776104227e-04, +-1.618938261095172497e-04, +-1.615408076901380535e-04, +-1.611875516100251537e-04, +-1.608340584601076573e-04, +-1.604803288316204160e-04, +-1.601263633161944763e-04, +-1.597721625057488216e-04, +-1.594177269925823128e-04, +-1.590630573693097743e-04, +-1.587081542288784196e-04, +-1.583530181646102442e-04, +-1.579976497701435321e-04, +-1.576420496394426683e-04, +-1.572862183668075444e-04, +-1.569301565468954589e-04, +-1.565738647746576378e-04, +-1.562173436454324484e-04, +-1.558605937548340791e-04, +-1.555036156988452657e-04, +-1.551464100737555733e-04, +-1.547889774761738643e-04, +-1.544313185030756787e-04, +-1.540734337517386419e-04, +-1.537153238197500548e-04, +-1.533569893050524841e-04, +-1.529984308058876280e-04, +-1.526396489208127689e-04, +-1.522806442487433551e-04, +-1.519214173888933973e-04, +-1.515619689407872049e-04, +-1.512022995042668668e-04, +-1.508424096794999496e-04, +-1.504823000669938086e-04, +-1.501219712675300752e-04, +-1.497614238822148828e-04, +-1.494006585124888137e-04, +-1.490396757600819866e-04, +-1.486784762270272565e-04, +-1.483170605157072691e-04, +-1.479554292287899237e-04, +-1.475935829692437147e-04, +-1.472315223403433963e-04, +-1.468692479456784941e-04, +-1.465067603891666130e-04, +-1.461440602749907434e-04, +-1.457811482076434970e-04, +-1.454180247919449143e-04, +-1.450546906329750277e-04, +-1.446911463361626302e-04, +-1.443273925072108992e-04, +-1.439634297521140394e-04, +-1.435992586771618900e-04, +-1.432348798889655393e-04, +-1.428702939943898875e-04, +-1.425055016006513602e-04, +-1.421405033152022511e-04, +-1.417752997458270265e-04, +-1.414098915005777878e-04, +-1.410442791877871739e-04, +-1.406784634161179631e-04, +-1.403124447944970184e-04, +-1.399462239321294362e-04, +-1.395798014385060269e-04, +-1.392131779234281712e-04, +-1.388463539969386469e-04, +-1.384793302694214306e-04, +-1.381121073514849555e-04, +-1.377446858540591482e-04, +-1.373770663883212145e-04, +-1.370092495657519640e-04, +-1.366412359981012509e-04, +-1.362730262974050507e-04, +-1.359046210759494097e-04, +-1.355360209463278814e-04, +-1.351672265213848493e-04, +-1.347982384142271280e-04, +-1.344290572382754359e-04, +-1.340596836071960901e-04, +-1.336901181349177848e-04, +-1.333203614356372559e-04, +-1.329504141238264101e-04, +-1.325802768142500781e-04, +-1.322099501218958943e-04, +-1.318394346620260945e-04, +-1.314687310501894959e-04, +-1.310978399021575571e-04, +-1.307267618340199225e-04, +-1.303554974620702294e-04, +-1.299840474029021950e-04, +-1.296124122733344815e-04, +-1.292405926904773472e-04, +-1.288685892716556953e-04, +-1.284964026345071671e-04, +-1.281240333968672166e-04, +-1.277514821768644391e-04, +-1.273787495928567384e-04, +-1.270058362634433891e-04, +-1.266327428075161832e-04, +-1.262594698441915869e-04, +-1.258860179928252682e-04, +-1.255123878730209877e-04, +-1.251385801046529876e-04, +-1.247645953077999360e-04, +-1.243904341028412590e-04, +-1.240160971103433261e-04, +-1.236415849511546163e-04, +-1.232668982463403949e-04, +-1.228920376171976480e-04, +-1.225170036853040620e-04, +-1.221417970724503958e-04, +-1.217664184006553486e-04, +-1.213908682921742465e-04, +-1.210151473695226918e-04, +-1.206392562554076082e-04, +-1.202631955728190855e-04, +-1.198869659449538897e-04, +-1.195105679952321461e-04, +-1.191340023473025838e-04, +-1.187572696250518875e-04, +-1.183803704526184390e-04, +-1.180033054543264256e-04, +-1.176260752547339918e-04, +-1.172486804786490822e-04, +-1.168711217510604727e-04, +-1.164933996972392386e-04, +-1.161155149426179470e-04, +-1.157374681128934120e-04, +-1.153592598339550293e-04, +-1.149808907319118539e-04, +-1.146023614330976011e-04, +-1.142236725640885628e-04, +-1.138448247516336088e-04, +-1.134658186227047920e-04, +-1.130866548045122831e-04, +-1.127073339244363776e-04, +-1.123278566101281508e-04, +-1.119482234893882840e-04, +-1.115684351902708097e-04, +-1.111884923410026227e-04, +-1.108083955700515412e-04, +-1.104281455060500465e-04, +-1.100477427778934984e-04, +-1.096671880146228784e-04, +-1.092864818455241031e-04, +-1.089056249000591091e-04, +-1.085246178078831734e-04, +-1.081434611988927675e-04, +-1.077621557031579298e-04, +-1.073807019509382310e-04, +-1.069991005726895637e-04, +-1.066173521990887945e-04, +-1.062354574609652964e-04, +-1.058534169894011565e-04, +-1.054712314156115748e-04, +-1.050889013710456545e-04, +-1.047064274873177038e-04, +-1.043238103962222527e-04, +-1.039410507297852134e-04, +-1.035581491201943016e-04, +-1.031751061998064772e-04, +-1.027919226011972479e-04, +-1.024085989571013095e-04, +-1.020251359004285786e-04, +-1.016415340643123577e-04, +-1.012577940820425085e-04, +-1.008739165870796813e-04, +-1.004899022130639215e-04, +-1.001057515938214590e-04, +-9.972146536338118812e-05, +-9.933704415590487223e-05, +-9.895248860573766750e-05, +-9.856779934742472473e-05, +-9.818297701564024187e-05, +-9.779802224529000247e-05, +-9.741293567139147646e-05, +-9.702771792917347187e-05, +-9.664236965400807404e-05, +-9.625689148143463361e-05, +-9.587128404716784382e-05, +-9.548554798711310907e-05, +-9.509968393729737281e-05, +-9.471369253391966850e-05, +-9.432757441336698959e-05, +-9.394133021214423650e-05, +-9.355496056696848805e-05, +-9.316846611468970556e-05, +-9.278184749230755158e-05, +-9.239510533697884375e-05, +-9.200824028604135307e-05, +-9.162125297694640716e-05, +-9.123414404735764752e-05, +-9.084691413503216033e-05, +-9.045956387792197133e-05, +-9.007209391410358622e-05, +-8.968450488179484999e-05, +-8.929679741940476604e-05, +-8.890897216546528629e-05, +-8.852102975864493148e-05, +-8.813297083775858964e-05, +-8.774479604179079935e-05, +-8.735650600982695706e-05, +-8.696810138115474429e-05, +-8.657958279514295439e-05, +-8.619095089134354314e-05, +-8.580220630941357972e-05, +-8.541334968917376651e-05, +-8.502438167057333807e-05, +-8.463530289370601244e-05, +-8.424611399877506631e-05, +-8.385681562615189544e-05, +-8.346740841629734229e-05, +-8.307789300986550835e-05, +-8.268827004757969433e-05, +-8.229854017033665970e-05, +-8.190870401913612252e-05, +-8.151876223510486931e-05, +-8.112871545950521188e-05, +-8.073856433375130456e-05, +-8.034830949933734288e-05, +-7.995795159789120452e-05, +-7.956749127118792049e-05, +-7.917692916108076055e-05, +-7.878626590960421884e-05, +-7.839550215885132288e-05, +-7.800463855107598221e-05, +-7.761367572861512919e-05, +-7.722261433395652224e-05, +-7.683145500965900276e-05, +-7.644019839845659216e-05, +-7.604884514313517733e-05, +-7.565739588663605202e-05, +-7.526585127198486089e-05, +-7.487421194230891967e-05, +-7.448247854088698003e-05, +-7.409065171108022009e-05, +-7.369873209634665080e-05, +-7.330672034025058912e-05, +-7.291461708648644272e-05, +-7.252242297880896868e-05, +-7.213013866113592032e-05, +-7.173776477742531551e-05, +-7.134530197177901866e-05, +-7.095275088837206426e-05, +-7.056011217146931295e-05, +-7.016738646547510800e-05, +-6.977457441486488920e-05, +-6.938167666419950441e-05, +-6.898869385813442519e-05, +-6.859562664142614368e-05, +-6.820247565894934358e-05, +-6.780924155561710292e-05, +-6.741592497647597854e-05, +-6.702252656663474696e-05, +-6.662904697128962559e-05, +-6.623548683573271599e-05, +-6.584184680536716910e-05, +-6.544812752563717293e-05, +-6.505432964207885584e-05, +-6.466045380033726782e-05, +-6.426650064609444374e-05, +-6.387247082517405591e-05, +-6.347836498341797771e-05, +-6.308418376678930984e-05, +-6.268992782130273394e-05, +-6.229559779304812107e-05, +-6.190119432819950348e-05, +-6.150671807303082265e-05, +-6.111216967384504957e-05, +-6.071754977702580633e-05, +-6.032285902905339196e-05, +-5.992809807643444483e-05, +-5.953326756580494864e-05, +-5.913836814380741262e-05, +-5.874340045719482619e-05, +-5.834836515274987239e-05, +-5.795326287735512314e-05, +-5.755809427791264566e-05, +-5.716286000144782842e-05, +-5.676756069498626993e-05, +-5.637219700565708290e-05, +-5.597676958062257699e-05, +-5.558127906709393223e-05, +-5.518572611238340342e-05, +-5.479011136383278309e-05, +-5.439443546882975262e-05, +-5.399869907481597990e-05, +-5.360290282931218469e-05, +-5.320704737984685237e-05, +-5.281113337406039183e-05, +-5.241516145958165170e-05, +-5.201913228413139380e-05, +-5.162304649544313971e-05, +-5.122690474132278145e-05, +-5.083070766961335178e-05, +-5.043445592821019620e-05, +-5.003815016502619718e-05, +-4.964179102805103935e-05, +-4.924537916527185272e-05, +-4.884891522477720794e-05, +-4.845239985463325300e-05, +-4.805583370298809482e-05, +-4.765921741800005214e-05, +-4.726255164786345952e-05, +-4.686583704081631103e-05, +-4.646907424515642833e-05, +-4.607226390917073687e-05, +-4.567540668118591843e-05, +-4.527850320958628014e-05, +-4.488155414274105871e-05, +-4.448456012910998109e-05, +-4.408752181711810008e-05, +-4.369043985526115847e-05, +-4.329331489203355055e-05, +-4.289614757595378058e-05, +-4.249893855557262137e-05, +-4.210168847948922151e-05, +-4.170439799627082011e-05, +-4.130706775454857682e-05, +-4.090969840294660396e-05, +-4.051229059009750451e-05, +-4.011484496469507109e-05, +-3.971736217542243052e-05, +-3.931984287096844909e-05, +-3.892228770003568791e-05, +-3.852469731136586137e-05, +-3.812707235366783251e-05, +-3.772941347572302461e-05, +-3.733172132626019584e-05, +-3.693399655406091176e-05, +-3.653623980788727653e-05, +-3.613845173649896840e-05, +-3.574063298870509847e-05, +-3.534278421329234161e-05, +-3.494490605904140959e-05, +-3.454699917473528424e-05, +-3.414906420916670519e-05, +-3.375110181115486662e-05, +-3.335311262947366338e-05, +-3.295509731290356328e-05, +-3.255705651024826320e-05, +-3.215899087027190693e-05, +-3.176090104175086944e-05, +-3.136278767348172573e-05, +-3.096465141420934791e-05, +-3.056649291267900790e-05, +-3.016831281765272176e-05, +-2.977011177783785498e-05, +-2.937189044199189030e-05, +-2.897364945879773090e-05, +-2.857538947696877654e-05, +-2.817711114517678684e-05, +-2.777881511207789874e-05, +-2.738050202631996859e-05, +-2.698217253655960427e-05, +-2.658382729138989299e-05, +-2.618546693939264284e-05, +-2.578709212915529641e-05, +-2.538870350919857717e-05, +-2.499030172808191122e-05, +-2.459188743427871696e-05, +-2.419346127628091872e-05, +-2.379502390251885482e-05, +-2.339657596143068332e-05, +-2.299811810138173445e-05, +-2.259965097076986108e-05, +-2.220117521790011854e-05, +-2.180269149109029478e-05, +-2.140420043859884476e-05, +-2.100570270864140764e-05, +-2.060719894944333295e-05, +-2.020868980916724913e-05, +-1.981017593593011262e-05, +-1.941165797781079722e-05, +-1.901313658285799869e-05, +-1.861461239910703301e-05, +-1.821608607450760149e-05, +-1.781755825697600522e-05, +-1.741902959441196040e-05, +-1.702050073464438819e-05, +-1.662197232544778962e-05, +-1.622344501459471071e-05, +-1.582491944978361604e-05, +-1.542639627864671523e-05, +-1.502787614880212328e-05, +-1.462935970777298926e-05, +-1.423084760309295358e-05, +-1.383234048218079219e-05, +-1.343383899244590950e-05, +-1.303534378121625751e-05, +-1.263685549576400435e-05, +-1.223837478331321511e-05, +-1.183990229105665197e-05, +-1.144143866608370689e-05, +-1.104298455543261442e-05, +-1.064454060610708066e-05, +-1.024610746500435831e-05, +-9.847685779020639592e-06, +-9.449276194925656383e-06, +-9.050879359468323891e-06, +-8.652495919304578517e-06, +-8.254126521022949777e-06, +-7.855771811152422466e-06, +-7.457432436179164710e-06, +-7.059109042474387867e-06, +-6.660802276346693158e-06, +-6.262512784058611682e-06, +-5.864241211754700638e-06, +-5.465988205566920149e-06, +-5.067754411489331681e-06, +-4.669540475483623949e-06, +-4.271347043398097600e-06, +-3.873174761037715689e-06, +-3.475024274083091328e-06, +-3.076896228196019100e-06, +-2.678791268894145517e-06, +-2.280710041656422935e-06, +-1.882653191851082104e-06, +-1.484621364752321469e-06, +-1.086615205592529294e-06, +-6.886353594902317570e-07, +-2.906824714667969156e-07, + 1.072428135457262279e-07, + 5.051398506967759404e-07, + 9.030079952005729188e-07, + 1.300846602408159304e-06, + 1.698655027755193987e-06, + 2.096432626745245775e-06, + 2.494178755012948481e-06, + 2.891892768262935358e-06, + 3.289574022306359343e-06, + 3.687221873044202491e-06, + 4.084835676503803841e-06, + 4.482414788777770559e-06, + 4.879958566104926752e-06, + 5.277466364764804934e-06, + 5.674937541202962005e-06, + 6.072371451925526188e-06, + 6.469767453571230413e-06, + 6.867124902885770079e-06, + 7.264443156714051016e-06, + 7.661721571983501239e-06, + 8.058959505775959478e-06, + 8.456156315275590281e-06, + 8.853311357752170356e-06, + 9.250423990633016070e-06, + 9.647493571397697251e-06, + 1.004451945770310838e-05, + 1.044150100727818579e-05, + 1.083843757799591392e-05, + 1.123532852784761619e-05, + 1.163217321493522328e-05, + 1.202897099745461537e-05, + 1.242572123377632744e-05, + 1.282242328234918744e-05, + 1.321907650177216157e-05, + 1.361568025077776097e-05, + 1.401223388817984073e-05, + 1.440873677294550115e-05, + 1.480518826417853838e-05, + 1.520158772111138917e-05, + 1.559793450309749063e-05, + 1.599422796959454283e-05, + 1.639046748023640331e-05, + 1.678665239478099110e-05, + 1.718278207309349690e-05, + 1.757885587520076933e-05, + 1.797487316127436752e-05, + 1.837083329157874299e-05, + 1.876673562654283090e-05, + 1.916257952674356340e-05, + 1.955836435289798206e-05, + 1.995408946585545531e-05, + 2.034975422658097835e-05, + 2.074535799622692026e-05, + 2.114090013608103307e-05, + 2.153638000754987703e-05, + 2.193179697222160949e-05, + 2.232715039181403129e-05, + 2.272243962816680756e-05, + 2.311766404331316743e-05, + 2.351282299942783179e-05, + 2.390791585881041822e-05, + 2.430294198395735073e-05, + 2.469790073745650578e-05, + 2.509279148211203105e-05, + 2.548761358083983174e-05, + 2.588236639673840289e-05, + 2.627704929306404853e-05, + 2.667166163322292976e-05, + 2.706620278075401567e-05, + 2.746067209940146741e-05, + 2.785506895306191202e-05, + 2.824939270576856573e-05, + 2.864364272176219491e-05, + 2.903781836538677860e-05, + 2.943191900121342605e-05, + 2.982594399393652705e-05, + 3.021989270845294614e-05, + 3.061376450980237459e-05, + 3.100755876320281763e-05, + 3.140127483403478206e-05, + 3.179491208787647220e-05, + 3.218846989044441622e-05, + 3.258194760765504883e-05, + 3.297534460560864480e-05, + 3.336866025053750759e-05, + 3.376189390887732346e-05, + 3.415504494725068833e-05, + 3.454811273245884077e-05, + 3.494109663147470276e-05, + 3.533399601142549179e-05, + 3.572681023966473902e-05, + 3.611953868372016623e-05, + 3.651218071127711786e-05, + 3.690473569023269661e-05, + 3.729720298867860589e-05, + 3.768958197484986034e-05, + 3.808187201719613981e-05, + 3.847407248437367827e-05, + 3.886618274519398772e-05, + 3.925820216870338450e-05, + 3.965013012407910236e-05, + 4.004196598075294571e-05, + 4.043370910830752470e-05, + 4.082535887654642346e-05, + 4.121691465546966997e-05, + 4.160837581526588243e-05, + 4.199974172629572836e-05, + 4.239101175916276367e-05, + 4.278218528466223121e-05, + 4.317326167376431663e-05, + 4.356424029768540080e-05, + 4.395512052778392895e-05, + 4.434590173568367768e-05, + 4.473658329317059990e-05, + 4.512716457226234932e-05, + 4.551764494518476000e-05, + 4.590802378436285429e-05, + 4.629830046240510831e-05, + 4.668847435217362017e-05, + 4.707854482673343708e-05, + 4.746851125933582475e-05, + 4.785837302348872697e-05, + 4.824812949286263656e-05, + 4.863778004136920676e-05, + 4.902732404314526606e-05, + 4.941676087254535753e-05, + 4.980608990413326170e-05, + 5.019531051266628240e-05, + 5.058442207316582836e-05, + 5.097342396086537145e-05, + 5.136231555119551861e-05, + 5.175109621983569442e-05, + 5.213976534269888091e-05, + 5.252832229587973853e-05, + 5.291676645572556038e-05, + 5.330509719881946709e-05, + 5.369331390197324430e-05, + 5.408141594221931958e-05, + 5.446940269679461456e-05, + 5.485727354321023885e-05, + 5.524502785920195550e-05, + 5.563266502271191225e-05, + 5.602018441195212828e-05, + 5.640758540534335881e-05, + 5.679486738155188342e-05, + 5.718202971947228757e-05, + 5.756907179826368848e-05, + 5.795599299729010403e-05, + 5.834279269619869828e-05, + 5.872947027481762252e-05, + 5.911602511327802189e-05, + 5.950245659191100226e-05, + 5.988876409131788661e-05, + 6.027494699234543416e-05, + 6.066100467607781052e-05, + 6.104693652382070415e-05, + 6.143274191717109473e-05, + 6.181842023796668196e-05, + 6.220397086826960891e-05, + 6.258939319043628469e-05, + 6.297468658701473759e-05, + 6.335985044086677755e-05, + 6.374488413506547132e-05, + 6.412978705297327274e-05, + 6.451455857818248654e-05, + 6.489919809455251063e-05, + 6.528370498619053735e-05, + 6.566807863749013745e-05, + 6.605231843306992145e-05, + 6.643642375783495959e-05, + 6.682039399696184702e-05, + 6.720422853584660783e-05, + 6.758792676017527667e-05, + 6.797148805590744593e-05, + 6.835491180926859503e-05, + 6.873819740674285339e-05, + 6.912134423505620880e-05, + 6.950435168124638431e-05, + 6.988721913261293777e-05, + 7.026994597669984687e-05, + 7.065253160134939397e-05, + 7.103497539468456138e-05, + 7.141727674505995765e-05, + 7.179943504113027138e-05, + 7.218144967183415727e-05, + 7.256332002638759540e-05, + 7.294504549427555638e-05, + 7.332662546523572482e-05, + 7.370805932933690067e-05, + 7.408934647688585268e-05, + 7.447048629849651767e-05, + 7.485147818506556524e-05, + 7.523232152776414435e-05, + 7.561301571802232497e-05, + 7.599356014759917825e-05, + 7.637395420853051791e-05, + 7.675419729311475146e-05, + 7.713428879398107649e-05, + 7.751422810398835169e-05, + 7.789401461634518585e-05, + 7.827364772450909347e-05, + 7.865312682225513829e-05, + 7.903245130366059188e-05, + 7.941162056305388123e-05, + 7.979063399508390993e-05, + 8.016949099470509622e-05, + 8.054819095716792682e-05, + 8.092673327799557886e-05, + 8.130511735305333591e-05, + 8.168334257844622574e-05, + 8.206140835064004442e-05, + 8.243931406635956322e-05, + 8.281705912266703847e-05, + 8.319464291691083390e-05, + 8.357206484671899673e-05, + 8.394932431006781992e-05, + 8.432642070523111506e-05, + 8.470335343076545369e-05, + 8.508012188556101632e-05, + 8.545672546882676602e-05, + 8.583316358003854223e-05, + 8.620943561901015732e-05, + 8.658554098587546656e-05, + 8.696147908108239151e-05, + 8.733724930538398887e-05, + 8.771285105982350205e-05, + 8.808828374580295051e-05, + 8.846354676503268726e-05, + 8.883863951951543399e-05, + 8.921356141159917654e-05, + 8.958831184395988549e-05, + 8.996289021955218492e-05, + 9.033729594167805017e-05, + 9.071152841397896096e-05, + 9.108558704038699028e-05, + 9.145947122520060369e-05, + 9.183318037298527866e-05, + 9.220671388869137086e-05, + 9.258007117755589902e-05, + 9.295325164516846442e-05, + 9.332625469744887565e-05, + 9.369907974063861056e-05, + 9.407172618128571868e-05, + 9.444419342631209604e-05, + 9.481648088296441141e-05, + 9.518858795879853445e-05, + 9.556051406174739327e-05, + 9.593225860002106513e-05, + 9.630382098222549662e-05, + 9.667520061726278416e-05, + 9.704639691439885529e-05, + 9.741740928324746319e-05, + 9.778823713372187187e-05, + 9.815887987610175146e-05, + 9.852933692101779612e-05, + 9.889960767944398550e-05, + 9.926969156267457259e-05, + 9.963958798238977278e-05, + 1.000092963505668051e-04, + 1.003788160795550274e-04, + 1.007481465820605002e-04, + 1.011172872711380987e-04, + 1.014862375601846285e-04, + 1.018549968629229826e-04, + 1.022235645934690772e-04, + 1.025919401662842961e-04, + 1.029601229961578856e-04, + 1.033281124982594033e-04, + 1.036959080881220074e-04, + 1.040635091815933966e-04, + 1.044309151949049960e-04, + 1.047981255446538509e-04, + 1.051651396477966497e-04, + 1.055319569216415929e-04, + 1.058985767838345558e-04, + 1.062649986524231646e-04, + 1.066312219458107318e-04, + 1.069972460827397760e-04, + 1.073630704823500947e-04, + 1.077286945641234696e-04, + 1.080941177479154342e-04, + 1.084593394539418566e-04, + 1.088243591028114249e-04, + 1.091891761154691737e-04, + 1.095537899132717550e-04, + 1.099181999178895755e-04, + 1.102824055514233615e-04, + 1.106464062363048600e-04, + 1.110102013953649262e-04, + 1.113737904518173285e-04, + 1.117371728292112739e-04, + 1.121003479514966498e-04, + 1.124633152430092248e-04, + 1.128260741284637503e-04, + 1.131886240329293763e-04, + 1.135509643818974411e-04, + 1.139130946011820500e-04, + 1.142750141170376029e-04, + 1.146367223560606331e-04, + 1.149982187452645090e-04, + 1.153595027120218360e-04, + 1.157205736841009530e-04, + 1.160814310896479218e-04, + 1.164420743572205973e-04, + 1.168025029157329680e-04, + 1.171627161945132010e-04, + 1.175227136232873251e-04, + 1.178824946321330842e-04, + 1.182420586515431734e-04, + 1.186014051124125677e-04, + 1.189605334460294819e-04, + 1.193194430840693946e-04, + 1.196781334585793810e-04, + 1.200366040020423654e-04, + 1.203948541473316529e-04, + 1.207528833276948693e-04, + 1.211106909768030213e-04, + 1.214682765287345182e-04, + 1.218256394179295134e-04, + 1.221827790792539669e-04, + 1.225396949479850769e-04, + 1.228963864598030665e-04, + 1.232528530507850310e-04, + 1.236090941573901928e-04, + 1.239651092165312417e-04, + 1.243208976654890357e-04, + 1.246764589419758909e-04, + 1.250317924841219208e-04, + 1.253868977304265994e-04, + 1.257417741198243284e-04, + 1.260964210916695294e-04, + 1.264508380857291088e-04, + 1.268050245421592558e-04, + 1.271589799015709280e-04, + 1.275127036049339001e-04, + 1.278661950936900893e-04, + 1.282194538096593389e-04, + 1.285724791951020033e-04, + 1.289252706927057211e-04, + 1.292778277455383608e-04, + 1.296301497971120693e-04, + 1.299822362913676877e-04, + 1.303340866726691123e-04, + 1.306857003857787110e-04, + 1.310370768759234051e-04, + 1.313882155886992871e-04, + 1.317391159701831300e-04, + 1.320897774668393907e-04, + 1.324401995255912250e-04, + 1.327903815937748696e-04, + 1.331403231191314023e-04, + 1.334900235498724446e-04, + 1.338394823346311289e-04, + 1.341886989224509307e-04, + 1.345376727628295522e-04, + 1.348864033057074025e-04, + 1.352348900014200010e-04, + 1.355831323007606986e-04, + 1.359311296549681278e-04, + 1.362788815157171774e-04, + 1.366263873351130287e-04, + 1.369736465656762477e-04, + 1.373206586604053985e-04, + 1.376674230727327529e-04, + 1.380139392565077566e-04, + 1.383602066660533265e-04, + 1.387062247561120741e-04, + 1.390519929818787774e-04, + 1.393975107989843347e-04, + 1.397427776635289413e-04, + 1.400877930320283671e-04, + 1.404325563614842673e-04, + 1.407770671092920521e-04, + 1.411213247333502558e-04, + 1.414653286919693282e-04, + 1.418090784439330547e-04, + 1.421525734484844615e-04, + 1.424958131652803608e-04, + 1.428387970544542883e-04, + 1.431815245766008637e-04, + 1.435239951927703701e-04, + 1.438662083644456869e-04, + 1.442081635536046592e-04, + 1.445498602226279671e-04, + 1.448912978344100131e-04, + 1.452324758522649214e-04, + 1.455733937399896654e-04, + 1.459140509618505970e-04, + 1.462544469825357955e-04, + 1.465945812672209603e-04, + 1.469344532815585955e-04, + 1.472740624916364584e-04, + 1.476134083640281373e-04, + 1.479524903657828598e-04, + 1.482913079643771650e-04, + 1.486298606277779220e-04, + 1.489681478244285343e-04, + 1.493061690232413768e-04, + 1.496439236935909385e-04, + 1.499814113053004325e-04, + 1.503186313287015359e-04, + 1.506555832345924306e-04, + 1.509922664942205106e-04, + 1.513286805793303039e-04, + 1.516648249621495943e-04, + 1.520006991153434244e-04, + 1.523363025120765728e-04, + 1.526716346259982936e-04, + 1.530066949312365436e-04, + 1.533414829023910697e-04, + 1.536759980145177974e-04, + 1.540102397431923642e-04, + 1.543442075644639328e-04, + 1.546779009548409072e-04, + 1.550113193913535176e-04, + 1.553444623514700662e-04, + 1.556773293131665599e-04, + 1.560099197549119382e-04, + 1.563422331556616764e-04, + 1.566742689948359929e-04, + 1.570060267523810255e-04, + 1.573375059086789781e-04, + 1.576687059446538035e-04, + 1.579996263416836807e-04, + 1.583302665816590745e-04, + 1.586606261469710258e-04, + 1.589907045204657233e-04, + 1.593205011855058971e-04, + 1.596500156259561814e-04, + 1.599792473261757149e-04, + 1.603081957709989508e-04, + 1.606368604457930106e-04, + 1.609652408363714091e-04, + 1.612933364290985170e-04, + 1.616211467107998975e-04, + 1.619486711688325356e-04, + 1.622759092910308989e-04, + 1.626028605657379728e-04, + 1.629295244817944460e-04, + 1.632559005285635380e-04, + 1.635819881958846232e-04, + 1.639077869741252449e-04, + 1.642332963541629279e-04, + 1.645585158273476113e-04, + 1.648834448855574571e-04, + 1.652080830211864911e-04, + 1.655324297271369585e-04, + 1.658564844968146354e-04, + 1.661802468241119419e-04, + 1.665037162034711240e-04, + 1.668268921298378231e-04, + 1.671497740986496912e-04, + 1.674723616058926344e-04, + 1.677946541480181966e-04, + 1.681166512220421403e-04, + 1.684383523254607195e-04, + 1.687597569563091180e-04, + 1.690808646131389248e-04, + 1.694016747950135811e-04, + 1.697221870014937431e-04, + 1.700424007327026865e-04, + 1.703623154892493555e-04, + 1.706819307722844429e-04, + 1.710012460834890605e-04, + 1.713202609250309369e-04, + 1.716389747996224227e-04, + 1.719573872105086996e-04, + 1.722754976614593780e-04, + 1.725933056567487372e-04, + 1.729108107012140285e-04, + 1.732280123001694438e-04, + 1.735449099595077322e-04, + 1.738615031856157952e-04, + 1.741777914854300080e-04, + 1.744937743664267597e-04, + 1.748094513365764833e-04, + 1.751248219044033950e-04, + 1.754398855789716981e-04, + 1.757546418698807038e-04, + 1.760690902872416293e-04, + 1.763832303417361177e-04, + 1.766970615445322124e-04, + 1.770105834073850792e-04, + 1.773237954425514902e-04, + 1.776366971628536289e-04, + 1.779492880816403299e-04, + 1.782615677127788933e-04, + 1.785735355707105960e-04, + 1.788851911704120667e-04, + 1.791965340273811371e-04, + 1.795075636576931935e-04, + 1.798182795779170698e-04, + 1.801286813052163931e-04, + 1.804387683572635523e-04, + 1.807485402522984350e-04, + 1.810579965091072582e-04, + 1.813671366470163341e-04, + 1.816759601858783553e-04, + 1.819844666461305888e-04, + 1.822926555487521861e-04, + 1.826005264152520398e-04, + 1.829080787677242134e-04, + 1.832153121287660572e-04, + 1.835222260215764369e-04, + 1.838288199698708946e-04, + 1.841350934979483274e-04, + 1.844410461306344735e-04, + 1.847466773933436842e-04, + 1.850519868119991000e-04, + 1.853569739131289817e-04, + 1.856616382237836875e-04, + 1.859659792715938136e-04, + 1.862699965847550425e-04, + 1.865736896919879459e-04, + 1.868770581225942008e-04, + 1.871801014064457475e-04, + 1.874828190739733782e-04, + 1.877852106561513686e-04, + 1.880872756845514712e-04, + 1.883890136912618710e-04, + 1.886904242089823514e-04, + 1.889915067709453645e-04, + 1.892922609109692379e-04, + 1.895926861634463032e-04, + 1.898927820633025090e-04, + 1.901925481460516043e-04, + 1.904919839477924547e-04, + 1.907910890051638315e-04, + 1.910898628553975103e-04, + 1.913883050363008697e-04, + 1.916864150862218987e-04, + 1.919841925441004792e-04, + 1.922816369494562431e-04, + 1.925787478423833683e-04, + 1.928755247635436938e-04, + 1.931719672541550644e-04, + 1.934680748560435354e-04, + 1.937638471116072685e-04, + 1.940592835638009733e-04, + 1.943543837561908497e-04, + 1.946491472328759555e-04, + 1.949435735385812317e-04, + 1.952376622185785448e-04, + 1.955314128187418188e-04, + 1.958248248855256224e-04, + 1.961178979659612383e-04, + 1.964106316076430568e-04, + 1.967030253587811594e-04, + 1.969950787681657843e-04, + 1.972867913851508736e-04, + 1.975781627597105871e-04, + 1.978691924423642756e-04, + 1.981598799842409369e-04, + 1.984502249370630070e-04, + 1.987402268531400984e-04, + 1.990298852853540114e-04, + 1.993191997872079298e-04, + 1.996081699127506348e-04, + 1.998967952166670907e-04, + 2.001850752542031462e-04, + 2.004730095812163302e-04, + 2.007605977541641960e-04, + 2.010478393300657780e-04, + 2.013347338665544739e-04, + 2.016212809218667417e-04, + 2.019074800548332637e-04, + 2.021933308248637941e-04, + 2.024788327919971418e-04, + 2.027639855168258715e-04, + 2.030487885605857510e-04, + 2.033332414850806701e-04, + 2.036173438527403743e-04, + 2.039010952265749824e-04, + 2.041844951702043143e-04, + 2.044675432478431731e-04, + 2.047502390243291276e-04, + 2.050325820650765690e-04, + 2.053145719361373998e-04, + 2.055962082041223741e-04, + 2.058774904362936349e-04, + 2.061584182004869224e-04, + 2.064389910651651876e-04, + 2.067192085993967187e-04, + 2.069990703728535148e-04, + 2.072785759557974083e-04, + 2.075577249191296666e-04, + 2.078365168343570299e-04, + 2.081149512735783755e-04, + 2.083930278095336695e-04, + 2.086707460155329784e-04, + 2.089481054655423112e-04, + 2.092251057341088091e-04, + 2.095017463964208378e-04, + 2.097780270282543190e-04, + 2.100539472060332022e-04, + 2.103295065067531367e-04, + 2.106047045080702135e-04, + 2.108795407882264265e-04, + 2.111540149261014973e-04, + 2.114281265011989431e-04, + 2.117018750936098376e-04, + 2.119752602840644729e-04, + 2.122482816539204061e-04, + 2.125209387851559003e-04, + 2.127932312603519264e-04, + 2.130651586627433378e-04, + 2.133367205761450087e-04, + 2.136079165850381914e-04, + 2.138787462744968983e-04, + 2.141492092302402694e-04, + 2.144193050386179354e-04, + 2.146890332865752417e-04, + 2.149583935617034201e-04, + 2.152273854522262803e-04, + 2.154960085469961439e-04, + 2.157642624354885860e-04, + 2.160321467077879886e-04, + 2.162996609546484993e-04, + 2.165668047674221221e-04, + 2.168335777381104606e-04, + 2.170999794593479943e-04, + 2.173660095243945165e-04, + 2.176316675271253761e-04, + 2.178969530620787219e-04, + 2.181618657244224616e-04, + 2.184264051099397334e-04, + 2.186905708150812459e-04, + 2.189543624368899531e-04, + 2.192177795730883868e-04, + 2.194808218220057445e-04, + 2.197434887826277348e-04, + 2.200057800545789056e-04, + 2.202676952381156777e-04, + 2.205292339341185387e-04, + 2.207903957441349231e-04, + 2.210511802703512131e-04, + 2.213115871155734663e-04, + 2.215716158832826293e-04, + 2.218312661775598087e-04, + 2.220905376031702969e-04, + 2.223494297654944813e-04, + 2.226079422705811871e-04, + 2.228660747251006498e-04, + 2.231238267363975603e-04, + 2.233811979124222715e-04, + 2.236381878618137135e-04, + 2.238947961938282964e-04, + 2.241510225183877239e-04, + 2.244068664460691542e-04, + 2.246623275880701802e-04, + 2.249174055562543116e-04, + 2.251720999631420578e-04, + 2.254264104219053978e-04, + 2.256803365463494579e-04, + 2.259338779509618153e-04, + 2.261870342508412934e-04, + 2.264398050617814722e-04, + 2.266921900001996732e-04, + 2.269441886831918473e-04, + 2.271958007284924049e-04, + 2.274470257544951952e-04, + 2.276978633802454832e-04, + 2.279483132254637480e-04, + 2.281983749105033444e-04, + 2.284480480564047677e-04, + 2.286973322848274298e-04, + 2.289462272181288875e-04, + 2.291947324792985438e-04, + 2.294428476920033733e-04, + 2.296905724805696275e-04, + 2.299379064699817222e-04, + 2.301848492858665990e-04, + 2.304314005545442213e-04, + 2.306775599029887601e-04, + 2.309233269588244198e-04, + 2.311687013503656892e-04, + 2.314136827065539431e-04, + 2.316582706570333356e-04, + 2.319024648320879445e-04, + 2.321462648626818049e-04, + 2.323896703804499643e-04, + 2.326326810176865571e-04, + 2.328752964073376212e-04, + 2.331175161830460112e-04, + 2.333593399791178424e-04, + 2.336007674305125162e-04, + 2.338417981728873078e-04, + 2.340824318425371116e-04, + 2.343226680764439081e-04, + 2.345625065122685239e-04, + 2.348019467883439909e-04, + 2.350409885436580907e-04, + 2.352796314179007072e-04, + 2.355178750513988828e-04, + 2.357557190851891616e-04, + 2.359931631609595579e-04, + 2.362302069210866899e-04, + 2.364668500086307922e-04, + 2.367030920673024040e-04, + 2.369389327415019424e-04, + 2.371743716763179946e-04, + 2.374094085175139552e-04, + 2.376440429115269151e-04, + 2.378782745054583642e-04, + 2.381121029471160687e-04, + 2.383455278849829005e-04, + 2.385785489682056969e-04, + 2.388111658466354845e-04, + 2.390433781707882583e-04, + 2.392751855918689692e-04, + 2.395065877617586771e-04, + 2.397375843330388904e-04, + 2.399681749589536192e-04, + 2.401983592934582730e-04, + 2.404281369911556927e-04, + 2.406575077073725593e-04, + 2.408864710980938818e-04, + 2.411150268200072590e-04, + 2.413431745304879181e-04, + 2.415709138875930492e-04, + 2.417982445500529965e-04, + 2.420251661773110486e-04, + 2.422516784294971733e-04, + 2.424777809674138421e-04, + 2.427034734525790457e-04, + 2.429287555471653075e-04, + 2.431536269140740060e-04, + 2.433780872168713253e-04, + 2.436021361198353907e-04, + 2.438257732879182678e-04, + 2.440489983867890863e-04, + 2.442718110827752222e-04, + 2.444942110429348578e-04, + 2.447161979349953454e-04, + 2.449377714273920478e-04, + 2.451589311892639214e-04, + 2.453796768904181161e-04, + 2.456000082013762168e-04, + 2.458199247933602572e-04, + 2.460394263382896843e-04, + 2.462585125087776716e-04, + 2.464771829781201690e-04, + 2.466954374203380240e-04, + 2.469132755101461902e-04, + 2.471306969229442410e-04, + 2.473477013348472143e-04, + 2.475642884226762893e-04, + 2.477804578639296209e-04, + 2.479962093368213169e-04, + 2.482115425202733065e-04, + 2.484264570939102444e-04, + 2.486409527380538734e-04, + 2.488550291337172232e-04, + 2.490686859626455940e-04, + 2.492819229072647854e-04, + 2.494947396507204529e-04, + 2.497071358768628751e-04, + 2.499191112702455982e-04, + 2.501306655161123177e-04, + 2.503417983004387819e-04, + 2.505525093099037902e-04, + 2.507627982318786763e-04, + 2.509726647544672606e-04, + 2.511821085664495807e-04, + 2.513911293573475934e-04, + 2.515997268173686342e-04, + 2.518079006374465082e-04, + 2.520156505092244138e-04, + 2.522229761250510943e-04, + 2.524298771779743319e-04, + 2.526363533617757514e-04, + 2.528424043709469131e-04, + 2.530480299006766820e-04, + 2.532532296468907465e-04, + 2.534580033061963793e-04, + 2.536623505759470548e-04, + 2.538662711541884564e-04, + 2.540697647397003808e-04, + 2.542728310319575984e-04, + 2.544754697311760942e-04, + 2.546776805382542502e-04, + 2.548794631548407705e-04, + 2.550808172832796580e-04, + 2.552817426266436622e-04, + 2.554822388887303215e-04, + 2.556823057740330155e-04, + 2.558819429877758761e-04, + 2.560811502359089625e-04, + 2.562799272251013228e-04, + 2.564782736627393132e-04, + 2.566761892569134791e-04, + 2.568736737164614898e-04, + 2.570707267509346364e-04, + 2.572673480705960970e-04, + 2.574635373864472832e-04, + 2.576592944101987830e-04, + 2.578546188542910696e-04, + 2.580495104318819783e-04, + 2.582439688568669272e-04, + 2.584379938438486680e-04, + 2.586315851081773471e-04, + 2.588247423658954281e-04, + 2.590174653338053463e-04, + 2.592097537294102568e-04, + 2.594016072709555594e-04, + 2.595930256774125274e-04, + 2.597840086684758678e-04, + 2.599745559645533677e-04, + 2.601646672868060091e-04, + 2.603543423571159313e-04, + 2.605435808980822022e-04, + 2.607323826330559466e-04, + 2.609207472860865695e-04, + 2.611086745819837730e-04, + 2.612961642462676283e-04, + 2.614832160052007765e-04, + 2.616698295857778039e-04, + 2.618560047157208505e-04, + 2.620417411234700691e-04, + 2.622270385382266685e-04, + 2.624118966898997328e-04, + 2.625963153091476383e-04, + 2.627802941273646637e-04, + 2.629638328766586552e-04, + 2.631469312898852874e-04, + 2.633295891006379803e-04, + 2.635118060432471948e-04, + 2.636935818527722463e-04, + 2.638749162649976191e-04, + 2.640558090164646789e-04, + 2.642362598444486337e-04, + 2.644162684869461196e-04, + 2.645958346827069680e-04, + 2.647749581712217914e-04, + 2.649536386926978058e-04, + 2.651318759880948801e-04, + 2.653096697991149115e-04, + 2.654870198681990060e-04, + 2.656639259385256899e-04, + 2.658403877539976278e-04, + 2.660164050592820641e-04, + 2.661919775997813320e-04, + 2.663671051216265654e-04, + 2.665417873717072436e-04, + 2.667160240976457664e-04, + 2.668898150477963158e-04, + 2.670631599712742382e-04, + 2.672360586179324082e-04, + 2.674085107383596571e-04, + 2.675805160839041913e-04, + 2.677520744066323928e-04, + 2.679231854593814026e-04, + 2.680938489957153739e-04, + 2.682640647699517092e-04, + 2.684338325371575366e-04, + 2.686031520531401693e-04, + 2.687720230744398411e-04, + 2.689404453583632082e-04, + 2.691084186629612318e-04, + 2.692759427470202329e-04, + 2.694430173700915459e-04, + 2.696096422924485836e-04, + 2.697758172751394215e-04, + 2.699415420799420738e-04, + 2.701068164693985383e-04, + 2.702716402067869314e-04, + 2.704360130561405165e-04, + 2.705999347822382714e-04, + 2.707634051506196873e-04, + 2.709264239275599407e-04, + 2.710889908800975410e-04, + 2.712511057760242468e-04, + 2.714127683838652252e-04, + 2.715739784729082171e-04, + 2.717347358131975738e-04, + 2.718950401755294323e-04, + 2.720548913314485714e-04, + 2.722142890532414723e-04, + 2.723732331139691164e-04, + 2.725317232874394460e-04, + 2.726897593482041659e-04, + 2.728473410715805364e-04, + 2.730044682336442712e-04, + 2.731611406112073115e-04, + 2.733173579818475333e-04, + 2.734731201239066871e-04, + 2.736284268164676839e-04, + 2.737832778393860917e-04, + 2.739376729732500193e-04, + 2.740916119994291230e-04, + 2.742450947000330268e-04, + 2.743981208579376690e-04, + 2.745506902567787966e-04, + 2.747028026809446473e-04, + 2.748544579155722629e-04, + 2.750056557465749740e-04, + 2.751563959606199571e-04, + 2.753066783451247647e-04, + 2.754565026882828047e-04, + 2.756058687790228449e-04, + 2.757547764070588324e-04, + 2.759032253628467967e-04, + 2.760512154376142850e-04, + 2.761987464233492504e-04, + 2.763458181127972858e-04, + 2.764924302994563668e-04, + 2.766385827776005404e-04, + 2.767842753422657771e-04, + 2.769295077892383692e-04, + 2.770742799150838253e-04, + 2.772185915171110370e-04, + 2.773624423934012819e-04, + 2.775058323428038318e-04, + 2.776487611649305323e-04, + 2.777912286601527127e-04, + 2.779332346295994511e-04, + 2.780747788751782826e-04, + 2.782158611995581778e-04, + 2.783564814061625491e-04, + 2.784966392991940253e-04, + 2.786363346836185674e-04, + 2.787755673651543019e-04, + 2.789143371502958609e-04, + 2.790526438463066840e-04, + 2.791904872612158747e-04, + 2.793278672038173325e-04, + 2.794647834836617301e-04, + 2.796012359110838352e-04, + 2.797372242971813143e-04, + 2.798727484538126187e-04, + 2.800078081936152531e-04, + 2.801424033299851216e-04, + 2.802765336770907849e-04, + 2.804101990498670096e-04, + 2.805433992640256097e-04, + 2.806761341360367447e-04, + 2.808084034831547773e-04, + 2.809402071233819530e-04, + 2.810715448755136112e-04, + 2.812024165590984491e-04, + 2.813328219944654100e-04, + 2.814627610027150640e-04, + 2.815922334057151082e-04, + 2.817212390260940245e-04, + 2.818497776872713289e-04, + 2.819778492134298155e-04, + 2.821054534295195141e-04, + 2.822325901612745495e-04, + 2.823592592351823502e-04, + 2.824854604785230049e-04, + 2.826111937193357608e-04, + 2.827364587864404362e-04, + 2.828612555094333551e-04, + 2.829855837186714095e-04, + 2.831094432452910324e-04, + 2.832328339212108006e-04, + 2.833557555791109427e-04, + 2.834782080524561078e-04, + 2.836001911754852277e-04, + 2.837217047832017052e-04, + 2.838427487113897316e-04, + 2.839633227966128766e-04, + 2.840834268762100229e-04, + 2.842030607882924391e-04, + 2.843222243717400928e-04, + 2.844409174662208958e-04, + 2.845591399121786148e-04, + 2.846768915508234390e-04, + 2.847941722241523633e-04, + 2.849109817749398096e-04, + 2.850273200467256466e-04, + 2.851431868838329164e-04, + 2.852585821313678889e-04, + 2.853735056352124720e-04, + 2.854879572420248083e-04, + 2.856019367992325528e-04, + 2.857154441550540150e-04, + 2.858284791584853653e-04, + 2.859410416592924492e-04, + 2.860531315080307906e-04, + 2.861647485560292752e-04, + 2.862758926553880356e-04, + 2.863865636590013286e-04, + 2.864967614205372599e-04, + 2.866064857944404954e-04, + 2.867157366359446746e-04, + 2.868245138010459567e-04, + 2.869328171465413465e-04, + 2.870406465299919947e-04, + 2.871480018097518749e-04, + 2.872548828449536886e-04, + 2.873612894955023607e-04, + 2.874672216220888082e-04, + 2.875726790861885310e-04, + 2.876776617500605821e-04, + 2.877821694767350447e-04, + 2.878862021300389448e-04, + 2.879897595745631290e-04, + 2.880928416756965249e-04, + 2.881954482996009880e-04, + 2.882975793132283777e-04, + 2.883992345843066794e-04, + 2.885004139813489494e-04, + 2.886011173736496827e-04, + 2.887013446312934324e-04, + 2.888010956251380046e-04, + 2.889003702268322393e-04, + 2.889991683088100473e-04, + 2.890974897442789176e-04, + 2.891953344072368311e-04, + 2.892927021724664600e-04, + 2.893895929155380410e-04, + 2.894860065128018940e-04, + 2.895819428413852242e-04, + 2.896774017792121255e-04, + 2.897723832049897566e-04, + 2.898668869982035708e-04, + 2.899609130391293506e-04, + 2.900544612088330450e-04, + 2.901475313891512539e-04, + 2.902401234627162733e-04, + 2.903322373129473672e-04, + 2.904238728240432867e-04, + 2.905150298809990213e-04, + 2.906057083695776631e-04, + 2.906959081763490593e-04, + 2.907856291886532201e-04, + 2.908748712946274237e-04, + 2.909636343831914170e-04, + 2.910519183440523489e-04, + 2.911397230676976140e-04, + 2.912270484454102491e-04, + 2.913138943692592832e-04, + 2.914002607320964307e-04, + 2.914861474275678012e-04, + 2.915715543500955217e-04, + 2.916564813949005055e-04, + 2.917409284579851043e-04, + 2.918248954361406982e-04, + 2.919083822269524656e-04, + 2.919913887287819824e-04, + 2.920739148407852192e-04, + 2.921559604629078255e-04, + 2.922375254958844786e-04, + 2.923186098412315658e-04, + 2.923992134012637183e-04, + 2.924793360790730484e-04, + 2.925589777785468225e-04, + 2.926381384043624193e-04, + 2.927168178619845109e-04, + 2.927950160576684238e-04, + 2.928727328984495138e-04, + 2.929499682921636572e-04, + 2.930267221474331025e-04, + 2.931029943736643555e-04, + 2.931787848810593470e-04, + 2.932540935806115297e-04, + 2.933289203840944398e-04, + 2.934032652040752492e-04, + 2.934771279539159046e-04, + 2.935505085477664589e-04, + 2.936234069005648007e-04, + 2.936958229280342688e-04, + 2.937677565466976387e-04, + 2.938392076738648162e-04, + 2.939101762276328383e-04, + 2.939806621268937332e-04, + 2.940506652913269848e-04, + 2.941201856414019187e-04, + 2.941892230983790568e-04, + 2.942577775843138038e-04, + 2.943258490220458223e-04, + 2.943934373352134521e-04, + 2.944605424482348455e-04, + 2.945271642863297600e-04, + 2.945933027755023186e-04, + 2.946589578425511482e-04, + 2.947241294150684571e-04, + 2.947888174214303861e-04, + 2.948530217908075794e-04, + 2.949167424531636667e-04, + 2.949799793392552088e-04, + 2.950427323806241084e-04, + 2.951050015096125722e-04, + 2.951667866593424565e-04, + 2.952280877637386862e-04, + 2.952889047575106064e-04, + 2.953492375761651014e-04, + 2.954090861559947228e-04, + 2.954684504340878261e-04, + 2.955273303483221749e-04, + 2.955857258373704695e-04, + 2.956436368406934628e-04, + 2.957010632985485792e-04, + 2.957580051519837351e-04, + 2.958144623428351702e-04, + 2.958704348137329771e-04, + 2.959259225081033238e-04, + 2.959809253701615149e-04, + 2.960354433449162198e-04, + 2.960894763781630763e-04, + 2.961430244164966704e-04, + 2.961960874073036524e-04, + 2.962486652987576406e-04, + 2.963007580398300633e-04, + 2.963523655802849550e-04, + 2.964034878706715836e-04, + 2.964541248623369729e-04, + 2.965042765074224875e-04, + 2.965539427588593873e-04, + 2.966031235703739236e-04, + 2.966518188964765513e-04, + 2.967000286924816608e-04, + 2.967477529144873041e-04, + 2.967949915193902107e-04, + 2.968417444648794451e-04, + 2.968880117094299014e-04, + 2.969337932123150971e-04, + 2.969790889335998546e-04, + 2.970238988341438249e-04, + 2.970682228755939526e-04, + 2.971120610203961850e-04, + 2.971554132317818652e-04, + 2.971982794737829657e-04, + 2.972406597112163670e-04, + 2.972825539096977357e-04, + 2.973239620356348564e-04, + 2.973648840562243250e-04, + 2.974053199394548013e-04, + 2.974452696541134600e-04, + 2.974847331697780218e-04, + 2.975237104568143141e-04, + 2.975622014863890641e-04, + 2.976002062304515224e-04, + 2.976377246617522730e-04, + 2.976747567538294646e-04, + 2.977113024810166164e-04, + 2.977473618184396371e-04, + 2.977829347420119996e-04, + 2.978180212284463422e-04, + 2.978526212552468251e-04, + 2.978867348007057151e-04, + 2.979203618439113543e-04, + 2.979535023647457751e-04, + 2.979861563438799296e-04, + 2.980183237627769964e-04, + 2.980500046036963380e-04, + 2.980811988496877545e-04, + 2.981119064845932183e-04, + 2.981421274930447598e-04, + 2.981718618604697261e-04, + 2.982011095730891545e-04, + 2.982298706179120260e-04, + 2.982581449827416084e-04, + 2.982859326561746968e-04, + 2.983132336275970062e-04, + 2.983400478871873996e-04, + 2.983663754259195688e-04, + 2.983922162355546613e-04, + 2.984175703086503883e-04, + 2.984424376385520794e-04, + 2.984668182193992423e-04, + 2.984907120461217683e-04, + 2.985141191144448109e-04, + 2.985370394208815758e-04, + 2.985594729627372786e-04, + 2.985814197381089817e-04, + 2.986028797458877091e-04, + 2.986238529857528079e-04, + 2.986443394581766650e-04, + 2.986643391644237312e-04, + 2.986838521065461301e-04, + 2.987028782873916272e-04, + 2.987214177105965824e-04, + 2.987394703805902325e-04, + 2.987570363025924690e-04, + 2.987741154826119403e-04, + 2.987907079274505513e-04, + 2.988068136447009156e-04, + 2.988224326427458676e-04, + 2.988375649307588419e-04, + 2.988522105187054996e-04, + 2.988663694173392831e-04, + 2.988800416382058614e-04, + 2.988932271936417203e-04, + 2.989059260967734583e-04, + 2.989181383615183824e-04, + 2.989298640025807676e-04, + 2.989411030354589046e-04, + 2.989518554764407626e-04, + 2.989621213426022547e-04, + 2.989719006518113580e-04, + 2.989811934227240477e-04, + 2.989899996747858151e-04, + 2.989983194282339442e-04, + 2.990061527040928499e-04, + 2.990134995241784687e-04, + 2.990203599110955487e-04, + 2.990267338882362938e-04, + 2.990326214797832914e-04, + 2.990380227107108132e-04, + 2.990429376067769551e-04, + 2.990473661945336112e-04, + 2.990513085013175301e-04, + 2.990547645552565480e-04, + 2.990577343852665539e-04, + 2.990602180210510551e-04, + 2.990622154931035087e-04, + 2.990637268327047196e-04, + 2.990647520719223523e-04, + 2.990652912436151051e-04, + 2.990653443814265304e-04, + 2.990649115197905098e-04, + 2.990639926939275676e-04, + 2.990625879398446543e-04, + 2.990606972943389411e-04, + 2.990583207949922364e-04, + 2.990554584801745634e-04, + 2.990521103890441063e-04, + 2.990482765615451498e-04, + 2.990439570384091097e-04, + 2.990391518611536107e-04, + 2.990338610720837879e-04, + 2.990280847142906063e-04, + 2.990218228316508060e-04, + 2.990150754688292341e-04, + 2.990078426712765129e-04, + 2.990001244852280105e-04, + 2.989919209577065508e-04, + 2.989832321365176434e-04, + 2.989740580702575064e-04, + 2.989643988083024958e-04, + 2.989542544008171824e-04, + 2.989436248987526173e-04, + 2.989325103538424287e-04, + 2.989209108186048820e-04, + 2.989088263463454817e-04, + 2.988962569911522552e-04, + 2.988832028078990057e-04, + 2.988696638522429262e-04, + 2.988556401806259557e-04, + 2.988411318502749410e-04, + 2.988261389191988185e-04, + 2.988106614461918660e-04, + 2.987946994908303425e-04, + 2.987782531134761739e-04, + 2.987613223752714239e-04, + 2.987439073381463711e-04, + 2.987260080648090465e-04, + 2.987076246187530398e-04, + 2.986887570642544096e-04, + 2.986694054663694602e-04, + 2.986495698909409765e-04, + 2.986292504045917726e-04, + 2.986084470747248001e-04, + 2.985871599695290031e-04, + 2.985653891579708613e-04, + 2.985431347098007867e-04, + 2.985203966955516058e-04, + 2.984971751865331388e-04, + 2.984734702548416858e-04, + 2.984492819733491312e-04, + 2.984246104157121590e-04, + 2.983994556563654768e-04, + 2.983738177705259355e-04, + 2.983476968341885723e-04, + 2.983210929241299713e-04, + 2.982940061179050655e-04, + 2.982664364938502808e-04, + 2.982383841310787113e-04, + 2.982098491094873293e-04, + 2.981808315097470648e-04, + 2.981513314133104491e-04, + 2.981213489024070072e-04, + 2.980908840600488409e-04, + 2.980599369700199499e-04, + 2.980285077168878327e-04, + 2.979965963859956260e-04, + 2.979642030634643271e-04, + 2.979313278361936618e-04, + 2.978979707918580182e-04, + 2.978641320189119221e-04, + 2.978298116065852125e-04, + 2.977950096448839083e-04, + 2.977597262245908595e-04, + 2.977239614372686745e-04, + 2.976877153752515879e-04, + 2.976509881316509367e-04, + 2.976137798003544548e-04, + 2.975760904760243759e-04, + 2.975379202541004694e-04, + 2.974992692307957577e-04, + 2.974601375030983051e-04, + 2.974205251687706756e-04, + 2.973804323263506380e-04, + 2.973398590751488886e-04, + 2.972988055152520873e-04, + 2.972572717475196590e-04, + 2.972152578735842818e-04, + 2.971727639958523745e-04, + 2.971297902175020910e-04, + 2.970863366424882535e-04, + 2.970424033755348172e-04, + 2.969979905221399119e-04, + 2.969530981885716678e-04, + 2.969077264818742868e-04, + 2.968618755098580142e-04, + 2.968155453811116063e-04, + 2.967687362049896459e-04, + 2.967214480916203481e-04, + 2.966736811519020368e-04, + 2.966254354975018980e-04, + 2.965767112408626473e-04, + 2.965275084951916342e-04, + 2.964778273744691356e-04, + 2.964276679934450495e-04, + 2.963770304676368889e-04, + 2.963259149133302701e-04, + 2.962743214475860678e-04, + 2.962222501882278390e-04, + 2.961697012538491410e-04, + 2.961166747638120677e-04, + 2.960631708382452441e-04, + 2.960091895980510902e-04, + 2.959547311648908592e-04, + 2.958997956611961839e-04, + 2.958443832101689147e-04, + 2.957884939357725536e-04, + 2.957321279627422839e-04, + 2.956752854165749407e-04, + 2.956179664235368174e-04, + 2.955601711106556426e-04, + 2.955018996057283322e-04, + 2.954431520373133999e-04, + 2.953839285347408775e-04, + 2.953242292280978953e-04, + 2.952640542482394700e-04, + 2.952034037267849262e-04, + 2.951422777961137771e-04, + 2.950806765893760784e-04, + 2.950186002404798515e-04, + 2.949560488840966672e-04, + 2.948930226556607239e-04, + 2.948295216913713419e-04, + 2.947655461281842347e-04, + 2.947010961038261465e-04, + 2.946361717567767455e-04, + 2.945707732262826646e-04, + 2.945049006523473641e-04, + 2.944385541757354140e-04, + 2.943717339379768312e-04, + 2.943044400813587310e-04, + 2.942366727489274954e-04, + 2.941684320844876891e-04, + 2.940997182326068296e-04, + 2.940305313386076900e-04, + 2.939608715485776767e-04, + 2.938907390093553856e-04, + 2.938201338685440464e-04, + 2.937490562744997586e-04, + 2.936775063763387558e-04, + 2.936054843239337738e-04, + 2.935329902679182246e-04, + 2.934600243596743787e-04, + 2.933865867513481100e-04, + 2.933126775958354521e-04, + 2.932382970467969636e-04, + 2.931634452586387007e-04, + 2.930881223865297808e-04, + 2.930123285863899690e-04, + 2.929360640148916291e-04, + 2.928593288294644402e-04, + 2.927821231882977277e-04, + 2.927044472503244712e-04, + 2.926263011752341524e-04, + 2.925476851234736224e-04, + 2.924685992562337119e-04, + 2.923890437354688550e-04, + 2.923090187238761646e-04, + 2.922285243849109902e-04, + 2.921475608827743412e-04, + 2.920661283824215067e-04, + 2.919842270495578811e-04, + 2.919018570506435716e-04, + 2.918190185528807138e-04, + 2.917357117242290292e-04, + 2.916519367333924900e-04, + 2.915676937498225718e-04, + 2.914829829437267099e-04, + 2.913978044860598970e-04, + 2.913121585485192624e-04, + 2.912260453035520947e-04, + 2.911394649243561673e-04, + 2.910524175848709563e-04, + 2.909649034597926024e-04, + 2.908769227245510888e-04, + 2.907884755553347437e-04, + 2.906995621290682855e-04, + 2.906101826234229056e-04, + 2.905203372168230452e-04, + 2.904300260884315412e-04, + 2.903392494181552099e-04, + 2.902480073866443053e-04, + 2.901563001752959880e-04, + 2.900641279662545969e-04, + 2.899714909423995596e-04, + 2.898783892873535786e-04, + 2.897848231854884319e-04, + 2.896907928219091973e-04, + 2.895962983824680766e-04, + 2.895013400537644493e-04, + 2.894059180231271463e-04, + 2.893100324786272975e-04, + 2.892136836090851079e-04, + 2.891168716040485535e-04, + 2.890195966538190221e-04, + 2.889218589494229618e-04, + 2.888236586826373057e-04, + 2.887249960459688713e-04, + 2.886258712326653119e-04, + 2.885262844367124596e-04, + 2.884262358528386083e-04, + 2.883257256765018824e-04, + 2.882247541038941946e-04, + 2.881233213319545267e-04, + 2.880214275583463249e-04, + 2.879190729814804840e-04, + 2.878162578004910075e-04, + 2.877129822152564207e-04, + 2.876092464263804716e-04, + 2.875050506352104540e-04, + 2.874003950438153068e-04, + 2.872952798550126646e-04, + 2.871897052723396929e-04, + 2.870836715000739045e-04, + 2.869771787432203120e-04, + 2.868702272075118070e-04, + 2.867628170994252065e-04, + 2.866549486261610867e-04, + 2.865466219956469811e-04, + 2.864378374165424770e-04, + 2.863285950982430634e-04, + 2.862188952508627304e-04, + 2.861087380852573333e-04, + 2.859981238129980841e-04, + 2.858870526463968133e-04, + 2.857755247984835809e-04, + 2.856635404830137242e-04, + 2.855510999144840662e-04, + 2.854382033081067868e-04, + 2.853248508798187462e-04, + 2.852110428462903218e-04, + 2.850967794249057298e-04, + 2.849820608337909431e-04, + 2.848668872917807862e-04, + 2.847512590184443052e-04, + 2.846351762340672037e-04, + 2.845186391596604084e-04, + 2.844016480169591471e-04, + 2.842842030284267979e-04, + 2.841663044172381379e-04, + 2.840479524072931131e-04, + 2.839291472232177054e-04, + 2.838098890903491332e-04, + 2.836901782347607342e-04, + 2.835700148832277583e-04, + 2.834493992632581595e-04, + 2.833283316030738930e-04, + 2.832068121316109154e-04, + 2.830848410785306228e-04, + 2.829624186742162734e-04, + 2.828395451497592175e-04, + 2.827162207369674093e-04, + 2.825924456683742963e-04, + 2.824682201772171363e-04, + 2.823435444974638307e-04, + 2.822184188637888555e-04, + 2.820928435115815014e-04, + 2.819668186769429459e-04, + 2.818403445966981258e-04, + 2.817134215083707464e-04, + 2.815860496502173792e-04, + 2.814582292611883226e-04, + 2.813299605809578509e-04, + 2.812012438499071382e-04, + 2.810720793091251259e-04, + 2.809424672004224004e-04, + 2.808124077663156346e-04, + 2.806819012500269377e-04, + 2.805509478954873242e-04, + 2.804195479473412141e-04, + 2.802877016509493593e-04, + 2.801554092523671062e-04, + 2.800226709983602786e-04, + 2.798894871364098402e-04, + 2.797558579146943304e-04, + 2.796217835821045009e-04, + 2.794872643882352929e-04, + 2.793523005833911492e-04, + 2.792168924185721370e-04, + 2.790810401454943846e-04, + 2.789447440165637357e-04, + 2.788080042849100642e-04, + 2.786708212043456406e-04, + 2.785331950294011281e-04, + 2.783951260153000491e-04, + 2.782566144179687059e-04, + 2.781176604940345542e-04, + 2.779782645008404608e-04, + 2.778384266964084907e-04, + 2.776981473394685845e-04, + 2.775574266894568240e-04, + 2.774162650064943437e-04, + 2.772746625514197491e-04, + 2.771326195857523080e-04, + 2.769901363717202475e-04, + 2.768472131722401011e-04, + 2.767038502509341089e-04, + 2.765600478721073961e-04, + 2.764158063007819081e-04, + 2.762711258026527171e-04, + 2.761260066441260236e-04, + 2.759804490922924849e-04, + 2.758344534149322568e-04, + 2.756880198805367857e-04, + 2.755411487582781261e-04, + 2.753938403180196740e-04, + 2.752460948303176846e-04, + 2.750979125664172070e-04, + 2.749492937982717078e-04, + 2.748002387985025766e-04, + 2.746507478404269353e-04, + 2.745008211980608367e-04, + 2.743504591460997491e-04, + 2.741996619599231639e-04, + 2.740484299156153037e-04, + 2.738967632899383430e-04, + 2.737446623603373951e-04, + 2.735921274049453911e-04, + 2.734391587025822670e-04, + 2.732857565327648838e-04, + 2.731319211756736884e-04, + 2.729776529121909863e-04, + 2.728229520238745404e-04, + 2.726678187929619632e-04, + 2.725122535023804735e-04, + 2.723562564357467886e-04, + 2.721998278773449524e-04, + 2.720429681121420561e-04, + 2.718856774257970743e-04, + 2.717279561046322968e-04, + 2.715698044356729015e-04, + 2.714112227066015808e-04, + 2.712522112057930189e-04, + 2.710927702222929673e-04, + 2.709329000458248577e-04, + 2.707726009667896401e-04, + 2.706118732762798225e-04, + 2.704507172660436387e-04, + 2.702891332285094423e-04, + 2.701271214567898269e-04, + 2.699646822446570690e-04, + 2.698018158865799908e-04, + 2.696385226776773936e-04, + 2.694748029137568725e-04, + 2.693106568912870063e-04, + 2.691460849074207222e-04, + 2.689810872599655888e-04, + 2.688156642474235519e-04, + 2.686498161689439886e-04, + 2.684835433243617630e-04, + 2.683168460141714760e-04, + 2.681497245395324529e-04, + 2.679821792022918370e-04, + 2.678142103049511416e-04, + 2.676458181506763878e-04, + 2.674770030433008686e-04, + 2.673077652873268300e-04, + 2.671381051879320842e-04, + 2.669680230509439349e-04, + 2.667975191828547352e-04, + 2.666265938908324046e-04, + 2.664552474826957095e-04, + 2.662834802669347537e-04, + 2.661112925526986197e-04, + 2.659386846498027401e-04, + 2.657656568687107382e-04, + 2.655922095205635923e-04, + 2.654183429171427192e-04, + 2.652440573709158897e-04, + 2.650693531949823681e-04, + 2.648942307031192621e-04, + 2.647186902097500264e-04, + 2.645427320299561721e-04, + 2.643663564794780261e-04, + 2.641895638747239461e-04, + 2.640123545327410478e-04, + 2.638347287712311420e-04, + 2.636566869085657516e-04, + 2.634782292637497360e-04, + 2.632993561564663399e-04, + 2.631200679070275369e-04, + 2.629403648364137111e-04, + 2.627602472662498591e-04, + 2.625797155188063490e-04, + 2.623987699170124725e-04, + 2.622174107844559032e-04, + 2.620356384453519593e-04, + 2.618534532245843697e-04, + 2.616708554476722057e-04, + 2.614878454407789884e-04, + 2.613044235307349691e-04, + 2.611205900450044946e-04, + 2.609363453116935426e-04, + 2.607516896595545464e-04, + 2.605666234179876959e-04, + 2.603811469170490690e-04, + 2.601952604874198946e-04, + 2.600089644604262310e-04, + 2.598222591680491027e-04, + 2.596351449429013534e-04, + 2.594476221182294342e-04, + 2.592596910279428403e-04, + 2.590713520065796331e-04, + 2.588826053893111562e-04, + 2.586934515119486497e-04, + 2.585038907109461228e-04, + 2.583139233234067506e-04, + 2.581235496870500231e-04, + 2.579327701402374948e-04, + 2.577415850219768505e-04, + 2.575499946718961012e-04, + 2.573579994302698220e-04, + 2.571655996380028887e-04, + 2.569727956366371462e-04, + 2.567795877683355784e-04, + 2.565859763759091431e-04, + 2.563919618027800168e-04, + 2.561975443930316850e-04, + 2.560027244913475769e-04, + 2.558075024430617509e-04, + 2.556118785941268574e-04, + 2.554158532911214021e-04, + 2.552194268812586373e-04, + 2.550225997123895970e-04, + 2.548253721329731187e-04, + 2.546277444920977450e-04, + 2.544297171394904506e-04, + 2.542312904254802677e-04, + 2.540324647010532011e-04, + 2.538332403177874464e-04, + 2.536336176279053783e-04, + 2.534335969842356029e-04, + 2.532331787402416893e-04, + 2.530323632500035757e-04, + 2.528311508682264054e-04, + 2.526295419502225291e-04, + 2.524275368519409953e-04, + 2.522251359299356745e-04, + 2.520223395413753969e-04, + 2.518191480440692682e-04, + 2.516155617964271505e-04, + 2.514115811574737570e-04, + 2.512072064868478929e-04, + 2.510024381448084730e-04, + 2.507972764922415687e-04, + 2.505917218906257679e-04, + 2.503857747020566240e-04, + 2.501794352892542446e-04, + 2.499727040155400363e-04, + 2.497655812448406612e-04, + 2.495580673417149256e-04, + 2.493501626713194108e-04, + 2.491418675994150323e-04, + 2.489331824923722981e-04, + 2.487241077171731523e-04, + 2.485146436414196482e-04, + 2.483047906332963811e-04, + 2.480945490616152114e-04, + 2.478839192957782932e-04, + 2.476729017057948800e-04, + 2.474614966622823539e-04, + 2.472497045364745747e-04, + 2.470375257001859379e-04, + 2.468249605258386972e-04, + 2.466120093864685478e-04, + 2.463986726556916126e-04, + 2.461849507077535563e-04, + 2.459708439174704427e-04, + 2.457563526602774689e-04, + 2.455414773121963857e-04, + 2.453262182498468810e-04, + 2.451105758504488574e-04, + 2.448945504918337073e-04, + 2.446781425524041436e-04, + 2.444613524111643402e-04, + 2.442441804477244859e-04, + 2.440266270422675806e-04, + 2.438086925756010432e-04, + 2.435903774290923646e-04, + 2.433716819847250520e-04, + 2.431526066250526050e-04, + 2.429331517332310414e-04, + 2.427133176930180297e-04, + 2.424931048887396859e-04, + 2.422725137053119047e-04, + 2.420515445282541290e-04, + 2.418301977436595888e-04, + 2.416084737382025649e-04, + 2.413863728991651420e-04, + 2.411638956144033271e-04, + 2.409410422723501941e-04, + 2.407178132620242585e-04, + 2.404942089730301830e-04, + 2.402702297955714892e-04, + 2.400458761204076776e-04, + 2.398211483388852357e-04, + 2.395960468429451462e-04, + 2.393705720250890599e-04, + 2.391447242784097618e-04, + 2.389185039965779705e-04, + 2.386919115738433148e-04, + 2.384649474050192625e-04, + 2.382376118855146171e-04, + 2.380099054112894174e-04, + 2.377818283789139724e-04, + 2.375533811854956782e-04, + 2.373245642287438522e-04, + 2.370953779069227883e-04, + 2.368658226188699709e-04, + 2.366358987640003572e-04, + 2.364056067423135339e-04, + 2.361749469543533838e-04, + 2.359439198012408295e-04, + 2.357125256846777091e-04, + 2.354807650069098317e-04, + 2.352486381707872328e-04, + 2.350161455796882521e-04, + 2.347832876375846676e-04, + 2.345500647489987879e-04, + 2.343164773190093341e-04, + 2.340825257532865142e-04, + 2.338482104580488980e-04, + 2.336135318400661015e-04, + 2.333784903066902280e-04, + 2.331430862658190328e-04, + 2.329073201259055997e-04, + 2.326711922959883729e-04, + 2.324347031856490093e-04, + 2.321978532050224611e-04, + 2.319606427648014755e-04, + 2.317230722762399827e-04, + 2.314851421511643446e-04, + 2.312468528019296613e-04, + 2.310082046414519720e-04, + 2.307691980832157091e-04, + 2.305298335412426082e-04, + 2.302901114301043395e-04, + 2.300500321649474715e-04, + 2.298095961614561469e-04, + 2.295688038358576670e-04, + 2.293276556049302702e-04, + 2.290861518860077401e-04, + 2.288442930969840133e-04, + 2.286020796562784852e-04, + 2.283595119828599434e-04, + 2.281165904962604186e-04, + 2.278733156165352585e-04, + 2.276296877642956546e-04, + 2.273857073607118127e-04, + 2.271413748274725669e-04, + 2.268966905868115356e-04, + 2.266516550615224634e-04, + 2.264062686749135757e-04, + 2.261605318508681317e-04, + 2.259144450137746019e-04, + 2.256680085885848079e-04, + 2.254212230007748916e-04, + 2.251740886763507906e-04, + 2.249266060418811971e-04, + 2.246787755244596661e-04, + 2.244305975517036928e-04, + 2.241820725517681306e-04, + 2.239332009533574687e-04, + 2.236839831856822481e-04, + 2.234344196785217006e-04, + 2.231845108621505929e-04, + 2.229342571674006732e-04, + 2.226836590256117199e-04, + 2.224327168686700848e-04, + 2.221814311289838377e-04, + 2.219298022394956143e-04, + 2.216778306336578152e-04, + 2.214255167454720976e-04, + 2.211728610094475527e-04, + 2.209198638606151520e-04, + 2.206665257345552598e-04, + 2.204128470673545354e-04, + 2.201588282956199469e-04, + 2.199044698564776596e-04, + 2.196497721875810051e-04, + 2.193947357271199136e-04, + 2.191393609137775461e-04, + 2.188836481867610585e-04, + 2.186275979858105735e-04, + 2.183712107511693917e-04, + 2.181144869235910125e-04, + 2.178574269443712529e-04, + 2.176000312553059914e-04, + 2.173423002986937694e-04, + 2.170842345173691580e-04, + 2.168258343546518817e-04, + 2.165671002544119247e-04, + 2.163080326609919291e-04, + 2.160486320192730059e-04, + 2.157888987746289821e-04, + 2.155288333729442351e-04, + 2.152684362606153740e-04, + 2.150077078845634632e-04, + 2.147466486921891914e-04, + 2.144852591314037166e-04, + 2.142235396506417581e-04, + 2.139614906988124819e-04, + 2.136991127253692695e-04, + 2.134364061802295951e-04, + 2.131733715138397253e-04, + 2.129100091771317848e-04, + 2.126463196215310750e-04, + 2.123823032989938036e-04, + 2.121179606619561279e-04, + 2.118532921633464597e-04, + 2.115882982565921611e-04, + 2.113229793956346411e-04, + 2.110573360348814347e-04, + 2.107913686292696822e-04, + 2.105250776342155246e-04, + 2.102584635056201751e-04, + 2.099915266998810318e-04, + 2.097242676738904853e-04, + 2.094566868850513146e-04, + 2.091887847912270030e-04, + 2.089205618507772191e-04, + 2.086520185225679812e-04, + 2.083831552659350106e-04, + 2.081139725406973664e-04, + 2.078444708071891035e-04, + 2.075746505262112155e-04, + 2.073045121590466513e-04, + 2.070340561674613715e-04, + 2.067632830137092551e-04, + 2.064921931605468168e-04, + 2.062207870711817625e-04, + 2.059490652093092010e-04, + 2.056770280391228113e-04, + 2.054046760252709058e-04, + 2.051320096328995539e-04, + 2.048590293276268866e-04, + 2.045857355755524207e-04, + 2.043121288432365134e-04, + 2.040382095977377936e-04, + 2.037639783065602268e-04, + 2.034894354377225030e-04, + 2.032145814596775625e-04, + 2.029394168413766993e-04, + 2.026639420522283338e-04, + 2.023881575621036782e-04, + 2.021120638413744668e-04, + 2.018356613608649256e-04, + 2.015589505918589550e-04, + 2.012819320061111621e-04, + 2.010046060758591117e-04, + 2.007269732737775730e-04, + 2.004490340730462285e-04, + 2.001707889472708788e-04, + 1.998922383705484143e-04, + 1.996133828174196517e-04, + 1.993342227628845133e-04, + 1.990547586824321675e-04, + 1.987749910519946521e-04, + 1.984949203479507778e-04, + 1.982145470471636411e-04, + 1.979338716269355217e-04, + 1.976528945650185077e-04, + 1.973716163396546923e-04, + 1.970900374295202022e-04, + 1.968081583137415956e-04, + 1.965259794718991423e-04, + 1.962435013840314315e-04, + 1.959607245306489243e-04, + 1.956776493926823998e-04, + 1.953942764515187881e-04, + 1.951106061890150480e-04, + 1.948266390874578890e-04, + 1.945423756295743694e-04, + 1.942578162985732313e-04, + 1.939729615780881426e-04, + 1.936878119521943400e-04, + 1.934023679054106882e-04, + 1.931166299227080020e-04, + 1.928305984895174209e-04, + 1.925442740916825696e-04, + 1.922576572154944413e-04, + 1.919707483477034872e-04, + 1.916835479754698784e-04, + 1.913960565864294256e-04, + 1.911082746686383659e-04, + 1.908202027105836086e-04, + 1.905318412011896472e-04, + 1.902431906298341984e-04, + 1.899542514863006878e-04, + 1.896650242608494271e-04, + 1.893755094441298753e-04, + 1.890857075272568038e-04, + 1.887956190017571164e-04, + 1.885052443595820466e-04, + 1.882145840931450504e-04, + 1.879236386952706859e-04, + 1.876324086592031791e-04, + 1.873408944786168588e-04, + 1.870490966476307665e-04, + 1.867570156607581053e-04, + 1.864646520129815651e-04, + 1.861720061996649327e-04, + 1.858790787166255710e-04, + 1.855858700600784470e-04, + 1.852923807266797977e-04, + 1.849986112135001883e-04, + 1.847045620180364108e-04, + 1.844102336381865203e-04, + 1.841156265722905744e-04, + 1.838207413190889449e-04, + 1.835255783777308563e-04, + 1.832301382478144472e-04, + 1.829344214293336169e-04, + 1.826384284226887321e-04, + 1.823421597286960054e-04, + 1.820456158485881726e-04, + 1.817487972840304308e-04, + 1.814517045370656317e-04, + 1.811543381101535569e-04, + 1.808566985061827630e-04, + 1.805587862284305201e-04, + 1.802606017805743858e-04, + 1.799621456667320225e-04, + 1.796634183914066617e-04, + 1.793644204594939623e-04, + 1.790651523763193607e-04, + 1.787656146475778435e-04, + 1.784658077794142874e-04, + 1.781657322783280757e-04, + 1.778653886512532485e-04, + 1.775647774055022596e-04, + 1.772638990487805048e-04, + 1.769627540892257866e-04, + 1.766613430353514212e-04, + 1.763596663960612272e-04, + 1.760577246806545673e-04, + 1.757555183988450235e-04, + 1.754530480607082203e-04, + 1.751503141767572031e-04, + 1.748473172578519355e-04, + 1.745440578152761680e-04, + 1.742405363606843404e-04, + 1.739367534061138051e-04, + 1.736327094640238049e-04, + 1.733284050472416423e-04, + 1.730238406689738463e-04, + 1.727190168428145212e-04, + 1.724139340827617181e-04, + 1.721085929031652029e-04, + 1.718029938187980144e-04, + 1.714971373447954502e-04, + 1.711910239966687552e-04, + 1.708846542903091870e-04, + 1.705780287419951990e-04, + 1.702711478684039599e-04, + 1.699640121865579839e-04, + 1.696566222138637826e-04, + 1.693489784681239264e-04, + 1.690410814674976072e-04, + 1.687329317305112089e-04, + 1.684245297760989110e-04, + 1.681158761235482344e-04, + 1.678069712925111005e-04, + 1.674978158030120438e-04, + 1.671884101754515458e-04, + 1.668787549306208890e-04, + 1.665688505896457776e-04, + 1.662586976740268062e-04, + 1.659482967056514395e-04, + 1.656376482067394506e-04, + 1.653267526999238830e-04, + 1.650156107081543401e-04, + 1.647042227547762679e-04, + 1.643925893634727868e-04, + 1.640807110583152972e-04, + 1.637685883637010837e-04, + 1.634562218044355785e-04, + 1.631436119056359224e-04, + 1.628307591928112490e-04, + 1.625176641918071201e-04, + 1.622043274288194575e-04, + 1.618907494304335198e-04, + 1.615769307235685270e-04, + 1.612628718354909422e-04, + 1.609485732938195396e-04, + 1.606340356265466556e-04, + 1.603192593619808340e-04, + 1.600042450288286563e-04, + 1.596889931560986544e-04, + 1.593735042731814601e-04, + 1.590577789097884665e-04, + 1.587418175959983129e-04, + 1.584256208622279098e-04, + 1.581091892392465605e-04, + 1.577925232581468503e-04, + 1.574756234503919719e-04, + 1.571584903477668820e-04, + 1.568411244823912848e-04, + 1.565235263867589615e-04, + 1.562056965936829364e-04, + 1.558876356363083520e-04, + 1.555693440481184324e-04, + 1.552508223629396871e-04, + 1.549320711149550027e-04, + 1.546130908386484032e-04, + 1.542938820688455987e-04, + 1.539744453407252344e-04, + 1.536547811897644091e-04, + 1.533348901518206411e-04, + 1.530147727630329075e-04, + 1.526944295599040439e-04, + 1.523738610792472927e-04, + 1.520530678582012656e-04, + 1.517320504342403243e-04, + 1.514108093451850979e-04, + 1.510893451291391650e-04, + 1.507676583245668182e-04, + 1.504457494702342464e-04, + 1.501236191052226804e-04, + 1.498012677689703517e-04, + 1.494786960012159513e-04, + 1.491559043420101493e-04, + 1.488328933317227510e-04, + 1.485096635110628625e-04, + 1.481862154210219433e-04, + 1.478625496029570188e-04, + 1.475386665984898765e-04, + 1.472145669495934772e-04, + 1.468902511985332993e-04, + 1.465657198878786958e-04, + 1.462409735605480247e-04, + 1.459160127597483125e-04, + 1.455908380289895935e-04, + 1.452654499120911431e-04, + 1.449398489532015906e-04, + 1.446140356967406970e-04, + 1.442880106874856033e-04, + 1.439617744704675337e-04, + 1.436353275910587748e-04, + 1.433086705949064045e-04, + 1.429818040279754701e-04, + 1.426547284365519157e-04, + 1.423274443671888867e-04, + 1.419999523667462497e-04, + 1.416722529824032228e-04, + 1.413443467616174473e-04, + 1.410162342521349894e-04, + 1.406879160020351718e-04, + 1.403593925596709159e-04, + 1.400306644736827816e-04, + 1.397017322930033860e-04, + 1.393725965668667272e-04, + 1.390432578448203005e-04, + 1.387137166766653042e-04, + 1.383839736125005776e-04, + 1.380540292027359630e-04, + 1.377238839980324042e-04, + 1.373935385493900375e-04, + 1.370629934080425908e-04, + 1.367322491255475072e-04, + 1.364013062537157710e-04, + 1.360701653446724053e-04, + 1.357388269507876256e-04, + 1.354072916247648229e-04, + 1.350755599195367239e-04, + 1.347436323883531030e-04, + 1.344115095847194712e-04, + 1.340791920624134466e-04, + 1.337466803755254943e-04, + 1.334139750783999180e-04, + 1.330810767256498765e-04, + 1.327479858721620457e-04, + 1.324147030731190073e-04, + 1.320812288839387234e-04, + 1.317475638603624109e-04, + 1.314137085583499162e-04, + 1.310796635341680231e-04, + 1.307454293443308221e-04, + 1.304110065456111757e-04, + 1.300763956950873389e-04, + 1.297415973500806990e-04, + 1.294066120681702228e-04, + 1.290714404071996392e-04, + 1.287360829252973344e-04, + 1.284005401808169375e-04, + 1.280648127324190966e-04, + 1.277289011390011413e-04, + 1.273928059597135892e-04, + 1.270565277539649441e-04, + 1.267200670814285532e-04, + 1.263834245020577587e-04, + 1.260466005760236380e-04, + 1.257095958637600519e-04, + 1.253724109259768448e-04, + 1.250350463236000239e-04, + 1.246975026178588478e-04, + 1.243597803701829087e-04, + 1.240218801422882447e-04, + 1.236838024961180074e-04, + 1.233455479938645792e-04, + 1.230071171979736666e-04, + 1.226685106711611589e-04, + 1.223297289763506789e-04, + 1.219907726767178313e-04, + 1.216516423357046908e-04, + 1.213123385169577581e-04, + 1.209728617844191962e-04, + 1.206332127022187618e-04, + 1.202933918347635239e-04, + 1.199533997466697613e-04, + 1.196132370028219307e-04, + 1.192729041683041443e-04, + 1.189324018084891019e-04, + 1.185917304889324084e-04, + 1.182508907754611796e-04, + 1.179098832341134498e-04, + 1.175687084311530516e-04, + 1.172273669331119137e-04, + 1.168858593067302945e-04, + 1.165441861189703342e-04, + 1.162023479370239424e-04, + 1.158603453283321651e-04, + 1.155181788605255802e-04, + 1.151758491015138799e-04, + 1.148333566193777489e-04, + 1.144907019824615630e-04, + 1.141478857593004095e-04, + 1.138049085186757740e-04, + 1.134617708295816458e-04, + 1.131184732612408622e-04, + 1.127750163830724603e-04, + 1.124314007647431635e-04, + 1.120876269761012580e-04, + 1.117436955872628282e-04, + 1.113996071685066023e-04, + 1.110553622903648628e-04, + 1.107109615235603729e-04, + 1.103664054390277217e-04, + 1.100216946079217542e-04, + 1.096768296016308795e-04, + 1.093318109917150682e-04, + 1.089866393499511042e-04, + 1.086413152483462727e-04, + 1.082958392590768049e-04, + 1.079502119545791268e-04, + 1.076044339074404228e-04, + 1.072585056904911451e-04, + 1.069124278767412221e-04, + 1.065662010394038159e-04, + 1.062198257518999977e-04, + 1.058733025878750791e-04, + 1.055266321211281114e-04, + 1.051798149256938787e-04, + 1.048328515757829412e-04, + 1.044857426457937921e-04, + 1.041384887103597221e-04, + 1.037910903442853123e-04, + 1.034435481225619654e-04, + 1.030958626203724729e-04, + 1.027480344131160195e-04, + 1.024000640763436730e-04, + 1.020519521858503383e-04, + 1.017036993175659713e-04, + 1.013553060476473971e-04, + 1.010067729524156299e-04, + 1.006581006083691674e-04, + 1.003092895922316421e-04, + 9.996034048088695890e-05, + 9.961125385139498834e-05, + 9.926203028099772000e-05, + 9.891267034712662135e-05, + 9.856317462741632574e-05, + 9.821354369964299560e-05, + 9.786377814176881534e-05, + 9.751387853195637057e-05, + 9.716384544851469553e-05, + 9.681367946994348141e-05, + 9.646338117494084193e-05, + 9.611295114233923704e-05, + 9.576238995115267632e-05, + 9.541169818058956682e-05, + 9.506087640999108968e-05, + 9.470992521892228669e-05, + 9.435884518706303022e-05, + 9.400763689429990930e-05, + 9.365630092066392872e-05, + 9.330483784635159672e-05, + 9.295324825173282614e-05, + 9.260153271736473084e-05, + 9.224969182392955521e-05, + 9.189772615227874690e-05, + 9.154563628344931480e-05, + 9.119342279859925118e-05, + 9.084108627910077313e-05, + 9.048862730642976099e-05, + 9.013604646225906755e-05, + 8.978334432838723175e-05, + 8.943052148679848923e-05, + 8.907757851959388488e-05, + 8.872451600908226447e-05, + 8.837133453767109553e-05, + 8.801803468795767584e-05, + 8.766461704266821479e-05, + 8.731108218466988164e-05, + 8.695743069701796825e-05, + 8.660366316289307316e-05, + 8.624978016561409846e-05, + 8.589578228864655745e-05, + 8.554167011562427230e-05, + 8.518744423028611079e-05, + 8.483310521656920063e-05, + 8.447865365849801557e-05, + 8.412409014027704757e-05, + 8.376941524622803152e-05, + 8.341462956080393141e-05, + 8.305973366863579144e-05, + 8.270472815446773811e-05, + 8.234961360316543698e-05, + 8.199439059976101928e-05, + 8.163905972938210738e-05, + 8.128362157734481217e-05, + 8.092807672904306316e-05, + 8.057242577004117225e-05, + 8.021666928601137007e-05, + 7.986080786275464986e-05, + 7.950484208620973916e-05, + 7.914877254246617804e-05, + 7.879259981770087972e-05, + 7.843632449822513072e-05, + 7.807994717049766907e-05, + 7.772346842106306092e-05, + 7.736688883664319372e-05, + 7.701020900402728386e-05, + 7.665342951016490124e-05, + 7.629655094210186579e-05, + 7.593957388700324615e-05, + 7.558249893216042049e-05, + 7.522532666500556420e-05, + 7.486805767304719405e-05, + 7.451069254391756139e-05, + 7.415323186538705846e-05, + 7.379567622529941025e-05, + 7.343802621165842418e-05, + 7.308028241255548412e-05, + 7.272244541618481050e-05, + 7.236451581085041277e-05, + 7.200649418498721781e-05, + 7.164838112709975826e-05, + 7.129017722585404514e-05, + 7.093188306996558328e-05, + 7.057349924829563496e-05, + 7.021502634978389092e-05, + 6.985646496346588537e-05, + 6.949781567851805815e-05, + 6.913907908419416627e-05, + 6.878025576983982578e-05, + 6.842134632489949128e-05, + 6.806235133892358461e-05, + 6.770327140158292824e-05, + 6.734410710260538724e-05, + 6.698485903182105339e-05, + 6.662552777917825071e-05, + 6.626611393468685880e-05, + 6.590661808847196731e-05, + 6.554704083074263732e-05, + 6.518738275180613155e-05, + 6.482764444203412786e-05, + 6.446782649191949081e-05, + 6.410792949200190896e-05, + 6.374795403296331818e-05, + 6.338790070551555121e-05, + 6.302777010049437866e-05, + 6.266756280879512094e-05, + 6.230727942139551139e-05, + 6.194692052936281133e-05, + 6.158648672386894825e-05, + 6.122597859612527395e-05, + 6.086539673742961888e-05, + 6.050474173918186406e-05, + 6.014401419281821125e-05, + 5.978321468990646404e-05, + 5.942234382203348764e-05, + 5.906140218089960225e-05, + 5.870039035824612447e-05, + 5.833930894591812902e-05, + 5.797815853579165818e-05, + 5.761693971986823706e-05, + 5.725565309016304494e-05, + 5.689429923879861745e-05, + 5.653287875794039751e-05, + 5.617139223981230044e-05, + 5.580984027674302969e-05, + 5.544822346110160068e-05, + 5.508654238531182173e-05, + 5.472479764185972080e-05, + 5.436298982330074866e-05, + 5.400111952227438855e-05, + 5.363918733143930049e-05, + 5.327719384352048418e-05, + 5.291513965132434931e-05, + 5.255302534768959446e-05, + 5.219085152550200651e-05, + 5.182861877774229420e-05, + 5.146632769742033131e-05, + 5.110397887759024065e-05, + 5.074157291135803763e-05, + 5.037911039188783057e-05, + 5.001659191241786690e-05, + 4.965401806619464754e-05, + 4.929138944652011002e-05, + 4.892870664676717322e-05, + 4.856597026032240342e-05, + 4.820318088063280440e-05, + 4.784033910121346107e-05, + 4.747744551558224336e-05, + 4.711450071730651504e-05, + 4.675150530001884788e-05, + 4.638845985735127152e-05, + 4.602536498303136771e-05, + 4.566222127076788019e-05, + 4.529902931434721545e-05, + 4.493578970756750292e-05, + 4.457250304426162748e-05, + 4.420916991830495441e-05, + 4.384579092362995257e-05, + 4.348236665416093896e-05, + 4.311889770386146515e-05, + 4.275538466674961809e-05, + 4.239182813683200574e-05, + 4.202822870820047466e-05, + 4.166458697491717106e-05, + 4.130090353111129229e-05, + 4.093717897090498836e-05, + 4.057341388847709275e-05, + 4.020960887798936950e-05, + 3.984576453368266847e-05, + 3.948188144976279941e-05, + 3.911796022049656525e-05, + 3.875400144014578158e-05, + 3.839000570298315346e-05, + 3.802597360333897738e-05, + 3.766190573553631959e-05, + 3.729780269390571378e-05, + 3.693366507279229646e-05, + 3.656949346656318637e-05, + 3.620528846962235833e-05, + 3.584105067634536074e-05, + 3.547678068112649193e-05, + 3.511247907839438554e-05, + 3.474814646256217112e-05, + 3.438378342804266654e-05, + 3.401939056929660459e-05, + 3.365496848076585974e-05, + 3.329051775688147800e-05, + 3.292603899211100910e-05, + 3.256153278088442160e-05, + 3.219699971769067145e-05, + 3.183244039696295273e-05, + 3.146785541317557110e-05, + 3.110324536077729927e-05, + 3.073861083421549370e-05, + 3.037395242794272180e-05, + 3.000927073643234734e-05, + 2.964456635411254318e-05, + 2.927983987541383354e-05, + 2.891509189478469298e-05, + 2.855032300662547440e-05, + 2.818553380538481160e-05, + 2.782072488544494115e-05, + 2.745589684121848439e-05, + 2.709105026708207053e-05, + 2.672618575740016539e-05, + 2.636130390653184427e-05, + 2.599640530884650272e-05, + 2.563149055865740174e-05, + 2.526656025026993168e-05, + 2.490161497799637096e-05, + 2.453665533609056289e-05, + 2.417168191883574963e-05, + 2.380669532047080233e-05, + 2.344169613520536273e-05, + 2.307668495722711073e-05, + 2.271166238070888957e-05, + 2.234662899982388132e-05, + 2.198158540867977206e-05, + 2.161653220136656184e-05, + 2.125146997197171637e-05, + 2.088639931453049366e-05, + 2.052132082304140062e-05, + 2.015623509151372183e-05, + 1.979114271390176267e-05, + 1.942604428411986547e-05, + 1.906094039604994139e-05, + 1.869583164354840250e-05, + 1.833071862046136094e-05, + 1.796560192055899745e-05, + 1.760048213758299180e-05, + 1.723535986526202686e-05, + 1.687023569725379401e-05, + 1.650511022720115814e-05, + 1.613998404869839497e-05, + 1.577485775530666458e-05, + 1.540973194052049270e-05, + 1.504460719782370532e-05, + 1.467948412061533197e-05, + 1.431436330230611832e-05, + 1.394924533620390743e-05, + 1.358413081560997274e-05, + 1.321902033375329853e-05, + 1.285391448381384111e-05, + 1.248881385892978791e-05, + 1.212371905221272951e-05, + 1.175863065668183504e-05, + 1.139354926531150964e-05, + 1.102847547104673760e-05, + 1.066340986673718659e-05, + 1.029835304523369827e-05, + 9.933305599273489916e-06, + 9.568268121576861858e-06, + 9.203241204772985541e-06, + 8.838225441455865294e-06, + 8.473221424150853429e-06, + 8.108229745330001860e-06, + 7.743250997378534848e-06, + 7.378285772650803998e-06, + 7.013334663412439297e-06, + 6.648398261855616032e-06, + 6.283477160146936720e-06, + 5.918571950361362537e-06, + 5.553683224497566635e-06, + 5.188811574485067008e-06, + 4.823957592191434745e-06, + 4.459121869437604993e-06, + 4.094304997931818553e-06, + 3.729507569317488984e-06, + 3.364730175188512722e-06, + 2.999973407039506318e-06, + 2.635237856281112748e-06, + 2.270524114287873597e-06, + 1.905832772332159639e-06, + 1.541164421599510611e-06, + 1.176519653195815715e-06, + 8.118990581544741216e-07, + 4.473032274517156246e-07, + 8.273275193244935152e-08, +-2.818117776012327153e-07, +-6.463297704560713949e-07, +-1.010820636024193827e-06, +-1.375283783775939277e-06, +-1.739718623244564615e-06, +-2.104124564092215693e-06, +-2.468501016062118896e-06, +-2.832847388963279921e-06, +-3.197163092736440107e-06, +-3.561447537357550260e-06, +-3.925700132952426302e-06, +-4.289920289700247655e-06, +-4.654107417899489013e-06, +-5.018260927944514706e-06, +-5.382380230318368331e-06, +-5.746464735577499901e-06, +-6.110513854417745478e-06, +-6.474526997626474045e-06, +-6.838503576067320583e-06, +-7.202443000746140294e-06, +-7.566344682714428211e-06, +-7.930208033184046418e-06, +-8.294032463430669921e-06, +-8.657817384867857986e-06, +-9.021562208999290793e-06, +-9.385266347411495125e-06, +-9.748929211839912930e-06, +-1.011255021412103041e-05, +-1.047612876617702301e-05, +-1.083966428006565752e-05, +-1.120315616796470665e-05, +-1.156660384212444576e-05, +-1.193000671493329957e-05, +-1.229336419890280736e-05, +-1.265667570666027410e-05, +-1.301994065094163332e-05, +-1.338315844457619042e-05, +-1.374632850055253022e-05, +-1.410945023197069696e-05, +-1.447252305202695270e-05, +-1.483554637407148065e-05, +-1.519851961155258940e-05, +-1.556144217805012836e-05, +-1.592431348726009550e-05, +-1.628713295302817982e-05, +-1.664989998929374202e-05, +-1.701261401016395018e-05, +-1.737527442981728578e-05, +-1.773788066261801512e-05, +-1.810043212301998332e-05, +-1.846292822563208995e-05, +-1.882536838519526331e-05, +-1.918775201657517594e-05, +-1.955007853474680150e-05, +-1.991234735486049353e-05, +-2.027455789219406029e-05, +-2.063670956213763341e-05, +-2.099880178025938745e-05, +-2.136083396220924579e-05, +-2.172280552383325724e-05, +-2.208471588107723414e-05, +-2.244656445005282431e-05, +-2.280835064702169192e-05, +-2.317007388834841221e-05, +-2.353173359056587945e-05, +-2.389332917036823248e-05, +-2.425486004456315321e-05, +-2.461632563012972237e-05, +-2.497772534420275955e-05, +-2.533905860402543340e-05, +-2.570032482701527601e-05, +-2.606152343074804182e-05, +-2.642265383295151076e-05, +-2.678371545149761760e-05, +-2.714470770438786264e-05, +-2.750563000981832661e-05, +-2.786648178613243670e-05, +-2.822726245180565559e-05, +-2.858797142549490073e-05, +-2.894860812602335540e-05, +-2.930917197233291960e-05, +-2.966966238354963831e-05, +-3.003007877896870557e-05, +-3.039042057804710215e-05, +-3.075068720039677515e-05, +-3.111087806576895778e-05, +-3.147099259411999738e-05, +-3.183103020556375890e-05, +-3.219099032035672054e-05, +-3.255087235895465041e-05, +-3.291067574196590453e-05, +-3.327039989014404748e-05, +-3.363004422445295194e-05, +-3.398960816601987985e-05, +-3.434909113611990381e-05, +-3.470849255624152839e-05, +-3.506781184799069080e-05, +-3.542704843320487317e-05, +-3.578620173385687963e-05, +-3.614527117212059992e-05, +-3.650425617035567473e-05, +-3.686315615106013636e-05, +-3.722197053693550154e-05, +-3.758069875087206017e-05, +-3.793934021594146881e-05, +-3.829789435537335907e-05, +-3.865636059262109447e-05, +-3.901473835126580494e-05, +-3.937302705513004517e-05, +-3.973122612818211371e-05, +-4.008933499460950767e-05, +-4.044735307876338450e-05, +-4.080527980519178599e-05, +-4.116311459862451362e-05, +-4.152085688400602059e-05, +-4.187850608644020560e-05, +-4.223606163124749604e-05, +-4.259352294394973699e-05, +-4.295088945022310968e-05, +-4.330816057596297361e-05, +-4.366533574726895196e-05, +-4.402241439043773520e-05, +-4.437939593195592539e-05, +-4.473627979848501991e-05, +-4.509306541692670761e-05, +-4.544975221437474376e-05, +-4.580633961810111967e-05, +-4.616282705560431648e-05, +-4.651921395459427544e-05, +-4.687549974294532315e-05, +-4.723168384876108821e-05, +-4.758776570035960020e-05, +-4.794374472626585610e-05, +-4.829962035520503051e-05, +-4.865539201608746621e-05, +-4.901105913808111918e-05, +-4.936662115052497829e-05, +-4.972207748299383286e-05, +-5.007742756527470474e-05, +-5.043267082736052615e-05, +-5.078780669943475069e-05, +-5.114283461193615482e-05, +-5.149775399551147854e-05, +-5.185256428100133751e-05, +-5.220726489950368955e-05, +-5.256185528228028833e-05, +-5.291633486086801060e-05, +-5.327070306698531663e-05, +-5.362495933259606910e-05, +-5.397910308989438812e-05, +-5.433313377125906728e-05, +-5.468705080931633548e-05, +-5.504085363692639242e-05, +-5.539454168717512127e-05, +-5.574811439335231652e-05, +-5.610157118901522500e-05, +-5.645491150789468110e-05, +-5.680813478400706417e-05, +-5.716124045155965446e-05, +-5.751422794502348472e-05, +-5.786709669908586572e-05, +-5.821984614864456542e-05, +-5.857247572887065880e-05, +-5.892498487516292365e-05, +-5.927737302313285822e-05, +-5.962963960865256229e-05, +-5.998178406783990395e-05, +-6.033380583701268497e-05, +-6.068570435275174809e-05, +-6.103747905188650297e-05, +-6.138912937148863777e-05, +-6.174065474886374376e-05, +-6.209205462153768139e-05, +-6.244332842731974869e-05, +-6.279447560425662975e-05, +-6.314549559061770378e-05, +-6.349638782495040719e-05, +-6.384715174602713481e-05, +-6.419778679287609893e-05, +-6.454829240476788528e-05, +-6.489866802124754535e-05, +-6.524891308207941051e-05, +-6.559902702732008594e-05, +-6.594900929722415214e-05, +-6.629885933235520079e-05, +-6.664857657349304056e-05, +-6.699816046169667575e-05, +-6.734761043828973732e-05, +-6.769692594481448557e-05, +-6.804610642309553417e-05, +-6.839515131522444090e-05, +-6.874406006355322958e-05, +-6.909283211067168955e-05, +-6.944146689947133008e-05, +-6.978996387305133934e-05, +-7.013832247483032503e-05, +-7.048654214845159575e-05, +-7.083462233784845708e-05, +-7.118256248722850418e-05, +-7.153036204102757034e-05, +-7.187802044397320698e-05, +-7.222553714107805649e-05, +-7.257291157759347547e-05, +-7.292014319906543892e-05, +-7.326723145131956467e-05, +-7.361417578041533295e-05, +-7.396097563270887529e-05, +-7.430763045483924575e-05, +-7.465413969372026233e-05, +-7.500050279653504531e-05, +-7.534671921071984906e-05, +-7.569278838402809773e-05, +-7.603870976448474039e-05, +-7.638448280037065199e-05, +-7.673010694027115148e-05, +-7.707558163306042992e-05, +-7.742090632785709819e-05, +-7.776608047408539021e-05, +-7.811110352146230160e-05, +-7.845597491998952591e-05, +-7.880069411994677323e-05, +-7.914526057187787887e-05, +-7.948967372665248087e-05, +-7.983393303542136445e-05, +-8.017803794960173043e-05, +-8.052198792093944195e-05, +-8.086578240142535117e-05, +-8.120942084336498640e-05, +-8.155290269936540611e-05, +-8.189622742232676930e-05, +-8.223939446542111219e-05, +-8.258240328215460857e-05, +-8.292525332627545325e-05, +-8.326794405188339362e-05, +-8.361047491333773504e-05, +-8.395284536531960118e-05, +-8.429505486281802917e-05, +-8.463710286108420261e-05, +-8.497898881569377976e-05, +-8.532071218253283948e-05, +-8.566227241779075265e-05, +-8.600366897793749522e-05, +-8.634490131978754838e-05, +-8.668596890040637258e-05, +-8.702687117722063021e-05, +-8.736760760792589291e-05, +-8.770817765055725023e-05, +-8.804858076343580425e-05, +-8.838881640520093817e-05, +-8.872888403479479861e-05, +-8.906878311149501147e-05, +-8.940851309486094614e-05, +-8.974807344478891494e-05, +-9.008746362149673678e-05, +-9.042668308548032843e-05, +-9.076573129757413525e-05, +-9.110460771893686034e-05, +-9.144331181104632818e-05, +-9.178184303568987586e-05, +-9.212020085495314513e-05, +-9.245838473127936119e-05, +-9.279639412742576128e-05, +-9.313422850644884955e-05, +-9.347188733175094998e-05, +-9.380937006706608467e-05, +-9.414667617641488454e-05, +-9.448380512416594166e-05, +-9.482075637502956152e-05, +-9.515752939401363598e-05, +-9.549412364649133820e-05, +-9.583053859811204182e-05, +-9.616677371490766767e-05, +-9.650282846320326418e-05, +-9.683870230967808865e-05, +-9.717439472135102469e-05, +-9.750990516553595378e-05, +-9.784523310990461188e-05, +-9.818037802246987915e-05, +-9.851533937158110437e-05, +-9.885011662590137730e-05, +-9.918470925446881323e-05, +-9.951911672660678106e-05, +-9.985333851203031770e-05, +-1.001873740807577385e-04, +-1.005212229031695367e-04, +-1.008548844499955352e-04, +-1.011883581922708142e-04, +-1.015216436013959927e-04, +-1.018547401491227814e-04, +-1.021876473075487108e-04, +-1.025203645490933737e-04, +-1.028528913465621085e-04, +-1.031852271730609977e-04, +-1.035173715020678697e-04, +-1.038493238074164826e-04, +-1.041810835632909956e-04, +-1.045126502442186362e-04, +-1.048440233250555112e-04, +-1.051752022810479453e-04, +-1.055061865877878391e-04, +-1.058369757211986286e-04, +-1.061675691575807406e-04, +-1.064979663735984194e-04, +-1.068281668462346375e-04, +-1.071581700528523534e-04, +-1.074879754711800778e-04, +-1.078175825793051246e-04, +-1.081469908556673766e-04, +-1.084761997790452046e-04, +-1.088052088286150577e-04, +-1.091340174839089763e-04, +-1.094626252247993454e-04, +-1.097910315315592169e-04, +-1.101192358847755056e-04, +-1.104472377654517988e-04, +-1.107750366549213492e-04, +-1.111026320349140374e-04, +-1.114300233874981102e-04, +-1.117572101951478346e-04, +-1.120841919406551486e-04, +-1.124109681072347480e-04, +-1.127375381784348696e-04, +-1.130639016381983865e-04, +-1.133900579708483334e-04, +-1.137160066610449187e-04, +-1.140417471938447348e-04, +-1.143672790546867724e-04, +-1.146926017293864436e-04, +-1.150177147041144807e-04, +-1.153426174654553879e-04, +-1.156673095003213293e-04, +-1.159917902960549106e-04, +-1.163160593403424838e-04, +-1.166401161212732090e-04, +-1.169639601273251498e-04, +-1.172875908473232874e-04, +-1.176110077704969155e-04, +-1.179342103864747476e-04, +-1.182571981852410619e-04, +-1.185799706571877689e-04, +-1.189025272931005617e-04, +-1.192248675841166316e-04, +-1.195469910217832288e-04, +-1.198688970980432830e-04, +-1.201905853052295895e-04, +-1.205120551360590087e-04, +-1.208333060836172735e-04, +-1.211543376414193527e-04, +-1.214751493033648628e-04, +-1.217957405637261012e-04, +-1.221161109172066745e-04, +-1.224362598588541796e-04, +-1.227561868841631893e-04, +-1.230758914889892072e-04, +-1.233953731696068082e-04, +-1.237146314226897706e-04, +-1.240336657453033236e-04, +-1.243524756348914897e-04, +-1.246710605893357670e-04, +-1.249894201069110835e-04, +-1.253075536862738705e-04, +-1.256254608265197702e-04, +-1.259431410271054093e-04, +-1.262605937879138858e-04, +-1.265778186092400234e-04, +-1.268948149917874170e-04, +-1.272115824366425478e-04, +-1.275281204453379915e-04, +-1.278444285197636774e-04, +-1.281605061622694800e-04, +-1.284763528755802182e-04, +-1.287919681628520879e-04, +-1.291073515276618469e-04, +-1.294225024739629321e-04, +-1.297374205061420274e-04, +-1.300521051290088996e-04, +-1.303665558477881041e-04, +-1.306807721680973823e-04, +-1.309947535960078889e-04, +-1.313084996379578623e-04, +-1.316220098008535097e-04, +-1.319352835919838972e-04, +-1.322483205190864628e-04, +-1.325611200902977933e-04, +-1.328736818141827084e-04, +-1.331860051997209792e-04, +-1.334980897563355713e-04, +-1.338099349938458890e-04, +-1.341215404225157509e-04, +-1.344329055530419791e-04, +-1.347440298965103529e-04, +-1.350549129644557284e-04, +-1.353655542688473744e-04, +-1.356759533220810846e-04, +-1.359861096369761153e-04, +-1.362960227267592469e-04, +-1.366056921051237653e-04, +-1.369151172861856594e-04, +-1.372242977844725898e-04, +-1.375332331149793999e-04, +-1.378419227930860144e-04, +-1.381503663346545299e-04, +-1.384585632559485774e-04, +-1.387665130736930616e-04, +-1.390742153050229866e-04, +-1.393816694675456352e-04, +-1.396888750792559463e-04, +-1.399958316586375092e-04, +-1.403025387245777510e-04, +-1.406089957964264028e-04, +-1.409152023939795617e-04, +-1.412211580374406054e-04, +-1.415268622474769500e-04, +-1.418323145452051153e-04, +-1.421375144521868489e-04, +-1.424424614904054630e-04, +-1.427471551823272550e-04, +-1.430515950508139578e-04, +-1.433557806192232997e-04, +-1.436597114113263342e-04, +-1.439633869513628692e-04, +-1.442668067640292162e-04, +-1.445699703744363670e-04, +-1.448728773081670224e-04, +-1.451755270912621757e-04, +-1.454779192502147155e-04, +-1.457800533119496121e-04, +-1.460819288038801064e-04, +-1.463835452538320050e-04, +-1.466849021901072965e-04, +-1.469859991414699206e-04, +-1.472868356371408627e-04, +-1.475874112067915398e-04, +-1.478877253805306548e-04, +-1.481877776889591383e-04, +-1.484875676631314701e-04, +-1.487870948345412856e-04, +-1.490863587351768337e-04, +-1.493853588974412871e-04, +-1.496840948542476105e-04, +-1.499825661389364323e-04, +-1.502807722853341846e-04, +-1.505787128277312026e-04, +-1.508763873008758154e-04, +-1.511737952399631521e-04, +-1.514709361806872915e-04, +-1.517678096592045621e-04, +-1.520644152121180376e-04, +-1.523607523765332114e-04, +-1.526568206899794184e-04, +-1.529526196905020465e-04, +-1.532481489165835259e-04, +-1.535434079072068626e-04, +-1.538383962017981490e-04, +-1.541331133402922395e-04, +-1.544275588630497815e-04, +-1.547217323109526801e-04, +-1.550156332253262517e-04, +-1.553092611479896397e-04, +-1.556026156212466261e-04, +-1.558956961878454612e-04, +-1.561885023910319090e-04, +-1.564810337745372931e-04, +-1.567732898825717751e-04, +-1.570652702598068719e-04, +-1.573569744514283913e-04, +-1.576484020030560664e-04, +-1.579395524608396151e-04, +-1.582304253713783470e-04, +-1.585210202817819325e-04, +-1.588113367396241623e-04, +-1.591013742929710544e-04, +-1.593911324903678174e-04, +-1.596806108808660092e-04, +-1.599698090139777570e-04, +-1.602587264397369873e-04, +-1.605473627086194930e-04, +-1.608357173716361212e-04, +-1.611237899802562005e-04, +-1.614115800864582013e-04, +-1.616990872427126588e-04, +-1.619863110019755599e-04, +-1.622732509176763626e-04, +-1.625599065437700105e-04, +-1.628462774347004766e-04, +-1.631323631453855303e-04, +-1.634181632312715438e-04, +-1.637036772482570015e-04, +-1.639889047527803747e-04, +-1.642738453017472905e-04, +-1.645584984525799439e-04, +-1.648428637632010790e-04, +-1.651269407920254780e-04, +-1.654107290979487397e-04, +-1.656942282404063411e-04, +-1.659774377793043305e-04, +-1.662603572750699589e-04, +-1.665429862886387243e-04, +-1.668253243814198398e-04, +-1.671073711153445889e-04, +-1.673891260528570014e-04, +-1.676705887569061827e-04, +-1.679517587909288580e-04, +-1.682326357189002490e-04, +-1.685132191052592901e-04, +-1.687935085149991062e-04, +-1.690735035135876210e-04, +-1.693532036670231502e-04, +-1.696326085418222850e-04, +-1.699117177049780966e-04, +-1.701905307240165685e-04, +-1.704690471669815534e-04, +-1.707472666024312496e-04, +-1.710251885994304216e-04, +-1.713028127275390976e-04, +-1.715801385568651530e-04, +-1.718571656580252524e-04, +-1.721338936021334651e-04, +-1.724103219608469914e-04, +-1.726864503063269690e-04, +-1.729622782112360873e-04, +-1.732378052487862656e-04, +-1.735130309927024133e-04, +-1.737879550172126723e-04, +-1.740625768970959593e-04, +-1.743368962076103268e-04, +-1.746109125245798083e-04, +-1.748846254243196889e-04, +-1.751580344836880870e-04, +-1.754311392800677119e-04, +-1.757039393913593863e-04, +-1.759764343959718000e-04, +-1.762486238728707061e-04, +-1.765205074015415159e-04, +-1.767920845619804892e-04, +-1.770633549347418168e-04, +-1.773343181008658453e-04, +-1.776049736419651093e-04, +-1.778753211401528007e-04, +-1.781453601780957864e-04, +-1.784150903389687193e-04, +-1.786845112065093329e-04, +-1.789536223649451760e-04, +-1.792224233990785600e-04, +-1.794909138942175767e-04, +-1.797590934362212553e-04, +-1.800269616114917831e-04, +-1.802945180069350406e-04, +-1.805617622100121555e-04, +-1.808286938087289312e-04, +-1.810953123916277162e-04, +-1.813616175477711400e-04, +-1.816276088667917975e-04, +-1.818932859388186312e-04, +-1.821586483545645078e-04, +-1.824236957052515168e-04, +-1.826884275826627679e-04, +-1.829528435791297875e-04, +-1.832169432874954118e-04, +-1.834807263011651506e-04, +-1.837441922140943128e-04, +-1.840073406207823684e-04, +-1.842701711162682862e-04, +-1.845326832961202614e-04, +-1.847948767564878113e-04, +-1.850567510940370481e-04, +-1.853183059060018270e-04, +-1.855795407901622508e-04, +-1.858404553448430988e-04, +-1.861010491689001382e-04, +-1.863613218617686149e-04, +-1.866212730234302673e-04, +-1.868809022543996918e-04, +-1.871402091557728613e-04, +-1.873991933291569226e-04, +-1.876578543767541143e-04, +-1.879161919012915100e-04, +-1.881742055060676663e-04, +-1.884318947949364682e-04, +-1.886892593723013827e-04, +-1.889462988431050777e-04, +-1.892030128128766389e-04, +-1.894594008876957370e-04, +-1.897154626741843879e-04, +-1.899711977795503202e-04, +-1.902266058115214902e-04, +-1.904816863784262581e-04, +-1.907364390891239179e-04, +-1.909908635530584739e-04, +-1.912449593802121011e-04, +-1.914987261811593286e-04, +-1.917521635669948042e-04, +-1.920052711494198681e-04, +-1.922580485406693424e-04, +-1.925104953535606721e-04, +-1.927626112014818366e-04, +-1.930143956983590133e-04, +-1.932658484587006231e-04, +-1.935169690975885759e-04, +-1.937677572306719005e-04, +-1.940182124741633837e-04, +-1.942683344448261533e-04, +-1.945181227600218169e-04, +-1.947675770376759024e-04, +-1.950166968962679112e-04, +-1.952654819548706470e-04, +-1.955139318331116998e-04, +-1.957620461511963496e-04, +-1.960098245298977002e-04, +-1.962572665905797456e-04, +-1.965043719551553842e-04, +-1.967511402461428517e-04, +-1.969975710865955187e-04, +-1.972436641001810379e-04, +-1.974894189111156952e-04, +-1.977348351442094314e-04, +-1.979799124248497418e-04, +-1.982246503789962283e-04, +-1.984690486331710580e-04, +-1.987131068145019249e-04, +-1.989568245506923700e-04, +-1.992002014700078490e-04, +-1.994432372013233291e-04, +-1.996859313740572339e-04, +-1.999282836182464970e-04, +-2.001702935644845732e-04, +-2.004119608439633969e-04, +-2.006532850884603172e-04, +-2.008942659303284491e-04, +-2.011349030024925529e-04, +-2.013751959384923215e-04, +-2.016151443724285494e-04, +-2.018547479390035194e-04, +-2.020940062735116513e-04, +-2.023329190118087378e-04, +-2.025714857903528185e-04, +-2.028097062461995997e-04, +-2.030475800169892812e-04, +-2.032851067409504589e-04, +-2.035222860568831850e-04, +-2.037591176042063469e-04, +-2.039956010229248434e-04, +-2.042317359536184715e-04, +-2.044675220374762956e-04, +-2.047029589162854802e-04, +-2.049380462323989807e-04, +-2.051727836287819203e-04, +-2.054071707489975220e-04, +-2.056412072372047512e-04, +-2.058748927381528397e-04, +-2.061082268971704443e-04, +-2.063412093602109119e-04, +-2.065738397738191843e-04, +-2.068061177851207393e-04, +-2.070380430418626008e-04, +-2.072696151923779395e-04, +-2.075008338855851512e-04, +-2.077316987710269697e-04, +-2.079622094988444999e-04, +-2.081923657197597621e-04, +-2.084221670851262704e-04, +-2.086516132468612425e-04, +-2.088807038575201931e-04, +-2.091094385702366523e-04, +-2.093378170387630939e-04, +-2.095658389174563261e-04, +-2.097935038612726397e-04, +-2.100208115257567489e-04, +-2.102477615670864336e-04, +-2.104743536420390106e-04, +-2.107005874079840419e-04, +-2.109264625229236132e-04, +-2.111519786454308322e-04, +-2.113771354347243137e-04, +-2.116019325506047263e-04, +-2.118263696535027955e-04, +-2.120504464044388091e-04, +-2.122741624650681261e-04, +-2.124975174976210038e-04, +-2.127205111649756457e-04, +-2.129431431305959415e-04, +-2.131654130585733170e-04, +-2.133873206136161090e-04, +-2.136088654610225146e-04, +-2.138300472667188906e-04, +-2.140508656972494532e-04, +-2.142713204197751130e-04, +-2.144914111020662379e-04, +-2.147111374124933557e-04, +-2.149304990200688690e-04, +-2.151494955944176462e-04, +-2.153681268057653394e-04, +-2.155863923249709102e-04, +-2.158042918235162754e-04, +-2.160218249734784709e-04, +-2.162389914475662696e-04, +-2.164557909191196130e-04, +-2.166722230620797681e-04, +-2.168882875510300123e-04, +-2.171039840611443234e-04, +-2.173193122682496670e-04, +-2.175342718487716510e-04, +-2.177488624797741532e-04, +-2.179630838389421364e-04, +-2.181769356045797244e-04, +-2.183904174556020972e-04, +-2.186035290715715950e-04, +-2.188162701326712368e-04, +-2.190286403196948812e-04, +-2.192406393140860674e-04, +-2.194522667978819630e-04, +-2.196635224537789571e-04, +-2.198744059650783154e-04, +-2.200849170157222841e-04, +-2.202950552902815668e-04, +-2.205048204739518017e-04, +-2.207142122525418242e-04, +-2.209232303125146775e-04, +-2.211318743409603448e-04, +-2.213401440255828199e-04, +-2.215480390547421474e-04, +-2.217555591174020016e-04, +-2.219627039031699372e-04, +-2.221694731022933237e-04, +-2.223758664056508074e-04, +-2.225818835047502513e-04, +-2.227875240917190857e-04, +-2.229927878593438275e-04, +-2.231976745010376623e-04, +-2.234021837108391437e-04, +-2.236063151834331722e-04, +-2.238100686141469842e-04, +-2.240134436989202273e-04, +-2.242164401343445614e-04, +-2.244190576176523829e-04, +-2.246212958467161467e-04, +-2.248231545200394762e-04, +-2.250246333367519858e-04, +-2.252257319966455209e-04, +-2.254264502001471877e-04, +-2.256267876483105718e-04, +-2.258267440428471525e-04, +-2.260263190860971653e-04, +-2.262255124810453222e-04, +-2.264243239313139548e-04, +-2.266227531411827193e-04, +-2.268207998155540646e-04, +-2.270184636599968176e-04, +-2.272157443806913763e-04, +-2.274126416844958465e-04, +-2.276091552788877658e-04, +-2.278052848720035686e-04, +-2.280010301726257381e-04, +-2.281963908901776025e-04, +-2.283913667347156910e-04, +-2.285859574169637240e-04, +-2.287801626482901694e-04, +-2.289739821406969135e-04, +-2.291674156068560962e-04, +-2.293604627600548168e-04, +-2.295531233142635746e-04, +-2.297453969840772877e-04, +-2.299372834847582822e-04, +-2.301287825322070998e-04, +-2.303198938429769447e-04, +-2.305106171342698618e-04, +-2.307009521239498831e-04, +-2.308908985305163555e-04, +-2.310804560731340011e-04, +-2.312696244716235384e-04, +-2.314584034464367730e-04, +-2.316467927186920779e-04, +-2.318347920101668583e-04, +-2.320224010432910737e-04, +-2.322096195411443918e-04, +-2.323964472274508758e-04, +-2.325828838266078241e-04, +-2.327689290636679627e-04, +-2.329545826643240219e-04, +-2.331398443549388775e-04, +-2.333247138625374191e-04, +-2.335091909147797161e-04, +-2.336932752399966068e-04, +-2.338769665671807806e-04, +-2.340602646259839321e-04, +-2.342431691467109606e-04, +-2.344256798603150372e-04, +-2.346077964984349278e-04, +-2.347895187933449852e-04, +-2.349708464779959956e-04, +-2.351517792859976962e-04, +-2.353323169516165258e-04, +-2.355124592097696879e-04, +-2.356922057960554281e-04, +-2.358715564467318642e-04, +-2.360505108987054400e-04, +-2.362290688895673271e-04, +-2.364072301575442293e-04, +-2.365849944415529451e-04, +-2.367623614811564304e-04, +-2.369393310165928822e-04, +-2.371159027887676071e-04, +-2.372920765392443206e-04, +-2.374678520102425179e-04, +-2.376432289446664761e-04, +-2.378182070860839772e-04, +-2.379927861787175256e-04, +-2.381669659674752752e-04, +-2.383407461979076072e-04, +-2.385141266162584396e-04, +-2.386871069694212089e-04, +-2.388596870049737272e-04, +-2.390318664711501553e-04, +-2.392036451168594346e-04, +-2.393750226916752306e-04, +-2.395459989458533618e-04, +-2.397165736303040983e-04, +-2.398867464966210014e-04, +-2.400565172970719791e-04, +-2.402258857845772767e-04, +-2.403948517127410273e-04, +-2.405634148358433910e-04, +-2.407315749088353779e-04, +-2.408993316873396615e-04, +-2.410666849276389776e-04, +-2.412336343867099513e-04, +-2.414001798221987840e-04, +-2.415663209924136365e-04, +-2.417320576563499997e-04, +-2.418973895736819667e-04, +-2.420623165047404673e-04, +-2.422268382105417285e-04, +-2.423909544527870572e-04, +-2.425546649938394223e-04, +-2.427179695967552481e-04, +-2.428808680252437298e-04, +-2.430433600437174662e-04, +-2.432054454172468956e-04, +-2.433671239115927406e-04, +-2.435283952931933775e-04, +-2.436892593291626133e-04, +-2.438497157872818795e-04, +-2.440097644360316744e-04, +-2.441694050445662192e-04, +-2.443286373827102329e-04, +-2.444874612209875552e-04, +-2.446458763305763961e-04, +-2.448038824833606727e-04, +-2.449614794518885385e-04, +-2.451186670094010608e-04, +-2.452754449298232757e-04, +-2.454318129877460278e-04, +-2.455877709584524250e-04, +-2.457433186179130134e-04, +-2.458984557427812238e-04, +-2.460531821103826384e-04, +-2.462074974987454564e-04, +-2.463614016865596740e-04, +-2.465148944532118331e-04, +-2.466679755787756431e-04, +-2.468206448440104085e-04, +-2.469729020303574512e-04, +-2.471247469199321415e-04, +-2.472761792955543644e-04, +-2.474271989407278113e-04, +-2.475778056396298423e-04, +-2.477279991771368030e-04, +-2.478777793388156213e-04, +-2.480271459109036959e-04, +-2.481760986803354047e-04, +-2.483246374347383646e-04, +-2.484727619624269262e-04, +-2.486204720524013063e-04, +-2.487677674943416248e-04, +-2.489146480786318116e-04, +-2.490611135963445902e-04, +-2.492071638392316115e-04, +-2.493527985997470893e-04, +-2.494980176710267128e-04, +-2.496428208469000064e-04, +-2.497872079218840954e-04, +-2.499311786911961744e-04, +-2.500747329507355099e-04, +-2.502178704971056117e-04, +-2.503605911275800806e-04, +-2.505028946401508558e-04, +-2.506447808334813770e-04, +-2.507862495069425801e-04, +-2.509273004605984229e-04, +-2.510679334951916282e-04, +-2.512081484121685658e-04, +-2.513479450136731812e-04, +-2.514873231025425504e-04, +-2.516262824822998326e-04, +-2.517648229571789356e-04, +-2.519029443320860268e-04, +-2.520406464126453408e-04, +-2.521779290051617741e-04, +-2.523147919166467980e-04, +-2.524512349548010568e-04, +-2.525872579280227163e-04, +-2.527228606454054037e-04, +-2.528580429167478572e-04, +-2.529928045525336512e-04, +-2.531271453639537478e-04, +-2.532610651629009133e-04, +-2.533945637619478171e-04, +-2.535276409743775520e-04, +-2.536602966141731177e-04, +-2.537925304960162820e-04, +-2.539243424352862800e-04, +-2.540557322480509238e-04, +-2.541866997510930024e-04, +-2.543172447618934225e-04, +-2.544473670986223727e-04, +-2.545770665801607357e-04, +-2.547063430260925539e-04, +-2.548351962566864888e-04, +-2.549636260929225473e-04, +-2.550916323564844917e-04, +-2.552192148697583762e-04, +-2.553463734558275057e-04, +-2.554731079384696163e-04, +-2.555994181421818124e-04, +-2.557253038921492331e-04, +-2.558507650142674951e-04, +-2.559758013351362961e-04, +-2.561004126820556740e-04, +-2.562245988830192853e-04, +-2.563483597667396666e-04, +-2.564716951626299117e-04, +-2.565946049007991180e-04, +-2.567170888120742333e-04, +-2.568391467279670416e-04, +-2.569607784807136823e-04, +-2.570819839032425580e-04, +-2.572027628291939584e-04, +-2.573231150929174041e-04, +-2.574430405294528355e-04, +-2.575625389745551702e-04, +-2.576816102646893158e-04, +-2.578002542370250194e-04, +-2.579184707294291160e-04, +-2.580362595804929588e-04, +-2.581536206294907316e-04, +-2.582705537164261774e-04, +-2.583870586819949776e-04, +-2.585031353676130487e-04, +-2.586187836153963225e-04, +-2.587340032681623722e-04, +-2.588487941694494945e-04, +-2.589631561635031025e-04, +-2.590770890952660767e-04, +-2.591905928104013706e-04, +-2.593036671552816563e-04, +-2.594163119769757721e-04, +-2.595285271232700814e-04, +-2.596403124426640814e-04, +-2.597516677843653078e-04, +-2.598625929982893885e-04, +-2.599730879350542435e-04, +-2.600831524460016060e-04, +-2.601927863831797298e-04, +-2.603019895993411120e-04, +-2.604107619479604369e-04, +-2.605191032832126206e-04, +-2.606270134599891286e-04, +-2.607344923338890852e-04, +-2.608415397612310368e-04, +-2.609481555990363099e-04, +-2.610543397050487974e-04, +-2.611600919377091547e-04, +-2.612654121561862959e-04, +-2.613703002203495297e-04, +-2.614747559907893218e-04, +-2.615787793288106814e-04, +-2.616823700964189580e-04, +-2.617855281563409293e-04, +-2.618882533720187297e-04, +-2.619905456076091453e-04, +-2.620924047279735310e-04, +-2.621938305987003620e-04, +-2.622948230860754721e-04, +-2.623953820571156646e-04, +-2.624955073795401427e-04, +-2.625951989217887791e-04, +-2.626944565530208689e-04, +-2.627932801430967521e-04, +-2.628916695625994979e-04, +-2.629896246828325739e-04, +-2.630871453758053713e-04, +-2.631842315142488725e-04, +-2.632808829716129940e-04, +-2.633770996220521671e-04, +-2.634728813404430643e-04, +-2.635682280023800457e-04, +-2.636631394841767312e-04, +-2.637576156628570014e-04, +-2.638516564161572206e-04, +-2.639452616225412525e-04, +-2.640384311611873418e-04, +-2.641311649119841565e-04, +-2.642234627555432565e-04, +-2.643153245731987141e-04, +-2.644067502469877066e-04, +-2.644977396596720379e-04, +-2.645882926947357530e-04, +-2.646784092363792837e-04, +-2.647680891695184725e-04, +-2.648573323797814827e-04, +-2.649461387535255496e-04, +-2.650345081778245656e-04, +-2.651224405404631725e-04, +-2.652099357299561133e-04, +-2.652969936355249227e-04, +-2.653836141471157617e-04, +-2.654697971553960571e-04, +-2.655555425517526578e-04, +-2.656408502282851672e-04, +-2.657257200778228570e-04, +-2.658101519939000011e-04, +-2.658941458707861794e-04, +-2.659777016034590644e-04, +-2.660608190876242074e-04, +-2.661434982197061487e-04, +-2.662257388968432672e-04, +-2.663075410168965623e-04, +-2.663889044784526904e-04, +-2.664698291808158866e-04, +-2.665503150240080741e-04, +-2.666303619087799764e-04, +-2.667099697365895423e-04, +-2.667891384096288338e-04, +-2.668678678308023964e-04, +-2.669461579037438474e-04, +-2.670240085328004801e-04, +-2.671014196230450818e-04, +-2.671783910802683982e-04, +-2.672549228109886749e-04, +-2.673310147224396767e-04, +-2.674066667225807707e-04, +-2.674818787200964384e-04, +-2.675566506243812052e-04, +-2.676309823455628426e-04, +-2.677048737944853459e-04, +-2.677783248827227038e-04, +-2.678513355225638280e-04, +-2.679239056270171066e-04, +-2.679960351098226558e-04, +-2.680677238854396890e-04, +-2.681389718690471127e-04, +-2.682097789765487315e-04, +-2.682801451245768248e-04, +-2.683500702304756681e-04, +-2.684195542123173073e-04, +-2.684885969888997702e-04, +-2.685571984797448979e-04, +-2.686253586050931408e-04, +-2.686930772859067026e-04, +-2.687603544438790814e-04, +-2.688271900014209208e-04, +-2.688935838816688463e-04, +-2.689595360084868743e-04, +-2.690250463064537277e-04, +-2.690901147008764420e-04, +-2.691547411177887933e-04, +-2.692189254839465282e-04, +-2.692826677268263876e-04, +-2.693459677746368945e-04, +-2.694088255562988388e-04, +-2.694712410014692377e-04, +-2.695332140405193810e-04, +-2.695947446045529367e-04, +-2.696558326253963023e-04, +-2.697164780355939422e-04, +-2.697766807684203686e-04, +-2.698364407578746657e-04, +-2.698957579386816285e-04, +-2.699546322462843904e-04, +-2.700130636168607398e-04, +-2.700710519873015451e-04, +-2.701285972952320591e-04, +-2.701856994789966857e-04, +-2.702423584776695513e-04, +-2.702985742310477280e-04, +-2.703543466796471686e-04, +-2.704096757647171797e-04, +-2.704645614282326165e-04, +-2.705190036128848831e-04, +-2.705730022620989549e-04, +-2.706265573200243796e-04, +-2.706796687315298020e-04, +-2.707323364422115834e-04, +-2.707845603983952652e-04, +-2.708363405471302565e-04, +-2.708876768361899424e-04, +-2.709385692140690817e-04, +-2.709890176299968719e-04, +-2.710390220339228546e-04, +-2.710885823765205472e-04, +-2.711376986091954661e-04, +-2.711863706840685929e-04, +-2.712345985539975162e-04, +-2.712823821725561567e-04, +-2.713297214940511392e-04, +-2.713766164735102455e-04, +-2.714230670666906002e-04, +-2.714690732300693464e-04, +-2.715146349208558433e-04, +-2.715597520969804447e-04, +-2.716044247171024674e-04, +-2.716486527406075354e-04, +-2.716924361276018334e-04, +-2.717357748389201844e-04, +-2.717786688361263202e-04, +-2.718211180815071899e-04, +-2.718631225380737184e-04, +-2.719046821695685046e-04, +-2.719457969404501002e-04, +-2.719864668159141519e-04, +-2.720266917618740479e-04, +-2.720664717449730076e-04, +-2.721058067325805570e-04, +-2.721446966927883551e-04, +-2.721831415944154522e-04, +-2.722211414070089945e-04, +-2.722586961008399416e-04, +-2.722958056469059938e-04, +-2.723324700169326221e-04, +-2.723686891833646114e-04, +-2.724044631193778786e-04, +-2.724397917988745929e-04, +-2.724746751964809001e-04, +-2.725091132875496320e-04, +-2.725431060481569461e-04, +-2.725766534551077465e-04, +-2.726097554859331900e-04, +-2.726424121188867288e-04, +-2.726746233329520254e-04, +-2.727063891078326525e-04, +-2.727377094239636941e-04, +-2.727685842625019331e-04, +-2.727990136053322487e-04, +-2.728289974350652305e-04, +-2.728585357350356072e-04, +-2.728876284893018661e-04, +-2.729162756826518377e-04, +-2.729444773005986293e-04, +-2.729722333293775356e-04, +-2.729995437559548199e-04, +-2.730264085680158973e-04, +-2.730528277539739533e-04, +-2.730788013029696731e-04, +-2.731043292048675013e-04, +-2.731294114502563460e-04, +-2.731540480304529405e-04, +-2.731782389374949583e-04, +-2.732019841641502829e-04, +-2.732252837039080094e-04, +-2.732481375509846779e-04, +-2.732705457003221602e-04, +-2.732925081475843523e-04, +-2.733140248891617824e-04, +-2.733350959221705814e-04, +-2.733557212444536746e-04, +-2.733759008545743317e-04, +-2.733956347518237554e-04, +-2.734149229362158777e-04, +-2.734337654084916425e-04, +-2.734521621701139094e-04, +-2.734701132232732006e-04, +-2.734876185708816831e-04, +-2.735046782165779394e-04, +-2.735212921647244737e-04, +-2.735374604204068448e-04, +-2.735531829894371353e-04, +-2.735684598783492353e-04, +-2.735832910944043178e-04, +-2.735976766455848756e-04, +-2.736116165405973232e-04, +-2.736251107888744362e-04, +-2.736381594005712859e-04, +-2.736507623865668654e-04, +-2.736629197584641436e-04, +-2.736746315285884393e-04, +-2.736858977099925166e-04, +-2.736967183164475321e-04, +-2.737070933624538224e-04, +-2.737170228632284361e-04, +-2.737265068347180899e-04, +-2.737355452935887057e-04, +-2.737441382572312117e-04, +-2.737522857437577474e-04, +-2.737599877720072470e-04, +-2.737672443615364408e-04, +-2.737740555326290169e-04, +-2.737804213062889529e-04, +-2.737863417042446902e-04, +-2.737918167489473997e-04, +-2.737968464635672948e-04, +-2.738014308720004082e-04, +-2.738055699988645804e-04, +-2.738092638694996218e-04, +-2.738125125099653075e-04, +-2.738153159470484242e-04, +-2.738176742082518741e-04, +-2.738195873218038910e-04, +-2.738210553166543532e-04, +-2.738220782224743506e-04, +-2.738226560696548832e-04, +-2.738227888893115776e-04, +-2.738224767132778023e-04, +-2.738217195741103052e-04, +-2.738205175050882384e-04, +-2.738188705402071947e-04, +-2.738167787141895077e-04, +-2.738142420624741684e-04, +-2.738112606212213794e-04, +-2.738078344273140179e-04, +-2.738039635183536248e-04, +-2.737996479326619765e-04, +-2.737948877092821688e-04, +-2.737896828879760698e-04, +-2.737840335092281137e-04, +-2.737779396142398804e-04, +-2.737714012449337818e-04, +-2.737644184439514891e-04, +-2.737569912546553973e-04, +-2.737491197211255889e-04, +-2.737408038881628696e-04, +-2.737320438012868715e-04, +-2.737228395067355644e-04, +-2.737131910514673167e-04, +-2.737030984831569373e-04, +-2.736925618502002297e-04, +-2.736815812017100885e-04, +-2.736701565875178550e-04, +-2.736582880581745099e-04, +-2.736459756649472033e-04, +-2.736332194598238088e-04, +-2.736200194955056594e-04, +-2.736063758254162208e-04, +-2.735922885036943153e-04, +-2.735777575851960192e-04, +-2.735627831254961806e-04, +-2.735473651808861969e-04, +-2.735315038083736350e-04, +-2.735151990656825571e-04, +-2.734984510112558513e-04, +-2.734812597042523045e-04, +-2.734636252045459515e-04, +-2.734455475727269429e-04, +-2.734270268701040384e-04, +-2.734080631586991860e-04, +-2.733886565012521837e-04, +-2.733688069612173191e-04, +-2.733485146027643444e-04, +-2.733277794907794530e-04, +-2.733066016908622972e-04, +-2.732849812693284282e-04, +-2.732629182932105427e-04, +-2.732404128302521403e-04, +-2.732174649489141371e-04, +-2.731940747183694449e-04, +-2.731702422085081211e-04, +-2.731459674899323268e-04, +-2.731212506339587127e-04, +-2.730960917126166836e-04, +-2.730704907986505133e-04, +-2.730444479655167421e-04, +-2.730179632873881886e-04, +-2.729910368391467394e-04, +-2.729636686963877947e-04, +-2.729358589354218944e-04, +-2.729076076332692430e-04, +-2.728789148676661063e-04, +-2.728497807170569508e-04, +-2.728202052606005699e-04, +-2.727901885781672644e-04, +-2.727597307503371081e-04, +-2.727288318584046101e-04, +-2.726974919843736184e-04, +-2.726657112109599768e-04, +-2.726334896215893019e-04, +-2.726008273003995312e-04, +-2.725677243322371284e-04, +-2.725341808026615826e-04, +-2.725001967979396623e-04, +-2.724657724050502943e-04, +-2.724309077116801722e-04, +-2.723956028062281482e-04, +-2.723598577777986188e-04, +-2.723236727162104700e-04, +-2.722870477119869394e-04, +-2.722499828563622847e-04, +-2.722124782412786931e-04, +-2.721745339593848183e-04, +-2.721361501040421766e-04, +-2.720973267693172870e-04, +-2.720580640499847065e-04, +-2.720183620415252417e-04, +-2.719782208401299597e-04, +-2.719376405426933581e-04, +-2.718966212468213882e-04, +-2.718551630508238108e-04, +-2.718132660537180456e-04, +-2.717709303552257017e-04, +-2.717281560557770767e-04, +-2.716849432565076336e-04, +-2.716412920592589219e-04, +-2.715972025665747830e-04, +-2.715526748817095361e-04, +-2.715077091086171360e-04, +-2.714623053519625031e-04, +-2.714164637171092177e-04, +-2.713701843101282477e-04, +-2.713234672377943168e-04, +-2.712763126075841153e-04, +-2.712287205276798781e-04, +-2.711806911069716071e-04, +-2.711322244550430855e-04, +-2.710833206821881944e-04, +-2.710339798994009929e-04, +-2.709842022183769645e-04, +-2.709339877515196311e-04, +-2.708833366119262954e-04, +-2.708322489134038164e-04, +-2.707807247704538639e-04, +-2.707287642982848450e-04, +-2.706763676128020376e-04, +-2.706235348306178365e-04, +-2.705702660690364656e-04, +-2.705165614460707836e-04, +-2.704624210804282432e-04, +-2.704078450915172881e-04, +-2.703528335994501717e-04, +-2.702973867250353678e-04, +-2.702415045897787094e-04, +-2.701851873158863152e-04, +-2.701284350262655120e-04, +-2.700712478445176784e-04, +-2.700136258949484367e-04, +-2.699555693025550759e-04, +-2.698970781930369058e-04, +-2.698381526927883726e-04, +-2.697787929288983540e-04, +-2.697189990291606757e-04, +-2.696587711220601257e-04, +-2.695981093367783086e-04, +-2.695370138031929954e-04, +-2.694754846518772557e-04, +-2.694135220141046080e-04, +-2.693511260218372019e-04, +-2.692882968077373648e-04, +-2.692250345051589279e-04, +-2.691613392481501544e-04, +-2.690972111714555817e-04, +-2.690326504105168353e-04, +-2.689676571014625451e-04, +-2.689022313811166944e-04, +-2.688363733870000830e-04, +-2.687700832573204613e-04, +-2.687033611309858658e-04, +-2.686362071475908498e-04, +-2.685686214474248320e-04, +-2.685006041714671087e-04, +-2.684321554613878840e-04, +-2.683632754595506554e-04, +-2.682939643090130263e-04, +-2.682242221535174908e-04, +-2.681540491374964207e-04, +-2.680834454060794926e-04, +-2.680124111050775329e-04, +-2.679409463809994860e-04, +-2.678690513810361509e-04, +-2.677967262530734629e-04, +-2.677239711456788867e-04, +-2.676507862081163244e-04, +-2.675771715903287680e-04, +-2.675031274429591705e-04, +-2.674286539173256717e-04, +-2.673537511654419272e-04, +-2.672784193400049653e-04, +-2.672026585943945362e-04, +-2.671264690826857975e-04, +-2.670498509596367373e-04, +-2.669728043806870901e-04, +-2.668953295019637034e-04, +-2.668174264802780984e-04, +-2.667390954731344390e-04, +-2.666603366387096364e-04, +-2.665811501358715638e-04, +-2.665015361241702204e-04, +-2.664214947638386525e-04, +-2.663410262157942551e-04, +-2.662601306416380125e-04, +-2.661788082036543358e-04, +-2.660970590648048290e-04, +-2.660148833887397810e-04, +-2.659322813397829873e-04, +-2.658492530829520244e-04, +-2.657657987839333129e-04, +-2.656819186091016879e-04, +-2.655976127255079843e-04, +-2.655128813008833196e-04, +-2.654277245036405037e-04, +-2.653421425028763695e-04, +-2.652561354683583288e-04, +-2.651697035705349436e-04, +-2.650828469805382027e-04, +-2.649955658701701319e-04, +-2.649078604119210084e-04, +-2.648197307789476227e-04, +-2.647311771450934991e-04, +-2.646421996848717108e-04, +-2.645527985734745296e-04, +-2.644629739867692514e-04, +-2.643727261013066533e-04, +-2.642820550943013693e-04, +-2.641909611436526529e-04, +-2.640994444279280056e-04, +-2.640075051263684894e-04, +-2.639151434188992439e-04, +-2.638223594861119760e-04, +-2.637291535092717363e-04, +-2.636355256703156727e-04, +-2.635414761518550895e-04, +-2.634470051371806524e-04, +-2.633521128102452578e-04, +-2.632567993556753083e-04, +-2.631610649587745620e-04, +-2.630649098055120975e-04, +-2.629683340825242658e-04, +-2.628713379771301399e-04, +-2.627739216773108065e-04, +-2.626760853717163054e-04, +-2.625778292496647615e-04, +-2.624791535011469388e-04, +-2.623800583168259151e-04, +-2.622805438880255352e-04, +-2.621806104067372955e-04, +-2.620802580656267410e-04, +-2.619794870580195874e-04, +-2.618782975779116416e-04, +-2.617766898199704278e-04, +-2.616746639795213642e-04, +-2.615722202525552439e-04, +-2.614693588357363120e-04, +-2.613660799263816119e-04, +-2.612623837224887407e-04, +-2.611582704227044071e-04, +-2.610537402263489893e-04, +-2.609487933334018431e-04, +-2.608434299445039047e-04, +-2.607376502609604551e-04, +-2.606314544847470834e-04, +-2.605248428184895747e-04, +-2.604178154654781131e-04, +-2.603103726296698297e-04, +-2.602025145156717264e-04, +-2.600942413287684316e-04, +-2.599855532748875596e-04, +-2.598764505606270870e-04, +-2.597669333932357827e-04, +-2.596570019806315310e-04, +-2.595466565313779670e-04, +-2.594358972547134248e-04, +-2.593247243605184115e-04, +-2.592131380593415738e-04, +-2.591011385623818628e-04, +-2.589887260814920577e-04, +-2.588759008291937821e-04, +-2.587626630186564162e-04, +-2.586490128637027887e-04, +-2.585349505788110745e-04, +-2.584204763791163122e-04, +-2.583055904804144160e-04, +-2.581902930991439066e-04, +-2.580745844523984881e-04, +-2.579584647579322523e-04, +-2.578419342341452042e-04, +-2.577249931000859186e-04, +-2.576076415754685080e-04, +-2.574898798806505044e-04, +-2.573717082366350824e-04, +-2.572531268650864547e-04, +-2.571341359883059651e-04, +-2.570147358292632599e-04, +-2.568949266115587199e-04, +-2.567747085594555530e-04, +-2.566540818978559958e-04, +-2.565330468523135650e-04, +-2.564116036490277453e-04, +-2.562897525148562943e-04, +-2.561674936772910657e-04, +-2.560448273644704768e-04, +-2.559217538051899716e-04, +-2.557982732288741025e-04, +-2.556743858656136638e-04, +-2.555500919461254684e-04, +-2.554253917017831389e-04, +-2.553002853645964534e-04, +-2.551747731672190434e-04, +-2.550488553429488821e-04, +-2.549225321257383124e-04, +-2.547958037501649371e-04, +-2.546686704514518926e-04, +-2.545411324654727283e-04, +-2.544131900287267410e-04, +-2.542848433783749702e-04, +-2.541560927521966133e-04, +-2.540269383886280025e-04, +-2.538973805267296996e-04, +-2.537674194062099144e-04, +-2.536370552674210356e-04, +-2.535062883513413616e-04, +-2.533751188995883282e-04, +-2.532435471544256097e-04, +-2.531115733587437663e-04, +-2.529791977560688090e-04, +-2.528464205905749389e-04, +-2.527132421070633515e-04, +-2.525796625509672778e-04, +-2.524456821683557250e-04, +-2.523113012059321754e-04, +-2.521765199110443442e-04, +-2.520413385316572913e-04, +-2.519057573163719613e-04, +-2.517697765144306585e-04, +-2.516333963756946040e-04, +-2.514966171506673545e-04, +-2.513594390904765876e-04, +-2.512218624468862452e-04, +-2.510838874722810831e-04, +-2.509455144196860244e-04, +-2.508067435427408431e-04, +-2.506675750957348590e-04, +-2.505280093335641111e-04, +-2.503880465117665406e-04, +-2.502476868865000353e-04, +-2.501069307145467667e-04, +-2.499657782533217551e-04, +-2.498242297608706470e-04, +-2.496822854958523135e-04, +-2.495399457175521865e-04, +-2.493972106858889800e-04, +-2.492540806613912719e-04, +-2.491105559052301925e-04, +-2.489666366791816942e-04, +-2.488223232456567469e-04, +-2.486776158676803580e-04, +-2.485325148088959098e-04, +-2.483870203335828862e-04, +-2.482411327066322065e-04, +-2.480948521935493704e-04, +-2.479481790604704493e-04, +-2.478011135741427879e-04, +-2.476536560019293410e-04, +-2.475058066118256952e-04, +-2.473575656724370840e-04, +-2.472089334529812611e-04, +-2.470599102232945172e-04, +-2.469104962538309759e-04, +-2.467606918156719717e-04, +-2.466104971804959634e-04, +-2.464599126206009228e-04, +-2.463089384089090514e-04, +-2.461575748189454211e-04, +-2.460058221248464312e-04, +-2.458536806013762884e-04, +-2.457011505239029372e-04, +-2.455482321684033728e-04, +-2.453949258114638578e-04, +-2.452412317302871320e-04, +-2.450871502026952318e-04, +-2.449326815071028183e-04, +-2.447778259225393493e-04, +-2.446225837286505433e-04, +-2.444669552056801106e-04, +-2.443109406344835225e-04, +-2.441545402965352211e-04, +-2.439977544738998613e-04, +-2.438405834492521514e-04, +-2.436830275058808105e-04, +-2.435250869276656648e-04, +-2.433667619991129922e-04, +-2.432080530053121821e-04, +-2.430489602319709170e-04, +-2.428894839653915642e-04, +-2.427296244924781422e-04, +-2.425693821007421749e-04, +-2.424087570783062967e-04, +-2.422477497138759278e-04, +-2.420863602967645906e-04, +-2.419245891168922825e-04, +-2.417624364647644436e-04, +-2.415999026315077884e-04, +-2.414369879088255292e-04, +-2.412736925890355665e-04, +-2.411100169650382886e-04, +-2.409459613303442725e-04, +-2.407815259790568830e-04, +-2.406167112058764737e-04, +-2.404515173060912795e-04, +-2.402859445755980712e-04, +-2.401199933108771098e-04, +-2.399536638089987063e-04, +-2.397869563676464780e-04, +-2.396198712850847678e-04, +-2.394524088601670197e-04, +-2.392845693923391131e-04, +-2.391163531816405011e-04, +-2.389477605287151061e-04, +-2.387787917347761115e-04, +-2.386094471016322524e-04, +-2.384397269316916655e-04, +-2.382696315279411801e-04, +-2.380991611939500320e-04, +-2.379283162338954232e-04, +-2.377570969525308092e-04, +-2.375855036551872545e-04, +-2.374135366477985040e-04, +-2.372411962368642293e-04, +-2.370684827294950500e-04, +-2.368953964333607627e-04, +-2.367219376567329507e-04, +-2.365481067084559811e-04, +-2.363739038979568985e-04, +-2.361993295352470511e-04, +-2.360243839309342337e-04, +-2.358490673961865299e-04, +-2.356733802427559202e-04, +-2.354973227829863054e-04, +-2.353208953297837721e-04, +-2.351440981966570337e-04, +-2.349669316976697796e-04, +-2.347893961474794352e-04, +-2.346114918613122257e-04, +-2.344332191549650189e-04, +-2.342545783448327014e-04, +-2.340755697478712075e-04, +-2.338961936816096347e-04, +-2.337164504641515452e-04, +-2.335363404141845066e-04, +-2.333558638509538273e-04, +-2.331750210942966546e-04, +-2.329938124646128907e-04, +-2.328122382828709666e-04, +-2.326302988706089800e-04, +-2.324479945499401167e-04, +-2.322653256435601042e-04, +-2.320822924747127072e-04, +-2.318988953672173475e-04, +-2.317151346454713538e-04, +-2.315310106344281691e-04, +-2.313465236596054010e-04, +-2.311616740471066143e-04, +-2.309764621235899161e-04, +-2.307908882162740542e-04, +-2.306049526529444893e-04, +-2.304186557619529333e-04, +-2.302319978722276771e-04, +-2.300449793132412269e-04, +-2.298576004150309311e-04, +-2.296698615082096596e-04, +-2.294817629239350126e-04, +-2.292933049939378082e-04, +-2.291044880505049787e-04, +-2.289153124264879462e-04, +-2.287257784552831344e-04, +-2.285358864708639790e-04, +-2.283456368077411655e-04, +-2.281550298010097909e-04, +-2.279640657862948294e-04, +-2.277727450997978607e-04, +-2.275810680782629181e-04, +-2.273890350589848367e-04, +-2.271966463798358435e-04, +-2.270039023792255501e-04, +-2.268108033961172161e-04, +-2.266173497700230870e-04, +-2.264235418410224729e-04, +-2.262293799497243438e-04, +-2.260348644373170405e-04, +-2.258399956455124104e-04, +-2.256447739165902335e-04, +-2.254491995933641235e-04, +-2.252532730192086878e-04, +-2.250569945380410952e-04, +-2.248603644943320814e-04, +-2.246633832330856739e-04, +-2.244660510998685470e-04, +-2.242683684407796910e-04, +-2.240703356024605498e-04, +-2.238719529321159458e-04, +-2.236732207774833428e-04, +-2.234741394868384296e-04, +-2.232747094089996740e-04, +-2.230749308933311953e-04, +-2.228748042897523601e-04, +-2.226743299487006207e-04, +-2.224735082211581059e-04, +-2.222723394586592638e-04, +-2.220708240132650312e-04, +-2.218689622375700436e-04, +-2.216667544847280593e-04, +-2.214642011084169400e-04, +-2.212613024628461861e-04, +-2.210580589027618965e-04, +-2.208544707834492898e-04, +-2.206505384607405917e-04, +-2.204462622909774132e-04, +-2.202416426310555009e-04, +-2.200366798383896090e-04, +-2.198313742709278381e-04, +-2.196257262871533693e-04, +-2.194197362460931656e-04, +-2.192134045072837377e-04, +-2.190067314307945091e-04, +-2.187997173772373834e-04, +-2.185923627077295298e-04, +-2.183846677839493277e-04, +-2.181766329680681431e-04, +-2.179682586228092551e-04, +-2.177595451114059787e-04, +-2.175504927976125609e-04, +-2.173411020457320176e-04, +-2.171313732205756657e-04, +-2.169213066874757544e-04, +-2.167109028122853021e-04, +-2.165001619613944410e-04, +-2.162890845016908709e-04, +-2.160776708006159662e-04, +-2.158659212260989927e-04, +-2.156538361466108834e-04, +-2.154414159311240961e-04, +-2.152286609491387156e-04, +-2.150155715706845679e-04, +-2.148021481662873390e-04, +-2.145883911069930775e-04, +-2.143743007643765974e-04, +-2.141598775105151052e-04, +-2.139451217179939727e-04, +-2.137300337599381790e-04, +-2.135146140099687532e-04, +-2.132988628422167055e-04, +-2.130827806313244377e-04, +-2.128663677524486695e-04, +-2.126496245812743713e-04, +-2.124325514939683871e-04, +-2.122151488672144814e-04, +-2.119974170782191938e-04, +-2.117793565046819423e-04, +-2.115609675248035612e-04, +-2.113422505173170385e-04, +-2.111232058614473460e-04, +-2.109038339369141766e-04, +-2.106841351239601616e-04, +-2.104641098033107542e-04, +-2.102437583562262447e-04, +-2.100230811644358407e-04, +-2.098020786101968108e-04, +-2.095807510762505465e-04, +-2.093590989458376064e-04, +-2.091371226027200500e-04, +-2.089148224311465271e-04, +-2.086921988158581590e-04, +-2.084692521420963179e-04, +-2.082459827956121407e-04, +-2.080223911626298289e-04, +-2.077984776299052227e-04, +-2.075742425846537282e-04, +-2.073496864146104097e-04, +-2.071248095079904162e-04, +-2.068996122534965169e-04, +-2.066740950403495123e-04, +-2.064482582582473878e-04, +-2.062221022973738513e-04, +-2.059956275484055700e-04, +-2.057688344025217122e-04, +-2.055417232513668125e-04, +-2.053142944871050909e-04, +-2.050865485023719887e-04, +-2.048584856902872060e-04, +-2.046301064444552983e-04, +-2.044014111589745396e-04, +-2.041724002284410423e-04, +-2.039430740479121387e-04, +-2.037134330129333499e-04, +-2.034834775195488218e-04, +-2.032532079642705876e-04, +-2.030226247440867268e-04, +-2.027917282564935383e-04, +-2.025605188994513328e-04, +-2.023289970713956537e-04, +-2.020971631712419124e-04, +-2.018650175983884509e-04, +-2.016325607527263541e-04, +-2.013997930345999576e-04, +-2.011667148448339256e-04, +-2.009333265847451774e-04, +-2.006996286560989767e-04, +-2.004656214611719243e-04, +-2.002313054026778525e-04, +-1.999966808838295705e-04, +-1.997617483082917561e-04, +-1.995265080802210436e-04, +-1.992909606042204333e-04, +-1.990551062853984350e-04, +-1.988189455292969682e-04, +-1.985824787419524840e-04, +-1.983457063298555789e-04, +-1.981086286999577165e-04, +-1.978712462597034013e-04, +-1.976335594169887082e-04, +-1.973955685801694136e-04, +-1.971572741580647091e-04, +-1.969186765599760395e-04, +-1.966797761956401295e-04, +-1.964405734752937380e-04, +-1.962010688095992275e-04, +-1.959612626097050080e-04, +-1.957211552872014108e-04, +-1.954807472541524006e-04, +-1.952400389230761143e-04, +-1.949990307069552427e-04, +-1.947577230192145867e-04, +-1.945161162737548040e-04, +-1.942742108849200447e-04, +-1.940320072675032106e-04, +-1.937895058367791040e-04, +-1.935467070084598404e-04, +-1.933036111987070180e-04, +-1.930602188241344562e-04, +-1.928165303018136159e-04, +-1.925725460492821106e-04, +-1.923282664845036725e-04, +-1.920836920258958539e-04, +-1.918388230923417633e-04, +-1.915936601031567805e-04, +-1.913482034780996158e-04, +-1.911024536374015561e-04, +-1.908564110017256445e-04, +-1.906100759921733486e-04, +-1.903634490302933693e-04, +-1.901165305380821829e-04, +-1.898693209379968621e-04, +-1.896218206529044163e-04, +-1.893740301061409620e-04, +-1.891259497214685175e-04, +-1.888775799230826466e-04, +-1.886289211356479930e-04, +-1.883799737842508195e-04, +-1.881307382944107716e-04, +-1.878812150920847808e-04, +-1.876314046036839508e-04, +-1.873813072560275331e-04, +-1.871309234764089553e-04, +-1.868802536925184626e-04, +-1.866292983325077098e-04, +-1.863780578249449836e-04, +-1.861265325988257732e-04, +-1.858747230836054864e-04, +-1.856226297091536422e-04, +-1.853702529057641162e-04, +-1.851175931041625403e-04, +-1.848646507355179854e-04, +-1.846114262314016256e-04, +-1.843579200238495139e-04, +-1.841041325452873656e-04, +-1.838500642285932250e-04, +-1.835957155070493541e-04, +-1.833410868143724550e-04, +-1.830861785847215839e-04, +-1.828309912526498505e-04, +-1.825755252531381092e-04, +-1.823197810216068587e-04, +-1.820637589938788904e-04, +-1.818074596061934113e-04, +-1.815508832952359396e-04, +-1.812940304980939347e-04, +-1.810369016522687773e-04, +-1.807794971956760673e-04, +-1.805218175666561953e-04, +-1.802638632039804678e-04, +-1.800056345468087425e-04, +-1.797471320347186741e-04, +-1.794883561077192133e-04, +-1.792293072062053135e-04, +-1.789699857710204899e-04, +-1.787103922433830663e-04, +-1.784505270649477580e-04, +-1.781903906777573159e-04, +-1.779299835242861665e-04, +-1.776693060473888571e-04, +-1.774083586903668435e-04, +-1.771471418968883940e-04, +-1.768856561110575991e-04, +-1.766239017773640104e-04, +-1.763618793406989034e-04, +-1.760995892463835752e-04, +-1.758370319401270337e-04, +-1.755742078680327738e-04, +-1.753111174766080473e-04, +-1.750477612127767648e-04, +-1.747841395238335527e-04, +-1.745202528575137929e-04, +-1.742561016619105724e-04, +-1.739916863855429886e-04, +-1.737270074773104498e-04, +-1.734620653865020536e-04, +-1.731968605628323116e-04, +-1.729313934563921160e-04, +-1.726656645176551910e-04, +-1.723996741975113503e-04, +-1.721334229472252706e-04, +-1.718669112184479839e-04, +-1.716001394632496750e-04, +-1.713331081340738193e-04, +-1.710658176837471308e-04, +-1.707982685654847927e-04, +-1.705304612328965028e-04, +-1.702623961399952004e-04, +-1.699940737411510968e-04, +-1.697254944911265860e-04, +-1.694566588450859760e-04, +-1.691875672585484343e-04, +-1.689182201874565360e-04, +-1.686486180880956542e-04, +-1.683787614171600958e-04, +-1.681086506317096523e-04, +-1.678382861891829626e-04, +-1.675676685474039097e-04, +-1.672967981645937636e-04, +-1.670256754993208206e-04, +-1.667543010105363983e-04, +-1.664826751575870605e-04, +-1.662107984001632525e-04, +-1.659386711983679586e-04, +-1.656662940126581011e-04, +-1.653936673038596374e-04, +-1.651207915331700811e-04, +-1.648476671621764453e-04, +-1.645742946528067790e-04, +-1.643006744674006673e-04, +-1.640268070686262355e-04, +-1.637526929195483999e-04, +-1.634783324835826265e-04, +-1.632037262245063691e-04, +-1.629288746064915959e-04, +-1.626537780940582765e-04, +-1.623784371520851433e-04, +-1.621028522458143261e-04, +-1.618270238408692685e-04, +-1.615509524032050445e-04, +-1.612746383991818945e-04, +-1.609980822954770253e-04, +-1.607212845591580921e-04, +-1.604442456576273619e-04, +-1.601669660586644585e-04, +-1.598894462304000972e-04, +-1.596116866413268458e-04, +-1.593336877602767089e-04, +-1.590554500564601858e-04, +-1.587769739994237162e-04, +-1.584982600590612262e-04, +-1.582193087056507207e-04, +-1.579401204098036511e-04, +-1.576606956424759197e-04, +-1.573810348749738429e-04, +-1.571011385789607649e-04, +-1.568210072264660025e-04, +-1.565406412898367333e-04, +-1.562600412417732866e-04, +-1.559792075553411512e-04, +-1.556981407039209392e-04, +-1.554168411612799703e-04, +-1.551353094014886261e-04, +-1.548535458989893049e-04, +-1.545715511285503704e-04, +-1.542893255652796230e-04, +-1.540068696846338676e-04, +-1.537241839624273166e-04, +-1.534412688747775148e-04, +-1.531581248981697414e-04, +-1.528747525094106331e-04, +-1.525911521856352314e-04, +-1.523073244043475591e-04, +-1.520232696433670332e-04, +-1.517389883808423700e-04, +-1.514544810952542957e-04, +-1.511697482654371491e-04, +-1.508847903705252133e-04, +-1.505996078900283394e-04, +-1.503142013037413063e-04, +-1.500285710918219386e-04, +-1.497427177347376002e-04, +-1.494566417132763621e-04, +-1.491703435085862505e-04, +-1.488838236021222563e-04, +-1.485970824756589661e-04, +-1.483101206112958205e-04, +-1.480229384914751121e-04, +-1.477355365989301873e-04, +-1.474479154167621813e-04, +-1.471600754283490802e-04, +-1.468720171174206664e-04, +-1.465837409680026827e-04, +-1.462952474644513094e-04, +-1.460065370914614860e-04, +-1.457176103340128090e-04, +-1.454284676774084822e-04, +-1.451391096072869721e-04, +-1.448495366095692066e-04, +-1.445597491705361774e-04, +-1.442697477767368637e-04, +-1.439795329150648584e-04, +-1.436891050727070313e-04, +-1.433984647371604150e-04, +-1.431076123962400388e-04, +-1.428165485380877375e-04, +-1.425252736511236067e-04, +-1.422337882240809405e-04, +-1.419420927460196221e-04, +-1.416501877062734311e-04, +-1.413580735945261819e-04, +-1.410657509007222496e-04, +-1.407732201151405400e-04, +-1.404804817283374335e-04, +-1.401875362311984469e-04, +-1.398943841148761360e-04, +-1.396010258708698932e-04, +-1.393074619909328410e-04, +-1.390136929671497866e-04, +-1.387197192918836349e-04, +-1.384255414577883721e-04, +-1.381311599578456304e-04, +-1.378365752853147330e-04, +-1.375417879337416393e-04, +-1.372467983969675911e-04, +-1.369516071691446167e-04, +-1.366562147446858202e-04, +-1.363606216183404357e-04, +-1.360648282851031335e-04, +-1.357688352402907272e-04, +-1.354726429794888859e-04, +-1.351762519985659028e-04, +-1.348796627937085826e-04, +-1.345828758613719887e-04, +-1.342858916982819643e-04, +-1.339887108014765210e-04, +-1.336913336682449347e-04, +-1.333937607962043981e-04, +-1.330959926832097067e-04, +-1.327980298274288821e-04, +-1.324998727272909676e-04, +-1.322015218815054353e-04, +-1.319029777890668755e-04, +-1.316042409492671937e-04, +-1.313053118616439485e-04, +-1.310061910260159679e-04, +-1.307068789424993679e-04, +-1.304073761114504153e-04, +-1.301076830335463549e-04, +-1.298078002096908674e-04, +-1.295077281410935950e-04, +-1.292074673292153628e-04, +-1.289070182757874497e-04, +-1.286063814828178505e-04, +-1.283055574526029575e-04, +-1.280045466876746790e-04, +-1.277033496908381964e-04, +-1.274019669651853270e-04, +-1.271003990140403411e-04, +-1.267986463410317904e-04, +-1.264967094500327410e-04, +-1.261945888451720770e-04, +-1.258922850308409505e-04, +-1.255897985117125962e-04, +-1.252871297926868742e-04, +-1.249842793789691995e-04, +-1.246812477759790634e-04, +-1.243780354894263873e-04, +-1.240746430252577743e-04, +-1.237710708896699256e-04, +-1.234673195891486451e-04, +-1.231633896304138700e-04, +-1.228592815204335761e-04, +-1.225549957664272196e-04, +-1.222505328758878281e-04, +-1.219458933565258118e-04, +-1.216410777163485168e-04, +-1.213360864635666989e-04, +-1.210309201066726679e-04, +-1.207255791543800056e-04, +-1.204200641156695766e-04, +-1.201143754997623423e-04, +-1.198085138161302161e-04, +-1.195024795744705035e-04, +-1.191962732847503002e-04, +-1.188898954571459394e-04, +-1.185833466021239002e-04, +-1.182766272303430535e-04, +-1.179697378527376982e-04, +-1.176626789804604374e-04, +-1.173554511249031980e-04, +-1.170480547977013241e-04, +-1.167404905107483488e-04, +-1.164327587761395619e-04, +-1.161248601062119760e-04, +-1.158167950135582990e-04, +-1.155085640109696345e-04, +-1.152001676115180028e-04, +-1.148916063284591559e-04, +-1.145828806753139195e-04, +-1.142739911658064344e-04, +-1.139649383139164964e-04, +-1.136557226338188949e-04, +-1.133463446399637659e-04, +-1.130368048469791362e-04, +-1.127271037697544876e-04, +-1.124172419233824139e-04, +-1.121072198231737587e-04, +-1.117970379846961858e-04, +-1.114866969237195767e-04, +-1.111761971562283760e-04, +-1.108655391984279213e-04, +-1.105547235667635788e-04, +-1.102437507778658018e-04, +-1.099326213486309710e-04, +-1.096213357961247655e-04, +-1.093098946376633692e-04, +-1.089982983907584340e-04, +-1.086865475731295215e-04, +-1.083746427027431063e-04, +-1.080625842977596813e-04, +-1.077503728765441386e-04, +-1.074380089576723422e-04, +-1.071254930599385013e-04, +-1.068128257023657812e-04, +-1.065000074041458323e-04, +-1.061870386847119194e-04, +-1.058739200636839257e-04, +-1.055606520608874210e-04, +-1.052472351963604246e-04, +-1.049336699903659278e-04, +-1.046199569633365179e-04, +-1.043060966359133290e-04, +-1.039920895289608675e-04, +-1.036779361635097128e-04, +-1.033636370608391193e-04, +-1.030491927423784224e-04, +-1.027346037297911178e-04, +-1.024198705449165048e-04, +-1.021049937097904755e-04, +-1.017899737466524269e-04, +-1.014748111779568751e-04, +-1.011595065263178359e-04, +-1.008440603145491302e-04, +-1.005284730656783428e-04, +-1.002127453028892377e-04, +-9.989687754960499793e-05, +-9.958087032938998332e-05, +-9.926472416603215670e-05, +-9.894843958347933300e-05, +-9.863201710589492076e-05, +-9.831545725759292418e-05, +-9.799876056312209081e-05, +-9.768192754716691030e-05, +-9.736495873463004087e-05, +-9.704785465057650003e-05, +-9.673061582024560434e-05, +-9.641324276909375474e-05, +-9.609573602273484608e-05, +-9.577809610695682833e-05, +-9.546032354772509469e-05, +-9.514241887118969154e-05, +-9.482438260369923690e-05, +-9.450621527174193979e-05, +-9.418791740198883286e-05, +-9.386948952130594250e-05, +-9.355093215670411740e-05, +-9.323224583538826491e-05, +-9.291343108472680358e-05, +-9.259448843226728931e-05, +-9.227541840570456684e-05, +-9.195622153293080570e-05, +-9.163689834197157296e-05, +-9.131744936106859850e-05, +-9.099787511858008259e-05, +-9.067817614306561609e-05, +-9.035835296322774189e-05, +-9.003840610793305624e-05, +-8.971833610621704697e-05, +-8.939814348729963826e-05, +-8.907782878052542398e-05, +-8.875739251540677830e-05, +-8.843683522163639174e-05, +-8.811615742903006600e-05, +-8.779535966761080736e-05, +-8.747444246750844311e-05, +-8.715340635904416224e-05, +-8.683225187267321532e-05, +-8.651097953900421334e-05, +-8.618958988880650023e-05, +-8.586808345302298718e-05, +-8.554646076271241878e-05, +-8.522472234909139949e-05, +-8.490286874354726850e-05, +-8.458090047758073189e-05, +-8.425881808288308492e-05, +-8.393662209127151228e-05, +-8.361431303470189523e-05, +-8.329189144527608928e-05, +-8.296935785524672184e-05, +-8.264671279703176112e-05, +-8.232395680315647069e-05, +-8.200109040629451431e-05, +-8.167811413928232158e-05, +-8.135502853507443238e-05, +-8.103183412675794384e-05, +-8.070853144759395400e-05, +-8.038512103095901489e-05, +-8.006160341035993186e-05, +-7.973797911943830371e-05, +-7.941424869197816628e-05, +-7.909041266191888095e-05, +-7.876647156329695358e-05, +-7.844242593028797966e-05, +-7.811827629722115898e-05, +-7.779402319852635954e-05, +-7.746966716878519695e-05, +-7.714520874270035158e-05, +-7.682064845511002904e-05, +-7.649598684095674876e-05, +-7.617122443533878937e-05, +-7.584636177344309012e-05, +-7.552139939063129588e-05, +-7.519633782233805901e-05, +-7.487117760415669127e-05, +-7.454591927178008844e-05, +-7.422056336102233294e-05, +-7.389511040782380323e-05, +-7.356956094826639324e-05, +-7.324391551851378642e-05, +-7.291817465485348209e-05, +-7.259233889371181166e-05, +-7.226640877159390094e-05, +-7.194038482516989131e-05, +-7.161426759117345839e-05, +-7.128805760648709812e-05, +-7.096175540807590906e-05, +-7.063536153304578701e-05, +-7.030887651857560810e-05, +-6.998230090200480526e-05, +-6.965563522073053165e-05, +-6.932888001229342101e-05, +-6.900203581431897301e-05, +-6.867510316453126842e-05, +-6.834808260079613387e-05, +-6.802097466106029103e-05, +-6.769377988336752478e-05, +-6.736649880586307421e-05, +-6.703913196680131692e-05, +-6.671167990455827796e-05, +-6.638414315757354379e-05, +-6.605652226439307460e-05, +-6.572881776368160497e-05, +-6.540103019417965518e-05, +-6.507316009471627064e-05, +-6.474520800425172587e-05, +-6.441717446181924865e-05, +-6.408906000653786779e-05, +-6.376086517761902681e-05, +-6.343259051437359056e-05, +-6.310423655622428643e-05, +-6.277580384264044898e-05, +-6.244729291321684140e-05, +-6.211870430761415990e-05, +-6.179003856558040611e-05, +-6.146129622695725670e-05, +-6.113247783169391410e-05, +-6.080358391978698748e-05, +-6.047461503132480273e-05, +-6.014557170649987758e-05, +-5.981645448555025270e-05, +-5.948726390884605166e-05, +-5.915800051678651568e-05, +-5.882866484988667874e-05, +-5.849925744871786526e-05, +-5.816977885392876423e-05, +-5.784022960625230720e-05, +-5.751061024651867184e-05, +-5.718092131559657920e-05, +-5.685116335443588935e-05, +-5.652133690408138423e-05, +-5.619144250561362446e-05, +-5.586148070023554997e-05, +-5.553145202916890484e-05, +-5.520135703374234903e-05, +-5.487119625532311298e-05, +-5.454097023536103657e-05, +-5.421067951539501335e-05, +-5.388032463699293247e-05, +-5.354990614179545340e-05, +-5.321942457152899599e-05, +-5.288888046796164734e-05, +-5.255827437291638228e-05, +-5.222760682831422140e-05, +-5.189687837611547407e-05, +-5.156608955833204413e-05, +-5.123524091703525647e-05, +-5.090433299436161009e-05, +-5.057336633252665586e-05, +-5.024234147376562296e-05, +-4.991125896037614315e-05, +-4.958011933473263681e-05, +-4.924892313923369527e-05, +-4.891767091635230644e-05, +-4.858636320860608670e-05, +-4.825500055857098931e-05, +-4.792358350885068919e-05, +-4.759211260212778443e-05, +-4.726058838109597939e-05, +-4.692901138854793224e-05, +-4.659738216727144254e-05, +-4.626570126013639073e-05, +-4.593396921003550006e-05, +-4.560218655990518034e-05, +-4.527035385273233808e-05, +-4.493847163156782063e-05, +-4.460654043946660208e-05, +-4.427456081953187641e-05, +-4.394253331492789175e-05, +-4.361045846882040053e-05, +-4.327833682446490681e-05, +-4.294616892510155288e-05, +-4.261395531404329193e-05, +-4.228169653461612829e-05, +-4.194939313017242592e-05, +-4.161704564413504226e-05, +-4.128465461993638928e-05, +-4.095222060102601613e-05, +-4.061974413091341477e-05, +-4.028722575311538198e-05, +-3.995466601117040538e-05, +-3.962206544868127929e-05, +-3.928942460925607000e-05, +-3.895674403652138365e-05, +-3.862402427412900017e-05, +-3.829126586576240567e-05, +-3.795846935515062272e-05, +-3.762563528600851152e-05, +-3.729276420207967038e-05, +-3.695985664715088277e-05, +-3.662691316500658076e-05, +-3.629393429944266866e-05, +-3.596092059431031798e-05, +-3.562787259345569934e-05, +-3.529479084073388739e-05, +-3.496167588001534564e-05, +-3.462852825519276378e-05, +-3.429534851019437977e-05, +-3.396213718892455877e-05, +-3.362889483530671404e-05, +-3.329562199329780812e-05, +-3.296231920683482034e-05, +-3.262898701987936175e-05, +-3.229562597642330620e-05, +-3.196223662042914566e-05, +-3.162881949587317533e-05, +-3.129537514675989325e-05, +-3.096190411706133914e-05, +-3.062840695080567372e-05, +-3.029488419197183497e-05, +-2.996133638457837488e-05, +-2.962776407262278819e-05, +-2.929416780010280345e-05, +-2.896054811102337947e-05, +-2.862690554941012234e-05, +-2.829324065924938663e-05, +-2.795955398453190099e-05, +-2.762584606926649688e-05, +-2.729211745742007083e-05, +-2.695836869300575383e-05, +-2.662460031997796391e-05, +-2.629081288232069753e-05, +-2.595700692397980415e-05, +-2.562318298891412332e-05, +-2.528934162106489327e-05, +-2.495548336436958459e-05, +-2.462160876273161042e-05, +-2.428771836007102296e-05, +-2.395381270027199753e-05, +-2.361989232719651039e-05, +-2.328595778472830992e-05, +-2.295200961671249273e-05, +-2.261804836696936443e-05, +-2.228407457930099572e-05, +-2.195008879749805965e-05, +-2.161609156535347555e-05, +-2.128208342660224269e-05, +-2.094806492496502850e-05, +-2.061403660416233780e-05, +-2.027999900786884078e-05, +-1.994595267972745062e-05, +-1.961189816339302372e-05, +-1.927783600247211186e-05, +-1.894376674052934207e-05, +-1.860969092113115404e-05, +-1.827560908777812557e-05, +-1.794152178399327404e-05, +-1.760742955321708197e-05, +-1.727333293889572052e-05, +-1.693923248442088988e-05, +-1.660512873315105604e-05, +-1.627102222841807460e-05, +-1.593691351354131592e-05, +-1.560280313176698702e-05, +-1.526869162631224846e-05, +-1.493457954037883127e-05, +-1.460046741709296364e-05, +-1.426635579959357249e-05, +-1.393224523092729372e-05, +-1.359813625413695495e-05, +-1.326402941220102119e-05, +-1.292992524804766400e-05, +-1.259582430459864967e-05, +-1.226172712470869170e-05, +-1.192763425117968088e-05, +-1.159354622676704489e-05, +-1.125946359420139502e-05, +-1.092538689612796163e-05, +-1.059131667518767556e-05, +-1.025725347394914290e-05, +-9.923197834922937795e-06, +-9.589150300567870526e-06, +-9.255111413297758676e-06, +-8.921081715495301532e-06, +-8.587061749451747623e-06, +-8.253052057410660908e-06, +-7.919053181581846003e-06, +-7.585065664095887920e-06, +-7.251090047018227216e-06, +-6.917126872392772019e-06, +-6.583176682181598609e-06, +-6.249240018278918982e-06, +-5.915317422517673315e-06, +-5.581409436676058891e-06, +-5.247516602491567130e-06, +-4.913639461600560496e-06, +-4.579778555582025982e-06, +-4.245934425971644326e-06, +-3.912107614208753047e-06, +-3.578298661687579650e-06, +-3.244508109726644687e-06, +-2.910736499582715769e-06, +-2.576984372420182673e-06, +-2.243252269362285890e-06, +-1.909540731423252348e-06, +-1.575850299596733274e-06, +-1.242181514750726581e-06, +-9.085349177160260594e-07, +-5.749110492258002939e-07, +-2.413104499296002059e-07, + 9.226633956285510010e-08, + 4.258187787420949866e-07, + 7.593463271848801846e-07, + 1.092848444547635933e-06, + 1.426324590545001595e-06, + 1.759774225010240484e-06, + 2.093196807806801940e-06, + 2.426591798933389104e-06, + 2.759958658435521050e-06, + 3.093296846465959480e-06, + 3.426605823270639300e-06, + 3.759885049144973574e-06, + 4.093133984494205044e-06, + 4.426352089826828500e-06, + 4.759538825710862701e-06, + 5.092693652826744619e-06, + 5.425816031953349159e-06, + 5.758905423924274639e-06, + 6.091961289688126967e-06, + 6.424983090294591035e-06, + 6.757970286887799295e-06, + 7.090922340699785046e-06, + 7.423838713036544502e-06, + 7.756718865338332834e-06, + 8.089562259135873415e-06, + 8.422368356036455468e-06, + 8.755136617769368910e-06, + 9.087866506171858008e-06, + 9.420557483145485631e-06, + 9.753209010716330183e-06, + 1.008582055102119421e-05, + 1.041839156630076040e-05, + 1.075092151889328960e-05, + 1.108340987122050255e-05, + 1.141585608584786482e-05, + 1.174825962544091559e-05, + 1.208061995275124238e-05, + 1.241293653066954602e-05, + 1.274520882218153736e-05, + 1.307743629036174879e-05, + 1.340961839843363803e-05, + 1.374175460972593886e-05, + 1.407384438765863928e-05, + 1.440588719580330215e-05, + 1.473788249779474168e-05, + 1.506982975743602160e-05, + 1.540172843860995551e-05, + 1.573357800533963243e-05, + 1.606537792177414260e-05, + 1.639712765214521451e-05, + 1.672882666082725427e-05, + 1.706047441232338310e-05, + 1.739207037125902022e-05, + 1.772361400236024967e-05, + 1.805510477051418996e-05, + 1.838654214068085189e-05, + 1.871792557799775050e-05, + 1.904925454769194234e-05, + 1.938052851514731044e-05, + 1.971174694585385074e-05, + 2.004290930543795179e-05, + 2.037401505964867623e-05, + 2.070506367438795922e-05, + 2.103605461565985420e-05, + 2.136698734962303879e-05, + 2.169786134257706574e-05, + 2.202867606091862891e-05, + 2.235943097120192627e-05, + 2.269012554012420270e-05, + 2.302075923451973944e-05, + 2.335133152135287121e-05, + 2.368184186770444378e-05, + 2.401228974083158740e-05, + 2.434267460812422680e-05, + 2.467299593709133885e-05, + 2.500325319540580809e-05, + 2.533344585089086063e-05, + 2.566357337147642838e-05, + 2.599363522525907161e-05, + 2.632363088049542285e-05, + 2.665355980555890014e-05, + 2.698342146900688693e-05, + 2.731321533949296928e-05, + 2.764294088587119884e-05, + 2.797259757710855030e-05, + 2.830218488234418321e-05, + 2.863170227087635024e-05, + 2.896114921211846667e-05, + 2.929052517565918870e-05, + 2.961982963124832566e-05, + 2.994906204879049739e-05, + 3.027822189832382629e-05, + 3.060730865007974460e-05, + 3.093632177439521811e-05, + 3.126526074181725645e-05, + 3.159412502301471663e-05, + 3.192291408883858128e-05, + 3.225162741030772855e-05, + 3.258026445856598407e-05, + 3.290882470494150143e-05, + 3.323730762093309439e-05, + 3.356571267820356909e-05, + 3.389403934855871758e-05, + 3.422228710400688801e-05, + 3.455045541667871295e-05, + 3.487854375889458072e-05, + 3.520655160315053390e-05, + 3.553447842211177098e-05, + 3.586232368860599198e-05, + 3.619008687560998155e-05, + 3.651776745630861657e-05, + 3.684536490405235194e-05, + 3.717287869234269226e-05, + 3.750030829487772152e-05, + 3.782765318553749350e-05, + 3.815491283834154460e-05, + 3.848208672750843683e-05, + 3.880917432744119568e-05, + 3.913617511272142149e-05, + 3.946308855810302821e-05, + 3.978991413849768122e-05, + 4.011665132903465203e-05, + 4.044329960501795847e-05, + 4.076985844191207347e-05, + 4.109632731540165790e-05, + 4.142270570130437713e-05, + 4.174899307567454397e-05, + 4.207518891471558292e-05, + 4.240129269484723036e-05, + 4.272730389264752296e-05, + 4.305322198491974041e-05, + 4.337904644860509322e-05, + 4.370477676088635894e-05, + 4.403041239910078004e-05, + 4.435595284079926135e-05, + 4.468139756373295987e-05, + 4.500674604580983529e-05, + 4.533199776515413213e-05, + 4.565715220009275937e-05, + 4.598220882914856844e-05, + 4.630716713101931290e-05, + 4.663202658463712374e-05, + 4.695678666908157663e-05, + 4.728144686368239983e-05, + 4.760600664793351042e-05, + 4.793046550155860862e-05, + 4.825482290446183974e-05, + 4.857907833675676953e-05, + 4.890323127875394974e-05, + 4.922728121098933772e-05, + 4.955122761417561579e-05, + 4.987506996925312162e-05, + 5.019880775737597044e-05, + 5.052244045987004900e-05, + 5.084596755829155567e-05, + 5.116938853441293974e-05, + 5.149270287021719578e-05, + 5.181591004789070791e-05, + 5.213900954981022583e-05, + 5.246200085860130329e-05, + 5.278488345709553991e-05, + 5.310765682831725901e-05, + 5.343032045552779052e-05, + 5.375287382221134919e-05, + 5.407531641203284568e-05, + 5.439764770889656887e-05, + 5.471986719693253180e-05, + 5.504197436048958016e-05, + 5.536396868412984251e-05, + 5.568584965261460184e-05, + 5.600761675096983550e-05, + 5.632926946440838990e-05, + 5.665080727838796493e-05, + 5.697222967859749373e-05, + 5.729353615091512978e-05, + 5.761472618146606885e-05, + 5.793579925660982986e-05, + 5.825675486293290949e-05, + 5.857759248722892766e-05, + 5.889831161655609032e-05, + 5.921891173815268936e-05, + 5.953939233953753368e-05, + 5.985975290842550334e-05, + 6.017999293278516142e-05, + 6.050011190082528272e-05, + 6.082010930095305107e-05, + 6.113998462183188793e-05, + 6.145973735236768978e-05, + 6.177936698170334617e-05, + 6.209887299919698107e-05, + 6.241825489448099454e-05, + 6.273751215737615318e-05, + 6.305664427799307151e-05, + 6.337565074664771193e-05, + 6.369453105392502740e-05, + 6.401328469063834452e-05, + 6.433191114782242463e-05, + 6.465040991679133311e-05, + 6.496878048909652138e-05, + 6.528702235651365389e-05, + 6.560513501108554250e-05, + 6.592311794510982725e-05, + 6.624097065109548627e-05, + 6.655869262182187061e-05, + 6.687628335032475869e-05, + 6.719374232989017636e-05, + 6.751106905404791875e-05, + 6.782826301655825528e-05, + 6.814532371147008353e-05, + 6.846225063307800841e-05, + 6.877904327590996869e-05, + 6.909570113478406275e-05, + 6.941222370472479393e-05, + 6.972861048106306114e-05, + 7.004486095935134708e-05, + 7.036097463542933964e-05, + 7.067695100536679437e-05, + 7.099278956552900681e-05, + 7.130848981249254283e-05, + 7.162405124314456513e-05, + 7.193947335459929544e-05, + 7.225475564425534172e-05, + 7.256989760978213209e-05, + 7.288489874907801039e-05, + 7.319975856032881023e-05, + 7.351447654199281167e-05, + 7.382905219279560483e-05, + 7.414348501170992369e-05, + 7.445777449801146898e-05, + 7.477192015119654949e-05, + 7.508592147108116455e-05, + 7.539977795771688352e-05, + 7.571348911144791549e-05, + 7.602705443289880355e-05, + 7.634047342293130071e-05, + 7.665374558270347241e-05, + 7.696687041365474810e-05, + 7.727984741750047314e-05, + 7.759267609621114633e-05, + 7.790535595207079061e-05, + 7.821788648759787411e-05, + 7.853026720561189368e-05, + 7.884249760921894145e-05, + 7.915457720180536230e-05, + 7.946650548703168223e-05, + 7.977828196881990976e-05, + 8.008990615140948064e-05, + 8.040137753931679012e-05, + 8.071269563732157257e-05, + 8.102385995052329359e-05, + 8.133486998425914366e-05, + 8.164572524420168410e-05, + 8.195642523627631217e-05, + 8.226696946671726012e-05, + 8.257735744204833706e-05, + 8.288758866907605779e-05, + 8.319766265487663244e-05, + 8.350757890685300898e-05, + 8.381733693269281978e-05, + 8.412693624035611655e-05, + 8.443637633813191152e-05, + 8.474565673455434144e-05, + 8.505477693850240070e-05, + 8.536373645911535994e-05, + 8.567253480585876693e-05, + 8.598117148846645523e-05, + 8.628964601700662637e-05, + 8.659795790179739049e-05, + 8.690610665350603857e-05, + 8.721409178306562665e-05, + 8.752191280173135437e-05, + 8.782956922106853026e-05, + 8.813706055290952896e-05, + 8.844438630941286669e-05, + 8.875154600304784622e-05, + 8.905853914658924426e-05, + 8.936536525309747060e-05, + 8.967202383597399793e-05, + 8.997851440888057523e-05, + 9.028483648583465109e-05, + 9.059098958112961710e-05, + 9.089697320939538769e-05, + 9.120278688555260606e-05, + 9.150843012484069798e-05, + 9.181390244280350607e-05, + 9.211920335531981012e-05, + 9.242433237855348087e-05, + 9.272928902900506095e-05, + 9.303407282349607102e-05, + 9.333868327913071039e-05, + 9.364311991335002639e-05, + 9.394738224392036770e-05, + 9.425146978892572709e-05, + 9.455538206676291680e-05, + 9.485911859612821925e-05, + 9.516267889607243739e-05, + 9.546606248596178218e-05, + 9.576926888546328999e-05, + 9.607229761460147222e-05, + 9.637514819367712208e-05, + 9.667782014336315807e-05, + 9.698031298462299712e-05, + 9.728262623876796306e-05, + 9.758475942743473526e-05, + 9.788671207258143193e-05, + 9.818848369647396272e-05, + 9.849007382174755718e-05, + 9.879148197133435366e-05, + 9.909270766851632187e-05, + 9.939375043691431246e-05, + 9.969460980044641011e-05, + 9.999528528338455600e-05, + 1.002957764103410766e-04, + 1.005960827062618937e-04, + 1.008962036964084863e-04, + 1.011961389064114093e-04, + 1.014958878621903743e-04, + 1.017954500900498086e-04, + 1.020948251165986647e-04, + 1.023940124688049014e-04, + 1.026930116739824603e-04, + 1.029918222597517053e-04, + 1.032904437540944464e-04, + 1.035888756853410917e-04, + 1.038871175821642776e-04, + 1.041851689735598412e-04, + 1.044830293889012745e-04, + 1.047806983578598047e-04, + 1.050781754104985983e-04, + 1.053754600771944543e-04, + 1.056725518886965408e-04, + 1.059694503760897765e-04, + 1.062661550707860481e-04, + 1.065626655045809687e-04, + 1.068589812096125289e-04, + 1.071551017183501733e-04, + 1.074510265636467748e-04, + 1.077467552786616831e-04, + 1.080422873969536543e-04, + 1.083376224524009861e-04, + 1.086327599792569069e-04, + 1.089276995121291926e-04, + 1.092224405859753287e-04, + 1.095169827360885915e-04, + 1.098113254981533833e-04, + 1.101054684082045885e-04, + 1.103994110026167445e-04, + 1.106931528181560165e-04, + 1.109866933919032456e-04, + 1.112800322613458759e-04, + 1.115731689643003119e-04, + 1.118661030389707367e-04, + 1.121588340238990081e-04, + 1.124513614580230293e-04, + 1.127436848805992830e-04, + 1.130358038312959909e-04, + 1.133277178501135339e-04, + 1.136194264774390819e-04, + 1.139109292540337596e-04, + 1.142022257209937916e-04, + 1.144933154198044954e-04, + 1.147841978923260653e-04, + 1.150748726807899260e-04, + 1.153653393277785942e-04, + 1.156555973762787907e-04, + 1.159456463696040285e-04, + 1.162354858514862816e-04, + 1.165251153659992514e-04, + 1.168145344576102180e-04, + 1.171037426711688868e-04, + 1.173927395518673813e-04, + 1.176815246452950496e-04, + 1.179700974974310377e-04, + 1.182584576546068570e-04, + 1.185466046635647285e-04, + 1.188345380713815122e-04, + 1.191222574255597122e-04, + 1.194097622739498615e-04, + 1.196970521648041495e-04, + 1.199841266467570279e-04, + 1.202709852688189907e-04, + 1.205576275803652844e-04, + 1.208440531311880855e-04, + 1.211302614714579570e-04, + 1.214162521517119360e-04, + 1.217020247229062932e-04, + 1.219875787363390942e-04, + 1.222729137437411910e-04, + 1.225580292972012358e-04, + 1.228429249492145922e-04, + 1.231276002526685356e-04, + 1.234120547608333362e-04, + 1.236962880273521209e-04, + 1.239802996062923737e-04, + 1.242640890521073645e-04, + 1.245476559196257956e-04, + 1.248309997641017287e-04, + 1.251141201411460095e-04, + 1.253970166067844890e-04, + 1.256796887174452574e-04, + 1.259621360299544696e-04, + 1.262443581015157998e-04, + 1.265263544897635942e-04, + 1.268081247526870858e-04, + 1.270896684487188917e-04, + 1.273709851366615321e-04, + 1.276520743757367606e-04, + 1.279329357255753195e-04, + 1.282135687461780972e-04, + 1.284939729979689567e-04, + 1.287741480417811018e-04, + 1.290540934388533087e-04, + 1.293338087508097607e-04, + 1.296132935397130924e-04, + 1.298925473679873031e-04, + 1.301715697985095341e-04, + 1.304503603945315730e-04, + 1.307289187197406229e-04, + 1.310072443382132783e-04, + 1.312853368144431445e-04, + 1.315631957133279095e-04, + 1.318408206001955537e-04, + 1.321182110407615785e-04, + 1.323953666011851138e-04, + 1.326722868479949212e-04, + 1.329489713481777561e-04, + 1.332254196691036940e-04, + 1.335016313785772769e-04, + 1.337776060448192181e-04, + 1.340533432364608723e-04, + 1.343288425225320657e-04, + 1.346041034725118637e-04, + 1.348791256562925211e-04, + 1.351539086441661463e-04, + 1.354284520068773940e-04, + 1.357027553155467844e-04, + 1.359768181417612346e-04, + 1.362506400574977846e-04, + 1.365242206351755037e-04, + 1.367975594476366252e-04, + 1.370706560681411799e-04, + 1.373435100703556658e-04, + 1.376161210284092913e-04, + 1.378884885168261314e-04, + 1.381606121105765457e-04, + 1.384324913850634091e-04, + 1.387041259160869838e-04, + 1.389755152798956598e-04, + 1.392466590531727820e-04, + 1.395175568130317982e-04, + 1.397882081369988306e-04, + 1.400586126030613297e-04, + 1.403287697895965163e-04, + 1.405986792754576034e-04, + 1.408683406398999886e-04, + 1.411377534626311004e-04, + 1.414069173237999090e-04, + 1.416758318039594935e-04, + 1.419444964841181083e-04, + 1.422129109457257660e-04, + 1.424810747706704156e-04, + 1.427489875412714371e-04, + 1.430166488402690708e-04, + 1.432840582508725558e-04, + 1.435512153567255437e-04, + 1.438181197418926820e-04, + 1.440847709909061261e-04, + 1.443511686887259931e-04, + 1.446173124207371906e-04, + 1.448832017727982055e-04, + 1.451488363312049463e-04, + 1.454142156826797923e-04, + 1.456793394144200306e-04, + 1.459442071140262982e-04, + 1.462088183695881807e-04, + 1.464731727696116242e-04, + 1.467372699030689172e-04, + 1.470011093593791480e-04, + 1.472646907284056296e-04, + 1.475280136004419678e-04, + 1.477910775662628559e-04, + 1.480538822170877271e-04, + 1.483164271445681773e-04, + 1.485787119408391130e-04, + 1.488407361984454857e-04, + 1.491024995104272123e-04, + 1.493640014702487834e-04, + 1.496252416718527414e-04, + 1.498862197096127074e-04, + 1.501469351783882961e-04, + 1.504073876734534504e-04, + 1.506675767905815775e-04, + 1.509275021259724476e-04, + 1.511871632763036927e-04, + 1.514465598387164684e-04, + 1.517056914107821960e-04, + 1.519645575905504298e-04, + 1.522231579765372024e-04, + 1.524814921677201452e-04, + 1.527395597635319564e-04, + 1.529973603638516461e-04, + 1.532548935690506418e-04, + 1.535121589799566576e-04, + 1.537691561978470262e-04, + 1.540258848244792193e-04, + 1.542823444620840170e-04, + 1.545385347133279943e-04, + 1.547944551813630154e-04, + 1.550501054698193485e-04, + 1.553054851827732484e-04, + 1.555605939247974804e-04, + 1.558154313008942079e-04, + 1.560699969165763078e-04, + 1.563242903777977376e-04, + 1.565783112910013215e-04, + 1.568320592631016743e-04, + 1.570855339014798346e-04, + 1.573387348139725311e-04, + 1.575916616089190203e-04, + 1.578443138951268797e-04, + 1.580966912818617353e-04, + 1.583487933788924181e-04, + 1.586006197964242323e-04, + 1.588521701451791853e-04, + 1.591034440363271957e-04, + 1.593544410815335812e-04, + 1.596051608929429581e-04, + 1.598556030831715707e-04, + 1.601057672652991056e-04, + 1.603556530529137128e-04, + 1.606052600600784775e-04, + 1.608545879013215530e-04, + 1.611036361916795567e-04, + 1.613524045466400254e-04, + 1.616008925821889308e-04, + 1.618490999148023313e-04, + 1.620970261614404625e-04, + 1.623446709395310412e-04, + 1.625920338670165633e-04, + 1.628391145622845083e-04, + 1.630859126442505249e-04, + 1.633324277322876052e-04, + 1.635786594462740882e-04, + 1.638246074065824920e-04, + 1.640702712340458768e-04, + 1.643156505500044655e-04, + 1.645607449762927959e-04, + 1.648055541352373081e-04, + 1.650500776496501378e-04, + 1.652943151428184099e-04, + 1.655382662385490426e-04, + 1.657819305611365199e-04, + 1.660253077353536760e-04, + 1.662683973864878529e-04, + 1.665111991403051223e-04, + 1.667537126230733788e-04, + 1.669959374615494652e-04, + 1.672378732830040004e-04, + 1.674795197151829720e-04, + 1.677208763863564434e-04, + 1.679619429252550205e-04, + 1.682027189611469647e-04, + 1.684432041237702681e-04, + 1.686833980433822015e-04, + 1.689233003507382535e-04, + 1.691629106770901252e-04, + 1.694022286541751587e-04, + 1.696412539142593532e-04, + 1.698799860901066821e-04, + 1.701184248149672205e-04, + 1.703565697226228992e-04, + 1.705944204473220456e-04, + 1.708319766238548441e-04, + 1.710692378874909404e-04, + 1.713062038740271196e-04, + 1.715428742197448318e-04, + 1.717792485614610964e-04, + 1.720153265364611180e-04, + 1.722511077825780029e-04, + 1.724865919381246169e-04, + 1.727217786419406667e-04, + 1.729566675333814513e-04, + 1.731912582522848211e-04, + 1.734255504390163076e-04, + 1.736595437344582815e-04, + 1.738932377800052364e-04, + 1.741266322175592893e-04, + 1.743597266895195827e-04, + 1.745925208388249749e-04, + 1.748250143089243871e-04, + 1.750572067437648771e-04, + 1.752890977878250329e-04, + 1.755206870861046999e-04, + 1.757519742840938368e-04, + 1.759829590278150712e-04, + 1.762136409638133719e-04, + 1.764440197391529594e-04, + 1.766740950014105294e-04, + 1.769038663986658745e-04, + 1.771333335795509715e-04, + 1.773624961931909193e-04, + 1.775913538892482833e-04, + 1.778199063179058557e-04, + 1.780481531298626721e-04, + 1.782760939763260687e-04, + 1.785037285090513106e-04, + 1.787310563803112069e-04, + 1.789580772428887650e-04, + 1.791847907501153004e-04, + 1.794111965558126218e-04, + 1.796372943143627180e-04, + 1.798630836806486418e-04, + 1.800885643100959266e-04, + 1.803137358586556728e-04, + 1.805385979828023522e-04, + 1.807631503395239962e-04, + 1.809873925863617419e-04, + 1.812113243813802605e-04, + 1.814349453831599782e-04, + 1.816582552508365139e-04, + 1.818812536440395577e-04, + 1.821039402229671382e-04, + 1.823263146483222242e-04, + 1.825483765813625165e-04, + 1.827701256838652657e-04, + 1.829915616181275429e-04, + 1.832126840470057322e-04, + 1.834334926338849559e-04, + 1.836539870426699402e-04, + 1.838741669378158607e-04, + 1.840940319843193979e-04, + 1.843135818476867801e-04, + 1.845328161939778565e-04, + 1.847517346897941163e-04, + 1.849703370022745964e-04, + 1.851886227990918966e-04, + 1.854065917484423677e-04, + 1.856242435190874737e-04, + 1.858415777803222688e-04, + 1.860585942019677536e-04, + 1.862752924544056239e-04, + 1.864916722085443079e-04, + 1.867077331358384822e-04, + 1.869234749082798557e-04, + 1.871388971984197481e-04, + 1.873539996793301945e-04, + 1.875687820246537102e-04, + 1.877832439085418701e-04, + 1.879973850057257826e-04, + 1.882112049914570816e-04, + 1.884247035415472556e-04, + 1.886378803323552884e-04, + 1.888507350407812348e-04, + 1.890632673442576011e-04, + 1.892754769207891899e-04, + 1.894873634489245312e-04, + 1.896989266077452301e-04, + 1.899101660769069496e-04, + 1.901210815365808908e-04, + 1.903316726675226397e-04, + 1.905419391510140544e-04, + 1.907518806689021058e-04, + 1.909614969035902047e-04, + 1.911707875380104732e-04, + 1.913797522556602820e-04, + 1.915883907406017086e-04, + 1.917967026774295531e-04, + 1.920046877513076594e-04, + 1.922123456479585333e-04, + 1.924196760536360214e-04, + 1.926266786551634471e-04, + 1.928333531399243413e-04, + 1.930396991958592437e-04, + 1.932457165114599836e-04, + 1.934514047757622535e-04, + 1.936567636783822544e-04, + 1.938617929094896188e-04, + 1.940664921597987363e-04, + 1.942708611205968075e-04, + 1.944748994837359297e-04, + 1.946786069416035249e-04, + 1.948819831871635667e-04, + 1.950850279139430550e-04, + 1.952877408160325577e-04, + 1.954901215880773752e-04, + 1.956921699252741785e-04, + 1.958938855234028311e-04, + 1.960952680788029972e-04, + 1.962963172883638689e-04, + 1.964970328495579119e-04, + 1.966974144604064965e-04, + 1.968974618195027196e-04, + 1.970971746259988827e-04, + 1.972965525796272000e-04, + 1.974955953806691695e-04, + 1.976943027299937641e-04, + 1.978926743290070707e-04, + 1.980907098797140078e-04, + 1.982884090846650106e-04, + 1.984857716469917005e-04, + 1.986827972703963691e-04, + 1.988794856591452555e-04, + 1.990758365180604421e-04, + 1.992718495525585610e-04, + 1.994675244686200833e-04, + 1.996628609727853351e-04, + 1.998578587721864001e-04, + 2.000525175744996586e-04, + 2.002468370880013527e-04, + 2.004408170215205595e-04, + 2.006344570844770562e-04, + 2.008277569868506648e-04, + 2.010207164392001171e-04, + 2.012133351526553568e-04, + 2.014056128389326639e-04, + 2.015975492103067371e-04, + 2.017891439796432463e-04, + 2.019803968603862835e-04, + 2.021713075665359464e-04, + 2.023618758126826539e-04, + 2.025521013139983096e-04, + 2.027419837862325883e-04, + 2.029315229457102801e-04, + 2.031207185093212881e-04, + 2.033095701945567327e-04, + 2.034980777194829308e-04, + 2.036862408027335350e-04, + 2.038740591635360155e-04, + 2.040615325217023631e-04, + 2.042486605976043962e-04, + 2.044354431122100818e-04, + 2.046218797870713113e-04, + 2.048079703443251741e-04, + 2.049937145066858259e-04, + 2.051791119974382012e-04, + 2.053641625404774773e-04, + 2.055488658602613969e-04, + 2.057332216818445834e-04, + 2.059172297308672916e-04, + 2.061008897335500688e-04, + 2.062842014166887668e-04, + 2.064671645076840596e-04, + 2.066497787345203288e-04, + 2.068320438257562847e-04, + 2.070139595105596612e-04, + 2.071955255186549028e-04, + 2.073767415803853711e-04, + 2.075576074266623867e-04, + 2.077381227889983520e-04, + 2.079182873994985924e-04, + 2.080981009908388865e-04, + 2.082775632962973139e-04, + 2.084566740497450132e-04, + 2.086354329856465067e-04, + 2.088138398390431392e-04, + 2.089918943455909171e-04, + 2.091695962415072193e-04, + 2.093469452636321907e-04, + 2.095239411493771066e-04, + 2.097005836367635127e-04, + 2.098768724643983695e-04, + 2.100528073714713422e-04, + 2.102283880977849954e-04, + 2.104036143837355755e-04, + 2.105784859702984830e-04, + 2.107530025990613670e-04, + 2.109271640122071037e-04, + 2.111009699524991868e-04, + 2.112744201633066910e-04, + 2.114475143886010466e-04, + 2.116202523729514859e-04, + 2.117926338615211130e-04, + 2.119646586000576067e-04, + 2.121363263349300291e-04, + 2.123076368130988746e-04, + 2.124785897821154736e-04, + 2.126491849901445167e-04, + 2.128194221859393081e-04, + 2.129893011188584888e-04, + 2.131588215388558730e-04, + 2.133279831965001526e-04, + 2.134967858429441339e-04, + 2.136652292299624670e-04, + 2.138333131099052153e-04, + 2.140010372357515505e-04, + 2.141684013610658426e-04, + 2.143354052400255776e-04, + 2.145020486274159643e-04, + 2.146683312786073551e-04, + 2.148342529495865798e-04, + 2.149998133969483805e-04, + 2.151650123778914812e-04, + 2.153298496502100226e-04, + 2.154943249723238654e-04, + 2.156584381032306420e-04, + 2.158221888025604537e-04, + 2.159855768305334793e-04, + 2.161486019479864288e-04, + 2.163112639163689119e-04, + 2.164735624977179589e-04, + 2.166354974546907638e-04, + 2.167970685505619737e-04, + 2.169582755491975597e-04, + 2.171191182150848220e-04, + 2.172795963133261827e-04, + 2.174397096096117017e-04, + 2.175994578702570507e-04, + 2.177588408621884697e-04, + 2.179178583529455047e-04, + 2.180765101106738252e-04, + 2.182347959041211038e-04, + 2.183927155026627932e-04, + 2.185502686762863240e-04, + 2.187074551955773627e-04, + 2.188642748317471602e-04, + 2.190207273566241496e-04, + 2.191768125426309067e-04, + 2.193325301628155108e-04, + 2.194878799908434942e-04, + 2.196428618009955383e-04, + 2.197974753681631915e-04, + 2.199517204678409809e-04, + 2.201055968761595350e-04, + 2.202591043698592108e-04, + 2.204122427262877892e-04, + 2.205650117234226747e-04, + 2.207174111398502137e-04, + 2.208694407547644753e-04, + 2.210211003479931632e-04, + 2.211723896999811634e-04, + 2.213233085917764762e-04, + 2.214738568050658870e-04, + 2.216240341221301883e-04, + 2.217738403258919118e-04, + 2.219232751998773817e-04, + 2.220723385282406749e-04, + 2.222210300957613719e-04, + 2.223693496878206767e-04, + 2.225172970904311246e-04, + 2.226648720902284499e-04, + 2.228120744744711531e-04, + 2.229589040310273268e-04, + 2.231053605484047163e-04, + 2.232514438157074321e-04, + 2.233971536226891572e-04, + 2.235424897597053612e-04, + 2.236874520177505423e-04, + 2.238320401884306076e-04, + 2.239762540639790003e-04, + 2.241200934372497339e-04, + 2.242635581017295350e-04, + 2.244066478515183009e-04, + 2.245493624813492113e-04, + 2.246917017865836599e-04, + 2.248336655631911693e-04, + 2.249752536077785018e-04, + 2.251164657175786551e-04, + 2.252573016904530845e-04, + 2.253977613248853065e-04, + 2.255378444199756941e-04, + 2.256775507754679862e-04, + 2.258168801917296090e-04, + 2.259558324697454415e-04, + 2.260944074111384972e-04, + 2.262326048181625244e-04, + 2.263704244936832490e-04, + 2.265078662412052632e-04, + 2.266449298648675801e-04, + 2.267816151694267200e-04, + 2.269179219602825419e-04, + 2.270538500434444702e-04, + 2.271893992255721254e-04, + 2.273245693139409277e-04, + 2.274593601164653532e-04, + 2.275937714416944343e-04, + 2.277278030987911603e-04, + 2.278614548975611267e-04, + 2.279947266484425342e-04, + 2.281276181625068388e-04, + 2.282601292514474490e-04, + 2.283922597276052588e-04, + 2.285240094039332217e-04, + 2.286553780940375768e-04, + 2.287863656121427486e-04, + 2.289169717731159306e-04, + 2.290471963924598756e-04, + 2.291770392862969310e-04, + 2.293065002713918880e-04, + 2.294355791651480519e-04, + 2.295642757856024437e-04, + 2.296925899514173442e-04, + 2.298205214819063955e-04, + 2.299480701969997714e-04, + 2.300752359172720141e-04, + 2.302020184639373994e-04, + 2.303284176588455182e-04, + 2.304544333244792713e-04, + 2.305800652839495022e-04, + 2.307053133610183074e-04, + 2.308301773800829635e-04, + 2.309546571661669819e-04, + 2.310787525449423357e-04, + 2.312024633427199182e-04, + 2.313257893864361801e-04, + 2.314487305036724558e-04, + 2.315712865226521712e-04, + 2.316934572722376454e-04, + 2.318152425819271364e-04, + 2.319366422818491759e-04, + 2.320576562027860696e-04, + 2.321782841761565227e-04, + 2.322985260340117370e-04, + 2.324183816090554953e-04, + 2.325378507346138315e-04, + 2.326569332446720554e-04, + 2.327756289738413327e-04, + 2.328939377573863861e-04, + 2.330118594312005859e-04, + 2.331293938318348979e-04, + 2.332465407964601537e-04, + 2.333633001629089275e-04, + 2.334796717696426579e-04, + 2.335956554557731422e-04, + 2.337112510610568172e-04, + 2.338264584258794448e-04, + 2.339412773912777149e-04, + 2.340557077989357756e-04, + 2.341697494911781593e-04, + 2.342834023109666652e-04, + 2.343966661019210404e-04, + 2.345095407082839879e-04, + 2.346220259749625281e-04, + 2.347341217474943891e-04, + 2.348458278720703951e-04, + 2.349571441955276905e-04, + 2.350680705653360246e-04, + 2.351786068296179445e-04, + 2.352887528371460041e-04, + 2.353985084373293190e-04, + 2.355078734802290715e-04, + 2.356168478165564500e-04, + 2.357254312976549224e-04, + 2.358336237755211074e-04, + 2.359414251028032561e-04, + 2.360488351327943676e-04, + 2.361558537194324869e-04, + 2.362624807172946880e-04, + 2.363687159816191914e-04, + 2.364745593682876913e-04, + 2.365800107338225644e-04, + 2.366850699354028614e-04, + 2.367897368308564737e-04, + 2.368940112786470419e-04, + 2.369978931378956938e-04, + 2.371013822683730487e-04, + 2.372044785304992440e-04, + 2.373071817853414150e-04, + 2.374094918946072707e-04, + 2.375114087206666423e-04, + 2.376129321265364671e-04, + 2.377140619758763703e-04, + 2.378147981330073677e-04, + 2.379151404628863866e-04, + 2.380150888311277873e-04, + 2.381146431039987829e-04, + 2.382138031484160501e-04, + 2.383125688319410952e-04, + 2.384109400227976553e-04, + 2.385089165898442946e-04, + 2.386064984026068227e-04, + 2.387036853312513788e-04, + 2.388004772466018608e-04, + 2.388968740201364010e-04, + 2.389928755239728109e-04, + 2.390884816308894525e-04, + 2.391836922143179736e-04, + 2.392785071483422509e-04, + 2.393729263076925355e-04, + 2.394669495677633148e-04, + 2.395605768045840122e-04, + 2.396538078948559853e-04, + 2.397466427159187802e-04, + 2.398390811457781313e-04, + 2.399311230630827587e-04, + 2.400227683471391682e-04, + 2.401140168779061215e-04, + 2.402048685360009790e-04, + 2.402953232026870689e-04, + 2.403853807598887299e-04, + 2.404750410901866230e-04, + 2.405643040768048286e-04, + 2.406531696036284113e-04, + 2.407416375552001123e-04, + 2.408297078167160677e-04, + 2.409173802740265666e-04, + 2.410046548136308747e-04, + 2.410915313226920603e-04, + 2.411780096890292968e-04, + 2.412640898011085111e-04, + 2.413497715480630650e-04, + 2.414350548196680327e-04, + 2.415199395063684709e-04, + 2.416044254992538319e-04, + 2.416885126900799186e-04, + 2.417722009712494234e-04, + 2.418554902358325002e-04, + 2.419383803775410427e-04, + 2.420208712907589868e-04, + 2.421029628705152336e-04, + 2.421846550125037877e-04, + 2.422659476130744878e-04, + 2.423468405692286967e-04, + 2.424273337786274330e-04, + 2.425074271395929158e-04, + 2.425871205511044180e-04, + 2.426664139127930890e-04, + 2.427453071249584347e-04, + 2.428238000885422421e-04, + 2.429018927051594797e-04, + 2.429795848770741193e-04, + 2.430568765072115770e-04, + 2.431337674991607199e-04, + 2.432102577571565720e-04, + 2.432863471861002101e-04, + 2.433620356915530984e-04, + 2.434373231797346492e-04, + 2.435122095575175337e-04, + 2.435866947324439181e-04, + 2.436607786127024239e-04, + 2.437344611071476711e-04, + 2.438077421252946941e-04, + 2.438806215773181834e-04, + 2.439530993740499369e-04, + 2.440251754269773157e-04, + 2.440968496482546005e-04, + 2.441681219506951044e-04, + 2.442389922477667275e-04, + 2.443094604536051573e-04, + 2.443795264829947051e-04, + 2.444491902513918876e-04, + 2.445184516749055316e-04, + 2.445873106703090258e-04, + 2.446557671550347911e-04, + 2.447238210471778586e-04, + 2.447914722654843771e-04, + 2.448587207293727004e-04, + 2.449255663589199441e-04, + 2.449920090748562381e-04, + 2.450580487985858699e-04, + 2.451236854521570883e-04, + 2.451889189582932751e-04, + 2.452537492403734291e-04, + 2.453181762224387798e-04, + 2.453821998291902937e-04, + 2.454458199859955590e-04, + 2.455090366188725226e-04, + 2.455718496545129088e-04, + 2.456342590202613483e-04, + 2.456962646441299071e-04, + 2.457578664547926646e-04, + 2.458190643815772575e-04, + 2.458798583544804920e-04, + 2.459402483041597787e-04, + 2.460002341619358973e-04, + 2.460598158597862204e-04, + 2.461189933303589705e-04, + 2.461777665069533254e-04, + 2.462361353235418605e-04, + 2.462940997147503833e-04, + 2.463516596158752260e-04, + 2.464088149628683921e-04, + 2.464655656923477479e-04, + 2.465219117415906797e-04, + 2.465778530485431474e-04, + 2.466333895518063482e-04, + 2.466885211906494563e-04, + 2.467432479050045272e-04, + 2.467975696354619440e-04, + 2.468514863232762718e-04, + 2.469049979103674509e-04, + 2.469581043393194951e-04, + 2.470108055533754509e-04, + 2.470631014964400529e-04, + 2.471149921130862842e-04, + 2.471664773485487076e-04, + 2.472175571487216774e-04, + 2.472682314601694765e-04, + 2.473185002301089147e-04, + 2.473683634064316635e-04, + 2.474178209376843608e-04, + 2.474668727730806460e-04, + 2.475155188624992620e-04, + 2.475637591564791226e-04, + 2.476115936062198001e-04, + 2.476590221635924759e-04, + 2.477060447811230809e-04, + 2.477526614120081254e-04, + 2.477988720101068380e-04, + 2.478446765299359075e-04, + 2.478900749266789699e-04, + 2.479350671561868788e-04, + 2.479796531749708217e-04, + 2.480238329402037825e-04, + 2.480676064097289994e-04, + 2.481109735420438636e-04, + 2.481539342963180262e-04, + 2.481964886323803870e-04, + 2.482386365107240285e-04, + 2.482803778925094678e-04, + 2.483217127395550617e-04, + 2.483626410143458972e-04, + 2.484031626800322734e-04, + 2.484432777004269371e-04, + 2.484829860400054619e-04, + 2.485222876639111276e-04, + 2.485611825379428850e-04, + 2.485996706285740045e-04, + 2.486377519029332652e-04, + 2.486754263288188868e-04, + 2.487126938746902355e-04, + 2.487495545096689081e-04, + 2.487860082035426895e-04, + 2.488220549267653901e-04, + 2.488576946504497981e-04, + 2.488929273463773837e-04, + 2.489277529869885408e-04, + 2.489621715453923449e-04, + 2.489961829953570667e-04, + 2.490297873113193872e-04, + 2.490629844683776763e-04, + 2.490957744422950281e-04, + 2.491281572094933522e-04, + 2.491601327470664381e-04, + 2.491917010327669994e-04, + 2.492228620450129620e-04, + 2.492536157628863253e-04, + 2.492839621661290428e-04, + 2.493139012351529966e-04, + 2.493434329510297513e-04, + 2.493725572954967346e-04, + 2.494012742509518700e-04, + 2.494295838004617627e-04, + 2.494574859277503154e-04, + 2.494849806172108717e-04, + 2.495120678538977586e-04, + 2.495387476235284016e-04, + 2.495650199124856551e-04, + 2.495908847078154172e-04, + 2.496163419972237027e-04, + 2.496413917690852623e-04, + 2.496660340124359930e-04, + 2.496902687169736974e-04, + 2.497140958730635586e-04, + 2.497375154717278948e-04, + 2.497605275046589526e-04, + 2.497831319642078484e-04, + 2.498053288433912901e-04, + 2.498271181358890296e-04, + 2.498484998360410978e-04, + 2.498694739388545270e-04, + 2.498900404399968453e-04, + 2.499101993358014435e-04, + 2.499299506232625337e-04, + 2.499492943000353119e-04, + 2.499682303644431137e-04, + 2.499867588154674938e-04, + 2.500048796527555442e-04, + 2.500225928766163712e-04, + 2.500398984880217992e-04, + 2.500567964886056668e-04, + 2.500732868806652357e-04, + 2.500893696671614079e-04, + 2.501050448517146054e-04, + 2.501203124386111132e-04, + 2.501351724327972241e-04, + 2.501496248398821665e-04, + 2.501636696661379416e-04, + 2.501773069184992150e-04, + 2.501905366045628284e-04, + 2.502033587325862285e-04, + 2.502157733114889837e-04, + 2.502277803508551161e-04, + 2.502393798609283846e-04, + 2.502505718526149957e-04, + 2.502613563374844166e-04, + 2.502717333277648215e-04, + 2.502817028363484042e-04, + 2.502912648767880712e-04, + 2.503004194632991227e-04, + 2.503091666107571918e-04, + 2.503175063347004136e-04, + 2.503254386513272564e-04, + 2.503329635774976061e-04, + 2.503400811307338503e-04, + 2.503467913292166500e-04, + 2.503530941917914447e-04, + 2.503589897379617304e-04, + 2.503644779878918787e-04, + 2.503695589624080581e-04, + 2.503742326829989386e-04, + 2.503784991718087534e-04, + 2.503823584516486284e-04, + 2.503858105459843305e-04, + 2.503888554789457008e-04, + 2.503914932753210161e-04, + 2.503937239605593204e-04, + 2.503955475607709123e-04, + 2.503969641027235511e-04, + 2.503979736138467927e-04, + 2.503985761222302011e-04, + 2.503987716566212344e-04, + 2.503985602464290391e-04, + 2.503979419217208183e-04, + 2.503969167132242169e-04, + 2.503954846523256408e-04, + 2.503936457710702573e-04, + 2.503914001021640009e-04, + 2.503887476789702659e-04, + 2.503856885355117503e-04, + 2.503822227064713226e-04, + 2.503783502271874142e-04, + 2.503740711336604162e-04, + 2.503693854625473666e-04, + 2.503642932511650947e-04, + 2.503587945374862096e-04, + 2.503528893601449546e-04, + 2.503465777584311359e-04, + 2.503398597722928873e-04, + 2.503327354423369954e-04, + 2.503252048098272191e-04, + 2.503172679166850486e-04, + 2.503089248054907894e-04, + 2.503001755194796053e-04, + 2.502910201025458550e-04, + 2.502814585992412487e-04, + 2.502714910547724093e-04, + 2.502611175150053712e-04, + 2.502503380264616776e-04, + 2.502391526363196271e-04, + 2.502275613924140026e-04, + 2.502155643432361800e-04, + 2.502031615379338029e-04, + 2.501903530263106194e-04, + 2.501771388588263203e-04, + 2.501635190865964843e-04, + 2.501494937613927411e-04, + 2.501350629356429876e-04, + 2.501202266624287865e-04, + 2.501049849954880763e-04, + 2.500893379892138164e-04, + 2.500732856986551795e-04, + 2.500568281795152205e-04, + 2.500399654881510936e-04, + 2.500226976815775218e-04, + 2.500050248174593695e-04, + 2.499869469541195037e-04, + 2.499684641505338064e-04, + 2.499495764663326922e-04, + 2.499302839617996452e-04, + 2.499105866978727905e-04, + 2.498904847361429972e-04, + 2.498699781388562095e-04, + 2.498490669689098142e-04, + 2.498277512898573033e-04, + 2.498060311659005216e-04, + 2.497839066618995872e-04, + 2.497613778433630796e-04, + 2.497384447764560626e-04, + 2.497151075279923325e-04, + 2.496913661654404895e-04, + 2.496672207569203598e-04, + 2.496426713712031039e-04, + 2.496177180777137106e-04, + 2.495923609465263890e-04, + 2.495666000483692847e-04, + 2.495404354546191129e-04, + 2.495138672373074470e-04, + 2.494868954691126413e-04, + 2.494595202233673660e-04, + 2.494317415740530237e-04, + 2.494035595958021888e-04, + 2.493749743638989870e-04, + 2.493459859542737286e-04, + 2.493165944435116904e-04, + 2.492867999088461766e-04, + 2.492566024281583025e-04, + 2.492260020799799214e-04, + 2.491949989434921069e-04, + 2.491635930985273755e-04, + 2.491317846255647534e-04, + 2.490995736057306982e-04, + 2.490669601208033812e-04, + 2.490339442532082427e-04, + 2.490005260860169074e-04, + 2.489667057029522259e-04, + 2.489324831883847513e-04, + 2.488978586273302997e-04, + 2.488628321054539615e-04, + 2.488274037090658190e-04, + 2.487915735251281023e-04, + 2.487553416412440215e-04, + 2.487187081456678503e-04, + 2.486816731272992339e-04, + 2.486442366756824295e-04, + 2.486063988810085839e-04, + 2.485681598341188230e-04, + 2.485295196264947107e-04, + 2.484904783502644293e-04, + 2.484510360982048393e-04, + 2.484111929637325888e-04, + 2.483709490409160398e-04, + 2.483303044244627457e-04, + 2.482892592097277998e-04, + 2.482478134927093355e-04, + 2.482059673700494481e-04, + 2.481637209390343576e-04, + 2.481210742975966310e-04, + 2.480780275443106287e-04, + 2.480345807783911494e-04, + 2.479907340997006401e-04, + 2.479464876087413895e-04, + 2.479018414066605155e-04, + 2.478567955952488272e-04, + 2.478113502769350236e-04, + 2.477655055547915491e-04, + 2.477192615325357313e-04, + 2.476726183145227340e-04, + 2.476255760057526588e-04, + 2.475781347118629011e-04, + 2.475302945391363906e-04, + 2.474820555944921038e-04, + 2.474334179854913531e-04, + 2.473843818203388706e-04, + 2.473349472078773871e-04, + 2.472851142575871984e-04, + 2.472348830795892015e-04, + 2.471842537846468996e-04, + 2.471332264841612529e-04, + 2.470818012901716538e-04, + 2.470299783153551143e-04, + 2.469777576730308732e-04, + 2.469251394771510184e-04, + 2.468721238423113827e-04, + 2.468187108837423282e-04, + 2.467649007173138421e-04, + 2.467106934595299532e-04, + 2.466560892275361581e-04, + 2.466010881391103148e-04, + 2.465456903126725624e-04, + 2.464898958672740456e-04, + 2.464337049226055345e-04, + 2.463771175989917859e-04, + 2.463201340173931165e-04, + 2.462627542994055645e-04, + 2.462049785672648476e-04, + 2.461468069438353039e-04, + 2.460882395526181317e-04, + 2.460292765177507935e-04, + 2.459699179640003480e-04, + 2.459101640167762437e-04, + 2.458500148021118331e-04, + 2.457894704466817202e-04, + 2.457285310777879909e-04, + 2.456671968233717601e-04, + 2.456054678119983176e-04, + 2.455433441728766984e-04, + 2.454808260358364806e-04, + 2.454179135313494151e-04, + 2.453546067905108320e-04, + 2.452909059450503735e-04, + 2.452268111273313441e-04, + 2.451623224703482163e-04, + 2.450974401077198007e-04, + 2.450321641737004128e-04, + 2.449664948031723922e-04, + 2.449004321316529875e-04, + 2.448339762952825923e-04, + 2.447671274308324974e-04, + 2.446998856757052164e-04, + 2.446322511679308530e-04, + 2.445642240461649332e-04, + 2.444958044496977289e-04, + 2.444269925184439584e-04, + 2.443577883929455509e-04, + 2.442881922143700204e-04, + 2.442182041245149647e-04, + 2.441478242658080659e-04, + 2.440770527812979288e-04, + 2.440058898146583088e-04, + 2.439343355101963255e-04, + 2.438623900128364971e-04, + 2.437900534681332364e-04, + 2.437173260222712571e-04, + 2.436442078220505303e-04, + 2.435706990148984010e-04, + 2.434967997488716746e-04, + 2.434225101726418994e-04, + 2.433478304355175109e-04, + 2.432727606874163749e-04, + 2.431973010788908321e-04, + 2.431214517611092669e-04, + 2.430452128858639680e-04, + 2.429685846055682007e-04, + 2.428915670732659650e-04, + 2.428141604426126696e-04, + 2.427363648678873293e-04, + 2.426581805039944621e-04, + 2.425796075064530033e-04, + 2.425006460314098854e-04, + 2.424212962356267834e-04, + 2.423415582764879212e-04, + 2.422614323119937291e-04, + 2.421809185007678096e-04, + 2.421000170020514352e-04, + 2.420187279757068011e-04, + 2.419370515822076193e-04, + 2.418549879826548674e-04, + 2.417725373387612838e-04, + 2.416896998128546478e-04, + 2.416064755678887027e-04, + 2.415228647674297390e-04, + 2.414388675756599283e-04, + 2.413544841573739622e-04, + 2.412697146779873463e-04, + 2.411845593035356688e-04, + 2.410990182006615354e-04, + 2.410130915366227010e-04, + 2.409267794792986292e-04, + 2.408400821971771837e-04, + 2.407529998593581789e-04, + 2.406655326355642221e-04, + 2.405776806961267542e-04, + 2.404894442119856165e-04, + 2.404008233547009490e-04, + 2.403118182964367384e-04, + 2.402224292099810110e-04, + 2.401326562687217635e-04, + 2.400424996466672374e-04, + 2.399519595184304967e-04, + 2.398610360592357156e-04, + 2.397697294449211065e-04, + 2.396780398519376455e-04, + 2.395859674573397758e-04, + 2.394935124387915875e-04, + 2.394006749745709916e-04, + 2.393074552435581464e-04, + 2.392138534252525066e-04, + 2.391198696997489704e-04, + 2.390255042477608112e-04, + 2.389307572506011910e-04, + 2.388356288901904794e-04, + 2.387401193490634635e-04, + 2.386442288103571773e-04, + 2.385479574578124745e-04, + 2.384513054757755185e-04, + 2.383542730492028787e-04, + 2.382568603636485199e-04, + 2.381590676052813122e-04, + 2.380608949608699603e-04, + 2.379623426177830854e-04, + 2.378634107639954860e-04, + 2.377640995880853190e-04, + 2.376644092792405780e-04, + 2.375643400272415835e-04, + 2.374638920224725564e-04, + 2.373630654559273645e-04, + 2.372618605191940185e-04, + 2.371602774044599031e-04, + 2.370583163045222939e-04, + 2.369559774127750758e-04, + 2.368532609232089326e-04, + 2.367501670304143833e-04, + 2.366466959295829200e-04, + 2.365428478165130524e-04, + 2.364386228875899249e-04, + 2.363340213397995741e-04, + 2.362290433707330483e-04, + 2.361236891785681389e-04, + 2.360179589620899532e-04, + 2.359118529206744345e-04, + 2.358053712543000443e-04, + 2.356985141635314722e-04, + 2.355912818495398836e-04, + 2.354836745140799882e-04, + 2.353756923595182030e-04, + 2.352673355887979030e-04, + 2.351586044054695891e-04, + 2.350494990136698281e-04, + 2.349400196181313080e-04, + 2.348301664241779594e-04, + 2.347199396377366105e-04, + 2.346093394653137856e-04, + 2.344983661140103413e-04, + 2.343870197915254782e-04, + 2.342753007061391772e-04, + 2.341632090667371355e-04, + 2.340507450827800573e-04, + 2.339379089643307580e-04, + 2.338247009220311800e-04, + 2.337111211671200918e-04, + 2.335971699114232488e-04, + 2.334828473673581642e-04, + 2.333681537479214232e-04, + 2.332530892667082265e-04, + 2.331376541378934976e-04, + 2.330218485762370327e-04, + 2.329056727970967283e-04, + 2.327891270164108542e-04, + 2.326722114506985417e-04, + 2.325549263170675624e-04, + 2.324372718332105880e-04, + 2.323192482174128335e-04, + 2.322008556885329759e-04, + 2.320820944660137246e-04, + 2.319629647698900074e-04, + 2.318434668207720298e-04, + 2.317236008398498826e-04, + 2.316033670489096971e-04, + 2.314827656703094939e-04, + 2.313617969269881822e-04, + 2.312404610424652340e-04, + 2.311187582408424739e-04, + 2.309966887468112610e-04, + 2.308742527856250321e-04, + 2.307514505831319632e-04, + 2.306282823657490838e-04, + 2.305047483604740952e-04, + 2.303808487948847739e-04, + 2.302565838971430917e-04, + 2.301319538959763233e-04, + 2.300069590206930655e-04, + 2.298815995011826139e-04, + 2.297558755679004073e-04, + 2.296297874518936962e-04, + 2.295033353847689356e-04, + 2.293765195987179954e-04, + 2.292493403265011384e-04, + 2.291217978014489180e-04, + 2.289938922574793350e-04, + 2.288656239290753414e-04, + 2.287369930512897183e-04, + 2.286079998597475974e-04, + 2.284786445906545921e-04, + 2.283489274807737042e-04, + 2.282188487674581480e-04, + 2.280884086886120210e-04, + 2.279576074827244019e-04, + 2.278264453888431402e-04, + 2.276949226465892217e-04, + 2.275630394961620270e-04, + 2.274307961783165360e-04, + 2.272981929343759319e-04, + 2.271652300062416844e-04, + 2.270319076363724615e-04, + 2.268982260677920176e-04, + 2.267641855441036402e-04, + 2.266297863094685744e-04, + 2.264950286086096277e-04, + 2.263599126868153985e-04, + 2.262244387899422550e-04, + 2.260886071644172891e-04, + 2.259524180572195060e-04, + 2.258158717158919129e-04, + 2.256789683885502466e-04, + 2.255417083238592843e-04, + 2.254040917710566951e-04, + 2.252661189799367507e-04, + 2.251277902008583210e-04, + 2.249891056847318097e-04, + 2.248500656830395639e-04, + 2.247106704478092577e-04, + 2.245709202316473392e-04, + 2.244308152876989151e-04, + 2.242903558696820662e-04, + 2.241495422318636149e-04, + 2.240083746290650886e-04, + 2.238668533166795246e-04, + 2.237249785506484042e-04, + 2.235827505874641999e-04, + 2.234401696841759868e-04, + 2.232972360983978175e-04, + 2.231539500882815362e-04, + 2.230103119125560263e-04, + 2.228663218304809698e-04, + 2.227219801018856884e-04, + 2.225772869871422554e-04, + 2.224322427471733831e-04, + 2.222868476434672769e-04, + 2.221411019380544599e-04, + 2.219950058935114595e-04, + 2.218485597729767179e-04, + 2.217017638401287997e-04, + 2.215546183591943338e-04, + 2.214071235949627856e-04, + 2.212592798127635259e-04, + 2.211110872784712792e-04, + 2.209625462585071269e-04, + 2.208136570198440901e-04, + 2.206644198300095972e-04, + 2.205148349570632839e-04, + 2.203649026696121187e-04, + 2.202146232368182082e-04, + 2.200639969283800415e-04, + 2.199130240145348201e-04, + 2.197617047660815524e-04, + 2.196100394543524300e-04, + 2.194580283512189540e-04, + 2.193056717290949433e-04, + 2.191529698609403023e-04, + 2.189999230202642195e-04, + 2.188465314811019653e-04, + 2.186927955180321308e-04, + 2.185387154061828080e-04, + 2.183842914212090654e-04, + 2.182295238393100239e-04, + 2.180744129372353356e-04, + 2.179189589922548252e-04, + 2.177631622821778982e-04, + 2.176070230853634603e-04, + 2.174505416806885309e-04, + 2.172937183475897129e-04, + 2.171365533660171688e-04, + 2.169790470164705888e-04, + 2.168211995799755555e-04, + 2.166630113380883414e-04, + 2.165044825729140149e-04, + 2.163456135670829947e-04, + 2.161864046037529198e-04, + 2.160268559666140165e-04, + 2.158669679398995608e-04, + 2.157067408083541385e-04, + 2.155461748572789918e-04, + 2.153852703724801405e-04, + 2.152240276403119123e-04, + 2.150624469476419506e-04, + 2.149005285818778315e-04, + 2.147382728309517764e-04, + 2.145756799833266424e-04, + 2.144127503279813940e-04, + 2.142494841544361752e-04, + 2.140858817527264513e-04, + 2.139219434134102186e-04, + 2.137576694275856233e-04, + 2.135930600868681656e-04, + 2.134281156833913503e-04, + 2.132628365098128127e-04, + 2.130972228593157553e-04, + 2.129312750256185966e-04, + 2.127649933029412803e-04, + 2.125983779860305095e-04, + 2.124314293701638670e-04, + 2.122641477511281040e-04, + 2.120965334252276240e-04, + 2.119285866893019657e-04, + 2.117603078407000259e-04, + 2.115916971772854806e-04, + 2.114227549974383570e-04, + 2.112534816000613764e-04, + 2.110838772845832333e-04, + 2.109139423509281031e-04, + 2.107436770995530461e-04, + 2.105730818314199544e-04, + 2.104021568480009729e-04, + 2.102309024513016739e-04, + 2.100593189438279074e-04, + 2.098874066285979448e-04, + 2.097151658091400933e-04, + 2.095425967895075492e-04, + 2.093696998742433245e-04, + 2.091964753684311768e-04, + 2.090229235776362227e-04, + 2.088490448079525878e-04, + 2.086748393659737272e-04, + 2.085003075587968163e-04, + 2.083254496940462508e-04, + 2.081502660798429370e-04, + 2.079747570248109863e-04, + 2.077989228380814019e-04, + 2.076227638293019989e-04, + 2.074462803086065050e-04, + 2.072694725866624545e-04, + 2.070923409746130755e-04, + 2.069148857841253202e-04, + 2.067371073273539773e-04, + 2.065590059169641966e-04, + 2.063805818661353108e-04, + 2.062018354885277133e-04, + 2.060227670983091495e-04, + 2.058433770101574824e-04, + 2.056636655392402816e-04, + 2.054836330012195132e-04, + 2.053032797122764487e-04, + 2.051226059890784079e-04, + 2.049416121487870521e-04, + 2.047602985090620712e-04, + 2.045786653880616983e-04, + 2.043967131044542021e-04, + 2.042144419773833555e-04, + 2.040318523264906072e-04, + 2.038489444719246229e-04, + 2.036657187343094636e-04, + 2.034821754347880627e-04, + 2.032983148949698313e-04, + 2.031141374369766558e-04, + 2.029296433834049237e-04, + 2.027448330573585920e-04, + 2.025597067824126761e-04, + 2.023742648826605485e-04, + 2.021885076826555275e-04, + 2.020024355074611028e-04, + 2.018160486826172436e-04, + 2.016293475341459013e-04, + 2.014423323885785753e-04, + 2.012550035729199108e-04, + 2.010673614146576461e-04, + 2.008794062417638602e-04, + 2.006911383827081992e-04, + 2.005025581664239955e-04, + 2.003136659223589812e-04, + 2.001244619804121605e-04, + 1.999349466709878301e-04, + 1.997451203249601254e-04, + 1.995549832736795263e-04, + 1.993645358489982001e-04, + 1.991737783832373400e-04, + 1.989827112091886285e-04, + 1.987913346601395269e-04, + 1.985996490698447605e-04, + 1.984076547725317123e-04, + 1.982153521029260922e-04, + 1.980227413962189762e-04, + 1.978298229880724995e-04, + 1.976365972146254123e-04, + 1.974430644124958991e-04, + 1.972492249187880026e-04, + 1.970550790710592871e-04, + 1.968606272073461819e-04, + 1.966658696661685894e-04, + 1.964708067865076312e-04, + 1.962754389078113680e-04, + 1.960797663700189497e-04, + 1.958837895135291196e-04, + 1.956875086792048764e-04, + 1.954909242083795184e-04, + 1.952940364428581348e-04, + 1.950968457249270104e-04, + 1.948993523973205583e-04, + 1.947015568032410516e-04, + 1.945034592863731252e-04, + 1.943050601908430906e-04, + 1.941063598612705716e-04, + 1.939073586427240243e-04, + 1.937080568807345883e-04, + 1.935084549212946769e-04, + 1.933085531108733729e-04, + 1.931083517963802705e-04, + 1.929078513252160260e-04, + 1.927070520452126186e-04, + 1.925059543046841993e-04, + 1.923045584523916916e-04, + 1.921028648375501643e-04, + 1.919008738098560178e-04, + 1.916985857194492807e-04, + 1.914960009169240185e-04, + 1.912931197533313964e-04, + 1.910899425801900874e-04, + 1.908864697494543159e-04, + 1.906827016135623210e-04, + 1.904786385253781351e-04, + 1.902742808382395059e-04, + 1.900696289059200300e-04, + 1.898646830826595383e-04, + 1.896594437231453119e-04, + 1.894539111825208641e-04, + 1.892480858163652865e-04, + 1.890419679807271030e-04, + 1.888355580320913104e-04, + 1.886288563273854225e-04, + 1.884218632240097194e-04, + 1.882145790797966442e-04, + 1.880070042530227023e-04, + 1.877991391024101144e-04, + 1.875909839871312619e-04, + 1.873825392668171169e-04, + 1.871738053015217882e-04, + 1.869647824517467808e-04, + 1.867554710784505366e-04, + 1.865458715430112736e-04, + 1.863359842072813584e-04, + 1.861258094335236366e-04, + 1.859153475844631221e-04, + 1.857045990232477489e-04, + 1.854935641134830386e-04, + 1.852822432191901687e-04, + 1.850706367048618635e-04, + 1.848587449353945227e-04, + 1.846465682761463077e-04, + 1.844341070928975685e-04, + 1.842213617518598961e-04, + 1.840083326197027675e-04, + 1.837950200635162488e-04, + 1.835814244508211053e-04, + 1.833675461495694792e-04, + 1.831533855281612341e-04, + 1.829389429554055199e-04, + 1.827242188005739258e-04, + 1.825092134333375967e-04, + 1.822939272238207654e-04, + 1.820783605425628602e-04, + 1.818625137605278555e-04, + 1.816463872491311607e-04, + 1.814299813802017810e-04, + 1.812132965259913710e-04, + 1.809963330591771613e-04, + 1.807790913528777076e-04, + 1.805615717806105243e-04, + 1.803437747163490602e-04, + 1.801257005344734485e-04, + 1.799073496097844112e-04, + 1.796887223175030969e-04, + 1.794698190332799984e-04, + 1.792506401331988284e-04, + 1.790311859937406870e-04, + 1.788114569918114103e-04, + 1.785914535047507864e-04, + 1.783711759102930903e-04, + 1.781506245866244927e-04, + 1.779297999123140501e-04, + 1.777087022663724957e-04, + 1.774873320282117722e-04, + 1.772656895776590982e-04, + 1.770437752949617671e-04, + 1.768215895607953315e-04, + 1.765991327562249527e-04, + 1.763764052627327485e-04, + 1.761534074622279585e-04, + 1.759301397370080207e-04, + 1.757066024698135951e-04, + 1.754827960437626438e-04, + 1.752587208424068914e-04, + 1.750343772496869657e-04, + 1.748097656499715102e-04, + 1.745848864280128137e-04, + 1.743597399690041368e-04, + 1.741343266585096189e-04, + 1.739086468825257247e-04, + 1.736827010274373344e-04, + 1.734564894800295616e-04, + 1.732300126275151291e-04, + 1.730032708574960425e-04, + 1.727762645579709357e-04, + 1.725489941173403562e-04, + 1.723214599244203993e-04, + 1.720936623684030261e-04, + 1.718656018389148269e-04, + 1.716372787259462236e-04, + 1.714086934199113982e-04, + 1.711798463116066056e-04, + 1.709507377922206905e-04, + 1.707213682533637370e-04, + 1.704917380870264385e-04, + 1.702618476855845427e-04, + 1.700316974418279628e-04, + 1.698012877489258113e-04, + 1.695706190004349389e-04, + 1.693396915903293428e-04, + 1.691085059129605666e-04, + 1.688770623630655066e-04, + 1.686453613357709379e-04, + 1.684134032265993696e-04, + 1.681811884314769322e-04, + 1.679487173466923675e-04, + 1.677159903689286603e-04, + 1.674830078952694353e-04, + 1.672497703231600071e-04, + 1.670162780504666044e-04, + 1.667825314754050573e-04, + 1.665485309966011323e-04, + 1.663142770130481409e-04, + 1.660797699241233372e-04, + 1.658450101295908463e-04, + 1.656099980296111228e-04, + 1.653747340247015683e-04, + 1.651392185157631476e-04, + 1.649034519040928036e-04, + 1.646674345913404680e-04, + 1.644311669795650880e-04, + 1.641946494711871379e-04, + 1.639578824690003287e-04, + 1.637208663761723396e-04, + 1.634836015962641174e-04, + 1.632460885331831737e-04, + 1.630083275912488818e-04, + 1.627703191751177204e-04, + 1.625320636898436907e-04, + 1.622935615408394483e-04, + 1.620548131338810191e-04, + 1.618158188751430088e-04, + 1.615765791711539607e-04, + 1.613370944288058701e-04, + 1.610973650553604991e-04, + 1.608573914584614933e-04, + 1.606171740460957836e-04, + 1.603767132266515369e-04, + 1.601360094088472225e-04, + 1.598950630017919206e-04, + 1.596538744149386202e-04, + 1.594124440581197542e-04, + 1.591707723415249998e-04, + 1.589288596757129884e-04, + 1.586867064715873174e-04, + 1.584443131404334132e-04, + 1.582016800938706362e-04, + 1.579588077439163577e-04, + 1.577156965029077884e-04, + 1.574723467835676815e-04, + 1.572287589989608287e-04, + 1.569849335625083449e-04, + 1.567408708879928722e-04, + 1.564965713895681749e-04, + 1.562520354817163953e-04, + 1.560072635792790344e-04, + 1.557622560974666556e-04, + 1.555170134518155979e-04, + 1.552715360582525674e-04, + 1.550258243330162493e-04, + 1.547798786927243118e-04, + 1.545336995543217435e-04, + 1.542872873351242762e-04, + 1.540406424527694868e-04, + 1.537937653252795191e-04, + 1.535466563709872760e-04, + 1.532993160085975961e-04, + 1.530517446571445631e-04, + 1.528039427360027816e-04, + 1.525559106649167858e-04, + 1.523076488639596231e-04, + 1.520591577535410673e-04, + 1.518104377544121988e-04, + 1.515614892876827522e-04, + 1.513123127747752542e-04, + 1.510629086374911333e-04, + 1.508132772979315999e-04, + 1.505634191785642974e-04, + 1.503133347021781458e-04, + 1.500630242918935323e-04, + 1.498124883711952177e-04, + 1.495617273638857154e-04, + 1.493107416940981660e-04, + 1.490595317862997257e-04, + 1.488080980652967437e-04, + 1.485564409562437874e-04, + 1.483045608845947455e-04, + 1.480524582761636246e-04, + 1.478001335570771691e-04, + 1.475475871537926969e-04, + 1.472948194931020022e-04, + 1.470418310021416011e-04, + 1.467886221083487678e-04, + 1.465351932394925961e-04, + 1.462815448236853572e-04, + 1.460276772893381826e-04, + 1.457735910652239477e-04, + 1.455192865804027060e-04, + 1.452647642642843290e-04, + 1.450100245465855173e-04, + 1.447550678573447896e-04, + 1.444998946269264949e-04, + 1.442445052860344998e-04, + 1.439889002656620715e-04, + 1.437330799971291205e-04, + 1.434770449120890035e-04, + 1.432207954424859144e-04, + 1.429643320206201262e-04, + 1.427076550790677060e-04, + 1.424507650507496055e-04, + 1.421936623688782641e-04, + 1.419363474670027117e-04, + 1.416788207789577471e-04, + 1.414210827389285829e-04, + 1.411631337813746266e-04, + 1.409049743410932044e-04, + 1.406466048531757323e-04, + 1.403880257530173926e-04, + 1.401292374763508529e-04, + 1.398702404591992653e-04, + 1.396110351378879492e-04, + 1.393516219490489177e-04, + 1.390920013296377100e-04, + 1.388321737168850896e-04, + 1.385721395483685212e-04, + 1.383118992619266805e-04, + 1.380514532957319881e-04, + 1.377908020882351791e-04, + 1.375299460782060694e-04, + 1.372688857047092150e-04, + 1.370076214071153781e-04, + 1.367461536250772674e-04, + 1.364844827985690575e-04, + 1.362226093678346999e-04, + 1.359605337734545738e-04, + 1.356982564562661769e-04, + 1.354357778574301807e-04, + 1.351730984183861946e-04, + 1.349102185808673487e-04, + 1.346471387869059588e-04, + 1.343838594788446120e-04, + 1.341203810992884623e-04, + 1.338567040911406837e-04, + 1.335928288976110355e-04, + 1.333287559621712743e-04, + 1.330644857286212093e-04, + 1.328000186410096097e-04, + 1.325353551437015605e-04, + 1.322704956813311103e-04, + 1.320054406988182118e-04, + 1.317401906413746848e-04, + 1.314747459545134321e-04, + 1.312091070839962624e-04, + 1.309432744758978577e-04, + 1.306772485765578251e-04, + 1.304110298325897495e-04, + 1.301446186909194116e-04, + 1.298780155987335600e-04, + 1.296112210034929750e-04, + 1.293442353529375378e-04, + 1.290770590951008671e-04, + 1.288096926782659481e-04, + 1.285421365510330577e-04, + 1.282743911622355763e-04, + 1.280064569610123582e-04, + 1.277383343967582110e-04, + 1.274700239191352519e-04, + 1.272015259781077655e-04, + 1.269328410238937941e-04, + 1.266639695069775513e-04, + 1.263949118781122684e-04, + 1.261256685883271878e-04, + 1.258562400889388108e-04, + 1.255866268315002120e-04, + 1.253168292678396635e-04, + 1.250468478500682784e-04, + 1.247766830305403025e-04, + 1.245063352618864258e-04, + 1.242358049970193395e-04, + 1.239650926890850820e-04, + 1.236941987914993871e-04, + 1.234231237579571164e-04, + 1.231518680423845003e-04, + 1.228804320990107765e-04, + 1.226088163822821318e-04, + 1.223370213469345056e-04, + 1.220650474479435278e-04, + 1.217928951405423802e-04, + 1.215205648802265945e-04, + 1.212480571227662630e-04, + 1.209753723241559892e-04, + 1.207025109406518050e-04, + 1.204294734287802775e-04, + 1.201562602452911302e-04, + 1.198828718472284740e-04, + 1.196093086918460779e-04, + 1.193355712366772587e-04, + 1.190616599394819450e-04, + 1.187875752582933519e-04, + 1.185133176513620504e-04, + 1.182388875772293399e-04, + 1.179642854946405804e-04, + 1.176895118626170207e-04, + 1.174145671404075241e-04, + 1.171394517874992347e-04, + 1.168641662636530167e-04, + 1.165887110288552623e-04, + 1.163130865433274590e-04, + 1.160372932675335491e-04, + 1.157613316621833993e-04, + 1.154852021882454854e-04, + 1.152089053068968972e-04, + 1.149324414795586296e-04, + 1.146558111679084704e-04, + 1.143790148338419833e-04, + 1.141020529394852468e-04, + 1.138249259472299012e-04, + 1.135476343196831396e-04, + 1.132701785196808542e-04, + 1.129925590102910649e-04, + 1.127147762548209257e-04, + 1.124368307168268217e-04, + 1.121587228600592103e-04, + 1.118804531485285947e-04, + 1.116020220464571957e-04, + 1.113234300182946047e-04, + 1.110446775287247365e-04, + 1.107657650426762102e-04, + 1.104866930252738720e-04, + 1.102074619418732458e-04, + 1.099280722580725403e-04, + 1.096485244396631692e-04, + 1.093688189527031651e-04, + 1.090889562634291828e-04, + 1.088089368383294799e-04, + 1.085287611440951275e-04, + 1.082484296476375878e-04, + 1.079679428160916418e-04, + 1.076873011168308385e-04, + 1.074065050174146681e-04, + 1.071255549856249361e-04, + 1.068444514894785572e-04, + 1.065631949971767472e-04, + 1.062817859771783688e-04, + 1.060002248981126128e-04, + 1.057185122288518026e-04, + 1.054366484384565195e-04, + 1.051546339962228200e-04, + 1.048724693716264266e-04, + 1.045901550343962636e-04, + 1.043076914544271245e-04, + 1.040250791018522869e-04, + 1.037423184469939234e-04, + 1.034594099603753395e-04, + 1.031763541127554516e-04, + 1.028931513750811090e-04, + 1.026098022184959572e-04, + 1.023263071143479052e-04, + 1.020426665341933814e-04, + 1.017588809498095985e-04, + 1.014749508331432975e-04, + 1.011908766563488171e-04, + 1.009066588917977838e-04, + 1.006222980120363670e-04, + 1.003377944898267227e-04, + 1.000531487981225990e-04, + 9.976836141008044916e-05, + 9.948343279903357336e-05, + 9.919836343853442970e-05, + 9.891315380229950252e-05, + 9.862780436428125275e-05, + 9.834231559858188320e-05, + 9.805668797952562772e-05, + 9.777092198160990794e-05, + 9.748501807952142004e-05, + 9.719897674814289754e-05, + 9.691279846256465799e-05, + 9.662648369803308987e-05, + 9.634003292998798975e-05, + 9.605344663407421751e-05, + 9.576672528609119959e-05, + 9.547986936206603133e-05, + 9.519287933816614449e-05, + 9.490575569077391394e-05, + 9.461849889643439903e-05, + 9.433110943187460185e-05, + 9.404358777400854930e-05, + 9.375593439994901615e-05, + 9.346814978695006223e-05, + 9.318023441247525590e-05, + 9.289218875414794981e-05, + 9.260401328976041531e-05, + 9.231570849731359201e-05, + 9.202727485496443622e-05, + 9.173871284103753544e-05, + 9.145002293403183046e-05, + 9.116120561262426093e-05, + 9.087226135568440214e-05, + 9.058319064222005162e-05, + 9.029399395141620615e-05, + 9.000467176264673056e-05, + 8.971522455543464879e-05, + 8.942565280946569641e-05, + 8.913595700462407221e-05, + 8.884613762094153489e-05, + 8.855619513860878719e-05, + 8.826613003798206242e-05, + 8.797594279958739349e-05, + 8.768563390413400282e-05, + 8.739520383246102738e-05, + 8.710465306557612980e-05, + 8.681398208466685538e-05, + 8.652319137105540737e-05, + 8.623228140623602478e-05, + 8.594125267188087774e-05, + 8.565010564978801227e-05, + 8.535884082191782011e-05, + 8.506745867040760767e-05, + 8.477595967751673544e-05, + 8.448434432570481605e-05, + 8.419261309753976036e-05, + 8.390076647577490493e-05, + 8.360880494329630619e-05, + 8.331672898314144299e-05, + 8.302453907850484082e-05, + 8.273223571275035049e-05, + 8.243981936935807636e-05, + 8.214729053196328568e-05, + 8.185464968436756232e-05, + 8.156189731048692768e-05, + 8.126903389442861577e-05, + 8.097605992039982404e-05, + 8.068297587278348555e-05, + 8.038978223608095536e-05, + 8.009647949495490426e-05, + 7.980306813420367737e-05, + 7.950954863877315263e-05, + 7.921592149372974417e-05, + 7.892218718430513917e-05, + 7.862834619585092402e-05, + 7.833439901384925018e-05, + 7.804034612395175697e-05, + 7.774618801192713694e-05, + 7.745192516367299424e-05, + 7.715755806522121146e-05, + 7.686308720274408895e-05, + 7.656851306256694863e-05, + 7.627383613111433046e-05, + 7.597905689494822415e-05, + 7.568417584078183848e-05, + 7.538919345543798156e-05, + 7.509411022586177302e-05, + 7.479892663915985152e-05, + 7.450364318254590714e-05, + 7.420826034334776933e-05, + 7.391277860904468995e-05, + 7.361719846720894537e-05, + 7.332152040558171714e-05, + 7.302574491198321157e-05, + 7.272987247438738841e-05, + 7.243390358087151832e-05, + 7.213783871963312352e-05, + 7.184167837899709289e-05, + 7.154542304742706610e-05, + 7.124907321347210437e-05, + 7.095262936580630454e-05, + 7.065609199323966822e-05, + 7.035946158466635817e-05, + 7.006273862914113464e-05, + 6.976592361578768601e-05, + 6.946901703387633900e-05, + 6.917201937277045844e-05, + 6.887493112193909177e-05, + 6.857775277099566148e-05, + 6.828048480964395834e-05, + 6.798312772769132795e-05, + 6.768568201505406471e-05, + 6.738814816177604648e-05, + 6.709052665797567649e-05, + 6.679281799391731866e-05, + 6.649502265995153101e-05, + 6.619714114652668015e-05, + 6.589917394419582593e-05, + 6.560112154362170882e-05, + 6.530298443558882522e-05, + 6.500476311095139924e-05, + 6.470645806067017787e-05, + 6.440806977582618680e-05, + 6.410959874757984238e-05, + 6.381104546718347425e-05, + 6.351241042601990928e-05, + 6.321369411554927801e-05, + 6.291489702732094077e-05, + 6.261601965297939666e-05, + 6.231706248427053123e-05, + 6.201802601305325810e-05, + 6.171891073124681319e-05, + 6.141971713086814616e-05, + 6.112044570404601498e-05, + 6.082109694297296263e-05, + 6.052167133995086707e-05, + 6.022216938736349743e-05, + 5.992259157768971414e-05, + 5.962293840347550328e-05, + 5.932321035737916752e-05, + 5.902340793211247424e-05, + 5.872353162051732219e-05, + 5.842358191547373337e-05, + 5.812355930997786140e-05, + 5.782346429708791691e-05, + 5.752329736994416431e-05, + 5.722305902177403109e-05, + 5.692274974590436608e-05, + 5.662237003570845582e-05, + 5.632192038464416145e-05, + 5.602140128626705099e-05, + 5.572081323417559304e-05, + 5.542015672209098107e-05, + 5.511943224376302474e-05, + 5.481864029304879516e-05, + 5.451778136385227553e-05, + 5.421685595016980275e-05, + 5.391586454606333504e-05, + 5.361480764567202583e-05, + 5.331368574318531519e-05, + 5.301249933288895423e-05, + 5.271124890911700882e-05, + 5.240993496626453120e-05, + 5.210855799882728923e-05, + 5.180711850134676340e-05, + 5.150561696842341486e-05, + 5.120405389472190304e-05, + 5.090242977497750281e-05, + 5.060074510400837633e-05, + 5.029900037666128833e-05, + 4.999719608785128120e-05, + 4.969533273257354018e-05, + 4.939341080586299331e-05, + 4.909143080280683395e-05, + 4.878939321858361303e-05, + 4.848729854840916451e-05, + 4.818514728754897877e-05, + 4.788293993132417936e-05, + 4.758067697511739115e-05, + 4.727835891438547981e-05, + 4.697598624459800966e-05, + 4.667355946131062397e-05, + 4.637107906011046202e-05, + 4.606854553663528181e-05, + 4.576595938657945702e-05, + 4.546332110570698744e-05, + 4.516063118979631984e-05, + 4.485789013468014500e-05, + 4.455509843625806929e-05, + 4.425225659044211318e-05, + 4.394936509323619687e-05, + 4.364642444064173330e-05, + 4.334343512873711378e-05, + 4.304039765362304386e-05, + 4.273731251143569605e-05, + 4.243418019838551749e-05, + 4.213100121070344672e-05, + 4.182777604465269088e-05, + 4.152450519653532574e-05, + 4.122118916271139800e-05, + 4.091782843954419342e-05, + 4.061442352348031192e-05, + 4.031097491095469824e-05, + 4.000748309847033761e-05, + 3.970394858253731675e-05, + 3.940037185971190941e-05, + 3.909675342660255980e-05, + 3.879309377981600448e-05, + 3.848939341599555154e-05, + 3.818565283183450432e-05, + 3.788187252403523282e-05, + 3.757805298932118121e-05, + 3.727419472447670548e-05, + 3.697029822629257199e-05, + 3.666636399157833766e-05, + 3.636239251716837410e-05, + 3.605838429992803398e-05, + 3.575433983676588222e-05, + 3.545025962457932323e-05, + 3.514614416029394390e-05, + 3.484199394087656468e-05, + 3.453780946329355200e-05, + 3.423359122452393038e-05, + 3.392933972159852885e-05, + 3.362505545154584541e-05, + 3.332073891139722410e-05, + 3.301639059822720086e-05, + 3.271201100909164301e-05, + 3.240760064110793280e-05, + 3.210315999135969993e-05, + 3.179868955697712023e-05, + 3.149418983508190599e-05, + 3.118966132280012662e-05, + 3.088510451730172107e-05, + 3.058051991574627418e-05, + 3.027590801529469891e-05, + 2.997126931311614817e-05, + 2.966660430640688330e-05, + 2.936191349233567435e-05, + 2.905719736812405814e-05, + 2.875245643095065740e-05, + 2.844769117803187252e-05, + 2.814290210656687866e-05, + 2.783808971374990090e-05, + 2.753325449681077357e-05, + 2.722839695295935122e-05, + 2.692351757939855287e-05, + 2.661861687333011509e-05, + 2.631369533197445662e-05, + 2.600875345251517734e-05, + 2.570379173217320759e-05, + 2.539881066814485955e-05, + 2.509381075761453272e-05, + 2.478879249776063637e-05, + 2.448375638576182035e-05, + 2.417870291880943321e-05, + 2.387363259405249219e-05, + 2.356854590863784952e-05, + 2.326344335972257263e-05, + 2.295832544443280549e-05, + 2.265319265987615220e-05, + 2.234804550318193479e-05, + 2.204288447144581758e-05, + 2.173771006174276003e-05, + 2.143252277113283754e-05, + 2.112732309666745187e-05, + 2.082211153540184693e-05, + 2.051688858434011603e-05, + 2.021165474047513773e-05, + 1.990641050080135932e-05, + 1.960115636226630921e-05, + 1.929589282181755312e-05, + 1.899062037637467076e-05, + 1.868533952284177506e-05, + 1.838005075807989204e-05, + 1.807475457895353751e-05, + 1.776945148226869394e-05, + 1.746414196485366477e-05, + 1.715882652346317002e-05, + 1.685350565485886520e-05, + 1.654817985575445362e-05, + 1.624284962282820547e-05, + 1.593751545276323261e-05, + 1.563217784219188251e-05, + 1.532683728770908071e-05, + 1.502149428587771969e-05, + 1.471614933324880972e-05, + 1.441080292630586103e-05, + 1.410545556154588217e-05, + 1.380010773538336713e-05, + 1.349475994423095827e-05, + 1.318941268443764683e-05, + 1.288406645233540375e-05, + 1.257872174421121576e-05, + 1.227337905631992131e-05, + 1.196803888485615341e-05, + 1.166270172600119756e-05, + 1.135736807587453294e-05, + 1.105203843054665144e-05, + 1.074671328607904943e-05, + 1.044139313846898773e-05, + 1.013607848366241556e-05, + 9.830769817559772796e-06, + 9.525467636022152900e-06, + 9.220172434884044049e-06, + 8.914884709898065294e-06, + 8.609604956775082044e-06, + 8.304333671196898007e-06, + 7.999071348774706530e-06, + 7.693818485061870634e-06, + 7.388575575593930919e-06, + 7.083343115833434073e-06, + 6.778121601182612110e-06, + 6.472911526989532676e-06, + 6.167713388554008793e-06, + 5.862527681140420406e-06, + 5.557354899915709869e-06, + 5.252195540023363500e-06, + 4.947050096528255335e-06, + 4.641919064429386508e-06, + 4.336802938699952445e-06, + 4.031702214232088366e-06, + 3.726617385849679387e-06, + 3.421548948314377421e-06, + 3.116497396345182461e-06, + 2.811463224563266003e-06, + 2.506446927572757668e-06, + 2.201448999864722573e-06, + 1.896469935897999836e-06, + 1.591510230043991267e-06, + 1.286570376599444793e-06, + 9.816508698264824800e-07, + 6.767522038973777989e-07, + 3.718748729073760495e-07, + 6.701937088068070071e-08, +-2.378138082099356928e-07, +-5.426241704983303512e-07, +-8.474112221441950525e-07, +-1.152174469429043984e-06, +-1.456913418675415759e-06, +-1.761627576308873821e-06, +-2.066316448818001709e-06, +-2.370979542748401412e-06, +-2.675616364757880948e-06, +-2.980226421576460858e-06, +-3.284809219993575540e-06, +-3.589364266899640964e-06, +-3.893891069273299206e-06, +-4.198389134141363107e-06, +-4.502857968634068227e-06, +-4.807297079972205576e-06, +-5.111705975461149177e-06, +-5.416084162484844676e-06, +-5.720431148493058958e-06, +-6.024746441056462694e-06, +-6.329029547826704600e-06, +-6.633279976523613615e-06, +-6.937497234990322112e-06, +-7.241680831112565678e-06, +-7.545830272914558777e-06, +-7.849945068478275897e-06, +-8.154024726005404386e-06, +-8.458068753763773006e-06, +-8.762076660149267502e-06, +-9.066047953605138008e-06, +-9.369982142717859456e-06, +-9.673878736136463553e-06, +-9.977737242627650126e-06, +-1.028155717106287496e-05, +-1.058533803037865443e-05, +-1.088907932963142615e-05, +-1.119278057798487566e-05, +-1.149644128470397162e-05, +-1.180006095913525363e-05, +-1.210363911076209273e-05, +-1.240717524912398263e-05, +-1.271066888391221383e-05, +-1.301411952488940549e-05, +-1.331752668194452187e-05, +-1.362088986508005846e-05, +-1.392420858437208573e-05, +-1.422748235002548751e-05, +-1.453071067236775399e-05, +-1.483389306180917110e-05, +-1.513702902889109807e-05, +-1.544011808427319581e-05, +-1.574315973869351982e-05, +-1.604615350302345200e-05, +-1.634909888825511370e-05, +-1.665199540549515528e-05, +-1.695484256595898952e-05, +-1.725763988095787609e-05, +-1.756038686195400572e-05, +-1.786308302052047966e-05, +-1.816572786832871937e-05, +-1.846832091718986606e-05, +-1.877086167904191600e-05, +-1.907334966590997432e-05, +-1.937578438996115631e-05, +-1.967816536349183110e-05, +-1.998049209892178730e-05, +-2.028276410878791751e-05, +-2.058498090573181437e-05, +-2.088714200255449571e-05, +-2.118924691217653972e-05, +-2.149129514762561328e-05, +-2.179328622209097344e-05, +-2.209521964885037527e-05, +-2.239709494133112932e-05, +-2.269891161309773166e-05, +-2.300066917784577528e-05, +-2.330236714938252603e-05, +-2.360400504168170529e-05, +-2.390558236880312008e-05, +-2.420709864498819482e-05, +-2.450855338457955069e-05, +-2.480994610207586280e-05, +-2.511127631211914119e-05, +-2.541254352945508289e-05, +-2.571374726898754970e-05, +-2.601488704576641157e-05, +-2.631596237498082117e-05, +-2.661697277194053171e-05, +-2.691791775213005285e-05, +-2.721879683112877888e-05, +-2.751960952470609021e-05, +-2.782035534874130871e-05, +-2.812103381928485014e-05, +-2.842164445251247083e-05, +-2.872218676475213551e-05, +-2.902266027247205047e-05, +-2.932306449230795157e-05, +-2.962339894101691722e-05, +-2.992366313552528335e-05, +-3.022385659291571767e-05, +-3.052397883038798510e-05, +-3.082402936531347979e-05, +-3.112400771522205880e-05, +-3.142391339779686504e-05, +-3.172374593086762557e-05, +-3.202350483239858306e-05, +-3.232318962054278041e-05, +-3.262279981360229769e-05, +-3.292233493001598706e-05, +-3.322179448841377776e-05, +-3.352117800753681785e-05, +-3.382048500633245709e-05, +-3.411971500387412439e-05, +-3.441886751941614780e-05, +-3.471794207237404914e-05, +-3.501693818231898066e-05, +-3.531585536896474851e-05, +-3.561469315222911761e-05, +-3.591345105216075671e-05, +-3.621212858899388904e-05, +-3.651072528313484809e-05, +-3.680924065512394090e-05, +-3.710767422568860777e-05, +-3.740602551573125217e-05, +-3.770429404632378575e-05, +-3.800247933868732675e-05, +-3.830058091424741972e-05, +-3.859859829455396718e-05, +-3.889653100137567044e-05, +-3.919437855662108612e-05, +-3.949214048239220605e-05, +-3.978981630097195508e-05, +-4.008740553478528854e-05, +-4.038490770645313129e-05, +-4.068232233877982134e-05, +-4.097964895474690954e-05, +-4.127688707749440966e-05, +-4.157403623037443251e-05, +-4.187109593687260840e-05, +-4.216806572070121335e-05, +-4.246494510572095741e-05, +-4.276173361600090042e-05, +-4.305843077577969176e-05, +-4.335503610945950559e-05, +-4.365154914166036621e-05, +-4.394796939718035775e-05, +-4.424429640098390809e-05, +-4.454052967825465723e-05, +-4.483666875431774031e-05, +-4.513271315473243273e-05, +-4.542866240521392494e-05, +-4.572451603168684812e-05, +-4.602027356026630069e-05, +-4.631593451725188516e-05, +-4.661149842911496878e-05, +-4.690696482255313758e-05, +-4.720233322445053489e-05, +-4.749760316186556924e-05, +-4.779277416208467039e-05, +-4.808784575254379995e-05, +-4.838281746092120480e-05, +-4.867768881505997122e-05, +-4.897245934302702582e-05, +-4.926712857306163589e-05, +-4.956169603363571143e-05, +-4.985616125337495651e-05, +-5.015052376115232749e-05, +-5.044478308600929966e-05, +-5.073893875721005695e-05, +-5.103299030422808855e-05, +-5.132693725670799107e-05, +-5.162077914451910268e-05, +-5.191451549774245202e-05, +-5.220814584666552693e-05, +-5.250166972176252843e-05, +-5.279508665374908901e-05, +-5.308839617350272612e-05, +-5.338159781215602253e-05, +-5.367469110101886196e-05, +-5.396767557163175148e-05, +-5.426055075575280431e-05, +-5.455331618531951491e-05, +-5.484597139250226439e-05, +-5.513851590969804566e-05, +-5.543094926949225206e-05, +-5.572327100470461371e-05, +-5.601548064837784722e-05, +-5.630757773373833982e-05, +-5.659956179424933628e-05, +-5.689143236359902619e-05, +-5.718318897569439792e-05, +-5.747483116465564143e-05, +-5.776635846480332757e-05, +-5.805777041071212352e-05, +-5.834906653717189024e-05, +-5.864024637917568855e-05, +-5.893130947197211213e-05, +-5.922225535098839732e-05, +-5.951308355192237698e-05, +-5.980379361066464835e-05, +-6.009438506335146177e-05, +-6.038485744634646544e-05, +-6.067521029623443735e-05, +-6.096544314980870859e-05, +-6.125555554412491261e-05, +-6.154554701646204205e-05, +-6.183541710430986527e-05, +-6.212516534542258072e-05, +-6.241479127774746973e-05, +-6.270429443948394483e-05, +-6.299367436907156936e-05, +-6.328293060518455507e-05, +-6.357206268671253117e-05, +-6.386107015281361596e-05, +-6.414995254283689641e-05, +-6.443870939641412456e-05, +-6.472734025338286110e-05, +-6.501584465383849001e-05, +-6.530422213812294287e-05, +-6.559247224678523382e-05, +-6.588059452063584596e-05, +-6.616858850073213520e-05, +-6.645645372837486083e-05, +-6.674418974508792451e-05, +-6.703179609267182143e-05, +-6.731927231312601144e-05, +-6.760661794874075093e-05, +-6.789383254202012810e-05, +-6.818091563574069113e-05, +-6.846786677290683332e-05, +-6.875468549677818267e-05, +-6.904137135085651022e-05, +-6.932792387891278084e-05, +-6.961434262494229437e-05, +-6.990062713322403218e-05, +-7.018677694824347548e-05, +-7.047279161478385448e-05, +-7.075867067784934628e-05, +-7.104441368271765861e-05, +-7.133002017492115119e-05, +-7.161548970024104880e-05, +-7.190082180469582675e-05, +-7.218601603459241236e-05, +-7.247107193648957954e-05, +-7.275598905718450471e-05, +-7.304076694376597403e-05, +-7.332540514353720173e-05, +-7.360990320410748587e-05, +-7.389426067331437617e-05, +-7.417847709928358975e-05, +-7.446255203037780964e-05, +-7.474648501525451346e-05, +-7.503027560279101438e-05, +-7.531392334217390776e-05, +-7.559742778282373273e-05, +-7.588078847444561790e-05, +-7.616400496701857491e-05, +-7.644707681075710412e-05, +-7.673000355616348025e-05, +-7.701278475401478261e-05, +-7.729541995535843632e-05, +-7.757790871149285931e-05, +-7.786025057401972085e-05, +-7.814244509476788478e-05, +-7.842449182588339827e-05, +-7.870639031975374680e-05, +-7.898814012905959762e-05, +-7.926974080676277875e-05, +-7.955119190606811501e-05, +-7.983249298047656746e-05, +-8.011364358377162675e-05, +-8.039464327001469160e-05, +-8.067549159353907867e-05, +-8.095618810893759484e-05, +-8.123673237112081309e-05, +-8.151712393524856450e-05, +-8.179736235678023164e-05, +-8.207744719145677794e-05, +-8.235737799529589589e-05, +-8.263715432457933541e-05, +-8.291677573590379359e-05, +-8.319624178614494633e-05, +-8.347555203244388217e-05, +-8.375470603226037737e-05, +-8.403370334329564643e-05, +-8.431254352358284591e-05, +-8.459122613141215605e-05, +-8.486975072538047789e-05, +-8.514811686437475009e-05, +-8.542632410756574189e-05, +-8.570437201439603202e-05, +-8.598226014463123724e-05, +-8.625998805832293264e-05, +-8.653755531579677962e-05, +-8.681496147770341562e-05, +-8.709220610494406432e-05, +-8.736928875875877611e-05, +-8.764620900065146910e-05, +-8.792296639244836761e-05, +-8.819956049624699042e-05, +-8.847599087447449446e-05, +-8.875225708981203810e-05, +-8.902835870528459379e-05, +-8.930429528418520294e-05, +-8.958006639012575730e-05, +-8.985567158702612977e-05, +-9.013111043907750131e-05, +-9.040638251079070279e-05, +-9.068148736698790726e-05, +-9.095642457279399704e-05, +-9.123119369362017869e-05, +-9.150579429521435773e-05, +-9.178022594358666757e-05, +-9.205448820509723560e-05, +-9.232858064638286406e-05, +-9.260250283440690333e-05, +-9.287625433644781361e-05, +-9.314983472006260019e-05, +-9.342324355313604976e-05, +-9.369648040387745075e-05, +-9.396954484078177885e-05, +-9.424243643268734945e-05, +-9.451515474870243077e-05, +-9.478769935829157338e-05, +-9.506006983120261636e-05, +-9.533226573751715685e-05, +-9.560428664763221350e-05, +-9.587613213225419564e-05, +-9.614780176238910472e-05, +-9.641929510939022574e-05, +-9.669061174492341916e-05, +-9.696175124095489655e-05, +-9.723271316980101257e-05, +-9.750349710405582673e-05, +-9.777410261667678244e-05, +-9.804452928091245850e-05, +-9.831477667035232041e-05, +-9.858484435890790950e-05, +-9.885473192080940056e-05, +-9.912443893059225261e-05, +-9.939396496314728546e-05, +-9.966330959368536189e-05, +-9.993247239772467530e-05, +-1.002014529511412736e-04, +-1.004702508301019741e-04, +-1.007388656111203492e-04, +-1.010072968710452472e-04, +-1.012755441870542871e-04, +-1.015436071366376499e-04, +-1.018114852976469083e-04, +-1.020791782482225883e-04, +-1.023466855668798216e-04, +-1.026140068324361100e-04, +-1.028811416240619310e-04, +-1.031480895212661146e-04, +-1.034148501038639268e-04, +-1.036814229520229453e-04, +-1.039478076462540195e-04, +-1.042140037674037901e-04, +-1.044800108966515171e-04, +-1.047458286154959211e-04, +-1.050114565058047304e-04, +-1.052768941497794726e-04, +-1.055421411299431000e-04, +-1.058071970291838196e-04, +-1.060720614307131878e-04, +-1.063367339180913592e-04, +-1.066012140752141846e-04, +-1.068655014863399634e-04, +-1.071295957360465909e-04, +-1.073934964092862964e-04, +-1.076572030913154013e-04, +-1.079207153677776121e-04, +-1.081840328246340627e-04, +-1.084471550482101788e-04, +-1.087100816251798218e-04, +-1.089728121425593253e-04, +-1.092353461876968565e-04, +-1.094976833483199180e-04, +-1.097598232125003819e-04, +-1.100217653686436483e-04, +-1.102835094055362275e-04, +-1.105450549122766093e-04, +-1.108064014783569979e-04, +-1.110675486935939230e-04, +-1.113284961481822330e-04, +-1.115892434326474174e-04, +-1.118497901379007927e-04, +-1.121101358551688799e-04, +-1.123702801760755060e-04, +-1.126302226925737971e-04, +-1.128899629969918375e-04, +-1.131495006820229380e-04, +-1.134088353406899531e-04, +-1.136679665663940829e-04, +-1.139268939529029611e-04, +-1.141856170943455855e-04, +-1.144441355852069520e-04, +-1.147024490203179170e-04, +-1.149605569949004898e-04, +-1.152184591045357675e-04, +-1.154761549451518868e-04, +-1.157336441130599924e-04, +-1.159909262049411857e-04, +-1.162480008178153138e-04, +-1.165048675490872509e-04, +-1.167615259965337662e-04, +-1.170179757583012875e-04, +-1.172742164328988135e-04, +-1.175302476191877221e-04, +-1.177860689164338934e-04, +-1.180416799242458019e-04, +-1.182970802426202021e-04, +-1.185522694719264481e-04, +-1.188072472128999340e-04, +-1.190620130666331631e-04, +-1.193165666346205527e-04, +-1.195709075187255415e-04, +-1.198250353211697210e-04, +-1.200789496445790766e-04, +-1.203326500919158046e-04, +-1.205861362665591264e-04, +-1.208394077722378912e-04, +-1.210924642130755844e-04, +-1.213453051935750539e-04, +-1.215979303186128039e-04, +-1.218503391934282079e-04, +-1.221025314236704948e-04, +-1.223545066153636479e-04, +-1.226062643748967963e-04, +-1.228578043090708491e-04, +-1.231091260250294318e-04, +-1.233602291303391712e-04, +-1.236111132329240200e-04, +-1.238617779411145883e-04, +-1.241122228636049377e-04, +-1.243624476095035389e-04, +-1.246124517882659971e-04, +-1.248622350097751746e-04, +-1.251117968842735363e-04, +-1.253611370224092555e-04, +-1.256102550352250740e-04, +-1.258591505341259654e-04, +-1.261078231309237501e-04, +-1.263562724378274461e-04, +-1.266044980674373870e-04, +-1.268524996327403433e-04, +-1.271002767470997641e-04, +-1.273478290242998235e-04, +-1.275951560785141680e-04, +-1.278422575242934482e-04, +-1.280891329766064104e-04, +-1.283357820508007564e-04, +-1.285822043626262375e-04, +-1.288283995282235139e-04, +-1.290743671641486308e-04, +-1.293201068873332284e-04, +-1.295656183151352818e-04, +-1.298109010652737517e-04, +-1.300559547559060770e-04, +-1.303007790055631500e-04, +-1.305453734331926577e-04, +-1.307897376581452305e-04, +-1.310338713001676664e-04, +-1.312777739793934172e-04, +-1.315214453163870132e-04, +-1.317648849321120526e-04, +-1.320080924479193020e-04, +-1.322510674855931548e-04, +-1.324938096672856032e-04, +-1.327363186155929725e-04, +-1.329785939534915465e-04, +-1.332206353043817221e-04, +-1.334624422920720709e-04, +-1.337040145407746234e-04, +-1.339453516750942978e-04, +-1.341864533200789902e-04, +-1.344273191011594829e-04, +-1.346679486441938690e-04, +-1.349083415754582561e-04, +-1.351484975216138602e-04, +-1.353884161097498862e-04, +-1.356280969673752878e-04, +-1.358675397224131298e-04, +-1.361067440031957633e-04, +-1.363457094384530892e-04, +-1.365844356573599379e-04, +-1.368229222895005074e-04, +-1.370611689648603673e-04, +-1.372991753138585243e-04, +-1.375369409673370135e-04, +-1.377744655565305411e-04, +-1.380117487131084155e-04, +-1.382487900691651422e-04, +-1.384855892572155178e-04, +-1.387221459101901574e-04, +-1.389584596614244359e-04, +-1.391945301447031571e-04, +-1.394303569942279193e-04, +-1.396659398446078722e-04, +-1.399012783308965530e-04, +-1.401363720885621250e-04, +-1.403712207534800862e-04, +-1.406058239619791851e-04, +-1.408401813508083260e-04, +-1.410742925571275967e-04, +-1.413081572185491701e-04, +-1.415417749730770499e-04, +-1.417751454591803897e-04, +-1.420082683157304734e-04, +-1.422411431820428914e-04, +-1.424737696978646919e-04, +-1.427061475033665483e-04, +-1.429382762391349525e-04, +-1.431701555462146886e-04, +-1.434017850660758734e-04, +-1.436331644406073425e-04, +-1.438642933121558984e-04, +-1.440951713234659749e-04, +-1.443257981177527662e-04, +-1.445561733386401026e-04, +-1.447862966302082902e-04, +-1.450161676369570861e-04, +-1.452457860038297674e-04, +-1.454751513761990908e-04, +-1.457042633998920664e-04, +-1.459331217211535560e-04, +-1.461617259866816179e-04, +-1.463900758436191313e-04, +-1.466181709395222193e-04, +-1.468460109224041857e-04, +-1.470735954407224508e-04, +-1.473009241433774941e-04, +-1.475279966797047768e-04, +-1.477548126994684269e-04, +-1.479813718528999445e-04, +-1.482076737906696607e-04, +-1.484337181638770067e-04, +-1.486595046240803293e-04, +-1.488850328232886513e-04, +-1.491103024139317198e-04, +-1.493353130488990922e-04, +-1.495600643815388621e-04, +-1.497845560656254043e-04, +-1.500087877554056974e-04, +-1.502327591055401261e-04, +-1.504564697711730089e-04, +-1.506799194078732378e-04, +-1.509031076716739602e-04, +-1.511260342190589450e-04, +-1.513486987069584627e-04, +-1.515711007927378199e-04, +-1.517932401342403479e-04, +-1.520151163897571535e-04, +-1.522367292180162228e-04, +-1.524580782782248135e-04, +-1.526791632300090920e-04, +-1.528999837334847145e-04, +-1.531205394491972510e-04, +-1.533408300381632484e-04, +-1.535608551618551339e-04, +-1.537806144821970403e-04, +-1.540001076615551566e-04, +-1.542193343627785214e-04, +-1.544382942491693157e-04, +-1.546569869844728335e-04, +-1.548754122329191432e-04, +-1.550935696591686599e-04, +-1.553114589283557305e-04, +-1.555290797060812885e-04, +-1.557464316584066736e-04, +-1.559635144518514639e-04, +-1.561803277533808714e-04, +-1.563968712304489750e-04, +-1.566131445509671700e-04, +-1.568291473832972294e-04, +-1.570448793962790591e-04, +-1.572603402592214557e-04, +-1.574755296418758953e-04, +-1.576904472144724750e-04, +-1.579050926477141941e-04, +-1.581194656127697705e-04, +-1.583335657812701450e-04, +-1.585473928253003492e-04, +-1.587609464174375340e-04, +-1.589742262307229160e-04, +-1.591872319386520738e-04, +-1.593999632152109166e-04, +-1.596124197348392545e-04, +-1.598246011724536759e-04, +-1.600365072034382226e-04, +-1.602481375036610058e-04, +-1.604594917494445801e-04, +-1.606705696176077933e-04, +-1.608813707854094357e-04, +-1.610918949306155144e-04, +-1.613021417314416007e-04, +-1.615121108665935965e-04, +-1.617218020152517424e-04, +-1.619312148570677438e-04, +-1.621403490721545803e-04, +-1.623492043411255093e-04, +-1.625577803450676119e-04, +-1.627660767655292697e-04, +-1.629740932845631272e-04, +-1.631818295846650774e-04, +-1.633892853488440582e-04, +-1.635964602605655105e-04, +-1.638033540037878079e-04, +-1.640099662629557783e-04, +-1.642162967229708614e-04, +-1.644223450692304381e-04, +-1.646281109876235208e-04, +-1.648335941645023470e-04, +-1.650387942867155566e-04, +-1.652437110416014421e-04, +-1.654483441169570218e-04, +-1.656526932010783182e-04, +-1.658567579827513320e-04, +-1.660605381512466206e-04, +-1.662640333963163986e-04, +-1.664672434081847794e-04, +-1.666701678775851802e-04, +-1.668728064957346541e-04, +-1.670751589543231015e-04, +-1.672772249455428966e-04, +-1.674790041620788578e-04, +-1.676804962970826073e-04, +-1.678817010442085656e-04, +-1.680826180976052243e-04, +-1.682832471519126523e-04, +-1.684835879022555298e-04, +-1.686836400442381879e-04, +-1.688834032739771620e-04, +-1.690828772880783692e-04, +-1.692820617836269983e-04, +-1.694809564582173522e-04, +-1.696795610099307574e-04, +-1.698778751373273242e-04, +-1.700758985394847068e-04, +-1.702736309159714860e-04, +-1.704710719668375200e-04, +-1.706682213926509701e-04, +-1.708650788944454180e-04, +-1.710616441737825336e-04, +-1.712579169326982167e-04, +-1.714538968737391075e-04, +-1.716495836999560817e-04, +-1.718449771148741366e-04, +-1.720400768225323438e-04, +-1.722348825274729262e-04, +-1.724293939347377883e-04, +-1.726236107498560479e-04, +-1.728175326788798150e-04, +-1.730111594283311469e-04, +-1.732044907052645796e-04, +-1.733975262172158724e-04, +-1.735902656722394398e-04, +-1.737827087788804061e-04, +-1.739748552461899741e-04, +-1.741667047837213594e-04, +-1.743582571015436951e-04, +-1.745495119102127314e-04, +-1.747404689208036869e-04, +-1.749311278449018159e-04, +-1.751214883945756830e-04, +-1.753115502824129958e-04, +-1.755013132215135037e-04, +-1.756907769254844437e-04, +-1.758799411084358791e-04, +-1.760688054849728382e-04, +-1.762573697702311207e-04, +-1.764456336798507345e-04, +-1.766335969299689837e-04, +-1.768212592372446197e-04, +-1.770086203188520947e-04, +-1.771956798924541581e-04, +-1.773824376762377444e-04, +-1.775688933889113161e-04, +-1.777550467496759974e-04, +-1.779408974782675323e-04, +-1.781264452949053007e-04, +-1.783116899203507832e-04, +-1.784966310758579866e-04, +-1.786812684832077042e-04, +-1.788656018646993305e-04, +-1.790496309431269814e-04, +-1.792333554418106922e-04, +-1.794167750845924330e-04, +-1.795998895958296579e-04, +-1.797826987003827012e-04, +-1.799652021236509893e-04, +-1.801473995915205931e-04, +-1.803292908304270298e-04, +-1.805108755673007280e-04, +-1.806921535296041612e-04, +-1.808731244453224156e-04, +-1.810537880429397169e-04, +-1.812341440514725257e-04, +-1.814141922004610806e-04, +-1.815939322199660645e-04, +-1.817733638405577350e-04, +-1.819524867933478549e-04, +-1.821313008099440466e-04, +-1.823098056224906126e-04, +-1.824880009636568260e-04, +-1.826658865666354130e-04, +-1.828434621651380801e-04, +-1.830207274933886566e-04, +-1.831976822861557292e-04, +-1.833743262787271907e-04, +-1.835506592069041133e-04, +-1.837266808070254153e-04, +-1.839023908159593493e-04, +-1.840777889710797587e-04, +-1.842528750103009073e-04, +-1.844276486720657158e-04, +-1.846021096953447864e-04, +-1.847762578196335292e-04, +-1.849500927849421334e-04, +-1.851236143318298825e-04, +-1.852968222013806241e-04, +-1.854697161351948553e-04, +-1.856422958754201343e-04, +-1.858145611647201540e-04, +-1.859865117462941760e-04, +-1.861581473638672726e-04, +-1.863294677617087318e-04, +-1.865004726846016989e-04, +-1.866711618778817204e-04, +-1.868415350873906650e-04, +-1.870115920595274376e-04, +-1.871813325412058577e-04, +-1.873507562798855321e-04, +-1.875198630235620160e-04, +-1.876886525207464569e-04, +-1.878571245204959251e-04, +-1.880252787724053366e-04, +-1.881931150266071006e-04, +-1.883606330337548836e-04, +-1.885278325450586562e-04, +-1.886947133122376659e-04, +-1.888612750875754060e-04, +-1.890275176238712606e-04, +-1.891934406744793726e-04, +-1.893590439932790455e-04, +-1.895243273346914671e-04, +-1.896892904536732582e-04, +-1.898539331057299173e-04, +-1.900182550468918592e-04, +-1.901822560337401919e-04, +-1.903459358233994259e-04, +-1.905092941735153287e-04, +-1.906723308422865839e-04, +-1.908350455884551961e-04, +-1.909974381713047556e-04, +-1.911595083506579184e-04, +-1.913212558868661328e-04, +-1.914826805408437107e-04, +-1.916437820740423488e-04, +-1.918045602484468189e-04, +-1.919650148265959202e-04, +-1.921251455715760551e-04, +-1.922849522469985428e-04, +-1.924444346170306268e-04, +-1.926035924463884825e-04, +-1.927624255003324732e-04, +-1.929209335446655784e-04, +-1.930791163457247744e-04, +-1.932369736704159994e-04, +-1.933945052861720058e-04, +-1.935517109609849668e-04, +-1.937085904633966652e-04, +-1.938651435624777573e-04, +-1.940213700278594592e-04, +-1.941772696297232466e-04, +-1.943328421387993644e-04, +-1.944880873263562550e-04, +-1.946430049642289110e-04, +-1.947975948247771330e-04, +-1.949518566809357823e-04, +-1.951057903061715758e-04, +-1.952593954745123048e-04, +-1.954126719605409805e-04, +-1.955656195393723072e-04, +-1.957182379866846385e-04, +-1.958705270787107077e-04, +-1.960224865922359473e-04, +-1.961741163045862104e-04, +-1.963254159936601341e-04, +-1.964763854378829525e-04, +-1.966270244162575355e-04, +-1.967773327083245985e-04, +-1.969273100941911631e-04, +-1.970769563545123960e-04, +-1.972262712704870560e-04, +-1.973752546238875263e-04, +-1.975239061970371270e-04, +-1.976722257728035295e-04, +-1.978202131346220661e-04, +-1.979678680664872462e-04, +-1.981151903529319131e-04, +-1.982621797790575196e-04, +-1.984088361305251296e-04, +-1.985551591935537917e-04, +-1.987011487549169067e-04, +-1.988468046019342054e-04, +-1.989921265225031083e-04, +-1.991371143050742231e-04, +-1.992817677386479833e-04, +-1.994260866128007509e-04, +-1.995700707176456762e-04, +-1.997137198438778279e-04, +-1.998570337827361649e-04, +-2.000000123260341103e-04, +-2.001426552661323657e-04, +-2.002849623959678318e-04, +-2.004269335090175588e-04, +-2.005685683993420332e-04, +-2.007098668615477999e-04, +-2.008508286908135374e-04, +-2.009914536828833896e-04, +-2.011317416340475050e-04, +-2.012716923411706047e-04, +-2.014113056016821979e-04, +-2.015505812135753351e-04, +-2.016895189754000213e-04, +-2.018281186862827591e-04, +-2.019663801458954045e-04, +-2.021043031544954727e-04, +-2.022418875128898712e-04, +-2.023791330224592128e-04, +-2.025160394851557833e-04, +-2.026526067034791195e-04, +-2.027888344805062041e-04, +-2.029247226198834431e-04, +-2.030602709258227348e-04, +-2.031954792030947216e-04, +-2.033303472570540510e-04, +-2.034648748936012394e-04, +-2.035990619192167971e-04, +-2.037329081409510639e-04, +-2.038664133664241549e-04, +-2.039995774038199706e-04, +-2.041324000618828895e-04, +-2.042648811499422987e-04, +-2.043970204778936472e-04, +-2.045288178561933501e-04, +-2.046602730958764342e-04, +-2.047913860085514963e-04, +-2.049221564063820821e-04, +-2.050525841021125716e-04, +-2.051826689090613756e-04, +-2.053124106411171137e-04, +-2.054418091127377204e-04, +-2.055708641389439935e-04, +-2.056995755353442873e-04, +-2.058279431181158638e-04, +-2.059559667039992555e-04, +-2.060836461103230928e-04, +-2.062109811549690038e-04, +-2.063379716564124069e-04, +-2.064646174336863256e-04, +-2.065909183064116921e-04, +-2.067168740947702152e-04, +-2.068424846195330571e-04, +-2.069677497020259765e-04, +-2.070926691641698781e-04, +-2.072172428284452771e-04, +-2.073414705179186190e-04, +-2.074653520562333886e-04, +-2.075888872675955279e-04, +-2.077120759767951198e-04, +-2.078349180092014007e-04, +-2.079574131907606469e-04, +-2.080795613479872834e-04, +-2.082013623079871677e-04, +-2.083228158984224614e-04, +-2.084439219475546729e-04, +-2.085646802842089061e-04, +-2.086850907377971979e-04, +-2.088051531383033118e-04, +-2.089248673162923879e-04, +-2.090442331029048167e-04, +-2.091632503298687348e-04, +-2.092819188294799669e-04, +-2.094002384346226259e-04, +-2.095182089787633937e-04, +-2.096358302959338215e-04, +-2.097531022207551579e-04, +-2.098700245884307599e-04, +-2.099865972347460382e-04, +-2.101028199960623590e-04, +-2.102186927093156071e-04, +-2.103342152120362166e-04, +-2.104493873423322848e-04, +-2.105642089388873762e-04, +-2.106786798409783848e-04, +-2.107927998884472369e-04, +-2.109065689217350429e-04, +-2.110199867818543420e-04, +-2.111330533104073168e-04, +-2.112457683495789357e-04, +-2.113581317421350011e-04, +-2.114701433314161597e-04, +-2.115818029613641396e-04, +-2.116931104764892518e-04, +-2.118040657218951640e-04, +-2.119146685432732086e-04, +-2.120249187868832735e-04, +-2.121348162995793896e-04, +-2.122443609288047160e-04, +-2.123535525225840321e-04, +-2.124623909295225721e-04, +-2.125708759988218270e-04, +-2.126790075802530362e-04, +-2.127867855241897133e-04, +-2.128942096815789964e-04, +-2.130012799039627354e-04, +-2.131079960434703634e-04, +-2.132143579528061579e-04, +-2.133203654852693521e-04, +-2.134260184947482533e-04, +-2.135313168357189963e-04, +-2.136362603632357038e-04, +-2.137408489329551526e-04, +-2.138450824011027562e-04, +-2.139489606245105393e-04, +-2.140524834605853706e-04, +-2.141556507673331676e-04, +-2.142584624033431757e-04, +-2.143609182277866128e-04, +-2.144630181004346403e-04, +-2.145647618816461110e-04, +-2.146661494323624472e-04, +-2.147671806141247428e-04, +-2.148678552890486110e-04, +-2.149681733198570074e-04, +-2.150681345698481929e-04, +-2.151677389029203172e-04, +-2.152669861835608209e-04, +-2.153658762768466525e-04, +-2.154644090484369773e-04, +-2.155625843645934514e-04, +-2.156604020921681062e-04, +-2.157578620985960301e-04, +-2.158549642519158054e-04, +-2.159517084207414816e-04, +-2.160480944742952918e-04, +-2.161441222823794900e-04, +-2.162397917153969238e-04, +-2.163351026443354223e-04, +-2.164300549407864171e-04, +-2.165246484769158854e-04, +-2.166188831255009151e-04, +-2.167127587598993742e-04, +-2.168062752540683420e-04, +-2.168994324825621305e-04, +-2.169922303205147477e-04, +-2.170846686436633431e-04, +-2.171767473283396698e-04, +-2.172684662514688106e-04, +-2.173598252905644616e-04, +-2.174508243237454122e-04, +-2.175414632297081147e-04, +-2.176317418877609993e-04, +-2.177216601777941978e-04, +-2.178112179803013359e-04, +-2.179004151763710496e-04, +-2.179892516476785824e-04, +-2.180777272764989044e-04, +-2.181658419457068745e-04, +-2.182535955387666969e-04, +-2.183409879397417333e-04, +-2.184280190332961284e-04, +-2.185146887046760000e-04, +-2.186009968397341038e-04, +-2.186869433249178263e-04, +-2.187725280472739282e-04, +-2.188577508944416594e-04, +-2.189426117546515937e-04, +-2.190271105167415665e-04, +-2.191112470701444778e-04, +-2.191950213048838734e-04, +-2.192784331115910763e-04, +-2.193614823814794086e-04, +-2.194441690063763121e-04, +-2.195264928786940471e-04, +-2.196084538914512953e-04, +-2.196900519382629681e-04, +-2.197712869133396649e-04, +-2.198521587114861007e-04, +-2.199326672281139540e-04, +-2.200128123592318651e-04, +-2.200925940014402044e-04, +-2.201720120519478783e-04, +-2.202510664085531112e-04, +-2.203297569696569436e-04, +-2.204080836342609830e-04, +-2.204860463019666175e-04, +-2.205636448729696489e-04, +-2.206408792480743064e-04, +-2.207177493286699356e-04, +-2.207942550167603813e-04, +-2.208703962149395378e-04, +-2.209461728264054171e-04, +-2.210215847549591728e-04, +-2.210966319049928214e-04, +-2.211713141815032290e-04, +-2.212456314900907014e-04, +-2.213195837369549726e-04, +-2.213931708288907597e-04, +-2.214663926733035921e-04, +-2.215392491781856070e-04, +-2.216117402521433589e-04, +-2.216838658043759458e-04, +-2.217556257446893207e-04, +-2.218270199834861003e-04, +-2.218980484317711486e-04, +-2.219687110011498961e-04, +-2.220390076038344929e-04, +-2.221089381526309607e-04, +-2.221785025609561881e-04, +-2.222477007428163274e-04, +-2.223165326128315417e-04, +-2.223849980862153237e-04, +-2.224530970787895121e-04, +-2.225208295069762139e-04, +-2.225881952877995667e-04, +-2.226551943388793415e-04, +-2.227218265784479921e-04, +-2.227880919253374275e-04, +-2.228539902989773317e-04, +-2.229195216194094207e-04, +-2.229846858072653251e-04, +-2.230494827837914179e-04, +-2.231139124708288385e-04, +-2.231779747908277497e-04, +-2.232416696668384473e-04, +-2.233049970225165100e-04, +-2.233679567821119575e-04, +-2.234305488704922086e-04, +-2.234927732131166019e-04, +-2.235546297360539606e-04, +-2.236161183659786346e-04, +-2.236772390301597130e-04, +-2.237379916564753084e-04, +-2.237983761734088433e-04, +-2.238583925100472616e-04, +-2.239180405960781008e-04, +-2.239773203617990060e-04, +-2.240362317381012504e-04, +-2.240947746564910935e-04, +-2.241529490490724614e-04, +-2.242107548485554845e-04, +-2.242681919882591273e-04, +-2.243252604020968221e-04, +-2.243819600245932743e-04, +-2.244382907908761687e-04, +-2.244942526366805870e-04, +-2.245498454983425299e-04, +-2.246050693128011670e-04, +-2.246599240176045558e-04, +-2.247144095509050611e-04, +-2.247685258514578368e-04, +-2.248222728586250004e-04, +-2.248756505123735187e-04, +-2.249286587532700035e-04, +-2.249812975224931260e-04, +-2.250335667618264337e-04, +-2.250854664136524145e-04, +-2.251369964209677839e-04, +-2.251881567273636712e-04, +-2.252389472770471141e-04, +-2.252893680148218406e-04, +-2.253394188861029606e-04, +-2.253890998369099453e-04, +-2.254384108138667627e-04, +-2.254873517641995198e-04, +-2.255359226357454339e-04, +-2.255841233769469243e-04, +-2.256319539368468953e-04, +-2.256794142651029128e-04, +-2.257265043119659263e-04, +-2.257732240283037153e-04, +-2.258195733655839481e-04, +-2.258655522758839130e-04, +-2.259111607118821153e-04, +-2.259563986268688215e-04, +-2.260012659747333199e-04, +-2.260457627099766325e-04, +-2.260898887877022998e-04, +-2.261336441636211238e-04, +-2.261770287940540413e-04, +-2.262200426359193574e-04, +-2.262626856467475720e-04, +-2.263049577846731127e-04, +-2.263468590084402436e-04, +-2.263883892773934975e-04, +-2.264295485514898458e-04, +-2.264703367912848208e-04, +-2.265107539579483723e-04, +-2.265508000132506914e-04, +-2.265904749195713993e-04, +-2.266297786398972704e-04, +-2.266687111378174076e-04, +-2.267072723775280399e-04, +-2.267454623238363714e-04, +-2.267832809421498476e-04, +-2.268207281984885694e-04, +-2.268578040594719037e-04, +-2.268945084923309509e-04, +-2.269308414649003601e-04, +-2.269668029456229090e-04, +-2.270023929035481765e-04, +-2.270376113083315663e-04, +-2.270724581302301331e-04, +-2.271069333401149154e-04, +-2.271410369094606623e-04, +-2.271747688103454546e-04, +-2.272081290154589171e-04, +-2.272411174980912415e-04, +-2.272737342321449496e-04, +-2.273059791921238889e-04, +-2.273378523531420687e-04, +-2.273693536909193508e-04, +-2.274004831817800663e-04, +-2.274312408026549681e-04, +-2.274616265310820706e-04, +-2.274916403452079236e-04, +-2.275212822237814058e-04, +-2.275505521461622079e-04, +-2.275794500923108857e-04, +-2.276079760427979128e-04, +-2.276361299788002385e-04, +-2.276639118821009624e-04, +-2.276913217350868949e-04, +-2.277183595207562551e-04, +-2.277450252227061485e-04, +-2.277713188251468508e-04, +-2.277972403128909122e-04, +-2.278227896713592017e-04, +-2.278479668865777627e-04, +-2.278727719451777319e-04, +-2.278972048343970197e-04, +-2.279212655420820180e-04, +-2.279449540566828023e-04, +-2.279682703672559509e-04, +-2.279912144634623763e-04, +-2.280137863355714996e-04, +-2.280359859744591632e-04, +-2.280578133716042698e-04, +-2.280792685190945288e-04, +-2.281003514096216316e-04, +-2.281210620364841244e-04, +-2.281414003935845086e-04, +-2.281613664754341460e-04, +-2.281809602771470527e-04, +-2.282001817944463761e-04, +-2.282190310236562373e-04, +-2.282375079617112172e-04, +-2.282556126061483881e-04, +-2.282733449551109452e-04, +-2.282907050073493455e-04, +-2.283076927622172962e-04, +-2.283243082196734892e-04, +-2.283405513802846910e-04, +-2.283564222452214606e-04, +-2.283719208162587997e-04, +-2.283870470957795676e-04, +-2.284018010867680851e-04, +-2.284161827928162870e-04, +-2.284301922181207402e-04, +-2.284438293674831053e-04, +-2.284570942463101629e-04, +-2.284699868606138683e-04, +-2.284825072170092370e-04, +-2.284946553227174080e-04, +-2.285064311855648572e-04, +-2.285178348139815005e-04, +-2.285288662170035937e-04, +-2.285395254042699924e-04, +-2.285498123860249975e-04, +-2.285597271731184101e-04, +-2.285692697770020613e-04, +-2.285784402097344747e-04, +-2.285872384839765568e-04, +-2.285956646129939278e-04, +-2.286037186106579515e-04, +-2.286114004914420765e-04, +-2.286187102704241125e-04, +-2.286256479632873693e-04, +-2.286322135863166449e-04, +-2.286384071564014780e-04, +-2.286442286910359586e-04, +-2.286496782083167491e-04, +-2.286547557269457407e-04, +-2.286594612662245509e-04, +-2.286637948460639022e-04, +-2.286677564869722917e-04, +-2.286713462100648008e-04, +-2.286745640370590560e-04, +-2.286774099902749312e-04, +-2.286798840926359297e-04, +-2.286819863676688050e-04, +-2.286837168395032083e-04, +-2.286850755328700079e-04, +-2.286860624731057890e-04, +-2.286866776861458059e-04, +-2.286869211985315716e-04, +-2.286867930374045699e-04, +-2.286862932305092360e-04, +-2.286854218061939060e-04, +-2.286841787934060189e-04, +-2.286825642216975109e-04, +-2.286805781212210742e-04, +-2.286782205227318654e-04, +-2.286754914575871254e-04, +-2.286723909577446890e-04, +-2.286689190557647739e-04, +-2.286650757848090586e-04, +-2.286608611786407374e-04, +-2.286562752716238690e-04, +-2.286513180987236483e-04, +-2.286459896955067041e-04, +-2.286402900981402862e-04, +-2.286342193433942168e-04, +-2.286277774686365537e-04, +-2.286209645118372498e-04, +-2.286137805115673392e-04, +-2.286062255069971764e-04, +-2.285982995378987664e-04, +-2.285900026446427836e-04, +-2.285813348682017975e-04, +-2.285722962501468569e-04, +-2.285628868326505532e-04, +-2.285531066584838759e-04, +-2.285429557710180564e-04, +-2.285324342142236182e-04, +-2.285215420326704324e-04, +-2.285102792715288007e-04, +-2.284986459765675048e-04, +-2.284866421941541040e-04, +-2.284742679712558028e-04, +-2.284615233554377158e-04, +-2.284484083948648471e-04, +-2.284349231383000839e-04, +-2.284210676351053891e-04, +-2.284068419352404194e-04, +-2.283922460892635279e-04, +-2.283772801483311137e-04, +-2.283619441641969710e-04, +-2.283462381892144310e-04, +-2.283301622763326481e-04, +-2.283137164790995815e-04, +-2.282969008516596643e-04, +-2.282797154487554840e-04, +-2.282621603257274298e-04, +-2.282442355385114164e-04, +-2.282259411436411332e-04, +-2.282072771982477462e-04, +-2.281882437600568083e-04, +-2.281688408873918370e-04, +-2.281490686391753173e-04, +-2.281289270749214915e-04, +-2.281084162547432174e-04, +-2.280875362393492301e-04, +-2.280662870900424346e-04, +-2.280446688687233210e-04, +-2.280226816378876607e-04, +-2.280003254606267774e-04, +-2.279776004006242942e-04, +-2.279545065221633983e-04, +-2.279310438901196035e-04, +-2.279072125699645450e-04, +-2.278830126277614802e-04, +-2.278584441301723356e-04, +-2.278335071444510937e-04, +-2.278082017384452018e-04, +-2.277825279805982019e-04, +-2.277564859399467485e-04, +-2.277300756861200129e-04, +-2.277032972893423119e-04, +-2.276761508204303431e-04, +-2.276486363507953538e-04, +-2.276207539524403758e-04, +-2.275925036979609302e-04, +-2.275638856605474941e-04, +-2.275348999139808115e-04, +-2.275055465326354166e-04, +-2.274758255914775742e-04, +-2.274457371660663636e-04, +-2.274152813325515377e-04, +-2.273844581676767750e-04, +-2.273532677487739612e-04, +-2.273217101537702628e-04, +-2.272897854611809448e-04, +-2.272574937501144936e-04, +-2.272248351002697435e-04, +-2.271918095919344403e-04, +-2.271584173059889547e-04, +-2.271246583239052797e-04, +-2.270905327277433165e-04, +-2.270560406001523659e-04, +-2.270211820243744894e-04, +-2.269859570842373798e-04, +-2.269503658641635778e-04, +-2.269144084491604696e-04, +-2.268780849248267656e-04, +-2.268413953773487592e-04, +-2.268043398935024686e-04, +-2.267669185606533387e-04, +-2.267291314667538012e-04, +-2.266909787003438441e-04, +-2.266524603505538579e-04, +-2.266135765071003525e-04, +-2.265743272602859849e-04, +-2.265347127010062535e-04, +-2.264947329207389279e-04, +-2.264543880115504177e-04, +-2.264136780660934965e-04, +-2.263726031776072472e-04, +-2.263311634399215887e-04, +-2.262893589474471927e-04, +-2.262471897951821246e-04, +-2.262046560787126296e-04, +-2.261617578942084702e-04, +-2.261184953384249327e-04, +-2.260748685087038835e-04, +-2.260308775029733089e-04, +-2.259865224197442248e-04, +-2.259418033581099994e-04, +-2.258967204177520719e-04, +-2.258512736989380556e-04, +-2.258054633025135247e-04, +-2.257592893299140222e-04, +-2.257127518831537839e-04, +-2.256658510648325419e-04, +-2.256185869781337898e-04, +-2.255709597268264091e-04, +-2.255229694152567274e-04, +-2.254746161483563789e-04, +-2.254259000316401629e-04, +-2.253768211712023307e-04, +-2.253273796737251505e-04, +-2.252775756464642980e-04, +-2.252274091972641978e-04, +-2.251768804345466934e-04, +-2.251259894673140289e-04, +-2.250747364051521558e-04, +-2.250231213582273176e-04, +-2.249711444372850470e-04, +-2.249188057536497594e-04, +-2.248661054192299842e-04, +-2.248130435465079562e-04, +-2.247596202485531143e-04, +-2.247058356390072475e-04, +-2.246516898320962861e-04, +-2.245971829426189441e-04, +-2.245423150859590254e-04, +-2.244870863780775360e-04, +-2.244314969355107054e-04, +-2.243755468753728325e-04, +-2.243192363153591860e-04, +-2.242625653737401225e-04, +-2.242055341693607884e-04, +-2.241481428216502542e-04, +-2.240903914506089110e-04, +-2.240322801768159238e-04, +-2.239738091214231604e-04, +-2.239149784061613985e-04, +-2.238557881533407591e-04, +-2.237962384858410573e-04, +-2.237363295271173314e-04, +-2.236760614012051019e-04, +-2.236154342327089598e-04, +-2.235544481468118366e-04, +-2.234931032692694748e-04, +-2.234313997264131117e-04, +-2.233693376451448710e-04, +-2.233069171529441870e-04, +-2.232441383778581824e-04, +-2.231810014485158711e-04, +-2.231175064941104045e-04, +-2.230536536444132473e-04, +-2.229894430297655315e-04, +-2.229248747810791127e-04, +-2.228599490298398505e-04, +-2.227946659081085569e-04, +-2.227290255485112112e-04, +-2.226630280842459536e-04, +-2.225966736490859847e-04, +-2.225299623773671794e-04, +-2.224628944040070054e-04, +-2.223954698644812946e-04, +-2.223276888948447075e-04, +-2.222595516317157438e-04, +-2.221910582122813775e-04, +-2.221222087743036976e-04, +-2.220530034561102859e-04, +-2.219834423965940816e-04, +-2.219135257352206449e-04, +-2.218432536120204599e-04, +-2.217726261675902622e-04, +-2.217016435431009810e-04, +-2.216303058802858124e-04, +-2.215586133214435000e-04, +-2.214865660094403668e-04, +-2.214141640877080662e-04, +-2.213414077002520111e-04, +-2.212682969916320757e-04, +-2.211948321069785869e-04, +-2.211210131919890450e-04, +-2.210468403929223503e-04, +-2.209723138566002394e-04, +-2.208974337304163383e-04, +-2.208222001623246975e-04, +-2.207466133008384088e-04, +-2.206706732950387134e-04, +-2.205943802945674391e-04, +-2.205177344496366497e-04, +-2.204407359110110813e-04, +-2.203633848300212879e-04, +-2.202856813585641292e-04, +-2.202076256490895982e-04, +-2.201292178546158907e-04, +-2.200504581287253945e-04, +-2.199713466255518953e-04, +-2.198918834997940213e-04, +-2.198120689067144566e-04, +-2.197319030021278527e-04, +-2.196513859424180674e-04, +-2.195705178845195162e-04, +-2.194892989859340590e-04, +-2.194077294047149266e-04, +-2.193258092994742833e-04, +-2.192435388293893794e-04, +-2.191609181541919805e-04, +-2.190779474341683674e-04, +-2.189946268301624260e-04, +-2.189109565035810413e-04, +-2.188269366163775093e-04, +-2.187425673310755515e-04, +-2.186578488107413160e-04, +-2.185727812190059829e-04, +-2.184873647200495281e-04, +-2.184015994786122163e-04, +-2.183154856599862795e-04, +-2.182290234300217715e-04, +-2.181422129551172985e-04, +-2.180550544022317279e-04, +-2.179675479388729943e-04, +-2.178796937331002408e-04, +-2.177914919535347692e-04, +-2.177029427693440481e-04, +-2.176140463502482724e-04, +-2.175248028665170837e-04, +-2.174352124889758042e-04, +-2.173452753890054909e-04, +-2.172549917385296545e-04, +-2.171643617100231223e-04, +-2.170733854765187064e-04, +-2.169820632115925126e-04, +-2.168903950893686836e-04, +-2.167983812845299433e-04, +-2.167060219723033392e-04, +-2.166133173284599985e-04, +-2.165202675293280302e-04, +-2.164268727517730095e-04, +-2.163331331732229143e-04, +-2.162390489716398275e-04, +-2.161446203255413233e-04, +-2.160498474139865616e-04, +-2.159547304165807067e-04, +-2.158592695134822184e-04, +-2.157634648853917661e-04, +-2.156673167135522554e-04, +-2.155708251797525967e-04, +-2.154739904663317970e-04, +-2.153768127561638630e-04, +-2.152792922326810302e-04, +-2.151814290798447057e-04, +-2.150832234821704869e-04, +-2.149846756247102446e-04, +-2.148857856930572728e-04, +-2.147865538733584052e-04, +-2.146869803522943637e-04, +-2.145870653170864806e-04, +-2.144868089554989479e-04, +-2.143862114558403630e-04, +-2.142852730069524795e-04, +-2.141839937982277172e-04, +-2.140823740195944445e-04, +-2.139804138615165169e-04, +-2.138781135149988883e-04, +-2.137754731715859030e-04, +-2.136724930233682620e-04, +-2.135691732629636970e-04, +-2.134655140835299537e-04, +-2.133615156787693995e-04, +-2.132571782429148208e-04, +-2.131525019707332174e-04, +-2.130474870575390571e-04, +-2.129421336991775245e-04, +-2.128364420920262560e-04, +-2.127304124329988633e-04, +-2.126240449195449065e-04, +-2.125173397496578354e-04, +-2.124102971218528994e-04, +-2.123029172351805914e-04, +-2.121952002892335597e-04, +-2.120871464841274714e-04, +-2.119787560205182791e-04, +-2.118700290995915406e-04, +-2.117609659230689249e-04, +-2.116515666931952284e-04, +-2.115418316127564812e-04, +-2.114317608850575314e-04, +-2.113213547139519688e-04, +-2.112106133038056145e-04, +-2.110995368595269329e-04, +-2.109881255865459979e-04, +-2.108763796908212423e-04, +-2.107642993788497849e-04, +-2.106518848576524681e-04, +-2.105391363347732078e-04, +-2.104260540182851733e-04, +-2.103126381167955844e-04, +-2.101988888394270910e-04, +-2.100848063958453654e-04, +-2.099703909962247065e-04, +-2.098556428512797522e-04, +-2.097405621722397842e-04, +-2.096251491708598139e-04, +-2.095094040594288221e-04, +-2.093933270507549328e-04, +-2.092769183581654673e-04, +-2.091601781955186264e-04, +-2.090431067771909954e-04, +-2.089257043180781125e-04, +-2.088079710336098382e-04, +-2.086899071397316252e-04, +-2.085715128529069579e-04, +-2.084527883901212016e-04, +-2.083337339688835267e-04, +-2.082143498072289958e-04, +-2.080946361237026804e-04, +-2.079745931373695538e-04, +-2.078542210678223790e-04, +-2.077335201351653373e-04, +-2.076124905600172806e-04, +-2.074911325635299462e-04, +-2.073694463673631287e-04, +-2.072474321936914558e-04, +-2.071250902652079938e-04, +-2.070024208051227295e-04, +-2.068794240371703492e-04, +-2.067561001855879586e-04, +-2.066324494751312915e-04, +-2.065084721310773931e-04, +-2.063841683792057009e-04, +-2.062595384458249057e-04, +-2.061345825577497767e-04, +-2.060093009423047124e-04, +-2.058836938273282940e-04, +-2.057577614411774058e-04, +-2.056315040127097249e-04, +-2.055049217713121818e-04, +-2.053780149468633113e-04, +-2.052507837697679742e-04, +-2.051232284709309569e-04, +-2.049953492817652655e-04, +-2.048671464342068983e-04, +-2.047386201606933240e-04, +-2.046097706941662467e-04, +-2.044805982680780027e-04, +-2.043511031163942979e-04, +-2.042212854735765627e-04, +-2.040911455746118486e-04, +-2.039606836549743120e-04, +-2.038298999506576049e-04, +-2.036987946981510763e-04, +-2.035673681344571742e-04, +-2.034356204970804132e-04, +-2.033035520240325251e-04, +-2.031711629538203424e-04, +-2.030384535254667235e-04, +-2.029054239784880290e-04, +-2.027720745529024420e-04, +-2.026384054892415697e-04, +-2.025044170285332317e-04, +-2.023701094123021372e-04, +-2.022354828825753876e-04, +-2.021005376818818804e-04, +-2.019652740532605216e-04, +-2.018296922402353164e-04, +-2.016937924868326081e-04, +-2.015575750375862005e-04, +-2.014210401375125846e-04, +-2.012841880321484243e-04, +-2.011470189675067547e-04, +-2.010095331901126799e-04, +-2.008717309469751832e-04, +-2.007336124856128501e-04, +-2.005951780540244050e-04, +-2.004564279007245171e-04, +-2.003173622747029257e-04, +-2.001779814254568040e-04, +-2.000382856029705113e-04, +-1.998982750577180058e-04, +-1.997579500406819258e-04, +-1.996173108033278407e-04, +-1.994763575976109726e-04, +-1.993350906759785816e-04, +-1.991935102913783685e-04, +-1.990516166972333212e-04, +-1.989094101474783878e-04, +-1.987668908965172442e-04, +-1.986240591992583708e-04, +-1.984809153110903869e-04, +-1.983374594878874718e-04, +-1.981936919860278232e-04, +-1.980496130623666607e-04, +-1.979052229742445741e-04, +-1.977605219794892582e-04, +-1.976155103364235900e-04, +-1.974701883038412070e-04, +-1.973245561410391148e-04, +-1.971786141077914761e-04, +-1.970323624643519967e-04, +-1.968858014714593456e-04, +-1.967389313903402455e-04, +-1.965917524827119937e-04, +-1.964442650107604523e-04, +-1.962964692371559051e-04, +-1.961483654250598065e-04, +-1.959999538381063772e-04, +-1.958512347404079443e-04, +-1.957022083965705530e-04, +-1.955528750716733404e-04, +-1.954032350312705950e-04, +-1.952532885413959857e-04, +-1.951030358685642413e-04, +-1.949524772797791205e-04, +-1.948016130425039751e-04, +-1.946504434246843288e-04, +-1.944989686947505331e-04, +-1.943471891215948100e-04, +-1.941951049746060273e-04, +-1.940427165236268997e-04, +-1.938900240389896865e-04, +-1.937370277914888693e-04, +-1.935837280524061431e-04, +-1.934301250934799502e-04, +-1.932762191869431020e-04, +-1.931220106054802241e-04, +-1.929674996222632095e-04, +-1.928126865109248186e-04, +-1.926575715455658346e-04, +-1.925021550007747692e-04, +-1.923464371515998088e-04, +-1.921904182735544790e-04, +-1.920340986426224159e-04, +-1.918774785352660931e-04, +-1.917205582283976846e-04, +-1.915633379994217814e-04, +-1.914058181261857089e-04, +-1.912479988870217289e-04, +-1.910898805607119384e-04, +-1.909314634265170559e-04, +-1.907727477641583144e-04, +-1.906137338538250786e-04, +-1.904544219761603160e-04, +-1.902948124122843957e-04, +-1.901349054437716419e-04, +-1.899747013526540480e-04, +-1.898142004214435836e-04, +-1.896534029331043033e-04, +-1.894923091710571988e-04, +-1.893309194191847256e-04, +-1.891692339618314801e-04, +-1.890072530838134428e-04, +-1.888449770703886504e-04, +-1.886824062072764137e-04, +-1.885195407806655840e-04, +-1.883563810771842232e-04, +-1.881929273839428902e-04, +-1.880291799884843066e-04, +-1.878651391788248553e-04, +-1.877008052434259026e-04, +-1.875361784712039899e-04, +-1.873712591515335445e-04, +-1.872060475742554444e-04, +-1.870405440296411858e-04, +-1.868747488084342720e-04, +-1.867086622018191517e-04, +-1.865422845014298378e-04, +-1.863756159993700196e-04, +-1.862086569881820546e-04, +-1.860414077608583527e-04, +-1.858738686108390179e-04, +-1.857060398320248588e-04, +-1.855379217187489826e-04, +-1.853695145658175610e-04, +-1.852008186684593063e-04, +-1.850318343223687583e-04, +-1.848625618236771735e-04, +-1.846930014689587049e-04, +-1.845231535552506767e-04, +-1.843530183800262353e-04, +-1.841825962411992824e-04, +-1.840118874371279986e-04, +-1.838408922666266341e-04, +-1.836696110289321967e-04, +-1.834980440237529969e-04, +-1.833261915512128927e-04, +-1.831540539118953084e-04, +-1.829816314068117113e-04, +-1.828089243374204226e-04, +-1.826359330056320383e-04, +-1.824626577137781504e-04, +-1.822890987646334912e-04, +-1.821152564614231706e-04, +-1.819411311077901501e-04, +-1.817667230078427580e-04, +-1.815920324661005872e-04, +-1.814170597875364003e-04, +-1.812418052775510030e-04, +-1.810662692419780142e-04, +-1.808904519870917541e-04, +-1.807143538196108489e-04, +-1.805379750466702313e-04, +-1.803613159758413339e-04, +-1.801843769151404914e-04, +-1.800071581729966591e-04, +-1.798296600582976264e-04, +-1.796518828803367557e-04, +-1.794738269488556457e-04, +-1.792954925740122558e-04, +-1.791168800664087702e-04, +-1.789379897370565239e-04, +-1.787588218974254422e-04, +-1.785793768593832713e-04, +-1.783996549352459126e-04, +-1.782196564377453568e-04, +-1.780393816800355123e-04, +-1.778588309757148371e-04, +-1.776780046387975269e-04, +-1.774969029837168753e-04, +-1.773155263253317258e-04, +-1.771338749789350901e-04, +-1.769519492602252822e-04, +-1.767697494853495027e-04, +-1.765872759708501168e-04, +-1.764045290337106246e-04, +-1.762215089913238665e-04, +-1.760382161614987187e-04, +-1.758546508624846496e-04, +-1.756708134129379749e-04, +-1.754867041319302325e-04, +-1.753023233389505947e-04, +-1.751176713539190691e-04, +-1.749327484971520473e-04, +-1.747475550894070828e-04, +-1.745620914518446459e-04, +-1.743763579060382063e-04, +-1.741903547739762125e-04, +-1.740040823780642052e-04, +-1.738175410411344401e-04, +-1.736307310864128740e-04, +-1.734436528375414175e-04, +-1.732563066185859859e-04, +-1.730686927540057616e-04, +-1.728808115686972669e-04, +-1.726926633879403441e-04, +-1.725042485374449653e-04, +-1.723155673433181918e-04, +-1.721266201320763170e-04, +-1.719374072306464115e-04, +-1.717479289663776797e-04, +-1.715581856670042994e-04, +-1.713681776606731770e-04, +-1.711779052759470645e-04, +-1.709873688417759096e-04, +-1.707965686875415794e-04, +-1.706055051430024568e-04, +-1.704141785383410108e-04, +-1.702225892041269329e-04, +-1.700307374713478205e-04, +-1.698386236713745365e-04, +-1.696462481360065287e-04, +-1.694536111974160209e-04, +-1.692607131881965308e-04, +-1.690675544413286361e-04, +-1.688741352901881334e-04, +-1.686804560685705682e-04, +-1.684865171106559982e-04, +-1.682923187510187513e-04, +-1.680978613246297566e-04, +-1.679031451668693649e-04, +-1.677081706134917057e-04, +-1.675129380006767021e-04, +-1.673174476649678369e-04, +-1.671216999433262820e-04, +-1.669256951730871505e-04, +-1.667294336919926195e-04, +-1.665329158381726306e-04, +-1.663361419501533474e-04, +-1.661391123668382356e-04, +-1.659418274275395325e-04, +-1.657442874719384292e-04, +-1.655464928401341853e-04, +-1.653484438725855816e-04, +-1.651501409101616613e-04, +-1.649515842941051377e-04, +-1.647527743660468684e-04, +-1.645537114680070754e-04, +-1.643543959424061595e-04, +-1.641548281320287322e-04, +-1.639550083800464378e-04, +-1.637549370300297991e-04, +-1.635546144259105675e-04, +-1.633540409120339551e-04, +-1.631532168330974042e-04, +-1.629521425342010026e-04, +-1.627508183608143612e-04, +-1.625492446587869415e-04, +-1.623474217743520935e-04, +-1.621453500541366244e-04, +-1.619430298451195985e-04, +-1.617404614946808014e-04, +-1.615376453505627927e-04, +-1.613345817608831574e-04, +-1.611312710741558650e-04, +-1.609277136392593395e-04, +-1.607239098054411485e-04, +-1.605198599223253762e-04, +-1.603155643399218114e-04, +-1.601110234085925004e-04, +-1.599062374791029211e-04, +-1.597012069025606170e-04, +-1.594959320304666702e-04, +-1.592904132146788379e-04, +-1.590846508074225305e-04, +-1.588786451613149347e-04, +-1.586723966293282051e-04, +-1.584659055647996283e-04, +-1.582591723214349573e-04, +-1.580521972533108232e-04, +-1.578449807148845751e-04, +-1.576375230609578502e-04, +-1.574298246467025679e-04, +-1.572218858276677332e-04, +-1.570137069597511389e-04, +-1.568052883992211038e-04, +-1.565966305027246858e-04, +-1.563877336272481082e-04, +-1.561785981301438921e-04, +-1.559692243691399092e-04, +-1.557596127023028177e-04, +-1.555497634880904825e-04, +-1.553396770852882251e-04, +-1.551293538530641985e-04, +-1.549187941509306003e-04, +-1.547079983387573065e-04, +-1.544969667767762621e-04, +-1.542856998255901825e-04, +-1.540741978461339010e-04, +-1.538624611997020436e-04, +-1.536504902479582987e-04, +-1.534382853528976868e-04, +-1.532258468769008249e-04, +-1.530131751826680885e-04, +-1.528002706332759627e-04, +-1.525871335921344331e-04, +-1.523737644230218702e-04, +-1.521601634900446429e-04, +-1.519463311576912197e-04, +-1.517322677907671715e-04, +-1.515179737544490016e-04, +-1.513034494142480963e-04, +-1.510886951360173387e-04, +-1.508737112859808154e-04, +-1.506584982306935657e-04, +-1.504430563370523152e-04, +-1.502273859722986203e-04, +-1.500114875040311189e-04, +-1.497953613001699966e-04, +-1.495790077290102746e-04, +-1.493624271591567848e-04, +-1.491456199595796812e-04, +-1.489285864995755168e-04, +-1.487113271487778686e-04, +-1.484938422771820853e-04, +-1.482761322551094533e-04, +-1.480581974532101520e-04, +-1.478400382424916327e-04, +-1.476216549942741658e-04, +-1.474030480802481955e-04, +-1.471842178724076073e-04, +-1.469651647431053200e-04, +-1.467458890650135772e-04, +-1.465263912111403727e-04, +-1.463066715548306976e-04, +-1.460867304697777342e-04, +-1.458665683299820636e-04, +-1.456461855097817789e-04, +-1.454255823838599933e-04, +-1.452047593272057008e-04, +-1.449837167151718888e-04, +-1.447624549234057434e-04, +-1.445409743279084695e-04, +-1.443192753049943355e-04, +-1.440973582313039545e-04, +-1.438752234838099498e-04, +-1.436528714398254921e-04, +-1.434303024769646728e-04, +-1.432075169731709095e-04, +-1.429845153067261620e-04, +-1.427612978562113047e-04, +-1.425378650005595233e-04, +-1.423142171190116731e-04, +-1.420903545911243022e-04, +-1.418662777967754241e-04, +-1.416419871161780442e-04, +-1.414174829298390948e-04, +-1.411927656186202592e-04, +-1.409678355636654929e-04, +-1.407426931464618469e-04, +-1.405173387487988377e-04, +-1.402917727527767684e-04, +-1.400659955408356766e-04, +-1.398400074957170355e-04, +-1.396138090004711530e-04, +-1.393874004384625662e-04, +-1.391607821933718570e-04, +-1.389339546492099093e-04, +-1.387069181902719935e-04, +-1.384796732011712951e-04, +-1.382522200668448778e-04, +-1.380245591725205614e-04, +-1.377966909037500168e-04, +-1.375686156463890334e-04, +-1.373403337866053531e-04, +-1.371118457108598586e-04, +-1.368831518059391271e-04, +-1.366542524589111675e-04, +-1.364251480571840487e-04, +-1.361958389884352640e-04, +-1.359663256406724462e-04, +-1.357366084021897554e-04, +-1.355066876615846846e-04, +-1.352765638077630468e-04, +-1.350462372299450194e-04, +-1.348157083176271969e-04, +-1.345849774606117566e-04, +-1.343540450490143996e-04, +-1.341229114732251846e-04, +-1.338915771239672099e-04, +-1.336600423922248667e-04, +-1.334283076693062618e-04, +-1.331963733467936967e-04, +-1.329642398165860329e-04, +-1.327319074708514205e-04, +-1.324993767020873090e-04, +-1.322666479030498114e-04, +-1.320337214668120885e-04, +-1.318005977867248569e-04, +-1.315672772564258487e-04, +-1.313337602698675939e-04, +-1.311000472212786876e-04, +-1.308661385051716232e-04, +-1.306320345163470209e-04, +-1.303977356499001598e-04, +-1.301632423012285406e-04, +-1.299285548659905498e-04, +-1.296936737401362246e-04, +-1.294585993199160346e-04, +-1.292233320018507407e-04, +-1.289878721827388496e-04, +-1.287522202596893834e-04, +-1.285163766300783219e-04, +-1.282803416915579808e-04, +-1.280441158420629480e-04, +-1.278076994798133090e-04, +-1.275710930033252717e-04, +-1.273342968113684766e-04, +-1.270973113029958117e-04, +-1.268601368775554750e-04, +-1.266227739346512105e-04, +-1.263852228741735881e-04, +-1.261474840963059394e-04, +-1.259095580014810980e-04, +-1.256714449904108085e-04, +-1.254331454640968937e-04, +-1.251946598237895132e-04, +-1.249559884710470920e-04, +-1.247171318076641404e-04, +-1.244780902357318605e-04, +-1.242388641575983561e-04, +-1.239994539758794748e-04, +-1.237598600934675900e-04, +-1.235200829135384040e-04, +-1.232801228395101825e-04, +-1.230399802750728922e-04, +-1.227996556242000456e-04, +-1.225591492911040322e-04, +-1.223184616803003574e-04, +-1.220775931965309619e-04, +-1.218365442448292611e-04, +-1.215953152304703250e-04, +-1.213539065590133799e-04, +-1.211123186362531267e-04, +-1.208705518682814196e-04, +-1.206286066614159518e-04, +-1.203864834222587621e-04, +-1.201441825576554418e-04, +-1.199017044747066949e-04, +-1.196590495807948199e-04, +-1.194162182835458981e-04, +-1.191732109908354994e-04, +-1.189300281107957970e-04, +-1.186866700518194440e-04, +-1.184431372225689511e-04, +-1.181994300319342406e-04, +-1.179555488890645488e-04, +-1.177114942033757444e-04, +-1.174672663845212719e-04, +-1.172228658423989415e-04, +-1.169782929871838073e-04, +-1.167335482292853959e-04, +-1.164886319793506333e-04, +-1.162435446482963577e-04, +-1.159982866472603541e-04, +-1.157528583876650242e-04, +-1.155072602811409638e-04, +-1.152614927395914180e-04, +-1.150155561751483717e-04, +-1.147694510001880808e-04, +-1.145231776273356115e-04, +-1.142767364694748973e-04, +-1.140301279397048823e-04, +-1.137833524513712479e-04, +-1.135364104180772550e-04, +-1.132893022536385867e-04, +-1.130420283721481159e-04, +-1.127945891878994150e-04, +-1.125469851154516315e-04, +-1.122992165695844670e-04, +-1.120512839653143856e-04, +-1.118031877178989644e-04, +-1.115549282428471257e-04, +-1.113065059558755520e-04, +-1.110579212729397350e-04, +-1.108091746102448581e-04, +-1.105602663842013576e-04, +-1.103111970114839443e-04, +-1.100619669089818788e-04, +-1.098125764938095701e-04, +-1.095630261833105190e-04, +-1.093133163950629018e-04, +-1.090634475468899516e-04, +-1.088134200568145846e-04, +-1.085632343430923595e-04, +-1.083128908242210459e-04, +-1.080623899189077185e-04, +-1.078117320460784202e-04, +-1.075609176249109865e-04, +-1.073099470747899964e-04, +-1.070588208153172355e-04, +-1.068075392663163169e-04, +-1.065561028478376150e-04, +-1.063045119801691067e-04, +-1.060527670837902391e-04, +-1.058008685794055399e-04, +-1.055488168879544967e-04, +-1.052966124305727564e-04, +-1.050442556286283649e-04, +-1.047917469037016951e-04, +-1.045390866775931050e-04, +-1.042862753723019034e-04, +-1.040333134100634841e-04, +-1.037802012132993715e-04, +-1.035269392046825977e-04, +-1.032735278070595180e-04, +-1.030199674435158390e-04, +-1.027662585373307973e-04, +-1.025124015119941953e-04, +-1.022583967912105206e-04, +-1.020042447989098294e-04, +-1.017499459592011797e-04, +-1.014955006964078676e-04, +-1.012409094350761284e-04, +-1.009861725999289630e-04, +-1.007312906159345782e-04, +-1.004762639082263184e-04, +-1.002210929021689914e-04, +-9.996577802330791141e-05, +-9.971031969740763159e-05, +-9.945471835042857993e-05, +-9.919897440853754872e-05, +-9.894308829808504829e-05, +-9.868706044564263071e-05, +-9.843089127796484782e-05, +-9.817458122199742340e-05, +-9.791813070491250329e-05, +-9.766154015406142488e-05, +-9.740480999698584367e-05, +-9.714794066142280196e-05, +-9.689093257530925535e-05, +-9.663378616679246759e-05, +-9.637650186418549047e-05, +-9.611908009599828048e-05, +-9.586152129095018061e-05, +-9.560382587793408754e-05, +-9.534599428602748338e-05, +-9.508802694452566642e-05, +-9.482992428289553708e-05, +-9.457168673078703621e-05, +-9.431331471803608597e-05, +-9.405480867467258586e-05, +-9.379616903092820540e-05, +-9.353739621718648372e-05, +-9.327849066404305702e-05, +-9.301945280226108425e-05, +-9.276028306278623630e-05, +-9.250098187675257768e-05, +-9.224154967549220248e-05, +-9.198198689049089040e-05, +-9.172229395341923699e-05, +-9.146247129614504061e-05, +-9.120251935068571952e-05, +-9.094243854927730778e-05, +-9.068222932429282842e-05, +-9.042189210831096406e-05, +-9.016142733406839267e-05, +-8.990083543447796154e-05, +-8.964011684263175012e-05, +-8.937927199181317243e-05, +-8.911830131545041061e-05, +-8.885720524714890028e-05, +-8.859598422070378535e-05, +-8.833463867005145415e-05, +-8.807316902933955182e-05, +-8.781157573284455382e-05, +-8.754985921504000290e-05, +-8.728801991054505017e-05, +-8.702605825415748260e-05, +-8.676397468085896784e-05, +-8.650176962576760684e-05, +-8.623944352417357699e-05, +-8.597699681154760242e-05, +-8.571442992350769617e-05, +-8.545174329582824030e-05, +-8.518893736447523608e-05, +-8.492601256555901916e-05, +-8.466296933534439692e-05, +-8.439980811025674708e-05, +-8.413652932688620543e-05, +-8.387313342199972759e-05, +-8.360962083249197461e-05, +-8.334599199542125434e-05, +-8.308224734802034986e-05, +-8.281838732765323271e-05, +-8.255441237185750939e-05, +-8.229032291831865804e-05, +-8.202611940488172427e-05, +-8.176180226952722472e-05, +-8.149737195041097798e-05, +-8.123282888581081606e-05, +-8.096817351419689486e-05, +-8.070340627414739748e-05, +-8.043852760441988828e-05, +-8.017353794390237468e-05, +-7.990843773163092546e-05, +-7.964322740679408890e-05, +-7.937790740874481896e-05, +-7.911247817695205215e-05, +-7.884694015103572724e-05, +-7.858129377077722067e-05, +-7.831553947607231936e-05, +-7.804967770700051469e-05, +-7.778370890374215600e-05, +-7.751763350664777166e-05, +-7.725145195619158398e-05, +-7.698516469298126701e-05, +-7.671877215779288495e-05, +-7.645227479152358026e-05, +-7.618567303519603248e-05, +-7.591896732999355924e-05, +-7.565215811721753424e-05, +-7.538524583829951675e-05, +-7.511823093483480768e-05, +-7.485111384853509705e-05, +-7.458389502123945506e-05, +-7.431657489491949565e-05, +-7.404915391168448576e-05, +-7.378163251379232291e-05, +-7.351401114360204712e-05, +-7.324629024360787132e-05, +-7.297847025645082296e-05, +-7.271055162488216576e-05, +-7.244253479177510907e-05, +-7.217442020015847235e-05, +-7.190620829316968503e-05, +-7.163789951406514061e-05, +-7.136949430622640373e-05, +-7.110099311316414041e-05, +-7.083239637853005783e-05, +-7.056370454606822361e-05, +-7.029491805965065482e-05, +-7.002603736328772625e-05, +-6.975706290108617117e-05, +-6.948799511728433144e-05, +-6.921883445625649431e-05, +-6.894958136246541794e-05, +-6.868023628049702586e-05, +-6.841079965507160135e-05, +-6.814127193099510675e-05, +-6.787165355323032071e-05, +-6.760194496681270408e-05, +-6.733214661692099503e-05, +-6.706225894882871809e-05, +-6.679228240791537858e-05, +-6.652221743970201083e-05, +-6.625206448980225360e-05, +-6.598182400393317855e-05, +-6.571149642792156504e-05, +-6.544108220772016315e-05, +-6.517058178935971778e-05, +-6.489999561901948241e-05, +-6.462932414294326122e-05, +-6.435856780751046495e-05, +-6.408772705918046428e-05, +-6.381680234453544287e-05, +-6.354579411025457984e-05, +-6.327470280312510857e-05, +-6.300352887001888446e-05, +-6.273227275793224285e-05, +-6.246093491394394555e-05, +-6.218951578522653788e-05, +-6.191801581908092111e-05, +-6.164643546288889157e-05, +-6.137477516412293910e-05, +-6.110303537035237278e-05, +-6.083121652924869453e-05, +-6.055931908859617008e-05, +-6.028734349624378523e-05, +-6.001529020014009623e-05, +-5.974315964834498653e-05, +-5.947095228899178075e-05, +-5.919866857030024829e-05, +-5.892630894061020008e-05, +-5.865387384833372942e-05, +-5.838136374196633866e-05, +-5.810877907009191973e-05, +-5.783612028138812095e-05, +-5.756338782463790732e-05, +-5.729058214867438817e-05, +-5.701770370244658087e-05, +-5.674475293496972716e-05, +-5.647173029534386697e-05, +-5.619863623275814132e-05, +-5.592547119650254913e-05, +-5.565223563591880577e-05, +-5.537893000043562705e-05, +-5.510555473958064191e-05, +-5.483211030293099343e-05, +-5.455859714018475391e-05, +-5.428501570107618766e-05, +-5.401136643544726093e-05, +-5.373764979319846656e-05, +-5.346386622430035718e-05, +-5.319001617882919511e-05, +-5.291610010691713334e-05, +-5.264211845876456855e-05, +-5.236807168464484394e-05, +-5.209396023492178615e-05, +-5.181978456000040794e-05, +-5.154554511039914318e-05, +-5.127124233666407289e-05, +-5.099687668944100435e-05, +-5.072244861942012940e-05, +-5.044795857737172172e-05, +-5.017340701415132074e-05, +-4.989879438065065114e-05, +-4.962412112783321855e-05, +-4.934938770674548363e-05, +-4.907459456848033120e-05, +-4.879974216418747184e-05, +-4.852483094511029799e-05, +-4.824986136253558370e-05, +-4.797483386780557353e-05, +-4.769974891232292243e-05, +-4.742460694755585248e-05, +-4.714940842505052632e-05, +-4.687415379638042173e-05, +-4.659884351318272015e-05, +-4.632347802717014479e-05, +-4.604805779008673197e-05, +-4.577258325375031155e-05, +-4.549705487002714331e-05, +-4.522147309084359251e-05, +-4.494583836816068499e-05, +-4.467015115401639107e-05, +-4.439441190046972135e-05, +-4.411862105967348350e-05, +-4.384277908378778998e-05, +-4.356688642505290968e-05, +-4.329094353573906934e-05, +-4.301495086815888125e-05, +-4.273890887470234938e-05, +-4.246281800778771442e-05, +-4.218667871987309535e-05, +-4.191049146346125317e-05, +-4.163425669111762257e-05, +-4.135797485542092646e-05, +-4.108164640903518060e-05, +-4.080527180462351983e-05, +-4.052885149492142238e-05, +-4.025238593268595566e-05, +-3.997587557070847496e-05, +-3.969932086184975841e-05, +-3.942272225899068929e-05, +-3.914608021503722309e-05, +-3.886939518295703347e-05, +-3.859266761573531754e-05, +-3.831589796638681011e-05, +-3.803908668799115586e-05, +-3.776223423364384233e-05, +-3.748534105646723853e-05, +-3.720840760961620564e-05, +-3.693143434628345706e-05, +-3.665442171971087474e-05, +-3.637737018314019156e-05, +-3.610028018984858705e-05, +-3.582315219316026120e-05, +-3.554598664640929383e-05, +-3.526878400295056109e-05, +-3.499154471619637474e-05, +-3.471426923956641235e-05, +-3.443695802649910140e-05, +-3.415961153045718939e-05, +-3.388223020493342233e-05, +-3.360481450346132579e-05, +-3.332736487956607021e-05, +-3.304988178680035119e-05, +-3.277236567875583466e-05, +-3.249481700901314120e-05, +-3.221723623120914797e-05, +-3.193962379898063723e-05, +-3.166198016597578216e-05, +-3.138430578585970336e-05, +-3.110660111233228367e-05, +-3.082886659907782052e-05, +-3.055110269983855517e-05, +-3.027330986832754692e-05, +-2.999548855830180927e-05, +-2.971763922351241296e-05, +-2.943976231771599543e-05, +-2.916185829471096299e-05, +-2.888392760828760062e-05, +-2.860597071223932054e-05, +-2.832798806036851351e-05, +-2.804998010650400789e-05, +-2.777194730445114212e-05, +-2.749389010806510422e-05, +-2.721580897116336216e-05, +-2.693770434759982661e-05, +-2.665957669120763227e-05, +-2.638142645584222803e-05, +-2.610325409535571196e-05, +-2.582506006360861853e-05, +-2.554684481444415535e-05, +-2.526860880173106974e-05, +-2.499035247931928456e-05, +-2.471207630105197692e-05, +-2.443378072080141779e-05, +-2.415546619241915974e-05, +-2.387713316974752266e-05, +-2.359878210662516050e-05, +-2.332041345689216377e-05, +-2.304202767440209417e-05, +-2.276362521297157265e-05, +-2.248520652641664073e-05, +-2.220677206856448694e-05, +-2.192832229320313634e-05, +-2.164985765415496292e-05, +-2.137137860518943834e-05, +-2.109288560009646812e-05, +-2.081437909263013502e-05, +-2.053585953655723750e-05, +-2.025732738560120930e-05, +-1.997878309351532004e-05, +-1.970022711399541053e-05, +-1.942165990075349311e-05, +-1.914308190746747860e-05, +-1.886449358779258747e-05, +-1.858589539539818228e-05, +-1.830728778391711506e-05, +-1.802867120695751126e-05, +-1.775004611810837373e-05, +-1.747141297095726874e-05, +-1.719277221903991397e-05, +-1.691412431591407368e-05, +-1.663546971507191114e-05, +-1.635680887001362624e-05, +-1.607814223419711468e-05, +-1.579947026104975186e-05, +-1.552079340400470010e-05, +-1.524211211645061692e-05, +-1.496342685174349657e-05, +-1.468473806321178438e-05, +-1.440604620417454227e-05, +-1.412735172789102313e-05, +-1.384865508762810658e-05, +-1.356995673660378146e-05, +-1.329125712799881800e-05, +-1.301255671496219050e-05, +-1.273385595061660170e-05, +-1.245515528807017181e-05, +-1.217645518036595704e-05, +-1.189775608051859398e-05, +-1.161905844152589880e-05, +-1.134036271633085588e-05, +-1.106166935783336271e-05, +-1.078297881892673193e-05, +-1.050429155244728444e-05, +-1.022560801118598591e-05, +-9.946928647894040577e-06, +-9.668253915288198773e-06, +-9.389584266062652650e-06, +-9.110920152838436120e-06, +-8.832262028200023465e-06, +-8.553610344707052260e-06, +-8.274965554843835140e-06, +-7.996328111093192265e-06, +-7.717698465848818988e-06, +-7.439077071488981111e-06, +-7.160464380319999998e-06, +-6.881860844625048449e-06, +-6.603266916607687487e-06, +-6.324683048465569229e-06, +-6.046109692302799477e-06, +-5.767547300203683788e-06, +-5.488996324182349348e-06, +-5.210457216194439951e-06, +-4.931930428173635828e-06, +-4.653416411981199279e-06, +-4.374915619417735731e-06, +-4.096428502228652012e-06, +-3.817955512122010962e-06, +-3.539497100718161773e-06, +-3.261053719623524602e-06, +-2.982625820342939604e-06, +-2.704213854353393525e-06, +-2.425818273053679689e-06, +-2.147439527776054017e-06, +-1.869078069822756548e-06, +-1.590734350415624834e-06, +-1.312408820701577212e-06, +-1.034101931789116744e-06, +-7.558141347041514630e-07, +-4.775458804016944382e-07, +-1.992976198023587719e-07, + 7.893019625801497305e-08, + 3.571371170166743246e-07, + 6.353226917784788864e-07, + 9.134864699104194522e-07, + 1.191628000829943933e-06, + 1.469746834055313308e-06, + 1.747842519169113508e-06, + 2.025914605806554397e-06, + 2.303962643705869822e-06, + 2.581986182634525161e-06, + 2.859984772476894336e-06, + 3.137957963160453390e-06, + 3.415905304706196731e-06, + 3.693826347210704600e-06, + 3.971720640840709778e-06, + 4.249587735821390739e-06, + 4.527427182486732003e-06, + 4.805238531243024207e-06, + 5.083021332557206395e-06, + 5.360775137007150128e-06, + 5.638499495214251756e-06, + 5.916193957899910878e-06, + 6.193858075873866701e-06, + 6.471491400028710114e-06, + 6.749093481322023994e-06, + 7.026663870826702051e-06, + 7.304202119657309474e-06, + 7.581707779057524684e-06, + 7.859180400326538948e-06, + 8.136619534869316770e-06, + 8.414024734184960205e-06, + 8.691395549830250862e-06, + 8.968731533469953497e-06, + 9.246032236865071058e-06, + 9.523297211867477879e-06, + 9.800526010401974445e-06, + 1.007771818451660792e-05, + 1.035487328630904805e-05, + 1.063199086801405347e-05, + 1.090907048192980866e-05, + 1.118611168047443623e-05, + 1.146311401614337092e-05, + 1.174007704153477561e-05, + 1.201700030933801660e-05, + 1.229388337235896957e-05, + 1.257072578347759171e-05, + 1.284752709570419011e-05, + 1.312428686210594503e-05, + 1.340100463589436947e-05, + 1.367767997035152239e-05, + 1.395431241888050886e-05, + 1.423090153498733489e-05, + 1.450744687227575411e-05, + 1.478394798443545670e-05, + 1.506040442529215448e-05, + 1.533681574877151764e-05, + 1.561318150888715194e-05, + 1.588950125979096835e-05, + 1.616577455569986055e-05, + 1.644200095098259182e-05, + 1.671818000008665545e-05, + 1.699431125759448387e-05, + 1.727039427817476117e-05, + 1.754642861663881857e-05, + 1.782241382786694934e-05, + 1.809834946689594791e-05, + 1.837423508884550278e-05, + 1.865007024896834080e-05, + 1.892585450263863643e-05, + 1.920158740531568075e-05, + 1.947726851259399199e-05, + 1.975289738019151122e-05, + 2.002847356394445242e-05, + 2.030399661978933183e-05, + 2.057946610381286833e-05, + 2.085488157217908105e-05, + 2.113024258121594420e-05, + 2.140554868734243041e-05, + 2.168079944711830956e-05, + 2.195599441723255111e-05, + 2.223113315446726090e-05, + 2.250621521574741891e-05, + 2.278124015812953577e-05, + 2.305620753879593360e-05, + 2.333111691503715824e-05, + 2.360596784430203887e-05, + 2.388075988413037603e-05, + 2.415549259220928620e-05, + 2.443016552636148909e-05, + 2.470477824454003565e-05, + 2.497933030482254489e-05, + 2.525382126540001628e-05, + 2.552825068462648617e-05, + 2.580261812098269688e-05, + 2.607692313306485827e-05, + 2.635116527963440920e-05, + 2.662534411954493898e-05, + 2.689945921182877438e-05, + 2.717351011562412131e-05, + 2.744749639022507363e-05, + 2.772141759506358487e-05, + 2.799527328970423024e-05, + 2.826906303383238875e-05, + 2.854278638730467900e-05, + 2.881644291011186928e-05, + 2.909003216236814057e-05, + 2.936355370436053295e-05, + 2.963700709647610755e-05, + 2.991039189928850652e-05, + 3.018370767348482699e-05, + 3.045695397992207750e-05, + 3.073013037957826019e-05, + 3.100323643360849177e-05, + 3.127627170327220953e-05, + 3.154923575001967036e-05, + 3.182212813541896357e-05, + 3.209494842120569450e-05, + 3.236769616927166136e-05, + 3.264037094162898170e-05, + 3.291297230045901702e-05, + 3.318549980810159853e-05, + 3.345795302704921987e-05, + 3.373033151992972379e-05, + 3.400263484955531483e-05, + 3.427486257885054119e-05, + 3.454701427093828555e-05, + 3.481908948906702186e-05, + 3.509108779666671272e-05, + 3.536300875730653907e-05, + 3.563485193472039250e-05, + 3.590661689279484736e-05, + 3.617830319559467341e-05, + 3.644991040732070779e-05, + 3.672143809236527804e-05, + 3.699288581524027214e-05, + 3.726425314066211954e-05, + 3.753553963348074890e-05, + 3.780674485872771305e-05, + 3.807786838159957362e-05, + 3.834890976745198535e-05, + 3.861986858178827810e-05, + 3.889074439030899133e-05, + 3.916153675887609542e-05, + 3.943224525350117387e-05, + 3.970286944039531018e-05, + 3.997340888589634460e-05, + 4.024386315655477690e-05, + 4.051423181906159908e-05, + 4.078451444029780284e-05, + 4.105471058731634785e-05, + 4.132481982733729649e-05, + 4.159484172773614502e-05, + 4.186477585609881983e-05, + 4.213462178015636776e-05, + 4.240437906783331152e-05, + 4.267404728723699742e-05, + 4.294362600662136268e-05, + 4.321311479443617175e-05, + 4.348251321931605911e-05, + 4.375182085007457293e-05, + 4.402103725568690237e-05, + 4.429016200533924944e-05, + 4.455919466835635685e-05, + 4.482813481428764112e-05, + 4.509698201283436804e-05, + 4.536573583389949890e-05, + 4.563439584757607596e-05, + 4.590296162411163351e-05, + 4.617143273395656685e-05, + 4.643980874775404240e-05, + 4.670808923633366195e-05, + 4.697627377070625167e-05, + 4.724436192205268807e-05, + 4.751235326177284972e-05, + 4.778024736144991311e-05, + 4.804804379283922604e-05, + 4.831574212791067962e-05, + 4.858334193881410859e-05, + 4.885084279787319954e-05, + 4.911824427763443582e-05, + 4.938554595083197618e-05, + 4.965274739037623677e-05, + 4.991984816940236172e-05, + 5.018684786119898434e-05, + 5.045374603929346567e-05, + 5.072054227737949695e-05, + 5.098723614936661371e-05, + 5.125382722936274018e-05, + 5.152031509166865304e-05, + 5.178669931076689545e-05, + 5.205297946136986146e-05, + 5.231915511838564357e-05, + 5.258522585690546285e-05, + 5.285119125225310848e-05, + 5.311705087991342112e-05, + 5.338280431561661667e-05, + 5.364845113526779289e-05, + 5.391399091500065832e-05, + 5.417942323113082351e-05, + 5.444474766021031609e-05, + 5.470996377895622669e-05, + 5.497507116433510729e-05, + 5.524006939349243036e-05, + 5.550495804380029371e-05, + 5.576973669284669368e-05, + 5.603440491840030893e-05, + 5.629896229845842212e-05, + 5.656340841123676911e-05, + 5.682774283516251872e-05, + 5.709196514885900585e-05, + 5.735607493119247410e-05, + 5.762007176120238192e-05, + 5.788395521818474388e-05, + 5.814772488162179984e-05, + 5.841138033122965205e-05, + 5.867492114694781616e-05, + 5.893834690890391694e-05, + 5.920165719746167768e-05, + 5.946485159320989532e-05, + 5.972792967695728360e-05, + 5.999089102972701828e-05, + 6.025373523274534616e-05, + 6.051646186749639152e-05, + 6.077907051565659580e-05, + 6.104156075914346600e-05, + 6.130393218009815969e-05, + 6.156618436088090430e-05, + 6.182831688405835931e-05, + 6.209032933245328635e-05, + 6.235222128910858071e-05, + 6.261399233727637517e-05, + 6.287564206046655801e-05, + 6.313717004237554096e-05, + 6.339857586697067785e-05, + 6.365985911841904612e-05, + 6.392101938113593773e-05, + 6.418205623976787789e-05, + 6.444296927918689226e-05, + 6.470375808448011225e-05, + 6.496442224099654474e-05, + 6.522496133431351603e-05, + 6.548537495022470497e-05, + 6.574566267478860679e-05, + 6.600582409425743654e-05, + 6.626585879516146648e-05, + 6.652576636423848514e-05, + 6.678554638848704526e-05, + 6.704519845512065619e-05, + 6.730472215162142482e-05, + 6.756411706566947401e-05, + 6.782338278522629066e-05, + 6.808251889846507921e-05, + 6.834152499381811424e-05, + 6.860040065996542407e-05, + 6.885914548580104497e-05, + 6.911775906047964188e-05, + 6.937624097340616778e-05, + 6.963459081423000905e-05, + 6.989280817284071641e-05, + 7.015089263935531973e-05, + 7.040884380416802518e-05, + 7.066666125791363693e-05, + 7.092434459145808396e-05, + 7.118189339593868461e-05, + 7.143930726272516949e-05, + 7.169658578344273437e-05, + 7.195372854996133364e-05, + 7.221073515441979028e-05, + 7.246760518918540935e-05, + 7.272433824690704963e-05, + 7.298093392044616840e-05, + 7.323739180295899041e-05, + 7.349371148782660396e-05, + 7.374989256870292324e-05, + 7.400593463949763930e-05, + 7.426183729437093456e-05, + 7.451760012772272207e-05, + 7.477322273423934757e-05, + 7.502870470886012825e-05, + 7.528404564676542655e-05, + 7.553924514342449058e-05, + 7.579430279452592967e-05, + 7.604921819606043896e-05, + 7.630399094425021787e-05, + 7.655862063559797602e-05, + 7.681310686686869155e-05, + 7.706744923508509809e-05, + 7.732164733751646331e-05, + 7.757570077173155218e-05, + 7.782960913553590586e-05, + 7.808337202701747307e-05, + 7.833698904453712333e-05, + 7.859045978669456235e-05, + 7.884378385237392271e-05, + 7.909696084073381634e-05, + 7.934999035120168310e-05, + 7.960287198346967079e-05, + 7.985560533748230238e-05, + 8.010819001348453328e-05, + 8.036062561198636565e-05, + 8.061291173375375468e-05, + 8.086504797984227309e-05, + 8.111703395158662141e-05, + 8.136886925056758700e-05, + 8.162055347865717389e-05, + 8.187208623800917026e-05, + 8.212346713105298207e-05, + 8.237469576048921484e-05, + 8.262577172927842517e-05, + 8.287669464068779556e-05, + 8.312746409825732088e-05, + 8.337807970578895280e-05, + 8.362854106738702698e-05, + 8.387884778742545240e-05, + 8.412899947054162627e-05, + 8.437899572168356972e-05, + 8.462883614607497583e-05, + 8.487852034920627853e-05, + 8.512804793687915909e-05, + 8.537741851514049109e-05, + 8.562663169036076891e-05, + 8.587568706916809337e-05, + 8.612458425849309836e-05, + 8.637332286555362290e-05, + 8.662190249784851770e-05, + 8.687032276314780594e-05, + 8.711858326953821985e-05, + 8.736668362538969879e-05, + 8.761462343934517069e-05, + 8.786240232036602075e-05, + 8.811001987766502001e-05, + 8.835747572078621749e-05, + 8.860476945953723172e-05, + 8.885190070404089951e-05, + 8.909886906469182647e-05, + 8.934567415220520323e-05, + 8.959231557755309504e-05, + 8.983879295204082378e-05, + 9.008510588724239019e-05, + 9.033125399504443826e-05, + 9.057723688763621279e-05, + 9.082305417747731796e-05, + 9.106870547734164105e-05, + 9.131419040030767595e-05, + 9.155950855975402368e-05, + 9.180465956935269752e-05, + 9.204964304306053062e-05, + 9.229445859516333020e-05, + 9.253910584024272802e-05, + 9.278358439316684273e-05, + 9.302789386912300919e-05, + 9.327203388360842727e-05, + 9.351600405239619915e-05, + 9.375980399158142153e-05, + 9.400343331757542577e-05, + 9.424689164707390234e-05, + 9.449017859710680126e-05, + 9.473329378497257521e-05, + 9.497623682831591685e-05, + 9.521900734506333005e-05, + 9.546160495346633543e-05, + 9.570402927208584423e-05, + 9.594627991978818744e-05, + 9.618835651573434155e-05, + 9.643025867942331018e-05, + 9.667198603066115656e-05, + 9.691353818955078493e-05, + 9.715491477653449544e-05, + 9.739611541233146640e-05, + 9.763713971801242866e-05, + 9.787798731493671414e-05, + 9.811865782479570522e-05, + 9.835915086959616516e-05, + 9.859946607165743268e-05, + 9.883960305359879104e-05, + 9.907956143838562795e-05, + 9.931934084929586594e-05, + 9.955894090991099059e-05, + 9.979836124415832088e-05, + 1.000376014762546713e-04, + 1.002766612307520646e-04, + 1.005155401325313891e-04, + 1.007542378067946738e-04, + 1.009927538790607245e-04, + 1.012310879751568025e-04, + 1.014692397212601903e-04, + 1.017072087438675220e-04, + 1.019449946697835484e-04, + 1.021825971261563197e-04, + 1.024200157404642149e-04, + 1.026572501404859645e-04, + 1.028942999543438417e-04, + 1.031311648104932005e-04, + 1.033678443377183552e-04, + 1.036043381651270646e-04, + 1.038406459221406254e-04, + 1.040767672385377687e-04, + 1.043127017444226486e-04, + 1.045484490702140550e-04, + 1.047840088466855826e-04, + 1.050193807049260041e-04, + 1.052545642763632846e-04, + 1.054895591927535635e-04, + 1.057243650862038420e-04, + 1.059589815891338725e-04, + 1.061934083343259920e-04, + 1.064276449548608828e-04, + 1.066616910841935344e-04, + 1.068955463560893840e-04, + 1.071292104046671020e-04, + 1.073626828643847411e-04, + 1.075959633700326212e-04, + 1.078290515567256047e-04, + 1.080619470599444588e-04, + 1.082946495155056736e-04, + 1.085271585595506478e-04, + 1.087594738285886360e-04, + 1.089915949594353700e-04, + 1.092235215892851984e-04, + 1.094552533556502087e-04, + 1.096867898964073767e-04, + 1.099181308497617986e-04, + 1.101492758542700552e-04, + 1.103802245488280285e-04, + 1.106109765726941710e-04, + 1.108415315654530636e-04, + 1.110718891670516272e-04, + 1.113020490177902601e-04, + 1.115320107582918154e-04, + 1.117617740295434792e-04, + 1.119913384728875137e-04, + 1.122207037300161072e-04, + 1.124498694429673223e-04, + 1.126788352541142397e-04, + 1.129076008062086388e-04, + 1.131361657423486877e-04, + 1.133645297059698094e-04, + 1.135926923408773565e-04, + 1.138206532912348342e-04, + 1.140484122015352235e-04, + 1.142759687166414889e-04, + 1.145033224817782852e-04, + 1.147304731425253296e-04, + 1.149574203448154504e-04, + 1.151841637349217124e-04, + 1.154107029595074791e-04, + 1.156370376655670672e-04, + 1.158631675004713366e-04, + 1.160890921119490964e-04, + 1.163148111480841917e-04, + 1.165403242573064224e-04, + 1.167656310884315377e-04, + 1.169907312906327211e-04, + 1.172156245134290976e-04, + 1.174403104067290210e-04, + 1.176647886207682066e-04, + 1.178890588061811795e-04, + 1.181131206139427961e-04, + 1.183369736954062587e-04, + 1.185606177022924495e-04, + 1.187840522866813524e-04, + 1.190072771010049506e-04, + 1.192302917980883050e-04, + 1.194530960311181395e-04, + 1.196756894536346409e-04, + 1.198980717195717517e-04, + 1.201202424831977143e-04, + 1.203422013991849616e-04, + 1.205639481225522208e-04, + 1.207854823087087622e-04, + 1.210068036134192985e-04, + 1.212279116928271860e-04, + 1.214488062034416724e-04, + 1.216694868021609766e-04, + 1.218899531462359811e-04, + 1.221102048933071088e-04, + 1.223302417013945244e-04, + 1.225500632288682647e-04, + 1.227696691344890587e-04, + 1.229890590773982987e-04, + 1.232082327171150861e-04, + 1.234271897135294819e-04, + 1.236459297268950803e-04, + 1.238644524178690695e-04, + 1.240827574474810072e-04, + 1.243008444771262337e-04, + 1.245187131685942237e-04, + 1.247363631840596150e-04, + 1.249537941860532600e-04, + 1.251710058375028560e-04, + 1.253879978017266843e-04, + 1.256047697424062610e-04, + 1.258213213236311417e-04, + 1.260376522098394800e-04, + 1.262537620658876606e-04, + 1.264696505569923757e-04, + 1.266853173487697917e-04, + 1.269007621072218070e-04, + 1.271159844987306854e-04, + 1.273309841900521712e-04, + 1.275457608483517827e-04, + 1.277603141411787918e-04, + 1.279746437364554629e-04, + 1.281887493025173855e-04, + 1.284026305080549814e-04, + 1.286162870221818904e-04, + 1.288297185143782672e-04, + 1.290429246545293242e-04, + 1.292559051129163331e-04, + 1.294686595601869986e-04, + 1.296811876673976342e-04, + 1.298934891060002058e-04, + 1.301055635478408953e-04, + 1.303174106651442169e-04, + 1.305290301305544608e-04, + 1.307404216170798025e-04, + 1.309515847981396826e-04, + 1.311625193475530701e-04, + 1.313732249395351828e-04, + 1.315837012486934486e-04, + 1.317939479500181003e-04, + 1.320039647189207184e-04, + 1.322137512312066389e-04, + 1.324233071630652220e-04, + 1.326326321910991529e-04, + 1.328417259923160391e-04, + 1.330505882440998150e-04, + 1.332592186242487968e-04, + 1.334676168109677138e-04, + 1.336757824828629926e-04, + 1.338837153189382026e-04, + 1.340914149985854916e-04, + 1.342988812016233696e-04, + 1.345061136082697942e-04, + 1.347131118991324119e-04, + 1.349198757552423861e-04, + 1.351264048580218431e-04, + 1.353326988893031445e-04, + 1.355387575313198067e-04, + 1.357445804667266939e-04, + 1.359501673785657035e-04, + 1.361555179503109233e-04, + 1.363606318658110324e-04, + 1.365655088093556012e-04, + 1.367701484656212599e-04, + 1.369745505197064478e-04, + 1.371787146571244742e-04, + 1.373826405637766299e-04, + 1.375863279259888336e-04, + 1.377897764305021993e-04, + 1.379929857644699733e-04, + 1.381959556154448219e-04, + 1.383986856714140682e-04, + 1.386011756207469726e-04, + 1.388034251522580770e-04, + 1.390054339551535377e-04, + 1.392072017190727577e-04, + 1.394087281340555362e-04, + 1.396100128905637520e-04, + 1.398110556794685975e-04, + 1.400118561920739161e-04, + 1.402124141200802876e-04, + 1.404127291556209157e-04, + 1.406128009912509485e-04, + 1.408126293199211596e-04, + 1.410122138350151358e-04, + 1.412115542303406853e-04, + 1.414106502001250128e-04, + 1.416095014390113857e-04, + 1.418081076420504058e-04, + 1.420064685047358970e-04, + 1.422045837229798601e-04, + 1.424024529931021724e-04, + 1.426000760118599432e-04, + 1.427974524764362917e-04, + 1.429945820844170370e-04, + 1.431914645338243624e-04, + 1.433880995231100121e-04, + 1.435844867511508461e-04, + 1.437806259172441778e-04, + 1.439765167210998867e-04, + 1.441721588628815370e-04, + 1.443675520431566390e-04, + 1.445626959629334586e-04, + 1.447575903236477898e-04, + 1.449522348271595120e-04, + 1.451466291757433748e-04, + 1.453407730721252913e-04, + 1.455346662194575101e-04, + 1.457283083213071226e-04, + 1.459216990816948232e-04, + 1.461148382050415126e-04, + 1.463077253962289856e-04, + 1.465003603605500042e-04, + 1.466927428037423950e-04, + 1.468848724319809455e-04, + 1.470767489518514911e-04, + 1.472683720703863960e-04, + 1.474597414950573702e-04, + 1.476508569337692083e-04, + 1.478417180948494352e-04, + 1.480323246870826755e-04, + 1.482226764196572838e-04, + 1.484127730022310196e-04, + 1.486026141448739649e-04, + 1.487921995581122168e-04, + 1.489815289529002680e-04, + 1.491706020406170221e-04, + 1.493594185331019789e-04, + 1.495479781426295928e-04, + 1.497362805818989464e-04, + 1.499243255640644054e-04, + 1.501121128027223109e-04, + 1.502996420118884275e-04, + 1.504869129060341015e-04, + 1.506739252000742263e-04, + 1.508606786093673509e-04, + 1.510471728497085782e-04, + 1.512334076373239274e-04, + 1.514193826889037272e-04, + 1.516050977215765137e-04, + 1.517905524529039075e-04, + 1.519757466009073938e-04, + 1.521606798840415421e-04, + 1.523453520212093208e-04, + 1.525297627317569475e-04, + 1.527139117354878205e-04, + 1.528977987526351160e-04, + 1.530814235039011715e-04, + 1.532647857104050648e-04, + 1.534478850937438712e-04, + 1.536307213759412454e-04, + 1.538132942794831189e-04, + 1.539956035273075082e-04, + 1.541776488427810423e-04, + 1.543594299497340902e-04, + 1.545409465724494860e-04, + 1.547221984356627450e-04, + 1.549031852645472106e-04, + 1.550839067847477185e-04, + 1.552643627223333799e-04, + 1.554445528038544749e-04, + 1.556244767562921726e-04, + 1.558041343070949876e-04, + 1.559835251841674227e-04, + 1.561626491158486102e-04, + 1.563415058309439978e-04, + 1.565200950587225569e-04, + 1.566984165288907343e-04, + 1.568764699716245718e-04, + 1.570542551175596775e-04, + 1.572317716977668584e-04, + 1.574090194437870855e-04, + 1.575859980876218177e-04, + 1.577627073617310772e-04, + 1.579391469990280557e-04, + 1.581153167328726360e-04, + 1.582912162971039725e-04, + 1.584668454260160155e-04, + 1.586422038543501382e-04, + 1.588172913173202636e-04, + 1.589921075506053015e-04, + 1.591666522903234808e-04, + 1.593409252730671789e-04, + 1.595149262358947092e-04, + 1.596886549163257130e-04, + 1.598621110523387745e-04, + 1.600352943823628283e-04, + 1.602082046453102548e-04, + 1.603808415805530547e-04, + 1.605532049279154497e-04, + 1.607252944277053508e-04, + 1.608971098206716144e-04, + 1.610686508480406605e-04, + 1.612399172515082877e-04, + 1.614109087732360946e-04, + 1.615816251558399065e-04, + 1.617520661424220844e-04, + 1.619222314765243623e-04, + 1.620921209021840899e-04, + 1.622617341638860945e-04, + 1.624310710065953421e-04, + 1.626001311757492671e-04, + 1.627689144172347056e-04, + 1.629374204774202859e-04, + 1.631056491031468881e-04, + 1.632736000417265318e-04, + 1.634412730409299901e-04, + 1.636086678490175259e-04, + 1.637757842146943049e-04, + 1.639426218871636290e-04, + 1.641091806160817530e-04, + 1.642754601515927955e-04, + 1.644414602443021217e-04, + 1.646071806452910618e-04, + 1.647726211061114351e-04, + 1.649377813788007298e-04, + 1.651026612158541839e-04, + 1.652672603702540319e-04, + 1.654315785954606959e-04, + 1.655956156453911553e-04, + 1.657593712744491151e-04, + 1.659228452375180398e-04, + 1.660860372899586595e-04, + 1.662489471876033595e-04, + 1.664115746867512471e-04, + 1.665739195441972350e-04, + 1.667359815172107915e-04, + 1.668977603635273747e-04, + 1.670592558413813386e-04, + 1.672204677094578482e-04, + 1.673813957269489603e-04, + 1.675420396535066232e-04, + 1.677023992492742538e-04, + 1.678624742748758961e-04, + 1.680222644914128598e-04, + 1.681817696604550466e-04, + 1.683409895440778135e-04, + 1.684999239048176557e-04, + 1.686585725057054646e-04, + 1.688169351102581793e-04, + 1.689750114824572656e-04, + 1.691328013867780973e-04, + 1.692903045881822318e-04, + 1.694475208521169761e-04, + 1.696044499445012921e-04, + 1.697610916317571304e-04, + 1.699174456807660619e-04, + 1.700735118589210757e-04, + 1.702292899340809883e-04, + 1.703847796746026447e-04, + 1.705399808493314852e-04, + 1.706948932275830606e-04, + 1.708495165791685643e-04, + 1.710038506743923395e-04, + 1.711578952840444516e-04, + 1.713116501793928554e-04, + 1.714651151322119907e-04, + 1.716182899147391703e-04, + 1.717711742997252936e-04, + 1.719237680603944601e-04, + 1.720760709704725650e-04, + 1.722280828041689222e-04, + 1.723798033361733100e-04, + 1.725312323416824251e-04, + 1.726823695963815601e-04, + 1.728332148764354960e-04, + 1.729837679585122462e-04, + 1.731340286197742475e-04, + 1.732839966378591423e-04, + 1.734336717909074532e-04, + 1.735830538575562404e-04, + 1.737321426169350898e-04, + 1.738809378486646498e-04, + 1.740294393328481470e-04, + 1.741776468501002534e-04, + 1.743255601815268659e-04, + 1.744731791087191159e-04, + 1.746205034137789840e-04, + 1.747675328792804310e-04, + 1.749142672883174552e-04, + 1.750607064244628930e-04, + 1.752068500717989929e-04, + 1.753526980148919644e-04, + 1.754982500388207903e-04, + 1.756435059291398761e-04, + 1.757884654719224721e-04, + 1.759331284537252204e-04, + 1.760774946616118172e-04, + 1.762215638831480797e-04, + 1.763653359063812112e-04, + 1.765088105198690197e-04, + 1.766519875126718140e-04, + 1.767948666743484189e-04, + 1.769374477949493178e-04, + 1.770797306650402885e-04, + 1.772217150756665699e-04, + 1.773634008183963659e-04, + 1.775047876852819224e-04, + 1.776458754688888008e-04, + 1.777866639622866082e-04, + 1.779271529590305658e-04, + 1.780673422531888308e-04, + 1.782072316393379428e-04, + 1.783468209125459647e-04, + 1.784861098683924042e-04, + 1.786250983029655042e-04, + 1.787637860128390402e-04, + 1.789021727951028138e-04, + 1.790402584473525154e-04, + 1.791780427676913773e-04, + 1.793155255547213109e-04, + 1.794527066075422015e-04, + 1.795895857257750561e-04, + 1.797261627095433553e-04, + 1.798624373594677678e-04, + 1.799984094766908429e-04, + 1.801340788628406084e-04, + 1.802694453200738307e-04, + 1.804045086510388531e-04, + 1.805392686589013464e-04, + 1.806737251473346587e-04, + 1.808078779205180269e-04, + 1.809417267831292856e-04, + 1.810752715403707248e-04, + 1.812085119979505506e-04, + 1.813414479620768674e-04, + 1.814740792394841057e-04, + 1.816064056373962944e-04, + 1.817384269635580153e-04, + 1.818701430262277346e-04, + 1.820015536341739544e-04, + 1.821326585966668644e-04, + 1.822634577235041184e-04, + 1.823939508249728606e-04, + 1.825241377118932832e-04, + 1.826540181955831998e-04, + 1.827835920878812751e-04, + 1.829128592011426062e-04, + 1.830418193482186921e-04, + 1.831704723424854334e-04, + 1.832988179978331305e-04, + 1.834268561286665647e-04, + 1.835545865498958639e-04, + 1.836820090769590000e-04, + 1.838091235257897503e-04, + 1.839359297128561872e-04, + 1.840624274551261731e-04, + 1.841886165700954683e-04, + 1.843144968757661286e-04, + 1.844400681906588108e-04, + 1.845653303338078122e-04, + 1.846902831247723199e-04, + 1.848149263836165420e-04, + 1.849392599309357019e-04, + 1.850632835878211811e-04, + 1.851869971759033178e-04, + 1.853104005173148155e-04, + 1.854334934347151370e-04, + 1.855562757512814790e-04, + 1.856787472907064950e-04, + 1.858009078771934435e-04, + 1.859227573354777093e-04, + 1.860442954908120045e-04, + 1.861655221689584533e-04, + 1.862864371962144779e-04, + 1.864070403993762874e-04, + 1.865273316057797801e-04, + 1.866473106432688296e-04, + 1.867669773402161836e-04, + 1.868863315255072819e-04, + 1.870053730285599889e-04, + 1.871241016792958621e-04, + 1.872425173081748468e-04, + 1.873606197461678456e-04, + 1.874784088247746078e-04, + 1.875958843760184983e-04, + 1.877130462324339477e-04, + 1.878298942270841790e-04, + 1.879464281935597171e-04, + 1.880626479659730217e-04, + 1.881785533789518468e-04, + 1.882941442676616293e-04, + 1.884094204677731798e-04, + 1.885243818154983529e-04, + 1.886390281475620477e-04, + 1.887533593012192298e-04, + 1.888673751142546330e-04, + 1.889810754249634335e-04, + 1.890944600721734489e-04, + 1.892075288952422651e-04, + 1.893202817340508667e-04, + 1.894327184289998963e-04, + 1.895448388210284926e-04, + 1.896566427515861825e-04, + 1.897681300626566521e-04, + 1.898793005967539796e-04, + 1.899901541969182162e-04, + 1.901006907067138963e-04, + 1.902109099702256731e-04, + 1.903208118320785661e-04, + 1.904303961374221861e-04, + 1.905396627319271301e-04, + 1.906486114618047680e-04, + 1.907572421737767766e-04, + 1.908655547151114876e-04, + 1.909735489335942071e-04, + 1.910812246775448885e-04, + 1.911885817958143921e-04, + 1.912956201377799038e-04, + 1.914023395533403550e-04, + 1.915087398929382959e-04, + 1.916148210075430364e-04, + 1.917205827486461193e-04, + 1.918260249682832218e-04, + 1.919311475190014116e-04, + 1.920359502538986399e-04, + 1.921404330265896970e-04, + 1.922445956912300377e-04, + 1.923484381024987593e-04, + 1.924519601156174126e-04, + 1.925551615863224902e-04, + 1.926580423709002294e-04, + 1.927606023261560649e-04, + 1.928628413094348761e-04, + 1.929647591786181682e-04, + 1.930663557921075656e-04, + 1.931676310088432968e-04, + 1.932685846883044390e-04, + 1.933692166905002174e-04, + 1.934695268759673752e-04, + 1.935695151057896090e-04, + 1.936691812415659365e-04, + 1.937685251454481828e-04, + 1.938675466801083195e-04, + 1.939662457087617739e-04, + 1.940646220951601118e-04, + 1.941626757035784870e-04, + 1.942604063988335311e-04, + 1.943578140462825675e-04, + 1.944548985118079441e-04, + 1.945516596618408051e-04, + 1.946480973633303807e-04, + 1.947442114837783563e-04, + 1.948400018912102496e-04, + 1.949354684541979347e-04, + 1.950306110418453581e-04, + 1.951254295237940680e-04, + 1.952199237702138899e-04, + 1.953140936518237437e-04, + 1.954079390398771421e-04, + 1.955014598061582064e-04, + 1.955946558229997728e-04, + 1.956875269632571814e-04, + 1.957800731003372517e-04, + 1.958722941081762737e-04, + 1.959641898612540204e-04, + 1.960557602345887340e-04, + 1.961470051037344424e-04, + 1.962379243447781401e-04, + 1.963285178343556717e-04, + 1.964187854496406735e-04, + 1.965087270683376611e-04, + 1.965983425687039578e-04, + 1.966876318295201229e-04, + 1.967765947301158098e-04, + 1.968652311503603879e-04, + 1.969535409706638367e-04, + 1.970415240719707018e-04, + 1.971291803357740806e-04, + 1.972165096440951315e-04, + 1.973035118795093924e-04, + 1.973901869251218171e-04, + 1.974765346645848544e-04, + 1.975625549820943282e-04, + 1.976482477623764541e-04, + 1.977336128907054304e-04, + 1.978186502528973942e-04, + 1.979033597353131854e-04, + 1.979877412248495924e-04, + 1.980717946089412761e-04, + 1.981555197755744584e-04, + 1.982389166132752394e-04, + 1.983219850111072669e-04, + 1.984047248586820087e-04, + 1.984871360461501065e-04, + 1.985692184642057938e-04, + 1.986509720040835621e-04, + 1.987323965575675121e-04, + 1.988134920169772589e-04, + 1.988942582751843850e-04, + 1.989746952255906480e-04, + 1.990548027621549766e-04, + 1.991345807793701880e-04, + 1.992140291722794675e-04, + 1.992931478364680473e-04, + 1.993719366680648327e-04, + 1.994503955637358698e-04, + 1.995285244207028856e-04, + 1.996063231367278920e-04, + 1.996837916101132403e-04, + 1.997609297397139809e-04, + 1.998377374249188626e-04, + 1.999142145656718000e-04, + 1.999903610624558003e-04, + 2.000661768163032085e-04, + 2.001416617287862213e-04, + 2.002168157020303848e-04, + 2.002916386386952691e-04, + 2.003661304419972092e-04, + 2.004402910156911986e-04, + 2.005141202640807832e-04, + 2.005876180920193618e-04, + 2.006607844048973117e-04, + 2.007336191086553237e-04, + 2.008061221097836170e-04, + 2.008782933153171405e-04, + 2.009501326328335140e-04, + 2.010216399704653598e-04, + 2.010928152368794328e-04, + 2.011636583413016922e-04, + 2.012341691934961595e-04, + 2.013043477037800434e-04, + 2.013741937830175054e-04, + 2.014437073426139136e-04, + 2.015128882945245708e-04, + 2.015817365512557709e-04, + 2.016502520258608153e-04, + 2.017184346319387384e-04, + 2.017862842836306756e-04, + 2.018538008956377800e-04, + 2.019209843831985623e-04, + 2.019878346621059400e-04, + 2.020543516487000274e-04, + 2.021205352598687320e-04, + 2.021863854130416288e-04, + 2.022519020262069007e-04, + 2.023170850178980843e-04, + 2.023819343071932297e-04, + 2.024464498137267725e-04, + 2.025106314576713732e-04, + 2.025744791597587613e-04, + 2.026379928412623066e-04, + 2.027011724240089182e-04, + 2.027640178303754669e-04, + 2.028265289832845565e-04, + 2.028887058062064756e-04, + 2.029505482231652692e-04, + 2.030120561587350791e-04, + 2.030732295380347234e-04, + 2.031340682867396495e-04, + 2.031945723310646683e-04, + 2.032547415977847707e-04, + 2.033145760142185941e-04, + 2.033740755082388840e-04, + 2.034332400082637399e-04, + 2.034920694432678907e-04, + 2.035505637427664858e-04, + 2.036087228368343668e-04, + 2.036665466560915122e-04, + 2.037240351317101119e-04, + 2.037811881954159222e-04, + 2.038380057794774239e-04, + 2.038944878167170437e-04, + 2.039506342405117509e-04, + 2.040064449847869583e-04, + 2.040619199840185550e-04, + 2.041170591732290854e-04, + 2.041718624879989966e-04, + 2.042263298644569631e-04, + 2.042804612392812140e-04, + 2.043342565497042768e-04, + 2.043877157335071229e-04, + 2.044408387290218504e-04, + 2.044936254751325252e-04, + 2.045460759112770503e-04, + 2.045981899774401735e-04, + 2.046499676141641120e-04, + 2.047014087625342415e-04, + 2.047525133641960092e-04, + 2.048032813613395926e-04, + 2.048537126967124762e-04, + 2.049038073136117267e-04, + 2.049535651558868660e-04, + 2.050029861679338267e-04, + 2.050520702947079084e-04, + 2.051008174817138573e-04, + 2.051492276750059205e-04, + 2.051973008211959771e-04, + 2.052450368674395796e-04, + 2.052924357614533280e-04, + 2.053394974514983898e-04, + 2.053862218863935921e-04, + 2.054326090155092954e-04, + 2.054786587887660388e-04, + 2.055243711566345397e-04, + 2.055697460701448012e-04, + 2.056147834808723157e-04, + 2.056594833409495300e-04, + 2.057038456030622410e-04, + 2.057478702204423035e-04, + 2.057915571468790696e-04, + 2.058349063367146715e-04, + 2.058779177448432089e-04, + 2.059205913267112096e-04, + 2.059629270383152983e-04, + 2.060049248362081601e-04, + 2.060465846774959110e-04, + 2.060879065198345202e-04, + 2.061288903214333066e-04, + 2.061695360410582725e-04, + 2.062098436380218041e-04, + 2.062498130721929712e-04, + 2.062894443039932173e-04, + 2.063287372943992061e-04, + 2.063676920049374813e-04, + 2.064063083976850363e-04, + 2.064445864352779602e-04, + 2.064825260809035506e-04, + 2.065201272982983890e-04, + 2.065573900517568790e-04, + 2.065943143061252558e-04, + 2.066309000267983070e-04, + 2.066671471797295635e-04, + 2.067030557314252827e-04, + 2.067386256489403009e-04, + 2.067738568998889030e-04, + 2.068087494524313238e-04, + 2.068433032752880324e-04, + 2.068775183377263968e-04, + 2.069113946095716338e-04, + 2.069449320612013344e-04, + 2.069781306635438370e-04, + 2.070109903880813990e-04, + 2.070435112068516061e-04, + 2.070756930924445263e-04, + 2.071075360180002706e-04, + 2.071390399572179916e-04, + 2.071702048843428461e-04, + 2.072010307741800627e-04, + 2.072315176020825549e-04, + 2.072616653439615729e-04, + 2.072914739762765125e-04, + 2.073209434760444562e-04, + 2.073500738208315262e-04, + 2.073788649887598509e-04, + 2.074073169585037698e-04, + 2.074354297092904031e-04, + 2.074632032209032290e-04, + 2.074906374736738173e-04, + 2.075177324484887408e-04, + 2.075444881267890875e-04, + 2.075709044905697559e-04, + 2.075969815223763920e-04, + 2.076227192053062569e-04, + 2.076481175230136746e-04, + 2.076731764597056142e-04, + 2.076978960001387353e-04, + 2.077222761296263268e-04, + 2.077463168340337805e-04, + 2.077700180997767480e-04, + 2.077933799138270764e-04, + 2.078164022637087971e-04, + 2.078390851374976379e-04, + 2.078614285238257117e-04, + 2.078834324118721661e-04, + 2.079050967913746749e-04, + 2.079264216526202776e-04, + 2.079474069864499595e-04, + 2.079680527842585976e-04, + 2.079883590379929821e-04, + 2.080083257401508948e-04, + 2.080279528837843345e-04, + 2.080472404624995441e-04, + 2.080661884704521319e-04, + 2.080847969023546878e-04, + 2.081030657534664835e-04, + 2.081209950196049110e-04, + 2.081385846971358332e-04, + 2.081558347829802513e-04, + 2.081727452746109442e-04, + 2.081893161700539322e-04, + 2.082055474678834082e-04, + 2.082214391672307092e-04, + 2.082369912677777576e-04, + 2.082522037697578194e-04, + 2.082670766739592994e-04, + 2.082816099817182869e-04, + 2.082958036949264979e-04, + 2.083096578160256913e-04, + 2.083231723480118971e-04, + 2.083363472944315135e-04, + 2.083491826593815779e-04, + 2.083616784475141579e-04, + 2.083738346640311200e-04, + 2.083856513146862437e-04, + 2.083971284057853032e-04, + 2.084082659441870698e-04, + 2.084190639372995174e-04, + 2.084295223930826687e-04, + 2.084396413200494895e-04, + 2.084494207272642621e-04, + 2.084588606243423421e-04, + 2.084679610214479621e-04, + 2.084767219293009544e-04, + 2.084851433591694320e-04, + 2.084932253228736652e-04, + 2.085009678327852682e-04, + 2.085083709018262775e-04, + 2.085154345434697481e-04, + 2.085221587717404044e-04, + 2.085285436012127155e-04, + 2.085345890470140392e-04, + 2.085402951248193639e-04, + 2.085456618508559979e-04, + 2.085506892419028912e-04, + 2.085553773152875191e-04, + 2.085597260888897848e-04, + 2.085637355811386317e-04, + 2.085674058110129102e-04, + 2.085707367980433029e-04, + 2.085737285623092611e-04, + 2.085763811244412006e-04, + 2.085786945056190920e-04, + 2.085806687275739519e-04, + 2.085823038125837769e-04, + 2.085835997834797504e-04, + 2.085845566636412829e-04, + 2.085851744769966079e-04, + 2.085854532480255197e-04, + 2.085853930017558225e-04, + 2.085849937637640082e-04, + 2.085842555601779939e-04, + 2.085831784176741675e-04, + 2.085817623634763035e-04, + 2.085800074253599539e-04, + 2.085779136316475964e-04, + 2.085754810112118332e-04, + 2.085727095934725172e-04, + 2.085695994084007371e-04, + 2.085661504865141548e-04, + 2.085623628588790385e-04, + 2.085582365571107507e-04, + 2.085537716133729078e-04, + 2.085489680603780577e-04, + 2.085438259313845087e-04, + 2.085383452602012895e-04, + 2.085325260811845172e-04, + 2.085263684292374515e-04, + 2.085198723398114706e-04, + 2.085130378489058814e-04, + 2.085058649930685427e-04, + 2.084983538093926943e-04, + 2.084905043355201010e-04, + 2.084823166096389652e-04, + 2.084737906704870445e-04, + 2.084649265573458512e-04, + 2.084557243100465334e-04, + 2.084461839689643193e-04, + 2.084363055750249136e-04, + 2.084260891696974231e-04, + 2.084155347949991272e-04, + 2.084046424934927675e-04, + 2.083934123082878214e-04, + 2.083818442830405568e-04, + 2.083699384619522700e-04, + 2.083576948897705055e-04, + 2.083451136117891913e-04, + 2.083321946738469317e-04, + 2.083189381223303136e-04, + 2.083053440041685131e-04, + 2.082914123668376050e-04, + 2.082771432583584755e-04, + 2.082625367272974190e-04, + 2.082475928227662729e-04, + 2.082323115944206024e-04, + 2.082166930924617056e-04, + 2.082007373676348792e-04, + 2.081844444712304754e-04, + 2.081678144550833326e-04, + 2.081508473715723963e-04, + 2.081335432736197699e-04, + 2.081159022146940221e-04, + 2.080979242488058495e-04, + 2.080796094305088361e-04, + 2.080609578149022446e-04, + 2.080419694576282792e-04, + 2.080226444148717603e-04, + 2.080029827433615606e-04, + 2.079829845003696570e-04, + 2.079626497437107781e-04, + 2.079419785317420245e-04, + 2.079209709233639260e-04, + 2.078996269780195201e-04, + 2.078779467556942436e-04, + 2.078559303169148212e-04, + 2.078335777227523012e-04, + 2.078108890348182611e-04, + 2.077878643152656203e-04, + 2.077645036267914054e-04, + 2.077408070326308676e-04, + 2.077167745965636636e-04, + 2.076924063829093824e-04, + 2.076677024565294974e-04, + 2.076426628828261195e-04, + 2.076172877277411024e-04, + 2.075915770577579672e-04, + 2.075655309399033934e-04, + 2.075391494417404693e-04, + 2.075124326313731104e-04, + 2.074853805774481464e-04, + 2.074579933491489789e-04, + 2.074302710162024654e-04, + 2.074022136488713308e-04, + 2.073738213179616204e-04, + 2.073450940948154636e-04, + 2.073160320513145699e-04, + 2.072866352598817471e-04, + 2.072569037934784888e-04, + 2.072268377256032126e-04, + 2.071964371302931847e-04, + 2.071657020821260104e-04, + 2.071346326562137526e-04, + 2.071032289282114696e-04, + 2.070714909743092736e-04, + 2.070394188712354748e-04, + 2.070070126962550363e-04, + 2.069742725271707395e-04, + 2.069411984423251362e-04, + 2.069077905205953980e-04, + 2.068740488413949973e-04, + 2.068399734846757942e-04, + 2.068055645309257865e-04, + 2.067708220611675924e-04, + 2.067357461569643048e-04, + 2.067003369004122271e-04, + 2.066645943741433672e-04, + 2.066285186613242987e-04, + 2.065921098456597661e-04, + 2.065553680113901369e-04, + 2.065182932432890707e-04, + 2.064808856266653618e-04, + 2.064431452473634008e-04, + 2.064050721917616018e-04, + 2.063666665467730533e-04, + 2.063279283998460873e-04, + 2.062888578389624090e-04, + 2.062494549526364736e-04, + 2.062097198299189555e-04, + 2.061696525603902972e-04, + 2.061292532341701966e-04, + 2.060885219419057886e-04, + 2.060474587747799667e-04, + 2.060060638245083742e-04, + 2.059643371833361246e-04, + 2.059222789440463667e-04, + 2.058798891999520989e-04, + 2.058371680448961420e-04, + 2.057941155732541751e-04, + 2.057507318799364434e-04, + 2.057070170603795178e-04, + 2.056629712105571372e-04, + 2.056185944269692581e-04, + 2.055738868066494813e-04, + 2.055288484471596308e-04, + 2.054834794465952292e-04, + 2.054377799035796972e-04, + 2.053917499172678500e-04, + 2.053453895873417502e-04, + 2.052986990140178098e-04, + 2.052516782980382784e-04, + 2.052043275406732498e-04, + 2.051566468437269228e-04, + 2.051086363095304182e-04, + 2.050602960409409934e-04, + 2.050116261413459449e-04, + 2.049626267146600065e-04, + 2.049132978653304450e-04, + 2.048636396983271398e-04, + 2.048136523191478953e-04, + 2.047633358338215583e-04, + 2.047126903489005910e-04, + 2.046617159714636460e-04, + 2.046104128091213125e-04, + 2.045587809700077139e-04, + 2.045068205627821611e-04, + 2.044545316966297219e-04, + 2.044019144812632535e-04, + 2.043489690269236739e-04, + 2.042956954443715320e-04, + 2.042420938448977143e-04, + 2.041881643403136869e-04, + 2.041339070429587597e-04, + 2.040793220656951805e-04, + 2.040244095219135288e-04, + 2.039691695255230392e-04, + 2.039136021909583780e-04, + 2.038577076331815673e-04, + 2.038014859676701672e-04, + 2.037449373104360058e-04, + 2.036880617780043891e-04, + 2.036308594874288466e-04, + 2.035733305562825116e-04, + 2.035154751026589616e-04, + 2.034572932451808374e-04, + 2.033987851029882971e-04, + 2.033399507957418340e-04, + 2.032807904436239308e-04, + 2.032213041673414989e-04, + 2.031614920881166895e-04, + 2.031013543276991994e-04, + 2.030408910083531524e-04, + 2.029801022528662606e-04, + 2.029189881845438884e-04, + 2.028575489272124678e-04, + 2.027957846052204740e-04, + 2.027336953434310802e-04, + 2.026712812672271178e-04, + 2.026085425025139222e-04, + 2.025454791757114723e-04, + 2.024820914137563156e-04, + 2.024183793441106745e-04, + 2.023543430947489217e-04, + 2.022899827941639496e-04, + 2.022252985713636193e-04, + 2.021602905558745559e-04, + 2.020949588777458069e-04, + 2.020293036675343960e-04, + 2.019633250563161373e-04, + 2.018970231756863406e-04, + 2.018303981577523843e-04, + 2.017634501351348540e-04, + 2.016961792409784114e-04, + 2.016285856089354231e-04, + 2.015606693731743899e-04, + 2.014924306683791341e-04, + 2.014238696297454112e-04, + 2.013549863929898814e-04, + 2.012857810943334135e-04, + 2.012162538705181873e-04, + 2.011464048587945216e-04, + 2.010762341969246137e-04, + 2.010057420231903735e-04, + 2.009349284763822286e-04, + 2.008637936958010764e-04, + 2.007923378212592049e-04, + 2.007205609930856605e-04, + 2.006484633521125047e-04, + 2.005760450396943848e-04, + 2.005033061976857652e-04, + 2.004302469684587354e-04, + 2.003568674948923308e-04, + 2.002831679203722888e-04, + 2.002091483888033543e-04, + 2.001348090445942093e-04, + 2.000601500326618370e-04, + 1.999851714984313318e-04, + 1.999098735878414290e-04, + 1.998342564473312504e-04, + 1.997583202238588439e-04, + 1.996820650648826437e-04, + 1.996054911183695751e-04, + 1.995285985327925333e-04, + 1.994513874571323623e-04, + 1.993738580408831401e-04, + 1.992960104340354283e-04, + 1.992178447870901492e-04, + 1.991393612510554965e-04, + 1.990605599774430859e-04, + 1.989814411182666543e-04, + 1.989020048260541757e-04, + 1.988222512538322486e-04, + 1.987421805551311106e-04, + 1.986617928839853160e-04, + 1.985810883949344131e-04, + 1.985000672430252758e-04, + 1.984187295838026434e-04, + 1.983370755733131056e-04, + 1.982551053681129623e-04, + 1.981728191252507955e-04, + 1.980902170022898581e-04, + 1.980072991572839772e-04, + 1.979240657487963924e-04, + 1.978405169358841162e-04, + 1.977566528781126245e-04, + 1.976724737355394857e-04, + 1.975879796687343910e-04, + 1.975031708387550038e-04, + 1.974180474071676142e-04, + 1.973326095360328539e-04, + 1.972468573879067268e-04, + 1.971607911258563294e-04, + 1.970744109134386554e-04, + 1.969877169147093770e-04, + 1.969007092942211105e-04, + 1.968133882170292710e-04, + 1.967257538486784113e-04, + 1.966378063552213856e-04, + 1.965495459031967160e-04, + 1.964609726596470789e-04, + 1.963720867921045325e-04, + 1.962828884686015755e-04, + 1.961933778576652925e-04, + 1.961035551283196851e-04, + 1.960134204500775404e-04, + 1.959229739929531703e-04, + 1.958322159274508917e-04, + 1.957411464245653794e-04, + 1.956497656557950010e-04, + 1.955580737931260696e-04, + 1.954660710090359063e-04, + 1.953737574764943580e-04, + 1.952811333689641229e-04, + 1.951881988604077707e-04, + 1.950949541252682267e-04, + 1.950013993384831377e-04, + 1.949075346754853058e-04, + 1.948133603121894337e-04, + 1.947188764250145949e-04, + 1.946240831908555024e-04, + 1.945289807871071475e-04, + 1.944335693916466657e-04, + 1.943378491828421739e-04, + 1.942418203395500863e-04, + 1.941454830411239239e-04, + 1.940488374673906787e-04, + 1.939518837986779190e-04, + 1.938546222157917526e-04, + 1.937570529000246877e-04, + 1.936591760331668542e-04, + 1.935609917974874094e-04, + 1.934625003757401221e-04, + 1.933637019511643209e-04, + 1.932645967074916979e-04, + 1.931651848289274974e-04, + 1.930654665001773501e-04, + 1.929654419064157772e-04, + 1.928651112333126447e-04, + 1.927644746670144880e-04, + 1.926635323941497434e-04, + 1.925622846018404302e-04, + 1.924607314776842341e-04, + 1.923588732097603895e-04, + 1.922567099866283509e-04, + 1.921542419973379032e-04, + 1.920514694314075861e-04, + 1.919483924788527480e-04, + 1.918450113301542936e-04, + 1.917413261762845422e-04, + 1.916373372086864924e-04, + 1.915330446192868054e-04, + 1.914284486004996268e-04, + 1.913235493452050109e-04, + 1.912183470467657804e-04, + 1.911128418990272004e-04, + 1.910070340963084413e-04, + 1.909009238334024151e-04, + 1.907945113055902234e-04, + 1.906877967086233487e-04, + 1.905807802387279642e-04, + 1.904734620926058829e-04, + 1.903658424674367525e-04, + 1.902579215608832600e-04, + 1.901496995710705046e-04, + 1.900411766966011496e-04, + 1.899323531365595420e-04, + 1.898232290904924954e-04, + 1.897138047584344975e-04, + 1.896040803408804694e-04, + 1.894940560388068537e-04, + 1.893837320536549717e-04, + 1.892731085873470154e-04, + 1.891621858422652582e-04, + 1.890509640212804877e-04, + 1.889394433277166339e-04, + 1.888276239653812892e-04, + 1.887155061385453259e-04, + 1.886030900519467717e-04, + 1.884903759108049316e-04, + 1.883773639208016315e-04, + 1.882640542880847684e-04, + 1.881504472192709130e-04, + 1.880365429214523839e-04, + 1.879223416021758074e-04, + 1.878078434694742372e-04, + 1.876930487318286651e-04, + 1.875779575982001134e-04, + 1.874625702780079509e-04, + 1.873468869811350428e-04, + 1.872309079179423875e-04, + 1.871146332992483269e-04, + 1.869980633363304168e-04, + 1.868811982409423946e-04, + 1.867640382252920615e-04, + 1.866465835020506610e-04, + 1.865288342843628264e-04, + 1.864107907858303717e-04, + 1.862924532205142980e-04, + 1.861738218029372865e-04, + 1.860548967480873310e-04, + 1.859356782714197164e-04, + 1.858161665888398342e-04, + 1.856963619167146748e-04, + 1.855762644718791162e-04, + 1.854558744716165979e-04, + 1.853351921336851419e-04, + 1.852142176762862358e-04, + 1.850929513180919652e-04, + 1.849713932782241158e-04, + 1.848495437762638226e-04, + 1.847274030322499977e-04, + 1.846049712666887903e-04, + 1.844822487005286769e-04, + 1.843592355551768058e-04, + 1.842359320525049601e-04, + 1.841123384148259491e-04, + 1.839884548649245628e-04, + 1.838642816260320923e-04, + 1.837398189218302880e-04, + 1.836150669764573490e-04, + 1.834900260145091706e-04, + 1.833646962610244906e-04, + 1.832390779415127258e-04, + 1.831131712819160525e-04, + 1.829869765086428266e-04, + 1.828604938485429727e-04, + 1.827337235289174704e-04, + 1.826066657775288443e-04, + 1.824793208225840063e-04, + 1.823516888927352857e-04, + 1.822237702170851725e-04, + 1.820955650251932564e-04, + 1.819670735470543799e-04, + 1.818382960131303516e-04, + 1.817092326543112940e-04, + 1.815798837019486306e-04, + 1.814502493878309081e-04, + 1.813203299442005744e-04, + 1.811901256037424320e-04, + 1.810596365995914439e-04, + 1.809288631653192629e-04, + 1.807978055349528795e-04, + 1.806664639429504443e-04, + 1.805348386242331164e-04, + 1.804029298141471434e-04, + 1.802707377484958457e-04, + 1.801382626635160346e-04, + 1.800055047958874722e-04, + 1.798724643827352568e-04, + 1.797391416616333734e-04, + 1.796055368705843107e-04, + 1.794716502480329392e-04, + 1.793374820328736395e-04, + 1.792030324644262873e-04, + 1.790683017824693760e-04, + 1.789332902272026385e-04, + 1.787979980392763208e-04, + 1.786624254597712327e-04, + 1.785265727302066897e-04, + 1.783904400925410006e-04, + 1.782540277891791385e-04, + 1.781173360629443616e-04, + 1.779803651571111459e-04, + 1.778431153153806554e-04, + 1.777055867818860271e-04, + 1.775677798012100439e-04, + 1.774296946183621492e-04, + 1.772913314787805345e-04, + 1.771526906283385353e-04, + 1.770137723133510560e-04, + 1.768745767805510421e-04, + 1.767351042771235243e-04, + 1.765953550506652861e-04, + 1.764553293492188537e-04, + 1.763150274212502155e-04, + 1.761744495156497439e-04, + 1.760335958817559933e-04, + 1.758924667693260199e-04, + 1.757510624285442457e-04, + 1.756093831100231624e-04, + 1.754674290648119517e-04, + 1.753252005443739329e-04, + 1.751826978006206621e-04, + 1.750399210858677500e-04, + 1.748968706528752221e-04, + 1.747535467548145041e-04, + 1.746099496452904320e-04, + 1.744660795783408715e-04, + 1.743219368084142763e-04, + 1.741775215903857874e-04, + 1.740328341795635493e-04, + 1.738878748316635833e-04, + 1.737426438028477074e-04, + 1.735971413496765635e-04, + 1.734513677291491906e-04, + 1.733053231986780070e-04, + 1.731590080160945021e-04, + 1.730124224396562297e-04, + 1.728655667280478109e-04, + 1.727184411403607947e-04, + 1.725710459361064252e-04, + 1.724233813752264557e-04, + 1.722754477180635777e-04, + 1.721272452254021595e-04, + 1.719787741584207039e-04, + 1.718300347787310152e-04, + 1.716810273483494677e-04, + 1.715317521297200179e-04, + 1.713822093856868828e-04, + 1.712323993795322968e-04, + 1.710823223749301355e-04, + 1.709319786359855971e-04, + 1.707813684272074741e-04, + 1.706304920135138180e-04, + 1.704793496602535969e-04, + 1.703279416331770417e-04, + 1.701762681984438595e-04, + 1.700243296226243721e-04, + 1.698721261727114144e-04, + 1.697196581160904656e-04, + 1.695669257205813360e-04, + 1.694139292543891614e-04, + 1.692606689861452505e-04, + 1.691071451848807656e-04, + 1.689533581200305717e-04, + 1.687993080614537281e-04, + 1.686449952794084970e-04, + 1.684904200445509618e-04, + 1.683355826279583098e-04, + 1.681804833010963336e-04, + 1.680251223358606848e-04, + 1.678695000045271363e-04, + 1.677136165797938662e-04, + 1.675574723347526178e-04, + 1.674010675428982953e-04, + 1.672444024781325140e-04, + 1.670874774147700515e-04, + 1.669302926275097372e-04, + 1.667728483914563526e-04, + 1.666151449821258088e-04, + 1.664571826754186377e-04, + 1.662989617476566919e-04, + 1.661404824755413493e-04, + 1.659817451361870414e-04, + 1.658227500070984315e-04, + 1.656634973661785186e-04, + 1.655039874917302366e-04, + 1.653442206624659958e-04, + 1.651841971574762675e-04, + 1.650239172562517024e-04, + 1.648633812386896349e-04, + 1.647025893850654341e-04, + 1.645415419760694472e-04, + 1.643802392927769403e-04, + 1.642186816166524353e-04, + 1.640568692295553475e-04, + 1.638948024137478734e-04, + 1.637324814518659611e-04, + 1.635699066269646028e-04, + 1.634070782224631368e-04, + 1.632439965221913261e-04, + 1.630806618103574561e-04, + 1.629170743715569532e-04, + 1.627532344907931753e-04, + 1.625891424534467282e-04, + 1.624247985452835432e-04, + 1.622602030524572081e-04, + 1.620953562615131413e-04, + 1.619302584593944739e-04, + 1.617649099334120982e-04, + 1.615993109712679781e-04, + 1.614334618610587543e-04, + 1.612673628912530033e-04, + 1.611010143507134087e-04, + 1.609344165286852963e-04, + 1.607675697147981249e-04, + 1.606004741990559991e-04, + 1.604331302718597333e-04, + 1.602655382239725091e-04, + 1.600976983465664423e-04, + 1.599296109311677220e-04, + 1.597612762697023367e-04, + 1.595926946544646869e-04, + 1.594238663781287252e-04, + 1.592547917337519678e-04, + 1.590854710147804275e-04, + 1.589159045150201810e-04, + 1.587460925286585643e-04, + 1.585760353502712748e-04, + 1.584057332747912275e-04, + 1.582351865975536575e-04, + 1.580643956142433468e-04, + 1.578933606209390495e-04, + 1.577220819140780922e-04, + 1.575505597904883312e-04, + 1.573787945473499345e-04, + 1.572067864822447938e-04, + 1.570345358930989811e-04, + 1.568620430782301277e-04, + 1.566893083363164437e-04, + 1.565163319664024909e-04, + 1.563431142679221140e-04, + 1.561696555406680287e-04, + 1.559959560847980556e-04, + 1.558220162008391049e-04, + 1.556478361896977745e-04, + 1.554734163526300735e-04, + 1.552987569912844649e-04, + 1.551238584076505833e-04, + 1.549487209041030904e-04, + 1.547733447833707485e-04, + 1.545977303485445516e-04, + 1.544218779030974854e-04, + 1.542457877508571782e-04, + 1.540694601960098580e-04, + 1.538928955431048792e-04, + 1.537160940970588971e-04, + 1.535390561631611798e-04, + 1.533617820470400256e-04, + 1.531842720547034475e-04, + 1.530065264925091408e-04, + 1.528285456671744577e-04, + 1.526503298857798498e-04, + 1.524718794557764032e-04, + 1.522931946849540442e-04, + 1.521142758814645246e-04, + 1.519351233538290108e-04, + 1.517557374109051787e-04, + 1.515761183619353789e-04, + 1.513962665164889847e-04, + 1.512161821845117227e-04, + 1.510358656762908708e-04, + 1.508553173024682948e-04, + 1.506745373740436204e-04, + 1.504935262023813071e-04, + 1.503122840991777973e-04, + 1.501308113764877265e-04, + 1.499491083467268239e-04, + 1.497671753226423677e-04, + 1.495850126173609170e-04, + 1.494026205443301446e-04, + 1.492199994173664334e-04, + 1.490371495506207780e-04, + 1.488540712586074080e-04, + 1.486707648561676296e-04, + 1.484872306585190485e-04, + 1.483034689811973754e-04, + 1.481194801401040223e-04, + 1.479352644514752842e-04, + 1.477508222318874888e-04, + 1.475661537982808494e-04, + 1.473812594679294323e-04, + 1.471961395584451681e-04, + 1.470107943877831645e-04, + 1.468252242742444983e-04, + 1.466394295364856475e-04, + 1.464534104934818730e-04, + 1.462671674645552174e-04, + 1.460807007693788696e-04, + 1.458940107279498965e-04, + 1.457070976606160775e-04, + 1.455199618880600478e-04, + 1.453326037313062914e-04, + 1.451450235117045533e-04, + 1.449572215509576756e-04, + 1.447691981710848166e-04, + 1.445809536944687762e-04, + 1.443924884437995356e-04, + 1.442038027421223691e-04, + 1.440148969128030683e-04, + 1.438257712795426330e-04, + 1.436364261663781658e-04, + 1.434468618976915725e-04, + 1.432570787981770905e-04, + 1.430670771928630814e-04, + 1.428768574071220864e-04, + 1.426864197666355904e-04, + 1.424957645974440847e-04, + 1.423048922258882490e-04, + 1.421138029786576322e-04, + 1.419224971827576654e-04, + 1.417309751655215072e-04, + 1.415392372546130247e-04, + 1.413472837780348982e-04, + 1.411551150640947942e-04, + 1.409627314414303018e-04, + 1.407701332390155194e-04, + 1.405773207861271733e-04, + 1.403842944123927835e-04, + 1.401910544477487862e-04, + 1.399976012224494245e-04, + 1.398039350670719793e-04, + 1.396100563125184503e-04, + 1.394159652900247984e-04, + 1.392216623311253842e-04, + 1.390271477676795035e-04, + 1.388324219318769171e-04, + 1.386374851562138084e-04, + 1.384423377735003455e-04, + 1.382469801168848054e-04, + 1.380514125198197190e-04, + 1.378556353160692170e-04, + 1.376596488397135564e-04, + 1.374634534251526440e-04, + 1.372670494071125688e-04, + 1.370704371206132931e-04, + 1.368736169009917723e-04, + 1.366765890839106296e-04, + 1.364793540053278243e-04, + 1.362819120015256282e-04, + 1.360842634090935214e-04, + 1.358864085649351590e-04, + 1.356883478062521345e-04, + 1.354900814705721154e-04, + 1.352916098957101100e-04, + 1.350929334198196414e-04, + 1.348940523813310297e-04, + 1.346949671190049783e-04, + 1.344956779718940851e-04, + 1.342961852793575603e-04, + 1.340964893810643978e-04, + 1.338965906170014796e-04, + 1.336964893274376616e-04, + 1.334961858529507971e-04, + 1.332956805344331040e-04, + 1.330949737130597500e-04, + 1.328940657303370721e-04, + 1.326929569280423224e-04, + 1.324916476482754658e-04, + 1.322901382334189290e-04, + 1.320884290261729454e-04, + 1.318865203695133255e-04, + 1.316844126067476999e-04, + 1.314821060814478650e-04, + 1.312796011375068394e-04, + 1.310768981191008349e-04, + 1.308739973706967113e-04, + 1.306708992370802732e-04, + 1.304676040633181067e-04, + 1.302641121947675264e-04, + 1.300604239770787173e-04, + 1.298565397562007518e-04, + 1.296524598783869292e-04, + 1.294481846901621418e-04, + 1.292437145383456968e-04, + 1.290390497700625108e-04, + 1.288341907327125626e-04, + 1.286291377739833615e-04, + 1.284238912418721732e-04, + 1.282184514846515153e-04, + 1.280128188508781561e-04, + 1.278069936893956897e-04, + 1.276009763493387910e-04, + 1.273947671801418360e-04, + 1.271883665314982163e-04, + 1.269817747534083695e-04, + 1.267749921961435400e-04, + 1.265680192102595209e-04, + 1.263608561465988226e-04, + 1.261535033563004849e-04, + 1.259459611907634579e-04, + 1.257382300016718639e-04, + 1.255303101410048367e-04, + 1.253222019609986015e-04, + 1.251139058142013627e-04, + 1.249054220534078451e-04, + 1.246967510317149137e-04, + 1.244878931024825963e-04, + 1.242788486193489915e-04, + 1.240696179362331690e-04, + 1.238602014073436803e-04, + 1.236505993871421299e-04, + 1.234408122303693313e-04, + 1.232308402920544144e-04, + 1.230206839274764451e-04, + 1.228103434922208032e-04, + 1.225998193421126128e-04, + 1.223891118332720638e-04, + 1.221782213220717211e-04, + 1.219671481651647411e-04, + 1.217558927194876500e-04, + 1.215444553422240231e-04, + 1.213328363908299499e-04, + 1.211210362230445237e-04, + 1.209090551968604598e-04, + 1.206968936705329453e-04, + 1.204845520026065681e-04, + 1.202720305518775458e-04, + 1.200593296774037951e-04, + 1.198464497385070193e-04, + 1.196333910947780478e-04, + 1.194201541060844660e-04, + 1.192067391325344846e-04, + 1.189931465345024587e-04, + 1.187793766726382664e-04, + 1.185654299078347688e-04, + 1.183513066012592118e-04, + 1.181370071143326663e-04, + 1.179225318087421311e-04, + 1.177078810464177508e-04, + 1.174930551895670089e-04, + 1.172780546006309260e-04, + 1.170628796423402082e-04, + 1.168475306776492728e-04, + 1.166320080697913128e-04, + 1.164163121822404175e-04, + 1.162004433787244606e-04, + 1.159844020232308738e-04, + 1.157681884800132335e-04, + 1.155518031135547094e-04, + 1.153352462885951017e-04, + 1.151185183701388916e-04, + 1.149016197234184732e-04, + 1.146845507139491901e-04, + 1.144673117074623727e-04, + 1.142499030699620823e-04, + 1.140323251676864596e-04, + 1.138145783671161947e-04, + 1.135966630350029606e-04, + 1.133785795383305308e-04, + 1.131603282443186149e-04, + 1.129419095204517930e-04, + 1.127233237344440759e-04, + 1.125045712542488663e-04, + 1.122856524480870936e-04, + 1.120665676844075732e-04, + 1.118473173318964523e-04, + 1.116279017594814653e-04, + 1.114083213363359592e-04, + 1.111885764318877026e-04, + 1.109686674157803150e-04, + 1.107485946579007924e-04, + 1.105283585283892242e-04, + 1.103079593976084898e-04, + 1.100873976361546125e-04, + 1.098666736148832824e-04, + 1.096457877048721661e-04, + 1.094247402774293506e-04, + 1.092035317040968527e-04, + 1.089821623566564608e-04, + 1.087606326071372697e-04, + 1.085389428277765952e-04, + 1.083170933910495323e-04, + 1.080950846696771543e-04, + 1.078729170365910322e-04, + 1.076505908649633895e-04, + 1.074281065282109237e-04, + 1.072054643999548261e-04, + 1.069826648540493104e-04, + 1.067597082645906249e-04, + 1.065365950058786988e-04, + 1.063133254524733850e-04, + 1.060898999791263592e-04, + 1.058663189608395172e-04, + 1.056425827728237619e-04, + 1.054186917905148869e-04, + 1.051946463895763817e-04, + 1.049704469459090543e-04, + 1.047460938356121080e-04, + 1.045215874350102872e-04, + 1.042969281206644757e-04, + 1.040721162693307678e-04, + 1.038471522580195844e-04, + 1.036220364639255255e-04, + 1.033967692644869875e-04, + 1.031713510373392034e-04, + 1.029457821603502253e-04, + 1.027200630115989013e-04, + 1.024941939693853381e-04, + 1.022681754122094742e-04, + 1.020420077188062899e-04, + 1.018156912681093097e-04, + 1.015892264392604961e-04, + 1.013626136116390893e-04, + 1.011358531648220879e-04, + 1.009089454785922179e-04, + 1.006818909329432182e-04, + 1.004546899080836081e-04, + 1.002273427844468516e-04, + 9.999984994265000908e-05, + 9.977221176352372848e-05, + 9.954442862812062118e-05, + 9.931650091768567663e-05, + 9.908842901366519355e-05, + 9.886021329773556543e-05, + 9.863185415176391050e-05, + 9.840335195781128364e-05, + 9.817470709816296631e-05, + 9.794591995528200844e-05, + 9.771699091186899513e-05, + 9.748792035079154635e-05, + 9.725870865514295879e-05, + 9.702935620820298478e-05, + 9.679986339345008381e-05, + 9.657023059456836141e-05, + 9.634045819545460293e-05, + 9.611054658017893055e-05, + 9.588049613301441552e-05, + 9.565030723844438300e-05, + 9.541998028112485804e-05, + 9.518951564594120150e-05, + 9.495891371793910068e-05, + 9.472817488238369893e-05, + 9.449729952471789456e-05, + 9.426628803057274914e-05, + 9.403514078579718115e-05, + 9.380385817641621058e-05, + 9.357244058864043219e-05, + 9.334088840887105702e-05, + 9.310920202371452206e-05, + 9.287738181994073484e-05, + 9.264542818453800190e-05, + 9.241334150466770907e-05, + 9.218112216767303582e-05, + 9.194877056108367148e-05, + 9.171628707261984034e-05, + 9.148367209020271003e-05, + 9.125092600191264973e-05, + 9.101804919601831384e-05, + 9.078504206098744343e-05, + 9.055190498545459760e-05, + 9.031863835823179224e-05, + 9.008524256833733981e-05, + 8.985171800495498848e-05, + 8.961806505744369347e-05, + 8.938428411534133050e-05, + 8.915037556836980502e-05, + 8.891633980644467455e-05, + 8.868217721963282413e-05, + 8.844788819818344742e-05, + 8.821347313253661182e-05, + 8.797893241328830661e-05, + 8.774426643122402601e-05, + 8.750947557729837271e-05, + 8.727456024264497827e-05, + 8.703952081855443961e-05, + 8.680435769651063981e-05, + 8.656907126814265016e-05, + 8.633366192528696339e-05, + 8.609813005991490630e-05, + 8.586247606419181015e-05, + 8.562670033043742366e-05, + 8.539080325113434275e-05, + 8.515478521895908641e-05, + 8.491864662673925725e-05, + 8.468238786746359740e-05, + 8.444600933428693520e-05, + 8.420951142054430697e-05, + 8.397289451970948624e-05, + 8.373615902545639025e-05, + 8.349930533158569305e-05, + 8.326233383208604222e-05, + 8.302524492109302184e-05, + 8.278803899289741955e-05, + 8.255071644197722403e-05, + 8.231327766295399944e-05, + 8.207572305059869944e-05, + 8.183805299986130659e-05, + 8.160026790583405076e-05, + 8.136236816376088237e-05, + 8.112435416906933435e-05, + 8.088622631732623254e-05, + 8.064798500424872740e-05, + 8.040963062570905093e-05, + 8.017116357773762026e-05, + 7.993258425653488252e-05, + 7.969389305842721491e-05, + 7.945509037989827172e-05, + 7.921617661759845753e-05, + 7.897715216831381060e-05, + 7.873801742897456810e-05, + 7.849877279668674346e-05, + 7.825941866868953080e-05, + 7.801995544236431737e-05, + 7.778038351524055175e-05, + 7.754070328499882033e-05, + 7.730091514948263796e-05, + 7.706101950665394148e-05, + 7.682101675462440962e-05, + 7.658090729166633207e-05, + 7.634069151617380868e-05, + 7.610036982669448940e-05, + 7.585994262193415509e-05, + 7.561941030071302411e-05, + 7.537877326199815650e-05, + 7.513803190491216818e-05, + 7.489718662869054053e-05, + 7.465623783274491065e-05, + 7.441518591658826147e-05, + 7.417403127989678898e-05, + 7.393277432246843155e-05, + 7.369141544423148929e-05, + 7.344995504527633697e-05, + 7.320839352581278781e-05, + 7.296673128617868574e-05, + 7.272496872684620732e-05, + 7.248310624843576670e-05, + 7.224114425167355545e-05, + 7.199908313745483296e-05, + 7.175692330676838458e-05, + 7.151466516075950027e-05, + 7.127230910068198505e-05, + 7.102985552793453401e-05, + 7.078730484403872303e-05, + 7.054465745064891562e-05, + 7.030191374953049762e-05, + 7.005907414259664515e-05, + 6.981613903186946956e-05, + 6.957310881949133378e-05, + 6.932998390775529127e-05, + 6.908676469906200256e-05, + 6.884345159592952020e-05, + 6.860004500099831668e-05, + 6.835654531703577036e-05, + 6.811295294694653317e-05, + 6.786926829372838998e-05, + 6.762549176050401223e-05, + 6.738162375053147462e-05, + 6.713766466717088885e-05, + 6.689361491389437826e-05, + 6.664947489431776362e-05, + 6.640524501215804888e-05, + 6.616092567123587416e-05, + 6.591651727550901761e-05, + 6.567202022902240012e-05, + 6.542743493597224299e-05, + 6.518276180063002471e-05, + 6.493800122740650310e-05, + 6.469315362080814392e-05, + 6.444821938544614685e-05, + 6.420319892607025906e-05, + 6.395809264752218162e-05, + 6.371290095474841731e-05, + 6.346762425280315725e-05, + 6.322226294686415099e-05, + 6.297681744218990756e-05, + 6.273128814418236240e-05, + 6.248567545831151175e-05, + 6.223997979017923147e-05, + 6.199420154547551597e-05, + 6.174834112998842572e-05, + 6.150239894963642365e-05, + 6.125637541042328580e-05, + 6.101027091844997343e-05, + 6.076408587991734343e-05, + 6.051782070114354307e-05, + 6.027147578851889360e-05, + 6.002505154856531807e-05, + 5.977854838788659002e-05, + 5.953196671317864696e-05, + 5.928530693123459802e-05, + 5.903856944894918273e-05, + 5.879175467332872535e-05, + 5.854486301144748217e-05, + 5.829789487047957807e-05, + 5.805085065770879143e-05, + 5.780373078049567568e-05, + 5.755653564628724261e-05, + 5.730926566264984756e-05, + 5.706192123722401884e-05, + 5.681450277773529979e-05, + 5.656701069199844323e-05, + 5.631944538792264956e-05, + 5.607180727352228001e-05, + 5.582409675687116429e-05, + 5.557631424613611602e-05, + 5.532846014958602644e-05, + 5.508053487554824562e-05, + 5.483253883247347872e-05, + 5.458447242885781833e-05, + 5.433633607330892143e-05, + 5.408813017449463857e-05, + 5.383985514118763552e-05, + 5.359151138221425286e-05, + 5.334309930652037798e-05, + 5.309461932309308442e-05, + 5.284607184102714766e-05, + 5.259745726947925789e-05, + 5.234877601767878749e-05, + 5.210002849496011385e-05, + 5.185121511071808572e-05, + 5.160233627441812663e-05, + 5.135339239560111381e-05, + 5.110438388389895682e-05, + 5.085531114899058571e-05, + 5.060617460066687439e-05, + 5.035697464875266621e-05, + 5.010771170317280182e-05, + 4.985838617390127688e-05, + 4.960899847099935179e-05, + 4.935954900459327808e-05, + 4.911003818488370390e-05, + 4.886046642212388150e-05, + 4.861083412665688253e-05, + 4.836114170887695297e-05, + 4.811138957923934552e-05, + 4.786157814829308278e-05, + 4.761170782663611879e-05, + 4.736177902492530684e-05, + 4.711179215388160369e-05, + 4.686174762429510431e-05, + 4.661164584703505722e-05, + 4.636148723300497171e-05, + 4.611127219317520491e-05, + 4.586100113859396647e-05, + 4.561067448035194640e-05, + 4.536029262959441754e-05, + 4.510985599755253507e-05, + 4.485936499549887749e-05, + 4.460882003475824119e-05, + 4.435822152671159099e-05, + 4.410756988280119657e-05, + 4.385686551454196918e-05, + 4.360610883346964349e-05, + 4.335530025120168271e-05, + 4.310444017939238582e-05, + 4.285352902974293675e-05, + 4.260256721403417443e-05, + 4.235155514408180165e-05, + 4.210049323174611580e-05, + 4.184938188893760604e-05, + 4.159822152763262005e-05, + 4.134701255982818667e-05, + 4.109575539760821321e-05, + 4.084445045306486723e-05, + 4.059309813836481454e-05, + 4.034169886570342523e-05, + 4.009025304731626615e-05, + 3.983876109551086808e-05, + 3.958722342262204982e-05, + 3.933564044102210290e-05, + 3.908401256312587379e-05, + 3.883234020140695917e-05, + 3.858062376835191869e-05, + 3.832886367652679082e-05, + 3.807706033849871178e-05, + 3.782521416690154365e-05, + 3.757332557438526925e-05, + 3.732139497364880278e-05, + 3.706942277744535667e-05, + 3.681740939853586148e-05, + 3.656535524972315222e-05, + 3.631326074386174643e-05, + 3.606112629382380029e-05, + 3.580895231250967278e-05, + 3.555673921288040430e-05, + 3.530448740791315601e-05, + 3.505219731061079820e-05, + 3.479986933400738554e-05, + 3.454750389117291397e-05, + 3.429510139522381042e-05, + 3.404266225927764700e-05, + 3.379018689648572127e-05, + 3.353767572004379664e-05, + 3.328512914314690470e-05, + 3.303254757905541375e-05, + 3.277993144101606503e-05, + 3.252728114232853596e-05, + 3.227459709629461137e-05, + 3.202187971626189040e-05, + 3.176912941557285614e-05, + 3.151634660763176407e-05, + 3.126353170582489902e-05, + 3.101068512358785671e-05, + 3.075780727435930927e-05, + 3.050489857159199635e-05, + 3.025195942878567134e-05, + 2.999899025944146994e-05, + 2.974599147707235588e-05, + 2.949296349520835547e-05, + 2.923990672741240735e-05, + 2.898682158723473113e-05, + 2.873370848828016308e-05, + 2.848056784412798619e-05, + 2.822740006839920490e-05, + 2.797420557471089344e-05, + 2.772098477668661427e-05, + 2.746773808798935081e-05, + 2.721446592227625208e-05, + 2.696116869320900721e-05, + 2.670784681445847024e-05, + 2.645450069972141779e-05, + 2.620113076267443320e-05, + 2.594773741703571289e-05, + 2.569432107651272302e-05, + 2.544088215481387507e-05, + 2.518742106565277790e-05, + 2.493393822275354358e-05, + 2.468043403986100939e-05, + 2.442690893069560787e-05, + 2.417336330898584891e-05, + 2.391979758847935481e-05, + 2.366621218289692406e-05, + 2.341260750599945367e-05, + 2.315898397150838926e-05, + 2.290534199317294218e-05, + 2.265168198472390589e-05, + 2.239800435989002065e-05, + 2.214430953240320818e-05, + 2.189059791600904436e-05, + 2.163686992442051803e-05, + 2.138312597135199361e-05, + 2.112936647052916203e-05, + 2.087559183564358559e-05, + 2.062180248041960674e-05, + 2.036799881853473043e-05, + 2.011418126368665483e-05, + 1.986035022954168034e-05, + 1.960650612977943625e-05, + 1.935264937804123884e-05, + 1.909878038799715948e-05, + 1.884489957326636287e-05, + 1.859100734748415476e-05, + 1.833710412425629637e-05, + 1.808319031716929082e-05, + 1.782926633982395606e-05, + 1.757533260578928531e-05, + 1.732138952861324847e-05, + 1.706743752182784035e-05, + 1.681347699896495416e-05, + 1.655950837351101435e-05, + 1.630553205897384821e-05, + 1.605154846880291230e-05, + 1.579755801645640455e-05, + 1.554356111534995442e-05, + 1.528955817889516964e-05, + 1.503554962047661896e-05, + 1.478153585346242683e-05, + 1.452751729118086480e-05, + 1.427349434695938450e-05, + 1.401946743407305195e-05, + 1.376543696581159192e-05, + 1.351140335539973129e-05, + 1.325736701606428737e-05, + 1.300332836098826388e-05, + 1.274928780332724267e-05, + 1.249524575621418984e-05, + 1.224120263277022656e-05, + 1.198715884605870296e-05, + 1.173311480911844251e-05, + 1.147907093497435359e-05, + 1.122502763659157626e-05, + 1.097098532694266551e-05, + 1.071694441892765335e-05, + 1.046290532544141339e-05, + 1.020886845932758558e-05, + 9.954834233394993433e-06, + 9.700803060422566977e-06, + 9.446775353169942525e-06, + 9.192751524326052854e-06, + 8.938731986570503215e-06, + 8.684717152527734991e-06, + 8.430707434777620385e-06, + 8.176703245888843990e-06, + 7.922704998372868241e-06, + 7.668713104694584005e-06, + 7.414727977277378385e-06, + 7.160750028519371490e-06, + 6.906779670747526731e-06, + 6.652817316284861193e-06, + 6.398863377370518761e-06, + 6.144918266227120244e-06, + 5.890982395014716979e-06, + 5.637056175841454119e-06, + 5.383140020796945434e-06, + 5.129234341906238760e-06, + 4.875339551140508941e-06, + 4.621456060422029917e-06, + 4.367584281640508060e-06, + 4.113724626607139100e-06, + 3.859877507121847304e-06, + 3.606043334893384006e-06, + 3.352222521606588798e-06, + 3.098415478870771345e-06, + 2.844622618253002321e-06, + 2.590844351283139700e-06, + 2.337081089407844187e-06, + 2.083333244023907422e-06, + 1.829601226488869538e-06, + 1.575885448075131998e-06, + 1.322186320037134084e-06, + 1.068504253531520892e-06, + 8.148396596843571892e-07, + 5.611929495452008711e-07, + 3.075645341034138475e-07, + 5.395482429315562734e-08, +-1.996357689959685575e-07, +-4.532068349648262422e-07, +-7.067579628714766531e-07, +-9.602887420205297171e-07, +-1.213798761809048160e-06, +-1.467287611659346508e-06, +-1.720754881098834369e-06, +-1.974200159692811889e-06, +-2.227623037096023986e-06, +-2.481023103008096468e-06, +-2.734399947225063371e-06, +-2.987753159572219064e-06, +-3.241082329983900700e-06, +-3.494387048436310460e-06, +-3.747666904993433632e-06, +-4.000921489796341854e-06, +-4.254150393029986458e-06, +-4.507353204969065308e-06, +-4.760529515967352297e-06, +-5.013678916452768040e-06, +-5.266800996910987249e-06, +-5.519895347931412289e-06, +-5.772961560139969588e-06, +-6.025999224278877265e-06, +-6.279007931139547421e-06, +-6.531987271608331844e-06, +-6.784936836656043366e-06, +-7.037856217304562434e-06, +-7.290745004672855566e-06, +-7.543602789971755932e-06, +-7.796429164470997677e-06, +-8.049223719550543582e-06, +-8.301986046633437369e-06, +-8.554715737265677214e-06, +-8.807412383048952018e-06, +-9.060075575686609881e-06, +-9.312704906967291733e-06, +-9.565299968759876240e-06, +-9.817860353003129064e-06, +-1.007038565175114110e-05, +-1.032287545714036702e-05, +-1.057532936137893235e-05, +-1.082774695679244779e-05, +-1.108012783575691571e-05, +-1.133247159077835804e-05, +-1.158477781442593286e-05, +-1.183704609937750137e-05, +-1.208927603840347835e-05, +-1.234146722436182286e-05, +-1.259361925018748752e-05, +-1.284573170893801776e-05, +-1.309780419376053781e-05, +-1.334983629788106453e-05, +-1.360182761465025910e-05, +-1.385377773748206789e-05, +-1.410568625990516114e-05, +-1.435755277555224164e-05, +-1.460937687815502866e-05, +-1.486115816152821511e-05, +-1.511289621961486515e-05, +-1.536459064641986955e-05, +-1.561624103608909249e-05, +-1.586784698284254738e-05, +-1.611940808102030949e-05, +-1.637092392507151468e-05, +-1.662239410952164354e-05, +-1.687381822901785807e-05, +-1.712519587831874912e-05, +-1.737652665228893914e-05, +-1.762781014589445735e-05, +-1.787904595419200616e-05, +-1.813023367237463995e-05, +-1.838137289573848348e-05, +-1.863246321967258778e-05, +-1.888350423969831042e-05, +-1.913449555143131425e-05, +-1.938543675060395952e-05, +-1.963632743305540382e-05, +-1.988716719475428553e-05, +-2.013795563176016699e-05, +-2.038869234027474602e-05, +-2.063937691657516738e-05, +-2.089000895709311188e-05, +-2.114058805834830436e-05, +-2.139111381699392814e-05, +-2.164158582980043319e-05, +-2.189200369365056572e-05, +-2.214236700552887511e-05, +-2.239267536256709800e-05, +-2.264292836201141530e-05, +-2.289312560121150184e-05, +-2.314326667766640838e-05, +-2.339335118895764603e-05, +-2.364337873282851597e-05, +-2.389334890711723112e-05, +-2.414326130980280839e-05, +-2.439311553898837194e-05, +-2.464291119289672492e-05, +-2.489264786985950743e-05, +-2.514232516836816081e-05, +-2.539194268701322249e-05, +-2.564150002452950331e-05, +-2.589099677978590281e-05, +-2.614043255175187353e-05, +-2.638980693954362492e-05, +-2.663911954241287815e-05, +-2.688836995974218711e-05, +-2.713755779102884136e-05, +-2.738668263593020279e-05, +-2.763574409419724393e-05, +-2.788474176575342714e-05, +-2.813367525062836154e-05, +-2.838254414900307187e-05, +-2.863134806119935297e-05, +-2.888008658764726404e-05, +-2.912875932893000782e-05, +-2.937736588577369171e-05, +-2.962590585904228616e-05, +-2.987437884973257639e-05, +-3.012278445896405900e-05, +-3.037112228802349247e-05, +-3.061939193833286240e-05, +-3.086759301143819390e-05, +-3.111572510904972466e-05, +-3.136378783300870803e-05, +-3.161178078528278148e-05, +-3.185970356801097448e-05, +-3.210755578347104019e-05, +-3.235533703406886412e-05, +-3.260304692238362797e-05, +-3.285068505110194431e-05, +-3.309825102309591914e-05, +-3.334574444135731373e-05, +-3.359316490904262032e-05, +-3.384051202945721922e-05, +-3.408778540604985612e-05, +-3.433498464240312828e-05, +-3.458210934227747598e-05, +-3.482915910957923246e-05, +-3.507613354835001227e-05, +-3.532303226281139399e-05, +-3.556985485729969866e-05, +-3.581660093634327985e-05, +-3.606327010459756642e-05, +-3.630986196689514584e-05, +-3.655637612820175240e-05, +-3.680281219366742120e-05, +-3.704916976856035182e-05, +-3.729544845834474728e-05, +-3.754164786861559247e-05, +-3.778776760514318778e-05, +-3.803380727386268653e-05, +-3.827976648084173157e-05, +-3.852564483232538185e-05, +-3.877144193472522980e-05, +-3.901715739461496962e-05, +-3.926279081872549804e-05, +-3.950834181393403165e-05, +-3.975380998730958920e-05, +-3.999919494607968623e-05, +-4.024449629762068568e-05, +-4.048971364949115068e-05, +-4.073484660942132776e-05, +-4.097989478528096639e-05, +-4.122485778512404234e-05, +-4.146973521718353990e-05, +-4.171452668983954251e-05, +-4.195923181166850296e-05, +-4.220385019137933643e-05, +-4.244838143788939595e-05, +-4.269282516026019281e-05, +-4.293718096774157777e-05, +-4.318144846975620305e-05, +-4.342562727589397944e-05, +-4.366971699590265719e-05, +-4.391371723973153297e-05, +-4.415762761749953368e-05, +-4.440144773948487581e-05, +-4.464517721616938906e-05, +-4.488881565817366741e-05, +-4.513236267633392558e-05, +-4.537581788163734666e-05, +-4.561918088526624980e-05, +-4.586245129858236927e-05, +-4.610562873312184004e-05, +-4.634871280058517571e-05, +-4.659170311288151744e-05, +-4.683459928209639933e-05, +-4.707740092048135361e-05, +-4.732010764049832227e-05, +-4.756271905476005304e-05, +-4.780523477608061644e-05, +-4.804765441746367607e-05, +-4.828997759209915469e-05, +-4.853220391335706782e-05, +-4.877433299477857228e-05, +-4.901636445011901583e-05, +-4.925829789331631907e-05, +-4.950013293848081109e-05, +-4.974186919992859579e-05, +-4.998350629217062171e-05, +-5.022504382988163328e-05, +-5.046648142794344397e-05, +-5.070781870143514460e-05, +-5.094905526562798731e-05, +-5.119019073598090637e-05, +-5.143122472812995406e-05, +-5.167215685793244797e-05, +-5.191298674143534622e-05, +-5.215371399486426311e-05, +-5.239433823466261561e-05, +-5.263485907745434712e-05, +-5.287527614006582160e-05, +-5.311558903951590308e-05, +-5.335579739303772785e-05, +-5.359590081804241753e-05, +-5.383589893216736671e-05, +-5.407579135321242416e-05, +-5.431557769921619349e-05, +-5.455525758839159772e-05, +-5.479483063916983684e-05, +-5.503429647018483634e-05, +-5.527365470026813788e-05, +-5.551290494843956160e-05, +-5.575204683394959166e-05, +-5.599107997624886947e-05, +-5.623000399497756857e-05, +-5.646881851000861357e-05, +-5.670752314138482358e-05, +-5.694611750939353238e-05, +-5.718460123450388771e-05, +-5.742297393741439349e-05, +-5.766123523901221158e-05, +-5.789938476042069053e-05, +-5.813742212293628530e-05, +-5.837534694810411941e-05, +-5.861315885765403053e-05, +-5.885085747354452138e-05, +-5.908844241795214802e-05, +-5.932591331324009161e-05, +-5.956326978200175687e-05, +-5.980051144705083129e-05, +-6.003763793141576925e-05, +-6.027464885833601089e-05, +-6.051154385125127557e-05, +-6.074832253384488258e-05, +-6.098498453001268191e-05, +-6.122152946385297123e-05, +-6.145795695969847303e-05, +-6.169426664210696308e-05, +-6.193045813582929320e-05, +-6.216653106585347092e-05, +-6.240248505739369542e-05, +-6.263831973588593945e-05, +-6.287403472698350408e-05, +-6.310962965654648839e-05, +-6.334510415069060567e-05, +-6.358045783572951744e-05, +-6.381569033821707663e-05, +-6.405080128493243342e-05, +-6.428579030287628112e-05, +-6.452065701925884867e-05, +-6.475540106154475950e-05, +-6.499002205742070875e-05, +-6.522451963478603071e-05, +-6.545889342179506403e-05, +-6.569314304679516243e-05, +-6.592726813840040694e-05, +-6.616126832542941331e-05, +-6.639514323694722291e-05, +-6.662889250225145202e-05, +-6.686251575086657266e-05, +-6.709601261253420902e-05, +-6.732938271725594985e-05, +-6.756262569526228607e-05, +-6.779574117700290720e-05, +-6.802872879318884968e-05, +-6.826158817473020946e-05, +-6.849431895281100620e-05, +-6.872692075882514751e-05, +-6.895939322442581443e-05, +-6.919173598149382977e-05, +-6.942394866213345687e-05, +-6.965603089871395164e-05, +-6.988798232383947593e-05, +-7.011980257033961078e-05, +-7.035149127130001223e-05, +-7.058304806005361574e-05, +-7.081447257015000744e-05, +-7.104576443539654257e-05, +-7.127692328985005125e-05, +-7.150794876781031977e-05, +-7.173884050381785441e-05, +-7.196959813264176549e-05, +-7.220022128932313541e-05, +-7.243070960914464750e-05, +-7.266106272761959489e-05, +-7.289128028053051876e-05, +-7.312136190389127482e-05, +-7.335130723397057407e-05, +-7.358111590728046310e-05, +-7.381078756059855032e-05, +-7.404032183093237627e-05, +-7.426971835556587175e-05, +-7.449897677199842565e-05, +-7.472809671801766197e-05, +-7.495707783163808760e-05, +-7.518591975114282051e-05, +-7.541462211506870907e-05, +-7.564318456220190041e-05, +-7.587160673156809611e-05, +-7.609988826247392809e-05, +-7.632802879447725148e-05, +-7.655602796737673624e-05, +-7.678388542125453057e-05, +-7.701160079641377015e-05, +-7.723917373345264275e-05, +-7.746660387320204657e-05, +-7.769389085676786059e-05, +-7.792103432552124095e-05, +-7.814803392106787030e-05, +-7.837488928529071596e-05, +-7.860160006034370094e-05, +-7.882816588862317586e-05, +-7.905458641280376539e-05, +-7.928086127582786499e-05, +-7.950699012087715360e-05, +-7.973297259141260058e-05, +-7.995880833116543983e-05, +-8.018449698413265673e-05, +-8.041003819457216348e-05, +-8.063543160699321744e-05, +-8.086067686619844753e-05, +-8.108577361725234460e-05, +-8.131072150547317056e-05, +-8.153552017646362778e-05, +-8.176016927610013901e-05, +-8.198466845050480720e-05, +-8.220901734608471786e-05, +-8.243321560952386173e-05, +-8.265726288777757824e-05, +-8.288115882806911319e-05, +-8.310490307787842435e-05, +-8.332849528498487189e-05, +-8.355193509743603409e-05, +-8.377522216353991457e-05, +-8.399835613189874229e-05, +-8.422133665137579504e-05, +-8.444416337111522669e-05, +-8.466683594053325812e-05, +-8.488935400933803163e-05, +-8.511171722749575675e-05, +-8.533392524527585370e-05, +-8.555597771319190502e-05, +-8.577787428207142399e-05, +-8.599961460299709089e-05, +-8.622119832734762739e-05, +-8.644262510678249575e-05, +-8.666389459323756205e-05, +-8.688500643891623276e-05, +-8.710596029632947546e-05, +-8.732675581826664015e-05, +-8.754739265778557951e-05, +-8.776787046825410606e-05, +-8.798818890328939885e-05, +-8.820834761682928968e-05, +-8.842834626307246942e-05, +-8.864818449652437683e-05, +-8.886786197196198912e-05, +-8.908737834445576344e-05, +-8.930673326935846968e-05, +-8.952592640232699640e-05, +-8.974495739928749379e-05, +-8.996382591647067797e-05, +-9.018253161040208675e-05, +-9.040107413787420206e-05, +-9.061945315598534572e-05, +-9.083766832213039592e-05, +-9.105571929399678929e-05, +-9.127360572956019758e-05, +-9.149132728707519001e-05, +-9.170888362511412902e-05, +-9.192627440254018715e-05, +-9.214349927849597652e-05, +-9.236055791243501776e-05, +-9.257744996411164341e-05, +-9.279417509355242916e-05, +-9.301073296109590278e-05, +-9.322712322738349101e-05, +-9.344334555335423410e-05, +-9.365939960024195331e-05, +-9.387528502956447667e-05, +-9.409100150316895860e-05, +-9.430654868317888957e-05, +-9.452192623203319510e-05, +-9.473713381247191078e-05, +-9.495217108753260435e-05, +-9.516703772054034690e-05, +-9.538173337514820776e-05, +-9.559625771530692396e-05, +-9.581061040525778517e-05, +-9.602479110957059432e-05, +-9.623879949308613711e-05, +-9.645263522098441902e-05, +-9.666629795872840871e-05, +-9.687978737210174122e-05, +-9.709310312719963770e-05, +-9.730624489040166491e-05, +-9.751921232840985842e-05, +-9.773200510823961535e-05, +-9.794462289721584541e-05, +-9.815706536295886278e-05, +-9.836933217342286166e-05, +-9.858142299684016124e-05, +-9.879333750178694896e-05, +-9.900507535712824375e-05, +-9.921663623205997657e-05, +-9.942801979608204802e-05, +-9.963922571899237876e-05, +-9.985025367092813632e-05, +-1.000611033223346863e-04, +-1.002717743439587346e-04, +-1.004822664068769100e-04, +-1.006925791824863720e-04, +-1.009027123424771909e-04, +-1.011126655588700238e-04, +-1.013224385040087692e-04, +-1.015320308505547527e-04, +-1.017414422714824719e-04, +-1.019506724400722506e-04, +-1.021597210299475625e-04, +-1.023685877150467475e-04, +-1.025772721696145543e-04, +-1.027857740682357917e-04, +-1.029940930858027346e-04, +-1.032022288975344908e-04, +-1.034101811789672564e-04, +-1.036179496059758240e-04, +-1.038255338547386982e-04, +-1.040329336017820468e-04, +-1.042401485239242027e-04, +-1.044471782983409739e-04, +-1.046540226025104305e-04, +-1.048606811142509737e-04, +-1.050671535117119300e-04, +-1.052734394733467586e-04, +-1.054795386779502794e-04, +-1.056854508046494850e-04, +-1.058911755329008567e-04, +-1.060967125424754710e-04, +-1.063020615134977186e-04, +-1.065072221263883433e-04, +-1.067121940619324350e-04, +-1.069169770012225364e-04, +-1.071215706256963864e-04, +-1.073259746171281248e-04, +-1.075301886576022852e-04, +-1.077342124295495323e-04, +-1.079380456157432068e-04, +-1.081416878992723146e-04, +-1.083451389635745412e-04, +-1.085483984924266699e-04, +-1.087514661699183846e-04, +-1.089543416804886856e-04, +-1.091570247089179751e-04, +-1.093595149403229881e-04, +-1.095618120601542993e-04, +-1.097639157541858735e-04, +-1.099658257085528370e-04, +-1.101675416097251583e-04, +-1.103690631444985545e-04, +-1.105703900000210271e-04, +-1.107715218637872511e-04, +-1.109724584236082448e-04, +-1.111731993676516611e-04, +-1.113737443844302138e-04, +-1.115740931627988045e-04, +-1.117742453919512565e-04, +-1.119742007614108956e-04, +-1.121739589610671147e-04, +-1.123735196811487437e-04, +-1.125728826122158902e-04, +-1.127720474451925200e-04, +-1.129710138713384173e-04, +-1.131697815822456333e-04, +-1.133683502698759594e-04, +-1.135667196265336998e-04, +-1.137648893448565919e-04, +-1.139628591178534680e-04, +-1.141606286388497613e-04, +-1.143581976015513242e-04, +-1.145555656999910048e-04, +-1.147527326285652515e-04, +-1.149496980820245321e-04, +-1.151464617554487629e-04, +-1.153430233442813928e-04, +-1.155393825443233596e-04, +-1.157355390517266657e-04, +-1.159314925629831430e-04, +-1.161272427749604621e-04, +-1.163227893848475970e-04, +-1.165181320902200263e-04, +-1.167132705889841946e-04, +-1.169082045794204473e-04, +-1.171029337601513584e-04, +-1.172974578301587249e-04, +-1.174917764887770349e-04, +-1.176858894357112485e-04, +-1.178797963710050438e-04, +-1.180734969950742651e-04, +-1.182669910086955113e-04, +-1.184602781129848181e-04, +-1.186533580094282727e-04, +-1.188462303998770133e-04, +-1.190388949865418757e-04, +-1.192313514719896934e-04, +-1.194235995591358846e-04, +-1.196156389512786450e-04, +-1.198074693520732523e-04, +-1.199990904655258048e-04, +-1.201905019960162883e-04, +-1.203817036482933032e-04, +-1.205726951274479770e-04, +-1.207634761389474924e-04, +-1.209540463886327839e-04, +-1.211444055826928012e-04, +-1.213345534277033102e-04, +-1.215244896305762203e-04, +-1.217142138986194186e-04, +-1.219037259394867881e-04, +-1.220930254612113844e-04, +-1.222821121721994592e-04, +-1.224709857812037209e-04, +-1.226596459973579615e-04, +-1.228480925301695618e-04, +-1.230363250895156156e-04, +-1.232243433856301362e-04, +-1.234121471291395095e-04, +-1.235997360310098832e-04, +-1.237871098026097527e-04, +-1.239742681556573226e-04, +-1.241612108022565838e-04, +-1.243479374548875013e-04, +-1.245344478263822163e-04, +-1.247207416299594962e-04, +-1.249068185792154653e-04, +-1.250926783881217881e-04, +-1.252783207710106536e-04, +-1.254637454426123428e-04, +-1.256489521180066021e-04, +-1.258339405126618100e-04, +-1.260187103424278217e-04, +-1.262032613235306293e-04, +-1.263875931725701662e-04, +-1.265717056065112538e-04, +-1.267555983427178358e-04, +-1.269392710989293148e-04, +-1.271227235932504156e-04, +-1.273059555441790757e-04, +-1.274889666705964169e-04, +-1.276717566917439230e-04, +-1.278543253272561547e-04, +-1.280366722971531884e-04, +-1.282187973218368478e-04, +-1.284007001220866385e-04, +-1.285823804190528363e-04, +-1.287638379342890941e-04, +-1.289450723897281022e-04, +-1.291260835076739441e-04, +-1.293068710108363848e-04, +-1.294874346222800758e-04, +-1.296677740654844299e-04, +-1.298478890642935045e-04, +-1.300277793429534604e-04, +-1.302074446260806861e-04, +-1.303868846386986612e-04, +-1.305660991061897633e-04, +-1.307450877543522697e-04, +-1.309238503093524634e-04, +-1.311023864977566434e-04, +-1.312806960465248641e-04, +-1.314587786829859441e-04, +-1.316366341348702092e-04, +-1.318142621303019840e-04, +-1.319916623977965026e-04, +-1.321688346662484154e-04, +-1.323457786649629331e-04, +-1.325224941236094228e-04, +-1.326989807722768380e-04, +-1.328752383414275582e-04, +-1.330512665619280996e-04, +-1.332270651650436664e-04, +-1.334026338824114257e-04, +-1.335779724460760688e-04, +-1.337530805884853122e-04, +-1.339279580424643375e-04, +-1.341026045412470975e-04, +-1.342770198184660977e-04, +-1.344512036081317152e-04, +-1.346251556446616076e-04, +-1.347988756628749668e-04, +-1.349723633979887786e-04, +-1.351456185856134314e-04, +-1.353186409617452895e-04, +-1.354914302628000599e-04, +-1.356639862255876649e-04, +-1.358363085873062260e-04, +-1.360083970855655358e-04, +-1.361802514583789273e-04, +-1.363518714441415620e-04, +-1.365232567816609239e-04, +-1.366944072101494191e-04, +-1.368653224692217743e-04, +-1.370360022988914854e-04, +-1.372064464395618465e-04, +-1.373766546320593425e-04, +-1.375466266176096348e-04, +-1.377163621378311368e-04, +-1.378858609347644775e-04, +-1.380551227508330361e-04, +-1.382241473288761734e-04, +-1.383929344121416147e-04, +-1.385614837442840407e-04, +-1.387297950693525106e-04, +-1.388978681318210910e-04, +-1.390657026765439966e-04, +-1.392332984488098009e-04, +-1.394006551942959533e-04, +-1.395677726590982429e-04, +-1.397346505897256481e-04, +-1.399012887330767553e-04, +-1.400676868364705504e-04, +-1.402338446476389649e-04, +-1.403997619147244903e-04, +-1.405654383862682522e-04, +-1.407308738112414523e-04, +-1.408960679389981239e-04, +-1.410610205193327032e-04, +-1.412257313024311320e-04, +-1.413902000389065275e-04, +-1.415544264797738395e-04, +-1.417184103764638364e-04, +-1.418821514808177385e-04, +-1.420456495451014750e-04, +-1.422089043219800972e-04, +-1.423719155645434740e-04, +-1.425346830263014668e-04, +-1.426972064611590205e-04, +-1.428594856234480931e-04, +-1.430215202679212044e-04, +-1.431833101497459882e-04, +-1.433448550245031324e-04, +-1.435061546481806592e-04, +-1.436672087772001367e-04, +-1.438280171683988971e-04, +-1.439885795790203063e-04, +-1.441488957667458022e-04, +-1.443089654896482739e-04, +-1.444687885062461092e-04, +-1.446283645754597449e-04, +-1.447876934566432990e-04, +-1.449467749095570044e-04, +-1.451056086943991658e-04, +-1.452641945717637407e-04, +-1.454225323026925700e-04, +-1.455806216486296798e-04, +-1.457384623714527770e-04, +-1.458960542334650635e-04, +-1.460533969973756125e-04, +-1.462104904263251449e-04, +-1.463673342838838344e-04, +-1.465239283340443409e-04, +-1.466802723412130019e-04, +-1.468363660702384007e-04, +-1.469922092863691371e-04, +-1.471478017553048663e-04, +-1.473031432431511957e-04, +-1.474582335164513708e-04, +-1.476130723421785235e-04, +-1.477676594877147737e-04, +-1.479219947208781992e-04, +-1.480760778099205041e-04, +-1.482299085235187254e-04, +-1.483834866307685645e-04, +-1.485368119012105983e-04, +-1.486898841047940120e-04, +-1.488427030119064969e-04, +-1.489952683933697770e-04, +-1.491475800204348123e-04, +-1.492996376647782748e-04, +-1.494514410984975608e-04, +-1.496029900941383574e-04, +-1.497542844246735544e-04, +-1.499053238634966579e-04, +-1.500561081844514158e-04, +-1.502066371617872306e-04, +-1.503569105702123388e-04, +-1.505069281848497116e-04, +-1.506566897812653522e-04, +-1.508061951354585652e-04, +-1.509554440238591107e-04, +-1.511044362233209969e-04, +-1.512531715111490975e-04, +-1.514016496650794465e-04, +-1.515498704632739252e-04, +-1.516978336843457956e-04, +-1.518455391073204245e-04, +-1.519929865116828539e-04, +-1.521401756773377116e-04, +-1.522871063846402472e-04, +-1.524337784143682507e-04, +-1.525801915477542538e-04, +-1.527263455664452246e-04, +-1.528722402525490253e-04, +-1.530178753885944867e-04, +-1.531632507575607090e-04, +-1.533083661428677100e-04, +-1.534532213283576420e-04, +-1.535978160983244981e-04, +-1.537421502375031627e-04, +-1.538862235310695732e-04, +-1.540300357646300685e-04, +-1.541735867242484393e-04, +-1.543168761964066802e-04, +-1.544599039680513936e-04, +-1.546026698265539994e-04, +-1.547451735597411468e-04, +-1.548874149558724885e-04, +-1.550293938036535551e-04, +-1.551711098922295212e-04, +-1.553125630111981074e-04, +-1.554537529505883571e-04, +-1.555946795008889341e-04, +-1.557353424530112597e-04, +-1.558757415983329079e-04, +-1.560158767286591976e-04, +-1.561557476362528997e-04, +-1.562953541138195732e-04, +-1.564346959545089477e-04, +-1.565737729519068460e-04, +-1.567125849000608256e-04, +-1.568511315934631835e-04, +-1.569894128270426354e-04, +-1.571274283961909054e-04, +-1.572651780967259446e-04, +-1.574026617249351366e-04, +-1.575398790775382990e-04, +-1.576768299517132164e-04, +-1.578135141450862620e-04, +-1.579499314557303107e-04, +-1.580860816821575018e-04, +-1.582219646233486480e-04, +-1.583575800787186767e-04, +-1.584929278481430031e-04, +-1.586280077319486938e-04, +-1.587628195309005350e-04, +-1.588973630462220930e-04, +-1.590316380795917027e-04, +-1.591656444331395403e-04, +-1.592993819094385701e-04, +-1.594328503115291019e-04, +-1.595660494428826053e-04, +-1.596989791074447532e-04, +-1.598316391095995883e-04, +-1.599640292541927794e-04, +-1.600961493465277729e-04, +-1.602279991923454092e-04, +-1.603595785978508112e-04, +-1.604908873697069062e-04, +-1.606219253150303872e-04, +-1.607526922413850181e-04, +-1.608831879568038052e-04, +-1.610134122697554418e-04, +-1.611433649891854530e-04, +-1.612730459244791437e-04, +-1.614024548854928231e-04, +-1.615315916825305759e-04, +-1.616604561263467290e-04, +-1.617890480281667493e-04, +-1.619173671996714144e-04, +-1.620454134529895483e-04, +-1.621731866007236362e-04, +-1.623006864559137198e-04, +-1.624279128320781367e-04, +-1.625548655431805064e-04, +-1.626815444036527967e-04, +-1.628079492283848067e-04, +-1.629340798327244110e-04, +-1.630599360324702413e-04, +-1.631855176438957826e-04, +-1.633108244837320263e-04, +-1.634358563691620217e-04, +-1.635606131178448644e-04, +-1.636850945478797545e-04, +-1.638093004778484979e-04, +-1.639332307267795373e-04, +-1.640568851141752473e-04, +-1.641802634599889225e-04, +-1.643033655846506621e-04, +-1.644261913090336248e-04, +-1.645487404544937915e-04, +-1.646710128428357318e-04, +-1.647930082963372153e-04, +-1.649147266377420560e-04, +-1.650361676902439574e-04, +-1.651573312775094979e-04, +-1.652782172236733874e-04, +-1.653988253533340759e-04, +-1.655191554915474116e-04, +-1.656392074638486222e-04, +-1.657589810962187867e-04, +-1.658784762151242461e-04, +-1.659976926474833990e-04, +-1.661166302206901484e-04, +-1.662352887626062303e-04, +-1.663536681015490438e-04, +-1.664717680663078600e-04, +-1.665895884861451771e-04, +-1.667071291907891309e-04, +-1.668243900104337391e-04, +-1.669413707757325582e-04, +-1.670580713178238105e-04, +-1.671744914683004324e-04, +-1.672906310592334395e-04, +-1.674064899231613010e-04, +-1.675220678930898857e-04, +-1.676373648024863361e-04, +-1.677523804853005361e-04, +-1.678671147759504463e-04, +-1.679815675093155453e-04, +-1.680957385207592725e-04, +-1.682096276460972337e-04, +-1.683232347216339015e-04, +-1.684365595841317426e-04, +-1.685496020708339589e-04, +-1.686623620194529409e-04, +-1.687748392681724359e-04, +-1.688870336556384951e-04, +-1.689989450209841660e-04, +-1.691105732038103568e-04, +-1.692219180441854832e-04, +-1.693329793826617053e-04, +-1.694437570602463851e-04, +-1.695542509184396818e-04, +-1.696644607992013479e-04, +-1.697743865449758555e-04, +-1.698840279986709562e-04, +-1.699933850036812900e-04, +-1.701024574038592467e-04, +-1.702112450435478179e-04, +-1.703197477675542232e-04, +-1.704279654211668783e-04, +-1.705358978501532810e-04, +-1.706435449007426091e-04, +-1.707509064196484621e-04, +-1.708579822540623287e-04, +-1.709647722516522588e-04, +-1.710712762605597461e-04, +-1.711774941293951204e-04, +-1.712834257072598553e-04, +-1.713890708437273503e-04, +-1.714944293888423889e-04, +-1.715995011931375916e-04, +-1.717042861076138727e-04, +-1.718087839837544809e-04, +-1.719129946735164344e-04, +-1.720169180293446693e-04, +-1.721205539041510333e-04, +-1.722239021513381383e-04, +-1.723269626247718759e-04, +-1.724297351788127506e-04, +-1.725322196682891815e-04, +-1.726344159485165028e-04, +-1.727363238752888867e-04, +-1.728379433048793704e-04, +-1.729392740940320498e-04, +-1.730403160999847392e-04, +-1.731410691804528173e-04, +-1.732415331936251876e-04, +-1.733417079981829545e-04, +-1.734415934532725621e-04, +-1.735411894185385096e-04, +-1.736404957540932381e-04, +-1.737395123205400069e-04, +-1.738382389789622413e-04, +-1.739366755909230449e-04, +-1.740348220184626785e-04, +-1.741326781241151487e-04, +-1.742302437708869844e-04, +-1.743275188222746927e-04, +-1.744245031422585245e-04, +-1.745211965952918494e-04, +-1.746175990463172292e-04, +-1.747137103607634631e-04, +-1.748095304045433653e-04, +-1.749050590440454707e-04, +-1.750002961461552856e-04, +-1.750952415782255531e-04, +-1.751898952081101346e-04, +-1.752842569041352240e-04, +-1.753783265351191889e-04, +-1.754721039703676917e-04, +-1.755655890796589712e-04, +-1.756587817332653373e-04, +-1.757516818019451204e-04, +-1.758442891569431327e-04, +-1.759366036699868188e-04, +-1.760286252132843045e-04, +-1.761203536595402257e-04, +-1.762117888819423933e-04, +-1.763029307541600851e-04, +-1.763937791503578697e-04, +-1.764843339451808068e-04, +-1.765745950137567516e-04, +-1.766645622317102862e-04, +-1.767542354751519052e-04, +-1.768436146206720525e-04, +-1.769326995453597150e-04, +-1.770214901267781098e-04, +-1.771099862429923583e-04, +-1.771981877725446579e-04, +-1.772860945944724695e-04, +-1.773737065883014975e-04, +-1.774610236340436837e-04, +-1.775480456121940093e-04, +-1.776347724037462966e-04, +-1.777212038901815545e-04, +-1.778073399534643728e-04, +-1.778931804760588336e-04, +-1.779787253409027879e-04, +-1.780639744314393524e-04, +-1.781489276315916198e-04, +-1.782335848257799251e-04, +-1.783179458989075884e-04, +-1.784020107363772317e-04, +-1.784857792240685805e-04, +-1.785692512483656226e-04, +-1.786524266961340296e-04, +-1.787353054547343573e-04, +-1.788178874120218288e-04, +-1.789001724563330799e-04, +-1.789821604765010131e-04, +-1.790638513618522220e-04, +-1.791452450022055554e-04, +-1.792263412878686204e-04, +-1.793071401096359391e-04, +-1.793876413588034230e-04, +-1.794678449271569617e-04, +-1.795477507069703901e-04, +-1.796273585910134298e-04, +-1.797066684725517980e-04, +-1.797856802453338715e-04, +-1.798643938036076546e-04, +-1.799428090421166049e-04, +-1.800209258560896044e-04, +-1.800987441412606378e-04, +-1.801762637938403592e-04, +-1.802534847105486456e-04, +-1.803304067885888194e-04, +-1.804070299256639663e-04, +-1.804833540199698332e-04, +-1.805593789701960756e-04, +-1.806351046755198873e-04, +-1.807105310356225893e-04, +-1.807856579506777030e-04, +-1.808604853213473728e-04, +-1.809350130487981682e-04, +-1.810092410346786677e-04, +-1.810831691811454799e-04, +-1.811567973908394995e-04, +-1.812301255669043927e-04, +-1.813031536129779239e-04, +-1.813758814331912507e-04, +-1.814483089321658883e-04, +-1.815204360150283731e-04, +-1.815922625873992314e-04, +-1.816637885553883981e-04, +-1.817350138256118596e-04, +-1.818059383051702136e-04, +-1.818765619016666124e-04, +-1.819468845232019116e-04, +-1.820169060783716067e-04, +-1.820866264762690048e-04, +-1.821560456264764694e-04, +-1.822251634390829845e-04, +-1.822939798246730417e-04, +-1.823624946943211650e-04, +-1.824307079596058153e-04, +-1.824986195326034277e-04, +-1.825662293258794667e-04, +-1.826335372525022768e-04, +-1.827005432260386374e-04, +-1.827672471605538171e-04, +-1.828336489706088356e-04, +-1.828997485712565341e-04, +-1.829655458780572687e-04, +-1.830310408070667133e-04, +-1.830962332748351277e-04, +-1.831611231984159229e-04, +-1.832257104953563369e-04, +-1.832899950837049697e-04, +-1.833539768820057663e-04, +-1.834176558093061210e-04, +-1.834810317851463606e-04, +-1.835441047295734325e-04, +-1.836068745631219039e-04, +-1.836693412068361340e-04, +-1.837315045822526013e-04, +-1.837933646114101494e-04, +-1.838549212168484961e-04, +-1.839161743216032464e-04, +-1.839771238492065425e-04, +-1.840377697236965783e-04, +-1.840981118696097653e-04, +-1.841581502119782668e-04, +-1.842178846763408394e-04, +-1.842773151887255943e-04, +-1.843364416756717358e-04, +-1.843952640642095031e-04, +-1.844537822818770572e-04, +-1.845119962567053290e-04, +-1.845699059172332252e-04, +-1.846275111924901454e-04, +-1.846848120120152270e-04, +-1.847418083058425457e-04, +-1.847985000045089218e-04, +-1.848548870390535133e-04, +-1.849109693410107150e-04, +-1.849667468424180997e-04, +-1.850222194758170961e-04, +-1.850773871742486792e-04, +-1.851322498712537493e-04, +-1.851868075008698800e-04, +-1.852410599976441385e-04, +-1.852950072966213764e-04, +-1.853486493333444192e-04, +-1.854019860438616560e-04, +-1.854550173647251149e-04, +-1.855077432329787807e-04, +-1.855601635861752917e-04, +-1.856122783623678893e-04, +-1.856640875001131831e-04, +-1.857155909384663800e-04, +-1.857667886169821789e-04, +-1.858176804757223600e-04, +-1.858682664552501200e-04, +-1.859185464966267923e-04, +-1.859685205414198699e-04, +-1.860181885316967174e-04, +-1.860675504100242725e-04, +-1.861166061194755516e-04, +-1.861653556036268304e-04, +-1.862137988065518167e-04, +-1.862619356728325464e-04, +-1.863097661475447198e-04, +-1.863572901762766752e-04, +-1.864045077051108487e-04, +-1.864514186806373001e-04, +-1.864980230499475595e-04, +-1.865443207606360375e-04, +-1.865903117607957146e-04, +-1.866359959990269784e-04, +-1.866813734244331775e-04, +-1.867264439866166918e-04, +-1.867712076356881480e-04, +-1.868156643222528945e-04, +-1.868598139974287546e-04, +-1.869036566128287071e-04, +-1.869471921205740858e-04, +-1.869904204732865567e-04, +-1.870333416240919130e-04, +-1.870759555266161714e-04, +-1.871182621349935142e-04, +-1.871602614038578056e-04, +-1.872019532883469550e-04, +-1.872433377441049776e-04, +-1.872844147272735376e-04, +-1.873251841945001062e-04, +-1.873656461029372846e-04, +-1.874058004102407168e-04, +-1.874456470745690352e-04, +-1.874851860545804724e-04, +-1.875244173094428634e-04, +-1.875633407988245649e-04, +-1.876019564828975187e-04, +-1.876402643223371426e-04, +-1.876782642783250959e-04, +-1.877159563125417705e-04, +-1.877533403871739081e-04, +-1.877904164649137596e-04, +-1.878271845089529864e-04, +-1.878636444829924999e-04, +-1.878997963512304807e-04, +-1.879356400783737627e-04, +-1.879711756296306507e-04, +-1.880064029707140098e-04, +-1.880413220678421333e-04, +-1.880759328877352186e-04, +-1.881102353976148525e-04, +-1.881442295652104892e-04, +-1.881779153587557097e-04, +-1.882112927469841292e-04, +-1.882443616991386667e-04, +-1.882771221849588060e-04, +-1.883095741746957741e-04, +-1.883417176390983115e-04, +-1.883735525494236764e-04, +-1.884050788774327932e-04, +-1.884362965953865663e-04, +-1.884672056760514091e-04, +-1.884978060927010876e-04, +-1.885280978191102420e-04, +-1.885580808295569618e-04, +-1.885877550988276918e-04, +-1.886171206022062275e-04, +-1.886461773154848550e-04, +-1.886749252149583613e-04, +-1.887033642774271509e-04, +-1.887314944801950234e-04, +-1.887593158010663545e-04, +-1.887868282183530351e-04, +-1.888140317108728177e-04, +-1.888409262579415911e-04, +-1.888675118393839795e-04, +-1.888937884355274324e-04, +-1.889197560272027135e-04, +-1.889454145957430867e-04, +-1.889707641229885723e-04, +-1.889958045912832631e-04, +-1.890205359834731564e-04, +-1.890449582829067498e-04, +-1.890690714734403544e-04, +-1.890928755394334052e-04, +-1.891163704657462927e-04, +-1.891395562377468954e-04, +-1.891624328413039392e-04, +-1.891850002627924992e-04, +-1.892072584890884708e-04, +-1.892292075075749120e-04, +-1.892508473061359990e-04, +-1.892721778731625015e-04, +-1.892931991975449794e-04, +-1.893139112686815888e-04, +-1.893343140764708994e-04, +-1.893544076113176948e-04, +-1.893741918641305333e-04, +-1.893936668263201755e-04, +-1.894128324897993948e-04, +-1.894316888469876393e-04, +-1.894502358908084841e-04, +-1.894684736146850232e-04, +-1.894864020125486520e-04, +-1.895040210788287937e-04, +-1.895213308084643113e-04, +-1.895383311968919064e-04, +-1.895550222400561478e-04, +-1.895714039344022347e-04, +-1.895874762768796288e-04, +-1.896032392649408074e-04, +-1.896186928965423203e-04, +-1.896338371701419443e-04, +-1.896486720847029381e-04, +-1.896631976396918472e-04, +-1.896774138350753864e-04, +-1.896913206713255091e-04, +-1.897049181494167504e-04, +-1.897182062708276638e-04, +-1.897311850375387344e-04, +-1.897438544520320804e-04, +-1.897562145172950853e-04, +-1.897682652368171455e-04, +-1.897800066145902121e-04, +-1.897914386551075982e-04, +-1.898025613633690751e-04, +-1.898133747448734452e-04, +-1.898238788056225265e-04, +-1.898340735521217759e-04, +-1.898439589913805063e-04, +-1.898535351309075224e-04, +-1.898628019787148072e-04, +-1.898717595433181454e-04, +-1.898804078337342231e-04, +-1.898887468594824708e-04, +-1.898967766305846030e-04, +-1.899044971575654308e-04, +-1.899119084514489593e-04, +-1.899190105237634019e-04, +-1.899258033865393097e-04, +-1.899322870523077831e-04, +-1.899384615341026127e-04, +-1.899443268454588970e-04, +-1.899498830004138559e-04, +-1.899551300135058002e-04, +-1.899600678997757312e-04, +-1.899646966747655242e-04, +-1.899690163545180105e-04, +-1.899730269555778171e-04, +-1.899767284949912313e-04, +-1.899801209903059839e-04, +-1.899832044595700566e-04, +-1.899859789213349619e-04, +-1.899884443946491018e-04, +-1.899906008990657645e-04, +-1.899924484546375671e-04, +-1.899939870819174323e-04, +-1.899952168019618400e-04, +-1.899961376363228322e-04, +-1.899967496070591524e-04, +-1.899970527367258652e-04, +-1.899970470483798850e-04, +-1.899967325655790547e-04, +-1.899961093123807363e-04, +-1.899951773133428951e-04, +-1.899939365935242352e-04, +-1.899923871784821121e-04, +-1.899905290942754607e-04, +-1.899883623674633040e-04, +-1.899858870251023679e-04, +-1.899831030947517164e-04, +-1.899800106044686587e-04, +-1.899766095828102396e-04, +-1.899729000588339448e-04, +-1.899688820620954236e-04, +-1.899645556226506576e-04, +-1.899599207710551475e-04, +-1.899549775383624762e-04, +-1.899497259561255022e-04, +-1.899441660563974698e-04, +-1.899382978717291100e-04, +-1.899321214351704285e-04, +-1.899256367802705438e-04, +-1.899188439410767922e-04, +-1.899117429521350803e-04, +-1.899043338484905359e-04, +-1.898966166656850408e-04, +-1.898885914397596165e-04, +-1.898802582072553187e-04, +-1.898716170052074635e-04, +-1.898626678711534069e-04, +-1.898534108431246302e-04, +-1.898438459596534346e-04, +-1.898339732597680626e-04, +-1.898237927829947577e-04, +-1.898133045693571413e-04, +-1.898025086593771340e-04, +-1.897914050940727876e-04, +-1.897799939149598294e-04, +-1.897682751640507955e-04, +-1.897562488838551117e-04, +-1.897439151173798257e-04, +-1.897312739081273840e-04, +-1.897183253000992375e-04, +-1.897050693377898777e-04, +-1.896915060661932611e-04, +-1.896776355307979573e-04, +-1.896634577775895339e-04, +-1.896489728530497169e-04, +-1.896341808041555497e-04, +-1.896190816783797190e-04, +-1.896036755236922620e-04, +-1.895879623885564737e-04, +-1.895719423219330811e-04, +-1.895556153732780747e-04, +-1.895389815925417056e-04, +-1.895220410301697597e-04, +-1.895047937371023377e-04, +-1.894872397647762402e-04, +-1.894693791651219325e-04, +-1.894512119905652787e-04, +-1.894327382940243166e-04, +-1.894139581289147872e-04, +-1.893948715491445233e-04, +-1.893754786091165945e-04, +-1.893557793637271655e-04, +-1.893357738683682065e-04, +-1.893154621789224792e-04, +-1.892948443517684964e-04, +-1.892739204437781644e-04, +-1.892526905123165389e-04, +-1.892311546152425296e-04, +-1.892093128109059187e-04, +-1.891871651581514269e-04, +-1.891647117163186044e-04, +-1.891419525452344048e-04, +-1.891188877052233221e-04, +-1.890955172571005057e-04, +-1.890718412621722759e-04, +-1.890478597822380211e-04, +-1.890235728795914714e-04, +-1.889989806170147633e-04, +-1.889740830577826131e-04, +-1.889488802656642688e-04, +-1.889233723049145387e-04, +-1.888975592402875059e-04, +-1.888714411370213226e-04, +-1.888450180608491067e-04, +-1.888182900779943876e-04, +-1.887912572551696971e-04, +-1.887639196595789816e-04, +-1.887362773589200686e-04, +-1.887083304213760747e-04, +-1.886800789156224255e-04, +-1.886515229108259883e-04, +-1.886226624766396240e-04, +-1.885934976832112132e-04, +-1.885640286011738983e-04, +-1.885342553016519380e-04, +-1.885041778562588917e-04, +-1.884737963370984864e-04, +-1.884431108167587351e-04, +-1.884121213683251372e-04, +-1.883808280653622737e-04, +-1.883492309819296640e-04, +-1.883173301925742847e-04, +-1.882851257723251758e-04, +-1.882526177967101106e-04, +-1.882198063417373261e-04, +-1.881866914839029506e-04, +-1.881532733001933073e-04, +-1.881195518680810381e-04, +-1.880855272655252938e-04, +-1.880511995709744711e-04, +-1.880165688633605211e-04, +-1.879816352221043158e-04, +-1.879463987271129378e-04, +-1.879108594587799508e-04, +-1.878750174979852922e-04, +-1.878388729260957869e-04, +-1.878024258249606218e-04, +-1.877656762769175250e-04, +-1.877286243647905166e-04, +-1.876912701718870893e-04, +-1.876536137820008652e-04, +-1.876156552794119208e-04, +-1.875773947488802273e-04, +-1.875388322756557072e-04, +-1.874999679454706714e-04, +-1.874608018445420151e-04, +-1.874213340595720038e-04, +-1.873815646777427706e-04, +-1.873414937867243940e-04, +-1.873011214746698018e-04, +-1.872604478302139041e-04, +-1.872194729424758698e-04, +-1.871781969010600209e-04, +-1.871366197960478372e-04, +-1.870947417180084994e-04, +-1.870525627579925742e-04, +-1.870100830075325019e-04, +-1.869673025586426234e-04, +-1.869242215038217014e-04, +-1.868808399360446257e-04, +-1.868371579487730931e-04, +-1.867931756359489663e-04, +-1.867488930919940302e-04, +-1.867043104118144099e-04, +-1.866594276907910838e-04, +-1.866142450247890996e-04, +-1.865687625101594986e-04, +-1.865229802437222667e-04, +-1.864768983227852806e-04, +-1.864305168451366645e-04, +-1.863838359090372548e-04, +-1.863368556132347217e-04, +-1.862895760569523748e-04, +-1.862419973398938796e-04, +-1.861941195622434471e-04, +-1.861459428246574853e-04, +-1.860974672282756314e-04, +-1.860486928747210494e-04, +-1.859996198660841403e-04, +-1.859502483049390220e-04, +-1.859005782943407101e-04, +-1.858506099378122434e-04, +-1.858003433393600791e-04, +-1.857497786034735239e-04, +-1.856989158351048661e-04, +-1.856477551396942306e-04, +-1.855962966231558911e-04, +-1.855445403918728759e-04, +-1.854924865527180021e-04, +-1.854401352130266611e-04, +-1.853874864806171212e-04, +-1.853345404637828835e-04, +-1.852812972712876134e-04, +-1.852277570123725403e-04, +-1.851739197967609840e-04, +-1.851197857346382970e-04, +-1.850653549366719226e-04, +-1.850106275140032356e-04, +-1.849556035782393842e-04, +-1.849002832414767630e-04, +-1.848446666162690015e-04, +-1.847887538156526871e-04, +-1.847325449531342194e-04, +-1.846760401426955286e-04, +-1.846192394987820689e-04, +-1.845621431363276459e-04, +-1.845047511707216743e-04, +-1.844470637178357675e-04, +-1.843890808940119744e-04, +-1.843308028160549458e-04, +-1.842722296012541065e-04, +-1.842133613673647627e-04, +-1.841541982326054463e-04, +-1.840947403156741502e-04, +-1.840349877357364027e-04, +-1.839749406124279504e-04, +-1.839145990658561406e-04, +-1.838539632165914922e-04, +-1.837930331856810033e-04, +-1.837318090946402375e-04, +-1.836702910654440263e-04, +-1.836084792205513788e-04, +-1.835463736828821983e-04, +-1.834839745758183940e-04, +-1.834212820232193847e-04, +-1.833582961494072182e-04, +-1.832950170791741067e-04, +-1.832314449377778459e-04, +-1.831675798509462601e-04, +-1.831034219448664691e-04, +-1.830389713461992530e-04, +-1.829742281820697833e-04, +-1.829091925800689503e-04, +-1.828438646682567243e-04, +-1.827782445751491725e-04, +-1.827123324297369445e-04, +-1.826461283614728038e-04, +-1.825796325002745555e-04, +-1.825128449765245310e-04, +-1.824457659210713500e-04, +-1.823783954652204338e-04, +-1.823107337407491567e-04, +-1.822427808798951639e-04, +-1.821745370153593805e-04, +-1.821060022803104020e-04, +-1.820371768083687734e-04, +-1.819680607336275353e-04, +-1.818986541906389420e-04, +-1.818289573144177414e-04, +-1.817589702404388710e-04, +-1.816886931046435294e-04, +-1.816181260434251358e-04, +-1.815472691936437233e-04, +-1.814761226926282691e-04, +-1.814046866781519212e-04, +-1.813329612884593471e-04, +-1.812609466622544551e-04, +-1.811886429386933743e-04, +-1.811160502573996606e-04, +-1.810431687584536441e-04, +-1.809699985823945705e-04, +-1.808965398702230408e-04, +-1.808227927633893832e-04, +-1.807487574038080995e-04, +-1.806744339338603054e-04, +-1.805998224963671671e-04, +-1.805249232346192560e-04, +-1.804497362923643787e-04, +-1.803742618137970332e-04, +-1.802984999435779242e-04, +-1.802224508268226880e-04, +-1.801461146091003739e-04, +-1.800694914364372936e-04, +-1.799925814553178342e-04, +-1.799153848126697674e-04, +-1.798379016558971819e-04, +-1.797601321328368715e-04, +-1.796820763917924603e-04, +-1.796037345815225037e-04, +-1.795251068512285079e-04, +-1.794461933505727650e-04, +-1.793669942296808738e-04, +-1.792875096391119243e-04, +-1.792077397298897496e-04, +-1.791276846534915149e-04, +-1.790473445618326201e-04, +-1.789667196073050259e-04, +-1.788858099427275165e-04, +-1.788046157213837547e-04, +-1.787231370970060191e-04, +-1.786413742237763697e-04, +-1.785593272563278675e-04, +-1.784769963497463902e-04, +-1.783943816595588965e-04, +-1.783114833417505558e-04, +-1.782283015527571048e-04, +-1.781448364494486118e-04, +-1.780610881891663119e-04, +-1.779770569296866393e-04, +-1.778927428292296565e-04, +-1.778081460464735826e-04, +-1.777232667405383680e-04, +-1.776381050709942863e-04, +-1.775526611978604438e-04, +-1.774669352815924736e-04, +-1.773809274831026478e-04, +-1.772946379637494146e-04, +-1.772080668853237648e-04, +-1.771212144100820559e-04, +-1.770340807007162506e-04, +-1.769466659203557059e-04, +-1.768589702325851437e-04, +-1.767709938014295264e-04, +-1.766827367913593962e-04, +-1.765941993672902788e-04, +-1.765053816945723569e-04, +-1.764162839390084133e-04, +-1.763269062668409558e-04, +-1.762372488447555791e-04, +-1.761473118398787410e-04, +-1.760570954197830489e-04, +-1.759665997524722430e-04, +-1.758758250064020132e-04, +-1.757847713504648204e-04, +-1.756934389539939077e-04, +-1.756018279867635988e-04, +-1.755099386189915207e-04, +-1.754177710213237226e-04, +-1.753253253648566045e-04, +-1.752326018211227679e-04, +-1.751396005620927776e-04, +-1.750463217601800681e-04, +-1.749527655882243281e-04, +-1.748589322195155421e-04, +-1.747648218277752890e-04, +-1.746704345871648181e-04, +-1.745757706722806865e-04, +-1.744808302581608026e-04, +-1.743856135202668622e-04, +-1.742901206345090688e-04, +-1.741943517772283248e-04, +-1.740983071252017074e-04, +-1.740019868556409504e-04, +-1.739053911461966727e-04, +-1.738085201749413290e-04, +-1.737113741203935775e-04, +-1.736139531615025588e-04, +-1.735162574776496851e-04, +-1.734182872486538440e-04, +-1.733200426547545122e-04, +-1.732215238766318134e-04, +-1.731227310954106923e-04, +-1.730236644926217749e-04, +-1.729243242502448181e-04, +-1.728247105506898441e-04, +-1.727248235767864617e-04, +-1.726246635118057395e-04, +-1.725242305394455967e-04, +-1.724235248438329168e-04, +-1.723225466095250932e-04, +-1.722212960215115465e-04, +-1.721197732651940195e-04, +-1.720179785264338483e-04, +-1.719159119914887262e-04, +-1.718135738470615470e-04, +-1.717109642802833560e-04, +-1.716080834786988757e-04, +-1.715049316302875938e-04, +-1.714015089234696991e-04, +-1.712978155470647732e-04, +-1.711938516903360535e-04, +-1.710896175429705646e-04, +-1.709851132950645635e-04, +-1.708803391371688859e-04, +-1.707752952602286647e-04, +-1.706699818556297612e-04, +-1.705643991151824202e-04, +-1.704585472311018635e-04, +-1.703524263960538800e-04, +-1.702460368031124334e-04, +-1.701393786457658429e-04, +-1.700324521179369212e-04, +-1.699252574139708866e-04, +-1.698177947286157109e-04, +-1.697100642570673859e-04, +-1.696020661949287770e-04, +-1.694938007382150176e-04, +-1.693852680833725908e-04, +-1.692764684272648015e-04, +-1.691674019671737816e-04, +-1.690580689008038245e-04, +-1.689484694262646065e-04, +-1.688386037420989429e-04, +-1.687284720472659284e-04, +-1.686180745411234813e-04, +-1.685074114234745308e-04, +-1.683964828945256817e-04, +-1.682852891548892473e-04, +-1.681738304056085110e-04, +-1.680621068481370729e-04, +-1.679501186843434027e-04, +-1.678378661165168847e-04, +-1.677253493473459980e-04, +-1.676125685799478610e-04, +-1.674995240178489596e-04, +-1.673862158649887797e-04, +-1.672726443257197524e-04, +-1.671588096048131906e-04, +-1.670447119074367913e-04, +-1.669303514391849393e-04, +-1.668157284060587308e-04, +-1.667008430144714215e-04, +-1.665856954712456887e-04, +-1.664702859836209232e-04, +-1.663546147592316529e-04, +-1.662386820061360036e-04, +-1.661224879327974574e-04, +-1.660060327480886199e-04, +-1.658893166612945814e-04, +-1.657723398820955697e-04, +-1.656551026205929438e-04, +-1.655376050872915488e-04, +-1.654198474931028052e-04, +-1.653018300493460377e-04, +-1.651835529677508332e-04, +-1.650650164604382025e-04, +-1.649462207399495829e-04, +-1.648271660192273769e-04, +-1.647078525116174455e-04, +-1.645882804308730120e-04, +-1.644684499911529534e-04, +-1.643483614070076796e-04, +-1.642280148934037985e-04, +-1.641074106657082867e-04, +-1.639865489396882998e-04, +-1.638654299315199547e-04, +-1.637440538577654794e-04, +-1.636224209353990449e-04, +-1.635005313818110742e-04, +-1.633783854147615139e-04, +-1.632559832524316311e-04, +-1.631333251134028722e-04, +-1.630104112166403556e-04, +-1.628872417815236361e-04, +-1.627638170278264027e-04, +-1.626401371757212500e-04, +-1.625162024457823336e-04, +-1.623920130589672102e-04, +-1.622675692366403377e-04, +-1.621428712005794175e-04, +-1.620179191729260906e-04, +-1.618927133762404730e-04, +-1.617672540334775199e-04, +-1.616415413679661009e-04, +-1.615155756034619900e-04, +-1.613893569640995648e-04, +-1.612628856743969291e-04, +-1.611361619592808494e-04, +-1.610091860440732842e-04, +-1.608819581544653355e-04, +-1.607544785165801872e-04, +-1.606267473568939307e-04, +-1.604987649022971482e-04, +-1.603705313800711952e-04, +-1.602420470178665169e-04, +-1.601133120437563703e-04, +-1.599843266861890106e-04, +-1.598550911739901853e-04, +-1.597256057363922446e-04, +-1.595958706030156833e-04, +-1.594658860038479173e-04, +-1.593356521693034295e-04, +-1.592051693301444880e-04, +-1.590744377175437856e-04, +-1.589434575630558981e-04, +-1.588122290986206185e-04, +-1.586807525565641763e-04, +-1.585490281696046318e-04, +-1.584170561708274274e-04, +-1.582848367937200274e-04, +-1.581523702721557094e-04, +-1.580196568403672186e-04, +-1.578866967330062084e-04, +-1.577534901850896273e-04, +-1.576200374320064677e-04, +-1.574863387095450605e-04, +-1.573523942538699281e-04, +-1.572182043015260934e-04, +-1.570837690894479164e-04, +-1.569490888549312298e-04, +-1.568141638356698503e-04, +-1.566789942697321318e-04, +-1.565435803955651675e-04, +-1.564079224519959006e-04, +-1.562720206782355697e-04, +-1.561358753138559921e-04, +-1.559994865988240684e-04, +-1.558628547734785261e-04, +-1.557259800785353954e-04, +-1.555888627550858943e-04, +-1.554515030446056449e-04, +-1.553139011889253726e-04, +-1.551760574302710487e-04, +-1.550379720112368665e-04, +-1.548996451747914217e-04, +-1.547610771642828889e-04, +-1.546222682234161996e-04, +-1.544832185962856765e-04, +-1.543439285273541354e-04, +-1.542043982614555147e-04, +-1.540646280437966639e-04, +-1.539246181199603256e-04, +-1.537843687358843184e-04, +-1.536438801378934400e-04, +-1.535031525726772948e-04, +-1.533621862872949835e-04, +-1.532209815291751842e-04, +-1.530795385461211665e-04, +-1.529378575862872923e-04, +-1.527959388982128692e-04, +-1.526537827307997077e-04, +-1.525113893333164311e-04, +-1.523687589554048453e-04, +-1.522258918470534024e-04, +-1.520827882586299712e-04, +-1.519394484408864178e-04, +-1.517958726449017935e-04, +-1.516520611221442696e-04, +-1.515080141244472582e-04, +-1.513637319039884052e-04, +-1.512192147133269962e-04, +-1.510744628053792900e-04, +-1.509294764334238317e-04, +-1.507842558511076052e-04, +-1.506388013124197690e-04, +-1.504931130717234225e-04, +-1.503471913837610278e-04, +-1.502010365035971902e-04, +-1.500546486866815156e-04, +-1.499080281888231039e-04, +-1.497611752661650707e-04, +-1.496140901752452356e-04, +-1.494667731729418573e-04, +-1.493192245164778084e-04, +-1.491714444634516647e-04, +-1.490234332718181893e-04, +-1.488751911998634507e-04, +-1.487267185062740756e-04, +-1.485780154500466099e-04, +-1.484290822905584258e-04, +-1.482799192875407788e-04, +-1.481305267010537359e-04, +-1.479809047915488967e-04, +-1.478310538198120930e-04, +-1.476809740469678075e-04, +-1.475306657345133254e-04, +-1.473801291442965091e-04, +-1.472293645384910776e-04, +-1.470783721796667279e-04, +-1.469271523306978717e-04, +-1.467757052548349225e-04, +-1.466240312156709283e-04, +-1.464721304771484571e-04, +-1.463200033035574551e-04, +-1.461676499595441917e-04, +-1.460150707100799257e-04, +-1.458622658205065777e-04, +-1.457092355565090284e-04, +-1.455559801840940041e-04, +-1.454024999696539359e-04, +-1.452487951799045639e-04, +-1.450948660818957253e-04, +-1.449407129430393265e-04, +-1.447863360310860600e-04, +-1.446317356141287925e-04, +-1.444769119606108862e-04, +-1.443218653392980906e-04, +-1.441665960193180081e-04, +-1.440111042701327712e-04, +-1.438553903615466057e-04, +-1.436994545637032008e-04, +-1.435432971470937597e-04, +-1.433869183825293254e-04, +-1.432303185411796490e-04, +-1.430734978945468166e-04, +-1.429164567144709417e-04, +-1.427591952731313302e-04, +-1.426017138430493540e-04, +-1.424440126970641916e-04, +-1.422860921083716156e-04, +-1.421279523504966980e-04, +-1.419695936972990955e-04, +-1.418110164229820756e-04, +-1.416522208020611290e-04, +-1.414932071094072833e-04, +-1.413339756202180466e-04, +-1.411745266100243460e-04, +-1.410148603546890103e-04, +-1.408549771304151179e-04, +-1.406948772137158290e-04, +-1.405345608814562630e-04, +-1.403740284108259868e-04, +-1.402132800793443003e-04, +-1.400523161648676088e-04, +-1.398911369455602854e-04, +-1.397297426999366294e-04, +-1.395681337068331378e-04, +-1.394063102454125985e-04, +-1.392442725951669629e-04, +-1.390820210359204633e-04, +-1.389195558478042969e-04, +-1.387568773112884198e-04, +-1.385939857071898139e-04, +-1.384308813166081401e-04, +-1.382675644209961023e-04, +-1.381040353021309333e-04, +-1.379402942420902172e-04, +-1.377763415232981844e-04, +-1.376121774284928606e-04, +-1.374478022407352553e-04, +-1.372832162434150269e-04, +-1.371184197202213986e-04, +-1.369534129551784227e-04, +-1.367881962326520815e-04, +-1.366227698372848561e-04, +-1.364571340540669309e-04, +-1.362912891683076800e-04, +-1.361252354656053356e-04, +-1.359589732319265419e-04, +-1.357925027535047925e-04, +-1.356258243169195497e-04, +-1.354589382090583521e-04, +-1.352918447171326164e-04, +-1.351245441286394195e-04, +-1.349570367314411332e-04, +-1.347893228136648100e-04, +-1.346214026637799479e-04, +-1.344532765705678883e-04, +-1.342849448230960395e-04, +-1.341164077107857204e-04, +-1.339476655233494667e-04, +-1.337787185507961535e-04, +-1.336095670834670454e-04, +-1.334402114120146541e-04, +-1.332706518273710260e-04, +-1.331008886208296261e-04, +-1.329309220839406584e-04, +-1.327607525085925712e-04, +-1.325903801869815902e-04, +-1.324198054115819853e-04, +-1.322490284752183046e-04, +-1.320780496710004313e-04, +-1.319068692923286521e-04, +-1.317354876329306286e-04, +-1.315639049868392251e-04, +-1.313921216483623412e-04, +-1.312201379121550378e-04, +-1.310479540731546209e-04, +-1.308755704265860082e-04, +-1.307029872679984291e-04, +-1.305302048932360434e-04, +-1.303572235984435518e-04, +-1.301840436800749776e-04, +-1.300106654348616561e-04, +-1.298370891598567137e-04, +-1.296633151524055508e-04, +-1.294893437101523736e-04, +-1.293151751310405741e-04, +-1.291408097133170938e-04, +-1.289662477555044784e-04, +-1.287914895564448421e-04, +-1.286165354152682904e-04, +-1.284413856314015122e-04, +-1.282660405045737430e-04, +-1.280905003347856486e-04, +-1.279147654223552674e-04, +-1.277388360678873827e-04, +-1.275627125722785633e-04, +-1.273863952367192782e-04, +-1.272098843626993719e-04, +-1.270331802519773269e-04, +-1.268562832066256921e-04, +-1.266791935290004808e-04, +-1.265019115217468093e-04, +-1.263244374878006305e-04, +-1.261467717303932346e-04, +-1.259689145530233298e-04, +-1.257908662594987305e-04, +-1.256126271539083307e-04, +-1.254341975406280394e-04, +-1.252555777243270969e-04, +-1.250767680099384755e-04, +-1.248977687027035216e-04, +-1.247185801081403787e-04, +-1.245392025320520913e-04, +-1.243596362805257378e-04, +-1.241798816599392068e-04, +-1.239999389769300803e-04, +-1.238198085384413331e-04, +-1.236394906516904329e-04, +-1.234589856241760349e-04, +-1.232782937636773049e-04, +-1.230974153782616709e-04, +-1.229163507762451953e-04, +-1.227351002662780105e-04, +-1.225536641572339198e-04, +-1.223720427582952362e-04, +-1.221902363789242137e-04, +-1.220082453288347360e-04, +-1.218260699180333403e-04, +-1.216437104568271856e-04, +-1.214611672557508698e-04, +-1.212784406256454402e-04, +-1.210955308776272911e-04, +-1.209124383230543632e-04, +-1.207291632736136799e-04, +-1.205457060412095250e-04, +-1.203620669380507213e-04, +-1.201782462766099997e-04, +-1.199942443696389076e-04, +-1.198100615301281942e-04, +-1.196256980713947504e-04, +-1.194411543069691091e-04, +-1.192564305506830217e-04, +-1.190715271166373386e-04, +-1.188864443191687241e-04, +-1.187011824729293318e-04, +-1.185157418928142986e-04, +-1.183301228939700523e-04, +-1.181443257918316354e-04, +-1.179583509021013733e-04, +-1.177721985407129195e-04, +-1.175858690239214204e-04, +-1.173993626681891052e-04, +-1.172126797902746105e-04, +-1.170258207071982854e-04, +-1.168387857362108317e-04, +-1.166515751948733309e-04, +-1.164641894009839254e-04, +-1.162766286725852317e-04, +-1.160888933280037645e-04, +-1.159009836858258813e-04, +-1.157129000648650391e-04, +-1.155246427842409820e-04, +-1.153362121633082384e-04, +-1.151476085216612431e-04, +-1.149588321791762560e-04, +-1.147698834559785646e-04, +-1.145807626724478509e-04, +-1.143914701492280441e-04, +-1.142020062071936152e-04, +-1.140123711674964423e-04, +-1.138225653515352896e-04, +-1.136325890809609577e-04, +-1.134424426776779369e-04, +-1.132521264638500994e-04, +-1.130616407618679971e-04, +-1.128709858943985041e-04, +-1.126801621843500007e-04, +-1.124891699548812365e-04, +-1.122980095294083644e-04, +-1.121066812315708557e-04, +-1.119151853852823222e-04, +-1.117235223146949139e-04, +-1.115316923442079652e-04, +-1.113396957984680221e-04, +-1.111475330023754696e-04, +-1.109552042810508127e-04, +-1.107627099598853902e-04, +-1.105700503645057179e-04, +-1.103772258207827856e-04, +-1.101842366548307290e-04, +-1.099910831930145274e-04, +-1.097977657619161635e-04, +-1.096042846883848212e-04, +-1.094106402995021241e-04, +-1.092168329225898330e-04, +-1.090228628852193596e-04, +-1.088287305151746059e-04, +-1.086344361405052795e-04, +-1.084399800894894617e-04, +-1.082453626906440021e-04, +-1.080505842727226892e-04, +-1.078556451647242194e-04, +-1.076605456958588708e-04, +-1.074652861955968186e-04, +-1.072698669936349852e-04, +-1.070742884199054701e-04, +-1.068785508045733948e-04, +-1.066826544780464305e-04, +-1.064865997709301423e-04, +-1.062903870141232774e-04, +-1.060940165386954121e-04, +-1.058974886759813327e-04, +-1.057008037575476138e-04, +-1.055039621151637660e-04, +-1.053069640808464570e-04, +-1.051098099868674540e-04, +-1.049125001656744087e-04, +-1.047150349499781629e-04, +-1.045174146727159264e-04, +-1.043196396670174360e-04, +-1.041217102662986716e-04, +-1.039236268041412656e-04, +-1.037253896143859881e-04, +-1.035269990310981342e-04, +-1.033284553885406760e-04, +-1.031297590212174953e-04, +-1.029309102638811899e-04, +-1.027319094514544013e-04, +-1.025327569191156017e-04, +-1.023334530022656743e-04, +-1.021339980364897079e-04, +-1.019343923576456851e-04, +-1.017346363017849830e-04, +-1.015347302051600035e-04, +-1.013346744042677036e-04, +-1.011344692358222063e-04, +-1.009341150367207832e-04, +-1.007336121441376519e-04, +-1.005329608954017999e-04, +-1.003321616280932615e-04, +-1.001312146800066621e-04, +-9.993012038911496431e-05, +-9.972887909365861741e-05, +-9.952749113206486495e-05, +-9.932595684295487362e-05, +-9.912427656518928328e-05, +-9.892245063783100523e-05, +-9.872047940015386879e-05, +-9.851836319165072563e-05, +-9.831610235199738658e-05, +-9.811369722110624891e-05, +-9.791114813908897269e-05, +-9.770845544626463944e-05, +-9.750561948316079563e-05, +-9.730264059052028320e-05, +-9.709951910926555572e-05, +-9.689625538055172298e-05, +-9.669284974573032513e-05, +-9.648930254635658323e-05, +-9.628561412419095781e-05, +-9.608178482120577606e-05, +-9.587781497954945317e-05, +-9.567370494159932004e-05, +-9.546945504992610215e-05, +-9.526506564730138698e-05, +-9.506053707670601303e-05, +-9.485586968129444024e-05, +-9.465106380444746927e-05, +-9.444611978973522961e-05, +-9.424103798092739817e-05, +-9.403581872199021769e-05, +-9.383046235709641722e-05, +-9.362496923058830859e-05, +-9.341933968703134599e-05, +-9.321357407117769676e-05, +-9.300767272797365467e-05, +-9.280163600256064274e-05, +-9.259546424028198956e-05, +-9.238915778664781467e-05, +-9.218271698738751750e-05, +-9.197614218841315844e-05, +-9.176943373582891850e-05, +-9.156259197593834991e-05, +-9.135561725520839420e-05, +-9.114850992032216923e-05, +-9.094127031814396305e-05, +-9.073389879572546805e-05, +-9.052639570030697361e-05, +-9.031876137932491480e-05, +-9.011099618037529419e-05, +-8.990310045126789188e-05, +-8.969507453998819648e-05, +-8.948691879470789480e-05, +-8.927863356379139056e-05, +-8.907021919575975472e-05, +-8.886167603933555717e-05, +-8.865300444345194702e-05, +-8.844420475716869461e-05, +-8.823527732976422676e-05, +-8.802622251069777454e-05, +-8.781704064958160418e-05, +-8.760773209622557775e-05, +-8.739829720064674836e-05, +-8.718873631298589011e-05, +-8.697904978359823232e-05, +-8.676923796301643399e-05, +-8.655930120191358541e-05, +-8.634923985120333421e-05, +-8.613905426191044521e-05, +-8.592874478527192934e-05, +-8.571831177269894752e-05, +-8.550775557574943452e-05, +-8.529707654617275459e-05, +-8.508627503591925591e-05, +-8.487535139705548607e-05, +-8.466430598185690484e-05, +-8.445313914277005911e-05, +-8.424185123237477131e-05, +-8.403044260348578338e-05, +-8.381891360902159541e-05, +-8.360726460210720734e-05, +-8.339549593602634632e-05, +-8.318360796423949154e-05, +-8.297160104033621004e-05, +-8.275947551813857598e-05, +-8.254723175156864054e-05, +-8.233487009475073991e-05, +-8.212239090197438849e-05, +-8.190979452765478680e-05, +-8.169708132642812288e-05, +-8.148425165306372479e-05, +-8.127130586247509239e-05, +-8.105824430976577260e-05, +-8.084506735019036884e-05, +-8.063177533916429879e-05, +-8.041836863227223766e-05, +-8.020484758522964254e-05, +-7.999121255393937485e-05, +-7.977746389445228964e-05, +-7.956360196297734572e-05, +-7.934962711587980320e-05, +-7.913553970969136077e-05, +-7.892134010107041970e-05, +-7.870702864685947880e-05, +-7.849260570404583207e-05, +-7.827807162977032363e-05, +-7.806342678132790341e-05, +-7.784867151617510812e-05, +-7.763380619189239875e-05, +-7.741883116624053915e-05, +-7.720374679712126652e-05, +-7.698855344258727969e-05, +-7.677325146085028928e-05, +-7.655784121024206774e-05, +-7.634232304927263037e-05, +-7.612669733658987588e-05, +-7.591096443098895117e-05, +-7.569512469141208874e-05, +-7.547917847695759198e-05, +-7.526312614683986879e-05, +-7.504696806044795136e-05, +-7.483070457730512325e-05, +-7.461433605707854162e-05, +-7.439786285957908818e-05, +-7.418128534476924323e-05, +-7.396460387272530117e-05, +-7.374781880369355933e-05, +-7.353093049805131372e-05, +-7.331393931631683379e-05, +-7.309684561915661294e-05, +-7.287964976734809914e-05, +-7.266235212182678991e-05, +-7.244495304369365913e-05, +-7.222745289413053506e-05, +-7.200985203449350436e-05, +-7.179215082627515474e-05, +-7.157434963107469164e-05, +-7.135644881065475041e-05, +-7.113844872690294784e-05, +-7.092034974184028466e-05, +-7.070215221763082210e-05, +-7.048385651654205425e-05, +-7.026546300099235551e-05, +-7.004697203356056220e-05, +-6.982838397689846387e-05, +-6.960969919382633511e-05, +-6.939091804729380939e-05, +-6.917204090035068687e-05, +-6.895306811619402951e-05, +-6.873400005817825763e-05, +-6.851483708972593370e-05, +-6.829557957442534044e-05, +-6.807622787599069069e-05, +-6.785678235822224227e-05, +-6.763724338511371533e-05, +-6.741761132071379906e-05, +-6.719788652923440930e-05, +-6.697806937500994963e-05, +-6.675816022246794303e-05, +-6.653815943617714338e-05, +-6.631806738085612774e-05, +-6.609788442128620783e-05, +-6.587761092240717860e-05, +-6.565724724927796173e-05, +-6.543679376703734395e-05, +-6.521625084101031014e-05, +-6.499561883657095954e-05, +-6.477489811924943522e-05, +-6.455408905468199650e-05, +-6.433319200863083279e-05, +-6.411220734693381083e-05, +-6.389113543561145830e-05, +-6.366997664073015110e-05, +-6.344873132850782302e-05, +-6.322739986527589672e-05, +-6.300598261743824667e-05, +-6.278447995156873670e-05, +-6.256289223432310144e-05, +-6.234121983244706431e-05, +-6.211946311282595331e-05, +-6.189762244244375884e-05, +-6.167569818839340650e-05, +-6.145369071788479376e-05, +-6.123160039820585356e-05, +-6.100942759678064717e-05, +-6.078717268113922341e-05, +-6.056483601887709660e-05, +-6.034241797775432225e-05, +-6.011991892560488495e-05, +-5.989733923034713375e-05, +-5.967467926003154128e-05, +-5.945193938280122527e-05, +-5.922911996690119810e-05, +-5.900622138067693027e-05, +-5.878324399258491459e-05, +-5.856018817115175786e-05, +-5.833705428503273456e-05, +-5.811384270297213219e-05, +-5.789055379381224335e-05, +-5.766718792650276439e-05, +-5.744374547006048348e-05, +-5.722022679362828148e-05, +-5.699663226643458960e-05, +-5.677296225780286256e-05, +-5.654921713715117208e-05, +-5.632539727400103630e-05, +-5.610150303793798196e-05, +-5.587753479866910874e-05, +-5.565349292598411896e-05, +-5.542937778976409966e-05, +-5.520518975999046720e-05, +-5.498092920670544139e-05, +-5.475659650007022643e-05, +-5.453219201032532236e-05, +-5.430771610779938164e-05, +-5.408316916290893808e-05, +-5.385855154616745995e-05, +-5.363386362814500410e-05, +-5.340910577951774366e-05, +-5.318427837107670266e-05, +-5.295938177363786886e-05, +-5.273441635814139154e-05, +-5.250938249561064601e-05, +-5.228428055712194377e-05, +-5.205911091386381803e-05, +-5.183387393709653550e-05, +-5.160856999816136636e-05, +-5.138319946848965766e-05, +-5.115776271956309055e-05, +-5.093226012296219151e-05, +-5.070669205037635450e-05, +-5.048105887351236811e-05, +-5.025536096419517190e-05, +-5.002959869432547759e-05, +-4.980377243585122746e-05, +-4.957788256082505706e-05, +-4.935192944136479638e-05, +-4.912591344966277365e-05, +-4.889983495798463627e-05, +-4.867369433867940677e-05, +-4.844749196412839661e-05, +-4.822122820685485962e-05, +-4.799490343938329646e-05, +-4.776851803434893872e-05, +-4.754207236445673221e-05, +-4.731556680245140614e-05, +-4.708900172116615388e-05, +-4.686237749353274986e-05, +-4.663569449249019202e-05, +-4.640895309108441450e-05, +-4.618215366242824673e-05, +-4.595529657965944124e-05, +-4.572838221605160785e-05, +-4.550141094487248136e-05, +-4.527438313949379869e-05, +-4.504729917335048540e-05, +-4.482015941990042502e-05, +-4.459296425272314180e-05, +-4.436571404543028627e-05, +-4.413840917167351598e-05, +-4.391105000519531757e-05, +-4.368363691979770033e-05, +-4.345617028930136251e-05, +-4.322865048764575638e-05, +-4.300107788879808300e-05, +-4.277345286676241309e-05, +-4.254577579562959420e-05, +-4.231804704953646436e-05, +-4.209026700267519660e-05, +-4.186243602930250107e-05, +-4.163455450369927239e-05, +-4.140662280022982102e-05, +-4.117864129331177302e-05, +-4.095061035737402341e-05, +-4.072253036695847495e-05, +-4.049440169662704068e-05, +-4.026622472097221496e-05, +-4.003799981466670276e-05, +-3.980972735242216577e-05, +-3.958140770899864824e-05, +-3.935304125921458546e-05, +-3.912462837790553634e-05, +-3.889616943998365869e-05, +-3.866766482039749205e-05, +-3.843911489414090918e-05, +-3.821052003625302797e-05, +-3.798188062182693921e-05, +-3.775319702596924558e-05, +-3.752446962386005191e-05, +-3.729569879071167058e-05, +-3.706688490177828451e-05, +-3.683802833235537796e-05, +-3.660912945778897932e-05, +-3.638018865343490871e-05, +-3.615120629471865976e-05, +-3.592218275709447781e-05, +-3.569311841605477209e-05, +-3.546401364713931117e-05, +-3.523486882589469408e-05, +-3.500568432793416438e-05, +-3.477646052889661382e-05, +-3.454719780445576413e-05, +-3.431789653032011960e-05, +-3.408855708224202695e-05, +-3.385917983597659084e-05, +-3.362976516734209103e-05, +-3.340031345217858618e-05, +-3.317082506635763784e-05, +-3.294130038578161918e-05, +-3.271173978639304599e-05, +-3.248214364413361412e-05, +-3.225251233500460310e-05, +-3.202284623502520215e-05, +-3.179314572024259319e-05, +-3.156341116674097014e-05, +-3.133364295060058987e-05, +-3.110384144794801149e-05, +-3.087400703496572538e-05, +-3.064414008779943357e-05, +-3.041424098265981909e-05, +-3.018431009578093630e-05, +-2.995434780338922641e-05, +-2.972435448176355860e-05, +-2.949433050719463341e-05, +-2.926427625599381218e-05, +-2.903419210449294431e-05, +-2.880407842905369814e-05, +-2.857393560601620704e-05, +-2.834376401181034583e-05, +-2.811356402281274484e-05, +-2.788333601545785287e-05, +-2.765308036619698484e-05, +-2.742279745146676133e-05, +-2.719248764773979845e-05, +-2.696215133153411327e-05, +-2.673178887932060410e-05, +-2.650140066762468770e-05, +-2.627098707298489288e-05, +-2.604054847191088836e-05, +-2.581008524099616183e-05, +-2.557959775677340098e-05, +-2.534908639582683374e-05, +-2.511855153475068644e-05, +-2.488799355010740133e-05, +-2.465741281852974133e-05, +-2.442680971662783665e-05, +-2.419618462099847842e-05, +-2.396553790827643535e-05, +-2.373486995510252394e-05, +-2.350418113808226995e-05, +-2.327347183388764714e-05, +-2.304274241916434078e-05, +-2.281199327054131231e-05, +-2.258122476468135705e-05, +-2.235043727823980629e-05, +-2.211963118787378701e-05, +-2.188880687025196954e-05, +-2.165796470201320192e-05, +-2.142710505982700828e-05, +-2.119622832036245879e-05, +-2.096533486024646507e-05, +-2.073442505616598320e-05, +-2.050349928477455553e-05, +-2.027255792270243100e-05, +-2.004160134660702797e-05, +-1.981062993313135507e-05, +-1.957964405891360302e-05, +-1.934864410059685839e-05, +-1.911763043478734487e-05, +-1.888660343811557904e-05, +-1.865556348719446262e-05, +-1.842451095862908766e-05, +-1.819344622901611992e-05, +-1.796236967495343814e-05, +-1.773128167299827700e-05, +-1.750018259972859979e-05, +-1.726907283170107200e-05, +-1.703795274546085302e-05, +-1.680682271754101338e-05, +-1.657568312447212997e-05, +-1.634453434274062212e-05, +-1.611337674884966013e-05, +-1.588221071927774865e-05, +-1.565103663048808479e-05, +-1.541985485893843447e-05, +-1.518866578103918566e-05, +-1.495746977321465158e-05, +-1.472626721186124584e-05, +-1.449505847335703705e-05, +-1.426384393406136250e-05, +-1.403262397032428110e-05, +-1.380139895844501453e-05, +-1.357016927473287264e-05, +-1.333893529546565394e-05, +-1.310769739689921882e-05, +-1.287645595526686946e-05, +-1.264521134678919070e-05, +-1.241396394763200839e-05, +-1.218271413396780436e-05, +-1.195146228193377136e-05, +-1.172020876764151159e-05, +-1.148895396718676062e-05, +-1.125769825660760325e-05, +-1.102644201193527688e-05, +-1.079518560920392932e-05, +-1.056392942435734350e-05, +-1.033267383335123029e-05, +-1.010141921211145788e-05, +-9.870165936502574354e-06, +-9.638914382389036329e-06, +-9.407664925593187629e-06, +-9.176417941905266144e-06, +-8.945173807092819446e-06, +-8.713932896859103610e-06, +-8.482695586893747647e-06, +-8.251462252882729855e-06, +-8.020233270414804398e-06, +-7.789009015084044803e-06, +-7.557789862448009858e-06, +-7.326576187985902718e-06, +-7.095368367200995829e-06, +-6.864166775527277728e-06, +-6.632971788339217641e-06, +-6.401783781002601859e-06, +-6.170603128843031739e-06, +-5.939430207104137020e-06, +-5.708265391060254930e-06, +-5.477109055871603640e-06, +-5.245961576697051151e-06, +-5.014823328652221044e-06, +-4.783694686767682935e-06, +-4.552576026091451927e-06, +-4.321467721595566813e-06, +-4.090370148185837725e-06, +-3.859283680752729944e-06, +-3.628208694139879268e-06, +-3.397145563102223590e-06, +-3.166094662418778986e-06, +-2.935056366747761081e-06, +-2.704031050739339112e-06, +-2.473019088983484528e-06, +-2.242020856019686888e-06, +-2.011036726336338065e-06, +-1.780067074380458088e-06, +-1.549112274515845576e-06, +-1.318172701084291751e-06, +-1.087248728374088385e-06, +-8.563407305782067175e-07, +-6.254490818966944166e-07, +-3.945741564433784501e-07, +-1.637163282555605674e-07, + 6.712402865509826758e-08, + 2.979465403443693312e-07, + 5.287508329257658976e-07, + 7.595365325608508522e-07, + 9.903032655010207878e-07, + 1.221050658026342933e-06, + 1.451778336477029891e-06, + 1.682485927295234467e-06, + 1.913173056922713481e-06, + 2.143839351894065127e-06, + 2.374484438827033199e-06, + 2.605107944371659706e-06, + 2.835709495252055876e-06, + 3.066288718256686265e-06, + 3.296845240239019280e-06, + 3.527378688107800272e-06, + 3.757888688868819158e-06, + 3.988374869563777512e-06, + 4.218836857312055757e-06, + 4.449274279301023956e-06, + 4.679686762776342441e-06, + 4.910073935083724767e-06, + 5.140435423607805655e-06, + 5.370770855813906489e-06, + 5.601079859238324085e-06, + 5.831362061488935473e-06, + 6.061617090235577297e-06, + 6.291844573251657151e-06, + 6.522044138353149427e-06, + 6.752215413440320997e-06, + 6.982358026488044551e-06, + 7.212471605536006892e-06, + 7.442555778730655701e-06, + 7.672610174263859957e-06, + 7.902634420414822816e-06, + 8.132628145540315322e-06, + 8.362590978075335404e-06, + 8.592522546523307696e-06, + 8.822422479497928665e-06, + 9.052290405672271790e-06, + 9.282125953769212694e-06, + 9.511928752654406267e-06, + 9.741698431234198859e-06, + 9.971434618497326021e-06, + 1.020113694354626119e-05, + 1.043080503553624797e-05, + 1.066043852371696396e-05, + 1.089003703742286459e-05, + 1.111960020606344057e-05, + 1.134912765916496810e-05, + 1.157861902631970218e-05, + 1.180807393717630681e-05, + 1.203749202153268813e-05, + 1.226687290923407937e-05, + 1.249621623021464546e-05, + 1.272552161453909943e-05, + 1.295478869229042991e-05, + 1.318401709371418299e-05, + 1.341320644910621683e-05, + 1.364235638886445706e-05, + 1.387146654346913381e-05, + 1.410053654353453034e-05, + 1.432956601969692565e-05, + 1.455855460275853759e-05, + 1.478750192357552984e-05, + 1.501640761309950637e-05, + 1.524527130241904313e-05, + 1.547409262265801873e-05, + 1.570287120506826120e-05, + 1.593160668101979691e-05, + 1.616029868195046739e-05, + 1.638894683939710523e-05, + 1.661755078503704205e-05, + 1.684611015057631034e-05, + 1.707462456789320539e-05, + 1.730309366892661242e-05, + 1.753151708572748930e-05, + 1.775989445044944752e-05, + 1.798822539534927732e-05, + 1.821650955277718314e-05, + 1.844474655521848472e-05, + 1.867293603523268158e-05, + 1.890107762548481351e-05, + 1.912917095878693136e-05, + 1.935721566799649372e-05, + 1.958521138610881210e-05, + 1.981315774624745911e-05, + 2.004105438161395814e-05, + 2.026890092552906429e-05, + 2.049669701142315230e-05, + 2.072444227282653324e-05, + 2.095213634341105399e-05, + 2.117977885692933450e-05, + 2.140736944725611993e-05, + 2.163490774837875660e-05, + 2.186239339439780189e-05, + 2.208982601951734430e-05, + 2.231720525808627770e-05, + 2.254453074453801969e-05, + 2.277180211343152831e-05, + 2.299901899944194065e-05, + 2.322618103736109798e-05, + 2.345328786208767278e-05, + 2.368033910866914425e-05, + 2.390733441224057821e-05, + 2.413427340806627736e-05, + 2.436115573153018951e-05, + 2.458798101812621412e-05, + 2.481474890349965608e-05, + 2.504145902338653415e-05, + 2.526811101365501776e-05, + 2.549470451029587251e-05, + 2.572123914942276847e-05, + 2.594771456726304077e-05, + 2.617413040019872663e-05, + 2.640048628470617869e-05, + 2.662678185739755270e-05, + 2.685301675501071425e-05, + 2.707919061440020603e-05, + 2.730530307257796640e-05, + 2.753135376665349159e-05, + 2.775734233387451357e-05, + 2.798326841161785896e-05, + 2.820913163738977421e-05, + 2.843493164881642868e-05, + 2.866066808368510760e-05, + 2.888634057989388130e-05, + 2.911194877544258605e-05, + 2.933749230852382588e-05, + 2.956297081742296847e-05, + 2.978838394055867739e-05, + 3.001373131651423199e-05, + 3.023901258397739480e-05, + 3.046422738178109965e-05, + 3.068937534889419529e-05, + 3.091445612441182306e-05, + 3.113946934759648786e-05, + 3.136441465782824920e-05, + 3.158929169459457714e-05, + 3.181410009758280766e-05, + 3.203883950657879004e-05, + 3.226350956150847958e-05, + 3.248810990247869685e-05, + 3.271264016966626121e-05, + 3.293710000346074636e-05, + 3.316148904435328867e-05, + 3.338580693298785632e-05, + 3.361005331014190313e-05, + 3.383422781677670939e-05, + 3.405833009392793167e-05, + 3.428235978284644065e-05, + 3.450631652488866089e-05, + 3.473019996155714707e-05, + 3.495400973454139063e-05, + 3.517774548561793091e-05, + 3.540140685674154333e-05, + 3.562499349003537988e-05, + 3.584850502774152952e-05, + 3.607194111225167405e-05, + 3.629530138614817249e-05, + 3.651858549209333028e-05, + 3.674179307297141610e-05, + 3.696492377177854765e-05, + 3.718797723166300366e-05, + 3.741095309596629474e-05, + 3.763385100812359306e-05, + 3.785667061175410054e-05, + 3.807941155065196187e-05, + 3.830207346873626932e-05, + 3.852465601008245706e-05, + 3.874715881896213213e-05, + 3.896958153974393086e-05, + 3.919192381698411077e-05, + 3.941418529541706382e-05, + 3.963636561990593096e-05, + 3.985846443548296834e-05, + 4.008048138734059590e-05, + 4.030241612082139556e-05, + 4.052426828145883661e-05, + 4.074603751491808498e-05, + 4.096772346703650506e-05, + 4.118932578381391535e-05, + 4.141084411141331356e-05, + 4.163227809615180998e-05, + 4.185362738454060738e-05, + 4.207489162322586464e-05, + 4.229607045902932715e-05, + 4.251716353893848094e-05, + 4.273817051009777741e-05, + 4.295909101984858618e-05, + 4.317992471567009931e-05, + 4.340067124521979910e-05, + 4.362133025632399170e-05, + 4.384190139697835597e-05, + 4.406238431533865998e-05, + 4.428277865976091719e-05, + 4.450308407874246680e-05, + 4.472330022096217733e-05, + 4.494342673527108184e-05, + 4.516346327069321138e-05, + 4.538340947641576268e-05, + 4.560326500182949818e-05, + 4.582302949647009072e-05, + 4.604270261005788666e-05, + 4.626228399248887311e-05, + 4.648177329382532669e-05, + 4.670117016433553598e-05, + 4.692047425443597288e-05, + 4.713968521472997156e-05, + 4.735880269599958335e-05, + 4.757782634920580716e-05, + 4.779675582547914333e-05, + 4.801559077615938392e-05, + 4.823433085273762136e-05, + 4.845297570689577446e-05, + 4.867152499049729814e-05, + 4.888997835558800333e-05, + 4.910833545438661089e-05, + 4.932659593933429962e-05, + 4.954475946298728898e-05, + 4.976282567815509513e-05, + 4.998079423779278161e-05, + 5.019866479504129164e-05, + 5.041643700325647764e-05, + 5.063411051596149122e-05, + 5.085168498683711341e-05, + 5.106916006981076768e-05, + 5.128653541895871815e-05, + 5.150381068854628669e-05, + 5.172098553306689773e-05, + 5.193805960713602978e-05, + 5.215503256562712694e-05, + 5.237190406356649901e-05, + 5.258867375617126862e-05, + 5.280534129888016253e-05, + 5.302190634730489198e-05, + 5.323836855722138416e-05, + 5.345472758465762971e-05, + 5.367098308579667376e-05, + 5.388713471701662972e-05, + 5.410318213492970379e-05, + 5.431912499628563325e-05, + 5.453496295805989301e-05, + 5.475069567744447318e-05, + 5.496632281179927290e-05, + 5.518184401868279681e-05, + 5.539725895589034610e-05, + 5.561256728134910836e-05, + 5.582776865325363543e-05, + 5.604286272995942221e-05, + 5.625784917002325249e-05, + 5.647272763224195921e-05, + 5.668749777555600499e-05, + 5.690215925913724151e-05, + 5.711671174237977513e-05, + 5.733115488485209259e-05, + 5.754548834632708658e-05, + 5.775971178681994192e-05, + 5.797382486648445865e-05, + 5.818782724574667319e-05, + 5.840171858520095793e-05, + 5.861549854565710265e-05, + 5.882916678813279970e-05, + 5.904272297385346777e-05, + 5.925616676424281257e-05, + 5.946949782096247478e-05, + 5.968271580585458760e-05, + 5.989582038098088264e-05, + 6.010881120861322343e-05, + 6.032168795123450666e-05, + 6.053445027152990052e-05, + 6.074709783242492045e-05, + 6.095963029702884065e-05, + 6.117204732867422673e-05, + 6.138434859090651386e-05, + 6.159653374747609206e-05, + 6.180860246237691738e-05, + 6.202055439978871037e-05, + 6.223238922411747809e-05, + 6.244410659998483480e-05, + 6.265570619222942490e-05, + 6.286718766589753106e-05, + 6.307855068628209197e-05, + 6.328979491886574100e-05, + 6.350092002935945809e-05, + 6.371192568369365213e-05, + 6.392281154801901478e-05, + 6.413357728869669490e-05, + 6.434422257233789904e-05, + 6.455474706574661843e-05, + 6.476515043595849766e-05, + 6.497543235023111750e-05, + 6.518559247603701535e-05, + 6.539563048109949103e-05, + 6.560554603333831533e-05, + 6.581533880090739252e-05, + 6.602500845218542262e-05, + 6.623455465577729733e-05, + 6.644397708050430156e-05, + 6.665327539544290076e-05, + 6.686244926986897224e-05, + 6.707149837329519663e-05, + 6.728042237546242492e-05, + 6.748922094634097948e-05, + 6.769789375612070650e-05, + 6.790644047525892487e-05, + 6.811486077437796903e-05, + 6.832315432439601155e-05, + 6.853132079642640850e-05, + 6.873935986181315284e-05, + 6.894727119216167933e-05, + 6.915505445929145782e-05, + 6.936270933522731958e-05, + 6.957023549228435035e-05, + 6.977763260297473028e-05, + 6.998490034004555905e-05, + 7.019203837651688419e-05, + 7.039904638557993523e-05, + 7.060592404072734991e-05, + 7.081267101565167927e-05, + 7.101928698428317216e-05, + 7.122577162081827613e-05, + 7.143212459967326075e-05, + 7.163834559547524580e-05, + 7.184443428314786679e-05, + 7.205039033781692229e-05, + 7.225621343484939165e-05, + 7.246190324988997257e-05, + 7.266745945876968294e-05, + 7.287288173759023881e-05, + 7.307816976271345631e-05, + 7.328332321071742283e-05, + 7.348834175842348005e-05, + 7.369322508293472669e-05, + 7.389797286153396800e-05, + 7.410258477181388775e-05, + 7.430706049157609545e-05, + 7.451139969886849072e-05, + 7.471560207202274952e-05, + 7.491966728956228898e-05, + 7.512359503028583226e-05, + 7.532738497325956164e-05, + 7.553103679777007772e-05, + 7.573455018336219737e-05, + 7.593792480983167607e-05, + 7.614116035721455562e-05, + 7.634425650582507051e-05, + 7.654721293620181735e-05, + 7.675002932914408915e-05, + 7.695270536570343210e-05, + 7.715524072718409282e-05, + 7.735763509513475132e-05, + 7.755988815138516700e-05, + 7.776199957799154845e-05, + 7.796396905727532721e-05, + 7.816579627181139420e-05, + 7.836748090443201636e-05, + 7.856902263821558810e-05, + 7.877042115652505266e-05, + 7.897167614295357008e-05, + 7.917278728136049914e-05, + 7.937375425586361819e-05, + 7.957457675083106144e-05, + 7.977525445091675877e-05, + 7.997578704100722854e-05, + 8.017617420625838625e-05, + 8.037641563208700643e-05, + 8.057651100417107502e-05, + 8.077646000844085827e-05, + 8.097626233111641610e-05, + 8.117591765865299900e-05, + 8.137542567777850718e-05, + 8.157478607548407162e-05, + 8.177399853902516530e-05, + 8.197306275591291610e-05, + 8.217197841395075281e-05, + 8.237074520118031697e-05, + 8.256936280591854261e-05, + 8.276783091674919947e-05, + 8.296614922251405676e-05, + 8.316431741234895996e-05, + 8.336233517563126059e-05, + 8.356020220201587948e-05, + 8.375791818142663315e-05, + 8.395548280405677592e-05, + 8.415289576036075994e-05, + 8.435015674109023077e-05, + 8.454726543724091494e-05, + 8.474422154008913054e-05, + 8.494102474118274762e-05, + 8.513767473233311092e-05, + 8.533417120565195695e-05, + 8.553051385350576906e-05, + 8.572670236850828292e-05, + 8.592273644360083943e-05, + 8.611861577196482185e-05, + 8.631434004705557778e-05, + 8.650990896263189591e-05, + 8.670532221271045595e-05, + 8.690057949155859161e-05, + 8.709568049377316632e-05, + 8.729062491419424356e-05, + 8.748541244793918512e-05, + 8.768004279043952744e-05, + 8.787451563734450122e-05, + 8.806883068464416966e-05, + 8.826298762857377473e-05, + 8.845698616564820125e-05, + 8.865082599269093861e-05, + 8.884450680678820554e-05, + 8.903802830528258032e-05, + 8.923139018585123962e-05, + 8.942459214641892409e-05, + 8.961763388519461155e-05, + 8.981051510070516789e-05, + 9.000323549170099438e-05, + 9.019579475727782425e-05, + 9.038819259678250548e-05, + 9.058042870985558289e-05, + 9.077250279641504863e-05, + 9.096441455670110617e-05, + 9.115616369117887673e-05, + 9.134774990066304187e-05, + 9.153917288622054988e-05, + 9.173043234920742446e-05, + 9.192152799130322879e-05, + 9.211245951442464106e-05, + 9.230322662080423532e-05, + 9.249382901298237706e-05, + 9.268426639376430238e-05, + 9.287453846625450069e-05, + 9.306464493385012827e-05, + 9.325458550023116907e-05, + 9.344435986939615918e-05, + 9.363396774561106673e-05, + 9.382340883343486546e-05, + 9.401268283775589621e-05, + 9.420178946370431753e-05, + 9.439072841673179460e-05, + 9.457949940260172782e-05, + 9.476810212734843258e-05, + 9.495653629731020751e-05, + 9.514480161912292403e-05, + 9.533289779971896932e-05, + 9.552082454631977886e-05, + 9.570858156647127628e-05, + 9.589616856799158774e-05, + 9.608358525900622424e-05, + 9.627083134794056001e-05, + 9.645790654351183650e-05, + 9.664481055476189175e-05, + 9.683154309100873718e-05, + 9.701810386187988328e-05, + 9.720449257730464179e-05, + 9.739070894751419339e-05, + 9.757675268303437786e-05, + 9.776262349471876215e-05, + 9.794832109369905175e-05, + 9.813384519142017814e-05, + 9.831919549963062232e-05, + 9.850437173037578759e-05, + 9.868937359603087802e-05, + 9.887420080925247523e-05, + 9.905885308301105093e-05, + 9.924333013058351301e-05, + 9.942763166555492675e-05, + 9.961175740180824194e-05, + 9.979570705355989544e-05, + 9.997948033531821842e-05, + 1.001630769618749118e-04, + 1.003464966483809677e-04, + 1.005297391102639309e-04, + 1.007128040632615230e-04, + 1.008956912234468907e-04, + 1.010784003071790439e-04, + 1.012609310311367376e-04, + 1.014432831123113698e-04, + 1.016254562679972377e-04, + 1.018074502158266924e-04, + 1.019892646737289671e-04, + 1.021708993599217737e-04, + 1.023523539929869402e-04, + 1.025336282917866824e-04, + 1.027147219754995732e-04, + 1.028956347636430390e-04, + 1.030763663760261433e-04, + 1.032569165327824781e-04, + 1.034372849543618432e-04, + 1.036174713615317910e-04, + 1.037974754753681123e-04, + 1.039772970172983947e-04, + 1.041569357090109491e-04, + 1.043363912725695186e-04, + 1.045156634303252954e-04, + 1.046947519049482408e-04, + 1.048736564194537968e-04, + 1.050523766971608874e-04, + 1.052309124616850880e-04, + 1.054092634370125539e-04, + 1.055874293474177436e-04, + 1.057654099174981535e-04, + 1.059432048722062209e-04, + 1.061208139367604867e-04, + 1.062982368367595455e-04, + 1.064754732980941030e-04, + 1.066525230469861699e-04, + 1.068293858099757129e-04, + 1.070060613139592792e-04, + 1.071825492861025150e-04, + 1.073588494539534508e-04, + 1.075349615453549527e-04, + 1.077108852884767735e-04, + 1.078866204118462090e-04, + 1.080621666442724879e-04, + 1.082375237149152939e-04, + 1.084126913532796834e-04, + 1.085876692891748720e-04, + 1.087624572527481703e-04, + 1.089370549744761880e-04, + 1.091114621851578548e-04, + 1.092856786159459025e-04, + 1.094597039983012746e-04, + 1.096335380640154743e-04, + 1.098071805452436461e-04, + 1.099806311744258900e-04, + 1.101538896843584392e-04, + 1.103269558081862878e-04, + 1.104998292793646066e-04, + 1.106725098316894799e-04, + 1.108449971992916044e-04, + 1.110172911166369388e-04, + 1.111893913185172040e-04, + 1.113612975400848622e-04, + 1.115330095168035686e-04, + 1.117045269844809416e-04, + 1.118758496792624099e-04, + 1.120469773376214410e-04, + 1.122179096963930975e-04, + 1.123886464927263592e-04, + 1.125591874641170150e-04, + 1.127295323483993417e-04, + 1.128996808837460093e-04, + 1.130696328086620498e-04, + 1.132393878620153912e-04, + 1.134089457829910637e-04, + 1.135783063111231022e-04, + 1.137474691862852490e-04, + 1.139164341486863463e-04, + 1.140852009388993387e-04, + 1.142537692978168068e-04, + 1.144221389666815966e-04, + 1.145903096870796496e-04, + 1.147582812009401116e-04, + 1.149260532505281906e-04, + 1.150936255784768556e-04, + 1.152609979277481313e-04, + 1.154281700416257521e-04, + 1.155951416637853509e-04, + 1.157619125382175891e-04, + 1.159284824092587853e-04, + 1.160948510216153369e-04, + 1.162610181203174248e-04, + 1.164269834507505771e-04, + 1.165927467586477275e-04, + 1.167583077900826420e-04, + 1.169236662914992063e-04, + 1.170888220096770157e-04, + 1.172537746917206550e-04, + 1.174185240851302668e-04, + 1.175830699377260771e-04, + 1.177474119976784959e-04, + 1.179115500135314947e-04, + 1.180754837341567453e-04, + 1.182392129087867693e-04, + 1.184027372870048543e-04, + 1.185660566187463831e-04, + 1.187291706542928832e-04, + 1.188920791443084430e-04, + 1.190547818397583559e-04, + 1.192172784920139623e-04, + 1.193795688527711588e-04, + 1.195416526740801592e-04, + 1.197035297083686963e-04, + 1.198651997084052679e-04, + 1.200266624272915063e-04, + 1.201879176185296567e-04, + 1.203489650359484308e-04, + 1.205098044337341918e-04, + 1.206704355664599157e-04, + 1.208308581890042016e-04, + 1.209910720566549890e-04, + 1.211510769250298693e-04, + 1.213108725501046406e-04, + 1.214704586882435841e-04, + 1.216298350961264298e-04, + 1.217890015308151160e-04, + 1.219479577497457662e-04, + 1.221067035106932223e-04, + 1.222652385717940839e-04, + 1.224235626915741383e-04, + 1.225816756288779826e-04, + 1.227395771429338046e-04, + 1.228972669933465524e-04, + 1.230547449400628331e-04, + 1.232120107433983707e-04, + 1.233690641640335334e-04, + 1.235259049630045515e-04, + 1.236825329017339839e-04, + 1.238389477419870243e-04, + 1.239951492458935651e-04, + 1.241511371759781480e-04, + 1.243069112950869978e-04, + 1.244624713664548900e-04, + 1.246178171536964775e-04, + 1.247729484207719486e-04, + 1.249278649320155682e-04, + 1.250825664521287395e-04, + 1.252370527461744466e-04, + 1.253913235796041167e-04, + 1.255453787182165550e-04, + 1.256992179281866495e-04, + 1.258528409760589740e-04, + 1.260062476287466225e-04, + 1.261594376535260054e-04, + 1.263124108180650382e-04, + 1.264651668903806413e-04, + 1.266177056388681759e-04, + 1.267700268322938814e-04, + 1.269221302397962041e-04, + 1.270740156308775026e-04, + 1.272256827754350561e-04, + 1.273771314437157720e-04, + 1.275283614063481427e-04, + 1.276793724343336259e-04, + 1.278301642990399502e-04, + 1.279807367722299544e-04, + 1.281310896260208488e-04, + 1.282812226329098023e-04, + 1.284311355657704462e-04, + 1.285808281978513827e-04, + 1.287303003027701683e-04, + 1.288795516545405539e-04, + 1.290285820275325593e-04, + 1.291773911965002559e-04, + 1.293259789365734994e-04, + 1.294743450232608846e-04, + 1.296224892324412611e-04, + 1.297704113403928990e-04, + 1.299181111237499844e-04, + 1.300655883595346583e-04, + 1.302128428251471501e-04, + 1.303598742983598957e-04, + 1.305066825573462149e-04, + 1.306532673806455353e-04, + 1.307996285471578902e-04, + 1.309457658362034142e-04, + 1.310916790274582397e-04, + 1.312373679009779697e-04, + 1.313828322372214493e-04, + 1.315280718170092674e-04, + 1.316730864215506455e-04, + 1.318178758324376094e-04, + 1.319624398316456134e-04, + 1.321067782015268447e-04, + 1.322508907248428039e-04, + 1.323947771846939133e-04, + 1.325384373646109964e-04, + 1.326818710484820940e-04, + 1.328250780205814672e-04, + 1.329680580655880550e-04, + 1.331108109685527868e-04, + 1.332533365148932958e-04, + 1.333956344904532797e-04, + 1.335377046814357951e-04, + 1.336795468744315821e-04, + 1.338211608564443805e-04, + 1.339625464148204838e-04, + 1.341037033373386196e-04, + 1.342446314121398829e-04, + 1.343853304277548683e-04, + 1.345258001731276039e-04, + 1.346660404375535347e-04, + 1.348060510107357930e-04, + 1.349458316827811864e-04, + 1.350853822441664797e-04, + 1.352247024857597532e-04, + 1.353637921988436318e-04, + 1.355026511750493658e-04, + 1.356412792064420490e-04, + 1.357796760854546991e-04, + 1.359178416049165554e-04, + 1.360557755580512360e-04, + 1.361934777384728613e-04, + 1.363309479401836690e-04, + 1.364681859575971620e-04, + 1.366051915855017872e-04, + 1.367419646190788792e-04, + 1.368785048539305788e-04, + 1.370148120860138318e-04, + 1.371508861117001017e-04, + 1.372867267277682137e-04, + 1.374223337313734553e-04, + 1.375577069200727023e-04, + 1.376928460918188084e-04, + 1.378277510449548587e-04, + 1.379624215782388353e-04, + 1.380968574908061854e-04, + 1.382310585821962755e-04, + 1.383650246523459681e-04, + 1.384987555015891332e-04, + 1.386322509306519863e-04, + 1.387655107406768058e-04, + 1.388985347331869399e-04, + 1.390313227101094666e-04, + 1.391638744737711008e-04, + 1.392961898268977878e-04, + 1.394282685726096346e-04, + 1.395601105144444098e-04, + 1.396917154563218468e-04, + 1.398230832025686068e-04, + 1.399542135579121536e-04, + 1.400851063274747633e-04, + 1.402157613167979999e-04, + 1.403461783318074520e-04, + 1.404763571788369102e-04, + 1.406062976646223499e-04, + 1.407359995963016332e-04, + 1.408654627814096298e-04, + 1.409946870279032082e-04, + 1.411236721441233154e-04, + 1.412524179388216213e-04, + 1.413809242211525497e-04, + 1.415091908006763685e-04, + 1.416372174873509768e-04, + 1.417650040915560824e-04, + 1.418925504240604321e-04, + 1.420198562960424654e-04, + 1.421469215190872791e-04, + 1.422737459051790377e-04, + 1.424003292667263437e-04, + 1.425266714165323678e-04, + 1.426527721677897263e-04, + 1.427786313341323327e-04, + 1.429042487295786943e-04, + 1.430296241685541380e-04, + 1.431547574659097028e-04, + 1.432796484368874994e-04, + 1.434042968971431531e-04, + 1.435287026627404643e-04, + 1.436528655501473426e-04, + 1.437767853762575725e-04, + 1.439004619583628673e-04, + 1.440238951141471508e-04, + 1.441470846617391136e-04, + 1.442700304196546960e-04, + 1.443927322068201821e-04, + 1.445151898425896275e-04, + 1.446374031467164269e-04, + 1.447593719393485702e-04, + 1.448810960410795191e-04, + 1.450025752728917197e-04, + 1.451238094561801842e-04, + 1.452447984127737683e-04, + 1.453655419648751878e-04, + 1.454860399351391080e-04, + 1.456062921466108053e-04, + 1.457262984227486371e-04, + 1.458460585874469726e-04, + 1.459655724649811426e-04, + 1.460848398800570689e-04, + 1.462038606578050569e-04, + 1.463226346237541818e-04, + 1.464411616038489307e-04, + 1.465594414244696672e-04, + 1.466774739123742198e-04, + 1.467952588947745080e-04, + 1.469127961992766672e-04, + 1.470300856539072864e-04, + 1.471471270871105080e-04, + 1.472639203277460761e-04, + 1.473804652050860842e-04, + 1.474967615488350053e-04, + 1.476128091890986844e-04, + 1.477286079564013599e-04, + 1.478441576817055047e-04, + 1.479594581963592967e-04, + 1.480745093321463566e-04, + 1.481893109212788901e-04, + 1.483038627963717754e-04, + 1.484181647904644647e-04, + 1.485322167370151558e-04, + 1.486460184698969438e-04, + 1.487595698234185832e-04, + 1.488728706322920705e-04, + 1.489859207316500183e-04, + 1.490987199570667705e-04, + 1.492112681445056553e-04, + 1.493235651303663925e-04, + 1.494356107514805397e-04, + 1.495474048450855795e-04, + 1.496589472488453574e-04, + 1.497702378008457442e-04, + 1.498812763395949077e-04, + 1.499920627040171866e-04, + 1.501025967334763738e-04, + 1.502128782677423504e-04, + 1.503229071470140973e-04, + 1.504326832119128380e-04, + 1.505422063034786233e-04, + 1.506514762631905790e-04, + 1.507604929329361141e-04, + 1.508692561550318461e-04, + 1.509777657722192101e-04, + 1.510860216276635915e-04, + 1.511940235649500701e-04, + 1.513017714281044812e-04, + 1.514092650615628678e-04, + 1.515165043101902647e-04, + 1.516234890192789096e-04, + 1.517302190345411954e-04, + 1.518366942021313816e-04, + 1.519429143686140443e-04, + 1.520488793809853531e-04, + 1.521545890866693039e-04, + 1.522600433335154419e-04, + 1.523652419697967746e-04, + 1.524701848442277152e-04, + 1.525748718059407726e-04, + 1.526793027044808860e-04, + 1.527834773898515579e-04, + 1.528873957124645745e-04, + 1.529910575231595478e-04, + 1.530944626732201250e-04, + 1.531976110143433054e-04, + 1.533005023986610160e-04, + 1.534031366787339857e-04, + 1.535055137075476796e-04, + 1.536076333385319231e-04, + 1.537094954255361278e-04, + 1.538110998228265540e-04, + 1.539124463851269681e-04, + 1.540135349675740822e-04, + 1.541143654257341148e-04, + 1.542149376156241500e-04, + 1.543152513936589304e-04, + 1.544153066167170199e-04, + 1.545151031420907142e-04, + 1.546146408275070739e-04, + 1.547139195311226395e-04, + 1.548129391115421060e-04, + 1.549116994277726788e-04, + 1.550102003392844091e-04, + 1.551084417059625704e-04, + 1.552064233881247620e-04, + 1.553041452465407765e-04, + 1.554016071423856274e-04, + 1.554988089372810734e-04, + 1.555957504932930710e-04, + 1.556924316729067293e-04, + 1.557888523390412990e-04, + 1.558850123550680074e-04, + 1.559809115847621914e-04, + 1.560765498923641478e-04, + 1.561719271425314828e-04, + 1.562670432003607419e-04, + 1.563618979313844283e-04, + 1.564564912015702438e-04, + 1.565508228773161291e-04, + 1.566448928254703208e-04, + 1.567387009133027560e-04, + 1.568322470085198447e-04, + 1.569255309792811390e-04, + 1.570185526941578896e-04, + 1.571113120221698820e-04, + 1.572038088327828336e-04, + 1.572960429958862496e-04, + 1.573880143818110139e-04, + 1.574797228613254588e-04, + 1.575711683056314077e-04, + 1.576623505863807093e-04, + 1.577532695756510056e-04, + 1.578439251459619406e-04, + 1.579343171702709593e-04, + 1.580244455219742561e-04, + 1.581143100749022212e-04, + 1.582039107033370322e-04, + 1.582932472819867408e-04, + 1.583823196860027294e-04, + 1.584711277909752922e-04, + 1.585596714729352623e-04, + 1.586479506083476410e-04, + 1.587359650741300844e-04, + 1.588237147476283186e-04, + 1.589111995066311831e-04, + 1.589984192293690589e-04, + 1.590853737945069292e-04, + 1.591720630811643291e-04, + 1.592584869688885927e-04, + 1.593446453376713061e-04, + 1.594305380679469518e-04, + 1.595161650405889787e-04, + 1.596015261369096124e-04, + 1.596866212386746273e-04, + 1.597714502280791148e-04, + 1.598560129877641528e-04, + 1.599403094008124148e-04, + 1.600243393507453781e-04, + 1.601081027215385565e-04, + 1.601915993975975942e-04, + 1.602748292637755313e-04, + 1.603577922053676269e-04, + 1.604404881081127141e-04, + 1.605229168581873188e-04, + 1.606050783422251205e-04, + 1.606869724472928561e-04, + 1.607685990608912960e-04, + 1.608499580709870649e-04, + 1.609310493659757793e-04, + 1.610118728346963859e-04, + 1.610924283664434404e-04, + 1.611727158509453420e-04, + 1.612527351783782110e-04, + 1.613324862393613625e-04, + 1.614119689249569000e-04, + 1.614911831266823458e-04, + 1.615701287364929690e-04, + 1.616488056467773400e-04, + 1.617272137503925945e-04, + 1.618053529406252120e-04, + 1.618832231112082279e-04, + 1.619608241563342979e-04, + 1.620381559706176157e-04, + 1.621152184491426746e-04, + 1.621920114874260226e-04, + 1.622685349814331757e-04, + 1.623447888275739561e-04, + 1.624207729227173996e-04, + 1.624964871641559774e-04, + 1.625719314496515660e-04, + 1.626471056774017013e-04, + 1.627220097460480898e-04, + 1.627966435546960157e-04, + 1.628710070028743340e-04, + 1.629450999905727125e-04, + 1.630189224182335551e-04, + 1.630924741867370933e-04, + 1.631657551974108734e-04, + 1.632387653520455046e-04, + 1.633115045528537299e-04, + 1.633839727025218993e-04, + 1.634561697041704770e-04, + 1.635280954613675133e-04, + 1.635997498781452592e-04, + 1.636711328589620848e-04, + 1.637422443087374168e-04, + 1.638130841328442309e-04, + 1.638836522370962310e-04, + 1.639539485277547338e-04, + 1.640239729115449047e-04, + 1.640937252956207657e-04, + 1.641632055875957418e-04, + 1.642324136955396804e-04, + 1.643013495279627232e-04, + 1.643700129938272328e-04, + 1.644384040025458407e-04, + 1.645065224639784664e-04, + 1.645743682884441615e-04, + 1.646419413867028958e-04, + 1.647092416699694076e-04, + 1.647762690499068069e-04, + 1.648430234386305873e-04, + 1.649095047487026083e-04, + 1.649757128931460845e-04, + 1.650416477854249045e-04, + 1.651073093394582133e-04, + 1.651726974696143954e-04, + 1.652378120907119143e-04, + 1.653026531180292065e-04, + 1.653672204672866836e-04, + 1.654315140546596882e-04, + 1.654955337967750249e-04, + 1.655592796107116104e-04, + 1.656227514139964893e-04, + 1.656859491246188477e-04, + 1.657488726610095481e-04, + 1.658115219420564987e-04, + 1.658738968870977412e-04, + 1.659359974159248664e-04, + 1.659978234487794358e-04, + 1.660593749063631194e-04, + 1.661206517098224352e-04, + 1.661816537807586430e-04, + 1.662423810412267408e-04, + 1.663028334137314269e-04, + 1.663630108212392966e-04, + 1.664229131871608448e-04, + 1.664825404353629341e-04, + 1.665418924901656780e-04, + 1.666009692763431723e-04, + 1.666597707191185083e-04, + 1.667182967441791950e-04, + 1.667765472776560178e-04, + 1.668345222461363464e-04, + 1.668922215766626175e-04, + 1.669496451967297595e-04, + 1.670067930342853551e-04, + 1.670636650177407547e-04, + 1.671202610759429409e-04, + 1.671765811382123405e-04, + 1.672326251343115720e-04, + 1.672883929944591339e-04, + 1.673438846493359910e-04, + 1.673991000300705857e-04, + 1.674540390682401926e-04, + 1.675087016958907874e-04, + 1.675630878455139795e-04, + 1.676171974500554696e-04, + 1.676710304429262436e-04, + 1.677245867579747632e-04, + 1.677778663295209551e-04, + 1.678308690923326573e-04, + 1.678835949816295759e-04, + 1.679360439330960522e-04, + 1.679882158828667775e-04, + 1.680401107675237582e-04, + 1.680917285241196799e-04, + 1.681430690901522659e-04, + 1.681941324035760954e-04, + 1.682449184028109786e-04, + 1.682954270267155296e-04, + 1.683456582146147860e-04, + 1.683956119062925388e-04, + 1.684452880419821973e-04, + 1.684946865623715602e-04, + 1.685438074086158798e-04, + 1.685926505223088055e-04, + 1.686412158455175665e-04, + 1.686895033207551613e-04, + 1.687375128909917969e-04, + 1.687852444996622606e-04, + 1.688326980906450225e-04, + 1.688798736082810191e-04, + 1.689267709973731925e-04, + 1.689733902031733987e-04, + 1.690197311713907019e-04, + 1.690657938481990449e-04, + 1.691115781802140204e-04, + 1.691570841145236892e-04, + 1.692023115986639149e-04, + 1.692472605806290156e-04, + 1.692919310088715208e-04, + 1.693363228323001106e-04, + 1.693804360002782610e-04, + 1.694242704626333510e-04, + 1.694678261696429473e-04, + 1.695111030720444539e-04, + 1.695541011210323205e-04, + 1.695968202682575539e-04, + 1.696392604658279897e-04, + 1.696814216663133066e-04, + 1.697233038227354040e-04, + 1.697649068885756388e-04, + 1.698062308177714650e-04, + 1.698472755647178155e-04, + 1.698880410842717645e-04, + 1.699285273317429593e-04, + 1.699687342628998542e-04, + 1.700086618339688980e-04, + 1.700483100016335033e-04, + 1.700876787230347245e-04, + 1.701267679557751610e-04, + 1.701655776579102291e-04, + 1.702041077879554534e-04, + 1.702423583048837021e-04, + 1.702803291681257293e-04, + 1.703180203375688191e-04, + 1.703554317735630206e-04, + 1.703925634369115791e-04, + 1.704294152888769268e-04, + 1.704659872911802761e-04, + 1.705022794059978246e-04, + 1.705382915959711911e-04, + 1.705740238241928595e-04, + 1.706094760542156664e-04, + 1.706446482500518786e-04, + 1.706795403761704293e-04, + 1.707141523974968088e-04, + 1.707484842794213323e-04, + 1.707825359877858580e-04, + 1.708163074888934365e-04, + 1.708497987495040556e-04, + 1.708830097368369168e-04, + 1.709159404185677249e-04, + 1.709485907628372804e-04, + 1.709809607382329667e-04, + 1.710130503138116266e-04, + 1.710448594590834352e-04, + 1.710763881440149350e-04, + 1.711076363390373308e-04, + 1.711386040150368669e-04, + 1.711692911433526317e-04, + 1.711996976957933631e-04, + 1.712298236446179052e-04, + 1.712596689625446686e-04, + 1.712892336227568070e-04, + 1.713185175988851683e-04, + 1.713475208650293551e-04, + 1.713762433957416518e-04, + 1.714046851660322283e-04, + 1.714328461513762959e-04, + 1.714607263277024521e-04, + 1.714883256713940090e-04, + 1.715156441593016510e-04, + 1.715426817687290420e-04, + 1.715694384774382199e-04, + 1.715959142636555048e-04, + 1.716221091060568895e-04, + 1.716480229837810776e-04, + 1.716736558764293472e-04, + 1.716990077640554683e-04, + 1.717240786271730752e-04, + 1.717488684467588652e-04, + 1.717733772042400755e-04, + 1.717976048815096082e-04, + 1.718215514609155949e-04, + 1.718452169252633751e-04, + 1.718686012578227336e-04, + 1.718917044423134261e-04, + 1.719145264629185421e-04, + 1.719370673042812793e-04, + 1.719593269514996855e-04, + 1.719813053901319980e-04, + 1.720030026061942314e-04, + 1.720244185861600692e-04, + 1.720455533169648751e-04, + 1.720664067859992965e-04, + 1.720869789811125714e-04, + 1.721072698906131785e-04, + 1.721272795032684037e-04, + 1.721470078083009252e-04, + 1.721664547953969174e-04, + 1.721856204546965915e-04, + 1.722045047767995082e-04, + 1.722231077527634931e-04, + 1.722414293741050437e-04, + 1.722594696327972965e-04, + 1.722772285212752035e-04, + 1.722947060324281875e-04, + 1.723119021596050476e-04, + 1.723288168966133360e-04, + 1.723454502377172980e-04, + 1.723618021776407720e-04, + 1.723778727115644796e-04, + 1.723936618351281660e-04, + 1.724091695444283511e-04, + 1.724243958360205517e-04, + 1.724393407069167608e-04, + 1.724540041545894050e-04, + 1.724683861769665469e-04, + 1.724824867724344870e-04, + 1.724963059398371135e-04, + 1.725098436784775553e-04, + 1.725230999881145505e-04, + 1.725360748689668640e-04, + 1.725487683217093572e-04, + 1.725611803474739645e-04, + 1.725733109478521591e-04, + 1.725851601248896408e-04, + 1.725967278810945215e-04, + 1.726080142194283537e-04, + 1.726190191433116055e-04, + 1.726297426566216549e-04, + 1.726401847636941994e-04, + 1.726503454693198132e-04, + 1.726602247787497756e-04, + 1.726698226976901881e-04, + 1.726791392323052824e-04, + 1.726881743892156576e-04, + 1.726969281754989042e-04, + 1.727054005986914742e-04, + 1.727135916667851302e-04, + 1.727215013882271624e-04, + 1.727291297719257552e-04, + 1.727364768272422085e-04, + 1.727435425639962767e-04, + 1.727503269924647871e-04, + 1.727568301233811513e-04, + 1.727630519679327638e-04, + 1.727689925377676151e-04, + 1.727746518449877595e-04, + 1.727800299021516734e-04, + 1.727851267222766675e-04, + 1.727899423188320295e-04, + 1.727944767057477786e-04, + 1.727987298974077539e-04, + 1.728027019086523250e-04, + 1.728063927547781480e-04, + 1.728098024515384095e-04, + 1.728129310151412272e-04, + 1.728157784622516558e-04, + 1.728183448099894102e-04, + 1.728206300759320370e-04, + 1.728226342781109023e-04, + 1.728243574350136048e-04, + 1.728257995655837044e-04, + 1.728269606892204240e-04, + 1.728278408257777278e-04, + 1.728284399955653790e-04, + 1.728287582193485054e-04, + 1.728287955183476540e-04, + 1.728285519142386554e-04, + 1.728280274291515940e-04, + 1.728272220856730300e-04, + 1.728261359068439132e-04, + 1.728247689161591756e-04, + 1.728231211375694666e-04, + 1.728211925954808005e-04, + 1.728189833147525780e-04, + 1.728164933207001878e-04, + 1.728137226390922426e-04, + 1.728106712961524486e-04, + 1.728073393185591724e-04, + 1.728037267334444650e-04, + 1.727998335683954170e-04, + 1.727956598514523425e-04, + 1.727912056111101347e-04, + 1.727864708763178860e-04, + 1.727814556764781294e-04, + 1.727761600414476242e-04, + 1.727705840015368686e-04, + 1.727647275875092588e-04, + 1.727585908305826346e-04, + 1.727521737624281137e-04, + 1.727454764151701184e-04, + 1.727384988213856172e-04, + 1.727312410141068622e-04, + 1.727237030268168353e-04, + 1.727158848934538023e-04, + 1.727077866484069213e-04, + 1.726994083265195499e-04, + 1.726907499630872663e-04, + 1.726818115938588726e-04, + 1.726725932550347950e-04, + 1.726630949832687919e-04, + 1.726533168156671406e-04, + 1.726432587897874446e-04, + 1.726329209436406665e-04, + 1.726223033156889055e-04, + 1.726114059448465628e-04, + 1.726002288704807754e-04, + 1.725887721324089494e-04, + 1.725770357709020667e-04, + 1.725650198266807012e-04, + 1.725527243409187854e-04, + 1.725401493552407924e-04, + 1.725272949117215998e-04, + 1.725141610528889565e-04, + 1.725007478217215583e-04, + 1.724870552616478007e-04, + 1.724730834165474869e-04, + 1.724588323307525868e-04, + 1.724443020490432792e-04, + 1.724294926166520994e-04, + 1.724144040792617973e-04, + 1.723990364830053110e-04, + 1.723833898744659831e-04, + 1.723674643006762599e-04, + 1.723512598091196972e-04, + 1.723347764477302282e-04, + 1.723180142648904291e-04, + 1.723009733094325489e-04, + 1.722836536306392413e-04, + 1.722660552782422094e-04, + 1.722481783024223956e-04, + 1.722300227538097102e-04, + 1.722115886834841973e-04, + 1.721928761429735951e-04, + 1.721738851842564261e-04, + 1.721546158597561692e-04, + 1.721350682223502589e-04, + 1.721152423253599747e-04, + 1.720951382225571638e-04, + 1.720747559681628039e-04, + 1.720540956168428292e-04, + 1.720331572237134433e-04, + 1.720119408443404412e-04, + 1.719904465347334903e-04, + 1.719686743513526084e-04, + 1.719466243511052637e-04, + 1.719242965913427696e-04, + 1.719016911298703405e-04, + 1.718788080249338652e-04, + 1.718556473352294200e-04, + 1.718322091198995830e-04, + 1.718084934385347075e-04, + 1.717845003511674204e-04, + 1.717602299182843578e-04, + 1.717356822008103364e-04, + 1.717108572601220413e-04, + 1.716857551580405446e-04, + 1.716603759568300594e-04, + 1.716347197192065043e-04, + 1.716087865083275560e-04, + 1.715825763877959834e-04, + 1.715560894216606232e-04, + 1.715293256744176542e-04, + 1.715022852110052569e-04, + 1.714749680968100651e-04, + 1.714473743976585194e-04, + 1.714195041798266788e-04, + 1.713913575100334448e-04, + 1.713629344554395582e-04, + 1.713342350836551077e-04, + 1.713052594627316959e-04, + 1.712760076611626568e-04, + 1.712464797478875818e-04, + 1.712166757922904767e-04, + 1.711865958641979732e-04, + 1.711562400338790570e-04, + 1.711256083720486465e-04, + 1.710947009498604908e-04, + 1.710635178389148135e-04, + 1.710320591112534337e-04, + 1.710003248393616906e-04, + 1.709683150961670880e-04, + 1.709360299550371533e-04, + 1.709034694897844516e-04, + 1.708706337746628186e-04, + 1.708375228843674683e-04, + 1.708041368940356984e-04, + 1.707704758792473779e-04, + 1.707365399160207188e-04, + 1.707023290808184015e-04, + 1.706678434505421273e-04, + 1.706330831025363855e-04, + 1.705980481145857972e-04, + 1.705627385649130827e-04, + 1.705271545321846989e-04, + 1.704912960955064216e-04, + 1.704551633344235351e-04, + 1.704187563289215096e-04, + 1.703820751594279531e-04, + 1.703451199068041543e-04, + 1.703078906523553015e-04, + 1.702703874778295609e-04, + 1.702326104654043072e-04, + 1.701945596977042841e-04, + 1.701562352577915211e-04, + 1.701176372291613489e-04, + 1.700787656957546785e-04, + 1.700396207419452614e-04, + 1.700002024525496371e-04, + 1.699605109128197338e-04, + 1.699205462084434374e-04, + 1.698803084255474645e-04, + 1.698397976507016723e-04, + 1.697990139709034188e-04, + 1.697579574735936093e-04, + 1.697166282466496489e-04, + 1.696750263783813764e-04, + 1.696331519575396574e-04, + 1.695910050733105830e-04, + 1.695485858153155789e-04, + 1.695058942736124617e-04, + 1.694629305386972289e-04, + 1.694196947014936494e-04, + 1.693761868533736475e-04, + 1.693324070861316609e-04, + 1.692883554920056202e-04, + 1.692440321636661611e-04, + 1.691994371942154589e-04, + 1.691545706771928391e-04, + 1.691094327065774882e-04, + 1.690640233767714586e-04, + 1.690183427826181812e-04, + 1.689723910193960963e-04, + 1.689261681828082987e-04, + 1.688796743690054692e-04, + 1.688329096745573869e-04, + 1.687858741964751283e-04, + 1.687385680322025291e-04, + 1.686909912796081613e-04, + 1.686431440370047944e-04, + 1.685950264031315336e-04, + 1.685466384771561502e-04, + 1.684979803586834576e-04, + 1.684490521477498086e-04, + 1.683998539448165906e-04, + 1.683503858507864339e-04, + 1.683006479669884399e-04, + 1.682506403951785875e-04, + 1.682003632375484608e-04, + 1.681498165967194218e-04, + 1.680990005757421765e-04, + 1.680479152780997294e-04, + 1.679965608076999296e-04, + 1.679449372688849305e-04, + 1.678930447664269343e-04, + 1.678408834055198436e-04, + 1.677884532917978014e-04, + 1.677357545313189549e-04, + 1.676827872305649680e-04, + 1.676295514964524320e-04, + 1.675760474363244094e-04, + 1.675222751579517888e-04, + 1.674682347695354533e-04, + 1.674139263796976069e-04, + 1.673593500974942161e-04, + 1.673045060324057935e-04, + 1.672493942943405155e-04, + 1.671940149936340864e-04, + 1.671383682410486815e-04, + 1.670824541477691522e-04, + 1.670262728254102091e-04, + 1.669698243860126270e-04, + 1.669131089420414563e-04, + 1.668561266063876760e-04, + 1.667988774923701728e-04, + 1.667413617137256576e-04, + 1.666835793846222185e-04, + 1.666255306196516496e-04, + 1.665672155338287195e-04, + 1.665086342425949929e-04, + 1.664497868618093168e-04, + 1.663906735077619152e-04, + 1.663312942971625712e-04, + 1.662716493471455060e-04, + 1.662117387752684301e-04, + 1.661515626995130042e-04, + 1.660911212382772768e-04, + 1.660304145103886676e-04, + 1.659694426350945078e-04, + 1.659082057320637206e-04, + 1.658467039213868755e-04, + 1.657849373235799014e-04, + 1.657229060595703720e-04, + 1.656606102507159907e-04, + 1.655980500187920147e-04, + 1.655352254859943984e-04, + 1.654721367749423960e-04, + 1.654087840086671771e-04, + 1.653451673106253524e-04, + 1.652812868047007081e-04, + 1.652171426151808416e-04, + 1.651527348667831551e-04, + 1.650880636846443117e-04, + 1.650231291943105862e-04, + 1.649579315217554291e-04, + 1.648924707933682992e-04, + 1.648267471359566964e-04, + 1.647607606767470566e-04, + 1.646945115433770806e-04, + 1.646279998639059525e-04, + 1.645612257668185689e-04, + 1.644941893810006285e-04, + 1.644268908357642738e-04, + 1.643593302608384690e-04, + 1.642915077863607597e-04, + 1.642234235428891725e-04, + 1.641550776614053857e-04, + 1.640864702732908772e-04, + 1.640176015103516445e-04, + 1.639484715048107231e-04, + 1.638790803892925204e-04, + 1.638094282968565341e-04, + 1.637395153609568302e-04, + 1.636693417154716143e-04, + 1.635989074946944503e-04, + 1.635282128333181051e-04, + 1.634572578664681862e-04, + 1.633860427296732990e-04, + 1.633145675588693567e-04, + 1.632428324904127532e-04, + 1.631708376610727736e-04, + 1.630985832080179604e-04, + 1.630260692688499137e-04, + 1.629532959815597332e-04, + 1.628802634845625229e-04, + 1.628069719166807486e-04, + 1.627334214171474638e-04, + 1.626596121256065528e-04, + 1.625855441821139513e-04, + 1.625112177271267227e-04, + 1.624366329015205948e-04, + 1.623617898465812325e-04, + 1.622866887039897362e-04, + 1.622113296158555747e-04, + 1.621357127246863628e-04, + 1.620598381733925235e-04, + 1.619837061053011932e-04, + 1.619073166641452706e-04, + 1.618306699940633359e-04, + 1.617537662396056680e-04, + 1.616766055457183337e-04, + 1.615991880577656039e-04, + 1.615215139215136087e-04, + 1.614435832831345936e-04, + 1.613653962892073524e-04, + 1.612869530867182309e-04, + 1.612082538230502572e-04, + 1.611292986460001366e-04, + 1.610500877037677624e-04, + 1.609706211449554562e-04, + 1.608908991185710588e-04, + 1.608109217740293117e-04, + 1.607306892611379799e-04, + 1.606502017301192917e-04, + 1.605694593315939197e-04, + 1.604884622165866730e-04, + 1.604072105365276894e-04, + 1.603257044432386395e-04, + 1.602439440889542475e-04, + 1.601619296263069234e-04, + 1.600796612083311261e-04, + 1.599971389884613038e-04, + 1.599143631205371255e-04, + 1.598313337587890337e-04, + 1.597480510578565673e-04, + 1.596645151727769235e-04, + 1.595807262589863675e-04, + 1.594966844723212890e-04, + 1.594123899690202354e-04, + 1.593278429057097632e-04, + 1.592430434394271515e-04, + 1.591579917276025945e-04, + 1.590726879280645407e-04, + 1.589871321990447622e-04, + 1.589013246991587841e-04, + 1.588152655874284906e-04, + 1.587289550232823688e-04, + 1.586423931665249614e-04, + 1.585555801773700431e-04, + 1.584685162164288573e-04, + 1.583812014446966444e-04, + 1.582936360235742451e-04, + 1.582058201148558215e-04, + 1.581177538807288570e-04, + 1.580294374837793879e-04, + 1.579408710869765532e-04, + 1.578520548536917038e-04, + 1.577629889476994327e-04, + 1.576736735331469186e-04, + 1.575841087745876454e-04, + 1.574942948369692855e-04, + 1.574042318856195514e-04, + 1.573139200862669579e-04, + 1.572233596050423132e-04, + 1.571325506084453522e-04, + 1.570414932633830906e-04, + 1.569501877371524230e-04, + 1.568586341974255948e-04, + 1.567668328122929198e-04, + 1.566747837502068896e-04, + 1.565824871800258397e-04, + 1.564899432709974697e-04, + 1.563971521927423906e-04, + 1.563041141152941588e-04, + 1.562108292090623864e-04, + 1.561172976448378636e-04, + 1.560235195938101504e-04, + 1.559294952275574390e-04, + 1.558352247180286104e-04, + 1.557407082375874966e-04, + 1.556459459589563401e-04, + 1.555509380552604082e-04, + 1.554556847000064990e-04, + 1.553601860670868987e-04, + 1.552644423307803303e-04, + 1.551684536657528210e-04, + 1.550722202470456671e-04, + 1.549757422500941373e-04, + 1.548790198507190696e-04, + 1.547820532251087107e-04, + 1.546848425498587509e-04, + 1.545873880019360839e-04, + 1.544896897586836321e-04, + 1.543917479978362838e-04, + 1.542935628975100246e-04, + 1.541951346362003649e-04, + 1.540964633927905802e-04, + 1.539975493465312734e-04, + 1.538983926770669112e-04, + 1.537989935644234368e-04, + 1.536993521889891878e-04, + 1.535994687315578582e-04, + 1.534993433732914452e-04, + 1.533989762957206832e-04, + 1.532983676807700890e-04, + 1.531975177107374158e-04, + 1.530964265682990474e-04, + 1.529950944365094561e-04, + 1.528935214988052951e-04, + 1.527917079389880793e-04, + 1.526896539412479011e-04, + 1.525873596901484964e-04, + 1.524848253706295211e-04, + 1.523820511680111316e-04, + 1.522790372679768279e-04, + 1.521757838565971157e-04, + 1.520722911203148159e-04, + 1.519685592459462569e-04, + 1.518645884206827384e-04, + 1.517603788320938114e-04, + 1.516559306681100117e-04, + 1.515512441170481224e-04, + 1.514463193675942869e-04, + 1.513411566088053645e-04, + 1.512357560301174687e-04, + 1.511301178213243367e-04, + 1.510242421726047603e-04, + 1.509181292745044253e-04, + 1.508117793179397875e-04, + 1.507051924941997263e-04, + 1.505983689949459236e-04, + 1.504913090121974149e-04, + 1.503840127383515135e-04, + 1.502764803661896654e-04, + 1.501687120888335668e-04, + 1.500607080997927597e-04, + 1.499524685929449000e-04, + 1.498439937625216899e-04, + 1.497352838031365519e-04, + 1.496263389097647340e-04, + 1.495171592777498691e-04, + 1.494077451028059803e-04, + 1.492980965809985352e-04, + 1.491882139087698971e-04, + 1.490780972829414662e-04, + 1.489677469006708810e-04, + 1.488571629595000214e-04, + 1.487463456573359807e-04, + 1.486352951924297067e-04, + 1.485240117634301581e-04, + 1.484124955693156742e-04, + 1.483007468094481307e-04, + 1.481887656835458619e-04, + 1.480765523916949635e-04, + 1.479641071343245728e-04, + 1.478514301122588561e-04, + 1.477385215266500322e-04, + 1.476253815790297093e-04, + 1.475120104712914024e-04, + 1.473984084056686322e-04, + 1.472845755847835517e-04, + 1.471705122116047165e-04, + 1.470562184894490363e-04, + 1.469416946220064135e-04, + 1.468269408133272206e-04, + 1.467119572677975535e-04, + 1.465967441901985910e-04, + 1.464813017856321379e-04, + 1.463656302595778703e-04, + 1.462497298178721400e-04, + 1.461336006666874012e-04, + 1.460172430125815694e-04, + 1.459006570624539207e-04, + 1.457838430235489416e-04, + 1.456668011034805874e-04, + 1.455495315102173746e-04, + 1.454320344520620251e-04, + 1.453143101377004720e-04, + 1.451963587761581121e-04, + 1.450781805768028689e-04, + 1.449597757493695867e-04, + 1.448411445039414643e-04, + 1.447222870509532800e-04, + 1.446032036011966773e-04, + 1.444838943657977760e-04, + 1.443643595562506471e-04, + 1.442445993843942463e-04, + 1.441246140624162628e-04, + 1.440044038028558842e-04, + 1.438839688186059379e-04, + 1.437633093228926433e-04, + 1.436424255293062408e-04, + 1.435213176517800664e-04, + 1.433999859045957019e-04, + 1.432784305023868240e-04, + 1.431566516601187936e-04, + 1.430346495931192308e-04, + 1.429124245170566832e-04, + 1.427899766479465886e-04, + 1.426673062021481585e-04, + 1.425444133963731054e-04, + 1.424212984476602999e-04, + 1.422979615734096248e-04, + 1.421744029913605081e-04, + 1.420506229195948769e-04, + 1.419266215765380796e-04, + 1.418023991809643067e-04, + 1.416779559519738493e-04, + 1.415532921090251650e-04, + 1.414284078719130308e-04, + 1.413033034607739642e-04, + 1.411779790960903975e-04, + 1.410524349986695084e-04, + 1.409266713896744727e-04, + 1.408006884906038098e-04, + 1.406744865232941203e-04, + 1.405480657099221736e-04, + 1.404214262730076176e-04, + 1.402945684353936265e-04, + 1.401674924202770951e-04, + 1.400401984511858713e-04, + 1.399126867519860466e-04, + 1.397849575468800595e-04, + 1.396570110604123055e-04, + 1.395288475174460442e-04, + 1.394004671431976598e-04, + 1.392718701632121852e-04, + 1.391430568033698615e-04, + 1.390140272898905834e-04, + 1.388847818493124588e-04, + 1.387553207085163933e-04, + 1.386256440947348178e-04, + 1.384957522354996200e-04, + 1.383656453586959206e-04, + 1.382353236925422054e-04, + 1.381047874655657410e-04, + 1.379740369066633171e-04, + 1.378430722450250815e-04, + 1.377118937101924363e-04, + 1.375805015320316648e-04, + 1.374488959407446111e-04, + 1.373170771668395145e-04, + 1.371850454411928908e-04, + 1.370528009949699519e-04, + 1.369203440596872723e-04, + 1.367876748671879882e-04, + 1.366547936496200866e-04, + 1.365217006394928373e-04, + 1.363883960696247522e-04, + 1.362548801731482465e-04, + 1.361211531835392107e-04, + 1.359872153345986334e-04, + 1.358530668604283692e-04, + 1.357187079954962723e-04, + 1.355841389745528756e-04, + 1.354493600326956836e-04, + 1.353143714053454288e-04, + 1.351791733282219207e-04, + 1.350437660374029724e-04, + 1.349081497692700279e-04, + 1.347723247605145858e-04, + 1.346362912481669036e-04, + 1.345000494695779191e-04, + 1.343635996623957223e-04, + 1.342269420646228833e-04, + 1.340900769145637601e-04, + 1.339530044508305967e-04, + 1.338157249123713333e-04, + 1.336782385384468921e-04, + 1.335405455686350265e-04, + 1.334026462428377746e-04, + 1.332645408012559263e-04, + 1.331262294844244229e-04, + 1.329877125331884228e-04, + 1.328489901887093191e-04, + 1.327100626924633303e-04, + 1.325709302862477341e-04, + 1.324315932121563374e-04, + 1.322920517126150385e-04, + 1.321523060303567815e-04, + 1.320123564084284685e-04, + 1.318722030901956757e-04, + 1.317318463193175269e-04, + 1.315912863397840989e-04, + 1.314505233958908879e-04, + 1.313095577322441769e-04, + 1.311683895937609812e-04, + 1.310270192256740628e-04, + 1.308854468735097586e-04, + 1.307436727831195577e-04, + 1.306016972006591764e-04, + 1.304595203725930305e-04, + 1.303171425456933947e-04, + 1.301745639670463122e-04, + 1.300317848840269015e-04, + 1.298888055443354059e-04, + 1.297456261959719867e-04, + 1.296022470872437693e-04, + 1.294586684667691271e-04, + 1.293148905834528520e-04, + 1.291709136865231810e-04, + 1.290267380255066690e-04, + 1.288823638502333664e-04, + 1.287377914108371981e-04, + 1.285930209577608701e-04, + 1.284480527417311763e-04, + 1.283028870137960242e-04, + 1.281575240252980617e-04, + 1.280119640278822935e-04, + 1.278662072734936418e-04, + 1.277202540143840205e-04, + 1.275741045030807041e-04, + 1.274277589924536829e-04, + 1.272812177356280605e-04, + 1.271344809860538755e-04, + 1.269875489974781838e-04, + 1.268404220239277656e-04, + 1.266931003197389947e-04, + 1.265455841395641276e-04, + 1.263978737383138131e-04, + 1.262499693712207350e-04, + 1.261018712938127243e-04, + 1.259535797618868192e-04, + 1.258050950315810126e-04, + 1.256564173592813896e-04, + 1.255075470016938212e-04, + 1.253584842158181052e-04, + 1.252092292589272586e-04, + 1.250597823886002329e-04, + 1.249101438627262786e-04, + 1.247603139394495690e-04, + 1.246102928772291026e-04, + 1.244600809348164229e-04, + 1.243096783712262362e-04, + 1.241590854458029549e-04, + 1.240083024181601985e-04, + 1.238573295481881938e-04, + 1.237061670960852707e-04, + 1.235548153223372354e-04, + 1.234032744876918642e-04, + 1.232515448532300547e-04, + 1.230996266802732620e-04, + 1.229475202304554078e-04, + 1.227952257656973755e-04, + 1.226427435481776006e-04, + 1.224900738404000771e-04, + 1.223372169051329381e-04, + 1.221841730054158009e-04, + 1.220309424045913036e-04, + 1.218775253662850611e-04, + 1.217239221543792648e-04, + 1.215701330330851886e-04, + 1.214161582668483346e-04, + 1.212619981204237854e-04, + 1.211076528588391106e-04, + 1.209531227474034337e-04, + 1.207984080517052363e-04, + 1.206435090376203813e-04, + 1.204884259712825958e-04, + 1.203331591191247516e-04, + 1.201777087478508930e-04, + 1.200220751244437858e-04, + 1.198662585161622875e-04, + 1.197102591905501438e-04, + 1.195540774154051691e-04, + 1.193977134588234963e-04, + 1.192411675891688394e-04, + 1.190844400750801099e-04, + 1.189275311854778953e-04, + 1.187704411895357134e-04, + 1.186131703567215655e-04, + 1.184557189567701254e-04, + 1.182980872596879173e-04, + 1.181402755357547659e-04, + 1.179822840555284983e-04, + 1.178241130898175285e-04, + 1.176657629097221643e-04, + 1.175072337866058767e-04, + 1.173485259921021572e-04, + 1.171896397981139895e-04, + 1.170305754768203812e-04, + 1.168713333006485413e-04, + 1.167119135423133310e-04, + 1.165523164747914598e-04, + 1.163925423713261614e-04, + 1.162325915054344982e-04, + 1.160724641508789824e-04, + 1.159121605817082877e-04, + 1.157516810722302667e-04, + 1.155910258970166800e-04, + 1.154301953309043758e-04, + 1.152691896490006023e-04, + 1.151080091266548861e-04, + 1.149466540395016281e-04, + 1.147851246634294068e-04, + 1.146234212745898687e-04, + 1.144615441494028379e-04, + 1.142994935645280451e-04, + 1.141372697968997819e-04, + 1.139748731237339070e-04, + 1.138123038224638108e-04, + 1.136495621708097229e-04, + 1.134866484467501841e-04, + 1.133235629285028019e-04, + 1.131603058945547703e-04, + 1.129968776236731705e-04, + 1.128332783948389695e-04, + 1.126695084873176561e-04, + 1.125055681806311328e-04, + 1.123414577545277514e-04, + 1.121771774890610530e-04, + 1.120127276644886799e-04, + 1.118481085613513593e-04, + 1.116833204604425868e-04, + 1.115183636427881348e-04, + 1.113532383896800556e-04, + 1.111879449826846234e-04, + 1.110224837035761030e-04, + 1.108568548344085242e-04, + 1.106910586574870854e-04, + 1.105250954553381356e-04, + 1.103589655107879274e-04, + 1.101926691068614748e-04, + 1.100262065268616321e-04, + 1.098595780543316756e-04, + 1.096927839730711733e-04, + 1.095258245670964660e-04, + 1.093587001207222396e-04, + 1.091914109184586890e-04, + 1.090239572450905833e-04, + 1.088563393856483986e-04, + 1.086885576253777714e-04, + 1.085206122498132370e-04, + 1.083525035447111044e-04, + 1.081842317960560429e-04, + 1.080157972900981070e-04, + 1.078472003133219864e-04, + 1.076784411524547711e-04, + 1.075095200944723621e-04, + 1.073404374265691136e-04, + 1.071711934362025697e-04, + 1.070017884110626192e-04, + 1.068322226390784342e-04, + 1.066624964084187413e-04, + 1.064926100074982320e-04, + 1.063225637249467712e-04, + 1.061523578496545949e-04, + 1.059819926707418442e-04, + 1.058114684775645964e-04, + 1.056407855597154064e-04, + 1.054699442070302327e-04, + 1.052989447095569684e-04, + 1.051277873576010044e-04, + 1.049564724416947499e-04, + 1.047850002526039482e-04, + 1.046133710813348456e-04, + 1.044415852191039965e-04, + 1.042696429573830276e-04, + 1.040975445878670195e-04, + 1.039252904024832888e-04, + 1.037528806933884476e-04, + 1.035803157529782963e-04, + 1.034075958738552302e-04, + 1.032347213488727050e-04, + 1.030616924711067362e-04, + 1.028885095338604252e-04, + 1.027151728306656674e-04, + 1.025416826552880714e-04, + 1.023680393016980652e-04, + 1.021942430641148062e-04, + 1.020202942369756883e-04, + 1.018461931149436194e-04, + 1.016719399929131201e-04, + 1.014975351659811451e-04, + 1.013229789294904513e-04, + 1.011482715789999176e-04, + 1.009734134102911588e-04, + 1.007984047193679429e-04, + 1.006232458024634412e-04, + 1.004479369560094105e-04, + 1.002724784766813630e-04, + 1.000968706613665829e-04, + 9.992111380717370796e-05, + 9.974520821143640183e-05, + 9.956915417168637138e-05, + 9.939295198568675997e-05, + 9.921660195144312499e-05, + 9.904010436713124360e-05, + 9.886345953117516168e-05, + 9.868666774221416637e-05, + 9.850972929908127817e-05, + 9.833264450083986988e-05, + 9.815541364679118827e-05, + 9.797803703640389447e-05, + 9.780051496939251956e-05, + 9.762284774568350193e-05, + 9.744503566538615779e-05, + 9.726707902887569035e-05, + 9.708897813668460703e-05, + 9.691073328958849336e-05, + 9.673234478857312103e-05, + 9.655381293481083934e-05, + 9.637513802969986405e-05, + 9.619632037487094514e-05, + 9.601736027211640585e-05, + 9.583825802346832717e-05, + 9.565901393116604888e-05, + 9.547962829762566281e-05, + 9.530010142552352355e-05, + 9.512043361768858713e-05, + 9.494062517718563710e-05, + 9.476067640727773049e-05, + 9.458058761143996716e-05, + 9.440035909331975382e-05, + 9.421999115682417713e-05, + 9.403948410600765329e-05, + 9.385883824515850156e-05, + 9.367805387876773280e-05, + 9.349713131149621167e-05, + 9.331607084825297674e-05, + 9.313487279412389994e-05, + 9.295353745437953349e-05, + 9.277206513451346354e-05, + 9.259045614020997386e-05, + 9.240871077735258391e-05, + 9.222682935203016107e-05, + 9.204481217050561423e-05, + 9.186265953926237905e-05, + 9.168037176498067384e-05, + 9.149794915450441791e-05, + 9.131539201492070356e-05, + 9.113270065348850980e-05, + 9.094987537764397426e-05, + 9.076691649504172843e-05, + 9.058382431352223602e-05, + 9.040059914111783746e-05, + 9.021724128605394246e-05, + 9.003375105675561656e-05, + 8.985012876181451297e-05, + 8.966637471003837995e-05, + 8.948248921041608171e-05, + 8.929847257212701747e-05, + 8.911432510454712517e-05, + 8.893004711721762940e-05, + 8.874563891989168914e-05, + 8.856110082250229188e-05, + 8.837643313516920602e-05, + 8.819163616819926551e-05, + 8.800671023209337646e-05, + 8.782165563751354390e-05, + 8.763647269533145754e-05, + 8.745116171659541009e-05, + 8.726572301253696508e-05, + 8.708015689457998282e-05, + 8.689446367430724060e-05, + 8.670864366350744632e-05, + 8.652269717414344432e-05, + 8.633662451836007583e-05, + 8.615042600848262042e-05, + 8.596410195702496818e-05, + 8.577765267665642959e-05, + 8.559107848024166123e-05, + 8.540437968084947499e-05, + 8.521755659167703871e-05, + 8.503060952613228916e-05, + 8.484353879780075539e-05, + 8.465634472042017492e-05, + 8.446902760792821213e-05, + 8.428158777443069116e-05, + 8.409402553420858902e-05, + 8.390634120172577406e-05, + 8.371853509159534151e-05, + 8.353060751861994581e-05, + 8.334255879780123313e-05, + 8.315438924426295795e-05, + 8.296609917333399220e-05, + 8.277768890051524363e-05, + 8.258915874145286240e-05, + 8.240050901198907665e-05, + 8.221174002812687458e-05, + 8.202285210603970809e-05, + 8.183384556206943277e-05, + 8.164472071273366695e-05, + 8.145547787468574396e-05, + 8.126611736480392840e-05, + 8.107663950007489159e-05, + 8.088704459768540785e-05, + 8.069733297498667081e-05, + 8.050750494947159284e-05, + 8.031756083881319943e-05, + 8.012750096087400747e-05, + 7.993732563363009050e-05, + 7.974703517525389817e-05, + 7.955662990408042914e-05, + 7.936611013857292963e-05, + 7.917547619741499641e-05, + 7.898472839939207348e-05, + 7.879386706348431402e-05, + 7.860289250883072034e-05, + 7.841180505470489849e-05, + 7.822060502055606815e-05, + 7.802929272601682824e-05, + 7.783786849082705950e-05, + 7.764633263491750289e-05, + 7.745468547837536331e-05, + 7.726292734141059089e-05, + 7.707105854443903933e-05, + 7.687907940800628708e-05, + 7.668699025279547077e-05, + 7.649479139966923024e-05, + 7.630248316963542067e-05, + 7.611006588385456643e-05, + 7.591753986364774872e-05, + 7.572490543046280550e-05, + 7.553216290592434034e-05, + 7.533931261180741698e-05, + 7.514635487000385417e-05, + 7.495329000260585834e-05, + 7.476011833182919430e-05, + 7.456684018002139808e-05, + 7.437345586970376266e-05, + 7.417996572353642668e-05, + 7.398637006432645170e-05, + 7.379266921503600796e-05, + 7.359886349874826268e-05, + 7.340495323871612846e-05, + 7.321093875832977791e-05, + 7.301682038112355542e-05, + 7.282259843077538086e-05, + 7.262827323111540961e-05, + 7.243384510609009131e-05, + 7.223931437981465878e-05, + 7.204468137653694275e-05, + 7.184994642064585575e-05, + 7.165510983667095846e-05, + 7.146017194929036079e-05, + 7.126513308329631205e-05, + 7.106999356364507422e-05, + 7.087475371542317618e-05, + 7.067941386385504377e-05, + 7.048397433431096868e-05, + 7.028843545227195320e-05, + 7.009279754338180611e-05, + 6.989706093341065932e-05, + 6.970122594826403447e-05, + 6.950529291398242283e-05, + 6.930926215674835969e-05, + 6.911313400285288189e-05, + 6.891690877874548241e-05, + 6.872058681099942946e-05, + 6.852416842631992510e-05, + 6.832765395154372578e-05, + 6.813104371364696213e-05, + 6.793433803971028187e-05, + 6.773753725696980731e-05, + 6.754064169278225116e-05, + 6.734365167463326487e-05, + 6.714656753014504157e-05, + 6.694938958704139129e-05, + 6.675211817319064817e-05, + 6.655475361661332770e-05, + 6.635729624540438938e-05, + 6.615974638781856347e-05, + 6.596210437223549387e-05, + 6.576437052713306674e-05, + 6.556654518113919474e-05, + 6.536862866299605185e-05, + 6.517062130156862508e-05, + 6.497252342584419944e-05, + 6.477433536494027260e-05, + 6.457605744806083450e-05, + 6.437769000459057087e-05, + 6.417923336397415098e-05, + 6.398068785580968577e-05, + 6.378205380981481949e-05, + 6.358333155579885213e-05, + 6.338452142370659540e-05, + 6.318562374362654489e-05, + 6.298663884571085243e-05, + 6.278756706026317354e-05, + 6.258840871770295652e-05, + 6.238916414852912172e-05, + 6.218983368341702981e-05, + 6.199041765309416449e-05, + 6.179091638843692464e-05, + 6.159133022043420866e-05, + 6.139165948015221856e-05, + 6.119190449882194152e-05, + 6.099206560775883765e-05, + 6.079214313837167619e-05, + 6.059213742220551736e-05, + 6.039204879091536628e-05, + 6.019187757622989282e-05, + 5.999162411003893349e-05, + 5.979128872431399913e-05, + 5.959087175111642672e-05, + 5.939037352264057128e-05, + 5.918979437117856933e-05, + 5.898913462912807058e-05, + 5.878839462900120296e-05, + 5.858757470338765548e-05, + 5.838667518500792616e-05, + 5.818569640668606787e-05, + 5.798463870131402489e-05, + 5.778350240193874172e-05, + 5.758228784168332130e-05, + 5.738099535375362509e-05, + 5.717962527148330809e-05, + 5.697817792829750486e-05, + 5.677665365772093393e-05, + 5.657505279338626648e-05, + 5.637337566899813085e-05, + 5.617162261838610289e-05, + 5.596979397546816837e-05, + 5.576789007425913907e-05, + 5.556591124887063927e-05, + 5.536385783351861382e-05, + 5.516173016248782730e-05, + 5.495952857018431231e-05, + 5.475725339109960434e-05, + 5.455490495981885974e-05, + 5.435248361102016452e-05, + 5.414998967948317414e-05, + 5.394742350005271814e-05, + 5.374478540769192606e-05, + 5.354207573744568986e-05, + 5.333929482444951369e-05, + 5.313644300393741501e-05, + 5.293352061120577324e-05, + 5.273052798166665217e-05, + 5.252746545081127591e-05, + 5.232433335421822138e-05, + 5.212113202755321500e-05, + 5.191786180657750145e-05, + 5.171452302711115011e-05, + 5.151111602508677057e-05, + 5.130764113651247355e-05, + 5.110409869748093752e-05, + 5.090048904416826354e-05, + 5.069681251284267599e-05, + 5.049306943982842538e-05, + 5.028926016155819598e-05, + 5.008538501453763212e-05, + 4.988144433535327991e-05, + 4.967743846068064427e-05, + 4.947336772724846444e-05, + 4.926923247188256996e-05, + 4.906503303151447297e-05, + 4.886076974310014795e-05, + 4.865644294370866519e-05, + 4.845205297048658835e-05, + 4.824760016062992068e-05, + 4.804308485143717679e-05, + 4.783850738027374620e-05, + 4.763386808457987582e-05, + 4.742916730187869305e-05, + 4.722440536974023057e-05, + 4.701958262582565506e-05, + 4.681469940789608305e-05, + 4.660975605373021550e-05, + 4.640475290121453660e-05, + 4.619969028830645772e-05, + 4.599456855300653466e-05, + 4.578938803340347566e-05, + 4.558414906768206283e-05, + 4.537885199404204025e-05, + 4.517349715078699147e-05, + 4.496808487628860149e-05, + 4.476261550894887909e-05, + 4.455708938730014738e-05, + 4.435150684987699274e-05, + 4.414586823531581490e-05, + 4.394017388231795732e-05, + 4.373442412961236315e-05, + 4.352861931604650597e-05, + 4.332275978050374645e-05, + 4.311684586191178234e-05, + 4.291087789928746670e-05, + 4.270485623170968927e-05, + 4.249878119828114483e-05, + 4.229265313822946887e-05, + 4.208647239077773649e-05, + 4.188023929524493401e-05, + 4.167395419099973131e-05, + 4.146761741746901993e-05, + 4.126122931413691696e-05, + 4.105479022055417727e-05, + 4.084830047630031417e-05, + 4.064176042103838555e-05, + 4.043517039448689268e-05, + 4.022853073638210419e-05, + 4.002184178657008451e-05, + 3.981510388492272919e-05, + 3.960831737134687896e-05, + 3.940148258582947677e-05, + 3.919459986840025090e-05, + 3.898766955914051733e-05, + 3.878069199819168393e-05, + 3.857366752571789295e-05, + 3.836659648196059702e-05, + 3.815947920720152688e-05, + 3.795231604177085001e-05, + 3.774510732604721805e-05, + 3.753785340046555952e-05, + 3.733055460548066415e-05, + 3.712321128162110164e-05, + 3.691582376945240620e-05, + 3.670839240958520132e-05, + 3.650091754267503031e-05, + 3.629339950943077247e-05, + 3.608583865057763112e-05, + 3.587823530691114718e-05, + 3.567058981926047185e-05, + 3.546290252849675561e-05, + 3.525517377554169987e-05, + 3.504740390133035527e-05, + 3.483959324686560286e-05, + 3.463174215318107435e-05, + 3.442385096134937178e-05, + 3.421592001248190481e-05, + 3.400794964773737469e-05, + 3.379994020828437596e-05, + 3.359189203535614199e-05, + 3.338380547021295019e-05, + 3.317568085415127676e-05, + 3.296751852850251602e-05, + 3.275931883464237225e-05, + 3.255108211395285167e-05, + 3.234280870787725179e-05, + 3.213449895788285810e-05, + 3.192615320546938053e-05, + 3.171777179217774220e-05, + 3.150935505955262711e-05, + 3.130090334918784036e-05, + 3.109241700273551035e-05, + 3.088389636182168365e-05, + 3.067534176813872614e-05, + 3.046675356340769437e-05, + 3.025813208934967539e-05, + 3.004947768774134196e-05, + 2.984079070037688345e-05, + 2.963207146907671679e-05, + 2.942332033569663099e-05, + 2.921453764208970115e-05, + 2.900572373015228241e-05, + 2.879687894183256827e-05, + 2.858800361904693433e-05, + 2.837909810377169223e-05, + 2.817016273800580664e-05, + 2.796119786374204197e-05, + 2.775220382302262257e-05, + 2.754318095790112304e-05, + 2.733412961045143658e-05, + 2.712505012276702967e-05, + 2.691594283697002895e-05, + 2.670680809516367903e-05, + 2.649764623953434217e-05, + 2.628845761222099083e-05, + 2.607924255541628917e-05, + 2.587000141132952356e-05, + 2.566073452214852668e-05, + 2.545144223013199404e-05, + 2.524212487752561406e-05, + 2.503278280657028775e-05, + 2.482341635954858337e-05, + 2.461402587875587632e-05, + 2.440461170646300175e-05, + 2.419517418501761731e-05, + 2.398571365671346871e-05, + 2.377623046389251477e-05, + 2.356672494889740208e-05, + 2.335719745408058930e-05, + 2.314764832180343229e-05, + 2.293807789444521353e-05, + 2.272848651436529667e-05, + 2.251887452395832936e-05, + 2.230924226562569149e-05, + 2.209959008173807322e-05, + 2.188991831472752040e-05, + 2.168022730700348684e-05, + 2.147051740096130119e-05, + 2.126078893902839468e-05, + 2.105104226362627606e-05, + 2.084127771717954748e-05, + 2.063149564212442218e-05, + 2.042169638087096720e-05, + 2.021188027585849256e-05, + 2.000204766952722645e-05, + 1.979219890427989044e-05, + 1.958233432257505945e-05, + 1.937245426684231278e-05, + 1.916255907949098564e-05, + 1.895264910295642053e-05, + 1.874272467966195242e-05, + 1.853278615202780258e-05, + 1.832283386247029254e-05, + 1.811286815341103950e-05, + 1.790288936723852470e-05, + 1.769289784636410607e-05, + 1.748289393318359678e-05, + 1.727287797008645725e-05, + 1.706285029946434342e-05, + 1.685281126367329518e-05, + 1.664276120508907813e-05, + 1.643270046606949399e-05, + 1.622262938896296952e-05, + 1.601254831610819738e-05, + 1.580245758984262679e-05, + 1.559235755246479765e-05, + 1.538224854628974668e-05, + 1.517213091361104171e-05, + 1.496200499670970432e-05, + 1.475187113786281568e-05, + 1.454172967930574567e-05, + 1.433158096328751666e-05, + 1.412142533203300549e-05, + 1.391126312775167639e-05, + 1.370109469263698128e-05, + 1.349092036887517737e-05, + 1.328074049860746822e-05, + 1.307055542397603652e-05, + 1.286036548713303287e-05, + 1.265017103015561496e-05, + 1.243997239513913981e-05, + 1.222976992415907951e-05, + 1.201956395924241860e-05, + 1.180935484242326009e-05, + 1.159914291570480550e-05, + 1.138892852106822505e-05, + 1.117871200048134990e-05, + 1.096849369586076906e-05, + 1.075827394911811475e-05, + 1.054805310216871900e-05, + 1.033783149684689176e-05, + 1.012760947499908604e-05, + 9.917387378445722149e-06, + 9.707165548943264319e-06, + 9.496944328286650714e-06, + 9.286724058177696695e-06, + 9.076505080327419790e-06, + 8.866287736408810829e-06, + 8.656072368074945204e-06, + 8.445859316911554106e-06, + 8.235648924539623931e-06, + 8.025441532483531883e-06, + 7.815237482273740255e-06, + 7.605037115408556272e-06, + 7.394840773316277344e-06, + 7.184648797448247804e-06, + 6.974461529194009071e-06, + 6.764279309890093548e-06, + 6.554102480866323443e-06, + 6.343931383417168349e-06, + 6.133766358763718551e-06, + 5.923607748156148901e-06, + 5.713455892742028917e-06, + 5.503311133668867128e-06, + 5.293173812046025091e-06, + 5.083044268906730496e-06, + 4.872922845301161015e-06, + 4.662809882211627493e-06, + 4.452705720561363620e-06, + 4.242610701260859472e-06, + 4.032525165179111525e-06, + 3.822449453105708607e-06, + 3.612383905843887790e-06, + 3.402328864125704039e-06, + 3.192284668620828339e-06, + 2.982251659982844830e-06, + 2.772230178811247817e-06, + 2.562220565660209416e-06, + 2.352223161047440364e-06, + 2.142238305416184917e-06, + 1.932266339190810356e-06, + 1.722307602738841699e-06, + 1.512362436379755807e-06, + 1.302431180384441192e-06, + 1.092514174984009697e-06, + 8.826117603317857886e-07, + 6.727242765589423292e-07, + 4.628520637365106701e-07, + 2.529954618841701552e-07, + 4.315481097907791656e-08, +-1.666695490821310423e-07, +-3.764772784277241820e-07, +-5.862680372488674858e-07, +-7.960414857908037371e-07, +-1.005797284353419482e-06, +-1.215535093282413892e-06, +-1.425254573007296765e-06, +-1.634955383985771496e-06, +-1.844637186741731388e-06, +-2.054299641856441617e-06, +-2.263942409969079846e-06, +-2.473565151767959695e-06, +-2.683167528028444151e-06, +-2.892749199557410484e-06, +-3.102309827231209182e-06, +-3.311849071986823895e-06, +-3.521366594813110567e-06, +-3.730862056788719955e-06, +-3.940335119026533533e-06, +-4.149785442711669440e-06, +-4.359212689092586938e-06, +-4.568616519481701783e-06, +-4.777996595246572422e-06, +-4.987352577847807260e-06, +-5.196684128783567908e-06, +-5.405990909627455271e-06, +-5.615272582019741067e-06, +-5.824528807667937874e-06, +-6.033759248337943406e-06, +-6.242963565891970647e-06, +-6.452141422233052791e-06, +-6.661292479342966605e-06, +-6.870416399273450387e-06, +-7.079512844137316901e-06, +-7.288581476146447036e-06, +-7.497621957565630746e-06, +-7.706633950703727418e-06, +-7.915617117998287000e-06, +-8.124571121922675380e-06, +-8.333495625024053653e-06, +-8.542390289961140540e-06, +-8.751254779402239787e-06, +-8.960088756156247362e-06, +-9.168891883070702571e-06, +-9.377663823078898335e-06, +-9.586404239181836002e-06, +-9.795112794495367808e-06, +-1.000378915214803963e-05, +-1.021243297541245223e-05, +-1.042104392760295833e-05, +-1.062962167211367235e-05, +-1.083816587245617354e-05, +-1.104667619216701338e-05, +-1.125515229489197333e-05, +-1.146359384437726925e-05, +-1.167200050442373706e-05, +-1.188037193891503048e-05, +-1.208870781185561386e-05, +-1.229700778726875057e-05, +-1.250527152932750349e-05, +-1.271349870225276741e-05, +-1.292168897035112978e-05, +-1.312984199805250772e-05, +-1.333795744981785536e-05, +-1.354603499022320299e-05, +-1.375407428395097167e-05, +-1.396207499574414358e-05, +-1.417003679043446491e-05, +-1.437795933298038102e-05, +-1.458584228837442356e-05, +-1.479368532172761054e-05, +-1.500148809826057453e-05, +-1.520925028325754161e-05, +-1.541697154210423275e-05, +-1.562465154027901568e-05, +-1.583228994334412456e-05, +-1.603988641698336990e-05, +-1.624744062694699666e-05, +-1.645495223908927565e-05, +-1.666242091935987729e-05, +-1.686984633380429852e-05, +-1.707722814855523665e-05, +-1.728456602986997397e-05, +-1.749185964407559506e-05, +-1.769910865760641549e-05, +-1.790631273699536919e-05, +-1.811347154886509085e-05, +-1.832058475996572753e-05, +-1.852765203711966124e-05, +-1.873467304725931715e-05, +-1.894164745741831033e-05, +-1.914857493473194389e-05, +-1.935545514642870470e-05, +-1.956228775986750917e-05, +-1.976907244248289681e-05, +-1.997580886182258428e-05, +-2.018249668553873078e-05, +-2.038913558138823285e-05, +-2.059572521722455893e-05, +-2.080226526103463259e-05, +-2.100875538088436492e-05, +-2.121519524495586978e-05, +-2.142158452153895614e-05, +-2.162792287902229533e-05, +-2.183420998593091738e-05, +-2.204044551087140806e-05, +-2.224662912256923593e-05, +-2.245276048986019385e-05, +-2.265883928169084292e-05, +-2.286486516710985572e-05, +-2.307083781530538746e-05, +-2.327675689555038811e-05, +-2.348262207723983801e-05, +-2.368843302988219617e-05, +-2.389418942309988142e-05, +-2.409989092662069365e-05, +-2.430553721032409231e-05, +-2.451112794414082302e-05, +-2.471666279818204937e-05, +-2.492214144263878650e-05, +-2.512756354781915688e-05, +-2.533292878417653900e-05, +-2.553823682226405455e-05, +-2.574348733272611167e-05, +-2.594867998638139382e-05, +-2.615381445413155980e-05, +-2.635889040699870975e-05, +-2.656390751616227844e-05, +-2.676886545285896350e-05, +-2.697376388851158277e-05, +-2.717860249462859931e-05, +-2.738338094284132644e-05, +-2.758809890493210006e-05, +-2.779275605278888449e-05, +-2.799735205839675803e-05, +-2.820188659392056652e-05, +-2.840635933161410440e-05, +-2.861076994385752649e-05, +-2.881511810319379072e-05, +-2.901940348223826620e-05, +-2.922362575376134599e-05, +-2.942778459067995307e-05, +-2.963187966601215633e-05, +-2.983591065290524462e-05, +-3.003987722467287082e-05, +-3.024377905469482415e-05, +-3.044761581654572159e-05, +-3.065138718389491225e-05, +-3.085509283054347924e-05, +-3.105873243046143448e-05, +-3.126230565769687960e-05, +-3.146581218645847297e-05, +-3.166925169110718308e-05, +-3.187262384611118566e-05, +-3.207592832607313141e-05, +-3.227916480576796429e-05, +-3.248233296004258541e-05, +-3.268543246394424288e-05, +-3.288846299262069715e-05, +-3.309142422136640799e-05, +-3.329431582561377954e-05, +-3.349713748093377703e-05, +-3.369988886302740215e-05, +-3.390256964776247465e-05, +-3.410517951111970006e-05, +-3.430771812922932251e-05, +-3.451018517836284411e-05, +-3.471258033493343151e-05, +-3.491490327548737787e-05, +-3.511715367674060655e-05, +-3.531933121552544355e-05, +-3.552143556882659951e-05, +-3.572346641377321431e-05, +-3.592542342763002769e-05, +-3.612730628783425560e-05, +-3.632911467194174603e-05, +-3.653084825766358441e-05, +-3.673250672285756905e-05, +-3.693408974552894974e-05, +-3.713559700382174740e-05, +-3.733702817605546103e-05, +-3.753838294067097966e-05, +-3.773966097626814989e-05, +-3.794086196159603163e-05, +-3.814198557555468708e-05, +-3.834303149718546350e-05, +-3.854399940570866931e-05, +-3.874488898046898444e-05, +-3.894569990097298732e-05, +-3.914643184687973586e-05, +-3.934708449799301542e-05, +-3.954765753429751726e-05, +-3.974815063590513665e-05, +-3.994856348309210682e-05, +-4.014889575628979678e-05, +-4.034914713608579549e-05, +-4.054931730321494017e-05, +-4.074940593859614519e-05, +-4.094941272327888999e-05, +-4.114933733847963470e-05, +-4.134917946557324815e-05, +-4.154893878608478829e-05, +-4.174861498172559255e-05, +-4.194820773434903562e-05, +-4.214771672594242504e-05, +-4.234714163870757775e-05, +-4.254648215497218656e-05, +-4.274573795722589020e-05, +-4.294490872814773753e-05, +-4.314399415056191143e-05, +-4.334299390742934652e-05, +-4.354190768192873269e-05, +-4.374073515736752915e-05, +-4.393947601721821746e-05, +-4.413812994515459517e-05, +-4.433669662495389954e-05, +-4.453517574062275787e-05, +-4.473356697629861324e-05, +-4.493187001628713625e-05, +-4.513008454508823231e-05, +-4.532821024735299206e-05, +-4.552624680787457727e-05, +-4.572419391166916334e-05, +-4.592205124388756322e-05, +-4.611981848985079608e-05, +-4.631749533508695691e-05, +-4.651508146523331986e-05, +-4.671257656616123835e-05, +-4.690998032387925121e-05, +-4.710729242457786710e-05, +-4.730451255461233918e-05, +-4.750164040054698190e-05, +-4.769867564905912421e-05, +-4.789561798706298650e-05, +-4.809246710161285449e-05, +-4.828922267993921032e-05, +-4.848588440948418596e-05, +-4.868245197781391898e-05, +-4.887892507269877678e-05, +-4.907530338210475747e-05, +-4.927158659414965426e-05, +-4.946777439713945750e-05, +-4.966386647955918645e-05, +-4.985986253006555055e-05, +-5.005576223752168457e-05, +-5.025156529094538469e-05, +-5.044727137954507697e-05, +-5.064288019271060158e-05, +-5.083839142001465617e-05, +-5.103380475120389861e-05, +-5.122911987623475960e-05, +-5.142433648522118405e-05, +-5.161945426847058599e-05, +-5.181447291647483611e-05, +-5.200939211991156282e-05, +-5.220421156963524824e-05, +-5.239893095671312883e-05, +-5.259354997237322146e-05, +-5.278806830803901785e-05, +-5.298248565532258641e-05, +-5.317680170601507859e-05, +-5.337101615212257541e-05, +-5.356512868581462844e-05, +-5.375913899945928637e-05, +-5.395304678561425193e-05, +-5.414685173702852856e-05, +-5.434055354663363158e-05, +-5.453415190757859437e-05, +-5.472764651317867882e-05, +-5.492103705695040866e-05, +-5.511432323260395964e-05, +-5.530750473404240743e-05, +-5.550058125535485646e-05, +-5.569355249085078879e-05, +-5.588641813500879493e-05, +-5.607917788251160033e-05, +-5.627183142823809648e-05, +-5.646437846725527041e-05, +-5.665681869485270262e-05, +-5.684915180649169092e-05, +-5.704137749784023625e-05, +-5.723349546476449784e-05, +-5.742550540332993158e-05, +-5.761740700979247416e-05, +-5.780919998063413197e-05, +-5.800088401251109524e-05, +-5.819245880228945576e-05, +-5.838392404703602500e-05, +-5.857527944401136138e-05, +-5.876652469070380740e-05, +-5.895765948478721936e-05, +-5.914868352411314071e-05, +-5.933959650678818703e-05, +-5.953039813108909200e-05, +-5.972108809549673099e-05, +-5.991166609872319908e-05, +-6.010213183966912730e-05, +-6.029248501741519200e-05, +-6.048272533130031296e-05, +-6.067285248083585907e-05, +-6.086286616574129152e-05, +-6.105276608597754362e-05, +-6.124255194165463328e-05, +-6.143222343315110818e-05, +-6.162178026102080439e-05, +-6.181122212602724265e-05, +-6.200054872917005588e-05, +-6.218975977164275940e-05, +-6.237885495482430780e-05, +-6.256783398035641204e-05, +-6.275669655005914791e-05, +-6.294544236596533876e-05, +-6.313407113035465366e-05, +-6.332258254566112499e-05, +-6.351097631459223444e-05, +-6.369925214003606471e-05, +-6.388740972510419320e-05, +-6.407544877311525282e-05, +-6.426336898763752761e-05, +-6.445117007239647023e-05, +-6.463885173139403203e-05, +-6.482641366881510990e-05, +-6.501385558906266091e-05, +-6.520117719679169202e-05, +-6.538837819682531574e-05, +-6.557545829423124060e-05, +-6.576241719431324658e-05, +-6.594925460257044624e-05, +-6.613597022473056974e-05, +-6.632256376674295815e-05, +-6.650903493476932062e-05, +-6.669538343521922851e-05, +-6.688160897469871058e-05, +-6.706771126003729033e-05, +-6.725368999832137941e-05, +-6.743954489681029262e-05, +-6.762527566301330755e-05, +-6.781088200468123495e-05, +-6.799636362976440587e-05, +-6.818172024644761006e-05, +-6.836695156314157148e-05, +-6.855205728848350391e-05, +-6.873703713132937247e-05, +-6.892189080078759875e-05, +-6.910661800616933661e-05, +-6.929121845702290912e-05, +-6.947569186312494522e-05, +-6.966003793447331888e-05, +-6.984425638132025788e-05, +-7.002834691412375802e-05, +-7.021230924358047511e-05, +-7.039614308061790515e-05, +-7.057984813639568537e-05, +-7.076342412229650052e-05, +-7.094687074996070951e-05, +-7.113018773123708205e-05, +-7.131337477821516203e-05, +-7.149643160321861324e-05, +-7.167935791879733180e-05, +-7.186215343776074477e-05, +-7.204481787312830266e-05, +-7.222735093816349638e-05, +-7.240975234636576633e-05, +-7.259202181147105806e-05, +-7.277415904744416507e-05, +-7.295616376851168862e-05, +-7.313803568912197639e-05, +-7.331977452393655733e-05, +-7.350137998790520907e-05, +-7.368285179618416845e-05, +-7.386418966416926745e-05, +-7.404539330752043613e-05, +-7.422646244211413328e-05, +-7.440739678407566919e-05, +-7.458819604977211769e-05, +-7.476885995580365607e-05, +-7.494938821903741931e-05, +-7.512978055656728972e-05, +-7.531003668570533172e-05, +-7.549015632405622238e-05, +-7.567013918943646476e-05, +-7.584998499990664291e-05, +-7.602969347379661606e-05, +-7.620926432965751556e-05, +-7.638869728629433869e-05, +-7.656799206275795267e-05, +-7.674714837834632796e-05, +-7.692616595259625764e-05, +-7.710504450532435384e-05, +-7.728378375653868521e-05, +-7.746238342655249623e-05, +-7.764084323589522129e-05, +-7.781916290534587812e-05, +-7.799734215595716417e-05, +-7.817538070901597813e-05, +-7.835327828603546457e-05, +-7.853103460882840088e-05, +-7.870864939942651909e-05, +-7.888612238011358756e-05, +-7.906345327345780155e-05, +-7.924064180222388152e-05, +-7.941768768948592500e-05, +-7.959459065853953204e-05, +-7.977135043293464298e-05, +-7.994796673649907915e-05, +-8.012443929330022991e-05, +-8.030076782763621640e-05, +-8.047695206410925136e-05, +-8.065299172754554372e-05, +-8.082888654302838025e-05, +-8.100463623592933714e-05, +-8.118024053183029863e-05, +-8.135569915659459435e-05, +-8.153101183635949112e-05, +-8.170617829749778516e-05, +-8.188119826664893219e-05, +-8.205607147071205436e-05, +-8.223079763683845925e-05, +-8.240537649246380001e-05, +-8.257980776526070927e-05, +-8.275409118316277358e-05, +-8.292822647439769643e-05, +-8.310221336740699954e-05, +-8.327605159091877281e-05, +-8.344974087394047794e-05, +-8.362328094571852121e-05, +-8.379667153577124040e-05, +-8.396991237388166766e-05, +-8.414300319008870689e-05, +-8.431594371472055419e-05, +-8.448873367834737252e-05, +-8.466137281181267929e-05, +-8.483386084622647526e-05, +-8.500619751296594926e-05, +-8.517838254366702142e-05, +-8.535041567025682856e-05, +-8.552229662490707643e-05, +-8.569402514006588809e-05, +-8.586560094844983510e-05, +-8.603702378304456085e-05, +-8.620829337709860068e-05, +-8.637940946415272308e-05, +-8.655037177799545026e-05, +-8.672118005269364624e-05, +-8.689183402258606587e-05, +-8.706233342227439654e-05, +-8.723267798665671944e-05, +-8.740286745087961487e-05, +-8.757290155037083742e-05, +-8.774278002083121157e-05, +-8.791250259823568875e-05, +-8.808206901882505320e-05, +-8.825147901913842096e-05, +-8.842073233596633454e-05, +-8.858982870638251652e-05, +-8.875876786773664602e-05, +-8.892754955765431806e-05, +-8.909617351403047061e-05, +-8.926463947505933563e-05, +-8.943294717919058310e-05, +-8.960109636515825571e-05, +-8.976908677197552398e-05, +-8.993691813892572804e-05, +-9.010459020559478179e-05, +-9.027210271183250744e-05, +-9.043945539774587289e-05, +-9.060664800376722863e-05, +-9.077368027057985023e-05, +-9.094055193914717106e-05, +-9.110726275073793585e-05, +-9.127381244687879391e-05, +-9.144020076938724534e-05, +-9.160642746036257438e-05, +-9.177249226218727244e-05, +-9.193839491752023470e-05, +-9.210413516933348751e-05, +-9.226971276083109001e-05, +-9.243512743555455928e-05, +-9.260037893729976624e-05, +-9.276546701014818774e-05, +-9.293039139848993234e-05, +-9.309515184698575259e-05, +-9.325974810056078372e-05, +-9.342417990447195392e-05, +-9.358844700423377073e-05, +-9.375254914564836698e-05, +-9.391648607483598038e-05, +-9.408025753815312344e-05, +-9.424386328229701919e-05, +-9.440730305422518048e-05, +-9.457057660118400584e-05, +-9.473368367074050595e-05, +-9.489662401070691089e-05, +-9.505939736920896138e-05, +-9.522200349467819732e-05, +-9.538444213581594882e-05, +-9.554671304161519634e-05, +-9.570881596139111812e-05, +-9.587075064470756774e-05, +-9.603251684144284450e-05, +-9.619411430178471966e-05, +-9.635554277619212346e-05, +-9.651680201542580089e-05, +-9.667789177054103404e-05, +-9.683881179288146210e-05, +-9.699956183410701315e-05, +-9.716014164615251474e-05, +-9.732055098124913395e-05, +-9.748078959195331209e-05, +-9.764085723107463811e-05, +-9.780075365174226956e-05, +-9.796047860739777685e-05, +-9.812003185175874114e-05, +-9.827941313884832599e-05, +-9.843862222298932778e-05, +-9.859765885879566471e-05, +-9.875652280120341211e-05, +-9.891521380542637727e-05, +-9.907373162698621311e-05, +-9.923207602170522183e-05, +-9.939024674570719512e-05, +-9.954824355540925560e-05, +-9.970606620755331220e-05, +-9.986371445916118771e-05, +-1.000211880675645835e-04, +-1.001784867903982625e-04, +-1.003356103856003475e-04, +-1.004925586114051788e-04, +-1.006493312263735364e-04, +-1.008059279893484047e-04, +-1.009623486594851671e-04, +-1.011185929962441394e-04, +-1.012746607593843887e-04, +-1.014305517089919372e-04, +-1.015862656054381555e-04, +-1.017418022094078705e-04, +-1.018971612818929281e-04, +-1.020523425841930878e-04, +-1.022073458779081345e-04, +-1.023621709249681829e-04, +-1.025168174875888720e-04, +-1.026712853283034716e-04, +-1.028255742099540727e-04, +-1.029796838956917098e-04, +-1.031336141489709672e-04, +-1.032873647335776931e-04, +-1.034409354135870554e-04, +-1.035943259533924217e-04, +-1.037475361176986915e-04, +-1.039005656715153981e-04, +-1.040534143801847216e-04, +-1.042060820093486102e-04, +-1.043585683249392398e-04, +-1.045108730932448786e-04, +-1.046629960808391708e-04, +-1.048149370546092572e-04, +-1.049666957817784222e-04, +-1.051182720298622376e-04, +-1.052696655666992588e-04, +-1.054208761604432325e-04, +-1.055719035795560628e-04, +-1.057227475928367862e-04, +-1.058734079693872165e-04, +-1.060238844786045177e-04, +-1.061741768902446295e-04, +-1.063242849743535704e-04, +-1.064742085012949620e-04, +-1.066239472417706836e-04, +-1.067735009667879529e-04, +-1.069228694476519399e-04, +-1.070720524560281084e-04, +-1.072210497638738846e-04, +-1.073698611434668865e-04, +-1.075184863674319207e-04, +-1.076669252086664844e-04, +-1.078151774404370421e-04, +-1.079632428363037417e-04, +-1.081111211701486037e-04, +-1.082588122162019483e-04, +-1.084063157489765578e-04, +-1.085536315433274698e-04, +-1.087007593744468003e-04, +-1.088476990178287513e-04, +-1.089944502492926363e-04, +-1.091410128450065296e-04, +-1.092873865814175519e-04, +-1.094335712353437161e-04, +-1.095795665839011362e-04, +-1.097253724045380583e-04, +-1.098709884750283277e-04, +-1.100164145734714978e-04, +-1.101616504782876527e-04, +-1.103066959682423169e-04, +-1.104515508224083997e-04, +-1.105962148201869850e-04, +-1.107406877413316849e-04, +-1.108849693658862034e-04, +-1.110290594742411349e-04, +-1.111729578471294379e-04, +-1.113166642655925398e-04, +-1.114601785110087433e-04, +-1.116035003650854470e-04, +-1.117466296098534401e-04, +-1.118895660276937631e-04, +-1.120323094012980262e-04, +-1.121748595136890365e-04, +-1.123172161482469133e-04, +-1.124593790886444021e-04, +-1.126013481189052046e-04, +-1.127431230233988965e-04, +-1.128847035868078732e-04, +-1.130260895941538987e-04, +-1.131672808307915870e-04, +-1.133082770824105166e-04, +-1.134490781350257026e-04, +-1.135896837750069519e-04, +-1.137300937890388559e-04, +-1.138703079641475567e-04, +-1.140103260876939033e-04, +-1.141501479473683420e-04, +-1.142897733312154602e-04, +-1.144292020275979775e-04, +-1.145684338252205708e-04, +-1.147074685131248463e-04, +-1.148463058806891226e-04, +-1.149849457176237285e-04, +-1.151233878139947464e-04, +-1.152616319601876374e-04, +-1.153996779469324631e-04, +-1.155375255652981250e-04, +-1.156751746066858599e-04, +-1.158126248628551385e-04, +-1.159498761258860030e-04, +-1.160869281882051556e-04, +-1.162237808425792366e-04, +-1.163604338821152580e-04, +-1.164968871002547353e-04, +-1.166331402907991798e-04, +-1.167691932478791988e-04, +-1.169050457659479768e-04, +-1.170406976398390906e-04, +-1.171761486647025281e-04, +-1.173113986360313049e-04, +-1.174464473496803841e-04, +-1.175812946018287561e-04, +-1.177159401890056224e-04, +-1.178503839080841879e-04, +-1.179846255562753867e-04, +-1.181186649311531439e-04, +-1.182525018306239092e-04, +-1.183861360529208295e-04, +-1.185195673966593551e-04, +-1.186527956607760499e-04, +-1.187858206445532703e-04, +-1.189186421476381934e-04, +-1.190512599700065095e-04, +-1.191836739119864506e-04, +-1.193158837742536681e-04, +-1.194478893578311101e-04, +-1.195796904640841567e-04, +-1.197112868947493238e-04, +-1.198426784518701732e-04, +-1.199738649378805392e-04, +-1.201048461555401128e-04, +-1.202356219079560177e-04, +-1.203661919986111212e-04, +-1.204965562313007715e-04, +-1.206267144101883762e-04, +-1.207566663398002932e-04, +-1.208864118249954728e-04, +-1.210159506709840386e-04, +-1.211452826833507465e-04, +-1.212744076679914238e-04, +-1.214033254311936333e-04, +-1.215320357795746982e-04, +-1.216605385201103515e-04, +-1.217888334601276488e-04, +-1.219169204073082877e-04, +-1.220447991696810465e-04, +-1.221724695556449447e-04, +-1.222999313739360668e-04, +-1.224271844336450991e-04, +-1.225542285442392579e-04, +-1.226810635155066291e-04, +-1.228076891576071255e-04, +-1.229341052810681506e-04, +-1.230603116967546470e-04, +-1.231863082158941142e-04, +-1.233120946500681527e-04, +-1.234376708112114329e-04, +-1.235630365116314284e-04, +-1.236881915639749681e-04, +-1.238131357812472910e-04, +-1.239378689768326188e-04, +-1.240623909644396751e-04, +-1.241867015581522903e-04, +-1.243108005724234656e-04, +-1.244346878220481325e-04, +-1.245583631221858667e-04, +-1.246818262883552235e-04, +-1.248050771364342252e-04, +-1.249281154826552384e-04, +-1.250509411436268752e-04, +-1.251735539363018734e-04, +-1.252959536779981841e-04, +-1.254181401863951775e-04, +-1.255401132795276251e-04, +-1.256618727758086577e-04, +-1.257834184939955594e-04, +-1.259047502532135922e-04, +-1.260258678729493556e-04, +-1.261467711730529821e-04, +-1.262674599737307105e-04, +-1.263879340955691448e-04, +-1.265081933595006681e-04, +-1.266282375868270241e-04, +-1.267480665992141130e-04, +-1.268676802186849168e-04, +-1.269870782676446803e-04, +-1.271062605688458638e-04, +-1.272252269454113456e-04, +-1.273439772208281601e-04, +-1.274625112189503985e-04, +-1.275808287639909144e-04, +-1.276989296805446615e-04, +-1.278168137935624014e-04, +-1.279344809283440630e-04, +-1.280519309105896460e-04, +-1.281691635663434112e-04, +-1.282861787220170556e-04, +-1.284029762044060566e-04, +-1.285195558406564955e-04, +-1.286359174582885035e-04, +-1.287520608851898374e-04, +-1.288679859496110283e-04, +-1.289836924801875530e-04, +-1.290991803059131631e-04, +-1.292144492561340843e-04, +-1.293294991605982392e-04, +-1.294443298494023383e-04, +-1.295589411530112599e-04, +-1.296733329022828243e-04, +-1.297875049284076207e-04, +-1.299014570629834645e-04, +-1.300151891379577179e-04, +-1.301287009856548829e-04, +-1.302419924387645124e-04, +-1.303550633303696431e-04, +-1.304679134938875173e-04, +-1.305805427631442027e-04, +-1.306929509723174824e-04, +-1.308051379559574813e-04, +-1.309171035490081609e-04, +-1.310288475867543831e-04, +-1.311403699048705905e-04, +-1.312516703394145455e-04, +-1.313627487268026375e-04, +-1.314736049038251430e-04, +-1.315842387076659851e-04, +-1.316946499758496621e-04, +-1.318048385463094707e-04, +-1.319148042573333498e-04, +-1.320245469475846438e-04, +-1.321340664561224847e-04, +-1.322433626223508082e-04, +-1.323524352860642962e-04, +-1.324612842874453415e-04, +-1.325699094670348553e-04, +-1.326783106657521084e-04, +-1.327864877249128643e-04, +-1.328944404861798310e-04, +-1.330021687916068697e-04, +-1.331096724836362572e-04, +-1.332169514050725832e-04, +-1.333240053991041640e-04, +-1.334308343092955880e-04, +-1.335374379795864421e-04, +-1.336438162543087402e-04, +-1.337499689781584901e-04, +-1.338558959962113327e-04, +-1.339615971539408386e-04, +-1.340670722971714257e-04, +-1.341723212721216470e-04, +-1.342773439253989857e-04, +-1.343821401039770871e-04, +-1.344867096552147324e-04, +-1.345910524268509052e-04, +-1.346951682669999672e-04, +-1.347990570241734503e-04, +-1.349027185472483168e-04, +-1.350061526854868816e-04, +-1.351093592885355653e-04, +-1.352123382064200966e-04, +-1.353150892895445094e-04, +-1.354176123887098997e-04, +-1.355199073550845013e-04, +-1.356219740402248280e-04, +-1.357238122960699271e-04, +-1.358254219749411087e-04, +-1.359268029295401293e-04, +-1.360279550129644521e-04, +-1.361288780786826626e-04, +-1.362295719805507320e-04, +-1.363300365728096586e-04, +-1.364302717100797759e-04, +-1.365302772473798347e-04, +-1.366300530400999251e-04, +-1.367295989440184983e-04, +-1.368289148153005778e-04, +-1.369280005104958349e-04, +-1.370268558865349296e-04, +-1.371254808007485654e-04, +-1.372238751108385954e-04, +-1.373220386748991639e-04, +-1.374199713514089277e-04, +-1.375176729992347692e-04, +-1.376151434776247493e-04, +-1.377123826462283546e-04, +-1.378093903650681458e-04, +-1.379061664945579178e-04, +-1.380027108955004503e-04, +-1.380990234290809752e-04, +-1.381951039568861503e-04, +-1.382909523408818603e-04, +-1.383865684434090965e-04, +-1.384819521272239102e-04, +-1.385771032554536646e-04, +-1.386720216916140301e-04, +-1.387667072996281472e-04, +-1.388611599437770516e-04, +-1.389553794887624495e-04, +-1.390493657996578743e-04, +-1.391431187419273617e-04, +-1.392366381814371594e-04, +-1.393299239844359675e-04, +-1.394229760175484060e-04, +-1.395157941478182475e-04, +-1.396083782426602515e-04, +-1.397007281698818754e-04, +-1.397928437976976677e-04, +-1.398847249946892602e-04, +-1.399763716298410121e-04, +-1.400677835725388707e-04, +-1.401589606925472242e-04, +-1.402499028600231047e-04, +-1.403406099455321800e-04, +-1.404310818200031087e-04, +-1.405213183547871175e-04, +-1.406113194216110276e-04, +-1.407010848925943853e-04, +-1.407906146402674327e-04, +-1.408799085375284446e-04, +-1.409689664576806720e-04, +-1.410577882744309334e-04, +-1.411463738618665750e-04, +-1.412347230944689691e-04, +-1.413228358471311054e-04, +-1.414107119951096695e-04, +-1.414983514140872212e-04, +-1.415857539801224573e-04, +-1.416729195696736574e-04, +-1.417598480595948891e-04, +-1.418465393271348693e-04, +-1.419329932499338207e-04, +-1.420192097060396529e-04, +-1.421051885738835953e-04, +-1.421909297322974356e-04, +-1.422764330605085057e-04, +-1.423616984381406844e-04, +-1.424467257452100336e-04, +-1.425315148621415491e-04, +-1.426160656697446035e-04, +-1.427003780492293447e-04, +-1.427844518822039583e-04, +-1.428682870506681082e-04, +-1.429518834370325879e-04, +-1.430352409240924049e-04, +-1.431183593950458900e-04, +-1.432012387334870805e-04, +-1.432838788234100033e-04, +-1.433662795492014373e-04, +-1.434484407956593721e-04, +-1.435303624479680176e-04, +-1.436120443917137410e-04, +-1.436934865128826821e-04, +-1.437746886978593709e-04, +-1.438556508334236372e-04, +-1.439363728067657902e-04, +-1.440168545054652588e-04, +-1.440970958175027353e-04, +-1.441770966312605007e-04, +-1.442568568355160545e-04, +-1.443363763194592455e-04, +-1.444156549726670639e-04, +-1.444946926851219918e-04, +-1.445734893472065273e-04, +-1.446520448497034834e-04, +-1.447303590837932497e-04, +-1.448084319410676980e-04, +-1.448862633135090125e-04, +-1.449638530935044357e-04, +-1.450412011738418225e-04, +-1.451183074477112127e-04, +-1.451951718087005213e-04, +-1.452717941508132921e-04, +-1.453481743684302899e-04, +-1.454243123563593197e-04, +-1.455002080097966561e-04, +-1.455758612243399455e-04, +-1.456512718960002132e-04, +-1.457264399211841100e-04, +-1.458013651966903886e-04, +-1.458760476197422124e-04, +-1.459504870879506995e-04, +-1.460246834993314839e-04, +-1.460986367523158013e-04, +-1.461723467457160116e-04, +-1.462458133787699157e-04, +-1.463190365511070096e-04, +-1.463920161627597059e-04, +-1.464647521141748264e-04, +-1.465372443061968783e-04, +-1.466094926400631209e-04, +-1.466814970174372575e-04, +-1.467532573403724366e-04, +-1.468247735113268650e-04, +-1.468960454331772782e-04, +-1.469670730091846532e-04, +-1.470378561430247828e-04, +-1.471083947387860798e-04, +-1.471786887009515256e-04, +-1.472487379344091321e-04, +-1.473185423444667687e-04, +-1.473881018368134832e-04, +-1.474574163175676131e-04, +-1.475264856932400313e-04, +-1.475953098707487288e-04, +-1.476638887574285451e-04, +-1.477322222610029791e-04, +-1.478003102896106435e-04, +-1.478681527518026088e-04, +-1.479357495565283083e-04, +-1.480031006131421792e-04, +-1.480702058314196001e-04, +-1.481370651215191880e-04, +-1.482036783940300423e-04, +-1.482700455599348006e-04, +-1.483361665306264442e-04, +-1.484020412179062919e-04, +-1.484676695339818859e-04, +-1.485330513914660702e-04, +-1.485981867033885648e-04, +-1.486630753831766664e-04, +-1.487277173446704818e-04, +-1.487921125021158533e-04, +-1.488562607701683974e-04, +-1.489201620638881381e-04, +-1.489838162987526797e-04, +-1.490472233906392908e-04, +-1.491103832558364776e-04, +-1.491732958110407860e-04, +-1.492359609733558525e-04, +-1.492983786603018642e-04, +-1.493605487897995397e-04, +-1.494224712801815399e-04, +-1.494841460501895143e-04, +-1.495455730189749945e-04, +-1.496067521060951940e-04, +-1.496676832315252587e-04, +-1.497283663156426009e-04, +-1.497888012792356809e-04, +-1.498489880435028958e-04, +-1.499089265300527422e-04, +-1.499686166609011601e-04, +-1.500280583584824828e-04, +-1.500872515456319275e-04, +-1.501461961455984701e-04, +-1.502048920820412130e-04, +-1.502633392790267018e-04, +-1.503215376610405533e-04, +-1.503794871529702439e-04, +-1.504371876801169003e-04, +-1.504946391681926971e-04, +-1.505518415433200713e-04, +-1.506087947320301497e-04, +-1.506654986612727238e-04, +-1.507219532584009084e-04, +-1.507781584511817938e-04, +-1.508341141677935454e-04, +-1.508898203368228019e-04, +-1.509452768872762761e-04, +-1.510004837485661453e-04, +-1.510554408505084521e-04, +-1.511101481233471737e-04, +-1.511646054977269814e-04, +-1.512188129047048956e-04, +-1.512727702757579295e-04, +-1.513264775427685879e-04, +-1.513799346380246505e-04, +-1.514331414942414792e-04, +-1.514860980445365121e-04, +-1.515388042224394282e-04, +-1.515912599619019595e-04, +-1.516434651972714358e-04, +-1.516954198633240706e-04, +-1.517471238952407828e-04, +-1.517985772286131057e-04, +-1.518497797994532974e-04, +-1.519007315441827126e-04, +-1.519514323996261644e-04, +-1.520018823030386507e-04, +-1.520520811920758359e-04, +-1.521020290048081191e-04, +-1.521517256797290634e-04, +-1.522011711557268545e-04, +-1.522503653721211090e-04, +-1.522993082686357970e-04, +-1.523479997854091620e-04, +-1.523964398629914715e-04, +-1.524446284423562115e-04, +-1.524925654648731708e-04, +-1.525402508723438133e-04, +-1.525876846069720318e-04, +-1.526348666113765075e-04, +-1.526817968286000346e-04, +-1.527284752020838785e-04, +-1.527749016756912493e-04, +-1.528210761937029644e-04, +-1.528669987008088836e-04, +-1.529126691421131134e-04, +-1.529580874631361208e-04, +-1.530032536098091772e-04, +-1.530481675284843870e-04, +-1.530928291659225447e-04, +-1.531372384692986370e-04, +-1.531813953862100016e-04, +-1.532252998646570013e-04, +-1.532689518530594495e-04, +-1.533123513002578573e-04, +-1.533554981554998808e-04, +-1.533983923684499704e-04, +-1.534410338891884764e-04, +-1.534834226682090473e-04, +-1.535255586564200387e-04, +-1.535674418051493110e-04, +-1.536090720661344720e-04, +-1.536504493915298965e-04, +-1.536915737339054260e-04, +-1.537324450462432236e-04, +-1.537730632819479392e-04, +-1.538134283948321536e-04, +-1.538535403391262722e-04, +-1.538933990694765460e-04, +-1.539330045409433641e-04, +-1.539723567090016333e-04, +-1.540114555295477982e-04, +-1.540503009588861259e-04, +-1.540888929537405241e-04, +-1.541272314712488760e-04, +-1.541653164689633384e-04, +-1.542031479048575787e-04, +-1.542407257373148218e-04, +-1.542780499251367675e-04, +-1.543151204275401754e-04, +-1.543519372041566749e-04, +-1.543885002150334159e-04, +-1.544248094206383001e-04, +-1.544608647818494914e-04, +-1.544966662599625985e-04, +-1.545322138166899161e-04, +-1.545675074141590155e-04, +-1.546025470149121753e-04, +-1.546373325819123447e-04, +-1.546718640785342525e-04, +-1.547061414685693952e-04, +-1.547401647162256842e-04, +-1.547739337861255211e-04, +-1.548074486433131166e-04, +-1.548407092532443259e-04, +-1.548737155817872177e-04, +-1.549064675952355728e-04, +-1.549389652602921059e-04, +-1.549712085440776272e-04, +-1.550031974141324518e-04, +-1.550349318384083765e-04, +-1.550664117852772455e-04, +-1.550976372235238481e-04, +-1.551286081223518282e-04, +-1.551593244513793201e-04, +-1.551897861806461588e-04, +-1.552199932805983481e-04, +-1.552499457221094472e-04, +-1.552796434764619764e-04, +-1.553090865153568224e-04, +-1.553382748109144039e-04, +-1.553672083356691153e-04, +-1.553958870625671848e-04, +-1.554243109649807429e-04, +-1.554524800166917208e-04, +-1.554803941918990343e-04, +-1.555080534652247088e-04, +-1.555354578116957738e-04, +-1.555626072067661087e-04, +-1.555895016263016443e-04, +-1.556161410465851328e-04, +-1.556425254443143862e-04, +-1.556686547966107869e-04, +-1.556945290810003691e-04, +-1.557201482754379143e-04, +-1.557455123582872467e-04, +-1.557706213083293371e-04, +-1.557954751047678596e-04, +-1.558200737272145281e-04, +-1.558444171557015097e-04, +-1.558685053706804224e-04, +-1.558923383530152335e-04, +-1.559159160839878157e-04, +-1.559392385452974599e-04, +-1.559623057190580558e-04, +-1.559851175878031876e-04, +-1.560076741344804422e-04, +-1.560299753424538216e-04, +-1.560520211955079709e-04, +-1.560738116778380413e-04, +-1.560953467740581200e-04, +-1.561166264692013649e-04, +-1.561376507487148286e-04, +-1.561584195984628729e-04, +-1.561789330047260306e-04, +-1.561991909542011410e-04, +-1.562191934340014584e-04, +-1.562389404316590102e-04, +-1.562584319351192842e-04, +-1.562776679327457284e-04, +-1.562966484133179615e-04, +-1.563153733660299573e-04, +-1.563338427804978508e-04, +-1.563520566467480662e-04, +-1.563700149552264243e-04, +-1.563877176967944831e-04, +-1.564051648627298632e-04, +-1.564223564447256244e-04, +-1.564392924348943857e-04, +-1.564559728257623890e-04, +-1.564723976102725626e-04, +-1.564885667817840324e-04, +-1.565044803340714995e-04, +-1.565201382613284377e-04, +-1.565355405581625946e-04, +-1.565506872195968047e-04, +-1.565655782410716726e-04, +-1.565802136184446514e-04, +-1.565945933479860586e-04, +-1.566087174263863942e-04, +-1.566225858507501066e-04, +-1.566361986185954840e-04, +-1.566495557278609974e-04, +-1.566626571768980902e-04, +-1.566755029644747836e-04, +-1.566880930897763809e-04, +-1.567004275524026217e-04, +-1.567125063523689289e-04, +-1.567243294901070588e-04, +-1.567358969664636649e-04, +-1.567472087827030084e-04, +-1.567582649405041659e-04, +-1.567690654419593766e-04, +-1.567796102895804660e-04, +-1.567898994862933161e-04, +-1.567999330354365379e-04, +-1.568097109407697108e-04, +-1.568192332064637605e-04, +-1.568284998371060007e-04, +-1.568375108376997263e-04, +-1.568462662136621262e-04, +-1.568547659708274008e-04, +-1.568630101154455420e-04, +-1.568709986541782402e-04, +-1.568787315941061488e-04, +-1.568862089427226227e-04, +-1.568934307079376486e-04, +-1.569003968980757849e-04, +-1.569071075218766498e-04, +-1.569135625884928071e-04, +-1.569197621074954580e-04, +-1.569257060888675566e-04, +-1.569313945430081739e-04, +-1.569368274807312778e-04, +-1.569420049132643782e-04, +-1.569469268522513184e-04, +-1.569515933097491856e-04, +-1.569560042982299369e-04, +-1.569601598305806704e-04, +-1.569640599201019174e-04, +-1.569677045805087541e-04, +-1.569710938259317773e-04, +-1.569742276709140683e-04, +-1.569771061304144999e-04, +-1.569797292198056495e-04, +-1.569820969548728774e-04, +-1.569842093518173352e-04, +-1.569860664272537166e-04, +-1.569876681982107719e-04, +-1.569890146821295736e-04, +-1.569901058968673109e-04, +-1.569909418606932512e-04, +-1.569915225922911524e-04, +-1.569918481107580161e-04, +-1.569919184356041416e-04, +-1.569917335867547796e-04, +-1.569912935845466085e-04, +-1.569905984497310138e-04, +-1.569896482034717304e-04, +-1.569884428673469295e-04, +-1.569869824633466433e-04, +-1.569852670138750426e-04, +-1.569832965417485384e-04, +-1.569810710701967046e-04, +-1.569785906228625210e-04, +-1.569758552238014523e-04, +-1.569728648974816375e-04, +-1.569696196687829417e-04, +-1.569661195629996387e-04, +-1.569623646058377557e-04, +-1.569583548234151265e-04, +-1.569540902422624493e-04, +-1.569495708893232054e-04, +-1.569447967919528726e-04, +-1.569397679779181666e-04, +-1.569344844753986674e-04, +-1.569289463129856809e-04, +-1.569231535196832956e-04, +-1.569171061249058894e-04, +-1.569108041584808670e-04, +-1.569042476506466810e-04, +-1.568974366320533475e-04, +-1.568903711337630148e-04, +-1.568830511872481746e-04, +-1.568754768243933696e-04, +-1.568676480774952478e-04, +-1.568595649792592285e-04, +-1.568512275628048693e-04, +-1.568426358616591978e-04, +-1.568337899097638135e-04, +-1.568246897414684639e-04, +-1.568153353915350287e-04, +-1.568057268951353518e-04, +-1.567958642878516744e-04, +-1.567857476056776656e-04, +-1.567753768850169041e-04, +-1.567647521626830951e-04, +-1.567538734758992846e-04, +-1.567427408623001898e-04, +-1.567313543599301127e-04, +-1.567197140072429395e-04, +-1.567078198431019244e-04, +-1.566956719067810169e-04, +-1.566832702379634262e-04, +-1.566706148767412952e-04, +-1.566577058636170559e-04, +-1.566445432395025352e-04, +-1.566311270457177351e-04, +-1.566174573239925672e-04, +-1.566035341164656602e-04, +-1.565893574656853087e-04, +-1.565749274146084158e-04, +-1.565602440065990840e-04, +-1.565453072854327079e-04, +-1.565301172952900653e-04, +-1.565146740807632259e-04, +-1.564989776868520551e-04, +-1.564830281589626147e-04, +-1.564668255429112014e-04, +-1.564503698849212569e-04, +-1.564336612316234493e-04, +-1.564166996300583022e-04, +-1.563994851276715868e-04, +-1.563820177723187403e-04, +-1.563642976122610166e-04, +-1.563463246961673838e-04, +-1.563280990731150935e-04, +-1.563096207925877292e-04, +-1.562908899044755315e-04, +-1.562719064590760215e-04, +-1.562526705070943261e-04, +-1.562331820996393564e-04, +-1.562134412882318303e-04, +-1.561934481247927262e-04, +-1.561732026616541519e-04, +-1.561527049515513217e-04, +-1.561319550476279229e-04, +-1.561109530034323755e-04, +-1.560896988729194314e-04, +-1.560681927104481416e-04, +-1.560464345707841870e-04, +-1.560244245091007458e-04, +-1.560021625809712839e-04, +-1.559796488423806132e-04, +-1.559568833497148362e-04, +-1.559338661597653301e-04, +-1.559105973297292616e-04, +-1.558870769172081511e-04, +-1.558633049802083054e-04, +-1.558392815771410353e-04, +-1.558150067668204327e-04, +-1.557904806084663249e-04, +-1.557657031617018626e-04, +-1.557406744865552813e-04, +-1.557153946434572996e-04, +-1.556898636932439652e-04, +-1.556640816971518841e-04, +-1.556380487168243195e-04, +-1.556117648143063941e-04, +-1.555852300520471230e-04, +-1.555584444928982213e-04, +-1.555314082001149980e-04, +-1.555041212373533481e-04, +-1.554765836686741157e-04, +-1.554487955585394355e-04, +-1.554207569718153346e-04, +-1.553924679737691574e-04, +-1.553639286300690509e-04, +-1.553351390067869188e-04, +-1.553060991703958198e-04, +-1.552768091877715123e-04, +-1.552472691261894730e-04, +-1.552174790533292334e-04, +-1.551874390372675228e-04, +-1.551571491464859385e-04, +-1.551266094498657689e-04, +-1.550958200166891864e-04, +-1.550647809166387861e-04, +-1.550334922197994293e-04, +-1.550019539966524700e-04, +-1.549701663180829650e-04, +-1.549381292553755538e-04, +-1.549058428802143499e-04, +-1.548733072646842426e-04, +-1.548405224812668033e-04, +-1.548074886028449752e-04, +-1.547742057027052956e-04, +-1.547406738545255636e-04, +-1.547068931323884462e-04, +-1.546728636107746210e-04, +-1.546385853645602828e-04, +-1.546040584690240550e-04, +-1.545692829998410807e-04, +-1.545342590330859775e-04, +-1.544989866452321054e-04, +-1.544634659131462271e-04, +-1.544276969140973173e-04, +-1.543916797257542856e-04, +-1.543554144261770594e-04, +-1.543189010938271542e-04, +-1.542821398075636900e-04, +-1.542451306466385928e-04, +-1.542078736907035613e-04, +-1.541703690198117200e-04, +-1.541326167144038771e-04, +-1.540946168553224561e-04, +-1.540563695238064278e-04, +-1.540178748014861326e-04, +-1.539791327703959661e-04, +-1.539401435129580074e-04, +-1.539009071119934577e-04, +-1.538614236507218809e-04, +-1.538216932127488442e-04, +-1.537817158820869784e-04, +-1.537414917431372484e-04, +-1.537010208806936426e-04, +-1.536603033799480514e-04, +-1.536193393264880446e-04, +-1.535781288062882798e-04, +-1.535366719057292310e-04, +-1.534949687115734723e-04, +-1.534530193109841093e-04, +-1.534108237915161052e-04, +-1.533683822411176635e-04, +-1.533256947481307427e-04, +-1.532827614012914088e-04, +-1.532395822897237637e-04, +-1.531961575029493509e-04, +-1.531524871308833605e-04, +-1.531085712638249256e-04, +-1.530644099924762587e-04, +-1.530200034079269036e-04, +-1.529753516016540060e-04, +-1.529304546655322347e-04, +-1.528853126918247010e-04, +-1.528399257731875393e-04, +-1.527942940026685251e-04, +-1.527484174737010303e-04, +-1.527022962801150279e-04, +-1.526559305161303431e-04, +-1.526093202763506356e-04, +-1.525624656557801780e-04, +-1.525153667498078090e-04, +-1.524680236542086420e-04, +-1.524204364651528731e-04, +-1.523726052791977319e-04, +-1.523245301932904896e-04, +-1.522762113047666430e-04, +-1.522276487113537094e-04, +-1.521788425111606012e-04, +-1.521297928026913685e-04, +-1.520804996848363082e-04, +-1.520309632568733467e-04, +-1.519811836184712110e-04, +-1.519311608696788851e-04, +-1.518808951109405986e-04, +-1.518303864430848497e-04, +-1.517796349673274407e-04, +-1.517286407852704206e-04, +-1.516774039989065583e-04, +-1.516259247106066564e-04, +-1.515742030231353543e-04, +-1.515222390396413698e-04, +-1.514700328636591528e-04, +-1.514175845991106741e-04, +-1.513648943502977006e-04, +-1.513119622219128541e-04, +-1.512587883190328892e-04, +-1.512053727471183138e-04, +-1.511517156120152053e-04, +-1.510978170199564572e-04, +-1.510436770775526450e-04, +-1.509892958918016752e-04, +-1.509346735700935833e-04, +-1.508798102201881720e-04, +-1.508247059502368847e-04, +-1.507693608687765176e-04, +-1.507137750847177809e-04, +-1.506579487073634867e-04, +-1.506018818463946980e-04, +-1.505455746118761228e-04, +-1.504890271142567918e-04, +-1.504322394643610320e-04, +-1.503752117733990923e-04, +-1.503179441529706943e-04, +-1.502604367150423448e-04, +-1.502026895719714059e-04, +-1.501447028364960655e-04, +-1.500864766217285069e-04, +-1.500280110411680824e-04, +-1.499693062086923136e-04, +-1.499103622385591689e-04, +-1.498511792454063584e-04, +-1.497917573442540716e-04, +-1.497320966504919130e-04, +-1.496721972799048140e-04, +-1.496120593486422693e-04, +-1.495516829732394782e-04, +-1.494910682706124391e-04, +-1.494302153580442613e-04, +-1.493691243532124053e-04, +-1.493077953741633131e-04, +-1.492462285393179639e-04, +-1.491844239674807652e-04, +-1.491223817778341047e-04, +-1.490601020899271552e-04, +-1.489975850237041191e-04, +-1.489348306994673645e-04, +-1.488718392379064827e-04, +-1.488086107600841929e-04, +-1.487451453874395681e-04, +-1.486814432417867882e-04, +-1.486175044453187991e-04, +-1.485533291205956303e-04, +-1.484889173905603872e-04, +-1.484242693785307941e-04, +-1.483593852081878915e-04, +-1.482942650036053094e-04, +-1.482289088892196959e-04, +-1.481633169898385232e-04, +-1.480974894306501439e-04, +-1.480314263372128675e-04, +-1.479651278354597848e-04, +-1.478985940516987956e-04, +-1.478318251126024710e-04, +-1.477648211452234491e-04, +-1.476975822769872795e-04, +-1.476301086356803069e-04, +-1.475624003494774815e-04, +-1.474944575469167983e-04, +-1.474262803569013848e-04, +-1.473578689087150857e-04, +-1.472892233320082607e-04, +-1.472203437568030148e-04, +-1.471512303134909496e-04, +-1.470818831328372554e-04, +-1.470123023459682431e-04, +-1.469424880843877700e-04, +-1.468724404799671296e-04, +-1.468021596649467860e-04, +-1.467316457719373773e-04, +-1.466608989339113125e-04, +-1.465899192842175713e-04, +-1.465187069565694795e-04, +-1.464472620850495337e-04, +-1.463755848041069078e-04, +-1.463036752485619792e-04, +-1.462315335535924784e-04, +-1.461591598547524085e-04, +-1.460865542879594408e-04, +-1.460137169894976800e-04, +-1.459406480960205642e-04, +-1.458673477445380986e-04, +-1.457938160724344193e-04, +-1.457200532174570599e-04, +-1.456460593177183341e-04, +-1.455718345116954434e-04, +-1.454973789382332425e-04, +-1.454226927365317437e-04, +-1.453477760461641686e-04, +-1.452726290070648595e-04, +-1.451972517595314478e-04, +-1.451216444442253418e-04, +-1.450458072021734073e-04, +-1.449697401747569627e-04, +-1.448934435037281781e-04, +-1.448169173311996121e-04, +-1.447401617996456758e-04, +-1.446631770519038798e-04, +-1.445859632311667295e-04, +-1.445085204809925942e-04, +-1.444308489453098815e-04, +-1.443529487683903659e-04, +-1.442748200948775947e-04, +-1.441964630697763715e-04, +-1.441178778384379295e-04, +-1.440390645465957102e-04, +-1.439600233403211282e-04, +-1.438807543660559885e-04, +-1.438012577705990427e-04, +-1.437215337011101359e-04, +-1.436415823050953260e-04, +-1.435614037304410633e-04, +-1.434809981253683286e-04, +-1.434003656384695233e-04, +-1.433195064186942392e-04, +-1.432384206153354349e-04, +-1.431571083780625855e-04, +-1.430755698568925713e-04, +-1.429938052021913588e-04, +-1.429118145646907784e-04, +-1.428295980954784143e-04, +-1.427471559459829952e-04, +-1.426644882680135605e-04, +-1.425815952137087200e-04, +-1.424984769355764171e-04, +-1.424151335864787227e-04, +-1.423315653196170630e-04, +-1.422477722885678354e-04, +-1.421637546472514005e-04, +-1.420795125499327597e-04, +-1.419950461512412606e-04, +-1.419103556061587247e-04, +-1.418254410700054075e-04, +-1.417403026984739877e-04, +-1.416549406475992642e-04, +-1.415693550737598090e-04, +-1.414835461336969957e-04, +-1.413975139844978954e-04, +-1.413112587836018637e-04, +-1.412247806888014621e-04, +-1.411380798582285805e-04, +-1.410511564503757955e-04, +-1.409640106240853390e-04, +-1.408766425385339735e-04, +-1.407890523532688250e-04, +-1.407012402281757784e-04, +-1.406132063234807785e-04, +-1.405249507997694274e-04, +-1.404364738179712628e-04, +-1.403477755393626591e-04, +-1.402588561255727626e-04, +-1.401697157385640579e-04, +-1.400803545406588218e-04, +-1.399907726945207194e-04, +-1.399009703631599270e-04, +-1.398109477099324538e-04, +-1.397207048985436395e-04, +-1.396302420930320800e-04, +-1.395395594577932366e-04, +-1.394486571575629286e-04, +-1.393575353574209386e-04, +-1.392661942227921236e-04, +-1.391746339194480412e-04, +-1.390828546134925843e-04, +-1.389908564713839088e-04, +-1.388986396599185770e-04, +-1.388062043462371146e-04, +-1.387135506978249861e-04, +-1.386206788824980666e-04, +-1.385275890684257083e-04, +-1.384342814241149380e-04, +-1.383407561184134662e-04, +-1.382470133205088733e-04, +-1.381530531999353053e-04, +-1.380588759265527921e-04, +-1.379644816705739190e-04, +-1.378698706025469403e-04, +-1.377750428933595471e-04, +-1.376799987142381077e-04, +-1.375847382367511923e-04, +-1.374892616327937154e-04, +-1.373935690746107892e-04, +-1.372976607347812432e-04, +-1.372015367862209853e-04, +-1.371051974021872573e-04, +-1.370086427562616403e-04, +-1.369118730223706270e-04, +-1.368148883747886848e-04, +-1.367176889881015830e-04, +-1.366202750372469952e-04, +-1.365226466974979122e-04, +-1.364248041444458630e-04, +-1.363267475540452865e-04, +-1.362284771025567729e-04, +-1.361299929665906762e-04, +-1.360312953230910136e-04, +-1.359323843493226989e-04, +-1.358332602228923052e-04, +-1.357339231217513718e-04, +-1.356343732241588362e-04, +-1.355346107087223423e-04, +-1.354346357543809751e-04, +-1.353344485403887255e-04, +-1.352340492463559622e-04, +-1.351334380522112397e-04, +-1.350326151382047685e-04, +-1.349315806849296379e-04, +-1.348303348733089955e-04, +-1.347288778845789166e-04, +-1.346272099003335615e-04, +-1.345253311024662761e-04, +-1.344232416732163752e-04, +-1.343209417951515242e-04, +-1.342184316511492535e-04, +-1.341157114244415733e-04, +-1.340127812985739098e-04, +-1.339096414574103089e-04, +-1.338062920851544157e-04, +-1.337027333663363558e-04, +-1.335989654857943037e-04, +-1.334949886287227028e-04, +-1.333908029806110890e-04, +-1.332864087272910101e-04, +-1.331818060549149374e-04, +-1.330769951499582722e-04, +-1.329719761992215676e-04, +-1.328667493898335922e-04, +-1.327613149092321933e-04, +-1.326556729451919172e-04, +-1.325498236858062013e-04, +-1.324437673194899488e-04, +-1.323375040349799084e-04, +-1.322310340213396886e-04, +-1.321243574679403776e-04, +-1.320174745644876757e-04, +-1.319103855010032194e-04, +-1.318030904678293524e-04, +-1.316955896556325407e-04, +-1.315878832553854017e-04, +-1.314799714583932946e-04, +-1.313718544562765393e-04, +-1.312635324409742110e-04, +-1.311550056047422973e-04, +-1.310462741401612606e-04, +-1.309373382401138926e-04, +-1.308281980978151580e-04, +-1.307188539067915124e-04, +-1.306093058608864051e-04, +-1.304995541542596556e-04, +-1.303895989813917634e-04, +-1.302794405370639313e-04, +-1.301690790163880982e-04, +-1.300585146147854171e-04, +-1.299477475279915142e-04, +-1.298367779520615841e-04, +-1.297256060833501155e-04, +-1.296142321185391345e-04, +-1.295026562546196106e-04, +-1.293908786888955497e-04, +-1.292788996189825031e-04, +-1.291667192428138560e-04, +-1.290543377586195228e-04, +-1.289417553649567928e-04, +-1.288289722606871283e-04, +-1.287159886449844586e-04, +-1.286028047173325779e-04, +-1.284894206775305666e-04, +-1.283758367256668243e-04, +-1.282620530621737679e-04, +-1.281480698877590391e-04, +-1.280338874034580882e-04, +-1.279195058106145770e-04, +-1.278049253108654438e-04, +-1.276901461061652715e-04, +-1.275751683987910842e-04, +-1.274599923912961611e-04, +-1.273446182865609934e-04, +-1.272290462877714108e-04, +-1.271132765984004482e-04, +-1.269973094222595471e-04, +-1.268811449634332322e-04, +-1.267647834263281180e-04, +-1.266482250156561842e-04, +-1.265314699364188382e-04, +-1.264145183939305783e-04, +-1.262973705938249831e-04, +-1.261800267420078202e-04, +-1.260624870447076787e-04, +-1.259447517084561548e-04, +-1.258268209400656261e-04, +-1.257086949466810490e-04, +-1.255903739357325797e-04, +-1.254718581149419430e-04, +-1.253531476923460959e-04, +-1.252342428762820209e-04, +-1.251151438753665874e-04, +-1.249958508985510059e-04, +-1.248763641550504084e-04, +-1.247566838543984387e-04, +-1.246368102064274381e-04, +-1.245167434212471954e-04, +-1.243964837092957415e-04, +-1.242760312812924578e-04, +-1.241553863482438495e-04, +-1.240345491214681030e-04, +-1.239135198125800150e-04, +-1.237922986334680079e-04, +-1.236708857963537609e-04, +-1.235492815137165864e-04, +-1.234274859983514625e-04, +-1.233054994633426052e-04, +-1.231833221220679682e-04, +-1.230609541881991069e-04, +-1.229383958757054071e-04, +-1.228156473988342170e-04, +-1.226927089721398224e-04, +-1.225695808104647171e-04, +-1.224462631289419340e-04, +-1.223227561429963191e-04, +-1.221990600683488140e-04, +-1.220751751209946904e-04, +-1.219511015172358866e-04, +-1.218268394736578871e-04, +-1.217023892071365527e-04, +-1.215777509348412512e-04, +-1.214529248742151794e-04, +-1.213279112430047446e-04, +-1.212027102592390734e-04, +-1.210773221412347282e-04, +-1.209517471075965874e-04, +-1.208259853772200148e-04, +-1.207000371692716682e-04, +-1.205739027032199799e-04, +-1.204475821988136889e-04, +-1.203210758760868692e-04, +-1.201943839553584688e-04, +-1.200675066572371211e-04, +-1.199404442025992981e-04, +-1.198131968126222023e-04, +-1.196857647087596027e-04, +-1.195581481127496408e-04, +-1.194303472466173112e-04, +-1.193023623326545251e-04, +-1.191741935934502249e-04, +-1.190458412518703664e-04, +-1.189173055310616459e-04, +-1.187885866544501182e-04, +-1.186596848457502628e-04, +-1.185306003289375809e-04, +-1.184013333282844826e-04, +-1.182718840683369627e-04, +-1.181422527739196967e-04, +-1.180124396701415836e-04, +-1.178824449823716769e-04, +-1.177522689362690269e-04, +-1.176219117577861911e-04, +-1.174913736731187915e-04, +-1.173606549087607276e-04, +-1.172297556914833871e-04, +-1.170986762483152083e-04, +-1.169674168065723362e-04, +-1.168359775938618343e-04, +-1.167043588380322451e-04, +-1.165725607672276102e-04, +-1.164405836098666812e-04, +-1.163084275946180097e-04, +-1.161760929504633463e-04, +-1.160435799066164472e-04, +-1.159108886925866493e-04, +-1.157780195381549363e-04, +-1.156449726733556430e-04, +-1.155117483285060672e-04, +-1.153783467342110779e-04, +-1.152447681213110328e-04, +-1.151110127209394984e-04, +-1.149770807644987202e-04, +-1.148429724836367866e-04, +-1.147086881103118541e-04, +-1.145742278767079592e-04, +-1.144395920153011683e-04, +-1.143047807588287593e-04, +-1.141697943403011611e-04, +-1.140346329929708101e-04, +-1.138992969503982867e-04, +-1.137637864463687229e-04, +-1.136281017149556486e-04, +-1.134922429904981420e-04, +-1.133562105075750930e-04, +-1.132200045010657428e-04, +-1.130836252060953110e-04, +-1.129470728580403622e-04, +-1.128103476925578494e-04, +-1.126734499455617900e-04, +-1.125363798532276835e-04, +-1.123991376519993155e-04, +-1.122617235785632517e-04, +-1.121241378698851040e-04, +-1.119863807631911131e-04, +-1.118484524959431441e-04, +-1.117103533058994827e-04, +-1.115720834310588095e-04, +-1.114336431096672742e-04, +-1.112950325802467526e-04, +-1.111562520815720243e-04, +-1.110173018526746622e-04, +-1.108781821328439811e-04, +-1.107388931616320657e-04, +-1.105994351788288071e-04, +-1.104598084244986296e-04, +-1.103200131389555684e-04, +-1.101800495627684457e-04, +-1.100399179367670110e-04, +-1.098996185020172475e-04, +-1.097591514998568396e-04, +-1.096185171718719168e-04, +-1.094777157599002788e-04, +-1.093367475060335643e-04, +-1.091956126526216146e-04, +-1.090543114422469273e-04, +-1.089128441177624000e-04, +-1.087712109222660278e-04, +-1.086294120991063513e-04, +-1.084874478918878914e-04, +-1.083453185444465647e-04, +-1.082030243008862483e-04, +-1.080605654055537756e-04, +-1.079179421030440725e-04, +-1.077751546381998187e-04, +-1.076322032561191725e-04, +-1.074890882021274733e-04, +-1.073458097218157035e-04, +-1.072023680610156333e-04, +-1.070587634658045506e-04, +-1.069149961825055587e-04, +-1.067710664576931471e-04, +-1.066269745381677122e-04, +-1.064827206709928540e-04, +-1.063383051034700737e-04, +-1.061937280831435709e-04, +-1.060489898578074813e-04, +-1.059040906754800583e-04, +-1.057590307844333673e-04, +-1.056138104332006986e-04, +-1.054684298705194030e-04, +-1.053228893453924336e-04, +-1.051771891070630568e-04, +-1.050313294049963671e-04, +-1.048853104889151057e-04, +-1.047391326087758630e-04, +-1.045927960147740248e-04, +-1.044463009573428779e-04, +-1.042996476871602780e-04, +-1.041528364551160018e-04, +-1.040058675123819217e-04, +-1.038587411103213126e-04, +-1.037114575005602734e-04, +-1.035640169349597006e-04, +-1.034164196655970195e-04, +-1.032686659447978157e-04, +-1.031207560251413914e-04, +-1.029726901594020972e-04, +-1.028244686006139227e-04, +-1.026760916020449233e-04, +-1.025275594171688411e-04, +-1.023788722997379227e-04, +-1.022300305036911143e-04, +-1.020810342832240603e-04, +-1.019318838927580956e-04, +-1.017825795869509110e-04, +-1.016331216206645832e-04, +-1.014835102490371858e-04, +-1.013337457273894265e-04, +-1.011838283112975729e-04, +-1.010337582565673368e-04, +-1.008835358192046959e-04, +-1.007331612554838459e-04, +-1.005826348218859023e-04, +-1.004319567751054738e-04, +-1.002811273720837843e-04, +-1.001301468699807685e-04, +-9.997901552618248481e-05, +-9.982773359830638771e-05, +-9.967630134417418170e-05, +-9.952471902185245191e-05, +-9.937298688963031599e-05, +-9.922110520599513792e-05, +-9.906907422969565575e-05, +-9.891689421968343464e-05, +-9.876456543511926366e-05, +-9.861208813540500424e-05, +-9.845946258015643091e-05, +-9.830668902921102395e-05, +-9.815376774262558424e-05, +-9.800069898068398521e-05, +-9.784748300386840090e-05, +-9.769412007290123742e-05, +-9.754061044871588663e-05, +-9.738695439246384123e-05, +-9.723315216552079335e-05, +-9.707920402945958375e-05, +-9.692511024608977516e-05, +-9.677087107743035754e-05, +-9.661648678571647009e-05, +-9.646195763339800535e-05, +-9.630728388314691404e-05, +-9.615246579782957140e-05, +-9.599750364054570012e-05, +-9.584239767460287797e-05, +-9.568714816352118637e-05, +-9.553175537104040672e-05, +-9.537621956109226492e-05, +-9.522054099783993687e-05, +-9.506471994565225811e-05, +-9.490875666910812832e-05, +-9.475265143299725678e-05, +-9.459640450232574592e-05, +-9.444001614228914900e-05, +-9.428348661830602607e-05, +-9.412681619602354124e-05, +-9.397000514125613743e-05, +-9.381305372005377342e-05, +-9.365596219867300268e-05, +-9.349873084355730870e-05, +-9.334135992137703071e-05, +-9.318384969900135064e-05, +-9.302620044350502868e-05, +-9.286841242217523380e-05, +-9.271048590248235158e-05, +-9.255242115211489550e-05, +-9.239421843898618840e-05, +-9.223587803117080106e-05, +-9.207740019697427999e-05, +-9.191878520490414501e-05, +-9.176003332364911322e-05, +-9.160114482212046135e-05, +-9.144211996942276579e-05, +-9.128295903486179021e-05, +-9.112366228794307609e-05, +-9.096422999837905777e-05, +-9.080466243605282305e-05, +-9.064495987109597237e-05, +-9.048512257378833019e-05, +-9.032515081463657672e-05, +-9.016504486434376829e-05, +-9.000480499378967262e-05, +-8.984443147406401319e-05, +-8.968392457647358430e-05, +-8.952328457247879815e-05, +-8.936251173376296537e-05, +-8.920160633220439032e-05, +-8.904056863984673176e-05, +-8.887939892897707894e-05, +-8.871809747202682843e-05, +-8.855666454164715811e-05, +-8.839510041068297927e-05, +-8.823340535214873172e-05, +-8.807157963926498924e-05, +-8.790962354546423291e-05, +-8.774753734432749308e-05, +-8.758532130965300641e-05, +-8.742297571542976143e-05, +-8.726050083580682909e-05, +-8.709789694516460842e-05, +-8.693516431805050628e-05, +-8.677230322918517145e-05, +-8.660931395349828689e-05, +-8.644619676609857802e-05, +-8.628295194228157827e-05, +-8.611957975753570065e-05, +-8.595608048751308624e-05, +-8.579245440807291810e-05, +-8.562870179525811087e-05, +-8.546482292526713512e-05, +-8.530081807452519519e-05, +-8.513668751961927194e-05, +-8.497243153730378769e-05, +-8.480805040453810609e-05, +-8.464354439845469722e-05, +-8.447891379636846172e-05, +-8.431415887578146064e-05, +-8.414927991435486169e-05, +-8.398427718995116892e-05, +-8.381915098060471888e-05, +-8.365390156452908029e-05, +-8.348852922011653905e-05, +-8.332303422594383095e-05, +-8.315741686074422346e-05, +-8.299167740344931174e-05, +-8.282581613315979940e-05, +-8.265983332915285747e-05, +-8.249372927088129777e-05, +-8.232750423798029489e-05, +-8.216115851023767912e-05, +-8.199469236763752133e-05, +-8.182810609033029029e-05, +-8.166139995863971033e-05, +-8.149457425306982211e-05, +-8.132762925427458438e-05, +-8.116056524310250237e-05, +-8.099338250056542998e-05, +-8.082608130784666052e-05, +-8.065866194629961222e-05, +-8.049112469745537692e-05, +-8.032346984299194230e-05, +-8.015569766477925403e-05, +-7.998780844484735381e-05, +-7.981980246539559503e-05, +-7.965168000878994586e-05, +-7.948344135757155445e-05, +-7.931508679442563230e-05, +-7.914661660222619115e-05, +-7.897803106400544143e-05, +-7.880933046296037872e-05, +-7.864051508246103727e-05, +-7.847158520601906168e-05, +-7.830254111732465111e-05, +-7.813338310025368788e-05, +-7.796411143880070671e-05, +-7.779472641715191568e-05, +-7.762522831965604480e-05, +-7.745561743080007339e-05, +-7.728589403525551200e-05, +-7.711605841784579499e-05, +-7.694611086355506260e-05, +-7.677605165753423246e-05, +-7.660588108507087235e-05, +-7.643559943162630697e-05, +-7.626520698284208256e-05, +-7.609470402447288183e-05, +-7.592409084246043948e-05, +-7.575336772290292703e-05, +-7.558253495203252339e-05, +-7.541159281625207445e-05, +-7.524054160214182867e-05, +-7.506938159639220301e-05, +-7.489811308587830826e-05, +-7.472673635762831746e-05, +-7.455525169879402981e-05, +-7.438365939673276857e-05, +-7.421195973890163072e-05, +-7.404015301293924932e-05, +-7.386823950663664207e-05, +-7.369621950790463099e-05, +-7.352409330485054975e-05, +-7.335186118570854303e-05, +-7.317952343884741339e-05, +-7.300708035280753841e-05, +-7.283453221627810242e-05, +-7.266187931806553264e-05, +-7.248912194717756555e-05, +-7.231626039271509768e-05, +-7.214329494395739040e-05, +-7.197022589032054491e-05, +-7.179705352136763960e-05, +-7.162377812680596528e-05, +-7.145039999649611896e-05, +-7.127691942041912540e-05, +-7.110333668872315268e-05, +-7.092965209169933448e-05, +-7.075586591975146665e-05, +-7.058197846347072227e-05, +-7.040799001356775352e-05, +-7.023390086087883094e-05, +-7.005971129640433260e-05, +-6.988542161127704480e-05, +-6.971103209676988695e-05, +-6.953654304430252522e-05, +-6.936195474541063542e-05, +-6.918726749179101936e-05, +-6.901248157527154533e-05, +-6.883759728781640649e-05, +-6.866261492152758456e-05, +-6.848753476865074514e-05, +-6.831235712154485294e-05, +-6.813708227272678676e-05, +-6.796171051484133411e-05, +-6.778624214066758806e-05, +-6.761067744311852711e-05, +-6.743501671524872653e-05, +-6.725926025022194079e-05, +-6.708340834135867285e-05, +-6.690746128210284856e-05, +-6.673141936603051735e-05, +-6.655528288685639811e-05, +-6.637905213840274903e-05, +-6.620272741464468724e-05, +-6.602630900967957370e-05, +-6.584979721773411465e-05, +-6.567319233316354853e-05, +-6.549649465045877456e-05, +-6.531970446421503287e-05, +-6.514282206917847097e-05, +-6.496584776021391587e-05, +-6.478878183231239569e-05, +-6.461162458059063827e-05, +-6.443437630029855210e-05, +-6.425703728678737795e-05, +-6.407960783555564541e-05, +-6.390208824221824612e-05, +-6.372447880251307442e-05, +-6.354677981230898273e-05, +-6.336899156757306575e-05, +-6.319111436441046420e-05, +-6.301314849907055837e-05, +-6.283509426787707770e-05, +-6.265695196730495717e-05, +-6.247872189394913941e-05, +-6.230040434450050536e-05, +-6.212199961579215621e-05, +-6.194350800476742939e-05, +-6.176492980848826049e-05, +-6.158626532414114639e-05, +-6.140751484900596087e-05, +-6.122867868049527052e-05, +-6.104975711616002676e-05, +-6.087075045362042768e-05, +-6.069165899064251686e-05, +-6.051248302510686352e-05, +-6.033322285498420186e-05, +-6.015387877837465882e-05, +-5.997445109351487593e-05, +-5.979494009870649267e-05, +-5.961534609239470365e-05, +-5.943566937313604425e-05, +-5.925591023956662355e-05, +-5.907606899048840644e-05, +-5.889614592475743237e-05, +-5.871614134137147993e-05, +-5.853605553943672080e-05, +-5.835588881813656931e-05, +-5.817564147680969751e-05, +-5.799531381487855921e-05, +-5.781490613185695900e-05, +-5.763441872738841272e-05, +-5.745385190122330465e-05, +-5.727320595318491814e-05, +-5.709248118325739823e-05, +-5.691167789147399080e-05, +-5.673079637800371091e-05, +-5.654983694311093600e-05, +-5.636879988716294107e-05, +-5.618768551062998677e-05, +-5.600649411409215666e-05, +-5.582522599820707507e-05, +-5.564388146375694118e-05, +-5.546246081162500857e-05, +-5.528096434276287622e-05, +-5.509939235826874081e-05, +-5.491774515931646954e-05, +-5.473602304716247127e-05, +-5.455422632318469395e-05, +-5.437235528885154862e-05, +-5.419041024572749987e-05, +-5.400839149548224767e-05, +-5.382629933985728650e-05, +-5.364413408071348825e-05, +-5.346189602000726339e-05, +-5.327958545975714036e-05, +-5.309720270212364425e-05, +-5.291474804933755640e-05, +-5.273222180370570818e-05, +-5.254962426765222809e-05, +-5.236695574368515510e-05, +-5.218421653440392640e-05, +-5.200140694249919448e-05, +-5.181852727076007774e-05, +-5.163557782204166824e-05, +-5.145255889931277731e-05, +-5.126947080562342305e-05, +-5.108631384411180980e-05, +-5.090308831801248688e-05, +-5.071979453062342260e-05, +-5.053643278535377024e-05, +-5.035300338569104379e-05, +-5.016950663520906650e-05, +-4.998594283756692733e-05, +-4.980231229651720061e-05, +-4.961861531587265418e-05, +-4.943485219955418475e-05, +-4.925102325155823079e-05, +-4.906712877596433489e-05, +-4.888316907694286866e-05, +-4.869914445872157834e-05, +-4.851505522563446198e-05, +-4.833090168208799655e-05, +-4.814668413256976412e-05, +-4.796240288164711014e-05, +-4.777805823397481423e-05, +-4.759365049426270632e-05, +-4.740917996731524014e-05, +-4.722464695803914352e-05, +-4.704005177137028225e-05, +-4.685539471235385036e-05, +-4.667067608611168817e-05, +-4.648589619781687136e-05, +-4.630105535274287948e-05, +-4.611615385622985021e-05, +-4.593119201369242623e-05, +-4.574617013062785289e-05, +-4.556108851258162929e-05, +-4.537594746518915523e-05, +-4.519074729418282596e-05, +-4.500548830531775075e-05, +-4.482017080445342043e-05, +-4.463479509752038175e-05, +-4.444936149049484667e-05, +-4.426387028944804396e-05, +-4.407832180051198543e-05, +-4.389271632988807863e-05, +-4.370705418384606295e-05, +-4.352133566873176167e-05, +-4.333556109092582127e-05, +-4.314973075693307684e-05, +-4.296384497326762660e-05, +-4.277790404654242769e-05, +-4.259190828343565200e-05, +-4.240585799065754350e-05, +-4.221975347503232966e-05, +-4.203359504342342511e-05, +-4.184738300274107520e-05, +-4.166111765998363031e-05, +-4.147479932221126062e-05, +-4.128842829651353178e-05, +-4.110200489009898029e-05, +-4.091552941017941557e-05, +-4.072900216405991554e-05, +-4.054242345910567715e-05, +-4.035579360270804693e-05, +-4.016911290236718465e-05, +-3.998238166561637246e-05, +-3.979560020003065462e-05, +-3.960876881326706820e-05, +-3.942188781303971993e-05, +-3.923495750708574231e-05, +-3.904797820324791655e-05, +-3.886095020939973389e-05, +-3.867387383345261231e-05, +-3.848674938339758414e-05, +-3.829957716727098776e-05, +-3.811235749316237560e-05, +-3.792509066922293695e-05, +-3.773777700363082385e-05, +-3.755041680464103119e-05, +-3.736301038056010090e-05, +-3.717555803971196276e-05, +-3.698806009052072011e-05, +-3.680051684143535869e-05, +-3.661292860093767493e-05, +-3.642529567758296739e-05, +-3.623761837996667719e-05, +-3.604989701673215366e-05, +-3.586213189657806754e-05, +-3.567432332822496335e-05, +-3.548647162046480742e-05, +-3.529857708212672034e-05, +-3.511064002208529142e-05, +-3.492266074925980623e-05, +-3.473463957262212733e-05, +-3.454657680116283335e-05, +-3.435847274394072633e-05, +-3.417032771004897075e-05, +-3.398214200862313016e-05, +-3.379391594884011011e-05, +-3.360564983992684528e-05, +-3.341734399112557795e-05, +-3.322899871174382614e-05, +-3.304061431112059039e-05, +-3.285219109863403805e-05, +-3.266372938370914688e-05, +-3.247522947578416937e-05, +-3.228669168436015363e-05, +-3.209811631896681135e-05, +-3.190950368917060869e-05, +-3.172085410457401410e-05, +-3.153216787482354173e-05, +-3.134344530957584304e-05, +-3.115468671854716671e-05, +-3.096589241147963998e-05, +-3.077706269814887161e-05, +-3.058819788836364693e-05, +-3.039929829197358845e-05, +-3.021036421883554893e-05, +-3.002139597886273594e-05, +-2.983239388199142682e-05, +-2.964335823818824644e-05, +-2.945428935745826815e-05, +-2.926518754981094280e-05, +-2.907605312530174221e-05, +-2.888688639403966393e-05, +-2.869768766611138108e-05, +-2.850845725166488182e-05, +-2.831919546087492394e-05, +-2.812990260390923824e-05, +-2.794057899102046888e-05, +-2.775122493242793774e-05, +-2.756184073840954412e-05, +-2.737242671925915218e-05, +-2.718298318530316910e-05, +-2.699351044685788849e-05, +-2.680400881432123760e-05, +-2.661447859805488728e-05, +-2.642492010847604324e-05, +-2.623533365602338520e-05, +-2.604571955112296188e-05, +-2.585607810427153575e-05, +-2.566640962596069894e-05, +-2.547671442668466603e-05, +-2.528699281698170069e-05, +-2.509724510740846752e-05, +-2.490747160850606608e-05, +-2.471767263089171365e-05, +-2.452784848514065198e-05, +-2.433799948187817568e-05, +-2.414812593174549342e-05, +-2.395822814536537903e-05, +-2.376830643342605829e-05, +-2.357836110660496915e-05, +-2.338839247557640200e-05, +-2.319840085105336340e-05, +-2.300838654376157898e-05, +-2.281834986440544604e-05, +-2.262829112375178825e-05, +-2.243821063255341933e-05, +-2.224810870155711874e-05, +-2.205798564154525489e-05, +-2.186784176330161240e-05, +-2.167767737761918488e-05, +-2.148749279530825552e-05, +-2.129728832716199749e-05, +-2.110706428400670632e-05, +-2.091682097667593151e-05, +-2.072655871597635810e-05, +-2.053627781277135795e-05, +-2.034597857790478725e-05, +-2.015566132220892838e-05, +-1.996532635654612320e-05, +-1.977497399177441403e-05, +-1.958460453875558369e-05, +-1.939421830836318537e-05, +-1.920381561144806162e-05, +-1.901339675888849884e-05, +-1.882296206155628841e-05, +-1.863251183032409920e-05, +-1.844204637606556912e-05, +-1.825156600966287414e-05, +-1.806107104197234560e-05, +-1.787056178387515319e-05, +-1.768003854624239371e-05, +-1.748950163994346990e-05, +-1.729895137584539584e-05, +-1.710838806482084044e-05, +-1.691781201771367006e-05, +-1.672722354538925217e-05, +-1.653662295870022165e-05, +-1.634601056849427006e-05, +-1.615538668562216203e-05, +-1.596475162090344054e-05, +-1.577410568517659161e-05, +-1.558344918926481403e-05, +-1.539278244398376458e-05, +-1.520210576014140223e-05, +-1.501141944854556227e-05, +-1.482072381996984292e-05, +-1.463001918520383100e-05, +-1.443930585501868696e-05, +-1.424858414017515107e-05, +-1.405785435142303347e-05, +-1.386711679950921019e-05, +-1.367637179514310485e-05, +-1.348561964904723450e-05, +-1.329486067192258800e-05, +-1.310409517445672535e-05, +-1.291332346733176692e-05, +-1.272254586118985309e-05, +-1.253176266667516225e-05, +-1.234097419444185756e-05, +-1.215018075507717985e-05, +-1.195938265918586285e-05, +-1.176858021735564541e-05, +-1.157777374012277865e-05, +-1.138696353806504034e-05, +-1.119614992168219311e-05, +-1.100533320148897683e-05, +-1.081451368798068517e-05, +-1.062369169160702284e-05, +-1.043286752281426740e-05, +-1.024204149205307392e-05, +-1.005121390970168459e-05, +-9.860385086150269543e-06, +-9.669555331766491537e-06, +-9.478724956860943646e-06, +-9.287894271771732265e-06, +-9.097063586787393726e-06, +-8.906233212154969915e-06, +-8.715403458121922842e-06, +-8.524574634910198499e-06, +-8.333747052681661136e-06, +-8.142921021631139832e-06, +-7.952096851866974824e-06, +-7.761274853503838771e-06, +-7.570455336628428524e-06, +-7.379638611264894329e-06, +-7.188824987459236493e-06, +-6.998014775202490510e-06, +-6.807208284438579051e-06, +-6.616405825106383250e-06, +-6.425607707113693895e-06, +-6.234814240302737190e-06, +-6.044025734543167958e-06, +-5.853242499612583790e-06, +-5.662464845289479282e-06, +-5.471693081310309093e-06, +-5.280927517377421251e-06, +-5.090168463158604843e-06, +-4.899416228295067364e-06, +-4.708671122366918133e-06, +-4.517933454943718363e-06, +-4.327203535549923920e-06, +-4.136481673672907564e-06, +-3.945768178762475298e-06, +-3.755063360238844149e-06, +-3.564367527458140391e-06, +-3.373680989762917870e-06, +-3.183004056447639711e-06, +-2.992337036766692098e-06, +-2.801680239942357822e-06, +-2.611033975130365751e-06, +-2.420398551470335882e-06, +-2.229774278051334744e-06, +-2.039161463919812099e-06, +-1.848560418079167046e-06, +-1.657971449497685780e-06, +-1.467394867074106104e-06, +-1.276830979688070946e-06, +-1.086280096165640775e-06, +-8.957425252873136287e-07, +-7.052185757874962490e-07, +-5.147085563625323621e-07, +-3.242127756361883651e-07, +-1.337315422101624819e-07, + 5.673483537042073130e-08, + 2.471860486090012732e-07, + 4.376217890495894926e-07, + 6.280417483112486016e-07, + 8.184456180376118224e-07, + 1.008833089931368679e-06, + 1.199203855746266943e-06, + 1.389557607287605866e-06, + 1.579894036404244857e-06, + 1.770212835023067547e-06, + 1.960513695098533576e-06, + 2.150796308647117042e-06, + 2.341060367739353707e-06, + 2.531305564491818327e-06, + 2.721531591101577084e-06, + 2.911738139795771332e-06, + 3.101924902866038057e-06, + 3.292091572660564704e-06, + 3.482237841584528367e-06, + 3.672363402092138758e-06, + 3.862467946721072640e-06, + 4.052551168050564330e-06, + 4.242612758693354651e-06, + 4.432652411372609994e-06, + 4.622669818837540470e-06, + 4.812664673897856367e-06, + 5.002636669458159381e-06, + 5.192585498425174718e-06, + 5.382510853826956584e-06, + 5.572412428720090641e-06, + 5.762289916224127595e-06, + 5.952143009547522729e-06, + 6.141971401945702690e-06, + 6.331774786713127099e-06, + 6.521552857260010252e-06, + 6.711305307028159925e-06, + 6.901031829525214452e-06, + 7.090732118359194883e-06, + 7.280405867145682042e-06, + 7.470052769626997442e-06, + 7.659672519579453185e-06, + 7.849264810856215209e-06, + 8.038829337370865776e-06, + 8.228365793140233683e-06, + 8.417873872191737337e-06, + 8.607353268682416594e-06, + 8.796803676806304629e-06, + 8.986224790828751402e-06, + 9.175616305120891123e-06, + 9.364977914075255750e-06, + 9.554309312182678802e-06, + 9.743610194024190948e-06, + 9.932880254229295165e-06, + 1.012211918750164539e-05, + 1.031132668865369185e-05, + 1.050050245251380054e-05, + 1.068964617404539006e-05, + 1.087875754825427981e-05, + 1.106783627023142105e-05, + 1.125688203514510597e-05, + 1.144589453824127761e-05, + 1.163487347483565761e-05, + 1.182381854034803409e-05, + 1.201272943025198004e-05, + 1.220160584010927000e-05, + 1.239044746556182140e-05, + 1.257925400233214851e-05, + 1.276802514621559014e-05, + 1.295676059311427392e-05, + 1.314546003898732771e-05, + 1.333412317988474398e-05, + 1.352274971193976839e-05, + 1.371133933136064965e-05, + 1.389989173446511720e-05, + 1.408840661763015889e-05, + 1.427688367732613778e-05, + 1.446532261010910619e-05, + 1.465372311262107163e-05, + 1.484208488158201101e-05, + 1.503040761382436687e-05, + 1.521869100624266082e-05, + 1.540693475582779323e-05, + 1.559513855965927602e-05, + 1.578330211490533251e-05, + 1.597142511881539112e-05, + 1.615950726875392426e-05, + 1.634754826215063266e-05, + 1.653554779653438765e-05, + 1.672350556952556047e-05, + 1.691142127882792122e-05, + 1.709929462226274379e-05, + 1.728712529771898000e-05, + 1.747491300318721887e-05, + 1.766265743675190063e-05, + 1.785035829659170983e-05, + 1.803801528097166397e-05, + 1.822562808827727949e-05, + 1.841319641696441379e-05, + 1.860071996559383781e-05, + 1.878819843282272838e-05, + 1.897563151739723467e-05, + 1.916301891818614266e-05, + 1.935036033413975001e-05, + 1.953765546428175149e-05, + 1.972490400778523475e-05, + 1.991210566388931197e-05, + 2.009926013193330611e-05, + 2.028636711138203652e-05, + 2.047342630178462604e-05, + 2.066043740276664396e-05, + 2.084740011410587813e-05, + 2.103431413564907506e-05, + 2.122117916734582124e-05, + 2.140799490928278355e-05, + 2.159476106159184691e-05, + 2.178147732456786875e-05, + 2.196814339857716897e-05, + 2.215475898409128931e-05, + 2.234132378171272619e-05, + 2.252783749213369712e-05, + 2.271429981612787033e-05, + 2.290071045462646555e-05, + 2.308706910863499070e-05, + 2.327337547926723160e-05, + 2.345962926777890630e-05, + 2.364583017547662938e-05, + 2.383197790383504303e-05, + 2.401807215440536801e-05, + 2.420411262885798563e-05, + 2.439009902896605624e-05, + 2.457603105664726769e-05, + 2.476190841387339935e-05, + 2.494773080278688403e-05, + 2.513349792560981289e-05, + 2.531920948467772533e-05, + 2.550486518247343601e-05, + 2.569046472154422900e-05, + 2.587600780457719623e-05, + 2.606149413439143124e-05, + 2.624692341389689727e-05, + 2.643229534612823742e-05, + 2.661760963423675833e-05, + 2.680286598148276961e-05, + 2.698806409126927206e-05, + 2.717320366709254512e-05, + 2.735828441256749351e-05, + 2.754330603146122020e-05, + 2.772826822761103026e-05, + 2.791317070499879359e-05, + 2.809801316774380268e-05, + 2.828279532006143746e-05, + 2.846751686629682296e-05, + 2.865217751091708070e-05, + 2.883677695851184363e-05, + 2.902131491378531100e-05, + 2.920579108158986539e-05, + 2.939020516687699223e-05, + 2.957455687473068681e-05, + 2.975884591035995289e-05, + 2.994307197909065770e-05, + 3.012723478639914217e-05, + 3.031133403786318451e-05, + 3.049536943919555965e-05, + 3.067934069623617878e-05, + 3.086324751495248236e-05, + 3.104708960143197610e-05, + 3.123086666191512289e-05, + 3.141457840274693663e-05, + 3.159822453041001642e-05, + 3.178180475151694371e-05, + 3.196531877280247593e-05, + 3.214876630115696710e-05, + 3.233214704357748384e-05, + 3.251546070720105649e-05, + 3.269870699929706937e-05, + 3.288188562726767413e-05, + 3.306499629863973955e-05, + 3.324803872109884805e-05, + 3.343101260243988999e-05, + 3.361391765060059932e-05, + 3.379675357365388971e-05, + 3.397952007980801033e-05, + 3.416221687739909204e-05, + 3.434484367492441199e-05, + 3.452740018099354359e-05, + 3.470988610436178377e-05, + 3.489230115392185212e-05, + 3.507464503869701293e-05, + 3.525691746787374358e-05, + 3.543911815076142253e-05, + 3.562124679678457730e-05, + 3.580330311555684738e-05, + 3.598528681680000785e-05, + 3.616719761037684786e-05, + 3.634903520631600559e-05, + 3.653079931476403979e-05, + 3.671248964601785413e-05, + 3.689410591051727725e-05, + 3.707564781884561841e-05, + 3.725711508172182732e-05, + 3.743850741004190391e-05, + 3.761982451478937032e-05, + 3.780106610715023023e-05, + 3.798223189842333245e-05, + 3.816332160005393373e-05, + 3.834433492365814074e-05, + 3.852527158098276752e-05, + 3.870613128389801031e-05, + 3.888691374447048889e-05, + 3.906761867488320539e-05, + 3.924824578746760953e-05, + 3.942879479473712759e-05, + 3.960926540929810875e-05, + 3.978965734396420844e-05, + 3.996997031166704326e-05, + 4.015020402548944892e-05, + 4.033035819869026781e-05, + 4.051043254466432159e-05, + 4.069042677693453041e-05, + 4.087034060922517108e-05, + 4.105017375538203239e-05, + 4.122992592940437194e-05, + 4.140959684547845186e-05, + 4.158918621789660315e-05, + 4.176869376113070747e-05, + 4.194811918982469580e-05, + 4.212746221875422970e-05, + 4.230672256285942384e-05, + 4.248589993723790717e-05, + 4.266499405713643385e-05, + 4.284400463798414797e-05, + 4.302293139534414001e-05, + 4.320177404493861389e-05, + 4.338053230268107424e-05, + 4.355920588459656298e-05, + 4.373779450689466001e-05, + 4.391629788596128396e-05, + 4.409471573831971508e-05, + 4.427304778066262666e-05, + 4.445129372984465147e-05, + 4.462945330287506338e-05, + 4.480752621695003240e-05, + 4.498551218940472326e-05, + 4.516341093774646519e-05, + 4.534122217964657982e-05, + 4.551894563294125524e-05, + 4.569658101562374655e-05, + 4.587412804587669190e-05, + 4.605158644202521389e-05, + 4.622895592256849704e-05, + 4.640623620617244225e-05, + 4.658342701167106955e-05, + 4.676052805805738365e-05, + 4.693753906451712652e-05, + 4.711445975038048298e-05, + 4.729128983515498621e-05, + 4.746802903851742690e-05, + 4.764467708030707698e-05, + 4.782123368055711120e-05, + 4.799769855944796602e-05, + 4.817407143733924235e-05, + 4.835035203476259041e-05, + 4.852654007242147936e-05, + 4.870263527118449558e-05, + 4.887863735211679807e-05, + 4.905454603643360622e-05, + 4.923036104553172969e-05, + 4.940608210098262280e-05, + 4.958170892453247260e-05, + 4.975724123809513802e-05, + 4.993267876378367978e-05, + 5.010802122386347549e-05, + 5.028326834078469142e-05, + 5.045841983717457122e-05, + 5.063347543582976507e-05, + 5.080843485974848316e-05, + 5.098329783209188445e-05, + 5.115806407617588423e-05, + 5.133273331554316545e-05, + 5.150730527388436400e-05, + 5.168177967507043213e-05, + 5.185615624317634184e-05, + 5.203043470243440320e-05, + 5.220461477726629575e-05, + 5.237869619227561457e-05, + 5.255267867224799910e-05, + 5.272656194214431615e-05, + 5.290034572713937951e-05, + 5.307402975253721955e-05, + 5.324761374388054696e-05, + 5.342109742686526342e-05, + 5.359448052737184249e-05, + 5.376776277149004939e-05, + 5.394094388547920503e-05, + 5.411402359576167396e-05, + 5.428700162899335115e-05, + 5.445987771198549092e-05, + 5.463265157173713144e-05, + 5.480532293546678049e-05, + 5.497789153052561154e-05, + 5.515035708450932630e-05, + 5.532271932517057153e-05, + 5.549497798045233246e-05, + 5.566713277851071458e-05, + 5.583918344767648158e-05, + 5.601112971644842814e-05, + 5.618297131356292476e-05, + 5.635470796791713590e-05, + 5.652633940860016368e-05, + 5.669786536492520124e-05, + 5.686928556635155154e-05, + 5.704059974255510724e-05, + 5.721180762342148636e-05, + 5.738290893900721107e-05, + 5.755390341957101401e-05, + 5.772479079556719079e-05, + 5.789557079763738717e-05, + 5.806624315664282016e-05, + 5.823680760361772511e-05, + 5.840726386979293034e-05, + 5.857761168662781398e-05, + 5.874785078573308846e-05, + 5.891798089894020976e-05, + 5.908800175829521104e-05, + 5.925791309601919022e-05, + 5.942771464454113420e-05, + 5.959740613648907586e-05, + 5.976698730468377858e-05, + 5.993645788216993411e-05, + 6.010581760216994853e-05, + 6.027506619811515365e-05, + 6.044420340363913921e-05, + 6.061322895257762410e-05, + 6.078214257896118547e-05, + 6.095094401704656502e-05, + 6.111963300127121385e-05, + 6.128820926628413804e-05, + 6.145667254693856665e-05, + 6.162502257829241938e-05, + 6.179325909560149635e-05, + 6.196138183434979514e-05, + 6.212939053020465193e-05, + 6.229728491904696361e-05, + 6.246506473696531955e-05, + 6.263272972024717890e-05, + 6.280027960541096298e-05, + 6.296771412916013933e-05, + 6.313503302841414855e-05, + 6.330223604030165514e-05, + 6.346932290216018163e-05, + 6.363629335153024027e-05, + 6.380314712618413220e-05, + 6.396988396408259290e-05, + 6.413650360340500075e-05, + 6.430300578254147595e-05, + 6.446939024009471007e-05, + 6.463565671487133313e-05, + 6.480180494591349094e-05, + 6.496783467245398629e-05, + 6.513374563394587762e-05, + 6.529953757005673278e-05, + 6.546521022066025355e-05, + 6.563076332586770397e-05, + 6.579619662599001746e-05, + 6.596150986153134581e-05, + 6.612670277325668631e-05, + 6.629177510211703114e-05, + 6.645672658928038906e-05, + 6.662155697615355086e-05, + 6.678626600433919551e-05, + 6.695085341566486554e-05, + 6.711531895217635337e-05, + 6.727966235613106057e-05, + 6.744388337002725779e-05, + 6.760798173656796725e-05, + 6.777195719865399676e-05, + 6.793580949945071299e-05, + 6.809953838231470880e-05, + 6.826314359082336124e-05, + 6.842662486879799288e-05, + 6.858998196026690045e-05, + 6.875321460945841602e-05, + 6.891632256086797838e-05, + 6.907930555918448867e-05, + 6.924216334932013946e-05, + 6.940489567644077241e-05, + 6.956750228588484773e-05, + 6.972998292326661955e-05, + 6.989233733439665036e-05, + 7.005456526531040685e-05, + 7.021666646229875305e-05, + 7.037864067183465834e-05, + 7.054048764063995712e-05, + 7.070220711567773235e-05, + 7.086379884411707895e-05, + 7.102526257335448968e-05, + 7.118659805104383335e-05, + 7.134780502501705899e-05, + 7.150888324338527057e-05, + 7.166983245446052894e-05, + 7.183065240679152206e-05, + 7.199134284915737153e-05, + 7.215190353056764611e-05, + 7.231233420025539574e-05, + 7.247263460770714326e-05, + 7.263280450261912333e-05, + 7.279284363491975249e-05, + 7.295275175479875359e-05, + 7.311252861263544929e-05, + 7.327217395906428861e-05, + 7.343168754496762337e-05, + 7.359106912144029549e-05, + 7.375031843981858513e-05, + 7.390943525167389526e-05, + 7.406841930880528422e-05, + 7.422727036326922702e-05, + 7.438598816733646413e-05, + 7.454457247352150534e-05, + 7.470302303457567730e-05, + 7.486133960348678468e-05, + 7.501952193347355370e-05, + 7.517756977801387552e-05, + 7.533548289080273924e-05, + 7.549326102578021789e-05, + 7.565090393712657591e-05, + 7.580841137926016854e-05, + 7.596578310683303726e-05, + 7.612301887475829941e-05, + 7.628011843816825737e-05, + 7.643708155244346872e-05, + 7.659390797320568534e-05, + 7.675059745631142955e-05, + 7.690714975788046797e-05, + 7.706356463425331077e-05, + 7.721984184202127118e-05, + 7.737598113801804939e-05, + 7.753198227932129108e-05, + 7.768784502324562141e-05, + 7.784356912737063101e-05, + 7.799915434950057075e-05, + 7.815460044769057587e-05, + 7.830990718024197683e-05, + 7.846507430569450660e-05, + 7.862010158285575028e-05, + 7.877498877075791257e-05, + 7.892973562868780949e-05, + 7.908434191617983464e-05, + 7.923880739301525443e-05, + 7.939313181921701750e-05, + 7.954731495507711726e-05, + 7.970135656112256150e-05, + 7.985525639810866388e-05, + 8.000901422708196829e-05, + 8.016262980931104971e-05, + 8.031610290631498801e-05, + 8.046943327988408980e-05, + 8.062262069203905463e-05, + 8.077566490505864929e-05, + 8.092856568147378533e-05, + 8.108132278405986190e-05, + 8.123393597586639155e-05, + 8.138640502018147909e-05, + 8.153872968052561449e-05, + 8.169090972071421783e-05, + 8.184294490478971401e-05, + 8.199483499704785178e-05, + 8.214657976206075657e-05, + 8.229817896463372505e-05, + 8.244963236983524394e-05, + 8.260093974298984788e-05, + 8.275210084967689968e-05, + 8.290311545572626704e-05, + 8.305398332725240720e-05, + 8.320470423057806618e-05, + 8.335527793233196540e-05, + 8.350570419937347675e-05, + 8.365598279882035106e-05, + 8.380611349807566047e-05, + 8.395609606476117431e-05, + 8.410593026677830471e-05, + 8.425561587230143883e-05, + 8.440515264974504683e-05, + 8.455454036778371253e-05, + 8.470377879538052595e-05, + 8.485286770171128403e-05, + 8.500180685626172999e-05, + 8.515059602875138815e-05, + 8.529923498916924774e-05, + 8.544772350776709503e-05, + 8.559606135505926940e-05, + 8.574424830181633431e-05, + 8.589228411909337498e-05, + 8.604016857818881224e-05, + 8.618790145066534123e-05, + 8.633548250837713126e-05, + 8.648291152340339136e-05, + 8.663018826810889588e-05, + 8.677731251513657121e-05, + 8.692428403737692132e-05, + 8.707110260799217835e-05, + 8.721776800041142370e-05, + 8.736427998832537031e-05, + 8.751063834571055390e-05, + 8.765684284679256500e-05, + 8.780289326606420931e-05, + 8.794878937831440170e-05, + 8.809453095856021384e-05, + 8.824011778210792830e-05, + 8.838554962454677735e-05, + 8.853082626171615934e-05, + 8.867594746973178155e-05, + 8.882091302498007653e-05, + 8.896572270411847317e-05, + 8.911037628406960978e-05, + 8.925487354204627070e-05, + 8.939921425551445569e-05, + 8.954339820221826239e-05, + 8.968742516017470920e-05, + 8.983129490766721657e-05, + 8.997500722327214282e-05, + 9.011856188581948181e-05, + 9.026195867442032036e-05, + 9.040519736845964189e-05, + 9.054827774759696332e-05, + 9.069119959176039916e-05, + 9.083396268117319725e-05, + 9.097656679631430099e-05, + 9.111901171794474963e-05, + 9.126129722710313817e-05, + 9.140342310509672692e-05, + 9.154538913353051164e-05, + 9.168719509426636271e-05, + 9.182884076945094329e-05, + 9.197032594150839101e-05, + 9.211165039314126661e-05, + 9.225281390732487541e-05, + 9.239381626733196009e-05, + 9.253465725670197704e-05, + 9.267533665923507905e-05, + 9.281585425904949674e-05, + 9.295620984051832956e-05, + 9.309640318829510584e-05, + 9.323643408733346108e-05, + 9.337630232284950256e-05, + 9.351600768034663759e-05, + 9.365554994561111474e-05, + 9.379492890470429885e-05, + 9.393414434398935601e-05, + 9.407319605009968968e-05, + 9.421208380993303184e-05, + 9.435080741070886500e-05, + 9.448936663990472533e-05, + 9.462776128528238616e-05, + 9.476599113490776665e-05, + 9.490405597711156166e-05, + 9.504195560051711933e-05, + 9.517968979403256707e-05, + 9.531725834685169242e-05, + 9.545466104844872539e-05, + 9.559189768860911623e-05, + 9.572896805736104094e-05, + 9.586587194506383152e-05, + 9.600260914233931886e-05, + 9.613917944009637640e-05, + 9.627558262955782185e-05, + 9.641181850219682876e-05, + 9.654788684979387424e-05, + 9.668378746443107399e-05, + 9.681952013846133675e-05, + 9.695508466452683642e-05, + 9.709048083558454497e-05, + 9.722570844483852408e-05, + 9.736076728582691874e-05, + 9.749565715235304273e-05, + 9.763037783851248358e-05, + 9.776492913871656209e-05, + 9.789931084763091220e-05, + 9.803352276023269982e-05, + 9.816756467180323665e-05, + 9.830143637789834083e-05, + 9.843513767436683616e-05, + 9.856866835737508213e-05, + 9.870202822334682782e-05, + 9.883521706901796414e-05, + 9.896823469143103502e-05, + 9.910108088790443252e-05, + 9.923375545605767230e-05, + 9.936625819380591842e-05, + 9.949858889935370848e-05, + 9.963074737121857571e-05, + 9.976273340819727603e-05, + 9.989454680938196984e-05, + 1.000261873741867307e-04, + 1.001576549022852849e-04, + 1.002889491936677970e-04, + 1.004200700486335374e-04, + 1.005510172677614598e-04, + 1.006817906519353012e-04, + 1.008123900023371840e-04, + 1.009428151204419522e-04, + 1.010730658080414023e-04, + 1.012031418672088034e-04, + 1.013330431003234543e-04, + 1.014627693100645848e-04, + 1.015923202994114773e-04, + 1.017216958716381686e-04, + 1.018508958303378708e-04, + 1.019799199793862442e-04, + 1.021087681229674183e-04, + 1.022374400655666596e-04, + 1.023659356119718491e-04, + 1.024942545672665703e-04, + 1.026223967368552494e-04, + 1.027503619264280674e-04, + 1.028781499419833357e-04, + 1.030057605898237149e-04, + 1.031331936765492483e-04, + 1.032604490090826383e-04, + 1.033875263946322878e-04, + 1.035144256407178741e-04, + 1.036411465551638440e-04, + 1.037676889461001316e-04, + 1.038940526219561276e-04, + 1.040202373914845050e-04, + 1.041462430637273776e-04, + 1.042720694480379174e-04, + 1.043977163540771823e-04, + 1.045231835918129375e-04, + 1.046484709715135976e-04, + 1.047735783037734476e-04, + 1.048985053994767967e-04, + 1.050232520698223589e-04, + 1.051478181263171415e-04, + 1.052722033807704948e-04, + 1.053964076453189273e-04, + 1.055204307323956393e-04, + 1.056442724547276905e-04, + 1.057679326253847216e-04, + 1.058914110577248115e-04, + 1.060147075654157552e-04, + 1.061378219624590922e-04, + 1.062607540631277511e-04, + 1.063835036820448581e-04, + 1.065060706341228994e-04, + 1.066284547345920186e-04, + 1.067506557989882402e-04, + 1.068726736431827425e-04, + 1.069945080833197058e-04, + 1.071161589358962185e-04, + 1.072376260176989050e-04, + 1.073589091458290252e-04, + 1.074800081377233723e-04, + 1.076009228110983692e-04, + 1.077216529840032615e-04, + 1.078421984748112271e-04, + 1.079625591021946029e-04, + 1.080827346851401439e-04, + 1.082027250429725784e-04, + 1.083225299952929164e-04, + 1.084421493620576100e-04, + 1.085615829635159271e-04, + 1.086808306202351459e-04, + 1.087998921531192433e-04, + 1.089187673833581820e-04, + 1.090374561324739748e-04, + 1.091559582223181372e-04, + 1.092742734750427121e-04, + 1.093924017131176304e-04, + 1.095103427593543466e-04, + 1.096280964368487695e-04, + 1.097456625690320563e-04, + 1.098630409796655041e-04, + 1.099802314928134174e-04, + 1.100972339328651714e-04, + 1.102140481245298455e-04, + 1.103306738928312226e-04, + 1.104471110631295808e-04, + 1.105633594610899137e-04, + 1.106794189126974066e-04, + 1.107952892442805711e-04, + 1.109109702824563436e-04, + 1.110264618541803653e-04, + 1.111417637867399350e-04, + 1.112568759077293431e-04, + 1.113717980450696992e-04, + 1.114865300270051647e-04, + 1.116010716820976941e-04, + 1.117154228392480415e-04, + 1.118295833276642645e-04, + 1.119435529768841267e-04, + 1.120573316167686466e-04, + 1.121709190775034391e-04, + 1.122843151895924681e-04, + 1.123975197838813296e-04, + 1.125105326915238312e-04, + 1.126233537440042722e-04, + 1.127359827731331886e-04, + 1.128484196110456723e-04, + 1.129606640901983624e-04, + 1.130727160433892589e-04, + 1.131845753037270808e-04, + 1.132962417046529363e-04, + 1.134077150799339125e-04, + 1.135189952636598502e-04, + 1.136300820902631299e-04, + 1.137409753944883554e-04, + 1.138516750114134144e-04, + 1.139621807764433931e-04, + 1.140724925253126635e-04, + 1.141826100940792862e-04, + 1.142925333191440650e-04, + 1.144022620372227240e-04, + 1.145117960853656806e-04, + 1.146211353009515805e-04, + 1.147302795216899546e-04, + 1.148392285856151743e-04, + 1.149479823311063873e-04, + 1.150565405968588539e-04, + 1.151649032219033409e-04, + 1.152730700456006867e-04, + 1.153810409076403245e-04, + 1.154888156480554065e-04, + 1.155963941072022451e-04, + 1.157037761257537803e-04, + 1.158109615447451026e-04, + 1.159179502055237833e-04, + 1.160247419497691866e-04, + 1.161313366195149669e-04, + 1.162377340570918636e-04, + 1.163439341051989329e-04, + 1.164499366068490129e-04, + 1.165557414053887810e-04, + 1.166613483445132145e-04, + 1.167667572682422669e-04, + 1.168719680209156364e-04, + 1.169769804472363509e-04, + 1.170817943922233611e-04, + 1.171864097012306093e-04, + 1.172908262199672089e-04, + 1.173950437944474488e-04, + 1.174990622710379975e-04, + 1.176028814964488089e-04, + 1.177065013177139183e-04, + 1.178099215822020002e-04, + 1.179131421376384859e-04, + 1.180161628320522610e-04, + 1.181189835138425208e-04, + 1.182216040317263890e-04, + 1.183240242347592062e-04, + 1.184262439723528124e-04, + 1.185282630942283974e-04, + 1.186300814504600860e-04, + 1.187316988914691781e-04, + 1.188331152680021665e-04, + 1.189343304311438692e-04, + 1.190353442323371756e-04, + 1.191361565233315468e-04, + 1.192367671562485421e-04, + 1.193371759835309157e-04, + 1.194373828579660488e-04, + 1.195373876326812204e-04, + 1.196371901611441351e-04, + 1.197367902971585866e-04, + 1.198361878948829979e-04, + 1.199353828088026787e-04, + 1.200343748937493955e-04, + 1.201331640048953407e-04, + 1.202317499977553013e-04, + 1.203301327281807765e-04, + 1.204283120523790197e-04, + 1.205262878268857971e-04, + 1.206240599085843350e-04, + 1.207216281546996542e-04, + 1.208189924227963207e-04, + 1.209161525707944915e-04, + 1.210131084569440702e-04, + 1.211098599398436942e-04, + 1.212064068784352727e-04, + 1.213027491320041494e-04, + 1.213988865601761213e-04, + 1.214948190229339994e-04, + 1.215905463805917101e-04, + 1.216860684938127945e-04, + 1.217813852236056781e-04, + 1.218764964313227226e-04, + 1.219714019786582608e-04, + 1.220661017276656858e-04, + 1.221605955407298045e-04, + 1.222548832805858514e-04, + 1.223489648103153957e-04, + 1.224428399933423029e-04, + 1.225365086934491468e-04, + 1.226299707747525438e-04, + 1.227232261017202294e-04, + 1.228162745391669648e-04, + 1.229091159522547542e-04, + 1.230017502064886434e-04, + 1.230941771677343652e-04, + 1.231863967021917491e-04, + 1.232784086764145896e-04, + 1.233702129573030026e-04, + 1.234618094121022868e-04, + 1.235531979084191867e-04, + 1.236443783141956551e-04, + 1.237353504977274470e-04, + 1.238261143276589698e-04, + 1.239166696729843131e-04, + 1.240070164030426954e-04, + 1.240971543875355398e-04, + 1.241870834965060099e-04, + 1.242768036003342937e-04, + 1.243663145697763094e-04, + 1.244556162759214487e-04, + 1.245447085902100053e-04, + 1.246335913844484893e-04, + 1.247222645307671264e-04, + 1.248107279016753693e-04, + 1.248989813700170657e-04, + 1.249870248089880221e-04, + 1.250748580921483917e-04, + 1.251624810934006641e-04, + 1.252498936869887443e-04, + 1.253370957475316442e-04, + 1.254240871499860503e-04, + 1.255108677696598226e-04, + 1.255974374822304521e-04, + 1.256837961636999321e-04, + 1.257699436904515151e-04, + 1.258558799392054512e-04, + 1.259416047870395058e-04, + 1.260271181113812352e-04, + 1.261124197900280713e-04, + 1.261975097011026252e-04, + 1.262823877231104754e-04, + 1.263670537348947397e-04, + 1.264515076156535849e-04, + 1.265357492449551346e-04, + 1.266197785026989804e-04, + 1.267035952691512553e-04, + 1.267871994249415441e-04, + 1.268705908510422834e-04, + 1.269537694287814196e-04, + 1.270367350398584282e-04, + 1.271194875663010540e-04, + 1.272020268905208222e-04, + 1.272843528952683693e-04, + 1.273664654636558321e-04, + 1.274483644791515890e-04, + 1.275300498255801246e-04, + 1.276115213871192107e-04, + 1.276927790483142451e-04, + 1.277738226940574077e-04, + 1.278546522096008604e-04, + 1.279352674805549856e-04, + 1.280156683928873834e-04, + 1.280958548329192662e-04, + 1.281758266873409089e-04, + 1.282555838431901545e-04, + 1.283351261878661563e-04, + 1.284144536091259901e-04, + 1.284935659950829190e-04, + 1.285724632342176964e-04, + 1.286511452153611104e-04, + 1.287296118277052326e-04, + 1.288078629608012491e-04, + 1.288858985045597864e-04, + 1.289637183492473873e-04, + 1.290413223855008769e-04, + 1.291187105043059492e-04, + 1.291958825970115606e-04, + 1.292728385553266492e-04, + 1.293495782713206777e-04, + 1.294261016374191066e-04, + 1.295024085464193319e-04, + 1.295784988914679440e-04, + 1.296543725660762860e-04, + 1.297300294641162254e-04, + 1.298054694798171996e-04, + 1.298806925077802289e-04, + 1.299556984429578324e-04, + 1.300304871806661432e-04, + 1.301050586165839059e-04, + 1.301794126467507959e-04, + 1.302535491675659561e-04, + 1.303274680757996785e-04, + 1.304011692685754886e-04, + 1.304746526433804717e-04, + 1.305479180980664660e-04, + 1.306209655308423643e-04, + 1.306937948402914619e-04, + 1.307664059253525637e-04, + 1.308387986853174097e-04, + 1.309109730198607883e-04, + 1.309829288290071975e-04, + 1.310546660131446141e-04, + 1.311261844730348205e-04, + 1.311974841097963561e-04, + 1.312685648249010744e-04, + 1.313394265202053957e-04, + 1.314100690979163710e-04, + 1.314804924606045302e-04, + 1.315506965112187357e-04, + 1.316206811530480723e-04, + 1.316904462897705824e-04, + 1.317599918254146142e-04, + 1.318293176643740004e-04, + 1.318984237114175179e-04, + 1.319673098716716761e-04, + 1.320359760506186299e-04, + 1.321044221541256970e-04, + 1.321726480884121541e-04, + 1.322406537600629524e-04, + 1.323084390760420257e-04, + 1.323760039436564038e-04, + 1.324433482706003664e-04, + 1.325104719649231608e-04, + 1.325773749350426362e-04, + 1.326440570897389007e-04, + 1.327105183381724817e-04, + 1.327767585898474907e-04, + 1.328427777546569691e-04, + 1.329085757428480861e-04, + 1.329741524650347425e-04, + 1.330395078322102009e-04, + 1.331046417557166478e-04, + 1.331695541472723520e-04, + 1.332342449189693068e-04, + 1.332987139832573738e-04, + 1.333629612529569947e-04, + 1.334269866412567790e-04, + 1.334907900617099538e-04, + 1.335543714282464247e-04, + 1.336177306551549957e-04, + 1.336808676570926113e-04, + 1.337437823490966900e-04, + 1.338064746465549557e-04, + 1.338689444652322723e-04, + 1.339311917212679599e-04, + 1.339932163311615917e-04, + 1.340550182117836197e-04, + 1.341165972803742357e-04, + 1.341779534545417183e-04, + 1.342390866522616465e-04, + 1.342999967918861971e-04, + 1.343606837921291282e-04, + 1.344211475720755915e-04, + 1.344813880511809394e-04, + 1.345414051492666593e-04, + 1.346011987865333573e-04, + 1.346607688835415402e-04, + 1.347201153612262794e-04, + 1.347792381408906249e-04, + 1.348381371442091011e-04, + 1.348968122932225845e-04, + 1.349552635103518832e-04, + 1.350134907183783565e-04, + 1.350714938404574950e-04, + 1.351292728001155050e-04, + 1.351868275212460833e-04, + 1.352441579281221532e-04, + 1.353012639453783823e-04, + 1.353581454980247619e-04, + 1.354148025114407792e-04, + 1.354712349113775319e-04, + 1.355274426239554239e-04, + 1.355834255756733272e-04, + 1.356391836933933484e-04, + 1.356947169043521318e-04, + 1.357500251361582031e-04, + 1.358051083167909935e-04, + 1.358599663745997286e-04, + 1.359145992383129962e-04, + 1.359690068370232423e-04, + 1.360231891001982909e-04, + 1.360771459576772782e-04, + 1.361308773396694056e-04, + 1.361843831767633724e-04, + 1.362376633999157747e-04, + 1.362907179404470399e-04, + 1.363435467300665258e-04, + 1.363961497008451716e-04, + 1.364485267852263398e-04, + 1.365006779160356286e-04, + 1.365526030264607867e-04, + 1.366043020500678682e-04, + 1.366557749207944017e-04, + 1.367070215729508274e-04, + 1.367580419412197648e-04, + 1.368088359606652287e-04, + 1.368594035667078010e-04, + 1.369097446951595960e-04, + 1.369598592821946075e-04, + 1.370097472643618550e-04, + 1.370594085785905333e-04, + 1.371088431621792251e-04, + 1.371580509527921602e-04, + 1.372070318884822547e-04, + 1.372557859076671777e-04, + 1.373043129491376450e-04, + 1.373526129520687763e-04, + 1.374006858559917975e-04, + 1.374485316008312017e-04, + 1.374961501268732805e-04, + 1.375435413747807872e-04, + 1.375907052855967051e-04, + 1.376376418007346520e-04, + 1.376843508619747601e-04, + 1.377308324114861462e-04, + 1.377770863918037372e-04, + 1.378231127458365637e-04, + 1.378689114168776266e-04, + 1.379144823485812914e-04, + 1.379598254849830204e-04, + 1.380049407704988314e-04, + 1.380498281499119881e-04, + 1.380944875683830296e-04, + 1.381389189714484151e-04, + 1.381831223050175963e-04, + 1.382270975153802005e-04, + 1.382708445491965979e-04, + 1.383143633535016150e-04, + 1.383576538757136419e-04, + 1.384007160636142766e-04, + 1.384435498653673795e-04, + 1.384861552295160378e-04, + 1.385285321049726723e-04, + 1.385706804410273313e-04, + 1.386126001873462814e-04, + 1.386542912939688359e-04, + 1.386957537113175194e-04, + 1.387369873901826993e-04, + 1.387779922817347286e-04, + 1.388187683375183084e-04, + 1.388593155094557401e-04, + 1.388996337498415046e-04, + 1.389397230113539449e-04, + 1.389795832470402763e-04, + 1.390192144103269954e-04, + 1.390586164550159493e-04, + 1.390977893352863149e-04, + 1.391367330056903428e-04, + 1.391754474211639016e-04, + 1.392139325370127083e-04, + 1.392521883089208393e-04, + 1.392902146929487790e-04, + 1.393280116455326064e-04, + 1.393655791234898772e-04, + 1.394029170840090255e-04, + 1.394400254846577122e-04, + 1.394769042833800331e-04, + 1.395135534384960854e-04, + 1.395499729087023200e-04, + 1.395861626530765288e-04, + 1.396221226310685477e-04, + 1.396578528025059214e-04, + 1.396933531275947982e-04, + 1.397286235669164059e-04, + 1.397636640814285431e-04, + 1.397984746324711894e-04, + 1.398330551817551217e-04, + 1.398674056913712925e-04, + 1.399015261237877936e-04, + 1.399354164418467941e-04, + 1.399690766087742977e-04, + 1.400025065881692191e-04, + 1.400357063440023548e-04, + 1.400686758406337296e-04, + 1.401014150427915906e-04, + 1.401339239155837096e-04, + 1.401662024244986035e-04, + 1.401982505353984050e-04, + 1.402300682145229559e-04, + 1.402616554284909450e-04, + 1.402930121442978490e-04, + 1.403241383293149286e-04, + 1.403550339512979570e-04, + 1.403856989783686257e-04, + 1.404161333790370143e-04, + 1.404463371221855177e-04, + 1.404763101770732908e-04, + 1.405060525133416157e-04, + 1.405355641010073964e-04, + 1.405648449104597434e-04, + 1.405938949124745834e-04, + 1.406227140781992908e-04, + 1.406513023791603042e-04, + 1.406796597872661623e-04, + 1.407077862747939238e-04, + 1.407356818144082499e-04, + 1.407633463791451139e-04, + 1.407907799424194448e-04, + 1.408179824780277025e-04, + 1.408449539601412366e-04, + 1.408716943633056909e-04, + 1.408982036624516546e-04, + 1.409244818328833063e-04, + 1.409505288502817472e-04, + 1.409763446907121574e-04, + 1.410019293306091044e-04, + 1.410272827467893100e-04, + 1.410524049164495089e-04, + 1.410772958171612444e-04, + 1.411019554268743109e-04, + 1.411263837239169977e-04, + 1.411505806869941648e-04, + 1.411745462951927719e-04, + 1.411982805279730696e-04, + 1.412217833651738849e-04, + 1.412450547870170391e-04, + 1.412680947740947441e-04, + 1.412909033073802818e-04, + 1.413134803682277601e-04, + 1.413358259383660955e-04, + 1.413579399999028081e-04, + 1.413798225353232350e-04, + 1.414014735274897721e-04, + 1.414228929596462103e-04, + 1.414440808154103090e-04, + 1.414650370787799217e-04, + 1.414857617341303128e-04, + 1.415062547662144284e-04, + 1.415265161601619208e-04, + 1.415465459014844337e-04, + 1.415663439760674438e-04, + 1.415859103701761694e-04, + 1.416052450704528333e-04, + 1.416243480639178007e-04, + 1.416432193379693627e-04, + 1.416618588803856605e-04, + 1.416802666793190479e-04, + 1.416984427233023520e-04, + 1.417163870012447268e-04, + 1.417340995024335773e-04, + 1.417515802165358874e-04, + 1.417688291335941547e-04, + 1.417858462440289651e-04, + 1.418026315386398874e-04, + 1.418191850086031693e-04, + 1.418355066454716562e-04, + 1.418515964411801850e-04, + 1.418674543880368291e-04, + 1.418830804787286177e-04, + 1.418984747063218612e-04, + 1.419136370642588168e-04, + 1.419285675463583939e-04, + 1.419432661468211137e-04, + 1.419577328602210592e-04, + 1.419719676815115134e-04, + 1.419859706060229800e-04, + 1.419997416294632112e-04, + 1.420132807479191587e-04, + 1.420265879578543446e-04, + 1.420396632561070458e-04, + 1.420525066398969341e-04, + 1.420651181068193847e-04, + 1.420774976548462348e-04, + 1.420896452823287924e-04, + 1.421015609879943125e-04, + 1.421132447709475151e-04, + 1.421246966306706396e-04, + 1.421359165670211405e-04, + 1.421469045802386535e-04, + 1.421576606709350481e-04, + 1.421681848401000383e-04, + 1.421784770891039473e-04, + 1.421885374196902533e-04, + 1.421983658339807943e-04, + 1.422079623344756863e-04, + 1.422173269240512906e-04, + 1.422264596059581807e-04, + 1.422353603838280816e-04, + 1.422440292616678793e-04, + 1.422524662438601358e-04, + 1.422606713351671549e-04, + 1.422686445407235554e-04, + 1.422763858660447823e-04, + 1.422838953170215228e-04, + 1.422911728999195439e-04, + 1.422982186213847067e-04, + 1.423050324884361090e-04, + 1.423116145084702593e-04, + 1.423179646892617004e-04, + 1.423240830389598650e-04, + 1.423299695660902955e-04, + 1.423356242795569210e-04, + 1.423410471886369343e-04, + 1.423462383029866734e-04, + 1.423511976326372313e-04, + 1.423559251879962710e-04, + 1.423604209798468880e-04, + 1.423646850193490462e-04, + 1.423687173180384941e-04, + 1.423725178878274423e-04, + 1.423760867410026119e-04, + 1.423794238902282433e-04, + 1.423825293485439546e-04, + 1.423854031293642270e-04, + 1.423880452464793532e-04, + 1.423904557140574702e-04, + 1.423926345466398707e-04, + 1.423945817591434687e-04, + 1.423962973668634296e-04, + 1.423977813854666646e-04, + 1.423990338309980377e-04, + 1.424000547198769776e-04, + 1.424008440688981554e-04, + 1.424014018952316743e-04, + 1.424017282164224464e-04, + 1.424018230503901921e-04, + 1.424016864154318261e-04, + 1.424013183302160087e-04, + 1.424007188137890549e-04, + 1.423998878855702456e-04, + 1.423988255653551606e-04, + 1.423975318733130505e-04, + 1.423960068299884622e-04, + 1.423942504563006429e-04, + 1.423922627735429980e-04, + 1.423900438033838230e-04, + 1.423875935678645956e-04, + 1.423849120894036895e-04, + 1.423819993907911969e-04, + 1.423788554951925067e-04, + 1.423754804261476538e-04, + 1.423718742075703978e-04, + 1.423680368637481953e-04, + 1.423639684193428782e-04, + 1.423596688993897588e-04, + 1.423551383292980638e-04, + 1.423503767348516117e-04, + 1.423453841422064002e-04, + 1.423401605778932633e-04, + 1.423347060688159459e-04, + 1.423290206422519447e-04, + 1.423231043258521827e-04, + 1.423169571476403316e-04, + 1.423105791360147906e-04, + 1.423039703197442407e-04, + 1.422971307279739068e-04, + 1.422900603902194040e-04, + 1.422827593363706683e-04, + 1.422752275966898152e-04, + 1.422674652018122781e-04, + 1.422594721827454261e-04, + 1.422512485708698918e-04, + 1.422427943979386500e-04, + 1.422341096960773159e-04, + 1.422251944977834942e-04, + 1.422160488359267797e-04, + 1.422066727437496512e-04, + 1.421970662548670652e-04, + 1.421872294032644501e-04, + 1.421771622233008233e-04, + 1.421668647497065956e-04, + 1.421563370175828937e-04, + 1.421455790624042434e-04, + 1.421345909200151818e-04, + 1.421233726266331570e-04, + 1.421119242188459810e-04, + 1.421002457336131841e-04, + 1.420883372082654193e-04, + 1.420761986805058172e-04, + 1.420638301884058388e-04, + 1.420512317704096940e-04, + 1.420384034653337721e-04, + 1.420253453123615191e-04, + 1.420120573510505392e-04, + 1.419985396213283664e-04, + 1.419847921634914342e-04, + 1.419708150182075700e-04, + 1.419566082265157775e-04, + 1.419421718298236621e-04, + 1.419275058699104937e-04, + 1.419126103889239543e-04, + 1.418974854293831732e-04, + 1.418821310341765592e-04, + 1.418665472465619089e-04, + 1.418507341101667857e-04, + 1.418346916689890624e-04, + 1.418184199673944547e-04, + 1.418019190501194210e-04, + 1.417851889622694008e-04, + 1.417682297493172970e-04, + 1.417510414571080833e-04, + 1.417336241318542512e-04, + 1.417159778201353484e-04, + 1.416981025689019913e-04, + 1.416799984254721507e-04, + 1.416616654375331581e-04, + 1.416431036531399709e-04, + 1.416243131207161753e-04, + 1.416052938890533083e-04, + 1.415860460073121866e-04, + 1.415665695250178100e-04, + 1.415468644920685778e-04, + 1.415269309587268559e-04, + 1.415067689756230155e-04, + 1.414863785937555958e-04, + 1.414657598644907888e-04, + 1.414449128395613554e-04, + 1.414238375710677909e-04, + 1.414025341114777824e-04, + 1.413810025136248000e-04, + 1.413592428307099125e-04, + 1.413372551163014079e-04, + 1.413150394243336281e-04, + 1.412925958091076461e-04, + 1.412699243252899385e-04, + 1.412470250279142551e-04, + 1.412238979723805081e-04, + 1.412005432144538772e-04, + 1.411769608102659483e-04, + 1.411531508163151743e-04, + 1.411291132894622942e-04, + 1.411048482869367300e-04, + 1.410803558663323851e-04, + 1.410556360856081871e-04, + 1.410306890030895777e-04, + 1.410055146774634449e-04, + 1.409801131677852510e-04, + 1.409544845334740454e-04, + 1.409286288343130343e-04, + 1.409025461304502303e-04, + 1.408762364823997815e-04, + 1.408496999510358181e-04, + 1.408229365976000960e-04, + 1.407959464836998830e-04, + 1.407687296713006672e-04, + 1.407412862227373242e-04, + 1.407136162007059047e-04, + 1.406857196682644745e-04, + 1.406575966888372613e-04, + 1.406292473262105895e-04, + 1.406006716445332323e-04, + 1.405718697083196370e-04, + 1.405428415824420648e-04, + 1.405135873321386951e-04, + 1.404841070230134089e-04, + 1.404544007210254883e-04, + 1.404244684925011911e-04, + 1.403943104041295218e-04, + 1.403639265229566753e-04, + 1.403333169163959576e-04, + 1.403024816522198707e-04, + 1.402714207985626877e-04, + 1.402401344239210222e-04, + 1.402086225971527981e-04, + 1.401768853874732924e-04, + 1.401449228644667088e-04, + 1.401127350980700779e-04, + 1.400803221585858330e-04, + 1.400476841166767425e-04, + 1.400148210433616535e-04, + 1.399817330100267411e-04, + 1.399484200884148826e-04, + 1.399148823506262003e-04, + 1.398811198691246474e-04, + 1.398471327167340780e-04, + 1.398129209666331514e-04, + 1.397784846923677462e-04, + 1.397438239678348328e-04, + 1.397089388672959444e-04, + 1.396738294653711060e-04, + 1.396384958370344427e-04, + 1.396029380576256456e-04, + 1.395671562028404306e-04, + 1.395311503487293731e-04, + 1.394949205717057141e-04, + 1.394584669485398037e-04, + 1.394217895563557670e-04, + 1.393848884726429970e-04, + 1.393477637752445805e-04, + 1.393104155423581113e-04, + 1.392728438525436319e-04, + 1.392350487847151771e-04, + 1.391970304181451101e-04, + 1.391587888324639607e-04, + 1.391203241076541090e-04, + 1.390816363240595440e-04, + 1.390427255623797372e-04, + 1.390035919036652250e-04, + 1.389642354293310253e-04, + 1.389246562211436003e-04, + 1.388848543612224010e-04, + 1.388448299320470237e-04, + 1.388045830164503244e-04, + 1.387641136976214013e-04, + 1.387234220591052145e-04, + 1.386825081847969487e-04, + 1.386413721589523399e-04, + 1.386000140661776197e-04, + 1.385584339914365352e-04, + 1.385166320200445218e-04, + 1.384746082376748827e-04, + 1.384323627303482996e-04, + 1.383898955844448130e-04, + 1.383472068866960973e-04, + 1.383042967241876020e-04, + 1.382611651843574133e-04, + 1.382178123549992631e-04, + 1.381742383242542613e-04, + 1.381304431806209523e-04, + 1.380864270129495146e-04, + 1.380421899104415434e-04, + 1.379977319626533036e-04, + 1.379530532594877611e-04, + 1.379081538912049906e-04, + 1.378630339484147220e-04, + 1.378176935220784820e-04, + 1.377721327035090243e-04, + 1.377263515843715226e-04, + 1.376803502566783393e-04, + 1.376341288127962354e-04, + 1.375876873454414642e-04, + 1.375410259476806394e-04, + 1.374941447129317371e-04, + 1.374470437349629309e-04, + 1.373997231078880380e-04, + 1.373521829261744882e-04, + 1.373044232846401525e-04, + 1.372564442784496839e-04, + 1.372082460031201555e-04, + 1.371598285545110854e-04, + 1.371111920288359840e-04, + 1.370623365226612150e-04, + 1.370132621328903563e-04, + 1.369639689567842033e-04, + 1.369144570919506043e-04, + 1.368647266363367903e-04, + 1.368147776882525221e-04, + 1.367646103463416847e-04, + 1.367142247096020467e-04, + 1.366636208773790802e-04, + 1.366127989493597268e-04, + 1.365617590255807461e-04, + 1.365105012064324558e-04, + 1.364590255926389996e-04, + 1.364073322852782692e-04, + 1.363554213857746673e-04, + 1.363032929958910033e-04, + 1.362509472177465179e-04, + 1.361983841538006476e-04, + 1.361456039068534578e-04, + 1.360926065800564853e-04, + 1.360393922769057452e-04, + 1.359859611012343848e-04, + 1.359323131572338808e-04, + 1.358784485494249545e-04, + 1.358243673826822111e-04, + 1.357700697622222130e-04, + 1.357155557935978694e-04, + 1.356608255827180328e-04, + 1.356058792358289867e-04, + 1.355507168595145538e-04, + 1.354953385607086187e-04, + 1.354397444466877009e-04, + 1.353839346250616305e-04, + 1.353279092037989193e-04, + 1.352716682911929327e-04, + 1.352152119958886973e-04, + 1.351585404268710287e-04, + 1.351016536934658053e-04, + 1.350445519053398600e-04, + 1.349872351725036907e-04, + 1.349297036053012688e-04, + 1.348719573144239168e-04, + 1.348139964109046980e-04, + 1.347558210061059749e-04, + 1.346974312117453216e-04, + 1.346388271398717531e-04, + 1.345800089028705493e-04, + 1.345209766134723088e-04, + 1.344617303847447356e-04, + 1.344022703300948079e-04, + 1.343425965632697534e-04, + 1.342827091983498668e-04, + 1.342226083497584843e-04, + 1.341622941322566170e-04, + 1.341017666609422459e-04, + 1.340410260512507829e-04, + 1.339800724189582691e-04, + 1.339189058801699636e-04, + 1.338575265513360102e-04, + 1.337959345492404598e-04, + 1.337341299910043064e-04, + 1.336721129940844025e-04, + 1.336098836762767122e-04, + 1.335474421557052789e-04, + 1.334847885508372691e-04, + 1.334219229804732142e-04, + 1.333588455637485016e-04, + 1.332955564201371149e-04, + 1.332320556694381629e-04, + 1.331683434317952868e-04, + 1.331044198276820504e-04, + 1.330402849779075780e-04, + 1.329759390036141695e-04, + 1.329113820262807423e-04, + 1.328466141677110408e-04, + 1.327816355500515528e-04, + 1.327164462957777671e-04, + 1.326510465276979688e-04, + 1.325854363689542683e-04, + 1.325196159430221956e-04, + 1.324535853737027311e-04, + 1.323873447851357495e-04, + 1.323208943017910484e-04, + 1.322542340484690257e-04, + 1.321873641503043659e-04, + 1.321202847327547102e-04, + 1.320529959216132875e-04, + 1.319854978430132241e-04, + 1.319177906234003574e-04, + 1.318498743895617502e-04, + 1.317817492686149301e-04, + 1.317134153879946624e-04, + 1.316448728754863974e-04, + 1.315761218591832821e-04, + 1.315071624675199873e-04, + 1.314379948292587210e-04, + 1.313686190734825881e-04, + 1.312990353296075979e-04, + 1.312292437273872173e-04, + 1.311592443968844532e-04, + 1.310890374685021826e-04, + 1.310186230729698715e-04, + 1.309480013413324886e-04, + 1.308771724049796162e-04, + 1.308061363956179116e-04, + 1.307348934452756337e-04, + 1.306634436863140809e-04, + 1.305917872514217911e-04, + 1.305199242736001760e-04, + 1.304478548861972664e-04, + 1.303755792228654831e-04, + 1.303030974175930785e-04, + 1.302304096046937281e-04, + 1.301575159187932766e-04, + 1.300844164948593360e-04, + 1.300111114681743710e-04, + 1.299376009743384900e-04, + 1.298638851492847060e-04, + 1.297899641292686091e-04, + 1.297158380508561966e-04, + 1.296415070509584588e-04, + 1.295669712667858156e-04, + 1.294922308358843288e-04, + 1.294172858961180838e-04, + 1.293421365856735805e-04, + 1.292667830430579447e-04, + 1.291912254071027495e-04, + 1.291154638169508969e-04, + 1.290394984120754823e-04, + 1.289633293322670830e-04, + 1.288869567176351941e-04, + 1.288103807086105870e-04, + 1.287336014459464207e-04, + 1.286566190707050955e-04, + 1.285794337242779860e-04, + 1.285020455483720239e-04, + 1.284244546850129502e-04, + 1.283466612765476198e-04, + 1.282686654656311261e-04, + 1.281904673952471031e-04, + 1.281120672086925188e-04, + 1.280334650495818503e-04, + 1.279546610618465679e-04, + 1.278756553897382800e-04, + 1.277964481778150988e-04, + 1.277170395709613729e-04, + 1.276374297143739722e-04, + 1.275576187535657304e-04, + 1.274776068343649025e-04, + 1.273973941029180653e-04, + 1.273169807056772154e-04, + 1.272363667894176585e-04, + 1.271555525012271672e-04, + 1.270745379885074723e-04, + 1.269933233989773520e-04, + 1.269119088806586193e-04, + 1.268302945818971280e-04, + 1.267484806513482446e-04, + 1.266664672379799381e-04, + 1.265842544910731867e-04, + 1.265018425602242817e-04, + 1.264192315953313291e-04, + 1.263364217466144161e-04, + 1.262534131646019496e-04, + 1.261702060001329876e-04, + 1.260868004043614677e-04, + 1.260031965287413801e-04, + 1.259193945250474767e-04, + 1.258353945453609586e-04, + 1.257511967420735699e-04, + 1.256668012678860251e-04, + 1.255822082758121833e-04, + 1.254974179191636256e-04, + 1.254124303515684389e-04, + 1.253272457269734655e-04, + 1.252418641996132405e-04, + 1.251562859240434942e-04, + 1.250705110551278160e-04, + 1.249845397480230992e-04, + 1.248983721582180568e-04, + 1.248120084414838099e-04, + 1.247254487539112646e-04, + 1.246386932518986444e-04, + 1.245517420921385876e-04, + 1.244645954316373382e-04, + 1.243772534277170767e-04, + 1.242897162379829874e-04, + 1.242019840203602299e-04, + 1.241140569330783532e-04, + 1.240259351346566328e-04, + 1.239376187839431550e-04, + 1.238491080400660831e-04, + 1.237604030624692728e-04, + 1.236715040108980149e-04, + 1.235824110454029391e-04, + 1.234931243263232893e-04, + 1.234036440143261180e-04, + 1.233139702703540822e-04, + 1.232241032556673471e-04, + 1.231340431318276218e-04, + 1.230437900606814897e-04, + 1.229533442044004421e-04, + 1.228627057254441787e-04, + 1.227718747865664075e-04, + 1.226808515508298885e-04, + 1.225896361815996571e-04, + 1.224982288425235629e-04, + 1.224066296975762070e-04, + 1.223148389110029156e-04, + 1.222228566473642470e-04, + 1.221306830715182372e-04, + 1.220383183486052484e-04, + 1.219457626440880713e-04, + 1.218530161237135436e-04, + 1.217600789535183784e-04, + 1.216669512998480693e-04, + 1.215736333293405600e-04, + 1.214801252089298356e-04, + 1.213864271058459632e-04, + 1.212925391876190764e-04, + 1.211984616220609847e-04, + 1.211041945772930236e-04, + 1.210097382217254549e-04, + 1.209150927240634299e-04, + 1.208202582533099439e-04, + 1.207252349787510094e-04, + 1.206300230699764326e-04, + 1.205346226968668024e-04, + 1.204390340295949277e-04, + 1.203432572386264600e-04, + 1.202472924947228078e-04, + 1.201511399689266895e-04, + 1.200547998325830718e-04, + 1.199582722573250618e-04, + 1.198615574150774303e-04, + 1.197646554780590518e-04, + 1.196675666187672102e-04, + 1.195702910100023865e-04, + 1.194728288248498275e-04, + 1.193751802366848584e-04, + 1.192773454191724350e-04, + 1.191793245462705871e-04, + 1.190811177922126637e-04, + 1.189827253315345606e-04, + 1.188841473390541336e-04, + 1.187853839898786126e-04, + 1.186864354594020392e-04, + 1.185873019233099835e-04, + 1.184879835575621291e-04, + 1.183884805384167354e-04, + 1.182887930424157566e-04, + 1.181889212463850590e-04, + 1.180888653274420372e-04, + 1.179886254629758819e-04, + 1.178882018306686807e-04, + 1.177875946085012193e-04, + 1.176868039747124451e-04, + 1.175858301078421854e-04, + 1.174846731867143013e-04, + 1.173833333904236639e-04, + 1.172818108983602096e-04, + 1.171801058901929759e-04, + 1.170782185458733941e-04, + 1.169761490456351134e-04, + 1.168738975699976058e-04, + 1.167714642997450783e-04, + 1.166688494159733919e-04, + 1.165660531000280181e-04, + 1.164630755335530716e-04, + 1.163599168984732996e-04, + 1.162565773769793769e-04, + 1.161530571515505250e-04, + 1.160493564049596625e-04, + 1.159454753202307005e-04, + 1.158414140806848791e-04, + 1.157371728699213738e-04, + 1.156327518717993787e-04, + 1.155281512704880070e-04, + 1.154233712504013884e-04, + 1.153184119962487992e-04, + 1.152132736930124637e-04, + 1.151079565259550486e-04, + 1.150024606805968272e-04, + 1.148967863427666772e-04, + 1.147909336985362971e-04, + 1.146849029342704180e-04, + 1.145786942366089280e-04, + 1.144723077924486576e-04, + 1.143657437889873983e-04, + 1.142590024136825672e-04, + 1.141520838542566283e-04, + 1.140449882987184784e-04, + 1.139377159353458283e-04, + 1.138302669526879683e-04, + 1.137226415395720694e-04, + 1.136148398850827872e-04, + 1.135068621785899226e-04, + 1.133987086097350722e-04, + 1.132903793684115167e-04, + 1.131818746448111395e-04, + 1.130731946293823736e-04, + 1.129643395128340501e-04, + 1.128553094861583020e-04, + 1.127461047406120383e-04, + 1.126367254677209550e-04, + 1.125271718592790342e-04, + 1.124174441073539103e-04, + 1.123075424042662573e-04, + 1.121974669426185737e-04, + 1.120872179152761282e-04, + 1.119767955153706048e-04, + 1.118661999363053887e-04, + 1.117554313717355222e-04, + 1.116444900155967742e-04, + 1.115333760620843771e-04, + 1.114220897056602226e-04, + 1.113106311410497722e-04, + 1.111990005632492530e-04, + 1.110871981675032289e-04, + 1.109752241493353780e-04, + 1.108630787045277979e-04, + 1.107507620291255595e-04, + 1.106382743194415995e-04, + 1.105256157720367843e-04, + 1.104127865837488046e-04, + 1.102997869516721303e-04, + 1.101866170731624975e-04, + 1.100732771458370023e-04, + 1.099597673675783706e-04, + 1.098460879365152523e-04, + 1.097322390510502619e-04, + 1.096182209098420479e-04, + 1.095040337118079226e-04, + 1.093896776561240514e-04, + 1.092751529422310232e-04, + 1.091604597698122881e-04, + 1.090455983388243660e-04, + 1.089305688494765316e-04, + 1.088153715022350425e-04, + 1.087000064978287637e-04, + 1.085844740372279442e-04, + 1.084687743216688284e-04, + 1.083529075526587656e-04, + 1.082368739319307274e-04, + 1.081206736614931678e-04, + 1.080043069436086641e-04, + 1.078877739807802426e-04, + 1.077710749757795271e-04, + 1.076542101316274266e-04, + 1.075371796515976590e-04, + 1.074199837392177944e-04, + 1.073026225982727386e-04, + 1.071850964327802024e-04, + 1.070674054470441668e-04, + 1.069495498455867136e-04, + 1.068315298332000399e-04, + 1.067133456149279186e-04, + 1.065949973960496518e-04, + 1.064764853821049669e-04, + 1.063578097788985975e-04, + 1.062389707924543539e-04, + 1.061199686290663108e-04, + 1.060008034952767574e-04, + 1.058814755978558823e-04, + 1.057619851438589920e-04, + 1.056423323405520401e-04, + 1.055225173954696182e-04, + 1.054025405163935435e-04, + 1.052824019113367303e-04, + 1.051621017885687241e-04, + 1.050416403566211353e-04, + 1.049210178242395011e-04, + 1.048002344004353540e-04, + 1.046792902944660423e-04, + 1.045581857158119077e-04, + 1.044369208742291805e-04, + 1.043154959797023564e-04, + 1.041939112424487227e-04, + 1.040721668729445556e-04, + 1.039502630819036936e-04, + 1.038282000802821586e-04, + 1.037059780792840246e-04, + 1.035835972903382835e-04, + 1.034610579251318043e-04, + 1.033383601955922983e-04, + 1.032155043138669327e-04, + 1.030924904923743047e-04, + 1.029693189437583630e-04, + 1.028459898808904000e-04, + 1.027225035168976202e-04, + 1.025988600651406030e-04, + 1.024750597392189941e-04, + 1.023511027529740402e-04, + 1.022269893204706996e-04, + 1.021027196560258718e-04, + 1.019782939741887201e-04, + 1.018537124897448852e-04, + 1.017289754177160661e-04, + 1.016040829733655762e-04, + 1.014790353721754665e-04, + 1.013538328298794724e-04, + 1.012284755624408273e-04, + 1.011029637860565730e-04, + 1.009772977171579934e-04, + 1.008514775724157639e-04, + 1.007255035687173463e-04, + 1.005993759231993114e-04, + 1.004730948532248146e-04, + 1.003466605763902639e-04, + 1.002200733105283964e-04, + 1.000933332736874071e-04, + 9.996644068416243162e-05, + 9.983939576047444497e-05, + 9.971219872137396126e-05, + 9.958484978584245678e-05, + 9.945734917309522957e-05, + 9.932969710256100287e-05, + 9.920189379391347541e-05, + 9.907393946704932562e-05, + 9.894583434209317191e-05, + 9.881757863939742356e-05, + 9.868917257954730872e-05, + 9.856061638333845850e-05, + 9.843191027180901297e-05, + 9.830305446621838427e-05, + 9.817404918805148508e-05, + 9.804489465902452901e-05, + 9.791559110106102918e-05, + 9.778613873632113936e-05, + 9.765653778720635671e-05, + 9.752678847630741235e-05, + 9.739689102646149010e-05, + 9.726684566072949889e-05, + 9.713665260237671977e-05, + 9.700631207490895049e-05, + 9.687582430204786700e-05, + 9.674518950773687814e-05, + 9.661440791614569286e-05, + 9.648347975164855484e-05, + 9.635240523885140178e-05, + 9.622118460259670362e-05, + 9.608981806791289809e-05, + 9.595830586007047104e-05, + 9.582664820455913401e-05, + 9.569484532706891845e-05, + 9.556289745352049270e-05, + 9.543080481006913291e-05, + 9.529856762305264066e-05, + 9.516618611904976792e-05, + 9.503366052485454855e-05, + 9.490099106745556292e-05, + 9.476817797409585367e-05, + 9.463522147219547299e-05, + 9.450212178941145257e-05, + 9.436887915361523861e-05, + 9.423549379287602225e-05, + 9.410196593548769554e-05, + 9.396829580997577674e-05, + 9.383448364504341711e-05, + 9.370052966963032727e-05, + 9.356643411288793541e-05, + 9.343219720415636156e-05, + 9.329781917302872431e-05, + 9.316330024926754887e-05, + 9.302864066287034770e-05, + 9.289384064403872078e-05, + 9.275890042318423736e-05, + 9.262382023092781262e-05, + 9.248860029810619925e-05, + 9.235324085574629193e-05, + 9.221774213510209857e-05, + 9.208210436763473680e-05, + 9.194632778499022138e-05, + 9.181041261905635771e-05, + 9.167435910191064591e-05, + 9.153816746582503776e-05, + 9.140183794329526437e-05, + 9.126537076701660427e-05, + 9.112876616988996846e-05, + 9.099202438502690133e-05, + 9.085514564572559268e-05, + 9.071813018550599231e-05, + 9.058097823808626927e-05, + 9.044369003738697251e-05, + 9.030626581753250809e-05, + 9.016870581285520495e-05, + 9.003101025787138112e-05, + 8.989317938731767807e-05, + 8.975521343612541934e-05, + 8.961711263942714282e-05, + 8.947887723255574697e-05, + 8.934050745105003380e-05, + 8.920200353063097837e-05, + 8.906336570723666726e-05, + 8.892459421699779553e-05, + 8.878568929624365699e-05, + 8.864665118150813440e-05, + 8.850748010950407164e-05, + 8.836817631716029921e-05, + 8.822874004159620971e-05, + 8.808917152012744986e-05, + 8.794947099026623227e-05, + 8.780963868972603808e-05, + 8.766967485639798145e-05, + 8.752957972838570726e-05, + 8.738935354398174194e-05, + 8.724899654167245374e-05, + 8.710850896013795782e-05, + 8.696789103825775414e-05, + 8.682714301508564169e-05, + 8.668626512988654074e-05, + 8.654525762211132578e-05, + 8.640412073140219234e-05, + 8.626285469759904020e-05, + 8.612145976071411662e-05, + 8.597993616096210299e-05, + 8.583828413876663354e-05, + 8.569650393470378132e-05, + 8.555459578956353249e-05, + 8.541255994432453793e-05, + 8.527039664013549207e-05, + 8.512810611835154855e-05, + 8.498568862050968171e-05, + 8.484314438833290143e-05, + 8.470047366373868280e-05, + 8.455767668881130543e-05, + 8.441475370583352567e-05, + 8.427170495729266171e-05, + 8.412853068582323932e-05, + 8.398523113427006526e-05, + 8.384180654566152882e-05, + 8.369825716319230881e-05, + 8.355458323025199648e-05, + 8.341078499043237324e-05, + 8.326686268747088304e-05, + 8.312281656531118510e-05, + 8.297864686807993842e-05, + 8.283435384005930369e-05, + 8.268993772575668460e-05, + 8.254539876981664996e-05, + 8.240073721708839820e-05, + 8.225595331260125438e-05, + 8.211104730153848672e-05, + 8.196601942930039362e-05, + 8.182086994144703064e-05, + 8.167559908370323855e-05, + 8.153020710199183343e-05, + 8.138469424241154314e-05, + 8.123906075121356150e-05, + 8.109330687486951416e-05, + 8.094743285998297420e-05, + 8.080143895335832247e-05, + 8.065532540196879076e-05, + 8.050909245296283150e-05, + 8.036274035366283025e-05, + 8.021626935157189549e-05, + 8.006967969434718732e-05, + 7.992297162983856920e-05, + 7.977614540606827918e-05, + 7.962920127120522076e-05, + 7.948213947362939161e-05, + 7.933496026187219824e-05, + 7.918766388462378789e-05, + 7.904025059076377215e-05, + 7.889272062933605988e-05, + 7.874507424955385813e-05, + 7.859731170080662454e-05, + 7.844943323263307074e-05, + 7.830143909476039693e-05, + 7.815332953708342093e-05, + 7.800510480963889620e-05, + 7.785676516266989988e-05, + 7.770831084656649979e-05, + 7.755974211187291023e-05, + 7.741105920931844588e-05, + 7.726226238979121640e-05, + 7.711335190434529571e-05, + 7.696432800419889236e-05, + 7.681519094074158662e-05, + 7.666594096550671041e-05, + 7.651657833021094780e-05, + 7.636710328672777204e-05, + 7.621751608709290723e-05, + 7.606781698351136210e-05, + 7.591800622832957954e-05, + 7.576808407407570117e-05, + 7.561805077343201507e-05, + 7.546790657924135255e-05, + 7.531765174450655959e-05, + 7.516728652239683948e-05, + 7.501681116622108136e-05, + 7.486622592946625462e-05, + 7.471553106577214691e-05, + 7.456472682893532154e-05, + 7.441381347291716765e-05, + 7.426279125181634792e-05, + 7.411166041990819577e-05, + 7.396042123161706823e-05, + 7.380907394152432834e-05, + 7.365761880436537715e-05, + 7.350605607503859845e-05, + 7.335438600857585481e-05, + 7.320260886017723636e-05, + 7.305072488521612939e-05, + 7.289873433917955811e-05, + 7.274663747773390090e-05, + 7.259443455669811046e-05, + 7.244212583202265326e-05, + 7.228971155983019412e-05, + 7.213719199638763747e-05, + 7.198456739811248336e-05, + 7.183183802157925148e-05, + 7.167900412349245730e-05, + 7.152606596071946351e-05, + 7.137302379029652436e-05, + 7.121987786936832788e-05, + 7.106662845525405089e-05, + 7.091327580542173116e-05, + 7.075982017746568892e-05, + 7.060626182914708955e-05, + 7.045260101836759749e-05, + 7.029883800317416026e-05, + 7.014497304175950992e-05, + 6.999100639246827525e-05, + 6.983693831376307335e-05, + 6.968276906429739508e-05, + 6.952849890282186229e-05, + 6.937412808825712683e-05, + 6.921965687966713141e-05, + 6.906508553623115076e-05, + 6.891041431731124252e-05, + 6.875564348239038000e-05, + 6.860077329107989248e-05, + 6.844580400315189645e-05, + 6.829073587851865505e-05, + 6.813556917720587963e-05, + 6.798030415942556105e-05, + 6.782494108548168469e-05, + 6.766948021584383429e-05, + 6.751392181111322928e-05, + 6.735826613202826774e-05, + 6.720251343946533962e-05, + 6.704666399444434257e-05, + 6.689071805810088570e-05, + 6.673467589172751640e-05, + 6.657853775675200917e-05, + 6.642230391470967782e-05, + 6.626597462731246624e-05, + 6.610955015638546838e-05, + 6.595303076387366381e-05, + 6.579641671187659872e-05, + 6.563970826261964094e-05, + 6.548290567846067490e-05, + 6.532600922189628161e-05, + 6.516901915553466069e-05, + 6.501193574213529861e-05, + 6.485475924458863992e-05, + 6.469748992588829101e-05, + 6.454012804919833550e-05, + 6.438267387779232078e-05, + 6.422512767505886874e-05, + 6.406748970453542157e-05, + 6.390976022988112317e-05, + 6.375193951488290420e-05, + 6.359402782346129613e-05, + 6.343602541964358371e-05, + 6.327793256760378489e-05, + 6.311974953163509853e-05, + 6.296147657615598951e-05, + 6.280311396571014806e-05, + 6.264466196497317117e-05, + 6.248612083872315357e-05, + 6.232749085188374414e-05, + 6.216877226949416772e-05, + 6.200996535671707201e-05, + 6.185107037883707745e-05, + 6.169208760126816335e-05, + 6.153301728952443510e-05, + 6.137385970926227251e-05, + 6.121461512625204571e-05, + 6.105528380638376653e-05, + 6.089586601567478633e-05, + 6.073636202024009569e-05, + 6.057677208633527907e-05, + 6.041709648032673997e-05, + 6.025733546869930385e-05, + 6.009748931805528982e-05, + 5.993755829512081255e-05, + 5.977754266671819609e-05, + 5.961744269980625199e-05, + 5.945725866145346565e-05, + 5.929699081884281419e-05, + 5.913663943927272872e-05, + 5.897620479016288804e-05, + 5.881568713902590739e-05, + 5.865508675350929711e-05, + 5.849440390136597230e-05, + 5.833363885046247924e-05, + 5.817279186878365744e-05, + 5.801186322440584627e-05, + 5.785085318553015649e-05, + 5.768976202049010701e-05, + 5.752858999768726401e-05, + 5.736733738566147684e-05, + 5.720600445306191635e-05, + 5.704459146862579059e-05, + 5.688309870122039153e-05, + 5.672152641981408592e-05, + 5.655987489348243420e-05, + 5.639814439140903077e-05, + 5.623633518289135872e-05, + 5.607444753730438770e-05, + 5.591248172417965969e-05, + 5.575043801310357734e-05, + 5.558831667379668617e-05, + 5.542611797608385231e-05, + 5.526384218986603254e-05, + 5.510148958519025278e-05, + 5.493906043218581633e-05, + 5.477655500107038222e-05, + 5.461397356218546600e-05, + 5.445131638597454566e-05, + 5.428858374295388983e-05, + 5.412577590379122339e-05, + 5.396289313920446979e-05, + 5.379993572004074871e-05, + 5.363690391724631660e-05, + 5.347379800183845187e-05, + 5.331061824497607045e-05, + 5.314736491789516146e-05, + 5.298403829191481135e-05, + 5.282063863847384990e-05, + 5.265716622910749251e-05, + 5.249362133541895435e-05, + 5.233000422915090610e-05, + 5.216631518212001524e-05, + 5.200255446622332930e-05, + 5.183872235347495574e-05, + 5.167481911597573822e-05, + 5.151084502592045294e-05, + 5.134680035560462561e-05, + 5.118268537739487849e-05, + 5.101850036377218327e-05, + 5.085424558730953332e-05, + 5.068992132064243305e-05, + 5.052552783654129547e-05, + 5.036106540784551598e-05, + 5.019653430746993689e-05, + 5.003193480844128339e-05, + 4.986726718386802276e-05, + 4.970253170694800116e-05, + 4.953772865097444747e-05, + 4.937285828930679466e-05, + 4.920792089541421726e-05, + 4.904291674284512470e-05, + 4.887784610523508944e-05, + 4.871270925630578316e-05, + 4.854750646987140744e-05, + 4.838223801981047058e-05, + 4.821690418010747520e-05, + 4.805150522482418010e-05, + 4.788604142810657982e-05, + 4.772051306418394916e-05, + 4.755492040737568048e-05, + 4.738926373206226090e-05, + 4.722354331272788828e-05, + 4.705775942393123837e-05, + 4.689191234031210559e-05, + 4.672600233659869427e-05, + 4.656002968757718644e-05, + 4.639399466813574013e-05, + 4.622789755323455859e-05, + 4.606173861791305961e-05, + 4.589551813728848635e-05, + 4.572923638656409989e-05, + 4.556289364099870630e-05, + 4.539649017594986216e-05, + 4.523002626684493991e-05, + 4.506350218918698928e-05, + 4.489691821855528619e-05, + 4.473027463061174987e-05, + 4.456357170107075463e-05, + 4.439680970574353465e-05, + 4.422998892050765022e-05, + 4.406310962131433314e-05, + 4.389617208419519526e-05, + 4.372917658523225705e-05, + 4.356212340059439713e-05, + 4.339501280654456899e-05, + 4.322784507937221452e-05, + 4.306062049546743024e-05, + 4.289333933129061641e-05, + 4.272600186334246495e-05, + 4.255860836824450211e-05, + 4.239115912263579110e-05, + 4.222365440325337313e-05, + 4.205609448690230957e-05, + 4.188847965043291364e-05, + 4.172081017077768788e-05, + 4.155308632495793099e-05, + 4.138530839001661215e-05, + 4.121747664309211712e-05, + 4.104959136138833779e-05, + 4.088165282214385374e-05, + 4.071366130270678965e-05, + 4.054561708046646986e-05, + 4.037752043286099425e-05, + 4.020937163741373523e-05, + 4.004117097171075917e-05, + 3.987291871337028584e-05, + 3.970461514012447784e-05, + 3.953626052971432052e-05, + 3.936785515997161467e-05, + 3.919939930878822590e-05, + 3.903089325408621484e-05, + 3.886233727389151548e-05, + 3.869373164626668072e-05, + 3.852507664931795005e-05, + 3.835637256123181424e-05, + 3.818761966025213867e-05, + 3.801881822465036137e-05, + 3.784996853280650318e-05, + 3.768107086310463040e-05, + 3.751212549401437320e-05, + 3.734313270405312761e-05, + 3.717409277179298092e-05, + 3.700500597586046768e-05, + 3.683587259494365090e-05, + 3.666669290776110036e-05, + 3.649746719310715799e-05, + 3.632819572982876310e-05, + 3.615887879679444416e-05, + 3.598951667296994191e-05, + 3.582010963734905763e-05, + 3.565065796896142546e-05, + 3.548116194690971410e-05, + 3.531162185033850346e-05, + 3.514203795844177239e-05, + 3.497241055046977664e-05, + 3.480273990569868436e-05, + 3.463302630347521140e-05, + 3.446327002318595191e-05, + 3.429347134426439858e-05, + 3.412363054619067831e-05, + 3.395374790849861992e-05, + 3.378382371074507118e-05, + 3.361385823255445279e-05, + 3.344385175358863781e-05, + 3.327380455355338919e-05, + 3.310371691219877988e-05, + 3.293358910932534564e-05, + 3.276342142475403911e-05, + 3.259321413837077021e-05, + 3.242296753009609589e-05, + 3.225268187989169824e-05, + 3.208235746776823142e-05, + 3.191199457375400850e-05, + 3.174159347794031441e-05, + 3.157115446045043834e-05, + 3.140067780144686340e-05, + 3.123016378113102268e-05, + 3.105961267974983829e-05, + 3.088902477756573647e-05, + 3.071840035490101172e-05, + 3.054773969210730655e-05, + 3.037704306957282819e-05, + 3.020631076772171161e-05, + 3.003554306702115495e-05, + 2.986474024795085855e-05, + 2.969390259104760598e-05, + 2.952303037687506904e-05, + 2.935212388603043832e-05, + 2.918118339915178221e-05, + 2.901020919688710310e-05, + 2.883920155993213879e-05, + 2.866816076903696929e-05, + 2.849708710493761729e-05, + 2.832598084843167120e-05, + 2.815484228034666035e-05, + 2.798367168151046644e-05, + 2.781246933283309950e-05, + 2.764123551520079501e-05, + 2.746997050955883005e-05, + 2.729867459688058965e-05, + 2.712734805814436483e-05, + 2.695599117437093382e-05, + 2.678460422663081936e-05, + 2.661318749597515394e-05, + 2.644174126351137740e-05, + 2.627026581037235413e-05, + 2.609876141768566979e-05, + 2.592722836664867171e-05, + 2.575566693846051644e-05, + 2.558407741432809906e-05, + 2.541246007550479640e-05, + 2.524081520326640457e-05, + 2.506914307888055430e-05, + 2.489744398368989292e-05, + 2.472571819900503637e-05, + 2.455396600618807310e-05, + 2.438218768662115605e-05, + 2.421038352167629413e-05, + 2.403855379279031795e-05, + 2.386669878139640913e-05, + 2.369481876893089008e-05, + 2.352291403687117107e-05, + 2.335098486671225357e-05, + 2.317903153993565766e-05, + 2.300705433809321733e-05, + 2.283505354269947001e-05, + 2.266302943531533327e-05, + 2.249098229750933780e-05, + 2.231891241086490514e-05, + 2.214682005697994448e-05, + 2.197470551747385931e-05, + 2.180256907395667818e-05, + 2.163041100807428283e-05, + 2.145823160147765414e-05, + 2.128603113582971617e-05, + 2.111380989280513284e-05, + 2.094156815409742981e-05, + 2.076930620138781348e-05, + 2.059702431639079899e-05, + 2.042472278082307666e-05, + 2.025240187641067448e-05, + 2.008006188489606307e-05, + 1.990770308800740495e-05, + 1.973532576750365060e-05, + 1.956293020514360143e-05, + 1.939051668269323490e-05, + 1.921808548192493882e-05, + 1.904563688462518209e-05, + 1.887317117256285596e-05, + 1.870068862753526795e-05, + 1.852818953133674742e-05, + 1.835567416576587243e-05, + 1.818314281262515468e-05, + 1.801059575372813084e-05, + 1.783803327086830355e-05, + 1.766545564586456953e-05, + 1.749286316053026553e-05, + 1.732025609668019878e-05, + 1.714763473613799920e-05, + 1.697499936070492147e-05, + 1.680235025220535447e-05, + 1.662968769245579608e-05, + 1.645701196327200899e-05, + 1.628432334646850904e-05, + 1.611162212386586326e-05, + 1.593890857725952927e-05, + 1.576618298846537138e-05, + 1.559344563928856435e-05, + 1.542069681153077285e-05, + 1.524793678699747318e-05, + 1.507516584746660968e-05, + 1.490238427473433284e-05, + 1.472959235058383690e-05, + 1.455679035679246652e-05, + 1.438397857513137454e-05, + 1.421115728737269296e-05, + 1.403832677525834182e-05, + 1.386548732053802709e-05, + 1.369263920497638960e-05, + 1.351978271028349419e-05, + 1.334691811819114562e-05, + 1.317404571042166867e-05, + 1.300116576865678643e-05, + 1.282827857462167650e-05, + 1.265538440997686073e-05, + 1.248248355640237325e-05, + 1.230957629556651675e-05, + 1.213666290910232011e-05, + 1.196374367864555320e-05, + 1.179081888584196054e-05, + 1.161788881227761319e-05, + 1.144495373955529925e-05, + 1.127201394926331239e-05, + 1.109906972294433356e-05, + 1.092612134217946681e-05, + 1.075316908848006133e-05, + 1.058021324337204039e-05, + 1.040725408835681578e-05, + 1.023429190492630068e-05, + 1.006132697452394614e-05, + 9.888359578628969996e-06, + 9.715389998648156928e-06, + 9.542418515999973890e-06, + 9.369445412083458592e-06, + 9.196470968246853875e-06, + 9.023495465864228611e-06, + 8.850519186265682196e-06, + 8.677542410744583287e-06, + 8.504565420595640546e-06, + 8.331588497091334798e-06, + 8.158611921450634714e-06, + 7.985635974923315555e-06, + 7.812660938681589772e-06, + 7.639687093904474880e-06, + 7.466714721746470180e-06, + 7.293744103306270746e-06, + 7.120775519703398499e-06, + 6.947809252008399067e-06, + 6.774845581250045804e-06, + 6.601884788453454573e-06, + 6.428927154608829927e-06, + 6.255972960678625928e-06, + 6.083022487597203094e-06, + 5.910076016277993454e-06, + 5.737133827582218772e-06, + 5.564196202364785335e-06, + 5.391263421442860726e-06, + 5.218335765603192183e-06, + 5.045413515609408877e-06, + 4.872496952170630866e-06, + 4.699586355987346096e-06, + 4.526682007720086274e-06, + 4.353784187996691024e-06, + 4.180893177411832701e-06, + 4.008009256534333909e-06, + 3.835132705875792551e-06, + 3.662263805936464761e-06, + 3.489402837173897154e-06, + 3.316550080010248577e-06, + 3.143705814839481847e-06, + 2.970870321996157782e-06, + 2.798043881801162278e-06, + 2.625226774530435120e-06, + 2.452419280422253198e-06, + 2.279621679676755320e-06, + 2.106834252463187730e-06, + 1.934057278888643938e-06, + 1.761291039043855741e-06, + 1.588535812971880532e-06, + 1.415791880675391294e-06, + 1.243059522116217501e-06, + 1.070339017222575187e-06, + 8.976306458578248703e-07, + 7.249346878662281718e-07, + 5.522514230416872151e-07, + 3.795811311349916819e-07, + 2.069240918610749467e-07, + 3.428058486774882621e-08, +-1.383491102262331222e-07, +-3.109647138239323703e-07, +-4.835659464199819571e-07, +-6.561525285240304003e-07, +-8.287241806919971661e-07, +-1.001280623549618887e-06, +-1.173821577746704345e-06, +-1.346346763988386698e-06, +-1.518855903027865476e-06, +-1.691348715666871380e-06, +-1.863824922748402138e-06, +-2.036284245195671612e-06, +-2.208726403927891011e-06, +-2.381151119968460196e-06, +-2.553558114360782135e-06, +-2.725947108199474796e-06, +-2.898317822653908922e-06, +-3.070669978930203357e-06, +-3.243003298263937598e-06, +-3.415317501989918088e-06, +-3.587612311465605165e-06, +-3.759887448102388907e-06, +-3.932142633396833215e-06, +-4.104377588846409162e-06, +-4.276592036057747499e-06, +-4.448785696662417318e-06, +-4.620958292355815882e-06, +-4.793109544882277780e-06, +-4.965239176073963062e-06, +-5.137346907766709592e-06, +-5.309432461908115303e-06, +-5.481495560473449850e-06, +-5.653535925496813558e-06, +-5.825553279102336190e-06, +-5.997547343427839800e-06, +-6.169517840694336933e-06, +-6.341464493198845247e-06, +-6.513387023276459074e-06, +-6.685285153323774960e-06, +-6.857158605830097207e-06, +-7.029007103293393572e-06, +-7.200830368328266551e-06, +-7.372628123581939577e-06, +-7.544400091765354134e-06, +-7.716145995684402405e-06, +-7.887865558163580806e-06, +-8.059558502115501743e-06, +-8.231224550533662492e-06, +-8.402863426454587910e-06, +-8.574474852988803037e-06, +-8.746058553313858634e-06, +-8.917614250674498890e-06, +-9.089141668375712364e-06, +-9.260640529813558906e-06, +-9.432110558429855084e-06, +-9.603551477743207780e-06, +-9.774963011341678882e-06, +-9.946344882875743056e-06, +-1.011769681608928576e-05, +-1.028901853477408708e-05, +-1.046030976280089938e-05, +-1.063157022411228308e-05, +-1.080279964272293871e-05, +-1.097399774271265959e-05, +-1.114516424825725359e-05, +-1.131629888358308970e-05, +-1.148740137299823999e-05, +-1.165847144088514097e-05, +-1.182950881169347675e-05, +-1.200051320997120764e-05, +-1.217148436031909454e-05, +-1.234242198742169367e-05, +-1.251332581604024651e-05, +-1.268419557101312368e-05, +-1.285503097724847265e-05, +-1.302583175975539540e-05, +-1.319659764359845929e-05, +-1.336732835392871037e-05, +-1.353802361597647528e-05, +-1.370868315505185421e-05, +-1.387930669653737377e-05, +-1.404989396591924755e-05, +-1.422044468874166347e-05, +-1.439095859063800880e-05, +-1.456143539732355516e-05, +-1.473187483458840956e-05, +-1.490227662832826672e-05, +-1.507264050450678561e-05, +-1.524296618914863190e-05, +-1.541325340840813166e-05, +-1.558350188849377365e-05, +-1.575371135569899217e-05, +-1.592388153642560278e-05, +-1.609401215713839622e-05, +-1.626410294439613311e-05, +-1.643415362484422211e-05, +-1.660416392521542811e-05, +-1.677413357232240135e-05, +-1.694406229309633943e-05, +-1.711394981450369007e-05, +-1.728379586365313137e-05, +-1.745360016771222716e-05, +-1.762336245393836403e-05, +-1.779308244970209557e-05, +-1.796275988244926304e-05, +-1.813239447969419200e-05, +-1.830198596908835283e-05, +-1.847153407834472742e-05, +-1.864103853526881060e-05, +-1.881049906778932697e-05, +-1.897991540387504881e-05, +-1.914928727164180012e-05, +-1.931861439926915258e-05, +-1.948789651503121017e-05, +-1.965713334731996348e-05, +-1.982632462460765782e-05, +-1.999547007543968146e-05, +-2.016456942850332104e-05, +-2.033362241255227734e-05, +-2.050262875643754475e-05, +-2.067158818913790102e-05, +-2.084050043968489749e-05, +-2.100936523723124166e-05, +-2.117818231104372283e-05, +-2.134695139046584777e-05, +-2.151567220494849316e-05, +-2.168434448404275321e-05, +-2.185296795739275684e-05, +-2.202154235476657762e-05, +-2.219006740601104285e-05, +-2.235854284107493550e-05, +-2.252696839003966693e-05, +-2.269534378304415869e-05, +-2.286366875035333014e-05, +-2.303194302235075642e-05, +-2.320016632950170393e-05, +-2.336833840238314913e-05, +-2.353645897167745972e-05, +-2.370452776816463244e-05, +-2.387254452275308435e-05, +-2.404050896643517352e-05, +-2.420842083031720084e-05, +-2.437627984561265419e-05, +-2.454408574364271318e-05, +-2.471183825582887663e-05, +-2.487953711372361838e-05, +-2.504718204896579605e-05, +-2.521477279331098165e-05, +-2.538230907862445149e-05, +-2.554979063688161313e-05, +-2.571721720016095463e-05, +-2.588458850067435141e-05, +-2.605190427072266141e-05, +-2.621916424272601834e-05, +-2.638636814921687589e-05, +-2.655351572283279435e-05, +-2.672060669634706938e-05, +-2.688764080262385952e-05, +-2.705461777464893694e-05, +-2.722153734552236565e-05, +-2.738839924845896568e-05, +-2.755520321678145890e-05, +-2.772194898395061998e-05, +-2.788863628352085126e-05, +-2.805526484917050307e-05, +-2.822183441469487052e-05, +-2.838834471400665085e-05, +-2.855479548112882163e-05, +-2.872118645022497804e-05, +-2.888751735555486369e-05, +-2.905378793150493490e-05, +-2.921999791258090347e-05, +-2.938614703340104172e-05, +-2.955223502872620809e-05, +-2.971826163342318420e-05, +-2.988422658245745811e-05, +-3.005012961096082433e-05, +-3.021597045415746154e-05, +-3.038174884739379902e-05, +-3.054746452616141021e-05, +-3.071311722605273324e-05, +-3.087870668279174368e-05, +-3.104423263222603308e-05, +-3.120969481032046981e-05, +-3.137509295318731270e-05, +-3.154042679704909078e-05, +-3.170569607823188788e-05, +-3.187090053323268524e-05, +-3.203603989864527656e-05, +-3.220111391119039528e-05, +-3.236612230773867937e-05, +-3.253106482527363220e-05, +-3.269594120088495479e-05, +-3.286075117183548166e-05, +-3.302549447548749580e-05, +-3.319017084933280847e-05, +-3.335478003102284580e-05, +-3.351932175828759117e-05, +-3.368379576903960082e-05, +-3.384820180129313592e-05, +-3.401253959319391716e-05, +-3.417680888304214373e-05, +-3.434100940925525092e-05, +-3.450514091036169635e-05, +-3.466920312506769258e-05, +-3.483319579218324420e-05, +-3.499711865065264100e-05, +-3.516097143958409060e-05, +-3.532475389816944005e-05, +-3.548846576578714113e-05, +-3.565210678192215493e-05, +-3.581567668620271310e-05, +-3.597917521839402944e-05, +-3.614260211839794078e-05, +-3.630595712624672025e-05, +-3.646923998213207969e-05, +-3.663245042636247239e-05, +-3.679558819938442483e-05, +-3.695865304181329404e-05, +-3.712164469435975202e-05, +-3.728456289789631501e-05, +-3.744740739345051310e-05, +-3.761017792216858293e-05, +-3.777287422534522909e-05, +-3.793549604441661744e-05, +-3.809804312095358531e-05, +-3.826051519669115890e-05, +-3.842291201348540201e-05, +-3.858523331334241173e-05, +-3.874747883841252465e-05, +-3.890964833098938181e-05, +-3.907174153350398589e-05, +-3.923375818855414407e-05, +-3.939569803886082210e-05, +-3.955756082729795315e-05, +-3.971934629688526165e-05, +-3.988105419078920527e-05, +-4.004268425231574462e-05, +-4.020423622493969124e-05, +-4.036570985226173254e-05, +-4.052710487803798308e-05, +-4.068842104617283564e-05, +-4.084965810071253050e-05, +-4.101081578587402238e-05, +-4.117189384600245254e-05, +-4.133289202560011061e-05, +-4.149381006931966503e-05, +-4.165464772196486782e-05, +-4.181540472848327010e-05, +-4.197608083399613250e-05, +-4.213667578375461661e-05, +-4.229718932317017656e-05, +-4.245762119780669173e-05, +-4.261797115338147645e-05, +-4.277823893575836143e-05, +-4.293842429097683843e-05, +-4.309852696520928176e-05, +-4.325854670478997778e-05, +-4.341848325620874840e-05, +-4.357833636610406646e-05, +-4.373810578129158372e-05, +-4.389779124872942293e-05, +-4.405739251551072386e-05, +-4.421690932892938665e-05, +-4.437634143640808076e-05, +-4.453568858552743717e-05, +-4.469495052404832188e-05, +-4.485412699986882703e-05, +-4.501321776105338845e-05, +-4.517222255582647024e-05, +-4.533114113256510406e-05, +-4.548997323982833201e-05, +-4.564871862632166512e-05, +-4.580737704089080857e-05, +-4.596594823258555500e-05, +-4.612443195058936566e-05, +-4.628282794424808816e-05, +-4.644113596309195225e-05, +-4.659935575679985891e-05, +-4.675748707519326137e-05, +-4.691552966830016692e-05, +-4.707348328628474510e-05, +-4.723134767947572023e-05, +-4.738912259839558389e-05, +-4.754680779368268822e-05, +-4.770440301619093828e-05, +-4.786190801691261046e-05, +-4.801932254700599283e-05, +-4.817664635782583764e-05, +-4.833387920085124840e-05, +-4.849102082775081323e-05, +-4.864807099037553052e-05, +-4.880502944072373495e-05, +-4.896189593096311358e-05, +-4.911867021345923392e-05, +-4.927535204069761012e-05, +-4.943194116538386971e-05, +-4.958843734036612468e-05, +-4.974484031867016748e-05, +-4.990114985349369077e-05, +-5.005736569820607064e-05, +-5.021348760634180718e-05, +-5.036951533162886956e-05, +-5.052544862794782166e-05, +-5.068128724935196106e-05, +-5.083703095009663322e-05, +-5.099267948456928006e-05, +-5.114823260735289971e-05, +-5.130369007321941929e-05, +-5.145905163709510888e-05, +-5.161431705408885888e-05, +-5.176948607948560021e-05, +-5.192455846873999566e-05, +-5.207953397750406669e-05, +-5.223441236158647488e-05, +-5.238919337697350799e-05, +-5.254387677985706596e-05, +-5.269846232656559044e-05, +-5.285294977362763291e-05, +-5.300733887776428561e-05, +-5.316162939585586264e-05, +-5.331582108496878142e-05, +-5.346991370235040591e-05, +-5.362390700542844356e-05, +-5.377780075180468405e-05, +-5.393159469928326982e-05, +-5.408528860582933378e-05, +-5.423888222959732410e-05, +-5.439237532892348255e-05, +-5.454576766232110789e-05, +-5.469905898850685455e-05, +-5.485224906636044096e-05, +-5.500533765495285916e-05, +-5.515832451353931389e-05, +-5.531120940155981216e-05, +-5.546399207863277324e-05, +-5.561667230458285197e-05, +-5.576924983940001690e-05, +-5.592172444326736012e-05, +-5.607409587655455134e-05, +-5.622636389981178673e-05, +-5.637852827379751056e-05, +-5.653058875943664638e-05, +-5.668254511784977554e-05, +-5.683439711034582567e-05, +-5.698614449842266016e-05, +-5.713778704376068816e-05, +-5.728932450825090477e-05, +-5.744075665395995941e-05, +-5.759208324312495162e-05, +-5.774330403821469526e-05, +-5.789441880186159677e-05, +-5.804542729689004767e-05, +-5.819632928633662464e-05, +-5.834712453340946579e-05, +-5.849781280151679873e-05, +-5.864839385425926987e-05, +-5.879886745542459115e-05, +-5.894923336901440115e-05, +-5.909949135921075644e-05, +-5.924964119037012789e-05, +-5.939968262708437340e-05, +-5.954961543411380878e-05, +-5.969943937641384527e-05, +-5.984915421915662612e-05, +-5.999875972769003695e-05, +-6.014825566756573920e-05, +-6.029764180453187208e-05, +-6.044691790453471950e-05, +-6.059608373371118168e-05, +-6.074513905842361867e-05, +-6.089408364518540635e-05, +-6.104291726075627164e-05, +-6.119163967206801792e-05, +-6.134025064625218569e-05, +-6.148874995066701537e-05, +-6.163713735283115507e-05, +-6.178541262048387452e-05, +-6.193357552157888505e-05, +-6.208162582425146123e-05, +-6.222956329683830882e-05, +-6.237738770790530682e-05, +-6.252509882617406632e-05, +-6.267269642061547004e-05, +-6.282018026037749158e-05, +-6.296755011481141955e-05, +-6.311480575349911169e-05, +-6.326194694618677726e-05, +-6.340897346284524508e-05, +-6.355588507366379718e-05, +-6.370268154901730388e-05, +-6.384936265948569880e-05, +-6.399592817588241203e-05, +-6.414237786918708189e-05, +-6.428871151060597201e-05, +-6.443492887156607608e-05, +-6.458102972368172433e-05, +-6.472701383878195971e-05, +-6.487288098890377512e-05, +-6.501863094628662469e-05, +-6.516426348339828195e-05, +-6.530977837289628294e-05, +-6.545517538764730628e-05, +-6.560045430075529468e-05, +-6.574561488549415312e-05, +-6.589065691536847766e-05, +-6.603558016410756529e-05, +-6.618038440563161389e-05, +-6.632506941407974885e-05, +-6.646963496380279960e-05, +-6.661408082935786504e-05, +-6.675840678553423950e-05, +-6.690261260731488293e-05, +-6.704669806990230622e-05, +-6.719066294871389559e-05, +-6.733450701938016429e-05, +-6.747823005774032093e-05, +-6.762183183986780245e-05, +-6.776531214203171719e-05, +-6.790867074072350269e-05, +-6.805190741264986482e-05, +-6.819502193473467517e-05, +-6.833801408411135448e-05, +-6.848088363815005904e-05, +-6.862363037441855456e-05, +-6.876625407070877907e-05, +-6.890875450503111026e-05, +-6.905113145560731812e-05, +-6.919338470089703304e-05, +-6.933551401956039508e-05, +-6.947751919048271950e-05, +-6.961939999276922490e-05, +-6.976115620574518223e-05, +-6.990278760894978911e-05, +-7.004429398216227196e-05, +-7.018567510536374919e-05, +-7.032693075876303521e-05, +-7.046806072279109749e-05, +-7.060906477810027044e-05, +-7.074994270555968827e-05, +-7.089069428628030293e-05, +-7.103131930157627295e-05, +-7.117181753299273259e-05, +-7.131218876229764676e-05, +-7.145243277147728448e-05, +-7.159254934276162985e-05, +-7.173253825859196445e-05, +-7.187239930161634074e-05, +-7.201213225474619101e-05, +-7.215173690109336231e-05, +-7.229121302399592048e-05, +-7.243056040703712368e-05, +-7.256977883400854597e-05, +-7.270886808893474288e-05, +-7.284782795606806085e-05, +-7.298665821988837969e-05, +-7.312535866509793550e-05, +-7.326392907665185456e-05, +-7.340236923969085145e-05, +-7.354067893962833115e-05, +-7.367885796208196233e-05, +-7.381690609289946780e-05, +-7.395482311818373736e-05, +-7.409260882423032355e-05, +-7.423026299758448418e-05, +-7.436778542503505668e-05, +-7.450517589358389707e-05, +-7.464243419046393197e-05, +-7.477956010316616877e-05, +-7.491655341936929026e-05, +-7.505341392702907419e-05, +-7.519014141430913989e-05, +-7.532673566960675223e-05, +-7.546319648157758214e-05, +-7.559952363907448980e-05, +-7.573571693120253437e-05, +-7.587177614731452878e-05, +-7.600770107697936743e-05, +-7.614349151000211107e-05, +-7.627914723644698542e-05, +-7.641466804657783137e-05, +-7.655005373091349418e-05, +-7.668530408022148086e-05, +-7.682041888548765674e-05, +-7.695539793794196816e-05, +-7.709024102905132742e-05, +-7.722494795051428659e-05, +-7.735951849428681444e-05, +-7.749395245254448491e-05, +-7.762824961770214180e-05, +-7.776240978243769699e-05, +-7.789643273963252649e-05, +-7.803031828242570759e-05, +-7.816406620420930261e-05, +-7.829767629859644268e-05, +-7.843114835944858191e-05, +-7.856448218086702702e-05, +-7.869767755718916975e-05, +-7.883073428301189210e-05, +-7.896365215315650588e-05, +-7.909643096269194115e-05, +-7.922907050693055848e-05, +-7.936157058142718666e-05, +-7.949393098197443360e-05, +-7.962615150462618637e-05, +-7.975823194566226623e-05, +-7.989017210161282316e-05, +-8.002197176925258959e-05, +-8.015363074560107016e-05, +-8.028514882791676832e-05, +-8.041652581372257021e-05, +-8.054776150076779762e-05, +-8.067885568705463536e-05, +-8.080980817083197845e-05, +-8.094061875058881851e-05, +-8.107128722507937009e-05, +-8.120181339328712939e-05, +-8.133219705444971607e-05, +-8.146243800805196141e-05, +-8.159253605382757533e-05, +-8.172249099175235652e-05, +-8.185230262206915621e-05, +-8.198197074525238415e-05, +-8.211149516203106137e-05, +-8.224087567338451055e-05, +-8.237011208054257282e-05, +-8.249920418497869602e-05, +-8.262815178843554889e-05, +-8.275695469288825315e-05, +-8.288561270056968603e-05, +-8.301412561396449006e-05, +-8.314249323580245941e-05, +-8.327071536908407291e-05, +-8.339879181705033961e-05, +-8.352672238317735071e-05, +-8.365450687122962230e-05, +-8.378214508520139935e-05, +-8.390963682934063014e-05, +-8.403698190817271028e-05, +-8.416418012643681295e-05, +-8.429123128916701433e-05, +-8.441813520162904391e-05, +-8.454489166934424545e-05, +-8.467150049810644977e-05, +-8.479796149395335189e-05, +-8.492427446316230973e-05, +-8.505043921230094920e-05, +-8.517645554817056893e-05, +-8.530232327782996552e-05, +-8.542804220861704989e-05, +-8.555361214809405440e-05, +-8.567903290409758230e-05, +-8.580430428473374241e-05, +-8.592942609835021734e-05, +-8.605439815355317705e-05, +-8.617922025923080605e-05, +-8.630389222449071779e-05, +-8.642841385873911502e-05, +-8.655278497162072497e-05, +-8.667700537303931786e-05, +-8.680107487318216924e-05, +-8.692499328246308513e-05, +-8.704876041157434891e-05, +-8.717237607148043289e-05, +-8.729584007339062223e-05, +-8.741915222877603693e-05, +-8.754231234939235939e-05, +-8.766532024721827886e-05, +-8.778817573453504474e-05, +-8.791087862386413854e-05, +-8.803342872799561219e-05, +-8.815582585998345310e-05, +-8.827806983314612623e-05, +-8.840016046105926930e-05, +-8.852209755758049393e-05, +-8.864388093681557204e-05, +-8.876551041313514615e-05, +-8.888698580119686065e-05, +-8.900830691589107038e-05, +-8.912947357239086297e-05, +-8.925048558614587897e-05, +-8.937134277285595208e-05, +-8.949204494849283395e-05, +-8.961259192929503059e-05, +-8.973298353176365535e-05, +-8.985321957268315070e-05, +-8.997329986908952112e-05, +-9.009322423829171900e-05, +-9.021299249786780925e-05, +-9.033260446566397997e-05, +-9.045205995978971777e-05, +-9.057135879864084706e-05, +-9.069050080086526924e-05, +-9.080948578538653056e-05, +-9.092831357139813007e-05, +-9.104698397836366868e-05, +-9.116549682601217354e-05, +-9.128385193435923999e-05, +-9.140204912367530510e-05, +-9.152008821450802287e-05, +-9.163796902767650443e-05, +-9.175569138426599187e-05, +-9.187325510565013862e-05, +-9.199066001345906614e-05, +-9.210790592960095308e-05, +-9.222499267625653297e-05, +-9.234192007588004289e-05, +-9.245868795119412771e-05, +-9.257529612521069745e-05, +-9.269174442119995974e-05, +-9.280803266271129073e-05, +-9.292416067356922351e-05, +-9.304012827786751214e-05, +-9.315593529999054460e-05, +-9.327158156458302584e-05, +-9.338706689656965600e-05, +-9.350239112115143060e-05, +-9.361755406380519329e-05, +-9.373255555027920421e-05, +-9.384739540661425476e-05, +-9.396207345911694207e-05, +-9.407658953435588784e-05, +-9.419094345920792533e-05, +-9.430513506080752135e-05, +-9.441916416656637319e-05, +-9.453303060419559415e-05, +-9.464673420164807459e-05, +-9.476027478719161140e-05, +-9.487365218935332907e-05, +-9.498686623693807049e-05, +-9.509991675904662508e-05, +-9.521280358504886768e-05, +-9.532552654457924558e-05, +-9.543808546758353469e-05, +-9.555048018426735357e-05, +-9.566271052511670899e-05, +-9.577477632091944959e-05, +-9.588667740270938886e-05, +-9.599841360183649361e-05, +-9.610998474991280945e-05, +-9.622139067883743804e-05, +-9.633263122078668445e-05, +-9.644370620823914286e-05, +-9.655461547392162199e-05, +-9.666535885087877797e-05, +-9.677593617241833505e-05, +-9.688634727213163119e-05, +-9.699659198391382493e-05, +-9.710667014191437442e-05, +-9.721658158058113736e-05, +-9.732632613465724033e-05, +-9.743590363915551880e-05, +-9.754531392937364166e-05, +-9.765455684091427745e-05, +-9.776363220963095197e-05, +-9.787253987169762699e-05, +-9.798127966355482893e-05, +-9.808985142193305407e-05, +-9.819825498385083057e-05, +-9.830649018661233318e-05, +-9.841455686780376476e-05, +-9.852245486531422715e-05, +-9.863018401730402180e-05, +-9.873774416222735027e-05, +-9.884513513882545665e-05, +-9.895235678612836227e-05, +-9.905940894344903813e-05, +-9.916629145040415380e-05, +-9.927300414688428900e-05, +-9.937954687307390996e-05, +-9.948591946944743928e-05, +-9.959212177676307588e-05, +-9.969815363608427582e-05, +-9.980401488874947595e-05, +-9.990970537639261241e-05, +-1.000152249409371711e-04, +-1.001205734245986541e-04, +-1.002257506698780071e-04, +-1.003307565195819069e-04, +-1.004355908167941255e-04, +-1.005402534048946661e-04, +-1.006447441275560493e-04, +-1.007490628287422161e-04, +-1.008532093527052747e-04, +-1.009571835440035254e-04, +-1.010609852474746406e-04, +-1.011646143082532012e-04, +-1.012680705717680679e-04, +-1.013713538837361194e-04, +-1.014744640901827581e-04, +-1.015774010374122157e-04, +-1.016801645720284111e-04, +-1.017827545409300444e-04, +-1.018851707913091326e-04, +-1.019874131706493029e-04, +-1.020894815267420821e-04, +-1.021913757076613232e-04, +-1.022930955617804309e-04, +-1.023946409377687427e-04, +-1.024960116845870435e-04, +-1.025972076515059420e-04, +-1.026982286880787667e-04, +-1.027990746441605929e-04, +-1.028997453699024423e-04, +-1.030002407157530180e-04, +-1.031005605324532835e-04, +-1.032007046710562353e-04, +-1.033006729829028886e-04, +-1.034004653196183735e-04, +-1.035000815331537857e-04, +-1.035995214757402295e-04, +-1.036987849999075476e-04, +-1.037978719585021698e-04, +-1.038967822046383237e-04, +-1.039955155917610135e-04, +-1.040940719735962823e-04, +-1.041924512041703343e-04, +-1.042906531378226000e-04, +-1.043886776291838347e-04, +-1.044865245331708879e-04, +-1.045841937050293930e-04, +-1.046816850002861310e-04, +-1.047789982747704022e-04, +-1.048761333846296389e-04, +-1.049730901862815243e-04, +-1.050698685364768222e-04, +-1.051664682922501812e-04, +-1.052628893109425640e-04, +-1.053591314501928314e-04, +-1.054551945679596162e-04, +-1.055510785224738891e-04, +-1.056467831722993761e-04, +-1.057423083762867373e-04, +-1.058376539935885422e-04, +-1.059328198836786641e-04, +-1.060278059063086265e-04, +-1.061226119215464588e-04, +-1.062172377897736196e-04, +-1.063116833716624049e-04, +-1.064059485281894732e-04, +-1.065000331206535723e-04, +-1.065939370106281059e-04, +-1.066876600600216582e-04, +-1.067812021310312118e-04, +-1.068745630861584909e-04, +-1.069677427882288138e-04, +-1.070607411003470872e-04, +-1.071535578859371900e-04, +-1.072461930087383687e-04, +-1.073386463327828075e-04, +-1.074309177224142225e-04, +-1.075230070422823189e-04, +-1.076149141573449727e-04, +-1.077066389328618611e-04, +-1.077981812344138562e-04, +-1.078895409278762184e-04, +-1.079807178794364307e-04, +-1.080717119555894156e-04, +-1.081625230231352848e-04, +-1.082531509491940032e-04, +-1.083435956011820784e-04, +-1.084338568468289868e-04, +-1.085239345541729448e-04, +-1.086138285915615458e-04, +-1.087035388276476133e-04, +-1.087930651314055722e-04, +-1.088824073721075830e-04, +-1.089715654193395335e-04, +-1.090605391429977323e-04, +-1.091493284132842329e-04, +-1.092379331007247096e-04, +-1.093263530761418267e-04, +-1.094145882106748087e-04, +-1.095026383757723517e-04, +-1.095905034431953075e-04, +-1.096781832850118041e-04, +-1.097656777736136040e-04, +-1.098529867816917230e-04, +-1.099401101822538587e-04, +-1.100270478486193898e-04, +-1.101137996544197285e-04, +-1.102003654735951761e-04, +-1.102867451804109827e-04, +-1.103729386494322891e-04, +-1.104589457555426522e-04, +-1.105447663739374053e-04, +-1.106304003801225188e-04, +-1.107158476499281804e-04, +-1.108011080594914613e-04, +-1.108861814852505695e-04, +-1.109710678039827571e-04, +-1.110557668927622928e-04, +-1.111402786289789621e-04, +-1.112246028903481770e-04, +-1.113087395548894139e-04, +-1.113926885009396714e-04, +-1.114764496071520065e-04, +-1.115600227524947625e-04, +-1.116434078162472314e-04, +-1.117266046780206477e-04, +-1.118096132177142505e-04, +-1.118924333155708217e-04, +-1.119750648521340502e-04, +-1.120575077082628025e-04, +-1.121397617651455559e-04, +-1.122218269042782134e-04, +-1.123037030074633717e-04, +-1.123853899568427115e-04, +-1.124668876348601759e-04, +-1.125481959242764980e-04, +-1.126293147081863316e-04, +-1.127102438699735824e-04, +-1.127909832933682332e-04, +-1.128715328624025016e-04, +-1.129518924614261006e-04, +-1.130320619751192483e-04, +-1.131120412884727329e-04, +-1.131918302867844831e-04, +-1.132714288556943853e-04, +-1.133508368811455365e-04, +-1.134300542494006293e-04, +-1.135090808470566972e-04, +-1.135879165610071404e-04, +-1.136665612784766642e-04, +-1.137450148870168065e-04, +-1.138232772744889027e-04, +-1.139013483290728400e-04, +-1.139792279392841341e-04, +-1.140569159939335019e-04, +-1.141344123821768161e-04, +-1.142117169934769004e-04, +-1.142888297176168248e-04, +-1.143657504447152335e-04, +-1.144424790651907015e-04, +-1.145190154697933531e-04, +-1.145953595496019070e-04, +-1.146715111960065460e-04, +-1.147474703007223343e-04, +-1.148232367557862354e-04, +-1.148988104535539822e-04, +-1.149741912867135746e-04, +-1.150493791482651138e-04, +-1.151243739315348561e-04, +-1.151991755301715536e-04, +-1.152737838381468204e-04, +-1.153481987497511615e-04, +-1.154224201596097210e-04, +-1.154964479626594052e-04, +-1.155702820541646580e-04, +-1.156439223297125004e-04, +-1.157173686852149295e-04, +-1.157906210169034570e-04, +-1.158636792213436369e-04, +-1.159365431954156048e-04, +-1.160092128363265999e-04, +-1.160816880416082276e-04, +-1.161539687091132613e-04, +-1.162260547370296823e-04, +-1.162979460238595112e-04, +-1.163696424684336749e-04, +-1.164411439699079002e-04, +-1.165124504277624968e-04, +-1.165835617418005686e-04, +-1.166544778121606174e-04, +-1.167251985392965530e-04, +-1.167957238239916251e-04, +-1.168660535673545474e-04, +-1.169361876708203377e-04, +-1.170061260361467944e-04, +-1.170758685654280220e-04, +-1.171454151610742646e-04, +-1.172147657258262854e-04, +-1.172839201627508130e-04, +-1.173528783752388473e-04, +-1.174216402670172197e-04, +-1.174902057421341195e-04, +-1.175585747049548782e-04, +-1.176267470601916233e-04, +-1.176947227128714022e-04, +-1.177625015683473361e-04, +-1.178300835323124843e-04, +-1.178974685107760323e-04, +-1.179646564100786469e-04, +-1.180316471368900096e-04, +-1.180984405982076103e-04, +-1.181650367013533596e-04, +-1.182314353539912471e-04, +-1.182976364640915361e-04, +-1.183636399399749448e-04, +-1.184294456902789950e-04, +-1.184950536239695595e-04, +-1.185604636503513241e-04, +-1.186256756790517685e-04, +-1.186906896200191067e-04, +-1.187555053835478606e-04, +-1.188201228802520119e-04, +-1.188845420210735138e-04, +-1.189487627172971574e-04, +-1.190127848805159322e-04, +-1.190766084226746783e-04, +-1.191402332560356086e-04, +-1.192036592931912793e-04, +-1.192668864470746858e-04, +-1.193299146309418886e-04, +-1.193927437583716070e-04, +-1.194553737432905348e-04, +-1.195178044999447041e-04, +-1.195800359429111267e-04, +-1.196420679871095579e-04, +-1.197039005477730739e-04, +-1.197655335404750141e-04, +-1.198269668811268129e-04, +-1.198882004859608828e-04, +-1.199492342715456709e-04, +-1.200100681547806316e-04, +-1.200707020528948707e-04, +-1.201311358834564430e-04, +-1.201913695643596529e-04, +-1.202514030138279418e-04, +-1.203112361504303539e-04, +-1.203708688930507181e-04, +-1.204303011609135060e-04, +-1.204895328735822868e-04, +-1.205485639509433564e-04, +-1.206073943132206309e-04, +-1.206660238809694266e-04, +-1.207244525750755652e-04, +-1.207826803167667444e-04, +-1.208407070275949467e-04, +-1.208985326294485422e-04, +-1.209561570445492792e-04, +-1.210135801954523120e-04, +-1.210708020050442897e-04, +-1.211278223965526395e-04, +-1.211846412935309168e-04, +-1.212412586198697553e-04, +-1.212976742997934522e-04, +-1.213538882578594390e-04, +-1.214099004189583364e-04, +-1.214657107083220175e-04, +-1.215213190515089579e-04, +-1.215767253744148607e-04, +-1.216319296032695801e-04, +-1.216869316646354679e-04, +-1.217417314854173213e-04, +-1.217963289928472310e-04, +-1.218507241144936614e-04, +-1.219049167782616268e-04, +-1.219589069123904146e-04, +-1.220126944454522164e-04, +-1.220662793063618455e-04, +-1.221196614243624790e-04, +-1.221728407290344405e-04, +-1.222258171502937224e-04, +-1.222785906183930570e-04, +-1.223311610639173216e-04, +-1.223835284177952757e-04, +-1.224356926112832701e-04, +-1.224876535759769028e-04, +-1.225394112438076845e-04, +-1.225909655470407351e-04, +-1.226423164182849747e-04, +-1.226934637904801139e-04, +-1.227444075968954875e-04, +-1.227951477711517663e-04, +-1.228456842471956946e-04, +-1.228960169593112310e-04, +-1.229461458421260802e-04, +-1.229960708305971649e-04, +-1.230457918600218203e-04, +-1.230953088660334570e-04, +-1.231446217845996911e-04, +-1.231937305520334298e-04, +-1.232426351049795089e-04, +-1.232913353804130936e-04, +-1.233398313156598713e-04, +-1.233881228483756152e-04, +-1.234362099165517402e-04, +-1.234840924585251150e-04, +-1.235317704129648079e-04, +-1.235792437188714364e-04, +-1.236265123155971433e-04, +-1.236735761428223407e-04, +-1.237204351405652239e-04, +-1.237670892491917190e-04, +-1.238135384093901124e-04, +-1.238597825622013546e-04, +-1.239058216489968606e-04, +-1.239516556114856661e-04, +-1.239972843917222067e-04, +-1.240427079320939846e-04, +-1.240879261753216503e-04, +-1.241329390644771902e-04, +-1.241777465429614832e-04, +-1.242223485545152785e-04, +-1.242667450432262161e-04, +-1.243109359535052175e-04, +-1.243549212301179013e-04, +-1.243987008181598086e-04, +-1.244422746630672455e-04, +-1.244856427106168218e-04, +-1.245288049069222529e-04, +-1.245717611984363928e-04, +-1.246145115319559501e-04, +-1.246570558546117845e-04, +-1.246993941138731623e-04, +-1.247415262575578396e-04, +-1.247834522338104593e-04, +-1.248251719911209286e-04, +-1.248666854783229280e-04, +-1.249079926445843163e-04, +-1.249490934394133104e-04, +-1.249899878126594613e-04, +-1.250306757145087748e-04, +-1.250711570954943642e-04, +-1.251114319064815423e-04, +-1.251515000986777148e-04, +-1.251913616236359039e-04, +-1.252310164332390817e-04, +-1.252704644797156741e-04, +-1.253097057156376908e-04, +-1.253487400939123496e-04, +-1.253875675677882295e-04, +-1.254261880908548910e-04, +-1.254646016170422797e-04, +-1.255028081006174742e-04, +-1.255408074961957444e-04, +-1.255785997587256710e-04, +-1.256161848434987139e-04, +-1.256535627061465554e-04, +-1.256907333026406669e-04, +-1.257276965892977025e-04, +-1.257644525227701482e-04, +-1.258010010600525285e-04, +-1.258373421584800783e-04, +-1.258734757757298275e-04, +-1.259094018698169956e-04, +-1.259451203991032860e-04, +-1.259806313222862340e-04, +-1.260159345984061992e-04, +-1.260510301868437099e-04, +-1.260859180473199235e-04, +-1.261205981399012347e-04, +-1.261550704249909537e-04, +-1.261893348633344025e-04, +-1.262233914160185622e-04, +-1.262572400444722086e-04, +-1.262908807104623347e-04, +-1.263243133761033656e-04, +-1.263575380038477539e-04, +-1.263905545564841630e-04, +-1.264233629971521587e-04, +-1.264559632893266501e-04, +-1.264883553968246125e-04, +-1.265205392838080411e-04, +-1.265525149147765790e-04, +-1.265842822545730191e-04, +-1.266158412683814885e-04, +-1.266471919217264993e-04, +-1.266783341804786952e-04, +-1.267092680108471267e-04, +-1.267399933793783291e-04, +-1.267705102529698754e-04, +-1.268008185988548449e-04, +-1.268309183846074069e-04, +-1.268608095781490548e-04, +-1.268904921477389842e-04, +-1.269199660619785373e-04, +-1.269492312898115019e-04, +-1.269782878005236231e-04, +-1.270071355637417902e-04, +-1.270357745494388613e-04, +-1.270642047279218459e-04, +-1.270924260698480046e-04, +-1.271204385462123003e-04, +-1.271482421283505416e-04, +-1.271758367879472439e-04, +-1.272032224970195014e-04, +-1.272303992279317868e-04, +-1.272573669533928070e-04, +-1.272841256464501091e-04, +-1.273106752804923302e-04, +-1.273370158292561364e-04, +-1.273631472668107999e-04, +-1.273890695675780670e-04, +-1.274147827063152986e-04, +-1.274402866581241715e-04, +-1.274655813984482654e-04, +-1.274906669030734154e-04, +-1.275155431481274956e-04, +-1.275402101100828309e-04, +-1.275646677657508304e-04, +-1.275889160922858909e-04, +-1.276129550671887029e-04, +-1.276367846682956533e-04, +-1.276604048737890707e-04, +-1.276838156621953554e-04, +-1.277070170123799917e-04, +-1.277300089035523730e-04, +-1.277527913152641753e-04, +-1.277753642274074869e-04, +-1.277977276202208801e-04, +-1.278198814742825535e-04, +-1.278418257705113078e-04, +-1.278635604901745147e-04, +-1.278850856148746457e-04, +-1.279064011265586504e-04, +-1.279275070075203418e-04, +-1.279484032403908824e-04, +-1.279690898081460484e-04, +-1.279895666941030042e-04, +-1.280098338819219556e-04, +-1.280298913556038461e-04, +-1.280497390994961575e-04, +-1.280693770982843985e-04, +-1.280888053369985831e-04, +-1.281080238010105473e-04, +-1.281270324760328916e-04, +-1.281458313481255949e-04, +-1.281644204036854438e-04, +-1.281827996294545159e-04, +-1.282009690125160059e-04, +-1.282189285402960690e-04, +-1.282366782005623566e-04, +-1.282542179814272155e-04, +-1.282715478713435944e-04, +-1.282886678591054776e-04, +-1.283055779338512195e-04, +-1.283222780850603727e-04, +-1.283387683025558024e-04, +-1.283550485765018164e-04, +-1.283711188974050318e-04, +-1.283869792561146469e-04, +-1.284026296438216003e-04, +-1.284180700520586255e-04, +-1.284333004727030423e-04, +-1.284483208979725561e-04, +-1.284631313204247151e-04, +-1.284777317329644734e-04, +-1.284921221288348931e-04, +-1.285063025016219699e-04, +-1.285202728452557435e-04, +-1.285340331540059074e-04, +-1.285475834224851966e-04, +-1.285609236456491434e-04, +-1.285740538187925004e-04, +-1.285869739375567746e-04, +-1.285996839979222596e-04, +-1.286121839962094170e-04, +-1.286244739290856262e-04, +-1.286365537935566460e-04, +-1.286484235869703554e-04, +-1.286600833070186234e-04, +-1.286715329517330267e-04, +-1.286827725194875875e-04, +-1.286938020089988541e-04, +-1.287046214193244924e-04, +-1.287152307498628514e-04, +-1.287256300003579239e-04, +-1.287358191708892904e-04, +-1.287457982618837741e-04, +-1.287555672741076348e-04, +-1.287651262086675721e-04, +-1.287744750670148988e-04, +-1.287836138509390095e-04, +-1.287925425625728549e-04, +-1.288012612043912893e-04, +-1.288097697792093621e-04, +-1.288180682901837282e-04, +-1.288261567408143275e-04, +-1.288340351349390189e-04, +-1.288417034767398955e-04, +-1.288491617707396254e-04, +-1.288564100218010178e-04, +-1.288634482351303304e-04, +-1.288702764162723356e-04, +-1.288768945711146036e-04, +-1.288833027058860657e-04, +-1.288895008271557943e-04, +-1.288954889418340605e-04, +-1.289012670571736618e-04, +-1.289068351807659649e-04, +-1.289121933205439688e-04, +-1.289173414847832801e-04, +-1.289222796820982918e-04, +-1.289270079214450287e-04, +-1.289315262121206059e-04, +-1.289358345637616019e-04, +-1.289399329863472846e-04, +-1.289438214901957079e-04, +-1.289475000859656093e-04, +-1.289509687846586319e-04, +-1.289542275976137146e-04, +-1.289572765365121600e-04, +-1.289601156133751139e-04, +-1.289627448405640802e-04, +-1.289651642307816529e-04, +-1.289673737970691036e-04, +-1.289693735528088211e-04, +-1.289711635117243382e-04, +-1.289727436878774862e-04, +-1.289741140956714301e-04, +-1.289752747498486090e-04, +-1.289762256654919013e-04, +-1.289769668580231072e-04, +-1.289774983432060926e-04, +-1.289778201371424794e-04, +-1.289779322562743563e-04, +-1.289778347173836008e-04, +-1.289775275375908766e-04, +-1.289770107343578016e-04, +-1.289762843254846987e-04, +-1.289753483291110564e-04, +-1.289742027637171549e-04, +-1.289728476481211931e-04, +-1.289712830014814299e-04, +-1.289695088432949376e-04, +-1.289675251933983333e-04, +-1.289653320719666408e-04, +-1.289629294995152148e-04, +-1.289603174968974916e-04, +-1.289574960853060457e-04, +-1.289544652862720210e-04, +-1.289512251216662960e-04, +-1.289477756136973971e-04, +-1.289441167849135581e-04, +-1.289402486582006606e-04, +-1.289361712567838329e-04, +-1.289318846042261494e-04, +-1.289273887244303377e-04, +-1.289226836416354992e-04, +-1.289177693804212832e-04, +-1.289126459657033061e-04, +-1.289073134227374884e-04, +-1.289017717771156091e-04, +-1.288960210547700767e-04, +-1.288900612819690768e-04, +-1.288838924853194729e-04, +-1.288775146917661013e-04, +-1.288709279285915816e-04, +-1.288641322234153677e-04, +-1.288571276041958625e-04, +-1.288499140992278153e-04, +-1.288424917371442735e-04, +-1.288348605469151736e-04, +-1.288270205578473404e-04, +-1.288189717995865747e-04, +-1.288107143021133163e-04, +-1.288022480957470080e-04, +-1.287935732111435204e-04, +-1.287846896792952875e-04, +-1.287755975315323098e-04, +-1.287662967995210699e-04, +-1.287567875152637465e-04, +-1.287470697111008165e-04, +-1.287371434197086154e-04, +-1.287270086740983617e-04, +-1.287166655076212528e-04, +-1.287061139539613360e-04, +-1.286953540471397911e-04, +-1.286843858215154458e-04, +-1.286732093117807639e-04, +-1.286618245529657213e-04, +-1.286502315804365320e-04, +-1.286384304298936426e-04, +-1.286264211373744696e-04, +-1.286142037392521526e-04, +-1.286017782722333593e-04, +-1.285891447733629467e-04, +-1.285763032800203026e-04, +-1.285632538299180986e-04, +-1.285499964611061931e-04, +-1.285365312119699779e-04, +-1.285228581212281016e-04, +-1.285089772279357490e-04, +-1.284948885714813074e-04, +-1.284805921915888874e-04, +-1.284660881283176720e-04, +-1.284513764220593694e-04, +-1.284364571135432267e-04, +-1.284213302438313683e-04, +-1.284059958543183892e-04, +-1.283904539867355564e-04, +-1.283747046831476102e-04, +-1.283587479859524662e-04, +-1.283425839378830857e-04, +-1.283262125820045754e-04, +-1.283096339617180361e-04, +-1.282928481207557653e-04, +-1.282758551031852145e-04, +-1.282586549534067125e-04, +-1.282412477161542239e-04, +-1.282236334364935336e-04, +-1.282058121598248759e-04, +-1.281877839318819312e-04, +-1.281695487987295767e-04, +-1.281511068067666781e-04, +-1.281324580027253033e-04, +-1.281136024336679584e-04, +-1.280945401469917608e-04, +-1.280752711904251063e-04, +-1.280557956120294033e-04, +-1.280361134601982326e-04, +-1.280162247836555585e-04, +-1.279961296314592253e-04, +-1.279758280529985181e-04, +-1.279553200979941896e-04, +-1.279346058164979993e-04, +-1.279136852588953700e-04, +-1.278925584759003464e-04, +-1.278712255185599585e-04, +-1.278496864382521619e-04, +-1.278279412866862718e-04, +-1.278059901159017697e-04, +-1.277838329782705808e-04, +-1.277614699264925473e-04, +-1.277389010136013099e-04, +-1.277161262929587789e-04, +-1.276931458182588199e-04, +-1.276699596435251131e-04, +-1.276465678231106921e-04, +-1.276229704116981878e-04, +-1.275991674643049787e-04, +-1.275751590362709392e-04, +-1.275509451832707996e-04, +-1.275265259613084538e-04, +-1.275019014267134360e-04, +-1.274770716361510849e-04, +-1.274520366466099126e-04, +-1.274267965154106039e-04, +-1.274013513002033595e-04, +-1.273757010589648335e-04, +-1.273498458500014129e-04, +-1.273237857319511153e-04, +-1.272975207637757277e-04, +-1.272710510047682614e-04, +-1.272443765145507826e-04, +-1.272174973530685856e-04, +-1.271904135806018745e-04, +-1.271631252577554367e-04, +-1.271356324454598892e-04, +-1.271079352049765850e-04, +-1.270800335978941977e-04, +-1.270519276861249269e-04, +-1.270236175319151774e-04, +-1.269951031978313021e-04, +-1.269663847467717181e-04, +-1.269374622419601841e-04, +-1.269083357469446627e-04, +-1.268790053256045299e-04, +-1.268494710421440156e-04, +-1.268197329610899272e-04, +-1.267897911472998620e-04, +-1.267596456659574641e-04, +-1.267292965825670846e-04, +-1.266987439629673883e-04, +-1.266679878733146570e-04, +-1.266370283800952309e-04, +-1.266058655501201685e-04, +-1.265744994505251658e-04, +-1.265429301487714232e-04, +-1.265111577126468384e-04, +-1.264791822102599619e-04, +-1.264470037100478032e-04, +-1.264146222807721988e-04, +-1.263820379915147978e-04, +-1.263492509116883916e-04, +-1.263162611110266956e-04, +-1.262830686595848098e-04, +-1.262496736277459136e-04, +-1.262160760862147339e-04, +-1.261822761060210683e-04, +-1.261482737585182406e-04, +-1.261140691153798748e-04, +-1.260796622486062921e-04, +-1.260450532305195509e-04, +-1.260102421337650728e-04, +-1.259752290313106125e-04, +-1.259400139964486436e-04, +-1.259045971027887415e-04, +-1.258689784242681276e-04, +-1.258331580351442966e-04, +-1.257971360099968596e-04, +-1.257609124237279237e-04, +-1.257244873515620648e-04, +-1.256878608690412320e-04, +-1.256510330520337190e-04, +-1.256140039767270360e-04, +-1.255767737196301047e-04, +-1.255393423575742887e-04, +-1.255017099677078639e-04, +-1.254638766275037432e-04, +-1.254258424147538934e-04, +-1.253876074075713676e-04, +-1.253491716843881641e-04, +-1.253105353239591024e-04, +-1.252716984053538001e-04, +-1.252326610079669187e-04, +-1.251934232115102486e-04, +-1.251539850960159351e-04, +-1.251143467418362612e-04, +-1.250745082296389043e-04, +-1.250344696404140918e-04, +-1.249942310554703461e-04, +-1.249537925564345110e-04, +-1.249131542252516981e-04, +-1.248723161441877259e-04, +-1.248312783958211781e-04, +-1.247900410630520501e-04, +-1.247486042291031045e-04, +-1.247069679775052609e-04, +-1.246651323921137784e-04, +-1.246230975571002589e-04, +-1.245808635569483377e-04, +-1.245384304764694859e-04, +-1.244957984007804316e-04, +-1.244529674153218354e-04, +-1.244099376058508094e-04, +-1.243667090584356860e-04, +-1.243232818594640137e-04, +-1.242796560956458643e-04, +-1.242358318539954281e-04, +-1.241918092218510718e-04, +-1.241475882868653369e-04, +-1.241031691369998710e-04, +-1.240585518605440488e-04, +-1.240137365460896289e-04, +-1.239687232825509473e-04, +-1.239235121591541837e-04, +-1.238781032654432974e-04, +-1.238324966912685617e-04, +-1.237866925268073812e-04, +-1.237406908625384599e-04, +-1.236944917892616970e-04, +-1.236480953980908951e-04, +-1.236015017804458459e-04, +-1.235547110280708699e-04, +-1.235077232330178214e-04, +-1.234605384876479863e-04, +-1.234131568846415954e-04, +-1.233655785169901812e-04, +-1.233178034779914276e-04, +-1.232698318612684420e-04, +-1.232216637607428398e-04, +-1.231732992706558859e-04, +-1.231247384855591986e-04, +-1.230759815003150198e-04, +-1.230270284100978958e-04, +-1.229778793103954095e-04, +-1.229285342969995603e-04, +-1.228789934660206424e-04, +-1.228292569138765382e-04, +-1.227793247372957811e-04, +-1.227291970333170947e-04, +-1.226788738992926184e-04, +-1.226283554328764960e-04, +-1.225776417320397025e-04, +-1.225267328950613158e-04, +-1.224756290205294930e-04, +-1.224243302073427708e-04, +-1.223728365547037237e-04, +-1.223211481621291820e-04, +-1.222692651294428866e-04, +-1.222171875567777113e-04, +-1.221649155445736577e-04, +-1.221124491935818117e-04, +-1.220597886048545457e-04, +-1.220069338797579188e-04, +-1.219538851199643720e-04, +-1.219006424274526743e-04, +-1.218472059045092504e-04, +-1.217935756537296446e-04, +-1.217397517780101726e-04, +-1.216857343805590071e-04, +-1.216315235648897272e-04, +-1.215771194348213180e-04, +-1.215225220944814914e-04, +-1.214677316482972260e-04, +-1.214127482010069782e-04, +-1.213575718576529844e-04, +-1.213022027235832257e-04, +-1.212466409044499378e-04, +-1.211908865062120906e-04, +-1.211349396351272840e-04, +-1.210788003977645005e-04, +-1.210224689009942395e-04, +-1.209659452519903737e-04, +-1.209092295582348247e-04, +-1.208523219275046067e-04, +-1.207952224678872361e-04, +-1.207379312877721928e-04, +-1.206804484958508804e-04, +-1.206227742011180482e-04, +-1.205649085128734184e-04, +-1.205068515407121173e-04, +-1.204486033945358976e-04, +-1.203901641845564442e-04, +-1.203315340212718343e-04, +-1.202727130154926258e-04, +-1.202137012783294022e-04, +-1.201544989211853734e-04, +-1.200951060557816643e-04, +-1.200355227941226613e-04, +-1.199757492485231306e-04, +-1.199157855315987860e-04, +-1.198556317562577236e-04, +-1.197952880357127135e-04, +-1.197347544834845073e-04, +-1.196740312133774160e-04, +-1.196131183395062933e-04, +-1.195520159762840942e-04, +-1.194907242384134048e-04, +-1.194292432409124630e-04, +-1.193675730990811961e-04, +-1.193057139285269976e-04, +-1.192436658451529499e-04, +-1.191814289651638690e-04, +-1.191190034050501498e-04, +-1.190563892816189637e-04, +-1.189935867119556616e-04, +-1.189305958134534804e-04, +-1.188674167038026067e-04, +-1.188040495009791718e-04, +-1.187404943232711640e-04, +-1.186767512892551187e-04, +-1.186128205177985033e-04, +-1.185487021280713860e-04, +-1.184843962395406083e-04, +-1.184199029719569236e-04, +-1.183552224453850296e-04, +-1.182903547801652551e-04, +-1.182253000969440943e-04, +-1.181600585166623073e-04, +-1.180946301605434278e-04, +-1.180290151501212201e-04, +-1.179632136072160034e-04, +-1.178972256539349226e-04, +-1.178310514126876149e-04, +-1.177646910061733350e-04, +-1.176981445573849531e-04, +-1.176314121896070034e-04, +-1.175644940264198988e-04, +-1.174973901916877473e-04, +-1.174301008095746964e-04, +-1.173626260045339823e-04, +-1.172949659013106002e-04, +-1.172271206249432692e-04, +-1.171590903007534141e-04, +-1.170908750543616723e-04, +-1.170224750116769029e-04, +-1.169538902988974876e-04, +-1.168851210425125506e-04, +-1.168161673693036252e-04, +-1.167470294063337579e-04, +-1.166777072809638120e-04, +-1.166082011208410699e-04, +-1.165385110539011575e-04, +-1.164686372083723406e-04, +-1.163985797127622837e-04, +-1.163283386958750181e-04, +-1.162579142868010483e-04, +-1.161873066149175148e-04, +-1.161165158098899288e-04, +-1.160455420016734461e-04, +-1.159743853205016050e-04, +-1.159030458969041342e-04, +-1.158315238616941458e-04, +-1.157598193459710218e-04, +-1.156879324811209295e-04, +-1.156158633988176206e-04, +-1.155436122310137713e-04, +-1.154711791099539931e-04, +-1.153985641681664297e-04, +-1.153257675384650882e-04, +-1.152527893539492023e-04, +-1.151796297479961849e-04, +-1.151062888542719957e-04, +-1.150327668067367925e-04, +-1.149590637396151569e-04, +-1.148851797874282128e-04, +-1.148111150849801969e-04, +-1.147368697673492149e-04, +-1.146624439699048741e-04, +-1.145878378282975902e-04, +-1.145130514784584787e-04, +-1.144380850566022688e-04, +-1.143629386992271274e-04, +-1.142876125431015942e-04, +-1.142121067252972164e-04, +-1.141364213831440013e-04, +-1.140605566542655176e-04, +-1.139845126765666981e-04, +-1.139082895882232414e-04, +-1.138318875276961132e-04, +-1.137553066337370218e-04, +-1.136785470453577075e-04, +-1.136016089018620899e-04, +-1.135244923428325520e-04, +-1.134471975081187330e-04, +-1.133697245378707721e-04, +-1.132920735724941516e-04, +-1.132142447526863431e-04, +-1.131362382194219944e-04, +-1.130580541139435921e-04, +-1.129796925777778191e-04, +-1.129011537527385500e-04, +-1.128224377808962085e-04, +-1.127435448046110530e-04, +-1.126644749665203961e-04, +-1.125852284095235070e-04, +-1.125058052768158049e-04, +-1.124262057118581760e-04, +-1.123464298583810796e-04, +-1.122664778603981009e-04, +-1.121863498622000692e-04, +-1.121060460083366807e-04, +-1.120255664436568984e-04, +-1.119449113132597835e-04, +-1.118640807625313722e-04, +-1.117830749371317734e-04, +-1.117018939829805048e-04, +-1.116205380462904694e-04, +-1.115390072735370012e-04, +-1.114573018114612942e-04, +-1.113754218070870446e-04, +-1.112933674077062484e-04, +-1.112111387608823854e-04, +-1.111287360144550955e-04, +-1.110461593165233733e-04, +-1.109634088154681195e-04, +-1.108804846599372601e-04, +-1.107973869988493652e-04, +-1.107141159813928492e-04, +-1.106306717570300097e-04, +-1.105470544754810351e-04, +-1.104632642867474645e-04, +-1.103793013410952464e-04, +-1.102951657890600387e-04, +-1.102108577814451884e-04, +-1.101263774693265297e-04, +-1.100417250040365411e-04, +-1.099569005371863682e-04, +-1.098719042206518779e-04, +-1.097867362065748243e-04, +-1.097013966473678900e-04, +-1.096158856957004833e-04, +-1.095302035045181313e-04, +-1.094443502270295109e-04, +-1.093583260167080068e-04, +-1.092721310272944628e-04, +-1.091857654127971277e-04, +-1.090992293274789971e-04, +-1.090125229258783184e-04, +-1.089256463627950384e-04, +-1.088385997932922667e-04, +-1.087513833726976855e-04, +-1.086639972566059075e-04, +-1.085764416008643001e-04, +-1.084887165615944525e-04, +-1.084008222951765495e-04, +-1.083127589582537630e-04, +-1.082245267077350432e-04, +-1.081361257007804012e-04, +-1.080475560948186215e-04, +-1.079588180475518568e-04, +-1.078699117169203912e-04, +-1.077808372611404518e-04, +-1.076915948386890300e-04, +-1.076021846082923208e-04, +-1.075126067289475159e-04, +-1.074228613599080036e-04, +-1.073329486606867033e-04, +-1.072428687910556588e-04, +-1.071526219110498191e-04, +-1.070622081809474013e-04, +-1.069716277613115102e-04, +-1.068808808129371069e-04, +-1.067899674968916129e-04, +-1.066988879745008691e-04, +-1.066076424073356512e-04, +-1.065162309572316598e-04, +-1.064246537862924746e-04, +-1.063329110568558903e-04, +-1.062410029315302370e-04, +-1.061489295731803128e-04, +-1.060566911449100096e-04, +-1.059642878101074021e-04, +-1.058717197323860384e-04, +-1.057789870756320894e-04, +-1.056860900039843180e-04, +-1.055930286818243887e-04, +-1.054998032737956116e-04, +-1.054064139448073595e-04, +-1.053128608599970540e-04, +-1.052191441847724623e-04, +-1.051252640847927103e-04, +-1.050312207259546489e-04, +-1.049370142744301233e-04, +-1.048426448966308989e-04, +-1.047481127592125242e-04, +-1.046534180290937377e-04, +-1.045585608734402321e-04, +-1.044635414596681099e-04, +-1.043683599554477465e-04, +-1.042730165286877839e-04, +-1.041775113475584689e-04, +-1.040818445804799023e-04, +-1.039860163961039741e-04, +-1.038900269633575142e-04, +-1.037938764514027465e-04, +-1.036975650296413951e-04, +-1.036010928677365717e-04, +-1.035044601355944254e-04, +-1.034076670033683983e-04, +-1.033107136414633726e-04, +-1.032136002205182691e-04, +-1.031163269114315664e-04, +-1.030188938853435340e-04, +-1.029213013136395116e-04, +-1.028235493679512509e-04, +-1.027256382201600736e-04, +-1.026275680423793883e-04, +-1.025293390069799388e-04, +-1.024309512865727691e-04, +-1.023324050540128685e-04, +-1.022337004823986839e-04, +-1.021348377450772562e-04, +-1.020358170156252740e-04, +-1.019366384678757718e-04, +-1.018373022758995090e-04, +-1.017378086140091983e-04, +-1.016381576567652249e-04, +-1.015383495789555886e-04, +-1.014383845556224669e-04, +-1.013382627620454911e-04, +-1.012379843737448769e-04, +-1.011375495664807469e-04, +-1.010369585162583620e-04, +-1.009362113993097300e-04, +-1.008353083921189496e-04, +-1.007342496714054591e-04, +-1.006330354141274515e-04, +-1.005316657974816174e-04, +-1.004301409989076575e-04, +-1.003284611960696484e-04, +-1.002266265668831202e-04, +-1.001246372894960422e-04, +-1.000224935422939598e-04, +-9.992019550390282654e-05, +-9.981774335317280893e-05, +-9.971513726919805970e-05, +-9.961237743132284343e-05, +-9.950946401909926628e-05, +-9.940639721233359848e-05, +-9.930317719106587782e-05, +-9.919980413555826799e-05, +-9.909627822631975134e-05, +-9.899259964408952696e-05, +-9.888876856984014137e-05, +-9.878478518478160848e-05, +-9.868064967034465864e-05, +-9.857636220820026785e-05, +-9.847192298026627140e-05, +-9.836733216866493091e-05, +-9.826258995576899933e-05, +-9.815769652418216470e-05, +-9.805265205672564666e-05, +-9.794745673646076142e-05, +-9.784211074669316372e-05, +-9.773661427093102369e-05, +-9.763096749293065824e-05, +-9.752517059667788278e-05, +-9.741922376636962043e-05, +-9.731312718646395151e-05, +-9.720688104161469549e-05, +-9.710048551672318166e-05, +-9.699394079691804225e-05, +-9.688724706754263578e-05, +-9.678040451417556551e-05, +-9.667341332263703561e-05, +-9.656627367894639108e-05, +-9.645898576936749161e-05, +-9.635154978039009042e-05, +-9.624396589871140283e-05, +-9.613623431128633188e-05, +-9.602835520526245691e-05, +-9.592032876803054380e-05, +-9.581215518720168187e-05, +-9.570383465061012989e-05, +-9.559536734631412928e-05, +-9.548675346260114885e-05, +-9.537799318796630929e-05, +-9.526908671114229349e-05, +-9.516003422108420845e-05, +-9.505083590695024578e-05, +-9.494149195814903421e-05, +-9.483200256429602764e-05, +-9.472236791521942750e-05, +-9.461258820098125699e-05, +-9.450266361185995960e-05, +-9.439259433835401768e-05, +-9.428238057118679062e-05, +-9.417202250128643010e-05, +-9.406152031981470621e-05, +-9.395087421815262831e-05, +-9.384008438788052277e-05, +-9.372915102082491116e-05, +-9.361807430901722925e-05, +-9.350685444469529072e-05, +-9.339549162032997204e-05, +-9.328398602860298635e-05, +-9.317233786241341578e-05, +-9.306054731487676277e-05, +-9.294861457932851435e-05, +-9.283653984930550747e-05, +-9.272432331857464679e-05, +-9.261196518111245390e-05, +-9.249946563111004108e-05, +-9.238682486297803093e-05, +-9.227404307132622751e-05, +-9.216112045099225289e-05, +-9.204805719702261423e-05, +-9.193485350467617322e-05, +-9.182150956942470178e-05, +-9.170802558695708329e-05, +-9.159440175315909226e-05, +-9.148063826414308791e-05, +-9.136673531622787508e-05, +-9.125269310594285135e-05, +-9.113851183003312986e-05, +-9.102419168543891240e-05, +-9.090973286932495256e-05, +-9.079513557906146025e-05, +-9.068040001222689352e-05, +-9.056552636660904275e-05, +-9.045051484020931324e-05, +-9.033536563122197631e-05, +-9.022007893805940413e-05, +-9.010465495935610829e-05, +-8.998909389392409787e-05, +-8.987339594080212925e-05, +-8.975756129923563489e-05, +-8.964159016866104297e-05, +-8.952548274873510514e-05, +-8.940923923931550280e-05, +-8.929285984046526523e-05, +-8.917634475245688960e-05, +-8.905969417575195792e-05, +-8.894290831102669712e-05, +-8.882598735917612614e-05, +-8.870893152126805865e-05, +-8.859174099859397919e-05, +-8.847441599264806395e-05, +-8.835695670511105315e-05, +-8.823936333788184210e-05, +-8.812163609305482127e-05, +-8.800377517292722182e-05, +-8.788578077999564613e-05, +-8.776765311696369789e-05, +-8.764939238671407744e-05, +-8.753099879236565144e-05, +-8.741247253720083846e-05, +-8.729381382472196037e-05, +-8.717502285863010041e-05, +-8.705609984280458465e-05, +-8.693704498135354649e-05, +-8.681785847856750922e-05, +-8.669854053892469864e-05, +-8.657909136711539695e-05, +-8.645951116802731956e-05, +-8.633980014672284684e-05, +-8.621995850849838421e-05, +-8.609998645880837312e-05, +-8.597988420332425806e-05, +-8.585965194790694786e-05, +-8.573928989861227736e-05, +-8.561879826169039752e-05, +-8.549817724359064079e-05, +-8.537742705094039273e-05, +-8.525654789057611374e-05, +-8.513553996952710312e-05, +-8.501440349499438424e-05, +-8.489313867440265139e-05, +-8.477174571535275459e-05, +-8.465022482562670051e-05, +-8.452857621321322606e-05, +-8.440680008628703593e-05, +-8.428489665321299031e-05, +-8.416286612255151236e-05, +-8.404070870303697195e-05, +-8.391842460360889706e-05, +-8.379601403339571083e-05, +-8.367347720169384707e-05, +-8.355081431801987329e-05, +-8.342802559206204040e-05, +-8.330511123368562244e-05, +-8.318207145295973700e-05, +-8.305890646013454988e-05, +-8.293561646564687228e-05, +-8.281220168011972714e-05, +-8.268866231436771590e-05, +-8.256499857937448070e-05, +-8.244121068632502710e-05, +-8.231729884658379613e-05, +-8.219326327169951610e-05, +-8.206910417341065067e-05, +-8.194482176362271198e-05, +-8.182041625444122035e-05, +-8.169588785814934262e-05, +-8.157123678721237806e-05, +-8.144646325427823267e-05, +-8.132156747218218971e-05, +-8.119654965392454800e-05, +-8.107141001270329707e-05, +-8.094614876189155223e-05, +-8.082076611504308394e-05, +-8.069526228589758981e-05, +-8.056963748835728933e-05, +-8.044389193652083235e-05, +-8.031802584466039526e-05, +-8.019203942722605847e-05, +-8.006593289884713456e-05, +-7.993970647433566484e-05, +-7.981336036866558913e-05, +-7.968689479699783142e-05, +-7.956030997468776741e-05, +-7.943360611723339956e-05, +-7.930678344033135617e-05, +-7.917984215985400119e-05, +-7.905278249183216824e-05, +-7.892560465248852697e-05, +-7.879830885821438114e-05, +-7.867089532557663457e-05, +-7.854336427131963436e-05, +-7.841571591234654964e-05, +-7.828795046574327828e-05, +-7.816006814878644288e-05, +-7.803206917889065784e-05, +-7.790395377366589726e-05, +-7.777572215089286996e-05, +-7.764737452850759675e-05, +-7.751891112463340789e-05, +-7.739033215755862212e-05, +-7.726163784574214383e-05, +-7.713282840781274480e-05, +-7.700390406257359070e-05, +-7.687486502897508190e-05, +-7.674571152617583976e-05, +-7.661644377346286873e-05, +-7.648706199031462985e-05, +-7.635756639637606335e-05, +-7.622795721143758234e-05, +-7.609823465549038057e-05, +-7.596839894867485159e-05, +-7.583845031128660604e-05, +-7.570838896380357671e-05, +-7.557821512686948445e-05, +-7.544792902127022967e-05, +-7.531753086799596291e-05, +-7.518702088816161286e-05, +-7.505639930306876712e-05, +-7.492566633418257878e-05, +-7.479482220310790035e-05, +-7.466386713164785784e-05, +-7.453280134174964061e-05, +-7.440162505551180618e-05, +-7.427033849521130402e-05, +-7.413894188328694140e-05, +-7.400743544231467718e-05, +-7.387581939506641265e-05, +-7.374409396445632354e-05, +-7.361225937354686378e-05, +-7.348031584557774079e-05, +-7.334826360394115503e-05, +-7.321610287218856272e-05, +-7.308383387403550051e-05, +-7.295145683333766529e-05, +-7.281897197412585260e-05, +-7.268637952058809441e-05, +-7.255367969704583375e-05, +-7.242087272801187535e-05, +-7.228795883813789668e-05, +-7.215493825221885253e-05, +-7.202181119522288542e-05, +-7.188857789226748673e-05, +-7.175523856862415877e-05, +-7.162179344972467601e-05, +-7.148824276113677190e-05, +-7.135458672859929408e-05, +-7.122082557799806735e-05, +-7.108695953537182968e-05, +-7.095298882691141904e-05, +-7.081891367896507247e-05, +-7.068473431801534609e-05, +-7.055045097071321327e-05, +-7.041606386385471366e-05, +-7.028157322438566940e-05, +-7.014697927940291848e-05, +-7.001228225615767570e-05, +-6.987748238203308972e-05, +-6.974257988457897817e-05, +-6.960757499148736537e-05, +-6.947246793059839119e-05, +-6.933725892990586762e-05, +-6.920194821753314167e-05, +-6.906653602176795255e-05, +-6.893102257103909415e-05, +-6.879540809392096872e-05, +-6.865969281913379013e-05, +-6.852387697554964188e-05, +-6.838796079216707968e-05, +-6.825194449814719466e-05, +-6.811582832278959834e-05, +-6.797961249553773522e-05, +-6.784329724597808317e-05, +-6.770688280384641470e-05, +-6.757036939900326687e-05, +-6.743375726146932697e-05, +-6.729704662140083467e-05, +-6.716023770909642602e-05, +-6.702333075500099596e-05, +-6.688632598968246928e-05, +-6.674922364386129089e-05, +-6.661202394841548094e-05, +-6.647472713432696682e-05, +-6.633733343274059082e-05, +-6.619984307494013577e-05, +-6.606225629233008329e-05, +-6.592457331647025407e-05, +-6.578679437905282277e-05, +-6.564891971190660064e-05, +-6.551094954700363560e-05, +-6.537288411643426200e-05, +-6.523472365243679425e-05, +-6.509646838740392361e-05, +-6.495811855382669199e-05, +-6.481967438435557328e-05, +-6.468113611177561792e-05, +-6.454250396898138079e-05, +-6.440377818903808376e-05, +-6.426495900512576567e-05, +-6.412604665054554367e-05, +-6.398704135874892730e-05, +-6.384794336331984783e-05, +-6.370875289794969453e-05, +-6.356947019650396598e-05, +-6.343009549293627928e-05, +-6.329062902135533313e-05, +-6.315107101600040481e-05, +-6.301142171121536999e-05, +-6.287168134151116636e-05, +-6.273185014150879169e-05, +-6.259192834594593099e-05, +-6.245191618970669079e-05, +-6.231181390780334386e-05, +-6.217162173535075559e-05, +-6.203133990763433640e-05, +-6.189096866002264145e-05, +-6.175050822803543143e-05, +-6.160995884731213586e-05, +-6.146932075361795172e-05, +-6.132859418284254238e-05, +-6.118777937100713916e-05, +-6.104687655423860176e-05, +-6.090588596880605756e-05, +-6.076480785110229395e-05, +-6.062364243761865908e-05, +-6.048238996500605500e-05, +-6.034105067001944007e-05, +-6.019962478952332451e-05, +-6.005811256052219580e-05, +-5.991651422013567015e-05, +-5.977483000560419131e-05, +-5.963306015429470911e-05, +-5.949120490367537011e-05, +-5.934926449135273280e-05, +-5.920723915504643798e-05, +-5.906512913259452131e-05, +-5.892293466195396901e-05, +-5.878065598120552895e-05, +-5.863829332852914673e-05, +-5.849584694224044907e-05, +-5.835331706076570554e-05, +-5.821070392264787973e-05, +-5.806800776654564672e-05, +-5.792522883123945102e-05, +-5.778236735560651576e-05, +-5.763942357865741415e-05, +-5.749639773951116674e-05, +-5.735329007740058108e-05, +-5.721010083167832327e-05, +-5.706683024179152731e-05, +-5.692347854731893579e-05, +-5.678004598794584803e-05, +-5.663653280346913455e-05, +-5.649293923379727092e-05, +-5.634926551895668036e-05, +-5.620551189906529275e-05, +-5.606167861437050525e-05, +-5.591776590522375779e-05, +-5.577377401208539164e-05, +-5.562970317552594362e-05, +-5.548555363623037460e-05, +-5.534132563497357998e-05, +-5.519701941265675794e-05, +-5.505263521028325884e-05, +-5.490817326896313888e-05, +-5.476363382991978045e-05, +-5.461901713446411531e-05, +-5.447432342402533454e-05, +-5.432955294015796301e-05, +-5.418470592448308882e-05, +-5.403978261875209407e-05, +-5.389478326482120997e-05, +-5.374970810462479130e-05, +-5.360455738024547779e-05, +-5.345933133382470683e-05, +-5.331403020763208204e-05, +-5.316865424403958962e-05, +-5.302320368550213691e-05, +-5.287767877458913655e-05, +-5.273207975399001556e-05, +-5.258640686645685432e-05, +-5.244066035486786659e-05, +-5.229484046220096526e-05, +-5.214894743150844629e-05, +-5.200298150597968945e-05, +-5.185694292888395310e-05, +-5.171083194357618145e-05, +-5.156464879352788401e-05, +-5.141839372230917846e-05, +-5.127206697356092668e-05, +-5.112566879106553993e-05, +-5.097919941865765412e-05, +-5.083265910029277336e-05, +-5.068604808002225205e-05, +-5.053936660196686737e-05, +-5.039261491038069917e-05, +-5.024579324959289477e-05, +-5.009890186401358457e-05, +-4.995194099816591354e-05, +-4.980491089666594276e-05, +-4.965781180419656757e-05, +-4.951064396557853289e-05, +-4.936340762567897390e-05, +-4.921610302948239746e-05, +-4.906873042205803405e-05, +-4.892129004856567891e-05, +-4.877378215425573271e-05, +-4.862620698447432438e-05, +-4.847856478463821863e-05, +-4.833085580027216672e-05, +-4.818308027699006162e-05, +-4.803523846046780593e-05, +-4.788733059650803869e-05, +-4.773935693098160202e-05, +-4.759131770983302315e-05, +-4.744321317911313532e-05, +-4.729504358495249453e-05, +-4.714680917356745780e-05, +-4.699851019126642415e-05, +-4.685014688442268213e-05, +-4.670171949951410509e-05, +-4.655322828309621562e-05, +-4.640467348180833836e-05, +-4.625605534237282749e-05, +-4.610737411160168716e-05, +-4.595863003636999500e-05, +-4.580982336365442515e-05, +-4.566095434050677340e-05, +-4.551202321406033367e-05, +-4.536303023152911195e-05, +-4.521397564021434508e-05, +-4.506485968747740923e-05, +-4.491568262077929842e-05, +-4.476644468765341106e-05, +-4.461714613571263790e-05, +-4.446778721265421384e-05, +-4.431836816623371063e-05, +-4.416888924430458315e-05, +-4.401935069479054937e-05, +-4.386975276569200067e-05, +-4.372009570508623224e-05, +-4.357037976113285055e-05, +-4.342060518204679027e-05, +-4.327077221613878888e-05, +-4.312088111178716352e-05, +-4.297093211744497355e-05, +-4.282092548164521110e-05, +-4.267086145297528850e-05, +-4.252074028011517505e-05, +-4.237056221181085441e-05, +-4.222032749688100600e-05, +-4.207003638421572428e-05, +-4.191968912278362707e-05, +-4.176928596160405926e-05, +-4.161882714978073702e-05, +-4.146831293650729756e-05, +-4.131774357100740367e-05, +-4.116711930260064296e-05, +-4.101644038067573446e-05, +-4.086570705466327453e-05, +-4.071491957410871041e-05, +-4.056407818857866516e-05, +-4.041318314773365374e-05, +-4.026223470130137102e-05, +-4.011123309905581405e-05, +-3.996017859085049934e-05, +-3.980907142662480543e-05, +-3.965791185634323049e-05, +-3.950670013006192841e-05, +-3.935543649790140049e-05, +-3.920412121001991214e-05, +-3.905275451668563299e-05, +-3.890133666818342261e-05, +-3.874986791488777021e-05, +-3.859834850722891332e-05, +-3.844677869570559071e-05, +-3.829515873085137116e-05, +-3.814348886330823010e-05, +-3.799176934373164807e-05, +-3.784000042286443806e-05, +-3.768818235150928140e-05, +-3.753631538050158873e-05, +-3.738439976077619206e-05, +-3.723243574330627702e-05, +-3.708042357911022017e-05, +-3.692836351928427088e-05, +-3.677625581498199892e-05, +-3.662410071738733176e-05, +-3.647189847778795497e-05, +-3.631964934748040395e-05, +-3.616735357784421655e-05, +-3.601501142031411651e-05, +-3.586262312635315910e-05, +-3.571018894751909793e-05, +-3.555770913540371695e-05, +-3.540518394163915956e-05, +-3.525261361793103064e-05, +-3.509999841603102044e-05, +-3.494733858774357917e-05, +-3.479463438492498193e-05, +-3.464188605949013882e-05, +-3.448909386338475807e-05, +-3.433625804862576643e-05, +-3.418337886727377720e-05, +-3.403045657143937867e-05, +-3.387749141328943596e-05, +-3.372448364502001990e-05, +-3.357143351889594653e-05, +-3.341834128722367199e-05, +-3.326520720235779782e-05, +-3.311203151670022383e-05, +-3.295881448270695835e-05, +-3.280555635286011861e-05, +-3.265225737970852739e-05, +-3.249891781584039112e-05, +-3.234553791388889029e-05, +-3.219211792653953170e-05, +-3.203865810650162715e-05, +-3.188515870654936440e-05, +-3.173161997949382120e-05, +-3.157804217818949757e-05, +-3.142442555553382795e-05, +-3.127077036447365252e-05, +-3.111707685797747517e-05, +-3.096334528907605332e-05, +-3.080957591083453395e-05, +-3.065576897635888422e-05, +-3.050192473879575938e-05, +-3.034804345133848281e-05, +-3.019412536719977494e-05, +-3.004017073965195006e-05, +-2.988617982199922847e-05, +-2.973215286758441455e-05, +-2.957809012979497500e-05, +-2.942399186203544935e-05, +-2.926985831776820574e-05, +-2.911568975048538382e-05, +-2.896148641371537965e-05, +-2.880724856102260853e-05, +-2.865297644601388143e-05, +-2.849867032231039873e-05, +-2.834433044358869238e-05, +-2.818995706355259591e-05, +-2.803555043593978350e-05, +-2.788111081452141423e-05, +-2.772663845310847469e-05, +-2.757213360551706075e-05, +-2.741759652564348232e-05, +-2.726302746736791841e-05, +-2.710842668462895940e-05, +-2.695379443139657997e-05, +-2.679913096165029913e-05, +-2.664443652941369519e-05, +-2.648971138876043998e-05, +-2.633495579375244171e-05, +-2.618016999850771948e-05, +-2.602535425717300677e-05, +-2.587050882389513195e-05, +-2.571563395289719702e-05, +-2.556072989838075883e-05, +-2.540579691460216372e-05, +-2.525083525583693146e-05, +-2.509584517639334506e-05, +-2.494082693057795281e-05, +-2.478578077277037144e-05, +-2.463070695732674472e-05, +-2.447560573865509547e-05, +-2.432047737118721767e-05, +-2.416532210935093438e-05, +-2.401014020763823651e-05, +-2.385493192054310041e-05, +-2.369969750256797954e-05, +-2.354443720825772303e-05, +-2.338915129217867774e-05, +-2.323384000889031260e-05, +-2.307850361302102131e-05, +-2.292314235917105236e-05, +-2.276775650198788480e-05, +-2.261234629613835068e-05, +-2.245691199628042209e-05, +-2.230145385713212916e-05, +-2.214597213340853399e-05, +-2.199046707982875090e-05, +-2.183493895114970915e-05, +-2.167938800213825844e-05, +-2.152381448757753862e-05, +-2.136821866226672217e-05, +-2.121260078102735002e-05, +-2.105696109867544384e-05, +-2.090129987006239399e-05, +-2.074561735004700407e-05, +-2.058991379350191145e-05, +-2.043418945532012628e-05, +-2.027844459038699481e-05, +-2.012267945362121603e-05, +-1.996689429994675749e-05, +-1.981108938429947228e-05, +-1.965526496162640452e-05, +-1.949942128689270110e-05, +-1.934355861505309042e-05, +-1.918767720109338019e-05, +-1.903177730000202089e-05, +-1.887585916677684810e-05, +-1.871992305643146578e-05, +-1.856396922396722640e-05, +-1.840799792441420702e-05, +-1.825200941280332833e-05, +-1.809600394417256852e-05, +-1.793998177356688530e-05, +-1.778394315604446367e-05, +-1.762788834664866556e-05, +-1.747181760044922609e-05, +-1.731573117251410503e-05, +-1.715962931791595130e-05, +-1.700351229173177435e-05, +-1.684738034904938162e-05, +-1.669123374493921636e-05, +-1.653507273449575385e-05, +-1.637889757280896653e-05, +-1.622270851497130696e-05, +-1.606650581608371159e-05, +-1.591028973122791970e-05, +-1.575406051550046994e-05, +-1.559781842401925634e-05, +-1.544156371186078693e-05, +-1.528529663412896275e-05, +-1.512901744592716309e-05, +-1.497272640233667493e-05, +-1.481642375845824496e-05, +-1.466010976938376502e-05, +-1.450378469020265189e-05, +-1.434744877600176772e-05, +-1.419110228187165924e-05, +-1.403474546287155330e-05, +-1.387837857410523576e-05, +-1.372200187062362238e-05, +-1.356561560750038021e-05, +-1.340922003980411107e-05, +-1.325281542257688939e-05, +-1.309640201086855179e-05, +-1.293998005974345307e-05, +-1.278354982421720972e-05, +-1.262711155932604827e-05, +-1.247066552009838219e-05, +-1.231421196152673788e-05, +-1.215775113864375211e-05, +-1.200128330642442956e-05, +-1.184480871986221479e-05, +-1.168832763394078609e-05, +-1.153184030361267804e-05, +-1.137534698383378453e-05, +-1.121884792956983185e-05, +-1.106234339573335258e-05, +-1.090583363725280692e-05, +-1.074931890904445274e-05, +-1.059279946598396991e-05, +-1.043627556297572733e-05, +-1.027974745488970435e-05, +-1.012321539656798076e-05, +-9.966679642859212711e-06, +-9.810140448597338302e-06, +-9.653598068573149475e-06, +-9.497052757610802796e-06, +-9.340504770469531452e-06, +-9.183954361920091666e-06, +-9.027401786716439608e-06, +-8.870847299567340548e-06, +-8.714291155205832330e-06, +-8.557733608325936769e-06, +-8.401174913589232621e-06, +-8.244615325659370488e-06, +-8.088055099173703985e-06, +-7.931494488749874576e-06, +-7.774933748992389634e-06, +-7.618373134464324759e-06, +-7.461812899728625112e-06, +-7.305253299320004244e-06, +-7.148694587751341737e-06, +-6.992137019513385896e-06, +-6.835580849081216614e-06, +-6.679026330885973944e-06, +-6.522473719356333926e-06, +-6.365923268890132974e-06, +-6.209375233860940856e-06, +-6.052829868617748138e-06, +-5.896287427491384151e-06, +-5.739748164766274377e-06, +-5.583212334721884068e-06, +-5.426680191604411262e-06, +-5.270151989633302998e-06, +-5.113627983007889285e-06, +-4.957108425879015119e-06, +-4.800593572390510368e-06, +-4.644083676650857370e-06, +-4.487578992739760516e-06, +-4.331079774707750690e-06, +-4.174586276582735373e-06, +-4.018098752341678096e-06, +-3.861617455952053080e-06, +-3.705142641343574663e-06, +-3.548674562414644072e-06, +-3.392213473032065238e-06, +-3.235759627037547046e-06, +-3.079313278219385758e-06, +-2.922874680353938702e-06, +-2.766444087177299498e-06, +-2.610021752391846888e-06, +-2.453607929672843974e-06, +-2.297202872640084209e-06, +-2.140806834892393593e-06, +-1.984420070014186287e-06, +-1.828042831512266841e-06, +-1.671675372885182720e-06, +-1.515317947594912436e-06, +-1.358970809045539795e-06, +-1.202634210624676993e-06, +-1.046308405675158886e-06, +-8.899936475016274021e-07, +-7.336901893770698965e-07, +-5.773982845145384135e-07, +-4.211181861015997350e-07, +-2.648501473068864919e-07, +-1.085944212169574753e-07, + 4.764873909440458630e-08, + 2.038790805944849069e-07, + 3.600963503129528888e-07, + 5.163002953074230335e-07, + 6.724906626568926071e-07, + 8.286671995248761670e-07, + 9.848296530901170762e-07, + 1.140977770574881262e-06, + 1.297111299273218577e-06, + 1.453229986474746772e-06, + 1.609333579562588416e-06, + 1.765421825937142580e-06, + 1.921494473044364948e-06, + 2.077551268397070053e-06, + 2.233591959540512308e-06, + 2.389616294045811760e-06, + 2.545624019573062067e-06, + 2.701614883802103766e-06, + 2.857588634460756729e-06, + 3.013545019353089885e-06, + 3.169483786283257716e-06, + 3.325404683153346110e-06, + 3.481307457887237230e-06, + 3.637191858465777479e-06, + 3.793057632920248985e-06, + 3.948904529332784231e-06, + 4.104732295829799007e-06, + 4.260540680610213849e-06, + 4.416329431904150180e-06, + 4.572098297994180240e-06, + 4.727847027243577336e-06, + 4.883575368027153903e-06, + 5.039283068794229088e-06, + 5.194969878062140479e-06, + 5.350635544381854565e-06, + 5.506279816366162772e-06, + 5.661902442683160150e-06, + 5.817503172049706288e-06, + 5.973081753259578985e-06, + 6.128637935142216130e-06, + 6.284171466590957470e-06, + 6.439682096556425052e-06, + 6.595169574046957744e-06, + 6.750633648122083160e-06, + 6.906074067920691663e-06, + 7.061490582619762147e-06, + 7.216882941462569929e-06, + 7.372250893752093444e-06, + 7.527594188851464862e-06, + 7.682912576177394580e-06, + 7.838205805228429926e-06, + 7.993473625543577607e-06, + 8.148715786730557334e-06, + 8.303932038459230545e-06, + 8.459122130455074860e-06, + 8.614285812527388588e-06, + 8.769422834527914855e-06, + 8.924532946379171475e-06, + 9.079615898067828843e-06, + 9.234671439645113122e-06, + 9.389699321220255291e-06, + 9.544699292988683792e-06, + 9.699671105190804513e-06, + 9.854614508140098573e-06, + 1.000952925221658830e-05, + 1.016441508786733360e-05, + 1.031927176559982002e-05, + 1.047409903601003958e-05, + 1.062889664974140626e-05, + 1.078366435751284877e-05, + 1.093840191011222901e-05, + 1.109310905838985726e-05, + 1.124778555328665598e-05, + 1.140243114579978554e-05, + 1.155704558697622880e-05, + 1.171162862797551218e-05, + 1.186618002000079954e-05, + 1.202069951432705265e-05, + 1.217518686232206978e-05, + 1.232964181540560621e-05, + 1.248406412507718061e-05, + 1.263845354290974094e-05, + 1.279280982054303048e-05, + 1.294713270971170933e-05, + 1.310142196221117662e-05, + 1.325567732989105517e-05, + 1.340989856471772957e-05, + 1.356408541870578736e-05, + 1.371823764394589490e-05, + 1.387235499262595115e-05, + 1.402643721699705559e-05, + 1.418048406936696573e-05, + 1.433449530216242009e-05, + 1.448847066786085215e-05, + 1.464240991901817634e-05, + 1.479631280829670800e-05, + 1.495017908839000952e-05, + 1.510400851211946055e-05, + 1.525780083235902116e-05, + 1.541155580206317546e-05, + 1.556527317428797698e-05, + 1.571895270215692506e-05, + 1.587259413885469859e-05, + 1.602619723768927392e-05, + 1.617976175202355581e-05, + 1.633328743530332612e-05, + 1.648677404108524330e-05, + 1.664022132296137519e-05, + 1.679362903465603856e-05, + 1.694699692995054534e-05, + 1.710032476271777172e-05, + 1.725361228691602903e-05, + 1.740685925658911793e-05, + 1.756006542586005360e-05, + 1.771323054895882472e-05, + 1.786635438018174940e-05, + 1.801943667391220721e-05, + 1.817247718464871660e-05, + 1.832547566693655221e-05, + 1.847843187543000187e-05, + 1.863134556488586806e-05, + 1.878421649012937663e-05, + 1.893704440608244728e-05, + 1.908982906775665310e-05, + 1.924257023024729128e-05, + 1.939526764876083718e-05, + 1.954792107857427318e-05, + 1.970053027505621368e-05, + 1.985309499369448789e-05, + 2.000561499002819423e-05, + 2.015809001970953374e-05, + 2.031051983849766398e-05, + 2.046290420222454673e-05, + 2.061524286682279156e-05, + 2.076753558831935401e-05, + 2.091978212283575911e-05, + 2.107198222658179275e-05, + 2.122413565588306410e-05, + 2.137624216714041918e-05, + 2.152830151685798443e-05, + 2.168031346163618039e-05, + 2.183227775816570438e-05, + 2.198419416325507597e-05, + 2.213606243378995236e-05, + 2.228788232676117868e-05, + 2.243965359925780844e-05, + 2.259137600846816742e-05, + 2.274304931167269792e-05, + 2.289467326627211754e-05, + 2.304624762974682257e-05, + 2.319777215968432169e-05, + 2.334924661377306960e-05, + 2.350067074979592449e-05, + 2.365204432565770376e-05, + 2.380336709934485507e-05, + 2.395463882895296117e-05, + 2.410585927268044142e-05, + 2.425702818882881600e-05, + 2.440814533579626513e-05, + 2.455921047210537781e-05, + 2.471022335636943319e-05, + 2.486118374728598003e-05, + 2.501209140369846679e-05, + 2.516294608452848585e-05, + 2.531374754880365776e-05, + 2.546449555567790923e-05, + 2.561518986439177440e-05, + 2.576583023429920852e-05, + 2.591641642486178067e-05, + 2.606694819564197882e-05, + 2.621742530633055547e-05, + 2.636784751671353736e-05, + 2.651821458666540519e-05, + 2.666852627621035782e-05, + 2.681878234545547799e-05, + 2.696898255461769166e-05, + 2.711912666404477443e-05, + 2.726921443417487694e-05, + 2.741924562556418896e-05, + 2.756921999888048159e-05, + 2.771913731490338511e-05, + 2.786899733451819885e-05, + 2.801879981874979623e-05, + 2.816854452868914973e-05, + 2.831823122558752774e-05, + 2.846785967078344304e-05, + 2.861742962572954779e-05, + 2.876694085201982331e-05, + 2.891639311132304389e-05, + 2.906578616544344476e-05, + 2.921511977631453867e-05, + 2.936439370596569882e-05, + 2.951360771654279252e-05, + 2.966276157033547939e-05, + 2.981185502970364827e-05, + 2.996088785717172920e-05, + 3.010985981535543190e-05, + 3.025877066699531875e-05, + 3.040762017495103817e-05, + 3.055640810220120607e-05, + 3.070513421183720552e-05, + 3.085379826709046806e-05, + 3.100240003129247333e-05, + 3.115093926789544047e-05, + 3.129941574049930437e-05, + 3.144782921278535575e-05, + 3.159617944857672606e-05, + 3.174446621183170614e-05, + 3.189268926661145725e-05, + 3.204084837710641145e-05, + 3.218894330763053885e-05, + 3.233697382261446296e-05, + 3.248493968663291806e-05, + 3.263284066436508100e-05, + 3.278067652061492706e-05, + 3.292844702033801655e-05, + 3.307615192857547365e-05, + 3.322379101051440361e-05, + 3.337136403148132648e-05, + 3.351887075690944108e-05, + 3.366631095236549958e-05, + 3.381368438354387829e-05, + 3.396099081625959814e-05, + 3.410823001647609378e-05, + 3.425540175026497612e-05, + 3.440250578383359140e-05, + 3.454954188351850924e-05, + 3.469650981578560389e-05, + 3.484340934722443675e-05, + 3.499024024457425010e-05, + 3.513700227468560670e-05, + 3.528369520454636315e-05, + 3.543031880127613375e-05, + 3.557687283212574835e-05, + 3.572335706447235992e-05, + 3.586977126584474032e-05, + 3.601611520388517737e-05, + 3.616238864637559737e-05, + 3.630859136123161551e-05, + 3.645472311649627462e-05, + 3.660078368036667588e-05, + 3.674677282115491368e-05, + 3.689269030731471308e-05, + 3.703853590743533118e-05, + 3.718430939024167911e-05, + 3.733001052458850122e-05, + 3.747563907948662631e-05, + 3.762119482406408542e-05, + 3.776667752759279000e-05, + 3.791208695948238586e-05, + 3.805742288928048349e-05, + 3.820268508666626136e-05, + 3.834787332147775385e-05, + 3.849298736367180360e-05, + 3.863802698335197966e-05, + 3.878299195076105588e-05, + 3.892788203627576605e-05, + 3.907269701043306873e-05, + 3.921743664389743818e-05, + 3.936210070745517237e-05, + 3.950668897207358356e-05, + 3.965120120883547188e-05, + 3.979563718896643367e-05, + 3.993999668385383501e-05, + 4.008427946500910181e-05, + 4.022848530409311047e-05, + 4.037261397291091596e-05, + 4.051666524341126390e-05, + 4.066063888768157617e-05, + 4.080453467797941306e-05, + 4.094835238666273876e-05, + 4.109209178628002532e-05, + 4.123575264950000318e-05, + 4.137933474913771582e-05, + 4.152283785818066265e-05, + 4.166626174972452612e-05, + 4.180960619703205070e-05, + 4.195287097352605650e-05, + 4.209605585275871575e-05, + 4.223916060843026883e-05, + 4.238218501441551940e-05, + 4.252512884469353754e-05, + 4.266799187343783817e-05, + 4.281077387494628067e-05, + 4.295347462366643919e-05, + 4.309609389422281611e-05, + 4.323863146135162728e-05, + 4.338108709996029089e-05, + 4.352346058512023778e-05, + 4.366575169203596428e-05, + 4.380796019606398542e-05, + 4.395008587273942501e-05, + 4.409212849771185791e-05, + 4.423408784680340979e-05, + 4.437596369600325474e-05, + 4.451775582143473013e-05, + 4.465946399938266521e-05, + 4.480108800628617799e-05, + 4.494262761873361336e-05, + 4.508408261348771011e-05, + 4.522545276744801304e-05, + 4.536673785767039534e-05, + 4.550793766139252380e-05, + 4.564905195597102251e-05, + 4.579008051893859000e-05, + 4.593102312799850369e-05, + 4.607187956099304926e-05, + 4.621264959592863349e-05, + 4.635333301097086471e-05, + 4.649392958443770198e-05, + 4.663443909482576733e-05, + 4.677486132077197852e-05, + 4.691519604108006464e-05, + 4.705544303471367456e-05, + 4.719560208079768480e-05, + 4.733567295861135552e-05, + 4.747565544761471045e-05, + 4.761554932740999355e-05, + 4.775535437776863177e-05, + 4.789507037862405218e-05, + 4.803469711007254933e-05, + 4.817423435236730186e-05, + 4.831368188594403415e-05, + 4.845303949138316413e-05, + 4.859230694943589193e-05, + 4.873148404101774203e-05, + 4.887057054720283063e-05, + 4.900956624924942564e-05, + 4.914847092856263660e-05, + 4.928728436671929035e-05, + 4.942600634546290983e-05, + 4.956463664670363950e-05, + 4.970317505251196379e-05, + 4.984162134514457884e-05, + 4.997997530700694011e-05, + 5.011823672067892407e-05, + 5.025640536890841790e-05, + 5.039448103461213258e-05, + 5.053246350086944332e-05, + 5.067035255094780050e-05, + 5.080814796826541285e-05, + 5.094584953641699039e-05, + 5.108345703916725963e-05, + 5.122097026044567804e-05, + 5.135838898437111320e-05, + 5.149571299522141062e-05, + 5.163294207742767455e-05, + 5.177007601562987402e-05, + 5.190711459461608008e-05, + 5.204405759934633858e-05, + 5.218090481497272788e-05, + 5.231765602680188616e-05, + 5.245431102032072730e-05, + 5.259086958118982049e-05, + 5.272733149523798956e-05, + 5.286369654848744611e-05, + 5.299996452712271358e-05, + 5.313613521748568059e-05, + 5.327220840613035990e-05, + 5.340818387976261359e-05, + 5.354406142526439846e-05, + 5.367984082971910932e-05, + 5.381552188035025380e-05, + 5.395110436457697700e-05, + 5.408658807000866087e-05, + 5.422197278441380079e-05, + 5.435725829574004301e-05, + 5.449244439213737977e-05, + 5.462753086189253476e-05, + 5.476251749351420853e-05, + 5.489740407566610865e-05, + 5.503219039719236069e-05, + 5.516687624714129972e-05, + 5.530146141470604245e-05, + 5.543594568927809427e-05, + 5.557032886044339188e-05, + 5.570461071795038713e-05, + 5.583879105173020636e-05, + 5.597286965191990659e-05, + 5.610684630879715228e-05, + 5.624072081286487124e-05, + 5.637449295478512505e-05, + 5.650816252540937184e-05, + 5.664172931577312665e-05, + 5.677519311709627306e-05, + 5.690855372077712723e-05, + 5.704181091841678503e-05, + 5.717496450178410227e-05, + 5.730801426283270992e-05, + 5.744095999372641153e-05, + 5.757380148677976219e-05, + 5.770653853451083532e-05, + 5.783917092963738722e-05, + 5.797169846504567281e-05, + 5.810412093381602596e-05, + 5.823643812921618486e-05, + 5.836864984469612857e-05, + 5.850075587391205138e-05, + 5.863275601069141765e-05, + 5.876465004905640090e-05, + 5.889643778321872707e-05, + 5.902811900757964062e-05, + 5.915969351672455812e-05, + 5.929116110544717811e-05, + 5.942252156871412263e-05, + 5.955377470168882350e-05, + 5.968492029972584384e-05, + 5.981595815837186740e-05, + 5.994688807335905102e-05, + 6.007770984063013074e-05, + 6.020842325630200610e-05, + 6.033902811669106307e-05, + 6.046952421830624870e-05, + 6.059991135784480209e-05, + 6.073018933221500904e-05, + 6.086035793850196166e-05, + 6.099041697399063824e-05, + 6.112036623616134967e-05, + 6.125020552268925153e-05, + 6.137993463143871298e-05, + 6.150955336048816537e-05, + 6.163906150809418802e-05, + 6.176845887271500827e-05, + 6.189774525300627316e-05, + 6.202692044782024978e-05, + 6.215598425620067532e-05, + 6.228493647740637913e-05, + 6.241377691087685931e-05, + 6.254250535625506448e-05, + 6.267112161338313833e-05, + 6.279962548229569750e-05, + 6.292801676324453791e-05, + 6.305629525666867010e-05, + 6.318446076318965710e-05, + 6.331251308366415769e-05, + 6.344045201912585372e-05, + 6.356827737080912642e-05, + 6.369598894017238031e-05, + 6.382358652883498326e-05, + 6.395106993865837838e-05, + 6.407843897168271241e-05, + 6.420569343015037646e-05, + 6.433283311652374624e-05, + 6.445985783345598995e-05, + 6.458676738378679922e-05, + 6.471356157059354991e-05, + 6.484024019713417817e-05, + 6.496680306687081612e-05, + 6.509324998349287172e-05, + 6.521958075086012178e-05, + 6.534579517305429282e-05, + 6.547189305437378919e-05, + 6.559787419930582903e-05, + 6.572373841254268022e-05, + 6.584948549900640729e-05, + 6.597511526378539140e-05, + 6.610062751221422244e-05, + 6.622602204981229259e-05, + 6.635129868230618504e-05, + 6.647645721565257780e-05, + 6.660149745598273254e-05, + 6.672641920965243563e-05, + 6.685122228323763427e-05, + 6.697590648350645046e-05, + 6.710047161743547121e-05, + 6.722491749223423788e-05, + 6.734924391528146806e-05, + 6.747345069420634359e-05, + 6.759753763682536931e-05, + 6.772150455117102318e-05, + 6.784535124548731096e-05, + 6.796907752822904799e-05, + 6.809268320805725132e-05, + 6.821616809386140648e-05, + 6.833953199472607410e-05, + 6.846277471994850815e-05, + 6.858589607906092277e-05, + 6.870889588177495403e-05, + 6.883177393803240052e-05, + 6.895453005799954494e-05, + 6.907716405203980501e-05, + 6.919967573073671863e-05, + 6.932206490488750637e-05, + 6.944433138549934456e-05, + 6.956647498381081894e-05, + 6.968849551125873450e-05, + 6.981039277950158847e-05, + 6.993216660041375629e-05, + 7.005381678608523410e-05, + 7.017534314881750525e-05, + 7.029674550114518362e-05, + 7.041802365580333855e-05, + 7.053917742574965320e-05, + 7.066020662415970822e-05, + 7.078111106442715802e-05, + 7.090189056015822836e-05, + 7.102254492519327850e-05, + 7.114307397357629438e-05, + 7.126347751957468892e-05, + 7.138375537767576481e-05, + 7.150390736258058872e-05, + 7.162393328922708486e-05, + 7.174383297275641112e-05, + 7.186360622853593064e-05, + 7.198325287215347906e-05, + 7.210277271941804215e-05, + 7.222216558635445680e-05, + 7.234143128922566424e-05, + 7.246056964449998068e-05, + 7.257958046887291693e-05, + 7.269846357926327521e-05, + 7.281721879280630516e-05, + 7.293584592687670247e-05, + 7.305434479905663846e-05, + 7.317271522715671232e-05, + 7.329095702921130254e-05, + 7.340907002347940721e-05, + 7.352705402843859957e-05, + 7.364490886280711864e-05, + 7.376263434551795679e-05, + 7.388023029571242229e-05, + 7.399769653278998548e-05, + 7.411503287635436686e-05, + 7.423223914623530240e-05, + 7.434931516251037670e-05, + 7.446626074544592043e-05, + 7.458307571557263335e-05, + 7.469975989362732211e-05, + 7.481631310057409632e-05, + 7.493273515761995397e-05, + 7.504902588619019718e-05, + 7.516518510792219801e-05, + 7.528121264471306269e-05, + 7.539710831866821335e-05, + 7.551287195212148644e-05, + 7.562850336765754853e-05, + 7.574400238805337659e-05, + 7.585936883635302724e-05, + 7.597460253580942864e-05, + 7.608970330991092989e-05, + 7.620467098237162454e-05, + 7.631950537715743923e-05, + 7.643420631842841339e-05, + 7.654877363061314338e-05, + 7.666320713835056075e-05, + 7.677750666651257856e-05, + 7.689167204022276673e-05, + 7.700570308480702089e-05, + 7.711959962583918012e-05, + 7.723336148913650045e-05, + 7.734698850073421677e-05, + 7.746048048690087071e-05, + 7.757383727415960168e-05, + 7.768705868923189034e-05, + 7.780014455910900747e-05, + 7.791309471099661132e-05, + 7.802590897233503567e-05, + 7.813858717082072997e-05, + 7.825112913435419053e-05, + 7.836353469108712328e-05, + 7.847580366941802569e-05, + 7.858793589796544759e-05, + 7.869993120558987855e-05, + 7.881178942138809644e-05, + 7.892351037469463111e-05, + 7.903509389507502880e-05, + 7.914653981234878299e-05, + 7.925784795655688966e-05, + 7.936901815798389729e-05, + 7.948005024715283813e-05, + 7.959094405481938715e-05, + 7.970169941199403392e-05, + 7.981231614991050524e-05, + 7.992279410004719169e-05, + 8.003313309412145554e-05, + 8.014333296409169077e-05, + 8.025339354214989628e-05, + 8.036331466074409175e-05, + 8.047309615254768893e-05, + 8.058273785048003729e-05, + 8.069223958770140959e-05, + 8.080160119760823134e-05, + 8.091082251385376203e-05, + 8.101990337031781872e-05, + 8.112884360112744369e-05, + 8.123764304065161891e-05, + 8.134630152350262133e-05, + 8.145481888452993781e-05, + 8.156319495884098685e-05, + 8.167142958177185880e-05, + 8.177952258890719731e-05, + 8.188747381607509011e-05, + 8.199528309934782789e-05, + 8.210295027503744557e-05, + 8.221047517971468224e-05, + 8.231785765018054799e-05, + 8.242509752348582599e-05, + 8.253219463692700671e-05, + 8.263914882804096181e-05, + 8.274595993462475791e-05, + 8.285262779470715564e-05, + 8.295915224656762383e-05, + 8.306553312873251769e-05, + 8.317177027997514659e-05, + 8.327786353930991935e-05, + 8.338381274601420448e-05, + 8.348961773959725423e-05, + 8.359527835982191572e-05, + 8.370079444669796314e-05, + 8.380616584048410350e-05, + 8.391139238168199993e-05, + 8.401647391106168274e-05, + 8.412141026960835569e-05, + 8.422620129859013157e-05, + 8.433084683950471650e-05, + 8.443534673409983364e-05, + 8.453970082438750755e-05, + 8.464390895261996773e-05, + 8.474797096128577271e-05, + 8.485188669315241910e-05, + 8.495565599121915172e-05, + 8.505927869873635729e-05, + 8.516275465922455148e-05, + 8.526608371642270317e-05, + 8.536926571435451982e-05, + 8.547230049727673105e-05, + 8.557518790970300882e-05, + 8.567792779639492795e-05, + 8.578052000238546614e-05, + 8.588296437292707074e-05, + 8.598526075355877082e-05, + 8.608740899005428457e-05, + 8.618940892844049139e-05, + 8.629126041501677133e-05, + 8.639296329630879101e-05, + 8.649451741911061127e-05, + 8.659592263047952371e-05, + 8.669717877771397358e-05, + 8.679828570836768155e-05, + 8.689924327026732971e-05, + 8.700005131146313557e-05, + 8.710070968029296899e-05, + 8.720121822533253317e-05, + 8.730157679541359272e-05, + 8.740178523964186306e-05, + 8.750184340735310019e-05, + 8.760175114815266055e-05, + 8.770150831191262785e-05, + 8.780111474874808261e-05, + 8.790057030903668559e-05, + 8.799987484341352778e-05, + 8.809902820277126594e-05, + 8.819803023825621951e-05, + 8.829688080128705950e-05, + 8.839557974352705292e-05, + 8.849412691690246714e-05, + 8.859252217359899200e-05, + 8.869076536605698287e-05, + 8.878885634698951263e-05, + 8.888679496935579516e-05, + 8.898458108637961677e-05, + 8.908221455154474190e-05, + 8.917969521859472339e-05, + 8.927702294152959565e-05, + 8.937419757462421123e-05, + 8.947121897239946882e-05, + 8.956808698964287242e-05, + 8.966480148140328651e-05, + 8.976136230298613849e-05, + 8.985776930997243280e-05, + 8.995402235819160530e-05, + 9.005012130374021213e-05, + 9.014606600297667138e-05, + 9.024185631252232016e-05, + 9.033749208925702357e-05, + 9.043297319033653553e-05, + 9.052829947316684382e-05, + 9.062347079542234401e-05, + 9.071848701504029648e-05, + 9.081334799022277801e-05, + 9.090805357943063732e-05, + 9.100260364140280744e-05, + 9.109699803512930907e-05, + 9.119123661986980398e-05, + 9.128531925514805207e-05, + 9.137924580074907881e-05, + 9.147301611673722729e-05, + 9.156663006343160099e-05, + 9.166008750140610447e-05, + 9.175338829152526266e-05, + 9.184653229490331936e-05, + 9.193951937292029700e-05, + 9.203234938723634873e-05, + 9.212502219976497863e-05, + 9.221753767269131056e-05, + 9.230989566846745315e-05, + 9.240209604981300124e-05, + 9.249413867971099728e-05, + 9.258602342142907321e-05, + 9.267775013847331770e-05, + 9.276931869464752779e-05, + 9.286072895400736065e-05, + 9.295198078087650183e-05, + 9.304307403986054295e-05, + 9.313400859582554169e-05, + 9.322478431389430832e-05, + 9.331540105948355325e-05, + 9.340585869826328359e-05, + 9.349615709617373031e-05, + 9.358629611944116401e-05, + 9.367627563453288699e-05, + 9.376609550821652555e-05, + 9.385575560751209469e-05, + 9.394525579971209654e-05, + 9.403459595239098000e-05, + 9.412377593338727851e-05, + 9.421279561079729458e-05, + 9.430165485301471382e-05, + 9.439035352868805002e-05, + 9.447889150673732827e-05, + 9.456726865637168976e-05, + 9.465548484704735177e-05, + 9.474353994850598848e-05, + 9.483143383077006887e-05, + 9.491916636412202650e-05, + 9.500673741911789334e-05, + 9.509414686660331889e-05, + 9.518139457766846732e-05, + 9.526848042370603586e-05, + 9.535540427636569124e-05, + 9.544216600757174211e-05, + 9.552876548953841281e-05, + 9.561520259473063588e-05, + 9.570147719589916664e-05, + 9.578758916607830640e-05, + 9.587353837856473339e-05, + 9.595932470693409105e-05, + 9.604494802503792518e-05, + 9.613040820699926580e-05, + 9.621570512722796861e-05, + 9.630083866039815005e-05, + 9.638580868146454518e-05, + 9.647061506565699179e-05, + 9.655525768848250399e-05, + 9.663973642572032548e-05, + 9.672405115343908708e-05, + 9.680820174797078587e-05, + 9.689218808593017885e-05, + 9.697601004420846747e-05, + 9.705966749997416501e-05, + 9.714316033067031827e-05, + 9.722648841402846669e-05, + 9.730965162804689058e-05, + 9.739264985100648108e-05, + 9.747548296146514297e-05, + 9.755815083825683249e-05, + 9.764065336050506915e-05, + 9.772299040760033014e-05, + 9.780516185921692325e-05, + 9.788716759530690173e-05, + 9.796900749610334405e-05, + 9.805068144211395709e-05, + 9.813218931413843693e-05, + 9.821353099324354574e-05, + 9.829470636078146192e-05, + 9.837571529838358658e-05, + 9.845655768796211565e-05, + 9.853723341170616385e-05, + 9.861774235209667244e-05, + 9.869808439188402051e-05, + 9.877825941410350191e-05, + 9.885826730207212685e-05, + 9.893810793938409543e-05, + 9.901778120992631518e-05, + 9.909728699786002392e-05, + 9.917662518761771327e-05, + 9.925579566393547860e-05, + 9.933479831181774174e-05, + 9.941363301654986841e-05, + 9.949229966371247970e-05, + 9.957079813915671867e-05, + 9.964912832902054053e-05, + 9.972729011972583950e-05, + 9.980528339797249920e-05, + 9.988310805075597035e-05, + 9.996076396534752469e-05, + 1.000382510292911786e-04, + 1.001155691304363680e-04, + 1.001927181569024956e-04, + 1.002696979970928485e-04, + 1.003465085397058472e-04, + 1.004231496737176580e-04, + 1.004996212883775981e-04, + 1.005759232732418275e-04, + 1.006520555181367166e-04, + 1.007280179131740249e-04, + 1.008038103487649684e-04, + 1.008794327155816629e-04, + 1.009548849046058996e-04, + 1.010301668070916718e-04, + 1.011052783145783624e-04, + 1.011802193189022898e-04, + 1.012549897121790089e-04, + 1.013295893867994076e-04, + 1.014040182354625583e-04, + 1.014782761511396139e-04, + 1.015523630270887971e-04, + 1.016262787568691830e-04, + 1.017000232343024269e-04, + 1.017735963535219601e-04, + 1.018469980089347038e-04, + 1.019202280952381047e-04, + 1.019932865074184953e-04, + 1.020661731407485458e-04, + 1.021388878907864375e-04, + 1.022114306533886293e-04, + 1.022838013246895694e-04, + 1.023559998011115891e-04, + 1.024280259793798912e-04, + 1.024998797564878562e-04, + 1.025715610297277247e-04, + 1.026430696966875621e-04, + 1.027144056552344530e-04, + 1.027855688035280134e-04, + 1.028565590400175989e-04, + 1.029273762634382386e-04, + 1.029980203728254754e-04, + 1.030684912674940072e-04, + 1.031387888470522288e-04, + 1.032089130113979762e-04, + 1.032788636607206816e-04, + 1.033486406954958167e-04, + 1.034182440164990556e-04, + 1.034876735247878833e-04, + 1.035569291217138069e-04, + 1.036260107089180868e-04, + 1.036949181883339317e-04, + 1.037636514621829211e-04, + 1.038322104329869583e-04, + 1.039005950035500427e-04, + 1.039688050769710631e-04, + 1.040368405566404364e-04, + 1.041047013462379807e-04, + 1.041723873497438918e-04, + 1.042398984714224268e-04, + 1.043072346158317970e-04, + 1.043743956878240053e-04, + 1.044413815925428137e-04, + 1.045081922354216961e-04, + 1.045748275221962940e-04, + 1.046412873588864316e-04, + 1.047075716518070123e-04, + 1.047736803075670294e-04, + 1.048396132330684275e-04, + 1.049053703355035415e-04, + 1.049709515223674422e-04, + 1.050363567014402105e-04, + 1.051015857807982530e-04, + 1.051666386688120662e-04, + 1.052315152741434718e-04, + 1.052962155057576241e-04, + 1.053607392729072621e-04, + 1.054250864851309205e-04, + 1.054892570522803191e-04, + 1.055532508844892468e-04, + 1.056170678921866527e-04, + 1.056807079861048324e-04, + 1.057441710772631237e-04, + 1.058074570769786137e-04, + 1.058705658968626961e-04, + 1.059334974488210983e-04, + 1.059962516450626364e-04, + 1.060588283980862999e-04, + 1.061212276206783509e-04, + 1.061834492259374645e-04, + 1.062454931272480303e-04, + 1.063073592382900591e-04, + 1.063690474730476395e-04, + 1.064305577457971477e-04, + 1.064918899711011488e-04, + 1.065530440638372224e-04, + 1.066140199391676870e-04, + 1.066748175125513767e-04, + 1.067354366997562860e-04, + 1.067958774168269485e-04, + 1.068561395801247019e-04, + 1.069162231062980347e-04, + 1.069761279122913414e-04, + 1.070358539153559675e-04, + 1.070954010330351665e-04, + 1.071547691831604000e-04, + 1.072139582838792422e-04, + 1.072729682536251443e-04, + 1.073317990111301334e-04, + 1.073904504754353287e-04, + 1.074489225658600291e-04, + 1.075072152020422478e-04, + 1.075653283039068782e-04, + 1.076232617916801946e-04, + 1.076810155858875080e-04, + 1.077385896073525967e-04, + 1.077959837771951717e-04, + 1.078531980168429254e-04, + 1.079102322480136558e-04, + 1.079670863927248610e-04, + 1.080237603733039993e-04, + 1.080802541123613160e-04, + 1.081365675328155524e-04, + 1.081927005578898804e-04, + 1.082486531110992577e-04, + 1.083044251162608906e-04, + 1.083600164974922415e-04, + 1.084154271792078577e-04, + 1.084706570861308371e-04, + 1.085257061432753857e-04, + 1.085805742759576463e-04, + 1.086352614098035183e-04, + 1.086897674707238971e-04, + 1.087440923849384997e-04, + 1.087982360789722323e-04, + 1.088521984796440232e-04, + 1.089059795140748054e-04, + 1.089595791096875703e-04, + 1.090129971942068533e-04, + 1.090662336956546000e-04, + 1.091192885423619837e-04, + 1.091721616629540240e-04, + 1.092248529863600623e-04, + 1.092773624418102519e-04, + 1.093296899588340807e-04, + 1.093818354672710915e-04, + 1.094337988972540629e-04, + 1.094855801792201364e-04, + 1.095371792439094201e-04, + 1.095885960223631458e-04, + 1.096398304459225031e-04, + 1.096908824462384114e-04, + 1.097417519552563813e-04, + 1.097924389052276953e-04, + 1.098429432287052748e-04, + 1.098932648585421347e-04, + 1.099434037279015206e-04, + 1.099933597702427063e-04, + 1.100431329193289485e-04, + 1.100927231092275685e-04, + 1.101421302743081632e-04, + 1.101913543492413718e-04, + 1.102403952690081591e-04, + 1.102892529688875509e-04, + 1.103379273844556170e-04, + 1.103864184516051229e-04, + 1.104347261065229916e-04, + 1.104828502857005493e-04, + 1.105307909259389468e-04, + 1.105785479643362298e-04, + 1.106261213382968669e-04, + 1.106735109855285507e-04, + 1.107207168440413038e-04, + 1.107677388521554474e-04, + 1.108145769484913826e-04, + 1.108612310719665279e-04, + 1.109077011618163659e-04, + 1.109539871575718651e-04, + 1.110000889990672723e-04, + 1.110460066264491117e-04, + 1.110917399801616430e-04, + 1.111372890009553182e-04, + 1.111826536298864425e-04, + 1.112278338083145862e-04, + 1.112728294779031672e-04, + 1.113176405806287346e-04, + 1.113622670587572651e-04, + 1.114067088548754834e-04, + 1.114509659118659925e-04, + 1.114950381729178048e-04, + 1.115389255815303263e-04, + 1.115826280815039915e-04, + 1.116261456169388136e-04, + 1.116694781322531682e-04, + 1.117126255721616486e-04, + 1.117555878816848776e-04, + 1.117983650061575850e-04, + 1.118409568912055681e-04, + 1.118833634827744639e-04, + 1.119255847271081599e-04, + 1.119676205707557601e-04, + 1.120094709605810580e-04, + 1.120511358437412596e-04, + 1.120926151677055228e-04, + 1.121339088802540766e-04, + 1.121750169294663356e-04, + 1.122159392637284083e-04, + 1.122566758317406318e-04, + 1.122972265824976500e-04, + 1.123375914653067638e-04, + 1.123777704297853014e-04, + 1.124177634258513895e-04, + 1.124575704037323015e-04, + 1.124971913139606356e-04, + 1.125366261073747486e-04, + 1.125758747351257219e-04, + 1.126149371486648119e-04, + 1.126538132997509037e-04, + 1.126925031404567453e-04, + 1.127310066231513024e-04, + 1.127693237005158181e-04, + 1.128074543255429724e-04, + 1.128453984515262031e-04, + 1.128831560320681489e-04, + 1.129207270210787521e-04, + 1.129581113727735507e-04, + 1.129953090416812954e-04, + 1.130323199826315487e-04, + 1.130691441507640635e-04, + 1.131057815015253267e-04, + 1.131422319906701861e-04, + 1.131784955742585569e-04, + 1.132145722086640003e-04, + 1.132504618505611471e-04, + 1.132861644569354144e-04, + 1.133216799850797805e-04, + 1.133570083925941748e-04, + 1.133921496373855594e-04, + 1.134271036776731870e-04, + 1.134618704719799956e-04, + 1.134964499791372836e-04, + 1.135308421582856725e-04, + 1.135650469688717997e-04, + 1.135990643706547563e-04, + 1.136328943236975214e-04, + 1.136665367883721262e-04, + 1.136999917253599926e-04, + 1.137332590956493443e-04, + 1.137663388605358579e-04, + 1.137992309816288831e-04, + 1.138319354208407094e-04, + 1.138644521403929760e-04, + 1.138967811028171061e-04, + 1.139289222709515687e-04, + 1.139608756079432342e-04, + 1.139926410772508438e-04, + 1.140242186426381924e-04, + 1.140556082681785336e-04, + 1.140868099182535761e-04, + 1.141178235575528339e-04, + 1.141486491510789386e-04, + 1.141792866641397922e-04, + 1.142097360623474292e-04, + 1.142399973116325988e-04, + 1.142700703782283935e-04, + 1.142999552286763751e-04, + 1.143296518298321578e-04, + 1.143591601488551086e-04, + 1.143884801532154221e-04, + 1.144176118106923442e-04, + 1.144465550893736987e-04, + 1.144753099576555072e-04, + 1.145038763842480203e-04, + 1.145322543381607690e-04, + 1.145604437887224193e-04, + 1.145884447055652678e-04, + 1.146162570586298229e-04, + 1.146438808181725024e-04, + 1.146713159547503190e-04, + 1.146985624392332946e-04, + 1.147256202428034440e-04, + 1.147524893369480931e-04, + 1.147791696934640805e-04, + 1.148056612844624332e-04, + 1.148319640823546918e-04, + 1.148580780598702306e-04, + 1.148840031900435864e-04, + 1.149097394462179547e-04, + 1.149352868020513157e-04, + 1.149606452315029762e-04, + 1.149858147088462417e-04, + 1.150107952086660309e-04, + 1.150355867058523978e-04, + 1.150601891756059659e-04, + 1.150846025934410455e-04, + 1.151088269351738431e-04, + 1.151328621769347400e-04, + 1.151567082951653103e-04, + 1.151803652666134290e-04, + 1.152038330683370393e-04, + 1.152271116777046542e-04, + 1.152502010723926187e-04, + 1.152731012303906529e-04, + 1.152958121299939238e-04, + 1.153183337498082901e-04, + 1.153406660687527550e-04, + 1.153628090660498986e-04, + 1.153847627212350931e-04, + 1.154065270141554054e-04, + 1.154281019249644064e-04, + 1.154494874341263177e-04, + 1.154706835224154026e-04, + 1.154916901709140541e-04, + 1.155125073610178374e-04, + 1.155331350744284285e-04, + 1.155535732931590353e-04, + 1.155738219995314838e-04, + 1.155938811761783868e-04, + 1.156137508060405141e-04, + 1.156334308723712520e-04, + 1.156529213587305583e-04, + 1.156722222489898550e-04, + 1.156913335273292636e-04, + 1.157102551782397600e-04, + 1.157289871865197184e-04, + 1.157475295372812675e-04, + 1.157658822159430266e-04, + 1.157840452082339948e-04, + 1.158020185001929685e-04, + 1.158198020781674029e-04, + 1.158373959288178708e-04, + 1.158548000391110288e-04, + 1.158720143963248487e-04, + 1.158890389880465164e-04, + 1.159058738021727852e-04, + 1.159225188269098663e-04, + 1.159389740507755167e-04, + 1.159552394625952033e-04, + 1.159713150515044480e-04, + 1.159872008069485290e-04, + 1.160028967186823049e-04, + 1.160184027767696186e-04, + 1.160337189715862784e-04, + 1.160488452938152743e-04, + 1.160637817344497728e-04, + 1.160785282847933070e-04, + 1.160930849364568492e-04, + 1.161074516813650852e-04, + 1.161216285117491103e-04, + 1.161356154201473773e-04, + 1.161494123994136115e-04, + 1.161630194427071071e-04, + 1.161764365434967929e-04, + 1.161896636955635361e-04, + 1.162027008929953720e-04, + 1.162155481301901060e-04, + 1.162282054018557202e-04, + 1.162406727030080965e-04, + 1.162529500289754213e-04, + 1.162650373753930627e-04, + 1.162769347382045865e-04, + 1.162886421136665680e-04, + 1.163001594983417746e-04, + 1.163114868891027437e-04, + 1.163226242831342226e-04, + 1.163335716779257680e-04, + 1.163443290712779676e-04, + 1.163548964613029136e-04, + 1.163652738464187415e-04, + 1.163754612253541565e-04, + 1.163854585971477965e-04, + 1.163952659611450880e-04, + 1.164048833170025829e-04, + 1.164143106646853292e-04, + 1.164235480044671693e-04, + 1.164325953369324610e-04, + 1.164414526629716732e-04, + 1.164501199837860340e-04, + 1.164585973008868265e-04, + 1.164668846160919053e-04, + 1.164749819315295863e-04, + 1.164828892496373323e-04, + 1.164906065731587033e-04, + 1.164981339051501195e-04, + 1.165054712489739492e-04, + 1.165126186083018431e-04, + 1.165195759871150459e-04, + 1.165263433897020378e-04, + 1.165329208206607170e-04, + 1.165393082848988060e-04, + 1.165455057876307074e-04, + 1.165515133343798077e-04, + 1.165573309309794942e-04, + 1.165629585835693057e-04, + 1.165683962985981985e-04, + 1.165736440828249806e-04, + 1.165787019433144625e-04, + 1.165835698874417126e-04, + 1.165882479228884795e-04, + 1.165927360576460243e-04, + 1.165970343000137115e-04, + 1.166011426585981546e-04, + 1.166050611423153038e-04, + 1.166087897603882367e-04, + 1.166123285223487029e-04, + 1.166156774380356070e-04, + 1.166188365175979756e-04, + 1.166218057714898623e-04, + 1.166245852104757006e-04, + 1.166271748456260891e-04, + 1.166295746883201499e-04, + 1.166317847502448233e-04, + 1.166338050433949632e-04, + 1.166356355800726187e-04, + 1.166372763728877252e-04, + 1.166387274347573046e-04, + 1.166399887789066177e-04, + 1.166410604188684456e-04, + 1.166419423684824123e-04, + 1.166426346418961770e-04, + 1.166431372535642146e-04, + 1.166434502182487238e-04, + 1.166435735510185562e-04, + 1.166435072672507208e-04, + 1.166432513826287307e-04, + 1.166428059131427111e-04, + 1.166421708750913649e-04, + 1.166413462850786250e-04, + 1.166403321600170830e-04, + 1.166391285171248452e-04, + 1.166377353739274164e-04, + 1.166361527482570761e-04, + 1.166343806582530553e-04, + 1.166324191223603435e-04, + 1.166302681593319926e-04, + 1.166279277882268403e-04, + 1.166253980284099841e-04, + 1.166226788995530393e-04, + 1.166197704216349109e-04, + 1.166166726149396528e-04, + 1.166133855000581210e-04, + 1.166099090978877430e-04, + 1.166062434296316239e-04, + 1.166023885167994403e-04, + 1.165983443812059362e-04, + 1.165941110449732269e-04, + 1.165896885305277498e-04, + 1.165850768606035032e-04, + 1.165802760582389160e-04, + 1.165752861467792597e-04, + 1.165701071498745616e-04, + 1.165647390914809870e-04, + 1.165591819958598498e-04, + 1.165534358875784801e-04, + 1.165475007915095057e-04, + 1.165413767328297680e-04, + 1.165350637370236289e-04, + 1.165285618298785930e-04, + 1.165218710374883710e-04, + 1.165149913862516051e-04, + 1.165079229028716934e-04, + 1.165006656143572641e-04, + 1.164932195480212942e-04, + 1.164855847314826009e-04, + 1.164777611926641742e-04, + 1.164697489597928652e-04, + 1.164615480614017852e-04, + 1.164531585263272424e-04, + 1.164445803837100706e-04, + 1.164358136629967127e-04, + 1.164268583939361045e-04, + 1.164177146065833464e-04, + 1.164083823312958555e-04, + 1.163988615987363734e-04, + 1.163891524398715302e-04, + 1.163792548859715327e-04, + 1.163691689686101506e-04, + 1.163588947196658144e-04, + 1.163484321713205042e-04, + 1.163377813560584486e-04, + 1.163269423066694448e-04, + 1.163159150562459183e-04, + 1.163046996381828137e-04, + 1.162932960861797502e-04, + 1.162817044342390427e-04, + 1.162699247166660134e-04, + 1.162579569680694664e-04, + 1.162458012233604675e-04, + 1.162334575177539306e-04, + 1.162209258867667196e-04, + 1.162082063662188549e-04, + 1.161952989922332966e-04, + 1.161822038012356193e-04, + 1.161689208299531036e-04, + 1.161554501154156449e-04, + 1.161417916949566471e-04, + 1.161279456062103670e-04, + 1.161139118871132688e-04, + 1.160996905759058138e-04, + 1.160852817111270388e-04, + 1.160706853316209532e-04, + 1.160559014765323376e-04, + 1.160409301853068117e-04, + 1.160257714976934768e-04, + 1.160104254537410129e-04, + 1.159948920938007821e-04, + 1.159791714585249313e-04, + 1.159632635888669207e-04, + 1.159471685260823101e-04, + 1.159308863117272811e-04, + 1.159144169876573502e-04, + 1.158977605960312038e-04, + 1.158809171793074596e-04, + 1.158638867802450046e-04, + 1.158466694419045003e-04, + 1.158292652076457530e-04, + 1.158116741211297603e-04, + 1.157938962263183454e-04, + 1.157759315674724356e-04, + 1.157577801891536889e-04, + 1.157394421362244804e-04, + 1.157209174538449746e-04, + 1.157022061874771375e-04, + 1.156833083828837333e-04, + 1.156642240861237980e-04, + 1.156449533435583858e-04, + 1.156254962018480616e-04, + 1.156058527079497841e-04, + 1.155860229091249696e-04, + 1.155660068529287718e-04, + 1.155458045872190671e-04, + 1.155254161601521859e-04, + 1.155048416201806218e-04, + 1.154840810160581683e-04, + 1.154631343968383735e-04, + 1.154420018118696074e-04, + 1.154206833108009026e-04, + 1.153991789435809790e-04, + 1.153774887604519414e-04, + 1.153556128119610433e-04, + 1.153335511489467821e-04, + 1.153113038225496054e-04, + 1.152888708842062871e-04, + 1.152662523856526778e-04, + 1.152434483789184066e-04, + 1.152204589163365977e-04, + 1.151972840505322292e-04, + 1.151739238344304673e-04, + 1.151503783212533060e-04, + 1.151266475645171950e-04, + 1.151027316180393414e-04, + 1.150786305359328314e-04, + 1.150543443726045428e-04, + 1.150298731827604983e-04, + 1.150052170214043205e-04, + 1.149803759438307402e-04, + 1.149553500056384176e-04, + 1.149301392627151961e-04, + 1.149047437712480239e-04, + 1.148791635877210695e-04, + 1.148533987689097721e-04, + 1.148274493718902883e-04, + 1.148013154540328371e-04, + 1.147749970729997488e-04, + 1.147484942867522820e-04, + 1.147218071535460423e-04, + 1.146949357319308472e-04, + 1.146678800807527998e-04, + 1.146406402591527296e-04, + 1.146132163265634149e-04, + 1.145856083427153967e-04, + 1.145578163676322483e-04, + 1.145298404616329480e-04, + 1.145016806853298315e-04, + 1.144733370996282813e-04, + 1.144448097657298566e-04, + 1.144160987451282413e-04, + 1.143872040996120765e-04, + 1.143581258912623993e-04, + 1.143288641824562337e-04, + 1.142994190358594760e-04, + 1.142697905144344161e-04, + 1.142399786814368647e-04, + 1.142099836004135510e-04, + 1.141798053352067441e-04, + 1.141494439499471652e-04, + 1.141188995090618613e-04, + 1.140881720772695979e-04, + 1.140572617195800180e-04, + 1.140261685012971122e-04, + 1.139948924880161555e-04, + 1.139634337456219319e-04, + 1.139317923402940200e-04, + 1.138999683385027138e-04, + 1.138679618070100659e-04, + 1.138357728128689528e-04, + 1.138034014234255817e-04, + 1.137708477063127687e-04, + 1.137381117294581381e-04, + 1.137051935610796364e-04, + 1.136720932696854374e-04, + 1.136388109240757854e-04, + 1.136053465933368020e-04, + 1.135717003468499585e-04, + 1.135378722542847315e-04, + 1.135038623856009736e-04, + 1.134696708110487516e-04, + 1.134352976011688608e-04, + 1.134007428267877569e-04, + 1.133660065590251043e-04, + 1.133310888692893177e-04, + 1.132959898292776432e-04, + 1.132607095109766329e-04, + 1.132252479866627541e-04, + 1.131896053288955055e-04, + 1.131537816105336120e-04, + 1.131177769047142620e-04, + 1.130815912848681242e-04, + 1.130452248247144410e-04, + 1.130086775982567057e-04, + 1.129719496797881238e-04, + 1.129350411438950422e-04, + 1.128979520654426507e-04, + 1.128606825195887928e-04, + 1.128232325817794384e-04, + 1.127856023277408237e-04, + 1.127477918334982487e-04, + 1.127098011753519669e-04, + 1.126716304298959150e-04, + 1.126332796740104627e-04, + 1.125947489848573162e-04, + 1.125560384398882196e-04, + 1.125171481168454966e-04, + 1.124780780937480374e-04, + 1.124388284489076566e-04, + 1.123993992609208123e-04, + 1.123597906086636734e-04, + 1.123200025713071219e-04, + 1.122800352283031601e-04, + 1.122398886593851540e-04, + 1.121995629445759790e-04, + 1.121590581641843467e-04, + 1.121183743987961721e-04, + 1.120775117292935335e-04, + 1.120364702368316742e-04, + 1.119952500028565523e-04, + 1.119538511090973742e-04, + 1.119122736375617149e-04, + 1.118705176705503857e-04, + 1.118285832906424580e-04, + 1.117864705806976492e-04, + 1.117441796238635189e-04, + 1.117017105035688685e-04, + 1.116590633035259643e-04, + 1.116162381077317296e-04, + 1.115732350004588683e-04, + 1.115300540662703658e-04, + 1.114866953900075358e-04, + 1.114431590567946552e-04, + 1.113994451520383813e-04, + 1.113555537614282126e-04, + 1.113114849709303633e-04, + 1.112672388667973445e-04, + 1.112228155355623267e-04, + 1.111782150640384080e-04, + 1.111334375393203483e-04, + 1.110884830487854103e-04, + 1.110433516800858101e-04, + 1.109980435211602645e-04, + 1.109525586602250050e-04, + 1.109068971857782781e-04, + 1.108610591865977966e-04, + 1.108150447517370675e-04, + 1.107688539705349053e-04, + 1.107224869326066234e-04, + 1.106759437278479776e-04, + 1.106292244464331196e-04, + 1.105823291788175111e-04, + 1.105352580157295615e-04, + 1.104880110481824596e-04, + 1.104405883674653235e-04, + 1.103929900651453964e-04, + 1.103452162330691578e-04, + 1.102972669633616593e-04, + 1.102491423484206157e-04, + 1.102008424809274777e-04, + 1.101523674538383785e-04, + 1.101037173603873460e-04, + 1.100548922940871970e-04, + 1.100058923487217175e-04, + 1.099567176183551903e-04, + 1.099073681973353087e-04, + 1.098578441802729286e-04, + 1.098081456620639160e-04, + 1.097582727378801202e-04, + 1.097082255031628693e-04, + 1.096580040536354513e-04, + 1.096076084852945769e-04, + 1.095570388944124929e-04, + 1.095062953775359120e-04, + 1.094553780314895498e-04, + 1.094042869533633314e-04, + 1.093530222405381412e-04, + 1.093015839906528086e-04, + 1.092499723016293297e-04, + 1.091981872716648303e-04, + 1.091462289992223506e-04, + 1.090940975830441667e-04, + 1.090417931221517370e-04, + 1.089893157158273247e-04, + 1.089366654636345842e-04, + 1.088838424654104564e-04, + 1.088308468212555061e-04, + 1.087776786315586009e-04, + 1.087243379969657001e-04, + 1.086708250184036795e-04, + 1.086171397970711703e-04, + 1.085632824344320537e-04, + 1.085092530322269536e-04, + 1.084550516924734939e-04, + 1.084006785174479080e-04, + 1.083461336097065055e-04, + 1.082914170720760912e-04, + 1.082365290076460094e-04, + 1.081814695197884997e-04, + 1.081262387121399135e-04, + 1.080708366886023265e-04, + 1.080152635533544080e-04, + 1.079595194108446987e-04, + 1.079036043657817312e-04, + 1.078475185231600773e-04, + 1.077912619882269419e-04, + 1.077348348665077901e-04, + 1.076782372637972947e-04, + 1.076214692861485206e-04, + 1.075645310398979705e-04, + 1.075074226316425995e-04, + 1.074501441682430136e-04, + 1.073926957568343659e-04, + 1.073350775048174932e-04, + 1.072772895198602442e-04, + 1.072193319099009083e-04, + 1.071612047831357878e-04, + 1.071029082480374670e-04, + 1.070444424133409748e-04, + 1.069858073880490160e-04, + 1.069270032814294237e-04, + 1.068680302030194820e-04, + 1.068088882626143664e-04, + 1.067495775702823898e-04, + 1.066900982363548113e-04, + 1.066304503714279503e-04, + 1.065706340863636475e-04, + 1.065106494922905790e-04, + 1.064504967005947970e-04, + 1.063901758229340551e-04, + 1.063296869712281446e-04, + 1.062690302576603995e-04, + 1.062082057946810572e-04, + 1.061472136949957523e-04, + 1.060860540715812515e-04, + 1.060247270376758988e-04, + 1.059632327067792901e-04, + 1.059015711926555262e-04, + 1.058397426093328058e-04, + 1.057777470710939932e-04, + 1.057155846924921359e-04, + 1.056532555883400292e-04, + 1.055907598737114628e-04, + 1.055280976639420343e-04, + 1.054652690746315071e-04, + 1.054022742216324804e-04, + 1.053391132210666255e-04, + 1.052757861893132741e-04, + 1.052122932430132272e-04, + 1.051486344990688898e-04, + 1.050848100746360316e-04, + 1.050208200871341138e-04, + 1.049566646542517237e-04, + 1.048923438939203506e-04, + 1.048278579243399998e-04, + 1.047632068639725117e-04, + 1.046983908315274667e-04, + 1.046334099459836798e-04, + 1.045682643265733033e-04, + 1.045029540927881832e-04, + 1.044374793643802654e-04, + 1.043718402613510521e-04, + 1.043060369039648292e-04, + 1.042400694127521352e-04, + 1.041739379084831310e-04, + 1.041076425121957892e-04, + 1.040411833451859188e-04, + 1.039745605289961748e-04, + 1.039077741854309793e-04, + 1.038408244365599773e-04, + 1.037737114046913245e-04, + 1.037064352123996197e-04, + 1.036389959825151027e-04, + 1.035713938381114439e-04, + 1.035036289025379044e-04, + 1.034357012993772145e-04, + 1.033676111524785339e-04, + 1.032993585859452268e-04, + 1.032309437241266359e-04, + 1.031623666916302523e-04, + 1.030936276133267982e-04, + 1.030247266143225111e-04, + 1.029556638199883098e-04, + 1.028864393559481385e-04, + 1.028170533480668106e-04, + 1.027475059224822228e-04, + 1.026777972055631122e-04, + 1.026079273239428695e-04, + 1.025378964045033168e-04, + 1.024677045743776485e-04, + 1.023973519609503227e-04, + 1.023268386918600433e-04, + 1.022561648949871823e-04, + 1.021853306984716160e-04, + 1.021143362307039016e-04, + 1.020431816203119687e-04, + 1.019718669961926699e-04, + 1.019003924874824527e-04, + 1.018287582235622796e-04, + 1.017569643340703126e-04, + 1.016850109488912210e-04, + 1.016128981981584032e-04, + 1.015406262122567658e-04, + 1.014681951218100649e-04, + 1.013956050576998394e-04, + 1.013228561510545007e-04, + 1.012499485332383695e-04, + 1.011768823358820597e-04, + 1.011036576908532056e-04, + 1.010302747302601207e-04, + 1.009567335864677086e-04, + 1.008830343920832598e-04, + 1.008091772799614254e-04, + 1.007351623832013714e-04, + 1.006609898351523214e-04, + 1.005866597693987437e-04, + 1.005121723197802060e-04, + 1.004375276203777005e-04, + 1.003627258055172627e-04, + 1.002877670097725328e-04, + 1.002126513679518809e-04, + 1.001373790151167161e-04, + 1.000619500865702790e-04, + 9.998636471785800730e-05, + 9.991062304476924349e-05, + 9.983472520333998615e-05, + 9.975867132983868679e-05, + 9.968246156078609073e-05, + 9.960609603294257909e-05, + 9.952957488331029654e-05, + 9.945289824913647163e-05, + 9.937606626790037928e-05, + 9.929907907733189420e-05, + 9.922193681539923939e-05, + 9.914463962031153403e-05, + 9.906718763051825135e-05, + 9.898958098471233574e-05, + 9.891181982181784284e-05, + 9.883390428100449494e-05, + 9.875583450169170610e-05, + 9.867761062351884790e-05, + 9.859923278637738246e-05, + 9.852070113039730994e-05, + 9.844201579593797992e-05, + 9.836317692360702428e-05, + 9.828418465424645228e-05, + 9.820503912893656731e-05, + 9.812574048899866375e-05, + 9.804628887598097308e-05, + 9.796668443167641765e-05, + 9.788692729812393883e-05, + 9.780701761757981986e-05, + 9.772695553254979182e-05, + 9.764674118577567079e-05, + 9.756637472022503085e-05, + 9.748585627911158711e-05, + 9.740518600588068086e-05, + 9.732436404421329124e-05, + 9.724339053802473411e-05, + 9.716226563146852454e-05, + 9.708098946891939552e-05, + 9.699956219500965936e-05, + 9.691798395458143503e-05, + 9.683625489272447331e-05, + 9.675437515476185881e-05, + 9.667234488623920865e-05, + 9.659016423294245336e-05, + 9.650783334089997818e-05, + 9.642535235635173684e-05, + 9.634272142578419000e-05, + 9.625994069591499089e-05, + 9.617701031367951407e-05, + 9.609393042626960212e-05, + 9.601070118108231001e-05, + 9.592732272576105052e-05, + 9.584379520817512999e-05, + 9.576011877642480333e-05, + 9.567629357883994596e-05, + 9.559231976398386199e-05, + 9.550819748063863401e-05, + 9.542392687782606168e-05, + 9.533950810479791752e-05, + 9.525494131101895200e-05, + 9.517022664620470511e-05, + 9.508536426028828909e-05, + 9.500035430342305834e-05, + 9.491519692600090526e-05, + 9.482989227863751513e-05, + 9.474444051217641833e-05, + 9.465884177769045399e-05, + 9.457309622646890867e-05, + 9.448720401003836010e-05, + 9.440116528015119824e-05, + 9.431498018877106982e-05, + 9.422864888810902298e-05, + 9.414217153059054749e-05, + 9.405554826885907129e-05, + 9.396877925579321289e-05, + 9.388186464449278161e-05, + 9.379480458828139318e-05, + 9.370759924070735068e-05, + 9.362024875554567744e-05, + 9.353275328678373776e-05, + 9.344511298864373414e-05, + 9.335732801556641714e-05, + 9.326939852221502914e-05, + 9.318132466347937013e-05, + 9.309310659445987348e-05, + 9.300474447048994050e-05, + 9.291623844712111396e-05, + 9.282758868012532785e-05, + 9.273879532549638457e-05, + 9.264985853945205559e-05, + 9.256077847841936339e-05, + 9.247155529905702446e-05, + 9.238218915823932179e-05, + 9.229268021306064496e-05, + 9.220302862083817354e-05, + 9.211323453909726748e-05, + 9.202329812559294784e-05, + 9.193321953829460956e-05, + 9.184299893539136117e-05, + 9.175263647528862307e-05, + 9.166213231661430748e-05, + 9.157148661820170164e-05, + 9.148069953910922738e-05, + 9.138977123862419513e-05, + 9.129870187622603596e-05, + 9.120749161162694562e-05, + 9.111614060475487604e-05, + 9.102464901574224617e-05, + 9.093301700494784280e-05, + 9.084124473294231939e-05, + 9.074933236051116404e-05, + 9.065728004865831807e-05, + 9.056508795859036015e-05, + 9.047275625173577804e-05, + 9.038028508974866844e-05, + 9.028767463447279565e-05, + 9.019492504798123271e-05, + 9.010203649256009843e-05, + 9.000900913069598058e-05, + 8.991584312509977479e-05, + 8.982253863869058420e-05, + 8.972909583459941923e-05, + 8.963551487616883172e-05, + 8.954179592695654698e-05, + 8.944793915071502658e-05, + 8.935394471143609681e-05, + 8.925981277329305232e-05, + 8.916554350068608417e-05, + 8.907113705822535270e-05, + 8.897659361071739439e-05, + 8.888191332318717179e-05, + 8.878709636088002511e-05, + 8.869214288922650337e-05, + 8.859705307388104337e-05, + 8.850182708070657395e-05, + 8.840646507575730434e-05, + 8.831096722532384051e-05, + 8.821533369587539718e-05, + 8.811956465410395194e-05, + 8.802366026690918843e-05, + 8.792762070137994290e-05, + 8.783144612483639326e-05, + 8.773513670479140723e-05, + 8.763869260895585495e-05, + 8.754211400525805688e-05, + 8.744540106183122056e-05, + 8.734855394699645934e-05, + 8.725157282930430373e-05, + 8.715445787749709317e-05, + 8.705720926051205245e-05, + 8.695982714750326032e-05, + 8.686231170782304192e-05, + 8.676466311102675280e-05, + 8.666688152687687175e-05, + 8.656896712532559943e-05, + 8.647092007653936127e-05, + 8.637274055088697616e-05, + 8.627442871892096747e-05, + 8.617598475142091764e-05, + 8.607740881935482986e-05, + 8.597870109388190641e-05, + 8.587986174637493738e-05, + 8.578089094840264173e-05, + 8.568178887173301481e-05, + 8.558255568833744828e-05, + 8.548319157037464328e-05, + 8.538369669021336511e-05, + 8.528407122041800983e-05, + 8.518431533375032537e-05, + 8.508442920317022473e-05, + 8.498441300183956710e-05, + 8.488426690310453960e-05, + 8.478399108052068881e-05, + 8.468358570783743018e-05, + 8.458305095899877992e-05, + 8.448238700814605191e-05, + 8.438159402962039206e-05, + 8.428067219794522775e-05, + 8.417962168785235650e-05, + 8.407844267426432762e-05, + 8.397713533229793879e-05, + 8.387569983726877619e-05, + 8.377413636467352838e-05, + 8.367244509021504498e-05, + 8.357062618978616851e-05, + 8.346867983947225511e-05, + 8.336660621555129654e-05, + 8.326440549449854161e-05, + 8.316207785296782077e-05, + 8.305962346781882737e-05, + 8.295704251609724961e-05, + 8.285433517504109965e-05, + 8.275150162207887039e-05, + 8.264854203483426533e-05, + 8.254545659110806529e-05, + 8.244224546890401375e-05, + 8.233890884641186262e-05, + 8.223544690201020472e-05, + 8.213185981427167796e-05, + 8.202814776194418151e-05, + 8.192431092397281739e-05, + 8.182034947950479645e-05, + 8.171626360784787276e-05, + 8.161205348851594790e-05, + 8.150771930120973149e-05, + 8.140326122580309376e-05, + 8.129867944237144459e-05, + 8.119397413117056446e-05, + 8.108914547264301474e-05, + 8.098419364741717553e-05, + 8.087911883631099968e-05, + 8.077392122030992215e-05, + 8.066860098061536455e-05, + 8.056315829858239346e-05, + 8.045759335576746604e-05, + 8.035190633391148935e-05, + 8.024609741492053506e-05, + 8.014016678091143023e-05, + 8.003411461417019165e-05, + 7.992794109715651175e-05, + 7.982164641252568658e-05, + 7.971523074311599841e-05, + 7.960869427192779064e-05, + 7.950203718217586186e-05, + 7.939525965722376319e-05, + 7.928836188063403750e-05, + 7.918134403614996417e-05, + 7.907420630767590794e-05, + 7.896694887932465782e-05, + 7.885957193537404552e-05, + 7.875207566027194633e-05, + 7.864446023865925058e-05, + 7.853672585535515925e-05, + 7.842887269533845430e-05, + 7.832090094379902541e-05, + 7.821281078607093405e-05, + 7.810460240768491596e-05, + 7.799627599434387818e-05, + 7.788783173192673443e-05, + 7.777926980649001783e-05, + 7.767059040426996805e-05, + 7.756179371166468256e-05, + 7.745287991526187223e-05, + 7.734384920182431952e-05, + 7.723470175827085063e-05, + 7.712543777172301050e-05, + 7.701605742946227744e-05, + 7.690656091893395270e-05, + 7.679694842777216488e-05, + 7.668722014377847053e-05, + 7.657737625492774943e-05, + 7.646741694937213491e-05, + 7.635734241542148457e-05, + 7.624715284157213880e-05, + 7.613684841648705277e-05, + 7.602642932900068886e-05, + 7.591589576811778341e-05, + 7.580524792301929628e-05, + 7.569448598304133664e-05, + 7.558361013770530383e-05, + 7.547262057669637948e-05, + 7.536151748987019534e-05, + 7.525030106724982465e-05, + 7.513897149903369678e-05, + 7.502752897557242245e-05, + 7.491597368740066923e-05, + 7.480430582521474569e-05, + 7.469252557987880845e-05, + 7.458063314242894149e-05, + 7.446862870405351854e-05, + 7.435651245612154140e-05, + 7.424428459016350380e-05, + 7.413194529787563332e-05, + 7.401949477111947125e-05, + 7.390693320192661601e-05, + 7.379426078247876026e-05, + 7.368147770513685591e-05, + 7.356858416242086670e-05, + 7.345558034701464708e-05, + 7.334246645176554916e-05, + 7.322924266968889510e-05, + 7.311590919394814973e-05, + 7.300246621788427531e-05, + 7.288891393499507751e-05, + 7.277525253894021984e-05, + 7.266148222354589924e-05, + 7.254760318278474774e-05, + 7.243361561080021338e-05, + 7.231951970191076158e-05, + 7.220531565056574803e-05, + 7.209100365139376062e-05, + 7.197658389918318506e-05, + 7.186205658886698545e-05, + 7.174742191555121874e-05, + 7.163268007449600703e-05, + 7.151783126111969815e-05, + 7.140287567100335160e-05, + 7.128781349987053169e-05, + 7.117264494361183762e-05, + 7.105737019829036515e-05, + 7.094198946009527568e-05, + 7.082650292539194054e-05, + 7.071091079070186973e-05, + 7.059521325268182748e-05, + 7.047941050817427473e-05, + 7.036350275416093820e-05, + 7.024749018776859733e-05, + 7.013137300629292310e-05, + 7.001515140718367878e-05, + 6.989882558802397092e-05, + 6.978239574658551660e-05, + 6.966586208075743844e-05, + 6.954922478860189774e-05, + 6.943248406833281699e-05, + 6.931564011829599830e-05, + 6.919869313701918650e-05, + 6.908164332316639705e-05, + 6.896449087554173789e-05, + 6.884723599311549805e-05, + 6.872987887500835895e-05, + 6.861241972046998143e-05, + 6.849485872893581789e-05, + 6.837719609995407779e-05, + 6.825943203324293281e-05, + 6.814156672866368287e-05, + 6.802360038622572993e-05, + 6.790553320608634755e-05, + 6.778736538855568180e-05, + 6.766909713407527052e-05, + 6.755072864324924119e-05, + 6.743226011682780399e-05, + 6.731369175568709920e-05, + 6.719502376088000559e-05, + 6.707625633358922158e-05, + 6.695738967513207641e-05, + 6.683842398698657808e-05, + 6.671935947076979706e-05, + 6.660019632824302983e-05, + 6.648093476131623054e-05, + 6.636157497202784482e-05, + 6.624211716257438147e-05, + 6.612256153529023266e-05, + 6.600290829265202436e-05, + 6.588315763727845367e-05, + 6.576330977193522195e-05, + 6.564336489951378448e-05, + 6.552332322306238569e-05, + 6.540318494576476821e-05, + 6.528295027094465871e-05, + 6.516261940206606606e-05, + 6.504219254273820093e-05, + 6.492166989669318183e-05, + 6.480105166781869675e-05, + 6.468033806013481475e-05, + 6.455952927780101976e-05, + 6.443862552511946313e-05, + 6.431762700651368623e-05, + 6.419653392656117356e-05, + 6.407534648997055744e-05, + 6.395406490158698479e-05, + 6.383268936639215779e-05, + 6.371122008950880623e-05, + 6.358965727617926094e-05, + 6.346800113179712607e-05, + 6.334625186188533753e-05, + 6.322440967210134005e-05, + 6.310247476824249466e-05, + 6.298044735622340532e-05, + 6.285832764210851271e-05, + 6.273611583209007139e-05, + 6.261381213249304228e-05, + 6.249141674977476738e-05, + 6.236892989052993000e-05, + 6.224635176146907400e-05, + 6.212368256944477373e-05, + 6.200092252145690595e-05, + 6.187807182460357616e-05, + 6.175513068613484077e-05, + 6.163209931343081979e-05, + 6.150897791397989085e-05, + 6.138576669543697854e-05, + 6.126246586554873099e-05, + 6.113907563221160596e-05, + 6.101559620345051882e-05, + 6.089202778740226784e-05, + 6.076837059234158891e-05, + 6.064462482668706445e-05, + 6.052079069895135175e-05, + 6.039686841779552180e-05, + 6.027285819200658924e-05, + 6.014876023047590963e-05, + 6.002457474225837686e-05, + 5.990030193649559389e-05, + 5.977594202247577492e-05, + 5.965149520960635573e-05, + 5.952696170742420551e-05, + 5.940234172556791873e-05, + 5.927763547383764953e-05, + 5.915284316211864157e-05, + 5.902796500044052717e-05, + 5.890300119895478263e-05, + 5.877795196791359985e-05, + 5.865281751772319520e-05, + 5.852759805889486459e-05, + 5.840229380204962515e-05, + 5.827690495794567274e-05, + 5.815143173746123114e-05, + 5.802587435157245471e-05, + 5.790023301141359479e-05, + 5.777450792819915405e-05, + 5.764869931328495410e-05, + 5.752280737813920768e-05, + 5.739683233434840720e-05, + 5.727077439361708081e-05, + 5.714463376777216308e-05, + 5.701841066874113479e-05, + 5.689210530858479292e-05, + 5.676571789948045229e-05, + 5.663924865369849974e-05, + 5.651269778365915881e-05, + 5.638606550188038710e-05, + 5.625935202098446958e-05, + 5.613255755372446632e-05, + 5.600568231296249456e-05, + 5.587872651167412655e-05, + 5.575169036295402059e-05, + 5.562457407999319342e-05, + 5.549737787611234595e-05, + 5.537010196473861383e-05, + 5.524274655941168648e-05, + 5.511531187378247888e-05, + 5.498779812161886434e-05, + 5.486020551678306886e-05, + 5.473253427326460376e-05, + 5.460478460515747715e-05, + 5.447695672666606889e-05, + 5.434905085210378894e-05, + 5.422106719589908787e-05, + 5.409300597257201782e-05, + 5.396486739676862194e-05, + 5.383665168323667548e-05, + 5.370835904683224512e-05, + 5.357998970252411393e-05, + 5.345154386537139256e-05, + 5.332302175055652645e-05, + 5.319442357336278505e-05, + 5.306574954917927628e-05, + 5.293699989350074322e-05, + 5.280817482193286318e-05, + 5.267927455016916093e-05, + 5.255029929402468678e-05, + 5.242124926941291624e-05, + 5.229212469235109653e-05, + 5.216292577896572180e-05, + 5.203365274546904658e-05, + 5.190430580819335336e-05, + 5.177488518356737119e-05, + 5.164539108812202874e-05, + 5.151582373848973597e-05, + 5.138618335140987298e-05, + 5.125647014370564899e-05, + 5.112668433231227810e-05, + 5.099682613428208180e-05, + 5.086689576673315198e-05, + 5.073689344690581756e-05, + 5.060681939213955096e-05, + 5.047667381984939351e-05, + 5.034645694758930671e-05, + 5.021616899297086384e-05, + 5.008581017372622858e-05, + 4.995538070768481756e-05, + 4.982488081275583111e-05, + 4.969431070695667972e-05, + 4.956367060841790362e-05, + 4.943296073533150371e-05, + 4.930218130600799102e-05, + 4.917133253885296783e-05, + 4.904041465234374966e-05, + 4.890942786509249964e-05, + 4.877837239576457461e-05, + 4.864724846314264205e-05, + 4.851605628609668839e-05, + 4.838479608359510495e-05, + 4.825346807467633607e-05, + 4.812207247851082092e-05, + 4.799060951432089131e-05, + 4.785907940144305909e-05, + 4.772748235930538341e-05, + 4.759581860740311009e-05, + 4.746408836535683228e-05, + 4.733229185285987275e-05, + 4.720042928968321027e-05, + 4.706850089570496309e-05, + 4.693650689089168650e-05, + 4.680444749527590948e-05, + 4.667232292901832725e-05, + 4.654013341232723152e-05, + 4.640787916552162459e-05, + 4.627556040900724494e-05, + 4.614317736325341949e-05, + 4.601073024885097358e-05, + 4.587821928645913216e-05, + 4.574564469681110341e-05, + 4.561300670074264072e-05, + 4.548030551916894238e-05, + 4.534754137308944242e-05, + 4.521471448358784450e-05, + 4.508182507183740057e-05, + 4.494887335907727532e-05, + 4.481585956664739648e-05, + 4.468278391596445327e-05, + 4.454964662852726326e-05, + 4.441644792592284384e-05, + 4.428318802980195671e-05, + 4.414986716191397856e-05, + 4.401648554408387528e-05, + 4.388304339821645070e-05, + 4.374954094629707841e-05, + 4.361597841039676368e-05, + 4.348235601264783016e-05, + 4.334867397527975957e-05, + 4.321493252059445834e-05, + 4.308113187097230881e-05, + 4.294727224887738695e-05, + 4.281335387683380642e-05, + 4.267937697746020299e-05, + 4.254534177344664779e-05, + 4.241124848755897737e-05, + 4.227709734263979655e-05, + 4.214288856161270007e-05, + 4.200862236745947720e-05, + 4.187429898325407442e-05, + 4.173991863213937989e-05, + 4.160548153733258352e-05, + 4.147098792212470261e-05, + 4.133643800988593509e-05, + 4.120183202404204426e-05, + 4.106717018810925653e-05, + 4.093245272567011761e-05, + 4.079767986037950304e-05, + 4.066285181596966653e-05, + 4.052796881622625194e-05, + 4.039303108502374676e-05, + 4.025803884630102650e-05, + 4.012299232406729753e-05, + 3.998789174240181246e-05, + 3.985273732545849832e-05, + 3.971752929744322896e-05, + 3.958226788264790293e-05, + 3.944695330542690267e-05, + 3.931158579020256979e-05, + 3.917616556146490012e-05, + 3.904069284377693081e-05, + 3.890516786174468087e-05, + 3.876959084008238624e-05, + 3.863396200352861641e-05, + 3.849828157691154341e-05, + 3.836254978512457437e-05, + 3.822676685310834695e-05, + 3.809093300587977247e-05, + 3.795504846853827677e-05, + 3.781911346621098709e-05, + 3.768312822411232248e-05, + 3.754709296752041921e-05, + 3.741100792175134027e-05, + 3.727487331222620109e-05, + 3.713868936438568695e-05, + 3.700245630375634514e-05, + 3.686617435592585843e-05, + 3.672984374652483720e-05, + 3.659346470125626234e-05, + 3.645703744590147544e-05, + 3.632056220626538593e-05, + 3.618403920823646137e-05, + 3.604746867776202114e-05, + 3.591085084082399102e-05, + 3.577418592349885954e-05, + 3.563747415190280380e-05, + 3.550071575219751707e-05, + 3.536391095061975330e-05, + 3.522705997346345808e-05, + 3.509016304705437803e-05, + 3.495322039781675275e-05, + 3.481623225218850989e-05, + 3.467919883668655446e-05, + 3.454212037788277406e-05, + 3.440499710237974600e-05, + 3.426782923687019222e-05, + 3.413061700808265399e-05, + 3.399336064278687903e-05, + 3.385606036782377941e-05, + 3.371871641008111146e-05, + 3.358132899649878846e-05, + 3.344389835407477591e-05, + 3.330642470984013459e-05, + 3.316890829089570047e-05, + 3.303134932438678213e-05, + 3.289374803750921876e-05, + 3.275610465750900067e-05, + 3.261841941168764963e-05, + 3.248069252737801412e-05, + 3.234292423197985140e-05, + 3.220511475293564988e-05, + 3.206726431773597555e-05, + 3.192937315391909252e-05, + 3.179144148907710909e-05, + 3.165346955083064129e-05, + 3.151545756686545218e-05, + 3.137740576490732539e-05, + 3.123931437272820449e-05, + 3.110118361815166139e-05, + 3.096301372902803423e-05, + 3.082480493327083629e-05, + 3.068655745883203611e-05, + 3.054827153370760729e-05, + 3.040994738593711855e-05, + 3.027158524360970695e-05, + 3.013318533483910739e-05, + 2.999474788779986158e-05, + 2.985627313070270665e-05, + 2.971776129180018247e-05, + 2.957921259938622174e-05, + 2.944062728180209615e-05, + 2.930200556741112392e-05, + 2.916334768463567506e-05, + 2.902465386193165867e-05, + 2.888592432779471650e-05, + 2.874715931076565067e-05, + 2.860835903940600548e-05, + 2.846952374232768302e-05, + 2.833065364819938739e-05, + 2.819174898569031738e-05, + 2.805280998353202018e-05, + 2.791383687049248910e-05, + 2.777482987535829798e-05, + 2.763578922697042389e-05, + 2.749671515419959168e-05, + 2.735760788595187121e-05, + 2.721846765116853163e-05, + 2.707929467883164536e-05, + 2.694008919793292747e-05, + 2.680085143754115266e-05, + 2.666158162671577152e-05, + 2.652227999457368039e-05, + 2.638294677026486752e-05, + 2.624358218295331412e-05, + 2.610418646184720299e-05, + 2.596475983620492224e-05, + 2.582530253527940851e-05, + 2.568581478837885884e-05, + 2.554629682484233955e-05, + 2.540674887401438541e-05, + 2.526717116531235907e-05, + 2.512756392813994191e-05, + 2.498792739195464257e-05, + 2.484826178624270781e-05, + 2.470856734049978645e-05, + 2.456884428426238821e-05, + 2.442909284711279643e-05, + 2.428931325862321479e-05, + 2.414950574841784122e-05, + 2.400967054614690130e-05, + 2.386980788146215540e-05, + 2.372991798407808842e-05, + 2.359000108371589371e-05, + 2.345005741010944644e-05, + 2.331008719303563070e-05, + 2.317009066229555234e-05, + 2.303006804768921608e-05, + 2.289001957908363369e-05, + 2.274994548632537978e-05, + 2.260984599930842209e-05, + 2.246972134794922898e-05, + 2.232957176216112801e-05, + 2.218939747191643071e-05, + 2.204919870718988469e-05, + 2.190897569796460963e-05, + 2.176872867426281070e-05, + 2.162845786612053019e-05, + 2.148816350359345479e-05, + 2.134784581676284481e-05, + 2.120750503571007235e-05, + 2.106714139055388063e-05, + 2.092675511142476629e-05, + 2.078634642847114578e-05, + 2.064591557185882685e-05, + 2.050546277177686661e-05, + 2.036498825841227234e-05, + 2.022449226198702363e-05, + 2.008397501273284094e-05, + 1.994343674089691832e-05, + 1.980287767674154736e-05, + 1.966229805055017172e-05, + 1.952169809260177971e-05, + 1.938107803320826176e-05, + 1.924043810268875890e-05, + 1.909977853137580206e-05, + 1.895909954962095672e-05, + 1.881840138776968968e-05, + 1.867768427619834721e-05, + 1.853694844528865930e-05, + 1.839619412543388915e-05, + 1.825542154703833848e-05, + 1.811463094052308029e-05, + 1.797382253630077143e-05, + 1.783299656481271203e-05, + 1.769215325650347177e-05, + 1.755129284182680555e-05, + 1.741041555124507074e-05, + 1.726952161523547151e-05, + 1.712861126426434965e-05, + 1.698768472882447781e-05, + 1.684674223940959423e-05, + 1.670578402652037942e-05, + 1.656481032067027025e-05, + 1.642382135236000821e-05, + 1.628281735210875610e-05, + 1.614179855045967145e-05, + 1.600076517792348399e-05, + 1.585971746504047134e-05, + 1.571865564235529875e-05, + 1.557757994039765933e-05, + 1.543649058971958412e-05, + 1.529538782086986852e-05, + 1.515427186440022848e-05, + 1.501314295087089433e-05, + 1.487200131082537597e-05, + 1.473084717482127455e-05, + 1.458968077343634889e-05, + 1.444850233721151358e-05, + 1.430731209671335511e-05, + 1.416611028250855817e-05, + 1.402489712514474588e-05, + 1.388367285518148618e-05, + 1.374243770319608558e-05, + 1.360119189972695486e-05, + 1.345993567533578292e-05, + 1.331866926058215128e-05, + 1.317739288599806036e-05, + 1.303610678215656117e-05, + 1.289481117958351992e-05, + 1.275350630882630051e-05, + 1.261219240042827732e-05, + 1.247086968490952792e-05, + 1.232953839279812421e-05, + 1.218819875463564653e-05, + 1.204685100092071543e-05, + 1.190549536217104866e-05, + 1.176413206889813319e-05, + 1.162276135158182270e-05, + 1.148138344073883376e-05, + 1.133999856683453746e-05, + 1.119860696035178937e-05, + 1.105720885175900146e-05, + 1.091580447151608995e-05, + 1.077439405007407720e-05, + 1.063297781788107858e-05, + 1.049155600535672541e-05, + 1.035012884292954627e-05, + 1.020869656101760039e-05, + 1.006725939000317851e-05, + 9.925817560295180044e-06, + 9.784371302272124743e-06, + 9.642920846288064951e-06, + 9.501466422703746270e-06, + 9.360008261861016998e-06, + 9.218546594088709923e-06, + 9.077081649708639320e-06, + 8.935613659009971423e-06, + 8.794142852286695474e-06, + 8.652669459818314757e-06, + 8.511193711844269592e-06, + 8.369715838626612690e-06, + 8.228236070392881864e-06, + 8.086754637342074997e-06, + 7.945271769675695499e-06, + 7.803787697572292184e-06, + 7.662302651193327518e-06, + 7.520816860682738857e-06, + 7.379330556172999811e-06, + 7.237843967759449220e-06, + 7.096357325537754572e-06, + 6.954870859578332456e-06, + 6.813384799932274405e-06, + 6.671899376637277818e-06, + 6.530414819692070652e-06, + 6.388931359093824862e-06, + 6.247449224812639538e-06, + 6.105968646797370182e-06, + 5.964489854975354271e-06, + 5.823013079258290515e-06, + 5.681538549516675397e-06, + 5.540066495617213236e-06, + 5.398597147397278988e-06, + 5.257130734670806817e-06, + 5.115667487234280318e-06, + 4.974207634841074187e-06, + 4.832751407238941366e-06, + 4.691299034144433488e-06, + 4.549850745248842819e-06, + 4.408406770217769421e-06, + 4.266967338697116451e-06, + 4.125532680287482663e-06, + 3.984103024575298490e-06, + 3.842678601138798475e-06, + 3.701259639490847816e-06, + 3.559846369141670662e-06, + 3.418439019573241344e-06, + 3.277037820219986845e-06, + 3.135643000506271820e-06, + 2.994254789820786013e-06, + 2.852873417522470525e-06, + 2.711499112946496594e-06, + 2.570132105378620404e-06, + 2.428772624086387354e-06, + 2.287420898325011736e-06, + 2.146077157280304505e-06, + 2.004741630131347785e-06, + 1.863414546024884195e-06, + 1.722096134056052141e-06, + 1.580786623305839498e-06, + 1.439486242815480554e-06, + 1.298195221592410866e-06, + 1.156913788609889481e-06, + 1.015642172812920547e-06, + 8.743806030863990436e-07, + 7.331293083240334387e-07, + 5.918885173397723993e-07, + 4.506584589367455468e-07, + 3.094393618816818440e-07, + 1.682314548856526719e-07, + 2.703496663519429455e-08, +-1.141498742017624202e-07, +-2.553228390329487488e-07, +-3.964836992791410166e-07, +-5.376322263997260235e-07, +-6.787681919182537919e-07, +-8.198913673535431884e-07, +-9.610015243082009966e-07, +-1.102098434399735216e-06, +-1.243181869292393228e-06, +-1.384251600691244958e-06, +-1.525307400342548154e-06, +-1.666349040027824662e-06, +-1.807376291589387250e-06, +-1.948388926892971475e-06, +-2.089386717846965025e-06, +-2.230369436427950637e-06, +-2.371336854618155037e-06, +-2.512288744462435840e-06, +-2.653224878062367986e-06, +-2.794145027545136881e-06, +-2.935048965089100579e-06, +-3.075936462917824550e-06, +-3.216807293294185069e-06, +-3.357661228545901742e-06, +-3.498498041028137198e-06, +-3.639317503142773863e-06, +-3.780119387363883392e-06, +-3.920903466175266883e-06, +-4.061669512127343731e-06, +-4.202417297831315564e-06, +-4.343146595928006451e-06, +-4.483857179113446677e-06, +-4.624548820132927424e-06, +-4.765221291781344663e-06, +-4.905874366897325831e-06, +-5.046507818388675542e-06, +-5.187121419195090053e-06, +-5.327714942313614829e-06, +-5.468288160792768682e-06, +-5.608840847726609458e-06, +-5.749372776280186524e-06, +-5.889883719652273022e-06, +-6.030373451100857316e-06, +-6.170841743937146853e-06, +-6.311288371526020474e-06, +-6.451713107280105114e-06, +-6.592115724685177475e-06, +-6.732495997262962337e-06, +-6.872853698596526604e-06, +-7.013188602324410217e-06, +-7.153500482134703696e-06, +-7.293789111790496401e-06, +-7.434054265092611313e-06, +-7.574295715905072779e-06, +-7.714513238149126455e-06, +-7.854706605803773786e-06, +-7.994875592899620853e-06, +-8.135019973544542623e-06, +-8.275139521892536701e-06, +-8.415234012137949953e-06, +-8.555303218572126377e-06, +-8.695346915521167121e-06, +-8.835364877371465136e-06, +-8.975356878588578770e-06, +-9.115322693680290959e-06, +-9.255262097221877922e-06, +-9.395174863850207030e-06, +-9.535060768257939715e-06, +-9.674919585218832343e-06, +-9.814751089556822899e-06, +-9.954555056140189850e-06, +-1.009433125993811362e-05, +-1.023407947595863479e-05, +-1.037379947927387541e-05, +-1.051349104503924455e-05, +-1.065315394845631628e-05, +-1.079278796479810853e-05, +-1.093239286940323342e-05, +-1.107196843767628191e-05, +-1.121151444508190123e-05, +-1.135103066717645539e-05, +-1.149051687953950013e-05, +-1.162997285786181848e-05, +-1.176939837787692798e-05, +-1.190879321538647135e-05, +-1.204815714627925097e-05, +-1.218748994650044098e-05, +-1.232679139204574273e-05, +-1.246606125901776327e-05, +-1.260529932356411253e-05, +-1.274450536190267029e-05, +-1.288367915034675661e-05, +-1.302282046523732347e-05, +-1.316192908302998907e-05, +-1.330100478022728200e-05, +-1.344004733340385063e-05, +-1.357905651923151493e-05, +-1.371803211441762622e-05, +-1.385697389576129661e-05, +-1.399588164014761879e-05, +-1.413475512451675619e-05, +-1.427359412588316207e-05, +-1.441239842136072460e-05, +-1.455116778810090635e-05, +-1.468990200334908548e-05, +-1.482860084443868417e-05, +-1.496726408876050260e-05, +-1.510589151378794022e-05, +-1.524448289707094283e-05, +-1.538303801623043762e-05, +-1.552155664898324775e-05, +-1.566003857310550393e-05, +-1.579848356645129610e-05, +-1.593689140697804205e-05, +-1.607526187268488440e-05, +-1.621359474166855078e-05, +-1.635188979211787852e-05, +-1.649014680228291836e-05, +-1.662836555050012179e-05, +-1.676654581518659815e-05, +-1.690468737483417526e-05, +-1.704279000803467825e-05, +-1.718085349344286342e-05, +-1.731887760980167337e-05, +-1.745686213593663301e-05, +-1.759480685075575133e-05, +-1.773271153324401566e-05, +-1.787057596248841645e-05, +-1.800839991764105724e-05, +-1.814618317794454197e-05, +-1.828392552272579502e-05, +-1.842162673139661686e-05, +-1.855928658344783611e-05, +-1.869690485847430047e-05, +-1.883448133613825092e-05, +-1.897201579619439059e-05, +-1.910950801848389788e-05, +-1.924695778292886318e-05, +-1.938436486955701882e-05, +-1.952172905846534715e-05, +-1.965905012984496978e-05, +-1.979632786397530979e-05, +-1.993356204122451189e-05, +-2.007075244204364192e-05, +-2.020789884699164386e-05, +-2.034500103669860226e-05, +-2.048205879189091610e-05, +-2.061907189338551866e-05, +-2.075604012209006718e-05, +-2.089296325899715940e-05, +-2.102984108520934809e-05, +-2.116667338190268135e-05, +-2.130345993035142249e-05, +-2.144020051192247647e-05, +-2.157689490806935230e-05, +-2.171354290035724537e-05, +-2.185014427043277464e-05, +-2.198669880001786372e-05, +-2.212320627096576355e-05, +-2.225966646519968325e-05, +-2.239607916473776398e-05, +-2.253244415171189668e-05, +-2.266876120833126909e-05, +-2.280503011690709580e-05, +-2.294125065984710908e-05, +-2.307742261964947384e-05, +-2.321354577892788013e-05, +-2.334961992038104314e-05, +-2.348564482678719415e-05, +-2.362162028105923249e-05, +-2.375754606618412208e-05, +-2.389342196524753666e-05, +-2.402924776145858976e-05, +-2.416502323808950565e-05, +-2.430074817853041560e-05, +-2.443642236628377421e-05, +-2.457204558493440157e-05, +-2.470761761816780289e-05, +-2.484313824979513221e-05, +-2.497860726368635821e-05, +-2.511402444385597705e-05, +-2.524938957439637808e-05, +-2.538470243950243822e-05, +-2.551996282349634009e-05, +-2.565517051076690743e-05, +-2.579032528582484528e-05, +-2.592542693329704786e-05, +-2.606047523789612236e-05, +-2.619546998443975211e-05, +-2.633041095787444735e-05, +-2.646529794320969694e-05, +-2.660013072560312223e-05, +-2.673490909029386641e-05, +-2.686963282263371452e-05, +-2.700430170808084909e-05, +-2.713891553220066329e-05, +-2.727347408065968265e-05, +-2.740797713925035602e-05, +-2.754242449385483639e-05, +-2.767681593046383932e-05, +-2.781115123520077310e-05, +-2.794543019426193157e-05, +-2.807965259397099891e-05, +-2.821381822077362526e-05, +-2.834792686120717072e-05, +-2.848197830192548616e-05, +-2.861597232969330918e-05, +-2.874990873138014185e-05, +-2.888378729398517034e-05, +-2.901760780460113393e-05, +-2.915137005043883135e-05, +-2.928507381882160490e-05, +-2.941871889718554036e-05, +-2.955230507307353774e-05, +-2.968583213416025473e-05, +-2.981929986821597566e-05, +-2.995270806313090437e-05, +-3.008605650690999398e-05, +-3.021934498767265206e-05, +-3.035257329364765848e-05, +-3.048574121319695684e-05, +-3.061884853478035357e-05, +-3.075189504697995645e-05, +-3.088488053849391680e-05, +-3.101780479813151666e-05, +-3.115066761483698736e-05, +-3.128346877765394768e-05, +-3.141620807574993393e-05, +-3.154888529841041653e-05, +-3.168150023503931497e-05, +-3.181405267515356326e-05, +-3.194654240840684721e-05, +-3.207896922455456433e-05, +-3.221133291347782535e-05, +-3.234363326517762671e-05, +-3.247587006977561616e-05, +-3.260804311750823819e-05, +-3.274015219875078288e-05, +-3.287219710398218330e-05, +-3.300417762380907795e-05, +-3.313609354896009844e-05, +-3.326794467028059750e-05, +-3.339973077875613551e-05, +-3.353145166548370855e-05, +-3.366310712166581908e-05, +-3.379469693866450993e-05, +-3.392622090794180094e-05, +-3.405767882108439517e-05, +-3.418907046982141919e-05, +-3.432039564598924074e-05, +-3.445165414155560574e-05, +-3.458284574861384460e-05, +-3.471397025937750545e-05, +-3.484502746620414553e-05, +-3.497601716156628144e-05, +-3.510693913804577152e-05, +-3.523779318838720612e-05, +-3.536857910543904213e-05, +-3.549929668217803824e-05, +-3.562994571173256524e-05, +-3.576052598732458768e-05, +-3.589103730232251195e-05, +-3.602147945023582623e-05, +-3.615185222468617266e-05, +-3.628215541942491138e-05, +-3.641238882835732535e-05, +-3.654255224547811712e-05, +-3.667264546495404534e-05, +-3.680266828105957738e-05, +-3.693262048820095860e-05, +-3.706250188093952269e-05, +-3.719231225393381565e-05, +-3.732205140199248446e-05, +-3.745171912006863251e-05, +-3.758131520323126440e-05, +-3.771083944668240278e-05, +-3.784029164578199788e-05, +-3.796967159598267215e-05, +-3.809897909291249903e-05, +-3.822821393231121123e-05, +-3.835737591005937256e-05, +-3.848646482217293657e-05, +-3.861548046480378188e-05, +-3.874442263423380327e-05, +-3.887329112689888612e-05, +-3.900208573935446267e-05, +-3.913080626829239841e-05, +-3.925945251056563065e-05, +-3.938802426312989938e-05, +-3.951652132309614813e-05, +-3.964494348772518428e-05, +-3.977329055439955078e-05, +-3.990156232064599626e-05, +-4.002975858413080614e-05, +-4.015787914265408354e-05, +-4.028592379417298498e-05, +-4.041389233676774431e-05, +-4.054178456866492199e-05, +-4.066960028823165884e-05, +-4.079733929397674671e-05, +-4.092500138454427909e-05, +-4.105258635873763911e-05, +-4.118009401548498801e-05, +-4.130752415386274490e-05, +-4.143487657308995569e-05, +-4.156215107252891650e-05, +-4.168934745167936641e-05, +-4.181646551020219758e-05, +-4.194350504788480827e-05, +-4.207046586466491457e-05, +-4.219734776062470928e-05, +-4.232415053598563066e-05, +-4.245087399113161853e-05, +-4.257751792657498904e-05, +-4.270408214297971111e-05, +-4.283056644115574825e-05, +-4.295697062206010891e-05, +-4.308329448679007695e-05, +-4.320953783660797892e-05, +-4.333570047290600169e-05, +-4.346178219722997033e-05, +-4.358778281127395426e-05, +-4.371370211687422954e-05, +-4.383953991603328722e-05, +-4.396529601088536245e-05, +-4.409097020371964998e-05, +-4.421656229697510000e-05, +-4.434207209324036390e-05, +-4.446749939524901024e-05, +-4.459284400590189998e-05, +-4.471810572823929538e-05, +-4.484328436543594720e-05, +-4.496837972085195056e-05, +-4.509339159797629188e-05, +-4.521831980045043031e-05, +-4.534316413209032732e-05, +-4.546792439682585338e-05, +-4.559260039877869464e-05, +-4.571719194220137336e-05, +-4.584169883150047693e-05, +-4.596612087125306998e-05, +-4.609045786617893878e-05, +-4.621470962113613252e-05, +-4.633887594117080944e-05, +-4.646295663146209840e-05, +-4.658695149734423018e-05, +-4.671086034432991554e-05, +-4.683468297804843053e-05, +-4.695841920432500721e-05, +-4.708206882911847166e-05, +-4.720563165855099180e-05, +-4.732910749889588688e-05, +-4.745249615660661633e-05, +-4.757579743825519713e-05, +-4.769901115061117428e-05, +-4.782213710057998403e-05, +-4.794517509522612183e-05, +-4.806812494179491451e-05, +-4.819098644765847279e-05, +-4.831375942036437196e-05, +-4.843644366763214177e-05, +-4.855903899732412173e-05, +-4.868154521746364182e-05, +-4.880396213625722831e-05, +-4.892628956203330567e-05, +-4.904852730332104517e-05, +-4.917067516878894485e-05, +-4.929273296726769261e-05, +-4.941470050777219586e-05, +-4.953657759944728330e-05, +-4.965836405161700226e-05, +-4.978005967377970589e-05, +-4.990166427558086681e-05, +-5.002317766682963827e-05, +-5.014459965752163597e-05, +-5.026593005778362343e-05, +-5.038716867792370375e-05, +-5.050831532842604089e-05, +-5.062936981992332777e-05, +-5.075033196321990003e-05, +-5.087120156928558325e-05, +-5.099197844925093596e-05, +-5.111266241442983496e-05, +-5.123325327628600734e-05, +-5.135375084645616464e-05, +-5.147415493674400587e-05, +-5.159446535912123394e-05, +-5.171468192572204657e-05, +-5.183480444886486097e-05, +-5.195483274102058062e-05, +-5.207476661483464520e-05, +-5.219460588312093877e-05, +-5.231435035885808991e-05, +-5.243399985521011899e-05, +-5.255355418549495565e-05, +-5.267301316320639390e-05, +-5.279237660200896928e-05, +-5.291164431573732862e-05, +-5.303081611839258446e-05, +-5.314989182416322659e-05, +-5.326887124739318550e-05, +-5.338775420260409240e-05, +-5.350654050448962109e-05, +-5.362522996791598933e-05, +-5.374382240791741882e-05, +-5.386231763971672821e-05, +-5.398071547869453499e-05, +-5.409901574041045845e-05, +-5.421721824059791547e-05, +-5.433532279515966177e-05, +-5.445332922018871700e-05, +-5.457123733193745141e-05, +-5.468904694683806374e-05, +-5.480675788149884072e-05, +-5.492436995270333035e-05, +-5.504188297740589671e-05, +-5.515929677275336327e-05, +-5.527661115605307646e-05, +-5.539382594479423048e-05, +-5.551094095664380160e-05, +-5.562795600944570111e-05, +-5.574487092121647238e-05, +-5.586168551017158278e-05, +-5.597839959466775089e-05, +-5.609501299327806817e-05, +-5.621152552473197481e-05, +-5.632793700793903763e-05, +-5.644424726200380365e-05, +-5.656045610619948112e-05, +-5.667656335996422608e-05, +-5.679256884294736326e-05, +-5.690847237495787973e-05, +-5.702427377598573622e-05, +-5.713997286622278548e-05, +-5.725556946600539760e-05, +-5.737106339588851108e-05, +-5.748645447658787868e-05, +-5.760174252900646103e-05, +-5.771692737422464163e-05, +-5.783200883352671533e-05, +-5.794698672834294447e-05, +-5.806186088032366409e-05, +-5.817663111128167016e-05, +-5.829129724321382907e-05, +-5.840585909832181978e-05, +-5.852031649896041060e-05, +-5.863466926768492012e-05, +-5.874891722724553874e-05, +-5.886306020056247329e-05, +-5.897709801074114624e-05, +-5.909103048109357476e-05, +-5.920485743508140949e-05, +-5.931857869638896907e-05, +-5.943219408886612983e-05, +-5.954570343655021309e-05, +-5.965910656368564991e-05, +-5.977240329467358598e-05, +-5.988559345411819063e-05, +-5.999867686682196764e-05, +-6.011165335775997158e-05, +-6.022452275210089551e-05, +-6.033728487520228698e-05, +-6.044993955261052088e-05, +-6.056248661005621194e-05, +-6.067492587347480100e-05, +-6.078725716897610929e-05, +-6.089948032286506696e-05, +-6.101159516163734924e-05, +-6.112360151197335906e-05, +-6.123549920076058197e-05, +-6.134728805506147343e-05, +-6.145896790213548164e-05, +-6.157053856943367400e-05, +-6.168199988459870998e-05, +-6.179335167546068049e-05, +-6.190459377005719276e-05, +-6.201572599660331079e-05, +-6.212674818351233139e-05, +-6.223766015939064780e-05, +-6.234846175303314180e-05, +-6.245915279344332275e-05, +-6.256973310980427103e-05, +-6.268020253149744888e-05, +-6.279056088809944786e-05, +-6.290080800938213786e-05, +-6.301094372530627037e-05, +-6.312096786604384010e-05, +-6.323088026194717169e-05, +-6.334068074356927560e-05, +-6.345036914165951133e-05, +-6.355994528716320789e-05, +-6.366940901121819439e-05, +-6.377876014517305531e-05, +-6.388799852055940200e-05, +-6.399712396911073778e-05, +-6.410613632275836515e-05, +-6.421503541362649325e-05, +-6.432382107405253959e-05, +-6.443249313655750421e-05, +-6.454105143386571570e-05, +-6.464949579890076549e-05, +-6.475782606478519608e-05, +-6.486604206483601520e-05, +-6.497414363258532271e-05, +-6.508213060174961419e-05, +-6.519000280625078731e-05, +-6.529776008021149331e-05, +-6.540540225795471690e-05, +-6.551292917399981891e-05, +-6.562034066308682241e-05, +-6.572763656012277182e-05, +-6.583481670025108118e-05, +-6.594188091879733761e-05, +-6.604882905128946745e-05, +-6.615566093347230523e-05, +-6.626237640128399876e-05, +-6.636897529085084555e-05, +-6.647545743853154187e-05, +-6.658182268086898991e-05, +-6.668807085460954243e-05, +-6.679420179672320953e-05, +-6.690021534435041078e-05, +-6.700611133486960235e-05, +-6.711188960584458477e-05, +-6.721754999504450645e-05, +-6.732309234045797189e-05, +-6.742851648026928406e-05, +-6.753382225285435158e-05, +-6.763900949682363664e-05, +-6.774407805097442303e-05, +-6.784902775431103650e-05, +-6.795385844606319486e-05, +-6.805856996563889943e-05, +-6.816316215266754561e-05, +-6.826763484699597910e-05, +-6.837198788866388451e-05, +-6.847622111791895063e-05, +-6.858033437523668424e-05, +-6.868432750126649813e-05, +-6.878820033690100522e-05, +-6.889195272322165932e-05, +-6.899558450151976159e-05, +-6.909909551331433627e-05, +-6.920248560030607926e-05, +-6.930575460441964195e-05, +-6.940890236779900986e-05, +-6.951192873278421933e-05, +-6.961483354193109005e-05, +-6.971761663800588537e-05, +-6.982027786398083992e-05, +-6.992281706305447490e-05, +-7.002523407862216195e-05, +-7.012752875429566592e-05, +-7.022970093389864542e-05, +-7.033175046146764215e-05, +-7.043367718124634821e-05, +-7.053548093770508102e-05, +-7.063716157551370545e-05, +-7.073871893955950953e-05, +-7.084015287494292192e-05, +-7.094146322697860959e-05, +-7.104264984119035503e-05, +-7.114371256332932504e-05, +-7.124465123934781944e-05, +-7.134546571541688941e-05, +-7.144615583792288159e-05, +-7.154672145346211191e-05, +-7.164716240886016439e-05, +-7.174747855114428467e-05, +-7.184766972756208249e-05, +-7.194773578557691024e-05, +-7.204767657286824248e-05, +-7.214749193732831491e-05, +-7.224718172707864485e-05, +-7.234674579044432215e-05, +-7.244618397597223731e-05, +-7.254549613242606708e-05, +-7.264468210878804978e-05, +-7.274374175425272408e-05, +-7.284267491824651241e-05, +-7.294148145040094111e-05, +-7.304016120056994708e-05, +-7.313871401882636762e-05, +-7.323713975545763073e-05, +-7.333543826098344121e-05, +-7.343360938613447601e-05, +-7.353165298184644830e-05, +-7.362956889930316379e-05, +-7.372735698989013044e-05, +-7.382501710521200062e-05, +-7.392254909710905088e-05, +-7.401995281762766465e-05, +-7.411722811903998333e-05, +-7.421437485383955597e-05, +-7.431139287473647389e-05, +-7.440828203467607317e-05, +-7.450504218681646459e-05, +-7.460167318452412902e-05, +-7.469817488141563210e-05, +-7.479454713131065123e-05, +-7.489078978825269731e-05, +-7.498690270652124431e-05, +-7.508288574060977417e-05, +-7.517873874522244284e-05, +-7.527446157531278632e-05, +-7.537005408604098957e-05, +-7.546551613279090843e-05, +-7.556084757118827072e-05, +-7.565604825705294419e-05, +-7.575111804645971963e-05, +-7.584605679569067374e-05, +-7.594086436125342438e-05, +-7.603554059989363952e-05, +-7.613008536857361077e-05, +-7.622449852446883806e-05, +-7.631877992500664084e-05, +-7.641292942782243762e-05, +-7.650694689077954620e-05, +-7.660083217198365778e-05, +-7.669458512973784255e-05, +-7.678820562260231638e-05, +-7.688169350934677653e-05, +-7.697504864897342742e-05, +-7.706827090070706018e-05, +-7.716136012401802417e-05, +-7.725431617857463052e-05, +-7.734713892430298654e-05, +-7.743982822134139144e-05, +-7.753238393005571849e-05, +-7.762480591105922877e-05, +-7.771709402516735997e-05, +-7.780924813343822132e-05, +-7.790126809716847365e-05, +-7.799315377787061532e-05, +-7.808490503729218618e-05, +-7.817652173741078024e-05, +-7.826800374042954618e-05, +-7.835935090879561887e-05, +-7.845056310517338016e-05, +-7.854164019246324274e-05, +-7.863258203379617486e-05, +-7.872338849253497433e-05, +-7.881405943226941666e-05, +-7.890459471683364300e-05, +-7.899499421028138607e-05, +-7.908525777690269404e-05, +-7.917538528122008154e-05, +-7.926537658798848908e-05, +-7.935523156219150183e-05, +-7.944495006905816833e-05, +-7.953453197403806386e-05, +-7.962397714281871895e-05, +-7.971328544132097091e-05, +-7.980245673569527751e-05, +-7.989149089233854920e-05, +-7.998038777786955133e-05, +-8.006914725914512649e-05, +-8.015776920325742979e-05, +-8.024625347753270915e-05, +-8.033459994952831017e-05, +-8.042280848704907472e-05, +-8.051087895812297345e-05, +-8.059881123101745020e-05, +-8.068660517423553236e-05, +-8.077426065651702354e-05, +-8.086177754683254043e-05, +-8.094915571440205267e-05, +-8.103639502866972935e-05, +-8.112349535932025628e-05, +-8.121045657627571886e-05, +-8.129727854969069612e-05, +-8.138396114996939107e-05, +-8.147050424774545101e-05, +-8.155690771387832190e-05, +-8.164317141948895925e-05, +-8.172929523592025478e-05, +-8.181527903475441070e-05, +-8.190112268782268404e-05, +-8.198682606718381098e-05, +-8.207238904513888757e-05, +-8.215781149422848298e-05, +-8.224309328722771999e-05, +-8.232823429716351377e-05, +-8.241323439729412114e-05, +-8.249809346110590150e-05, +-8.258281136234872958e-05, +-8.266738797499669313e-05, +-8.275182317326442371e-05, +-8.283611683161871118e-05, +-8.292026882475892033e-05, +-8.300427902761396866e-05, +-8.308814731537679044e-05, +-8.317187356346632189e-05, +-8.325545764754293751e-05, +-8.333889944352345269e-05, +-8.342219882754019515e-05, +-8.350535567599384615e-05, +-8.358836986551198341e-05, +-8.367124127296499169e-05, +-8.375396977547647118e-05, +-8.383655525040540236e-05, +-8.391899757534213445e-05, +-8.400129662814290372e-05, +-8.408345228689184572e-05, +-8.416546442991647227e-05, +-8.424733293580332467e-05, +-8.432905768335563555e-05, +-8.441063855164767456e-05, +-8.449207541998205785e-05, +-8.457336816790988717e-05, +-8.465451667522654858e-05, +-8.473552082197176663e-05, +-8.481638048842683969e-05, +-8.489709555512916822e-05, +-8.497766590284922905e-05, +-8.505809141260445316e-05, +-8.513837196567085373e-05, +-8.521850744354881962e-05, +-8.529849772799577687e-05, +-8.537834270102215013e-05, +-8.545804224487362237e-05, +-8.553759624204582579e-05, +-8.561700457528103507e-05, +-8.569626712756444036e-05, +-8.577538378213919062e-05, +-8.585435442248419457e-05, +-8.593317893232611468e-05, +-8.601185719565264864e-05, +-8.609038909667852610e-05, +-8.616877451987556811e-05, +-8.624701334997207734e-05, +-8.632510547193254986e-05, +-8.640305077097358588e-05, +-8.648084913256052868e-05, +-8.655850044240642109e-05, +-8.663600458647040627e-05, +-8.671336145097083303e-05, +-8.679057092236384279e-05, +-8.686763288735923965e-05, +-8.694454723291534040e-05, +-8.702131384623715846e-05, +-8.709793261478911619e-05, +-8.717440342627578672e-05, +-8.725072616865516190e-05, +-8.732690073013483047e-05, +-8.740292699917296738e-05, +-8.747880486447498635e-05, +-8.755453421500709237e-05, +-8.763011493997602069e-05, +-8.770554692884286038e-05, +-8.778083007131995083e-05, +-8.785596425736743936e-05, +-8.793094937720756564e-05, +-8.800578532130259814e-05, +-8.808047198037161215e-05, +-8.815500924538462158e-05, +-8.822939700756377154e-05, +-8.830363515838069561e-05, +-8.837772358956894351e-05, +-8.845166219310813822e-05, +-8.852545086121986950e-05, +-8.859908948639959661e-05, +-8.867257796138208932e-05, +-8.874591617915514308e-05, +-8.881910403296972988e-05, +-8.889214141632071297e-05, +-8.896502822295957271e-05, +-8.903776434689161475e-05, +-8.911034968237292069e-05, +-8.918278412392308748e-05, +-8.925506756631025184e-05, +-8.932719990454560154e-05, +-8.939918103391625379e-05, +-8.947101084994955791e-05, +-8.954268924842813859e-05, +-8.961421612539940984e-05, +-8.968559137715661491e-05, +-8.975681490025010209e-05, +-8.982788659148716200e-05, +-8.989880634792977792e-05, +-8.996957406689253867e-05, +-9.004018964595888813e-05, +-9.011065298294578018e-05, +-9.018096397594887645e-05, +-9.025112252330691671e-05, +-9.032112852361505451e-05, +-9.039098187573502163e-05, +-9.046068247877887857e-05, +-9.053023023210559933e-05, +-9.059962503535026355e-05, +-9.066886678839270949e-05, +-9.073795539136981266e-05, +-9.080689074468892990e-05, +-9.087567274899161927e-05, +-9.094430130520125008e-05, +-9.101277631448475766e-05, +-9.108109767826746983e-05, +-9.114926529824591401e-05, +-9.121727907635548093e-05, +-9.128513891479969806e-05, +-9.135284471604638071e-05, +-9.142039638281341542e-05, +-9.148779381807694568e-05, +-9.155503692508478895e-05, +-9.162212560732476438e-05, +-9.168905976855381721e-05, +-9.175583931279402078e-05, +-9.182246414431761451e-05, +-9.188893416765962134e-05, +-9.195524928761544890e-05, +-9.202140940923648495e-05, +-9.208741443784341954e-05, +-9.215326427900812523e-05, +-9.221895883856308970e-05, +-9.228449802261278628e-05, +-9.234988173750423789e-05, +-9.241510988985427116e-05, +-9.248018238654703632e-05, +-9.254509913471732402e-05, +-9.260986004176526985e-05, +-9.267446501535173294e-05, +-9.273891396339558539e-05, +-9.280320679408658724e-05, +-9.286734341586717185e-05, +-9.293132373744380289e-05, +-9.299514766778552426e-05, +-9.305881511612306561e-05, +-9.312232599194609117e-05, +-9.318568020501558676e-05, +-9.324887766534565876e-05, +-9.331191828321657160e-05, +-9.337480196917041103e-05, +-9.343752863401238507e-05, +-9.350009818880735464e-05, +-9.356251054489220698e-05, +-9.362476561385795273e-05, +-9.368686330756140831e-05, +-9.374880353812348817e-05, +-9.381058621792480034e-05, +-9.387221125961909044e-05, +-9.393367857611432243e-05, +-9.399498808058560765e-05, +-9.405613968647166768e-05, +-9.411713330747532218e-05, +-9.417796885756111720e-05, +-9.423864625096592331e-05, +-9.429916540218279445e-05, +-9.435952622597179650e-05, +-9.441972863735801497e-05, +-9.447977255163087743e-05, +-9.453965788434243232e-05, +-9.459938455131741849e-05, +-9.465895246863769330e-05, +-9.471836155265295275e-05, +-9.477761171997886114e-05, +-9.483670288749245685e-05, +-9.489563497234563703e-05, +-9.495440789195034475e-05, +-9.501302156397528923e-05, +-9.507147590637256306e-05, +-9.512977083734868041e-05, +-9.518790627537648970e-05, +-9.524588213920295279e-05, +-9.530369834783349178e-05, +-9.536135482054260062e-05, +-9.541885147687114821e-05, +-9.547618823662694756e-05, +-9.553336501988177426e-05, +-9.559038174698501387e-05, +-9.564723833853383279e-05, +-9.570393471541220956e-05, +-9.576047079875945234e-05, +-9.581684650998316866e-05, +-9.587306177076591971e-05, +-9.592911650305211509e-05, +-9.598501062904637288e-05, +-9.604074407123677586e-05, +-9.609631675236868795e-05, +-9.615172859545504064e-05, +-9.620697952378777127e-05, +-9.626206946090848187e-05, +-9.631699833064481407e-05, +-9.637176605708274780e-05, +-9.642637256457740262e-05, +-9.648081777776145384e-05, +-9.653510162152126653e-05, +-9.658922402102020587e-05, +-9.664318490169478821e-05, +-9.669698418924287683e-05, +-9.675062180963198968e-05, +-9.680409768910892159e-05, +-9.685741175417323561e-05, +-9.691056393160290433e-05, +-9.696355414844983758e-05, +-9.701638233202746831e-05, +-9.706904840992197408e-05, +-9.712155230998903801e-05, +-9.717389396035138220e-05, +-9.722607328940942003e-05, +-9.727809022582632130e-05, +-9.732994469853454450e-05, +-9.738163663674760044e-05, +-9.743316596993332665e-05, +-9.748453262783864787e-05, +-9.753573654048475130e-05, +-9.758677763815678673e-05, +-9.763765585141216067e-05, +-9.768837111107984516e-05, +-9.773892334825686769e-05, +-9.778931249431806899e-05, +-9.783953848090269959e-05, +-9.788960123992316122e-05, +-9.793950070356267576e-05, +-9.798923680427670823e-05, +-9.803880947478872492e-05, +-9.808821864810121150e-05, +-9.813746425748103637e-05, +-9.818654623646877477e-05, +-9.823546451887713667e-05, +-9.828421903879016718e-05, +-9.833280973056216239e-05, +-9.838123652882513673e-05, +-9.842949936847723564e-05, +-9.847759818469065021e-05, +-9.852553291290985533e-05, +-9.857330348884945487e-05, +-9.862090984850254360e-05, +-9.866835192812871316e-05, +-9.871562966426185835e-05, +-9.876274299370855082e-05, +-9.880969185354843208e-05, +-9.885647618113124551e-05, +-9.890309591408632313e-05, +-9.894955099030918215e-05, +-9.899584134797067289e-05, +-9.904196692551498664e-05, +-9.908792766165919479e-05, +-9.913372349539143283e-05, +-9.917935436597938423e-05, +-9.922482021295831356e-05, +-9.927012097613841196e-05, +-9.931525659560379424e-05, +-9.936022701170992390e-05, +-9.940503216509267981e-05, +-9.944967199665701268e-05, +-9.949414644757542724e-05, +-9.953845545930718611e-05, +-9.958259897357674779e-05, +-9.962657693238310432e-05, +-9.967038927800535135e-05, +-9.971403595299047735e-05, +-9.975751690016219984e-05, +-9.980083206261836331e-05, +-9.984398138372854042e-05, +-9.988696480714395244e-05, +-9.992978227678586830e-05, +-9.997243373684336842e-05, +-1.000149191317939446e-04, +-1.000572384063799590e-04, +-1.000993915056201374e-04, +-1.001413783748150704e-04, +-1.001831989595287290e-04, +-1.002248532056058381e-04, +-1.002663410591703858e-04, +-1.003076624666157169e-04, +-1.003488173746101164e-04, +-1.003898057301049677e-04, +-1.004306274803133539e-04, +-1.004712825727377721e-04, +-1.005117709551475686e-04, +-1.005520925755880735e-04, +-1.005922473823884881e-04, +-1.006322353241412173e-04, +-1.006720563497205857e-04, +-1.007117104082803167e-04, +-1.007511974492443578e-04, +-1.007905174223125042e-04, +-1.008296702774681111e-04, +-1.008686559649574118e-04, +-1.009074744353153356e-04, +-1.009461256393462902e-04, +-1.009846095281324423e-04, +-1.010229260530312378e-04, +-1.010610751656776239e-04, +-1.010990568179809186e-04, +-1.011368709621316553e-04, +-1.011745175505917292e-04, +-1.012119965360994801e-04, +-1.012493078716774714e-04, +-1.012864515106132998e-04, +-1.013234274064773354e-04, +-1.013602355131195911e-04, +-1.013968757846622011e-04, +-1.014333481755051264e-04, +-1.014696526403259514e-04, +-1.015057891340770109e-04, +-1.015417576119928306e-04, +-1.015775580295796913e-04, +-1.016131903426232050e-04, +-1.016486545071855230e-04, +-1.016839504796062033e-04, +-1.017190782165005436e-04, +-1.017540376747653411e-04, +-1.017888288115709509e-04, +-1.018234515843657444e-04, +-1.018579059508755542e-04, +-1.018921918691046493e-04, +-1.019263092973317239e-04, +-1.019602581941188421e-04, +-1.019940385183008532e-04, +-1.020276502289914090e-04, +-1.020610932855815545e-04, +-1.020943676477397821e-04, +-1.021274732754154331e-04, +-1.021604101288321384e-04, +-1.021931781684921013e-04, +-1.022257773551764223e-04, +-1.022582076499430938e-04, +-1.022904690141269182e-04, +-1.023225614093455397e-04, +-1.023544847974900378e-04, +-1.023862391407305794e-04, +-1.024178244015158359e-04, +-1.024492405425726712e-04, +-1.024804875269044074e-04, +-1.025115653177976956e-04, +-1.025424738788122299e-04, +-1.025732131737879432e-04, +-1.026037831668429886e-04, +-1.026341838223722208e-04, +-1.026644151050534851e-04, +-1.026944769798405696e-04, +-1.027243694119606441e-04, +-1.027540923669283682e-04, +-1.027836458105315119e-04, +-1.028130297088359024e-04, +-1.028422440281905335e-04, +-1.028712887352189868e-04, +-1.029001637968243645e-04, +-1.029288691801888428e-04, +-1.029574048527721940e-04, +-1.029857707823167472e-04, +-1.030139669368406390e-04, +-1.030419932846373120e-04, +-1.030698497942866550e-04, +-1.030975364346425210e-04, +-1.031250531748372271e-04, +-1.031523999842881676e-04, +-1.031795768326811309e-04, +-1.032065836899911709e-04, +-1.032334205264667229e-04, +-1.032600873126365289e-04, +-1.032865840193072666e-04, +-1.033129106175695251e-04, +-1.033390670787845514e-04, +-1.033650533746015835e-04, +-1.033908694769430919e-04, +-1.034165153580113256e-04, +-1.034419909902936651e-04, +-1.034672963465474573e-04, +-1.034924313998138119e-04, +-1.035173961234167204e-04, +-1.035421904909534884e-04, +-1.035668144763028122e-04, +-1.035912680536264872e-04, +-1.036155511973570339e-04, +-1.036396638822152894e-04, +-1.036636060831968003e-04, +-1.036873777755770951e-04, +-1.037109789349114399e-04, +-1.037344095370347030e-04, +-1.037576695580599319e-04, +-1.037807589743826086e-04, +-1.038036777626748767e-04, +-1.038264258998879667e-04, +-1.038490033632579428e-04, +-1.038714101302922041e-04, +-1.038936461787824819e-04, +-1.039157114868015190e-04, +-1.039376060326978660e-04, +-1.039593297951020334e-04, +-1.039808827529228738e-04, +-1.040022648853484625e-04, +-1.040234761718495532e-04, +-1.040445165921728834e-04, +-1.040653861263466225e-04, +-1.040860847546781488e-04, +-1.041066124577543075e-04, +-1.041269692164405972e-04, +-1.041471550118857779e-04, +-1.041671698255146474e-04, +-1.041870136390330424e-04, +-1.042066864344262525e-04, +-1.042261881939592782e-04, +-1.042455189001755428e-04, +-1.042646785359021785e-04, +-1.042836670842415690e-04, +-1.043024845285777470e-04, +-1.043211308525745639e-04, +-1.043396060401737929e-04, +-1.043579100756006583e-04, +-1.043760429433566664e-04, +-1.043940046282243889e-04, +-1.044117951152654039e-04, +-1.044294143898220298e-04, +-1.044468624375146152e-04, +-1.044641392442462278e-04, +-1.044812447961973963e-04, +-1.044981790798280214e-04, +-1.045149420818787577e-04, +-1.045315337893692114e-04, +-1.045479541896001904e-04, +-1.045642032701512506e-04, +-1.045802810188810897e-04, +-1.045961874239285358e-04, +-1.046119224737125886e-04, +-1.046274861569304539e-04, +-1.046428784625620163e-04, +-1.046580993798646618e-04, +-1.046731488983736170e-04, +-1.046880270079082097e-04, +-1.047027336985644429e-04, +-1.047172689607179082e-04, +-1.047316327850270247e-04, +-1.047458251624239320e-04, +-1.047598460841266468e-04, +-1.047736955416292507e-04, +-1.047873735267055900e-04, +-1.048008800314110378e-04, +-1.048142150480797021e-04, +-1.048273785693224332e-04, +-1.048403705880346034e-04, +-1.048531910973874196e-04, +-1.048658400908326259e-04, +-1.048783175621035337e-04, +-1.048906235052087335e-04, +-1.049027579144409171e-04, +-1.049147207843693973e-04, +-1.049265121098431566e-04, +-1.049381318859914981e-04, +-1.049495801082242486e-04, +-1.049608567722266764e-04, +-1.049719618739682465e-04, +-1.049828954096951528e-04, +-1.049936573759325408e-04, +-1.050042477694881671e-04, +-1.050146665874446061e-04, +-1.050249138271659727e-04, +-1.050349894862974339e-04, +-1.050448935627607640e-04, +-1.050546260547576102e-04, +-1.050641869607707674e-04, +-1.050735762795587018e-04, +-1.050827940101626537e-04, +-1.050918401519010257e-04, +-1.051007147043712400e-04, +-1.051094176674521505e-04, +-1.051179490412987847e-04, +-1.051263088263466801e-04, +-1.051344970233108409e-04, +-1.051425136331844235e-04, +-1.051503586572396983e-04, +-1.051580320970300154e-04, +-1.051655339543837870e-04, +-1.051728642314109788e-04, +-1.051800229305009828e-04, +-1.051870100543202721e-04, +-1.051938256058155456e-04, +-1.052004695882113834e-04, +-1.052069420050111542e-04, +-1.052132428599988320e-04, +-1.052193721572346186e-04, +-1.052253299010591308e-04, +-1.052311160960909614e-04, +-1.052367307472274518e-04, +-1.052421738596445017e-04, +-1.052474454387971795e-04, +-1.052525454904187056e-04, +-1.052574740205202222e-04, +-1.052622310353925413e-04, +-1.052668165416038816e-04, +-1.052712305460021453e-04, +-1.052754730557122078e-04, +-1.052795440781382482e-04, +-1.052834436209624624e-04, +-1.052871716921450899e-04, +-1.052907282999246305e-04, +-1.052941134528190509e-04, +-1.052973271596228976e-04, +-1.053003694294096419e-04, +-1.053032402715305544e-04, +-1.053059396956153293e-04, +-1.053084677115710807e-04, +-1.053108243295836847e-04, +-1.053130095601163022e-04, +-1.053150234139107609e-04, +-1.053168659019858348e-04, +-1.053185370356388427e-04, +-1.053200368264444831e-04, +-1.053213652862553218e-04, +-1.053225224272016431e-04, +-1.053235082616916937e-04, +-1.053243228024107339e-04, +-1.053249660623218102e-04, +-1.053254380546656872e-04, +-1.053257387929606721e-04, +-1.053258682910023972e-04, +-1.053258265628638339e-04, +-1.053256136228945876e-04, +-1.053252294857229715e-04, +-1.053246741662538382e-04, +-1.053239476796692301e-04, +-1.053230500414283657e-04, +-1.053219812672671386e-04, +-1.053207413731994859e-04, +-1.053193303755154911e-04, +-1.053177482907831049e-04, +-1.053159951358458555e-04, +-1.053140709278256262e-04, +-1.053119756841197960e-04, +-1.053097094224031101e-04, +-1.053072721606273951e-04, +-1.053046639170202308e-04, +-1.053018847100870101e-04, +-1.052989345586082155e-04, +-1.052958134816420882e-04, +-1.052925214985224331e-04, +-1.052890586288600416e-04, +-1.052854248925416615e-04, +-1.052816203097305532e-04, +-1.052776449008659062e-04, +-1.052734986866634494e-04, +-1.052691816881151529e-04, +-1.052646939264879677e-04, +-1.052600354233262648e-04, +-1.052552062004492877e-04, +-1.052502062799526972e-04, +-1.052450356842076770e-04, +-1.052396944358613537e-04, +-1.052341825578367564e-04, +-1.052285000733321524e-04, +-1.052226470058213319e-04, +-1.052166233790541365e-04, +-1.052104292170551582e-04, +-1.052040645441249726e-04, +-1.051975293848392718e-04, +-1.051908237640488775e-04, +-1.051839477068801886e-04, +-1.051769012387342053e-04, +-1.051696843852876134e-04, +-1.051622971724914152e-04, +-1.051547396265725833e-04, +-1.051470117740312414e-04, +-1.051391136416444320e-04, +-1.051310452564624572e-04, +-1.051228066458107354e-04, +-1.051143978372897199e-04, +-1.051058188587732187e-04, +-1.050970697384111588e-04, +-1.050881505046260763e-04, +-1.050790611861169926e-04, +-1.050698018118551718e-04, +-1.050603724110873337e-04, +-1.050507730133335116e-04, +-1.050410036483880147e-04, +-1.050310643463200927e-04, +-1.050209551374714414e-04, +-1.050106760524588325e-04, +-1.050002271221715789e-04, +-1.049896083777740826e-04, +-1.049788198507027451e-04, +-1.049678615726696668e-04, +-1.049567335756578900e-04, +-1.049454358919264682e-04, +-1.049339685540051122e-04, +-1.049223315946991775e-04, +-1.049105250470853956e-04, +-1.048985489445147334e-04, +-1.048864033206110922e-04, +-1.048740882092707923e-04, +-1.048616036446628312e-04, +-1.048489496612295066e-04, +-1.048361262936858200e-04, +-1.048231335770193279e-04, +-1.048099715464905618e-04, +-1.047966402376314968e-04, +-1.047831396862470692e-04, +-1.047694699284144318e-04, +-1.047556310004836306e-04, +-1.047416229390753695e-04, +-1.047274457810845063e-04, +-1.047130995636755670e-04, +-1.046985843242864456e-04, +-1.046839001006263578e-04, +-1.046690469306767353e-04, +-1.046540248526901551e-04, +-1.046388339051908413e-04, +-1.046234741269737295e-04, +-1.046079455571080180e-04, +-1.045922482349301064e-04, +-1.045763822000501963e-04, +-1.045603474923502445e-04, +-1.045441441519799652e-04, +-1.045277722193628062e-04, +-1.045112317351939302e-04, +-1.044945227404362164e-04, +-1.044776452763246789e-04, +-1.044605993843664800e-04, +-1.044433851063351567e-04, +-1.044260024842801895e-04, +-1.044084515605166473e-04, +-1.043907323776321406e-04, +-1.043728449784845714e-04, +-1.043547894062000190e-04, +-1.043365657041761150e-04, +-1.043181739160815413e-04, +-1.042996140858515309e-04, +-1.042808862576930721e-04, +-1.042619904760829570e-04, +-1.042429267857650438e-04, +-1.042236952317565586e-04, +-1.042042958593416581e-04, +-1.041847287140724732e-04, +-1.041649938417725784e-04, +-1.041450912885338474e-04, +-1.041250211007151388e-04, +-1.041047833249484489e-04, +-1.040843780081299397e-04, +-1.040638051974266884e-04, +-1.040430649402748032e-04, +-1.040221572843758188e-04, +-1.040010822777036618e-04, +-1.039798399684985529e-04, +-1.039584304052672091e-04, +-1.039368536367865040e-04, +-1.039151097121012444e-04, +-1.038931986805226933e-04, +-1.038711205916315652e-04, +-1.038488754952737974e-04, +-1.038264634415644535e-04, +-1.038038844808862864e-04, +-1.037811386638881123e-04, +-1.037582260414871010e-04, +-1.037351466648675562e-04, +-1.037119005854787740e-04, +-1.036884878550390818e-04, +-1.036649085255325858e-04, +-1.036411626492105529e-04, +-1.036172502785900288e-04, +-1.035931714664564126e-04, +-1.035689262658581039e-04, +-1.035445147301123844e-04, +-1.035199369128020027e-04, +-1.034951928677758383e-04, +-1.034702826491487663e-04, +-1.034452063112997598e-04, +-1.034199639088754136e-04, +-1.033945554967875997e-04, +-1.033689811302132235e-04, +-1.033432408645947113e-04, +-1.033173347556406882e-04, +-1.032912628593213159e-04, +-1.032650252318758553e-04, +-1.032386219298068791e-04, +-1.032120530098815868e-04, +-1.031853185291320212e-04, +-1.031584185448557872e-04, +-1.031313531146118634e-04, +-1.031041222962265658e-04, +-1.030767261477893597e-04, +-1.030491647276538084e-04, +-1.030214380944385086e-04, +-1.029935463070228617e-04, +-1.029654894245520344e-04, +-1.029372675064377712e-04, +-1.029088806123491795e-04, +-1.028803288022228527e-04, +-1.028516121362588182e-04, +-1.028227306749168512e-04, +-1.027936844789230207e-04, +-1.027644736092652572e-04, +-1.027350981271940854e-04, +-1.027055580942241007e-04, +-1.026758535721291449e-04, +-1.026459846229467243e-04, +-1.026159513089812620e-04, +-1.025857536927919688e-04, +-1.025553918372048505e-04, +-1.025248658053073004e-04, +-1.024941756604458092e-04, +-1.024633214662297459e-04, +-1.024323032865354641e-04, +-1.024011211854910966e-04, +-1.023697752274931022e-04, +-1.023382654771978100e-04, +-1.023065919995179353e-04, +-1.022747548596358212e-04, +-1.022427541229860911e-04, +-1.022105898552688351e-04, +-1.021782621224445145e-04, +-1.021457709907299776e-04, +-1.021131165266058182e-04, +-1.020802987968156845e-04, +-1.020473178683559796e-04, +-1.020141738084878144e-04, +-1.019808666847320613e-04, +-1.019473965648644206e-04, +-1.019137635169288785e-04, +-1.018799676092195332e-04, +-1.018460089102951366e-04, +-1.018118874889720876e-04, +-1.017776034143271700e-04, +-1.017431567556904913e-04, +-1.017085475826601059e-04, +-1.016737759650834214e-04, +-1.016388419730714961e-04, +-1.016037456769939434e-04, +-1.015684871474729689e-04, +-1.015330664553966650e-04, +-1.014974836719071934e-04, +-1.014617388684013001e-04, +-1.014258321165382841e-04, +-1.013897634882318931e-04, +-1.013535330556552432e-04, +-1.013171408912387993e-04, +-1.012805870676657675e-04, +-1.012438716578809716e-04, +-1.012069947350840234e-04, +-1.011699563727318289e-04, +-1.011327566445373424e-04, +-1.010953956244712193e-04, +-1.010578733867560159e-04, +-1.010201900058751203e-04, +-1.009823455565657190e-04, +-1.009443401138209514e-04, +-1.009061737528896253e-04, +-1.008678465492779923e-04, +-1.008293585787422262e-04, +-1.007907099172987230e-04, +-1.007519006412174598e-04, +-1.007129308270231065e-04, +-1.006738005514968415e-04, +-1.006345098916692777e-04, +-1.005950589248307892e-04, +-1.005554477285240303e-04, +-1.005156763805463074e-04, +-1.004757449589482914e-04, +-1.004356535420365519e-04, +-1.003954022083664694e-04, +-1.003549910367517492e-04, +-1.003144201062579430e-04, +-1.002736894962039945e-04, +-1.002327992861616152e-04, +-1.001917495559577243e-04, +-1.001505403856663715e-04, +-1.001091718556197413e-04, +-1.000676440464005776e-04, +-1.000259570388441888e-04, +-9.998411091403981731e-05, +-9.994210575332330721e-05, +-9.989994163828632009e-05, +-9.985761865077685004e-05, +-9.981513687288474956e-05, +-9.977249638695791126e-05, +-9.972969727559515278e-05, +-9.968673962164193423e-05, +-9.964362350819916728e-05, +-9.960034901861775352e-05, +-9.955691623649809657e-05, +-9.951332524569373415e-05, +-9.946957613030322012e-05, +-9.942566897467810692e-05, +-9.938160386342606263e-05, +-9.933738088139359155e-05, +-9.929300011368418096e-05, +-9.924846164565063046e-05, +-9.920376556289003749e-05, +-9.915891195125257939e-05, +-9.911390089684201483e-05, +-9.906873248600087090e-05, +-9.902340680532753286e-05, +-9.897792394166876314e-05, +-9.893228398211278952e-05, +-9.888648701400878016e-05, +-9.884053312494117509e-05, +-9.879442240274921539e-05, +-9.874815493552099367e-05, +-9.870173081158541736e-05, +-9.865515011952351158e-05, +-9.860841294816858173e-05, +-9.856151938659009955e-05, +-9.851446952411217523e-05, +-9.846726345030539873e-05, +-9.841990125497930466e-05, +-9.837238302820322956e-05, +-9.832470886027989802e-05, +-9.827687884176506035e-05, +-9.822889306345917125e-05, +-9.818075161640832502e-05, +-9.813245459190376757e-05, +-9.808400208148466124e-05, +-9.803539417692916716e-05, +-9.798663097026679163e-05, +-9.793771255377156919e-05, +-9.788863901995501534e-05, +-9.783941046158450372e-05, +-9.779002697166614929e-05, +-9.774048864344623134e-05, +-9.769079557042108686e-05, +-9.764094784632895187e-05, +-9.759094556515204855e-05, +-9.754078882111776429e-05, +-9.749047770869123848e-05, +-9.744001232258643489e-05, +-9.738939275776078844e-05, +-9.733861910940592175e-05, +-9.728769147296909871e-05, +-9.723660994413315327e-05, +-9.718537461881967426e-05, +-9.713398559319864119e-05, +-9.708244296367923572e-05, +-9.703074682691373114e-05, +-9.697889727979470064e-05, +-9.692689441945904236e-05, +-9.687473834327803182e-05, +-9.682242914887132174e-05, +-9.676996693409586957e-05, +-9.671735179705120945e-05, +-9.666458383607811049e-05, +-9.661166314975161082e-05, +-9.655858983689385175e-05, +-9.650536399656425228e-05, +-9.645198572806262609e-05, +-9.639845513092773152e-05, +-9.634477230494080868e-05, +-9.629093735011526605e-05, +-9.623695036670994836e-05, +-9.618281145522133036e-05, +-9.612852071638370655e-05, +-9.607407825117263351e-05, +-9.601948416079487394e-05, +-9.596473854670287075e-05, +-9.590984151058437937e-05, +-9.585479315436469039e-05, +-9.579959358020702256e-05, +-9.574424289051424396e-05, +-9.568874118791964275e-05, +-9.563308857529824350e-05, +-9.557728515576873168e-05, +-9.552133103267269117e-05, +-9.546522630959741317e-05, +-9.540897109036661271e-05, +-9.535256547903301543e-05, +-9.529600957989209982e-05, +-9.523930349747324747e-05, +-9.518244733654088142e-05, +-9.512544120209786788e-05, +-9.506828519937433539e-05, +-9.501097943384059037e-05, +-9.495352401120871633e-05, +-9.489591903741120154e-05, +-9.483816461862443908e-05, +-9.478026086125896906e-05, +-9.472220787195214666e-05, +-9.466400575758286023e-05, +-9.460565462526032330e-05, +-9.454715458232831654e-05, +-9.448850573636258568e-05, +-9.442970819517558490e-05, +-9.437076206680185362e-05, +-9.431166745952668012e-05, +-9.425242448184987566e-05, +-9.419303324251359776e-05, +-9.413349385049222650e-05, +-9.407380641498463958e-05, +-9.401397104542589460e-05, +-9.395398785149060360e-05, +-9.389385694306956855e-05, +-9.383357843029404037e-05, +-9.377315242352745185e-05, +-9.371257903335229885e-05, +-9.365185837060061990e-05, +-9.359099054631595427e-05, +-9.352997567178290004e-05, +-9.346881385851549956e-05, +-9.340750521824741390e-05, +-9.334604986295687301e-05, +-9.328444790484481555e-05, +-9.322269945633442805e-05, +-9.316080463008648640e-05, +-9.309876353899050605e-05, +-9.303657629615421168e-05, +-9.297424301492832478e-05, +-9.291176380888511001e-05, +-9.284913879181837520e-05, +-9.278636807775776923e-05, +-9.272345178095837373e-05, +-9.266039001590152980e-05, +-9.259718289729890368e-05, +-9.253383054008146866e-05, +-9.247033305941353186e-05, +-9.240669057068698800e-05, +-9.234290318950891881e-05, +-9.227897103172845417e-05, +-9.221489421341226914e-05, +-9.215067285084774164e-05, +-9.208630706055510916e-05, +-9.202179695927785994e-05, +-9.195714266398366814e-05, +-9.189234429186859509e-05, +-9.182740196034437706e-05, +-9.176231578705523035e-05, +-9.169708588986759206e-05, +-9.163171238687058085e-05, +-9.156619539637828736e-05, +-9.150053503693031626e-05, +-9.143473142728168962e-05, +-9.136878468641852725e-05, +-9.130269493354705552e-05, +-9.123646228809637211e-05, +-9.117008686971790393e-05, +-9.110356879828800916e-05, +-9.103690819389667448e-05, +-9.097010517686441504e-05, +-9.090315986773025341e-05, +-9.083607238725490438e-05, +-9.076884285642233352e-05, +-9.070147139642979609e-05, +-9.063395812870311070e-05, +-9.056630317488638653e-05, +-9.049850665684381224e-05, +-9.043056869665942559e-05, +-9.036248941664035248e-05, +-9.029426893930431154e-05, +-9.022590738739732726e-05, +-9.015740488388215618e-05, +-9.008876155193972337e-05, +-9.001997751497016606e-05, +-8.995105289659551700e-05, +-8.988198782064672114e-05, +-8.981278241118187736e-05, +-8.974343679247391917e-05, +-8.967395108901348789e-05, +-8.960432542551238853e-05, +-8.953455992688902083e-05, +-8.946465471828675647e-05, +-8.939460992507347831e-05, +-8.932442567281589831e-05, +-8.925410208730922407e-05, +-8.918363929456469045e-05, +-8.911303742080027611e-05, +-8.904229659245917563e-05, +-8.897141693619668062e-05, +-8.890039857888301221e-05, +-8.882924164760383609e-05, +-8.875794626966267478e-05, +-8.868651257256511902e-05, +-8.861494068405255994e-05, +-8.854323073205937666e-05, +-8.847138284474538106e-05, +-8.839939715048466401e-05, +-8.832727377785559361e-05, +-8.825501285565549262e-05, +-8.818261451290390456e-05, +-8.811007887881474330e-05, +-8.803740608282698953e-05, +-8.796459625459162614e-05, +-8.789164952395926472e-05, +-8.781856602101441994e-05, +-8.774534587603135540e-05, +-8.767198921950753127e-05, +-8.759849618215249120e-05, +-8.752486689487346959e-05, +-8.745110148880759233e-05, +-8.737720009529275245e-05, +-8.730316284587098471e-05, +-8.722898987230367151e-05, +-8.715468130656201548e-05, +-8.708023728081370379e-05, +-8.700565792745551552e-05, +-8.693094337908277428e-05, +-8.685609376849417291e-05, +-8.678110922870573257e-05, +-8.670598989293964900e-05, +-8.663073589462536321e-05, +-8.655534736740360009e-05, +-8.647982444511303276e-05, +-8.640416726181002855e-05, +-8.632837595175729207e-05, +-8.625245064941210150e-05, +-8.617639148945773701e-05, +-8.610019860677401750e-05, +-8.602387213644085138e-05, +-8.594741221375329344e-05, +-8.587081897421005227e-05, +-8.579409255351418150e-05, +-8.571723308757753853e-05, +-8.564024071250795028e-05, +-8.556311556462695351e-05, +-8.548585778045792274e-05, +-8.540846749672836066e-05, +-8.533094485036987102e-05, +-8.525328997852105889e-05, +-8.517550301851488609e-05, +-8.509758410789700783e-05, +-8.501953338441270804e-05, +-8.494135098601063988e-05, +-8.486303705084213454e-05, +-8.478459171726396596e-05, +-8.470601512382496098e-05, +-8.462730740928621964e-05, +-8.454846871260695282e-05, +-8.446949917294810080e-05, +-8.439039892967517922e-05, +-8.431116812234376438e-05, +-8.423180689072093331e-05, +-8.415231537477107430e-05, +-8.407269371465831277e-05, +-8.399294205074642997e-05, +-8.391306052360360636e-05, +-8.383304927398594177e-05, +-8.375290844285926135e-05, +-8.367263817138588836e-05, +-8.359223860092587744e-05, +-8.351170987303815300e-05, +-8.343105212948324684e-05, +-8.335026551220939327e-05, +-8.326935016337318315e-05, +-8.318830622532476455e-05, +-8.310713384061207108e-05, +-8.302583315198315301e-05, +-8.294440430237224519e-05, +-8.286284743491748029e-05, +-8.278116269296353143e-05, +-8.269935022003030596e-05, +-8.261741015984700289e-05, +-8.253534265633892628e-05, +-8.245314785361555906e-05, +-8.237082589599224703e-05, +-8.228837692797556216e-05, +-8.220580109426651452e-05, +-8.212309853976406239e-05, +-8.204026940955032646e-05, +-8.195731384890824877e-05, +-8.187423200332512991e-05, +-8.179102401846030624e-05, +-8.170769004017995282e-05, +-8.162423021454312424e-05, +-8.154064468778698244e-05, +-8.145693360636288701e-05, +-8.137309711690294764e-05, +-8.128913536622398137e-05, +-8.120504850134469725e-05, +-8.112083666947564038e-05, +-8.103650001800362000e-05, +-8.095203869453105249e-05, +-8.086745284682604748e-05, +-8.078274262286130349e-05, +-8.069790817079929512e-05, +-8.061294963897754138e-05, +-8.052786717594484522e-05, +-8.044266093042845567e-05, +-8.035733105133680552e-05, +-8.027187768777851193e-05, +-8.018630098905061285e-05, +-8.010060110462253438e-05, +-8.001477818417860504e-05, +-7.992883237756431998e-05, +-7.984276383482721547e-05, +-7.975657270619850513e-05, +-7.967025914209606159e-05, +-7.958382329312445704e-05, +-7.949726531007831080e-05, +-7.941058534392694780e-05, +-7.932378354583673316e-05, +-7.923686006715960676e-05, +-7.914981505941763335e-05, +-7.906264867434084122e-05, +-7.897536106383203980e-05, +-7.888795237997165799e-05, +-7.880042277503500998e-05, +-7.871277240147828201e-05, +-7.862500141194078208e-05, +-7.853710995924914119e-05, +-7.844909819640201259e-05, +-7.836096627659212171e-05, +-7.827271435319503113e-05, +-7.818434257975305371e-05, +-7.809585111001389089e-05, +-7.800724009789553157e-05, +-7.791850969748947769e-05, +-7.782966006308081547e-05, +-7.774069134913088176e-05, +-7.765160371028260371e-05, +-7.756239730135902155e-05, +-7.747307227736734082e-05, +-7.738362879348322496e-05, +-7.729406700507331963e-05, +-7.720438706768033136e-05, +-7.711458913702543992e-05, +-7.702467336901344826e-05, +-7.693463991971574701e-05, +-7.684448894539344860e-05, +-7.675422060248252021e-05, +-7.666383504759612826e-05, +-7.657333243752522127e-05, +-7.648271292924202632e-05, +-7.639197667988394873e-05, +-7.630112384677677391e-05, +-7.621015458741924465e-05, +-7.611906905948589356e-05, +-7.602786742083140700e-05, +-7.593654982947396900e-05, +-7.584511644361914085e-05, +-7.575356742164361158e-05, +-7.566190292209933152e-05, +-7.557012310371210282e-05, +-7.547822812538664808e-05, +-7.538621814618938510e-05, +-7.529409332536843042e-05, +-7.520185382235762442e-05, +-7.510949979673969552e-05, +-7.501703140828622663e-05, +-7.492444881694247628e-05, +-7.483175218281271481e-05, +-7.473894166618610968e-05, +-7.464601742751940535e-05, +-7.455297962744083997e-05, +-7.445982842675422466e-05, +-7.436656398642175895e-05, +-7.427318646758532174e-05, +-7.417969603156861268e-05, +-7.408609283984118367e-05, +-7.399237705405917783e-05, +-7.389854883604815843e-05, +-7.380460834778666964e-05, +-7.371055575145081084e-05, +-7.361639120935688230e-05, +-7.352211488400646087e-05, +-7.342772693806482441e-05, +-7.333322753436913744e-05, +-7.323861683590854256e-05, +-7.314389500586737940e-05, +-7.304906220756903650e-05, +-7.295411860451983446e-05, +-7.285906436039300675e-05, +-7.276389963901110861e-05, +-7.266862460438775883e-05, +-7.257323942068969261e-05, +-7.247774425224122040e-05, +-7.238213926354336407e-05, +-7.228642461926302839e-05, +-7.219060048421444768e-05, +-7.209466702340546764e-05, +-7.199862440197856480e-05, +-7.190247278525700638e-05, +-7.180621233872326115e-05, +-7.170984322802275346e-05, +-7.161336561896375482e-05, +-7.151677967752180206e-05, +-7.142008556982152331e-05, +-7.132328346216294356e-05, +-7.122637352100703759e-05, +-7.112935591295987351e-05, +-7.103223080481401580e-05, +-7.093499836350998186e-05, +-7.083765875614063303e-05, +-7.074021214997219462e-05, +-7.064265871242583793e-05, +-7.054499861108322334e-05, +-7.044723201368961729e-05, +-7.034935908813642316e-05, +-7.025138000248710719e-05, +-7.015329492495863154e-05, +-7.005510402392771559e-05, +-6.995680746792804405e-05, +-6.985840542565552541e-05, +-6.975989806595059230e-05, +-6.966128555782422234e-05, +-6.956256807043953384e-05, +-6.946374577311600061e-05, +-6.936481883533025155e-05, +-6.926578742671836105e-05, +-6.916665171705993834e-05, +-6.906741187630234579e-05, +-6.896806807454420555e-05, +-6.886862048203870634e-05, +-6.876906926919822485e-05, +-6.866941460657615185e-05, +-6.856965666489325177e-05, +-6.846979561501906873e-05, +-6.836983162797717129e-05, +-6.826976487494381080e-05, +-6.816959552725263764e-05, +-6.806932375637677127e-05, +-6.796894973395430604e-05, +-6.786847363177143835e-05, +-6.776789562176585471e-05, +-6.766721587603079756e-05, +-6.756643456679754182e-05, +-6.746555186646145642e-05, +-6.736456794756387099e-05, +-6.726348298279608744e-05, +-6.716229714499973231e-05, +-6.706101060717028042e-05, +-6.695962354243913844e-05, +-6.685813612409570840e-05, +-6.675654852559142636e-05, +-6.665486092049956559e-05, +-6.655307348255892991e-05, +-6.645118638565661491e-05, +-6.634919980380977978e-05, +-6.624711391121279656e-05, +-6.614492888217703625e-05, +-6.604264489117771990e-05, +-6.594026211283655783e-05, +-6.583778072190785830e-05, +-6.573520089330105176e-05, +-6.563252280208364538e-05, +-6.552974662344221879e-05, +-6.542687253272615818e-05, +-6.532390070542873687e-05, +-6.522083131717006630e-05, +-6.511766454374565475e-05, +-6.501440056106318470e-05, +-6.491103954519153246e-05, +-6.480758167233871807e-05, +-6.470402711885923734e-05, +-6.460037606123268943e-05, +-6.449662867611225426e-05, +-6.439278514026144289e-05, +-6.428884563060315764e-05, +-6.418481032420204674e-05, +-6.408067939824520546e-05, +-6.397645303008783464e-05, +-6.387213139721198678e-05, +-6.376771467723092994e-05, +-6.366320304791064206e-05, +-6.355859668715696314e-05, +-6.345389577299720451e-05, +-6.334910048362868038e-05, +-6.324421099735585126e-05, +-6.313922749263976353e-05, +-6.303415014807892689e-05, +-6.292897914239180442e-05, +-6.282371465446138690e-05, +-6.271835686329422350e-05, +-6.261290594802399964e-05, +-6.250736208793571471e-05, +-6.240172546244897181e-05, +-6.229599625110214837e-05, +-6.219017463359600821e-05, +-6.208426078975347762e-05, +-6.197825489952254563e-05, +-6.187215714300006220e-05, +-6.176596770041215489e-05, +-6.165968675211969043e-05, +-6.155331447862152743e-05, +-6.144685106053603065e-05, +-6.134029667862865045e-05, +-6.123365151379280013e-05, +-6.112691574705488397e-05, +-6.102008955957296225e-05, +-6.091317313264226716e-05, +-6.080616664767512472e-05, +-6.069907028622943543e-05, +-6.059188422998911119e-05, +-6.048460866076917102e-05, +-6.037724376051944097e-05, +-6.026978971130559406e-05, +-6.016224669533755642e-05, +-6.005461489494961895e-05, +-5.994689449260539075e-05, +-5.983908567089737225e-05, +-5.973118861255112934e-05, +-5.962320350040621825e-05, +-5.951513051744495073e-05, +-5.940696984677144187e-05, +-5.929872167161790526e-05, +-5.919038617534333837e-05, +-5.908196354143799490e-05, +-5.897345395350441801e-05, +-5.886485759528550083e-05, +-5.875617465064488952e-05, +-5.864740530357185537e-05, +-5.853854973818545547e-05, +-5.842960813871569465e-05, +-5.832058068953061025e-05, +-5.821146757511828110e-05, +-5.810226898009041219e-05, +-5.799298508918243633e-05, +-5.788361608725766115e-05, +-5.777416215928801783e-05, +-5.766462349038272464e-05, +-5.755500026576812077e-05, +-5.744529267079278922e-05, +-5.733550089092702147e-05, +-5.722562511176737787e-05, +-5.711566551901198143e-05, +-5.700562229851372501e-05, +-5.689549563621214956e-05, +-5.678528571818612956e-05, +-5.667499273063441158e-05, +-5.656461685986084883e-05, +-5.645415829229826713e-05, +-5.634361721451242906e-05, +-5.623299381315915372e-05, +-5.612228827503173029e-05, +-5.601150078704126683e-05, +-5.590063153619725597e-05, +-5.578968070966049754e-05, +-5.567864849467459731e-05, +-5.556753507861981117e-05, +-5.545634064899203873e-05, +-5.534506539338899297e-05, +-5.523370949953428983e-05, +-5.512227315528085670e-05, +-5.501075654856811320e-05, +-5.489915986746935758e-05, +-5.478748330017269155e-05, +-5.467572703496048143e-05, +-5.456389126025855380e-05, +-5.445197616459175003e-05, +-5.433998193658819527e-05, +-5.422790876500328648e-05, +-5.411575683870555709e-05, +-5.400352634665581971e-05, +-5.389121747796124745e-05, +-5.377883042180645257e-05, +-5.366636536750694442e-05, +-5.355382250448924785e-05, +-5.344120202227085230e-05, +-5.332850411050900087e-05, +-5.321572895895667845e-05, +-5.310287675746611514e-05, +-5.298994769601447498e-05, +-5.287694196468238877e-05, +-5.276385975365973426e-05, +-5.265070125324976285e-05, +-5.253746665384877081e-05, +-5.242415614597576578e-05, +-5.231076992025263941e-05, +-5.219730816740799593e-05, +-5.208377107827774849e-05, +-5.197015884380899519e-05, +-5.185647165504049663e-05, +-5.174270970313132596e-05, +-5.162887317934179373e-05, +-5.151496227503698507e-05, +-5.140097718168711206e-05, +-5.128691809087198607e-05, +-5.117278519426083126e-05, +-5.105857868364160548e-05, +-5.094429875090124749e-05, +-5.082994558802997304e-05, +-5.071551938712576084e-05, +-5.060102034037464034e-05, +-5.048644864007972128e-05, +-5.037180447864116306e-05, +-5.025708804856145342e-05, +-5.014229954244359919e-05, +-5.002743915299749601e-05, +-4.991250707301826456e-05, +-4.979750349541670990e-05, +-4.968242861319878938e-05, +-4.956728261947020695e-05, +-4.945206570743598628e-05, +-4.933677807040576973e-05, +-4.922141990177250707e-05, +-4.910599139504315193e-05, +-4.899049274381724880e-05, +-4.887492414179280128e-05, +-4.875928578277010744e-05, +-4.864357786063153269e-05, +-4.852780056937165736e-05, +-4.841195410307655488e-05, +-4.829603865592822348e-05, +-4.818005442220497919e-05, +-4.806400159628573170e-05, +-4.794788037262922182e-05, +-4.783169094580457572e-05, +-4.771543351047051533e-05, +-4.759910826137994584e-05, +-4.748271539337971183e-05, +-4.736625510141565903e-05, +-4.724972758050613247e-05, +-4.713313302579861917e-05, +-4.701647163249733706e-05, +-4.689974359591930850e-05, +-4.678294911147352333e-05, +-4.666608837464567868e-05, +-4.654916158102247864e-05, +-4.643216892629759745e-05, +-4.631511060622441495e-05, +-4.619798681666721136e-05, +-4.608079775358043861e-05, +-4.596354361298784271e-05, +-4.584622459103815107e-05, +-4.572884088393365748e-05, +-4.561139268798587552e-05, +-4.549388019959445766e-05, +-4.537630361523218577e-05, +-4.525866313146946062e-05, +-4.514095894498000740e-05, +-4.502319125249344873e-05, +-4.490536025084713626e-05, +-4.478746613696471058e-05, +-4.466950910783511512e-05, +-4.455148936056462433e-05, +-4.443340709232882705e-05, +-4.431526250037876583e-05, +-4.419705578206545342e-05, +-4.407878713482468042e-05, +-4.396045675615527020e-05, +-4.384206484367675854e-05, +-4.372361159505528831e-05, +-4.360509720806143142e-05, +-4.348652188054845727e-05, +-4.336788581043138059e-05, +-4.324918919573845426e-05, +-4.313043223456458245e-05, +-4.301161512507544068e-05, +-4.289273806553373374e-05, +-4.277380125427774211e-05, +-4.265480488972651257e-05, +-4.253574917038428305e-05, +-4.241663429481953049e-05, +-4.229746046169639910e-05, +-4.217822786975254878e-05, +-4.205893671780469134e-05, +-4.193958720474821774e-05, +-4.182017952956187381e-05, +-4.170071389128676053e-05, +-4.158119048905725414e-05, +-4.146160952207962705e-05, +-4.134197118963713681e-05, +-4.122227569108982280e-05, +-4.110252322587897857e-05, +-4.098271399350613867e-05, +-4.086284819356416134e-05, +-4.074292602571616114e-05, +-4.062294768970007609e-05, +-4.050291338533369576e-05, +-4.038282331249309231e-05, +-4.026267767114434705e-05, +-4.014247666132199507e-05, +-4.002222048313339598e-05, +-3.990190933675934377e-05, +-3.978154342245832905e-05, +-3.966112294054526839e-05, +-3.954064809142290550e-05, +-3.942011907556031695e-05, +-3.929953609349789946e-05, +-3.917889934584701080e-05, +-3.905820903329486224e-05, +-3.893746535658318007e-05, +-3.881666851653965428e-05, +-3.869581871405588857e-05, +-3.857491615009310597e-05, +-3.845396102568695998e-05, +-3.833295354192541688e-05, +-3.821189389997548127e-05, +-3.809078230108815631e-05, +-3.796961894655031194e-05, +-3.784840403773705181e-05, +-3.772713777609073399e-05, +-3.760582036310428105e-05, +-3.748445200035268964e-05, +-3.736303288947206476e-05, +-3.724156323216367196e-05, +-3.712004323019967006e-05, +-3.699847308540114252e-05, +-3.687685299966438253e-05, +-3.675518317496617173e-05, +-3.663346381331501148e-05, +-3.651169511680448589e-05, +-3.638987728759161166e-05, +-3.626801052787999232e-05, +-3.614609503994687582e-05, +-3.602413102614780986e-05, +-3.590211868886806281e-05, +-3.578005823057588516e-05, +-3.565794985380100167e-05, +-3.553579376111262917e-05, +-3.541359015517804381e-05, +-3.529133923868731028e-05, +-3.516904121441188978e-05, +-3.504669628518290172e-05, +-3.492430465387455577e-05, +-3.480186652343073516e-05, +-3.467938209687024823e-05, +-3.455685157723757862e-05, +-3.443427516765713598e-05, +-3.431165307131054873e-05, +-3.418898549141515620e-05, +-3.406627263128328740e-05, +-3.394351469424576373e-05, +-3.382071188371152338e-05, +-3.369786440313989962e-05, +-3.357497245605103588e-05, +-3.345203624599918054e-05, +-3.332905597663096957e-05, +-3.320603185160981018e-05, +-3.308296407467513247e-05, +-3.295985284962015655e-05, +-3.283669838027000515e-05, +-3.271350087053555462e-05, +-3.259026052436468651e-05, +-3.246697754574622452e-05, +-3.234365213873832034e-05, +-3.222028450744496026e-05, +-3.209687485602215877e-05, +-3.197342338868228173e-05, +-3.184993030967226752e-05, +-3.172639582330603111e-05, +-3.160282013394785541e-05, +-3.147920344598974506e-05, +-3.135554596390615148e-05, +-3.123184789220441129e-05, +-3.110810943542972689e-05, +-3.098433079819217661e-05, +-3.086051218514455636e-05, +-3.073665380098767865e-05, +-3.061275585046970850e-05, +-3.048881853839146593e-05, +-3.036484206958424376e-05, +-3.024082664894223892e-05, +-3.011677248140042786e-05, +-2.999267977193940824e-05, +-2.986854872559094188e-05, +-2.974437954741542033e-05, +-2.962017244253454338e-05, +-2.949592761610892692e-05, +-2.937164527334328672e-05, +-2.924732561948638091e-05, +-2.912296885983575332e-05, +-2.899857519971544637e-05, +-2.887414484450917762e-05, +-2.874967799963719549e-05, +-2.862517487056213391e-05, +-2.850063566279384384e-05, +-2.837606058186697394e-05, +-2.825144983337396428e-05, +-2.812680362294246774e-05, +-2.800212215624053392e-05, +-2.787740563897623980e-05, +-2.775265427690308366e-05, +-2.762786827579730492e-05, +-2.750304784148529752e-05, +-2.737819317984855317e-05, +-2.725330449677422181e-05, +-2.712838199820924708e-05, +-2.700342589013853328e-05, +-2.687843637856756422e-05, +-2.675341366955570515e-05, +-2.662835796919327871e-05, +-2.650326948360710785e-05, +-2.637814841896547272e-05, +-2.625299498145576254e-05, +-2.612780937731187201e-05, +-2.600259181281933774e-05, +-2.587734249426486865e-05, +-2.575206162799197906e-05, +-2.562674942037808493e-05, +-2.550140607781757677e-05, +-2.537603180675480650e-05, +-2.525062681366156309e-05, +-2.512519130504236830e-05, +-2.499972548743387011e-05, +-2.487422956741048064e-05, +-2.474870375155571254e-05, +-2.462314824652354141e-05, +-2.449756325895979781e-05, +-2.437194899556321118e-05, +-2.424630566306281782e-05, +-2.412063346820092870e-05, +-2.399493261776041415e-05, +-2.386920331857025695e-05, +-2.374344577745485235e-05, +-2.361766020128949214e-05, +-2.349184679697768105e-05, +-2.336600577142857523e-05, +-2.324013733161783648e-05, +-2.311424168450943074e-05, +-2.298831903711633331e-05, +-2.286236959647265125e-05, +-2.273639356963855652e-05, +-2.261039116370020465e-05, +-2.248436258577477632e-05, +-2.235830804298786492e-05, +-2.223222774250684967e-05, +-2.210612189152336545e-05, +-2.197999069723096817e-05, +-2.185383436688058840e-05, +-2.172765310772990923e-05, +-2.160144712704840448e-05, +-2.147521663214539914e-05, +-2.134896183034686073e-05, +-2.122268292900109809e-05, +-2.109638013548363356e-05, +-2.097005365717466508e-05, +-2.084370370149238173e-05, +-2.071733047587568421e-05, +-2.059093418776161656e-05, +-2.046451504464074172e-05, +-2.033807325400669908e-05, +-2.021160902336134423e-05, +-2.008512256024231482e-05, +-1.995861407220052321e-05, +-1.983208376680516073e-05, +-1.970553185164354522e-05, +-1.957895853432633533e-05, +-1.945236402246468781e-05, +-1.932574852370366779e-05, +-1.919911224569940947e-05, +-1.907245539612439136e-05, +-1.894577818267281668e-05, +-1.881908081303758086e-05, +-1.869236349494398676e-05, +-1.856562643612655301e-05, +-1.843886984433448236e-05, +-1.831209392733136021e-05, +-1.818529889290033163e-05, +-1.805848494882136363e-05, +-1.793165230290460130e-05, +-1.780480116296747760e-05, +-1.767793173684016828e-05, +-1.755104423237066724e-05, +-1.742413885740200479e-05, +-1.729721581980594259e-05, +-1.717027532745951762e-05, +-1.704331758825103241e-05, +-1.691634281007917408e-05, +-1.678935120085870987e-05, +-1.666234296849720042e-05, +-1.653531832092326026e-05, +-1.640827746609148748e-05, +-1.628122061193169938e-05, +-1.615414796640465706e-05, +-1.602705973747952419e-05, +-1.589995613311627246e-05, +-1.577283736129953234e-05, +-1.564570363001528621e-05, +-1.551855514725644175e-05, +-1.539139212102817850e-05, +-1.526421475932482376e-05, +-1.513702327015790304e-05, +-1.500981786156129840e-05, +-1.488259874154032826e-05, +-1.475536611812761602e-05, +-1.462812019936032514e-05, +-1.450086119326276115e-05, +-1.437358930788012925e-05, +-1.424630475125532395e-05, +-1.411900773143444493e-05, +-1.399169845646636165e-05, +-1.386437713440811915e-05, +-1.373704397329614569e-05, +-1.360969918120838768e-05, +-1.348234296618450227e-05, +-1.335497553628798720e-05, +-1.322759709958302289e-05, +-1.310020786411728960e-05, +-1.297280803794988726e-05, +-1.284539782915661590e-05, +-1.271797744577871324e-05, +-1.259054709587918572e-05, +-1.246310698751972521e-05, +-1.233565732873780181e-05, +-1.220819832760852099e-05, +-1.208073019216517360e-05, +-1.195325313046101334e-05, +-1.182576735054632594e-05, +-1.169827306044552533e-05, +-1.157077046821328994e-05, +-1.144325978188332904e-05, +-1.131574120947380717e-05, +-1.118821495901514541e-05, +-1.106068123853281989e-05, +-1.093314025602433600e-05, +-1.080559221951547988e-05, +-1.067803733700908305e-05, +-1.055047581649027916e-05, +-1.042290786595452040e-05, +-1.029533369338463476e-05, +-1.016775350675604211e-05, +-1.004016751404215654e-05, +-9.912575923191355523e-06, +-9.784978942160646120e-06, +-9.657376778898414286e-06, +-9.529769641321175514e-06, +-9.402157737370197294e-06, +-9.274541274960055413e-06, +-9.146920461983812717e-06, +-9.019295506341238857e-06, +-8.891666615915667658e-06, +-8.764033998579394411e-06, +-8.636397862198981687e-06, +-8.508758414612177694e-06, +-8.381115863661748458e-06, +-8.253470417172350444e-06, +-8.125822282955846531e-06, +-7.998171668811092559e-06, +-7.870518782529102537e-06, +-7.742863831870195696e-06, +-7.615207024597500025e-06, +-7.487548568454151845e-06, +-7.359888671168438986e-06, +-7.232227540453577176e-06, +-7.104565384012995525e-06, +-6.976902409517326024e-06, +-6.849238824638067181e-06, +-6.721574837024625192e-06, +-6.593910654309602810e-06, +-6.466246484114186480e-06, +-6.338582534024982527e-06, +-6.210919011627886615e-06, +-6.083256124484976689e-06, +-5.955594080139845045e-06, +-5.827933086117261216e-06, +-5.700273349928550625e-06, +-5.572615079048502777e-06, +-5.444958480949153475e-06, +-5.317303763076649804e-06, +-5.189651132856701640e-06, +-5.062000797694154741e-06, +-4.934352964978413457e-06, +-4.806707842060298939e-06, +-4.679065636285859308e-06, +-4.551426554973301558e-06, +-4.423790805418328712e-06, +-4.296158594899491378e-06, +-4.168530130655062896e-06, +-4.040905619911247237e-06, +-3.913285269887402651e-06, +-3.785669287744629309e-06, +-3.658057880642242258e-06, +-3.530451255714699943e-06, +-3.402849620054216308e-06, +-3.275253180744547676e-06, +-3.147662144837919143e-06, +-3.020076719360343947e-06, +-2.892497111317011023e-06, +-2.764923527669180057e-06, +-2.637356175362315691e-06, +-2.509795261331370038e-06, +-2.382240992449356353e-06, +-2.254693575583805468e-06, +-2.127153217573734970e-06, +-1.999620125212221919e-06, +-1.872094505274533662e-06, +-1.744576564523453125e-06, +-1.617066509657777943e-06, +-1.489564547368851438e-06, +-1.362070884317482240e-06, +-1.234585727110860523e-06, +-1.107109282364780835e-06, +-9.796417566236993369e-07, +-8.521833564229409637e-07, +-7.247342882656367276e-07, +-5.972947585996322240e-07, +-4.698649738740167571e-07, +-3.424451404876198727e-07, +-2.150354647943705086e-07, +-8.763615313137911527e-08, + 3.975258819844682920e-08, + 1.671305529494643030e-07, + 2.944975348711200742e-07, + 4.218533277878365482e-07, + 5.491977255368413032e-07, + 6.765305219969090424e-07, + 8.038515110830076574e-07, + 9.311604867466400587e-07, + 1.058457242970486111e-06, + 1.185741573791465115e-06, + 1.313013273266980276e-06, + 1.440272135492286478e-06, + 1.567517954623554461e-06, + 1.694750524821399136e-06, + 1.821969640302323072e-06, + 1.949175095333371716e-06, + 2.076366684204070982e-06, + 2.203544201249479039e-06, + 2.330707440844825865e-06, + 2.457856197400177363e-06, + 2.584990265383467032e-06, + 2.712109439286771350e-06, + 2.839213513649358389e-06, + 2.966302283052308734e-06, + 3.093375542118887749e-06, + 3.220433085509179205e-06, + 3.347474707943104667e-06, + 3.474500204166728102e-06, + 3.601509368975256634e-06, + 3.728501997207755060e-06, + 3.855477883747394028e-06, + 3.982436823516172178e-06, + 4.109378611497894025e-06, + 4.236303042704508027e-06, + 4.363209912199081076e-06, + 4.490099015090495232e-06, + 4.616970146528073297e-06, + 4.743823101724596085e-06, + 4.870657675922646417e-06, + 4.997473664417568799e-06, + 5.124270862552157673e-06, + 5.251049065716983528e-06, + 5.377808069345058288e-06, + 5.504547668934794135e-06, + 5.631267660016382234e-06, + 5.757967838174767654e-06, + 5.884647999044335084e-06, + 6.011307938309162093e-06, + 6.137947451697776000e-06, + 6.264566335006064417e-06, + 6.391164384063681927e-06, + 6.517741394756991118e-06, + 6.644297163023714425e-06, + 6.770831484847702001e-06, + 6.897344156281735541e-06, + 7.023834973419665131e-06, + 7.150303732391125459e-06, + 7.276750229412629689e-06, + 7.403174260731467079e-06, + 7.529575622648583037e-06, + 7.655954111535919577e-06, + 7.782309523802739834e-06, + 7.908641655918671591e-06, + 8.034950304408238836e-06, + 8.161235265845754157e-06, + 8.287496336877993807e-06, + 8.413733314196442133e-06, + 8.539945994531973904e-06, + 8.666134174705886347e-06, + 8.792297651573859453e-06, + 8.918436222048895320e-06, + 9.044549683124069458e-06, + 9.170637831816572406e-06, + 9.296700465218767182e-06, + 9.422737380492815707e-06, + 9.548748374842918148e-06, + 9.674733245532492440e-06, + 9.800691789906984880e-06, + 9.926623805332258649e-06, + 1.005252908927390151e-05, + 1.017840743923542626e-05, + 1.030425865278116100e-05, + 1.043008252755917148e-05, + 1.055587886124519941e-05, + 1.068164745159375380e-05, + 1.080738809643259845e-05, + 1.093310059363524879e-05, + 1.105878474113786512e-05, + 1.118444033696229699e-05, + 1.131006717915443442e-05, + 1.143566506586328693e-05, + 1.156123379527943642e-05, + 1.168677316566349237e-05, + 1.181228297534081148e-05, + 1.193776302270179410e-05, + 1.206321310619660214e-05, + 1.218863302435781553e-05, + 1.231402257576742838e-05, + 1.243938155907351863e-05, + 1.256470977301341948e-05, + 1.269000701635775589e-05, + 1.281527308796123949e-05, + 1.294050778675746779e-05, + 1.306571091173116179e-05, + 1.319088226194084620e-05, + 1.331602163651373331e-05, + 1.344112883464028505e-05, + 1.356620365559702868e-05, + 1.369124589871316504e-05, + 1.381625536338787347e-05, + 1.394123184911288688e-05, + 1.406617515541674008e-05, + 1.419108508191579164e-05, + 1.431596142830865380e-05, + 1.444080399434857922e-05, + 1.456561257986624782e-05, + 1.469038698476449657e-05, + 1.481512700901852786e-05, + 1.493983245267065789e-05, + 1.506450311585326617e-05, + 1.518913879875505142e-05, + 1.531373930164427080e-05, + 1.543830442486304443e-05, + 1.556283396882230199e-05, + 1.568732773402438157e-05, + 1.581178552102988021e-05, + 1.593620713048026283e-05, + 1.606059236309267509e-05, + 1.618494101966005855e-05, + 1.630925290104614635e-05, + 1.643352780820794357e-05, + 1.655776554216260136e-05, + 1.668196590401006327e-05, + 1.680612869492780688e-05, + 1.693025371616556504e-05, + 1.705434076906798234e-05, + 1.717838965504138094e-05, + 1.730240017557655588e-05, + 1.742637213224331006e-05, + 1.755030532669088790e-05, + 1.767419956064280166e-05, + 1.779805463591915926e-05, + 1.792187035440945755e-05, + 1.804564651806713079e-05, + 1.816938292895997289e-05, + 1.829307938921488370e-05, + 1.841673570104031539e-05, + 1.854035166674351809e-05, + 1.866392708869708540e-05, + 1.878746176936197003e-05, + 1.891095551128193740e-05, + 1.903440811707840893e-05, + 1.915781938947289480e-05, + 1.928118913125975684e-05, + 1.940451714530085862e-05, + 1.952780323457564202e-05, + 1.965104720212638526e-05, + 1.977424885108031375e-05, + 1.989740798467226678e-05, + 2.002052440618394826e-05, + 2.014359791902187410e-05, + 2.026662832665694151e-05, + 2.038961543265189991e-05, + 2.051255904065124084e-05, + 2.063545895440869595e-05, + 2.075831497772689780e-05, + 2.088112691453509684e-05, + 2.100389456882867983e-05, + 2.112661774469150783e-05, + 2.124929624631836255e-05, + 2.137192987796007897e-05, + 2.149451844397361850e-05, + 2.161706174881643456e-05, + 2.173955959701985536e-05, + 2.186201179320544866e-05, + 2.198441814210743417e-05, + 2.210677844851267982e-05, + 2.222909251733769359e-05, + 2.235136015356884337e-05, + 2.247358116228974660e-05, + 2.259575534867642861e-05, + 2.271788251799727521e-05, + 2.283996247560823848e-05, + 2.296199502697484607e-05, + 2.308397997763958704e-05, + 2.320591713323875088e-05, + 2.332780629952485016e-05, + 2.344964728231166504e-05, + 2.357143988752426227e-05, + 2.369318392119372662e-05, + 2.381487918942993724e-05, + 2.393652549844404117e-05, + 2.405812265454287645e-05, + 2.417967046412435749e-05, + 2.430116873369923705e-05, + 2.442261726985870551e-05, + 2.454401587929667464e-05, + 2.466536436880441079e-05, + 2.478666254527107360e-05, + 2.490791021567851859e-05, + 2.502910718712317778e-05, + 2.515025326678404512e-05, + 2.527134826194441487e-05, + 2.539239197998694838e-05, + 2.551338422839399603e-05, + 2.563432481474227440e-05, + 2.575521354672510269e-05, + 2.587605023212001206e-05, + 2.599683467881090749e-05, + 2.611756669478269076e-05, + 2.623824608811638158e-05, + 2.635887266701097438e-05, + 2.647944623975135954e-05, + 2.659996661473000061e-05, + 2.672043360044212655e-05, + 2.684084700548605026e-05, + 2.696120663855781189e-05, + 2.708151230847325933e-05, + 2.720176382413595580e-05, + 2.732196099455893169e-05, + 2.744210362885979884e-05, + 2.756219153625548879e-05, + 2.768222452608421464e-05, + 2.780220240777348033e-05, + 2.792212499086166300e-05, + 2.804199208499337807e-05, + 2.816180349991931659e-05, + 2.828155904549143747e-05, + 2.840125853168483789e-05, + 2.852090176856538308e-05, + 2.864048856631216963e-05, + 2.876001873521181988e-05, + 2.887949208565911212e-05, + 2.899890842815187466e-05, + 2.911826757331266650e-05, + 2.923756933185696615e-05, + 2.935681351461489973e-05, + 2.947599993252617909e-05, + 2.959512839663507044e-05, + 2.971419871811196658e-05, + 2.983321070822710178e-05, + 2.995216417834548314e-05, + 3.007105893997524598e-05, + 3.018989480471437890e-05, + 3.030867158427273981e-05, + 3.042738909049340799e-05, + 3.054604713529444204e-05, + 3.066464553074360860e-05, + 3.078318408900043842e-05, + 3.090166262234269115e-05, + 3.102008094315645854e-05, + 3.113843886396280874e-05, + 3.125673619735940879e-05, + 3.137497275609590376e-05, + 3.149314835301486842e-05, + 3.161126280107404688e-05, + 3.172931591336768434e-05, + 3.184730750307325205e-05, + 3.196523738350057523e-05, + 3.208310536808570059e-05, + 3.220091127036535654e-05, + 3.231865490399312817e-05, + 3.243633608276035523e-05, + 3.255395462053894045e-05, + 3.267151033135514988e-05, + 3.278900302933207556e-05, + 3.290643252871106890e-05, + 3.302379864387297072e-05, + 3.314110118928537829e-05, + 3.325833997955131933e-05, + 3.337551482940313976e-05, + 3.349262555367737054e-05, + 3.360967196733024534e-05, + 3.372665388545940490e-05, + 3.384357112325102861e-05, + 3.396042349602835934e-05, + 3.407721081924601139e-05, + 3.419393290846394964e-05, + 3.431058957936934298e-05, + 3.442718064777128560e-05, + 3.454370592959553186e-05, + 3.466016524090644458e-05, + 3.477655839787534314e-05, + 3.489288521680177413e-05, + 3.500914551410873413e-05, + 3.512533910634296785e-05, + 3.524146581016979104e-05, + 3.535752544239457128e-05, + 3.547351781993153682e-05, + 3.558944275982474912e-05, + 3.570530007924365085e-05, + 3.582108959547773295e-05, + 3.593681112595777149e-05, + 3.605246448822490749e-05, + 3.616804949995181608e-05, + 3.628356597893753611e-05, + 3.639901374310808687e-05, + 3.651439261051137904e-05, + 3.662970239933832959e-05, + 3.674494292789173160e-05, + 3.686011401460790443e-05, + 3.697521547805101519e-05, + 3.709024713691412231e-05, + 3.720520881001361220e-05, + 3.732010031631076815e-05, + 3.743492147488072818e-05, + 3.754967210493311886e-05, + 3.766435202580788107e-05, + 3.777896105696992353e-05, + 3.789349901803020377e-05, + 3.800796572871485549e-05, + 3.812236100888633726e-05, + 3.823668467853856036e-05, + 3.835093655779688206e-05, + 3.846511646691366034e-05, + 3.857922422628871825e-05, + 3.869325965643927081e-05, + 3.880722257801984048e-05, + 3.892111281181838791e-05, + 3.903493017875647454e-05, + 3.914867449988353670e-05, + 3.926234559640393642e-05, + 3.937594328962000696e-05, + 3.948946740100459270e-05, + 3.960291775214447410e-05, + 3.971629416476204501e-05, + 3.982959646072957666e-05, + 3.994282446204531779e-05, + 4.005597799082769419e-05, + 4.016905686936194969e-05, + 4.028206092004945298e-05, + 4.039498996542799922e-05, + 4.050784382819306727e-05, + 4.062062233114130557e-05, + 4.073332529724273327e-05, + 4.084595254958503936e-05, + 4.095850391139349805e-05, + 4.107097920604729964e-05, + 4.118337825705391584e-05, + 4.129570088804464782e-05, + 4.140794692282017623e-05, + 4.152011618530062015e-05, + 4.163220849954558125e-05, + 4.174422368977512992e-05, + 4.185616158031889517e-05, + 4.196802199566254980e-05, + 4.207980476044248427e-05, + 4.219150969942111399e-05, + 4.230313663750218014e-05, + 4.241468539975135624e-05, + 4.252615581134071672e-05, + 4.263754769762000965e-05, + 4.274886088406091515e-05, + 4.286009519627833648e-05, + 4.297125046004984789e-05, + 4.308232650126645147e-05, + 4.319332314597752417e-05, + 4.330424022038644708e-05, + 4.341507755082562811e-05, + 4.352583496377663430e-05, + 4.363651228586593630e-05, + 4.374710934385956870e-05, + 4.385762596468401444e-05, + 4.396806197539605046e-05, + 4.407841720320315103e-05, + 4.418869147545886634e-05, + 4.429888461966281570e-05, + 4.440899646345603907e-05, + 4.451902683464183401e-05, + 4.462897556115491695e-05, + 4.473884247108263966e-05, + 4.484862739266007645e-05, + 4.495833015426977346e-05, + 4.506795058443745927e-05, + 4.517748851185260410e-05, + 4.528694376533781821e-05, + 4.539631617387000735e-05, + 4.550560556657475529e-05, + 4.561481177272289501e-05, + 4.572393462174911632e-05, + 4.583297394322368172e-05, + 4.594192956687158293e-05, + 4.605080132256875294e-05, + 4.615958904034161877e-05, + 4.626829255036290020e-05, + 4.637691168297107796e-05, + 4.648544626864170983e-05, + 4.659389613800698690e-05, + 4.670226112185101735e-05, + 4.681054105111073440e-05, + 4.691873575687005522e-05, + 4.702684507038111094e-05, + 4.713486882303396353e-05, + 4.724280684637737507e-05, + 4.735065897211356966e-05, + 4.745842503209365271e-05, + 4.756610485833781093e-05, + 4.767369828300593051e-05, + 4.778120513841732278e-05, + 4.788862525704636709e-05, + 4.799595847152254467e-05, + 4.810320461462630514e-05, + 4.821036351930797905e-05, + 4.831743501865950731e-05, + 4.842441894593388227e-05, + 4.853131513454062799e-05, + 4.863812341804600348e-05, + 4.874484363016837456e-05, + 4.885147560480302851e-05, + 4.895801917596857383e-05, + 4.906447417787541439e-05, + 4.917084044487265738e-05, + 4.927711781146770352e-05, + 4.938330611234102610e-05, + 4.948940518232206097e-05, + 4.959541485638533737e-05, + 4.970133496969320221e-05, + 4.980716535754825075e-05, + 4.991290585541337076e-05, + 5.001855629893016717e-05, + 5.012411652386749639e-05, + 5.022958636618809049e-05, + 5.033496566199637321e-05, + 5.044025424755819244e-05, + 5.054545195931471835e-05, + 5.065055863385923467e-05, + 5.075557410793284931e-05, + 5.086049821846690702e-05, + 5.096533080253649064e-05, + 5.107007169737920493e-05, + 5.117472074041442111e-05, + 5.127927776919616158e-05, + 5.138374262145613589e-05, + 5.148811513509890254e-05, + 5.159239514817927689e-05, + 5.169658249891535514e-05, + 5.180067702570916841e-05, + 5.190467856709396336e-05, + 5.200858696180112462e-05, + 5.211240204870807208e-05, + 5.221612366685775617e-05, + 5.231975165547738071e-05, + 5.242328585393208040e-05, + 5.252672610176674383e-05, + 5.263007223870242894e-05, + 5.273332410461248338e-05, + 5.283648153954201277e-05, + 5.293954438370275783e-05, + 5.304251247746985531e-05, + 5.314538566139920560e-05, + 5.324816377620107910e-05, + 5.335084666275831736e-05, + 5.345343416212234178e-05, + 5.355592611551256415e-05, + 5.365832236431305942e-05, + 5.376062275009049578e-05, + 5.386282711456759874e-05, + 5.396493529964043742e-05, + 5.406694714737528712e-05, + 5.416886250000818890e-05, + 5.427068119994144619e-05, + 5.437240308976112115e-05, + 5.447402801221034972e-05, + 5.457555581020785441e-05, + 5.467698632684363453e-05, + 5.477831940537463622e-05, + 5.487955488924291958e-05, + 5.498069262204945487e-05, + 5.508173244757125290e-05, + 5.518267420975824796e-05, + 5.528351775273272859e-05, + 5.538426292078544124e-05, + 5.548490955839423857e-05, + 5.558545751019614765e-05, + 5.568590662100670268e-05, + 5.578625673581560815e-05, + 5.588650769978595957e-05, + 5.598665935825115355e-05, + 5.608671155673266185e-05, + 5.618666414091318389e-05, + 5.628651695665515947e-05, + 5.638626984999565273e-05, + 5.648592266714350606e-05, + 5.658547525449672804e-05, + 5.668492745862007076e-05, + 5.678427912624065238e-05, + 5.688353010428975307e-05, + 5.698268023985727181e-05, + 5.708172938020960891e-05, + 5.718067737280400458e-05, + 5.727952406526186081e-05, + 5.737826930538637995e-05, + 5.747691294115880390e-05, + 5.757545482073391467e-05, + 5.767389479245811347e-05, + 5.777223270484775695e-05, + 5.787046840658433933e-05, + 5.796860174655519058e-05, + 5.806663257380913261e-05, + 5.816456073757449055e-05, + 5.826238608727238777e-05, + 5.836010847249538034e-05, + 5.845772774300267975e-05, + 5.855524374876029550e-05, + 5.865265633989773480e-05, + 5.874996536672473312e-05, + 5.884717067975024131e-05, + 5.894427212963333833e-05, + 5.904126956724571520e-05, + 5.913816284362295364e-05, + 5.923495180998303208e-05, + 5.933163631773881425e-05, + 5.942821621847751040e-05, + 5.952469136395511395e-05, + 5.962106160613749950e-05, + 5.971732679715542174e-05, + 5.981348678932359056e-05, + 5.990954143515786923e-05, + 6.000549058732656665e-05, + 6.010133409871339555e-05, + 6.019707182236848017e-05, + 6.029270361153079243e-05, + 6.038822931961976970e-05, + 6.048364880025699884e-05, + 6.057896190721886369e-05, + 6.067416849449757885e-05, + 6.076926841625362709e-05, + 6.086426152683328280e-05, + 6.095914768078595917e-05, + 6.105392673282143646e-05, + 6.114859853784932017e-05, + 6.124316295097389107e-05, + 6.133761982747398648e-05, + 6.143196902281950725e-05, + 6.152621039266804317e-05, + 6.162034379285999408e-05, + 6.171436907943689287e-05, + 6.180828610861504582e-05, + 6.190209473679935618e-05, + 6.199579482060014286e-05, + 6.208938621679024666e-05, + 6.218286878234517289e-05, + 6.227624237443725019e-05, + 6.236950685041559993e-05, + 6.246266206782319884e-05, + 6.255570788439260993e-05, + 6.264864415804649752e-05, + 6.274147074689339883e-05, + 6.283418750924496283e-05, + 6.292679430359089156e-05, + 6.301929098861563689e-05, + 6.311167742319483619e-05, + 6.320395346639105685e-05, + 6.329611897747127900e-05, + 6.338817381588111866e-05, + 6.348011784126254083e-05, + 6.357195091344956339e-05, + 6.366367289246851460e-05, + 6.375528363853392663e-05, + 6.384678301206573377e-05, + 6.393817087366437642e-05, + 6.402944708412721319e-05, + 6.412061150444553937e-05, + 6.421166399579964022e-05, + 6.430260441957623310e-05, + 6.439343263734362570e-05, + 6.448414851086807390e-05, + 6.457475190211073247e-05, + 6.466524267322737050e-05, + 6.475562068656387190e-05, + 6.484588580467393504e-05, + 6.493603789029868975e-05, + 6.502607680636168287e-05, + 6.511600241600687953e-05, + 6.520581458255781586e-05, + 6.529551316953426858e-05, + 6.538509804066445228e-05, + 6.547456905986039446e-05, + 6.556392609123548609e-05, + 6.565316899909975175e-05, + 6.574229764795606846e-05, + 6.583131190251697087e-05, + 6.592021162768466123e-05, + 6.600899668854626602e-05, + 6.609766695041153909e-05, + 6.618622227877197367e-05, + 6.627466253931753976e-05, + 6.636298759794865101e-05, + 6.645119732075248841e-05, + 6.653929157401900591e-05, + 6.662727022423736603e-05, + 6.671513313809614317e-05, + 6.680288018247923076e-05, + 6.689051122448640043e-05, + 6.697802613138918856e-05, + 6.706542477068739671e-05, + 6.715270701006488335e-05, + 6.723987271740655865e-05, + 6.732692176080928078e-05, + 6.741385400856331602e-05, + 6.750066932914790708e-05, + 6.758736759126794625e-05, + 6.767394866381297902e-05, + 6.776041241587517469e-05, + 6.784675871676386827e-05, + 6.793298743596301907e-05, + 6.801909844318631529e-05, + 6.810509160833434804e-05, + 6.819096680151435737e-05, + 6.827672389303641044e-05, + 6.836236275341341507e-05, + 6.844788325335766390e-05, + 6.853328526379700246e-05, + 6.861856865585078710e-05, + 6.870373330084212282e-05, + 6.878877907031432965e-05, + 6.887370583599100333e-05, + 6.895851346981198373e-05, + 6.904320184392949238e-05, + 6.912777083068895561e-05, + 6.921222030264453581e-05, + 6.929655013255545863e-05, + 6.938076019338277397e-05, + 6.946485035830458898e-05, + 6.954882050069292041e-05, + 6.963267049412604089e-05, + 6.971640021240326477e-05, + 6.980000952950761093e-05, + 6.988349831964003639e-05, + 6.996686645721519448e-05, + 7.005011381684416881e-05, + 7.013324027334850021e-05, + 7.021624570175643263e-05, + 7.029912997730416004e-05, + 7.038189297543174703e-05, + 7.046453457179811797e-05, + 7.054705464225891217e-05, + 7.062945306288208281e-05, + 7.071172970994314005e-05, + 7.079388445992313165e-05, + 7.087591718952269699e-05, + 7.095782777564012549e-05, + 7.103961609538663033e-05, + 7.112128202608275702e-05, + 7.120282544525811236e-05, + 7.128424623064884367e-05, + 7.136554426021140814e-05, + 7.144671941210164773e-05, + 7.152777156468889739e-05, + 7.160870059655286793e-05, + 7.168950638648019015e-05, + 7.177018881347952588e-05, + 7.185074775675892177e-05, + 7.193118309574151660e-05, + 7.201149471006143489e-05, + 7.209168247956430193e-05, + 7.217174628430382847e-05, + 7.225168600455631200e-05, + 7.233150152080270671e-05, + 7.241119271372493721e-05, + 7.249075946423980696e-05, + 7.257020165346136291e-05, + 7.264951916271631825e-05, + 7.272871187355558565e-05, + 7.280777966773196975e-05, + 7.288672242721498011e-05, + 7.296554003418723980e-05, + 7.304423237104184260e-05, + 7.312279932039610888e-05, + 7.320124076507415702e-05, + 7.327955658810329841e-05, + 7.335774667274637384e-05, + 7.343581090246665243e-05, + 7.351374916094172293e-05, + 7.359156133207486435e-05, + 7.366924729997334834e-05, + 7.374680694896298104e-05, + 7.382424016358508088e-05, + 7.390154682859637015e-05, + 7.397872682896535650e-05, + 7.405578004989081856e-05, + 7.413270637676202927e-05, + 7.420950569521002512e-05, + 7.428617789106738221e-05, + 7.436272285038336802e-05, + 7.443914045943413288e-05, + 7.451543060470574220e-05, + 7.459159317289038179e-05, + 7.466762805091872127e-05, + 7.474353512592490792e-05, + 7.481931428525967194e-05, + 7.489496541650608806e-05, + 7.497048840744013768e-05, + 7.504588314608024336e-05, + 7.512114952064905069e-05, + 7.519628741958718412e-05, + 7.527129673156812760e-05, + 7.534617734546228331e-05, + 7.542092915037021600e-05, + 7.549555203561734041e-05, + 7.557004589073803766e-05, + 7.564441060548633472e-05, + 7.571864606984913160e-05, + 7.579275217401203549e-05, + 7.586672880839106007e-05, + 7.594057586362841072e-05, + 7.601429323057658737e-05, + 7.608788080031134073e-05, + 7.616133846412873141e-05, + 7.623466611354229739e-05, + 7.630786364029586123e-05, + 7.638093093634444803e-05, + 7.645386789386354189e-05, + 7.652667440526383100e-05, + 7.659935036315633700e-05, + 7.667189566038430410e-05, + 7.674431019001864539e-05, + 7.681659384534289959e-05, + 7.688874651986426275e-05, + 7.696076810731376447e-05, + 7.703265850164044029e-05, + 7.710441759702562963e-05, + 7.717604528786333818e-05, + 7.724754146877366840e-05, + 7.731890603459921462e-05, + 7.739013888040578129e-05, + 7.746123990147937431e-05, + 7.753220899333869648e-05, + 7.760304605171586224e-05, + 7.767375097257012639e-05, + 7.774432365208456370e-05, + 7.781476398666624513e-05, + 7.788507187294230758e-05, + 7.795524720777449572e-05, + 7.802528988823910429e-05, + 7.809519981163994787e-05, + 7.816497687550532508e-05, + 7.823462097758522680e-05, + 7.830413201586450917e-05, + 7.837350988854320185e-05, + 7.844275449404936929e-05, + 7.851186573103760644e-05, + 7.858084349838654508e-05, + 7.864968769519827105e-05, + 7.871839822080992522e-05, + 7.878697497477521786e-05, + 7.885541785687674786e-05, + 7.892372676712325157e-05, + 7.899190160575072768e-05, + 7.905994227321772093e-05, + 7.912784867021932186e-05, + 7.919562069766750210e-05, + 7.926325825670459916e-05, + 7.933076124870028060e-05, + 7.939812957524802046e-05, + 7.946536313817779789e-05, + 7.953246183954154180e-05, + 7.959942558160909218e-05, + 7.966625426689655199e-05, + 7.973294779813602437e-05, + 7.979950607828699676e-05, + 7.986592901054711516e-05, + 7.993221649833274979e-05, + 7.999836844529176162e-05, + 8.006438475530125258e-05, + 8.013026533246313395e-05, + 8.019601008111800411e-05, + 8.026161890582889904e-05, + 8.032709171137974741e-05, + 8.039242840280063241e-05, + 8.045762888534055120e-05, + 8.052269306447673906e-05, + 8.058762084592620257e-05, + 8.065241213562888739e-05, + 8.071706683974629590e-05, + 8.078158486468773843e-05, + 8.084596611708088363e-05, + 8.091021050378390152e-05, + 8.097431793189720001e-05, + 8.103828830873137314e-05, + 8.110212154184780447e-05, + 8.116581753902768601e-05, + 8.122937620828280599e-05, + 8.129279745786808500e-05, + 8.135608119625220764e-05, + 8.141922733214373824e-05, + 8.148223577448878980e-05, + 8.154510643245640089e-05, + 8.160783921544772417e-05, + 8.167043403310705820e-05, + 8.173289079529037846e-05, + 8.179520941210637443e-05, + 8.185738979388473661e-05, + 8.191943185118983109e-05, + 8.198133549481914097e-05, + 8.204310063580265650e-05, + 8.210472718540023235e-05, + 8.216621505511308014e-05, + 8.222756415666770870e-05, + 8.228877440202265971e-05, + 8.234984570338215501e-05, + 8.241077797316653862e-05, + 8.247157112403759283e-05, + 8.253222506889741335e-05, + 8.259273972087255282e-05, + 8.265311499332713969e-05, + 8.271335079985866340e-05, + 8.277344705429618538e-05, + 8.283340367071192654e-05, + 8.289322056340326945e-05, + 8.295289764690555196e-05, + 8.301243483598846223e-05, + 8.307183204565660791e-05, + 8.313108919114687342e-05, + 8.319020618793899092e-05, + 8.324918295173967028e-05, + 8.330801939849380704e-05, + 8.336671544438177192e-05, + 8.342527100581899064e-05, + 8.348368599945403307e-05, + 8.354196034217922480e-05, + 8.360009395111441129e-05, + 8.365808674361869428e-05, + 8.371593863728636609e-05, + 8.377364954994559498e-05, + 8.383121939966921299e-05, + 8.388864810475814119e-05, + 8.394593558375201489e-05, + 8.400308175542765213e-05, + 8.406008653879834904e-05, + 8.411694985311186045e-05, + 8.417367161786087600e-05, + 8.423025175276654031e-05, + 8.428669017779023007e-05, + 8.434298681313085713e-05, + 8.439914157922443481e-05, + 8.445515439674186880e-05, + 8.451102518659973147e-05, + 8.456675386994435119e-05, + 8.462234036816211223e-05, + 8.467778460287799110e-05, + 8.473308649595188383e-05, + 8.478824596949004427e-05, + 8.484326294583115213e-05, + 8.489813734754537782e-05, + 8.495286909745631047e-05, + 8.500745811861588571e-05, + 8.506190433431460435e-05, + 8.511620766808940632e-05, + 8.517036804370900689e-05, + 8.522438538518311234e-05, + 8.527825961676027873e-05, + 8.533199066292665143e-05, + 8.538557844841453040e-05, + 8.543902289819083691e-05, + 8.549232393745417272e-05, + 8.554548149165810327e-05, + 8.559849548648571958e-05, + 8.565136584785985690e-05, + 8.570409250195396380e-05, + 8.575667537516532240e-05, + 8.580911439413978171e-05, + 8.586140948576793583e-05, + 8.591356057717323838e-05, + 8.596556759571938864e-05, + 8.601743046902109223e-05, + 8.606914912491572280e-05, + 8.612072349149888385e-05, + 8.617215349709737144e-05, + 8.622343907027836280e-05, + 8.627458013986009575e-05, + 8.632557663488737922e-05, + 8.637642848465292499e-05, + 8.642713561869603308e-05, + 8.647769796679034024e-05, + 8.652811545895054202e-05, + 8.657838802544261139e-05, + 8.662851559675722221e-05, + 8.667849810364390160e-05, + 8.672833547708384361e-05, + 8.677802764830324484e-05, + 8.682757454876987571e-05, + 8.687697611019406976e-05, + 8.692623226452541685e-05, + 8.697534294396309018e-05, + 8.702430808094135863e-05, + 8.707312760813742014e-05, + 8.712180145848044124e-05, + 8.717032956512747418e-05, + 8.721871186148606259e-05, + 8.726694828121078556e-05, + 8.731503875819222589e-05, + 8.736298322656647040e-05, + 8.741078162071265695e-05, + 8.745843387525054850e-05, + 8.750593992505000635e-05, + 8.755329970521766802e-05, + 8.760051315110385900e-05, + 8.764758019831065652e-05, + 8.769450078267047660e-05, + 8.774127484026659248e-05, + 8.778790230743019384e-05, + 8.783438312072951756e-05, + 8.788071721697900932e-05, + 8.792690453323753460e-05, + 8.797294500680733517e-05, + 8.801883857523310753e-05, + 8.806458517631032411e-05, + 8.811018474807172146e-05, + 8.815563722879742395e-05, + 8.820094255701167762e-05, + 8.824610067148122388e-05, + 8.829111151122353944e-05, + 8.833597501549477458e-05, + 8.838069112379793885e-05, + 8.842525977588094953e-05, + 8.846968091173642830e-05, + 8.851395447160031896e-05, + 8.855808039595989688e-05, + 8.860205862554108391e-05, + 8.864588910131736591e-05, + 8.868957176450746171e-05, + 8.873310655657364260e-05, + 8.877649341922961993e-05, + 8.881973229442855107e-05, + 8.886282312437125230e-05, + 8.890576585150459957e-05, + 8.894856041852057982e-05, + 8.899120676835585734e-05, + 8.903370484419852291e-05, + 8.907605458947836304e-05, + 8.911825594786595202e-05, + 8.916030886328948414e-05, + 8.920221327991593562e-05, + 8.924396914215752927e-05, + 8.928557639468023182e-05, + 8.932703498238925277e-05, + 8.936834485043855828e-05, + 8.940950594422946167e-05, + 8.945051820940678805e-05, + 8.949138159186855086e-05, + 8.953209603775577391e-05, + 8.957266149345024164e-05, + 8.961307790559187348e-05, + 8.965334522106080742e-05, + 8.969346338698297005e-05, + 8.973343235074017325e-05, + 8.977325205994714263e-05, + 8.981292246247996427e-05, + 8.985244350645380440e-05, + 8.989181514023319574e-05, + 8.993103731242832412e-05, + 8.997010997190429840e-05, + 9.000903306776072684e-05, + 9.004780654935746684e-05, + 9.008643036629535332e-05, + 9.012490446842243283e-05, + 9.016322880584206798e-05, + 9.020140332889419431e-05, + 9.023942798817228802e-05, + 9.027730273452159060e-05, + 9.031502751903016421e-05, + 9.035260229303294379e-05, + 9.039002700812175247e-05, + 9.042730161612296696e-05, + 9.046442606912444642e-05, + 9.050140031945441764e-05, + 9.053822431969025706e-05, + 9.057489802266457588e-05, + 9.061142138144754753e-05, + 9.064779434936380770e-05, + 9.068401687998943212e-05, + 9.072008892714425227e-05, + 9.075601044489662586e-05, + 9.079178138757105338e-05, + 9.082740170972984151e-05, + 9.086287136618951524e-05, + 9.089819031201898825e-05, + 9.093335850253135013e-05, + 9.096837589328977524e-05, + 9.100324244010695352e-05, + 9.103795809904294918e-05, + 9.107252282641177369e-05, + 9.110693657877204810e-05, + 9.114119931293260019e-05, + 9.117531098595261358e-05, + 9.120927155513979814e-05, + 9.124308097804980722e-05, + 9.127673921249312235e-05, + 9.131024621652414342e-05, + 9.134360194844898142e-05, + 9.137680636682285636e-05, + 9.140985943044975840e-05, + 9.144276109838777407e-05, + 9.147551132993915219e-05, + 9.150811008465919440e-05, + 9.154055732235168792e-05, + 9.157285300307062672e-05, + 9.160499708711878849e-05, + 9.163698953505264072e-05, + 9.166883030767518489e-05, + 9.170051936604013069e-05, + 9.173205667145161140e-05, + 9.176344218546402128e-05, + 9.179467586988009108e-05, + 9.182575768675750171e-05, + 9.185668759839947875e-05, + 9.188746556736128413e-05, + 9.191809155644831879e-05, + 9.194856552871479450e-05, + 9.197888744747059146e-05, + 9.200905727627044337e-05, + 9.203907497892139134e-05, + 9.206894051948150994e-05, + 9.209865386225886364e-05, + 9.212821497181086989e-05, + 9.215762381295020795e-05, + 9.218688035073541349e-05, + 9.221598455047754644e-05, + 9.224493637773828003e-05, + 9.227373579832972466e-05, + 9.230238277831372313e-05, + 9.233087728400780024e-05, + 9.235921928197455113e-05, + 9.238740873903089764e-05, + 9.241544562224280289e-05, + 9.244332989892685686e-05, + 9.247106153665497915e-05, + 9.249864050324677533e-05, + 9.252606676676904910e-05, + 9.255334029554793172e-05, + 9.258046105815543800e-05, + 9.260742902341418249e-05, + 9.263424416040362726e-05, + 9.266090643844583814e-05, + 9.268741582712197822e-05, + 9.271377229626043574e-05, + 9.273997581594179795e-05, + 9.276602635649650649e-05, + 9.279192388851197244e-05, + 9.281766838281709940e-05, + 9.284325981050261221e-05, + 9.286869814290422476e-05, + 9.289398335160942979e-05, + 9.291911540846320449e-05, + 9.294409428555334670e-05, + 9.296891995522311937e-05, + 9.299359239007060009e-05, + 9.301811156294084769e-05, + 9.304247744693124197e-05, + 9.306669001539484467e-05, + 9.309074924192889346e-05, + 9.311465510038968252e-05, + 9.313840756488153086e-05, + 9.316200660975957411e-05, + 9.318545220963580893e-05, + 9.320874433936689575e-05, + 9.323188297406462136e-05, + 9.325486808909508568e-05, + 9.327769966007265739e-05, + 9.330037766286374153e-05, + 9.332290207359054707e-05, + 9.334527286862120716e-05, + 9.336749002457842559e-05, + 9.338955351833954461e-05, + 9.341146332702990416e-05, + 9.343321942802842550e-05, + 9.345482179896607980e-05, + 9.347627041772370619e-05, + 9.349756526243880152e-05, + 9.351870631149653511e-05, + 9.353969354353560339e-05, + 9.356052693744694242e-05, + 9.358120647237250819e-05, + 9.360173212770668604e-05, + 9.362210388309829645e-05, + 9.364232171844482169e-05, + 9.366238561389740667e-05, + 9.368229554985894804e-05, + 9.370205150698389092e-05, + 9.372165346618100714e-05, + 9.374110140860926173e-05, + 9.376039531567966964e-05, + 9.377953516905654255e-05, + 9.379852095065473769e-05, + 9.381735264264224640e-05, + 9.383603022744041097e-05, + 9.385455368772113282e-05, + 9.387292300640817351e-05, + 9.389113816667894372e-05, + 9.390919915196209086e-05, + 9.392710594593755332e-05, + 9.394485853254055843e-05, + 9.396245689595599817e-05, + 9.397990102062115324e-05, + 9.399719089122592346e-05, + 9.401432649271201458e-05, + 9.403130781027507963e-05, + 9.404813482936137138e-05, + 9.406480753566898926e-05, + 9.408132591514942428e-05, + 9.409768995400610890e-05, + 9.411389963869329226e-05, + 9.412995495592072924e-05, + 9.414585589264748704e-05, + 9.416160243608573985e-05, + 9.417719457369984727e-05, + 9.419263229320684226e-05, + 9.420791558257446592e-05, + 9.422304443002645308e-05, + 9.423801882403297771e-05, + 9.425283875332213191e-05, + 9.426750420687091353e-05, + 9.428201517390849226e-05, + 9.429637164391835096e-05, + 9.431057360663594111e-05, + 9.432462105204457632e-05, + 9.433851397038594915e-05, + 9.435225235215042748e-05, + 9.436583618808030711e-05, + 9.437926546917348451e-05, + 9.439254018667452570e-05, + 9.440566033208545405e-05, + 9.441862589715757810e-05, + 9.443143687389401238e-05, + 9.444409325455256404e-05, + 9.445659503164191106e-05, + 9.446894219792021990e-05, + 9.448113474640211149e-05, + 9.449317267035187140e-05, + 9.450505596328587579e-05, + 9.451678461897455646e-05, + 9.452835863143729160e-05, + 9.453977799494709495e-05, + 9.455104270403016855e-05, + 9.456215275346365303e-05, + 9.457310813827520749e-05, + 9.458390885374878289e-05, + 9.459455489541459313e-05, + 9.460504625905994357e-05, + 9.461538294072126211e-05, + 9.462556493668712143e-05, + 9.463559224350067843e-05, + 9.464546485795261336e-05, + 9.465518277708815005e-05, + 9.466474599820525338e-05, + 9.467415451885202726e-05, + 9.468340833682892363e-05, + 9.469250745018839013e-05, + 9.470145185723409758e-05, + 9.471024155652291870e-05, + 9.471887654686281385e-05, + 9.472735682731230251e-05, + 9.473568239718341776e-05, + 9.474385325603896862e-05, + 9.475186940369331257e-05, + 9.475973084021390054e-05, + 9.476743756591817338e-05, + 9.477498958137604195e-05, + 9.478238688740857256e-05, + 9.478962948508905760e-05, + 9.479671737574114530e-05, + 9.480365056094210586e-05, + 9.481042904251918587e-05, + 9.481705282255145141e-05, + 9.482352190336923242e-05, + 9.482983628755440729e-05, + 9.483599597794113473e-05, + 9.484200097761402411e-05, + 9.484785128990882671e-05, + 9.485354691841366896e-05, + 9.485908786696714155e-05, + 9.486447413965937007e-05, + 9.486970574083238093e-05, + 9.487478267507855638e-05, + 9.487970494724162383e-05, + 9.488447256241681850e-05, + 9.488908552595051748e-05, + 9.489354384343938595e-05, + 9.489784752073303342e-05, + 9.490199656393038174e-05, + 9.490599097938171144e-05, + 9.490983077368879731e-05, + 9.491351595370406814e-05, + 9.491704652653101327e-05, + 9.492042249952439945e-05, + 9.492364388028872585e-05, + 9.492671067668013497e-05, + 9.492962289680572144e-05, + 9.493238054902271891e-05, + 9.493498364193993656e-05, + 9.493743218441587535e-05, + 9.493972618556076088e-05, + 9.494186565473428010e-05, + 9.494385060154745160e-05, + 9.494568103586209702e-05, + 9.494735696779004147e-05, + 9.494887840769291026e-05, + 9.495024536618463607e-05, + 9.495145785412775915e-05, + 9.495251588263592098e-05, + 9.495341946307332215e-05, + 9.495416860705449200e-05, + 9.495476332644293331e-05, + 9.495520363335380578e-05, + 9.495548954015181175e-05, + 9.495562105945191456e-05, + 9.495559820411932496e-05, + 9.495542098726841688e-05, + 9.495508942226488236e-05, + 9.495460352272312938e-05, + 9.495396330250836900e-05, + 9.495316877573519235e-05, + 9.495221995676816689e-05, + 9.495111686022119951e-05, + 9.494985950095920343e-05, + 9.494844789409521155e-05, + 9.494688205499261259e-05, + 9.494516199926451416e-05, + 9.494328774277334968e-05, + 9.494125930163078357e-05, + 9.493907669219855147e-05, + 9.493673993108768777e-05, + 9.493424903515799702e-05, + 9.493160402151915175e-05, + 9.492880490752974372e-05, + 9.492585171079752793e-05, + 9.492274444918037126e-05, + 9.491948314078335223e-05, + 9.491606780396274546e-05, + 9.491249845732221339e-05, + 9.490877511971516445e-05, + 9.490489781024373658e-05, + 9.490086654825882436e-05, + 9.489668135336011968e-05, + 9.489234224539616592e-05, + 9.488784924446424954e-05, + 9.488320237091029167e-05, + 9.487840164532838731e-05, + 9.487344708856164561e-05, + 9.486833872170152577e-05, + 9.486307656608805388e-05, + 9.485766064330899625e-05, + 9.485209097520086224e-05, + 9.484636758384847066e-05, + 9.484049049158523427e-05, + 9.483445972099147938e-05, + 9.482827529489687164e-05, + 9.482193723637853233e-05, + 9.481544556876136357e-05, + 9.480880031561823807e-05, + 9.480200150077069032e-05, + 9.479504914828674816e-05, + 9.478794328248329093e-05, + 9.478068392792366424e-05, + 9.477327110942001100e-05, + 9.476570485203140114e-05, + 9.475798518106427889e-05, + 9.475011212207289644e-05, + 9.474208570085919194e-05, + 9.473390594347086511e-05, + 9.472557287620467041e-05, + 9.471708652560287994e-05, + 9.470844691845665790e-05, + 9.469965408180241507e-05, + 9.469070804292493938e-05, + 9.468160882935497001e-05, + 9.467235646887041715e-05, + 9.466295098949626709e-05, + 9.465339241950375556e-05, + 9.464368078741108598e-05, + 9.463381612198271120e-05, + 9.462379845222908953e-05, + 9.461362780740946302e-05, + 9.460330421702653134e-05, + 9.459282771083068011e-05, + 9.458219831881889677e-05, + 9.457141607123287317e-05, + 9.456048099856189228e-05, + 9.454939313154065979e-05, + 9.453815250114981910e-05, + 9.452675913861608684e-05, + 9.451521307541130420e-05, + 9.450351434325353470e-05, + 9.449166297410752492e-05, + 9.447965900018173659e-05, + 9.446750245393102988e-05, + 9.445519336805627047e-05, + 9.444273177550239150e-05, + 9.443011770946016894e-05, + 9.441735120336695343e-05, + 9.440443229090328219e-05, + 9.439136100599558946e-05, + 9.437813738281548826e-05, + 9.436476145577810343e-05, + 9.435123325954636775e-05, + 9.433755282902469294e-05, + 9.432372019936437711e-05, + 9.430973540596084004e-05, + 9.429559848445294554e-05, + 9.428130947072460067e-05, + 9.426686840090600259e-05, + 9.425227531136797356e-05, + 9.423753023872875076e-05, + 9.422263321984981216e-05, + 9.420758429183434502e-05, + 9.419238349203383248e-05, + 9.417703085804005753e-05, + 9.416152642768969730e-05, + 9.414587023906372681e-05, + 9.413006233048702590e-05, + 9.411410274052575003e-05, + 9.409799150799269714e-05, + 9.408172867194164262e-05, + 9.406531427167048355e-05, + 9.404874834672117092e-05, + 9.403203093687614530e-05, + 9.401516208216466591e-05, + 9.399814182285690166e-05, + 9.398097019946486633e-05, + 9.396364725274519681e-05, + 9.394617302369641550e-05, + 9.392854755356002804e-05, + 9.391077088381989994e-05, + 9.389284305620166022e-05, + 9.387476411267447682e-05, + 9.385653409544995884e-05, + 9.383815304697857868e-05, + 9.381962100995804748e-05, + 9.380093802732529203e-05, + 9.378210414225813531e-05, + 9.376311939817799342e-05, + 9.374398383874719216e-05, + 9.372469750787036299e-05, + 9.370526044969320972e-05, + 9.368567270860345716e-05, + 9.366593432922841174e-05, + 9.364604535643829535e-05, + 9.362600583534440226e-05, + 9.360581581129842144e-05, + 9.358547532989472699e-05, + 9.356498443696533655e-05, + 9.354434317858577959e-05, + 9.352355160107156016e-05, + 9.350260975097836021e-05, + 9.348151767510320509e-05, + 9.346027542048337934e-05, + 9.343888303439473264e-05, + 9.341734056435559651e-05, + 9.339564805812317929e-05, + 9.337380556369536864e-05, + 9.335181312931047407e-05, + 9.332967080344394721e-05, + 9.330737863481372151e-05, + 9.328493667237656658e-05, + 9.326234496532884719e-05, + 9.323960356310556099e-05, + 9.321671251538306258e-05, + 9.319367187207330371e-05, + 9.317048168332998611e-05, + 9.314714199954791094e-05, + 9.312365287135507773e-05, + 9.310001434962303845e-05, + 9.307622648546106997e-05, + 9.305228933021487297e-05, + 9.302820293547085458e-05, + 9.300396735305340432e-05, + 9.297958263502490762e-05, + 9.295504883368734504e-05, + 9.293036600157695258e-05, + 9.290553419147116055e-05, + 9.288055345638689955e-05, + 9.285542384957375637e-05, + 9.283014542452321691e-05, + 9.280471823496332638e-05, + 9.277914233485702242e-05, + 9.275341777840781358e-05, + 9.272754462005553737e-05, + 9.270152291447695658e-05, + 9.267535271658519007e-05, + 9.264903408153227422e-05, + 9.262256706470223754e-05, + 9.259595172172356906e-05, + 9.256918810845357864e-05, + 9.254227628099074340e-05, + 9.251521629566913756e-05, + 9.248800820905650802e-05, + 9.246065207795874671e-05, + 9.243314795942056817e-05, + 9.240549591071671399e-05, + 9.237769598936157510e-05, + 9.234974825310530218e-05, + 9.232165275992964507e-05, + 9.229340956805872698e-05, + 9.226501873594535649e-05, + 9.223648032228083952e-05, + 9.220779438599197074e-05, + 9.217896098623654761e-05, + 9.214998018241304695e-05, + 9.212085203415210034e-05, + 9.209157660131681944e-05, + 9.206215394400733604e-05, + 9.203258412255891827e-05, + 9.200286719753630567e-05, + 9.197300322974536434e-05, + 9.194299228022233977e-05, + 9.191283441023523923e-05, + 9.188252968128936119e-05, + 9.185207815512248417e-05, + 9.182147989370628976e-05, + 9.179073495924601023e-05, + 9.175984341417827372e-05, + 9.172880532117510220e-05, + 9.169762074314181087e-05, + 9.166628974321257642e-05, + 9.163481238476111647e-05, + 9.160318873139043031e-05, + 9.157141884693312413e-05, + 9.153950279545887848e-05, + 9.150744064126745516e-05, + 9.147523244889166523e-05, + 9.144287828309743678e-05, + 9.141037820887862428e-05, + 9.137773229146481488e-05, + 9.134494059631628683e-05, + 9.131200318912430767e-05, + 9.127892013581248945e-05, + 9.124569150253644993e-05, + 9.121231735567885237e-05, + 9.117879776185867544e-05, + 9.114513278792277001e-05, + 9.111132250094999266e-05, + 9.107736696824956580e-05, + 9.104326625736286667e-05, + 9.100902043605671877e-05, + 9.097462957233370538e-05, + 9.094009373442418710e-05, + 9.090541299078917499e-05, + 9.087058741012034411e-05, + 9.083561706133566963e-05, + 9.080050201358640636e-05, + 9.076524233625250803e-05, + 9.072983809894254593e-05, + 9.069428937149480669e-05, + 9.065859622397868817e-05, + 9.062275872668689326e-05, + 9.058677695014659707e-05, + 9.055065096511151880e-05, + 9.051438084256414429e-05, + 9.047796665371565827e-05, + 9.044140847000639160e-05, + 9.040470636310149802e-05, + 9.036786040489722897e-05, + 9.033087066751753188e-05, + 9.029373722331342678e-05, + 9.025646014486516115e-05, + 9.021903950497611128e-05, + 9.018147537667982956e-05, + 9.014376783324167084e-05, + 9.010591694814528048e-05, + 9.006792279510709564e-05, + 9.002978544807012460e-05, + 8.999150498119970487e-05, + 8.995308146889258334e-05, + 8.991451498576966573e-05, + 8.987580560667846952e-05, + 8.983695340669278523e-05, + 8.979795846111393674e-05, + 8.975882084546214833e-05, + 8.971954063549522011e-05, + 8.968011790718478395e-05, + 8.964055273673455875e-05, + 8.960084520057305917e-05, + 8.956099537534989582e-05, + 8.952100333794247016e-05, + 8.948086916545703164e-05, + 8.944059293521620935e-05, + 8.940017472477264587e-05, + 8.935961461190394220e-05, + 8.931891267460453975e-05, + 8.927806899110564257e-05, + 8.923708363985019944e-05, + 8.919595669951155205e-05, + 8.915468824898667237e-05, + 8.911327836738979294e-05, + 8.907172713406777539e-05, + 8.903003462858669352e-05, + 8.898820093073119626e-05, + 8.894622612051471277e-05, + 8.890411027817321824e-05, + 8.886185348415828148e-05, + 8.881945581915462896e-05, + 8.877691736406333970e-05, + 8.873423820000507078e-05, + 8.869141840832738921e-05, + 8.864845807059798218e-05, + 8.860535726860587673e-05, + 8.856211608436410964e-05, + 8.851873460010146035e-05, + 8.847521289827273735e-05, + 8.843155106155494284e-05, + 8.838774917283819248e-05, + 8.834380731524399779e-05, + 8.829972557210964007e-05, + 8.825550402698890224e-05, + 8.821114276366163695e-05, + 8.816664186612558078e-05, + 8.812200141859903775e-05, + 8.807722150552167880e-05, + 8.803230221154714221e-05, + 8.798724362155477003e-05, + 8.794204582064090738e-05, + 8.789670889412136900e-05, + 8.785123292753107334e-05, + 8.780561800662576373e-05, + 8.775986421737408014e-05, + 8.771397164596880780e-05, + 8.766794037882011446e-05, + 8.762177050255537424e-05, + 8.757546210402084811e-05, + 8.752901527028229378e-05, + 8.748243008861776929e-05, + 8.743570664652833952e-05, + 8.738884503173135413e-05, + 8.734184533216054244e-05, + 8.729470763596964547e-05, + 8.724743203152313250e-05, + 8.720001860740791044e-05, + 8.715246745242605968e-05, + 8.710477865559599958e-05, + 8.705695230615246140e-05, + 8.700898849354837209e-05, + 8.696088730744668210e-05, + 8.691264883773253559e-05, + 8.686427317450402753e-05, + 8.681576040807546996e-05, + 8.676711062897611798e-05, + 8.671832392795290737e-05, + 8.666940039596114404e-05, + 8.662034012417735177e-05, + 8.657114320399072061e-05, + 8.652180972700541082e-05, + 8.647233978504129820e-05, + 8.642273347012661511e-05, + 8.637299087450759987e-05, + 8.632311209065061095e-05, + 8.627309721122342447e-05, + 8.622294632911548168e-05, + 8.617265953743002852e-05, + 8.612223692947605180e-05, + 8.607167859878329550e-05, + 8.602098463909121538e-05, + 8.597015514435251619e-05, + 8.591919020873405976e-05, + 8.586808992660889604e-05, + 8.581685439256686121e-05, + 8.576548370141549925e-05, + 8.571397794816182022e-05, + 8.566233722803287304e-05, + 8.561056163646724800e-05, + 8.555865126910815145e-05, + 8.550660622181438335e-05, + 8.545442659066227527e-05, + 8.540211247192605278e-05, + 8.534966396209873346e-05, + 8.529708115788429349e-05, + 8.524436415618780150e-05, + 8.519151305414024672e-05, + 8.513852794906633819e-05, + 8.508540893851007842e-05, + 8.503215612022459896e-05, + 8.497876959216396110e-05, + 8.492524945250405394e-05, + 8.487159579962391892e-05, + 8.481780873210625134e-05, + 8.476388834874957047e-05, + 8.470983474856046754e-05, + 8.465564803074542000e-05, + 8.460132829473453555e-05, + 8.454687564014983924e-05, + 8.449229016683044047e-05, + 8.443757197482041710e-05, + 8.438272116437148522e-05, + 8.432773783594295857e-05, + 8.427262209020295464e-05, + 8.421737402801976176e-05, + 8.416199375047510702e-05, + 8.410648135885739353e-05, + 8.405083695465183423e-05, + 8.399506063956408742e-05, + 8.393915251549861347e-05, + 8.388311268456062630e-05, + 8.382694124906843978e-05, + 8.377063831154319491e-05, + 8.371420397471129925e-05, + 8.365763834150645982e-05, + 8.360094151506008791e-05, + 8.354411359871559699e-05, + 8.348715469601826543e-05, + 8.343006491071783856e-05, + 8.337284434676797305e-05, + 8.331549310832896094e-05, + 8.325801129975721291e-05, + 8.320039902561996272e-05, + 8.314265639068578050e-05, + 8.308478349992576533e-05, + 8.302678045851462948e-05, + 8.296864737183214848e-05, + 8.291038434545284770e-05, + 8.285199148516191297e-05, + 8.279346889694345413e-05, + 8.273481668698416420e-05, + 8.267603496167437644e-05, + 8.261712382759964831e-05, + 8.255808339155392089e-05, + 8.249891376052923258e-05, + 8.243961504172047598e-05, + 8.238018734252119664e-05, + 8.232063077052998985e-05, + 8.226094543353717852e-05, + 8.220113143954188930e-05, + 8.214118889674056013e-05, + 8.208111791352913568e-05, + 8.202091859850615735e-05, + 8.196059106046198900e-05, + 8.190013540839407712e-05, + 8.183955175149651537e-05, + 8.177884019916213166e-05, + 8.171800086098236619e-05, + 8.165703384675078154e-05, + 8.159593926645043174e-05, + 8.153471723026797042e-05, + 8.147336784859633425e-05, + 8.141189123201005018e-05, + 8.135028749129201528e-05, + 8.128855673742247853e-05, + 8.122669908157080087e-05, + 8.116471463511116256e-05, + 8.110260350961268343e-05, + 8.104036581683966682e-05, + 8.097800166875725094e-05, + 8.091551117751698903e-05, + 8.085289445547290909e-05, + 8.079015161518270647e-05, + 8.072728276938325451e-05, + 8.066428803101804838e-05, + 8.060116751322506199e-05, + 8.053792132932745100e-05, + 8.047454959286121350e-05, + 8.041105241753831361e-05, + 8.034742991727598200e-05, + 8.028368220618331249e-05, + 8.021980939856524645e-05, + 8.015581160891044332e-05, + 8.009168895191964605e-05, + 8.002744154246827608e-05, + 7.996306949563566620e-05, + 7.989857292669396099e-05, + 7.983395195109770851e-05, + 7.976920668450989467e-05, + 7.970433724277794173e-05, + 7.963934374193567341e-05, + 7.957422629821731463e-05, + 7.950898502804885860e-05, + 7.944362004803672331e-05, + 7.937813147499789236e-05, + 7.931251942592160197e-05, + 7.924678401799830274e-05, + 7.918092536860716420e-05, + 7.911494359531736232e-05, + 7.904883881588863515e-05, + 7.898261114827334281e-05, + 7.891626071060554414e-05, + 7.884978762121757148e-05, + 7.878319199863077424e-05, + 7.871647396154473112e-05, + 7.864963362886523608e-05, + 7.858267111967789801e-05, + 7.851558655325167793e-05, + 7.844838004905242798e-05, + 7.838105172673139889e-05, + 7.831360170612751675e-05, + 7.824603010727106936e-05, + 7.817833705037027564e-05, + 7.811052265583069286e-05, + 7.804258704424362923e-05, + 7.797453033637644028e-05, + 7.790635265320058260e-05, + 7.783805411586582339e-05, + 7.776963484570148728e-05, + 7.770109496423215014e-05, + 7.763243459316549605e-05, + 7.756365385439437728e-05, + 7.749475286999796622e-05, + 7.742573176224246015e-05, + 7.735659065357147247e-05, + 7.728732966662142840e-05, + 7.721794892421053320e-05, + 7.714844854934141492e-05, + 7.707882866520407883e-05, + 7.700908939516322232e-05, + 7.693923086277624612e-05, + 7.686925319178123327e-05, + 7.679915650609957830e-05, + 7.672894092983552643e-05, + 7.665860658727960235e-05, + 7.658815360289524747e-05, + 7.651758210133792894e-05, + 7.644689220744207503e-05, + 7.637608404622438197e-05, + 7.630515774288594165e-05, + 7.623411342280064069e-05, + 7.616295121153260253e-05, + 7.609167123482399016e-05, + 7.602027361859796059e-05, + 7.594875848895824466e-05, + 7.587712597219197961e-05, + 7.580537619475820289e-05, + 7.573350928330057805e-05, + 7.566152536465307324e-05, + 7.558942456581001007e-05, + 7.551720701395761397e-05, + 7.544487283646135608e-05, + 7.537242216085637163e-05, + 7.529985511486525442e-05, + 7.522717182638653712e-05, + 7.515437242349671068e-05, + 7.508145703445338198e-05, + 7.500842578768258874e-05, + 7.493527881179429001e-05, + 7.486201623558487342e-05, + 7.478863818800931824e-05, + 7.471514479821193258e-05, + 7.464153619551374948e-05, + 7.456781250939946231e-05, + 7.449397386955247159e-05, + 7.442002040580932140e-05, + 7.434595224819565422e-05, + 7.427176952690914833e-05, + 7.419747237232557574e-05, + 7.412306091498434171e-05, + 7.404853528562045509e-05, + 7.397389561512206831e-05, + 7.389914203456450774e-05, + 7.382427467519672118e-05, + 7.374929366842958203e-05, + 7.367419914586592167e-05, + 7.359899123927349219e-05, + 7.352367008058600993e-05, + 7.344823580192038075e-05, + 7.337268853556604771e-05, + 7.329702841397183160e-05, + 7.322125556978225172e-05, + 7.314537013579075605e-05, + 7.306937224497566264e-05, + 7.299326203048697292e-05, + 7.291703962563295474e-05, + 7.284070516391288528e-05, + 7.276425877898682888e-05, + 7.268770060467962153e-05, + 7.261103077499573796e-05, + 7.253424942410996749e-05, + 7.245735668635452562e-05, + 7.238035269625068559e-05, + 7.230323758847945073e-05, + 7.222601149788441405e-05, + 7.214867455948837359e-05, + 7.207122690847976641e-05, + 7.199366868021524354e-05, + 7.191600001022343755e-05, + 7.183822103419124745e-05, + 7.176033188798297481e-05, + 7.168233270762808587e-05, + 7.160422362932241768e-05, + 7.152600478942987218e-05, + 7.144767632448419158e-05, + 7.136923837117594793e-05, + 7.129069106637241115e-05, + 7.121203454710371185e-05, + 7.113326895056560609e-05, + 7.105439441412335138e-05, + 7.097541107529749011e-05, + 7.089631907178423249e-05, + 7.081711854144103673e-05, + 7.073780962229066118e-05, + 7.065839245252002600e-05, + 7.057886717048425171e-05, + 7.049923391469204966e-05, + 7.041949282382607787e-05, + 7.033964403672967312e-05, + 7.025968769240884318e-05, + 7.017962393003371693e-05, + 7.009945288894017064e-05, + 7.001917470861635678e-05, + 6.993878952872333097e-05, + 6.985829748908110642e-05, + 6.977769872967124246e-05, + 6.969699339064077477e-05, + 6.961618161228741604e-05, + 6.953526353508117223e-05, + 6.945423929964894690e-05, + 6.937310904677859344e-05, + 6.929187291741863044e-05, + 6.921053105268106063e-05, + 6.912908359382722201e-05, + 6.904753068228930933e-05, + 6.896587245965500547e-05, + 6.888410906767176403e-05, + 6.880224064824563032e-05, + 6.872026734344488692e-05, + 6.863818929548618950e-05, + 6.855600664675484137e-05, + 6.847371953979090214e-05, + 6.839132811729165429e-05, + 6.830883252211612973e-05, + 6.822623289726978185e-05, + 6.814352938592217160e-05, + 6.806072213141038272e-05, + 6.797781127720686160e-05, + 6.789479696695454539e-05, + 6.781167934445217114e-05, + 6.772845855364047923e-05, + 6.764513473864066197e-05, + 6.756170804370420567e-05, + 6.747817861325185412e-05, + 6.739454659185570577e-05, + 6.731081212424608481e-05, + 6.722697535529313683e-05, + 6.714303643004684949e-05, + 6.705899549368509209e-05, + 6.697485269155415116e-05, + 6.689060816915353813e-05, + 6.680626207212154229e-05, + 6.672181454627103660e-05, + 6.663726573755636884e-05, + 6.655261579207711567e-05, + 6.646786485609595843e-05, + 6.638301307602748871e-05, + 6.629806059842283984e-05, + 6.621300757001061547e-05, + 6.612785413764467172e-05, + 6.604260044834409712e-05, + 6.595724664927909086e-05, + 6.587179288775514704e-05, + 6.578623931124993104e-05, + 6.570058606738017073e-05, + 6.561483330390440762e-05, + 6.552898116874194330e-05, + 6.544302980996065573e-05, + 6.535697937576295878e-05, + 6.527083001452182488e-05, + 6.518458187474758135e-05, + 6.509823510509085123e-05, + 6.501178985436147268e-05, + 6.492524627151313038e-05, + 6.483860450564652681e-05, + 6.475186470601352934e-05, + 6.466502702200123247e-05, + 6.457809160315454986e-05, + 6.449105859916137435e-05, + 6.440392815985477345e-05, + 6.431670043521431747e-05, + 6.422937557536838348e-05, + 6.414195373057942370e-05, + 6.405443505126631363e-05, + 6.396681968798890213e-05, + 6.387910779145142672e-05, + 6.379129951250591519e-05, + 6.370339500213723723e-05, + 6.361539441148534408e-05, + 6.352729789182965606e-05, + 6.343910559459304697e-05, + 6.335081767134109873e-05, + 6.326243427378595028e-05, + 6.317395555377064442e-05, + 6.308538166329193673e-05, + 6.299671275448457460e-05, + 6.290794897962479382e-05, + 6.281909049113064381e-05, + 6.273013744156458974e-05, + 6.264108998361869957e-05, + 6.255194827013724971e-05, + 6.246271245410078723e-05, + 6.237338268863007365e-05, + 6.228395912698944594e-05, + 6.219444192257116339e-05, + 6.210483122891843335e-05, + 6.201512719970958185e-05, + 6.192532998876198384e-05, + 6.183543975003095191e-05, + 6.174545663761442545e-05, + 6.165538080573631455e-05, + 6.156521240877017636e-05, + 6.147495160122288420e-05, + 6.138459853773850364e-05, + 6.129415337309841445e-05, + 6.120361626222404821e-05, + 6.111298736015796900e-05, + 6.102226682210589977e-05, + 6.093145480338240381e-05, + 6.084055145945306022e-05, + 6.074955694591877009e-05, + 6.065847141850383705e-05, + 6.056729503307536769e-05, + 6.047602794564682914e-05, + 6.038467031234159951e-05, + 6.029322228943388300e-05, + 6.020168403333103736e-05, + 6.011005570055812406e-05, + 6.001833744780108663e-05, + 5.992652943185163250e-05, + 5.983463180964911034e-05, + 5.974264473826618502e-05, + 5.965056837489484466e-05, + 5.955840287686761029e-05, + 5.946614840166056487e-05, + 5.937380510685658525e-05, + 5.928137315018630474e-05, + 5.918885268951073873e-05, + 5.909624388280542145e-05, + 5.900354688820051469e-05, + 5.891076186394394494e-05, + 5.881788896840534715e-05, + 5.872492836009584466e-05, + 5.863188019765604842e-05, + 5.853874463983896049e-05, + 5.844552184555473805e-05, + 5.835221197381358979e-05, + 5.825881518377006561e-05, + 5.816533163470646151e-05, + 5.807176148601652949e-05, + 5.797810489724576242e-05, + 5.788436202805433465e-05, + 5.779053303822123553e-05, + 5.769661808766392736e-05, + 5.760261733642217045e-05, + 5.750853094466173651e-05, + 5.741435907267816268e-05, + 5.732010188087994644e-05, + 5.722575952981321794e-05, + 5.713133218014473160e-05, + 5.703681999266614193e-05, + 5.694222312829301421e-05, + 5.684754174806922903e-05, + 5.675277601315008232e-05, + 5.665792608482715420e-05, + 5.656299212451039259e-05, + 5.646797429373318859e-05, + 5.637287275415161754e-05, + 5.627768766754830153e-05, + 5.618241919581521120e-05, + 5.608706750097924615e-05, + 5.599163274518410843e-05, + 5.589611509069522890e-05, + 5.580051469990321634e-05, + 5.570483173530693709e-05, + 5.560906635953799775e-05, + 5.551321873534450921e-05, + 5.541728902559405466e-05, + 5.532127739327409615e-05, + 5.522518400149592521e-05, + 5.512900901347700383e-05, + 5.503275259256645683e-05, + 5.493641490222758229e-05, + 5.483999610604222899e-05, + 5.474349636770999011e-05, + 5.464691585105263484e-05, + 5.455025471999656465e-05, + 5.445351313859814299e-05, + 5.435669127102633446e-05, + 5.425978928156700778e-05, + 5.416280733462615446e-05, + 5.406574559471349710e-05, + 5.396860422646716169e-05, + 5.387138339463666922e-05, + 5.377408326408633058e-05, + 5.367670399979623591e-05, + 5.357924576686455852e-05, + 5.348170873049169164e-05, + 5.338409305600469044e-05, + 5.328639890884035845e-05, + 5.318862645454890673e-05, + 5.309077585879799934e-05, + 5.299284728735592106e-05, + 5.289484090611197396e-05, + 5.279675688108065838e-05, + 5.269859537836319726e-05, + 5.260035656418965064e-05, + 5.250204060490191402e-05, + 5.240364766693993544e-05, + 5.230517791686374509e-05, + 5.220663152135697900e-05, + 5.210800864718779352e-05, + 5.200930946125182687e-05, + 5.191053413055465534e-05, + 5.181168282219425638e-05, + 5.171275570340823911e-05, + 5.161375294151303414e-05, + 5.151467470395123258e-05, + 5.141552115827387285e-05, + 5.131629247212721341e-05, + 5.121698881327409837e-05, + 5.111761034959836877e-05, + 5.101815724906507240e-05, + 5.091862967976339144e-05, + 5.081902780988983728e-05, + 5.071935180772982592e-05, + 5.061960184170553867e-05, + 5.051977808031477316e-05, + 5.041988069217816037e-05, + 5.031990984601780579e-05, + 5.021986571066507543e-05, + 5.011974845503852546e-05, + 5.001955824819229830e-05, + 4.991929525925382167e-05, + 4.981895965747244184e-05, + 4.971855161220080919e-05, + 4.961807129287753101e-05, + 4.951751886907086487e-05, + 4.941689451043879957e-05, + 4.931619838673268732e-05, + 4.921543066782006613e-05, + 4.911459152366542876e-05, + 4.901368112433520334e-05, + 4.891269964000190040e-05, + 4.881164724092562044e-05, + 4.871052409748054913e-05, + 4.860933038013735938e-05, + 4.850806625946674173e-05, + 4.840673190613950603e-05, + 4.830532749093056585e-05, + 4.820385318470117114e-05, + 4.810230915842468515e-05, + 4.800069558316896610e-05, + 4.789901263010054138e-05, + 4.779726047048441786e-05, + 4.769543927568762579e-05, + 4.759354921716206136e-05, + 4.749159046646979603e-05, + 4.738956319526602747e-05, + 4.728746757530271158e-05, + 4.718530377843291291e-05, + 4.708307197659216314e-05, + 4.698077234182592527e-05, + 4.687840504627060654e-05, + 4.677597026215801719e-05, + 4.667346816181509265e-05, + 4.657089891766821681e-05, + 4.646826270222489220e-05, + 4.636555968809977441e-05, + 4.626279004799788727e-05, + 4.615995395471742826e-05, + 4.605705158114974812e-05, + 4.595408310028446699e-05, + 4.585104868518970802e-05, + 4.574794850904055090e-05, + 4.564478274509881827e-05, + 4.554155156671897106e-05, + 4.543825514735147633e-05, + 4.533489366052451808e-05, + 4.523146727986619633e-05, + 4.512797617910960251e-05, + 4.502442053205040688e-05, + 4.492080051259297771e-05, + 4.481711629473170594e-05, + 4.471336805253676148e-05, + 4.460955596018119146e-05, + 4.450568019192292248e-05, + 4.440174092210829785e-05, + 4.429773832517652278e-05, + 4.419367257564184282e-05, + 4.408954384811491622e-05, + 4.398535231730816035e-05, + 4.388109815799348142e-05, + 4.377678154504829883e-05, + 4.367240265343660553e-05, + 4.356796165819519186e-05, + 4.346345873445599370e-05, + 4.335889405745059185e-05, + 4.325426780246866004e-05, + 4.314958014490344042e-05, + 4.304483126023300038e-05, + 4.294002132400176729e-05, + 4.283515051187066603e-05, + 4.273021899955265640e-05, + 4.262522696286271485e-05, + 4.252017457769930819e-05, + 4.241506202003046157e-05, + 4.230988946591601171e-05, + 4.220465709151241811e-05, + 4.209936507303076370e-05, + 4.199401358678269796e-05, + 4.188860280916130072e-05, + 4.178313291662297599e-05, + 4.167760408573729816e-05, + 4.157201649312246131e-05, + 4.146637031549577594e-05, + 4.136066572965006722e-05, + 4.125490291246263321e-05, + 4.114908204087216494e-05, + 4.104320329192903303e-05, + 4.093726684273014070e-05, + 4.083127287046996260e-05, + 4.072522155242117823e-05, + 4.061911306591636247e-05, + 4.051294758839341369e-05, + 4.040672529735451666e-05, + 4.030044637036938162e-05, + 4.019411098509867658e-05, + 4.008771931927535877e-05, + 3.998127155070880129e-05, + 3.987476785728904193e-05, + 3.976820841696784343e-05, + 3.966159340778661852e-05, + 3.955492300786214553e-05, + 3.944819739536720182e-05, + 3.934141674857744876e-05, + 3.923458124582867353e-05, + 3.912769106552158667e-05, + 3.902074638614439384e-05, + 3.891374738625440503e-05, + 3.880669424448166666e-05, + 3.869958713952945621e-05, + 3.859242625017821927e-05, + 3.848521175526649433e-05, + 3.837794383371891907e-05, + 3.827062266452711456e-05, + 3.816324842675396781e-05, + 3.805582129953837521e-05, + 3.794834146207565906e-05, + 3.784080909364583142e-05, + 3.773322437359437662e-05, + 3.762558748133670324e-05, + 3.751789859635777143e-05, + 3.741015789821651102e-05, + 3.730236556652684126e-05, + 3.719452178098520270e-05, + 3.708662672135196317e-05, + 3.697868056745572747e-05, + 3.687068349919722020e-05, + 3.676263569653085426e-05, + 3.665453733949218832e-05, + 3.654638860817894651e-05, + 3.643818968275570078e-05, + 3.632994074345305776e-05, + 3.622164197057249028e-05, + 3.611329354446698428e-05, + 3.600489564556436957e-05, + 3.589644845437183276e-05, + 3.578795215143274573e-05, + 3.567940691737416718e-05, + 3.557081293288745581e-05, + 3.546217037871334893e-05, + 3.535347943567044313e-05, + 3.524474028463636302e-05, + 3.513595310655112230e-05, + 3.502711808242265311e-05, + 3.491823539330671450e-05, + 3.480930522033096844e-05, + 3.470032774469904559e-05, + 3.459130314764736694e-05, + 3.448223161049290971e-05, + 3.437311331461335290e-05, + 3.426394844143273869e-05, + 3.415473717244977013e-05, + 3.404547968921830230e-05, + 3.393617617335191624e-05, + 3.382682680652373603e-05, + 3.371743177047054876e-05, + 3.360799124696893172e-05, + 3.349850541788766683e-05, + 3.338897446511984924e-05, + 3.327939857063578962e-05, + 3.316977791646362049e-05, + 3.306011268467394802e-05, + 3.295040305740432106e-05, + 3.284064921686340535e-05, + 3.273085134528712755e-05, + 3.262100962498715260e-05, + 3.251112423833065661e-05, + 3.240119536772098060e-05, + 3.229122319565071576e-05, + 3.218120790463319542e-05, + 3.207114967725602076e-05, + 3.196104869616093531e-05, + 3.185090514402415344e-05, + 3.174071920360482422e-05, + 3.163049105770089761e-05, + 3.152022088915373908e-05, + 3.140990888087183300e-05, + 3.129955521581632885e-05, + 3.118916007698128165e-05, + 3.107872364744141785e-05, + 3.096824611030866558e-05, + 3.085772764873638980e-05, + 3.074716844594358361e-05, + 3.063656868519506798e-05, + 3.052592854980582177e-05, + 3.041524822314610460e-05, + 3.030452788862095866e-05, + 3.019376772969970237e-05, + 3.008296792990074482e-05, + 2.997212867277170416e-05, + 2.986125014193831870e-05, + 2.975033252105960160e-05, + 2.963937599383290272e-05, + 2.952838074401787291e-05, + 2.941734695541661288e-05, + 2.930627481187814902e-05, + 2.919516449730318684e-05, + 2.908401619562406011e-05, + 2.897283009083419057e-05, + 2.886160636696754239e-05, + 2.875034520810396517e-05, + 2.863904679836820806e-05, + 2.852771132193496803e-05, + 2.841633896300889314e-05, + 2.830492990585340877e-05, + 2.819348433477129683e-05, + 2.808200243410891061e-05, + 2.797048438825591388e-05, + 2.785893038165012932e-05, + 2.774734059875731476e-05, + 2.763571522410030449e-05, + 2.752405444223954446e-05, + 2.741235843777705300e-05, + 2.730062739536143863e-05, + 2.718886149966766614e-05, + 2.707706093542668584e-05, + 2.696522588740505049e-05, + 2.685335654040953000e-05, + 2.674145307928713173e-05, + 2.662951568892937292e-05, + 2.651754455425249063e-05, + 2.640553986022666096e-05, + 2.629350179185592441e-05, + 2.618143053418287163e-05, + 2.606932627228814538e-05, + 2.595718919129561759e-05, + 2.584501947635147443e-05, + 2.573281731265437408e-05, + 2.562058288543492138e-05, + 2.550831637996031642e-05, + 2.539601798153932825e-05, + 2.528368787550170865e-05, + 2.517132624722297963e-05, + 2.505893328212912269e-05, + 2.494650916565145901e-05, + 2.483405408327585528e-05, + 2.472156822052303194e-05, + 2.460905176293284895e-05, + 2.449650489609411466e-05, + 2.438392780562439243e-05, + 2.427132067717425624e-05, + 2.415868369642782255e-05, + 2.404601704910644001e-05, + 2.393332092094420681e-05, + 2.382059549774225531e-05, + 2.370784096529851949e-05, + 2.359505750946240923e-05, + 2.348224531611456956e-05, + 2.336940457115159009e-05, + 2.325653546051058586e-05, + 2.314363817017404916e-05, + 2.303071288612435031e-05, + 2.291775979439359063e-05, + 2.280477908104327703e-05, + 2.269177093214394241e-05, + 2.257873553382992496e-05, + 2.246567307222896957e-05, + 2.235258373351693600e-05, + 2.223946770389765979e-05, + 2.212632516958242362e-05, + 2.201315631683986105e-05, + 2.189996133195037942e-05, + 2.178674040121107600e-05, + 2.167349371096042053e-05, + 2.156022144756282569e-05, + 2.144692379738845041e-05, + 2.133360094686283267e-05, + 2.122025308242169513e-05, + 2.110688039051541754e-05, + 2.099348305763405127e-05, + 2.088006127028656703e-05, + 2.076661521500603190e-05, + 2.065314507835404106e-05, + 2.053965104690036523e-05, + 2.042613330725282726e-05, + 2.031259204604195383e-05, + 2.019902744990039264e-05, + 2.008543970551307362e-05, + 1.997182899957163183e-05, + 1.985819551877896446e-05, + 1.974453944987418784e-05, + 1.963086097961241029e-05, + 1.951716029476899776e-05, + 1.940343758214463910e-05, + 1.928969302854495967e-05, + 1.917592682081004890e-05, + 1.906213914579447710e-05, + 1.894833019037167292e-05, + 1.883450014143371330e-05, + 1.872064918589626671e-05, + 1.860677751067772232e-05, + 1.849288530272956456e-05, + 1.837897274901558356e-05, + 1.826504003651668967e-05, + 1.815108735223067970e-05, + 1.803711488317699384e-05, + 1.792312281637613276e-05, + 1.780911133887957143e-05, + 1.769508063774954216e-05, + 1.758103090006338492e-05, + 1.746696231291872782e-05, + 1.735287506341252133e-05, + 1.723876933867144341e-05, + 1.712464532583112683e-05, + 1.701050321204106185e-05, + 1.689634318446417264e-05, + 1.678216543028160476e-05, + 1.666797013667226760e-05, + 1.655375749084273126e-05, + 1.643952768000675205e-05, + 1.632528089139019550e-05, + 1.621101731223042642e-05, + 1.609673712978129968e-05, + 1.598244053129243498e-05, + 1.586812770403943899e-05, + 1.575379883530328179e-05, + 1.563945411237501317e-05, + 1.552509372256056694e-05, + 1.541071785316025945e-05, + 1.529632669149364480e-05, + 1.518192042490449210e-05, + 1.506749924071457981e-05, + 1.495306332627442616e-05, + 1.483861286894250139e-05, + 1.472414805606961343e-05, + 1.460966907502923684e-05, + 1.449517611319692309e-05, + 1.438066935795480850e-05, + 1.426614899669677941e-05, + 1.415161521680739296e-05, + 1.403706820568733378e-05, + 1.392250815075813030e-05, + 1.380793523941588810e-05, + 1.369334965908215084e-05, + 1.357875159718296333e-05, + 1.346414124113339283e-05, + 1.334951877836288075e-05, + 1.323488439631957606e-05, + 1.312023828242474968e-05, + 1.300558062412294393e-05, + 1.289091160886155731e-05, + 1.277623142407013118e-05, + 1.266154025721598117e-05, + 1.254683829573267036e-05, + 1.243212572707571351e-05, + 1.231740273870188410e-05, + 1.220266951804850602e-05, + 1.208792625258413834e-05, + 1.197317312976243238e-05, + 1.185841033702688351e-05, + 1.174363806183597450e-05, + 1.162885649164761893e-05, + 1.151406581389853592e-05, + 1.139926621605990356e-05, + 1.128445788556572031e-05, + 1.116964100986862780e-05, + 1.105481577641405603e-05, + 1.093998237264503282e-05, + 1.082514098600187887e-05, + 1.071029180392702906e-05, + 1.059543501384429372e-05, + 1.048057080318918750e-05, + 1.036569935939322703e-05, + 1.025082086986344460e-05, + 1.013593552203281714e-05, + 1.002104350331426215e-05, + 9.906145001105289569e-06, + 9.791240202813309486e-06, + 9.676329295834891652e-06, + 9.561412467560502097e-06, + 9.446489905379461667e-06, + 9.331561796658983645e-06, + 9.216628328774722844e-06, + 9.101689689095027573e-06, + 8.986746064960212738e-06, + 8.871797643733441110e-06, + 8.756844612754322864e-06, + 8.641887159343714865e-06, + 8.526925470829123185e-06, + 8.411959734523733958e-06, + 8.296990137731426122e-06, + 8.182016867746310629e-06, + 8.067040111857650013e-06, + 7.952060057328992585e-06, + 7.837076891428679167e-06, + 7.722090801409017941e-06, + 7.607101974511015975e-06, + 7.492110597969368248e-06, + 7.377116858991529161e-06, + 7.262120944788176920e-06, + 7.147123042552462927e-06, + 7.032123339464728904e-06, + 6.917122022692405248e-06, + 6.802119279394542663e-06, + 6.687115296701272451e-06, + 6.572110261744105731e-06, + 6.457104361635194686e-06, + 6.342097783472088649e-06, + 6.227090714342621485e-06, + 6.112083341304098299e-06, + 5.997075851413723398e-06, + 5.882068431707773446e-06, + 5.767061269206483151e-06, + 5.652054550913683580e-06, + 5.537048463821669211e-06, + 5.422043194890348217e-06, + 5.307038931072625505e-06, + 5.192035859319152872e-06, + 5.077034166531942943e-06, + 4.962034039615368176e-06, + 4.847035665455195104e-06, + 4.732039230903129371e-06, + 4.617044922807066667e-06, + 4.502052927990396324e-06, + 4.387063433256819241e-06, + 4.272076625395114985e-06, + 4.157092691158413198e-06, + 4.042111817289430102e-06, + 3.927134190525371967e-06, + 3.812159997551480018e-06, + 3.697189425051965061e-06, + 3.582222659689187843e-06, + 3.467259888082938929e-06, + 3.352301296866400049e-06, + 3.237347072614185265e-06, + 3.122397401898362458e-06, + 3.007452471262549791e-06, + 2.892512467231844624e-06, + 2.777577576286927185e-06, + 2.662647984920095180e-06, + 2.547723879563248629e-06, + 2.432805446643940157e-06, + 2.317892872564582453e-06, + 2.202986343681651489e-06, + 2.088086046356616073e-06, + 1.973192166909541621e-06, + 1.858304891623886900e-06, + 1.743424406771850857e-06, + 1.628550898598671382e-06, + 1.513684553301855634e-06, + 1.398825557087215928e-06, + 1.283974096096861987e-06, + 1.169130356465242119e-06, + 1.054294524293224647e-06, + 9.394667856529455831e-07, + 8.246473265874707687e-07, + 7.098363331156459852e-07, + 5.950339912113003892e-07, + 4.802404868336758535e-07, + 3.654560059117586575e-07, + 2.506807343235082277e-07, + 1.359148579467492596e-07, + 2.115856261279452923e-08, +-9.358796588873074748e-08, +-2.083245417845940561e-07, +-3.230509793387332686e-07, +-4.377670928474350443e-07, +-5.524726966345187954e-07, +-6.671676050721023616e-07, +-7.818516325502026062e-07, +-8.965245934923833974e-07, +-1.011186302376517815e-06, +-1.125836573683928373e-06, +-1.240475221945725232e-06, +-1.355102061738008282e-06, +-1.469716907656548483e-06, +-1.584319574337595653e-06, +-1.698909876453024121e-06, +-1.813487628710652483e-06, +-1.928052645849417209e-06, +-2.042604742660131087e-06, +-2.157143733955108204e-06, +-2.271669434588886181e-06, +-2.386181659453455044e-06, +-2.500680223473407122e-06, +-2.615164941626700358e-06, +-2.729635628914268039e-06, +-2.844092100380797790e-06, +-2.958534171109866631e-06, +-3.072961656224307752e-06, +-3.187374370881312539e-06, +-3.301772130293236244e-06, +-3.416154749697226775e-06, +-3.530522044375919404e-06, +-3.644873829652666699e-06, +-3.759209920886715519e-06, +-3.873530133493910196e-06, +-3.987834282916384422e-06, +-4.102122184643297889e-06, +-4.216393654205930695e-06, +-4.330648507178099240e-06, +-4.444886559171275619e-06, +-4.559107625855327226e-06, +-4.673311522933275174e-06, +-4.787498066136507705e-06, +-4.901667071270997703e-06, +-5.015818354166569653e-06, +-5.129951730697594349e-06, +-5.244067016798612416e-06, +-5.358164028434002064e-06, +-5.472242581618686500e-06, +-5.586302492413339718e-06, +-5.700343576919536397e-06, +-5.814365651300536387e-06, +-5.928368531755959274e-06, +-6.042352034517133326e-06, +-6.156315975893090222e-06, +-6.270260172220057328e-06, +-6.384184439882052457e-06, +-6.498088595331553167e-06, +-6.611972455033815353e-06, +-6.725835835538358596e-06, +-6.839678553423406727e-06, +-6.953500425321501263e-06, +-7.067301267909663958e-06, +-7.181080897935158470e-06, +-7.294839132159781847e-06, +-7.408575787431389686e-06, +-7.522290680628257922e-06, +-7.635983628679725028e-06, +-7.749654448586709688e-06, +-7.863302957371357232e-06, +-7.976928972122945434e-06, +-8.090532309993103856e-06, +-8.204112788170758616e-06, +-8.317670223897661889e-06, +-8.431204434488930759e-06, +-8.544715237277519134e-06, +-8.658202449685619228e-06, +-8.771665889169118227e-06, +-8.885105373238101566e-06, +-8.998520719477581521e-06, +-9.111911745496868357e-06, +-9.225278268975799686e-06, +-9.338620107659634562e-06, +-9.451937079334232018e-06, +-9.565229001841399310e-06, +-9.678495693099625584e-06, +-9.791736971053486909e-06, +-9.904952653719690985e-06, +-1.001814255918232529e-05, +-1.013130650556766462e-05, +-1.024444431106482854e-05, +-1.035755579392103799e-05, +-1.047064077243673300e-05, +-1.058369906498624703e-05, +-1.069673048998759676e-05, +-1.080973486592309034e-05, +-1.092271201133459251e-05, +-1.103566174482372111e-05, +-1.114858388504714264e-05, +-1.126147825073703997e-05, +-1.137434466067110875e-05, +-1.148718293369312508e-05, +-1.159999288870799539e-05, +-1.171277434467722487e-05, +-1.182552712063919374e-05, +-1.193825103567934843e-05, +-1.205094590895052871e-05, +-1.216361155966824801e-05, +-1.227624780711104409e-05, +-1.238885447061571364e-05, +-1.250143136959767157e-05, +-1.261397832352108629e-05, +-1.272649515191931697e-05, +-1.283898167439013282e-05, +-1.295143771059597237e-05, +-1.306386308025932029e-05, +-1.317625760318298707e-05, +-1.328862109922033583e-05, +-1.340095338829554166e-05, +-1.351325429039900065e-05, +-1.362552362558243412e-05, +-1.373776121397950870e-05, +-1.384996687577562783e-05, +-1.396214043122871788e-05, +-1.407428170066412738e-05, +-1.418639050447523513e-05, +-1.429846666311845784e-05, +-1.441050999713371440e-05, +-1.452252032711462052e-05, +-1.463449747372889373e-05, +-1.474644125771336439e-05, +-1.485835149987470577e-05, +-1.497022802108422318e-05, +-1.508207064229864010e-05, +-1.519387918452989132e-05, +-1.530565346886576342e-05, +-1.541739331646503451e-05, +-1.552909854855276812e-05, +-1.564076898644067924e-05, +-1.575240445150220784e-05, +-1.586400476516816854e-05, +-1.597556974897164668e-05, +-1.608709922449845373e-05, +-1.619859301340750688e-05, +-1.631005093745095116e-05, +-1.642147281841952578e-05, +-1.653285847821280016e-05, +-1.664420773878451994e-05, +-1.675552042216292223e-05, +-1.686679635046577211e-05, +-1.697803534587599185e-05, +-1.708923723063675147e-05, +-1.720040182709666303e-05, +-1.731152895766038848e-05, +-1.742261844480852455e-05, +-1.753367011111810778e-05, +-1.764468377921297494e-05, +-1.775565927180890996e-05, +-1.786659641170877850e-05, +-1.797749502177815379e-05, +-1.808835492496034972e-05, +-1.819917594429680728e-05, +-1.830995790287244054e-05, +-1.842070062388560505e-05, +-1.853140393059370128e-05, +-1.864206764633350349e-05, +-1.875269159454097352e-05, +-1.886327559870212942e-05, +-1.897381948239806703e-05, +-1.908432306929990144e-05, +-1.919478618314469437e-05, +-1.930520864775035850e-05, +-1.941559028703578301e-05, +-1.952593092496664718e-05, +-1.963623038562507700e-05, +-1.974648849315534016e-05, +-1.985670507178906736e-05, +-1.996687994584038690e-05, +-2.007701293970631435e-05, +-2.018710387786206334e-05, +-2.029715258488103897e-05, +-2.040715888540560160e-05, +-2.051712260416698903e-05, +-2.062704356598059013e-05, +-2.073692159574651398e-05, +-2.084675651844467373e-05, +-2.095654815915471217e-05, +-2.106629634302702986e-05, +-2.117600089530256161e-05, +-2.128566164130797213e-05, +-2.139527840645155302e-05, +-2.150485101624251814e-05, +-2.161437929626216386e-05, +-2.172386307218372690e-05, +-2.183330216976784422e-05, +-2.194269641486250899e-05, +-2.205204563339886929e-05, +-2.216134965141084540e-05, +-2.227060829500590380e-05, +-2.237982139038534863e-05, +-2.248898876383925312e-05, +-2.259811024174706600e-05, +-2.270718565057255306e-05, +-2.281621481688430212e-05, +-2.292519756732605991e-05, +-2.303413372863685759e-05, +-2.314302312764616575e-05, +-2.325186559126981843e-05, +-2.336066094652910528e-05, +-2.346940902052216895e-05, +-2.357810964044387646e-05, +-2.368676263358077092e-05, +-2.379536782731195920e-05, +-2.390392504910398566e-05, +-2.401243412653090349e-05, +-2.412089488724515371e-05, +-2.422930715899734166e-05, +-2.433767076963182569e-05, +-2.444598554708675100e-05, +-2.455425131938941813e-05, +-2.466246791468128052e-05, +-2.477063516116421896e-05, +-2.487875288716921222e-05, +-2.498682092110303835e-05, +-2.509483909146788521e-05, +-2.520280722687641745e-05, +-2.531072515602760900e-05, +-2.541859270770209116e-05, +-2.552640971080620506e-05, +-2.563417599432400544e-05, +-2.574189138733628496e-05, +-2.584955571904102160e-05, +-2.595716881869955818e-05, +-2.606473051570536788e-05, +-2.617224063953071150e-05, +-2.627969901974606500e-05, +-2.638710548603568121e-05, +-2.649445986817269380e-05, +-2.660176199601520063e-05, +-2.670901169954981139e-05, +-2.681620880884357004e-05, +-2.692335315406381262e-05, +-2.703044456549737456e-05, +-2.713748287350270624e-05, +-2.724446790855387468e-05, +-2.735139950123534913e-05, +-2.745827748221912109e-05, +-2.756510168227824662e-05, +-2.767187193230746995e-05, +-2.777858806326988407e-05, +-2.788524990626470355e-05, +-2.799185729247478580e-05, +-2.809841005318593657e-05, +-2.820490801980653410e-05, +-2.831135102381956663e-05, +-2.841773889682643766e-05, +-2.852407147054205307e-05, +-2.863034857677127363e-05, +-2.873657004742382961e-05, +-2.884273571453324341e-05, +-2.894884541020467948e-05, +-2.905489896668231396e-05, +-2.916089621629679824e-05, +-2.926683699148951466e-05, +-2.937272112480813463e-05, +-2.947854844890652378e-05, +-2.958431879654081171e-05, +-2.969003200058835200e-05, +-2.979568789401927206e-05, +-2.990128630991615137e-05, +-3.000682708146922733e-05, +-3.011231004197691697e-05, +-3.021773502484111426e-05, +-3.032310186358652958e-05, +-3.042841039183236828e-05, +-3.053366044331184975e-05, +-3.063885185186740641e-05, +-3.074398445144643500e-05, +-3.084905807612023626e-05, +-3.095407256005623897e-05, +-3.105902773753667541e-05, +-3.116392344295504407e-05, +-3.126875951081514070e-05, +-3.137353577572746011e-05, +-3.147825207242814255e-05, +-3.158290823575060836e-05, +-3.168750410064537167e-05, +-3.179203950217463300e-05, +-3.189651427551354644e-05, +-3.200092825594498828e-05, +-3.210528127887898468e-05, +-3.220957317982476627e-05, +-3.231380379440977558e-05, +-3.241797295837501859e-05, +-3.252208050757096500e-05, +-3.262612627797658959e-05, +-3.273011010567103386e-05, +-3.283403182685316912e-05, +-3.293789127783663625e-05, +-3.304168829505052334e-05, +-3.314542271503499499e-05, +-3.324909437445966952e-05, +-3.335270311009641233e-05, +-3.345624875883815351e-05, +-3.355973115769435457e-05, +-3.366315014378656320e-05, +-3.376650555436737323e-05, +-3.386979722679764288e-05, +-3.397302499854162259e-05, +-3.407618870720929312e-05, +-3.417928819051053091e-05, +-3.428232328627312615e-05, +-3.438529383245764995e-05, +-3.448819966713428622e-05, +-3.459104062847813578e-05, +-3.469381655481188647e-05, +-3.479652728455917213e-05, +-3.489917265626322763e-05, +-3.500175250860647911e-05, +-3.510426668035886134e-05, +-3.520671501044360851e-05, +-3.530909733788626965e-05, +-3.541141350183346523e-05, +-3.551366334156700222e-05, +-3.561584669648155981e-05, +-3.571796340607909221e-05, +-3.582001331001228483e-05, +-3.592199624803693749e-05, +-3.602391206003201538e-05, +-3.612576058601765360e-05, +-3.622754166610473494e-05, +-3.632925514056014536e-05, +-3.643090084975572835e-05, +-3.653247863419179181e-05, +-3.663398833448834634e-05, +-3.673542979140808354e-05, +-3.683680284580625878e-05, +-3.693810733869513343e-05, +-3.703934311119349854e-05, +-3.714051000454600068e-05, +-3.724160786014092965e-05, +-3.734263651946503437e-05, +-3.744359582414485130e-05, +-3.754448561594269290e-05, +-3.764530573673344568e-05, +-3.774605602852370640e-05, +-3.784673633344701156e-05, +-3.794734649375975131e-05, +-3.804788635185974322e-05, +-3.814835575025872738e-05, +-3.824875453159663725e-05, +-3.834908253866004462e-05, +-3.844933961433663670e-05, +-3.854952560165683591e-05, +-3.864964034378881932e-05, +-3.874968368401704471e-05, +-3.884965546575955709e-05, +-3.894955553256439055e-05, +-3.904938372810966990e-05, +-3.914913989619915184e-05, +-3.924882388078086655e-05, +-3.934843552592002608e-05, +-3.944797467581739490e-05, +-3.954744117480470908e-05, +-3.964683486734107813e-05, +-3.974615559803089463e-05, +-3.984540321159674278e-05, +-3.994457755289808728e-05, +-4.004367846692677391e-05, +-4.014270579880761911e-05, +-4.024165939379358519e-05, +-4.034053909728459132e-05, +-4.043934475480019159e-05, +-4.053807621199837240e-05, +-4.063673331467110717e-05, +-4.073531590873956561e-05, +-4.083382384027326334e-05, +-4.093225695546272655e-05, +-4.103061510063774715e-05, +-4.112889812226338485e-05, +-4.122710586693996036e-05, +-4.132523818139879988e-05, +-4.142329491252062589e-05, +-4.152127590731321584e-05, +-4.161918101290740409e-05, +-4.171701007659699416e-05, +-4.181476294579519412e-05, +-4.191243946805171984e-05, +-4.201003949106716073e-05, +-4.210756286266621344e-05, +-4.220500943081586940e-05, +-4.230237904362077982e-05, +-4.239967154931945423e-05, +-4.249688679630255638e-05, +-4.259402463308963456e-05, +-4.269108490832675666e-05, +-4.278806747082511457e-05, +-4.288497216951790681e-05, +-4.298179885347752990e-05, +-4.307854737192995761e-05, +-4.317521757422749357e-05, +-4.327180930986748058e-05, +-4.336832242848784856e-05, +-4.346475677986687741e-05, +-4.356111221391977499e-05, +-4.365738858072051024e-05, +-4.375358573045370171e-05, +-4.384970351347641706e-05, +-4.394574178027012940e-05, +-4.404170038145849140e-05, +-4.413757916782041346e-05, +-4.423337799026894892e-05, +-4.432909669984688944e-05, +-4.442473514776612835e-05, +-4.452029318536456361e-05, +-4.461577066412353987e-05, +-4.471116743568556847e-05, +-4.480648335180658184e-05, +-4.490171826441775334e-05, +-4.499687202557645072e-05, +-4.509194448748968194e-05, +-4.518693550250488624e-05, +-4.528184492313184860e-05, +-4.537667260199551659e-05, +-4.547141839189672248e-05, +-4.556608214576466807e-05, +-4.566066371667492247e-05, +-4.575516295786622719e-05, +-4.584957972269798192e-05, +-4.594391386468964168e-05, +-4.603816523751574306e-05, +-4.613233369498528403e-05, +-4.622641909105903058e-05, +-4.632042127984521370e-05, +-4.641434011559568732e-05, +-4.650817545272330260e-05, +-4.660192714577637499e-05, +-4.669559504945149813e-05, +-4.678917901861143999e-05, +-4.688267890824217456e-05, +-4.697609457349163529e-05, +-4.706942586966554094e-05, +-4.716267265220675507e-05, +-4.725583477671229445e-05, +-4.734891209892888386e-05, +-4.744190447475404024e-05, +-4.753481176023091604e-05, +-4.762763381156692705e-05, +-4.772037048510706082e-05, +-4.781302163735203019e-05, +-4.790558712495403813e-05, +-4.799806680471252907e-05, +-4.809046053359140058e-05, +-4.818276816869426998e-05, +-4.827498956728103560e-05, +-4.836712458676407521e-05, +-4.845917308470853747e-05, +-4.855113491882824225e-05, +-4.864300994700312953e-05, +-4.873479802725343504e-05, +-4.882649901775750509e-05, +-4.891811277684735129e-05, +-4.900963916300516083e-05, +-4.910107803487930874e-05, +-4.919242925126064101e-05, +-4.928369267109852076e-05, +-4.937486815349758241e-05, +-4.946595555771727090e-05, +-4.955695474316833835e-05, +-4.964786556942941205e-05, +-4.973868789622676729e-05, +-4.982942158343019385e-05, +-4.992006649109033997e-05, +-5.001062247939791928e-05, +-5.010108940870021773e-05, +-5.019146713951368394e-05, +-5.028175553249952784e-05, +-5.037195444848026153e-05, +-5.046206374843576907e-05, +-5.055208329349985733e-05, +-5.064201294497630221e-05, +-5.073185256431877733e-05, +-5.082160201312718132e-05, +-5.091126115318408729e-05, +-5.100082984641512209e-05, +-5.109030795490428060e-05, +-5.117969534090716658e-05, +-5.126899186682661844e-05, +-5.135819739522914170e-05, +-5.144731178884087708e-05, +-5.153633491054819684e-05, +-5.162526662339336119e-05, +-5.171410679059549757e-05, +-5.180285527550609420e-05, +-5.189151194166549376e-05, +-5.198007665275924748e-05, +-5.206854927263392417e-05, +-5.215692966530973437e-05, +-5.224521769496082504e-05, +-5.233341322591059032e-05, +-5.242151612266907654e-05, +-5.250952624989225684e-05, +-5.259744347239883637e-05, +-5.268526765518629165e-05, +-5.277299866338683163e-05, +-5.286063636232372882e-05, +-5.294818061746811377e-05, +-5.303563129445375415e-05, +-5.312298825909497117e-05, +-5.321025137734540603e-05, +-5.329742051533554683e-05, +-5.338449553936756511e-05, +-5.347147631589655234e-05, +-5.355836271154233773e-05, +-5.364515459310537180e-05, +-5.373185182752776286e-05, +-5.381845428192873042e-05, +-5.390496182360088502e-05, +-5.399137431999120727e-05, +-5.407769163871581331e-05, +-5.416391364755767122e-05, +-5.425004021446174244e-05, +-5.433607120755188177e-05, +-5.442200649510618531e-05, +-5.450784594557041426e-05, +-5.459358942757288913e-05, +-5.467923680988578375e-05, +-5.476478796146068027e-05, +-5.485024275142452379e-05, +-5.493560104906089952e-05, +-5.502086272382516416e-05, +-5.510602764534094938e-05, +-5.519109568339693628e-05, +-5.527606670796198006e-05, +-5.536094058916235527e-05, +-5.544571719729720575e-05, +-5.553039640283518355e-05, +-5.561497807641427955e-05, +-5.569946208883875383e-05, +-5.578384831109394176e-05, +-5.586813661432418374e-05, +-5.595232686984753648e-05, +-5.603641894915295404e-05, +-5.612041272389992871e-05, +-5.620430806591513676e-05, +-5.628810484720762403e-05, +-5.637180293994647139e-05, +-5.645540221647623105e-05, +-5.653890254931306410e-05, +-5.662230381114043078e-05, +-5.670560587482653941e-05, +-5.678880861339966041e-05, +-5.687191190006454523e-05, +-5.695491560819835377e-05, +-5.703781961135174540e-05, +-5.712062378324359344e-05, +-5.720332799777840021e-05, +-5.728593212902211923e-05, +-5.736843605121803212e-05, +-5.745083963878361787e-05, +-5.753314276631007177e-05, +-5.761534530855903926e-05, +-5.769744714047767275e-05, +-5.777944813717688662e-05, +-5.786134817394547218e-05, +-5.794314712624746167e-05, +-5.802484486971827939e-05, +-5.810644128017963589e-05, +-5.818793623362153021e-05, +-5.826932960619824516e-05, +-5.835062127426256061e-05, +-5.843181111432814526e-05, +-5.851289900308472870e-05, +-5.859388481741027157e-05, +-5.867476843434748580e-05, +-5.875554973111968429e-05, +-5.883622858512779259e-05, +-5.891680487394540902e-05, +-5.899727847533514218e-05, +-5.907764926722929190e-05, +-5.915791712772701670e-05, +-5.923808193512738167e-05, +-5.931814356789313929e-05, +-5.939810190466480381e-05, +-5.947795682427268582e-05, +-5.955770820571798648e-05, +-5.963735592817034459e-05, +-5.971689987099996951e-05, +-5.979633991374144926e-05, +-5.987567593610912576e-05, +-5.995490781801083717e-05, +-6.003403543950933379e-05, +-6.011305868087246987e-05, +-6.019197742253348793e-05, +-6.027079154510567581e-05, +-6.034950092939797919e-05, +-6.042810545637737976e-05, +-6.050660500720304082e-05, +-6.058499946322213313e-05, +-6.066328870595209458e-05, +-6.074147261709179077e-05, +-6.081955107853576547e-05, +-6.089752397233541261e-05, +-6.097539118074869372e-05, +-6.105315258620158106e-05, +-6.113080807130533698e-05, +-6.120835751885444727e-05, +-6.128580081182515742e-05, +-6.136313783337309417e-05, +-6.144036846684771248e-05, +-6.151749259577039472e-05, +-6.159451010384633615e-05, +-6.167142087497763669e-05, +-6.174822479322955517e-05, +-6.182492174286090757e-05, +-6.190151160832214265e-05, +-6.197799427423688332e-05, +-6.205436962541663120e-05, +-6.213063754685748687e-05, +-6.220679792373642295e-05, +-6.228285064142555488e-05, +-6.235879558547230005e-05, +-6.243463264161179191e-05, +-6.251036169576492838e-05, +-6.258598263403784335e-05, +-6.266149534271904704e-05, +-6.273689970829323607e-05, +-6.281219561742050386e-05, +-6.288738295695070631e-05, +-6.296246161392027698e-05, +-6.303743147555137323e-05, +-6.311229242925029065e-05, +-6.318704436261980933e-05, +-6.326168716343946144e-05, +-6.333622071967988333e-05, +-6.341064491949816701e-05, +-6.348495965123639650e-05, +-6.355916480343375022e-05, +-6.363326026480781205e-05, +-6.370724592426647045e-05, +-6.378112167090696982e-05, +-6.385488739401385045e-05, +-6.392854298305711898e-05, +-6.400208832770599065e-05, +-6.407552331780772025e-05, +-6.414884784340227949e-05, +-6.422206179471849456e-05, +-6.429516506217494059e-05, +-6.436815753637538796e-05, +-6.444103910812417095e-05, +-6.451380966840518122e-05, +-6.458646910839551530e-05, +-6.465901731946193732e-05, +-6.473145419315866995e-05, +-6.480377962124029645e-05, +-6.487599349564494194e-05, +-6.494809570849210500e-05, +-6.502008615211147039e-05, +-6.509196471901083014e-05, +-6.516373130188939219e-05, +-6.523538579364710453e-05, +-6.530692808736603399e-05, +-6.537835807632318694e-05, +-6.544967565398702634e-05, +-6.552088071401495088e-05, +-6.559197315026675274e-05, +-6.566295285678732448e-05, +-6.573381972780446359e-05, +-6.580457365775852537e-05, +-6.587521454126932772e-05, +-6.594574227314931058e-05, +-6.601615674841435088e-05, +-6.608645786226640176e-05, +-6.615664551009193400e-05, +-6.622671958748980005e-05, +-6.629667999023973793e-05, +-6.636652661431546299e-05, +-6.643625935589740725e-05, +-6.650587811133761842e-05, +-6.657538277720517436e-05, +-6.664477325025079744e-05, +-6.671404942741979724e-05, +-6.678321120586483699e-05, +-6.685225848291431554e-05, +-6.692119115610162727e-05, +-6.699000912316151646e-05, +-6.705871228201457318e-05, +-6.712730053077697759e-05, +-6.719577376777327994e-05, +-6.726413189150143507e-05, +-6.733237480067762063e-05, +-6.740050239420203044e-05, +-6.746851457117326737e-05, +-6.753641123088710996e-05, +-6.760419227283561805e-05, +-6.767185759670465257e-05, +-6.773940710238591026e-05, +-6.780684068995888522e-05, +-6.787415825970050478e-05, +-6.794135971209700148e-05, +-6.800844494781355543e-05, +-6.807541386772230740e-05, +-6.814226637289922815e-05, +-6.820900236460904805e-05, +-6.827562174431723750e-05, +-6.834212441368778430e-05, +-6.840851027457979202e-05, +-6.847477922905973141e-05, +-6.854093117938367310e-05, +-6.860696602800678788e-05, +-6.867288367759466310e-05, +-6.873868403099398850e-05, +-6.880436699125958000e-05, +-6.886993246165184536e-05, +-6.893538034562114454e-05, +-6.900071054682086792e-05, +-6.906592296910361449e-05, +-6.913101751652243865e-05, +-6.919599409332660830e-05, +-6.926085260397541485e-05, +-6.932559295311869823e-05, +-6.939021504560989801e-05, +-6.945471878650312601e-05, +-6.951910408105008989e-05, +-6.958337083471222270e-05, +-6.964751895314329492e-05, +-6.971154834220025655e-05, +-6.977545890794247809e-05, +-6.983925055662973131e-05, +-6.990292319472080681e-05, +-6.996647672888487107e-05, +-7.002991106598398371e-05, +-7.009322611308484749e-05, +-7.015642177745672124e-05, +-7.021949796656738122e-05, +-7.028245458809644324e-05, +-7.034529154991670083e-05, +-7.040800876010636317e-05, +-7.047060612694654787e-05, +-7.053308355892132166e-05, +-7.059544096471455615e-05, +-7.065767825322196252e-05, +-7.071979533353669870e-05, +-7.078179211494665891e-05, +-7.084366850696050802e-05, +-7.090542441927880112e-05, +-7.096705976180619439e-05, +-7.102857444465968497e-05, +-7.108996837815160261e-05, +-7.115124147280107504e-05, +-7.121239363933162922e-05, +-7.127342478866888740e-05, +-7.133433483195074506e-05, +-7.139512368051402166e-05, +-7.145579124589256331e-05, +-7.151633743984147468e-05, +-7.157676217430947185e-05, +-7.163706536145118798e-05, +-7.169724691363672786e-05, +-7.175730674342278750e-05, +-7.181724476359060115e-05, +-7.187706088711616644e-05, +-7.193675502718439320e-05, +-7.199632709718235433e-05, +-7.205577701071504734e-05, +-7.211510468157400673e-05, +-7.217431002377621330e-05, +-7.223339295153403462e-05, +-7.229235337926636523e-05, +-7.235119122160983457e-05, +-7.240990639339120048e-05, +-7.246849880965255692e-05, +-7.252696838564824395e-05, +-7.258531503683115973e-05, +-7.264353867886217948e-05, +-7.270163922761980493e-05, +-7.275961659917146000e-05, +-7.281747070981077388e-05, +-7.287520147602821264e-05, +-7.293280881452506546e-05, +-7.299029264221044955e-05, +-7.304765287620129655e-05, +-7.310488943382027901e-05, +-7.316200223260635428e-05, +-7.321899119029892157e-05, +-7.327585622484599414e-05, +-7.333259725441436372e-05, +-7.338921419736399974e-05, +-7.344570697227171207e-05, +-7.350207549792873865e-05, +-7.355831969332681354e-05, +-7.361443947767041835e-05, +-7.367043477037275715e-05, +-7.372630549105396757e-05, +-7.378205155955173239e-05, +-7.383767289590546378e-05, +-7.389316942036416370e-05, +-7.394854105339753706e-05, +-7.400378771566922540e-05, +-7.405890932806129636e-05, +-7.411390581167066579e-05, +-7.416877708779710376e-05, +-7.422352307795348028e-05, +-7.427814370386301413e-05, +-7.433263888745715868e-05, +-7.438700855088565785e-05, +-7.444125261650169254e-05, +-7.449537100687167912e-05, +-7.454936364477354825e-05, +-7.460323045319591816e-05, +-7.465697135533661748e-05, +-7.471058627461226679e-05, +-7.476407513464334382e-05, +-7.481743785926465952e-05, +-7.487067437252271527e-05, +-7.492378459867604179e-05, +-7.497676846219186514e-05, +-7.502962588775776191e-05, +-7.508235680026573503e-05, +-7.513496112482252721e-05, +-7.518743878674678848e-05, +-7.523978971156822237e-05, +-7.529201382503537864e-05, +-7.534411105310261569e-05, +-7.539608132193961450e-05, +-7.544792455792854612e-05, +-7.549964068766502033e-05, +-7.555122963795465689e-05, +-7.560269133582451031e-05, +-7.565402570850648153e-05, +-7.570523268344935258e-05, +-7.575631218831442267e-05, +-7.580726415097722938e-05, +-7.585808849952435022e-05, +-7.590878516226316048e-05, +-7.595935406770811806e-05, +-7.600979514458984369e-05, +-7.606010832185287115e-05, +-7.611029352865369578e-05, +-7.616035069437024764e-05, +-7.621027974858977558e-05, +-7.626008062110720739e-05, +-7.630975324194604775e-05, +-7.635929754133513570e-05, +-7.640871344971791456e-05, +-7.645800089776187800e-05, +-7.650715981633357922e-05, +-7.655619013653056071e-05, +-7.660509178965620072e-05, +-7.665386470723128715e-05, +-7.670250882099007375e-05, +-7.675102406289076979e-05, +-7.679941036509166049e-05, +-7.684766765998212877e-05, +-7.689579588015855885e-05, +-7.694379495843231868e-05, +-7.699166482784039868e-05, +-7.703940542162211497e-05, +-7.708701667323931614e-05, +-7.713449851637496028e-05, +-7.718185088492064661e-05, +-7.722907371298490969e-05, +-7.727616693490141863e-05, +-7.732313048520504336e-05, +-7.736996429866190060e-05, +-7.741666831024715480e-05, +-7.746324245515167240e-05, +-7.750968666879245734e-05, +-7.755600088678999120e-05, +-7.760218504498845357e-05, +-7.764823907945375692e-05, +-7.769416292646171528e-05, +-7.773995652250640612e-05, +-7.778561980430708216e-05, +-7.783115270878776125e-05, +-7.787655517309632187e-05, +-7.792182713460287684e-05, +-7.796696853088859252e-05, +-7.801197929975409130e-05, +-7.805685937921859785e-05, +-7.810160870751664585e-05, +-7.814622722310733433e-05, +-7.819071486466129019e-05, +-7.823507157106970769e-05, +-7.827929728144174639e-05, +-7.832339193510530365e-05, +-7.836735547160384330e-05, +-7.841118783070654655e-05, +-7.845488895239436636e-05, +-7.849845877686894506e-05, +-7.854189724455054079e-05, +-7.858520429607682134e-05, +-7.862837987230972172e-05, +-7.867142391432450726e-05, +-7.871433636341692935e-05, +-7.875711716110281888e-05, +-7.879976624911644637e-05, +-7.884228356940942422e-05, +-7.888466906415890598e-05, +-7.892692267575534843e-05, +-7.896904434681077862e-05, +-7.901103402015659835e-05, +-7.905289163884442443e-05, +-7.909461714614241597e-05, +-7.913621048554603504e-05, +-7.917767160076331510e-05, +-7.921900043572506608e-05, +-7.926019693458156751e-05, +-7.930126104170143013e-05, +-7.934219270167933440e-05, +-7.938299185932452438e-05, +-7.942365845966780085e-05, +-7.946419244796093853e-05, +-7.950459376967596785e-05, +-7.954486237050354856e-05, +-7.958499819636062698e-05, +-7.962500119337888923e-05, +-7.966487130791294693e-05, +-7.970460848653781647e-05, +-7.974421267605009804e-05, +-7.978368382346416739e-05, +-7.982302187602219117e-05, +-7.986222678118131974e-05, +-7.990129848662165610e-05, +-7.994023694024438562e-05, +-7.997904209017012264e-05, +-8.001771388474673027e-05, +-8.005625227253950838e-05, +-8.009465720232922844e-05, +-8.013292862313025331e-05, +-8.017106648416953078e-05, +-8.020907073489753046e-05, +-8.024694132499244508e-05, +-8.028467820434185393e-05, +-8.032228132306779499e-05, +-8.035975063150745264e-05, +-8.039708608021891743e-05, +-8.043428761998899237e-05, +-8.047135520182144286e-05, +-8.050828877693837909e-05, +-8.054508829679364590e-05, +-8.058175371305673594e-05, +-8.061828497761925423e-05, +-8.065468204260241270e-05, +-8.069094486033919508e-05, +-8.072707338339015913e-05, +-8.076306756454231179e-05, +-8.079892735679990699e-05, +-8.083465271338959566e-05, +-8.087024358776745945e-05, +-8.090569993360124338e-05, +-8.094102170479271750e-05, +-8.097620885545969271e-05, +-8.101126133994337975e-05, +-8.104617911281450143e-05, +-8.108096212885698890e-05, +-8.111561034308219828e-05, +-8.115012371072885641e-05, +-8.118450218725307272e-05, +-8.121874572833514248e-05, +-8.125285428988456135e-05, +-8.128682782802294912e-05, +-8.132066629910676377e-05, +-8.135436965970941215e-05, +-8.138793786662958476e-05, +-8.142137087688949392e-05, +-8.145466864773465696e-05, +-8.148783113663304238e-05, +-8.152085830128114139e-05, +-8.155375009959429141e-05, +-8.158650648971323550e-05, +-8.161912743000280775e-05, +-8.165161287905151315e-05, +-8.168396279567018592e-05, +-8.171617713889883349e-05, +-8.174825586799635017e-05, +-8.178019894244760511e-05, +-8.181200632196142296e-05, +-8.184367796646974363e-05, +-8.187521383613275870e-05, +-8.190661389133057659e-05, +-8.193787809266951097e-05, +-8.196900640097974969e-05, +-8.199999877731634415e-05, +-8.203085518295695955e-05, +-8.206157557940865115e-05, +-8.209215992839845885e-05, +-8.212260819187899082e-05, +-8.215292033202830149e-05, +-8.218309631124872609e-05, +-8.221313609216590482e-05, +-8.224303963763446139e-05, +-8.227280691073010188e-05, +-8.230243787475381603e-05, +-8.233193249323282593e-05, +-8.236129072991656087e-05, +-8.239051254878443657e-05, +-8.241959791403611084e-05, +-8.244854679009868000e-05, +-8.247735914162333142e-05, +-8.250603493348695626e-05, +-8.253457413078964223e-05, +-8.256297669886169383e-05, +-8.259124260325402360e-05, +-8.261937180974389839e-05, +-8.264736428433441080e-05, +-8.267521999325395065e-05, +-8.270293890295491747e-05, +-8.273052098012010378e-05, +-8.275796619164915604e-05, +-8.278527450467569159e-05, +-8.281244588655416617e-05, +-8.283948030486441405e-05, +-8.286637772741590352e-05, +-8.289313812224100128e-05, +-8.291976145759371209e-05, +-8.294624770196165912e-05, +-8.297259682405301942e-05, +-8.299880879280176866e-05, +-8.302488357737281758e-05, +-8.305082114714793092e-05, +-8.307662147174346766e-05, +-8.310228452099667940e-05, +-8.312781026497084681e-05, +-8.315319867395880326e-05, +-8.317844971847724277e-05, +-8.320356336926426697e-05, +-8.322853959729230072e-05, +-8.325337837375474282e-05, +-8.327807967007064163e-05, +-8.330264345789037362e-05, +-8.332706970908298528e-05, +-8.335135839574760435e-05, +-8.337550949021150181e-05, +-8.339952296502475219e-05, +-8.342339879296424511e-05, +-8.344713694703684303e-05, +-8.347073740046807844e-05, +-8.349420012671834911e-05, +-8.351752509946848467e-05, +-8.354071229262703788e-05, +-8.356376168033269694e-05, +-8.358667323694374165e-05, +-8.360944693704902098e-05, +-8.363208275546525606e-05, +-8.365458066723248658e-05, +-8.367694064761754022e-05, +-8.369916267211809839e-05, +-8.372124671645007888e-05, +-8.374319275656441381e-05, +-8.376500076863402572e-05, +-8.378667072905899107e-05, +-8.380820261446690611e-05, +-8.382959640171127420e-05, +-8.385085206787139733e-05, +-8.387196959025637415e-05, +-8.389294894639894712e-05, +-8.391379011405958180e-05, +-8.393449307122539623e-05, +-8.395505779611022866e-05, +-8.397548426715378378e-05, +-8.399577246302533250e-05, +-8.401592236261797931e-05, +-8.403593394505283639e-05, +-8.405580718967749221e-05, +-8.407554207606582179e-05, +-8.409513858402084627e-05, +-8.411459669357007087e-05, +-8.413391638496868323e-05, +-8.415309763869855059e-05, +-8.417214043546876186e-05, +-8.419104475621371668e-05, +-8.420981058209837033e-05, +-8.422843789451149804e-05, +-8.424692667506944910e-05, +-8.426527690561590287e-05, +-8.428348856822094723e-05, +-8.430156164518140386e-05, +-8.431949611902348450e-05, +-8.433729197249732930e-05, +-8.435494918858158755e-05, +-8.437246775048141197e-05, +-8.438984764162858060e-05, +-8.440708884568408539e-05, +-8.442419134653334812e-05, +-8.444115512828983898e-05, +-8.445798017529382968e-05, +-8.447466647211324727e-05, +-8.449121400354132959e-05, +-8.450762275460159899e-05, +-8.452389271054184508e-05, +-8.454002385683778383e-05, +-8.455601617919190568e-05, +-8.457186966353328575e-05, +-8.458758429602093135e-05, +-8.460316006303841515e-05, +-8.461859695119430889e-05, +-8.463389494732940685e-05, +-8.464905403850774056e-05, +-8.466407421202132213e-05, +-8.467895545539049667e-05, +-8.469369775636216688e-05, +-8.470830110290732649e-05, +-8.472276548322915115e-05, +-8.473709088575422988e-05, +-8.475127729913688841e-05, +-8.476532471226127618e-05, +-8.477923311423297742e-05, +-8.479300249439054426e-05, +-8.480663284229636239e-05, +-8.482012414773991719e-05, +-8.483347640073988084e-05, +-8.484668959154029048e-05, +-8.485976371061067019e-05, +-8.487269874865162821e-05, +-8.488549469658759276e-05, +-8.489815154557090490e-05, +-8.491066928698307893e-05, +-8.492304791242793127e-05, +-8.493528741374124335e-05, +-8.494738778298295545e-05, +-8.495934901244097488e-05, +-8.497117109462904827e-05, +-8.498285402229120678e-05, +-8.499439778839345844e-05, +-8.500580238613351881e-05, +-8.501706780893353332e-05, +-8.502819405044234049e-05, +-8.503918110453888724e-05, +-8.505002896532461230e-05, +-8.506073762712984304e-05, +-8.507130708451379547e-05, +-8.508173733226016963e-05, +-8.509202836538033450e-05, +-8.510218017911229795e-05, +-8.511219276892076097e-05, +-8.512206613049879821e-05, +-8.513180025976505255e-05, +-8.514139515286383002e-05, +-8.515085080617056145e-05, +-8.516016721628219370e-05, +-8.516934438002540255e-05, +-8.517838229445386859e-05, +-8.518728095684686779e-05, +-8.519604036471134501e-05, +-8.520466051578007088e-05, +-8.521314140801381019e-05, +-8.522148303959819126e-05, +-8.522968540894788013e-05, +-8.523774851470269096e-05, +-8.524567235572930721e-05, +-8.525345693112126812e-05, +-8.526110224019797931e-05, +-8.526860828250774861e-05, +-8.527597505782292067e-05, +-8.528320256614360391e-05, +-8.529029080769619329e-05, +-8.529723978293361427e-05, +-8.530404949253522794e-05, +-8.531071993740775258e-05, +-8.531725111868312234e-05, +-8.532364303772060150e-05, +-8.532989569610549693e-05, +-8.533600909564913097e-05, +-8.534198323839057622e-05, +-8.534781812659391785e-05, +-8.535351376275030009e-05, +-8.535907014957651675e-05, +-8.536448729001648843e-05, +-8.536976518723948717e-05, +-8.537490384464242678e-05, +-8.537990326584751831e-05, +-8.538476345470205316e-05, +-8.538948441528169638e-05, +-8.539406615188707141e-05, +-8.539850866904468167e-05, +-8.540281197150807605e-05, +-8.540697606425610067e-05, +-8.541100095249410501e-05, +-8.541488664165269515e-05, +-8.541863313738888564e-05, +-8.542224044558635707e-05, +-8.542570857235403303e-05, +-8.542903752402598524e-05, +-8.543222730716362907e-05, +-8.543527792855343315e-05, +-8.543818939520752924e-05, +-8.544096171436424078e-05, +-8.544359489348764920e-05, +-8.544608894026684855e-05, +-8.544844386261777507e-05, +-8.545065966868064578e-05, +-8.545273636682219464e-05, +-8.545467396563500846e-05, +-8.545647247393585997e-05, +-8.545813190076873001e-05, +-8.545965225540194795e-05, +-8.546103354732941144e-05, +-8.546227578627118269e-05, +-8.546337898217187573e-05, +-8.546434314520140181e-05, +-8.546516828575563345e-05, +-8.546585441445530673e-05, +-8.546640154214612964e-05, +-8.546680967990001544e-05, +-8.546707883901249407e-05, +-8.546720903100553108e-05, +-8.546720026762592848e-05, +-8.546705256084463349e-05, +-8.546676592285881214e-05, +-8.546634036609008741e-05, +-8.546577590318436303e-05, +-8.546507254701363957e-05, +-8.546423031067365626e-05, +-8.546324920748578835e-05, +-8.546212925099601712e-05, +-8.546087045497427937e-05, +-8.545947283341608016e-05, +-8.545793640054123242e-05, +-8.545626117079430420e-05, +-8.545444715884427985e-05, +-8.545249437958422119e-05, +-8.545040284813244661e-05, +-8.544817257983131130e-05, +-8.544580359024762743e-05, +-8.544329589517213558e-05, +-8.544064951062037207e-05, +-8.543786445283230310e-05, +-8.543494073827124049e-05, +-8.543187838362556290e-05, +-8.542867740580695397e-05, +-8.542533782195173048e-05, +-8.542185964942000209e-05, +-8.541824290579583397e-05, +-8.541448760888724681e-05, +-8.541059377672594575e-05, +-8.540656142756798447e-05, +-8.540239057989258611e-05, +-8.539808125240276669e-05, +-8.539363346402578236e-05, +-8.538904723391188252e-05, +-8.538432258143478424e-05, +-8.537945952619244465e-05, +-8.537445808800608524e-05, +-8.536931828691963619e-05, +-8.536404014320109158e-05, +-8.535862367734164209e-05, +-8.535306891005560719e-05, +-8.534737586228028608e-05, +-8.534154455517689282e-05, +-8.533557501012886226e-05, +-8.532946724874342212e-05, +-8.532322129285025130e-05, +-8.531683716450179161e-05, +-8.531031488597434547e-05, +-8.530365447976600245e-05, +-8.529685596859842812e-05, +-8.528991937541496675e-05, +-8.528284472338275551e-05, +-8.527563203589135562e-05, +-8.526828133655184436e-05, +-8.526079264919876664e-05, +-8.525316599788918632e-05, +-8.524540140690123606e-05, +-8.523749890073746484e-05, +-8.522945850412070440e-05, +-8.522128024199696950e-05, +-8.521296413953473965e-05, +-8.520451022212317013e-05, +-8.519591851537453150e-05, +-8.518718904512355904e-05, +-8.517832183742550121e-05, +-8.516931691855778659e-05, +-8.516017431502085060e-05, +-8.515089405353488288e-05, +-8.514147616104347294e-05, +-8.513192066471046596e-05, +-8.512222759192204986e-05, +-8.511239697028558982e-05, +-8.510242882763002130e-05, +-8.509232319200500975e-05, +-8.508208009168225167e-05, +-8.507169955515426845e-05, +-8.506118161113440635e-05, +-8.505052628855831374e-05, +-8.503973361658051229e-05, +-8.502880362457778513e-05, +-8.501773634214887868e-05, +-8.500653179911095187e-05, +-8.499519002550353351e-05, +-8.498371105158639453e-05, +-8.497209490783910074e-05, +-8.496034162496369623e-05, +-8.494845123388033948e-05, +-8.493642376573149106e-05, +-8.492425925187918959e-05, +-8.491195772390442830e-05, +-8.489951921361085492e-05, +-8.488694375302123442e-05, +-8.487423137437689338e-05, +-8.486138211014097258e-05, +-8.484839599299657034e-05, +-8.483527305584430303e-05, +-8.482201333180725174e-05, +-8.480861685422761483e-05, +-8.479508365666528491e-05, +-8.478141377290184682e-05, +-8.476760723693713530e-05, +-8.475366408299075287e-05, +-8.473958434550257128e-05, +-8.472536805912943823e-05, +-8.471101525874913472e-05, +-8.469652597945854546e-05, +-8.468190025657172085e-05, +-8.466713812562422735e-05, +-8.465223962236920370e-05, +-8.463720478277759129e-05, +-8.462203364304088534e-05, +-8.460672623956776031e-05, +-8.459128260898659071e-05, +-8.457570278814340460e-05, +-8.455998681410239863e-05, +-8.454413472414680540e-05, +-8.452814655577757887e-05, +-8.451202234671438367e-05, +-8.449576213489413143e-05, +-8.447936595847342026e-05, +-8.446283385582365583e-05, +-8.444616586553668920e-05, +-8.442936202642123899e-05, +-8.441242237750396199e-05, +-8.439534695802896529e-05, +-8.437813580745810445e-05, +-8.436078896546935716e-05, +-8.434330647195941181e-05, +-8.432568836704189210e-05, +-8.430793469104722146e-05, +-8.429004548452397841e-05, +-8.427202078823565741e-05, +-8.425386064316455848e-05, +-8.423556509050906312e-05, +-8.421713417168446105e-05, +-8.419856792832224545e-05, +-8.417986640227182057e-05, +-8.416102963559667994e-05, +-8.414205767057864830e-05, +-8.412295054971542861e-05, +-8.410370831572054780e-05, +-8.408433101152421063e-05, +-8.406481868027302858e-05, +-8.404517136532730943e-05, +-8.402538911026542106e-05, +-8.400547195888105395e-05, +-8.398541995518347860e-05, +-8.396523314339816900e-05, +-8.394491156796375327e-05, +-8.392445527353586260e-05, +-8.390386430498814768e-05, +-8.388313870740410653e-05, +-8.386227852608609695e-05, +-8.384128380655112163e-05, +-8.382015459452936456e-05, +-8.379889093596747064e-05, +-8.377749287702637737e-05, +-8.375596046408188399e-05, +-8.373429374372478706e-05, +-8.371249276275821054e-05, +-8.369055756820127862e-05, +-8.366848820728986101e-05, +-8.364628472746907847e-05, +-8.362394717640124454e-05, +-8.360147560196295178e-05, +-8.357887005224207664e-05, +-8.355613057554173682e-05, +-8.353325722038176847e-05, +-8.351025003549044561e-05, +-8.348710906981277426e-05, +-8.346383437250699594e-05, +-8.344042599294170090e-05, +-8.341688398070458313e-05, +-8.339320838559028369e-05, +-8.336939925760991816e-05, +-8.334545664698744458e-05, +-8.332138060415670894e-05, +-8.329717117976893979e-05, +-8.327282842468572801e-05, +-8.324835238997891837e-05, +-8.322374312693586794e-05, +-8.319900068705662715e-05, +-8.317412512204842390e-05, +-8.314911648383887730e-05, +-8.312397482455989724e-05, +-8.309870019655929895e-05, +-8.307329265239589693e-05, +-8.304775224484015549e-05, +-8.302207902687382287e-05, +-8.299627305169173365e-05, +-8.297033437269675374e-05, +-8.294426304350615003e-05, +-8.291805911794817511e-05, +-8.289172265005850305e-05, +-8.286525369408940438e-05, +-8.283865230450119447e-05, +-8.281191853596272146e-05, +-8.278505244335684140e-05, +-8.275805408177579691e-05, +-8.273092350652226071e-05, +-8.270366077310995899e-05, +-8.267626593726051375e-05, +-8.264873905490783374e-05, +-8.262108018219526848e-05, +-8.259328937547590641e-05, +-8.256536669131304918e-05, +-8.253731218648008977e-05, +-8.250912591795727335e-05, +-8.248080794293699634e-05, +-8.245235831882032345e-05, +-8.242377710321757039e-05, +-8.239506435394793797e-05, +-8.236622012904060988e-05, +-8.233724448673080884e-05, +-8.230813748546550229e-05, +-8.227889918389922816e-05, +-8.224952964089539593e-05, +-8.222002891552631374e-05, +-8.219039706706990865e-05, +-8.216063415501505284e-05, +-8.213074023905844647e-05, +-8.210071537910389942e-05, +-8.207055963526361879e-05, +-8.204027306785872389e-05, +-8.200985573741377099e-05, +-8.197930770466531857e-05, +-8.194862903055547627e-05, +-8.191781977623362610e-05, +-8.188688000305669346e-05, +-8.185580977258994674e-05, +-8.182460914660140015e-05, +-8.179327818706982325e-05, +-8.176181695617945546e-05, +-8.173022551632076499e-05, +-8.169850393009273927e-05, +-8.166665226029610862e-05, +-8.163467056994078662e-05, +-8.160255892224635801e-05, +-8.157031738063073520e-05, +-8.153794600872299252e-05, +-8.150544487035782327e-05, +-8.147281402957155523e-05, +-8.144005355061001113e-05, +-8.140716349792300637e-05, +-8.137414393616592106e-05, +-8.134099493019978136e-05, +-8.130771654508731571e-05, +-8.127430884609861974e-05, +-8.124077189871261998e-05, +-8.120710576860455134e-05, +-8.117331052165971286e-05, +-8.113938622396791125e-05, +-8.110533294181869034e-05, +-8.107115074170906962e-05, +-8.103683969034342223e-05, +-8.100239985462225349e-05, +-8.096783130165507579e-05, +-8.093313409875565166e-05, +-8.089830831343460763e-05, +-8.086335401341671373e-05, +-8.082827126661967375e-05, +-8.079306014116960225e-05, +-8.075772070539606433e-05, +-8.072225302782593632e-05, +-8.068665717719670084e-05, +-8.065093322244495423e-05, +-8.061508123270648787e-05, +-8.057910127732351168e-05, +-8.054299342584061549e-05, +-8.050675774799898206e-05, +-8.047039431375143043e-05, +-8.043390319324243947e-05, +-8.039728445682443804e-05, +-8.036053817504959214e-05, +-8.032366441867139055e-05, +-8.028666325864475327e-05, +-8.024953476612763071e-05, +-8.021227901247364467e-05, +-8.017489606924217140e-05, +-8.013738600819392353e-05, +-8.009974890128330636e-05, +-8.006198482067470809e-05, +-8.002409383872849998e-05, +-7.998607602800163272e-05, +-7.994793146125602542e-05, +-7.990966021145233143e-05, +-7.987126235175050757e-05, +-7.983273795551198255e-05, +-7.979408709629293487e-05, +-7.975530984785358989e-05, +-7.971640628415382879e-05, +-7.967737647934543656e-05, +-7.963822050778989641e-05, +-7.959893844404150338e-05, +-7.955953036285134874e-05, +-7.951999633917261905e-05, +-7.948033644815643553e-05, +-7.944055076515135262e-05, +-7.940063936570434730e-05, +-7.936060232556247252e-05, +-7.932043972066505093e-05, +-7.928015162715406966e-05, +-7.923973812136843407e-05, +-7.919919927984335787e-05, +-7.915853517931376482e-05, +-7.911774589670618430e-05, +-7.907683150914953914e-05, +-7.903579209396765105e-05, +-7.899462772868125996e-05, +-7.895333849100806469e-05, +-7.891192445886321082e-05, +-7.887038571035342245e-05, +-7.882872232378650254e-05, +-7.878693437766485477e-05, +-7.874502195068654067e-05, +-7.870298512174716339e-05, +-7.866082396993267134e-05, +-7.861853857452949545e-05, +-7.857612901501793555e-05, +-7.853359537107309552e-05, +-7.849093772256527627e-05, +-7.844815614956135810e-05, +-7.840525073231767211e-05, +-7.836222155128841631e-05, +-7.831906868712790529e-05, +-7.827579222067341277e-05, +-7.823239223296429422e-05, +-7.818886880523309637e-05, +-7.814522201890151856e-05, +-7.810145195558939810e-05, +-7.805755869710916724e-05, +-7.801354232546588033e-05, +-7.796940292286057479e-05, +-7.792514057168064884e-05, +-7.788075535451116432e-05, +-7.783624735413498220e-05, +-7.779161665351624205e-05, +-7.774686333581964730e-05, +-7.770198748440126306e-05, +-7.765698918280274272e-05, +-7.761186851477045064e-05, +-7.756662556422957674e-05, +-7.752126041530409942e-05, +-7.747577315230846429e-05, +-7.743016385974954932e-05, +-7.738443262231818089e-05, +-7.733857952490999119e-05, +-7.729260465259755423e-05, +-7.724650809065236796e-05, +-7.720028992453622141e-05, +-7.715395023989390336e-05, +-7.710748912257163381e-05, +-7.706090665860050278e-05, +-7.701420293419756807e-05, +-7.696737803577542334e-05, +-7.692043204993641119e-05, +-7.687336506346449162e-05, +-7.682617716334689899e-05, +-7.677886843674635935e-05, +-7.673143897102193420e-05, +-7.668388885372191897e-05, +-7.663621817257599612e-05, +-7.658842701551370723e-05, +-7.654051547064699733e-05, +-7.649248362627234269e-05, +-7.644433157088018332e-05, +-7.639605939314909541e-05, +-7.634766718193661630e-05, +-7.629915502630094202e-05, +-7.625052301548154721e-05, +-7.620177123890036419e-05, +-7.615289978617322127e-05, +-7.610390874710085748e-05, +-7.605479821167065719e-05, +-7.600556827005846628e-05, +-7.595621901262047406e-05, +-7.590675052990608824e-05, +-7.585716291265020997e-05, +-7.580745625176517008e-05, +-7.575763063836235892e-05, +-7.570768616373215506e-05, +-7.565762291934609372e-05, +-7.560744099686747836e-05, +-7.555714048814307301e-05, +-7.550672148520388830e-05, +-7.545618408026846119e-05, +-7.540552836573334106e-05, +-7.535475443418599177e-05, +-7.530386237839648391e-05, +-7.525285229131817245e-05, +-7.520172426608936372e-05, +-7.515047839603372192e-05, +-7.509911477465240875e-05, +-7.504763349563647033e-05, +-7.499603465285796034e-05, +-7.494431834037231172e-05, +-7.489248465241780809e-05, +-7.484053368341798257e-05, +-7.478846552797203614e-05, +-7.473628028086872898e-05, +-7.468397803707648710e-05, +-7.463155889174600448e-05, +-7.457902294021224879e-05, +-7.452637027798544899e-05, +-7.447360100076373982e-05, +-7.442071520442504386e-05, +-7.436771298502802018e-05, +-7.431459443881253870e-05, +-7.426135966220217383e-05, +-7.420800875179375550e-05, +-7.415454180437206009e-05, +-7.410095891689964603e-05, +-7.404726018651959138e-05, +-7.399344571055496537e-05, +-7.393951558651111868e-05, +-7.388546991206588501e-05, +-7.383130878508389254e-05, +-7.377703230360706363e-05, +-7.372264056585557700e-05, +-7.366813367023208263e-05, +-7.361351171531037177e-05, +-7.355877479984808929e-05, +-7.350392302278799402e-05, +-7.344895648323693878e-05, +-7.339387528049019717e-05, +-7.333867951401998461e-05, +-7.328336928346742163e-05, +-7.322794468866776875e-05, +-7.317240582961719562e-05, +-7.311675280649804296e-05, +-7.306098571966845488e-05, +-7.300510466966466923e-05, +-7.294910975719086680e-05, +-7.289300108314436543e-05, +-7.283677874858158964e-05, +-7.278044285474573132e-05, +-7.272399350305517587e-05, +-7.266743079509465242e-05, +-7.261075483263950640e-05, +-7.255396571763213166e-05, +-7.249706355218691722e-05, +-7.244004843859920540e-05, +-7.238292047934048073e-05, +-7.232567977704626753e-05, +-7.226832643454408878e-05, +-7.221086055481911045e-05, +-7.215328224103956603e-05, +-7.209559159654858440e-05, +-7.203778872485294118e-05, +-7.197987372964765663e-05, +-7.192184671479410823e-05, +-7.186370778432209076e-05, +-7.180545704244130877e-05, +-7.174709459353510179e-05, +-7.168862054214915510e-05, +-7.163003499301666670e-05, +-7.157133805103575535e-05, +-7.151252982127183214e-05, +-7.145361040896968947e-05, +-7.139457991954317392e-05, +-7.133543845857837117e-05, +-7.127618613183451396e-05, +-7.121682304523526785e-05, +-7.115734930488205336e-05, +-7.109776501704546719e-05, +-7.103807028816650198e-05, +-7.097826522485608549e-05, +-7.091834993389887533e-05, +-7.085832452224149537e-05, +-7.079818909700806692e-05, +-7.073794376549008501e-05, +-7.067758863514843771e-05, +-7.061712381361631989e-05, +-7.055654940868767299e-05, +-7.049586552833386809e-05, +-7.043507228069214568e-05, +-7.037416977406787890e-05, +-7.031315811693580680e-05, +-7.025203741794065781e-05, +-7.019080778588770357e-05, +-7.012946932975799201e-05, +-7.006802215869741045e-05, +-7.000646638201896241e-05, +-6.994480210920360789e-05, +-6.988302944990132045e-05, +-6.982114851392165467e-05, +-6.975915941124826087e-05, +-6.969706225202882918e-05, +-6.963485714657728501e-05, +-6.957254420537624211e-05, +-6.951012353906643152e-05, +-6.944759525846192112e-05, +-6.938495947454011387e-05, +-6.932221629844314366e-05, +-6.925936584147889181e-05, +-6.919640821512235585e-05, +-6.913334353100528183e-05, +-6.907017190093221054e-05, +-6.900689343686909334e-05, +-6.894350825094615180e-05, +-6.888001645545743042e-05, +-6.881641816286376465e-05, +-6.875271348578089535e-05, +-6.868890253699655847e-05, +-6.862498542945834204e-05, +-6.856096227627744020e-05, +-6.849683319072996776e-05, +-6.843259828624661970e-05, +-6.836825767642616940e-05, +-6.830381147503743384e-05, +-6.823925979599485187e-05, +-6.817460275338539958e-05, +-6.810984046145810062e-05, +-6.804497303461170697e-05, +-6.798000058742619499e-05, +-6.791492323462210785e-05, +-6.784974109109291900e-05, +-6.778445427189195389e-05, +-6.771906289222508527e-05, +-6.765356706746326919e-05, +-6.758796691314608227e-05, +-6.752226254495648683e-05, +-6.745645407874729905e-05, +-6.739054163053193253e-05, +-6.732452531647047989e-05, +-6.725840525289944699e-05, +-6.719218155630565076e-05, +-6.712585434332869934e-05, +-6.705942373077480206e-05, +-6.699288983560885481e-05, +-6.692625277494164643e-05, +-6.685951266606223571e-05, +-6.679266962639688720e-05, +-6.672572377354052669e-05, +-6.665867522524537056e-05, +-6.659152409940890475e-05, +-6.652427051410306333e-05, +-6.645691458754668976e-05, +-6.638945643811018540e-05, +-6.632189618432789656e-05, +-6.625423394489049793e-05, +-6.618646983863249716e-05, +-6.611860398456430017e-05, +-6.605063650183114698e-05, +-6.598256750974519050e-05, +-6.591439712777000606e-05, +-6.584612547552431831e-05, +-6.577775267278122872e-05, +-6.570927883947045179e-05, +-6.564070409566748654e-05, +-6.557202856161036745e-05, +-6.550325235768734522e-05, +-6.543437560444023422e-05, +-6.536539842256468356e-05, +-6.529632093291130195e-05, +-6.522714325647511384e-05, +-6.515786551441217478e-05, +-6.508848782802847195e-05, +-6.501901031878159110e-05, +-6.494943310828418597e-05, +-6.487975631829171331e-05, +-6.480998007072022731e-05, +-6.474010448763357244e-05, +-6.467012969124709691e-05, +-6.460005580392683946e-05, +-6.452988294819259226e-05, +-6.445961124670535124e-05, +-6.438924082228528677e-05, +-6.431877179790015627e-05, +-6.424820429666680847e-05, +-6.417753844185184755e-05, +-6.410677435687453334e-05, +-6.403591216529406908e-05, +-6.396495199082738231e-05, +-6.389389395733740195e-05, +-6.382273818883566039e-05, +-6.375148480948454317e-05, +-6.368013394358604045e-05, +-6.360868571559843011e-05, +-6.353714025012500207e-05, +-6.346549767191652486e-05, +-6.339375810587101522e-05, +-6.332192167703586583e-05, +-6.324998851059697620e-05, +-6.317795873189563914e-05, +-6.310583246641630277e-05, +-6.303360983978948436e-05, +-6.296129097779510427e-05, +-6.288887600634929926e-05, +-6.281636505151949297e-05, +-6.274375823952844813e-05, +-6.267105569672464069e-05, +-6.259825754961423024e-05, +-6.252536392484779213e-05, +-6.245237494921088487e-05, +-6.237929074963951355e-05, +-6.230611145322328764e-05, +-6.223283718717648628e-05, +-6.215946807886941886e-05, +-6.208600425581592961e-05, +-6.201244584566000765e-05, +-6.193879297621091517e-05, +-6.186504577539805752e-05, +-6.179120437130621978e-05, +-6.171726889216227173e-05, +-6.164323946632572170e-05, +-6.156911622230355665e-05, +-6.149489928875466027e-05, +-6.142058879445956370e-05, +-6.134618486835274128e-05, +-6.127168763950966779e-05, +-6.119709723713357774e-05, +-6.112241379059057988e-05, +-6.104763742936448665e-05, +-6.097276828309171874e-05, +-6.089780648154576709e-05, +-6.082275215464232255e-05, +-6.074760543242371753e-05, +-6.067236644509407453e-05, +-6.059703532297330884e-05, +-6.052161219653357806e-05, +-6.044609719638499096e-05, +-6.037049045326283424e-05, +-6.029479209806003079e-05, +-6.021900226179731743e-05, +-6.014312107562667361e-05, +-6.006714867084665617e-05, +-5.999108517889371211e-05, +-5.991493073132717599e-05, +-5.983868545986630218e-05, +-5.976234949634377292e-05, +-5.968592297274159900e-05, +-5.960940602117414515e-05, +-5.953279877389152503e-05, +-5.945610136328003482e-05, +-5.937931392186346791e-05, +-5.930243658229135124e-05, +-5.922546947735791208e-05, +-5.914841273998823414e-05, +-5.907126650324204546e-05, +-5.899403090031335255e-05, +-5.891670606453269684e-05, +-5.883929212935529624e-05, +-5.876178922837879215e-05, +-5.868419749533123519e-05, +-5.860651706407343651e-05, +-5.852874806860251182e-05, +-5.845089064303775963e-05, +-5.837294492164072577e-05, +-5.829491103880222688e-05, +-5.821678912904428157e-05, +-5.813857932702074747e-05, +-5.806028176752007911e-05, +-5.798189658545212103e-05, +-5.790342391586706771e-05, +-5.782486389394304952e-05, +-5.774621665498807745e-05, +-5.766748233444099183e-05, +-5.758866106787323766e-05, +-5.750975299097655220e-05, +-5.743075823958174197e-05, +-5.735167694964575361e-05, +-5.727250925725491299e-05, +-5.719325529862680219e-05, +-5.711391521009861788e-05, +-5.703448912814496584e-05, +-5.695497718936601598e-05, +-5.687537953048917613e-05, +-5.679569628836986451e-05, +-5.671592759999428800e-05, +-5.663607360246516456e-05, +-5.655613443302315654e-05, +-5.647611022903154280e-05, +-5.639600112798044028e-05, +-5.631580726748944678e-05, +-5.623552878529395287e-05, +-5.615516581926172345e-05, +-5.607471850739707191e-05, +-5.599418698780777838e-05, +-5.591357139874173583e-05, +-5.583287187857109354e-05, +-5.575208856578184883e-05, +-5.567122159899181764e-05, +-5.559027111695310792e-05, +-5.550923725852094202e-05, +-5.542812016268781585e-05, +-5.534691996857035967e-05, +-5.526563681539321062e-05, +-5.518427084252982613e-05, +-5.510282218945079460e-05, +-5.502129099576342233e-05, +-5.493967740119751691e-05, +-5.485798154559411827e-05, +-5.477620356892283921e-05, +-5.469434361128577523e-05, +-5.461240181288489040e-05, +-5.453037831405728783e-05, +-5.444827325526075589e-05, +-5.436608677705996492e-05, +-5.428381902016403491e-05, +-5.420147012537771924e-05, +-5.411904023363989387e-05, +-5.403652948600513948e-05, +-5.395393802365103947e-05, +-5.387126598786008057e-05, +-5.378851352005886032e-05, +-5.370568076176683819e-05, +-5.362276785463719641e-05, +-5.353977494044054309e-05, +-5.345670216105123093e-05, +-5.337354965848269546e-05, +-5.329031757485538971e-05, +-5.320700605239936604e-05, +-5.312361523347255840e-05, +-5.304014526054607118e-05, +-5.295659627620722841e-05, +-5.287296842316364638e-05, +-5.278926184422749914e-05, +-5.270547668233805630e-05, +-5.262161308054957393e-05, +-5.253767118201752511e-05, +-5.245365113003387045e-05, +-5.236955306799441002e-05, +-5.228537713940241541e-05, +-5.220112348788613285e-05, +-5.211679225718437688e-05, +-5.203238359114953896e-05, +-5.194789763374777728e-05, +-5.186333452906196435e-05, +-5.177869442127715200e-05, +-5.169397745470229600e-05, +-5.160918377375513152e-05, +-5.152431352296560184e-05, +-5.143936684697986996e-05, +-5.135434389054421817e-05, +-5.126924479852808058e-05, +-5.118406971590820019e-05, +-5.109881878777262015e-05, +-5.101349215932026360e-05, +-5.092808997586432181e-05, +-5.084261238281691952e-05, +-5.075705952571193057e-05, +-5.067143155018887077e-05, +-5.058572860199737697e-05, +-5.049995082699970753e-05, +-5.041409837115645118e-05, +-5.032817138054785191e-05, +-5.024217000135960590e-05, +-5.015609437988521971e-05, +-5.006994466252655913e-05, +-4.998372099579729151e-05, +-4.989742352630725970e-05, +-4.981105240078485054e-05, +-4.972460776606224965e-05, +-4.963808976907827392e-05, +-4.955149855687824960e-05, +-4.946483427661800341e-05, +-4.937809707554795876e-05, +-4.929128710103565319e-05, +-4.920440450055065445e-05, +-4.911744942166826035e-05, +-4.903042201207210757e-05, +-4.894332241953981959e-05, +-4.885615079196080790e-05, +-4.876890727734077823e-05, +-4.868159202376644653e-05, +-4.859420517944396719e-05, +-4.850674689268268352e-05, +-4.841921731188424512e-05, +-4.833161658556487463e-05, +-4.824394486233985011e-05, +-4.815620229092696774e-05, +-4.806838902014650788e-05, +-4.798050519892493496e-05, +-4.789255097627488037e-05, +-4.780452650133777193e-05, +-4.771643192332959671e-05, +-4.762826739158263601e-05, +-4.754003305553017132e-05, +-4.745172906469445650e-05, +-4.736335556870607073e-05, +-4.727491271730712374e-05, +-4.718640066031656806e-05, +-4.709781954766834267e-05, +-4.700916952939584173e-05, +-4.692045075561596335e-05, +-4.683166337657177961e-05, +-4.674280754257756761e-05, +-4.665388340406195387e-05, +-4.656489111155101438e-05, +-4.647583081565794075e-05, +-4.638670266710032651e-05, +-4.629750681670537124e-05, +-4.620824341537399347e-05, +-4.611891261411934026e-05, +-4.602951456405142530e-05, +-4.594004941636034421e-05, +-4.585051732235650513e-05, +-4.576091843343425380e-05, +-4.567125290107513293e-05, +-4.558152087686832615e-05, +-4.549172251249393423e-05, +-4.540185795972689176e-05, +-4.531192737044064663e-05, +-4.522193089659092414e-05, +-4.513186869023966074e-05, +-4.504174090354256280e-05, +-4.495154768873259289e-05, +-4.486128919816024786e-05, +-4.477096558425697383e-05, +-4.468057699953892017e-05, +-4.459012359662685503e-05, +-4.449960552822973281e-05, +-4.440902294714840087e-05, +-4.431837600627965164e-05, +-4.422766485859965473e-05, +-4.413688965718772124e-05, +-4.404605055521041345e-05, +-4.395514770592441796e-05, +-4.386418126267760951e-05, +-4.377315137891151084e-05, +-4.368205820814587663e-05, +-4.359090190400197000e-05, +-4.349968262018657052e-05, +-4.340840051049560627e-05, +-4.331705572881382860e-05, +-4.322564842911869493e-05, +-4.313417876546418701e-05, +-4.304264689200416872e-05, +-4.295105296297661092e-05, +-4.285939713270688474e-05, +-4.276767955561188150e-05, +-4.267590038618355997e-05, +-4.258405977901252778e-05, +-4.249215788877226625e-05, +-4.240019487022240335e-05, +-4.230817087820867303e-05, +-4.221608606766665570e-05, +-4.212394059360527129e-05, +-4.203173461113095694e-05, +-4.193946827543108548e-05, +-4.184714174177765847e-05, +-4.175475516552740792e-05, +-4.166230870212531308e-05, +-4.156980250708797831e-05, +-4.147723673602819706e-05, +-4.138461154463792305e-05, +-4.129192708869227512e-05, +-4.119918352405362326e-05, +-4.110638100665453955e-05, +-4.101351969251855386e-05, +-4.092059973776302021e-05, +-4.082762129856328388e-05, +-4.073458453119221414e-05, +-4.064148959200422580e-05, +-4.054833663742256697e-05, +-4.045512582396365938e-05, +-4.036185730822041524e-05, +-4.026853124686589636e-05, +-4.017514779665351077e-05, +-4.008170711442039395e-05, +-3.998820935706674811e-05, +-3.989465468160094494e-05, +-3.980104324508144627e-05, +-3.970737520466217116e-05, +-3.961365071757542647e-05, +-3.951986994111911331e-05, +-3.942603303267769955e-05, +-3.933214014972560119e-05, +-3.923819144978986546e-05, +-3.914418709049114690e-05, +-3.905012722952743754e-05, +-3.895601202465630633e-05, +-3.886184163374101160e-05, +-3.876761621469178472e-05, +-3.867333592551134631e-05, +-3.857900092427812817e-05, +-3.848461136912898704e-05, +-3.839016741830119034e-05, +-3.829566923009389989e-05, +-3.820111696287277974e-05, +-3.810651077509035210e-05, +-3.801185082527266165e-05, +-3.791713727200346647e-05, +-3.782237027396456367e-05, +-3.772754998989848597e-05, +-3.763267657861273693e-05, +-3.753775019899958438e-05, +-3.744277101001989227e-05, +-3.734773917070640715e-05, +-3.725265484016821696e-05, +-3.715751817757315985e-05, +-3.706232934217328258e-05, +-3.696708849329155907e-05, +-3.687179579030526824e-05, +-3.677645139268711908e-05, +-3.668105545996771025e-05, +-3.658560815173909431e-05, +-3.649010962767606202e-05, +-3.639456004751828684e-05, +-3.629895957107496672e-05, +-3.620330835822834772e-05, +-3.610760656891679691e-05, +-3.601185436315978647e-05, +-3.591605190104062774e-05, +-3.582019934271069966e-05, +-3.572429684838895403e-05, +-3.562834457836572385e-05, +-3.553234269298619595e-05, +-3.543629135267475813e-05, +-3.534019071791824146e-05, +-3.524404094926992506e-05, +-3.514784220734876359e-05, +-3.505159465284404254e-05, +-3.495529844649772610e-05, +-3.485895374912978677e-05, +-3.476256072162085820e-05, +-3.466611952491630087e-05, +-3.456963032003027470e-05, +-3.447309326802793097e-05, +-3.437650853005175846e-05, +-3.427987626730303006e-05, +-3.418319664104667484e-05, +-3.408646981261070891e-05, +-3.398969594339007754e-05, +-3.389287519482969414e-05, +-3.379600772844943118e-05, +-3.369909370582698974e-05, +-3.360213328860172136e-05, +-3.350512663847448572e-05, +-3.340807391721191969e-05, +-3.331097528662833114e-05, +-3.321383090861188247e-05, +-3.311664094510668088e-05, +-3.301940555811708135e-05, +-3.292212490971148809e-05, +-3.282479916200527838e-05, +-3.272742847718136851e-05, +-3.263001301749504526e-05, +-3.253255294523438578e-05, +-3.243504842276311061e-05, +-3.233749961250349401e-05, +-3.223990667692262844e-05, +-3.214226977855826246e-05, +-3.204458908000141961e-05, +-3.194686474390026767e-05, +-3.184909693296417762e-05, +-3.175128580994623413e-05, +-3.165343153766444524e-05, +-3.155553427900603176e-05, +-3.145759419688793517e-05, +-3.135961145430017221e-05, +-3.126158621428778284e-05, +-3.116351863993824679e-05, +-3.106540889440203592e-05, +-3.096725714089739828e-05, +-3.086906354267058823e-05, +-3.077082826303922095e-05, +-3.067255146537463384e-05, +-3.057423331308411238e-05, +-3.047587396965871360e-05, +-3.037747359861155128e-05, +-3.027903236352605647e-05, +-3.018055042803774939e-05, +-3.008202795581688198e-05, +-2.998346511061172805e-05, +-2.988486205620874232e-05, +-2.978621895643713093e-05, +-2.968753597519001034e-05, +-2.958881327641125464e-05, +-2.949005102407775185e-05, +-2.939124938224688523e-05, +-2.929240851499557741e-05, +-2.919352858646774454e-05, +-2.909460976085229039e-05, +-2.899565220238723307e-05, +-2.889665607535912232e-05, +-2.879762154410775573e-05, +-2.869854877300788965e-05, +-2.859943792649541249e-05, +-2.850028916905390062e-05, +-2.840110266519678661e-05, +-2.830187857951113392e-05, +-2.820261707661755868e-05, +-2.810331832117470542e-05, +-2.800398247790048385e-05, +-2.790460971155473183e-05, +-2.780520018694304055e-05, +-2.770575406892071524e-05, +-2.760627152237538732e-05, +-2.750675271225288613e-05, +-2.740719780354354413e-05, +-2.730760696126463959e-05, +-2.720798035050406622e-05, +-2.710831813638033967e-05, +-2.700862048404684287e-05, +-2.690888755871342531e-05, +-2.680911952562880178e-05, +-2.670931655008437753e-05, +-2.660947879741401784e-05, +-2.650960643299838491e-05, +-2.640969962224682822e-05, +-2.630975853062371715e-05, +-2.620978332363034491e-05, +-2.610977416680936367e-05, +-2.600973122574841656e-05, +-2.590965466606289893e-05, +-2.580954465342155565e-05, +-2.570940135352880521e-05, +-2.560922493212896815e-05, +-2.550901555500589772e-05, +-2.540877338798700838e-05, +-2.530849859692563042e-05, +-2.520819134772680039e-05, +-2.510785180632983598e-05, +-2.500748013871205276e-05, +-2.490707651089322299e-05, +-2.480664108891723226e-05, +-2.470617403887885930e-05, +-2.460567552690534450e-05, +-2.450514571916076066e-05, +-2.440458478184582661e-05, +-2.430399288120175272e-05, +-2.420337018349258201e-05, +-2.410271685502678605e-05, +-2.400203306216170684e-05, +-2.390131897126310926e-05, +-2.380057474874952835e-05, +-2.369980056107405132e-05, +-2.359899657471061256e-05, +-2.349816295618079373e-05, +-2.339729987203541272e-05, +-2.329640748885871809e-05, +-2.319548597327267508e-05, +-2.309453549191901870e-05, +-2.299355621148089368e-05, +-2.289254829868733363e-05, +-2.279151192027269491e-05, +-2.269044724302103776e-05, +-2.258935443374819295e-05, +-2.248823365928762647e-05, +-2.238708508651746326e-05, +-2.228590888234209308e-05, +-2.218470521369638192e-05, +-2.208347424754537387e-05, +-2.198221615088854998e-05, +-2.188093109073725655e-05, +-2.177961923416349760e-05, +-2.167828074823706131e-05, +-2.157691580007448190e-05, +-2.147552455682092673e-05, +-2.137410718563195790e-05, +-2.127266385371787621e-05, +-2.117119472830353107e-05, +-2.106969997663216606e-05, +-2.096817976598763154e-05, +-2.086663426368075755e-05, +-2.076506363703120020e-05, +-2.066346805341620030e-05, +-2.056184768020776063e-05, +-2.046020268482176023e-05, +-2.035853323469501684e-05, +-2.025683949728969817e-05, +-2.015512164009296959e-05, +-2.005337983062124957e-05, +-1.995161423640189351e-05, +-1.984982502499987858e-05, +-1.974801236400416658e-05, +-1.964617642100936390e-05, +-1.954431736366037039e-05, +-1.944243535961162684e-05, +-1.934053057653156707e-05, +-1.923860318212449502e-05, +-1.913665334411253621e-05, +-1.903468123023974753e-05, +-1.893268700827650152e-05, +-1.883067084600097016e-05, +-1.872863291122602332e-05, +-1.862657337178554403e-05, +-1.852449239551583787e-05, +-1.842239015030065102e-05, +-1.832026680403027553e-05, +-1.821812252460575061e-05, +-1.811595747996114976e-05, +-1.801377183804527468e-05, +-1.791156576682594804e-05, +-1.780933943428950189e-05, +-1.770709300844550406e-05, +-1.760482665730770676e-05, +-1.750254054892158524e-05, +-1.740023485134554727e-05, +-1.729790973265536819e-05, +-1.719556536094830746e-05, +-1.709320190432489411e-05, +-1.699081953091569633e-05, +-1.688841840886285618e-05, +-1.678599870632459918e-05, +-1.668356059147474302e-05, +-1.658110423250700729e-05, +-1.647862979761663624e-05, +-1.637613745502736830e-05, +-1.627362737297285557e-05, +-1.617109971970108874e-05, +-1.606855466347867966e-05, +-1.596599237257214870e-05, +-1.586341301527534830e-05, +-1.576081675989060121e-05, +-1.565820377473316948e-05, +-1.555557422813103757e-05, +-1.545292828842897815e-05, +-1.535026612397023585e-05, +-1.524758790311902780e-05, +-1.514489379426467384e-05, +-1.504218396578046285e-05, +-1.493945858606889954e-05, +-1.483671782354322905e-05, +-1.473396184661338459e-05, +-1.463119082371315012e-05, +-1.452840492328166118e-05, +-1.442560431376770945e-05, +-1.432278916363381366e-05, +-1.421995964133802019e-05, +-1.411711591535626644e-05, +-1.401425815418662619e-05, +-1.391138652630802687e-05, +-1.380850120022569460e-05, +-1.370560234445248219e-05, +-1.360269012749035466e-05, +-1.349976471788042693e-05, +-1.339682628413868412e-05, +-1.329387499480600566e-05, +-1.319091101842497182e-05, +-1.308793452354874401e-05, +-1.298494567871798480e-05, +-1.288194465251088373e-05, +-1.277893161347878279e-05, +-1.267590673019623266e-05, +-1.257287017124253078e-05, +-1.246982210518297823e-05, +-1.236676270061445011e-05, +-1.226369212612402132e-05, +-1.216061055029303743e-05, +-1.205751814171998120e-05, +-1.195441506900622885e-05, +-1.185130150073769314e-05, +-1.174817760553476281e-05, +-1.164504355198797204e-05, +-1.154189950870801779e-05, +-1.143874564430730635e-05, +-1.133558212738127453e-05, +-1.123240912655394651e-05, +-1.112922681043635469e-05, +-1.102603534763097811e-05, +-1.092283490675434980e-05, +-1.081962565642283845e-05, +-1.071640776523434237e-05, +-1.061318140181363620e-05, +-1.050994673477096459e-05, +-1.040670393270621468e-05, +-1.030345316423174530e-05, +-1.020019459795360321e-05, +-1.009692840247595814e-05, +-9.993654746405310858e-06, +-9.890373798331966851e-06, +-9.787085726857209161e-06, +-9.683790700579379931e-06, +-9.580488888075076274e-06, +-9.477180457944868027e-06, +-9.373865578771755874e-06, +-9.270544419125409890e-06, +-9.167217147584873419e-06, +-9.063883932719960534e-06, +-8.960544943095470873e-06, +-8.857200347275677219e-06, +-8.753850313805502733e-06, +-8.650495011237969908e-06, +-8.547134608115359162e-06, +-8.443769272973725224e-06, +-8.340399174342536293e-06, +-8.237024480748919369e-06, +-8.133645360699184770e-06, +-8.030261982705921023e-06, +-7.926874515269548180e-06, +-7.823483126882444560e-06, +-7.720087986028794288e-06, +-7.616689261188894454e-06, +-7.513287120820452625e-06, +-7.409881733385923142e-06, +-7.306473267333835971e-06, +-7.203061891103158923e-06, +-7.099647773127580253e-06, +-6.996231081816832429e-06, +-6.892811985584030123e-06, +-6.789390652827005838e-06, +-6.685967251932654341e-06, +-6.582541951276615871e-06, +-6.479114919227638360e-06, +-6.375686324128868172e-06, +-6.272256334325220272e-06, +-6.168825118144674897e-06, +-6.065392843902627916e-06, +-5.961959679901579968e-06, +-5.858525794435513928e-06, +-5.755091355771153457e-06, +-5.651656532175396706e-06, +-5.548221491896540133e-06, +-5.444786403168647504e-06, +-5.341351434215887544e-06, +-5.237916753233836536e-06, +-5.134482528412228775e-06, +-5.031048927939260344e-06, +-4.927616119959976081e-06, +-4.824184272621889077e-06, +-4.720753554056410327e-06, +-4.617324132360118290e-06, +-4.513896175645128551e-06, +-4.410469851974375419e-06, +-4.307045329411986675e-06, +-4.203622775999956281e-06, +-4.100202359767144104e-06, +-3.996784248705929153e-06, +-3.893368610822611421e-06, +-3.789955614072661724e-06, +-3.686545426411091365e-06, +-3.583138215773836038e-06, +-3.479734150058941540e-06, +-3.376333397172463207e-06, +-3.272936124986650446e-06, +-3.169542501344349186e-06, +-3.066152694081722263e-06, +-2.962766871014171740e-06, +-2.859385199917637258e-06, +-2.756007848579020760e-06, +-2.652634984731374917e-06, +-2.549266776104349444e-06, +-2.445903390405475486e-06, +-2.342544995301457621e-06, +-2.239191758463997078e-06, +-2.135843847528035547e-06, +-2.032501430096099191e-06, +-1.929164673761068588e-06, +-1.825833746092079014e-06, +-1.722508814615826009e-06, +-1.619190046866969552e-06, +-1.515877610323357426e-06, +-1.412571672456454176e-06, +-1.309272400708018900e-06, +-1.205979962494442484e-06, +-1.102694525206482478e-06, +-9.994162562135941901e-07, +-8.961453228452378316e-07, +-7.928818924182529291e-07, +-6.896261322181462017e-07, +-5.863782095034504983e-07, +-4.831382915054341598e-07, +-3.799065454324457153e-07, +-2.766831384512282825e-07, +-1.734682377142707647e-07, +-7.026201034112371999e-08, + 3.293537657726596761e-08, + 1.361237559742218726e-07, + 2.393029608260205705e-07, + 3.424728241245399911e-07, + 4.456331788959437941e-07, + 5.487838581963461946e-07, + 6.519246951120805260e-07, + 7.550555227553651306e-07, + 8.581761742829838249e-07, + 9.612864828689424048e-07, + 1.064386281723143817e-06, + 1.167475404087046161e-06, + 1.270553683233956401e-06, + 1.373620952464668563e-06, + 1.476677045126151409e-06, + 1.579721794584216368e-06, + 1.682755034242165185e-06, + 1.785776597536500965e-06, + 1.888786317932543300e-06, + 1.991784028943140494e-06, + 2.094769564101312304e-06, + 2.197742756978922148e-06, + 2.300703441182361895e-06, + 2.403651450352785648e-06, + 2.506586618161826294e-06, + 2.609508778330200587e-06, + 2.712417764600434260e-06, + 2.815313410755502259e-06, + 2.918195550614492780e-06, + 3.021064018032888905e-06, + 3.123918646898235608e-06, + 3.226759271148777022e-06, + 3.329585724746164610e-06, + 3.432397841694105444e-06, + 3.535195456034019893e-06, + 3.637978401840736997e-06, + 3.740746513241107597e-06, + 3.843499624391338577e-06, + 3.946237569472632341e-06, + 4.048960182732818481e-06, + 4.151667298440644490e-06, + 4.254358750904486298e-06, + 4.357034374490938103e-06, + 4.459694003574557062e-06, + 4.562337472602429219e-06, + 4.664964616043940456e-06, + 4.767575268409389195e-06, + 4.870169264264032740e-06, + 4.972746438205374096e-06, + 5.075306624858921715e-06, + 5.177849658919655153e-06, + 5.280375375106426742e-06, + 5.382883608180676782e-06, + 5.485374192964882768e-06, + 5.587846964297125390e-06, + 5.690301757072472020e-06, + 5.792738406238823709e-06, + 5.895156746774081722e-06, + 5.997556613700303999e-06, + 6.099937842102206893e-06, + 6.202300267077116540e-06, + 6.304643723799256112e-06, + 6.406968047469734456e-06, + 6.509273073335095264e-06, + 6.611558636705823052e-06, + 6.713824572910970147e-06, + 6.816070717339472410e-06, + 6.918296905435920848e-06, + 7.020502972677928894e-06, + 7.122688754590115231e-06, + 7.224854086762639407e-06, + 7.326998804801250611e-06, + 7.429122744391472446e-06, + 7.531225741248538190e-06, + 7.633307631140660496e-06, + 7.735368249884624271e-06, + 7.837407433346048414e-06, + 7.939425017435052393e-06, + 8.041420838124956194e-06, + 8.143394731424924540e-06, + 8.245346533398593153e-06, + 8.347276080159792924e-06, + 8.449183207872776923e-06, + 8.551067752747922552e-06, + 8.652929551060220580e-06, + 8.754768439122214134e-06, + 8.856584253302482654e-06, + 8.958376830021354210e-06, + 9.060146005746560224e-06, + 9.161891617011814291e-06, + 9.263613500389598703e-06, + 9.365311492509846610e-06, + 9.466985430055418861e-06, + 9.568635149762613922e-06, + 9.670260488416617610e-06, + 9.771861282870188643e-06, + 9.873437370016431615e-06, + 9.974988586807491007e-06, + 1.007651477024995011e-05, + 1.017801575740536973e-05, + 1.027949138538589549e-05, + 1.038094149137269603e-05, + 1.048236591258890539e-05, + 1.058376448631813914e-05, + 1.068513704990020842e-05, + 1.078648344072680683e-05, + 1.088780349625990967e-05, + 1.098909705400485357e-05, + 1.109036395152874585e-05, + 1.119160402645606680e-05, + 1.129281711646915413e-05, + 1.139400305930372046e-05, + 1.149516169276735936e-05, + 1.159629285471247918e-05, + 1.169739638305492937e-05, + 1.179847211576951287e-05, + 1.189951989088574415e-05, + 1.200053954650636541e-05, + 1.210153092078474598e-05, + 1.220249385192081660e-05, + 1.230342817820195399e-05, + 1.240433373795796108e-05, + 1.250521036957955091e-05, + 1.260605791153205336e-05, + 1.270687620233308566e-05, + 1.280766508054834940e-05, + 1.290842438483250494e-05, + 1.300915395388418385e-05, + 1.310985362646452024e-05, + 1.321052324141528745e-05, + 1.331116263760950926e-05, + 1.341177165401501953e-05, + 1.351235012964493114e-05, + 1.361289790357607076e-05, + 1.371341481496266186e-05, + 1.381390070301414768e-05, + 1.391435540699079513e-05, + 1.401477876624466409e-05, + 1.411517062017475530e-05, + 1.421553080824515213e-05, + 1.431585917000348928e-05, + 1.441615554503153009e-05, + 1.451641977300861781e-05, + 1.461665169366214784e-05, + 1.471685114679062235e-05, + 1.481701797225476649e-05, + 1.491715201000016630e-05, + 1.501725310000826440e-05, + 1.511732108235945888e-05, + 1.521735579718388052e-05, + 1.531735708467963451e-05, + 1.541732478513112682e-05, + 1.551725873886428500e-05, + 1.561715878628727329e-05, + 1.571702476788617285e-05, + 1.581685652420303334e-05, + 1.591665389584930357e-05, + 1.601641672352411040e-05, + 1.611614484796538156e-05, + 1.621583811001258373e-05, + 1.631549635055777077e-05, + 1.641511941056841297e-05, + 1.651470713108287388e-05, + 1.661425935321084402e-05, + 1.671377591812911245e-05, + 1.681325666709967975e-05, + 1.691270144144317814e-05, + 1.701211008255701149e-05, + 1.711148243191112358e-05, + 1.721081833104830304e-05, + 1.731011762157982618e-05, + 1.740938014520385118e-05, + 1.750860574367849260e-05, + 1.760779425884029345e-05, + 1.770694553259986474e-05, + 1.780605940693753841e-05, + 1.790513572392165992e-05, + 1.800417432568209304e-05, + 1.810317505442806174e-05, + 1.820213775244424031e-05, + 1.830106226209077028e-05, + 1.839994842579923193e-05, + 1.849879608609065562e-05, + 1.859760508554882669e-05, + 1.869637526683882192e-05, + 1.879510647270235085e-05, + 1.889379854595819963e-05, + 1.899245132949815851e-05, + 1.909106466630460278e-05, + 1.918963839942481084e-05, + 1.928817237198823681e-05, + 1.938666642720273279e-05, + 1.948512040835030014e-05, + 1.958353415880504322e-05, + 1.968190752200680627e-05, + 1.978024034147911705e-05, + 1.987853246082507355e-05, + 1.997678372372769980e-05, + 2.007499397394544644e-05, + 2.017316305533039172e-05, + 2.027129081180191914e-05, + 2.036937708736457289e-05, + 2.046742172610398531e-05, + 2.056542457218253671e-05, + 2.066338546985749204e-05, + 2.076130426345900511e-05, + 2.085918079738599527e-05, + 2.095701491614618831e-05, + 2.105480646431210468e-05, + 2.115255528653900977e-05, + 2.125026122757839192e-05, + 2.134792413225627158e-05, + 2.144554384546878322e-05, + 2.154312021222238224e-05, + 2.164065307758979931e-05, + 2.173814228672800423e-05, + 2.183558768489601728e-05, + 2.193298911740678770e-05, + 2.203034642968904392e-05, + 2.212765946723915843e-05, + 2.222492807563884739e-05, + 2.232215210056877734e-05, + 2.241933138778669482e-05, + 2.251646578312354693e-05, + 2.261355513252269564e-05, + 2.271059928199687490e-05, + 2.280759807764571405e-05, + 2.290455136567344087e-05, + 2.300145899234108516e-05, + 2.309832080402780393e-05, + 2.319513664718339673e-05, + 2.329190636834987114e-05, + 2.338862981415346028e-05, + 2.348530683132629674e-05, + 2.358193726665894482e-05, + 2.367852096706147161e-05, + 2.377505777951592508e-05, + 2.387154755109393878e-05, + 2.396799012897424510e-05, + 2.406438536039960535e-05, + 2.416073309271608838e-05, + 2.425703317336923856e-05, + 2.435328544988187003e-05, + 2.444948976987247434e-05, + 2.454564598105076514e-05, + 2.464175393121354122e-05, + 2.473781346826241660e-05, + 2.483382444017792845e-05, + 2.492978669503281519e-05, + 2.502570008100966860e-05, + 2.512156444635769116e-05, + 2.521737963943211015e-05, + 2.531314550868977648e-05, + 2.540886190266828361e-05, + 2.550452867000291840e-05, + 2.560014565942295451e-05, + 2.569571271975186919e-05, + 2.579122969990297939e-05, + 2.588669644889744970e-05, + 2.598211281583800720e-05, + 2.607747864992693922e-05, + 2.617279380046193271e-05, + 2.626805811683167647e-05, + 2.636327144853367930e-05, + 2.645843364514867947e-05, + 2.655354455635779542e-05, + 2.664860403193868024e-05, + 2.674361192176574192e-05, + 2.683856807580612837e-05, + 2.693347234413685445e-05, + 2.702832457691974337e-05, + 2.712312462441849605e-05, + 2.721787233699465928e-05, + 2.731256756510359383e-05, + 2.740721015931208934e-05, + 2.750179997027259421e-05, + 2.759633684874059331e-05, + 2.769082064557063709e-05, + 2.778525121171687693e-05, + 2.787962839822850128e-05, + 2.797395205626722185e-05, + 2.806822203708218109e-05, + 2.816243819202696061e-05, + 2.825660037255540362e-05, + 2.835070843022236369e-05, + 2.844476221667942897e-05, + 2.853876158369176452e-05, + 2.863270638311348745e-05, + 2.872659646690457365e-05, + 2.882043168712684962e-05, + 2.891421189593988610e-05, + 2.900793694561852145e-05, + 2.910160668853150966e-05, + 2.919522097713784421e-05, + 2.928877966402495929e-05, + 2.938228260186642214e-05, + 2.947572964343954125e-05, + 2.956912064163795320e-05, + 2.966245544944651663e-05, + 2.975573391995844943e-05, + 2.984895590637160175e-05, + 2.994212126198833070e-05, + 3.003522984021168523e-05, + 3.012828149456661932e-05, + 3.022127607865411999e-05, + 3.031421344620984572e-05, + 3.040709345105883392e-05, + 3.049991594713183170e-05, + 3.059268078847872645e-05, + 3.068538782924723447e-05, + 3.077803692367933326e-05, + 3.087062792614905956e-05, + 3.096316069112070991e-05, + 3.105563507316627604e-05, + 3.114805092698183660e-05, + 3.124040810734224431e-05, + 3.133270646915946957e-05, + 3.142494586743730116e-05, + 3.151712615728781257e-05, + 3.160924719394459599e-05, + 3.170130883274163399e-05, + 3.179331092910978257e-05, + 3.188525333861431851e-05, + 3.197713591691340079e-05, + 3.206895851977516041e-05, + 3.216072100309460034e-05, + 3.225242322285168433e-05, + 3.234406503514992775e-05, + 3.243564629621160678e-05, + 3.252716686235742959e-05, + 3.261862659002391748e-05, + 3.271002533575882411e-05, + 3.280136295621732725e-05, + 3.289263930817901686e-05, + 3.298385424852315497e-05, + 3.307500763424145571e-05, + 3.316609932245461259e-05, + 3.325712917037136992e-05, + 3.334809703532601582e-05, + 3.343900277477415386e-05, + 3.352984624627248947e-05, + 3.362062730749546566e-05, + 3.371134581623163771e-05, + 3.380200163037945158e-05, + 3.389259460796399480e-05, + 3.398312460711267651e-05, + 3.407359148607178858e-05, + 3.416399510320260256e-05, + 3.425433531698157967e-05, + 3.434461198599657615e-05, + 3.443482496896347217e-05, + 3.452497412470164858e-05, + 3.461505931215077165e-05, + 3.470508039036667992e-05, + 3.479503721852212283e-05, + 3.488492965590205794e-05, + 3.497475756192101176e-05, + 3.506452079609830572e-05, + 3.515421921807485451e-05, + 3.524385268760921554e-05, + 3.533342106457364515e-05, + 3.542292420897082920e-05, + 3.551236198090938686e-05, + 3.560173424062060125e-05, + 3.569104084845451627e-05, + 3.578028166488013992e-05, + 3.586945655048131074e-05, + 3.595856536597369948e-05, + 3.604760797218046879e-05, + 3.613658423004842098e-05, + 3.622549400064456932e-05, + 3.631433714515593466e-05, + 3.640311352488622516e-05, + 3.649182300127169944e-05, + 3.658046543585768685e-05, + 3.666904069031437621e-05, + 3.675754862643336663e-05, + 3.684598910612383894e-05, + 3.693436199142864255e-05, + 3.702266714450471884e-05, + 3.711090442761899469e-05, + 3.719907370318489305e-05, + 3.728717483372265788e-05, + 3.737520768187483792e-05, + 3.746317211041946653e-05, + 3.755106798224553836e-05, + 3.763889516036971969e-05, + 3.772665350793211994e-05, + 3.781434288819694229e-05, + 3.790196316454830266e-05, + 3.798951420051070759e-05, + 3.807699585970512375e-05, + 3.816440800590533610e-05, + 3.825175050299399704e-05, + 3.833902321497885559e-05, + 3.842622600600504272e-05, + 3.851335874033533891e-05, + 3.860042128234630486e-05, + 3.868741349656425670e-05, + 3.877433524762586203e-05, + 3.886118640029445712e-05, + 3.894796681947534098e-05, + 3.903467637017341691e-05, + 3.912131491754784984e-05, + 3.920788232686967407e-05, + 3.929437846353706011e-05, + 3.938080319309177432e-05, + 3.946715638117968676e-05, + 3.955343789358663800e-05, + 3.963964759623461053e-05, + 3.972578535516211147e-05, + 3.981185103653665444e-05, + 3.989784450667001293e-05, + 3.998376563197984633e-05, + 4.006961427902457057e-05, + 4.015539031450019364e-05, + 4.024109360522061692e-05, + 4.032672401813353237e-05, + 4.041228142031682430e-05, + 4.049776567897483563e-05, + 4.058317666145413630e-05, + 4.066851423522028065e-05, + 4.075377826786982853e-05, + 4.083896862714599845e-05, + 4.092408518090018520e-05, + 4.100912779712681018e-05, + 4.109409634396002131e-05, + 4.117899068965426556e-05, + 4.126381070259983362e-05, + 4.134855625131957346e-05, + 4.143322720446506173e-05, + 4.151782343083215530e-05, + 4.160234479933800614e-05, + 4.168679117903716173e-05, + 4.177116243911720795e-05, + 4.185545844889948736e-05, + 4.193967907783525701e-05, + 4.202382419552125358e-05, + 4.210789367167687089e-05, + 4.219188737615977918e-05, + 4.227580517896227952e-05, + 4.235964695021129022e-05, + 4.244341256016514845e-05, + 4.252710187922869418e-05, + 4.261071477793047487e-05, + 4.269425112693883906e-05, + 4.277771079705785032e-05, + 4.286109365922349926e-05, + 4.294439958451957360e-05, + 4.302762844415480858e-05, + 4.311078010947822842e-05, + 4.319385445197574465e-05, + 4.327685134327008832e-05, + 4.335977065511765230e-05, + 4.344261225942316863e-05, + 4.352537602821800417e-05, + 4.360806183367460758e-05, + 4.369066954810388016e-05, + 4.377319904395441009e-05, + 4.385565019380963998e-05, + 4.393802287040276107e-05, + 4.402031694659446680e-05, + 4.410253229538800963e-05, + 4.418466878992601622e-05, + 4.426672630348634034e-05, + 4.434870470949795997e-05, + 4.443060388152173277e-05, + 4.451242369324756354e-05, + 4.459416401852741820e-05, + 4.467582473133902335e-05, + 4.475740570580039458e-05, + 4.483890681618136966e-05, + 4.492032793688170088e-05, + 4.500166894244561725e-05, + 4.508292970755878873e-05, + 4.516411010704476193e-05, + 4.524521001587927154e-05, + 4.532622930917298121e-05, + 4.540716786216761433e-05, + 4.548802555026875788e-05, + 4.556880224900986014e-05, + 4.564949783406695556e-05, + 4.573011218127010305e-05, + 4.581064516658456829e-05, + 4.589109666610797773e-05, + 4.597146655610343419e-05, + 4.605175471296270816e-05, + 4.613196101322143699e-05, + 4.621208533357361255e-05, + 4.629212755083187905e-05, + 4.637208754197884975e-05, + 4.645196518412668651e-05, + 4.653176035453245480e-05, + 4.661147293061274690e-05, + 4.669110278990704939e-05, + 4.677064981011118405e-05, + 4.685011386907353344e-05, + 4.692949484477730067e-05, + 4.700879261535148015e-05, + 4.708800705908518941e-05, + 4.716713805438890207e-05, + 4.724618547984440927e-05, + 4.732514921416563927e-05, + 4.740402913621672299e-05, + 4.748282512500897180e-05, + 4.756153705970051160e-05, + 4.764016481959308441e-05, + 4.771870828414691550e-05, + 4.779716733295902938e-05, + 4.787554184577403753e-05, + 4.795383170249900562e-05, + 4.803203678316792549e-05, + 4.811015696797334677e-05, + 4.818819213726416783e-05, + 4.826614217152648605e-05, + 4.834400695139982017e-05, + 4.842178635767197393e-05, + 4.849948027127690153e-05, + 4.857708857330860571e-05, + 4.865461114499969769e-05, + 4.873204786773326921e-05, + 4.880939862305578089e-05, + 4.888666329264343852e-05, + 4.896384175833267939e-05, + 4.904093390211803781e-05, + 4.911793960613377463e-05, + 4.919485875266904254e-05, + 4.927169122416352894e-05, + 4.934843690320833004e-05, + 4.942509567254274572e-05, + 4.950166741506791337e-05, + 4.957815201382633678e-05, + 4.965454935201568941e-05, + 4.973085931298615808e-05, + 4.980708178023656016e-05, + 4.988321663742870929e-05, + 4.995926376836636826e-05, + 5.003522305701020426e-05, + 5.011109438747321488e-05, + 5.018687764402193427e-05, + 5.026257271107285532e-05, + 5.033817947320608379e-05, + 5.041369781514549742e-05, + 5.048912762177170218e-05, + 5.056446877811997899e-05, + 5.063972116937606217e-05, + 5.071488468089051189e-05, + 5.078995919815787713e-05, + 5.086494460683139339e-05, + 5.093984079271878147e-05, + 5.101464764178311476e-05, + 5.108936504013895680e-05, + 5.116399287406720809e-05, + 5.123853102999678303e-05, + 5.131297939450282780e-05, + 5.138733785433630553e-05, + 5.146160629639112460e-05, + 5.153578460771716268e-05, + 5.160987267553111547e-05, + 5.168387038719631703e-05, + 5.175777763023582472e-05, + 5.183159429233010851e-05, + 5.190532026131298521e-05, + 5.197895542518616712e-05, + 5.205249967210183346e-05, + 5.212595289035953363e-05, + 5.219931496843726996e-05, + 5.227258579495721653e-05, + 5.234576525869996292e-05, + 5.241885324861412295e-05, + 5.249184965379696810e-05, + 5.256475436350789197e-05, + 5.263756726716485948e-05, + 5.271028825434493547e-05, + 5.278291721478100494e-05, + 5.285545403837858499e-05, + 5.292789861517922621e-05, + 5.300025083540768904e-05, + 5.307251058943498600e-05, + 5.314467776779236791e-05, + 5.321675226118403618e-05, + 5.328873396045519272e-05, + 5.336062275662105587e-05, + 5.343241854086413638e-05, + 5.350412120451815054e-05, + 5.357573063907703262e-05, + 5.364724673620979522e-05, + 5.371866938772322590e-05, + 5.378999848560877221e-05, + 5.386123392200620734e-05, + 5.393237558922065882e-05, + 5.400342337971880035e-05, + 5.407437718612951579e-05, + 5.414523690124061953e-05, + 5.421600241801237505e-05, + 5.428667362955764730e-05, + 5.435725042915186381e-05, + 5.442773271024679756e-05, + 5.449812036643731592e-05, + 5.456841329149144011e-05, + 5.463861137934701128e-05, + 5.470871452409582054e-05, + 5.477872261999613144e-05, + 5.484863556147068778e-05, + 5.491845324310245136e-05, + 5.498817555964865590e-05, + 5.505780240602069513e-05, + 5.512733367729481571e-05, + 5.519676926872445682e-05, + 5.526610907570893028e-05, + 5.533535299382169110e-05, + 5.540450091880816228e-05, + 5.547355274656896363e-05, + 5.554250837317370140e-05, + 5.561136769485706515e-05, + 5.568013060801997301e-05, + 5.574879700922571589e-05, + 5.581736679521305609e-05, + 5.588583986287775512e-05, + 5.595421610928479815e-05, + 5.602249543166580543e-05, + 5.609067772741556965e-05, + 5.615876289410550679e-05, + 5.622675082946435059e-05, + 5.629464143139089867e-05, + 5.636243459795160695e-05, + 5.643013022738007468e-05, + 5.649772821807424582e-05, + 5.656522846860908069e-05, + 5.663263087771832775e-05, + 5.669993534430658544e-05, + 5.676714176744682199e-05, + 5.683425004637658752e-05, + 5.690126008051213580e-05, + 5.696817176942850877e-05, + 5.703498501287226913e-05, + 5.710169971075928455e-05, + 5.716831576317450405e-05, + 5.723483307036881374e-05, + 5.730125153277139003e-05, + 5.736757105097559144e-05, + 5.743379152573414062e-05, + 5.749991285798879088e-05, + 5.756593494883834223e-05, + 5.763185769955209224e-05, + 5.769768101157863840e-05, + 5.776340478652733151e-05, + 5.782902892618174012e-05, + 5.789455333249566606e-05, + 5.795997790759092861e-05, + 5.802530255376899259e-05, + 5.809052717349665008e-05, + 5.815565166940291016e-05, + 5.822067594430613101e-05, + 5.828559990118377751e-05, + 5.835042344318570266e-05, + 5.841514647364500997e-05, + 5.847976889604613048e-05, + 5.854429061406600884e-05, + 5.860871153154240403e-05, + 5.867303155248818720e-05, + 5.873725058108565644e-05, + 5.880136852170197986e-05, + 5.886538527885579539e-05, + 5.892930075725990121e-05, + 5.899311486178824188e-05, + 5.905682749748797676e-05, + 5.912043856959095907e-05, + 5.918394798348543143e-05, + 5.924735564474184338e-05, + 5.931066145911041877e-05, + 5.937386533250623436e-05, + 5.943696717101865242e-05, + 5.949996688092286747e-05, + 5.956286436864770549e-05, + 5.962565954081710140e-05, + 5.968835230421781020e-05, + 5.975094256581161097e-05, + 5.981343023274631159e-05, + 5.987581521232753911e-05, + 5.993809741204478091e-05, + 6.000027673956858618e-05, + 6.006235310273613239e-05, + 6.012432640956008194e-05, + 6.018619656824028471e-05, + 6.024796348713557529e-05, + 6.030962707478889934e-05, + 6.037118723992515200e-05, + 6.043264389143669017e-05, + 6.049399693839523849e-05, + 6.055524629004912455e-05, + 6.061639185581999245e-05, + 6.067743354531531853e-05, + 6.073837126831021713e-05, + 6.079920493475786245e-05, + 6.085993445479865688e-05, + 6.092055973873412877e-05, + 6.098108069705161164e-05, + 6.104149724042097123e-05, + 6.110180927968187964e-05, + 6.116201672585492167e-05, + 6.122211949013750196e-05, + 6.128211748390314021e-05, + 6.134201061871171693e-05, + 6.140179880629288516e-05, + 6.146148195855761717e-05, + 6.152105998759537203e-05, + 6.158053280567448860e-05, + 6.163990032523910916e-05, + 6.169916245892067186e-05, + 6.175831911952162068e-05, + 6.181737022002575951e-05, + 6.187631567359678847e-05, + 6.193515539357772118e-05, + 6.199388929348840463e-05, + 6.205251728703623925e-05, + 6.211103928810064766e-05, + 6.216945521074371348e-05, + 6.222776496920705063e-05, + 6.228596847791063786e-05, + 6.234406565146206154e-05, + 6.240205640464168921e-05, + 6.245994065241307791e-05, + 6.251771830992037214e-05, + 6.257538929248843932e-05, + 6.263295351562068786e-05, + 6.269041089500946196e-05, + 6.274776134652002252e-05, + 6.280500478620195835e-05, + 6.286214113028587938e-05, + 6.291917029518452793e-05, + 6.297609219748888918e-05, + 6.303290675398007671e-05, + 6.308961388161355734e-05, + 6.314621349752842111e-05, + 6.320270551904683912e-05, + 6.325908986366994362e-05, + 6.331536644908974064e-05, + 6.337153519317498826e-05, + 6.342759601396936705e-05, + 6.348354882971476325e-05, + 6.353939355882592564e-05, + 6.359513011989995220e-05, + 6.365075843172802669e-05, + 6.370627841326583342e-05, + 6.376168998367077252e-05, + 6.381699306227316083e-05, + 6.387218756858716875e-05, + 6.392727342231797601e-05, + 6.398225054334941175e-05, + 6.403711885174159638e-05, + 6.409187826775415708e-05, + 6.414652871182039665e-05, + 6.420107010455779672e-05, + 6.425550236677846680e-05, + 6.430982541946381453e-05, + 6.436403918378707004e-05, + 6.441814358111165963e-05, + 6.447213853297751771e-05, + 6.452602396111032962e-05, + 6.457979978743044920e-05, + 6.463346593402537362e-05, + 6.468702232318624030e-05, + 6.474046887737840443e-05, + 6.479380551925392078e-05, + 6.484703217165917384e-05, + 6.490014875761217726e-05, + 6.495315520032368878e-05, + 6.500605142319562451e-05, + 6.505883734980812984e-05, + 6.511151290392771097e-05, + 6.516407800951674878e-05, + 6.521653259070674612e-05, + 6.526887657183275127e-05, + 6.532110987740720150e-05, + 6.537323243213060255e-05, + 6.542524416089075603e-05, + 6.547714498876255624e-05, + 6.552893484100437156e-05, + 6.558061364307037728e-05, + 6.563218132059345233e-05, + 6.568363779939695641e-05, + 6.573498300549097592e-05, + 6.578621686507340820e-05, + 6.583733930452735942e-05, + 6.588835025043072622e-05, + 6.593924962954191135e-05, + 6.599003736880986609e-05, + 6.604071339537127133e-05, + 6.609127763654874864e-05, + 6.614173001986021149e-05, + 6.619207047300451315e-05, + 6.624229892387131292e-05, + 6.629241530053905679e-05, + 6.634241953127454380e-05, + 6.639231154453105574e-05, + 6.644209126895766777e-05, + 6.649175863338527574e-05, + 6.654131356683616431e-05, + 6.659075599852174365e-05, + 6.664008585784261720e-05, + 6.668930307438623709e-05, + 6.673840757793651291e-05, + 6.678739929845978478e-05, + 6.683627816611486584e-05, + 6.688504411124928815e-05, + 6.693369706439870643e-05, + 6.698223695629549029e-05, + 6.703066371785499559e-05, + 6.707897728018491566e-05, + 6.712717757458303155e-05, + 6.717526453253780839e-05, + 6.722323808572545445e-05, + 6.727109816601936729e-05, + 6.731884470547670318e-05, + 6.736647763634778254e-05, + 6.741399689107362343e-05, + 6.746140240228564334e-05, + 6.750869410280462923e-05, + 6.755587192564829985e-05, + 6.760293580401977248e-05, + 6.764988567131446126e-05, + 6.769672146111976538e-05, + 6.774344310721223668e-05, + 6.779005054356614481e-05, + 6.783654370434363812e-05, + 6.788292252389098956e-05, + 6.792918693676003685e-05, + 6.797533687768559036e-05, + 6.802137228159405252e-05, + 6.806729308361286399e-05, + 6.811309921904638008e-05, + 6.815879062340603873e-05, + 6.820436723238719923e-05, + 6.824982898187762609e-05, + 6.829517580796354704e-05, + 6.834040764691988164e-05, + 6.838552443520757142e-05, + 6.843052610949306846e-05, + 6.847541260662696300e-05, + 6.852018386365332119e-05, + 6.856483981781693563e-05, + 6.860938040654372845e-05, + 6.865380556745784106e-05, + 6.869811523838243372e-05, + 6.874230935732668867e-05, + 6.878638786249319627e-05, + 6.883035069228643889e-05, + 6.887419778529053763e-05, + 6.891792908029681819e-05, + 6.896154451628279088e-05, + 6.900504403241930636e-05, + 6.904842756807992045e-05, + 6.909169506281881705e-05, + 6.913484645639154350e-05, + 6.917788168875101259e-05, + 6.922080070003881541e-05, + 6.926360343059050680e-05, + 6.930628982094421125e-05, + 6.934885981181828827e-05, + 6.939131334414000961e-05, + 6.943365035902257412e-05, + 6.947587079777706111e-05, + 6.951797460190798511e-05, + 6.955996171311584373e-05, + 6.960183207329332300e-05, + 6.964358562453387604e-05, + 6.968522230912139613e-05, + 6.972674206953528527e-05, + 6.976814484845134871e-05, + 6.980943058874027702e-05, + 6.985059923346593851e-05, + 6.989165072589432386e-05, + 6.993258500948034600e-05, + 6.997340202787658144e-05, + 7.001410172493163048e-05, + 7.005468404468769125e-05, + 7.009514893138871835e-05, + 7.013549632946879477e-05, + 7.017572618355968070e-05, + 7.021583843848932269e-05, + 7.025583303928216537e-05, + 7.029570993115629189e-05, + 7.033546905953230082e-05, + 7.037511037002109531e-05, + 7.041463380843224500e-05, + 7.045403932077131618e-05, + 7.049332685324102377e-05, + 7.053249635223846656e-05, + 7.057154776436308258e-05, + 7.061048103640545472e-05, + 7.064929611535494076e-05, + 7.068799294839815553e-05, + 7.072657148291616551e-05, + 7.076503166649324378e-05, + 7.080337344690471339e-05, + 7.084159677212511954e-05, + 7.087970159032649486e-05, + 7.091768784987796637e-05, + 7.095555549934433250e-05, + 7.099330448749313746e-05, + 7.103093476328415452e-05, + 7.106844627587631134e-05, + 7.110583897462675483e-05, + 7.114311280908792382e-05, + 7.118026772901549085e-05, + 7.121730368435959366e-05, + 7.125422062526308691e-05, + 7.129101850207708699e-05, + 7.132769726534408548e-05, + 7.136425686580415628e-05, + 7.140069725440132526e-05, + 7.143701838227375824e-05, + 7.147322020075306983e-05, + 7.150930266137973262e-05, + 7.154526571588566220e-05, + 7.158110931620077658e-05, + 7.161683341446093798e-05, + 7.165243796298868112e-05, + 7.168792291431636096e-05, + 7.172328822116922557e-05, + 7.175853383647043057e-05, + 7.179365971334804579e-05, + 7.182866580512451142e-05, + 7.186355206531682771e-05, + 7.189831844765098845e-05, + 7.193296490604544685e-05, + 7.196749139461775630e-05, + 7.200189786769072323e-05, + 7.203618427977565616e-05, + 7.207035058559414461e-05, + 7.210439674006101005e-05, + 7.213832269829140739e-05, + 7.217212841559930714e-05, + 7.220581384750364819e-05, + 7.223937894971222393e-05, + 7.227282367814379994e-05, + 7.230614798891004844e-05, + 7.233935183832282607e-05, + 7.237243518289956771e-05, + 7.240539797934827037e-05, + 7.243824018458192655e-05, + 7.247096175571617971e-05, + 7.250356265006206009e-05, + 7.253604282513082294e-05, + 7.256840223863997947e-05, + 7.260064084849603085e-05, + 7.263275861281725003e-05, + 7.266475548991516902e-05, + 7.269663143830178880e-05, + 7.272838641669611165e-05, + 7.276002038400806787e-05, + 7.279153329935247484e-05, + 7.282292512204804771e-05, + 7.285419581160905108e-05, + 7.288534532775198032e-05, + 7.291637363039455875e-05, + 7.294728067965434168e-05, + 7.297806643584856738e-05, + 7.300873085949971357e-05, + 7.303927391132700002e-05, + 7.306969555225113191e-05, + 7.309999574339467933e-05, + 7.313017444607917701e-05, + 7.316023162183138558e-05, + 7.319016723237555314e-05, + 7.321998123963768422e-05, + 7.324967360574552628e-05, + 7.327924429302770236e-05, + 7.330869326401250486e-05, + 7.333802048143408907e-05, + 7.336722590822384021e-05, + 7.339630950751534720e-05, + 7.342527124264421295e-05, + 7.345411107714576394e-05, + 7.348282897476113534e-05, + 7.351142489942857027e-05, + 7.353989881528993856e-05, + 7.356825068668786365e-05, + 7.359648047816738951e-05, + 7.362458815447306686e-05, + 7.365257368055631219e-05, + 7.368043702156594813e-05, + 7.370817814285291966e-05, + 7.373579700997147325e-05, + 7.376329358867692065e-05, + 7.379066784492547626e-05, + 7.381791974487917675e-05, + 7.384504925489829156e-05, + 7.387205634154622898e-05, + 7.389894097158869587e-05, + 7.392570311199196296e-05, + 7.395234272992846198e-05, + 7.397885979277065999e-05, + 7.400525426808851148e-05, + 7.403152612366287535e-05, + 7.405767532747098664e-05, + 7.408370184769321918e-05, + 7.410960565271507790e-05, + 7.413538671112177773e-05, + 7.416104499170174023e-05, + 7.418658046344567194e-05, + 7.421199309554678129e-05, + 7.423728285740003317e-05, + 7.426244971860782745e-05, + 7.428749364896601278e-05, + 7.431241461848197920e-05, + 7.433721259736107852e-05, + 7.436188755601101533e-05, + 7.438643946504621090e-05, + 7.441086829528098631e-05, + 7.443517401772923713e-05, + 7.445935660361482824e-05, + 7.448341602435930167e-05, + 7.450735225158744673e-05, + 7.453116525713150123e-05, + 7.455485501301866965e-05, + 7.457842149148666787e-05, + 7.460186466497237972e-05, + 7.462518450611636996e-05, + 7.464838098776119019e-05, + 7.467145408295666439e-05, + 7.469440376494846409e-05, + 7.471723000719281290e-05, + 7.473993278334443828e-05, + 7.476251206726173507e-05, + 7.478496783301037047e-05, + 7.480730005485282147e-05, + 7.482950870725773966e-05, + 7.485159376489958531e-05, + 7.487355520265269134e-05, + 7.489539299559573571e-05, + 7.491710711901106374e-05, + 7.493869754838253325e-05, + 7.496016425940162683e-05, + 7.498150722795921181e-05, + 7.500272643014999909e-05, + 7.502382184227594482e-05, + 7.504479344083649257e-05, + 7.506564120253768064e-05, + 7.508636510429143732e-05, + 7.510696512320936028e-05, + 7.512744123660815114e-05, + 7.514779342200793495e-05, + 7.516802165713261255e-05, + 7.518812591990820719e-05, + 7.520810618846751302e-05, + 7.522796244114464696e-05, + 7.524769465647766439e-05, + 7.526730281320812542e-05, + 7.528678689028071543e-05, + 7.530614686684710757e-05, + 7.532538272225871212e-05, + 7.534449443607266672e-05, + 7.536348198804901745e-05, + 7.538234535815233159e-05, + 7.540108452654993576e-05, + 7.541969947361503303e-05, + 7.543819017992239319e-05, + 7.545655662625168673e-05, + 7.547479879358604817e-05, + 7.549291666311165605e-05, + 7.551091021622143267e-05, + 7.552877943450929789e-05, + 7.554652429977409931e-05, + 7.556414479401814862e-05, + 7.558164089944831938e-05, + 7.559901259847402765e-05, + 7.561625987371144685e-05, + 7.563338270797820870e-05, + 7.565038108429638481e-05, + 7.566725498589258153e-05, + 7.568400439619672022e-05, + 7.570062929884213210e-05, + 7.571712967766909552e-05, + 7.573350551671854751e-05, + 7.574975680023684078e-05, + 7.576588351267422579e-05, + 7.578188563868437644e-05, + 7.579776316312677531e-05, + 7.581351607106381343e-05, + 7.582914434775939432e-05, + 7.584464797868675388e-05, + 7.586002694951887867e-05, + 7.587528124613399474e-05, + 7.589041085461602839e-05, + 7.590541576125108252e-05, + 7.592029595252955084e-05, + 7.593505141514630757e-05, + 7.594968213600024668e-05, + 7.596418810219352294e-05, + 7.597856930103572611e-05, + 7.599282572003476007e-05, + 7.600695734690806433e-05, + 7.602096416957422500e-05, + 7.603484617615624097e-05, + 7.604860335498273005e-05, + 7.606223569458542180e-05, + 7.607574318369770736e-05, + 7.608912581126209339e-05, + 7.610238356642132511e-05, + 7.611551643852291289e-05, + 7.612852441712108381e-05, + 7.614140749196930062e-05, + 7.615416565302980277e-05, + 7.616679889046664039e-05, + 7.617930719464740901e-05, + 7.619169055614620403e-05, + 7.620394896573967690e-05, + 7.621608241440688608e-05, + 7.622809089333429790e-05, + 7.623997439391035200e-05, + 7.625173290772761618e-05, + 7.626336642658487351e-05, + 7.627487494248175550e-05, + 7.628625844762330931e-05, + 7.629751693442025527e-05, + 7.630865039548511081e-05, + 7.631965882363525339e-05, + 7.633054221189248677e-05, + 7.634130055348134697e-05, + 7.635193384183285633e-05, + 7.636244207057967166e-05, + 7.637282523355935044e-05, + 7.638308332481433727e-05, + 7.639321633858919911e-05, + 7.640322426933314611e-05, + 7.641310711170081762e-05, + 7.642286486054949036e-05, + 7.643249751094021685e-05, + 7.644200505813877411e-05, + 7.645138749761359008e-05, + 7.646064482503974163e-05, + 7.646977703629316764e-05, + 7.647878412745539884e-05, + 7.648766609481132161e-05, + 7.649642293484992339e-05, + 7.650505464426366929e-05, + 7.651356121994974885e-05, + 7.652194265900884285e-05, + 7.653019895874462180e-05, + 7.653833011666567041e-05, + 7.654633613048373935e-05, + 7.655421699811436863e-05, + 7.656197271767798535e-05, + 7.656960328749749139e-05, + 7.657710870609967283e-05, + 7.658448897221547104e-05, + 7.659174408477918304e-05, + 7.659887404292970835e-05, + 7.660587884600848904e-05, + 7.661275849356146122e-05, + 7.661951298533757788e-05, + 7.662614232128982532e-05, + 7.663264650157420666e-05, + 7.663902552655165281e-05, + 7.664527939678565075e-05, + 7.665140811304319219e-05, + 7.665741167629535637e-05, + 7.666329008771598187e-05, + 7.666904334868296768e-05, + 7.667467146077853069e-05, + 7.668017442578644097e-05, + 7.668555224569539636e-05, + 7.669080492269707088e-05, + 7.669593245918568110e-05, + 7.670093485776092697e-05, + 7.670581212122449535e-05, + 7.671056425258010057e-05, + 7.671519125503769936e-05, + 7.671969313200835438e-05, + 7.672406988710660594e-05, + 7.672832152415190855e-05, + 7.673244804716486335e-05, + 7.673644946037067396e-05, + 7.674032576819643601e-05, + 7.674407697527344105e-05, + 7.674770308643609235e-05, + 7.675120410672171519e-05, + 7.675458004136956748e-05, + 7.675783089582403820e-05, + 7.676095667573081200e-05, + 7.676395738693937644e-05, + 7.676683303550218174e-05, + 7.676958362767447811e-05, + 7.677220916991374659e-05, + 7.677470966888167770e-05, + 7.677708513144174552e-05, + 7.677933556466060364e-05, + 7.678146097580838326e-05, + 7.678346137235613183e-05, + 7.678533676197989231e-05, + 7.678708715255652901e-05, + 7.678871255216677689e-05, + 7.679021296909335781e-05, + 7.679158841182244413e-05, + 7.679283888904120576e-05, + 7.679396440964121183e-05, + 7.679496498271532715e-05, + 7.679584061755898613e-05, + 7.679659132367091113e-05, + 7.679721711075116082e-05, + 7.679771798870298693e-05, + 7.679809396763158738e-05, + 7.679834505784428249e-05, + 7.679847126985140944e-05, + 7.679847261436493989e-05, + 7.679834910229908990e-05, + 7.679810074477046893e-05, + 7.679772755309753781e-05, + 7.679722953880113723e-05, + 7.679660671360469108e-05, + 7.679585908943225485e-05, + 7.679498667841088734e-05, + 7.679398949286953934e-05, + 7.679286754533852510e-05, + 7.679162084855090467e-05, + 7.679024941544112864e-05, + 7.678875325914513304e-05, + 7.678713239300088143e-05, + 7.678538683054859525e-05, + 7.678351658552912758e-05, + 7.678152167188567073e-05, + 7.677940210376307860e-05, + 7.677715789550713487e-05, + 7.677478906166621995e-05, + 7.677229561698919677e-05, + 7.676967757642667119e-05, + 7.676693495513082935e-05, + 7.676406776845492270e-05, + 7.676107603195397270e-05, + 7.675795976138361887e-05, + 7.675471897270128431e-05, + 7.675135368206522702e-05, + 7.674786390583535306e-05, + 7.674424966057203745e-05, + 7.674051096303710000e-05, + 7.673664783019293789e-05, + 7.673266027920343376e-05, + 7.672854832743304762e-05, + 7.672431199244730479e-05, + 7.671995129201268746e-05, + 7.671546624409578087e-05, + 7.671085686686461504e-05, + 7.670612317868770252e-05, + 7.670126519813414681e-05, + 7.669628294397303251e-05, + 7.669117643517562081e-05, + 7.668594569091166321e-05, + 7.668059073055269481e-05, + 7.667511157367027242e-05, + 7.666950824003643543e-05, + 7.666378074962312296e-05, + 7.665792912260243144e-05, + 7.665195337934754968e-05, + 7.664585354043133587e-05, + 7.663962962662584325e-05, + 7.663328165890474601e-05, + 7.662680965844073720e-05, + 7.662021364660624701e-05, + 7.661349364497429659e-05, + 7.660664967531729186e-05, + 7.659968175960772826e-05, + 7.659258992001755377e-05, + 7.658537417891852128e-05, + 7.657803455888155162e-05, + 7.657057108267838696e-05, + 7.656298377327862281e-05, + 7.655527265385235079e-05, + 7.654743774776919636e-05, + 7.653947907859738370e-05, + 7.653139667010449470e-05, + 7.652319054625852598e-05, + 7.651486073122511070e-05, + 7.650640724936990376e-05, + 7.649783012525761955e-05, + 7.648912938365093426e-05, + 7.648030504951323699e-05, + 7.647135714800529585e-05, + 7.646228570448731793e-05, + 7.645309074451866473e-05, + 7.644377229385604963e-05, + 7.643433037845680407e-05, + 7.642476502447561140e-05, + 7.641507625826533356e-05, + 7.640526410637809532e-05, + 7.639532859556480990e-05, + 7.638526975277291572e-05, + 7.637508760515090294e-05, + 7.636478218004281115e-05, + 7.635435350499215955e-05, + 7.634380160774097124e-05, + 7.633312651622805201e-05, + 7.632232825859136202e-05, + 7.631140686316664702e-05, + 7.630036235848634059e-05, + 7.628919477328185452e-05, + 7.627790413648222352e-05, + 7.626649047721285846e-05, + 7.625495382479897510e-05, + 7.624329420876227372e-05, + 7.623151165882087140e-05, + 7.621960620489171435e-05, + 7.620757787708826040e-05, + 7.619542670572199692e-05, + 7.618315272130112622e-05, + 7.617075595453057907e-05, + 7.615823643631292278e-05, + 7.614559419774845600e-05, + 7.613282927013188838e-05, + 7.611994168495801912e-05, + 7.610693147391665468e-05, + 7.609379866889392347e-05, + 7.608054330197338709e-05, + 7.606716540543541696e-05, + 7.605366501175677416e-05, + 7.604004215360979629e-05, + 7.602629686386471494e-05, + 7.601242917558641667e-05, + 7.599843912203697730e-05, + 7.598432673667429311e-05, + 7.597009205315327347e-05, + 7.595573510532402481e-05, + 7.594125592723191835e-05, + 7.592665455311955526e-05, + 7.591193101742470663e-05, + 7.589708535478085561e-05, + 7.588211760001725161e-05, + 7.586702778815937107e-05, + 7.585181595442647801e-05, + 7.583648213423483601e-05, + 7.582102636319544488e-05, + 7.580544867711481321e-05, + 7.578974911199527005e-05, + 7.577392770403228151e-05, + 7.575798448961802863e-05, + 7.574191950533964556e-05, + 7.572573278797888074e-05, + 7.570942437451200202e-05, + 7.569299430211119260e-05, + 7.567644260814090538e-05, + 7.565976933016191515e-05, + 7.564297450593092560e-05, + 7.562605817339605632e-05, + 7.560902037070136932e-05, + 7.559186113618587973e-05, + 7.557458050838073685e-05, + 7.555717852601284267e-05, + 7.553965522800290034e-05, + 7.552201065346533283e-05, + 7.550424484170908251e-05, + 7.548635783223555122e-05, + 7.546834966474005033e-05, + 7.545022037911428090e-05, + 7.543197001543957094e-05, + 7.541359861399285209e-05, + 7.539510621524512818e-05, + 7.537649285985793801e-05, + 7.535775858868876283e-05, + 7.533890344278709609e-05, + 7.531992746339570381e-05, + 7.530083069195029938e-05, + 7.528161317008023466e-05, + 7.526227493960452916e-05, + 7.524281604254021833e-05, + 7.522323652109212146e-05, + 7.520353641766002449e-05, + 7.518371577483659292e-05, + 7.516377463540369909e-05, + 7.514371304233986252e-05, + 7.512353103881389373e-05, + 7.510322866818482654e-05, + 7.508280597400630906e-05, + 7.506226300002415066e-05, + 7.504159979017226980e-05, + 7.502081638858228922e-05, + 7.499991283957174520e-05, + 7.497888918765311360e-05, + 7.495774547753031325e-05, + 7.493648175409542628e-05, + 7.491509806243692451e-05, + 7.489359444783168695e-05, + 7.487197095574654488e-05, + 7.485022763184135818e-05, + 7.482836452196729422e-05, + 7.480638167216289763e-05, + 7.478427912866270966e-05, + 7.476205693788901473e-05, + 7.473971514645354804e-05, + 7.471725380116084304e-05, + 7.469467294900470776e-05, + 7.467197263716974273e-05, + 7.464915291303140870e-05, + 7.462621382415258434e-05, + 7.460315541828866194e-05, + 7.457997774338588051e-05, + 7.455668084757543037e-05, + 7.453326477918471534e-05, + 7.450972958672771689e-05, + 7.448607531890580726e-05, + 7.446230202461284525e-05, + 7.443840975293134084e-05, + 7.441439855313291597e-05, + 7.439026847467932098e-05, + 7.436601956721827398e-05, + 7.434165188058972215e-05, + 7.431716546482131514e-05, + 7.429256037012944868e-05, + 7.426783664691934583e-05, + 7.424299434578572111e-05, + 7.421803351750901284e-05, + 7.419295421306068225e-05, + 7.416775648359960843e-05, + 7.414244038047317260e-05, + 7.411700595521616031e-05, + 7.409145325955295697e-05, + 7.406578234539249275e-05, + 7.403999326483486976e-05, + 7.401408607016646962e-05, + 7.398806081386137643e-05, + 7.396191754858244744e-05, + 7.393565632717654258e-05, + 7.390927720268063660e-05, + 7.388278022831836324e-05, + 7.385616545750025913e-05, + 7.382943294382387220e-05, + 7.380258274107448003e-05, + 7.377561490322120019e-05, + 7.374852948442277723e-05, + 7.372132653902354401e-05, + 7.369400612155423483e-05, + 7.366656828673178218e-05, + 7.363901308946072617e-05, + 7.361134058482866091e-05, + 7.358355082811179101e-05, + 7.355564387477173322e-05, + 7.352761978045559772e-05, + 7.349947860099751958e-05, + 7.347122039241376626e-05, + 7.344284521090834838e-05, + 7.341435311287404974e-05, + 7.338574415488211379e-05, + 7.335701839369370911e-05, + 7.332817588625475231e-05, + 7.329921668969153060e-05, + 7.327014086132376642e-05, + 7.324094845864693136e-05, + 7.321163953934654411e-05, + 7.318221416129112313e-05, + 7.315267238253474809e-05, + 7.312301426131121872e-05, + 7.309323985604673996e-05, + 7.306334922534306266e-05, + 7.303334242799099541e-05, + 7.300321952296511907e-05, + 7.297298056941859616e-05, + 7.294262562669591020e-05, + 7.291215475432133257e-05, + 7.288156801199966784e-05, + 7.285086545962350440e-05, + 7.282004715726737333e-05, + 7.278911316518525470e-05, + 7.275806354382188042e-05, + 7.272689835379644407e-05, + 7.269561765591557069e-05, + 7.266422151116873600e-05, + 7.263270998072300806e-05, + 7.260108312593486503e-05, + 7.256934100833970554e-05, + 7.253748368965225526e-05, + 7.250551123177342448e-05, + 7.247342369678578156e-05, + 7.244122114694803705e-05, + 7.240890364470953136e-05, + 7.237647125269605880e-05, + 7.234392403371286268e-05, + 7.231126205075036806e-05, + 7.227848536697873360e-05, + 7.224559404574943723e-05, + 7.221258815059591310e-05, + 7.217946774522859138e-05, + 7.214623289354285356e-05, + 7.211288365961409936e-05, + 7.207942010769364030e-05, + 7.204584230222026001e-05, + 7.201215030781003628e-05, + 7.197834418925550079e-05, + 7.194442401153375711e-05, + 7.191038983980030071e-05, + 7.187624173939036068e-05, + 7.184197977581992971e-05, + 7.180760401478089876e-05, + 7.177311452214857866e-05, + 7.173851136397557443e-05, + 7.170379460649446864e-05, + 7.166896431611610024e-05, + 7.163402055943213958e-05, + 7.159896340320855601e-05, + 7.156379291439404766e-05, + 7.152850916011481007e-05, + 7.149311220767545782e-05, + 7.145760212455836043e-05, + 7.142197897842583786e-05, + 7.138624283711369600e-05, + 7.135039376864045588e-05, + 7.131443184120021155e-05, + 7.127835712316521856e-05, + 7.124216968308669359e-05, + 7.120586958968874291e-05, + 7.116945691187677849e-05, + 7.113293171873255778e-05, + 7.109629407951441413e-05, + 7.105954406365748714e-05, + 7.102268174077548451e-05, + 7.098570718065397355e-05, + 7.094862045325948843e-05, + 7.091142162873358070e-05, + 7.087411077739406604e-05, + 7.083668796973475329e-05, + 7.079915327642697580e-05, + 7.076150676831303207e-05, + 7.072374851641599776e-05, + 7.068587859193284102e-05, + 7.064789706623579124e-05, + 7.060980401087408741e-05, + 7.057159949756767613e-05, + 7.053328359821394724e-05, + 7.049485638489087801e-05, + 7.045631792984132576e-05, + 7.041766830548893850e-05, + 7.037890758443217831e-05, + 7.034003583943731466e-05, + 7.030105314345639505e-05, + 7.026195956960383981e-05, + 7.022275519117488710e-05, + 7.018344008163843715e-05, + 7.014401431463264771e-05, + 7.010447796397180516e-05, + 7.006483110364903504e-05, + 7.002507380782100124e-05, + 6.998520615082361336e-05, + 6.994522820716615849e-05, + 6.990514005152434875e-05, + 6.986494175875650301e-05, + 6.982463340388821898e-05, + 6.978421506211502951e-05, + 6.974368680880894847e-05, + 6.970304871951478443e-05, + 6.966230086994240221e-05, + 6.962144333598545244e-05, + 6.958047619369803411e-05, + 6.953939951931187920e-05, + 6.949821338923085033e-05, + 6.945691788002291767e-05, + 6.941551306843807539e-05, + 6.937399903139186176e-05, + 6.933237584596731076e-05, + 6.929064358942381538e-05, + 6.924880233919143561e-05, + 6.920685217286326831e-05, + 6.916479316821565410e-05, + 6.912262540318237327e-05, + 6.908034895587485266e-05, + 6.903796390457246201e-05, + 6.899547032772418095e-05, + 6.895286830394953411e-05, + 6.891015791203829296e-05, + 6.886733923094508192e-05, + 6.882441233979882445e-05, + 6.878137731789566865e-05, + 6.873823424470078974e-05, + 6.869498319984806479e-05, + 6.865162426314264771e-05, + 6.860815751455179420e-05, + 6.856458303421705900e-05, + 6.852090090244647609e-05, + 6.847711119971585975e-05, + 6.843321400667133885e-05, + 6.838920940412072393e-05, + 6.834509747304552826e-05, + 6.830087829459253817e-05, + 6.825655195007634740e-05, + 6.821211852097859812e-05, + 6.816757808894943109e-05, + 6.812293073580121081e-05, + 6.807817654351761927e-05, + 6.803331559424805877e-05, + 6.798834797030786875e-05, + 6.794327375417893566e-05, + 6.789809302851110241e-05, + 6.785280587611483647e-05, + 6.780741237997170597e-05, + 6.776191262322752210e-05, + 6.771630668919366729e-05, + 6.767059466134854530e-05, + 6.762477662333065591e-05, + 6.757885265894881350e-05, + 6.753282285217523527e-05, + 6.748668728714705912e-05, + 6.744044604816563893e-05, + 6.739409921969925505e-05, + 6.734764688637450846e-05, + 6.730108913298853157e-05, + 6.725442604449988096e-05, + 6.720765770603138339e-05, + 6.716078420286974277e-05, + 6.711380562046728845e-05, + 6.706672204443332871e-05, + 6.701953356054718826e-05, + 6.697224025474895191e-05, + 6.692484221314164649e-05, + 6.687733952199330085e-05, + 6.682973226772881436e-05, + 6.678202053693911837e-05, + 6.673420441638409006e-05, + 6.668628399297371438e-05, + 6.663825935378743710e-05, + 6.659013058606741561e-05, + 6.654189777720931679e-05, + 6.649356101478423142e-05, + 6.644512038651104061e-05, + 6.639657598027744927e-05, + 6.634792788413270846e-05, + 6.629917618628054093e-05, + 6.625032097509028133e-05, + 6.620136233909748602e-05, + 6.615230036698601670e-05, + 6.610313514760830138e-05, + 6.605386676997699962e-05, + 6.600449532325658637e-05, + 6.595502089678578143e-05, + 6.590544358004835730e-05, + 6.585576346269676122e-05, + 6.580598063453961977e-05, + 6.575609518554752578e-05, + 6.570610720584165419e-05, + 6.565601678571658455e-05, + 6.560582401561137990e-05, + 6.555552898613143341e-05, + 6.550513178804159733e-05, + 6.545463251225524604e-05, + 6.540403124985759995e-05, + 6.535332809208509858e-05, + 6.530252313032743343e-05, + 6.525161645613867460e-05, + 6.520060816123012860e-05, + 6.514949833746219330e-05, + 6.509828707686688223e-05, + 6.504697447161841557e-05, + 6.499556061405661184e-05, + 6.494404559667519205e-05, + 6.489242951212478838e-05, + 6.484071245321222589e-05, + 6.478889451290292128e-05, + 6.473697578431140975e-05, + 6.468495636071458575e-05, + 6.463283633554270412e-05, + 6.458061580238188735e-05, + 6.452829485497342077e-05, + 6.447587358721562287e-05, + 6.442335209315551046e-05, + 6.437073046700163292e-05, + 6.431800880311450413e-05, + 6.426518719600966530e-05, + 6.421226574035885054e-05, + 6.415924453098138097e-05, + 6.410612366285731070e-05, + 6.405290323111776382e-05, + 6.399958333104843104e-05, + 6.394616405808764515e-05, + 6.389264550782990473e-05, + 6.383902777601546577e-05, + 6.378531095854480225e-05, + 6.373149515146891606e-05, + 6.367758045099089557e-05, + 6.362356695346693203e-05, + 6.356945475540763419e-05, + 6.351524395346859573e-05, + 6.346093464446450345e-05, + 6.340652692535928459e-05, + 6.335202089326876309e-05, + 6.329741664546242148e-05, + 6.324271427935348035e-05, + 6.318791389251423988e-05, + 6.313301558266499385e-05, + 6.307801944767659104e-05, + 6.302292558557101804e-05, + 6.296773409452249696e-05, + 6.291244507284867631e-05, + 6.285705861902434616e-05, + 6.280157483167154477e-05, + 6.274599380956243175e-05, + 6.269031565162083307e-05, + 6.263454045691287618e-05, + 6.257866832465830648e-05, + 6.252269935423363141e-05, + 6.246663364514947424e-05, + 6.241047129707450781e-05, + 6.235421240982644210e-05, + 6.229785708336360811e-05, + 6.224140541779779210e-05, + 6.218485751339510297e-05, + 6.212821347055577897e-05, + 6.207147338983707793e-05, + 6.201463737194368208e-05, + 6.195770551771749297e-05, + 6.190067792816496696e-05, + 6.184355470442246135e-05, + 6.178633594778218754e-05, + 6.172902175968360511e-05, + 6.167161224170477534e-05, + 6.161410749557481598e-05, + 6.155650762317659821e-05, + 6.149881272652363957e-05, + 6.144102290778524387e-05, + 6.138313826927607937e-05, + 6.132515891344635312e-05, + 6.126708494290840107e-05, + 6.120891646040238661e-05, + 6.115065356882308035e-05, + 6.109229637120739179e-05, + 6.103384497073905855e-05, + 6.097529947073632704e-05, + 6.091665997467825798e-05, + 6.085792658617111611e-05, + 6.079909940897414709e-05, + 6.074017854699037533e-05, + 6.068116410425629734e-05, + 6.062205618496617455e-05, + 6.056285489345012574e-05, + 6.050356033417553643e-05, + 6.044417261176042173e-05, + 6.038469183096458327e-05, + 6.032511809668038673e-05, + 6.026545151395984657e-05, + 6.020569218797919969e-05, + 6.014584022406615962e-05, + 6.008589572769013830e-05, + 6.002585880445138379e-05, + 5.996572956010728570e-05, + 5.990550810054760117e-05, + 5.984519453179843254e-05, + 5.978478896003335398e-05, + 5.972429149156458877e-05, + 5.966370223284400546e-05, + 5.960302129046349051e-05, + 5.954224877115765882e-05, + 5.948138478179259159e-05, + 5.942042942938191639e-05, + 5.935938282107576860e-05, + 5.929824506416298696e-05, + 5.923701626607465751e-05, + 5.917569653437227550e-05, + 5.911428597676373058e-05, + 5.905278470109261385e-05, + 5.899119281534056245e-05, + 5.892951042762727311e-05, + 5.886773764621275866e-05, + 5.880587457948718361e-05, + 5.874392133598505369e-05, + 5.868187802437606782e-05, + 5.861974475346688003e-05, + 5.855752163220358627e-05, + 5.849520876966061137e-05, + 5.843280627505727703e-05, + 5.837031425774630246e-05, + 5.830773282721620995e-05, + 5.824506209309178570e-05, + 5.818230216513586872e-05, + 5.811945315323902380e-05, + 5.805651516743470683e-05, + 5.799348831788916133e-05, + 5.793037271490363433e-05, + 5.786716846891358355e-05, + 5.780387569049230266e-05, + 5.774049449033885959e-05, + 5.767702497929476607e-05, + 5.761346726833286463e-05, + 5.754982146855936142e-05, + 5.748608769121727537e-05, + 5.742226604767457291e-05, + 5.735835664943778154e-05, + 5.729435960815484934e-05, + 5.723027503558965952e-05, + 5.716610304365007733e-05, + 5.710184374437642362e-05, + 5.703749724993248957e-05, + 5.697306367262298553e-05, + 5.690854312488134373e-05, + 5.684393571927224588e-05, + 5.677924156849264634e-05, + 5.671446078537285634e-05, + 5.664959348286341834e-05, + 5.658463977406498263e-05, + 5.651959977218971642e-05, + 5.645447359059095008e-05, + 5.638926134275264000e-05, + 5.632396314228022065e-05, + 5.625857910291471952e-05, + 5.619310933853515595e-05, + 5.612755396313310978e-05, + 5.606191309084082933e-05, + 5.599618683591967781e-05, + 5.593037531274860696e-05, + 5.586447863585477895e-05, + 5.579849691987432504e-05, + 5.573243027958307594e-05, + 5.566627882988152529e-05, + 5.560004268580180919e-05, + 5.553372196249155160e-05, + 5.546731677524638365e-05, + 5.540082723946906240e-05, + 5.533425347070080431e-05, + 5.526759558460965038e-05, + 5.520085369697908206e-05, + 5.513402792373653572e-05, + 5.506711838092637217e-05, + 5.500012518471412537e-05, + 5.493304845139930953e-05, + 5.486588829740461783e-05, + 5.479864483927785357e-05, + 5.473131819369566394e-05, + 5.466390847745022463e-05, + 5.459641580746794236e-05, + 5.452884030079991386e-05, + 5.446118207460993191e-05, + 5.439344124620341318e-05, + 5.432561793300135709e-05, + 5.425771225254269036e-05, + 5.418972432249907317e-05, + 5.412165426066207845e-05, + 5.405350218494734576e-05, + 5.398526821339323954e-05, + 5.391695246416366809e-05, + 5.384855505553697724e-05, + 5.378007610592215241e-05, + 5.371151573384830183e-05, + 5.364287405796564590e-05, + 5.357415119705005729e-05, + 5.350534726998984719e-05, + 5.343646239580368855e-05, + 5.336749669362832394e-05, + 5.329845028272185882e-05, + 5.322932328246328718e-05, + 5.316011581235480227e-05, + 5.309082799201048021e-05, + 5.302145994117334266e-05, + 5.295201177970368129e-05, + 5.288248362758126006e-05, + 5.281287560490885923e-05, + 5.274318783189926494e-05, + 5.267342042889374803e-05, + 5.260357351634939248e-05, + 5.253364721484194821e-05, + 5.246364164506629182e-05, + 5.239355692783825624e-05, + 5.232339318408263672e-05, + 5.225315053485164935e-05, + 5.218282910131183936e-05, + 5.211242900474778771e-05, + 5.204195036656074228e-05, + 5.197139330827283950e-05, + 5.190075795151347728e-05, + 5.183004441803815978e-05, + 5.175925282971556834e-05, + 5.168838330853106475e-05, + 5.161743597658896137e-05, + 5.154641095610002562e-05, + 5.147530836939732973e-05, + 5.140412833893814127e-05, + 5.133287098727683847e-05, + 5.126153643709487480e-05, + 5.119012481118877825e-05, + 5.111863623246052903e-05, + 5.104707082393531337e-05, + 5.097542870874959052e-05, + 5.090371001015441991e-05, + 5.083191485151367897e-05, + 5.076004335630865069e-05, + 5.068809564812109647e-05, + 5.061607185066802517e-05, + 5.054397208775729503e-05, + 5.047179648332194218e-05, + 5.039954516140790209e-05, + 5.032721824616372320e-05, + 5.025481586185630815e-05, + 5.018233813287384116e-05, + 5.010978518369740901e-05, + 5.003715713893200926e-05, + 4.996445412329410897e-05, + 4.989167626159822776e-05, + 4.981882367879215403e-05, + 4.974589649991202508e-05, + 4.967289485011680479e-05, + 4.959981885467597788e-05, + 4.952666863895919581e-05, + 4.945344432845227552e-05, + 4.938014604876001835e-05, + 4.930677392557793274e-05, + 4.923332808472270702e-05, + 4.915980865212025611e-05, + 4.908621575379252139e-05, + 4.901254951588861436e-05, + 4.893881006465677648e-05, + 4.886499752644650691e-05, + 4.879111202772515760e-05, + 4.871715369506407581e-05, + 4.864312265514214811e-05, + 4.856901903474855153e-05, + 4.849484296077002097e-05, + 4.842059456020932805e-05, + 4.834627396017601123e-05, + 4.827188128787271481e-05, + 4.819741667062822323e-05, + 4.812288023586673075e-05, + 4.804827211111183262e-05, + 4.797359242400257129e-05, + 4.789884130227972805e-05, + 4.782401887378888585e-05, + 4.774912526648420375e-05, + 4.767416060841403761e-05, + 4.759912502774149258e-05, + 4.752401865272990150e-05, + 4.744884161174710752e-05, + 4.737359403326402754e-05, + 4.729827604585900934e-05, + 4.722288777820321520e-05, + 4.714742935908120816e-05, + 4.707190091737654567e-05, + 4.699630258207598772e-05, + 4.692063448226822960e-05, + 4.684489674714756790e-05, + 4.676908950600046995e-05, + 4.669321288822469643e-05, + 4.661726702331658233e-05, + 4.654125204087372034e-05, + 4.646516807059784755e-05, + 4.638901524228166562e-05, + 4.631279368582870876e-05, + 4.623650353123922880e-05, + 4.616014490861386114e-05, + 4.608371794815321139e-05, + 4.600722278016108766e-05, + 4.593065953503042625e-05, + 4.585402834326395249e-05, + 4.577732933545974051e-05, + 4.570056264231505539e-05, + 4.562372839462543157e-05, + 4.554682672328860989e-05, + 4.546985775929009735e-05, + 4.539282163372370597e-05, + 4.531571847777749205e-05, + 4.523854842273697488e-05, + 4.516131159998849778e-05, + 4.508400814100551294e-05, + 4.500663817736474281e-05, + 4.492920184074977150e-05, + 4.485169926292054485e-05, + 4.477413057574665541e-05, + 4.469649591119336982e-05, + 4.461879540131211488e-05, + 4.454102917825926818e-05, + 4.446319737428381172e-05, + 4.438530012172944611e-05, + 4.430733755303823621e-05, + 4.422930980073638775e-05, + 4.415121699745203499e-05, + 4.407305927591684676e-05, + 4.399483676893670549e-05, + 4.391654960942438241e-05, + 4.383819793038633061e-05, + 4.375978186491208692e-05, + 4.368130154619115840e-05, + 4.360275710751609197e-05, + 4.352414868225124939e-05, + 4.344547640386745431e-05, + 4.336674040592755879e-05, + 4.328794082207251137e-05, + 4.320907778605908721e-05, + 4.313015143171157343e-05, + 4.305116189295911979e-05, + 4.297210930382201684e-05, + 4.289299379840117907e-05, + 4.281381551089452321e-05, + 4.273457457560121014e-05, + 4.265527112688926112e-05, + 4.257590529923088924e-05, + 4.249647722718794403e-05, + 4.241698704539755926e-05, + 4.233743488861060157e-05, + 4.225782089164250178e-05, + 4.217814518941144600e-05, + 4.209840791692075733e-05, + 4.201860920926179605e-05, + 4.193874920161427816e-05, + 4.185882802924904687e-05, + 4.177884582751445903e-05, + 4.169880273185619222e-05, + 4.161869887780767662e-05, + 4.153853440097485521e-05, + 4.145830943707157619e-05, + 4.137802412188764289e-05, + 4.129767859129217483e-05, + 4.121727298125072450e-05, + 4.113680742781120314e-05, + 4.105628206710712648e-05, + 4.097569703536069126e-05, + 4.089505246886886348e-05, + 4.081434850402383598e-05, + 4.073358527729921164e-05, + 4.065276292525286971e-05, + 4.057188158452680322e-05, + 4.049094139185072393e-05, + 4.040994248402713420e-05, + 4.032888499795298399e-05, + 4.024776907060474945e-05, + 4.016659483904211927e-05, + 4.008536244040739835e-05, + 4.000407201192927539e-05, + 3.992272369090790155e-05, + 3.984131761473614763e-05, + 3.975985392088574657e-05, + 3.967833274690944154e-05, + 3.959675423044532277e-05, + 3.951511850920191296e-05, + 3.943342572097935665e-05, + 3.935167600365512913e-05, + 3.926986949518694342e-05, + 3.918800633361302810e-05, + 3.910608665705521728e-05, + 3.902411060370407673e-05, + 3.894207831184089960e-05, + 3.885998991982263603e-05, + 3.877784556608524739e-05, + 3.869564538914369950e-05, + 3.861338952759508651e-05, + 3.853107812010411612e-05, + 3.844871130542461068e-05, + 3.836628922238453839e-05, + 3.828381200988992326e-05, + 3.820127980692761656e-05, + 3.811869275255094471e-05, + 3.803605098589734110e-05, + 3.795335464619215438e-05, + 3.787060387271549896e-05, + 3.778779880483800656e-05, + 3.770493958200680617e-05, + 3.762202634373369942e-05, + 3.753905922961718345e-05, + 3.745603837932744151e-05, + 3.737296393260973107e-05, + 3.728983602928791425e-05, + 3.720665480924961781e-05, + 3.712342041246440710e-05, + 3.704013297898655754e-05, + 3.695679264892271149e-05, + 3.687339956246807711e-05, + 3.678995385989074804e-05, + 3.670645568152181004e-05, + 3.662290516777224784e-05, + 3.653930245913688206e-05, + 3.645564769616145020e-05, + 3.637194101947841912e-05, + 3.628818256979228740e-05, + 3.620437248786487401e-05, + 3.612051091455547447e-05, + 3.603659799076863621e-05, + 3.595263385749518202e-05, + 3.586861865579665858e-05, + 3.578455252679068612e-05, + 3.570043561168721827e-05, + 3.561626805175575845e-05, + 3.553204998832789420e-05, + 3.544778156281653501e-05, + 3.536346291670373535e-05, + 3.527909419152614606e-05, + 3.519467552891544153e-05, + 3.511020707054603401e-05, + 3.502568895817591423e-05, + 3.494112133362742707e-05, + 3.485650433879121536e-05, + 3.477183811562561684e-05, + 3.468712280616034359e-05, + 3.460235855248150656e-05, + 3.451754549675329281e-05, + 3.443268378120681176e-05, + 3.434777354812513324e-05, + 3.426281493987989960e-05, + 3.417780809889768161e-05, + 3.409275316766388153e-05, + 3.400765028874062250e-05, + 3.392249960475159678e-05, + 3.383730125838605698e-05, + 3.375205539240179085e-05, + 3.366676214961017281e-05, + 3.358142167289842402e-05, + 3.349603410521784198e-05, + 3.341059958956881144e-05, + 3.332511826903841945e-05, + 3.323959028676545596e-05, + 3.315401578594510295e-05, + 3.306839490984641048e-05, + 3.298272780179791066e-05, + 3.289701460519050429e-05, + 3.281125546347758292e-05, + 3.272545052017849821e-05, + 3.263959991886301724e-05, + 3.255370380317410429e-05, + 3.246776231681217957e-05, + 3.238177560353890718e-05, + 3.229574380718063740e-05, + 3.220966707161316693e-05, + 3.212354554078405988e-05, + 3.203737935869738760e-05, + 3.195116866941698133e-05, + 3.186491361706669643e-05, + 3.177861434583357695e-05, + 3.169227099995237858e-05, + 3.160588372372864866e-05, + 3.151945266152239534e-05, + 3.143297795775273613e-05, + 3.134645975690061517e-05, + 3.125989820349350242e-05, + 3.117329344212830421e-05, + 3.108664561745565588e-05, + 3.099995487418361479e-05, + 3.091322135707707765e-05, + 3.082644521096190718e-05, + 3.073962658070906215e-05, + 3.065276561125343535e-05, + 3.056586244759746540e-05, + 3.047891723477678442e-05, + 3.039193011789782973e-05, + 3.030490124212242104e-05, + 3.021783075265612562e-05, + 3.013071879477098250e-05, + 3.004356551378982895e-05, + 2.995637105508989535e-05, + 2.986913556410669468e-05, + 2.978185918631783070e-05, + 2.969454206726260167e-05, + 2.960718435254520211e-05, + 2.951978618780006901e-05, + 2.943234771872997460e-05, + 2.934486909109049175e-05, + 2.925735045067801691e-05, + 2.916979194335308389e-05, + 2.908219371502406692e-05, + 2.899455591165124978e-05, + 2.890687867924669369e-05, + 2.881916216387727308e-05, + 2.873140651164571557e-05, + 2.864361186873256738e-05, + 2.855577838134184775e-05, + 2.846790619574336663e-05, + 2.837999545825713930e-05, + 2.829204631523742831e-05, + 2.820405891311142233e-05, + 2.811603339834414870e-05, + 2.802796991744183105e-05, + 2.793986861697116098e-05, + 2.785172964354780558e-05, + 2.776355314381984954e-05, + 2.767533926451112264e-05, + 2.758708815236596303e-05, + 2.749879995419189752e-05, + 2.741047481684400533e-05, + 2.732211288720891936e-05, + 2.723371431224349832e-05, + 2.714527923893977990e-05, + 2.705680781432828080e-05, + 2.696830018549753946e-05, + 2.687975649958208483e-05, + 2.679117690374641051e-05, + 2.670256154522399246e-05, + 2.661391057128193721e-05, + 2.652522412922440055e-05, + 2.643650236641198790e-05, + 2.634774543024592501e-05, + 2.625895346817181539e-05, + 2.617012662768298097e-05, + 2.608126505630500887e-05, + 2.599236890161858065e-05, + 2.590343831124772219e-05, + 2.581447343284383551e-05, + 2.572547441412457414e-05, + 2.563644140283849817e-05, + 2.554737454676858771e-05, + 2.545827399375155862e-05, + 2.536913989166220601e-05, + 2.527997238841663984e-05, + 2.519077163197652351e-05, + 2.510153777033260754e-05, + 2.501227095152831772e-05, + 2.492297132364389191e-05, + 2.483363903479972749e-05, + 2.474427423315632714e-05, + 2.465487706691818167e-05, + 2.456544768431742227e-05, + 2.447598623363742902e-05, + 2.438649286319672366e-05, + 2.429696772135288299e-05, + 2.420741095650184418e-05, + 2.411782271708209259e-05, + 2.402820315155838855e-05, + 2.393855240844525723e-05, + 2.384887063629075279e-05, + 2.375915798368053426e-05, + 2.366941459924139257e-05, + 2.357964063162504176e-05, + 2.348983622953191382e-05, + 2.340000154169471268e-05, + 2.331013671688249018e-05, + 2.322024190390025298e-05, + 2.313031725159252016e-05, + 2.304036290882744976e-05, + 2.295037902452029828e-05, + 2.286036574761746252e-05, + 2.277032322709979318e-05, + 2.268025161198276770e-05, + 2.259015105132003418e-05, + 2.250002169418734491e-05, + 2.240986368970596495e-05, + 2.231967718702682584e-05, + 2.222946233533407636e-05, + 2.213921928384873834e-05, + 2.204894818181278582e-05, + 2.195864917850853530e-05, + 2.186832242326260990e-05, + 2.177796806540960840e-05, + 2.168758625433204454e-05, + 2.159717713944376210e-05, + 2.150674087017404121e-05, + 2.141627759601103756e-05, + 2.132578746644580369e-05, + 2.123527063101594167e-05, + 2.114472723928527095e-05, + 2.105415744085164815e-05, + 2.096356138532675008e-05, + 2.087293922237996020e-05, + 2.078229110168169875e-05, + 2.069161717294768868e-05, + 2.060091758592223182e-05, + 2.051019249036240667e-05, + 2.041944203607754684e-05, + 2.032866637289299492e-05, + 2.023786565065404956e-05, + 2.014704001924545065e-05, + 2.005618962857940230e-05, + 1.996531462857906920e-05, + 1.987441516922266644e-05, + 1.978349140048668112e-05, + 1.969254347239027727e-05, + 1.960157153497860252e-05, + 1.951057573830657584e-05, + 1.941955623247883028e-05, + 1.932851316761340571e-05, + 1.923744669384525217e-05, + 1.914635696134645365e-05, + 1.905524412031352592e-05, + 1.896410832095140429e-05, + 1.887294971351337268e-05, + 1.878176844826425840e-05, + 1.869056467548465373e-05, + 1.859933854549063824e-05, + 1.850809020861742427e-05, + 1.841681981522298904e-05, + 1.832552751569204550e-05, + 1.823421346041984031e-05, + 1.814287779983545740e-05, + 1.805152068439021363e-05, + 1.796014226454090105e-05, + 1.786874269078984147e-05, + 1.777732211364853511e-05, + 1.768588068364118431e-05, + 1.759441855132492068e-05, + 1.750293586727328114e-05, + 1.741143278207983664e-05, + 1.731990944636227486e-05, + 1.722836601074576447e-05, + 1.713680262588718366e-05, + 1.704521944245834551e-05, + 1.695361661115015183e-05, + 1.686199428267223064e-05, + 1.677035260775670378e-05, + 1.667869173714161890e-05, + 1.658701182159527291e-05, + 1.649531301189965078e-05, + 1.640359545885405082e-05, + 1.631185931327515246e-05, + 1.622010472600059750e-05, + 1.612833184787256107e-05, + 1.603654082976192931e-05, + 1.594473182255169079e-05, + 1.585290497714095140e-05, + 1.576106044444840383e-05, + 1.566919837539621361e-05, + 1.557731892093397658e-05, + 1.548542223202219160e-05, + 1.539350845963606538e-05, + 1.530157775476534312e-05, + 1.520963026841810831e-05, + 1.511766615160426043e-05, + 1.502568555535958602e-05, + 1.493368863072942105e-05, + 1.484167552877233384e-05, + 1.474964640055988620e-05, + 1.465760139718057551e-05, + 1.456554066972307535e-05, + 1.447346436930062155e-05, + 1.438137264703447133e-05, + 1.428926565405758284e-05, + 1.419714354151859112e-05, + 1.410500646056511644e-05, + 1.401285456236408128e-05, + 1.392068799810539658e-05, + 1.382850691896500064e-05, + 1.373631147614552006e-05, + 1.364410182085962556e-05, + 1.355187810431345385e-05, + 1.345964047775131064e-05, + 1.336738909239822994e-05, + 1.327512409950462457e-05, + 1.318284565032977578e-05, + 1.309055389612926498e-05, + 1.299824898817509924e-05, + 1.290593107775975673e-05, + 1.281360031615898840e-05, + 1.272125685467243494e-05, + 1.262890084460712654e-05, + 1.253653243726082345e-05, + 1.244415178396260076e-05, + 1.235175903603601087e-05, + 1.225935434480263431e-05, + 1.216693786160254742e-05, + 1.207450973778159820e-05, + 1.198207012467489601e-05, + 1.188961917365167204e-05, + 1.179715703605742703e-05, + 1.170468386325909673e-05, + 1.161219980662817054e-05, + 1.151970501752406426e-05, + 1.142719964733504699e-05, + 1.133468384744087349e-05, + 1.124215776921679398e-05, + 1.114962156405373389e-05, + 1.105707538334574926e-05, + 1.096451937847342154e-05, + 1.087195370084866224e-05, + 1.077937850185712314e-05, + 1.068679393290296710e-05, + 1.059420014538820550e-05, + 1.050159729071651838e-05, + 1.040898552029301388e-05, + 1.031636498552801785e-05, + 1.022373583782053810e-05, + 1.013109822858247936e-05, + 1.003845230922228369e-05, + 9.945798231148296587e-06, + 9.853136145769056666e-06, + 9.760466204496751568e-06, + 9.667788558730710971e-06, + 9.575103359881892621e-06, + 9.482410759355973861e-06, + 9.389710908557403836e-06, + 9.297003958893242247e-06, + 9.204290061756333888e-06, + 9.111569368549909869e-06, + 9.018842030670768935e-06, + 8.926108199513190753e-06, + 8.833368026468734320e-06, + 8.740621662930041143e-06, + 8.647869260274077536e-06, + 8.555110969886740928e-06, + 8.462346943146015766e-06, + 8.369577331425888503e-06, + 8.276802286096086709e-06, + 8.184021958526038106e-06, + 8.091236500067973950e-06, + 7.998446062081574309e-06, + 7.905650795917159532e-06, + 7.812850852919542565e-06, + 7.720046384431976115e-06, + 7.627237541779359381e-06, + 7.534424476292758808e-06, + 7.441607339292625827e-06, + 7.348786282092757574e-06, + 7.255961456000010600e-06, + 7.163133012318104891e-06, + 7.070301102330991533e-06, + 6.977465877327314174e-06, + 6.884627488583647087e-06, + 6.791786087368366117e-06, + 6.698941824945581448e-06, + 6.606094852558392614e-06, + 6.513245321453283045e-06, + 6.420393382863500433e-06, + 6.327539188012869229e-06, + 6.234682888115594978e-06, + 6.141824634380085286e-06, + 6.048964577992246326e-06, + 5.956102870135809093e-06, + 5.863239661996360428e-06, + 5.770375104723712739e-06, + 5.677509349473184146e-06, + 5.584642547388668836e-06, + 5.491774849585931880e-06, + 5.398906407197813684e-06, + 5.306037371316138779e-06, + 5.213167893036908416e-06, + 5.120298123443531006e-06, + 5.027428213594186085e-06, + 4.934558314542231875e-06, + 4.841688577340125358e-06, + 4.748819153001934286e-06, + 4.655950192544439460e-06, + 4.563081846970388884e-06, + 4.470214267251693482e-06, + 4.377347604374624775e-06, + 4.284482009281758393e-06, + 4.191617632917152275e-06, + 4.098754626205457990e-06, + 4.005893140059918417e-06, + 3.913033325361515493e-06, + 3.820175333004120455e-06, + 3.727319313836410674e-06, + 3.634465418707113495e-06, + 3.541613798448212963e-06, + 3.448764603858151890e-06, + 3.355917985742950643e-06, + 3.263074094878772950e-06, + 3.170233082015753638e-06, + 3.077395097898509962e-06, + 2.984560293253424253e-06, + 2.891728818771879440e-06, + 2.798900825155541008e-06, + 2.706076463058157365e-06, + 2.613255883130854927e-06, + 2.520439236001197351e-06, + 2.427626672277071291e-06, + 2.334818342546453895e-06, + 2.242014397381305763e-06, + 2.149214987320774710e-06, + 2.056420262895777931e-06, + 1.963630374612207034e-06, + 1.870845472954830529e-06, + 1.778065708387047345e-06, + 1.685291231354764547e-06, + 1.592522192269635819e-06, + 1.499758741533618438e-06, + 1.407001029522186772e-06, + 1.314249206588234138e-06, + 1.221503423065956234e-06, + 1.128763829254073962e-06, + 1.036030575440401825e-06, + 9.433038118850553994e-07, + 8.505836888243555143e-07, + 7.578703564705822999e-07, + 6.651639650158652895e-07, + 5.724646646154017922e-07, + 4.797726054120301648e-07, + 3.870879375194380197e-07, + 2.944108110260619640e-07, + 2.017413759948433102e-07, + 1.090797824671211454e-07, + 1.642618044585468008e-08, +-7.621928007981670775e-08, +-1.688564491513496743e-07, +-2.614851768369049926e-07, +-3.541053132274569641e-07, +-4.467167084535636857e-07, +-5.393192126608168714e-07, +-6.319126760266081284e-07, +-7.244969487562435643e-07, +-8.170718810831797381e-07, +-9.096373232651396444e-07, +-1.002193125600872530e-06, +-1.094739138405611856e-06, +-1.187275212027840620e-06, +-1.279801196845400406e-06, +-1.372316943261598209e-06, +-1.464822301721982554e-06, +-1.557317122693908621e-06, +-1.649801256662678946e-06, +-1.742274554168921291e-06, +-1.834736865767565785e-06, +-1.927188042044578899e-06, +-2.019627933629584032e-06, +-2.112056391175495868e-06, +-2.204473265354591422e-06, +-2.296878406895931523e-06, +-2.389271666544311063e-06, +-2.481652895076999328e-06, +-2.574021943320501938e-06, +-2.666378662105425845e-06, +-2.758722902324418504e-06, +-2.851054514887126053e-06, +-2.943373350736835391e-06, +-3.035679260863163576e-06, +-3.127972096281606218e-06, +-3.220251708029729217e-06, +-3.312517947204458542e-06, +-3.404770664921106707e-06, +-3.497009712330125386e-06, +-3.589234940633803400e-06, +-3.681446201041177035e-06, +-3.773643344825970058e-06, +-3.865826223281512510e-06, +-3.957994687741540019e-06, +-4.050148589572264304e-06, +-4.142287780193125481e-06, +-4.234412111031798522e-06, +-4.326521433582053224e-06, +-4.418615599358667499e-06, +-4.510694459914209630e-06, +-4.602757866855637582e-06, +-4.694805671803514363e-06, +-4.786837726429162277e-06, +-4.878853882450827558e-06, +-4.970853991613400711e-06, +-5.062837905700899231e-06, +-5.154805476553222768e-06, +-5.246756556021124850e-06, +-5.338690996024057611e-06, +-5.430608648505119807e-06, +-5.522509365447799264e-06, +-5.614392998892617924e-06, +-5.706259400896289612e-06, +-5.798108423568915794e-06, +-5.889939919070108702e-06, +-5.981753739588755723e-06, +-6.073549737359575504e-06, +-6.165327764659384227e-06, +-6.257087673807197256e-06, +-6.348829317160446289e-06, +-6.440552547131625246e-06, +-6.532257216163831348e-06, +-6.623943176747521968e-06, +-6.715610281416585250e-06, +-6.807258382744481018e-06, +-6.898887333360880747e-06, +-6.990496985927328915e-06, +-7.082087193153824517e-06, +-7.173657807795000105e-06, +-7.265208682650337777e-06, +-7.356739670560365153e-06, +-7.448250624423159815e-06, +-7.539741397170108913e-06, +-7.631211841782485603e-06, +-7.722661811287639941e-06, +-7.814091158755020366e-06, +-7.905499737312952576e-06, +-7.996887400124106071e-06, +-8.088254000402333158e-06, +-8.179599391408630310e-06, +-8.270923426451453250e-06, +-8.362225958882876515e-06, +-8.453506842115129225e-06, +-8.544765929596288628e-06, +-8.636003074826942934e-06, +-8.727218131356313596e-06, +-8.818410952782424717e-06, +-8.909581392748315120e-06, +-9.000729304958624946e-06, +-9.091854543155262089e-06, +-9.182956961134024378e-06, +-9.274036412740718462e-06, +-9.365092751867285490e-06, +-9.456125832468479186e-06, +-9.547135508541548915e-06, +-9.638121634122426344e-06, +-9.729084063322817014e-06, +-9.820022650289419089e-06, +-9.910937249220660731e-06, +-1.000182771437901426e-05, +-1.009269390006689808e-05, +-1.018353566064309893e-05, +-1.027435285051905174e-05, +-1.036514532415894802e-05, +-1.045591293607601236e-05, +-1.054665554085296328e-05, +-1.063737299309758134e-05, +-1.072806514749985672e-05, +-1.081873185878750645e-05, +-1.090937298174241022e-05, +-1.099998837121308044e-05, +-1.109057788209466883e-05, +-1.118114136932488712e-05, +-1.127167868792107664e-05, +-1.136218969293964723e-05, +-1.145267423949255547e-05, +-1.154313218276390315e-05, +-1.163356337796535277e-05, +-1.172396768039333624e-05, +-1.181434494538454999e-05, +-1.190469502833239594e-05, +-1.199501778469945489e-05, +-1.208531306999740503e-05, +-1.217558073978320526e-05, +-1.226582064969576493e-05, +-1.235603265541571480e-05, +-1.244621661268181246e-05, +-1.253637237730734761e-05, +-1.262649980513993003e-05, +-1.271659875209811189e-05, +-1.280666907416761170e-05, +-1.289671062738120572e-05, +-1.298672326783528409e-05, +-1.307670685168603238e-05, +-1.316666123514539973e-05, +-1.325658627449777016e-05, +-1.334648182607573572e-05, +-1.343634774627266476e-05, +-1.352618389155880234e-05, +-1.361599011844137330e-05, +-1.370576628350097585e-05, +-1.379551224338792408e-05, +-1.388522785480214453e-05, +-1.397491297450961194e-05, +-1.406456745933864102e-05, +-1.415419116617585280e-05, +-1.424378395198271896e-05, +-1.433334567377149416e-05, +-1.442287618862175355e-05, +-1.451237535367632195e-05, +-1.460184302614170746e-05, +-1.469127906328412558e-05, +-1.478068332244601627e-05, +-1.487005566102200352e-05, +-1.495939593647524303e-05, +-1.504870400633365638e-05, +-1.513797972819007493e-05, +-1.522722295969854684e-05, +-1.531643355859061361e-05, +-1.540561138265132549e-05, +-1.549475628973569598e-05, +-1.558386813776475632e-05, +-1.567294678472193358e-05, +-1.576199208866917479e-05, +-1.585100390772320629e-05, +-1.593998210007170529e-05, +-1.602892652396959325e-05, +-1.611783703773928323e-05, +-1.620671349976675639e-05, +-1.629555576851796059e-05, +-1.638436370251498844e-05, +-1.647313716035219460e-05, +-1.656187600069249259e-05, +-1.665058008226771052e-05, +-1.673924926387458973e-05, +-1.682788340439110540e-05, +-1.691648236275274285e-05, +-1.700504599796858442e-05, +-1.709357416911777222e-05, +-1.718206673534542546e-05, +-1.727052355587916437e-05, +-1.735894449000902870e-05, +-1.744732939708396768e-05, +-1.753567813654789307e-05, +-1.762399056790001098e-05, +-1.771226655071102044e-05, +-1.780050594463519555e-05, +-1.788870860938684474e-05, +-1.797687440475626881e-05, +-1.806500319060630848e-05, +-1.815309482687224612e-05, +-1.824114917355819398e-05, +-1.832916609075727055e-05, +-1.841714543860797495e-05, +-1.850508707735000640e-05, +-1.859299086728099780e-05, +-1.868085666877235523e-05, +-1.876868434228157718e-05, +-1.885647374833256956e-05, +-1.894422474751193561e-05, +-1.903193720050485970e-05, +-1.911961096805557791e-05, +-1.920724591098367162e-05, +-1.929484189019987990e-05, +-1.938239876666307697e-05, +-1.946991640143556321e-05, +-1.955739465563995110e-05, +-1.964483339047531311e-05, +-1.973223246722892831e-05, +-1.981959174725712592e-05, +-1.990691109198116531e-05, +-1.999419036292336365e-05, +-2.008142942166759708e-05, +-2.016862812987537740e-05, +-2.025578634930174239e-05, +-2.034290394175655996e-05, +-2.042998076913925653e-05, +-2.051701669343603194e-05, +-2.060401157669985257e-05, +-2.069096528106662626e-05, +-2.077787766875133308e-05, +-2.086474860204445082e-05, +-2.095157794332797412e-05, +-2.103836555505168057e-05, +-2.112511129974552112e-05, +-2.121181504003543590e-05, +-2.129847663860412978e-05, +-2.138509595822703064e-05, +-2.147167286176791191e-05, +-2.155820721216019343e-05, +-2.164469887242253707e-05, +-2.173114770565506216e-05, +-2.181755357503565920e-05, +-2.190391634383613770e-05, +-2.199023587539856688e-05, +-2.207651203315142007e-05, +-2.216274468060577666e-05, +-2.224893368135557619e-05, +-2.233507889907395915e-05, +-2.242118019752882533e-05, +-2.250723744056017393e-05, +-2.259325049209521809e-05, +-2.267921921614541342e-05, +-2.276514347680611925e-05, +-2.285102313825333243e-05, +-2.293685806475906949e-05, +-2.302264812066851025e-05, +-2.310839317041577301e-05, +-2.319409307852011643e-05, +-2.327974770958227016e-05, +-2.336535692830022022e-05, +-2.345092059944633224e-05, +-2.353643858788266591e-05, +-2.362191075855760709e-05, +-2.370733697650593562e-05, +-2.379271710684541011e-05, +-2.387805101479219741e-05, +-2.396333856563787404e-05, +-2.404857962476522842e-05, +-2.413377405764474399e-05, +-2.421892172983449077e-05, +-2.430402250697657801e-05, +-2.438907625481294625e-05, +-2.447408283916221964e-05, +-2.455904212593562334e-05, +-2.464395398113296523e-05, +-2.472881827083951202e-05, +-2.481363486124089706e-05, +-2.489840361860472278e-05, +-2.498312440927673208e-05, +-2.506779709971527242e-05, +-2.515242155645369435e-05, +-2.523699764611549303e-05, +-2.532152523542591263e-05, +-2.540600419118979128e-05, +-2.549043438030643166e-05, +-2.557481566976620938e-05, +-2.565914792664705958e-05, +-2.574343101812985560e-05, +-2.582766481147945580e-05, +-2.591184917404138995e-05, +-2.599598397327614036e-05, +-2.608006907672117447e-05, +-2.616410435200657768e-05, +-2.624808966686668823e-05, +-2.633202488912101858e-05, +-2.641590988667096896e-05, +-2.649974452753412203e-05, +-2.658352867980642793e-05, +-2.666726221167758302e-05, +-2.675094499144650009e-05, +-2.683457688747973937e-05, +-2.691815776826480384e-05, +-2.700168750236857701e-05, +-2.708516595845298630e-05, +-2.716859300528596695e-05, +-2.725196851172350838e-05, +-2.733529234670538851e-05, +-2.741856437928990551e-05, +-2.750178447861598488e-05, +-2.758495251391856505e-05, +-2.766806835454405734e-05, +-2.775113186990879735e-05, +-2.783414292955225215e-05, +-2.791710140309572915e-05, +-2.800000716026112261e-05, +-2.808286007086799308e-05, +-2.816566000483297107e-05, +-2.824840683216689073e-05, +-2.833110042298960272e-05, +-2.841374064750769389e-05, +-2.849632737602633215e-05, +-2.857886047896393374e-05, +-2.866133982681515462e-05, +-2.874376529018484976e-05, +-2.882613673978426144e-05, +-2.890845404641306221e-05, +-2.899071708097365952e-05, +-2.907292571446875632e-05, +-2.915507981799677029e-05, +-2.923717926276758861e-05, +-2.931922392008007422e-05, +-2.940121366133383277e-05, +-2.948314835804384255e-05, +-2.956502788180379835e-05, +-2.964685210431957597e-05, +-2.972862089740580348e-05, +-2.981033413296752804e-05, +-2.989199168301519478e-05, +-2.997359341966089618e-05, +-3.005513921511930722e-05, +-3.013662894170344336e-05, +-3.021806247183957177e-05, +-3.029943967804620152e-05, +-3.038076043294814769e-05, +-3.046202460927323474e-05, +-3.054323207984887108e-05, +-3.062438271761727877e-05, +-3.070547639561295222e-05, +-3.078651298697824705e-05, +-3.086749236495948029e-05, +-3.094841440290727600e-05, +-3.102927897427298063e-05, +-3.111008595262375375e-05, +-3.119083521162058583e-05, +-3.127152662503296891e-05, +-3.135216006673605051e-05, +-3.143273541070649334e-05, +-3.151325253103768806e-05, +-3.159371130191795398e-05, +-3.167411159764512839e-05, +-3.175445329262354435e-05, +-3.183473626136361731e-05, +-3.191496037847917528e-05, +-3.199512551870141794e-05, +-3.207523155686156261e-05, +-3.215527836788702925e-05, +-3.223526582683427139e-05, +-3.231519380885316693e-05, +-3.239506218920109242e-05, +-3.247487084325444948e-05, +-3.255461964648678422e-05, +-3.263430847448388480e-05, +-3.271393720293988506e-05, +-3.279350570765426941e-05, +-3.287301386454605554e-05, +-3.295246154963647430e-05, +-3.303184863904503270e-05, +-3.311117500902234490e-05, +-3.319044053591469910e-05, +-3.326964509617805058e-05, +-3.334878856638923638e-05, +-3.342787082322450808e-05, +-3.350689174347448707e-05, +-3.358585120404036979e-05, +-3.366474908193392774e-05, +-3.374358525427472924e-05, +-3.382235959830797454e-05, +-3.390107199136500372e-05, +-3.397972231091380026e-05, +-3.405831043452015619e-05, +-3.413683623986159737e-05, +-3.421529960474220316e-05, +-3.429370040705720721e-05, +-3.437203852482470360e-05, +-3.445031383618315997e-05, +-3.452852621937299284e-05, +-3.460667555274787041e-05, +-3.468476171478892921e-05, +-3.476278458406602734e-05, +-3.484074403928754331e-05, +-3.491863995926158191e-05, +-3.499647222291380930e-05, +-3.507424070928432243e-05, +-3.515194529752737793e-05, +-3.522958586690857325e-05, +-3.530716229681890057e-05, +-3.538467446675359814e-05, +-3.546212225632328362e-05, +-3.553950554526804197e-05, +-3.561682421342229730e-05, +-3.569407814074690525e-05, +-3.577126720732545990e-05, +-3.584839129334740736e-05, +-3.592545027912190321e-05, +-3.600244404507453279e-05, +-3.607937247174406538e-05, +-3.615623543979681306e-05, +-3.623303283000536688e-05, +-3.630976452325975049e-05, +-3.638643040058125734e-05, +-3.646303034308790526e-05, +-3.653956423202596644e-05, +-3.661603194876640306e-05, +-3.669243337478828585e-05, +-3.676876839169210937e-05, +-3.684503688119706801e-05, +-3.692123872514106953e-05, +-3.699737380547740110e-05, +-3.707344200428867490e-05, +-3.714944320376641123e-05, +-3.722537728622495691e-05, +-3.730124413409863931e-05, +-3.737704362993757182e-05, +-3.745277565642249383e-05, +-3.752844009634376439e-05, +-3.760403683261563971e-05, +-3.767956574827277668e-05, +-3.775502672647065296e-05, +-3.783041965048200946e-05, +-3.790574440371110757e-05, +-3.798100086967290574e-05, +-3.805618893200721507e-05, +-3.813130847447567033e-05, +-3.820635938095792846e-05, +-3.828134153546603429e-05, +-3.835625482212384773e-05, +-3.843109912518079290e-05, +-3.850587432900910690e-05, +-3.858058031810314865e-05, +-3.865521697707713562e-05, +-3.872978419067824913e-05, +-3.880428184377023579e-05, +-3.887870982132980252e-05, +-3.895306800847752986e-05, +-3.902735629044438368e-05, +-3.910157455258498314e-05, +-3.917572268038823258e-05, +-3.924980055945712830e-05, +-3.932380807552237207e-05, +-3.939774511443920661e-05, +-3.947161156218456277e-05, +-3.954540730487010386e-05, +-3.961913222872587450e-05, +-3.969278622009727166e-05, +-3.976636916547508381e-05, +-3.983988095146258541e-05, +-3.991332146478860829e-05, +-3.998669059231793648e-05, +-4.005998822103177696e-05, +-4.013321423804071594e-05, +-4.020636853058197444e-05, +-4.027945098601940150e-05, +-4.035246149184027581e-05, +-4.042539993567221250e-05, +-4.049826620524679487e-05, +-4.057106018844622227e-05, +-4.064378177326681308e-05, +-4.071643084783271990e-05, +-4.078900730040913649e-05, +-4.086151101936945319e-05, +-4.093394189322489634e-05, +-4.100629981062228529e-05, +-4.107858466032657003e-05, +-4.115079633123159181e-05, +-4.122293471237316141e-05, +-4.129499969289318558e-05, +-4.136699116208579301e-05, +-4.143890900936148122e-05, +-4.151075312426001168e-05, +-4.158252339646414540e-05, +-4.165421971576701513e-05, +-4.172584197210140567e-05, +-4.179739005553709073e-05, +-4.186886385626398721e-05, +-4.194026326460328853e-05, +-4.201158817101937736e-05, +-4.208283846608813300e-05, +-4.215401404052649623e-05, +-4.222511478518878303e-05, +-4.229614059105120079e-05, +-4.236709134922468937e-05, +-4.243796695095188531e-05, +-4.250876728760420123e-05, +-4.257949225069458562e-05, +-4.265014173185866441e-05, +-4.272071562286460048e-05, +-4.279121381562571783e-05, +-4.286163620216882253e-05, +-4.293198267466330682e-05, +-4.300225312541809295e-05, +-4.307244744686550573e-05, +-4.314256553157444556e-05, +-4.321260727224767112e-05, +-4.328257256171807251e-05, +-4.335246129296203393e-05, +-4.342227335908075840e-05, +-4.349200865331216004e-05, +-4.356166706902912935e-05, +-4.363124849973851004e-05, +-4.370075283907920839e-05, +-4.377017998083408565e-05, +-4.383952981891169596e-05, +-4.390880224735857175e-05, +-4.397799716035698080e-05, +-4.404711445222441119e-05, +-4.411615401741099640e-05, +-4.418511575051185483e-05, +-4.425399954624872613e-05, +-4.432280529948299521e-05, +-4.439153290521153836e-05, +-4.446018225856517150e-05, +-4.452875325482045442e-05, +-4.459724578938130000e-05, +-4.466565975779160521e-05, +-4.473399505573249309e-05, +-4.480225157902232636e-05, +-4.487042922361332608e-05, +-4.493852788560509699e-05, +-4.500654746122534914e-05, +-4.507448784684262364e-05, +-4.514234893896379225e-05, +-4.521013063423350172e-05, +-4.527783282943200540e-05, +-4.534545542148717075e-05, +-4.541299830745605470e-05, +-4.548046138453781920e-05, +-4.554784455007026856e-05, +-4.561514770152757262e-05, +-4.568237073653230815e-05, +-4.574951355283978540e-05, +-4.581657604833665892e-05, +-4.588355812106659605e-05, +-4.595045966920171501e-05, +-4.601728059105371826e-05, +-4.608402078508678774e-05, +-4.615068014988405593e-05, +-4.621725858419068931e-05, +-4.628375598687991220e-05, +-4.635017225696607139e-05, +-4.641650729361331652e-05, +-4.648276099612090915e-05, +-4.654893326392034962e-05, +-4.661502399660240759e-05, +-4.668103309388756393e-05, +-4.674696045563797087e-05, +-4.681280598186955439e-05, +-4.687856957272221219e-05, +-4.694425112848699333e-05, +-4.700985054960323862e-05, +-4.707536773664382869e-05, +-4.714080259032394569e-05, +-4.720615501151400245e-05, +-4.727142490120573399e-05, +-4.733661216055521330e-05, +-4.740171669084972892e-05, +-4.746673839351958244e-05, +-4.753167717015103116e-05, +-4.759653292245566615e-05, +-4.766130555229772736e-05, +-4.772599496169177259e-05, +-4.779060105278698371e-05, +-4.785512372787708701e-05, +-4.791956288941190683e-05, +-4.798391843996505627e-05, +-4.804819028227550961e-05, +-4.811237831921513720e-05, +-4.817648245380395884e-05, +-4.824050258920677597e-05, +-4.830443862873380189e-05, +-4.836829047583749721e-05, +-4.843205803412494332e-05, +-4.849574120733981755e-05, +-4.855933989937169694e-05, +-4.862285401426789640e-05, +-4.868628345620410039e-05, +-4.874962812951124432e-05, +-4.881288793867228910e-05, +-4.887606278830795706e-05, +-4.893915258318862432e-05, +-4.900215722823152896e-05, +-4.906507662849770137e-05, +-4.912791068920438514e-05, +-4.919065931570694444e-05, +-4.925332241351116296e-05, +-4.931589988827051981e-05, +-4.937839164578590494e-05, +-4.944079759200309160e-05, +-4.950311763302472353e-05, +-4.956535167509245276e-05, +-4.962749962459938756e-05, +-4.968956138808701607e-05, +-4.975153687224490132e-05, +-4.981342598390877036e-05, +-4.987522863007141048e-05, +-4.993694471786631808e-05, +-4.999857415457841192e-05, +-5.006011684764214261e-05, +-5.012157270463853809e-05, +-5.018294163330603213e-05, +-5.024422354152476374e-05, +-5.030541833732708713e-05, +-5.036652592889522033e-05, +-5.042754622456159763e-05, +-5.048847913280598957e-05, +-5.054932456226645347e-05, +-5.061008242172345659e-05, +-5.067075262011065716e-05, +-5.073133506651243788e-05, +-5.079182967016405493e-05, +-5.085223634044855481e-05, +-5.091255498690901903e-05, +-5.097278551923102715e-05, +-5.103292784725408835e-05, +-5.109298188096983212e-05, +-5.115294753051814584e-05, +-5.121282470619917552e-05, +-5.127261331845951579e-05, +-5.133231327788917409e-05, +-5.139192449524739508e-05, +-5.145144688143424771e-05, +-5.151088034750233463e-05, +-5.157022480466768840e-05, +-5.162948016427996274e-05, +-5.168864633786075227e-05, +-5.174772323707359402e-05, +-5.180671077373518889e-05, +-5.186560885982346541e-05, +-5.192441740746427798e-05, +-5.198313632892898089e-05, +-5.204176553665846379e-05, +-5.210030494323656162e-05, +-5.215875446140129639e-05, +-5.221711400405485191e-05, +-5.227538348423795266e-05, +-5.233356281515327585e-05, +-5.239165191016336429e-05, +-5.244965068277676894e-05, +-5.250755904665748824e-05, +-5.256537691563411608e-05, +-5.262310420367186261e-05, +-5.268074082490941708e-05, +-5.273828669363010810e-05, +-5.279574172427240007e-05, +-5.285310583144062674e-05, +-5.291037892987878068e-05, +-5.296756093449459608e-05, +-5.302465176035640459e-05, +-5.308165132268108030e-05, +-5.313855953684085674e-05, +-5.319537631837512428e-05, +-5.325210158296078401e-05, +-5.330873524644960529e-05, +-5.336527722483918267e-05, +-5.342172743428652229e-05, +-5.347808579110528395e-05, +-5.353435221176610639e-05, +-5.359052661289384254e-05, +-5.364660891127821861e-05, +-5.370259902385858747e-05, +-5.375849686773389658e-05, +-5.381430236016089899e-05, +-5.387001541855344867e-05, +-5.392563596048103003e-05, +-5.398116390367874612e-05, +-5.403659916603120473e-05, +-5.409194166558437678e-05, +-5.414719132054206593e-05, +-5.420234804926371308e-05, +-5.425741177027520448e-05, +-5.431238240225273067e-05, +-5.436725986403444846e-05, +-5.442204407461682171e-05, +-5.447673495315503474e-05, +-5.453133241896106101e-05, +-5.458583639151356331e-05, +-5.464024679044272170e-05, +-5.469456353554052661e-05, +-5.474878654675886119e-05, +-5.480291574420881692e-05, +-5.485695104815866069e-05, +-5.491089237904433129e-05, +-5.496473965745367097e-05, +-5.501849280413761989e-05, +-5.507215174000686185e-05, +-5.512571638613023185e-05, +-5.517918666374416902e-05, +-5.523256249423833057e-05, +-5.528584379916517342e-05, +-5.533903050023817889e-05, +-5.539212251933160866e-05, +-5.544511977847833644e-05, +-5.549802219987929404e-05, +-5.555082970588977656e-05, +-5.560354221902850903e-05, +-5.565615966197540345e-05, +-5.570868195757008835e-05, +-5.576110902882056887e-05, +-5.581344079888938962e-05, +-5.586567719110373129e-05, +-5.591781812895237492e-05, +-5.596986353608619655e-05, +-5.602181333631612757e-05, +-5.607366745362237718e-05, +-5.612542581214293314e-05, +-5.617708833617058694e-05, +-5.622865495017574270e-05, +-5.628012557878187358e-05, +-5.633150014677502882e-05, +-5.638277857911376783e-05, +-5.643396080090338997e-05, +-5.648504673742865039e-05, +-5.653603631412788827e-05, +-5.658692945660358421e-05, +-5.663772609062792357e-05, +-5.668842614213270658e-05, +-5.673902953720575017e-05, +-5.678953620211318865e-05, +-5.683994606327551961e-05, +-5.689025904727719913e-05, +-5.694047508087608783e-05, +-5.699059409097840590e-05, +-5.704061600467032396e-05, +-5.709054074919365661e-05, +-5.714036825195690101e-05, +-5.719009844053085938e-05, +-5.723973124266045680e-05, +-5.728926658623878135e-05, +-5.733870439934080283e-05, +-5.738804461019664032e-05, +-5.743728714720211970e-05, +-5.748643193892716936e-05, +-5.753547891409335015e-05, +-5.758442800159446875e-05, +-5.763327913049482945e-05, +-5.768203223001711809e-05, +-5.773068722954980862e-05, +-5.777924405865681243e-05, +-5.782770264705170148e-05, +-5.787606292462996329e-05, +-5.792432482144432181e-05, +-5.797248826771583694e-05, +-5.802055319383212910e-05, +-5.806851953034723024e-05, +-5.811638720797943569e-05, +-5.816415615762041824e-05, +-5.821182631032200772e-05, +-5.825939759730487807e-05, +-5.830686994995706342e-05, +-5.835424329983281963e-05, +-5.840151757865214997e-05, +-5.844869271830857750e-05, +-5.849576865085655476e-05, +-5.854274530851984599e-05, +-5.858962262368986023e-05, +-5.863640052892334054e-05, +-5.868307895695170853e-05, +-5.872965784066730850e-05, +-5.877613711313221659e-05, +-5.882251670757720406e-05, +-5.886879655740094439e-05, +-5.891497659616753323e-05, +-5.896105675761670019e-05, +-5.900703697564953129e-05, +-5.905291718433773205e-05, +-5.909869731792188608e-05, +-5.914437731081073672e-05, +-5.918995709758021129e-05, +-5.923543661298094273e-05, +-5.928081579192627564e-05, +-5.932609456950102116e-05, +-5.937127288095853648e-05, +-5.941635066171939661e-05, +-5.946132784738010870e-05, +-5.950620437369998642e-05, +-5.955098017660993197e-05, +-5.959565519221047099e-05, +-5.964022935677148828e-05, +-5.968470260673103516e-05, +-5.972907487870277661e-05, +-5.977334610946401759e-05, +-5.981751623596453930e-05, +-5.986158519532375314e-05, +-5.990555292482963007e-05, +-5.994941936194614097e-05, +-5.999318444430390532e-05, +-6.003684810969731137e-05, +-6.008041029610376748e-05, +-6.012387094166327843e-05, +-6.016722998468656343e-05, +-6.021048736366094465e-05, +-6.025364301723853624e-05, +-6.029669688424458586e-05, +-6.033964890367529953e-05, +-6.038249901469780776e-05, +-6.042524715664868829e-05, +-6.046789326904390010e-05, +-6.051043729155642178e-05, +-6.055287916404481342e-05, +-6.059521882653118026e-05, +-6.063745621920905342e-05, +-6.067959128245015946e-05, +-6.072162395679338856e-05, +-6.076355418294365616e-05, +-6.080538190179018526e-05, +-6.084710705438582532e-05, +-6.088872958195560387e-05, +-6.093024942590485806e-05, +-6.097166652779695425e-05, +-6.101298082938166027e-05, +-6.105419227257324454e-05, +-6.109530079946046425e-05, +-6.113630635230274358e-05, +-6.117720887353978918e-05, +-6.121800830577050925e-05, +-6.125870459178010504e-05, +-6.129929767451929479e-05, +-6.133978749711133398e-05, +-6.138017400286039076e-05, +-6.142045713523198969e-05, +-6.146063683787136183e-05, +-6.150071305459988043e-05, +-6.154068572940701073e-05, +-6.158055480645560902e-05, +-6.162032023008960689e-05, +-6.165998194481328945e-05, +-6.169953989531772271e-05, +-6.173899402646034352e-05, +-6.177834428327197978e-05, +-6.181759061096541558e-05, +-6.185673295491559104e-05, +-6.189577126067753222e-05, +-6.193470547398350517e-05, +-6.197353554073525026e-05, +-6.201226140700970139e-05, +-6.205088301905867427e-05, +-6.208940032330803973e-05, +-6.212781326635651751e-05, +-6.216612179498257453e-05, +-6.220432585613408429e-05, +-6.224242539693537420e-05, +-6.228042036468535534e-05, +-6.231831070685608584e-05, +-6.235609637109975050e-05, +-6.239377730523810333e-05, +-6.243135345726994855e-05, +-6.246882477536889089e-05, +-6.250619120788386410e-05, +-6.254345270333719299e-05, +-6.258060921043184397e-05, +-6.261766067804077284e-05, +-6.265460705521406690e-05, +-6.269144829117746776e-05, +-6.272818433533069082e-05, +-6.276481513725356458e-05, +-6.280134064669764160e-05, +-6.283776081359060308e-05, +-6.287407558803695005e-05, +-6.291028492031668876e-05, +-6.294638876088383991e-05, +-6.298238706037436688e-05, +-6.301827976959423596e-05, +-6.305406683952788664e-05, +-6.308974822133577866e-05, +-6.312532386635481211e-05, +-6.316079372609618612e-05, +-6.319615775225296119e-05, +-6.323141589668946109e-05, +-6.326656811144803561e-05, +-6.330161434874798988e-05, +-6.333655456098328043e-05, +-6.337138870072994202e-05, +-6.340611672073710227e-05, +-6.344073857392593812e-05, +-6.347525421340454300e-05, +-6.350966359245108098e-05, +-6.354396666452106449e-05, +-6.357816338325182669e-05, +-6.361225370245299400e-05, +-6.364623757611288291e-05, +-6.368011495839759198e-05, +-6.371388580364986340e-05, +-6.374755006638839179e-05, +-6.378110770131610488e-05, +-6.381455866330175907e-05, +-6.384790290740324987e-05, +-6.388114038884949210e-05, +-6.391427106304673541e-05, +-6.394729488558452738e-05, +-6.398021181222634873e-05, +-6.401302179890905764e-05, +-6.404572480175653719e-05, +-6.407832077706501794e-05, +-6.411080968130817366e-05, +-6.414319147114399254e-05, +-6.417546610339790419e-05, +-6.420763353508454510e-05, +-6.423969372338999119e-05, +-6.427164662567900848e-05, +-6.430349219949925432e-05, +-6.433523040257363380e-05, +-6.436686119279918844e-05, +-6.439838452826017435e-05, +-6.442980036721350685e-05, +-6.446110866809480488e-05, +-6.449230938952416438e-05, +-6.452340249029122341e-05, +-6.455438792936970399e-05, +-6.458526566591386137e-05, +-6.461603565925341536e-05, +-6.464669786889787361e-05, +-6.467725225453586750e-05, +-6.470769877603349876e-05, +-6.473803739344043812e-05, +-6.476826806698096704e-05, +-6.479839075705863983e-05, +-6.482840542426193502e-05, +-6.485831202934965931e-05, +-6.488811053326468982e-05, +-6.491780089713184636e-05, +-6.494738308225126420e-05, +-6.497685705010330015e-05, +-6.500622276234864093e-05, +-6.503548018082574175e-05, +-6.506462926755677591e-05, +-6.509366998473925926e-05, +-6.512260229475201341e-05, +-6.515142616015334959e-05, +-6.518014154368161083e-05, +-6.520874840825305774e-05, +-6.523724671696875318e-05, +-6.526563643310457404e-05, +-6.529391752011855677e-05, +-6.532208994164807837e-05, +-6.535015366151077803e-05, +-6.537810864370316119e-05, +-6.540595485240558685e-05, +-6.543369225197484085e-05, +-6.546132080694906890e-05, +-6.548884048204657051e-05, +-6.551625124216451138e-05, +-6.554355305238473756e-05, +-6.557074587796546763e-05, +-6.559782968434599553e-05, +-6.562480443714670405e-05, +-6.565167010216830590e-05, +-6.567842664539061046e-05, +-6.570507403297797184e-05, +-6.573161223127118452e-05, +-6.575804120679350066e-05, +-6.578436092624833970e-05, +-6.581057135652008797e-05, +-6.583667246467254019e-05, +-6.586266421795429330e-05, +-6.588854658379035751e-05, +-6.591431952978870214e-05, +-6.593998302373751800e-05, +-6.596553703360506836e-05, +-6.599098152754391728e-05, +-6.601631647388595588e-05, +-6.604154184113940720e-05, +-6.606665759800160623e-05, +-6.609166371334588110e-05, +-6.611656015622666236e-05, +-6.614134689588356227e-05, +-6.616602390173306715e-05, +-6.619059114337486635e-05, +-6.621504859058957549e-05, +-6.623939621333907522e-05, +-6.626363398176554902e-05, +-6.628776186619706682e-05, +-6.631177983713533355e-05, +-6.633568786527098990e-05, +-6.635948592147224178e-05, +-6.638317397678839753e-05, +-6.640675200245360838e-05, +-6.643021996988179986e-05, +-6.645357785066463888e-05, +-6.647682561658226736e-05, +-6.649996323959231109e-05, +-6.652299069183340344e-05, +-6.654590794563147369e-05, +-6.656871497348523228e-05, +-6.659141174808389755e-05, +-6.661399824229311461e-05, +-6.663647442916112180e-05, +-6.665884028192095969e-05, +-6.668109577398567353e-05, +-6.670324087894633457e-05, +-6.672527557058327509e-05, +-6.674719982285383694e-05, +-6.676901360989739951e-05, +-6.679071690604043482e-05, +-6.681230968578387658e-05, +-6.683379192381458563e-05, +-6.685516359500360162e-05, +-6.687642467440097957e-05, +-6.689757513723981492e-05, +-6.691861495893529485e-05, +-6.693954411508400712e-05, +-6.696036258146755861e-05, +-6.698107033404691033e-05, +-6.700166734896541320e-05, +-6.702215360255242658e-05, +-6.704252907131379082e-05, +-6.706279373194048738e-05, +-6.708294756130834060e-05, +-6.710299053647193269e-05, +-6.712292263466956388e-05, +-6.714274383332185657e-05, +-6.716245411003095571e-05, +-6.718205344258432350e-05, +-6.720154180894919642e-05, +-6.722091918727604110e-05, +-6.724018555589776831e-05, +-6.725934089333001752e-05, +-6.727838517826989658e-05, +-6.729731838959996607e-05, +-6.731614050638289970e-05, +-6.733485150786412698e-05, +-6.735345137347237537e-05, +-6.737194008281877577e-05, +-6.739031761569644243e-05, +-6.740858395208335963e-05, +-6.742673907213797709e-05, +-6.744478295620192048e-05, +-6.746271558480014053e-05, +-6.748053693863882588e-05, +-6.749824699861036337e-05, +-6.751584574578610096e-05, +-6.753333316142198556e-05, +-6.755070922695650308e-05, +-6.756797392401086818e-05, +-6.758512723438840077e-05, +-6.760216914007760255e-05, +-6.761909962324746774e-05, +-6.763591866625065442e-05, +-6.765262625162284755e-05, +-6.766922236208218976e-05, +-6.768570698052920004e-05, +-6.770208009004989081e-05, +-6.771834167391064510e-05, +-6.773449171556153686e-05, +-6.775053019863545010e-05, +-6.776645710694775360e-05, +-6.778227242449879459e-05, +-6.779797613547078165e-05, +-6.781356822422602291e-05, +-6.782904867531509819e-05, +-6.784441747346768397e-05, +-6.785967460359735096e-05, +-6.787482005080253990e-05, +-6.788985380036225185e-05, +-6.790477583773981579e-05, +-6.791958614858109968e-05, +-6.793428471871437496e-05, +-6.794887153415379952e-05, +-6.796334658109415934e-05, +-6.797770984591155964e-05, +-6.799196131516979462e-05, +-6.800610097561262247e-05, +-6.802012881416674695e-05, +-6.803404481794409419e-05, +-6.804784897423891250e-05, +-6.806154127052553614e-05, +-6.807512169446616453e-05, +-6.808859023390338120e-05, +-6.810194687686213250e-05, +-6.811519161155443031e-05, +-6.812832442636948581e-05, +-6.814134530988505292e-05, +-6.815425425085924261e-05, +-6.816705123823292166e-05, +-6.817973626113265359e-05, +-6.819230930886633474e-05, +-6.820477037092315359e-05, +-6.821711943697930994e-05, +-6.822935649689175366e-05, +-6.824148154070050216e-05, +-6.825349455863135087e-05, +-6.826539554108790439e-05, +-6.827718447866275731e-05, +-6.828886136212789903e-05, +-6.830042618243997211e-05, +-6.831187893073809036e-05, +-6.832321959834497722e-05, +-6.833444817676544787e-05, +-6.834556465768953991e-05, +-6.835656903298844753e-05, +-6.836746129471664934e-05, +-6.837824143511400893e-05, +-6.838890944659978472e-05, +-6.839946532177848461e-05, +-6.840990905343882246e-05, +-6.842024063455043835e-05, +-6.843046005826705636e-05, +-6.844056731792518347e-05, +-6.845056240704429937e-05, +-6.846044531932817098e-05, +-6.847021604866231818e-05, +-6.847987458911490826e-05, +-6.848942093493990010e-05, +-6.849885508057066091e-05, +-6.850817702062538732e-05, +-6.851738674990577713e-05, +-6.852648426339618911e-05, +-6.853546955626353460e-05, +-6.854434262385803638e-05, +-6.855310346171276795e-05, +-6.856175206554365352e-05, +-6.857028843125087742e-05, +-6.857871255491610591e-05, +-6.858702443280415408e-05, +-6.859522406136367705e-05, +-6.860331143722477119e-05, +-6.861128655720252485e-05, +-6.861914941829348118e-05, +-6.862690001767706111e-05, +-6.863453835271649851e-05, +-6.864206442095698349e-05, +-6.864947822012655685e-05, +-6.865677974813741110e-05, +-6.866396900308353239e-05, +-6.867104598324181176e-05, +-6.867801068707182831e-05, +-6.868486311321616092e-05, +-6.869160326050098456e-05, +-6.869823112793409161e-05, +-6.870474671470615225e-05, +-6.871115002019137854e-05, +-6.871744104394610141e-05, +-6.872361978570905522e-05, +-6.872968624540281440e-05, +-6.873564042313216708e-05, +-6.874148231918309870e-05, +-6.874721193402666799e-05, +-6.875282926831492768e-05, +-6.875833432288326911e-05, +-6.876372709874943286e-05, +-6.876900759711398309e-05, +-6.877417581935956219e-05, +-6.877923176705177163e-05, +-6.878417544193810137e-05, +-6.878900684594998983e-05, +-6.879372598120035731e-05, +-6.879833284998371440e-05, +-6.880282745477906228e-05, +-6.880720979824619281e-05, +-6.881147988322810095e-05, +-6.881563771274996823e-05, +-6.881968329001929838e-05, +-6.882361661842609343e-05, +-6.882743770154259625e-05, +-6.883114654312327699e-05, +-6.883474314710449427e-05, +-6.883822751760633831e-05, +-6.884159965892905310e-05, +-6.884485957555666841e-05, +-6.884800727215504830e-05, +-6.885104275357168779e-05, +-6.885396602483747470e-05, +-6.885677709116338281e-05, +-6.885947595794417175e-05, +-6.886206263075632698e-05, +-6.886453711535787004e-05, +-6.886689941768915819e-05, +-6.886914954387322321e-05, +-6.887128750021363007e-05, +-6.887331329319695708e-05, +-6.887522692949125090e-05, +-6.887702841594677190e-05, +-6.887871775959542497e-05, +-6.888029496765075955e-05, +-6.888176004750828127e-05, +-6.888311300674575016e-05, +-6.888435385312190672e-05, +-6.888548259457763739e-05, +-6.888649923923578485e-05, +-6.888740379539986050e-05, +-6.888819627155565726e-05, +-6.888887667637108689e-05, +-6.888944501869500095e-05, +-6.888990130755747539e-05, +-6.889024555217089475e-05, +-6.889047776192839363e-05, +-6.889059794640529325e-05, +-6.889060611535769200e-05, +-6.889050227872312948e-05, +-6.889028644662119642e-05, +-6.888995862935184055e-05, +-6.888951883739659993e-05, +-6.888896708141879267e-05, +-6.888830337226236494e-05, +-6.888752772095277192e-05, +-6.888664013869615110e-05, +-6.888564063688025734e-05, +-6.888452922707402929e-05, +-6.888330592102688457e-05, +-6.888197073066962782e-05, +-6.888052366811373245e-05, +-6.887896474565219438e-05, +-6.887729397575829884e-05, +-6.887551137108656896e-05, +-6.887361694447241350e-05, +-6.887161070893135426e-05, +-6.886949267766078798e-05, +-6.886726286403772304e-05, +-6.886492128162075813e-05, +-6.886246794414840173e-05, +-6.885990286554034606e-05, +-6.885722605989616604e-05, +-6.885443754149698625e-05, +-6.885153732480343446e-05, +-6.884852542445695628e-05, +-6.884540185527973383e-05, +-6.884216663227352021e-05, +-6.883881977062142842e-05, +-6.883536128568589851e-05, +-6.883179119301024258e-05, +-6.882810950831777736e-05, +-6.882431624751178360e-05, +-6.882041142667604818e-05, +-6.881639506207411867e-05, +-6.881226717014979127e-05, +-6.880802776752662289e-05, +-6.880367687100851393e-05, +-6.879921449757874603e-05, +-6.879464066440090365e-05, +-6.878995538881816935e-05, +-6.878515868835355417e-05, +-6.878025058070985696e-05, +-6.877523108376940692e-05, +-6.877010021559434817e-05, +-6.876485799442647712e-05, +-6.875950443868675461e-05, +-6.875403956697609192e-05, +-6.874846339807465961e-05, +-6.874277595094194172e-05, +-6.873697724471687133e-05, +-6.873106729871787115e-05, +-6.872504613244240636e-05, +-6.871891376556755375e-05, +-6.871267021794844325e-05, +-6.870631550962117166e-05, +-6.869984966079925191e-05, +-6.869327269187599833e-05, +-6.868658462342364568e-05, +-6.867978547619286132e-05, +-6.867287527111426307e-05, +-6.866585402929654893e-05, +-6.865872177202687659e-05, +-6.865147852077174435e-05, +-6.864412429717667936e-05, +-6.863665912306406928e-05, +-6.862908302043736351e-05, +-6.862139601147650603e-05, +-6.861359811854128284e-05, +-6.860568936416903160e-05, +-6.859766977107523795e-05, +-6.858953936215487720e-05, +-6.858129816048073380e-05, +-6.857294618930265598e-05, +-6.856448347205019848e-05, +-6.855591003233054901e-05, +-6.854722589392799970e-05, +-6.853843108080644078e-05, +-6.852952561710674493e-05, +-6.852050952714751266e-05, +-6.851138283542545181e-05, +-6.850214556661514713e-05, +-6.849279774556904672e-05, +-6.848333939731697420e-05, +-6.847377054706599308e-05, +-6.846409122020158595e-05, +-6.845430144228617714e-05, +-6.844440123905891598e-05, +-6.843439063643811618e-05, +-6.842426966051840984e-05, +-6.841403833757122178e-05, +-6.840369669404562333e-05, +-6.839324475656795288e-05, +-6.838268255194168037e-05, +-6.837201010714723107e-05, +-6.836122744934145705e-05, +-6.835033460585877559e-05, +-6.833933160421038313e-05, +-6.832821847208368608e-05, +-6.831699523734372382e-05, +-6.830566192803179989e-05, +-6.829421857236510254e-05, +-6.828266519873815482e-05, +-6.827100183572196081e-05, +-6.825922851206369388e-05, +-6.824734525668704906e-05, +-6.823535209869205332e-05, +-6.822324906735423885e-05, +-6.821103619212621517e-05, +-6.819871350263611057e-05, +-6.818628102868849370e-05, +-6.817373880026442775e-05, +-6.816108684751865157e-05, +-6.814832520078426882e-05, +-6.813545389056911586e-05, +-6.812247294755643945e-05, +-6.810938240260573694e-05, +-6.809618228675221421e-05, +-6.808287263120541683e-05, +-6.806945346735138495e-05, +-6.805592482675151486e-05, +-6.804228674114216598e-05, +-6.802853924243493190e-05, +-6.801468236271719604e-05, +-6.800071613425016654e-05, +-6.798664058947122084e-05, +-6.797245576099256398e-05, +-6.795816168160106596e-05, +-6.794375838425889872e-05, +-6.792924590210159814e-05, +-6.791462426844054414e-05, +-6.789989351676306909e-05, +-6.788505368072782285e-05, +-6.787010479417042419e-05, +-6.785504689110084516e-05, +-6.783988000570098512e-05, +-6.782460417233106764e-05, +-6.780921942552149532e-05, +-6.779372579997919247e-05, +-6.777812333058498941e-05, +-6.776241205239194197e-05, +-6.774659200062858411e-05, +-6.773066321069873817e-05, +-6.771462571817627005e-05, +-6.769847955881149956e-05, +-6.768222476852815109e-05, +-6.766586138342133429e-05, +-6.764938943976240941e-05, +-6.763280897399597869e-05, +-6.761612002273695895e-05, +-6.759932262277658539e-05, +-6.758241681107872531e-05, +-6.756540262477777746e-05, +-6.754828010118584132e-05, +-6.753104927778356915e-05, +-6.751371019222668476e-05, +-6.749626288234418102e-05, +-6.747870738613474199e-05, +-6.746104374177388510e-05, +-6.744327198760736108e-05, +-6.742539216215288867e-05, +-6.740740430410148280e-05, +-6.738930845231722413e-05, +-6.737110464583369481e-05, +-6.735279292386114772e-05, +-6.733437332577752116e-05, +-6.731584589113505249e-05, +-6.729721065965740497e-05, +-6.727846767124027766e-05, +-6.725961696595083618e-05, +-6.724065858402904087e-05, +-6.722159256588387919e-05, +-6.720241895209821752e-05, +-6.718313778342665989e-05, +-6.716374910079190230e-05, +-6.714425294529222728e-05, +-6.712464935819516135e-05, +-6.710493838093778668e-05, +-6.708512005513084752e-05, +-6.706519442255450827e-05, +-6.704516152516052188e-05, +-6.702502140507161997e-05, +-6.700477410457947997e-05, +-6.698441966614837075e-05, +-6.696395813241229301e-05, +-6.694338954617596866e-05, +-6.692271395041405474e-05, +-6.690193138827302721e-05, +-6.688104190306669512e-05, +-6.686004553828093036e-05, +-6.683894233757163485e-05, +-6.681773234476407646e-05, +-6.679641560385385119e-05, +-6.677499215900688321e-05, +-6.675346205455633488e-05, +-6.673182533500717395e-05, +-6.671008204503334107e-05, +-6.668823222947867137e-05, +-6.666627593335601356e-05, +-6.664421320184564426e-05, +-6.662204408029990296e-05, +-6.659976861423858420e-05, +-6.657738684935067227e-05, +-6.655489883149442250e-05, +-6.653230460669726644e-05, +-6.650960422115277605e-05, +-6.648679772122623383e-05, +-6.646388515345010625e-05, +-6.644086656452533122e-05, +-6.641774200132146723e-05, +-6.639451151087700500e-05, +-6.637117514039574898e-05, +-6.634773293725275336e-05, +-6.632418494898974129e-05, +-6.630053122331618911e-05, +-6.627677180811110175e-05, +-6.625290675141729349e-05, +-6.622893610144793390e-05, +-6.620485990658597861e-05, +-6.618067821537641727e-05, +-6.615639107653532663e-05, +-6.613199853894562857e-05, +-6.610750065165452876e-05, +-6.608289746388193268e-05, +-6.605818902500846526e-05, +-6.603337538458535060e-05, +-6.600845659233067157e-05, +-6.598343269812610354e-05, +-6.595830375202192892e-05, +-6.593306980423775535e-05, +-6.590773090515401834e-05, +-6.588228710532083104e-05, +-6.585673845545490779e-05, +-6.583108500643461750e-05, +-6.580532680931082564e-05, +-6.577946391529716351e-05, +-6.575349637577035356e-05, +-6.572742424227695848e-05, +-6.570124756652835326e-05, +-6.567496640039755386e-05, +-6.564858079593015414e-05, +-6.562209080532967556e-05, +-6.559549648096929010e-05, +-6.556879787538680586e-05, +-6.554199504128129243e-05, +-6.551508803152282523e-05, +-6.548807689914313418e-05, +-6.546096169733633561e-05, +-6.543374247946470560e-05, +-6.540641929905458712e-05, +-6.537899220979281217e-05, +-6.535146126553753024e-05, +-6.532382652030405948e-05, +-6.529608802827589135e-05, +-6.526824584379929673e-05, +-6.524030002138455915e-05, +-6.521225061570575801e-05, +-6.518409768160175787e-05, +-6.515584127407145155e-05, +-6.512748144828073966e-05, +-6.509901825955765166e-05, +-6.507045176339348435e-05, +-6.504178201544270693e-05, +-6.501300907152411299e-05, +-6.498413298761549438e-05, +-6.495515381986179983e-05, +-6.492607162456841285e-05, +-6.489688645820440441e-05, +-6.486759837740188237e-05, +-6.483820743895189862e-05, +-6.480871369981171324e-05, +-6.477911721709915668e-05, +-6.474941804809425600e-05, +-6.471961625023915361e-05, +-6.468971188113912369e-05, +-6.465970499855720538e-05, +-6.462959566042206325e-05, +-6.459938392482263408e-05, +-6.456906985000911614e-05, +-6.453865349439321319e-05, +-6.450813491654869009e-05, +-6.447751417520767301e-05, +-6.444679132926594840e-05, +-6.441596643777929032e-05, +-6.438503955996450394e-05, +-6.435401075520014386e-05, +-6.432288008302132346e-05, +-6.429164760312758894e-05, +-6.426031337537751185e-05, +-6.422887745979004434e-05, +-6.419733991654408549e-05, +-6.416570080597983658e-05, +-6.413396018859351554e-05, +-6.410211812504478380e-05, +-6.407017467615211132e-05, +-6.403812990289307471e-05, +-6.400598386640632236e-05, +-6.397373662798565199e-05, +-6.394138824908823706e-05, +-6.390893879132846032e-05, +-6.387638831648062435e-05, +-6.384373688647699998e-05, +-6.381098456341036064e-05, +-6.377813140952816827e-05, +-6.374517748723860426e-05, +-6.371212285911310373e-05, +-6.367896758787240999e-05, +-6.364571173640133324e-05, +-6.361235536774257065e-05, +-6.357889854509167829e-05, +-6.354534133181075929e-05, +-6.351168379141114363e-05, +-6.347792598756600557e-05, +-6.344406798410716526e-05, +-6.341010984501889523e-05, +-6.337605163444559109e-05, +-6.334189341669291002e-05, +-6.330763525621523459e-05, +-6.327327721762969969e-05, +-6.323881936570979571e-05, +-6.320426176537974425e-05, +-6.316960448173101865e-05, +-6.313484758000084966e-05, +-6.309999112558855629e-05, +-6.306503518404821382e-05, +-6.302997982109177094e-05, +-6.299482510258090466e-05, +-6.295957109454298518e-05, +-6.292421786315168224e-05, +-6.288876547474114105e-05, +-6.285321399580159126e-05, +-6.281756349297215060e-05, +-6.278181403305646449e-05, +-6.274596568300858427e-05, +-6.271001850993462065e-05, +-6.267397258109969613e-05, +-6.263782796392393349e-05, +-6.260158472597573368e-05, +-6.256524293498889270e-05, +-6.252880265884036191e-05, +-6.249226396556779850e-05, +-6.245562692336293839e-05, +-6.241889160056526711e-05, +-6.238205806567707673e-05, +-6.234512638734985906e-05, +-6.230809663438581004e-05, +-6.227096887574499898e-05, +-6.223374318053914798e-05, +-6.219641961803362414e-05, +-6.215899825764624692e-05, +-6.212147916894990383e-05, +-6.208386242166517778e-05, +-6.204614808567036248e-05, +-6.200833623099442861e-05, +-6.197042692781881278e-05, +-6.193242024647926068e-05, +-6.189431625745849517e-05, +-6.185611503139624512e-05, +-6.181781663908246917e-05, +-6.177942115145886005e-05, +-6.174092863961891235e-05, +-6.170233917480941329e-05, +-6.166365282842307016e-05, +-6.162486967200955562e-05, +-6.158598977726729485e-05, +-6.154701321604651490e-05, +-6.150794006034939376e-05, +-6.146877038232369066e-05, +-6.142950425427352033e-05, +-6.139014174865116728e-05, +-6.135068293805993184e-05, +-6.131112789525238187e-05, +-6.127147669313370024e-05, +-6.123172940475393278e-05, +-6.119188610331719044e-05, +-6.115194686217656711e-05, +-6.111191175483428870e-05, +-6.107178085494183509e-05, +-6.103155423630215597e-05, +-6.099123197286204079e-05, +-6.095081413872205952e-05, +-6.091030080813058601e-05, +-6.086969205548425872e-05, +-6.082898795533056254e-05, +-6.078818858235952106e-05, +-6.074729401141400328e-05, +-6.070630431748947963e-05, +-6.066521957571942595e-05, +-6.062403986139215569e-05, +-6.058276524994386070e-05, +-6.054139581695319700e-05, +-6.049993163815127977e-05, +-6.045837278941559146e-05, +-6.041671934677017835e-05, +-6.037497138638664662e-05, +-6.033312898458490777e-05, +-6.029119221782529102e-05, +-6.024916116272697477e-05, +-6.020703589604281953e-05, +-6.016481649468002202e-05, +-6.012250303569185484e-05, +-6.008009559627218454e-05, +-6.003759425376448399e-05, +-5.999499908566361458e-05, +-5.995231016959956316e-05, +-5.990952758335498581e-05, +-5.986665140485786913e-05, +-5.982368171217467267e-05, +-5.978061858352925502e-05, +-5.973746209727837764e-05, +-5.969421233193057674e-05, +-5.965086936613727282e-05, +-5.960743327869677543e-05, +-5.956390414854425435e-05, +-5.952028205477193957e-05, +-5.947656707660399494e-05, +-5.943275929341539684e-05, +-5.938885878472523921e-05, +-5.934486563018924579e-05, +-5.930077990961763916e-05, +-5.925660170295847783e-05, +-5.921233109029964856e-05, +-5.916796815187803455e-05, +-5.912351296807305773e-05, +-5.907896561940012607e-05, +-5.903432618653008151e-05, +-5.898959475026366013e-05, +-5.894477139155146868e-05, +-5.889985619148611727e-05, +-5.885484923129555832e-05, +-5.880975059236057611e-05, +-5.876456035619856438e-05, +-5.871927860446463088e-05, +-5.867390541896109091e-05, +-5.862844088163027772e-05, +-5.858288507455558600e-05, +-5.853723807996153296e-05, +-5.849149998021593340e-05, +-5.844567085782120585e-05, +-5.839975079542668502e-05, +-5.835373987582027341e-05, +-5.830763818193021673e-05, +-5.826144579682727905e-05, +-5.821516280371608277e-05, +-5.816878928594775987e-05, +-5.812232532701082431e-05, +-5.807577101053348949e-05, +-5.802912642028397997e-05, +-5.798239164017135819e-05, +-5.793556675423866005e-05, +-5.788865184667325593e-05, +-5.784164700179999298e-05, +-5.779455230408233365e-05, +-5.774736783812477474e-05, +-5.770009368866365202e-05, +-5.765272994058031334e-05, +-5.760527667889194349e-05, +-5.755773398875392241e-05, +-5.751010195545950665e-05, +-5.746238066444178097e-05, +-5.741457020126537096e-05, +-5.736667065163857256e-05, +-5.731868210140467164e-05, +-5.727060463654419373e-05, +-5.722243834317487017e-05, +-5.717418330755308820e-05, +-5.712583961606589495e-05, +-5.707740735524321509e-05, +-5.702888661174910264e-05, +-5.698027747238354349e-05, +-5.693158002408556565e-05, +-5.688279435392309524e-05, +-5.683392054910421860e-05, +-5.678495869697898480e-05, +-5.673590888502063538e-05, +-5.668677120084545881e-05, +-5.663754573220540435e-05, +-5.658823256698113639e-05, +-5.653883179319406908e-05, +-5.648934349899883115e-05, +-5.643976777268404517e-05, +-5.639010470267280864e-05, +-5.634035437752503862e-05, +-5.629051688592554546e-05, +-5.624059231670840706e-05, +-5.619058075882655022e-05, +-5.614048230137468146e-05, +-5.609029703358140633e-05, +-5.604002504480166020e-05, +-5.598966642452854649e-05, +-5.593922126239400747e-05, +-5.588868964815009471e-05, +-5.583807167168991444e-05, +-5.578736742303936735e-05, +-5.573657699234823779e-05, +-5.568570046991279935e-05, +-5.563473794614732750e-05, +-5.558368951160581748e-05, +-5.553255525697419837e-05, +-5.548133527306344165e-05, +-5.543002965082025415e-05, +-5.537863848132917188e-05, +-5.532716185579255653e-05, +-5.527559986555290292e-05, +-5.522395260208279658e-05, +-5.517222015697668735e-05, +-5.512040262197341373e-05, +-5.506850008893457974e-05, +-5.501651264984807867e-05, +-5.496444039683792536e-05, +-5.491228342215602308e-05, +-5.486004181818383726e-05, +-5.480771567743444194e-05, +-5.475530509254367671e-05, +-5.470281015628285898e-05, +-5.465023096155284126e-05, +-5.459756760137377213e-05, +-5.454482016890834569e-05, +-5.449198875744063923e-05, +-5.443907346037889152e-05, +-5.438607437126593148e-05, +-5.433299158377061976e-05, +-5.427982519168931240e-05, +-5.422657528894863233e-05, +-5.417324196959575900e-05, +-5.411982532781198766e-05, +-5.406632545790362207e-05, +-5.401274245430399382e-05, +-5.395907641157289314e-05, +-5.390532742439988249e-05, +-5.385149558759298017e-05, +-5.379758099609451683e-05, +-5.374358374497030695e-05, +-5.368950392941219675e-05, +-5.363534164473779988e-05, +-5.358109698639267944e-05, +-5.352677004994124059e-05, +-5.347236093108003922e-05, +-5.341786972562835611e-05, +-5.336329652953054832e-05, +-5.330864143885847509e-05, +-5.325390454980126568e-05, +-5.319908595867980022e-05, +-5.314418576193683674e-05, +-5.308920405613938961e-05, +-5.303414093797861434e-05, +-5.297899650427131192e-05, +-5.292377085195164825e-05, +-5.286846407808383925e-05, +-5.281307627985332143e-05, +-5.275760755456850693e-05, +-5.270205799966109524e-05, +-5.264642771268771302e-05, +-5.259071679132046128e-05, +-5.253492533336138939e-05, +-5.247905343673217490e-05, +-5.242310119947694923e-05, +-5.236706871976386972e-05, +-5.231095609587581589e-05, +-5.225476342622247824e-05, +-5.219849080934155087e-05, +-5.214213834387819945e-05, +-5.208570612860772100e-05, +-5.202919426242708713e-05, +-5.197260284434621622e-05, +-5.191593197350320645e-05, +-5.185918174915409007e-05, +-5.180235227067510350e-05, +-5.174544363756490312e-05, +-5.168845594943499721e-05, +-5.163138930602163829e-05, +-5.157424380718737486e-05, +-5.151701955290010601e-05, +-5.145971664325631721e-05, +-5.140233517847197299e-05, +-5.134487525887399244e-05, +-5.128733698491338158e-05, +-5.122972045716695454e-05, +-5.117202577631489057e-05, +-5.111425304316571813e-05, +-5.105640235864582525e-05, +-5.099847382378924765e-05, +-5.094046753976566832e-05, +-5.088238360784434744e-05, +-5.082422212942171532e-05, +-5.076598320601214992e-05, +-5.070766693923828679e-05, +-5.064927343084575743e-05, +-5.059080278270338581e-05, +-5.053225509678187027e-05, +-5.047363047517783243e-05, +-5.041492902010423559e-05, +-5.035615083387994927e-05, +-5.029729601895719987e-05, +-5.023836467788567000e-05, +-5.017935691334099945e-05, +-5.012027282811117848e-05, +-5.006111252509938705e-05, +-5.000187610732367632e-05, +-4.994256367791897447e-05, +-4.988317534012745081e-05, +-4.982371119731292215e-05, +-4.976417135295362249e-05, +-4.970455591063101545e-05, +-4.964486497405636397e-05, +-4.958509864704627477e-05, +-4.952525703352576126e-05, +-4.946534023754079314e-05, +-4.940534836324807103e-05, +-4.934528151491667989e-05, +-4.928513979693132128e-05, +-4.922492331378145104e-05, +-4.916463217007634287e-05, +-4.910426647053489012e-05, +-4.904382631998842465e-05, +-4.898331182337940906e-05, +-4.892272308576502132e-05, +-4.886206021230567577e-05, +-4.880132330828085925e-05, +-4.874051247907900059e-05, +-4.867962783019890718e-05, +-4.861866946724996825e-05, +-4.855763749595540073e-05, +-4.849653202214037039e-05, +-4.843535315174799069e-05, +-4.837410099082898213e-05, +-4.831277564554384068e-05, +-4.825137722216517560e-05, +-4.818990582706712491e-05, +-4.812836156674110341e-05, +-4.806674454778478450e-05, +-4.800505487690482422e-05, +-4.794329266091649534e-05, +-4.788145800674626913e-05, +-4.781955102142089876e-05, +-4.775757181208357396e-05, +-4.769552048598215739e-05, +-4.763339715047296580e-05, +-4.757120191301952324e-05, +-4.750893488119552899e-05, +-4.744659616267352093e-05, +-4.738418586524175519e-05, +-4.732170409679215120e-05, +-4.725915096532349002e-05, +-4.719652657894386066e-05, +-4.713383104585911328e-05, +-4.707106447438702155e-05, +-4.700822697295920719e-05, +-4.694531865009684022e-05, +-4.688233961443733069e-05, +-4.681928997472373737e-05, +-4.675616983979603993e-05, +-4.669297931860714448e-05, +-4.662971852021223805e-05, +-4.656638755377112639e-05, +-4.650298652855075477e-05, +-4.643951555391410843e-05, +-4.637597473933362962e-05, +-4.631236419439373832e-05, +-4.624868402876644450e-05, +-4.618493435223806014e-05, +-4.612111527469798454e-05, +-4.605722690613086413e-05, +-4.599326935662948097e-05, +-4.592924273639763943e-05, +-4.586514715572523630e-05, +-4.580098272501563012e-05, +-4.573674955477430450e-05, +-4.567244775559749757e-05, +-4.560807743820304748e-05, +-4.554363871339029053e-05, +-4.547913169207184857e-05, +-4.541455648526097097e-05, +-4.534991320406399942e-05, +-4.528520195969356807e-05, +-4.522042286347118531e-05, +-4.515557602680234453e-05, +-4.509066156120371727e-05, +-4.502567957829223667e-05, +-4.496063018977344909e-05, +-4.489551350747227829e-05, +-4.483032964329346568e-05, +-4.476507870925242933e-05, +-4.469976081746083064e-05, +-4.463437608012922375e-05, +-4.456892460956689977e-05, +-4.450340651818467179e-05, +-4.443782191848299606e-05, +-4.437217092306930573e-05, +-4.430645364464887642e-05, +-4.424067019601322524e-05, +-4.417482069006887607e-05, +-4.410890523981092530e-05, +-4.404292395832611154e-05, +-4.397687695880674757e-05, +-4.391076435453899741e-05, +-4.384458625890600699e-05, +-4.377834278538986245e-05, +-4.371203404756021958e-05, +-4.364566015909185435e-05, +-4.357922123375504062e-05, +-4.351271738540436252e-05, +-4.344614872800695791e-05, +-4.337951537561676182e-05, +-4.331281744237729824e-05, +-4.324605504253493455e-05, +-4.317922829042855442e-05, +-4.311233730049105541e-05, +-4.304538218724987753e-05, +-4.297836306532959173e-05, +-4.291128004943948581e-05, +-4.284413325439194166e-05, +-4.277692279508933670e-05, +-4.270964878652789963e-05, +-4.264231134379956029e-05, +-4.257491058208065369e-05, +-4.250744661664874541e-05, +-4.243991956287130175e-05, +-4.237232953620788519e-05, +-4.230467665221064231e-05, +-4.223696102652619433e-05, +-4.216918277488421917e-05, +-4.210134201311495448e-05, +-4.203343885713674966e-05, +-4.196547342295935915e-05, +-4.189744582668651737e-05, +-4.182935618450368728e-05, +-4.176120461269572603e-05, +-4.169299122763537219e-05, +-4.162471614578496003e-05, +-4.155637948369728021e-05, +-4.148798135801746350e-05, +-4.141952188547170512e-05, +-4.135100118288137971e-05, +-4.128241936716603639e-05, +-4.121377655531615822e-05, +-4.114507286442316747e-05, +-4.107630841166718771e-05, +-4.100748331430729954e-05, +-4.093859768970029050e-05, +-4.086965165528781403e-05, +-4.080064532859910682e-05, +-4.073157882725430233e-05, +-4.066245226895173889e-05, +-4.059326577148306397e-05, +-4.052401945273587016e-05, +-4.045471343066671887e-05, +-4.038534782333051541e-05, +-4.031592274886885383e-05, +-4.024643832550038109e-05, +-4.017689467153878123e-05, +-4.010729190538051713e-05, +-4.003763014550773753e-05, +-3.996790951048778912e-05, +-3.989813011897659113e-05, +-3.982829208970286021e-05, +-3.975839554150117856e-05, +-3.968844059326960165e-05, +-3.961842736400269247e-05, +-3.954835597277922945e-05, +-3.947822653874989392e-05, +-3.940803918116730258e-05, +-3.933779401935874652e-05, +-3.926749117272862396e-05, +-3.919713076077365968e-05, +-3.912671290307377067e-05, +-3.905623771927928608e-05, +-3.898570532914461846e-05, +-3.891511585248499055e-05, +-3.884446940921014717e-05, +-3.877376611931208347e-05, +-3.870300610285187857e-05, +-3.863218947999073091e-05, +-3.856131637096222296e-05, +-3.849038689607475392e-05, +-3.841940117572684052e-05, +-3.834835933039804361e-05, +-3.827726148063585607e-05, +-3.820610774708697529e-05, +-3.813489825046873443e-05, +-3.806363311157220594e-05, +-3.799231245127761758e-05, +-3.792093639054170789e-05, +-3.784950505040030120e-05, +-3.777801855197177706e-05, +-3.770647701644385649e-05, +-3.763488056509262304e-05, +-3.756322931927235151e-05, +-3.749152340040333111e-05, +-3.741976293000256863e-05, +-3.734794802965586349e-05, +-3.727607882102033530e-05, +-3.720415542583977207e-05, +-3.713217796593245326e-05, +-3.706014656319368415e-05, +-3.698806133959861472e-05, +-3.691592241718979166e-05, +-3.684372991809562370e-05, +-3.677148396451754059e-05, +-3.669918467873330668e-05, +-3.662683218309638398e-05, +-3.655442660003886625e-05, +-3.648196805205910554e-05, +-3.640945666174010302e-05, +-3.633689255173657302e-05, +-3.626427584477831089e-05, +-3.619160666366919011e-05, +-3.611888513129154647e-05, +-3.604611137059174472e-05, +-3.597328550459975513e-05, +-3.590040765641619729e-05, +-3.582747794921551141e-05, +-3.575449650624847910e-05, +-3.568146345082945007e-05, +-3.560837890635538348e-05, +-3.553524299629297979e-05, +-3.546205584418110667e-05, +-3.538881757363123267e-05, +-3.531552830833029359e-05, +-3.524218817202702476e-05, +-3.516879728855205943e-05, +-3.509535578180409841e-05, +-3.502186377575317624e-05, +-3.494832139444024107e-05, +-3.487472876198063762e-05, +-3.480108600255056827e-05, +-3.472739324040637147e-05, +-3.465365059987130127e-05, +-3.457985820533906454e-05, +-3.450601618127598937e-05, +-3.443212465220869226e-05, +-3.435818374273936539e-05, +-3.428419357754942221e-05, +-3.421015428136965484e-05, +-3.413606597901264487e-05, +-3.406192879535964457e-05, +-3.398774285535048021e-05, +-3.391350828400291865e-05, +-3.383922520639948752e-05, +-3.376489374769033475e-05, +-3.369051403309322864e-05, +-3.361608618789658001e-05, +-3.354161033744277942e-05, +-3.346708660716392835e-05, +-3.339251512253618080e-05, +-3.331789600911518989e-05, +-3.324322939252260953e-05, +-3.316851539843344995e-05, +-3.309375415260798031e-05, +-3.301894578086246205e-05, +-3.294409040907185260e-05, +-3.286918816318640723e-05, +-3.279423916922125039e-05, +-3.271924355324307387e-05, +-3.264420144140638309e-05, +-3.256911295990698479e-05, +-3.249397823501788088e-05, +-3.241879739307621064e-05, +-3.234357056046974557e-05, +-3.226829786366930706e-05, +-3.219297942919928965e-05, +-3.211761538364075775e-05, +-3.204220585364720727e-05, +-3.196675096593527534e-05, +-3.189125084727047627e-05, +-3.181570562450058146e-05, +-3.174011542452573602e-05, +-3.166448037430085084e-05, +-3.158880060085271941e-05, +-3.151307623126618746e-05, +-3.143730739268731751e-05, +-3.136149421232624162e-05, +-3.128563681744428655e-05, +-3.120973533537315053e-05, +-3.113378989350488801e-05, +-3.105780061927830961e-05, +-3.098176764021235531e-05, +-3.090569108387542500e-05, +-3.082957107788893608e-05, +-3.075340774994356614e-05, +-3.067720122778563944e-05, +-3.060095163922054215e-05, +-3.052465911211556840e-05, +-3.044832377438626267e-05, +-3.037194575401664702e-05, +-3.029552517904535337e-05, +-3.021906217756866275e-05, +-3.014255687774068478e-05, +-3.006600940777615972e-05, +-2.998941989593691270e-05, +-2.991278847055167428e-05, +-2.983611526000270412e-05, +-2.975940039272875220e-05, +-2.968264399722476065e-05, +-2.960584620204521466e-05, +-2.952900713579049164e-05, +-2.945212692712648869e-05, +-2.937520570477128356e-05, +-2.929824359749828215e-05, +-2.922124073413915609e-05, +-2.914419724357031051e-05, +-2.906711325473284013e-05, +-2.898998889661877685e-05, +-2.891282429827445754e-05, +-2.883561958880006667e-05, +-2.875837489735296002e-05, +-2.868109035313375982e-05, +-2.860376608540658190e-05, +-2.852640222348528325e-05, +-2.844899889673654521e-05, +-2.837155623457972441e-05, +-2.829407436648990548e-05, +-2.821655342198448066e-05, +-2.813899353064266200e-05, +-2.806139482209240327e-05, +-2.798375742601298162e-05, +-2.790608147213861277e-05, +-2.782836709024421069e-05, +-2.775061441016269753e-05, +-2.767282356178788359e-05, +-2.759499467504342179e-05, +-2.751712787991704144e-05, +-2.743922330644663651e-05, +-2.736128108470589659e-05, +-2.728330134484252838e-05, +-2.720528421702949712e-05, +-2.712722983150269582e-05, +-2.704913831854688789e-05, +-2.697100980848551229e-05, +-2.689284443169727854e-05, +-2.681464231861953798e-05, +-2.673640359971716032e-05, +-2.665812840551676062e-05, +-2.657981686659256394e-05, +-2.650146911355242256e-05, +-2.642308527707221905e-05, +-2.634466548786443461e-05, +-2.626620987668156762e-05, +-2.618771857433294900e-05, +-2.610919171167434743e-05, +-2.603062941959401357e-05, +-2.595203182905012236e-05, +-2.587339907102254974e-05, +-2.579473127655023353e-05, +-2.571602857671785475e-05, +-2.563729110264090607e-05, +-2.555851898550064381e-05, +-2.547971235651282901e-05, +-2.540087134693046507e-05, +-2.532199608806118561e-05, +-2.524308671125657173e-05, +-2.516414334789824370e-05, +-2.508516612943551325e-05, +-2.500615518733690962e-05, +-2.492711065312779796e-05, +-2.484803265837300497e-05, +-2.476892133468027146e-05, +-2.468977681369944591e-05, +-2.461059922712623856e-05, +-2.453138870668817085e-05, +-2.445214538416470084e-05, +-2.437286939137691660e-05, +-2.429356086017362112e-05, +-2.421421992246535252e-05, +-2.413484671019337590e-05, +-2.405544135533259372e-05, +-2.397600398990868979e-05, +-2.389653474598461393e-05, +-2.381703375566286229e-05, +-2.373750115108966160e-05, +-2.365793706444018342e-05, +-2.357834162793946581e-05, +-2.349871497384835263e-05, +-2.341905723446664785e-05, +-2.333936854213281066e-05, +-2.325964902922744520e-05, +-2.317989882815878582e-05, +-2.310011807138403556e-05, +-2.302030689139435669e-05, +-2.294046542071879081e-05, +-2.286059379192374380e-05, +-2.278069213761641130e-05, +-2.270076059043042314e-05, +-2.262079928304661937e-05, +-2.254080834817916910e-05, +-2.246078791857834538e-05, +-2.238073812703405559e-05, +-2.230065910636168253e-05, +-2.222055098942274175e-05, +-2.214041390911081751e-05, +-2.206024799835453070e-05, +-2.198005339011774897e-05, +-2.189983021740265636e-05, +-2.181957861323520462e-05, +-2.173929871068662115e-05, +-2.165899064285846726e-05, +-2.157865454288635499e-05, +-2.149829054394327088e-05, +-2.141789877922479013e-05, +-2.133747938197061157e-05, +-2.125703248544984304e-05, +-2.117655822296439963e-05, +-2.109605672784889871e-05, +-2.101552813347381084e-05, +-2.093497257323112800e-05, +-2.085439018055193443e-05, +-2.077378108890971006e-05, +-2.069314543178805518e-05, +-2.061248334271611335e-05, +-2.053179495525414471e-05, +-2.045108040297889608e-05, +-2.037033981952281176e-05, +-2.028957333852372995e-05, +-2.020878109366391743e-05, +-2.012796321865572083e-05, +-2.004711984723033831e-05, +-1.996625111315581400e-05, +-1.988535715024008048e-05, +-1.980443809229882239e-05, +-1.972349407319079769e-05, +-1.964252522680348889e-05, +-1.956153168703851723e-05, +-1.948051358785055865e-05, +-1.939947106319746042e-05, +-1.931840424707899793e-05, +-1.923731327351898196e-05, +-1.915619827657213324e-05, +-1.907505939030585087e-05, +-1.899389674883956213e-05, +-1.891271048629431379e-05, +-1.883150073683187122e-05, +-1.875026763464018664e-05, +-1.866901131391897247e-05, +-1.858773190891507685e-05, +-1.850642955389036749e-05, +-1.842510438312457770e-05, +-1.834375653093360574e-05, +-1.826238613165811033e-05, +-1.818099331964896201e-05, +-1.809957822930691139e-05, +-1.801814099503148598e-05, +-1.793668175126074312e-05, +-1.785520063245292664e-05, +-1.777369777308985161e-05, +-1.769217330767670779e-05, +-1.761062737074525810e-05, +-1.752906009683961855e-05, +-1.744747162053713260e-05, +-1.736586207643416803e-05, +-1.728423159914932217e-05, +-1.720258032332309324e-05, +-1.712090838362159034e-05, +-1.703921591472154097e-05, +-1.695750305133180907e-05, +-1.687576992817890398e-05, +-1.679401668001018557e-05, +-1.671224344159735409e-05, +-1.663045034772169816e-05, +-1.654863753319562981e-05, +-1.646680513284801383e-05, +-1.638495328152738312e-05, +-1.630308211410206741e-05, +-1.622119176546315793e-05, +-1.613928237051026705e-05, +-1.605735406417255163e-05, +-1.597540698139439822e-05, +-1.589344125713872981e-05, +-1.581145702638650781e-05, +-1.572945442414060130e-05, +-1.564743358541064884e-05, +-1.556539464523488481e-05, +-1.548333773866513341e-05, +-1.540126300077053218e-05, +-1.531917056664071686e-05, +-1.523706057137111351e-05, +-1.515493315008463101e-05, +-1.507278843791665674e-05, +-1.499062657001873269e-05, +-1.490844768155823867e-05, +-1.482625190772168728e-05, +-1.474403938370023115e-05, +-1.466181024471092688e-05, +-1.457956462598222537e-05, +-1.449730266275723794e-05, +-1.441502449029729052e-05, +-1.433273024386700908e-05, +-1.425042005875598844e-05, +-1.416809407026398778e-05, +-1.408575241370452384e-05, +-1.400339522440434058e-05, +-1.392102263770698881e-05, +-1.383863478895821315e-05, +-1.375623181352357033e-05, +-1.367381384679214933e-05, +-1.359138102414340331e-05, +-1.350893348098356180e-05, +-1.342647135273051463e-05, +-1.334399477479924456e-05, +-1.326150388264173620e-05, +-1.317899881169549830e-05, +-1.309647969742366072e-05, +-1.301394667530009874e-05, +-1.293139988079814725e-05, +-1.284883944940884075e-05, +-1.276626551664416423e-05, +-1.268367821800410872e-05, +-1.260107768901281074e-05, +-1.251846406520389530e-05, +-1.243583748210541222e-05, +-1.235319807528013122e-05, +-1.227054598027391014e-05, +-1.218788133265571220e-05, +-1.210520426799911694e-05, +-1.202251492188953188e-05, +-1.193981342990548153e-05, +-1.185709992765881100e-05, +-1.177437455074311014e-05, +-1.169163743477384089e-05, +-1.160888871537342948e-05, +-1.152612852815628584e-05, +-1.144335700876551397e-05, +-1.136057429283937285e-05, +-1.127778051601496949e-05, +-1.119497581394619404e-05, +-1.111216032229264221e-05, +-1.102933417670459747e-05, +-1.094649751286326677e-05, +-1.086365046642915385e-05, +-1.078079317308213921e-05, +-1.069792576850667899e-05, +-1.061504838837680916e-05, +-1.053216116839276610e-05, +-1.044926424424761521e-05, +-1.036635775163066613e-05, +-1.028344182624570941e-05, +-1.020051660379610190e-05, +-1.011758221998813963e-05, +-1.003463881053089017e-05, +-9.951686511139643367e-06, +-9.868725457520981562e-06, +-9.785755785394636451e-06, +-9.702777630478521992e-06, +-9.619791128492210632e-06, +-9.536796415160368878e-06, +-9.453793626197876614e-06, +-9.370782897331651759e-06, +-9.287764364285632369e-06, +-9.204738162784437515e-06, +-9.121704428552901414e-06, +-9.038663297319707201e-06, +-8.955614904802379199e-06, +-8.872559386729100792e-06, +-8.789496878823923541e-06, +-8.706427516810033335e-06, +-8.623351436413387557e-06, +-8.540268773347576910e-06, +-8.457179663335887235e-06, +-8.374084242096251123e-06, +-8.290982645344703814e-06, +-8.207875008795215480e-06, +-8.124761468163047172e-06, +-8.041642159149993812e-06, +-7.958517217466003858e-06, +-7.875386778814483289e-06, +-7.792250978895553289e-06, +-7.709109953405951992e-06, +-7.625963838042447178e-06, +-7.542812768486904778e-06, +-7.459656880428135543e-06, +-7.376496309546982188e-06, +-7.293331191519768507e-06, +-7.210161662021762042e-06, +-7.126987856712172285e-06, +-7.043809911252411016e-06, +-6.960627961309589697e-06, +-6.877442142523021863e-06, +-6.794252590540895414e-06, +-6.711059441005454620e-06, +-6.627862829541457603e-06, +-6.544662891778296600e-06, +-6.461459763334919088e-06, +-6.378253579823341272e-06, +-6.295044476848400751e-06, +-6.211832590011244604e-06, +-6.128618054890641298e-06, +-6.045401007083390939e-06, +-5.962181582152397914e-06, +-5.878959915667041330e-06, +-5.795736143188246059e-06, +-5.712510400257123177e-06, +-5.629282822413233691e-06, +-5.546053545198173181e-06, +-5.462822704121886147e-06, +-5.379590434699549209e-06, +-5.296356872436552373e-06, +-5.213122152813448940e-06, +-5.129886411326454700e-06, +-5.046649783435396061e-06, +-4.963412404604240573e-06, +-4.880174410282363952e-06, +-4.796935935911685480e-06, +-4.713697116907991781e-06, +-4.630458088701419062e-06, +-4.547218986684411414e-06, +-4.463979946252206439e-06, +-4.380741102787844467e-06, +-4.297502591647097295e-06, +-4.214264548195308194e-06, +-4.131027107773835849e-06, +-4.047790405703502630e-06, +-3.964554577302959963e-06, +-3.881319757877325382e-06, +-3.798086082703110846e-06, +-3.714853687068820186e-06, +-3.631622706222826925e-06, +-3.548393275413908202e-06, +-3.465165529876209506e-06, +-3.381939604814201375e-06, +-3.298715635439538031e-06, +-3.215493756937447966e-06, +-3.132274104470263097e-06, +-3.049056813195704097e-06, +-2.965842018251827767e-06, +-2.882629854760566366e-06, +-2.799420457827432843e-06, +-2.716213962545077104e-06, +-2.633010503978200356e-06, +-2.549810217185594481e-06, +-2.466613237205094072e-06, +-2.383419699057064091e-06, +-2.300229737747876514e-06, +-2.217043488254885666e-06, +-2.133861085548445141e-06, +-2.050682664576843749e-06, +-1.967508360269830869e-06, +-1.884338307538346027e-06, +-1.801172641278072419e-06, +-1.718011496354342777e-06, +-1.634855007624172606e-06, +-1.551703309921219842e-06, +-1.468556538059291993e-06, +-1.385414826835795043e-06, +-1.302278311016726571e-06, +-1.219147125358676374e-06, +-1.136021404593795443e-06, +-1.052901283433271759e-06, +-9.697868965671280713e-07, +-8.866783786676938793e-07, +-8.035758643745782235e-07, +-7.204794883166822717e-07, +-6.373893850971578135e-07, +-5.543056892969020125e-07, +-4.712285354743313544e-07, +-3.881580581688731168e-07, +-3.050943918859315931e-07, +-2.220376711189002023e-07, +-1.389880303341200637e-07, +-5.594560397437430493e-08, + 2.708947353762849467e-08, + 1.101170678142861481e-07, + 1.931370444847981609e-07, + 2.761492691916807400e-07, + 3.591536076243169016e-07, + 4.421499254821317008e-07, + 5.251380884896325323e-07, + 6.081179624077242730e-07, + 6.910894130117155951e-07, + 7.740523061063383426e-07, + 8.570065075222710961e-07, + 9.399518831163476490e-07, + 1.022888298768069879e-06, + 1.105815620398340939e-06, + 1.188733713928954109e-06, + 1.271642445334638523e-06, + 1.354541680602552886e-06, + 1.437431285747306548e-06, + 1.520311126822280310e-06, + 1.603181069901331782e-06, + 1.686040981075331656e-06, + 1.768890726485650939e-06, + 1.851730172287398028e-06, + 1.934559184664427293e-06, + 2.017377629844341081e-06, + 2.100185374058038607e-06, + 2.182982283591693065e-06, + 2.265768224746280822e-06, + 2.348543063852625143e-06, + 2.431306667282644370e-06, + 2.514058901431137743e-06, + 2.596799632712262171e-06, + 2.679528727593058642e-06, + 2.762246052556641016e-06, + 2.844951474117262203e-06, + 2.927644858835267259e-06, + 3.010326073280360950e-06, + 3.092994984065110878e-06, + 3.175651457841418736e-06, + 3.258295361282279878e-06, + 3.340926561096796131e-06, + 3.423544924026665270e-06, + 3.506150316842717917e-06, + 3.588742606359903257e-06, + 3.671321659415337323e-06, + 3.753887342879611739e-06, + 3.836439523671738345e-06, + 3.918978068722506971e-06, + 4.001502845007861930e-06, + 4.084013719545442305e-06, + 4.166510559376361005e-06, + 4.248993231580166754e-06, + 4.331461603271356852e-06, + 4.413915541595946698e-06, + 4.496354913746337756e-06, + 4.578779586939516620e-06, + 4.661189428431953478e-06, + 4.743584305516124196e-06, + 4.825964085520761883e-06, + 4.908328635807374743e-06, + 4.990677823785164016e-06, + 5.073011516889141730e-06, + 5.155329582595118102e-06, + 5.237631888416192282e-06, + 5.319918301902964953e-06, + 5.402188690640112091e-06, + 5.484442922261224973e-06, + 5.566680864427057533e-06, + 5.648902384840407877e-06, + 5.731107351242573452e-06, + 5.813295631410043385e-06, + 5.895467093169301226e-06, + 5.977621604374964726e-06, + 6.059759032924822365e-06, + 6.141879246756224988e-06, + 6.223982113846424625e-06, + 6.306067502208988146e-06, + 6.388135279908818548e-06, + 6.470185315040255766e-06, + 6.552217475741976824e-06, + 6.634231630193583145e-06, + 6.716227646615806378e-06, + 6.798205393266965259e-06, + 6.880164738457949623e-06, + 6.962105550530402530e-06, + 7.044027697871551814e-06, + 7.125931048910788066e-06, + 7.207815472116229918e-06, + 7.289680836009553896e-06, + 7.371527009147920430e-06, + 7.453353860120484078e-06, + 7.535161257581594676e-06, + 7.616949070214339349e-06, + 7.698717166745514662e-06, + 7.780465415956669390e-06, + 7.862193686662462825e-06, + 7.943901847725459055e-06, + 8.025589768052676152e-06, + 8.107257316592208203e-06, + 8.188904362347956906e-06, + 8.270530774361623655e-06, + 8.352136421709250251e-06, + 8.433721173534324342e-06, + 8.515284899011448482e-06, + 8.596827467361156436e-06, + 8.678348747861080458e-06, + 8.759848609827907800e-06, + 8.841326922613911260e-06, + 8.922783555640064783e-06, + 9.004218378359687118e-06, + 9.085631260273298768e-06, + 9.167022070943426439e-06, + 9.248390679954602751e-06, + 9.329736956964803163e-06, + 9.411060771665301694e-06, + 9.492361993795749803e-06, + 9.573640493155020104e-06, + 9.654896139583398344e-06, + 9.736128802959132596e-06, + 9.817338353231320154e-06, + 9.898524660383751090e-06, + 9.979687594449748267e-06, + 1.006082702552679899e-05, + 1.014194282373683084e-05, + 1.022303485927735557e-05, + 1.030410300238155852e-05, + 1.038514712333687077e-05, + 1.046616709248136915e-05, + 1.054716278020400162e-05, + 1.062813405694132616e-05, + 1.070908079319201875e-05, + 1.079000285949545702e-05, + 1.087090012644271808e-05, + 1.095177246469143381e-05, + 1.103261974492948704e-05, + 1.111344183790812881e-05, + 1.119423861443833108e-05, + 1.127500994537306170e-05, + 1.135575570162173479e-05, + 1.143647575414710044e-05, + 1.151716997396161094e-05, + 1.159783823214217441e-05, + 1.167848039980862828e-05, + 1.175909634813847091e-05, + 1.183968594836332099e-05, + 1.192024907176936473e-05, + 1.200078558969359512e-05, + 1.208129537353878231e-05, + 1.216177829475191665e-05, + 1.224223422483874381e-05, + 1.232266303536045110e-05, + 1.240306459793396574e-05, + 1.248343878422832775e-05, + 1.256378546597949111e-05, + 1.264410451496881750e-05, + 1.272439580303781982e-05, + 1.280465920208453856e-05, + 1.288489458406033153e-05, + 1.296510182098446998e-05, + 1.304528078492259000e-05, + 1.312543134800152418e-05, + 1.320555338240566940e-05, + 1.328564676037727834e-05, + 1.336571135421320337e-05, + 1.344574703627931316e-05, + 1.352575367898913210e-05, + 1.360573115481851945e-05, + 1.368567933630219817e-05, + 1.376559809603396332e-05, + 1.384548730666336672e-05, + 1.392534684091016060e-05, + 1.400517657154307433e-05, + 1.408497637139431563e-05, + 1.416474611335616547e-05, + 1.424448567037768316e-05, + 1.432419491547903640e-05, + 1.440387372173410326e-05, + 1.448352196226686213e-05, + 1.456313951028384998e-05, + 1.464272623903861073e-05, + 1.472228202184623542e-05, + 1.480180673209414661e-05, + 1.488130024322105132e-05, + 1.496076242873132534e-05, + 1.504019316219156241e-05, + 1.511959231722750460e-05, + 1.519895976753806576e-05, + 1.527829538687812996e-05, + 1.535759904905484663e-05, + 1.543687062796014300e-05, + 1.551610999753517080e-05, + 1.559531703178478540e-05, + 1.567449160478853013e-05, + 1.575363359068277072e-05, + 1.583274286365767301e-05, + 1.591181929798912259e-05, + 1.599086276800349159e-05, + 1.606987314809218734e-05, + 1.614885031272576731e-05, + 1.622779413641531782e-05, + 1.630670449376231035e-05, + 1.638558125941957710e-05, + 1.646442430810599511e-05, + 1.654323351461709451e-05, + 1.662200875380759270e-05, + 1.670074990058815193e-05, + 1.677945682995724127e-05, + 1.685812941696616769e-05, + 1.693676753673331980e-05, + 1.701537106445842845e-05, + 1.709393987538397936e-05, + 1.717247384484489324e-05, + 1.725097284822982657e-05, + 1.732943676099899996e-05, + 1.740786545868097264e-05, + 1.748625881687267293e-05, + 1.756461671123619989e-05, + 1.764293901751314491e-05, + 1.772122561150334138e-05, + 1.779947636907623185e-05, + 1.787769116618444088e-05, + 1.795586987882933472e-05, + 1.803401238309249363e-05, + 1.811211855513275066e-05, + 1.819018827116847172e-05, + 1.826822140749193143e-05, + 1.834621784046620621e-05, + 1.842417744652138971e-05, + 1.850210010216929394e-05, + 1.857998568398246995e-05, + 1.865783406860463650e-05, + 1.873564513276535065e-05, + 1.881341875324464926e-05, + 1.889115480690532769e-05, + 1.896885317068915865e-05, + 1.904651372159994814e-05, + 1.912413633671735907e-05, + 1.920172089319394998e-05, + 1.927926726825514121e-05, + 1.935677533919607406e-05, + 1.943424498339561395e-05, + 1.951167607829568283e-05, + 1.958906850141550288e-05, + 1.966642213034801523e-05, + 1.974373684275699671e-05, + 1.982101251639087323e-05, + 1.989824902906198778e-05, + 1.997544625866101020e-05, + 2.005260408315344739e-05, + 2.012972238057982288e-05, + 2.020680102905236320e-05, + 2.028383990676932636e-05, + 2.036083889199411735e-05, + 2.043779786306941328e-05, + 2.051471669841396499e-05, + 2.059159527651913775e-05, + 2.066843347596324646e-05, + 2.074523117539068816e-05, + 2.082198825352621618e-05, + 2.089870458917152495e-05, + 2.097538006120535164e-05, + 2.105201454858049120e-05, + 2.112860793033745729e-05, + 2.120516008558788725e-05, + 2.128167089351066607e-05, + 2.135814023338364944e-05, + 2.143456798454926746e-05, + 2.151095402642819914e-05, + 2.158729823853051255e-05, + 2.166360050043435352e-05, + 2.173986069180078900e-05, + 2.181607869236985652e-05, + 2.189225438195772493e-05, + 2.196838764047041973e-05, + 2.204447834788702808e-05, + 2.212052638425624293e-05, + 2.219653162972744573e-05, + 2.227249396451692337e-05, + 2.234841326892125806e-05, + 2.242428942332826765e-05, + 2.250012230819627699e-05, + 2.257591180406834811e-05, + 2.265165779156866509e-05, + 2.272736015140301854e-05, + 2.280301876435547508e-05, + 2.287863351130556874e-05, + 2.295420427319095014e-05, + 2.302973093105563016e-05, + 2.310521336601226660e-05, + 2.318065145925606572e-05, + 2.325604509207879214e-05, + 2.333139414583467068e-05, + 2.340669850197139797e-05, + 2.348195804202677796e-05, + 2.355717264761202529e-05, + 2.363234220042198383e-05, + 2.370746658224908245e-05, + 2.378254567494616378e-05, + 2.385757936047388418e-05, + 2.393256752086400676e-05, + 2.400751003823287254e-05, + 2.408240679479524101e-05, + 2.415725767283047993e-05, + 2.423206255471358370e-05, + 2.430682132291136509e-05, + 2.438153385996636162e-05, + 2.445620004850660353e-05, + 2.453081977125978974e-05, + 2.460539291101940314e-05, + 2.467991935067535622e-05, + 2.475439897321080965e-05, + 2.482883166168552976e-05, + 2.490321729924941397e-05, + 2.497755576913952613e-05, + 2.505184695467659327e-05, + 2.512609073927904256e-05, + 2.520028700644275389e-05, + 2.527443563975120049e-05, + 2.534853652288955716e-05, + 2.542258953961065631e-05, + 2.549659457376599611e-05, + 2.557055150930204749e-05, + 2.564446023024402491e-05, + 2.571832062070931359e-05, + 2.579213256490425416e-05, + 2.586589594712126948e-05, + 2.593961065175211570e-05, + 2.601327656326796336e-05, + 2.608689356623314308e-05, + 2.616046154530203186e-05, + 2.623398038521909036e-05, + 2.630744997081569834e-05, + 2.638087018702360562e-05, + 2.645424091885549428e-05, + 2.652756205141794512e-05, + 2.660083346990863563e-05, + 2.667405505961651616e-05, + 2.674722670591851671e-05, + 2.682034829429303841e-05, + 2.689341971030033968e-05, + 2.696644083959582106e-05, + 2.703941156792706398e-05, + 2.711233178113040877e-05, + 2.718520136514487648e-05, + 2.725802020599176894e-05, + 2.733078818978890230e-05, + 2.740350520274673101e-05, + 2.747617113116901529e-05, + 2.754878586144954817e-05, + 2.762134928008555220e-05, + 2.769386127365782834e-05, + 2.776632172884449488e-05, + 2.783873053241771447e-05, + 2.791108757124373819e-05, + 2.798339273228002901e-05, + 2.805564590258839081e-05, + 2.812784696931545613e-05, + 2.819999581970622851e-05, + 2.827209234110055210e-05, + 2.834413642093052308e-05, + 2.841612794673311387e-05, + 2.848806680613469276e-05, + 2.855995288684752732e-05, + 2.863178607669932557e-05, + 2.870356626360103514e-05, + 2.877529333555980289e-05, + 2.884696718068881403e-05, + 2.891858768718861338e-05, + 2.899015474335937714e-05, + 2.906166823759845992e-05, + 2.913312805840048621e-05, + 2.920453409435401306e-05, + 2.927588623415815225e-05, + 2.934718436658694072e-05, + 2.941842838053507016e-05, + 2.948961816498217614e-05, + 2.956075360900611273e-05, + 2.963183460179623409e-05, + 2.970286103262078698e-05, + 2.977383279085661798e-05, + 2.984474976598583274e-05, + 2.991561184757980064e-05, + 2.998641892530936321e-05, + 3.005717088895755321e-05, + 3.012786762838419539e-05, + 3.019850903357184957e-05, + 3.026909499458974739e-05, + 3.033962540160741256e-05, + 3.041010014490714953e-05, + 3.048051911485279139e-05, + 3.055088220191827194e-05, + 3.062118929668454590e-05, + 3.069144028982415936e-05, + 3.076163507211041129e-05, + 3.083177353443101787e-05, + 3.090185556775560673e-05, + 3.097188106316534962e-05, + 3.104184991184919472e-05, + 3.111176200508864722e-05, + 3.118161723427067129e-05, + 3.125141549088420031e-05, + 3.132115666651769066e-05, + 3.139084065287140027e-05, + 3.146046734173928925e-05, + 3.153003662501782905e-05, + 3.159954839471960914e-05, + 3.166900254294128533e-05, + 3.173839896189248729e-05, + 3.180773754389285056e-05, + 3.187701818135629561e-05, + 3.194624076680368591e-05, + 3.201540519286022582e-05, + 3.208451135225201826e-05, + 3.215355913781927169e-05, + 3.222254844249720451e-05, + 3.229147915932883197e-05, + 3.236035118146239110e-05, + 3.242916440215103585e-05, + 3.249791871475012653e-05, + 3.256661401272974561e-05, + 3.263525018965613073e-05, + 3.270382713920450218e-05, + 3.277234475515617622e-05, + 3.284080293139822622e-05, + 3.290920156192094165e-05, + 3.297754054083030986e-05, + 3.304581976232991673e-05, + 3.311403912073256122e-05, + 3.318219851045847989e-05, + 3.325029782603162006e-05, + 3.331833696209247399e-05, + 3.338631581337960001e-05, + 3.345423427474233485e-05, + 3.352209224113742575e-05, + 3.358988960762978947e-05, + 3.365762626938901571e-05, + 3.372530212170237075e-05, + 3.379291705995614243e-05, + 3.386047097964807456e-05, + 3.392796377638469032e-05, + 3.399539534588138032e-05, + 3.406276558395948206e-05, + 3.413007438655840268e-05, + 3.419732164971791253e-05, + 3.426450726959028151e-05, + 3.433163114243746686e-05, + 3.439869316462789453e-05, + 3.446569323264944240e-05, + 3.453263124309361099e-05, + 3.459950709265332793e-05, + 3.466632067814997848e-05, + 3.473307189650365773e-05, + 3.479976064474481901e-05, + 3.486638682002428917e-05, + 3.493295031959436963e-05, + 3.499945104082220591e-05, + 3.506588888118582356e-05, + 3.513226373827187836e-05, + 3.519857550978788081e-05, + 3.526482409354693588e-05, + 3.533100938746529685e-05, + 3.539713128958930769e-05, + 3.546318969806566885e-05, + 3.552918451115342444e-05, + 3.559511562723634249e-05, + 3.566098294479272667e-05, + 3.572678636242323965e-05, + 3.579252577884731168e-05, + 3.585820109288849705e-05, + 3.592381220348411677e-05, + 3.598935900969666297e-05, + 3.605484141068153036e-05, + 3.612025930572898840e-05, + 3.618561259423110635e-05, + 3.625090117569439781e-05, + 3.631612494975129289e-05, + 3.638128381613102061e-05, + 3.644637767468647684e-05, + 3.651140642539108682e-05, + 3.657636996832410071e-05, + 3.664126820368014811e-05, + 3.670610103178092033e-05, + 3.677086835304272565e-05, + 3.683557006801788553e-05, + 3.690020607736296067e-05, + 3.696477628185298119e-05, + 3.702928058237906818e-05, + 3.709371887994848785e-05, + 3.715809107568194110e-05, + 3.722239707082517120e-05, + 3.728663676673190795e-05, + 3.735081006487243291e-05, + 3.741491686684580374e-05, + 3.747895707435041133e-05, + 3.754293058921075963e-05, + 3.760683731337414527e-05, + 3.767067714889725408e-05, + 3.773444999795674566e-05, + 3.779815576284721368e-05, + 3.786179434597838732e-05, + 3.792536564988677964e-05, + 3.798886957721826584e-05, + 3.805230603074009752e-05, + 3.811567491333804316e-05, + 3.817897612801661168e-05, + 3.824220957789600318e-05, + 3.830537516622433325e-05, + 3.836847279635995377e-05, + 3.843150237178346717e-05, + 3.849446379609481266e-05, + 3.855735697301356440e-05, + 3.862018180637594313e-05, + 3.868293820014691861e-05, + 3.874562605840264554e-05, + 3.880824528534199672e-05, + 3.887079578528490972e-05, + 3.893327746266803645e-05, + 3.899569022205749610e-05, + 3.905803396813179221e-05, + 3.912030860569293251e-05, + 3.918251403966366416e-05, + 3.924465017508830731e-05, + 3.930671691712939398e-05, + 3.936871417107956048e-05, + 3.943064184234415271e-05, + 3.949249983645359961e-05, + 3.955428805905970656e-05, + 3.961600641593370382e-05, + 3.967765481297738666e-05, + 3.973923315620634419e-05, + 3.980074135176147894e-05, + 3.986217930590622860e-05, + 3.992354692502668125e-05, + 3.998484411562905458e-05, + 4.004607078435084959e-05, + 4.010722683794736584e-05, + 4.016831218328846244e-05, + 4.022932672738440264e-05, + 4.029027037735776628e-05, + 4.035114304045474580e-05, + 4.041194462405661166e-05, + 4.047267503564923275e-05, + 4.053333418286187047e-05, + 4.059392197343687526e-05, + 4.065443831524123339e-05, + 4.071488311627468492e-05, + 4.077525628465589332e-05, + 4.083555772862052104e-05, + 4.089578735654522424e-05, + 4.095594507692085266e-05, + 4.101603079836375247e-05, + 4.107604442962628976e-05, + 4.113598587956742125e-05, + 4.119585505719059392e-05, + 4.125565187161421408e-05, + 4.131537623208548447e-05, + 4.137502804797486806e-05, + 4.143460722878966769e-05, + 4.149411368414457644e-05, + 4.155354732379997704e-05, + 4.161290805763171298e-05, + 4.167219579564245907e-05, + 4.173141044797261769e-05, + 4.179055192487337634e-05, + 4.184962013673085149e-05, + 4.190861499406431319e-05, + 4.196753640751204299e-05, + 4.202638428783965523e-05, + 4.208515854595175218e-05, + 4.214385909286139700e-05, + 4.220248583972858932e-05, + 4.226103869783077500e-05, + 4.231951757857604625e-05, + 4.237792239350101389e-05, + 4.243625305427057019e-05, + 4.249450947267572048e-05, + 4.255269156064398465e-05, + 4.261079923022406256e-05, + 4.266883239359603902e-05, + 4.272679096306914766e-05, + 4.278467485108189964e-05, + 4.284248397019969846e-05, + 4.290021823312513985e-05, + 4.295787755268263642e-05, + 4.301546184182923935e-05, + 4.307297101365161623e-05, + 4.313040498136369285e-05, + 4.318776365831804412e-05, + 4.324504695798908220e-05, + 4.330225479398453544e-05, + 4.335938708004252783e-05, + 4.341644373003201947e-05, + 4.347342465795011636e-05, + 4.353032977793288536e-05, + 4.358715900423907079e-05, + 4.364391225126185804e-05, + 4.370058943352528216e-05, + 4.375719046568508165e-05, + 4.381371526252590665e-05, + 4.387016373897191702e-05, + 4.392653581007129179e-05, + 4.398283139100679336e-05, + 4.403905039709307055e-05, + 4.409519274377478835e-05, + 4.415125834663631121e-05, + 4.420724712138684266e-05, + 4.426315898387081336e-05, + 4.431899385006529257e-05, + 4.437475163608036079e-05, + 4.443043225815610794e-05, + 4.448603563267387515e-05, + 4.454156167613999850e-05, + 4.459701030519727449e-05, + 4.465238143662136856e-05, + 4.470767498731946667e-05, + 4.476289087433998567e-05, + 4.481802901485723182e-05, + 4.487308932618219541e-05, + 4.492807172576011128e-05, + 4.498297613117024197e-05, + 4.503780246012342476e-05, + 4.509255063047292041e-05, + 4.514722056020127405e-05, + 4.520181216741816024e-05, + 4.525632537038320552e-05, + 4.531076008748069933e-05, + 4.536511623723034798e-05, + 4.541939373829677491e-05, + 4.547359250946230732e-05, + 4.552771246966253789e-05, + 4.558175353795810170e-05, + 4.563571563354566735e-05, + 4.568959867576502488e-05, + 4.574340258408665812e-05, + 4.579712727810984058e-05, + 4.585077267758474638e-05, + 4.590433870238804214e-05, + 4.595782527253249576e-05, + 4.601123230817747280e-05, + 4.606455972960134357e-05, + 4.611780745723675359e-05, + 4.617097541164317967e-05, + 4.622406351351949995e-05, + 4.627707168369912170e-05, + 4.632999984316250392e-05, + 4.638284791301056721e-05, + 4.643561581449819569e-05, + 4.648830346900834483e-05, + 4.654091079806146729e-05, + 4.659343772332577213e-05, + 4.664588416659236954e-05, + 4.669825004979807968e-05, + 4.675053529502228174e-05, + 4.680273982447538076e-05, + 4.685486356050644444e-05, + 4.690690642561203943e-05, + 4.695886834241096261e-05, + 4.701074923367715342e-05, + 4.706254902231412024e-05, + 4.711426763136383761e-05, + 4.716590498401700550e-05, + 4.721746100358926464e-05, + 4.726893561354239266e-05, + 4.732032873748264390e-05, + 4.737164029914815234e-05, + 4.742287022241912988e-05, + 4.747401843131582669e-05, + 4.752508484999761639e-05, + 4.757606940276208808e-05, + 4.762697201405352338e-05, + 4.767779260844923553e-05, + 4.772853111066940852e-05, + 4.777918744557430524e-05, + 4.782976153816231597e-05, + 4.788025331357965514e-05, + 4.793066269710599572e-05, + 4.798098961416392207e-05, + 4.803123399031733074e-05, + 4.808139575127086808e-05, + 4.813147482286799894e-05, + 4.818147113110040540e-05, + 4.823138460209419707e-05, + 4.828121516211896413e-05, + 4.833096273758593427e-05, + 4.838062725504595327e-05, + 4.843020864119828065e-05, + 4.847970682287702359e-05, + 4.852912172706073208e-05, + 4.857845328086991208e-05, + 4.862770141156744561e-05, + 4.867686604655594123e-05, + 4.872594711338761389e-05, + 4.877494453974976331e-05, + 4.882385825347495200e-05, + 4.887268818253838958e-05, + 4.892143425505824451e-05, + 4.897009639929299457e-05, + 4.901867454365094748e-05, + 4.906716861667715599e-05, + 4.911557854706152224e-05, + 4.916390426363800495e-05, + 4.921214569538096705e-05, + 4.926030277141561108e-05, + 4.930837542100612752e-05, + 4.935636357355349251e-05, + 4.940426715861635906e-05, + 4.945208610588800423e-05, + 4.949982034520594460e-05, + 4.954746980655829922e-05, + 4.959503442007102313e-05, + 4.964251411601655384e-05, + 4.968990882481180558e-05, + 4.973721847701799312e-05, + 4.978444300333911387e-05, + 4.983158233463227493e-05, + 4.987863640188457923e-05, + 4.992560513624279880e-05, + 4.997248846899072849e-05, + 5.001928633155701257e-05, + 5.006599865552133823e-05, + 5.011262537260553155e-05, + 5.015916641466952564e-05, + 5.020562171373235352e-05, + 5.025199120194944082e-05, + 5.029827481162245172e-05, + 5.034447247520729851e-05, + 5.039058412529053303e-05, + 5.043660969462011097e-05, + 5.048254911608130222e-05, + 5.052840232270565586e-05, + 5.057416924767759348e-05, + 5.061984982432321479e-05, + 5.066544398610927443e-05, + 5.071095166666152523e-05, + 5.075637279974390165e-05, + 5.080170731926760664e-05, + 5.084695515929828100e-05, + 5.089211625403672486e-05, + 5.093719053783665832e-05, + 5.098217794520320352e-05, + 5.102707841078272703e-05, + 5.107189186936856581e-05, + 5.111661825591011418e-05, + 5.116125750548955410e-05, + 5.120580955335131163e-05, + 5.125027433487908536e-05, + 5.129465178560447939e-05, + 5.133894184121552109e-05, + 5.138314443753532943e-05, + 5.142725951054169834e-05, + 5.147128699636458957e-05, + 5.151522683127594788e-05, + 5.155907895169813755e-05, + 5.160284329420207890e-05, + 5.164651979550529667e-05, + 5.169010839247953663e-05, + 5.173360902213986926e-05, + 5.177702162165149320e-05, + 5.182034612832918629e-05, + 5.186358247963577422e-05, + 5.190673061318225242e-05, + 5.194979046673398640e-05, + 5.199276197819986971e-05, + 5.203564508564002854e-05, + 5.207843972726390407e-05, + 5.212114584143095038e-05, + 5.216376336664767325e-05, + 5.220629224157624280e-05, + 5.224873240502291282e-05, + 5.229108379594579997e-05, + 5.233334635345253237e-05, + 5.237552001679915864e-05, + 5.241760472539772379e-05, + 5.245960041880449879e-05, + 5.250150703672773944e-05, + 5.254332451902637177e-05, + 5.258505280570987004e-05, + 5.262669183693588509e-05, + 5.266824155301890435e-05, + 5.270970189441794620e-05, + 5.275107280174503026e-05, + 5.279235421576295481e-05, + 5.283354607738537806e-05, + 5.287464832767494117e-05, + 5.291566090785163013e-05, + 5.295658375928040911e-05, + 5.299741682347964330e-05, + 5.303816004211899833e-05, + 5.307881335701748190e-05, + 5.311937671015180568e-05, + 5.315985004364616673e-05, + 5.320023329977064828e-05, + 5.324052642095851955e-05, + 5.328072934978750612e-05, + 5.332084202898725744e-05, + 5.336086440144476099e-05, + 5.340079641019372393e-05, + 5.344063799842178300e-05, + 5.348038910946878341e-05, + 5.352004968682686685e-05, + 5.355961967413910954e-05, + 5.359909901520777567e-05, + 5.363848765397524900e-05, + 5.367778553454928124e-05, + 5.371699260118277845e-05, + 5.375610879828190541e-05, + 5.379513407041089005e-05, + 5.383406836228316685e-05, + 5.387291161875961499e-05, + 5.391166378486568202e-05, + 5.395032480577201044e-05, + 5.398889462680276583e-05, + 5.402737319344304322e-05, + 5.406576045131789460e-05, + 5.410405634621931877e-05, + 5.414226082408478733e-05, + 5.418037383100620297e-05, + 5.421839531323393804e-05, + 5.425632521716884540e-05, + 5.429416348935994769e-05, + 5.433191007652124921e-05, + 5.436956492551358239e-05, + 5.440712798335138394e-05, + 5.444459919721086037e-05, + 5.448197851441139382e-05, + 5.451926588243218464e-05, + 5.455646124890998805e-05, + 5.459356456163105722e-05, + 5.463057576853783142e-05, + 5.466749481772702511e-05, + 5.470432165744834043e-05, + 5.474105623611159589e-05, + 5.477769850227606047e-05, + 5.481424840465553585e-05, + 5.485070589212602034e-05, + 5.488707091370796865e-05, + 5.492334341858219577e-05, + 5.495952335608789830e-05, + 5.499561067571417055e-05, + 5.503160532710756010e-05, + 5.506750726006932341e-05, + 5.510331642455484983e-05, + 5.513903277067966536e-05, + 5.517465624871035248e-05, + 5.521018680906999824e-05, + 5.524562440233786226e-05, + 5.528096897924896332e-05, + 5.531622049069184326e-05, + 5.535137888771665102e-05, + 5.538644412152397535e-05, + 5.542141614347204125e-05, + 5.545629490507546986e-05, + 5.549108035800466864e-05, + 5.552577245408469290e-05, + 5.556037114530167656e-05, + 5.559487638379316234e-05, + 5.562928812185493228e-05, + 5.566360631193869023e-05, + 5.569783090665165532e-05, + 5.573196185876188127e-05, + 5.576599912118965734e-05, + 5.579994264701308520e-05, + 5.583379238946746905e-05, + 5.586754830194469223e-05, + 5.590121033799164509e-05, + 5.593477845131750273e-05, + 5.596825259578336407e-05, + 5.600163272540900779e-05, + 5.603491879437102888e-05, + 5.606811075700369242e-05, + 5.610120856779670420e-05, + 5.613421218140156007e-05, + 5.616712155262267584e-05, + 5.619993663642340457e-05, + 5.623265738792449837e-05, + 5.626528376240261763e-05, + 5.629781571529701917e-05, + 5.633025320220103852e-05, + 5.636259617886126314e-05, + 5.639484460119141709e-05, + 5.642699842525679584e-05, + 5.645905760728045308e-05, + 5.649102210364821512e-05, + 5.652289187089937033e-05, + 5.655466686573202911e-05, + 5.658634704500346954e-05, + 5.661793236572694574e-05, + 5.664942278507854542e-05, + 5.668081826038974281e-05, + 5.671211874914598239e-05, + 5.674332420899951993e-05, + 5.677443459775557858e-05, + 5.680544987337802056e-05, + 5.683636999399301997e-05, + 5.686719491788282859e-05, + 5.689792460348381073e-05, + 5.692855900940018554e-05, + 5.695909809438873977e-05, + 5.698954181736481115e-05, + 5.701989013740925443e-05, + 5.705014301375066049e-05, + 5.708030040578752819e-05, + 5.711036227307121540e-05, + 5.714032857531222727e-05, + 5.717019927238449890e-05, + 5.719997432431825991e-05, + 5.722965369129884858e-05, + 5.725923733367901079e-05, + 5.728872521196561854e-05, + 5.731811728682452173e-05, + 5.734741351908701954e-05, + 5.737661386973365833e-05, + 5.740571829991472310e-05, + 5.743472677093387958e-05, + 5.746363924425652256e-05, + 5.749245568150718064e-05, + 5.752117604447028187e-05, + 5.754980029508875115e-05, + 5.757832839546941759e-05, + 5.760676030787468659e-05, + 5.763509599472678170e-05, + 5.766333541861376195e-05, + 5.769147854227538663e-05, + 5.771952532861515661e-05, + 5.774747574069958260e-05, + 5.777532974175162567e-05, + 5.780308729515522379e-05, + 5.783074836445504792e-05, + 5.785831291335416418e-05, + 5.788578090572040353e-05, + 5.791315230557780337e-05, + 5.794042707711068683e-05, + 5.796760518466928709e-05, + 5.799468659275649297e-05, + 5.802167126603949738e-05, + 5.804855916934862498e-05, + 5.807535026767117258e-05, + 5.810204452615609156e-05, + 5.812864191011333728e-05, + 5.815514238501343547e-05, + 5.818154591648639121e-05, + 5.820785247032717773e-05, + 5.823406201248744902e-05, + 5.826017450908110314e-05, + 5.828618992638322514e-05, + 5.831210823082838622e-05, + 5.833792938901594951e-05, + 5.836365336770308379e-05, + 5.838928013380869367e-05, + 5.841480965441312150e-05, + 5.844024189675783561e-05, + 5.846557682824441387e-05, + 5.849081441643918546e-05, + 5.851595462906645460e-05, + 5.854099743401277635e-05, + 5.856594279932625190e-05, + 5.859079069321507845e-05, + 5.861554108405278048e-05, + 5.864019394037015952e-05, + 5.866474923086167746e-05, + 5.868920692438250202e-05, + 5.871356698994987562e-05, + 5.873782939674152969e-05, + 5.876199411410001471e-05, + 5.878606111152770615e-05, + 5.881003035868502223e-05, + 5.883390182540109662e-05, + 5.885767548166236714e-05, + 5.888135129761672289e-05, + 5.890492924357811885e-05, + 5.892840929001830208e-05, + 5.895179140757254442e-05, + 5.897507556703784681e-05, + 5.899826173937226841e-05, + 5.902134989569921599e-05, + 5.904434000730204325e-05, + 5.906723204562257359e-05, + 5.909002598227190147e-05, + 5.911272178901845942e-05, + 5.913531943779305955e-05, + 5.915781890069220044e-05, + 5.918022014997110104e-05, + 5.920252315804853222e-05, + 5.922472789750524467e-05, + 5.924683434108520214e-05, + 5.926884246169286419e-05, + 5.929075223239965752e-05, + 5.931256362643213105e-05, + 5.933427661718655878e-05, + 5.935589117821738625e-05, + 5.937740728324210945e-05, + 5.939882490614345001e-05, + 5.942014402096489642e-05, + 5.944136460190919968e-05, + 5.946248662334808371e-05, + 5.948351005981206060e-05, + 5.950443488599380522e-05, + 5.952526107675340002e-05, + 5.954598860710615810e-05, + 5.956661745223736158e-05, + 5.958714758749139248e-05, + 5.960757898837598141e-05, + 5.962791163056170617e-05, + 5.964814548988264900e-05, + 5.966828054233405882e-05, + 5.968831676407757567e-05, + 5.970825413143456293e-05, + 5.972809262088961060e-05, + 5.974783220909420805e-05, + 5.976747287285666773e-05, + 5.978701458915153738e-05, + 5.980645733511864457e-05, + 5.982580108805710654e-05, + 5.984504582543144231e-05, + 5.986419152486813715e-05, + 5.988323816415638801e-05, + 5.990218572125157289e-05, + 5.992103417426903705e-05, + 5.993978350148767089e-05, + 5.995843368135323707e-05, + 5.997698469246905313e-05, + 5.999543651360476681e-05, + 6.001378912369512950e-05, + 6.003204250183495470e-05, + 6.005019662728433577e-05, + 6.006825147946554238e-05, + 6.008620703796508050e-05, + 6.010406328253163242e-05, + 6.012182019307985145e-05, + 6.013947774968583538e-05, + 6.015703593258920002e-05, + 6.017449472219325537e-05, + 6.019185409906414506e-05, + 6.020911404393407859e-05, + 6.022627453769605944e-05, + 6.024333556140732738e-05, + 6.026029709628925684e-05, + 6.027715912372634722e-05, + 6.029392162526579606e-05, + 6.031058458262138851e-05, + 6.032714797766715483e-05, + 6.034361179244258130e-05, + 6.035997600915001492e-05, + 6.037624061015517163e-05, + 6.039240557798986037e-05, + 6.040847089534657561e-05, + 6.042443654508291548e-05, + 6.044030251021989449e-05, + 6.045606877394241787e-05, + 6.047173531959827188e-05, + 6.048730213070135610e-05, + 6.050276919092785488e-05, + 6.051813648411521405e-05, + 6.053340399426931706e-05, + 6.054857170555680063e-05, + 6.056363960230844970e-05, + 6.057860766902064078e-05, + 6.059347589035155398e-05, + 6.060824425112403262e-05, + 6.062291273632490561e-05, + 6.063748133110336111e-05, + 6.065195002077547313e-05, + 6.066631879081955974e-05, + 6.068058762687560711e-05, + 6.069475651475123262e-05, + 6.070882544041637227e-05, + 6.072279439000359238e-05, + 6.073666334981231798e-05, + 6.075043230630343893e-05, + 6.076410124610264379e-05, + 6.077767015599926115e-05, + 6.079113902294685585e-05, + 6.080450783406233460e-05, + 6.081777657662914432e-05, + 6.083094523808987251e-05, + 6.084401380605580171e-05, + 6.085698226829986903e-05, + 6.086985061275843474e-05, + 6.088261882753509048e-05, + 6.089528690089273110e-05, + 6.090785482126100851e-05, + 6.092032257723450889e-05, + 6.093269015756983887e-05, + 6.094495755118769907e-05, + 6.095712474717498476e-05, + 6.096919173477895827e-05, + 6.098115850341481129e-05, + 6.099302504265898347e-05, + 6.100479134225279452e-05, + 6.101645739210306081e-05, + 6.102802318227744692e-05, + 6.103948870300945288e-05, + 6.105085394469813643e-05, + 6.106211889790407431e-05, + 6.107328355335202535e-05, + 6.108434790193413566e-05, + 6.109531193470148181e-05, + 6.110617564287224306e-05, + 6.111693901782916697e-05, + 6.112760205111733331e-05, + 6.113816473444629528e-05, + 6.114862705969005248e-05, + 6.115898901888570916e-05, + 6.116925060423645578e-05, + 6.117941180810740841e-05, + 6.118947262302802106e-05, + 6.119943304169352225e-05, + 6.120929305696033425e-05, + 6.121905266185043702e-05, + 6.122871184955056857e-05, + 6.123827061341040898e-05, + 6.124772894694385426e-05, + 6.125708684382855562e-05, + 6.126634429790610921e-05, + 6.127550130318334357e-05, + 6.128455785382956849e-05, + 6.129351394417872987e-05, + 6.130236956872851524e-05, + 6.131112472214089585e-05, + 6.131977939924082566e-05, + 6.132833359501926353e-05, + 6.133678730462899904e-05, + 6.134514052338799997e-05, + 6.135339324677740655e-05, + 6.136154547044272403e-05, + 6.136959719019307734e-05, + 6.137754840200230881e-05, + 6.138539910200721636e-05, + 6.139314928650884101e-05, + 6.140079895197214155e-05, + 6.140834809502539833e-05, + 6.141579671246201564e-05, + 6.142314480123828562e-05, + 6.143039235847439113e-05, + 6.143753938145467676e-05, + 6.144458586762706614e-05, + 6.145153181460287213e-05, + 6.145837722015854516e-05, + 6.146512208223320665e-05, + 6.147176639893003132e-05, + 6.147831016851604399e-05, + 6.148475338942182135e-05, + 6.149109606024126160e-05, + 6.149733817973380707e-05, + 6.150347974682066304e-05, + 6.150952076058735919e-05, + 6.151546122028342433e-05, + 6.152130112532147837e-05, + 6.152704047527870958e-05, + 6.153267926989569548e-05, + 6.153821750907503406e-05, + 6.154365519288550440e-05, + 6.154899232155796023e-05, + 6.155422889548664458e-05, + 6.155936491523061275e-05, + 6.156440038151174009e-05, + 6.156933529521493886e-05, + 6.157416965738964900e-05, + 6.157890346924772395e-05, + 6.158353673216605980e-05, + 6.158806944768393903e-05, + 6.159250161750331510e-05, + 6.159683324349159075e-05, + 6.160106432767820269e-05, + 6.160519487225596337e-05, + 6.160922487958244331e-05, + 6.161315435217684048e-05, + 6.161698329272235195e-05, + 6.162071170406606554e-05, + 6.162433958921772646e-05, + 6.162786695135068606e-05, + 6.163129379380176626e-05, + 6.163462012006985010e-05, + 6.163784593381887685e-05, + 6.164097123887476559e-05, + 6.164399603922639096e-05, + 6.164692033902773808e-05, + 6.164974414259317265e-05, + 6.165246745440198107e-05, + 6.165509027909622916e-05, + 6.165761262148122292e-05, + 6.166003448652445144e-05, + 6.166235587935798570e-05, + 6.166457680527491427e-05, + 6.166669726973315153e-05, + 6.166871727835272722e-05, + 6.167063683691658598e-05, + 6.167245595137069581e-05, + 6.167417462782429202e-05, + 6.167579287254846773e-05, + 6.167731069197836941e-05, + 6.167872809271124530e-05, + 6.168004508150733991e-05, + 6.168126166529011079e-05, + 6.168237785114469719e-05, + 6.168339364631945140e-05, + 6.168430905822595237e-05, + 6.168512409443789439e-05, + 6.168583876269171046e-05, + 6.168645307088650460e-05, + 6.168696702708376719e-05, + 6.168738063950787644e-05, + 6.168769391654558339e-05, + 6.168790686674614744e-05, + 6.168801949882095684e-05, + 6.168803182164423349e-05, + 6.168794384425265343e-05, + 6.168775557584534682e-05, + 6.168746702578328811e-05, + 6.168707820359020406e-05, + 6.168658911895196384e-05, + 6.168599978171671462e-05, + 6.168531020189481373e-05, + 6.168452038965904554e-05, + 6.168363035534405229e-05, + 6.168264010944678123e-05, + 6.168154966262621368e-05, + 6.168035902570327006e-05, + 6.167906820966148759e-05, + 6.167767722564561079e-05, + 6.167618608496285189e-05, + 6.167459479908249777e-05, + 6.167290337963531369e-05, + 6.167111183841420734e-05, + 6.166922018737380870e-05, + 6.166722843863080891e-05, + 6.166513660446317413e-05, + 6.166294469731120273e-05, + 6.166065272977627840e-05, + 6.165826071462225254e-05, + 6.165576866477388569e-05, + 6.165317659331782333e-05, + 6.165048451350235194e-05, + 6.164769243873710082e-05, + 6.164480038259312344e-05, + 6.164180835880350728e-05, + 6.163871638126201856e-05, + 6.163552446402421360e-05, + 6.163223262130689667e-05, + 6.162884086748810647e-05, + 6.162534921710750911e-05, + 6.162175768486525976e-05, + 6.161806628562331719e-05, + 6.161427503440487460e-05, + 6.161038394639383104e-05, + 6.160639303693526579e-05, + 6.160230232153546541e-05, + 6.159811181586139525e-05, + 6.159382153574153966e-05, + 6.158943149716447900e-05, + 6.158494171628042108e-05, + 6.158035220940011691e-05, + 6.157566299299492855e-05, + 6.157087408369727626e-05, + 6.156598549830020486e-05, + 6.156099725375715332e-05, + 6.155590936718255109e-05, + 6.155072185585123534e-05, + 6.154543473719860001e-05, + 6.154004802882067715e-05, + 6.153456174847358128e-05, + 6.152897591407407855e-05, + 6.152329054369968164e-05, + 6.151750565558747070e-05, + 6.151162126813513686e-05, + 6.150563739990107714e-05, + 6.149955406960297139e-05, + 6.149337129611950350e-05, + 6.148708909848891123e-05, + 6.148070749590939287e-05, + 6.147422650773990674e-05, + 6.146764615349849074e-05, + 6.146096645286369892e-05, + 6.145418742567351723e-05, + 6.144730909192624448e-05, + 6.144033147177959786e-05, + 6.143325458555140410e-05, + 6.142607845371824424e-05, + 6.141880309691740520e-05, + 6.141142853594519925e-05, + 6.140395479175742477e-05, + 6.139638188547005750e-05, + 6.138870983835782746e-05, + 6.138093867185461200e-05, + 6.137306840755442513e-05, + 6.136509906721017069e-05, + 6.135703067273391340e-05, + 6.134886324619728544e-05, + 6.134059680983042933e-05, + 6.133223138602304151e-05, + 6.132376699732392509e-05, + 6.131520366644066457e-05, + 6.130654141623959877e-05, + 6.129778026974667460e-05, + 6.128892025014557687e-05, + 6.127996138077970690e-05, + 6.127090368515090860e-05, + 6.126174718691949558e-05, + 6.125249190990463065e-05, + 6.124313787808440706e-05, + 6.123368511559429005e-05, + 6.122413364672912254e-05, + 6.121448349594239336e-05, + 6.120473468784512591e-05, + 6.119488724720749092e-05, + 6.118494119895701749e-05, + 6.117489656817992128e-05, + 6.116475338012071147e-05, + 6.115451166018155379e-05, + 6.114417143392301588e-05, + 6.113373272706390472e-05, + 6.112319556547985712e-05, + 6.111255997520519644e-05, + 6.110182598243206519e-05, + 6.109099361351008628e-05, + 6.108006289494709480e-05, + 6.106903385340711873e-05, + 6.105790651571357732e-05, + 6.104668090884624531e-05, + 6.103535705994286571e-05, + 6.102393499629841118e-05, + 6.101241474536551768e-05, + 6.100079633475302086e-05, + 6.098907979222767037e-05, + 6.097726514571478047e-05, + 6.096535242329404901e-05, + 6.095334165320423307e-05, + 6.094123286384091283e-05, + 6.092902608375449250e-05, + 6.091672134165584501e-05, + 6.090431866640924434e-05, + 6.089181808703767135e-05, + 6.087921963272069955e-05, + 6.086652333279305181e-05, + 6.085372921674706687e-05, + 6.084083731423280101e-05, + 6.082784765505434176e-05, + 6.081476026917339932e-05, + 6.080157518670854761e-05, + 6.078829243793232404e-05, + 6.077491205327720616e-05, + 6.076143406332776476e-05, + 6.074785849882732494e-05, + 6.073418539067434080e-05, + 6.072041476992337799e-05, + 6.070654666778317572e-05, + 6.069258111562213551e-05, + 6.067851814496024392e-05, + 6.066435778747542864e-05, + 6.065010007500139011e-05, + 6.063574503952482326e-05, + 6.062129271319156355e-05, + 6.060674312830073910e-05, + 6.059209631730628852e-05, + 6.057735231281867537e-05, + 6.056251114760366158e-05, + 6.054757285457991548e-05, + 6.053253746682507656e-05, + 6.051740501756769169e-05, + 6.050217554019374065e-05, + 6.048684906824341746e-05, + 6.047142563541164532e-05, + 6.045590527554820540e-05, + 6.044028802265795364e-05, + 6.042457391089842199e-05, + 6.040876297458414843e-05, + 6.039285524818247566e-05, + 6.037685076631594318e-05, + 6.036074956376091165e-05, + 6.034455167544924343e-05, + 6.032825713646397254e-05, + 6.031186598204529490e-05, + 6.029537824758599430e-05, + 6.027879396863303489e-05, + 6.026211318088817100e-05, + 6.024533592020445735e-05, + 6.022846222259124321e-05, + 6.021149212421062836e-05, + 6.019442566137818819e-05, + 6.017726287056293980e-05, + 6.016000378838841942e-05, + 6.014264845162909778e-05, + 6.012519689721491342e-05, + 6.010764916222841313e-05, + 6.009000528390530079e-05, + 6.007226529963481009e-05, + 6.005442924695754289e-05, + 6.003649716356854567e-05, + 6.001846908731529016e-05, + 6.000034505619831712e-05, + 5.998212510837006402e-05, + 5.996380928213714868e-05, + 5.994539761595650676e-05, + 5.992689014843863082e-05, + 5.990828691834723153e-05, + 5.988958796459706925e-05, + 5.987079332625602079e-05, + 5.985190304254411041e-05, + 5.983291715283191737e-05, + 5.981383569664388281e-05, + 5.979465871365551786e-05, + 5.977538624369442013e-05, + 5.975601832674062603e-05, + 5.973655500292368348e-05, + 5.971699631252659564e-05, + 5.969734229598378129e-05, + 5.967759299388085799e-05, + 5.965774844695471659e-05, + 5.963780869609408368e-05, + 5.961777378233719057e-05, + 5.959764374687516139e-05, + 5.957741863104981081e-05, + 5.955709847635338658e-05, + 5.953668332442961302e-05, + 5.951617321707370462e-05, + 5.949556819622806307e-05, + 5.947486830399165565e-05, + 5.945407358260813640e-05, + 5.943318407447512964e-05, + 5.941219982214044200e-05, + 5.939112086829994149e-05, + 5.936994725580120309e-05, + 5.934867902764453200e-05, + 5.932731622697529967e-05, + 5.930585889709204820e-05, + 5.928430708144325807e-05, + 5.926266082362411589e-05, + 5.924092016738520831e-05, + 5.921908515662090752e-05, + 5.919715583537844464e-05, + 5.917513224785379659e-05, + 5.915301443839322425e-05, + 5.913080245148854262e-05, + 5.910849633178705487e-05, + 5.908609612407923984e-05, + 5.906360187330800840e-05, + 5.904101362456508497e-05, + 5.901833142308751770e-05, + 5.899555531426681969e-05, + 5.897268534364035630e-05, + 5.894972155689189410e-05, + 5.892666399985687275e-05, + 5.890351271851921341e-05, + 5.888026775900713098e-05, + 5.885692916760401682e-05, + 5.883349699073456767e-05, + 5.880997127497543126e-05, + 5.878635206705109980e-05, + 5.876263941383055579e-05, + 5.873883336233576941e-05, + 5.871493395973413626e-05, + 5.869094125333806396e-05, + 5.866685529061125377e-05, + 5.864267611916316439e-05, + 5.861840378675085508e-05, + 5.859403834127862654e-05, + 5.856957983079918642e-05, + 5.854502830350897369e-05, + 5.852038380775468419e-05, + 5.849564639202873732e-05, + 5.847081610497023146e-05, + 5.844589299536660418e-05, + 5.842087711214807573e-05, + 5.839576850439512319e-05, + 5.837056722133289010e-05, + 5.834527331233363271e-05, + 5.831988682691567638e-05, + 5.829440781474423553e-05, + 5.826883632562740889e-05, + 5.824317240952300319e-05, + 5.821741611653299015e-05, + 5.819156749690514635e-05, + 5.816562660103480152e-05, + 5.813959347945876023e-05, + 5.811346818286289127e-05, + 5.808725076207734366e-05, + 5.806094126807775956e-05, + 5.803453975198449502e-05, + 5.800804626506454444e-05, + 5.798146085872682426e-05, + 5.795478358452782442e-05, + 5.792801449416800334e-05, + 5.790115363949287214e-05, + 5.787420107249194431e-05, + 5.784715684530096513e-05, + 5.782002101019658547e-05, + 5.779279361960269767e-05, + 5.776547472608712188e-05, + 5.773806438236115887e-05, + 5.771056264128151446e-05, + 5.768296955584523768e-05, + 5.765528517919591426e-05, + 5.762750956462381569e-05, + 5.759964276555608722e-05, + 5.757168483556838269e-05, + 5.754363582837923347e-05, + 5.751549579784750733e-05, + 5.748726479797840546e-05, + 5.745894288291944415e-05, + 5.743053010696091553e-05, + 5.740202652453613158e-05, + 5.737343219022233211e-05, + 5.734474715873493850e-05, + 5.731597148494033372e-05, + 5.728710522383874550e-05, + 5.725814843057793439e-05, + 5.722910116044769142e-05, + 5.719996346887672102e-05, + 5.717073541143791296e-05, + 5.714141704385036844e-05, + 5.711200842196715541e-05, + 5.708250960178844771e-05, + 5.705292063945596178e-05, + 5.702324159124777281e-05, + 5.699347251359288371e-05, + 5.696361346305227867e-05, + 5.693366449633337017e-05, + 5.690362567028519459e-05, + 5.687349704189330969e-05, + 5.684327866828742471e-05, + 5.681297060674152228e-05, + 5.678257291466310455e-05, + 5.675208564960474670e-05, + 5.672150886926014636e-05, + 5.669084263145849256e-05, + 5.666008699417608024e-05, + 5.662924201552654564e-05, + 5.659830775376043942e-05, + 5.656728426727266018e-05, + 5.653617161459733166e-05, + 5.650496985440399444e-05, + 5.647367904551028433e-05, + 5.644229924686465971e-05, + 5.641083051756039447e-05, + 5.637927291682968945e-05, + 5.634762650403873934e-05, + 5.631589133870142073e-05, + 5.628406748046594959e-05, + 5.625215498911705656e-05, + 5.622015392458255302e-05, + 5.618806434692742230e-05, + 5.615588631635475475e-05, + 5.612361989320836336e-05, + 5.609126513796568230e-05, + 5.605882211124685381e-05, + 5.602629087380829083e-05, + 5.599367148654495375e-05, + 5.596096401048973384e-05, + 5.592816850681443574e-05, + 5.589528503682453269e-05, + 5.586231366196710827e-05, + 5.582925444382561838e-05, + 5.579610744412044686e-05, + 5.576287272470965091e-05, + 5.572955034758965225e-05, + 5.569614037488969415e-05, + 5.566264286888018299e-05, + 5.562905789196673874e-05, + 5.559538550669176698e-05, + 5.556162577573569227e-05, + 5.552777876191115084e-05, + 5.549384452817127117e-05, + 5.545982313760425302e-05, + 5.542571465343389597e-05, + 5.539151913902067682e-05, + 5.535723665786134980e-05, + 5.532286727358543650e-05, + 5.528841104996138543e-05, + 5.525386805089218785e-05, + 5.521923834041622475e-05, + 5.518452198270677896e-05, + 5.514971904207456951e-05, + 5.511482958296014186e-05, + 5.507985366994409327e-05, + 5.504479136773953764e-05, + 5.500964274119514121e-05, + 5.497440785529523783e-05, + 5.493908677515438077e-05, + 5.490367956602415294e-05, + 5.486818629329496931e-05, + 5.483260702248244988e-05, + 5.479694181924250364e-05, + 5.476119074936412539e-05, + 5.472535387876635321e-05, + 5.468943127350614925e-05, + 5.465342299977234852e-05, + 5.461732912388710901e-05, + 5.458114971230630473e-05, + 5.454488483161990518e-05, + 5.450853454854512450e-05, + 5.447209892994314538e-05, + 5.443557804279673017e-05, + 5.439897195422758856e-05, + 5.436228073149008234e-05, + 5.432550444196607549e-05, + 5.428864315317354002e-05, + 5.425169693276650853e-05, + 5.421466584852195538e-05, + 5.417754996835557181e-05, + 5.414034936031414266e-05, + 5.410306409257049128e-05, + 5.406569423343957992e-05, + 5.402823985135706285e-05, + 5.399070101489604408e-05, + 5.395307779276097194e-05, + 5.391537025378267885e-05, + 5.387757846692616724e-05, + 5.383970250129168023e-05, + 5.380174242610100675e-05, + 5.376369831071291792e-05, + 5.372557022461635010e-05, + 5.368735823742442823e-05, + 5.364906241888980730e-05, + 5.361068283889101817e-05, + 5.357221956743271829e-05, + 5.353367267465463638e-05, + 5.349504223082428116e-05, + 5.345632830633898099e-05, + 5.341753097172711719e-05, + 5.337865029764144939e-05, + 5.333968635486887336e-05, + 5.330063921432540657e-05, + 5.326150894704943903e-05, + 5.322229562421791502e-05, + 5.318299931713173700e-05, + 5.314362009721719542e-05, + 5.310415803603339550e-05, + 5.306461320526676166e-05, + 5.302498567673157286e-05, + 5.298527552237189387e-05, + 5.294548281425475827e-05, + 5.290560762457995346e-05, + 5.286565002567314946e-05, + 5.282561008998793182e-05, + 5.278548789010471744e-05, + 5.274528349873357344e-05, + 5.270499698870626865e-05, + 5.266462843298663451e-05, + 5.262417790466380232e-05, + 5.258364547695366020e-05, + 5.254303122319859553e-05, + 5.250233521686951434e-05, + 5.246155753155838734e-05, + 5.242069824098837373e-05, + 5.237975741900728887e-05, + 5.233873513958883750e-05, + 5.229763147683444343e-05, + 5.225644650496555837e-05, + 5.221518029833503260e-05, + 5.217383293141903761e-05, + 5.213240447881929549e-05, + 5.209089501526246232e-05, + 5.204930461560219488e-05, + 5.200763335481179848e-05, + 5.196588130799447260e-05, + 5.192404855037639235e-05, + 5.188213515730814504e-05, + 5.184014120426516388e-05, + 5.179806676684827680e-05, + 5.175591192077747237e-05, + 5.171367674190182695e-05, + 5.167136130619287755e-05, + 5.162896568974519778e-05, + 5.158648996877941332e-05, + 5.154393421963398230e-05, + 5.150129851877397732e-05, + 5.145858294279344363e-05, + 5.141578756839828901e-05, + 5.137291247242481689e-05, + 5.132995773183199464e-05, + 5.128692342369593765e-05, + 5.124380962522059554e-05, + 5.120061641373086745e-05, + 5.115734386667338131e-05, + 5.111399206161877071e-05, + 5.107056107625442421e-05, + 5.102705098839286090e-05, + 5.098346187597392582e-05, + 5.093979381704780195e-05, + 5.089604688979386849e-05, + 5.085222117251211535e-05, + 5.080831674361856241e-05, + 5.076433368165368242e-05, + 5.072027206528446094e-05, + 5.067613197328755062e-05, + 5.063191348456721466e-05, + 5.058761667814839477e-05, + 5.054324163316893198e-05, + 5.049878842889982090e-05, + 5.045425714471856544e-05, + 5.040964786013076124e-05, + 5.036496065476112386e-05, + 5.032019560834854213e-05, + 5.027535280075487374e-05, + 5.023043231196741858e-05, + 5.018543422208085318e-05, + 5.014035861131655667e-05, + 5.009520556001493326e-05, + 5.004997514862714517e-05, + 5.000466745773681702e-05, + 4.995928256803195501e-05, + 4.991382056032732888e-05, + 4.986828151555350118e-05, + 4.982266551475881270e-05, + 4.977697263910987711e-05, + 4.973120296989303114e-05, + 4.968535658850616911e-05, + 4.963943357647037784e-05, + 4.959343401542415646e-05, + 4.954735798711573213e-05, + 4.950120557342138308e-05, + 4.945497685632898580e-05, + 4.940867191793882145e-05, + 4.936229084047363862e-05, + 4.931583370627130782e-05, + 4.926930059778505868e-05, + 4.922269159758699004e-05, + 4.917600678835871872e-05, + 4.912924625290432216e-05, + 4.908241007414294556e-05, + 4.903549833510155123e-05, + 4.898851111893471206e-05, + 4.894144850890620724e-05, + 4.889431058839030969e-05, + 4.884709744088357002e-05, + 4.879980914999426585e-05, + 4.875244579944576289e-05, + 4.870500747307619641e-05, + 4.865749425483952836e-05, + 4.860990622879858135e-05, + 4.856224347913574519e-05, + 4.851450609014597694e-05, + 4.846669414623747184e-05, + 4.841880773193444151e-05, + 4.837084693186866400e-05, + 4.832281183079072557e-05, + 4.827470251356308860e-05, + 4.822651906516097929e-05, + 4.817826157067265865e-05, + 4.812993011530112343e-05, + 4.808152478435579835e-05, + 4.803304566326498413e-05, + 4.798449283756689248e-05, + 4.793586639291215332e-05, + 4.788716641506554953e-05, + 4.783839298989735683e-05, + 4.778954620339582570e-05, + 4.774062614165883981e-05, + 4.769163289089560324e-05, + 4.764256653742650506e-05, + 4.759342716768557224e-05, + 4.754421486821094905e-05, + 4.749492972565606434e-05, + 4.744557182679143400e-05, + 4.739614125848544353e-05, + 4.734663810772506978e-05, + 4.729706246160753942e-05, + 4.724741440733436584e-05, + 4.719769403222239440e-05, + 4.714790142369683649e-05, + 4.709803666929217753e-05, + 4.704809985665484002e-05, + 4.699809107353350028e-05, + 4.694801040779088595e-05, + 4.689785794740507018e-05, + 4.684763378044977991e-05, + 4.679733799511634409e-05, + 4.674697067970424763e-05, + 4.669653192261554776e-05, + 4.664602181236637330e-05, + 4.659544043757920655e-05, + 4.654478788698406232e-05, + 4.649406424941905717e-05, + 4.644326961383194759e-05, + 4.639240406926932187e-05, + 4.634146770490029673e-05, + 4.629046060998588853e-05, + 4.623938287390268285e-05, + 4.618823458613448605e-05, + 4.613701583626481046e-05, + 4.608572671398844821e-05, + 4.603436730911279257e-05, + 4.598293771153844436e-05, + 4.593143801128104500e-05, + 4.587986829846197272e-05, + 4.582822866329944536e-05, + 4.577651919613282000e-05, + 4.572473998739161869e-05, + 4.567289112761907597e-05, + 4.562097270746171695e-05, + 4.556898481767094299e-05, + 4.551692754910275382e-05, + 4.546480099272047845e-05, + 4.541260523958478689e-05, + 4.536034038086756120e-05, + 4.530800650784498368e-05, + 4.525560371188807723e-05, + 4.520313208448535158e-05, + 4.515059171722218996e-05, + 4.509798270178332237e-05, + 4.504530512996331529e-05, + 4.499255909365747110e-05, + 4.493974468486487748e-05, + 4.488686199568911884e-05, + 4.483391111833005674e-05, + 4.478089214509714528e-05, + 4.472780516840170608e-05, + 4.467465028074883753e-05, + 4.462142757475901064e-05, + 4.456813714314795716e-05, + 4.451477907872872952e-05, + 4.446135347442267162e-05, + 4.440786042325054871e-05, + 4.435430001833418724e-05, + 4.430067235289673910e-05, + 4.424697752026468067e-05, + 4.419321561385814985e-05, + 4.413938672720524396e-05, + 4.408549095393186212e-05, + 4.403152838776465975e-05, + 4.397749912253260025e-05, + 4.392340325215750898e-05, + 4.386924087066852018e-05, + 4.381501207219164158e-05, + 4.376071695095274267e-05, + 4.370635560127684327e-05, + 4.365192811759077652e-05, + 4.359743459441318720e-05, + 4.354287512636882278e-05, + 4.348824980817860627e-05, + 4.343355873466213661e-05, + 4.337880200073978936e-05, + 4.332397970142295204e-05, + 4.326909193182840342e-05, + 4.321413878716809490e-05, + 4.315912036275221334e-05, + 4.310403675398817146e-05, + 4.304888805638325055e-05, + 4.299367436553502560e-05, + 4.293839577714253259e-05, + 4.288305238700928395e-05, + 4.282764429102093397e-05, + 4.277217158516957170e-05, + 4.271663436554340752e-05, + 4.266103272831998325e-05, + 4.260536676977995515e-05, + 4.254963658629763419e-05, + 4.249384227434295123e-05, + 4.243798393048399127e-05, + 4.238206165137700529e-05, + 4.232607553377828904e-05, + 4.227002567454658181e-05, + 4.221391217062088095e-05, + 4.215773511904484321e-05, + 4.210149461695664066e-05, + 4.204519076158156103e-05, + 4.198882365024631235e-05, + 4.193239338036977343e-05, + 4.187590004946416608e-05, + 4.181934375513587509e-05, + 4.176272459508709482e-05, + 4.170604266710370650e-05, + 4.164929806908234939e-05, + 4.159249089899490638e-05, + 4.153562125491688296e-05, + 4.147868923501579275e-05, + 4.142169493754215860e-05, + 4.136463846085390036e-05, + 4.130751990339349207e-05, + 4.125033936369073352e-05, + 4.119309694037468319e-05, + 4.113579273216628568e-05, + 4.107842683786813959e-05, + 4.102099935639138569e-05, + 4.096351038672117512e-05, + 4.090596002794380151e-05, + 4.084834837923629269e-05, + 4.079067553985646306e-05, + 4.073294160916765381e-05, + 4.067514668661633055e-05, + 4.061729087173388577e-05, + 4.055937426414943250e-05, + 4.050139696358184214e-05, + 4.044335906982984434e-05, + 4.038526068279674007e-05, + 4.032710190246738941e-05, + 4.026888282891137605e-05, + 4.021060356229425590e-05, + 4.015226420286828718e-05, + 4.009386485097436162e-05, + 4.003540560704443039e-05, + 3.997688657159101443e-05, + 3.991830784522264756e-05, + 3.985966952863589404e-05, + 3.980097172260458786e-05, + 3.974221452800600268e-05, + 3.968339804579691806e-05, + 3.962452237701641128e-05, + 3.956558762279840019e-05, + 3.950659388436126202e-05, + 3.944754126300989330e-05, + 3.938842986013887444e-05, + 3.932925977722093647e-05, + 3.927003111582331898e-05, + 3.921074397759654185e-05, + 3.915139846427712251e-05, + 3.909199467768719648e-05, + 3.903253271973721432e-05, + 3.897301269241528935e-05, + 3.891343469780257300e-05, + 3.885379883806239920e-05, + 3.879410521544343540e-05, + 3.873435393227863896e-05, + 3.867454509098854369e-05, + 3.861467879406963854e-05, + 3.855475514411103719e-05, + 3.849477424378301943e-05, + 3.843473619583958576e-05, + 3.837464110312120182e-05, + 3.831448906854386147e-05, + 3.825428019511476033e-05, + 3.819401458592165698e-05, + 3.813369234413507532e-05, + 3.807331357300893469e-05, + 3.801287837588158671e-05, + 3.795238685616644363e-05, + 3.789183911736695396e-05, + 3.783123526306602464e-05, + 3.777057539692839957e-05, + 3.770985962270073411e-05, + 3.764908804421367541e-05, + 3.758826076537150827e-05, + 3.752737789016746275e-05, + 3.746643952267346840e-05, + 3.740544576704192970e-05, + 3.734439672750889056e-05, + 3.728329250838258917e-05, + 3.722213321405743071e-05, + 3.716091894901530870e-05, + 3.709964981780268089e-05, + 3.703832592505610901e-05, + 3.697694737549184365e-05, + 3.691551427389763853e-05, + 3.685402672514832915e-05, + 3.679248483419538375e-05, + 3.673088870606917340e-05, + 3.666923844588133689e-05, + 3.660753415881394551e-05, + 3.654577595013297421e-05, + 3.648396392519067337e-05, + 3.642209818940099801e-05, + 3.636017884826670606e-05, + 3.629820600736792687e-05, + 3.623617977235169181e-05, + 3.617410024895851759e-05, + 3.611196754299792361e-05, + 3.604978176035092565e-05, + 3.598754300698335794e-05, + 3.592525138893767396e-05, + 3.586290701232186040e-05, + 3.580050998333923924e-05, + 3.573806040825016147e-05, + 3.567555839340139578e-05, + 3.561300404521584216e-05, + 3.555039747018059896e-05, + 3.548773877487464384e-05, + 3.542502806594403952e-05, + 3.536226545010389202e-05, + 3.529945103415302814e-05, + 3.523658492496407494e-05, + 3.517366722947356644e-05, + 3.511069805471132545e-05, + 3.504767750776223873e-05, + 3.498460569579579468e-05, + 3.492148272605234108e-05, + 3.485830870584611410e-05, + 3.479508374256436414e-05, + 3.473180794367035097e-05, + 3.466848141669214928e-05, + 3.460510426923868818e-05, + 3.454167660899155862e-05, + 3.447819854369373098e-05, + 3.441467018117718861e-05, + 3.435109162933740846e-05, + 3.428746299613631552e-05, + 3.422378438961574048e-05, + 3.416005591788644219e-05, + 3.409627768913040479e-05, + 3.403244981160348048e-05, + 3.396857239362428322e-05, + 3.390464554359041109e-05, + 3.384066936996744842e-05, + 3.377664398129111387e-05, + 3.371256948616762635e-05, + 3.364844599327596151e-05, + 3.358427361135653537e-05, + 3.352005244922781976e-05, + 3.345578261577503946e-05, + 3.339146421995286916e-05, + 3.332709737078481688e-05, + 3.326268217736626643e-05, + 3.319821874885300526e-05, + 3.313370719447795499e-05, + 3.306914762353924526e-05, + 3.300454014540339854e-05, + 3.293988486950806093e-05, + 3.287518190534992015e-05, + 3.281043136250185621e-05, + 3.274563335060134723e-05, + 3.268078797935341037e-05, + 3.261589535852984963e-05, + 3.255095559797240685e-05, + 3.248596880758114036e-05, + 3.242093509733096589e-05, + 3.235585457726027243e-05, + 3.229072735747397157e-05, + 3.222555354814267073e-05, + 3.216033325950586486e-05, + 3.209506660185959006e-05, + 3.202975368557473977e-05, + 3.196439462108389181e-05, + 3.189898951888494715e-05, + 3.183353848954365072e-05, + 3.176804164368161095e-05, + 3.170249909199088911e-05, + 3.163691094523641162e-05, + 3.157127731422990178e-05, + 3.150559830985876018e-05, + 3.143987404307395557e-05, + 3.137410462488133764e-05, + 3.130829016635922144e-05, + 3.124243077864563448e-05, + 3.117652657294209105e-05, + 3.111057766051563193e-05, + 3.104458415268733181e-05, + 3.097854616084646173e-05, + 3.091246379645324694e-05, + 3.084633717101262928e-05, + 3.078016639610316115e-05, + 3.071395158336485563e-05, + 3.064769284448791084e-05, + 3.058139029124093980e-05, + 3.051504403544548494e-05, + 3.044865418897774263e-05, + 3.038222086378370476e-05, + 3.031574417186985832e-05, + 3.024922422529150988e-05, + 3.018266113618433590e-05, + 3.011605501672380981e-05, + 3.004940597915711827e-05, + 2.998271413579059114e-05, + 2.991597959897887305e-05, + 2.984920248115287549e-05, + 2.978238289479421332e-05, + 2.971552095243751551e-05, + 2.964861676668461801e-05, + 2.958167045019621200e-05, + 2.951468211567925023e-05, + 2.944765187591976782e-05, + 2.938057984374079152e-05, + 2.931346613203503855e-05, + 2.924631085374998173e-05, + 2.917911412189028557e-05, + 2.911187604951771135e-05, + 2.904459674975437314e-05, + 2.897727633577001200e-05, + 2.890991492079992593e-05, + 2.884251261813588634e-05, + 2.877506954111401863e-05, + 2.870758580314426546e-05, + 2.864006151768365435e-05, + 2.857249679823899125e-05, + 2.850489175838116185e-05, + 2.843724651173382199e-05, + 2.836956117197526113e-05, + 2.830183585284210899e-05, + 2.823407066811639622e-05, + 2.816626573164396219e-05, + 2.809842115732176301e-05, + 2.803053705910110379e-05, + 2.796261355098708643e-05, + 2.789465074704161821e-05, + 2.782664876137141109e-05, + 2.775860770814521711e-05, + 2.769052770158226469e-05, + 2.762240885595466420e-05, + 2.755425128558739445e-05, + 2.748605510486105380e-05, + 2.741782042819968662e-05, + 2.734954737008851678e-05, + 2.728123604506207226e-05, + 2.721288656770627897e-05, + 2.714449905266228940e-05, + 2.707607361461324513e-05, + 2.700761036830310132e-05, + 2.693910942852332155e-05, + 2.687057091011680118e-05, + 2.680199492797668502e-05, + 2.673338159705013480e-05, + 2.666473103232535612e-05, + 2.659604334884960294e-05, + 2.652731866171736993e-05, + 2.645855708607272011e-05, + 2.638975873711233084e-05, + 2.632092373007325243e-05, + 2.625205218025067553e-05, + 2.618314420298589989e-05, + 2.611419991366880429e-05, + 2.604521942773819891e-05, + 2.597620286068409536e-05, + 2.590715032803569918e-05, + 2.583806194537622951e-05, + 2.576893782834605985e-05, + 2.569977809261475251e-05, + 2.563058285391161268e-05, + 2.556135222801317612e-05, + 2.549208633073082894e-05, + 2.542278527794429921e-05, + 2.535344918555843465e-05, + 2.528407816953698564e-05, + 2.521467234588981162e-05, + 2.514523183066378064e-05, + 2.507575673995784645e-05, + 2.500624718992586413e-05, + 2.493670329674869891e-05, + 2.486712517666492950e-05, + 2.479751294595828142e-05, + 2.472786672094503001e-05, + 2.465818661800774276e-05, + 2.458847275355204682e-05, + 2.451872524404034425e-05, + 2.444894420597601317e-05, + 2.437912975590933700e-05, + 2.430928201042235274e-05, + 2.423940108616213935e-05, + 2.416948709979747676e-05, + 2.409954016805282548e-05, + 2.402956040769559397e-05, + 2.395954793552368387e-05, + 2.388950286839604758e-05, + 2.381942532320491571e-05, + 2.374931541687861605e-05, + 2.367917326639662362e-05, + 2.360899898878021281e-05, + 2.353879270108014493e-05, + 2.346855452041017004e-05, + 2.339828456390366905e-05, + 2.332798294874744693e-05, + 2.325764979216919662e-05, + 2.318728521142481046e-05, + 2.311688932382945620e-05, + 2.304646224672895059e-05, + 2.297600409750337458e-05, + 2.290551499358175745e-05, + 2.283499505243305762e-05, + 2.276444439155299296e-05, + 2.269386312849548269e-05, + 2.262325138084422769e-05, + 2.255260926621545831e-05, + 2.248193690227375690e-05, + 2.241123440671880012e-05, + 2.234050189728881814e-05, + 2.226973949176324762e-05, + 2.219894730795009393e-05, + 2.212812546370449815e-05, + 2.205727407691597053e-05, + 2.198639326551145683e-05, + 2.191548314745508076e-05, + 2.184454384075102391e-05, + 2.177357546343078638e-05, + 2.170257813357205867e-05, + 2.163155196928549443e-05, + 2.156049708871812565e-05, + 2.148941361005609694e-05, + 2.141830165151185835e-05, + 2.134716133134288482e-05, + 2.127599276783915025e-05, + 2.120479607932548226e-05, + 2.113357138416189419e-05, + 2.106231880074639732e-05, + 2.099103844750210894e-05, + 2.091973044289603963e-05, + 2.084839490542638092e-05, + 2.077703195362517178e-05, + 2.070564170605843754e-05, + 2.063422428132893766e-05, + 2.056277979806342293e-05, + 2.049130837493131770e-05, + 2.041981013063208885e-05, + 2.034828518389788181e-05, + 2.027673365349673249e-05, + 2.020515565821974659e-05, + 2.013355131689966655e-05, + 2.006192074839816268e-05, + 1.999026407160886217e-05, + 1.991858140545698652e-05, + 1.984687286890231278e-05, + 1.977513858092667476e-05, + 1.970337866055233344e-05, + 1.963159322682927490e-05, + 1.955978239883817150e-05, + 1.948794629569024643e-05, + 1.941608503653010948e-05, + 1.934419874051992777e-05, + 1.927228752687391351e-05, + 1.920035151481375312e-05, + 1.912839082360340675e-05, + 1.905640557253604700e-05, + 1.898439588092460948e-05, + 1.891236186811710710e-05, + 1.884030365349997419e-05, + 1.876822135646908442e-05, + 1.869611509646135189e-05, + 1.862398499294172074e-05, + 1.855183116539052736e-05, + 1.847965373333799500e-05, + 1.840745281631963920e-05, + 1.833522853391116888e-05, + 1.826298100571212168e-05, + 1.819071035135228452e-05, + 1.811841669047530175e-05, + 1.804610014277389820e-05, + 1.797376082794472217e-05, + 1.790139886572327365e-05, + 1.782901437587121918e-05, + 1.775660747816310020e-05, + 1.768417829241816794e-05, + 1.761172693847158768e-05, + 1.753925353617717976e-05, + 1.746675820542347931e-05, + 1.739424106612369385e-05, + 1.732170223820281819e-05, + 1.724914184163273890e-05, + 1.717655999638700612e-05, + 1.710395682247614467e-05, + 1.703133243993430480e-05, + 1.695868696880647542e-05, + 1.688602052918033587e-05, + 1.681333324115705369e-05, + 1.674062522485449985e-05, + 1.666789660042284442e-05, + 1.659514748803186119e-05, + 1.652237800787357720e-05, + 1.644958828016224563e-05, + 1.637677842513736803e-05, + 1.630394856305072453e-05, + 1.623109881418522202e-05, + 1.615822929884210736e-05, + 1.608534013734369821e-05, + 1.601243145003676096e-05, + 1.593950335727902602e-05, + 1.586655597945870681e-05, + 1.579358943698114037e-05, + 1.572060385027186378e-05, + 1.564759933977654980e-05, + 1.557457602596385964e-05, + 1.550153402931249696e-05, + 1.542847347033029316e-05, + 1.535539446954101067e-05, + 1.528229714748749723e-05, + 1.520918162473476915e-05, + 1.513604802185672473e-05, + 1.506289645945537697e-05, + 1.498972705814790416e-05, + 1.491653993856947387e-05, + 1.484333522137307694e-05, + 1.477011302723271233e-05, + 1.469687347682994975e-05, + 1.462361669087354363e-05, + 1.455034279008600079e-05, + 1.447705189520665184e-05, + 1.440374412699157830e-05, + 1.433041960621660942e-05, + 1.425707845366401022e-05, + 1.418372079014196999e-05, + 1.411034673647123953e-05, + 1.403695641348826684e-05, + 1.396354994204828037e-05, + 1.389012744301203118e-05, + 1.381668903726184429e-05, + 1.374323484570475435e-05, + 1.366976498924286120e-05, + 1.359627958880587458e-05, + 1.352277876533779366e-05, + 1.344926263978680872e-05, + 1.337573133312503196e-05, + 1.330218496633488398e-05, + 1.322862366041223625e-05, + 1.315504753636635181e-05, + 1.308145671522290416e-05, + 1.300785131800727709e-05, + 1.293423146578054497e-05, + 1.286059727959341956e-05, + 1.278694888052195080e-05, + 1.271328638965438078e-05, + 1.263960992808098957e-05, + 1.256591961691037179e-05, + 1.249221557727239614e-05, + 1.241849793028872525e-05, + 1.234476679710512324e-05, + 1.227102229887835888e-05, + 1.219726455676287160e-05, + 1.212349369194646205e-05, + 1.204970982560438127e-05, + 1.197591307893514828e-05, + 1.190210357314719578e-05, + 1.182828142944888869e-05, + 1.175444676906456868e-05, + 1.168059971323793213e-05, + 1.160674038320207902e-05, + 1.153286890021214066e-05, + 1.145898538553205583e-05, + 1.138508996042112833e-05, + 1.131118274616673430e-05, + 1.123726386405453554e-05, + 1.116333343537168289e-05, + 1.108939158142281844e-05, + 1.101543842352016353e-05, + 1.094147408297026267e-05, + 1.086749868110968601e-05, + 1.079351233925904052e-05, + 1.071951517875888077e-05, + 1.064550732095617680e-05, + 1.057148888719136798e-05, + 1.049745999883059439e-05, + 1.042342077723615734e-05, + 1.034937134376961105e-05, + 1.027531181980788510e-05, + 1.020124232673004357e-05, + 1.012716298592030223e-05, + 1.005307391877121670e-05, + 9.978975246670189275e-06, + 9.904867091019113273e-06, + 9.830749573220974697e-06, + 9.756622814682974380e-06, + 9.682486936816250166e-06, + 9.608342061039104105e-06, + 9.534188308763492272e-06, + 9.460025801414730150e-06, + 9.385854660417980753e-06, + 9.311675007201393735e-06, + 9.237486963196005438e-06, + 9.163290649838673013e-06, + 9.089086188558833605e-06, + 9.014873700798009822e-06, + 8.940653307996457113e-06, + 8.866425131596230024e-06, + 8.792189293044267093e-06, + 8.717945913779141562e-06, + 8.643695115250436405e-06, + 8.569437018905508595e-06, + 8.495171746192528255e-06, + 8.420899418560324502e-06, + 8.346620157461431374e-06, + 8.272334084338743673e-06, + 8.198041320645108840e-06, + 8.123741987829830328e-06, + 8.049436207341947318e-06, + 7.975124100629894208e-06, + 7.900805789144654966e-06, + 7.826481394326386784e-06, + 7.752151037624018727e-06, + 7.677814840481748336e-06, + 7.603472924342321334e-06, + 7.529125410649969992e-06, + 7.454772420837168064e-06, + 7.380414076340740516e-06, + 7.306050498605244876e-06, + 7.231681809052727926e-06, + 7.157308129115840451e-06, + 7.082929580224231354e-06, + 7.008546283794550969e-06, + 6.934158361250052251e-06, + 6.859765934007147518e-06, + 6.785369123478534849e-06, + 6.710968051076301612e-06, + 6.636562838198548118e-06, + 6.562153606245585436e-06, + 6.487740476623276090e-06, + 6.413323570712811072e-06, + 6.338903009903778861e-06, + 6.264478915580684044e-06, + 6.190051409112774450e-06, + 6.115620611870460037e-06, + 6.041186645228358825e-06, + 5.966749630535358510e-06, + 5.892309689147525396e-06, + 5.817866942414632330e-06, + 5.743421511666728997e-06, + 5.668973518250400015e-06, + 5.594523083482122211e-06, + 5.520070328684627755e-06, + 5.445615375173329602e-06, + 5.371158344246281615e-06, + 5.296699357200485643e-06, + 5.222238535335020458e-06, + 5.147775999921077121e-06, + 5.073311872234817927e-06, + 4.998846273543973808e-06, + 4.924379325094392598e-06, + 4.849911148146261551e-06, + 4.775441863927556108e-06, + 4.700971593670263255e-06, + 4.626500458593652626e-06, + 4.552028579907348693e-06, + 4.477556078811179142e-06, + 4.403083076498252995e-06, + 4.328609694141540220e-06, + 4.254136052913538984e-06, + 4.179662273976135829e-06, + 4.105188478467183583e-06, + 4.030714787533384025e-06, + 3.956241322300365605e-06, + 3.881768203875683628e-06, + 3.807295553365284038e-06, + 3.732823491859994088e-06, + 3.658352140438677112e-06, + 3.583881620171360200e-06, + 3.509412052105704109e-06, + 3.434943557286811137e-06, + 3.360476256743675132e-06, + 3.286010271492316783e-06, + 3.211545722535647676e-06, + 3.137082730866524691e-06, + 3.062621417454306322e-06, + 2.988161903264564824e-06, + 2.913704309245637449e-06, + 2.839248756331712611e-06, + 2.764795365442668103e-06, + 2.690344257487148367e-06, + 2.615895553349176713e-06, + 2.541449373907761595e-06, + 2.467005840023537203e-06, + 2.392565072541789491e-06, + 2.318127192295662195e-06, + 2.243692320092630141e-06, + 2.169260576734230031e-06, + 2.094832083002617183e-06, + 2.020406959663640260e-06, + 1.945985327466697273e-06, + 1.871567307147821114e-06, + 1.797153019416236293e-06, + 1.722742584974050973e-06, + 1.648336124502813075e-06, + 1.573933758666601945e-06, + 1.499535608111876107e-06, + 1.425141793470559209e-06, + 1.350752435346585752e-06, + 1.276367654335633788e-06, + 1.201987571011621724e-06, + 1.127612305929852938e-06, + 1.053241979630146831e-06, + 9.788767126233525880e-07, + 9.045166254077641376e-07, + 8.301618384722171231e-07, + 7.558124722660700523e-07, + 6.814686472321585381e-07, + 6.071304837933372153e-07, + 5.327981023423457334e-07, + 4.584716232615025361e-07, + 3.841511669092464616e-07, + 3.098368536232672175e-07, + 2.355288037236152881e-07, + 1.612271374992593367e-07, + 8.693197522445902184e-08, + 1.264343716188515174e-08, +-6.163835646739932505e-08, +-1.359132854509930138e-07, +-2.101812295986069765e-07, +-2.844420687521974531e-07, +-3.586956827695919633e-07, +-4.329419515213712725e-07, +-5.071807549208811456e-07, +-5.814119728912935649e-07, +-6.556354853790528488e-07, +-7.298511723673194412e-07, +-8.040589138397264302e-07, +-8.782585898269425378e-07, +-9.524500803704391205e-07, +-1.026633265535920830e-06, +-1.100808025423458138e-06, +-1.174974240151125627e-06, +-1.249131789851878658e-06, +-1.323280554703553903e-06, +-1.397420414895939460e-06, +-1.471551250644230601e-06, +-1.545672942202440849e-06, +-1.619785369827193646e-06, +-1.693888413824265545e-06, +-1.767981954512357551e-06, +-1.842065872239827623e-06, +-1.916140047381596670e-06, +-1.990204360339313518e-06, +-2.064258691538280597e-06, +-2.138302921440825418e-06, +-2.212336930526680749e-06, +-2.286360599303100730e-06, +-2.360373808318248650e-06, +-2.434376438128364681e-06, +-2.508368369327683080e-06, +-2.582349482545334594e-06, +-2.656319658429009306e-06, +-2.730278777658352042e-06, +-2.804226720941864769e-06, +-2.878163369013813656e-06, +-2.952088602647572382e-06, +-3.026002302636062878e-06, +-3.099904349801815110e-06, +-3.173794625010402718e-06, +-3.247673009137542560e-06, +-3.321539383099110175e-06, +-3.395393627847911314e-06, +-3.469235624357469731e-06, +-3.543065253635342963e-06, +-3.616882396720062002e-06, +-3.690686934681309169e-06, +-3.764478748616809506e-06, +-3.838257719665702461e-06, +-3.912023728988947895e-06, +-3.985776657782737584e-06, +-4.059516387275354417e-06, +-4.133242798724046420e-06, +-4.206955773428498819e-06, +-4.280655192711115956e-06, +-4.354340937930511138e-06, +-4.428012890478297229e-06, +-4.501670931779380570e-06, +-4.575314943288787992e-06, +-4.648944806505032152e-06, +-4.722560402950587423e-06, +-4.796161614185200167e-06, +-4.869748321802841959e-06, +-4.943320407428518816e-06, +-5.016877752731761041e-06, +-5.090420239406883119e-06, +-5.163947749186539639e-06, +-5.237460163838469290e-06, +-5.310957365165750672e-06, +-5.384439235003700458e-06, +-5.457905655233202307e-06, +-5.531356507764454840e-06, +-5.604791674533896911e-06, +-5.678211037533938466e-06, +-5.751614478780296408e-06, +-5.825001880325406518e-06, +-5.898373124268320191e-06, +-5.971728092735311610e-06, +-6.045066667893144831e-06, +-6.118388731945977869e-06, +-6.191694167132315929e-06, +-6.264982855738218338e-06, +-6.338254680081234567e-06, +-6.411509522507193975e-06, +-6.484747265419953609e-06, +-6.557967791248774728e-06, +-6.631170982461669499e-06, +-6.704356721575364651e-06, +-6.777524891135882392e-06, +-6.850675373731770221e-06, +-6.923808051991103275e-06, +-6.996922808581563105e-06, +-7.070019526207414615e-06, +-7.143098087626100286e-06, +-7.216158375612303952e-06, +-7.289200273004070054e-06, +-7.362223662666931793e-06, +-7.435228427507220560e-06, +-7.508214450482062616e-06, +-7.581181614583168578e-06, +-7.654129802833791723e-06, +-7.727058898318360590e-06, +-7.799968784149877523e-06, +-7.872859343483362788e-06, +-7.945730459528832802e-06, +-8.018582015515916185e-06, +-8.091413894739391943e-06, +-8.164225980523690315e-06, +-8.237018156236099718e-06, +-8.309790305299968592e-06, +-8.382542311162245413e-06, +-8.455274057323079100e-06, +-8.527985427332722266e-06, +-8.600676304775407098e-06, +-8.673346573279338650e-06, +-8.745996116529822163e-06, +-8.818624818237028376e-06, +-8.891232562165317808e-06, +-8.963819232130286306e-06, +-9.036384711982666339e-06, +-9.108928885621472949e-06, +-9.181451636990998474e-06, +-9.253952850077629404e-06, +-9.326432408923227804e-06, +-9.398890197605669887e-06, +-9.471326100248756295e-06, +-9.543740001035510523e-06, +-9.616131784175813786e-06, +-9.688501333935814003e-06, +-9.760848534634866314e-06, +-9.833173270629532630e-06, +-9.905475426326661512e-06, +-9.977754886180365961e-06, +-1.005001153468904017e-05, +-1.012224525640837840e-05, +-1.019445593593220497e-05, +-1.026664345790559307e-05, +-1.033880770702177480e-05, +-1.041094856802240543e-05, +-1.048306592569443447e-05, +-1.055515966488324993e-05, +-1.062722967047343883e-05, +-1.069927582740203813e-05, +-1.077129802065521780e-05, +-1.084329613526874160e-05, +-1.091527005632472123e-05, +-1.098721966896481310e-05, +-1.105914485837106185e-05, +-1.113104550977887183e-05, +-1.120292150847403057e-05, +-1.127477273978973237e-05, +-1.134659908911954293e-05, +-1.141840044189827678e-05, +-1.149017668361515675e-05, +-1.156192769981054446e-05, +-1.163365337607645019e-05, +-1.170535359805320405e-05, +-1.177702825144276970e-05, +-1.184867722198928452e-05, +-1.192030039549241232e-05, +-1.199189765780420927e-05, +-1.206346889482929674e-05, +-1.213501399252173228e-05, +-1.220653283689823189e-05, +-1.227802531401899147e-05, +-1.234949131000066674e-05, +-1.242093071101332390e-05, +-1.249234340327758860e-05, +-1.256372927307741402e-05, +-1.263508820674443793e-05, +-1.270642009065483677e-05, +-1.277772481125835349e-05, +-1.284900225504651011e-05, +-1.292025230856557575e-05, +-1.299147485842623471e-05, +-1.306266979128476030e-05, +-1.313383699385582534e-05, +-1.320497635290954607e-05, +-1.327608775527170571e-05, +-1.334717108782068315e-05, +-1.341822623750361774e-05, +-1.348925309130143187e-05, +-1.356025153627375423e-05, +-1.363122145952398650e-05, +-1.370216274821219345e-05, +-1.377307528956808630e-05, +-1.384395897085923526e-05, +-1.391481367942022270e-05, +-1.398563930264915338e-05, +-1.405643572799228926e-05, +-1.412720284295371586e-05, +-1.419794053510805284e-05, +-1.426864869206586622e-05, +-1.433932720151821557e-05, +-1.440997595120210185e-05, +-1.448059482891292892e-05, +-1.455118372251783756e-05, +-1.462174251992383670e-05, +-1.469227110910659237e-05, +-1.476276937810765452e-05, +-1.483323721501832611e-05, +-1.490367450798996476e-05, +-1.497408114524628502e-05, +-1.504445701505204864e-05, +-1.511480200574184509e-05, +-1.518511600571702358e-05, +-1.525539890343001282e-05, +-1.532565058739711962e-05, +-1.539587094619566092e-05, +-1.546605986846101604e-05, +-1.553621724289921195e-05, +-1.560634295826823941e-05, +-1.567643690338791238e-05, +-1.574649896715238725e-05, +-1.581652903849885305e-05, +-1.588652700643626621e-05, +-1.595649276004218269e-05, +-1.602642618844721996e-05, +-1.609632718084785740e-05, +-1.616619562650342760e-05, +-1.623603141473322294e-05, +-1.630583443492919090e-05, +-1.637560457653719088e-05, +-1.644534172906987257e-05, +-1.651504578210363333e-05, +-1.658471662527876052e-05, +-1.665435414829643978e-05, +-1.672395824093169433e-05, +-1.679352879301446898e-05, +-1.686306569444250168e-05, +-1.693256883517826742e-05, +-1.700203810524933735e-05, +-1.707147339474514991e-05, +-1.714087459382997384e-05, +-1.721024159272402268e-05, +-1.727957428171640427e-05, +-1.734887255116203072e-05, +-1.741813629147868434e-05, +-1.748736539315972986e-05, +-1.755655974675543571e-05, +-1.762571924288577771e-05, +-1.769484377223738304e-05, +-1.776393322556379784e-05, +-1.783298749368241086e-05, +-1.790200646748724695e-05, +-1.797099003793017319e-05, +-1.803993809603404816e-05, +-1.810885053288915428e-05, +-1.817772723965385508e-05, +-1.824656810755129178e-05, +-1.831537302788232934e-05, +-1.838414189200682350e-05, +-1.845287459135629574e-05, +-1.852157101743108391e-05, +-1.859023106179734369e-05, +-1.865885461609959487e-05, +-1.872744157204524434e-05, +-1.879599182140215345e-05, +-1.886450525602612586e-05, +-1.893298176783035007e-05, +-1.900142124879810143e-05, +-1.906982359099195453e-05, +-1.913818868653540935e-05, +-1.920651642762563402e-05, +-1.927480670653027996e-05, +-1.934305941558480191e-05, +-1.941127444720477374e-05, +-1.947945169387072320e-05, +-1.954759104812532316e-05, +-1.961569240260112006e-05, +-1.968375564998989507e-05, +-1.975178068305537970e-05, +-1.981976739464534132e-05, +-1.988771567766149312e-05, +-1.995562542508683634e-05, +-2.002349652998311580e-05, +-2.009132888547549199e-05, +-2.015912238476180759e-05, +-2.022687692112530992e-05, +-2.029459238790070865e-05, +-2.036226867851764549e-05, +-2.042990568646693489e-05, +-2.049750330531283242e-05, +-2.056506142870604865e-05, +-2.063257995035246983e-05, +-2.070005876404153018e-05, +-2.076749776364300329e-05, +-2.083489684309197578e-05, +-2.090225589639817480e-05, +-2.096957481765827035e-05, +-2.103685350102264449e-05, +-2.110409184073806823e-05, +-2.117128973111437928e-05, +-2.123844706654009793e-05, +-2.130556374147907618e-05, +-2.137263965047127705e-05, +-2.143967468812929490e-05, +-2.150666874915111522e-05, +-2.157362172830188301e-05, +-2.164053352042316939e-05, +-2.170740402044516544e-05, +-2.177423312335691069e-05, +-2.184102072423321187e-05, +-2.190776671823215933e-05, +-2.197447100057998558e-05, +-2.204113346658347593e-05, +-2.210775401162681417e-05, +-2.217433253116919396e-05, +-2.224086892075647737e-05, +-2.230736307600372564e-05, +-2.237381489260724407e-05, +-2.244022426634174268e-05, +-2.250659109306048195e-05, +-2.257291526869245729e-05, +-2.263919668925457932e-05, +-2.270543525083377104e-05, +-2.277163084959916167e-05, +-2.283778338179941008e-05, +-2.290389274376241672e-05, +-2.296995883189307738e-05, +-2.303598154268508738e-05, +-2.310196077270295059e-05, +-2.316789641859470867e-05, +-2.323378837708843097e-05, +-2.329963654498994782e-05, +-2.336544081919448543e-05, +-2.343120109666932540e-05, +-2.349691727446569708e-05, +-2.356258924971587731e-05, +-2.362821691963359024e-05, +-2.369380018151091393e-05, +-2.375933893273059289e-05, +-2.382483307074813851e-05, +-2.389028249310405346e-05, +-2.395568709742090097e-05, +-2.402104678140064176e-05, +-2.408636144283648908e-05, +-2.415163097959529049e-05, +-2.421685528962968099e-05, +-2.428203427097514223e-05, +-2.434716782175029380e-05, +-2.441225584015391852e-05, +-2.447729822447713256e-05, +-2.454229487308855898e-05, +-2.460724568443179005e-05, +-2.467215055705195698e-05, +-2.473700938956623616e-05, +-2.480182208067625662e-05, +-2.486658852917637033e-05, +-2.493130863393709789e-05, +-2.499598229391618057e-05, +-2.506060940815632381e-05, +-2.512518987578211743e-05, +-2.518972359601208381e-05, +-2.525421046814423429e-05, +-2.531865039155314860e-05, +-2.538304326571648361e-05, +-2.544738899018605561e-05, +-2.551168746459952599e-05, +-2.557593858869220888e-05, +-2.564014226226514476e-05, +-2.570429838522645264e-05, +-2.576840685755864475e-05, +-2.583246757933407300e-05, +-2.589648045070911498e-05, +-2.596044537193846171e-05, +-2.602436224334364186e-05, +-2.608823096535411645e-05, +-2.615205143847471549e-05, +-2.621582356329815034e-05, +-2.627954724051631652e-05, +-2.634322237089165388e-05, +-2.640684885528356719e-05, +-2.647042659464508206e-05, +-2.653395549000916033e-05, +-2.659743544249715678e-05, +-2.666086635333070475e-05, +-2.672424812379991849e-05, +-2.678758065530426757e-05, +-2.685086384932063703e-05, +-2.691409760741808599e-05, +-2.697728183125535067e-05, +-2.704041642258032258e-05, +-2.710350128322811051e-05, +-2.716653631513196051e-05, +-2.722952142030699959e-05, +-2.729245650085802507e-05, +-2.735534145899214229e-05, +-2.741817619698921671e-05, +-2.748096061722893495e-05, +-2.754369462218683048e-05, +-2.760637811442144600e-05, +-2.766901099658465368e-05, +-2.773159317142000855e-05, +-2.779412454175953992e-05, +-2.785660501053525070e-05, +-2.791903448076211576e-05, +-2.798141285555018774e-05, +-2.804374003810117160e-05, +-2.810601593170912265e-05, +-2.816824043975731923e-05, +-2.823041346573022963e-05, +-2.829253491319633088e-05, +-2.835460468581941154e-05, +-2.841662268735652526e-05, +-2.847858882165740129e-05, +-2.854050299266232006e-05, +-2.860236510441338214e-05, +-2.866417506103750322e-05, +-2.872593276675818106e-05, +-2.878763812589272064e-05, +-2.884929104284931695e-05, +-2.891089142213878471e-05, +-2.897243916835785490e-05, +-2.903393418620021327e-05, +-2.909537638045387118e-05, +-2.915676565600206001e-05, +-2.921810191781952460e-05, +-2.927938507098440881e-05, +-2.934061502066168413e-05, +-2.940179167211417807e-05, +-2.946291493070026687e-05, +-2.952398470187095827e-05, +-2.958500089118133326e-05, +-2.964596340427382565e-05, +-2.970687214688970445e-05, +-2.976772702486631250e-05, +-2.982852794413722917e-05, +-2.988927481072957675e-05, +-2.994996753077548251e-05, +-3.001060601049800779e-05, +-3.007119015620901008e-05, +-3.013171987433355792e-05, +-3.019219507138313753e-05, +-3.025261565396607471e-05, +-3.031298152879949835e-05, +-3.037329260267859649e-05, +-3.043354878251539690e-05, +-3.049374997530908705e-05, +-3.055389608815654103e-05, +-3.061398702826098297e-05, +-3.067402270291857009e-05, +-3.073400301951539080e-05, +-3.079392788555279095e-05, +-3.085379720861955053e-05, +-3.091361089640338300e-05, +-3.097336885670198055e-05, +-3.103307099739292075e-05, +-3.109271722647209473e-05, +-3.115230745202393907e-05, +-3.121184158223504250e-05, +-3.127131952538898921e-05, +-3.133074118988004686e-05, +-3.139010648418346625e-05, +-3.144941531689350968e-05, +-3.150866759669368288e-05, +-3.156786323236807160e-05, +-3.162700213281190593e-05, +-3.168608420700499045e-05, +-3.174510936403587526e-05, +-3.180407751309961297e-05, +-3.186298856348391482e-05, +-3.192184242457787174e-05, +-3.198063900588274893e-05, +-3.203937821698233290e-05, +-3.209805996758079730e-05, +-3.215668416747346326e-05, +-3.221525072655733655e-05, +-3.227375955484227483e-05, +-3.233221056242432983e-05, +-3.239060365950969465e-05, +-3.244893875641229823e-05, +-3.250721576354092363e-05, +-3.256543459140685170e-05, +-3.262359515063463527e-05, +-3.268169735193633587e-05, +-3.273974110613473240e-05, +-3.279772632416130178e-05, +-3.285565291704282232e-05, +-3.291352079591233093e-05, +-3.297132987200662263e-05, +-3.302908005666342492e-05, +-3.308677126133242950e-05, +-3.314440339755951712e-05, +-3.320197637699720658e-05, +-3.325949011140266932e-05, +-3.331694451263722117e-05, +-3.337433949266418103e-05, +-3.343167496355960454e-05, +-3.348895083749646142e-05, +-3.354616702675545045e-05, +-3.360332344372229572e-05, +-3.366042000088531394e-05, +-3.371745661084618871e-05, +-3.377443318630412087e-05, +-3.383134964006690083e-05, +-3.388820588504757475e-05, +-3.394500183426573872e-05, +-3.400173740084394742e-05, +-3.405841249801903718e-05, +-3.411502703912628991e-05, +-3.417158093760988205e-05, +-3.422807410702079754e-05, +-3.428450646101661770e-05, +-3.434087791335913600e-05, +-3.439718837792505104e-05, +-3.445343776869014393e-05, +-3.450962599974027618e-05, +-3.456575298526861820e-05, +-3.462181863957309469e-05, +-3.467782287706711139e-05, +-3.473376561226406464e-05, +-3.478964675978788514e-05, +-3.484546623437043594e-05, +-3.490122395085174960e-05, +-3.495691982417744638e-05, +-3.501255376940956955e-05, +-3.506812570171051886e-05, +-3.512363553635434652e-05, +-3.517908318872351142e-05, +-3.523446857430990233e-05, +-3.528979160871126004e-05, +-3.534505220764520421e-05, +-3.540025028692048848e-05, +-3.545538576247330765e-05, +-3.551045855033898652e-05, +-3.556546856666280152e-05, +-3.562041572770745495e-05, +-3.567529994984019331e-05, +-3.573012114953097093e-05, +-3.578487924337494716e-05, +-3.583957414806765814e-05, +-3.589420578041498469e-05, +-3.594877405734329636e-05, +-3.600327889587228542e-05, +-3.605772021314989170e-05, +-3.611209792642487904e-05, +-3.616641195305974411e-05, +-3.622066221052563418e-05, +-3.627484861641479513e-05, +-3.632897108841366289e-05, +-3.638302954433749017e-05, +-3.643702390210341760e-05, +-3.649095407974039412e-05, +-3.654481999539891453e-05, +-3.659862156732695697e-05, +-3.665235871389198541e-05, +-3.670603135357869320e-05, +-3.675963940497675156e-05, +-3.681318278678855484e-05, +-3.686666141783863279e-05, +-3.692007521704753479e-05, +-3.697342410346537241e-05, +-3.702670799624602888e-05, +-3.707992681465625292e-05, +-3.713308047808553167e-05, +-3.718616890602263812e-05, +-3.723919201807696273e-05, +-3.729214973397626374e-05, +-3.734504197355482903e-05, +-3.739786865676341011e-05, +-3.745062970366624060e-05, +-3.750332503443987067e-05, +-3.755595456938196942e-05, +-3.760851822889740647e-05, +-3.766101593350781998e-05, +-3.771344760384959060e-05, +-3.776581316067363137e-05, +-3.781811252484328036e-05, +-3.787034561734439720e-05, +-3.792251235927002851e-05, +-3.797461267183142603e-05, +-3.802664647635478726e-05, +-3.807861369428176368e-05, +-3.813051424716724491e-05, +-3.818234805668874383e-05, +-3.823411504463255947e-05, +-3.828581513290329764e-05, +-3.833744824352108588e-05, +-3.838901429862055705e-05, +-3.844051322045902825e-05, +-3.849194493140354462e-05, +-3.854330935393948519e-05, +-3.859460641066902466e-05, +-3.864583602431124863e-05, +-3.869699811769931430e-05, +-3.874809261379060811e-05, +-3.879911943565246139e-05, +-3.885007850647160323e-05, +-3.890096974955212759e-05, +-3.895179308831530360e-05, +-3.900254844629797633e-05, +-3.905323574716109135e-05, +-3.910385491467673850e-05, +-3.915440587273694747e-05, +-3.920488854535161431e-05, +-3.925530285664663790e-05, +-3.930564873087287822e-05, +-3.935592609239469764e-05, +-3.940613486568840919e-05, +-3.945627497536196161e-05, +-3.950634634613333658e-05, +-3.955634890283898523e-05, +-3.960628257044115322e-05, +-3.965614727401397589e-05, +-3.970594293875322249e-05, +-3.975566948997368737e-05, +-3.980532685310927802e-05, +-3.985491495371154465e-05, +-3.990443371746002754e-05, +-3.995388307013835713e-05, +-4.000326293766575693e-05, +-4.005257324607199840e-05, +-4.010181392150695547e-05, +-4.015098489024750963e-05, +-4.020008607868580657e-05, +-4.024911741332769092e-05, +-4.029807882081298760e-05, +-4.034697022789302494e-05, +-4.039579156143947771e-05, +-4.044454274845400298e-05, +-4.049322371604315436e-05, +-4.054183439145010850e-05, +-4.059037470203027053e-05, +-4.063884457526018484e-05, +-4.068724393874409450e-05, +-4.073557272020337708e-05, +-4.078383084747407131e-05, +-4.083201824852723973e-05, +-4.088013485144627502e-05, +-4.092818058443708471e-05, +-4.097615537583588384e-05, +-4.102405915408752457e-05, +-4.107189184776584517e-05, +-4.111965338557098675e-05, +-4.116734369631905256e-05, +-4.121496270894854555e-05, +-4.126251035252895380e-05, +-4.130998655623736572e-05, +-4.135739124938895639e-05, +-4.140472436141245753e-05, +-4.145198582186030155e-05, +-4.149917556041589925e-05, +-4.154629350687322973e-05, +-4.159333959115585458e-05, +-4.164031374331521703e-05, +-4.168721589351937303e-05, +-4.173404597206230863e-05, +-4.178080390936150725e-05, +-4.182748963595626246e-05, +-4.187410308251598561e-05, +-4.192064417982754106e-05, +-4.196711285880429921e-05, +-4.201350905048345990e-05, +-4.205983268602670974e-05, +-4.210608369671772159e-05, +-4.215226201397127549e-05, +-4.219836756932011267e-05, +-4.224440029442384634e-05, +-4.229036012106676619e-05, +-4.233624698115827205e-05, +-4.238206080673030570e-05, +-4.242780152994645143e-05, +-4.247346908308871546e-05, +-4.251906339856698568e-05, +-4.256458440891608397e-05, +-4.261003204679432958e-05, +-4.265540624499215860e-05, +-4.270070693641873401e-05, +-4.274593405411175097e-05, +-4.279108753123411643e-05, +-4.283616730107540606e-05, +-4.288117329704817113e-05, +-4.292610545269832657e-05, +-4.297096370169105632e-05, +-4.301574797782029333e-05, +-4.306045821500643596e-05, +-4.310509434729628022e-05, +-4.314965630886110205e-05, +-4.319414403400519549e-05, +-4.323855745715335684e-05, +-4.328289651285939570e-05, +-4.332716113580423759e-05, +-4.337135126079368780e-05, +-4.341546682276692203e-05, +-4.345950775678643721e-05, +-4.350347399803571367e-05, +-4.354736548183809383e-05, +-4.359118214363632464e-05, +-4.363492391900077722e-05, +-4.367859074363573518e-05, +-4.372218255336709575e-05, +-4.376569928415086042e-05, +-4.380914087207098687e-05, +-4.385250725333738318e-05, +-4.389579836429456791e-05, +-4.393901414141092971e-05, +-4.398215452127746697e-05, +-4.402521944062583295e-05, +-4.406820883630792573e-05, +-4.411112264530438562e-05, +-4.415396080473071410e-05, +-4.419672325182730601e-05, +-4.423940992395715232e-05, +-4.428202075862471205e-05, +-4.432455569345540054e-05, +-4.436701466620374807e-05, +-4.440939761476174816e-05, +-4.445170447713630625e-05, +-4.449393519147862151e-05, +-4.453608969606074778e-05, +-4.457816792928472120e-05, +-4.462016982968827257e-05, +-4.466209533593483238e-05, +-4.470394438681197228e-05, +-4.474571692124905723e-05, +-4.478741287829775698e-05, +-4.482903219713977097e-05, +-4.487057481709485828e-05, +-4.491204067759968884e-05, +-4.495342971823506370e-05, +-4.499474187870389897e-05, +-4.503597709884251505e-05, +-4.507713531861748569e-05, +-4.511821647812603778e-05, +-4.515922051759471641e-05, +-4.520014737738644575e-05, +-4.524099699798984290e-05, +-4.528176932002407645e-05, +-4.532246428424783146e-05, +-4.536308183153905525e-05, +-4.540362190291309067e-05, +-4.544408443952055508e-05, +-4.548446938263771814e-05, +-4.552477667367472812e-05, +-4.556500625417297598e-05, +-4.560515806580430251e-05, +-4.564523205037751715e-05, +-4.568522814982827417e-05, +-4.572514630622565929e-05, +-4.576498646177122739e-05, +-4.580474855879871114e-05, +-4.584443253977217109e-05, +-4.588403834729365286e-05, +-4.592356592409200627e-05, +-4.596301521303071874e-05, +-4.600238615710551646e-05, +-4.604167869944516400e-05, +-4.608089278330909942e-05, +-4.612002835209542343e-05, +-4.615908534932945434e-05, +-4.619806371867132421e-05, +-4.623696340391444064e-05, +-4.627578434898345393e-05, +-4.631452649794163640e-05, +-4.635318979498033172e-05, +-4.639177418442611749e-05, +-4.643027961073880618e-05, +-4.646870601851206181e-05, +-4.650705335247129929e-05, +-4.654532155748099601e-05, +-4.658351057853399888e-05, +-4.662162036075903924e-05, +-4.665965084941842893e-05, +-4.669760198990914444e-05, +-4.673547372775993351e-05, +-4.677326600863907391e-05, +-4.681097877834414808e-05, +-4.684861198280854155e-05, +-4.688616556810027742e-05, +-4.692363948041973959e-05, +-4.696103366610775674e-05, +-4.699834807163566166e-05, +-4.703558264360446447e-05, +-4.707273732876088529e-05, +-4.710981207397876017e-05, +-4.714680682626740978e-05, +-4.718372153277612527e-05, +-4.722055614078443084e-05, +-4.725731059770820261e-05, +-4.729398485109895044e-05, +-4.733057884864171045e-05, +-4.736709253816185516e-05, +-4.740352586761702300e-05, +-4.743987878509513283e-05, +-4.747615123882983386e-05, +-4.751234317718385630e-05, +-4.754845454865556410e-05, +-4.758448530188410483e-05, +-4.762043538564128499e-05, +-4.765630474882976748e-05, +-4.769209334049831148e-05, +-4.772780110982479106e-05, +-4.776342800612397440e-05, +-4.779897397885264659e-05, +-4.783443897759305524e-05, +-4.786982295207468263e-05, +-4.790512585215751508e-05, +-4.794034762783745722e-05, +-4.797548822925244417e-05, +-4.801054760667338166e-05, +-4.804552571050328544e-05, +-4.808042249129162668e-05, +-4.811523789971798077e-05, +-4.814997188659935932e-05, +-4.818462440289579372e-05, +-4.821919539969321837e-05, +-4.825368482822590006e-05, +-4.828809263985917884e-05, +-4.832241878609694227e-05, +-4.835666321858030401e-05, +-4.839082588908815271e-05, +-4.842490674953484807e-05, +-4.845890575197741050e-05, +-4.849282284860526179e-05, +-4.852665799174588334e-05, +-4.856041113387056242e-05, +-4.859408222757893549e-05, +-4.862767122561334037e-05, +-4.866117808085695950e-05, +-4.869460274632644061e-05, +-4.872794517517776497e-05, +-4.876120532070538001e-05, +-4.879438313633997673e-05, +-4.882747857565557085e-05, +-4.886049159235941302e-05, +-4.889342214029726070e-05, +-4.892627017345935485e-05, +-4.895903564596545791e-05, +-4.899171851207809468e-05, +-4.902431872620188817e-05, +-4.905683624287519775e-05, +-4.908927101677688183e-05, +-4.912162300272417690e-05, +-4.915389215567374785e-05, +-4.918607843071915364e-05, +-4.921818178309779300e-05, +-4.925020216818117366e-05, +-4.928213954148201394e-05, +-4.931399385865163382e-05, +-4.934576507547917574e-05, +-4.937745314789781836e-05, +-4.940905803197513402e-05, +-4.944057968391989203e-05, +-4.947201806008022236e-05, +-4.950337311694398828e-05, +-4.953464481113662479e-05, +-4.956583309942801650e-05, +-4.959693793872310572e-05, +-4.962795928606818761e-05, +-4.965889709864918904e-05, +-4.968975133379046916e-05, +-4.972052194896085705e-05, +-4.975120890176456477e-05, +-4.978181214994722498e-05, +-4.981233165139486101e-05, +-4.984276736413314817e-05, +-4.987311924632690559e-05, +-4.990338725628534099e-05, +-4.993357135245502377e-05, +-4.996367149341879397e-05, +-4.999368763790828482e-05, +-5.002361974478981458e-05, +-5.005346777307050548e-05, +-5.008323168190196325e-05, +-5.011291143057236921e-05, +-5.014250697851205035e-05, +-5.017201828529181917e-05, +-5.020144531062206564e-05, +-5.023078801435806981e-05, +-5.026004635649331361e-05, +-5.028922029715813239e-05, +-5.031830979663174281e-05, +-5.034731481532946952e-05, +-5.037623531380708882e-05, +-5.040507125276641904e-05, +-5.043382259304544072e-05, +-5.046248929562570991e-05, +-5.049107132162915294e-05, +-5.051956863231982827e-05, +-5.054798118910116178e-05, +-5.057630895352386143e-05, +-5.060455188727072489e-05, +-5.063270995217533524e-05, +-5.066078311020737684e-05, +-5.068877132347847641e-05, +-5.071667455424579450e-05, +-5.074449276490544572e-05, +-5.077222591799155683e-05, +-5.079987397618805070e-05, +-5.082743690231527668e-05, +-5.085491465933578403e-05, +-5.088230721035895686e-05, +-5.090961451862735320e-05, +-5.093683654753455365e-05, +-5.096397326061132427e-05, +-5.099102462153008215e-05, +-5.101799059411143446e-05, +-5.104487114230956210e-05, +-5.107166623022567055e-05, +-5.109837582210513031e-05, +-5.112499988233253019e-05, +-5.115153837543438110e-05, +-5.117799126608493679e-05, +-5.120435851909367815e-05, +-5.123064009941597901e-05, +-5.125683597215258439e-05, +-5.128294610254299009e-05, +-5.130897045597093145e-05, +-5.133490899796262151e-05, +-5.136076169418584981e-05, +-5.138652851045499679e-05, +-5.141220941272366801e-05, +-5.143780436708856338e-05, +-5.146331333979378009e-05, +-5.148873629721927942e-05, +-5.151407320589193882e-05, +-5.153932403248388496e-05, +-5.156448874380666612e-05, +-5.158956730681670710e-05, +-5.161455968861324923e-05, +-5.163946585643740847e-05, +-5.166428577767747445e-05, +-5.168901941986168698e-05, +-5.171366675066222724e-05, +-5.173822773789494000e-05, +-5.176270234951948942e-05, +-5.178709055363747531e-05, +-5.181139231849765078e-05, +-5.183560761248869883e-05, +-5.185973640414426702e-05, +-5.188377866214145644e-05, +-5.190773435530113337e-05, +-5.193160345258666894e-05, +-5.195538592310874345e-05, +-5.197908173611837362e-05, +-5.200269086101139170e-05, +-5.202621326732774075e-05, +-5.204964892474973312e-05, +-5.207299780310752568e-05, +-5.209625987237140164e-05, +-5.211943510265707640e-05, +-5.214252346422411187e-05, +-5.216552492747622820e-05, +-5.218843946296036187e-05, +-5.221126704137046717e-05, +-5.223400763354168184e-05, +-5.225666121045432507e-05, +-5.227922774323313178e-05, +-5.230170720314690703e-05, +-5.232409956160779418e-05, +-5.234640479017570657e-05, +-5.236862286055139542e-05, +-5.239075374458126771e-05, +-5.241279741425604452e-05, +-5.243475384170998851e-05, +-5.245662299922508490e-05, +-5.247840485922587793e-05, +-5.250009939427784458e-05, +-5.252170657709781645e-05, +-5.254322638054295479e-05, +-5.256465877761496531e-05, +-5.258600374146362865e-05, +-5.260726124538010539e-05, +-5.262843126280142877e-05, +-5.264951376730946108e-05, +-5.267050873263092760e-05, +-5.269141613263615616e-05, +-5.271223594134476925e-05, +-5.273296813291396783e-05, +-5.275361268165290379e-05, +-5.277416956201183795e-05, +-5.279463874858607704e-05, +-5.281502021611968710e-05, +-5.283531393949605416e-05, +-5.285551989374651717e-05, +-5.287563805404938550e-05, +-5.289566839572530389e-05, +-5.291561089424007822e-05, +-5.293546552520872771e-05, +-5.295523226438426337e-05, +-5.297491108767212153e-05, +-5.299450197111879319e-05, +-5.301400489091654712e-05, +-5.303341982340628266e-05, +-5.305274674506860536e-05, +-5.307198563253287332e-05, +-5.309113646257514397e-05, +-5.311019921211412187e-05, +-5.312917385821422833e-05, +-5.314806037808884729e-05, +-5.316685874909150259e-05, +-5.318556894872343381e-05, +-5.320419095463411812e-05, +-5.322272474461538162e-05, +-5.324117029660524833e-05, +-5.325952758868798755e-05, +-5.327779659909199974e-05, +-5.329597730619442433e-05, +-5.331406968851528505e-05, +-5.333207372472011912e-05, +-5.334998939362400232e-05, +-5.336781667418221136e-05, +-5.338555554549861959e-05, +-5.340320598682428085e-05, +-5.342076797755395995e-05, +-5.343824149722863992e-05, +-5.345562652553535260e-05, +-5.347292304230597925e-05, +-5.349013102752111300e-05, +-5.350725046130435324e-05, +-5.352428132392629008e-05, +-5.354122359580349469e-05, +-5.355807725749797715e-05, +-5.357484228971771506e-05, +-5.359151867331851020e-05, +-5.360810638929992280e-05, +-5.362460541880834791e-05, +-5.364101574313621587e-05, +-5.365733734372190417e-05, +-5.367357020214935122e-05, +-5.368971430015045515e-05, +-5.370576961960146203e-05, +-5.372173614252524277e-05, +-5.373761385109058830e-05, +-5.375340272761187758e-05, +-5.376910275455216759e-05, +-5.378471391451814497e-05, +-5.380023619026343286e-05, +-5.381566956468788619e-05, +-5.383101402083772039e-05, +-5.384626954190458305e-05, +-5.386143611122879300e-05, +-5.387651371229420388e-05, +-5.389150232873213438e-05, +-5.390640194432010107e-05, +-5.392121254298160157e-05, +-5.393593410878652790e-05, +-5.395056662595253529e-05, +-5.396511007884178954e-05, +-5.397956445196318970e-05, +-5.399392972997267293e-05, +-5.400820589767108682e-05, +-5.402239294000828218e-05, +-5.403649084207888471e-05, +-5.405049958912203073e-05, +-5.406441916652737767e-05, +-5.407824955982821943e-05, +-5.409199075470414944e-05, +-5.410564273698363565e-05, +-5.411920549263909416e-05, +-5.413267900779054843e-05, +-5.414606326870434179e-05, +-5.415935826179269695e-05, +-5.417256397361590477e-05, +-5.418568039088007452e-05, +-5.419870750043542627e-05, +-5.421164528928292485e-05, +-5.422449374456721221e-05, +-5.423725285357958219e-05, +-5.424992260376063682e-05, +-5.426250298269334743e-05, +-5.427499397810926849e-05, +-5.428739557788799549e-05, +-5.429970777005364808e-05, +-5.431193054277696391e-05, +-5.432406388437748738e-05, +-5.433610778331762688e-05, +-5.434806222821008829e-05, +-5.435992720781214233e-05, +-5.437170271102736600e-05, +-5.438338872690871227e-05, +-5.439498524465178123e-05, +-5.440649225360070189e-05, +-5.441790974324782726e-05, +-5.442923770322968889e-05, +-5.444047612332983616e-05, +-5.445162499348093013e-05, +-5.446268430375767589e-05, +-5.447365404438595020e-05, +-5.448453420573595067e-05, +-5.449532477832468269e-05, +-5.450602575281635238e-05, +-5.451663712002145188e-05, +-5.452715887089644079e-05, +-5.453759099654678199e-05, +-5.454793348822208982e-05, +-5.455818633731915226e-05, +-5.456834953538328625e-05, +-5.457842307410374331e-05, +-5.458840694531730779e-05, +-5.459830114100910323e-05, +-5.460810565330892637e-05, +-5.461782047449407292e-05, +-5.462744559698824650e-05, +-5.463698101336121989e-05, +-5.464642671633128802e-05, +-5.465578269876165621e-05, +-5.466504895366273054e-05, +-5.467422547419152157e-05, +-5.468331225365162399e-05, +-5.469230928549304044e-05, +-5.470121656331358419e-05, +-5.471003408085612122e-05, +-5.471876183201132137e-05, +-5.472739981081581518e-05, +-5.473594801145306130e-05, +-5.474440642825281788e-05, +-5.475277505569260629e-05, +-5.476105388839529875e-05, +-5.476924292113084629e-05, +-5.477734214881577050e-05, +-5.478535156651279087e-05, +-5.479327116943264760e-05, +-5.480110095293094384e-05, +-5.480884091251073424e-05, +-5.481649104382154238e-05, +-5.482405134265921172e-05, +-5.483152180496591232e-05, +-5.483890242683186209e-05, +-5.484619320449215542e-05, +-5.485339413432918914e-05, +-5.486050521287158505e-05, +-5.486752643679428484e-05, +-5.487445780291990528e-05, +-5.488129930821631237e-05, +-5.488805094979840347e-05, +-5.489471272492763297e-05, +-5.490128463101151085e-05, +-5.490776666560409056e-05, +-5.491415882640676862e-05, +-5.492046111126669899e-05, +-5.492667351817659654e-05, +-5.493279604527737982e-05, +-5.493882869085544017e-05, +-5.494477145334315002e-05, +-5.495062433132049588e-05, +-5.495638732351289647e-05, +-5.496206042879249693e-05, +-5.496764364617759961e-05, +-5.497313697483248793e-05, +-5.497854041406936436e-05, +-5.498385396334555184e-05, +-5.498907762226382578e-05, +-5.499421139057517885e-05, +-5.499925526817592064e-05, +-5.500420925510811820e-05, +-5.500907335156188639e-05, +-5.501384755787095619e-05, +-5.501853187451792630e-05, +-5.502312630213004836e-05, +-5.502763084148109033e-05, +-5.503204549349078093e-05, +-5.503637025922652397e-05, +-5.504060513989930551e-05, +-5.504475013686863376e-05, +-5.504880525163903575e-05, +-5.505277048586079594e-05, +-5.505664584133184678e-05, +-5.506043131999437384e-05, +-5.506412692393739753e-05, +-5.506773265539641399e-05, +-5.507124851675260224e-05, +-5.507467451053277676e-05, +-5.507801063941087147e-05, +-5.508125690620507343e-05, +-5.508441331388113635e-05, +-5.508747986555000896e-05, +-5.509045656446876334e-05, +-5.509334341404010702e-05, +-5.509614041781310805e-05, +-5.509884757948204981e-05, +-5.510146490288788111e-05, +-5.510399239201687455e-05, +-5.510643005100091104e-05, +-5.510877788411885545e-05, +-5.511103589579322264e-05, +-5.511320409059397899e-05, +-5.511528247323684829e-05, +-5.511727104858222078e-05, +-5.511916982163710474e-05, +-5.512097879755343237e-05, +-5.512269798162917791e-05, +-5.512432737930819503e-05, +-5.512586699617948491e-05, +-5.512731683797783333e-05, +-5.512867691058360726e-05, +-5.512994722002251778e-05, +-5.513112777246584366e-05, +-5.513221857423068208e-05, +-5.513321963177916259e-05, +-5.513413095171902986e-05, +-5.513495254080339977e-05, +-5.513568440593092875e-05, +-5.513632655414538696e-05, +-5.513687899263620707e-05, +-5.513734172873797614e-05, +-5.513771476993045587e-05, +-5.513799812383872494e-05, +-5.513819179823300283e-05, +-5.513829580102937487e-05, +-5.513831014028826755e-05, +-5.513823482421574285e-05, +-5.513806986116269861e-05, +-5.513781525962543092e-05, +-5.513747102824513276e-05, +-5.513703717580816497e-05, +-5.513651371124587335e-05, +-5.513590064363450729e-05, +-5.513519798219569418e-05, +-5.513440573629525349e-05, +-5.513352391544455884e-05, +-5.513255252929956222e-05, +-5.513149158766141061e-05, +-5.513034110047551086e-05, +-5.512910107783251226e-05, +-5.512777152996791352e-05, +-5.512635246726121571e-05, +-5.512484390023787386e-05, +-5.512324583956669483e-05, +-5.512155829606210064e-05, +-5.511978128068240724e-05, +-5.511791480453116625e-05, +-5.511595887885626369e-05, +-5.511391351504971674e-05, +-5.511177872464855459e-05, +-5.510955451933399177e-05, +-5.510724091093174664e-05, +-5.510483791141197361e-05, +-5.510234553288876849e-05, +-5.509976378762149662e-05, +-5.509709268801287521e-05, +-5.509433224661017947e-05, +-5.509148247610516814e-05, +-5.508854338933359554e-05, +-5.508551499927517772e-05, +-5.508239731905399222e-05, +-5.507919036193824775e-05, +-5.507589414134020280e-05, +-5.507250867081598951e-05, +-5.506903396406557973e-05, +-5.506547003493352373e-05, +-5.506181689740748640e-05, +-5.505807456561943321e-05, +-5.505424305384542009e-05, +-5.505032237650459731e-05, +-5.504631254816062574e-05, +-5.504221358352061978e-05, +-5.503802549743507276e-05, +-5.503374830489835841e-05, +-5.502938202104882577e-05, +-5.502492666116775557e-05, +-5.502038224068067488e-05, +-5.501574877515605605e-05, +-5.501102628030585202e-05, +-5.500621477198599103e-05, +-5.500131426619483157e-05, +-5.499632477907529020e-05, +-5.499124632691284247e-05, +-5.498607892613603123e-05, +-5.498082259331725936e-05, +-5.497547734517178696e-05, +-5.497004319855795492e-05, +-5.496452017047736790e-05, +-5.495890827807463683e-05, +-5.495320753863745344e-05, +-5.494741796959632600e-05, +-5.494153958852483679e-05, +-5.493557241313965568e-05, +-5.492951646130030975e-05, +-5.492337175100850562e-05, +-5.491713830040926111e-05, +-5.491081612779020050e-05, +-5.490440525158187982e-05, +-5.489790569035732604e-05, +-5.489131746283229453e-05, +-5.488464058786445601e-05, +-5.487787508445482622e-05, +-5.487102097174665472e-05, +-5.486407826902530961e-05, +-5.485704699571896878e-05, +-5.484992717139781346e-05, +-5.484271881577434000e-05, +-5.483542194870370541e-05, +-5.482803659018287357e-05, +-5.482056276035090662e-05, +-5.481300047948966966e-05, +-5.480534976802177080e-05, +-5.479761064651302092e-05, +-5.478978313567075994e-05, +-5.478186725634464965e-05, +-5.477386302952536588e-05, +-5.476577047634666526e-05, +-5.475758961808247145e-05, +-5.474932047614996508e-05, +-5.474096307210691393e-05, +-5.473251742765383455e-05, +-5.472398356463200003e-05, +-5.471536150502421929e-05, +-5.470665127095502677e-05, +-5.469785288469059442e-05, +-5.468896636863820984e-05, +-5.467999174534660838e-05, +-5.467092903750595277e-05, +-5.466177826794719617e-05, +-5.465253945964295633e-05, +-5.464321263570704119e-05, +-5.463379781939378487e-05, +-5.462429503409927414e-05, +-5.461470430336058272e-05, +-5.460502565085410430e-05, +-5.459525910040014684e-05, +-5.458540467595690852e-05, +-5.457546240162518042e-05, +-5.456543230164621878e-05, +-5.455531440040067436e-05, +-5.454510872241115387e-05, +-5.453481529234142038e-05, +-5.452443413499398093e-05, +-5.451396527531291906e-05, +-5.450340873838293253e-05, +-5.449276454942744279e-05, +-5.448203273381313505e-05, +-5.447121331704396805e-05, +-5.446030632476569388e-05, +-5.444931178276426548e-05, +-5.443822971696484739e-05, +-5.442706015343279146e-05, +-5.441580311837504637e-05, +-5.440445863813629510e-05, +-5.439302673920222794e-05, +-5.438150744819852597e-05, +-5.436990079188898411e-05, +-5.435820679717987496e-05, +-5.434642549111551719e-05, +-5.433455690087900735e-05, +-5.432260105379420529e-05, +-5.431055797732487362e-05, +-5.429842769907186552e-05, +-5.428621024677898624e-05, +-5.427390564832565439e-05, +-5.426151393173307512e-05, +-5.424903512516100784e-05, +-5.423646925690677010e-05, +-5.422381635540965574e-05, +-5.421107644924618471e-05, +-5.419824956713099754e-05, +-5.418533573791945064e-05, +-5.417233499060491260e-05, +-5.415924735431958408e-05, +-5.414607285833467401e-05, +-5.413281153205886818e-05, +-5.411946340504088384e-05, +-5.410602850696735554e-05, +-5.409250686766323493e-05, +-5.407889851709227864e-05, +-5.406520348535689919e-05, +-5.405142180269603051e-05, +-5.403755349948878708e-05, +-5.402359860625171955e-05, +-5.400955715363942462e-05, +-5.399542917244465345e-05, +-5.398121469359848108e-05, +-5.396691374816849036e-05, +-5.395252636736176709e-05, +-5.393805258252225727e-05, +-5.392349242513210878e-05, +-5.390884592681140713e-05, +-5.389411311931612903e-05, +-5.387929403454138141e-05, +-5.386438870451979550e-05, +-5.384939716142041546e-05, +-5.383431943755037218e-05, +-5.381915556535446309e-05, +-5.380390557741278053e-05, +-5.378856950644435054e-05, +-5.377314738530478833e-05, +-5.375763924698673870e-05, +-5.374204512461957790e-05, +-5.372636505147032843e-05, +-5.371059906094092818e-05, +-5.369474718657209293e-05, +-5.367880946204017892e-05, +-5.366278592115854491e-05, +-5.364667659787718620e-05, +-5.363048152628150143e-05, +-5.361420074059389848e-05, +-5.359783427517521753e-05, +-5.358138216451856467e-05, +-5.356484444325634560e-05, +-5.354822114615627449e-05, +-5.353151230812090635e-05, +-5.351471796419036790e-05, +-5.349783814954006043e-05, +-5.348087289948141193e-05, +-5.346382224946161281e-05, +-5.344668623506377181e-05, +-5.342946489200464590e-05, +-5.341215825614082703e-05, +-5.339476636345964159e-05, +-5.337728925008697025e-05, +-5.335972695228370394e-05, +-5.334207950644395495e-05, +-5.332434694909845180e-05, +-5.330652931691525078e-05, +-5.328862664669334592e-05, +-5.327063897536921485e-05, +-5.325256634001449457e-05, +-5.323440877783293211e-05, +-5.321616632616783164e-05, +-5.319783902249217470e-05, +-5.317942690441668392e-05, +-5.316093000968643493e-05, +-5.314234837617874891e-05, +-5.312368204190709572e-05, +-5.310493104502125655e-05, +-5.308609542380090678e-05, +-5.306717521666269718e-05, +-5.304817046215782803e-05, +-5.302908119896816626e-05, +-5.300990746591399081e-05, +-5.299064930194756186e-05, +-5.297130674615318190e-05, +-5.295187983775136983e-05, +-5.293236861609577107e-05, +-5.291277312067119235e-05, +-5.289309339110104892e-05, +-5.287332946713671895e-05, +-5.285348138866601393e-05, +-5.283354919571045457e-05, +-5.281353292842080524e-05, +-5.279343262708646593e-05, +-5.277324833212719833e-05, +-5.275298008409395266e-05, +-5.273262792367315691e-05, +-5.271219189168315265e-05, +-5.269167202907505551e-05, +-5.267106837693361586e-05, +-5.265038097647337659e-05, +-5.262960986904406029e-05, +-5.260875509612700490e-05, +-5.258781669933554321e-05, +-5.256679472041569403e-05, +-5.254568920124597922e-05, +-5.252450018383521464e-05, +-5.250322771032596604e-05, +-5.248187182299245520e-05, +-5.246043256424043116e-05, +-5.243890997660775302e-05, +-5.241730410276412562e-05, +-5.239561498550914800e-05, +-5.237384266777594548e-05, +-5.235198719262852012e-05, +-5.233004860326194728e-05, +-5.230802694300375113e-05, +-5.228592225530977796e-05, +-5.226373458376978658e-05, +-5.224146397210353165e-05, +-5.221911046416182075e-05, +-5.219667410392630434e-05, +-5.217415493551041088e-05, +-5.215155300315518620e-05, +-5.212886835123550734e-05, +-5.210610102425550179e-05, +-5.208325106684987563e-05, +-5.206031852378360184e-05, +-5.203730343995311293e-05, +-5.201420586038182854e-05, +-5.199102583022631517e-05, +-5.196776339477228809e-05, +-5.194441859943508573e-05, +-5.192099148976135018e-05, +-5.189748211142407373e-05, +-5.187389051022795892e-05, +-5.185021673211059082e-05, +-5.182646082313280793e-05, +-5.180262282948885308e-05, +-5.177870279750248383e-05, +-5.175470077362333358e-05, +-5.173061680443366079e-05, +-5.170645093664321930e-05, +-5.168220321709142000e-05, +-5.165787369274697842e-05, +-5.163346241070474347e-05, +-5.160896941819001390e-05, +-5.158439476256004266e-05, +-5.155973849129411642e-05, +-5.153500065200447214e-05, +-5.151018129243135717e-05, +-5.148528046044059659e-05, +-5.146029820402793677e-05, +-5.143523457132023123e-05, +-5.141008961056646210e-05, +-5.138486337014716587e-05, +-5.135955589857127570e-05, +-5.133416724447083587e-05, +-5.130869745661308394e-05, +-5.128314658388541413e-05, +-5.125751467530665988e-05, +-5.123180178002333297e-05, +-5.120600794730584916e-05, +-5.118013322655388822e-05, +-5.115417766729745780e-05, +-5.112814131918725079e-05, +-5.110202423200494527e-05, +-5.107582645565928104e-05, +-5.104954804018111292e-05, +-5.102318903573568263e-05, +-5.099674949260704008e-05, +-5.097022946121007808e-05, +-5.094362899208494867e-05, +-5.091694813589803888e-05, +-5.089018694344191657e-05, +-5.086334546563615709e-05, +-5.083642375352311494e-05, +-5.080942185827432727e-05, +-5.078233983118730200e-05, +-5.075517772367997479e-05, +-5.072793558730380079e-05, +-5.070061347373128636e-05, +-5.067321143475855041e-05, +-5.064572952231036603e-05, +-5.061816778843557290e-05, +-5.059052628530795822e-05, +-5.056280506522777462e-05, +-5.053500418061621747e-05, +-5.050712368402342087e-05, +-5.047916362812368719e-05, +-5.045112406571140775e-05, +-5.042300504971278572e-05, +-5.039480663317450626e-05, +-5.036652886926559997e-05, +-5.033817181128247086e-05, +-5.030973551264498648e-05, +-5.028122002689662019e-05, +-5.025262540770489842e-05, +-5.022395170886236965e-05, +-5.019519898428175940e-05, +-5.016636728800312597e-05, +-5.013745667418849361e-05, +-5.010846719712383799e-05, +-5.007939891121924883e-05, +-5.005025187100460663e-05, +-5.002102613113658934e-05, +-4.999172174639373244e-05, +-4.996233877167716083e-05, +-4.993287726201130704e-05, +-4.990333727254421623e-05, +-4.987371885854325677e-05, +-4.984402207540162546e-05, +-4.981424697863376681e-05, +-4.978439362387674180e-05, +-4.975446206689083099e-05, +-4.972445236355468949e-05, +-4.969436456987288216e-05, +-4.966419874197067945e-05, +-4.963395493609506028e-05, +-4.960363320861457652e-05, +-4.957323361602087761e-05, +-4.954275621492333707e-05, +-4.951220106205502907e-05, +-4.948156821427448354e-05, +-4.945085772855331270e-05, +-4.942006966198983812e-05, +-4.938920407180329023e-05, +-4.935826101532943087e-05, +-4.932724055002934212e-05, +-4.929614273348308367e-05, +-4.926496762339132592e-05, +-4.923371527757646133e-05, +-4.920238575397769832e-05, +-4.917097911065659079e-05, +-4.913949540579930133e-05, +-4.910793469770379410e-05, +-4.907629704479315021e-05, +-4.904458250561071587e-05, +-4.901279113881515576e-05, +-4.898092300318910631e-05, +-4.894897815763298216e-05, +-4.891695666116696844e-05, +-4.888485857293047184e-05, +-4.885268395218327937e-05, +-4.882043285829893798e-05, +-4.878810535077956063e-05, +-4.875570148923637171e-05, +-4.872322133340512977e-05, +-4.869066494314006955e-05, +-4.865803237840967359e-05, +-4.862532369930416679e-05, +-4.859253896603538765e-05, +-4.855967823892613598e-05, +-4.852674157842172645e-05, +-4.849372904508655299e-05, +-4.846064069959683145e-05, +-4.842747660275601557e-05, +-4.839423681547595221e-05, +-4.836092139879144352e-05, +-4.832753041385351813e-05, +-4.829406392193001391e-05, +-4.826052198440667571e-05, +-4.822690466278744674e-05, +-4.819321201868883073e-05, +-4.815944411384918218e-05, +-4.812560101012286522e-05, +-4.809168276947547636e-05, +-4.805768945399790519e-05, +-4.802362112589314108e-05, +-4.798947784747749958e-05, +-4.795525968118809673e-05, +-4.792096668957641833e-05, +-4.788659893531022407e-05, +-4.785215648117418456e-05, +-4.781763939006506331e-05, +-4.778304772499904196e-05, +-4.774838154910825079e-05, +-4.771364092563420251e-05, +-4.767882591794250357e-05, +-4.764393658950957263e-05, +-4.760897300392429401e-05, +-4.757393522489459066e-05, +-4.753882331624186762e-05, +-4.750363734190223171e-05, +-4.746837736592661358e-05, +-4.743304345248189926e-05, +-4.739763566584480450e-05, +-4.736215407041088036e-05, +-4.732659873068827908e-05, +-4.729096971129942781e-05, +-4.725526707698203148e-05, +-4.721949089258305551e-05, +-4.718364122306804316e-05, +-4.714771813351394624e-05, +-4.711172168911203887e-05, +-4.707565195516633870e-05, +-4.703950899709602592e-05, +-4.700329288042861289e-05, +-4.696700367080902427e-05, +-4.693064143399407439e-05, +-4.689420623585300934e-05, +-4.685769814236931624e-05, +-4.682111721963434000e-05, +-4.678446353385684462e-05, +-4.674773715135585069e-05, +-4.671093813856274279e-05, +-4.667406656202122887e-05, +-4.663712248838834310e-05, +-4.660010598442822525e-05, +-4.656301711701982536e-05, +-4.652585595315865874e-05, +-4.648862255994185076e-05, +-4.645131700458460320e-05, +-4.641393935441320791e-05, +-4.637648967686041859e-05, +-4.633896803947432774e-05, +-4.630137450991287111e-05, +-4.626370915594447139e-05, +-4.622597204544963748e-05, +-4.618816324641498777e-05, +-4.615028282694040590e-05, +-4.611233085524115495e-05, +-4.607430739963269185e-05, +-4.603621252854716076e-05, +-4.599804631052650165e-05, +-4.595980881421779502e-05, +-4.592150010838215229e-05, +-4.588312026188930164e-05, +-4.584466934371783192e-05, +-4.580614742295609389e-05, +-4.576755456880278298e-05, +-4.572889085055936346e-05, +-4.569015633764771377e-05, +-4.565135109958705340e-05, +-4.561247520601162891e-05, +-4.557352872666453397e-05, +-4.553451173139224094e-05, +-4.549542429015285435e-05, +-4.545626647301755422e-05, +-4.541703835015576285e-05, +-4.537773999185145529e-05, +-4.533837146849630851e-05, +-4.529893285058317587e-05, +-4.525942420872421362e-05, +-4.521984561362723176e-05, +-4.518019713611380698e-05, +-4.514047884711323822e-05, +-4.510069081765481498e-05, +-4.506083311888496801e-05, +-4.502090582205165684e-05, +-4.498090899850661946e-05, +-4.494084271971294142e-05, +-4.490070705724027859e-05, +-4.486050208275755907e-05, +-4.482022786805024239e-05, +-4.477988448500495091e-05, +-4.473947200561064890e-05, +-4.469899050196693668e-05, +-4.465844004627800621e-05, +-4.461782071085325092e-05, +-4.457713256810914279e-05, +-4.453637569056243569e-05, +-4.449555015084013333e-05, +-4.445465602167427826e-05, +-4.441369337589504010e-05, +-4.437266228644772399e-05, +-4.433156282637702928e-05, +-4.429039506882870297e-05, +-4.424915908705809135e-05, +-4.420785495442328919e-05, +-4.416648274438608843e-05, +-4.412504253051464123e-05, +-4.408353438647515229e-05, +-4.404195838604330364e-05, +-4.400031460309636024e-05, +-4.395860311161508773e-05, +-4.391682398568394892e-05, +-4.387497729949185591e-05, +-4.383306312732605797e-05, +-4.379108154358171635e-05, +-4.374903262275516193e-05, +-4.370691643944573155e-05, +-4.366473306835494134e-05, +-4.362248258428872967e-05, +-4.358016506214999644e-05, +-4.353778057694899790e-05, +-4.349532920379645519e-05, +-4.345281101790540425e-05, +-4.341022609459146687e-05, +-4.336757450926753135e-05, +-4.332485633745284618e-05, +-4.328207165476642004e-05, +-4.323922053692852609e-05, +-4.319630305976060030e-05, +-4.315331929918682716e-05, +-4.311026933122701776e-05, +-4.306715323200661162e-05, +-4.302397107775060510e-05, +-4.298072294478391057e-05, +-4.293740890953190529e-05, +-4.289402904852213224e-05, +-4.285058343837649388e-05, +-4.280707215582248040e-05, +-4.276349527768550578e-05, +-4.271985288089075769e-05, +-4.267614504246455956e-05, +-4.263237183952719447e-05, +-4.258853334930198537e-05, +-4.254462964911681974e-05, +-4.250066081638756806e-05, +-4.245662692863633230e-05, +-4.241252806348396490e-05, +-4.236836429864413280e-05, +-4.232413571193489128e-05, +-4.227984238127026784e-05, +-4.223548438466304724e-05, +-4.219106180022535427e-05, +-4.214657470616218918e-05, +-4.210202318077946434e-05, +-4.205740730248683673e-05, +-4.201272714977989311e-05, +-4.196798280125921846e-05, +-4.192317433562269132e-05, +-4.187830183165738623e-05, +-4.183336536825927227e-05, +-4.178836502441495780e-05, +-4.174330087920406898e-05, +-4.169817301180853998e-05, +-4.165298150150653471e-05, +-4.160772642766495221e-05, +-4.156240786976038573e-05, +-4.151702590735148902e-05, +-4.147158062010112124e-05, +-4.142607208776726674e-05, +-4.138050039019602839e-05, +-4.133486560734060114e-05, +-4.128916781924345719e-05, +-4.124340710603835859e-05, +-4.119758354796012857e-05, +-4.115169722533839708e-05, +-4.110574821858944212e-05, +-4.105973660823813813e-05, +-4.101366247489008515e-05, +-4.096752589925287954e-05, +-4.092132696212629519e-05, +-4.087506574440439769e-05, +-4.082874232707493447e-05, +-4.078235679122155065e-05, +-4.073590921801535934e-05, +-4.068939968872707798e-05, +-4.064282828472050275e-05, +-4.059619508744499370e-05, +-4.054950017845478712e-05, +-4.050274363939074707e-05, +-4.045592555198308262e-05, +-4.040904599806017735e-05, +-4.036210505954111516e-05, +-4.031510281843704222e-05, +-4.026803935685366748e-05, +-4.022091475698246030e-05, +-4.017372910111304419e-05, +-4.012648247162462487e-05, +-4.007917495098821967e-05, +-4.003180662176623059e-05, +-3.998437756661423327e-05, +-3.993688786827330624e-05, +-3.988933760958150992e-05, +-3.984172687346561955e-05, +-3.979405574294322587e-05, +-3.974632430112299262e-05, +-3.969853263120549675e-05, +-3.965068081647587622e-05, +-3.960276894031551902e-05, +-3.955479708619377585e-05, +-3.950676533766995905e-05, +-3.945867377839519936e-05, +-3.941052249210402975e-05, +-3.936231156262675891e-05, +-3.931404107388074341e-05, +-3.926571110987280006e-05, +-3.921732175469844694e-05, +-3.916887309254454618e-05, +-3.912036520768016955e-05, +-3.907179818446951397e-05, +-3.902317210736291626e-05, +-3.897448706089902827e-05, +-3.892574312970489142e-05, +-3.887694039849751561e-05, +-3.882807895207536139e-05, +-3.877915887533124882e-05, +-3.873018025324302649e-05, +-3.868114317087663443e-05, +-3.863204771338675460e-05, +-3.858289396600926216e-05, +-3.853368201407099007e-05, +-3.848441194299228370e-05, +-3.843508383826720742e-05, +-3.838569778548504564e-05, +-3.833625387032147335e-05, +-3.828675217853189506e-05, +-3.823719279596435360e-05, +-3.818757580855071414e-05, +-3.813790130230866328e-05, +-3.808816936334371471e-05, +-3.803838007784023079e-05, +-3.798853353207254228e-05, +-3.793862981240665603e-05, +-3.788866900528061057e-05, +-3.783865119722592976e-05, +-3.778857647485912537e-05, +-3.773844492487246101e-05, +-3.768825663405591400e-05, +-3.763801168927707023e-05, +-3.758771017748354325e-05, +-3.753735218571336907e-05, +-3.748693780108858226e-05, +-3.743646711080605445e-05, +-3.738594020216177370e-05, +-3.733535716251964651e-05, +-3.728471807933562819e-05, +-3.723402304014908305e-05, +-3.718327213257322991e-05, +-3.713246544431750377e-05, +-3.708160306316745736e-05, +-3.703068507698661113e-05, +-3.697971157372758661e-05, +-3.692868264142526241e-05, +-3.687759836818773463e-05, +-3.682645884222046076e-05, +-3.677526415179528533e-05, +-3.672401438527450921e-05, +-3.667270963109956649e-05, +-3.662134997779347068e-05, +-3.656993551396008291e-05, +-3.651846632828673430e-05, +-3.646694250953505772e-05, +-3.641536414655396431e-05, +-3.636373132827262327e-05, +-3.631204414369230325e-05, +-3.626030268190735844e-05, +-3.620850703208590264e-05, +-3.615665728347148303e-05, +-3.610475352539389507e-05, +-3.605279584726096289e-05, +-3.600078433855931180e-05, +-3.594871908885758700e-05, +-3.589660018779670253e-05, +-3.584442772510341416e-05, +-3.579220179058119171e-05, +-3.573992247411209613e-05, +-3.568758986565688111e-05, +-3.563520405525693111e-05, +-3.558276513302520145e-05, +-3.553027318915941856e-05, +-3.547772831393303358e-05, +-3.542513059769753311e-05, +-3.537248013088154473e-05, +-3.531977700399411673e-05, +-3.526702130761447915e-05, +-3.521421313240574540e-05, +-3.516135256910611666e-05, +-3.510843970853050143e-05, +-3.505547464157271102e-05, +-3.500245745919648775e-05, +-3.494938825244876617e-05, +-3.489626711245052504e-05, +-3.484309413039861694e-05, +-3.478986939756616810e-05, +-3.473659300530416397e-05, +-3.468326504503243689e-05, +-3.462988560825317109e-05, +-3.457645478654160573e-05, +-3.452297267154805417e-05, +-3.446943935500037734e-05, +-3.441585492869415138e-05, +-3.436221948450664704e-05, +-3.430853311438745816e-05, +-3.425479591036034477e-05, +-3.420100796452368034e-05, +-3.414716936905186801e-05, +-3.409328021618645015e-05, +-3.403934059824736372e-05, +-3.398535060763508157e-05, +-3.393131033680955860e-05, +-3.387721987831344723e-05, +-3.382307932476248864e-05, +-3.376888876883841806e-05, +-3.371464830330261892e-05, +-3.366035802098715107e-05, +-3.360601801479623480e-05, +-3.355162837770911719e-05, +-3.349718920276975863e-05, +-3.344270058309917919e-05, +-3.338816261189727464e-05, +-3.333357538242150511e-05, +-3.327893898801034773e-05, +-3.322425352207350496e-05, +-3.316951907808273625e-05, +-3.311473574959720810e-05, +-3.305990363023053429e-05, +-3.300502281367651209e-05, +-3.295009339369733164e-05, +-3.289511546412781783e-05, +-3.284008911886367350e-05, +-3.278501445188732413e-05, +-3.272989155723456502e-05, +-3.267472052902044668e-05, +-3.261950146142964571e-05, +-3.256423444870685608e-05, +-3.250891958518047217e-05, +-3.245355696524074209e-05, +-3.239814668334236301e-05, +-3.234268883401576359e-05, +-3.228718351186029390e-05, +-3.223163081153408130e-05, +-3.217603082778054598e-05, +-3.212038365539437735e-05, +-3.206468938924808342e-05, +-3.200894812428199584e-05, +-3.195315995549432908e-05, +-3.189732497796572409e-05, +-3.184144328683662236e-05, +-3.178551497731001705e-05, +-3.172954014466308786e-05, +-3.167351888424051285e-05, +-3.161745129144318597e-05, +-3.156133746175372290e-05, +-3.150517749071378090e-05, +-3.144897147392632211e-05, +-3.139271950706758716e-05, +-3.133642168587776430e-05, +-3.128007810616254111e-05, +-3.122368886379557791e-05, +-3.116725405470894639e-05, +-3.111077377490710906e-05, +-3.105424812045720889e-05, +-3.099767718749174588e-05, +-3.094106107220757424e-05, +-3.088439987086879579e-05, +-3.082769367979672437e-05, +-3.077094259538428535e-05, +-3.071414671408627140e-05, +-3.065730613242115851e-05, +-3.060042094697404690e-05, +-3.054349125438611713e-05, +-3.048651715136945322e-05, +-3.042949873469714926e-05, +-3.037243610120542362e-05, +-3.031532934779349023e-05, +-3.025817857142587940e-05, +-3.020098386912238188e-05, +-3.014374533797287191e-05, +-3.008646307512692942e-05, +-3.002913717779643189e-05, +-2.997176774325534433e-05, +-2.991435486884188428e-05, +-2.985689865194865895e-05, +-2.979939919003703091e-05, +-2.974185658062747210e-05, +-2.968427092130172541e-05, +-2.962664230970476643e-05, +-2.956897084353532349e-05, +-2.951125662056010098e-05, +-2.945349973860400124e-05, +-2.939570029555219809e-05, +-2.933785838935023169e-05, +-2.927997411800604480e-05, +-2.922204757958010642e-05, +-2.916407887220006200e-05, +-2.910606809405068431e-05, +-2.904801534337601130e-05, +-2.898992071847952571e-05, +-2.893178431772605916e-05, +-2.887360623952947634e-05, +-2.881538658237993588e-05, +-2.875712544480839967e-05, +-2.869882292541454770e-05, +-2.864047912285624435e-05, +-2.858209413584180327e-05, +-2.852366806314243880e-05, +-2.846520100359492222e-05, +-2.840669305607803426e-05, +-2.834814431953853851e-05, +-2.828955489298017002e-05, +-2.823092487545360977e-05, +-2.817225436608436563e-05, +-2.811354346403683785e-05, +-2.805479226854201363e-05, +-2.799600087888489037e-05, +-2.793716939440950368e-05, +-2.787829791450516814e-05, +-2.781938653863560174e-05, +-2.776043536630203582e-05, +-2.770144449707153317e-05, +-2.764241403056664736e-05, +-2.758334406645499074e-05, +-2.752423470447432695e-05, +-2.746508604441002963e-05, +-2.740589818609679684e-05, +-2.734667122943177332e-05, +-2.728740527436634441e-05, +-2.722810042089602244e-05, +-2.716875676908836164e-05, +-2.710937441904660340e-05, +-2.704995347093821454e-05, +-2.699049402498432312e-05, +-2.693099618144883573e-05, +-2.687146004066466508e-05, +-2.681188570300992153e-05, +-2.675227326891030513e-05, +-2.669262283885224144e-05, +-2.663293451337461106e-05, +-2.657320839305816513e-05, +-2.651344457855180030e-05, +-2.645364317054831320e-05, +-2.639380426978736176e-05, +-2.633392797706803849e-05, +-2.627401439323843844e-05, +-2.621406361919814614e-05, +-2.615407575590013965e-05, +-2.609405090434118864e-05, +-2.603398916557635561e-05, +-2.597389064070894325e-05, +-2.591375543089266290e-05, +-2.585358363733177342e-05, +-2.579337536128316154e-05, +-2.573313070404603851e-05, +-2.567284976697710542e-05, +-2.561253265148044297e-05, +-2.555217945900931740e-05, +-2.549179029106925348e-05, +-2.543136524920684691e-05, +-2.537090443502564450e-05, +-2.531040795017547155e-05, +-2.524987589635469513e-05, +-2.518930837531030539e-05, +-2.512870548884018221e-05, +-2.506806733878246666e-05, +-2.500739402703112263e-05, +-2.494668565552536255e-05, +-2.488594232625211729e-05, +-2.482516414124555165e-05, +-2.476435120259011370e-05, +-2.470350361240911677e-05, +-2.464262147288101605e-05, +-2.458170488622822095e-05, +-2.452075395471984626e-05, +-2.445976878067415166e-05, +-2.439874946644769962e-05, +-2.433769611445104253e-05, +-2.427660882713801951e-05, +-2.421548770700841956e-05, +-2.415433285660739874e-05, +-2.409314437852828558e-05, +-2.403192237540162723e-05, +-2.397066694991116452e-05, +-2.390937820478275953e-05, +-2.384805624278702477e-05, +-2.378670116673924190e-05, +-2.372531307950165885e-05, +-2.366389208397002203e-05, +-2.360243828310301236e-05, +-2.354095177988424744e-05, +-2.347943267735191751e-05, +-2.341788107858766896e-05, +-2.335629708670858130e-05, +-2.329468080488013008e-05, +-2.323303233631896861e-05, +-2.317135178426843172e-05, +-2.310963925202539688e-05, +-2.304789484292911356e-05, +-2.298611866035027307e-05, +-2.292431080772102406e-05, +-2.286247138849623598e-05, +-2.280060050618351117e-05, +-2.273869826433210227e-05, +-2.267676476652459437e-05, +-2.261480011639031181e-05, +-2.255280441760774415e-05, +-2.249077777388027691e-05, +-2.242872028896276474e-05, +-2.236663206665065210e-05, +-2.230451321076902622e-05, +-2.224236382519950868e-05, +-2.218018401385570844e-05, +-2.211797388068554267e-05, +-2.205573352968509082e-05, +-2.199346306488986344e-05, +-2.193116259036385847e-05, +-2.186883221022931247e-05, +-2.180647202862863831e-05, +-2.174408214975386466e-05, +-2.168166267783580754e-05, +-2.161921371713277086e-05, +-2.155673537195796662e-05, +-2.149422774665460192e-05, +-2.143169094559820327e-05, +-2.136912507321055195e-05, +-2.130653023394834394e-05, +-2.124390653230560905e-05, +-2.118125407281669923e-05, +-2.111857296004455550e-05, +-2.105586329859765875e-05, +-2.099312519311827632e-05, +-2.093035874828542324e-05, +-2.086756406881453357e-05, +-2.080474125946015393e-05, +-2.074189042500447475e-05, +-2.067901167027410485e-05, +-2.061610510012847725e-05, +-2.055317081946275286e-05, +-2.049020893320735624e-05, +-2.042721954633079117e-05, +-2.036420276382833105e-05, +-2.030115869073835988e-05, +-2.023808743213122190e-05, +-2.017498909311192195e-05, +-2.011186377882248698e-05, +-2.004871159443075471e-05, +-1.998553264514701618e-05, +-1.992232703621261804e-05, +-1.985909487290240199e-05, +-1.979583626052491149e-05, +-1.973255130442471602e-05, +-1.966924010997113533e-05, +-1.960590278257482103e-05, +-1.954253942767643677e-05, +-1.947915015074931118e-05, +-1.941573505729918717e-05, +-1.935229425286674266e-05, +-1.928882784301651478e-05, +-1.922533593335334931e-05, +-1.916181862951095885e-05, +-1.909827603715461990e-05, +-1.903470826198388325e-05, +-1.897111540972107134e-05, +-1.890749758612791061e-05, +-1.884385489699424556e-05, +-1.878018744814054266e-05, +-1.871649534541793434e-05, +-1.865277869471062121e-05, +-1.858903760192438627e-05, +-1.852527217300372193e-05, +-1.846148251391991734e-05, +-1.839766873067399250e-05, +-1.833383092929632217e-05, +-1.826996921584964119e-05, +-1.820608369641420101e-05, +-1.814217447711920822e-05, +-1.807824166410272257e-05, +-1.801428536354271264e-05, +-1.795030568164554972e-05, +-1.788630272463741209e-05, +-1.782227659877825095e-05, +-1.775822741036422309e-05, +-1.769415526570238150e-05, +-1.763006027113846487e-05, +-1.756594253304576418e-05, +-1.750180215781330152e-05, +-1.743763925187698393e-05, +-1.737345392167962684e-05, +-1.730924627370221980e-05, +-1.724501641445209165e-05, +-1.718076445045441995e-05, +-1.711649048826611547e-05, +-1.705219463447864794e-05, +-1.698787699569220475e-05, +-1.692353767854390392e-05, +-1.685917678969634225e-05, +-1.679479443582592314e-05, +-1.673039072365411893e-05, +-1.666596575990734186e-05, +-1.660151965134806746e-05, +-1.653705250476049255e-05, +-1.647256442695611890e-05, +-1.640805552475914703e-05, +-1.634352590503773843e-05, +-1.627897567466401197e-05, +-1.621440494054512992e-05, +-1.614981380961173096e-05, +-1.608520238880631898e-05, +-1.602057078511175730e-05, +-1.595591910552515634e-05, +-1.589124745706089244e-05, +-1.582655594676431624e-05, +-1.576184468170053118e-05, +-1.569711376895678554e-05, +-1.563236331564525747e-05, +-1.556759342889150823e-05, +-1.550280421585136867e-05, +-1.543799578369942972e-05, +-1.537316823963152926e-05, +-1.530832169086478607e-05, +-1.524345624464016455e-05, +-1.517857200821094501e-05, +-1.511366908885959309e-05, +-1.504874759388623339e-05, +-1.498380763061128203e-05, +-1.491884930637534161e-05, +-1.485387272854179314e-05, +-1.478887800448523915e-05, +-1.472386524160838499e-05, +-1.465883454733069374e-05, +-1.459378602909070703e-05, +-1.452871979434894701e-05, +-1.446363595057634246e-05, +-1.439853460527102888e-05, +-1.433341586594685929e-05, +-1.426827984013601482e-05, +-1.420312663538899794e-05, +-1.413795635927707525e-05, +-1.407276911938075790e-05, +-1.400756502330686586e-05, +-1.394234417867683381e-05, +-1.387710669312938101e-05, +-1.381185267432040621e-05, +-1.374658222992559995e-05, +-1.368129546762877750e-05, +-1.361599249513903976e-05, +-1.355067342017897071e-05, +-1.348533835048755965e-05, +-1.341998739382256106e-05, +-1.335462065794904608e-05, +-1.328923825065356831e-05, +-1.322384027974695052e-05, +-1.315842685303795553e-05, +-1.309299807836211236e-05, +-1.302755406357000692e-05, +-1.296209491651834069e-05, +-1.289662074508715258e-05, +-1.283113165716808249e-05, +-1.276562776066708177e-05, +-1.270010916350709666e-05, +-1.263457597361630975e-05, +-1.256902829894250226e-05, +-1.250346624745578999e-05, +-1.243788992712224162e-05, +-1.237229944593282352e-05, +-1.230669491189147689e-05, +-1.224107643300638488e-05, +-1.217544411730427899e-05, +-1.210979807283306143e-05, +-1.204413840763560304e-05, +-1.197846522977856106e-05, +-1.191277864734061211e-05, +-1.184707876840059544e-05, +-1.178136570106939525e-05, +-1.171563955344897989e-05, +-1.164990043366421299e-05, +-1.158414844985115256e-05, +-1.151838371014804199e-05, +-1.145260632270963330e-05, +-1.138681639571007899e-05, +-1.132101403731644526e-05, +-1.125519935571766024e-05, +-1.118937245911277070e-05, +-1.112353345569891083e-05, +-1.105768245370347252e-05, +-1.099181956134284978e-05, +-1.092594488685452607e-05, +-1.086005853848216138e-05, +-1.079416062447846204e-05, +-1.072825125310492318e-05, +-1.066233053263457990e-05, +-1.059639857134022338e-05, +-1.053045547751163117e-05, +-1.046450135944675470e-05, +-1.039853632543969142e-05, +-1.033256048380991076e-05, +-1.026657394287563705e-05, +-1.020057681095667348e-05, +-1.013456919638876609e-05, +-1.006855120751189777e-05, +-1.000252295267279211e-05, +-9.936484540227837357e-06, +-9.870436078531165237e-06, +-9.804377675952008394e-06, +-9.738309440865735377e-06, +-9.672231481642054859e-06, +-9.606143906674004495e-06, +-9.540046824351460815e-06, +-9.473940343063878524e-06, +-9.407824571214813732e-06, +-9.341699617209951991e-06, +-9.275565589459933995e-06, +-9.209422596380130270e-06, +-9.143270746393407583e-06, +-9.077110147918212885e-06, +-9.010940909386020491e-06, +-8.944763139229397391e-06, +-8.878576945884786596e-06, +-8.812382437795219340e-06, +-8.746179723398434596e-06, +-8.679968911144321175e-06, +-8.613750109482972873e-06, +-8.547523426867451488e-06, +-8.481288971753637743e-06, +-8.415046852602933323e-06, +-8.348797177870437988e-06, +-8.282540056022232432e-06, +-8.216275595523619773e-06, +-8.150003904841836058e-06, +-8.083725092448720113e-06, +-8.017439266808902511e-06, +-7.951146536397195162e-06, +-7.884847009686693888e-06, +-7.818540795151522808e-06, +-7.752228001266653074e-06, +-7.685908736510643871e-06, +-7.619583109353798352e-06, +-7.553251228272577601e-06, +-7.486913201752400073e-06, +-7.420569138261037989e-06, +-7.354219146277838273e-06, +-7.287863334281707392e-06, +-7.221501810742209040e-06, +-7.155134684137000312e-06, +-7.088762062939835172e-06, +-7.022384055623459619e-06, +-6.956000770662215458e-06, +-6.889612316520211492e-06, +-6.823218801665839121e-06, +-6.756820334574489625e-06, +-6.690417023701942084e-06, +-6.624008977513601262e-06, +-6.557596304472552743e-06, +-6.491179113030542883e-06, +-6.424757511645444628e-06, +-6.358331608769371947e-06, +-6.291901512851416593e-06, +-6.225467332337438891e-06, +-6.159029175672874801e-06, +-6.092587151287801035e-06, +-6.026141367629216330e-06, +-5.959691933119542761e-06, +-5.893238956188945132e-06, +-5.826782545263297176e-06, +-5.760322808755180988e-06, +-5.693859855078471233e-06, +-5.627393792651157463e-06, +-5.560924729868466914e-06, +-5.494452775132345487e-06, +-5.427978036839401928e-06, +-5.361500623368918923e-06, +-5.295020643115240255e-06, +-5.228538204446120490e-06, +-5.162053415735154490e-06, +-5.095566385346757821e-06, +-5.029077221639007700e-06, +-4.962586032963377875e-06, +-4.896092927667596515e-06, +-4.829598014083636977e-06, +-4.763101400545231056e-06, +-4.696603195378903147e-06, +-4.630103506891878843e-06, +-4.563602443401541358e-06, +-4.497100113208617004e-06, +-4.430596624599977171e-06, +-4.364092085863196292e-06, +-4.297586605274620526e-06, +-4.231080291102105378e-06, +-4.164573251607798195e-06, +-4.098065595036145030e-06, +-4.031557429631450484e-06, +-3.965048863628855952e-06, +-3.898540005242276185e-06, +-3.832030962693874341e-06, +-3.765521844187210617e-06, +-3.699012757910042539e-06, +-3.632503812048959153e-06, +-3.565995114777337058e-06, +-3.499486774258142398e-06, +-3.432978898643774579e-06, +-3.366471596078805154e-06, +-3.299964974688004160e-06, +-3.233459142593940199e-06, +-3.166954207904870402e-06, +-3.100450278717657613e-06, +-3.033947463120425839e-06, +-2.967445869180661126e-06, +-2.900945604962726088e-06, +-2.834446778515854061e-06, +-2.767949497876941768e-06, +-2.701453871070409137e-06, +-2.634960006110899218e-06, +-2.568468010991362548e-06, +-2.501977993700562356e-06, +-2.435490062211124199e-06, +-2.369004324482262986e-06, +-2.302520888462612066e-06, +-2.236039862078189855e-06, +-2.169561353249982125e-06, +-2.103085469881950976e-06, +-2.036612319863774572e-06, +-1.970142011070731090e-06, +-1.903674651366443959e-06, +-1.837210348590865637e-06, +-1.770749210574942715e-06, +-1.704291345143350352e-06, +-1.637836860087722860e-06, +-1.571385863196045953e-06, +-1.504938462240668908e-06, +-1.438494764969223944e-06, +-1.372054879122238154e-06, +-1.305618912421106067e-06, +-1.239186972570881249e-06, +-1.172759167263051399e-06, +-1.106335604163540549e-06, +-1.039916390927315092e-06, +-9.735016352012001601e-07, +-9.070914445970327101e-07, +-8.406859267211084080e-07, +-7.742851891621704915e-07, +-7.078893394823363529e-07, +-6.414984852347019544e-07, +-5.751127339513232772e-07, +-5.087321931460035895e-07, +-4.423569703141155168e-07, +-3.759871729353959328e-07, +-3.096229084589640643e-07, +-2.432642843357138307e-07, +-1.769114079767000156e-07, +-1.105643867855239894e-07, +-4.422332814631909546e-08, + 2.211166058529733188e-08, + 8.844047206760070168e-08, + 1.547629989699757696e-07, + 2.210791339997171707e-07, + 2.873887698726182285e-07, + 3.536917993249703845e-07, + 4.199881151255794988e-07, + 4.862776100433902122e-07, + 5.525601768890765617e-07, + 6.188357084826713981e-07, + 6.851040976655798017e-07, + 7.513652373125717983e-07, + 8.176190203023841749e-07, + 8.838653395445105435e-07, + 9.501040879764160852e-07, + 1.016335158548918608e-06, + 1.082558444235245449e-06, + 1.148773838043007974e-06, + 1.214981232984837704e-06, + 1.281180522105148317e-06, + 1.347371598477352724e-06, + 1.413554355189257254e-06, + 1.479728685355048230e-06, + 1.545894482112532126e-06, + 1.612051638620324260e-06, + 1.678200048069857819e-06, + 1.744339603667825714e-06, + 1.810470198645198299e-06, + 1.876591726269244257e-06, + 1.942704079814115260e-06, + 2.008807152587665363e-06, + 2.074900837928602428e-06, + 2.140985029191937801e-06, + 2.207059619760951278e-06, + 2.273124503044418346e-06, + 2.339179572473820485e-06, + 2.405224721515326017e-06, + 2.471259843652253566e-06, + 2.537284832397046560e-06, + 2.603299581288503009e-06, + 2.669303983891933054e-06, + 2.735297933796376044e-06, + 2.801281324626592821e-06, + 2.867254050025518168e-06, + 2.933216003666234886e-06, + 2.999167079249206543e-06, + 3.065107170502408335e-06, + 3.131036171178617852e-06, + 3.196953975067318860e-06, + 3.262860475977199053e-06, + 3.328755567748116092e-06, + 3.394639144248342206e-06, + 3.460511099371744839e-06, + 3.526371327049753114e-06, + 3.592219721233880576e-06, + 3.658056175907675129e-06, + 3.723880585083884024e-06, + 3.789692842804696528e-06, + 3.855492843138940673e-06, + 3.921280480194003969e-06, + 3.987055648098393423e-06, + 4.052818241013632117e-06, + 4.118568153131511854e-06, + 4.184305278674260873e-06, + 4.250029511891744402e-06, + 4.315740747073451026e-06, + 4.381438878530942159e-06, + 4.447123800609871445e-06, + 4.512795407687135340e-06, + 4.578453594168151591e-06, + 4.644098254498782922e-06, + 4.709729283150750279e-06, + 4.775346574618987546e-06, + 4.840950023448105395e-06, + 4.906539524203282999e-06, + 4.972114971482164610e-06, + 5.037676259923831331e-06, + 5.103223284191324289e-06, + 5.168755938983619132e-06, + 5.234274119032794407e-06, + 5.299777719101332905e-06, + 5.365266633993939472e-06, + 5.430740758543116030e-06, + 5.496199987606368918e-06, + 5.561644216092793013e-06, + 5.627073338933821995e-06, + 5.692487251095321430e-06, + 5.757885847589228703e-06, + 5.823269023444617521e-06, + 5.888636673734142284e-06, + 5.953988693571315719e-06, + 6.019324978095978033e-06, + 6.084645422483316963e-06, + 6.149949921955672030e-06, + 6.215238371750588691e-06, + 6.280510667161885035e-06, + 6.345766703507678835e-06, + 6.411006376142189252e-06, + 6.476229580467715581e-06, + 6.541436211905490843e-06, + 6.606626165922118532e-06, + 6.671799338026901919e-06, + 6.736955623757359793e-06, + 6.802094918688182979e-06, + 6.867217118442988623e-06, + 6.932322118662531039e-06, + 6.997409815045606629e-06, + 7.062480103317158853e-06, + 7.127532879243022534e-06, + 7.192568038627189636e-06, + 7.257585477311975282e-06, + 7.322585091175258965e-06, + 7.387566776142293887e-06, + 7.452530428168424092e-06, + 7.517475943247969848e-06, + 7.582403217426076787e-06, + 7.647312146769644041e-06, + 7.712202627393860936e-06, + 7.777074555459384682e-06, + 7.841927827157862035e-06, + 7.906762338723862299e-06, + 7.971577986432199007e-06, + 8.036374666594917873e-06, + 8.101152275573358539e-06, + 8.165910709760715864e-06, + 8.230649865593913628e-06, + 8.295369639550853372e-06, + 8.360069928150541452e-06, + 8.424750627950366674e-06, + 8.489411635557913018e-06, + 8.554052847613675080e-06, + 8.618674160802781013e-06, + 8.683275471852361637e-06, + 8.747856677531628370e-06, + 8.812417674649247425e-06, + 8.876958360064879787e-06, + 8.941478630672265962e-06, + 9.005978383410696503e-06, + 9.070457515262431942e-06, + 9.134915923249927914e-06, + 9.199353504447613995e-06, + 9.263770155964612537e-06, + 9.328165774956570023e-06, + 9.392540258622843224e-06, + 9.456893504206768556e-06, + 9.521225408992809274e-06, + 9.585535870318339391e-06, + 9.649824785556542086e-06, + 9.714092052127970008e-06, + 9.778337567497951663e-06, + 9.842561229176681196e-06, + 9.906762934716558712e-06, + 9.970942581723809869e-06, + 1.003510006784146730e-05, + 1.009923529076086992e-05, + 1.016334814821915910e-05, + 1.022743853799645299e-05, + 1.029150635792752197e-05, + 1.035555150588753484e-05, + 1.041957387978941772e-05, + 1.048357337760988170e-05, + 1.054754989736080837e-05, + 1.061150333710091857e-05, + 1.067543359494451034e-05, + 1.073934056904449287e-05, + 1.080322415760388751e-05, + 1.086708425887332566e-05, + 1.093092077114808581e-05, + 1.099473359277996217e-05, + 1.105852262216288717e-05, + 1.112228775773042082e-05, + 1.118602889798153779e-05, + 1.124974594145216879e-05, + 1.131343878672699975e-05, + 1.137710733245082038e-05, + 1.144075147730020612e-05, + 1.150437112000941030e-05, + 1.156796615936768746e-05, + 1.163153649420508189e-05, + 1.169508202340125704e-05, + 1.175860264589699997e-05, + 1.182209826066303357e-05, + 1.188556876674012528e-05, + 1.194901406320774346e-05, + 1.201243404919589725e-05, + 1.207582862389638345e-05, + 1.213919768653463961e-05, + 1.220254113639553282e-05, + 1.226585887282063903e-05, + 1.232915079519409418e-05, + 1.239241680295136612e-05, + 1.245565679559095212e-05, + 1.251887067264285060e-05, + 1.258205833370894258e-05, + 1.264521967843156846e-05, + 1.270835460650822912e-05, + 1.277146301768847222e-05, + 1.283454481177445633e-05, + 1.289759988861804394e-05, + 1.296062814813230918e-05, + 1.302362949027484457e-05, + 1.308660381505620419e-05, + 1.314955102255155213e-05, + 1.321247101287247486e-05, + 1.327536368619254644e-05, + 1.333822894274476875e-05, + 1.340106668280744300e-05, + 1.346387680671575205e-05, + 1.352665921485904142e-05, + 1.358941380767814609e-05, + 1.365214048567692535e-05, + 1.371483914940542215e-05, + 1.377750969947115228e-05, + 1.384015203653677170e-05, + 1.390276606131994100e-05, + 1.396535167459082155e-05, + 1.402790877718344103e-05, + 1.409043726997894584e-05, + 1.415293705391709707e-05, + 1.421540802999349224e-05, + 1.427785009925982276e-05, + 1.434026316282114141e-05, + 1.440264712184729903e-05, + 1.446500187755630194e-05, + 1.452732733122554704e-05, + 1.458962338418935692e-05, + 1.465188993783615417e-05, + 1.471412689361997593e-05, + 1.477633415304368741e-05, + 1.483851161767046766e-05, + 1.490065918912111766e-05, + 1.496277676907404850e-05, + 1.502486425926303166e-05, + 1.508692156148807488e-05, + 1.514894857759921848e-05, + 1.521094520950748911e-05, + 1.527291135918257725e-05, + 1.533484692865006401e-05, + 1.539675182000266630e-05, + 1.545862593538375532e-05, + 1.552046917699872542e-05, + 1.558228144711225644e-05, + 1.564406264804832057e-05, + 1.570581268218790546e-05, + 1.576753145198002567e-05, + 1.582921885992812609e-05, + 1.589087480858720884e-05, + 1.595249920058940343e-05, + 1.601409193861598766e-05, + 1.607565292540871744e-05, + 1.613718206377846319e-05, + 1.619867925658853686e-05, + 1.626014440676605227e-05, + 1.632157741729923500e-05, + 1.638297819123478639e-05, + 1.644434663168936253e-05, + 1.650568264183543561e-05, + 1.656698612489902045e-05, + 1.662825698418466877e-05, + 1.668949512304790674e-05, + 1.675070044490636496e-05, + 1.681187285325121009e-05, + 1.687301225161674304e-05, + 1.693411854361922706e-05, + 1.699519163292675364e-05, + 1.705623142327302881e-05, + 1.711723781845215546e-05, + 1.717821072233259580e-05, + 1.723915003882677306e-05, + 1.730005567193022132e-05, + 1.736092752569090941e-05, + 1.742176550422076052e-05, + 1.748256951170675176e-05, + 1.754333945238354138e-05, + 1.760407523055819543e-05, + 1.766477675060795153e-05, + 1.772544391696624289e-05, + 1.778607663413142267e-05, + 1.784667480667756202e-05, + 1.790723833922477681e-05, + 1.796776713647737798e-05, + 1.802826110319427958e-05, + 1.808872014419973581e-05, + 1.814914416439470139e-05, + 1.820953306872957403e-05, + 1.826988676222876859e-05, + 1.833020514998828776e-05, + 1.839048813716237282e-05, + 1.845073562897146577e-05, + 1.851094753071355276e-05, + 1.857112374773688967e-05, + 1.863126418546484048e-05, + 1.869136874939320066e-05, + 1.875143734507669544e-05, + 1.881146987814003870e-05, + 1.887146625427545962e-05, + 1.893142637924001928e-05, + 1.899135015886656787e-05, + 1.905123749904774936e-05, + 1.911108830574707385e-05, + 1.917090248499600383e-05, + 1.923067994289438446e-05, + 1.929042058560794648e-05, + 1.935012431937899923e-05, + 1.940979105051055716e-05, + 1.946942068537723953e-05, + 1.952901313042262763e-05, + 1.958856829215692696e-05, + 1.964808607716772118e-05, + 1.970756639210396319e-05, + 1.976700914368692894e-05, + 1.982641423870776105e-05, + 1.988578158402738410e-05, + 1.994511108657423120e-05, + 2.000440265335488949e-05, + 2.006365619143836567e-05, + 2.012287160796681282e-05, + 2.018204881015286392e-05, + 2.024118770528025868e-05, + 2.030028820070068580e-05, + 2.035935020384516030e-05, + 2.041837362220779101e-05, + 2.047735836335672419e-05, + 2.053630433493164651e-05, + 2.059521144464123379e-05, + 2.065407960027394895e-05, + 2.071290870968215848e-05, + 2.077169868079307269e-05, + 2.083044942160608266e-05, + 2.088916084019290929e-05, + 2.094783284469516727e-05, + 2.100646534333513253e-05, + 2.106505824439981804e-05, + 2.112361145625193102e-05, + 2.118212488732720649e-05, + 2.124059844613458004e-05, + 2.129903204125380939e-05, + 2.135742558134872199e-05, + 2.141577897513819901e-05, + 2.147409213143347534e-05, + 2.153236495910913038e-05, + 2.159059736711390972e-05, + 2.164878926447853821e-05, + 2.170694056030295682e-05, + 2.176505116375364944e-05, + 2.182312098408764102e-05, + 2.188114993062601927e-05, + 2.193913791276493600e-05, + 2.199708483998603572e-05, + 2.205499062182792762e-05, + 2.211285516792269265e-05, + 2.217067838796769769e-05, + 2.222846019173838910e-05, + 2.228620048908336979e-05, + 2.234389918993760616e-05, + 2.240155620429379159e-05, + 2.245917144223920592e-05, + 2.251674481392688587e-05, + 2.257427622958634508e-05, + 2.263176559953422975e-05, + 2.268921283414818263e-05, + 2.274661784389055315e-05, + 2.280398053930600879e-05, + 2.286130083100835187e-05, + 2.291857862968895259e-05, + 2.297581384612683549e-05, + 2.303300639116039877e-05, + 2.309015617572410768e-05, + 2.314726311081969208e-05, + 2.320432710752686305e-05, + 2.326134807701399232e-05, + 2.331832593051207783e-05, + 2.337526057933821675e-05, + 2.343215193489331166e-05, + 2.348899990864913810e-05, + 2.354580441215627616e-05, + 2.360256535705453239e-05, + 2.365928265504743731e-05, + 2.371595621792531522e-05, + 2.377258595756310901e-05, + 2.382917178590760013e-05, + 2.388571361498753232e-05, + 2.394221135691156858e-05, + 2.399866492386570939e-05, + 2.405507422812357574e-05, + 2.411143918203144707e-05, + 2.416775969801821227e-05, + 2.422403568859341131e-05, + 2.428026706634716750e-05, + 2.433645374394754471e-05, + 2.439259563415131828e-05, + 2.444869264978848447e-05, + 2.450474470377273994e-05, + 2.456075170909893728e-05, + 2.461671357884092335e-05, + 2.467263022616160209e-05, + 2.472850156429786403e-05, + 2.478432750657096761e-05, + 2.484010796638401157e-05, + 2.489584285722237544e-05, + 2.495153209265067699e-05, + 2.500717558632380735e-05, + 2.506277325197144392e-05, + 2.511832500340816388e-05, + 2.517383075453162480e-05, + 2.522929041932191411e-05, + 2.528470391183992278e-05, + 2.534007114623689988e-05, + 2.539539203674007672e-05, + 2.545066649766240097e-05, + 2.550589444340035128e-05, + 2.556107578843160288e-05, + 2.561621044732502597e-05, + 2.567129833472589988e-05, + 2.572633936536603008e-05, + 2.578133345406152549e-05, + 2.583628051571252074e-05, + 2.589118046530129231e-05, + 2.594603321790221964e-05, + 2.600083868866652842e-05, + 2.605559679283314271e-05, + 2.611030744572566617e-05, + 2.616497056275292075e-05, + 2.621958605940640218e-05, + 2.627415385127287710e-05, + 2.632867385400720342e-05, + 2.638314598336713321e-05, + 2.643757015518645502e-05, + 2.649194628538444334e-05, + 2.654627428997408161e-05, + 2.660055408504939398e-05, + 2.665478558678316176e-05, + 2.670896871144956623e-05, + 2.676310337539921139e-05, + 2.681718949506940015e-05, + 2.687122698699395988e-05, + 2.692521576777654737e-05, + 2.697915575412486555e-05, + 2.703304686282392773e-05, + 2.708688901074614747e-05, + 2.714068211485858579e-05, + 2.719442609221093009e-05, + 2.724812085993314953e-05, + 2.730176633525766025e-05, + 2.735536243549511031e-05, + 2.740890907804396139e-05, + 2.746240618040069384e-05, + 2.751585366013556115e-05, + 2.756925143491435539e-05, + 2.762259942249621842e-05, + 2.767589754072181054e-05, + 2.772914570752046964e-05, + 2.778234384092020617e-05, + 2.783549185902098433e-05, + 2.788858968002907773e-05, + 2.794163722223011681e-05, + 2.799463440399926339e-05, + 2.804758114381082618e-05, + 2.810047736021434398e-05, + 2.815332297185626294e-05, + 2.820611789747790366e-05, + 2.825886205590322667e-05, + 2.831155536604887485e-05, + 2.836419774692169670e-05, + 2.841678911761648645e-05, + 2.846932939732586048e-05, + 2.852181850532578658e-05, + 2.857425636098550784e-05, + 2.862664288376494729e-05, + 2.867897799321532794e-05, + 2.873126160897651311e-05, + 2.878349365078645256e-05, + 2.883567403846789418e-05, + 2.888780269193703731e-05, + 2.893987953120184209e-05, + 2.899190447636196166e-05, + 2.904387744760668894e-05, + 2.909579836522426050e-05, + 2.914766714958790078e-05, + 2.919948372116564433e-05, + 2.925124800051749990e-05, + 2.930295990829401054e-05, + 2.935461936524508641e-05, + 2.940622629220637435e-05, + 2.945778061010872770e-05, + 2.950928223997591256e-05, + 2.956073110292470259e-05, + 2.961212712016298514e-05, + 2.966347021299862451e-05, + 2.971476030282616361e-05, + 2.976599731113574148e-05, + 2.981718115951167026e-05, + 2.986831176963150350e-05, + 2.991938906326468427e-05, + 2.997041296228151355e-05, + 3.002138338863966544e-05, + 3.007230026439307427e-05, + 3.012316351169038960e-05, + 3.017397305277212002e-05, + 3.022472880998073314e-05, + 3.027543070574614429e-05, + 3.032607866259552510e-05, + 3.037667260315110124e-05, + 3.042721245013003384e-05, + 3.047769812634248146e-05, + 3.052812955470081923e-05, + 3.057850665820606255e-05, + 3.062882935995674068e-05, + 3.067909758314753125e-05, + 3.072931125106619744e-05, + 3.077947028710335933e-05, + 3.082957461474135374e-05, + 3.087962415755125264e-05, + 3.092961883921477084e-05, + 3.097955858350026447e-05, + 3.102944331427280047e-05, + 3.107927295550098711e-05, + 3.112904743124529167e-05, + 3.117876666565650904e-05, + 3.122843058299570423e-05, + 3.127803910761214889e-05, + 3.132759216395218464e-05, + 3.137708967656856077e-05, + 3.142653157009536204e-05, + 3.147591776928023664e-05, + 3.152524819895936463e-05, + 3.157452278406660591e-05, + 3.162374144964039845e-05, + 3.167290412081276045e-05, + 3.172201072280691179e-05, + 3.177106118095792818e-05, + 3.182005542068990509e-05, + 3.186899336752551228e-05, + 3.191787494709508757e-05, + 3.196670008511159856e-05, + 3.201546870740251135e-05, + 3.206418073988533503e-05, + 3.211283610857870767e-05, + 3.216143473959812046e-05, + 3.220997655916720697e-05, + 3.225846149359311147e-05, + 3.230688946929825600e-05, + 3.235526041279544442e-05, + 3.240357425069739658e-05, + 3.245183090972518481e-05, + 3.250003031668646173e-05, + 3.254817239849574844e-05, + 3.259625708217166298e-05, + 3.264428429482667466e-05, + 3.269225396367566244e-05, + 3.274016601603388886e-05, + 3.278802037931504169e-05, + 3.283581698103980591e-05, + 3.288355574882315818e-05, + 3.293123661038310828e-05, + 3.297885949353848321e-05, + 3.302642432620922540e-05, + 3.307393103641435980e-05, + 3.312137955228078946e-05, + 3.316876980202983791e-05, + 3.321610171398690529e-05, + 3.326337521657877821e-05, + 3.331059023833407020e-05, + 3.335774670788082288e-05, + 3.340484455395574884e-05, + 3.345188370539090266e-05, + 3.349886409112275441e-05, + 3.354578564018979078e-05, + 3.359264828173098367e-05, + 3.363945194499389462e-05, + 3.368619655932252494e-05, + 3.373288205416521008e-05, + 3.377950835907347443e-05, + 3.382607540370153665e-05, + 3.387258311780450042e-05, + 3.391903143124689929e-05, + 3.396542027398990988e-05, + 3.401174957610043209e-05, + 3.405801926774837857e-05, + 3.410422927920756919e-05, + 3.415037954085305442e-05, + 3.419646998316986351e-05, + 3.424250053674063776e-05, + 3.428847113225402636e-05, + 3.433438170050266024e-05, + 3.438023217238102438e-05, + 3.442602247889427365e-05, + 3.447175255114782457e-05, + 3.451742232034502419e-05, + 3.456303171780624562e-05, + 3.460858067494838311e-05, + 3.465406912329275986e-05, + 3.469949699447192471e-05, + 3.474486422021721082e-05, + 3.479017073236677241e-05, + 3.483541646286435819e-05, + 3.488060134375639760e-05, + 3.492572530720101324e-05, + 3.497078828545785646e-05, + 3.501579021088563402e-05, + 3.506073101596106812e-05, + 3.510561063325864207e-05, + 3.515042899545846083e-05, + 3.519518603535274265e-05, + 3.523988168583568173e-05, + 3.528451587990137476e-05, + 3.532908855066271988e-05, + 3.537359963133031537e-05, + 3.541804905522149925e-05, + 3.546243675576815548e-05, + 3.550676266649485375e-05, + 3.555102672104659830e-05, + 3.559522885316753008e-05, + 3.563936899670852300e-05, + 3.568344708563347901e-05, + 3.572746305400971266e-05, + 3.577141683600514564e-05, + 3.581530836590768020e-05, + 3.585913757810419946e-05, + 3.590290440708932235e-05, + 3.594660878747296592e-05, + 3.599025065395911532e-05, + 3.603382994137336253e-05, + 3.607734658464116810e-05, + 3.612080051879810685e-05, + 3.616419167898762496e-05, + 3.620752000046160914e-05, + 3.625078541857795398e-05, + 3.629398786880920843e-05, + 3.633712728673011431e-05, + 3.638020360802413176e-05, + 3.642321676849131335e-05, + 3.646616670402856477e-05, + 3.650905335064751387e-05, + 3.655187664447268780e-05, + 3.659463652173178911e-05, + 3.663733291876354267e-05, + 3.667996577201598123e-05, + 3.672253501804429061e-05, + 3.676504059351925970e-05, + 3.680748243521497472e-05, + 3.684986048001525673e-05, + 3.689217466492160336e-05, + 3.693442492703313113e-05, + 3.697661120356514233e-05, + 3.701873343184656367e-05, + 3.706079154931041881e-05, + 3.710278549350199377e-05, + 3.714471520207691246e-05, + 3.718658061280077757e-05, + 3.722838166354802534e-05, + 3.727011829230930494e-05, + 3.731179043717978262e-05, + 3.735339803636760528e-05, + 3.739494102819165074e-05, + 3.743641935107954908e-05, + 3.747783294357584803e-05, + 3.751918174433018839e-05, + 3.756046569210537455e-05, + 3.760168472577544329e-05, + 3.764283878432580604e-05, + 3.768392780685133800e-05, + 3.772495173256410985e-05, + 3.776591050078189520e-05, + 3.780680405093636987e-05, + 3.784763232257063858e-05, + 3.788839525533798806e-05, + 3.792909278900918516e-05, + 3.796972486346157378e-05, + 3.801029141868606122e-05, + 3.805079239478626439e-05, + 3.809122773197775761e-05, + 3.813159737058667673e-05, + 3.817190125105725430e-05, + 3.821213931394251581e-05, + 3.825231149990237551e-05, + 3.829241774972113276e-05, + 3.833245800428792247e-05, + 3.837243220460492121e-05, + 3.841234029179304600e-05, + 3.845218220708033981e-05, + 3.849195789181015728e-05, + 3.853166728743896924e-05, + 3.857131033553463473e-05, + 3.861088697778414626e-05, + 3.865039715598416343e-05, + 3.868984081203939333e-05, + 3.872921788797926019e-05, + 3.876852832593956203e-05, + 3.880777206816981613e-05, + 3.884694905703905949e-05, + 3.888605923502508137e-05, + 3.892510254472087431e-05, + 3.896407892883425460e-05, + 3.900298833018700853e-05, + 3.904183069171325929e-05, + 3.908060595646912312e-05, + 3.911931406761218406e-05, + 3.915795496842756896e-05, + 3.919652860230765938e-05, + 3.923503491275955225e-05, + 3.927347384341062318e-05, + 3.931184533799937170e-05, + 3.935014934037406607e-05, + 3.938838579450868100e-05, + 3.942655464448525905e-05, + 3.946465583450110024e-05, + 3.950268930887556543e-05, + 3.954065501203142806e-05, + 3.957855288851900438e-05, + 3.961638288299701731e-05, + 3.965414494024026716e-05, + 3.969183900514558120e-05, + 3.972946502271566582e-05, + 3.976702293807396011e-05, + 3.980451269646340253e-05, + 3.984193424323772349e-05, + 3.987928752386679854e-05, + 3.991657248394353986e-05, + 3.995378906916661674e-05, + 3.999093722535633245e-05, + 4.002801689845273357e-05, + 4.006502803450734981e-05, + 4.010197057968979402e-05, + 4.013884448028637986e-05, + 4.017564968269825835e-05, + 4.021238613344891915e-05, + 4.024905377917294879e-05, + 4.028565256662237996e-05, + 4.032218244267283088e-05, + 4.035864335430684242e-05, + 4.039503524862931444e-05, + 4.043135807286546613e-05, + 4.046761177435309078e-05, + 4.050379630054878308e-05, + 4.053991159902681435e-05, + 4.057595761747716739e-05, + 4.061193430371236014e-05, + 4.064784160565806741e-05, + 4.068367947135865024e-05, + 4.071944784897670190e-05, + 4.075514668679290566e-05, + 4.079077593320377140e-05, + 4.082633553672938099e-05, + 4.086182544600235647e-05, + 4.089724560977567308e-05, + 4.093259597692028762e-05, + 4.096787649642571436e-05, + 4.100308711739792446e-05, + 4.103822778906646103e-05, + 4.107329846077460673e-05, + 4.110829908198590261e-05, + 4.114322960228217614e-05, + 4.117808997136296529e-05, + 4.121288013905112247e-05, + 4.124760005528381565e-05, + 4.128224967011847116e-05, + 4.131682893373180465e-05, + 4.135133779641953655e-05, + 4.138577620859522647e-05, + 4.142014412079614153e-05, + 4.145444148367428451e-05, + 4.148866824800247899e-05, + 4.152282436467342065e-05, + 4.155690978469872180e-05, + 4.159092445920843710e-05, + 4.162486833945703337e-05, + 4.165874137681381480e-05, + 4.169254352276957718e-05, + 4.172627472893500198e-05, + 4.175993494703881317e-05, + 4.179352412893502783e-05, + 4.182704222659411992e-05, + 4.186048919210231552e-05, + 4.189386497767530801e-05, + 4.192716953564272009e-05, + 4.196040281845473096e-05, + 4.199356477868637926e-05, + 4.202665536902865226e-05, + 4.205967454229462519e-05, + 4.209262225141793655e-05, + 4.212549844945304563e-05, + 4.215830308957326737e-05, + 4.219103612507929692e-05, + 4.222369750938170655e-05, + 4.225628719602261612e-05, + 4.228880513865911837e-05, + 4.232125129106968246e-05, + 4.235362560715797580e-05, + 4.238592804094620299e-05, + 4.241815854657309323e-05, + 4.245031707830762910e-05, + 4.248240359053443007e-05, + 4.251441803775934979e-05, + 4.254636037461582537e-05, + 4.257823055584839753e-05, + 4.261002853633369673e-05, + 4.264175427106399035e-05, + 4.267340771515343040e-05, + 4.270498882384373887e-05, + 4.273649755248986232e-05, + 4.276793385657290777e-05, + 4.279929769169909241e-05, + 4.283058901359216772e-05, + 4.286180777809798668e-05, + 4.289295394119058884e-05, + 4.292402745895739419e-05, + 4.295502828761224069e-05, + 4.298595638349492350e-05, + 4.301681170306265688e-05, + 4.304759420289680299e-05, + 4.307830383970125918e-05, + 4.310894057030116371e-05, + 4.313950435164847939e-05, + 4.316999514081361811e-05, + 4.320041289498988607e-05, + 4.323075757149889804e-05, + 4.326102912777694348e-05, + 4.329122752138731938e-05, + 4.332135271001910372e-05, + 4.335140465148027756e-05, + 4.338138330370346459e-05, + 4.341128862474416246e-05, + 4.344112057278009907e-05, + 4.347087910611626733e-05, + 4.350056418317673943e-05, + 4.353017576251054185e-05, + 4.355971380279010361e-05, + 4.358917826281141214e-05, + 4.361856910149254277e-05, + 4.364788627787942541e-05, + 4.367712975113747582e-05, + 4.370629948055733508e-05, + 4.373539542555342631e-05, + 4.376441754566383265e-05, + 4.379336580054934861e-05, + 4.382224014999874518e-05, + 4.385104055392067228e-05, + 4.387976697234939139e-05, + 4.390841936544297310e-05, + 4.393699769348280925e-05, + 4.396550191687798357e-05, + 4.399393199615812274e-05, + 4.402228789197839729e-05, + 4.405056956511863389e-05, + 4.407877697648271225e-05, + 4.410691008709791464e-05, + 4.413496885812013680e-05, + 4.416295325082549895e-05, + 4.419086322661632243e-05, + 4.421869874701974735e-05, + 4.424645977368744801e-05, + 4.427414626839465709e-05, + 4.430175819304524109e-05, + 4.432929550966448358e-05, + 4.435675818040338140e-05, + 4.438414616753823125e-05, + 4.441145943346901022e-05, + 4.443869794072451894e-05, + 4.446586165195644556e-05, + 4.449295052993732614e-05, + 4.451996453757336530e-05, + 4.454690363789025353e-05, + 4.457376779403927257e-05, + 4.460055696930103594e-05, + 4.462727112707750649e-05, + 4.465391023089765457e-05, + 4.468047424441583173e-05, + 4.470696313141063233e-05, + 4.473337685579034163e-05, + 4.475971538158624762e-05, + 4.478597867295144164e-05, + 4.481216669417260905e-05, + 4.483827940965693753e-05, + 4.486431678393764646e-05, + 4.489027878167864226e-05, + 4.491616536766265312e-05, + 4.494197650680212524e-05, + 4.496771216413754233e-05, + 4.499337230483223499e-05, + 4.501895689417551130e-05, + 4.504446589758771878e-05, + 4.506989928060684084e-05, + 4.509525700890582375e-05, + 4.512053904827884791e-05, + 4.514574536464682341e-05, + 4.517087592406145575e-05, + 4.519593069269382791e-05, + 4.522090963684503222e-05, + 4.524581272294545892e-05, + 4.527063991754780981e-05, + 4.529539118733211944e-05, + 4.532006649910945499e-05, + 4.534466581980918363e-05, + 4.536918911649593354e-05, + 4.539363635635616334e-05, + 4.541800750670470796e-05, + 4.544230253498265091e-05, + 4.546652140875868627e-05, + 4.549066409572691646e-05, + 4.551473056371179885e-05, + 4.553872078066159318e-05, + 4.556263471465155990e-05, + 4.558647233388861549e-05, + 4.561023360669986024e-05, + 4.563391850154316278e-05, + 4.565752698700598777e-05, + 4.568105903179950735e-05, + 4.570451460476323608e-05, + 4.572789367486408907e-05, + 4.575119621119563655e-05, + 4.577442218298162079e-05, + 4.579757155957008105e-05, + 4.582064431043692470e-05, + 4.584364040518952539e-05, + 4.586655981355653155e-05, + 4.588940250539744805e-05, + 4.591216845070142323e-05, + 4.593485761958230224e-05, + 4.595746998228222521e-05, + 4.598000550917208130e-05, + 4.600246417074955031e-05, + 4.602484593763947544e-05, + 4.604715078059777312e-05, + 4.606937867050520569e-05, + 4.609152957837112861e-05, + 4.611360347533335500e-05, + 4.613560033265608884e-05, + 4.615752012173533243e-05, + 4.617936281409177132e-05, + 4.620112838137507724e-05, + 4.622281679536328469e-05, + 4.624442802796251985e-05, + 4.626596205120611297e-05, + 4.628741883725851495e-05, + 4.630879835840995094e-05, + 4.633010058707961196e-05, + 4.635132549581475359e-05, + 4.637247305729040467e-05, + 4.639354324431311453e-05, + 4.641453602981428515e-05, + 4.643545138685566673e-05, + 4.645628928862643710e-05, + 4.647704970844554630e-05, + 4.649773261975838270e-05, + 4.651833799614264796e-05, + 4.653886581130256339e-05, + 4.655931603906773148e-05, + 4.657968865340270402e-05, + 4.659998362839650599e-05, + 4.662020093826751445e-05, + 4.664034055736517975e-05, + 4.666040246016511946e-05, + 4.668038662127288604e-05, + 4.670029301542250310e-05, + 4.672012161747645867e-05, + 4.673987240242858510e-05, + 4.675954534540013559e-05, + 4.677914042163838830e-05, + 4.679865760652510311e-05, + 4.681809687556744821e-05, + 4.683745820440197099e-05, + 4.685674156879753895e-05, + 4.687594694464602231e-05, + 4.689507430797464039e-05, + 4.691412363493643417e-05, + 4.693309490181449468e-05, + 4.695198808501993689e-05, + 4.697080316109704970e-05, + 4.698954010671296886e-05, + 4.700819889867058582e-05, + 4.702677951389845103e-05, + 4.704528192945441962e-05, + 4.706370612252948674e-05, + 4.708205207043856508e-05, + 4.710031975062865703e-05, + 4.711850914067799409e-05, + 4.713662021829191694e-05, + 4.715465296130499635e-05, + 4.717260734768494314e-05, + 4.719048335552302652e-05, + 4.720828096304576990e-05, + 4.722600014860651448e-05, + 4.724364089068857698e-05, + 4.726120316790504631e-05, + 4.727868695899889884e-05, + 4.729609224284149401e-05, + 4.731341899843699925e-05, + 4.733066720491651495e-05, + 4.734783684154090697e-05, + 4.736492788770430316e-05, + 4.738194032292548073e-05, + 4.739887412685563864e-05, + 4.741572927927741504e-05, + 4.743250576010109933e-05, + 4.744920354936733587e-05, + 4.746582262724677846e-05, + 4.748236297403952104e-05, + 4.749882457017749656e-05, + 4.751520739622070257e-05, + 4.753151143285969490e-05, + 4.754773666091497775e-05, + 4.756388306133724095e-05, + 4.757995061520633664e-05, + 4.759593930373463361e-05, + 4.761184910826220609e-05, + 4.762768001025993053e-05, + 4.764343199132900448e-05, + 4.765910503320039095e-05, + 4.767469911773498779e-05, + 4.769021422692582322e-05, + 4.770565034289380032e-05, + 4.772100744789091578e-05, + 4.773628552429941963e-05, + 4.775148455463090719e-05, + 4.776660452152958530e-05, + 4.778164540776784735e-05, + 4.779660719624871955e-05, + 4.781148987000600998e-05, + 4.782629341220365134e-05, + 4.784101780613481998e-05, + 4.785566303522597459e-05, + 4.787022908303115057e-05, + 4.788471593323586993e-05, + 4.789912356965567766e-05, + 4.791345197623613487e-05, + 4.792770113705540740e-05, + 4.794187103631969183e-05, + 4.795596165836654256e-05, + 4.796997298766382837e-05, + 4.798390500881001693e-05, + 4.799775770653353111e-05, + 4.801153106569508000e-05, + 4.802522507128466377e-05, + 4.803883970842074704e-05, + 4.805237496235633033e-05, + 4.806583081847249234e-05, + 4.807920726228055155e-05, + 4.809250427942473607e-05, + 4.810572185567762998e-05, + 4.811885997694349376e-05, + 4.813191862925630585e-05, + 4.814489779878096892e-05, + 4.815779747181469893e-05, + 4.817061763478373870e-05, + 4.818335827424308682e-05, + 4.819601937688279959e-05, + 4.820860092952064556e-05, + 4.822110291910491089e-05, + 4.823352533271735380e-05, + 4.824586815756606915e-05, + 4.825813138099419600e-05, + 4.827031499047266692e-05, + 4.828241897360468040e-05, + 4.829444331812275990e-05, + 4.830638801189285353e-05, + 4.831825304290740866e-05, + 4.833003839929407949e-05, + 4.834174406930835438e-05, + 4.835337004133701184e-05, + 4.836491630389961802e-05, + 4.837638284564339710e-05, + 4.838776965534757489e-05, + 4.839907672192381925e-05, + 4.841030403441262160e-05, + 4.842145158198524169e-05, + 4.843251935394636391e-05, + 4.844350733972704995e-05, + 4.845441552889336501e-05, + 4.846524391114006230e-05, + 4.847599247629259562e-05, + 4.848666121430957911e-05, + 4.849725011527676995e-05, + 4.850775916941306535e-05, + 4.851818836706865262e-05, + 4.852853769872334221e-05, + 4.853880715498784846e-05, + 4.854899672660571399e-05, + 4.855910640444807171e-05, + 4.856913617951853725e-05, + 4.857908604295289726e-05, + 4.858895598601593814e-05, + 4.859874600010398031e-05, + 4.860845607674424808e-05, + 4.861808620759412421e-05, + 4.862763638444375202e-05, + 4.863710659921213227e-05, + 4.864649684395018600e-05, + 4.865580711083935188e-05, + 4.866503739219204698e-05, + 4.867418768045113820e-05, + 4.868325796819162959e-05, + 4.869224824811842618e-05, + 4.870115851306702515e-05, + 4.870998875600455937e-05, + 4.871873897002810335e-05, + 4.872740914836724819e-05, + 4.873599928438076769e-05, + 4.874450937155925433e-05, + 4.875293940352379106e-05, + 4.876128937402639859e-05, + 4.876955927694960169e-05, + 4.877774910630806903e-05, + 4.878585885624600436e-05, + 4.879388852103877955e-05, + 4.880183809509302948e-05, + 4.880970757294582531e-05, + 4.881749694926487102e-05, + 4.882520621884987898e-05, + 4.883283537663034058e-05, + 4.884038441766675945e-05, + 4.884785333715044146e-05, + 4.885524213040352858e-05, + 4.886255079287973071e-05, + 4.886977932016278747e-05, + 4.887692770796725424e-05, + 4.888399595213882744e-05, + 4.889098404865378886e-05, + 4.889789199361878206e-05, + 4.890471978327275035e-05, + 4.891146741398398238e-05, + 4.891813488225202301e-05, + 4.892472218470734130e-05, + 4.893122931811081549e-05, + 4.893765627935376690e-05, + 4.894400306546032485e-05, + 4.895026967358191754e-05, + 4.895645610100400087e-05, + 4.896256234514101017e-05, + 4.896858840353812876e-05, + 4.897453427387227052e-05, + 4.898039995395038585e-05, + 4.898618544170919056e-05, + 4.899189073521804586e-05, + 4.899751583267552950e-05, + 4.900306073241121797e-05, + 4.900852543288635734e-05, + 4.901390993269068519e-05, + 4.901921423054697070e-05, + 4.902443832530713186e-05, + 4.902958221595361783e-05, + 4.903464590160066931e-05, + 4.903962938149257706e-05, + 4.904453265500314656e-05, + 4.904935572163859149e-05, + 4.905409858103438952e-05, + 4.905876123295672568e-05, + 4.906334367730340714e-05, + 4.906784591410133566e-05, + 4.907226794350810003e-05, + 4.907660976581327032e-05, + 4.908087138143551797e-05, + 4.908505279092393041e-05, + 4.908915399495951534e-05, + 4.909317499435144672e-05, + 4.909711579004152356e-05, + 4.910097638310085628e-05, + 4.910475677473081542e-05, + 4.910845696626441401e-05, + 4.911207695916344795e-05, + 4.911561675502076608e-05, + 4.911907635556017534e-05, + 4.912245576263502445e-05, + 4.912575497822881386e-05, + 4.912897400445671360e-05, + 4.913211284356237840e-05, + 4.913517149792124102e-05, + 4.913814997003816763e-05, + 4.914104826254833870e-05, + 4.914386637821760819e-05, + 4.914660431994165649e-05, + 4.914926209074610560e-05, + 4.915183969378764405e-05, + 4.915433713235252248e-05, + 4.915675440985704841e-05, + 4.915909152984789785e-05, + 4.916134849600176300e-05, + 4.916352531212539288e-05, + 4.916562198215575598e-05, + 4.916763851015995215e-05, + 4.916957490033474503e-05, + 4.917143115700723293e-05, + 4.917320728463408987e-05, + 4.917490328780286661e-05, + 4.917651917123020853e-05, + 4.917805493976310242e-05, + 4.917951059837798205e-05, + 4.918088615218200885e-05, + 4.918218160641145241e-05, + 4.918339696643287632e-05, + 4.918453223774270447e-05, + 4.918558742596684162e-05, + 4.918656253686127643e-05, + 4.918745757631147843e-05, + 4.918827255033310949e-05, + 4.918900746507123102e-05, + 4.918966232680081215e-05, + 4.919023714192626224e-05, + 4.919073191698173573e-05, + 4.919114665863122030e-05, + 4.919148137366810314e-05, + 4.919173606901570630e-05, + 4.919191075172632446e-05, + 4.919200542898238365e-05, + 4.919202010809544518e-05, + 4.919195479650673413e-05, + 4.919180950178707166e-05, + 4.919158423163653613e-05, + 4.919127899388461898e-05, + 4.919089379649050936e-05, + 4.919042864754232159e-05, + 4.918988355525782702e-05, + 4.918925852798423042e-05, + 4.918855357419751943e-05, + 4.918776870250356236e-05, + 4.918690392163720012e-05, + 4.918595924046249021e-05, + 4.918493466797274057e-05, + 4.918383021329023177e-05, + 4.918264588566684719e-05, + 4.918138169448306338e-05, + 4.918003764924867507e-05, + 4.917861375960268683e-05, + 4.917711003531275056e-05, + 4.917552648627608033e-05, + 4.917386312251836140e-05, + 4.917211995419449558e-05, + 4.917029699158823535e-05, + 4.916839424511203476e-05, + 4.916641172530764574e-05, + 4.916434944284507456e-05, + 4.916220740852384223e-05, + 4.915998563327153434e-05, + 4.915768412814504118e-05, + 4.915530290432967674e-05, + 4.915284197313948372e-05, + 4.915030134601715219e-05, + 4.914768103453389080e-05, + 4.914498105038981988e-05, + 4.914220140541336151e-05, + 4.913934211156141573e-05, + 4.913640318091987554e-05, + 4.913338462570225807e-05, + 4.913028645825115475e-05, + 4.912710869103762139e-05, + 4.912385133666031086e-05, + 4.912051440784734330e-05, + 4.911709791745428005e-05, + 4.911360187846537727e-05, + 4.911002630399269818e-05, + 4.910637120727697375e-05, + 4.910263660168690463e-05, + 4.909882250071943231e-05, + 4.909492891799961027e-05, + 4.909095586728031948e-05, + 4.908690336244255289e-05, + 4.908277141749565949e-05, + 4.907856004657652429e-05, + 4.907426926395026633e-05, + 4.906989908400956102e-05, + 4.906544952127534490e-05, + 4.906092059039598215e-05, + 4.905631230614807773e-05, + 4.905162468343574555e-05, + 4.904685773729065590e-05, + 4.904201148287237429e-05, + 4.903708593546813102e-05, + 4.903208111049244173e-05, + 4.902699702348804251e-05, + 4.902183369012477862e-05, + 4.901659112619981452e-05, + 4.901126934763798626e-05, + 4.900586837049158463e-05, + 4.900038821094036194e-05, + 4.899482888529114576e-05, + 4.898919040997863178e-05, + 4.898347280156382520e-05, + 4.897767607673593140e-05, + 4.897180025231068212e-05, + 4.896584534523125708e-05, + 4.895981137256807388e-05, + 4.895369835151848991e-05, + 4.894750629940642278e-05, + 4.894123523368363790e-05, + 4.893488517192818991e-05, + 4.892845613184558138e-05, + 4.892194813126783453e-05, + 4.891536118815343698e-05, + 4.890869532058852081e-05, + 4.890195054678529051e-05, + 4.889512688508310714e-05, + 4.888822435394768874e-05, + 4.888124297197169311e-05, + 4.887418275787384366e-05, + 4.886704373049956636e-05, + 4.885982590882132181e-05, + 4.885252931193747358e-05, + 4.884515395907291840e-05, + 4.883769986957887612e-05, + 4.883016706293268641e-05, + 4.882255555873927919e-05, + 4.881486537672753581e-05, + 4.880709653675449709e-05, + 4.879924905880276122e-05, + 4.879132296298026696e-05, + 4.878331826952164209e-05, + 4.877523499878843379e-05, + 4.876707317126654725e-05, + 4.875883280756865799e-05, + 4.875051392843342583e-05, + 4.874211655472439710e-05, + 4.873364070743273555e-05, + 4.872508640767324458e-05, + 4.871645367668783679e-05, + 4.870774253584391438e-05, + 4.869895300663372543e-05, + 4.869008511067519061e-05, + 4.868113886971359725e-05, + 4.867211430561688303e-05, + 4.866301144037999315e-05, + 4.865383029612359284e-05, + 4.864457089509195313e-05, + 4.863523325965709795e-05, + 4.862581741231390491e-05, + 4.861632337568366958e-05, + 4.860675117251261472e-05, + 4.859710082567223589e-05, + 4.858737235815796648e-05, + 4.857756579309259302e-05, + 4.856768115372081377e-05, + 4.855771846341435483e-05, + 4.854767774566948326e-05, + 4.853755902410588897e-05, + 4.852736232246980861e-05, + 4.851708766463157252e-05, + 4.850673507458525241e-05, + 4.849630457645041638e-05, + 4.848579619447091599e-05, + 4.847520995301506921e-05, + 4.846454587657616863e-05, + 4.845380398977042148e-05, + 4.844298431733967371e-05, + 4.843208688414983110e-05, + 4.842111171519066951e-05, + 4.841005883557641769e-05, + 4.839892827054575721e-05, + 4.838772004546011490e-05, + 4.837643418580610228e-05, + 4.836507071719413998e-05, + 4.835362966535828157e-05, + 4.834211105615674207e-05, + 4.833051491557161341e-05, + 4.831884126970767174e-05, + 4.830709014479468141e-05, + 4.829526156718543661e-05, + 4.828335556335632380e-05, + 4.827137215990769440e-05, + 4.825931138356251632e-05, + 4.824717326116784443e-05, + 4.823495781969395991e-05, + 4.822266508623447199e-05, + 4.821029508800607391e-05, + 4.819784785234926803e-05, + 4.818532340672627875e-05, + 4.817272177872377654e-05, + 4.816004299605089250e-05, + 4.814728708653992311e-05, + 4.813445407814604559e-05, + 4.812154399894765677e-05, + 4.810855687714452310e-05, + 4.809549274106069452e-05, + 4.808235161914218691e-05, + 4.806913353995803244e-05, + 4.805583853220002886e-05, + 4.804246662468103187e-05, + 4.802901784633738778e-05, + 4.801549222622962472e-05, + 4.800188979353663858e-05, + 4.798821057756288267e-05, + 4.797445460773415958e-05, + 4.796062191359722147e-05, + 4.794671252482238564e-05, + 4.793272647120140005e-05, + 4.791866378264832420e-05, + 4.790452448919917680e-05, + 4.789030862101051951e-05, + 4.787601620836186251e-05, + 4.786164728165577292e-05, + 4.784720187141357868e-05, + 4.783268000828023384e-05, + 4.781808172302214348e-05, + 4.780340704652566604e-05, + 4.778865600980044734e-05, + 4.777382864397624246e-05, + 4.775892498030519934e-05, + 4.774394505015967685e-05, + 4.772888888503446739e-05, + 4.771375651654290731e-05, + 4.769854797642335503e-05, + 4.768326329653131701e-05, + 4.766790250884529566e-05, + 4.765246564546498688e-05, + 4.763695273860879992e-05, + 4.762136382061742850e-05, + 4.760569892395357972e-05, + 4.758995808119726459e-05, + 4.757414132505163239e-05, + 4.755824868833976546e-05, + 4.754228020400310718e-05, + 4.752623590510772315e-05, + 4.751011582483556666e-05, + 4.749391999649146497e-05, + 4.747764845349950082e-05, + 4.746130122940463869e-05, + 4.744487835786935026e-05, + 4.742837987268035002e-05, + 4.741180580774010457e-05, + 4.739515619707310748e-05, + 4.737843107482395480e-05, + 4.736163047525392985e-05, + 4.734475443274831479e-05, + 4.732780298180958050e-05, + 4.731077615705859949e-05, + 4.729367399323763428e-05, + 4.727649652520765394e-05, + 4.725924378794880851e-05, + 4.724191581656118108e-05, + 4.722451264626209089e-05, + 4.720703431238961698e-05, + 4.718948085040149365e-05, + 4.717185229587103791e-05, + 4.715414868449488802e-05, + 4.713637005208636270e-05, + 4.711851643457622011e-05, + 4.710058786801572068e-05, + 4.708258438857416739e-05, + 4.706450603253952911e-05, + 4.704635283631793244e-05, + 4.702812483643506437e-05, + 4.700982206953215395e-05, + 4.699144457237147465e-05, + 4.697299238183233277e-05, + 4.695446553491226007e-05, + 4.693586406872759658e-05, + 4.691718802051036665e-05, + 4.689843742761264973e-05, + 4.687961232750382915e-05, + 4.686071275777087676e-05, + 4.684173875611850196e-05, + 4.682269036036961255e-05, + 4.680356760846256350e-05, + 4.678437053845535830e-05, + 4.676509918852259957e-05, + 4.674575359695623452e-05, + 4.672633380216630706e-05, + 4.670683984267755615e-05, + 4.668727175713415238e-05, + 4.666762958429675711e-05, + 4.664791336304253597e-05, + 4.662812313236578912e-05, + 4.660825893137856781e-05, + 4.658832079930686621e-05, + 4.656830877549525627e-05, + 4.654822289940711822e-05, + 4.652806321061741022e-05, + 4.650782974882091509e-05, + 4.648752255382875058e-05, + 4.646714166556573333e-05, + 4.644668712407549501e-05, + 4.642615896951688407e-05, + 4.640555724216461632e-05, + 4.638488198241056239e-05, + 4.636413323075966162e-05, + 4.634331102783444188e-05, + 4.632241541437572425e-05, + 4.630144643123487101e-05, + 4.628040411938231017e-05, + 4.625928851990377462e-05, + 4.623809967399820833e-05, + 4.621683762298212339e-05, + 4.619550240828635426e-05, + 4.617409407145754854e-05, + 4.615261265415652705e-05, + 4.613105819816111638e-05, + 4.610943074535958267e-05, + 4.608773033776188019e-05, + 4.606595701748620046e-05, + 4.604411082676943483e-05, + 4.602219180796247172e-05, + 4.600020000352864487e-05, + 4.597813545604726376e-05, + 4.595599820821488079e-05, + 4.593378830283686163e-05, + 4.591150578283642467e-05, + 4.588915069125107680e-05, + 4.586672307122854761e-05, + 4.584422296603714352e-05, + 4.582165041905247985e-05, + 4.579900547376802470e-05, + 4.577628817379053176e-05, + 4.575349856283709261e-05, + 4.573063668474374935e-05, + 4.570770258345732923e-05, + 4.568469630303620356e-05, + 4.566161788765495658e-05, + 4.563846738160147844e-05, + 4.561524482927277745e-05, + 4.559195027518492764e-05, + 4.556858376396396827e-05, + 4.554514534034714385e-05, + 4.552163504918736291e-05, + 4.549805293544899001e-05, + 4.547439904420981754e-05, + 4.545067342066044916e-05, + 4.542687611010142660e-05, + 4.540300715794864397e-05, + 4.537906660973021024e-05, + 4.535505451108267500e-05, + 4.533097090776065061e-05, + 4.530681584562765759e-05, + 4.528258937065768308e-05, + 4.525829152893927375e-05, + 4.523392236667181561e-05, + 4.520948193016661142e-05, + 4.518497026584748381e-05, + 4.516038742024687216e-05, + 4.513573344001147039e-05, + 4.511100837189888633e-05, + 4.508621226277765524e-05, + 4.506134515962758539e-05, + 4.503640710954079487e-05, + 4.501139815971708335e-05, + 4.498631835747078292e-05, + 4.496116775022539804e-05, + 4.493594638551586884e-05, + 4.491065431098757499e-05, + 4.488529157439746054e-05, + 4.485985822360994112e-05, + 4.483435430660312449e-05, + 4.480877987146416203e-05, + 4.478313496639079377e-05, + 4.475741963969163294e-05, + 4.473163393978255427e-05, + 4.470577791519228435e-05, + 4.467985161455864088e-05, + 4.465385508662916277e-05, + 4.462778838026091374e-05, + 4.460165154442218303e-05, + 4.457544462818700354e-05, + 4.454916768074243619e-05, + 4.452282075138390795e-05, + 4.449640388951564546e-05, + 4.446991714465152885e-05, + 4.444336056641555254e-05, + 4.441673420453719705e-05, + 4.439003810885823914e-05, + 4.436327232932838789e-05, + 4.433643691600588102e-05, + 4.430953191905873172e-05, + 4.428255738876013433e-05, + 4.425551337549401415e-05, + 4.422839992975599637e-05, + 4.420121710214334337e-05, + 4.417396494336566122e-05, + 4.414664350424119302e-05, + 4.411925283569229919e-05, + 4.409179298875272833e-05, + 4.406426401456317208e-05, + 4.403666596437161740e-05, + 4.400899888953408524e-05, + 4.398126284151489479e-05, + 4.395345787188145254e-05, + 4.392558403231646986e-05, + 4.389764137460191009e-05, + 4.386962995063132804e-05, + 4.384154981240543839e-05, + 4.381340101202849710e-05, + 4.378518360171365469e-05, + 4.375689763378489425e-05, + 4.372854316066530174e-05, + 4.370012023488954104e-05, + 4.367162890909876506e-05, + 4.364306923603531661e-05, + 4.361444126855689764e-05, + 4.358574505961865274e-05, + 4.355698066228617964e-05, + 4.352814812973203936e-05, + 4.349924751522910873e-05, + 4.347027887216378732e-05, + 4.344124225402418643e-05, + 4.341213771440177569e-05, + 4.338296530699729201e-05, + 4.335372508561655179e-05, + 4.332441710416637165e-05, + 4.329504141666560017e-05, + 4.326559807723487898e-05, + 4.323608714009727968e-05, + 4.320650865958438220e-05, + 4.317686269013150429e-05, + 4.314714928627885347e-05, + 4.311736850267218436e-05, + 4.308752039405840763e-05, + 4.305760501529237982e-05, + 4.302762242133326452e-05, + 4.299757266723961275e-05, + 4.296745580818157385e-05, + 4.293727189942948418e-05, + 4.290702099635535118e-05, + 4.287670315443851829e-05, + 4.284631842926103681e-05, + 4.281586687650852641e-05, + 4.278534855197132039e-05, + 4.275476351153956639e-05, + 4.272411181121031442e-05, + 4.269339350708277339e-05, + 4.266260865535917858e-05, + 4.263175731234508290e-05, + 4.260083953444988554e-05, + 4.256985537818225117e-05, + 4.253880490015713692e-05, + 4.250768815709111677e-05, + 4.247650520580337766e-05, + 4.244525610321500799e-05, + 4.241394090635127443e-05, + 4.238255967233555039e-05, + 4.235111245839723071e-05, + 4.231959932186645293e-05, + 4.228802032017526960e-05, + 4.225637551085887478e-05, + 4.222466495155004749e-05, + 4.219288869998737135e-05, + 4.216104681400953570e-05, + 4.212913935155667057e-05, + 4.209716637066998070e-05, + 4.206512792949347357e-05, + 4.203302408626800977e-05, + 4.200085489933957006e-05, + 4.196862042715376661e-05, + 4.193632072825679847e-05, + 4.190395586129557349e-05, + 4.187152588501903651e-05, + 4.183903085827231464e-05, + 4.180647084000522828e-05, + 4.177384588926622634e-05, + 4.174115606520393802e-05, + 4.170840142706881264e-05, + 4.167558203420634340e-05, + 4.164269794606540896e-05, + 4.160974922219814467e-05, + 4.157673592224834163e-05, + 4.154365810596466718e-05, + 4.151051583319514900e-05, + 4.147730916388321100e-05, + 4.144403815807535087e-05, + 4.141070287591602393e-05, + 4.137730337764823949e-05, + 4.134383972361570215e-05, + 4.131031197425655727e-05, + 4.127672019011016728e-05, + 4.124306443181885993e-05, + 4.120934476011501273e-05, + 4.117556123583491042e-05, + 4.114171391991291061e-05, + 4.110780287337596176e-05, + 4.107382815735749455e-05, + 4.103978983308443176e-05, + 4.100568796187901109e-05, + 4.097152260516502613e-05, + 4.093729382446398415e-05, + 4.090300168138925825e-05, + 4.086864623766134748e-05, + 4.083422755508795462e-05, + 4.079974569558008659e-05, + 4.076520072114513587e-05, + 4.073059269388190000e-05, + 4.069592167599504203e-05, + 4.066118772978086725e-05, + 4.062639091762994552e-05, + 4.059153130203315573e-05, + 4.055660894557823671e-05, + 4.052162391094297025e-05, + 4.048657626091165424e-05, + 4.045146605835436051e-05, + 4.041629336624304202e-05, + 4.038105824764357752e-05, + 4.034576076571789251e-05, + 4.031040098372357978e-05, + 4.027497896501484810e-05, + 4.023949477303695888e-05, + 4.020394847133475750e-05, + 4.016834012354862790e-05, + 4.013266979340743165e-05, + 4.009693754474433740e-05, + 4.006114344148258385e-05, + 4.002528754763707224e-05, + 3.998936992732194897e-05, + 3.995339064474402583e-05, + 3.991734976420487389e-05, + 3.988124735010144690e-05, + 3.984508346692025371e-05, + 3.980885817924663498e-05, + 3.977257155175950478e-05, + 3.973622364922572633e-05, + 3.969981453651460639e-05, + 3.966334427858493904e-05, + 3.962681294048538518e-05, + 3.959022058736270570e-05, + 3.955356728445527653e-05, + 3.951685309709470148e-05, + 3.948007809070541913e-05, + 3.944324233080632921e-05, + 3.940634588300418568e-05, + 3.936938881300335459e-05, + 3.933237118659899714e-05, + 3.929529306967876375e-05, + 3.925815452822381052e-05, + 3.922095562830309358e-05, + 3.918369643608217824e-05, + 3.914637701781702520e-05, + 3.910899743985542704e-05, + 3.907155776863673724e-05, + 3.903405807069367265e-05, + 3.899649841264539490e-05, + 3.895887886120736986e-05, + 3.892119948318459820e-05, + 3.888346034547320777e-05, + 3.884566151506186309e-05, + 3.880780305902543627e-05, + 3.876988504453431089e-05, + 3.873190753884768022e-05, + 3.869387060931560725e-05, + 3.865577432337823858e-05, + 3.861761874856785770e-05, + 3.857940395250191893e-05, + 3.854113000289123998e-05, + 3.850279696754133681e-05, + 3.846440491433778696e-05, + 3.842595391126239768e-05, + 3.838744402638669394e-05, + 3.834887532786657876e-05, + 3.831024788395195549e-05, + 3.827156176298092052e-05, + 3.823281703338004796e-05, + 3.819401376366703908e-05, + 3.815515202244301773e-05, + 3.811623187840138015e-05, + 3.807725340032915701e-05, + 3.803821665709182775e-05, + 3.799912171764986826e-05, + 3.795996865105206948e-05, + 3.792075752642863238e-05, + 3.788148841300946387e-05, + 3.784216138010080546e-05, + 3.780277649710293966e-05, + 3.776333383350260732e-05, + 3.772383345887544710e-05, + 3.768427544287794524e-05, + 3.764465985526542659e-05, + 3.760498676586892039e-05, + 3.756525624461278537e-05, + 3.752546836150878051e-05, + 3.748562318664823846e-05, + 3.744572079021973122e-05, + 3.740576124249296981e-05, + 3.736574461382099295e-05, + 3.732567097464782423e-05, + 3.728554039550425054e-05, + 3.724535294699967699e-05, + 3.720510869984182547e-05, + 3.716480772481205554e-05, + 3.712445009278424987e-05, + 3.708403587471643199e-05, + 3.704356514165158622e-05, + 3.700303796471856568e-05, + 3.696245441513264799e-05, + 3.692181456418917228e-05, + 3.688111848327365623e-05, + 3.684036624385655798e-05, + 3.679955791748584255e-05, + 3.675869357580458663e-05, + 3.671777329053504751e-05, + 3.667679713348054017e-05, + 3.663576517653343326e-05, + 3.659467749166873870e-05, + 3.655353415094529760e-05, + 3.651233522650742684e-05, + 3.647108079057808185e-05, + 3.642977091546896002e-05, + 3.638840567357348044e-05, + 3.634698513736821376e-05, + 3.630550937941315321e-05, + 3.626397847235296820e-05, + 3.622239248891012643e-05, + 3.618075150189501761e-05, + 3.613905558419914333e-05, + 3.609730480879651298e-05, + 3.605549924874350141e-05, + 3.601363897718059046e-05, + 3.597172406732517935e-05, + 3.592975459248192523e-05, + 3.588773062603593984e-05, + 3.584565224145371784e-05, + 3.580351951228567114e-05, + 3.576133251215788219e-05, + 3.571909131478361005e-05, + 3.567679599395561294e-05, + 3.563444662354742887e-05, + 3.559204327751418212e-05, + 3.554958602989334885e-05, + 3.550707495479783185e-05, + 3.546451012642668730e-05, + 3.542189161905756248e-05, + 3.537921950704857961e-05, + 3.533649386484003662e-05, + 3.529371476694669583e-05, + 3.525088228796893763e-05, + 3.520799650258533373e-05, + 3.516505748555381265e-05, + 3.512206531171246612e-05, + 3.507902005598012503e-05, + 3.503592179334990170e-05, + 3.499277059889760596e-05, + 3.494956654778387289e-05, + 3.490630971523716800e-05, + 3.486300017657190011e-05, + 3.481963800718179425e-05, + 3.477622328253298658e-05, + 3.473275607817601161e-05, + 3.468923646973771815e-05, + 3.464566453292322764e-05, + 3.460204034351772981e-05, + 3.455836397737835803e-05, + 3.451463551044410289e-05, + 3.447085501873701168e-05, + 3.442702257834574233e-05, + 3.438313826544354089e-05, + 3.433920215628130261e-05, + 3.429521432717897285e-05, + 3.425117485454744123e-05, + 3.420708381486054883e-05, + 3.416294128467707721e-05, + 3.411874734063000125e-05, + 3.407450205943098856e-05, + 3.403020551786038419e-05, + 3.398585779278814249e-05, + 3.394145896114690505e-05, + 3.389700909995294607e-05, + 3.385250828629821708e-05, + 3.380795659734299469e-05, + 3.376335411033427132e-05, + 3.371870090258897047e-05, + 3.367399705149536966e-05, + 3.362924263452279731e-05, + 3.358443772921550701e-05, + 3.353958241318478990e-05, + 3.349467676413048255e-05, + 3.344972085981342148e-05, + 3.340471477807663926e-05, + 3.335965859683751088e-05, + 3.331455239407986611e-05, + 3.326939624787357975e-05, + 3.322419023635628921e-05, + 3.317893443773565782e-05, + 3.313362893029893612e-05, + 3.308827379240689034e-05, + 3.304286910248597581e-05, + 3.299741493904760864e-05, + 3.295191138067054745e-05, + 3.290635850600257391e-05, + 3.286075639377018950e-05, + 3.281510512277089741e-05, + 3.276940477187455101e-05, + 3.272365542002563063e-05, + 3.267785714623499014e-05, + 3.263201002959156626e-05, + 3.258611414925453848e-05, + 3.254016958445484013e-05, + 3.249417641449538880e-05, + 3.244813471875257710e-05, + 3.240204457666850707e-05, + 3.235590606776250983e-05, + 3.230971927162329865e-05, + 3.226348426791073081e-05, + 3.221720113635742031e-05, + 3.217086995676117560e-05, + 3.212449080899626848e-05, + 3.207806377300554654e-05, + 3.203158892880246603e-05, + 3.198506635647050913e-05, + 3.193849613616581308e-05, + 3.189187834810782579e-05, + 3.184521307259259403e-05, + 3.179850038998352063e-05, + 3.175174038071362776e-05, + 3.170493312528567211e-05, + 3.165807870427347307e-05, + 3.161117719831400477e-05, + 3.156422868811972895e-05, + 3.151723325446967734e-05, + 3.147019097821173529e-05, + 3.142310194026457301e-05, + 3.137596622160906002e-05, + 3.132878390330084869e-05, + 3.128155506646149734e-05, + 3.123427979228086222e-05, + 3.118695816201666390e-05, + 3.113959025699660139e-05, + 3.109217615860975989e-05, + 3.104471594831899100e-05, + 3.099720970765248307e-05, + 3.094965751820572626e-05, + 3.090205946164124157e-05, + 3.085441561969078306e-05, + 3.080672607414461107e-05, + 3.075899090687403680e-05, + 3.071121019980257581e-05, + 3.066338403492840453e-05, + 3.061551249431609321e-05, + 3.056759566008997197e-05, + 3.051963361444479664e-05, + 3.047162643964708030e-05, + 3.042357421801687866e-05, + 3.037547703194802402e-05, + 3.032733496389972944e-05, + 3.027914809638837255e-05, + 3.023091651201001645e-05, + 3.018264029341104817e-05, + 3.013431952331123488e-05, + 3.008595428449500287e-05, + 3.003754465980515933e-05, + 2.998909073215320919e-05, + 2.994059258452103230e-05, + 2.989205029994235706e-05, + 2.984346396152311976e-05, + 2.979483365243366165e-05, + 2.974615945589899492e-05, + 2.969744145522079838e-05, + 2.964867973375786458e-05, + 2.959987437492791923e-05, + 2.955102546221841919e-05, + 2.950213307917974909e-05, + 2.945319730941690009e-05, + 2.940421823661209578e-05, + 2.935519594449585761e-05, + 2.930613051686912932e-05, + 2.925702203759572144e-05, + 2.920787059059273984e-05, + 2.915867625985227987e-05, + 2.910943912942187014e-05, + 2.906015928340668490e-05, + 2.901083680597994229e-05, + 2.896147178137611444e-05, + 2.891206429388264696e-05, + 2.886261442786327601e-05, + 2.881312226772735554e-05, + 2.876358789795422139e-05, + 2.871401140308162077e-05, + 2.866439286770781632e-05, + 2.861473237649186731e-05, + 2.856503001415496121e-05, + 2.851528586547232277e-05, + 2.846550001528544183e-05, + 2.841567254849369447e-05, + 2.836580355005622681e-05, + 2.831589310499181946e-05, + 2.826594129838081200e-05, + 2.821594821535641919e-05, + 2.816591394111760591e-05, + 2.811583856092006109e-05, + 2.806572216007853561e-05, + 2.801556482396859731e-05, + 2.796536663801802851e-05, + 2.791512768771945701e-05, + 2.786484805862171632e-05, + 2.781452783633185820e-05, + 2.776416710651483083e-05, + 2.771376595489583015e-05, + 2.766332446725113493e-05, + 2.761284272942124602e-05, + 2.756232082730178916e-05, + 2.751175884684586972e-05, + 2.746115687406367636e-05, + 2.741051499502455448e-05, + 2.735983329584816326e-05, + 2.730911186271761142e-05, + 2.725835078187013646e-05, + 2.720755013959962548e-05, + 2.715671002225842097e-05, + 2.710583051624828135e-05, + 2.705491170803367936e-05, + 2.700395368413274896e-05, + 2.695295653111914205e-05, + 2.690192033562228933e-05, + 2.685084518432913844e-05, + 2.679973116397527702e-05, + 2.674857836135812952e-05, + 2.669738686332779907e-05, + 2.664615675678914776e-05, + 2.659488812870183395e-05, + 2.654358106608219946e-05, + 2.649223565599214967e-05, + 2.644085198556334147e-05, + 2.638943014196598526e-05, + 2.633797021243305324e-05, + 2.628647228425149050e-05, + 2.623493644475500855e-05, + 2.618336278133532710e-05, + 2.613175138144431872e-05, + 2.608010233257364286e-05, + 2.602841572227686010e-05, + 2.597669163816060611e-05, + 2.592493016787508119e-05, + 2.587313139913905460e-05, + 2.582129541970786037e-05, + 2.576942231739826270e-05, + 2.571751218007919289e-05, + 2.566556509566481718e-05, + 2.561358115212567353e-05, + 2.556156043749086717e-05, + 2.550950303982743006e-05, + 2.545740904726288248e-05, + 2.540527854797628498e-05, + 2.535311163018828741e-05, + 2.530090838218461888e-05, + 2.524866889229485768e-05, + 2.519639324889461326e-05, + 2.514408154041701201e-05, + 2.509173385534549069e-05, + 2.503935028220463489e-05, + 2.498693090958512591e-05, + 2.493447582611171609e-05, + 2.488198512046777583e-05, + 2.482945888138670131e-05, + 2.477689719764188559e-05, + 2.472430015807018484e-05, + 2.467166785155047146e-05, + 2.461900036700622935e-05, + 2.456629779341663655e-05, + 2.451356021980754599e-05, + 2.446078773525320329e-05, + 2.440798042887863878e-05, + 2.435513838985033997e-05, + 2.430226170738990232e-05, + 2.424935047076438665e-05, + 2.419640476928908721e-05, + 2.414342469232669822e-05, + 2.409041032928993967e-05, + 2.403736176963191130e-05, + 2.398427910285995005e-05, + 2.393116241852618400e-05, + 2.387801180622975490e-05, + 2.382482735561641506e-05, + 2.377160915638121410e-05, + 2.371835729825847347e-05, + 2.366507187103586416e-05, + 2.361175296454511301e-05, + 2.355840066866379508e-05, + 2.350501507331784423e-05, + 2.345159626847193423e-05, + 2.339814434414325825e-05, + 2.334465939039220817e-05, + 2.329114149732460054e-05, + 2.323759075509110740e-05, + 2.318400725388993625e-05, + 2.313039108395704857e-05, + 2.307674233558019004e-05, + 2.302306109908922759e-05, + 2.296934746485851432e-05, + 2.291560152330656764e-05, + 2.286182336489840704e-05, + 2.280801308013596235e-05, + 2.275417075957179223e-05, + 2.270029649379998708e-05, + 2.264639037345805619e-05, + 2.259245248922909279e-05, + 2.253848293183251088e-05, + 2.248448179203764517e-05, + 2.243044916065438295e-05, + 2.237638512853534263e-05, + 2.232228978657579916e-05, + 2.226816322571573733e-05, + 2.221400553693028359e-05, + 2.215981681124384140e-05, + 2.210559713972045536e-05, + 2.205134661346589152e-05, + 2.199706532362998197e-05, + 2.194275336139691108e-05, + 2.188841081799710781e-05, + 2.183403778470913633e-05, + 2.177963435283850662e-05, + 2.172520061374111694e-05, + 2.167073665881350620e-05, + 2.161624257948582020e-05, + 2.156171846723325332e-05, + 2.150716441357853543e-05, + 2.145258051007027837e-05, + 2.139796684830640481e-05, + 2.134332351992496309e-05, + 2.128865061659394246e-05, + 2.123394823003755483e-05, + 2.117921645200275665e-05, + 2.112445537428520875e-05, + 2.106966508871980991e-05, + 2.101484568717277882e-05, + 2.095999726155437309e-05, + 2.090511990382047154e-05, + 2.085021370595078848e-05, + 2.079527875997331572e-05, + 2.074031515795382274e-05, + 2.068532299198676293e-05, + 2.063030235422107765e-05, + 2.057525333682659266e-05, + 2.052017603202038463e-05, + 2.046507053205435007e-05, + 2.040993692922017229e-05, + 2.035477531583680571e-05, + 2.029958578427711329e-05, + 2.024436842693383277e-05, + 2.018912333624582115e-05, + 2.013385060468868989e-05, + 2.007855032476439655e-05, + 2.002322258902558514e-05, + 1.996786749005380722e-05, + 1.991248512046153444e-05, + 1.985707557290408137e-05, + 1.980163894006992901e-05, + 1.974617531468312356e-05, + 1.969068478950507557e-05, + 1.963516745732507988e-05, + 1.957962341097476945e-05, + 1.952405274332033279e-05, + 1.946845554725294588e-05, + 1.941283191571278725e-05, + 1.935718194166710998e-05, + 1.930150571811231188e-05, + 1.924580333808625132e-05, + 1.919007489465799813e-05, + 1.913432048093042555e-05, + 1.907854019003984766e-05, + 1.902273411515850292e-05, + 1.896690234948435587e-05, + 1.891104498625594731e-05, + 1.885516211874217231e-05, + 1.879925384024453333e-05, + 1.874332024409985071e-05, + 1.868736142366991194e-05, + 1.863137747235609821e-05, + 1.857536848358936910e-05, + 1.851933455083299004e-05, + 1.846327576758174284e-05, + 1.840719222736464302e-05, + 1.835108402373488378e-05, + 1.829495125028418817e-05, + 1.823879400063330199e-05, + 1.818261236843374203e-05, + 1.812640644737056081e-05, + 1.807017633115210088e-05, + 1.801392211352464848e-05, + 1.795764388826241143e-05, + 1.790134174916998571e-05, + 1.784501579008196582e-05, + 1.778866610486535714e-05, + 1.773229278740965544e-05, + 1.767589593163881721e-05, + 1.761947563151379054e-05, + 1.756303198101005861e-05, + 1.750656507414202070e-05, + 1.745007500495317674e-05, + 1.739356186750853450e-05, + 1.733702575590907020e-05, + 1.728046676428202143e-05, + 1.722388498678289299e-05, + 1.716728051759794374e-05, + 1.711065345093407643e-05, + 1.705400388103111290e-05, + 1.699733190216409461e-05, + 1.694063760862066012e-05, + 1.688392109472595457e-05, + 1.682718245483252295e-05, + 1.677042178331235474e-05, + 1.671363917457208305e-05, + 1.665683472304256614e-05, + 1.660000852318145224e-05, + 1.654316066947280004e-05, + 1.648629125642963678e-05, + 1.642940037858118158e-05, + 1.637248813050012328e-05, + 1.631555460676759395e-05, + 1.625859990200053144e-05, + 1.620162411084133879e-05, + 1.614462732795047441e-05, + 1.608760964801848669e-05, + 1.603057116576874825e-05, + 1.597351197593450812e-05, + 1.591643217328371656e-05, + 1.585933185260909108e-05, + 1.580221110871778942e-05, + 1.574507003645887710e-05, + 1.568790873068790116e-05, + 1.563072728629462876e-05, + 1.557352579819007402e-05, + 1.551630436131161075e-05, + 1.545906307060984679e-05, + 1.540180202107662355e-05, + 1.534452130770927458e-05, + 1.528722102553836765e-05, + 1.522990126961729466e-05, + 1.517256213501221398e-05, + 1.511520371682699222e-05, + 1.505782611018034275e-05, + 1.500042941020826862e-05, + 1.494301371207647320e-05, + 1.488557911097007726e-05, + 1.482812570209604487e-05, + 1.477065358068555167e-05, + 1.471316284198368498e-05, + 1.465565358126448031e-05, + 1.459812589382311343e-05, + 1.454057987496571900e-05, + 1.448301562003455258e-05, + 1.442543322438486320e-05, + 1.436783278338744295e-05, + 1.431021439244122912e-05, + 1.425257814696266549e-05, + 1.419492414238846026e-05, + 1.413725247417508459e-05, + 1.407956323780153563e-05, + 1.402185652875860124e-05, + 1.396413244256434036e-05, + 1.390639107475341546e-05, + 1.384863252087977424e-05, + 1.379085687651878758e-05, + 1.373306423725714272e-05, + 1.367525469870774934e-05, + 1.361742835649947522e-05, + 1.355958530627965175e-05, + 1.350172564371368773e-05, + 1.344384946448771035e-05, + 1.338595686429802817e-05, + 1.332804793886633361e-05, + 1.327012278392933360e-05, + 1.321218149524115515e-05, + 1.315422416857576619e-05, + 1.309625089971650110e-05, + 1.303826178447145984e-05, + 1.298025691866278787e-05, + 1.292223639812940358e-05, + 1.286420031872659852e-05, + 1.280614877632855815e-05, + 1.274808186681802465e-05, + 1.268999968609872124e-05, + 1.263190233009801856e-05, + 1.257378989474356171e-05, + 1.251566247598874391e-05, + 1.245752016980240146e-05, + 1.239936307216073139e-05, + 1.234119127906286162e-05, + 1.228300488652016305e-05, + 1.222480399055869076e-05, + 1.216658868722176916e-05, + 1.210835907255939894e-05, + 1.205011524264089315e-05, + 1.199185729355748267e-05, + 1.193358532139891100e-05, + 1.187529942227891298e-05, + 1.181699969232502671e-05, + 1.175868622767032142e-05, + 1.170035912446910652e-05, + 1.164201847888617772e-05, + 1.158366438709938517e-05, + 1.152529694529930315e-05, + 1.146691624969196772e-05, + 1.140852239648543082e-05, + 1.135011548191826981e-05, + 1.129169560222324121e-05, + 1.123326285365544629e-05, + 1.117481733248184815e-05, + 1.111635913497346720e-05, + 1.105788835741797142e-05, + 1.099940509612237672e-05, + 1.094090944738925039e-05, + 1.088240150754276246e-05, + 1.082388137291799103e-05, + 1.076534913985047162e-05, + 1.070680490470438130e-05, + 1.064824876383642972e-05, + 1.058968081362386537e-05, + 1.053110115045416043e-05, + 1.047250987071439576e-05, + 1.041390707081709707e-05, + 1.035529284717666204e-05, + 1.029666729621182344e-05, + 1.023803051435846138e-05, + 1.017938259806171745e-05, + 1.012072364376540506e-05, + 1.006205374793772541e-05, + 1.000337300704793172e-05, + 9.944681517568611126e-06, + 9.885979375988596845e-06, + 9.827266678802348100e-06, + 9.768543522512520002e-06, + 9.709810003632177695e-06, + 9.651066218674494746e-06, + 9.592312264168043778e-06, + 9.533548236648929232e-06, + 9.474774232650033437e-06, + 9.415990348727137408e-06, + 9.357196681435193765e-06, + 9.298393327330788205e-06, + 9.239580382984907681e-06, + 9.180757944972604901e-06, + 9.121926109875303960e-06, + 9.063084974283136446e-06, + 9.004234634784548356e-06, + 8.945375187981678819e-06, + 8.886506730479817927e-06, + 8.827629358889844496e-06, + 8.768743169828038025e-06, + 8.709848259918592686e-06, + 8.650944725782912527e-06, + 8.592032664055273107e-06, + 8.533112171372070958e-06, + 8.474183344374351125e-06, + 8.415246279707666566e-06, + 8.356301074024468473e-06, + 8.297347823973496341e-06, + 8.238386626215476875e-06, + 8.179417577412219286e-06, + 8.120440774229300391e-06, + 8.061456313338426135e-06, + 8.002464291406811495e-06, + 7.943464805112776051e-06, + 7.884457951135022240e-06, + 7.825443826155237443e-06, + 7.766422526857783975e-06, + 7.707394149932275749e-06, + 7.648358792062829440e-06, + 7.589316549943765925e-06, + 7.530267520268893627e-06, + 7.471211799733870891e-06, + 7.412149485036299154e-06, + 7.353080672877997228e-06, + 7.294005459954347326e-06, + 7.234923942969932129e-06, + 7.175836218627962974e-06, + 7.116742383632556676e-06, + 7.057642534691369798e-06, + 6.998536768504862515e-06, + 6.939425181779306493e-06, + 6.880307871229170983e-06, + 6.821184933553438933e-06, + 6.762056465461682895e-06, + 6.702922563663313642e-06, + 6.643783324859669718e-06, + 6.584638845759537632e-06, + 6.525489223068527516e-06, + 6.466334553491526985e-06, + 6.407174933735140590e-06, + 6.348010460497117150e-06, + 6.288841230479192471e-06, + 6.229667340389675334e-06, + 6.170488886919600128e-06, + 6.111305966768815470e-06, + 6.052118676635420004e-06, + 5.992927113207563974e-06, + 5.933731373176553668e-06, + 5.874531553239278169e-06, + 5.815327750074418738e-06, + 5.756120060368556915e-06, + 5.696908580805480721e-06, + 5.637693408055590826e-06, + 5.578474638804541267e-06, + 5.519252369716402835e-06, + 5.460026697462374102e-06, + 5.400797718710032576e-06, + 5.341565530112789138e-06, + 5.282330228335958022e-06, + 5.223091910032912842e-06, + 5.163850671847626835e-06, + 5.104606610427611301e-06, + 5.045359822415859460e-06, + 4.986110404440221281e-06, + 4.926858453142156011e-06, + 4.867604065139700740e-06, + 4.808347337056351687e-06, + 4.749088365507664137e-06, + 4.689827247103768128e-06, + 4.630564078449182105e-06, + 4.571298956145347243e-06, + 4.512031976779852341e-06, + 4.452763236942154750e-06, + 4.393492833215497142e-06, + 4.334220862166194236e-06, + 4.274947420369861171e-06, + 4.215672604387479747e-06, + 4.156396510767946296e-06, + 4.097119236061060935e-06, + 4.037840876806810058e-06, + 3.978561529537879481e-06, + 3.919281290782125237e-06, + 3.860000257051867084e-06, + 3.800718524859539549e-06, + 3.741436190706992640e-06, + 3.682153351088008371e-06, + 3.622870102488086048e-06, + 3.563586541386969386e-06, + 3.504302764247928582e-06, + 3.445018867533408821e-06, + 3.385734947694350887e-06, + 3.326451101172664498e-06, + 3.267167424401048738e-06, + 3.207884013805521293e-06, + 3.148600965794662406e-06, + 3.089318376775307432e-06, + 3.030036343141863634e-06, + 2.970754961278739054e-06, + 2.911474327562867512e-06, + 2.852194538352984327e-06, + 2.792915690005307012e-06, + 2.733637878862792780e-06, + 2.674361201257685570e-06, + 2.615085753511290315e-06, + 2.555811631936522085e-06, + 2.496538932827134374e-06, + 2.437267752473433248e-06, + 2.377998187151566620e-06, + 2.318730333125975559e-06, + 2.259464286649276980e-06, + 2.200200143964725115e-06, + 2.140938001295517732e-06, + 2.081677954860444211e-06, + 2.022420100863201078e-06, + 1.963164535494867880e-06, + 1.903911354936389836e-06, + 1.844660655347863298e-06, + 1.785412532881575822e-06, + 1.726167083684501947e-06, + 1.666924403874386802e-06, + 1.607684589565967488e-06, + 1.548447736860297501e-06, + 1.489213941836626441e-06, + 1.429983300568132795e-06, + 1.370755909111169167e-06, + 1.311531863507759539e-06, + 1.252311259788102466e-06, + 1.193094193959833875e-06, + 1.133880762021075183e-06, + 1.074671059962925058e-06, + 1.015465183745540265e-06, + 9.562632293243879710e-07, + 8.970652926395201917e-07, + 8.378714696048668691e-07, + 7.786818561344794948e-07, + 7.194965481186108992e-07, + 6.603156414262121986e-07, + 6.011392319179674679e-07, + 5.419674154382202459e-07, + 4.828002878042710622e-07, + 4.236379448352395554e-07, + 3.644804823149806828e-07, + 3.053279960209433444e-07, + 2.461805817134676981e-07, + 1.870383351250769692e-07, + 1.279013519867057993e-07, + 6.876972800380035132e-08, + 9.643558858806387505e-09, +-4.947705977579843183e-08, +-1.085920322455717333e-07, +-1.677012629248087547e-07, +-2.268046561876873021e-07, +-2.859021164453424335e-07, +-3.449935481170104286e-07, +-4.040788556433694650e-07, +-4.631579434840558000e-07, +-5.222307161178180362e-07, +-5.812970780400357920e-07, +-6.403569337734150802e-07, +-6.994101878523244985e-07, +-7.584567448308645949e-07, +-8.174965092935538232e-07, +-8.765293858291317203e-07, +-9.355552790544367644e-07, +-9.945740936119145104e-07, +-1.053585734156590647e-06, +-1.112590105366789773e-06, +-1.171587111941622678e-06, +-1.230576658598528249e-06, +-1.289558650083947570e-06, +-1.348532991157683246e-06, +-1.407499586600952569e-06, +-1.466458341227069027e-06, +-1.525409159855266020e-06, +-1.584351947334549947e-06, +-1.643286608541213525e-06, +-1.702213048365835739e-06, +-1.761131171723945144e-06, +-1.820040883553567276e-06, +-1.878942088815360816e-06, +-1.937834692490131759e-06, +-1.996718599589530804e-06, +-2.055593715140397857e-06, +-2.114459944195461539e-06, +-2.173317191830836205e-06, +-2.232165363143561308e-06, +-2.291004363262279952e-06, +-2.349834097331581057e-06, +-2.408654470522694000e-06, +-2.467465388031027139e-06, +-2.526266755076280886e-06, +-2.585058476899986236e-06, +-2.643840458776185003e-06, +-2.702612605995806719e-06, +-2.761374823877317110e-06, +-2.820127017764248996e-06, +-2.878869093022748435e-06, +-2.937600955052195246e-06, +-2.996322509269628191e-06, +-3.055033661120376087e-06, +-3.113734316075630628e-06, +-3.172424379632525166e-06, +-3.231103757311713463e-06, +-3.289772354668007577e-06, +-3.348430077277411484e-06, +-3.407076830734626992e-06, +-3.465712520676849005e-06, +-3.524337052757657014e-06, +-3.582950332657680928e-06, +-3.641552266092607232e-06, +-3.700142758797576643e-06, +-3.758721716537870694e-06, +-3.817289045106393937e-06, +-3.875844650321235753e-06, +-3.934388438036273087e-06, +-3.992920314128265482e-06, +-4.051440184494335998e-06, +-4.109947955075732183e-06, +-4.168443531831770492e-06, +-4.226926820750437751e-06, +-4.285397727859080713e-06, +-4.343856159195699264e-06, +-4.402302020845774569e-06, +-4.460735218913598703e-06, +-4.519155659535534945e-06, +-4.577563248874933047e-06, +-4.635957893135344638e-06, +-4.694339498531946027e-06, +-4.752707971328209648e-06, +-4.811063217807375988e-06, +-4.869405144283056751e-06, +-4.927733657109766012e-06, +-4.986048662657041670e-06, +-5.044350067332986188e-06, +-5.102637777581945721e-06, +-5.160911699871457338e-06, +-5.219171740700353437e-06, +-5.277417806609289513e-06, +-5.335649804152177126e-06, +-5.393867639932912099e-06, +-5.452071220576771906e-06, +-5.510260452741041704e-06, +-5.568435243125535326e-06, +-5.626595498446777718e-06, +-5.684741125461514338e-06, +-5.742872030964266620e-06, +-5.800988121774520600e-06, +-5.859089304744623806e-06, +-5.917175486770358764e-06, +-5.975246574765063610e-06, +-6.033302475683246512e-06, +-6.091343096518065755e-06, +-6.149368344288531068e-06, +-6.207378126049992433e-06, +-6.265372348891709105e-06, +-6.323350919934480455e-06, +-6.381313746341040764e-06, +-6.439260735300755873e-06, +-6.497191794040030681e-06, +-6.555106829820011991e-06, +-6.613005749936623238e-06, +-6.670888461718127572e-06, +-6.728754872535664955e-06, +-6.786604889787903916e-06, +-6.844438420911472768e-06, +-6.902255373378534549e-06, +-6.960055654694337404e-06, +-7.017839172407823674e-06, +-7.075605834096062274e-06, +-7.133355547374875572e-06, +-7.191088219896418566e-06, +-7.248803759349175498e-06, +-7.306502073455706745e-06, +-7.364183069983008032e-06, +-7.421846656727210478e-06, +-7.479492741524014344e-06, +-7.537121232246354614e-06, +-7.594732036804356099e-06, +-7.652325063143131155e-06, +-7.709900219253093152e-06, +-7.767457413154620099e-06, +-7.824996552908621377e-06, +-7.882517546614053395e-06, +-7.940020302405408981e-06, +-7.997504728463308683e-06, +-8.054970732999128816e-06, +-8.112418224265396249e-06, +-8.169847110553430267e-06, +-8.227257300193435743e-06, +-8.284648701552180572e-06, +-8.342021223043321010e-06, +-8.399374773112078837e-06, +-8.456709260245851302e-06, +-8.514024592971605642e-06, +-8.571320679856148444e-06, +-8.628597429503560826e-06, +-8.685854750565832089e-06, +-8.743092551727391201e-06, +-8.800310741715608315e-06, +-8.857509229298379027e-06, +-8.914687923281679839e-06, +-8.971846732519998525e-06, +-9.028985565903610002e-06, +-9.086104332356204636e-06, +-9.143202940858134213e-06, +-9.200281300420809526e-06, +-9.257339320097166311e-06, +-9.314376908992134572e-06, +-9.371393976234425612e-06, +-9.428390431012722360e-06, +-9.485366182547456235e-06, +-9.542321140103971730e-06, +-9.599255212987418804e-06, +-9.656168310555661666e-06, +-9.713060342191358871e-06, +-9.769931217337892769e-06, +-9.826780845471395388e-06, +-9.883609136111077162e-06, +-9.940415998829596302e-06, +-9.997201343227756228e-06, +-1.005396507895748388e-05, +-1.011070711571952580e-05, +-1.016742736325074769e-05, +-1.022412573133205082e-05, +-1.028080212979853808e-05, +-1.033745646851179571e-05, +-1.039408865739566516e-05, +-1.045069860640825715e-05, +-1.050728622555238203e-05, +-1.056385142488582765e-05, +-1.062039411449617203e-05, +-1.067691420452359391e-05, +-1.073341160515866544e-05, +-1.078988622662976691e-05, +-1.084633797921074565e-05, +-1.090276677323125492e-05, +-1.095917251905159530e-05, +-1.101555512708558124e-05, +-1.107191450779821170e-05, +-1.112825057169314250e-05, +-1.118456322932290330e-05, +-1.124085239128653940e-05, +-1.129711796822731291e-05, +-1.135335987084271977e-05, +-1.140957800986974291e-05, +-1.146577229609491329e-05, +-1.152194264035202970e-05, +-1.157808895352216723e-05, +-1.163421114653151393e-05, +-1.169030913036134213e-05, +-1.174638281603327677e-05, +-1.180243211461926165e-05, +-1.185845693723939270e-05, +-1.191445719505935485e-05, +-1.197043279930092525e-05, +-1.202638366122657251e-05, +-1.208230969215007850e-05, +-1.213821080343397352e-05, +-1.219408690648962951e-05, +-1.224993791277501705e-05, +-1.230576373380475291e-05, +-1.236156428113531592e-05, +-1.241733946637511141e-05, +-1.247308920118222491e-05, +-1.252881339726435094e-05, +-1.258451196637667890e-05, +-1.264018482033192861e-05, +-1.269583187098537317e-05, +-1.275145303024515578e-05, +-1.280704821006984519e-05, +-1.286261732246614197e-05, +-1.291816027949885990e-05, +-1.297367699327617240e-05, +-1.302916737595983957e-05, +-1.308463133976268066e-05, +-1.314006879694879769e-05, +-1.319547965983118510e-05, +-1.325086384078186706e-05, +-1.330622125221713540e-05, +-1.336155180660745644e-05, +-1.341685541647539245e-05, +-1.347213199439551521e-05, +-1.352738145299215121e-05, +-1.358260370495197363e-05, +-1.363779866299670930e-05, +-1.369296623991820918e-05, +-1.374810634855109602e-05, +-1.380321890178287962e-05, +-1.385830381256167158e-05, +-1.391336099388376275e-05, +-1.396839035879123457e-05, +-1.402339182039472565e-05, +-1.407836529184829857e-05, +-1.413331068635998717e-05, +-1.418822791720144424e-05, +-1.424311689768108886e-05, +-1.429797754117878737e-05, +-1.435280976111874828e-05, +-1.440761347097962396e-05, +-1.446238858430209843e-05, +-1.451713501467648165e-05, +-1.457185267574060891e-05, +-1.462654148120201278e-05, +-1.468120134481348615e-05, +-1.473583218038302646e-05, +-1.479043390178385777e-05, +-1.484500642292994303e-05, +-1.489954965779826614e-05, +-1.495406352042648905e-05, +-1.500854792490078497e-05, +-1.506300278536341935e-05, +-1.511742801602257541e-05, +-1.517182353112563200e-05, +-1.522618924499348871e-05, +-1.528052507199397417e-05, +-1.533483092655145135e-05, +-1.538910672315705992e-05, +-1.544335237634414214e-05, +-1.549756780071052654e-05, +-1.555175291091614954e-05, +-1.560590762167105800e-05, +-1.566003184774273778e-05, +-1.571412550396614940e-05, +-1.576818850521690077e-05, +-1.582222076644559952e-05, +-1.587622220265116462e-05, +-1.593019272889308470e-05, +-1.598413226028921571e-05, +-1.603804071201578774e-05, +-1.609191799930530774e-05, +-1.614576403745613778e-05, +-1.619957874181822424e-05, +-1.625336202780294372e-05, +-1.630711381088076860e-05, +-1.636083400658147713e-05, +-1.641452253049163266e-05, +-1.646817929826470056e-05, +-1.652180422560650303e-05, +-1.657539722828495316e-05, +-1.662895822212804239e-05, +-1.668248712302111984e-05, +-1.673598384691711772e-05, +-1.678944830982196876e-05, +-1.684288042780446231e-05, +-1.689628011699394043e-05, +-1.694964729358039950e-05, +-1.700298187381217953e-05, +-1.705628377400593545e-05, +-1.710955291053204100e-05, +-1.716278919982457357e-05, +-1.721599255837887138e-05, +-1.726916290275175368e-05, +-1.732230014955933540e-05, +-1.737540421548649025e-05, +-1.742847501727291866e-05, +-1.748151247172254649e-05, +-1.753451649570148877e-05, +-1.758748700613576270e-05, +-1.764042392002076424e-05, +-1.769332715440746149e-05, +-1.774619662641167820e-05, +-1.779903225321204387e-05, +-1.785183395205000738e-05, +-1.790460164022780409e-05, +-1.795733523511780367e-05, +-1.801003465414860523e-05, +-1.806269981481460878e-05, +-1.811533063467363002e-05, +-1.816792703134485724e-05, +-1.822048892251843639e-05, +-1.827301622594356854e-05, +-1.832550885942645333e-05, +-1.837796674085163753e-05, +-1.843038978815858954e-05, +-1.848277791935109467e-05, +-1.853513105250465142e-05, +-1.858744910575468417e-05, +-1.863973199729439853e-05, +-1.869197964539596048e-05, +-1.874419196838739615e-05, +-1.879636888466162118e-05, +-1.884851031268656104e-05, +-1.890061617097902517e-05, +-1.895268637813771418e-05, +-1.900472085281782912e-05, +-1.905671951374029066e-05, +-1.910868227969901001e-05, +-1.916060906954934211e-05, +-1.921249980220562592e-05, +-1.926435439666291923e-05, +-1.931617277197304121e-05, +-1.936795484725456061e-05, +-1.941970054170205894e-05, +-1.947140977456050936e-05, +-1.952308246515834151e-05, +-1.957471853288161715e-05, +-1.962631789718604109e-05, +-1.967788047759211955e-05, +-1.972940619369737775e-05, +-1.978089496515035263e-05, +-1.983234671168378977e-05, +-1.988376135308893083e-05, +-1.993513880922480043e-05, +-1.998647900002801820e-05, +-2.003778184548927834e-05, +-2.008904726567470165e-05, +-2.014027518072336896e-05, +-2.019146551083609624e-05, +-2.024261817628457240e-05, +-2.029373309740948228e-05, +-2.034481019461792148e-05, +-2.039584938839318130e-05, +-2.044685059928073881e-05, +-2.049781374789765552e-05, +-2.054873875493035479e-05, +-2.059962554113503177e-05, +-2.065047402733500388e-05, +-2.070128413443046188e-05, +-2.075205578338460560e-05, +-2.080278889523282920e-05, +-2.085348339108089832e-05, +-2.090413919210475021e-05, +-2.095475621954837273e-05, +-2.100533439473329793e-05, +-2.105587363904480217e-05, +-2.110637387394104729e-05, +-2.115683502095142045e-05, +-2.120725700167382021e-05, +-2.125763973778408911e-05, +-2.130798315102262037e-05, +-2.135828716320331612e-05, +-2.140855169621174426e-05, +-2.145877667200498938e-05, +-2.150896201260962663e-05, +-2.155910764013088327e-05, +-2.160921347673918098e-05, +-2.165927944467927707e-05, +-2.170930546626816381e-05, +-2.175929146389511248e-05, +-2.180923736001974552e-05, +-2.185914307718099140e-05, +-2.190900853798355576e-05, +-2.195883366510738787e-05, +-2.200861838130522085e-05, +-2.205836260940069804e-05, +-2.210806627229737524e-05, +-2.215772929296534101e-05, +-2.220735159445024601e-05, +-2.225693309987143955e-05, +-2.230647373242183068e-05, +-2.235597341536583156e-05, +-2.240543207204848513e-05, +-2.245484962588209212e-05, +-2.250422600035532854e-05, +-2.255356111903108403e-05, +-2.260285490554433073e-05, +-2.265210728361140001e-05, +-2.270131817701856103e-05, +-2.275048750962005905e-05, +-2.279961520535849165e-05, +-2.284870118824237250e-05, +-2.289774538235533693e-05, +-2.294674771186281994e-05, +-2.299570810100112271e-05, +-2.304462647407524075e-05, +-2.309350275547907081e-05, +-2.314233686967315755e-05, +-2.319112874119403804e-05, +-2.323987829466270870e-05, +-2.328858545476070172e-05, +-2.333725014626137779e-05, +-2.338587229400511489e-05, +-2.343445182290885935e-05, +-2.348298865797259047e-05, +-2.353148272426840393e-05, +-2.357993394693831628e-05, +-2.362834225121454292e-05, +-2.367670756239738375e-05, +-2.372502980586407639e-05, +-2.377330890707779839e-05, +-2.382154479156362172e-05, +-2.386973738493929729e-05, +-2.391788661289135848e-05, +-2.396599240118601736e-05, +-2.401405467566501424e-05, +-2.406207336225674767e-05, +-2.411004838695213740e-05, +-2.415797967583552415e-05, +-2.420586715506056980e-05, +-2.425371075085925289e-05, +-2.430151038955069472e-05, +-2.434926599751921443e-05, +-2.439697750123459675e-05, +-2.444464482724955433e-05, +-2.449226790218893317e-05, +-2.453984665275901639e-05, +-2.458738100574487810e-05, +-2.463487088800864872e-05, +-2.468231622649833424e-05, +-2.472971694823465334e-05, +-2.477707298031805086e-05, +-2.482438424993700543e-05, +-2.487165068434682661e-05, +-2.491887221088927550e-05, +-2.496604875699011858e-05, +-2.501318025014892597e-05, +-2.506026661794743000e-05, +-2.510730778804779386e-05, +-2.515430368819237443e-05, +-2.520125424620201467e-05, +-2.524815938998458846e-05, +-2.529501904752214946e-05, +-2.534183314687979443e-05, +-2.538860161620356938e-05, +-2.543532438371835197e-05, +-2.548200137773670474e-05, +-2.552863252664587477e-05, +-2.557521775891671135e-05, +-2.562175700310165670e-05, +-2.566825018783435984e-05, +-2.571469724182849065e-05, +-2.576109809388564442e-05, +-2.580745267288293791e-05, +-2.585376090778183542e-05, +-2.590002272762563141e-05, +-2.594623806153802746e-05, +-2.599240683873123335e-05, +-2.603852898849352918e-05, +-2.608460444019809825e-05, +-2.613063312330059435e-05, +-2.617661496733945353e-05, +-2.622254990193394926e-05, +-2.626843785679264584e-05, +-2.631427876170289179e-05, +-2.636007254652900721e-05, +-2.640581914123134541e-05, +-2.645151847584505271e-05, +-2.649717048048889114e-05, +-2.654277508537162506e-05, +-2.658833222077924111e-05, +-2.663384181708382178e-05, +-2.667930380474137016e-05, +-2.672471811428982119e-05, +-2.677008467635750850e-05, +-2.681540342165280021e-05, +-2.686067428096239126e-05, +-2.690589718516963997e-05, +-2.695107206523434773e-05, +-2.699619885220096835e-05, +-2.704127747720477118e-05, +-2.708630787146002321e-05, +-2.713128996626772762e-05, +-2.717622369301419397e-05, +-2.722110898317083830e-05, +-2.726594576829236710e-05, +-2.731073398002693153e-05, +-2.735547355009404697e-05, +-2.740016441031303300e-05, +-2.744480649258077709e-05, +-2.748939972888007278e-05, +-2.753394405128565059e-05, +-2.757843939195411860e-05, +-2.762288568312211599e-05, +-2.766728285712497141e-05, +-2.771163084637585924e-05, +-2.775592958337444609e-05, +-2.780017900071535774e-05, +-2.784437903106518387e-05, +-2.788852960719180916e-05, +-2.793263066194165518e-05, +-2.797668212825009211e-05, +-2.802068393913762374e-05, +-2.806463602771981126e-05, +-2.810853832718551473e-05, +-2.815239077082489595e-05, +-2.819619329200758533e-05, +-2.823994582419060340e-05, +-2.828364830092686835e-05, +-2.832730065584472835e-05, +-2.837090282266669115e-05, +-2.841445473520687280e-05, +-2.845795632736168707e-05, +-2.850140753311768897e-05, +-2.854480828654934539e-05, +-2.858815852181781532e-05, +-2.863145817317843428e-05, +-2.867470717496928951e-05, +-2.871790546161694254e-05, +-2.876105296764468945e-05, +-2.880414962765273353e-05, +-2.884719537633619656e-05, +-2.889019014848309615e-05, +-2.893313387896469290e-05, +-2.897602650274338815e-05, +-2.901886795487103332e-05, +-2.906165817048863851e-05, +-2.910439708482509519e-05, +-2.914708463320446407e-05, +-2.918972075103474679e-05, +-2.923230537381590571e-05, +-2.927483843713751246e-05, +-2.931731987667724029e-05, +-2.935974962820866012e-05, +-2.940212762758998856e-05, +-2.944445381077132837e-05, +-2.948672811379333690e-05, +-2.952895047278702957e-05, +-2.957112082397206213e-05, +-2.961323910366468257e-05, +-2.965530524826593027e-05, +-2.969731919426975395e-05, +-2.973928087826106011e-05, +-2.978119023691381910e-05, +-2.982304720699882389e-05, +-2.986485172537245165e-05, +-2.990660372898432435e-05, +-2.994830315487540459e-05, +-2.998994994017819551e-05, +-3.003154402211499931e-05, +-3.007308533800547614e-05, +-3.011457382525522614e-05, +-3.015600942136383619e-05, +-3.019739206392270140e-05, +-3.023872169061548926e-05, +-3.027999823921600510e-05, +-3.032122164759588998e-05, +-3.036239185371385652e-05, +-3.040350879562243812e-05, +-3.044457241146703686e-05, +-3.048558263948376529e-05, +-3.052653941800686978e-05, +-3.056744268546002647e-05, +-3.060829238035379674e-05, +-3.064908844130319468e-05, +-3.068983080700900154e-05, +-3.073051941626475208e-05, +-3.077115420796308393e-05, +-3.081173512108452281e-05, +-3.085226209470457739e-05, +-3.089273506799257365e-05, +-3.093315398021133649e-05, +-3.097351877071561081e-05, +-3.101382937896141956e-05, +-3.105408574448548421e-05, +-3.109428780693169282e-05, +-3.113443550603055445e-05, +-3.117452878160682241e-05, +-3.121456757358464427e-05, +-3.125455182197951163e-05, +-3.129448146689514301e-05, +-3.133435644854133261e-05, +-3.137417670721476661e-05, +-3.141394218330712765e-05, +-3.145365281731195918e-05, +-3.149330854980489906e-05, +-3.153290932146959202e-05, +-3.157245507307713048e-05, +-3.161194574549390821e-05, +-3.165138127968891843e-05, +-3.169076161671517320e-05, +-3.173008669772692199e-05, +-3.176935646397738836e-05, +-3.180857085680985921e-05, +-3.184772981766353266e-05, +-3.188683328808011137e-05, +-3.192588120968678733e-05, +-3.196487352421178665e-05, +-3.200381017348312944e-05, +-3.204269109941933961e-05, +-3.208151624403692584e-05, +-3.212028554944884335e-05, +-3.215899895786247461e-05, +-3.219765641158694092e-05, +-3.223625785302266014e-05, +-3.227480322466645609e-05, +-3.231329246911915463e-05, +-3.235172552906756565e-05, +-3.239010234730073254e-05, +-3.242842286670811613e-05, +-3.246668703027101593e-05, +-3.250489478106940067e-05, +-3.254304606228056651e-05, +-3.258114081717730751e-05, +-3.261917898913497648e-05, +-3.265716052162119862e-05, +-3.269508535820285104e-05, +-3.273295344254417900e-05, +-3.277076471840756160e-05, +-3.280851912965096392e-05, +-3.284621662023570938e-05, +-3.288385713421567162e-05, +-3.292144061574450476e-05, +-3.295896700907405096e-05, +-3.299643625855432013e-05, +-3.303384830863151801e-05, +-3.307120310385595408e-05, +-3.310850058887065744e-05, +-3.314574070841929825e-05, +-3.318292340734359242e-05, +-3.322004863058286117e-05, +-3.325711632317976374e-05, +-3.329412643027100714e-05, +-3.333107889709355318e-05, +-3.336797366898374437e-05, +-3.340481069137664658e-05, +-3.344158990980495135e-05, +-3.347831126990565042e-05, +-3.351497471740993241e-05, +-3.355158019814990481e-05, +-3.358812765805738784e-05, +-3.362461704316366371e-05, +-3.366104829959766059e-05, +-3.369742137359354881e-05, +-3.373373621147972940e-05, +-3.376999275968643033e-05, +-3.380619096474379555e-05, +-3.384233077328020452e-05, +-3.387841213202909588e-05, +-3.391443498782089694e-05, +-3.395039928758105177e-05, +-3.398630497834545755e-05, +-3.402215200724365262e-05, +-3.405794032150580964e-05, +-3.409366986846747892e-05, +-3.412934059555983065e-05, +-3.416495245031649888e-05, +-3.420050538037167065e-05, +-3.423599933345914406e-05, +-3.427143425741801359e-05, +-3.430681010018564307e-05, +-3.434212680979518561e-05, +-3.437738433439083694e-05, +-3.441258262221158596e-05, +-3.444772162159752339e-05, +-3.448280128099527641e-05, +-3.451782154894928752e-05, +-3.455278237410099469e-05, +-3.458768370520310211e-05, +-3.462252549110331044e-05, +-3.465730768075118111e-05, +-3.469203022320461446e-05, +-3.472669306761197395e-05, +-3.476129616323505770e-05, +-3.479583945943087709e-05, +-3.483032290565900226e-05, +-3.486474645148736936e-05, +-3.489911004657651896e-05, +-3.493341364069424632e-05, +-3.496765718371395477e-05, +-3.500184062560644289e-05, +-3.503596391644535259e-05, +-3.507002700641323391e-05, +-3.510402984578419775e-05, +-3.513797238494602006e-05, +-3.517185457438330959e-05, +-3.520567636468489403e-05, +-3.523943770654266804e-05, +-3.527313855075149161e-05, +-3.530677884820771959e-05, +-3.534035854991597798e-05, +-3.537387760697888433e-05, +-3.540733597060278045e-05, +-3.544073359210338383e-05, +-3.547407042289062233e-05, +-3.550734641448273564e-05, +-3.554056151850445918e-05, +-3.557371568667967867e-05, +-3.560680887083753554e-05, +-3.563984102291091580e-05, +-3.567281209493501350e-05, +-3.570572203905384947e-05, +-3.573857080751037800e-05, +-3.577135835265345961e-05, +-3.580408462693610597e-05, +-3.583674958291555447e-05, +-3.586935317325164191e-05, +-3.590189535071313352e-05, +-3.593437606816881898e-05, +-3.596679527859336704e-05, +-3.599915293506594327e-05, +-3.603144899077027094e-05, +-3.606368339899359432e-05, +-3.609585611313205223e-05, +-3.612796708668216029e-05, +-3.616001627324697730e-05, +-3.619200362653424179e-05, +-3.622392910035546399e-05, +-3.625579264863141459e-05, +-3.628759422538399326e-05, +-3.631933378474122272e-05, +-3.635101128093680829e-05, +-3.638262666830962292e-05, +-3.641417990130239933e-05, +-3.644567093446793711e-05, +-3.647709972246004960e-05, +-3.650846622003943892e-05, +-3.653977038207285573e-05, +-3.657101216353223860e-05, +-3.660219151949446336e-05, +-3.663330840514600508e-05, +-3.666436277577534873e-05, +-3.669535458677811878e-05, +-3.672628379365603567e-05, +-3.675715035201564183e-05, +-3.678795421757369565e-05, +-3.681869534615042226e-05, +-3.684937369366803636e-05, +-3.687998921616357642e-05, +-3.691054186977495914e-05, +-3.694103161074638694e-05, +-3.697145839543303708e-05, +-3.700182218029213736e-05, +-3.703212292188915963e-05, +-3.706236057689633575e-05, +-3.709253510209111940e-05, +-3.712264645436213567e-05, +-3.715269459070194395e-05, +-3.718267946820588601e-05, +-3.721260104408485246e-05, +-3.724245927565119491e-05, +-3.727225412032399789e-05, +-3.730198553563563829e-05, +-3.733165347921716895e-05, +-3.736125790881091572e-05, +-3.739079878226965080e-05, +-3.742027605754937595e-05, +-3.744968969271334766e-05, +-3.747903964593807410e-05, +-3.750832587549798722e-05, +-3.753754833978457218e-05, +-3.756670699729195415e-05, +-3.759580180662172312e-05, +-3.762483272648875461e-05, +-3.765379971570773174e-05, +-3.768270273320543739e-05, +-3.771154173801909392e-05, +-3.774031668929027144e-05, +-3.776902754626832327e-05, +-3.779767426831623389e-05, +-3.782625681489586704e-05, +-3.785477514558688501e-05, +-3.788322922007156306e-05, +-3.791161899814219586e-05, +-3.793994443969949830e-05, +-3.796820550475244962e-05, +-3.799640215341762938e-05, +-3.802453434592379137e-05, +-3.805260204260461985e-05, +-3.808060520390266652e-05, +-3.810854379037407357e-05, +-3.813641776267626804e-05, +-3.816422708157936620e-05, +-3.819197170796511650e-05, +-3.821965160282029270e-05, +-3.824726672724195224e-05, +-3.827481704243612844e-05, +-3.830230250971707154e-05, +-3.832972309051183626e-05, +-3.835707874635286175e-05, +-3.838436943888199671e-05, +-3.841159512985539189e-05, +-3.843875578113115364e-05, +-3.846585135468042323e-05, +-3.849288181258675331e-05, +-3.851984711703910136e-05, +-3.854674723033740645e-05, +-3.857358211489134251e-05, +-3.860035173322026405e-05, +-3.862705604795188481e-05, +-3.865369502182765813e-05, +-3.868026861769524171e-05, +-3.870677679851313937e-05, +-3.873321952735011832e-05, +-3.875959676738361667e-05, +-3.878590848190471726e-05, +-3.881215463431113424e-05, +-3.883833518811173954e-05, +-3.886445010692582435e-05, +-3.889049935448284155e-05, +-3.891648289462140285e-05, +-3.894240069129393411e-05, +-3.896825270855989223e-05, +-3.899403891059029177e-05, +-3.901975926166630901e-05, +-3.904541372617905830e-05, +-3.907100226863356301e-05, +-3.909652485364184369e-05, +-3.912198144592772927e-05, +-3.914737201032611160e-05, +-3.917269651178247118e-05, +-3.919795491535179292e-05, +-3.922314718620353993e-05, +-3.924827328961622572e-05, +-3.927333319097495444e-05, +-3.929832685578363847e-05, +-3.932325424965208284e-05, +-3.934811533830156213e-05, +-3.937291008756756486e-05, +-3.939763846339379644e-05, +-3.942230043183594007e-05, +-3.944689595906115525e-05, +-3.947142501134676996e-05, +-3.949588755508496310e-05, +-3.952028355677688942e-05, +-3.954461298303183251e-05, +-3.956887580057764702e-05, +-3.959307197624875114e-05, +-3.961720147699142558e-05, +-3.964126426986821144e-05, +-3.966526032204510302e-05, +-3.968918960080804805e-05, +-3.971305207354988980e-05, +-3.973684770777683166e-05, +-3.976057647110534717e-05, +-3.978423833126882073e-05, +-3.980783325610430680e-05, +-3.983136121356867096e-05, +-3.985482217172669079e-05, +-3.987821609875471504e-05, +-3.990154296294603722e-05, +-3.992480273269928109e-05, +-3.994799537652863957e-05, +-3.997112086306258728e-05, +-3.999417916103872379e-05, +-4.001717023930675515e-05, +-4.004009406683339318e-05, +-4.006295061268988711e-05, +-4.008573984606748702e-05, +-4.010846173626574800e-05, +-4.013111625269664338e-05, +-4.015370336488899636e-05, +-4.017622304247766511e-05, +-4.019867525521354454e-05, +-4.022105997296221782e-05, +-4.024337716569860316e-05, +-4.026562680351062647e-05, +-4.028780885660318556e-05, +-4.030992329528753168e-05, +-4.033197008999089183e-05, +-4.035394921125558785e-05, +-4.037586062973380516e-05, +-4.039770431619144162e-05, +-4.041948024150769425e-05, +-4.044118837667354808e-05, +-4.046282869279626881e-05, +-4.048440116109322968e-05, +-4.050590575289572643e-05, +-4.052734243964839462e-05, +-4.054871119290912149e-05, +-4.057001198434771782e-05, +-4.059124478575079007e-05, +-4.061240956901490315e-05, +-4.063350630615118145e-05, +-4.065453496928401463e-05, +-4.067549553065019700e-05, +-4.069638796260308816e-05, +-4.071721223760641948e-05, +-4.073796832823841410e-05, +-4.075865620719125833e-05, +-4.077927584727010561e-05, +-4.079982722139329328e-05, +-4.082031030259560201e-05, +-4.084072506402235364e-05, +-4.086107147893375480e-05, +-4.088134952070390755e-05, +-4.090155916282032150e-05, +-4.092170037888389348e-05, +-4.094177314261180099e-05, +-4.096177742783252846e-05, +-4.098171320848920790e-05, +-4.100158045863907006e-05, +-4.102137915245232633e-05, +-4.104110926421601765e-05, +-4.106077076832876293e-05, +-4.108036363930356441e-05, +-4.109988785176807191e-05, +-4.111934338046362744e-05, +-4.113873020024525834e-05, +-4.115804828608461826e-05, +-4.117729761306504043e-05, +-4.119647815638498002e-05, +-4.121558989135722811e-05, +-4.123463279340860673e-05, +-4.125360683807982658e-05, +-4.127251200102836692e-05, +-4.129134825802348150e-05, +-4.131011558494981028e-05, +-4.132881395780636975e-05, +-4.134744335270586858e-05, +-4.136600374587828544e-05, +-4.138449511366615275e-05, +-4.140291743252389936e-05, +-4.142127067902623958e-05, +-4.143955482985851022e-05, +-4.145776986182102096e-05, +-4.147591575183216464e-05, +-4.149399247691888985e-05, +-4.151200001422913536e-05, +-4.152993834102186902e-05, +-4.154780743467200056e-05, +-4.156560727266815218e-05, +-4.158333783261749681e-05, +-4.160099909223566826e-05, +-4.161859102935956158e-05, +-4.163611362193745324e-05, +-4.165356684803245708e-05, +-4.167095068582621733e-05, +-4.168826511361018079e-05, +-4.170551010979322692e-05, +-4.172268565290126124e-05, +-4.173979172157245841e-05, +-4.175682829456041318e-05, +-4.177379535073674251e-05, +-4.179069286908266938e-05, +-4.180752082870037311e-05, +-4.182427920880360419e-05, +-4.184096798872162808e-05, +-4.185758714790236258e-05, +-4.187413666590350780e-05, +-4.189061652240105702e-05, +-4.190702669718770438e-05, +-4.192336717016877226e-05, +-4.193963792136547750e-05, +-4.195583893091695069e-05, +-4.197197017907345316e-05, +-4.198803164620280761e-05, +-4.200402331278993060e-05, +-4.201994515943278030e-05, +-4.203579716684531097e-05, +-4.205157931585737808e-05, +-4.206729158741325431e-05, +-4.208293396257536327e-05, +-4.209850642251904823e-05, +-4.211400894853619743e-05, +-4.212944152203417338e-05, +-4.214480412453609076e-05, +-4.216009673767953566e-05, +-4.217531934322056358e-05, +-4.219047192302830554e-05, +-4.220555445908824100e-05, +-4.222056693350183872e-05, +-4.223550932848518119e-05, +-4.225038162637277965e-05, +-4.226518380961208533e-05, +-4.227991586076779238e-05, +-4.229457776251954748e-05, +-4.230916949766338640e-05, +-4.232369104911032457e-05, +-4.233814239988946735e-05, +-4.235252353314319213e-05, +-4.236683443213092948e-05, +-4.238107508022782144e-05, +-4.239524546092496548e-05, +-4.240934555782841837e-05, +-4.242337535466264532e-05, +-4.243733483526583079e-05, +-4.245122398359274486e-05, +-4.246504278371428243e-05, +-4.247879121981637903e-05, +-4.249246927620341252e-05, +-4.250607693729345287e-05, +-4.251961418762120314e-05, +-4.253308101183791133e-05, +-4.254647739471049625e-05, +-4.255980332112118162e-05, +-4.257305877607069446e-05, +-4.258624374467357592e-05, +-4.259935821216121024e-05, +-4.261240216388105908e-05, +-4.262537558529704771e-05, +-4.263827846198821661e-05, +-4.265111077965267873e-05, +-4.266387252409979973e-05, +-4.267656368126016583e-05, +-4.268918423717781827e-05, +-4.270173417801274688e-05, +-4.271421349004328900e-05, +-4.272662215966289029e-05, +-4.273896017337921717e-05, +-4.275122751782004530e-05, +-4.276342417972675439e-05, +-4.277555014595727591e-05, +-4.278760540348800395e-05, +-4.279958993940743235e-05, +-4.281150374092499090e-05, +-4.282334679536363892e-05, +-4.283511909016276550e-05, +-4.284682061287974124e-05, +-4.285845135118752626e-05, +-4.287001129287330815e-05, +-4.288150042584412626e-05, +-4.289291873812145072e-05, +-4.290426621784287648e-05, +-4.291554285326471186e-05, +-4.292674863275626614e-05, +-4.293788354480494534e-05, +-4.294894757801581849e-05, +-4.295994072110845995e-05, +-4.297086296291916522e-05, +-4.298171429240279406e-05, +-4.299249469862681419e-05, +-4.300320417077872130e-05, +-4.301384269816085519e-05, +-4.302441027019145007e-05, +-4.303490687640764328e-05, +-4.304533250645995937e-05, +-4.305568715011671467e-05, +-4.306597079726399020e-05, +-4.307618343790288728e-05, +-4.308632506215068626e-05, +-4.309639566024356383e-05, +-4.310639522253031139e-05, +-4.311632373948010743e-05, +-4.312618120167638504e-05, +-4.313596759981992864e-05, +-4.314568292472766779e-05, +-4.315532716733338196e-05, +-4.316490031868669083e-05, +-4.317440236995540568e-05, +-4.318383331242222256e-05, +-4.319319313748708043e-05, +-4.320248183666630735e-05, +-4.321169940159302707e-05, +-4.322084582401596639e-05, +-4.322992109580240961e-05, +-4.323892520893441062e-05, +-4.324785815551123233e-05, +-4.325671992774861486e-05, +-4.326551051797845703e-05, +-4.327422991865049009e-05, +-4.328287812233000772e-05, +-4.329145512169887565e-05, +-4.329996090955573495e-05, +-4.330839547881571745e-05, +-4.331675882251045251e-05, +-4.332505093378890047e-05, +-4.333327180591561118e-05, +-4.334142143227225546e-05, +-4.334949980635687287e-05, +-4.335750692178411570e-05, +-4.336544277228457811e-05, +-4.337330735170724237e-05, +-4.338110065401586709e-05, +-4.338882267329160288e-05, +-4.339647340373169805e-05, +-4.340405283965019663e-05, +-4.341156097547820935e-05, +-4.341899780576280237e-05, +-4.342636332516768845e-05, +-4.343365752847329472e-05, +-4.344088041057622056e-05, +-4.344803196649003044e-05, +-4.345511219134515907e-05, +-4.346212108038793556e-05, +-4.346905862898137630e-05, +-4.347592483260519848e-05, +-4.348271968685518316e-05, +-4.348944318744482184e-05, +-4.349609533020331074e-05, +-4.350267611107538814e-05, +-4.350918552612456668e-05, +-4.351562357152897949e-05, +-4.352199024358386709e-05, +-4.352828553870172646e-05, +-4.353450945341082705e-05, +-4.354066198435498715e-05, +-4.354674312829660967e-05, +-4.355275288211319236e-05, +-4.355869124279864238e-05, +-4.356455820746470614e-05, +-4.357035377333731008e-05, +-4.357607793776114820e-05, +-4.358173069819598904e-05, +-4.358731205221809862e-05, +-4.359282199752125019e-05, +-4.359826053191485391e-05, +-4.360362765332388235e-05, +-4.360892335979151999e-05, +-4.361414764947615458e-05, +-4.361930052065261717e-05, +-4.362438197171336797e-05, +-4.362939200116510146e-05, +-4.363433060763301539e-05, +-4.363919778985734816e-05, +-4.364399354669517449e-05, +-4.364871787711949066e-05, +-4.365337078022095597e-05, +-4.365795225520416583e-05, +-4.366246230139266617e-05, +-4.366690091822456244e-05, +-4.367126810525470834e-05, +-4.367556386215503105e-05, +-4.367978818871227480e-05, +-4.368394108483034539e-05, +-4.368802255052943608e-05, +-4.369203258594606825e-05, +-4.369597119133239346e-05, +-4.369983836705748767e-05, +-4.370363411360570464e-05, +-4.370735843157891212e-05, +-4.371101132169428951e-05, +-4.371459278478514782e-05, +-4.371810282180124137e-05, +-4.372154143380859841e-05, +-4.372490862198883668e-05, +-4.372820438764049155e-05, +-4.373142873217761338e-05, +-4.373458165713047901e-05, +-4.373766316414553752e-05, +-4.374067325498517988e-05, +-4.374361193152800995e-05, +-4.374647919576879712e-05, +-4.374927504981790025e-05, +-4.375199949590214863e-05, +-4.375465253636404915e-05, +-4.375723417366205055e-05, +-4.375974441037100426e-05, +-4.376218324918153415e-05, +-4.376455069290001622e-05, +-4.376684674444864637e-05, +-4.376907140686605706e-05, +-4.377122468330618563e-05, +-4.377330657703945338e-05, +-4.377531709145166786e-05, +-4.377725623004447003e-05, +-4.377912399643561216e-05, +-4.378092039435863253e-05, +-4.378264542766258435e-05, +-4.378429910031261861e-05, +-4.378588141638953675e-05, +-4.378739238008972972e-05, +-4.378883199572527964e-05, +-4.379020026772446119e-05, +-4.379149720063075233e-05, +-4.379272279910349834e-05, +-4.379387706791760014e-05, +-4.379496001196358878e-05, +-4.379597163624786266e-05, +-4.379691194589177273e-05, +-4.379778094613318099e-05, +-4.379857864232478679e-05, +-4.379930503993505517e-05, +-4.379996014454794580e-05, +-4.380054396186286556e-05, +-4.380105649769490568e-05, +-4.380149775797446233e-05, +-4.380186774874714168e-05, +-4.380216647617434948e-05, +-4.380239394653266086e-05, +-4.380255016621415913e-05, +-4.380263514172617829e-05, +-4.380264887969150634e-05, +-4.380259138684791767e-05, +-4.380246267004879652e-05, +-4.380226273626277781e-05, +-4.380199159257336768e-05, +-4.380164924618000738e-05, +-4.380123570439649436e-05, +-4.380075097465237145e-05, +-4.380019506449213401e-05, +-4.379956798157537900e-05, +-4.379886973367692698e-05, +-4.379810032868667301e-05, +-4.379725977460932238e-05, +-4.379634807956491241e-05, +-4.379536525178838550e-05, +-4.379431129962947395e-05, +-4.379318623155323530e-05, +-4.379199005613930017e-05, +-4.379072278208253629e-05, +-4.378938441819249289e-05, +-4.378797497339369883e-05, +-4.378649445672512053e-05, +-4.378494287734124613e-05, +-4.378332024451070316e-05, +-4.378162656761719367e-05, +-4.377986185615916217e-05, +-4.377802611974958557e-05, +-4.377611936811621714e-05, +-4.377414161110138323e-05, +-4.377209285866219329e-05, +-4.376997312087032308e-05, +-4.376778240791183845e-05, +-4.376552073008745965e-05, +-4.376318809781239188e-05, +-4.376078452161664381e-05, +-4.375831001214409923e-05, +-4.375576458015338437e-05, +-4.375314823651770533e-05, +-4.375046099222416364e-05, +-4.374770285837472527e-05, +-4.374487384618544814e-05, +-4.374197396698655666e-05, +-4.373900323222263146e-05, +-4.373596165345258231e-05, +-4.373284924234934992e-05, +-4.372966601070020411e-05, +-4.372641197040643215e-05, +-4.372308713348333192e-05, +-4.371969151206061172e-05, +-4.371622511838173301e-05, +-4.371268796480432374e-05, +-4.370908006379999538e-05, +-4.370540142795399056e-05, +-4.370165206996594879e-05, +-4.369783200264911366e-05, +-4.369394123893080714e-05, +-4.368997979185191459e-05, +-4.368594767456735915e-05, +-4.368184490034558666e-05, +-4.367767148256901974e-05, +-4.367342743473346143e-05, +-4.366911277044873899e-05, +-4.366472750343824982e-05, +-4.366027164753877857e-05, +-4.365574521670064617e-05, +-4.365114822498803511e-05, +-4.364648068657849477e-05, +-4.364174261576287366e-05, +-4.363693402694563111e-05, +-4.363205493464439007e-05, +-4.362710535349035044e-05, +-4.362208529822844493e-05, +-4.361699478371590925e-05, +-4.361183382492396943e-05, +-4.360660243693710320e-05, +-4.360130063495232846e-05, +-4.359592843428029428e-05, +-4.359048585034518603e-05, +-4.358497289868324814e-05, +-4.357938959494503384e-05, +-4.357373595489261333e-05, +-4.356801199440190481e-05, +-4.356221772946239666e-05, +-4.355635317617508745e-05, +-4.355041835075449850e-05, +-4.354441326952860611e-05, +-4.353833794893676123e-05, +-4.353219240553219673e-05, +-4.352597665598060433e-05, +-4.351969071706007362e-05, +-4.351333460566168842e-05, +-4.350690833878890330e-05, +-4.350041193355749618e-05, +-4.349384540719669997e-05, +-4.348720877704702738e-05, +-4.348050206056220215e-05, +-4.347372527530833912e-05, +-4.346687843896338184e-05, +-4.345996156931770558e-05, +-4.345297468427521516e-05, +-4.344591780185009231e-05, +-4.343879094017012959e-05, +-4.343159411747502278e-05, +-4.342432735211570002e-05, +-4.341699066255680871e-05, +-4.340958406737351034e-05, +-4.340210758525360143e-05, +-4.339456123499749326e-05, +-4.338694503551605017e-05, +-4.337925900583289356e-05, +-4.337150316508425274e-05, +-4.336367753251637648e-05, +-4.335578212748860934e-05, +-4.334781696947185355e-05, +-4.333978207804749830e-05, +-4.333167747291057748e-05, +-4.332350317386642904e-05, +-4.331525920083167746e-05, +-4.330694557383515540e-05, +-4.329856231301693466e-05, +-4.329010943862842781e-05, +-4.328158697103269992e-05, +-4.327299493070346569e-05, +-4.326433333822633624e-05, +-4.325560221429839900e-05, +-4.324680157972655075e-05, +-4.323793145543063505e-05, +-4.322899186244088756e-05, +-4.321998282189779374e-05, +-4.321090435505398622e-05, +-4.320175648327249652e-05, +-4.319253922802755464e-05, +-4.318325261090418926e-05, +-4.317389665359783473e-05, +-4.316447137791536105e-05, +-4.315497680577382706e-05, +-4.314541295920165946e-05, +-4.313577986033739249e-05, +-4.312607753143056234e-05, +-4.311630599484030449e-05, +-4.310646527303744081e-05, +-4.309655538860263638e-05, +-4.308657636422725336e-05, +-4.307652822271274104e-05, +-4.306641098697140842e-05, +-4.305622468002475719e-05, +-4.304596932500561629e-05, +-4.303564494515642748e-05, +-4.302525156382992977e-05, +-4.301478920448936272e-05, +-4.300425789070661648e-05, +-4.299365764616498297e-05, +-4.298298849465732630e-05, +-4.297225046008609631e-05, +-4.296144356646368096e-05, +-4.295056783791281285e-05, +-4.293962329866469904e-05, +-4.292860997306121652e-05, +-4.291752788555373312e-05, +-4.290637706070322954e-05, +-4.289515752317999439e-05, +-4.288386929776443054e-05, +-4.287251240934487320e-05, +-4.286108688292055113e-05, +-4.284959274359942502e-05, +-4.283803001659886511e-05, +-4.282639872724582737e-05, +-4.281469890097521364e-05, +-4.280293056333175548e-05, +-4.279109373997080012e-05, +-4.277918845665379757e-05, +-4.276721473925336920e-05, +-4.275517261375050239e-05, +-4.274306210623402197e-05, +-4.273088324290305682e-05, +-4.271863605006468166e-05, +-4.270632055413498777e-05, +-4.269393678163840530e-05, +-4.268148475920882819e-05, +-4.266896451358646994e-05, +-4.265637607162335918e-05, +-4.264371946027687511e-05, +-4.263099470661457221e-05, +-4.261820183781214733e-05, +-4.260534088115249104e-05, +-4.259241186402736815e-05, +-4.257941481393837991e-05, +-4.256634975849208513e-05, +-4.255321672540510268e-05, +-4.254001574250237678e-05, +-4.252674683771437165e-05, +-4.251341003908318364e-05, +-4.250000537475508741e-05, +-4.248653287298618050e-05, +-4.247299256214056732e-05, +-4.245938447068741149e-05, +-4.244570862720698699e-05, +-4.243196506038562991e-05, +-4.241815379901577227e-05, +-4.240427487199899817e-05, +-4.239032830834449877e-05, +-4.237631413716619913e-05, +-4.236223238768889080e-05, +-4.234808308924285818e-05, +-4.233386627126440709e-05, +-4.231958196329854141e-05, +-4.230523019499669298e-05, +-4.229081099611752806e-05, +-4.227632439652689303e-05, +-4.226177042619588998e-05, +-4.224714911520428519e-05, +-4.223246049373838133e-05, +-4.221770459208882875e-05, +-4.220288144065641243e-05, +-4.218799106994696298e-05, +-4.217303351057132276e-05, +-4.215800879324871369e-05, +-4.214291694880390479e-05, +-4.212775800816844542e-05, +-4.211253200238035361e-05, +-4.209723896258206282e-05, +-4.208187892002420989e-05, +-4.206645190606255185e-05, +-4.205095795215915851e-05, +-4.203539708988176876e-05, +-4.201976935090510510e-05, +-4.200407476700725520e-05, +-4.198831337007442199e-05, +-4.197248519209750167e-05, +-4.195659026517359482e-05, +-4.194062862150448853e-05, +-4.192460029339910939e-05, +-4.190850531326930186e-05, +-4.189234371363444295e-05, +-4.187611552711841998e-05, +-4.185982078645065379e-05, +-4.184345952446638336e-05, +-4.182703177410372489e-05, +-4.181053756840812384e-05, +-4.179397694052919038e-05, +-4.177734992372182426e-05, +-4.176065655134540168e-05, +-4.174389685686513051e-05, +-4.172707087384864183e-05, +-4.171017863597047587e-05, +-4.169322017700908005e-05, +-4.167619553084744600e-05, +-4.165910473147317052e-05, +-4.164194781297878765e-05, +-4.162472480955932918e-05, +-4.160743575551606514e-05, +-4.159008068525385434e-05, +-4.157265963328150344e-05, +-4.155517263421302739e-05, +-4.153761972276410542e-05, +-4.152000093375600448e-05, +-4.150231630211572158e-05, +-4.148456586286993934e-05, +-4.146674965115222238e-05, +-4.144886770219945301e-05, +-4.143092005135017106e-05, +-4.141290673404859896e-05, +-4.139482778584186346e-05, +-4.137668324238056488e-05, +-4.135847313941901424e-05, +-4.134019751281299034e-05, +-4.132185639852287715e-05, +-4.130344983261447021e-05, +-4.128497785125187508e-05, +-4.126644049070588959e-05, +-4.124783778734966705e-05, +-4.122916977765717122e-05, +-4.121043649820674742e-05, +-4.119163798568156981e-05, +-4.117277427686325127e-05, +-4.115384540863877564e-05, +-4.113485141799780743e-05, +-4.111579234202947318e-05, +-4.109666821793049970e-05, +-4.107747908299462281e-05, +-4.105822497462094920e-05, +-4.103890593031077165e-05, +-4.101952198766445188e-05, +-4.100007318438880674e-05, +-4.098055955829069103e-05, +-4.096098114727702465e-05, +-4.094133798935883125e-05, +-4.092163012264930018e-05, +-4.090185758535951071e-05, +-4.088202041580848799e-05, +-4.086211865241054497e-05, +-4.084215233368493185e-05, +-4.082212149825172282e-05, +-4.080202618483180256e-05, +-4.078186643224801820e-05, +-4.076164227942449488e-05, +-4.074135376538437253e-05, +-4.072100092925425106e-05, +-4.070058381026161537e-05, +-4.068010244773176577e-05, +-4.065955688109550219e-05, +-4.063894714988196846e-05, +-4.061827329371942485e-05, +-4.059753535233916470e-05, +-4.057673336557201789e-05, +-4.055586737334933338e-05, +-4.053493741570399569e-05, +-4.051394353276605416e-05, +-4.049288576476887583e-05, +-4.047176415204560822e-05, +-4.045057873502625200e-05, +-4.042932955424586021e-05, +-4.040801665033675921e-05, +-4.038664006402946339e-05, +-4.036519983615705943e-05, +-4.034369600765107960e-05, +-4.032212861954295860e-05, +-4.030049771296351858e-05, +-4.027880332914399240e-05, +-4.025704550941227629e-05, +-4.023522429519832378e-05, +-4.021333972803045267e-05, +-4.019139184953598873e-05, +-4.016938070144241091e-05, +-4.014730632557335333e-05, +-4.012516876385424316e-05, +-4.010296805830818739e-05, +-4.008070425105736200e-05, +-4.005837738432230721e-05, +-4.003598750042354021e-05, +-4.001353464177692703e-05, +-3.999101885089991664e-05, +-3.996844017040687892e-05, +-3.994579864301101555e-05, +-3.992309431152460397e-05, +-3.990032721885485029e-05, +-3.987749740801033350e-05, +-3.985460492209635702e-05, +-3.983164980431645974e-05, +-3.980863209797145380e-05, +-3.978555184646132876e-05, +-3.976240909328067081e-05, +-3.973920388202368398e-05, +-3.971593625638472549e-05, +-3.969260626015013355e-05, +-3.966921393720710429e-05, +-3.964575933154039169e-05, +-3.962224248722875686e-05, +-3.959866344845122248e-05, +-3.957502225948265472e-05, +-3.955131896469479320e-05, +-3.952755360855766048e-05, +-3.950372623563465601e-05, +-3.947983689058803819e-05, +-3.945588561817938507e-05, +-3.943187246326131383e-05, +-3.940779747078655416e-05, +-3.938366068580407902e-05, +-3.935946215345552000e-05, +-3.933520191898541980e-05, +-3.931088002772755097e-05, +-3.928649652511565627e-05, +-3.926205145667856976e-05, +-3.923754486804169404e-05, +-3.921297680492255501e-05, +-3.918834731314108826e-05, +-3.916365643860622201e-05, +-3.913890422732589928e-05, +-3.911409072540398787e-05, +-3.908921597903540821e-05, +-3.906428003451645366e-05, +-3.903928293823587969e-05, +-3.901422473667490388e-05, +-3.898910547641350107e-05, +-3.896392520412608691e-05, +-3.893868396657808225e-05, +-3.891338181063682972e-05, +-3.888801878325706543e-05, +-3.886259493149237762e-05, +-3.883711030248974499e-05, +-3.881156494349060059e-05, +-3.878595890183078436e-05, +-3.876029222494127498e-05, +-3.873456496034422577e-05, +-3.870877715565894812e-05, +-3.868292885859888925e-05, +-3.865702011696686854e-05, +-3.863105097866621768e-05, +-3.860502149169071115e-05, +-3.857893170412559622e-05, +-3.855278166415287842e-05, +-3.852657142004703217e-05, +-3.850030102017590881e-05, +-3.847397051300167171e-05, +-3.844757994707643915e-05, +-3.842112937104891825e-05, +-3.839461883366071196e-05, +-3.836804838374177889e-05, +-3.834141807022195981e-05, +-3.831472794212017623e-05, +-3.828797804854606351e-05, +-3.826116843870512759e-05, +-3.823429916189410323e-05, +-3.820737026750235674e-05, +-3.818038180501156744e-05, +-3.815333382399667639e-05, +-3.812622637412139368e-05, +-3.809905950514485277e-05, +-3.807183326691719231e-05, +-3.804454770937999665e-05, +-3.801720288256866750e-05, +-3.798979883660579676e-05, +-3.796233562170983335e-05, +-3.793481328818918785e-05, +-3.790723188644372333e-05, +-3.787959146696476883e-05, +-3.785189208033606131e-05, +-3.782413377722900226e-05, +-3.779631660840931197e-05, +-3.776844062473293668e-05, +-3.774050587714629254e-05, +-3.771251241668798675e-05, +-3.768446029448384380e-05, +-3.765634956175355978e-05, +-3.762818026980640617e-05, +-3.759995247004198208e-05, +-3.757166621395033616e-05, +-3.754332155311282046e-05, +-3.751491853919734022e-05, +-3.748645722396429670e-05, +-3.745793765926751549e-05, +-3.742935989704364167e-05, +-3.740072398932399152e-05, +-3.737202998822931443e-05, +-3.734327794596657419e-05, +-3.731446791483546100e-05, +-3.728559994722434600e-05, +-3.725667409561056589e-05, +-3.722769041256189342e-05, +-3.719864895073178037e-05, +-3.716954976286503614e-05, +-3.714039290179898644e-05, +-3.711117842045252965e-05, +-3.708190637183814435e-05, +-3.705257680905711204e-05, +-3.702318978529393353e-05, +-3.699374535383077590e-05, +-3.696424356802913597e-05, +-3.693468448134379258e-05, +-3.690506814731643696e-05, +-3.687539461957815953e-05, +-3.684566395184314810e-05, +-3.681587619792173205e-05, +-3.678603141170380767e-05, +-3.675612964717171982e-05, +-3.672617095839548465e-05, +-3.669615539952751767e-05, +-3.666608302481534604e-05, +-3.663595388858960778e-05, +-3.660576804526626763e-05, +-3.657552554935158403e-05, +-3.654522645543905983e-05, +-3.651487081820432618e-05, +-3.648445869241816652e-05, +-3.645399013292970470e-05, +-3.642346519467932049e-05, +-3.639288393269442121e-05, +-3.636224640208326857e-05, +-3.633155265804826012e-05, +-3.630080275587447739e-05, +-3.626999675093022120e-05, +-3.623913469867388957e-05, +-3.620821665464952571e-05, +-3.617724267448216952e-05, +-3.614621281389033267e-05, +-3.611512712867402495e-05, +-3.608398567471641447e-05, +-3.605278850799005502e-05, +-3.602153568455130245e-05, +-3.599022726054211036e-05, +-3.595886329219057223e-05, +-3.592744383580589340e-05, +-3.589596894778646839e-05, +-3.586443868461380939e-05, +-3.583285310285455198e-05, +-3.580121225915978435e-05, +-3.576951621026649059e-05, +-3.573776501299215678e-05, +-3.570595872424244178e-05, +-3.567409740100612207e-05, +-3.564218110035600659e-05, +-3.561020987945031908e-05, +-3.557818379552730417e-05, +-3.554610290591283714e-05, +-3.551396726801528750e-05, +-3.548177693932672515e-05, +-3.544953197742276458e-05, +-3.541723243996370998e-05, +-3.538487838468914109e-05, +-3.535246986942602431e-05, +-3.532000695208308168e-05, +-3.528748969065192926e-05, +-3.525491814320734144e-05, +-3.522229236790798949e-05, +-3.518961242299137977e-05, +-3.515687836678144308e-05, +-3.512409025768398104e-05, +-3.509124815418621210e-05, +-3.505835211485984113e-05, +-3.502540219835420868e-05, +-3.499239846340493744e-05, +-3.495934096882845707e-05, +-3.492622977352285117e-05, +-3.489306493646818940e-05, +-3.485984651672754383e-05, +-3.482657457344144603e-05, +-3.479324916583589655e-05, +-3.475987035321711339e-05, +-3.472643819497247381e-05, +-3.469295275057037212e-05, +-3.465941407956200855e-05, +-3.462582224157502637e-05, +-3.459217729632215837e-05, +-3.455847930359579913e-05, +-3.452472832326850639e-05, +-3.449092441529515597e-05, +-3.445706763970661268e-05, +-3.442315805661691323e-05, +-3.438919572622469595e-05, +-3.435518070880017684e-05, +-3.432111306469907481e-05, +-3.428699285435726519e-05, +-3.425282013828434227e-05, +-3.421859497708009919e-05, +-3.418431743141352831e-05, +-3.414998756203884702e-05, +-3.411560542978990063e-05, +-3.408117109557524271e-05, +-3.404668462038548741e-05, +-3.401214606529472567e-05, +-3.397755549144718275e-05, +-3.394291296007200404e-05, +-3.390821853247658724e-05, +-3.387347227004156112e-05, +-3.383867423423471752e-05, +-3.380382448659777732e-05, +-3.376892308874773893e-05, +-3.373397010238445411e-05, +-3.369896558928575588e-05, +-3.366390961130142083e-05, +-3.362880223036955417e-05, +-3.359364350849580012e-05, +-3.355843350776908316e-05, +-3.352317229035599734e-05, +-3.348785991849468724e-05, +-3.345249645450962028e-05, +-3.341708196079777669e-05, +-3.338161649983038419e-05, +-3.334610013416012121e-05, +-3.331053292641678683e-05, +-3.327491493930054484e-05, +-3.323924623559902707e-05, +-3.320352687816584579e-05, +-3.316775692993701943e-05, +-3.313193645392341704e-05, +-3.309606551321227615e-05, +-3.306014417096684362e-05, +-3.302417249042788002e-05, +-3.298815053490752706e-05, +-3.295207836779814387e-05, +-3.291595605256656748e-05, +-3.287978365275486502e-05, +-3.284356123198074024e-05, +-3.280728885393877363e-05, +-3.277096658239413401e-05, +-3.273459448119170616e-05, +-3.269817261424997864e-05, +-3.266170104556214831e-05, +-3.262517983919787539e-05, +-3.258860905929684602e-05, +-3.255198877007800149e-05, +-3.251531903583316184e-05, +-3.247859992092838106e-05, +-3.244183148980408940e-05, +-3.240501380697640121e-05, +-3.236814693703067748e-05, +-3.233123094463092451e-05, +-3.229426589451318027e-05, +-3.225725185148756765e-05, +-3.222018888043739316e-05, +-3.218307704632118662e-05, +-3.214591641416595876e-05, +-3.210870704907675579e-05, +-3.207144901623009314e-05, +-3.203414238087550051e-05, +-3.199678720833716165e-05, +-3.195938356400702978e-05, +-3.192193151335447011e-05, +-3.188443112192003930e-05, +-3.184688245531636634e-05, +-3.180928557922883018e-05, +-3.177164055941623737e-05, +-3.173394746170491316e-05, +-3.169620635199786975e-05, +-3.165841729626831468e-05, +-3.162058036056136518e-05, +-3.158269561099361452e-05, +-3.154476311375494125e-05, +-3.150678293509992370e-05, +-3.146875514136596646e-05, +-3.143067979895028819e-05, +-3.139255697432758059e-05, +-3.135438673404353026e-05, +-3.131616914470973653e-05, +-3.127790427301172096e-05, +-3.123959218571060792e-05, +-3.120123294962813543e-05, +-3.116282663166299955e-05, +-3.112437329878416618e-05, +-3.108587301802394576e-05, +-3.104732585649651273e-05, +-3.100873188137420901e-05, +-3.097009115990582631e-05, +-3.093140375940982311e-05, +-3.089266974726912726e-05, +-3.085388919093959276e-05, +-3.081506215795133468e-05, +-3.077618871589372652e-05, +-3.073726893243175810e-05, +-3.069830287529953035e-05, +-3.065929061229318768e-05, +-3.062023221128773665e-05, +-3.058112774022188069e-05, +-3.054197726709928051e-05, +-3.050278085999708538e-05, +-3.046353858706082047e-05, +-3.042425051649721754e-05, +-3.038491671659304281e-05, +-3.034553725569113608e-05, +-3.030611220220874052e-05, +-3.026664162463088225e-05, +-3.022712559150356025e-05, +-3.018756417145006013e-05, +-3.014795743315607692e-05, +-3.010830544537106349e-05, +-3.006860827691679240e-05, +-3.002886599668187727e-05, +-2.998907867361505072e-05, +-2.994924637674356194e-05, +-2.990936917514962920e-05, +-2.986944713798839009e-05, +-2.982948033448001065e-05, +-2.978946883391086779e-05, +-2.974941270563312914e-05, +-2.970931201906720271e-05, +-2.966916684369396451e-05, +-2.962897724906529560e-05, +-2.958874330479683830e-05, +-2.954846508057009684e-05, +-2.950814264613184102e-05, +-2.946777607129581045e-05, +-2.942736542593575873e-05, +-2.938691077999583466e-05, +-2.934641220348328762e-05, +-2.930586976647019549e-05, +-2.926528353909514519e-05, +-2.922465359155589735e-05, +-2.918397999412015043e-05, +-2.914326281711802921e-05, +-2.910250213094404991e-05, +-2.906169800605655777e-05, +-2.902085051297995983e-05, +-2.897995972229694915e-05, +-2.893902570465945866e-05, +-2.889804853078115304e-05, +-2.885702827143917025e-05, +-2.881596499747418925e-05, +-2.877485877979177851e-05, +-2.873370968935539614e-05, +-2.869251779719658810e-05, +-2.865128317440838483e-05, +-2.861000589214643280e-05, +-2.856868602163072251e-05, +-2.852732363413837172e-05, +-2.848591880101457934e-05, +-2.844447159366464634e-05, +-2.840298208355629663e-05, +-2.836145034221904687e-05, +-2.831987644124651379e-05, +-2.827826045228829281e-05, +-2.823660244706122362e-05, +-2.819490249734191934e-05, +-2.815316067496838941e-05, +-2.811137705184171674e-05, +-2.806955169991879354e-05, +-2.802768469122105254e-05, +-2.798577609783653376e-05, +-2.794382599190290998e-05, +-2.790183444562602992e-05, +-2.785980153127217985e-05, +-2.781772732116275735e-05, +-2.777561188768293483e-05, +-2.773345530328364493e-05, +-2.769125764046493466e-05, +-2.764901897179402414e-05, +-2.760673936989805258e-05, +-2.756441890745657360e-05, +-2.752205765722141306e-05, +-2.747965569199104801e-05, +-2.743721308463064069e-05, +-2.739472990806445933e-05, +-2.735220623527049436e-05, +-2.730964213928920657e-05, +-2.726703769322553632e-05, +-2.722439297023196281e-05, +-2.718170804352696947e-05, +-2.713898298638745788e-05, +-2.709621787214136843e-05, +-2.705341277418767031e-05, +-2.701056776597043555e-05, +-2.696768292099914401e-05, +-2.692475831283928141e-05, +-2.688179401511591376e-05, +-2.683879010150412944e-05, +-2.679574664574955773e-05, +-2.675266372164216162e-05, +-2.670954140303643447e-05, +-2.666637976384408500e-05, +-2.662317887802617686e-05, +-2.657993881961181754e-05, +-2.653665966268141426e-05, +-2.649334148136780554e-05, +-2.644998434986627658e-05, +-2.640658834242631253e-05, +-2.636315353335371266e-05, +-2.631967999701206084e-05, +-2.627616780781547493e-05, +-2.623261704023939795e-05, +-2.618902776881296468e-05, +-2.614540006812107853e-05, +-2.610173401280397110e-05, +-2.605802967755900128e-05, +-2.601428713713317765e-05, +-2.597050646633410214e-05, +-2.592668774002258050e-05, +-2.588283103311399792e-05, +-2.583893642057848839e-05, +-2.579500397744280497e-05, +-2.575103377878205615e-05, +-2.570702589973165576e-05, +-2.566298041547913051e-05, +-2.561889740126616977e-05, +-2.557477693239010281e-05, +-2.553061908419628227e-05, +-2.548642393208965467e-05, +-2.544219155152664238e-05, +-2.539792201801704442e-05, +-2.535361540712404322e-05, +-2.530927179446566488e-05, +-2.526489125570743034e-05, +-2.522047386657334987e-05, +-2.517601970283827602e-05, +-2.513152884032974682e-05, +-2.508700135492959848e-05, +-2.504243732256632518e-05, +-2.499783681922667324e-05, +-2.495319992094710982e-05, +-2.490852670381639791e-05, +-2.486381724397509146e-05, +-2.481907161761740227e-05, +-2.477428990098330563e-05, +-2.472947217036998885e-05, +-2.468461850212418047e-05, +-2.463972897264372580e-05, +-2.459480365837755637e-05, +-2.454984263582756364e-05, +-2.450484598154043013e-05, +-2.445981377211959976e-05, +-2.441474608421693624e-05, +-2.436964299453489824e-05, +-2.432450457982814198e-05, +-2.427933091689551850e-05, +-2.423412208258996018e-05, +-2.418887815382018161e-05, +-2.414359920753284105e-05, +-2.409828532073214421e-05, +-2.405293657047178043e-05, +-2.400755303384901723e-05, +-2.396213478801618942e-05, +-2.391668191017284542e-05, +-2.387119447756757011e-05, +-2.382567256749762563e-05, +-2.378011625731123841e-05, +-2.373452562439714000e-05, +-2.368890074620654925e-05, +-2.364324170022500003e-05, +-2.359754856399445214e-05, +-2.355182141510457367e-05, +-2.350606033118721495e-05, +-2.346026538992616975e-05, +-2.341443666905858138e-05, +-2.336857424635747007e-05, +-2.332267819965106904e-05, +-2.327674860681518089e-05, +-2.323078554576440570e-05, +-2.318478909447470264e-05, +-2.313875933095475005e-05, +-2.309269633326805303e-05, +-2.304660017952270111e-05, +-2.300047094787552546e-05, +-2.295430871652141954e-05, +-2.290811356371563301e-05, +-2.286188556774572470e-05, +-2.281562480695291473e-05, +-2.276933135972442047e-05, +-2.272300530448531148e-05, +-2.267664671971802182e-05, +-2.263025568394459955e-05, +-2.258383227572831277e-05, +-2.253737657368370893e-05, +-2.249088865646824281e-05, +-2.244436860278445502e-05, +-2.239781649138171697e-05, +-2.235123240104777063e-05, +-2.230461641062120708e-05, +-2.225796859898491380e-05, +-2.221128904505789239e-05, +-2.216457782781545182e-05, +-2.211783502627089556e-05, +-2.207106071947716143e-05, +-2.202425498653726385e-05, +-2.197741790659551520e-05, +-2.193054955883993134e-05, +-2.188365002250170987e-05, +-2.183671937685730370e-05, +-2.178975770122010313e-05, +-2.174276507495268734e-05, +-2.169574157745818809e-05, +-2.164868728818252584e-05, +-2.160160228661624614e-05, +-2.155448665228603235e-05, +-2.150734046476707572e-05, +-2.146016380367450339e-05, +-2.141295674866558750e-05, +-2.136571937943949442e-05, +-2.131845177573895512e-05, +-2.127115401734244537e-05, +-2.122382618407576973e-05, +-2.117646835580419098e-05, +-2.112908061243410379e-05, +-2.108166303391510830e-05, +-2.103421570023138390e-05, +-2.098673869141418473e-05, +-2.093923208753333199e-05, +-2.089169596869930786e-05, +-2.084413041506285571e-05, +-2.079653550681697906e-05, +-2.074891132418873893e-05, +-2.070125794744920140e-05, +-2.065357545691559246e-05, +-2.060586393293232786e-05, +-2.055812345589192803e-05, +-2.051035410622610732e-05, +-2.046255596439973634e-05, +-2.041472911092309005e-05, +-2.036687362634350957e-05, +-2.031898959124708271e-05, +-2.027107708626087670e-05, +-2.022313619204430191e-05, +-2.017516698929949982e-05, +-2.012716955877318954e-05, +-2.007914398123774514e-05, +-2.003109033751214783e-05, +-1.998300870845318017e-05, +-1.993489917494923266e-05, +-1.988676181793271435e-05, +-1.983859671837143014e-05, +-1.979040395727073558e-05, +-1.974218361567312016e-05, +-1.969393577466037567e-05, +-1.964566051534292026e-05, +-1.959735791888280040e-05, +-1.954902806646401767e-05, +-1.950067103931562565e-05, +-1.945228691870325277e-05, +-1.940387578592231595e-05, +-1.935543772230884224e-05, +-1.930697280924121710e-05, +-1.925848112812098052e-05, +-1.920996276039413153e-05, +-1.916141778754211917e-05, +-1.911284629107352806e-05, +-1.906424835254720912e-05, +-1.901562405354232852e-05, +-1.896697347568171527e-05, +-1.891829670062318764e-05, +-1.886959381005292932e-05, +-1.882086488569617561e-05, +-1.877211000931908028e-05, +-1.872332926270950487e-05, +-1.867452272769810301e-05, +-1.862569048614963328e-05, +-1.857683261995432281e-05, +-1.852794921104924648e-05, +-1.847904034139870617e-05, +-1.843010609299631109e-05, +-1.838114654787565720e-05, +-1.833216178810145029e-05, +-1.828315189577171500e-05, +-1.823411695301959063e-05, +-1.818505704200467773e-05, +-1.813597224492592664e-05, +-1.808686264401476973e-05, +-1.803772832152679672e-05, +-1.798856935976270695e-05, +-1.793938584104901051e-05, +-1.789017784774006459e-05, +-1.784094546222860710e-05, +-1.779168876693708649e-05, +-1.774240784431966751e-05, +-1.769310277686418956e-05, +-1.764377364708343208e-05, +-1.759442053752798265e-05, +-1.754504353077731947e-05, +-1.749564270944208477e-05, +-1.744621815616366131e-05, +-1.739676995361629671e-05, +-1.734729818449852812e-05, +-1.729780293154563358e-05, +-1.724828427752122270e-05, +-1.719874230521899848e-05, +-1.714917709746261498e-05, +-1.709958873710800840e-05, +-1.704997730703426944e-05, +-1.700034289015653512e-05, +-1.695068556941748458e-05, +-1.690100542778897555e-05, +-1.685130254827436864e-05, +-1.680157701389946740e-05, +-1.675182890772561353e-05, +-1.670205831284078281e-05, +-1.665226531236157736e-05, +-1.660244998943315447e-05, +-1.655261242723129336e-05, +-1.650275270895338616e-05, +-1.645287091783156349e-05, +-1.640296713712367530e-05, +-1.635304145011546602e-05, +-1.630309394012031030e-05, +-1.625312469048143221e-05, +-1.620313378456282848e-05, +-1.615312130576244154e-05, +-1.610308733750309961e-05, +-1.605303196323459370e-05, +-1.600295526643586290e-05, +-1.595285733060594131e-05, +-1.590273823927483056e-05, +-1.585259807600574613e-05, +-1.580243692437481229e-05, +-1.575225486799317304e-05, +-1.570205199049813552e-05, +-1.565182837554614982e-05, +-1.560158410682611758e-05, +-1.555131926805032529e-05, +-1.550103394295655176e-05, +-1.545072821530797663e-05, +-1.540040216889511159e-05, +-1.535005588752473137e-05, +-1.529968945504397011e-05, +-1.524930295530934879e-05, +-1.519889647221083432e-05, +-1.514847008966289827e-05, +-1.509802389159777790e-05, +-1.504755796197635371e-05, +-1.499707238479027723e-05, +-1.494656724404178620e-05, +-1.489604262376582060e-05, +-1.484549860802113223e-05, +-1.479493528088090122e-05, +-1.474435272645742538e-05, +-1.469375102887065463e-05, +-1.464313027227255164e-05, +-1.459249054083803368e-05, +-1.454183191875600592e-05, +-1.449115449025145034e-05, +-1.444045833956514951e-05, +-1.438974355095583799e-05, +-1.433901020871139844e-05, +-1.428825839714171266e-05, +-1.423748820056968813e-05, +-1.418669970335368404e-05, +-1.413589298986690807e-05, +-1.408506814449976437e-05, +-1.403422525167085480e-05, +-1.398336439581771411e-05, +-1.393248566139922228e-05, +-1.388158913289739855e-05, +-1.383067489480850414e-05, +-1.377974303165617302e-05, +-1.372879362798478975e-05, +-1.367782676835013658e-05, +-1.362684253734179405e-05, +-1.357584101956289017e-05, +-1.352482229963202314e-05, +-1.347378646219449812e-05, +-1.342273359191306745e-05, +-1.337166377347017867e-05, +-1.332057709157005318e-05, +-1.326947363092940608e-05, +-1.321835347629110378e-05, +-1.316721671241460438e-05, +-1.311606342407844793e-05, +-1.306489369607994302e-05, +-1.301370761323730814e-05, +-1.296250526038048466e-05, +-1.291128672236455563e-05, +-1.286005208406064518e-05, +-1.280880143035789554e-05, +-1.275753484616344837e-05, +-1.270625241640447600e-05, +-1.265495422601912657e-05, +-1.260364035996977680e-05, +-1.255231090323398389e-05, +-1.250096594080652693e-05, +-1.244960555770161764e-05, +-1.239822983894363723e-05, +-1.234683886958052627e-05, +-1.229543273467474178e-05, +-1.224401151930524438e-05, +-1.219257530856745083e-05, +-1.214112418757523984e-05, +-1.208965824145193790e-05, +-1.203817755534358219e-05, +-1.198668221440978947e-05, +-1.193517230382595845e-05, +-1.188364790878303936e-05, +-1.183210911448961765e-05, +-1.178055600616283721e-05, +-1.172898866904178682e-05, +-1.167740718837829976e-05, +-1.162581164943907133e-05, +-1.157420213750782049e-05, +-1.152257873787598947e-05, +-1.147094153585407025e-05, +-1.141929061677368999e-05, +-1.136762606596695186e-05, +-1.131594796878914067e-05, +-1.126425641060944946e-05, +-1.121255147680386621e-05, +-1.116083325276900413e-05, +-1.110910182391251158e-05, +-1.105735727565542343e-05, +-1.100559969343429219e-05, +-1.095382916269177918e-05, +-1.090204576888810471e-05, +-1.085024959750308095e-05, +-1.079844073401542911e-05, +-1.074661926392547312e-05, +-1.069478527274592391e-05, +-1.064293884599486431e-05, +-1.059108006920689259e-05, +-1.053920902793558903e-05, +-1.048732580773241294e-05, +-1.043543049416973687e-05, +-1.038352317283137679e-05, +-1.033160392930334925e-05, +-1.027967284919897407e-05, +-1.022773001812658375e-05, +-1.017577552171464305e-05, +-1.012380944560238423e-05, +-1.007183187543055910e-05, +-1.001984289686418530e-05, +-9.967842595571770238e-06, +-9.915831057227516757e-06, +-9.863808367522558209e-06, +-9.811774612158005989e-06, +-9.759729876835615238e-06, +-9.707674247282911228e-06, +-9.655607809220849642e-06, +-9.603530648388949737e-06, +-9.551442850533735734e-06, +-9.499344501410854398e-06, +-9.447235686784864975e-06, +-9.395116492431544814e-06, +-9.342987004128390743e-06, +-9.290847307668401986e-06, +-9.238697488852968474e-06, +-9.186537633482563651e-06, +-9.134367827379580478e-06, +-9.082188156367550328e-06, +-9.029998706273179254e-06, +-8.977799562937837144e-06, +-8.925590812208160737e-06, +-8.873372539938210166e-06, +-8.821144831991628899e-06, +-8.768907774232300958e-06, +-8.716661452538055916e-06, +-8.664405952793535187e-06, +-8.612141360880974609e-06, +-8.559867762702930342e-06, +-8.507585244161618038e-06, +-8.455293891160786478e-06, +-8.402993789617376136e-06, +-8.350685025452015466e-06, +-8.298367684591226578e-06, +-8.246041852967288016e-06, +-8.193707616520376063e-06, +-8.141365061189181302e-06, +-8.089014272924666132e-06, +-8.036655337680686416e-06, +-7.984288341416085347e-06, +-7.931913370096983825e-06, +-7.879530509687300463e-06, +-7.827139846162488771e-06, +-7.774741465500213013e-06, +-7.722335453682443771e-06, +-7.669921896695347825e-06, +-7.617500880531522631e-06, +-7.565072491180451106e-06, +-7.512636814642398047e-06, +-7.460193936918939458e-06, +-7.407743944015165686e-06, +-7.355286921941814242e-06, +-7.302822956705911790e-06, +-7.250352134324465580e-06, +-7.197874540815177431e-06, +-7.145390262198465595e-06, +-7.092899384497464761e-06, +-7.040401993740108056e-06, +-6.987898175949778350e-06, +-6.935388017156681362e-06, +-6.882871603400158059e-06, +-6.830349020707482581e-06, +-6.777820355117120063e-06, +-6.725285692669113665e-06, +-6.672745119398153297e-06, +-6.620198721347261135e-06, +-6.567646584558412420e-06, +-6.515088795074622549e-06, +-6.462525438942297593e-06, +-6.409956602201630636e-06, +-6.357382370898159540e-06, +-6.304802831085045465e-06, +-6.252218068801790314e-06, +-6.199628170097522523e-06, +-6.147033221021507746e-06, +-6.094433307613664628e-06, +-6.041828515930099461e-06, +-5.989218932010293822e-06, +-5.936604641902624826e-06, +-5.883985731652598150e-06, +-5.831362287307328830e-06, +-5.778734394903714144e-06, +-5.726102140494052973e-06, +-5.673465610113144494e-06, +-5.620824889803849099e-06, +-5.568180065607649054e-06, +-5.515531223555121928e-06, +-5.462878449689172155e-06, +-5.410221830043852679e-06, +-5.357561450646608737e-06, +-5.304897397529744149e-06, +-5.252229756723340120e-06, +-5.199558614245732049e-06, +-5.146884056129102628e-06, +-5.094206168386611039e-06, +-5.041525037037916593e-06, +-4.988840748097427844e-06, +-4.936153387576466759e-06, +-4.883463041483107778e-06, +-4.830769795824423304e-06, +-4.778073736596921544e-06, +-4.725374949800553894e-06, +-4.672673521431411819e-06, +-4.619969537472340886e-06, +-4.567263083916148615e-06, +-4.514554246744418492e-06, +-4.461843111929721572e-06, +-4.409129765447143753e-06, +-4.356414293264845590e-06, +-4.303696781346167172e-06, +-4.250977315651951539e-06, +-4.198255982130933391e-06, +-4.145532866733688879e-06, +-4.092808055405502741e-06, +-4.040081634076812919e-06, +-3.987353688686493805e-06, +-3.934624305160695659e-06, +-3.881893569414974904e-06, +-3.829161567365901012e-06, +-3.776428384921562962e-06, +-3.723694107983719854e-06, +-3.670958822447737810e-06, +-3.618222614204700774e-06, +-3.565485569131995745e-06, +-3.512747773107162612e-06, +-3.460009311998420935e-06, +-3.407270271666823955e-06, +-3.354530737968551929e-06, +-3.301790796745293229e-06, +-3.249050533838241137e-06, +-3.196310035078560486e-06, +-3.143569386289590798e-06, +-3.090828673286701013e-06, +-3.038087981879499400e-06, +-2.985347397862299778e-06, +-2.932607007028104760e-06, +-2.879866895159026232e-06, +-2.827127148028513897e-06, +-2.774387851403577043e-06, +-2.721649091035233825e-06, +-2.668910952672485186e-06, +-2.616173522052747625e-06, +-2.563436884904105454e-06, +-2.510701126945125726e-06, +-2.457966333887104136e-06, +-2.405232591424538022e-06, +-2.352499985246686673e-06, +-2.299768601039819350e-06, +-2.247038524465927230e-06, +-2.194309841186071452e-06, +-2.141582636850851871e-06, +-2.088856997093219143e-06, +-2.036133007542425352e-06, +-1.983410753814513952e-06, +-1.930690321514488168e-06, +-1.877971796238558813e-06, +-1.825255263564600977e-06, +-1.772540809063743132e-06, +-1.719828518302599913e-06, +-1.667118476821981729e-06, +-1.614410770160254877e-06, +-1.561705483843790822e-06, +-1.509002703377453589e-06, +-1.456302514270282229e-06, +-1.403605002002474536e-06, +-1.350910252051103383e-06, +-1.298218349878192200e-06, +-1.245529380935323676e-06, +-1.192843430651724336e-06, +-1.140160584459973898e-06, +-1.087480927762994701e-06, +-1.034804545959730361e-06, +-9.821315244356249055e-07, +-9.294619485530954531e-07, +-8.767959036748637373e-07, +-8.241334751426983315e-07, +-7.714747482796194761e-07, +-7.188198084015015237e-07, +-6.661687408098880884e-07, +-6.135216307824713953e-07, +-5.608785635987743193e-07, +-5.082396245071445819e-07, +-4.556048987504470074e-07, +-4.029744715565293201e-07, +-3.503484281287013879e-07, +-2.977268536690619804e-07, +-2.451098333572488300e-07, +-1.924974523526370262e-07, +-1.398897958059452465e-07, +-8.728694885205241420e-08, +-3.468899660047834469e-08, + 1.790397584129163686e-08, + 7.049188338906021155e-08, + 1.230746409797077938e-07, + 1.756521635595984303e-07, + 2.282243660941031074e-07, + 2.807911635653878204e-07, + 3.333524709702091836e-07, + 3.859082033294263984e-07, + 4.384582756740730672e-07, + 4.910026030548687382e-07, + 5.435411005400129137e-07, + 5.960736832153269282e-07, + 6.486002661820327105e-07, + 7.011207645662816397e-07, + 7.536350935052167237e-07, + 8.061431681564896496e-07, + 8.586449036960449461e-07, + 9.111402153159301906e-07, + 9.636290182337829909e-07, + 1.016111227678925139e-06, + 1.068586758901868015e-06, + 1.121055527172100665e-06, + 1.173517447778231153e-06, + 1.225972436025773262e-06, + 1.278420407246659306e-06, + 1.330861276785318514e-06, + 1.383294960008189419e-06, + 1.435721372301493220e-06, + 1.488140429071403823e-06, + 1.540552045741804477e-06, + 1.592956137763816256e-06, + 1.645352620601869452e-06, + 1.697741409743220414e-06, + 1.750122420695725117e-06, + 1.802495568985660600e-06, + 1.854860770167183990e-06, + 1.907217939808476738e-06, + 1.959566993501204497e-06, + 2.011907846858306998e-06, + 2.064240415514164070e-06, + 2.116564615122381286e-06, + 2.168880361365257881e-06, + 2.221187569939903885e-06, + 2.273486156567762046e-06, + 2.325776036992349634e-06, + 2.378057126979432513e-06, + 2.430329342314792357e-06, + 2.482592598813751539e-06, + 2.534846812307241131e-06, + 2.587091898651315202e-06, + 2.639327773724927356e-06, + 2.691554353427762754e-06, + 2.743771553689668552e-06, + 2.795979290459131290e-06, + 2.848177479701119073e-06, + 2.900366037418144320e-06, + 2.952544879627137646e-06, + 3.004713922368852041e-06, + 3.056873081717377172e-06, + 3.109022273754597105e-06, + 3.161161414602978098e-06, + 3.213290420400024211e-06, + 3.265409207307792024e-06, + 3.317517691519981150e-06, + 3.369615789250395107e-06, + 3.421703416730824577e-06, + 3.473780490232062303e-06, + 3.525846926040784163e-06, + 3.577902640468998250e-06, + 3.629947549863477006e-06, + 3.681981570582644236e-06, + 3.734004619017600158e-06, + 3.786016611590001281e-06, + 3.838017464740494167e-06, + 3.890007094935864393e-06, + 3.941985418678456402e-06, + 3.993952352480752351e-06, + 4.045907812898014643e-06, + 4.097851716502909667e-06, + 4.149783979894831937e-06, + 4.201704519709473022e-06, + 4.253613252595619620e-06, + 4.305510095236220117e-06, + 4.357394964346200085e-06, + 4.409267776660968894e-06, + 4.461128448943567823e-06, + 4.512976897994015375e-06, + 4.564813040623949649e-06, + 4.616636793689265371e-06, + 4.668448074064687654e-06, + 4.720246798655544067e-06, + 4.772032884395498816e-06, + 4.823806248246806861e-06, + 4.875566807198011673e-06, + 4.927314478273429467e-06, + 4.979049178519342564e-06, + 5.030770825013384514e-06, + 5.082479334862394564e-06, + 5.134174625202519301e-06, + 5.185856613197056106e-06, + 5.237525216045808633e-06, + 5.289180350971361486e-06, + 5.340821935228461112e-06, + 5.392449886101825370e-06, + 5.444064120903986988e-06, + 5.495664556984639724e-06, + 5.547251111716902877e-06, + 5.598823702506755545e-06, + 5.650382246790773348e-06, + 5.701926662036309695e-06, + 5.753456865739324840e-06, + 5.804972775433725266e-06, + 5.856474308677657845e-06, + 5.907961383062834821e-06, + 5.959433916212480609e-06, + 6.010891825781280118e-06, + 6.062335029453316232e-06, + 6.113763444951484577e-06, + 6.165176990023636912e-06, + 6.216575582452020461e-06, + 6.267959140051110361e-06, + 6.319327580665427698e-06, + 6.370680822178850946e-06, + 6.422018782500927065e-06, + 6.473341379576324388e-06, + 6.524648531382475333e-06, + 6.575940155929888950e-06, + 6.627216171259873256e-06, + 6.678476495453840738e-06, + 6.729721046619752436e-06, + 6.780949742901358225e-06, + 6.832162502476026718e-06, + 6.883359243554973119e-06, + 6.934539884380961219e-06, + 6.985704343239967892e-06, + 7.036852538436121924e-06, + 7.087984388323844685e-06, + 7.139099811282853337e-06, + 7.190198725727379939e-06, + 7.241281050113264503e-06, + 7.292346702926536991e-06, + 7.343395602681320056e-06, + 7.394427667940514442e-06, + 7.445442817293106963e-06, + 7.496440969363369285e-06, + 7.547422042820243053e-06, + 7.598385956352143197e-06, + 7.649332628699368803e-06, + 7.700261978628756502e-06, + 7.751173924943209585e-06, + 7.802068386488575914e-06, + 7.852945282142351891e-06, + 7.903804530811529299e-06, + 7.954646051453317116e-06, + 8.005469763052408845e-06, + 8.056275584630235502e-06, + 8.107063435254240627e-06, + 8.157833234015139144e-06, + 8.208584900047673054e-06, + 8.259318352528397292e-06, + 8.310033510664351512e-06, + 8.360730293700171768e-06, + 8.411408620927224926e-06, + 8.462068411658661842e-06, + 8.512709585261528386e-06, + 8.563332061131764415e-06, + 8.613935758703449987e-06, + 8.664520597458061734e-06, + 8.715086496901850309e-06, + 8.765633376586419895e-06, + 8.816161156106542865e-06, + 8.866669755089033153e-06, + 8.917159093199530988e-06, + 8.967629090151921903e-06, + 9.018079665683266253e-06, + 9.068510739585840775e-06, + 9.118922231682312056e-06, + 9.169314061837125735e-06, + 9.219686149954438049e-06, + 9.270038415978149715e-06, + 9.320370779889901853e-06, + 9.370683161718151090e-06, + 9.420975481524728848e-06, + 9.471247659414036728e-06, + 9.521499615530991614e-06, + 9.571731270061013811e-06, + 9.621942543227919624e-06, + 9.672133355303192990e-06, + 9.722303626592448185e-06, + 9.772453277444572711e-06, + 9.822582228249748614e-06, + 9.872690399437141788e-06, + 9.922777711484195617e-06, + 9.972844084903091999e-06, + 1.002288944024999417e-05, + 1.007291369812287491e-05, + 1.012291677916167242e-05, + 1.017289860404609644e-05, + 1.022285909350486778e-05, + 1.027279816830225381e-05, + 1.032271574924720797e-05, + 1.037261175719124711e-05, + 1.042248611302860565e-05, + 1.047233873769406886e-05, + 1.052216955217212081e-05, + 1.057197847748359686e-05, + 1.062176543469471638e-05, + 1.067153034491507530e-05, + 1.072127312929547769e-05, + 1.077099370903690081e-05, + 1.082069200537743207e-05, + 1.087036793960115113e-05, + 1.092002143303605966e-05, + 1.096965240705427620e-05, + 1.101926078306986438e-05, + 1.106884648254780973e-05, + 1.111840942699093138e-05, + 1.116794953794881482e-05, + 1.121746673701570791e-05, + 1.126696094582841683e-05, + 1.131643208607543708e-05, + 1.136588007948578964e-05, + 1.141530484782700666e-05, + 1.146470631292527394e-05, + 1.151408439664331152e-05, + 1.156343902088933186e-05, + 1.161277010762396354e-05, + 1.166207757884911103e-05, + 1.171136135660595065e-05, + 1.176062136299503235e-05, + 1.180985752015416027e-05, + 1.185906975026740518e-05, + 1.190825797557417621e-05, + 1.195742211834476024e-05, + 1.200656210091170953e-05, + 1.205567784564546582e-05, + 1.210476927496335075e-05, + 1.215383631133633360e-05, + 1.220287887727805552e-05, + 1.225189689534281692e-05, + 1.230089028814556914e-05, + 1.234985897833988655e-05, + 1.239880288862697387e-05, + 1.244772194176462948e-05, + 1.249661606054302366e-05, + 1.254548516781579996e-05, + 1.259432918647583140e-05, + 1.264314803946644199e-05, + 1.269194164977709532e-05, + 1.274070994045454827e-05, + 1.278945283457874449e-05, + 1.283817025529366500e-05, + 1.288686212578339786e-05, + 1.293552836928092860e-05, + 1.298416890907712055e-05, + 1.303278366849883593e-05, + 1.308137257092888179e-05, + 1.312993553980379416e-05, + 1.317847249860314345e-05, + 1.322698337085834018e-05, + 1.327546808015059699e-05, + 1.332392655010885685e-05, + 1.337235870441849885e-05, + 1.342076446680878683e-05, + 1.346914376105892910e-05, + 1.351749651100753299e-05, + 1.356582264053039907e-05, + 1.361412207356063305e-05, + 1.366239473408639101e-05, + 1.371064054614014243e-05, + 1.375885943380749960e-05, + 1.380705132122521361e-05, + 1.385521613258127085e-05, + 1.390335379211281276e-05, + 1.395146422411485681e-05, + 1.399954735292760462e-05, + 1.404760310294503933e-05, + 1.409563139861301972e-05, + 1.414363216442705600e-05, + 1.419160532494132046e-05, + 1.423955080475561168e-05, + 1.428746852852411961e-05, + 1.433535842095353161e-05, + 1.438322040680295622e-05, + 1.443105441088204780e-05, + 1.447886035805960398e-05, + 1.452663817325089397e-05, + 1.457438778142635085e-05, + 1.462210910760939981e-05, + 1.466980207687460476e-05, + 1.471746661435637422e-05, + 1.476510264523598471e-05, + 1.481271009475053562e-05, + 1.486028888819074015e-05, + 1.490783895090116752e-05, + 1.495536020827819322e-05, + 1.500285258577857767e-05, + 1.505031600890683704e-05, + 1.509775040322389143e-05, + 1.514515569434511835e-05, + 1.519253180794022911e-05, + 1.523987866973154763e-05, + 1.528719620550255697e-05, + 1.533448434108507699e-05, + 1.538174300236811414e-05, + 1.542897211529566592e-05, + 1.547617160586483204e-05, + 1.552334140013452189e-05, + 1.557048142421456170e-05, + 1.561759160426414957e-05, + 1.566467186651083237e-05, + 1.571172213722941125e-05, + 1.575874234275055426e-05, + 1.580573240946730158e-05, + 1.585269226382243792e-05, + 1.589962183231722378e-05, + 1.594652104150896273e-05, + 1.599338981801172311e-05, + 1.604022808849388839e-05, + 1.608703577968895179e-05, + 1.613381281837242612e-05, + 1.618055913139165259e-05, + 1.622727464564233121e-05, + 1.627395928807743499e-05, + 1.632061298571353553e-05, + 1.636723566562025244e-05, + 1.641382725491841014e-05, + 1.646038768079913342e-05, + 1.650691687050272240e-05, + 1.655341475132729228e-05, + 1.659988125063744020e-05, + 1.664631629584086369e-05, + 1.669271981441834910e-05, + 1.673909173390041036e-05, + 1.678543198187812087e-05, + 1.683174048599886819e-05, + 1.687801717397707405e-05, + 1.692426197357118218e-05, + 1.697047481261318926e-05, + 1.701665561898559886e-05, + 1.706280432062997645e-05, + 1.710892084555548073e-05, + 1.715500512181789111e-05, + 1.720105707753867271e-05, + 1.724707664090303154e-05, + 1.729306374014943169e-05, + 1.733901830357828923e-05, + 1.738494025954958358e-05, + 1.743082953648147855e-05, + 1.747668606285821669e-05, + 1.752250976721801687e-05, + 1.756830057815945414e-05, + 1.761405842434960820e-05, + 1.765978323450373796e-05, + 1.770547493740389259e-05, + 1.775113346189717339e-05, + 1.779675873688490193e-05, + 1.784235069133169007e-05, + 1.788790925426312928e-05, + 1.793343435476595326e-05, + 1.797892592198611008e-05, + 1.802438388513707667e-05, + 1.806980817348769540e-05, + 1.811519871637038697e-05, + 1.816055544317934109e-05, + 1.820587828336844296e-05, + 1.825116716645968940e-05, + 1.829642202203092720e-05, + 1.834164277972416757e-05, + 1.838682936924378709e-05, + 1.843198172035647345e-05, + 1.847709976288917905e-05, + 1.852218342673773700e-05, + 1.856723264185446736e-05, + 1.861224733825645771e-05, + 1.865722744602385890e-05, + 1.870217289529763202e-05, + 1.874708361628797120e-05, + 1.879195953926228937e-05, + 1.883680059455324470e-05, + 1.888160671255697539e-05, + 1.892637782373317423e-05, + 1.897111385860304894e-05, + 1.901581474775790426e-05, + 1.906048042184852362e-05, + 1.910511081158377657e-05, + 1.914970584774878596e-05, + 1.919426546118456863e-05, + 1.923878958279664808e-05, + 1.928327814356090237e-05, + 1.932773107451159721e-05, + 1.937214830674969032e-05, + 1.941652977144092050e-05, + 1.946087539981366632e-05, + 1.950518512316741984e-05, + 1.954945887286258497e-05, + 1.959369658031866480e-05, + 1.963789817703255752e-05, + 1.968206359455835973e-05, + 1.972619276451575214e-05, + 1.977028561859579321e-05, + 1.981434208854938934e-05, + 1.985836210619508426e-05, + 1.990234560341734113e-05, + 1.994629251216662057e-05, + 1.999020276445733079e-05, + 2.003407629237837485e-05, + 2.007791302807054504e-05, + 2.012171290375530848e-05, + 2.016547585171250638e-05, + 2.020920180428862793e-05, + 2.025289069390285803e-05, + 2.029654245303708917e-05, + 2.034015701423437975e-05, + 2.038373431011654191e-05, + 2.042727427336460557e-05, + 2.047077683672682117e-05, + 2.051424193302676751e-05, + 2.055766949514145758e-05, + 2.060105945602938558e-05, + 2.064441174870872085e-05, + 2.068772630626542251e-05, + 2.073100306185912117e-05, + 2.077424194871354076e-05, + 2.081744290011442835e-05, + 2.086060584942758578e-05, + 2.090373073007910669e-05, + 2.094681747556351821e-05, + 2.098986601945161771e-05, + 2.103287629537096054e-05, + 2.107584823702365789e-05, + 2.111878177818442523e-05, + 2.116167685269112941e-05, + 2.120453339445233065e-05, + 2.124735133744580195e-05, + 2.129013061571650631e-05, + 2.133287116338447421e-05, + 2.137557291463326698e-05, + 2.141823580371583489e-05, + 2.146085976496256396e-05, + 2.150344473276190601e-05, + 2.154599064157766152e-05, + 2.158849742594761762e-05, + 2.163096502047355646e-05, + 2.167339335982930543e-05, + 2.171578237875890755e-05, + 2.175813201207459541e-05, + 2.180044219466492262e-05, + 2.184271286148295284e-05, + 2.188494394755426253e-05, + 2.192713538797526042e-05, + 2.196928711791297408e-05, + 2.201139907260322033e-05, + 2.205347118735874348e-05, + 2.209550339755767884e-05, + 2.213749563865084389e-05, + 2.217944784616055585e-05, + 2.222135995568061138e-05, + 2.226323190287401988e-05, + 2.230506362348130781e-05, + 2.234685505330878563e-05, + 2.238860612823649290e-05, + 2.243031678421616545e-05, + 2.247198695726973782e-05, + 2.251361658349678696e-05, + 2.255520559906334805e-05, + 2.259675394020963600e-05, + 2.263826154324800584e-05, + 2.267972834456339655e-05, + 2.272115428061126428e-05, + 2.276253928792543608e-05, + 2.280388330310669184e-05, + 2.284518626283057400e-05, + 2.288644810384556129e-05, + 2.292766876297300778e-05, + 2.296884817710550299e-05, + 2.300998628321454946e-05, + 2.305108301833922257e-05, + 2.309213831959388544e-05, + 2.313315212416627791e-05, + 2.317412436931603600e-05, + 2.321505499238188489e-05, + 2.325594393077266714e-05, + 2.329679112196541825e-05, + 2.333759650352240216e-05, + 2.337836001307238507e-05, + 2.341908158831825196e-05, + 2.345976116704277315e-05, + 2.350039868709747097e-05, + 2.354099408641008374e-05, + 2.358154730298292937e-05, + 2.362205827489101471e-05, + 2.366252694028961150e-05, + 2.370295323740512526e-05, + 2.374333710453333015e-05, + 2.378367848005599110e-05, + 2.382397730242261875e-05, + 2.386423351015779795e-05, + 2.390444704186700181e-05, + 2.394461783622729806e-05, + 2.398474583198583116e-05, + 2.402483096797608533e-05, + 2.406487318310007313e-05, + 2.410487241633532183e-05, + 2.414482860674263895e-05, + 2.418474169344576996e-05, + 2.422461161565742590e-05, + 2.426443831265906299e-05, + 2.430422172380823490e-05, + 2.434396178854625331e-05, + 2.438365844637956333e-05, + 2.442331163689680955e-05, + 2.446292129976664051e-05, + 2.450248737472891650e-05, + 2.454200980160041180e-05, + 2.458148852028168240e-05, + 2.462092347073766897e-05, + 2.466031459302308072e-05, + 2.469966182726226654e-05, + 2.473896511365869495e-05, + 2.477822439249303645e-05, + 2.481743960412343796e-05, + 2.485661068898360851e-05, + 2.489573758759003257e-05, + 2.493482024053185310e-05, + 2.497385858847555394e-05, + 2.501285257217268477e-05, + 2.505180213244211066e-05, + 2.509070721018582110e-05, + 2.512956774638749346e-05, + 2.516838368210377527e-05, + 2.520715495847118253e-05, + 2.524588151670468340e-05, + 2.528456329809588221e-05, + 2.532320024402003286e-05, + 2.536179229592598288e-05, + 2.540033939534275655e-05, + 2.543884148387839274e-05, + 2.547729850321957907e-05, + 2.551571039513030674e-05, + 2.555407710145900598e-05, + 2.559239856412774130e-05, + 2.563067472513967551e-05, + 2.566890552657720629e-05, + 2.570709091060214234e-05, + 2.574523081945403983e-05, + 2.578332519545733102e-05, + 2.582137398101065162e-05, + 2.585937711859435234e-05, + 2.589733455076838464e-05, + 2.593524622017107762e-05, + 2.597311206952571442e-05, + 2.601093204163077775e-05, + 2.604870607936622133e-05, + 2.608643412569267372e-05, + 2.612411612365084872e-05, + 2.616175201636018676e-05, + 2.619934174702582091e-05, + 2.623688525892838876e-05, + 2.627438249543073074e-05, + 2.631183339997659589e-05, + 2.634923791609050629e-05, + 2.638659598737628663e-05, + 2.642390755752379645e-05, + 2.646117257029886397e-05, + 2.649839096955029276e-05, + 2.653556269920805924e-05, + 2.657268770328180839e-05, + 2.660976592586773837e-05, + 2.664679731114015735e-05, + 2.668378180334989106e-05, + 2.672071934683942438e-05, + 2.675760988602653322e-05, + 2.679445336541057295e-05, + 2.683124972957808235e-05, + 2.686799892319245657e-05, + 2.690470089100091314e-05, + 2.694135557783270643e-05, + 2.697796292859776902e-05, + 2.701452288829357261e-05, + 2.705103540199621731e-05, + 2.708750041485958118e-05, + 2.712391787213024833e-05, + 2.716028771913050390e-05, + 2.719660990126558466e-05, + 2.723288436402841563e-05, + 2.726911105299168522e-05, + 2.730528991380575137e-05, + 2.734142089221432861e-05, + 2.737750393403738815e-05, + 2.741353898517842204e-05, + 2.744952599163056551e-05, + 2.748546489945880931e-05, + 2.752135565482340148e-05, + 2.755719820396120253e-05, + 2.759299249319295295e-05, + 2.762873846892953105e-05, + 2.766443607765584924e-05, + 2.770008526594546362e-05, + 2.773568598045928309e-05, + 2.777123816793732606e-05, + 2.780674177520360270e-05, + 2.784219674917291497e-05, + 2.787760303683278090e-05, + 2.791296058526653490e-05, + 2.794826934163562135e-05, + 2.798352925318730265e-05, + 2.801874026725346994e-05, + 2.805390233125065665e-05, + 2.808901539267865619e-05, + 2.812407939912667476e-05, + 2.815909429826419017e-05, + 2.819406003784541740e-05, + 2.822897656571623059e-05, + 2.826384382979779152e-05, + 2.829866177810136935e-05, + 2.833343035872665333e-05, + 2.836814951985396684e-05, + 2.840281920975045075e-05, + 2.843743937676889452e-05, + 2.847200996934601841e-05, + 2.850653093600895158e-05, + 2.854100222536582327e-05, + 2.857542378611041808e-05, + 2.860979556702881329e-05, + 2.864411751698353603e-05, + 2.867838958492797971e-05, + 2.871261171990442538e-05, + 2.874678387103704185e-05, + 2.878090598753755403e-05, + 2.881497801870409097e-05, + 2.884899991392095547e-05, + 2.888297162265776347e-05, + 2.891689309447500062e-05, + 2.895076427901514197e-05, + 2.898458512600909958e-05, + 2.901835558527434550e-05, + 2.905207560671369544e-05, + 2.908574514032159373e-05, + 2.911936413617468081e-05, + 2.915293254443818656e-05, + 2.918645031536464289e-05, + 2.921991739929368377e-05, + 2.925333374665061548e-05, + 2.928669930795276937e-05, + 2.932001403380026915e-05, + 2.935327787488216006e-05, + 2.938649078197531450e-05, + 2.941965270594226021e-05, + 2.945276359773827505e-05, + 2.948582340840160884e-05, + 2.951883208905982595e-05, + 2.955178959092858554e-05, + 2.958469586531132652e-05, + 2.961755086359809858e-05, + 2.965035453727172187e-05, + 2.968310683790008914e-05, + 2.971580771713487146e-05, + 2.974845712672511821e-05, + 2.978105501850230184e-05, + 2.981360134438614209e-05, + 2.984609605638985420e-05, + 2.987853910661034365e-05, + 2.991093044723487399e-05, + 2.994327003053945074e-05, + 2.997555780888764906e-05, + 3.000779373473594670e-05, + 3.003997776062714082e-05, + 3.007210983918843375e-05, + 3.010418992314524973e-05, + 3.013621796530602224e-05, + 3.016819391856845865e-05, + 3.020011773592412774e-05, + 3.023198937044951505e-05, + 3.026380877531196223e-05, + 3.029557590376836607e-05, + 3.032729070916502596e-05, + 3.035895314493670204e-05, + 3.039056316461363199e-05, + 3.042212072180535952e-05, + 3.045362577022191013e-05, + 3.048507826365707751e-05, + 3.051647815599462042e-05, + 3.054782540121439517e-05, + 3.057911995337748518e-05, + 3.061036176663949933e-05, + 3.064155079524924724e-05, + 3.067268699354151577e-05, + 3.070377031594141259e-05, + 3.073480071697034963e-05, + 3.076577815122992233e-05, + 3.079670257342261117e-05, + 3.082757393833579642e-05, + 3.085839220084737568e-05, + 3.088915731593188963e-05, + 3.091986923864600048e-05, + 3.095052792414178700e-05, + 3.098113332766481331e-05, + 3.101168540454765751e-05, + 3.104218411021376065e-05, + 3.107262940018363373e-05, + 3.110302123006038362e-05, + 3.113335955554256089e-05, + 3.116364433242299424e-05, + 3.119387551658169580e-05, + 3.122405306399147183e-05, + 3.125417693071668948e-05, + 3.128424707291192828e-05, + 3.131426344682755706e-05, + 3.134422600880155491e-05, + 3.137413471526367189e-05, + 3.140398952274105329e-05, + 3.143379038784444994e-05, + 3.146353726728052391e-05, + 3.149323011785104889e-05, + 3.152286889644544278e-05, + 3.155245356004698150e-05, + 3.158198406573094907e-05, + 3.161146037066345856e-05, + 3.164088243210732708e-05, + 3.167025020741340221e-05, + 3.169956365402635563e-05, + 3.172882272948366001e-05, + 3.175802739141496547e-05, + 3.178717759754168633e-05, + 3.181627330568154117e-05, + 3.184531447374115313e-05, + 3.187430105972135575e-05, + 3.190323302171564797e-05, + 3.193211031791072947e-05, + 3.196093290658467783e-05, + 3.198970074611297943e-05, + 3.201841379495993037e-05, + 3.204707201168440303e-05, + 3.207567535493853153e-05, + 3.210422378346641743e-05, + 3.213271725610951688e-05, + 3.216115573179853618e-05, + 3.218953916955921875e-05, + 3.221786752851066456e-05, + 3.224614076786567579e-05, + 3.227435884692904237e-05, + 3.230252172510362710e-05, + 3.233062936188188855e-05, + 3.235868171685131559e-05, + 3.238667874969339066e-05, + 3.241462042018356942e-05, + 3.244250668818983739e-05, + 3.247033751367814456e-05, + 3.249811285670475494e-05, + 3.252583267742112551e-05, + 3.255349693607312691e-05, + 3.258110559299941716e-05, + 3.260865860863717441e-05, + 3.263615594351496144e-05, + 3.266359755825210237e-05, + 3.269098341357018863e-05, + 3.271831347027983825e-05, + 3.274558768928672665e-05, + 3.277280603159607258e-05, + 3.279996845829865189e-05, + 3.282707493058926963e-05, + 3.285412540975230628e-05, + 3.288111985716820262e-05, + 3.290805823431103386e-05, + 3.293494050275500804e-05, + 3.296176662416043919e-05, + 3.298853656029150113e-05, + 3.301525027300258685e-05, + 3.304190772424308578e-05, + 3.306850887606287934e-05, + 3.309505369059926954e-05, + 3.312154213008900681e-05, + 3.314797415686646044e-05, + 3.317434973335783166e-05, + 3.320066882208475858e-05, + 3.322693138566949327e-05, + 3.325313738682110531e-05, + 3.327928678835285608e-05, + 3.330537955316903253e-05, + 3.333141564426954145e-05, + 3.335739502475493072e-05, + 3.338331765781419198e-05, + 3.340918350673617192e-05, + 3.343499253490808822e-05, + 3.346074470580904473e-05, + 3.348643998301469347e-05, + 3.351207833020142918e-05, + 3.353765971113443600e-05, + 3.356318408967909187e-05, + 3.358865142979904414e-05, + 3.361406169555079527e-05, + 3.363941485108848015e-05, + 3.366471086066244304e-05, + 3.368994968861843122e-05, + 3.371513129940222997e-05, + 3.374025565755257454e-05, + 3.376532272770596136e-05, + 3.379033247459561803e-05, + 3.381528486305134066e-05, + 3.384017985799864009e-05, + 3.386501742446314646e-05, + 3.388979752756399557e-05, + 3.391452013251816569e-05, + 3.393918520463981347e-05, + 3.396379270933878321e-05, + 3.398834261212537730e-05, + 3.401283487860348509e-05, + 3.403726947447545506e-05, + 3.406164636554048205e-05, + 3.408596551769531199e-05, + 3.411022689693244618e-05, + 3.413443046934558264e-05, + 3.415857620112189118e-05, + 3.418266405854740729e-05, + 3.420669400800522967e-05, + 3.423066601597618428e-05, + 3.425458004903766561e-05, + 3.427843607386768889e-05, + 3.430223405723856786e-05, + 3.432597396602175295e-05, + 3.434965576718598145e-05, + 3.437327942779680988e-05, + 3.439684491502086272e-05, + 3.442035219611935435e-05, + 3.444380123845247323e-05, + 3.446719200947827061e-05, + 3.449052447675285030e-05, + 3.451379860792912858e-05, + 3.453701437076151659e-05, + 3.456017173309918475e-05, + 3.458327066289060964e-05, + 3.460631112818207640e-05, + 3.462929309711862744e-05, + 3.465221653794208379e-05, + 3.467508141899620179e-05, + 3.469788770871949705e-05, + 3.472063537565027924e-05, + 3.474332438842493763e-05, + 3.476595471577755491e-05, + 3.478852632654392548e-05, + 3.481103918965616832e-05, + 3.483349327414172412e-05, + 3.485588854913342479e-05, + 3.487822498385810934e-05, + 3.490050254764161123e-05, + 3.492272120991273600e-05, + 3.494488094019156549e-05, + 3.496698170810451465e-05, + 3.498902348337286610e-05, + 3.501100623581640227e-05, + 3.503292993535738977e-05, + 3.505479455201490093e-05, + 3.507660005590364824e-05, + 3.509834641724418944e-05, + 3.512003360635177379e-05, + 3.514166159364059754e-05, + 3.516323034962862864e-05, + 3.518473984492664273e-05, + 3.520619005024788615e-05, + 3.522758093640674092e-05, + 3.524891247431425251e-05, + 3.527018463498046756e-05, + 3.529139738951912991e-05, + 3.531255070913643870e-05, + 3.533364456514504143e-05, + 3.535467892895318511e-05, + 3.537565377206855163e-05, + 3.539656906610261493e-05, + 3.541742478276025974e-05, + 3.543822089384940388e-05, + 3.545895737127941936e-05, + 3.547963418705647715e-05, + 3.550025131328679974e-05, + 3.552080872217999507e-05, + 3.554130638603895313e-05, + 3.556174427727335782e-05, + 3.558212236838849933e-05, + 3.560244063199114242e-05, + 3.562269904078773069e-05, + 3.564289756758496930e-05, + 3.566303618528851723e-05, + 3.568311486690715461e-05, + 3.570313358554667735e-05, + 3.572309231441443721e-05, + 3.574299102681757323e-05, + 3.576282969616391969e-05, + 3.578260829596012239e-05, + 3.580232679981652425e-05, + 3.582198518144046365e-05, + 3.584158341464106524e-05, + 3.586112147332765423e-05, + 3.588059933150897045e-05, + 3.590001696329715947e-05, + 3.591937434290225000e-05, + 3.593867144463551493e-05, + 3.595790824290882073e-05, + 3.597708471223468176e-05, + 3.599620082722529798e-05, + 3.601525656259657327e-05, + 3.603425189316177289e-05, + 3.605318679383656498e-05, + 3.607206123963692672e-05, + 3.609087520567959154e-05, + 3.610962866718131731e-05, + 3.612832159946264036e-05, + 3.614695397794195984e-05, + 3.616552577813975929e-05, + 3.618403697567713624e-05, + 3.620248754627564629e-05, + 3.622087746576048802e-05, + 3.623920671005503451e-05, + 3.625747525518464159e-05, + 3.627568307727582119e-05, + 3.629383015255634967e-05, + 3.631191645735390590e-05, + 3.632994196810061804e-05, + 3.634790666132646351e-05, + 3.636581051366421564e-05, + 3.638365350184739048e-05, + 3.640143560271026711e-05, + 3.641915679319086244e-05, + 3.643681705032681122e-05, + 3.645441635125487817e-05, + 3.647195467321791718e-05, + 3.648943199355713962e-05, + 3.650684828971510943e-05, + 3.652420353923846718e-05, + 3.654149771977343062e-05, + 3.655873080906578795e-05, + 3.657590278496725388e-05, + 3.659301362542837497e-05, + 3.661006330850106387e-05, + 3.662705181234214336e-05, + 3.664397911520441521e-05, + 3.666084519544838313e-05, + 3.667765003153248139e-05, + 3.669439360201716768e-05, + 3.671107588556736935e-05, + 3.672769686094777390e-05, + 3.674425650702272734e-05, + 3.676075480276313242e-05, + 3.677719172723872371e-05, + 3.679356725962092714e-05, + 3.680988137918640403e-05, + 3.682613406530814708e-05, + 3.684232529746678313e-05, + 3.685845505524166919e-05, + 3.687452331831499207e-05, + 3.689053006647013532e-05, + 3.690647527959589402e-05, + 3.692235893767744883e-05, + 3.693818102080762813e-05, + 3.695394150917828864e-05, + 3.696964038308360185e-05, + 3.698527762292258840e-05, + 3.700085320919237566e-05, + 3.701636712249414053e-05, + 3.703181934353325176e-05, + 3.704720985311475690e-05, + 3.706253863214613352e-05, + 3.707780566164020300e-05, + 3.709301092270664659e-05, + 3.710815439656304403e-05, + 3.712323606452613210e-05, + 3.713825590801600593e-05, + 3.715321390855483150e-05, + 3.716811004776744877e-05, + 3.718294430738063299e-05, + 3.719771666922536482e-05, + 3.721242711523309657e-05, + 3.722707562743864568e-05, + 3.724166218797936122e-05, + 3.725618677909492063e-05, + 3.727064938312697057e-05, + 3.728504998252202035e-05, + 3.729938855982705776e-05, + 3.731366509769199521e-05, + 3.732787957886996120e-05, + 3.734203198621566038e-05, + 3.735612230268876854e-05, + 3.737015051134932468e-05, + 3.738411659536099044e-05, + 3.739802053799016915e-05, + 3.741186232260593810e-05, + 3.742564193267959452e-05, + 3.743935935178705437e-05, + 3.745301456360511860e-05, + 3.746660755191400075e-05, + 3.748013830059681868e-05, + 3.749360679363972334e-05, + 3.750701301513063840e-05, + 3.752035694926266190e-05, + 3.753363858032989208e-05, + 3.754685789272965680e-05, + 3.756001487096258126e-05, + 3.757310949963132090e-05, + 3.758614176344358352e-05, + 3.759911164720811783e-05, + 3.761201913583724093e-05, + 3.762486421434620815e-05, + 3.763764686785339600e-05, + 3.765036708157967196e-05, + 3.766302484085075266e-05, + 3.767562013109328038e-05, + 3.768815293783813668e-05, + 3.770062324671893803e-05, + 3.771303104347169027e-05, + 3.772537631393759394e-05, + 3.773765904405982556e-05, + 3.774987921988242636e-05, + 3.776203682755676001e-05, + 3.777413185333477027e-05, + 3.778616428357136622e-05, + 3.779813410472664489e-05, + 3.781004130336279448e-05, + 3.782188586614326092e-05, + 3.783366777983825693e-05, + 3.784538703131907675e-05, + 3.785704360755998675e-05, + 3.786863749564120014e-05, + 3.788016868274189750e-05, + 3.789163715614859540e-05, + 3.790304290324882417e-05, + 3.791438591153354704e-05, + 3.792566616859853571e-05, + 3.793688366214189700e-05, + 3.794803837996352399e-05, + 3.795913030996971065e-05, + 3.797015944016799511e-05, + 3.798112575866949069e-05, + 3.799202925369049187e-05, + 3.800286991354725655e-05, + 3.801364772666288402e-05, + 3.802436268156198196e-05, + 3.803501476687308561e-05, + 3.804560397132735676e-05, + 3.805613028376191080e-05, + 3.806659369311316931e-05, + 3.807699418842505249e-05, + 3.808733175884259595e-05, + 3.809760639361440372e-05, + 3.810781808209462689e-05, + 3.811796681373784759e-05, + 3.812805257810346316e-05, + 3.813807536485551680e-05, + 3.814803516376005479e-05, + 3.815793196468715261e-05, + 3.816776575761023055e-05, + 3.817753653260591817e-05, + 3.818724427985583644e-05, + 3.819688898964350101e-05, + 3.820647065235590109e-05, + 3.821598925848604053e-05, + 3.822544479862688660e-05, + 3.823483726347674360e-05, + 3.824416664383843294e-05, + 3.825343293061688751e-05, + 3.826263611482109652e-05, + 3.827177618756352951e-05, + 3.828085314006030574e-05, + 3.828986696363047591e-05, + 3.829881764969857681e-05, + 3.830770518979048427e-05, + 3.831652957553713330e-05, + 3.832529079867226838e-05, + 3.833398885103324983e-05, + 3.834262372456192797e-05, + 3.835119541130294904e-05, + 3.835970390340471739e-05, + 3.836814919311911775e-05, + 3.837653127280193525e-05, + 3.838485013491209656e-05, + 3.839310577201324192e-05, + 3.840129817677154326e-05, + 3.840942734195709323e-05, + 3.841749326044359360e-05, + 3.842549592520822643e-05, + 3.843343532933256892e-05, + 3.844131146600101450e-05, + 3.844912432850189772e-05, + 3.845687391022692501e-05, + 3.846456020467179813e-05, + 3.847218320543521129e-05, + 3.847974290622078233e-05, + 3.848723930083447102e-05, + 3.849467238318644927e-05, + 3.850204214729042356e-05, + 3.850934858726368906e-05, + 3.851659169732670282e-05, + 3.852377147180487262e-05, + 3.853088790512614471e-05, + 3.853794099182236574e-05, + 3.854493072652883561e-05, + 3.855185710398442261e-05, + 3.855872011903253925e-05, + 3.856551976661962432e-05, + 3.857225604179450598e-05, + 3.857892893971181017e-05, + 3.858553845562851832e-05, + 3.859208458490483466e-05, + 3.859856732300630044e-05, + 3.860498666550038547e-05, + 3.861134260805874463e-05, + 3.861763514645668926e-05, + 3.862386427657309238e-05, + 3.863002999439007693e-05, + 3.863613229599469626e-05, + 3.864217117757524114e-05, + 3.864814663542601696e-05, + 3.865405866594352194e-05, + 3.865990726562781594e-05, + 3.866569243108350303e-05, + 3.867141415901813225e-05, + 3.867707244624194016e-05, + 3.868266728967031736e-05, + 3.868819868632151137e-05, + 3.869366663331689089e-05, + 3.869907112788264662e-05, + 3.870441216734640317e-05, + 3.870968974914161683e-05, + 3.871490387080380119e-05, + 3.872005452997251260e-05, + 3.872514172439032017e-05, + 3.873016545190481152e-05, + 3.873512571046463550e-05, + 3.874002249812413031e-05, + 3.874485581304006418e-05, + 3.874962565347267208e-05, + 3.875433201778667221e-05, + 3.875897490444852158e-05, + 3.876355431202942468e-05, + 3.876807023920393082e-05, + 3.877252268474969691e-05, + 3.877691164754803636e-05, + 3.878123712658346510e-05, + 3.878549912094372186e-05, + 3.878969762982094728e-05, + 3.879383265250965779e-05, + 3.879790418840814149e-05, + 3.880191223701850566e-05, + 3.880585679794517235e-05, + 3.880973787089666058e-05, + 3.881355545568505779e-05, + 3.881730955222538964e-05, + 3.882100016053602657e-05, + 3.882462728073881935e-05, + 3.882819091305871284e-05, + 3.883169105782441680e-05, + 3.883512771546755889e-05, + 3.883850088652315900e-05, + 3.884181057162954117e-05, + 3.884505677152803540e-05, + 3.884823948706350624e-05, + 3.885135871918428500e-05, + 3.885441446894149212e-05, + 3.885740673748970807e-05, + 3.886033552608641762e-05, + 3.886320083609280950e-05, + 3.886600266897260406e-05, + 3.886874102629353734e-05, + 3.887141590972580921e-05, + 3.887402732104307956e-05, + 3.887657526212197362e-05, + 3.887905973494221065e-05, + 3.888148074158699028e-05, + 3.888383828424226058e-05, + 3.888613236519700275e-05, + 3.888836298684363762e-05, + 3.889053015167711768e-05, + 3.889263386229581474e-05, + 3.889467412140118117e-05, + 3.889665093179760750e-05, + 3.889856429639202274e-05, + 3.890041421819491750e-05, + 3.890220070031972740e-05, + 3.890392374598226384e-05, + 3.890558335850208960e-05, + 3.890717954130114325e-05, + 3.890871229790427447e-05, + 3.891018163193947445e-05, + 3.891158754713722537e-05, + 3.891293004733165236e-05, + 3.891420913645895818e-05, + 3.891542481855809408e-05, + 3.891657709777150519e-05, + 3.891766597834404629e-05, + 3.891869146462311060e-05, + 3.891965356105937514e-05, + 3.892055227220587240e-05, + 3.892138760271853242e-05, + 3.892215955735596597e-05, + 3.892286814097936290e-05, + 3.892351335855251247e-05, + 3.892409521514246062e-05, + 3.892461371591791083e-05, + 3.892506886615108754e-05, + 3.892546067121639447e-05, + 3.892578913659074666e-05, + 3.892605426785374664e-05, + 3.892625607068781997e-05, + 3.892639455087702939e-05, + 3.892646971430901282e-05, + 3.892648156697337740e-05, + 3.892643011496193665e-05, + 3.892631536446963206e-05, + 3.892613732179319813e-05, + 3.892589599333216529e-05, + 3.892559138558810772e-05, + 3.892522350516532098e-05, + 3.892479235877027992e-05, + 3.892429795321170641e-05, + 3.892374029540076588e-05, + 3.892311939235085049e-05, + 3.892243525117758586e-05, + 3.892168787909875658e-05, + 3.892087728343462467e-05, + 3.892000347160744168e-05, + 3.891906645114147584e-05, + 3.891806622966364896e-05, + 3.891700281490243196e-05, + 3.891587621468893581e-05, + 3.891468643695596288e-05, + 3.891343348973842027e-05, + 3.891211738117355699e-05, + 3.891073811950013727e-05, + 3.890929571305924012e-05, + 3.890779017029420516e-05, + 3.890622149974973134e-05, + 3.890458971007252752e-05, + 3.890289481001173253e-05, + 3.890113680841768192e-05, + 3.889931571424297863e-05, + 3.889743153654188985e-05, + 3.889548428447059782e-05, + 3.889347396728693547e-05, + 3.889140059435053555e-05, + 3.888926417512284417e-05, + 3.888706471916673457e-05, + 3.888480223614706273e-05, + 3.888247673583018630e-05, + 3.888008822808408654e-05, + 3.887763672287836836e-05, + 3.887512223028426704e-05, + 3.887254476047443145e-05, + 3.886990432372299854e-05, + 3.886720093040592540e-05, + 3.886443459100019643e-05, + 3.886160531608448066e-05, + 3.885871311633893520e-05, + 3.885575800254483257e-05, + 3.885273998558506892e-05, + 3.884965907644369646e-05, + 3.884651528620605221e-05, + 3.884330862605896807e-05, + 3.884003910729016094e-05, + 3.883670674128898492e-05, + 3.883331153954576041e-05, + 3.882985351365181482e-05, + 3.882633267529995687e-05, + 3.882274903628377187e-05, + 3.881910260849812317e-05, + 3.881539340393892176e-05, + 3.881162143470292300e-05, + 3.880778671298807216e-05, + 3.880388925109310469e-05, + 3.879992906141789175e-05, + 3.879590615646283716e-05, + 3.879182054882968376e-05, + 3.878767225122065282e-05, + 3.878346127643866089e-05, + 3.877918763738811940e-05, + 3.877485134707340321e-05, + 3.877045241859982641e-05, + 3.876599086517364232e-05, + 3.876146670010139971e-05, + 3.875687993679056628e-05, + 3.875223058874876966e-05, + 3.874751866958490196e-05, + 3.874274419300783229e-05, + 3.873790717282692852e-05, + 3.873300762295210474e-05, + 3.872804555739408548e-05, + 3.872302099026336223e-05, + 3.871793393577118949e-05, + 3.871278440822903595e-05, + 3.870757242204859799e-05, + 3.870229799174182682e-05, + 3.869696113192149092e-05, + 3.869156185729961066e-05, + 3.868610018268891528e-05, + 3.868057612300227361e-05, + 3.867498969325216558e-05, + 3.866934090855217297e-05, + 3.866362978411481098e-05, + 3.865785633525293776e-05, + 3.865202057737996441e-05, + 3.864612252600793733e-05, + 3.864016219675024195e-05, + 3.863413960531942752e-05, + 3.862805476752748497e-05, + 3.862190769928674816e-05, + 3.861569841660949403e-05, + 3.860942693560664838e-05, + 3.860309327249031341e-05, + 3.859669744357093521e-05, + 3.859023946525915372e-05, + 3.858371935406526061e-05, + 3.857713712659870462e-05, + 3.857049279956885048e-05, + 3.856378638978434875e-05, + 3.855701791415295962e-05, + 3.855018738968219664e-05, + 3.854329483347911670e-05, + 3.853634026274913412e-05, + 3.852932369479814846e-05, + 3.852224514703095207e-05, + 3.851510463695064732e-05, + 3.850790218216057785e-05, + 3.850063780036277003e-05, + 3.849331150935824465e-05, + 3.848592332704749809e-05, + 3.847847327142911309e-05, + 3.847096136060172396e-05, + 3.846338761276223438e-05, + 3.845575204620672540e-05, + 3.844805467932990663e-05, + 3.844029553062565824e-05, + 3.843247461868587233e-05, + 3.842459196220180133e-05, + 3.841664757996351591e-05, + 3.840864149085928837e-05, + 3.840057371387619570e-05, + 3.839244426810034321e-05, + 3.838425317271499428e-05, + 3.837600044700321988e-05, + 3.836768611034629934e-05, + 3.835931018222332061e-05, + 3.835087268221277264e-05, + 3.834237362999010594e-05, + 3.833381304533030754e-05, + 3.832519094810572585e-05, + 3.831650735828740552e-05, + 3.830776229594445734e-05, + 3.829895578124428176e-05, + 3.829008783445155928e-05, + 3.828115847592986998e-05, + 3.827216772614026370e-05, + 3.826311560564227651e-05, + 3.825400213509273128e-05, + 3.824482733524699809e-05, + 3.823559122695706976e-05, + 3.822629383117398777e-05, + 3.821693516894599229e-05, + 3.820751526141889494e-05, + 3.819803412983667506e-05, + 3.818849179553990086e-05, + 3.817888827996713885e-05, + 3.816922360465578736e-05, + 3.815949779123839703e-05, + 3.814971086144650612e-05, + 3.813986283710905494e-05, + 3.812995374015091534e-05, + 3.811998359259565546e-05, + 3.810995241656366269e-05, + 3.809986023427237406e-05, + 3.808970706803673704e-05, + 3.807949294026790851e-05, + 3.806921787347476580e-05, + 3.805888189026414395e-05, + 3.804848501333783377e-05, + 3.803802726549579378e-05, + 3.802750866963500507e-05, + 3.801692924874821764e-05, + 3.800628902592538024e-05, + 3.799558802435490070e-05, + 3.798482626731894326e-05, + 3.797400377819807026e-05, + 3.796312058046986661e-05, + 3.795217669770604627e-05, + 3.794117215357830698e-05, + 3.793010697185167596e-05, + 3.791898117638926006e-05, + 3.790779479115045686e-05, + 3.789654784018939607e-05, + 3.788524034765895792e-05, + 3.787387233780685643e-05, + 3.786244383497623574e-05, + 3.785095486360743873e-05, + 3.783940544823721417e-05, + 3.782779561349626372e-05, + 3.781612538411433091e-05, + 3.780439478491423805e-05, + 3.779260384081614845e-05, + 3.778075257683571653e-05, + 3.776884101808435887e-05, + 3.775686918976907803e-05, + 3.774483711719328925e-05, + 3.773274482575429288e-05, + 3.772059234094654736e-05, + 3.770837968836004967e-05, + 3.769610689367807881e-05, + 3.768377398268253555e-05, + 3.767138098124890762e-05, + 3.765892791534725906e-05, + 3.764641481104433088e-05, + 3.763384169450153524e-05, + 3.762120859197529431e-05, + 3.760851552981784663e-05, + 3.759576253447482119e-05, + 3.758294963248834099e-05, + 3.757007685049562710e-05, + 3.755714421522666086e-05, + 3.754415175350925933e-05, + 3.753109949226458256e-05, + 3.751798745850743182e-05, + 3.750481567934868901e-05, + 3.749158418199369035e-05, + 3.747829299374195539e-05, + 3.746494214198787810e-05, + 3.745153165422045589e-05, + 3.743806155802201566e-05, + 3.742453188107019242e-05, + 3.741094265113681806e-05, + 3.739729389608798226e-05, + 3.738358564388414776e-05, + 3.736981792257884248e-05, + 3.735599076032073985e-05, + 3.734210418535231714e-05, + 3.732815822601001128e-05, + 3.731415291072398847e-05, + 3.730008826801903867e-05, + 3.728596432651183119e-05, + 3.727178111491482459e-05, + 3.725753866203326484e-05, + 3.724323699676631688e-05, + 3.722887614810701048e-05, + 3.721445614514032931e-05, + 3.719997701704655840e-05, + 3.718543879309856688e-05, + 3.717084150266268885e-05, + 3.715618517519873025e-05, + 3.714146984026016525e-05, + 3.712669552749179176e-05, + 3.711186226663286880e-05, + 3.709697008751742142e-05, + 3.708201902006886039e-05, + 3.706700909430614855e-05, + 3.705194034034099546e-05, + 3.703681278837617691e-05, + 3.702162646870901786e-05, + 3.700638141172882430e-05, + 3.699107764791808260e-05, + 3.697571520785176839e-05, + 3.696029412219616739e-05, + 3.694481442171096940e-05, + 3.692927613725019653e-05, + 3.691367929975664677e-05, + 3.689802394026768084e-05, + 3.688231008991309446e-05, + 3.686653777991297709e-05, + 3.685070704158143883e-05, + 3.683481790632370343e-05, + 3.681887040563761938e-05, + 3.680286457111252827e-05, + 3.678680043443038292e-05, + 3.677067802736253536e-05, + 3.675449738177639794e-05, + 3.673825852962684426e-05, + 3.672196150296262626e-05, + 3.670560633392447688e-05, + 3.668919305474174905e-05, + 3.667272169773928001e-05, + 3.665619229533141469e-05, + 3.663960488002243257e-05, + 3.662295948440996295e-05, + 3.660625614118264033e-05, + 3.658949488311781409e-05, + 3.657267574308853473e-05, + 3.655579875405420273e-05, + 3.653886394906778517e-05, + 3.652187136127330182e-05, + 3.650482102390266735e-05, + 3.648771297028302325e-05, + 3.647054723382983963e-05, + 3.645332384804791129e-05, + 3.643604284653499659e-05, + 3.641870426297906630e-05, + 3.640130813115574214e-05, + 3.638385448493552032e-05, + 3.636634335827695458e-05, + 3.634877478522742869e-05, + 3.633114879992650395e-05, + 3.631346543660373045e-05, + 3.629572472957819302e-05, + 3.627792671325982588e-05, + 3.626007142214655979e-05, + 3.624215889082811002e-05, + 3.622418915398414673e-05, + 3.620616224638117790e-05, + 3.618807820287982024e-05, + 3.616993705842804331e-05, + 3.615173884806181321e-05, + 3.613348360690913800e-05, + 3.611517137018620531e-05, + 3.609680217319914409e-05, + 3.607837605134359772e-05, + 3.605989304010244045e-05, + 3.604135317505005994e-05, + 3.602275649184888786e-05, + 3.600410302625081611e-05, + 3.598539281409618039e-05, + 3.596662589131535259e-05, + 3.594780229392501389e-05, + 3.592892205803308785e-05, + 3.590998521983546749e-05, + 3.589099181561623890e-05, + 3.587194188174869090e-05, + 3.585283545469475938e-05, + 3.583367257100292670e-05, + 3.581445326731207731e-05, + 3.579517758034877377e-05, + 3.577584554692755486e-05, + 3.575645720395239925e-05, + 3.573701258841240227e-05, + 3.571751173738744762e-05, + 3.569795468804431104e-05, + 3.567834147763783258e-05, + 3.565867214351065234e-05, + 3.563894672309376614e-05, + 3.561916525390359134e-05, + 3.559932777354639182e-05, + 3.557943431971545220e-05, + 3.555948493019118632e-05, + 3.553947964284163188e-05, + 3.551941849562266729e-05, + 3.549930152657538923e-05, + 3.547912877383014457e-05, + 3.545890027560373174e-05, + 3.543861607020000384e-05, + 3.541827619601054623e-05, + 3.539788069151129522e-05, + 3.537742959526690874e-05, + 3.535692294593096961e-05, + 3.533636078223886373e-05, + 3.531574314301610127e-05, + 3.529507006717454913e-05, + 3.527434159370913087e-05, + 3.525355776170728637e-05, + 3.523271861033646285e-05, + 3.521182417885422507e-05, + 3.519087450660311891e-05, + 3.516986963301279234e-05, + 3.514880959759549597e-05, + 3.512769443995551565e-05, + 3.510652419977673797e-05, + 3.508529891683254365e-05, + 3.506401863098193827e-05, + 3.504268338216633355e-05, + 3.502129321041755691e-05, + 3.499984815585077702e-05, + 3.497834825866455802e-05, + 3.495679355914575878e-05, + 3.493518409766609731e-05, + 3.491351991467933185e-05, + 3.489180105073051724e-05, + 3.487002754644350947e-05, + 3.484819944253066934e-05, + 3.482631677978944716e-05, + 3.480437959909842547e-05, + 3.478238794142649406e-05, + 3.476034184782429834e-05, + 3.473824135942554716e-05, + 3.471608651745101081e-05, + 3.469387736320637971e-05, + 3.467161393807750071e-05, + 3.464929628354041272e-05, + 3.462692444115236817e-05, + 3.460449845255350674e-05, + 3.458201835947006733e-05, + 3.455948420371213832e-05, + 3.453689602717302060e-05, + 3.451425387183161282e-05, + 3.449155777974714625e-05, + 3.446880779306566963e-05, + 3.444600395401581404e-05, + 3.442314630491002616e-05, + 3.440023488814388387e-05, + 3.437726974619755992e-05, + 3.435425092163162743e-05, + 3.433117845709296201e-05, + 3.430805239531032366e-05, + 3.428487277909580684e-05, + 3.426163965134534196e-05, + 3.423835305503507683e-05, + 3.421501303322682479e-05, + 3.419161962906422934e-05, + 3.416817288577365182e-05, + 3.414467284666411722e-05, + 3.412111955512807311e-05, + 3.409751305463770335e-05, + 3.407385338875026779e-05, + 3.405014060110457183e-05, + 3.402637473542152209e-05, + 3.400255583550437034e-05, + 3.397868394523926238e-05, + 3.395475910859135525e-05, + 3.393078136961080743e-05, + 3.390675077242865211e-05, + 3.388266736125762391e-05, + 3.385853118039287710e-05, + 3.383434227420874664e-05, + 3.381010068716363377e-05, + 3.378580646379655020e-05, + 3.376145964872777534e-05, + 3.373706028665895122e-05, + 3.371260842237394303e-05, + 3.368810410073457690e-05, + 3.366354736668673847e-05, + 3.363893826525670024e-05, + 3.361427684155097242e-05, + 3.358956314075719742e-05, + 3.356479720814469874e-05, + 3.353997908906053042e-05, + 3.351510882893493865e-05, + 3.349018647327804145e-05, + 3.346521206768006586e-05, + 3.344018565781293350e-05, + 3.341510728942521236e-05, + 3.338997700834787653e-05, + 3.336479486049536336e-05, + 3.333956089185528029e-05, + 3.331427514849979576e-05, + 3.328893767658052310e-05, + 3.326354852232509180e-05, + 3.323810773204750836e-05, + 3.321261535213433950e-05, + 3.318707142905587948e-05, + 3.316147600936165740e-05, + 3.313582913967743531e-05, + 3.311013086671017524e-05, + 3.308438123724946899e-05, + 3.305858029815725172e-05, + 3.303272809637886764e-05, + 3.300682467893859088e-05, + 3.298087009293512603e-05, + 3.295486438555224692e-05, + 3.292880760404938434e-05, + 3.290269979576221560e-05, + 3.287654100810822108e-05, + 3.285033128858310633e-05, + 3.282407068475665503e-05, + 3.279775924428439090e-05, + 3.277139701489246667e-05, + 3.274498404438927859e-05, + 3.271852038066144807e-05, + 3.269200607166878697e-05, + 3.266544116545558004e-05, + 3.263882571014058994e-05, + 3.261215975391806014e-05, + 3.258544334506272933e-05, + 3.255867653192725646e-05, + 3.253185936293670488e-05, + 3.250499188660164757e-05, + 3.247807415150180254e-05, + 3.245110620629852141e-05, + 3.242408809972894157e-05, + 3.239701988060738203e-05, + 3.236990159782467260e-05, + 3.234273330034970564e-05, + 3.231551503722459781e-05, + 3.228824685757158156e-05, + 3.226092881058803129e-05, + 3.223356094554779834e-05, + 3.220614331180114318e-05, + 3.217867595877543340e-05, + 3.215115893597104404e-05, + 3.212359229296771375e-05, + 3.209597607942003177e-05, + 3.206831034505837986e-05, + 3.204059513969000972e-05, + 3.201283051319478071e-05, + 3.198501651553108230e-05, + 3.195715319673204615e-05, + 3.192924060690611532e-05, + 3.190127879623722723e-05, + 3.187326781498548447e-05, + 3.184520771348277064e-05, + 3.181709854213961460e-05, + 3.178894035144023711e-05, + 3.176073319194387218e-05, + 3.173247711428440110e-05, + 3.170417216917176197e-05, + 3.167581840738696911e-05, + 3.164741587978897065e-05, + 3.161896463731018976e-05, + 3.159046473095713446e-05, + 3.156191621181212565e-05, + 3.153331913102773372e-05, + 3.150467353983423929e-05, + 3.147597948953514046e-05, + 3.144723703150724100e-05, + 3.141844621720171413e-05, + 3.138960709814415001e-05, + 3.136071972593043578e-05, + 3.133178415223366052e-05, + 3.130280042879895179e-05, + 3.127376860744500025e-05, + 3.124468874006489994e-05, + 3.121556087862125583e-05, + 3.118638507515213333e-05, + 3.115716138177242038e-05, + 3.112788985066234162e-05, + 3.109857053407994712e-05, + 3.106920348435607753e-05, + 3.103978875389040682e-05, + 3.101032639515760862e-05, + 3.098081646070852856e-05, + 3.095125900315888820e-05, + 3.092165407520183469e-05, + 3.089200172960226905e-05, + 3.086230201919235348e-05, + 3.083255499688533494e-05, + 3.080276071565697145e-05, + 3.077291922856020942e-05, + 3.074303058871964749e-05, + 3.071309484932761982e-05, + 3.068311206365040994e-05, + 3.065308228502976184e-05, + 3.062300556687090635e-05, + 3.059288196265555796e-05, + 3.056271152593649385e-05, + 3.053249431033226838e-05, + 3.050223036954155507e-05, + 3.047191975732491505e-05, + 3.044156252751843770e-05, + 3.041115873402806889e-05, + 3.038070843083143379e-05, + 3.035021167197126055e-05, + 3.031966851156997294e-05, + 3.028907900381107258e-05, + 3.025844320295356901e-05, + 3.022776116332632826e-05, + 3.019703293932320072e-05, + 3.016625858541557758e-05, + 3.013543815614111172e-05, + 3.010457170610410395e-05, + 3.007365928998263844e-05, + 3.004270096252441868e-05, + 3.001169677854095686e-05, + 2.998064679292258665e-05, + 2.994955106061953374e-05, + 2.991840963665661014e-05, + 2.988722257612611268e-05, + 2.985598993418942220e-05, + 2.982471176607669522e-05, + 2.979338812708821243e-05, + 2.976201907258885262e-05, + 2.973060465801603789e-05, + 2.969914493887445154e-05, + 2.966763997073706464e-05, + 2.963608980924511914e-05, + 2.960449451010919848e-05, + 2.957285412910421656e-05, + 2.954116872207682081e-05, + 2.950943834494036420e-05, + 2.947766305367592168e-05, + 2.944584290433363525e-05, + 2.941397795302708293e-05, + 2.938206825594152880e-05, + 2.935011386932808870e-05, + 2.931811484950529550e-05, + 2.928607125285873319e-05, + 2.925398313584257512e-05, + 2.922185055497401049e-05, + 2.918967356684085411e-05, + 2.915745222809666749e-05, + 2.912518659546161265e-05, + 2.909287672572234029e-05, + 2.906052267573362290e-05, + 2.902812450241219853e-05, + 2.899568226274531899e-05, + 2.896319601378538313e-05, + 2.893066581265040432e-05, + 2.889809171652615521e-05, + 2.886547378266003517e-05, + 2.883281206836921874e-05, + 2.880010663103557008e-05, + 2.876735752810611729e-05, + 2.873456481709379099e-05, + 2.870172855557822061e-05, + 2.866884880119988978e-05, + 2.863592561166895567e-05, + 2.860295904475927236e-05, + 2.856994915830948176e-05, + 2.853689601022476869e-05, + 2.850379965847082663e-05, + 2.847066016108075253e-05, + 2.843747757615666639e-05, + 2.840425196185650426e-05, + 2.837098337640852629e-05, + 2.833767187810504184e-05, + 2.830431752529833362e-05, + 2.827092037640774560e-05, + 2.823748048992082827e-05, + 2.820399792438037896e-05, + 2.817047273839895326e-05, + 2.813690499065247839e-05, + 2.810329473987498123e-05, + 2.806964204487378414e-05, + 2.803594696450978260e-05, + 2.800220955771278670e-05, + 2.796842988347581890e-05, + 2.793460800085059427e-05, + 2.790074396895465589e-05, + 2.786683784697304521e-05, + 2.783288969414440052e-05, + 2.779889956977631200e-05, + 2.776486753323868434e-05, + 2.773079364395801758e-05, + 2.769667796143357528e-05, + 2.766252054521642215e-05, + 2.762832145492588360e-05, + 2.759408075024167846e-05, + 2.755979849090694464e-05, + 2.752547473672078859e-05, + 2.749110954755463643e-05, + 2.745670298333086163e-05, + 2.742225510403941392e-05, + 2.738776596973180880e-05, + 2.735323564051464601e-05, + 2.731866417656496793e-05, + 2.728405163811634454e-05, + 2.724939808546027271e-05, + 2.721470357895389774e-05, + 2.717996817901355559e-05, + 2.714519194611615866e-05, + 2.711037494080082542e-05, + 2.707551722366273098e-05, + 2.704061885536181121e-05, + 2.700567989661832767e-05, + 2.697070040820683334e-05, + 2.693568045097073820e-05, + 2.690062008580914295e-05, + 2.686551937367788595e-05, + 2.683037837559717329e-05, + 2.679519715264505662e-05, + 2.675997576595965920e-05, + 2.672471427673804079e-05, + 2.668941274623849491e-05, + 2.665407123577384703e-05, + 2.661868980672040265e-05, + 2.658326852051225527e-05, + 2.654780743864246543e-05, + 2.651230662266404326e-05, + 2.647676613418456477e-05, + 2.644118603487446596e-05, + 2.640556638646130675e-05, + 2.636990725073105166e-05, + 2.633420868952785640e-05, + 2.629847076475559585e-05, + 2.626269353837168080e-05, + 2.622687707239596867e-05, + 2.619102142890473945e-05, + 2.615512667003198996e-05, + 2.611919285797094833e-05, + 2.608322005496760269e-05, + 2.604720832333017096e-05, + 2.601115772542249744e-05, + 2.597506832366576715e-05, + 2.593894018053817722e-05, + 2.590277335857656317e-05, + 2.586656792036988692e-05, + 2.583032392856869985e-05, + 2.579404144587843772e-05, + 2.575772053506136875e-05, + 2.572136125893608553e-05, + 2.568496368037906683e-05, + 2.564852786231845369e-05, + 2.561205386774310921e-05, + 2.557554175969647595e-05, + 2.553899160127782607e-05, + 2.550240345564375554e-05, + 2.546577738600213294e-05, + 2.542911345561913998e-05, + 2.539241172782156526e-05, + 2.535567226598191347e-05, + 2.531889513353428889e-05, + 2.528208039396805286e-05, + 2.524522811082277206e-05, + 2.520833834769770865e-05, + 2.517141116824542013e-05, + 2.513444663617320600e-05, + 2.509744481524297233e-05, + 2.506040576927271230e-05, + 2.502332956212843229e-05, + 2.498621625774165501e-05, + 2.494906592008675625e-05, + 2.491187861319872548e-05, + 2.487465440116653188e-05, + 2.483739334812808960e-05, + 2.480009551827828420e-05, + 2.476276097587043636e-05, + 2.472538978520191926e-05, + 2.468798201062970669e-05, + 2.465053771656420330e-05, + 2.461305696746251911e-05, + 2.457553982784616576e-05, + 2.453798636227840345e-05, + 2.450039663538171016e-05, + 2.446277071183128657e-05, + 2.442510865635021784e-05, + 2.438741053371727306e-05, + 2.434967640876868066e-05, + 2.431190634638294619e-05, + 2.427410041149761336e-05, + 2.423625866910197624e-05, + 2.419838118423111271e-05, + 2.416046802198147666e-05, + 2.412251924749659330e-05, + 2.408453492596824159e-05, + 2.404651512264454515e-05, + 2.400845990282384309e-05, + 2.397036933185519146e-05, + 2.393224347514095519e-05, + 2.389408239812941854e-05, + 2.385588616632482078e-05, + 2.381765484528235191e-05, + 2.377938850060120696e-05, + 2.374108719794128277e-05, + 2.370275100300801602e-05, + 2.366437998155385036e-05, + 2.362597419938663215e-05, + 2.358753372236255301e-05, + 2.354905861638822336e-05, + 2.351054894742149570e-05, + 2.347200478146536603e-05, + 2.343342618457748428e-05, + 2.339481322286345261e-05, + 2.335616596247839412e-05, + 2.331748446962678345e-05, + 2.327876881056424585e-05, + 2.324001905159041502e-05, + 2.320123525905896534e-05, + 2.316241749937105590e-05, + 2.312356583897653660e-05, + 2.308468034437398208e-05, + 2.304576108211244673e-05, + 2.300680811878419720e-05, + 2.296782152103500550e-05, + 2.292880135555733551e-05, + 2.288974768909185742e-05, + 2.285066058842884367e-05, + 2.281154012040142998e-05, + 2.277238635189575937e-05, + 2.273319934984390100e-05, + 2.269397918122560519e-05, + 2.265472591306807646e-05, + 2.261543961244749814e-05, + 2.257612034648242216e-05, + 2.253676818234340149e-05, + 2.249738318724644429e-05, + 2.245796542845451482e-05, + 2.241851497327725565e-05, + 2.237903188907285786e-05, + 2.233951624324073597e-05, + 2.229996810323214967e-05, + 2.226038753654283127e-05, + 2.222077461071481189e-05, + 2.218112939333786822e-05, + 2.214145195204278690e-05, + 2.210174235450939437e-05, + 2.206200066846878292e-05, + 2.202222696168716279e-05, + 2.198242130198325690e-05, + 2.194258375722121286e-05, + 2.190271439530516837e-05, + 2.186281328418997471e-05, + 2.182288049187341416e-05, + 2.178291608639855480e-05, + 2.174292013585321512e-05, + 2.170289270837165137e-05, + 2.166283387212584324e-05, + 2.162274369534442338e-05, + 2.158262224628825575e-05, + 2.154246959326941928e-05, + 2.150228580464415724e-05, + 2.146207094880741209e-05, + 2.142182509420184817e-05, + 2.138154830931895617e-05, + 2.134124066268342708e-05, + 2.130090222287055703e-05, + 2.126053305849924063e-05, + 2.122013323822454419e-05, + 2.117970283075706211e-05, + 2.113924190483826822e-05, + 2.109875052925974342e-05, + 2.105822877285579636e-05, + 2.101767670449833039e-05, + 2.097709439310537489e-05, + 2.093648190764274206e-05, + 2.089583931710832631e-05, + 2.085516669054890266e-05, + 2.081446409705398737e-05, + 2.077373160574773361e-05, + 2.073296928580695963e-05, + 2.069217720644505183e-05, + 2.065135543691347917e-05, + 2.061050404651073453e-05, + 2.056962310457498240e-05, + 2.052871268048570553e-05, + 2.048777284366554472e-05, + 2.044680366357274663e-05, + 2.040580520971219556e-05, + 2.036477755162939950e-05, + 2.032372075890353093e-05, + 2.028263490116542794e-05, + 2.024152004808084672e-05, + 2.020037626935250119e-05, + 2.015920363472873663e-05, + 2.011800221399631636e-05, + 2.007677207698220048e-05, + 2.003551329355492147e-05, + 1.999422593361750638e-05, + 1.995291006711832563e-05, + 1.991156576404317155e-05, + 1.987019309441774868e-05, + 1.982879212830674539e-05, + 1.978736293581625301e-05, + 1.974590558708582747e-05, + 1.970442015229952103e-05, + 1.966290670167863505e-05, + 1.962136530548296010e-05, + 1.957979603401130444e-05, + 1.953819895760261217e-05, + 1.949657414662880406e-05, + 1.945492167150571447e-05, + 1.941324160268537654e-05, + 1.937153401065793651e-05, + 1.932979896595341218e-05, + 1.928803653913415764e-05, + 1.924624680080566131e-05, + 1.920442982160920384e-05, + 1.916258567222360636e-05, + 1.912071442336492897e-05, + 1.907881614578842228e-05, + 1.903689091028090076e-05, + 1.899493878767172700e-05, + 1.895295984882534773e-05, + 1.891095416464282520e-05, + 1.886892180606201339e-05, + 1.882686284405912333e-05, + 1.878477734964113365e-05, + 1.874266539385707311e-05, + 1.870052704779001101e-05, + 1.865836238255932388e-05, + 1.861617146932197279e-05, + 1.857395437926535442e-05, + 1.853171118361614063e-05, + 1.848944195364213186e-05, + 1.844714676063557388e-05, + 1.840482567593134536e-05, + 1.836247877089965637e-05, + 1.832010611694005823e-05, + 1.827770778549296651e-05, + 1.823528384803147870e-05, + 1.819283437606356293e-05, + 1.815035944113373173e-05, + 1.810785911481527981e-05, + 1.806533346871961836e-05, + 1.802278257449816225e-05, + 1.798020650382514541e-05, + 1.793760532841626572e-05, + 1.789497912002118371e-05, + 1.785232795041771526e-05, + 1.780965189142109142e-05, + 1.776695101488559822e-05, + 1.772422539268789351e-05, + 1.768147509674520128e-05, + 1.763870019900810163e-05, + 1.759590077145264329e-05, + 1.755307688610094338e-05, + 1.751022861499486848e-05, + 1.746735603021641416e-05, + 1.742445920388007837e-05, + 1.738153820812558031e-05, + 1.733859311513592254e-05, + 1.729562399712091116e-05, + 1.725263092631851780e-05, + 1.720961397500442736e-05, + 1.716657321548613257e-05, + 1.712350872009539530e-05, + 1.708042056120872112e-05, + 1.703730881122086406e-05, + 1.699417354256558911e-05, + 1.695101482770591101e-05, + 1.690783273913605255e-05, + 1.686462734938125150e-05, + 1.682139873099944451e-05, + 1.677814695657367085e-05, + 1.673487209872328045e-05, + 1.669157423009832306e-05, + 1.664825342337133548e-05, + 1.660490975125681652e-05, + 1.656154328649352402e-05, + 1.651815410184655854e-05, + 1.647474227011656552e-05, + 1.643130786413217977e-05, + 1.638785095675166531e-05, + 1.634437162086458233e-05, + 1.630086992938445189e-05, + 1.625734595525968603e-05, + 1.621379977146783811e-05, + 1.617023145100804390e-05, + 1.612664106691967999e-05, + 1.608302869226527410e-05, + 1.603939440013224315e-05, + 1.599573826364232584e-05, + 1.595206035594370523e-05, + 1.590836075021300099e-05, + 1.586463951965502879e-05, + 1.582089673750448767e-05, + 1.577713247701847555e-05, + 1.573334681148764647e-05, + 1.568953981422826531e-05, + 1.564571155858445758e-05, + 1.560186211792955786e-05, + 1.555799156565858818e-05, + 1.551409997519952015e-05, + 1.547018742000559404e-05, + 1.542625397355698919e-05, + 1.538229970936067826e-05, + 1.533832470095237546e-05, + 1.529432902188866247e-05, + 1.525031274575834551e-05, + 1.520627594617473886e-05, + 1.516221869677729791e-05, + 1.511814107123370799e-05, + 1.507404314323170705e-05, + 1.502992498649085272e-05, + 1.498578667475441105e-05, + 1.494162828179141656e-05, + 1.489744988139628762e-05, + 1.485325154739083905e-05, + 1.480903335361642841e-05, + 1.476479537394332589e-05, + 1.472053768227263537e-05, + 1.467626035251886586e-05, + 1.463196345862889830e-05, + 1.458764707457443337e-05, + 1.454331127434571669e-05, + 1.449895613196341931e-05, + 1.445458172147040285e-05, + 1.441018811693377610e-05, + 1.436577539244669410e-05, + 1.432134362212023172e-05, + 1.427689288009330751e-05, + 1.423242324053426086e-05, + 1.418793477762332348e-05, + 1.414342756557205039e-05, + 1.409890167861518666e-05, + 1.405435719100481612e-05, + 1.400979417702203011e-05, + 1.396521271096873494e-05, + 1.392061286716988469e-05, + 1.387599471997287643e-05, + 1.383135834374985923e-05, + 1.378670381288742575e-05, + 1.374203120180827769e-05, + 1.369734058494359551e-05, + 1.365263203675448201e-05, + 1.360790563172393743e-05, + 1.356316144434900416e-05, + 1.351839954916015020e-05, + 1.347362002070363561e-05, + 1.342882293354314224e-05, + 1.338400836226960777e-05, + 1.333917638149519652e-05, + 1.329432706584527467e-05, + 1.324946048997995876e-05, + 1.320457672856644315e-05, + 1.315967585630049770e-05, + 1.311475794789654394e-05, + 1.306982307808937454e-05, + 1.302487132163424647e-05, + 1.297990275330854462e-05, + 1.293491744790381962e-05, + 1.288991548023758032e-05, + 1.284489692514715948e-05, + 1.279986185748166535e-05, + 1.275481035212176830e-05, + 1.270974248396157943e-05, + 1.266465832791068173e-05, + 1.261955795890380662e-05, + 1.257444145189273626e-05, + 1.252930888184835683e-05, + 1.248416032376239319e-05, + 1.243899585263919777e-05, + 1.239381554350792583e-05, + 1.234861947141598278e-05, + 1.230340771142136198e-05, + 1.225818033861214504e-05, + 1.221293742808855838e-05, + 1.216767905496491963e-05, + 1.212240529437929046e-05, + 1.207711622148549581e-05, + 1.203181191145507041e-05, + 1.198649243947691653e-05, + 1.194115788075941312e-05, + 1.189580831052211996e-05, + 1.185044380400775983e-05, + 1.180506443647403438e-05, + 1.175967028319551482e-05, + 1.171426141946555274e-05, + 1.166883792058809445e-05, + 1.162339986188956140e-05, + 1.157794731871084747e-05, + 1.153248036640897741e-05, + 1.148699908035724412e-05, + 1.144150353594683828e-05, + 1.139599380857880664e-05, + 1.135046997367606467e-05, + 1.130493210667511931e-05, + 1.125938028302791893e-05, + 1.121381457820384721e-05, + 1.116823506768159673e-05, + 1.112264182696087325e-05, + 1.107703493155452343e-05, + 1.103141445699016615e-05, + 1.098578047881023830e-05, + 1.094013307257381250e-05, + 1.089447231384847575e-05, + 1.084879827822014651e-05, + 1.080311104129513813e-05, + 1.075741067868173415e-05, + 1.071169726601036462e-05, + 1.066597087892528826e-05, + 1.062023159307855142e-05, + 1.057447948414179061e-05, + 1.052871462779819419e-05, + 1.048293709974441495e-05, + 1.043714697569228450e-05, + 1.039134433136073092e-05, + 1.034552924248579063e-05, + 1.029970178482241939e-05, + 1.025386203412624212e-05, + 1.020801006617358693e-05, + 1.016214595675328411e-05, + 1.011626978166058278e-05, + 1.007038161670895512e-05, + 1.002448153772203095e-05, + 9.978569620535545867e-06, + 9.932645940996987196e-06, + 9.886710574967782746e-06, + 9.840763598312765392e-06, + 9.794805086922609290e-06, + 9.748835116685091744e-06, + 9.702853763507449794e-06, + 9.656861103307982729e-06, + 9.610857212008001887e-06, + 9.564842165551822327e-06, + 9.518816039888433036e-06, + 9.472778910973473905e-06, + 9.426730854779151092e-06, + 9.380671947288102817e-06, + 9.334602264485086573e-06, + 9.288521882379249320e-06, + 9.242430876975553679e-06, + 9.196329324296941387e-06, + 9.150217300376186543e-06, + 9.104094881247567575e-06, + 9.057962142967053732e-06, + 9.011819161594015947e-06, + 8.965666013192873467e-06, + 8.919502773843422579e-06, + 8.873329519634495715e-06, + 8.827146326655552111e-06, + 8.780953271017253933e-06, + 8.734750428832631651e-06, + 8.688537876219213480e-06, + 8.642315689309088131e-06, + 8.596083944240541207e-06, + 8.549842717160059286e-06, + 8.503592084224120547e-06, + 8.457332121591071720e-06, + 8.411062905433110221e-06, + 8.364784511930114361e-06, + 8.318497017261278047e-06, + 8.272200497625544605e-06, + 8.225895029222916156e-06, + 8.179580688256515286e-06, + 8.133257550942593595e-06, + 8.086925693502310390e-06, + 8.040585192163584303e-06, + 7.994236123163026215e-06, + 7.947878562737636644e-06, + 7.901512587136992854e-06, + 7.855138272614890332e-06, + 7.808755695431231672e-06, + 7.762364931852070623e-06, + 7.715966058151331561e-06, + 7.669559150602562784e-06, + 7.623144285491182058e-06, + 7.576721539106050342e-06, + 7.530290987741426733e-06, + 7.483852707696877837e-06, + 7.437406775279198840e-06, + 7.390953266794023647e-06, + 7.344492258558079750e-06, + 7.298023826890794138e-06, + 7.251548048116326171e-06, + 7.205064998565337037e-06, + 7.158574754566789619e-06, + 7.112077392460082249e-06, + 7.065572988586724911e-06, + 7.019061619292285723e-06, + 6.972543360926158005e-06, + 6.926018289843723599e-06, + 6.879486482397710595e-06, + 6.832948014950649792e-06, + 6.786402963866406916e-06, + 6.739851405512093520e-06, + 6.693293416258054285e-06, + 6.646729072479691523e-06, + 6.600158450549149860e-06, + 6.553581626847535529e-06, + 6.506998677756584108e-06, + 6.460409679660552792e-06, + 6.413814708948162642e-06, + 6.367213842004292575e-06, + 6.320607155220056519e-06, + 6.273994724994843066e-06, + 6.227376627717537599e-06, + 6.180752939787100960e-06, + 6.134123737604163491e-06, + 6.087489097562619081e-06, + 6.040849096072286686e-06, + 5.994203809529739362e-06, + 5.947553314341061496e-06, + 5.900897686913355610e-06, + 5.854237003648427727e-06, + 5.807571340953048332e-06, + 5.760900775240836172e-06, + 5.714225382913545600e-06, + 5.667545240381657954e-06, + 5.620860424055940865e-06, + 5.574171010339072803e-06, + 5.527477075646134492e-06, + 5.480778696386028398e-06, + 5.434075948963217688e-06, + 5.387368909788114241e-06, + 5.340657655270681009e-06, + 5.293942261811982861e-06, + 5.247222805826933658e-06, + 5.200499363715094787e-06, + 5.153772011883396820e-06, + 5.107040826737672578e-06, + 5.060305884674307073e-06, + 5.013567262100736558e-06, + 4.966825035416843445e-06, + 4.920079281016685948e-06, + 4.873330075298930987e-06, + 4.826577494660393023e-06, + 4.779821615487678072e-06, + 4.733062514179797797e-06, + 4.686300267119093406e-06, + 4.639534950693919193e-06, + 4.592766641288064790e-06, + 4.545995415282788898e-06, + 4.499221349056660886e-06, + 4.452444518987512358e-06, + 4.405665001444030349e-06, + 4.358882872798050317e-06, + 4.312098209418250828e-06, + 4.265311087661694239e-06, + 4.218521583894453640e-06, + 4.171729774472853623e-06, + 4.124935735745361700e-06, + 4.078139544062893309e-06, + 4.031341275770340637e-06, + 3.984541007208558911e-06, + 3.937738814716345915e-06, + 3.890934774621903899e-06, + 3.844128963255290962e-06, + 3.797321456939932086e-06, + 3.750512331994589339e-06, + 3.703701664733229312e-06, + 3.656889531466963246e-06, + 3.610076008495676655e-06, + 3.563261172120285047e-06, + 3.516445098634347869e-06, + 3.469627864326034901e-06, + 3.422809545477943290e-06, + 3.375990218369132975e-06, + 3.329169959266615276e-06, + 3.282348844437750488e-06, + 3.235526950141777555e-06, + 3.188704352631808833e-06, + 3.141881128156740147e-06, + 3.095057352952823662e-06, + 3.048233103256037525e-06, + 3.001408455293641376e-06, + 2.954583485286115203e-06, + 2.907758269447044567e-06, + 2.860932883985089112e-06, + 2.814107405095518159e-06, + 2.767281908972577815e-06, + 2.720456471801059605e-06, + 2.673631169758218577e-06, + 2.626806079013717400e-06, + 2.579981275731506776e-06, + 2.533156836061427534e-06, + 2.486332836151567567e-06, + 2.439509352139791079e-06, + 2.392686460155726997e-06, + 2.345864236322719266e-06, + 2.299042756749343807e-06, + 2.252222097539734705e-06, + 2.205402334795551011e-06, + 2.158583544597069278e-06, + 2.111765803023903679e-06, + 2.064949186146578029e-06, + 2.018133770018035976e-06, + 1.971319630696460063e-06, + 1.924506844215934327e-06, + 1.877695486609326884e-06, + 1.830885633899742530e-06, + 1.784077362094191160e-06, + 1.737270747193883672e-06, + 1.690465865196198564e-06, + 1.643662792075780179e-06, + 1.596861603805267088e-06, + 1.550062376346850768e-06, + 1.503265185643785159e-06, + 1.456470107641134732e-06, + 1.409677218266874010e-06, + 1.362886593433846119e-06, + 1.316098309050099557e-06, + 1.269312441012458150e-06, + 1.222529065198098585e-06, + 1.175748257487349571e-06, + 1.128970093734373910e-06, + 1.082194649789990738e-06, + 1.035422001493211982e-06, + 9.886522246627682050e-07, + 9.418853951178542552e-07, + 8.951215886592257061e-07, + 8.483608810711792233e-07, + 8.016033481318318371e-07, + 7.548490656067691493e-07, + 7.080981092405630386e-07, + 6.613505547795958110e-07, + 6.146064779427425891e-07, + 5.678659544441899566e-07, + 5.211290599828825626e-07, + 4.743958702444914677e-07, + 4.276664609012875653e-07, + 3.809409076141074925e-07, + 3.342192860238931468e-07, + 2.875016717640750965e-07, + 2.407881404521159093e-07, + 1.940787676914678842e-07, + 1.473736290714585954e-07, + 1.006728001692445481e-07, + 5.397635654136255363e-08, + 7.284373736103924986e-09, +-3.940307271493807507e-08, +-8.608590729490749163e-08, +-1.327640544997242604e-07, +-1.794374388465364218e-07, +-2.261059848613455489e-07, +-2.727696170874591829e-07, +-3.194282600835290260e-07, +-3.660818384236726487e-07, +-4.127302766955118945e-07, +-4.593734995086236479e-07, +-5.060114314821681772e-07, +-5.526439972533392407e-07, +-5.992711214753995532e-07, +-6.458927288178114931e-07, +-6.925087439642624046e-07, +-7.391190916211232798e-07, +-7.857236965050749842e-07, +-8.323224833515603747e-07, +-8.789153769128169602e-07, +-9.255023019559216313e-07, +-9.720831832712335672e-07, +-1.018657945660032320e-06, +-1.065226513942952778e-06, +-1.111788812958040172e-06, +-1.158344767560857852e-06, +-1.204894302622532979e-06, +-1.251437343038202494e-06, +-1.297973813714638822e-06, +-1.344503639578704312e-06, +-1.391026745575388456e-06, +-1.437543056665845097e-06, +-1.484052497835832270e-06, +-1.530554994085436416e-06, +-1.577050470427120401e-06, +-1.623538851904540984e-06, +-1.670020063571885026e-06, +-1.716494030502318643e-06, +-1.762960677794318354e-06, +-1.809419930561418807e-06, +-1.855871713930253803e-06, +-1.902315953059368262e-06, +-1.948752573118561418e-06, +-1.995181499297322422e-06, +-2.041602656813257472e-06, +-2.088015970889364555e-06, +-2.134421366783226858e-06, +-2.180818769764286455e-06, +-2.227208105122268893e-06, +-2.273589298173545682e-06, +-2.319962274250847504e-06, +-2.366326958701354150e-06, +-2.412683276905419882e-06, +-2.459031154256021447e-06, +-2.505370516167119984e-06, +-2.551701288082101288e-06, +-2.598023395451087608e-06, +-2.644336763760066682e-06, +-2.690641318508227684e-06, +-2.736936985218405557e-06, +-2.783223689433125373e-06, +-2.829501356725010672e-06, +-2.875769912674141003e-06, +-2.922029282897185196e-06, +-2.968279393024727561e-06, +-3.014520168709657753e-06, +-3.060751535635575451e-06, +-3.106973419496234142e-06, +-3.153185746014253772e-06, +-3.199388440939182313e-06, +-3.245581430037271225e-06, +-3.291764639097814230e-06, +-3.337937993941500324e-06, +-3.384101420397847131e-06, +-3.430254844334182976e-06, +-3.476398191633078119e-06, +-3.522531388200766380e-06, +-3.568654359975422767e-06, +-3.614767032906750407e-06, +-3.660869332974567412e-06, +-3.706961186186949340e-06, +-3.753042518569972041e-06, +-3.799113256176115080e-06, +-3.845173325082298308e-06, +-3.891222651390018240e-06, +-3.937261161223381662e-06, +-3.983288780737498038e-06, +-4.029305436106197108e-06, +-4.075311053530406886e-06, +-4.121305559236227517e-06, +-4.167288879472953445e-06, +-4.213260940521443797e-06, +-4.259221668681909864e-06, +-4.305170990282238890e-06, +-4.351108831676054368e-06, +-4.397035119242860884e-06, +-4.442949779386046809e-06, +-4.488852738541292802e-06, +-4.534743923164305919e-06, +-4.580623259739204397e-06, +-4.626490674776527124e-06, +-4.672346094811348990e-06, +-4.718189446411560637e-06, +-4.764020656165695748e-06, +-4.809839650691274318e-06, +-4.855646356632825683e-06, +-4.901440700662023197e-06, +-4.947222609475780100e-06, +-4.992992009804538587e-06, +-5.038748828400064906e-06, +-5.084492992043836679e-06, +-5.130224427544976989e-06, +-5.175943061740566938e-06, +-5.221648821493515355e-06, +-5.267341633701004563e-06, +-5.313021425282241436e-06, +-5.358688123186833707e-06, +-5.404341654392768102e-06, +-5.449981945904562958e-06, +-5.495608924761543740e-06, +-5.541222518027682028e-06, +-5.586822652789749836e-06, +-5.632409256175784082e-06, +-5.677982255334754408e-06, +-5.723541577444898835e-06, +-5.769087149719919805e-06, +-5.814618899396866527e-06, +-5.860136753744448612e-06, +-5.905640640061019280e-06, +-5.951130485674811686e-06, +-5.996606217941906887e-06, +-6.042067764256643876e-06, +-6.087515052029226577e-06, +-6.132948008714373879e-06, +-6.178366561789138391e-06, +-6.223770638760977817e-06, +-6.269160167174165300e-06, +-6.314535074599612321e-06, +-6.359895288632964574e-06, +-6.405240736913096922e-06, +-6.450571347101778685e-06, +-6.495887046892010979e-06, +-6.541187764016242094e-06, +-6.586473426224106617e-06, +-6.631743961311000091e-06, +-6.676999297095902842e-06, +-6.722239361431534215e-06, +-6.767464082200526522e-06, +-6.812673387325572500e-06, +-6.857867204747334688e-06, +-6.903045462452866773e-06, +-6.948208088453494172e-06, +-6.993355010792961639e-06, +-7.038486157555719794e-06, +-7.083601456846729308e-06, +-7.128700836809854233e-06, +-7.173784225625879937e-06, +-7.218851551502601974e-06, +-7.263902742682938970e-06, +-7.308937727443056438e-06, +-7.353956434090534650e-06, +-7.398958790972432389e-06, +-7.443944726463354798e-06, +-7.488914168971664668e-06, +-7.533867046947539423e-06, +-7.578803288863048896e-06, +-7.623722823230338593e-06, +-7.668625578599769604e-06, +-7.713511483549891429e-06, +-7.758380466695687842e-06, +-7.803232456686640578e-06, +-7.848067382206866545e-06, +-7.892885171973112058e-06, +-7.937685754743114742e-06, +-7.982469059303406260e-06, +-8.027235014477738598e-06, +-8.071983549124883472e-06, +-8.116714592137019577e-06, +-8.161428072447686228e-06, +-8.206123919019958776e-06, +-8.250802060854461545e-06, +-8.295462426987621247e-06, +-8.340104946491744910e-06, +-8.384729548473003938e-06, +-8.429336162079775695e-06, +-8.473924716490502130e-06, +-8.518495140921982233e-06, +-8.563047364627391671e-06, +-8.607581316894458279e-06, +-8.652096927053574941e-06, +-8.696594124465770030e-06, +-8.741072838531033738e-06, +-8.785532998686273345e-06, +-8.829974534405482617e-06, +-8.874397375197851237e-06, +-8.918801450615845491e-06, +-8.963186690243398944e-06, +-9.007553023703916893e-06, +-9.051900380658428144e-06, +-9.096228690805761199e-06, +-9.140537883880579131e-06, +-9.184827889661455205e-06, +-9.229098637959146548e-06, +-9.273350058624463087e-06, +-9.317582081546639552e-06, +-9.361794636651299208e-06, +-9.405987653908485423e-06, +-9.450161063322927562e-06, +-9.494314794932157191e-06, +-9.538448778824492274e-06, +-9.582562945119191196e-06, +-9.626657223974621549e-06, +-9.670731545594311331e-06, +-9.714785840215098959e-06, +-9.758820038115174997e-06, +-9.802834069612323720e-06, +-9.846827865063840100e-06, +-9.890801354864837435e-06, +-9.934754469458193212e-06, +-9.978687139312792219e-06, +-1.002259929495156503e-05, +-1.006649086692959219e-05, +-1.011036178584220187e-05, +-1.015421198233112272e-05, +-1.019804138707457185e-05, +-1.024184993078543713e-05, +-1.028563754422927325e-05, +-1.032940415820439815e-05, +-1.037314970355009224e-05, +-1.041687411115469951e-05, +-1.046057731193369948e-05, +-1.050425923685778634e-05, +-1.054791981693107655e-05, +-1.059155898319910984e-05, +-1.063517666675500547e-05, +-1.067877279872956720e-05, +-1.072234731028950624e-05, +-1.076590013265522379e-05, +-1.080943119708129546e-05, +-1.085294043486441642e-05, +-1.089642777735131776e-05, +-1.093989315591931018e-05, +-1.098333650199407501e-05, +-1.102675774704769915e-05, +-1.107015682258910864e-05, +-1.111353366017186987e-05, +-1.115688819139250057e-05, +-1.120022034788847927e-05, +-1.124353006134626506e-05, +-1.128681726348970842e-05, +-1.133008188608583143e-05, +-1.137332386095294909e-05, +-1.141654311994116045e-05, +-1.145973959495005672e-05, +-1.150291321792685606e-05, +-1.154606392085667966e-05, +-1.158919163577069853e-05, +-1.163229629474396502e-05, +-1.167537782989381711e-05, +-1.171843617338771338e-05, +-1.176147125743158466e-05, +-1.180448301427778765e-05, +-1.184747137622323638e-05, +-1.189043627560963258e-05, +-1.193337764482137861e-05, +-1.197629541629371407e-05, +-1.201918952250099622e-05, +-1.206205989596458586e-05, +-1.210490646925114992e-05, +-1.214772917497263938e-05, +-1.219052794578443768e-05, +-1.223330271439332625e-05, +-1.227605341354588178e-05, +-1.231877997603639606e-05, +-1.236148233470487690e-05, +-1.240416042243552695e-05, +-1.244681417216421613e-05, +-1.248944351686731102e-05, +-1.253204838956934222e-05, +-1.257462872334115942e-05, +-1.261718445130009076e-05, +-1.265971550660818429e-05, +-1.270222182247981947e-05, +-1.274470333217048904e-05, +-1.278715996898446298e-05, +-1.282959166627296230e-05, +-1.287199835743440131e-05, +-1.291437997591235302e-05, +-1.295673645520352991e-05, +-1.299906772884631171e-05, +-1.304137373042837715e-05, +-1.308365439358516406e-05, +-1.312590965199785854e-05, +-1.316813943940120795e-05, +-1.321034368957402570e-05, +-1.325252233633748195e-05, +-1.329467531357223902e-05, +-1.333680255519967954e-05, +-1.337890399518945852e-05, +-1.342097956756532420e-05, +-1.346302920639402867e-05, +-1.350505284579263102e-05, +-1.354705041992714881e-05, +-1.358902186301230574e-05, +-1.363096710930995607e-05, +-1.367288609313860195e-05, +-1.371477874885255979e-05, +-1.375664501086868410e-05, +-1.379848481364570504e-05, +-1.384029809169170937e-05, +-1.388208477957009848e-05, +-1.392384481189002709e-05, +-1.396557812330493113e-05, +-1.400728464852927693e-05, +-1.404896432232002646e-05, +-1.409061707948431485e-05, +-1.413224285488673826e-05, +-1.417384158342924866e-05, +-1.421541320007713242e-05, +-1.425695763983880848e-05, +-1.429847483777309425e-05, +-1.433996472899529239e-05, +-1.438142724866757527e-05, +-1.442286233199744848e-05, +-1.446426991425465926e-05, +-1.450564993075251947e-05, +-1.454700231685550852e-05, +-1.458832700798686112e-05, +-1.462962393960994439e-05, +-1.467089304724532730e-05, +-1.471213426646876807e-05, +-1.475334753290219163e-05, +-1.479453278222110788e-05, +-1.483568995015298036e-05, +-1.487681897247526618e-05, +-1.491791978502320703e-05, +-1.495899232367856026e-05, +-1.500003652437545020e-05, +-1.504105232310774580e-05, +-1.508203965591058513e-05, +-1.512299845887739400e-05, +-1.516392866815788356e-05, +-1.520483021994900568e-05, +-1.524570305050239837e-05, +-1.528654709612270018e-05, +-1.532736229316583582e-05, +-1.536814857804631588e-05, +-1.540890588722648458e-05, +-1.544963415722381785e-05, +-1.549033332460922582e-05, +-1.553100332600732390e-05, +-1.557164409809437959e-05, +-1.561225557760605092e-05, +-1.565283770132630054e-05, +-1.569339040609482247e-05, +-1.573391362880545647e-05, +-1.577440730640607282e-05, +-1.581487137589707143e-05, +-1.585530577433864253e-05, +-1.589571043883984341e-05, +-1.593608530656624199e-05, +-1.597643031473790090e-05, +-1.601674540062789350e-05, +-1.605703050156957138e-05, +-1.609728555494558685e-05, +-1.613751049819569239e-05, +-1.617770526881454179e-05, +-1.621786980435210347e-05, +-1.625800404241182072e-05, +-1.629810792065796397e-05, +-1.633818137680494802e-05, +-1.637822434862445722e-05, +-1.641823677394389040e-05, +-1.645821859064657764e-05, +-1.649816973666977117e-05, +-1.653809015001227536e-05, +-1.657797976872334730e-05, +-1.661783853091038102e-05, +-1.665766637473699996e-05, +-1.669746323842133585e-05, +-1.673722906024337076e-05, +-1.677696377853618557e-05, +-1.681666733168393044e-05, +-1.685633965813841656e-05, +-1.689598069640102686e-05, +-1.693559038503002760e-05, +-1.697516866264632483e-05, +-1.701471546792221581e-05, +-1.705423073958920536e-05, +-1.709371441643618990e-05, +-1.713316643730751937e-05, +-1.717258674111043086e-05, +-1.721197526680626988e-05, +-1.725133195340852534e-05, +-1.729065673999938727e-05, +-1.732994956571169148e-05, +-1.736921036973608888e-05, +-1.740843909132689001e-05, +-1.744763566979289668e-05, +-1.748680004449570122e-05, +-1.752593215486600368e-05, +-1.756503194038585124e-05, +-1.760409934059574991e-05, +-1.764313429510198965e-05, +-1.768213674355707118e-05, +-1.772110662568472051e-05, +-1.776004388126052578e-05, +-1.779894845011906250e-05, +-1.783782027216093073e-05, +-1.787665928733542134e-05, +-1.791546543565635896e-05, +-1.795423865720045874e-05, +-1.799297889209853748e-05, +-1.803168608054096859e-05, +-1.807036016278488184e-05, +-1.810900107913466803e-05, +-1.814760876996696990e-05, +-1.818618317571118337e-05, +-1.822472423685848696e-05, +-1.826323189396025952e-05, +-1.830170608762792436e-05, +-1.834014675853142462e-05, +-1.837855384740642300e-05, +-1.841692729504360550e-05, +-1.845526704229439035e-05, +-1.849357303007765011e-05, +-1.853184519936255416e-05, +-1.857008349118444886e-05, +-1.860828784664282130e-05, +-1.864645820689312373e-05, +-1.868459451315350578e-05, +-1.872269670670332028e-05, +-1.876076472888149022e-05, +-1.879879852109341709e-05, +-1.883679802480081315e-05, +-1.887476318152682089e-05, +-1.891269393286325342e-05, +-1.895059022045314566e-05, +-1.898845198600654976e-05, +-1.902627917129879023e-05, +-1.906407171816208170e-05, +-1.910182956849245089e-05, +-1.913955266424790697e-05, +-1.917724094744884143e-05, +-1.921489436017620521e-05, +-1.925251284457851536e-05, +-1.929009634286166697e-05, +-1.932764479729578392e-05, +-1.936515815021372814e-05, +-1.940263634400949701e-05, +-1.944007932114492847e-05, +-1.947748702413963149e-05, +-1.951485939557820280e-05, +-1.955219637810813642e-05, +-1.958949791444018277e-05, +-1.962676394734661736e-05, +-1.966399441966843381e-05, +-1.970118927430468473e-05, +-1.973834845421989503e-05, +-1.977547190244209334e-05, +-1.981255956206140259e-05, +-1.984961137623685016e-05, +-1.988662728818616957e-05, +-1.992360724119295965e-05, +-1.996055117860471258e-05, +-1.999745904383319343e-05, +-2.003433078035259698e-05, +-2.007116633170664925e-05, +-2.010796564150000502e-05, +-2.014472865339682147e-05, +-2.018145531113584886e-05, +-2.021814555851398796e-05, +-2.025479933939265299e-05, +-2.029141659770331452e-05, +-2.032799727743716238e-05, +-2.036454132265224097e-05, +-2.040104867747153845e-05, +-2.043751928608168560e-05, +-2.047395309273946449e-05, +-2.051035004176378877e-05, +-2.054671007753397906e-05, +-2.058303314450468432e-05, +-2.061931918718976791e-05, +-2.065556815016855526e-05, +-2.069177997809120749e-05, +-2.072795461566879414e-05, +-2.076409200767997802e-05, +-2.080019209896941253e-05, +-2.083625483444778243e-05, +-2.087228015909040104e-05, +-2.090826801794544687e-05, +-2.094421835611579304e-05, +-2.098013111878242265e-05, +-2.101600625118626165e-05, +-2.105184369863467384e-05, +-2.108764340650832864e-05, +-2.112340532024496858e-05, +-2.115912938535397482e-05, +-2.119481554741482220e-05, +-2.123046375206928313e-05, +-2.126607394502621844e-05, +-2.130164607206802156e-05, +-2.133718007903304093e-05, +-2.137267591183838550e-05, +-2.140813351646210654e-05, +-2.144355283895117671e-05, +-2.147893382542035839e-05, +-2.151427642205195638e-05, +-2.154958057509461173e-05, +-2.158484623086928512e-05, +-2.162007333576037327e-05, +-2.165526183621994401e-05, +-2.169041167877479046e-05, +-2.172552281001007305e-05, +-2.176059517658403085e-05, +-2.179562872522662967e-05, +-2.183062340273099347e-05, +-2.186557915596064485e-05, +-2.190049593184755002e-05, +-2.193537367739074667e-05, +-2.197021233966272717e-05, +-2.200501186579985360e-05, +-2.203977220300771430e-05, +-2.207449329856682956e-05, +-2.210917509981745582e-05, +-2.214381755417357188e-05, +-2.217842060912155751e-05, +-2.221298421221234998e-05, +-2.224750831106773913e-05, +-2.228199285337890037e-05, +-2.231643778690667928e-05, +-2.235084305947974165e-05, +-2.238520861900125490e-05, +-2.241953441343920144e-05, +-2.245382039083321924e-05, +-2.248806649929262661e-05, +-2.252227268699520584e-05, +-2.255643890219352884e-05, +-2.259056509320543648e-05, +-2.262465120842075729e-05, +-2.265869719629939310e-05, +-2.269270300537176637e-05, +-2.272666858423698033e-05, +-2.276059388156941574e-05, +-2.279447884610939998e-05, +-2.282832342666943777e-05, +-2.286212757213279835e-05, +-2.289589123145190953e-05, +-2.292961435365483577e-05, +-2.296329688783593369e-05, +-2.299693878316219471e-05, +-2.303053998887153738e-05, +-2.306410045427329531e-05, +-2.309762012874648241e-05, +-2.313109896174595593e-05, +-2.316453690279493546e-05, +-2.319793390148365783e-05, +-2.323128990748302451e-05, +-2.326460487052946344e-05, +-2.329787874043120384e-05, +-2.333111146707263000e-05, +-2.336430300040568214e-05, +-2.339745329045567386e-05, +-2.343056228731974039e-05, +-2.346362994116589669e-05, +-2.349665620223862105e-05, +-2.352964102085182475e-05, +-2.356258434738694118e-05, +-2.359548613230704749e-05, +-2.362834632614168925e-05, +-2.366116487949264019e-05, +-2.369394174303912675e-05, +-2.372667686752838871e-05, +-2.375937020378186595e-05, +-2.379202170269395500e-05, +-2.382463131523184299e-05, +-2.385719899243433879e-05, +-2.388972468541904903e-05, +-2.392220834536642682e-05, +-2.395464992354044947e-05, +-2.398704937127254524e-05, +-2.401940663996727181e-05, +-2.405172168110870972e-05, +-2.408399444624532754e-05, +-2.411622488700375806e-05, +-2.414841295508717196e-05, +-2.418055860226784088e-05, +-2.421266178039212133e-05, +-2.424472244138576392e-05, +-2.427674053723836184e-05, +-2.430871602002355764e-05, +-2.434064884188338673e-05, +-2.437253895503385418e-05, +-2.440438631177103341e-05, +-2.443619086445653109e-05, +-2.446795256553057886e-05, +-2.449967136751084412e-05, +-2.453134722298507778e-05, +-2.456298008461538668e-05, +-2.459456990514452876e-05, +-2.462611663738107303e-05, +-2.465762023421271831e-05, +-2.468908064860493459e-05, +-2.472049783359368537e-05, +-2.475187174229144489e-05, +-2.478320232788552448e-05, +-2.481448954363695442e-05, +-2.484573334288637595e-05, +-2.487693367904514398e-05, +-2.490809050560009423e-05, +-2.493920377611897102e-05, +-2.497027344423657995e-05, +-2.500129946366734770e-05, +-2.503228178820427177e-05, +-2.506322037171152410e-05, +-2.509411516813062431e-05, +-2.512496613147862366e-05, +-2.515577321584723424e-05, +-2.518653637540828734e-05, +-2.521725556440515800e-05, +-2.524793073715885015e-05, +-2.527856184806640081e-05, +-2.530914885160109347e-05, +-2.533969170231109954e-05, +-2.537019035482482814e-05, +-2.540064476384308262e-05, +-2.543105488414469837e-05, +-2.546142067058461165e-05, +-2.549174207809471330e-05, +-2.552201906168169400e-05, +-2.555225157643352228e-05, +-2.558243957751078792e-05, +-2.561258302015183492e-05, +-2.564268185967255484e-05, +-2.567273605146394396e-05, +-2.570274555099831372e-05, +-2.573271031382109146e-05, +-2.576263029555597034e-05, +-2.579250545190407928e-05, +-2.582233573864378646e-05, +-2.585212111162941517e-05, +-2.588186152679685122e-05, +-2.591155694015539782e-05, +-2.594120730779321697e-05, +-2.597081258587599113e-05, +-2.600037273064732300e-05, +-2.602988769842702114e-05, +-2.605935744561669378e-05, +-2.608878192869214585e-05, +-2.611816110420793602e-05, +-2.614749492879699721e-05, +-2.617678335916883073e-05, +-2.620602635211511367e-05, +-2.623522386450305471e-05, +-2.626437585327391015e-05, +-2.629348227545560472e-05, +-2.632254308814876227e-05, +-2.635155824853272654e-05, +-2.638052771387037562e-05, +-2.640945144149407821e-05, +-2.643832938882404371e-05, +-2.646716151335362787e-05, +-2.649594777265526887e-05, +-2.652468812438418030e-05, +-2.655338252627141571e-05, +-2.658203093612335698e-05, +-2.661063331183324753e-05, +-2.663918961136786339e-05, +-2.666769979277325951e-05, +-2.669616381418002469e-05, +-2.672458163378993581e-05, +-2.675295320988802289e-05, +-2.678127850084143752e-05, +-2.680955746509247663e-05, +-2.683779006116316669e-05, +-2.686597624766032895e-05, +-2.689411598326111547e-05, +-2.692220922673131865e-05, +-2.695025593691170005e-05, +-2.697825607272222900e-05, +-2.700620959316835738e-05, +-2.703411645732722317e-05, +-2.706197662436012215e-05, +-2.708979005351080368e-05, +-2.711755670409921620e-05, +-2.714527653552545103e-05, +-2.717294950727491262e-05, +-2.720057557890426126e-05, +-2.722815471005935993e-05, +-2.725568686046135933e-05, +-2.728317198991314204e-05, +-2.731061005829798761e-05, +-2.733800102557971490e-05, +-2.736534485180151650e-05, +-2.739264149709088174e-05, +-2.741989092165236978e-05, +-2.744709308577117393e-05, +-2.747424794981841728e-05, +-2.750135547423844388e-05, +-2.752841561956037895e-05, +-2.755542834639689568e-05, +-2.758239361543776759e-05, +-2.760931138745518449e-05, +-2.763618162330252600e-05, +-2.766300428391318248e-05, +-2.768977933030534243e-05, +-2.771650672357496556e-05, +-2.774318642490052950e-05, +-2.776981839554192193e-05, +-2.779640259684065400e-05, +-2.782293899021837973e-05, +-2.784942753718210018e-05, +-2.787586819931677396e-05, +-2.790226093829025028e-05, +-2.792860571585212384e-05, +-2.795490249383392114e-05, +-2.798115123414772487e-05, +-2.800735189879115453e-05, +-2.803350444984027503e-05, +-2.805960884945413338e-05, +-2.808566505987424714e-05, +-2.811167304342254776e-05, +-2.813763276250730308e-05, +-2.816354417961509083e-05, +-2.818940725731600619e-05, +-2.821522195826252336e-05, +-2.824098824518958030e-05, +-2.826670608091330476e-05, +-2.829237542833579495e-05, +-2.831799625043844492e-05, +-2.834356851028609501e-05, +-2.836909217102642539e-05, +-2.839456719588986794e-05, +-2.841999354818825106e-05, +-2.844537119131992583e-05, +-2.847070008876250531e-05, +-2.849598020407767904e-05, +-2.852121150091014578e-05, +-2.854639394298641076e-05, +-2.857152749411975262e-05, +-2.859661211820383007e-05, +-2.862164777921231930e-05, +-2.864663444120892934e-05, +-2.867157206833614329e-05, +-2.869646062481960594e-05, +-2.872130007497318902e-05, +-2.874609038318568942e-05, +-2.877083151393795279e-05, +-2.879552343178934813e-05, +-2.882016610138300920e-05, +-2.884475948744912445e-05, +-2.886930355479913986e-05, +-2.889379826832491876e-05, +-2.891824359300898745e-05, +-2.894263949391290383e-05, +-2.896698593618231583e-05, +-2.899128288505114237e-05, +-2.901553030583072459e-05, +-2.903972816391943453e-05, +-2.906387642480232625e-05, +-2.908797505404507098e-05, +-2.911202401729732497e-05, +-2.913602328029763549e-05, +-2.915997280886078617e-05, +-2.918387256889394145e-05, +-2.920772252638383263e-05, +-2.923152264740189435e-05, +-2.925527289810816423e-05, +-2.927897324474072893e-05, +-2.930262365362529896e-05, +-2.932622409117469371e-05, +-2.934977452388272924e-05, +-2.937327491832814852e-05, +-2.939672524117855506e-05, +-2.942012545917882887e-05, +-2.944347553916634258e-05, +-2.946677544805878109e-05, +-2.949002515285991494e-05, +-2.951322462065854665e-05, +-2.953637381862839206e-05, +-2.955947271402692504e-05, +-2.958252127420043931e-05, +-2.960551946657654041e-05, +-2.962846725866955305e-05, +-2.965136461807870181e-05, +-2.967421151248860909e-05, +-2.969700790966822791e-05, +-2.971975377747477210e-05, +-2.974244908384791249e-05, +-2.976509379681379177e-05, +-2.978768788448387937e-05, +-2.981023131505425991e-05, +-2.983272405680973286e-05, +-2.985516607811740896e-05, +-2.987755734743136550e-05, +-2.989989783329100652e-05, +-2.992218750432189961e-05, +-2.994442632923403105e-05, +-2.996661427682654582e-05, +-2.998875131598110008e-05, +-3.001083741566647916e-05, +-3.003287254493752697e-05, +-3.005485667293464788e-05, +-3.007678976888374580e-05, +-3.009867180209963936e-05, +-3.012050274198025128e-05, +-3.014228255801058607e-05, +-3.016401121976192360e-05, +-3.018568869689072478e-05, +-3.020731495914297850e-05, +-3.022888997634760498e-05, +-3.025041371842136510e-05, +-3.027188615536686487e-05, +-3.029330725727370397e-05, +-3.031467699431647674e-05, +-3.033599533675973242e-05, +-3.035726225495124971e-05, +-3.037847771932667174e-05, +-3.039964170040806949e-05, +-3.042075416880339291e-05, +-3.044181509521015044e-05, +-3.046282445041077067e-05, +-3.048378220527134190e-05, +-3.050468833075080084e-05, +-3.052554279789121877e-05, +-3.054634557782112193e-05, +-3.056709664175945562e-05, +-3.058779596100982102e-05, +-3.060844350696018378e-05, +-3.062903925109131727e-05, +-3.064958316496706507e-05, +-3.067007522023863710e-05, +-3.069051538864829597e-05, +-3.071090364201859623e-05, +-3.073123995226632313e-05, +-3.075152429139143379e-05, +-3.077175663148150922e-05, +-3.079193694471422758e-05, +-3.081206520335277676e-05, +-3.083214137974485137e-05, +-3.085216544633148910e-05, +-3.087213737563736026e-05, +-3.089205714027467095e-05, +-3.091192471294716102e-05, +-3.093174006643935694e-05, +-3.095150317363006335e-05, +-3.097121400748230704e-05, +-3.099087254104735534e-05, +-3.101047874746378771e-05, +-3.103003259996126338e-05, +-3.104953407185096002e-05, +-3.106898313653861808e-05, +-3.108837976751386136e-05, +-3.110772393835441185e-05, +-3.112701562272950502e-05, +-3.114625479439122967e-05, +-3.116544142718218519e-05, +-3.118457549503487840e-05, +-3.120365697196719707e-05, +-3.122268583208531690e-05, +-3.124166204958710998e-05, +-3.126058559875227857e-05, +-3.127945645395527742e-05, +-3.129827458965506805e-05, +-3.131703998039885928e-05, +-3.133575260082614586e-05, +-3.135441242565907940e-05, +-3.137301942971099290e-05, +-3.139157358788548599e-05, +-3.141007487517188479e-05, +-3.142852326664911797e-05, +-3.144691873748446990e-05, +-3.146526126293364839e-05, +-3.148355081834054080e-05, +-3.150178737913987028e-05, +-3.151997092085262182e-05, +-3.153810141908924743e-05, +-3.155617884954898172e-05, +-3.157420318801889322e-05, +-3.159217441037759778e-05, +-3.161009249258974949e-05, +-3.162795741070980823e-05, +-3.164576914088105717e-05, +-3.166352765933565016e-05, +-3.168123294239402223e-05, +-3.169888496646797274e-05, +-3.171648370805576621e-05, +-3.173402914374564914e-05, +-3.175152125021476584e-05, +-3.176896000422871119e-05, +-3.178634538264436989e-05, +-3.180367736240562030e-05, +-3.182095592054624828e-05, +-3.183818103418924238e-05, +-3.185535268054669227e-05, +-3.187247083691928726e-05, +-3.188953548069931818e-05, +-3.190654658936613054e-05, +-3.192350414048904505e-05, +-3.194040811172689688e-05, +-3.195725848082788656e-05, +-3.197405522562861099e-05, +-3.199079832405808850e-05, +-3.200748775413172126e-05, +-3.202412349395576078e-05, +-3.204070552172572230e-05, +-3.205723381572586302e-05, +-3.207370835433265153e-05, +-3.209012911601039032e-05, +-3.210649607931074828e-05, +-3.212280922287967245e-05, +-3.213906852544975794e-05, +-3.215527396584339214e-05, +-3.217142552297486889e-05, +-3.218752317584593650e-05, +-3.220356690354920620e-05, +-3.221955668526674265e-05, +-3.223549250027053835e-05, +-3.225137432792189013e-05, +-3.226720214767492967e-05, +-3.228297593906827507e-05, +-3.229869568173591359e-05, +-3.231436135539882614e-05, +-3.232997293986785369e-05, +-3.234553041504629252e-05, +-3.236103376092578786e-05, +-3.237648295758583918e-05, +-3.239187798520064423e-05, +-3.240721882403136057e-05, +-3.242250545442949366e-05, +-3.243773785683955321e-05, +-3.245291601179101646e-05, +-3.246803989990876369e-05, +-3.248310950190502121e-05, +-3.249812479858287147e-05, +-3.251308577083512143e-05, +-3.252799239964754838e-05, +-3.254284466609136476e-05, +-3.255764255133324699e-05, +-3.257238603662711588e-05, +-3.258707510331730118e-05, +-3.260170973284161116e-05, +-3.261628990672383813e-05, +-3.263081560658032457e-05, +-3.264528681411958374e-05, +-3.265970351113801700e-05, +-3.267406567952373570e-05, +-3.268837330125496868e-05, +-3.270262635840007589e-05, +-3.271682483311996747e-05, +-3.273096870766404481e-05, +-3.274505796437241634e-05, +-3.275909258567844543e-05, +-3.277307255410213000e-05, +-3.278699785225622145e-05, +-3.280086846284543185e-05, +-3.281468436866310682e-05, +-3.282844555259415283e-05, +-3.284215199761406144e-05, +-3.285580368678925491e-05, +-3.286940060327611716e-05, +-3.288294273032403635e-05, +-3.289643005127096636e-05, +-3.290986254954655075e-05, +-3.292324020867120786e-05, +-3.293656301225554811e-05, +-3.294983094400319294e-05, +-3.296304398770668188e-05, +-3.297620212724996629e-05, +-3.298930534660812471e-05, +-3.300235362984711213e-05, +-3.301534696112319762e-05, +-3.302828532468560701e-05, +-3.304116870487266045e-05, +-3.305399708611441513e-05, +-3.306677045293195382e-05, +-3.307948878993665297e-05, +-3.309215208183303558e-05, +-3.310476031341472571e-05, +-3.311731346956713192e-05, +-3.312981153526666124e-05, +-3.314225449558120022e-05, +-3.315464233566888847e-05, +-3.316697504078083597e-05, +-3.317925259625774842e-05, +-3.319147498753195340e-05, +-3.320364220012712929e-05, +-3.321575421965789870e-05, +-3.322781103183009276e-05, +-3.323981262244201827e-05, +-3.325175897738189625e-05, +-3.326365008262950862e-05, +-3.327548592425611684e-05, +-3.328726648842365556e-05, +-3.329899176138717207e-05, +-3.331066172949187861e-05, +-3.332227637917272551e-05, +-3.333383569695917161e-05, +-3.334533966947029863e-05, +-3.335678828341601056e-05, +-3.336818152559961539e-05, +-3.337951938291419982e-05, +-3.339080184234462153e-05, +-3.340202889096750908e-05, +-3.341320051595055729e-05, +-3.342431670455275075e-05, +-3.343537744412659332e-05, +-3.344638272211217879e-05, +-3.345733252604503788e-05, +-3.346822684354997180e-05, +-3.347906566234330197e-05, +-3.348984897023471994e-05, +-3.350057675512403482e-05, +-3.351124900500120031e-05, +-3.352186570795113270e-05, +-3.353242685214778836e-05, +-3.354293242585705049e-05, +-3.355338241743841633e-05, +-3.356377681533923062e-05, +-3.357411560810227499e-05, +-3.358439878435966257e-05, +-3.359462633283537226e-05, +-3.360479824234666505e-05, +-3.361491450180093297e-05, +-3.362497510019622771e-05, +-3.363498002662517047e-05, +-3.364492927027001211e-05, +-3.365482282040448305e-05, +-3.366466066639653084e-05, +-3.367444279770226905e-05, +-3.368416920387154050e-05, +-3.369383987454643327e-05, +-3.370345479945960023e-05, +-3.371301396843585821e-05, +-3.372251737139169331e-05, +-3.373196499833498312e-05, +-3.374135683936678562e-05, +-3.375069288467835764e-05, +-3.375997312455292345e-05, +-3.376919754936724011e-05, +-3.377836614958731480e-05, +-3.378747891577196246e-05, +-3.379653583857296833e-05, +-3.380553690873249270e-05, +-3.381448211708508342e-05, +-3.382337145455679501e-05, +-3.383220491216549358e-05, +-3.384098248102190040e-05, +-3.384970415232742345e-05, +-3.385836991737570923e-05, +-3.386697976755211417e-05, +-3.387553369433400283e-05, +-3.388403168929027352e-05, +-3.389247374408281522e-05, +-3.390085985046393938e-05, +-3.390919000027876515e-05, +-3.391746418546376249e-05, +-3.392568239804763308e-05, +-3.393384463015038197e-05, +-3.394195087398520818e-05, +-3.395000112185590259e-05, +-3.395799536615870464e-05, +-3.396593359938167891e-05, +-3.397381581410430180e-05, +-3.398164200299939273e-05, +-3.398941215883012580e-05, +-3.399712627445238119e-05, +-3.400478434281373549e-05, +-3.401238635695370561e-05, +-3.401993231000330158e-05, +-3.402742219518674094e-05, +-3.403485600581904994e-05, +-3.404223373530731035e-05, +-3.404955537715072727e-05, +-3.405682092494053423e-05, +-3.406403037235922746e-05, +-3.407118371318251072e-05, +-3.407828094127704553e-05, +-3.408532205060159641e-05, +-3.409230703520702406e-05, +-3.409923588923547902e-05, +-3.410610860692263780e-05, +-3.411292518259486365e-05, +-3.411968561066962670e-05, +-3.412638988565851259e-05, +-3.413303800216357009e-05, +-3.413962995487886283e-05, +-3.414616573859131639e-05, +-3.415264534817873278e-05, +-3.415906877861137617e-05, +-3.416543602495132907e-05, +-3.417174708235214001e-05, +-3.417800194606078864e-05, +-3.418420061141481936e-05, +-3.419034307384326293e-05, +-3.419642932886881161e-05, +-3.420245937210486471e-05, +-3.420843319925656541e-05, +-3.421435080612223047e-05, +-3.422021218859129711e-05, +-3.422601734264426194e-05, +-3.423176626435528989e-05, +-3.423745894988928682e-05, +-3.424309539550309895e-05, +-3.424867559754668511e-05, +-3.425419955245975577e-05, +-3.425966725677591330e-05, +-3.426507870711986015e-05, +-3.427043390020777832e-05, +-3.427573283284877952e-05, +-3.428097550194346855e-05, +-3.428616190448300819e-05, +-3.429129203755266320e-05, +-3.429636589832799206e-05, +-3.430138348407682562e-05, +-3.430634479215979567e-05, +-3.431124982002731948e-05, +-3.431609856522395695e-05, +-3.432089102538456171e-05, +-3.432562719823653081e-05, +-3.433030708159880861e-05, +-3.433493067338238826e-05, +-3.433949797158963402e-05, +-3.434400897431573820e-05, +-3.434846367974675604e-05, +-3.435286208616050014e-05, +-3.435720419192802449e-05, +-3.436148999551005340e-05, +-3.436571949546017308e-05, +-3.436989269042448606e-05, +-3.437400957913980872e-05, +-3.437807016043507396e-05, +-3.438207443323093820e-05, +-3.438602239653963227e-05, +-3.438991404946587622e-05, +-3.439374939120534112e-05, +-3.439752842104560449e-05, +-3.440125113836635363e-05, +-3.440491754263854529e-05, +-3.440852763342483944e-05, +-3.441208141038028359e-05, +-3.441557887325078820e-05, +-3.441902002187435989e-05, +-3.442240485618063396e-05, +-3.442573337619087432e-05, +-3.442900558201789221e-05, +-3.443222147386656117e-05, +-3.443538105203307846e-05, +-3.443848431690523610e-05, +-3.444153126896256994e-05, +-3.444452190877579043e-05, +-3.444745623700840221e-05, +-3.445033425441419006e-05, +-3.445315596183924503e-05, +-3.445592136022090056e-05, +-3.445863045058819324e-05, +-3.446128323406165959e-05, +-3.446387971185353250e-05, +-3.446641988526761251e-05, +-3.446890375569875960e-05, +-3.447133132463380797e-05, +-3.447370259365099685e-05, +-3.447601756441969942e-05, +-3.447827623870128343e-05, +-3.448047861834844710e-05, +-3.448262470530503619e-05, +-3.448471450160658604e-05, +-3.448674800937986089e-05, +-3.448872523084347717e-05, +-3.449064616830717855e-05, +-3.449251082417152415e-05, +-3.449431920092949457e-05, +-3.449607130116471649e-05, +-3.449776712755247909e-05, +-3.449940668285926651e-05, +-3.450098996994300859e-05, +-3.450251699175273522e-05, +-3.450398775132904397e-05, +-3.450540225180320558e-05, +-3.450676049639882416e-05, +-3.450806248842993982e-05, +-3.450930823130167924e-05, +-3.451049772851114329e-05, +-3.451163098364618058e-05, +-3.451270800038567203e-05, +-3.451372878250021531e-05, +-3.451469333385112192e-05, +-3.451560165839074923e-05, +-3.451645376016316457e-05, +-3.451724964330310166e-05, +-3.451798931203642145e-05, +-3.451867277068031533e-05, +-3.451930002364263434e-05, +-3.451987107542276329e-05, +-3.452038593061075339e-05, +-3.452084459388792535e-05, +-3.452124707002649667e-05, +-3.452159336388954100e-05, +-3.452188348043127951e-05, +-3.452211742469693182e-05, +-3.452229520182249913e-05, +-3.452241681703477783e-05, +-3.452248227565200996e-05, +-3.452249158308271773e-05, +-3.452244474482664541e-05, +-3.452234176647429176e-05, +-3.452218265370689650e-05, +-3.452196741229657582e-05, +-3.452169604810636301e-05, +-3.452136856708971387e-05, +-3.452098497529142141e-05, +-3.452054527884648429e-05, +-3.452004948398075730e-05, +-3.451949759701115466e-05, +-3.451888962434465391e-05, +-3.451822557247927171e-05, +-3.451750544800374530e-05, +-3.451672925759713276e-05, +-3.451589700802933477e-05, +-3.451500870616081674e-05, +-3.451406435894251401e-05, +-3.451306397341588600e-05, +-3.451200755671304500e-05, +-3.451089511605645799e-05, +-3.450972665875914994e-05, +-3.450850219222475801e-05, +-3.450722172394700979e-05, +-3.450588526151032639e-05, +-3.450449281258947005e-05, +-3.450304438494944929e-05, +-3.450153998644592550e-05, +-3.449997962502444041e-05, +-3.449836330872131738e-05, +-3.449669104566293628e-05, +-3.449496284406580808e-05, +-3.449317871223705594e-05, +-3.449133865857360886e-05, +-3.448944269156302834e-05, +-3.448749081978259363e-05, +-3.448548305190010129e-05, +-3.448341939667329601e-05, +-3.448129986295027041e-05, +-3.447912445966869931e-05, +-3.447689319585693071e-05, +-3.447460608063276607e-05, +-3.447226312320457838e-05, +-3.446986433287019410e-05, +-3.446740971901795700e-05, +-3.446489929112573209e-05, +-3.446233305876147479e-05, +-3.445971103158299378e-05, +-3.445703321933795099e-05, +-3.445429963186383450e-05, +-3.445151027908803309e-05, +-3.444866517102772102e-05, +-3.444576431778981061e-05, +-3.444280772957090481e-05, +-3.443979541665752759e-05, +-3.443672738942559538e-05, +-3.443360365834086432e-05, +-3.443042423395886926e-05, +-3.442718912692422582e-05, +-3.442389834797191108e-05, +-3.442055190792597612e-05, +-3.441714981770000679e-05, +-3.441369208829727955e-05, +-3.441017873081051077e-05, +-3.440660975642160601e-05, +-3.440298517640237152e-05, +-3.439930500211370784e-05, +-3.439556924500600287e-05, +-3.439177791661903697e-05, +-3.438793102858152219e-05, +-3.438402859261192217e-05, +-3.438007062051780168e-05, +-3.437605712419604338e-05, +-3.437198811563248874e-05, +-3.436786360690261563e-05, +-3.436368361017046093e-05, +-3.435944813768973180e-05, +-3.435515720180285025e-05, +-3.435081081494152910e-05, +-3.434640898962650096e-05, +-3.434195173846702354e-05, +-3.433743907416228236e-05, +-3.433287100949981862e-05, +-3.432824755735584094e-05, +-3.432356873069591653e-05, +-3.431883454257458492e-05, +-3.431404500613444321e-05, +-3.430920013460785366e-05, +-3.430429994131510731e-05, +-3.429934443966577926e-05, +-3.429433364315835598e-05, +-3.428926756537883935e-05, +-3.428414622000332170e-05, +-3.427896962079585126e-05, +-3.427373778160868964e-05, +-3.426845071638324021e-05, +-3.426310843914950600e-05, +-3.425771096402502580e-05, +-3.425225830521703578e-05, +-3.424675047702077548e-05, +-3.424118749381920316e-05, +-3.423556937008442560e-05, +-3.422989612037652580e-05, +-3.422416775934417288e-05, +-3.421838430172428322e-05, +-3.421254576234141062e-05, +-3.420665215610889826e-05, +-3.420070349802835016e-05, +-3.419469980318862152e-05, +-3.418864108676808195e-05, +-3.418252736403209476e-05, +-3.417635865033420955e-05, +-3.417013496111620963e-05, +-3.416385631190773259e-05, +-3.415752271832648033e-05, +-3.415113419607814453e-05, +-3.414469076095555286e-05, +-3.413819242884009872e-05, +-3.413163921570092817e-05, +-3.412503113759472978e-05, +-3.411836821066599218e-05, +-3.411165045114701762e-05, +-3.410487787535715619e-05, +-3.409805049970428991e-05, +-3.409116834068326055e-05, +-3.408423141487668963e-05, +-3.407723973895465989e-05, +-3.407019332967503377e-05, +-3.406309220388234216e-05, +-3.405593637850930222e-05, +-3.404872587057570610e-05, +-3.404146069718850224e-05, +-3.403414087554250693e-05, +-3.402676642291894055e-05, +-3.401933735668697263e-05, +-3.401185369430272570e-05, +-3.400431545330949218e-05, +-3.399672265133740225e-05, +-3.398907530610437941e-05, +-3.398137343541441925e-05, +-3.397361705715915475e-05, +-3.396580618931713128e-05, +-3.395794084995365747e-05, +-3.395002105722106273e-05, +-3.394204682935871758e-05, +-3.393401818469206463e-05, +-3.392593514163399419e-05, +-3.391779771868399721e-05, +-3.390960593442817204e-05, +-3.390135980753970562e-05, +-3.389305935677736905e-05, +-3.388470460098715753e-05, +-3.387629555910251391e-05, +-3.386783225014155727e-05, +-3.385931469321000340e-05, +-3.385074290750030430e-05, +-3.384211691229004217e-05, +-3.383343672694412489e-05, +-3.382470237091363412e-05, +-3.381591386373553385e-05, +-3.380707122503359203e-05, +-3.379817447451745896e-05, +-3.378922363198211167e-05, +-3.378021871731055084e-05, +-3.377115975046995867e-05, +-3.376204675151441617e-05, +-3.375287974058415776e-05, +-3.374365873790422280e-05, +-3.373438376378711868e-05, +-3.372505483863052361e-05, +-3.371567198291725958e-05, +-3.370623521721686442e-05, +-3.369674456218448727e-05, +-3.368720003855975016e-05, +-3.367760166717039368e-05, +-3.366794946892696434e-05, +-3.365824346482734791e-05, +-3.364848367595487207e-05, +-3.363867012347674111e-05, +-3.362880282864805421e-05, +-3.361888181280783458e-05, +-3.360890709737989005e-05, +-3.359887870387466975e-05, +-3.358879665388740741e-05, +-3.357866096909740988e-05, +-3.356847167127130971e-05, +-3.355822878225988030e-05, +-3.354793232399788688e-05, +-3.353758231850653264e-05, +-3.352717878789152083e-05, +-3.351672175434355612e-05, +-3.350621124013864957e-05, +-3.349564726763653297e-05, +-3.348502985928279339e-05, +-3.347435903760795833e-05, +-3.346363482522556455e-05, +-3.345285724483625090e-05, +-3.344202631922416687e-05, +-3.343114207125712174e-05, +-3.342020452388885457e-05, +-3.340921370015704876e-05, +-3.339816962318390130e-05, +-3.338707231617634634e-05, +-3.337592180242461185e-05, +-3.336471810530434063e-05, +-3.335346124827512658e-05, +-3.334215125488059606e-05, +-3.333078814874882123e-05, +-3.331937195359226583e-05, +-3.330790269320624020e-05, +-3.329638039147128653e-05, +-3.328480507235156608e-05, +-3.327317675989533357e-05, +-3.326149547823448313e-05, +-3.324976125158538178e-05, +-3.323797410424669428e-05, +-3.322613406060247307e-05, +-3.321424114511964431e-05, +-3.320229538234893620e-05, +-3.319029679692531945e-05, +-3.317824541356574402e-05, +-3.316614125707206644e-05, +-3.315398435232917279e-05, +-3.314177472430550049e-05, +-3.312951239805266560e-05, +-3.311719739870598459e-05, +-3.310482975148295643e-05, +-3.309240948168544461e-05, +-3.307993661469802365e-05, +-3.306741117598859583e-05, +-3.305483319110778801e-05, +-3.304220268569004945e-05, +-3.302951968545123946e-05, +-3.301678421619140563e-05, +-3.300399630379335404e-05, +-3.299115597422237826e-05, +-3.297826325352705889e-05, +-3.296531816783744080e-05, +-3.295232074336701850e-05, +-3.293927100641350195e-05, +-3.292616898335399856e-05, +-3.291301470065045458e-05, +-3.289980818484693101e-05, +-3.288654946256796375e-05, +-3.287323856052437766e-05, +-3.285987550550512791e-05, +-3.284646032438385941e-05, +-3.283299304411641315e-05, +-3.281947369173893560e-05, +-3.280590229437119914e-05, +-3.279227887921599890e-05, +-3.277860347355561558e-05, +-3.276487610475594899e-05, +-3.275109680026478331e-05, +-3.273726558760984228e-05, +-3.272338249440371558e-05, +-3.270944754833908833e-05, +-3.269546077718926284e-05, +-3.268142220881081495e-05, +-3.266733187114200155e-05, +-3.265318979220014500e-05, +-3.263899600008813830e-05, +-3.262475052298628649e-05, +-3.261045338915849337e-05, +-3.259610462694987628e-05, +-3.258170426478462474e-05, +-3.256725233117178746e-05, +-3.255274885469934304e-05, +-3.253819386403556204e-05, +-3.252358738793138544e-05, +-3.250892945521867633e-05, +-3.249422009480782797e-05, +-3.247945933569460094e-05, +-3.246464720695071775e-05, +-3.244978373773187239e-05, +-3.243486895727319019e-05, +-3.241990289489079315e-05, +-3.240488557998117656e-05, +-3.238981704202222538e-05, +-3.237469731057030729e-05, +-3.235952641526398601e-05, +-3.234430438582235442e-05, +-3.232903125204230363e-05, +-3.231370704380458783e-05, +-3.229833179106837612e-05, +-3.228290552387182849e-05, +-3.226742827233486735e-05, +-3.225190006665683290e-05, +-3.223632093711722177e-05, +-3.222069091407581576e-05, +-3.220501002797071673e-05, +-3.218927830932129426e-05, +-3.217349578872625443e-05, +-3.215766249686402605e-05, +-3.214177846449257095e-05, +-3.212584372244998705e-05, +-3.210985830165213667e-05, +-3.209382223309614984e-05, +-3.207773554785788326e-05, +-3.206159827709261818e-05, +-3.204541045203484361e-05, +-3.202917210399883907e-05, +-3.201288326437621478e-05, +-3.199654396463970640e-05, +-3.198015423634017991e-05, +-3.196371411110766837e-05, +-3.194722362065173109e-05, +-3.193068279675879051e-05, +-3.191409167129617089e-05, +-3.189745027620906256e-05, +-3.188075864352142986e-05, +-3.186401680533595704e-05, +-3.184722479383462416e-05, +-3.183038264127563069e-05, +-3.181349037999764423e-05, +-3.179654804241738140e-05, +-3.177955566102954682e-05, +-3.176251326840786991e-05, +-3.174542089720231304e-05, +-3.172827858014306277e-05, +-3.171108635003746699e-05, +-3.169384423977111907e-05, +-3.167655228230745814e-05, +-3.165921051068861604e-05, +-3.164181895803217155e-05, +-3.162437765753528388e-05, +-3.160688664247471980e-05, +-3.158934594620065332e-05, +-3.157175560214367239e-05, +-3.155411564381189218e-05, +-3.153642610478812262e-05, +-3.151868701873748491e-05, +-3.150089841939733522e-05, +-3.148306034058553172e-05, +-3.146517281619670768e-05, +-3.144723588020076029e-05, +-3.142924956664594748e-05, +-3.141121390965992465e-05, +-3.139312894344276512e-05, +-3.137499470227440049e-05, +-3.135681122051158485e-05, +-3.133857853258506233e-05, +-3.132029667300714293e-05, +-3.130196567636189049e-05, +-3.128358557731271894e-05, +-3.126515641059891598e-05, +-3.124667821103696455e-05, +-3.122815101351659897e-05, +-3.120957485300933631e-05, +-3.119094976455763431e-05, +-3.117227578328298231e-05, +-3.115355294438319067e-05, +-3.113478128312897560e-05, +-3.111596083487174505e-05, +-3.109709163503644296e-05, +-3.107817371912237602e-05, +-3.105920712270695411e-05, +-3.104019188144347449e-05, +-3.102112803105742874e-05, +-3.100201560735580655e-05, +-3.098285464621533894e-05, +-3.096364518359148352e-05, +-3.094438725551435204e-05, +-3.092508089808942181e-05, +-3.090572614749740026e-05, +-3.088632303999503125e-05, +-3.086687161191152399e-05, +-3.084737189965412317e-05, +-3.082782393970377889e-05, +-3.080822776861653580e-05, +-3.078858342302360086e-05, +-3.076889093963132302e-05, +-3.074915035521875377e-05, +-3.072936170664177386e-05, +-3.070952503083015922e-05, +-3.068964036478837373e-05, +-3.066970774559584032e-05, +-3.064972721040431852e-05, +-3.062969879644208542e-05, +-3.060962254101102191e-05, +-3.058949848148712086e-05, +-3.056932665532046002e-05, +-3.054910710003611008e-05, +-3.052883985323068548e-05, +-3.050852495257704044e-05, +-3.048816243582126362e-05, +-3.046775234078314911e-05, +-3.044729470535614561e-05, +-3.042678956750827796e-05, +-3.040623696527863370e-05, +-3.038563693678216401e-05, +-3.036498952020670898e-05, +-3.034429475381334991e-05, +-3.032355267593725640e-05, +-3.030276332498437950e-05, +-3.028192673943631030e-05, +-3.026104295784691215e-05, +-3.024011201884315748e-05, +-3.021913396112483648e-05, +-3.019810882346571915e-05, +-3.017703664470944221e-05, +-3.015591746377528916e-05, +-3.013475131965416863e-05, +-3.011353825140981034e-05, +-3.009227829817903620e-05, +-3.007097149916875502e-05, +-3.004961789365991642e-05, +-3.002821752100845958e-05, +-3.000677042063746287e-05, +-2.998527663204522120e-05, +-2.996373619480267441e-05, +-2.994214914854982602e-05, +-2.992051553300049000e-05, +-2.989883538794306666e-05, +-2.987710875323247548e-05, +-2.985533566879887621e-05, +-2.983351617464407741e-05, +-2.981165031083803652e-05, +-2.978973811752834663e-05, +-2.976777963492798840e-05, +-2.974577490332460674e-05, +-2.972372396307754281e-05, +-2.970162685461445607e-05, +-2.967948361843592535e-05, +-2.965729429511655677e-05, +-2.963505892529629318e-05, +-2.961277754968989756e-05, +-2.959045020908273476e-05, +-2.956807694432749521e-05, +-2.954565779635411535e-05, +-2.952319280615662151e-05, +-2.950068201480309784e-05, +-2.947812546343167470e-05, +-2.945552319325149429e-05, +-2.943287524553832307e-05, +-2.941018166164505152e-05, +-2.938744248298793836e-05, +-2.936465775105725603e-05, +-2.934182750741331984e-05, +-2.931895179368258821e-05, +-2.929603065156725106e-05, +-2.927306412283644103e-05, +-2.925005224932703647e-05, +-2.922699507294857079e-05, +-2.920389263568022727e-05, +-2.918074497956689182e-05, +-2.915755214672943935e-05, +-2.913431417935158450e-05, +-2.911103111969023905e-05, +-2.908770301007141578e-05, +-2.906432989288651499e-05, +-2.904091181060169613e-05, +-2.901744880574955651e-05, +-2.899394092092923974e-05, +-2.897038819881197195e-05, +-2.894679068213664363e-05, +-2.892314841371086676e-05, +-2.889946143641092735e-05, +-2.887572979318266299e-05, +-2.885195352703744112e-05, +-2.882813268105781384e-05, +-2.880426729839378417e-05, +-2.878035742226368358e-05, +-2.875640309595492417e-05, +-2.873240436282001759e-05, +-2.870836126628233828e-05, +-2.868427384983249814e-05, +-2.866014215702880058e-05, +-2.863596623149727095e-05, +-2.861174611693271711e-05, +-2.858748185709457889e-05, +-2.856317349581275909e-05, +-2.853882107698363569e-05, +-2.851442464457119004e-05, +-2.848998424260751171e-05, +-2.846549991518883778e-05, +-2.844097170648183782e-05, +-2.841639966071889760e-05, +-2.839178382219984364e-05, +-2.836712423529107925e-05, +-2.834242094442683478e-05, +-2.831767399410541012e-05, +-2.829288342889456866e-05, +-2.826804929342755619e-05, +-2.824317163240439520e-05, +-2.821825049059145798e-05, +-2.819328591282251691e-05, +-2.816827794399438055e-05, +-2.814322662907348021e-05, +-2.811813201309106214e-05, +-2.809299414114459364e-05, +-2.806781305839830851e-05, +-2.804258881007954453e-05, +-2.801732144148324287e-05, +-2.799201099797329317e-05, +-2.796665752497295193e-05, +-2.794126106797536940e-05, +-2.791582167253908679e-05, +-2.789033938428469217e-05, +-2.786481424890157639e-05, +-2.783924631214311179e-05, +-2.781363561982792273e-05, +-2.778798221783958068e-05, +-2.776228615212799334e-05, +-2.773654746870345169e-05, +-2.771076621364869513e-05, +-2.768494243310369539e-05, +-2.765907617327737606e-05, +-2.763316748044328597e-05, +-2.760721640093607889e-05, +-2.758122298115733438e-05, +-2.755518726757600159e-05, +-2.752910930671877021e-05, +-2.750298914518094302e-05, +-2.747682682962191604e-05, +-2.745062240676052673e-05, +-2.742437592338774243e-05, +-2.739808742635000779e-05, +-2.737175696256244489e-05, +-2.734538457900259872e-05, +-2.731897032271275811e-05, +-2.729251424079418231e-05, +-2.726601638041946770e-05, +-2.723947678881680649e-05, +-2.721289551328183166e-05, +-2.718627260117385615e-05, +-2.715960809991048230e-05, +-2.713290205697913167e-05, +-2.710615451992676549e-05, +-2.707936553636094171e-05, +-2.705253515395549012e-05, +-2.702566342044572837e-05, +-2.699875038362959013e-05, +-2.697179609136859417e-05, +-2.694480059158336181e-05, +-2.691776393226028819e-05, +-2.689068616144805584e-05, +-2.686356732725279987e-05, +-2.683640747784978004e-05, +-2.680920666147268783e-05, +-2.678196492641514060e-05, +-2.675468232103583497e-05, +-2.672735889375399990e-05, +-2.669999469305061644e-05, +-2.667258976746951550e-05, +-2.664514416561242777e-05, +-2.661765793614604119e-05, +-2.659013112779722710e-05, +-2.656256378935409392e-05, +-2.653495596966583470e-05, +-2.650730771764407901e-05, +-2.647961908225772597e-05, +-2.645189011254022541e-05, +-2.642412085758462102e-05, +-2.639631136654463790e-05, +-2.636846168863487235e-05, +-2.634057187313142541e-05, +-2.631264196936744073e-05, +-2.628467202674000954e-05, +-2.625666209470520706e-05, +-2.622861222277948840e-05, +-2.620052246054052546e-05, +-2.617239285762268034e-05, +-2.614422346372345635e-05, +-2.611601432859937471e-05, +-2.608776550206657078e-05, +-2.605947703400094320e-05, +-2.603114897433912963e-05, +-2.600278137307380745e-05, +-2.597437428026057164e-05, +-2.594592774601326253e-05, +-2.591744182050489083e-05, +-2.588891655396766803e-05, +-2.586035199669426348e-05, +-2.583174819903231894e-05, +-2.580310521139244802e-05, +-2.577442308424253049e-05, +-2.574570186810946741e-05, +-2.571694161357996713e-05, +-2.568814237129539535e-05, +-2.565930419195827354e-05, +-2.563042712633303112e-05, +-2.560151122523524135e-05, +-2.557255653954326635e-05, +-2.554356312019396774e-05, +-2.551453101817821055e-05, +-2.548546028454872712e-05, +-2.545635097041471298e-05, +-2.542720312694310422e-05, +-2.539801680535867573e-05, +-2.536879205694498308e-05, +-2.533952893303788783e-05, +-2.531022748503967249e-05, +-2.528088776440100884e-05, +-2.525150982263482560e-05, +-2.522209371131127026e-05, +-2.519263948205368057e-05, +-2.516314718654488652e-05, +-2.513361687652829787e-05, +-2.510404860379674707e-05, +-2.507444242020456793e-05, +-2.504479837766280482e-05, +-2.501511652813392377e-05, +-2.498539692364573097e-05, +-2.495563961627335459e-05, +-2.492584465815321414e-05, +-2.489601210147822285e-05, +-2.486614199849312217e-05, +-2.483623440150126485e-05, +-2.480628936286589906e-05, +-2.477630693499808625e-05, +-2.474628717036999963e-05, +-2.471623012150926934e-05, +-2.468613584099375118e-05, +-2.465600438146477760e-05, +-2.462583579561488251e-05, +-2.459563013618926155e-05, +-2.456538745599230441e-05, +-2.453510780788196373e-05, +-2.450479124477133403e-05, +-2.447443781962947837e-05, +-2.444404758547653926e-05, +-2.441362059539111130e-05, +-2.438315690250644641e-05, +-2.435265656000505316e-05, +-2.432211962113175465e-05, +-2.429154613918161322e-05, +-2.426093616750147876e-05, +-2.423028975949619246e-05, +-2.419960696862327078e-05, +-2.416888784839428783e-05, +-2.413813245237594261e-05, +-2.410734083418469902e-05, +-2.407651304749470388e-05, +-2.404564914603231853e-05, +-2.401474918357750793e-05, +-2.398381321396350188e-05, +-2.395284129107820442e-05, +-2.392183346885874920e-05, +-2.389078980129934968e-05, +-2.385971034244593918e-05, +-2.382859514639728893e-05, +-2.379744426730519440e-05, +-2.376625775937544097e-05, +-2.373503567686229479e-05, +-2.370377807407685790e-05, +-2.367248500538115261e-05, +-2.364115652518964270e-05, +-2.360979268797035833e-05, +-2.357839354823964781e-05, +-2.354695916056964502e-05, +-2.351548957958357689e-05, +-2.348398485995619367e-05, +-2.345244505641427035e-05, +-2.342087022373748762e-05, +-2.338926041675311586e-05, +-2.335761569034411618e-05, +-2.332593609944344157e-05, +-2.329422169903541925e-05, +-2.326247254415558129e-05, +-2.323068868989188772e-05, +-2.319887019137934276e-05, +-2.316701710380809247e-05, +-2.313512948241751589e-05, +-2.310320738249805117e-05, +-2.307125085939194440e-05, +-2.303925996848804541e-05, +-2.300723476522837399e-05, +-2.297517530510935656e-05, +-2.294308164366967969e-05, +-2.291095383650350385e-05, +-2.287879193925523887e-05, +-2.284659600761503100e-05, +-2.281436609732719590e-05, +-2.278210226418442503e-05, +-2.274980456402910691e-05, +-2.271747305275466554e-05, +-2.268510778629982420e-05, +-2.265270882065555119e-05, +-2.262027621186634389e-05, +-2.258781001601757073e-05, +-2.255531028924930150e-05, +-2.252277708775059841e-05, +-2.249021046775532152e-05, +-2.245761048554898974e-05, +-2.242497719747012255e-05, +-2.239231065989736504e-05, +-2.235961092926354871e-05, +-2.232687806205008749e-05, +-2.229411211478095700e-05, +-2.226131314403854766e-05, +-2.222848120644315629e-05, +-2.219561635866915770e-05, +-2.216271865743871968e-05, +-2.212978815951759494e-05, +-2.209682492172233107e-05, +-2.206382900092135473e-05, +-2.203080045402203577e-05, +-2.199773933798507324e-05, +-2.196464570981850514e-05, +-2.193151962657198932e-05, +-2.189836114535227362e-05, +-2.186517032330332114e-05, +-2.183194721762184818e-05, +-2.179869188554988391e-05, +-2.176540438437639331e-05, +-2.173208477143702980e-05, +-2.169873310411551422e-05, +-2.166534943983767852e-05, +-2.163193383608010546e-05, +-2.159848635036586297e-05, +-2.156500704025825644e-05, +-2.153149596337548577e-05, +-2.149795317737746893e-05, +-2.146437873996702100e-05, +-2.143077270889720648e-05, +-2.139713514196537274e-05, +-2.136346609701460692e-05, +-2.132976563193470494e-05, +-2.129603380465680811e-05, +-2.126227067316159900e-05, +-2.122847629547351789e-05, +-2.119465072966230100e-05, +-2.116079403384260780e-05, +-2.112690626617536269e-05, +-2.109298748486228316e-05, +-2.105903774815390633e-05, +-2.102505711434415431e-05, +-2.099104564177119823e-05, +-2.095700338881802743e-05, +-2.092293041391319483e-05, +-2.088882677552508085e-05, +-2.085469253217072966e-05, +-2.082052774240977761e-05, +-2.078633246484562217e-05, +-2.075210675812717698e-05, +-2.071785068094258346e-05, +-2.068356429202798270e-05, +-2.064924765016175223e-05, +-2.061490081416544794e-05, +-2.058052384290432247e-05, +-2.054611679528815863e-05, +-2.051167973026533689e-05, +-2.047721270683189852e-05, +-2.044271578402526745e-05, +-2.040818902092567667e-05, +-2.037363247665627321e-05, +-2.033904621038410077e-05, +-2.030443028131439405e-05, +-2.026978474869932018e-05, +-2.023510967183183936e-05, +-2.020040511004716520e-05, +-2.016567112272415045e-05, +-2.013090776927914093e-05, +-2.009611510917354459e-05, +-2.006129320191501740e-05, +-2.002644210704390064e-05, +-1.999156188414820320e-05, +-1.995665259285761816e-05, +-1.992171429283851514e-05, +-1.988674704380321358e-05, +-1.985175090550375202e-05, +-1.981672593773338558e-05, +-1.978167220032775157e-05, +-1.974658975315898423e-05, +-1.971147865614295857e-05, +-1.967633896924093025e-05, +-1.964117075244566118e-05, +-1.960597406579635775e-05, +-1.957074896937285348e-05, +-1.953549552329061144e-05, +-1.950021378770833407e-05, +-1.946490382282947424e-05, +-1.942956568888826939e-05, +-1.939419944616500505e-05, +-1.935880515497983152e-05, +-1.932338287568631285e-05, +-1.928793266868856403e-05, +-1.925245459441926536e-05, +-1.921694871335671159e-05, +-1.918141508601847267e-05, +-1.914585377295520706e-05, +-1.911026483476580665e-05, +-1.907464833208354950e-05, +-1.903900432557765495e-05, +-1.900333287596055458e-05, +-1.896763404398339278e-05, +-1.893190789042983998e-05, +-1.889615447613271826e-05, +-1.886037386195242908e-05, +-1.882456610879385667e-05, +-1.878873127759850422e-05, +-1.875286942934587279e-05, +-1.871698062505350202e-05, +-1.868106492577829822e-05, +-1.864512239261016137e-05, +-1.860915308668154974e-05, +-1.857315706916218089e-05, +-1.853713440125313633e-05, +-1.850108514420220295e-05, +-1.846500935928967340e-05, +-1.842890710782984020e-05, +-1.839277845117872414e-05, +-1.835662345072770112e-05, +-1.832044216790499301e-05, +-1.828423466417704318e-05, +-1.824800100104226880e-05, +-1.821174124004028673e-05, +-1.817545544274714301e-05, +-1.813914367076873991e-05, +-1.810280598575685499e-05, +-1.806644244939442309e-05, +-1.803005312339742348e-05, +-1.799363806952217115e-05, +-1.795719734955950614e-05, +-1.792073102533570160e-05, +-1.788423915871274156e-05, +-1.784772181158957458e-05, +-1.781117904589577116e-05, +-1.777461092360097661e-05, +-1.773801750670833471e-05, +-1.770139885725608689e-05, +-1.766475503731899864e-05, +-1.762808610900195257e-05, +-1.759139213444916409e-05, +-1.755467317583814040e-05, +-1.751792929538070371e-05, +-1.748116055532318095e-05, +-1.744436701794789457e-05, +-1.740754874556646418e-05, +-1.737070580052947971e-05, +-1.733383824521988095e-05, +-1.729694614205456017e-05, +-1.726002955348578512e-05, +-1.722308854199469381e-05, +-1.718612317010084569e-05, +-1.714913350035559780e-05, +-1.711211959534383615e-05, +-1.707508151768354540e-05, +-1.703801933002761136e-05, +-1.700093309505699730e-05, +-1.696382287548899739e-05, +-1.692668873407853782e-05, +-1.688953073360351968e-05, +-1.685234893688108203e-05, +-1.681514340676078156e-05, +-1.677791420611982550e-05, +-1.674066139787250081e-05, +-1.670338504496379092e-05, +-1.666608521037072081e-05, +-1.662876195710394947e-05, +-1.659141534820120364e-05, +-1.655404544673517222e-05, +-1.651665231581522740e-05, +-1.647923601857241864e-05, +-1.644179661817584073e-05, +-1.640433417782597952e-05, +-1.636684876074963983e-05, +-1.632934043020975754e-05, +-1.629180924949861654e-05, +-1.625425528193942757e-05, +-1.621667859088629096e-05, +-1.617907923972568743e-05, +-1.614145729186801452e-05, +-1.610381281076591977e-05, +-1.606614585989074982e-05, +-1.602845650275084633e-05, +-1.599074480288473243e-05, +-1.595301082385435000e-05, +-1.591525462926166834e-05, +-1.587747628273345447e-05, +-1.583967584792302482e-05, +-1.580185338851828185e-05, +-1.576400896823666915e-05, +-1.572614265081854427e-05, +-1.568825450004510865e-05, +-1.565034457971520236e-05, +-1.561241295366356274e-05, +-1.557445968575377028e-05, +-1.553648483987183829e-05, +-1.549848847994246239e-05, +-1.546047066991408222e-05, +-1.542243147376039594e-05, +-1.538437095548868489e-05, +-1.534628917913439253e-05, +-1.530818620875482936e-05, +-1.527006210844531053e-05, +-1.523191694232425825e-05, +-1.519375077453476034e-05, +-1.515556366925260177e-05, +-1.511735569067987637e-05, +-1.507912690304614555e-05, +-1.504087737061015609e-05, +-1.500260715765318921e-05, +-1.496431632848868122e-05, +-1.492600494745746487e-05, +-1.488767307892056446e-05, +-1.484932078727625851e-05, +-1.481094813694453328e-05, +-1.477255519236880737e-05, +-1.473414201802425124e-05, +-1.469570867841086868e-05, +-1.465725523805515866e-05, +-1.461878176151162137e-05, +-1.458028831335591926e-05, +-1.454177495819492965e-05, +-1.450324176065990577e-05, +-1.446468878540784727e-05, +-1.442611609712179665e-05, +-1.438752376051196249e-05, +-1.434891184030922264e-05, +-1.431028040127490070e-05, +-1.427162950819414903e-05, +-1.423295922587717518e-05, +-1.419426961915951303e-05, +-1.415556075290340339e-05, +-1.411683269199081784e-05, +-1.407808550133384509e-05, +-1.403931924586755044e-05, +-1.400053399055141410e-05, +-1.396172980037142837e-05, +-1.392290674033268280e-05, +-1.388406487546965217e-05, +-1.384520427083944570e-05, +-1.380632499152309449e-05, +-1.376742710262568540e-05, +-1.372851066927786534e-05, +-1.368957575662882785e-05, +-1.365062242985663338e-05, +-1.361165075416110093e-05, +-1.357266079476549539e-05, +-1.353365261691636998e-05, +-1.349462628588527383e-05, +-1.345558186696162850e-05, +-1.341651942546300753e-05, +-1.337743902672822295e-05, +-1.333834073611873985e-05, +-1.329922461902047376e-05, +-1.326009074083671288e-05, +-1.322093916699671881e-05, +-1.318176996295714282e-05, +-1.314258319418653189e-05, +-1.310337892618256078e-05, +-1.306415722446477634e-05, +-1.302491815456959155e-05, +-1.298566178206019238e-05, +-1.294638817251994961e-05, +-1.290709739155370461e-05, +-1.286778950478772021e-05, +-1.282846457787139511e-05, +-1.278912267646844963e-05, +-1.274976386627586708e-05, +-1.271038821299954833e-05, +-1.267099578237321928e-05, +-1.263158664015146826e-05, +-1.259216085210254116e-05, +-1.255271848402578520e-05, +-1.251325960173582303e-05, +-1.247378427106414000e-05, +-1.243429255786768668e-05, +-1.239478452802363571e-05, +-1.235526024742214979e-05, +-1.231571978198562804e-05, +-1.227616319764406744e-05, +-1.223659056035411434e-05, +-1.219700193609206115e-05, +-1.215739739084668218e-05, +-1.211777699063669943e-05, +-1.207814080149476689e-05, +-1.203848888946935266e-05, +-1.199882132063312457e-05, +-1.195913816107770027e-05, +-1.191943947690662533e-05, +-1.187972533425262223e-05, +-1.183999579926181517e-05, +-1.180025093809527684e-05, +-1.176049081693782898e-05, +-1.172071550199081221e-05, +-1.168092505947370550e-05, +-1.164111955562588632e-05, +-1.160129905669939528e-05, +-1.156146362896939020e-05, +-1.152161333872878613e-05, +-1.148174825228116224e-05, +-1.144186843595807859e-05, +-1.140197395610333656e-05, +-1.136206487907439342e-05, +-1.132214127125136453e-05, +-1.128220319902954579e-05, +-1.124225072882128898e-05, +-1.120228392705752637e-05, +-1.116230286018074036e-05, +-1.112230759465527191e-05, +-1.108229819696027828e-05, +-1.104227473359138471e-05, +-1.100223727106042868e-05, +-1.096218587589732167e-05, +-1.092212061464274599e-05, +-1.088204155385865638e-05, +-1.084194876012116146e-05, +-1.080184230002210945e-05, +-1.076172224016900173e-05, +-1.072158864718672416e-05, +-1.068144158771020505e-05, +-1.064128112839506402e-05, +-1.060110733591037836e-05, +-1.056092027694032117e-05, +-1.052072001818581140e-05, +-1.048050662635738688e-05, +-1.044028016818567880e-05, +-1.040004071041416272e-05, +-1.035978831980095942e-05, +-1.031952306311851977e-05, +-1.027924500715557293e-05, +-1.023895421870962502e-05, +-1.019865076459765203e-05, +-1.015833471164890181e-05, +-1.011800612670646098e-05, +-1.007766507662727876e-05, +-1.003731162828370676e-05, +-9.996945848556314544e-06, +-9.956567804344546943e-06, +-9.916177562559353191e-06, +-9.875775190124918258e-06, +-9.835360753980380635e-06, +-9.794934321072478392e-06, +-9.754495958364492152e-06, +-9.714045732837815492e-06, +-9.673583711475824046e-06, +-9.633109961281620842e-06, +-9.592624549270777239e-06, +-9.552127542464029797e-06, +-9.511619007906929756e-06, +-9.471099012644620087e-06, +-9.430567623741430749e-06, +-9.390024908273533223e-06, +-9.349470933323685519e-06, +-9.308905765989783818e-06, +-9.268329473386714088e-06, +-9.227742122630112770e-06, +-9.187143780854156161e-06, +-9.146534515204177675e-06, +-9.105914392829581567e-06, +-9.065283480901552700e-06, +-9.024641846596740988e-06, +-8.983989557099094386e-06, +-8.943326679608596874e-06, +-8.902653281335835592e-06, +-8.861969429494712965e-06, +-8.821275191321997921e-06, +-8.780570634052257102e-06, +-8.739855824937294270e-06, +-8.699130831238992880e-06, +-8.658395720221928257e-06, +-8.617650559171355189e-06, +-8.576895415376773791e-06, +-8.536130356133671011e-06, +-8.495355448752458513e-06, +-8.454570760552912760e-06, +-8.413776358856849870e-06, +-8.372972311007859789e-06, +-8.332158684345971537e-06, +-8.291335546227277269e-06, +-8.250502964015002846e-06, +-8.209661005080991849e-06, +-8.168809736805749612e-06, +-8.127949226580061064e-06, +-8.087079541797594434e-06, +-8.046200749865787318e-06, +-8.005312918200230851e-06, +-7.964416114217290357e-06, +-7.923510405352147148e-06, +-7.882595859042361007e-06, +-7.841672542729593049e-06, +-7.800740523868558861e-06, +-7.759799869919591553e-06, +-7.718850648350491676e-06, +-7.677892926638077295e-06, +-7.636926772260914752e-06, +-7.595952252710061582e-06, +-7.554969435481706646e-06, +-7.513978388078850645e-06, +-7.472979178011222261e-06, +-7.431971872796963756e-06, +-7.390956539955278723e-06, +-7.349933247017209735e-06, +-7.308902061518230195e-06, +-7.267863051000024797e-06, +-7.226816283010304876e-06, +-7.185761825104517719e-06, +-7.144699744838534127e-06, +-7.103630109779397269e-06, +-7.062552987497913678e-06, +-7.021468445570427792e-06, +-6.980376551580461802e-06, +-6.939277373111382897e-06, +-6.898170977757195301e-06, +-6.857057433115097403e-06, +-6.815936806787285930e-06, +-6.774809166380770453e-06, +-6.733674579509107259e-06, +-6.692533113785015767e-06, +-6.651384836831189209e-06, +-6.610229816272900033e-06, +-6.569068119739692272e-06, +-6.527899814867079850e-06, +-6.486724969289231601e-06, +-6.445543650649710802e-06, +-6.404355926594059398e-06, +-6.363161864771656394e-06, +-6.321961532835404453e-06, +-6.280754998443565413e-06, +-6.239542329252367389e-06, +-6.198323592924927412e-06, +-6.157098857133059003e-06, +-6.115868189540668627e-06, +-6.074631657821898299e-06, +-6.033389329653823307e-06, +-5.992141272708883974e-06, +-5.950887554674932389e-06, +-5.909628243229585942e-06, +-5.868363406060133444e-06, +-5.827093110856204905e-06, +-5.785817425304097262e-06, +-5.744536417095859652e-06, +-5.703250153931001029e-06, +-5.661958703499873078e-06, +-5.620662133501917837e-06, +-5.579360511638206193e-06, +-5.538053905604006006e-06, +-5.496742383108810210e-06, +-5.455426011850604796e-06, +-5.414104859535898600e-06, +-5.372778993870433892e-06, +-5.331448482562754083e-06, +-5.290113393314970214e-06, +-5.248773793842722136e-06, +-5.207429751849484612e-06, +-5.166081335046588638e-06, +-5.124728611145831924e-06, +-5.083371647851877621e-06, +-5.042010512880703546e-06, +-5.000645273942829237e-06, +-4.959275998745058297e-06, +-4.917902754999588236e-06, +-4.876525610418373464e-06, +-4.835144632705709521e-06, +-4.793759889578225593e-06, +-4.752371448739145721e-06, +-4.710979377898365181e-06, +-4.669583744763131420e-06, +-4.628184617039805044e-06, +-4.586782062433723443e-06, +-4.545376148650940596e-06, +-4.503966943390769794e-06, +-4.462554514356679026e-06, +-4.421138929248857415e-06, +-4.379720255765915213e-06, +-4.338298561604815198e-06, +-4.296873914462550636e-06, +-4.255446382028696481e-06, +-4.214016031996373366e-06, +-4.172582932054725952e-06, +-4.131147149890657651e-06, +-4.089708753190621252e-06, +-4.048267809633069320e-06, +-4.006824386899424116e-06, +-3.965378552666619473e-06, +-3.923930374608794018e-06, +-3.882479920397225943e-06, +-3.841027257702018610e-06, +-3.799572454184664866e-06, +-3.758115577508945816e-06, +-3.716656695333499382e-06, +-3.675195875313513098e-06, +-3.633733185100643641e-06, +-3.592268692344724449e-06, +-3.550802464686318607e-06, +-3.509334569767614234e-06, +-3.467865075224993886e-06, +-3.426394048690738360e-06, +-3.384921557794784714e-06, +-3.343447670157196990e-06, +-3.301972453399195853e-06, +-3.260495975135579764e-06, +-3.219018302976527043e-06, +-3.177539504527466274e-06, +-3.136059647390809754e-06, +-3.094578799158457257e-06, +-3.053097027422774847e-06, +-3.011614399769079157e-06, +-2.970130983777412768e-06, +-2.928646847024233620e-06, +-2.887162057074945869e-06, +-2.845676681494879561e-06, +-2.804190787841764311e-06, +-2.762704443667500032e-06, +-2.721217716518020559e-06, +-2.679730673935041081e-06, +-2.638243383448574602e-06, +-2.596755912586019335e-06, +-2.555268328873946367e-06, +-2.513780699821327981e-06, +-2.472293092937922505e-06, +-2.430805575726753933e-06, +-2.389318215676643211e-06, +-2.347831080282394300e-06, +-2.306344237018830504e-06, +-2.264857753361004669e-06, +-2.223371696776708455e-06, +-2.181886134720814573e-06, +-2.140401134644403991e-06, +-2.098916763996501084e-06, +-2.057433090207346843e-06, +-2.015950180706761287e-06, +-1.974468102916640442e-06, +-1.932986924243457557e-06, +-1.891506712098480933e-06, +-1.850027533871795215e-06, +-1.808549456952523453e-06, +-1.767072548719475223e-06, +-1.725596876544718779e-06, +-1.684122507784271310e-06, +-1.642649509798259176e-06, +-1.601177949925004838e-06, +-1.559707895501191958e-06, +-1.518239413854393091e-06, +-1.476772572295553956e-06, +-1.435307438137377656e-06, +-1.393844078677574175e-06, +-1.352382561200610135e-06, +-1.310922952986824780e-06, +-1.269465321306785558e-06, +-1.228009733413799504e-06, +-1.186556256564103326e-06, +-1.145104957990922390e-06, +-1.103655904924650006e-06, +-1.062209164585375965e-06, +-1.020764804175371024e-06, +-9.793228908974615950e-07, +-9.378834919382980896e-07, +-8.964466744700809606e-07, +-8.550125056597001882e-07, +-8.135810526612354377e-07, +-7.721523826176930070e-07, +-7.307265626608957120e-07, +-6.893036599132297863e-07, +-6.478837414801366755e-07, +-6.064668744611022303e-07, +-5.650531259421404545e-07, +-5.236425629975560739e-07, +-4.822352526916618964e-07, +-4.408312620712984518e-07, +-3.994306581767962392e-07, +-3.580335080344890677e-07, +-3.166398786584483036e-07, +-2.752498370503741320e-07, +-2.338634502013372424e-07, +-1.924807850842857099e-07, +-1.511019086650101023e-07, +-1.097268878946563829e-07, +-6.835578971146071402e-08, +-2.698868104248880240e-08, + 1.437437120385385209e-08, + 5.573330012685718290e-08, + 9.708803884099605851e-08, + 1.384385204741921443e-07, + 1.797846781679214642e-07, + 2.211264450754774554e-07, + 2.624637543694572903e-07, + 3.037965392308006483e-07, + 3.451247328562761635e-07, + 3.864482684567451394e-07, + 4.277670792572675339e-07, + 4.690810984953673419e-07, + 5.103902594285105198e-07, + 5.516944953231558666e-07, + 5.929937394622322607e-07, + 6.342879251434073773e-07, + 6.755769856773401535e-07, + 7.168608543951834887e-07, + 7.581394646394454998e-07, + 7.994127497622770330e-07, + 8.406806431421586357e-07, + 8.819430781655729877e-07, + 9.231999882344915070e-07, + 9.644513067720032020e-07, + 1.005696967211366982e-06, + 1.046936903003497206e-06, + 1.088171047615205875e-06, + 1.129399334529343772e-06, + 1.170621697243028891e-06, + 1.211838069276985823e-06, + 1.253048384155384040e-06, + 1.294252575431739320e-06, + 1.335450576668739112e-06, + 1.376642321445745132e-06, + 1.417827743364390983e-06, + 1.459006776039515931e-06, + 1.500179353097407531e-06, + 1.541345408192487536e-06, + 1.582504874988991422e-06, + 1.623657687168477972e-06, + 1.664803778437249920e-06, + 1.705943082506243268e-06, + 1.747075533116900334e-06, + 1.788201064021008885e-06, + 1.829319608988204520e-06, + 1.870431101811557908e-06, + 1.911535476298517893e-06, + 1.952632666269150931e-06, + 1.993722605572813033e-06, + 2.034805228069869096e-06, + 2.075880467639145523e-06, + 2.116948258185381149e-06, + 2.158008533620980458e-06, + 2.199061227882628134e-06, + 2.240106274929586522e-06, + 2.281143608734589604e-06, + 2.322173163291307475e-06, + 2.363194872612614586e-06, + 2.404208670728857557e-06, + 2.445214491695322625e-06, + 2.486212269581272917e-06, + 2.527201938475651948e-06, + 2.568183432494425275e-06, + 2.609156685762414188e-06, + 2.650121632429875951e-06, + 2.691078206670799574e-06, + 2.732026342673790892e-06, + 2.772965974649584473e-06, + 2.813897036829261891e-06, + 2.854819463462543252e-06, + 2.895733188825209329e-06, + 2.936638147208236663e-06, + 2.977534272925225622e-06, + 3.018421500310617822e-06, + 3.059299763719914655e-06, + 3.100168997527828225e-06, + 3.141029136135804262e-06, + 3.181880113961079734e-06, + 3.222721865444142239e-06, + 3.263554325047004177e-06, + 3.304377427253283217e-06, + 3.345191106566516700e-06, + 3.385995297517515159e-06, + 3.426789934653603730e-06, + 3.467574952545922724e-06, + 3.508350285787771260e-06, + 3.549115868992878468e-06, + 3.589871636802787496e-06, + 3.630617523876043987e-06, + 3.671353464895551288e-06, + 3.712079394566895861e-06, + 3.752795247618443006e-06, + 3.793500958799582224e-06, + 3.834196462888170524e-06, + 3.874881694679648050e-06, + 3.915556588994502980e-06, + 3.956221080676481744e-06, + 3.996875104592730907e-06, + 4.037518595632082770e-06, + 4.078151488712425407e-06, + 4.118773718769880967e-06, + 4.159385220766204513e-06, + 4.199985929687055224e-06, + 4.240575780540301482e-06, + 4.281154708363366344e-06, + 4.321722648214293883e-06, + 4.362279535169953479e-06, + 4.402825304342576445e-06, + 4.443359890861641377e-06, + 4.483883229881271297e-06, + 4.524395256585782560e-06, + 4.564895906178849616e-06, + 4.605385113890935176e-06, + 4.645862814977565657e-06, + 4.686328944719382002e-06, + 4.726783438420463405e-06, + 4.767226231417527778e-06, + 4.807657259060018010e-06, + 4.848076456735678126e-06, + 4.888483759850625989e-06, + 4.928879103836758063e-06, + 4.969262424157289010e-06, + 5.009633656297742643e-06, + 5.049992735764325626e-06, + 5.090339598100268435e-06, + 5.130674178867835221e-06, + 5.170996413655671826e-06, + 5.211306238086145317e-06, + 5.251603587795553068e-06, + 5.291888398459530355e-06, + 5.332160605773278917e-06, + 5.372420145458876001e-06, + 5.412666953270839366e-06, + 5.452900964987147894e-06, + 5.493122116407534811e-06, + 5.533330343369942153e-06, + 5.573525581732445931e-06, + 5.613707767380599054e-06, + 5.653876836234817463e-06, + 5.694032724232395925e-06, + 5.734175367343823579e-06, + 5.774304701571112742e-06, + 5.814420662938910996e-06, + 5.854523187501740771e-06, + 5.894612211342361189e-06, + 5.934687670570034186e-06, + 5.974749501327821701e-06, + 6.014797639781947788e-06, + 6.054832022127195911e-06, + 6.094852584594339966e-06, + 6.134859263432105862e-06, + 6.174851994923595495e-06, + 6.214830715384496966e-06, + 6.254795361154249178e-06, + 6.294745868603261949e-06, + 6.334682174131338832e-06, + 6.374604214165869551e-06, + 6.414511925169170385e-06, + 6.454405243627789533e-06, + 6.494284106059817005e-06, + 6.534148449013138891e-06, + 6.573998209065597447e-06, + 6.613833322823256373e-06, + 6.653653726927692073e-06, + 6.693459358045306638e-06, + 6.733250152874675014e-06, + 6.773026048144755216e-06, + 6.812786980615062821e-06, + 6.852532887073921844e-06, + 6.892263704345776326e-06, + 6.931979369280521952e-06, + 6.971679818760761739e-06, + 7.011364989700168720e-06, + 7.051034819041722420e-06, + 7.090689243764978941e-06, + 7.130328200875492367e-06, + 7.169951627411993368e-06, + 7.209559460444773062e-06, + 7.249151637075741462e-06, + 7.288728094436750345e-06, + 7.328288769696772709e-06, + 7.367833600051442762e-06, + 7.407362522730128643e-06, + 7.446875474994348477e-06, + 7.486372394137847449e-06, + 7.525853217484893577e-06, + 7.565317882397496975e-06, + 7.604766326264925273e-06, + 7.644198486510725529e-06, + 7.683614300591229209e-06, + 7.723013705993790360e-06, + 7.762396640244015038e-06, + 7.801763040896943693e-06, + 7.841112845535385905e-06, + 7.880445991786064829e-06, + 7.919762417301848137e-06, + 7.959062059769047754e-06, + 7.998344856912774792e-06, + 8.037610746486444820e-06, + 8.076859666278901403e-06, + 8.116091554112811829e-06, + 8.155306347842940850e-06, + 8.194503985363414840e-06, + 8.233684404598848279e-06, + 8.272847543502780124e-06, + 8.311993340073592953e-06, + 8.351121732336989545e-06, + 8.390232658353189270e-06, + 8.429326056222281340e-06, + 8.468401864075435993e-06, + 8.507460020073415410e-06, + 8.546500462422299731e-06, + 8.585523129356182167e-06, + 8.624527959144170577e-06, + 8.663514890097587251e-06, + 8.702483860550676881e-06, + 8.741434808885417855e-06, + 8.780367673512115038e-06, + 8.819282392876672395e-06, + 8.858178905465878477e-06, + 8.897057149798798871e-06, + 8.935917064425036400e-06, + 8.974758587940635004e-06, + 9.013581658970681694e-06, + 9.052386216176425008e-06, + 9.091172198262239320e-06, + 9.129939543956678408e-06, + 9.168688192036886941e-06, + 9.207418081309572732e-06, + 9.246129150619719319e-06, + 9.284821338849086716e-06, + 9.323494584916257154e-06, + 9.362148827774885109e-06, + 9.400784006420886922e-06, + 9.439400059882040921e-06, + 9.477996927223283078e-06, + 9.516574547553801754e-06, + 9.555132860009736204e-06, + 9.593671803769895814e-06, + 9.632191318054133801e-06, + 9.670691342114751517e-06, + 9.709171815243528827e-06, + 9.747632676770124911e-06, + 9.786073866060370641e-06, + 9.824495322523341310e-06, + 9.862896985601080430e-06, + 9.901278794773842859e-06, + 9.939640689567126876e-06, + 9.977982609534470938e-06, + 1.001630449427310854e-05, + 1.005460628342236226e-05, + 1.009288791665503786e-05, + 1.013114933368448859e-05, + 1.016939047426294651e-05, + 1.020761127818163260e-05, + 1.024581168526917283e-05, + 1.028399163539840149e-05, + 1.032215106847642722e-05, + 1.036028992445132120e-05, + 1.039840814331061952e-05, + 1.043650566507971729e-05, + 1.047458242982883968e-05, + 1.051263837766274370e-05, + 1.055067344872772145e-05, + 1.058868758321005009e-05, + 1.062668072133595115e-05, + 1.066465280337014211e-05, + 1.070260376962254660e-05, + 1.074053356043837396e-05, + 1.077844211620486497e-05, + 1.081632937734979098e-05, + 1.085419528433973605e-05, + 1.089203977768707146e-05, + 1.092986279793993192e-05, + 1.096766428568886646e-05, + 1.100544418156538833e-05, + 1.104320242624219351e-05, + 1.108093896043122781e-05, + 1.111865372489088152e-05, + 1.115634666041738362e-05, + 1.119401770784336345e-05, + 1.123166680805304316e-05, + 1.126929390196552401e-05, + 1.130689893054161176e-05, + 1.134448183478886840e-05, + 1.138204255575176962e-05, + 1.141958103451834046e-05, + 1.145709721221871874e-05, + 1.149459103002350166e-05, + 1.153206242915052884e-05, + 1.156951135085670503e-05, + 1.160693773643613841e-05, + 1.164434152723575809e-05, + 1.168172266463819057e-05, + 1.171908109006878497e-05, + 1.175641674500082403e-05, + 1.179372957094532409e-05, + 1.183101950945794353e-05, + 1.186828650213748520e-05, + 1.190553049062583373e-05, + 1.194275141660643088e-05, + 1.197994922181280349e-05, + 1.201712384801013031e-05, + 1.205427523701884881e-05, + 1.209140333069622549e-05, + 1.212850807094339465e-05, + 1.216558939971179082e-05, + 1.220264725898675354e-05, + 1.223968159080261816e-05, + 1.227669233724103357e-05, + 1.231367944042293404e-05, + 1.235064284251330974e-05, + 1.238758248572827266e-05, + 1.242449831231663026e-05, + 1.246139026458337030e-05, + 1.249825828487138019e-05, + 1.253510231556992918e-05, + 1.257192229911303524e-05, + 1.260871817797960573e-05, + 1.264548989469173313e-05, + 1.268223739182167288e-05, + 1.271896061198177054e-05, + 1.275565949782955574e-05, + 1.279233399207450159e-05, + 1.282898403746160238e-05, + 1.286560957678616274e-05, + 1.290221055289251698e-05, + 1.293878690866570442e-05, + 1.297533858703795257e-05, + 1.301186553098758789e-05, + 1.304836768353702488e-05, + 1.308484498775975752e-05, + 1.312129738677032024e-05, + 1.315772482372958185e-05, + 1.319412724185113221e-05, + 1.323050458438513943e-05, + 1.326685679463314416e-05, + 1.330318381594650279e-05, + 1.333948559171825585e-05, + 1.337576206538983997e-05, + 1.341201318044942767e-05, + 1.344823888043222382e-05, + 1.348443910891858691e-05, + 1.352061380954101709e-05, + 1.355676292597413070e-05, + 1.359288640194148562e-05, + 1.362898418121394822e-05, + 1.366505620760820428e-05, + 1.370110242499328959e-05, + 1.373712277728091348e-05, + 1.377311720843214526e-05, + 1.380908566245580488e-05, + 1.384502808340851204e-05, + 1.388094441539326831e-05, + 1.391683460256585554e-05, + 1.395269858912541012e-05, + 1.398853631932081639e-05, + 1.402434773744925820e-05, + 1.406013278785464173e-05, + 1.409589141493419390e-05, + 1.413162356312884681e-05, + 1.416732917692972097e-05, + 1.420300820087663114e-05, + 1.423866057955825907e-05, + 1.427428625761047473e-05, + 1.430988517972302956e-05, + 1.434545729063142663e-05, + 1.438100253511549254e-05, + 1.441652085801392270e-05, + 1.445201220420828253e-05, + 1.448747651862953642e-05, + 1.452291374626292157e-05, + 1.455832383213846963e-05, + 1.459370672133736968e-05, + 1.462906235899063158e-05, + 1.466439069027736141e-05, + 1.469969166043146321e-05, + 1.473496521473358874e-05, + 1.477021129850959256e-05, + 1.480542985714517038e-05, + 1.484062083606984680e-05, + 1.487578418076338394e-05, + 1.491091983676073320e-05, + 1.494602774964262473e-05, + 1.498110786504193032e-05, + 1.501616012864210487e-05, + 1.505118448617733041e-05, + 1.508618088343117437e-05, + 1.512114926624429080e-05, + 1.515608958049724596e-05, + 1.519100177213283084e-05, + 1.522588578713855129e-05, + 1.526074157155321795e-05, + 1.529556907147325834e-05, + 1.533036823303701965e-05, + 1.536513900243908186e-05, + 1.539988132592871959e-05, + 1.543459514980215002e-05, + 1.546928042040720514e-05, + 1.550393708415004698e-05, + 1.553856508747744437e-05, + 1.557316437689937173e-05, + 1.560773489897147209e-05, + 1.564227660030151150e-05, + 1.567678942755581991e-05, + 1.571127332744356336e-05, + 1.574572824673093696e-05, + 1.578015413223989092e-05, + 1.581455093084005662e-05, + 1.584891858945386268e-05, + 1.588325705506256249e-05, + 1.591756627469084189e-05, + 1.595184619542098158e-05, + 1.598609676439132228e-05, + 1.602031792878854318e-05, + 1.605450963585399439e-05, + 1.608867183288225353e-05, + 1.612280446721959439e-05, + 1.615690748627026841e-05, + 1.619098083748738733e-05, + 1.622502446837742593e-05, + 1.625903832650689670e-05, + 1.629302235948643240e-05, + 1.632697651498527365e-05, + 1.636090074072940216e-05, + 1.639479498449427310e-05, + 1.642865919411072069e-05, + 1.646249331746373163e-05, + 1.649629730249087983e-05, + 1.653007109718862154e-05, + 1.656381464960297799e-05, + 1.659752790783613547e-05, + 1.663121082004460558e-05, + 1.666486333443936750e-05, + 1.669848539928466867e-05, + 1.673207696290398441e-05, + 1.676563797367099879e-05, + 1.679916838001563209e-05, + 1.683266813042309212e-05, + 1.686613717343323727e-05, + 1.689957545763972604e-05, + 1.693298293169593957e-05, + 1.696635954430586750e-05, + 1.699970524423042347e-05, + 1.703301998028585950e-05, + 1.706630370134251234e-05, + 1.709955635633073610e-05, + 1.713277789423208296e-05, + 1.716596826408521207e-05, + 1.719912741498466979e-05, + 1.723225529608087619e-05, + 1.726535185657862066e-05, + 1.729841704574340794e-05, + 1.733145081289216442e-05, + 1.736445310739958756e-05, + 1.739742387869666859e-05, + 1.743036307627065869e-05, + 1.746327064966371372e-05, + 1.749614654847914870e-05, + 1.752899072237210689e-05, + 1.756180312105613280e-05, + 1.759458369430126802e-05, + 1.762733239193293316e-05, + 1.766004916383801633e-05, + 1.769273395995718203e-05, + 1.772538673028379043e-05, + 1.775800742487719907e-05, + 1.779059599384790597e-05, + 1.782315238736387187e-05, + 1.785567655565463340e-05, + 1.788816844900272438e-05, + 1.792062801774971001e-05, + 1.795305521229464534e-05, + 1.798544998309280807e-05, + 1.801781228066151258e-05, + 1.805014205557300844e-05, + 1.808243925845284730e-05, + 1.811470383999350657e-05, + 1.814693575093945116e-05, + 1.817913494209321857e-05, + 1.821130136432148362e-05, + 1.824343496854030655e-05, + 1.827553570572829926e-05, + 1.830760352692561573e-05, + 1.833963838322628118e-05, + 1.837164022578297281e-05, + 1.840360900581265762e-05, + 1.843554467458089180e-05, + 1.846744718342218340e-05, + 1.849931648372387503e-05, + 1.853115252693236778e-05, + 1.856295526455877949e-05, + 1.859472464816452818e-05, + 1.862646062937450513e-05, + 1.865816315987569253e-05, + 1.868983219140996031e-05, + 1.872146767577852829e-05, + 1.875306956484788865e-05, + 1.878463781053366151e-05, + 1.881617236482130989e-05, + 1.884767317975012750e-05, + 1.887914020742042826e-05, + 1.891057339999242150e-05, + 1.894197270968607982e-05, + 1.897333808877978720e-05, + 1.900466948961634616e-05, + 1.903596686459421608e-05, + 1.906723016617198211e-05, + 1.909845934687422005e-05, + 1.912965435927702903e-05, + 1.916081515602128925e-05, + 1.919194168981107294e-05, + 1.922303391340662081e-05, + 1.925409177963020686e-05, + 1.928511524136469166e-05, + 1.931610425155226536e-05, + 1.934705876320005164e-05, + 1.937797872937174247e-05, + 1.940886410319339511e-05, + 1.943971483785196175e-05, + 1.947053088659563504e-05, + 1.950131220273211680e-05, + 1.953205873963452009e-05, + 1.956277045073312256e-05, + 1.959344728952075692e-05, + 1.962408920955173693e-05, + 1.965469616444187094e-05, + 1.968526810786706257e-05, + 1.971580499356901300e-05, + 1.974630677534681156e-05, + 1.977677340706282094e-05, + 1.980720484264113899e-05, + 1.983760103606634848e-05, + 1.986796194138908383e-05, + 1.989828751271798424e-05, + 1.992857770422508428e-05, + 1.995883247014446196e-05, + 1.998905176477257421e-05, + 2.001923554246658649e-05, + 2.004938375765035963e-05, + 2.007949636480599307e-05, + 2.010957331847932039e-05, + 2.013961457327893015e-05, + 2.016962008387583385e-05, + 2.019958980500255452e-05, + 2.022952369145838172e-05, + 2.025942169810134843e-05, + 2.028928377985370630e-05, + 2.031910989170066520e-05, + 2.034889998868921764e-05, + 2.037865402593346822e-05, + 2.040837195860789464e-05, + 2.043805374194626693e-05, + 2.046769933125361092e-05, + 2.049730868189310971e-05, + 2.052688174929122994e-05, + 2.055641848894328508e-05, + 2.058591885639894439e-05, + 2.061538280728068809e-05, + 2.064481029726948573e-05, + 2.067420128210985125e-05, + 2.070355571761440006e-05, + 2.073287355965683219e-05, + 2.076215476417072272e-05, + 2.079139928716192576e-05, + 2.082060708469467633e-05, + 2.084977811289768558e-05, + 2.087891232796909764e-05, + 2.090800968616327932e-05, + 2.093707014380307156e-05, + 2.096609365727823769e-05, + 2.099508018303920890e-05, + 2.102402967760075704e-05, + 2.105294209754771711e-05, + 2.108181739952027603e-05, + 2.111065554023260397e-05, + 2.113945647645837006e-05, + 2.116822016503614652e-05, + 2.119694656287462631e-05, + 2.122563562693966020e-05, + 2.125428731426616939e-05, + 2.128290158195664800e-05, + 2.131147838717487128e-05, + 2.134001768715003931e-05, + 2.136851943918167284e-05, + 2.139698360062551190e-05, + 2.142541012891212339e-05, + 2.145379898153209499e-05, + 2.148215011604293675e-05, + 2.151046349006786813e-05, + 2.153873906129570286e-05, + 2.156697678747967318e-05, + 2.159517662644283397e-05, + 2.162333853607003285e-05, + 2.165146247431232494e-05, + 2.167954839919167555e-05, + 2.170759626878847155e-05, + 2.173560604125311218e-05, + 2.176357767480461650e-05, + 2.179151112772449765e-05, + 2.181940635836188914e-05, + 2.184726332513220646e-05, + 2.187508198651599858e-05, + 2.190286230106422660e-05, + 2.193060422739045076e-05, + 2.195830772417620399e-05, + 2.198597275016961634e-05, + 2.201359926418560133e-05, + 2.204118722510457523e-05, + 2.206873659187765107e-05, + 2.209624732351894079e-05, + 2.212371937911086447e-05, + 2.215115271780284249e-05, + 2.217854729881138363e-05, + 2.220590308141896020e-05, + 2.223322002497891069e-05, + 2.226049808890819592e-05, + 2.228773723269229827e-05, + 2.231493741588396135e-05, + 2.234209859810233273e-05, + 2.236922073903773109e-05, + 2.239630379844421266e-05, + 2.242334773614479906e-05, + 2.245035251203020681e-05, + 2.247731808605880324e-05, + 2.250424441825559348e-05, + 2.253113146871712642e-05, + 2.255797919760412897e-05, + 2.258478756514659499e-05, + 2.261155653164239956e-05, + 2.263828605745646212e-05, + 2.266497610302552711e-05, + 2.269162662885073720e-05, + 2.271823759550275611e-05, + 2.274480896362059978e-05, + 2.277134069391164643e-05, + 2.279783274715051179e-05, + 2.282428508418389408e-05, + 2.285069766592472950e-05, + 2.287707045335078278e-05, + 2.290340340751578053e-05, + 2.292969648953734277e-05, + 2.295594966060191265e-05, + 2.298216288196954724e-05, + 2.300833611496071741e-05, + 2.303446932097333652e-05, + 2.306056246146941127e-05, + 2.308661549798014752e-05, + 2.311262839210934187e-05, + 2.313860110552759812e-05, + 2.316453359997110411e-05, + 2.319042583725255849e-05, + 2.321627777924915975e-05, + 2.324208938790763089e-05, + 2.326786062524876958e-05, + 2.329359145335451915e-05, + 2.331928183438479398e-05, + 2.334493173056436069e-05, + 2.337054110418868266e-05, + 2.339610991762192441e-05, + 2.342163813330272839e-05, + 2.344712571373121807e-05, + 2.347257262148579632e-05, + 2.349797881920983683e-05, + 2.352334426961689507e-05, + 2.354866893549532625e-05, + 2.357395277969628466e-05, + 2.359919576514477225e-05, + 2.362439785483837836e-05, + 2.364955901184126908e-05, + 2.367467919928807689e-05, + 2.369975838038841361e-05, + 2.372479651841396503e-05, + 2.374979357671532654e-05, + 2.377474951870875888e-05, + 2.379966430788125348e-05, + 2.382453790779487255e-05, + 2.384937028207560899e-05, + 2.387416139442342879e-05, + 2.389891120861157981e-05, + 2.392361968848059485e-05, + 2.394828679794307227e-05, + 2.397291250098246301e-05, + 2.399749676165344674e-05, + 2.402203954408025808e-05, + 2.404654081246190771e-05, + 2.407100053106499277e-05, + 2.409541866422848765e-05, + 2.411979517636257176e-05, + 2.414413003194766384e-05, + 2.416842319553898918e-05, + 2.419267463175953914e-05, + 2.421688430530505838e-05, + 2.424105218094268631e-05, + 2.426517822351119421e-05, + 2.428926239791980279e-05, + 2.431330466915278664e-05, + 2.433730500226262346e-05, + 2.436126336237483229e-05, + 2.438517971468660131e-05, + 2.440905402446592052e-05, + 2.443288625705590492e-05, + 2.445667637786839781e-05, + 2.448042435238831431e-05, + 2.450413014617251989e-05, + 2.452779372485023020e-05, + 2.455141505412139494e-05, + 2.457499409976163769e-05, + 2.459853082761543228e-05, + 2.462202520360074113e-05, + 2.464547719370778871e-05, + 2.466888676399906158e-05, + 2.469225388060859687e-05, + 2.471557850974617676e-05, + 2.473886061769068779e-05, + 2.476210017079472192e-05, + 2.478529713548356008e-05, + 2.480845147825405070e-05, + 2.483156316567894993e-05, + 2.485463216440066375e-05, + 2.487765844113531030e-05, + 2.490064196267196102e-05, + 2.492358269587260331e-05, + 2.494648060767116137e-05, + 2.496933566507760605e-05, + 2.499214783517180873e-05, + 2.501491708510782054e-05, + 2.503764338211296776e-05, + 2.506032669348751973e-05, + 2.508296698660405531e-05, + 2.510556422891261624e-05, + 2.512811838792915694e-05, + 2.515062943125043879e-05, + 2.517309732654235462e-05, + 2.519552204154435697e-05, + 2.521790354407238546e-05, + 2.524024180201405227e-05, + 2.526253678332718181e-05, + 2.528478845604967021e-05, + 2.530699678828890760e-05, + 2.532916174822589801e-05, + 2.535128330411965384e-05, + 2.537336142429576767e-05, + 2.539539607716102186e-05, + 2.541738723119169955e-05, + 2.543933485493923599e-05, + 2.546123891702816542e-05, + 2.548309938616084405e-05, + 2.550491623110673342e-05, + 2.552668942071664414e-05, + 2.554841892391128058e-05, + 2.557010470968570982e-05, + 2.559174674711324786e-05, + 2.561334500533536971e-05, + 2.563489945357105395e-05, + 2.565641006111548159e-05, + 2.567787679733553668e-05, + 2.569929963167228305e-05, + 2.572067853364552807e-05, + 2.574201347284235048e-05, + 2.576330441893164903e-05, + 2.578455134165292772e-05, + 2.580575421082023624e-05, + 2.582691299632651355e-05, + 2.584802766813337264e-05, + 2.586909819628017057e-05, + 2.589012455088328342e-05, + 2.591110670213077674e-05, + 2.593204462028661703e-05, + 2.595293827569008556e-05, + 2.597378763875493810e-05, + 2.599459267996957100e-05, + 2.601535336989994511e-05, + 2.603606967918447644e-05, + 2.605674157853746841e-05, + 2.607736903874883060e-05, + 2.609795203068234062e-05, + 2.611849052528028927e-05, + 2.613898449355709052e-05, + 2.615943390660389274e-05, + 2.617983873558682025e-05, + 2.620019895174780007e-05, + 2.622051452640297286e-05, + 2.624078543094714489e-05, + 2.626101163684770642e-05, + 2.628119311564851103e-05, + 2.630132983896935392e-05, + 2.632142177850441332e-05, + 2.634146890602656019e-05, + 2.636147119338170348e-05, + 2.638142861249229002e-05, + 2.640134113535684375e-05, + 2.642120873404942024e-05, + 2.644103138071947115e-05, + 2.646080904759488678e-05, + 2.648054170697683595e-05, + 2.650022933124347938e-05, + 2.651987189284901763e-05, + 2.653946936432363690e-05, + 2.655902171827296014e-05, + 2.657852892738130982e-05, + 2.659799096440666980e-05, + 2.661740780218412424e-05, + 2.663677941362489204e-05, + 2.665610577171580162e-05, + 2.667538684952263845e-05, + 2.669462262018591661e-05, + 2.671381305691952019e-05, + 2.673295813301971571e-05, + 2.675205782185525536e-05, + 2.677111209687161220e-05, + 2.679012093159345009e-05, + 2.680908429961941276e-05, + 2.682800217462566098e-05, + 2.684687453036498493e-05, + 2.686570134066696677e-05, + 2.688448257943704895e-05, + 2.690321822066085066e-05, + 2.692190823839489791e-05, + 2.694055260677839390e-05, + 2.695915130002419645e-05, + 2.697770429242199602e-05, + 2.699621155834089749e-05, + 2.701467307222558820e-05, + 2.703308880859488442e-05, + 2.705145874204998823e-05, + 2.706978284726566144e-05, + 2.708806109899388476e-05, + 2.710629347206712400e-05, + 2.712447994138908041e-05, + 2.714262048194676264e-05, + 2.716071506880089493e-05, + 2.717876367708956949e-05, + 2.719676628203058434e-05, + 2.721472285891769603e-05, + 2.723263338311922711e-05, + 2.725049783008607230e-05, + 2.726831617534335349e-05, + 2.728608839449349281e-05, + 2.730381446321994635e-05, + 2.732149435727845597e-05, + 2.733912805250508936e-05, + 2.735671552481500001e-05, + 2.737425675019877812e-05, + 2.739175170472512053e-05, + 2.740920036454072903e-05, + 2.742660270586921937e-05, + 2.744395870501424516e-05, + 2.746126833835495774e-05, + 2.747853158234821186e-05, + 2.749574841353211985e-05, + 2.751291880851773372e-05, + 2.753004274399639068e-05, + 2.754712019673930313e-05, + 2.756415114359273396e-05, + 2.758113556148220465e-05, + 2.759807342741111289e-05, + 2.761496471846011593e-05, + 2.763180941179038997e-05, + 2.764860748463881225e-05, + 2.766535891432126107e-05, + 2.768206367823182975e-05, + 2.769872175384269789e-05, + 2.771533311870364008e-05, + 2.773189775044507184e-05, + 2.774841562677322492e-05, + 2.776488672547351846e-05, + 2.778131102440975945e-05, + 2.779768850152419688e-05, + 2.781401913483656972e-05, + 2.783030290244743743e-05, + 2.784653978253359921e-05, + 2.786272975335098409e-05, + 2.787887279323416300e-05, + 2.789496888059547807e-05, + 2.791101799392807498e-05, + 2.792702011180163391e-05, + 2.794297521286487340e-05, + 2.795888327584558080e-05, + 2.797474427954974832e-05, + 2.799055820286182715e-05, + 2.800632502474701105e-05, + 2.802204472424709602e-05, + 2.803771728048324848e-05, + 2.805334267265576463e-05, + 2.806892088004351148e-05, + 2.808445188200356764e-05, + 2.809993565797432014e-05, + 2.811537218747051431e-05, + 2.813076145008680797e-05, + 2.814610342549687694e-05, + 2.816139809345258497e-05, + 2.817664543378700255e-05, + 2.819184542641080192e-05, + 2.820699805131156594e-05, + 2.822210328856035425e-05, + 2.823716111830435442e-05, + 2.825217152077011762e-05, + 2.826713447626528995e-05, + 2.828204996517466867e-05, + 2.829691796796307194e-05, + 2.831173846517442061e-05, + 2.832651143743197543e-05, + 2.834123686543752049e-05, + 2.835591472997510033e-05, + 2.837054501190311204e-05, + 2.838512769216421555e-05, + 2.839966275177774422e-05, + 2.841415017184223575e-05, + 2.842858993353800719e-05, + 2.844298201812325518e-05, + 2.845732640693357485e-05, + 2.847162308138836677e-05, + 2.848587202298372863e-05, + 2.850007321329532165e-05, + 2.851422663398096922e-05, + 2.852833226677344022e-05, + 2.854239009348987817e-05, + 2.855640009602425247e-05, + 2.857036225635035693e-05, + 2.858427655652356477e-05, + 2.859814297867763365e-05, + 2.861196150502390268e-05, + 2.862573211785777389e-05, + 2.863945479955133631e-05, + 2.865312953255677098e-05, + 2.866675629940862446e-05, + 2.868033508271663611e-05, + 2.869386586517496735e-05, + 2.870734862955495449e-05, + 2.872078335870873061e-05, + 2.873417003556809392e-05, + 2.874750864314478224e-05, + 2.876079916452984952e-05, + 2.877404158289643062e-05, + 2.878723588149542819e-05, + 2.880038204365786061e-05, + 2.881348005279745736e-05, + 2.882652989240397422e-05, + 2.883953154604915973e-05, + 2.885248499738621314e-05, + 2.886539023014651482e-05, + 2.887824722814205560e-05, + 2.889105597526503015e-05, + 2.890381645548730167e-05, + 2.891652865286255673e-05, + 2.892919255152291380e-05, + 2.894180813568127453e-05, + 2.895437538963078512e-05, + 2.896689429774484644e-05, + 2.897936484447660919e-05, + 2.899178701436106440e-05, + 2.900416079201182810e-05, + 2.901648616212340796e-05, + 2.902876310947084414e-05, + 2.904099161890902491e-05, + 2.905317167537306951e-05, + 2.906530326388017806e-05, + 2.907738636952596220e-05, + 2.908942097748713868e-05, + 2.910140707302087204e-05, + 2.911334464146414445e-05, + 2.912523366823630016e-05, + 2.913707413883504074e-05, + 2.914886603883963705e-05, + 2.916060935390947230e-05, + 2.917230406978455032e-05, + 2.918395017228490599e-05, + 2.919554764731286514e-05, + 2.920709648084935148e-05, + 2.921859665895672247e-05, + 2.923004816777793582e-05, + 2.924145099353628525e-05, + 2.925280512253533948e-05, + 2.926411054116102596e-05, + 2.927536723587803260e-05, + 2.928657519323236931e-05, + 2.929773439985083257e-05, + 2.930884484244024316e-05, + 2.931990650778984494e-05, + 2.933091938276838429e-05, + 2.934188345432392714e-05, + 2.935279870948823982e-05, + 2.936366513537200503e-05, + 2.937448271916628213e-05, + 2.938525144814503127e-05, + 2.939597130966101717e-05, + 2.940664229114848911e-05, + 2.941726438012244913e-05, + 2.942783756417829283e-05, + 2.943836183099384567e-05, + 2.944883716832662876e-05, + 2.945926356401347261e-05, + 2.946964100597553152e-05, + 2.947996948221229342e-05, + 2.949024898080443942e-05, + 2.950047948991510084e-05, + 2.951066099778722996e-05, + 2.952079349274323755e-05, + 2.953087696318949229e-05, + 2.954091139761133003e-05, + 2.955089678457515785e-05, + 2.956083311273013117e-05, + 2.957072037080315288e-05, + 2.958055854760542933e-05, + 2.959034763202724252e-05, + 2.960008761303998970e-05, + 2.960977847969740987e-05, + 2.961942022113358481e-05, + 2.962901282656177696e-05, + 2.963855628527963353e-05, + 2.964805058666365376e-05, + 2.965749572017143179e-05, + 2.966689167534393356e-05, + 2.967623844179929644e-05, + 2.968553600924056442e-05, + 2.969478436744984014e-05, + 2.970398350629081924e-05, + 2.971313341570820080e-05, + 2.972223408572807700e-05, + 2.973128550645710641e-05, + 2.974028766808446214e-05, + 2.974924056087905025e-05, + 2.975814417519108852e-05, + 2.976699850145382771e-05, + 2.977580353017870310e-05, + 2.978455925196008805e-05, + 2.979326565747407766e-05, + 2.980192273747689973e-05, + 2.981053048280633101e-05, + 2.981908888438150067e-05, + 2.982759793320210429e-05, + 2.983605762035056543e-05, + 2.984446793698914563e-05, + 2.985282887436145543e-05, + 2.986114042379397571e-05, + 2.986940257669185299e-05, + 2.987761532454299231e-05, + 2.988577865891734229e-05, + 2.989389257146459465e-05, + 2.990195705391647453e-05, + 2.990997209808591385e-05, + 2.991793769586699702e-05, + 2.992585383923482211e-05, + 2.993372052024708641e-05, + 2.994153773104139634e-05, + 2.994930546383717151e-05, + 2.995702371093521109e-05, + 2.996469246471720248e-05, + 2.997231171764718844e-05, + 2.997988146226961205e-05, + 2.998740169121042132e-05, + 2.999487239717713014e-05, + 3.000229357295843881e-05, + 3.000966521142399686e-05, + 3.001698730552603280e-05, + 3.002425984829698910e-05, + 3.003148283285096904e-05, + 3.003865625238348928e-05, + 3.004578010017091408e-05, + 3.005285436957255598e-05, + 3.005987905402731809e-05, + 3.006685414705630299e-05, + 3.007377964226189455e-05, + 3.008065553332776469e-05, + 3.008748181401870738e-05, + 3.009425847818181430e-05, + 3.010098551974508573e-05, + 3.010766293271658348e-05, + 3.011429071118804269e-05, + 3.012086884933119906e-05, + 3.012739734139900519e-05, + 3.013387618172710443e-05, + 3.014030536473103904e-05, + 3.014668488490877777e-05, + 3.015301473683910309e-05, + 3.015929491518197031e-05, + 3.016552541467990015e-05, + 3.017170623015608133e-05, + 3.017783735651401826e-05, + 3.018391878874060742e-05, + 3.018995052190285430e-05, + 3.019593255114924555e-05, + 3.020186487171059605e-05, + 3.020774747889796516e-05, + 3.021358036810436104e-05, + 3.021936353480409002e-05, + 3.022509697455274313e-05, + 3.023078068298718589e-05, + 3.023641465582683227e-05, + 3.024199888887033787e-05, + 3.024753337799987235e-05, + 3.025301811917775161e-05, + 3.025845310844767111e-05, + 3.026383834193596621e-05, + 3.026917381584866116e-05, + 3.027445952647366117e-05, + 3.027969547018136907e-05, + 3.028488164342228991e-05, + 3.029001804272840313e-05, + 3.029510466471438911e-05, + 3.030014150607404446e-05, + 3.030512856358458162e-05, + 3.031006583410353884e-05, + 3.031495331457000671e-05, + 3.031979100200454685e-05, + 3.032457889350883274e-05, + 3.032931698626598177e-05, + 3.033400527754091100e-05, + 3.033864376467929701e-05, + 3.034323244510794178e-05, + 3.034777131633632790e-05, + 3.035226037595351500e-05, + 3.035669962163072152e-05, + 3.036108905112092828e-05, + 3.036542866225768589e-05, + 3.036971845295623621e-05, + 3.037395842121300073e-05, + 3.037814856510549248e-05, + 3.038228888279323085e-05, + 3.038637937251630498e-05, + 3.039042003259624793e-05, + 3.039441086143655508e-05, + 3.039835185752083415e-05, + 3.040224301941450271e-05, + 3.040608434576465941e-05, + 3.040987583529918952e-05, + 3.041361748682738154e-05, + 3.041730929923970025e-05, + 3.042095127150784426e-05, + 3.042454340268446142e-05, + 3.042808569190442617e-05, + 3.043157813838283713e-05, + 3.043502074141620292e-05, + 3.043841350038260486e-05, + 3.044175641474070759e-05, + 3.044504948403121256e-05, + 3.044829270787541135e-05, + 3.045148608597578871e-05, + 3.045462961811616151e-05, + 3.045772330416148560e-05, + 3.046076714405769655e-05, + 3.046376113783234326e-05, + 3.046670528559361556e-05, + 3.046959958753103876e-05, + 3.047244404391533137e-05, + 3.047523865509794768e-05, + 3.047798342151204342e-05, + 3.048067834367151685e-05, + 3.048332342217143233e-05, + 3.048591865768783397e-05, + 3.048846405097787435e-05, + 3.049095960287960110e-05, + 3.049340531431278019e-05, + 3.049580118627757456e-05, + 3.049814721985490669e-05, + 3.050044341620774602e-05, + 3.050268977657925233e-05, + 3.050488630229367015e-05, + 3.050703299475668792e-05, + 3.050912985545459435e-05, + 3.051117688595457998e-05, + 3.051317408790504544e-05, + 3.051512146303512042e-05, + 3.051701901315518199e-05, + 3.051886674015638027e-05, + 3.052066464601037418e-05, + 3.052241273277044275e-05, + 3.052411100257028907e-05, + 3.052575945762455193e-05, + 3.052735810022887358e-05, + 3.052890693275979130e-05, + 3.053040595767443247e-05, + 3.053185517751100248e-05, + 3.053325459488829001e-05, + 3.053460421250613467e-05, + 3.053590403314520332e-05, + 3.053715405966637346e-05, + 3.053835429501235274e-05, + 3.053950474220559189e-05, + 3.054060540434966705e-05, + 3.054165628462928659e-05, + 3.054265738630912555e-05, + 3.054360871273490308e-05, + 3.054451026733330792e-05, + 3.054536205361138172e-05, + 3.054616407515678336e-05, + 3.054691633563831745e-05, + 3.054761883880461302e-05, + 3.054827158848565490e-05, + 3.054887458859168597e-05, + 3.054942784311355281e-05, + 3.054993135612284790e-05, + 3.055038513177153704e-05, + 3.055078917429214898e-05, + 3.055114348799794490e-05, + 3.055144807728257957e-05, + 3.055170294662015555e-05, + 3.055190810056537229e-05, + 3.055206354375320085e-05, + 3.055216928089931759e-05, + 3.055222531679983991e-05, + 3.055223165633112292e-05, + 3.055218830445001699e-05, + 3.055209526619378639e-05, + 3.055195254667998736e-05, + 3.055176015110689497e-05, + 3.055151808475247316e-05, + 3.055122635297556058e-05, + 3.055088496121529458e-05, + 3.055049391499079956e-05, + 3.055005321990154606e-05, + 3.054956288162754728e-05, + 3.054902290592866792e-05, + 3.054843329864532890e-05, + 3.054779406569798559e-05, + 3.054710521308736499e-05, + 3.054636674689434372e-05, + 3.054557867327981253e-05, + 3.054474099848505578e-05, + 3.054385372883130416e-05, + 3.054291687071986348e-05, + 3.054193043063229763e-05, + 3.054089441513017103e-05, + 3.053980883085490641e-05, + 3.053867368452820486e-05, + 3.053748898295161897e-05, + 3.053625473300681034e-05, + 3.053497094165521749e-05, + 3.053363761593846926e-05, + 3.053225476297793755e-05, + 3.053082238997503550e-05, + 3.052934050421097351e-05, + 3.052780911304694224e-05, + 3.052622822392372633e-05, + 3.052459784436234138e-05, + 3.052291798196316659e-05, + 3.052118864440688667e-05, + 3.051940983945353636e-05, + 3.051758157494297480e-05, + 3.051570385879496004e-05, + 3.051377669900875265e-05, + 3.051180010366351552e-05, + 3.050977408091785982e-05, + 3.050769863901021774e-05, + 3.050557378625848670e-05, + 3.050339953106043933e-05, + 3.050117588189301873e-05, + 3.049890284731310083e-05, + 3.049658043595679298e-05, + 3.049420865654013538e-05, + 3.049178751785811166e-05, + 3.048931702878549937e-05, + 3.048679719827679540e-05, + 3.048422803536526393e-05, + 3.048160954916407145e-05, + 3.047894174886560238e-05, + 3.047622464374155049e-05, + 3.047345824314302401e-05, + 3.047064255650045408e-05, + 3.046777759332356769e-05, + 3.046486336320130298e-05, + 3.046189987580178547e-05, + 3.045888714087227730e-05, + 3.045582516823983790e-05, + 3.045271396780978572e-05, + 3.044955354956712813e-05, + 3.044634392357620218e-05, + 3.044308509997969208e-05, + 3.043977708900014032e-05, + 3.043641990093879230e-05, + 3.043301354617563700e-05, + 3.042955803517024042e-05, + 3.042605337846078679e-05, + 3.042249958666429880e-05, + 3.041889667047714915e-05, + 3.041524464067426779e-05, + 3.041154350810941292e-05, + 3.040779328371565215e-05, + 3.040399397850400382e-05, + 3.040014560356533440e-05, + 3.039624817006856612e-05, + 3.039230168926162565e-05, + 3.038830617247100031e-05, + 3.038426163110209715e-05, + 3.038016807663865683e-05, + 3.037602552064350917e-05, + 3.037183397475762788e-05, + 3.036759345070086911e-05, + 3.036330396027156497e-05, + 3.035896551534666914e-05, + 3.035457812788143502e-05, + 3.035014180990984605e-05, + 3.034565657354395838e-05, + 3.034112243097468692e-05, + 3.033653939447105319e-05, + 3.033190747638040216e-05, + 3.032722668912876476e-05, + 3.032249704522030901e-05, + 3.031771855723708594e-05, + 3.031289123784003921e-05, + 3.030801509976794464e-05, + 3.030309015583786762e-05, + 3.029811641894524443e-05, + 3.029309390206308937e-05, + 3.028802261824309935e-05, + 3.028290258061478311e-05, + 3.027773380238577971e-05, + 3.027251629684186868e-05, + 3.026725007734662785e-05, + 3.026193515734141638e-05, + 3.025657155034592027e-05, + 3.025115926995760007e-05, + 3.024569832985181966e-05, + 3.024018874378160229e-05, + 3.023463052557807441e-05, + 3.022902368914976774e-05, + 3.022336824848325282e-05, + 3.021766421764277992e-05, + 3.021191161077021461e-05, + 3.020611044208546130e-05, + 3.020026072588520287e-05, + 3.019436247654443885e-05, + 3.018841570851555709e-05, + 3.018242043632856077e-05, + 3.017637667459071264e-05, + 3.017028443798708728e-05, + 3.016414374127979184e-05, + 3.015795459930855555e-05, + 3.015171702699060102e-05, + 3.014543103932037992e-05, + 3.013909665136958315e-05, + 3.013271387828751017e-05, + 3.012628273530012032e-05, + 3.011980323771107295e-05, + 3.011327540090105319e-05, + 3.010669924032790073e-05, + 3.010007477152686390e-05, + 3.009340201010952563e-05, + 3.008668097176496898e-05, + 3.007991167226002787e-05, + 3.007309412743712203e-05, + 3.006622835321649660e-05, + 3.005931436559545976e-05, + 3.005235218064707833e-05, + 3.004534181452312203e-05, + 3.003828328345026542e-05, + 3.003117660373314055e-05, + 3.002402179175312746e-05, + 3.001681886396734449e-05, + 3.000956783691040330e-05, + 3.000226872719399896e-05, + 2.999492155150527346e-05, + 2.998752632660870967e-05, + 2.998008306934530124e-05, + 2.997259179663158023e-05, + 2.996505252546229712e-05, + 2.995746527290758492e-05, + 2.994983005611358260e-05, + 2.994214689230347524e-05, + 2.993441579877696213e-05, + 2.992663679290881337e-05, + 2.991880989215194633e-05, + 2.991093511403383759e-05, + 2.990301247615875915e-05, + 2.989504199620757172e-05, + 2.988702369193593918e-05, + 2.987895758117736097e-05, + 2.987084368184045140e-05, + 2.986268201190932930e-05, + 2.985447258944488519e-05, + 2.984621543258394438e-05, + 2.983791055953808455e-05, + 2.982955798859674603e-05, + 2.982115773812319992e-05, + 2.981270982655753984e-05, + 2.980421427241550282e-05, + 2.979567109428822878e-05, + 2.978708031084297540e-05, + 2.977844194082250826e-05, + 2.976975600304449776e-05, + 2.976102251640289133e-05, + 2.975224149986740177e-05, + 2.974341297248174549e-05, + 2.973453695336707801e-05, + 2.972561346171901246e-05, + 2.971664251680785330e-05, + 2.970762413798008040e-05, + 2.969855834465739012e-05, + 2.968944515633645820e-05, + 2.968028459258956653e-05, + 2.967107667306327840e-05, + 2.966182141748006481e-05, + 2.965251884563749809e-05, + 2.964316897740774368e-05, + 2.963377183273832583e-05, + 2.962432743165191757e-05, + 2.961483579424508032e-05, + 2.960529694069026962e-05, + 2.959571089123459853e-05, + 2.958607766619987482e-05, + 2.957639728598264171e-05, + 2.956666977105453696e-05, + 2.955689514196083937e-05, + 2.954707341932255249e-05, + 2.953720462383473426e-05, + 2.952728877626735761e-05, + 2.951732589746500213e-05, + 2.950731600834564111e-05, + 2.949725912990276933e-05, + 2.948715528320415276e-05, + 2.947700448939162196e-05, + 2.946680676968144137e-05, + 2.945656214536453626e-05, + 2.944627063780468355e-05, + 2.943593226844136795e-05, + 2.942554705878764405e-05, + 2.941511503043053955e-05, + 2.940463620503174977e-05, + 2.939411060432565225e-05, + 2.938353825012184783e-05, + 2.937291916430335816e-05, + 2.936225336882728978e-05, + 2.935154088572439706e-05, + 2.934078173709971237e-05, + 2.932997594513082494e-05, + 2.931912353206985610e-05, + 2.930822452024376426e-05, + 2.929727893205057726e-05, + 2.928628678996374277e-05, + 2.927524811653027496e-05, + 2.926416293436879615e-05, + 2.925303126617434800e-05, + 2.924185313471252661e-05, + 2.923062856282398198e-05, + 2.921935757342270700e-05, + 2.920804018949439419e-05, + 2.919667643409914285e-05, + 2.918526633037145227e-05, + 2.917380990151627454e-05, + 2.916230717081343268e-05, + 2.915075816161578768e-05, + 2.913916289734749698e-05, + 2.912752140150856475e-05, + 2.911583369766909560e-05, + 2.910409980947363816e-05, + 2.909231976063918272e-05, + 2.908049357495575752e-05, + 2.906862127628461273e-05, + 2.905670288856267920e-05, + 2.904473843579629706e-05, + 2.903272794206623354e-05, + 2.902067143152594483e-05, + 2.900856892839938738e-05, + 2.899642045698571383e-05, + 2.898422604165519709e-05, + 2.897198570684939299e-05, + 2.895969947708375251e-05, + 2.894736737694582267e-05, + 2.893498943109350168e-05, + 2.892256566426021935e-05, + 2.891009610124812361e-05, + 2.889758076693343369e-05, + 2.888501968626430906e-05, + 2.887241288425890456e-05, + 2.885976038601040187e-05, + 2.884706221668216101e-05, + 2.883431840150847933e-05, + 2.882152896579705804e-05, + 2.880869393492668475e-05, + 2.879581333434769427e-05, + 2.878288718958234125e-05, + 2.876991552622482057e-05, + 2.875689836993939366e-05, + 2.874383574646323792e-05, + 2.873072768160448844e-05, + 2.871757420124283760e-05, + 2.870437533132956227e-05, + 2.869113109788590084e-05, + 2.867784152700574338e-05, + 2.866450664485370049e-05, + 2.865112647766558432e-05, + 2.863770105174827309e-05, + 2.862423039348007024e-05, + 2.861071452930892225e-05, + 2.859715348575512576e-05, + 2.858354728940928454e-05, + 2.856989596693317008e-05, + 2.855619954505951826e-05, + 2.854245805059032857e-05, + 2.852867151039998453e-05, + 2.851483995143291590e-05, + 2.850096340070402558e-05, + 2.848704188529883869e-05, + 2.847307543237408533e-05, + 2.845906406915487148e-05, + 2.844500782293875495e-05, + 2.843090672109291963e-05, + 2.841676079105464648e-05, + 2.840257006033169640e-05, + 2.838833455650247958e-05, + 2.837405430721388037e-05, + 2.835972934018436079e-05, + 2.834535968320197171e-05, + 2.833094536412496267e-05, + 2.831648641088164981e-05, + 2.830198285146874208e-05, + 2.828743471395436687e-05, + 2.827284202647598968e-05, + 2.825820481724053949e-05, + 2.824352311452485599e-05, + 2.822879694667582173e-05, + 2.821402634210803105e-05, + 2.819921132930752722e-05, + 2.818435193682908180e-05, + 2.816944819329684845e-05, + 2.815450012740435288e-05, + 2.813950776791488919e-05, + 2.812447114365880261e-05, + 2.810939028353957796e-05, + 2.809426521652575560e-05, + 2.807909597165721637e-05, + 2.806388257804307422e-05, + 2.804862506485924687e-05, + 2.803332346135208454e-05, + 2.801797779683832249e-05, + 2.800258810070018180e-05, + 2.798715440239070567e-05, + 2.797167673143185527e-05, + 2.795615511741157905e-05, + 2.794058958999088373e-05, + 2.792498017889487609e-05, + 2.790932691391950199e-05, + 2.789362982492876806e-05, + 2.787788894185532450e-05, + 2.786210429469784263e-05, + 2.784627591352760144e-05, + 2.783040382847949210e-05, + 2.781448806975925499e-05, + 2.779852866764064047e-05, + 2.778252565246264077e-05, + 2.776647905463650341e-05, + 2.775038890463905997e-05, + 2.773425523301374933e-05, + 2.771807807037400916e-05, + 2.770185744740067047e-05, + 2.768559339483977563e-05, + 2.766928594350958844e-05, + 2.765293512429138178e-05, + 2.763654096813649170e-05, + 2.762010350606363066e-05, + 2.760362276915633283e-05, + 2.758709878856945935e-05, + 2.757053159552316066e-05, + 2.755392122130343892e-05, + 2.753726769726545144e-05, + 2.752057105483085442e-05, + 2.750383132548818576e-05, + 2.748704854079319035e-05, + 2.747022273236906061e-05, + 2.745335393190375989e-05, + 2.743644217115447784e-05, + 2.741948748194383910e-05, + 2.740248989616185147e-05, + 2.738544944576545869e-05, + 2.736836616277601289e-05, + 2.735124007928380112e-05, + 2.733407122744454542e-05, + 2.731685963948065981e-05, + 2.729960534768064044e-05, + 2.728230838440020401e-05, + 2.726496878205897752e-05, + 2.724758657314499776e-05, + 2.723016179021166535e-05, + 2.721269446587830718e-05, + 2.719518463283117590e-05, + 2.717763232382000761e-05, + 2.716003757166292443e-05, + 2.714240040924285668e-05, + 2.712472086950843395e-05, + 2.710699898547423920e-05, + 2.708923479022102559e-05, + 2.707142831689286370e-05, + 2.705357959870169517e-05, + 2.703568866892408008e-05, + 2.701775556090189152e-05, + 2.699978030804253584e-05, + 2.698176294381909832e-05, + 2.696370350176796471e-05, + 2.694560201549261593e-05, + 2.692745851866107680e-05, + 2.690927304500614984e-05, + 2.689104562832664178e-05, + 2.687277630248388052e-05, + 2.685446510140530659e-05, + 2.683611205908571659e-05, + 2.681771720957981604e-05, + 2.679928058701024930e-05, + 2.678080222556395731e-05, + 2.676228215949036151e-05, + 2.674372042310548052e-05, + 2.672511705078896201e-05, + 2.670647207698491631e-05, + 2.668778553620160458e-05, + 2.666905746301235708e-05, + 2.665028789205136508e-05, + 2.663147685802256116e-05, + 2.661262439568842818e-05, + 2.659373053987833414e-05, + 2.657479532548570982e-05, + 2.655581878746542977e-05, + 2.653680096083767818e-05, + 2.651774188068870778e-05, + 2.649864158216367740e-05, + 2.647950010047460384e-05, + 2.646031747089675019e-05, + 2.644109372876592541e-05, + 2.642182890948673791e-05, + 2.640252304852147564e-05, + 2.638317618139926759e-05, + 2.636378834371178769e-05, + 2.634435957111195712e-05, + 2.632488989931721049e-05, + 2.630537936411044109e-05, + 2.628582800133246234e-05, + 2.626623584689040695e-05, + 2.624660293675406097e-05, + 2.622692930695267214e-05, + 2.620721499358323053e-05, + 2.618746003280288248e-05, + 2.616766446082942528e-05, + 2.614782831394583032e-05, + 2.612795162849745127e-05, + 2.610803444088860209e-05, + 2.608807678759174559e-05, + 2.606807870513573667e-05, + 2.604804023011479745e-05, + 2.602796139918551538e-05, + 2.600784224906292998e-05, + 2.598768281652914544e-05, + 2.596748313842549389e-05, + 2.594724325165365683e-05, + 2.592696319317951075e-05, + 2.590664300002959658e-05, + 2.588628270929247506e-05, + 2.586588235811881133e-05, + 2.584544198371823085e-05, + 2.582496162336447265e-05, + 2.580444131439160488e-05, + 2.578388109419517331e-05, + 2.576328100023173720e-05, + 2.574264107002010256e-05, + 2.572196134113740888e-05, + 2.570124185122445862e-05, + 2.568048263798211907e-05, + 2.565968373917216255e-05, + 2.563884519261719870e-05, + 2.561796703620141982e-05, + 2.559704930786710776e-05, + 2.557609204561975670e-05, + 2.555509528752458346e-05, + 2.553405907170728977e-05, + 2.551298343635473992e-05, + 2.549186841971161328e-05, + 2.547071406008553392e-05, + 2.544952039584328271e-05, + 2.542828746541195604e-05, + 2.540701530727862360e-05, + 2.538570395999140586e-05, + 2.536435346215533371e-05, + 2.534296385243830824e-05, + 2.532153516956699087e-05, + 2.530006745232784359e-05, + 2.527856073956676297e-05, + 2.525701507019051338e-05, + 2.523543048316226819e-05, + 2.521380701750764404e-05, + 2.519214471231059443e-05, + 2.517044360671440921e-05, + 2.514870373992250400e-05, + 2.512692515119480170e-05, + 2.510510787985203201e-05, + 2.508325196527684612e-05, + 2.506135744690521426e-05, + 2.503942436423573965e-05, + 2.501745275682586042e-05, + 2.499544266428895616e-05, + 2.497339412629972485e-05, + 2.495130718259092690e-05, + 2.492918187295341901e-05, + 2.490701823723778048e-05, + 2.488481631535000349e-05, + 2.486257614725629074e-05, + 2.484029777298405150e-05, + 2.481798123261298410e-05, + 2.479562656628486422e-05, + 2.477323381419958414e-05, + 2.475080301661188663e-05, + 2.472833421383649117e-05, + 2.470582744624885626e-05, + 2.468328275427623817e-05, + 2.466070017840765204e-05, + 2.463807975918951473e-05, + 2.461542153722220589e-05, + 2.459272555316995788e-05, + 2.456999184774797412e-05, + 2.454722046173241393e-05, + 2.452441143595678074e-05, + 2.450156481130885247e-05, + 2.447868062873547910e-05, + 2.445575892924332472e-05, + 2.443279975389040732e-05, + 2.440980314379535178e-05, + 2.438676914013364263e-05, + 2.436369778413354469e-05, + 2.434058911708699595e-05, + 2.431744318033549941e-05, + 2.429426001528103618e-05, + 2.427103966338134587e-05, + 2.424778216615001807e-05, + 2.422448756515739355e-05, + 2.420115590203089634e-05, + 2.417778721845098829e-05, + 2.415438155615735240e-05, + 2.413093895694567071e-05, + 2.410745946266363307e-05, + 2.408394311522057304e-05, + 2.406038995657879418e-05, + 2.403680002875432909e-05, + 2.401317337382167933e-05, + 2.398951003391006141e-05, + 2.396581005120417929e-05, + 2.394207346794513573e-05, + 2.391830032642631581e-05, + 2.389449066899940413e-05, + 2.387064453807043098e-05, + 2.384676197610026353e-05, + 2.382284302560502940e-05, + 2.379888772915685183e-05, + 2.377489612937948923e-05, + 2.375086826895489792e-05, + 2.372680419061842441e-05, + 2.370270393716034362e-05, + 2.367856755142540821e-05, + 2.365439507631395994e-05, + 2.363018655477759961e-05, + 2.360594202982558724e-05, + 2.358166154452019019e-05, + 2.355734514197816034e-05, + 2.353299286537128640e-05, + 2.350860475792227393e-05, + 2.348418086291110147e-05, + 2.345972122367037199e-05, + 2.343522588358673599e-05, + 2.341069488610056276e-05, + 2.338612827470697381e-05, + 2.336152609295138069e-05, + 2.333688838443620029e-05, + 2.331221519281601653e-05, + 2.328750656179881369e-05, + 2.326276253514599334e-05, + 2.323798315667310277e-05, + 2.321316847024585398e-05, + 2.318831851978598847e-05, + 2.316343334926734707e-05, + 2.313851300271670337e-05, + 2.311355752421464805e-05, + 2.308856695789131985e-05, + 2.306354134793183331e-05, + 2.303848073857693950e-05, + 2.301338517411369509e-05, + 2.298825469888577918e-05, + 2.296308935728925141e-05, + 2.293788919376930273e-05, + 2.291265425282652341e-05, + 2.288738457901265774e-05, + 2.286208021693137313e-05, + 2.283674121123968652e-05, + 2.281136760664296349e-05, + 2.278595944790076278e-05, + 2.276051677982765284e-05, + 2.273503964728319990e-05, + 2.270952809518319285e-05, + 2.268398216849472029e-05, + 2.265840191223303309e-05, + 2.263278737146723311e-05, + 2.260713859132070685e-05, + 2.258145561696144895e-05, + 2.255573849361323626e-05, + 2.252998726655066421e-05, + 2.250420198109492182e-05, + 2.247838268262594154e-05, + 2.245252941656672237e-05, + 2.242664222839533739e-05, + 2.240072116364044108e-05, + 2.237476626787817600e-05, + 2.234877758673725495e-05, + 2.232275516590012990e-05, + 2.229669905109295293e-05, + 2.227060928809660801e-05, + 2.224448592274226236e-05, + 2.221832900090644014e-05, + 2.219213856852374485e-05, + 2.216591467157083689e-05, + 2.213965735607865111e-05, + 2.211336666812686405e-05, + 2.208704265384480193e-05, + 2.206068535941152874e-05, + 2.203429483105656453e-05, + 2.200787111505575526e-05, + 2.198141425773750363e-05, + 2.195492430547959771e-05, + 2.192840130470458620e-05, + 2.190184530189073561e-05, + 2.187525634356230636e-05, + 2.184863447629001353e-05, + 2.182197974669696289e-05, + 2.179529220145390750e-05, + 2.176857188728028450e-05, + 2.174181885094557371e-05, + 2.171503313926409690e-05, + 2.168821479910220738e-05, + 2.166136387737475954e-05, + 2.163448042104030452e-05, + 2.160756447711250145e-05, + 2.158061609264968870e-05, + 2.155363531475610372e-05, + 2.152662219058724635e-05, + 2.149957676734569453e-05, + 2.147249909228158543e-05, + 2.144538921269301181e-05, + 2.141824717592675389e-05, + 2.139107302937373587e-05, + 2.136386682047599191e-05, + 2.133662859672172285e-05, + 2.130935840564651934e-05, + 2.128205629483432404e-05, + 2.125472231191292207e-05, + 2.122735650456054440e-05, + 2.119995892050136849e-05, + 2.117252960750650419e-05, + 2.114506861339388193e-05, + 2.111757598602939794e-05, + 2.109005177332213358e-05, + 2.106249602323124001e-05, + 2.103490878376127612e-05, + 2.100729010296328262e-05, + 2.097964002893576451e-05, + 2.095195860981990374e-05, + 2.092424589380680297e-05, + 2.089650192913230852e-05, + 2.086872676407844698e-05, + 2.084092044697306262e-05, + 2.081308302619117606e-05, + 2.078521455014987159e-05, + 2.075731506731433139e-05, + 2.072938462619910275e-05, + 2.070142327535694091e-05, + 2.067343106339074207e-05, + 2.064540803894900669e-05, + 2.061735425072169919e-05, + 2.058926974744767471e-05, + 2.056115457790970200e-05, + 2.053300879093549334e-05, + 2.050483243539903276e-05, + 2.047662556021537521e-05, + 2.044838821434690783e-05, + 2.042012044680434609e-05, + 2.039182230663560714e-05, + 2.036349384293802741e-05, + 2.033513510485349389e-05, + 2.030674614156438175e-05, + 2.027832700230113017e-05, + 2.024987773633711954e-05, + 2.022139839298986742e-05, + 2.019288902162082530e-05, + 2.016434967163660167e-05, + 2.013578039248275500e-05, + 2.010718123365723780e-05, + 2.007855224469302913e-05, + 2.004989347517156846e-05, + 2.002120497471791748e-05, + 1.999248679299554235e-05, + 1.996373897971859227e-05, + 1.993496158464092878e-05, + 1.990615465755689138e-05, + 1.987731824830774524e-05, + 1.984845240677770344e-05, + 1.981955718288889569e-05, + 1.979063262661508003e-05, + 1.976167878796391953e-05, + 1.973269571699069069e-05, + 1.970368346379329608e-05, + 1.967464207850710763e-05, + 1.964557161131743834e-05, + 1.961647211244794807e-05, + 1.958734363216232407e-05, + 1.955818622076991884e-05, + 1.952899992862209771e-05, + 1.949978480610738366e-05, + 1.947054090366348177e-05, + 1.944126827176625088e-05, + 1.941196696093063534e-05, + 1.938263702171712951e-05, + 1.935327850472628905e-05, + 1.932389146060027246e-05, + 1.929447594002376272e-05, + 1.926503199371889518e-05, + 1.923555967245291142e-05, + 1.920605902703399518e-05, + 1.917653010830642059e-05, + 1.914697296716283753e-05, + 1.911738765453305691e-05, + 1.908777422138498240e-05, + 1.905813271873096996e-05, + 1.902846319762289471e-05, + 1.899876570915281842e-05, + 1.896904030445463951e-05, + 1.893928703469879398e-05, + 1.890950595109964163e-05, + 1.887969710491042101e-05, + 1.884986054742450313e-05, + 1.881999632997510680e-05, + 1.879010450393665054e-05, + 1.876018512071952801e-05, + 1.873023823177765346e-05, + 1.870026388860323040e-05, + 1.867026214272802894e-05, + 1.864023304572321978e-05, + 1.861017664920065493e-05, + 1.858009300480750427e-05, + 1.854998216423402117e-05, + 1.851984417920820279e-05, + 1.848967910149714532e-05, + 1.845948698290806044e-05, + 1.842926787528308130e-05, + 1.839902183050700781e-05, + 1.836874890050193979e-05, + 1.833844913722849676e-05, + 1.830812259268587550e-05, + 1.827776931891286988e-05, + 1.824738936798264976e-05, + 1.821698279201044865e-05, + 1.818654964314847137e-05, + 1.815608997358675799e-05, + 1.812560383555332955e-05, + 1.809509128131539421e-05, + 1.806455236317397369e-05, + 1.803398713347170615e-05, + 1.800339564458742513e-05, + 1.797277794893750131e-05, + 1.794213409897701475e-05, + 1.791146414719434410e-05, + 1.788076814611781068e-05, + 1.785004614831675252e-05, + 1.781929820638969303e-05, + 1.778852437297726672e-05, + 1.775772470075719458e-05, + 1.772689924243974738e-05, + 1.769604805077596528e-05, + 1.766517117855221310e-05, + 1.763426867859116967e-05, + 1.760334060375216662e-05, + 1.757238700693203543e-05, + 1.754140794105852087e-05, + 1.751040345910491100e-05, + 1.747937361407113138e-05, + 1.744831845899849019e-05, + 1.741723804696410140e-05, + 1.738613243107548406e-05, + 1.735500166448399289e-05, + 1.732384580037254305e-05, + 1.729266489195680276e-05, + 1.726145899249187133e-05, + 1.723022815526834212e-05, + 1.719897243360652244e-05, + 1.716769188087131416e-05, + 1.713638655045334863e-05, + 1.710505649578345061e-05, + 1.707370177032754930e-05, + 1.704232242758071182e-05, + 1.701091852108100748e-05, + 1.697949010439695809e-05, + 1.694803723112891020e-05, + 1.691655995491574019e-05, + 1.688505832943063266e-05, + 1.685353240837556457e-05, + 1.682198224549484418e-05, + 1.679040789456283587e-05, + 1.675880940938491898e-05, + 1.672718684380479262e-05, + 1.669554025169824830e-05, + 1.666386968697496220e-05, + 1.663217520357955913e-05, + 1.660045685548605928e-05, + 1.656871469670603353e-05, + 1.653694878128431406e-05, + 1.650515916329356654e-05, + 1.647334589684779183e-05, + 1.644150903609002711e-05, + 1.640964863519341649e-05, + 1.637776474836817700e-05, + 1.634585742985588286e-05, + 1.631392673393080713e-05, + 1.628197271490126343e-05, + 1.624999542710390372e-05, + 1.621799492491184642e-05, + 1.618597126272930961e-05, + 1.615392449499274607e-05, + 1.612185467617054509e-05, + 1.608976186076473334e-05, + 1.605764610330506257e-05, + 1.602550745835734105e-05, + 1.599334598051768724e-05, + 1.596116172441402402e-05, + 1.592895474470577710e-05, + 1.589672509608529809e-05, + 1.586447283327215881e-05, + 1.583219801102136757e-05, + 1.579990068411786343e-05, + 1.576758090737766140e-05, + 1.573523873564919076e-05, + 1.570287422380766732e-05, + 1.567048742676333345e-05, + 1.563807839945581334e-05, + 1.560564719685534978e-05, + 1.557319387396281085e-05, + 1.554071848581098424e-05, + 1.550822108745864120e-05, + 1.547570173399931523e-05, + 1.544316048055525086e-05, + 1.541059738227866741e-05, + 1.537801249435198262e-05, + 1.534540587198886298e-05, + 1.531277757042860281e-05, + 1.528012764494438450e-05, + 1.524745615083777963e-05, + 1.521476314343980600e-05, + 1.518204867811238968e-05, + 1.514931281024247635e-05, + 1.511655559524930403e-05, + 1.508377708858542789e-05, + 1.505097734572396738e-05, + 1.501815642217272966e-05, + 1.498531437346848530e-05, + 1.495245125517247230e-05, + 1.491956712287892057e-05, + 1.488666203220927351e-05, + 1.485373603881350764e-05, + 1.482078919837145744e-05, + 1.478782156658695380e-05, + 1.475483319919504077e-05, + 1.472182415196312078e-05, + 1.468879448067809664e-05, + 1.465574424116057627e-05, + 1.462267348925904349e-05, + 1.458958228084394057e-05, + 1.455647067182206952e-05, + 1.452333871812360708e-05, + 1.449018647570321432e-05, + 1.445701400054726015e-05, + 1.442382134866953361e-05, + 1.439060857610518254e-05, + 1.435737573892662423e-05, + 1.432412289322316410e-05, + 1.429085009511679120e-05, + 1.425755740075645223e-05, + 1.422424486631195972e-05, + 1.419091254798841866e-05, + 1.415756050201326185e-05, + 1.412418878463739334e-05, + 1.409079745214244756e-05, + 1.405738656083636947e-05, + 1.402395616704744129e-05, + 1.399050632714022705e-05, + 1.395703709749508117e-05, + 1.392354853452406591e-05, + 1.389004069466362280e-05, + 1.385651363437585513e-05, + 1.382296741014851599e-05, + 1.378940207849631110e-05, + 1.375581769595500508e-05, + 1.372221431909007819e-05, + 1.368859200449223870e-05, + 1.365495080877141068e-05, + 1.362129078857148081e-05, + 1.358761200055678488e-05, + 1.355391450141359002e-05, + 1.352019834785739618e-05, + 1.348646359662682560e-05, + 1.345271030448512210e-05, + 1.341893852822144868e-05, + 1.338514832464488550e-05, + 1.335133975059328301e-05, + 1.331751286292716506e-05, + 1.328366771853127217e-05, + 1.324980437431413970e-05, + 1.321592288720985800e-05, + 1.318202331417180945e-05, + 1.314810571218152501e-05, + 1.311417013824269573e-05, + 1.308021664938254324e-05, + 1.304624530265168251e-05, + 1.301225615512564146e-05, + 1.297824926389862337e-05, + 1.294422468609245159e-05, + 1.291018247885053526e-05, + 1.287612269933925673e-05, + 1.284204540474930990e-05, + 1.280795065228964562e-05, + 1.277383849919644684e-05, + 1.273970900272690972e-05, + 1.270556222016073437e-05, + 1.267139820879992837e-05, + 1.263721702597040767e-05, + 1.260301872901563701e-05, + 1.256880337530583894e-05, + 1.253457102223152580e-05, + 1.250032172720528026e-05, + 1.246605554766295804e-05, + 1.243177254105754694e-05, + 1.239747276486826232e-05, + 1.236315627659420617e-05, + 1.232882313375605099e-05, + 1.229447339389559433e-05, + 1.226010711457763064e-05, + 1.222572435338339870e-05, + 1.219132516791816591e-05, + 1.215690961581278853e-05, + 1.212247775470979494e-05, + 1.208802964227863391e-05, + 1.205356533620923718e-05, + 1.201908489420624097e-05, + 1.198458837400520837e-05, + 1.195007583335150771e-05, + 1.191554733001684499e-05, + 1.188100292179306864e-05, + 1.184644266648759554e-05, + 1.181186662193080734e-05, + 1.177727484597755310e-05, + 1.174266739649344426e-05, + 1.170804433136974211e-05, + 1.167340570851735403e-05, + 1.163875158586058069e-05, + 1.160408202135378057e-05, + 1.156939707296005351e-05, + 1.153469679866765456e-05, + 1.149998125648253327e-05, + 1.146525050443119501e-05, + 1.143050460055287263e-05, + 1.139574360291641976e-05, + 1.136096756959860468e-05, + 1.132617655870108320e-05, + 1.129137062834393749e-05, + 1.125654983665958929e-05, + 1.122171424180809056e-05, + 1.118686390196298309e-05, + 1.115199887531299769e-05, + 1.111711922006957072e-05, + 1.108222499446189744e-05, + 1.104731625673110270e-05, + 1.101239306514672596e-05, + 1.097745547798522859e-05, + 1.094250355354681432e-05, + 1.090753735014761109e-05, + 1.087255692612107882e-05, + 1.083756233981805518e-05, + 1.080255364960800917e-05, + 1.076753091387291705e-05, + 1.073249419101641375e-05, + 1.069744353945892407e-05, + 1.066237901763160471e-05, + 1.062730068399145537e-05, + 1.059220859700756458e-05, + 1.055710281516235996e-05, + 1.052198339695936532e-05, + 1.048685040091681744e-05, + 1.045170388556921274e-05, + 1.041654390946869304e-05, + 1.038137053117881985e-05, + 1.034618380928363763e-05, + 1.031098380238150739e-05, + 1.027577056908659748e-05, + 1.024054416802857864e-05, + 1.020530465785429434e-05, + 1.017005209722137929e-05, + 1.013478654480741577e-05, + 1.009950805930368772e-05, + 1.006421669941667651e-05, + 1.002891252386784246e-05, + 9.993595591395203670e-06, + 9.958265960746981617e-06, + 9.922923690690759249e-06, + 9.887568840007263774e-06, + 9.852201467491837104e-06, + 9.816821631955738596e-06, + 9.781429392220019307e-06, + 9.746024807124641152e-06, + 9.710607935522152956e-06, + 9.675178836279233746e-06, + 9.639737568276513183e-06, + 9.604284190410099608e-06, + 9.568818761585149368e-06, + 9.533341340725250246e-06, + 9.497851986765975542e-06, + 9.462350758656383321e-06, + 9.426837715360600364e-06, + 9.391312915851205144e-06, + 9.355776419118795917e-06, + 9.320228284165422823e-06, + 9.284668570006215883e-06, + 9.249097335669168162e-06, + 9.213514640196672286e-06, + 9.177920542639106705e-06, + 9.142315102062655507e-06, + 9.106698377550707710e-06, + 9.071070428189633889e-06, + 9.035431313084429182e-06, + 8.999781091352328349e-06, + 8.964119822116371717e-06, + 8.928447564522694812e-06, + 8.892764377718320851e-06, + 8.857070320868389390e-06, + 8.821365453149830686e-06, + 8.785649833746456291e-06, + 8.749923521856785635e-06, + 8.714186576695509705e-06, + 8.678439057479186346e-06, + 8.642681023442015404e-06, + 8.606912533829264061e-06, + 8.571133647890988620e-06, + 8.535344424899225891e-06, + 8.499544924125844970e-06, + 8.463735204859813163e-06, + 8.427915326399139002e-06, + 8.392085348053996107e-06, + 8.356245329138722115e-06, + 8.320395328989099840e-06, + 8.284535406940114191e-06, + 8.248665622343260445e-06, + 8.212786034560045807e-06, + 8.176896702955734921e-06, + 8.140997686914901393e-06, + 8.105089045827204417e-06, + 8.069170839088796540e-06, + 8.033243126110187516e-06, + 7.997305966311380647e-06, + 7.961359419115409918e-06, + 7.925403543965743136e-06, + 7.889438400303943978e-06, + 7.853464047587007369e-06, + 7.817480545280925416e-06, + 7.781487952854300783e-06, + 7.745486329794006632e-06, + 7.709475735590920901e-06, + 7.673456229741308654e-06, + 7.637427871754760478e-06, + 7.601390721147667790e-06, + 7.565344837444766971e-06, + 7.529290280179000463e-06, + 7.493227108893059204e-06, + 7.457155383132845240e-06, + 7.421075162456945777e-06, + 7.384986506430312630e-06, + 7.348889474625462464e-06, + 7.312784126624282669e-06, + 7.276670522011333027e-06, + 7.240548720383451057e-06, + 7.204418781343168039e-06, + 7.168280764500321757e-06, + 7.132134729471859988e-06, + 7.095980735883377023e-06, + 7.059818843362611842e-06, + 7.023649111549040756e-06, + 6.987471600087187551e-06, + 6.951286368628300602e-06, + 6.915093476831747946e-06, + 6.878892984358590838e-06, + 6.842684950881042566e-06, + 6.806469436075994585e-06, + 6.770246499626513217e-06, + 6.734016201221737166e-06, + 6.697778600558325091e-06, + 6.661533757334085079e-06, + 6.625281731257355526e-06, + 6.589022582040588871e-06, + 6.552756369401784770e-06, + 6.516483153064461297e-06, + 6.480202992759127940e-06, + 6.443915948216738029e-06, + 6.407622079178280541e-06, + 6.371321445388200348e-06, + 6.335014106595992332e-06, + 6.298700122557589673e-06, + 6.262379553028956891e-06, + 6.226052457775561367e-06, + 6.189718896565881688e-06, + 6.153378929172878088e-06, + 6.117032615373942480e-06, + 6.080680014952362126e-06, + 6.044321187690845763e-06, + 6.007956193381015458e-06, + 5.971585091816918331e-06, + 5.935207942796526655e-06, + 5.898824806121611643e-06, + 5.862435741599290984e-06, + 5.826040809033878683e-06, + 5.789640068244467780e-06, + 5.753233579042330657e-06, + 5.716821401248497518e-06, + 5.680403594687262182e-06, + 5.643980219181204077e-06, + 5.607551334559140178e-06, + 5.571117000657718281e-06, + 5.534677277306724370e-06, + 5.498232224345141509e-06, + 5.461781901614609061e-06, + 5.425326368952873423e-06, + 5.388865686211408009e-06, + 5.352399913232767823e-06, + 5.315929109868222145e-06, + 5.279453335971183245e-06, + 5.242972651392274118e-06, + 5.206487115987348184e-06, + 5.169996789618949578e-06, + 5.133501732141714534e-06, + 5.097002003418384546e-06, + 5.060497663313307082e-06, + 5.023988771685827879e-06, + 4.987475388406370173e-06, + 4.950957573341779331e-06, + 4.914435386356880548e-06, + 4.877908887322418930e-06, + 4.841378136110113674e-06, + 4.804843192586123204e-06, + 4.768304116628736301e-06, + 4.731760968105577606e-06, + 4.695213806891362267e-06, + 4.658662692861300951e-06, + 4.622107685884556508e-06, + 4.585548845840275764e-06, + 4.548986232602972277e-06, + 4.512419906044036594e-06, + 4.475849926039739864e-06, + 4.439276352464600728e-06, + 4.402699245193008227e-06, + 4.366118664100683790e-06, + 4.329534669058082836e-06, + 4.292947319940072984e-06, + 4.256356676619327189e-06, + 4.219762798967854329e-06, + 4.183165746856861147e-06, + 4.146565580158354828e-06, + 4.109962358738494643e-06, + 4.073356142467245584e-06, + 4.036746991211804535e-06, + 4.000134964838113929e-06, + 3.963520123210755860e-06, + 3.926902526194493690e-06, + 3.890282233647658411e-06, + 3.853659305431841245e-06, + 3.817033801405236813e-06, + 3.780405781424227084e-06, + 3.743775305344869616e-06, + 3.707142433016313986e-06, + 3.670507224290460090e-06, + 3.633869739015354246e-06, + 3.597230037036719361e-06, + 3.560588178197849477e-06, + 3.523944222341162800e-06, + 3.487298229301574097e-06, + 3.450650258916163152e-06, + 3.414000371017564943e-06, + 3.377348625435520134e-06, + 3.340695081996756920e-06, + 3.304039800526532198e-06, + 3.267382840842029369e-06, + 3.230724262762003931e-06, + 3.194064126100199908e-06, + 3.157402490666871127e-06, + 3.120739416270309260e-06, + 3.084074962710242057e-06, + 3.047409189785856011e-06, + 3.010742157297368454e-06, + 2.974073925031240057e-06, + 2.937404552776379415e-06, + 2.900734100317510358e-06, + 2.864062627430212572e-06, + 2.827390193890596831e-06, + 2.790716859468676544e-06, + 2.754042683929908082e-06, + 2.717367727035103957e-06, + 2.680692048541946049e-06, + 2.644015708196752442e-06, + 2.607338765752304931e-06, + 2.570661280944938471e-06, + 2.533983313512361902e-06, + 2.497304923187061263e-06, + 2.460626169691297209e-06, + 2.423947112745149709e-06, + 2.387267812068088445e-06, + 2.350588327364155240e-06, + 2.313908718338213116e-06, + 2.277229044689308097e-06, + 2.240549366104043716e-06, + 2.203869742274427575e-06, + 2.167190232874968425e-06, + 2.130510897580474440e-06, + 2.093831796059467966e-06, + 2.057152987969177855e-06, + 2.020474532963610424e-06, + 1.983796490695076231e-06, + 1.947118920799404266e-06, + 1.910441882912186772e-06, + 1.873765436662130251e-06, + 1.837089641664437171e-06, + 1.800414557537034479e-06, + 1.763740243885792881e-06, + 1.727066760306046205e-06, + 1.690394166390675480e-06, + 1.653722521725098743e-06, + 1.617051885880666296e-06, + 1.580382318432493288e-06, + 1.543713878936530114e-06, + 1.507046626947417656e-06, + 1.470380622011861368e-06, + 1.433715923662003031e-06, + 1.397052591431646516e-06, + 1.360390684841487436e-06, + 1.323730263400615360e-06, + 1.287071386614617160e-06, + 1.250414113978928870e-06, + 1.213758504980374737e-06, + 1.177104619098708189e-06, + 1.140452515799988885e-06, + 1.103802254546269807e-06, + 1.067153894788982564e-06, + 1.030507495970472435e-06, + 9.938631175238916362e-07, + 9.572208188747551119e-07, + 9.205806594342953486e-07, + 8.839426986091745607e-07, + 8.473069957948515751e-07, + 8.106736103771252319e-07, + 7.740426017320337986e-07, + 7.374140292273876763e-07, + 7.007879522161576725e-07, + 6.641644300461562700e-07, + 6.275435220534284403e-07, + 5.909252875637770444e-07, + 5.543097858943061268e-07, + 5.176970763467944705e-07, + 4.810872182173897835e-07, + 4.444802707899898248e-07, + 4.078762933377774922e-07, + 3.712753451231217199e-07, + 3.346774853991209310e-07, + 2.980827734029723580e-07, + 2.614912683656747524e-07, + 2.249030295053999542e-07, + 1.883181160290340956e-07, + 1.517365871320784974e-07, + 1.151585020001882390e-07, + 7.858391980255026568e-08, + 4.201289970157752262e-08, + 5.445500846286804558e-09, +-3.111821762616377340e-08, +-6.767819658893958810e-08, +-1.042343769321484488e-07, +-1.407866995547801854e-07, +-1.773351053631718643e-07, +-2.138795352857798777e-07, +-2.504199302569667138e-07, +-2.869562312236203075e-07, +-3.234883791501385384e-07, +-3.600163150087416351e-07, +-3.965399797860911559e-07, +-4.330593144817496589e-07, +-4.695742601066504313e-07, +-5.060847576897095876e-07, +-5.425907482697706799e-07, +-5.790921728940726806e-07, +-6.155889726330090017e-07, +-6.520810885639248662e-07, +-6.885684617777367650e-07, +-7.250510333839082460e-07, +-7.615287445023948424e-07, +-7.980015362621243896e-07, +-8.344693498157391047e-07, +-8.709321263234040218e-07, +-9.073898069594206258e-07, +-9.438423329188270384e-07, +-9.802896453995932800e-07, +-1.016731685625497830e-06, +-1.053168394828320134e-06, +-1.089599714254440370e-06, +-1.126025585169829104e-06, +-1.162445948851993704e-06, +-1.198860746588438430e-06, +-1.235269919691422718e-06, +-1.271673409481770777e-06, +-1.308071157295473151e-06, +-1.344463104490299086e-06, +-1.380849192427980457e-06, +-1.417229362497097968e-06, +-1.453603556095257036e-06, +-1.489971714637344665e-06, +-1.526333779553968157e-06, +-1.562689692291577507e-06, +-1.599039394310898390e-06, +-1.635382827093566973e-06, +-1.671719932132440915e-06, +-1.708050650936585427e-06, +-1.744374925037851117e-06, +-1.780692695974746697e-06, +-1.817003905307121026e-06, +-1.853308494614654547e-06, +-1.889606405488837457e-06, +-1.925897579539521725e-06, +-1.962181958393438354e-06, +-1.998459483692635881e-06, +-2.034730097101076856e-06, +-2.070993740294986323e-06, +-2.107250354969453177e-06, +-2.143499882836883050e-06, +-2.179742265627098691e-06, +-2.215977445085817848e-06, +-2.252205362981210992e-06, +-2.288425961094294696e-06, +-2.324639181225483860e-06, +-2.360844965193081869e-06, +-2.397043254833358104e-06, +-2.433233991999057583e-06, +-2.469417118565906597e-06, +-2.505592576423056064e-06, +-2.541760307479596480e-06, +-2.577920253663090435e-06, +-2.614072356917983158e-06, +-2.650216559212207252e-06, +-2.686352802527577770e-06, +-2.722481028866308433e-06, +-2.758601180249530173e-06, +-2.794713198717365672e-06, +-2.830817026327419525e-06, +-2.866912605161306745e-06, +-2.902999877315069011e-06, +-2.939078784905740867e-06, +-2.975149270069796687e-06, +-3.011211274963285352e-06, +-3.047264741760251805e-06, +-3.083309612659334167e-06, +-3.119345829874157113e-06, +-3.155373335639875627e-06, +-3.191392072211619843e-06, +-3.227401981863077545e-06, +-3.263403006892912975e-06, +-3.299395089616862746e-06, +-3.335378172366219657e-06, +-3.371352197502402927e-06, +-3.407317107400949697e-06, +-3.443272844458049466e-06, +-3.479219351095485254e-06, +-3.515156569751012161e-06, +-3.551084442884954478e-06, +-3.587002912978632751e-06, +-3.622911922532900526e-06, +-3.658811414074608487e-06, +-3.694701330148705022e-06, +-3.730581613316673451e-06, +-3.766452206171157740e-06, +-3.802313051319916736e-06, +-3.838164091392384859e-06, +-3.874005269044546353e-06, +-3.909836526949418869e-06, +-3.945657807803563343e-06, +-3.981469054325547471e-06, +-4.017270209256102413e-06, +-4.053061215356506656e-06, +-4.088842015416781054e-06, +-4.124612552238093417e-06, +-4.160372768655327699e-06, +-4.196122607519514844e-06, +-4.231862011704369338e-06, +-4.267590924111124076e-06, +-4.303309287660681748e-06, +-4.339017045292083410e-06, +-4.374714139976978345e-06, +-4.410400514703725254e-06, +-4.446076112483889849e-06, +-4.481740876358745826e-06, +-4.517394749381731123e-06, +-4.553037674641001015e-06, +-4.588669595241829317e-06, +-4.624290454314776313e-06, +-4.659900195014138697e-06, +-4.695498760518037655e-06, +-4.731086094026953502e-06, +-4.766662138770153817e-06, +-4.802226837996233774e-06, +-4.837780134977970492e-06, +-4.873321973018840106e-06, +-4.908852295437079992e-06, +-4.944371045580241645e-06, +-4.979878166823560135e-06, +-5.015373602562160560e-06, +-5.050857296217499734e-06, +-5.086329191235861851e-06, +-5.121789231086869405e-06, +-5.157237359269878287e-06, +-5.192673519304612142e-06, +-5.228097654735967588e-06, +-5.263509709140444042e-06, +-5.298909626110388060e-06, +-5.334297349268405603e-06, +-5.369672822265763687e-06, +-5.405035988774607841e-06, +-5.440386792494412268e-06, +-5.475725177150443321e-06, +-5.511051086493850987e-06, +-5.546364464300222155e-06, +-5.581665254375942677e-06, +-5.616953400548848669e-06, +-5.652228846674568244e-06, +-5.687491536635091721e-06, +-5.722741414337271531e-06, +-5.757978423719202915e-06, +-5.793202508740851504e-06, +-5.828413613390460278e-06, +-5.863611681683082505e-06, +-5.898796657660598676e-06, +-5.933968485390312134e-06, +-5.969127108971311130e-06, +-6.004272472525058292e-06, +-6.039404520201852637e-06, +-6.074523196179267642e-06, +-6.109628444660763808e-06, +-6.144720209881979566e-06, +-6.179798436101415618e-06, +-6.214863067606816476e-06, +-6.249914048713684768e-06, +-6.284951323765371873e-06, +-6.319974837131563423e-06, +-6.354984533214689651e-06, +-6.389980356442197060e-06, +-6.424962251264923816e-06, +-6.459930162171491682e-06, +-6.494884033672580854e-06, +-6.529823810307308118e-06, +-6.564749436648077809e-06, +-6.599660857291180588e-06, +-6.634558016863255463e-06, +-6.669440860019693973e-06, +-6.704309331443242587e-06, +-6.739163375850316487e-06, +-6.774002937983254297e-06, +-6.808827962608896764e-06, +-6.843638394532670374e-06, +-6.878434178583098507e-06, +-6.913215259618106750e-06, +-6.947981582529840824e-06, +-6.982733092235336509e-06, +-7.017469733682833435e-06, +-7.052191451850380861e-06, +-7.086898191745851229e-06, +-7.121589898405497668e-06, +-7.156266516901856808e-06, +-7.190927992326641262e-06, +-7.225574269812650665e-06, +-7.260205294516778509e-06, +-7.294821011626264931e-06, +-7.329421366365011353e-06, +-7.364006303978144144e-06, +-7.398575769746093161e-06, +-7.433129708983088265e-06, +-7.467668067029533480e-06, +-7.502190789256656360e-06, +-7.536697821072914945e-06, +-7.571189107906948682e-06, +-7.605664595229375124e-06, +-7.640124228535861129e-06, +-7.674567953353423093e-06, +-7.708995715246580639e-06, +-7.743407459802118502e-06, +-7.777803132642999886e-06, +-7.812182679426980721e-06, +-7.846546045838884723e-06, +-7.880893177595316282e-06, +-7.915224020451092833e-06, +-7.949538520183657757e-06, +-7.983836622607183475e-06, +-8.018118273571136578e-06, +-8.052383418952557969e-06, +-8.086632004662403747e-06, +-8.120863976644054436e-06, +-8.155079280871778459e-06, +-8.189277863357174680e-06, +-8.223459670139826233e-06, +-8.257624647292082878e-06, +-8.291772740925276524e-06, +-8.325903897174510211e-06, +-8.360018062212390213e-06, +-8.394115182247814774e-06, +-8.428195203518201742e-06, +-8.462258072295783708e-06, +-8.496303734886101990e-06, +-8.530332137626658152e-06, +-8.564343226893036360e-06, +-8.598336949089840128e-06, +-8.632313250656843472e-06, +-8.666272078067689869e-06, +-8.700213377829782140e-06, +-8.734137096482964466e-06, +-8.768043180605710816e-06, +-8.801931576805983762e-06, +-8.835802231727451703e-06, +-8.869655092048074320e-06, +-8.903490104480175422e-06, +-8.937307215769014845e-06, +-8.971106372698848128e-06, +-9.004887522084078409e-06, +-9.038650610775256802e-06, +-9.072395585657723759e-06, +-9.106122393650099655e-06, +-9.139830981710622292e-06, +-9.173521296827887131e-06, +-9.207193286027127199e-06, +-9.240846896368812090e-06, +-9.274482074948617479e-06, +-9.308098768896073250e-06, +-9.341696925380692633e-06, +-9.375276491602986876e-06, +-9.408837414800516445e-06, +-9.442379642246588294e-06, +-9.475903121250220284e-06, +-9.509407799154789322e-06, +-9.542893623344138464e-06, +-9.576360541233550940e-06, +-9.609808500275969059e-06, +-9.643237447960440760e-06, +-9.676647331810810096e-06, +-9.710038099391795540e-06, +-9.743409698301431064e-06, +-9.776762076169834558e-06, +-9.810095180672672257e-06, +-9.843408959516266216e-06, +-9.876703360443691247e-06, +-9.909978331239401418e-06, +-9.943233819720193902e-06, +-9.976469773741297449e-06, +-1.000968614119517469e-05, +-1.004288287001130019e-05, +-1.007605990815492891e-05, +-1.010921720363462626e-05, +-1.014235470448584252e-05, +-1.017547235879204116e-05, +-1.020857011466816816e-05, +-1.024164792026691162e-05, +-1.027470572378452591e-05, +-1.030774347344620684e-05, +-1.034076111751945951e-05, +-1.037375860431271087e-05, +-1.040673588216805744e-05, +-1.043969289946558346e-05, +-1.047262960462963065e-05, +-1.050554594611226581e-05, +-1.053844187241449222e-05, +-1.057131733206973251e-05, +-1.060417227364984595e-05, +-1.063700664577144398e-05, +-1.066982039708067574e-05, +-1.070261347626699241e-05, +-1.073538583206174109e-05, +-1.076813741323062288e-05, +-1.080086816857835658e-05, +-1.083357804695463504e-05, +-1.086626699723954438e-05, +-1.089893496835672682e-05, +-1.093158190927214067e-05, +-1.096420776898671991e-05, +-1.099681249654230513e-05, +-1.102939604102029676e-05, +-1.106195835154029980e-05, +-1.109449937726598529e-05, +-1.112701906739646411e-05, +-1.115951737117064756e-05, +-1.119199423787330697e-05, +-1.122444961682042853e-05, +-1.125688345737248632e-05, +-1.128929570893306667e-05, +-1.132168632094164302e-05, +-1.135405524287945431e-05, +-1.138640242426820901e-05, +-1.141872781466862995e-05, +-1.145103136368635131e-05, +-1.148331302096330604e-05, +-1.151557273618365846e-05, +-1.154781045907227450e-05, +-1.158002613939498940e-05, +-1.161221972695715925e-05, +-1.164439117160946827e-05, +-1.167654042323941950e-05, +-1.170866743177711327e-05, +-1.174077214719394616e-05, +-1.177285451950267705e-05, +-1.180491449875596856e-05, +-1.183695203505249920e-05, +-1.186896707852798147e-05, +-1.190095957936136890e-05, +-1.193292948777329074e-05, +-1.196487675402475597e-05, +-1.199680132842297756e-05, +-1.202870316131288344e-05, +-1.206058220308271204e-05, +-1.209243840416303650e-05, +-1.212427171502647497e-05, +-1.215608208618649631e-05, +-1.218786946820330529e-05, +-1.221963381167514011e-05, +-1.225137506724415429e-05, +-1.228309318559519346e-05, +-1.231478811745563280e-05, +-1.234645981359423860e-05, +-1.237810822482678239e-05, +-1.240973330200771801e-05, +-1.244133499603580758e-05, +-1.247291325785287468e-05, +-1.250446803844238136e-05, +-1.253599928883535054e-05, +-1.256750696010312224e-05, +-1.259899100335613888e-05, +-1.263045136975671013e-05, +-1.266188801050509101e-05, +-1.269330087684489110e-05, +-1.272468992006784498e-05, +-1.275605509150493537e-05, +-1.278739634253246802e-05, +-1.281871362457054536e-05, +-1.285000688908181121e-05, +-1.288127608757718518e-05, +-1.291252117160876456e-05, +-1.294374209276858082e-05, +-1.297493880270149998e-05, +-1.300611125309083998e-05, +-1.303725939566444724e-05, +-1.306838318220023126e-05, +-1.309948256451209703e-05, +-1.313055749446289110e-05, +-1.316160792396283628e-05, +-1.319263380496274689e-05, +-1.322363508945825205e-05, +-1.325461172949553693e-05, +-1.328556367715584704e-05, +-1.331649088457533090e-05, +-1.334739330392962740e-05, +-1.337827088743962391e-05, +-1.340912358737696882e-05, +-1.343995135605032245e-05, +-1.347075414581796092e-05, +-1.350153190908638365e-05, +-1.353228459830350148e-05, +-1.356301216596280919e-05, +-1.359371456460915546e-05, +-1.362439174682333029e-05, +-1.365504366524171951e-05, +-1.368567027254106331e-05, +-1.371627152144556453e-05, +-1.374684736472542835e-05, +-1.377739775519690977e-05, +-1.380792264572129033e-05, +-1.383842198921004339e-05, +-1.386889573861704645e-05, +-1.389934384694248094e-05, +-1.392976626723862755e-05, +-1.396016295259596312e-05, +-1.399053385615578982e-05, +-1.402087893110891383e-05, +-1.405119813068874369e-05, +-1.408149140817690616e-05, +-1.411175871690192480e-05, +-1.414200001023809684e-05, +-1.417221524161075156e-05, +-1.420240436448828137e-05, +-1.423256733238767468e-05, +-1.426270409887317755e-05, +-1.429281461755644279e-05, +-1.432289884209509167e-05, +-1.435295672619839586e-05, +-1.438298822361910689e-05, +-1.441299328815893314e-05, +-1.444297187366727262e-05, +-1.447292393404137730e-05, +-1.450284942322486745e-05, +-1.453274829521349144e-05, +-1.456262050404672824e-05, +-1.459246600381370312e-05, +-1.462228474865148004e-05, +-1.465207669274403842e-05, +-1.468184179032765517e-05, +-1.471157999568289009e-05, +-1.474129126314004755e-05, +-1.477097554707796688e-05, +-1.480063280192390382e-05, +-1.483026298215257169e-05, +-1.485986604229119137e-05, +-1.488944193691186124e-05, +-1.491899062063677319e-05, +-1.494851204813692857e-05, +-1.497800617413112340e-05, +-1.500747295339105936e-05, +-1.503691234073352741e-05, +-1.506632429102595244e-05, +-1.509570875918482625e-05, +-1.512506570017598711e-05, +-1.515439506901336271e-05, +-1.518369682076427094e-05, +-1.521297091054284183e-05, +-1.524221729350888754e-05, +-1.527143592487972365e-05, +-1.530062675991714511e-05, +-1.532978975393266602e-05, +-1.535892486229299654e-05, +-1.538803204040542646e-05, +-1.541711124373656839e-05, +-1.544616242779770068e-05, +-1.547518554815034090e-05, +-1.550418056041000326e-05, +-1.553314742023993061e-05, +-1.556208608334966459e-05, +-1.559099650550703966e-05, +-1.561987864252505748e-05, +-1.564873245026728417e-05, +-1.567755788465317310e-05, +-1.570635490164349926e-05, +-1.573512345725901440e-05, +-1.576386350756602705e-05, +-1.579257500868298233e-05, +-1.582125791677791744e-05, +-1.584991218807509564e-05, +-1.587853777884069473e-05, +-1.590713464540121486e-05, +-1.593570274412888914e-05, +-1.596424203144751808e-05, +-1.599275246383711127e-05, +-1.602123399782148685e-05, +-1.604968658997968953e-05, +-1.607811019694483517e-05, +-1.610650477539789704e-05, +-1.613487028207131411e-05, +-1.616320667375447645e-05, +-1.619151390727946460e-05, +-1.621979193953932175e-05, +-1.624804072747365759e-05, +-1.627626022807551940e-05, +-1.630445039838988099e-05, +-1.633261119551390015e-05, +-1.636074257659547536e-05, +-1.638884449883868031e-05, +-1.641691691949600170e-05, +-1.644495979587231354e-05, +-1.647297308532993899e-05, +-1.650095674527605669e-05, +-1.652891073317431188e-05, +-1.655683500654337307e-05, +-1.658472952295078935e-05, +-1.661259424001818776e-05, +-1.664042911541997228e-05, +-1.666823410688204313e-05, +-1.669600917218717366e-05, +-1.672375426916723469e-05, +-1.675146935570850023e-05, +-1.677915438975022792e-05, +-1.680680932928499782e-05, +-1.683443413235727920e-05, +-1.686202875706866187e-05, +-1.688959316157037516e-05, +-1.691712730406820070e-05, +-1.694463114282159150e-05, +-1.697210463614344162e-05, +-1.699954774239901542e-05, +-1.702696042001106372e-05, +-1.705434262745234277e-05, +-1.708169432325058127e-05, +-1.710901546598738259e-05, +-1.713630601429714736e-05, +-1.716356592687192189e-05, +-1.719079516245413061e-05, +-1.721799367984143468e-05, +-1.724516143788574940e-05, +-1.727229839549329504e-05, +-1.729940451162325179e-05, +-1.732647974529292998e-05, +-1.735352405557035352e-05, +-1.738053740157920993e-05, +-1.740751974249781357e-05, +-1.743447103755779785e-05, +-1.746139124604918045e-05, +-1.748828032731300771e-05, +-1.751513824074629112e-05, +-1.754196494580103157e-05, +-1.756876040198405669e-05, +-1.759552456885591292e-05, +-1.762225740603585967e-05, +-1.764895887319579095e-05, +-1.767562893005916475e-05, +-1.770226753641191623e-05, +-1.772887465209032818e-05, +-1.775545023698614370e-05, +-1.778199425105126557e-05, +-1.780850665428455949e-05, +-1.783498740674884211e-05, +-1.786143646855776224e-05, +-1.788785379988054421e-05, +-1.791423936094567416e-05, +-1.794059311203508942e-05, +-1.796691501348280287e-05, +-1.799320502568594831e-05, +-1.801946310909280000e-05, +-1.804568922420766511e-05, +-1.807188333159551533e-05, +-1.809804539186915596e-05, +-1.812417536570608195e-05, +-1.815027321383486767e-05, +-1.817633889704184841e-05, +-1.820237237616834203e-05, +-1.822837361211694754e-05, +-1.825434256583823313e-05, +-1.828027919834770729e-05, +-1.830618347071271356e-05, +-1.833205534405713661e-05, +-1.835789477956632182e-05, +-1.838370173847516940e-05, +-1.840947618207908142e-05, +-1.843521807173255912e-05, +-1.846092736884349394e-05, +-1.848660403487668098e-05, +-1.851224803135884025e-05, +-1.853785931986537918e-05, +-1.856343786203704533e-05, +-1.858898361956722430e-05, +-1.861449655420640862e-05, +-1.863997662776715802e-05, +-1.866542380211234938e-05, +-1.869083803916588322e-05, +-1.871621930091126067e-05, +-1.874156754938624382e-05, +-1.876688274668721957e-05, +-1.879216485496819681e-05, +-1.881741383644100626e-05, +-1.884262965337393171e-05, +-1.886781226809664650e-05, +-1.889296164299319672e-05, +-1.891807774050667342e-05, +-1.894316052313818941e-05, +-1.896820995344569342e-05, +-1.899322599404866941e-05, +-1.901820860762139085e-05, +-1.904315775689729474e-05, +-1.906807340466833451e-05, +-1.909295551378450569e-05, +-1.911780404715317163e-05, +-1.914261896774344102e-05, +-1.916740023857965925e-05, +-1.919214782274559616e-05, +-1.921686168338370402e-05, +-1.924154178369400287e-05, +-1.926618808693852570e-05, +-1.929080055643470147e-05, +-1.931537915555971900e-05, +-1.933992384774986631e-05, +-1.936443459650015789e-05, +-1.938891136536348092e-05, +-1.941335411795508791e-05, +-1.943776281794601358e-05, +-1.946213742906747603e-05, +-1.948647791510982983e-05, +-1.951078423992260664e-05, +-1.953505636741364448e-05, +-1.955929426155332630e-05, +-1.958349788636808828e-05, +-1.960766720594503789e-05, +-1.963180218443064267e-05, +-1.965590278602972733e-05, +-1.967996897501026460e-05, +-1.970400071569633466e-05, +-1.972799797247289224e-05, +-1.975196070978472312e-05, +-1.977588889213618658e-05, +-1.979978248409066993e-05, +-1.982364145027452215e-05, +-1.984746575537094505e-05, +-1.987125536412410651e-05, +-1.989501024133822564e-05, +-1.991873035187770492e-05, +-1.994241566066591053e-05, +-1.996606613269104051e-05, +-1.998968173299353791e-05, +-2.001326242668210987e-05, +-2.003680817892123216e-05, +-2.006031895493592647e-05, +-2.008379472001491477e-05, +-2.010723543950528297e-05, +-2.013064107881134252e-05, +-2.015401160340463899e-05, +-2.017734697881297786e-05, +-2.020064717062484942e-05, +-2.022391214449378256e-05, +-2.024714186612680815e-05, +-2.027033630129910596e-05, +-2.029349541584254935e-05, +-2.031661917565005565e-05, +-2.033970754667863211e-05, +-2.036276049494433770e-05, +-2.038577798652102616e-05, +-2.040875998755015125e-05, +-2.043170646423014152e-05, +-2.045461738282058133e-05, +-2.047749270964685254e-05, +-2.050033241108903501e-05, +-2.052313645359193548e-05, +-2.054590480366387460e-05, +-2.056863742787158443e-05, +-2.059133429284327126e-05, +-2.061399536527301008e-05, +-2.063662061190904193e-05, +-2.065920999956880028e-05, +-2.068176349512714066e-05, +-2.070428106552084008e-05, +-2.072676267775249004e-05, +-2.074920829888046760e-05, +-2.077161789602822569e-05, +-2.079399143638308012e-05, +-2.081632888719150349e-05, +-2.083863021576287585e-05, +-2.086089538946885109e-05, +-2.088312437574202206e-05, +-2.090531714208046401e-05, +-2.092747365604139545e-05, +-2.094959388524527435e-05, +-2.097167779737495790e-05, +-2.099372536017580078e-05, +-2.101573654145437103e-05, +-2.103771130908298681e-05, +-2.105964963099335341e-05, +-2.108155147518072056e-05, +-2.110341680970309296e-05, +-2.112524560268099990e-05, +-2.114703782229687860e-05, +-2.116879343679883168e-05, +-2.119051241449468434e-05, +-2.121219472375622634e-05, +-2.123384033301818196e-05, +-2.125544921077705132e-05, +-2.127702132559542681e-05, +-2.129855664609606725e-05, +-2.132005514096556729e-05, +-2.134151677895382201e-05, +-2.136294152887377625e-05, +-2.138432935960077745e-05, +-2.140568024007608917e-05, +-2.142699413930167674e-05, +-2.144827102634345645e-05, +-2.146951087033115670e-05, +-2.149071364045757255e-05, +-2.151187930597819984e-05, +-2.153300783621493500e-05, +-2.155409920055028139e-05, +-2.157515336843138790e-05, +-2.159617030936896817e-05, +-2.161714999293653486e-05, +-2.163809238877417403e-05, +-2.165899746658397456e-05, +-2.167986519612869322e-05, +-2.170069554724100085e-05, +-2.172148848981340612e-05, +-2.174224399380251098e-05, +-2.176296202923182958e-05, +-2.178364256618582181e-05, +-2.180428557481423684e-05, +-2.182489102533074772e-05, +-2.184545888801324616e-05, +-2.186598913320297516e-05, +-2.188648173130911315e-05, +-2.190693665279844357e-05, +-2.192735386820890062e-05, +-2.194773334813880858e-05, +-2.196807506325105597e-05, +-2.198837898427567390e-05, +-2.200864508200550606e-05, +-2.202887332729479587e-05, +-2.204906369106818874e-05, +-2.206921614431132662e-05, +-2.208933065807432082e-05, +-2.210940720347572293e-05, +-2.212944575169239426e-05, +-2.214944627397243501e-05, +-2.216940874162496222e-05, +-2.218933312602415525e-05, +-2.220921939861157660e-05, +-2.222906753089233997e-05, +-2.224887749443330777e-05, +-2.226864926087211030e-05, +-2.228838280190766240e-05, +-2.230807808930415805e-05, +-2.232773509489443476e-05, +-2.234735379057092391e-05, +-2.236693414829433451e-05, +-2.238647614009215225e-05, +-2.240597973805456020e-05, +-2.242544491433706800e-05, +-2.244487164116419476e-05, +-2.246425989081943342e-05, +-2.248360963565814257e-05, +-2.250292084809764635e-05, +-2.252219350062059885e-05, +-2.254142756577894147e-05, +-2.256062301618479897e-05, +-2.257977982451861104e-05, +-2.259889796352829877e-05, +-2.261797740602478895e-05, +-2.263701812488570715e-05, +-2.265602009305449000e-05, +-2.267498328353940602e-05, +-2.269390766941737408e-05, +-2.271279322382841698e-05, +-2.273163991997958157e-05, +-2.275044773114362072e-05, +-2.276921663065948462e-05, +-2.278794659193141955e-05, +-2.280663758843204766e-05, +-2.282528959369776929e-05, +-2.284390258133188348e-05, +-2.286247652500394075e-05, +-2.288101139844967203e-05, +-2.289950717547029743e-05, +-2.291796382993578228e-05, +-2.293638133578005981e-05, +-2.295475966700417198e-05, +-2.297309879767549362e-05, +-2.299139870192712590e-05, +-2.300965935396122691e-05, +-2.302788072804378712e-05, +-2.304606279850824458e-05, +-2.306420553975468523e-05, +-2.308230892624988365e-05, +-2.310037293252607650e-05, +-2.311839753318525867e-05, +-2.313638270289316261e-05, +-2.315432841638333421e-05, +-2.317223464845604184e-05, +-2.319010137397849999e-05, +-2.320792856788384261e-05, +-2.322571620517465698e-05, +-2.324346426091792860e-05, +-2.326117271024845642e-05, +-2.327884152836798550e-05, +-2.329647069054457679e-05, +-2.331406017211577506e-05, +-2.333160994848452617e-05, +-2.334911999511855030e-05, +-2.336659028755753832e-05, +-2.338402080140524728e-05, +-2.340141151233258700e-05, +-2.341876239608014086e-05, +-2.343607342845332412e-05, +-2.345334458532586017e-05, +-2.347057584263874039e-05, +-2.348776717639950581e-05, +-2.350491856268556077e-05, +-2.352202997764016470e-05, +-2.353910139747173759e-05, +-2.355613279846083277e-05, +-2.357312415695263217e-05, +-2.359007544935967377e-05, +-2.360698665216465363e-05, +-2.362385774191621098e-05, +-2.364068869522838279e-05, +-2.365747948878763751e-05, +-2.367423009934495023e-05, +-2.369094050371920097e-05, +-2.370761067880016302e-05, +-2.372424060153996488e-05, +-2.374083024896398301e-05, +-2.375737959816257152e-05, +-2.377388862629377936e-05, +-2.379035731058611847e-05, +-2.380678562833444717e-05, +-2.382317355689940100e-05, +-2.383952107371427057e-05, +-2.385582815627722584e-05, +-2.387209478215467036e-05, +-2.388832092898430072e-05, +-2.390450657446633475e-05, +-2.392065169637482781e-05, +-2.393675627254878235e-05, +-2.395282028089644748e-05, +-2.396884369939417036e-05, +-2.398482650608670791e-05, +-2.400076867908630866e-05, +-2.401667019657595175e-05, +-2.403253103680473912e-05, +-2.404835117809013165e-05, +-2.406413059882116790e-05, +-2.407986927745079335e-05, +-2.409556719250261639e-05, +-2.411122432257057282e-05, +-2.412684064631462301e-05, +-2.414241614246425514e-05, +-2.415795078981739768e-05, +-2.417344456724011443e-05, +-2.418889745366924725e-05, +-2.420430942810817751e-05, +-2.421968046962890984e-05, +-2.423501055737529755e-05, +-2.425029967055545668e-05, +-2.426554778844857609e-05, +-2.428075489040416870e-05, +-2.429592095583834457e-05, +-2.431104596423698893e-05, +-2.432612989515469832e-05, +-2.434117272821523462e-05, +-2.435617444311041709e-05, +-2.437113501960329708e-05, +-2.438605443752387545e-05, +-2.440093267677187399e-05, +-2.441576971731600706e-05, +-2.443056553919356139e-05, +-2.444532012251279492e-05, +-2.446003344744932166e-05, +-2.447470549424842913e-05, +-2.448933624322466169e-05, +-2.450392567476173915e-05, +-2.451847376931216382e-05, +-2.453298050739951422e-05, +-2.454744586961477574e-05, +-2.456186983661886144e-05, +-2.457625238914200555e-05, +-2.459059350798332980e-05, +-2.460489317401313717e-05, +-2.461915136816935777e-05, +-2.463336807145987645e-05, +-2.464754326496218723e-05, +-2.466167692982318324e-05, +-2.467576904725857733e-05, +-2.468981959855581589e-05, +-2.470382856507023330e-05, +-2.471779592822524507e-05, +-2.473172166951741308e-05, +-2.474560577051059765e-05, +-2.475944821283809213e-05, +-2.477324897820502500e-05, +-2.478700804838418915e-05, +-2.480072540521869811e-05, +-2.481440103062142031e-05, +-2.482803490657454533e-05, +-2.484162701513186752e-05, +-2.485517733841562151e-05, +-2.486868585861599430e-05, +-2.488215255799703754e-05, +-2.489557741888990823e-05, +-2.490896042369574183e-05, +-2.492230155488773938e-05, +-2.493560079500674597e-05, +-2.494885812666447622e-05, +-2.496207353254260291e-05, +-2.497524699539272988e-05, +-2.498837849803588714e-05, +-2.500146802336577676e-05, +-2.501451555434148498e-05, +-2.502752107399714855e-05, +-2.504048456543389773e-05, +-2.505340601182333256e-05, +-2.506628539640909489e-05, +-2.507912270250355148e-05, +-2.509191791348759062e-05, +-2.510467101281585350e-05, +-2.511738198401111661e-05, +-2.513005081066591129e-05, +-2.514267747644593224e-05, +-2.515526196508260047e-05, +-2.516780426038205890e-05, +-2.518030434621829099e-05, +-2.519276220653615314e-05, +-2.520517782535126289e-05, +-2.521755118674913831e-05, +-2.522988227488533018e-05, +-2.524217107398773265e-05, +-2.525441756835263270e-05, +-2.526662174234694632e-05, +-2.527878358041046482e-05, +-2.529090306704980022e-05, +-2.530298018684402317e-05, +-2.531501492444375825e-05, +-2.532700726456858529e-05, +-2.533895719200905872e-05, +-2.535086469162648395e-05, +-2.536272974835210756e-05, +-2.537455234718950599e-05, +-2.538633247321138035e-05, +-2.539807011156078968e-05, +-2.540976524745398345e-05, +-2.542141786617437406e-05, +-2.543302795307780879e-05, +-2.544459549359204801e-05, +-2.545612047321387512e-05, +-2.546760287751127848e-05, +-2.547904269212322104e-05, +-2.549043990275941336e-05, +-2.550179449519964607e-05, +-2.551310645529641913e-05, +-2.552437576897124537e-05, +-2.553560242221723561e-05, +-2.554678640109810594e-05, +-2.555792769174825227e-05, +-2.556902628037424112e-05, +-2.558008215325223799e-05, +-2.559109529672968792e-05, +-2.560206569722514605e-05, +-2.561299334122790831e-05, +-2.562387821529786916e-05, +-2.563472030606759168e-05, +-2.564551960023880769e-05, +-2.565627608458505366e-05, +-2.566698974595080002e-05, +-2.567766057125094625e-05, +-2.568828854747321299e-05, +-2.569887366167464203e-05, +-2.570941590098404258e-05, +-2.571991525260130347e-05, +-2.573037170379728809e-05, +-2.574078524191377346e-05, +-2.575115585436483592e-05, +-2.576148352863502159e-05, +-2.577176825227834681e-05, +-2.578201001292312967e-05, +-2.579220879826687730e-05, +-2.580236459607819339e-05, +-2.581247739419861455e-05, +-2.582254718053915779e-05, +-2.583257394308274309e-05, +-2.584255766988375287e-05, +-2.585249834906679201e-05, +-2.586239596882974385e-05, +-2.587225051744068032e-05, +-2.588206198323737736e-05, +-2.589183035463207865e-05, +-2.590155562010611529e-05, +-2.591123776821244686e-05, +-2.592087678757667787e-05, +-2.593047266689440825e-05, +-2.594002539493310699e-05, +-2.594953496053160728e-05, +-2.595900135260012010e-05, +-2.596842456011980391e-05, +-2.597780457214510921e-05, +-2.598714137779866931e-05, +-2.599643496627789354e-05, +-2.600568532684964119e-05, +-2.601489244885244069e-05, +-2.602405632169783132e-05, +-2.603317693486637539e-05, +-2.604225427791130045e-05, +-2.605128834045849256e-05, +-2.606027911220359941e-05, +-2.606922658291417499e-05, +-2.607813074243097730e-05, +-2.608699158066302501e-05, +-2.609580908759430597e-05, +-2.610458325327826815e-05, +-2.611331406784007947e-05, +-2.612200152147842015e-05, +-2.613064560446053266e-05, +-2.613924630712692102e-05, +-2.614780361989036490e-05, +-2.615631753323413404e-05, +-2.616478803771280141e-05, +-2.617321512395463863e-05, +-2.618159878265680481e-05, +-2.618993900458935811e-05, +-2.619823578059503211e-05, +-2.620648910158670489e-05, +-2.621469895854946916e-05, +-2.622286534254022572e-05, +-2.623098824468695495e-05, +-2.623906765619054985e-05, +-2.624710356832248497e-05, +-2.625509597242580917e-05, +-2.626304485991714117e-05, +-2.627095022228211256e-05, +-2.627881205107946742e-05, +-2.628663033794039828e-05, +-2.629440507456668597e-05, +-2.630213625273216673e-05, +-2.630982386428245778e-05, +-2.631746790113468284e-05, +-2.632506835527877320e-05, +-2.633262521877511973e-05, +-2.634013848375656513e-05, +-2.634760814242751621e-05, +-2.635503418706414380e-05, +-2.636241661001426076e-05, +-2.636975540369833169e-05, +-2.637705056060776865e-05, +-2.638430207330580871e-05, +-2.639150993442787647e-05, +-2.639867413668089291e-05, +-2.640579467284336342e-05, +-2.641287153576684494e-05, +-2.641990471837329636e-05, +-2.642689421365731478e-05, +-2.643384001468489195e-05, +-2.644074211459372271e-05, +-2.644760050659443818e-05, +-2.645441518396832219e-05, +-2.646118614006898504e-05, +-2.646791336832184170e-05, +-2.647459686222410842e-05, +-2.648123661534454863e-05, +-2.648783262132499761e-05, +-2.649438487387782476e-05, +-2.650089336678779369e-05, +-2.650735809391152690e-05, +-2.651377904917746512e-05, +-2.652015622658555560e-05, +-2.652648962020878016e-05, +-2.653277922419095290e-05, +-2.653902503274799076e-05, +-2.654522704016778814e-05, +-2.655138524080979002e-05, +-2.655749962910634718e-05, +-2.656357019956086634e-05, +-2.656959694674801336e-05, +-2.657557986531594270e-05, +-2.658151894998368517e-05, +-2.658741419554200506e-05, +-2.659326559685452847e-05, +-2.659907314885592383e-05, +-2.660483684655294209e-05, +-2.661055668502437604e-05, +-2.661623265942055885e-05, +-2.662186476496471600e-05, +-2.662745299695116609e-05, +-2.663299735074532772e-05, +-2.663849782178652476e-05, +-2.664395440558439839e-05, +-2.664936709772077733e-05, +-2.665473589385068410e-05, +-2.666006078969890625e-05, +-2.666534178106326928e-05, +-2.667057886381399967e-05, +-2.667577203389248826e-05, +-2.668092128731182548e-05, +-2.668602662015828205e-05, +-2.669108802858793437e-05, +-2.669610550883095049e-05, +-2.670107905718804617e-05, +-2.670600867003188411e-05, +-2.671089434380814466e-05, +-2.671573607503293388e-05, +-2.672053386029465377e-05, +-2.672528769625450714e-05, +-2.672999757964474930e-05, +-2.673466350726933858e-05, +-2.673928547600530855e-05, +-2.674386348279964755e-05, +-2.674839752467307643e-05, +-2.675288759871730416e-05, +-2.675733370209586813e-05, +-2.676173583204451020e-05, +-2.676609398587061089e-05, +-2.677040816095332151e-05, +-2.677467835474424179e-05, +-2.677890456476620016e-05, +-2.678308678861388055e-05, +-2.678722502395481172e-05, +-2.679131926852667371e-05, +-2.679536952014018110e-05, +-2.679937577667801580e-05, +-2.680333803609401388e-05, +-2.680725629641417522e-05, +-2.681113055573637892e-05, +-2.681496081222995977e-05, +-2.681874706413674164e-05, +-2.682248930976991602e-05, +-2.682618754751455700e-05, +-2.682984177582747220e-05, +-2.683345199323737893e-05, +-2.683701819834458235e-05, +-2.684054038982173441e-05, +-2.684401856641279704e-05, +-2.684745272693355722e-05, +-2.685084287027174208e-05, +-2.685418899538666323e-05, +-2.685749110130934209e-05, +-2.686074918714311636e-05, +-2.686396325206249144e-05, +-2.686713329531384856e-05, +-2.687025931621545157e-05, +-2.687334131415700645e-05, +-2.687637928860057952e-05, +-2.687937323907933703e-05, +-2.688232316519837867e-05, +-2.688522906663451395e-05, +-2.688809094313631299e-05, +-2.689090879452366270e-05, +-2.689368262068900684e-05, +-2.689641242159564177e-05, +-2.689909819727891250e-05, +-2.690173994784562310e-05, +-2.690433767347458899e-05, +-2.690689137441566457e-05, +-2.690940105099118315e-05, +-2.691186670359450343e-05, +-2.691428833269078204e-05, +-2.691666593881683118e-05, +-2.691899952258093232e-05, +-2.692128908466334439e-05, +-2.692353462581568039e-05, +-2.692573614686067358e-05, +-2.692789364869355308e-05, +-2.693000713228061070e-05, +-2.693207659865941774e-05, +-2.693410204893998718e-05, +-2.693608348430305921e-05, +-2.693802090600114145e-05, +-2.693991431535824806e-05, +-2.694176371377004199e-05, +-2.694356910270372660e-05, +-2.694533048369797453e-05, +-2.694704785836250411e-05, +-2.694872122837917381e-05, +-2.695035059550103011e-05, +-2.695193596155228384e-05, +-2.695347732842925541e-05, +-2.695497469809905348e-05, +-2.695642807260047619e-05, +-2.695783745404390275e-05, +-2.695920284461094781e-05, +-2.696052424655440055e-05, +-2.696180166219904790e-05, +-2.696303509394030245e-05, +-2.696422454424546612e-05, +-2.696537001565308650e-05, +-2.696647151077280434e-05, +-2.696752903228611588e-05, +-2.696854258294529205e-05, +-2.696951216557389347e-05, +-2.697043778306733625e-05, +-2.697131943839183152e-05, +-2.697215713458485636e-05, +-2.697295087475570270e-05, +-2.697370066208410852e-05, +-2.697440649982155207e-05, +-2.697506839129060481e-05, +-2.697568633988506348e-05, +-2.697626034906987897e-05, +-2.697679042238115973e-05, +-2.697727656342625307e-05, +-2.697771877588370110e-05, +-2.697811706350314588e-05, +-2.697847143010512615e-05, +-2.697878187958179893e-05, +-2.697904841589587576e-05, +-2.697927104308142895e-05, +-2.697944976524373922e-05, +-2.697958458655882129e-05, +-2.697967551127405751e-05, +-2.697972254370764895e-05, +-2.697972568824872383e-05, +-2.697968494935779830e-05, +-2.697960033156596670e-05, +-2.697947183947554527e-05, +-2.697929947775972999e-05, +-2.697908325116264396e-05, +-2.697882316449937135e-05, +-2.697851922265600476e-05, +-2.697817143058920143e-05, +-2.697777979332691844e-05, +-2.697734431596770800e-05, +-2.697686500368118157e-05, +-2.697634186170751189e-05, +-2.697577489535789706e-05, +-2.697516411001438106e-05, +-2.697450951112963005e-05, +-2.697381110422723737e-05, +-2.697306889490141857e-05, +-2.697228288881709272e-05, +-2.697145309171020431e-05, +-2.697057950938711677e-05, +-2.696966214772501225e-05, +-2.696870101267169511e-05, +-2.696769611024550046e-05, +-2.696664744653578204e-05, +-2.696555502770206180e-05, +-2.696441885997488032e-05, +-2.696323894965507514e-05, +-2.696201530311416700e-05, +-2.696074792679424803e-05, +-2.695943682720788014e-05, +-2.695808201093821693e-05, +-2.695668348463884452e-05, +-2.695524125503383569e-05, +-2.695375532891786176e-05, +-2.695222571315587063e-05, +-2.695065241468335793e-05, +-2.694903544050608911e-05, +-2.694737479770035020e-05, +-2.694567049341277504e-05, +-2.694392253486034520e-05, +-2.694213092933032570e-05, +-2.694029568418039369e-05, +-2.693841680683840470e-05, +-2.693649430480258238e-05, +-2.693452818564142021e-05, +-2.693251845699359007e-05, +-2.693046512656783038e-05, +-2.692836820214352552e-05, +-2.692622769156989603e-05, +-2.692404360276627983e-05, +-2.692181594372235247e-05, +-2.691954472249774086e-05, +-2.691722994722236549e-05, +-2.691487162609606772e-05, +-2.691246976738870126e-05, +-2.691002437944038628e-05, +-2.690753547066114014e-05, +-2.690500304953074518e-05, +-2.690242712459941287e-05, +-2.689980770448700448e-05, +-2.689714479788334284e-05, +-2.689443841354810725e-05, +-2.689168856031103343e-05, +-2.688889524707171699e-05, +-2.688605848279958631e-05, +-2.688317827653371285e-05, +-2.688025463738307873e-05, +-2.687728757452660056e-05, +-2.687427709721269226e-05, +-2.687122321475969542e-05, +-2.686812593655563196e-05, +-2.686498527205818376e-05, +-2.686180123079482147e-05, +-2.685857382236227252e-05, +-2.685530305642742241e-05, +-2.685198894272654215e-05, +-2.684863149106520025e-05, +-2.684523071131895383e-05, +-2.684178661343286418e-05, +-2.683829920742091731e-05, +-2.683476850336737250e-05, +-2.683119451142560014e-05, +-2.682757724181816304e-05, +-2.682391670483739581e-05, +-2.682021291084500506e-05, +-2.681646587027194744e-05, +-2.681267559361859900e-05, +-2.680884209145439949e-05, +-2.680496537441837411e-05, +-2.680104545321886585e-05, +-2.679708233863315262e-05, +-2.679307604150804356e-05, +-2.678902657275951317e-05, +-2.678493394337236243e-05, +-2.678079816440096084e-05, +-2.677661924696855521e-05, +-2.677239720226755771e-05, +-2.676813204155965083e-05, +-2.676382377617504883e-05, +-2.675947241751354801e-05, +-2.675507797704363227e-05, +-2.675064046630285259e-05, +-2.674615989689758645e-05, +-2.674163628050347491e-05, +-2.673706962886448409e-05, +-2.673245995379390806e-05, +-2.672780726717364041e-05, +-2.672311158095462145e-05, +-2.671837290715637069e-05, +-2.671359125786742725e-05, +-2.670876664524447574e-05, +-2.670389908151349486e-05, +-2.669898857896904927e-05, +-2.669403514997406254e-05, +-2.668903880696066086e-05, +-2.668399956242870595e-05, +-2.667891742894742813e-05, +-2.667379241915409819e-05, +-2.666862454575486086e-05, +-2.666341382152407412e-05, +-2.665816025930482761e-05, +-2.665286387200824464e-05, +-2.664752467261418016e-05, +-2.664214267417084131e-05, +-2.663671788979466541e-05, +-2.663125033267043856e-05, +-2.662574001605152267e-05, +-2.662018695325859164e-05, +-2.661459115768213183e-05, +-2.660895264277935210e-05, +-2.660327142207643687e-05, +-2.659754750916768897e-05, +-2.659178091771496040e-05, +-2.658597166144858068e-05, +-2.658011975416755681e-05, +-2.657422520973776390e-05, +-2.656828804209373420e-05, +-2.656230826523825724e-05, +-2.655628589324089589e-05, +-2.655022094024083568e-05, +-2.654411342044355100e-05, +-2.653796334812329527e-05, +-2.653177073762176270e-05, +-2.652553560334889801e-05, +-2.651925795978142262e-05, +-2.651293782146528087e-05, +-2.650657520301264491e-05, +-2.650017011910421185e-05, +-2.649372258448824154e-05, +-2.648723261397993315e-05, +-2.648070022246302776e-05, +-2.647412542488866995e-05, +-2.646750823627455734e-05, +-2.646084867170679736e-05, +-2.645414674633901272e-05, +-2.644740247539106750e-05, +-2.644061587415217067e-05, +-2.643378695797685778e-05, +-2.642691574228836889e-05, +-2.642000224257705620e-05, +-2.641304647439934725e-05, +-2.640604845338063162e-05, +-2.639900819521271303e-05, +-2.639192571565398556e-05, +-2.638480103053077533e-05, +-2.637763415573625967e-05, +-2.637042510723065013e-05, +-2.636317390104128051e-05, +-2.635588055326257981e-05, +-2.634854508005536744e-05, +-2.634116749764796797e-05, +-2.633374782233548265e-05, +-2.632628607047983349e-05, +-2.631878225851019010e-05, +-2.631123640292147220e-05, +-2.630364852027636214e-05, +-2.629601862720377687e-05, +-2.628834674039967089e-05, +-2.628063287662643321e-05, +-2.627287705271343280e-05, +-2.626507928555560579e-05, +-2.625723959211573560e-05, +-2.624935798942245403e-05, +-2.624143449457101371e-05, +-2.623346912472343715e-05, +-2.622546189710727338e-05, +-2.621741282901735292e-05, +-2.620932193781450709e-05, +-2.620118924092613386e-05, +-2.619301475584547275e-05, +-2.618479850013277375e-05, +-2.617654049141319330e-05, +-2.616824074737931504e-05, +-2.615989928578945915e-05, +-2.615151612446779754e-05, +-2.614309128130498742e-05, +-2.613462477425778846e-05, +-2.612611662134802263e-05, +-2.611756684066451897e-05, +-2.610897545036162284e-05, +-2.610034246865960923e-05, +-2.609166791384497419e-05, +-2.608295180426898130e-05, +-2.607419415834973518e-05, +-2.606539499457068737e-05, +-2.605655433148104286e-05, +-2.604767218769560091e-05, +-2.603874858189526997e-05, +-2.602978353282546853e-05, +-2.602077705929811056e-05, +-2.601172918019042983e-05, +-2.600263991444509170e-05, +-2.599350928107019312e-05, +-2.598433729913958114e-05, +-2.597512398779119273e-05, +-2.596586936623053771e-05, +-2.595657345372612827e-05, +-2.594723626961315498e-05, +-2.593785783329190123e-05, +-2.592843816422693004e-05, +-2.591897728194846303e-05, +-2.590947520605313260e-05, +-2.589993195620032612e-05, +-2.589034755211588916e-05, +-2.588072201359070928e-05, +-2.587105536047926247e-05, +-2.586134761270337062e-05, +-2.585159879024706513e-05, +-2.584180891316099481e-05, +-2.583197800156033209e-05, +-2.582210607562393948e-05, +-2.581219315559618902e-05, +-2.580223926178728077e-05, +-2.579224441456977673e-05, +-2.578220863438233798e-05, +-2.577213194172810852e-05, +-2.576201435717329562e-05, +-2.575185590135090701e-05, +-2.574165659495717968e-05, +-2.573141645875191540e-05, +-2.572113551356066262e-05, +-2.571081378027313422e-05, +-2.570045127984160835e-05, +-2.569004803328565822e-05, +-2.567960406168594165e-05, +-2.566911938618920538e-05, +-2.565859402800600483e-05, +-2.564802800840963008e-05, +-2.563742134873964982e-05, +-2.562677407039846565e-05, +-2.561608619485150861e-05, +-2.560535774362946514e-05, +-2.559458873832644749e-05, +-2.558377920060032581e-05, +-2.557292915217330745e-05, +-2.556203861482990753e-05, +-2.555110761041979833e-05, +-2.554013616085563069e-05, +-2.552912428811386758e-05, +-2.551807201423453666e-05, +-2.550697936132144720e-05, +-2.549584635154077380e-05, +-2.548467300712343826e-05, +-2.547345935036326984e-05, +-2.546220540361730336e-05, +-2.545091118930622312e-05, +-2.543957672991412229e-05, +-2.542820204798714769e-05, +-2.541678716613593919e-05, +-2.540533210703382053e-05, +-2.539383689341718551e-05, +-2.538230154808602653e-05, +-2.537072609390184755e-05, +-2.535911055379064561e-05, +-2.534745495074067467e-05, +-2.533575930780340783e-05, +-2.532402364809263951e-05, +-2.531224799478604394e-05, +-2.530043237112215978e-05, +-2.528857680040382902e-05, +-2.527668130599601505e-05, +-2.526474591132637186e-05, +-2.525277063988510515e-05, +-2.524075551522531787e-05, +-2.522870056096135686e-05, +-2.521660580077124549e-05, +-2.520447125839511162e-05, +-2.519229695763523157e-05, +-2.518008292235678235e-05, +-2.516782917648571728e-05, +-2.515553574401115461e-05, +-2.514320264898588914e-05, +-2.513082991552186568e-05, +-2.511841756779504103e-05, +-2.510596563004347979e-05, +-2.509347412656569087e-05, +-2.508094308172354801e-05, +-2.506837251994050762e-05, +-2.505576246570157832e-05, +-2.504311294355435769e-05, +-2.503042397810657584e-05, +-2.501769559402865353e-05, +-2.500492781605417303e-05, +-2.499212066897529404e-05, +-2.497927417764782233e-05, +-2.496638836698903113e-05, +-2.495346326197627203e-05, +-2.494049888764911628e-05, +-2.492749526911025264e-05, +-2.491445243152051359e-05, +-2.490137040010409984e-05, +-2.488824920014635772e-05, +-2.487508885699195636e-05, +-2.486188939605019348e-05, +-2.484865084278786682e-05, +-2.483537322273484080e-05, +-2.482205656148209154e-05, +-2.480870088467993493e-05, +-2.479530621804048639e-05, +-2.478187258733852819e-05, +-2.476840001840634263e-05, +-2.475488853713916345e-05, +-2.474133816949286184e-05, +-2.472774894148190667e-05, +-2.471412087918509393e-05, +-2.470045400873798096e-05, +-2.468674835633884618e-05, +-2.467300394824584311e-05, +-2.465922081077827425e-05, +-2.464539897031332494e-05, +-2.463153845329262281e-05, +-2.461763928621397746e-05, +-2.460370149563777053e-05, +-2.458972510818459076e-05, +-2.457571015053267594e-05, +-2.456165664942402851e-05, +-2.454756463165884547e-05, +-2.453343412409607740e-05, +-2.451926515365641002e-05, +-2.450505774731977056e-05, +-2.449081193212593419e-05, +-2.447652773517500178e-05, +-2.446220518362507900e-05, +-2.444784430469574242e-05, +-2.443344512566561356e-05, +-2.441900767387280614e-05, +-2.440453197671482448e-05, +-2.439001806164961374e-05, +-2.437546595619240563e-05, +-2.436087568791974012e-05, +-2.434624728446675151e-05, +-2.433158077352815779e-05, +-2.431687618285753897e-05, +-2.430213354026842127e-05, +-2.428735287363157678e-05, +-2.427253421087872333e-05, +-2.425767757999984441e-05, +-2.424278300904393802e-05, +-2.422785052611969766e-05, +-2.421288015939257479e-05, +-2.419787193708879041e-05, +-2.418282588749276685e-05, +-2.416774203894739883e-05, +-2.415262041985448372e-05, +-2.413746105867492825e-05, +-2.412226398392623112e-05, +-2.410702922418646402e-05, +-2.409175680809127321e-05, +-2.407644676433477729e-05, +-2.406109912166955371e-05, +-2.404571390890691655e-05, +-2.403029115491460925e-05, +-2.401483088862033839e-05, +-2.399933313900945962e-05, +-2.398379793512528935e-05, +-2.396822530606980951e-05, +-2.395261528100103832e-05, +-2.393696788913629648e-05, +-2.392128315975240030e-05, +-2.390556112218043716e-05, +-2.388980180581165412e-05, +-2.387400524009491680e-05, +-2.385817145453507973e-05, +-2.384230047869613045e-05, +-2.382639234219923128e-05, +-2.381044707472294961e-05, +-2.379446470600386107e-05, +-2.377844526583394399e-05, +-2.376238878406398115e-05, +-2.374629529060381722e-05, +-2.373016481541656168e-05, +-2.371399738852508730e-05, +-2.369779304000959740e-05, +-2.368155180000497637e-05, +-2.366527369870462840e-05, +-2.364895876636103657e-05, +-2.363260703327929821e-05, +-2.361621852982410114e-05, +-2.359979328641691827e-05, +-2.358333133353317511e-05, +-2.356683270170979854e-05, +-2.355029742153538446e-05, +-2.353372552365804129e-05, +-2.351711703878220516e-05, +-2.350047199766673234e-05, +-2.348379043112805366e-05, +-2.346707237004132303e-05, +-2.345031784533360393e-05, +-2.343352688799092012e-05, +-2.341669952905551461e-05, +-2.339983579962299351e-05, +-2.338293573084974599e-05, +-2.336599935394339318e-05, +-2.334902670017015056e-05, +-2.333201780085151773e-05, +-2.331497268736470877e-05, +-2.329789139114271993e-05, +-2.328077394367514282e-05, +-2.326362037650471870e-05, +-2.324643072123228508e-05, +-2.322920500951381796e-05, +-2.321194327305829049e-05, +-2.319464554363417818e-05, +-2.317731185306317395e-05, +-2.315994223322081149e-05, +-2.314253671604014822e-05, +-2.312509533350862444e-05, +-2.310761811766874439e-05, +-2.309010510061891986e-05, +-2.307255631451026503e-05, +-2.305497179155121111e-05, +-2.303735156400488053e-05, +-2.301969566418648824e-05, +-2.300200412447030773e-05, +-2.298427697728316918e-05, +-2.296651425510509305e-05, +-2.294871599047282391e-05, +-2.293088221597712332e-05, +-2.291301296426299680e-05, +-2.289510826803003611e-05, +-2.287716816003293414e-05, +-2.285919267307841198e-05, +-2.284118184002965053e-05, +-2.282313569380329201e-05, +-2.280505426737021587e-05, +-2.278693759375597584e-05, +-2.276878570603789291e-05, +-2.275059863734969708e-05, +-2.273237642087805790e-05, +-2.271411908986349252e-05, +-2.269582667760041648e-05, +-2.267749921743757060e-05, +-2.265913674277519874e-05, +-2.264073928706933031e-05, +-2.262230688382882248e-05, +-2.260383956661600054e-05, +-2.258533736904734906e-05, +-2.256680032479043208e-05, +-2.254822846756843321e-05, +-2.252962183115693015e-05, +-2.251098044938477217e-05, +-2.249230435613368034e-05, +-2.247359358533969429e-05, +-2.245484817098900474e-05, +-2.243606814712256479e-05, +-2.241725354783644908e-05, +-2.239840440727491145e-05, +-2.237952075963799137e-05, +-2.236060263917852213e-05, +-2.234165008019958307e-05, +-2.232266311705908022e-05, +-2.230364178416680552e-05, +-2.228458611598484328e-05, +-2.226549614702862399e-05, +-2.224637191186325830e-05, +-2.222721344510786027e-05, +-2.220802078143621489e-05, +-2.218879395556929365e-05, +-2.216953300228347414e-05, +-2.215023795640702321e-05, +-2.213090885281778286e-05, +-2.211154572644793054e-05, +-2.209214861228069268e-05, +-2.207271754535090037e-05, +-2.205325256074530779e-05, +-2.203375369360298190e-05, +-2.201422097911129086e-05, +-2.199465445251493339e-05, +-2.197505414910416166e-05, +-2.195542010422408169e-05, +-2.193575235327106533e-05, +-2.191605093169019219e-05, +-2.189631587497946452e-05, +-2.187654721869050175e-05, +-2.185674499842101885e-05, +-2.183690924982299508e-05, +-2.181704000859952309e-05, +-2.179713731050106836e-05, +-2.177720119133471209e-05, +-2.175723168695272634e-05, +-2.173722883326118335e-05, +-2.171719266621594731e-05, +-2.169712322182364682e-05, +-2.167702053614118017e-05, +-2.165688464527680635e-05, +-2.163671558538660445e-05, +-2.161651339267967441e-05, +-2.159627810341516567e-05, +-2.157600975389892969e-05, +-2.155570838049234261e-05, +-2.153537401960398741e-05, +-2.151500670769100241e-05, +-2.149460648126262860e-05, +-2.147417337687751950e-05, +-2.145370743114388682e-05, +-2.143320868072068293e-05, +-2.141267716231366386e-05, +-2.139211291268103732e-05, +-2.137151596863047772e-05, +-2.135088636701566693e-05, +-2.133022414474473069e-05, +-2.130952933877292707e-05, +-2.128880198610257865e-05, +-2.126804212378820559e-05, +-2.124724978893232093e-05, +-2.122642501868670452e-05, +-2.120556785025206085e-05, +-2.118467832087886268e-05, +-2.116375646786411536e-05, +-2.114280232855585289e-05, +-2.112181594035029530e-05, +-2.110079734069223825e-05, +-2.107974656707598478e-05, +-2.105866365704169970e-05, +-2.103754864818075941e-05, +-2.101640157813194367e-05, +-2.099522248458268243e-05, +-2.097401140526829348e-05, +-2.095276837797358169e-05, +-2.093149344052852925e-05, +-2.091018663081406571e-05, +-2.088884798675813770e-05, +-2.086747754633671865e-05, +-2.084607534757458461e-05, +-2.082464142854157719e-05, +-2.080317582735799744e-05, +-2.078167858219096022e-05, +-2.076014973125517351e-05, +-2.073858931281299253e-05, +-2.071699736517498906e-05, +-2.069537392669653950e-05, +-2.067371903578310363e-05, +-2.065203273088654846e-05, +-2.063031505050578861e-05, +-2.060856603318711493e-05, +-2.058678571752465533e-05, +-2.056497414215683074e-05, +-2.054313134577175583e-05, +-2.052125736710357982e-05, +-2.049935224493325896e-05, +-2.047741601808928161e-05, +-2.045544872544416491e-05, +-2.043345040591873735e-05, +-2.041142109848340257e-05, +-2.038936084214914727e-05, +-2.036726967597736338e-05, +-2.034514763907566709e-05, +-2.032299477059502238e-05, +-2.030081110973558549e-05, +-2.027859669574253417e-05, +-2.025635156790725689e-05, +-2.023407576556698016e-05, +-2.021176932810594083e-05, +-2.018943229495036147e-05, +-2.016706470557889596e-05, +-2.014466659950929050e-05, +-2.012223801630868682e-05, +-2.009977899558990208e-05, +-2.007728957700729869e-05, +-2.005476980026646764e-05, +-2.003221970511567340e-05, +-2.000963933134628769e-05, +-1.998702871879794613e-05, +-1.996438790735540411e-05, +-1.994171693694472171e-05, +-1.991901584754359757e-05, +-1.989628467916801279e-05, +-1.987352347188275792e-05, +-1.985073226579727907e-05, +-1.982791110106200860e-05, +-1.980506001787781458e-05, +-1.978217905648732721e-05, +-1.975926825717563674e-05, +-1.973632766027534521e-05, +-1.971335730616330365e-05, +-1.969035723525693258e-05, +-1.966732748802374267e-05, +-1.964426810497236294e-05, +-1.962117912665372664e-05, +-1.959806059366565875e-05, +-1.957491254664894578e-05, +-1.955173502628831153e-05, +-1.952852807331336574e-05, +-1.950529172849445030e-05, +-1.948202603264852779e-05, +-1.945873102663618298e-05, +-1.943540675135763839e-05, +-1.941205324776244776e-05, +-1.938867055684069703e-05, +-1.936525871962372942e-05, +-1.934181777718915309e-05, +-1.931834777065682623e-05, +-1.929484874118959900e-05, +-1.927132072999457736e-05, +-1.924776377831849145e-05, +-1.922417792745444141e-05, +-1.920056321873682190e-05, +-1.917691969354328387e-05, +-1.915324739329391803e-05, +-1.912954635945241693e-05, +-1.910581663352202617e-05, +-1.908205825705151093e-05, +-1.905827127163103255e-05, +-1.903445571889307694e-05, +-1.901061164051240371e-05, +-1.898673907820692711e-05, +-1.896283807373356218e-05, +-1.893890866889445213e-05, +-1.891495090553263830e-05, +-1.889096482553299870e-05, +-1.886695047082330507e-05, +-1.884290788336996742e-05, +-1.881883710518428510e-05, +-1.879473817831791012e-05, +-1.877061114486423289e-05, +-1.874645604695789432e-05, +-1.872227292677618852e-05, +-1.869806182653437358e-05, +-1.867382278849220737e-05, +-1.864955585494966145e-05, +-1.862526106824755133e-05, +-1.860093847076789558e-05, +-1.857658810493464431e-05, +-1.855221001320948800e-05, +-1.852780423809802734e-05, +-1.850337082214565662e-05, +-1.847890980793816005e-05, +-1.845442123810334145e-05, +-1.842990515530606741e-05, +-1.840536160225375269e-05, +-1.838079062169746474e-05, +-1.835619225642213536e-05, +-1.833156654925716223e-05, +-1.830691354307203137e-05, +-1.828223328077327128e-05, +-1.825752580531028385e-05, +-1.823279115967167167e-05, +-1.820802938688563104e-05, +-1.818324053002120218e-05, +-1.815842463218411199e-05, +-1.813358173652163946e-05, +-1.810871188622394711e-05, +-1.808381512451410643e-05, +-1.805889149465899742e-05, +-1.803394103996474484e-05, +-1.800896380377251687e-05, +-1.798395982946898093e-05, +-1.795892916047671524e-05, +-1.793387184025516091e-05, +-1.790878791230605645e-05, +-1.788367742016988709e-05, +-1.785854040742157500e-05, +-1.783337691768245977e-05, +-1.780818699460487900e-05, +-1.778297068188408776e-05, +-1.775772802325381675e-05, +-1.773245906248195920e-05, +-1.770716384338118248e-05, +-1.768184240979920084e-05, +-1.765649480561972399e-05, +-1.763112107476794258e-05, +-1.760572126120694010e-05, +-1.758029540893346453e-05, +-1.755484356198990875e-05, +-1.752936576444870823e-05, +-1.750386206042447727e-05, +-1.747833249406836439e-05, +-1.745277710956913994e-05, +-1.742719595115307750e-05, +-1.740158906308497032e-05, +-1.737595648966369625e-05, +-1.735029827522872634e-05, +-1.732461446415682144e-05, +-1.729890510085727522e-05, +-1.727317022978326445e-05, +-1.724740989542145419e-05, +-1.722162414229336659e-05, +-1.719581301496055797e-05, +-1.716997655802033961e-05, +-1.714411481610662139e-05, +-1.711822783389097227e-05, +-1.709231565607832414e-05, +-1.706637832741330425e-05, +-1.704041589267570527e-05, +-1.701442839668173551e-05, +-1.698841588428379190e-05, +-1.696237840037155100e-05, +-1.693631598986735436e-05, +-1.691022869773293731e-05, +-1.688411656896472967e-05, +-1.685797964859511611e-05, +-1.683181798169218881e-05, +-1.680563161336084862e-05, +-1.677942058873821415e-05, +-1.675318495300030314e-05, +-1.672692475135748898e-05, +-1.670064002905550699e-05, +-1.667433083137649460e-05, +-1.664799720363437327e-05, +-1.662163919118170275e-05, +-1.659525683940486310e-05, +-1.656885019372539302e-05, +-1.654241929959951555e-05, +-1.651596420251960165e-05, +-1.648948494800921009e-05, +-1.646298158163013467e-05, +-1.643645414897750503e-05, +-1.640990269568099960e-05, +-1.638332726740485235e-05, +-1.635672790984865242e-05, +-1.633010466874288192e-05, +-1.630345758985576337e-05, +-1.627678671898831640e-05, +-1.625009210197578757e-05, +-1.622337378468841941e-05, +-1.619663181302699850e-05, +-1.616986623292840177e-05, +-1.614307709036663671e-05, +-1.611626443134250413e-05, +-1.608942830189504333e-05, +-1.606256874809671749e-05, +-1.603568581604996124e-05, +-1.600877955189402801e-05, +-1.598185000180040593e-05, +-1.595489721197353950e-05, +-1.592792122865235082e-05, +-1.590092209810516422e-05, +-1.587389986663568627e-05, +-1.584685458058391046e-05, +-1.581978628631568510e-05, +-1.579269503023421263e-05, +-1.576558085877539101e-05, +-1.573844381840293810e-05, +-1.571128395562006047e-05, +-1.568410131695889594e-05, +-1.565689594898153340e-05, +-1.562966789828582688e-05, +-1.560241721150180410e-05, +-1.557514393528690276e-05, +-1.554784811633875397e-05, +-1.552052980137866512e-05, +-1.549318903716452185e-05, +-1.546582587048597694e-05, +-1.543844034815962220e-05, +-1.541103251704079949e-05, +-1.538360242401285021e-05, +-1.535615011598810123e-05, +-1.532867563991382120e-05, +-1.530117904276864272e-05, +-1.527366037155756146e-05, +-1.524611967332516337e-05, +-1.521855699513852486e-05, +-1.519097238410070766e-05, +-1.516336588734432819e-05, +-1.513573755203281114e-05, +-1.510808742536041490e-05, +-1.508041555455308705e-05, +-1.505272198686389888e-05, +-1.502500676957991817e-05, +-1.499726995001864490e-05, +-1.496951157552311543e-05, +-1.494173169347384220e-05, +-1.491393035127785321e-05, +-1.488610759636988288e-05, +-1.485826347621832165e-05, +-1.483039803832021001e-05, +-1.480251133020242262e-05, +-1.477460339942295585e-05, +-1.474667429356575407e-05, +-1.471872406024796872e-05, +-1.469075274711514039e-05, +-1.466276040184218312e-05, +-1.463474707213345715e-05, +-1.460671280572380408e-05, +-1.457865765037351206e-05, +-1.455058165387578158e-05, +-1.452248486405159915e-05, +-1.449436732875084531e-05, +-1.446622909585232506e-05, +-1.443807021326492833e-05, +-1.440989072892247491e-05, +-1.438169069079111754e-05, +-1.435347014686448670e-05, +-1.432522914516445465e-05, +-1.429696773374268550e-05, +-1.426868596067542086e-05, +-1.424038387407076263e-05, +-1.421206152206383815e-05, +-1.418371895281774717e-05, +-1.415535621452367877e-05, +-1.412697335540187523e-05, +-1.409857042369670404e-05, +-1.407014746768399658e-05, +-1.404170453566602857e-05, +-1.401324167597265007e-05, +-1.398475893696243741e-05, +-1.395625636701764826e-05, +-1.392773401455161454e-05, +-1.389919192800372292e-05, +-1.387063015584045492e-05, +-1.384204874655544461e-05, +-1.381344774867050170e-05, +-1.378482721073073782e-05, +-1.375618718131046519e-05, +-1.372752770901461629e-05, +-1.369884884246729703e-05, +-1.367015063032415512e-05, +-1.364143312126740463e-05, +-1.361269636400066753e-05, +-1.358394040726263465e-05, +-1.355516529980957106e-05, +-1.352637109042898211e-05, +-1.349755782793436180e-05, +-1.346872556116157765e-05, +-1.343987433897480844e-05, +-1.341100421026801799e-05, +-1.338211522395332035e-05, +-1.335320742897354638e-05, +-1.332428087429718525e-05, +-1.329533560891321586e-05, +-1.326637168184484403e-05, +-1.323738914213184183e-05, +-1.320838803884433732e-05, +-1.317936842107630251e-05, +-1.315033033794825206e-05, +-1.312127383860047036e-05, +-1.309219897220730101e-05, +-1.306310578795885765e-05, +-1.303399433507524061e-05, +-1.300486466280125814e-05, +-1.297571682040117825e-05, +-1.294655085717150362e-05, +-1.291736682242937912e-05, +-1.288816476551372177e-05, +-1.285894473579166325e-05, +-1.282970678265442485e-05, +-1.280045095551230136e-05, +-1.277117730380861847e-05, +-1.274188587700160454e-05, +-1.271257672457858863e-05, +-1.268324989605059297e-05, +-1.265390544094735926e-05, +-1.262454340882981183e-05, +-1.259516384927863293e-05, +-1.256576681189544006e-05, +-1.253635234630894731e-05, +-1.250692050217132480e-05, +-1.247747132915267943e-05, +-1.244800487695406867e-05, +-1.241852119529567093e-05, +-1.238902033391802897e-05, +-1.235950234258853143e-05, +-1.232996727109593079e-05, +-1.230041516925182064e-05, +-1.227084608689162160e-05, +-1.224126007386944832e-05, +-1.221165718006581235e-05, +-1.218203745538223508e-05, +-1.215240094974251316e-05, +-1.212274771309278120e-05, +-1.209307779540241129e-05, +-1.206339124665913583e-05, +-1.203368811687632183e-05, +-1.200396845608809026e-05, +-1.197423231435022755e-05, +-1.194447974174166781e-05, +-1.191471078835892279e-05, +-1.188492550432401350e-05, +-1.185512393977909828e-05, +-1.182530614488777390e-05, +-1.179547216983478244e-05, +-1.176562206482754446e-05, +-1.173575588009056347e-05, +-1.170587366587336095e-05, +-1.167597547244505362e-05, +-1.164606135009567148e-05, +-1.161613134913601883e-05, +-1.158618551989888387e-05, +-1.155622391273376169e-05, +-1.152624657801464694e-05, +-1.149625356613459593e-05, +-1.146624492750706487e-05, +-1.143622071256715001e-05, +-1.140618097176609541e-05, +-1.137612575557927880e-05, +-1.134605511450077700e-05, +-1.131596909904463481e-05, +-1.128586775974469046e-05, +-1.125575114715592077e-05, +-1.122561931184901500e-05, +-1.119547230441823026e-05, +-1.116531017547603995e-05, +-1.113513297565432468e-05, +-1.110494075560437739e-05, +-1.107473356599799426e-05, +-1.104451145752089841e-05, +-1.101427448088724447e-05, +-1.098402268682081613e-05, +-1.095375612606970863e-05, +-1.092347484940079083e-05, +-1.089317890759582414e-05, +-1.086286835145778814e-05, +-1.083254323181229682e-05, +-1.080220359949546401e-05, +-1.077184950536718650e-05, +-1.074148100030560450e-05, +-1.071109813520196012e-05, +-1.068070096097477839e-05, +-1.065028952855149853e-05, +-1.061986388888280912e-05, +-1.058942409293603614e-05, +-1.055897019169754011e-05, +-1.052850223616628203e-05, +-1.049802027736804162e-05, +-1.046752436633692835e-05, +-1.043701455412989276e-05, +-1.040649089182121402e-05, +-1.037595343049718049e-05, +-1.034540222126934757e-05, +-1.031483731526240133e-05, +-1.028425876361539693e-05, +-1.025366661748841455e-05, +-1.022306092805843780e-05, +-1.019244174651379033e-05, +-1.016180912406906062e-05, +-1.013116311194597931e-05, +-1.010050376138823383e-05, +-1.006983112365596778e-05, +-1.003914525002031246e-05, +-1.000844619177683268e-05, +-9.977734000233236321e-06, +-9.947008726710599135e-06, +-9.916270422550191836e-06, +-9.885519139107799892e-06, +-9.854754927755132992e-06, +-9.823977839879659025e-06, +-9.793187926885893265e-06, +-9.762385240189989219e-06, +-9.731569831227594012e-06, +-9.700741751448427371e-06, +-9.669901052317718198e-06, +-9.639047785317109200e-06, +-9.608182001939569609e-06, +-9.577303753697104873e-06, +-9.546413092115394941e-06, +-9.515510068735142740e-06, +-9.484594735111811592e-06, +-9.453667142817014348e-06, +-9.422727343432975490e-06, +-9.391775388560503400e-06, +-9.360811329813667611e-06, +-9.329835218820874533e-06, +-9.298847107226309108e-06, +-9.267847046684222416e-06, +-9.236835088867166531e-06, +-9.205811285460388857e-06, +-9.174775688163126395e-06, +-9.143728348688561695e-06, +-9.112669318765000235e-06, +-9.081598650130432465e-06, +-9.050516394540573850e-06, +-9.019422603763367619e-06, +-8.988317329580151983e-06, +-8.957200623785741445e-06, +-8.926072538189578769e-06, +-8.894933124610244509e-06, +-8.863782434883537705e-06, +-8.832620520856951534e-06, +-8.801447434390960800e-06, +-8.770263227360212862e-06, +-8.739067951648132036e-06, +-8.707861659154900335e-06, +-8.676644401791936513e-06, +-8.645416231483210657e-06, +-8.614177200165183204e-06, +-8.582927359787995866e-06, +-8.551666762309945586e-06, +-8.520395459705671964e-06, +-8.489113503960505849e-06, +-8.457820947071836449e-06, +-8.426517841048938542e-06, +-8.395204237914366684e-06, +-8.363880189696875717e-06, +-8.332545748446562321e-06, +-8.301200966215467966e-06, +-8.269845895072628990e-06, +-8.238480587098513289e-06, +-8.207105094380790232e-06, +-8.175719469021089985e-06, +-8.144323763136411280e-06, +-8.112918028846485377e-06, +-8.081502318287562373e-06, +-8.050076683606825867e-06, +-8.018641176956683956e-06, +-7.987195850510003971e-06, +-7.955740756440581591e-06, +-7.924275946938356944e-06, +-7.892801474203654780e-06, +-7.861317390443110247e-06, +-7.829823747876336730e-06, +-7.798320598737418325e-06, +-7.766807995262168770e-06, +-7.735285989702056665e-06, +-7.703754634318396523e-06, +-7.672213981376939612e-06, +-7.640664083161477312e-06, +-7.609104991961334665e-06, +-7.577536760072702766e-06, +-7.545959439805414173e-06, +-7.514373083478778895e-06, +-7.482777743415820337e-06, +-7.451173471958697223e-06, +-7.419560321448877944e-06, +-7.387938344242573501e-06, +-7.356307592704943799e-06, +-7.324668119204509767e-06, +-7.293019976127001505e-06, +-7.261363215862700220e-06, +-7.229697890807757057e-06, +-7.198024053371101501e-06, +-7.166341755968738301e-06, +-7.134651051025078164e-06, +-7.102951990974233710e-06, +-7.071244628254384166e-06, +-7.039529015315976335e-06, +-7.007805204616208723e-06, +-6.976073248620175025e-06, +-6.944333199800891241e-06, +-6.912585110640578921e-06, +-6.880829033624913816e-06, +-6.849065021251460633e-06, +-6.817293126023896267e-06, +-6.785513400453326093e-06, +-6.753725897058286507e-06, +-6.721930668365929073e-06, +-6.690127766906408940e-06, +-6.658317245221246739e-06, +-6.626499155857486608e-06, +-6.594673551369208983e-06, +-6.562840484318670714e-06, +-6.531000007270706167e-06, +-6.499152172801028156e-06, +-6.467297033490580770e-06, +-6.435434641926726064e-06, +-6.403565050703344862e-06, +-6.371688312421953988e-06, +-6.339804479686151427e-06, +-6.307913605109910469e-06, +-6.276015741311858004e-06, +-6.244110940916603517e-06, +-6.212199256554677251e-06, +-6.180280740863796524e-06, +-6.148355446483198233e-06, +-6.116423426062005842e-06, +-6.084484732253428902e-06, +-6.052539417716179289e-06, +-6.020587535115790885e-06, +-5.988629137118814857e-06, +-5.956664276399843256e-06, +-5.924693005642832081e-06, +-5.892715377528290757e-06, +-5.860731444747341181e-06, +-5.828741259995945199e-06, +-5.796744875970626238e-06, +-5.764742345376832067e-06, +-5.732733720923195295e-06, +-5.700719055322863220e-06, +-5.668698401294843759e-06, +-5.636671811558222757e-06, +-5.604639338839160477e-06, +-5.572601035872315465e-06, +-5.540556955387853603e-06, +-5.508507150125634218e-06, +-5.476451672829446026e-06, +-5.444390576242627116e-06, +-5.412323913115082629e-06, +-5.380251736204678117e-06, +-5.348174098264270628e-06, +-5.316091052055932084e-06, +-5.284002650345097970e-06, +-5.251908945894844788e-06, +-5.219809991481398378e-06, +-5.187705839874211704e-06, +-5.155596543851409655e-06, +-5.123482156194140179e-06, +-5.091362729682137527e-06, +-5.059238317100801753e-06, +-5.027108971242442158e-06, +-4.994974744893514201e-06, +-4.962835690848664993e-06, +-4.930691861904990419e-06, +-4.898543310856277854e-06, +-4.866390090508497547e-06, +-4.834232253659917676e-06, +-4.802069853116535596e-06, +-4.769902941684985629e-06, +-4.737731572175222468e-06, +-4.705555797393359511e-06, +-4.673375670157266125e-06, +-4.641191243276452310e-06, +-4.609002569567749819e-06, +-4.576809701849492195e-06, +-4.544612692935699886e-06, +-4.512411595650297700e-06, +-4.480206462814154349e-06, +-4.447997347246443631e-06, +-4.415784301771666335e-06, +-4.383567379213935309e-06, +-4.351346632398198575e-06, +-4.319122114151672510e-06, +-4.286893877297986306e-06, +-4.254661974665725992e-06, +-4.222426459082572965e-06, +-4.190187383376683808e-06, +-4.157944800376571707e-06, +-4.125698762912510825e-06, +-4.093449323810661290e-06, +-4.061196535901607280e-06, +-4.028940452014525208e-06, +-3.996681124978557602e-06, +-3.964418607622675044e-06, +-3.932152952777093255e-06, +-3.899884213267409931e-06, +-3.867612441923111496e-06, +-3.835337691571777706e-06, +-3.803060015040417412e-06, +-3.770779465156833138e-06, +-3.738496094743762999e-06, +-3.706209956627431918e-06, +-3.673921103631708797e-06, +-3.641629588579499040e-06, +-3.609335464292585306e-06, +-3.577038783593023000e-06, +-3.544739599297311837e-06, +-3.512437964224927161e-06, +-3.480133931192463555e-06, +-3.447827553014996872e-06, +-3.415518882506033836e-06, +-3.383207972478799959e-06, +-3.350894875740459804e-06, +-3.318579645100614852e-06, +-3.286262333365506403e-06, +-3.253942993339337794e-06, +-3.221621677825623303e-06, +-3.189298439621379194e-06, +-3.156973331524219312e-06, +-3.124646406333673069e-06, +-3.092317716838206353e-06, +-3.059987315829488957e-06, +-3.027655256096542847e-06, +-2.995321590421397734e-06, +-2.962986371587559282e-06, +-2.930649652374238276e-06, +-2.898311485557664791e-06, +-2.865971923912439211e-06, +-2.833631020205714806e-06, +-2.801288827204289516e-06, +-2.768945397675960781e-06, +-2.736600784376490970e-06, +-2.704255040063934527e-06, +-2.671908217492745157e-06, +-2.639560369409420384e-06, +-2.607211548559584443e-06, +-2.574861807689357929e-06, +-2.542511199532319420e-06, +-2.510159776823776288e-06, +-2.477807592294988360e-06, +-2.445454698667271717e-06, +-2.413101148667761982e-06, +-2.380746995009177852e-06, +-2.348392290405576338e-06, +-2.316037087566497647e-06, +-2.283681439192567386e-06, +-2.251325397982609526e-06, +-2.218969016634996567e-06, +-2.186612347834616669e-06, +-2.154255444267172415e-06, +-2.121898358613338821e-06, +-2.089541143542938298e-06, +-2.057183851730667080e-06, +-2.024826535835856649e-06, +-1.992469248518245064e-06, +-1.960112042430685274e-06, +-1.927754970220480469e-06, +-1.895398084529320765e-06, +-1.863041437994628501e-06, +-1.830685083243723031e-06, +-1.798329072902360510e-06, +-1.765973459590328685e-06, +-1.733618295915639007e-06, +-1.701263634488779014e-06, +-1.668909527909717155e-06, +-1.636556028769238982e-06, +-1.604203189656060958e-06, +-1.571851063150991856e-06, +-1.539499701828277218e-06, +-1.507149158256976623e-06, +-1.474799484995086132e-06, +-1.442450734598128469e-06, +-1.410102959614713933e-06, +-1.377756212580724035e-06, +-1.345410546033605182e-06, +-1.313066012499345540e-06, +-1.280722664493806575e-06, +-1.248380554529862688e-06, +-1.216039735111529166e-06, +-1.183700258735340299e-06, +-1.151362177890254938e-06, +-1.119025545059011113e-06, +-1.086690412712285739e-06, +-1.054356833317245205e-06, +-1.022024859331706347e-06, +-9.896945432054872605e-07, +-9.573659373817591599e-07, +-9.250390942912124411e-07, +-8.927140663606025029e-07, +-8.603909060069132658e-07, +-8.280696656387007786e-07, +-7.957503976560269376e-07, +-7.634331544517945169e-07, +-7.311179884059134402e-07, +-6.988049518938619551e-07, +-6.664940972808300350e-07, +-6.341854769230828908e-07, +-6.018791431693129411e-07, +-5.695751483547963439e-07, +-5.372735448099522644e-07, +-5.049743848544929477e-07, +-4.726777207987837892e-07, +-4.403836049437540785e-07, +-4.080920895822582343e-07, +-3.758032269932302180e-07, +-3.435170694487976579e-07, +-3.112336692156376840e-07, +-2.789530785419345797e-07, +-2.466753496716947969e-07, +-2.144005348389017674e-07, +-1.821286862631151960e-07, +-1.498598561580224934e-07, +-1.175940967255984839e-07, +-8.533146015745938756e-08, +-5.307199863621869530e-08, +-2.081576432964700206e-08, + 1.143719060221642183e-08, + 4.368681400571004064e-08, + 7.593305374658239956e-08, + 1.081758576956881304e-07, + 1.404151737348268328e-07, + 1.726509497611433587e-07, + 2.048831336785786628e-07, + 2.371116734037097109e-07, + 2.693365168643911566e-07, + 3.015576119998439092e-07, + 3.337749067592977634e-07, + 3.659883491092610597e-07, + 3.981978870177984555e-07, + 4.304034684747316025e-07, + 4.626050414759149859e-07, + 4.948025540290683283e-07, + 5.269959541581699908e-07, + 5.591851898963597370e-07, + 5.913702092845769161e-07, + 6.235509603845835936e-07, + 6.557273912646775415e-07, + 6.878994500055184484e-07, + 7.200670847059669407e-07, + 7.522302434673514755e-07, + 7.843888744136800287e-07, + 8.165429256759082581e-07, + 8.486923453977704782e-07, + 8.808370817416194231e-07, + 9.129770828741301298e-07, + 9.451122969793246585e-07, + 9.772426722572033933e-07, + 1.009368156916659399e-06, + 1.041488699179866900e-06, + 1.073604247288101772e-06, + 1.105714749487478990e-06, + 1.137820154041946749e-06, + 1.169920409231929517e-06, + 1.202015463347247899e-06, + 1.234105264692929282e-06, + 1.266189761587870158e-06, + 1.298268902363466687e-06, + 1.330342635369442700e-06, + 1.362410908965338297e-06, + 1.394473671524871213e-06, + 1.426530871441783678e-06, + 1.458582457115556570e-06, + 1.490628376964420053e-06, + 1.522668579423991337e-06, + 1.554703012940180776e-06, + 1.586731625975040841e-06, + 1.618754367005368520e-06, + 1.650771184521396859e-06, + 1.682782027032579566e-06, + 1.714786843059095690e-06, + 1.746785581137651163e-06, + 1.778778189820128844e-06, + 1.810764617673679570e-06, + 1.842744813279373685e-06, + 1.874718725237990505e-06, + 1.906686302161530627e-06, + 1.938647492679012388e-06, + 1.970602245435139269e-06, + 2.002550509090359399e-06, + 2.034492232319524490e-06, + 2.066427363817715097e-06, + 2.098355852291708028e-06, + 2.130277646465791649e-06, + 2.162192695080423339e-06, + 2.194100946890886096e-06, + 2.226002350673066146e-06, + 2.257896855214981345e-06, + 2.289784409322563870e-06, + 2.321664961818329960e-06, + 2.353538461541444284e-06, + 2.385404857346387985e-06, + 2.417264098108728667e-06, + 2.449116132716672936e-06, + 2.480960910076813098e-06, + 2.512798379112823569e-06, + 2.544628488765515513e-06, + 2.576451187991510811e-06, + 2.608266425769002734e-06, + 2.640074151089294080e-06, + 2.671874312962595962e-06, + 2.703666860416672984e-06, + 2.735451742495470195e-06, + 2.767228908264971169e-06, + 2.798998306806053287e-06, + 2.830759887213225653e-06, + 2.862513598607492986e-06, + 2.894259390122202120e-06, + 2.925997210908820043e-06, + 2.957727010141279599e-06, + 2.989448737007532872e-06, + 3.021162340715308895e-06, + 3.052867770490796092e-06, + 3.084564975578683779e-06, + 3.116253905240855618e-06, + 3.147934508763569913e-06, + 3.179606735441900466e-06, + 3.211270534599699446e-06, + 3.242925855574094991e-06, + 3.274572647721186238e-06, + 3.306210860421865825e-06, + 3.337840443067669782e-06, + 3.369461345073635915e-06, + 3.401073515876982860e-06, + 3.432676904930077165e-06, + 3.464271461704760360e-06, + 3.495857135698143932e-06, + 3.527433876417045519e-06, + 3.559001633397947971e-06, + 3.590560356191469845e-06, + 3.622109994368118035e-06, + 3.653650497524050132e-06, + 3.685181815266958621e-06, + 3.716703897228934771e-06, + 3.748216693065112962e-06, + 3.779720152446653008e-06, + 3.811214225065103660e-06, + 3.842698860638115830e-06, + 3.874174008895383972e-06, + 3.905639619591473121e-06, + 3.937095642504434415e-06, + 3.968542027428870867e-06, + 3.999978724181661606e-06, + 4.031405682600572749e-06, + 4.062822852543010564e-06, + 4.094230183891677960e-06, + 4.125627626546236290e-06, + 4.157015130427548992e-06, + 4.188392645483504934e-06, + 4.219760121674910238e-06, + 4.251117508988286099e-06, + 4.282464757434520310e-06, + 4.313801817041956317e-06, + 4.345128637862048013e-06, + 4.376445169968027358e-06, + 4.407751363453666857e-06, + 4.439047168438843726e-06, + 4.470332535061313504e-06, + 4.501607413482309791e-06, + 4.532871753885320283e-06, + 4.564125506476035948e-06, + 4.595368621481144858e-06, + 4.626601049154006456e-06, + 4.657822739766213415e-06, + 4.689033643613403136e-06, + 4.720233711013858442e-06, + 4.751422892308622782e-06, + 4.782601137860159370e-06, + 4.813768398058061042e-06, + 4.844924623310638365e-06, + 4.876069764050766712e-06, + 4.907203770734364137e-06, + 4.938326593839217393e-06, + 4.969438183870613003e-06, + 5.000538491353000763e-06, + 5.031627466835661243e-06, + 5.062705060891431843e-06, + 5.093771224116807594e-06, + 5.124825907130463933e-06, + 5.155869060579142733e-06, + 5.186900635129159103e-06, + 5.217920581472193403e-06, + 5.248928850323884318e-06, + 5.279925392424011821e-06, + 5.310910158535048742e-06, + 5.341883099447926526e-06, + 5.372844165973712285e-06, + 5.403793308949191592e-06, + 5.434730479235691952e-06, + 5.465655627717656400e-06, + 5.496568705308315233e-06, + 5.527469662942819113e-06, + 5.558358451576941414e-06, + 5.589235022199648188e-06, + 5.620099325819246639e-06, + 5.650951313469088195e-06, + 5.681790936211739296e-06, + 5.712618145130789740e-06, + 5.743432891336443946e-06, + 5.774235125964234315e-06, + 5.805024800173693924e-06, + 5.835801865153959654e-06, + 5.866566272117002697e-06, + 5.897317972296199618e-06, + 5.928056916958949751e-06, + 5.958783057392932096e-06, + 5.989496344911617804e-06, + 6.020196730860013911e-06, + 6.050884166600770301e-06, + 6.081558603526819981e-06, + 6.112219993059983170e-06, + 6.142868286644165622e-06, + 6.173503435749646312e-06, + 6.204125391878531474e-06, + 6.234734106549807018e-06, + 6.265329531318609372e-06, + 6.295911617761202506e-06, + 6.326480317480528542e-06, + 6.357035582111832894e-06, + 6.387577363308905071e-06, + 6.418105612756639325e-06, + 6.448620282169620955e-06, + 6.479121323285424579e-06, + 6.509608687868778152e-06, + 6.540082327717091548e-06, + 6.570542194645503040e-06, + 6.600988240506133207e-06, + 6.631420417173030616e-06, + 6.661838676549177633e-06, + 6.692242970565146183e-06, + 6.722633251179203624e-06, + 6.753009470375991381e-06, + 6.783371580172059457e-06, + 6.813719532607824701e-06, + 6.844053279751612006e-06, + 6.874372773705309943e-06, + 6.904677966590756404e-06, + 6.934968810562053614e-06, + 6.965245257804328071e-06, + 6.995507260526966148e-06, + 7.025754770969158761e-06, + 7.055987741398604572e-06, + 7.086206124110204702e-06, + 7.116409871431590475e-06, + 7.146598935715087612e-06, + 7.176773269343149949e-06, + 7.206932824727121076e-06, + 7.237077554307313107e-06, + 7.267207410551653127e-06, + 7.297322345961297323e-06, + 7.327422313062473210e-06, + 7.357507264412084446e-06, + 7.387577152596282740e-06, + 7.417631930230637253e-06, + 7.447671549958867441e-06, + 7.477695964458263215e-06, + 7.507705126431720293e-06, + 7.537698988613152738e-06, + 7.567677503766207165e-06, + 7.597640624683143809e-06, + 7.627588304190067801e-06, + 7.657520495139084793e-06, + 7.687437150413708420e-06, + 7.717338222927582974e-06, + 7.747223665624565565e-06, + 7.777093431477451335e-06, + 7.806947473493465621e-06, + 7.836785744706190041e-06, + 7.866608198181059729e-06, + 7.896414787014118206e-06, + 7.926205464330697694e-06, + 7.955980183290877405e-06, + 7.985738897081531588e-06, + 8.015481558921728521e-06, + 8.045208122061502313e-06, + 8.074918539781886784e-06, + 8.104612765393694047e-06, + 8.134290752242847420e-06, + 8.163952453703949067e-06, + 8.193597823178775660e-06, + 8.223226814108556973e-06, + 8.252839379960706263e-06, + 8.282435474234032909e-06, + 8.312015050463035176e-06, + 8.341578062209856792e-06, + 8.371124463069729978e-06, + 8.400654206669694738e-06, + 8.430167246667333390e-06, + 8.459663536756233926e-06, + 8.489143030659306927e-06, + 8.518605682127603103e-06, + 8.548051444952297113e-06, + 8.577480272951578885e-06, + 8.606892119975825600e-06, + 8.636286939913270035e-06, + 8.665664686675157157e-06, + 8.695025314214729524e-06, + 8.724368776512434693e-06, + 8.753695027582698106e-06, + 8.783004021471476849e-06, + 8.812295712262737768e-06, + 8.841570054064122277e-06, + 8.870827001025538737e-06, + 8.900066507324586707e-06, + 8.929288527172003372e-06, + 8.958493014816984598e-06, + 8.987679924534040679e-06, + 9.016849210634985242e-06, + 9.046000827467639280e-06, + 9.075134729409327643e-06, + 9.104250870870995608e-06, + 9.133349206302328354e-06, + 9.162429690177578402e-06, + 9.191492277013912351e-06, + 9.220536921357035034e-06, + 9.249563577787911571e-06, + 9.278572200921405340e-06, + 9.307562745406410118e-06, + 9.336535165924708272e-06, + 9.365489417196056355e-06, + 9.394425453970607542e-06, + 9.423343231032750385e-06, + 9.452242703206543379e-06, + 9.481123825342655404e-06, + 9.509986552330114076e-06, + 9.538830839095301163e-06, + 9.567656640595196651e-06, + 9.596463911822877683e-06, + 9.625252607806263254e-06, + 9.654022683606709832e-06, + 9.682774094324554342e-06, + 9.711506795091185936e-06, + 9.740220741074333174e-06, + 9.768915887476934082e-06, + 9.797592189537117515e-06, + 9.826249602527013926e-06, + 9.854888081757984947e-06, + 9.883507582572939102e-06, + 9.912108060351544454e-06, + 9.940689470509029202e-06, + 9.969251768496344311e-06, + 9.997794909798743889e-06, + 1.002631884994119095e-05, + 1.005482354448055962e-05, + 1.008330894901097145e-05, + 1.011177501916250964e-05, + 1.014022171059992644e-05, + 1.016864897902814377e-05, + 1.019705678018423695e-05, + 1.022544506984284381e-05, + 1.025381380381496700e-05, + 1.028216293794800109e-05, + 1.031049242812445525e-05, + 1.033880223026722349e-05, + 1.036709230033195628e-05, + 1.039536259431225793e-05, + 1.042361306823847874e-05, + 1.045184367817639871e-05, + 1.048005438023256385e-05, + 1.050824513054661371e-05, + 1.053641588529644836e-05, + 1.056456660069698996e-05, + 1.059269723300038609e-05, + 1.062080773849462397e-05, + 1.064889807350884987e-05, + 1.067696819440692145e-05, + 1.070501805758633544e-05, + 1.073304761948969477e-05, + 1.076105683659200816e-05, + 1.078904566540589428e-05, + 1.081701406248680966e-05, + 1.084496198441890659e-05, + 1.087288938783314102e-05, + 1.090079622939323385e-05, + 1.092868246580087674e-05, + 1.095654805379947435e-05, + 1.098439295016800673e-05, + 1.101221711171989089e-05, + 1.104002049531420230e-05, + 1.106780305784331671e-05, + 1.109556475623787201e-05, + 1.112330554747203344e-05, + 1.115102538854954124e-05, + 1.117872423652151188e-05, + 1.120640204847271616e-05, + 1.123405878152765750e-05, + 1.126169439284850010e-05, + 1.128930883964111843e-05, + 1.131690207914149732e-05, + 1.134447406863333493e-05, + 1.137202476543431241e-05, + 1.139955412690117605e-05, + 1.142706211043474837e-05, + 1.145454867346766980e-05, + 1.148201377347542881e-05, + 1.150945736797544030e-05, + 1.153687941452067253e-05, + 1.156427987070365018e-05, + 1.159165869416135533e-05, + 1.161901584256159696e-05, + 1.164635127362059876e-05, + 1.167366494508927890e-05, + 1.170095681475836778e-05, + 1.172822684046336319e-05, + 1.175547498007225002e-05, + 1.178270119149668281e-05, + 1.180990543269086253e-05, + 1.183708766164534313e-05, + 1.186424783639083979e-05, + 1.189138591500330938e-05, + 1.191850185559144325e-05, + 1.194559561630816648e-05, + 1.197266715534915558e-05, + 1.199971643094689067e-05, + 1.202674340137576475e-05, + 1.205374802495056751e-05, + 1.208073026002566879e-05, + 1.210769006499989242e-05, + 1.213462739830910467e-05, + 1.216154221843125072e-05, + 1.218843448388524842e-05, + 1.221530415323099001e-05, + 1.224215118506827311e-05, + 1.226897553804155265e-05, + 1.229577717083291212e-05, + 1.232255604216679008e-05, + 1.234931211080905343e-05, + 1.237604533556563715e-05, + 1.240275567528759088e-05, + 1.242944308886384356e-05, + 1.245610753522600614e-05, + 1.248274897334740085e-05, + 1.250936736224302562e-05, + 1.253596266096838015e-05, + 1.256253482862435997e-05, + 1.258908382435022278e-05, + 1.261560960732829111e-05, + 1.264211213678290199e-05, + 1.266859137198045447e-05, + 1.269504727222821012e-05, + 1.272147979687930243e-05, + 1.274788890532543709e-05, + 1.277427455700190303e-05, + 1.280063671138627643e-05, + 1.282697532799740092e-05, + 1.285329036640021060e-05, + 1.287958178619857766e-05, + 1.290584954704021671e-05, + 1.293209360861543458e-05, + 1.295831393065741489e-05, + 1.298451047294078660e-05, + 1.301068319528678919e-05, + 1.303683205755584587e-05, + 1.306295701965260348e-05, + 1.308905804152485837e-05, + 1.311513508316328541e-05, + 1.314118810460075527e-05, + 1.316721706591792143e-05, + 1.319322192723062989e-05, + 1.321920264870617208e-05, + 1.324515919055066059e-05, + 1.327109151301349313e-05, + 1.329699957639137418e-05, + 1.332288334102197921e-05, + 1.334874276728330585e-05, + 1.337457781560395516e-05, + 1.340038844645174752e-05, + 1.342617462033823225e-05, + 1.345193629782352415e-05, + 1.347767343950352683e-05, + 1.350338600602634995e-05, + 1.352907395807941227e-05, + 1.355473725639434598e-05, + 1.358037586175044920e-05, + 1.360598973496891090e-05, + 1.363157883691170471e-05, + 1.365714312849223099e-05, + 1.368268257066351772e-05, + 1.370819712442320778e-05, + 1.373368675081813124e-05, + 1.375915141093254520e-05, + 1.378459106589916042e-05, + 1.381000567689748622e-05, + 1.383539520514838746e-05, + 1.386075961191758449e-05, + 1.388609885852029995e-05, + 1.391141290630864137e-05, + 1.393670171668772192e-05, + 1.396196525110325475e-05, + 1.398720347104591690e-05, + 1.401241633805629768e-05, + 1.403760381371322316e-05, + 1.406276585964432376e-05, + 1.408790243752489074e-05, + 1.411301350907211300e-05, + 1.413809903604992888e-05, + 1.416315898026762858e-05, + 1.418819330357914090e-05, + 1.421320196788731081e-05, + 1.423818493513731970e-05, + 1.426314216732124406e-05, + 1.428807362647698488e-05, + 1.431297927468824392e-05, + 1.433785907408362583e-05, + 1.436271298684109866e-05, + 1.438754097518120235e-05, + 1.441234300137179207e-05, + 1.443711902772681515e-05, + 1.446186901660645169e-05, + 1.448659293041606757e-05, + 1.451129073161068685e-05, + 1.453596238268835949e-05, + 1.456060784619466581e-05, + 1.458522708472172895e-05, + 1.460982006090708144e-05, + 1.463438673743822740e-05, + 1.465892707704597634e-05, + 1.468344104250888840e-05, + 1.470792859665251205e-05, + 1.473238970234897915e-05, + 1.475682432251642564e-05, + 1.478123242012306574e-05, + 1.480561395818089509e-05, + 1.482996889975003099e-05, + 1.485429720793768406e-05, + 1.487859884589829547e-05, + 1.490287377683238502e-05, + 1.492712196399101492e-05, + 1.495134337066931177e-05, + 1.497553796021089477e-05, + 1.499970569600680851e-05, + 1.502384654149441165e-05, + 1.504796046016209998e-05, + 1.507204741554242170e-05, + 1.509610737121667180e-05, + 1.512014029081397549e-05, + 1.514414613801109344e-05, + 1.516812487653156623e-05, + 1.519207647015013593e-05, + 1.521600088268613068e-05, + 1.523989807800796761e-05, + 1.526376802003212617e-05, + 1.528761067272312783e-05, + 1.531142600009261621e-05, + 1.533521396620470350e-05, + 1.535897453516421374e-05, + 1.538270767113177683e-05, + 1.540641333831219717e-05, + 1.543009150095859730e-05, + 1.545374212337577893e-05, + 1.547736516991496118e-05, + 1.550096060497269297e-05, + 1.552452839300052617e-05, + 1.554806849849453269e-05, + 1.557158088599933638e-05, + 1.559506552011284962e-05, + 1.561852236547412010e-05, + 1.564195138677868243e-05, + 1.566535254876667938e-05, + 1.568872581622731048e-05, + 1.571207115400198635e-05, + 1.573538852697904666e-05, + 1.575867790009280122e-05, + 1.578193923833322686e-05, + 1.580517250673516943e-05, + 1.582837767038287714e-05, + 1.585155469441416456e-05, + 1.587470354400991279e-05, + 1.589782418440354272e-05, + 1.592091658088028652e-05, + 1.594398069877161759e-05, + 1.596701650345865565e-05, + 1.599002396037642895e-05, + 1.601300303500229031e-05, + 1.603595369287078080e-05, + 1.605887589956196107e-05, + 1.608176962070576843e-05, + 1.610463482198637742e-05, + 1.612747146913156784e-05, + 1.615027952792220812e-05, + 1.617305896419143199e-05, + 1.619580974381936323e-05, + 1.621853183273726264e-05, + 1.624122519692665061e-05, + 1.626388980241836175e-05, + 1.628652561529658700e-05, + 1.630913260169276818e-05, + 1.633171072778982636e-05, + 1.635425995982117258e-05, + 1.637678026407075524e-05, + 1.639927160687200980e-05, + 1.642173395461212781e-05, + 1.644416727372588713e-05, + 1.646657153069981257e-05, + 1.648894669207117975e-05, + 1.651129272442809984e-05, + 1.653360959440850985e-05, + 1.655589726870438752e-05, + 1.657815571405553743e-05, + 1.660038489725386009e-05, + 1.662258478514232532e-05, + 1.664475534461394565e-05, + 1.666689654261602842e-05, + 1.668900834614394838e-05, + 1.671109072224542694e-05, + 1.673314363801942420e-05, + 1.675516706061635586e-05, + 1.677716095723698860e-05, + 1.679912529513656011e-05, + 1.682106004161877872e-05, + 1.684296516403986538e-05, + 1.686484062980774055e-05, + 1.688668640638194967e-05, + 1.690850246127255520e-05, + 1.693028876204468694e-05, + 1.695204527631197238e-05, + 1.697377197174105651e-05, + 1.699546881605031430e-05, + 1.701713577700915279e-05, + 1.703877282244192431e-05, + 1.706037992022300023e-05, + 1.708195703827588657e-05, + 1.710350414458212807e-05, + 1.712502120717143852e-05, + 1.714650819412582414e-05, + 1.716796507358240930e-05, + 1.718939181372771731e-05, + 1.721078838280166504e-05, + 1.723215474909641100e-05, + 1.725349088095575218e-05, + 1.727479674677884767e-05, + 1.729607231501540068e-05, + 1.731731755416474381e-05, + 1.733853243278477688e-05, + 1.735971691948213461e-05, + 1.738087098291613038e-05, + 1.740199459180183269e-05, + 1.742308771490513878e-05, + 1.744415032104190726e-05, + 1.746518237908665212e-05, + 1.748618385796305927e-05, + 1.750715472664769661e-05, + 1.752809495417411022e-05, + 1.754900450962220603e-05, + 1.756988336213167350e-05, + 1.759073148089155707e-05, + 1.761154883514406768e-05, + 1.763233539418768980e-05, + 1.765309112737217369e-05, + 1.767381600409776636e-05, + 1.769450999382388173e-05, + 1.771517306605955631e-05, + 1.773580519036726085e-05, + 1.775640633636682377e-05, + 1.777697647372500589e-05, + 1.779751557216883274e-05, + 1.781802360147511166e-05, + 1.783850053147538866e-05, + 1.785894633205398666e-05, + 1.787936097315284039e-05, + 1.789974442476096266e-05, + 1.792009665692802741e-05, + 1.794041763975373770e-05, + 1.796070734339178990e-05, + 1.798096573805358023e-05, + 1.800119279399909074e-05, + 1.802138848154501402e-05, + 1.804155277106421449e-05, + 1.806168563298082919e-05, + 1.808178703777415733e-05, + 1.810185695597775902e-05, + 1.812189535817857104e-05, + 1.814190221502064726e-05, + 1.816187749719973092e-05, + 1.818182117546679518e-05, + 1.820173322062745359e-05, + 1.822161360354160098e-05, + 1.824146229512298991e-05, + 1.826127926634256801e-05, + 1.828106448822322972e-05, + 1.830081793184351618e-05, + 1.832053956833666313e-05, + 1.834022936889060431e-05, + 1.835988730474723624e-05, + 1.837951334720598929e-05, + 1.839910746761853208e-05, + 1.841866963739226119e-05, + 1.843819982798952870e-05, + 1.845769801092699846e-05, + 1.847716415777892916e-05, + 1.849659824017189564e-05, + 1.851600022978866150e-05, + 1.853537009836714577e-05, + 1.855470781770030765e-05, + 1.857401335963569932e-05, + 1.859328669607869820e-05, + 1.861252779898739767e-05, + 1.863173664037610019e-05, + 1.865091319231461600e-05, + 1.867005742692722973e-05, + 1.868916931639633583e-05, + 1.870824883295741742e-05, + 1.872729594890219042e-05, + 1.874631063657805131e-05, + 1.876529286838812458e-05, + 1.878424261679023609e-05, + 1.880315985430061631e-05, + 1.882204455348954661e-05, + 1.884089668698039018e-05, + 1.885971622745771345e-05, + 1.887850314765843285e-05, + 1.889725742037541646e-05, + 1.891597901845996403e-05, + 1.893466791481698236e-05, + 1.895332408240806509e-05, + 1.897194749425107932e-05, + 1.899053812341898996e-05, + 1.900909594304368491e-05, + 1.902762092631128931e-05, + 1.904611304646169792e-05, + 1.906457227679625606e-05, + 1.908299859066917408e-05, + 1.910139196149087141e-05, + 1.911975236273092429e-05, + 1.913807976791249564e-05, + 1.915637415061641777e-05, + 1.917463548447966771e-05, + 1.919286374319597034e-05, + 1.921105890051459216e-05, + 1.922922093024499323e-05, + 1.924734980624714725e-05, + 1.926544550244376259e-05, + 1.928350799281081920e-05, + 1.930153725138107875e-05, + 1.931953325224657826e-05, + 1.933749596955457113e-05, + 1.935542537750650394e-05, + 1.937332145036587013e-05, + 1.939118416244964816e-05, + 1.940901348813201159e-05, + 1.942680940184718857e-05, + 1.944457187808073409e-05, + 1.946230089138106651e-05, + 1.947999641635049585e-05, + 1.949765842764915734e-05, + 1.951528689999451681e-05, + 1.953288180816103523e-05, + 1.955044312697988413e-05, + 1.956797083134180517e-05, + 1.958546489619243113e-05, + 1.960292529653471182e-05, + 1.962035200743239029e-05, + 1.963774500400153930e-05, + 1.965510426141825912e-05, + 1.967242975491787120e-05, + 1.968972145979051356e-05, + 1.970697935138493890e-05, + 1.972420340510749138e-05, + 1.974139359642108343e-05, + 1.975854990084903445e-05, + 1.977567229396971085e-05, + 1.979276075141931103e-05, + 1.980981524889507061e-05, + 1.982683576214706311e-05, + 1.984382226698574195e-05, + 1.986077473928094772e-05, + 1.987769315495801863e-05, + 1.989457749000105662e-05, + 1.991142772045209391e-05, + 1.992824382241127260e-05, + 1.994502577203581799e-05, + 1.996177354554346407e-05, + 1.997848711920777780e-05, + 1.999516646936100526e-05, + 2.001181157239375981e-05, + 2.002842240475395156e-05, + 2.004499894295022624e-05, + 2.006154116354698808e-05, + 2.007804904316774726e-05, + 2.009452255849429321e-05, + 2.011096168626697584e-05, + 2.012736640328352986e-05, + 2.014373668640248320e-05, + 2.016007251253853903e-05, + 2.017637385866574365e-05, + 2.019264070181650054e-05, + 2.020887301908103504e-05, + 2.022507078761046060e-05, + 2.024123398461227596e-05, + 2.025736258735326200e-05, + 2.027345657315890239e-05, + 2.028951591941351908e-05, + 2.030554060355922198e-05, + 2.032153060309923955e-05, + 2.033748589559407658e-05, + 2.035340645866074176e-05, + 2.036929226997974412e-05, + 2.038514330728737831e-05, + 2.040095954837880098e-05, + 2.041674097111059559e-05, + 2.043248755339577497e-05, + 2.044819927320726426e-05, + 2.046387610857706407e-05, + 2.047951803759539329e-05, + 2.049512503841382648e-05, + 2.051069708924150594e-05, + 2.052623416834474870e-05, + 2.054173625405324681e-05, + 2.055720332475300644e-05, + 2.057263535888938705e-05, + 2.058803233496905974e-05, + 2.060339423155584324e-05, + 2.061872102727368544e-05, + 2.063401270080587736e-05, + 2.064926923089497522e-05, + 2.066449059634244131e-05, + 2.067967677601183560e-05, + 2.069482774882127712e-05, + 2.070994349375337125e-05, + 2.072502398984741695e-05, + 2.074006921620217490e-05, + 2.075507915197833745e-05, + 2.077005377639456110e-05, + 2.078499306872707688e-05, + 2.079989700831608035e-05, + 2.081476557455857928e-05, + 2.082959874691134807e-05, + 2.084439650489365521e-05, + 2.085915882807968066e-05, + 2.087388569610833800e-05, + 2.088857708867553599e-05, + 2.090323298553697372e-05, + 2.091785336651115273e-05, + 2.093243821147216700e-05, + 2.094698750035621835e-05, + 2.096150121316087784e-05, + 2.097597932994158245e-05, + 2.099042183081378649e-05, + 2.100482869595576366e-05, + 2.101919990560164437e-05, + 2.103353544004787017e-05, + 2.104783527965229590e-05, + 2.106209940483067279e-05, + 2.107632779605998915e-05, + 2.109052043387715241e-05, + 2.110467729887865708e-05, + 2.111879837172338334e-05, + 2.113288363312831444e-05, + 2.114693306387082706e-05, + 2.116094664479120874e-05, + 2.117492435678619328e-05, + 2.118886618081487305e-05, + 2.120277209789803491e-05, + 2.121664208911483985e-05, + 2.123047613560564528e-05, + 2.124427421857122240e-05, + 2.125803631927223103e-05, + 2.127176241903180813e-05, + 2.128545249923161726e-05, + 2.129910654131461666e-05, + 2.131272452678429017e-05, + 2.132630643720481660e-05, + 2.133985225420020581e-05, + 2.135336195945733103e-05, + 2.136683553472149046e-05, + 2.138027296179973436e-05, + 2.139367422255942854e-05, + 2.140703929892899971e-05, + 2.142036817289685128e-05, + 2.143366082651417215e-05, + 2.144691724189109791e-05, + 2.146013740119916052e-05, + 2.147332128667073936e-05, + 2.148646888059865134e-05, + 2.149958016533842089e-05, + 2.151265512330454628e-05, + 2.152569373697317621e-05, + 2.153869598888151691e-05, + 2.155166186162769999e-05, + 2.156459133787018277e-05, + 2.157748440033057391e-05, + 2.159034103178949661e-05, + 2.160316121508927190e-05, + 2.161594493313348503e-05, + 2.162869216888680250e-05, + 2.164140290537434522e-05, + 2.165407712568421611e-05, + 2.166671481296418645e-05, + 2.167931595042359329e-05, + 2.169188052133304124e-05, + 2.170440850902384688e-05, + 2.171689989689035616e-05, + 2.172935466838712894e-05, + 2.174177280702822067e-05, + 2.175415429639248143e-05, + 2.176649912011797229e-05, + 2.177880726190395075e-05, + 2.179107870551295106e-05, + 2.180331343476708440e-05, + 2.181551143355066463e-05, + 2.182767268580929355e-05, + 2.183979717555007433e-05, + 2.185188488684121168e-05, + 2.186393580381457673e-05, + 2.187594991065959477e-05, + 2.188792719163128197e-05, + 2.189986763104399760e-05, + 2.191177121327362264e-05, + 2.192363792275943678e-05, + 2.193546774400112674e-05, + 2.194726066155845416e-05, + 2.195901666005628706e-05, + 2.197073572417876204e-05, + 2.198241783867184909e-05, + 2.199406298834547259e-05, + 2.200567115806736861e-05, + 2.201724233277104701e-05, + 2.202877649744945228e-05, + 2.204027363715748089e-05, + 2.205173373701383122e-05, + 2.206315678219609075e-05, + 2.207454275794504581e-05, + 2.208589164956457313e-05, + 2.209720344241869553e-05, + 2.210847812193369956e-05, + 2.211971567359962961e-05, + 2.213091608296527350e-05, + 2.214207933564312273e-05, + 2.215320541730864397e-05, + 2.216429431369779562e-05, + 2.217534601060891497e-05, + 2.218636049390249797e-05, + 2.219733774950058937e-05, + 2.220827776338877156e-05, + 2.221918052161322028e-05, + 2.223004601028220895e-05, + 2.224087421556815170e-05, + 2.225166512370251783e-05, + 2.226241872098040910e-05, + 2.227313499376022099e-05, + 2.228381392846105752e-05, + 2.229445551156447274e-05, + 2.230505972961445045e-05, + 2.231562656921664179e-05, + 2.232615601704037448e-05, + 2.233664805981581015e-05, + 2.234710268433587216e-05, + 2.235751987745576114e-05, + 2.236789962609299224e-05, + 2.237824191722677508e-05, + 2.238854673790039227e-05, + 2.239881407521776040e-05, + 2.240904391634577128e-05, + 2.241923624851364818e-05, + 2.242939105901296278e-05, + 2.243950833519733359e-05, + 2.244958806448410990e-05, + 2.245963023435172562e-05, + 2.246963483234149501e-05, + 2.247960184605719930e-05, + 2.248953126316456156e-05, + 2.249942307139335071e-05, + 2.250927725853431186e-05, + 2.251909381244118907e-05, + 2.252887272103029162e-05, + 2.253861397228041274e-05, + 2.254831755423247381e-05, + 2.255798345499138448e-05, + 2.256761166272312546e-05, + 2.257720216565690680e-05, + 2.258675495208446989e-05, + 2.259627001036005361e-05, + 2.260574732890028928e-05, + 2.261518689618565418e-05, + 2.262458870075791012e-05, + 2.263395273122203126e-05, + 2.264327897624568241e-05, + 2.265256742455872089e-05, + 2.266181806495499906e-05, + 2.267103088629032805e-05, + 2.268020587748173915e-05, + 2.268934302751187480e-05, + 2.269844232542402843e-05, + 2.270750376032462786e-05, + 2.271652732138409599e-05, + 2.272551299783411312e-05, + 2.273446077896980910e-05, + 2.274337065414898406e-05, + 2.275224261279191866e-05, + 2.276107664438303428e-05, + 2.276987273846855860e-05, + 2.277863088465647480e-05, + 2.278735107262010276e-05, + 2.279603329209398932e-05, + 2.280467753287540239e-05, + 2.281328378482643502e-05, + 2.282185203786927217e-05, + 2.283038228199042586e-05, + 2.283887450724027778e-05, + 2.284732870373065001e-05, + 2.285574486163644486e-05, + 2.286412297119709840e-05, + 2.287246302271224023e-05, + 2.288076500654714164e-05, + 2.288902891312865657e-05, + 2.289725473294631266e-05, + 2.290544245655467610e-05, + 2.291359207456848291e-05, + 2.292170357766690124e-05, + 2.292977695659281643e-05, + 2.293781220215114711e-05, + 2.294580930520958385e-05, + 2.295376825670058474e-05, + 2.296168904761695050e-05, + 2.296957166901723193e-05, + 2.297741611202148458e-05, + 2.298522236781307126e-05, + 2.299299042763883481e-05, + 2.300072028280832900e-05, + 2.300841192469404553e-05, + 2.301606534473254906e-05, + 2.302368053442263747e-05, + 2.303125748532598220e-05, + 2.303879618906907979e-05, + 2.304629663733909130e-05, + 2.305375882188773188e-05, + 2.306118273453035253e-05, + 2.306856836714453072e-05, + 2.307591571167126972e-05, + 2.308322476011479875e-05, + 2.309049550454211552e-05, + 2.309772793708460246e-05, + 2.310492204993554652e-05, + 2.311207783535203995e-05, + 2.311919528565413329e-05, + 2.312627439322524189e-05, + 2.313331515051167162e-05, + 2.314031755002388262e-05, + 2.314728158433459196e-05, + 2.315420724608002384e-05, + 2.316109452795974698e-05, + 2.316794342273639340e-05, + 2.317475392323571938e-05, + 2.318152602234778797e-05, + 2.318825971302450917e-05, + 2.319495498828188287e-05, + 2.320161184119883335e-05, + 2.320823026491739902e-05, + 2.321481025264375222e-05, + 2.322135179764652890e-05, + 2.322785489325789247e-05, + 2.323431953287326615e-05, + 2.324074570995141769e-05, + 2.324713341801400870e-05, + 2.325348265064716680e-05, + 2.325979340149911389e-05, + 2.326606566428184668e-05, + 2.327229943277062506e-05, + 2.327849470080383323e-05, + 2.328465146228395543e-05, + 2.329076971117597679e-05, + 2.329684944150839973e-05, + 2.330289064737316943e-05, + 2.330889332292554513e-05, + 2.331485746238379510e-05, + 2.332078306003041647e-05, + 2.332667011021071214e-05, + 2.333251860733245541e-05, + 2.333832854586831583e-05, + 2.334409992035348078e-05, + 2.334983272538624158e-05, + 2.335552695562923695e-05, + 2.336118260580749467e-05, + 2.336679967070986815e-05, + 2.337237814518833848e-05, + 2.337791802415809911e-05, + 2.338341930259857907e-05, + 2.338888197555203017e-05, + 2.339430603812300854e-05, + 2.339969148548136639e-05, + 2.340503831285923998e-05, + 2.341034651555183899e-05, + 2.341561608891919150e-05, + 2.342084702838251859e-05, + 2.342603932942848653e-05, + 2.343119298760601511e-05, + 2.343630799852750076e-05, + 2.344138435786882673e-05, + 2.344642206136997295e-05, + 2.345142110483258336e-05, + 2.345638148412359456e-05, + 2.346130319517198665e-05, + 2.346618623397051789e-05, + 2.347103059657607713e-05, + 2.347583627910738321e-05, + 2.348060327774752272e-05, + 2.348533158874336721e-05, + 2.349002120840420438e-05, + 2.349467213310302562e-05, + 2.349928435927696300e-05, + 2.350385788342490071e-05, + 2.350839270211075135e-05, + 2.351288881196094869e-05, + 2.351734620966532864e-05, + 2.352176489197736978e-05, + 2.352614485571360379e-05, + 2.353048609775398821e-05, + 2.353478861504242815e-05, + 2.353905240458540078e-05, + 2.354327746345295813e-05, + 2.354746378877922860e-05, + 2.355161137776055007e-05, + 2.355572022765700476e-05, + 2.355979033579275796e-05, + 2.356382169955453009e-05, + 2.356781431639260290e-05, + 2.357176818382068396e-05, + 2.357568329941552720e-05, + 2.357955966081791887e-05, + 2.358339726573145778e-05, + 2.358719611192299238e-05, + 2.359095619722307818e-05, + 2.359467751952525942e-05, + 2.359836007678635373e-05, + 2.360200386702732622e-05, + 2.360560888833148702e-05, + 2.360917513884592446e-05, + 2.361270261678093585e-05, + 2.361619132041014606e-05, + 2.361964124807024667e-05, + 2.362305239816196831e-05, + 2.362642476914860349e-05, + 2.362975835955707381e-05, + 2.363305316797746584e-05, + 2.363630919306302091e-05, + 2.363952643353084323e-05, + 2.364270488816064294e-05, + 2.364584455579592530e-05, + 2.364894543534291666e-05, + 2.365200752577160462e-05, + 2.365503082611487409e-05, + 2.365801533546939151e-05, + 2.366096105299457834e-05, + 2.366386797791314971e-05, + 2.366673610951125335e-05, + 2.366956544713796817e-05, + 2.367235599020620207e-05, + 2.367510773819150275e-05, + 2.367782069063286744e-05, + 2.368049484713246849e-05, + 2.368313020735565334e-05, + 2.368572677103082934e-05, + 2.368828453795017189e-05, + 2.369080350796863845e-05, + 2.369328368100391096e-05, + 2.369572505703776807e-05, + 2.369812763611453329e-05, + 2.370049141834174256e-05, + 2.370281640389068626e-05, + 2.370510259299464065e-05, + 2.370734998595122261e-05, + 2.370955858312058379e-05, + 2.371172838492584763e-05, + 2.371385939185391916e-05, + 2.371595160445425510e-05, + 2.371800502333923317e-05, + 2.372001964918509737e-05, + 2.372199548273049770e-05, + 2.372393252477740156e-05, + 2.372583077619125301e-05, + 2.372769023789963783e-05, + 2.372951091089410295e-05, + 2.373129279622876393e-05, + 2.373303589502092839e-05, + 2.373474020845082154e-05, + 2.373640573776198600e-05, + 2.373803248426058384e-05, + 2.373962044931610471e-05, + 2.374116963436086438e-05, + 2.374268004089011657e-05, + 2.374415167046259502e-05, + 2.374558452469924973e-05, + 2.374697860528426004e-05, + 2.374833391396518706e-05, + 2.374965045255212324e-05, + 2.375092822291804140e-05, + 2.375216722699925886e-05, + 2.375336746679442099e-05, + 2.375452894436558547e-05, + 2.375565166183752429e-05, + 2.375673562139768308e-05, + 2.375778082529697059e-05, + 2.375878727584853554e-05, + 2.375975497542854930e-05, + 2.376068392647630073e-05, + 2.376157413149365750e-05, + 2.376242559304527274e-05, + 2.376323831375896115e-05, + 2.376401229632495017e-05, + 2.376474754349633067e-05, + 2.376544405808928391e-05, + 2.376610184298237345e-05, + 2.376672090111716512e-05, + 2.376730123549788151e-05, + 2.376784284919133077e-05, + 2.376834574532743515e-05, + 2.376880992709848905e-05, + 2.376923539775970784e-05, + 2.376962216062882471e-05, + 2.376997021908629733e-05, + 2.377027957657526380e-05, + 2.377055023660164433e-05, + 2.377078220273375831e-05, + 2.377097547860281229e-05, + 2.377113006790238151e-05, + 2.377124597438875556e-05, + 2.377132320188103659e-05, + 2.377136175426046509e-05, + 2.377136163547110089e-05, + 2.377132284951967073e-05, + 2.377124540047521246e-05, + 2.377112929246941389e-05, + 2.377097452969646369e-05, + 2.377078111641301751e-05, + 2.377054905693830642e-05, + 2.377027835565387938e-05, + 2.376996901700393871e-05, + 2.376962104549487246e-05, + 2.376923444569580338e-05, + 2.376880922223813142e-05, + 2.376834537981571677e-05, + 2.376784292318454779e-05, + 2.376730185716342201e-05, + 2.376672218663317368e-05, + 2.376610391653707013e-05, + 2.376544705188079486e-05, + 2.376475159773234591e-05, + 2.376401755922185284e-05, + 2.376324494154192580e-05, + 2.376243374994733355e-05, + 2.376158398975517974e-05, + 2.376069566634482833e-05, + 2.375976878515770365e-05, + 2.375880335169764285e-05, + 2.375779937153061123e-05, + 2.375675685028475986e-05, + 2.375567579365038494e-05, + 2.375455620737999552e-05, + 2.375339809728805267e-05, + 2.375220146925140311e-05, + 2.375096632920889976e-05, + 2.374969268316131366e-05, + 2.374838053717186927e-05, + 2.374702989736532632e-05, + 2.374564076992898603e-05, + 2.374421316111181366e-05, + 2.374274707722497037e-05, + 2.374124252464161338e-05, + 2.373969950979676379e-05, + 2.373811803918743197e-05, + 2.373649811937262772e-05, + 2.373483975697320101e-05, + 2.373314295867200800e-05, + 2.373140773121371457e-05, + 2.372963408140472510e-05, + 2.372782201611369076e-05, + 2.372597154227069292e-05, + 2.372408266686781576e-05, + 2.372215539695891927e-05, + 2.372018973965973413e-05, + 2.371818570214750930e-05, + 2.371614329166146947e-05, + 2.371406251550247282e-05, + 2.371194338103312286e-05, + 2.370978589567772436e-05, + 2.370759006692213427e-05, + 2.370535590231406329e-05, + 2.370308340946265571e-05, + 2.370077259603870290e-05, + 2.369842346977475846e-05, + 2.369603603846488754e-05, + 2.369361030996456518e-05, + 2.369114629219102526e-05, + 2.368864399312281332e-05, + 2.368610342080009485e-05, + 2.368352458332461462e-05, + 2.368090748885925964e-05, + 2.367825214562865885e-05, + 2.367555856191882395e-05, + 2.367282674607713250e-05, + 2.367005670651218562e-05, + 2.366724845169428226e-05, + 2.366440199015461970e-05, + 2.366151733048617439e-05, + 2.365859448134288205e-05, + 2.365563345144026109e-05, + 2.365263424955474513e-05, + 2.364959688452439115e-05, + 2.364652136524813744e-05, + 2.364340770068624413e-05, + 2.364025589986020162e-05, + 2.363706597185255448e-05, + 2.363383792580732153e-05, + 2.363057177092897941e-05, + 2.362726751648376702e-05, + 2.362392517179855389e-05, + 2.362054474626150422e-05, + 2.361712624932166355e-05, + 2.361366969048921629e-05, + 2.361017507933519088e-05, + 2.360664242549164282e-05, + 2.360307173865162074e-05, + 2.359946302856904106e-05, + 2.359581630505871850e-05, + 2.359213157799647785e-05, + 2.358840885731852718e-05, + 2.358464815302253867e-05, + 2.358084947516657457e-05, + 2.357701283386966654e-05, + 2.357313823931155819e-05, + 2.356922570173261358e-05, + 2.356527523143405777e-05, + 2.356128683877774984e-05, + 2.355726053418632856e-05, + 2.355319632814288037e-05, + 2.354909423119141369e-05, + 2.354495425393617115e-05, + 2.354077640704211412e-05, + 2.353656070123483115e-05, + 2.353230714730047030e-05, + 2.352801575608550190e-05, + 2.352368653849718955e-05, + 2.351931950550267529e-05, + 2.351491466813035859e-05, + 2.351047203746829036e-05, + 2.350599162466525716e-05, + 2.350147344093062536e-05, + 2.349691749753345682e-05, + 2.349232380580339318e-05, + 2.348769237713110652e-05, + 2.348302322296638841e-05, + 2.347831635481987113e-05, + 2.347357178426251600e-05, + 2.346878952292472237e-05, + 2.346396958249826218e-05, + 2.345911197473383040e-05, + 2.345421671144293894e-05, + 2.344928380449717129e-05, + 2.344431326582774547e-05, + 2.343930510742610351e-05, + 2.343425934134431808e-05, + 2.342917597969337807e-05, + 2.342405503464479796e-05, + 2.341889651843028576e-05, + 2.341370044334062158e-05, + 2.340846682172735167e-05, + 2.340319566600171098e-05, + 2.339788698863404722e-05, + 2.339254080215518624e-05, + 2.338715711915581878e-05, + 2.338173595228540953e-05, + 2.337627731425477205e-05, + 2.337078121783274845e-05, + 2.336524767584888940e-05, + 2.335967670119221403e-05, + 2.335406830681061027e-05, + 2.334842250571272882e-05, + 2.334273931096621791e-05, + 2.333701873569785543e-05, + 2.333126079309449087e-05, + 2.332546549640217791e-05, + 2.331963285892661155e-05, + 2.331376289403290782e-05, + 2.330785561514497699e-05, + 2.330191103574685854e-05, + 2.329592916938158268e-05, + 2.328991002965160407e-05, + 2.328385363021847997e-05, + 2.327775998480336483e-05, + 2.327162910718601766e-05, + 2.326546101120578790e-05, + 2.325925571076135459e-05, + 2.325301321981017744e-05, + 2.324673355236908981e-05, + 2.324041672251406828e-05, + 2.323406274437945677e-05, + 2.322767163215934890e-05, + 2.322124340010667999e-05, + 2.321477806253313556e-05, + 2.320827563380974424e-05, + 2.320173612836569536e-05, + 2.319515956068965350e-05, + 2.318854594532908088e-05, + 2.318189529689003407e-05, + 2.317520763003746553e-05, + 2.316848295949533205e-05, + 2.316172130004559522e-05, + 2.315492266652950556e-05, + 2.314808707384694521e-05, + 2.314121453695621109e-05, + 2.313430507087432998e-05, + 2.312735869067715681e-05, + 2.312037541149820574e-05, + 2.311335524853044924e-05, + 2.310629821702484427e-05, + 2.309920433229106752e-05, + 2.309207360969720704e-05, + 2.308490606466916261e-05, + 2.307770171269157063e-05, + 2.307046056930825141e-05, + 2.306318265011972563e-05, + 2.305586797078576562e-05, + 2.304851654702449413e-05, + 2.304112839461132042e-05, + 2.303370352938064792e-05, + 2.302624196722483744e-05, + 2.301874372409411229e-05, + 2.301120881599738501e-05, + 2.300363725900042778e-05, + 2.299602906922771552e-05, + 2.298838426286273765e-05, + 2.298070285614493859e-05, + 2.297298486537285517e-05, + 2.296523030690306288e-05, + 2.295743919714892913e-05, + 2.294961155258233094e-05, + 2.294174738973366176e-05, + 2.293384672518948011e-05, + 2.292590957559522685e-05, + 2.291793595765369713e-05, + 2.290992588812462705e-05, + 2.290187938382704839e-05, + 2.289379646163575821e-05, + 2.288567713848406321e-05, + 2.287752143136286494e-05, + 2.286932935731983988e-05, + 2.286110093346030000e-05, + 2.285283617694834816e-05, + 2.284453510500322228e-05, + 2.283619773490296807e-05, + 2.282782408398291779e-05, + 2.281941416963427399e-05, + 2.281096800930786016e-05, + 2.280248562050946209e-05, + 2.279396702080318206e-05, + 2.278541222781007349e-05, + 2.277682125920852714e-05, + 2.276819413273273968e-05, + 2.275953086617629498e-05, + 2.275083147738725465e-05, + 2.274209598427221030e-05, + 2.273332440479455216e-05, + 2.272451675697324941e-05, + 2.271567305888614675e-05, + 2.270679332866692193e-05, + 2.269787758450526191e-05, + 2.268892584464870938e-05, + 2.267993812740124991e-05, + 2.267091445112338313e-05, + 2.266185483423270545e-05, + 2.265275929520229733e-05, + 2.264362785256293572e-05, + 2.263446052490191500e-05, + 2.262525733086156638e-05, + 2.261601828914293398e-05, + 2.260674341850223428e-05, + 2.259743273775158452e-05, + 2.258808626576027330e-05, + 2.257870402145373734e-05, + 2.256928602381361228e-05, + 2.255983229187788518e-05, + 2.255034284474084709e-05, + 2.254081770155220193e-05, + 2.253125688151869961e-05, + 2.252166040390283158e-05, + 2.251202828802310865e-05, + 2.250236055325456586e-05, + 2.249265721902694301e-05, + 2.248291830482712750e-05, + 2.247314383019756535e-05, + 2.246333381473663044e-05, + 2.245348827809833997e-05, + 2.244360723999299476e-05, + 2.243369072018554621e-05, + 2.242373873849775112e-05, + 2.241375131480670128e-05, + 2.240372846904504367e-05, + 2.239367022120163436e-05, + 2.238357659131942436e-05, + 2.237344759949828866e-05, + 2.236328326589323733e-05, + 2.235308361071443922e-05, + 2.234284865422779794e-05, + 2.233257841675478250e-05, + 2.232227291867112617e-05, + 2.231193218040855453e-05, + 2.230155622245537494e-05, + 2.229114506535253957e-05, + 2.228069872969799234e-05, + 2.227021723614459539e-05, + 2.225970060539913978e-05, + 2.224914885822498479e-05, + 2.223856201543968289e-05, + 2.222794009791603342e-05, + 2.221728312658218763e-05, + 2.220659112241980213e-05, + 2.219586410646623783e-05, + 2.218510209981516300e-05, + 2.217430512361220628e-05, + 2.216347319905967976e-05, + 2.215260634741450545e-05, + 2.214170458998685663e-05, + 2.213076794814301064e-05, + 2.211979644330329568e-05, + 2.210879009694255841e-05, + 2.209774893059011306e-05, + 2.208667296583042929e-05, + 2.207556222430030304e-05, + 2.206441672769417933e-05, + 2.205323649775768767e-05, + 2.204202155629249730e-05, + 2.203077192515468067e-05, + 2.201948762625297195e-05, + 2.200816868155124379e-05, + 2.199681511306897825e-05, + 2.198542694287691641e-05, + 2.197400419310161545e-05, + 2.196254688592379862e-05, + 2.195105504357612583e-05, + 2.193952868834852997e-05, + 2.192796784258151181e-05, + 2.191637252867140512e-05, + 2.190474276906767298e-05, + 2.189307858627376498e-05, + 2.188138000284658860e-05, + 2.186964704139736314e-05, + 2.185787972458942070e-05, + 2.184607807514119120e-05, + 2.183424211582459302e-05, + 2.182237186946316268e-05, + 2.181046735893672037e-05, + 2.179852860717709412e-05, + 2.178655563716847213e-05, + 2.177454847194984901e-05, + 2.176250713461311490e-05, + 2.175043164830313676e-05, + 2.173832203621881888e-05, + 2.172617832161050414e-05, + 2.171400052778316907e-05, + 2.170178867809486865e-05, + 2.168954279595475769e-05, + 2.167726290482789177e-05, + 2.166494902823070409e-05, + 2.165260118973168991e-05, + 2.164021941295358846e-05, + 2.162780372157145512e-05, + 2.161535413931304087e-05, + 2.160287068995895836e-05, + 2.159035339734288172e-05, + 2.157780228534967302e-05, + 2.156521737791816724e-05, + 2.155259869903945792e-05, + 2.153994627275692764e-05, + 2.152726012316697306e-05, + 2.151454027441693142e-05, + 2.150178675070794348e-05, + 2.148899957629295116e-05, + 2.147617877547729044e-05, + 2.146332437261846775e-05, + 2.145043639212661061e-05, + 2.143751485846247538e-05, + 2.142455979614049321e-05, + 2.141157122972660841e-05, + 2.139854918383873582e-05, + 2.138549368314732329e-05, + 2.137240475237306805e-05, + 2.135928241629016930e-05, + 2.134612669972416662e-05, + 2.133293762755224826e-05, + 2.131971522470343751e-05, + 2.130645951615884340e-05, + 2.129317052694973286e-05, + 2.127984828216001085e-05, + 2.126649280692668111e-05, + 2.125310412643503506e-05, + 2.123968226592396096e-05, + 2.122622725068378568e-05, + 2.121273910605459421e-05, + 2.119921785742926541e-05, + 2.118566353025149333e-05, + 2.117207615001619718e-05, + 2.115845574227010411e-05, + 2.114480233260915049e-05, + 2.113111594668175484e-05, + 2.111739661018875348e-05, + 2.110364434887877232e-05, + 2.108985918855358691e-05, + 2.107604115506594045e-05, + 2.106219027431754481e-05, + 2.104830657226272278e-05, + 2.103439007490597197e-05, + 2.102044080830241888e-05, + 2.100645879855788661e-05, + 2.099244407182941662e-05, + 2.097839665432209413e-05, + 2.096431657229588867e-05, + 2.095020385205690935e-05, + 2.093605851996405579e-05, + 2.092188060242661926e-05, + 2.090767012590244976e-05, + 2.089342711690082911e-05, + 2.087915160198292161e-05, + 2.086484360775669520e-05, + 2.085050316088255255e-05, + 2.083613028807087807e-05, + 2.082172501607968310e-05, + 2.080728737172131109e-05, + 2.079281738185368263e-05, + 2.077831507338695992e-05, + 2.076378047328126993e-05, + 2.074921360854405152e-05, + 2.073461450623604560e-05, + 2.071998319346590132e-05, + 2.070531969739068418e-05, + 2.069062404521880685e-05, + 2.067589626420831812e-05, + 2.066113638166417886e-05, + 2.064634442494450633e-05, + 2.063152042145508202e-05, + 2.061666439864954142e-05, + 2.060177638403287731e-05, + 2.058685640515852934e-05, + 2.057190448962921758e-05, + 2.055692066509737953e-05, + 2.054190495926271710e-05, + 2.052685739987570679e-05, + 2.051177801473599364e-05, + 2.049666683168948085e-05, + 2.048152387863476725e-05, + 2.046634918351742473e-05, + 2.045114277433056742e-05, + 2.043590467911775199e-05, + 2.042063492597087355e-05, + 2.040533354303024027e-05, + 2.039000055848545081e-05, + 2.037463600057262970e-05, + 2.035923989757842866e-05, + 2.034381227783716364e-05, + 2.032835316973154329e-05, + 2.031286260169269266e-05, + 2.029734060220053605e-05, + 2.028178719978131355e-05, + 2.026620242301142990e-05, + 2.025058630051460850e-05, + 2.023493886096281637e-05, + 2.021926013307585415e-05, + 2.020355014562226755e-05, + 2.018780892741663344e-05, + 2.017203650732299201e-05, + 2.015623291425290879e-05, + 2.014039817716550850e-05, + 2.012453232506835262e-05, + 2.010863538701459331e-05, + 2.009270739210698836e-05, + 2.007674836949520088e-05, + 2.006075834837639895e-05, + 2.004473735799510659e-05, + 2.002868542764409143e-05, + 2.001260258666109513e-05, + 1.999648886443351585e-05, + 1.998034429039513863e-05, + 1.996416889402684018e-05, + 1.994796270485687682e-05, + 1.993172575246099633e-05, + 1.991545806645998832e-05, + 1.989915967652372284e-05, + 1.988283061236827056e-05, + 1.986647090375643122e-05, + 1.985008058049869591e-05, + 1.983365967245013340e-05, + 1.981720820951388324e-05, + 1.980072622164179278e-05, + 1.978421373882815248e-05, + 1.976767079111664161e-05, + 1.975109740859724505e-05, + 1.973449362140444738e-05, + 1.971785945972113604e-05, + 1.970119495377583321e-05, + 1.968450013384324132e-05, + 1.966777503024517138e-05, + 1.965101967334729715e-05, + 1.963423409356281093e-05, + 1.961741832135316220e-05, + 1.960057238722153543e-05, + 1.958369632171982289e-05, + 1.956679015544596155e-05, + 1.954985391904131745e-05, + 1.953288764319462950e-05, + 1.951589135864251768e-05, + 1.949886509616288296e-05, + 1.948180888658219181e-05, + 1.946472276077239975e-05, + 1.944760674964819680e-05, + 1.943046088417459014e-05, + 1.941328519535698023e-05, + 1.939607971424911619e-05, + 1.937884447194988046e-05, + 1.936157949960057485e-05, + 1.934428482839190016e-05, + 1.932696048955772537e-05, + 1.930960651437525367e-05, + 1.929222293416900350e-05, + 1.927480978030851142e-05, + 1.925736708420511674e-05, + 1.923989487732028958e-05, + 1.922239319115491760e-05, + 1.920486205725785423e-05, + 1.918730150722164623e-05, + 1.916971157268354000e-05, + 1.915209228532529522e-05, + 1.913444367687398444e-05, + 1.911676577909884888e-05, + 1.909905862381564885e-05, + 1.908132224288472905e-05, + 1.906355666820747124e-05, + 1.904576193173410049e-05, + 1.902793806545664465e-05, + 1.901008510140986268e-05, + 1.899220307167474121e-05, + 1.897429200837548926e-05, + 1.895635194368023283e-05, + 1.893838290980183819e-05, + 1.892038493899465251e-05, + 1.890235806355903040e-05, + 1.888430231583831169e-05, + 1.886621772821940761e-05, + 1.884810433313295998e-05, + 1.882996216305375122e-05, + 1.881179125049787861e-05, + 1.879359162802704710e-05, + 1.877536332824564528e-05, + 1.875710638380134179e-05, + 1.873882082738496664e-05, + 1.872050669173138879e-05, + 1.870216400961627708e-05, + 1.868379281386066407e-05, + 1.866539313732788649e-05, + 1.864696501292418163e-05, + 1.862850847359945301e-05, + 1.861002355234415330e-05, + 1.859151028219379397e-05, + 1.857296869622588234e-05, + 1.855439882756051458e-05, + 1.853580070936055522e-05, + 1.851717437483205395e-05, + 1.849851985722120978e-05, + 1.847983718981901287e-05, + 1.846112640595812398e-05, + 1.844238753901341322e-05, + 1.842362062240200410e-05, + 1.840482568958415444e-05, + 1.838600277405966153e-05, + 1.836715190937297150e-05, + 1.834827312910964882e-05, + 1.832936646689721321e-05, + 1.831043195640600697e-05, + 1.829146963134558666e-05, + 1.827247952546910391e-05, + 1.825346167257377980e-05, + 1.823441610649362035e-05, + 1.821534286110752094e-05, + 1.819624197033587815e-05, + 1.817711346813826557e-05, + 1.815795738851784169e-05, + 1.813877376551853101e-05, + 1.811956263322558986e-05, + 1.810032402576629076e-05, + 1.808105797730654113e-05, + 1.806176452205507775e-05, + 1.804244369426426299e-05, + 1.802309552822232937e-05, + 1.800372005826196507e-05, + 1.798431731875657348e-05, + 1.796488734411717979e-05, + 1.794543016880052863e-05, + 1.792594582730154212e-05, + 1.790643435415414315e-05, + 1.788689578393532455e-05, + 1.786733015126266557e-05, + 1.784773749079072354e-05, + 1.782811783722047658e-05, + 1.780847122528726525e-05, + 1.778879768977021153e-05, + 1.776909726548844110e-05, + 1.774936998729800686e-05, + 1.772961589010013569e-05, + 1.770983500883345943e-05, + 1.769002737847503475e-05, + 1.767019303404426993e-05, + 1.765033201060044142e-05, + 1.763044434323915999e-05, + 1.761053006710190495e-05, + 1.759058921736370487e-05, + 1.757062182924258034e-05, + 1.755062793799533926e-05, + 1.753060757891836634e-05, + 1.751056078734727065e-05, + 1.749048759865788180e-05, + 1.747038804826296001e-05, + 1.745026217161692938e-05, + 1.743011000421336386e-05, + 1.740993158158158559e-05, + 1.738972693929515215e-05, + 1.736949611296394527e-05, + 1.734923913823512294e-05, + 1.732895605079721221e-05, + 1.730864688637680579e-05, + 1.728831168073910755e-05, + 1.726795046968900317e-05, + 1.724756328906720780e-05, + 1.722715017475585651e-05, + 1.720671116267443853e-05, + 1.718624628878101697e-05, + 1.716575558907203230e-05, + 1.714523909958306130e-05, + 1.712469685638524938e-05, + 1.710412889559067054e-05, + 1.708353525334857002e-05, + 1.706291596584621803e-05, + 1.704227106930894707e-05, + 1.702160060000083969e-05, + 1.700090459422119469e-05, + 1.698018308830982615e-05, + 1.695943611864326873e-05, + 1.693866372163596010e-05, + 1.691786593374059673e-05, + 1.689704279144491514e-05, + 1.687619433127672330e-05, + 1.685532058980041082e-05, + 1.683442160361768759e-05, + 1.681349740936762105e-05, + 1.679254804372726296e-05, + 1.677157354340838330e-05, + 1.675057394516228475e-05, + 1.672954928577661786e-05, + 1.670849960207585882e-05, + 1.668742493092244101e-05, + 1.666632530921278421e-05, + 1.664520077388292221e-05, + 1.662405136190467424e-05, + 1.660287711028653947e-05, + 1.658167805607351739e-05, + 1.656045423634814462e-05, + 1.653920568822665274e-05, + 1.651793244886350163e-05, + 1.649663455545219599e-05, + 1.647531204521705898e-05, + 1.645396495542235981e-05, + 1.643259332336830225e-05, + 1.641119718638866303e-05, + 1.638977658185577924e-05, + 1.636833154717718387e-05, + 1.634686211979611742e-05, + 1.632536833719270701e-05, + 1.630385023688009030e-05, + 1.628230785640878283e-05, + 1.626074123336784352e-05, + 1.623915040537623496e-05, + 1.621753541009220850e-05, + 1.619589628520939437e-05, + 1.617423306845305100e-05, + 1.615254579759034124e-05, + 1.613083451041707122e-05, + 1.610909924476792925e-05, + 1.608734003851185088e-05, + 1.606555692955367908e-05, + 1.604374995582947508e-05, + 1.602191915531681827e-05, + 1.600006456602157215e-05, + 1.597818622598808942e-05, + 1.595628417329544773e-05, + 1.593435844605361771e-05, + 1.591240908241278374e-05, + 1.589043612055486004e-05, + 1.586843959869422253e-05, + 1.584641955508256402e-05, + 1.582437602800589569e-05, + 1.580230905578062706e-05, + 1.578021867676404204e-05, + 1.575810492934086166e-05, + 1.573596785193365577e-05, + 1.571380748299900087e-05, + 1.569162386102360075e-05, + 1.566941702453377664e-05, + 1.564718701208656654e-05, + 1.562493386227114151e-05, + 1.560265761371291206e-05, + 1.558035830507103450e-05, + 1.555803597503429775e-05, + 1.553569066233071849e-05, + 1.551332240571878289e-05, + 1.549093124398845964e-05, + 1.546851721596582813e-05, + 1.544608036050914147e-05, + 1.542362071650981917e-05, + 1.540113832289332130e-05, + 1.537863321861512341e-05, + 1.535610544266659150e-05, + 1.533355503407101119e-05, + 1.531098203188438389e-05, + 1.528838647519542679e-05, + 1.526576840312653853e-05, + 1.524312785482974695e-05, + 1.522046486949254346e-05, + 1.519777948633389182e-05, + 1.517507174460505488e-05, + 1.515234168359082779e-05, + 1.512958934260503186e-05, + 1.510681476099683677e-05, + 1.508401797814636614e-05, + 1.506119903346599019e-05, + 1.503835796639985130e-05, + 1.501549481642512107e-05, + 1.499260962304786001e-05, + 1.496970242580881293e-05, + 1.494677326427946855e-05, + 1.492382217806296074e-05, + 1.490084920679396517e-05, + 1.487785439013972426e-05, + 1.485483776779586279e-05, + 1.483179937949247977e-05, + 1.480873926498983879e-05, + 1.478565746407950465e-05, + 1.476255401658521927e-05, + 1.473942896235879182e-05, + 1.471628234128609409e-05, + 1.469311419328291166e-05, + 1.466992455829600951e-05, + 1.464671347630293547e-05, + 1.462348098731291303e-05, + 1.460022713136303138e-05, + 1.457695194852378327e-05, + 1.455365547889541267e-05, + 1.453033776260854659e-05, + 1.450699883982418667e-05, + 1.448363875073482043e-05, + 1.446025753555907317e-05, + 1.443685523455289888e-05, + 1.441343188799527227e-05, + 1.438998753619931191e-05, + 1.436652221950813827e-05, + 1.434303597829180074e-05, + 1.431952885295214965e-05, + 1.429600088392398836e-05, + 1.427245211166568633e-05, + 1.424888257666933175e-05, + 1.422529231945662675e-05, + 1.420168138057476238e-05, + 1.417804980060741818e-05, + 1.415439762016053710e-05, + 1.413072487987358766e-05, + 1.410703162041408701e-05, + 1.408331788247984223e-05, + 1.405958370679365802e-05, + 1.403582913411450568e-05, + 1.401205420522321845e-05, + 1.398825896093358422e-05, + 1.396444344208819340e-05, + 1.394060768955432740e-05, + 1.391675174423419081e-05, + 1.389287564705535346e-05, + 1.386897943897197185e-05, + 1.384506316096978834e-05, + 1.382112685406296156e-05, + 1.379717055928974313e-05, + 1.377319431772406339e-05, + 1.374919817046068294e-05, + 1.372518215862669530e-05, + 1.370114632337723078e-05, + 1.367709070589123996e-05, + 1.365301534738189524e-05, + 1.362892028908695670e-05, + 1.360480557227012564e-05, + 1.358067123822566939e-05, + 1.355651732827569726e-05, + 1.353234388376560689e-05, + 1.350815094607457727e-05, + 1.348393855660616841e-05, + 1.345970675678901078e-05, + 1.343545558808236018e-05, + 1.341118509197159152e-05, + 1.338689530996915088e-05, + 1.336258628361570748e-05, + 1.333825805447574404e-05, + 1.331391066414381291e-05, + 1.328954415424031454e-05, + 1.326515856641239017e-05, + 1.324075394233402017e-05, + 1.321633032370680832e-05, + 1.319188775225575683e-05, + 1.316742626973557508e-05, + 1.314294591792638680e-05, + 1.311844673863462289e-05, + 1.309392877369414963e-05, + 1.306939206496185396e-05, + 1.304483665432394542e-05, + 1.302026258369162442e-05, + 1.299566989500221213e-05, + 1.297105863021890323e-05, + 1.294642883133181618e-05, + 1.292178054035371400e-05, + 1.289711379932625202e-05, + 1.287242865031577658e-05, + 1.284772513541408905e-05, + 1.282300329673861355e-05, + 1.279826317643322026e-05, + 1.277350481666399365e-05, + 1.274872825962555472e-05, + 1.272393354753653787e-05, + 1.269912072264095289e-05, + 1.267428982720882198e-05, + 1.264944090353206311e-05, + 1.262457399393062939e-05, + 1.259968914074846016e-05, + 1.257478638635410787e-05, + 1.254986577314098031e-05, + 1.252492734352821643e-05, + 1.249997113995626482e-05, + 1.247499720489333305e-05, + 1.245000558083105593e-05, + 1.242499631028534423e-05, + 1.239996943579649478e-05, + 1.237492499993008838e-05, + 1.234986304527149588e-05, + 1.232478361443785695e-05, + 1.229968675006260988e-05, + 1.227457249480759227e-05, + 1.224944089135844166e-05, + 1.222429198242133614e-05, + 1.219912581072837299e-05, + 1.217394241903858686e-05, + 1.214874185012804959e-05, + 1.212352414680066655e-05, + 1.209828935188381946e-05, + 1.207303750822391271e-05, + 1.204776865869821995e-05, + 1.202248284619963753e-05, + 1.199718011364857848e-05, + 1.197186050398852056e-05, + 1.194652406018268925e-05, + 1.192117082521935680e-05, + 1.189580084211307210e-05, + 1.187041415389447429e-05, + 1.184501080362135500e-05, + 1.181959083437413687e-05, + 1.179415428925140295e-05, + 1.176870121138090640e-05, + 1.174323164390946539e-05, + 1.171774563000402869e-05, + 1.169224321285718982e-05, + 1.166672443568364988e-05, + 1.164118934171591120e-05, + 1.161563797421625780e-05, + 1.159007037646124788e-05, + 1.156448659175370616e-05, + 1.153888666341837856e-05, + 1.151327063479727351e-05, + 1.148763854926087164e-05, + 1.146199045019776990e-05, + 1.143632638101604532e-05, + 1.141064638514850995e-05, + 1.138495050604832670e-05, + 1.135923878718992406e-05, + 1.133351127207019723e-05, + 1.130776800420377151e-05, + 1.128200902712979209e-05, + 1.125623438440731793e-05, + 1.123044411961638898e-05, + 1.120463827635793980e-05, + 1.117881689825482278e-05, + 1.115298002894728836e-05, + 1.112712771209963087e-05, + 1.110125999139560943e-05, + 1.107537691053948478e-05, + 1.104947851325608191e-05, + 1.102356484329156087e-05, + 1.099763594440917992e-05, + 1.097169186039567877e-05, + 1.094573263505695194e-05, + 1.091975831221884495e-05, + 1.089376893572849435e-05, + 1.086776454944944541e-05, + 1.084174519726857747e-05, + 1.081571092309145878e-05, + 1.078966177084332403e-05, + 1.076359778446902857e-05, + 1.073751900793425968e-05, + 1.071142548522061700e-05, + 1.068531726033267508e-05, + 1.065919437729318752e-05, + 1.063305688014414400e-05, + 1.060690481294679069e-05, + 1.058073821978263983e-05, + 1.055455714474879586e-05, + 1.052836163196476387e-05, + 1.050215172556787727e-05, + 1.047592746971428547e-05, + 1.044968890857997540e-05, + 1.042343608635630764e-05, + 1.039716904725658937e-05, + 1.037088783551154957e-05, + 1.034459249537035543e-05, + 1.031828307110069195e-05, + 1.029195960698954296e-05, + 1.026562214733874075e-05, + 1.023927073647180677e-05, + 1.021290541872911669e-05, + 1.018652623846913206e-05, + 1.016013324006937434e-05, + 1.013372646792177983e-05, + 1.010730596643840353e-05, + 1.008087178005250845e-05, + 1.005442395320799296e-05, + 1.002796253037106966e-05, + 1.000148755602535937e-05, + 9.974999074668499605e-06, + 9.948497130817758732e-06, + 9.921981769011167576e-06, + 9.895453033797009453e-06, + 9.868910969745307626e-06, + 9.842355621443229306e-06, + 9.815787033490171165e-06, + 9.789205250510639320e-06, + 9.762610317137779622e-06, + 9.736002278026196659e-06, + 9.709381177847183257e-06, + 9.682747061285076553e-06, + 9.656099973043119459e-06, + 9.629439957844580439e-06, + 9.602767060421996191e-06, + 9.576081325528938630e-06, + 9.549382797935239317e-06, + 9.522671522422152896e-06, + 9.495947543795279434e-06, + 9.469210906867942245e-06, + 9.442461656474211866e-06, + 9.415699837462780319e-06, + 9.388925494699251485e-06, + 9.362138673060321986e-06, + 9.335339417446537509e-06, + 9.308527772765745159e-06, + 9.281703783946009028e-06, + 9.254867495930836310e-06, + 9.228018953674286536e-06, + 9.201158202152824955e-06, + 9.174285286354521163e-06, + 9.147400251280241734e-06, + 9.120503141949406648e-06, + 9.093594003395196786e-06, + 9.066672880665727909e-06, + 9.039739818825104378e-06, + 9.012794862948631712e-06, + 8.985838058129772433e-06, + 8.958869449475451800e-06, + 8.931889082107072564e-06, + 8.904897001160526818e-06, + 8.877893251787178559e-06, + 8.850877879149215174e-06, + 8.823850928426554141e-06, + 8.796812444812058990e-06, + 8.769762473512670938e-06, + 8.742701059749261508e-06, + 8.715628248757930179e-06, + 8.688544085784935745e-06, + 8.661448616093909644e-06, + 8.634341884960995686e-06, + 8.607223937675920702e-06, + 8.580094819543192245e-06, + 8.552954575877150229e-06, + 8.525803252009093861e-06, + 8.498640893282514541e-06, + 8.471467545054051313e-06, + 8.444283252693584040e-06, + 8.417088061585236293e-06, + 8.389882017122547259e-06, + 8.362665164715615620e-06, + 8.335437549786152881e-06, + 8.308199217768709869e-06, + 8.280950214110502253e-06, + 8.253690584272631954e-06, + 8.226420373725109989e-06, + 8.199139627954044391e-06, + 8.171848392456781621e-06, + 8.144546712742973838e-06, + 8.117234634335746107e-06, + 8.089912202766776832e-06, + 8.062579463582267641e-06, + 8.035236462344063171e-06, + 8.007883244618792097e-06, + 7.980519855989690023e-06, + 7.953146342051849323e-06, + 7.925762748408476943e-06, + 7.898369120678034894e-06, + 7.870965504489368117e-06, + 7.843551945482824260e-06, + 7.816128489311378538e-06, + 7.788695181635751436e-06, + 7.761252068130339632e-06, + 7.733799194484371352e-06, + 7.706336606390938986e-06, + 7.678864349559030343e-06, + 7.651382469708615863e-06, + 7.623891012566919128e-06, + 7.596390023874411316e-06, + 7.568879549385965705e-06, + 7.541359634859820837e-06, + 7.513830326069660051e-06, + 7.486291668799735963e-06, + 7.458743708839829774e-06, + 7.431186491998662343e-06, + 7.403620064086646896e-06, + 7.376044470929390742e-06, + 7.348459758362536833e-06, + 7.320865972228207922e-06, + 7.293263158380953586e-06, + 7.265651362688819175e-06, + 7.238030631022485159e-06, + 7.210401009267189965e-06, + 7.182762543317889180e-06, + 7.155115279074271611e-06, + 7.127459262454115302e-06, + 7.099794539376063965e-06, + 7.072121155773088872e-06, + 7.044439157586204722e-06, + 7.016748590766915022e-06, + 6.989049501270983007e-06, + 6.961341935071776648e-06, + 6.933625938143150108e-06, + 6.905901556472770121e-06, + 6.878168836057126960e-06, + 6.850427822896633509e-06, + 6.822678563007751384e-06, + 6.794921102411849065e-06, + 6.767155487136433479e-06, + 6.739381763221153768e-06, + 6.711599976712790247e-06, + 6.683810173666550362e-06, + 6.656012400147000424e-06, + 6.628206702223248536e-06, + 6.600393125976181641e-06, + 6.572571717494725024e-06, + 6.544742522870751646e-06, + 6.516905588211477621e-06, + 6.489060959628140778e-06, + 6.461208683237277135e-06, + 6.433348805166743305e-06, + 6.405481371550754579e-06, + 6.377606428530946255e-06, + 6.349724022256430393e-06, + 6.321834198884846978e-06, + 6.293937004577430805e-06, + 6.266032485506268008e-06, + 6.238120687849301104e-06, + 6.210201657791606325e-06, + 6.182275441526334667e-06, + 6.154342085249840604e-06, + 6.126401635169028404e-06, + 6.098454137496264854e-06, + 6.070499638450576959e-06, + 6.042538184257546911e-06, + 6.014569821150483539e-06, + 5.986594595365494267e-06, + 5.958612553148658637e-06, + 5.930623740751106206e-06, + 5.902628204430198146e-06, + 5.874625990450596211e-06, + 5.846617145079341469e-06, + 5.818601714593137092e-06, + 5.790579745273330534e-06, + 5.762551283407129870e-06, + 5.734516375287421685e-06, + 5.706475067214021292e-06, + 5.678427405488622724e-06, + 5.650373436420893982e-06, + 5.622313206329682362e-06, + 5.594246761531722662e-06, + 5.566174148354030117e-06, + 5.538095413128795333e-06, + 5.510010602189629393e-06, + 5.481919761878927108e-06, + 5.453822938542824637e-06, + 5.425720178532350598e-06, + 5.397611528204594132e-06, + 5.369497033917694701e-06, + 5.341376742036950889e-06, + 5.313250698935960507e-06, + 5.285118950985418586e-06, + 5.256981544565421376e-06, + 5.228838526060423110e-06, + 5.200689941855467558e-06, + 5.172535838343574997e-06, + 5.144376261920593948e-06, + 5.116211258986507301e-06, + 5.088040875945238340e-06, + 5.059865159205887419e-06, + 5.031684155176451203e-06, + 5.003497910277348947e-06, + 4.975306470924004102e-06, + 4.947109883540418871e-06, + 4.918908194554141135e-06, + 4.890701450392436716e-06, + 4.862489697488431206e-06, + 4.834272982282330548e-06, + 4.806051351210067403e-06, + 4.777824850715705102e-06, + 4.749593527246427445e-06, + 4.721357427247411611e-06, + 4.693116597175468775e-06, + 4.664871083481561351e-06, + 4.636620932624414811e-06, + 4.608366191064186958e-06, + 4.580106905263683419e-06, + 4.551843121688224666e-06, + 4.523574886806906392e-06, + 4.495302247087402971e-06, + 4.467025249003513674e-06, + 4.438743939031254453e-06, + 4.410458363643807091e-06, + 4.382168569323969735e-06, + 4.353874602552768540e-06, + 4.325576509810704499e-06, + 4.297274337583880035e-06, + 4.268968132358923578e-06, + 4.240657940624201669e-06, + 4.212343808870943822e-06, + 4.184025783588192511e-06, + 4.155703911270230802e-06, + 4.127378238412765625e-06, + 4.099048811507798988e-06, + 4.070715677056124251e-06, + 4.042378881555966573e-06, + 4.014038471504123016e-06, + 3.985694493402189081e-06, + 3.957346993751478208e-06, + 3.928996019054149177e-06, + 3.900641615814448703e-06, + 3.872283830533578419e-06, + 3.843922709717123351e-06, + 3.815558299870044264e-06, + 3.787190647497741532e-06, + 3.758819799106084362e-06, + 3.730445801202501772e-06, + 3.702068700290982133e-06, + 3.673688542879417367e-06, + 3.645305375474605875e-06, + 3.616919244583363424e-06, + 3.588530196712479099e-06, + 3.560138278369910043e-06, + 3.531743536059641239e-06, + 3.503346016289161843e-06, + 3.474945765564394002e-06, + 3.446542830390825759e-06, + 3.418137257274730355e-06, + 3.389729092718031942e-06, + 3.361318383225809444e-06, + 3.332905175301145754e-06, + 3.304489515446358047e-06, + 3.276071450162896134e-06, + 3.247651025952504596e-06, + 3.219228289312160489e-06, + 3.190803286741512408e-06, + 3.162376064737790673e-06, + 3.133946669796970298e-06, + 3.105515148413712973e-06, + 3.077081547082566888e-06, + 3.048645912292790086e-06, + 3.020208290535915742e-06, + 2.991768728300558153e-06, + 2.963327272073665506e-06, + 2.934883968341654896e-06, + 2.906438863585332248e-06, + 2.877992004286070153e-06, + 2.849543436927063593e-06, + 2.821093207981844175e-06, + 2.792641363926837816e-06, + 2.764187951236258834e-06, + 2.735733016378221633e-06, + 2.707276605822253051e-06, + 2.678818766034166952e-06, + 2.650359543477265750e-06, + 2.621898984612215892e-06, + 2.593437135898305278e-06, + 2.564974043786991837e-06, + 2.536509754735746160e-06, + 2.508044315190312937e-06, + 2.479577771598490915e-06, + 2.451110170405026132e-06, + 2.422641558047759192e-06, + 2.394171980963836554e-06, + 2.365701485590918826e-06, + 2.337230118355727609e-06, + 2.308757925686609115e-06, + 2.280284954008411731e-06, + 2.251811249737322086e-06, + 2.223336859294756392e-06, + 2.194861829089504561e-06, + 2.166386205531642727e-06, + 2.137910035027340508e-06, + 2.109433363973762291e-06, + 2.080956238771628306e-06, + 2.052478705813747498e-06, + 2.024000811486230895e-06, + 1.995522602174704602e-06, + 1.967044124260481208e-06, + 1.938565424115388649e-06, + 1.910086548114368557e-06, + 1.881607542624016534e-06, + 1.853128454003741955e-06, + 1.824649328612060788e-06, + 1.796170212801429326e-06, + 1.767691152919453541e-06, + 1.739212195310062646e-06, + 1.710733386308380735e-06, + 1.682254772248246952e-06, + 1.653776399458343917e-06, + 1.625298314257040566e-06, + 1.596820562965025221e-06, + 1.568343191893775357e-06, + 1.539866247346790458e-06, + 1.511389775625828295e-06, + 1.482913823025774875e-06, + 1.454438435835837269e-06, + 1.425963660340729677e-06, + 1.397489542815526427e-06, + 1.369016129533202052e-06, + 1.340543466759477942e-06, + 1.312071600754023862e-06, + 1.283600577770373880e-06, + 1.255130444057118356e-06, + 1.226661245852771559e-06, + 1.198193029393287390e-06, + 1.169725840906935253e-06, + 1.141259726615459012e-06, + 1.112794732734043530e-06, + 1.084330905472472989e-06, + 1.055868291030004010e-06, + 1.027406935602893447e-06, + 9.989468853792469431e-07, + 9.704881865402325193e-07, + 9.420308852612365610e-07, + 9.135750277067619272e-07, + 8.851206600379252511e-07, + 8.566678284073320727e-07, + 8.282165789602556975e-07, + 7.997669578345784331e-07, + 7.713190111619702356e-07, + 7.428727850627551608e-07, + 7.144283256534326990e-07, + 6.859856790415430612e-07, + 6.575448913268522840e-07, + 6.291060086012807616e-07, + 6.006690769500975617e-07, + 5.722341424467755480e-07, + 5.438012511605241494e-07, + 5.153704491511397178e-07, + 4.869417824702034444e-07, + 4.585152971622740877e-07, + 4.300910392597420897e-07, + 4.016690547890968787e-07, + 3.732493897721107565e-07, + 3.448320902143707074e-07, + 3.164172021178716609e-07, + 2.880047714758701841e-07, + 2.595948442690147584e-07, + 2.311874664728711649e-07, + 2.027826840527815497e-07, + 1.743805429650557499e-07, + 1.459810891581670650e-07, + 1.175843685676092063e-07, + 8.919042712215745753e-08, + 6.079931074505808186e-08, + 3.241106534255964109e-08, + 4.025736816502081591e-09, +-2.435662894082317987e-08, +-5.273598605054467814e-08, +-8.111228864095392521e-08, +-1.094854908463140228e-07, +-1.378555468183267703e-07, +-1.662224107135460831e-07, +-1.945860366985168813e-07, +-2.229463789549104130e-07, +-2.513033916656760457e-07, +-2.796570290328311824e-07, +-3.080072452636205043e-07, +-3.363539945756413148e-07, +-3.646972312019860085e-07, +-3.930369093786621500e-07, +-4.213729833560467410e-07, +-4.497054073977041867e-07, +-4.780341357741241273e-07, +-5.063591227665998440e-07, +-5.346803226723516958e-07, +-5.629976897906932192e-07, +-5.913111784408094492e-07, +-6.196207429479196838e-07, +-6.479263376496726883e-07, +-6.762279168949519553e-07, +-7.045254350439591375e-07, +-7.328188464670114728e-07, +-7.611081055496760742e-07, +-7.893931666852627832e-07, +-8.176739842786822984e-07, +-8.459505127515759133e-07, +-8.742227065297576173e-07, +-9.024905200546500997e-07, +-9.307539077821048322e-07, +-9.590128241761500135e-07, +-9.872672237141163887e-07, +-1.015517060885448121e-06, +-1.043762290190521711e-06, +-1.072002866145759426e-06, +-1.100238743276122474e-06, +-1.128469876120250375e-06, +-1.156696219229254996e-06, +-1.184917727166802504e-06, +-1.213134354507924977e-06, +-1.241346055844126530e-06, +-1.269552785775908253e-06, +-1.297754498917866284e-06, +-1.325951149897512323e-06, +-1.354142693355351765e-06, +-1.382329083943687479e-06, +-1.410510276331730175e-06, +-1.438686225198120363e-06, +-1.466856885236032795e-06, +-1.495022211151996545e-06, +-1.523182157664695818e-06, +-1.551336679510098531e-06, +-1.579485731433951592e-06, +-1.607629268196907997e-06, +-1.635767244573322347e-06, +-1.663899615351344234e-06, +-1.692026335331714392e-06, +-1.720147359332872099e-06, +-1.748262642183497685e-06, +-1.776372138727590281e-06, +-1.804475803823291928e-06, +-1.832573592342960422e-06, +-1.860665459171999347e-06, +-1.888751359213928416e-06, +-1.916831247382935088e-06, +-1.944905078608967352e-06, +-1.972972807836551479e-06, +-2.001034390023602158e-06, +-2.029089780146525228e-06, +-2.057138933194004695e-06, +-2.085181804165821119e-06, +-2.113218348084230659e-06, +-2.141248519981455237e-06, +-2.169272274904828267e-06, +-2.197289567920566493e-06, +-2.225300354106359295e-06, +-2.253304588556450467e-06, +-2.281302226380426956e-06, +-2.309293222702088923e-06, +-2.337277532664475188e-06, +-2.365255111423717159e-06, +-2.393225914147835623e-06, +-2.421189896028086326e-06, +-2.449147012266506897e-06, +-2.477097218081002859e-06, +-2.505040468710433632e-06, +-2.532976719402143368e-06, +-2.560905925423298483e-06, +-2.588828042059750094e-06, +-2.616743024609801970e-06, +-2.644650828388036163e-06, +-2.672551408730415951e-06, +-2.700444720980595672e-06, +-2.728330720507450918e-06, +-2.756209362691473914e-06, +-2.784080602929790071e-06, +-2.811944396641231288e-06, +-2.839800699253928195e-06, +-2.867649466216629471e-06, +-2.895490652997502029e-06, +-2.923324215077965033e-06, +-2.951150107956525690e-06, +-2.978968287153802157e-06, +-3.006778708198923153e-06, +-3.034581326647006909e-06, +-3.062376098065547231e-06, +-3.090162978040728978e-06, +-3.117941922176194357e-06, +-3.145712886093186074e-06, +-3.173475825429328028e-06, +-3.201230695843679133e-06, +-3.228977453009349310e-06, +-3.256716052617308593e-06, +-3.284446450381398600e-06, +-3.312168602025995074e-06, +-3.339882463297261562e-06, +-3.367587989961999570e-06, +-3.395285137801447433e-06, +-3.422973862616377761e-06, +-3.450654120225895496e-06, +-3.478325866466280445e-06, +-3.505989057196008490e-06, +-3.533643648288376470e-06, +-3.561289595635322305e-06, +-3.588926855152400037e-06, +-3.616555382766538093e-06, +-3.644175134427151505e-06, +-3.671786066105067451e-06, +-3.699388133786368175e-06, +-3.726981293477395674e-06, +-3.754565501203606519e-06, +-3.782140713009636221e-06, +-3.809706884958133718e-06, +-3.837263973134774963e-06, +-3.864811933640914911e-06, +-3.892350722598590523e-06, +-3.919880296149358207e-06, +-3.947400610453176165e-06, +-3.974911621693313792e-06, +-4.002413286069105308e-06, +-4.029905559800920152e-06, +-4.057388399128988142e-06, +-4.084861760313489266e-06, +-4.112325599633384770e-06, +-4.139779873391386706e-06, +-4.167224537906702245e-06, +-4.194659549519949858e-06, +-4.222084864592057323e-06, +-4.249500439503070800e-06, +-4.276906230657137924e-06, +-4.304302194475244498e-06, +-4.331688287400134908e-06, +-4.359064465895182180e-06, +-4.386430686444498093e-06, +-4.413786905551693974e-06, +-4.441133079744936635e-06, +-4.468469165570812464e-06, +-4.495795119593211041e-06, +-4.523110898404438204e-06, +-4.550416458612992524e-06, +-4.577711756848552628e-06, +-4.604996749765727864e-06, +-4.632271394036775512e-06, +-4.659535646356554232e-06, +-4.686789463441367017e-06, +-4.714032802027829558e-06, +-4.741265618877825384e-06, +-4.768487870772411464e-06, +-4.795699514510742470e-06, +-4.822900506921101694e-06, +-4.850090804848730871e-06, +-4.877270365160779398e-06, +-4.904439144751344178e-06, +-4.931597100527981468e-06, +-4.958744189428947385e-06, +-4.985880368409836812e-06, +-5.013005594449683729e-06, +-5.040119824548711490e-06, +-5.067223015734373018e-06, +-5.094315125048091351e-06, +-5.121396109562331589e-06, +-5.148465926367332973e-06, +-5.175524532575948827e-06, +-5.202571885328704199e-06, +-5.229607941781613823e-06, +-5.256632659117223204e-06, +-5.283645994543456644e-06, +-5.310647905287579599e-06, +-5.337638348599963733e-06, +-5.364617281758985316e-06, +-5.391584662057738662e-06, +-5.418540446821036927e-06, +-5.445484593392321216e-06, +-5.472417059138321806e-06, +-5.499337801454136952e-06, +-5.526246777751175378e-06, +-5.553143945468051657e-06, +-5.580029262069539282e-06, +-5.606902685040461016e-06, +-5.633764171889517480e-06, +-5.660613680154107617e-06, +-5.687451167388338946e-06, +-5.714276591173923785e-06, +-5.741089909119117079e-06, +-5.767891078852673665e-06, +-5.794680058028788165e-06, +-5.821456804325948956e-06, +-5.848221275445749778e-06, +-5.874973429117870288e-06, +-5.901713223092794970e-06, +-5.928440615146813164e-06, +-5.955155563080790024e-06, +-5.981858024720303739e-06, +-6.008547957914452059e-06, +-6.035225320540798974e-06, +-6.061890070498109705e-06, +-6.088542165711359216e-06, +-6.115181564130470131e-06, +-6.141808223729324249e-06, +-6.168422102510467811e-06, +-6.195023158498113311e-06, +-6.221611349742904911e-06, +-6.248186634320866417e-06, +-6.274748970333381803e-06, +-6.301298315906143194e-06, +-6.327834629193964557e-06, +-6.354357868373671701e-06, +-6.380867991648937994e-06, +-6.407364957249177285e-06, +-6.433848723429619297e-06, +-6.460319248470166125e-06, +-6.486776490680189838e-06, +-6.513220408391523275e-06, +-6.539650959963194962e-06, +-6.566068103780427074e-06, +-6.592471798253380974e-06, +-6.618862001822100503e-06, +-6.645238672949323206e-06, +-6.671601770125393130e-06, +-6.697951251867104615e-06, +-6.724287076717731101e-06, +-6.750609203245993439e-06, +-6.776917590050753298e-06, +-6.803212195754087829e-06, +-6.829492979005993233e-06, +-6.855759898483294634e-06, +-6.882012912889735018e-06, +-6.908251980954843591e-06, +-6.934477061439913298e-06, +-6.960688113125048836e-06, +-6.986885094825756647e-06, +-7.013067965380147938e-06, +-7.039236683653463537e-06, +-7.065391208541970240e-06, +-7.091531498966907070e-06, +-7.117657513873534902e-06, +-7.143769212241630360e-06, +-7.169866553073956844e-06, +-7.195949495400914749e-06, +-7.222017998285359382e-06, +-7.248072020809651524e-06, +-7.274111522092321959e-06, +-7.300136461275107633e-06, +-7.326146797528898669e-06, +-7.352142490051437832e-06, +-7.378123498073331915e-06, +-7.404089780845137881e-06, +-7.430041297653885929e-06, +-7.455978007810160552e-06, +-7.481899870652998080e-06, +-7.507806845554493691e-06, +-7.533698891908244494e-06, +-7.559575969139887466e-06, +-7.585438036706107579e-06, +-7.611285054088669602e-06, +-7.637116980798157751e-06, +-7.662933776378569155e-06, +-7.688735400394698986e-06, +-7.714521812448374698e-06, +-7.740292972165764085e-06, +-7.766048839202172873e-06, +-7.791789373246610229e-06, +-7.817514534010323323e-06, +-7.843224281237293761e-06, +-7.868918574703163545e-06, +-7.894597374209453230e-06, +-7.920260639587077106e-06, +-7.945908330701178065e-06, +-7.971540407439465652e-06, +-7.997156829722756541e-06, +-8.022757557503834428e-06, +-8.048342550761815572e-06, +-8.073911769506782060e-06, +-8.099465173778621377e-06, +-8.125002723646091276e-06, +-8.150524379211373431e-06, +-8.176030100603251435e-06, +-8.201519847981772864e-06, +-8.226993581537185408e-06, +-8.252451261489977528e-06, +-8.277892848089795947e-06, +-8.303318301620094165e-06, +-8.328727582391313848e-06, +-8.354120650745580775e-06, +-8.379497467055493584e-06, +-8.404857991723180174e-06, +-8.430202185184878461e-06, +-8.455530007904075413e-06, +-8.480841420376269063e-06, +-8.506136383127764036e-06, +-8.531414856715815540e-06, +-8.556676801727534999e-06, +-8.581922178784443704e-06, +-8.607150948535820218e-06, +-8.632363071663159152e-06, +-8.657558508879234350e-06, +-8.682737220928110749e-06, +-8.707899168584061868e-06, +-8.733044312656133623e-06, +-8.758172613981496810e-06, +-8.783284033429946549e-06, +-8.808378531902863817e-06, +-8.833456070332170210e-06, +-8.858516609684844326e-06, +-8.883560110956287799e-06, +-8.908586535174892502e-06, +-8.933595843400858090e-06, +-8.958587996726391899e-06, +-8.983562956274529875e-06, +-9.008520683203844387e-06, +-9.033461138701583254e-06, +-9.058384283988316573e-06, +-9.083290080316942301e-06, +-9.108178488972579526e-06, +-9.133049471271590997e-06, +-9.157902988567348022e-06, +-9.182739002237780786e-06, +-9.207557473701228026e-06, +-9.232358364404138115e-06, +-9.257141635825673532e-06, +-9.281907249481070196e-06, +-9.306655166916096174e-06, +-9.331385349706006446e-06, +-9.356097759465644616e-06, +-9.380792357838397606e-06, +-9.405469106500662904e-06, +-9.430127967166351396e-06, +-9.454768901574737519e-06, +-9.479391871506061615e-06, +-9.503996838769435989e-06, +-9.528583765207210518e-06, +-9.553152612698486147e-06, +-9.577703343153556656e-06, +-9.602235918512905770e-06, +-9.626750300757168274e-06, +-9.651246451896240550e-06, +-9.675724333973607228e-06, +-9.700183909070964283e-06, +-9.724625139297085646e-06, +-9.749047986797948622e-06, +-9.773452413755651395e-06, +-9.797838382382915775e-06, +-9.822205854926477028e-06, +-9.846554793671600253e-06, +-9.870885160929888195e-06, +-9.895196919054903914e-06, +-9.919490030430029419e-06, +-9.943764457472978658e-06, +-9.968020162640180067e-06, +-9.992257108415929467e-06, +-1.001647525732229357e-05, +-1.004067457191802409e-05, +-1.006485501479325869e-05, +-1.008901654857378328e-05, +-1.011315913592017646e-05, +-1.013728273952660851e-05, +-1.016138732212542376e-05, +-1.018547284648052359e-05, +-1.020953927539187100e-05, +-1.023358657169437245e-05, +-1.025761469825804394e-05, +-1.028162361798682850e-05, +-1.030561329382321427e-05, +-1.032958368874152766e-05, +-1.035353476575256999e-05, +-1.037746648790241984e-05, +-1.040137881827251261e-05, +-1.042527171997870375e-05, +-1.044914515617554795e-05, +-1.047299909005000567e-05, +-1.049683348482558517e-05, +-1.052064830376163096e-05, +-1.054444351015198383e-05, +-1.056821906732960902e-05, +-1.059197493866005372e-05, +-1.061571108754579409e-05, +-1.063942747742530856e-05, +-1.066312407177302534e-05, +-1.068680083409840592e-05, +-1.071045772795028865e-05, +-1.073409471691036831e-05, +-1.075771176459773616e-05, +-1.078130883466766194e-05, +-1.080488589081188695e-05, +-1.082844289675735854e-05, +-1.085197981627072452e-05, +-1.087549661315198375e-05, +-1.089899325123870610e-05, +-1.092246969440510579e-05, +-1.094592590656091649e-05, +-1.096936185165594333e-05, +-1.099277749367345939e-05, +-1.101617279663471363e-05, +-1.103954772459774674e-05, +-1.106290224165769437e-05, +-1.108623631194547422e-05, +-1.110954989963234308e-05, +-1.113284296892346789e-05, +-1.115611548406220150e-05, +-1.117936740932911201e-05, +-1.120259870904101205e-05, +-1.122580934755524987e-05, +-1.124899928926438150e-05, +-1.127216849859523728e-05, +-1.129531694001846799e-05, +-1.131844457803805851e-05, +-1.134155137719560032e-05, +-1.136463730207343733e-05, +-1.138770231728961251e-05, +-1.141074638749671081e-05, +-1.143376947739142222e-05, +-1.145677155170409272e-05, +-1.147975257520301537e-05, +-1.150271251269869426e-05, +-1.152565132903221646e-05, +-1.154856898909013607e-05, +-1.157146545779298169e-05, +-1.159434070009944076e-05, +-1.161719468100952404e-05, +-1.164002736555952413e-05, +-1.166283871882087531e-05, +-1.168562870590975386e-05, +-1.170839729197648331e-05, +-1.173114444221005090e-05, +-1.175387012184204282e-05, +-1.177657429613540581e-05, +-1.179925693039901275e-05, +-1.182191798997634627e-05, +-1.184455744025059623e-05, +-1.186717524664284873e-05, +-1.188977137461705989e-05, +-1.191234578966902245e-05, +-1.193489845734064328e-05, +-1.195742934320871008e-05, +-1.197993841288916210e-05, +-1.200242563204113221e-05, +-1.202489096635675366e-05, +-1.204733438157051643e-05, +-1.206975584345821185e-05, +-1.209215531783195538e-05, +-1.211453277054420161e-05, +-1.213688816748684464e-05, +-1.215922147459029658e-05, +-1.218153265782756342e-05, +-1.220382168320816505e-05, +-1.222608851678230606e-05, +-1.224833312463986943e-05, +-1.227055547291046061e-05, +-1.229275552776254691e-05, +-1.231493325540739962e-05, +-1.233708862209324607e-05, +-1.235922159410916937e-05, +-1.238133213778425123e-05, +-1.240342021948777693e-05, +-1.242548580562799017e-05, +-1.244752886265635368e-05, +-1.246954935706153186e-05, +-1.249154725537334646e-05, +-1.251352252416207858e-05, +-1.253547513003722189e-05, +-1.255740503965177195e-05, +-1.257931221969618692e-05, +-1.260119663690234147e-05, +-1.262305825804272719e-05, +-1.264489704993039670e-05, +-1.266671297941814370e-05, +-1.268850601340234006e-05, +-1.271027611881720306e-05, +-1.273202326263877478e-05, +-1.275374741188387179e-05, +-1.277544853361023926e-05, +-1.279712659491557693e-05, +-1.281878156294160652e-05, +-1.284041340486808155e-05, +-1.286202208791681409e-05, +-1.288360757935088705e-05, +-1.290516984647348867e-05, +-1.292670885663200366e-05, +-1.294822457721317497e-05, +-1.296971697564214833e-05, +-1.299118601939141860e-05, +-1.301263167597078061e-05, +-1.303405391293178448e-05, +-1.305545269787029207e-05, +-1.307682799842088307e-05, +-1.309817978226070228e-05, +-1.311950801710862784e-05, +-1.314081267072425303e-05, +-1.316209371091190296e-05, +-1.318335110551576920e-05, +-1.320458482241900683e-05, +-1.322579482955253680e-05, +-1.324698109488532370e-05, +-1.326814358642841274e-05, +-1.328928227223777235e-05, +-1.331039712040962027e-05, +-1.333148809907929869e-05, +-1.335255517643033413e-05, +-1.337359832068452205e-05, +-1.339461750010598923e-05, +-1.341561268300512570e-05, +-1.343658383772788162e-05, +-1.345753093266946888e-05, +-1.347845393626369192e-05, +-1.349935281698697277e-05, +-1.352022754336111410e-05, +-1.354107808394870829e-05, +-1.356190440735209393e-05, +-1.358270648222207510e-05, +-1.360348427724849564e-05, +-1.362423776116390512e-05, +-1.364496690274760252e-05, +-1.366567167081512460e-05, +-1.368635203423162901e-05, +-1.370700796190147576e-05, +-1.372763942277298251e-05, +-1.374824638583665928e-05, +-1.376882882013000784e-05, +-1.378938669472690660e-05, +-1.380991997875136307e-05, +-1.383042864136662275e-05, +-1.385091265177944148e-05, +-1.387137197924360919e-05, +-1.389180659305073750e-05, +-1.391221646253874702e-05, +-1.393260155709084752e-05, +-1.395296184613107914e-05, +-1.397329729912798853e-05, +-1.399360788559378858e-05, +-1.401389357508345040e-05, +-1.403415433719837605e-05, +-1.405439014158112832e-05, +-1.407460095791793964e-05, +-1.409478675594270325e-05, +-1.411494750542766610e-05, +-1.413508317619179234e-05, +-1.415519373809990284e-05, +-1.417527916105806892e-05, +-1.419533941501743765e-05, +-1.421537446997321536e-05, +-1.423538429596486412e-05, +-1.425536886307505659e-05, +-1.427532814143367393e-05, +-1.429526210121195116e-05, +-1.431517071262649037e-05, +-1.433505394593831884e-05, +-1.435491177145190141e-05, +-1.437474415951907066e-05, +-1.439455108053326039e-05, +-1.441433250493363737e-05, +-1.443408840320376984e-05, +-1.445381874587205613e-05, +-1.447352350351054723e-05, +-1.449320264673883641e-05, +-1.451285614621860602e-05, +-1.453248397265717482e-05, +-1.455208609680697797e-05, +-1.457166248946416596e-05, +-1.459121312147282290e-05, +-1.461073796371914569e-05, +-1.463023698713537592e-05, +-1.464971016269880548e-05, +-1.466915746143192396e-05, +-1.468857885440146314e-05, +-1.470797431272200033e-05, +-1.472734380755173502e-05, +-1.474668731009131154e-05, +-1.476600479159223852e-05, +-1.478529622334771897e-05, +-1.480456157669644494e-05, +-1.482380082302526908e-05, +-1.484301393376387851e-05, +-1.486220088038835232e-05, +-1.488136163442046366e-05, +-1.490049616742666158e-05, +-1.491960445102170988e-05, +-1.493868645686446383e-05, +-1.495774215665669108e-05, +-1.497677152215141661e-05, +-1.499577452514397811e-05, +-1.501475113747551403e-05, +-1.503370133103578588e-05, +-1.505262507775787247e-05, +-1.507152234962174940e-05, +-1.509039311865344208e-05, +-1.510923735692500709e-05, +-1.512805503655393414e-05, +-1.514684612970716273e-05, +-1.516561060859189524e-05, +-1.518434844546762477e-05, +-1.520305961263662806e-05, +-1.522174408244757551e-05, +-1.524040182729810962e-05, +-1.525903281963050811e-05, +-1.527763703193097924e-05, +-1.529621443673731215e-05, +-1.531476500663049131e-05, +-1.533328871423796601e-05, +-1.535178553223732651e-05, +-1.537025543334681388e-05, +-1.538869839033722925e-05, +-1.540711437602281981e-05, +-1.542550336326459570e-05, +-1.544386532497378598e-05, +-1.546220023410322257e-05, +-1.548050806365532946e-05, +-1.549878878668116053e-05, +-1.551704237627607962e-05, +-1.553526880558262692e-05, +-1.555346804779358862e-05, +-1.557164007614385184e-05, +-1.558978486391800758e-05, +-1.560790238444938514e-05, +-1.562599261111605067e-05, +-1.564405551734418862e-05, +-1.566209107660715636e-05, +-1.568009926242495229e-05, +-1.569808004836715674e-05, +-1.571603340804862564e-05, +-1.573395931513128286e-05, +-1.575185774332799957e-05, +-1.576972866639423580e-05, +-1.578757205813530453e-05, +-1.580538789240601256e-05, +-1.582317614310604592e-05, +-1.584093678418363913e-05, +-1.585866978963492138e-05, +-1.587637513350259171e-05, +-1.589405278987989672e-05, +-1.591170273290515530e-05, +-1.592932493676558388e-05, +-1.594691937569615121e-05, +-1.596448602397974778e-05, +-1.598202485594644719e-05, +-1.599953584597666053e-05, +-1.601701896849652172e-05, +-1.603447419798095379e-05, +-1.605190150895292346e-05, +-1.606930087598371562e-05, +-1.608667227369180841e-05, +-1.610401567674636986e-05, +-1.612133105986243649e-05, +-1.613861839780401011e-05, +-1.615587766538357332e-05, +-1.617310883746099511e-05, +-1.619031188894705457e-05, +-1.620748679479853819e-05, +-1.622463353002145527e-05, +-1.624175206967033315e-05, +-1.625884238884815284e-05, +-1.627590446270586112e-05, +-1.629293826644512174e-05, +-1.630994377531411071e-05, +-1.632692096461033524e-05, +-1.634386980968000354e-05, +-1.636079028591811292e-05, +-1.637768236876765019e-05, +-1.639454603372275280e-05, +-1.641138125632403996e-05, +-1.642818801216178735e-05, +-1.644496627687529690e-05, +-1.646171602615187701e-05, +-1.647843723573034583e-05, +-1.649512988139672834e-05, +-1.651179393898404970e-05, +-1.652842938437888788e-05, +-1.654503619351394009e-05, +-1.656161434237103484e-05, +-1.657816380698351382e-05, +-1.659468456343162059e-05, +-1.661117658784561774e-05, +-1.662763985640505158e-05, +-1.664407434533885047e-05, +-1.666048003092451165e-05, +-1.667685688949187896e-05, +-1.669320489741508255e-05, +-1.670952403112289971e-05, +-1.672581426709061325e-05, +-1.674207558184297271e-05, +-1.675830795195661684e-05, +-1.677451135405628912e-05, +-1.679068576481398389e-05, +-1.680683116095600048e-05, +-1.682294751925519452e-05, +-1.683903481653430513e-05, +-1.685509302966865523e-05, +-1.687112213557824363e-05, +-1.688712211123799076e-05, +-1.690309293366985789e-05, +-1.691903457994556098e-05, +-1.693494702718975219e-05, +-1.695083025257258964e-05, +-1.696668423331633080e-05, +-1.698250894669490549e-05, +-1.699830437002992475e-05, +-1.701407048069316087e-05, +-1.702980725610935624e-05, +-1.704551467374910818e-05, +-1.706119271113527936e-05, +-1.707684134584240484e-05, +-1.709246055549313114e-05, +-1.710805031776099454e-05, +-1.712361061036995349e-05, +-1.713914141109340605e-05, +-1.715464269775746623e-05, +-1.717011444823637984e-05, +-1.718555664045470305e-05, +-1.720096925239056858e-05, +-1.721635226206803186e-05, +-1.723170564756395238e-05, +-1.724702938700710595e-05, +-1.726232345857472546e-05, +-1.727758784049532317e-05, +-1.729282251104814522e-05, +-1.730802744856223312e-05, +-1.732320263141957133e-05, +-1.733834803805070981e-05, +-1.735346364693759983e-05, +-1.736854943661300112e-05, +-1.738360538566061057e-05, +-1.739863147271404579e-05, +-1.741362767646006048e-05, +-1.742859397563418388e-05, +-1.744353034902346178e-05, +-1.745843677546604313e-05, +-1.747331323385093618e-05, +-1.748815970311761535e-05, +-1.750297616225864034e-05, +-1.751776259031540060e-05, +-1.753251896638124597e-05, +-1.754724526960068368e-05, +-1.756194147916852457e-05, +-1.757660757433304757e-05, +-1.759124353439143253e-05, +-1.760584933869309413e-05, +-1.762042496663847229e-05, +-1.763497039767937443e-05, +-1.764948561131834861e-05, +-1.766397058711118400e-05, +-1.767842530466317037e-05, +-1.769284974363157144e-05, +-1.770724388372518779e-05, +-1.772160770470421459e-05, +-1.773594118637975028e-05, +-1.775024430861632416e-05, +-1.776451705132803727e-05, +-1.777875939448136439e-05, +-1.779297131809420539e-05, +-1.780715280223550909e-05, +-1.782130382702796009e-05, +-1.783542437264441446e-05, +-1.784951441930761172e-05, +-1.786357394729595839e-05, +-1.787760293693695164e-05, +-1.789160136860992707e-05, +-1.790556922274798312e-05, +-1.791950647983409157e-05, +-1.793341312040383847e-05, +-1.794728912504456699e-05, +-1.796113447439500130e-05, +-1.797494914914770977e-05, +-1.798873313004597434e-05, +-1.800248639788308236e-05, +-1.801620893350835411e-05, +-1.802990071782048514e-05, +-1.804356173177027028e-05, +-1.805719195636250779e-05, +-1.807079137265285519e-05, +-1.808435996174736167e-05, +-1.809789770480777055e-05, +-1.811140458304579668e-05, +-1.812488057772518646e-05, +-1.813832567016465197e-05, +-1.815173984173061694e-05, +-1.816512307384622921e-05, +-1.817847534798455736e-05, +-1.819179664567096576e-05, +-1.820508694848565912e-05, +-1.821834623805759394e-05, +-1.823157449607001139e-05, +-1.824477170425974949e-05, +-1.825793784441438693e-05, +-1.827107289837395066e-05, +-1.828417684803347059e-05, +-1.829724967533616600e-05, +-1.831029136228217680e-05, +-1.832330189092189229e-05, +-1.833628124335881409e-05, +-1.834922940174902768e-05, +-1.836214634830145640e-05, +-1.837503206527701450e-05, +-1.838788653499117193e-05, +-1.840070973981027143e-05, +-1.841350166215352754e-05, +-1.842626228449525938e-05, +-1.843899158935899529e-05, +-1.845168955932294466e-05, +-1.846435617701938132e-05, +-1.847699142513151965e-05, +-1.848959528639624542e-05, +-1.850216774360332299e-05, +-1.851470877959477863e-05, +-1.852721837726749925e-05, +-1.853969651956954951e-05, +-1.855214318950194715e-05, +-1.856455837012113976e-05, +-1.857694204453313991e-05, +-1.858929419589876660e-05, +-1.860161480743309636e-05, +-1.861390386240267822e-05, +-1.862616134412759368e-05, +-1.863838723598126363e-05, +-1.865058152139022129e-05, +-1.866274418383355997e-05, +-1.867487520684547417e-05, +-1.868697457401166816e-05, +-1.869904226897158876e-05, +-1.871107827541804587e-05, +-1.872308257709654836e-05, +-1.873505515780774360e-05, +-1.874699600140383951e-05, +-1.875890509179092890e-05, +-1.877078241292863702e-05, +-1.878262794882999966e-05, +-1.879444168356086679e-05, +-1.880622360124218958e-05, +-1.881797368604682538e-05, +-1.882969192220167222e-05, +-1.884137829398699801e-05, +-1.885303278573618977e-05, +-1.886465538183793562e-05, +-1.887624606673260624e-05, +-1.888780482491498569e-05, +-1.889933164093327873e-05, +-1.891082649938937506e-05, +-1.892228938493828010e-05, +-1.893372028229037493e-05, +-1.894511917620864813e-05, +-1.895648605150800125e-05, +-1.896782089306050037e-05, +-1.897912368578972815e-05, +-1.899039441467306061e-05, +-1.900163306474327309e-05, +-1.901283962108535206e-05, +-1.902401406883855170e-05, +-1.903515639319616011e-05, +-1.904626657940460823e-05, +-1.905734461276599063e-05, +-1.906839047863499246e-05, +-1.907940416241888265e-05, +-1.909038564958189823e-05, +-1.910133492564008748e-05, +-1.911225197616366140e-05, +-1.912313678677874870e-05, +-1.913398934316182573e-05, +-1.914480963104714666e-05, +-1.915559763622088198e-05, +-1.916635334452371724e-05, +-1.917707674185001277e-05, +-1.918776781415023298e-05, +-1.919842654742533221e-05, +-1.920905292773407311e-05, +-1.921964694118716516e-05, +-1.923020857394966686e-05, +-1.924073781224269677e-05, +-1.925123464233866632e-05, +-1.926169905056549137e-05, +-1.927213102330672766e-05, +-1.928253054699820301e-05, +-1.929289760813035856e-05, +-1.930323219324970902e-05, +-1.931353428895377403e-05, +-1.932380388189760374e-05, +-1.933404095878877446e-05, +-1.934424550638975027e-05, +-1.935441751151717823e-05, +-1.936455696104227807e-05, +-1.937466384188995443e-05, +-1.938473814104116862e-05, +-1.939477984552974018e-05, +-1.940478894244398675e-05, +-1.941476541892856044e-05, +-1.942470926217975189e-05, +-1.943462045944975588e-05, +-1.944449899804616319e-05, +-1.945434486532971756e-05, +-1.946415804871615555e-05, +-1.947393853567576600e-05, +-1.948368631373284117e-05, +-1.949340137046775710e-05, +-1.950308369351409364e-05, +-1.951273327055995247e-05, +-1.952235008934988153e-05, +-1.953193413768037899e-05, +-1.954148540340388447e-05, +-1.955100387442854188e-05, +-1.956048953871559050e-05, +-1.956994238428163511e-05, +-1.957936239919785311e-05, +-1.958874957159010635e-05, +-1.959810388963863960e-05, +-1.960742534157977458e-05, +-1.961671391570310121e-05, +-1.962596960035356474e-05, +-1.963519238393092019e-05, +-1.964438225488912256e-05, +-1.965353920173835964e-05, +-1.966266321304231785e-05, +-1.967175427741992030e-05, +-1.968081238354498801e-05, +-1.968983752014611115e-05, +-1.969882967600642543e-05, +-1.970778883996519772e-05, +-1.971671500091525789e-05, +-1.972560814780481141e-05, +-1.973446826963704638e-05, +-1.974329535546943891e-05, +-1.975208939441601644e-05, +-1.976085037564419657e-05, +-1.976957828837697584e-05, +-1.977827312189223171e-05, +-1.978693486552287849e-05, +-1.979556350865633874e-05, +-1.980415904073650163e-05, +-1.981272145126115810e-05, +-1.982125072978206527e-05, +-1.982974686590857172e-05, +-1.983820984930334506e-05, +-1.984663966968408972e-05, +-1.985503631682487168e-05, +-1.986339978055368924e-05, +-1.987173005075388579e-05, +-1.988002711736407195e-05, +-1.988829097037744114e-05, +-1.989652159984372454e-05, +-1.990471899586687021e-05, +-1.991288314860470426e-05, +-1.992101404827276289e-05, +-1.992911168514015880e-05, +-1.993717604953107540e-05, +-1.994520713182648794e-05, +-1.995320492246001649e-05, +-1.996116941192296404e-05, +-1.996910059076055573e-05, +-1.997699844957341600e-05, +-1.998486297901716548e-05, +-1.999269416980419632e-05, +-2.000049201269938961e-05, +-2.000825649852574985e-05, +-2.001598761815992920e-05, +-2.002368536253383688e-05, +-2.003134972263627222e-05, +-2.003898068950903509e-05, +-2.004657825425042587e-05, +-2.005414240801472024e-05, +-2.006167314201044805e-05, +-2.006917044750160286e-05, +-2.007663431580890571e-05, +-2.008406473830575296e-05, +-2.009146170642367449e-05, +-2.009882521164803085e-05, +-2.010615524551953787e-05, +-2.011345179963575409e-05, +-2.012071486564756382e-05, +-2.012794443526221976e-05, +-2.013514050024320739e-05, +-2.014230305240830027e-05, +-2.014943208363072208e-05, +-2.015652758584053923e-05, +-2.016358955102113035e-05, +-2.017061797121246267e-05, +-2.017761283851059732e-05, +-2.018457414506603592e-05, +-2.019150188308504537e-05, +-2.019839604482949182e-05, +-2.020525662261624770e-05, +-2.021208360881882149e-05, +-2.021887699586511473e-05, +-2.022563677623897378e-05, +-2.023236294247965112e-05, +-2.023905548718196799e-05, +-2.024571440299595862e-05, +-2.025233968262816789e-05, +-2.025893131883965912e-05, +-2.026548930444733201e-05, +-2.027201363232381768e-05, +-2.027850429539680097e-05, +-2.028496128665061292e-05, +-2.029138459912404200e-05, +-2.029777422591188250e-05, +-2.030413016016451101e-05, +-2.031045239508782544e-05, +-2.031674092394301123e-05, +-2.032299574004788306e-05, +-2.032921683677480114e-05, +-2.033540420755203663e-05, +-2.034155784586359886e-05, +-2.034767774524890663e-05, +-2.035376389930295093e-05, +-2.035981630167696231e-05, +-2.036583494607716748e-05, +-2.037181982626559571e-05, +-2.037777093605982803e-05, +-2.038368826933293634e-05, +-2.038957182001452348e-05, +-2.039542158208880902e-05, +-2.040123754959601829e-05, +-2.040701971663214193e-05, +-2.041276807734874947e-05, +-2.041848262595272848e-05, +-2.042416335670766352e-05, +-2.042981026393175583e-05, +-2.043542334199920571e-05, +-2.044100258534004984e-05, +-2.044654798843976832e-05, +-2.045205954583948453e-05, +-2.045753725213695447e-05, +-2.046298110198372411e-05, +-2.046839109008895461e-05, +-2.047376721121648820e-05, +-2.047910946018573585e-05, +-2.048441783187265305e-05, +-2.048969232120853706e-05, +-2.049493292317933568e-05, +-2.050013963282833746e-05, +-2.050531244525371192e-05, +-2.051045135560904825e-05, +-2.051555635910490706e-05, +-2.052062745100560507e-05, +-2.052566462663303352e-05, +-2.053066788136387991e-05, +-2.053563721063040388e-05, +-2.054057260992139605e-05, +-2.054547407478089728e-05, +-2.055034160080782265e-05, +-2.055517518365852282e-05, +-2.055997481904376864e-05, +-2.056474050273038082e-05, +-2.056947223054173815e-05, +-2.057416999835546002e-05, +-2.057883380210564939e-05, +-2.058346363778269621e-05, +-2.058805950143187481e-05, +-2.059262138915428914e-05, +-2.059714929710767918e-05, +-2.060164322150394078e-05, +-2.060610315861233766e-05, +-2.061052910475678749e-05, +-2.061492105631708161e-05, +-2.061927900972964061e-05, +-2.062360296148528491e-05, +-2.062789290813114230e-05, +-2.063214884627064793e-05, +-2.063637077256222973e-05, +-2.064055868372007070e-05, +-2.064471257651495260e-05, +-2.064883244777186391e-05, +-2.065291829437306608e-05, +-2.065697011325566426e-05, +-2.066098790141276942e-05, +-2.066497165589309176e-05, +-2.066892137380122872e-05, +-2.067283705229717370e-05, +-2.067671868859728506e-05, +-2.068056627997315108e-05, +-2.068437982375209483e-05, +-2.068815931731725883e-05, +-2.069190475810759832e-05, +-2.069561614361738655e-05, +-2.069929347139743791e-05, +-2.070293673905345793e-05, +-2.070654594424727992e-05, +-2.071012108469623818e-05, +-2.071366215817328318e-05, +-2.071716916250776426e-05, +-2.072064209558395912e-05, +-2.072408095534215470e-05, +-2.072748573977827103e-05, +-2.073085644694403070e-05, +-2.073419307494652175e-05, +-2.073749562194920733e-05, +-2.074076408617052983e-05, +-2.074399846588505263e-05, +-2.074719875942279270e-05, +-2.075036496516950851e-05, +-2.075349708156649003e-05, +-2.075659510711123297e-05, +-2.075965904035635112e-05, +-2.076268887991022019e-05, +-2.076568462443703194e-05, +-2.076864627265639105e-05, +-2.077157382334409772e-05, +-2.077446727533098901e-05, +-2.077732662750386372e-05, +-2.078015187880502163e-05, +-2.078294302823251427e-05, +-2.078570007483979923e-05, +-2.078842301773656359e-05, +-2.079111185608736859e-05, +-2.079376658911292358e-05, +-2.079638721608924239e-05, +-2.079897373634813801e-05, +-2.080152614927679566e-05, +-2.080404445431861303e-05, +-2.080652865097152321e-05, +-2.080897873879015967e-05, +-2.081139471738412152e-05, +-2.081377658641848517e-05, +-2.081612434561457678e-05, +-2.081843799474872883e-05, +-2.082071753365261554e-05, +-2.082296296221420833e-05, +-2.082517428037657304e-05, +-2.082735148813818840e-05, +-2.082949458555374562e-05, +-2.083160357273242387e-05, +-2.083367844984002139e-05, +-2.083571921709710892e-05, +-2.083772587477992087e-05, +-2.083969842322074825e-05, +-2.084163686280673594e-05, +-2.084354119398046883e-05, +-2.084541141724063586e-05, +-2.084724753314101363e-05, +-2.084904954229073064e-05, +-2.085081744535493135e-05, +-2.085255124305359717e-05, +-2.085425093616240699e-05, +-2.085591652551272365e-05, +-2.085754801199104843e-05, +-2.085914539653938702e-05, +-2.086070868015548323e-05, +-2.086223786389175178e-05, +-2.086373294885698253e-05, +-2.086519393621465653e-05, +-2.086662082718384394e-05, +-2.086801362303934628e-05, +-2.086937232511076811e-05, +-2.087069693478331661e-05, +-2.087198745349795747e-05, +-2.087324388275042889e-05, +-2.087446622409223435e-05, +-2.087565447912988702e-05, +-2.087680864952550950e-05, +-2.087792873699651191e-05, +-2.087901474331547671e-05, +-2.088006667031039925e-05, +-2.088108451986447434e-05, +-2.088206829391640453e-05, +-2.088301799445991904e-05, +-2.088393362354420063e-05, +-2.088481518327360440e-05, +-2.088566267580776282e-05, +-2.088647610336158235e-05, +-2.088725546820511807e-05, +-2.088800077266365836e-05, +-2.088871201911790792e-05, +-2.088938921000354725e-05, +-2.089003234781157829e-05, +-2.089064143508806347e-05, +-2.089121647443433247e-05, +-2.089175746850694489e-05, +-2.089226442001745646e-05, +-2.089273733173278164e-05, +-2.089317620647470564e-05, +-2.089358104712039951e-05, +-2.089395185660184405e-05, +-2.089428863790652449e-05, +-2.089459139407668162e-05, +-2.089486012820976923e-05, +-2.089509484345837282e-05, +-2.089529554302998592e-05, +-2.089546223018725748e-05, +-2.089559490824793083e-05, +-2.089569358058461675e-05, +-2.089575825062506105e-05, +-2.089578892185194812e-05, +-2.089578559780297883e-05, +-2.089574828207098911e-05, +-2.089567697830349934e-05, +-2.089557169020315821e-05, +-2.089543242152756310e-05, +-2.089525917608918898e-05, +-2.089505195775548325e-05, +-2.089481077044873702e-05, +-2.089453561814627819e-05, +-2.089422650488016316e-05, +-2.089388343473743770e-05, +-2.089350641185984899e-05, +-2.089309544044423182e-05, +-2.089265052474213933e-05, +-2.089217166905974472e-05, +-2.089165887775843418e-05, +-2.089111215525414283e-05, +-2.089053150601754785e-05, +-2.088991693457428866e-05, +-2.088926844550455703e-05, +-2.088858604344342903e-05, +-2.088786973308069572e-05, +-2.088711951916086306e-05, +-2.088633540648305033e-05, +-2.088551739990128487e-05, +-2.088466550432391592e-05, +-2.088377972471439054e-05, +-2.088286006609043705e-05, +-2.088190653352463083e-05, +-2.088091913214410635e-05, +-2.087989786713061817e-05, +-2.087884274372052735e-05, +-2.087775376720468290e-05, +-2.087663094292863182e-05, +-2.087547427629238533e-05, +-2.087428377275055778e-05, +-2.087305943781218032e-05, +-2.087180127704088721e-05, +-2.087050929605480066e-05, +-2.086918350052643933e-05, +-2.086782389618291824e-05, +-2.086643048880564382e-05, +-2.086500328423056467e-05, +-2.086354228834799533e-05, +-2.086204750710264342e-05, +-2.086051894649371127e-05, +-2.085895661257464520e-05, +-2.085736051145325410e-05, +-2.085573064929180430e-05, +-2.085406703230674853e-05, +-2.085236966676893259e-05, +-2.085063855900340561e-05, +-2.084887371538959961e-05, +-2.084707514236123466e-05, +-2.084524284640605120e-05, +-2.084337683406619967e-05, +-2.084147711193813551e-05, +-2.083954368667216510e-05, +-2.083757656497315391e-05, +-2.083557575359990650e-05, +-2.083354125936541715e-05, +-2.083147308913684966e-05, +-2.082937124983541186e-05, +-2.082723574843648107e-05, +-2.082506659196941092e-05, +-2.082286378751777532e-05, +-2.082062734221889751e-05, +-2.081835726326449376e-05, +-2.081605355790006021e-05, +-2.081371623342512012e-05, +-2.081134529719325099e-05, +-2.080894075661184406e-05, +-2.080650261914227024e-05, +-2.080403089229987003e-05, +-2.080152558365389585e-05, +-2.079898670082745111e-05, +-2.079641425149758504e-05, +-2.079380824339496406e-05, +-2.079116868430427837e-05, +-2.078849558206403184e-05, +-2.078578894456643023e-05, +-2.078304877975755739e-05, +-2.078027509563713468e-05, +-2.077746790025862937e-05, +-2.077462720172936313e-05, +-2.077175300821022734e-05, +-2.076884532791580513e-05, +-2.076590416911445604e-05, +-2.076292954012793997e-05, +-2.075992144933175597e-05, +-2.075687990515537602e-05, +-2.075380491608118120e-05, +-2.075069649064558309e-05, +-2.074755463743839702e-05, +-2.074437936510294708e-05, +-2.074117068233609663e-05, +-2.073792859788811275e-05, +-2.073465312056288649e-05, +-2.073134425921780073e-05, +-2.072800202276324226e-05, +-2.072462642016335737e-05, +-2.072121746043590617e-05, +-2.071777515265134774e-05, +-2.071429950593398536e-05, +-2.071079052946150911e-05, +-2.070724823246441988e-05, +-2.070367262422688994e-05, +-2.070006371408631912e-05, +-2.069642151143322639e-05, +-2.069274602571147685e-05, +-2.068903726641820040e-05, +-2.068529524310314127e-05, +-2.068151996537016907e-05, +-2.067771144287543569e-05, +-2.067386968532858145e-05, +-2.066999470249241661e-05, +-2.066608650418245722e-05, +-2.066214510026750110e-05, +-2.065817050066972945e-05, +-2.065416271536362608e-05, +-2.065012175437711919e-05, +-2.064604762779116462e-05, +-2.064194034573896660e-05, +-2.063779991840779376e-05, +-2.063362635603680062e-05, +-2.062941966891837598e-05, +-2.062517986739800070e-05, +-2.062090696187375297e-05, +-2.061660096279608814e-05, +-2.061226188066932945e-05, +-2.060788972604947253e-05, +-2.060348450954579817e-05, +-2.059904624182036748e-05, +-2.059457493358722566e-05, +-2.059007059561422485e-05, +-2.058553323872122163e-05, +-2.058096287378047677e-05, +-2.057635951171717372e-05, +-2.057172316350900854e-05, +-2.056705384018627804e-05, +-2.056235155283189675e-05, +-2.055761631258085813e-05, +-2.055284813062113251e-05, +-2.054804701819305037e-05, +-2.054321298658881451e-05, +-2.053834604715396031e-05, +-2.053344621128599709e-05, +-2.052851349043438101e-05, +-2.052354789610142985e-05, +-2.051854943984164880e-05, +-2.051351813326179820e-05, +-2.050845398802092403e-05, +-2.050335701583051718e-05, +-2.049822722845358168e-05, +-2.049306463770609162e-05, +-2.048786925545585273e-05, +-2.048264109362284120e-05, +-2.047738016417939338e-05, +-2.047208647914935544e-05, +-2.046676005060908275e-05, +-2.046140089068695212e-05, +-2.045600901156329393e-05, +-2.045058442547039896e-05, +-2.044512714469276911e-05, +-2.043963718156621275e-05, +-2.043411454847910512e-05, +-2.042855925787144642e-05, +-2.042297132223510914e-05, +-2.041735075411405494e-05, +-2.041169756610334185e-05, +-2.040601177085059819e-05, +-2.040029338105490782e-05, +-2.039454240946702362e-05, +-2.038875886888953347e-05, +-2.038294277217681967e-05, +-2.037709413223429990e-05, +-2.037121296201948101e-05, +-2.036529927454206739e-05, +-2.035935308286221951e-05, +-2.035337440009218356e-05, +-2.034736323939604418e-05, +-2.034131961398853516e-05, +-2.033524353713654721e-05, +-2.032913502215826396e-05, +-2.032299408242326023e-05, +-2.031682073135261383e-05, +-2.031061498241822793e-05, +-2.030437684914371876e-05, +-2.029810634510471036e-05, +-2.029180348392671364e-05, +-2.028546827928740656e-05, +-2.027910074491572276e-05, +-2.027270089459101465e-05, +-2.026626874214462892e-05, +-2.025980430145869017e-05, +-2.025330758646648043e-05, +-2.024677861115238491e-05, +-2.024021738955205803e-05, +-2.023362393575120708e-05, +-2.022699826388822818e-05, +-2.022034038815086901e-05, +-2.021365032277864108e-05, +-2.020692808206213541e-05, +-2.020017368034188746e-05, +-2.019338713200999666e-05, +-2.018656845150997397e-05, +-2.017971765333466153e-05, +-2.017283475202874668e-05, +-2.016591976218758288e-05, +-2.015897269845623766e-05, +-2.015199357553228442e-05, +-2.014498240816205176e-05, +-2.013793921114361864e-05, +-2.013086399932560475e-05, +-2.012375678760611346e-05, +-2.011661759093553040e-05, +-2.010944642431368760e-05, +-2.010224330279058514e-05, +-2.009500824146730937e-05, +-2.008774125549548739e-05, +-2.008044236007597248e-05, +-2.007311157046162573e-05, +-2.006574890195474785e-05, +-2.005835436990750946e-05, +-2.005092798972312002e-05, +-2.004346977685463177e-05, +-2.003597974680548525e-05, +-2.002845791512940089e-05, +-2.002090429742955227e-05, +-2.001331890935987399e-05, +-2.000570176662466181e-05, +-1.999805288497685153e-05, +-1.999037228022119365e-05, +-1.998265996821164787e-05, +-1.997491596485145092e-05, +-1.996714028609469874e-05, +-1.995933294794494385e-05, +-1.995149396645595088e-05, +-1.994362335773120190e-05, +-1.993572113792323235e-05, +-1.992778732323540643e-05, +-1.991982192992025692e-05, +-1.991182497428025763e-05, +-1.990379647266731864e-05, +-1.989573644148348418e-05, +-1.988764489717937076e-05, +-1.987952185625627117e-05, +-1.987136733526446042e-05, +-1.986318135080387677e-05, +-1.985496391952392518e-05, +-1.984671505812380938e-05, +-1.983843478335098350e-05, +-1.983012311200357794e-05, +-1.982178006092842412e-05, +-1.981340564702196245e-05, +-1.980499988723001881e-05, +-1.979656279854673717e-05, +-1.978809439801655496e-05, +-1.977959470273272580e-05, +-1.977106372983747877e-05, +-1.976250149652245206e-05, +-1.975390802002864555e-05, +-1.974528331764485552e-05, +-1.973662740671018858e-05, +-1.972794030461224571e-05, +-1.971922202878765413e-05, +-1.971047259672186743e-05, +-1.970169202594978223e-05, +-1.969288033405377640e-05, +-1.968403753866634169e-05, +-1.967516365746839639e-05, +-1.966625870818943786e-05, +-1.965732270860822008e-05, +-1.964835567655095463e-05, +-1.963935762989334690e-05, +-1.963032858656073841e-05, +-1.962126856452476949e-05, +-1.961217758180742137e-05, +-1.960305565647869184e-05, +-1.959390280665636492e-05, +-1.958471905050760328e-05, +-1.957550440624749807e-05, +-1.956625889213982453e-05, +-1.955698252649636093e-05, +-1.954767532767774242e-05, +-1.953833731409137731e-05, +-1.952896850419541454e-05, +-1.951956891649365478e-05, +-1.951013856953947721e-05, +-1.950067748193462660e-05, +-1.949118567232755987e-05, +-1.948166315941560100e-05, +-1.947210996194517814e-05, +-1.946252609870864896e-05, +-1.945291158854760407e-05, +-1.944326645035159988e-05, +-1.943359070305661018e-05, +-1.942388436564906144e-05, +-1.941414745716058460e-05, +-1.940437999667202657e-05, +-1.939458200331197306e-05, +-1.938475349625518325e-05, +-1.937489449472641834e-05, +-1.936500501799689084e-05, +-1.935508508538456607e-05, +-1.934513471625622558e-05, +-1.933515393002610506e-05, +-1.932514274615432232e-05, +-1.931510118415124790e-05, +-1.930502926357185713e-05, +-1.929492700402009060e-05, +-1.928479442514679758e-05, +-1.927463154665015279e-05, +-1.926443838827559537e-05, +-1.925421496981613044e-05, +-1.924396131111080107e-05, +-1.923367743204691424e-05, +-1.922336335255902447e-05, +-1.921301909262689069e-05, +-1.920264467228009094e-05, +-1.919224011159369233e-05, +-1.918180543068903705e-05, +-1.917134064973548729e-05, +-1.916084578894904628e-05, +-1.915032086859235825e-05, +-1.913976590897548095e-05, +-1.912918093045395441e-05, +-1.911856595343116926e-05, +-1.910792099835688609e-05, +-1.909724608572754378e-05, +-1.908654123608610704e-05, +-1.907580647002263900e-05, +-1.906504180817240047e-05, +-1.905424727121834020e-05, +-1.904342287988967529e-05, +-1.903256865496191487e-05, +-1.902168461725682285e-05, +-1.901077078764320735e-05, +-1.899982718703460661e-05, +-1.898885383639237556e-05, +-1.897785075672338531e-05, +-1.896681796908098534e-05, +-1.895575549456496629e-05, +-1.894466335431987258e-05, +-1.893354156953772996e-05, +-1.892239016145600916e-05, +-1.891120915135843569e-05, +-1.889999856057433933e-05, +-1.888875841047975862e-05, +-1.887748872249499807e-05, +-1.886618951808769097e-05, +-1.885486081877075641e-05, +-1.884350264610281259e-05, +-1.883211502168830558e-05, +-1.882069796717771598e-05, +-1.880925150426578359e-05, +-1.879777565469435677e-05, +-1.878627044025025117e-05, +-1.877473588276576473e-05, +-1.876317200411923330e-05, +-1.875157882623288262e-05, +-1.873995637107544730e-05, +-1.872830466066228265e-05, +-1.871662371705133277e-05, +-1.870491356234756569e-05, +-1.869317421870132326e-05, +-1.868140570830659325e-05, +-1.866960805340398753e-05, +-1.865778127627875998e-05, +-1.864592539926118598e-05, +-1.863404044472702657e-05, +-1.862212643509571583e-05, +-1.861018339283245808e-05, +-1.859821134044882087e-05, +-1.858621030049839134e-05, +-1.857418029558146203e-05, +-1.856212134834309287e-05, +-1.855003348147154924e-05, +-1.853791671770094811e-05, +-1.852577107981143422e-05, +-1.851359659062480940e-05, +-1.850139327300930980e-05, +-1.848916114987787462e-05, +-1.847690024418576757e-05, +-1.846461057893634012e-05, +-1.845229217717374702e-05, +-1.843994506198846556e-05, +-1.842756925651548630e-05, +-1.841516478393175163e-05, +-1.840273166746172592e-05, +-1.839026993037239793e-05, +-1.837777959597387383e-05, +-1.836526068762196905e-05, +-1.835271322871659218e-05, +-1.834013724269949522e-05, +-1.832753275306001989e-05, +-1.831489978332790459e-05, +-1.830223835707878676e-05, +-1.828954849793162785e-05, +-1.827683022954914368e-05, +-1.826408357563801105e-05, +-1.825130855994887117e-05, +-1.823850520627467965e-05, +-1.822567353845337289e-05, +-1.821281358036671281e-05, +-1.819992535593772538e-05, +-1.818700888913617246e-05, +-1.817406420397357802e-05, +-1.816109132450407178e-05, +-1.814809027482645261e-05, +-1.813506107908244359e-05, +-1.812200376145705122e-05, +-1.810891834617895499e-05, +-1.809580485751859991e-05, +-1.808266331979092054e-05, +-1.806949375735425340e-05, +-1.805629619460760954e-05, +-1.804307065599634289e-05, +-1.802981716600712901e-05, +-1.801653574916856483e-05, +-1.800322643005357760e-05, +-1.798988923327752751e-05, +-1.797652418349853640e-05, +-1.796313130541747413e-05, +-1.794971062377844314e-05, +-1.793626216336658631e-05, +-1.792278594901116338e-05, +-1.790928200558371459e-05, +-1.789575035799806406e-05, +-1.788219103121118039e-05, +-1.786860405022073380e-05, +-1.785498944006854187e-05, +-1.784134722583812329e-05, +-1.782767743265531115e-05, +-1.781398008568816144e-05, +-1.780025521014756966e-05, +-1.778650283128478400e-05, +-1.777272297439503395e-05, +-1.775891566481493166e-05, +-1.774508092792305129e-05, +-1.773121878914064392e-05, +-1.771732927392908626e-05, +-1.770341240779337721e-05, +-1.768946821627985429e-05, +-1.767549672497653241e-05, +-1.766149795951328007e-05, +-1.764747194556210398e-05, +-1.763341870883505856e-05, +-1.761933827508688869e-05, +-1.760523067011570734e-05, +-1.759109591975759488e-05, +-1.757693404989237246e-05, +-1.756274508644150816e-05, +-1.754852905536584013e-05, +-1.753428598266941539e-05, +-1.752001589439691480e-05, +-1.750571881663433749e-05, +-1.749139477550937358e-05, +-1.747704379718914084e-05, +-1.746266590788298674e-05, +-1.744826113384313217e-05, +-1.743382950135921993e-05, +-1.741937103676416263e-05, +-1.740488576643194047e-05, +-1.739037371677476529e-05, +-1.737583491425004662e-05, +-1.736126938535160965e-05, +-1.734667715661656630e-05, +-1.733205825462197800e-05, +-1.731741270598617020e-05, +-1.730274053736553065e-05, +-1.728804177546137031e-05, +-1.727331644701112780e-05, +-1.725856457879505420e-05, +-1.724378619763395311e-05, +-1.722898133038637869e-05, +-1.721415000395483936e-05, +-1.719929224528032592e-05, +-1.718440808134274865e-05, +-1.716949753916394934e-05, +-1.715456064580599707e-05, +-1.713959742836831509e-05, +-1.712460791399491444e-05, +-1.710959212986524604e-05, +-1.709455010320122764e-05, +-1.707948186126388959e-05, +-1.706438743135417442e-05, +-1.704926684081273358e-05, +-1.703412011702056100e-05, +-1.701894728739644522e-05, +-1.700374837940057775e-05, +-1.698852342053286239e-05, +-1.697327243833002516e-05, +-1.695799546037214661e-05, +-1.694269251427675971e-05, +-1.692736362769952746e-05, +-1.691200882833735318e-05, +-1.689662814392573444e-05, +-1.688122160223930508e-05, +-1.686578923109267891e-05, +-1.685033105833751559e-05, +-1.683484711186649147e-05, +-1.681933741961131760e-05, +-1.680380200954012743e-05, +-1.678824090966379230e-05, +-1.677265414803021923e-05, +-1.675704175272460162e-05, +-1.674140375187307505e-05, +-1.672574017363974932e-05, +-1.671005104622736904e-05, +-1.669433639787734421e-05, +-1.667859625687039395e-05, +-1.666283065152356828e-05, +-1.664703961019452740e-05, +-1.663122316127866511e-05, +-1.661538133320963740e-05, +-1.659951415446020946e-05, +-1.658362165353942659e-05, +-1.656770385899633438e-05, +-1.655176079941773237e-05, +-1.653579250342840782e-05, +-1.651979899969121369e-05, +-1.650378031690772585e-05, +-1.648773648381535986e-05, +-1.647166752919165014e-05, +-1.645557348185110579e-05, +-1.643945437064621009e-05, +-1.642331022446779997e-05, +-1.640714107224241312e-05, +-1.639094694293622497e-05, +-1.637472786555240595e-05, +-1.635848386913162637e-05, +-1.634221498275210377e-05, +-1.632592123553018915e-05, +-1.630960265661752088e-05, +-1.629325927520446708e-05, +-1.627689112052083711e-05, +-1.626049822182944749e-05, +-1.624408060843316926e-05, +-1.622763830967184474e-05, +-1.621117135492052911e-05, +-1.619467977359334270e-05, +-1.617816359514056399e-05, +-1.616162284904958167e-05, +-1.614505756484525378e-05, +-1.612846777208720736e-05, +-1.611185350037319609e-05, +-1.609521477933991687e-05, +-1.607855163865639950e-05, +-1.606186410803126752e-05, +-1.604515221720954316e-05, +-1.602841599596996732e-05, +-1.601165547413278893e-05, +-1.599487068154966827e-05, +-1.597806164811145616e-05, +-1.596122840374455506e-05, +-1.594437097841249122e-05, +-1.592748940211186919e-05, +-1.591058370488071007e-05, +-1.589365391678796520e-05, +-1.587670006794156299e-05, +-1.585972218848541042e-05, +-1.584272030859636406e-05, +-1.582569445849173138e-05, +-1.580864466842225733e-05, +-1.579157096867314753e-05, +-1.577447338956748353e-05, +-1.575735196146391552e-05, +-1.574020671475395174e-05, +-1.572303767986965979e-05, +-1.570584488727358352e-05, +-1.568862836746662040e-05, +-1.567138815098509085e-05, +-1.565412426839767532e-05, +-1.563683675031275977e-05, +-1.561952562737192033e-05, +-1.560219093025018411e-05, +-1.558483268966020686e-05, +-1.556745093634958609e-05, +-1.555004570109796768e-05, +-1.553261701472447601e-05, +-1.551516490808086993e-05, +-1.549768941205241355e-05, +-1.548019055756128467e-05, +-1.546266837556366775e-05, +-1.544512289705064843e-05, +-1.542755415304851500e-05, +-1.540996217461589212e-05, +-1.539234699284842313e-05, +-1.537470863887518890e-05, +-1.535704714385992405e-05, +-1.533936253900066132e-05, +-1.532165485553056833e-05, +-1.530392412471474924e-05, +-1.528617037785479841e-05, +-1.526839364628575105e-05, +-1.525059396137669985e-05, +-1.523277135453162682e-05, +-1.521492585718618451e-05, +-1.519705750081223783e-05, +-1.517916631691483166e-05, +-1.516125233703277701e-05, +-1.514331559273868319e-05, +-1.512535611563969644e-05, +-1.510737393737426763e-05, +-1.508936908961676693e-05, +-1.507134160407437178e-05, +-1.505329151248782921e-05, +-1.503521884663124413e-05, +-1.501712363831292971e-05, +-1.499900591937216496e-05, +-1.498086572168385169e-05, +-1.496270307715539238e-05, +-1.494451801772731527e-05, +-1.492631057537400958e-05, +-1.490808078210070332e-05, +-1.488982866994788478e-05, +-1.487155427098814649e-05, +-1.485325761732710342e-05, +-1.483493874110309309e-05, +-1.481659767448814633e-05, +-1.479823444968451947e-05, +-1.477984909892965121e-05, +-1.476144165449258644e-05, +-1.474301214867517731e-05, +-1.472456061381159370e-05, +-1.470608708226934975e-05, +-1.468759158644509587e-05, +-1.466907415877340074e-05, +-1.465053483171559079e-05, +-1.463197363776832900e-05, +-1.461339060946049608e-05, +-1.459478577935067819e-05, +-1.457615918003099551e-05, +-1.455751084412815938e-05, +-1.453884080429587097e-05, +-1.452014909322294437e-05, +-1.450143574363006582e-05, +-1.448270078826640896e-05, +-1.446394425991854397e-05, +-1.444516619139901780e-05, +-1.442636661555525485e-05, +-1.440754556526611459e-05, +-1.438870307343964188e-05, +-1.436983917301682605e-05, +-1.435095389697253777e-05, +-1.433204727830801415e-05, +-1.431311935005906140e-05, +-1.429417014529265316e-05, +-1.427519969710364061e-05, +-1.425620803862284166e-05, +-1.423719520300966496e-05, +-1.421816122345295016e-05, +-1.419910613317469657e-05, +-1.418002996542792691e-05, +-1.416093275349315860e-05, +-1.414181453068729931e-05, +-1.412267533035226786e-05, +-1.410351518586390168e-05, +-1.408433413062856358e-05, +-1.406513219807984337e-05, +-1.404590942168680124e-05, +-1.402666583494624448e-05, +-1.400740147138384893e-05, +-1.398811636455796222e-05, +-1.396881054805703721e-05, +-1.394948405549666231e-05, +-1.393013692052815377e-05, +-1.391076917682698862e-05, +-1.389138085810205594e-05, +-1.387197199809141157e-05, +-1.385254263056282183e-05, +-1.383309278931398723e-05, +-1.381362250817314718e-05, +-1.379413182099579354e-05, +-1.377462076166945803e-05, +-1.375508936411049353e-05, +-1.373553766226477029e-05, +-1.371596569010760315e-05, +-1.369637348164453585e-05, +-1.367676107090799697e-05, +-1.365712849196215508e-05, +-1.363747577889963739e-05, +-1.361780296584219717e-05, +-1.359811008694152523e-05, +-1.357839717637588888e-05, +-1.355866426835502948e-05, +-1.353891139711681498e-05, +-1.351913859692795309e-05, +-1.349934590208408108e-05, +-1.347953334691030791e-05, +-1.345970096575795819e-05, +-1.343984879300949346e-05, +-1.341997686307520708e-05, +-1.340008521039381544e-05, +-1.338017386943258671e-05, +-1.336024287468794734e-05, +-1.334029226068224636e-05, +-1.332032206196851913e-05, +-1.330033231312729567e-05, +-1.328032304876723937e-05, +-1.326029430352597537e-05, +-1.324024611206650931e-05, +-1.322017850908263816e-05, +-1.320009152929500984e-05, +-1.317998520745225824e-05, +-1.315985957833079146e-05, +-1.313971467673564731e-05, +-1.311955053749696288e-05, +-1.309936719547506521e-05, +-1.307916468555701371e-05, +-1.305894304265741667e-05, +-1.303870230171829238e-05, +-1.301844249770992801e-05, +-1.299816366562647164e-05, +-1.297786584049541394e-05, +-1.295754905736543331e-05, +-1.293721335131571145e-05, +-1.291685875745267235e-05, +-1.289648531090707866e-05, +-1.287609304683843115e-05, +-1.285568200043573782e-05, +-1.283525220690964500e-05, +-1.281480370150107196e-05, +-1.279433651947770759e-05, +-1.277385069613030213e-05, +-1.275334626678251132e-05, +-1.273282326677831972e-05, +-1.271228173149164433e-05, +-1.269172169632299897e-05, +-1.267114319669645516e-05, +-1.265054626806424995e-05, +-1.262993094590749744e-05, +-1.260929726572825548e-05, +-1.258864526305812301e-05, +-1.256797497345487908e-05, +-1.254728643249872203e-05, +-1.252657967580110737e-05, +-1.250585473899671120e-05, +-1.248511165774427043e-05, +-1.246435046773098227e-05, +-1.244357120466968871e-05, +-1.242277390429531558e-05, +-1.240195860237470152e-05, +-1.238112533469380609e-05, +-1.236027413706775559e-05, +-1.233940504533700768e-05, +-1.231851809536373795e-05, +-1.229761332304090147e-05, +-1.227669076428385395e-05, +-1.225575045503139358e-05, +-1.223479243125001651e-05, +-1.221381672893040001e-05, +-1.219282338408823424e-05, +-1.217181243276492017e-05, +-1.215078391102413236e-05, +-1.212973785495687404e-05, +-1.210867430067809408e-05, +-1.208759328432737982e-05, +-1.206649484206887070e-05, +-1.204537901009220017e-05, +-1.202424582460874500e-05, +-1.200309532185698874e-05, +-1.198192753809892683e-05, +-1.196074250962082225e-05, +-1.193954027273309364e-05, +-1.191832086377138938e-05, +-1.189708431909258955e-05, +-1.187583067508039811e-05, +-1.185455996814164637e-05, +-1.183327223470700795e-05, +-1.181196751123206092e-05, +-1.179064583419322374e-05, +-1.176930724009361675e-05, +-1.174795176545895914e-05, +-1.172657944683866158e-05, +-1.170519032080565179e-05, +-1.168378442395731810e-05, +-1.166236179291167239e-05, +-1.164092246431283549e-05, +-1.161946647482734073e-05, +-1.159799386114494876e-05, +-1.157650465997861877e-05, +-1.155499890806532167e-05, +-1.153347664216229613e-05, +-1.151193789905256623e-05, +-1.149038271554119583e-05, +-1.146881112845606278e-05, +-1.144722317464880591e-05, +-1.142561889099097100e-05, +-1.140399831437960122e-05, +-1.138236148173344244e-05, +-1.136070842999377326e-05, +-1.133903919612440169e-05, +-1.131735381711243423e-05, +-1.129565232996458279e-05, +-1.127393477171263316e-05, +-1.125220117940971467e-05, +-1.123045159013110824e-05, +-1.120868604097514256e-05, +-1.118690456905942989e-05, +-1.116510721152539765e-05, +-1.114329400553924389e-05, +-1.112146498828335856e-05, +-1.109962019696572385e-05, +-1.107775966881608223e-05, +-1.105588344108295149e-05, +-1.103399155103839526e-05, +-1.101208403597889712e-05, +-1.099016093321667853e-05, +-1.096822228008919575e-05, +-1.094626811395528585e-05, +-1.092429847219124662e-05, +-1.090231339220128730e-05, +-1.088031291140416237e-05, +-1.085829706724347319e-05, +-1.083626589718389527e-05, +-1.081421943870824251e-05, +-1.079215772932206486e-05, +-1.077008080655481045e-05, +-1.074798870795079116e-05, +-1.072588147107895734e-05, +-1.070375913352895916e-05, +-1.068162173290717228e-05, +-1.065946930684718076e-05, +-1.063730189299640919e-05, +-1.061511952902644630e-05, +-1.059292225262835919e-05, +-1.057071010151437217e-05, +-1.054848311341311654e-05, +-1.052624132608015250e-05, +-1.050398477728434036e-05, +-1.048171350481840643e-05, +-1.045942754649510595e-05, +-1.043712694014317598e-05, +-1.041481172361703054e-05, +-1.039248193478792606e-05, +-1.037013761154490666e-05, +-1.034777879179956277e-05, +-1.032540551348211787e-05, +-1.030301781454223312e-05, +-1.028061573295012552e-05, +-1.025819930669236824e-05, +-1.023576857377781483e-05, +-1.021332357223462777e-05, +-1.019086434010622296e-05, +-1.016839091546100710e-05, +-1.014590333638351953e-05, +-1.012340164097537236e-05, +-1.010088586736005995e-05, +-1.007835605367891858e-05, +-1.005581223809219367e-05, +-1.003325445877877724e-05, +-1.001068275393732258e-05, +-9.988097161782078545e-06, +-9.965497720548837447e-06, +-9.942884468490906528e-06, +-9.920257443879975344e-06, +-9.897616685007128810e-06, +-9.874962230178805161e-06, +-9.852294117722596435e-06, +-9.829612385983289434e-06, +-9.806917073323802552e-06, +-9.784208218125043467e-06, +-9.761485858786923887e-06, +-9.738750033724292101e-06, +-9.716000781372848653e-06, +-9.693238140185033154e-06, +-9.670462148631022085e-06, +-9.647672845199646978e-06, +-9.624870268394371015e-06, +-9.602054456739097976e-06, +-9.579225448774242007e-06, +-9.556383283057633945e-06, +-9.533527998164440006e-06, +-9.510659632688030834e-06, +-9.487778225236030946e-06, +-9.464883814435173922e-06, +-9.441976438932305293e-06, +-9.419056137385227806e-06, +-9.396122948472706581e-06, +-9.373176910890425374e-06, +-9.350218063347832227e-06, +-9.327246444574116129e-06, +-9.304262093314225968e-06, +-9.281265048329648100e-06, +-9.258255348399449899e-06, +-9.235233032316171644e-06, +-9.212198138890834178e-06, +-9.189150706953770698e-06, +-9.166090775345595685e-06, +-9.143018382927203282e-06, +-9.119933568575620223e-06, +-9.096836371180936183e-06, +-9.073726829652366843e-06, +-9.050604982913983146e-06, +-9.027470869905897144e-06, +-9.004324529583929965e-06, +-8.981166000920753607e-06, +-8.957995322900679999e-06, +-8.934812534530799476e-06, +-8.911617674826603249e-06, +-8.888410782823204890e-06, +-8.865191897571181410e-06, +-8.841961058133425674e-06, +-8.818718303590113411e-06, +-8.795463673039873807e-06, +-8.772197205590270553e-06, +-8.748918940368130564e-06, +-8.725628916515334224e-06, +-8.702327173184620877e-06, +-8.679013749550928909e-06, +-8.655688684796736994e-06, +-8.632352018123558328e-06, +-8.609003788746482353e-06, +-8.585644035896388898e-06, +-8.562272798814606791e-06, +-8.538890116764140433e-06, +-8.515496029015387128e-06, +-8.492090574857155290e-06, +-8.468673793592624091e-06, +-8.445245724535132019e-06, +-8.421806407018366680e-06, +-8.398355880387098259e-06, +-8.374894183998104482e-06, +-8.351421357225259585e-06, +-8.327937439455375388e-06, +-8.304442470089073733e-06, +-8.280936488541877470e-06, +-8.257419534239943097e-06, +-8.233891646626210223e-06, +-8.210352865157191315e-06, +-8.186803229298858503e-06, +-8.163242778536880821e-06, +-8.139671552367171319e-06, +-8.116089590297017006e-06, +-8.092496931850011970e-06, +-8.068893616561996699e-06, +-8.045279683981893261e-06, +-8.021655173671803554e-06, +-7.998020125207819074e-06, +-7.974374578175917884e-06, +-7.950718572178048008e-06, +-7.927052146827953249e-06, +-7.903375341752133726e-06, +-7.879688196590823354e-06, +-7.855990750993774999e-06, +-7.832283044626382840e-06, +-7.808565117165592893e-06, +-7.784837008300658559e-06, +-7.761098757733260909e-06, +-7.737350405178406536e-06, +-7.713591990360212718e-06, +-7.689823553018073821e-06, +-7.666045132902446461e-06, +-7.642256769775855778e-06, +-7.618458503413770424e-06, +-7.594650373600452099e-06, +-7.570832420135177010e-06, +-7.547004682827883814e-06, +-7.523167201500242575e-06, +-7.499320015985517543e-06, +-7.475463166129658981e-06, +-7.451596691786957885e-06, +-7.427720632825201029e-06, +-7.403835029126725515e-06, +-7.379939920578838839e-06, +-7.356035347084352584e-06, +-7.332121348557192255e-06, +-7.308197964919276805e-06, +-7.284265236106703673e-06, +-7.260323202065484819e-06, +-7.236371902752550455e-06, +-7.212411378136712128e-06, +-7.188441668194408066e-06, +-7.164462812914915824e-06, +-7.140474852301245903e-06, +-7.116477826360743918e-06, +-7.092471775115435411e-06, +-7.068456738597807630e-06, +-7.044432756847550141e-06, +-7.020399869917838972e-06, +-6.996358117871015045e-06, +-6.972307540779614173e-06, +-6.948248178726278963e-06, +-6.924180071804815072e-06, +-6.900103260114670242e-06, +-6.876017783772715682e-06, +-6.851923682898146863e-06, +-6.827820997624269126e-06, +-6.803709768094082107e-06, +-6.779590034457011034e-06, +-6.755461836874255738e-06, +-6.731325215519629221e-06, +-6.707180210570076808e-06, +-6.683026862216158190e-06, +-6.658865210657759734e-06, +-6.634695296099747515e-06, +-6.610517158763610628e-06, +-6.586330838872543249e-06, +-6.562136376663008322e-06, +-6.537933812380476140e-06, +-6.513723186275027396e-06, +-6.489504538612039352e-06, +-6.465277909662431407e-06, +-6.441043339703755226e-06, +-6.416800869025357409e-06, +-6.392550537925225987e-06, +-6.368292386705549425e-06, +-6.344026455683368913e-06, +-6.319752785180972161e-06, +-6.295471415526725191e-06, +-6.271182387060538232e-06, +-6.246885740129370526e-06, +-6.222581515088377202e-06, +-6.198269752301770716e-06, +-6.173950492138537397e-06, +-6.149623774978816462e-06, +-6.125289641210591495e-06, +-6.100948131225350260e-06, +-6.076599285428703946e-06, +-6.052243144230711512e-06, +-6.027879748046903749e-06, +-6.003509137303494230e-06, +-5.979131352433122965e-06, +-5.954746433875767811e-06, +-5.930354422079834604e-06, +-5.905955357497724631e-06, +-5.881549280592282253e-06, +-5.857136231832360678e-06, +-5.832716251693908713e-06, +-5.808289380659795421e-06, +-5.783855659220957856e-06, +-5.759415127871876209e-06, +-5.734967827117120530e-06, +-5.710513797466819943e-06, +-5.686053079437859511e-06, +-5.661585713553590541e-06, +-5.637111740345047781e-06, +-5.612631200346450820e-06, +-5.588144134101627143e-06, +-5.563650582159659226e-06, +-5.539150585075862862e-06, +-5.514644183412833244e-06, +-5.490131417736048019e-06, +-5.465612328620248834e-06, +-5.441086956645111300e-06, +-5.416555342396208921e-06, +-5.392017526464959728e-06, +-5.367473549449650341e-06, +-5.342923451951040718e-06, +-5.318367274578816002e-06, +-5.293805057947120964e-06, +-5.269236842675616255e-06, +-5.244662669389436898e-06, +-5.220082578720153674e-06, +-5.195496611301443088e-06, +-5.170904807775455362e-06, +-5.146307208788422569e-06, +-5.121703854991724201e-06, +-5.097094787042881589e-06, +-5.072480045601102504e-06, +-5.047859671332692005e-06, +-5.023233704912080742e-06, +-4.998602187011944308e-06, +-4.973965158314024093e-06, +-4.949322659504737108e-06, +-4.924674731271760748e-06, +-4.900021414310606618e-06, +-4.875362749320119395e-06, +-4.850698777003519530e-06, +-4.826029538069454414e-06, +-4.801355073227509102e-06, +-4.776675423193679842e-06, +-4.751990628691301577e-06, +-4.727300730441257089e-06, +-4.702605769172725845e-06, +-4.677905785618831949e-06, +-4.653200820513273789e-06, +-4.628490914595684069e-06, +-4.603776108612710618e-06, +-4.579056443308092555e-06, +-4.554331959433511626e-06, +-4.529602697744163917e-06, +-4.504868698994303614e-06, +-4.480130003949248000e-06, +-4.455386653369949597e-06, +-4.430638688024986764e-06, +-4.405886148686121011e-06, +-4.381129076123857697e-06, +-4.356367511118280431e-06, +-4.331601494449199229e-06, +-4.306831066897142393e-06, +-4.282056269248757187e-06, +-4.257277142293478465e-06, +-4.232493726819039389e-06, +-4.207706063623558592e-06, +-4.182914193499998820e-06, +-4.158118157248247309e-06, +-4.133317995669506742e-06, +-4.108513749567402313e-06, +-4.083705459747845359e-06, +-4.058893167020076055e-06, +-4.034076912192270706e-06, +-4.009256736077948698e-06, +-3.984432679492717353e-06, +-3.959604783249735223e-06, +-3.934773088170692174e-06, +-3.909937635075804235e-06, +-3.885098464784880013e-06, +-3.860255618122739161e-06, +-3.835409135914731576e-06, +-3.810559058987798303e-06, +-3.785705428171488829e-06, +-3.760848284293472649e-06, +-3.735987668186131304e-06, +-3.711123620682047503e-06, +-3.686256182615027919e-06, +-3.661385394820082012e-06, +-3.636511298134422375e-06, +-3.611633933392999175e-06, +-3.586753341435037554e-06, +-3.561869563099593672e-06, +-3.536982639226535993e-06, +-3.512092610656537662e-06, +-3.487199518232075583e-06, +-3.462303402792966973e-06, +-3.437404305182903379e-06, +-3.412502266244995709e-06, +-3.387597326822804219e-06, +-3.362689527761346487e-06, +-3.337778909902664040e-06, +-3.312865514092354250e-06, +-3.287949381175067928e-06, +-3.263030551995590142e-06, +-3.238109067398738993e-06, +-3.213184968230412548e-06, +-3.188258295333122440e-06, +-3.163329089552522789e-06, +-3.138397391732951854e-06, +-3.113463242718454394e-06, +-3.088526683352730427e-06, +-3.063587754480158445e-06, +-3.038646496941299360e-06, +-3.013702951579500825e-06, +-2.988757159236385932e-06, +-2.963809160752851868e-06, +-2.938858996970206206e-06, +-2.913906708725576834e-06, +-2.888952336857425295e-06, +-2.863995922206595412e-06, +-2.839037505606255618e-06, +-2.814077127892928598e-06, +-2.789114829901971094e-06, +-2.764150652464214575e-06, +-2.739184636412531015e-06, +-2.714216822577307191e-06, +-2.689247251787554721e-06, +-2.664275964871862979e-06, +-2.639303002653983511e-06, +-2.614328405958250196e-06, +-2.589352215610632957e-06, +-2.564374472428733458e-06, +-2.539395217232745280e-06, +-2.514414490840976936e-06, +-2.489432334066477708e-06, +-2.464448787722495932e-06, +-2.439463892623526355e-06, +-2.414477689575255848e-06, +-2.389490219385607876e-06, +-2.364501522860214678e-06, +-2.339511640797933924e-06, +-2.314520614002970603e-06, +-2.289528483269291617e-06, +-2.264535289392749786e-06, +-2.239541073166600928e-06, +-2.214545875376967572e-06, +-2.189549736813911799e-06, +-2.164552698261330135e-06, +-2.139554800498042415e-06, +-2.114556084303256416e-06, +-2.089556590453170829e-06, +-2.064556359716456763e-06, +-2.039555432866433000e-06, +-2.014553850665446275e-06, +-1.989551653876995717e-06, +-1.964548883260141153e-06, +-1.939545579570541995e-06, +-1.914541783560379315e-06, +-1.889537535979411673e-06, +-1.864532877570474613e-06, +-1.839527849076051106e-06, +-1.814522491234895691e-06, +-1.789516844777532503e-06, +-1.764510950437266910e-06, +-1.739504848940158121e-06, +-1.714498581006021022e-06, +-1.689492187353964072e-06, +-1.664485708697846668e-06, +-1.639479185747328403e-06, +-1.614472659208924052e-06, +-1.589466169781488245e-06, +-1.564459758162812163e-06, +-1.539453465046231595e-06, +-1.514447331116106530e-06, +-1.489441397058883203e-06, +-1.464435703553019691e-06, +-1.439430291270014426e-06, +-1.414425200879930329e-06, +-1.389420473046846459e-06, +-1.364416148429941153e-06, +-1.339412267683395465e-06, +-1.314408871457458099e-06, +-1.289406000393919712e-06, +-1.264403695132731627e-06, +-1.239401996307484588e-06, +-1.214400944546447217e-06, +-1.189400580473634761e-06, +-1.164400944704271322e-06, +-1.139402077851410270e-06, +-1.114404020521418710e-06, +-1.089406813315021869e-06, +-1.064410496827237456e-06, +-1.039415111648424923e-06, +-1.014420698359766965e-06, +-9.894272975398791352e-07, +-9.644349497602953641e-07, +-9.394436955865216745e-07, +-9.144535755790683941e-07, +-8.894646302889501877e-07, +-8.644769002642831737e-07, +-8.394904260457790258e-07, +-8.145052481677849181e-07, +-7.895214071582264562e-07, +-7.645389435396389397e-07, +-7.395578978246744878e-07, +-7.145783105215825544e-07, +-6.896002221352637424e-07, +-6.646236731571869359e-07, +-6.396487040764543030e-07, +-6.146753553752873514e-07, +-5.897036675256160324e-07, +-5.647336809956939630e-07, +-5.397654362455907275e-07, +-5.147989737282207054e-07, +-4.898343338904084268e-07, +-4.648715571683629816e-07, +-4.399106839931791806e-07, +-4.149517547918825294e-07, +-3.899948099773595420e-07, +-3.650398899594033682e-07, +-3.400870351402131898e-07, +-3.151362859098704291e-07, +-2.901876826585140540e-07, +-2.652412657607013849e-07, +-2.402970755875785814e-07, +-2.153551525012542265e-07, +-1.904155368569600280e-07, +-1.654782689974238197e-07, +-1.405433892650387250e-07, +-1.156109379862275641e-07, +-9.068095548361435994e-08, +-6.575348207150622497e-08, +-4.082855805138558387e-08, +-1.590622372296155819e-08, + 9.013480625901051950e-09, + 3.393051471813366883e-08, + 5.884483828197081265e-08, + 8.375641105434986346e-08, + 1.086651927854208913e-07, + 1.335711432263867486e-07, + 1.584742221451262889e-07, + 1.833743893140334084e-07, + 2.082716045145294160e-07, + 2.331658275415693540e-07, + 2.580570181925966624e-07, + 2.829451362776081800e-07, + 3.078301416181060470e-07, + 3.327119940416078993e-07, + 3.575906533850433381e-07, + 3.824660794992640100e-07, + 4.073382322379993561e-07, + 4.322070714679147574e-07, + 4.570725570675683083e-07, + 4.819346489219199780e-07, + 5.067933069268438083e-07, + 5.316484909880702339e-07, + 5.565001610201525436e-07, + 5.813482769509640428e-07, + 6.061927987151051726e-07, + 6.310336862572956647e-07, + 6.558708995368786398e-07, + 6.807043985167900143e-07, + 7.055341431736043118e-07, + 7.303600934964923886e-07, + 7.551822094817411306e-07, + 7.800004511372499279e-07, + 8.048147784814839536e-07, + 8.296251515424375015e-07, + 8.544315303621246372e-07, + 8.792338749899988107e-07, + 9.040321454874427663e-07, + 9.288263019267242572e-07, + 9.536163043910789483e-07, + 9.784021129736347907e-07, + 1.003183687781933378e-06, + 1.027960988931335898e-06, + 1.052733976549512731e-06, + 1.077502610775415251e-06, + 1.102266851759324534e-06, + 1.127026659661817975e-06, + 1.151781994658252638e-06, + 1.176532816932197357e-06, + 1.201279086679908887e-06, + 1.226020764109307201e-06, + 1.250757809438923266e-06, + 1.275490182902376882e-06, + 1.300217844741826790e-06, + 1.324940755212440459e-06, + 1.349658874581355209e-06, + 1.374372163127749564e-06, + 1.399080581141786375e-06, + 1.423784088929117760e-06, + 1.448482646804289468e-06, + 1.473176215095257267e-06, + 1.497864754142320521e-06, + 1.522548224298196521e-06, + 1.547226585926975882e-06, + 1.571899799408602922e-06, + 1.596567825132313065e-06, + 1.621230623501122323e-06, + 1.645888154930762793e-06, + 1.670540379848672989e-06, + 1.695187258698453661e-06, + 1.719828751934417774e-06, + 1.744464820020554372e-06, + 1.769095423440515524e-06, + 1.793720522686651902e-06, + 1.818340078264490412e-06, + 1.842954050697198056e-06, + 1.867562400513532464e-06, + 1.892165088263319307e-06, + 1.916762074505405791e-06, + 1.941353319813226088e-06, + 1.965938784772657707e-06, + 1.990518429987611278e-06, + 2.015092216067943178e-06, + 2.039660103644976140e-06, + 2.064222053359423105e-06, + 2.088778025865851931e-06, + 2.113327981837165775e-06, + 2.137871881953653497e-06, + 2.162409686912959663e-06, + 2.186941357429036766e-06, + 2.211466854226715739e-06, + 2.235986138045074189e-06, + 2.260499169641874846e-06, + 2.285005909781557599e-06, + 2.309506319250685992e-06, + 2.334000358845901990e-06, + 2.358487989378406783e-06, + 2.382969171678417454e-06, + 2.407443866584220764e-06, + 2.431912034952154173e-06, + 2.456373637655529257e-06, + 2.480828635579242884e-06, + 2.505276989623098010e-06, + 2.529718660706298456e-06, + 2.554153609756487455e-06, + 2.578581797719731630e-06, + 2.603003185559452465e-06, + 2.627417734251013758e-06, + 2.651825404786173630e-06, + 2.676226158172049878e-06, + 2.700619955430092514e-06, + 2.725006757600499358e-06, + 2.749386525735744278e-06, + 2.773759220905008441e-06, + 2.798124804193111363e-06, + 2.822483236700623982e-06, + 2.846834479542810295e-06, + 2.871178493854069195e-06, + 2.895515240781425026e-06, + 2.919844681488971115e-06, + 2.944166777156855878e-06, + 2.968481488980215551e-06, + 2.992788778173629592e-06, + 3.017088605964617156e-06, + 3.041380933598089524e-06, + 3.065665722335279458e-06, + 3.089942933453839027e-06, + 3.114212528246799457e-06, + 3.138474468026982896e-06, + 3.162728714120544216e-06, + 3.186975227871360757e-06, + 3.211213970640039186e-06, + 3.235444903803936245e-06, + 3.259667988756193560e-06, + 3.283883186910071903e-06, + 3.308090459692551868e-06, + 3.332289768548721914e-06, + 3.356481074940725513e-06, + 3.380664340346771807e-06, + 3.404839526265532562e-06, + 3.429006594209686928e-06, + 3.453165505710298480e-06, + 3.477316222315856805e-06, + 3.501458705592261824e-06, + 3.525592917121834043e-06, + 3.549718818507722082e-06, + 3.573836371367459300e-06, + 3.597945537337337023e-06, + 3.622046278071372858e-06, + 3.646138555241445375e-06, + 3.670222330536167971e-06, + 3.694297565665360786e-06, + 3.718364222353583601e-06, + 3.742422262344510769e-06, + 3.766471647399935099e-06, + 3.790512339298763278e-06, + 3.814544299841328962e-06, + 3.838567490844141595e-06, + 3.862581874138811948e-06, + 3.886587411581801046e-06, + 3.910584065043781006e-06, + 3.934571796413921453e-06, + 3.958550567604313571e-06, + 3.982520340538137897e-06, + 4.006481077164858402e-06, + 4.030432739448379275e-06, + 4.054375289371457964e-06, + 4.078308688938935758e-06, + 4.102232900172495505e-06, + 4.126147885109579100e-06, + 4.150053605813180034e-06, + 4.173950024361078450e-06, + 4.197837102850289766e-06, + 4.221714803401372678e-06, + 4.245583088147732832e-06, + 4.269441919245363700e-06, + 4.293291258871860637e-06, + 4.317131069221076101e-06, + 4.340961312506399365e-06, + 4.364781950965161934e-06, + 4.388592946846812968e-06, + 4.412394262428033735e-06, + 4.436185860001037548e-06, + 4.459967701877856593e-06, + 4.483739750394725334e-06, + 4.507501967901425675e-06, + 4.531254316770943143e-06, + 4.554996759398526679e-06, + 4.578729258196338777e-06, + 4.602451775596731809e-06, + 4.626164274056619560e-06, + 4.649866716045725497e-06, + 4.673559064061669267e-06, + 4.697241280618195486e-06, + 4.720913328250637097e-06, + 4.744575169514877755e-06, + 4.768226766987411125e-06, + 4.791868083264334599e-06, + 4.815499080965686956e-06, + 4.839119722729074438e-06, + 4.862729971214043983e-06, + 4.886329789101055772e-06, + 4.909919139091489156e-06, + 4.933497983906763442e-06, + 4.957066286292471409e-06, + 4.980624009012247637e-06, + 5.004171114851935912e-06, + 5.027707566618660872e-06, + 5.051233327139780236e-06, + 5.074748359267235155e-06, + 5.098252625871222886e-06, + 5.121746089844464983e-06, + 5.145228714101234906e-06, + 5.168700461577431716e-06, + 5.192161295229552618e-06, + 5.215611178038988271e-06, + 5.239050073005753893e-06, + 5.262477943152742215e-06, + 5.285894751524760405e-06, + 5.309300461188551242e-06, + 5.332695035231835123e-06, + 5.356078436767559630e-06, + 5.379450628927627246e-06, + 5.402811574867205906e-06, + 5.426161237763688001e-06, + 5.449499580815720514e-06, + 5.472826567247455440e-06, + 5.496142160302329174e-06, + 5.519446323247304448e-06, + 5.542739019371845427e-06, + 5.566020211988013421e-06, + 5.589289864429508040e-06, + 5.612547940055815970e-06, + 5.635794402246101317e-06, + 5.659029214403355222e-06, + 5.682252339953447190e-06, + 5.705463742344133207e-06, + 5.728663385049312932e-06, + 5.751851231563845855e-06, + 5.775027245402555184e-06, + 5.798191390109641772e-06, + 5.821343629248440946e-06, + 5.844483926405478948e-06, + 5.867612245193796693e-06, + 5.890728549247711714e-06, + 5.913832802221852550e-06, + 5.936924967800631958e-06, + 5.960005009687844504e-06, + 5.983072891610887326e-06, + 6.006128577325001230e-06, + 6.029172030601862848e-06, + 6.052203215244222217e-06, + 6.075222095074497478e-06, + 6.098228633939037994e-06, + 6.121222795711255833e-06, + 6.144204544286460554e-06, + 6.167173843580937644e-06, + 6.190130657541330250e-06, + 6.213074950134296059e-06, + 6.236006685350739925e-06, + 6.258925827209977879e-06, + 6.281832339748463125e-06, + 6.304726187034271994e-06, + 6.327607333155802830e-06, + 6.350475742227012352e-06, + 6.373331378385392934e-06, + 6.396174205797168310e-06, + 6.419004188646055135e-06, + 6.441821291147715068e-06, + 6.464625477538488381e-06, + 6.487416712079552895e-06, + 6.510194959061111707e-06, + 6.532960182792156800e-06, + 6.555712347609763535e-06, + 6.578451417878169924e-06, + 6.601177357983644461e-06, + 6.623890132338648437e-06, + 6.646589705380899973e-06, + 6.669276041572391461e-06, + 6.691949105403486660e-06, + 6.714608861386953352e-06, + 6.737255274061985051e-06, + 6.759888307993294682e-06, + 6.782507927771207750e-06, + 6.805114098010600164e-06, + 6.827706783355115613e-06, + 6.850285948471065235e-06, + 6.872851558051548431e-06, + 6.895403576815551623e-06, + 6.917941969507876258e-06, + 6.940466700898373934e-06, + 6.962977735785878327e-06, + 6.985475038992225142e-06, + 7.007958575366421205e-06, + 7.030428309783627181e-06, + 7.052884207144213973e-06, + 7.075326232377868297e-06, + 7.097754350437574510e-06, + 7.120168526303726107e-06, + 7.142568724983143164e-06, + 7.164954911509154502e-06, + 7.187327050940632064e-06, + 7.209685108366060068e-06, + 7.232029048897559186e-06, + 7.254358837674987030e-06, + 7.276674439864958135e-06, + 7.298975820660923582e-06, + 7.321262945282150324e-06, + 7.343535778977914840e-06, + 7.365794287021427375e-06, + 7.388038434713923953e-06, + 7.410268187383769369e-06, + 7.432483510385430584e-06, + 7.454684369103599236e-06, + 7.476870728947198037e-06, + 7.499042555353480407e-06, + 7.521199813787000486e-06, + 7.543342469739792704e-06, + 7.565470488730298590e-06, + 7.587583836307484200e-06, + 7.609682478044935449e-06, + 7.631766379544798509e-06, + 7.653835506436930234e-06, + 7.675889824377894429e-06, + 7.697929299055057250e-06, + 7.719953896181602418e-06, + 7.741963581495589318e-06, + 7.763958320769090790e-06, + 7.785938079798089719e-06, + 7.807902824406646439e-06, + 7.829852520449924333e-06, + 7.851787133809194036e-06, + 7.873706630391032137e-06, + 7.895610976136162510e-06, + 7.917500137009661230e-06, + 7.939374079004995219e-06, + 7.961232768147998224e-06, + 7.983076170486011852e-06, + 8.004904252101822649e-06, + 8.026716979102896317e-06, + 8.048514317625235094e-06, + 8.070296233836508394e-06, + 8.092062693931207775e-06, + 8.113813664129516999e-06, + 8.135549110686487092e-06, + 8.157268999882010864e-06, + 8.178973298025014023e-06, + 8.200661971457254970e-06, + 8.222334986542669124e-06, + 8.243992309681229765e-06, + 8.265633907298028089e-06, + 8.287259745848382512e-06, + 8.308869791815878629e-06, + 8.330464011717276932e-06, + 8.352042372091875763e-06, + 8.373604839515190899e-06, + 8.395151380588291407e-06, + 8.416681961941736655e-06, + 8.438196550239599714e-06, + 8.459695112169607898e-06, + 8.481177614452139947e-06, + 8.502644023839184178e-06, + 8.524094307109637448e-06, + 8.545528431073028716e-06, + 8.566946362568959996e-06, + 8.588348068465786686e-06, + 8.609733515664856114e-06, + 8.631102671094525796e-06, + 8.652455501713261882e-06, + 8.673791974513515176e-06, + 8.695112056512092070e-06, + 8.716415714758880671e-06, + 8.737702916336068150e-06, + 8.758973628353136466e-06, + 8.780227817950960313e-06, + 8.801465452300812704e-06, + 8.822686498604419180e-06, + 8.843890924093105696e-06, + 8.865078696031600104e-06, + 8.886249781712377360e-06, + 8.907404148459576208e-06, + 8.928541763627974266e-06, + 8.949662594602230781e-06, + 8.970766608800667783e-06, + 8.991853773669550919e-06, + 9.012924056687102696e-06, + 9.033977425362448770e-06, + 9.055013847235763636e-06, + 9.076033289877340589e-06, + 9.097035720891371181e-06, + 9.118021107910442895e-06, + 9.138989418599227131e-06, + 9.159940620653762611e-06, + 9.180874681800327134e-06, + 9.201791569799518580e-06, + 9.222691252440395136e-06, + 9.243573697544513949e-06, + 9.264438872964826595e-06, + 9.285286746585995869e-06, + 9.306117286323215023e-06, + 9.326930460126190513e-06, + 9.347726235974525668e-06, + 9.368504581876611081e-06, + 9.389265465878438832e-06, + 9.410008856053968333e-06, + 9.430734720509085362e-06, + 9.451443027384505693e-06, + 9.472133744850044068e-06, + 9.492806841108497002e-06, + 9.513462284394827927e-06, + 9.534100042975159235e-06, + 9.554720085150592387e-06, + 9.575322379252618692e-06, + 9.595906893642168939e-06, + 9.616473596718190446e-06, + 9.637022456908228061e-06, + 9.657553442672230722e-06, + 9.678066522505483887e-06, + 9.698561664932941193e-06, + 9.719038838513090309e-06, + 9.739498011837077106e-06, + 9.759939153528607403e-06, + 9.780362232243281197e-06, + 9.800767216673132761e-06, + 9.821154075536527232e-06, + 9.841522777591149018e-06, + 9.861873291623908552e-06, + 9.882205586454633660e-06, + 9.902519630939001993e-06, + 9.922815393963784085e-06, + 9.943092844446172507e-06, + 9.963351951341970977e-06, + 9.983592683636532809e-06, + 1.000381501034843533e-05, + 1.002401890053319668e-05, + 1.004420432327321982e-05, + 1.006437124769073518e-05, + 1.008451964293774135e-05, + 1.010464947819968284e-05, + 1.012476072269831478e-05, + 1.014485334568702219e-05, + 1.016492731645017118e-05, + 1.018498260431117439e-05, + 1.020501917862356662e-05, + 1.022503700877456243e-05, + 1.024503606418892531e-05, + 1.026501631431963007e-05, + 1.028497772865644830e-05, + 1.030492027672476255e-05, + 1.032484392808129729e-05, + 1.034474865231767475e-05, + 1.036463441905957465e-05, + 1.038450119796589566e-05, + 1.040434895873245522e-05, + 1.042417767108651772e-05, + 1.044398730478964051e-05, + 1.046377782964122980e-05, + 1.048354921546969925e-05, + 1.050330143214051513e-05, + 1.052303444955536118e-05, + 1.054274823764777802e-05, + 1.056244276638666652e-05, + 1.058211800577549833e-05, + 1.060177392585152819e-05, + 1.062141049668928198e-05, + 1.064102768839537795e-05, + 1.066062547111202330e-05, + 1.068020381501623149e-05, + 1.069976269031992053e-05, + 1.071930206726895244e-05, + 1.073882191614676358e-05, + 1.075832220726915887e-05, + 1.077780291098782352e-05, + 1.079726399768951160e-05, + 1.081670543779607825e-05, + 1.083612720176366309e-05, + 1.085552926008627319e-05, + 1.087491158329048237e-05, + 1.089427414193901917e-05, + 1.091361690663000290e-05, + 1.093293984799595255e-05, + 1.095224293670755271e-05, + 1.097152614346825461e-05, + 1.099078943901792681e-05, + 1.101003279413192686e-05, + 1.102925617962130288e-05, + 1.104845956633177205e-05, + 1.106764292514743232e-05, + 1.108680622698544810e-05, + 1.110594944279963154e-05, + 1.112507254357962426e-05, + 1.114417550035091265e-05, + 1.116325828417403160e-05, + 1.118232086614803569e-05, + 1.120136321740536784e-05, + 1.122038530911538467e-05, + 1.123938711248350437e-05, + 1.125836859875039864e-05, + 1.127732973919554348e-05, + 1.129627050513280609e-05, + 1.131519086790975373e-05, + 1.133409079891541763e-05, + 1.135297026957166679e-05, + 1.137182925133680108e-05, + 1.139066771570812118e-05, + 1.140948563421675993e-05, + 1.142828297843122977e-05, + 1.144705971995661969e-05, + 1.146581583043456815e-05, + 1.148455128154247198e-05, + 1.150326604499786718e-05, + 1.152196009254895236e-05, + 1.154063339598676056e-05, + 1.155928592713563528e-05, + 1.157791765785674220e-05, + 1.159652856005073400e-05, + 1.161511860565347620e-05, + 1.163368776663520523e-05, + 1.165223601500830590e-05, + 1.167076332281880882e-05, + 1.168926966214983452e-05, + 1.170775500512498490e-05, + 1.172621932389914449e-05, + 1.174466259067035416e-05, + 1.176308477767047679e-05, + 1.178148585716870231e-05, + 1.179986580147490027e-05, + 1.181822458293133073e-05, + 1.183656217392012701e-05, + 1.185487854686260278e-05, + 1.187317367421506600e-05, + 1.189144752847131435e-05, + 1.190970008216613848e-05, + 1.192793130786684328e-05, + 1.194614117818104900e-05, + 1.196432966575562739e-05, + 1.198249674327274947e-05, + 1.200064238345318215e-05, + 1.201876655905552931e-05, + 1.203686924287541017e-05, + 1.205495040774894397e-05, + 1.207301002654750009e-05, + 1.209104807218068128e-05, + 1.210906451759923236e-05, + 1.212705933578712896e-05, + 1.214503249976886538e-05, + 1.216298398260875832e-05, + 1.218091375740683369e-05, + 1.219882179730215716e-05, + 1.221670807547208199e-05, + 1.223457256513144261e-05, + 1.225241523953591405e-05, + 1.227023607197698722e-05, + 1.228803503578549267e-05, + 1.230581210433074165e-05, + 1.232356725102042953e-05, + 1.234130044930012256e-05, + 1.235901167265639013e-05, + 1.237670089461181579e-05, + 1.239436808872866998e-05, + 1.241201322860779362e-05, + 1.242963628788884037e-05, + 1.244723724024934321e-05, + 1.246481605940810766e-05, + 1.248237271912049038e-05, + 1.249990719318136553e-05, + 1.251741945542463345e-05, + 1.253490947972236179e-05, + 1.255237723998799236e-05, + 1.256982271017163505e-05, + 1.258724586426330854e-05, + 1.260464667629208820e-05, + 1.262202512032627718e-05, + 1.263938117047258821e-05, + 1.265671480087927249e-05, + 1.267402598573150002e-05, + 1.269131469925466469e-05, + 1.270858091571333566e-05, + 1.272582460941151995e-05, + 1.274304575469197802e-05, + 1.276024432593921553e-05, + 1.277742029757483816e-05, + 1.279457364406080084e-05, + 1.281170433989866749e-05, + 1.282881235962876562e-05, + 1.284589767783353384e-05, + 1.286296026913345269e-05, + 1.288000010818634841e-05, + 1.289701716969461134e-05, + 1.291401142839716771e-05, + 1.293098285907288986e-05, + 1.294793143654285436e-05, + 1.296485713566556990e-05, + 1.298175993134051272e-05, + 1.299863979850688495e-05, + 1.301549671214336380e-05, + 1.303233064727081045e-05, + 1.304914157894876158e-05, + 1.306592948227449768e-05, + 1.308269433239010726e-05, + 1.309943610447480770e-05, + 1.311615477374808599e-05, + 1.313285031547191461e-05, + 1.314952270494714826e-05, + 1.316617191751259207e-05, + 1.318279792855209641e-05, + 1.319940071348681666e-05, + 1.321598024777838452e-05, + 1.323253650693199291e-05, + 1.324906946648804419e-05, + 1.326557910203268731e-05, + 1.328206538918977941e-05, + 1.329852830362375220e-05, + 1.331496782104270872e-05, + 1.333138391719098302e-05, + 1.334777656785580624e-05, + 1.336414574886677984e-05, + 1.338049143609203172e-05, + 1.339681360544049812e-05, + 1.341311223286502717e-05, + 1.342938729435409829e-05, + 1.344563876594241518e-05, + 1.346186662370258627e-05, + 1.347807084374913794e-05, + 1.349425140223750149e-05, + 1.351040827536423000e-05, + 1.352654143936629524e-05, + 1.354265087052399473e-05, + 1.355873654515659796e-05, + 1.357479843962460462e-05, + 1.359083653033276337e-05, + 1.360685079372262988e-05, + 1.362284120627929049e-05, + 1.363880774453065926e-05, + 1.365475038504393732e-05, + 1.367066910442831829e-05, + 1.368656387933459190e-05, + 1.370243468645416818e-05, + 1.371828150252235044e-05, + 1.373410430431365956e-05, + 1.374990306864501894e-05, + 1.376567777237498024e-05, + 1.378142839240367935e-05, + 1.379715490567228075e-05, + 1.381285728916579134e-05, + 1.382853551990894388e-05, + 1.384418957496877871e-05, + 1.385981943145435581e-05, + 1.387542506651643285e-05, + 1.389100645734704347e-05, + 1.390656358118223310e-05, + 1.392209641529789671e-05, + 1.393760493701259939e-05, + 1.395308912368693600e-05, + 1.396854895272287388e-05, + 1.398398440156650911e-05, + 1.399939544770406338e-05, + 1.401478206866447259e-05, + 1.403014424201889383e-05, + 1.404548194538073757e-05, + 1.406079515640496129e-05, + 1.407608385279088830e-05, + 1.409134801227797099e-05, + 1.410658761264886210e-05, + 1.412180263172840170e-05, + 1.413699304738395432e-05, + 1.415215883752455848e-05, + 1.416729998010394386e-05, + 1.418241645311606576e-05, + 1.419750823459818655e-05, + 1.421257530263014727e-05, + 1.422761763533361713e-05, + 1.424263521087507678e-05, + 1.425762800746223534e-05, + 1.427259600334323930e-05, + 1.428753917681343011e-05, + 1.430245750620785816e-05, + 1.431735096990443535e-05, + 1.433221954632599179e-05, + 1.434706321393606256e-05, + 1.436188195124179820e-05, + 1.437667573679317690e-05, + 1.439144454918253528e-05, + 1.440618836704707732e-05, + 1.442090716906575890e-05, + 1.443560093395838835e-05, + 1.445026964049205535e-05, + 1.446491326747404807e-05, + 1.447953179375490250e-05, + 1.449412519823023710e-05, + 1.450869345983689204e-05, + 1.452323655755548386e-05, + 1.453775447040992093e-05, + 1.455224717746735606e-05, + 1.456671465783754610e-05, + 1.458115689067632653e-05, + 1.459557385517803721e-05, + 1.460996553058520404e-05, + 1.462433189618104776e-05, + 1.463867293129220803e-05, + 1.465298861529146746e-05, + 1.466727892759112783e-05, + 1.468154384764889869e-05, + 1.469578335496754492e-05, + 1.470999742909132420e-05, + 1.472418604960805032e-05, + 1.473834919615193922e-05, + 1.475248684839608736e-05, + 1.476659898606205842e-05, + 1.478068558891242942e-05, + 1.479474663675420594e-05, + 1.480878210943809708e-05, + 1.482279198685874416e-05, + 1.483677624895386180e-05, + 1.485073487570708230e-05, + 1.486466784714384239e-05, + 1.487857514333361778e-05, + 1.489245674439235745e-05, + 1.490631263047610555e-05, + 1.492014278178689674e-05, + 1.493394717857201925e-05, + 1.494772580112089102e-05, + 1.496147862976775671e-05, + 1.497520564489077451e-05, + 1.498890682691178751e-05, + 1.500258215629863270e-05, + 1.501623161356142415e-05, + 1.502985517925454189e-05, + 1.504345283397910693e-05, + 1.505702455837673859e-05, + 1.507057033313521275e-05, + 1.508409013898793660e-05, + 1.509758395671079100e-05, + 1.511105176712455629e-05, + 1.512449355109459727e-05, + 1.513790928953056161e-05, + 1.515129896338598851e-05, + 1.516466255366076177e-05, + 1.517800004139747427e-05, + 1.519131140768372512e-05, + 1.520459663365180968e-05, + 1.521785570047801992e-05, + 1.523108858938491439e-05, + 1.524429528163814364e-05, + 1.525747575854837461e-05, + 1.527063000147102978e-05, + 1.528375799180638201e-05, + 1.529685971099867703e-05, + 1.530993514053882195e-05, + 1.532298426196078699e-05, + 1.533600705684376041e-05, + 1.534900350681196889e-05, + 1.536197359353380342e-05, + 1.537491729872439764e-05, + 1.538783460414192803e-05, + 1.540072549159017193e-05, + 1.541358994291799932e-05, + 1.542642794001903404e-05, + 1.543923946483147415e-05, + 1.545202449934034850e-05, + 1.546478302557450802e-05, + 1.547751502560612769e-05, + 1.549022048155609705e-05, + 1.550289937558801980e-05, + 1.551555168991068380e-05, + 1.552817740677990752e-05, + 1.554077650849489112e-05, + 1.555334897740064904e-05, + 1.556589479588742729e-05, + 1.557841394639030027e-05, + 1.559090641139125103e-05, + 1.560337217341658281e-05, + 1.561581121503607871e-05, + 1.562822351886848375e-05, + 1.564060906757554849e-05, + 1.565296784386443802e-05, + 1.566529983049025609e-05, + 1.567760501024925533e-05, + 1.568988336598748374e-05, + 1.570213488059409650e-05, + 1.571435953700432402e-05, + 1.572655731819846224e-05, + 1.573872820720463735e-05, + 1.575087218709263264e-05, + 1.576298924098178619e-05, + 1.577507935203490243e-05, + 1.578714250346044428e-05, + 1.579917867851476248e-05, + 1.581118786049662720e-05, + 1.582317003275220517e-05, + 1.583512517867465992e-05, + 1.584705328170103804e-05, + 1.585895432531441389e-05, + 1.587082829304585136e-05, + 1.588267516846839664e-05, + 1.589449493520476257e-05, + 1.590628757692151118e-05, + 1.591805307733097478e-05, + 1.592979142019370557e-05, + 1.594150258931296315e-05, + 1.595318656853951211e-05, + 1.596484334177139164e-05, + 1.597647289295084591e-05, + 1.598807520606635013e-05, + 1.599965026515452147e-05, + 1.601119805429480309e-05, + 1.602271855761437015e-05, + 1.603421175928771309e-05, + 1.604567764353381526e-05, + 1.605711619461831462e-05, + 1.606852739685308694e-05, + 1.607991123459567663e-05, + 1.609126769225149902e-05, + 1.610259675427070630e-05, + 1.611389840514947509e-05, + 1.612517262943266943e-05, + 1.613641941170816232e-05, + 1.614763873661182302e-05, + 1.615883058882682929e-05, + 1.616999495308126517e-05, + 1.618113181415010648e-05, + 1.619224115685475657e-05, + 1.620332296606241958e-05, + 1.621437722668854663e-05, + 1.622540392369333591e-05, + 1.623640304208407047e-05, + 1.624737456691451514e-05, + 1.625831848328497076e-05, + 1.626923477634185738e-05, + 1.628012343127956086e-05, + 1.629098443333772912e-05, + 1.630181776780294923e-05, + 1.631262342000853061e-05, + 1.632340137533442372e-05, + 1.633415161920673890e-05, + 1.634487413709974880e-05, + 1.635556891453300167e-05, + 1.636623593707320516e-05, + 1.637687519033391464e-05, + 1.638748665997479114e-05, + 1.639807033170392230e-05, + 1.640862619127462390e-05, + 1.641915422448752022e-05, + 1.642965441719009001e-05, + 1.644012675527667326e-05, + 1.645057122468800707e-05, + 1.646098781141318052e-05, + 1.647137650148672774e-05, + 1.648173728099051167e-05, + 1.649207013605346654e-05, + 1.650237505285139802e-05, + 1.651265201760663759e-05, + 1.652290101658999752e-05, + 1.653312203611783334e-05, + 1.654331506255391071e-05, + 1.655348008230925295e-05, + 1.656361708184124997e-05, + 1.657372604765596218e-05, + 1.658380696630553199e-05, + 1.659385982438776365e-05, + 1.660388460855049056e-05, + 1.661388130548682851e-05, + 1.662384990193697815e-05, + 1.663379038469025789e-05, + 1.664370274057986920e-05, + 1.665358695648952046e-05, + 1.666344301934826678e-05, + 1.667327091613297321e-05, + 1.668307063386714582e-05, + 1.669284215962355751e-05, + 1.670258548051894556e-05, + 1.671230058372064902e-05, + 1.672198745644148582e-05, + 1.673164608594156544e-05, + 1.674127645953025063e-05, + 1.675087856456152245e-05, + 1.676045238843811377e-05, + 1.676999791861106886e-05, + 1.677951514257749023e-05, + 1.678900404788194136e-05, + 1.679846462211820172e-05, + 1.680789685292433705e-05, + 1.681730072798918085e-05, + 1.682667623504712685e-05, + 1.683602336188016525e-05, + 1.684534209631954627e-05, + 1.685463242624141630e-05, + 1.686389433957075486e-05, + 1.687312782428105273e-05, + 1.688233286839209275e-05, + 1.689150945997125084e-05, + 1.690065758713515620e-05, + 1.690977723804551710e-05, + 1.691886840091312233e-05, + 1.692793106399699408e-05, + 1.693696521560280574e-05, + 1.694597084408418634e-05, + 1.695494793784250366e-05, + 1.696389648532644752e-05, + 1.697281647503367304e-05, + 1.698170789550831710e-05, + 1.699057073534266193e-05, + 1.699940498317675566e-05, + 1.700821062769844957e-05, + 1.701698765764302198e-05, + 1.702573606179470298e-05, + 1.703445582898436027e-05, + 1.704314694809109159e-05, + 1.705180940804186225e-05, + 1.706044319781099684e-05, + 1.706904830642206981e-05, + 1.707762472294514083e-05, + 1.708617243649879436e-05, + 1.709469143624922828e-05, + 1.710318171141087052e-05, + 1.711164325124544736e-05, + 1.712007604506397896e-05, + 1.712848008222412317e-05, + 1.713685535213202874e-05, + 1.714520184424173229e-05, + 1.715351954805539208e-05, + 1.716180845312258665e-05, + 1.717006854904224946e-05, + 1.717829982546011764e-05, + 1.718650227207034131e-05, + 1.719467587861513126e-05, + 1.720282063488440654e-05, + 1.721093653071739370e-05, + 1.721902355600004163e-05, + 1.722708170066690873e-05, + 1.723511095470077332e-05, + 1.724311130813228798e-05, + 1.725108275104006772e-05, + 1.725902527355189611e-05, + 1.726693886584268901e-05, + 1.727482351813576514e-05, + 1.728267922070273087e-05, + 1.729050596386324306e-05, + 1.729830373798503277e-05, + 1.730607253348486071e-05, + 1.731381234082679947e-05, + 1.732152315052344307e-05, + 1.732920495313562236e-05, + 1.733685773927211028e-05, + 1.734448149959099398e-05, + 1.735207622479782838e-05, + 1.735964190564543959e-05, + 1.736717853293718095e-05, + 1.737468609752313150e-05, + 1.738216459030172232e-05, + 1.738961400222121037e-05, + 1.739703432427560932e-05, + 1.740442554750970398e-05, + 1.741178766301537421e-05, + 1.741912066193270620e-05, + 1.742642453545123254e-05, + 1.743369927480830254e-05, + 1.744094487128836727e-05, + 1.744816131622655754e-05, + 1.745534860100496022e-05, + 1.746250671705397019e-05, + 1.746963565585393696e-05, + 1.747673540893144445e-05, + 1.748380596786270935e-05, + 1.749084732427288991e-05, + 1.749785946983469680e-05, + 1.750484239626924016e-05, + 1.751179609534750004e-05, + 1.751872055888654525e-05, + 1.752561577875433094e-05, + 1.753248174686584292e-05, + 1.753931845518476125e-05, + 1.754612589572449697e-05, + 1.755290406054491918e-05, + 1.755965294175552296e-05, + 1.756637253151507020e-05, + 1.757306282202967873e-05, + 1.757972380555402844e-05, + 1.758635547439300458e-05, + 1.759295782089729656e-05, + 1.759953083746878505e-05, + 1.760607451655642205e-05, + 1.761258885065828747e-05, + 1.761907383232077259e-05, + 1.762552945413912216e-05, + 1.763195570875672629e-05, + 1.763835258886659426e-05, + 1.764472008720946060e-05, + 1.765105819657483197e-05, + 1.765736690980100417e-05, + 1.766364621977482488e-05, + 1.766989611943153450e-05, + 1.767611660175594517e-05, + 1.768230765978057392e-05, + 1.768846928658695730e-05, + 1.769460147530521426e-05, + 1.770070421911392079e-05, + 1.770677751124123147e-05, + 1.771282134496303282e-05, + 1.771883571360421733e-05, + 1.772482061053852758e-05, + 1.773077602918813269e-05, + 1.773670196302384183e-05, + 1.774259840556602575e-05, + 1.774846535038281090e-05, + 1.775430279109138391e-05, + 1.776011072135766627e-05, + 1.776588913489638891e-05, + 1.777163802547058398e-05, + 1.777735738689304509e-05, + 1.778304721302439274e-05, + 1.778870749777427369e-05, + 1.779433823510104249e-05, + 1.779993941901172080e-05, + 1.780551104356275976e-05, + 1.781105310285866435e-05, + 1.781656559105287776e-05, + 1.782204850234775422e-05, + 1.782750183099438286e-05, + 1.783292557129234038e-05, + 1.783831971759084636e-05, + 1.784368426428709295e-05, + 1.784901920582737650e-05, + 1.785432453670681972e-05, + 1.785960025146896850e-05, + 1.786484634470710312e-05, + 1.787006281106277118e-05, + 1.787524964522555043e-05, + 1.788040684193530191e-05, + 1.788553439597987614e-05, + 1.789063230219578398e-05, + 1.789570055546929779e-05, + 1.790073915073489628e-05, + 1.790574808297507815e-05, + 1.791072734722289300e-05, + 1.791567693855914957e-05, + 1.792059685211338130e-05, + 1.792548708306520501e-05, + 1.793034762664117329e-05, + 1.793517847811849811e-05, + 1.793997963282225553e-05, + 1.794475108612636157e-05, + 1.794949283345438192e-05, + 1.795420487027819025e-05, + 1.795888719211783947e-05, + 1.796353979454377078e-05, + 1.796816267317427257e-05, + 1.797275582367641557e-05, + 1.797731924176730305e-05, + 1.798185292321106892e-05, + 1.798635686382249289e-05, + 1.799083105946419850e-05, + 1.799527550604811674e-05, + 1.799969019953461536e-05, + 1.800407513593396927e-05, + 1.800843031130374832e-05, + 1.801275572175194793e-05, + 1.801705136343467159e-05, + 1.802131723255668994e-05, + 1.802555332537282646e-05, + 1.802975963818527074e-05, + 1.803393616734577393e-05, + 1.803808290925560138e-05, + 1.804219986036406550e-05, + 1.804628701716968117e-05, + 1.805034437621977608e-05, + 1.805437193411047717e-05, + 1.805836968748740184e-05, + 1.806233763304441109e-05, + 1.806627576752443284e-05, + 1.807018408771937724e-05, + 1.807406259047002485e-05, + 1.807791127266575898e-05, + 1.808173013124559229e-05, + 1.808551916319684543e-05, + 1.808927836555578400e-05, + 1.809300773540767275e-05, + 1.809670726988666720e-05, + 1.810037696617559336e-05, + 1.810401682150680834e-05, + 1.810762683316091286e-05, + 1.811120699846758812e-05, + 1.811475731480549417e-05, + 1.811827777960190055e-05, + 1.812176839033366891e-05, + 1.812522914452574188e-05, + 1.812866003975238988e-05, + 1.813206107363655726e-05, + 1.813543224385020446e-05, + 1.813877354811403356e-05, + 1.814208498419805416e-05, + 1.814536654992068208e-05, + 1.814861824314932553e-05, + 1.815184006180035122e-05, + 1.815503200383891496e-05, + 1.815819406727891083e-05, + 1.816132625018373014e-05, + 1.816442855066490955e-05, + 1.816750096688313055e-05, + 1.817054349704804673e-05, + 1.817355613941777208e-05, + 1.817653889229995512e-05, + 1.817949175405054554e-05, + 1.818241472307443124e-05, + 1.818530779782556362e-05, + 1.818817097680659511e-05, + 1.819100425856883511e-05, + 1.819380764171298179e-05, + 1.819658112488809553e-05, + 1.819932470679221215e-05, + 1.820203838617213623e-05, + 1.820472216182347842e-05, + 1.820737603259110261e-05, + 1.820999999736832976e-05, + 1.821259405509681253e-05, + 1.821515820476812770e-05, + 1.821769244542183479e-05, + 1.822019677614643824e-05, + 1.822267119607962125e-05, + 1.822511570440767315e-05, + 1.822753030036507605e-05, + 1.822991498323619892e-05, + 1.823226975235337313e-05, + 1.823459460709796307e-05, + 1.823688954690050510e-05, + 1.823915457123935569e-05, + 1.824138967964274459e-05, + 1.824359487168699607e-05, + 1.824577014699717609e-05, + 1.824791550524765469e-05, + 1.825003094616115394e-05, + 1.825211646950876827e-05, + 1.825417207511116725e-05, + 1.825619776283729794e-05, + 1.825819353260471015e-05, + 1.826015938438029168e-05, + 1.826209531817863521e-05, + 1.826400133406419656e-05, + 1.826587743214932617e-05, + 1.826772361259544481e-05, + 1.826953987561244724e-05, + 1.827132622145943746e-05, + 1.827308265044338360e-05, + 1.827480916292076115e-05, + 1.827650575929621471e-05, + 1.827817244002317117e-05, + 1.827980920560403288e-05, + 1.828141605658925944e-05, + 1.828299299357835029e-05, + 1.828454001721973964e-05, + 1.828605712820987491e-05, + 1.828754432729430435e-05, + 1.828900161526696210e-05, + 1.829042899297044942e-05, + 1.829182646129624479e-05, + 1.829319402118403638e-05, + 1.829453167362227778e-05, + 1.829583941964839120e-05, + 1.829711726034766980e-05, + 1.829836519685440929e-05, + 1.829958323035161315e-05, + 1.830077136207063012e-05, + 1.830192959329138795e-05, + 1.830305792534244429e-05, + 1.830415635960079009e-05, + 1.830522489749206991e-05, + 1.830626354049046665e-05, + 1.830727229011869483e-05, + 1.830825114794785150e-05, + 1.830920011559758901e-05, + 1.831011919473616586e-05, + 1.831100838708034164e-05, + 1.831186769439522121e-05, + 1.831269711849444780e-05, + 1.831349666124019624e-05, + 1.831426632454300694e-05, + 1.831500611036190109e-05, + 1.831571602070438404e-05, + 1.831639605762643176e-05, + 1.831704622323236548e-05, + 1.831766651967493974e-05, + 1.831825694915526794e-05, + 1.831881751392302890e-05, + 1.831934821627621287e-05, + 1.831984905856111126e-05, + 1.832032004317248611e-05, + 1.832076117255337019e-05, + 1.832117244919527024e-05, + 1.832155387563798746e-05, + 1.832190545446976993e-05, + 1.832222718832684507e-05, + 1.832251907989415824e-05, + 1.832278113190479338e-05, + 1.832301334714007805e-05, + 1.832321572842985106e-05, + 1.832338827865194413e-05, + 1.832353100073265279e-05, + 1.832364389764644844e-05, + 1.832372697241603591e-05, + 1.832378022811250256e-05, + 1.832380366785505061e-05, + 1.832379729481107167e-05, + 1.832376111219625518e-05, + 1.832369512327441897e-05, + 1.832359933135753981e-05, + 1.832347373980602439e-05, + 1.832331835202804531e-05, + 1.832313317148029659e-05, + 1.832291820166743126e-05, + 1.832267344614215283e-05, + 1.832239890850553379e-05, + 1.832209459240663273e-05, + 1.832176050154250791e-05, + 1.832139663965854252e-05, + 1.832100301054791948e-05, + 1.832057961805210264e-05, + 1.832012646606062323e-05, + 1.831964355851094101e-05, + 1.831913089938850864e-05, + 1.831858849272695121e-05, + 1.831801634260786640e-05, + 1.831741445316068551e-05, + 1.831678282856311733e-05, + 1.831612147304063654e-05, + 1.831543039086665312e-05, + 1.831470958636273932e-05, + 1.831395906389816892e-05, + 1.831317882789032376e-05, + 1.831236888280433464e-05, + 1.831152923315334556e-05, + 1.831065988349842228e-05, + 1.830976083844835576e-05, + 1.830883210266000101e-05, + 1.830787368083788404e-05, + 1.830688557773443907e-05, + 1.830586779814997799e-05, + 1.830482034693245999e-05, + 1.830374322897785071e-05, + 1.830263644922984099e-05, + 1.830150001267978255e-05, + 1.830033392436694544e-05, + 1.829913818937816230e-05, + 1.829791281284812992e-05, + 1.829665779995931775e-05, + 1.829537315594173072e-05, + 1.829405888607319724e-05, + 1.829271499567917608e-05, + 1.829134149013276315e-05, + 1.828993837485480667e-05, + 1.828850565531362261e-05, + 1.828704333702533007e-05, + 1.828555142555355993e-05, + 1.828402992650956328e-05, + 1.828247884555215716e-05, + 1.828089818838767380e-05, + 1.827928796077013675e-05, + 1.827764816850098648e-05, + 1.827597881742918200e-05, + 1.827427991345127541e-05, + 1.827255146251124927e-05, + 1.827079347060055385e-05, + 1.826900594375820882e-05, + 1.826718888807053553e-05, + 1.826534230967140438e-05, + 1.826346621474201460e-05, + 1.826156060951098569e-05, + 1.825962550025433034e-05, + 1.825766089329562046e-05, + 1.825566679500545861e-05, + 1.825364321180197267e-05, + 1.825159015015060239e-05, + 1.824950761656411974e-05, + 1.824739561760248995e-05, + 1.824525415987306469e-05, + 1.824308325003049392e-05, + 1.824088289477648539e-05, + 1.823865310086012308e-05, + 1.823639387507770121e-05, + 1.823410522427267678e-05, + 1.823178715533572042e-05, + 1.822943967520461472e-05, + 1.822706279086434912e-05, + 1.822465650934699792e-05, + 1.822222083773181856e-05, + 1.821975578314513977e-05, + 1.821726135276041921e-05, + 1.821473755379793513e-05, + 1.821218439352527427e-05, + 1.820960187925712176e-05, + 1.820699001835500709e-05, + 1.820434881822737856e-05, + 1.820167828633001669e-05, + 1.819897843016516343e-05, + 1.819624925728243701e-05, + 1.819349077527822878e-05, + 1.819070299179575072e-05, + 1.818788591452539114e-05, + 1.818503955120414888e-05, + 1.818216390961580948e-05, + 1.817925899759145005e-05, + 1.817632482300842616e-05, + 1.817336139379130365e-05, + 1.817036871791132322e-05, + 1.816734680338622432e-05, + 1.816429565828082447e-05, + 1.816121529070688039e-05, + 1.815810570882229176e-05, + 1.815496692083194146e-05, + 1.815179893498751267e-05, + 1.814860175958704836e-05, + 1.814537540297557811e-05, + 1.814211987354456246e-05, + 1.813883517973198439e-05, + 1.813552133002276605e-05, + 1.813217833294776250e-05, + 1.812880619708509664e-05, + 1.812540493105912578e-05, + 1.812197454354038751e-05, + 1.811851504324643648e-05, + 1.811502643894114992e-05, + 1.811150873943440570e-05, + 1.810796195358326143e-05, + 1.810438609029082959e-05, + 1.810078115850636564e-05, + 1.809714716722585415e-05, + 1.809348412549151752e-05, + 1.808979204239191763e-05, + 1.808607092706212863e-05, + 1.808232078868299156e-05, + 1.807854163648213078e-05, + 1.807473347973343221e-05, + 1.807089632775635551e-05, + 1.806703018991750282e-05, + 1.806313507562925673e-05, + 1.805921099434991915e-05, + 1.805525795558424331e-05, + 1.805127596888304406e-05, + 1.804726504384336055e-05, + 1.804322519010826648e-05, + 1.803915641736666002e-05, + 1.803505873535379914e-05, + 1.803093215385089847e-05, + 1.802677668268516648e-05, + 1.802259233172978184e-05, + 1.801837911090406957e-05, + 1.801413703017283358e-05, + 1.800986609954722403e-05, + 1.800556632908421219e-05, + 1.800123772888661752e-05, + 1.799688030910317544e-05, + 1.799249407992849328e-05, + 1.798807905160269456e-05, + 1.798363523441196779e-05, + 1.797916263868831247e-05, + 1.797466127480936281e-05, + 1.797013115319877739e-05, + 1.796557228432522956e-05, + 1.796098467870377614e-05, + 1.795636834689483429e-05, + 1.795172329950461853e-05, + 1.794704954718472065e-05, + 1.794234710063277374e-05, + 1.793761597059128672e-05, + 1.793285616784896905e-05, + 1.792806770323980241e-05, + 1.792325058764326434e-05, + 1.791840483198438918e-05, + 1.791353044723384939e-05, + 1.790862744440716955e-05, + 1.790369583456586134e-05, + 1.789873562881667138e-05, + 1.789374683831169305e-05, + 1.788872947424857655e-05, + 1.788368354786968188e-05, + 1.787860907046312235e-05, + 1.787350605336287981e-05, + 1.786837450794695473e-05, + 1.786321444563932788e-05, + 1.785802587790934377e-05, + 1.785280881627088388e-05, + 1.784756327228355930e-05, + 1.784228925755189759e-05, + 1.783698678372553590e-05, + 1.783165586249950557e-05, + 1.782629650561317163e-05, + 1.782090872485147967e-05, + 1.781549253204487787e-05, + 1.781004793906770768e-05, + 1.780457495783999947e-05, + 1.779907360032681192e-05, + 1.779354387853742558e-05, + 1.778798580452646777e-05, + 1.778239939039409553e-05, + 1.777678464828409485e-05, + 1.777114159038577129e-05, + 1.776547022893338752e-05, + 1.775977057620504865e-05, + 1.775404264452511117e-05, + 1.774828644626116073e-05, + 1.774250199382636014e-05, + 1.773668929967856845e-05, + 1.773084837631943293e-05, + 1.772497923629643207e-05, + 1.771908189220108674e-05, + 1.771315635666901431e-05, + 1.770720264238107049e-05, + 1.770122076206259379e-05, + 1.769521072848258554e-05, + 1.768917255445612570e-05, + 1.768310625284100839e-05, + 1.767701183654045579e-05, + 1.767088931850185440e-05, + 1.766473871171697862e-05, + 1.765856002922195012e-05, + 1.765235328409734284e-05, + 1.764611848946743763e-05, + 1.763985565850147586e-05, + 1.763356480441286318e-05, + 1.762724594045833267e-05, + 1.762089907994021152e-05, + 1.761452423620426952e-05, + 1.760812142263991223e-05, + 1.760169065268146505e-05, + 1.759523193980699755e-05, + 1.758874529753863517e-05, + 1.758223073944283031e-05, + 1.757568827912928821e-05, + 1.756911793025239346e-05, + 1.756251970651041030e-05, + 1.755589362164476779e-05, + 1.754923968944206895e-05, + 1.754255792373203416e-05, + 1.753584833838786708e-05, + 1.752911094732721012e-05, + 1.752234576451131094e-05, + 1.751555280394503599e-05, + 1.750873207967719921e-05, + 1.750188360580040952e-05, + 1.749500739645022039e-05, + 1.748810346580663761e-05, + 1.748117182809298082e-05, + 1.747421249757611395e-05, + 1.746722548856689242e-05, + 1.746021081541875030e-05, + 1.745316849252950283e-05, + 1.744609853434013339e-05, + 1.743900095533514256e-05, + 1.743187577004238204e-05, + 1.742472299303335964e-05, + 1.741754263892221938e-05, + 1.741033472236717136e-05, + 1.740309925806946171e-05, + 1.739583626077371482e-05, + 1.738854574526798753e-05, + 1.738122772638275271e-05, + 1.737388221899251878e-05, + 1.736650923801467096e-05, + 1.735910879840969490e-05, + 1.735168091518122073e-05, + 1.734422560337628053e-05, + 1.733674287808398699e-05, + 1.732923275443723423e-05, + 1.732169524761246741e-05, + 1.731413037282769055e-05, + 1.730653814534473988e-05, + 1.729891858046847078e-05, + 1.729127169354580904e-05, + 1.728359749996716035e-05, + 1.727589601516574963e-05, + 1.726816725461731604e-05, + 1.726041123384080083e-05, + 1.725262796839697853e-05, + 1.724481747388981892e-05, + 1.723697976596689029e-05, + 1.722911486031667263e-05, + 1.722122277267135957e-05, + 1.721330351880574376e-05, + 1.720535711453626473e-05, + 1.719738357572269964e-05, + 1.718938291826717387e-05, + 1.718135515811408318e-05, + 1.717330031125037821e-05, + 1.716521839370567301e-05, + 1.715710942155058475e-05, + 1.714897341090045060e-05, + 1.714081037791051988e-05, + 1.713262033877966753e-05, + 1.712440330974898458e-05, + 1.711615930710042635e-05, + 1.710788834716018357e-05, + 1.709959044629553827e-05, + 1.709126562091527708e-05, + 1.708291388747109054e-05, + 1.707453526245692935e-05, + 1.706612976240731711e-05, + 1.705769740390107383e-05, + 1.704923820355677249e-05, + 1.704075217803611021e-05, + 1.703223934404235986e-05, + 1.702369971832075633e-05, + 1.701513331765818144e-05, + 1.700654015888383475e-05, + 1.699792025886749211e-05, + 1.698927363452188747e-05, + 1.698060030280121199e-05, + 1.697190028070015853e-05, + 1.696317358525702184e-05, + 1.695442023355066274e-05, + 1.694564024270084362e-05, + 1.693683362986990210e-05, + 1.692800041226127046e-05, + 1.691914060712001097e-05, + 1.691025423173284295e-05, + 1.690134130342687229e-05, + 1.689240183957164458e-05, + 1.688343585757804742e-05, + 1.687444337489678572e-05, + 1.686542440902212222e-05, + 1.685637897748843515e-05, + 1.684730709787054007e-05, + 1.683820878778552289e-05, + 1.682908406489135749e-05, + 1.681993294688699381e-05, + 1.681075545151249000e-05, + 1.680155159654940882e-05, + 1.679232139981906598e-05, + 1.678306487918506109e-05, + 1.677378205255138026e-05, + 1.676447293786301280e-05, + 1.675513755310617818e-05, + 1.674577591630687932e-05, + 1.673638804553289141e-05, + 1.672697395889255237e-05, + 1.671753367453489156e-05, + 1.670806721064961627e-05, + 1.669857458546755553e-05, + 1.668905581725893897e-05, + 1.667951092433585657e-05, + 1.666993992505040199e-05, + 1.666034283779546879e-05, + 1.665071968100466907e-05, + 1.664107047315094100e-05, + 1.663139523274883915e-05, + 1.662169397835296922e-05, + 1.661196672855816755e-05, + 1.660221350199977565e-05, + 1.659243431735371124e-05, + 1.658262919333499790e-05, + 1.657279814869963187e-05, + 1.656294120224520547e-05, + 1.655305837280670586e-05, + 1.654314967926118722e-05, + 1.653321514052554818e-05, + 1.652325477555571863e-05, + 1.651326860334866213e-05, + 1.650325664294117312e-05, + 1.649321891340969735e-05, + 1.648315543387122973e-05, + 1.647306622348129838e-05, + 1.646295130143609240e-05, + 1.645281068697286505e-05, + 1.644264439936618985e-05, + 1.643245245793195861e-05, + 1.642223488202581606e-05, + 1.641199169104144213e-05, + 1.640172290441492935e-05, + 1.639142854161909762e-05, + 1.638110862216808172e-05, + 1.637076316561496300e-05, + 1.636039219155279936e-05, + 1.634999571961244334e-05, + 1.633957376946707879e-05, + 1.632912636082625775e-05, + 1.631865351344059304e-05, + 1.630815524710007775e-05, + 1.629763158163206248e-05, + 1.628708253690589036e-05, + 1.627650813282874995e-05, + 1.626590838934605470e-05, + 1.625528332644370964e-05, + 1.624463296414665784e-05, + 1.623395732251712537e-05, + 1.622325642165950023e-05, + 1.621253028171389487e-05, + 1.620177892286123856e-05, + 1.619100236532144781e-05, + 1.618020062935130539e-05, + 1.616937373524917322e-05, + 1.615852170335091306e-05, + 1.614764455403023551e-05, + 1.613674230770079383e-05, + 1.612581498481496765e-05, + 1.611486260586205704e-05, + 1.610388519137252451e-05, + 1.609288276191414945e-05, + 1.608185533809226191e-05, + 1.607080294055206009e-05, + 1.605972558997670620e-05, + 1.604862330708772965e-05, + 1.603749611264567422e-05, + 1.602634402744782793e-05, + 1.601516707233122501e-05, + 1.600396526817121946e-05, + 1.599273863587939793e-05, + 1.598148719640845531e-05, + 1.597021097074770201e-05, + 1.595890997992370773e-05, + 1.594758424500248003e-05, + 1.593623378708759067e-05, + 1.592485862732056189e-05, + 1.591345878688139154e-05, + 1.590203428698653380e-05, + 1.589058514889173836e-05, + 1.587911139389005150e-05, + 1.586761304331249704e-05, + 1.585609011852768337e-05, + 1.584454264094246748e-05, + 1.583297063199990180e-05, + 1.582137411318221230e-05, + 1.580975310600869793e-05, + 1.579810763203617099e-05, + 1.578643771285894367e-05, + 1.577474337010945478e-05, + 1.576302462545602683e-05, + 1.575128150060576968e-05, + 1.573951401730278818e-05, + 1.572772219732847699e-05, + 1.571590606250193725e-05, + 1.570406563467811994e-05, + 1.569220093575065836e-05, + 1.568031198764985892e-05, + 1.566839881234312809e-05, + 1.565646143183488427e-05, + 1.564449986816724903e-05, + 1.563251414341773970e-05, + 1.562050427970232218e-05, + 1.560847029917355078e-05, + 1.559641222402062584e-05, + 1.558433007646983759e-05, + 1.557222387878459663e-05, + 1.556009365326365516e-05, + 1.554793942224399027e-05, + 1.553576120809871012e-05, + 1.552355903323765019e-05, + 1.551133292010778328e-05, + 1.549908289119100705e-05, + 1.548680896900680711e-05, + 1.547451117611262967e-05, + 1.546218953509947026e-05, + 1.544984406859656621e-05, + 1.543747479926959763e-05, + 1.542508174981863415e-05, + 1.541266494298338654e-05, + 1.540022440153637965e-05, + 1.538776014828833948e-05, + 1.537527220608609938e-05, + 1.536276059781112278e-05, + 1.535022534638193927e-05, + 1.533766647475471383e-05, + 1.532508400591850000e-05, + 1.531247796290027472e-05, + 1.529984836876299007e-05, + 1.528719524660341510e-05, + 1.527451861955719090e-05, + 1.526181851079425321e-05, + 1.524909494351915603e-05, + 1.523634794097385831e-05, + 1.522357752643581987e-05, + 1.521078372321611416e-05, + 1.519796655466498822e-05, + 1.518512604416462225e-05, + 1.517226221513480300e-05, + 1.515937509103067067e-05, + 1.514646469534073181e-05, + 1.513353105159200754e-05, + 1.512057418334528511e-05, + 1.510759411419549566e-05, + 1.509459086777451960e-05, + 1.508156446774930791e-05, + 1.506851493781989665e-05, + 1.505544230172516853e-05, + 1.504234658323537358e-05, + 1.502922780615781780e-05, + 1.501608599433437464e-05, + 1.500292117164180512e-05, + 1.498973336199168333e-05, + 1.497652258933117737e-05, + 1.496328887764041339e-05, + 1.495003225093615680e-05, + 1.493675273326914751e-05, + 1.492345034872494016e-05, + 1.491012512142365851e-05, + 1.489677707552059512e-05, + 1.488340623520399046e-05, + 1.487001262469814317e-05, + 1.485659626826137721e-05, + 1.484315719018645182e-05, + 1.482969541480093420e-05, + 1.481621096646513447e-05, + 1.480270386957543619e-05, + 1.478917414856173153e-05, + 1.477562182788823784e-05, + 1.476204693205327569e-05, + 1.474844948558993806e-05, + 1.473482951306356109e-05, + 1.472118703907539511e-05, + 1.470752208825994835e-05, + 1.469383468528575606e-05, + 1.468012485485525511e-05, + 1.466639262170530581e-05, + 1.465263801060479818e-05, + 1.463886104635823488e-05, + 1.462506175380323925e-05, + 1.461124015781100255e-05, + 1.459739628328710050e-05, + 1.458353015516884037e-05, + 1.456964179842883205e-05, + 1.455573123807266045e-05, + 1.454179849913942078e-05, + 1.452784360670146785e-05, + 1.451386658586528511e-05, + 1.449986746176878435e-05, + 1.448584625958497838e-05, + 1.447180300451957040e-05, + 1.445773772181134196e-05, + 1.444365043673237822e-05, + 1.442954117458839667e-05, + 1.441540996071638892e-05, + 1.440125682048803936e-05, + 1.438708177930759402e-05, + 1.437288486261213334e-05, + 1.435866609587220570e-05, + 1.434442550458936597e-05, + 1.433016311429927057e-05, + 1.431587895057206710e-05, + 1.430157303900694623e-05, + 1.428724540523819460e-05, + 1.427289607493272316e-05, + 1.425852507378756165e-05, + 1.424413242753652138e-05, + 1.422971816194167747e-05, + 1.421528230279986215e-05, + 1.420082487594038294e-05, + 1.418634590722301679e-05, + 1.417184542254101541e-05, + 1.415732344782179136e-05, + 1.414278000902121579e-05, + 1.412821513212979842e-05, + 1.411362884317016339e-05, + 1.409902116819450306e-05, + 1.408439213329075797e-05, + 1.406974176457697220e-05, + 1.405507008820179653e-05, + 1.404037713034784606e-05, + 1.402566291722926924e-05, + 1.401092747508976411e-05, + 1.399617083020898864e-05, + 1.398139300889397014e-05, + 1.396659403748586625e-05, + 1.395177394235747978e-05, + 1.393693274991060407e-05, + 1.392207048658229275e-05, + 1.390718717883927951e-05, + 1.389228285317836091e-05, + 1.387735753612961851e-05, + 1.386241125425446394e-05, + 1.384744403414300631e-05, + 1.383245590242110458e-05, + 1.381744688574132469e-05, + 1.380241701078979370e-05, + 1.378736630428330803e-05, + 1.377229479296956389e-05, + 1.375720250362724362e-05, + 1.374208946306667812e-05, + 1.372695569812713461e-05, + 1.371180123568064019e-05, + 1.369662610262947794e-05, + 1.368143032590662065e-05, + 1.366621393247569015e-05, + 1.365097694933179251e-05, + 1.363571940349856013e-05, + 1.362044132203214642e-05, + 1.360514273201866774e-05, + 1.358982366057462350e-05, + 1.357448413484772460e-05, + 1.355912418201392370e-05, + 1.354374382928157078e-05, + 1.352834310388867892e-05, + 1.351292203310340030e-05, + 1.349748064422414316e-05, + 1.348201896458012907e-05, + 1.346653702152860116e-05, + 1.345103484245895423e-05, + 1.343551245478985485e-05, + 1.341996988596991050e-05, + 1.340440716347763911e-05, + 1.338882431482215340e-05, + 1.337322136754017772e-05, + 1.335759834920040848e-05, + 1.334195528740051235e-05, + 1.332629220976779027e-05, + 1.331060914395981275e-05, + 1.329490611766178899e-05, + 1.327918315859038192e-05, + 1.326344029449101800e-05, + 1.324767755313867159e-05, + 1.323189496233759561e-05, + 1.321609254992204147e-05, + 1.320027034375354862e-05, + 1.318442837172490353e-05, + 1.316856666175738180e-05, + 1.315268524180140880e-05, + 1.313678413983707640e-05, + 1.312086338387156288e-05, + 1.310492300194242282e-05, + 1.308896302211814105e-05, + 1.307298347249196457e-05, + 1.305698438118873469e-05, + 1.304096577636203427e-05, + 1.302492768619225982e-05, + 1.300887013888971321e-05, + 1.299279316269553508e-05, + 1.297669678587523690e-05, + 1.296058103672567883e-05, + 1.294444594357212883e-05, + 1.292829153476566733e-05, + 1.291211783869048868e-05, + 1.289592488375436692e-05, + 1.287971269839608765e-05, + 1.286348131108276637e-05, + 1.284723075030757498e-05, + 1.283096104459312994e-05, + 1.281467222249244603e-05, + 1.279836431258222617e-05, + 1.278203734347003575e-05, + 1.276569134379137532e-05, + 1.274932634220688876e-05, + 1.273294236740989337e-05, + 1.271653944811665261e-05, + 1.270011761307399596e-05, + 1.268367689105569361e-05, + 1.266721731086393373e-05, + 1.265073890132563953e-05, + 1.263424169130025012e-05, + 1.261772570966977129e-05, + 1.260119098534647836e-05, + 1.258463754727002448e-05, + 1.256806542440456743e-05, + 1.255147464574589494e-05, + 1.253486524031485840e-05, + 1.251823723715806750e-05, + 1.250159066535147822e-05, + 1.248492555399813636e-05, + 1.246824193222521629e-05, + 1.245153982919195766e-05, + 1.243481927407952980e-05, + 1.241808029609882614e-05, + 1.240132292448765032e-05, + 1.238454718850765505e-05, + 1.236775311745165031e-05, + 1.235094074063689653e-05, + 1.233411008740589401e-05, + 1.231726118712991847e-05, + 1.230039406920600221e-05, + 1.228350876305773369e-05, + 1.226660529813509663e-05, + 1.224968370391526449e-05, + 1.223274400989950884e-05, + 1.221578624561758186e-05, + 1.219881044062475346e-05, + 1.218181662450247026e-05, + 1.216480482685907724e-05, + 1.214777507732677016e-05, + 1.213072740556601532e-05, + 1.211366184126249521e-05, + 1.209657841412784542e-05, + 1.207947715389953772e-05, + 1.206235809034168984e-05, + 1.204522125324195010e-05, + 1.202806667241583251e-05, + 1.201089437770389613e-05, + 1.199370439897230076e-05, + 1.197649676611349642e-05, + 1.195927150904324345e-05, + 1.194202865770493243e-05, + 1.192476824206675334e-05, + 1.190749029212215810e-05, + 1.189019483788996217e-05, + 1.187288190941500018e-05, + 1.185555153676500882e-05, + 1.183820375003524658e-05, + 1.182083857934522760e-05, + 1.180345605483952123e-05, + 1.178605620668779443e-05, + 1.176863906508529453e-05, + 1.175120466025005747e-05, + 1.173375302242709884e-05, + 1.171628418188555946e-05, + 1.169879816891926775e-05, + 1.168129501384752241e-05, + 1.166377474701201433e-05, + 1.164623739878051281e-05, + 1.162868299954755682e-05, + 1.161111157972776336e-05, + 1.159352316976306797e-05, + 1.157591780011985662e-05, + 1.155829550128651274e-05, + 1.154065630377804538e-05, + 1.152300023813286205e-05, + 1.150532733491354455e-05, + 1.148763762470690832e-05, + 1.146993113812445641e-05, + 1.145220790579866610e-05, + 1.143446795839141348e-05, + 1.141671132658307048e-05, + 1.139893804108088706e-05, + 1.138114813261597578e-05, + 1.136334163194089440e-05, + 1.134551856983346259e-05, + 1.132767897709735654e-05, + 1.130982288455530052e-05, + 1.129195032305663088e-05, + 1.127406132347414000e-05, + 1.125615591670102191e-05, + 1.123823413365918674e-05, + 1.122029600528854408e-05, + 1.120234156255531573e-05, + 1.118437083644816481e-05, + 1.116638385797974070e-05, + 1.114838065818267599e-05, + 1.113036126811811100e-05, + 1.111232571886474844e-05, + 1.109427404152737794e-05, + 1.107620626723371662e-05, + 1.105812242713110057e-05, + 1.104002255239448932e-05, + 1.102190667421914410e-05, + 1.100377482382150871e-05, + 1.098562703244297210e-05, + 1.096746333134672753e-05, + 1.094928375181853830e-05, + 1.093108832516743061e-05, + 1.091287708272241050e-05, + 1.089465005583733934e-05, + 1.087640727588831139e-05, + 1.085814877427053000e-05, + 1.083987458240612063e-05, + 1.082158473173714107e-05, + 1.080327925372601692e-05, + 1.078495817985966993e-05, + 1.076662154164616382e-05, + 1.074826937061560208e-05, + 1.072990169831984682e-05, + 1.071151855633350973e-05, + 1.069311997625052671e-05, + 1.067470598968896905e-05, + 1.065627662828779582e-05, + 1.063783192370758072e-05, + 1.061937190763121676e-05, + 1.060089661176078223e-05, + 1.058240606782215875e-05, + 1.056390030756180915e-05, + 1.054537936274762618e-05, + 1.052684326516876823e-05, + 1.050829204663637415e-05, + 1.048972573898045980e-05, + 1.047114437405449538e-05, + 1.045254798373224259e-05, + 1.043393659990852886e-05, + 1.041531025449996392e-05, + 1.039666897944161094e-05, + 1.037801280669180957e-05, + 1.035934176822890638e-05, + 1.034065589605204599e-05, + 1.032195522218100502e-05, + 1.030323977865707476e-05, + 1.028450959753963573e-05, + 1.026576471091027087e-05, + 1.024700515087352448e-05, + 1.022823094954938567e-05, + 1.020944213908154693e-05, + 1.019063875163398379e-05, + 1.017182081938845946e-05, + 1.015298837454948509e-05, + 1.013414144934084351e-05, + 1.011528007600642103e-05, + 1.009640428681093420e-05, + 1.007751411403669244e-05, + 1.005860958998756046e-05, + 1.003969074698971891e-05, + 1.002075761738424945e-05, + 1.000181023353530180e-05, + 9.982848627826771762e-06, + 9.963872832659707515e-06, + 9.944882880457222465e-06, + 9.925878803661190099e-06, + 9.906860634732947028e-06, + 9.887828406153282822e-06, + 9.868782150423185398e-06, + 9.849721900059687171e-06, + 9.830647687604907977e-06, + 9.811559545614350776e-06, + 9.792457506665978449e-06, + 9.773341603356939177e-06, + 9.754211868300840683e-06, + 9.735068334132009117e-06, + 9.715911033506288653e-06, + 9.696739999093260647e-06, + 9.677555263584788502e-06, + 9.658356859691463519e-06, + 9.639144820139277755e-06, + 9.619919177678699129e-06, + 9.600679965073029802e-06, + 9.581427215107401671e-06, + 9.562160960585510205e-06, + 9.542881234326917495e-06, + 9.523588069171302664e-06, + 9.504281497979176764e-06, + 9.484961553624311994e-06, + 9.465628269002029072e-06, + 9.446281677025814184e-06, + 9.426921810623973205e-06, + 9.407548702747820811e-06, + 9.388162386364248618e-06, + 9.368762894456280827e-06, + 9.349350260027502519e-06, + 9.329924516098366590e-06, + 9.310485695707191553e-06, + 9.291033831910795122e-06, + 9.271568957781184004e-06, + 9.252091106410490412e-06, + 9.232600310908393689e-06, + 9.213096604398679669e-06, + 9.193580020027680507e-06, + 9.174050590956568375e-06, + 9.154508350362122875e-06, + 9.134953331441030577e-06, + 9.115385567406236001e-06, + 9.095805091487893683e-06, + 9.076211936934145750e-06, + 9.056606137007621981e-06, + 9.036987724990454241e-06, + 9.017356734180874799e-06, + 8.997713197894105709e-06, + 8.978057149462026774e-06, + 8.958388622234276694e-06, + 8.938707649574571853e-06, + 8.919014264865915575e-06, + 8.899308501506977907e-06, + 8.879590392913030742e-06, + 8.859859972515820762e-06, + 8.840117273764389370e-06, + 8.820362330121613403e-06, + 8.800595175069199241e-06, + 8.780815842104306535e-06, + 8.761024364740274957e-06, + 8.741220776507500036e-06, + 8.721405110949840040e-06, + 8.701577401629803212e-06, + 8.681737682125052907e-06, + 8.661885986029107241e-06, + 8.642022346951398388e-06, + 8.622146798518029822e-06, + 8.602259374368279770e-06, + 8.582360108159693568e-06, + 8.562449033564602363e-06, + 8.542526184270980304e-06, + 8.522591593982248033e-06, + 8.502645296418209504e-06, + 8.482687325311501220e-06, + 8.462717714412681206e-06, + 8.442736497486800224e-06, + 8.422743708314094638e-06, + 8.402739380690896136e-06, + 8.382723548426062327e-06, + 8.362696245345289836e-06, + 8.342657505291830892e-06, + 8.322607362118748060e-06, + 8.302545849697499767e-06, + 8.282473001914333636e-06, + 8.262388852667740301e-06, + 8.242293435873522059e-06, + 8.222186785461326806e-06, + 8.202068935375376486e-06, + 8.181939919575376808e-06, + 8.161799772032903797e-06, + 8.141648526735691482e-06, + 8.121486217688597507e-06, + 8.101312878905481786e-06, + 8.081128544418019025e-06, + 8.060933248272100535e-06, + 8.040727024525157603e-06, + 8.020509907250484747e-06, + 8.000281930538093530e-06, + 7.980043128486628473e-06, + 7.959793535212318503e-06, + 7.939533184845192404e-06, + 7.919262111525611072e-06, + 7.898980349413840674e-06, + 7.878687932677723243e-06, + 7.858384895502268472e-06, + 7.838071272086101265e-06, + 7.817747096637778833e-06, + 7.797412403384745526e-06, + 7.777067226565177605e-06, + 7.756711600428830268e-06, + 7.736345559241445614e-06, + 7.715969137281998092e-06, + 7.695582368839136959e-06, + 7.675185288220825520e-06, + 7.654777929741971053e-06, + 7.634360327733959018e-06, + 7.613932516540333184e-06, + 7.593494530517482575e-06, + 7.573046404034692291e-06, + 7.552588171474932099e-06, + 7.532119867231195550e-06, + 7.511641525711865092e-06, + 7.491153181337980387e-06, + 7.470654868539472399e-06, + 7.450146621764238511e-06, + 7.429628475469890724e-06, + 7.409100464124681470e-06, + 7.388562622211836180e-06, + 7.368014984225968643e-06, + 7.347457584673990721e-06, + 7.326890458075784043e-06, + 7.306313638960671268e-06, + 7.285727161872715123e-06, + 7.265131061367086322e-06, + 7.244525372010871643e-06, + 7.223910128382996839e-06, + 7.203285365075206664e-06, + 7.182651116688193925e-06, + 7.162007417837117905e-06, + 7.141354303147868948e-06, + 7.120691807257897705e-06, + 7.100019964816226142e-06, + 7.079338810484209871e-06, + 7.058648378931919630e-06, + 7.037948704843514853e-06, + 7.017239822913534514e-06, + 6.996521767847756872e-06, + 6.975794574364034637e-06, + 6.955058277188629016e-06, + 6.934312911061630724e-06, + 6.913558510733150874e-06, + 6.892795110964327254e-06, + 6.872022746527165934e-06, + 6.851241452205396765e-06, + 6.830451262790830293e-06, + 6.809652213088702535e-06, + 6.788844337914001401e-06, + 6.768027672092308639e-06, + 6.747202250459824405e-06, + 6.726368107864069447e-06, + 6.705525279160266587e-06, + 6.684673799216771890e-06, + 6.663813702911342642e-06, + 6.642945025131968285e-06, + 6.622067800777785216e-06, + 6.601182064755299865e-06, + 6.580287851982925404e-06, + 6.559385197391904167e-06, + 6.538474135917858495e-06, + 6.517554702510065746e-06, + 6.496626932127594981e-06, + 6.475690859736585442e-06, + 6.454746520315648933e-06, + 6.433793948852186921e-06, + 6.412833180343190975e-06, + 6.391864249796124537e-06, + 6.370887192225234087e-06, + 6.349902042655975738e-06, + 6.328908836126047771e-06, + 6.307907607676877108e-06, + 6.286898392362885847e-06, + 6.265881225247692325e-06, + 6.244856141401303201e-06, + 6.223823175904661176e-06, + 6.202782363850527602e-06, + 6.181733740335081609e-06, + 6.160677340467143447e-06, + 6.139613199364369613e-06, + 6.118541352149551319e-06, + 6.097461833960699262e-06, + 6.076374679937992547e-06, + 6.055279925233986276e-06, + 6.034177605009788041e-06, + 6.013067754431326748e-06, + 5.991950408678530216e-06, + 5.970825602936950562e-06, + 5.949693372398639186e-06, + 5.928553752266693647e-06, + 5.907406777752418405e-06, + 5.886252484071591947e-06, + 5.865090906454610857e-06, + 5.843922080133376894e-06, + 5.822746040351528307e-06, + 5.801562822359688826e-06, + 5.780372461416393467e-06, + 5.759174992787922518e-06, + 5.737970451749301032e-06, + 5.716758873580427045e-06, + 5.695540293571667072e-06, + 5.674314747020911822e-06, + 5.653082269229893298e-06, + 5.631842895513390352e-06, + 5.610596661190796472e-06, + 5.589343601586974437e-06, + 5.568083752036868412e-06, + 5.546817147881738039e-06, + 5.525543824469989379e-06, + 5.504263817158138833e-06, + 5.482977161306894765e-06, + 5.461683892286764868e-06, + 5.440384045475236383e-06, + 5.419077656252915327e-06, + 5.397764760012827762e-06, + 5.376445392151990968e-06, + 5.355119588072214740e-06, + 5.333787383184822743e-06, + 5.312448812906717204e-06, + 5.291103912661384337e-06, + 5.269752717878760510e-06, + 5.248395263996148738e-06, + 5.227031586454371459e-06, + 5.205661720703373652e-06, + 5.184285702198400186e-06, + 5.162903566400885196e-06, + 5.141515348779294039e-06, + 5.120121084805376019e-06, + 5.098720809959667559e-06, + 5.077314559727737305e-06, + 5.055902369601014524e-06, + 5.034484275076773859e-06, + 5.013060311659018779e-06, + 4.991630514854597940e-06, + 4.970194920178873524e-06, + 4.948753563151864703e-06, + 4.927306479299087890e-06, + 4.905853704152520666e-06, + 4.884395273246680017e-06, + 4.862931222124347430e-06, + 4.841461586332608165e-06, + 4.819986401423821112e-06, + 4.798505702955494271e-06, + 4.777019526491244445e-06, + 4.755527907596901734e-06, + 4.734030881845186005e-06, + 4.712528484816650483e-06, + 4.691020752091027622e-06, + 4.669507719256677750e-06, + 4.647989421906730839e-06, + 4.626465895636201510e-06, + 4.604937176047615871e-06, + 4.583403298747128720e-06, + 4.561864299345438338e-06, + 4.540320213458721618e-06, + 4.518771076704670792e-06, + 4.497216924707271549e-06, + 4.475657793097673782e-06, + 4.454093717505551005e-06, + 4.432524733568611688e-06, + 4.410950876928630056e-06, + 4.389372183228689003e-06, + 4.367788688118661239e-06, + 4.346200427251456932e-06, + 4.324607436283906320e-06, + 4.303009750876629267e-06, + 4.281407406695027136e-06, + 4.259800439404377624e-06, + 4.238188884680304090e-06, + 4.216572778195387349e-06, + 4.194952155629537593e-06, + 4.173327052666159870e-06, + 4.151697504988273830e-06, + 4.130063548288030984e-06, + 4.108425218257959775e-06, + 4.086782550591993871e-06, + 4.065135580990120686e-06, + 4.043484345155431160e-06, + 4.021828878790314895e-06, + 4.000169217606840533e-06, + 3.978505397313362479e-06, + 3.956837453624964816e-06, + 3.935165422258602721e-06, + 3.913489338934039285e-06, + 3.891809239373758270e-06, + 3.870125159303870432e-06, + 3.848437134450210395e-06, + 3.826745200544050734e-06, + 3.805049393319167008e-06, + 3.783349748507929123e-06, + 3.761646301850813089e-06, + 3.739939089087786701e-06, + 3.718228145959107434e-06, + 3.696513508210154775e-06, + 3.674795211587452973e-06, + 3.653073291839632004e-06, + 3.631347784718314410e-06, + 3.609618725974190148e-06, + 3.587886151362764560e-06, + 3.566150096641359026e-06, + 3.544410597565280680e-06, + 3.522667689897313417e-06, + 3.500921409399035382e-06, + 3.479171791831723598e-06, + 3.457418872961097352e-06, + 3.435662688553402363e-06, + 3.413903274376356493e-06, + 3.392140666199026081e-06, + 3.370374899792786053e-06, + 3.348606010927375714e-06, + 3.326834035376642906e-06, + 3.305059008914612496e-06, + 3.283280967316393980e-06, + 3.261499946359119568e-06, + 3.239715981817980069e-06, + 3.217929109471985989e-06, + 3.196139365100031789e-06, + 3.174346784481804331e-06, + 3.152551403397754923e-06, + 3.130753257629962446e-06, + 3.108952382958244629e-06, + 3.087148815165875516e-06, + 3.065342590035666251e-06, + 3.043533743350883255e-06, + 3.021722310896150744e-06, + 2.999908328453518801e-06, + 2.978091831808216000e-06, + 2.956272856744711551e-06, + 2.934451439047646186e-06, + 2.912627614501746613e-06, + 2.890801418892751743e-06, + 2.868972888003483729e-06, + 2.847142057619585768e-06, + 2.825308963525594408e-06, + 2.803473641505855192e-06, + 2.781636127344476916e-06, + 2.759796456826208733e-06, + 2.737954665732553120e-06, + 2.716110789847443960e-06, + 2.694264864953409488e-06, + 2.672416926832411270e-06, + 2.650567011266784416e-06, + 2.628715154035296333e-06, + 2.606861390917948979e-06, + 2.585005757696858080e-06, + 2.563148290147494816e-06, + 2.541289024048313191e-06, + 2.519427995176835473e-06, + 2.497565239305673258e-06, + 2.475700792213165352e-06, + 2.453834689669751558e-06, + 2.431966967448556774e-06, + 2.410097661320496410e-06, + 2.388226807056158499e-06, + 2.366354440420886247e-06, + 2.344480597185407024e-06, + 2.322605313112176076e-06, + 2.300728623966007635e-06, + 2.278850565510120126e-06, + 2.256971173502208044e-06, + 2.235090483704064681e-06, + 2.213208531872833540e-06, + 2.191325353761876966e-06, + 2.169440985125587301e-06, + 2.147555461716432001e-06, + 2.125668819280997998e-06, + 2.103781093570601631e-06, + 2.081892320327656499e-06, + 2.060002535296291868e-06, + 2.038111774218408882e-06, + 2.016220072829734239e-06, + 1.994327466869475943e-06, + 1.972433992071538725e-06, + 1.950539684165408766e-06, + 1.928644578880973320e-06, + 1.906748711945548259e-06, + 1.884852119079922856e-06, + 1.862954836008029087e-06, + 1.841056898448128254e-06, + 1.819158342113729803e-06, + 1.797259202718404170e-06, + 1.775359515971819718e-06, + 1.753459317580652034e-06, + 1.731558643249531118e-06, + 1.709657528677054191e-06, + 1.687756009561589351e-06, + 1.665854121598285124e-06, + 1.643951900475148489e-06, + 1.622049381882665692e-06, + 1.600146601505040745e-06, + 1.578243595021074650e-06, + 1.556340398108994545e-06, + 1.534437046442487470e-06, + 1.512533575691622998e-06, + 1.490630021523784764e-06, + 1.468726419599682204e-06, + 1.446822805579161205e-06, + 1.424919215117255236e-06, + 1.403015683865078544e-06, + 1.381112247469795027e-06, + 1.359208941575511218e-06, + 1.337305801819333557e-06, + 1.315402863837163580e-06, + 1.293500163259723427e-06, + 1.271597735713490124e-06, + 1.249695616820630989e-06, + 1.227793842199917588e-06, + 1.205892447462776017e-06, + 1.183991468219072983e-06, + 1.162090940073162491e-06, + 1.140190898624802547e-06, + 1.118291379470067409e-06, + 1.096392418197399992e-06, + 1.074494050393395832e-06, + 1.052596311638847020e-06, + 1.030699237509662288e-06, + 1.008802863576805816e-06, + 9.869072254072285394e-07, + 9.650123585598906979e-07, + 9.431182985915576566e-07, + 9.212250810528631093e-07, + 8.993327414891980393e-07, + 8.774413154406792733e-07, + 8.555508384430457484e-07, + 8.336613460237154674e-07, + 8.117728737075705226e-07, + 7.898854570130075925e-07, + 7.679991314528433143e-07, + 7.461139325352466555e-07, + 7.242298957597692939e-07, + 7.023470566221708466e-07, + 6.804654506153313363e-07, + 6.585851132204293433e-07, + 6.367060799166175568e-07, + 6.148283861770832247e-07, + 5.929520674650807571e-07, + 5.710771592445992593e-07, + 5.492036969666613506e-07, + 5.273317160799882615e-07, + 5.054612520270414374e-07, + 4.835923402410410882e-07, + 4.617250161507860710e-07, + 4.398593151815667262e-07, + 4.179952727463413357e-07, + 3.961329242554209389e-07, + 3.742723051125147473e-07, + 3.524134507107802184e-07, + 3.305563964425016245e-07, + 3.087011776902719107e-07, + 2.868478298279031487e-07, + 2.649963882252475845e-07, + 2.431468882452133821e-07, + 2.212993652398136380e-07, + 1.994538545608237770e-07, + 1.776103915460870669e-07, + 1.557690115301740255e-07, + 1.339297498404269091e-07, + 1.120926417930104213e-07, + 9.025772270259189690e-08, + 6.842502787351962543e-08, + 4.659459260074106168e-08, + 2.476645217461465759e-08, + 2.940641877931603436e-09, +-1.888280301803517554e-08, +-4.070384724287797510e-08, +-6.252245554074088871e-08, +-8.433859265966781738e-08, +-1.061522233565257610e-07, +-1.279633123960894535e-07, +-1.497718245510961753e-07, +-1.715777246013304814e-07, +-1.933809773375721952e-07, +-2.151815475558156600e-07, +-2.369794000612158015e-07, +-2.587744996671756076e-07, +-2.805668111953988042e-07, +-3.023562994749757737e-07, +-3.241429293463305170e-07, +-3.459266656554388595e-07, +-3.677074732577786422e-07, +-3.894853170174118558e-07, +-4.112601618060670918e-07, +-4.330319725070883047e-07, +-4.548007140096555589e-07, +-4.765663512127302964e-07, +-4.983288490241392709e-07, +-5.200881723606300808e-07, +-5.418442861469574334e-07, +-5.635971553198271941e-07, +-5.853467448221178750e-07, +-6.070930196068250556e-07, +-6.288359446361542108e-07, +-6.505754848815581915e-07, +-6.723116053228431817e-07, +-6.940442709520936375e-07, +-7.157734467679097100e-07, +-7.374990977793477485e-07, +-7.592211890049979875e-07, +-7.809396854720767392e-07, +-8.026545522203674260e-07, +-8.243657542964406394e-07, +-8.460732567576045958e-07, +-8.677770246709857882e-07, +-8.894770231135848902e-07, +-9.111732171713589959e-07, +-9.328655719431684761e-07, +-9.545540525350001070e-07, +-9.762386240639084210e-07, +-9.979192516570996404e-07, +-1.019595900451996369e-06, +-1.041268535595308717e-06, +-1.062937122246976388e-06, +-1.084601625574406529e-06, +-1.106262010756413703e-06, +-1.127918242982296413e-06, +-1.149570287450922938e-06, +-1.171218109374667711e-06, +-1.192861673974622615e-06, +-1.214500946479687907e-06, +-1.236135892135329267e-06, +-1.257766476193972233e-06, +-1.279392663918905541e-06, +-1.301014420588230203e-06, +-1.322631711484252963e-06, +-1.344244501907100865e-06, +-1.365852757164127629e-06, +-1.387456442573834138e-06, +-1.409055523468834965e-06, +-1.430649965191076863e-06, +-1.452239733090920169e-06, +-1.473824792535902834e-06, +-1.495405108901119611e-06, +-1.516980647573153989e-06, +-1.538551373953989571e-06, +-1.560117253451411503e-06, +-1.581678251487759073e-06, +-1.603234333498992071e-06, +-1.624785464929943380e-06, +-1.646331611237257124e-06, +-1.667872737893307675e-06, +-1.689408810375643293e-06, +-1.710939794180537807e-06, +-1.732465654812451198e-06, +-1.753986357787921501e-06, +-1.775501868639498636e-06, +-1.797012152906135882e-06, +-1.818517176141944386e-06, +-1.840016903915266927e-06, +-1.861511301803909976e-06, +-1.883000335398104490e-06, +-1.904483970304419425e-06, +-1.925962172135192242e-06, +-1.947434906522096257e-06, +-1.968902139105575601e-06, +-1.990363835539738954e-06, +-2.011819961491446652e-06, +-2.033270482640342029e-06, +-2.054715364677984054e-06, +-2.076154573311709380e-06, +-2.097588074258940704e-06, +-2.119015833251072534e-06, +-2.140437816032593655e-06, +-2.161853988361099423e-06, +-2.183264316006410838e-06, +-2.204668764754466670e-06, +-2.226067300401638169e-06, +-2.247459888758554691e-06, +-2.268846495649285041e-06, +-2.290227086910379900e-06, +-2.311601628394769025e-06, +-2.332970085966074272e-06, +-2.354332425502478838e-06, +-2.375688612895856093e-06, +-2.397038614051793289e-06, +-2.418382394888702186e-06, +-2.439719921341686595e-06, +-2.461051159356874039e-06, +-2.482376074895290502e-06, +-2.503694633931950719e-06, +-2.525006802455932712e-06, +-2.546312546469437583e-06, +-2.567611831991702812e-06, +-2.588904625053303409e-06, +-2.610190891700046584e-06, +-2.631470597992036610e-06, +-2.652743710002806624e-06, +-2.674010193823173471e-06, +-2.695270015555574861e-06, +-2.716523141317930151e-06, +-2.737769537242746300e-06, +-2.759009169477169536e-06, +-2.780242004182073950e-06, +-2.801468007535960814e-06, +-2.822687145729246609e-06, +-2.843899384968191148e-06, +-2.865104691473922209e-06, +-2.886303031481594016e-06, +-2.907494371244236151e-06, +-2.928678677028029653e-06, +-2.949855915111417209e-06, +-2.971026051793746281e-06, +-2.992189053385750994e-06, +-3.013344886213490417e-06, +-3.034493516621173841e-06, +-3.055634910966504214e-06, +-3.076769035619782407e-06, +-3.097895856972490196e-06, +-3.119015341427866173e-06, +-3.140127455404740269e-06, +-3.161232165341400028e-06, +-3.182329437685185662e-06, +-3.203419238905842673e-06, +-3.224501535485129185e-06, +-3.245576293920676297e-06, +-3.266643480728867991e-06, +-3.287703062440138835e-06, +-3.308755005598155744e-06, +-3.329799276768303133e-06, +-3.350835842528320666e-06, +-3.371864669472133956e-06, +-3.392885724213656904e-06, +-3.413898973376511675e-06, +-3.434904383607236064e-06, +-3.455901921564999248e-06, +-3.476891553926369305e-06, +-3.497873247383446779e-06, +-3.518846968648660584e-06, +-3.539812684444433350e-06, +-3.560770361516466290e-06, +-3.581719966623355001e-06, +-3.602661466540479037e-06, +-3.623594828063796193e-06, +-3.644520018000485336e-06, +-3.665437003177426892e-06, +-3.686345750440395207e-06, +-3.707246226649327862e-06, +-3.728138398681262342e-06, +-3.749022233434098976e-06, +-3.769897697816330239e-06, +-3.790764758760283690e-06, +-3.811623383211787748e-06, +-3.832473538133985030e-06, +-3.853315190511199907e-06, +-3.874148307339528815e-06, +-3.894972855635386813e-06, +-3.915788802434572466e-06, +-3.936596114787730282e-06, +-3.957394759764009054e-06, +-3.978184704450295290e-06, +-3.998965915951211520e-06, +-4.019738361388236233e-06, +-4.040502007903519752e-06, +-4.061256822654291286e-06, +-4.082002772816682428e-06, +-4.102739825584822527e-06, +-4.123467948169961163e-06, +-4.144187107804249301e-06, +-4.164897271735213248e-06, +-4.185598407229504467e-06, +-4.206290481572051700e-06, +-4.226973462066092303e-06, +-4.247647316032288796e-06, +-4.268312010812521875e-06, +-4.288967513764336414e-06, +-4.309613792264738718e-06, +-4.330250813709292735e-06, +-4.350878545511263710e-06, +-4.371496955105339196e-06, +-4.392106009942214822e-06, +-4.412705677492217053e-06, +-4.433295925244532391e-06, +-4.453876720707203983e-06, +-4.474448031406305769e-06, +-4.495009824889628763e-06, +-4.515562068721232098e-06, +-4.536104730485179281e-06, +-4.556637777784663212e-06, +-4.577161178242056159e-06, +-4.597674899498026301e-06, +-4.618178909215323966e-06, +-4.638673175073210694e-06, +-4.659157664771296299e-06, +-4.679632346028607978e-06, +-4.700097186582759372e-06, +-4.720552154193614830e-06, +-4.740997216638802677e-06, +-4.761432341712841073e-06, +-4.781857497235425388e-06, +-4.802272651042329369e-06, +-4.822677770989102442e-06, +-4.843072824953888638e-06, +-4.863457780831981015e-06, +-4.883832606539470680e-06, +-4.904197270012496315e-06, +-4.924551739207211989e-06, +-4.944895982098909637e-06, +-4.965229966686746343e-06, +-4.985553660983582494e-06, +-5.005867033028993046e-06, +-5.026170050879120074e-06, +-5.046462682610487807e-06, +-5.066744896322713132e-06, +-5.087016660134039192e-06, +-5.107277942180440070e-06, +-5.127528710623916630e-06, +-5.147768933643413782e-06, +-5.167998579438474587e-06, +-5.188217616233010393e-06, +-5.208426012265257571e-06, +-5.228623735800640556e-06, +-5.248810755121742974e-06, +-5.268987038532970563e-06, +-5.289152554358697017e-06, +-5.309307270948012447e-06, +-5.329451156664558994e-06, +-5.349584179899507368e-06, +-5.369706309061467841e-06, +-5.389817512580244296e-06, +-5.409917758910524750e-06, +-5.430007016522762197e-06, +-5.450085253911554305e-06, +-5.470152439594587168e-06, +-5.490208542108305270e-06, +-5.510253530011521539e-06, +-5.530287371884566933e-06, +-5.550310036328421374e-06, +-5.570321491968425456e-06, +-5.590321707448845874e-06, +-5.610310651435694354e-06, +-5.630288292620337706e-06, +-5.650254599710532828e-06, +-5.670209541438636149e-06, +-5.690153086560683751e-06, +-5.710085203851997807e-06, +-5.730005862110766995e-06, +-5.749915030157284162e-06, +-5.769812676833921765e-06, +-5.789698771004284833e-06, +-5.809573281556918437e-06, +-5.829436177399888366e-06, +-5.849287427464480124e-06, +-5.869127000704294300e-06, +-5.888954866094459669e-06, +-5.908770992635203442e-06, +-5.928575349346609822e-06, +-5.948367905272121640e-06, +-5.968148629477826306e-06, +-5.987917491052421080e-06, +-6.007674459106377052e-06, +-6.027419502775601709e-06, +-6.047152591216117880e-06, +-6.066873693607607714e-06, +-6.086582779152666453e-06, +-6.106279817075907109e-06, +-6.125964776627595938e-06, +-6.145637627078325441e-06, +-6.165298337722646450e-06, +-6.184946877878241418e-06, +-6.204583216885921880e-06, +-6.224207324108826311e-06, +-6.243819168936024255e-06, +-6.263418720778102433e-06, +-6.283005949066318557e-06, +-6.302580823260638828e-06, +-6.322143312840994014e-06, +-6.341693387310721790e-06, +-6.361231016199406841e-06, +-6.380756169057534391e-06, +-6.400268815460113809e-06, +-6.419768925005839198e-06, +-6.439256467316240670e-06, +-6.458731412039245272e-06, +-6.478193728844880835e-06, +-6.497643387424364564e-06, +-6.517080357498125293e-06, +-6.536504608806996876e-06, +-6.555916111115886692e-06, +-6.575314834216318437e-06, +-6.594700747921302491e-06, +-6.614073822068906163e-06, +-6.633434026521349905e-06, +-6.652781331165119124e-06, +-6.672115705910079029e-06, +-6.691437120693968142e-06, +-6.710745545472713326e-06, +-6.730040950232856599e-06, +-6.749323304981879484e-06, +-6.768592579751787646e-06, +-6.787848744601762957e-06, +-6.807091769613858873e-06, +-6.826321624892174574e-06, +-6.845538280570677318e-06, +-6.864741706804704157e-06, +-6.883931873774278918e-06, +-6.903108751687831524e-06, +-6.922272310772541820e-06, +-6.941422521286613928e-06, +-6.960559353509742888e-06, +-6.979682777746664576e-06, +-6.998792764329751011e-06, +-7.017889283614813310e-06, +-7.036972305980163171e-06, +-7.056041801834547880e-06, +-7.075097741608486013e-06, +-7.094140095757762288e-06, +-7.113168834767065579e-06, +-7.132183929141139111e-06, +-7.151185349412854377e-06, +-7.170173066142250607e-06, +-7.189147049912297907e-06, +-7.208107271332403975e-06, +-7.227053701037601795e-06, +-7.245986309687684821e-06, +-7.264905067970734864e-06, +-7.283809946598041592e-06, +-7.302700916306620758e-06, +-7.321577947862840346e-06, +-7.340441012053716463e-06, +-7.359290079694854273e-06, +-7.378125121629455272e-06, +-7.396946108724230357e-06, +-7.415753011872773556e-06, +-7.434545801994768357e-06, +-7.453324450035260111e-06, +-7.472088926968009432e-06, +-7.490839203790429482e-06, +-7.509575251527105394e-06, +-7.528297041228934530e-06, +-7.547004543973172225e-06, +-7.565697730862688090e-06, +-7.584376573029307558e-06, +-7.603041041628833869e-06, +-7.621691107844492957e-06, +-7.640326742886046602e-06, +-7.658947917989933040e-06, +-7.677554604418413155e-06, +-7.696146773463017899e-06, +-7.714724396439484735e-06, +-7.733287444691262652e-06, +-7.751835889588582130e-06, +-7.770369702527792755e-06, +-7.788888854934695449e-06, +-7.807393318259509400e-06, +-7.825883063980399108e-06, +-7.844358063602546033e-06, +-7.862818288658290902e-06, +-7.881263710706227382e-06, +-7.899694301334788413e-06, +-7.918110032157008163e-06, +-7.936510874814138854e-06, +-7.954896800974719029e-06, +-7.973267782334707380e-06, +-7.991623790616583201e-06, +-8.009964797572861574e-06, +-8.028290774981036585e-06, +-8.046601694646960979e-06, +-8.064897528404117719e-06, +-8.083178248112772948e-06, +-8.101443825663350571e-06, +-8.119694232972346167e-06, +-8.137929441981569742e-06, +-8.156149424665560654e-06, +-8.174354153023417134e-06, +-8.192543599082109882e-06, +-8.210717734899036712e-06, +-8.228876532557091131e-06, +-8.247019964168028448e-06, +-8.265148001871625515e-06, +-8.283260617834998019e-06, +-8.301357784255829371e-06, +-8.319439473358350692e-06, +-8.337505657392568312e-06, +-8.355556308641700724e-06, +-8.373591399413981000e-06, +-8.391610902045987320e-06, +-8.409614788905223038e-06, +-8.427603032385881516e-06, +-8.445575604908278611e-06, +-8.463532478926130386e-06, +-8.481473626918435140e-06, +-8.499399021392815807e-06, +-8.517308634888825071e-06, +-8.535202439968914308e-06, +-8.553080409230136188e-06, +-8.570942515294898467e-06, +-8.588788730814491028e-06, +-8.606619028472318163e-06, +-8.624433380975816182e-06, +-8.642231761063748062e-06, +-8.660014141505522432e-06, +-8.677780495097154920e-06, +-8.695530794663688972e-06, +-8.713265013062499283e-06, +-8.730983123174513146e-06, +-8.748685097915403144e-06, +-8.766370910226911842e-06, +-8.784040533080844697e-06, +-8.801693939478297566e-06, +-8.819331102449743103e-06, +-8.836951995054215912e-06, +-8.854556590382607506e-06, +-8.872144861552885655e-06, +-8.889716781712477933e-06, +-8.907272324041637829e-06, +-8.924811461745345420e-06, +-8.942334168060698575e-06, +-8.959840416255979530e-06, +-8.977330179626866956e-06, +-8.994803431499514071e-06, +-9.012260145229945561e-06, +-9.029700294203173272e-06, +-9.047123851836469147e-06, +-9.064530791574723485e-06, +-9.081921086893440050e-06, +-9.099294711298258343e-06, +-9.116651638324706273e-06, +-9.133991841537754611e-06, +-9.151315294534722317e-06, +-9.168621970940819452e-06, +-9.185911844412142287e-06, +-9.203184888635131201e-06, +-9.220441077326418214e-06, +-9.237680384232183246e-06, +-9.254902783131345733e-06, +-9.272108247830824630e-06, +-9.289296752168760531e-06, +-9.306468270013768578e-06, +-9.323622775264252369e-06, +-9.340760241851405840e-06, +-9.357880643734746017e-06, +-9.374983954905158942e-06, +-9.392070149384215274e-06, +-9.409139201224197391e-06, +-9.426191084507303184e-06, +-9.443225773348973195e-06, +-9.460243241892965973e-06, +-9.477243464314839380e-06, +-9.494226414820956168e-06, +-9.511192067648631371e-06, +-9.528140397065391993e-06, +-9.545071377372131357e-06, +-9.561984982898414856e-06, +-9.578881188005752880e-06, +-9.595759967086713130e-06, +-9.612621294564337859e-06, +-9.629465144895096629e-06, +-9.646291492565233901e-06, +-9.663100312089947420e-06, +-9.679891578020352513e-06, +-9.696665264935913007e-06, +-9.713421347447463442e-06, +-9.730159800199499447e-06, +-9.746880597865844318e-06, +-9.763583715152432372e-06, +-9.780269126796882039e-06, +-9.796936807567548883e-06, +-9.813586732266749404e-06, +-9.830218875726925678e-06, +-9.846833212809949092e-06, +-9.863429718413950820e-06, +-9.880008367465873016e-06, +-9.896569134924389382e-06, +-9.913111995782354784e-06, +-9.929636925062958037e-06, +-9.946143897819100175e-06, +-9.962632889140104648e-06, +-9.979103874144346444e-06, +-9.995556827982150634e-06, +-1.001199172583903989e-05, +-1.002840854292727265e-05, +-1.004480725449659192e-05, +-1.006118783582588882e-05, +-1.007755026222628239e-05, +-1.009389450904412144e-05, +-1.011022055165362219e-05, +-1.012652836546349879e-05, +-1.014281792591636537e-05, +-1.015908920848500226e-05, +-1.017534218867459223e-05, +-1.019157684202589510e-05, +-1.020779314410680453e-05, +-1.022399107052308676e-05, +-1.024017059691004741e-05, +-1.025633169893643300e-05, +-1.027247435230357199e-05, +-1.028859853274552899e-05, +-1.030470421602839322e-05, +-1.032079137795315505e-05, +-1.033685999435144034e-05, +-1.035291004108770424e-05, +-1.036894149406224158e-05, +-1.038495432920375496e-05, +-1.040094852247622591e-05, +-1.041692404987799332e-05, +-1.043288088743825517e-05, +-1.044881901121996371e-05, +-1.046473839731916815e-05, +-1.048063902186431503e-05, +-1.049652086101917214e-05, +-1.051238389097856122e-05, +-1.052822808797048565e-05, +-1.054405342825915102e-05, +-1.055985988813768910e-05, +-1.057564744393470875e-05, +-1.059141607201371325e-05, +-1.060716574876936480e-05, +-1.062289645063051524e-05, +-1.063860815405946407e-05, +-1.065430083555208206e-05, +-1.066997447163699308e-05, +-1.068562903887857424e-05, +-1.070126451387266994e-05, +-1.071688087324950733e-05, +-1.073247809367290012e-05, +-1.074805615183977422e-05, +-1.076361502448286641e-05, +-1.077915468836662468e-05, +-1.079467512028996788e-05, +-1.081017629708570634e-05, +-1.082565819562051308e-05, +-1.084112079279420720e-05, +-1.085656406554283032e-05, +-1.087198799083412851e-05, +-1.088739254567073881e-05, +-1.090277770708923382e-05, +-1.091814345215957951e-05, +-1.093348975798805252e-05, +-1.094881660171282531e-05, +-1.096412396050715957e-05, +-1.097941181157839987e-05, +-1.099468013216812109e-05, +-1.100992889955165577e-05, +-1.102515809104056572e-05, +-1.104036768397951480e-05, +-1.105555765574534399e-05, +-1.107072798375355282e-05, +-1.108587864545136899e-05, +-1.110100961832042330e-05, +-1.111612087987897393e-05, +-1.113121240767775600e-05, +-1.114628417930278866e-05, +-1.116133617237472113e-05, +-1.117636836454809412e-05, +-1.119138073351432137e-05, +-1.120637325699802033e-05, +-1.122134591275661062e-05, +-1.123629867858639071e-05, +-1.125123153231566502e-05, +-1.126614445180763914e-05, +-1.128103741496244082e-05, +-1.129591039971304234e-05, +-1.131076338402808119e-05, +-1.132559634591109258e-05, +-1.134040926340071786e-05, +-1.135520211456989137e-05, +-1.136997487752938607e-05, +-1.138472753042024454e-05, +-1.139946005142348250e-05, +-1.141417241875250960e-05, +-1.142886461065595006e-05, +-1.144353660542039887e-05, +-1.145818838136361000e-05, +-1.147281991684066613e-05, +-1.148743119024332141e-05, +-1.150202217999671324e-05, +-1.151659286456132062e-05, +-1.153114322243571025e-05, +-1.154567323214920119e-05, +-1.156018287227136691e-05, +-1.157467212140454579e-05, +-1.158914095818659401e-05, +-1.160358936129367226e-05, +-1.161801730943351187e-05, +-1.163242478135150661e-05, +-1.164681175582997243e-05, +-1.166117821168503376e-05, +-1.167552412776849205e-05, +-1.168984948297049902e-05, +-1.170415425621318017e-05, +-1.171843842645624726e-05, +-1.173270197269677807e-05, +-1.174694487396557920e-05, +-1.176116710933024222e-05, +-1.177536865789410349e-05, +-1.178954949879587823e-05, +-1.180370961121224908e-05, +-1.181784897435400191e-05, +-1.183196756746794351e-05, +-1.184606536983956637e-05, +-1.186014236078656548e-05, +-1.187419851966483022e-05, +-1.188823382586763633e-05, +-1.190224825882255251e-05, +-1.191624179799402561e-05, +-1.193021442288276392e-05, +-1.194416611302516803e-05, +-1.195809684799583971e-05, +-1.197200660740387699e-05, +-1.198589537089531364e-05, +-1.199976311815268543e-05, +-1.201360982889493703e-05, +-1.202743548287682055e-05, +-1.204124005989157222e-05, +-1.205502353976696349e-05, +-1.206878590236799121e-05, +-1.208252712759630503e-05, +-1.209624719539011935e-05, +-1.210994608572361863e-05, +-1.212362377860962732e-05, +-1.213728025409572868e-05, +-1.215091549226691773e-05, +-1.216452947324490500e-05, +-1.217812217718761505e-05, +-1.219169358429161916e-05, +-1.220524367478847616e-05, +-1.221877242894722270e-05, +-1.223227982707381930e-05, +-1.224576584951116218e-05, +-1.225923047663842598e-05, +-1.227267368887374550e-05, +-1.228609546667032774e-05, +-1.229949579051901511e-05, +-1.231287464094783644e-05, +-1.232623199852173255e-05, +-1.233956784384232250e-05, +-1.235288215755014991e-05, +-1.236617492032106101e-05, +-1.237944611286888131e-05, +-1.239269571594443980e-05, +-1.240592371033534026e-05, +-1.241913007686836512e-05, +-1.243231479640626522e-05, +-1.244547784984737865e-05, +-1.245861921813104666e-05, +-1.247173888223157433e-05, +-1.248483682316070560e-05, +-1.249791302197009490e-05, +-1.251096745974451227e-05, +-1.252400011761058473e-05, +-1.253701097673000814e-05, +-1.255000001830267788e-05, +-1.256296722356534032e-05, +-1.257591257379497592e-05, +-1.258883605030179930e-05, +-1.260173763443798540e-05, +-1.261461730759104910e-05, +-1.262747505118604913e-05, +-1.264031084668830372e-05, +-1.265312467559730039e-05, +-1.266591651945215935e-05, +-1.267868635983094230e-05, +-1.269143417834774201e-05, +-1.270415995665459327e-05, +-1.271686367644376322e-05, +-1.272954531944132578e-05, +-1.274220486741539653e-05, +-1.275484230216977820e-05, +-1.276745760554618336e-05, +-1.278005075942680427e-05, +-1.279262174572827186e-05, +-1.280517054640706149e-05, +-1.281769714345896271e-05, +-1.283020151891614511e-05, +-1.284268365484884907e-05, +-1.285514353336795049e-05, +-1.286758113661887914e-05, +-1.287999644678718536e-05, +-1.289238944609775231e-05, +-1.290476011681198383e-05, +-1.291710844123020151e-05, +-1.292943440169100778e-05, +-1.294173798057089113e-05, +-1.295401916028633020e-05, +-1.296627792329052416e-05, +-1.297851425207505469e-05, +-1.299072812917227957e-05, +-1.300291953714960008e-05, +-1.301508845861463969e-05, +-1.302723487621458337e-05, +-1.303935877263363146e-05, +-1.305146013059493085e-05, +-1.306353893286037005e-05, +-1.307559516222979139e-05, +-1.308762880154344240e-05, +-1.309963983367847242e-05, +-1.311162824155133144e-05, +-1.312359400811716529e-05, +-1.313553711636990206e-05, +-1.314745754934155245e-05, +-1.315935529010468647e-05, +-1.317123032176898773e-05, +-1.318308262748350993e-05, +-1.319491219043609241e-05, +-1.320671899385361427e-05, +-1.321850302100116763e-05, +-1.323026425518447681e-05, +-1.324200267974650506e-05, +-1.325371827806977886e-05, +-1.326541103357576279e-05, +-1.327708092972448514e-05, +-1.328872795001652677e-05, +-1.330035207799001579e-05, +-1.331195329722261135e-05, +-1.332353159133106996e-05, +-1.333508694397134709e-05, +-1.334661933883798059e-05, +-1.335812875966622348e-05, +-1.336961519022897599e-05, +-1.338107861433892013e-05, +-1.339251901584790131e-05, +-1.340393637864705878e-05, +-1.341533068666627680e-05, +-1.342670192387632251e-05, +-1.343805007428570853e-05, +-1.344937512194283766e-05, +-1.346067705093539638e-05, +-1.347195584539008383e-05, +-1.348321148947450404e-05, +-1.349444396739458422e-05, +-1.350565326339420374e-05, +-1.351683936175991547e-05, +-1.352800224681552311e-05, +-1.353914190292444780e-05, +-1.355025831449176094e-05, +-1.356135146595838040e-05, +-1.357242134180846338e-05, +-1.358346792656370928e-05, +-1.359449120478544676e-05, +-1.360549116107618556e-05, +-1.361646778007700758e-05, +-1.362742104646729587e-05, +-1.363835094496903245e-05, +-1.364925746034202277e-05, +-1.366014057738571509e-05, +-1.367100028094143330e-05, +-1.368183655588718121e-05, +-1.369264938714237405e-05, +-1.370343875966713040e-05, +-1.371420465846009356e-05, +-1.372494706855963270e-05, +-1.373566597504603664e-05, +-1.374636136303600984e-05, +-1.375703321768971464e-05, +-1.376768152420518592e-05, +-1.377830626782049100e-05, +-1.378890743381572024e-05, +-1.379948500750788615e-05, +-1.381003897425551601e-05, +-1.382056931945827919e-05, +-1.383107602855436304e-05, +-1.384155908702202465e-05, +-1.385201848038160000e-05, +-1.386245419419016261e-05, +-1.387286621404826249e-05, +-1.388325452559476940e-05, +-1.389361911450915313e-05, +-1.390395996651106668e-05, +-1.391427706736044285e-05, +-1.392457040285688611e-05, +-1.393483995884176469e-05, +-1.394508572119533923e-05, +-1.395530767583850250e-05, +-1.396550580873257958e-05, +-1.397568010587907876e-05, +-1.398583055331955437e-05, +-1.399595713713726017e-05, +-1.400605984345441005e-05, +-1.401613865843411941e-05, +-1.402619356827995627e-05, +-1.403622455923532631e-05, +-1.404623161758571069e-05, +-1.405621472965549821e-05, +-1.406617388181002323e-05, +-1.407610906045527094e-05, +-1.408602025203768417e-05, +-1.409590744304370098e-05, +-1.410577062000188915e-05, +-1.411560976947984265e-05, +-1.412542487808634668e-05, +-1.413521593247075760e-05, +-1.414498291932299618e-05, +-1.415472582537322575e-05, +-1.416444463739375798e-05, +-1.417413934219605609e-05, +-1.418380992663279656e-05, +-1.419345637759743201e-05, +-1.420307868202362542e-05, +-1.421267682688716441e-05, +-1.422225079920331852e-05, +-1.423180058602850611e-05, +-1.424132617445998611e-05, +-1.425082755163584443e-05, +-1.426030470473456369e-05, +-1.426975762097679855e-05, +-1.427918628762272457e-05, +-1.428859069197386267e-05, +-1.429797082137263359e-05, +-1.430732666320199031e-05, +-1.431665820488706465e-05, +-1.432596543389263805e-05, +-1.433524833772490169e-05, +-1.434450690393108212e-05, +-1.435374112009924132e-05, +-1.436295097385822086e-05, +-1.437213645287911230e-05, +-1.438129754487313961e-05, +-1.439043423759134748e-05, +-1.439954651882841296e-05, +-1.440863437641843064e-05, +-1.441769779823651859e-05, +-1.442673677220072252e-05, +-1.443575128626713686e-05, +-1.444474132843609316e-05, +-1.445370688674737273e-05, +-1.446264794928183963e-05, +-1.447156450416294675e-05, +-1.448045653955441662e-05, +-1.448932404366003644e-05, +-1.449816700472719865e-05, +-1.450698541104308422e-05, +-1.451577925093597216e-05, +-1.452454851277724529e-05, +-1.453329318497648255e-05, +-1.454201325598764060e-05, +-1.455070871430434268e-05, +-1.455937954846182335e-05, +-1.456802574703638474e-05, +-1.457664729864741075e-05, +-1.458524419195260505e-05, +-1.459381641565408294e-05, +-1.460236395849370593e-05, +-1.461088680925471303e-05, +-1.461938495676348099e-05, +-1.462785838988533143e-05, +-1.463630709752837298e-05, +-1.464473106864286602e-05, +-1.465313029221952863e-05, +-1.466150475729042424e-05, +-1.466985445293081667e-05, +-1.467817936825465541e-05, +-1.468647949242031856e-05, +-1.469475481462615396e-05, +-1.470300532411230378e-05, +-1.471123101016076040e-05, +-1.471943186209486664e-05, +-1.472760786927939201e-05, +-1.473575902112176090e-05, +-1.474388530706991637e-05, +-1.475198671661389396e-05, +-1.476006323928527275e-05, +-1.476811486465743122e-05, +-1.477614158234498989e-05, +-1.478414338200544438e-05, +-1.479212025333678358e-05, +-1.480007218607919555e-05, +-1.480799917001456271e-05, +-1.481590119496616536e-05, +-1.482377825080018773e-05, +-1.483163032742339367e-05, +-1.483945741478474455e-05, +-1.484725950287500957e-05, +-1.485503658172676920e-05, +-1.486278864141397127e-05, +-1.487051567205364203e-05, +-1.487821766380348733e-05, +-1.488589460686342746e-05, +-1.489354649147524984e-05, +-1.490117330792259209e-05, +-1.490877504653062865e-05, +-1.491635169766761404e-05, +-1.492390325174245529e-05, +-1.493142969920655168e-05, +-1.493893103055309508e-05, +-1.494640723631682605e-05, +-1.495385830707568212e-05, +-1.496128423344838377e-05, +-1.496868500609594889e-05, +-1.497606061572141841e-05, +-1.498341105306989689e-05, +-1.499073630892810024e-05, +-1.499803637412579227e-05, +-1.500531123953375521e-05, +-1.501256089606512125e-05, +-1.501978533467509301e-05, +-1.502698454636058947e-05, +-1.503415852216158094e-05, +-1.504130725315958973e-05, +-1.504843073047698043e-05, +-1.505552894528046147e-05, +-1.506260188877733957e-05, +-1.506964955221715793e-05, +-1.507667192689254489e-05, +-1.508366900413752163e-05, +-1.509064077532742417e-05, +-1.509758723188166986e-05, +-1.510450836526041661e-05, +-1.511140416696611301e-05, +-1.511827462854476376e-05, +-1.512511974158203506e-05, +-1.513193949770831133e-05, +-1.513873388859484297e-05, +-1.514550290595506261e-05, +-1.515224654154558632e-05, +-1.515896478716471943e-05, +-1.516565763465186191e-05, +-1.517232507589082539e-05, +-1.517896710280625525e-05, +-1.518558370736508243e-05, +-1.519217488157791601e-05, +-1.519874061749526367e-05, +-1.520528090721229548e-05, +-1.521179574286511858e-05, +-1.521828511663252890e-05, +-1.522474902073527420e-05, +-1.523118744743778036e-05, +-1.523760038904453959e-05, +-1.524398783790465395e-05, +-1.525034978640828289e-05, +-1.525668622698791039e-05, +-1.526299715211968498e-05, +-1.526928255432035008e-05, +-1.527554242614981224e-05, +-1.528177676021103776e-05, +-1.528798554914858566e-05, +-1.529416878564928187e-05, +-1.530032646244365249e-05, +-1.530645857230246781e-05, +-1.531256510804109952e-05, +-1.531864606251617317e-05, +-1.532470142862666599e-05, +-1.533073119931535356e-05, +-1.533673536756548610e-05, +-1.534271392640380050e-05, +-1.534866686890014084e-05, +-1.535459418816578130e-05, +-1.536049587735486606e-05, +-1.536637192966404681e-05, +-1.537222233833252004e-05, +-1.537804709664157297e-05, +-1.538384619791592189e-05, +-1.538961963552197407e-05, +-1.539536740286890856e-05, +-1.540108949340842205e-05, +-1.540678590063449175e-05, +-1.541245661808445278e-05, +-1.541810163933742610e-05, +-1.542372095801527733e-05, +-1.542931456778243719e-05, +-1.543488246234592522e-05, +-1.544042463545506857e-05, +-1.544594108090254552e-05, +-1.545143179252284052e-05, +-1.545689676419325384e-05, +-1.546233598983374233e-05, +-1.546774946340655687e-05, +-1.547313717891730630e-05, +-1.547849913041353433e-05, +-1.548383531198544466e-05, +-1.548914571776605680e-05, +-1.549443034193096554e-05, +-1.549968917869804275e-05, +-1.550492222232876220e-05, +-1.551012946712621406e-05, +-1.551531090743652795e-05, +-1.552046653764854766e-05, +-1.552559635219356689e-05, +-1.553070034554539361e-05, +-1.553577851222135973e-05, +-1.554083084678051864e-05, +-1.554585734382488859e-05, +-1.555085799799924609e-05, +-1.555583280399068876e-05, +-1.556078175652985854e-05, +-1.556570485038939663e-05, +-1.557060208038410273e-05, +-1.557547344137282568e-05, +-1.558031892825616625e-05, +-1.558513853597731403e-05, +-1.558993225952309095e-05, +-1.559470009392211159e-05, +-1.559944203424612141e-05, +-1.560415807560932257e-05, +-1.560884821316891599e-05, +-1.561351244212436616e-05, +-1.561815075771894273e-05, +-1.562276315523693546e-05, +-1.562734963000695086e-05, +-1.563191017739953376e-05, +-1.563644479282777711e-05, +-1.564095347174844014e-05, +-1.564543620966034912e-05, +-1.564989300210443800e-05, +-1.565432384466577793e-05, +-1.565872873297132417e-05, +-1.566310766269069529e-05, +-1.566746062953722359e-05, +-1.567178762926536986e-05, +-1.567608865767401331e-05, +-1.568036371060379188e-05, +-1.568461278393815255e-05, +-1.568883587360395105e-05, +-1.569303297557041169e-05, +-1.569720408584881905e-05, +-1.570134920049450343e-05, +-1.570546831560481134e-05, +-1.570956142731978994e-05, +-1.571362853182313565e-05, +-1.571766962534000889e-05, +-1.572168470413893136e-05, +-1.572567376453178271e-05, +-1.572963680287246216e-05, +-1.573357381555795246e-05, +-1.573748479902790985e-05, +-1.574136974976462006e-05, +-1.574522866429381820e-05, +-1.574906153918336404e-05, +-1.575286837104381799e-05, +-1.575664915652951170e-05, +-1.576040389233617642e-05, +-1.576413257520310800e-05, +-1.576783520191264850e-05, +-1.577151176928944421e-05, +-1.577516227420098092e-05, +-1.577878671355772630e-05, +-1.578238508431254369e-05, +-1.578595738346182039e-05, +-1.578950360804413607e-05, +-1.579302375514094386e-05, +-1.579651782187659401e-05, +-1.579998580541823225e-05, +-1.580342770297554232e-05, +-1.580684351180159977e-05, +-1.581023322919169625e-05, +-1.581359685248407139e-05, +-1.581693437905987211e-05, +-1.582024580634287819e-05, +-1.582353113179962425e-05, +-1.582679035293982326e-05, +-1.583002346731557711e-05, +-1.583323047252182723e-05, +-1.583641136619642572e-05, +-1.583956614601975593e-05, +-1.584269480971556588e-05, +-1.584579735504980280e-05, +-1.584887377983135507e-05, +-1.585192408191199467e-05, +-1.585494825918621115e-05, +-1.585794630959101850e-05, +-1.586091823110693432e-05, +-1.586386402175659068e-05, +-1.586678367960552358e-05, +-1.586967720276215936e-05, +-1.587254458937763178e-05, +-1.587538583764570407e-05, +-1.587820094580337201e-05, +-1.588098991212988478e-05, +-1.588375273494754795e-05, +-1.588648941262132703e-05, +-1.588919994355875265e-05, +-1.589188432621069304e-05, +-1.589454255907038160e-05, +-1.589717464067337630e-05, +-1.589978056959887764e-05, +-1.590236034446826832e-05, +-1.590491396394566221e-05, +-1.590744142673839216e-05, +-1.590994273159599358e-05, +-1.591241787731099730e-05, +-1.591486686271861782e-05, +-1.591728968669681431e-05, +-1.591968634816614154e-05, +-1.592205684609043764e-05, +-1.592440117947528257e-05, +-1.592671934736999701e-05, +-1.592901134886595858e-05, +-1.593127718309741151e-05, +-1.593351684924158187e-05, +-1.593573034651821679e-05, +-1.593791767418933713e-05, +-1.594007883156052155e-05, +-1.594221381797943950e-05, +-1.594432263283647797e-05, +-1.594640527556522602e-05, +-1.594846174564117037e-05, +-1.595049204258314549e-05, +-1.595249616595240184e-05, +-1.595447411535274148e-05, +-1.595642589043105329e-05, +-1.595835149087658462e-05, +-1.596025091642093105e-05, +-1.596212416683905964e-05, +-1.596397124194818407e-05, +-1.596579214160799502e-05, +-1.596758686572151740e-05, +-1.596935541423357885e-05, +-1.597109778713201600e-05, +-1.597281398444754224e-05, +-1.597450400625317183e-05, +-1.597616785266457219e-05, +-1.597780552384014526e-05, +-1.597941701998077338e-05, +-1.598100234133018857e-05, +-1.598256148817446776e-05, +-1.598409446084238169e-05, +-1.598560125970544579e-05, +-1.598708188517743565e-05, +-1.598853633771486139e-05, +-1.598996461781697099e-05, +-1.599136672602542508e-05, +-1.599274266292449343e-05, +-1.599409242914092623e-05, +-1.599541602534405906e-05, +-1.599671345224595525e-05, +-1.599798471060104673e-05, +-1.599922980120624581e-05, +-1.600044872490118914e-05, +-1.600164148256782437e-05, +-1.600280807513076249e-05, +-1.600394850355722027e-05, +-1.600506276885667125e-05, +-1.600615087208122860e-05, +-1.600721281432547233e-05, +-1.600824859672656114e-05, +-1.600925822046391723e-05, +-1.601024168675975833e-05, +-1.601119899687849458e-05, +-1.601213015212711813e-05, +-1.601303515385506766e-05, +-1.601391400345410980e-05, +-1.601476670235864739e-05, +-1.601559325204546884e-05, +-1.601639365403368368e-05, +-1.601716790988490897e-05, +-1.601791602120317438e-05, +-1.601863798963473588e-05, +-1.601933381686860766e-05, +-1.602000350463590823e-05, +-1.602064705471026697e-05, +-1.602126446890756329e-05, +-1.602185574908619763e-05, +-1.602242089714673236e-05, +-1.602295991503236948e-05, +-1.602347280472845258e-05, +-1.602395956826264977e-05, +-1.602442020770503844e-05, +-1.602485472516798322e-05, +-1.602526312280626140e-05, +-1.602564540281680201e-05, +-1.602600156743882472e-05, +-1.602633161895401269e-05, +-1.602663555968612965e-05, +-1.602691339200134520e-05, +-1.602716511830808911e-05, +-1.602739074105701065e-05, +-1.602759026274098539e-05, +-1.602776368589512533e-05, +-1.602791101309675523e-05, +-1.602803224696551081e-05, +-1.602812739016319313e-05, +-1.602819644539372785e-05, +-1.602823941540338214e-05, +-1.602825630298047326e-05, +-1.602824711095552444e-05, +-1.602821184220130552e-05, +-1.602815049963267371e-05, +-1.602806308620657359e-05, +-1.602794960492216587e-05, +-1.602781005882080706e-05, +-1.602764445098581566e-05, +-1.602745278454279407e-05, +-1.602723506265922538e-05, +-1.602699128854484609e-05, +-1.602672146545142923e-05, +-1.602642559667279455e-05, +-1.602610368554490338e-05, +-1.602575573544565198e-05, +-1.602538174979503411e-05, +-1.602498173205508690e-05, +-1.602455568572986027e-05, +-1.602410361436531875e-05, +-1.602362552154960233e-05, +-1.602312141091263005e-05, +-1.602259128612654044e-05, +-1.602203515090522740e-05, +-1.602145300900465185e-05, +-1.602084486422269269e-05, +-1.602021072039914339e-05, +-1.601955058141572556e-05, +-1.601886445119606183e-05, +-1.601815233370577072e-05, +-1.601741423295229385e-05, +-1.601665015298487223e-05, +-1.601586009789475630e-05, +-1.601504407181493492e-05, +-1.601420207892037588e-05, +-1.601333412342768374e-05, +-1.601244020959557751e-05, +-1.601152034172426052e-05, +-1.601057452415599974e-05, +-1.600960276127465822e-05, +-1.600860505750597635e-05, +-1.600758141731752776e-05, +-1.600653184521842119e-05, +-1.600545634575965625e-05, +-1.600435492353410985e-05, +-1.600322758317600767e-05, +-1.600207432936158144e-05, +-1.600089516680863866e-05, +-1.599969010027668117e-05, +-1.599845913456688485e-05, +-1.599720227452205214e-05, +-1.599591952502669342e-05, +-1.599461089100689818e-05, +-1.599327637743042319e-05, +-1.599191598930648577e-05, +-1.599052973168618393e-05, +-1.598911760966183573e-05, +-1.598767962836756873e-05, +-1.598621579297901851e-05, +-1.598472610871335577e-05, +-1.598321058082924226e-05, +-1.598166921462690872e-05, +-1.598010201544804306e-05, +-1.597850898867581411e-05, +-1.597689013973495629e-05, +-1.597524547409150873e-05, +-1.597357499725319136e-05, +-1.597187871476883910e-05, +-1.597015663222904556e-05, +-1.596840875526553633e-05, +-1.596663508955162625e-05, +-1.596483564080190105e-05, +-1.596301041477235616e-05, +-1.596115941726030871e-05, +-1.595928265410443472e-05, +-1.595738013118477931e-05, +-1.595545185442263133e-05, +-1.595349782978054031e-05, +-1.595151806326248922e-05, +-1.594951256091351504e-05, +-1.594748132882006789e-05, +-1.594542437310986530e-05, +-1.594334169995166190e-05, +-1.594123331555570675e-05, +-1.593909922617311653e-05, +-1.593693943809631607e-05, +-1.593475395765915346e-05, +-1.593254279123613778e-05, +-1.593030594524336065e-05, +-1.592804342613782876e-05, +-1.592575524041760958e-05, +-1.592344139462188555e-05, +-1.592110189533104897e-05, +-1.591873674916644108e-05, +-1.591634596279045035e-05, +-1.591392954290658701e-05, +-1.591148749625909679e-05, +-1.590901982963376392e-05, +-1.590652654985668800e-05, +-1.590400766379544616e-05, +-1.590146317835842556e-05, +-1.589889310049467773e-05, +-1.589629743719461310e-05, +-1.589367619548945896e-05, +-1.589102938245093413e-05, +-1.588835700519204184e-05, +-1.588565907086661230e-05, +-1.588293558666896727e-05, +-1.588018655983476374e-05, +-1.587741199764006894e-05, +-1.587461190740184822e-05, +-1.587178629647797865e-05, +-1.586893517226689322e-05, +-1.586605854220793322e-05, +-1.586315641378114159e-05, +-1.586022879450702232e-05, +-1.585727569194718084e-05, +-1.585429711370361586e-05, +-1.585129306741890238e-05, +-1.584826356077667956e-05, +-1.584520860150092565e-05, +-1.584212819735603592e-05, +-1.583902235614731733e-05, +-1.583589108572058536e-05, +-1.583273439396204539e-05, +-1.582955228879883144e-05, +-1.582634477819801005e-05, +-1.582311187016763061e-05, +-1.581985357275611547e-05, +-1.581656989405206686e-05, +-1.581326084218504611e-05, +-1.580992642532480798e-05, +-1.580656665168128367e-05, +-1.580318152950508233e-05, +-1.579977106708723347e-05, +-1.579633527275899055e-05, +-1.579287415489192577e-05, +-1.578938772189816727e-05, +-1.578587598222976556e-05, +-1.578233894437928303e-05, +-1.577877661687972620e-05, +-1.577518900830404428e-05, +-1.577157612726576275e-05, +-1.576793798241809565e-05, +-1.576427458245494172e-05, +-1.576058593611023726e-05, +-1.575687205215798659e-05, +-1.575313293941246539e-05, +-1.574936860672815291e-05, +-1.574557906299919662e-05, +-1.574176431716023221e-05, +-1.573792437818593966e-05, +-1.573405925509090437e-05, +-1.573016895692994923e-05, +-1.572625349279742980e-05, +-1.572231287182827795e-05, +-1.571834710319703279e-05, +-1.571435619611836245e-05, +-1.571034015984675242e-05, +-1.570629900367680702e-05, +-1.570223273694255152e-05, +-1.569814136901815374e-05, +-1.569402490931822567e-05, +-1.568988336729616658e-05, +-1.568571675244586735e-05, +-1.568152507430092775e-05, +-1.567730834243434812e-05, +-1.567306656645934933e-05, +-1.566879975602866124e-05, +-1.566450792083473281e-05, +-1.566019107061001662e-05, +-1.565584921512601013e-05, +-1.565148236419418057e-05, +-1.564709052766621568e-05, +-1.564267371543228560e-05, +-1.563823193742301478e-05, +-1.563376520360841129e-05, +-1.562927352399772456e-05, +-1.562475690864000778e-05, +-1.562021536762385026e-05, +-1.561564891107723512e-05, +-1.561105754916763754e-05, +-1.560644129210214673e-05, +-1.560180015012658841e-05, +-1.559713413352747301e-05, +-1.559244325262934948e-05, +-1.558772751779697376e-05, +-1.558298693943430924e-05, +-1.557822152798398466e-05, +-1.557343129392906275e-05, +-1.556861624779124108e-05, +-1.556377640013117058e-05, +-1.555891176154933307e-05, +-1.555402234268529244e-05, +-1.554910815421718312e-05, +-1.554416920686357685e-05, +-1.553920551138082644e-05, +-1.553421707856529515e-05, +-1.552920391925231315e-05, +-1.552416604431558798e-05, +-1.551910346466910188e-05, +-1.551401619126518061e-05, +-1.550890423509490335e-05, +-1.550376760718874989e-05, +-1.549860631861640746e-05, +-1.549342038048555104e-05, +-1.548820980394396431e-05, +-1.548297460017793707e-05, +-1.547771478041202128e-05, +-1.547243035591033212e-05, +-1.546712133797560610e-05, +-1.546178773794936703e-05, +-1.545642956721220732e-05, +-1.545104683718276803e-05, +-1.544563955931916202e-05, +-1.544020774511820136e-05, +-1.543475140611453000e-05, +-1.542927055388269053e-05, +-1.542376520003537252e-05, +-1.541823535622340236e-05, +-1.541268103413673935e-05, +-1.540710224550395055e-05, +-1.540149900209203461e-05, +-1.539587131570668263e-05, +-1.539021919819152603e-05, +-1.538454266142938334e-05, +-1.537884171734126075e-05, +-1.537311637788659599e-05, +-1.536736665506327197e-05, +-1.536159256090781320e-05, +-1.535579410749440669e-05, +-1.534997130693631815e-05, +-1.534412417138481796e-05, +-1.533825271302958777e-05, +-1.533235694409847990e-05, +-1.532643687685787313e-05, +-1.532049252361174433e-05, +-1.531452389670290515e-05, +-1.530853100851211092e-05, +-1.530251387145832492e-05, +-1.529647249799878956e-05, +-1.529040690062822338e-05, +-1.528431709188009496e-05, +-1.527820308432568784e-05, +-1.527206489057440542e-05, +-1.526590252327355413e-05, +-1.525971599510874663e-05, +-1.525350531880270747e-05, +-1.524727050711698410e-05, +-1.524101157285067467e-05, +-1.523472852884072441e-05, +-1.522842138796214085e-05, +-1.522209016312779220e-05, +-1.521573486728770260e-05, +-1.520935551343049889e-05, +-1.520295211458211291e-05, +-1.519652468380644902e-05, +-1.519007323420514688e-05, +-1.518359777891700716e-05, +-1.517709833111877425e-05, +-1.517057490402569017e-05, +-1.516402751088907040e-05, +-1.515745616499885677e-05, +-1.515086087968245205e-05, +-1.514424166830384909e-05, +-1.513759854426625838e-05, +-1.513093152100868944e-05, +-1.512424061200848167e-05, +-1.511752583078029310e-05, +-1.511078719087630358e-05, +-1.510402470588510356e-05, +-1.509723838943445366e-05, +-1.509042825518751031e-05, +-1.508359431684593436e-05, +-1.507673658814850706e-05, +-1.506985508287022537e-05, +-1.506294981482497863e-05, +-1.505602079786293121e-05, +-1.504906804587092570e-05, +-1.504209157277367891e-05, +-1.503509139253317035e-05, +-1.502806751914721747e-05, +-1.502101996665269442e-05, +-1.501394874912146798e-05, +-1.500685388066362304e-05, +-1.499973537542616836e-05, +-1.499259324759197269e-05, +-1.498542751138241089e-05, +-1.497823818105507527e-05, +-1.497102527090363325e-05, +-1.496378879525962651e-05, +-1.495652876849136639e-05, +-1.494924520500270238e-05, +-1.494193811923600025e-05, +-1.493460752566957213e-05, +-1.492725343881776465e-05, +-1.491987587323254285e-05, +-1.491247484350212310e-05, +-1.490505036425134238e-05, +-1.489760245014201406e-05, +-1.489013111587160650e-05, +-1.488263637617488632e-05, +-1.487511824582322550e-05, +-1.486757673962333935e-05, +-1.486001187242003083e-05, +-1.485242365909369184e-05, +-1.484481211456056921e-05, +-1.483717725377406569e-05, +-1.482951909172368289e-05, +-1.482183764343514664e-05, +-1.481413292397091349e-05, +-1.480640494842866641e-05, +-1.479865373194322736e-05, +-1.479087928968533083e-05, +-1.478308163686187111e-05, +-1.477526078871582275e-05, +-1.476741676052669110e-05, +-1.475954956760898430e-05, +-1.475165922531428177e-05, +-1.474374574902990769e-05, +-1.473580915417905639e-05, +-1.472784945622092958e-05, +-1.471986667065103619e-05, +-1.471186081299976596e-05, +-1.470383189883432579e-05, +-1.469577994375749114e-05, +-1.468770496340787718e-05, +-1.467960697346013521e-05, +-1.467148598962374992e-05, +-1.466334202764486731e-05, +-1.465517510330500883e-05, +-1.464698523242137466e-05, +-1.463877243084685557e-05, +-1.463053671447018706e-05, +-1.462227809921472796e-05, +-1.461399660104035945e-05, +-1.460569223594219422e-05, +-1.459736501995078310e-05, +-1.458901496913215745e-05, +-1.458064209958811545e-05, +-1.457224642745484819e-05, +-1.456382796890490142e-05, +-1.455538674014581353e-05, +-1.454692275742044754e-05, +-1.453843603700732490e-05, +-1.452992659521908382e-05, +-1.452139444840431061e-05, +-1.451283961294790388e-05, +-1.450426210526770673e-05, +-1.449566194181812698e-05, +-1.448703913908865486e-05, +-1.447839371360249761e-05, +-1.446972568192023355e-05, +-1.446103506063507887e-05, +-1.445232186637662813e-05, +-1.444358611580938382e-05, +-1.443482782563170434e-05, +-1.442604701257744554e-05, +-1.441724369341652316e-05, +-1.440841788495143659e-05, +-1.439956960402095688e-05, +-1.439069886749851229e-05, +-1.438180569229093294e-05, +-1.437289009534183394e-05, +-1.436395209362834577e-05, +-1.435499170416164286e-05, +-1.434600894398847505e-05, +-1.433700383019015957e-05, +-1.432797637988113772e-05, +-1.431892661021286785e-05, +-1.430985453836875498e-05, +-1.430076018156807432e-05, +-1.429164355706452784e-05, +-1.428250468214466379e-05, +-1.427334357413164425e-05, +-1.426416025038180281e-05, +-1.425495472828496136e-05, +-1.424572702526645955e-05, +-1.423647715878568439e-05, +-1.422720514633474377e-05, +-1.421791100544259490e-05, +-1.420859475366960297e-05, +-1.419925640861171194e-05, +-1.418989598789859462e-05, +-1.418051350919391527e-05, +-1.417110899019536851e-05, +-1.416168244863489624e-05, +-1.415223390227724929e-05, +-1.414276336892224908e-05, +-1.413327086640318837e-05, +-1.412375641258709722e-05, +-1.411422002537492094e-05, +-1.410466172270163348e-05, +-1.409508152253484841e-05, +-1.408547944287702452e-05, +-1.407585550176383274e-05, +-1.406620971726460006e-05, +-1.405654210748269906e-05, +-1.404685269055377769e-05, +-1.403714148464824444e-05, +-1.402740850796960644e-05, +-1.401765377875484897e-05, +-1.400787731527428467e-05, +-1.399807913583217015e-05, +-1.398825925876481716e-05, +-1.397841770244298629e-05, +-1.396855448527055708e-05, +-1.395866962568446711e-05, +-1.394876314215499484e-05, +-1.393883505318589859e-05, +-1.392888537731294941e-05, +-1.391891413310629773e-05, +-1.390892133916871154e-05, +-1.389890701413593043e-05, +-1.388887117667740249e-05, +-1.387881384549402618e-05, +-1.386873503932106237e-05, +-1.385863477692618110e-05, +-1.384851307711000539e-05, +-1.383836995870598588e-05, +-1.382820544058076840e-05, +-1.381801954163264397e-05, +-1.380781228079373746e-05, +-1.379758367702857446e-05, +-1.378733374933434385e-05, +-1.377706251674131621e-05, +-1.376676999831104306e-05, +-1.375645621313890473e-05, +-1.374612118035256534e-05, +-1.373576491911194913e-05, +-1.372538744860968258e-05, +-1.371498878807108085e-05, +-1.370456895675264858e-05, +-1.369412797394409915e-05, +-1.368366585896878672e-05, +-1.367318263117972854e-05, +-1.366267830996396209e-05, +-1.365215291474081544e-05, +-1.364160646495988962e-05, +-1.363103898010619333e-05, +-1.362045047969363603e-05, +-1.360984098327007796e-05, +-1.359921051041529048e-05, +-1.358855908073993793e-05, +-1.357788671388737165e-05, +-1.356719342953427035e-05, +-1.355647924738656247e-05, +-1.354574418718384602e-05, +-1.353498826869752508e-05, +-1.352421151172894806e-05, +-1.351341393611446784e-05, +-1.350259556171906194e-05, +-1.349175640844103353e-05, +-1.348089649621005312e-05, +-1.347001584498775146e-05, +-1.345911447476557825e-05, +-1.344819240556969289e-05, +-1.343724965745458468e-05, +-1.342628625050807195e-05, +-1.341530220484943859e-05, +-1.340429754062736226e-05, +-1.339327227802491185e-05, +-1.338222643725484303e-05, +-1.337116003856047415e-05, +-1.336007310221765638e-05, +-1.334896564853358450e-05, +-1.333783769784460309e-05, +-1.332668927052162074e-05, +-1.331552038696331689e-05, +-1.330433106760133407e-05, +-1.329312133289785548e-05, +-1.328189120334611652e-05, +-1.327064069947026420e-05, +-1.325936984182590437e-05, +-1.324807865099809079e-05, +-1.323676714760412549e-05, +-1.322543535229163255e-05, +-1.321408328573913246e-05, +-1.320271096865575068e-05, +-1.319131842178189360e-05, +-1.317990566588715469e-05, +-1.316847272177318760e-05, +-1.315701961027179018e-05, +-1.314554635224533989e-05, +-1.313405296858711054e-05, +-1.312253948021953590e-05, +-1.311100590809685924e-05, +-1.309945227320329181e-05, +-1.308787859655337716e-05, +-1.307628489919204187e-05, +-1.306467120219495477e-05, +-1.305303752666657191e-05, +-1.304138389374303689e-05, +-1.302971032459023090e-05, +-1.301801684040411330e-05, +-1.300630346241083846e-05, +-1.299457021186700313e-05, +-1.298281711005785409e-05, +-1.297104417830002240e-05, +-1.295925143793967853e-05, +-1.294743891035286950e-05, +-1.293560661694598814e-05, +-1.292375457915389776e-05, +-1.291188281844260195e-05, +-1.289999135630743541e-05, +-1.288808021427349076e-05, +-1.287614941389548307e-05, +-1.286419897675830720e-05, +-1.285222892447498119e-05, +-1.284023927868952280e-05, +-1.282823006107514362e-05, +-1.281620129333433209e-05, +-1.280415299719973441e-05, +-1.279208519443176590e-05, +-1.277999790682127241e-05, +-1.276789115618995717e-05, +-1.275576496438576959e-05, +-1.274361935328802641e-05, +-1.273145434480516196e-05, +-1.271926996087333396e-05, +-1.270706622345879523e-05, +-1.269484315455855601e-05, +-1.268260077619550005e-05, +-1.267033911042365310e-05, +-1.265805817932600943e-05, +-1.264575800501248202e-05, +-1.263343860962548111e-05, +-1.262110001533263652e-05, +-1.260874224433254387e-05, +-1.259636531885256914e-05, +-1.258396926114725277e-05, +-1.257155409350084747e-05, +-1.255911983822801950e-05, +-1.254666651766874105e-05, +-1.253419415419376891e-05, +-1.252170277020236930e-05, +-1.250919238812026125e-05, +-1.249666303040529856e-05, +-1.248411471954010396e-05, +-1.247154747803780859e-05, +-1.245896132843930936e-05, +-1.244635629331443781e-05, +-1.243373239525915306e-05, +-1.242108965690131180e-05, +-1.240842810089334653e-05, +-1.239574774991785767e-05, +-1.238304862668564846e-05, +-1.237033075393345829e-05, +-1.235759415442925325e-05, +-1.234483885096737606e-05, +-1.233206486636906102e-05, +-1.231927222348509882e-05, +-1.230646094519409498e-05, +-1.229363105440036930e-05, +-1.228078257403986805e-05, +-1.226791552707242554e-05, +-1.225502993648777128e-05, +-1.224212582530338014e-05, +-1.222920321656206011e-05, +-1.221626213333755110e-05, +-1.220330259872956135e-05, +-1.219032463586412659e-05, +-1.217732826789645098e-05, +-1.216431351800857098e-05, +-1.215128040940992964e-05, +-1.213822896533736648e-05, +-1.212515920905552906e-05, +-1.211207116385467588e-05, +-1.209896485305394752e-05, +-1.208584029999913565e-05, +-1.207269752806322844e-05, +-1.205953656064670030e-05, +-1.204635742117560264e-05, +-1.203316013310460979e-05, +-1.201994471991476256e-05, +-1.200671120511407295e-05, +-1.199345961223753435e-05, +-1.198018996484740278e-05, +-1.196690228653123680e-05, +-1.195359660090488249e-05, +-1.194027293161049477e-05, +-1.192693130231678645e-05, +-1.191357173671977527e-05, +-1.190019425854036481e-05, +-1.188679889152779021e-05, +-1.187338565945707197e-05, +-1.185995458612991216e-05, +-1.184650569537425389e-05, +-1.183303901104517755e-05, +-1.181955455702230544e-05, +-1.180605235721329327e-05, +-1.179253243555161431e-05, +-1.177899481599684061e-05, +-1.176543952253476159e-05, +-1.175186657917789903e-05, +-1.173827600996318618e-05, +-1.172466783895528478e-05, +-1.171104209024432854e-05, +-1.169739878794646017e-05, +-1.168373795620431926e-05, +-1.167005961918464686e-05, +-1.165636380108127555e-05, +-1.164265052611556137e-05, +-1.162891981853108654e-05, +-1.161517170259958861e-05, +-1.160140620261841097e-05, +-1.158762334290879181e-05, +-1.157382314781935217e-05, +-1.156000564172368027e-05, +-1.154617084902083628e-05, +-1.153231879413539471e-05, +-1.151844950151790179e-05, +-1.150456299564197522e-05, +-1.149065930101072303e-05, +-1.147673844214834603e-05, +-1.146280044360666849e-05, +-1.144884532996284943e-05, +-1.143487312581728538e-05, +-1.142088385579676978e-05, +-1.140687754455497585e-05, +-1.139285421676699654e-05, +-1.137881389713535345e-05, +-1.136475661038750482e-05, +-1.135068238127341964e-05, +-1.133659123457217942e-05, +-1.132248319508340960e-05, +-1.130835828763404058e-05, +-1.129421653707552438e-05, +-1.128005796828253356e-05, +-1.126588260615530074e-05, +-1.125169047562065371e-05, +-1.123748160162627080e-05, +-1.122325600914683545e-05, +-1.120901372318148663e-05, +-1.119475476875138279e-05, +-1.118047917090566327e-05, +-1.116618695471610519e-05, +-1.115187814527751312e-05, +-1.113755276771071927e-05, +-1.112321084716030325e-05, +-1.110885240879491904e-05, +-1.109447747780801498e-05, +-1.108008607941518084e-05, +-1.106567823885810180e-05, +-1.105125398140228327e-05, +-1.103681333233478429e-05, +-1.102235631697029070e-05, +-1.100788296064553155e-05, +-1.099339328871968564e-05, +-1.097888732657773239e-05, +-1.096436509962771762e-05, +-1.094982663330135327e-05, +-1.093527195305467804e-05, +-1.092070108436540622e-05, +-1.090611405273670374e-05, +-1.089151088369463183e-05, +-1.087689160278873995e-05, +-1.086225623559196922e-05, +-1.084760480770137069e-05, +-1.083293734473534066e-05, +-1.081825387233746618e-05, +-1.080355441617402802e-05, +-1.078883900193446651e-05, +-1.077410765533139680e-05, +-1.075936040210115944e-05, +-1.074459726800132333e-05, +-1.072981827881433809e-05, +-1.071502346034502689e-05, +-1.070021283842115054e-05, +-1.068538643889401230e-05, +-1.067054428763581848e-05, +-1.065568641054355114e-05, +-1.064081283353623719e-05, +-1.062592358255573618e-05, +-1.061101868356648106e-05, +-1.059609816255619653e-05, +-1.058116204553326301e-05, +-1.056621035853059101e-05, +-1.055124312760282587e-05, +-1.053626037882711187e-05, +-1.052126213830307013e-05, +-1.050624843215325433e-05, +-1.049121928652053341e-05, +-1.047617472757210646e-05, +-1.046111478149667538e-05, +-1.044603947450513939e-05, +-1.043094883283112530e-05, +-1.041584288272854298e-05, +-1.040072165047451440e-05, +-1.038558516237011898e-05, +-1.037043344473451864e-05, +-1.035526652391140871e-05, +-1.034008442626628720e-05, +-1.032488717818452856e-05, +-1.030967480607523096e-05, +-1.029444733636866499e-05, +-1.027920479551661250e-05, +-1.026394720999259867e-05, +-1.024867460629236805e-05, +-1.023338701093055403e-05, +-1.021808445044794975e-05, +-1.020276695140209251e-05, +-1.018743454037473458e-05, +-1.017208724396877189e-05, +-1.015672508880659903e-05, +-1.014134810153312984e-05, +-1.012595630881650717e-05, +-1.011054973734203817e-05, +-1.009512841381889426e-05, +-1.007969236497718048e-05, +-1.006424161756563824e-05, +-1.004877619835841319e-05, +-1.003329613414600041e-05, +-1.001780145174258479e-05, +-1.000229217798306965e-05, +-9.986768339721211564e-06, +-9.971229963832828929e-06, +-9.955677077216567683e-06, +-9.940109706787641724e-06, +-9.924527879484592240e-06, +-9.908931622266556872e-06, +-9.893320962110447399e-06, +-9.877695926017807318e-06, +-9.862056541008526863e-06, +-9.846402834121557892e-06, +-9.830734832418237655e-06, +-9.815052562979539316e-06, +-9.799356052906646247e-06, +-9.783645329321631346e-06, +-9.767920419364778720e-06, +-9.752181350198451236e-06, +-9.736428149005016985e-06, +-9.720660842984359007e-06, +-9.704879459360175517e-06, +-9.689084025374233641e-06, +-9.673274568286692975e-06, +-9.657451115379697010e-06, +-9.641613693954430536e-06, +-9.625762331331843012e-06, +-9.609897054853283838e-06, +-9.594017891877656322e-06, +-9.578124869785552902e-06, +-9.562218015976480258e-06, +-9.546297357869313328e-06, +-9.530362922902554495e-06, +-9.514414738534713063e-06, +-9.498452832241609993e-06, +-9.482477231520497875e-06, +-9.466487963887177626e-06, +-9.450485056876699834e-06, +-9.434468538043258031e-06, +-9.418438434960949330e-06, +-9.402394775220772539e-06, +-9.386337586434932782e-06, +-9.370266896233927709e-06, +-9.354182732267165825e-06, +-9.338085122203667836e-06, +-9.321974093729190128e-06, +-9.305849674550412492e-06, +-9.289711892392088708e-06, +-9.273560774997658104e-06, +-9.257396350129237084e-06, +-9.241218645568225604e-06, +-9.225027689112522128e-06, +-9.208823508580682560e-06, +-9.192606131808930215e-06, +-9.176375586651990999e-06, +-9.160131900982976513e-06, +-9.143875102694004083e-06, +-9.127605219693360895e-06, +-9.111322279909720524e-06, +-9.095026311289169848e-06, +-9.078717341796005259e-06, +-9.062395399413315423e-06, +-9.046060512140042072e-06, +-9.029712707994654440e-06, +-9.013352015015591406e-06, +-8.996978461255039194e-06, +-8.980592074785787260e-06, +-8.964192883698458489e-06, +-8.947780916099354348e-06, +-8.931356200114556215e-06, +-8.914918763887150503e-06, +-8.898468635577789395e-06, +-8.882005843365448089e-06, +-8.865530415444472043e-06, +-8.849042380028109104e-06, +-8.832541765349144778e-06, +-8.816028599653469869e-06, +-8.799502911207202324e-06, +-8.782964728293695517e-06, +-8.766414079211420668e-06, +-8.749850992277434592e-06, +-8.733275495828111539e-06, +-8.716687618212582073e-06, +-8.700087387799910834e-06, +-8.683474832976138694e-06, +-8.666849982141363885e-06, +-8.650212863717727824e-06, +-8.633563506138994915e-06, +-8.616901937858765378e-06, +-8.600228187347327678e-06, +-8.583542283088771833e-06, +-8.566844253588204444e-06, +-8.550134127365199434e-06, +-8.533411932954352007e-06, +-8.516677698909041173e-06, +-8.499931453799071602e-06, +-8.483173226207729340e-06, +-8.466403044739776110e-06, +-8.449620938011205288e-06, +-8.432826934657198937e-06, +-8.416021063328372057e-06, +-8.399203352691606074e-06, +-8.382373831429818436e-06, +-8.365532528242792715e-06, +-8.348679471844134366e-06, +-8.331814690965548242e-06, +-8.314938214354778613e-06, +-8.298050070772453122e-06, +-8.281150288999424862e-06, +-8.264238897830209569e-06, +-8.247315926073473511e-06, +-8.230381402555858689e-06, +-8.213435356118874226e-06, +-8.196477815619616347e-06, +-8.179508809931459554e-06, +-8.162528367941080155e-06, +-8.145536518552765968e-06, +-8.128533290686263161e-06, +-8.111518713273659174e-06, +-8.094492815266741737e-06, +-8.077455625630402180e-06, +-8.060407173343230052e-06, +-8.043347487401096067e-06, +-8.026276596814378917e-06, +-8.009194530608414205e-06, +-7.992101317823548651e-06, +-7.974996987515826189e-06, +-7.957881568753994553e-06, +-7.940755090623850557e-06, +-7.923617582225287337e-06, +-7.906469072672914379e-06, +-7.889309591096845261e-06, +-7.872139166639543299e-06, +-7.854957828460434495e-06, +-7.837765605732621040e-06, +-7.820562527643804590e-06, +-7.803348623396154119e-06, +-7.786123922206951366e-06, +-7.768888453305626215e-06, +-7.751642245938162963e-06, +-7.734385329364057776e-06, +-7.717117732857047138e-06, +-7.699839485705746512e-06, +-7.682550617210682343e-06, +-7.665251156688606833e-06, +-7.647941133469707826e-06, +-7.630620576897989964e-06, +-7.613289516331454263e-06, +-7.595947981142700351e-06, +-7.578596000715881386e-06, +-7.561233604450450482e-06, +-7.543860821761846806e-06, +-7.526477682074632917e-06, +-7.509084214830054533e-06, +-7.491680449482868398e-06, +-7.474266415499176412e-06, +-7.456842142360748045e-06, +-7.439407659562053180e-06, +-7.421962996610933807e-06, +-7.404508183029306216e-06, +-7.387043248350119303e-06, +-7.369568222121031535e-06, +-7.352083133905201238e-06, +-7.334588013274298570e-06, +-7.317082889816176255e-06, +-7.299567793131652548e-06, +-7.282042752832284391e-06, +-7.264507798544820258e-06, +-7.246962959908168632e-06, +-7.229408266574006169e-06, +-7.211843748206841225e-06, +-7.194269434484654218e-06, +-7.176685355095036000e-06, +-7.159091539743607368e-06, +-7.141488018143163487e-06, +-7.123874820022123891e-06, +-7.106251975121377287e-06, +-7.088619513191195814e-06, +-7.070977463998792267e-06, +-7.053325857321489630e-06, +-7.035664722947261476e-06, +-7.017994090678682534e-06, +-7.000313990330496854e-06, +-6.982624451726483787e-06, +-6.964925504707918997e-06, +-6.947217179122732438e-06, +-6.929499504833862643e-06, +-6.911772511715459469e-06, +-6.894036229653536320e-06, +-6.876290688545939649e-06, +-6.858535918303089266e-06, +-6.840771948844804506e-06, +-6.822998810104893452e-06, +-6.805216532028820209e-06, +-6.787425144570509894e-06, +-6.769624677700104915e-06, +-6.751815161396856675e-06, +-6.733996625649964976e-06, +-6.716169100462281252e-06, +-6.698332615847205884e-06, +-6.680487201829464086e-06, +-6.662632888445764044e-06, +-6.644769705741702710e-06, +-6.626897683776249144e-06, +-6.609016852619560018e-06, +-6.591127242349638916e-06, +-6.573228883060164614e-06, +-6.555321804853446308e-06, +-6.537406037841032629e-06, +-6.519481612147705401e-06, +-6.501548557908216031e-06, +-6.483606905268063921e-06, +-6.465656684383432105e-06, +-6.447697925421871644e-06, +-6.429730658559221814e-06, +-6.411754913984162915e-06, +-6.393770721895073770e-06, +-6.375778112500751711e-06, +-6.357777116021183373e-06, +-6.339767762684301406e-06, +-6.321750082730714312e-06, +-6.303724106410380138e-06, +-6.285689863983524669e-06, +-6.267647385720439825e-06, +-6.249596701902329007e-06, +-6.231537842818016372e-06, +-6.213470838768648711e-06, +-6.195395720064571593e-06, +-6.177312517025962098e-06, +-6.159221259983576749e-06, +-6.141121979275642052e-06, +-6.123014705252440331e-06, +-6.104899468273122348e-06, +-6.086776298706474710e-06, +-6.068645226930876672e-06, +-6.050506283334953200e-06, +-6.032359498314485842e-06, +-6.014204902276219292e-06, +-5.996042525638672851e-06, +-5.977872398824889821e-06, +-5.959694552270385219e-06, +-5.941509016419855896e-06, +-5.923315821724818168e-06, +-5.905114998648260566e-06, +-5.886906577661457295e-06, +-5.868690589244650098e-06, +-5.850467063887917312e-06, +-5.832236032087794208e-06, +-5.813997524351249806e-06, +-5.795751571196568642e-06, +-5.777498203145894330e-06, +-5.759237450733317041e-06, +-5.740969344501588703e-06, +-5.722693914999655596e-06, +-5.704411192787405124e-06, +-5.686121208432467420e-06, +-5.667823992510931089e-06, +-5.649519575607235631e-06, +-5.631207988315026103e-06, +-5.612889261232999264e-06, +-5.594563424973777098e-06, +-5.576230510152500660e-06, +-5.557890547395717156e-06, +-5.539543567338062953e-06, +-5.521189600618984719e-06, +-5.502828677890792165e-06, +-5.484460829811292246e-06, +-5.466086087044599771e-06, +-5.447704480265077799e-06, +-5.429316040154899882e-06, +-5.410920797400712753e-06, +-5.392518782702581839e-06, +-5.374110026762486016e-06, +-5.355694560293281757e-06, +-5.337272414015328553e-06, +-5.318843618653254092e-06, +-5.300408204943968890e-06, +-5.281966203629366555e-06, +-5.263517645457020901e-06, +-5.245062561184284733e-06, +-5.226600981575676759e-06, +-5.208132937399664552e-06, +-5.189658459436762189e-06, +-5.171177578472089911e-06, +-5.152690325296194054e-06, +-5.134196730708995911e-06, +-5.115696825516609437e-06, +-5.097190640531979906e-06, +-5.078678206575674193e-06, +-5.060159554472620548e-06, +-5.041634715056925669e-06, +-5.023103719169326828e-06, +-5.004566597653985850e-06, +-4.986023381366467320e-06, +-4.967474101166459178e-06, +-4.948918787918446958e-06, +-4.930357472495810041e-06, +-4.911790185777469097e-06, +-4.893216958648654345e-06, +-4.874637822001692445e-06, +-4.856052806732664108e-06, +-4.837461943746286393e-06, +-4.818865263952543209e-06, +-4.800262798267494232e-06, +-4.781654577613215616e-06, +-4.763040632918530975e-06, +-4.744420995115756243e-06, +-4.725795695145494723e-06, +-4.707164763953348061e-06, +-4.688528232490669254e-06, +-4.669886131714525386e-06, +-4.651238492588434543e-06, +-4.632585346079081866e-06, +-4.613926723161163736e-06, +-4.595262654814005565e-06, +-4.576593172022442720e-06, +-4.557918305777518468e-06, +-4.539238087073128884e-06, +-4.520552546910959359e-06, +-4.501861716297110019e-06, +-4.483165626242848738e-06, +-4.464464307764628926e-06, +-4.445757791884779860e-06, +-4.427046109628251537e-06, +-4.408329292027375848e-06, +-4.389607370118670718e-06, +-4.370880374943509266e-06, +-4.352148337548092700e-06, +-4.333411288984249913e-06, +-4.314669260306040883e-06, +-4.295922282574722829e-06, +-4.277170386855340052e-06, +-4.258413604217499821e-06, +-4.239651965736175357e-06, +-4.220885502488355821e-06, +-4.202114245557088354e-06, +-4.183338226032281061e-06, +-4.164557475003193224e-06, +-4.145772023566700642e-06, +-4.126981902823866846e-06, +-4.108187143876631198e-06, +-4.089387777836839960e-06, +-4.070583835814608056e-06, +-4.051775348927395881e-06, +-4.032962348296606768e-06, +-4.014144865045103488e-06, +-3.995322930301242668e-06, +-3.976496575199703187e-06, +-3.957665830873928105e-06, +-3.938830728464401868e-06, +-3.919991299115261324e-06, +-3.901147573970933856e-06, +-3.882299584184377317e-06, +-3.863447360909602419e-06, +-3.844590935302351211e-06, +-3.825730338524319537e-06, +-3.806865601740498621e-06, +-3.787996756115911876e-06, +-3.769123832824609968e-06, +-3.750246863038038937e-06, +-3.731365877934130976e-06, +-3.712480908693890469e-06, +-3.693591986498049900e-06, +-3.674699142535337324e-06, +-3.655802407994910238e-06, +-3.636901814067164926e-06, +-3.617997391947818735e-06, +-3.599089172835420639e-06, +-3.580177187927874600e-06, +-3.561261468431629871e-06, +-3.542342045549938154e-06, +-3.523418950491963443e-06, +-3.504492214468571844e-06, +-3.485561868693126516e-06, +-3.466627944381384333e-06, +-3.447690472752367905e-06, +-3.428749485024888931e-06, +-3.409805012422538491e-06, +-3.390857086171162047e-06, +-3.371905737495414977e-06, +-3.352950997627110935e-06, +-3.333992897797609989e-06, +-3.315031469238630927e-06, +-3.296066743186380115e-06, +-3.277098750878136687e-06, +-3.258127523553056803e-06, +-3.239153092452943176e-06, +-3.220175488818852708e-06, +-3.201194743896084241e-06, +-3.182210888930743840e-06, +-3.163223955170582084e-06, +-3.144233973864871247e-06, +-3.125240976265262918e-06, +-3.106244993622348624e-06, +-3.087246057190624292e-06, +-3.068244198225132185e-06, +-3.049239447982212218e-06, +-3.030231837719449870e-06, +-3.011221398696496958e-06, +-2.992208162171611503e-06, +-2.973192159406691653e-06, +-2.954173421663854937e-06, +-2.935151980206190005e-06, +-2.916127866298604090e-06, +-2.897101111204371767e-06, +-2.878071746190130332e-06, +-2.859039802522484895e-06, +-2.840005311468774095e-06, +-2.820968304297037067e-06, +-2.801928812276798220e-06, +-2.782886866675634633e-06, +-2.763842498764207009e-06, +-2.744795739812833002e-06, +-2.725746621092241078e-06, +-2.706695173873566702e-06, +-2.687641429429131607e-06, +-2.668585419028984516e-06, +-2.649527173945965970e-06, +-2.630466725452242697e-06, +-2.611404104820134737e-06, +-2.592339343322869726e-06, +-2.573272472231179941e-06, +-2.554203522817462927e-06, +-2.535132526356573469e-06, +-2.516059514118200301e-06, +-2.496984517375217421e-06, +-2.477907567400265896e-06, +-2.458828695462363608e-06, +-2.439747932836098951e-06, +-2.420665310789774066e-06, +-2.401580860594629449e-06, +-2.382494613521452858e-06, +-2.363406600837939532e-06, +-2.344316853812918467e-06, +-2.325225403717113893e-06, +-2.306132281815494450e-06, +-2.287037519375685499e-06, +-2.267941147664514072e-06, +-2.248843197944601682e-06, +-2.229743701482762231e-06, +-2.210642689542319423e-06, +-2.191540193383941090e-06, +-2.172436244269773982e-06, +-2.153330873460891660e-06, +-2.134224112213834364e-06, +-2.115115991789876401e-06, +-2.096006543443134649e-06, +-2.076895798429804608e-06, +-2.057783788004752355e-06, +-2.038670543418059505e-06, +-2.019556095923454148e-06, +-2.000440476770608358e-06, +-1.981323717205964895e-06, +-1.962205848476912232e-06, +-1.943086901829195597e-06, +-1.923966908503455575e-06, +-1.904845899744542927e-06, +-1.885723906789552347e-06, +-1.866600960877134527e-06, +-1.847477093243182008e-06, +-1.828352335121634921e-06, +-1.809226717744436939e-06, +-1.790100272342330645e-06, +-1.770973030141397607e-06, +-1.751845022368120256e-06, +-1.732716280245925560e-06, +-1.713586834995983145e-06, +-1.694456717837152992e-06, +-1.675325959986796890e-06, +-1.656194592657318522e-06, +-1.637062647061197167e-06, +-1.617930154407579879e-06, +-1.598797145903033223e-06, +-1.579663652752374644e-06, +-1.560529706155206615e-06, +-1.541395337310973851e-06, +-1.522260577415501480e-06, +-1.503125457661818154e-06, +-1.483990009240077905e-06, +-1.464854263338375630e-06, +-1.445718251139289075e-06, +-1.426582003824936048e-06, +-1.407445552573522334e-06, +-1.388308928560130710e-06, +-1.369172162956685576e-06, +-1.350035286932736466e-06, +-1.330898331652036030e-06, +-1.311761328277547486e-06, +-1.292624307968030012e-06, +-1.273487301878820142e-06, +-1.254350341162641521e-06, +-1.235213456966142877e-06, +-1.216076680434956072e-06, +-1.196940042710247413e-06, +-1.177803574929514494e-06, +-1.158667308226532199e-06, +-1.139531273732156538e-06, +-1.120395502570863244e-06, +-1.101260025865826160e-06, +-1.082124874735433607e-06, +-1.062990080294107882e-06, +-1.043855673653101053e-06, +-1.024721685917041390e-06, +-1.005588148188983796e-06, +-9.864550915669659903e-07, +-9.673225471447930662e-07, +-9.481905460120108124e-07, +-9.290591192546811710e-07, +-9.099282979519512249e-07, +-8.907981131802373284e-07, +-8.716685960140387888e-07, +-8.525397775182270072e-07, +-8.334116887565044796e-07, +-8.142843607879415961e-07, +-7.951578246635437227e-07, +-7.760321114355397647e-07, +-7.569072521454330725e-07, +-7.377832778332997459e-07, +-7.186602195343525394e-07, +-6.995381082763179184e-07, +-6.804169750836514247e-07, +-6.612968509783430990e-07, +-6.421777669721948697e-07, +-6.230597540752967057e-07, +-6.039428432925581223e-07, +-5.848270656202625575e-07, +-5.657124520553773221e-07, +-5.465990335835871424e-07, +-5.274868411886084519e-07, +-5.083759058478814874e-07, +-4.892662585342252859e-07, +-4.701579302115300983e-07, +-4.510509518440708344e-07, +-4.319453543845419810e-07, +-4.128411687833668652e-07, +-3.937384259852495947e-07, +-3.746371569257147162e-07, +-3.555373925395706631e-07, +-3.364391637532044027e-07, +-3.173425014853734646e-07, +-2.982474366514203533e-07, +-2.791540001606645339e-07, +-2.600622229129513550e-07, +-2.409721358079618937e-07, +-2.218837697332491711e-07, +-2.027971555735517033e-07, +-1.837123242073369977e-07, +-1.646293065033496296e-07, +-1.455481333290705862e-07, +-1.264688355430099024e-07, +-1.073914439955072656e-07, +-8.831598953293726969e-08, +-6.924250299425723948e-08, +-5.017101521180685639e-08, +-3.110155701125930183e-08, +-1.203415921242303342e-08, + 7.031147374210699765e-09, + 2.609433194241368940e-08, + 4.515536369367250653e-08, + 6.421421183638737719e-08, + 8.327084558507137062e-08, + 1.023252341638006209e-07, + 1.213773468011628044e-07, + 1.404271527337061986e-07, + 1.594746212051408633e-07, + 1.785197214663856649e-07, + 1.975624227747683856e-07, + 2.166026943974774888e-07, + 2.356405056065061528e-07, + 2.546758256821069477e-07, + 2.737086239119878954e-07, + 2.927388695905124996e-07, + 3.117665320221488112e-07, + 3.307915805164190739e-07, + 3.498139843913469892e-07, + 3.688337129726621410e-07, + 3.878507355938426115e-07, + 4.068650215953185590e-07, + 4.258765403279166772e-07, + 4.448852611478156371e-07, + 4.638911534199916060e-07, + 4.828941865174139363e-07, + 5.018943298211028168e-07, + 5.208915527193223150e-07, + 5.398858246110250485e-07, + 5.588771149008119679e-07, + 5.778653930023735347e-07, + 5.968506283376925569e-07, + 6.158327903362381313e-07, + 6.348118484384232326e-07, + 6.537877720913898764e-07, + 6.727605307482269913e-07, + 6.917300938756484539e-07, + 7.106964309455566415e-07, + 7.296595114384908084e-07, + 7.486193048462106429e-07, + 7.675757806666630911e-07, + 7.865289084074281932e-07, + 8.054786575849066728e-07, + 8.244249977243745706e-07, + 8.433678983591948686e-07, + 8.623073290350844182e-07, + 8.812432593008532237e-07, + 9.001756587203141484e-07, + 9.191044968630122454e-07, + 9.380297433076623348e-07, + 9.569513676447316067e-07, + 9.758693394722586674e-07, + 9.947836283950594453e-07, + 1.013694204032394428e-06, + 1.032601036009541635e-06, + 1.051504093961237695e-06, + 1.070403347535122932e-06, + 1.089298766382461915e-06, + 1.108190320170046174e-06, + 1.127077978570939728e-06, + 1.145961711268749193e-06, + 1.164841487955990065e-06, + 1.183717278338351321e-06, + 1.202589052125458735e-06, + 1.221456779042743502e-06, + 1.240320428822198361e-06, + 1.259179971205810190e-06, + 1.278035375948983718e-06, + 1.296886612812136202e-06, + 1.315733651568368583e-06, + 1.334576462002639838e-06, + 1.353415013907613770e-06, + 1.372249277086236524e-06, + 1.391079221355149499e-06, + 1.409904816535470875e-06, + 1.428726032464647085e-06, + 1.447542838987220793e-06, + 1.466355205958251212e-06, + 1.485163103246746070e-06, + 1.503966500727267090e-06, + 1.522765368287567899e-06, + 1.541559675827794427e-06, + 1.560349393256336563e-06, + 1.579134490493218194e-06, + 1.597914937469330006e-06, + 1.616690704126464420e-06, + 1.635461760416522562e-06, + 1.654228076304919969e-06, + 1.672989621765601161e-06, + 1.691746366784453191e-06, + 1.710498281358489101e-06, + 1.729245335495086862e-06, + 1.747987499215361837e-06, + 1.766724742549212910e-06, + 1.785457035538710618e-06, + 1.804184348237287806e-06, + 1.822906650709820102e-06, + 1.841623913031814878e-06, + 1.860336105292813784e-06, + 1.879043197591412618e-06, + 1.897745160038671477e-06, + 1.916441962757313891e-06, + 1.935133575880921719e-06, + 1.953819969557370286e-06, + 1.972501113943811413e-06, + 1.991176979210105378e-06, + 2.009847535537990402e-06, + 2.028512753121179212e-06, + 2.047172602164527676e-06, + 2.065827052887449617e-06, + 2.084476075518943038e-06, + 2.103119640300967237e-06, + 2.121757717487672435e-06, + 2.140390277345455680e-06, + 2.159017290152131176e-06, + 2.177638726200367544e-06, + 2.196254555792685668e-06, + 2.214864749244868851e-06, + 2.233469276885168722e-06, + 2.252068109053502669e-06, + 2.270661216104877974e-06, + 2.289248568405214667e-06, + 2.307830136330597175e-06, + 2.326405890274819686e-06, + 2.344975800641086928e-06, + 2.363539837845387895e-06, + 2.382097972319065748e-06, + 2.400650174503854626e-06, + 2.419196414855246175e-06, + 2.437736663841717903e-06, + 2.456270891944786969e-06, + 2.474799069658208461e-06, + 2.493321167492172875e-06, + 2.511837155964237771e-06, + 2.530347005610993119e-06, + 2.548850686978942987e-06, + 2.567348170627929243e-06, + 2.585839427133641747e-06, + 2.604324427083486090e-06, + 2.622803141075833555e-06, + 2.641275539727549965e-06, + 2.659741593665696032e-06, + 2.678201273530933697e-06, + 2.696654549980871493e-06, + 2.715101393680997897e-06, + 2.733541775316335662e-06, + 2.751975665582344258e-06, + 2.770403035188315624e-06, + 2.788823854859901719e-06, + 2.807238095334986504e-06, + 2.825645727362946059e-06, + 2.844046721712098663e-06, + 2.862441049161556759e-06, + 2.880828680504463043e-06, + 2.899209586551458642e-06, + 2.917583738122383460e-06, + 2.935951106053803762e-06, + 2.954311661198206642e-06, + 2.972665374419936810e-06, + 2.991012216598539406e-06, + 3.009352158627964635e-06, + 3.027685171415811790e-06, + 3.046011225886649624e-06, + 3.064330292977133626e-06, + 3.082642343638530602e-06, + 3.100947348840023801e-06, + 3.119245279560578431e-06, + 3.137536106796345151e-06, + 3.155819801559911718e-06, + 3.174096334876218596e-06, + 3.192365677785916165e-06, + 3.210627801344555388e-06, + 3.228882676621853432e-06, + 3.247130274704966597e-06, + 3.265370566693702896e-06, + 3.283603523703739923e-06, + 3.301829116865918860e-06, + 3.320047317326279198e-06, + 3.338258096245268883e-06, + 3.356461424801079932e-06, + 3.374657274184782648e-06, + 3.392845615603633714e-06, + 3.411026420280316397e-06, + 3.429199659452960036e-06, + 3.447365304374392107e-06, + 3.465523326315468336e-06, + 3.483673696560157790e-06, + 3.501816386408911103e-06, + 3.519951367177863419e-06, + 3.538078610198072906e-06, + 3.556198086818830118e-06, + 3.574309768402783318e-06, + 3.592413626329274096e-06, + 3.610509631993559787e-06, + 3.628597756806868114e-06, + 3.646677972195595038e-06, + 3.664750249604645039e-06, + 3.682814560492558134e-06, + 3.700870876334857350e-06, + 3.718919168623202113e-06, + 3.736959408865512767e-06, + 3.754991568585161230e-06, + 3.773015619324260447e-06, + 3.791031532638871879e-06, + 3.809039280102275049e-06, + 3.827038833304157353e-06, + 3.845030163849940675e-06, + 3.863013243364004764e-06, + 3.880988043485665525e-06, + 3.898954535868462241e-06, + 3.916912692187453067e-06, + 3.934862484131207179e-06, + 3.952803883404996398e-06, + 3.970736861733385413e-06, + 3.988661390855313908e-06, + 4.006577442527451664e-06, + 4.024484988523404883e-06, + 4.042384000632915745e-06, + 4.060274450665256470e-06, + 4.078156310445075466e-06, + 4.096029551811742574e-06, + 4.113894146626635244e-06, + 4.131750066765101042e-06, + 4.149597284119722113e-06, + 4.167435770602809693e-06, + 4.185265498142373079e-06, + 4.203086438681409817e-06, + 4.220898564185152068e-06, + 4.238701846633081627e-06, + 4.256496258022183379e-06, + 4.274281770370216539e-06, + 4.292058355706919909e-06, + 4.309825986085264710e-06, + 4.327584633572737766e-06, + 4.345334270254522963e-06, + 4.363074868235999144e-06, + 4.380806399638732800e-06, + 4.398528836599752160e-06, + 4.416242151278805420e-06, + 4.433946315850365594e-06, + 4.451641302506911925e-06, + 4.469327083462144371e-06, + 4.487003630942228674e-06, + 4.504670917197059357e-06, + 4.522328914491496322e-06, + 4.539977595109382325e-06, + 4.557616931352843328e-06, + 4.575246895542246150e-06, + 4.592867460015531848e-06, + 4.610478597131394631e-06, + 4.628080279264584221e-06, + 4.645672478808263989e-06, + 4.663255168177314380e-06, + 4.680828319800380130e-06, + 4.698391906127115775e-06, + 4.715945899627353026e-06, + 4.733490272787253541e-06, + 4.751024998112465819e-06, + 4.768550048127428089e-06, + 4.786065395374545845e-06, + 4.803571012417501201e-06, + 4.821066871836465459e-06, + 4.838552946231306829e-06, + 4.856029208220944984e-06, + 4.873495630443232477e-06, + 4.890952185554353348e-06, + 4.908398846231934279e-06, + 4.925835585170368118e-06, + 4.943262375084072422e-06, + 4.960679188706628019e-06, + 4.978085998790941643e-06, + 4.995482778108434472e-06, + 5.012869499452243917e-06, + 5.030246135632535290e-06, + 5.047612659479707829e-06, + 5.064969043843634903e-06, + 5.082315261592921169e-06, + 5.099651285618169579e-06, + 5.116977088827140580e-06, + 5.134292644148084349e-06, + 5.151597924528921710e-06, + 5.168892902937314433e-06, + 5.186177552359940182e-06, + 5.203451845805602812e-06, + 5.220715756300638916e-06, + 5.237969256892099275e-06, + 5.255212320646936558e-06, + 5.272444920652109505e-06, + 5.289667030013792645e-06, + 5.306878621860636526e-06, + 5.324079669338989603e-06, + 5.341270145616174561e-06, + 5.358450023879703961e-06, + 5.375619277336540782e-06, + 5.392777879216257009e-06, + 5.409925802767191485e-06, + 5.427063021255704529e-06, + 5.444189507973215081e-06, + 5.461305236228500328e-06, + 5.478410179350778902e-06, + 5.495504310692186761e-06, + 5.512587603623039728e-06, + 5.529660031535043751e-06, + 5.546721567840579158e-06, + 5.563772185971912916e-06, + 5.580811859384388557e-06, + 5.597840561552542535e-06, + 5.614858265969452852e-06, + 5.631864946153614430e-06, + 5.648860575641403902e-06, + 5.665845127990072182e-06, + 5.682818576780182226e-06, + 5.699780895611775356e-06, + 5.716732058103625878e-06, + 5.733672037900238416e-06, + 5.750600808664183114e-06, + 5.767518344079174598e-06, + 5.784424617853255976e-06, + 5.801319603710319189e-06, + 5.818203275400974983e-06, + 5.835075606694057174e-06, + 5.851936571379788853e-06, + 5.868786143272928266e-06, + 5.885624296205049806e-06, + 5.902451004031532031e-06, + 5.919266240630837691e-06, + 5.936069979900726636e-06, + 5.952862195760525026e-06, + 5.969642862154350827e-06, + 5.986411953042629930e-06, + 6.003169442412900056e-06, + 6.019915304271415814e-06, + 6.036649512647024722e-06, + 6.053372041590409962e-06, + 6.070082865174188632e-06, + 6.086781957492142645e-06, + 6.103469292662325639e-06, + 6.120144844822534747e-06, + 6.136808588132609439e-06, + 6.153460496777536744e-06, + 6.170100544959911816e-06, + 6.186728706906728590e-06, + 6.203344956868786015e-06, + 6.219949269116809492e-06, + 6.236541617944618774e-06, + 6.253121977668369873e-06, + 6.269690322625826612e-06, + 6.286246627179420106e-06, + 6.302790865711791678e-06, + 6.319323012628089162e-06, + 6.335843042358977260e-06, + 6.352350929353210757e-06, + 6.368846648084402314e-06, + 6.385330173050298254e-06, + 6.401801478769110064e-06, + 6.418260539782522207e-06, + 6.434707330654960287e-06, + 6.451141825973710481e-06, + 6.467564000348087750e-06, + 6.483973828412619839e-06, + 6.500371284822448734e-06, + 6.516756344256461296e-06, + 6.533128981416527776e-06, + 6.549489171026800476e-06, + 6.565836887836791862e-06, + 6.582172106616864966e-06, + 6.598494802161280158e-06, + 6.614804949287510748e-06, + 6.631102522836238746e-06, + 6.647387497670696723e-06, + 6.663659848679672233e-06, + 6.679919550773003292e-06, + 6.696166578884733577e-06, + 6.712400907972286569e-06, + 6.728622513015814184e-06, + 6.744831369021225762e-06, + 6.761027451015697946e-06, + 6.777210734050766355e-06, + 6.793381193201537839e-06, + 6.809538803566812452e-06, + 6.825683540268322822e-06, + 6.841815378453748733e-06, + 6.857934293293076585e-06, + 6.874040259977883646e-06, + 6.890133253727964393e-06, + 6.906213249784114638e-06, + 6.922280223411008899e-06, + 6.938334149899460284e-06, + 6.954375004562154832e-06, + 6.970402762736472980e-06, + 6.986417399783876314e-06, + 7.002418891089220620e-06, + 7.018407212063655283e-06, + 7.034382338141112333e-06, + 7.050344244777490751e-06, + 7.066292907457357350e-06, + 7.082228301686664829e-06, + 7.098150402995661334e-06, + 7.114059186941170670e-06, + 7.129954629102236010e-06, + 7.145836705083063333e-06, + 7.161705390512327710e-06, + 7.177560661043218188e-06, + 7.193402492352788123e-06, + 7.209230860145552526e-06, + 7.225045740145592020e-06, + 7.240847108106673193e-06, + 7.256634939804418626e-06, + 7.272409211039201201e-06, + 7.288169897638984202e-06, + 7.303916975452277395e-06, + 7.319650420354594802e-06, + 7.335370208247716935e-06, + 7.351076315056261164e-06, + 7.366768716729745086e-06, + 7.382447389245575702e-06, + 7.398112308601163547e-06, + 7.413763450823972729e-06, + 7.429400791963778207e-06, + 7.445024308096123372e-06, + 7.460633975321782189e-06, + 7.476229769766728698e-06, + 7.491811667581425512e-06, + 7.507379644943824846e-06, + 7.522933678054979201e-06, + 7.538473743141409666e-06, + 7.553999816457763901e-06, + 7.569511874279905205e-06, + 7.585009892911263563e-06, + 7.600493848682208841e-06, + 7.615963717946494100e-06, + 7.631419477084193945e-06, + 7.646861102500904936e-06, + 7.662288570627273781e-06, + 7.677701857921613829e-06, + 7.693100940865946877e-06, + 7.708485795967966601e-06, + 7.723856399763972671e-06, + 7.739212728811916612e-06, + 7.754554759697632584e-06, + 7.769882469034329153e-06, + 7.785195833458960610e-06, + 7.800494829635218685e-06, + 7.815779434252693992e-06, + 7.831049624026371187e-06, + 7.846305375699381835e-06, + 7.861546666038859025e-06, + 7.876773471838776627e-06, + 7.891985769919275051e-06, + 7.907183537126705297e-06, + 7.922366750332900502e-06, + 7.937535386438145641e-06, + 7.952689422366905091e-06, + 7.967828835070655109e-06, + 7.982953601527280747e-06, + 7.998063698741099566e-06, + 8.013159103742141658e-06, + 8.028239793589009234e-06, + 8.043305745364748177e-06, + 8.058356936179658506e-06, + 8.073393343170581169e-06, + 8.088414943500320367e-06, + 8.103421714360421825e-06, + 8.118413632967024020e-06, + 8.133390676563650006e-06, + 8.148352822420628041e-06, + 8.163300047835025521e-06, + 8.178232330130111956e-06, + 8.193149646658000023e-06, + 8.208051974795695004e-06, + 8.222939291947774798e-06, + 8.237811575545817325e-06, + 8.252668803048331071e-06, + 8.267510951940235009e-06, + 8.282337999735513200e-06, + 8.297149923973216800e-06, + 8.311946702220161009e-06, + 8.326728312070440571e-06, + 8.341494731144506508e-06, + 8.356245937092200189e-06, + 8.370981907589187325e-06, + 8.385702620336453136e-06, + 8.400408053066362024e-06, + 8.415098183535889780e-06, + 8.429772989529449287e-06, + 8.444432448860894600e-06, + 8.459076539369539887e-06, + 8.473705238922836061e-06, + 8.488318525415759213e-06, + 8.502916376770869913e-06, + 8.517498770937611860e-06, + 8.532065685895777945e-06, + 8.546617099648139368e-06, + 8.561152990229812130e-06, + 8.575673335700940359e-06, + 8.590178114149464421e-06, + 8.604667303693787369e-06, + 8.619140882476107111e-06, + 8.633598828668470992e-06, + 8.648041120472203206e-06, + 8.662467736114482780e-06, + 8.676878653850467933e-06, + 8.691273851965954068e-06, + 8.705653308770123163e-06, + 8.720017002604803544e-06, + 8.734364911837305676e-06, + 8.748697014863044574e-06, + 8.763013290108204574e-06, + 8.777313716023168051e-06, + 8.791598271088554758e-06, + 8.805866933814530655e-06, + 8.820119682737516333e-06, + 8.834356496422319846e-06, + 8.848577353464569389e-06, + 8.862782232484511322e-06, + 8.876971112132610753e-06, + 8.891143971089160208e-06, + 8.905300788060918605e-06, + 8.919441541783765853e-06, + 8.933566211022152284e-06, + 8.947674774568427800e-06, + 8.961767211245450738e-06, + 8.975843499902796545e-06, + 8.989903619418683936e-06, + 9.003947548702551567e-06, + 9.017975266688766273e-06, + 9.031986752342271082e-06, + 9.045981984658163399e-06, + 9.059960942658350913e-06, + 9.073923605394257024e-06, + 9.087869951946202509e-06, + 9.101799961422704175e-06, + 9.115713612963183675e-06, + 9.129610885734076238e-06, + 9.143491758931434444e-06, + 9.157356211780337001e-06, + 9.171204223535000548e-06, + 9.185035773478003777e-06, + 9.198850840922928479e-06, + 9.212649405210680034e-06, + 9.226431445711904842e-06, + 9.240196941826495658e-06, + 9.253945872983557709e-06, + 9.267678218640822547e-06, + 9.281393958287273852e-06, + 9.295093071439256162e-06, + 9.308775537643163356e-06, + 9.322441336474693264e-06, + 9.336090447538441094e-06, + 9.349722850470250791e-06, + 9.363338524933589741e-06, + 9.376937450622059372e-06, + 9.390519607258785293e-06, + 9.404084974596513857e-06, + 9.417633532416883708e-06, + 9.431165260533076999e-06, + 9.444680138786056868e-06, + 9.458178147047105152e-06, + 9.471659265217180333e-06, + 9.485123473227024266e-06, + 9.498570751036521822e-06, + 9.512001078637201328e-06, + 9.525414436048605879e-06, + 9.538810803320715853e-06, + 9.552190160533445771e-06, + 9.565552487795924320e-06, + 9.578897765249204860e-06, + 9.592225973063024674e-06, + 9.605537091435267951e-06, + 9.618831100597542648e-06, + 9.632107980809108961e-06, + 9.645367712359254403e-06, + 9.658610275569897585e-06, + 9.671835650788827198e-06, + 9.685043818398243493e-06, + 9.698234758808151426e-06, + 9.711408452458773004e-06, + 9.724564879822441256e-06, + 9.737704021400517027e-06, + 9.750825857722955303e-06, + 9.763930369353555116e-06, + 9.777017536884282734e-06, + 9.790087340937316394e-06, + 9.803139762167783916e-06, + 9.816174781257628489e-06, + 9.829192378921104220e-06, + 9.842192535904183213e-06, + 9.855175232981546905e-06, + 9.868140450958573208e-06, + 9.881088170673499831e-06, + 9.894018372991042731e-06, + 9.906931038810827482e-06, + 9.919826149060706184e-06, + 9.932703684699301951e-06, + 9.945563626718290814e-06, + 9.958405956136606325e-06, + 9.971230654005782643e-06, + 9.984037701409287065e-06, + 9.996827079459748541e-06, + 1.000959876930056364e-05, + 1.002235275210856134e-05, + 1.003508900908719961e-05, + 1.004780752147513575e-05, + 1.006050827053965507e-05, + 1.007319123757960500e-05, + 1.008585640392485135e-05, + 1.009850375093643750e-05, + 1.011113326000580176e-05, + 1.012374491255730323e-05, + 1.013633869004476760e-05, + 1.014891457395307784e-05, + 1.016147254580070519e-05, + 1.017401258713391881e-05, + 1.018653467953188832e-05, + 1.019903880460628399e-05, + 1.021152494399833245e-05, + 1.022399307938117484e-05, + 1.023644319245929591e-05, + 1.024887526496807172e-05, + 1.026128927867593968e-05, + 1.027368521538107318e-05, + 1.028606305691369899e-05, + 1.029842278513555186e-05, + 1.031076438193983376e-05, + 1.032308782925072609e-05, + 1.033539310902579518e-05, + 1.034768020325241277e-05, + 1.035994909395013952e-05, + 1.037219976317020669e-05, + 1.038443219299547710e-05, + 1.039664636554002508e-05, + 1.040884226295130987e-05, + 1.042101986740682147e-05, + 1.043317916111643698e-05, + 1.044532012632180404e-05, + 1.045744274529589188e-05, + 1.046954700034512412e-05, + 1.048163287380616855e-05, + 1.049370034804817669e-05, + 1.050574940547213153e-05, + 1.051778002851112031e-05, + 1.052979219962955866e-05, + 1.054178590132555882e-05, + 1.055376111612756872e-05, + 1.056571782659671310e-05, + 1.057765601532608542e-05, + 1.058957566494099181e-05, + 1.060147675809825818e-05, + 1.061335927748856297e-05, + 1.062522320583308458e-05, + 1.063706852588570704e-05, + 1.064889522043259819e-05, + 1.066070327229162864e-05, + 1.067249266431458249e-05, + 1.068426337938445022e-05, + 1.069601540041490185e-05, + 1.070774871035520991e-05, + 1.071946329218489783e-05, + 1.073115912891581523e-05, + 1.074283620359448924e-05, + 1.075449449929602082e-05, + 1.076613399913177240e-05, + 1.077775468624354369e-05, + 1.078935654380554527e-05, + 1.080093955502613332e-05, + 1.081250370314525155e-05, + 1.082404897143373161e-05, + 1.083557534319825324e-05, + 1.084708280177603005e-05, + 1.085857133053689996e-05, + 1.087004091288556307e-05, + 1.088149153225618100e-05, + 1.089292317211723033e-05, + 1.090433581597105884e-05, + 1.091572944735112241e-05, + 1.092710404982377398e-05, + 1.093845960699022871e-05, + 1.094979610248086506e-05, + 1.096111351996269232e-05, + 1.097241184313338063e-05, + 1.098369105572360397e-05, + 1.099495114149906110e-05, + 1.100619208425522738e-05, + 1.101741386782214392e-05, + 1.102861647606397365e-05, + 1.103979989287624858e-05, + 1.105096410218760103e-05, + 1.106210908796182028e-05, + 1.107323483419209274e-05, + 1.108434132490847110e-05, + 1.109542854417193656e-05, + 1.110649647607723311e-05, + 1.111754510475234228e-05, + 1.112857441435831378e-05, + 1.113958438908905371e-05, + 1.115057501317315588e-05, + 1.116154627087099648e-05, + 1.117249814647676861e-05, + 1.118343062431787247e-05, + 1.119434368875527789e-05, + 1.120523732418258067e-05, + 1.121611151502839807e-05, + 1.122696624575323134e-05, + 1.123780150085144445e-05, + 1.124861726485089469e-05, + 1.125941352231241610e-05, + 1.127019025783181666e-05, + 1.128094745603695441e-05, + 1.129168510158965339e-05, + 1.130240317918529203e-05, + 1.131310167355295050e-05, + 1.132378056945466191e-05, + 1.133443985168762483e-05, + 1.134507950508117254e-05, + 1.135569951449884661e-05, + 1.136629986483780733e-05, + 1.137688054102895403e-05, + 1.138744152803636937e-05, + 1.139798281085942512e-05, + 1.140850437452975484e-05, + 1.141900620411318511e-05, + 1.142948828470948313e-05, + 1.143995060145171971e-05, + 1.145039313950818365e-05, + 1.146081588407967790e-05, + 1.147121882040127471e-05, + 1.148160193374206484e-05, + 1.149196520940502209e-05, + 1.150230863272653229e-05, + 1.151263218907847536e-05, + 1.152293586386519969e-05, + 1.153321964252567189e-05, + 1.154348351053268568e-05, + 1.155372745339277381e-05, + 1.156395145664792751e-05, + 1.157415550587271999e-05, + 1.158433958667641554e-05, + 1.159450368470235288e-05, + 1.160464778562799599e-05, + 1.161477187516454790e-05, + 1.162487593905875988e-05, + 1.163495996309073429e-05, + 1.164502393307324526e-05, + 1.165506783485628383e-05, + 1.166509165432215535e-05, + 1.167509537738739549e-05, + 1.168507899000479628e-05, + 1.169504247815817322e-05, + 1.170498582786893309e-05, + 1.171490902519100029e-05, + 1.172481205621260576e-05, + 1.173469490705790308e-05, + 1.174455756388443080e-05, + 1.175440001288273634e-05, + 1.176422224028073822e-05, + 1.177402423233885730e-05, + 1.178380597535205476e-05, + 1.179356745565156171e-05, + 1.180330865960005963e-05, + 1.181302957359786702e-05, + 1.182273018407812494e-05, + 1.183241047750892639e-05, + 1.184207044039254896e-05, + 1.185171005926768753e-05, + 1.186132932070456359e-05, + 1.187092821131109496e-05, + 1.188050671772821002e-05, + 1.189006482663141307e-05, + 1.189960252473277139e-05, + 1.190911979877639725e-05, + 1.191861663554241873e-05, + 1.192809302184666467e-05, + 1.193754894453839631e-05, + 1.194698439050174891e-05, + 1.195639934665729371e-05, + 1.196579379995744530e-05, + 1.197516773739253486e-05, + 1.198452114598596343e-05, + 1.199385401279607385e-05, + 1.200316632491777199e-05, + 1.201245806947837288e-05, + 1.202172923364131414e-05, + 1.203097980460599161e-05, + 1.204020976960534026e-05, + 1.204941911590778573e-05, + 1.205860783081668870e-05, + 1.206777590167053292e-05, + 1.207692331584227805e-05, + 1.208605006074138750e-05, + 1.209515612381091972e-05, + 1.210424149252961014e-05, + 1.211330615441121227e-05, + 1.212235009700415544e-05, + 1.213137330789331849e-05, + 1.214037577469746498e-05, + 1.214935748507092030e-05, + 1.215831842670324471e-05, + 1.216725858731913340e-05, + 1.217617795467806074e-05, + 1.218507651657611493e-05, + 1.219395426084323331e-05, + 1.220281117534511327e-05, + 1.221164724798273109e-05, + 1.222046246669190833e-05, + 1.222925681944507020e-05, + 1.223803029424865030e-05, + 1.224678287914491510e-05, + 1.225551456221147099e-05, + 1.226422533156125750e-05, + 1.227291517534216440e-05, + 1.228158408173890202e-05, + 1.229023203897016024e-05, + 1.229885903529055670e-05, + 1.230746505899014381e-05, + 1.231605009839449347e-05, + 1.232461414186416680e-05, + 1.233315717779648955e-05, + 1.234167919462307029e-05, + 1.235018018081148597e-05, + 1.235866012486479239e-05, + 1.236711901532115485e-05, + 1.237555684075569640e-05, + 1.238397358977812952e-05, + 1.239236925103260535e-05, + 1.240074381320139831e-05, + 1.240909726500070647e-05, + 1.241742959518242358e-05, + 1.242574079253521646e-05, + 1.243403084588233967e-05, + 1.244229974408304501e-05, + 1.245054747603228329e-05, + 1.245877403066079419e-05, + 1.246697939693457765e-05, + 1.247516356385702166e-05, + 1.248332652046442482e-05, + 1.249146825583166640e-05, + 1.249958875906780343e-05, + 1.250768801931773769e-05, + 1.251576602576331347e-05, + 1.252382276762142525e-05, + 1.253185823414366201e-05, + 1.253987241461977325e-05, + 1.254786529837383532e-05, + 1.255583687476575067e-05, + 1.256378713319295719e-05, + 1.257171606308602868e-05, + 1.257962365391411113e-05, + 1.258750989518084680e-05, + 1.259537477642616823e-05, + 1.260321828722559181e-05, + 1.261104041719202704e-05, + 1.261884115597188698e-05, + 1.262662049325005012e-05, + 1.263437841874597933e-05, + 1.264211492221519907e-05, + 1.264982999345077596e-05, + 1.265752362227943265e-05, + 1.266519579856522730e-05, + 1.267284651220892510e-05, + 1.268047575314638889e-05, + 1.268808351134944145e-05, + 1.269566977682754092e-05, + 1.270323453962376588e-05, + 1.271077778981978911e-05, + 1.271829951753200498e-05, + 1.272579971291298632e-05, + 1.273327836615290745e-05, + 1.274073546747597307e-05, + 1.274817100714361501e-05, + 1.275558497545424823e-05, + 1.276297736274141415e-05, + 1.277034815937519689e-05, + 1.277769735576198778e-05, + 1.278502494234440406e-05, + 1.279233090960089418e-05, + 1.279961524804743180e-05, + 1.280687794823499509e-05, + 1.281411900075139292e-05, + 1.282133839622063971e-05, + 1.282853612530280977e-05, + 1.283571217869517403e-05, + 1.284286654713056355e-05, + 1.284999922137827415e-05, + 1.285711019224405287e-05, + 1.286419945057013526e-05, + 1.287126698723467610e-05, + 1.287831279315317928e-05, + 1.288533685927679013e-05, + 1.289233917659312214e-05, + 1.289931973612642805e-05, + 1.290627852893689852e-05, + 1.291321554612241547e-05, + 1.292013077881607032e-05, + 1.292702421818791557e-05, + 1.293389585544437874e-05, + 1.294074568182852151e-05, + 1.294757368861942141e-05, + 1.295437986713372525e-05, + 1.296116420872362815e-05, + 1.296792670477821349e-05, + 1.297466734672304805e-05, + 1.298138612602027182e-05, + 1.298808303416822527e-05, + 1.299475806270294184e-05, + 1.300141120319584908e-05, + 1.300804244725540345e-05, + 1.301465178652672268e-05, + 1.302123921269108263e-05, + 1.302780471746746910e-05, + 1.303434829261077188e-05, + 1.304086992991151886e-05, + 1.304736962119896426e-05, + 1.305384735833757345e-05, + 1.306030313322854088e-05, + 1.306673693781078272e-05, + 1.307314876405882273e-05, + 1.307953860398422713e-05, + 1.308590644963527083e-05, + 1.309225229309700014e-05, + 1.309857612649073981e-05, + 1.310487794197588531e-05, + 1.311115773174641138e-05, + 1.311741548803515635e-05, + 1.312365120311047971e-05, + 1.312986486927751912e-05, + 1.313605647887912892e-05, + 1.314222602429429111e-05, + 1.314837349793786460e-05, + 1.315449889226333303e-05, + 1.316060219975987905e-05, + 1.316668341295328734e-05, + 1.317274252440753528e-05, + 1.317877952672124049e-05, + 1.318479441253204004e-05, + 1.319078717451313790e-05, + 1.319675780537461276e-05, + 1.320270629786438029e-05, + 1.320863264476644654e-05, + 1.321453683890103498e-05, + 1.322041887312683624e-05, + 1.322627874033837724e-05, + 1.323211643346697997e-05, + 1.323793194548210666e-05, + 1.324372526938836801e-05, + 1.324949639822820995e-05, + 1.325524532508154782e-05, + 1.326097204306433647e-05, + 1.326667654532979515e-05, + 1.327235882506808388e-05, + 1.327801887550605447e-05, + 1.328365668990832794e-05, + 1.328927226157575798e-05, + 1.329486558384604928e-05, + 1.330043665009500780e-05, + 1.330598545373387085e-05, + 1.331151198821162294e-05, + 1.331701624701481789e-05, + 1.332249822366619474e-05, + 1.332795791172581281e-05, + 1.333339530479067562e-05, + 1.333881039649465464e-05, + 1.334420318050936005e-05, + 1.334957365054274819e-05, + 1.335492180033998390e-05, + 1.336024762368332187e-05, + 1.336555111439211855e-05, + 1.337083226632249498e-05, + 1.337609107336844477e-05, + 1.338132752946021451e-05, + 1.338654162856549475e-05, + 1.339173336468891683e-05, + 1.339690273187232394e-05, + 1.340204972419432897e-05, + 1.340717433577154951e-05, + 1.341227656075675956e-05, + 1.341735639334026686e-05, + 1.342241382774938264e-05, + 1.342744885824837585e-05, + 1.343246147913931178e-05, + 1.343745168476079669e-05, + 1.344241946948866563e-05, + 1.344736482773598924e-05, + 1.345228775395294497e-05, + 1.345718824262670359e-05, + 1.346206628828221183e-05, + 1.346692188548092186e-05, + 1.347175502882173996e-05, + 1.347656571294066057e-05, + 1.348135393251095947e-05, + 1.348611968224270921e-05, + 1.349086295688405989e-05, + 1.349558375121955352e-05, + 1.350028206007112692e-05, + 1.350495787829803549e-05, + 1.350961120079636871e-05, + 1.351424202250025120e-05, + 1.351885033838053158e-05, + 1.352343614344450628e-05, + 1.352799943273820315e-05, + 1.353254020134382683e-05, + 1.353705844438088190e-05, + 1.354155415700681154e-05, + 1.354602733441556774e-05, + 1.355047797183866334e-05, + 1.355490606454470782e-05, + 1.355931160783945136e-05, + 1.356369459706653701e-05, + 1.356805502760641140e-05, + 1.357239289487613670e-05, + 1.357670819433127780e-05, + 1.358100092146397958e-05, + 1.358527107180346492e-05, + 1.358951864091696307e-05, + 1.359374362440856616e-05, + 1.359794601791888360e-05, + 1.360212581712728165e-05, + 1.360628301774938295e-05, + 1.361041761553820326e-05, + 1.361452960628490025e-05, + 1.361861898581635265e-05, + 1.362268574999829091e-05, + 1.362672989473286956e-05, + 1.363075141595956853e-05, + 1.363475030965576057e-05, + 1.363872657183576942e-05, + 1.364268019855054622e-05, + 1.364661118588963124e-05, + 1.365051952997901424e-05, + 1.365440522698200869e-05, + 1.365826827310011395e-05, + 1.366210866457066400e-05, + 1.366592639766973607e-05, + 1.366972146871000601e-05, + 1.367349387404155294e-05, + 1.367724361005186098e-05, + 1.368097067316571923e-05, + 1.368467505984503043e-05, + 1.368835676658971722e-05, + 1.369201578993626865e-05, + 1.369565212645867024e-05, + 1.369926577276892232e-05, + 1.370285672551529859e-05, + 1.370642498138387920e-05, + 1.370997053709855248e-05, + 1.371349338941993747e-05, + 1.371699353514619712e-05, + 1.372047097111277906e-05, + 1.372392569419238007e-05, + 1.372735770129558976e-05, + 1.373076698936972512e-05, + 1.373415355539966563e-05, + 1.373751739640764157e-05, + 1.374085850945326614e-05, + 1.374417689163320348e-05, + 1.374747254008218677e-05, + 1.375074545197161384e-05, + 1.375399562451047897e-05, + 1.375722305494507125e-05, + 1.376042774055911357e-05, + 1.376360967867343395e-05, + 1.376676886664677529e-05, + 1.376990530187469592e-05, + 1.377301898179029977e-05, + 1.377610990386399409e-05, + 1.377917806560344203e-05, + 1.378222346455407087e-05, + 1.378524609829823341e-05, + 1.378824596445575523e-05, + 1.379122306068382959e-05, + 1.379417738467704626e-05, + 1.379710893416709674e-05, + 1.380001770692354509e-05, + 1.380290370075286395e-05, + 1.380576691349898347e-05, + 1.380860734304321337e-05, + 1.381142498730411249e-05, + 1.381421984423757686e-05, + 1.381699191183724803e-05, + 1.381974118813367442e-05, + 1.382246767119482133e-05, + 1.382517135912604885e-05, + 1.382785225006996280e-05, + 1.383051034220685181e-05, + 1.383314563375412487e-05, + 1.383575812296610299e-05, + 1.383834780813522703e-05, + 1.384091468759074315e-05, + 1.384345875969928722e-05, + 1.384598002286521348e-05, + 1.384847847552971535e-05, + 1.385095411617152335e-05, + 1.385340694330674418e-05, + 1.385583695548858118e-05, + 1.385824415130797642e-05, + 1.386062852939303128e-05, + 1.386299008840859485e-05, + 1.386532882705782409e-05, + 1.386764474408049492e-05, + 1.386993783825372216e-05, + 1.387220810839248978e-05, + 1.387445555334866663e-05, + 1.387668017201107424e-05, + 1.387888196330662689e-05, + 1.388106092619903400e-05, + 1.388321705968924898e-05, + 1.388535036281613510e-05, + 1.388746083465489838e-05, + 1.388954847431893928e-05, + 1.389161328095845506e-05, + 1.389365525376084465e-05, + 1.389567439195130160e-05, + 1.389767069479192132e-05, + 1.389964416158178403e-05, + 1.390159479165802546e-05, + 1.390352258439444093e-05, + 1.390542753920221381e-05, + 1.390730965553021362e-05, + 1.390916893286368659e-05, + 1.391100537072606487e-05, + 1.391281896867760285e-05, + 1.391460972631568205e-05, + 1.391637764327522956e-05, + 1.391812271922827424e-05, + 1.391984495388394836e-05, + 1.392154434698902634e-05, + 1.392322089832716240e-05, + 1.392487460771920231e-05, + 1.392650547502365429e-05, + 1.392811350013574037e-05, + 1.392969868298802825e-05, + 1.393126102355065664e-05, + 1.393280052183055595e-05, + 1.393431717787205821e-05, + 1.393581099175661748e-05, + 1.393728196360281499e-05, + 1.393873009356673858e-05, + 1.394015538184139657e-05, + 1.394155782865693967e-05, + 1.394293743428106925e-05, + 1.394429419901810054e-05, + 1.394562812320983674e-05, + 1.394693920723542673e-05, + 1.394822745151086534e-05, + 1.394949285648944903e-05, + 1.395073542266156753e-05, + 1.395195515055481392e-05, + 1.395315204073378143e-05, + 1.395432609380051565e-05, + 1.395547731039390813e-05, + 1.395660569119000126e-05, + 1.395771123690210353e-05, + 1.395879394828044217e-05, + 1.395985382611262400e-05, + 1.396089087122312886e-05, + 1.396190508447360441e-05, + 1.396289646676283053e-05, + 1.396386501902662446e-05, + 1.396481074223780355e-05, + 1.396573363740659351e-05, + 1.396663370557995246e-05, + 1.396751094784198601e-05, + 1.396836536531392862e-05, + 1.396919695915394368e-05, + 1.397000573055747590e-05, + 1.397079168075675832e-05, + 1.397155481102123751e-05, + 1.397229512265728055e-05, + 1.397301261700831385e-05, + 1.397370729545470807e-05, + 1.397437915941406939e-05, + 1.397502821034079913e-05, + 1.397565444972624617e-05, + 1.397625787909893568e-05, + 1.397683850002435057e-05, + 1.397739631410478747e-05, + 1.397793132297975660e-05, + 1.397844352832550565e-05, + 1.397893293185537900e-05, + 1.397939953531956356e-05, + 1.397984334050527512e-05, + 1.398026434923667198e-05, + 1.398066256337489897e-05, + 1.398103798481770971e-05, + 1.398139061550020348e-05, + 1.398172045739407815e-05, + 1.398202751250800291e-05, + 1.398231178288769615e-05, + 1.398257327061557652e-05, + 1.398281197781101024e-05, + 1.398302790663019082e-05, + 1.398322105926623734e-05, + 1.398339143794907245e-05, + 1.398353904494556130e-05, + 1.398366388255923371e-05, + 1.398376595313057553e-05, + 1.398384525903692027e-05, + 1.398390180269233724e-05, + 1.398393558654779249e-05, + 1.398394661309090321e-05, + 1.398393488484624772e-05, + 1.398390040437502664e-05, + 1.398384317427537461e-05, + 1.398376319718207065e-05, + 1.398366047576678539e-05, + 1.398353501273771189e-05, + 1.398338681084000092e-05, + 1.398321587285546621e-05, + 1.398302220160260651e-05, + 1.398280579993671907e-05, + 1.398256667074963197e-05, + 1.398230481697009545e-05, + 1.398202024156346005e-05, + 1.398171294753171049e-05, + 1.398138293791349785e-05, + 1.398103021578424967e-05, + 1.398065478425588709e-05, + 1.398025664647705348e-05, + 1.397983580563311789e-05, + 1.397939226494594123e-05, + 1.397892602767400505e-05, + 1.397843709711247757e-05, + 1.397792547659305278e-05, + 1.397739116948408933e-05, + 1.397683417919034964e-05, + 1.397625450915343532e-05, + 1.397565216285131786e-05, + 1.397502714379854531e-05, + 1.397437945554618304e-05, + 1.397370910168191871e-05, + 1.397301608582989122e-05, + 1.397230041165073300e-05, + 1.397156208284161244e-05, + 1.397080110313616437e-05, + 1.397001747630452396e-05, + 1.396921120615333521e-05, + 1.396838229652555949e-05, + 1.396753075130075340e-05, + 1.396665657439484341e-05, + 1.396575976976014117e-05, + 1.396484034138549424e-05, + 1.396389829329607771e-05, + 1.396293362955342982e-05, + 1.396194635425556711e-05, + 1.396093647153679133e-05, + 1.395990398556789103e-05, + 1.395884890055577899e-05, + 1.395777122074390733e-05, + 1.395667095041204892e-05, + 1.395554809387626015e-05, + 1.395440265548882670e-05, + 1.395323463963845834e-05, + 1.395204405075001286e-05, + 1.395083089328477380e-05, + 1.394959517174016087e-05, + 1.394833689064995519e-05, + 1.394705605458415361e-05, + 1.394575266814883829e-05, + 1.394442673598651889e-05, + 1.394307826277576665e-05, + 1.394170725323143462e-05, + 1.394031371210442724e-05, + 1.393889764418205109e-05, + 1.393745905428754723e-05, + 1.393599794728040637e-05, + 1.393451432805618925e-05, + 1.393300820154671132e-05, + 1.393147957271975137e-05, + 1.392992844657928190e-05, + 1.392835482816523533e-05, + 1.392675872255385302e-05, + 1.392514013485725662e-05, + 1.392349907022359551e-05, + 1.392183553383721106e-05, + 1.392014953091828094e-05, + 1.391844106672314433e-05, + 1.391671014654403259e-05, + 1.391495677570932506e-05, + 1.391318095958317637e-05, + 1.391138270356590775e-05, + 1.390956201309348696e-05, + 1.390771889363821612e-05, + 1.390585335070796422e-05, + 1.390396538984667879e-05, + 1.390205501663426900e-05, + 1.390012223668628208e-05, + 1.389816705565447420e-05, + 1.389618947922618373e-05, + 1.389418951312470725e-05, + 1.389216716310913697e-05, + 1.389012243497446912e-05, + 1.388805533455121435e-05, + 1.388596586770623793e-05, + 1.388385404034159431e-05, + 1.388171985839538253e-05, + 1.387956332784150067e-05, + 1.387738445468933240e-05, + 1.387518324498429245e-05, + 1.387295970480736590e-05, + 1.387071384027507421e-05, + 1.386844565753990218e-05, + 1.386615516278988627e-05, + 1.386384236224850959e-05, + 1.386150726217528802e-05, + 1.385914986886510107e-05, + 1.385677018864843750e-05, + 1.385436822789141908e-05, + 1.385194399299580731e-05, + 1.384949749039891538e-05, + 1.384702872657362677e-05, + 1.384453770802814453e-05, + 1.384202444130646227e-05, + 1.383948893298805916e-05, + 1.383693118968756966e-05, + 1.383435121805569149e-05, + 1.383174902477822679e-05, + 1.382912461657625325e-05, + 1.382647800020666452e-05, + 1.382380918246155689e-05, + 1.382111817016849196e-05, + 1.381840497019046949e-05, + 1.381566958942569190e-05, + 1.381291203480789130e-05, + 1.381013231330606173e-05, + 1.380733043192457107e-05, + 1.380450639770311013e-05, + 1.380166021771665883e-05, + 1.379879189907530490e-05, + 1.379590144892461659e-05, + 1.379298887444542752e-05, + 1.379005418285365879e-05, + 1.378709738140059515e-05, + 1.378411847737265287e-05, + 1.378111747809132725e-05, + 1.377809439091342809e-05, + 1.377504922323090179e-05, + 1.377198198247084835e-05, + 1.376889267609558228e-05, + 1.376578131160216171e-05, + 1.376264789652309309e-05, + 1.375949243842587549e-05, + 1.375631494491304806e-05, + 1.375311542362214932e-05, + 1.374989388222587986e-05, + 1.374665032843171093e-05, + 1.374338476998229957e-05, + 1.374009721465527169e-05, + 1.373678767026313913e-05, + 1.373345614465343175e-05, + 1.373010264570865679e-05, + 1.372672718134591431e-05, + 1.372332975951753080e-05, + 1.371991038821068136e-05, + 1.371646907544727282e-05, + 1.371300582928422498e-05, + 1.370952065781295391e-05, + 1.370601356915985812e-05, + 1.370248457148657779e-05, + 1.369893367298877502e-05, + 1.369536088189730781e-05, + 1.369176620647780488e-05, + 1.368814965503016252e-05, + 1.368451123588971346e-05, + 1.368085095742584289e-05, + 1.367716882804287607e-05, + 1.367346485617989035e-05, + 1.366973905031028993e-05, + 1.366599141894220906e-05, + 1.366222197061888473e-05, + 1.365843071391724042e-05, + 1.365461765744943450e-05, + 1.365078280986205892e-05, + 1.364692617983568010e-05, + 1.364304777608635517e-05, + 1.363914760736401071e-05, + 1.363522568245294251e-05, + 1.363128201017220350e-05, + 1.362731659937537168e-05, + 1.362332945894975390e-05, + 1.361932059781824426e-05, + 1.361529002493689650e-05, + 1.361123774929690436e-05, + 1.360716377992371392e-05, + 1.360306812587650348e-05, + 1.359895079624966759e-05, + 1.359481180017143299e-05, + 1.359065114680405511e-05, + 1.358646884534435343e-05, + 1.358226490502354712e-05, + 1.357803933510640462e-05, + 1.357379214489291232e-05, + 1.356952334371621795e-05, + 1.356523294094412474e-05, + 1.356092094597866452e-05, + 1.355658736825569284e-05, + 1.355223221724538873e-05, + 1.354785550245213271e-05, + 1.354345723341375123e-05, + 1.353903741970278386e-05, + 1.353459607092564641e-05, + 1.353013319672218367e-05, + 1.352564880676718564e-05, + 1.352114291076889335e-05, + 1.351661551846923430e-05, + 1.351206663964452048e-05, + 1.350749628410470124e-05, + 1.350290446169381730e-05, + 1.349829118228978224e-05, + 1.349365645580387766e-05, + 1.348900029218174589e-05, + 1.348432270140268527e-05, + 1.347962369347976534e-05, + 1.347490327845976924e-05, + 1.347016146642348004e-05, + 1.346539826748486244e-05, + 1.346061369179201322e-05, + 1.345580774952671562e-05, + 1.345098045090426153e-05, + 1.344613180617368354e-05, + 1.344126182561781764e-05, + 1.343637051955242060e-05, + 1.343145789832760314e-05, + 1.342652397232666613e-05, + 1.342156875196655459e-05, + 1.341659224769786276e-05, + 1.341159447000420732e-05, + 1.340657542940313200e-05, + 1.340153513644554686e-05, + 1.339647360171571979e-05, + 1.339139083583146969e-05, + 1.338628684944397497e-05, + 1.338116165323748052e-05, + 1.337601525792995842e-05, + 1.337084767427263861e-05, + 1.336565891304996322e-05, + 1.336044898507994736e-05, + 1.335521790121324232e-05, + 1.334996567233433160e-05, + 1.334469230936075160e-05, + 1.333939782324323395e-05, + 1.333408222496568516e-05, + 1.332874552554541705e-05, + 1.332338773603216923e-05, + 1.331800886750928141e-05, + 1.331260893109383232e-05, + 1.330718793793467461e-05, + 1.330174589921454562e-05, + 1.329628282614927964e-05, + 1.329079872998678812e-05, + 1.328529362200956855e-05, + 1.327976751353141968e-05, + 1.327422041590008087e-05, + 1.326865234049617668e-05, + 1.326306329873254604e-05, + 1.325745330205532981e-05, + 1.325182236194429268e-05, + 1.324617048991056159e-05, + 1.324049769749906686e-05, + 1.323480399628742919e-05, + 1.322908939788520414e-05, + 1.322335391393627242e-05, + 1.321759755611553478e-05, + 1.321182033613169535e-05, + 1.320602226572573872e-05, + 1.320020335667157870e-05, + 1.319436362077480983e-05, + 1.318850306987535353e-05, + 1.318262171584389035e-05, + 1.317671957058477718e-05, + 1.317079664603483092e-05, + 1.316485295416245940e-05, + 1.315888850696993821e-05, + 1.315290331649131855e-05, + 1.314689739479263897e-05, + 1.314087075397301125e-05, + 1.313482340616402242e-05, + 1.312875536352863872e-05, + 1.312266663826382286e-05, + 1.311655724259723915e-05, + 1.311042718878976063e-05, + 1.310427648913432227e-05, + 1.309810515595611233e-05, + 1.309191320161261308e-05, + 1.308570063849359057e-05, + 1.307946747902042892e-05, + 1.307321373564732290e-05, + 1.306693942086041231e-05, + 1.306064454717786831e-05, + 1.305432912715000190e-05, + 1.304799317335946380e-05, + 1.304163669842010772e-05, + 1.303525971497860144e-05, + 1.302886223571343066e-05, + 1.302244427333489906e-05, + 1.301600584058562967e-05, + 1.300954695023930795e-05, + 1.300306761510238258e-05, + 1.299656784801279999e-05, + 1.299004766184037201e-05, + 1.298350706948686394e-05, + 1.297694608388594711e-05, + 1.297036471800232645e-05, + 1.296376298483328206e-05, + 1.295714089740745802e-05, + 1.295049846878525193e-05, + 1.294383571205874556e-05, + 1.293715264035199781e-05, + 1.293044926681968447e-05, + 1.292372560464909718e-05, + 1.291698166705872209e-05, + 1.291021746729863631e-05, + 1.290343301865061460e-05, + 1.289662833442727897e-05, + 1.288980342797332012e-05, + 1.288295831266486720e-05, + 1.287609300190926252e-05, + 1.286920750914532077e-05, + 1.286230184784352380e-05, + 1.285537603150476871e-05, + 1.284843007366223643e-05, + 1.284146398788004999e-05, + 1.283447778775357440e-05, + 1.282747148690983675e-05, + 1.282044509900601342e-05, + 1.281339863773149854e-05, + 1.280633211680651484e-05, + 1.279924554998238304e-05, + 1.279213895104161668e-05, + 1.278501233379800683e-05, + 1.277786571209565311e-05, + 1.277069909981019865e-05, + 1.276351251084915362e-05, + 1.275630595914930848e-05, + 1.274907945867954093e-05, + 1.274183302343968947e-05, + 1.273456666745928108e-05, + 1.272728040480084314e-05, + 1.271997424955570385e-05, + 1.271264821584704495e-05, + 1.270530231782904448e-05, + 1.269793656968566893e-05, + 1.269055098563216066e-05, + 1.268314557991546475e-05, + 1.267572036681146604e-05, + 1.266827536062776395e-05, + 1.266081057570278653e-05, + 1.265332602640419291e-05, + 1.264582172713245631e-05, + 1.263829769231641029e-05, + 1.263075393641669789e-05, + 1.262319047392411651e-05, + 1.261560731936032606e-05, + 1.260800448727606509e-05, + 1.260038199225482858e-05, + 1.259273984890821781e-05, + 1.258507807187944358e-05, + 1.257739667584212859e-05, + 1.256969567549892675e-05, + 1.256197508558467074e-05, + 1.255423492086344808e-05, + 1.254647519612904662e-05, + 1.253869592620634205e-05, + 1.253089712595043726e-05, + 1.252307881024520715e-05, + 1.251524099400698156e-05, + 1.250738369217992718e-05, + 1.249950691973954757e-05, + 1.249161069169140917e-05, + 1.248369502306976233e-05, + 1.247575992894077362e-05, + 1.246780542439963064e-05, + 1.245983152457078090e-05, + 1.245183824460955135e-05, + 1.244382559970079481e-05, + 1.243579360505927283e-05, + 1.242774227592948289e-05, + 1.241967162758603283e-05, + 1.241158167533241089e-05, + 1.240347243450266458e-05, + 1.239534392046034188e-05, + 1.238719614859861488e-05, + 1.237902913434070333e-05, + 1.237084289313829237e-05, + 1.236263744047374329e-05, + 1.235441279185871455e-05, + 1.234616896283426341e-05, + 1.233790596897103233e-05, + 1.232962382586944375e-05, + 1.232132254915839393e-05, + 1.231300215449716395e-05, + 1.230466265757406945e-05, + 1.229630407410682152e-05, + 1.228792641984283837e-05, + 1.227952971055770545e-05, + 1.227111396205740147e-05, + 1.226267919017674997e-05, + 1.225422541077986321e-05, + 1.224575263975994056e-05, + 1.223726089303977332e-05, + 1.222875018657012184e-05, + 1.222022053633200417e-05, + 1.221167195833510872e-05, + 1.220310446861813479e-05, + 1.219451808324887728e-05, + 1.218591281832432827e-05, + 1.217728868996952007e-05, + 1.216864571433937505e-05, + 1.215998390761733689e-05, + 1.215130328601576697e-05, + 1.214260386577620188e-05, + 1.213388566316785924e-05, + 1.212514869448952998e-05, + 1.211639297606975960e-05, + 1.210761852426369214e-05, + 1.209882535545650572e-05, + 1.209001348606215896e-05, + 1.208118293252204416e-05, + 1.207233371130727604e-05, + 1.206346583891720936e-05, + 1.205457933187964398e-05, + 1.204567420675090610e-05, + 1.203675048011624642e-05, + 1.202780816858779030e-05, + 1.201884728880868145e-05, + 1.200986785744786758e-05, + 1.200086989120412043e-05, + 1.199185340680457212e-05, + 1.198281842100344454e-05, + 1.197376495058406367e-05, + 1.196469301235899675e-05, + 1.195560262316687420e-05, + 1.194649379987586420e-05, + 1.193736655938245801e-05, + 1.192822091860960142e-05, + 1.191905689451101293e-05, + 1.190987450406574240e-05, + 1.190067376428243504e-05, + 1.189145469219776436e-05, + 1.188221730487511083e-05, + 1.187296161940655239e-05, + 1.186368765291332186e-05, + 1.185439542254202747e-05, + 1.184508494546886092e-05, + 1.183575623889760685e-05, + 1.182640932005837910e-05, + 1.181704420621135437e-05, + 1.180766091464315713e-05, + 1.179825946266746269e-05, + 1.178883986762660828e-05, + 1.177940214689064602e-05, + 1.176994631785556929e-05, + 1.176047239794767997e-05, + 1.175098040461805568e-05, + 1.174147035534686622e-05, + 1.173194226764167783e-05, + 1.172239615903589464e-05, + 1.171283204709276853e-05, + 1.170324994940162814e-05, + 1.169364988357839385e-05, + 1.168403186726739892e-05, + 1.167439591813990718e-05, + 1.166474205389440779e-05, + 1.165507029225697776e-05, + 1.164538065097965568e-05, + 1.163567314784277273e-05, + 1.162594780065348222e-05, + 1.161620462724590193e-05, + 1.160644364548121063e-05, + 1.159666487324793948e-05, + 1.158686832846058969e-05, + 1.157705402906161623e-05, + 1.156722199301998958e-05, + 1.155737223833165317e-05, + 1.154750478301934546e-05, + 1.153761964513301835e-05, + 1.152771684274819572e-05, + 1.151779639396835518e-05, + 1.150785831692331034e-05, + 1.149790262976955798e-05, + 1.148792935069062546e-05, + 1.147793849789542228e-05, + 1.146793008962072704e-05, + 1.145790414412936122e-05, + 1.144786067971077700e-05, + 1.143779971468088618e-05, + 1.142772126738242610e-05, + 1.141762535618330792e-05, + 1.140751199947914754e-05, + 1.139738121569144450e-05, + 1.138723302326799026e-05, + 1.137706744068290542e-05, + 1.136688448643706330e-05, + 1.135668417905615864e-05, + 1.134646653709344867e-05, + 1.133623157912782011e-05, + 1.132597932376438045e-05, + 1.131570978963471204e-05, + 1.130542299539517632e-05, + 1.129511895972899078e-05, + 1.128479770134668462e-05, + 1.127445923898220750e-05, + 1.126410359139703428e-05, + 1.125373077737866235e-05, + 1.124334081573902431e-05, + 1.123293372531725439e-05, + 1.122250952497779445e-05, + 1.121206823361094458e-05, + 1.120160987013257680e-05, + 1.119113445348480760e-05, + 1.118064200263361098e-05, + 1.117013253657365166e-05, + 1.115960607432206614e-05, + 1.114906263492339920e-05, + 1.113850223744761850e-05, + 1.112792490098892527e-05, + 1.111733064466781776e-05, + 1.110671948763156382e-05, + 1.109609144905010470e-05, + 1.108544654812056123e-05, + 1.107478480406536360e-05, + 1.106410623613035566e-05, + 1.105341086358990936e-05, + 1.104269870574036018e-05, + 1.103196978190503180e-05, + 1.102122411143239628e-05, + 1.101046171369471377e-05, + 1.099968260809019749e-05, + 1.098888681404341697e-05, + 1.097807435100137791e-05, + 1.096724523843768627e-05, + 1.095639949585096594e-05, + 1.094553714276295467e-05, + 1.093465819872295605e-05, + 1.092376268330373815e-05, + 1.091285061610193677e-05, + 1.090192201674037456e-05, + 1.089097690486611794e-05, + 1.088001530015093792e-05, + 1.086903722229166241e-05, + 1.085804269100847204e-05, + 1.084703172604742089e-05, + 1.083600434717916937e-05, + 1.082496057419703769e-05, + 1.081390042692160868e-05, + 1.080282392519656713e-05, + 1.079173108888895733e-05, + 1.078062193789172581e-05, + 1.076949649212166311e-05, + 1.075835477151984077e-05, + 1.074719679605210609e-05, + 1.073602258570705596e-05, + 1.072483216049908111e-05, + 1.071362554046606898e-05, + 1.070240274567016264e-05, + 1.069116379619752023e-05, + 1.067990871215896041e-05, + 1.066863751368775162e-05, + 1.065735022094266135e-05, + 1.064604685410596735e-05, + 1.063472743338380153e-05, + 1.062339197900617193e-05, + 1.061204051122752183e-05, + 1.060067305032453757e-05, + 1.058928961659919112e-05, + 1.057789023037666825e-05, + 1.056647491200596821e-05, + 1.055504368186013243e-05, + 1.054359656033440645e-05, + 1.053213356784915035e-05, + 1.052065472484769745e-05, + 1.050916005179697260e-05, + 1.049764956918743464e-05, + 1.048612329753332538e-05, + 1.047458125737105521e-05, + 1.046302346926170855e-05, + 1.045144995378930918e-05, + 1.043986073156118617e-05, + 1.042825582320790944e-05, + 1.041663524938379465e-05, + 1.040499903076484829e-05, + 1.039334718805182206e-05, + 1.038167974196800211e-05, + 1.036999671325979693e-05, + 1.035829812269713539e-05, + 1.034658399107159315e-05, + 1.033485433919854749e-05, + 1.032310918791795319e-05, + 1.031134855808962458e-05, + 1.029957247059823980e-05, + 1.028778094635136887e-05, + 1.027597400627781527e-05, + 1.026415167133067366e-05, + 1.025231396248526826e-05, + 1.024046090073963052e-05, + 1.022859250711485663e-05, + 1.021670880265330328e-05, + 1.020480980842078491e-05, + 1.019289554550723435e-05, + 1.018096603502202725e-05, + 1.016902129809903036e-05, + 1.015706135589458730e-05, + 1.014508622958587192e-05, + 1.013309594037342772e-05, + 1.012109050948166925e-05, + 1.010906995815423368e-05, + 1.009703430765903070e-05, + 1.008498357928618093e-05, + 1.007291779434595590e-05, + 1.006083697417432442e-05, + 1.004874114012572571e-05, + 1.003663031357883598e-05, + 1.002450451593422216e-05, + 1.001236376861294091e-05, + 1.000020809305903398e-05, + 9.988037510739980511e-06, + 9.975852043142107838e-06, + 9.963651711775495779e-06, + 9.951436538172223298e-06, + 9.939206543883869749e-06, + 9.926961750487501708e-06, + 9.914702179578125911e-06, + 9.902427852774582905e-06, + 9.890138791716750148e-06, + 9.877835018066065474e-06, + 9.865516553505501683e-06, + 9.853183419740115418e-06, + 9.840835638494772035e-06, + 9.828473231517347386e-06, + 9.816096220577159116e-06, + 9.803704627462696614e-06, + 9.791298473986967483e-06, + 9.778877781982596611e-06, + 9.766442573302478383e-06, + 9.753992869822241548e-06, + 9.741528693438121476e-06, + 9.729050066067500556e-06, + 9.716557009649350358e-06, + 9.704049546142112348e-06, + 9.691527697526814973e-06, + 9.678991485805445665e-06, + 9.666440932998818009e-06, + 9.653876061151782690e-06, + 9.641296892328484112e-06, + 9.628703448612819485e-06, + 9.616095752110983316e-06, + 9.603473824949466714e-06, + 9.590837689275384347e-06, + 9.578187367256589638e-06, + 9.565522881082027130e-06, + 9.552844252959611515e-06, + 9.540151505119487019e-06, + 9.527444659811615051e-06, + 9.514723739306605988e-06, + 9.501988765895917383e-06, + 9.489239761889812613e-06, + 9.476476749620513538e-06, + 9.463699751440023627e-06, + 9.450908789720632785e-06, + 9.438103886854841125e-06, + 9.425285065255890903e-06, + 9.412452347355567620e-06, + 9.399605755607369620e-06, + 9.386745312484383728e-06, + 9.373871040479696916e-06, + 9.360982962106958723e-06, + 9.348081099898136625e-06, + 9.335165476406761864e-06, + 9.322236114205676336e-06, + 9.309293035887610272e-06, + 9.296336264065116169e-06, + 9.283365821370993999e-06, + 9.270381730456171931e-06, + 9.257384013992362633e-06, + 9.244372694672547765e-06, + 9.231347795206078750e-06, + 9.218309338324001217e-06, + 9.205257346776944197e-06, + 9.192191843333392175e-06, + 9.179112850782890264e-06, + 9.166020391933848695e-06, + 9.152914489614110327e-06, + 9.139795166671357227e-06, + 9.126662445970908381e-06, + 9.113516350398421731e-06, + 9.100356902860536222e-06, + 9.087184126279633758e-06, + 9.073998043599502456e-06, + 9.060798677783041193e-06, + 9.047586051810496078e-06, + 9.034360188682796073e-06, + 9.021121111419360867e-06, + 9.007868843058524397e-06, + 8.994603406657487410e-06, + 8.981324825292922247e-06, + 8.968033122057989594e-06, + 8.954728320068692919e-06, + 8.941410442455707995e-06, + 8.928079512370750895e-06, + 8.914735552984204603e-06, + 8.901378587483336859e-06, + 8.888008639075102140e-06, + 8.874625730986795575e-06, + 8.861229886460736963e-06, + 8.847821128759979773e-06, + 8.834399481166017385e-06, + 8.820964966976443578e-06, + 8.807517609511247684e-06, + 8.794057432104594979e-06, + 8.780584458111298011e-06, + 8.767098710903802863e-06, + 8.753600213872709228e-06, + 8.740088990426787347e-06, + 8.726565063993450659e-06, + 8.713028458016512854e-06, + 8.699479195959462503e-06, + 8.685917301303814733e-06, + 8.672342797546683628e-06, + 8.658755708206572550e-06, + 8.645156056818142860e-06, + 8.631543866932635744e-06, + 8.617919162120869011e-06, + 8.604281965970795947e-06, + 8.590632302088108404e-06, + 8.576970194096678946e-06, + 8.563295665636290807e-06, + 8.549608740366046347e-06, + 8.535909441962551014e-06, + 8.522197794117604335e-06, + 8.508473820543974983e-06, + 8.494737544970089882e-06, + 8.480988991140544123e-06, + 8.467228182819045245e-06, + 8.453455143786022915e-06, + 8.439669897839116813e-06, + 8.425872468793222376e-06, + 8.412062880480993931e-06, + 8.398241156750393388e-06, + 8.384407321468327393e-06, + 8.370561398518053717e-06, + 8.356703411799948667e-06, + 8.342833385231857759e-06, + 8.328951342746807030e-06, + 8.315057308296499596e-06, + 8.301151305848877889e-06, + 8.287233359388709801e-06, + 8.273303492917465023e-06, + 8.259361730453989277e-06, + 8.245408096032003878e-06, + 8.231442613703619229e-06, + 8.217465307536968205e-06, + 8.203476201616809245e-06, + 8.189475320044938009e-06, + 8.175462686937817378e-06, + 8.161438326430192595e-06, + 8.147402262672560325e-06, + 8.133354519831820874e-06, + 8.119295122091103699e-06, + 8.105224093650490775e-06, + 8.091141458724414510e-06, + 8.077047241544762964e-06, + 8.062941466361333865e-06, + 8.048824157436420369e-06, + 8.034695339050772480e-06, + 8.020555035501208418e-06, + 8.006403271098639336e-06, + 7.992240070171828455e-06, + 7.978065457064750012e-06, + 7.963879456137246560e-06, + 7.949682091765599868e-06, + 7.935473388340013538e-06, + 7.921253370267672487e-06, + 7.907022061973234230e-06, + 7.892779487893424807e-06, + 7.878525672482920579e-06, + 7.864260640212017195e-06, + 7.849984415564678029e-06, + 7.835697023042191664e-06, + 7.821398487160662988e-06, + 7.807088832451619659e-06, + 7.792768083461888449e-06, + 7.778436264754311826e-06, + 7.764093400904481800e-06, + 7.749739516507538206e-06, + 7.735374636169484923e-06, + 7.720998784513981387e-06, + 7.706611986179757442e-06, + 7.692214265818095962e-06, + 7.677805648099131385e-06, + 7.663386157706017046e-06, + 7.648955819335623131e-06, + 7.634514657701608020e-06, + 7.620062697532444698e-06, + 7.605599963568933021e-06, + 7.591126480571065765e-06, + 7.576642273309071253e-06, + 7.562147366570505558e-06, + 7.547641785157476782e-06, + 7.533125553884204749e-06, + 7.518598697583264489e-06, + 7.504061241099793377e-06, + 7.489513209292235673e-06, + 7.474954627035267333e-06, + 7.460385519218042646e-06, + 7.445805910741463400e-06, + 7.431215826524601088e-06, + 7.416615291498823579e-06, + 7.402004330608494769e-06, + 7.387382968814039147e-06, + 7.372751231089399846e-06, + 7.358109142422623946e-06, + 7.343456727816425749e-06, + 7.328794012285628739e-06, + 7.314121020860926410e-06, + 7.299437778586936632e-06, + 7.284744310519639373e-06, + 7.270040641732654063e-06, + 7.255326797311473840e-06, + 7.240602802354131318e-06, + 7.225868681974208093e-06, + 7.211124461298365646e-06, + 7.196370165466891676e-06, + 7.181605819634298953e-06, + 7.166831448966706293e-06, + 7.152047078645627337e-06, + 7.137252733865505680e-06, + 7.122448439834074869e-06, + 7.107634221772515943e-06, + 7.092810104915951256e-06, + 7.077976114510861876e-06, + 7.063132275818931417e-06, + 7.048278614114378732e-06, + 7.033415154684555076e-06, + 7.018541922830024569e-06, + 7.003658943864974163e-06, + 6.988766243114719127e-06, + 6.973863845919505382e-06, + 6.958951777631881154e-06, + 6.944030063617300910e-06, + 6.929098729254687789e-06, + 6.914157799933911136e-06, + 6.899207301059504130e-06, + 6.884247258048103206e-06, + 6.869277696329034196e-06, + 6.854298641344260666e-06, + 6.839310118548995472e-06, + 6.824312153409085119e-06, + 6.809304771404841742e-06, + 6.794287998028394435e-06, + 6.779261858784271155e-06, + 6.764226379189446167e-06, + 6.749181584773869428e-06, + 6.734127501077807762e-06, + 6.719064153655794565e-06, + 6.703991568073881188e-06, + 6.688909769910336585e-06, + 6.673818784756186874e-06, + 6.658718638212611557e-06, + 6.643609355894070765e-06, + 6.628490963429097234e-06, + 6.613363486454168022e-06, + 6.598226950620306286e-06, + 6.583081381590476651e-06, + 6.567926805037437137e-06, + 6.552763246647708357e-06, + 6.537590732118908748e-06, + 6.522409287160352580e-06, + 6.507218937493031316e-06, + 6.492019708850176049e-06, + 6.476811626973962536e-06, + 6.461594717622724538e-06, + 6.446369006561638993e-06, + 6.431134519569977468e-06, + 6.415891282438393110e-06, + 6.400639320966260968e-06, + 6.385378660968248421e-06, + 6.370109328268257201e-06, + 6.354831348700163702e-06, + 6.339544748110938598e-06, + 6.324249552358719000e-06, + 6.308945787310064067e-06, + 6.293633478847287771e-06, + 6.278312652858990763e-06, + 6.262983335247414311e-06, + 6.247645551925761985e-06, + 6.232299328815393434e-06, + 6.216944691852528654e-06, + 6.201581666982166291e-06, + 6.186210280158729925e-06, + 6.170830557349320679e-06, + 6.155442524531731773e-06, + 6.140046207691655856e-06, + 6.124641632830106708e-06, + 6.109228825953868947e-06, + 6.093807813082923114e-06, + 6.078378620247027055e-06, + 6.062941273486329166e-06, + 6.047495798851310800e-06, + 6.032042222403442714e-06, + 6.016580570212506752e-06, + 6.001110868360436295e-06, + 5.985633142939394340e-06, + 5.970147420048951184e-06, + 5.954653725802859001e-06, + 5.939152086322856637e-06, + 5.923642527739360790e-06, + 5.908125076194725394e-06, + 5.892599757840634450e-06, + 5.877066598838586531e-06, + 5.861525625360566477e-06, + 5.845976863586365384e-06, + 5.830420339707517613e-06, + 5.814856079924572496e-06, + 5.799284110447743164e-06, + 5.783704457496883678e-06, + 5.768117147302049763e-06, + 5.752522206100800162e-06, + 5.736919660142204795e-06, + 5.721309535684074963e-06, + 5.705691858993668078e-06, + 5.690066656347517411e-06, + 5.674433954032209665e-06, + 5.658793778341471185e-06, + 5.643146155580370087e-06, + 5.627491112062411782e-06, + 5.611828674110222531e-06, + 5.596158868056241473e-06, + 5.580481720239857653e-06, + 5.564797257011506271e-06, + 5.549105504729938695e-06, + 5.533406489762762028e-06, + 5.517700238486473824e-06, + 5.501986777287058411e-06, + 5.486266132557245886e-06, + 5.470538330700534674e-06, + 5.454803398128421735e-06, + 5.439061361261064939e-06, + 5.423312246527223776e-06, + 5.407556080364884467e-06, + 5.391792889218486775e-06, + 5.376022699543006707e-06, + 5.360245537801180786e-06, + 5.344461430464073563e-06, + 5.328670404011775571e-06, + 5.312872484930677575e-06, + 5.297067699716720636e-06, + 5.281256074876142349e-06, + 5.265437636919206255e-06, + 5.249612412367045022e-06, + 5.233780427748856765e-06, + 5.217941709599103064e-06, + 5.202096284465089905e-06, + 5.186244178897209014e-06, + 5.170385419456489160e-06, + 5.154520032711837362e-06, + 5.138648045237881502e-06, + 5.122769483618399110e-06, + 5.106884374446950102e-06, + 5.090992744320646846e-06, + 5.075094619846943140e-06, + 5.059190027640938946e-06, + 5.043278994322459822e-06, + 5.027361546523005982e-06, + 5.011437710879462231e-06, + 4.995507514034679869e-06, + 4.979570982641024922e-06, + 4.963628143358147048e-06, + 4.947679022850196195e-06, + 4.931723647793417939e-06, + 4.915762044866382962e-06, + 4.899794240757567149e-06, + 4.883820262162587720e-06, + 4.867840135781259792e-06, + 4.851853888324661476e-06, + 4.835861546508738784e-06, + 4.819863137054887536e-06, + 4.803858686693549017e-06, + 4.787848222161978895e-06, + 4.771831770201385937e-06, + 4.755809357564692531e-06, + 4.739781011006553246e-06, + 4.723746757291116196e-06, + 4.707706623188424000e-06, + 4.691660635475088014e-06, + 4.675608820934229892e-06, + 4.659551206356192242e-06, + 4.643487818535585024e-06, + 4.627418684275538505e-06, + 4.611343830385566189e-06, + 4.595263283678601054e-06, + 4.579177070978098768e-06, + 4.563085219111602779e-06, + 4.546987754911404155e-06, + 4.530884705218038985e-06, + 4.514776096877403378e-06, + 4.498661956741463286e-06, + 4.482542311668827937e-06, + 4.466417188521978348e-06, + 4.450286614171367809e-06, + 4.434150615492647853e-06, + 4.418009219367240001e-06, + 4.401862452682358630e-06, + 4.385710342331614913e-06, + 4.369552915212236851e-06, + 4.353390198229135883e-06, + 4.337222218292153179e-06, + 4.321049002316644940e-06, + 4.304870577223484941e-06, + 4.288686969939704884e-06, + 4.272498207395618726e-06, + 4.256304316529029888e-06, + 4.240105324282379298e-06, + 4.223901257603334075e-06, + 4.207692143445558334e-06, + 4.191478008765729930e-06, + 4.175258880527836615e-06, + 4.159034785700230054e-06, + 4.142805751256305145e-06, + 4.126571804174509339e-06, + 4.110332971438945726e-06, + 4.094089280036498204e-06, + 4.077840756961038693e-06, + 4.061587429210616681e-06, + 4.045329323788009792e-06, + 4.029066467701484425e-06, + 4.012798887961876029e-06, + 3.996526611586779376e-06, + 3.980249665597699990e-06, + 3.963968077020714830e-06, + 3.947681872886403685e-06, + 3.931391080230560675e-06, + 3.915095726091238113e-06, + 3.898795837512320134e-06, + 3.882491441544196082e-06, + 3.866182565237212955e-06, + 3.849869235648880257e-06, + 3.833551479840875743e-06, + 3.817229324876197694e-06, + 3.800902797826984719e-06, + 3.784571925764404733e-06, + 3.768236735766551411e-06, + 3.751897254915494403e-06, + 3.735553510295083398e-06, + 3.719205528994500159e-06, + 3.702853338108944192e-06, + 3.686496964733097892e-06, + 3.670136435968268296e-06, + 3.653771778919530469e-06, + 3.637403020692694276e-06, + 3.621030188402280471e-06, + 3.604653309161312250e-06, + 3.588272410089274828e-06, + 3.571887518308392296e-06, + 3.555498660945086220e-06, + 3.539105865126263939e-06, + 3.522709157987295074e-06, + 3.506308566661768784e-06, + 3.489904118289450367e-06, + 3.473495840013325964e-06, + 3.457083758976690038e-06, + 3.440667902330283740e-06, + 3.424248297225794781e-06, + 3.407824970816496094e-06, + 3.391397950260860971e-06, + 3.374967262720290897e-06, + 3.358532935356216156e-06, + 3.342094995338024061e-06, + 3.325653469832813238e-06, + 3.309208386013415035e-06, + 3.292759771054644976e-06, + 3.276307652133999441e-06, + 3.259852056431645930e-06, + 3.243393011131052406e-06, + 3.226930543416101880e-06, + 3.210464680475321643e-06, + 3.193995449499030885e-06, + 3.177522877679941241e-06, + 3.161046992213152976e-06, + 3.144567820296833465e-06, + 3.128085389129238173e-06, + 3.111599725913080922e-06, + 3.095110857852523115e-06, + 3.078618812153894134e-06, + 3.062123616026345253e-06, + 3.045625296678954477e-06, + 3.029123881324963401e-06, + 3.012619397178873582e-06, + 2.996111871457131364e-06, + 2.979601331378063081e-06, + 2.963087804162578095e-06, + 2.946571317031177073e-06, + 2.930051897208310821e-06, + 2.913529571919445314e-06, + 2.897004368391669018e-06, + 2.880476313853699244e-06, + 2.863945435536575867e-06, + 2.847411760670681042e-06, + 2.830875316490048480e-06, + 2.814336130229450086e-06, + 2.797794229125061294e-06, + 2.781249640415124300e-06, + 2.764702391337001235e-06, + 2.748152509131511391e-06, + 2.731600021039980589e-06, + 2.715044954304883648e-06, + 2.698487336169846931e-06, + 2.681927193880306906e-06, + 2.665364554680554433e-06, + 2.648799445818066485e-06, + 2.632231894540537723e-06, + 2.615661928096586919e-06, + 2.599089573736406634e-06, + 2.582514858708835871e-06, + 2.565937810265668929e-06, + 2.549358455658700955e-06, + 2.532776822140430980e-06, + 2.516192936963977218e-06, + 2.499606827383789839e-06, + 2.483018520652685089e-06, + 2.466428044025453647e-06, + 2.449835424759533169e-06, + 2.433240690108395929e-06, + 2.416643867328817626e-06, + 2.400044983677911503e-06, + 2.383444066410121381e-06, + 2.366841142785296418e-06, + 2.350236240058326397e-06, + 2.333629385487192346e-06, + 2.317020606329984137e-06, + 2.300409929842666437e-06, + 2.283797383282671397e-06, + 2.267182993909621172e-06, + 2.250566788978650760e-06, + 2.233948795747736955e-06, + 2.217329041474683754e-06, + 2.200707553414148853e-06, + 2.184084358825712479e-06, + 2.167459484963483025e-06, + 2.150832959084201464e-06, + 2.134204808443483486e-06, + 2.117575060297251403e-06, + 2.100943741898016955e-06, + 2.084310880502930230e-06, + 2.067676503363442479e-06, + 2.051040637733324977e-06, + 2.034403310865729819e-06, + 2.017764550010135939e-06, + 2.001124382419742441e-06, + 1.984482835344743157e-06, + 1.967839936033027142e-06, + 1.951195711733834043e-06, + 1.934550189695499725e-06, + 1.917903397162442102e-06, + 1.901255361383240560e-06, + 1.884606109600261075e-06, + 1.867955669057748977e-06, + 1.851304066998796998e-06, + 1.834651330662371335e-06, + 1.817997487290660511e-06, + 1.801342564122348872e-06, + 1.784686588393341652e-06, + 1.768029587340408904e-06, + 1.751371588198180440e-06, + 1.734712618199830022e-06, + 1.718052704577060542e-06, + 1.701391874560775290e-06, + 1.684730155378084755e-06, + 1.668067574256692350e-06, + 1.651404158421897396e-06, + 1.634739935097292443e-06, + 1.618074931505458894e-06, + 1.601409174864956230e-06, + 1.584742692394726154e-06, + 1.568075511311079062e-06, + 1.551407658828407455e-06, + 1.534739162159114578e-06, + 1.518070048514329949e-06, + 1.501400345100913830e-06, + 1.484730079125818383e-06, + 1.468059277793121791e-06, + 1.451387968304703548e-06, + 1.434716177860943056e-06, + 1.418043933657713074e-06, + 1.401371262890785567e-06, + 1.384698192752820289e-06, + 1.368024750434061044e-06, + 1.351350963122290368e-06, + 1.334676858003528337e-06, + 1.318002462259036605e-06, + 1.301327803069694180e-06, + 1.284652907613010359e-06, + 1.267977803063817818e-06, + 1.251302516594218821e-06, + 1.234627075374293764e-06, + 1.217951506569083196e-06, + 1.201275837343015475e-06, + 1.184600094856856177e-06, + 1.167924306268439294e-06, + 1.151248498733346137e-06, + 1.134572699401910011e-06, + 1.117896935422871164e-06, + 1.101221233944074742e-06, + 1.084545622105748948e-06, + 1.067870127047894131e-06, + 1.051194775907251049e-06, + 1.034519595815037590e-06, + 1.017844613901376429e-06, + 1.001169857292245711e-06, + 9.844953531102117305e-07, + 9.678211284743605352e-07, + 9.511472105010235165e-07, + 9.344736262999929711e-07, + 9.178004029826546767e-07, + 9.011275676515627158e-07, + 8.844551474085461109e-07, + 8.677831693517051395e-07, + 8.511116605731332391e-07, + 8.344406481625958830e-07, + 8.177701592082118067e-07, + 8.011002207897472595e-07, + 7.844308599859841325e-07, + 7.677621038717099215e-07, + 7.510939795147064183e-07, + 7.344265139838655575e-07, + 7.177597343387587347e-07, + 7.010936676377667352e-07, + 6.844283409350404730e-07, + 6.677637812782647189e-07, + 6.511000157122985415e-07, + 6.344370712798868154e-07, + 6.177749750149356260e-07, + 6.011137539498838923e-07, + 5.844534351127043400e-07, + 5.677940455238765236e-07, + 5.511356122037777187e-07, + 5.344781621659461508e-07, + 5.178217224177934561e-07, + 5.011663199642638639e-07, + 4.845119818055667951e-07, + 4.678587349341631721e-07, + 4.512066063428870882e-07, + 4.345556230145135911e-07, + 4.179058119298759056e-07, + 4.012572000648514252e-07, + 3.846098143873600926e-07, + 3.679636818647292981e-07, + 3.513188294569780198e-07, + 3.346752841175200199e-07, + 3.180330727968186334e-07, + 3.013922224393870002e-07, + 2.847527599844809387e-07, + 2.681147123667981183e-07, + 2.514781065134692395e-07, + 2.348429693484620495e-07, + 2.182093277895757514e-07, + 2.015772087491357040e-07, + 1.849466391339513081e-07, + 1.683176458460147556e-07, + 1.516902557794915217e-07, + 1.350644958251257039e-07, + 1.184403928672312946e-07, + 1.018179737843907450e-07, + 8.519726544941147547e-08, + 6.857829473002349974e-08, + 5.196108848587238508e-08, + 3.534567357292238774e-08, + 1.873207684044938002e-08, + 2.120325131738584213e-09, +-1.448955471521754549e-08, +-3.109753587072635694e-08, +-4.770359150899183908e-08, +-6.430769481112213603e-08, +-8.090981896443071065e-08, +-9.750993716248049443e-08, +-1.141080226043853301e-07, +-1.307040484978157080e-07, +-1.472979880545979266e-07, +-1.638898144937205833e-07, +-1.804795010406340517e-07, +-1.970670209272974652e-07, +-2.136523473914769770e-07, +-2.302354536797533357e-07, +-2.468163130431218139e-07, +-2.633948987399936693e-07, +-2.799711840355049132e-07, +-2.965451422008121873e-07, +-3.131167465160993873e-07, +-3.296859702669199095e-07, +-3.462527867434999132e-07, +-3.628171692474379809e-07, +-3.793790910843530842e-07, +-3.959385255668831859e-07, +-4.124954460169487243e-07, +-4.290498257613568825e-07, +-4.456016381348025729e-07, +-4.621508564791703770e-07, +-4.786974541435817666e-07, +-4.952414044836916965e-07, +-5.117826808654321719e-07, +-5.283212566569228728e-07, +-5.448571052388635064e-07, +-5.613901999964394546e-07, +-5.779205143223272587e-07, +-5.944480216189531271e-07, +-6.109726952948361876e-07, +-6.274945087638998501e-07, +-6.440134354521575436e-07, +-6.605294487903689399e-07, +-6.770425222170383453e-07, +-6.935526291814105493e-07, +-7.100597431353887546e-07, +-7.265638375439181419e-07, +-7.430648858768963875e-07, +-7.595628616121967242e-07, +-7.760577382378802854e-07, +-7.925494892485892267e-07, +-8.090380881448305602e-07, +-8.255235084396590320e-07, +-8.420057236513520876e-07, +-8.584847073063940748e-07, +-8.749604329424672228e-07, +-8.914328741011308422e-07, +-9.079020043344904394e-07, +-9.243677972045009254e-07, +-9.408302262793258570e-07, +-9.572892651363327571e-07, +-9.737448873613937825e-07, +-9.901970665481823697e-07, +-1.006645776301187401e-06, +-1.023090990231303022e-06, +-1.039532681958106736e-06, +-1.055970825112826774e-06, +-1.072405393331039821e-06, +-1.088836360259331451e-06, +-1.105263699554587791e-06, +-1.121687384880381873e-06, +-1.138107389909942478e-06, +-1.154523688325467621e-06, +-1.170936253817428076e-06, +-1.187345060087544906e-06, +-1.203750080844436144e-06, +-1.220151289806583942e-06, +-1.236548660701641702e-06, +-1.252942167266487227e-06, +-1.269331783246524976e-06, +-1.285717482398659365e-06, +-1.302099238486931906e-06, +-1.318477025285509547e-06, +-1.334850816577986286e-06, +-1.351220586157407528e-06, +-1.367586307825625913e-06, +-1.383947955396217443e-06, +-1.400305502690169022e-06, +-1.416658923538818084e-06, +-1.433008191783191698e-06, +-1.449353281273303103e-06, +-1.465694165871109129e-06, +-1.482030819446185666e-06, +-1.498363215878669410e-06, +-1.514691329058593156e-06, +-1.531015132885903373e-06, +-1.547334601269787022e-06, +-1.563649708131634692e-06, +-1.579960427400692570e-06, +-1.596266733017014133e-06, +-1.612568598930811960e-06, +-1.628865999102448415e-06, +-1.645158907501784066e-06, +-1.661447298111112654e-06, +-1.677731144920848000e-06, +-1.694010421932469777e-06, +-1.710285103157820894e-06, +-1.726555162618457185e-06, +-1.742820574348580265e-06, +-1.759081312391424719e-06, +-1.775337350798594451e-06, +-1.791588663636639054e-06, +-1.807835224979833903e-06, +-1.824077008913113017e-06, +-1.840313989534303523e-06, +-1.856546140949802196e-06, +-1.872773437277525879e-06, +-1.888995852646206546e-06, +-1.905213361194741624e-06, +-1.921425937075120281e-06, +-1.937633554448814219e-06, +-1.953836187486121860e-06, +-1.970033810372750212e-06, +-1.986226397302554317e-06, +-2.002413922480520078e-06, +-2.018596360124963579e-06, +-2.034773684463954910e-06, +-2.050945869734616404e-06, +-2.067112890189717633e-06, +-2.083274720090436664e-06, +-2.099431333709318749e-06, +-2.115582705333213829e-06, +-2.131728809255329676e-06, +-2.147869619785452193e-06, +-2.164005111241965509e-06, +-2.180135257954842863e-06, +-2.196260034267817966e-06, +-2.212379414534843133e-06, +-2.228493373119361261e-06, +-2.244601884400901250e-06, +-2.260704922767857470e-06, +-2.276802462620435742e-06, +-2.292894478373581106e-06, +-2.308980944449066114e-06, +-2.325061835285648867e-06, +-2.341137125331177824e-06, +-2.357206789046216680e-06, +-2.373270800903387914e-06, +-2.389329135387403284e-06, +-2.405381766994392126e-06, +-2.421428670234793553e-06, +-2.437469819629117476e-06, +-2.453505189710126982e-06, +-2.469534755025724605e-06, +-2.485558490131870277e-06, +-2.501576369599008196e-06, +-2.517588368011473898e-06, +-2.533594459963861336e-06, +-2.549594620063989189e-06, +-2.565588822932219846e-06, +-2.581577043200747053e-06, +-2.597559255516553327e-06, +-2.613535434537091359e-06, +-2.629505554932520182e-06, +-2.645469591388598635e-06, +-2.661427518599544451e-06, +-2.677379311274545400e-06, +-2.693324944137077003e-06, +-2.709264391921344149e-06, +-2.725197629375199967e-06, +-2.741124631259468626e-06, +-2.757045372347988533e-06, +-2.772959827426913953e-06, +-2.788867971297643205e-06, +-2.804769778772576293e-06, +-2.820665224677958399e-06, +-2.836554283853263666e-06, +-2.852436931150506560e-06, +-2.868313141437112039e-06, +-2.884182889591689711e-06, +-2.900046150506931526e-06, +-2.915902899088942204e-06, +-2.931753110257253630e-06, +-2.947596758944193393e-06, +-2.963433820097714721e-06, +-2.979264268677219340e-06, +-2.995088079656418328e-06, +-3.010905228022654909e-06, +-3.026715688776241655e-06, +-3.042519436933361144e-06, +-3.058316447521787179e-06, +-3.074106695583832459e-06, +-3.089890156175636225e-06, +-3.105666804367200260e-06, +-3.121436615241742178e-06, +-3.137199563898560513e-06, +-3.152955625449535204e-06, +-3.168704775018422863e-06, +-3.184446987747337420e-06, +-3.200182238789650725e-06, +-3.215910503312874569e-06, +-3.231631756500844339e-06, +-3.247345973549499947e-06, +-3.263053129669733130e-06, +-3.278753200086767000e-06, +-3.294446160039447499e-06, +-3.310131984783103406e-06, +-3.325810649586098914e-06, +-3.341482129729123395e-06, +-3.357146400511599621e-06, +-3.372803437244649585e-06, +-3.388453215254012952e-06, +-3.404095709882114664e-06, +-3.419730896483918715e-06, +-3.435358750429811454e-06, +-3.450979247104884990e-06, +-3.466592361908992675e-06, +-3.482198070256114679e-06, +-3.497796347577859619e-06, +-3.513387169315818396e-06, +-3.528970510931409683e-06, +-3.544546347898220626e-06, +-3.560114655704791471e-06, +-3.575675409856856382e-06, +-3.591228585873772354e-06, +-3.606774159287923329e-06, +-3.622312105651081829e-06, +-3.637842400527333695e-06, +-3.653365019496061762e-06, +-3.668879938154669065e-06, +-3.684387132110977990e-06, +-3.699886576993036803e-06, +-3.715378248441487030e-06, +-3.730862122113092622e-06, +-3.746338173680054283e-06, +-3.761806378830065796e-06, +-3.777266713265654184e-06, +-3.792719152707006263e-06, +-3.808163672887844008e-06, +-3.823600249557498944e-06, +-3.839028858483785700e-06, +-3.854449475446066929e-06, +-3.869862076241541680e-06, +-3.885266636684585986e-06, +-3.900663132603341008e-06, +-3.916051539842485381e-06, +-3.931431834262639746e-06, +-3.946803991739630681e-06, +-3.962167988167406185e-06, +-3.977523799453793740e-06, +-3.992871401522714453e-06, +-4.008210770316941846e-06, +-4.023541881791229870e-06, +-4.038864711918564866e-06, +-4.054179236689563314e-06, +-4.069485432108951571e-06, +-4.084783274198478816e-06, +-4.100072738996196223e-06, +-4.115353802556489148e-06, +-4.130626440949467269e-06, +-4.145890630263748780e-06, +-4.161146346602320094e-06, +-4.176393566085378489e-06, +-4.191632264849685815e-06, +-4.206862419047840903e-06, +-4.222084004851156923e-06, +-4.237296998445547358e-06, +-4.252501376034251747e-06, +-4.267697113837283421e-06, +-4.282884188091405792e-06, +-4.298062575049475894e-06, +-4.313232250983277714e-06, +-4.328393192179386127e-06, +-4.343545374941984131e-06, +-4.358688775592199616e-06, +-4.373823370467444682e-06, +-4.388949135924211693e-06, +-4.404066048334010058e-06, +-4.419174084086123329e-06, +-4.434273219586960366e-06, +-4.449363431260068898e-06, +-4.464444695545580708e-06, +-4.479516988902837442e-06, +-4.494580287807158327e-06, +-4.509634568749064292e-06, +-4.524679808240590901e-06, +-4.539715982808371484e-06, +-4.554743068996493333e-06, +-4.569761043368515333e-06, +-4.584769882503475048e-06, +-4.599769562998600077e-06, +-4.614760061468698185e-06, +-4.629741354545476293e-06, +-4.644713418880363637e-06, +-4.659676231141059261e-06, +-4.674629768010967895e-06, +-4.689574006195267251e-06, +-4.704508922414262200e-06, +-4.719434493406024980e-06, +-4.734350695928539029e-06, +-4.749257506755658643e-06, +-4.764154902679821174e-06, +-4.779042860511415990e-06, +-4.793921357078847155e-06, +-4.808790369227881215e-06, +-4.823649873825025166e-06, +-4.838499847750190297e-06, +-4.853340267906162871e-06, +-4.868171111211170564e-06, +-4.882992354601672584e-06, +-4.897803975035081196e-06, +-4.912605949483018491e-06, +-4.927398254937481087e-06, +-4.942180868410126087e-06, +-4.956953766928990515e-06, +-4.971716927540582643e-06, +-4.986470327312494242e-06, +-5.001213943326131339e-06, +-5.015947752686136621e-06, +-5.030671732513048191e-06, +-5.045385859945959259e-06, +-5.060090112145313345e-06, +-5.074784466286205946e-06, +-5.089468899564424727e-06, +-5.104143389195866762e-06, +-5.118807912413163956e-06, +-5.133462446467779447e-06, +-5.148106968632700332e-06, +-5.162741456195757109e-06, +-5.177365886465717240e-06, +-5.191980236771658341e-06, +-5.206584484459601228e-06, +-5.221178606895272940e-06, +-5.235762581463446896e-06, +-5.250336385567321179e-06, +-5.264899996631223954e-06, +-5.279453392096607005e-06, +-5.293996549424208208e-06, +-5.308529446096535033e-06, +-5.323052059611453352e-06, +-5.337564367488083636e-06, +-5.352066347266202098e-06, +-5.366557976502981316e-06, +-5.381039232775630434e-06, +-5.395510093680825950e-06, +-5.409970536834035791e-06, +-5.424420539872183228e-06, +-5.438860080449800500e-06, +-5.453289136241626662e-06, +-5.467707684941966387e-06, +-5.482115704264850895e-06, +-5.496513171943234123e-06, +-5.510900065731834519e-06, +-5.525276363403080298e-06, +-5.539642042749865683e-06, +-5.553997081584867352e-06, +-5.568341457740615588e-06, +-5.582675149068888652e-06, +-5.596998133443297924e-06, +-5.611310388755469482e-06, +-5.625611892917665669e-06, +-5.639902623862120169e-06, +-5.654182559540512849e-06, +-5.668451677926524409e-06, +-5.682709957011989161e-06, +-5.696957374809574190e-06, +-5.711193909352083944e-06, +-5.725419538692597451e-06, +-5.739634240903746647e-06, +-5.753837994080404014e-06, +-5.768030776335783683e-06, +-5.782212565804145168e-06, +-5.796383340640092018e-06, +-5.810543079018671771e-06, +-5.824691759134700018e-06, +-5.838829359205462443e-06, +-5.852955857466760021e-06, +-5.867071232175622914e-06, +-5.881175461609659102e-06, +-5.895268524066431815e-06, +-5.909350397866103123e-06, +-5.923421061348209278e-06, +-5.937480492871104219e-06, +-5.951528670817691438e-06, +-5.965565573589120365e-06, +-5.979591179607341866e-06, +-5.993605467317088605e-06, +-6.007608415182020195e-06, +-6.021600001687333757e-06, +-6.035580205339262478e-06, +-6.049549004664253981e-06, +-6.063506378211770626e-06, +-6.077452304550977603e-06, +-6.091386762270247423e-06, +-6.105309729982841814e-06, +-6.119221186320633508e-06, +-6.133121109936675301e-06, +-6.147009479507738601e-06, +-6.160886273728064873e-06, +-6.174751471315002641e-06, +-6.188605051008522137e-06, +-6.202446991567988954e-06, +-6.216277271774168124e-06, +-6.230095870431691529e-06, +-6.243902766362289255e-06, +-6.257697938413502177e-06, +-6.271481365451841323e-06, +-6.285253026365367081e-06, +-6.299012900066198966e-06, +-6.312760965484294161e-06, +-6.326497201573076045e-06, +-6.340221587308925136e-06, +-6.353934101687977299e-06, +-6.367634723728118512e-06, +-6.381323432471470057e-06, +-6.395000206977551277e-06, +-6.408665026332088712e-06, +-6.422317869640115323e-06, +-6.435958716029202773e-06, +-6.449587544648801584e-06, +-6.463204334670332620e-06, +-6.476809065286531482e-06, +-6.490401715713983677e-06, +-6.503982265189471365e-06, +-6.517550692971872409e-06, +-6.531106978344549007e-06, +-6.544651100609355777e-06, +-6.558183039092133618e-06, +-6.571702773142133728e-06, +-6.585210282128979289e-06, +-6.598705545445182860e-06, +-6.612188542505498387e-06, +-6.625659252746412989e-06, +-6.639117655628566082e-06, +-6.652563730633197772e-06, +-6.665997457264473108e-06, +-6.679418815049063657e-06, +-6.692827783536062789e-06, +-6.706224342296478314e-06, +-6.719608470925692263e-06, +-6.732980149039743256e-06, +-6.746339356277991274e-06, +-6.759686072302290104e-06, +-6.773020276797226204e-06, +-6.786341949469405497e-06, +-6.799651070050027513e-06, +-6.812947618291168600e-06, +-6.826231573968288297e-06, +-6.839502916879694011e-06, +-6.852761626845841367e-06, +-6.866007683711936290e-06, +-6.879241067344244489e-06, +-6.892461757632545305e-06, +-6.905669734489563355e-06, +-6.918864977851049000e-06, +-6.932047467675152387e-06, +-6.945217183944839188e-06, +-6.958374106664405057e-06, +-6.971518215861788033e-06, +-6.984649491588093353e-06, +-6.997767913917607004e-06, +-7.010873462947188403e-06, +-7.023966118798691212e-06, +-7.037045861615507449e-06, +-7.050112671564835840e-06, +-7.063166528837227808e-06, +-7.076207413645955590e-06, +-7.089235306229458463e-06, +-7.102250186848422180e-06, +-7.115252035785120822e-06, +-7.128240833348922511e-06, +-7.141216559870240752e-06, +-7.154179195703088235e-06, +-7.167128721227318082e-06, +-7.180065116842259244e-06, +-7.192988362975008956e-06, +-7.205898440073889401e-06, +-7.218795328610908346e-06, +-7.231679009083577720e-06, +-7.244549462011904106e-06, +-7.257406667937880520e-06, +-7.270250607430868462e-06, +-7.283081261081650046e-06, +-7.295898609504827646e-06, +-7.308702633341246415e-06, +-7.321493313252166688e-06, +-7.334270629924481717e-06, +-7.347034564070233157e-06, +-7.359785096423673566e-06, +-7.372522207743096833e-06, +-7.385245878813163292e-06, +-7.397956090438491066e-06, +-7.410652823451964616e-06, +-7.423336058708173621e-06, +-7.436005777085914267e-06, +-7.448661959490440661e-06, +-7.461304586847834606e-06, +-7.473933640110069158e-06, +-7.486549100254563938e-06, +-7.499150948281307760e-06, +-7.511739165214675515e-06, +-7.524313732105604204e-06, +-7.536874630025443470e-06, +-7.549421840073951599e-06, +-7.561955343373056265e-06, +-7.574475121069687866e-06, +-7.586981154335321270e-06, +-7.599473424365897892e-06, +-7.611951912381400485e-06, +-7.624416599628073211e-06, +-7.636867467375010638e-06, +-7.649304496916011051e-06, +-7.661727669571784667e-06, +-7.674136966684323404e-06, +-7.686532369622000869e-06, +-7.698913859779140371e-06, +-7.711281418573099432e-06, +-7.723635027446600822e-06, +-7.735974667867176908e-06, +-7.748300321326658042e-06, +-7.760611969343510376e-06, +-7.772909593459312202e-06, +-7.785193175241245924e-06, +-7.797462696281374692e-06, +-7.809718138196813502e-06, +-7.821959482629080369e-06, +-7.834186711246454468e-06, +-7.846399805740610024e-06, +-7.858598747828852478e-06, +-7.870783519253652619e-06, +-7.882954101782573743e-06, +-7.895110477207865072e-06, +-7.907252627348640325e-06, +-7.919380534047537021e-06, +-7.931494179173035654e-06, +-7.943593544618932837e-06, +-7.955678612303694174e-06, +-7.967749364172919119e-06, +-7.979805782195810549e-06, +-7.991847848367534591e-06, +-8.003875544708700552e-06, +-8.015888853265384630e-06, +-8.027887756108509885e-06, +-8.039872235336202692e-06, +-8.051842273070465586e-06, +-8.063797851459406660e-06, +-8.075738952676677132e-06, +-8.087665558921008866e-06, +-8.099577652418376000e-06, +-8.111475215418850756e-06, +-8.123358230198626163e-06, +-8.135226679059638272e-06, +-8.147080544329628841e-06, +-8.158919808361466013e-06, +-8.170744453535448246e-06, +-8.182554462256651405e-06, +-8.194349816954291796e-06, +-8.206130500086757538e-06, +-8.217896494136102850e-06, +-8.229647781610384172e-06, +-8.241384345045669319e-06, +-8.253106167000247171e-06, +-8.264813230062179815e-06, +-8.276505516843378398e-06, +-8.288183009981807108e-06, +-8.299845692143063733e-06, +-8.311493546017887694e-06, +-8.323126554321370611e-06, +-8.334744699798050355e-06, +-8.346347965216495123e-06, +-8.357936333371424406e-06, +-8.369509787085933301e-06, +-8.381068309205632732e-06, +-8.392611882606098263e-06, +-8.404140490187117046e-06, +-8.415654114875315321e-06, +-8.427152739623119948e-06, +-8.438636347411455368e-06, +-8.450104921243849939e-06, +-8.461558444154111756e-06, +-8.472996899200204598e-06, +-8.484420269466717878e-06, +-8.495828538066745362e-06, +-8.507221688136743678e-06, +-8.518599702841290949e-06, +-8.529962565372612452e-06, +-8.541310258947915854e-06, +-8.552642766811031070e-06, +-8.563960072234507511e-06, +-8.575262158513906780e-06, +-8.586549008975171858e-06, +-8.597820606968782577e-06, +-8.609076935872012114e-06, +-8.620317979090973425e-06, +-8.631543720055435400e-06, +-8.642754142223474774e-06, +-8.653949229081132224e-06, +-8.665128964139713727e-06, +-8.676293330937886119e-06, +-8.687442313041248494e-06, +-8.698575894042322044e-06, +-8.709694057560018115e-06, +-8.720796787241821867e-06, +-8.731884066760673492e-06, +-8.742955879817028200e-06, +-8.754012210138375106e-06, +-8.765053041478752723e-06, +-8.776078357620851304e-06, +-8.787088142372917777e-06, +-8.798082379570849616e-06, +-8.809061053077718803e-06, +-8.820024146783768447e-06, +-8.830971644605965543e-06, +-8.841903530489981340e-06, +-8.852819788407258910e-06, +-8.863720402356998598e-06, +-8.874605356365705699e-06, +-8.885474634486697492e-06, +-8.896328220802210654e-06, +-8.907166099420233356e-06, +-8.917988254476721106e-06, +-8.928794670135017372e-06, +-8.939585330585901021e-06, +-8.950360220047111980e-06, +-8.961119322765362087e-06, +-8.971862623013394201e-06, +-8.982590105091955781e-06, +-8.993301753329321164e-06, +-9.003997552081406761e-06, +-9.014677485731123922e-06, +-9.025341538690599856e-06, +-9.035989695397986016e-06, +-9.046621940319716281e-06, +-9.057238257949832725e-06, +-9.067838632809619695e-06, +-9.078423049449516410e-06, +-9.088991492446309899e-06, +-9.099543946404964586e-06, +-9.110080395958319058e-06, +-9.120600825766969169e-06, +-9.131105220518885186e-06, +-9.141593564931354879e-06, +-9.152065843748068036e-06, +-9.162522041741127317e-06, +-9.172962143710556977e-06, +-9.183386134484291006e-06, +-9.193793998917786884e-06, +-9.204185721896385411e-06, +-9.214561288330108235e-06, +-9.224920683160337551e-06, +-9.235263891354605155e-06, +-9.245590897908508433e-06, +-9.255901687847167258e-06, +-9.266196246222904812e-06, +-9.276474558114654664e-06, +-9.286736608632461905e-06, +-9.296982382912646585e-06, +-9.307211866119653639e-06, +-9.317425043448123031e-06, +-9.327621900117538201e-06, +-9.337802421379049763e-06, +-9.347966592510140892e-06, +-9.358114398817129459e-06, +-9.368245825634102461e-06, +-9.378360858325455429e-06, +-9.388459482280608637e-06, +-9.398541682920681718e-06, +-9.408607445693308131e-06, +-9.418656756074574865e-06, +-9.428689599570838479e-06, +-9.438705961714212111e-06, +-9.448705828066600741e-06, +-9.458689184219452162e-06, +-9.468656015791229440e-06, +-9.478606308429052456e-06, +-9.488540047810405529e-06, +-9.498457219638106042e-06, +-9.508357809646901128e-06, +-9.518241803598256729e-06, +-9.528109187282304078e-06, +-9.537959946519709942e-06, +-9.547794067157007783e-06, +-9.557611535070887129e-06, +-9.567412336167676885e-06, +-9.577196456381002439e-06, +-9.586963881673860895e-06, +-9.596714598037896010e-06, +-9.606448591493633670e-06, +-9.616165848090000779e-06, +-9.625866353906044727e-06, +-9.635550095048351645e-06, +-9.645217057652916644e-06, +-9.654867227884562756e-06, +-9.664500591936615672e-06, +-9.674117136032682509e-06, +-9.683716846424027705e-06, +-9.693299709391273861e-06, +-9.702865711244093417e-06, +-9.712414838321190025e-06, +-9.721947076989829282e-06, +-9.731462413647678497e-06, +-9.740960834720180879e-06, +-9.750442326662276716e-06, +-9.759906875958027287e-06, +-9.769354469120201511e-06, +-9.778785092692063188e-06, +-9.788198733244668964e-06, +-9.797595377378743659e-06, +-9.806975011724248283e-06, +-9.816337622940305498e-06, +-9.825683197714892987e-06, +-9.835011722766542609e-06, +-9.844323184841738308e-06, +-9.853617570716740625e-06, +-9.862894867197129298e-06, +-9.872155061117808349e-06, +-9.881398139342570703e-06, +-9.890624088765924394e-06, +-9.899832896310449822e-06, +-9.909024548928592075e-06, +-9.918199033602161181e-06, +-9.927356337342037334e-06, +-9.936496447189902239e-06, +-9.945619350215926705e-06, +-9.954725033518599546e-06, +-9.963813484228427423e-06, +-9.972884689503787767e-06, +-9.981938636532597438e-06, +-9.990975312533598518e-06, +-9.999994704753888364e-06, +-1.000899680047054761e-05, +-1.001798158699026914e-05, +-1.002694905164942591e-05, +-1.003589918181362874e-05, +-1.004483196487976597e-05, +-1.005374738827157013e-05, +-1.006264543944535912e-05, +-1.007152610588555027e-05, +-1.008038937510621558e-05, +-1.008923523465254531e-05, +-1.009806367209857290e-05, +-1.010687467504694118e-05, +-1.011566823113257002e-05, +-1.012444432801849229e-05, +-1.013320295339771907e-05, +-1.014194409499467281e-05, +-1.015066774056075904e-05, +-1.015937387788016346e-05, +-1.016806249476540333e-05, +-1.017673357905881993e-05, +-1.018538711863399653e-05, +-1.019402310139365431e-05, +-1.020264151526920516e-05, +-1.021124234822458872e-05, +-1.021982558825201860e-05, +-1.022839122337380518e-05, +-1.023693924164390568e-05, +-1.024546963114388554e-05, +-1.025398237998656397e-05, +-1.026247747631575994e-05, +-1.027095490830407118e-05, +-1.027941466415429387e-05, +-1.028785673210093368e-05, +-1.029628110040582836e-05, +-1.030468775736376523e-05, +-1.031307669129816982e-05, +-1.032144789056265418e-05, +-1.032980134354262124e-05, +-1.033813703865127522e-05, +-1.034645496433332151e-05, +-1.035475510906452617e-05, +-1.036303746134965602e-05, +-1.037130200972420481e-05, +-1.037954874275403751e-05, +-1.038777764903486008e-05, +-1.039598871719391010e-05, +-1.040418193588763088e-05, +-1.041235729380319605e-05, +-1.042051477965813184e-05, +-1.042865438220044580e-05, +-1.043677609020806607e-05, +-1.044487989249060323e-05, +-1.045296577788689047e-05, +-1.046103373526659807e-05, +-1.046908375352987935e-05, +-1.047711582160738078e-05, +-1.048512992845987614e-05, +-1.049312606307972672e-05, +-1.050110421448879091e-05, +-1.050906437173974217e-05, +-1.051700652391589451e-05, +-1.052493066013068581e-05, +-1.053283676952929739e-05, +-1.054072484128639915e-05, +-1.054859486460764884e-05, +-1.055644682872927026e-05, +-1.056428072291825652e-05, +-1.057209653647171445e-05, +-1.057989425871870772e-05, +-1.058767387901773442e-05, +-1.059543538675840583e-05, +-1.060317877136108564e-05, +-1.061090402227679501e-05, +-1.061861112898700259e-05, +-1.062630008100497292e-05, +-1.063397086787361162e-05, +-1.064162347916706120e-05, +-1.064925790449018773e-05, +-1.065687413347832338e-05, +-1.066447215579864537e-05, +-1.067205196114860725e-05, +-1.067961353925523589e-05, +-1.068715687987868731e-05, +-1.069468197280850788e-05, +-1.070218880786516575e-05, +-1.070967737490107070e-05, +-1.071714766379844635e-05, +-1.072459966447090398e-05, +-1.073203336686292247e-05, +-1.073944876094952297e-05, +-1.074684583673787497e-05, +-1.075422458426530228e-05, +-1.076158499359914081e-05, +-1.076892705483979465e-05, +-1.077625075811725133e-05, +-1.078355609359264211e-05, +-1.079084305145907712e-05, +-1.079811162194004788e-05, +-1.080536179528906982e-05, +-1.081259356179283329e-05, +-1.081980691176772390e-05, +-1.082700183556120151e-05, +-1.083417832355324359e-05, +-1.084133636615257759e-05, +-1.084847595380142435e-05, +-1.085559707697180838e-05, +-1.086269972616683695e-05, +-1.086978389192195534e-05, +-1.087684956480302408e-05, +-1.088389673540608009e-05, +-1.089092539436044533e-05, +-1.089793553232527423e-05, +-1.090492713999100214e-05, +-1.091190020808055833e-05, +-1.091885472734586258e-05, +-1.092579068857246358e-05, +-1.093270808257572559e-05, +-1.093960690020281726e-05, +-1.094648713233207805e-05, +-1.095334876987318086e-05, +-1.096019180376681863e-05, +-1.096701622498601726e-05, +-1.097382202453411285e-05, +-1.098060919344584781e-05, +-1.098737772278861934e-05, +-1.099412760365927262e-05, +-1.100085882718696032e-05, +-1.100757138453296481e-05, +-1.101426526688894132e-05, +-1.102094046547834613e-05, +-1.102759697155602145e-05, +-1.103423477640792779e-05, +-1.104085387135255511e-05, +-1.104745424773874428e-05, +-1.105403589694721507e-05, +-1.106059881039017827e-05, +-1.106714297951131360e-05, +-1.107366839578548518e-05, +-1.108017505072007980e-05, +-1.108666293585297742e-05, +-1.109313204275399793e-05, +-1.109958236302448441e-05, +-1.110601388829728446e-05, +-1.111242661023657574e-05, +-1.111882052053903659e-05, +-1.112519561093195200e-05, +-1.113155187317451979e-05, +-1.113788929905763715e-05, +-1.114420788040339410e-05, +-1.115050760906654733e-05, +-1.115678847693245175e-05, +-1.116305047591851229e-05, +-1.116929359797374516e-05, +-1.117551783507879480e-05, +-1.118172317924579322e-05, +-1.118790962251935108e-05, +-1.119407715697492459e-05, +-1.120022577471994544e-05, +-1.120635546789359552e-05, +-1.121246622866677809e-05, +-1.121855804924177053e-05, +-1.122463092185353721e-05, +-1.123068483876792193e-05, +-1.123671979228276092e-05, +-1.124273577472768803e-05, +-1.124873277846382982e-05, +-1.125471079588495068e-05, +-1.126066981941606547e-05, +-1.126660984151308879e-05, +-1.127253085466549809e-05, +-1.127843285139343678e-05, +-1.128431582424882558e-05, +-1.129017976581640942e-05, +-1.129602466871178894e-05, +-1.130185052558273341e-05, +-1.130765732910896049e-05, +-1.131344507200167034e-05, +-1.131921374700485686e-05, +-1.132496334689379320e-05, +-1.133069386447484707e-05, +-1.133640529258795239e-05, +-1.134209762410384122e-05, +-1.134777085192510592e-05, +-1.135342496898718000e-05, +-1.135905996825690833e-05, +-1.136467584273214229e-05, +-1.137027258544437061e-05, +-1.137585018945598859e-05, +-1.138140864786134496e-05, +-1.138694795378782616e-05, +-1.139246810039290861e-05, +-1.139796908086795512e-05, +-1.140345088843524862e-05, +-1.140891351634910680e-05, +-1.141435695789660213e-05, +-1.141978120639631838e-05, +-1.142518625519804743e-05, +-1.143057209768526595e-05, +-1.143593872727240118e-05, +-1.144128613740589316e-05, +-1.144661432156533984e-05, +-1.145192327326052577e-05, +-1.145721298603519640e-05, +-1.146248345346403255e-05, +-1.146773466915413267e-05, +-1.147296662674466727e-05, +-1.147817931990687890e-05, +-1.148337274234389415e-05, +-1.148854688779171125e-05, +-1.149370175001762629e-05, +-1.149883732282114803e-05, +-1.150395360003480090e-05, +-1.150905057552186507e-05, +-1.151412824317837886e-05, +-1.151918659693322516e-05, +-1.152422563074649833e-05, +-1.152924533861077811e-05, +-1.153424571455081796e-05, +-1.153922675262328246e-05, +-1.154418844691776206e-05, +-1.154913079155527381e-05, +-1.155405378068907792e-05, +-1.155895740850556376e-05, +-1.156384166922184597e-05, +-1.156870655708799555e-05, +-1.157355206638682471e-05, +-1.157837819143255532e-05, +-1.158318492657192519e-05, +-1.158797226618393218e-05, +-1.159274020467975636e-05, +-1.159748873650260070e-05, +-1.160221785612861606e-05, +-1.160692755806552224e-05, +-1.161161783685347361e-05, +-1.161628868706498119e-05, +-1.162094010330447561e-05, +-1.162557208020949122e-05, +-1.163018461244902289e-05, +-1.163477769472466268e-05, +-1.163935132177019671e-05, +-1.164390548835185412e-05, +-1.164844018926777690e-05, +-1.165295541934913790e-05, +-1.165745117345887375e-05, +-1.166192744649225058e-05, +-1.166638423337693527e-05, +-1.167082152907273280e-05, +-1.167523932857241638e-05, +-1.167963762690040096e-05, +-1.168401641911366824e-05, +-1.168837570030151760e-05, +-1.169271546558569148e-05, +-1.169703571011996542e-05, +-1.170133642909111703e-05, +-1.170561761771787912e-05, +-1.170987927125068383e-05, +-1.171412138497361764e-05, +-1.171834395420228511e-05, +-1.172254697428470845e-05, +-1.172673044060182896e-05, +-1.173089434856640419e-05, +-1.173503869362374484e-05, +-1.173916347125156066e-05, +-1.174326867695977743e-05, +-1.174735430629125017e-05, +-1.175142035482101610e-05, +-1.175546681815559662e-05, +-1.175949369193541989e-05, +-1.176350097183235761e-05, +-1.176748865355074825e-05, +-1.177145673282794255e-05, +-1.177540520543308549e-05, +-1.177933406716793957e-05, +-1.178324331386675102e-05, +-1.178713294139618202e-05, +-1.179100294565505997e-05, +-1.179485332257546848e-05, +-1.179868406812061116e-05, +-1.180249517828742555e-05, +-1.180628664910451127e-05, +-1.181005847663298724e-05, +-1.181381065696697110e-05, +-1.181754318623256613e-05, +-1.182125606058787651e-05, +-1.182494927622455742e-05, +-1.182862282936590070e-05, +-1.183227671626777000e-05, +-1.183591093321913102e-05, +-1.183952547654020837e-05, +-1.184312034258500124e-05, +-1.184669552773907773e-05, +-1.185025102842069637e-05, +-1.185378684108118041e-05, +-1.185730296220326960e-05, +-1.186079938830268374e-05, +-1.186427611592817693e-05, +-1.186773314166020092e-05, +-1.187117046211180978e-05, +-1.187458807392927310e-05, +-1.187798597379019902e-05, +-1.188136415840534346e-05, +-1.188472262451815612e-05, +-1.188806136890419940e-05, +-1.189138038837162108e-05, +-1.189467967976109838e-05, +-1.189795923994558385e-05, +-1.190121906583108130e-05, +-1.190445915435561574e-05, +-1.190767950248965525e-05, +-1.191088010723686483e-05, +-1.191406096563244113e-05, +-1.191722207474455407e-05, +-1.192036343167419614e-05, +-1.192348503355441153e-05, +-1.192658687755092804e-05, +-1.192966896086186572e-05, +-1.193273128071784018e-05, +-1.193577383438245050e-05, +-1.193879661915119841e-05, +-1.194179963235237089e-05, +-1.194478287134674203e-05, +-1.194774633352760350e-05, +-1.195069001632059348e-05, +-1.195361391718433361e-05, +-1.195651803360944982e-05, +-1.195940236311935838e-05, +-1.196226690326993555e-05, +-1.196511165164944984e-05, +-1.196793660587876018e-05, +-1.197074176361150399e-05, +-1.197352712253350257e-05, +-1.197629268036315577e-05, +-1.197903843485148270e-05, +-1.198176438378176934e-05, +-1.198447052497037153e-05, +-1.198715685626559688e-05, +-1.198982337554847898e-05, +-1.199247008073259609e-05, +-1.199509696976396110e-05, +-1.199770404062108242e-05, +-1.200029129131527410e-05, +-1.200285871989006959e-05, +-1.200540632442154875e-05, +-1.200793410301835815e-05, +-1.201044205382165012e-05, +-1.201293017500496074e-05, +-1.201539846477470281e-05, +-1.201784692136949674e-05, +-1.202027554306049068e-05, +-1.202268432815143510e-05, +-1.202507327497836424e-05, +-1.202744238191027892e-05, +-1.202979164734842815e-05, +-1.203212106972610083e-05, +-1.203443064751003012e-05, +-1.203672037919874338e-05, +-1.203899026332338553e-05, +-1.204124029844800364e-05, +-1.204347048316861350e-05, +-1.204568081611405341e-05, +-1.204787129594548617e-05, +-1.205004192135668701e-05, +-1.205219269107378107e-05, +-1.205432360385581764e-05, +-1.205643465849355893e-05, +-1.205852585381096916e-05, +-1.206059718866422011e-05, +-1.206264866194181990e-05, +-1.206468027256524657e-05, +-1.206669201948782827e-05, +-1.206868390169565302e-05, +-1.207065591820751447e-05, +-1.207260806807441892e-05, +-1.207454035037974458e-05, +-1.207645276423980740e-05, +-1.207834530880268704e-05, +-1.208021798324962790e-05, +-1.208207078679391935e-05, +-1.208390371868133952e-05, +-1.208571677819051280e-05, +-1.208750996463191202e-05, +-1.208928327734872752e-05, +-1.209103671571689929e-05, +-1.209277027914436824e-05, +-1.209448396707175720e-05, +-1.209617777897224896e-05, +-1.209785171435108309e-05, +-1.209950577274609470e-05, +-1.210113995372785673e-05, +-1.210275425689899890e-05, +-1.210434868189468720e-05, +-1.210592322838260688e-05, +-1.210747789606264569e-05, +-1.210901268466746649e-05, +-1.211052759396182959e-05, +-1.211202262374292481e-05, +-1.211349777384071875e-05, +-1.211495304411701461e-05, +-1.211638843446627377e-05, +-1.211780394481568866e-05, +-1.211919957512436115e-05, +-1.212057532538400726e-05, +-1.212193119561865054e-05, +-1.212326718588468982e-05, +-1.212458329627113302e-05, +-1.212587952689906690e-05, +-1.212715587792211442e-05, +-1.212841234952618238e-05, +-1.212964894192959860e-05, +-1.213086565538296626e-05, +-1.213206249016942136e-05, +-1.213323944660431934e-05, +-1.213439652503534183e-05, +-1.213553372584259656e-05, +-1.213665104943848183e-05, +-1.213774849626765607e-05, +-1.213882606680736135e-05, +-1.213988376156690843e-05, +-1.214092158108801215e-05, +-1.214193952594472027e-05, +-1.214293759674326107e-05, +-1.214391579412255149e-05, +-1.214487411875338403e-05, +-1.214581257133907386e-05, +-1.214673115261512509e-05, +-1.214762986334940191e-05, +-1.214850870434200485e-05, +-1.214936767642539958e-05, +-1.215020678046421193e-05, +-1.215102601735542777e-05, +-1.215182538802819650e-05, +-1.215260489344407331e-05, +-1.215336453459662445e-05, +-1.215410431251199139e-05, +-1.215482422824830123e-05, +-1.215552428289599030e-05, +-1.215620447757778384e-05, +-1.215686481344848252e-05, +-1.215750529169535549e-05, +-1.215812591353768125e-05, +-1.215872668022692559e-05, +-1.215930759304695157e-05, +-1.215986865331365539e-05, +-1.216040986237515773e-05, +-1.216093122161183939e-05, +-1.216143273243619220e-05, +-1.216191439629290028e-05, +-1.216237621465880287e-05, +-1.216281818904286204e-05, +-1.216324032098628305e-05, +-1.216364261206249905e-05, +-1.216402506387674082e-05, +-1.216438767806680584e-05, +-1.216473045630229602e-05, +-1.216505340028508858e-05, +-1.216535651174925986e-05, +-1.216563979246076683e-05, +-1.216590324421777913e-05, +-1.216614686885067566e-05, +-1.216637066822183115e-05, +-1.216657464422561616e-05, +-1.216675879878870707e-05, +-1.216692313386956263e-05, +-1.216706765145900336e-05, +-1.216719235357964397e-05, +-1.216729724228632711e-05, +-1.216738231966595561e-05, +-1.216744758783726211e-05, +-1.216749304895120376e-05, +-1.216751870519071154e-05, +-1.216752455877071391e-05, +-1.216751061193810977e-05, +-1.216747686697194798e-05, +-1.216742332618304285e-05, +-1.216734999191440439e-05, +-1.216725686654090632e-05, +-1.216714395246941478e-05, +-1.216701125213876463e-05, +-1.216685876801977638e-05, +-1.216668650261511053e-05, +-1.216649445845956060e-05, +-1.216628263811967708e-05, +-1.216605104419399611e-05, +-1.216579967931303781e-05, +-1.216552854613909280e-05, +-1.216523764736642380e-05, +-1.216492698572123854e-05, +-1.216459656396155084e-05, +-1.216424638487730766e-05, +-1.216387645129029252e-05, +-1.216348676605413573e-05, +-1.216307733205438375e-05, +-1.216264815220834511e-05, +-1.216219922946523439e-05, +-1.216173056680601970e-05, +-1.216124216724351593e-05, +-1.216073403382244399e-05, +-1.216020616961918181e-05, +-1.215965857774199811e-05, +-1.215909126133090161e-05, +-1.215850422355766310e-05, +-1.215789746762582724e-05, +-1.215727099677077190e-05, +-1.215662481425952180e-05, +-1.215595892339092468e-05, +-1.215527332749547851e-05, +-1.215456802993544500e-05, +-1.215384303410480724e-05, +-1.215309834342920194e-05, +-1.215233396136606683e-05, +-1.215154989140444073e-05, +-1.215074613706503132e-05, +-1.214992270190028633e-05, +-1.214907958949420035e-05, +-1.214821680346251310e-05, +-1.214733434745255352e-05, +-1.214643222514327370e-05, +-1.214551044024529627e-05, +-1.214456899650081450e-05, +-1.214360789768364986e-05, +-1.214262714759915713e-05, +-1.214162675008434307e-05, +-1.214060670900767661e-05, +-1.213956702826930738e-05, +-1.213850771180093025e-05, +-1.213742876356566669e-05, +-1.213633018755822233e-05, +-1.213521198780496998e-05, +-1.213407416836354135e-05, +-1.213291673332323534e-05, +-1.213173968680479268e-05, +-1.213054303296034518e-05, +-1.212932677597378327e-05, +-1.212809092006007504e-05, +-1.212683546946592689e-05, +-1.212556042846935665e-05, +-1.212426580137977319e-05, +-1.212295159253806790e-05, +-1.212161780631660622e-05, +-1.212026444711898538e-05, +-1.211889151938030378e-05, +-1.211749902756708135e-05, +-1.211608697617694953e-05, +-1.211465536973921711e-05, +-1.211320421281426373e-05, +-1.211173350999399731e-05, +-1.211024326590153045e-05, +-1.210873348519136679e-05, +-1.210720417254913674e-05, +-1.210565533269202777e-05, +-1.210408697036823384e-05, +-1.210249909035736875e-05, +-1.210089169747029503e-05, +-1.209926479654892915e-05, +-1.209761839246672090e-05, +-1.209595249012818417e-05, +-1.209426709446893591e-05, +-1.209256221045592648e-05, +-1.209083784308732622e-05, +-1.208909399739221706e-05, +-1.208733067843120244e-05, +-1.208554789129574318e-05, +-1.208374564110856410e-05, +-1.208192393302353375e-05, +-1.208008277222555762e-05, +-1.207822216393067646e-05, +-1.207634211338607982e-05, +-1.207444262586983836e-05, +-1.207252370669127317e-05, +-1.207058536119082365e-05, +-1.206862759473962736e-05, +-1.206665041274019428e-05, +-1.206465382062595106e-05, +-1.206263782386122246e-05, +-1.206060242794143964e-05, +-1.205854763839286410e-05, +-1.205647346077293828e-05, +-1.205437990066999426e-05, +-1.205226696370308257e-05, +-1.205013465552242967e-05, +-1.204798298180910417e-05, +-1.204581194827503549e-05, +-1.204362156066305448e-05, +-1.204141182474701713e-05, +-1.203918274633135225e-05, +-1.203693433125151376e-05, +-1.203466658537385193e-05, +-1.203237951459538475e-05, +-1.203007312484403672e-05, +-1.202774742207862025e-05, +-1.202540241228838163e-05, +-1.202303810149373292e-05, +-1.202065449574569790e-05, +-1.201825160112597145e-05, +-1.201582942374711939e-05, +-1.201338796975219905e-05, +-1.201092724531525391e-05, +-1.200844725664076135e-05, +-1.200594800996407478e-05, +-1.200342951155110180e-05, +-1.200089176769851085e-05, +-1.199833478473337546e-05, +-1.199575856901358254e-05, +-1.199316312692759856e-05, +-1.199054846489442556e-05, +-1.198791458936380098e-05, +-1.198526150681574203e-05, +-1.198258922376105215e-05, +-1.197989774674101273e-05, +-1.197718708232742039e-05, +-1.197445723712254287e-05, +-1.197170821775936306e-05, +-1.196894003090085557e-05, +-1.196615268324082531e-05, +-1.196334618150377369e-05, +-1.196052053244403799e-05, +-1.195767574284675869e-05, +-1.195481181952747290e-05, +-1.195192876933181112e-05, +-1.194902659913633916e-05, +-1.194610531584741472e-05, +-1.194316492640205127e-05, +-1.194020543776767080e-05, +-1.193722685694167346e-05, +-1.193422919095192382e-05, +-1.193121244685700829e-05, +-1.192817663174503412e-05, +-1.192512175273485921e-05, +-1.192204781697560765e-05, +-1.191895483164614626e-05, +-1.191584280395630598e-05, +-1.191271174114548767e-05, +-1.190956165048348035e-05, +-1.190639253927037819e-05, +-1.190320441483635011e-05, +-1.189999728454141783e-05, +-1.189677115577639616e-05, +-1.189352603596142414e-05, +-1.189026193254722720e-05, +-1.188697885301463262e-05, +-1.188367680487396983e-05, +-1.188035579566644431e-05, +-1.187701583296277725e-05, +-1.187365692436363923e-05, +-1.187027907749992467e-05, +-1.186688230003259933e-05, +-1.186346659965205832e-05, +-1.186003198407949821e-05, +-1.185657846106520949e-05, +-1.185310603838984877e-05, +-1.184961472386410337e-05, +-1.184610452532794931e-05, +-1.184257545065194560e-05, +-1.183902750773620589e-05, +-1.183546070451040700e-05, +-1.183187504893437843e-05, +-1.182827054899768390e-05, +-1.182464721271974337e-05, +-1.182100504814957213e-05, +-1.181734406336621447e-05, +-1.181366426647798815e-05, +-1.180996566562334835e-05, +-1.180624826897033543e-05, +-1.180251208471667148e-05, +-1.179875712108986702e-05, +-1.179498338634672470e-05, +-1.179119088877406429e-05, +-1.178737963668814167e-05, +-1.178354963843495204e-05, +-1.177970090238992330e-05, +-1.177583343695830908e-05, +-1.177194725057439081e-05, +-1.176804235170251623e-05, +-1.176411874883638276e-05, +-1.176017645049912220e-05, +-1.175621546524356842e-05, +-1.175223580165156618e-05, +-1.174823746833482830e-05, +-1.174422047393440882e-05, +-1.174018482712064541e-05, +-1.173613053659345583e-05, +-1.173205761108216511e-05, +-1.172796605934505497e-05, +-1.172385589017017185e-05, +-1.171972711237477977e-05, +-1.171557973480537552e-05, +-1.171141376633785812e-05, +-1.170722921587749998e-05, +-1.170302609235836758e-05, +-1.169880440474419553e-05, +-1.169456416202783438e-05, +-1.169030537323128957e-05, +-1.168602804740601444e-05, +-1.168173219363197520e-05, +-1.167741782101893495e-05, +-1.167308493870553555e-05, +-1.166873355585956696e-05, +-1.166436368167788083e-05, +-1.165997532538660058e-05, +-1.165556849624035567e-05, +-1.165114320352339462e-05, +-1.164669945654871933e-05, +-1.164223726465846114e-05, +-1.163775663722363525e-05, +-1.163325758364440323e-05, +-1.162874011334922265e-05, +-1.162420423579663092e-05, +-1.161964996047292439e-05, +-1.161507729689393209e-05, +-1.161048625460439226e-05, +-1.160587684317738658e-05, +-1.160124907221507703e-05, +-1.159660295134910068e-05, +-1.159193849023876376e-05, +-1.158725569857277641e-05, +-1.158255458606880711e-05, +-1.157783516247233924e-05, +-1.157309743755896817e-05, +-1.156834142113168913e-05, +-1.156356712302288935e-05, +-1.155877455309342487e-05, +-1.155396372123299488e-05, +-1.154913463735920154e-05, +-1.154428731141948288e-05, +-1.153942175338862595e-05, +-1.153453797327070480e-05, +-1.152963598109835544e-05, +-1.152471578693191014e-05, +-1.151977740086143037e-05, +-1.151482083300489239e-05, +-1.150984609350824319e-05, +-1.150485319254657955e-05, +-1.149984214032337724e-05, +-1.149481294706973548e-05, +-1.148976562304650635e-05, +-1.148470017854152673e-05, +-1.147961662387181037e-05, +-1.147451496938261620e-05, +-1.146939522544680626e-05, +-1.146425740246665664e-05, +-1.145910151087216175e-05, +-1.145392756112107834e-05, +-1.144873556370011478e-05, +-1.144352552912386032e-05, +-1.143829746793519685e-05, +-1.143305139070501085e-05, +-1.142778730803279140e-05, +-1.142250523054526478e-05, +-1.141720516889804618e-05, +-1.141188713377458259e-05, +-1.140655113588636965e-05, +-1.140119718597316341e-05, +-1.139582529480209263e-05, +-1.139043547316890903e-05, +-1.138502773189723167e-05, +-1.137960208183854366e-05, +-1.137415853387220900e-05, +-1.136869709890585213e-05, +-1.136321778787429570e-05, +-1.135772061174084638e-05, +-1.135220558149648512e-05, +-1.134667270816003314e-05, +-1.134112200277832980e-05, +-1.133555347642532632e-05, +-1.132996714020339862e-05, +-1.132436300524251559e-05, +-1.131874108270030852e-05, +-1.131310138376205075e-05, +-1.130744391964111004e-05, +-1.130176870157769152e-05, +-1.129607574084034713e-05, +-1.129036504872502864e-05, +-1.128463663655529261e-05, +-1.127889051568225637e-05, +-1.127312669748486058e-05, +-1.126734519336879691e-05, +-1.126154601476804790e-05, +-1.125572917314381807e-05, +-1.124989467998482015e-05, +-1.124404254680736492e-05, +-1.123817278515455989e-05, +-1.123228540659729864e-05, +-1.122638042273464535e-05, +-1.122045784519158345e-05, +-1.121451768562131438e-05, +-1.120855995570449364e-05, +-1.120258466714816012e-05, +-1.119659183168749280e-05, +-1.119058146108463515e-05, +-1.118455356712889665e-05, +-1.117850816163684432e-05, +-1.117244525645249751e-05, +-1.116636486344600145e-05, +-1.116026699451635470e-05, +-1.115415166158793632e-05, +-1.114801887661326890e-05, +-1.114186865157186487e-05, +-1.113570099846956751e-05, +-1.112951592933972161e-05, +-1.112331345624349866e-05, +-1.111709359126738626e-05, +-1.111085634652598167e-05, +-1.110460173416078389e-05, +-1.109832976633910105e-05, +-1.109204045525694550e-05, +-1.108573381313552544e-05, +-1.107940985222370301e-05, +-1.107306858479730648e-05, +-1.106671002315811215e-05, +-1.106033417963524867e-05, +-1.105394106658530384e-05, +-1.104753069639005112e-05, +-1.104110308145896703e-05, +-1.103465823422833838e-05, +-1.102819616715992734e-05, +-1.102171689274369550e-05, +-1.101522042349552198e-05, +-1.100870677195726777e-05, +-1.100217595069813947e-05, +-1.099562797231388294e-05, +-1.098906284942579052e-05, +-1.098248059468339974e-05, +-1.097588122076085272e-05, +-1.096926474035984559e-05, +-1.096263116620846969e-05, +-1.095598051106014774e-05, +-1.094931278769624270e-05, +-1.094262800892372671e-05, +-1.093592618757530986e-05, +-1.092920733651084117e-05, +-1.092247146861613799e-05, +-1.091571859680327571e-05, +-1.090894873401083507e-05, +-1.090216189320279762e-05, +-1.089535808737012122e-05, +-1.088853732952964061e-05, +-1.088169963272436550e-05, +-1.087484501002335360e-05, +-1.086797347452204598e-05, +-1.086108503934109648e-05, +-1.085417971762806582e-05, +-1.084725752255614252e-05, +-1.084031846732466642e-05, +-1.083336256515879999e-05, +-1.082638982930995865e-05, +-1.081940027305464014e-05, +-1.081239390969604917e-05, +-1.080537075256298269e-05, +-1.079833081501007217e-05, +-1.079127411041806139e-05, +-1.078420065219260201e-05, +-1.077711045376598992e-05, +-1.077000352859591171e-05, +-1.076287989016585456e-05, +-1.075573955198495045e-05, +-1.074858252758826918e-05, +-1.074140883053560882e-05, +-1.073421847441341006e-05, +-1.072701147283321621e-05, +-1.071978783943227636e-05, +-1.071254758787329464e-05, +-1.070529073184480627e-05, +-1.069801728505996466e-05, +-1.069072726125825408e-05, +-1.068342067420425638e-05, +-1.067609753768807960e-05, +-1.066875786552541218e-05, +-1.066140167155644721e-05, +-1.065402896964731902e-05, +-1.064663977369032171e-05, +-1.063923409760126808e-05, +-1.063181195532243396e-05, +-1.062437336082133842e-05, +-1.061691832808980195e-05, +-1.060944687114567601e-05, +-1.060195900403171316e-05, +-1.059445474081579913e-05, +-1.058693409559123739e-05, +-1.057939708247541936e-05, +-1.057184371561147946e-05, +-1.056427400916851876e-05, +-1.055668797733869119e-05, +-1.054908563434043749e-05, +-1.054146699441711133e-05, +-1.053383207183607639e-05, +-1.052618088089020897e-05, +-1.051851343589819955e-05, +-1.051082975120166779e-05, +-1.050312984116839651e-05, +-1.049541372019083073e-05, +-1.048768140268503415e-05, +-1.047993290309396206e-05, +-1.047216823588306186e-05, +-1.046438741554373746e-05, +-1.045659045659211253e-05, +-1.044877737356790065e-05, +-1.044094818103612133e-05, +-1.043310289358731689e-05, +-1.042524152583463017e-05, +-1.041736409241706226e-05, +-1.040947060799811380e-05, +-1.040156108726433998e-05, +-1.039363554492927569e-05, +-1.038569399572831945e-05, +-1.037773645442275845e-05, +-1.036976293579780014e-05, +-1.036177345466306512e-05, +-1.035376802585246352e-05, +-1.034574666422449653e-05, +-1.033770938466097738e-05, +-1.032965620206892361e-05, +-1.032158713137954911e-05, +-1.031350218754689869e-05, +-1.030540138555120911e-05, +-1.029728474039583267e-05, +-1.028915226710744217e-05, +-1.028100398073800281e-05, +-1.027283989636301039e-05, +-1.026466002908197914e-05, +-1.025646439401883313e-05, +-1.024825300632036966e-05, +-1.024002588115838370e-05, +-1.023178303372820586e-05, +-1.022352447924901244e-05, +-1.021525023296392534e-05, +-1.020696031014014592e-05, +-1.019865472606765904e-05, +-1.019033349606126762e-05, +-1.018199663545914592e-05, +-1.017364415962318510e-05, +-1.016527608393893905e-05, +-1.015689242381604790e-05, +-1.014849319468662692e-05, +-1.014007841200749767e-05, +-1.013164809125870734e-05, +-1.012320224794380997e-05, +-1.011474089759024424e-05, +-1.010626405574789353e-05, +-1.009777173799113398e-05, +-1.008926395991748103e-05, +-1.008074073714778074e-05, +-1.007220208532626072e-05, +-1.006364802012089935e-05, +-1.005507855722190793e-05, +-1.004649371234381780e-05, +-1.003789350122409622e-05, +-1.002927793962350727e-05, +-1.002064704332591700e-05, +-1.001200082813876947e-05, +-1.000333930989159427e-05, +-9.994662504438091933e-06, +-9.985970427654736309e-06, +-9.977263095441018528e-06, +-9.968540523719855262e-06, +-9.959802728436081007e-06, +-9.951049725558231936e-06, +-9.942281531078886404e-06, +-9.933498161011332722e-06, +-9.924699631393235115e-06, +-9.915885958285141250e-06, +-9.907057157769276061e-06, +-9.898213245951845680e-06, +-9.889354238961387415e-06, +-9.880480152949245782e-06, +-9.871591004089806288e-06, +-9.862686808579080886e-06, +-9.853767582636468108e-06, +-9.844833342505066468e-06, +-9.835884104448442184e-06, +-9.826919884754137588e-06, +-9.817940699732254889e-06, +-9.808946565714329616e-06, +-9.799937499055131414e-06, +-9.790913516132928313e-06, +-9.781874633346242598e-06, +-9.772820867117515067e-06, +-9.763752233891471958e-06, +-9.754668750133767998e-06, +-9.745570432334947129e-06, +-9.736457297005199376e-06, +-9.727329360678450322e-06, +-9.718186639910958419e-06, +-9.709029151279853013e-06, +-9.699856911385397611e-06, +-9.690669936850969558e-06, +-9.681468244319837920e-06, +-9.672251850458832829e-06, +-9.663020771956893674e-06, +-9.653775025523325903e-06, +-9.644514627892229313e-06, +-9.635239595816917795e-06, +-9.625949946074161277e-06, +-9.616645695462230773e-06, +-9.607326860801304955e-06, +-9.597993458933385452e-06, +-9.588645506722608559e-06, +-9.579283021053773092e-06, +-9.569906018834629073e-06, +-9.560514516994556356e-06, +-9.551108532483106037e-06, +-9.541688082273840904e-06, +-9.532253183360742319e-06, +-9.522803852758642210e-06, +-9.513340107505057738e-06, +-9.503861964658681891e-06, +-9.494369441299727372e-06, +-9.484862554530265421e-06, +-9.475341321472618137e-06, +-9.465805759271689521e-06, +-9.456255885093783014e-06, +-9.446691716125017542e-06, +-9.437113269575096822e-06, +-9.427520562673941549e-06, +-9.417913612671887608e-06, +-9.408292436841712175e-06, +-9.398657052476956590e-06, +-9.389007476892370207e-06, +-9.379343727423847707e-06, +-9.369665821428773000e-06, +-9.359973776284338706e-06, +-9.350267609390124527e-06, +-9.340547338166215138e-06, +-9.330812980053747373e-06, +-9.321064552515198211e-06, +-9.311302073032697490e-06, +-9.301525559110541903e-06, +-9.291735028273468740e-06, +-9.281930498067064158e-06, +-9.272111986057707283e-06, +-9.262279509832946285e-06, +-9.252433086999782295e-06, +-9.242572735187281650e-06, +-9.232698472044629416e-06, +-9.222810315241774823e-06, +-9.212908282469629473e-06, +-9.202992391438457977e-06, +-9.193062659880317408e-06, +-9.183119105547400508e-06, +-9.173161746212350783e-06, +-9.163190599668247254e-06, +-9.153205683729097433e-06, +-9.143207016227929804e-06, +-9.133194615019057095e-06, +-9.123168497978408314e-06, +-9.113128682999627317e-06, +-9.103075187998289336e-06, +-9.093008030910274678e-06, +-9.082927229690359260e-06, +-9.072832802314760792e-06, +-9.062724766779466733e-06, +-9.052603141100513809e-06, +-9.042467943314465748e-06, +-9.032319191476642970e-06, +-9.022156903663260507e-06, +-9.011981097971802387e-06, +-9.001791792517067686e-06, +-8.991589005435576793e-06, +-8.981372754883723184e-06, +-8.971143059036389370e-06, +-8.960899936089655708e-06, +-8.950643404258964034e-06, +-8.940373481779466643e-06, +-8.930090186906046614e-06, +-8.919793537913763348e-06, +-8.909483553095574057e-06, +-8.899160250767133046e-06, +-8.888823649260608372e-06, +-8.878473766929511631e-06, +-8.868110622146878528e-06, +-8.857734233303949200e-06, +-8.847344618812260386e-06, +-8.836941797104177367e-06, +-8.826525786628818042e-06, +-8.816096605856403286e-06, +-8.805654273276513762e-06, +-8.795198807396278960e-06, +-8.784730226745186653e-06, +-8.774248549868880919e-06, +-8.763753795333993618e-06, +-8.753245981726365626e-06, +-8.742725127649110512e-06, +-8.732191251727252894e-06, +-8.721644372603488192e-06, +-8.711084508938668825e-06, +-8.700511679414028515e-06, +-8.689925902729771139e-06, +-8.679327197603297034e-06, +-8.668715582773561831e-06, +-8.658091076997112342e-06, +-8.647453699048420292e-06, +-8.636803467722116787e-06, +-8.626140401831208467e-06, +-8.615464520207419708e-06, +-8.604775841701682202e-06, +-8.594074385182256243e-06, +-8.583360169537397185e-06, +-8.572633213673996799e-06, +-8.561893536515726580e-06, +-8.551141157007528714e-06, +-8.540376094111524910e-06, +-8.529598366807411116e-06, +-8.518807994094678440e-06, +-8.508004994990888591e-06, +-8.497189388531867002e-06, +-8.486361193772326247e-06, +-8.475520429783916170e-06, +-8.464667115657976745e-06, +-8.453801270503623778e-06, +-8.442922913448191059e-06, +-8.432032063637272715e-06, +-8.421128740234995954e-06, +-8.410212962422284648e-06, +-8.399284749399512238e-06, +-8.388344120384682310e-06, +-8.377391094613808063e-06, +-8.366425691340897066e-06, +-8.355447929838400183e-06, +-8.344457829395253231e-06, +-8.333455409319738262e-06, +-8.322440688937481174e-06, +-8.311413687591963318e-06, +-8.300374424644956878e-06, +-8.289322919474476737e-06, +-8.278259191477819640e-06, +-8.267183260069400867e-06, +-8.256095144681306497e-06, +-8.244994864763322212e-06, +-8.233882439783160299e-06, +-8.222757889224797771e-06, +-8.211621232591102170e-06, +-8.200472489401939294e-06, +-8.189311679194669562e-06, +-8.178138821524070083e-06, +-8.166953935962766644e-06, +-8.155757042099292311e-06, +-8.144548159540972423e-06, +-8.133327307911901878e-06, +-8.122094506853444880e-06, +-8.110849776024682176e-06, +-8.099593135100434079e-06, +-8.088324603773577949e-06, +-8.077044201755639424e-06, +-8.065751948772237077e-06, +-8.054447864568059579e-06, +-8.043131968904734569e-06, +-8.031804281559470007e-06, +-8.020464822327871409e-06, +-8.009113611021905581e-06, +-7.997750667470512174e-06, +-7.986376011519400397e-06, +-7.974989663031602978e-06, +-7.963591641884948616e-06, +-7.952181967977474522e-06, +-7.940760661220480748e-06, +-7.929327741543876662e-06, +-7.917883228894237850e-06, +-7.906427143232729195e-06, +-7.894959504540075264e-06, +-7.883480332812067647e-06, +-7.871989648059978307e-06, +-7.860487470313041387e-06, +-7.848973819616913308e-06, +-7.837448716031665294e-06, +-7.825912179637211166e-06, +-7.814364230526312538e-06, +-7.802804888809981198e-06, +-7.791234174615515681e-06, +-7.779652108084448068e-06, +-7.768058709377495731e-06, +-7.756453998670014469e-06, +-7.744837996152442348e-06, +-7.733210722032881460e-06, +-7.721572196535408938e-06, +-7.709922439898169439e-06, +-7.698261472378233722e-06, +-7.686589314247199164e-06, +-7.674905985791447252e-06, +-7.663211507314869340e-06, +-7.651505899136601681e-06, +-7.639789181591603103e-06, +-7.628061375031141206e-06, +-7.616322499820684944e-06, +-7.604572576342878561e-06, +-7.592811624996119416e-06, +-7.581039666192308270e-06, +-7.569256720362061074e-06, +-7.557462807949978297e-06, +-7.545657949415214971e-06, +-7.533842165233876107e-06, +-7.522015475897056658e-06, +-7.510177901911315856e-06, +-7.498329463798999086e-06, +-7.486470182096331218e-06, +-7.474600077356393073e-06, +-7.462719170147010626e-06, +-7.450827481051250512e-06, +-7.438925030667386998e-06, +-7.427011839609400883e-06, +-7.415087928504834808e-06, +-7.403153317997897638e-06, +-7.391208028747353648e-06, +-7.379252081426962988e-06, +-7.367285496725540970e-06, +-7.355308295347307047e-06, +-7.343320498009893438e-06, +-7.331322125447403767e-06, +-7.319313198408231102e-06, +-7.307293737655583965e-06, +-7.295263763967977610e-06, +-7.283223298137147781e-06, +-7.271172360971069538e-06, +-7.259110973291855769e-06, +-7.247039155936326393e-06, +-7.234956929755839804e-06, +-7.222864315616855299e-06, +-7.210761334398838366e-06, +-7.198648006997257486e-06, +-7.186524354321564807e-06, +-7.174390397295648460e-06, +-7.162246156857717361e-06, +-7.150091653960953430e-06, +-7.137926909571205115e-06, +-7.125751944670210356e-06, +-7.113566780253441731e-06, +-7.101371437330541835e-06, +-7.089165936925892482e-06, +-7.076950300076413266e-06, +-7.064724547834206001e-06, +-7.052488701266987554e-06, +-7.040242781453343917e-06, +-7.027986809488004686e-06, +-7.015720806479603499e-06, +-7.003444793549187264e-06, +-6.991158791833160444e-06, +-6.978862822481389395e-06, +-6.966556906657464102e-06, +-6.954241065539275006e-06, +-6.941915320316929305e-06, +-6.929579692195271724e-06, +-6.917234202394381721e-06, +-6.904878872144802153e-06, +-6.892513722692848477e-06, +-6.880138775298304822e-06, +-6.867754051232454635e-06, +-6.855359571783183210e-06, +-6.842955358250280886e-06, +-6.830541431945858101e-06, +-6.818117814197048266e-06, +-6.805684526344268811e-06, +-6.793241589739149340e-06, +-6.780789025750335503e-06, +-6.768326855755947013e-06, +-6.755855101149447585e-06, +-6.743373783337485001e-06, +-6.730882923737629536e-06, +-6.718382543783844936e-06, +-6.705872664921447732e-06, +-6.693353308607799265e-06, +-6.680824496314761230e-06, +-6.668286249527191350e-06, +-6.655738589740676715e-06, +-6.643181538467468940e-06, +-6.630615117228840542e-06, +-6.618039347561064990e-06, +-6.605454251012621499e-06, +-6.592859849144730353e-06, +-6.580256163531241945e-06, +-6.567643215759278827e-06, +-6.555021027426886886e-06, +-6.542389620146362495e-06, +-6.529749015542494066e-06, +-6.517099235250469881e-06, +-6.504440300921152571e-06, +-6.491772234216234078e-06, +-6.479095056808687978e-06, +-6.466408790385505397e-06, +-6.453713456645435123e-06, +-6.441009077299520627e-06, +-6.428295674071571016e-06, +-6.415573268696039210e-06, +-6.402841882921110230e-06, +-6.390101538506597164e-06, +-6.377352257224423975e-06, +-6.364594060858539110e-06, +-6.351826971205527897e-06, +-6.339051010072245941e-06, +-6.326266199279213180e-06, +-6.313472560658259984e-06, +-6.300670116053153113e-06, +-6.287858887319444094e-06, +-6.275038896325090099e-06, +-6.262210164948136463e-06, +-6.249372715079998937e-06, +-6.236526568623252929e-06, +-6.223671747492151045e-06, +-6.210808273613091495e-06, +-6.197936168922413268e-06, +-6.185055455369623328e-06, +-6.172166154915237526e-06, +-6.159268289531204963e-06, +-6.146361881200913074e-06, +-6.133446951919728032e-06, +-6.120523523692694211e-06, +-6.107591618537807118e-06, +-6.094651258483866163e-06, +-6.081702465570847358e-06, +-6.068745261850548754e-06, +-6.055779669384222983e-06, +-6.042805710246017060e-06, +-6.029823406520488880e-06, +-6.016832780303368706e-06, +-6.003833853701375357e-06, +-5.990826648832772712e-06, +-5.977811187825065779e-06, +-5.964787492817838255e-06, +-5.951755585963235337e-06, +-5.938715489420828161e-06, +-5.925667225363264354e-06, +-5.912610815973972582e-06, +-5.899546283444815415e-06, +-5.886473649982300625e-06, +-5.873392937799679213e-06, +-5.860304169122984752e-06, +-5.847207366188953079e-06, +-5.834102551243034305e-06, +-5.820989746542409948e-06, +-5.807868974356358000e-06, +-5.794740256961238501e-06, +-5.781603616646000938e-06, +-5.768459075710020926e-06, +-5.755306656460642970e-06, +-5.742146381219552685e-06, +-5.728978272314604630e-06, +-5.715802352086178440e-06, +-5.702618642884255715e-06, +-5.689427167069503374e-06, +-5.676227947010342077e-06, +-5.663021005089339631e-06, +-5.649806363695002386e-06, +-5.636584045228125449e-06, +-5.623354072099448093e-06, +-5.610116466727290537e-06, +-5.596871251543303603e-06, +-5.583618448987245065e-06, +-5.570358081507462460e-06, +-5.557090171563847537e-06, +-5.543814741625965158e-06, +-5.530531814170736671e-06, +-5.517241411688783330e-06, +-5.503943556676271918e-06, +-5.490638271641242923e-06, +-5.477325579100673031e-06, +-5.464005501581039251e-06, +-5.450678061618256233e-06, +-5.437343281758248859e-06, +-5.424001184554537360e-06, +-5.410651792571733014e-06, +-5.397295128383749215e-06, +-5.383931214571426392e-06, +-5.370560073728300305e-06, +-5.357181728455377545e-06, +-5.343796201361629352e-06, +-5.330403515066874070e-06, +-5.317003692199413927e-06, +-5.303596755396573744e-06, +-5.290182727305295555e-06, +-5.276761630579683058e-06, +-5.263333487884504942e-06, +-5.249898321892875711e-06, +-5.236456155286700379e-06, +-5.223007010756709193e-06, +-5.209550911002957391e-06, +-5.196087878732511097e-06, +-5.182617936662860872e-06, +-5.169141107519537315e-06, +-5.155657414036753111e-06, +-5.142166878957218379e-06, +-5.128669525032804749e-06, +-5.115165375022106748e-06, +-5.101654451693984098e-06, +-5.088136777825070588e-06, +-5.074612376200402575e-06, +-5.061081269613994117e-06, +-5.047543480866349240e-06, +-5.033999032768030483e-06, +-5.020447948137230462e-06, +-5.006890249800356316e-06, +-4.993325960591939077e-06, +-4.979755103355268099e-06, +-4.966177700939878755e-06, +-4.952593776205188754e-06, +-4.939003352017957884e-06, +-4.925406451252946161e-06, +-4.911803096793444915e-06, +-4.898193311528816164e-06, +-4.884577118358105204e-06, +-4.870954540187494431e-06, +-4.857325599931045343e-06, +-4.843690320510467298e-06, +-4.830048724855825631e-06, +-4.816400835902989552e-06, +-4.802746676596700091e-06, +-4.789086269891028345e-06, +-4.775419638744065431e-06, +-4.761746806123700096e-06, +-4.748067795005403727e-06, +-4.734382628369606238e-06, +-4.720691329208333429e-06, +-4.706993920516785776e-06, +-4.693290425299877530e-06, +-4.679580866569767615e-06, +-4.665865267344070693e-06, +-4.652143650648824324e-06, +-4.638416039518999723e-06, +-4.624682456993101925e-06, +-4.610942926119098173e-06, +-4.597197469952031822e-06, +-4.583446111551528674e-06, +-4.569688873988391980e-06, +-4.555925780336168528e-06, +-4.542156853677686050e-06, +-4.528382117102021682e-06, +-4.514601593705674267e-06, +-4.500815306589496395e-06, +-4.487023278865339380e-06, +-4.473225533647486367e-06, +-4.459422094059297306e-06, +-4.445612983230806767e-06, +-4.431798224296162512e-06, +-4.417977840399707190e-06, +-4.404151854690483639e-06, +-4.390320290322756652e-06, +-4.376483170459102110e-06, +-4.362640518268416457e-06, +-4.348792356923589892e-06, +-4.334938709608016674e-06, +-4.321079599507167137e-06, +-4.307215049815154742e-06, +-4.293345083732279675e-06, +-4.279469724462594480e-06, +-4.265588995219917993e-06, +-4.251702919222322844e-06, +-4.237811519692724156e-06, +-4.223914819861839070e-06, +-4.210012842965774396e-06, +-4.196105612246559402e-06, +-4.182193150952102608e-06, +-4.168275482336790645e-06, +-4.154352629658967480e-06, +-4.140424616184619013e-06, +-4.126491465184848067e-06, +-4.112553199936428355e-06, +-4.098609843722438899e-06, +-4.084661419829723784e-06, +-4.070707951552548800e-06, +-4.056749462190121323e-06, +-4.042785975047134965e-06, +-4.028817513433773803e-06, +-4.014844100666251096e-06, +-4.000865760064323242e-06, +-3.986882514954945571e-06, +-3.972894388669773599e-06, +-3.958901404545725459e-06, +-3.944903585925569738e-06, +-3.930900956155457229e-06, +-3.916893538588490321e-06, +-3.902881356582318278e-06, +-3.888864433499646303e-06, +-3.874842792708233844e-06, +-3.860816457581438392e-06, +-3.846785451495754845e-06, +-3.832749797834461142e-06, +-3.818709519985078012e-06, +-3.804664641339983491e-06, +-3.790615185296368459e-06, +-3.776561175256813042e-06, +-3.762502634626780242e-06, +-3.748439586818271732e-06, +-3.734372055247310477e-06, +-3.720300063334567107e-06, +-3.706223634505901178e-06, +-3.692142792189843790e-06, +-3.678057559821278786e-06, +-3.663967960838935965e-06, +-3.649874018685986542e-06, +-3.635775756809948706e-06, +-3.621673198663335599e-06, +-3.607566367701094736e-06, +-3.593455287384317160e-06, +-3.579339981177675172e-06, +-3.565220472550039813e-06, +-3.551096784974441058e-06, +-3.536968941928648876e-06, +-3.522836966891996862e-06, +-3.508700883352239385e-06, +-3.494560714796733559e-06, +-3.480416484719313757e-06, +-3.466268216617725951e-06, +-3.452115933991709181e-06, +-3.437959660346132542e-06, +-3.423799419191470371e-06, +-3.409635234038291871e-06, +-3.395467128403344081e-06, +-3.381295125807063713e-06, +-3.367119249771055964e-06, +-3.352939523824872470e-06, +-3.338755971497308465e-06, +-3.324568616323138814e-06, +-3.310377481840672625e-06, +-3.296182591589788559e-06, +-3.281983969115000666e-06, +-3.267781637966117798e-06, +-3.253575621692490137e-06, +-3.239365943849312395e-06, +-3.225152627995008595e-06, +-3.210935697688729093e-06, +-3.196715176496561443e-06, +-3.182491087985859090e-06, +-3.168263455725841493e-06, +-3.154032303290641750e-06, +-3.139797654257446934e-06, +-3.125559532203907446e-06, +-3.111317960715026358e-06, +-3.097072963374321045e-06, +-3.082824563770700246e-06, +-3.068572785495880191e-06, +-3.054317652141884162e-06, +-3.040059187307249120e-06, +-3.025797414591349321e-06, +-3.011532357594968060e-06, +-2.997264039923438893e-06, +-2.982992485184030845e-06, +-2.968717716986611215e-06, +-2.954439758944171585e-06, +-2.940158634670327375e-06, +-2.925874367782984226e-06, +-2.911586981901871443e-06, +-2.897296500649051906e-06, +-2.883002947648952139e-06, +-2.868706346528879852e-06, +-2.854406720916528997e-06, +-2.840104094443696136e-06, +-2.825798490743701214e-06, +-2.811489933452026233e-06, +-2.797178446206227150e-06, +-2.782864052646568737e-06, +-2.768546776413420374e-06, +-2.754226641151037202e-06, +-2.739903670504987691e-06, +-2.725577888122727921e-06, +-2.711249317654228812e-06, +-2.696917982749373195e-06, +-2.682583907061736541e-06, +-2.668247114246007320e-06, +-2.653907627958581622e-06, +-2.639565471857519533e-06, +-2.625220669603161352e-06, +-2.610873244855526776e-06, +-2.596523221278086737e-06, +-2.582170622535190541e-06, +-2.567815472292704106e-06, +-2.553457794217867238e-06, +-2.539097611979999208e-06, +-2.524734949247867022e-06, +-2.510369829693438200e-06, +-2.496002276989359583e-06, +-2.481632314809500280e-06, +-2.467259966829583130e-06, +-2.452885256724587280e-06, +-2.438508208171883050e-06, +-2.424128844851848996e-06, +-2.409747190442079055e-06, +-2.395363268623746724e-06, +-2.380977103078983496e-06, +-2.366588717488942962e-06, +-2.352198135537598488e-06, +-2.337805380909130114e-06, +-2.323410477288536963e-06, +-2.309013448361601662e-06, +-2.294614317815481150e-06, +-2.280213109335481173e-06, +-2.265809846612038805e-06, +-2.251404553331763379e-06, +-2.236997253184374530e-06, +-2.222587969860152207e-06, +-2.208176727047974943e-06, +-2.193763548438464042e-06, +-2.179348457724582428e-06, +-2.164931478595848991e-06, +-2.150512634744708698e-06, +-2.136091949863910172e-06, +-2.121669447643927759e-06, +-2.107245151779931327e-06, +-2.092819085962832289e-06, +-2.078391273886255950e-06, +-2.063961739243942387e-06, +-2.049530505727799549e-06, +-2.035097597031071574e-06, +-2.020663036848907158e-06, +-2.006226848872591677e-06, +-1.991789056795905020e-06, +-1.977349684312503832e-06, +-1.962908755113347384e-06, +-1.948466292893040573e-06, +-1.934022321344043189e-06, +-1.919576864157280195e-06, +-1.905129945025279142e-06, +-1.890681587640233003e-06, +-1.876231815691398299e-06, +-1.861780652872080369e-06, +-1.847328122870655243e-06, +-1.832874249377566771e-06, +-1.818419056082719878e-06, +-1.803962566672882714e-06, +-1.789504804838061213e-06, +-1.775045794265676588e-06, +-1.760585558641196157e-06, +-1.746124121651268639e-06, +-1.731661506981140279e-06, +-1.717197738315264496e-06, +-1.702732839337874907e-06, +-1.688266833730409920e-06, +-1.673799745175309980e-06, +-1.659331597353411678e-06, +-1.644862413944569471e-06, +-1.630392218627576692e-06, +-1.615921035080820101e-06, +-1.601448886979642644e-06, +-1.586975798000142610e-06, +-1.572501791816619823e-06, +-1.558026892102109277e-06, +-1.543551122528413955e-06, +-1.529074506766654768e-06, +-1.514597068484686257e-06, +-1.500118831350914801e-06, +-1.485639819031673460e-06, +-1.471160055191843474e-06, +-1.456679563495459476e-06, +-1.442198367603076277e-06, +-1.427716491175617358e-06, +-1.413233957871741021e-06, +-1.398750791348462537e-06, +-1.384267015261113277e-06, +-1.369782653263923465e-06, +-1.355297729007445301e-06, +-1.340812266142350625e-06, +-1.326326288316819519e-06, +-1.311839819177163722e-06, +-1.297352882367768609e-06, +-1.282865501531708135e-06, +-1.268377700308131317e-06, +-1.253889502336077905e-06, +-1.239400931251877353e-06, +-1.224912010689753183e-06, +-1.210422764282415478e-06, +-1.195933215658457107e-06, +-1.181443388445544496e-06, +-1.166953306270994247e-06, +-1.152462992755974350e-06, +-1.137972471521880221e-06, +-1.123481766187726906e-06, +-1.108990900368186497e-06, +-1.094499897677408681e-06, +-1.080008781726407216e-06, +-1.065517576123654763e-06, +-1.051026304475714557e-06, +-1.036534990384594701e-06, +-1.022043657450958002e-06, +-1.007552329274711284e-06, +-9.930610294491708255e-07, +-9.785697815674729061e-07, +-9.640786092199628339e-07, +-9.495875359922068506e-07, +-9.350965854681837525e-07, +-9.206057812309021654e-07, +-9.061151468565503001e-07, +-8.916247059209010035e-07, +-8.771344819967040618e-07, +-8.626444986510668573e-07, +-8.481547794525050704e-07, +-8.336653479618810153e-07, +-8.191762277394532834e-07, +-8.046874423422690465e-07, +-7.901990153221829530e-07, +-7.757109702290446181e-07, +-7.612233306113094409e-07, +-7.467361200101959828e-07, +-7.322493619660915481e-07, +-7.177630800159371817e-07, +-7.032772976906203961e-07, +-6.887920385220061793e-07, +-6.743073260339030717e-07, +-6.598231837490882450e-07, +-6.453396351860698250e-07, +-6.308567038596773792e-07, +-6.163744132810300473e-07, +-6.018927869581444989e-07, +-5.874118483933143200e-07, +-5.729316210869472832e-07, +-5.584521285355833972e-07, +-5.439733942292896448e-07, +-5.294954416580568817e-07, +-5.150182943059712970e-07, +-5.005419756518137947e-07, +-4.860665091722472730e-07, +-4.715919183392035806e-07, +-4.571182266204815745e-07, +-4.426454574803658782e-07, +-4.281736343770043615e-07, +-4.137027807662337116e-07, +-3.992329200996168052e-07, +-3.847640758218205063e-07, +-3.702962713770253759e-07, +-3.558295302030883977e-07, +-3.413638757321460654e-07, +-3.268993313938056324e-07, +-3.124359206125216918e-07, +-2.979736668082086872e-07, +-2.835125933961999903e-07, +-2.690527237878584529e-07, +-2.545940813879572224e-07, +-2.401366895985088070e-07, +-2.256805718161534876e-07, +-2.112257514327629086e-07, +-1.967722518360475063e-07, +-1.823200964069417444e-07, +-1.678693085234322268e-07, +-1.534199115579447331e-07, +-1.389719288779471473e-07, +-1.245253838459161059e-07, +-1.100802998199412765e-07, +-9.563670015111146693e-08, +-8.119460818734267183e-08, +-6.675404727076325518e-08, +-5.231504073832169655e-08, +-3.787761192239176972e-08, +-2.344178414816047498e-08, +-9.007580737453689940e-09, + 5.424974993876869212e-09, + 1.985585973534717048e-08, + 3.428505018187811233e-08, + 4.871252303318943523e-08, + 6.313825499641166853e-08, + 7.756222278290445464e-08, + 9.198440310765190981e-08, + 1.064047726950909850e-07, + 1.208233082727132969e-07, + 1.352399865736774298e-07, + 1.496547843387744897e-07, + 1.640676783126082365e-07, + 1.784786452462023045e-07, + 1.928876618963953681e-07, + 2.072947050252377897e-07, + 2.216997514025968278e-07, + 2.361027778029815612e-07, + 2.505037610049351424e-07, + 2.649026777968607698e-07, + 2.792995049706290505e-07, + 2.936942193241850618e-07, + 3.080867976635137592e-07, + 3.224772167988255220e-07, + 3.368654535471570206e-07, + 3.512514847317694005e-07, + 3.656352871821856567e-07, + 3.800168377335842644e-07, + 3.943961132300490328e-07, + 4.087730905175361903e-07, + 4.231477464529131790e-07, + 4.375200578969194932e-07, + 4.518900017167812587e-07, + 4.662575547881660785e-07, + 4.806226939920205826e-07, + 4.949853962139560644e-07, + 5.093456383500660090e-07, + 5.237033973005464524e-07, + 5.380586499722954730e-07, + 5.524113732815220530e-07, + 5.667615441467197284e-07, + 5.811091394976902426e-07, + 5.954541362685212199e-07, + 6.097965114008283956e-07, + 6.241362418431552819e-07, + 6.384733045510099075e-07, + 6.528076764862535776e-07, + 6.671393346197103706e-07, + 6.814682559273517842e-07, + 6.957944173922634400e-07, + 7.101177960072334042e-07, + 7.244383687683898058e-07, + 7.387561126810087296e-07, + 7.530710047588974703e-07, + 7.673830220212354175e-07, + 7.816921414951752935e-07, + 7.959983402152284193e-07, + 8.103015952226751799e-07, + 8.246018835681540861e-07, + 8.388991823078576436e-07, + 8.531934685054945051e-07, + 8.674847192348752500e-07, + 8.817729115735654605e-07, + 8.960580226086590984e-07, + 9.103400294362043226e-07, + 9.246189091580100689e-07, + 9.388946388842609465e-07, + 9.531671957329178567e-07, + 9.674365568297349331e-07, + 9.817026993076669364e-07, + 9.959656003094730340e-07, + 1.010225236983899857e-06, + 1.024481586488282951e-06, + 1.038734625987944534e-06, + 1.052984332655597189e-06, + 1.067230683673916933e-06, + 1.081473656231765879e-06, + 1.095713227526771446e-06, + 1.109949374764730053e-06, + 1.124182075159643749e-06, + 1.138411305933110563e-06, + 1.152637044316922566e-06, + 1.166859267549271798e-06, + 1.181077952877329484e-06, + 1.195293077556657132e-06, + 1.209504618850594556e-06, + 1.223712554032856240e-06, + 1.237916860383731549e-06, + 1.252117515192671994e-06, + 1.266314495757706562e-06, + 1.280507779385453579e-06, + 1.294697343390540068e-06, + 1.308883165098164870e-06, + 1.323065221840965680e-06, + 1.337243490958426339e-06, + 1.351417949802615901e-06, + 1.365588575731872102e-06, + 1.379755346113406826e-06, + 1.393918238325204104e-06, + 1.408077229752273465e-06, + 1.422232297789224290e-06, + 1.436383419839652765e-06, + 1.450530573315560609e-06, + 1.464673735639910358e-06, + 1.478812884243512521e-06, + 1.492947996564401314e-06, + 1.507079050053593854e-06, + 1.521206022168778908e-06, + 1.535328890376906495e-06, + 1.549447632156086289e-06, + 1.563562224991850303e-06, + 1.577672646379734646e-06, + 1.591778873824642549e-06, + 1.605880884840911925e-06, + 1.619978656951701470e-06, + 1.634072167692207282e-06, + 1.648161394602708289e-06, + 1.662246315237499699e-06, + 1.676326907157923820e-06, + 1.690403147934989513e-06, + 1.704475015151247311e-06, + 1.718542486397708545e-06, + 1.732605539273225531e-06, + 1.746664151390222594e-06, + 1.760718300368406849e-06, + 1.774767963837340004e-06, + 1.788813119439000421e-06, + 1.802853744820847403e-06, + 1.816889817644735999e-06, + 1.830921315579967739e-06, + 1.844948216305895044e-06, + 1.858970497514423575e-06, + 1.872988136903803061e-06, + 1.887001112184282718e-06, + 1.901009401077553276e-06, + 1.915012981313605750e-06, + 1.929011830632676444e-06, + 1.943005926787794822e-06, + 1.956995247538510386e-06, + 1.970979770656604638e-06, + 1.984959473925504093e-06, + 1.998934335137155567e-06, + 2.012904332094585492e-06, + 2.026869442611290051e-06, + 2.040829644510668087e-06, + 2.054784915628549503e-06, + 2.068735233809469154e-06, + 2.082680576908576916e-06, + 2.096620922794202919e-06, + 2.110556249341600096e-06, + 2.124486534438619297e-06, + 2.138411755985137549e-06, + 2.152331891889947747e-06, + 2.166246920073294247e-06, + 2.180156818466291380e-06, + 2.194061565010325021e-06, + 2.207961137659609360e-06, + 2.221855514377417603e-06, + 2.235744673138687872e-06, + 2.249628591929376493e-06, + 2.263507248746527452e-06, + 2.277380621597644747e-06, + 2.291248688503280069e-06, + 2.305111427493268169e-06, + 2.318968816609286163e-06, + 2.332820833904262733e-06, + 2.346667457442400566e-06, + 2.360508665298590212e-06, + 2.374344435560954569e-06, + 2.388174746327124906e-06, + 2.401999575706766709e-06, + 2.415818901821015562e-06, + 2.429632702801860931e-06, + 2.443440956794676671e-06, + 2.457243641954541941e-06, + 2.471040736448726821e-06, + 2.484832218456147249e-06, + 2.498618066167351041e-06, + 2.512398257784000780e-06, + 2.526172771521309036e-06, + 2.539941585604402474e-06, + 2.553704678270823571e-06, + 2.567462027769941498e-06, + 2.581213612362997442e-06, + 2.594959410322497704e-06, + 2.608699399934754376e-06, + 2.622433559496173217e-06, + 2.636161867315787129e-06, + 2.649884301714661967e-06, + 2.663600841025306997e-06, + 2.677311463594201603e-06, + 2.691016147778707846e-06, + 2.704714871946504650e-06, + 2.718407614481207863e-06, + 2.732094353776161929e-06, + 2.745775068237005976e-06, + 2.759449736283539831e-06, + 2.773118336346021633e-06, + 2.786780846867730113e-06, + 2.800437246304333132e-06, + 2.814087513123332020e-06, + 2.827731625806545085e-06, + 2.841369562847057443e-06, + 2.855001302748662399e-06, + 2.868626824031412480e-06, + 2.882246105225503434e-06, + 2.895859124873779327e-06, + 2.909465861534208420e-06, + 2.923066293773806136e-06, + 2.936660400174144159e-06, + 2.950248159330806213e-06, + 2.963829549850346794e-06, + 2.977404550352151255e-06, + 2.990973139470954030e-06, + 3.004535295850086516e-06, + 3.018090998150135864e-06, + 3.031640225042187352e-06, + 3.045182955210343884e-06, + 3.058719167354220501e-06, + 3.072248840182798735e-06, + 3.085771952420026767e-06, + 3.099288482804216762e-06, + 3.112798410085015456e-06, + 3.126301713025295159e-06, + 3.139798370403566102e-06, + 3.153288361007402193e-06, + 3.166771663641904991e-06, + 3.180248257123100664e-06, + 3.193718120280996930e-06, + 3.207181231958988437e-06, + 3.220637571013939352e-06, + 3.234087116315559945e-06, + 3.247529846748883310e-06, + 3.260965741210679030e-06, + 3.274394778611256934e-06, + 3.287816937876978548e-06, + 3.301232197944199541e-06, + 3.314640537764763578e-06, + 3.328041936305429304e-06, + 3.341436372544865071e-06, + 3.354823825476111686e-06, + 3.368204274106017440e-06, + 3.381577697454657044e-06, + 3.394944074557771930e-06, + 3.408303384463198313e-06, + 3.421655606233315540e-06, + 3.435000718944455710e-06, + 3.448338701686926964e-06, + 3.461669533564498914e-06, + 3.474993193696785349e-06, + 3.488309661215695584e-06, + 3.501618915267847666e-06, + 3.514920935014044052e-06, + 3.528215699629254675e-06, + 3.541503188302078225e-06, + 3.554783380237178646e-06, + 3.568056254651687356e-06, + 3.581321790777663885e-06, + 3.594579967861516076e-06, + 3.607830765163449515e-06, + 3.621074161959859130e-06, + 3.634310137539814426e-06, + 3.647538671207434987e-06, + 3.660759742281372522e-06, + 3.673973330094817211e-06, + 3.687179413994921725e-06, + 3.700377973345268210e-06, + 3.713568987522282373e-06, + 3.726752435917625925e-06, + 3.739928297937699799e-06, + 3.753096553003612807e-06, + 3.766257180550661563e-06, + 3.779410160030731821e-06, + 3.792555470908739668e-06, + 3.805693092665063350e-06, + 3.818823004794985086e-06, + 3.831945186808104066e-06, + 3.845059618230764477e-06, + 3.858166278603116716e-06, + 3.871265147478550309e-06, + 3.884356204429059011e-06, + 3.897439429039345459e-06, + 3.910514800909260630e-06, + 3.923582299655536864e-06, + 3.936641904908334518e-06, + 3.949693596313604334e-06, + 3.962737353532543650e-06, + 3.975773156241015329e-06, + 3.988800984132003314e-06, + 4.001820816912592952e-06, + 4.014832634303494113e-06, + 4.027836416044356326e-06, + 4.040832141887879355e-06, + 4.053819791602257739e-06, + 4.066799344973490648e-06, + 4.079770781799583946e-06, + 4.092734081895899200e-06, + 4.105689225094512480e-06, + 4.118636191241368325e-06, + 4.131574960198055974e-06, + 4.144505511844213242e-06, + 4.157427826071037404e-06, + 4.170341882789609835e-06, + 4.183247661924413662e-06, + 4.196145143415763059e-06, + 4.209034307222104636e-06, + 4.221915133314282174e-06, + 4.234787601680755202e-06, + 4.247651692327101782e-06, + 4.260507385273083544e-06, + 4.273354660554454946e-06, + 4.286193498225344286e-06, + 4.299023878351800156e-06, + 4.311845781020078813e-06, + 4.324659186330184705e-06, + 4.337464074398856266e-06, + 4.350260425358995008e-06, + 4.363048219359713810e-06, + 4.375827436565760932e-06, + 4.388598057159932363e-06, + 4.401360061339508357e-06, + 4.414113429318137233e-06, + 4.426858141328125750e-06, + 4.439594177614697921e-06, + 4.452321518441222898e-06, + 4.465040144088655932e-06, + 4.477750034852729609e-06, + 4.490451171046209503e-06, + 4.503143532998450327e-06, + 4.515827101054758116e-06, + 4.528501855578761927e-06, + 4.541167776949007063e-06, + 4.553824845561253926e-06, + 4.566473041827980808e-06, + 4.579112346178333913e-06, + 4.591742739057655565e-06, + 4.604364200929810155e-06, + 4.616976712273678276e-06, + 4.629580253585622432e-06, + 4.642174805378828898e-06, + 4.654760348183370395e-06, + 4.667336862545715662e-06, + 4.679904329030985105e-06, + 4.692462728219536403e-06, + 4.705012040709346369e-06, + 4.717552247115426496e-06, + 4.730083328069294405e-06, + 4.742605264221269312e-06, + 4.755118036237110146e-06, + 4.767621624800290685e-06, + 4.780116010611493026e-06, + 4.792601174388610131e-06, + 4.805077096866204570e-06, + 4.817543758797859037e-06, + 4.830001140952717914e-06, + 4.842449224117847110e-06, + 4.854887989097717363e-06, + 4.867317416713567277e-06, + 4.879737487805813977e-06, + 4.892148183230585353e-06, + 4.904549483862107002e-06, + 4.916941370592090669e-06, + 4.929323824329777447e-06, + 4.941696826001465976e-06, + 4.954060356552684240e-06, + 4.966414396945526493e-06, + 4.978758928158006973e-06, + 4.991093931189230191e-06, + 5.003419387053762397e-06, + 5.015735276783894856e-06, + 5.028041581431436160e-06, + 5.040338282064267357e-06, + 5.052625359768654342e-06, + 5.064902795648757429e-06, + 5.077170570826054519e-06, + 5.089428666441615388e-06, + 5.101677063653332732e-06, + 5.113915743635420723e-06, + 5.126144687583450625e-06, + 5.138363876708755288e-06, + 5.150573292240777129e-06, + 5.162772915429261097e-06, + 5.174962727538134012e-06, + 5.187142709853434490e-06, + 5.199312843677085558e-06, + 5.211473110329843171e-06, + 5.223623491150073099e-06, + 5.235763967496646933e-06, + 5.247894520742863778e-06, + 5.260015132284182813e-06, + 5.272125783532206818e-06, + 5.284226455916932741e-06, + 5.296317130888935349e-06, + 5.308397789913938592e-06, + 5.320468414477771594e-06, + 5.332528986085831635e-06, + 5.344579486260400751e-06, + 5.356619896542283045e-06, + 5.368650198493084902e-06, + 5.380670373689120590e-06, + 5.392680403729208346e-06, + 5.404680270228614093e-06, + 5.416669954821851732e-06, + 5.428649439162085980e-06, + 5.440618704921275524e-06, + 5.452577733789592798e-06, + 5.464526507477600862e-06, + 5.476465007713111754e-06, + 5.488393216242729784e-06, + 5.500311114834112268e-06, + 5.512218685270592560e-06, + 5.524115909356048796e-06, + 5.536002768914385516e-06, + 5.547879245786888373e-06, + 5.559745321834371365e-06, + 5.571600978936737226e-06, + 5.583446198992359936e-06, + 5.595280963920359854e-06, + 5.607105255657366355e-06, + 5.618919056159659981e-06, + 5.630722347402725204e-06, + 5.642515111381247039e-06, + 5.654297330108618069e-06, + 5.666068985619079749e-06, + 5.677830059964558732e-06, + 5.689580535216809020e-06, + 5.701320393466956258e-06, + 5.713049616825469783e-06, + 5.724768187421659484e-06, + 5.736476087405902655e-06, + 5.748173298946419340e-06, + 5.759859804231389064e-06, + 5.771535585468531560e-06, + 5.783200624884535011e-06, + 5.794854904727269358e-06, + 5.806498407262560791e-06, + 5.818131114776384719e-06, + 5.829753009574361789e-06, + 5.841364073981746868e-06, + 5.852964290342975041e-06, + 5.864553641023774104e-06, + 5.876132108408023771e-06, + 5.887699674899908829e-06, + 5.899256322923357555e-06, + 5.910802034921677496e-06, + 5.922336793359539213e-06, + 5.933860580719915110e-06, + 5.945373379506199557e-06, + 5.956875172241747251e-06, + 5.968365941469802073e-06, + 5.979845669753098979e-06, + 5.991314339675939230e-06, + 6.002771933841102957e-06, + 6.014218434871905760e-06, + 6.025653825411771799e-06, + 6.037078088124238032e-06, + 6.048491205692423126e-06, + 6.059893160821722713e-06, + 6.071283936234036015e-06, + 6.082663514675148583e-06, + 6.094031878909003815e-06, + 6.105389011719751925e-06, + 6.116734895913437235e-06, + 6.128069514315404562e-06, + 6.139392849769708829e-06, + 6.150704885143912669e-06, + 6.162005603323931376e-06, + 6.173294987216047152e-06, + 6.184573019749081743e-06, + 6.195839683868668809e-06, + 6.207094962544608704e-06, + 6.218338838765107810e-06, + 6.229571295539419581e-06, + 6.240792315896883166e-06, + 6.252001882889519562e-06, + 6.263199979586292116e-06, + 6.274386589080448614e-06, + 6.285561694483866480e-06, + 6.296725278929064489e-06, + 6.307877325571386409e-06, + 6.319017817583799376e-06, + 6.330146738161645750e-06, + 6.341264070522006990e-06, + 6.352369797901281989e-06, + 6.363463903556728674e-06, + 6.374546370768496882e-06, + 6.385617182834059125e-06, + 6.396676323075401892e-06, + 6.407723774833347991e-06, + 6.418759521469802882e-06, + 6.429783546369585111e-06, + 6.440795832935549946e-06, + 6.451796364593103211e-06, + 6.462785124789710857e-06, + 6.473762096992445953e-06, + 6.484727264689943641e-06, + 6.495680611392075870e-06, + 6.506622120629798087e-06, + 6.517551775954768072e-06, + 6.528469560941399146e-06, + 6.539375459183788826e-06, + 6.550269454297830484e-06, + 6.561151529920671239e-06, + 6.572021669710338422e-06, + 6.582879857347614056e-06, + 6.593726076533201532e-06, + 6.604560310989626353e-06, + 6.615382544460874444e-06, + 6.626192760712347268e-06, + 6.636990943530379859e-06, + 6.647777076724300807e-06, + 6.658551144123465949e-06, + 6.669313129579225181e-06, + 6.680063016964480304e-06, + 6.690800790173256426e-06, + 6.701526433122596776e-06, + 6.712239929749709051e-06, + 6.722941264013960174e-06, + 6.733630419896384174e-06, + 6.744307381399683873e-06, + 6.754972132547811611e-06, + 6.765624657387889469e-06, + 6.776264939987392031e-06, + 6.786892964436035275e-06, + 6.797508714845351361e-06, + 6.808112175348691168e-06, + 6.818703330100831273e-06, + 6.829282163279815405e-06, + 6.839848659084192261e-06, + 6.850402801734870519e-06, + 6.860944575474757994e-06, + 6.871473964568218692e-06, + 6.881990953303059105e-06, + 6.892495525987721140e-06, + 6.902987666953075290e-06, + 6.913467360552136877e-06, + 6.923934591159960173e-06, + 6.934389343173256391e-06, + 6.944831601012291032e-06, + 6.955261349118069202e-06, + 6.965678571954256677e-06, + 6.976083254006714888e-06, + 6.986475379783486513e-06, + 6.996854933814477001e-06, + 7.007221900653699205e-06, + 7.017576264874132738e-06, + 7.027918011074430784e-06, + 7.038247123873663407e-06, + 7.048563587913260649e-06, + 7.058867387858481281e-06, + 7.069158508396033491e-06, + 7.079436934233605624e-06, + 7.089702650104198758e-06, + 7.099955640761417203e-06, + 7.110195890981301475e-06, + 7.120423385564353555e-06, + 7.130638109330303073e-06, + 7.140840047124708233e-06, + 7.151029183813865994e-06, + 7.161205504286641663e-06, + 7.171368993455980844e-06, + 7.181519636256525891e-06, + 7.191657417644135640e-06, + 7.201782322600234073e-06, + 7.211894336127091504e-06, + 7.221993443249677031e-06, + 7.232079629017611803e-06, + 7.242152878500481533e-06, + 7.252213176792074208e-06, + 7.262260509009932853e-06, + 7.272294860293079554e-06, + 7.282316215803399512e-06, + 7.292324560727468091e-06, + 7.302319880271584663e-06, + 7.312302159668214295e-06, + 7.322271384170885223e-06, + 7.332227539056137027e-06, + 7.342170609625363776e-06, + 7.352100581200170588e-06, + 7.362017439126606263e-06, + 7.371921168774705876e-06, + 7.381811755536192783e-06, + 7.391689184826346326e-06, + 7.401553442083598643e-06, + 7.411404512768995115e-06, + 7.421242382368256035e-06, + 7.431067036388799297e-06, + 7.440878460361724137e-06, + 7.450676639841382544e-06, + 7.460461560405386875e-06, + 7.470233207654116042e-06, + 7.479991567212662834e-06, + 7.489736624728031939e-06, + 7.499468365871012726e-06, + 7.509186776335767593e-06, + 7.518891841839833662e-06, + 7.528583548123646739e-06, + 7.538261880952470015e-06, + 7.547926826113625961e-06, + 7.557578369418308976e-06, + 7.567216496701241493e-06, + 7.576841193820184395e-06, + 7.586452446657728489e-06, + 7.596050241118701737e-06, + 7.605634563131865865e-06, + 7.615205398649666486e-06, + 7.624762733648025580e-06, + 7.634306554126162766e-06, + 7.643836846108181799e-06, + 7.653353595640522691e-06, + 7.662856788793779447e-06, + 7.672346411662218948e-06, + 7.681822450363833468e-06, + 7.691284891039922239e-06, + 7.700733719856817707e-06, + 7.710168923003396944e-06, + 7.719590486692685932e-06, + 7.728998397161600373e-06, + 7.738392640670357841e-06, + 7.747773203504458152e-06, + 7.757140071972348940e-06, + 7.766493232405008912e-06, + 7.775832671160071209e-06, + 7.785158374617262981e-06, + 7.794470329180299350e-06, + 7.803768521278174288e-06, + 7.813052937362551759e-06, + 7.822323563909585142e-06, + 7.831580387419368356e-06, + 7.840823394416166251e-06, + 7.850052571447836935e-06, + 7.859267905087993398e-06, + 7.868469381931400737e-06, + 7.877656988599942656e-06, + 7.886830711737950926e-06, + 7.895990538013887593e-06, + 7.905136454121717172e-06, + 7.914268446778722991e-06, + 7.923386502725178552e-06, + 7.932490608728086324e-06, + 7.941580751577051006e-06, + 7.950656918085943095e-06, + 7.959719095094637000e-06, + 7.968767269464294763e-06, + 7.977801428083515517e-06, + 7.986821557863414223e-06, + 7.995827645739530886e-06, + 8.004819678673119737e-06, + 8.013797643648872408e-06, + 8.022761527674755302e-06, + 8.031711317785628120e-06, + 8.040647001039225532e-06, + 8.049568564517664901e-06, + 8.058475995329306363e-06, + 8.067369280604449902e-06, + 8.076248407499262195e-06, + 8.085113363195248060e-06, + 8.093964134897259935e-06, + 8.102800709834710822e-06, + 8.111623075263292074e-06, + 8.120431218460468875e-06, + 8.129225126731170602e-06, + 8.138004787403386260e-06, + 8.146770187829753510e-06, + 8.155521315389290010e-06, + 8.164258157483197207e-06, + 8.172980701538731286e-06, + 8.181688935008671226e-06, + 8.190382845369333358e-06, + 8.199062420122194279e-06, + 8.207727646793599476e-06, + 8.216378512934268652e-06, + 8.225015006120999964e-06, + 8.233637113954174659e-06, + 8.242244824059566336e-06, + 8.250838124087722617e-06, + 8.259417001714141325e-06, + 8.267981444638840190e-06, + 8.276531440588025512e-06, + 8.285066977311569686e-06, + 8.293588042584781512e-06, + 8.302094624207962339e-06, + 8.310586710006412849e-06, + 8.319064287830072219e-06, + 8.327527345555074965e-06, + 8.335975871081484286e-06, + 8.344409852334794695e-06, + 8.352829277265588130e-06, + 8.361234133849218853e-06, + 8.369624410087299148e-06, + 8.378000094005436048e-06, + 8.386361173654744135e-06, + 8.394707637111581270e-06, + 8.403039472477418143e-06, + 8.411356667878611276e-06, + 8.419659211467898875e-06, + 8.427947091422079967e-06, + 8.436220295943654252e-06, + 8.444478813260278307e-06, + 8.452722631625028170e-06, + 8.460951739315816577e-06, + 8.469166124637102279e-06, + 8.477365775917459053e-06, + 8.485550681511271463e-06, + 8.493720829798260527e-06, + 8.501876209183149976e-06, + 8.510016808097233275e-06, + 8.518142614996435604e-06, + 8.526253618361008931e-06, + 8.534349806698889648e-06, + 8.542431168542020755e-06, + 8.550497692447803675e-06, + 8.558549367000279015e-06, + 8.566586180807863300e-06, + 8.574608122504854990e-06, + 8.582615180751180375e-06, + 8.590607344231839616e-06, + 8.598584601658621135e-06, + 8.606546941768136505e-06, + 8.614494353321462995e-06, + 8.622426825107602858e-06, + 8.630344345939588673e-06, + 8.638246904656233312e-06, + 8.646134490123058290e-06, + 8.654007091230511608e-06, + 8.661864696893723807e-06, + 8.669707296055692813e-06, + 8.677534877683678962e-06, + 8.685347430770658510e-06, + 8.693144944336900811e-06, + 8.700927407425802605e-06, + 8.708694809109227716e-06, + 8.716447138483229533e-06, + 8.724184384669831478e-06, + 8.731906536817931632e-06, + 8.739613584101469759e-06, + 8.747305515719271452e-06, + 8.754982320898138106e-06, + 8.762643988889379169e-06, + 8.770290508970130124e-06, + 8.777921870445014365e-06, + 8.785538062641953775e-06, + 8.793139074917372897e-06, + 8.800724896652272088e-06, + 8.808295517253899559e-06, + 8.815850926155558258e-06, + 8.823391112816561819e-06, + 8.830916066721846623e-06, + 8.838425777383533726e-06, + 8.845920234338652035e-06, + 8.853399427150286885e-06, + 8.860863345409096227e-06, + 8.868311978729617566e-06, + 8.875745316753630678e-06, + 8.883163349149673113e-06, + 8.890566065611429133e-06, + 8.897953455859035840e-06, + 8.905325509638762995e-06, + 8.912682216722794487e-06, + 8.920023566910487020e-06, + 8.927349550026367732e-06, + 8.934660155921138769e-06, + 8.941955374473227363e-06, + 8.949235195585096152e-06, + 8.956499609186597429e-06, + 8.963748605234497116e-06, + 8.970982173710797630e-06, + 8.978200304624193095e-06, + 8.985402988009650899e-06, + 8.992590213928433723e-06, + 8.999761972467887781e-06, + 9.006918253742645603e-06, + 9.014059047892698196e-06, + 9.021184345084807887e-06, + 9.028294135512013660e-06, + 9.035388409393529512e-06, + 9.042467156975928603e-06, + 9.049530368531227270e-06, + 9.056578034358219947e-06, + 9.063610144782126805e-06, + 9.070626690154656428e-06, + 9.077627660853631426e-06, + 9.084613047284438553e-06, + 9.091582839877867086e-06, + 9.098537029091597898e-06, + 9.105475605409896843e-06, + 9.112398559343133633e-06, + 9.119305881429325139e-06, + 9.126197562231968673e-06, + 9.133073592341522609e-06, + 9.139933962375038765e-06, + 9.146778662976118361e-06, + 9.153607684814739224e-06, + 9.160421018588407749e-06, + 9.167218655020622386e-06, + 9.174000584860594117e-06, + 9.180766798886124674e-06, + 9.187517287900382731e-06, + 9.194252042733223583e-06, + 9.200971054242220831e-06, + 9.207674313310579292e-06, + 9.214361810848668131e-06, + 9.221033537793516026e-06, + 9.227689485108621438e-06, + 9.234329643785133367e-06, + 9.240954004840409711e-06, + 9.247562559317517509e-06, + 9.254155298288388990e-06, + 9.260732212850343654e-06, + 9.267293294127606156e-06, + 9.273838533272109292e-06, + 9.280367921461689821e-06, + 9.286881449901408138e-06, + 9.293379109823062084e-06, + 9.299860892485468155e-06, + 9.306326789173939730e-06, + 9.312776791201864252e-06, + 9.319210889907452306e-06, + 9.325629076657991430e-06, + 9.332031342846402070e-06, + 9.338417679892558953e-06, + 9.344788079244251627e-06, + 9.351142532375563234e-06, + 9.357481030786662146e-06, + 9.363803566006500604e-06, + 9.370110129589809454e-06, + 9.376400713118326338e-06, + 9.382675308202025589e-06, + 9.388933906475738569e-06, + 9.395176499603515889e-06, + 9.401403079275188454e-06, + 9.407613637207948027e-06, + 9.413808165146088039e-06, + 9.419986654860918880e-06, + 9.426149098150586643e-06, + 9.432295486841197975e-06, + 9.438425812785075194e-06, + 9.444540067861689718e-06, + 9.450638243978741183e-06, + 9.456720333069389345e-06, + 9.462786327094739269e-06, + 9.468836218043722745e-06, + 9.474869997931463519e-06, + 9.480887658800600352e-06, + 9.486889192721032916e-06, + 9.492874591789396630e-06, + 9.498843848130546661e-06, + 9.504796953895602976e-06, + 9.510733901262949838e-06, + 9.516654682439330172e-06, + 9.522559289657023254e-06, + 9.528447715176424770e-06, + 9.534319951285763909e-06, + 9.540175990299627832e-06, + 9.546015824560276266e-06, + 9.551839446437165472e-06, + 9.557646848327068523e-06, + 9.563438022653841523e-06, + 9.569212961869433273e-06, + 9.574971658452297927e-06, + 9.580714104908548653e-06, + 9.586440293771569693e-06, + 9.592150217601868976e-06, + 9.597843868988157243e-06, + 9.603521240545635339e-06, + 9.609182324917193621e-06, + 9.614827114773137512e-06, + 9.620455602811148538e-06, + 9.626067781755987871e-06, + 9.631663644360766876e-06, + 9.637243183405065002e-06, + 9.642806391696301976e-06, + 9.648353262069199094e-06, + 9.653883787385824955e-06, + 9.659397960536366266e-06, + 9.664895774437747174e-06, + 9.670377222034581333e-06, + 9.675842296299019441e-06, + 9.681290990230706882e-06, + 9.686723296856478800e-06, + 9.692139209231452767e-06, + 9.697538720437853105e-06, + 9.702921823584500970e-06, + 9.708288511809401192e-06, + 9.713638778277053790e-06, + 9.718972616179453474e-06, + 9.724290018736992579e-06, + 9.729590979196770390e-06, + 9.734875490833845056e-06, + 9.740143546950744003e-06, + 9.745395140877362292e-06, + 9.750630265971945178e-06, + 9.755848915619848050e-06, + 9.761051083233253527e-06, + 9.766236762253504184e-06, + 9.771405946148530958e-06, + 9.776558628413913637e-06, + 9.781694802573673682e-06, + 9.786814462178636064e-06, + 9.791917600807589699e-06, + 9.797004212066950330e-06, + 9.802074289590862171e-06, + 9.807127827040806577e-06, + 9.812164818107009813e-06, + 9.817185256505674951e-06, + 9.822189135982356447e-06, + 9.827176450309376695e-06, + 9.832147193286759453e-06, + 9.837101358742982008e-06, + 9.842038940533735125e-06, + 9.846959932541753634e-06, + 9.851864328678966204e-06, + 9.856752122884037252e-06, + 9.861623309123435899e-06, + 9.866477881392262672e-06, + 9.871315833711823604e-06, + 9.876137160132796442e-06, + 9.880941854732659059e-06, + 9.885729911616778729e-06, + 9.890501324919167691e-06, + 9.895256088800241892e-06, + 9.899994197448930104e-06, + 9.904715645082479104e-06, + 9.909420425945172960e-06, + 9.914108534309168207e-06, + 9.918779964475401864e-06, + 9.923434710771194335e-06, + 9.928072767552456772e-06, + 9.932694129203359040e-06, + 9.937298790135294644e-06, + 9.941886744787649833e-06, + 9.946457987627757861e-06, + 9.951012513150588976e-06, + 9.955550315879638102e-06, + 9.960071390365630582e-06, + 9.964575731187135427e-06, + 9.969063332951547869e-06, + 9.973534190292824403e-06, + 9.977988297873480086e-06, + 9.982425650384358143e-06, + 9.986846242543632166e-06, + 9.991250069097512538e-06, + 9.995637124820241348e-06, + 1.000000740451366380e-05, + 1.000436090300830901e-05, + 1.000869761516193483e-05, + 1.001301753586047649e-05, + 1.001732066001783320e-05, + 1.002160698257590196e-05, + 1.002587649850418460e-05, + 1.003012920280098205e-05, + 1.003436509049179179e-05, + 1.003858415663032087e-05, + 1.004278639629828265e-05, + 1.004697180460538663e-05, + 1.005114037668908431e-05, + 1.005529210771551113e-05, + 1.005942699287808545e-05, + 1.006354502739854705e-05, + 1.006764620652652508e-05, + 1.007173052553953811e-05, + 1.007579797974373276e-05, + 1.007984856447264186e-05, + 1.008388227508805363e-05, + 1.008789910697975575e-05, + 1.009189905556559307e-05, + 1.009588211629121512e-05, + 1.009984828463097398e-05, + 1.010379755608661141e-05, + 1.010772992618818716e-05, + 1.011164539049375202e-05, + 1.011554394458943427e-05, + 1.011942558408925832e-05, + 1.012329030463588680e-05, + 1.012713810189944653e-05, + 1.013096897157835691e-05, + 1.013478290939907246e-05, + 1.013857991111606922e-05, + 1.014235997251236148e-05, + 1.014612308939865303e-05, + 1.014986925761326772e-05, + 1.015359847302369611e-05, + 1.015731073152480488e-05, + 1.016100602903951785e-05, + 1.016468436151954606e-05, + 1.016834572494403936e-05, + 1.017199011532045545e-05, + 1.017561752868440059e-05, + 1.017922796109941455e-05, + 1.018282140865770064e-05, + 1.018639786747927029e-05, + 1.018995733371160252e-05, + 1.019349980353155820e-05, + 1.019702527314327778e-05, + 1.020053373877911127e-05, + 1.020402519670023660e-05, + 1.020749964319489272e-05, + 1.021095707458005841e-05, + 1.021439748720114732e-05, + 1.021782087743124232e-05, + 1.022122724167159516e-05, + 1.022461657635226184e-05, + 1.022798887793027293e-05, + 1.023134414289202566e-05, + 1.023468236775140517e-05, + 1.023800354905040790e-05, + 1.024130768335997854e-05, + 1.024459476727818711e-05, + 1.024786479743175372e-05, + 1.025111777047588076e-05, + 1.025435368309354657e-05, + 1.025757253199584080e-05, + 1.026077431392269964e-05, + 1.026395902564109830e-05, + 1.026712666394740230e-05, + 1.027027722566541090e-05, + 1.027341070764741413e-05, + 1.027652710677375915e-05, + 1.027962641995301967e-05, + 1.028270864412188068e-05, + 1.028577377624560441e-05, + 1.028882181331731368e-05, + 1.029185275235817488e-05, + 1.029486659041828735e-05, + 1.029786332457498932e-05, + 1.030084295193426227e-05, + 1.030380546963067507e-05, + 1.030675087482649963e-05, + 1.030967916471233095e-05, + 1.031259033650707357e-05, + 1.031548438745764340e-05, + 1.031836131483958607e-05, + 1.032122111595625700e-05, + 1.032406378813943296e-05, + 1.032688932874893426e-05, + 1.032969773517298393e-05, + 1.033248900482778761e-05, + 1.033526313515824160e-05, + 1.033802012363701981e-05, + 1.034075996776514805e-05, + 1.034348266507184984e-05, + 1.034618821311466672e-05, + 1.034887660947910755e-05, + 1.035154785177944814e-05, + 1.035420193765767920e-05, + 1.035683886478419585e-05, + 1.035945863085760280e-05, + 1.036206123360458559e-05, + 1.036464667078053063e-05, + 1.036721494016859345e-05, + 1.036976603958026454e-05, + 1.037229996685534051e-05, + 1.037481671986179710e-05, + 1.037731629649571796e-05, + 1.037979869468179953e-05, + 1.038226391237261917e-05, + 1.038471194754904348e-05, + 1.038714279822023838e-05, + 1.038955646242354893e-05, + 1.039195293822444674e-05, + 1.039433222371703991e-05, + 1.039669431702321754e-05, + 1.039903921629331548e-05, + 1.040136691970578260e-05, + 1.040367742546730276e-05, + 1.040597073181302352e-05, + 1.040824683700621903e-05, + 1.041050573933789866e-05, + 1.041274743712810810e-05, + 1.041497192872458930e-05, + 1.041717921250334293e-05, + 1.041936928686894686e-05, + 1.042154215025377519e-05, + 1.042369780111868266e-05, + 1.042583623795267769e-05, + 1.042795745927283259e-05, + 1.043006146362483075e-05, + 1.043214824958236865e-05, + 1.043421781574693898e-05, + 1.043627016074902837e-05, + 1.043830528324687228e-05, + 1.044032318192684456e-05, + 1.044232385550409619e-05, + 1.044430730272122538e-05, + 1.044627352234942282e-05, + 1.044822251318832084e-05, + 1.045015427406540223e-05, + 1.045206880383634749e-05, + 1.045396610138555325e-05, + 1.045584616562481595e-05, + 1.045770899549485821e-05, + 1.045955458996424293e-05, + 1.046138294802967992e-05, + 1.046319406871653917e-05, + 1.046498795107772098e-05, + 1.046676459419471804e-05, + 1.046852399717732755e-05, + 1.047026615916322929e-05, + 1.047199107931842446e-05, + 1.047369875683733900e-05, + 1.047538919094200532e-05, + 1.047706238088327361e-05, + 1.047871832593979197e-05, + 1.048035702541856887e-05, + 1.048197847865462924e-05, + 1.048358268501134989e-05, + 1.048516964388004955e-05, + 1.048673935468060213e-05, + 1.048829181686066931e-05, + 1.048982702989616809e-05, + 1.049134499329156895e-05, + 1.049284570657879808e-05, + 1.049432916931842497e-05, + 1.049579538109919648e-05, + 1.049724434153781665e-05, + 1.049867605027923469e-05, + 1.050009050699650264e-05, + 1.050148771139078390e-05, + 1.050286766319162931e-05, + 1.050423036215643510e-05, + 1.050557580807089006e-05, + 1.050690400074876214e-05, + 1.050821494003195434e-05, + 1.050950862579047928e-05, + 1.051078505792266253e-05, + 1.051204423635470210e-05, + 1.051328616104103947e-05, + 1.051451083196421560e-05, + 1.051571824913488448e-05, + 1.051690841259171146e-05, + 1.051808132240174258e-05, + 1.051923697865982522e-05, + 1.052037538148910271e-05, + 1.052149653104071284e-05, + 1.052260042749384881e-05, + 1.052368707105601168e-05, + 1.052475646196256140e-05, + 1.052580860047704382e-05, + 1.052684348689104154e-05, + 1.052786112152419262e-05, + 1.052886150472428539e-05, + 1.052984463686718735e-05, + 1.053081051835672991e-05, + 1.053175914962487616e-05, + 1.053269053113160396e-05, + 1.053360466336490085e-05, + 1.053450154684097581e-05, + 1.053538118210394247e-05, + 1.053624356972592755e-05, + 1.053708871030719620e-05, + 1.053791660447599104e-05, + 1.053872725288849496e-05, + 1.053952065622913430e-05, + 1.054029681521022818e-05, + 1.054105573057191399e-05, + 1.054179740308274540e-05, + 1.054252183353895877e-05, + 1.054322902276487303e-05, + 1.054391897161292009e-05, + 1.054459168096338405e-05, + 1.054524715172459762e-05, + 1.054588538483277615e-05, + 1.054650638125224293e-05, + 1.054711014197530723e-05, + 1.054769666802217450e-05, + 1.054826596044087351e-05, + 1.054881802030769007e-05, + 1.054935284872665878e-05, + 1.054987044682974939e-05, + 1.055037081577711582e-05, + 1.055085395675644734e-05, + 1.055131987098375631e-05, + 1.055176855970273613e-05, + 1.055220002418510511e-05, + 1.055261426573042865e-05, + 1.055301128566632077e-05, + 1.055339108534801725e-05, + 1.055375366615905661e-05, + 1.055409902951055172e-05, + 1.055442717684156410e-05, + 1.055473810961926155e-05, + 1.055503182933833027e-05, + 1.055530833752152881e-05, + 1.055556763571950347e-05, + 1.055580972551074756e-05, + 1.055603460850155912e-05, + 1.055624228632610696e-05, + 1.055643276064636967e-05, + 1.055660603315226099e-05, + 1.055676210556140957e-05, + 1.055690097961929114e-05, + 1.055702265709936228e-05, + 1.055712713980262850e-05, + 1.055721442955803891e-05, + 1.055728452822241509e-05, + 1.055733743768024949e-05, + 1.055737315984385283e-05, + 1.055739169665336762e-05, + 1.055739305007662928e-05, + 1.055737722210931350e-05, + 1.055734421477484647e-05, + 1.055729403012438283e-05, + 1.055722667023685316e-05, + 1.055714213721888768e-05, + 1.055704043320487898e-05, + 1.055692156035699215e-05, + 1.055678552086502083e-05, + 1.055663231694658874e-05, + 1.055646195084690917e-05, + 1.055627442483899844e-05, + 1.055606974122347933e-05, + 1.055584790232873362e-05, + 1.055560891051080208e-05, + 1.055535276815336247e-05, + 1.055507947766784646e-05, + 1.055478904149324305e-05, + 1.055448146209626297e-05, + 1.055415674197123359e-05, + 1.055381488364011419e-05, + 1.055345588965252985e-05, + 1.055307976258567149e-05, + 1.055268650504440089e-05, + 1.055227611966120837e-05, + 1.055184860909607213e-05, + 1.055140397603666670e-05, + 1.055094222319825783e-05, + 1.055046335332359748e-05, + 1.054996736918304245e-05, + 1.054945427357460343e-05, + 1.054892406932377060e-05, + 1.054837675928352539e-05, + 1.054781234633451337e-05, + 1.054723083338479345e-05, + 1.054663222337006325e-05, + 1.054601651925341850e-05, + 1.054538372402549538e-05, + 1.054473384070456196e-05, + 1.054406687233617772e-05, + 1.054338282199352388e-05, + 1.054268169277715438e-05, + 1.054196348781518052e-05, + 1.054122821026311683e-05, + 1.054047586330395897e-05, + 1.053970645014813798e-05, + 1.053891997403349999e-05, + 1.053811643822533668e-05, + 1.053729584601632430e-05, + 1.053645820072659485e-05, + 1.053560350570364455e-05, + 1.053473176432236437e-05, + 1.053384297998499598e-05, + 1.053293715612124184e-05, + 1.053201429618812295e-05, + 1.053107440366998386e-05, + 1.053011748207852830e-05, + 1.052914353495284120e-05, + 1.052815256585925482e-05, + 1.052714457839153346e-05, + 1.052611957617065149e-05, + 1.052507756284492548e-05, + 1.052401854208997531e-05, + 1.052294251760870714e-05, + 1.052184949313125248e-05, + 1.052073947241506304e-05, + 1.051961245924477857e-05, + 1.051846845743239634e-05, + 1.051730747081707283e-05, + 1.051612950326513399e-05, + 1.051493455867024627e-05, + 1.051372264095326251e-05, + 1.051249375406216093e-05, + 1.051124790197214846e-05, + 1.050998508868564212e-05, + 1.050870531823211825e-05, + 1.050740859466843607e-05, + 1.050609492207838198e-05, + 1.050476430457294568e-05, + 1.050341674629038287e-05, + 1.050205225139574259e-05, + 1.050067082408158043e-05, + 1.049927246856736392e-05, + 1.049785718909958601e-05, + 1.049642498995191925e-05, + 1.049497587542506669e-05, + 1.049350984984684155e-05, + 1.049202691757204519e-05, + 1.049052708298257215e-05, + 1.048901035048726283e-05, + 1.048747672452207619e-05, + 1.048592620954994582e-05, + 1.048435881006078671e-05, + 1.048277453057155789e-05, + 1.048117337562606259e-05, + 1.047955534979519043e-05, + 1.047792045767674636e-05, + 1.047626870389553706e-05, + 1.047460009310322522e-05, + 1.047291462997849728e-05, + 1.047121231922679743e-05, + 1.046949316558058346e-05, + 1.046775717379921321e-05, + 1.046600434866884976e-05, + 1.046423469500270699e-05, + 1.046244821764056515e-05, + 1.046064492144928243e-05, + 1.045882481132247818e-05, + 1.045698789218062948e-05, + 1.045513416897098471e-05, + 1.045326364666764999e-05, + 1.045137633027142483e-05, + 1.044947222480999697e-05, + 1.044755133533777800e-05, + 1.044561366693595088e-05, + 1.044365922471242581e-05, + 1.044168801380194194e-05, + 1.043970003936573528e-05, + 1.043769530659198259e-05, + 1.043567382069548625e-05, + 1.043363558691771495e-05, + 1.043158061052691883e-05, + 1.042950889681780261e-05, + 1.042742045111189990e-05, + 1.042531527875735132e-05, + 1.042319338512890787e-05, + 1.042105477562793094e-05, + 1.041889945568254987e-05, + 1.041672743074718250e-05, + 1.041453870630302307e-05, + 1.041233328785784063e-05, + 1.041011118094590454e-05, + 1.040787239112813854e-05, + 1.040561692399186503e-05, + 1.040334478515089143e-05, + 1.040105598024586933e-05, + 1.039875051494349997e-05, + 1.039642839493725422e-05, + 1.039408962594708966e-05, + 1.039173421371915075e-05, + 1.038936216402621098e-05, + 1.038697348266781854e-05, + 1.038456817546929345e-05, + 1.038214624828278463e-05, + 1.037970770698680918e-05, + 1.037725255748601851e-05, + 1.037478080571190822e-05, + 1.037229245762180334e-05, + 1.036978751919967145e-05, + 1.036726599645594824e-05, + 1.036472789542698012e-05, + 1.036217322217563581e-05, + 1.035960198279139440e-05, + 1.035701418338944076e-05, + 1.035440983011161416e-05, + 1.035178892912592892e-05, + 1.034915148662646931e-05, + 1.034649750883388935e-05, + 1.034382700199489946e-05, + 1.034113997238220215e-05, + 1.033843642629497137e-05, + 1.033571637005856458e-05, + 1.033297981002412289e-05, + 1.033022675256957741e-05, + 1.032745720409840235e-05, + 1.032467117104048240e-05, + 1.032186865985190777e-05, + 1.031904967701438125e-05, + 1.031621422903635154e-05, + 1.031336232245202562e-05, + 1.031049396382139921e-05, + 1.030760915973096326e-05, + 1.030470791679299406e-05, + 1.030179024164583113e-05, + 1.029885614095390597e-05, + 1.029590562140738296e-05, + 1.029293868972262012e-05, + 1.028995535264189129e-05, + 1.028695561693342170e-05, + 1.028393948939134903e-05, + 1.028090697683581146e-05, + 1.027785808611256993e-05, + 1.027479282409356208e-05, + 1.027171119767653126e-05, + 1.026861321378505872e-05, + 1.026549887936852971e-05, + 1.026236820140236050e-05, + 1.025922118688737834e-05, + 1.025605784285059738e-05, + 1.025287817634465956e-05, + 1.024968219444803965e-05, + 1.024646990426501644e-05, + 1.024324131292531189e-05, + 1.023999642758475858e-05, + 1.023673525542468650e-05, + 1.023345780365223641e-05, + 1.023016407950018538e-05, + 1.022685409022705690e-05, + 1.022352784311676172e-05, + 1.022018534547916875e-05, + 1.021682660464960535e-05, + 1.021345162798912325e-05, + 1.021006042288426310e-05, + 1.020665299674731197e-05, + 1.020322935701580020e-05, + 1.019978951115306384e-05, + 1.019633346664801087e-05, + 1.019286123101486536e-05, + 1.018937281179371811e-05, + 1.018586821654961519e-05, + 1.018234745287331520e-05, + 1.017881052838158573e-05, + 1.017525745071567363e-05, + 1.017168822754284999e-05, + 1.016810286655585279e-05, + 1.016450137547238208e-05, + 1.016088376203587752e-05, + 1.015725003401510339e-05, + 1.015360019920405876e-05, + 1.014993426542231803e-05, + 1.014625224051431769e-05, + 1.014255413235010343e-05, + 1.013883994882532507e-05, + 1.013510969786025564e-05, + 1.013136338740083162e-05, + 1.012760102541828524e-05, + 1.012382261990861261e-05, + 1.012002817889336314e-05, + 1.011621771041966490e-05, + 1.011239122255897957e-05, + 1.010854872340853214e-05, + 1.010469022109061474e-05, + 1.010081572375212915e-05, + 1.009692523956615049e-05, + 1.009301877672970798e-05, + 1.008909634346557385e-05, + 1.008515794802161283e-05, + 1.008120359867018079e-05, + 1.007723330370912248e-05, + 1.007324707146162082e-05, + 1.006924491027496696e-05, + 1.006522682852210699e-05, + 1.006119283460088471e-05, + 1.005714293693350964e-05, + 1.005307714396819522e-05, + 1.004899546417700057e-05, + 1.004489790605747879e-05, + 1.004078447813194009e-05, + 1.003665518894769397e-05, + 1.003251004707624631e-05, + 1.002834906111509501e-05, + 1.002417223968537700e-05, + 1.001997959143376385e-05, + 1.001577112503161642e-05, + 1.001154684917442589e-05, + 1.000730677258342474e-05, + 1.000305090400411297e-05, + 9.998779252206298689e-06, + 9.994491825985033328e-06, + 9.990188634159891589e-06, + 9.985869685575040938e-06, + 9.981534989099575324e-06, + 9.977184553626583445e-06, + 9.972818388074351537e-06, + 9.968436501385570547e-06, + 9.964038902527458109e-06, + 9.959625600491831389e-06, + 9.955196604295256160e-06, + 9.950751922978238735e-06, + 9.946291565606288145e-06, + 9.941815541269340159e-06, + 9.937323859081665799e-06, + 9.932816528182066164e-06, + 9.928293557733924943e-06, + 9.923754956924474884e-06, + 9.919200734965993806e-06, + 9.914630901094862695e-06, + 9.910045464571819819e-06, + 9.905444434682179260e-06, + 9.900827820735012678e-06, + 9.896195632064208107e-06, + 9.891547878027821122e-06, + 9.886884568008168019e-06, + 9.882205711411791928e-06, + 9.877511317669669492e-06, + 9.872801396236429903e-06, + 9.868075956591481452e-06, + 9.863335008238203466e-06, + 9.858578560704112320e-06, + 9.853806623540954616e-06, + 9.849019206324702096e-06, + 9.844216318654912983e-06, + 9.839397970155812793e-06, + 9.834564170475432055e-06, + 9.829714929285926492e-06, + 9.824850256283692215e-06, + 9.819970161188456011e-06, + 9.815074653744437471e-06, + 9.810163743720386260e-06, + 9.805237440907801656e-06, + 9.800295755122955259e-06, + 9.795338696205988061e-06, + 9.790366274020397138e-06, + 9.785378498454094445e-06, + 9.780375379418774928e-06, + 9.775356926849877560e-06, + 9.770323150706875027e-06, + 9.765274060972470741e-06, + 9.760209667653569539e-06, + 9.755129980781419985e-06, + 9.750035010409822047e-06, + 9.744924766617087136e-06, + 9.739799259505336755e-06, + 9.734658499199653778e-06, + 9.729502495849225944e-06, + 9.724331259627637232e-06, + 9.719144800730648639e-06, + 9.713943129378668128e-06, + 9.708726255815571554e-06, + 9.703494190308058925e-06, + 9.698246943147794001e-06, + 9.692984524648526082e-06, + 9.687706945148373604e-06, + 9.682414215008956779e-06, + 9.677106344614687782e-06, + 9.671783344373910857e-06, + 9.666445224719100523e-06, + 9.661091996104743991e-06, + 9.655723669009680669e-06, + 9.650340253936077252e-06, + 9.644941761408638289e-06, + 9.639528201976867757e-06, + 9.634099586212175603e-06, + 9.628655924709968213e-06, + 9.623197228088925054e-06, + 9.617723506990815709e-06, + 9.612234772080747213e-06, + 9.606731034047196242e-06, + 9.601212303601231531e-06, + 9.595678591477781042e-06, + 9.590129908434817115e-06, + 9.584566265252714417e-06, + 9.578987672736211670e-06, + 9.573394141712493970e-06, + 9.567785683031380828e-06, + 9.562162307566400205e-06, + 9.556524026213955036e-06, + 9.550870849893402847e-06, + 9.545202789547311563e-06, + 9.539519856140648047e-06, + 9.533822060661896185e-06, + 9.528109414122552052e-06, + 9.522381927556061739e-06, + 9.516639612020174404e-06, + 9.510882478594851795e-06, + 9.505110538382329242e-06, + 9.499323802508492928e-06, + 9.493522282121755028e-06, + 9.487705988393328152e-06, + 9.481874932517171133e-06, + 9.476029125710260076e-06, + 9.470168579211556674e-06, + 9.464293304283466797e-06, + 9.458403312210832524e-06, + 9.452498614301143903e-06, + 9.446579221884804915e-06, + 9.440645146314125506e-06, + 9.434696398964675151e-06, + 9.428732991234412095e-06, + 9.422754934543869709e-06, + 9.416762240336080250e-06, + 9.410754920076867941e-06, + 9.404732985253785090e-06, + 9.398696447377601182e-06, + 9.392645317981308456e-06, + 9.386579608620304867e-06, + 9.380499330872673608e-06, + 9.374404496338117538e-06, + 9.368295116639466905e-06, + 9.362171203421654436e-06, + 9.356032768351901682e-06, + 9.349879823119756287e-06, + 9.343712379437280033e-06, + 9.337530449038084914e-06, + 9.331334043678422418e-06, + 9.325123175137622295e-06, + 9.318897855215673429e-06, + 9.312658095735671762e-06, + 9.306403908542958014e-06, + 9.300135305504170704e-06, + 9.293852298508845344e-06, + 9.287554899468304827e-06, + 9.281243120315998241e-06, + 9.274916973007663501e-06, + 9.268576469520212649e-06, + 9.262221621853131156e-06, + 9.255852442028649022e-06, + 9.249468942089372471e-06, + 9.243071134100892813e-06, + 9.236659030150666668e-06, + 9.230232642347321396e-06, + 9.223791982822047620e-06, + 9.217337063727704761e-06, + 9.210867897238900659e-06, + 9.204384495552050862e-06, + 9.197886870885615799e-06, + 9.191375035478757384e-06, + 9.184849001594174882e-06, + 9.178308781514499937e-06, + 9.171754387545027408e-06, + 9.165185832012748054e-06, + 9.158603127265491341e-06, + 9.152006285673211234e-06, + 9.145395319628282660e-06, + 9.138770241543018008e-06, + 9.132131063852367468e-06, + 9.125477799012828058e-06, + 9.118810459501240829e-06, + 9.112129057817891013e-06, + 9.105433606482626912e-06, + 9.098724118037731346e-06, + 9.092000605046939089e-06, + 9.085263080094347588e-06, + 9.078511555786995330e-06, + 9.071746044752396977e-06, + 9.064966559638912671e-06, + 9.058173113116971151e-06, + 9.051365717878310810e-06, + 9.044544386634783688e-06, + 9.037709132121115100e-06, + 9.030859967092448937e-06, + 9.023996904324532321e-06, + 9.017119956615064080e-06, + 9.010229136782608851e-06, + 9.003324457666885070e-06, + 8.996405932128917444e-06, + 8.989473573049979846e-06, + 8.982527393333253809e-06, + 8.975567405902874771e-06, + 8.968593623702851252e-06, + 8.961606059699892259e-06, + 8.954604726880784866e-06, + 8.947589638252666960e-06, + 8.940560806844396048e-06, + 8.933518245705458278e-06, + 8.926461967906171725e-06, + 8.919391986537974384e-06, + 8.912308314712224770e-06, + 8.905210965561948503e-06, + 8.898099952240584695e-06, + 8.890975287922390835e-06, + 8.883836985802210699e-06, + 8.876685059095991044e-06, + 8.869519521039387388e-06, + 8.862340384889576662e-06, + 8.855147663924005299e-06, + 8.847941371440802577e-06, + 8.840721520758595975e-06, + 8.833488125216858451e-06, + 8.826241198174703966e-06, + 8.818980753012598483e-06, + 8.811706803131187681e-06, + 8.804419361951564614e-06, + 8.797118442915542456e-06, + 8.789804059484383951e-06, + 8.782476225140695378e-06, + 8.775134953387032338e-06, + 8.767780257746375785e-06, + 8.760412151761932123e-06, + 8.753030648997500824e-06, + 8.745635763036190320e-06, + 8.738227507482296727e-06, + 8.730805895959928262e-06, + 8.723370942113454170e-06, + 8.715922659607326845e-06, + 8.708461062126486717e-06, + 8.700986163374995136e-06, + 8.693497977077928340e-06, + 8.685996516980106904e-06, + 8.678481796846380345e-06, + 8.670953830461898171e-06, + 8.663412631630837640e-06, + 8.655858214178018201e-06, + 8.648290591949047185e-06, + 8.640709778807548316e-06, + 8.633115788638356716e-06, + 8.625508635346060314e-06, + 8.617888332854178228e-06, + 8.610254895106981882e-06, + 8.602608336068205821e-06, + 8.594948669721281498e-06, + 8.587275910069445687e-06, + 8.579590071135881097e-06, + 8.571891166962208647e-06, + 8.564179211611919648e-06, + 8.556454219165881447e-06, + 8.548716203725903429e-06, + 8.540965179413285212e-06, + 8.533201160367942501e-06, + 8.525424160749991043e-06, + 8.517634194739951610e-06, + 8.509831276535932766e-06, + 8.502015420356742864e-06, + 8.494186640440634748e-06, + 8.486344951043957272e-06, + 8.478490366444739948e-06, + 8.470622900937974965e-06, + 8.462742568839406825e-06, + 8.454849384483960239e-06, + 8.446943362224593253e-06, + 8.439024516435458370e-06, + 8.431092861508910830e-06, + 8.423148411855884695e-06, + 8.415191181907432754e-06, + 8.407221186113765987e-06, + 8.399238438942869511e-06, + 8.391242954883782298e-06, + 8.383234748443703702e-06, + 8.375213834148078170e-06, + 8.367180226542470569e-06, + 8.359133940191038138e-06, + 8.351074989676903184e-06, + 8.343003389602459709e-06, + 8.334919154588011378e-06, + 8.326822299273724780e-06, + 8.318712838318618067e-06, + 8.310590786399266693e-06, + 8.302456158212952677e-06, + 8.294308968474842293e-06, + 8.286149231918089406e-06, + 8.277976963295598996e-06, + 8.269792177378649880e-06, + 8.261594888957213200e-06, + 8.253385112840215000e-06, + 8.245162863854182671e-06, + 8.236928156845249024e-06, + 8.228681006677817376e-06, + 8.220421428234759746e-06, + 8.212149436417528670e-06, + 8.203865046146367263e-06, + 8.195568272358926860e-06, + 8.187259130012403236e-06, + 8.178937634081991613e-06, + 8.170603799561289854e-06, + 8.162257641462217144e-06, + 8.153899174815405318e-06, + 8.145528414668718251e-06, + 8.137145376089357580e-06, + 8.128750074162436300e-06, + 8.120342523991244733e-06, + 8.111922740697652024e-06, + 8.103490739420622134e-06, + 8.095046535318334814e-06, + 8.086590143566689746e-06, + 8.078121579359743608e-06, + 8.069640857909522036e-06, + 8.061147994446529538e-06, + 8.052643004218138433e-06, + 8.044125902490818249e-06, + 8.035596704548592420e-06, + 8.027055425693438095e-06, + 8.018502081245221756e-06, + 8.009936686542014318e-06, + 8.001359256938701993e-06, + 7.992769807809066605e-06, + 7.984168354544233826e-06, + 7.975554912553210190e-06, + 7.966929497262993214e-06, + 7.958292124117272046e-06, + 7.949642808578106281e-06, + 7.940981566126307134e-06, + 7.932308412258157722e-06, + 7.923623362488960438e-06, + 7.914926432351590224e-06, + 7.906217637395393421e-06, + 7.897496993188308747e-06, + 7.888764515315395146e-06, + 7.880020219379187550e-06, + 7.871264121000042460e-06, + 7.862496235814592964e-06, + 7.853716579477554611e-06, + 7.844925167662162476e-06, + 7.836122016056722045e-06, + 7.827307140368354793e-06, + 7.818480556321375272e-06, + 7.809642279655949407e-06, + 7.800792326131623236e-06, + 7.791930711524017790e-06, + 7.783057451625206868e-06, + 7.774172562245458535e-06, + 7.765276059212159393e-06, + 7.756367958368278061e-06, + 7.747448275576503782e-06, + 7.738517026713852512e-06, + 7.729574227675830935e-06, + 7.720619894374966018e-06, + 7.711654042739175314e-06, + 7.702676688715549816e-06, + 7.693687848266903142e-06, + 7.684687537372171333e-06, + 7.675675772028305130e-06, + 7.666652568248929963e-06, + 7.657617942063017804e-06, + 7.648571909518908882e-06, + 7.639514486678968596e-06, + 7.630445689623778637e-06, + 7.621365534450224387e-06, + 7.612274037271797305e-06, + 7.603171214218591547e-06, + 7.594057081437658020e-06, + 7.584931655091395020e-06, + 7.575794951359950420e-06, + 7.566646986439873191e-06, + 7.557487776542664976e-06, + 7.548317337898576495e-06, + 7.539135686753123693e-06, + 7.529942839367352017e-06, + 7.520738812019882003e-06, + 7.511523621005176242e-06, + 7.502297282634117061e-06, + 7.493059813234114937e-06, + 7.483811229147653302e-06, + 7.474551546734644984e-06, + 7.465280782370755083e-06, + 7.455998952447795685e-06, + 7.446706073373693682e-06, + 7.437402161572817721e-06, + 7.428087233484483191e-06, + 7.418761305565161289e-06, + 7.409424394286938262e-06, + 7.400076516137923680e-06, + 7.390717687622097123e-06, + 7.381347925259791835e-06, + 7.371967245586020143e-06, + 7.362575665152862931e-06, + 7.353173200527812005e-06, + 7.343759868294124145e-06, + 7.334335685051323400e-06, + 7.324900667413384202e-06, + 7.315454832011236039e-06, + 7.305998195491067700e-06, + 7.296530774514740624e-06, + 7.287052585759747394e-06, + 7.277563645919542084e-06, + 7.268063971701988493e-06, + 7.258553579831696260e-06, + 7.249032487048290377e-06, + 7.239500710107014278e-06, + 7.229958265778857736e-06, + 7.220405170849050000e-06, + 7.210841442119445878e-06, + 7.201267096406836757e-06, + 7.191682150543404615e-06, + 7.182086621376529740e-06, + 7.172480525769368410e-06, + 7.162863880599085980e-06, + 7.153236702758794894e-06, + 7.143599009158159469e-06, + 7.133950816719426694e-06, + 7.124292142381696973e-06, + 7.114623003099138581e-06, + 7.104943415839734898e-06, + 7.095253397587749278e-06, + 7.085552965342101286e-06, + 7.075842136116627586e-06, + 7.066120926940557968e-06, + 7.056389354856783174e-06, + 7.046647436923944520e-06, + 7.036895190216795584e-06, + 7.027132631822403262e-06, + 7.017359778844303312e-06, + 7.007576648400851179e-06, + 6.997783257623419512e-06, + 6.987979623661047526e-06, + 6.978165763674536335e-06, + 6.968341694841042411e-06, + 6.958507434351885465e-06, + 6.948662999413410728e-06, + 6.938808407244873902e-06, + 6.928943675082978724e-06, + 6.919068820176029048e-06, + 6.909183859788446916e-06, + 6.899288811199162350e-06, + 6.889383691699777833e-06, + 6.879468518598849214e-06, + 6.869543309218018997e-06, + 6.859608080892391584e-06, + 6.849662850972670335e-06, + 6.839707636823766739e-06, + 6.829742455823247807e-06, + 6.819767325365774521e-06, + 6.809782262857217495e-06, + 6.799787285719308037e-06, + 6.789782411387472283e-06, + 6.779767657311257256e-06, + 6.769743040954184328e-06, + 6.759708579794307414e-06, + 6.749664291322391856e-06, + 6.739610193044413162e-06, + 6.729546302480306794e-06, + 6.719472637162190239e-06, + 6.709389214638648154e-06, + 6.699296052470843633e-06, + 6.689193168232819754e-06, + 6.679080579513784873e-06, + 6.668958303916235599e-06, + 6.658826359056387934e-06, + 6.648684762564594858e-06, + 6.638533532083592975e-06, + 6.628372685270994480e-06, + 6.618202239797632906e-06, + 6.608022213347930736e-06, + 6.597832623619835873e-06, + 6.587633488325200269e-06, + 6.577424825188134982e-06, + 6.567206651947428456e-06, + 6.556978986354917680e-06, + 6.546741846175782104e-06, + 6.536495249188619875e-06, + 6.526239213185756155e-06, + 6.515973755971512634e-06, + 6.505698895364761335e-06, + 6.495414649197242405e-06, + 6.485121035313846176e-06, + 6.474818071573102753e-06, + 6.464505775845360892e-06, + 6.454184166015432436e-06, + 6.443853259980758489e-06, + 6.433513075651801593e-06, + 6.423163630952092314e-06, + 6.412804943818596008e-06, + 6.402437032199887463e-06, + 6.392059914058764847e-06, + 6.381673607370612388e-06, + 6.371278130123558773e-06, + 6.360873500319065835e-06, + 6.350459735970067620e-06, + 6.340036855103596192e-06, + 6.329604875759024036e-06, + 6.319163815988386780e-06, + 6.308713693856426396e-06, + 6.298254527441013862e-06, + 6.287786334831256900e-06, + 6.277309134129781026e-06, + 6.266822943453099713e-06, + 6.256327780927563023e-06, + 6.245823664693836725e-06, + 6.235310612905033737e-06, + 6.224788643725384283e-06, + 6.214257775332820192e-06, + 6.203718025917249493e-06, + 6.193169413680899462e-06, + 6.182611956838780795e-06, + 6.172045673616780939e-06, + 6.161470582253987504e-06, + 6.150886701003090598e-06, + 6.140294048126173082e-06, + 6.129692641899349762e-06, + 6.119082500610833615e-06, + 6.108463642559106202e-06, + 6.097836086057951576e-06, + 6.087199849429887552e-06, + 6.076554951011371563e-06, + 6.065901409150333257e-06, + 6.055239242207079975e-06, + 6.044568468551994513e-06, + 6.033889106570567349e-06, + 6.023201174656892274e-06, + 6.012504691218741814e-06, + 6.001799674675635994e-06, + 5.991086143457045783e-06, + 5.980364116006900155e-06, + 5.969633610779408523e-06, + 5.958894646239569806e-06, + 5.948147240865323045e-06, + 5.937391413146265842e-06, + 5.926627181581659599e-06, + 5.915854564685543055e-06, + 5.905073580980242317e-06, + 5.894284249001369207e-06, + 5.883486587295968795e-06, + 5.872680614420666094e-06, + 5.861866348946202771e-06, + 5.851043809453315478e-06, + 5.840213014533045872e-06, + 5.829373982789197007e-06, + 5.818526732836753621e-06, + 5.807671283300049999e-06, + 5.796807652817448989e-06, + 5.785935860037022974e-06, + 5.775055923617026523e-06, + 5.764167862228222339e-06, + 5.753271694551946637e-06, + 5.742367439280602966e-06, + 5.731455115117955280e-06, + 5.720534740777426250e-06, + 5.709606334984701888e-06, + 5.698669916475936690e-06, + 5.687725503998133099e-06, + 5.676773116309111020e-06, + 5.665812772177994855e-06, + 5.654844490383251783e-06, + 5.643868289715475106e-06, + 5.632884188975518234e-06, + 5.621892206974895336e-06, + 5.610892362536262452e-06, + 5.599884674491398166e-06, + 5.588869161684159752e-06, + 5.577845842968430814e-06, + 5.566814737208593081e-06, + 5.555775863279556902e-06, + 5.544729240067134789e-06, + 5.533674886466096623e-06, + 5.522612821383072444e-06, + 5.511543063734543285e-06, + 5.500465632447330755e-06, + 5.489380546458534364e-06, + 5.478287824715991454e-06, + 5.467187486176305317e-06, + 5.456079549807745424e-06, + 5.444964034588247590e-06, + 5.433840959505846801e-06, + 5.422710343559216780e-06, + 5.411572205755604915e-06, + 5.400426565113735043e-06, + 5.389273440661890618e-06, + 5.378112851438268763e-06, + 5.366944816491037878e-06, + 5.355769354878734889e-06, + 5.344586485668314538e-06, + 5.333396227938073337e-06, + 5.322198600775533681e-06, + 5.310993623278063876e-06, + 5.299781314552795978e-06, + 5.288561693716963756e-06, + 5.277334779895618247e-06, + 5.266100592226814138e-06, + 5.254859149854829266e-06, + 5.243610471935495846e-06, + 5.232354577634137944e-06, + 5.221091486124152695e-06, + 5.209821216589444681e-06, + 5.198543788224752879e-06, + 5.187259220231359597e-06, + 5.175967531821881292e-06, + 5.164668742218283970e-06, + 5.153362870649866400e-06, + 5.142049936358704844e-06, + 5.130729958592642164e-06, + 5.119402956610745257e-06, + 5.108068949680758870e-06, + 5.096727957080093244e-06, + 5.085379998093312662e-06, + 5.074025092017518340e-06, + 5.062663258155431557e-06, + 5.051294515820770621e-06, + 5.039918884336245097e-06, + 5.028536383031539017e-06, + 5.017147031248266872e-06, + 5.005750848335458928e-06, + 4.994347853649971187e-06, + 4.982938066559029029e-06, + 4.971521506438648341e-06, + 4.960098192671600100e-06, + 4.948668144652912695e-06, + 4.937231381782778874e-06, + 4.925787923472123295e-06, + 4.914337789140456139e-06, + 4.902880998213908000e-06, + 4.891417570130197727e-06, + 4.879947524334055908e-06, + 4.868470880277735632e-06, + 4.856987657423456177e-06, + 4.845497875241877503e-06, + 4.834001553210107188e-06, + 4.822498710816566625e-06, + 4.810989367556561046e-06, + 4.799473542932692026e-06, + 4.787951256457341827e-06, + 4.776422527650634593e-06, + 4.764887376040902219e-06, + 4.753345821165179013e-06, + 4.741797882567132401e-06, + 4.730243579800019915e-06, + 4.718682932424702902e-06, + 4.707115960010100532e-06, + 4.695542682133141521e-06, + 4.683963118379206278e-06, + 4.672377288340144003e-06, + 4.660785211617262713e-06, + 4.649186907819191331e-06, + 4.637582396562433645e-06, + 4.625971697471814695e-06, + 4.614354830178449587e-06, + 4.602731814322684393e-06, + 4.591102669552082751e-06, + 4.579467415521946795e-06, + 4.567826071895172307e-06, + 4.556178658342815384e-06, + 4.544525194541977400e-06, + 4.532865700178837378e-06, + 4.521200194946608104e-06, + 4.509528698545973195e-06, + 4.497851230685086250e-06, + 4.486167811080013005e-06, + 4.474478459452694215e-06, + 4.462783195533956010e-06, + 4.451082039061432973e-06, + 4.439375009780045862e-06, + 4.427662127442489505e-06, + 4.415943411807138934e-06, + 4.404218882641120721e-06, + 4.392488559718196252e-06, + 4.380752462819236906e-06, + 4.369010611732205419e-06, + 4.357263026252664112e-06, + 4.345509726181629346e-06, + 4.333750731328670823e-06, + 4.321986061509806707e-06, + 4.310215736547961022e-06, + 4.298439776272979743e-06, + 4.286658200522045848e-06, + 4.274871029137135670e-06, + 4.263078281970622876e-06, + 4.251279978878041409e-06, + 4.239476139723682688e-06, + 4.227666784378566961e-06, + 4.215851932718821238e-06, + 4.204031604628231401e-06, + 4.192205819998707223e-06, + 4.180374598725636398e-06, + 4.168537960713009930e-06, + 4.156695925871295239e-06, + 4.144848514115371940e-06, + 4.132995745370159527e-06, + 4.121137639563364235e-06, + 4.109274216631086394e-06, + 4.097405496515806187e-06, + 4.085531499164700595e-06, + 4.073652244532264115e-06, + 4.061767752580799195e-06, + 4.049878043275658448e-06, + 4.037983136590436119e-06, + 4.026083052504883534e-06, + 4.014177811002733921e-06, + 4.002267432076914204e-06, + 3.990351935724848205e-06, + 3.978431341948855596e-06, + 3.966505670758861558e-06, + 3.954574942170641730e-06, + 3.942639176203835065e-06, + 3.930698392887563900e-06, + 3.918752612253146080e-06, + 3.906801854339779398e-06, + 3.894846139192414693e-06, + 3.882885486859650979e-06, + 3.870919917398933678e-06, + 3.858949450871766348e-06, + 3.846974107344270571e-06, + 3.834993906889708418e-06, + 3.823008869586397898e-06, + 3.811019015518185603e-06, + 3.799024364774916392e-06, + 3.787024937450363237e-06, + 3.775020753645272309e-06, + 3.763011833465252172e-06, + 3.750998197021295555e-06, + 3.738979864429728531e-06, + 3.726956855812689509e-06, + 3.714929191295969733e-06, + 3.702896891012228610e-06, + 3.690859975098741879e-06, + 3.678818463697980129e-06, + 3.666772376957525795e-06, + 3.654721735030583494e-06, + 3.642666558073828558e-06, + 3.630606866250565624e-06, + 3.618542679728570392e-06, + 3.606474018680552530e-06, + 3.594400903284693960e-06, + 3.582323353722494433e-06, + 3.570241390181874636e-06, + 3.558155032855080201e-06, + 3.546064301939124714e-06, + 3.533969217635788434e-06, + 3.521869800152148544e-06, + 3.509766069698312910e-06, + 3.497658046490699368e-06, + 3.485545750749791515e-06, + 3.473429202700674030e-06, + 3.461308422572979311e-06, + 3.449183430601426613e-06, + 3.437054247023593927e-06, + 3.424920892083157035e-06, + 3.412783386027636400e-06, + 3.400641749108970188e-06, + 3.388496001583989023e-06, + 3.376346163712245050e-06, + 3.364192255758628838e-06, + 3.352034297993929692e-06, + 3.339872310689927523e-06, + 3.327706314124727038e-06, + 3.315536328580607120e-06, + 3.303362374342347520e-06, + 3.291184471700434870e-06, + 3.279002640948866757e-06, + 3.266816902385666288e-06, + 3.254627276313400059e-06, + 3.242433783036964004e-06, + 3.230236442866240117e-06, + 3.218035276116613989e-06, + 3.205830303104119190e-06, + 3.193621544150736734e-06, + 3.181409019582248694e-06, + 3.169192749726582253e-06, + 3.156972754916447366e-06, + 3.144749055489862770e-06, + 3.132521671785266055e-06, + 3.120290624146881321e-06, + 3.108055932922492743e-06, + 3.095817618461297351e-06, + 3.083575701119786821e-06, + 3.071330201254163990e-06, + 3.059081139226225926e-06, + 3.046828535401218814e-06, + 3.034572410146107468e-06, + 3.022312783832324379e-06, + 3.010049676836223721e-06, + 2.997783109534199482e-06, + 2.985513102308077245e-06, + 2.973239675542873368e-06, + 2.960962849624638012e-06, + 2.948682644946352186e-06, + 2.936399081900326048e-06, + 2.924112180884115007e-06, + 2.911821962297779575e-06, + 2.899528446544939492e-06, + 2.887231654030035700e-06, + 2.874931605164240087e-06, + 2.862628320357836002e-06, + 2.850321820026172478e-06, + 2.838012124587434834e-06, + 2.825699254460453831e-06, + 2.813383230070090257e-06, + 2.801064071842336958e-06, + 2.788741800204799531e-06, + 2.776416435589394550e-06, + 2.764087998430136685e-06, + 2.751756509163654978e-06, + 2.739421988229702326e-06, + 2.727084456068936256e-06, + 2.714743933126166452e-06, + 2.702400439848122823e-06, + 2.690053996683993789e-06, + 2.677704624085361063e-06, + 2.665352342506733278e-06, + 2.652997172403330155e-06, + 2.640639134234308420e-06, + 2.628278248460556561e-06, + 2.615914535545211090e-06, + 2.603548015953604875e-06, + 2.591178710153801620e-06, + 2.578806638614352919e-06, + 2.566431821807567804e-06, + 2.554054280207283353e-06, + 2.541674034289350045e-06, + 2.529291104532222982e-06, + 2.516905511414635093e-06, + 2.504517275418925553e-06, + 2.492126417028791750e-06, + 2.479732956729790313e-06, + 2.467336915009325246e-06, + 2.454938312357139639e-06, + 2.442537169263138363e-06, + 2.430133506220555973e-06, + 2.417727343723829816e-06, + 2.405318702269031585e-06, + 2.392907602353880454e-06, + 2.380494064478254259e-06, + 2.368078109141949099e-06, + 2.355659756847930247e-06, + 2.343239028100148072e-06, + 2.330815943403978080e-06, + 2.318390523266811713e-06, + 2.305962788195778681e-06, + 2.293532758700482453e-06, + 2.281100455293493655e-06, + 2.268665898485398737e-06, + 2.256229108790256562e-06, + 2.243790106723340214e-06, + 2.231348912799481474e-06, + 2.218905547536324270e-06, + 2.206460031452100797e-06, + 2.194012385066132957e-06, + 2.181562628899363872e-06, + 2.169110783472114096e-06, + 2.156656869306807789e-06, + 2.144200906928477972e-06, + 2.131742916859783009e-06, + 2.119282919626488606e-06, + 2.106820935755225288e-06, + 2.094356985771790100e-06, + 2.081891090203874054e-06, + 2.069423269581614390e-06, + 2.056953544432533984e-06, + 2.044481935287080938e-06, + 2.032008462676352184e-06, + 2.019533147129872134e-06, + 2.007056009181616360e-06, + 1.994577069362265899e-06, + 1.982096348205244905e-06, + 1.969613866244448905e-06, + 1.957129644012597321e-06, + 1.944643702043933809e-06, + 1.932156060874750154e-06, + 1.919666741038389194e-06, + 1.907175763070733384e-06, + 1.894683147507939404e-06, + 1.882188914884237995e-06, + 1.869693085737942385e-06, + 1.857195680603689255e-06, + 1.844696720018483802e-06, + 1.832196224518912999e-06, + 1.819694214641638784e-06, + 1.807190710923395303e-06, + 1.794685733901500519e-06, + 1.782179304111591460e-06, + 1.769671442090919385e-06, + 1.757162168376676474e-06, + 1.744651503503724506e-06, + 1.732139468010096342e-06, + 1.719626082432006684e-06, + 1.707111367304324512e-06, + 1.694595343163368715e-06, + 1.682078030544617501e-06, + 1.669559449983226146e-06, + 1.657039622014577145e-06, + 1.644518567172004441e-06, + 1.631996305990101516e-06, + 1.619472859003010809e-06, + 1.606948246742196013e-06, + 1.594422489741916035e-06, + 1.581895608534233209e-06, + 1.569367623649530417e-06, + 1.556838555619229427e-06, + 1.544308424973562348e-06, + 1.531777252242083240e-06, + 1.519245057953641855e-06, + 1.506711862636881692e-06, + 1.494177686818021195e-06, + 1.481642551024123724e-06, + 1.469106475780855245e-06, + 1.456569481612999963e-06, + 1.444031589045000731e-06, + 1.431492818598673537e-06, + 1.418953190796532752e-06, + 1.406412726159520650e-06, + 1.393871445207543799e-06, + 1.381329368459422232e-06, + 1.368786516433422661e-06, + 1.356242909645004728e-06, + 1.343698568610105591e-06, + 1.331153513842920910e-06, + 1.318607765856376639e-06, + 1.306061345162684899e-06, + 1.293514272271087050e-06, + 1.280966567691134683e-06, + 1.268418251930460220e-06, + 1.255869345495276035e-06, + 1.243319868890350308e-06, + 1.230769842619543202e-06, + 1.218219287183514578e-06, + 1.205668223082511155e-06, + 1.193116670816863721e-06, + 1.180564650881953850e-06, + 1.168012183773750746e-06, + 1.155459289986537804e-06, + 1.142905990011235065e-06, + 1.130352304338673842e-06, + 1.117798253457356743e-06, + 1.105243857853983889e-06, + 1.092689138013956902e-06, + 1.080134114419143367e-06, + 1.067578807550604921e-06, + 1.055023237889144007e-06, + 1.042467425910235654e-06, + 1.029911392089579355e-06, + 1.017355156900833466e-06, + 1.004798740813906316e-06, + 9.922421642982719169e-07, + 9.796854478207066944e-07, + 9.671286118458152803e-07, + 9.545716768359892213e-07, + 9.420146632519431508e-07, + 9.294575915498840046e-07, + 9.169004821876188694e-07, + 9.043433556167065878e-07, + 8.917862322885663475e-07, + 8.792291326522132454e-07, + 8.666720771525553269e-07, + 8.541150862331319383e-07, + 8.415581803366611216e-07, + 8.290013798999721339e-07, + 8.164447053595525604e-07, + 8.038881771492915010e-07, + 7.913318156982016869e-07, + 7.787756414365409878e-07, + 7.662196747879537459e-07, + 7.536639361755788367e-07, + 7.411084460197895728e-07, + 7.285532247359213268e-07, + 7.159982927398272203e-07, + 7.034436704428136077e-07, + 6.908893782521731779e-07, + 6.783354365739431051e-07, + 6.657818658111830311e-07, + 6.532286863617326512e-07, + 6.406759186237377571e-07, + 6.281235829906128265e-07, + 6.155716998515527363e-07, + 6.030202895942952552e-07, + 5.904693726028616888e-07, + 5.779189692580706053e-07, + 5.653690999380725251e-07, + 5.528197850160772253e-07, + 5.402710448636776030e-07, + 5.277228998491367629e-07, + 5.151753703351249572e-07, + 5.026284766842635215e-07, + 4.900822392540798417e-07, + 4.775366783975208668e-07, + 4.649918144657150720e-07, + 4.524476678057110925e-07, + 4.399042587609972721e-07, + 4.273616076720324357e-07, + 4.148197348739720817e-07, + 4.022786606999992865e-07, + 3.897384054790412095e-07, + 3.771989895363100822e-07, + 3.646604331932594806e-07, + 3.521227567681164733e-07, + 3.395859805736163908e-07, + 3.270501249203130830e-07, + 3.145152101143185064e-07, + 3.019812564578294192e-07, + 2.894482842490897417e-07, + 2.769163137829218044e-07, + 2.643853653484540767e-07, + 2.518554592324450827e-07, + 2.393266157170129292e-07, + 2.267988550801634049e-07, + 2.142721975963144518e-07, + 2.017466635340311734e-07, + 1.892222731593432123e-07, + 1.766990467334768195e-07, + 1.641770045133839326e-07, + 1.516561667517073414e-07, + 1.391365536973071454e-07, + 1.266181855929965022e-07, + 1.141010826788556443e-07, + 1.015852651899686860e-07, + 8.907075335694934014e-08, + 7.655756740590746001e-08, + 6.404572755897520568e-08, + 5.153525403204261398e-08, + 3.902616703807284569e-08, + 2.651848678483836431e-08, + 1.401223347544582179e-08, + 1.507427308861905196e-09, +-1.099591152235043793e-08, +-2.349776282927511653e-08, +-3.599810642611786055e-08, +-4.849692213525810782e-08, +-6.099418978170436070e-08, +-7.348988919535676660e-08, +-8.598400021271294638e-08, +-9.847650267355405736e-08, +-1.109673764232076683e-07, +-1.234566013120228769e-07, +-1.359441571954019015e-07, +-1.484300239332749207e-07, +-1.609141813929207723e-07, +-1.733966094428653120e-07, +-1.858772879607196179e-07, +-1.983561968270779123e-07, +-2.108333159277841687e-07, +-2.233086251556305458e-07, +-2.357821044076061707e-07, +-2.482537335843739115e-07, +-2.607234925953121024e-07, +-2.731913613529804272e-07, +-2.856573197753759127e-07, +-2.981213477881972856e-07, +-3.105834253187489295e-07, +-3.230435323037655633e-07, +-3.355016486833271567e-07, +-3.479577544031123026e-07, +-3.604118294166556126e-07, +-3.728638536798193979e-07, +-3.853138071558305503e-07, +-3.977616698147570766e-07, +-4.102074216307575171e-07, +-4.226510425837811530e-07, +-4.350925126618313841e-07, +-4.475318118554243334e-07, +-4.599689201626348872e-07, +-4.724038175885709522e-07, +-4.848364841426223455e-07, +-4.972668998407181903e-07, +-5.096950447048042435e-07, +-5.221208987623210179e-07, +-5.345444420484475191e-07, +-5.469656546028136993e-07, +-5.593845164711900758e-07, +-5.718010077077430626e-07, +-5.842151083695129503e-07, +-5.966267985214464472e-07, +-6.090360582358670711e-07, +-6.214428675897409278e-07, +-6.338472066669159479e-07, +-6.462490555576085850e-07, +-6.586483943578777028e-07, +-6.710452031718735528e-07, +-6.834394621085430283e-07, +-6.958311512838806545e-07, +-7.082202508204049100e-07, +-7.206067408471881909e-07, +-7.329906014993359915e-07, +-7.453718129202363059e-07, +-7.577503552582607523e-07, +-7.701262086690241396e-07, +-7.824993533148455424e-07, +-7.948697693647982761e-07, +-8.072374369941713953e-07, +-8.196023363867236493e-07, +-8.319644477313978403e-07, +-8.443237512245540267e-07, +-8.566802270694579144e-07, +-8.690338554757580263e-07, +-8.813846166617245160e-07, +-8.937324908509658563e-07, +-9.060774582746746412e-07, +-9.184194991710984023e-07, +-9.307585937855775133e-07, +-9.430947223700219352e-07, +-9.554278651851564895e-07, +-9.677580024972263229e-07, +-9.800851145802543563e-07, +-9.924091817155033130e-07, +-1.004730184191519764e-06, +-1.017048102303607276e-06, +-1.029362916356064901e-06, +-1.041674606658911710e-06, +-1.053983153530122950e-06, +-1.066288537295104679e-06, +-1.078590738286180883e-06, +-1.090889736844832400e-06, +-1.103185513318959941e-06, +-1.115478048062368882e-06, +-1.127767321439764858e-06, +-1.140053313821277264e-06, +-1.152336005584679548e-06, +-1.164615377117090255e-06, +-1.176891408811686339e-06, +-1.189164081069943980e-06, +-1.201433374301118084e-06, +-1.213699268921714374e-06, +-1.225961745357741855e-06, +-1.238220784041965683e-06, +-1.250476365413416936e-06, +-1.262728469922346071e-06, +-1.274977078024777342e-06, +-1.287222170184724643e-06, +-1.299463726876429577e-06, +-1.311701728578883275e-06, +-1.323936155780823463e-06, +-1.336166988980199986e-06, +-1.348394208681466419e-06, +-1.360617795397251476e-06, +-1.372837729650593060e-06, +-1.385053991968927715e-06, +-1.397266562891808155e-06, +-1.409475422964889332e-06, +-1.421680552742163968e-06, +-1.433881932788183262e-06, +-1.446079543672604960e-06, +-1.458273365975152529e-06, +-1.470463380285105234e-06, +-1.482649567198579380e-06, +-1.494831907320224493e-06, +-1.507010381265409726e-06, +-1.519184969654258414e-06, +-1.531355653119344643e-06, +-1.543522412299680794e-06, +-1.555685227843496664e-06, +-1.567844080407739286e-06, +-1.579998950658062136e-06, +-1.592149819268359259e-06, +-1.604296666922932832e-06, +-1.616439474313296667e-06, +-1.628578222139797227e-06, +-1.640712891113855506e-06, +-1.652843461952530561e-06, +-1.664969915383464489e-06, +-1.677092232144361719e-06, +-1.689210392980304544e-06, +-1.701324378645947580e-06, +-1.713434169905018857e-06, +-1.725539747529794029e-06, +-1.737641092303311783e-06, +-1.749738185016125896e-06, +-1.761831006467991888e-06, +-1.773919537470044953e-06, +-1.786003758839411350e-06, +-1.798083651404134534e-06, +-1.810159196002632419e-06, +-1.822230373481053578e-06, +-1.834297164695438445e-06, +-1.846359550511239474e-06, +-1.858417511803334264e-06, +-1.870471029455507181e-06, +-1.882520084362680859e-06, +-1.894564657427642422e-06, +-1.906604729563289180e-06, +-1.918640281692088222e-06, +-1.930671294745583227e-06, +-1.942697749666563934e-06, +-1.954719627405876847e-06, +-1.966736908924607402e-06, +-1.978749575193570905e-06, +-1.990757607193336668e-06, +-2.002760985913717675e-06, +-2.014759692355982607e-06, +-2.026753707529606623e-06, +-2.038743012454488893e-06, +-2.050727588160445225e-06, +-2.062707415686686294e-06, +-2.074682476084000021e-06, +-2.086652750411555717e-06, +-2.098618219739094089e-06, +-2.110578865146401654e-06, +-2.122534667723362832e-06, +-2.134485608569425469e-06, +-2.146431668795812864e-06, +-2.158372829522839096e-06, +-2.170309071879399957e-06, +-2.182240377007862877e-06, +-2.194166726058706472e-06, +-2.206088100192696574e-06, +-2.218004480582545143e-06, +-2.229915848409681804e-06, +-2.241822184866485351e-06, +-2.253723471155713275e-06, +-2.265619688490059184e-06, +-2.277510818094263616e-06, +-2.289396841202515759e-06, +-2.301277739057917282e-06, +-2.313153492917331175e-06, +-2.325024084046091604e-06, +-2.336889493720135471e-06, +-2.348749703228175899e-06, +-2.360604693865858551e-06, +-2.372454446943294298e-06, +-2.384298943779172333e-06, +-2.396138165703475767e-06, +-2.407972094056464759e-06, +-2.419800710191337898e-06, +-2.431623995468410965e-06, +-2.443441931262621227e-06, +-2.455254498957672738e-06, +-2.467061679948203905e-06, +-2.478863455641971554e-06, +-2.490659807454491335e-06, +-2.502450716813952626e-06, +-2.514236165160617992e-06, +-2.526016133944257518e-06, +-2.537790604625750549e-06, +-2.549559558679241814e-06, +-2.561322977586322309e-06, +-2.573080842843488266e-06, +-2.584833135956377524e-06, +-2.596579838442371185e-06, +-2.608320931830152734e-06, +-2.620056397659715664e-06, +-2.631786217481875163e-06, +-2.643510372860391198e-06, +-2.655228845368842118e-06, +-2.666941616592234018e-06, +-2.678648668129148814e-06, +-2.690349981586482897e-06, +-2.702045538584212539e-06, +-2.713735320754942006e-06, +-2.725419309741236246e-06, +-2.737097487197802847e-06, +-2.748769834790982550e-06, +-2.760436334198234248e-06, +-2.772096967110286029e-06, +-2.783751715227999038e-06, +-2.795400560264510467e-06, +-2.807043483944721101e-06, +-2.818680468005326238e-06, +-2.830311494194327791e-06, +-2.841936544273166702e-06, +-2.853555600013591031e-06, +-2.865168643199775659e-06, +-2.876775655627846678e-06, +-2.888376619105891557e-06, +-2.899971515453472942e-06, +-2.911560326503765300e-06, +-2.923143034100398448e-06, +-2.934719620099634853e-06, +-2.946290066369822872e-06, +-2.957854354790954600e-06, +-2.969412467256731359e-06, +-2.980964385671488973e-06, +-2.992510091952310262e-06, +-3.004049568028526142e-06, +-3.015582795841753744e-06, +-3.027109757345387767e-06, +-3.038630434506726534e-06, +-3.050144809303862530e-06, +-3.061652863727797025e-06, +-3.073154579781958953e-06, +-3.084649939481703052e-06, +-3.096138924856398217e-06, +-3.107621517946390468e-06, +-3.119097700805045569e-06, +-3.130567455498303487e-06, +-3.142030764104677123e-06, +-3.153487608714783055e-06, +-3.164937971433447262e-06, +-3.176381834377075934e-06, +-3.187819179673279815e-06, +-3.199249989465477821e-06, +-3.210674245907752170e-06, +-3.222091931166984167e-06, +-3.233503027424406823e-06, +-3.244907516872528850e-06, +-3.256305381717262411e-06, +-3.267696604177364074e-06, +-3.279081166484040100e-06, +-3.290459050882961107e-06, +-3.301830239631748499e-06, +-3.313194714999467522e-06, +-3.324552459271296104e-06, +-3.335903454743429531e-06, +-3.347247683725109514e-06, +-3.358585128540785818e-06, +-3.369915771524405564e-06, +-3.381239595026707453e-06, +-3.392556581409530978e-06, +-3.403866713048482882e-06, +-3.415169972331885143e-06, +-3.426466341663358423e-06, +-3.437755803456283747e-06, +-3.449038340140930705e-06, +-3.460313934158843742e-06, +-3.471582567964996588e-06, +-3.482844224029788714e-06, +-3.494098884833982190e-06, +-3.505346532873361641e-06, +-3.516587150658173932e-06, +-3.527820720710709465e-06, +-3.539047225566742136e-06, +-3.550266647777696048e-06, +-3.561478969904992829e-06, +-3.572684174527266668e-06, +-3.583882244234749750e-06, +-3.595073161631355114e-06, +-3.606256909336742141e-06, +-3.617433469981228851e-06, +-3.628602826210428562e-06, +-3.639764960684745056e-06, +-3.650919856076877648e-06, +-3.662067495073353888e-06, +-3.673207860376595898e-06, +-3.684340934699881800e-06, +-3.695466700771896397e-06, +-3.706585141336319516e-06, +-3.717696239149258230e-06, +-3.728799976981325472e-06, +-3.739896337617140713e-06, +-3.750985303854898821e-06, +-3.762066858508347884e-06, +-3.773140984403862284e-06, +-3.784207664382407819e-06, +-3.795266881299134700e-06, +-3.806318618023345786e-06, +-3.817362857438082389e-06, +-3.828399582442085999e-06, +-3.839428775946881105e-06, +-3.850450420878767837e-06, +-3.861464500178345938e-06, +-3.872470996800076842e-06, +-3.883469893714265735e-06, +-3.894461173904109647e-06, +-3.905444820367720161e-06, +-3.916420816117660091e-06, +-3.927389144180936703e-06, +-3.938349787598602763e-06, +-3.949302729427654739e-06, +-3.960247952738207099e-06, +-3.971185440615382885e-06, +-3.982115176158946953e-06, +-3.993037142483268701e-06, +-4.003951322716853659e-06, +-4.014857700004422956e-06, +-4.025756257503853836e-06, +-4.036646978388265055e-06, +-4.047529845845536611e-06, +-4.058404843077809998e-06, +-4.069271953303545644e-06, +-4.080131159754503244e-06, +-4.090982445677832231e-06, +-4.101825794335550858e-06, +-4.112661189004573297e-06, +-4.123488612976247163e-06, +-4.134308049558365215e-06, +-4.145119482072234622e-06, +-4.155922893854637847e-06, +-4.166718268257389643e-06, +-4.177505588647405672e-06, +-4.188284838406134981e-06, +-4.199056000932143463e-06, +-4.209819059635664042e-06, +-4.220573997945533873e-06, +-4.231320799303826695e-06, +-4.242059447167805242e-06, +-4.252789925011450985e-06, +-4.263512216323028910e-06, +-4.274226304604586077e-06, +-4.284932173376475622e-06, +-4.295629806172362651e-06, +-4.306319186541320647e-06, +-4.317000298049743221e-06, +-4.327673124276022206e-06, +-4.338337648817400155e-06, +-4.348993855284609465e-06, +-4.359641727303910345e-06, +-4.370281248518481635e-06, +-4.380912402586108415e-06, +-4.391535173178643287e-06, +-4.402149543986447369e-06, +-4.412755498713576610e-06, +-4.423353021079698621e-06, +-4.433942094822049323e-06, +-4.444522703690692954e-06, +-4.455094831452819062e-06, +-4.465658461892338472e-06, +-4.476213578807444679e-06, +-4.486760166012134273e-06, +-4.497298207338139018e-06, +-4.507827686629629358e-06, +-4.518348587750026254e-06, +-4.528860894576676737e-06, +-4.539364591002851208e-06, +-4.549859660939658584e-06, +-4.560346088311301218e-06, +-4.570823857059381210e-06, +-4.581292951142457417e-06, +-4.591753354533684765e-06, +-4.602205051222270302e-06, +-4.612648025215384951e-06, +-4.623082260532989832e-06, +-4.633507741214474461e-06, +-4.643924451313503400e-06, +-4.654332374900365077e-06, +-4.664731496061550816e-06, +-4.675121798899748904e-06, +-4.685503267533438018e-06, +-4.695875886098774409e-06, +-4.706239638746822959e-06, +-4.716594509645363894e-06, +-4.726940482978571766e-06, +-4.737277542946981568e-06, +-4.747605673767002535e-06, +-4.757924859672917147e-06, +-4.768235084913991049e-06, +-4.778536333756428849e-06, +-4.788828590482926890e-06, +-4.799111839392194669e-06, +-4.809386064800935208e-06, +-4.819651251040894830e-06, +-4.829907382460964655e-06, +-4.840154443426585979e-06, +-4.850392418319815495e-06, +-4.860621291538912790e-06, +-4.870841047500215676e-06, +-4.881051670635307710e-06, +-4.891253145393011265e-06, +-4.901445456238854742e-06, +-4.911628587655130174e-06, +-4.921802524140490033e-06, +-4.931967250211734475e-06, +-4.942122750401127933e-06, +-4.952269009258276147e-06, +-4.962406011349628956e-06, +-4.972533741258118610e-06, +-4.982652183584942778e-06, +-4.992761322946894703e-06, +-5.002861143978185163e-06, +-5.012951631330031663e-06, +-5.023032769670664369e-06, +-5.033104543684903429e-06, +-5.043166938075991115e-06, +-5.053219937562902486e-06, +-5.063263526882169902e-06, +-5.073297690787456962e-06, +-5.083322414049586462e-06, +-5.093337681456100777e-06, +-5.103343477813576810e-06, +-5.113339787942616633e-06, +-5.123326596684274778e-06, +-5.133303888895002292e-06, +-5.143271649448619483e-06, +-5.153229863237565287e-06, +-5.163178515170722092e-06, +-5.173117590172992221e-06, +-5.183047073189361994e-06, +-5.192966949180414996e-06, +-5.202877203124147268e-06, +-5.212777820017848568e-06, +-5.222668784873081159e-06, +-5.232550082722073214e-06, +-5.242421698612792471e-06, +-5.252283617610709759e-06, +-5.262135824800234715e-06, +-5.271978305282438963e-06, +-5.281811044174659697e-06, +-5.291634026614576458e-06, +-5.301447237755682043e-06, +-5.311250662769180709e-06, +-5.321044286845752541e-06, +-5.330828095191109071e-06, +-5.340602073030024307e-06, +-5.350366205605958652e-06, +-5.360120478178799864e-06, +-5.369864876026207301e-06, +-5.379599384445512661e-06, +-5.389323988748745356e-06, +-5.399038674268930206e-06, +-5.408743426355183962e-06, +-5.418438230374540662e-06, +-5.428123071713785460e-06, +-5.437797935774949254e-06, +-5.447462807979385460e-06, +-5.457117673767355808e-06, +-5.466762518595795874e-06, +-5.476397327940160760e-06, +-5.486022087293897397e-06, +-5.495636782168188737e-06, +-5.505241398093561424e-06, +-5.514835920617442951e-06, +-5.524420335305745611e-06, +-5.533994627742667444e-06, +-5.543558783530514360e-06, +-5.553112788289424006e-06, +-5.562656627659025107e-06, +-5.572190287295959040e-06, +-5.581713752875551887e-06, +-5.591227010091400228e-06, +-5.600730044655476174e-06, +-5.610222842297647952e-06, +-5.619705388767404458e-06, +-5.629177669831392087e-06, +-5.638639671275021556e-06, +-5.648091378902181605e-06, +-5.657532778534766353e-06, +-5.666963856014410871e-06, +-5.676384597199982266e-06, +-5.685794987969274597e-06, +-5.695195014218590440e-06, +-5.704584661862815427e-06, +-5.713963916834959153e-06, +-5.723332765087929712e-06, +-5.732691192591951940e-06, +-5.742039185336310606e-06, +-5.751376729328964171e-06, +-5.760703810596532924e-06, +-5.770020415183890712e-06, +-5.779326529155968278e-06, +-5.788622138595076633e-06, +-5.797907229602769684e-06, +-5.807181788299347868e-06, +-5.816445800823519344e-06, +-5.825699253334076270e-06, +-5.834942132007751808e-06, +-5.844174423038930439e-06, +-5.853396112643404555e-06, +-5.862607187054158775e-06, +-5.871807632523100437e-06, +-5.880997435322366564e-06, +-5.890176581741773452e-06, +-5.899345058090550543e-06, +-5.908502850696894891e-06, +-5.917649945907648437e-06, +-5.926786330089958197e-06, +-5.935911989629129879e-06, +-5.945026910928390712e-06, +-5.954131080412493577e-06, +-5.963224484523686819e-06, +-5.972307109723349868e-06, +-5.981378942493277342e-06, +-5.990439969333589420e-06, +-5.999490176762415891e-06, +-6.008529551319504523e-06, +-6.017558079562312000e-06, +-6.026575748067437102e-06, +-6.035582543432461312e-06, +-6.044578452271407867e-06, +-6.053563461220435519e-06, +-6.062537556933457675e-06, +-6.071500726083662825e-06, +-6.080452955364974825e-06, +-6.089394231489776073e-06, +-6.098324541188705068e-06, +-6.107243871214238514e-06, +-6.116152208336710261e-06, +-6.125049539345948624e-06, +-6.133935851052856098e-06, +-6.142811130284970056e-06, +-6.151675363892327610e-06, +-6.160528538742777279e-06, +-6.169370641724206688e-06, +-6.178201659743634547e-06, +-6.187021579729356189e-06, +-6.195830388626424644e-06, +-6.204628073402389292e-06, +-6.213414621042864185e-06, +-6.222190018553090821e-06, +-6.230954252959698281e-06, +-6.239707311306568011e-06, +-6.248449180658542137e-06, +-6.257179848101014345e-06, +-6.265899300737988480e-06, +-6.274607525693629467e-06, +-6.283304510111943977e-06, +-6.291990241156338277e-06, +-6.300664706011308907e-06, +-6.309327891879982897e-06, +-6.317979785985412879e-06, +-6.326620375572157653e-06, +-6.335249647902251155e-06, +-6.343867590258937873e-06, +-6.352474189946196816e-06, +-6.361069434286796721e-06, +-6.369653310623863920e-06, +-6.378225806320611280e-06, +-6.386786908760235719e-06, +-6.395336605345579389e-06, +-6.403874883500852541e-06, +-6.412401730669031444e-06, +-6.420917134313671030e-06, +-6.429421081918435641e-06, +-6.437913560986764450e-06, +-6.446394559043397815e-06, +-6.454864063632103842e-06, +-6.463322062317224219e-06, +-6.471768542683347265e-06, +-6.480203492335283361e-06, +-6.488626898897696495e-06, +-6.497038750016683129e-06, +-6.505439033357470811e-06, +-6.513827736605984340e-06, +-6.522204847468476457e-06, +-6.530570353671138213e-06, +-6.538924242961704942e-06, +-6.547266503107088804e-06, +-6.555597121894993227e-06, +-6.563916087133571560e-06, +-6.572223386651367773e-06, +-6.580519008296989505e-06, +-6.588802939940671690e-06, +-6.597075169472375811e-06, +-6.605335684801380783e-06, +-6.613584473859797296e-06, +-6.621821524598703647e-06, +-6.630046824989794918e-06, +-6.638260363026434984e-06, +-6.646462126721414423e-06, +-6.654652104108561570e-06, +-6.662830283242252932e-06, +-6.670996652197175173e-06, +-6.679151199069777772e-06, +-6.687293911976442589e-06, +-6.695424779053067971e-06, +-6.703543788458553444e-06, +-6.711650928371016863e-06, +-6.719746186989278417e-06, +-6.727829552534083743e-06, +-6.735901013245771196e-06, +-6.743960557385875284e-06, +-6.752008173236742114e-06, +-6.760043849101512453e-06, +-6.768067573303782065e-06, +-6.776079334189547350e-06, +-6.784079120123031159e-06, +-6.792066919491921701e-06, +-6.800042720703372000e-06, +-6.808006512185423758e-06, +-6.815958282388194052e-06, +-6.823898019781979672e-06, +-6.831825712856952187e-06, +-6.839741350126484248e-06, +-6.847644920123503106e-06, +-6.855536411401886528e-06, +-6.863415812538091636e-06, +-6.871283112126990895e-06, +-6.879138298787131342e-06, +-6.886981361156655275e-06, +-6.894812287895195910e-06, +-6.902631067683482667e-06, +-6.910437689223351331e-06, +-6.918232141237468772e-06, +-6.926014412470701743e-06, +-6.933784491688056900e-06, +-6.941542367675703172e-06, +-6.949288029242488793e-06, +-6.957021465216282971e-06, +-6.964742664447300487e-06, +-6.972451615807754419e-06, +-6.980148308190018073e-06, +-6.987832730508109835e-06, +-6.995504871697350123e-06, +-7.003164720714087797e-06, +-7.010812266536999504e-06, +-7.018447498165044939e-06, +-7.026070404618581549e-06, +-7.033680974940789232e-06, +-7.041279198194056902e-06, +-7.048865063463264738e-06, +-7.056438559855433512e-06, +-7.063999676498011891e-06, +-7.071548402540169007e-06, +-7.079084727152636065e-06, +-7.086608639527554718e-06, +-7.094120128878249222e-06, +-7.101619184440640977e-06, +-7.109105795471080970e-06, +-7.116579951247871894e-06, +-7.124041641070822611e-06, +-7.131490854261022834e-06, +-7.138927580162151803e-06, +-7.146351808138491983e-06, +-7.153763527576289406e-06, +-7.161162727883366573e-06, +-7.168549398489279157e-06, +-7.175923528844884015e-06, +-7.183285108423725782e-06, +-7.190634126720020085e-06, +-7.197970573250034207e-06, +-7.205294437551789776e-06, +-7.212605709184633326e-06, +-7.219904377730782969e-06, +-7.227190432793134591e-06, +-7.234463863996744149e-06, +-7.241724660988427033e-06, +-7.248972813436845304e-06, +-7.256208311032110441e-06, +-7.263431143487208893e-06, +-7.270641300536324108e-06, +-7.277838771934455371e-06, +-7.285023547460539963e-06, +-7.292195616914057409e-06, +-7.299354970116376260e-06, +-7.306501596911793399e-06, +-7.313635487165562155e-06, +-7.320756630765217903e-06, +-7.327865017620236714e-06, +-7.334960637661798182e-06, +-7.342043480843999229e-06, +-7.349113537142347223e-06, +-7.356170796553307672e-06, +-7.363215249097439088e-06, +-7.370246884815943870e-06, +-7.377265693772183647e-06, +-7.384271666052502591e-06, +-7.391264791764385971e-06, +-7.398245061037732394e-06, +-7.405212464024575978e-06, +-7.412166990899046546e-06, +-7.419108631857146848e-06, +-7.426037377118250124e-06, +-7.432953216921738225e-06, +-7.439856141531353668e-06, +-7.446746141231777627e-06, +-7.453623206329905561e-06, +-7.460487327155783185e-06, +-7.467338494061114848e-06, +-7.474176697418808676e-06, +-7.481001927626018264e-06, +-7.487814175100894307e-06, +-7.494613430283837361e-06, +-7.501399683638860723e-06, +-7.508172925650039660e-06, +-7.514933146825974435e-06, +-7.521680337696407251e-06, +-7.528414488813358127e-06, +-7.535135590752552991e-06, +-7.541843634110121100e-06, +-7.548538609505587611e-06, +-7.555220507581467000e-06, +-7.561889319001805321e-06, +-7.568545034452983193e-06, +-7.575187644645201495e-06, +-7.581817140309077988e-06, +-7.588433512198801668e-06, +-7.595036751091549155e-06, +-7.601626847786097258e-06, +-7.608203793104012207e-06, +-7.614767577889404015e-06, +-7.621318193008573262e-06, +-7.627855629351296048e-06, +-7.634379877829027434e-06, +-7.640890929375694263e-06, +-7.647388774949079218e-06, +-7.653873405527724061e-06, +-7.660344812113621511e-06, +-7.666802985732108514e-06, +-7.673247917430082394e-06, +-7.679679598277518732e-06, +-7.686098019366975010e-06, +-7.692503171813346662e-06, +-7.698895046755144399e-06, +-7.705273635352654458e-06, +-7.711638928789143078e-06, +-7.717990918270571898e-06, +-7.724329595025670805e-06, +-7.730654950305538130e-06, +-7.736966975384985739e-06, +-7.743265661560592552e-06, +-7.749551000152071650e-06, +-7.755822982501880646e-06, +-7.762081599975275889e-06, +-7.768326843959990596e-06, +-7.774558705867513870e-06, +-7.780777177131220450e-06, +-7.786982249207607382e-06, +-7.793173913576055152e-06, +-7.799352161738480407e-06, +-7.805516985220542126e-06, +-7.811668375569925533e-06, +-7.817806324357443241e-06, +-7.823930823176896335e-06, +-7.830041863644903274e-06, +-7.836139437400777919e-06, +-7.842223536107605263e-06, +-7.848294151450521954e-06, +-7.854351275137986846e-06, +-7.860394898901333765e-06, +-7.866425014494949386e-06, +-7.872441613695849714e-06, +-7.878444688304984519e-06, +-7.884434230145404354e-06, +-7.890410231063432850e-06, +-7.896372682928510861e-06, +-7.902321577632730594e-06, +-7.908256907092187478e-06, +-7.914178663245440256e-06, +-7.920086838053184028e-06, +-7.925981423501014971e-06, +-7.931862411596425061e-06, +-7.937729794370015029e-06, +-7.943583563876353249e-06, +-7.949423712192266428e-06, +-7.955250231418040696e-06, +-7.961063113677053997e-06, +-7.966862351115598209e-06, +-7.972647935903922690e-06, +-7.978419860234943400e-06, +-7.984178116323868512e-06, +-7.989922696410807273e-06, +-7.995653592757961245e-06, +-8.001370797650733915e-06, +-8.007074303398592976e-06, +-8.012764102333604961e-06, +-8.018440186810409830e-06, +-8.024102549208426646e-06, +-8.029751181929270122e-06, +-8.035386077397816190e-06, +-8.041007228063360744e-06, +-8.046614626396534741e-06, +-8.052208264893175147e-06, +-8.057788136071384033e-06, +-8.063354232472517914e-06, +-8.068906546662409172e-06, +-8.074445071228542040e-06, +-8.079969798782632673e-06, +-8.085480721960241202e-06, +-8.090977833419491023e-06, +-8.096461125841883640e-06, +-8.101930591933386257e-06, +-8.107386224421456999e-06, +-8.112828016058868416e-06, +-8.118255959620705601e-06, +-8.123670047905795979e-06, +-8.129070273736301041e-06, +-8.134456629957884053e-06, +-8.139829109439379715e-06, +-8.145187705073869889e-06, +-8.150532409777123372e-06, +-8.155863216488327724e-06, +-8.161180118171298839e-06, +-8.166483107811678952e-06, +-8.171772178419450640e-06, +-8.177047323028579368e-06, +-8.182308534695837811e-06, +-8.187555806501698629e-06, +-8.192789131550222651e-06, +-8.198008502968765808e-06, +-8.203213913908978630e-06, +-8.208405357545269730e-06, +-8.213582827075947598e-06, +-8.218746315722817424e-06, +-8.223895816731340328e-06, +-8.229031323370262371e-06, +-8.234152828932705525e-06, +-8.239260326734671816e-06, +-8.244353810115998780e-06, +-8.249433272440140921e-06, +-8.254498707094210379e-06, +-8.259550107488690621e-06, +-8.264587467058474914e-06, +-8.269610779261392481e-06, +-8.274620037579108052e-06, +-8.279615235517045633e-06, +-8.284596366604012421e-06, +-8.289563424393247429e-06, +-8.294516402460966288e-06, +-8.299455294407306533e-06, +-8.304380093856131092e-06, +-8.309290794455023203e-06, +-8.314187389875078046e-06, +-8.319069873811773489e-06, +-8.323938239983670744e-06, +-8.328792482133327466e-06, +-8.333632594026977575e-06, +-8.338458569454702354e-06, +-8.343270402230078091e-06, +-8.348068086191168791e-06, +-8.352851615199125194e-06, +-8.357620983139131749e-06, +-8.362376183920169450e-06, +-8.367117211474751562e-06, +-8.371844059759953608e-06, +-8.376556722756190259e-06, +-8.381255194467027291e-06, +-8.385939468921209381e-06, +-8.390609540170442573e-06, +-8.395265402290261645e-06, +-8.399907049380706035e-06, +-8.404534475565110285e-06, +-8.409147674990747779e-06, +-8.413746641828888346e-06, +-8.418331370274393375e-06, +-8.422901854546750893e-06, +-8.427458088888823646e-06, +-8.432000067566747459e-06, +-8.436527784871887881e-06, +-8.441041235118636201e-06, +-8.445540412645327640e-06, +-8.450025311815076518e-06, +-8.454495927013651899e-06, +-8.458952252651368166e-06, +-8.463394283162985077e-06, +-8.467822013006504970e-06, +-8.472235436663904604e-06, +-8.476634548642009300e-06, +-8.481019343470095831e-06, +-8.485389815702953602e-06, +-8.489745959918429952e-06, +-8.494087770718419483e-06, +-8.498415242729633168e-06, +-8.502728370601533286e-06, +-8.507027149008222305e-06, +-8.511311572648195547e-06, +-8.515581636243394205e-06, +-8.519837334539767776e-06, +-8.524078662308124478e-06, +-8.528305614341820547e-06, +-8.532518185459751956e-06, +-8.536716370504058958e-06, +-8.540900164341039182e-06, +-8.545069561861142558e-06, +-8.549224557978879832e-06, +-8.553365147632551517e-06, +-8.557491325785211819e-06, +-8.561603087423360814e-06, +-8.565700427557603443e-06, +-8.569783341223411837e-06, +-8.573851823479173762e-06, +-8.577905869407947661e-06, +-8.581945474117367792e-06, +-8.585970632738522756e-06, +-8.589981340426783895e-06, +-8.593977592361740916e-06, +-8.597959383746827503e-06, +-8.601926709810231032e-06, +-8.605879565803725359e-06, +-8.609817947003179037e-06, +-8.613741848709376942e-06, +-8.617651266246127999e-06, +-8.621546194961942307e-06, +-8.625426630229905781e-06, +-8.629292567446663709e-06, +-8.633144002033277950e-06, +-8.636980929434933863e-06, +-8.640803345120991126e-06, +-8.644611244584848213e-06, +-8.648404623344601384e-06, +-8.652183476942018083e-06, +-8.655947800943263688e-06, +-8.659697590938628773e-06, +-8.663432842542510468e-06, +-8.667153551394044347e-06, +-8.670859713156004979e-06, +-8.674551323515576731e-06, +-8.678228378184157251e-06, +-8.681890872897415071e-06, +-8.685538803415010083e-06, +-8.689172165521454126e-06, +-8.692790955024860765e-06, +-8.696395167757846534e-06, +-8.699984799577242946e-06, +-8.703559846363960966e-06, +-8.707120304023653390e-06, +-8.710666168485793276e-06, +-8.714197435704192326e-06, +-8.717714101657044934e-06, +-8.721216162346679155e-06, +-8.724703613799602447e-06, +-8.728176452067126781e-06, +-8.731634673224484338e-06, +-8.735078273370607281e-06, +-8.738507248629869256e-06, +-8.741921595150177869e-06, +-8.745321309103704836e-06, +-8.748706386687524639e-06, +-8.752076824122416825e-06, +-8.755432617653665603e-06, +-8.758773763550848089e-06, +-8.762100258107705553e-06, +-8.765412097642817659e-06, +-8.768709278498702919e-06, +-8.771991797041688244e-06, +-8.775259649663497982e-06, +-8.778512832779432795e-06, +-8.781751342829142157e-06, +-8.784975176277315528e-06, +-8.788184329611790083e-06, +-8.791378799345880057e-06, +-8.794558582016596276e-06, +-8.797723674185489807e-06, +-8.800874072438218273e-06, +-8.804009773385536883e-06, +-8.807130773661294354e-06, +-8.810237069924951983e-06, +-8.813328658859582960e-06, +-8.816405537172695680e-06, +-8.819467701596763986e-06, +-8.822515148887641526e-06, +-8.825547875826083024e-06, +-8.828565879217474918e-06, +-8.831569155891115389e-06, +-8.834557702700749683e-06, +-8.837531516525019037e-06, +-8.840490594265888589e-06, +-8.843434932850802226e-06, +-8.846364529230980051e-06, +-8.849279380382150218e-06, +-8.852179483304413408e-06, +-8.855064835022286872e-06, +-8.857935432584567215e-06, +-8.860791273064814896e-06, +-8.863632353560591901e-06, +-8.866458671193800552e-06, +-8.869270223111417044e-06, +-8.872067006483821090e-06, +-8.874849018506334136e-06, +-8.877616256398926286e-06, +-8.880368717405564088e-06, +-8.883106398794722141e-06, +-8.885829297859310251e-06, +-8.888537411916490471e-06, +-8.891230738308293741e-06, +-8.893909274400703399e-06, +-8.896573017584231163e-06, +-8.899221965273922214e-06, +-8.901856114909101084e-06, +-8.904475463953415704e-06, +-8.907080009895398140e-06, +-8.909669750247559958e-06, +-8.912244682546919083e-06, +-8.914804804354908318e-06, +-8.917350113257426164e-06, +-8.919880606864996066e-06, +-8.922396282812209063e-06, +-8.924897138758301461e-06, +-8.927383172386841440e-06, +-8.929854381405883204e-06, +-8.932310763547753534e-06, +-8.934752316569609138e-06, +-8.937179038252647209e-06, +-8.939590926402595015e-06, +-8.941987978849667550e-06, +-8.944370193448520091e-06, +-8.946737568077973770e-06, +-8.949090100641874458e-06, +-8.951427789067934026e-06, +-8.953750631308580768e-06, +-8.956058625340554516e-06, +-8.958351769164977794e-06, +-8.960630060807760696e-06, +-8.962893498318882606e-06, +-8.965142079772881782e-06, +-8.967375803268677476e-06, +-8.969594666929759673e-06, +-8.971798668903796067e-06, +-8.973987807363348649e-06, +-8.976162080504962302e-06, +-8.978321486549862754e-06, +-8.980466023743617767e-06, +-8.982595690356230309e-06, +-8.984710484682091120e-06, +-8.986810405040334467e-06, +-8.988895449774192704e-06, +-8.990965617251429955e-06, +-8.993020905864279428e-06, +-8.995061314029272322e-06, +-8.997086840187762982e-06, +-8.999097482805181817e-06, +-9.001093240371263999e-06, +-9.003074111400706763e-06, +-9.005040094432207175e-06, +-9.006991188028922916e-06, +-9.008927390778882251e-06, +-9.010848701293810038e-06, +-9.012755118210543967e-06, +-9.014646640190026594e-06, +-9.016523265917666171e-06, +-9.018384994103189269e-06, +-9.020231823481201510e-06, +-9.022063752810035602e-06, +-9.023880780873082876e-06, +-9.025682906477861550e-06, +-9.027470128456216629e-06, +-9.029242445664928071e-06, +-9.030999856984477513e-06, +-9.032742361320161267e-06, +-9.034469957601861626e-06, +-9.036182644783574214e-06, +-9.037880421843718005e-06, +-9.039563287785546978e-06, +-9.041231241636033729e-06, +-9.042884282447231499e-06, +-9.044522409295237408e-06, +-9.046145621280563451e-06, +-9.047753917528505809e-06, +-9.049347297188158900e-06, +-9.050925759433441984e-06, +-9.052489303462663787e-06, +-9.054037928498480151e-06, +-9.055571633787807634e-06, +-9.057090418602362227e-06, +-9.058594282237714061e-06, +-9.060083224014119197e-06, +-9.061557243276375625e-06, +-9.063016339393453966e-06, +-9.064460511758790537e-06, +-9.065889759790197571e-06, +-9.067304082929793758e-06, +-9.068703480644359999e-06, +-9.070087952424775283e-06, +-9.071457497786411403e-06, +-9.072812116269009290e-06, +-9.074151807436731530e-06, +-9.075476570877926886e-06, +-9.076786406205721529e-06, +-9.078081313057200806e-06, +-9.079361291094022488e-06, +-9.080626340002176215e-06, +-9.081876459491914039e-06, +-9.083111649298114646e-06, +-9.084331909179770058e-06, +-9.085537238920332915e-06, +-9.086727638327541984e-06, +-9.087903107233579708e-06, +-9.089063645494860452e-06, +-9.090209252992321876e-06, +-9.091339929631096290e-06, +-9.092455675340732575e-06, +-9.093556490075048801e-06, +-9.094642373812277916e-06, +-9.095713326554893255e-06, +-9.096769348329835549e-06, +-9.097810439188272363e-06, +-9.098836599205703134e-06, +-9.099847828481964245e-06, +-9.100844127141140941e-06, +-9.101825495331873953e-06, +-9.102791933226825864e-06, +-9.103743441023118182e-06, +-9.104680018942146684e-06, +-9.105601667229610218e-06, +-9.106508386155417526e-06, +-9.107400176014053165e-06, +-9.108277037124003217e-06, +-9.109138969828151701e-06, +-9.109985974493678930e-06, +-9.110818051512003911e-06, +-9.111635201298831779e-06, +-9.112437424294301183e-06, +-9.113224720962513333e-06, +-9.113997091792109677e-06, +-9.114754537295899209e-06, +-9.115497058010863548e-06, +-9.116224654498460177e-06, +-9.116937327344246361e-06, +-9.117635077157904556e-06, +-9.118317904573645599e-06, +-9.118985810249771639e-06, +-9.119638794868759144e-06, +-9.120276859137551977e-06, +-9.120900003786975245e-06, +-9.121508229572406157e-06, +-9.122101537273296287e-06, +-9.122679927693217323e-06, +-9.123243401660206651e-06, +-9.123791960026365864e-06, +-9.124325603667840431e-06, +-9.124844333485322836e-06, +-9.125348150403422387e-06, +-9.125837055371014190e-06, +-9.126311049361345877e-06, +-9.126770133371492119e-06, +-9.127214308422954320e-06, +-9.127643575561430230e-06, +-9.128057935856639452e-06, +-9.128457390402545366e-06, +-9.128841940317336493e-06, +-9.129211586743136815e-06, +-9.129566330846464859e-06, +-9.129906173817913523e-06, +-9.130231116872109421e-06, +-9.130541161248004254e-06, +-9.130836308208476715e-06, +-9.131116559040623859e-06, +-9.131381915055764497e-06, +-9.131632377589166450e-06, +-9.131867948000251529e-06, +-9.132088627672705651e-06, +-9.132294418014053630e-06, +-9.132485320456125042e-06, +-9.132661336454749295e-06, +-9.132822467489852189e-06, +-9.132968715065477942e-06, +-9.133100080709643498e-06, +-9.133216565974563837e-06, +-9.133318172436458854e-06, +-9.133404901695626202e-06, +-9.133476755376341343e-06, +-9.133533735127052366e-06, +-9.133575842620122486e-06, +-9.133603079552021477e-06, +-9.133615447643317201e-06, +-9.133612948638482484e-06, +-9.133595584306039109e-06, +-9.133563356438562903e-06, +-9.133516266852578701e-06, +-9.133454317388712816e-06, +-9.133377509911481276e-06, +-9.133285846309447374e-06, +-9.133179328495160684e-06, +-9.133057958405107929e-06, +-9.132921737999816322e-06, +-9.132770669263714654e-06, +-9.132604754205246789e-06, +-9.132423994856754784e-06, +-9.132228393274563583e-06, +-9.132017951538962388e-06, +-9.131792671754111482e-06, +-9.131552556048187923e-06, +-9.131297606573221214e-06, +-9.131027825505159376e-06, +-9.130743215043912991e-06, +-9.130443777413211207e-06, +-9.130129514860827052e-06, +-9.129800429658301296e-06, +-9.129456524101083062e-06, +-9.129097800508502718e-06, +-9.128724261223793905e-06, +-9.128335908614008829e-06, +-9.127932745070106352e-06, +-9.127514773006830024e-06, +-9.127081994862838523e-06, +-9.126634413100642972e-06, +-9.126172030206451091e-06, +-9.125694848690477207e-06, +-9.125202871086591580e-06, +-9.124696099952606709e-06, +-9.124174537870019823e-06, +-9.123638187444244976e-06, +-9.123087051304377569e-06, +-9.122521132103355286e-06, +-9.121940432517893719e-06, +-9.121344955248454183e-06, +-9.120734703019238633e-06, +-9.120109678578252341e-06, +-9.119469884697202258e-06, +-9.118815324171586795e-06, +-9.118145999820616204e-06, +-9.117461914487175306e-06, +-9.116763071037913281e-06, +-9.116049472363194536e-06, +-9.115321121377037720e-06, +-9.114578021017198734e-06, +-9.113820174245135155e-06, +-9.113047584045958800e-06, +-9.112260253428393380e-06, +-9.111458185424952370e-06, +-9.110641383091666270e-06, +-9.109809849508353652e-06, +-9.108963587778361970e-06, +-9.108102601028696308e-06, +-9.107226892410063426e-06, +-9.106336465096671859e-06, +-9.105431322286377610e-06, +-9.104511467200724804e-06, +-9.103576903084691579e-06, +-9.102627633206972996e-06, +-9.101663660859787917e-06, +-9.100684989358872224e-06, +-9.099691622043665169e-06, +-9.098683562277056961e-06, +-9.097660813445429418e-06, +-9.096623378958793190e-06, +-9.095571262250679338e-06, +-9.094504466778041078e-06, +-9.093422996021507891e-06, +-9.092326853485058568e-06, +-9.091216042696232969e-06, +-9.090090567206043931e-06, +-9.088950430588970490e-06, +-9.087795636442995155e-06, +-9.086626188389544610e-06, +-9.085442090073393159e-06, +-9.084243345162930380e-06, +-9.083029957349857895e-06, +-9.081801930349379102e-06, +-9.080559267900009437e-06, +-9.079301973763801692e-06, +-9.078030051726049545e-06, +-9.076743505595545063e-06, +-9.075442339204463506e-06, +-9.074126556408304033e-06, +-9.072796161085969321e-06, +-9.071451157139643598e-06, +-9.070091548494875645e-06, +-9.068717339100592357e-06, +-9.067328532929044523e-06, +-9.065925133975772954e-06, +-9.064507146259635583e-06, +-9.063074573822734619e-06, +-9.061627420730480927e-06, +-9.060165691071639762e-06, +-9.058689388958173223e-06, +-9.057198518525301243e-06, +-9.055693083931564262e-06, +-9.054173089358597923e-06, +-9.052638539011392260e-06, +-9.051089437118127375e-06, +-9.049525787930198852e-06, +-9.047947595722239772e-06, +-9.046354864791919127e-06, +-9.044747599460162046e-06, +-9.043125804071334447e-06, +-9.041489482992534917e-06, +-9.039838640614231683e-06, +-9.038173281350106759e-06, +-9.036493409636756091e-06, +-9.034799029934084279e-06, +-9.033090146725053854e-06, +-9.031366764515666643e-06, +-9.029628887835195857e-06, +-9.027876521235732080e-06, +-9.026109669292581373e-06, +-9.024328336604283914e-06, +-9.022532527792080363e-06, +-9.020722247500475986e-06, +-9.018897500397022121e-06, +-9.017058291172116280e-06, +-9.015204624539291834e-06, +-9.013336505235218008e-06, +-9.011453938019240798e-06, +-9.009556927673899651e-06, +-9.007645479004703859e-06, +-9.005719596839880132e-06, +-9.003779286031058705e-06, +-9.001824551452353453e-06, +-8.999855398001010721e-06, +-8.997871830597267023e-06, +-8.995873854183994981e-06, +-8.993861473727181053e-06, +-8.991834694215805252e-06, +-8.989793520661348175e-06, +-8.987737958098472016e-06, +-8.985668011584617380e-06, +-8.983583686199810158e-06, +-8.981484987047403529e-06, +-8.979371919253090317e-06, +-8.977244487965600951e-06, +-8.975102698356430715e-06, +-8.972946555619936313e-06, +-8.970776064972937764e-06, +-8.968591231655524774e-06, +-8.966392060930052159e-06, +-8.964178558081864901e-06, +-8.961950728419037268e-06, +-8.959708577272101755e-06, +-8.957452109994741964e-06, +-8.955181331963076011e-06, +-8.952896248575786971e-06, +-8.950596865254404090e-06, +-8.948283187443104581e-06, +-8.945955220608679744e-06, +-8.943612970240606114e-06, +-8.941256441850794741e-06, +-8.938885640974007931e-06, +-8.936500573167608521e-06, +-8.934101244011158390e-06, +-8.931687659107358660e-06, +-8.929259824081192505e-06, +-8.926817744580086081e-06, +-8.924361426274160947e-06, +-8.921890874856095149e-06, +-8.919406096040979223e-06, +-8.916907095566514404e-06, +-8.914393879192888958e-06, +-8.911866452702541013e-06, +-8.909324821900675245e-06, +-8.906768992614834288e-06, +-8.904198970694983427e-06, +-8.901614762013690179e-06, +-8.899016372465597431e-06, +-8.896403807968048552e-06, +-8.893777074460697762e-06, +-8.891136177905579582e-06, +-8.888481124287120699e-06, +-8.885811919612131491e-06, +-8.883128569909604436e-06, +-8.880431081231030899e-06, +-8.877719459650213095e-06, +-8.874993711263238675e-06, +-8.872253842188517996e-06, +-8.869499858566577447e-06, +-8.866731766560421974e-06, +-8.863949572355223378e-06, +-8.861153282158462614e-06, +-8.858342902199758687e-06, +-8.855518438731132933e-06, +-8.852679898026475383e-06, +-8.849827286382047902e-06, +-8.846960610116645125e-06, +-8.844079875570600043e-06, +-8.841185089106815684e-06, +-8.838276257110339908e-06, +-8.835353385988048612e-06, +-8.832416482169177670e-06, +-8.829465552105062045e-06, +-8.826500602269047699e-06, +-8.823521639156708431e-06, +-8.820528669285383400e-06, +-8.817521699194595558e-06, +-8.814500735446302370e-06, +-8.811465784623798064e-06, +-8.808416853332855424e-06, +-8.805353948201202332e-06, +-8.802277075878255793e-06, +-8.799186243035680982e-06, +-8.796081456367104941e-06, +-8.792962722587979366e-06, +-8.789830048435712739e-06, +-8.786683440669800773e-06, +-8.783522906071113213e-06, +-8.780348451443259247e-06, +-8.777160083610864648e-06, +-8.773957809420974453e-06, +-8.770741635742395674e-06, +-8.767511569465439791e-06, +-8.764267617502493661e-06, +-8.761009786788087272e-06, +-8.757738084277826490e-06, +-8.754452516949573815e-06, +-8.751153091802975744e-06, +-8.747839815858932520e-06, +-8.744512696160946618e-06, +-8.741171739773357521e-06, +-8.737816953782734245e-06, +-8.734448345297184159e-06, +-8.731065921446530865e-06, +-8.727669689382224407e-06, +-8.724259656277536095e-06, +-8.720835829326985906e-06, +-8.717398215747062463e-06, +-8.713946822775896082e-06, +-8.710481657672682786e-06, +-8.707002727718995519e-06, +-8.703510040217533915e-06, +-8.700003602492358091e-06, +-8.696483421889401937e-06, +-8.692949505776008951e-06, +-8.689401861541049126e-06, +-8.685840496594976549e-06, +-8.682265418369355061e-06, +-8.678676634317598565e-06, +-8.675074151914571226e-06, +-8.671457978656035208e-06, +-8.667828122060002534e-06, +-8.664184589665474705e-06, +-8.660527389032532484e-06, +-8.656856527743069424e-06, +-8.653172013400220973e-06, +-8.649473853628408517e-06, +-8.645762056073473209e-06, +-8.642036628402667502e-06, +-8.638297578304070695e-06, +-8.634544913487518977e-06, +-8.630778641684020970e-06, +-8.626998770645759426e-06, +-8.623205308146336868e-06, +-8.619398261980121677e-06, +-8.615577639963193382e-06, +-8.611743449932595580e-06, +-8.607895699746632393e-06, +-8.604034397284687205e-06, +-8.600159550447502183e-06, +-8.596271167156490487e-06, +-8.592369255354561278e-06, +-8.588453823005731777e-06, +-8.584524878094947699e-06, +-8.580582428628476268e-06, +-8.576626482633128648e-06, +-8.572657048157217085e-06, +-8.568674133269977235e-06, +-8.564677746061580019e-06, +-8.560667894643246822e-06, +-8.556644587147305394e-06, +-8.552607831726578296e-06, +-8.548557636555133369e-06, +-8.544494009828461611e-06, +-8.540416959762035527e-06, +-8.536326494592782967e-06, +-8.532222622578597540e-06, +-8.528105351997757551e-06, +-8.523974691149810301e-06, +-8.519830648355007966e-06, +-8.515673231954421095e-06, +-8.511502450310092776e-06, +-8.507318311804374557e-06, +-8.503120824840619321e-06, +-8.498909997843567533e-06, +-8.494685839257637929e-06, +-8.490448357548616495e-06, +-8.486197561203002565e-06, +-8.481933458727527697e-06, +-8.477656058650024737e-06, +-8.473365369518858609e-06, +-8.469061399903051677e-06, +-8.464744158392175323e-06, +-8.460413653596693845e-06, +-8.456069894146865006e-06, +-8.451712888694757668e-06, +-8.447342645911847911e-06, +-8.442959174490738511e-06, +-8.438562483144606676e-06, +-8.434152580606682270e-06, +-8.429729475630942382e-06, +-8.425293176992370520e-06, +-8.420843693485423478e-06, +-8.416381033925589877e-06, +-8.411905207148922606e-06, +-8.407416222011002051e-06, +-8.402914087389199368e-06, +-8.398398812179964281e-06, +-8.393870405300742768e-06, +-8.389328875689411243e-06, +-8.384774232303387169e-06, +-8.380206484121529800e-06, +-8.375625640142393601e-06, +-8.371031709384470500e-06, +-8.366424700887047081e-06, +-8.361804623709638771e-06, +-8.357171486931227507e-06, +-8.352525299652167561e-06, +-8.347866070992355952e-06, +-8.343193810091562783e-06, +-8.338508526110176633e-06, +-8.333810228228667540e-06, +-8.329098925647507377e-06, +-8.324374627587498502e-06, +-8.319637343288899619e-06, +-8.314887082012708188e-06, +-8.310123853039870989e-06, +-8.305347665670650539e-06, +-8.300558529226456382e-06, +-8.295756453048105280e-06, +-8.290941446496016032e-06, +-8.286113518951141208e-06, +-8.281272679814198048e-06, +-8.276418938505754853e-06, +-8.271552304466593520e-06, +-8.266672787156679547e-06, +-8.261780396056525759e-06, +-8.256875140666253792e-06, +-8.251957030505841428e-06, +-8.247026075115029424e-06, +-8.242082284053626440e-06, +-8.237125666900594245e-06, +-8.232156233255233564e-06, +-8.227173992736431911e-06, +-8.222178954982756763e-06, +-8.217171129652516549e-06, +-8.212150526423874148e-06, +-8.207117154994130303e-06, +-8.202071025080756998e-06, +-8.197012146420696118e-06, +-8.191940528770523772e-06, +-8.186856181906624778e-06, +-8.181759115624294816e-06, +-8.176649339739090592e-06, +-8.171526864085787989e-06, +-8.166391698518825915e-06, +-8.161243852912030165e-06, +-8.156083337158999674e-06, +-8.150910161172171387e-06, +-8.145724334884012888e-06, +-8.140525868246263451e-06, +-8.135314771230040771e-06, +-8.130091053825918890e-06, +-8.124854726043962078e-06, +-8.119605797913040431e-06, +-8.114344279481985222e-06, +-8.109070180818714766e-06, +-8.103783512010456341e-06, +-8.098484283163954556e-06, +-8.093172504404543008e-06, +-8.087848185877253890e-06, +-8.082511337747009424e-06, +-8.077161970196573734e-06, +-8.071800093428877103e-06, +-8.066425717665940244e-06, +-8.061038853148272905e-06, +-8.055639510136251144e-06, +-8.050227698909053457e-06, +-8.044803429765033472e-06, +-8.039366713021743664e-06, +-8.033917559015274674e-06, +-8.028455978101044739e-06, +-8.022981980654294361e-06, +-8.017495577067789155e-06, +-8.011996777754294875e-06, +-8.006485593145454255e-06, +-8.000962033691200856e-06, +-7.995426109860816167e-06, +-7.989877832143244698e-06, +-7.984317211044906945e-06, +-7.978744257091944023e-06, +-7.973158980829412988e-06, +-7.967561392820278867e-06, +-7.961951503647859193e-06, +-7.956329323912667963e-06, +-7.950694864234973677e-06, +-7.945048135253747322e-06, +-7.939389147625715388e-06, +-7.933717912027799326e-06, +-7.928034439154820089e-06, +-7.922338739719850492e-06, +-7.916630824455265540e-06, +-7.910910704112185076e-06, +-7.905178389459296406e-06, +-7.899433891285507207e-06, +-7.893677220396738659e-06, +-7.887908387618320857e-06, +-7.882127403793934015e-06, +-7.876334279785728750e-06, +-7.870529026474383676e-06, +-7.864711654759249401e-06, +-7.858882175557459145e-06, +-7.853040599805238248e-06, +-7.847186938457257041e-06, +-7.841321202485604239e-06, +-7.835443402882175579e-06, +-7.829553550656520654e-06, +-7.823651656836020797e-06, +-7.817737732467095255e-06, +-7.811811788614196603e-06, +-7.805873836360061472e-06, +-7.799923886805922303e-06, +-7.793961951070514627e-06, +-7.787988040291471279e-06, +-7.782002165624419461e-06, +-7.776004338243146764e-06, +-7.769994569339575753e-06, +-7.763972870124028242e-06, +-7.757939251824120765e-06, +-7.751893725686385795e-06, +-7.745836302975114699e-06, +-7.739766994972667748e-06, +-7.733685812979462264e-06, +-7.727592768314096283e-06, +-7.721487872312457479e-06, +-7.715371136329147870e-06, +-7.709242571736406394e-06, +-7.703102189924461278e-06, +-7.696950002301653697e-06, +-7.690786020293468775e-06, +-7.684610255343989093e-06, +-7.678422718914913820e-06, +-7.672223422485712879e-06, +-7.666012377553703175e-06, +-7.659789595634216311e-06, +-7.653555088259524549e-06, +-7.647308866980478972e-06, +-7.641050943365350741e-06, +-7.634781329000136030e-06, +-7.628500035488412027e-06, +-7.622207074451773161e-06, +-7.615902457528592733e-06, +-7.609586196375692425e-06, +-7.603258302667133577e-06, +-7.596918788094640711e-06, +-7.590567664367699779e-06, +-7.584204943212525637e-06, +-7.577830636373366470e-06, +-7.571444755612761294e-06, +-7.565047312709090335e-06, +-7.558638319459274521e-06, +-7.552217787677584560e-06, +-7.545785729194991258e-06, +-7.539342155860574139e-06, +-7.532887079540505854e-06, +-7.526420512118264782e-06, +-7.519942465494967916e-06, +-7.513452951588157914e-06, +-7.506951982333230346e-06, +-7.500439569683618347e-06, +-7.493915725608343003e-06, +-7.487380462094727238e-06, +-7.480833791147301451e-06, +-7.474275724786596495e-06, +-7.467706275051976997e-06, +-7.461125453999092644e-06, +-7.454533273700117038e-06, +-7.447929746245169022e-06, +-7.441314883741365698e-06, +-7.434688698311751773e-06, +-7.428051202098401397e-06, +-7.421402407258314290e-06, +-7.414742325966635307e-06, +-7.408070970415433873e-06, +-7.401388352812591821e-06, +-7.394694485384552019e-06, +-7.387989380373810301e-06, +-7.381273050039174664e-06, +-7.374545506657058684e-06, +-7.367806762520754761e-06, +-7.361056829939175432e-06, +-7.354295721240011106e-06, +-7.347523448765682943e-06, +-7.340740024876504824e-06, +-7.333945461949175640e-06, +-7.327139772377063040e-06, +-7.320322968570224611e-06, +-7.313495062955620483e-06, +-7.306656067975945269e-06, +-7.299805996091402602e-06, +-7.292944859778685302e-06, +-7.286072671529935227e-06, +-7.279189443855501205e-06, +-7.272295189281419115e-06, +-7.265389920349576213e-06, +-7.258473649619192586e-06, +-7.251546389665676818e-06, +-7.244608153080797086e-06, +-7.237658952472993716e-06, +-7.230698800466228914e-06, +-7.223727709701680830e-06, +-7.216745692836816905e-06, +-7.209752762544274093e-06, +-7.202748931514687950e-06, +-7.195734212454076999e-06, +-7.188708618084111236e-06, +-7.181672161143562254e-06, +-7.174624854387014903e-06, +-7.167566710585311137e-06, +-7.160497742525388230e-06, +-7.153417963010564225e-06, +-7.146327384859435099e-06, +-7.139226020907499373e-06, +-7.132113884006038330e-06, +-7.124990987022307450e-06, +-7.117857342839941288e-06, +-7.110712964357580434e-06, +-7.103557864490743457e-06, +-7.096392056170600402e-06, +-7.089215552344239603e-06, +-7.082028365974590603e-06, +-7.074830510040806170e-06, +-7.067621997536887557e-06, +-7.060402841473656398e-06, +-7.053173054877359646e-06, +-7.045932650790049038e-06, +-7.038681642269834364e-06, +-7.031420042389608680e-06, +-7.024147864238890604e-06, +-7.016865120922569862e-06, +-7.009571825561214758e-06, +-7.002267991290993403e-06, +-6.994953631264019304e-06, +-6.987628758647046931e-06, +-6.980293386623022636e-06, +-6.972947528391348928e-06, +-6.965591197165075710e-06, +-6.958224406174030067e-06, +-6.950847168663437297e-06, +-6.943459497893109449e-06, +-6.936061407139174972e-06, +-6.928652909692838651e-06, +-6.921234018860700944e-06, +-6.913804747965031570e-06, +-6.906365110342488797e-06, +-6.898915119345596670e-06, +-6.891454788343206636e-06, +-6.883984130717463480e-06, +-6.876503159867051153e-06, +-6.869011889205823117e-06, +-6.861510332161604645e-06, +-6.853998502179530972e-06, +-6.846476412717724892e-06, +-6.838944077250640840e-06, +-6.831401509267523294e-06, +-6.823848722273046283e-06, +-6.816285729785571890e-06, +-6.808712545340788255e-06, +-6.801129182487105955e-06, +-6.793535654789178269e-06, +-6.785931975826631478e-06, +-6.778318159192717236e-06, +-6.770694218497506729e-06, +-6.763060167365015000e-06, +-6.755416019433454210e-06, +-6.747761788356799805e-06, +-6.740097487803856236e-06, +-6.732423131456909330e-06, +-6.724738733015298228e-06, +-6.717044306190747389e-06, +-6.709339864711088448e-06, +-6.701625422318749959e-06, +-6.693900992769567316e-06, +-6.686166589835940485e-06, +-6.678422227303919373e-06, +-6.670667918973460470e-06, +-6.662903678660112450e-06, +-6.655129520193936203e-06, +-6.647345457418173298e-06, +-6.639551504192539247e-06, +-6.631747674390250421e-06, +-6.623933981898274772e-06, +-6.616110440619028437e-06, +-6.608277064468927314e-06, +-6.600433867378772463e-06, +-6.592580863294115174e-06, +-6.584718066173731463e-06, +-6.576845489991724407e-06, +-6.568963148736170587e-06, +-6.561071056409339465e-06, +-6.553169227027732353e-06, +-6.545257674622393271e-06, +-6.537336413237542685e-06, +-6.529405456932543465e-06, +-6.521464819780542253e-06, +-6.513514515868756600e-06, +-6.505554559298884083e-06, +-6.497584964185599676e-06, +-6.489605744658640287e-06, +-6.481616914861387684e-06, +-6.473618488951208990e-06, +-6.465610481099423658e-06, +-6.457592905491639740e-06, +-6.449565776326268189e-06, +-6.441529107816708208e-06, +-6.433482914189803954e-06, +-6.425427209686246028e-06, +-6.417362008560545226e-06, +-6.409287325081298499e-06, +-6.401203173529851489e-06, +-6.393109568202287368e-06, +-6.385006523408083438e-06, +-6.376894053470316116e-06, +-6.368772172726130187e-06, +-6.360640895525243796e-06, +-6.352500236231989793e-06, +-6.344350209223971492e-06, +-6.336190828892287986e-06, +-6.328022109641617150e-06, +-6.319844065890465520e-06, +-6.311656712069761372e-06, +-6.303460062624929949e-06, +-6.295254132014489928e-06, +-6.287038934710350733e-06, +-6.278814485197804908e-06, +-6.270580797975833046e-06, +-6.262337887555693487e-06, +-6.254085768462970436e-06, +-6.245824455236222951e-06, +-6.237553962427229732e-06, +-6.229274304601367746e-06, +-6.220985496336089262e-06, +-6.212687552222815816e-06, +-6.204380486867099148e-06, +-6.196064314885550707e-06, +-6.187739050909249265e-06, +-6.179404709582350934e-06, +-6.171061305560692414e-06, +-6.162708853515545883e-06, +-6.154347368128723151e-06, +-6.145976864096432200e-06, +-6.137597356127456064e-06, +-6.129208858943852476e-06, +-6.120811387279153078e-06, +-6.112404955882273325e-06, +-6.103989579512423508e-06, +-6.095565272943117767e-06, +-6.087132050960600297e-06, +-6.078689928362495183e-06, +-6.070238919961280078e-06, +-6.061779040581108985e-06, +-6.053310305058062130e-06, +-6.044832728242015366e-06, +-6.036346324995412821e-06, +-6.027851110191927737e-06, +-6.019347098720316473e-06, +-6.010834305479365105e-06, +-6.002312745381852693e-06, +-5.993782433353027469e-06, +-5.985243384329224480e-06, +-5.976695613261376538e-06, +-5.968139135111790412e-06, +-5.959573964854400096e-06, +-5.951000117476637052e-06, +-5.942417607978290104e-06, +-5.933826451370015511e-06, +-5.925226662676931772e-06, +-5.916618256935394124e-06, +-5.908001249193216468e-06, +-5.899375654511542461e-06, +-5.890741487963380996e-06, +-5.882098764633868787e-06, +-5.873447499620710821e-06, +-5.864787708032538810e-06, +-5.856119404991288812e-06, +-5.847442605630489380e-06, +-5.838757325095799424e-06, +-5.830063578544821866e-06, +-5.821361381147566119e-06, +-5.812650748084870067e-06, +-5.803931694550604889e-06, +-5.795204235750212233e-06, +-5.786468386901001527e-06, +-5.777724163232515895e-06, +-5.768971579984985477e-06, +-5.760210652411606791e-06, +-5.751441395776926599e-06, +-5.742663825357300995e-06, +-5.733877956440794609e-06, +-5.725083804327522811e-06, +-5.716281384328166010e-06, +-5.707470711766151616e-06, +-5.698651801976197987e-06, +-5.689824670304603269e-06, +-5.680989332109195421e-06, +-5.672145802759726929e-06, +-5.663294097636421305e-06, +-5.654434232132000028e-06, +-5.645566221650334921e-06, +-5.636690081606714116e-06, +-5.627805827428239314e-06, +-5.618913474552202023e-06, +-5.610013038428435765e-06, +-5.601104534517716884e-06, +-5.592187978292118602e-06, +-5.583263385234980524e-06, +-5.574330770841255926e-06, +-5.565390150616035372e-06, +-5.556441540076686325e-06, +-5.547484954751393702e-06, +-5.538520410179503776e-06, +-5.529547921911432692e-06, +-5.520567505509120478e-06, +-5.511579176543976146e-06, +-5.502582950601169601e-06, +-5.493578843274211485e-06, +-5.484566870169079070e-06, +-5.475547046902737338e-06, +-5.466519389101928574e-06, +-5.457483912405034988e-06, +-5.448440632462527647e-06, +-5.439389564933356415e-06, +-5.430330725488869179e-06, +-5.421264129811195707e-06, +-5.412189793591655229e-06, +-5.403107732535093243e-06, +-5.394017962354306346e-06, +-5.384920498774343465e-06, +-5.375815357530882946e-06, +-5.366702554369111078e-06, +-5.357582105045584720e-06, +-5.348454025328595528e-06, +-5.339318330994658150e-06, +-5.330175037832401503e-06, +-5.321024161640911970e-06, +-5.311865718228190110e-06, +-5.302699723415056326e-06, +-5.293526193031541655e-06, +-5.284345142917297739e-06, +-5.275156588923491627e-06, +-5.265960546911688548e-06, +-5.256757032752140054e-06, +-5.247546062328134380e-06, +-5.238327651530476332e-06, +-5.229101816261769036e-06, +-5.219868572434812204e-06, +-5.210627935970990223e-06, +-5.201379922804226960e-06, +-5.192124548877373160e-06, +-5.182861830142581682e-06, +-5.173591782563223493e-06, +-5.164314422112762802e-06, +-5.155029764773045210e-06, +-5.145737826538699740e-06, +-5.136438623411504371e-06, +-5.127132171404793155e-06, +-5.117818486541367428e-06, +-5.108497584853943050e-06, +-5.099169482385036898e-06, +-5.089834195187417488e-06, +-5.080491739322422769e-06, +-5.071142130862345367e-06, +-5.061785385888888444e-06, +-5.052421520493377457e-06, +-5.043050550776853330e-06, +-5.033672492850426514e-06, +-5.024287362833598170e-06, +-5.014895176856714022e-06, +-5.005495951059249112e-06, +-4.996089701590255888e-06, +-4.986676444608697927e-06, +-4.977256196281805003e-06, +-4.967828972787515925e-06, +-4.958394790312742124e-06, +-4.948953665053869094e-06, +-4.939505613216605620e-06, +-4.930050651016452189e-06, +-4.920588794677013699e-06, +-4.911120060432395714e-06, +-4.901644464525575623e-06, +-4.892162023208777872e-06, +-4.882672752743430769e-06, +-4.873176669400572210e-06, +-4.863673789459162388e-06, +-4.854164129208500383e-06, +-4.844647704946632584e-06, +-4.835124532980644913e-06, +-4.825594629627088889e-06, +-4.816058011210279931e-06, +-4.806514694064815595e-06, +-4.796964694533798492e-06, +-4.787408028969287759e-06, +-4.777844713732247393e-06, +-4.768274765192967222e-06, +-4.758698199729303620e-06, +-4.749115033729192651e-06, +-4.739525283589001749e-06, +-4.729928965713799913e-06, +-4.720326096517837135e-06, +-4.710716692422879977e-06, +-4.701100769860178382e-06, +-4.691478345270859542e-06, +-4.681849435102233145e-06, +-4.672214055811853742e-06, +-4.662572223865882585e-06, +-4.652923955737736611e-06, +-4.643269267910180611e-06, +-4.633608176875806656e-06, +-4.623940699133080985e-06, +-4.614266851190602051e-06, +-4.604586649565414068e-06, +-4.594900110781199448e-06, +-4.585207251372978989e-06, +-4.575508087881153840e-06, +-4.565802636856092185e-06, +-4.556090914856436028e-06, +-4.546372938447810314e-06, +-4.536648724204874439e-06, +-4.526918288711773721e-06, +-4.517181648558248978e-06, +-4.507438820343866612e-06, +-4.497689820676312681e-06, +-4.487934666169624295e-06, +-4.478173373448872865e-06, +-4.468405959144163717e-06, +-4.458632439895303246e-06, +-4.448852832349607641e-06, +-4.439067153162774481e-06, +-4.429275418996702474e-06, +-4.419477646524148444e-06, +-4.409673852422713397e-06, +-4.399864053379566420e-06, +-4.390048266089609167e-06, +-4.380226507253854633e-06, +-4.370398793583585241e-06, +-4.360565141796503924e-06, +-4.350725568617179664e-06, +-4.340880090779060041e-06, +-4.331028725022839851e-06, +-4.321171488096755024e-06, +-4.311308396757079831e-06, +-4.301439467766318471e-06, +-4.291564717895792757e-06, +-4.281684163923841322e-06, +-4.271797822636293112e-06, +-4.261905710826399622e-06, +-4.252007845295214368e-06, +-4.242104242849882727e-06, +-4.232194920306180494e-06, +-4.222279894486774925e-06, +-4.212359182221595736e-06, +-4.202432800347850349e-06, +-4.192500765710406754e-06, +-4.182563095160004573e-06, +-4.172619805555886791e-06, +-4.162670913763984564e-06, +-4.152716436657350904e-06, +-4.142756391116557085e-06, +-4.132790794027924889e-06, +-4.122819662286127842e-06, +-4.112843012792376024e-06, +-4.102860862454870924e-06, +-4.092873228188741067e-06, +-4.082880126916504495e-06, +-4.072881575566185808e-06, +-4.062877591074062250e-06, +-4.052868190382746024e-06, +-4.042853390441667949e-06, +-4.032833208207041883e-06, +-4.022807660642245887e-06, +-4.012776764716078190e-06, +-4.002740537405326233e-06, +-3.992698995692981125e-06, +-3.982652156568710292e-06, +-3.972600037029195438e-06, +-3.962542654076380882e-06, +-3.952480024720053623e-06, +-3.942412165976103531e-06, +-3.932339094866895197e-06, +-3.922260828421266235e-06, +-3.912177383674895748e-06, +-3.902088777668593314e-06, +-3.891995027450804516e-06, +-3.881896150075941436e-06, +-3.871792162604672340e-06, +-3.861683082104452771e-06, +-3.851568925647620569e-06, +-3.841449710313657449e-06, +-3.831325453189585415e-06, +-3.821196171365917093e-06, +-3.811061881941099267e-06, +-3.800922602019677780e-06, +-3.790778348710990989e-06, +-3.780629139131281841e-06, +-3.770474990404170091e-06, +-3.760315919656642451e-06, +-3.750151944023400832e-06, +-3.739983080645108986e-06, +-3.729809346666554448e-06, +-3.719630759241535908e-06, +-3.709447335526596447e-06, +-3.699259092685880841e-06, +-3.689066047889342394e-06, +-3.678868218311395312e-06, +-3.668665621133036939e-06, +-3.658458273542350895e-06, +-3.648246192730432005e-06, +-3.638029395895807383e-06, +-3.627807900242643689e-06, +-3.617581722978892126e-06, +-3.607350881321257983e-06, +-3.597115392488805958e-06, +-3.586875273707948761e-06, +-3.576630542210093208e-06, +-3.566381215232585933e-06, +-3.556127310016389132e-06, +-3.545868843811021724e-06, +-3.535605833868194753e-06, +-3.525338297446816925e-06, +-3.515066251811048971e-06, +-3.504789714228582906e-06, +-3.494508701975030076e-06, +-3.484223232329913429e-06, +-3.473933322577024956e-06, +-3.463638990006666520e-06, +-3.453340251913882100e-06, +-3.443037125598782624e-06, +-3.432729628367016075e-06, +-3.422417777527943830e-06, +-3.412101590397301609e-06, +-3.401781084295815854e-06, +-3.391456276547387260e-06, +-3.381127184483545749e-06, +-3.370793825439401228e-06, +-3.360456216754007389e-06, +-3.350114375772652934e-06, +-3.339768319844982007e-06, +-3.329418066325447783e-06, +-3.319063632573249786e-06, +-3.308705035952781121e-06, +-3.298342293831799734e-06, +-3.287975423584098679e-06, +-3.277604442587633330e-06, +-3.267229368225019859e-06, +-3.256850217883909205e-06, +-3.246467008955142229e-06, +-3.236079758835455144e-06, +-3.225688484925664320e-06, +-3.215293204631022886e-06, +-3.204893935361264350e-06, +-3.194490694530969792e-06, +-3.184083499557758174e-06, +-3.173672367864973978e-06, +-3.163257316879830085e-06, +-3.152838364033848656e-06, +-3.142415526763292273e-06, +-3.131988822507275900e-06, +-3.121558268710522284e-06, +-3.111123882821455704e-06, +-3.100685682292694101e-06, +-3.090243684580960561e-06, +-3.079797907147539019e-06, +-3.069348367456412478e-06, +-3.058895082976536028e-06, +-3.048438071182229864e-06, +-3.037977349549057624e-06, +-3.027512935558378348e-06, +-3.017044846695466485e-06, +-3.006573100448109206e-06, +-2.996097714309383404e-06, +-2.985618705775687611e-06, +-2.975136092347270971e-06, +-2.964649891528602123e-06, +-2.954160120826536645e-06, +-2.943666797752568044e-06, +-2.933169939823246611e-06, +-2.922669564556064118e-06, +-2.912165689473955793e-06, +-2.901658332103490209e-06, +-2.891147509973406466e-06, +-2.880633240617396261e-06, +-2.870115541572198495e-06, +-2.859594430378047773e-06, +-2.849069924578629511e-06, +-2.838542041721554702e-06, +-2.828010799355958148e-06, +-2.817476215037598451e-06, +-2.806938306322344327e-06, +-2.796397090771236050e-06, +-2.785852585948583444e-06, +-2.775304809420583944e-06, +-2.764753778757579092e-06, +-2.754199511534523376e-06, +-2.743642025326736775e-06, +-2.733081337714554551e-06, +-2.722517466281402367e-06, +-2.711950428611962880e-06, +-2.701380242297205853e-06, +-2.690806924927878699e-06, +-2.680230494099596309e-06, +-2.669650967410934375e-06, +-2.659068362461544747e-06, +-2.648482696856781921e-06, +-2.637893988203486093e-06, +-2.627302254110415984e-06, +-2.616707512190565060e-06, +-2.606109780059699548e-06, +-2.595509075334515716e-06, +-2.584905415637200302e-06, +-2.574298818591288518e-06, +-2.563689301822044372e-06, +-2.553076882958774759e-06, +-2.542461579632944391e-06, +-2.531843409478612867e-06, +-2.521222390132869619e-06, +-2.510598539233934449e-06, +-2.499971874423912495e-06, +-2.489342413347415268e-06, +-2.478710173649611204e-06, +-2.468075172980888576e-06, +-2.457437428992628807e-06, +-2.446796959337636332e-06, +-2.436153781672434063e-06, +-2.425507913655402879e-06, +-2.414859372947165752e-06, +-2.404208177211077339e-06, +-2.393554344111292742e-06, +-2.382897891315541540e-06, +-2.372238836493267710e-06, +-2.361577197316019679e-06, +-2.350912991457454989e-06, +-2.340246236593754915e-06, +-2.329576950401747866e-06, +-2.318905150561661816e-06, +-2.308230854755248554e-06, +-2.297554080666199149e-06, +-2.286874845980140987e-06, +-2.276193168385068490e-06, +-2.265509065569401287e-06, +-2.254822555224833217e-06, +-2.244133655044374404e-06, +-2.233442382722819250e-06, +-2.222748755957192393e-06, +-2.212052792444809004e-06, +-2.201354509886088631e-06, +-2.190653925982647252e-06, +-2.179951058437725460e-06, +-2.169245924956166429e-06, +-2.158538543244868662e-06, +-2.147828931010843739e-06, +-2.137117105964046680e-06, +-2.126403085815439627e-06, +-2.115686888277453055e-06, +-2.104968531063924359e-06, +-2.094248031890582782e-06, +-2.083525408473099547e-06, +-2.072800678529908474e-06, +-2.062073859780269662e-06, +-2.051344969944758232e-06, +-2.040614026745637862e-06, +-2.029881047905004519e-06, +-2.019146051147084035e-06, +-2.008409054198688656e-06, +-1.997670074784938680e-06, +-1.986929130633933419e-06, +-1.976186239474874601e-06, +-1.965441419036590832e-06, +-1.954694687050341706e-06, +-1.943946061247918330e-06, +-1.933195559362057943e-06, +-1.922443199126451549e-06, +-1.911688998276155563e-06, +-1.900932974545207001e-06, +-1.890175145671826796e-06, +-1.879415529391712568e-06, +-1.868654143443254658e-06, +-1.857891005565607218e-06, +-1.847126133497232373e-06, +-1.836359544978242269e-06, +-1.825591257750834871e-06, +-1.814821289555035503e-06, +-1.804049658133343038e-06, +-1.793276381228866002e-06, +-1.782501476583371007e-06, +-1.771724961942472526e-06, +-1.760946855048957845e-06, +-1.750167173647979592e-06, +-1.739385935485149275e-06, +-1.728603158304562635e-06, +-1.717818859853581574e-06, +-1.707033057878474683e-06, +-1.696245770124887352e-06, +-1.685457014340190164e-06, +-1.674666808272027081e-06, +-1.663875169666360495e-06, +-1.653082116272237901e-06, +-1.642287665837450434e-06, +-1.631491836108982008e-06, +-1.620694644835375710e-06, +-1.609896109764789228e-06, +-1.599096248645437849e-06, +-1.588295079226064562e-06, +-1.577492619253969856e-06, +-1.566688886477881474e-06, +-1.555883898646461301e-06, +-1.545077673506388740e-06, +-1.534270228807096687e-06, +-1.523461582296448276e-06, +-1.512651751721177968e-06, +-1.501840754829264938e-06, +-1.491028609367988714e-06, +-1.480215333084364548e-06, +-1.469400943725614158e-06, +-1.458585459037203148e-06, +-1.447768896765695515e-06, +-1.436951274656805258e-06, +-1.426132610455852291e-06, +-1.415312921907730898e-06, +-1.404492226757349761e-06, +-1.393670542747701571e-06, +-1.382847887622703772e-06, +-1.372024279125248046e-06, +-1.361199734997655814e-06, +-1.350374272981644349e-06, +-1.339547910818786082e-06, +-1.328720666248558519e-06, +-1.317892557011188791e-06, +-1.307063600845703571e-06, +-1.296233815490391977e-06, +-1.285403218683242645e-06, +-1.274571828160004866e-06, +-1.263739661657040757e-06, +-1.252906736909369046e-06, +-1.242073071651118436e-06, +-1.231238683615499237e-06, +-1.220403590535260338e-06, +-1.209567810140729383e-06, +-1.198731360162675746e-06, +-1.187894258330351127e-06, +-1.177056522371943565e-06, +-1.166218170014559652e-06, +-1.155379218984662866e-06, +-1.144539687006121805e-06, +-1.133699591803078865e-06, +-1.122858951097978992e-06, +-1.112017782612048672e-06, +-1.101176104065716912e-06, +-1.090333933176688237e-06, +-1.079491287662302099e-06, +-1.068648185239998961e-06, +-1.057804643622949392e-06, +-1.046960680524838109e-06, +-1.036116313657926815e-06, +-1.025271560731552832e-06, +-1.014426439455024893e-06, +-1.003580967535630500e-06, +-9.927351626791134372e-07, +-9.818890425901254509e-07, +-9.710426249702566877e-07, +-9.601959275204342786e-07, +-9.493489679413552796e-07, +-9.385017639291377922e-07, +-9.276543331801069117e-07, +-9.168066933888341636e-07, +-9.059588622466670539e-07, +-8.951108574441071147e-07, +-8.842626966712628548e-07, +-8.734143976134933633e-07, +-8.625659779561836696e-07, +-8.517174553827998501e-07, +-8.408688475729289939e-07, +-8.300201722075518767e-07, +-8.191714469622636272e-07, +-8.083226895125572005e-07, +-7.974739175318514859e-07, +-7.866251486895506482e-07, +-7.757764006558216051e-07, +-7.649276910972429256e-07, +-7.540790376772391453e-07, +-7.432304580584789288e-07, +-7.323819699013911740e-07, +-7.215335908622110126e-07, +-7.106853385982580962e-07, +-6.998372307611475212e-07, +-6.889892850020809262e-07, +-6.781415189693910490e-07, +-6.672939503090048423e-07, +-6.564465966644141447e-07, +-6.455994756771253498e-07, +-6.347526049847079478e-07, +-6.239060022236523089e-07, +-6.130596850279028342e-07, +-6.022136710268936860e-07, +-5.913679778503450060e-07, +-5.805226231238936020e-07, +-5.696776244695511924e-07, +-5.588329995080796986e-07, +-5.479887658570412690e-07, +-5.371449411312443482e-07, +-5.263015429432083798e-07, +-5.154585889011937141e-07, +-5.046160966120753791e-07, +-4.937740836798662784e-07, +-4.829325677037580041e-07, +-4.720915662829149373e-07, +-4.612510970121088521e-07, +-4.504111774821704902e-07, +-4.395718252823728995e-07, +-4.287330579984707121e-07, +-4.178948932131616710e-07, +-4.070573485060519547e-07, +-3.962204414541108755e-07, +-3.853841896297175680e-07, +-3.745486106035203080e-07, +-3.637137219424863779e-07, +-3.528795412103497235e-07, +-3.420460859680652817e-07, +-3.312133737718579451e-07, +-3.203814221760809287e-07, +-3.095502487312619287e-07, +-2.987198709845562859e-07, +-2.878903064797200386e-07, +-2.770615727575617625e-07, +-2.662336873539862419e-07, +-2.554066678028620469e-07, +-2.445805316340598576e-07, +-2.337552963739111598e-07, +-2.229309795456577804e-07, +-2.121075986674999268e-07, +-2.012851712554583643e-07, +-1.904637148214153611e-07, +-1.796432468735741770e-07, +-1.688237849164261884e-07, +-1.580053464512074651e-07, +-1.471879489739412774e-07, +-1.363716099778199790e-07, +-1.255563469536617698e-07, +-1.147421773855398469e-07, +-1.039291187555780009e-07, +-9.311718854199373109e-08, +-8.230640421762297948e-08, +-7.149678325278588091e-08, +-6.068834311332953487e-08, +-4.988110126108260403e-08, +-3.907507515430868865e-08, +-2.827028224575143411e-08, +-1.746673998501533866e-08, +-6.664465819020203153e-09, + 4.136522812364038358e-09, + 1.493620847152642913e-08, + 2.573457372507046124e-08, + 3.653160114576903096e-08, + 4.732727330729323853e-08, + 5.812157279098395506e-08, + 6.891448218058147428e-08, + 7.970598406466206575e-08, + 9.049606103570143429e-08, + 1.012846956925116934e-07, + 1.120718706349718342e-07, + 1.228575684707965511e-07, + 1.336417718102674719e-07, + 1.444244632681875010e-07, + 1.552056254658344082e-07, + 1.659852410261728030e-07, + 1.767632925782169099e-07, + 1.875397627565766385e-07, + 1.983146341990757797e-07, + 2.090878895482276163e-07, + 2.198595114531839988e-07, + 2.306294825644731536e-07, + 2.413977855407611758e-07, + 2.521644030435900493e-07, + 2.629293177398052431e-07, + 2.736925123011109129e-07, + 2.844539694040902832e-07, + 2.952136717297543370e-07, + 3.059716019654961863e-07, + 3.167277428022273589e-07, + 3.274820769358555534e-07, + 3.382345870692273625e-07, + 3.489852559073564597e-07, + 3.597340661617718430e-07, + 3.704810005500644075e-07, + 3.812260417935172651e-07, + 3.919691726190489964e-07, + 4.027103757587635591e-07, + 4.134496339495001957e-07, + 4.241869299347746740e-07, + 4.349222464619361683e-07, + 4.456555662836229384e-07, + 4.563868721597218344e-07, + 4.671161468525837781e-07, + 4.778433731313852946e-07, + 4.885685337716603150e-07, + 4.992916115529397068e-07, + 5.100125892606963266e-07, + 5.207314496858853462e-07, + 5.314481756249816271e-07, + 5.421627498795198885e-07, + 5.528751552580442586e-07, + 5.635853745732577975e-07, + 5.742933906439668614e-07, + 5.849991862946296335e-07, + 5.957027443549051854e-07, + 6.064040476615959351e-07, + 6.171030790557991812e-07, + 6.277998213848546433e-07, + 6.384942575018898173e-07, + 6.491863702658454919e-07, + 6.598761425410298918e-07, + 6.705635571990576423e-07, + 6.812485971160002440e-07, + 6.919312451743380607e-07, + 7.026114842624974157e-07, + 7.132892972744121464e-07, + 7.239646671114493338e-07, + 7.346375766795779887e-07, + 7.453080088913088633e-07, + 7.559759466652392770e-07, + 7.666413729260747153e-07, + 7.773042706041925023e-07, + 7.879646226375677417e-07, + 7.986224119694185653e-07, + 8.092776215477521234e-07, + 8.199302343296892171e-07, + 8.305802332767238787e-07, + 8.412276013566469835e-07, + 8.518723215450156401e-07, + 8.625143768223157358e-07, + 8.731537501758923251e-07, + 8.837904245995041956e-07, + 8.944243830928699651e-07, + 9.050556086636101153e-07, + 9.156840843248789006e-07, + 9.263097930949252663e-07, + 9.369327180013996945e-07, + 9.475528420766265946e-07, + 9.581701483595219869e-07, + 9.687846198975442186e-07, + 9.793962397414681946e-07, + 9.900049909520804315e-07, + 1.000610856594976476e-06, + 1.011213819742960335e-06, + 1.021813863475118673e-06, + 1.032410970879236547e-06, + 1.043005125046578625e-06, + 1.053596309078578839e-06, + 1.064184506081647231e-06, + 1.074769699169078948e-06, + 1.085351871462999881e-06, + 1.095931006089629629e-06, + 1.106507086183589512e-06, + 1.117080094887449831e-06, + 1.127650015349390997e-06, + 1.138216830724648782e-06, + 1.148780524177431580e-06, + 1.159341078875741855e-06, + 1.169898477998037423e-06, + 1.180452704728038504e-06, + 1.191003742256654721e-06, + 1.201551573783908079e-06, + 1.212096182514211178e-06, + 1.222637551660683269e-06, + 1.233175664444667445e-06, + 1.243710504093414856e-06, + 1.254242053841524661e-06, + 1.264770296932860232e-06, + 1.275295216615849176e-06, + 1.285816796147755349e-06, + 1.296335018794265924e-06, + 1.306849867827101282e-06, + 1.317361326525977792e-06, + 1.327869378178137287e-06, + 1.338374006077909997e-06, + 1.348875193528621853e-06, + 1.359372923839806053e-06, + 1.369867180329095764e-06, + 1.380357946321795302e-06, + 1.390845205150886492e-06, + 1.401328940156609598e-06, + 1.411809134688359188e-06, + 1.422285772101882157e-06, + 1.432758835761183758e-06, + 1.443228309038104512e-06, + 1.453694175311857302e-06, + 1.464156417970939550e-06, + 1.474615020410332928e-06, + 1.485069966033424005e-06, + 1.495521238251537741e-06, + 1.505968820483995512e-06, + 1.516412696157636534e-06, + 1.526852848708753758e-06, + 1.537289261580277062e-06, + 1.547721918223689874e-06, + 1.558150802098583634e-06, + 1.568575896672693578e-06, + 1.578997185421436687e-06, + 1.589414651829824282e-06, + 1.599828279389667876e-06, + 1.610238051601500882e-06, + 1.620643951974114012e-06, + 1.631045964024120330e-06, + 1.641444071277837775e-06, + 1.651838257268551985e-06, + 1.662228505538356465e-06, + 1.672614799637751737e-06, + 1.682997123125659735e-06, + 1.693375459568971068e-06, + 1.703749792544460370e-06, + 1.714120105635983475e-06, + 1.724486382436398267e-06, + 1.734848606547102630e-06, + 1.745206761578064727e-06, + 1.755560831147408590e-06, + 1.765910798883260650e-06, + 1.776256648420997307e-06, + 1.786598363405152655e-06, + 1.796935927488951772e-06, + 1.807269324333887410e-06, + 1.817598537611604226e-06, + 1.827923551001585106e-06, + 1.838244348190731462e-06, + 1.848560912877565365e-06, + 1.858873228767599235e-06, + 1.869181279575231715e-06, + 1.879485049025618343e-06, + 1.889784520849597826e-06, + 1.900079678790226684e-06, + 1.910370506597683291e-06, + 1.920656988031607803e-06, + 1.930939106860224417e-06, + 1.941216846862663307e-06, + 1.951490191823894090e-06, + 1.961759125541242474e-06, + 1.972023631819314841e-06, + 1.982283694471887977e-06, + 1.992539297323756021e-06, + 2.002790424206166237e-06, + 2.013037058960982596e-06, + 2.023279185440256337e-06, + 2.033516787503933469e-06, + 2.043749849021286681e-06, + 2.053978353872747472e-06, + 2.064202285944907391e-06, + 2.074421629136962259e-06, + 2.084636367355666396e-06, + 2.094846484517232939e-06, + 2.105051964549168938e-06, + 2.115252791385695875e-06, + 2.125448948971940779e-06, + 2.135640421263496620e-06, + 2.145827192224131929e-06, + 2.156009245827197297e-06, + 2.166186566057498589e-06, + 2.176359136906266838e-06, + 2.186526942377612638e-06, + 2.196689966483491377e-06, + 2.206848193246026226e-06, + 2.217001606697098178e-06, + 2.227150190878332068e-06, + 2.237293929840693385e-06, + 2.247432807646314057e-06, + 2.257566808365817092e-06, + 2.267695916080127959e-06, + 2.277820114880049803e-06, + 2.287939388866333323e-06, + 2.298053722149168977e-06, + 2.308163098850093229e-06, + 2.318267503099269575e-06, + 2.328366919037314744e-06, + 2.338461330814875603e-06, + 2.348550722592209459e-06, + 2.358635078541042019e-06, + 2.368714382841809878e-06, + 2.378788619685559564e-06, + 2.388857773273490990e-06, + 2.398921827816985407e-06, + 2.408980767537163670e-06, + 2.419034576666766237e-06, + 2.429083239447409196e-06, + 2.439126740131453674e-06, + 2.449165062981558178e-06, + 2.459198192270706546e-06, + 2.469226112281797559e-06, + 2.479248807309447853e-06, + 2.489266261657335622e-06, + 2.499278459640009034e-06, + 2.509285385582473303e-06, + 2.519287023819752348e-06, + 2.529283358698728972e-06, + 2.539274374575448334e-06, + 2.549260055816955164e-06, + 2.559240386800881255e-06, + 2.569215351915439537e-06, + 2.579184935559012416e-06, + 2.589149122142003815e-06, + 2.599107896084101136e-06, + 2.609061241816152713e-06, + 2.619009143779724810e-06, + 2.628951586427123645e-06, + 2.638888554220968909e-06, + 2.648820031636459158e-06, + 2.658746003156497981e-06, + 2.668666453277927740e-06, + 2.678581366506666760e-06, + 2.688490727359530439e-06, + 2.698394520365595404e-06, + 2.708292730063951057e-06, + 2.718185341003304014e-06, + 2.728072337746058259e-06, + 2.737953704863803848e-06, + 2.747829426939168101e-06, + 2.757699488567609615e-06, + 2.767563874352559265e-06, + 2.777422568911654357e-06, + 2.787275556871868199e-06, + 2.797122822871338414e-06, + 2.806964351560703985e-06, + 2.816800127600907627e-06, + 2.826630135662771425e-06, + 2.836454360431035484e-06, + 2.846272786599919903e-06, + 2.856085398874945471e-06, + 2.865892181974710742e-06, + 2.875693120626500170e-06, + 2.885488199570280407e-06, + 2.895277403558294158e-06, + 2.905060717352858734e-06, + 2.914838125727718346e-06, + 2.924609613469852094e-06, + 2.934375165374610306e-06, + 2.944134766251950391e-06, + 2.953888400921575720e-06, + 2.963636054214744041e-06, + 2.973377710976050906e-06, + 2.983113356059042888e-06, + 2.992842974330181694e-06, + 3.002566550668487141e-06, + 3.012284069963297181e-06, + 3.021995517115653639e-06, + 3.031700877040068709e-06, + 3.041400134659693896e-06, + 3.051093274912519451e-06, + 3.060780282746576778e-06, + 3.070461143122125896e-06, + 3.080135841011244203e-06, + 3.089804361397878994e-06, + 3.099466689277402344e-06, + 3.109122809658400889e-06, + 3.118772707560058919e-06, + 3.128416368013933333e-06, + 3.138053776063572051e-06, + 3.147684916764497499e-06, + 3.157309775183773352e-06, + 3.166928336401879859e-06, + 3.176540585509978360e-06, + 3.186146507611773478e-06, + 3.195746087823068856e-06, + 3.205339311271353804e-06, + 3.214926163097585455e-06, + 3.224506628453551955e-06, + 3.234080692503729152e-06, + 3.243648340424738079e-06, + 3.253209557405497839e-06, + 3.262764328646719507e-06, + 3.272312639362713691e-06, + 3.281854474778800737e-06, + 3.291389820133045446e-06, + 3.300918660675871256e-06, + 3.310440981670110212e-06, + 3.319956768390504489e-06, + 3.329466006125555468e-06, + 3.338968680174889457e-06, + 3.348464775851017408e-06, + 3.357954278478972385e-06, + 3.367437173395836918e-06, + 3.376913445952537867e-06, + 3.386383081511247301e-06, + 3.395846065447156611e-06, + 3.405302383148043672e-06, + 3.414752020014324939e-06, + 3.424194961458613716e-06, + 3.433631192907481141e-06, + 3.443060699798915933e-06, + 3.452483467584029891e-06, + 3.461899481726669109e-06, + 3.471308727703000197e-06, + 3.480711191003266182e-06, + 3.490106857129640977e-06, + 3.499495711595842278e-06, + 3.508877739930989809e-06, + 3.518252927675375234e-06, + 3.527621260382162575e-06, + 3.536982723618694764e-06, + 3.546337302964431116e-06, + 3.555684984010468329e-06, + 3.565025752363441076e-06, + 3.574359593641297424e-06, + 3.583686493474992904e-06, + 3.593006437510216334e-06, + 3.602319411402747663e-06, + 3.611625400824436323e-06, + 3.620924391458534504e-06, + 3.630216369001409008e-06, + 3.639501319163871936e-06, + 3.648779227669024144e-06, + 3.658050080251946498e-06, + 3.667313862663420889e-06, + 3.676570560665795868e-06, + 3.685820160034665886e-06, + 3.695062646560617879e-06, + 3.704298006044561573e-06, + 3.713526224303698099e-06, + 3.722747287166876143e-06, + 3.731961180476751025e-06, + 3.741167890088906753e-06, + 3.750367401874063814e-06, + 3.759559701713398045e-06, + 3.768744775504491467e-06, + 3.777922609156704938e-06, + 3.787093188592929822e-06, + 3.796256499751204126e-06, + 3.805412528580625990e-06, + 3.814561261045088677e-06, + 3.823702683122901952e-06, + 3.832836780804730402e-06, + 3.841963540095274375e-06, + 3.851082947012862554e-06, + 3.860194987589115263e-06, + 3.869299647870555524e-06, + 3.878396913916161979e-06, + 3.887486771799042626e-06, + 3.896569207606092618e-06, + 3.905644207437969701e-06, + 3.914711757408676622e-06, + 3.923771843647306871e-06, + 3.932824452295524750e-06, + 3.941869569509267069e-06, + 3.950907181458341648e-06, + 3.959937274326460354e-06, + 3.968959834310837605e-06, + 3.977974847623842934e-06, + 3.986982300490591176e-06, + 3.995982179150588259e-06, + 4.004974469857322929e-06, + 4.013959158877903375e-06, + 4.022936232494708097e-06, + 4.031905677002941367e-06, + 4.040867478712326448e-06, + 4.049821623946641422e-06, + 4.058768099043826762e-06, + 4.067706890355555885e-06, + 4.076637984248879244e-06, + 4.085561367103810287e-06, + 4.094477025314975470e-06, + 4.103384945291237336e-06, + 4.112285113455675873e-06, + 4.121177516245290362e-06, + 4.130062140112528274e-06, + 4.138938971522956768e-06, + 4.147807996956862745e-06, + 4.156669202908875915e-06, + 4.165522575887633371e-06, + 4.174368102417318648e-06, + 4.183205769035338313e-06, + 4.192035562293949963e-06, + 4.200857468759821764e-06, + 4.209671475014136641e-06, + 4.218477567652112853e-06, + 4.227275733284736179e-06, + 4.236065958536278954e-06, + 4.244848230045978048e-06, + 4.253622534467667247e-06, + 4.262388858469330871e-06, + 4.271147188734793601e-06, + 4.279897511961669817e-06, + 4.288639814861081532e-06, + 4.297374084161183744e-06, + 4.306100306603213028e-06, + 4.314818468943139253e-06, + 4.323528557952877678e-06, + 4.332230560418235754e-06, + 4.340924463138643761e-06, + 4.349610252930706419e-06, + 4.358287916624225221e-06, + 4.366957441063840831e-06, + 4.375618813110624658e-06, + 4.384272019637762375e-06, + 4.392917047536077425e-06, + 4.401553883709707758e-06, + 4.410182515077755010e-06, + 4.418802928575416986e-06, + 4.427415111152090301e-06, + 4.436019049770939244e-06, + 4.444614731412557504e-06, + 4.453202143070938828e-06, + 4.461781271755129587e-06, + 4.470352104490823736e-06, + 4.478914628316038715e-06, + 4.487468830286636405e-06, + 4.496014697472043073e-06, + 4.504552216957203476e-06, + 4.513081375841839711e-06, + 4.521602161242427335e-06, + 4.530114560287875505e-06, + 4.538618560125072498e-06, + 4.547114147914555680e-06, + 4.555601310832139505e-06, + 4.564080036070451180e-06, + 4.572550310835094460e-06, + 4.581012122348154667e-06, + 4.589465457847795501e-06, + 4.597910304586398958e-06, + 4.606346649832078976e-06, + 4.614774480868366340e-06, + 4.623193784993776697e-06, + 4.631604549523439395e-06, + 4.640006761786764759e-06, + 4.648400409128603677e-06, + 4.656785478910861200e-06, + 4.665161958508619669e-06, + 4.673529835313636962e-06, + 4.681889096733970414e-06, + 4.690239730192089625e-06, + 4.698581723126450247e-06, + 4.706915062991034893e-06, + 4.715239737255498827e-06, + 4.723555733404737977e-06, + 4.731863038940405125e-06, + 4.740161641378736416e-06, + 4.748451528251958285e-06, + 4.756732687108098567e-06, + 4.765005105510449478e-06, + 4.773268771039235421e-06, + 4.781523671289265860e-06, + 4.789769793871526048e-06, + 4.798007126412799249e-06, + 4.806235656555678595e-06, + 4.814455371958196939e-06, + 4.822666260295442138e-06, + 4.830868309257137934e-06, + 4.839061506549357497e-06, + 4.847245839894021985e-06, + 4.855421297028645586e-06, + 4.863587865707784788e-06, + 4.871745533700838641e-06, + 4.879894288793562399e-06, + 4.888034118787699909e-06, + 4.896165011501014955e-06, + 4.904286954766949899e-06, + 4.912399936436069027e-06, + 4.920503944374319591e-06, + 4.928598966462548151e-06, + 4.936684990600010685e-06, + 4.944762004700545685e-06, + 4.952829996694147953e-06, + 4.960888954528109550e-06, + 4.968938866164734501e-06, + 4.976979719582899032e-06, + 4.985011502777756800e-06, + 4.993034203760227287e-06, + 5.001047810558633960e-06, + 5.009052311216835719e-06, + 5.017047693793833870e-06, + 5.025033946367146708e-06, + 5.033011057029163884e-06, + 5.040979013888546554e-06, + 5.048937805071468277e-06, + 5.056887418719361065e-06, + 5.064827842990384986e-06, + 5.072759066059116451e-06, + 5.080681076116536357e-06, + 5.088593861369744642e-06, + 5.096497410043694152e-06, + 5.104391710377286678e-06, + 5.112276750628465305e-06, + 5.120152519070235911e-06, + 5.128019003992092712e-06, + 5.135876193701195648e-06, + 5.143724076520500125e-06, + 5.151562640788483431e-06, + 5.159391874862349904e-06, + 5.167211767114504735e-06, + 5.175022305933981221e-06, + 5.182823479727840057e-06, + 5.190615276917329744e-06, + 5.198397685942898477e-06, + 5.206170695260214786e-06, + 5.213934293341692196e-06, + 5.221688468677865653e-06, + 5.229433209773893283e-06, + 5.237168505152775112e-06, + 5.244894343354986302e-06, + 5.252610712936709395e-06, + 5.260317602470970184e-06, + 5.268015000549027692e-06, + 5.275702895776844587e-06, + 5.283381276778291508e-06, + 5.291050132194907353e-06, + 5.298709450683964660e-06, + 5.306359220920053553e-06, + 5.313999431594679404e-06, + 5.321630071415901998e-06, + 5.329251129109866968e-06, + 5.336862593418570471e-06, + 5.344464453101041655e-06, + 5.352056696934700442e-06, + 5.359639313711909266e-06, + 5.367212292243090997e-06, + 5.374775621356449418e-06, + 5.382329289896202320e-06, + 5.389873286723995195e-06, + 5.397407600718593766e-06, + 5.404932220775543478e-06, + 5.412447135808548468e-06, + 5.419952334747433605e-06, + 5.427447806539536165e-06, + 5.434933540149373790e-06, + 5.442409524558683458e-06, + 5.449875748766047091e-06, + 5.457332201788350143e-06, + 5.464778872658653012e-06, + 5.472215750427639463e-06, + 5.479642824163295602e-06, + 5.487060082950859904e-06, + 5.494467515892566557e-06, + 5.501865112109018509e-06, + 5.509252860737076657e-06, + 5.516630750931383659e-06, + 5.523998771863896375e-06, + 5.531356912723635992e-06, + 5.538705162718060213e-06, + 5.546043511070997350e-06, + 5.553371947024101520e-06, + 5.560690459836413890e-06, + 5.567999038784505816e-06, + 5.575297673162053640e-06, + 5.582586352281255773e-06, + 5.589865065470806592e-06, + 5.597133802077284729e-06, + 5.604392551464798162e-06, + 5.611641303014962192e-06, + 5.618880046126746980e-06, + 5.626108770217619344e-06, + 5.633327464721674207e-06, + 5.640536119090990694e-06, + 5.647734722795217936e-06, + 5.654923265321370932e-06, + 5.662101736175134136e-06, + 5.669270124879144518e-06, + 5.676428420972824699e-06, + 5.683576614015229833e-06, + 5.690714693581840734e-06, + 5.697842649265876780e-06, + 5.704960470679278473e-06, + 5.712068147450806694e-06, + 5.719165669227290384e-06, + 5.726253025673409704e-06, + 5.733330206471603706e-06, + 5.740397201321844180e-06, + 5.747453999943256869e-06, + 5.754500592070484313e-06, + 5.761536967458406366e-06, + 5.768563115878433574e-06, + 5.775579027119863278e-06, + 5.782584690990943490e-06, + 5.789580097317161032e-06, + 5.796565235940961176e-06, + 5.803540096724719031e-06, + 5.810504669547467457e-06, + 5.817458944306238762e-06, + 5.824402910917368290e-06, + 5.831336559312917398e-06, + 5.838259879445283010e-06, + 5.845172861283574856e-06, + 5.852075494814943623e-06, + 5.858967770045972625e-06, + 5.865849676999328640e-06, + 5.872721205716774802e-06, + 5.879582346258852121e-06, + 5.886433088703219294e-06, + 5.893273423145721661e-06, + 5.900103339701621101e-06, + 5.906922828502427278e-06, + 5.913731879698791106e-06, + 5.920530483460237935e-06, + 5.927318629973470942e-06, + 5.934096309443836500e-06, + 5.940863512094838827e-06, + 5.947620228167974816e-06, + 5.954366447923908020e-06, + 5.961102161640676332e-06, + 5.967827359614572900e-06, + 5.974542032161504766e-06, + 5.981246169613796165e-06, + 5.987939762323031168e-06, + 5.994622800659775006e-06, + 6.001295275012041788e-06, + 6.007957175786487974e-06, + 6.014608493408236187e-06, + 6.021249218320397489e-06, + 6.027879340985496090e-06, + 6.034498851883564372e-06, + 6.041107741513373626e-06, + 6.047706000392099476e-06, + 6.054293619055464178e-06, + 6.060870588057334281e-06, + 6.067436897970973389e-06, + 6.073992539387239675e-06, + 6.080537502915856428e-06, + 6.087071779185057997e-06, + 6.093595358841597411e-06, + 6.100108232550554104e-06, + 6.106610390996407106e-06, + 6.113101824881368929e-06, + 6.119582524926529060e-06, + 6.126052481871618489e-06, + 6.132511686474681904e-06, + 6.138960129513293184e-06, + 6.145397801782774939e-06, + 6.151824694097430090e-06, + 6.158240797290201368e-06, + 6.164646102212782270e-06, + 6.171040599735194393e-06, + 6.177424280747160474e-06, + 6.183797136156158754e-06, + 6.190159156888735879e-06, + 6.196510333890183334e-06, + 6.202850658124568786e-06, + 6.209180120574410817e-06, + 6.215498712241958796e-06, + 6.221806424147320090e-06, + 6.228103247329769571e-06, + 6.234389172847352362e-06, + 6.240664191776695796e-06, + 6.246928295214141050e-06, + 6.253181474274330296e-06, + 6.259423720089869578e-06, + 6.265655023814013065e-06, + 6.271875376617786522e-06, + 6.278084769691101164e-06, + 6.284283194243654044e-06, + 6.290470641503209431e-06, + 6.296647102716788041e-06, + 6.302812569150376503e-06, + 6.308967032088596172e-06, + 6.315110482835992311e-06, + 6.321242912715474706e-06, + 6.327364313068109293e-06, + 6.333474675255716010e-06, + 6.339573990657993117e-06, + 6.345662250673700508e-06, + 6.351739446721444901e-06, + 6.357805570238438097e-06, + 6.363860612680045504e-06, + 6.369904565522399238e-06, + 6.375937420259675759e-06, + 6.381959168405119930e-06, + 6.387969801492244421e-06, + 6.393969311071705847e-06, + 6.399957688715293450e-06, + 6.405934926012857753e-06, + 6.411901014573386296e-06, + 6.417855946026154752e-06, + 6.423799712018003716e-06, + 6.429732304215769689e-06, + 6.435653714306097040e-06, + 6.441563933993991269e-06, + 6.447462955003725334e-06, + 6.453350769079929784e-06, + 6.459227367984554451e-06, + 6.465092743500721603e-06, + 6.470946887429765560e-06, + 6.476789791592579485e-06, + 6.482621447829401074e-06, + 6.488441847999710922e-06, + 6.494250983982112237e-06, + 6.500048847675332037e-06, + 6.505835430996622798e-06, + 6.511610725882606097e-06, + 6.517374724290357663e-06, + 6.523127418194734142e-06, + 6.528868799590738857e-06, + 6.534598860493377815e-06, + 6.540317592936222291e-06, + 6.546024988972566721e-06, + 6.551721040675116996e-06, + 6.557405740135743129e-06, + 6.563079079466632063e-06, + 6.568741050798547021e-06, + 6.574391646281835475e-06, + 6.580030858087314295e-06, + 6.585658678403710018e-06, + 6.591275099440110154e-06, + 6.596880113425591348e-06, + 6.602473712607984400e-06, + 6.608055889254934752e-06, + 6.613626635653617036e-06, + 6.619185944110801146e-06, + 6.624733806952511729e-06, + 6.630270216525208100e-06, + 6.635795165194072393e-06, + 6.641308645344207261e-06, + 6.646810649380302995e-06, + 6.652301169726424915e-06, + 6.657780198827030663e-06, + 6.663247729145439607e-06, + 6.668703753164929756e-06, + 6.674148263388356589e-06, + 6.679581252338282655e-06, + 6.685002712556720918e-06, + 6.690412636606091063e-06, + 6.695811017067817651e-06, + 6.701197846543181391e-06, + 6.706573117653304737e-06, + 6.711936823038690259e-06, + 6.717288955360378532e-06, + 6.722629507298395530e-06, + 6.727958471552769063e-06, + 6.733275840843286523e-06, + 6.738581607909552488e-06, + 6.743875765510647362e-06, + 6.749158306426228523e-06, + 6.754429223455287720e-06, + 6.759688509415805489e-06, + 6.764936157147173664e-06, + 6.770172159507497577e-06, + 6.775396509374858987e-06, + 6.780609199647893754e-06, + 6.785810223244264637e-06, + 6.790999573101870861e-06, + 6.796177242178428834e-06, + 6.801343223451273941e-06, + 6.806497509918464227e-06, + 6.811640094597365854e-06, + 6.816770970524603125e-06, + 6.821890130758162513e-06, + 6.826997568374978620e-06, + 6.832093276471926048e-06, + 6.837177248166829914e-06, + 6.842249476595737555e-06, + 6.847309954916389666e-06, + 6.852358676305526741e-06, + 6.857395633960094398e-06, + 6.862420821096818165e-06, + 6.867434230953397803e-06, + 6.872435856785839149e-06, + 6.877425691871816836e-06, + 6.882403729508118794e-06, + 6.887369963011609330e-06, + 6.892324385720054983e-06, + 6.897266990989925626e-06, + 6.902197772198418027e-06, + 6.907116722743281363e-06, + 6.912023836041679654e-06, + 6.916919105530805012e-06, + 6.921802524668885612e-06, + 6.926674086932686948e-06, + 6.931533785820645849e-06, + 6.936381614850396299e-06, + 6.941217567559981543e-06, + 6.946041637507511882e-06, + 6.950853818271305282e-06, + 6.955654103449535008e-06, + 6.960442486661302816e-06, + 6.965218961545138010e-06, + 6.969983521759771628e-06, + 6.974736160984997877e-06, + 6.979476872919449826e-06, + 6.984205651282676325e-06, + 6.988922489814834538e-06, + 6.993627382275644701e-06, + 6.998320322445305766e-06, + 7.003001304124187080e-06, + 7.007670321132724202e-06, + 7.012327367312225275e-06, + 7.016972436523621655e-06, + 7.021605522648076081e-06, + 7.026226619587939818e-06, + 7.030835721264466523e-06, + 7.035432821619910337e-06, + 7.040017914617209100e-06, + 7.044590994238974687e-06, + 7.049152054488319709e-06, + 7.053701089388691500e-06, + 7.058238092983822983e-06, + 7.062763059337614939e-06, + 7.067275982534910188e-06, + 7.071776856680238292e-06, + 7.076265675898721031e-06, + 7.080742434335840315e-06, + 7.085207126157184074e-06, + 7.089659745549397480e-06, + 7.094100286718841242e-06, + 7.098528743892485228e-06, + 7.102945111317704330e-06, + 7.107349383262216629e-06, + 7.111741554014000389e-06, + 7.116121617882039443e-06, + 7.120489569195100078e-06, + 7.124845402302605175e-06, + 7.129189111574437693e-06, + 7.133520691400636592e-06, + 7.137840136192372604e-06, + 7.142147440380633648e-06, + 7.146442598417044753e-06, + 7.150725604773729144e-06, + 7.154996453943287068e-06, + 7.159255140438540838e-06, + 7.163501658793490282e-06, + 7.167736003562161631e-06, + 7.171958169318490624e-06, + 7.176168150658101278e-06, + 7.180365942196376348e-06, + 7.184551538569190010e-06, + 7.188724934433507562e-06, + 7.192886124466295289e-06, + 7.197035103365188773e-06, + 7.201171865848422595e-06, + 7.205296406654493205e-06, + 7.209408720543177066e-06, + 7.213508802294282123e-06, + 7.217596646707666434e-06, + 7.221672248604942409e-06, + 7.225735602827489664e-06, + 7.229786704237270714e-06, + 7.233825547717659376e-06, + 7.237852128171209678e-06, + 7.241866440522449378e-06, + 7.245868479715770852e-06, + 7.249858240716337416e-06, + 7.253835718509761455e-06, + 7.257800908103065809e-06, + 7.261753804522502657e-06, + 7.265694402816360587e-06, + 7.269622698052745373e-06, + 7.273538685320491375e-06, + 7.277442359729735835e-06, + 7.281333716410273087e-06, + 7.285212750513013996e-06, + 7.289079457209952080e-06, + 7.292933831693234307e-06, + 7.296775869175610880e-06, + 7.300605564891324611e-06, + 7.304422914093962006e-06, + 7.308227912059142591e-06, + 7.312020554082447073e-06, + 7.315800835480133077e-06, + 7.319568751589906797e-06, + 7.323324297769106112e-06, + 7.327067469396328577e-06, + 7.330798261871302681e-06, + 7.334516670613849381e-06, + 7.338222691064650361e-06, + 7.341916318685761334e-06, + 7.345597548958910354e-06, + 7.349266377387142752e-06, + 7.352922799494604299e-06, + 7.356566810825695862e-06, + 7.360198406945719696e-06, + 7.363817583440757465e-06, + 7.367424335917509311e-06, + 7.371018660003960468e-06, + 7.374600551348365666e-06, + 7.378170005619956407e-06, + 7.381727018508723277e-06, + 7.385271585725469308e-06, + 7.388803703001633795e-06, + 7.392323366089988559e-06, + 7.395830570763600330e-06, + 7.399325312816481268e-06, + 7.402807588063519508e-06, + 7.406277392340223356e-06, + 7.409734721503435333e-06, + 7.413179571430336073e-06, + 7.416611938019144810e-06, + 7.420031817188846642e-06, + 7.423439204879327200e-06, + 7.426834097051160053e-06, + 7.430216489686211480e-06, + 7.433586378786789209e-06, + 7.436943760376161643e-06, + 7.440288630498469772e-06, + 7.443620985218784771e-06, + 7.446940820622796289e-06, + 7.450248132817653556e-06, + 7.453542917930829511e-06, + 7.456825172110873812e-06, + 7.460094891527212094e-06, + 7.463352072369975709e-06, + 7.466596710850768297e-06, + 7.469828803201533297e-06, + 7.473048345675268003e-06, + 7.476255334545911749e-06, + 7.479449766108309488e-06, + 7.482631636678044932e-06, + 7.485800942592103770e-06, + 7.488957680207947020e-06, + 7.492101845904065836e-06, + 7.495233436079906116e-06, + 7.498352447155844794e-06, + 7.501458875573024659e-06, + 7.504552717794006579e-06, + 7.507633970301841993e-06, + 7.510702629600618406e-06, + 7.513758692215445831e-06, + 7.516802154692191673e-06, + 7.519833013598138869e-06, + 7.522851265521220173e-06, + 7.525856907069895335e-06, + 7.528849934874441981e-06, + 7.531830345585531748e-06, + 7.534798135874857089e-06, + 7.537753302435599686e-06, + 7.540695841980895618e-06, + 7.543625751245903827e-06, + 7.546543026986175567e-06, + 7.549447665978253267e-06, + 7.552339665020060160e-06, + 7.555219020930262468e-06, + 7.558085730548069505e-06, + 7.560939790734530480e-06, + 7.563781198371150451e-06, + 7.566609950360407855e-06, + 7.569426043626336426e-06, + 7.572229475113169093e-06, + 7.575020241786508577e-06, + 7.577798340633312996e-06, + 7.580563768661077627e-06, + 7.583316522898350751e-06, + 7.586056600395213077e-06, + 7.588783998221806437e-06, + 7.591498713470276888e-06, + 7.594200743253206851e-06, + 7.596890084704235138e-06, + 7.599566734978588043e-06, + 7.602230691251645316e-06, + 7.604881950720253907e-06, + 7.607520510602597530e-06, + 7.610146368137428398e-06, + 7.612759520584573749e-06, + 7.615359965225399179e-06, + 7.617947699361454227e-06, + 7.620522720316180850e-06, + 7.623085025433545459e-06, + 7.625634612078763132e-06, + 7.628171477637969815e-06, + 7.630695619518475584e-06, + 7.633207035148415666e-06, + 7.635705721977479736e-06, + 7.638191677475888701e-06, + 7.640664899135147712e-06, + 7.643125384467749700e-06, + 7.645573131007314294e-06, + 7.648008136308335404e-06, + 7.650430397946806328e-06, + 7.652839913519321900e-06, + 7.655236680643764586e-06, + 7.657620696959018187e-06, + 7.659991960124920405e-06, + 7.662350467822750735e-06, + 7.664696217754500321e-06, + 7.667029207643325965e-06, + 7.669349435233485755e-06, + 7.671656898290310264e-06, + 7.673951594600058557e-06, + 7.676233521970455206e-06, + 7.678502678229912716e-06, + 7.680759061228048214e-06, + 7.683002668835590279e-06, + 7.685233498944262046e-06, + 7.687451549466867607e-06, + 7.689656818337527484e-06, + 7.691849303511209376e-06, + 7.694029002963970407e-06, + 7.696195914692985926e-06, + 7.698350036716444477e-06, + 7.700491367073923878e-06, + 7.702619903825716987e-06, + 7.704735645053414455e-06, + 7.706838588859572697e-06, + 7.708928733367907007e-06, + 7.711006076723103523e-06, + 7.713070617091254599e-06, + 7.715122352659194732e-06, + 7.717161281634988453e-06, + 7.719187402247786330e-06, + 7.721200712747799559e-06, + 7.723201211406233895e-06, + 7.725188896515867328e-06, + 7.727163766389708382e-06, + 7.729125819362717289e-06, + 7.731075053790445649e-06, + 7.733011468049541266e-06, + 7.734935060538137782e-06, + 7.736845829675121147e-06, + 7.738743773900263448e-06, + 7.740628891674995404e-06, + 7.742501181481442445e-06, + 7.744360641822804178e-06, + 7.746207271223813485e-06, + 7.748041068229548977e-06, + 7.749862031406930856e-06, + 7.751670159343507967e-06, + 7.753465450647960931e-06, + 7.755247903950335928e-06, + 7.757017517901585607e-06, + 7.758774291173428474e-06, + 7.760518222459329761e-06, + 7.762249310473369788e-06, + 7.763967553950787756e-06, + 7.765672951648205368e-06, + 7.767365502342857720e-06, + 7.769045204833274315e-06, + 7.770712057939307865e-06, + 7.772366060501571859e-06, + 7.774007211381838670e-06, + 7.775635509463236063e-06, + 7.777250953649410332e-06, + 7.778853542865666403e-06, + 7.780443276058095388e-06, + 7.782020152193786349e-06, + 7.783584170261324348e-06, + 7.785135329269855326e-06, + 7.786673628249834878e-06, + 7.788199066252974044e-06, + 7.789711642351778524e-06, + 7.791211355639858689e-06, + 7.792698205232249763e-06, + 7.794172190264424179e-06, + 7.795633309893553663e-06, + 7.797081563297540222e-06, + 7.798516949675410868e-06, + 7.799939468247261707e-06, + 7.801349118254335873e-06, + 7.802745898958750778e-06, + 7.804129809643960594e-06, + 7.805500849614288692e-06, + 7.806859018195163113e-06, + 7.808204314733060671e-06, + 7.809536738595549297e-06, + 7.810856289171149130e-06, + 7.812162965869678106e-06, + 7.813456768121770842e-06, + 7.814737695379183569e-06, + 7.816005747114753474e-06, + 7.817260922822253009e-06, + 7.818503222016772754e-06, + 7.819732644234182698e-06, + 7.820949189031455812e-06, + 7.822152855986669738e-06, + 7.823343644698896676e-06, + 7.824521554788171199e-06, + 7.825686585895810430e-06, + 7.826838737683919372e-06, + 7.827978009835724645e-06, + 7.829104402055483001e-06, + 7.830217914068452527e-06, + 7.831318545620884176e-06, + 7.832406296480209804e-06, + 7.833481166434782983e-06, + 7.834543155293899328e-06, + 7.835592262887981148e-06, + 7.836628489068367384e-06, + 7.837651833707569415e-06, + 7.838662296698957650e-06, + 7.839659877956971597e-06, + 7.840644577417014830e-06, + 7.841616395035573572e-06, + 7.842575330789984609e-06, + 7.843521384678830009e-06, + 7.844454556721476332e-06, + 7.845374846958328745e-06, + 7.846282255450803911e-06, + 7.847176782281255458e-06, + 7.848058427553177257e-06, + 7.848927191390962874e-06, + 7.849783073939758181e-06, + 7.850626075366069526e-06, + 7.851456195857113213e-06, + 7.852273435621145845e-06, + 7.853077794887471100e-06, + 7.853869273906321144e-06, + 7.854647872948683840e-06, + 7.855413592306853318e-06, + 7.856166432293840439e-06, + 7.856906393243642153e-06, + 7.857633475511380410e-06, + 7.858347679472790556e-06, + 7.859049005524858299e-06, + 7.859737454085435155e-06, + 7.860413025593114786e-06, + 7.861075720507773400e-06, + 7.861725539309992081e-06, + 7.862362482501141490e-06, + 7.862986550603871447e-06, + 7.863597744161492602e-06, + 7.864196063738274588e-06, + 7.864781509919610344e-06, + 7.865354083311385926e-06, + 7.865913784540825844e-06, + 7.866460614255806963e-06, + 7.866994573125160053e-06, + 7.867515661838591853e-06, + 7.868023881106837546e-06, + 7.868519231661260955e-06, + 7.869001714254413583e-06, + 7.869471329659504373e-06, + 7.869928078670675842e-06, + 7.870371962103075230e-06, + 7.870802980792497049e-06, + 7.871221135595664304e-06, + 7.871626427390347074e-06, + 7.872018857074998289e-06, + 7.872398425568948545e-06, + 7.872765133812363757e-06, + 7.873118982766284118e-06, + 7.873459973412668149e-06, + 7.873788106754160606e-06, + 7.874103383814349985e-06, + 7.874405805637653321e-06, + 7.874695373289251814e-06, + 7.874972087855117937e-06, + 7.875235950442164507e-06, + 7.875486962178063430e-06, + 7.875725124211247386e-06, + 7.875950437710986065e-06, + 7.876162903867392948e-06, + 7.876362523891252502e-06, + 7.876549299014316653e-06, + 7.876723230488967659e-06, + 7.876884319588480692e-06, + 7.877032567606773118e-06, + 7.877167975858641666e-06, + 7.877290545679686192e-06, + 7.877400278426165687e-06, + 7.877497175475128719e-06, + 7.877581238224415125e-06, + 7.877652468092562841e-06, + 7.877710866518841781e-06, + 7.877756434963392750e-06, + 7.877789174906905573e-06, + 7.877809087850915556e-06, + 7.877816175317659488e-06, + 7.877810438850067176e-06, + 7.877791880011822428e-06, + 7.877760500387291900e-06, + 7.877716301581536959e-06, + 7.877659285220303516e-06, + 7.877589452950127058e-06, + 7.877506806438092093e-06, + 7.877411347372099810e-06, + 7.877303077460639380e-06, + 7.877181998432862496e-06, + 7.877048112038690099e-06, + 7.876901420048578598e-06, + 7.876741924253712990e-06, + 7.876569626465959430e-06, + 7.876384528517760196e-06, + 7.876186632262213315e-06, + 7.875975939573087801e-06, + 7.875752452344730490e-06, + 7.875516172492132104e-06, + 7.875267101950940803e-06, + 7.875005242677360546e-06, + 7.874730596648223929e-06, + 7.874443165860982026e-06, + 7.874142952333650176e-06, + 7.873829958104833394e-06, + 7.873504185233753480e-06, + 7.873165635800149064e-06, + 7.872814311904439931e-06, + 7.872450215667481385e-06, + 7.872073349230776005e-06, + 7.871683714756336426e-06, + 7.871281314426753099e-06, + 7.870866150445138393e-06, + 7.870438225035145222e-06, + 7.869997540440929783e-06, + 7.869544098927256582e-06, + 7.869077902779308704e-06, + 7.868598954302847049e-06, + 7.868107255824071425e-06, + 7.867602809689757762e-06, + 7.867085618267105650e-06, + 7.866555683943836594e-06, + 7.866013009128175376e-06, + 7.865457596248750109e-06, + 7.864889447754732843e-06, + 7.864308566115688794e-06, + 7.863714953821684763e-06, + 7.863108613383185797e-06, + 7.862489547331163612e-06, + 7.861857758216971232e-06, + 7.861213248612409054e-06, + 7.860556021109689275e-06, + 7.859886078321446059e-06, + 7.859203422880710121e-06, + 7.858508057440939223e-06, + 7.857799984675936859e-06, + 7.857079207279928486e-06, + 7.856345727967532728e-06, + 7.855599549473720716e-06, + 7.854840674553816089e-06, + 7.854069105983511932e-06, + 7.853284846558860618e-06, + 7.852487899096268718e-06, + 7.851678266432415691e-06, + 7.850855951424448700e-06, + 7.850020956949696317e-06, + 7.849173285905883664e-06, + 7.848312941211012139e-06, + 7.847439925803383133e-06, + 7.846554242641640378e-06, + 7.845655894704658143e-06, + 7.844744884991614075e-06, + 7.843821216521967179e-06, + 7.842884892335437488e-06, + 7.841935915491975569e-06, + 7.840974289071833675e-06, + 7.840000016175477655e-06, + 7.839013099923592033e-06, + 7.838013543457095255e-06, + 7.837001349937204066e-06, + 7.835976522545214974e-06, + 7.834939064482763442e-06, + 7.833888978971569777e-06, + 7.832826269253618704e-06, + 7.831750938591045861e-06, + 7.830662990266124248e-06, + 7.829562427581425162e-06, + 7.828449253859535287e-06, + 7.827323472443251516e-06, + 7.826185086695494549e-06, + 7.825034099999383434e-06, + 7.823870515758074630e-06, + 7.822694337394909392e-06, + 7.821505568353312126e-06, + 7.820304212096800553e-06, + 7.819090272108985710e-06, + 7.817863751893673594e-06, + 7.816624654974558534e-06, + 7.815372984895546760e-06, + 7.814108745220590385e-06, + 7.812831939533578982e-06, + 7.811542571438651294e-06, + 7.810240644559781882e-06, + 7.808926162541135184e-06, + 7.807599129046821569e-06, + 7.806259547760904116e-06, + 7.804907422387512113e-06, + 7.803542756650908821e-06, + 7.802165554295040854e-06, + 7.800775819084085360e-06, + 7.799373554802153561e-06, + 7.797958765253172166e-06, + 7.796531454261147650e-06, + 7.795091625670001924e-06, + 7.793639283343623160e-06, + 7.792174431165745514e-06, + 7.790697073040165962e-06, + 7.789207212890347892e-06, + 7.787704854659978452e-06, + 7.786190002312311248e-06, + 7.784662659830699979e-06, + 7.783122831218342635e-06, + 7.781570520498139187e-06, + 7.780005731713010082e-06, + 7.778428468925848799e-06, + 7.776838736219017026e-06, + 7.775236537695003647e-06, + 7.773621877476046964e-06, + 7.771994759704021200e-06, + 7.770355188540970125e-06, + 7.768703168168324398e-06, + 7.767038702787601220e-06, + 7.765361796619975730e-06, + 7.763672453906306421e-06, + 7.761970678907287601e-06, + 7.760256475903481584e-06, + 7.758529849194966324e-06, + 7.756790803101648815e-06, + 7.755039341963232907e-06, + 7.753275470138890651e-06, + 7.751499192007782387e-06, + 7.749710511968677264e-06, + 7.747909434439829578e-06, + 7.746095963859365017e-06, + 7.744270104684987591e-06, + 7.742431861394116847e-06, + 7.740581238483831966e-06, + 7.738718240470636290e-06, + 7.736842871890889308e-06, + 7.734955137300515273e-06, + 7.733055041274820249e-06, + 7.731142588409079948e-06, + 7.729217783317928172e-06, + 7.727280630635510974e-06, + 7.725331135015684866e-06, + 7.723369301131771173e-06, + 7.721395133676679708e-06, + 7.719408637362885049e-06, + 7.717409816922202924e-06, + 7.715398677106167989e-06, + 7.713375222685739060e-06, + 7.711339458451371955e-06, + 7.709291389212989006e-06, + 7.707231019800068840e-06, + 7.705158355061349920e-06, + 7.703073399865204932e-06, + 7.700976159099408698e-06, + 7.698866637671117851e-06, + 7.696744840506999577e-06, + 7.694610772553116425e-06, + 7.692464438774724710e-06, + 7.690305844156745463e-06, + 7.688134993703325671e-06, + 7.685951892438041560e-06, + 7.683756545403863024e-06, + 7.681548957662921536e-06, + 7.679329134296899783e-06, + 7.677097080406674221e-06, + 7.674852801112520050e-06, + 7.672596301553945205e-06, + 7.670327586889900411e-06, + 7.668046662298277748e-06, + 7.665753532976632314e-06, + 7.663448204141558819e-06, + 7.661130681028959237e-06, + 7.658800968893998768e-06, + 7.656459073011109224e-06, + 7.654104998673702729e-06, + 7.651738751194666390e-06, + 7.649360335905981131e-06, + 7.646969758158838582e-06, + 7.644567023323646163e-06, + 7.642152136789771280e-06, + 7.639725103965827621e-06, + 7.637285930279924184e-06, + 7.634834621178701356e-06, + 7.632371182128284666e-06, + 7.629895618613944286e-06, + 7.627407936139737576e-06, + 7.624908140229094386e-06, + 7.622396236424402014e-06, + 7.619872230287157664e-06, + 7.617336127397932030e-06, + 7.614787933356146525e-06, + 7.612227653780310449e-06, + 7.609655294308375047e-06, + 7.607070860596643383e-06, + 7.604474358320790163e-06, + 7.601865793175498360e-06, + 7.599245170874110234e-06, + 7.596612497149137249e-06, + 7.593967777752305813e-06, + 7.591311018453751745e-06, + 7.588642225042845290e-06, + 7.585961403327919219e-06, + 7.583268559135794492e-06, + 7.580563698312852599e-06, + 7.577846826723709110e-06, + 7.575117950252167433e-06, + 7.572377074800968935e-06, + 7.569624206291224591e-06, + 7.566859350663516119e-06, + 7.564082513876941380e-06, + 7.561293701909131313e-06, + 7.558492920756915708e-06, + 7.555680176435824300e-06, + 7.552855474979787769e-06, + 7.550018822442201611e-06, + 7.547170224894492112e-06, + 7.544309688427195471e-06, + 7.541437219149515643e-06, + 7.538552823189327731e-06, + 7.535656506693177988e-06, + 7.532748275826475239e-06, + 7.529828136772909825e-06, + 7.526896095735238796e-06, + 7.523952158934730262e-06, + 7.520996332610949939e-06, + 7.518028623022746245e-06, + 7.515049036447172881e-06, + 7.512057579179726840e-06, + 7.509054257534754988e-06, + 7.506039077845169460e-06, + 7.503012046462337542e-06, + 7.499973169756319694e-06, + 7.496922454115391816e-06, + 7.493859905946649187e-06, + 7.490785531675618524e-06, + 7.487699337746280851e-06, + 7.484601330621142647e-06, + 7.481491516781286673e-06, + 7.478369902725851045e-06, + 7.475236494972868639e-06, + 7.472091300058587779e-06, + 7.468934324537685683e-06, + 7.465765574983332838e-06, + 7.462585057987106606e-06, + 7.459392780158685442e-06, + 7.456188748126382526e-06, + 7.452972968536842527e-06, + 7.449745448054992469e-06, + 7.446506193364214533e-06, + 7.443255211165819199e-06, + 7.439992508179833834e-06, + 7.436718091144435178e-06, + 7.433431966816055228e-06, + 7.430134141969388010e-06, + 7.426824623397496305e-06, + 7.423503417911350867e-06, + 7.420170532340441131e-06, + 7.416825973532369484e-06, + 7.413469748352987636e-06, + 7.410101863686271264e-06, + 7.406722326434470780e-06, + 7.403331143517652238e-06, + 7.399928321874411388e-06, + 7.396513868461309547e-06, + 7.393087790253010818e-06, + 7.389650094242457433e-06, + 7.386200787440273433e-06, + 7.382739876875394865e-06, + 7.379267369595211237e-06, + 7.375783272664369504e-06, + 7.372287593166113231e-06, + 7.368780338201660870e-06, + 7.365261514889833909e-06, + 7.361731130367881888e-06, + 7.358189191790867448e-06, + 7.354635706331820492e-06, + 7.351070681181869477e-06, + 7.347494123549645951e-06, + 7.343906040661977420e-06, + 7.340306439764025421e-06, + 7.336695328118038685e-06, + 7.333072713004639781e-06, + 7.329438601722361793e-06, + 7.325793001587145176e-06, + 7.322135919933054349e-06, + 7.318467364112433552e-06, + 7.314787341494515164e-06, + 7.311095859466943523e-06, + 7.307392925435148961e-06, + 7.303678546821728630e-06, + 7.299952731068069411e-06, + 7.296215485632224408e-06, + 7.292466817990607857e-06, + 7.288706735637327665e-06, + 7.284935246083559453e-06, + 7.281152356859113566e-06, + 7.277358075511006132e-06, + 7.273552409603549689e-06, + 7.269735366719168035e-06, + 7.265906954457953226e-06, + 7.262067180436954074e-06, + 7.258216052291843950e-06, + 7.254353577674892987e-06, + 7.250479764256491048e-06, + 7.246594619724432830e-06, + 7.242698151784043223e-06, + 7.238790368158187474e-06, + 7.234871276587352507e-06, + 7.230940884829082791e-06, + 7.226999200658841779e-06, + 7.223046231869591780e-06, + 7.219081986271076516e-06, + 7.215106471691411855e-06, + 7.211119695975672959e-06, + 7.207121666986044210e-06, + 7.203112392602530712e-06, + 7.199091880722321331e-06, + 7.195060139260048726e-06, + 7.191017176147797826e-06, + 7.186962999334490878e-06, + 7.182897616786851374e-06, + 7.178821036488934796e-06, + 7.174733266441339178e-06, + 7.170634314662972866e-06, + 7.166524189189527315e-06, + 7.162402898073539774e-06, + 7.158270449385308924e-06, + 7.154126851212130856e-06, + 7.149972111658526077e-06, + 7.145806238846175134e-06, + 7.141629240914081245e-06, + 7.137441126017875731e-06, + 7.133241902330873422e-06, + 7.129031578043265429e-06, + 7.124810161362410531e-06, + 7.120577660512847872e-06, + 7.116334083735729455e-06, + 7.112079439289726467e-06, + 7.107813735450402472e-06, + 7.103536980510327759e-06, + 7.099249182779101372e-06, + 7.094950350583460368e-06, + 7.090640492266590341e-06, + 7.086319616189131689e-06, + 7.081987730728589240e-06, + 7.077644844279277187e-06, + 7.073290965252671461e-06, + 7.068926102076565232e-06, + 7.064550263196224269e-06, + 7.060163457073522114e-06, + 7.055765692187239088e-06, + 7.051356977032954715e-06, + 7.046937320123252706e-06, + 7.042506729986934913e-06, + 7.038065215170055553e-06, + 7.033612784235894106e-06, + 7.029149445763376445e-06, + 7.024675208348947626e-06, + 7.020190080605750263e-06, + 7.015694071163060409e-06, + 7.011187188667426811e-06, + 7.006669441781861151e-06, + 7.002140839186036247e-06, + 6.997601389576459696e-06, + 6.993051101665674278e-06, + 6.988489984183244746e-06, + 6.983918045875839989e-06, + 6.979335295505606730e-06, + 6.974741741851983869e-06, + 6.970137393710974035e-06, + 6.965522259894349069e-06, + 6.960896349231676130e-06, + 6.956259670567724073e-06, + 6.951612232764479395e-06, + 6.946954044700194165e-06, + 6.942285115269758722e-06, + 6.937605453383744524e-06, + 6.932915067970437876e-06, + 6.928213967973209048e-06, + 6.923502162352540068e-06, + 6.918779660085308132e-06, + 6.914046470163933495e-06, + 6.909302601598306462e-06, + 6.904548063414090788e-06, + 6.899782864652844801e-06, + 6.895007014372980244e-06, + 6.890220521649132081e-06, + 6.885423395571450378e-06, + 6.880615645247672147e-06, + 6.875797279800337996e-06, + 6.870968308368967307e-06, + 6.866128740109321317e-06, + 6.861278584192451059e-06, + 6.856417849806792914e-06, + 6.851546546156272956e-06, + 6.846664682460530565e-06, + 6.841772267955926402e-06, + 6.836869311894862235e-06, + 6.831955823545002520e-06, + 6.827031812191286949e-06, + 6.822097287134020393e-06, + 6.817152257689134633e-06, + 6.812196733189157367e-06, + 6.807230722982420233e-06, + 6.802254236433138431e-06, + 6.797267282921674151e-06, + 6.792269871843797958e-06, + 6.787262012611673046e-06, + 6.782243714653420712e-06, + 6.777214987412157273e-06, + 6.772175840348113350e-06, + 6.767126282936762767e-06, + 6.762066324668915729e-06, + 6.756995975051852994e-06, + 6.751915243608410235e-06, + 6.746824139877182171e-06, + 6.741722673412737717e-06, + 6.736610853784719586e-06, + 6.731488690579111450e-06, + 6.726356193397418860e-06, + 6.721213371856748021e-06, + 6.716060235589959102e-06, + 6.710896794245694192e-06, + 6.705723057487610729e-06, + 6.700539034995581755e-06, + 6.695344736464891226e-06, + 6.690140171606361918e-06, + 6.684925350146377450e-06, + 6.679700281827110135e-06, + 6.674464976405518939e-06, + 6.669219443654788593e-06, + 6.663963693363348726e-06, + 6.658697735335033954e-06, + 6.653421579389415921e-06, + 6.648135235360809723e-06, + 6.642838713099578346e-06, + 6.637532022471299178e-06, + 6.632215173356887683e-06, + 6.626888175652644829e-06, + 6.621551039270367206e-06, + 6.616203774136596554e-06, + 6.610846390193768337e-06, + 6.605478897399396054e-06, + 6.600101305726283844e-06, + 6.594713625162466342e-06, + 6.589315865711446703e-06, + 6.583908037391219966e-06, + 6.578490150235707083e-06, + 6.573062214293706294e-06, + 6.567624239629265820e-06, + 6.562176236321694027e-06, + 6.556718214464835215e-06, + 6.551250184168020832e-06, + 6.545772155556398974e-06, + 6.540284138768782072e-06, + 6.534786143959905928e-06, + 6.529278181299619109e-06, + 6.523760260971788575e-06, + 6.518232393176944118e-06, + 6.512694588128944441e-06, + 6.507146856057495387e-06, + 6.501589207207053030e-06, + 6.496021651837195524e-06, + 6.490444200221481300e-06, + 6.484856862649972380e-06, + 6.479259649425991089e-06, + 6.473652570868578985e-06, + 6.468035637311664234e-06, + 6.462408859102963849e-06, + 6.456772246606479052e-06, + 6.451125810200214215e-06, + 6.445469560276460612e-06, + 6.439803507242950930e-06, + 6.434127661522174863e-06, + 6.428442033550288136e-06, + 6.422746633779867052e-06, + 6.417041472676386533e-06, + 6.411326560720962813e-06, + 6.405601908409344618e-06, + 6.399867526250870471e-06, + 6.394123424770966593e-06, + 6.388369614508855677e-06, + 6.382606106017816080e-06, + 6.376832909866376987e-06, + 6.371050036637584035e-06, + 6.365257496928010824e-06, + 6.359455301350116210e-06, + 6.353643460530060652e-06, + 6.347821985108065358e-06, + 6.341990885739336395e-06, + 6.336150173093325231e-06, + 6.330299857853810048e-06, + 6.324439950719177806e-06, + 6.318570462401439991e-06, + 6.312691403627571769e-06, + 6.306802785138693762e-06, + 6.300904617690175376e-06, + 6.294996912051594996e-06, + 6.289079679007065246e-06, + 6.283152929354135232e-06, + 6.277216673905331298e-06, + 6.271270923487056729e-06, + 6.265315688939943268e-06, + 6.259350981118947680e-06, + 6.253376810892453049e-06, + 6.247393189143640126e-06, + 6.241400126769527637e-06, + 6.235397634681236561e-06, + 6.229385723803908813e-06, + 6.223364405076898674e-06, + 6.217333689452933381e-06, + 6.211293587899369277e-06, + 6.205244111397324448e-06, + 6.199185270941843899e-06, + 6.193117077541897007e-06, + 6.187039542220633328e-06, + 6.180952676014282301e-06, + 6.174856489973741434e-06, + 6.168750995163494645e-06, + 6.162636202661825712e-06, + 6.156512123561111346e-06, + 6.150378768966703957e-06, + 6.144236149998550333e-06, + 6.138084277790019344e-06, + 6.131923163488244149e-06, + 6.125752818254113718e-06, + 6.119573253262360931e-06, + 6.113384479700674880e-06, + 6.107186508771144222e-06, + 6.100979351689266142e-06, + 6.094763019684064095e-06, + 6.088537523998229260e-06, + 6.082302875888250135e-06, + 6.076059086623365606e-06, + 6.069806167487166685e-06, + 6.063544129776429298e-06, + 6.057272984801481898e-06, + 6.050992743886324052e-06, + 6.044703418367631173e-06, + 6.038405019596075046e-06, + 6.032097558936482226e-06, + 6.025781047765485210e-06, + 6.019455497474156716e-06, + 6.013120919466877195e-06, + 6.006777325160343803e-06, + 6.000424725986376624e-06, + 5.994063133388251015e-06, + 5.987692558823552108e-06, + 5.981313013763130416e-06, + 5.974924509690231089e-06, + 5.968527058101850853e-06, + 5.962120670508992973e-06, + 5.955705358434182902e-06, + 5.949281133414174554e-06, + 5.942848006998861016e-06, + 5.936405990750151386e-06, + 5.929955096244654172e-06, + 5.923495335071196330e-06, + 5.917026718831162929e-06, + 5.910549259139740592e-06, + 5.904062967625100109e-06, + 5.897567855927324097e-06, + 5.891063935701381773e-06, + 5.884551218613235998e-06, + 5.878029716342864639e-06, + 5.871499440583160275e-06, + 5.864960403038777382e-06, + 5.858412615428868256e-06, + 5.851856089484619834e-06, + 5.845290836949473080e-06, + 5.838716869580483318e-06, + 5.832134199147483363e-06, + 5.825542837431942571e-06, + 5.818942796230014460e-06, + 5.812334087348606478e-06, + 5.805716722608438639e-06, + 5.799090713842606957e-06, + 5.792456072896889221e-06, + 5.785812811629653520e-06, + 5.779160941912160630e-06, + 5.772500475627453556e-06, + 5.765831424671905906e-06, + 5.759153800954230867e-06, + 5.752467616395616724e-06, + 5.745772882929778535e-06, + 5.739069612503176661e-06, + 5.732357817073896143e-06, + 5.725637508613299264e-06, + 5.718908699104893067e-06, + 5.712171400544572449e-06, + 5.705425624940881052e-06, + 5.698671384313894024e-06, + 5.691908690696871427e-06, + 5.685137556135055453e-06, + 5.678357992686020244e-06, + 5.671570012419600746e-06, + 5.664773627418174769e-06, + 5.657968849775461046e-06, + 5.651155691598252264e-06, + 5.644334165005281733e-06, + 5.637504282127407193e-06, + 5.630666055107606580e-06, + 5.623819496101333775e-06, + 5.616964617275201473e-06, + 5.610101430808826866e-06, + 5.603229948893567023e-06, + 5.596350183732825514e-06, + 5.589462147542306522e-06, + 5.582565852548825609e-06, + 5.575661310992056298e-06, + 5.568748535123327281e-06, + 5.561827537205902797e-06, + 5.554898329514925025e-06, + 5.547960924337755440e-06, + 5.541015333972745772e-06, + 5.534061570730896493e-06, + 5.527099646934815816e-06, + 5.520129574918884014e-06, + 5.513151367029257663e-06, + 5.506165035624128829e-06, + 5.499170593072265630e-06, + 5.492168051756241129e-06, + 5.485157424068200707e-06, + 5.478138722413145164e-06, + 5.471111959207788073e-06, + 5.464077146879507151e-06, + 5.457034297867914658e-06, + 5.449983424625075085e-06, + 5.442924539612883591e-06, + 5.435857655305895085e-06, + 5.428782784190245961e-06, + 5.421699938762320861e-06, + 5.414609131532106932e-06, + 5.407510375018963741e-06, + 5.400403681754814045e-06, + 5.393289064283048581e-06, + 5.386166535157534191e-06, + 5.379036106944112220e-06, + 5.371897792220830606e-06, + 5.364751603575300288e-06, + 5.357597553607597143e-06, + 5.350435654929116796e-06, + 5.343265920161251553e-06, + 5.336088361938800559e-06, + 5.328902992905619437e-06, + 5.321709825717979616e-06, + 5.314508873043005559e-06, + 5.307300147559283780e-06, + 5.300083661955297524e-06, + 5.292859428932775093e-06, + 5.285627461202399619e-06, + 5.278387771487116730e-06, + 5.271140372520894494e-06, + 5.263885277047513011e-06, + 5.256622497823587467e-06, + 5.249352047615760228e-06, + 5.242073939201021012e-06, + 5.234788185368179883e-06, + 5.227494798917024451e-06, + 5.220193792656906176e-06, + 5.212885179410234378e-06, + 5.205568972008097922e-06, + 5.198245183293594908e-06, + 5.190913826120362218e-06, + 5.183574913352753398e-06, + 5.176228457865944530e-06, + 5.168874472546059600e-06, + 5.161512970289039704e-06, + 5.154143964002437914e-06, + 5.146767466604137715e-06, + 5.139383491022661325e-06, + 5.131992050197165464e-06, + 5.124593157077690373e-06, + 5.117186824623912145e-06, + 5.109773065806995178e-06, + 5.102351893608308076e-06, + 5.094923321019702325e-06, + 5.087487361043873123e-06, + 5.080044026692960935e-06, + 5.072593330990551336e-06, + 5.065135286970284180e-06, + 5.057669907676200886e-06, + 5.050197206162702086e-06, + 5.042717195494857641e-06, + 5.035229888747103899e-06, + 5.027735299005113949e-06, + 5.020233439364539776e-06, + 5.012724322931282461e-06, + 5.005207962821457458e-06, + 4.997684372161745262e-06, + 4.990153564087988722e-06, + 4.982615551747219146e-06, + 4.975070348296240911e-06, + 4.967517966902000762e-06, + 4.959958420741858022e-06, + 4.952391723002268303e-06, + 4.944817886880704570e-06, + 4.937236925584371353e-06, + 4.929648852330425818e-06, + 4.922053680346049766e-06, + 4.914451422868689343e-06, + 4.906842093144717577e-06, + 4.899225704431487580e-06, + 4.891602269995821451e-06, + 4.883971803114466815e-06, + 4.876334317074305204e-06, + 4.868689825171079807e-06, + 4.861038340710975187e-06, + 4.853379877010931533e-06, + 4.845714447395702912e-06, + 4.838042065201048044e-06, + 4.830362743772458903e-06, + 4.822676496464104471e-06, + 4.814983336640475670e-06, + 4.807283277676710629e-06, + 4.799576332955554680e-06, + 4.791862515870663784e-06, + 4.784141839825311116e-06, + 4.776414318230935248e-06, + 4.768679964510837449e-06, + 4.760938792095514532e-06, + 4.753190814426223170e-06, + 4.745436044953717816e-06, + 4.737674497137151256e-06, + 4.729906184445784766e-06, + 4.722131120359246458e-06, + 4.714349318364508221e-06, + 4.706560791959243356e-06, + 4.698765554650392554e-06, + 4.690963619952913671e-06, + 4.683155001393340964e-06, + 4.675339712505082361e-06, + 4.667517766832170971e-06, + 4.659689177927466835e-06, + 4.651853959353323538e-06, + 4.644012124679934801e-06, + 4.636163687488994515e-06, + 4.628308661368869492e-06, + 4.620447059918415355e-06, + 4.612578896745556911e-06, + 4.604704185465871906e-06, + 4.596822939705991868e-06, + 4.588935173100523987e-06, + 4.581040899292346728e-06, + 4.573140131934323384e-06, + 4.565232884687868042e-06, + 4.557319171223329294e-06, + 4.549399005220230794e-06, + 4.541472400365955813e-06, + 4.533539370357705581e-06, + 4.525599928901494707e-06, + 4.517654089710756960e-06, + 4.509701866509725781e-06, + 4.501743273030340069e-06, + 4.493778323012574523e-06, + 4.485807030206100676e-06, + 4.477829408368908774e-06, + 4.469845471267636420e-06, + 4.461855232677536388e-06, + 4.453858706382786641e-06, + 4.445855906175095262e-06, + 4.437846845855774844e-06, + 4.429831539234292364e-06, + 4.421810000128596139e-06, + 4.413782242365495300e-06, + 4.405748279779185104e-06, + 4.397708126213312848e-06, + 4.389661795519602290e-06, + 4.381609301558146720e-06, + 4.373550658197407264e-06, + 4.365485879314495799e-06, + 4.357414978793837483e-06, + 4.349337970529131638e-06, + 4.341254868422023601e-06, + 4.333165686382371541e-06, + 4.325070438328615766e-06, + 4.316969138186351470e-06, + 4.308861799890354837e-06, + 4.300748437383191368e-06, + 4.292629064615590265e-06, + 4.284503695546327543e-06, + 4.276372344142631762e-06, + 4.268235024378702559e-06, + 4.260091750237830779e-06, + 4.251942535710947502e-06, + 4.243787394796982341e-06, + 4.235626341502769421e-06, + 4.227459389843477670e-06, + 4.219286553841086161e-06, + 4.211107847526517790e-06, + 4.202923284938201008e-06, + 4.194732880122420500e-06, + 4.186536647133587385e-06, + 4.178334600032859397e-06, + 4.170126752889839190e-06, + 4.161913119782969901e-06, + 4.153693714796243580e-06, + 4.145468552022764657e-06, + 4.137237645563343867e-06, + 4.129001009525304782e-06, + 4.120758658024696262e-06, + 4.112510605184795744e-06, + 4.104256865136448904e-06, + 4.095997452018048484e-06, + 4.087732379975871407e-06, + 4.079461663162231400e-06, + 4.071185315739476989e-06, + 4.062903351874855092e-06, + 4.054615785744490380e-06, + 4.046322631531886027e-06, + 4.038023903426878473e-06, + 4.029719615627350970e-06, + 4.021409782339609667e-06, + 4.013094417775105589e-06, + 4.004773536154004886e-06, + 3.996447151703738707e-06, + 3.988115278657514967e-06, + 3.979777931258305329e-06, + 3.971435123753691011e-06, + 3.963086870399904823e-06, + 3.954733185459939747e-06, + 3.946374083204268912e-06, + 3.938009577908974499e-06, + 3.929639683859786395e-06, + 3.921264415346905973e-06, + 3.912883786668996467e-06, + 3.904497812131749788e-06, + 3.896106506046316129e-06, + 3.887709882733031754e-06, + 3.879307956518011387e-06, + 3.870900741733579350e-06, + 3.862488252719983112e-06, + 3.854070503823967729e-06, + 3.845647509399123981e-06, + 3.837219283806150947e-06, + 3.828785841411489740e-06, + 3.820347196589378415e-06, + 3.811903363720816890e-06, + 3.803454357192014756e-06, + 3.795000191398065291e-06, + 3.786540880739620421e-06, + 3.778076439623204980e-06, + 3.769606882463075516e-06, + 3.761132223679704527e-06, + 3.752652477700092175e-06, + 3.744167658957778135e-06, + 3.735677781893204556e-06, + 3.727182860952137188e-06, + 3.718682910587963386e-06, + 3.710177945260079353e-06, + 3.701667979434347120e-06, + 3.693153027583352042e-06, + 3.684633104184913715e-06, + 3.676108223724330186e-06, + 3.667578400692830430e-06, + 3.659043649587924592e-06, + 3.650503984913389168e-06, + 3.641959421179616407e-06, + 3.633409972902090492e-06, + 3.624855654603591528e-06, + 3.616296480812723817e-06, + 3.607732466064185217e-06, + 3.599163624899219878e-06, + 3.590589971863989402e-06, + 3.582011521511861100e-06, + 3.573428288401904084e-06, + 3.564840287099169214e-06, + 3.556247532174702648e-06, + 3.547650038205911763e-06, + 3.539047819775002800e-06, + 3.530440891470880759e-06, + 3.521829267889428924e-06, + 3.513212963630215170e-06, + 3.504591993300083809e-06, + 3.495966371511761797e-06, + 3.487336112882600042e-06, + 3.478701232036879031e-06, + 3.470061743604238002e-06, + 3.461417662220042561e-06, + 3.452769002525741280e-06, + 3.444115779167321558e-06, + 3.435458006797186222e-06, + 3.426795700074466504e-06, + 3.418128873661657203e-06, + 3.409457542228332199e-06, + 3.400781720449615129e-06, + 3.392101423005019379e-06, + 3.383416664580705850e-06, + 3.374727459867940935e-06, + 3.366033823563414576e-06, + 3.357335770369270340e-06, + 3.348633314993426439e-06, + 3.339926472147675838e-06, + 3.331215256551797328e-06, + 3.322499682928271312e-06, + 3.313779766006380715e-06, + 3.305055520520698183e-06, + 3.296326961209914211e-06, + 3.287594102818703583e-06, + 3.278856960098102725e-06, + 3.270115547802024584e-06, + 3.261369880691080022e-06, + 3.252619973531021815e-06, + 3.243865841091165359e-06, + 3.235107498148576400e-06, + 3.226344959482733460e-06, + 3.217578239879643141e-06, + 3.208807354130349353e-06, + 3.200032317029715275e-06, + 3.191253143378352053e-06, + 3.182469847982926694e-06, + 3.173682445652725656e-06, + 3.164890951203464376e-06, + 3.156095379455710096e-06, + 3.147295745233332638e-06, + 3.138492063367313515e-06, + 3.129684348692275210e-06, + 3.120872616046829308e-06, + 3.112056880275479354e-06, + 3.103237156227056386e-06, + 3.094413458755074686e-06, + 3.085585802718088383e-06, + 3.076754202978159168e-06, + 3.067918674403078911e-06, + 3.059079231865276141e-06, + 3.050235890240157129e-06, + 3.041388664410008174e-06, + 3.032537569260450764e-06, + 3.023682619680833759e-06, + 3.014823830566132009e-06, + 3.005961216815362831e-06, + 2.997094793331976486e-06, + 2.988224575024169588e-06, + 2.979350576803370178e-06, + 2.970472813586487872e-06, + 2.961591300294376497e-06, + 2.952706051852158922e-06, + 2.943817083189250360e-06, + 2.934924409239656516e-06, + 2.926028044940478153e-06, + 2.917128005234137945e-06, + 2.908224305066851153e-06, + 2.899316959388970372e-06, + 2.890405983154960965e-06, + 2.881491391323769099e-06, + 2.872573198857233983e-06, + 2.863651420722417208e-06, + 2.854726071890007357e-06, + 2.845797167334662214e-06, + 2.836864722035419565e-06, + 2.827928750974074294e-06, + 2.818989269137517454e-06, + 2.810046291516133265e-06, + 2.801099833104170109e-06, + 2.792149908899731640e-06, + 2.783196533905128724e-06, + 2.774239723125269654e-06, + 2.765279491570028030e-06, + 2.756315854252615608e-06, + 2.747348826189959232e-06, + 2.738378422402674997e-06, + 2.729404657915465084e-06, + 2.720427547755452497e-06, + 2.711447106954599760e-06, + 2.702463350548033490e-06, + 2.693476293574468758e-06, + 2.684485951076550869e-06, + 2.675492338099247693e-06, + 2.666495469691833413e-06, + 2.657495360908220989e-06, + 2.648492026803392762e-06, + 2.639485482437327295e-06, + 2.630475742873407376e-06, + 2.621462823177181657e-06, + 2.612446738418737616e-06, + 2.603427503671084995e-06, + 2.594405134010530611e-06, + 2.585379644517030723e-06, + 2.576351050272604963e-06, + 2.567319366363275615e-06, + 2.558284607879460219e-06, + 2.549246789912358126e-06, + 2.540205927557892588e-06, + 2.531162035915103941e-06, + 2.522115130084950202e-06, + 2.513065225172239153e-06, + 2.504012336285998071e-06, + 2.494956478535917035e-06, + 2.485897667036257563e-06, + 2.476835916904226303e-06, + 2.467771243258414384e-06, + 2.458703661223102025e-06, + 2.449633185922672366e-06, + 2.440559832485976217e-06, + 2.431483616044695599e-06, + 2.422404551731740306e-06, + 2.413322654685221337e-06, + 2.404237940044780706e-06, + 2.395150422952058150e-06, + 2.386060118552557573e-06, + 2.376967041994509902e-06, + 2.367871208427201465e-06, + 2.358772633005356544e-06, + 2.349671330883518153e-06, + 2.340567317220418734e-06, + 2.331460607176982848e-06, + 2.322351215916634227e-06, + 2.313239158605348291e-06, + 2.304124450411979525e-06, + 2.295007106506649573e-06, + 2.285887142063116394e-06, + 2.276764572257569354e-06, + 2.267639412266960995e-06, + 2.258511677273055008e-06, + 2.249381382458723848e-06, + 2.240248543008359548e-06, + 2.231113174109846883e-06, + 2.221975290952951039e-06, + 2.212834908729665321e-06, + 2.203692042634591900e-06, + 2.194546707863353617e-06, + 2.185398919614905121e-06, + 2.176248693089962885e-06, + 2.167096043491358005e-06, + 2.157940986024006120e-06, + 2.148783535895289434e-06, + 2.139623708313436332e-06, + 2.130461518489880798e-06, + 2.121296981637666179e-06, + 2.112130112971785267e-06, + 2.102960927709178606e-06, + 2.093789441069099142e-06, + 2.084615668271494809e-06, + 2.075439624539370908e-06, + 2.066261325097176507e-06, + 2.057080785171188571e-06, + 2.047898019989868988e-06, + 2.038713044782217933e-06, + 2.029525874780211634e-06, + 2.020336525217136676e-06, + 2.011145011327942795e-06, + 2.001951348349274217e-06, + 1.992755551519810163e-06, + 1.983557636078625419e-06, + 1.974357617267607768e-06, + 1.965155510329795263e-06, + 1.955951330509773487e-06, + 1.946745093053640822e-06, + 1.937536813209392584e-06, + 1.928326506225260830e-06, + 1.919114187352156362e-06, + 1.909899871841982703e-06, + 1.900683574948029336e-06, + 1.891465311925368956e-06, + 1.882245098029192424e-06, + 1.873022948516807332e-06, + 1.863798878648038021e-06, + 1.854572903681536538e-06, + 1.845345038878821078e-06, + 1.836115299502612199e-06, + 1.826883700815613940e-06, + 1.817650258082903730e-06, + 1.808414986570298879e-06, + 1.799177901544727157e-06, + 1.789939018274613677e-06, + 1.780698352028226428e-06, + 1.771455918075687553e-06, + 1.762211731689350492e-06, + 1.752965808140118566e-06, + 1.743718162701486167e-06, + 1.734468810647888319e-06, + 1.725217767253443890e-06, + 1.715965047793990380e-06, + 1.706710667547439245e-06, + 1.697454641790104654e-06, + 1.688196985800733237e-06, + 1.678937714858866570e-06, + 1.669676844243180981e-06, + 1.660414389235941891e-06, + 1.651150365117281041e-06, + 1.641884787169640036e-06, + 1.632617670676135139e-06, + 1.623349030918879304e-06, + 1.614078883183048356e-06, + 1.604807242753191103e-06, + 1.595534124913601397e-06, + 1.586259544950319885e-06, + 1.576983518149928888e-06, + 1.567706059797841613e-06, + 1.558427185182809210e-06, + 1.549146909591153753e-06, + 1.539865248311247978e-06, + 1.530582216631448745e-06, + 1.521297829840462734e-06, + 1.512012103227353017e-06, + 1.502725052081899888e-06, + 1.493436691692932639e-06, + 1.484147037350793359e-06, + 1.474856104346045849e-06, + 1.465563907967836191e-06, + 1.456270463507957653e-06, + 1.446975786257132644e-06, + 1.437679891505413570e-06, + 1.428382794544192206e-06, + 1.419084510664530620e-06, + 1.409785055157566057e-06, + 1.400484443314882991e-06, + 1.391182690426847018e-06, + 1.381879811785036686e-06, + 1.372575822681014024e-06, + 1.363270738404622644e-06, + 1.353964574248085049e-06, + 1.344657345502290514e-06, + 1.335349067457166929e-06, + 1.326039755403707118e-06, + 1.316729424632318394e-06, + 1.307418090433192710e-06, + 1.298105768096290569e-06, + 1.288792472911716680e-06, + 1.279478220168063375e-06, + 1.270163025154845618e-06, + 1.260846903160831075e-06, + 1.251529869474428274e-06, + 1.242211939384073905e-06, + 1.232893128176563106e-06, + 1.223573451139486807e-06, + 1.214252923559562431e-06, + 1.204931560723034548e-06, + 1.195609377915628071e-06, + 1.186286390422955683e-06, + 1.176962613528819531e-06, + 1.167638062517697276e-06, + 1.158312752673029805e-06, + 1.148986699277623370e-06, + 1.139659917614054039e-06, + 1.130332422962961352e-06, + 1.121004230605521233e-06, + 1.111675355821769287e-06, + 1.102345813890970955e-06, + 1.093015620091625959e-06, + 1.083684789701831682e-06, + 1.074353337997606464e-06, + 1.065021280254952763e-06, + 1.055688631750223920e-06, + 1.046355407756388109e-06, + 1.037021623547131577e-06, + 1.027687294395194435e-06, + 1.018352435571090367e-06, + 1.009017062345564933e-06, + 9.996811899879258541e-07, + 9.903448337664199429e-07, + 9.810080089486348087e-07, + 9.716707307998035210e-07, + 9.623330145848677697e-07, + 9.529948755688497130e-07, + 9.436563290131133855e-07, + 9.343173901794682553e-07, + 9.249780743284984515e-07, + 9.156383967178874388e-07, + 9.062983726069284680e-07, + 8.969580172507138241e-07, + 8.876173459046795817e-07, + 8.782763738224738347e-07, + 8.689351162567960000e-07, + 8.595935884572878116e-07, + 8.502518056750590173e-07, + 8.409097831568699568e-07, + 8.315675361496641404e-07, + 8.222250798988861480e-07, + 8.128824296467950803e-07, + 8.035396006365889737e-07, + 7.941966081086484217e-07, + 7.848534673009245153e-07, + 7.755101934509878160e-07, + 7.661668017947651120e-07, + 7.568233075648487404e-07, + 7.474797259950359426e-07, + 7.381360723145010662e-07, + 7.287923617523272966e-07, + 7.194486095358300614e-07, + 7.101048308888673060e-07, + 7.007610410359664489e-07, + 6.914172551985636623e-07, + 6.820734885953972124e-07, + 6.727297564445563264e-07, + 6.633860739622108549e-07, + 6.540424563609232411e-07, + 6.446989188537853236e-07, + 6.353554766506439579e-07, + 6.260121449585007101e-07, + 6.166689389835637938e-07, + 6.073258739295591927e-07, + 5.979829649981165898e-07, + 5.886402273891711786e-07, + 5.792976762992703387e-07, + 5.699553269240443245e-07, + 5.606131944569307399e-07, + 5.512712940874946600e-07, + 5.419296410055568579e-07, + 5.325882503974255671e-07, + 5.232471374462971278e-07, + 5.139063173342956424e-07, + 5.045658052407981796e-07, + 4.952256163428194333e-07, + 4.858857658154038985e-07, + 4.765462688299466289e-07, + 4.672071405566459267e-07, + 4.578683961628319872e-07, + 4.485300508133527232e-07, + 4.391921196705447003e-07, + 4.298546178946320899e-07, + 4.205175606420344032e-07, + 4.111809630678385569e-07, + 4.018448403241130657e-07, + 3.925092075602934424e-07, + 3.831740799231618689e-07, + 3.738394725572410672e-07, + 3.645054006031028265e-07, + 3.551718791998392757e-07, + 3.458389234833739521e-07, + 3.365065485868601717e-07, + 3.271747696410620885e-07, + 3.178436017726740745e-07, + 3.085130601067899804e-07, + 2.991831597652145218e-07, + 2.898539158668571499e-07, + 2.805253435277012937e-07, + 2.711974578612060649e-07, + 2.618702739766112925e-07, + 2.525438069814085295e-07, + 2.432180719796557221e-07, + 2.338930840723692533e-07, + 2.245688583574962823e-07, + 2.152454099303107591e-07, + 2.059227538817218989e-07, + 1.966009053007488161e-07, + 1.872798792728286551e-07, + 1.779596908802119959e-07, + 1.686403552023499745e-07, + 1.593218873142136638e-07, + 1.500043022883433375e-07, + 1.406876151952385287e-07, + 1.313718410996005386e-07, + 1.220569950644567993e-07, + 1.127430921494775804e-07, + 1.034301474092905529e-07, + 9.411817589802411460e-08, + 8.480719266347038053e-08, + 7.549721275162828368e-08, + 6.618825120460313189e-08, + 5.688032306141365154e-08, + 4.757344335589133263e-08, + 3.826762712122284810e-08, + 2.896288938411492327e-08, + 1.965924516933608014e-08, + 1.035670949803177310e-08, + 1.055297386041167377e-09, +-8.244976151977802297e-09, +-1.754409610630692526e-08, +-2.684204747177637912e-08, +-3.613881524571470320e-08, +-4.543438442921748683e-08, +-5.472874002882995394e-08, +-6.402186705200886498e-08, +-7.331375051295383247e-08, +-8.260437542806758179e-08, +-9.189372681763967399e-08, +-1.011817897075291764e-07, +-1.104685491250424844e-07, +-1.197539901026879664e-07, +-1.290380976777857075e-07, +-1.383208568904182845e-07, +-1.476022527847002043e-07, +-1.568822704104560080e-07, +-1.661608948191035321e-07, +-1.754381110674046764e-07, +-1.847139042170768540e-07, +-1.939882593327439392e-07, +-2.032611614836165163e-07, +-2.125325957431052087e-07, +-2.218025471884265179e-07, +-2.310710009022836276e-07, +-2.403379419704067261e-07, +-2.496033554832348432e-07, +-2.588672265355202065e-07, +-2.681295402263568812e-07, +-2.773902816587902356e-07, +-2.866494359414947542e-07, +-2.959069881863128775e-07, +-3.051629235099384276e-07, +-3.144172270335235840e-07, +-3.236698838822896199e-07, +-3.329208791872058270e-07, +-3.421701980825287788e-07, +-3.514178257074858617e-07, +-3.606637472058792870e-07, +-3.699079477261156314e-07, +-3.791504124208069370e-07, +-3.883911264484612306e-07, +-3.976300749710141108e-07, +-4.068672431555103731e-07, +-4.161026161737183449e-07, +-4.253361792021445504e-07, +-4.345679174216516452e-07, +-4.437978160191308832e-07, +-4.530258601850483147e-07, +-4.622520351151210653e-07, +-4.714763260099265883e-07, +-4.806987180745128710e-07, +-4.899191965200777307e-07, +-4.991377465615092954e-07, +-5.083543534190621230e-07, +-5.175690023179746079e-07, +-5.267816784884815796e-07, +-5.359923671654340916e-07, +-5.452010535899676524e-07, +-5.544077230070558885e-07, +-5.636123606671767641e-07, +-5.728149518259314163e-07, +-5.820154817440602489e-07, +-5.912139356870607084e-07, +-6.004102989268545628e-07, +-6.096045567393371176e-07, +-6.187966944060598464e-07, +-6.279866972138259333e-07, +-6.371745504543162014e-07, +-6.463602394257469684e-07, +-6.555437494308460611e-07, +-6.647250657764576748e-07, +-6.739041737772690004e-07, +-6.830810587517236081e-07, +-6.922557060236898909e-07, +-7.014281009241215661e-07, +-7.105982287865717897e-07, +-7.197660749529573207e-07, +-7.289316247690681880e-07, +-7.380948635862333809e-07, +-7.472557767625800691e-07, +-7.564143496609942653e-07, +-7.655705676487442128e-07, +-7.747244161011907080e-07, +-7.838758803977053538e-07, +-7.930249459233445092e-07, +-8.021715980704993089e-07, +-8.113158222348288466e-07, +-8.204576038189692267e-07, +-8.295969282321500693e-07, +-8.387337808881576087e-07, +-8.478681472066057714e-07, +-8.570000126145748679e-07, +-8.661293625421513284e-07, +-8.752561824281704806e-07, +-8.843804577157335219e-07, +-8.935021738538849622e-07, +-9.026213162992552327e-07, +-9.117378705119978922e-07, +-9.208518219594923257e-07, +-9.299631561159688267e-07, +-9.390718584604626950e-07, +-9.481779144780959029e-07, +-9.572813096617091166e-07, +-9.663820295074012203e-07, +-9.754800595202660587e-07, +-9.845753852099276205e-07, +-9.936679920926051047e-07, +-1.002757865690721168e-06, +-1.011844991532932841e-06, +-1.020929355153734058e-06, +-1.030010942095129608e-06, +-1.039089737904192499e-06, +-1.048165728134727958e-06, +-1.057238898346877656e-06, +-1.066309234107162477e-06, +-1.075376720988076796e-06, +-1.084441344569750564e-06, +-1.093503090437536964e-06, +-1.102561944183641036e-06, +-1.111617891406753768e-06, +-1.120670917711666898e-06, +-1.129721008710911296e-06, +-1.138768150022350114e-06, +-1.147812327270823303e-06, +-1.156853526087767296e-06, +-1.165891732111238087e-06, +-1.174926930985513550e-06, +-1.183959108362768027e-06, +-1.192988249900621220e-06, +-1.202014341263827389e-06, +-1.211037368123856286e-06, +-1.220057316158934230e-06, +-1.229074171053658925e-06, +-1.238087918500638674e-06, +-1.247098544198087022e-06, +-1.256106033851460917e-06, +-1.265110373173089919e-06, +-1.274111547881777251e-06, +-1.283109543704455110e-06, +-1.292104346373774012e-06, +-1.301095941629747943e-06, +-1.310084315219348206e-06, +-1.319069452896571818e-06, +-1.328051340422012700e-06, +-1.337029963564531604e-06, +-1.346005308098844398e-06, +-1.354977359807147095e-06, +-1.363946104478766669e-06, +-1.372911527909739230e-06, +-1.381873615904486513e-06, +-1.390832354273782790e-06, +-1.399787728834406737e-06, +-1.408739725412768640e-06, +-1.417688329840915157e-06, +-1.426633527958168322e-06, +-1.435575305612332145e-06, +-1.444513648657726861e-06, +-1.453448542954794636e-06, +-1.462379974373747314e-06, +-1.471307928790566514e-06, +-1.480232392088634595e-06, +-1.489153350160363288e-06, +-1.498070788902798016e-06, +-1.506984694223257231e-06, +-1.515895052034944780e-06, +-1.524801848258571341e-06, +-1.533705068823588336e-06, +-1.542604699666198250e-06, +-1.551500726728967966e-06, +-1.560393135964487302e-06, +-1.569281913331343286e-06, +-1.578167044795777793e-06, +-1.587048516333298601e-06, +-1.595926313924287530e-06, +-1.604800423559642738e-06, +-1.613670831236391086e-06, +-1.622537522959717850e-06, +-1.631400484742170287e-06, +-1.640259702605699208e-06, +-1.649115162577273454e-06, +-1.657966850694496155e-06, +-1.666814753001228533e-06, +-1.675658855549231661e-06, +-1.684499144399748724e-06, +-1.693335605619570971e-06, +-1.702168225284622573e-06, +-1.710996989479601058e-06, +-1.719821884295999908e-06, +-1.728642895833327020e-06, +-1.737460010200713435e-06, +-1.746273213512559582e-06, +-1.755082491894144126e-06, +-1.763887831477236965e-06, +-1.772689218402135293e-06, +-1.781486638817281795e-06, +-1.790280078879279471e-06, +-1.799069524752517884e-06, +-1.807854962610801578e-06, +-1.816636378634949804e-06, +-1.825413759014448862e-06, +-1.834187089947055485e-06, +-1.842956357638812503e-06, +-1.851721548303683140e-06, +-1.860482648165161013e-06, +-1.869239643453915589e-06, +-1.877992520409371903e-06, +-1.886741265279375555e-06, +-1.895485864319802868e-06, +-1.904226303796136149e-06, +-1.912962569981156591e-06, +-1.921694649156527587e-06, +-1.930422527612416526e-06, +-1.939146191647508563e-06, +-1.947865627568669919e-06, +-1.956580821692506002e-06, +-1.965291760343030367e-06, +-1.973998429853277049e-06, +-1.982700816564902877e-06, +-1.991398906828237452e-06, +-2.000092687001874025e-06, +-2.008782143454303432e-06, +-2.017467262561559756e-06, +-2.026148030708795816e-06, +-2.034824434289931645e-06, +-2.043496459707291113e-06, +-2.052164093373164704e-06, +-2.060827321707505585e-06, +-2.069486131139497888e-06, +-2.078140508107195449e-06, +-2.086790439057547225e-06, +-2.095435910446013154e-06, +-2.104076908738159553e-06, +-2.112713420407340356e-06, +-2.121345431936258627e-06, +-2.129972929816629009e-06, +-2.138595900548774120e-06, +-2.147214330643238996e-06, +-2.155828206618837407e-06, +-2.164437515002289751e-06, +-2.173042242331759845e-06, +-2.181642375152967459e-06, +-2.190237900020769310e-06, +-2.198828803500363963e-06, +-2.207415072165343657e-06, +-2.215996692597342360e-06, +-2.224573651389538253e-06, +-2.233145935142818364e-06, +-2.241713530467320592e-06, +-2.250276423984020620e-06, +-2.258834602320491673e-06, +-2.267388052116352632e-06, +-2.275936760019008302e-06, +-2.284480712685237182e-06, +-2.293019896782367138e-06, +-2.301554298986367894e-06, +-2.310083905981467744e-06, +-2.318608704463675091e-06, +-2.327128681136911322e-06, +-2.335643822714610426e-06, +-2.344154115921246197e-06, +-2.352659547488125443e-06, +-2.361160104158815351e-06, +-2.369655772684907050e-06, +-2.378146539827976918e-06, +-2.386632392358822558e-06, +-2.395113317059436381e-06, +-2.403589300718751389e-06, +-2.412060330138070652e-06, +-2.420526392126863484e-06, +-2.428987473504318056e-06, +-2.437443561100879183e-06, +-2.445894641754465898e-06, +-2.454340702313904479e-06, +-2.462781729638608691e-06, +-2.471217710596646435e-06, +-2.479648632066307182e-06, +-2.488074480935742407e-06, +-2.496495244102586966e-06, +-2.504910908475538392e-06, +-2.513321460972053804e-06, +-2.521726888519539573e-06, +-2.530127178056884449e-06, +-2.538522316530661886e-06, +-2.546912290898592295e-06, +-2.555297088129173308e-06, +-2.563676695199798945e-06, +-2.572051099098303331e-06, +-2.580420286822619763e-06, +-2.588784245380739633e-06, +-2.597142961790433751e-06, +-2.605496423080732536e-06, +-2.613844616289674178e-06, +-2.622187528465881392e-06, +-2.630525146668158652e-06, +-2.638857457965145756e-06, +-2.647184449436878058e-06, +-2.655506108172486775e-06, +-2.663822421271791837e-06, +-2.672133375844871160e-06, +-2.680438959012151715e-06, +-2.688739157904005905e-06, +-2.697033959662293598e-06, +-2.705323351438130611e-06, +-2.713607320393403635e-06, +-2.721885853700401771e-06, +-2.730158938541490848e-06, +-2.738426562110602929e-06, +-2.746688711611038262e-06, +-2.754945374256936152e-06, +-2.763196537272985277e-06, +-2.771442187894386416e-06, +-2.779682313366525072e-06, +-2.787916900946483003e-06, +-2.796145937900804597e-06, +-2.804369411507027879e-06, +-2.812587309053320718e-06, +-2.820799617838492255e-06, +-2.829006325171655365e-06, +-2.837207418373743690e-06, +-2.845402884775255569e-06, +-2.853592711717803683e-06, +-2.861776886553748292e-06, +-2.869955396645850797e-06, +-2.878128229368740374e-06, +-2.886295372107166554e-06, +-2.894456812255536310e-06, +-2.902612537221347511e-06, +-2.910762534421480610e-06, +-2.918906791283685610e-06, +-2.927045295247744194e-06, +-2.935178033763223816e-06, +-2.943304994291019301e-06, +-2.951426164302986928e-06, +-2.959541531281934690e-06, +-2.967651082721338534e-06, +-2.975754806127120711e-06, +-2.983852689013685234e-06, +-2.991944718909074621e-06, +-3.000030883350904552e-06, +-3.008111169887902935e-06, +-3.016185566081017398e-06, +-3.024254059501563253e-06, +-3.032316637730923644e-06, +-3.040373288363844507e-06, +-3.048423999004806307e-06, +-3.056468757269457211e-06, +-3.064507550786169093e-06, +-3.072540367191982364e-06, +-3.080567194137766516e-06, +-3.088588019284193330e-06, +-3.096602830303248830e-06, +-3.104611614879320027e-06, +-3.112614360707407253e-06, +-3.120611055492772645e-06, +-3.128601686954241032e-06, +-3.136586242820573362e-06, +-3.144564710831924872e-06, +-3.152537078741348143e-06, +-3.160503334311176699e-06, +-3.168463465316271257e-06, +-3.176417459543722418e-06, +-3.184365304791034631e-06, +-3.192306988867596640e-06, +-3.200242499594337166e-06, +-3.208171824803381011e-06, +-3.216094952339505110e-06, +-3.224011870058026028e-06, +-3.231922565825847315e-06, +-3.239827027522953678e-06, +-3.247725243038837765e-06, +-3.255617200275716357e-06, +-3.263502887148234747e-06, +-3.271382291581654092e-06, +-3.279255401513308309e-06, +-3.287122204892286864e-06, +-3.294982689679097226e-06, +-3.302836843847076024e-06, +-3.310684655380283325e-06, +-3.318526112274975200e-06, +-3.326361202539204771e-06, +-3.334189914192911998e-06, +-3.342012235267528111e-06, +-3.349828153807451994e-06, +-3.357637657867913963e-06, +-3.365440735516423347e-06, +-3.373237374832442380e-06, +-3.381027563907374345e-06, +-3.388811290844259486e-06, +-3.396588543759187013e-06, +-3.404359310779207165e-06, +-3.412123580043747875e-06, +-3.419881339704297131e-06, +-3.427632577924032821e-06, +-3.435377282879302926e-06, +-3.443115442757496502e-06, +-3.450847045758442977e-06, +-3.458572080094169478e-06, +-3.466290533988788596e-06, +-3.474002395678303149e-06, +-3.481707653411908492e-06, +-3.489406295449980817e-06, +-3.497098310065474752e-06, +-3.504783685543580741e-06, +-3.512462410181753843e-06, +-3.520134472289383386e-06, +-3.527799860189188031e-06, +-3.535458562215172732e-06, +-3.543110566714026761e-06, +-3.550755862044769646e-06, +-3.558394436578437351e-06, +-3.566026278699519263e-06, +-3.573651376804187046e-06, +-3.581269719300007925e-06, +-3.588881294609055410e-06, +-3.596486091164478811e-06, +-3.604084097411890684e-06, +-3.611675301810439595e-06, +-3.619259692830728958e-06, +-3.626837258956252760e-06, +-3.634407988683011427e-06, +-3.641971870519600769e-06, +-3.649528892986823183e-06, +-3.657079044619463042e-06, +-3.664622313962494947e-06, +-3.672158689575932572e-06, +-3.679688160031056820e-06, +-3.687210713911817243e-06, +-3.694726339815845941e-06, +-3.702235026352815586e-06, +-3.709736762144073506e-06, +-3.717231535825728272e-06, +-3.724719336045290789e-06, +-3.732200151463029125e-06, +-3.739673970753347480e-06, +-3.747140782601056280e-06, +-3.754600575706194753e-06, +-3.762053338780240462e-06, +-3.769499060547520459e-06, +-3.776937729746248902e-06, +-3.784369335126860516e-06, +-3.791793865451633665e-06, +-3.799211309497827761e-06, +-3.806621656054250661e-06, +-3.814024893922687194e-06, +-3.821421011919218409e-06, +-3.828809998870878338e-06, +-3.836191843618721950e-06, +-3.843566535017475325e-06, +-3.850934061933923752e-06, +-3.858294413248180583e-06, +-3.865647577853470392e-06, +-3.872993544655735955e-06, +-3.880332302575045167e-06, +-3.887663840543538685e-06, +-3.894988147506513282e-06, +-3.902305212423763546e-06, +-3.909615024266186126e-06, +-3.916917572018917142e-06, +-3.924212844680941703e-06, +-3.931500831263437110e-06, +-3.938781520791141661e-06, +-3.946054902302062426e-06, +-3.953320964847095775e-06, +-3.960579697491470723e-06, +-3.967831089312652521e-06, +-3.975075129401781770e-06, +-3.982311806863301720e-06, +-3.989541110815029427e-06, +-3.996763030387774584e-06, +-4.003977554726736281e-06, +-4.011184672989483676e-06, +-4.018384374347358681e-06, +-4.025576647985101580e-06, +-4.032761483100884900e-06, +-4.039938868906036442e-06, +-4.047108794626301349e-06, +-4.054271249499949846e-06, +-4.061426222779067261e-06, +-4.068573703729276205e-06, +-4.075713681629367262e-06, +-4.082846145772710148e-06, +-4.089971085465225912e-06, +-4.097088490026743038e-06, +-4.104198348790703523e-06, +-4.111300651104153561e-06, +-4.118395386327431833e-06, +-4.125482543835493421e-06, +-4.132562113016023465e-06, +-4.139634083270624703e-06, +-4.146698444014676018e-06, +-4.153755184677191829e-06, +-4.160804294700638285e-06, +-4.167845763542147062e-06, +-4.174879580671653589e-06, +-4.181905735573174368e-06, +-4.188924217744534234e-06, +-4.195935016696997892e-06, +-4.202938121956654820e-06, +-4.209933523062718422e-06, +-4.216921209567341380e-06, +-4.223901171038415939e-06, +-4.230873397056481395e-06, +-4.237837877215907398e-06, +-4.244794601125990859e-06, +-4.251743558408944248e-06, +-4.258684738701238986e-06, +-4.265618131653335246e-06, +-4.272543726929288924e-06, +-4.279461514208144165e-06, +-4.286371483182269791e-06, +-4.293273623557101798e-06, +-4.300167925054035132e-06, +-4.307054377407199879e-06, +-4.313932970364804660e-06, +-4.320803693690068366e-06, +-4.327666537159679406e-06, +-4.334521490563456047e-06, +-4.341368543707267831e-06, +-4.348207686409841412e-06, +-4.355038908503995531e-06, +-4.361862199838054715e-06, +-4.368677550272262939e-06, +-4.375484949683275440e-06, +-4.382284387960680803e-06, +-4.389075855008313010e-06, +-4.395859340745488114e-06, +-4.402634835103882073e-06, +-4.409402328030379318e-06, +-4.416161809486783923e-06, +-4.422913269448217010e-06, +-4.429656697904162842e-06, +-4.436392084859633488e-06, +-4.443119420331828974e-06, +-4.449838694354457998e-06, +-4.456549896974346413e-06, +-4.463253018253050818e-06, +-4.469948048266484175e-06, +-4.476634977104986961e-06, +-4.483313794872986653e-06, +-4.489984491690352989e-06, +-4.496647057690406589e-06, +-4.503301483020965889e-06, +-4.509947757845551623e-06, +-4.516585872340343431e-06, +-4.523215816696966598e-06, +-4.529837581122137998e-06, +-4.536451155836272718e-06, +-4.543056531074560645e-06, +-4.549653697086814839e-06, +-4.556242644137103079e-06, +-4.562823362505007400e-06, +-4.569395842483797888e-06, +-4.575960074381389831e-06, +-4.582516048521519396e-06, +-4.589063755240783252e-06, +-4.595603184891342299e-06, +-4.602134327840634523e-06, +-4.608657174469898617e-06, +-4.615171715175347970e-06, +-4.621677940367968227e-06, +-4.628175840473448675e-06, +-4.634665405931931526e-06, +-4.641146627199225714e-06, +-4.647619494745012031e-06, +-4.654083999054050148e-06, +-4.660540130625928744e-06, +-4.666987879974763959e-06, +-4.673427237630326797e-06, +-4.679858194136417666e-06, +-4.686280740051967526e-06, +-4.692694865950765142e-06, +-4.699100562421500282e-06, +-4.705497820067458784e-06, +-4.711886629507721113e-06, +-4.718266981375421702e-06, +-4.724638866318892449e-06, +-4.731002275001487383e-06, +-4.737357198101171002e-06, +-4.743703626311788829e-06, +-4.750041550341301338e-06, +-4.756370960912953718e-06, +-4.762691848765041237e-06, +-4.769004204650846562e-06, +-4.775308019338448336e-06, +-4.781603283611852806e-06, +-4.787889988269528461e-06, +-4.794168124124179873e-06, +-4.800437682005343004e-06, +-4.806698652756511226e-06, +-4.812951027236320321e-06, +-4.819194796319342145e-06, +-4.825429950894525246e-06, +-4.831656481866232479e-06, +-4.837874380153954705e-06, +-4.844083636692162565e-06, +-4.850284242431345785e-06, +-4.856476188336651151e-06, +-4.862659465387564868e-06, +-4.868834064580611209e-06, +-4.874999976926314209e-06, +-4.881157193450546139e-06, +-4.887305705195282213e-06, +-4.893445503216937016e-06, +-4.899576578587540186e-06, +-4.905698922394388283e-06, +-4.911812525740143043e-06, +-4.917917379742553553e-06, +-4.924013475535780166e-06, +-4.930100804267437504e-06, +-4.936179357102472177e-06, +-4.942249125220093984e-06, +-4.948310099814932111e-06, +-4.954362272098143899e-06, +-4.960405633294624715e-06, +-4.966440174645601568e-06, +-4.972465887408251099e-06, +-4.978482762854428182e-06, +-4.984490792271444349e-06, +-4.990489966963223141e-06, +-4.996480278247245708e-06, +-5.002461717458447163e-06, +-5.008434275946218929e-06, +-5.014397945075703853e-06, +-5.020352716227671694e-06, +-5.026298580798386985e-06, +-5.032235530199486211e-06, +-5.038163555858947666e-06, +-5.044082649219580342e-06, +-5.049992801739818450e-06, +-5.055894004894768347e-06, +-5.061786250173556482e-06, +-5.067669529081784096e-06, +-5.073543833141248543e-06, +-5.079409153888627854e-06, +-5.085265482876503953e-06, +-5.091112811673222890e-06, +-5.096951131862533164e-06, +-5.102780435044706346e-06, +-5.108600712834970914e-06, +-5.114411956864256797e-06, +-5.120214158780365125e-06, +-5.126007310245229772e-06, +-5.131791402937378838e-06, +-5.137566428551663591e-06, +-5.143332378797939642e-06, +-5.149089245402148605e-06, +-5.154837020106037729e-06, +-5.160575694667202249e-06, +-5.166305260858830430e-06, +-5.172025710470752193e-06, +-5.177737035307899208e-06, +-5.183439227191323032e-06, +-5.189132277957968098e-06, +-5.194816179460446410e-06, +-5.200490923568079391e-06, +-5.206156502165278353e-06, +-5.211812907152699008e-06, +-5.217460130446983968e-06, +-5.223098163980645855e-06, +-5.228726999701979206e-06, +-5.234346629576023555e-06, +-5.239957045583024370e-06, +-5.245558239719535046e-06, +-5.251150203998069618e-06, +-5.256732930446932511e-06, +-5.262306411111292573e-06, +-5.267870638051513579e-06, +-5.273425603344339226e-06, +-5.278971299082556015e-06, +-5.284507717375041533e-06, +-5.290034850346547609e-06, +-5.295552690138614267e-06, +-5.301061228908488910e-06, +-5.306560458828700262e-06, +-5.312050372089489352e-06, +-5.317530960896225218e-06, +-5.323002217470414571e-06, +-5.328464134050503933e-06, +-5.333916702890347355e-06, +-5.339359916260304171e-06, +-5.344793766446865460e-06, +-5.350218245752510046e-06, +-5.355633346496705694e-06, +-5.361039061014627547e-06, +-5.366435381656953992e-06, +-5.371822300792131628e-06, +-5.377199810803857031e-06, +-5.382567904092125391e-06, +-5.387926573074186800e-06, +-5.393275810181863709e-06, +-5.398615607864995806e-06, +-5.403945958588801508e-06, +-5.409266854835040092e-06, +-5.414578289101530580e-06, +-5.419880253903510380e-06, +-5.425172741770750289e-06, +-5.430455745251217068e-06, +-5.435729256908179129e-06, +-5.440993269321344096e-06, +-5.446247775087804100e-06, +-5.451492766819553122e-06, +-5.456728237145750266e-06, +-5.461954178712504611e-06, +-5.467170584181593653e-06, +-5.472377446231273913e-06, +-5.477574757557216909e-06, +-5.482762510869838463e-06, +-5.487940698897772381e-06, +-5.493109314385143854e-06, +-5.498268350092610463e-06, +-5.503417798798260031e-06, +-5.508557653295268582e-06, +-5.513687906394074669e-06, +-5.518808550922138821e-06, +-5.523919579722687388e-06, +-5.529020985655568052e-06, +-5.534112761598153602e-06, +-5.539194900442930441e-06, +-5.544267395099666980e-06, +-5.549330238495256946e-06, +-5.554383423572434428e-06, +-5.559426943290825044e-06, +-5.564460790626626616e-06, +-5.569484958572482953e-06, +-5.574499440138364772e-06, +-5.579504228350212751e-06, +-5.584499316250568564e-06, +-5.589484696899644687e-06, +-5.594460363372886637e-06, +-5.599426308763140529e-06, +-5.604382526180429459e-06, +-5.609329008750783751e-06, +-5.614265749617164224e-06, +-5.619192741939270762e-06, +-5.624109978893278888e-06, +-5.629017453672849424e-06, +-5.633915159487661434e-06, +-5.638803089564395625e-06, +-5.643681237146517513e-06, +-5.648549595494229980e-06, +-5.653408157884364862e-06, +-5.658256917611202873e-06, +-5.663095867985095483e-06, +-5.667925002333513545e-06, +-5.672744314000702553e-06, +-5.677553796347748708e-06, +-5.682353442752380717e-06, +-5.687143246609826987e-06, +-5.691923201331507806e-06, +-5.696693300345925574e-06, +-5.701453537098464909e-06, +-5.706203905051152929e-06, +-5.710944397683614708e-06, +-5.715675008491703628e-06, +-5.720395730988379743e-06, +-5.725106558703527678e-06, +-5.729807485183975254e-06, +-5.734498503993246161e-06, +-5.739179608712476442e-06, +-5.743850792939106679e-06, +-5.748512050287712086e-06, +-5.753163374389919492e-06, +-5.757804758894245567e-06, +-5.762436197466027361e-06, +-5.767057683788236300e-06, +-5.771669211560182231e-06, +-5.776270774498404499e-06, +-5.780862366336478820e-06, +-5.785443980824770798e-06, +-5.790015611731350722e-06, +-5.794577252840869547e-06, +-5.799128897954388647e-06, +-5.803670540891333917e-06, +-5.808202175487353626e-06, +-5.812723795595102772e-06, +-5.817235395085266295e-06, +-5.821736967844057790e-06, +-5.826228507776295932e-06, +-5.830710008803082757e-06, +-5.835181464862579543e-06, +-5.839642869910746272e-06, +-5.844094217920269288e-06, +-5.848535502880255513e-06, +-5.852966718798311068e-06, +-5.857387859698314427e-06, +-5.861798919621278691e-06, +-5.866199892626280787e-06, +-5.870590772788268497e-06, +-5.874971554200017106e-06, +-5.879342230971889693e-06, +-5.883702797230877437e-06, +-5.888053247121106997e-06, +-5.892393574804805277e-06, +-5.896723774459927736e-06, +-5.901043840283130628e-06, +-5.905353766487462834e-06, +-5.909653547303215439e-06, +-5.913943176978754361e-06, +-5.918222649778482398e-06, +-5.922491959984688290e-06, +-5.926751101897299395e-06, +-5.931000069832963501e-06, +-5.935238858125548574e-06, +-5.939467461127072804e-06, +-5.943685873205405753e-06, +-5.947894088747216882e-06, +-5.952092102155582679e-06, +-5.956279907851131001e-06, +-5.960457500271857271e-06, +-5.964624873873043157e-06, +-5.968782023127149004e-06, +-5.972928942524532964e-06, +-5.977065626572352392e-06, +-5.981192069795342272e-06, +-5.985308266735545857e-06, +-5.989414211952425635e-06, +-5.993509900022614298e-06, +-5.997595325540745681e-06, +-6.001670483118215557e-06, +-6.005735367384032899e-06, +-6.009789972984663183e-06, +-6.013834294583739549e-06, +-6.017868326862905600e-06, +-6.021892064520674444e-06, +-6.025905502273175782e-06, +-6.029908634853966172e-06, +-6.033901457014055284e-06, +-6.037883963521746661e-06, +-6.041856149163358541e-06, +-6.045818008742089684e-06, +-6.049769537078816425e-06, +-6.053710729011875838e-06, +-6.057641579397111474e-06, +-6.061562083107684472e-06, +-6.065472235034765585e-06, +-6.069372030086533988e-06, +-6.073261463188826952e-06, +-6.077140529285000932e-06, +-6.081009223335744368e-06, +-6.084867540319853572e-06, +-6.088715475233070598e-06, +-6.092553023088893003e-06, +-6.096380178918370562e-06, +-6.100196937770080702e-06, +-6.104003294709991284e-06, +-6.107799244822158557e-06, +-6.111584783207709025e-06, +-6.115359904985480652e-06, +-6.119124605291925451e-06, +-6.122878879281045111e-06, +-6.126622722124312222e-06, +-6.130356129011299622e-06, +-6.134079095148658874e-06, +-6.137791615760813986e-06, +-6.141493686089803017e-06, +-6.145185301395148479e-06, +-6.148866456954476520e-06, +-6.152537148062773227e-06, +-6.156197370032027180e-06, +-6.159847118193013305e-06, +-6.163486387893424313e-06, +-6.167115174498577132e-06, +-6.170733473392214198e-06, +-6.174341279974447705e-06, +-6.177938589664340514e-06, +-6.181525397897905465e-06, +-6.185101700128842290e-06, +-6.188667491829067860e-06, +-6.192222768487806472e-06, +-6.195767525611529704e-06, +-6.199301758725380284e-06, +-6.202825463371531385e-06, +-6.206338635109915070e-06, +-6.209841269518838937e-06, +-6.213333362193256474e-06, +-6.216814908746442494e-06, +-6.220285904809702598e-06, +-6.223746346031546473e-06, +-6.227196228078296911e-06, +-6.230635546634630213e-06, +-6.234064297401851630e-06, +-6.237482476100117132e-06, +-6.240890078466781692e-06, +-6.244287100256884639e-06, +-6.247673537243949253e-06, +-6.251049385218222634e-06, +-6.254414639988286755e-06, +-6.257769297380825532e-06, +-6.261113353239797271e-06, +-6.264446803426973379e-06, +-6.267769643822572796e-06, +-6.271081870323478140e-06, +-6.274383478845501521e-06, +-6.277674465321653206e-06, +-6.280954825702879385e-06, +-6.284224555957997796e-06, +-6.287483652073612176e-06, +-6.290732110054024166e-06, +-6.293969925921777957e-06, +-6.297197095716881019e-06, +-6.300413615497269120e-06, +-6.303619481338766517e-06, +-6.306814689335042759e-06, +-6.309999235597436499e-06, +-6.313173116255617879e-06, +-6.316336327456717779e-06, +-6.319488865365790294e-06, +-6.322630726165823750e-06, +-6.325761906057518777e-06, +-6.328882401259929515e-06, +-6.331992208009504774e-06, +-6.335091322560767352e-06, +-6.338179741186087879e-06, +-6.341257460175765283e-06, +-6.344324475837824352e-06, +-6.347380784498655240e-06, +-6.350426382502154582e-06, +-6.353461266210188813e-06, +-6.356485432002578928e-06, +-6.359498876277108101e-06, +-6.362501595449233696e-06, +-6.365493585952897031e-06, +-6.368474844239425620e-06, +-6.371445366778255698e-06, +-6.374405150056843274e-06, +-6.377354190580300763e-06, +-6.380292484872234696e-06, +-6.383220029473697940e-06, +-6.386136820943833448e-06, +-6.389042855859791244e-06, +-6.391938130816615769e-06, +-6.394822642427223863e-06, +-6.397696387322901120e-06, +-6.400559362152457397e-06, +-6.403411563582835836e-06, +-6.406252988298923970e-06, +-6.409083633003496126e-06, +-6.411903494417653038e-06, +-6.414712569280295836e-06, +-6.417510854347805868e-06, +-6.420298346395417744e-06, +-6.423075042215813256e-06, +-6.425840938619655014e-06, +-6.428596032436033674e-06, +-6.431340320511762364e-06, +-6.434073799711192028e-06, +-6.436796466917604800e-06, +-6.439508319031647830e-06, +-6.442209352972050734e-06, +-6.444899565676053335e-06, +-6.447578954097988582e-06, +-6.450247515211173126e-06, +-6.452905246006330992e-06, +-6.455552143492327112e-06, +-6.458188204696361289e-06, +-6.460813426663456597e-06, +-6.463427806456220512e-06, +-6.466031341156159509e-06, +-6.468624027862196756e-06, +-6.471205863691376843e-06, +-6.473776845779285910e-06, +-6.476336971278638800e-06, +-6.478886237361127279e-06, +-6.481424641215936888e-06, +-6.483952180050491477e-06, +-6.486468851090087296e-06, +-6.488974651578612118e-06, +-6.491469578777123921e-06, +-6.493953629965642363e-06, +-6.496426802441748638e-06, +-6.498889093521052186e-06, +-6.501340500537790398e-06, +-6.503781020843446255e-06, +-6.506210651808030736e-06, +-6.508629390819811770e-06, +-6.511037235284825493e-06, +-6.513434182627144764e-06, +-6.515820230289428038e-06, +-6.518195375731545477e-06, +-6.520559616432346713e-06, +-6.522912949888217501e-06, +-6.525255373613826801e-06, +-6.527586885141856576e-06, +-6.529907482023160186e-06, +-6.532217161826528611e-06, +-6.534515922139199510e-06, +-6.536803760566142333e-06, +-6.539080674730584323e-06, +-6.541346662273815703e-06, +-6.543601720855239647e-06, +-6.545845848152279107e-06, +-6.548079041860751205e-06, +-6.550301299694297175e-06, +-6.552512619384739815e-06, +-6.554712998682001321e-06, +-6.556902435354068562e-06, +-6.559080927187287000e-06, +-6.561248471985850773e-06, +-6.563405067572178782e-06, +-6.565550711786774927e-06, +-6.567685402488261144e-06, +-6.569809137553293546e-06, +-6.571921914876964765e-06, +-6.574023732372161057e-06, +-6.576114587970001059e-06, +-6.578194479619756173e-06, +-6.580263405288776871e-06, +-6.582321362962444415e-06, +-6.584368350644632493e-06, +-6.586404366356960977e-06, +-6.588429408139327019e-06, +-6.590443474049699215e-06, +-6.592446562164190458e-06, +-6.594438670577270537e-06, +-6.596419797401229966e-06, +-6.598389940766600115e-06, +-6.600349098822101541e-06, +-6.602297269734525398e-06, +-6.604234451688741916e-06, +-6.606160642888004476e-06, +-6.608075841553488832e-06, +-6.609980045924534514e-06, +-6.611873254258680398e-06, +-6.613755464831429238e-06, +-6.615626675936805856e-06, +-6.617486885886694764e-06, +-6.619336093010894373e-06, +-6.621174295657944547e-06, +-6.623001492194038161e-06, +-6.624817681003602171e-06, +-6.626622860489488191e-06, +-6.628417029072460043e-06, +-6.630200185191148014e-06, +-6.631972327302928923e-06, +-6.633733453882900368e-06, +-6.635483563424347437e-06, +-6.637222654439067122e-06, +-6.638950725456319694e-06, +-6.640667775024178874e-06, +-6.642373801708500991e-06, +-6.644068804093285822e-06, +-6.645752780780892579e-06, +-6.647425730391792585e-06, +-6.649087651564177087e-06, +-6.650738542954999116e-06, +-6.652378403238990921e-06, +-6.654007231109018036e-06, +-6.655625025276456202e-06, +-6.657231784470157994e-06, +-6.658827507437848728e-06, +-6.660412192944971952e-06, +-6.661985839775193437e-06, +-6.663548446730252942e-06, +-6.665100012630391966e-06, +-6.666640536313376274e-06, +-6.668170016635730869e-06, +-6.669688452471759129e-06, +-6.671195842713943451e-06, +-6.672692186273233247e-06, +-6.674177482078193671e-06, +-6.675651729075768801e-06, +-6.677114926231295185e-06, +-6.678567072527892830e-06, +-6.680008166966971724e-06, +-6.681438208568064972e-06, +-6.682857196368784752e-06, +-6.684265129425061175e-06, +-6.685662006810764509e-06, +-6.687047827617919482e-06, +-6.688422590956957691e-06, +-6.689786295955993397e-06, +-6.691138941761508768e-06, +-6.692480527538294590e-06, +-6.693811052469014042e-06, +-6.695130515754555068e-06, +-6.696438916613910938e-06, +-6.697736254284240391e-06, +-6.699022528020722794e-06, +-6.700297737096904573e-06, +-6.701561880804245211e-06, +-6.702814958452389137e-06, +-6.704056969369097971e-06, +-6.705287912900192074e-06, +-6.706507788409844469e-06, +-6.707716595280137847e-06, +-6.708914332911275470e-06, +-6.710101000721664190e-06, +-6.711276598147798396e-06, +-6.712441124644215977e-06, +-6.713594579683760894e-06, +-6.714736962757209647e-06, +-6.715868273373503353e-06, +-6.716988511059669827e-06, +-6.718097675360828658e-06, +-6.719195765840404667e-06, +-6.720282782079665422e-06, +-6.721358723678110876e-06, +-6.722423590253323440e-06, +-6.723477381440966291e-06, +-6.724520096894768127e-06, +-6.725551736286741695e-06, +-6.726572299306784847e-06, +-6.727581785662982922e-06, +-6.728580195081457983e-06, +-6.729567527306489935e-06, +-6.730543782100357287e-06, +-6.731508959243567546e-06, +-6.732463058534618348e-06, +-6.733406079790069463e-06, +-6.734338022844619871e-06, +-6.735258887550939200e-06, +-6.736168673779992993e-06, +-6.737067381420666622e-06, +-6.737955010379784767e-06, +-6.738831560582544256e-06, +-6.739697031971989745e-06, +-6.740551424509316115e-06, +-6.741394738173803245e-06, +-6.742226972962761805e-06, +-6.743048128891526481e-06, +-6.743858205993558462e-06, +-6.744657204320302294e-06, +-6.745445123941245171e-06, +-6.746221964944166813e-06, +-6.746987727434465222e-06, +-6.747742411535982545e-06, +-6.748486017390378267e-06, +-6.749218545157399412e-06, +-6.749939995014925441e-06, +-6.750650367158785289e-06, +-6.751349661802705697e-06, +-6.752037879178766070e-06, +-6.752715019536845362e-06, +-6.753381083144846543e-06, +-6.754036070288885482e-06, +-6.754679981272775111e-06, +-6.755312816418702199e-06, +-6.755934576066596314e-06, +-6.756545260574524540e-06, +-6.757144870318589836e-06, +-6.757733405692869198e-06, +-6.758310867109310323e-06, +-6.758877254998077200e-06, +-6.759432569807214682e-06, +-6.759976812002729804e-06, +-6.760509982068773893e-06, +-6.761032080507321543e-06, +-6.761543107838351881e-06, +-6.762043064599962069e-06, +-6.762531951348128439e-06, +-6.763009768656775106e-06, +-6.763476517117841728e-06, +-6.763932197341195414e-06, +-6.764376809954822156e-06, +-6.764810355604490556e-06, +-6.765232834953973749e-06, +-6.765644248685117163e-06, +-6.766044597497542060e-06, +-6.766433882108913198e-06, +-6.766812103254857517e-06, +-6.767179261688954819e-06, +-6.767535358182655606e-06, +-6.767880393525385269e-06, +-6.768214368524493260e-06, +-6.768537284005312391e-06, +-6.768849140811031773e-06, +-6.769149939802804393e-06, +-6.769439681859625985e-06, +-6.769718367878534935e-06, +-6.769985998774378494e-06, +-6.770242575479969483e-06, +-6.770488098945993118e-06, +-6.770722570141037504e-06, +-6.770945990051598716e-06, +-6.771158359682038447e-06, +-6.771359680054642456e-06, +-6.771549952209592613e-06, +-6.771729177204913537e-06, +-6.771897356116514101e-06, +-6.772054490038190819e-06, +-6.772200580081550769e-06, +-6.772335627376206406e-06, +-6.772459633069450304e-06, +-6.772572598326599900e-06, +-6.772674524330713733e-06, +-6.772765412282729516e-06, +-6.772845263401414159e-06, +-6.772914078923439998e-06, +-6.772971860103256899e-06, +-6.773018608213132067e-06, +-6.773054324543221194e-06, +-6.773079010401447334e-06, +-6.773092667113577141e-06, +-6.773095296023186134e-06, +-6.773086898491699357e-06, +-6.773067475898271948e-06, +-6.773037029639904336e-06, +-6.772995561131383794e-06, +-6.772943071805338651e-06, +-6.772879563112115470e-06, +-6.772805036519835801e-06, +-6.772719493514495284e-06, +-6.772622935599768828e-06, +-6.772515364297124966e-06, +-6.772396781145804675e-06, +-6.772267187702834931e-06, +-6.772126585542977884e-06, +-6.771974976258740178e-06, +-6.771812361460341610e-06, +-6.771638742775798140e-06, +-6.771454121850850739e-06, +-6.771258500348932354e-06, +-6.771051879951250920e-06, +-6.770834262356725831e-06, +-6.770605649281956597e-06, +-6.770366042461310095e-06, +-6.770115443646816378e-06, +-6.769853854608204251e-06, +-6.769581277132930075e-06, +-6.769297713026103221e-06, +-6.769003164110567393e-06, +-6.768697632226823539e-06, +-6.768381119233018848e-06, +-6.768053627005019590e-06, +-6.767715157436311167e-06, +-6.767365712438091288e-06, +-6.767005293939158159e-06, +-6.766633903885993491e-06, +-6.766251544242719307e-06, +-6.765858216991081842e-06, +-6.765453924130482886e-06, +-6.765038667677911174e-06, +-6.764612449668021162e-06, +-6.764175272153049165e-06, +-6.763727137202892139e-06, +-6.763268046905014500e-06, +-6.762798003364455754e-06, +-6.762317008703920277e-06, +-6.761825065063634169e-06, +-6.761322174601434191e-06, +-6.760808339492741510e-06, +-6.760283561930528660e-06, +-6.759747844125385617e-06, +-6.759201188305363937e-06, +-6.758643596716173276e-06, +-6.758075071621037387e-06, +-6.757495615300678030e-06, +-6.756905230053393748e-06, +-6.756303918194993794e-06, +-6.755691682058876062e-06, +-6.755068523995897485e-06, +-6.754434446374396915e-06, +-6.753789451580283203e-06, +-6.753133542016953893e-06, +-6.752466720105268957e-06, +-6.751788988283613483e-06, +-6.751100349007855315e-06, +-6.750400804751307789e-06, +-6.749690358004759379e-06, +-6.748969011276495716e-06, +-6.748236767092225053e-06, +-6.747493627995116382e-06, +-6.746739596545813829e-06, +-6.745974675322313837e-06, +-6.745198866920146434e-06, +-6.744412173952249019e-06, +-6.743614599048907073e-06, +-6.742806144857898157e-06, +-6.741986814044362311e-06, +-6.741156609290843561e-06, +-6.740315533297261967e-06, +-6.739463588781013576e-06, +-6.738600778476803547e-06, +-6.737727105136692750e-06, +-6.736842571530120627e-06, +-6.735947180443932300e-06, +-6.735040934682270152e-06, +-6.734123837066679705e-06, +-6.733195890436005433e-06, +-6.732257097646439893e-06, +-6.731307461571479679e-06, +-6.730346985101977089e-06, +-6.729375671146072364e-06, +-6.728393522629232649e-06, +-6.727400542494210494e-06, +-6.726396733701002343e-06, +-6.725382099226989992e-06, +-6.724356642066819462e-06, +-6.723320365232306980e-06, +-6.722273271752602454e-06, +-6.721215364674158982e-06, +-6.720146647060557515e-06, +-6.719067121992717768e-06, +-6.717976792568803354e-06, +-6.716875661904150630e-06, +-6.715763733131370344e-06, +-6.714641009400197709e-06, +-6.713507493877620306e-06, +-6.712363189747956008e-06, +-6.711208100212496383e-06, +-6.710042228489820094e-06, +-6.708865577815770877e-06, +-6.707678151443183947e-06, +-6.706479952642121478e-06, +-6.705270984699981864e-06, +-6.704051250921009294e-06, +-6.702820754626764694e-06, +-6.701579499155978353e-06, +-6.700327487864314439e-06, +-6.699064724124837719e-06, +-6.697791211327430799e-06, +-6.696506952879272698e-06, +-6.695211952204604219e-06, +-6.693906212744590732e-06, +-6.692589737957760934e-06, +-6.691262531319552841e-06, +-6.689924596322388326e-06, +-6.688575936475889113e-06, +-6.687216555306714997e-06, +-6.685846456358399511e-06, +-6.684465643191784463e-06, +-6.683074119384459196e-06, +-6.681671888531203585e-06, +-6.680258954243761883e-06, +-6.678835320150864740e-06, +-6.677400989898248687e-06, +-6.675955967148658677e-06, +-6.674500255581706629e-06, +-6.673033858894108601e-06, +-6.671556780799497589e-06, +-6.670069025028321891e-06, +-6.668570595328242358e-06, +-6.667061495463713966e-06, +-6.665541729216006141e-06, +-6.664011300383451787e-06, +-6.662470212781288047e-06, +-6.660918470241609709e-06, +-6.659356076613439520e-06, +-6.657783035762601969e-06, +-6.656199351571913874e-06, +-6.654605027941032762e-06, +-6.653000068786318803e-06, +-6.651384478041269336e-06, +-6.649758259656057240e-06, +-6.648121417597614786e-06, +-6.646473955849852175e-06, +-6.644815878413444930e-06, +-6.643147189305841520e-06, +-6.641467892561326043e-06, +-6.639777992231029233e-06, +-6.638077492382709928e-06, +-6.636366397101014264e-06, +-6.634644710487342685e-06, +-6.632912436659849105e-06, +-6.631169579753517129e-06, +-6.629416143919832264e-06, +-6.627652133327205426e-06, +-6.625877552160754410e-06, +-6.624092404622269159e-06, +-6.622296694930247342e-06, +-6.620490427319961269e-06, +-6.618673606043160582e-06, +-6.616846235368468665e-06, +-6.615008319581120912e-06, +-6.613159862982992682e-06, +-6.611300869892706019e-06, +-6.609431344645268822e-06, +-6.607551291592591531e-06, +-6.605660715103088176e-06, +-6.603759619561826302e-06, +-6.601848009370416008e-06, +-6.599925888947176811e-06, +-6.597993262726827634e-06, +-6.596050135160740066e-06, +-6.594096510717081515e-06, +-6.592132393880209574e-06, +-6.590157789151230220e-06, +-6.588172701047864828e-06, +-6.586177134104089336e-06, +-6.584171092870634838e-06, +-6.582154581914696211e-06, +-6.580127605819905005e-06, +-6.578090169186539506e-06, +-6.576042276631074121e-06, +-6.573983932786640158e-06, +-6.571915142303041920e-06, +-6.569835909846085013e-06, +-6.567746240098311565e-06, +-6.565646137758710541e-06, +-6.563535607542463638e-06, +-6.561414654181405218e-06, +-6.559283282423669101e-06, +-6.557141497033841026e-06, +-6.554989302792804493e-06, +-6.552826704497973696e-06, +-6.550653706962764979e-06, +-6.548470315017524329e-06, +-6.546276533508418618e-06, +-6.544072367298184374e-06, +-6.541857821265967696e-06, +-6.539632900306871937e-06, +-6.537397609332787793e-06, +-6.535151953271644533e-06, +-6.532895937067535352e-06, +-6.530629565681062120e-06, +-6.528352844089065173e-06, +-6.526065777284338715e-06, +-6.523768370276473613e-06, +-6.521460628090730841e-06, +-6.519142555768939341e-06, +-6.516814158369028454e-06, +-6.514475440965155828e-06, +-6.512126408647683697e-06, +-6.509767066523216998e-06, +-6.507397419714272184e-06, +-6.505017473359832874e-06, +-6.502627232614961913e-06, +-6.500226702650585381e-06, +-6.497815888654213414e-06, +-6.495394795829322720e-06, +-6.492963429395214277e-06, +-6.490521794587624042e-06, +-6.488069896658227439e-06, +-6.485607740874841799e-06, +-6.483135332521411960e-06, +-6.480652676897657054e-06, +-6.478159779319627009e-06, +-6.475656645119455215e-06, +-6.473143279644845220e-06, +-6.470619688260149005e-06, +-6.468085876345377651e-06, +-6.465541849296399541e-06, +-6.462987612525318986e-06, +-6.460423171460127247e-06, +-6.457848531544806720e-06, +-6.455263698239218280e-06, +-6.452668677019334216e-06, +-6.450063473376715613e-06, +-6.447448092819154400e-06, +-6.444822540870232893e-06, +-6.442186823069444923e-06, +-6.439540944972285622e-06, +-6.436884912149773692e-06, +-6.434218730189135812e-06, +-6.431542404693360250e-06, +-6.428855941281195169e-06, +-6.426159345587321421e-06, +-6.423452623262256834e-06, +-6.420735779972058056e-06, +-6.418008821398905852e-06, +-6.415271753240601970e-06, +-6.412524581210775816e-06, +-6.409767311038904781e-06, +-6.406999948469885646e-06, +-6.404222499264716439e-06, +-6.401434969199934008e-06, +-6.398637364067888461e-06, +-6.395829689676582226e-06, +-6.393011951849819977e-06, +-6.390184156426748697e-06, +-6.387346309262475164e-06, +-6.384498416228008352e-06, +-6.381640483209384447e-06, +-6.378772516108734107e-06, +-6.375894520843773397e-06, +-6.373006503347515797e-06, +-6.370108469568940511e-06, +-6.367200425472453755e-06, +-6.364282377038056466e-06, +-6.361354330261456962e-06, +-6.358416291153536462e-06, +-6.355468265740976738e-06, +-6.352510260066333805e-06, +-6.349542280186957956e-06, +-6.346564332176219420e-06, +-6.343576422122950162e-06, +-6.340578556131011902e-06, +-6.337570740320540404e-06, +-6.334552980826344583e-06, +-6.331525283799137244e-06, +-6.328487655404924374e-06, +-6.325440101825294823e-06, +-6.322382629256724893e-06, +-6.319315243912000505e-06, +-6.316237952018363893e-06, +-6.313150759818989978e-06, +-6.310053673572400225e-06, +-6.306946699551958659e-06, +-6.303829844047117000e-06, +-6.300703113362309286e-06, +-6.297566513816980675e-06, +-6.294420051746287092e-06, +-6.291263733500698815e-06, +-6.288097565445443980e-06, +-6.284921553961881617e-06, +-6.281735705445722882e-06, +-6.278540026308521838e-06, +-6.275334522976946152e-06, +-6.272119201892440832e-06, +-6.268894069512414068e-06, +-6.265659132309038679e-06, +-6.262414396769470653e-06, +-6.259159869396403949e-06, +-6.255895556707665615e-06, +-6.252621465235716043e-06, +-6.249337601528917820e-06, +-6.246043972150393929e-06, +-6.242740583678055703e-06, +-6.239427442705360068e-06, +-6.236104555840670038e-06, +-6.232771929707428354e-06, +-6.229429570944259974e-06, +-6.226077486204454539e-06, +-6.222715682156697361e-06, +-6.219344165484705199e-06, +-6.215962942886654509e-06, +-6.212572021076554489e-06, +-6.209171406782957046e-06, +-6.205761106749069450e-06, +-6.202341127733551393e-06, +-6.198911476509778070e-06, +-6.195472159866098526e-06, +-6.192023184605901723e-06, +-6.188564557547068507e-06, +-6.185096285522761048e-06, +-6.181618375380909534e-06, +-6.178130833984267232e-06, +-6.174633668210485868e-06, +-6.171126884952145279e-06, +-6.167610491116221474e-06, +-6.164084493624992111e-06, +-6.160548899415313133e-06, +-6.157003715438866099e-06, +-6.153448948662080262e-06, +-6.149884606066295193e-06, +-6.146310694647147532e-06, +-6.142727221415471387e-06, +-6.139134193396619854e-06, +-6.135531617630719982e-06, +-6.131919501172680387e-06, +-6.128297851091655090e-06, +-6.124666674471914258e-06, +-6.121025978412236887e-06, +-6.117375770025980258e-06, +-6.113716056441221390e-06, +-6.110046844800740945e-06, +-6.106368142261465884e-06, +-6.102679955995362239e-06, +-6.098982293188812541e-06, +-6.095275161042775911e-06, +-6.091558566772716910e-06, +-6.087832517608797815e-06, +-6.084097020795260283e-06, +-6.080352083591287635e-06, +-6.076597713270382280e-06, +-6.072833917120551223e-06, +-6.069060702444381446e-06, +-6.065278076558480865e-06, +-6.061486046794179680e-06, +-6.057684620497674362e-06, +-6.053873805028673253e-06, +-6.050053607761891581e-06, +-6.046224036086384836e-06, +-6.042385097404999056e-06, +-6.038536799135991194e-06, +-6.034679148710873423e-06, +-6.030812153576071624e-06, +-6.026935821192410392e-06, +-6.023050159034436256e-06, +-6.019155174591328237e-06, +-6.015250875367049471e-06, +-6.011337268878776807e-06, +-6.007414362658650780e-06, +-6.003482164252985326e-06, +-5.999540681221641824e-06, +-5.995589921139724861e-06, +-5.991629891595966088e-06, +-5.987660600192974099e-06, +-5.983682054547982356e-06, +-5.979694262292367233e-06, +-5.975697231070988172e-06, +-5.971690968543949515e-06, +-5.967675482384301655e-06, +-5.963650780279869783e-06, +-5.959616869932491553e-06, +-5.955573759057426705e-06, +-5.951521455384996918e-06, +-5.947459966659012024e-06, +-5.943389300636933485e-06, +-5.939309465090814600e-06, +-5.935220467806601700e-06, +-5.931122316583585277e-06, +-5.927015019236157571e-06, +-5.922898583591510337e-06, +-5.918773017491381427e-06, +-5.914638328791283143e-06, +-5.910494525360625056e-06, +-5.906341615082685208e-06, +-5.902179605854793918e-06, +-5.898008505587600249e-06, +-5.893828322206111323e-06, +-5.889639063648996054e-06, +-5.885440737868719828e-06, +-5.881233352831523329e-06, +-5.877016916517650391e-06, +-5.872791436920555171e-06, +-5.868556922047939769e-06, +-5.864313379921106245e-06, +-5.860060818575048102e-06, +-5.855799246058681520e-06, +-5.851528670434023739e-06, +-5.847249099777304367e-06, +-5.842960542178304689e-06, +-5.838663005740390706e-06, +-5.834356498580558025e-06, +-5.830041028829632610e-06, +-5.825716604631468634e-06, +-5.821383234144036925e-06, +-5.817040925538732087e-06, +-5.812689687000501253e-06, +-5.808329526727814436e-06, +-5.803960452932855111e-06, +-5.799582473840760430e-06, +-5.795195597690733374e-06, +-5.790799832735240611e-06, +-5.786395187240248823e-06, +-5.781981669485325496e-06, +-5.777559287762968079e-06, +-5.773128050379590769e-06, +-5.768687965654856205e-06, +-5.764239041921805913e-06, +-5.759781287526879785e-06, +-5.755314710830016032e-06, +-5.750839320203971012e-06, +-5.746355124035399201e-06, +-5.741862130724043429e-06, +-5.737360348682972046e-06, +-5.732849786338509469e-06, +-5.728330452130458104e-06, +-5.723802354511321614e-06, +-5.719265501947332374e-06, +-5.714719902917842451e-06, +-5.710165565915358334e-06, +-5.705602499445770481e-06, +-5.701030712027581668e-06, +-5.696450212192816707e-06, +-5.691861008487243519e-06, +-5.687263109468587588e-06, +-5.682656523708437789e-06, +-5.678041259791534874e-06, +-5.673417326314872776e-06, +-5.668784731889884799e-06, +-5.664143485139682289e-06, +-5.659493594701218804e-06, +-5.654835069224429530e-06, +-5.650167917371662921e-06, +-5.645492147818703067e-06, +-5.640807769254834069e-06, +-5.636114790381125644e-06, +-5.631413219912380457e-06, +-5.626703066576319269e-06, +-5.621984339112796589e-06, +-5.617257046275699721e-06, +-5.612521196831264864e-06, +-5.607776799558143176e-06, +-5.603023863248440936e-06, +-5.598262396707071559e-06, +-5.593492408750979717e-06, +-5.588713908211296189e-06, +-5.583926903930559597e-06, +-5.579131404764800945e-06, +-5.574327419582895650e-06, +-5.569514957265580976e-06, +-5.564694026707539738e-06, +-5.559864636815513957e-06, +-5.555026796508569987e-06, +-5.550180514719053116e-06, +-5.545325800391878599e-06, +-5.540462662483914175e-06, +-5.535591109965949417e-06, +-5.530711151820017411e-06, +-5.525822797041524202e-06, +-5.520926054638273007e-06, +-5.516020933630556544e-06, +-5.511107443051281548e-06, +-5.506185591946033140e-06, +-5.501255389372296409e-06, +-5.496316844400671054e-06, +-5.491369966114020964e-06, +-5.486414763607627533e-06, +-5.481451245989274358e-06, +-5.476479422379335336e-06, +-5.471499301909947958e-06, +-5.466510893726323667e-06, +-5.461514206985807653e-06, +-5.456509250858082989e-06, +-5.451496034525420504e-06, +-5.446474567181736036e-06, +-5.441444858033930439e-06, +-5.436406916300959538e-06, +-5.431360751214072995e-06, +-5.426306372016750782e-06, +-5.421243787964963217e-06, +-5.416173008326214667e-06, +-5.411094042380921669e-06, +-5.406006899421415124e-06, +-5.400911588752243538e-06, +-5.395808119690070529e-06, +-5.390696501563982299e-06, +-5.385576743714508467e-06, +-5.380448855494900238e-06, +-5.375312846270306242e-06, +-5.370168725417988529e-06, +-5.365016502327434374e-06, +-5.359856186399535503e-06, +-5.354687787047866268e-06, +-5.349511313697779013e-06, +-5.344326775786622610e-06, +-5.339134182763730600e-06, +-5.333933544090580436e-06, +-5.328724869239942213e-06, +-5.323508167697197501e-06, +-5.318283448959367795e-06, +-5.313050722535408439e-06, +-5.307809997946332290e-06, +-5.302561284724352522e-06, +-5.297304592413966828e-06, +-5.292039930572144613e-06, +-5.286767308766349175e-06, +-5.281486736576696789e-06, +-5.276198223595085111e-06, +-5.270901779424515553e-06, +-5.265597413680127508e-06, +-5.260285135989476178e-06, +-5.254964955990466662e-06, +-5.249636883333568945e-06, +-5.244300927680961547e-06, +-5.238957098705523557e-06, +-5.233605406093390129e-06, +-5.228245859540686324e-06, +-5.222878468756062278e-06, +-5.217503243459742834e-06, +-5.212120193382842289e-06, +-5.206729328268485868e-06, +-5.201330657871941013e-06, +-5.195924191958698854e-06, +-5.190509940306646000e-06, +-5.185087912705104007e-06, +-5.179658118953980647e-06, +-5.174220568866181413e-06, +-5.168775272264467026e-06, +-5.163322238983897127e-06, +-5.157861478870739294e-06, +-5.152393001782806167e-06, +-5.146916817588377171e-06, +-5.141432936168654065e-06, +-5.135941367414560006e-06, +-5.130442121229256930e-06, +-5.124935207527154523e-06, +-5.119420636233024226e-06, +-5.113898417284290457e-06, +-5.108368560628887619e-06, +-5.102831076225512516e-06, +-5.097285974044749213e-06, +-5.091733264068348209e-06, +-5.086172956288321808e-06, +-5.080605060709408137e-06, +-5.075029587345884607e-06, +-5.069446546224070052e-06, +-5.063855947381313366e-06, +-5.058257800865159180e-06, +-5.052652116735596733e-06, +-5.047038905062916879e-06, +-5.041418175927996690e-06, +-5.035789939423431089e-06, +-5.030154205652515571e-06, +-5.024510984729527409e-06, +-5.018860286779708719e-06, +-5.013202121939451113e-06, +-5.007536500355347019e-06, +-5.001863432185594910e-06, +-4.996182927599027760e-06, +-4.990494996775370538e-06, +-4.984799649905368112e-06, +-4.979096897189917886e-06, +-4.973386748841405574e-06, +-4.967669215082783625e-06, +-4.961944306147758416e-06, +-4.956212032280801270e-06, +-4.950472403737339030e-06, +-4.944725430782804543e-06, +-4.938971123694049504e-06, +-4.933209492758331410e-06, +-4.927440548273598159e-06, +-4.921664300548695576e-06, +-4.915880759902303539e-06, +-4.910089936664473341e-06, +-4.904291841175633279e-06, +-4.898486483786716551e-06, +-4.892673874859261205e-06, +-4.886854024765523649e-06, +-4.881026943887600268e-06, +-4.875192642618763203e-06, +-4.869351131362543856e-06, +-4.863502420532961592e-06, +-4.857646520554417012e-06, +-4.851783441862023988e-06, +-4.845913194900539865e-06, +-4.840035790125839293e-06, +-4.834151238003952001e-06, +-4.828259549011216956e-06, +-4.822360733634591528e-06, +-4.816454802370551201e-06, +-4.810541765726413475e-06, +-4.804621634220489496e-06, +-4.798694418379852114e-06, +-4.792760128742810921e-06, +-4.786818775857912750e-06, +-4.780870370283120048e-06, +-4.774914922587377896e-06, +-4.768952443349515399e-06, +-4.762982943158505732e-06, +-4.757006432613441568e-06, +-4.751022922323825619e-06, +-4.745032422908161168e-06, +-4.739034944996875180e-06, +-4.733030499228616768e-06, +-4.727019096253111697e-06, +-4.721000746730107826e-06, +-4.714975461328546707e-06, +-4.708943250727912066e-06, +-4.702904125618378878e-06, +-4.696858096698505204e-06, +-4.690805174677882556e-06, +-4.684745370275917017e-06, +-4.678678694220927148e-06, +-4.672605157252864664e-06, +-4.666524770119742492e-06, +-4.660437543580434213e-06, +-4.654343488403357777e-06, +-4.648242615366981181e-06, +-4.642134935258547681e-06, +-4.636020458876788842e-06, +-4.629899197028453397e-06, +-4.623771160530942363e-06, +-4.617636360211428131e-06, +-4.611494806905696569e-06, +-4.605346511460744026e-06, +-4.599191484732450534e-06, +-4.593029737585795797e-06, +-4.586861280896106877e-06, +-4.580686125548081559e-06, +-4.574504282435939127e-06, +-4.568315762463744774e-06, +-4.562120576544280511e-06, +-4.555918735600618105e-06, +-4.549710250565359289e-06, +-4.543495132379475330e-06, +-4.537273391994993817e-06, +-4.531045040372574448e-06, +-4.524810088481771619e-06, +-4.518568547302310895e-06, +-4.512320427823014126e-06, +-4.506065741042137419e-06, +-4.499804497967183089e-06, +-4.493536709615266431e-06, +-4.487262387012020500e-06, +-4.480981541193139413e-06, +-4.474694183203305995e-06, +-4.468400324096459451e-06, +-4.462099974936013048e-06, +-4.455793146793797021e-06, +-4.449479850751622192e-06, +-4.443160097900172900e-06, +-4.436833899339311090e-06, +-4.430501266178011082e-06, +-4.424162209534607761e-06, +-4.417816740535733545e-06, +-4.411464870317897257e-06, +-4.405106610026369428e-06, +-4.398741970815486382e-06, +-4.392370963848814564e-06, +-4.385993600298143413e-06, +-4.379609891345005786e-06, +-4.373219848179631030e-06, +-4.366823482001227041e-06, +-4.360420804017827797e-06, +-4.354011825446698242e-06, +-4.347596557513150980e-06, +-4.341175011452141238e-06, +-4.334747198507216545e-06, +-4.328313129930724255e-06, +-4.321872816983807313e-06, +-4.315426270936685468e-06, +-4.308973503067488064e-06, +-4.302514524663897281e-06, +-4.296049347022073254e-06, +-4.289577981446844650e-06, +-4.283100439252009371e-06, +-4.276616731759185972e-06, +-4.270126870299192634e-06, +-4.263630866212319907e-06, +-4.257128730845759119e-06, +-4.250620475556422994e-06, +-4.244106111709759809e-06, +-4.237585650678946167e-06, +-4.231059103846505681e-06, +-4.224526482603207830e-06, +-4.217987798348279717e-06, +-4.211443062489423856e-06, +-4.204892286443066353e-06, +-4.198335481632927964e-06, +-4.191772659493112371e-06, +-4.185203831464131064e-06, +-4.178629008996001781e-06, +-4.172048203547060973e-06, +-4.165461426583159966e-06, +-4.158868689579002426e-06, +-4.152270004018401015e-06, +-4.145665381391782872e-06, +-4.139054833198934003e-06, +-4.132438370947859178e-06, +-4.125816006153661299e-06, +-4.119187750341592419e-06, +-4.112553615043096402e-06, +-4.105913611798904827e-06, +-4.099267752157860462e-06, +-4.092616047676076158e-06, +-4.085958509918316360e-06, +-4.079295150458270701e-06, +-4.072625980875986640e-06, +-4.065951012760628255e-06, +-4.059270257709434388e-06, +-4.052583727326450637e-06, +-4.045891433225386399e-06, +-4.039193387027102570e-06, +-4.032489600359779260e-06, +-4.025780084860345580e-06, +-4.019064852173397136e-06, +-4.012343913951336638e-06, +-4.005617281854719488e-06, +-3.998884967551087414e-06, +-3.992146982716627812e-06, +-3.985403339035339414e-06, +-3.978654048197833738e-06, +-3.971899121904187897e-06, +-3.965138571861364533e-06, +-3.958372409783426965e-06, +-3.951600647393015570e-06, +-3.944823296420156851e-06, +-3.938040368602508229e-06, +-3.931251875685648580e-06, +-3.924457829421921183e-06, +-3.917658241572088827e-06, +-3.910853123904216568e-06, +-3.904042488193909753e-06, +-3.897226346224299616e-06, +-3.890404709786347362e-06, +-3.883577590677565151e-06, +-3.876745000703857542e-06, +-3.869906951678271280e-06, +-3.863063455421280740e-06, +-3.856214523760782846e-06, +-3.849360168532310524e-06, +-3.842500401577932409e-06, +-3.835635234747896082e-06, +-3.828764679899517617e-06, +-3.821888748897425522e-06, +-3.815007453613795370e-06, +-3.808120805927212230e-06, +-3.801228817724363467e-06, +-3.794331500898887197e-06, +-3.787428867351627246e-06, +-3.780520928990576397e-06, +-3.773607697731252474e-06, +-3.766689185495376125e-06, +-3.759765404212683045e-06, +-3.752836365819741522e-06, +-3.745902082260173933e-06, +-3.738962565484678345e-06, +-3.732017827451302107e-06, +-3.725067880124211958e-06, +-3.718112735475460512e-06, +-3.711152405483779239e-06, +-3.704186902134897372e-06, +-3.697216237421725287e-06, +-3.690240423343235155e-06, +-3.683259471905889880e-06, +-3.676273395123920083e-06, +-3.669282205016631382e-06, +-3.662285913611352069e-06, +-3.655284532942235401e-06, +-3.648278075049313895e-06, +-3.641266551980316205e-06, +-3.634249975789426650e-06, +-3.627228358537547366e-06, +-3.620201712292618485e-06, +-3.613170049128340387e-06, +-3.606133381125730124e-06, +-3.599091720373319199e-06, +-3.592045078964481179e-06, +-3.584993469000426805e-06, +-3.577936902588931322e-06, +-3.570875391843426460e-06, +-3.563808948884530602e-06, +-3.556737585840298233e-06, +-3.549661314843430660e-06, +-3.542580148034386741e-06, +-3.535494097560045421e-06, +-3.528403175572542332e-06, +-3.521307394232574912e-06, +-3.514206765705094827e-06, +-3.507101302162689740e-06, +-3.499991015784256866e-06, +-3.492875918754169485e-06, +-3.485756023263722834e-06, +-3.478631341511431409e-06, +-3.471501885700228253e-06, +-3.464367668040598133e-06, +-3.457228700749198145e-06, +-3.450084996047701089e-06, +-3.442936566166143794e-06, +-3.435783423338584375e-06, +-3.428625579806442937e-06, +-3.421463047816998934e-06, +-3.414295839623624951e-06, +-3.407123967485824398e-06, +-3.399947443669447927e-06, +-3.392766280445476667e-06, +-3.385580490091877230e-06, +-3.378390084892594160e-06, +-3.371195077136352235e-06, +-3.363995479119690108e-06, +-3.356791303144186705e-06, +-3.349582561516709401e-06, +-3.342369266550964937e-06, +-3.335151430566235228e-06, +-3.327929065887697959e-06, +-3.320702184846651899e-06, +-3.313470799779306069e-06, +-3.306234923028581801e-06, +-3.298994566942921810e-06, +-3.291749743876473158e-06, +-3.284500466189178303e-06, +-3.277246746246980510e-06, +-3.269988596420588449e-06, +-3.262726029087326121e-06, +-3.255459056629856372e-06, +-3.248187691436520983e-06, +-3.240911945901221234e-06, +-3.233631832423807965e-06, +-3.226347363408739876e-06, +-3.219058551266974103e-06, +-3.211765408414705410e-06, +-3.204467947273609712e-06, +-3.197166180271204486e-06, +-3.189860119839501989e-06, +-3.182549778416921437e-06, +-3.175235168446984571e-06, +-3.167916302378633720e-06, +-3.160593192666181823e-06, +-3.153265851769633885e-06, +-3.145934292153379150e-06, +-3.138598526288100317e-06, +-3.131258566649445394e-06, +-3.123914425718338556e-06, +-3.116566115980972947e-06, +-3.109213649929110527e-06, +-3.101857040058759860e-06, +-3.094496298872066258e-06, +-3.087131438876067925e-06, +-3.079762472582944550e-06, +-3.072389412510307846e-06, +-3.065012271179957682e-06, +-3.057631061119383445e-06, +-3.050245794862140973e-06, +-3.042856484944898951e-06, +-3.035463143910628410e-06, +-3.028065784307329641e-06, +-3.020664418687000508e-06, +-3.013259059607581232e-06, +-3.005849719631637259e-06, +-2.998436411326643862e-06, +-2.991019147265302082e-06, +-2.983597940024234301e-06, +-2.976172802185567344e-06, +-2.968743746337239527e-06, +-2.961310785070036894e-06, +-2.953873930980867841e-06, +-2.946433196671401937e-06, +-2.938988594747093293e-06, +-2.931540137818762824e-06, +-2.924087838502945525e-06, +-2.916631709418894947e-06, +-2.909171763191845114e-06, +-2.901708012451659510e-06, +-2.894240469831542741e-06, +-2.886769147971579438e-06, +-2.879294059514161125e-06, +-2.871815217107536984e-06, +-2.864332633404506879e-06, +-2.856846321061081356e-06, +-2.849356292739731278e-06, +-2.841862561106420674e-06, +-2.834365138830929879e-06, +-2.826864038588428474e-06, +-2.819359273058527884e-06, +-2.811850854923913413e-06, +-2.804338796873939058e-06, +-2.796823111599998047e-06, +-2.789303811799145175e-06, +-2.781780910172412905e-06, +-2.774254419425106982e-06, +-2.766724352266800501e-06, +-2.759190721411656630e-06, +-2.751653539577055144e-06, +-2.744112819485591847e-06, +-2.736568573864000299e-06, +-2.729020815441895242e-06, +-2.721469556954981586e-06, +-2.713914811142116474e-06, +-2.706356590745555343e-06, +-2.698794908512662090e-06, +-2.691229777194483083e-06, +-2.683661209546127910e-06, +-2.676089218327028991e-06, +-2.668513816299615971e-06, +-2.660935016231274487e-06, +-2.653352830893357677e-06, +-2.645767273059792388e-06, +-2.638178355510423263e-06, +-2.630586091027956647e-06, +-2.622990492398317186e-06, +-2.615391572412244907e-06, +-2.607789343863986556e-06, +-2.600183819551569184e-06, +-2.592575012276797189e-06, +-2.584962934845576298e-06, +-2.577347600066540536e-06, +-2.569729020753015216e-06, +-2.562107209721710397e-06, +-2.554482179792979227e-06, +-2.546853943791179623e-06, +-2.539222514543268202e-06, +-2.531587904880840355e-06, +-2.523950127638711047e-06, +-2.516309195655275649e-06, +-2.508665121772445569e-06, +-2.501017918836025174e-06, +-2.493367599694274385e-06, +-2.485714177199955944e-06, +-2.478057664208936551e-06, +-2.470398073580537102e-06, +-2.462735418177808829e-06, +-2.455069710866193713e-06, +-2.447400964515504001e-06, +-2.439729191998575003e-06, +-2.432054406191544607e-06, +-2.424376619973884203e-06, +-2.416695846228680315e-06, +-2.409012097841253939e-06, +-2.401325387700858425e-06, +-2.393635728700964498e-06, +-2.385943133736218987e-06, +-2.378247615705798656e-06, +-2.370549187512035887e-06, +-2.362847862059389118e-06, +-2.355143652256422354e-06, +-2.347436571014486339e-06, +-2.339726631247955722e-06, +-2.332013845874620393e-06, +-2.324298227814286179e-06, +-2.316579789990420628e-06, +-2.308858545330498603e-06, +-2.301134506762930940e-06, +-2.293407687220422928e-06, +-2.285678099638584759e-06, +-2.277945756954922283e-06, +-2.270210672110828385e-06, +-2.262472858050208249e-06, +-2.254732327719804620e-06, +-2.246989094069176203e-06, +-2.239243170051005138e-06, +-2.231494568619381334e-06, +-2.223743302733521367e-06, +-2.215989385352995871e-06, +-2.208232829441429804e-06, +-2.200473647965137032e-06, +-2.192711853891719756e-06, +-2.184947460193485021e-06, +-2.177180479844315780e-06, +-2.169410925820024947e-06, +-2.161638811100004998e-06, +-2.153864148666219157e-06, +-2.146086951501792773e-06, +-2.138307232594739425e-06, +-2.130525004933203134e-06, +-2.122740281509127710e-06, +-2.114953075316914631e-06, +-2.107163399352033906e-06, +-2.099371266614396961e-06, +-2.091576690105272593e-06, +-2.083779682827607993e-06, +-2.075980257787718159e-06, +-2.068178427994238955e-06, +-2.060374206456716383e-06, +-2.052567606189045115e-06, +-2.044758640206323452e-06, +-2.036947321525217134e-06, +-2.029133663165612741e-06, +-2.021317678149248891e-06, +-2.013499379500036842e-06, +-2.005678780244367965e-06, +-1.997855893409731385e-06, +-1.990030732026743048e-06, +-1.982203309128101333e-06, +-1.974373637747196643e-06, +-1.966541730921503774e-06, +-1.958707601689501681e-06, +-1.950871263090960195e-06, +-1.943032728168663316e-06, +-1.935192009966996782e-06, +-1.927349121532272908e-06, +-1.919504075913069821e-06, +-1.911656886158807600e-06, +-1.903807565321801482e-06, +-1.895956126455886282e-06, +-1.888102582616697182e-06, +-1.880246946861678840e-06, +-1.872389232250407046e-06, +-1.864529451843161478e-06, +-1.856667618703014903e-06, +-1.848803745894391741e-06, +-1.840937846483418102e-06, +-1.833069933537897431e-06, +-1.825200020127616080e-06, +-1.817328119322962004e-06, +-1.809454244196954678e-06, +-1.801578407823869516e-06, +-1.793700623279532001e-06, +-1.785820903641667724e-06, +-1.777939261988472378e-06, +-1.770055711400696733e-06, +-1.762170264960202228e-06, +-1.754282935750320329e-06, +-1.746393736855817800e-06, +-1.738502681363210740e-06, +-1.730609782359376082e-06, +-1.722715052933597605e-06, +-1.714818506176165786e-06, +-1.706920155178693109e-06, +-1.699020013034093100e-06, +-1.691118092836922953e-06, +-1.683214407681951620e-06, +-1.675308970666227207e-06, +-1.667401794887688052e-06, +-1.659492893445454949e-06, +-1.651582279440175684e-06, +-1.643669965972608578e-06, +-1.635755966145342392e-06, +-1.627840293063127302e-06, +-1.619922959829706997e-06, +-1.612003979551288975e-06, +-1.604083365335135711e-06, +-1.596161130288131694e-06, +-1.588237287520610529e-06, +-1.580311850141448078e-06, +-1.572384831261876015e-06, +-1.564456243993715970e-06, +-1.556526101450048901e-06, +-1.548594416743479520e-06, +-1.540661202989916817e-06, +-1.532726473303668675e-06, +-1.524790240801293758e-06, +-1.516852518600142916e-06, +-1.508913319816973229e-06, +-1.500972657571395644e-06, +-1.493030544982728668e-06, +-1.485086995170310292e-06, +-1.477142021255228897e-06, +-1.469195636359258965e-06, +-1.461247853603434033e-06, +-1.453298686111877404e-06, +-1.445348147006879612e-06, +-1.437396249412721296e-06, +-1.429443006454269665e-06, +-1.421488431255535790e-06, +-1.413532536943165013e-06, +-1.405575336643258882e-06, +-1.397616843481712481e-06, +-1.389657070585935389e-06, +-1.381696031083782934e-06, +-1.373733738102133393e-06, +-1.365770204770373533e-06, +-1.357805444217216726e-06, +-1.349839469571030757e-06, +-1.341872293961582709e-06, +-1.333903930518595196e-06, +-1.325934392372095127e-06, +-1.317963692652726477e-06, +-1.309991844490345479e-06, +-1.302018861016070868e-06, +-1.294044755361257278e-06, +-1.286069540656019500e-06, +-1.278093230032762277e-06, +-1.270115836622972169e-06, +-1.262137373557552765e-06, +-1.254157853968582065e-06, +-1.246177290987856856e-06, +-1.238195697747224532e-06, +-1.230213087378935466e-06, +-1.222229473014196485e-06, +-1.214244867785264312e-06, +-1.206259284824014086e-06, +-1.198272737262286212e-06, +-1.190285238231836819e-06, +-1.182296800864689062e-06, +-1.174307438291702909e-06, +-1.166317163644651216e-06, +-1.158325990054811326e-06, +-1.150333930653273810e-06, +-1.142340998570936964e-06, +-1.134347206938836303e-06, +-1.126352568886705028e-06, +-1.118357097545065140e-06, +-1.110360806043816707e-06, +-1.102363707512547663e-06, +-1.094365815080874743e-06, +-1.086367141877000984e-06, +-1.078367701029834577e-06, +-1.070367505667530702e-06, +-1.062366568917834784e-06, +-1.054364903908058995e-06, +-1.046362523765415553e-06, +-1.038359441615581008e-06, +-1.030355670584794762e-06, +-1.022351223798421444e-06, +-1.014346114381299041e-06, +-1.006340355457686591e-06, +-9.983339601516303177e-07, +-9.903269415854986824e-07, +-9.823193128821069570e-07, +-9.743110871632603262e-07, +-9.663022775501071010e-07, +-9.582928971634580496e-07, +-9.502829591223423123e-07, +-9.422724765457752651e-07, +-9.342614625530831452e-07, +-9.262499302606848550e-07, +-9.182378927856248306e-07, +-9.102253632441324509e-07, +-9.022123547501791166e-07, +-8.941988804193633787e-07, +-8.861849533639117501e-07, +-8.781705866965769626e-07, +-8.701557935291813887e-07, +-8.621405869715425794e-07, +-8.541249801332183645e-07, +-8.461089861238528649e-07, +-8.380926180499428392e-07, +-8.300758890183798692e-07, +-8.220588121350042626e-07, +-8.140414005031630860e-07, +-8.060236672272436681e-07, +-7.980056254094506398e-07, +-7.899872881501391353e-07, +-7.819686685495830796e-07, +-7.739497797068718222e-07, +-7.659306347184736751e-07, +-7.579112466821229467e-07, +-7.498916286918276357e-07, +-7.418717938417530775e-07, +-7.338517552247798699e-07, +-7.258315259310636001e-07, +-7.178111190515622070e-07, +-7.097905476748227622e-07, +-7.017698248873099067e-07, +-6.937489637751675737e-07, +-6.857279774231270572e-07, +-6.777068789130607031e-07, +-6.696856813278830257e-07, +-6.616643977465418838e-07, +-6.536430412479091151e-07, +-6.456216249089887438e-07, +-6.376001618052407587e-07, +-6.295786650105705259e-07, +-6.215571475976563781e-07, +-6.135356226365081765e-07, +-6.055141031965800231e-07, +-5.974926023453279749e-07, +-5.894711331485383752e-07, +-5.814497086703191715e-07, +-5.734283419734188235e-07, +-5.654070461177948172e-07, +-5.573858341627199185e-07, +-5.493647191653440169e-07, +-5.413437141810251037e-07, +-5.333228322636597207e-07, +-5.253020864642457571e-07, +-5.172814898329975967e-07, +-5.092610554178923974e-07, +-5.012407962650121869e-07, +-4.932207254185219454e-07, +-4.852008559210053486e-07, +-4.771812008120130590e-07, +-4.691617731301865020e-07, +-4.611425859118099694e-07, +-4.531236521911404852e-07, +-4.451049850003929831e-07, +-4.370865973700748841e-07, +-4.290685023275393645e-07, +-4.210507128990978030e-07, +-4.130332421085783951e-07, +-4.050161029776622670e-07, +-3.969993085262159354e-07, +-3.889828717708442047e-07, +-3.809668057270115617e-07, +-3.729511234075905718e-07, +-3.649358378232022284e-07, +-3.569209619821917590e-07, +-3.489065088909654269e-07, +-3.408924915525422634e-07, +-3.328789229686747209e-07, +-3.248658161383985526e-07, +-3.168531840583721018e-07, +-3.088410397228515794e-07, +-3.008293961240305651e-07, +-2.928182662505878755e-07, +-2.848076630898117638e-07, +-2.767975996261488992e-07, +-2.687880888415400571e-07, +-2.607791437157597261e-07, +-2.527707772249629171e-07, +-2.447630023434542975e-07, +-2.367558320440162047e-07, +-2.287492792946846272e-07, +-2.207433570622923164e-07, +-2.127380783110199903e-07, +-2.047334560009512948e-07, +-1.967295030919726497e-07, +-1.887262325387643718e-07, +-1.807236572946951741e-07, +-1.727217903103822093e-07, +-1.647206445325956714e-07, +-1.567202329060229266e-07, +-1.487205683736045742e-07, +-1.407216638733038093e-07, +-1.327235323416513357e-07, +-1.247261867122987923e-07, +-1.167296399145722586e-07, +-1.087339048773710422e-07, +-1.007389945241591461e-07, +-9.274492177686361852e-08, +-8.475169955407208062e-08, +-7.675934077172475190e-08, +-6.876785834131327456e-08, +-6.077726517377744884e-08, +-5.278757417449733601e-08, +-4.479879824719275319e-08, +-3.681095029247540291e-08, +-2.882404320640513850e-08, +-2.083808988403051553e-08, +-1.285310321616270467e-08, +-4.869096089710739720e-09, + 3.113918610557823874e-09, + 1.109592800310641635e-08, + 1.907691921107420148e-08, + 2.705687935837975892e-08, + 3.503579557472688395e-08, + 4.301365499170816595e-08, + 5.099044474460639924e-08, + 5.896615197205817860e-08, + 6.694076381607553836e-08, + 7.491426742170949501e-08, + 8.288664993849538319e-08, + 9.085789851833722547e-08, + 9.882800031695132795e-08, + 1.067969424935328537e-07, + 1.147647122107740737e-07, + 1.227312966345305695e-07, + 1.306966829352640616e-07, + 1.386608582859292999e-07, + 1.466238098634149336e-07, + 1.545855248482123868e-07, + 1.625459904240783959e-07, + 1.705051937794757326e-07, + 1.784631221054647014e-07, + 1.864197625971423803e-07, + 1.943751024533089695e-07, + 2.023291288764875908e-07, + 2.102818290725898947e-07, + 2.182331902523572080e-07, + 2.261831996292496477e-07, + 2.341318444208875861e-07, + 2.420791118487168080e-07, + 2.500249891380275164e-07, + 2.579694635176203359e-07, + 2.659125222212499491e-07, + 2.738541524855100810e-07, + 2.817943415512780081e-07, + 2.897330766633762218e-07, + 2.976703450702427735e-07, + 3.056061340253650369e-07, + 3.135404307851771075e-07, + 3.214732226104927175e-07, + 3.294044967661773282e-07, + 3.373342405211651238e-07, + 3.452624411481229509e-07, + 3.531890859248935568e-07, + 3.611141621323835127e-07, + 3.690376570560042819e-07, + 3.769595579853407118e-07, + 3.848798522138077738e-07, + 3.927985270400983549e-07, + 4.007155697664273577e-07, + 4.086309676981966993e-07, + 4.165447081472049310e-07, + 4.244567784281260690e-07, + 4.323671658599443625e-07, + 4.402758577670390253e-07, + 4.481828414774314602e-07, + 4.560881043224558155e-07, + 4.639916336399595525e-07, + 4.718934167707875174e-07, + 4.797934410602168149e-07, + 4.876916938593907826e-07, + 4.955881625214513850e-07, + 5.034828344065083856e-07, + 5.113756968777653358e-07, + 5.192667373029655658e-07, + 5.271559430554595524e-07, + 5.350433015124661716e-07, + 5.429288000547375916e-07, + 5.508124260697573514e-07, + 5.586941669482259153e-07, + 5.665740100855018994e-07, + 5.744519428830257222e-07, + 5.823279527444608402e-07, + 5.902020270806509024e-07, + 5.980741533057643736e-07, + 6.059443188390730924e-07, + 6.138125111042687152e-07, + 6.216787175312445560e-07, + 6.295429255522387277e-07, + 6.374051226067919322e-07, + 6.452652961378848834e-07, + 6.531234335933718056e-07, + 6.609795224274008012e-07, + 6.688335500969297928e-07, + 6.766855040648934731e-07, + 6.845353717998886327e-07, + 6.923831407744286365e-07, + 7.002287984660118501e-07, + 7.080723323585589487e-07, + 7.159137299385562705e-07, + 7.237529787000033358e-07, + 7.315900661405649882e-07, + 7.394249797629922924e-07, + 7.472577070765576198e-07, + 7.550882355935464498e-07, + 7.629165528324544955e-07, + 7.707426463176419027e-07, + 7.785665035776122906e-07, + 7.863881121464208381e-07, + 7.942074595633525175e-07, + 8.020245333729431640e-07, + 8.098393211246424628e-07, + 8.176518103742411995e-07, + 8.254619886817775005e-07, + 8.332698436129765773e-07, + 8.410753627389024900e-07, + 8.488785336356368045e-07, + 8.566793438856923957e-07, + 8.644777810759484878e-07, + 8.722738327990438113e-07, + 8.800674866530661655e-07, + 8.878587302415689357e-07, + 8.956475511732384208e-07, + 9.034339370633090142e-07, + 9.112178755314918898e-07, + 9.189993542033804420e-07, + 9.267783607101453534e-07, + 9.345548826881717477e-07, + 9.423289077804982980e-07, + 9.501004236347405140e-07, + 9.578694179044919465e-07, + 9.656358782490105732e-07, + 9.733997923332322452e-07, + 9.811611478274387566e-07, + 9.889199324086769414e-07, + 9.966761337586773026e-07, + 1.004429739565281686e-06, + 1.012180737522098749e-06, + 1.019929115328539749e-06, + 1.027674860689469140e-06, + 1.035417961316642414e-06, + 1.043158404926611176e-06, + 1.050896179242155261e-06, + 1.058631271991938211e-06, + 1.066363670910181371e-06, + 1.074093363738093262e-06, + 1.081820338222120246e-06, + 1.089544582113637780e-06, + 1.097266083172101593e-06, + 1.104984829161573579e-06, + 1.112700807852138882e-06, + 1.120414007020982266e-06, + 1.128124414450295940e-06, + 1.135832017928709143e-06, + 1.143536805250952713e-06, + 1.151238764217874761e-06, + 1.158937882636122822e-06, + 1.166634148319885351e-06, + 1.174327549087102314e-06, + 1.182018072764342825e-06, + 1.189705707183000061e-06, + 1.197390440180705385e-06, + 1.205072259602385234e-06, + 1.212751153298543754e-06, + 1.220427109124946649e-06, + 1.228100114945735085e-06, + 1.235770158630011934e-06, + 1.243437228053221382e-06, + 1.251101311098553730e-06, + 1.258762395653179911e-06, + 1.266420469613092494e-06, + 1.274075520879324529e-06, + 1.281727537359697401e-06, + 1.289376506968159506e-06, + 1.297022417626510602e-06, + 1.304665257260647333e-06, + 1.312305013805386870e-06, + 1.319941675200729590e-06, + 1.327575229393214119e-06, + 1.335205664337333357e-06, + 1.342832967992125380e-06, + 1.350457128324254742e-06, + 1.358078133307724898e-06, + 1.365695970922151110e-06, + 1.373310629154163344e-06, + 1.380922095997084182e-06, + 1.388530359450597638e-06, + 1.396135407522148453e-06, + 1.403737228224894181e-06, + 1.411335809578752547e-06, + 1.418931139611813450e-06, + 1.426523206356885395e-06, + 1.434111997854645828e-06, + 1.441697502153294478e-06, + 1.449279707306855487e-06, + 1.456858601376566329e-06, + 1.464434172430577537e-06, + 1.472006408543934281e-06, + 1.479575297798281176e-06, + 1.487140828283237653e-06, + 1.494702988094372702e-06, + 1.502261765334575371e-06, + 1.509817148113744117e-06, + 1.517369124548467478e-06, + 1.524917682763391178e-06, + 1.532462810889206005e-06, + 1.540004497064020001e-06, + 1.547542729433049087e-06, + 1.555077496148610920e-06, + 1.562608785369836053e-06, + 1.570136585264019590e-06, + 1.577660884004603344e-06, + 1.585181669772577246e-06, + 1.592698930756117881e-06, + 1.600212655150316164e-06, + 1.607722831158512050e-06, + 1.615229446990285377e-06, + 1.622732490862852405e-06, + 1.630231951000727856e-06, + 1.637727815635737193e-06, + 1.645220073006709359e-06, + 1.652708711360844946e-06, + 1.660193718951712541e-06, + 1.667675084040594659e-06, + 1.675152794896197425e-06, + 1.682626839794646548e-06, + 1.690097207019184085e-06, + 1.697563884861523692e-06, + 1.705026861619862003e-06, + 1.712486125600218428e-06, + 1.719941665116140803e-06, + 1.727393468488381190e-06, + 1.734841524046251346e-06, + 1.742285820125966131e-06, + 1.749726345070318678e-06, + 1.757163087231742835e-06, + 1.764596034968930119e-06, + 1.772025176648258234e-06, + 1.779450500644737633e-06, + 1.786871995340078589e-06, + 1.794289649124012564e-06, + 1.801703450394004854e-06, + 1.809113387555232356e-06, + 1.816519449020313573e-06, + 1.823921623210977273e-06, + 1.831319898554385304e-06, + 1.838714263487860098e-06, + 1.846104706455205159e-06, + 1.853491215908074717e-06, + 1.860873780306984659e-06, + 1.868252388119652771e-06, + 1.875627027820711805e-06, + 1.882997687894695479e-06, + 1.890364356832734839e-06, + 1.897727023133931514e-06, + 1.905085675306659175e-06, + 1.912440301864974453e-06, + 1.919790891333242154e-06, + 1.927137432242539823e-06, + 1.934479913131971277e-06, + 1.941818322549701044e-06, + 1.949152649051297143e-06, + 1.956482881199427424e-06, + 1.963809007566859758e-06, + 1.971131016733162419e-06, + 1.978448897286049174e-06, + 1.985762637822725641e-06, + 1.993072226946588403e-06, + 2.000377653270217995e-06, + 2.007678905415089224e-06, + 2.014975972009896158e-06, + 2.022268841691923050e-06, + 2.029557503106729240e-06, + 2.036841944907811615e-06, + 2.044122155757989507e-06, + 2.051398124327380706e-06, + 2.058669839294461524e-06, + 2.065937289347376307e-06, + 2.073200463180660264e-06, + 2.080459349498231189e-06, + 2.087713937013068857e-06, + 2.094964214445601852e-06, + 2.102210170525017501e-06, + 2.109451793988970495e-06, + 2.116689073583255515e-06, + 2.123921998063151889e-06, + 2.131150556191461449e-06, + 2.138374736739846835e-06, + 2.145594528488523604e-06, + 2.152809920226252605e-06, + 2.160020900750064269e-06, + 2.167227458866556264e-06, + 2.174429583389965226e-06, + 2.181627263143481775e-06, + 2.188820486958960831e-06, + 2.196009243676894510e-06, + 2.203193522146169870e-06, + 2.210373311225318287e-06, + 2.217548599780635889e-06, + 2.224719376687453255e-06, + 2.231885630829874958e-06, + 2.239047351100446674e-06, + 2.246204526401453691e-06, + 2.253357145643036678e-06, + 2.260505197744471555e-06, + 2.267648671633859057e-06, + 2.274787556248165385e-06, + 2.281921840532897801e-06, + 2.289051513443425568e-06, + 2.296176563943057192e-06, + 2.303296981004320284e-06, + 2.310412753608726085e-06, + 2.317523870746689850e-06, + 2.324630321417316541e-06, + 2.331732094629641314e-06, + 2.338829179400751218e-06, + 2.345921564757063795e-06, + 2.353009239734051369e-06, + 2.360092193375914513e-06, + 2.367170414736893683e-06, + 2.374243892879665361e-06, + 2.381312616875053638e-06, + 2.388376575804945276e-06, + 2.395435758759048967e-06, + 2.402490154836263285e-06, + 2.409539753145610118e-06, + 2.416584542804337738e-06, + 2.423624512939210410e-06, + 2.430659652686228868e-06, + 2.437689951190305056e-06, + 2.444715397606575879e-06, + 2.451735981098795529e-06, + 2.458751690839047498e-06, + 2.465762516010670226e-06, + 2.472768445805001111e-06, + 2.479769469422738959e-06, + 2.486765576074896472e-06, + 2.493756754981204861e-06, + 2.500742995369838986e-06, + 2.507724286480280752e-06, + 2.514700617560176187e-06, + 2.521671977866569999e-06, + 2.528638356667272685e-06, + 2.535599743237320356e-06, + 2.542556126863449187e-06, + 2.549507496840644188e-06, + 2.556453842473394498e-06, + 2.563395153076681878e-06, + 2.570331417974411581e-06, + 2.577262626499090058e-06, + 2.584188767994714606e-06, + 2.591109831813611821e-06, + 2.598025807317726785e-06, + 2.604936683879905041e-06, + 2.611842450880406218e-06, + 2.618743097711392870e-06, + 2.625638613773427580e-06, + 2.632528988477086977e-06, + 2.639414211242662311e-06, + 2.646294271500167075e-06, + 2.653169158689054100e-06, + 2.660038862259458146e-06, + 2.666903371670375634e-06, + 2.673762676390566734e-06, + 2.680616765899886476e-06, + 2.687465629686094400e-06, + 2.694309257247760732e-06, + 2.701147638093927985e-06, + 2.707980761742553273e-06, + 2.714808617721816127e-06, + 2.721631195569803398e-06, + 2.728448484834175526e-06, + 2.735260475073509938e-06, + 2.742067155855354562e-06, + 2.748868516757565291e-06, + 2.755664547367964212e-06, + 2.762455237284368398e-06, + 2.769240576114329025e-06, + 2.776020553476318912e-06, + 2.782795158997941471e-06, + 2.789564382317164830e-06, + 2.796328213082051211e-06, + 2.803086640950726009e-06, + 2.809839655591137662e-06, + 2.816587246682262976e-06, + 2.823329403912319463e-06, + 2.830066116979963468e-06, + 2.836797375594018275e-06, + 2.843523169473206439e-06, + 2.850243488347360202e-06, + 2.856958321955594015e-06, + 2.863667660047582712e-06, + 2.870371492383242180e-06, + 2.877069808732743756e-06, + 2.883762598876233862e-06, + 2.890449852605062624e-06, + 2.897131559719988586e-06, + 2.903807710032398863e-06, + 2.910478293363975406e-06, + 2.917143299546828838e-06, + 2.923802718423081710e-06, + 2.930456539846160651e-06, + 2.937104753679001085e-06, + 2.943747349795238151e-06, + 2.950384318078949638e-06, + 2.957015648424345541e-06, + 2.963641330737006002e-06, + 2.970261354932402391e-06, + 2.976875710935566539e-06, + 2.983484388683855029e-06, + 2.990087378123946888e-06, + 2.996684669213061622e-06, + 3.003276251919849024e-06, + 3.009862116222638778e-06, + 3.016442252110661036e-06, + 3.023016649583707603e-06, + 3.029585298651907052e-06, + 3.036148189336916071e-06, + 3.042705311670403282e-06, + 3.049256655693826887e-06, + 3.055802211461104944e-06, + 3.062341969035634656e-06, + 3.068875918491532853e-06, + 3.075404049914519444e-06, + 3.081926353400435112e-06, + 3.088442819054980427e-06, + 3.094953436996425928e-06, + 3.101458197352601768e-06, + 3.107957090262113205e-06, + 3.114450105875614542e-06, + 3.120937234352445133e-06, + 3.127418465864880645e-06, + 3.133893790594860542e-06, + 3.140363198735186638e-06, + 3.146826680490712758e-06, + 3.153284226075404680e-06, + 3.159735825715060812e-06, + 3.166181469646960246e-06, + 3.172621148118435083e-06, + 3.179054851387779303e-06, + 3.185482569725424866e-06, + 3.191904293410703932e-06, + 3.198320012736048449e-06, + 3.204729718003677831e-06, + 3.211133399527159190e-06, + 3.217531047631079541e-06, + 3.223922652651098733e-06, + 3.230308204933614030e-06, + 3.236687694837020071e-06, + 3.243061112729908078e-06, + 3.249428448991976837e-06, + 3.255789694015244807e-06, + 3.262144838201075339e-06, + 3.268493871962895223e-06, + 3.274836785725865624e-06, + 3.281173569925445509e-06, + 3.287504215008613068e-06, + 3.293828711433510811e-06, + 3.300147049669235500e-06, + 3.306459220197018492e-06, + 3.312765213508428757e-06, + 3.319065020106321979e-06, + 3.325358630506004803e-06, + 3.331646035232314689e-06, + 3.337927224822273666e-06, + 3.344202189824809233e-06, + 3.350470920799327112e-06, + 3.356733408316858128e-06, + 3.362989642959798170e-06, + 3.369239615321912429e-06, + 3.375483316008104153e-06, + 3.381720735635504781e-06, + 3.387951864831818844e-06, + 3.394176694236479312e-06, + 3.400395214500362993e-06, + 3.406607416285513981e-06, + 3.412813290266313824e-06, + 3.419012827127776454e-06, + 3.425206017566706078e-06, + 3.431392852291415961e-06, + 3.437573322021739441e-06, + 3.443747417488809277e-06, + 3.449915129436128718e-06, + 3.456076448617923182e-06, + 3.462231365800312968e-06, + 3.468379871760989270e-06, + 3.474521957288984631e-06, + 3.480657613185793988e-06, + 3.486786830263735664e-06, + 3.492909599347014823e-06, + 3.499025911271539654e-06, + 3.505135756884877760e-06, + 3.511239127046015168e-06, + 3.517336012626502369e-06, + 3.523426404509003351e-06, + 3.529510293587123649e-06, + 3.535587670767880294e-06, + 3.541658526968918041e-06, + 3.547722853119662601e-06, + 3.553780640162169793e-06, + 3.559831879049442915e-06, + 3.565876560746596142e-06, + 3.571914676230556792e-06, + 3.577946216489815878e-06, + 3.583971172525565250e-06, + 3.589989535350280081e-06, + 3.596001295987490597e-06, + 3.602006445474316818e-06, + 3.608004974858620840e-06, + 3.613996875200223589e-06, + 3.619982137571688757e-06, + 3.625960753056709203e-06, + 3.631932712751202587e-06, + 3.637898007763047944e-06, + 3.643856629212126346e-06, + 3.649808568230037138e-06, + 3.655753815961473528e-06, + 3.661692363561237635e-06, + 3.667624202198102965e-06, + 3.673549323051778643e-06, + 3.679467717314036812e-06, + 3.685379376189808698e-06, + 3.691284290894496122e-06, + 3.697182452656408418e-06, + 3.703073852716492652e-06, + 3.708958482327046130e-06, + 3.714836332752468991e-06, + 3.720707395270419553e-06, + 3.726571661168798460e-06, + 3.732429121749612841e-06, + 3.738279768325926148e-06, + 3.744123592223048232e-06, + 3.749960584779586941e-06, + 3.755790737344715586e-06, + 3.761614041280687362e-06, + 3.767430487962541427e-06, + 3.773240068776760777e-06, + 3.779042775122127749e-06, + 3.784838598410758674e-06, + 3.790627530065486542e-06, + 3.796409561522263616e-06, + 3.802184684229884869e-06, + 3.807952889648702617e-06, + 3.813714169251667098e-06, + 3.819468514524113863e-06, + 3.825215916963472825e-06, + 3.830956368080360081e-06, + 3.836689859397012599e-06, + 3.842416382448059435e-06, + 3.848135928781629661e-06, + 3.853848489956697754e-06, + 3.859554057545479861e-06, + 3.865252623133178836e-06, + 3.870944178316674729e-06, + 3.876628714705614072e-06, + 3.882306223922142215e-06, + 3.887976697600622110e-06, + 3.893640127388787124e-06, + 3.899296504946045282e-06, + 3.904945821944654095e-06, + 3.910588070069439351e-06, + 3.916223241017751066e-06, + 3.921851326499326268e-06, + 3.927472318237218188e-06, + 3.933086207966347836e-06, + 3.938692987434486559e-06, + 3.944292648402049364e-06, + 3.949885182642094921e-06, + 3.955470581940062978e-06, + 3.961048838094854333e-06, + 3.966619942917264665e-06, + 3.972183888231032319e-06, + 3.977740665872595203e-06, + 3.983290267690856163e-06, + 3.988832685548203657e-06, + 3.994367911318997259e-06, + 3.999895936890591721e-06, + 4.005416754163128606e-06, + 4.010930355049496477e-06, + 4.016436731475103888e-06, + 4.021935875378943264e-06, + 4.027427778712025576e-06, + 4.032912433438462010e-06, + 4.038389831535139549e-06, + 4.043859964991869205e-06, + 4.049322825810968431e-06, + 4.054778406008446120e-06, + 4.060226697612386468e-06, + 4.065667692664038257e-06, + 4.071101383217520086e-06, + 4.076527761339644191e-06, + 4.081946819110857497e-06, + 4.087358548624066784e-06, + 4.092762941984344767e-06, + 4.098159991311246728e-06, + 4.103549688736273657e-06, + 4.108932026403893769e-06, + 4.114306996472348885e-06, + 4.119674591112090802e-06, + 4.125034802506844327e-06, + 4.130387622853375185e-06, + 4.135733044361436655e-06, + 4.141071059253626427e-06, + 4.146401659766553807e-06, + 4.151724838148171569e-06, + 4.157040586661226762e-06, + 4.162348897580606961e-06, + 4.167649763194244045e-06, + 4.172943175804198404e-06, + 4.178229127724152570e-06, + 4.183507611281682104e-06, + 4.188778618817968462e-06, + 4.194042142686630081e-06, + 4.199298175254429658e-06, + 4.204546708902307527e-06, + 4.209787736022662683e-06, + 4.215021249022790888e-06, + 4.220247240322242781e-06, + 4.225465702353755605e-06, + 4.230676627564288290e-06, + 4.235880008412566745e-06, + 4.241075837371319183e-06, + 4.246264106926999984e-06, + 4.251444809578585216e-06, + 4.256617937838384095e-06, + 4.261783484232905495e-06, + 4.266941441300565033e-06, + 4.272091801593781474e-06, + 4.277234557678766669e-06, + 4.282369702134387139e-06, + 4.287497227553071252e-06, + 4.292617126540572050e-06, + 4.297729391715830030e-06, + 4.302834015711810016e-06, + 4.307930991174209429e-06, + 4.313020310762049520e-06, + 4.318101967148789214e-06, + 4.323175953019833992e-06, + 4.328242261074703442e-06, + 4.333300884026888963e-06, + 4.338351814602553565e-06, + 4.343395045541619463e-06, + 4.348430569597401307e-06, + 4.353458379536521485e-06, + 4.358478468139781715e-06, + 4.363490828200735795e-06, + 4.368495452526727221e-06, + 4.373492333938576630e-06, + 4.378481465270682596e-06, + 4.383462839370698067e-06, + 4.388436449100528163e-06, + 4.393402287334988485e-06, + 4.398360346962627577e-06, + 4.403310620885621895e-06, + 4.408253102019683484e-06, + 4.413187783293951553e-06, + 4.418114657651807324e-06, + 4.423033718049600094e-06, + 4.427944957457520524e-06, + 4.432848368859380413e-06, + 4.437743945252417878e-06, + 4.442631679648232482e-06, + 4.447511565071371531e-06, + 4.452383594560302471e-06, + 4.457247761167189272e-06, + 4.462104057957836522e-06, + 4.466952478011604724e-06, + 4.471793014422207355e-06, + 4.476625660296375939e-06, + 4.481450408754852775e-06, + 4.486267252932065673e-06, + 4.491076185976235525e-06, + 4.495877201049102718e-06, + 4.500670291326882585e-06, + 4.505455449998824600e-06, + 4.510232670268273716e-06, + 4.515001945352315451e-06, + 4.519763268481638674e-06, + 4.524516632901422445e-06, + 4.529262031870231488e-06, + 4.533999458659781558e-06, + 4.538728906556970631e-06, + 4.543450368861680001e-06, + 4.548163838887629790e-06, + 4.552869309963311525e-06, + 4.557566775429546145e-06, + 4.562256228642594306e-06, + 4.566937662971727089e-06, + 4.571611071800137411e-06, + 4.576276448525580377e-06, + 4.580933786559310256e-06, + 4.585583079325847549e-06, + 4.590224320264977984e-06, + 4.594857502829584111e-06, + 4.599482620486458457e-06, + 4.604099666717302175e-06, + 4.608708635016454150e-06, + 4.613309518892889994e-06, + 4.617902311870029777e-06, + 4.622487007484646190e-06, + 4.627063599287538795e-06, + 4.631632080844379356e-06, + 4.636192445733363866e-06, + 4.640744687548246620e-06, + 4.645288799895992238e-06, + 4.649824776397561713e-06, + 4.654352610688909368e-06, + 4.658872296418733985e-06, + 4.663383827250479493e-06, + 4.667887196862118979e-06, + 4.672382398945087424e-06, + 4.676869427204900885e-06, + 4.681348275362089079e-06, + 4.685818937149778794e-06, + 4.690281406316747448e-06, + 4.694735676625055630e-06, + 4.699181741851128760e-06, + 4.703619595785566507e-06, + 4.708049232233133472e-06, + 4.712470645012547431e-06, + 4.716883827957354318e-06, + 4.721288774914676310e-06, + 4.725685479746004652e-06, + 4.730073936327081071e-06, + 4.734454138547867285e-06, + 4.738826080312344251e-06, + 4.743189755539311769e-06, + 4.747545158161243293e-06, + 4.751892282125035551e-06, + 4.756231121391856086e-06, + 4.760561669936938268e-06, + 4.764883921750396140e-06, + 4.769197870836036037e-06, + 4.773503511212134154e-06, + 4.777800836911299332e-06, + 4.782089841980392588e-06, + 4.786370520480435636e-06, + 4.790642866487386770e-06, + 4.794906874090873701e-06, + 4.799162537395111740e-06, + 4.803409850518675101e-06, + 4.807648807594445235e-06, + 4.811879402769507483e-06, + 4.816101630205895627e-06, + 4.820315484079418746e-06, + 4.824520958580489611e-06, + 4.828718047913887523e-06, + 4.832906746298630403e-06, + 4.837087047968715953e-06, + 4.841258947171966296e-06, + 4.845422438170826736e-06, + 4.849577515242175168e-06, + 4.853724172677321236e-06, + 4.857862404781819983e-06, + 4.861992205876314652e-06, + 4.866113570295269520e-06, + 4.870226492387828794e-06, + 4.874330966517608238e-06, + 4.878426987062525767e-06, + 4.882514548415560390e-06, + 4.886593644983620571e-06, + 4.890664271188288776e-06, + 4.894726421465706269e-06, + 4.898780090266489263e-06, + 4.902825272055598473e-06, + 4.906861961313120929e-06, + 4.910890152533290804e-06, + 4.914909840224316623e-06, + 4.918921018910100734e-06, + 4.922923683128387701e-06, + 4.926917827431434300e-06, + 4.930903446386855712e-06, + 4.934880534575546050e-06, + 4.938849086594278756e-06, + 4.942809097053694895e-06, + 4.946760560579048544e-06, + 4.950703471810727718e-06, + 4.954637825403430205e-06, + 4.958563616025835770e-06, + 4.962480838362446748e-06, + 4.966389487111633102e-06, + 4.970289556986406604e-06, + 4.974181042715184015e-06, + 4.978063939039717782e-06, + 4.981938240717778594e-06, + 4.985803942521020008e-06, + 4.989661039235979644e-06, + 4.993509525663690398e-06, + 4.997349396620624883e-06, + 5.001180646936658312e-06, + 5.005003271457656187e-06, + 5.008817265043482925e-06, + 5.012622622568705740e-06, + 5.016419338923345961e-06, + 5.020207409011053678e-06, + 5.023986827750811124e-06, + 5.027757590076657391e-06, + 5.031519690936864265e-06, + 5.035273125294429198e-06, + 5.039017888127908793e-06, + 5.042753974429313075e-06, + 5.046481379206674545e-06, + 5.050200097482123722e-06, + 5.053910124292770899e-06, + 5.057611454690480841e-06, + 5.061304083741936302e-06, + 5.064988006528483874e-06, + 5.068663218146761633e-06, + 5.072329713707762324e-06, + 5.075987488337406799e-06, + 5.079636537176498281e-06, + 5.083276855380681701e-06, + 5.086908438120227710e-06, + 5.090531280580830583e-06, + 5.094145377962495215e-06, + 5.097750725480266417e-06, + 5.101347318364057820e-06, + 5.104935151858493472e-06, + 5.108514221223582083e-06, + 5.112084521733705665e-06, + 5.115646048678305628e-06, + 5.119198797361733703e-06, + 5.122742763103259565e-06, + 5.126277941236834512e-06, + 5.129804327111902922e-06, + 5.133321916092274849e-06, + 5.136830703556876500e-06, + 5.140330684899558802e-06, + 5.143821855529121965e-06, + 5.147304210869121515e-06, + 5.150777746358601820e-06, + 5.154242457451026292e-06, + 5.157698339614983809e-06, + 5.161145388334032864e-06, + 5.164583599106582129e-06, + 5.168012967446432561e-06, + 5.171433488881950695e-06, + 5.174845158956599734e-06, + 5.178247973228858233e-06, + 5.181641927272214173e-06, + 5.185027016674959127e-06, + 5.188403237040929421e-06, + 5.191770583988454109e-06, + 5.195129053151055481e-06, + 5.198478640177283033e-06, + 5.201819340730541528e-06, + 5.205151150489766926e-06, + 5.208474065148617464e-06, + 5.211788080415306793e-06, + 5.215093192014053255e-06, + 5.218389395683495925e-06, + 5.221676687177357842e-06, + 5.224955062264861052e-06, + 5.228224516730039668e-06, + 5.231485046371461195e-06, + 5.234736647003762198e-06, + 5.237979314456026236e-06, + 5.241213044572432691e-06, + 5.244437833212871711e-06, + 5.247653676251250992e-06, + 5.250860569577684513e-06, + 5.254058509096730702e-06, + 5.257247490728092941e-06, + 5.260427510407065098e-06, + 5.263598564083733623e-06, + 5.266760647722896236e-06, + 5.269913757305358734e-06, + 5.273057888826435738e-06, + 5.276193038296656278e-06, + 5.279319201742254219e-06, + 5.282436375203558903e-06, + 5.285544554737126282e-06, + 5.288643736414038077e-06, + 5.291733916320769136e-06, + 5.294815090558724959e-06, + 5.297887255245142938e-06, + 5.300950406511349165e-06, + 5.304004540504938693e-06, + 5.307049653388079775e-06, + 5.310085741338102558e-06, + 5.313112800548200419e-06, + 5.316130827225819758e-06, + 5.319139817594061840e-06, + 5.322139767891548961e-06, + 5.325130674371664659e-06, + 5.328112533303006879e-06, + 5.331085340969996989e-06, + 5.334049093671233993e-06, + 5.337003787721579081e-06, + 5.339949419450587771e-06, + 5.342885985202971542e-06, + 5.345813481339316116e-06, + 5.348731904234593223e-06, + 5.351641250279414210e-06, + 5.354541515879967361e-06, + 5.357432697457261492e-06, + 5.360314791447702787e-06, + 5.363187794302982139e-06, + 5.366051702490031950e-06, + 5.368906512490929574e-06, + 5.371752220803456353e-06, + 5.374588823940247201e-06, + 5.377416318429386065e-06, + 5.380234700814197555e-06, + 5.383043967653192736e-06, + 5.385844115520595134e-06, + 5.388635141005508950e-06, + 5.391417040712464547e-06, + 5.394189811261326975e-06, + 5.396953449287218040e-06, + 5.399707951440533248e-06, + 5.402453314387291624e-06, + 5.405189534808497057e-06, + 5.407916609400562657e-06, + 5.410634534875274336e-06, + 5.413343307959586670e-06, + 5.416042925396170088e-06, + 5.418733383942709521e-06, + 5.421414680372299126e-06, + 5.424086811473375366e-06, + 5.426749774049765296e-06, + 5.429403564920462938e-06, + 5.432048180920286588e-06, + 5.434683618898938603e-06, + 5.437309875721638135e-06, + 5.439926948269009327e-06, + 5.442534833437011006e-06, + 5.445133528136838425e-06, + 5.447723029295437419e-06, + 5.450303333854780183e-06, + 5.452874438772330301e-06, + 5.455436341020921615e-06, + 5.457989037588664208e-06, + 5.460532525479431443e-06, + 5.463066801712237399e-06, + 5.465591863321103039e-06, + 5.468107707356218336e-06, + 5.470614330882646315e-06, + 5.473111730980865152e-06, + 5.475599904747159509e-06, + 5.478078849292821774e-06, + 5.480548561744680614e-06, + 5.483009039244981544e-06, + 5.485460278951403866e-06, + 5.487902278036894649e-06, + 5.490335033690348901e-06, + 5.492758543115161138e-06, + 5.495172803531122740e-06, + 5.497577812172879506e-06, + 5.499973566290514408e-06, + 5.502360063149942310e-06, + 5.504737300032279781e-06, + 5.507105274233665513e-06, + 5.509463983066459732e-06, + 5.511813423857980414e-06, + 5.514153593950972550e-06, + 5.516484490704109581e-06, + 5.518806111490711847e-06, + 5.521118453700357634e-06, + 5.523421514737598232e-06, + 5.525715292022494950e-06, + 5.527999782990857135e-06, + 5.530274985093789853e-06, + 5.532540895797481287e-06, + 5.534797512584276773e-06, + 5.537044832951548859e-06, + 5.539282854412106421e-06, + 5.541511574494758787e-06, + 5.543730990743028249e-06, + 5.545941100716325740e-06, + 5.548141901989732306e-06, + 5.550333392153473092e-06, + 5.552515568813384063e-06, + 5.554688429590784944e-06, + 5.556851972122366567e-06, + 5.559006194060649118e-06, + 5.561151093073309588e-06, + 5.563286666843527367e-06, + 5.565412913070395899e-06, + 5.567529829467879137e-06, + 5.569637413765758530e-06, + 5.571735663709503423e-06, + 5.573824577059825518e-06, + 5.575904151592963479e-06, + 5.577974385100760859e-06, + 5.580035275390384035e-06, + 5.582086820284869393e-06, + 5.584129017622433846e-06, + 5.586161865256900041e-06, + 5.588185361057628595e-06, + 5.590199502909472361e-06, + 5.592204288712730683e-06, + 5.594199716383528023e-06, + 5.596185783853162589e-06, + 5.598162489068567971e-06, + 5.600129829992237756e-06, + 5.602087804602145902e-06, + 5.604036410891743357e-06, + 5.605975646870227407e-06, + 5.607905510562130873e-06, + 5.609826000007518618e-06, + 5.611737113262050228e-06, + 5.613638848396770796e-06, + 5.615531203498604742e-06, + 5.617414176669685809e-06, + 5.619287766027766180e-06, + 5.621151969706188528e-06, + 5.623006785853780982e-06, + 5.624852212634844420e-06, + 5.626688248229488746e-06, + 5.628514890833091629e-06, + 5.630332138656645794e-06, + 5.632139989926726829e-06, + 5.633938442885438132e-06, + 5.635727495790302485e-06, + 5.637507146914713531e-06, + 5.639277394547304727e-06, + 5.641038236992364392e-06, + 5.642789672569711198e-06, + 5.644531699614643340e-06, + 5.646264316478259567e-06, + 5.647987521527062771e-06, + 5.649701313142788882e-06, + 5.651405689723306420e-06, + 5.653100649681655960e-06, + 5.654786191446421132e-06, + 5.656462313462034398e-06, + 5.658129014188207849e-06, + 5.659786292100291495e-06, + 5.661434145689186029e-06, + 5.663072573461368228e-06, + 5.664701573938749506e-06, + 5.666321145659168885e-06, + 5.667931287175441773e-06, + 5.669531997056467045e-06, + 5.671123273886441833e-06, + 5.672705116265095316e-06, + 5.674277522807928424e-06, + 5.675840492145908908e-06, + 5.677394022925228246e-06, + 5.678938113808207114e-06, + 5.680472763472352642e-06, + 5.681997970610721792e-06, + 5.683513733932353343e-06, + 5.685020052161132022e-06, + 5.686516924037186950e-06, + 5.688004348315823542e-06, + 5.689482323767924145e-06, + 5.690950849180188602e-06, + 5.692409923354689556e-06, + 5.693859545108828404e-06, + 5.695299713276076455e-06, + 5.696730426705092316e-06, + 5.698151684260137788e-06, + 5.699563484821328591e-06, + 5.700965827283880496e-06, + 5.702358710558809832e-06, + 5.703742133572817433e-06, + 5.705116095267982019e-06, + 5.706480594601962632e-06, + 5.707835630548029132e-06, + 5.709181202094888555e-06, + 5.710517308247060346e-06, + 5.711843948024391015e-06, + 5.713161120462267582e-06, + 5.714468824611974183e-06, + 5.715767059539882304e-06, + 5.717055824328114009e-06, + 5.718335118074539399e-06, + 5.719604939892336153e-06, + 5.720865288910324958e-06, + 5.722116164272858539e-06, + 5.723357565139824209e-06, + 5.724589490686810730e-06, + 5.725811940104787287e-06, + 5.727024912600327108e-06, + 5.728228407395578661e-06, + 5.729422423728205517e-06, + 5.730606960851385503e-06, + 5.731782018034028390e-06, + 5.732947594560402346e-06, + 5.734103689730382127e-06, + 5.735250302859405020e-06, + 5.736387433278433583e-06, + 5.737515080333911592e-06, + 5.738633243388038486e-06, + 5.739741921818322128e-06, + 5.740841115017969290e-06, + 5.741930822395612908e-06, + 5.743011043375454386e-06, + 5.744081777397352528e-06, + 5.745143023916581294e-06, + 5.746194782403959391e-06, + 5.747237052345879073e-06, + 5.748269833244234146e-06, + 5.749293124616427589e-06, + 5.750306925995569758e-06, + 5.751311236930086213e-06, + 5.752306056984033661e-06, + 5.753291385736982216e-06, + 5.754267222784032341e-06, + 5.755233567735714052e-06, + 5.756190420218342671e-06, + 5.757137779873518229e-06, + 5.758075646358423623e-06, + 5.759004019345785649e-06, + 5.759922898523786071e-06, + 5.760832283596275063e-06, + 5.761732174282517956e-06, + 5.762622570317178290e-06, + 5.763503471450670184e-06, + 5.764374877448792416e-06, + 5.765236788092773318e-06, + 5.766089203179570620e-06, + 5.766932122521470811e-06, + 5.767765545946311055e-06, + 5.768589473297419058e-06, + 5.769403904433616448e-06, + 5.770208839229368709e-06, + 5.771004277574493794e-06, + 5.771790219374186694e-06, + 5.772566664549457352e-06, + 5.773333613036580090e-06, + 5.774091064787304524e-06, + 5.774839019769081718e-06, + 5.775577477964695729e-06, + 5.776306439372304259e-06, + 5.777025904005789332e-06, + 5.777735871894383747e-06, + 5.778436343082764260e-06, + 5.779127317631280272e-06, + 5.779808795615421053e-06, + 5.780480777126513698e-06, + 5.781143262271118337e-06, + 5.781796251171296655e-06, + 5.782439743964717763e-06, + 5.783073740804386304e-06, + 5.783698241858693276e-06, + 5.784313247311688773e-06, + 5.784918757362799080e-06, + 5.785514772226809730e-06, + 5.786101292134183987e-06, + 5.786678317330527525e-06, + 5.787245848077207606e-06, + 5.787803884650816064e-06, + 5.788352427343491173e-06, + 5.788891476462787209e-06, + 5.789421032331704939e-06, + 5.789941095288640802e-06, + 5.790451665687550385e-06, + 5.790952743897657044e-06, + 5.791444330303681449e-06, + 5.791926425305880550e-06, + 5.792399029319731629e-06, + 5.792862142776231310e-06, + 5.793315766121888774e-06, + 5.793759899818471656e-06, + 5.794194544343254223e-06, + 5.794619700188887778e-06, + 5.795035367863426918e-06, + 5.795441547890378660e-06, + 5.795838240808613510e-06, + 5.796225447172376462e-06, + 5.796603167551408137e-06, + 5.796971402530716075e-06, + 5.797330152710742449e-06, + 5.797679418707381009e-06, + 5.798019201151863578e-06, + 5.798349500690761745e-06, + 5.798670317986097825e-06, + 5.798981653715238986e-06, + 5.799283508570900630e-06, + 5.799575883261237028e-06, + 5.799858778509709186e-06, + 5.800132195055128887e-06, + 5.800396133651742547e-06, + 5.800650595069054188e-06, + 5.800895580092049900e-06, + 5.801131089520981001e-06, + 5.801357124171417398e-06, + 5.801573684874348389e-06, + 5.801780772476070001e-06, + 5.801978387838179067e-06, + 5.802166531837701123e-06, + 5.802345205366936251e-06, + 5.802514409333491266e-06, + 5.802674144660325455e-06, + 5.802824412285708224e-06, + 5.802965213163244512e-06, + 5.803096548261845990e-06, + 5.803218418565705650e-06, + 5.803330825074393522e-06, + 5.803433768802697427e-06, + 5.803527250780713614e-06, + 5.803611272053953485e-06, + 5.803685833683102190e-06, + 5.803750936744111800e-06, + 5.803806582328310576e-06, + 5.803852771542286924e-06, + 5.803889505507866526e-06, + 5.803916785362183491e-06, + 5.803934612257629531e-06, + 5.803942987361871751e-06, + 5.803941911857795050e-06, + 5.803931386943603766e-06, + 5.803911413832742052e-06, + 5.803881993753929453e-06, + 5.803843127951020300e-06, + 5.803794817683235796e-06, + 5.803737064225004772e-06, + 5.803669868865932349e-06, + 5.803593232910940545e-06, + 5.803507157680117504e-06, + 5.803411644508804736e-06, + 5.803306694747536985e-06, + 5.803192309762093891e-06, + 5.803068490933432231e-06, + 5.802935239657766388e-06, + 5.802792557346441294e-06, + 5.802640445426034072e-06, + 5.802478905338353194e-06, + 5.802307938540345305e-06, + 5.802127546504170607e-06, + 5.801937730717123242e-06, + 5.801738492681740555e-06, + 5.801529833915701451e-06, + 5.801311755951824706e-06, + 5.801084260338124863e-06, + 5.800847348637780897e-06, + 5.800601022429120969e-06, + 5.800345283305592776e-06, + 5.800080132875822845e-06, + 5.799805572763584350e-06, + 5.799521604607740352e-06, + 5.799228230062309028e-06, + 5.798925450796477222e-06, + 5.798613268494498798e-06, + 5.798291684855770029e-06, + 5.797960701594788938e-06, + 5.797620320441162075e-06, + 5.797270543139616376e-06, + 5.796911371449968667e-06, + 5.796542807147096021e-06, + 5.796164852021028930e-06, + 5.795777507876858133e-06, + 5.795380776534706661e-06, + 5.794974659829845036e-06, + 5.794559159612547276e-06, + 5.794134277748199310e-06, + 5.793700016117225294e-06, + 5.793256376615112169e-06, + 5.792803361152414745e-06, + 5.792340971654687938e-06, + 5.791869210062557077e-06, + 5.791388078331670464e-06, + 5.790897578432721401e-06, + 5.790397712351394829e-06, + 5.789888482088451176e-06, + 5.789369889659634041e-06, + 5.788841937095662563e-06, + 5.788304626442300034e-06, + 5.787757959760306462e-06, + 5.787201939125413167e-06, + 5.786636566628392228e-06, + 5.786061844374892167e-06, + 5.785477774485683584e-06, + 5.784884359096388107e-06, + 5.784281600357642720e-06, + 5.783669500435049780e-06, + 5.783048061509167711e-06, + 5.782417285775470334e-06, + 5.781777175444405323e-06, + 5.781127732741380646e-06, + 5.780468959906695957e-06, + 5.779800859195619678e-06, + 5.779123432878310220e-06, + 5.778436683239826154e-06, + 5.777740612580194815e-06, + 5.777035223214314896e-06, + 5.776320517471963225e-06, + 5.775596497697911653e-06, + 5.774863166251680567e-06, + 5.774120525507725243e-06, + 5.773368577855472262e-06, + 5.772607325699079801e-06, + 5.771836771457653628e-06, + 5.771056917565125132e-06, + 5.770267766470308912e-06, + 5.769469320636852813e-06, + 5.768661582543229449e-06, + 5.767844554682785331e-06, + 5.767018239563680731e-06, + 5.766182639708860882e-06, + 5.765337757656123736e-06, + 5.764483595958147924e-06, + 5.763620157182298779e-06, + 5.762747443910797745e-06, + 5.761865458740696966e-06, + 5.760974204283739526e-06, + 5.760073683166528008e-06, + 5.759163898030440637e-06, + 5.758244851531564366e-06, + 5.757316546340857504e-06, + 5.756378985143940501e-06, + 5.755432170641165405e-06, + 5.754476105547759857e-06, + 5.753510792593550955e-06, + 5.752536234523178711e-06, + 5.751552434095971536e-06, + 5.750559394085959792e-06, + 5.749557117281981668e-06, + 5.748545606487513780e-06, + 5.747524864520694883e-06, + 5.746494894214407187e-06, + 5.745455698416260263e-06, + 5.744407279988405547e-06, + 5.743349641807849735e-06, + 5.742282786766122752e-06, + 5.741206717769499673e-06, + 5.740121437738882983e-06, + 5.739026949609755146e-06, + 5.737923256332380199e-06, + 5.736810360871606391e-06, + 5.735688266206785717e-06, + 5.734556975332057673e-06, + 5.733416491256136649e-06, + 5.732266817002198433e-06, + 5.731107955608245272e-06, + 5.729939910126781470e-06, + 5.728762683624787965e-06, + 5.727576279183981533e-06, + 5.726380699900584385e-06, + 5.725175948885395324e-06, + 5.723962029263822777e-06, + 5.722738944175686589e-06, + 5.721506696775470440e-06, + 5.720265290232227823e-06, + 5.719014727729355888e-06, + 5.717755012465011334e-06, + 5.716486147651789382e-06, + 5.715208136516681426e-06, + 5.713920982301306273e-06, + 5.712624688261751745e-06, + 5.711319257668572988e-06, + 5.710004693806874633e-06, + 5.708680999976077861e-06, + 5.707348179490245665e-06, + 5.706006235677811798e-06, + 5.704655171881694279e-06, + 5.703294991459256425e-06, + 5.701925697782312781e-06, + 5.700547294236990210e-06, + 5.699159784224006563e-06, + 5.697763171158393702e-06, + 5.696357458469647422e-06, + 5.694942649601643599e-06, + 5.693518748012698323e-06, + 5.692085757175348524e-06, + 5.690643680576698401e-06, + 5.689192521718144990e-06, + 5.687732284115439146e-06, + 5.686262971298803281e-06, + 5.684784586812576461e-06, + 5.683297134215639609e-06, + 5.681800617081145310e-06, + 5.680295038996572017e-06, + 5.678780403563711344e-06, + 5.677256714398711267e-06, + 5.675723975131899941e-06, + 5.674182189408027951e-06, + 5.672631360886091282e-06, + 5.671071493239360964e-06, + 5.669502590155373758e-06, + 5.667924655336007539e-06, + 5.666337692497212788e-06, + 5.664741705369347166e-06, + 5.663136697696987482e-06, + 5.661522673238914435e-06, + 5.659899635768211725e-06, + 5.658267589071965354e-06, + 5.656626536951627001e-06, + 5.654976483223039437e-06, + 5.653317431715799552e-06, + 5.651649386274038475e-06, + 5.649972350755998905e-06, + 5.648286329033913982e-06, + 5.646591324994356268e-06, + 5.644887342538038694e-06, + 5.643174385579751031e-06, + 5.641452458048513201e-06, + 5.639721563887289833e-06, + 5.637981707053285873e-06, + 5.636232891518028745e-06, + 5.634475121266703434e-06, + 5.632708400298915661e-06, + 5.630932732628329353e-06, + 5.629148122282413379e-06, + 5.627354573303124260e-06, + 5.625552089746270046e-06, + 5.623740675681568764e-06, + 5.621920335193011792e-06, + 5.620091072378612291e-06, + 5.618252891350130768e-06, + 5.616405796233823849e-06, + 5.614549791169479516e-06, + 5.612684880311197215e-06, + 5.610811067827031263e-06, + 5.608928357898758756e-06, + 5.607036754722542799e-06, + 5.605136262508306546e-06, + 5.603226885479810281e-06, + 5.601308627874949575e-06, + 5.599381493945566397e-06, + 5.597445487957175519e-06, + 5.595500614189704829e-06, + 5.593546876936467027e-06, + 5.591584280505008356e-06, + 5.589612829216688472e-06, + 5.587632527406761760e-06, + 5.585643379424307029e-06, + 5.583645389632470611e-06, + 5.581638562407914943e-06, + 5.579622902141446219e-06, + 5.577598413237700986e-06, + 5.575565100114859848e-06, + 5.573522967205345421e-06, + 5.571472018955226869e-06, + 5.569412259824181787e-06, + 5.567343694285956141e-06, + 5.565266326827981407e-06, + 5.563180161951496546e-06, + 5.561085204171564097e-06, + 5.558981458016781338e-06, + 5.556868928029757165e-06, + 5.554747618766733471e-06, + 5.552617534797730833e-06, + 5.550478680706480752e-06, + 5.548331061090470540e-06, + 5.546174680560715477e-06, + 5.544009543742135733e-06, + 5.541835655273285320e-06, + 5.539653019806363954e-06, + 5.537461642007283963e-06, + 5.535261526555666060e-06, + 5.533052678144575909e-06, + 5.530835101480921388e-06, + 5.528608801285209490e-06, + 5.526373782291535308e-06, + 5.524130049247726882e-06, + 5.521877606914902199e-06, + 5.519616460068130723e-06, + 5.517346613495876902e-06, + 5.515068072000264432e-06, + 5.512780840396926341e-06, + 5.510484923515176932e-06, + 5.508180326197598432e-06, + 5.505867053300583940e-06, + 5.503545109693991839e-06, + 5.501214500261133088e-06, + 5.498875229898879643e-06, + 5.496527303517707658e-06, + 5.494170726041251943e-06, + 5.491805502406959026e-06, + 5.489431637565612819e-06, + 5.487049136481490464e-06, + 5.484658004132404694e-06, + 5.482258245509310803e-06, + 5.479849865616819951e-06, + 5.477432869473183916e-06, + 5.475007262109578504e-06, + 5.472573048570909927e-06, + 5.470130233915472599e-06, + 5.467678823214599311e-06, + 5.465218821553623464e-06, + 5.462750234030622066e-06, + 5.460273065757333076e-06, + 5.457787321858902136e-06, + 5.455293007473487007e-06, + 5.452790127752759864e-06, + 5.450278687862021638e-06, + 5.447758692979262664e-06, + 5.445230148296163022e-06, + 5.442693059017685962e-06, + 5.440147430361673871e-06, + 5.437593267559811348e-06, + 5.435030575856769702e-06, + 5.432459360510206103e-06, + 5.429879626791375988e-06, + 5.427291379984693451e-06, + 5.424694625387424619e-06, + 5.422089368310699003e-06, + 5.419475614078177123e-06, + 5.416853368027043225e-06, + 5.414222635507703741e-06, + 5.411583421883305324e-06, + 5.408935732530727574e-06, + 5.406279572839712283e-06, + 5.403614948212886313e-06, + 5.400941864066346039e-06, + 5.398260325829243158e-06, + 5.395570338943455189e-06, + 5.392871908864642572e-06, + 5.390165041060847672e-06, + 5.387449741013538330e-06, + 5.384726014217174175e-06, + 5.381993866179235429e-06, + 5.379253302420232220e-06, + 5.376504328473846038e-06, + 5.373746949886370696e-06, + 5.370981172217488209e-06, + 5.368207001039729232e-06, + 5.365424441938617909e-06, + 5.362633500512634598e-06, + 5.359834182373314130e-06, + 5.357026493144851088e-06, + 5.354210438464637679e-06, + 5.351386023982952020e-06, + 5.348553255362954751e-06, + 5.345712138280802541e-06, + 5.342862678425212710e-06, + 5.340004881498156948e-06, + 5.337138753214330228e-06, + 5.334264299301283789e-06, + 5.331381525499418360e-06, + 5.328490437562109521e-06, + 5.325591041255205411e-06, + 5.322683342357688263e-06, + 5.319767346661260203e-06, + 5.316843059970390684e-06, + 5.313910488102351218e-06, + 5.310969636887297532e-06, + 5.308020512167769822e-06, + 5.305063119799436449e-06, + 5.302097465650576400e-06, + 5.299123555602183474e-06, + 5.296141395548117899e-06, + 5.293150991394519341e-06, + 5.290152349060670029e-06, + 5.287145474478306117e-06, + 5.284130373591937016e-06, + 5.281107052358663283e-06, + 5.278075516748379058e-06, + 5.275035772743251990e-06, + 5.271987826338406791e-06, + 5.268931683541494097e-06, + 5.265867350372759075e-06, + 5.262794832865165941e-06, + 5.259714137063851618e-06, + 5.256625269026932966e-06, + 5.253528234824938416e-06, + 5.250423040540946888e-06, + 5.247309692270546283e-06, + 5.244188196121998656e-06, + 5.241058558215715904e-06, + 5.237920784684812029e-06, + 5.234774881675282710e-06, + 5.231620855344875363e-06, + 5.228458711864236865e-06, + 5.225288457416517997e-06, + 5.222110098196811009e-06, + 5.218923640413460828e-06, + 5.215729090286414192e-06, + 5.212526454048506293e-06, + 5.209315737944918673e-06, + 5.206096948232903095e-06, + 5.202870091182274516e-06, + 5.199635173075638935e-06, + 5.196392200207140636e-06, + 5.193141178883810659e-06, + 5.189882115424947627e-06, + 5.186615016161704384e-06, + 5.183339887438401753e-06, + 5.180056735610730276e-06, + 5.176765567047202882e-06, + 5.173466388128448460e-06, + 5.170159205247469354e-06, + 5.166844024809006940e-06, + 5.163520853230962095e-06, + 5.160189696942451263e-06, + 5.156850562385392941e-06, + 5.153503456013882572e-06, + 5.150148384293645363e-06, + 5.146785353703357653e-06, + 5.143414370733524597e-06, + 5.140035441886445437e-06, + 5.136648573676964818e-06, + 5.133253772632089088e-06, + 5.129851045290334921e-06, + 5.126440398203305654e-06, + 5.123021837933684660e-06, + 5.119595371056832855e-06, + 5.116161004159993331e-06, + 5.112718743842441285e-06, + 5.109268596715511971e-06, + 5.105810569402689631e-06, + 5.102344668539019666e-06, + 5.098870900772013256e-06, + 5.095389272760987530e-06, + 5.091899791177240047e-06, + 5.088402462704039486e-06, + 5.084897294036717967e-06, + 5.081384291882113708e-06, + 5.077863462959446006e-06, + 5.074334813999655399e-06, + 5.070798351745590863e-06, + 5.067254082952173287e-06, + 5.063702014385708530e-06, + 5.060142152824813226e-06, + 5.056574505059786290e-06, + 5.052999077892764769e-06, + 5.049415878137752641e-06, + 5.045824912620639449e-06, + 5.042226188178704791e-06, + 5.038619711661461959e-06, + 5.035005489930015892e-06, + 5.031383529857257147e-06, + 5.027753838327800908e-06, + 5.024116422238147929e-06, + 5.020471288496077203e-06, + 5.016818444021491310e-06, + 5.013157895745898027e-06, + 5.009489650612429809e-06, + 5.005813715576053011e-06, + 5.002130097602947010e-06, + 4.998438803671363941e-06, + 4.994739840771069661e-06, + 4.991033215903397955e-06, + 4.987318936081341168e-06, + 4.983597008329579855e-06, + 4.979867439683961851e-06, + 4.976130237192328132e-06, + 4.972385407913900408e-06, + 4.968632958919503048e-06, + 4.964872897291592721e-06, + 4.961105230123654469e-06, + 4.957329964521042804e-06, + 4.953547107601019828e-06, + 4.949756666491394898e-06, + 4.945958648332078928e-06, + 4.942153060274424556e-06, + 4.938339909480723003e-06, + 4.934519203125173078e-06, + 4.930690948393245058e-06, + 4.926855152481778943e-06, + 4.923011822599017492e-06, + 4.919160965964674829e-06, + 4.915302589809261362e-06, + 4.911436701375690600e-06, + 4.907563307917104825e-06, + 4.903682416698608962e-06, + 4.899794034996618369e-06, + 4.895898170098287935e-06, + 4.891994829302473461e-06, + 4.888084019919678298e-06, + 4.884165749270756541e-06, + 4.880240024688410581e-06, + 4.876306853516554136e-06, + 4.872366243109726954e-06, + 4.868418200834691468e-06, + 4.864462734068348249e-06, + 4.860499850199376705e-06, + 4.856529556627440571e-06, + 4.852551860763539423e-06, + 4.848566770029109976e-06, + 4.844574291857869229e-06, + 4.840574433693500371e-06, + 4.836567202991405291e-06, + 4.832552607218056600e-06, + 4.828530653850359814e-06, + 4.824501350377215279e-06, + 4.820464704298081612e-06, + 4.816420723123116299e-06, + 4.812369414373970218e-06, + 4.808310785583273488e-06, + 4.804244844293978170e-06, + 4.800171598061183627e-06, + 4.796091054449727557e-06, + 4.792003221036107069e-06, + 4.787908105407686703e-06, + 4.783805715162129227e-06, + 4.779696057908939775e-06, + 4.775579141268062316e-06, + 4.771454972869922852e-06, + 4.767323560356317954e-06, + 4.763184911379734598e-06, + 4.759039033603449264e-06, + 4.754885934701610947e-06, + 4.750725622359285202e-06, + 4.746558104271817179e-06, + 4.742383388145864996e-06, + 4.738201481698628946e-06, + 4.734012392658100520e-06, + 4.729816128763119161e-06, + 4.725612697762758163e-06, + 4.721402107417320784e-06, + 4.717184365497598243e-06, + 4.712959479785035740e-06, + 4.708727458071784125e-06, + 4.704488308160795611e-06, + 4.700242037865105491e-06, + 4.695988655008922271e-06, + 4.691728167426859408e-06, + 4.687460582964142837e-06, + 4.683185909476738021e-06, + 4.678904154830616426e-06, + 4.674615326902850729e-06, + 4.670319433580875365e-06, + 4.666016482762611879e-06, + 4.661706482356501121e-06, + 4.657389440281678580e-06, + 4.653065364467184946e-06, + 4.648734262853057091e-06, + 4.644396143389608940e-06, + 4.640051014037584778e-06, + 4.635698882768157563e-06, + 4.631339757563035648e-06, + 4.626973646413864775e-06, + 4.622600557323127627e-06, + 4.618220498303503470e-06, + 4.613833477378037556e-06, + 4.609439502580292751e-06, + 4.605038581953550770e-06, + 4.600630723551811689e-06, + 4.596215935439903203e-06, + 4.591794225691822986e-06, + 4.587365602392552188e-06, + 4.582930073637317672e-06, + 4.578487647531051600e-06, + 4.574038332189408729e-06, + 4.569582135738092164e-06, + 4.565119066312976184e-06, + 4.560649132060143508e-06, + 4.556172341135972541e-06, + 4.551688701706257305e-06, + 4.547198221948214063e-06, + 4.542700910047903795e-06, + 4.538196774202192234e-06, + 4.533685822618023957e-06, + 4.529168063511912473e-06, + 4.524643505110733892e-06, + 4.520112155652003905e-06, + 4.515574023382121884e-06, + 4.511029116558251296e-06, + 4.506477443447562455e-06, + 4.501919012326428688e-06, + 4.497353831482526977e-06, + 4.492781909212190981e-06, + 4.488203253822393940e-06, + 4.483617873630055800e-06, + 4.479025776961452834e-06, + 4.474426972153083311e-06, + 4.469821467551968186e-06, + 4.465209271513773236e-06, + 4.460590392404818215e-06, + 4.455964838601257781e-06, + 4.451332618488266641e-06, + 4.446693740461991122e-06, + 4.442048212927809365e-06, + 4.437396044300457528e-06, + 4.432737243004991173e-06, + 4.428071817476089002e-06, + 4.423399776158097752e-06, + 4.418721127505279528e-06, + 4.414035879981009662e-06, + 4.409344042058957477e-06, + 4.404645622222421368e-06, + 4.399940628963607973e-06, + 4.395229070785486334e-06, + 4.390510956200131941e-06, + 4.385786293728775017e-06, + 4.381055091902851687e-06, + 4.376317359263176423e-06, + 4.371573104360108910e-06, + 4.366822335753803077e-06, + 4.362065062013264348e-06, + 4.357301291717706586e-06, + 4.352531033455591560e-06, + 4.347754295824869504e-06, + 4.342971087432966407e-06, + 4.338181416896972905e-06, + 4.333385292842807413e-06, + 4.328582723906419754e-06, + 4.323773718732972085e-06, + 4.318958285977009143e-06, + 4.314136434302482816e-06, + 4.309308172382889358e-06, + 4.304473508900449462e-06, + 4.299632452547352554e-06, + 4.294785012024908907e-06, + 4.289931196043689408e-06, + 4.285071013323817781e-06, + 4.280204472594020217e-06, + 4.275331582592923874e-06, + 4.270452352068170035e-06, + 4.265566789776641113e-06, + 4.260674904484438627e-06, + 4.255776704967042445e-06, + 4.250872200008512880e-06, + 4.245961398402670602e-06, + 4.241044308952281801e-06, + 4.236120940469275019e-06, + 4.231191301774658144e-06, + 4.226255401698769981e-06, + 4.221313249080402722e-06, + 4.216364852768023371e-06, + 4.211410221619002093e-06, + 4.206449364499690993e-06, + 4.201482290285706173e-06, + 4.196509007861010400e-06, + 4.191529526119027797e-06, + 4.186543853962749724e-06, + 4.181552000302865380e-06, + 4.176553974059886152e-06, + 4.171549784163218973e-06, + 4.166539439550558990e-06, + 4.161522949169149953e-06, + 4.156500321974882124e-06, + 4.151471566932520978e-06, + 4.146436693015696188e-06, + 4.141395709207054939e-06, + 4.136348624497252269e-06, + 4.131295447887205864e-06, + 4.126236188385144152e-06, + 4.121170855008907691e-06, + 4.116099456785109760e-06, + 4.111022002748449414e-06, + 4.105938501942771970e-06, + 4.100848963421303634e-06, + 4.095753396244638953e-06, + 4.090651809482939709e-06, + 4.085544212215014199e-06, + 4.080430613527437163e-06, + 4.075311022516940962e-06, + 4.070185448287373031e-06, + 4.065053899952015061e-06, + 4.059916386632749514e-06, + 4.054772917459365056e-06, + 4.049623501570616201e-06, + 4.044468148114474872e-06, + 4.039306866246113619e-06, + 4.034139665130055391e-06, + 4.028966553939330734e-06, + 4.023787541854574857e-06, + 4.018602638066161306e-06, + 4.013411851772270730e-06, + 4.008215192179019630e-06, + 4.003012668501648744e-06, + 3.997804289963527789e-06, + 3.992590065796398552e-06, + 3.987370005240610371e-06, + 3.982144117544159595e-06, + 3.976912411964027902e-06, + 3.971674897765548713e-06, + 3.966431584221395835e-06, + 3.961182480613899253e-06, + 3.955927596232967355e-06, + 3.950666940376279209e-06, + 3.945400522350463633e-06, + 3.940128351470106474e-06, + 3.934850437057972527e-06, + 3.929566788445252871e-06, + 3.924277414970628052e-06, + 3.918982325981580135e-06, + 3.913681530833491459e-06, + 3.908375038889894517e-06, + 3.903062859522383012e-06, + 3.897745002110883760e-06, + 3.892421476042677514e-06, + 3.887092290713790644e-06, + 3.881757455528054082e-06, + 3.876416979897304914e-06, + 3.871070873241408404e-06, + 3.865719144988392675e-06, + 3.860361804573601671e-06, + 3.854998861441003827e-06, + 3.849630325042267106e-06, + 3.844256204836987701e-06, + 3.838876510292878920e-06, + 3.833491250884838607e-06, + 3.828100436096370459e-06, + 3.822704075418542177e-06, + 3.817302178350290398e-06, + 3.811894754398352934e-06, + 3.806481813077492386e-06, + 3.801063363909589395e-06, + 3.795639416424954278e-06, + 3.790209980161458386e-06, + 3.784775064664684464e-06, + 3.779334679487913934e-06, + 3.773888834192395413e-06, + 3.768437538346351987e-06, + 3.762980801526370345e-06, + 3.757518633316467772e-06, + 3.752051043308273839e-06, + 3.746578041101301875e-06, + 3.741099636301943117e-06, + 3.735615838524653828e-06, + 3.730126657392159850e-06, + 3.724632102533321665e-06, + 3.719132183585497187e-06, + 3.713626910193533796e-06, + 3.708116292009098335e-06, + 3.702600338692054806e-06, + 3.697079059909468689e-06, + 3.691552465335883067e-06, + 3.686020564653517261e-06, + 3.680483367551283000e-06, + 3.674940883725951206e-06, + 3.669393122882442531e-06, + 3.663840094731585679e-06, + 3.658281808992507739e-06, + 3.652718275391682537e-06, + 3.647149503662189065e-06, + 3.641575503544871487e-06, + 3.635996284788586900e-06, + 3.630411857148012365e-06, + 3.624822230386061489e-06, + 3.619227414272850627e-06, + 3.613627418584769256e-06, + 3.608022253107085457e-06, + 3.602411927630550997e-06, + 3.596796451954081776e-06, + 3.591175835883705377e-06, + 3.585550089231891920e-06, + 3.579919221818690349e-06, + 3.574283243471978735e-06, + 3.568642164025259449e-06, + 3.562995993320069391e-06, + 3.557344741204997857e-06, + 3.551688417534709490e-06, + 3.546027032172542123e-06, + 3.540360594987168629e-06, + 3.534689115855194342e-06, + 3.529012604659953005e-06, + 3.523331071291721488e-06, + 3.517644525647701579e-06, + 3.511952977632254612e-06, + 3.506256437155896041e-06, + 3.500554914136771390e-06, + 3.494848418499879104e-06, + 3.489136960176061309e-06, + 3.483420549104491122e-06, + 3.477699195230380584e-06, + 3.471972908505276694e-06, + 3.466241698888203209e-06, + 3.460505576344733994e-06, + 3.454764550847167931e-06, + 3.449018632374751692e-06, + 3.443267830912741645e-06, + 3.437512156453782827e-06, + 3.431751618997222848e-06, + 3.425986228548061568e-06, + 3.420215995119412575e-06, + 3.414440928730303441e-06, + 3.408661039405831155e-06, + 3.402876337178430550e-06, + 3.397086832086884547e-06, + 3.391292534176485094e-06, + 3.385493453499108548e-06, + 3.379689600113341461e-06, + 3.373880984083581032e-06, + 3.368067615481421698e-06, + 3.362249504384668765e-06, + 3.356426660877603955e-06, + 3.350599095051158195e-06, + 3.344766817001961676e-06, + 3.338929836833761359e-06, + 3.333088164656436300e-06, + 3.327241810586259384e-06, + 3.321390784745812195e-06, + 3.315535097264264966e-06, + 3.309674758276363098e-06, + 3.303809777923868815e-06, + 3.297940166354596814e-06, + 3.292065933722574354e-06, + 3.286187090188401673e-06, + 3.280303645918065712e-06, + 3.274415611084562610e-06, + 3.268522995866799527e-06, + 3.262625810449874585e-06, + 3.256724065025022661e-06, + 3.250817769789884742e-06, + 3.244906934947452944e-06, + 3.238991570707329208e-06, + 3.233071687285955686e-06, + 3.227147294904324370e-06, + 3.221218403790483458e-06, + 3.215285024178528965e-06, + 3.209347166307796227e-06, + 3.203404840424377363e-06, + 3.197458056780103985e-06, + 3.191506825632759809e-06, + 3.185551157246332641e-06, + 3.179591061889964061e-06, + 3.173626549839217426e-06, + 3.167657631376320975e-06, + 3.161684316787828321e-06, + 3.155706616367212062e-06, + 3.149724540413734693e-06, + 3.143738099231740907e-06, + 3.137747303132135240e-06, + 3.131752162431357169e-06, + 3.125752687451629709e-06, + 3.119748888520905208e-06, + 3.113740775973133852e-06, + 3.107728360146952463e-06, + 3.101711651388520360e-06, + 3.095690660047834770e-06, + 3.089665396481620055e-06, + 3.083635871052231652e-06, + 3.077602094126619305e-06, + 3.071564076078895268e-06, + 3.065521827288004967e-06, + 3.059475358137937482e-06, + 3.053424679019007539e-06, + 3.047369800327087244e-06, + 3.041310732462506216e-06, + 3.035247485832970884e-06, + 3.029180070849788835e-06, + 3.023108497930821152e-06, + 3.017032777499114455e-06, + 3.010952919983133830e-06, + 3.004868935816775965e-06, + 2.998780835439575399e-06, + 2.992688629295705021e-06, + 2.986592327835435513e-06, + 2.980491941514410285e-06, + 2.974387480792562546e-06, + 2.968278956136680968e-06, + 2.962166378018077799e-06, + 2.956049756912801474e-06, + 2.949929103302966031e-06, + 2.943804427675637261e-06, + 2.937675740523110962e-06, + 2.931543052343160692e-06, + 2.925406373637951454e-06, + 2.919265714915575361e-06, + 2.913121086689331239e-06, + 2.906972499476531157e-06, + 2.900819963801236764e-06, + 2.894663490191794850e-06, + 2.888503089181089337e-06, + 2.882338771307872815e-06, + 2.876170547115676409e-06, + 2.869998427153056692e-06, + 2.863822421973573659e-06, + 2.857642542136040606e-06, + 2.851458798203444157e-06, + 2.845271200744509163e-06, + 2.839079760332680990e-06, + 2.832884487546258500e-06, + 2.826685392968751504e-06, + 2.820482487187725407e-06, + 2.814275780796425392e-06, + 2.808065284392675703e-06, + 2.801851008579111730e-06, + 2.795632963963213047e-06, + 2.789411161157478318e-06, + 2.783185610778408442e-06, + 2.776956323448054073e-06, + 2.770723309792927616e-06, + 2.764486580444281469e-06, + 2.758246146038323597e-06, + 2.752002017215134176e-06, + 2.745754204620294439e-06, + 2.739502718903742332e-06, + 2.733247570720057540e-06, + 2.726988770728428880e-06, + 2.720726329592907984e-06, + 2.714460257981319593e-06, + 2.708190566566560904e-06, + 2.701917266026944620e-06, + 2.695640367043605333e-06, + 2.689359880303326499e-06, + 2.683075816497347814e-06, + 2.676788186320563921e-06, + 2.670497000473143936e-06, + 2.664202269659429039e-06, + 2.657904004588146343e-06, + 2.651602215972721878e-06, + 2.645296914530124390e-06, + 2.638988110982229062e-06, + 2.632675816056088566e-06, + 2.626360040481414412e-06, + 2.620040794993350553e-06, + 2.613718090331293897e-06, + 2.607391937238130279e-06, + 2.601062346461795546e-06, + 2.594729328754176953e-06, + 2.588392894871396495e-06, + 2.582053055573767288e-06, + 2.575709821626065463e-06, + 2.569363203796104613e-06, + 2.563013212857805860e-06, + 2.556659859587252803e-06, + 2.550303154765771749e-06, + 2.543943109178742484e-06, + 2.537579733614539476e-06, + 2.531213038867236458e-06, + 2.524843035734120378e-06, + 2.518469735015923071e-06, + 2.512093147518243422e-06, + 2.505713284050623252e-06, + 2.499330155425477097e-06, + 2.492943772461093667e-06, + 2.486554145977755161e-06, + 2.480161286800764991e-06, + 2.473765205759302594e-06, + 2.467365913685326941e-06, + 2.460963421416303568e-06, + 2.454557739792706671e-06, + 2.448148879658263898e-06, + 2.441736851861340827e-06, + 2.435321667254097322e-06, + 2.428903336691308457e-06, + 2.422481871033194885e-06, + 2.416057281142867334e-06, + 2.409629577886569281e-06, + 2.403198772135088115e-06, + 2.396764874762590461e-06, + 2.390327896646901702e-06, + 2.383887848669768562e-06, + 2.377444741715691891e-06, + 2.370998586673648262e-06, + 2.364549394436171364e-06, + 2.358097175898236878e-06, + 2.351641941960051766e-06, + 2.345183703524509773e-06, + 2.338722471497437923e-06, + 2.332258256789001741e-06, + 2.325791070312582938e-06, + 2.319320922984971682e-06, + 2.312847825726704147e-06, + 2.306371789460879206e-06, + 2.299892825114839364e-06, + 2.293410943619014986e-06, + 2.286926155907225841e-06, + 2.280438472916606136e-06, + 2.273947905587912837e-06, + 2.267454464864367356e-06, + 2.260958161693301752e-06, + 2.254459007025066064e-06, + 2.247957011813237104e-06, + 2.241452187014652336e-06, + 2.234944543589619518e-06, + 2.228434092500814289e-06, + 2.221920844714936542e-06, + 2.215404811201554223e-06, + 2.208886002933385817e-06, + 2.202364430886556575e-06, + 2.195840106039446974e-06, + 2.189313039374367725e-06, + 2.182783241876423051e-06, + 2.176250724533770730e-06, + 2.169715498337598802e-06, + 2.163177574282383486e-06, + 2.156636963364759243e-06, + 2.150093676585175993e-06, + 2.143547724946766633e-06, + 2.136999119455602418e-06, + 2.130447871120681947e-06, + 2.123893990954190784e-06, + 2.117337489970341863e-06, + 2.110778379187071675e-06, + 2.104216669624880682e-06, + 2.097652372307103516e-06, + 2.091085498260161399e-06, + 2.084516058512433891e-06, + 2.077944064095626005e-06, + 2.071369526045071020e-06, + 2.064792455397117382e-06, + 2.058212863191989138e-06, + 2.051630760472595428e-06, + 2.045046158283685149e-06, + 2.038459067673526620e-06, + 2.031869499692751380e-06, + 2.025277465394614231e-06, + 2.018682975835274449e-06, + 2.012086042072619684e-06, + 2.005486675167674992e-06, + 1.998884886184901845e-06, + 1.992280686189550724e-06, + 1.985674086250569833e-06, + 1.979065097439385373e-06, + 1.972453730828761005e-06, + 1.965839997495647703e-06, + 1.959223908518586319e-06, + 1.952605474977959577e-06, + 1.945984707957421021e-06, + 1.939361618543022992e-06, + 1.932736217822029086e-06, + 1.926108516886079946e-06, + 1.919478526827130035e-06, + 1.912846258740596068e-06, + 1.906211723724206735e-06, + 1.899574932876803091e-06, + 1.892935897301220587e-06, + 1.886294628101689314e-06, + 1.879651136384057620e-06, + 1.873005433257263829e-06, + 1.866357529832434362e-06, + 1.859707437221694716e-06, + 1.853055166541364894e-06, + 1.846400728907853205e-06, + 1.839744135440856561e-06, + 1.833085397261860808e-06, + 1.826424525494435494e-06, + 1.819761531264220102e-06, + 1.813096425699171598e-06, + 1.806429219928391080e-06, + 1.799759925083865695e-06, + 1.793088552299575025e-06, + 1.786415112710276654e-06, + 1.779739617454455954e-06, + 1.773062077671623846e-06, + 1.766382504502634006e-06, + 1.759700909091101440e-06, + 1.753017302582236965e-06, + 1.746331696123081199e-06, + 1.739644100862844857e-06, + 1.732954527951640749e-06, + 1.726262988542274397e-06, + 1.719569493789049306e-06, + 1.712874054848019370e-06, + 1.706176682876997773e-06, + 1.699477389035799662e-06, + 1.692776184485091662e-06, + 1.686073080388092932e-06, + 1.679368087909400120e-06, + 1.672661218215279163e-06, + 1.665952482473610018e-06, + 1.659241891854200915e-06, + 1.652529457527562696e-06, + 1.645815190666671494e-06, + 1.639099102445785424e-06, + 1.632381204040682182e-06, + 1.625661506628966509e-06, + 1.618940021388872495e-06, + 1.612216759500995969e-06, + 1.605491732147110348e-06, + 1.598764950510439590e-06, + 1.592036425775638932e-06, + 1.585306169129079906e-06, + 1.578574191757629350e-06, + 1.571840504850425209e-06, + 1.565105119597666970e-06, + 1.558368047190897093e-06, + 1.551629298822974749e-06, + 1.544888885688350474e-06, + 1.538146818981897259e-06, + 1.531403109900614574e-06, + 1.524657769642465175e-06, + 1.517910809406645736e-06, + 1.511162240393850269e-06, + 1.504412073805079205e-06, + 1.497660320843100307e-06, + 1.490906992712733486e-06, + 1.484152100618143475e-06, + 1.477395655765811430e-06, + 1.470637669363307367e-06, + 1.463878152618111516e-06, + 1.457117116740827756e-06, + 1.450354572941036957e-06, + 1.443590532430536467e-06, + 1.436825006422125247e-06, + 1.430058006128704540e-06, + 1.423289542764735399e-06, + 1.416519627546539173e-06, + 1.409748271689559473e-06, + 1.402975486411378456e-06, + 1.396201282930446489e-06, + 1.389425672464924041e-06, + 1.382648666235611573e-06, + 1.375870275463255120e-06, + 1.369090511368826667e-06, + 1.362309385175008356e-06, + 1.355526908105263507e-06, + 1.348743091382618581e-06, + 1.341957946232967883e-06, + 1.335171483880825688e-06, + 1.328383715552611882e-06, + 1.321594652475459133e-06, + 1.314804305875965839e-06, + 1.308012686983187432e-06, + 1.301219807025923750e-06, + 1.294425677232992208e-06, + 1.287630308834724078e-06, + 1.280833713062021537e-06, + 1.274035901145158258e-06, + 1.267236884317054686e-06, + 1.260436673809062555e-06, + 1.253635280854244187e-06, + 1.246832716685851637e-06, + 1.240028992537615746e-06, + 1.233224119643722210e-06, + 1.226418109239092376e-06, + 1.219610972558158851e-06, + 1.212802720836676462e-06, + 1.205993365310761928e-06, + 1.199182917215697220e-06, + 1.192371387788924665e-06, + 1.185558788267303409e-06, + 1.178745129887398676e-06, + 1.171930423886971489e-06, + 1.165114681503753015e-06, + 1.158297913975730222e-06, + 1.151480132541421171e-06, + 1.144661348438656976e-06, + 1.137841572906387260e-06, + 1.131020817183417439e-06, + 1.124199092508727416e-06, + 1.117376410121437067e-06, + 1.110552781261098467e-06, + 1.103728217166459644e-06, + 1.096902729077257539e-06, + 1.090076328233009286e-06, + 1.083249025873279877e-06, + 1.076420833237660561e-06, + 1.069591761566064038e-06, + 1.062761822097500282e-06, + 1.055931026071852557e-06, + 1.049099384728668490e-06, + 1.042266909307433665e-06, + 1.035433611047862786e-06, + 1.028599501188671059e-06, + 1.021764590969357620e-06, + 1.014928891628998723e-06, + 1.008092414406509685e-06, + 1.001255170540649334e-06, + 9.944171712702779315e-07, + 9.875784278331592535e-07, + 9.807389514677327970e-07, + 9.738987534118936283e-07, + 9.670578449032776219e-07, + 9.602162371795428869e-07, + 9.533739414771525805e-07, + 9.465309690331464777e-07, + 9.396873310839481369e-07, + 9.328430388656160456e-07, + 9.259981036138439374e-07, + 9.191525365642371371e-07, + 9.123063489510900798e-07, + 9.054595520088785719e-07, + 8.986121569725393114e-07, + 8.917641750747339718e-07, + 8.849156175488625215e-07, + 8.780664956278133212e-07, + 8.712168205427607602e-07, + 8.643666035264561918e-07, + 8.575158558089854620e-07, + 8.506645886210673626e-07, + 8.438128131928391969e-07, + 8.369605407529198560e-07, + 8.301077825299059964e-07, + 8.232545497526657486e-07, + 8.164008536475784484e-07, + 8.095467054415643683e-07, + 8.026921163608404255e-07, + 7.958370976296964318e-07, + 7.889816604738055091e-07, + 7.821258161159705028e-07, + 7.752695757794386328e-07, + 7.684129506863534348e-07, + 7.615559520583658952e-07, + 7.546985911150758042e-07, + 7.478408790773763710e-07, + 7.409828271631632614e-07, + 7.341244465906705308e-07, + 7.272657485772352267e-07, + 7.204067443380548970e-07, + 7.135474450892262156e-07, + 7.066878620449720072e-07, + 6.998280064179413096e-07, + 6.929678894206987749e-07, + 6.861075222648117798e-07, + 6.792469161595957580e-07, + 6.723860823154550041e-07, + 6.655250319396044158e-07, + 6.586637762393914517e-07, + 6.518023264210674038e-07, + 6.449406936885497767e-07, + 6.380788892464425949e-07, + 6.312169242972940284e-07, + 6.243548100418633134e-07, + 6.174925576806369415e-07, + 6.106301784125899799e-07, + 6.037676834354709923e-07, + 5.969050839457850977e-07, + 5.900423911390802682e-07, + 5.831796162087161659e-07, + 5.763167703476585829e-07, + 5.694538647472595017e-07, + 5.625909105975366160e-07, + 5.557279190874574048e-07, + 5.488649014037068048e-07, + 5.420018687324957320e-07, + 5.351388322583220842e-07, + 5.282758031642630730e-07, + 5.214127926319497074e-07, + 5.145498118418588079e-07, + 5.076868719720737976e-07, + 5.008239842000961880e-07, + 4.939611597016075343e-07, + 4.870984096507568977e-07, + 4.802357452204466122e-07, + 4.733731775811003823e-07, + 4.665107179024593621e-07, + 4.596483773523662937e-07, + 4.527861670970334333e-07, + 4.459240983010357226e-07, + 4.390621821275910506e-07, + 4.322004297373304677e-07, + 4.253388522900998248e-07, + 4.184774609437308871e-07, + 4.116162668543215435e-07, + 4.047552811762220421e-07, + 3.978945150623214993e-07, + 3.910339796628088491e-07, + 3.841736861269839058e-07, + 3.773136456020226014e-07, + 3.704538692332623827e-07, + 3.635943681644856504e-07, + 3.567351535366890721e-07, + 3.498762364895848432e-07, + 3.430176281618897365e-07, + 3.361593396885620808e-07, + 3.293013822038349859e-07, + 3.224437668399767097e-07, + 3.155865047263566989e-07, + 3.087296069912621036e-07, + 3.018730847606551275e-07, + 2.950169491584621306e-07, + 2.881612113065571118e-07, + 2.813058823250454656e-07, + 2.744509733307256636e-07, + 2.675964954404211123e-07, + 2.607424597666963891e-07, + 2.538888774211928059e-07, + 2.470357595133894109e-07, + 2.401831171496742175e-07, + 2.333309614348451199e-07, + 2.264793034724024110e-07, + 2.196281543617841987e-07, + 2.127775252013987579e-07, + 2.059274270873837590e-07, + 1.990778711123733857e-07, + 1.922288683688336061e-07, + 1.853804299447716596e-07, + 1.785325669270775494e-07, + 1.716852903999784454e-07, + 1.648386114456315539e-07, + 1.579925411425820155e-07, + 1.511470905690988906e-07, + 1.443022707988888824e-07, + 1.374580929044321898e-07, + 1.306145679557454434e-07, + 1.237717070191450364e-07, + 1.169295211602759961e-07, + 1.100880214413532765e-07, + 1.032472189214468246e-07, + 9.640712465798865078e-08, + 8.956774970584121168e-08, + 8.272910511605977571e-08, + 7.589120193922813157e-08, + 6.905405122117233687e-08, + 6.221766400629774995e-08, + 5.538205133635083320e-08, + 4.854722424918284885e-08, + 4.171319378177962972e-08, + 3.487997096750130392e-08, + 2.804756683636935307e-08, + 2.121599241657270295e-08, + 1.438525873323092647e-08, + 7.555376808681487005e-09, + 7.263576624621678002e-10, +-6.101787688402017054e-09, +-1.292904823063489701e-08, +-1.975541295289901559e-08, +-2.658087084703175265e-08, +-3.340541090775830627e-08, +-4.022902213240480500e-08, +-4.705169352213373519e-08, +-5.387341408013451979e-08, +-6.069417281285928649e-08, +-6.751395872973579636e-08, +-7.433276084318544325e-08, +-8.115056816833532220e-08, +-8.796736972425427548e-08, +-9.478315453214410665e-08, +-1.015979116165739061e-07, +-1.084116300051937672e-07, +-1.152242987284479068e-07, +-1.220359068208091760e-07, +-1.288464433189712800e-07, +-1.356558972630832495e-07, +-1.424642576964614624e-07, +-1.492715136656085966e-07, +-1.560776542199275969e-07, +-1.628826684129526263e-07, +-1.696865453005445677e-07, +-1.764892739421252572e-07, +-1.832908434003874014e-07, +-1.900912427413156476e-07, +-1.968904610338980629e-07, +-2.036884873513599176e-07, +-2.104853107693578899e-07, +-2.172809203672123403e-07, +-2.240753052276205643e-07, +-2.308684544363726129e-07, +-2.376603570835806021e-07, +-2.444510022621795442e-07, +-2.512403790676395151e-07, +-2.580284766007175850e-07, +-2.648152839644388078e-07, +-2.716007902653257424e-07, +-2.783849846143293418e-07, +-2.851678561250223377e-07, +-2.919493939148333674e-07, +-2.987295871047586654e-07, +-3.055084248193791095e-07, +-3.122858961865762529e-07, +-3.190619903390646074e-07, +-3.258366964110747147e-07, +-3.326100035426118168e-07, +-3.393819008761424743e-07, +-3.461523775578221296e-07, +-3.529214227384193779e-07, +-3.596890255718243958e-07, +-3.664551752147570322e-07, +-3.732198608295107187e-07, +-3.799830715809492611e-07, +-3.867447966377221734e-07, +-3.935050251735019807e-07, +-4.002637463636713676e-07, +-4.070209493895712073e-07, +-4.137766234351979271e-07, +-4.205307576884217008e-07, +-4.272833413419218376e-07, +-4.340343635916776340e-07, +-4.407838136366968472e-07, +-4.475316806817461051e-07, +-4.542779539343472224e-07, +-4.610226226060025921e-07, +-4.677656759134214245e-07, +-4.745071030755144215e-07, +-4.812468933161362047e-07, +-4.879850358637870006e-07, +-4.947215199501353097e-07, +-5.014563348112285281e-07, +-5.081894696872185618e-07, +-5.149209138220700237e-07, +-5.216506564647920317e-07, +-5.283786868676345573e-07, +-5.351049942870236565e-07, +-5.418295679847698677e-07, +-5.485523972250793502e-07, +-5.552734712772865186e-07, +-5.619927794155594867e-07, +-5.687103109174156425e-07, +-5.754260550649509047e-07, +-5.821400011445453789e-07, +-5.888521384465779071e-07, +-5.955624562666568072e-07, +-6.022709439038257506e-07, +-6.089775906617803139e-07, +-6.156823858485908930e-07, +-6.223853187767167848e-07, +-6.290863787627229609e-07, +-6.357855551284992656e-07, +-6.424828371994691529e-07, +-6.491782143058194722e-07, +-6.558716757822014662e-07, +-6.625632109677662401e-07, +-6.692528092058642766e-07, +-6.759404598452743749e-07, +-6.826261522384138703e-07, +-6.893098757425580436e-07, +-6.959916197195539300e-07, +-7.026713735355402692e-07, +-7.093491265621661735e-07, +-7.160248681748018769e-07, +-7.226985877537587800e-07, +-7.293702746840107764e-07, +-7.360399183551978522e-07, +-7.427075081613607536e-07, +-7.493730335021405965e-07, +-7.560364837810056036e-07, +-7.626978484064668081e-07, +-7.693571167917886865e-07, +-7.760142783550189100e-07, +-7.826693225186916719e-07, +-7.893222387110412734e-07, +-7.959730163642407193e-07, +-8.026216449155960336e-07, +-8.092681138072726686e-07, +-8.159124124860096311e-07, +-8.225545304043385741e-07, +-8.291944570190972546e-07, +-8.358321817911493773e-07, +-8.424676941880973231e-07, +-8.491009836813024995e-07, +-8.557320397471028441e-07, +-8.623608518677190443e-07, +-8.689874095294803210e-07, +-8.756117022240482847e-07, +-8.822337194481166632e-07, +-8.888534507031382388e-07, +-8.954708854965352582e-07, +-9.020860133402188196e-07, +-9.086988237503179274e-07, +-9.153093062498663870e-07, +-9.219174503658492005e-07, +-9.285232456304056716e-07, +-9.351266815817380599e-07, +-9.417277477626407081e-07, +-9.483264337202227449e-07, +-9.549227290085964614e-07, +-9.615166231859231782e-07, +-9.681081058156145492e-07, +-9.746971664675493253e-07, +-9.812837947148057122e-07, +-9.878679801378408435e-07, +-9.944497123212481262e-07, +-1.001028980854960239e-06, +-1.007605775335145296e-06, +-1.014180085362737873e-06, +-1.020751900543187236e-06, +-1.027321210489108547e-06, +-1.033888004817347898e-06, +-1.040452273150187216e-06, +-1.047014005116544507e-06, +-1.053573190348723578e-06, +-1.060129818486589702e-06, +-1.066683879174315737e-06, +-1.073235362061889208e-06, +-1.079784256804826650e-06, +-1.086330553064185677e-06, +-1.092874240506301126e-06, +-1.099415308803962017e-06, +-1.105953747634670895e-06, +-1.112489546681542110e-06, +-1.119022695634492323e-06, +-1.125553184187325862e-06, +-1.132081002040374505e-06, +-1.138606138900235956e-06, +-1.145128584478327535e-06, +-1.151648328492057416e-06, +-1.158165360664558443e-06, +-1.164679670724414120e-06, +-1.171191248406843604e-06, +-1.177700083451957247e-06, +-1.184206165605937988e-06, +-1.190709484620781534e-06, +-1.197210030254299104e-06, +-1.203707792269846388e-06, +-1.210202760437504723e-06, +-1.216694924532356335e-06, +-1.223184274335643070e-06, +-1.229670799634515887e-06, +-1.236154490222038461e-06, +-1.242635335896917822e-06, +-1.249113326464674957e-06, +-1.255588451735922158e-06, +-1.262060701527546534e-06, +-1.268530065662423508e-06, +-1.274996533969153808e-06, +-1.281460096283229837e-06, +-1.287920742445316613e-06, +-1.294378462302431056e-06, +-1.300833245707654206e-06, +-1.307285082520173788e-06, +-1.313733962604972925e-06, +-1.320179875834035892e-06, +-1.326622812084617202e-06, +-1.333062761240403948e-06, +-1.339499713191259154e-06, +-1.345933657833220500e-06, +-1.352364585068244522e-06, +-1.358792484805370855e-06, +-1.365217346958998950e-06, +-1.371639161450062056e-06, +-1.378057918205759984e-06, +-1.384473607159273657e-06, +-1.390886218250955614e-06, +-1.397295741426879678e-06, +-1.403702166638584940e-06, +-1.410105483845676998e-06, +-1.416505683012965831e-06, +-1.422902754111637037e-06, +-1.429296687120118344e-06, +-1.435687472022378771e-06, +-1.442075098809099648e-06, +-1.448459557477383450e-06, +-1.454840838030509854e-06, +-1.461218930479073723e-06, +-1.467593824839580939e-06, +-1.473965511134158932e-06, +-1.480333979393187138e-06, +-1.486699219652410734e-06, +-1.493061221954116532e-06, +-1.499419976348020885e-06, +-1.505775472889825277e-06, +-1.512127701640959254e-06, +-1.518476652671188015e-06, +-1.524822316055732705e-06, +-1.531164681876466013e-06, +-1.537503740223035538e-06, +-1.543839481189770223e-06, +-1.550171894879665638e-06, +-1.556500971401275158e-06, +-1.562826700869863416e-06, +-1.569149073408278951e-06, +-1.575468079145529291e-06, +-1.581783708216538491e-06, +-1.588095950764697334e-06, +-1.594404796939058382e-06, +-1.600710236895468039e-06, +-1.607012260797724440e-06, +-1.613310858814472234e-06, +-1.619606021123194855e-06, +-1.625897737907101894e-06, +-1.632185999356548511e-06, +-1.638470795668812879e-06, +-1.644752117048053831e-06, +-1.651029953705081948e-06, +-1.657304295858496069e-06, +-1.663575133732998541e-06, +-1.669842457560255591e-06, +-1.676106257580049505e-06, +-1.682366524037466266e-06, +-1.688623247185452109e-06, +-1.694876417284550097e-06, +-1.701126024601494894e-06, +-1.707372059410363666e-06, +-1.713614511992298471e-06, +-1.719853372635266546e-06, +-1.726088631635166744e-06, +-1.732320279294180362e-06, +-1.738548305921615422e-06, +-1.744772701835056725e-06, +-1.750993457357565355e-06, +-1.757210562820216596e-06, +-1.763424008561850908e-06, +-1.769633784927661497e-06, +-1.775839882270358988e-06, +-1.782042290949880042e-06, +-1.788241001333414888e-06, +-1.794436003795145800e-06, +-1.800627288717364545e-06, +-1.806814846488835492e-06, +-1.812998667505896546e-06, +-1.819178742172218373e-06, +-1.825355060898545423e-06, +-1.831527614103794322e-06, +-1.837696392213426296e-06, +-1.843861385660562498e-06, +-1.850022584885720378e-06, +-1.856179980336837603e-06, +-1.862333562468988304e-06, +-1.868483321745549231e-06, +-1.874629248636503779e-06, +-1.880771333619575104e-06, +-1.886909567179996795e-06, +-1.893043939810206242e-06, +-1.899174442011004015e-06, +-1.905301064289880552e-06, +-1.911423797162138473e-06, +-1.917542631150671510e-06, +-1.923657556785914527e-06, +-1.929768564605630285e-06, +-1.935875645156012483e-06, +-1.941978788990318655e-06, +-1.948077986668599962e-06, +-1.954173228760224502e-06, +-1.960264505841112175e-06, +-1.966351808494856575e-06, +-1.972435127313567789e-06, +-1.978514452896235082e-06, +-1.984589775849836510e-06, +-1.990661086789086081e-06, +-1.996728376336161435e-06, +-2.002791635121848605e-06, +-2.008850853784141878e-06, +-2.014906022967996879e-06, +-2.020957133327823815e-06, +-2.027004175524767228e-06, +-2.033047140227787659e-06, +-2.039086018114525192e-06, +-2.045120799869646475e-06, +-2.051151476185973814e-06, +-2.057178037764235293e-06, +-2.063200475313024971e-06, +-2.069218779548623307e-06, +-2.075232941196298624e-06, +-2.081242950987378923e-06, +-2.087248799663041500e-06, +-2.093250477971369089e-06, +-2.099247976668419240e-06, +-2.105241286519341552e-06, +-2.111230398295673527e-06, +-2.117215302777789334e-06, +-2.123195990754662647e-06, +-2.129172453022495294e-06, +-2.135144680385585891e-06, +-2.141112663657381435e-06, +-2.147076393657533437e-06, +-2.153035861215723551e-06, +-2.158991057168652367e-06, +-2.164941972361173593e-06, +-2.170888597647385454e-06, +-2.176830923887915950e-06, +-2.182768941952421607e-06, +-2.188702642719252051e-06, +-2.194632017074186656e-06, +-2.200557055911227368e-06, +-2.206477750133681638e-06, +-2.212394090651501043e-06, +-2.218306068383709730e-06, +-2.224213674258157083e-06, +-2.230116899210160350e-06, +-2.236015734183640095e-06, +-2.241910170130818227e-06, +-2.247800198011983373e-06, +-2.253685808796589481e-06, +-2.259566993461645610e-06, +-2.265443742992515525e-06, +-2.271316048384060352e-06, +-2.277183900637912820e-06, +-2.283047290764926882e-06, +-2.288906209784936736e-06, +-2.294760648725400297e-06, +-2.300610598622515592e-06, +-2.306456050520932766e-06, +-2.312296995473537241e-06, +-2.318133424542514437e-06, +-2.323965328797748458e-06, +-2.329792699317916879e-06, +-2.335615527190243414e-06, +-2.341433803510500882e-06, +-2.347247519382758788e-06, +-2.353056665920467105e-06, +-2.358861234244863001e-06, +-2.364661215486070294e-06, +-2.370456600782816111e-06, +-2.376247381282460966e-06, +-2.382033548140759891e-06, +-2.387815092522906407e-06, +-2.393592005601978218e-06, +-2.399364278560007859e-06, +-2.405131902587721813e-06, +-2.410894868884292326e-06, +-2.416653168658419920e-06, +-2.422406793126729110e-06, +-2.428155733514881827e-06, +-2.433899981057294090e-06, +-2.439639526997174965e-06, +-2.445374362586245353e-06, +-2.451104479085825580e-06, +-2.456829867765259068e-06, +-2.462550519902996535e-06, +-2.468266426786315632e-06, +-2.473977579711358209e-06, +-2.479683969982885099e-06, +-2.485385588915311194e-06, +-2.491082427831168926e-06, +-2.496774478062156470e-06, +-2.502461730948901846e-06, +-2.508144177840693140e-06, +-2.513821810096569903e-06, +-2.519494619083986960e-06, +-2.525162596178623401e-06, +-2.530825732766670419e-06, +-2.536484020242304611e-06, +-2.542137450008705685e-06, +-2.547786013478855640e-06, +-2.553429702074007326e-06, +-2.559068507224702160e-06, +-2.564702420370578265e-06, +-2.570331432960313725e-06, +-2.575955536451455484e-06, +-2.581574722311655163e-06, +-2.587188982015890372e-06, +-2.592798307050056130e-06, +-2.598402688908174310e-06, +-2.604002119093408816e-06, +-2.609596589119132414e-06, +-2.615186090506344131e-06, +-2.620770614785993939e-06, +-2.626350153498770568e-06, +-2.631924698193795389e-06, +-2.637494240429423698e-06, +-2.643058771774271752e-06, +-2.648618283804435529e-06, +-2.654172768107059285e-06, +-2.659722216277522127e-06, +-2.665266619920534503e-06, +-2.670805970651100850e-06, +-2.676340260092019157e-06, +-2.681869479876203103e-06, +-2.687393621646383056e-06, +-2.692912677053921073e-06, +-2.698426637759501231e-06, +-2.703935495434226538e-06, +-2.709439241757074442e-06, +-2.714937868417180435e-06, +-2.720431367113596221e-06, +-2.725919729554043314e-06, +-2.731402947455959539e-06, +-2.736881012546202154e-06, +-2.742353916560866155e-06, +-2.747821651246275310e-06, +-2.753284208357472745e-06, +-2.758741579659030705e-06, +-2.764193756926012785e-06, +-2.769640731941526429e-06, +-2.775082496498960368e-06, +-2.780519042401760576e-06, +-2.785950361462172432e-06, +-2.791376445502271553e-06, +-2.796797286353727052e-06, +-2.802212875857565217e-06, +-2.807623205865151640e-06, +-2.813028268236747033e-06, +-2.818428054842482158e-06, +-2.823822557562144799e-06, +-2.829211768285179339e-06, +-2.834595678910454251e-06, +-2.839974281347257783e-06, +-2.845347567513848263e-06, +-2.850715529338428183e-06, +-2.856078158758922281e-06, +-2.861435447722973305e-06, +-2.866787388187749734e-06, +-2.872133972120884717e-06, +-2.877475191499054324e-06, +-2.882811038308965191e-06, +-2.888141504547094904e-06, +-2.893466582219497601e-06, +-2.898786263342786533e-06, +-2.904100539942621265e-06, +-2.909409404054793145e-06, +-2.914712847724909784e-06, +-2.920010863008458590e-06, +-2.925303441970545026e-06, +-2.930590576686908208e-06, +-2.935872259242432244e-06, +-2.941148481732161824e-06, +-2.946419236261065054e-06, +-2.951684514944027948e-06, +-2.956944309905652412e-06, +-2.962198613281207461e-06, +-2.967447417215219756e-06, +-2.972690713862418048e-06, +-2.977928495387518875e-06, +-2.983160753965022431e-06, +-2.988387481780140911e-06, +-2.993608671027626218e-06, +-2.998824313911562442e-06, +-3.004034402647499534e-06, +-3.009238929460116765e-06, +-3.014437886584122702e-06, +-3.019631266265062425e-06, +-3.024819060757820401e-06, +-3.030001262327659369e-06, +-3.035177863249919640e-06, +-3.040348855809850966e-06, +-3.045514232303559096e-06, +-3.050673985036809341e-06, +-3.055828106324822020e-06, +-3.060976588494409943e-06, +-3.066119423881605875e-06, +-3.071256604832659066e-06, +-3.076388123704968265e-06, +-3.081513972864699433e-06, +-3.086634144688995230e-06, +-3.091748631565676863e-06, +-3.096857425892122187e-06, +-3.101960520075966201e-06, +-3.107057906536053117e-06, +-3.112149577699868999e-06, +-3.117235526006826559e-06, +-3.122315743905722364e-06, +-3.127390223855657982e-06, +-3.132458958326985699e-06, +-3.137521939799016442e-06, +-3.142579160762101368e-06, +-3.147630613717395960e-06, +-3.152676291175752114e-06, +-3.157716185658399570e-06, +-3.162750289697875962e-06, +-3.167778595835519168e-06, +-3.172801096624682657e-06, +-3.177817784628218097e-06, +-3.182828652419664175e-06, +-3.187833692582976386e-06, +-3.192832897712576589e-06, +-3.197826260413151835e-06, +-3.202813773300524271e-06, +-3.207795429000321720e-06, +-3.212771220148684108e-06, +-3.217741139393159622e-06, +-3.222705179390457114e-06, +-3.227663332808481938e-06, +-3.232615592326189842e-06, +-3.237561950632359614e-06, +-3.242502400426547265e-06, +-3.247436934418934412e-06, +-3.252365545330027580e-06, +-3.257288225891605184e-06, +-3.262204968845379642e-06, +-3.267115766943902430e-06, +-3.272020612950369263e-06, +-3.276919499638584518e-06, +-3.281812419792781245e-06, +-3.286699366208552051e-06, +-3.291580331691451074e-06, +-3.296455309057942661e-06, +-3.301324291135170972e-06, +-3.306187270761017583e-06, +-3.311044240783811794e-06, +-3.315895194063276349e-06, +-3.320740123469220034e-06, +-3.325579021882369468e-06, +-3.330411882194258986e-06, +-3.335238697306896062e-06, +-3.340059460133795537e-06, +-3.344874163598532460e-06, +-3.349682800635714910e-06, +-3.354485364190760801e-06, +-3.359281847219877125e-06, +-3.364072242689890978e-06, +-3.368856543579108020e-06, +-3.373634742876028378e-06, +-3.378406833580216968e-06, +-3.383172808702111646e-06, +-3.387932661262770791e-06, +-3.392686384294830027e-06, +-3.397433970841135961e-06, +-3.402175413955667754e-06, +-3.406910706703291481e-06, +-3.411639842159831707e-06, +-3.416362813411811869e-06, +-3.421079613557339426e-06, +-3.425790235705037328e-06, +-3.430494672973857247e-06, +-3.435192918495006572e-06, +-3.439884965409804572e-06, +-3.444570806870562039e-06, +-3.449250436041479143e-06, +-3.453923846096229695e-06, +-3.458591030221017663e-06, +-3.463251981612212682e-06, +-3.467906693477236471e-06, +-3.472555159035200230e-06, +-3.477197371515824245e-06, +-3.481833324159285424e-06, +-3.486463010218113379e-06, +-3.491086422955043200e-06, +-3.495703555643938296e-06, +-3.500314401570606085e-06, +-3.504918954030482213e-06, +-3.509517206331609559e-06, +-3.514109151792340245e-06, +-3.518694783742343596e-06, +-3.523274095522273688e-06, +-3.527847080484764179e-06, +-3.532413731992136672e-06, +-3.536974043419406824e-06, +-3.541528008151903768e-06, +-3.546075619586157801e-06, +-3.550616871130788073e-06, +-3.555151756204339689e-06, +-3.559680268237220030e-06, +-3.564202400671495458e-06, +-3.568718146959856671e-06, +-3.573227500566242543e-06, +-3.577730454966686729e-06, +-3.582227003647062018e-06, +-3.586717140105969566e-06, +-3.591200857852472231e-06, +-3.595678150407124143e-06, +-3.600149011301819087e-06, +-3.604613434079764244e-06, +-3.609071412295267159e-06, +-3.613522939514619203e-06, +-3.617968009314846615e-06, +-3.622406615284303008e-06, +-3.626838751023553669e-06, +-3.631264410143289740e-06, +-3.635683586266210749e-06, +-3.640096273026817511e-06, +-3.644502464070391027e-06, +-3.648902153053858582e-06, +-3.653295333645508709e-06, +-3.657681999524907765e-06, +-3.662062144383651244e-06, +-3.666435761924151673e-06, +-3.670802845860500895e-06, +-3.675163389918247295e-06, +-3.679517387834430110e-06, +-3.683864833357324888e-06, +-3.688205720247342199e-06, +-3.692540042275775289e-06, +-3.696867793225603073e-06, +-3.701188966891361383e-06, +-3.705503557079062075e-06, +-3.709811557606082495e-06, +-3.714112962301952371e-06, +-3.718407765007113754e-06, +-3.722695959573778221e-06, +-3.726977539865761274e-06, +-3.731252499758209601e-06, +-3.735520833138473514e-06, +-3.739782533904874098e-06, +-3.744037595967574383e-06, +-3.748286013248318877e-06, +-3.752527779680474231e-06, +-3.756762889208837802e-06, +-3.760991335790416506e-06, +-3.765213113393323131e-06, +-3.769428215997449728e-06, +-3.773636637594379521e-06, +-3.777838372187182346e-06, +-3.782033413791180374e-06, +-3.786221756432778351e-06, +-3.790403394150294545e-06, +-3.794578320993729500e-06, +-3.798746531024789757e-06, +-3.802908018316711245e-06, +-3.807062776955069045e-06, +-3.811210801036735541e-06, +-3.815352084669768610e-06, +-3.819486621975140840e-06, +-3.823614407084785850e-06, +-3.827735434142432193e-06, +-3.831849697304325872e-06, +-3.835957190737187303e-06, +-3.840057908620843040e-06, +-3.844151845146135303e-06, +-3.848238994515751219e-06, +-3.852319350944753913e-06, +-3.856392908659618588e-06, +-3.860459661898111391e-06, +-3.864519604910959772e-06, +-3.868572731960003404e-06, +-3.872619037318900611e-06, +-3.876658515273953377e-06, +-3.880691160121977061e-06, +-3.884716966173042240e-06, +-3.888735927748293597e-06, +-3.892748039180968060e-06, +-3.896753294816061916e-06, +-3.900751689011171066e-06, +-3.904743216134521673e-06, +-3.908727870567559546e-06, +-3.912705646702944361e-06, +-3.916676538945237456e-06, +-3.920640541711715825e-06, +-3.924597649430468840e-06, +-3.928547856542138900e-06, +-3.932491157499683416e-06, +-3.936427546767498132e-06, +-3.940357018821931275e-06, +-3.944279568152095010e-06, +-3.948195189257787670e-06, +-3.952103876652109395e-06, +-3.956005624859441954e-06, +-3.959900428416186515e-06, +-3.963788281871513269e-06, +-3.967669179785490331e-06, +-3.971543116730837100e-06, +-3.975410087292646434e-06, +-3.979270086067529143e-06, +-3.983123107664350065e-06, +-3.986969146704047643e-06, +-3.990808197819629695e-06, +-3.994640255656020943e-06, +-3.998465314870771984e-06, +-4.002283370132987790e-06, +-4.006094416124087501e-06, +-4.009898447537566401e-06, +-4.013695459078896824e-06, +-4.017485445466205774e-06, +-4.021268401429217831e-06, +-4.025044321709983599e-06, +-4.028813201062687426e-06, +-4.032575034253688069e-06, +-4.036329816061327257e-06, +-4.040077541276666613e-06, +-4.043818204702368725e-06, +-4.047551801153511988e-06, +-4.051278325457325486e-06, +-4.054997772453094121e-06, +-4.058710136992793046e-06, +-4.062415413940140675e-06, +-4.066113598171185684e-06, +-4.069804684574261264e-06, +-4.073488668049901273e-06, +-4.077165543510700468e-06, +-4.080835305882049734e-06, +-4.084497950101045103e-06, +-4.088153471117227217e-06, +-4.091801863892387354e-06, +-4.095443123400633498e-06, +-4.099077244628136231e-06, +-4.102704222573889366e-06, +-4.106324052248648613e-06, +-4.109936728675650717e-06, +-4.113542246890452513e-06, +-4.117140601940714939e-06, +-4.120731788886972141e-06, +-4.124315802801721754e-06, +-4.127892638769273292e-06, +-4.131462291887323622e-06, +-4.135024757265206998e-06, +-4.138580030024611649e-06, +-4.142128105300103246e-06, +-4.145668978238105921e-06, +-4.149202643997569729e-06, +-4.152729097749838513e-06, +-4.156248334678610936e-06, +-4.159760349979840536e-06, +-4.163265138862512450e-06, +-4.166762696546877355e-06, +-4.170253018266720669e-06, +-4.173736099267631211e-06, +-4.177211934807560248e-06, +-4.180680520157423732e-06, +-4.184141850600218847e-06, +-4.187595921430875777e-06, +-4.191042727957792529e-06, +-4.194482265501124776e-06, +-4.197914529393504136e-06, +-4.201339514980683619e-06, +-4.204757217619724968e-06, +-4.208167632681320382e-06, +-4.211570755547963770e-06, +-4.214966581614835053e-06, +-4.218355106289430010e-06, +-4.221736324992381905e-06, +-4.225110233155692025e-06, +-4.228476826225042940e-06, +-4.231836099657924006e-06, +-4.235188048924393705e-06, +-4.238532669507672562e-06, +-4.241869956902532940e-06, +-4.245199906616769482e-06, +-4.248522514171066135e-06, +-4.251837775098172830e-06, +-4.255145684943356101e-06, +-4.258446239265119070e-06, +-4.261739433633430295e-06, +-4.265025263631888787e-06, +-4.268303724856096015e-06, +-4.271574812914181066e-06, +-4.274838523427553656e-06, +-4.278094852029234627e-06, +-4.281343794365324707e-06, +-4.284585346094841027e-06, +-4.287819502888955642e-06, +-4.291046260431599463e-06, +-4.294265614419328428e-06, +-4.297477560561348912e-06, +-4.300682094579294111e-06, +-4.303879212207956723e-06, +-4.307068909194284371e-06, +-4.310251181297992003e-06, +-4.313426024291538181e-06, +-4.316593433959782874e-06, +-4.319753406100795530e-06, +-4.322905936524808144e-06, +-4.326051021054908130e-06, +-4.329188655526835032e-06, +-4.332318835789045747e-06, +-4.335441557702493451e-06, +-4.338556817141334866e-06, +-4.341664609991923145e-06, +-4.344764932153521916e-06, +-4.347857779538050324e-06, +-4.350943148070031367e-06, +-4.354021033687156017e-06, +-4.357091432339363341e-06, +-4.360154339989507118e-06, +-4.363209752613142387e-06, +-4.366257666198618619e-06, +-4.369298076746827300e-06, +-4.372330980271881256e-06, +-4.375356372800207477e-06, +-4.378374250371132418e-06, +-4.381384609036743084e-06, +-4.384387444861921761e-06, +-4.387382753924123246e-06, +-4.390370532314106680e-06, +-4.393350776134899630e-06, +-4.396323481502508751e-06, +-4.399288644545712259e-06, +-4.402246261405943887e-06, +-4.405196328237901909e-06, +-4.408138841208752073e-06, +-4.411073796498087796e-06, +-4.414001190299165136e-06, +-4.416921018817495871e-06, +-4.419833278271380282e-06, +-4.422737964892420456e-06, +-4.425635074924616501e-06, +-4.428524604624932363e-06, +-4.431406550263188257e-06, +-4.434280908122076755e-06, +-4.437147674496962043e-06, +-4.440006845696637167e-06, +-4.442858418041789210e-06, +-4.445702387866945774e-06, +-4.448538751518928295e-06, +-4.451367505357461063e-06, +-4.454188645755566788e-06, +-4.457002169098828827e-06, +-4.459808071785336981e-06, +-4.462606350226912301e-06, +-4.465397000847691700e-06, +-4.468180020084725951e-06, +-4.470955404388505702e-06, +-4.473723150221499492e-06, +-4.476483254060024002e-06, +-4.479235712392767678e-06, +-4.481980521721341298e-06, +-4.484717678560690482e-06, +-4.487447179438397733e-06, +-4.490169020894621453e-06, +-4.492883199483198778e-06, +-4.495589711770435170e-06, +-4.498288554335533014e-06, +-4.500979723771204872e-06, +-4.503663216682294511e-06, +-4.506339029687016958e-06, +-4.509007159416818744e-06, +-4.511667602515657925e-06, +-4.514320355640691020e-06, +-4.516965415461962159e-06, +-4.519602778662378511e-06, +-4.522232441938261708e-06, +-4.524854401998452526e-06, +-4.527468655564821653e-06, +-4.530075199372761808e-06, +-4.532674030169829103e-06, +-4.535265144717036464e-06, +-4.537848539788592743e-06, +-4.540424212171357228e-06, +-4.542992158665311443e-06, +-4.545552376083449877e-06, +-4.548104861251682579e-06, +-4.550649611009250202e-06, +-4.553186622208138705e-06, +-4.555715891713388516e-06, +-4.558237416403123337e-06, +-4.560751193168465436e-06, +-4.563257218913488214e-06, +-4.565755490555638030e-06, +-4.568246005025054878e-06, +-4.570728759265045032e-06, +-4.573203750231964154e-06, +-4.575670974895202053e-06, +-4.578130430237110679e-06, +-4.580582113253439505e-06, +-4.583026020952670601e-06, +-4.585462150356409121e-06, +-4.587890498499402780e-06, +-4.590311062429299606e-06, +-4.592723839207217991e-06, +-4.595128825906968270e-06, +-4.597526019615555009e-06, +-4.599915417433106704e-06, +-4.602297016472782603e-06, +-4.604670813860754076e-06, +-4.607036806736644226e-06, +-4.609394992252797738e-06, +-4.611745367574767086e-06, +-4.614087929881244764e-06, +-4.616422676363987058e-06, +-4.618749604227768300e-06, +-4.621068710690792531e-06, +-4.623379992984072624e-06, +-4.625683448351837707e-06, +-4.627979074051394249e-06, +-4.630266867353115052e-06, +-4.632546825540806857e-06, +-4.634818945911193660e-06, +-4.637083225773765088e-06, +-4.639339662451834349e-06, +-4.641588253281427765e-06, +-4.643828995611661709e-06, +-4.646061886805148326e-06, +-4.648286924237328924e-06, +-4.650504105296866149e-06, +-4.652713427385582997e-06, +-4.654914887918357783e-06, +-4.657108484323564597e-06, +-4.659294214042460902e-06, +-4.661472074529178212e-06, +-4.663642063251643671e-06, +-4.665804177690539040e-06, +-4.667958415339671705e-06, +-4.670104773706373629e-06, +-4.672243250310909271e-06, +-4.674373842686431544e-06, +-4.676496548379864424e-06, +-4.678611364950905989e-06, +-4.680718289972428223e-06, +-4.682817321030922549e-06, +-4.684908455725306367e-06, +-4.686991691668423990e-06, +-4.689067026485913319e-06, +-4.691134457816568369e-06, +-4.693193983312704343e-06, +-4.695245600639623152e-06, +-4.697289307475516009e-06, +-4.699325101512384150e-06, +-4.701352980455030022e-06, +-4.703372942021456232e-06, +-4.705384983943278054e-06, +-4.707389103964601957e-06, +-4.709385299843467256e-06, +-4.711373569350689061e-06, +-4.713353910270425795e-06, +-4.715326320400049594e-06, +-4.717290797550128520e-06, +-4.719247339544388444e-06, +-4.721195944220025604e-06, +-4.723136609427208545e-06, +-4.725069333029302589e-06, +-4.726994112903277250e-06, +-4.728910946938788058e-06, +-4.730819833038964293e-06, +-4.732720769120414919e-06, +-4.734613753112633966e-06, +-4.736498782958497736e-06, +-4.738375856614086080e-06, +-4.740244972048608710e-06, +-4.742106127244852426e-06, +-4.743959320198530598e-06, +-4.745804548918661792e-06, +-4.747641811427579928e-06, +-4.749471105760807233e-06, +-4.751292429967042376e-06, +-4.753105782108507754e-06, +-4.754911160260401465e-06, +-4.756708562511269994e-06, +-4.758497986962884555e-06, +-4.760279431730315626e-06, +-4.762052894941766083e-06, +-4.763818374738977777e-06, +-4.765575869276675032e-06, +-4.767325376722946659e-06, +-4.769066895259134147e-06, +-4.770800423079731711e-06, +-4.772525958392797953e-06, +-4.774243499419391735e-06, +-4.775953044393883891e-06, +-4.777654591563947059e-06, +-4.779348139190507402e-06, +-4.781033685547691243e-06, +-4.782711228923154565e-06, +-4.784380767617515494e-06, +-4.786042299944833723e-06, +-4.787695824232387740e-06, +-4.789341338820730735e-06, +-4.790978842063633845e-06, +-4.792608332328379232e-06, +-4.794229807995280658e-06, +-4.795843267458004513e-06, +-4.797448709123515605e-06, +-4.799046131411950950e-06, +-4.800635532757013645e-06, +-4.802216911605501914e-06, +-4.803790266417225258e-06, +-4.805355595665805741e-06, +-4.806912897837818256e-06, +-4.808462171433092915e-06, +-4.810003414965040308e-06, +-4.811536626960092464e-06, +-4.813061805958013709e-06, +-4.814578950511911680e-06, +-4.816088059188063683e-06, +-4.817589130566287691e-06, +-4.819082163239539159e-06, +-4.820567155813822085e-06, +-4.822044106908914915e-06, +-4.823513015157554007e-06, +-4.824973879205785147e-06, +-4.826426697713169379e-06, +-4.827871469352389132e-06, +-4.829308192809215192e-06, +-4.830736866783197028e-06, +-4.832157489986828466e-06, +-4.833570061145894126e-06, +-4.834974578999813318e-06, +-4.836371042300747270e-06, +-4.837759449814674008e-06, +-4.839139800320602317e-06, +-4.840512092610797043e-06, +-4.841876325491067093e-06, +-4.843232497780377486e-06, +-4.844580608310742635e-06, +-4.845920655927920059e-06, +-4.847252639490689563e-06, +-4.848576557871118357e-06, +-4.849892409954846507e-06, +-4.851200194640351712e-06, +-4.852499910839859861e-06, +-4.853791557478637763e-06, +-4.855075133495313325e-06, +-4.856350637841814563e-06, +-4.857618069483367067e-06, +-4.858877427398423692e-06, +-4.860128710578940690e-06, +-4.861371918029969445e-06, +-4.862607048769875852e-06, +-4.863834101830564779e-06, +-4.865053076256841406e-06, +-4.866263971107021937e-06, +-4.867466785452845506e-06, +-4.868661518379109954e-06, +-4.869848168984084334e-06, +-4.871026736379236166e-06, +-4.872197219689286497e-06, +-4.873359618052452146e-06, +-4.874513930620056076e-06, +-4.875660156556712889e-06, +-4.876798295040594798e-06, +-4.877928345262773479e-06, +-4.879050306427812998e-06, +-4.880164177753694420e-06, +-4.881269958471510883e-06, +-4.882367647825706456e-06, +-4.883457245074010921e-06, +-4.884538749487452477e-06, +-4.885612160350265414e-06, +-4.886677476960221301e-06, +-4.887734698628140253e-06, +-4.888783824678219573e-06, +-4.889824854447908395e-06, +-4.890857787287943260e-06, +-4.891882622562491263e-06, +-4.892899359648809546e-06, +-4.893907997937552771e-06, +-4.894908536832637594e-06, +-4.895900975751236740e-06, +-4.896885314123795936e-06, +-4.897861551394183842e-06, +-4.898829687019391353e-06, +-4.899789720469744203e-06, +-4.900741651228854686e-06, +-4.901685478793553042e-06, +-4.902621202674127174e-06, +-4.903548822393981289e-06, +-4.904468337489801916e-06, +-4.905379747511618896e-06, +-4.906283052022706277e-06, +-4.907178250599524716e-06, +-4.908065342832056054e-06, +-4.908944328323361173e-06, +-4.909815206689668925e-06, +-4.910677977560752220e-06, +-4.911532640579465545e-06, +-4.912379195401945711e-06, +-4.913217641697725355e-06, +-4.914047979149459348e-06, +-4.914870207453106061e-06, +-4.915684326317918892e-06, +-4.916490335466325147e-06, +-4.917288234634180987e-06, +-4.918078023570502927e-06, +-4.918859702037413623e-06, +-4.919633269810578940e-06, +-4.920398726678750554e-06, +-4.921156072443910798e-06, +-4.921905306921444605e-06, +-4.922646429939839661e-06, +-4.923379441340893931e-06, +-4.924104340979637723e-06, +-4.924821128724352334e-06, +-4.925529804456541241e-06, +-4.926230368071100361e-06, +-4.926922819475890298e-06, +-4.927607158592268278e-06, +-4.928283385354702749e-06, +-4.928951499710868251e-06, +-4.929611501621883431e-06, +-4.930263391061816375e-06, +-4.930907168018097114e-06, +-4.931542832491482896e-06, +-4.932170384495842191e-06, +-4.932789824058229232e-06, +-4.933401151219140663e-06, +-4.934004366031957348e-06, +-4.934599468563595736e-06, +-4.935186458894075032e-06, +-4.935765337116550223e-06, +-4.936336103337590760e-06, +-4.936898757676761273e-06, +-4.937453300266929891e-06, +-4.937999731254264007e-06, +-4.938538050797992264e-06, +-4.939068259070624779e-06, +-4.939590356257965006e-06, +-4.940104342558809883e-06, +-4.940610218185275094e-06, +-4.941107983362734932e-06, +-4.941597638329674064e-06, +-4.942079183337787483e-06, +-4.942552618651965261e-06, +-4.943017944550268833e-06, +-4.943475161324045347e-06, +-4.943924269277703196e-06, +-4.944365268728851784e-06, +-4.944798160008448058e-06, +-4.945222943460355209e-06, +-4.945639619441761948e-06, +-4.946048188323108818e-06, +-4.946448650487884055e-06, +-4.946841006332795540e-06, +-4.947225256267688636e-06, +-4.947601400715585149e-06, +-4.947969440112721446e-06, +-4.948329374908447659e-06, +-4.948681205565247165e-06, +-4.949024932558822137e-06, +-4.949360556377968185e-06, +-4.949688077524645503e-06, +-4.950007496514043247e-06, +-4.950318813874388950e-06, +-4.950622030147083203e-06, +-4.950917145886677628e-06, +-4.951204161660874036e-06, +-4.951483078050489695e-06, +-4.951753895649505613e-06, +-4.952016615064995384e-06, +-4.952271236917163309e-06, +-4.952517761839363028e-06, +-4.952756190478017899e-06, +-4.952986523492770076e-06, +-4.953208761556300939e-06, +-4.953422905354384454e-06, +-4.953628955585993059e-06, +-4.953826912963106224e-06, +-4.954016778210873093e-06, +-4.954198552067556569e-06, +-4.954372235284470643e-06, +-4.954537828626061702e-06, +-4.954695332869845005e-06, +-4.954844748806440258e-06, +-4.954986077239530109e-06, +-4.955119318985943159e-06, +-4.955244474875532830e-06, +-4.955361545751223962e-06, +-4.955470532469082261e-06, +-4.955571435898163530e-06, +-4.955664256920661055e-06, +-4.955748996431825980e-06, +-4.955825655339882607e-06, +-4.955894234566249469e-06, +-4.955954735045300469e-06, +-4.956007157724494474e-06, +-4.956051503564393106e-06, +-4.956087773538517587e-06, +-4.956115968633491895e-06, +-4.956136089848944504e-06, +-4.956148138197562595e-06, +-4.956152114705046315e-06, +-4.956148020410178236e-06, +-4.956135856364681900e-06, +-4.956115623633398847e-06, +-4.956087323294124291e-06, +-4.956050956437679122e-06, +-4.956006524167935310e-06, +-4.955954027601723584e-06, +-4.955893467868899499e-06, +-4.955824846112359528e-06, +-4.955748163487939420e-06, +-4.955663421164511608e-06, +-4.955570620323928457e-06, +-4.955469762160990927e-06, +-4.955360847883574775e-06, +-4.955243878712456074e-06, +-4.955118855881394214e-06, +-4.954985780637220848e-06, +-4.954844654239576458e-06, +-4.954695477961186493e-06, +-4.954538253087712290e-06, +-4.954372980917760387e-06, +-4.954199662762885072e-06, +-4.954018299947627338e-06, +-4.953828893809430188e-06, +-4.953631445698708083e-06, +-4.953425956978820693e-06, +-4.953212429026047479e-06, +-4.952990863229606330e-06, +-4.952761260991614601e-06, +-4.952523623727178897e-06, +-4.952277952864249383e-06, +-4.952024249843763780e-06, +-4.951762516119509301e-06, +-4.951492753158225983e-06, +-4.951214962439529615e-06, +-4.950929145455948153e-06, +-4.950635303712889538e-06, +-4.950333438728679808e-06, +-4.950023552034532611e-06, +-4.949705645174502612e-06, +-4.949379719705568505e-06, +-4.949045777197565250e-06, +-4.948703819233184073e-06, +-4.948353847408013125e-06, +-4.947995863330467176e-06, +-4.947629868621862153e-06, +-4.947255864916331290e-06, +-4.946873853860886951e-06, +-4.946483837115330857e-06, +-4.946085816352368423e-06, +-4.945679793257511360e-06, +-4.945265769529100536e-06, +-4.944843746878313605e-06, +-4.944413727029137055e-06, +-4.943975711718409403e-06, +-4.943529702695733951e-06, +-4.943075701723557565e-06, +-4.942613710577120694e-06, +-4.942143731044463304e-06, +-4.941665764926404545e-06, +-4.941179814036602893e-06, +-4.940685880201457895e-06, +-4.940183965260166070e-06, +-4.939674071064703124e-06, +-4.939156199479803620e-06, +-4.938630352382992319e-06, +-4.938096531664518956e-06, +-4.937554739227435325e-06, +-4.937004976987524123e-06, +-4.936447246873339611e-06, +-4.935881550826137308e-06, +-4.935307890799938368e-06, +-4.934726268761485530e-06, +-4.934136686690281241e-06, +-4.933539146578516499e-06, +-4.932933650431125913e-06, +-4.932320200265719094e-06, +-4.931698798112698392e-06, +-4.931069446015068311e-06, +-4.930432146028598990e-06, +-4.929786900221755050e-06, +-4.929133710675632917e-06, +-4.928472579484095493e-06, +-4.927803508753615464e-06, +-4.927126500603394724e-06, +-4.926441557165283065e-06, +-4.925748680583748527e-06, +-4.925047873015967186e-06, +-4.924339136631825696e-06, +-4.923622473613709526e-06, +-4.922897886156791805e-06, +-4.922165376468830874e-06, +-4.921424946770147423e-06, +-4.920676599293819303e-06, +-4.919920336285490946e-06, +-4.919156160003356425e-06, +-4.918384072718324624e-06, +-4.917604076713875243e-06, +-4.916816174286028305e-06, +-4.916020367743554219e-06, +-4.915216659407609559e-06, +-4.914405051612096202e-06, +-4.913585546703443642e-06, +-4.912758147040594591e-06, +-4.911922854995177776e-06, +-4.911079672951329208e-06, +-4.910228603305691343e-06, +-4.909369648467535050e-06, +-4.908502810858667285e-06, +-4.907628092913355706e-06, +-4.906745497078540433e-06, +-4.905855025813535888e-06, +-4.904956681590313705e-06, +-4.904050466893297754e-06, +-4.903136384219461541e-06, +-4.902214436078224875e-06, +-4.901284624991586006e-06, +-4.900346953493966614e-06, +-4.899401424132289740e-06, +-4.898448039466067028e-06, +-4.897486802067087864e-06, +-4.896517714519823412e-06, +-4.895540779421133540e-06, +-4.894555999380250726e-06, +-4.893563377018969794e-06, +-4.892562914971500528e-06, +-4.891554615884485464e-06, +-4.890538482417093908e-06, +-4.889514517240737332e-06, +-4.888482723039414965e-06, +-4.887443102509491871e-06, +-4.886395658359755697e-06, +-4.885340393311387032e-06, +-4.884277310097989895e-06, +-4.883206411465522281e-06, +-4.882127700172378323e-06, +-4.881041178989306129e-06, +-4.879946850699440819e-06, +-4.878844718098290120e-06, +-4.877734783993764017e-06, +-4.876617051206011275e-06, +-4.875491522567639665e-06, +-4.874358200923596535e-06, +-4.873217089131140009e-06, +-4.872068190059899129e-06, +-4.870911506591734089e-06, +-4.869747041620917509e-06, +-4.868574798054038710e-06, +-4.867394778809926643e-06, +-4.866206986819784561e-06, +-4.865011425027120566e-06, +-4.863808096387589211e-06, +-4.862597003869293893e-06, +-4.861378150452543755e-06, +-4.860151539129908740e-06, +-4.858917172906285662e-06, +-4.857675054798716094e-06, +-4.856425187836571867e-06, +-4.855167575061478839e-06, +-4.853902219527263527e-06, +-4.852629124299977680e-06, +-4.851348292457971113e-06, +-4.850059727091670640e-06, +-4.848763431303783358e-06, +-4.847459408209377115e-06, +-4.846147660935433279e-06, +-4.844828192621329543e-06, +-4.843501006418574807e-06, +-4.842166105490728710e-06, +-4.840823493013828531e-06, +-4.839473172175703944e-06, +-4.838115146176616523e-06, +-4.836749418228909922e-06, +-4.835375991556951427e-06, +-4.833994869397330162e-06, +-4.832606054998929089e-06, +-4.831209551622456594e-06, +-4.829805362540893725e-06, +-4.828393491039403560e-06, +-4.826973940415000857e-06, +-4.825546713977156845e-06, +-4.824111815047095333e-06, +-4.822669246958293309e-06, +-4.821219013056262405e-06, +-4.819761116698651389e-06, +-4.818295561254948854e-06, +-4.816822350107052428e-06, +-4.815341486648573355e-06, +-4.813852974285307449e-06, +-4.812356816435168178e-06, +-4.810853016527795333e-06, +-4.809341578005222492e-06, +-4.807822504321322212e-06, +-4.806295798941844993e-06, +-4.804761465344736916e-06, +-4.803219507019888073e-06, +-4.801669927468973326e-06, +-4.800112730206027440e-06, +-4.798547918756668358e-06, +-4.796975496658690121e-06, +-4.795395467461746922e-06, +-4.793807834727550474e-06, +-4.792212602029611654e-06, +-4.790609772953511561e-06, +-4.788999351096566934e-06, +-4.787381340068169815e-06, +-4.785755743489635929e-06, +-4.784122564993931089e-06, +-4.782481808226291232e-06, +-4.780833476843641346e-06, +-4.779177574514660698e-06, +-4.777514104920106395e-06, +-4.775843071752491515e-06, +-4.774164478716252821e-06, +-4.772478329527669442e-06, +-4.770784627914686691e-06, +-4.769083377617337889e-06, +-4.767374582387328471e-06, +-4.765658245988227416e-06, +-4.763934372195413036e-06, +-4.762202964796105163e-06, +-4.760464027589155933e-06, +-4.758717564385379281e-06, +-4.756963579007308690e-06, +-4.755202075289251402e-06, +-4.753433057077280791e-06, +-4.751656528229267710e-06, +-4.749872492614648395e-06, +-4.748080954114829355e-06, +-4.746281916622818908e-06, +-4.744475384043401672e-06, +-4.742661360293119082e-06, +-4.740839849300043231e-06, +-4.739010855004124157e-06, +-4.737174381356932343e-06, +-4.735330432321747653e-06, +-4.733479011873524608e-06, +-4.731620123998913561e-06, +-4.729753772696086206e-06, +-4.727879961975020180e-06, +-4.725998695857300864e-06, +-4.724109978376117986e-06, +-4.722213813576388449e-06, +-4.720310205514412429e-06, +-4.718399158258329082e-06, +-4.716480675887831095e-06, +-4.714554762494180776e-06, +-4.712621422180211751e-06, +-4.710680659060448395e-06, +-4.708732477260741607e-06, +-4.706776880918671998e-06, +-4.704813874183565987e-06, +-4.702843461215872380e-06, +-4.700865646187876422e-06, +-4.698880433283405030e-06, +-4.696887826697471038e-06, +-4.694887830637156650e-06, +-4.692880449320502139e-06, +-4.690865686977359651e-06, +-4.688843547849060320e-06, +-4.686814036188216916e-06, +-4.684777156259006746e-06, +-4.682732912337365632e-06, +-4.680681308710163741e-06, +-4.678622349676054317e-06, +-4.676556039545157737e-06, +-4.674482382638624439e-06, +-4.672401383289664917e-06, +-4.670313045842327451e-06, +-4.668217374652341754e-06, +-4.666114374086782697e-06, +-4.664004048524171954e-06, +-4.661886402354126484e-06, +-4.659761439978148813e-06, +-4.657629165808570782e-06, +-4.655489584269368395e-06, +-4.653342699795898389e-06, +-4.651188516834493357e-06, +-4.649027039843309621e-06, +-4.646858273291603873e-06, +-4.644682221659701831e-06, +-4.642498889439550503e-06, +-4.640308281134368367e-06, +-4.638110401258288765e-06, +-4.635905254337358560e-06, +-4.633692844908248101e-06, +-4.631473177519241405e-06, +-4.629246256729869393e-06, +-4.627012087110561760e-06, +-4.624770673243475372e-06, +-4.622522019721742098e-06, +-4.620266131149550132e-06, +-4.618003012142506517e-06, +-4.615732667327339839e-06, +-4.613455101341976460e-06, +-4.611170318835489694e-06, +-4.608878324468242959e-06, +-4.606579122911462024e-06, +-4.604272718847790659e-06, +-4.601959116970928958e-06, +-4.599638321985691781e-06, +-4.597310338608124796e-06, +-4.594975171565105530e-06, +-4.592632825594859210e-06, +-4.590283305446652138e-06, +-4.587926615880811170e-06, +-4.585562761668762685e-06, +-4.583191747593024110e-06, +-4.580813578446987079e-06, +-4.578428259035282510e-06, +-4.576035794173512087e-06, +-4.573636188688327044e-06, +-4.571229447417478132e-06, +-4.568815575209437844e-06, +-4.566394576923969623e-06, +-4.563966457431714512e-06, +-4.561531221614298720e-06, +-4.559088874364357345e-06, +-4.556639420585508115e-06, +-4.554182865192125228e-06, +-4.551719213109743390e-06, +-4.549248469274773207e-06, +-4.546770638634524909e-06, +-4.544285726147226976e-06, +-4.541793736782145578e-06, +-4.539294675519066187e-06, +-4.536788547349077080e-06, +-4.534275357273945080e-06, +-4.531755110306333243e-06, +-4.529227811469883864e-06, +-4.526693465798749224e-06, +-4.524152078338246345e-06, +-4.521603654144421615e-06, +-4.519048198284108388e-06, +-4.516485715835006601e-06, +-4.513916211885671768e-06, +-4.511339691535159221e-06, +-4.508756159893600944e-06, +-4.506165622081794759e-06, +-4.503568083231330535e-06, +-4.500963548484508025e-06, +-4.498352022994500344e-06, +-4.495733511924786457e-06, +-4.493108020450296368e-06, +-4.490475553755950834e-06, +-4.487836117037757427e-06, +-4.485189715502453931e-06, +-4.482536354367125485e-06, +-4.479876038859736521e-06, +-4.477208774219251038e-06, +-4.474534565694630566e-06, +-4.471853418545921756e-06, +-4.469165338043784581e-06, +-4.466470329469075597e-06, +-4.463768398114032942e-06, +-4.461059549280713558e-06, +-4.458343788282232405e-06, +-4.455621120442262706e-06, +-4.452891551094753043e-06, +-4.450155085584370351e-06, +-4.447411729266748102e-06, +-4.444661487507326716e-06, +-4.441904365682546179e-06, +-4.439140369179400512e-06, +-4.436369503394899900e-06, +-4.433591773737268393e-06, +-4.430807185624843620e-06, +-4.428015744486255504e-06, +-4.425217455760912463e-06, +-4.422412324898721041e-06, +-4.419600357359537032e-06, +-4.416781558614500402e-06, +-4.413955934144349695e-06, +-4.411123489440713757e-06, +-4.408284230005614528e-06, +-4.405438161351049456e-06, +-4.402585289000055370e-06, +-4.399725618485706437e-06, +-4.396859155351248845e-06, +-4.393985905150610712e-06, +-4.391105873447920130e-06, +-4.388219065817708447e-06, +-4.385325487844874696e-06, +-4.382425145124347625e-06, +-4.379518043261669308e-06, +-4.376604187872570775e-06, +-4.373683584583093143e-06, +-4.370756239029511381e-06, +-4.367822156858515575e-06, +-4.364881343726662896e-06, +-4.361933805301131464e-06, +-4.358979547259193489e-06, +-4.356018575288330470e-06, +-4.353050895086318742e-06, +-4.350076512361133767e-06, +-4.347095432830673997e-06, +-4.344107662223303821e-06, +-4.341113206277492734e-06, +-4.338112070741844131e-06, +-4.335104261375222366e-06, +-4.332089783946270787e-06, +-4.329068644234124939e-06, +-4.326040848027918745e-06, +-4.323006401126854808e-06, +-4.319965309340283185e-06, +-4.316917578487703930e-06, +-4.313863214398363906e-06, +-4.310802222911886973e-06, +-4.307734609877897913e-06, +-4.304660381155991930e-06, +-4.301579542615826134e-06, +-4.298492100137185608e-06, +-4.295398059609499752e-06, +-4.292297426932534307e-06, +-4.289190208015956832e-06, +-4.286076408779394298e-06, +-4.282956035152553368e-06, +-4.279829093074715567e-06, +-4.276695588495350529e-06, +-4.273555527374243906e-06, +-4.270408915680346243e-06, +-4.267255759393012195e-06, +-4.264096064501477898e-06, +-4.260929837004523861e-06, +-4.257757082911135640e-06, +-4.254577808240080333e-06, +-4.251392019019946381e-06, +-4.248199721289185079e-06, +-4.245000921096183417e-06, +-4.241795624498622032e-06, +-4.238583837564947348e-06, +-4.235365566372446273e-06, +-4.232140817008719188e-06, +-4.228909595571143775e-06, +-4.225671908166474372e-06, +-4.222427760911461151e-06, +-4.219177159933012750e-06, +-4.215920111366960455e-06, +-4.212656621359362624e-06, +-4.209386696066051531e-06, +-4.206110341651921007e-06, +-4.202827564292579850e-06, +-4.199538370172291841e-06, +-4.196242765485582566e-06, +-4.192940756436582962e-06, +-4.189632349238684580e-06, +-4.186317550115157915e-06, +-4.182996365299309956e-06, +-4.179668801033214481e-06, +-4.176334863569109666e-06, +-4.172994559168801769e-06, +-4.169647894103095082e-06, +-4.166294874653224257e-06, +-4.162935507109527858e-06, +-4.159569797771591509e-06, +-4.156197752948967868e-06, +-4.152819378960577779e-06, +-4.149434682134816149e-06, +-4.146043668809732367e-06, +-4.142646345332412817e-06, +-4.139242718059855860e-06, +-4.135832793358505124e-06, +-4.132416577603680294e-06, +-4.128994077180957779e-06, +-4.125565298484936579e-06, +-4.122130247919327232e-06, +-4.118688931897659925e-06, +-4.115241356842736470e-06, +-4.111787529186689593e-06, +-4.108327455371174365e-06, +-4.104861141846768502e-06, +-4.101388595073804151e-06, +-4.097909821521807154e-06, +-4.094424827669593612e-06, +-4.090933620005343575e-06, +-4.087436205026595110e-06, +-4.083932589239776747e-06, +-4.080422779160999445e-06, +-4.076906781315487393e-06, +-4.073384602237721155e-06, +-4.069856248471389390e-06, +-4.066321726569560802e-06, +-4.062781043094070883e-06, +-4.059234204616399444e-06, +-4.055681217717020091e-06, +-4.052122088985640784e-06, +-4.048556825021225859e-06, +-4.044985432431454772e-06, +-4.041407917833605560e-06, +-4.037824287853933958e-06, +-4.034234549127777592e-06, +-4.030638708299583077e-06, +-4.027036772023052561e-06, +-4.023428746960491502e-06, +-4.019814639783720928e-06, +-4.016194457173499757e-06, +-4.012568205819564612e-06, +-4.008935892420730613e-06, +-4.005297523684958295e-06, +-4.001653106328748826e-06, +-3.998002647078074898e-06, +-3.994346152667703096e-06, +-3.990683629841398887e-06, +-3.987015085351985059e-06, +-3.983340525960851290e-06, +-3.979659958438538605e-06, +-3.975973389565021432e-06, +-3.972280826128214289e-06, +-3.968582274925579446e-06, +-3.964877742763445069e-06, +-3.961167236456534267e-06, +-3.957450762828905299e-06, +-3.953728328713304442e-06, +-3.949999940951298124e-06, +-3.946265606393444879e-06, +-3.942525331898632114e-06, +-3.938779124334844368e-06, +-3.935026990579338652e-06, +-3.931268937517186703e-06, +-3.927504972042858087e-06, +-3.923735101059564599e-06, +-3.919959331478766440e-06, +-3.916177670220979438e-06, +-3.912390124215883475e-06, +-3.908596700400913863e-06, +-3.904797405722809724e-06, +-3.900992247137016835e-06, +-3.897181231606964255e-06, +-3.893364366105866816e-06, +-3.889541657614429662e-06, +-3.885713113122643112e-06, +-3.881878739629099107e-06, +-3.878038544140505007e-06, +-3.874192533672445926e-06, +-3.870340715249607500e-06, +-3.866483095904238523e-06, +-3.862619682677784024e-06, +-3.858750482620210185e-06, +-3.854875502789375839e-06, +-3.850994750252774822e-06, +-3.847108232085237966e-06, +-3.843215955370772861e-06, +-3.839317927201664299e-06, +-3.835414154678642842e-06, +-3.831504644910928860e-06, +-3.827589405016278276e-06, +-3.823668442120415897e-06, +-3.819741763357953602e-06, +-3.815809375871913458e-06, +-3.811871286812996311e-06, +-3.807927503341299989e-06, +-3.803978032624770080e-06, +-3.800022881839355366e-06, +-3.796062058169846802e-06, +-3.792095568809168132e-06, +-3.788123420958564774e-06, +-3.784145621827730030e-06, +-3.780162178634130000e-06, +-3.776173098604025527e-06, +-3.772178388971878849e-06, +-3.768178056979772115e-06, +-3.764172109878981591e-06, +-3.760160554928522883e-06, +-3.756143399395265289e-06, +-3.752120650554769933e-06, +-3.748092315690601553e-06, +-3.744058402094505958e-06, +-3.740018917066347764e-06, +-3.735973867914309029e-06, +-3.731923261954205272e-06, +-3.727867106510433727e-06, +-3.723805408915368134e-06, +-3.719738176509426508e-06, +-3.715665416641274000e-06, +-3.711587136667136376e-06, +-3.707503343951795705e-06, +-3.703414045867873772e-06, +-3.699319249796028584e-06, +-3.695218963124935316e-06, +-3.691113193251405319e-06, +-3.687001947579750843e-06, +-3.682885233522721434e-06, +-3.678763058500877127e-06, +-3.674635429942721435e-06, +-3.670502355284822046e-06, +-3.666363841971198845e-06, +-3.662219897454254376e-06, +-3.658070529194098340e-06, +-3.653915744658734358e-06, +-3.649755551324028636e-06, +-3.645589956673856077e-06, +-3.641418968199406982e-06, +-3.637242593400030275e-06, +-3.633060839783443141e-06, +-3.628873714864083127e-06, +-3.624681226164866575e-06, +-3.620483381216488559e-06, +-3.616280187556868494e-06, +-3.612071652732184367e-06, +-3.607857784296173510e-06, +-3.603638589810308362e-06, +-3.599414076843923520e-06, +-3.595184252973504656e-06, +-3.590949125783555034e-06, +-3.586708702866812348e-06, +-3.582462991822563551e-06, +-3.578212000258458352e-06, +-3.573955735789740958e-06, +-3.569694206038778275e-06, +-3.565427418636022563e-06, +-3.561155381219341008e-06, +-3.556878101434179624e-06, +-3.552595586933526404e-06, +-3.548307845378094708e-06, +-3.544014884435388981e-06, +-3.539716711781737211e-06, +-3.535413335099651572e-06, +-3.531104762079867660e-06, +-3.526791000420611381e-06, +-3.522472057827011960e-06, +-3.518147942012004879e-06, +-3.513818660696506362e-06, +-3.509484221607771407e-06, +-3.505144632481170009e-06, +-3.500799901059478620e-06, +-3.496450035092109347e-06, +-3.492095042337137751e-06, +-3.487734930558679586e-06, +-3.483369707528953321e-06, +-3.478999381027282761e-06, +-3.474623958840340572e-06, +-3.470243448762073734e-06, +-3.465857858593889050e-06, +-3.461467196143941634e-06, +-3.457071469228147114e-06, +-3.452670685669708144e-06, +-3.448264853298279652e-06, +-3.443853979951870849e-06, +-3.439438073475128299e-06, +-3.435017141719495159e-06, +-3.430591192544171287e-06, +-3.426160233815306449e-06, +-3.421724273406213343e-06, +-3.417283319197523035e-06, +-3.412837379076402294e-06, +-3.408386460937711913e-06, +-3.403930572683387953e-06, +-3.399469722221689999e-06, +-3.395003917469078609e-06, +-3.390533166348489482e-06, +-3.386057476789510917e-06, +-3.381576856729330791e-06, +-3.377091314111962372e-06, +-3.372600856888397635e-06, +-3.368105493016599633e-06, +-3.363605230461717649e-06, +-3.359100077195245664e-06, +-3.354590041196220490e-06, +-3.350075130450369226e-06, +-3.345555352950393019e-06, +-3.341030716696028046e-06, +-3.336501229693326812e-06, +-3.331966899955799943e-06, +-3.327427735503599230e-06, +-3.322883744363745900e-06, +-3.318334934570059890e-06, +-3.313781314163383887e-06, +-3.309222891190771871e-06, +-3.304659673706641926e-06, +-3.300091669771974947e-06, +-3.295518887454554353e-06, +-3.290941334829035537e-06, +-3.286359019976273330e-06, +-3.281771950984373586e-06, +-3.277180135947997773e-06, +-3.272583582968457837e-06, +-3.267982300153743306e-06, +-3.263376295618705525e-06, +-3.258765577484237301e-06, +-3.254150153878263507e-06, +-3.249530032935914303e-06, +-3.244905222797731966e-06, +-3.240275731611660147e-06, +-3.235641567532179473e-06, +-3.231002738719747658e-06, +-3.226359253341975189e-06, +-3.221711119572783370e-06, +-3.217058345592634716e-06, +-3.212400939588658316e-06, +-3.207738909753910796e-06, +-3.203072264288295772e-06, +-3.198401011398792973e-06, +-3.193725159297599851e-06, +-3.189044716204176744e-06, +-3.184359690344375275e-06, +-3.179670089949865336e-06, +-3.174975923259299337e-06, +-3.170277198517510486e-06, +-3.165573923975673303e-06, +-3.160866107891321408e-06, +-3.156153758528517353e-06, +-3.151436884156845495e-06, +-3.146715493053577016e-06, +-3.141989593500875561e-06, +-3.137259193787995711e-06, +-3.132524302210437219e-06, +-3.127784927069131016e-06, +-3.123041076672464887e-06, +-3.118292759334437362e-06, +-3.113539983374825007e-06, +-3.108782757120200980e-06, +-3.104021088903353968e-06, +-3.099254987062370424e-06, +-3.094484459942912241e-06, +-3.089709515895372414e-06, +-3.084930163277041752e-06, +-3.080146410451332993e-06, +-3.075358265786911750e-06, +-3.070565737659760732e-06, +-3.065768834451301022e-06, +-3.060967564548576306e-06, +-3.056161936345282022e-06, +-3.051351958241131776e-06, +-3.046537638641003111e-06, +-3.041718985957007655e-06, +-3.036896008606601389e-06, +-3.032068715012795560e-06, +-3.027237113605136700e-06, +-3.022401212818918879e-06, +-3.017561021095332368e-06, +-3.012716546881680894e-06, +-3.007867798630526568e-06, +-3.003014784800910029e-06, +-2.998157513857759646e-06, +-2.993295994270972057e-06, +-2.988430234517550506e-06, +-2.983560243079658788e-06, +-2.978686028444855871e-06, +-2.973807599107098790e-06, +-2.968924963565907043e-06, +-2.964038130326545551e-06, +-2.959147107900246587e-06, +-2.954251904803302170e-06, +-2.949352529558376975e-06, +-2.944448990693596073e-06, +-2.939541296742763469e-06, +-2.934629456245367180e-06, +-2.929713477746721119e-06, +-2.924793369797184547e-06, +-2.919869140953344116e-06, +-2.914940799777177413e-06, +-2.910008354836252449e-06, +-2.905071814703742470e-06, +-2.900131187958545398e-06, +-2.895186483184517684e-06, +-2.890237708971642792e-06, +-2.885284873915234989e-06, +-2.880327986616116795e-06, +-2.875367055680785006e-06, +-2.870402089720588221e-06, +-2.865433097352968173e-06, +-2.860460087200582197e-06, +-2.855483067891550145e-06, +-2.850502048059372648e-06, +-2.845517036343188184e-06, +-2.840528041386848126e-06, +-2.835535071840247425e-06, +-2.830538136358398805e-06, +-2.825537243601665700e-06, +-2.820532402235715237e-06, +-2.815523620931786327e-06, +-2.810510908365714307e-06, +-2.805494273219294235e-06, +-2.800473724179364407e-06, +-2.795449269937996930e-06, +-2.790420919192745914e-06, +-2.785388680645710645e-06, +-2.780352563004635459e-06, +-2.775312574983113880e-06, +-2.770268725298621384e-06, +-2.765221022674632979e-06, +-2.760169475839800319e-06, +-2.755114093527235952e-06, +-2.750054884475834701e-06, +-2.744991857429361402e-06, +-2.739925021136678337e-06, +-2.734854384351930731e-06, +-2.729779955833677274e-06, +-2.724701744345943833e-06, +-2.719619758658436051e-06, +-2.714534007544566189e-06, +-2.709444499783625764e-06, +-2.704351244159860587e-06, +-2.699254249461650838e-06, +-2.694153524483600272e-06, +-2.689049078024625311e-06, +-2.683940918888101160e-06, +-2.678829055882979464e-06, +-2.673713497823107718e-06, +-2.668594253526314051e-06, +-2.663471331816849217e-06, +-2.658344741522263163e-06, +-2.653214491475813146e-06, +-2.648080590515574346e-06, +-2.642943047483536503e-06, +-2.637801871227817644e-06, +-2.632657070600622305e-06, +-2.627508654458501147e-06, +-2.622356631663372056e-06, +-2.617201011081901387e-06, +-2.612041801584578575e-06, +-2.606879012048138653e-06, +-2.601712651352444748e-06, +-2.596542728382904663e-06, +-2.591369252029371856e-06, +-2.586192231186329241e-06, +-2.581011674752881145e-06, +-2.575827591632953205e-06, +-2.570639990734398330e-06, +-2.565448880970306628e-06, +-2.560254271258344309e-06, +-2.555056170519808384e-06, +-2.549854587681887829e-06, +-2.544649531675601901e-06, +-2.539441011436021216e-06, +-2.534229035903384563e-06, +-2.529013614022155728e-06, +-2.523794754741265329e-06, +-2.518572467014312404e-06, +-2.513346759798627594e-06, +-2.508117642056656351e-06, +-2.502885122754965364e-06, +-2.497649210864552151e-06, +-2.492409915360720546e-06, +-2.487167245223404266e-06, +-2.481921209436149200e-06, +-2.476671816987507622e-06, +-2.471419076870129333e-06, +-2.466162998080917929e-06, +-2.460903589621071890e-06, +-2.455640860496254403e-06, +-2.450374819715713302e-06, +-2.445105476293570670e-06, +-2.439832839247956328e-06, +-2.434556917601193754e-06, +-2.429277720380004649e-06, +-2.423995256614599215e-06, +-2.418709535340004310e-06, +-2.413420565595179141e-06, +-2.408128356423178742e-06, +-2.402832916871176000e-06, +-2.397534255990643339e-06, +-2.392232382836469268e-06, +-2.386927306468257728e-06, +-2.381619035949437438e-06, +-2.376307580347462217e-06, +-2.370992948733796584e-06, +-2.365675150184134296e-06, +-2.360354193777457290e-06, +-2.355030088597406607e-06, +-2.349702843731340495e-06, +-2.344372468270553785e-06, +-2.339038971310484148e-06, +-2.333702361949787977e-06, +-2.328362649291474572e-06, +-2.323019842443115348e-06, +-2.317673950514744896e-06, +-2.312324982621183962e-06, +-2.306972947881070874e-06, +-2.301617855416158497e-06, +-2.296259714352691514e-06, +-2.290898533820469179e-06, +-2.285534322953051151e-06, +-2.280167090887977297e-06, +-2.274796846765837648e-06, +-2.269423599731399379e-06, +-2.264047358933827883e-06, +-2.258668133524589096e-06, +-2.253285932659735211e-06, +-2.247900765499008101e-06, +-2.242512641204818634e-06, +-2.237121568944640399e-06, +-2.231727557888850612e-06, +-2.226330617210941875e-06, +-2.220930756088692355e-06, +-2.215527983703460204e-06, +-2.210122309239192527e-06, +-2.204713741885031287e-06, +-2.199302290831984456e-06, +-2.193887965275517520e-06, +-2.188470774414566681e-06, +-2.183050727450598228e-06, +-2.177627833589966679e-06, +-2.172202102041748915e-06, +-2.166773542017974572e-06, +-2.161342162734792410e-06, +-2.155907973411756684e-06, +-2.150470983270838657e-06, +-2.145031201539049015e-06, +-2.139588637445070487e-06, +-2.134143300221883646e-06, +-2.128695199105533209e-06, +-2.123244343335381297e-06, +-2.117790742154066351e-06, +-2.112334404807737769e-06, +-2.106875340545096208e-06, +-2.101413558618776372e-06, +-2.095949068284660488e-06, +-2.090481878800866527e-06, +-2.085011999430152929e-06, +-2.079539439437720132e-06, +-2.074064208091483313e-06, +-2.068586314663195556e-06, +-2.063105768427511455e-06, +-2.057622578662193794e-06, +-2.052136754648363840e-06, +-2.046648305669488719e-06, +-2.041157241012832806e-06, +-2.035663569968479401e-06, +-2.030167301829531900e-06, +-2.024668445892139207e-06, +-2.019167011455681231e-06, +-2.013663007821810049e-06, +-2.008156444295886471e-06, +-2.002647330185969953e-06, +-1.997135674803076099e-06, +-1.991621487461163525e-06, +-1.986104777477321906e-06, +-1.980585554170830076e-06, +-1.975063826864556167e-06, +-1.969539604884022915e-06, +-1.964012897557569862e-06, +-1.958483714216640506e-06, +-1.952952064194753995e-06, +-1.947417956828980241e-06, +-1.941881401458913737e-06, +-1.936342407426939105e-06, +-1.930800984078181539e-06, +-1.925257140760761766e-06, +-1.919710886824799511e-06, +-1.914162231623854300e-06, +-1.908611184513930619e-06, +-1.903057754853719320e-06, +-1.897501952004805778e-06, +-1.891943785330714014e-06, +-1.886383264198312981e-06, +-1.880820397976850739e-06, +-1.875255196038174467e-06, +-1.869687667756724957e-06, +-1.864117822509750284e-06, +-1.858545669676323451e-06, +-1.852971218638539678e-06, +-1.847394478781758437e-06, +-1.841815459492363262e-06, +-1.836234170160226405e-06, +-1.830650620177685619e-06, +-1.825064818938571764e-06, +-1.819476775840860021e-06, +-1.813886500283241949e-06, +-1.808294001667811002e-06, +-1.802699289399053928e-06, +-1.797102372883101562e-06, +-1.791503261528947504e-06, +-1.785901964748664313e-06, +-1.780298491955198901e-06, +-1.774692852564789540e-06, +-1.769085055995976097e-06, +-1.763475111668618969e-06, +-1.757863029006550710e-06, +-1.752248817434150635e-06, +-1.746632486379031397e-06, +-1.741014045270771822e-06, +-1.735393503541411157e-06, +-1.729770870624195033e-06, +-1.724146155956277082e-06, +-1.718519368975248003e-06, +-1.712890519121818754e-06, +-1.707259615838854721e-06, +-1.701626668570334079e-06, +-1.695991686763812870e-06, +-1.690354679868205566e-06, +-1.684715657333990685e-06, +-1.679074628614438566e-06, +-1.673431603164862167e-06, +-1.667786590441606132e-06, +-1.662139599904751368e-06, +-1.656490641014643692e-06, +-1.650839723234578713e-06, +-1.645186856029572998e-06, +-1.639532048866586209e-06, +-1.633875311214502466e-06, +-1.628216652544361164e-06, +-1.622556082328369124e-06, +-1.616893610041335460e-06, +-1.611229245159954360e-06, +-1.605562997161761963e-06, +-1.599894875527622610e-06, +-1.594224889739472777e-06, +-1.588553049280552945e-06, +-1.582879363636628814e-06, +-1.577203842295001540e-06, +-1.571526494744717381e-06, +-1.565847330476812063e-06, +-1.560166358983293282e-06, +-1.554483589758631483e-06, +-1.548799032298730502e-06, +-1.543112696101174265e-06, +-1.537424590665209635e-06, +-1.531734725491975535e-06, +-1.526043110083491803e-06, +-1.520349753944132817e-06, +-1.514654666579629052e-06, +-1.508957857497286468e-06, +-1.503259336206229814e-06, +-1.497559112216389157e-06, +-1.491857195039974564e-06, +-1.486153594190458393e-06, +-1.480448319182821992e-06, +-1.474741379533533674e-06, +-1.469032784760785254e-06, +-1.463322544383466500e-06, +-1.457610667922662691e-06, +-1.451897164900636270e-06, +-1.446182044841055965e-06, +-1.440465317268980911e-06, +-1.434746991711100991e-06, +-1.429027077694711294e-06, +-1.423305584749201409e-06, +-1.417582522405057199e-06, +-1.411857900194057733e-06, +-1.406131727649548033e-06, +-1.400404014305395951e-06, +-1.394674769697483162e-06, +-1.388944003362698460e-06, +-1.383211724839168368e-06, +-1.377477943666239350e-06, +-1.371742669384697186e-06, +-1.366005911535789928e-06, +-1.360267679662671874e-06, +-1.354527983309403436e-06, +-1.348786832021194027e-06, +-1.343044235344378554e-06, +-1.337300202826646329e-06, +-1.331554744015772851e-06, +-1.325807868462392355e-06, +-1.320059585716415920e-06, +-1.314309905329818424e-06, +-1.308558836855608758e-06, +-1.302806389847050346e-06, +-1.297052573858910732e-06, +-1.291297398447700019e-06, +-1.285540873169387901e-06, +-1.279783007581892886e-06, +-1.274023811244080885e-06, +-1.268263293714721249e-06, +-1.262501464555271389e-06, +-1.256738333326287259e-06, +-1.250973909590227887e-06, +-1.245208202910145009e-06, +-1.239441222850202305e-06, +-1.233672978974358263e-06, +-1.227903480849166889e-06, +-1.222132738040201115e-06, +-1.216360760114826617e-06, +-1.210587556641176060e-06, +-1.204813137187103646e-06, +-1.199037511322737439e-06, +-1.193260688618152562e-06, +-1.187482678643607096e-06, +-1.181703490970817503e-06, +-1.175923135172169188e-06, +-1.170141620819683122e-06, +-1.164358957487793470e-06, +-1.158575154749783916e-06, +-1.152790222180553437e-06, +-1.147004169355609600e-06, +-1.141217005849993472e-06, +-1.135428741240852266e-06, +-1.129639385105100895e-06, +-1.123848947019680533e-06, +-1.118057436562800994e-06, +-1.112264863312930651e-06, +-1.106471236848996546e-06, +-1.100676566750412128e-06, +-1.094880862597276731e-06, +-1.089084133969373323e-06, +-1.083286390447659707e-06, +-1.077487641613246786e-06, +-1.071687897047626205e-06, +-1.065887166332924673e-06, +-1.060085459050849403e-06, +-1.054282784784219554e-06, +-1.048479153115918233e-06, +-1.042674573629140892e-06, +-1.036869055907376269e-06, +-1.031062609534642072e-06, +-1.025255244094457742e-06, +-1.019446969171342433e-06, +-1.013637794349804074e-06, +-1.007827729214558541e-06, +-1.002016783350772965e-06, +-9.962049663430353221e-07, +-9.903922877768623565e-07, +-9.845787572376780639e-07, +-9.787643843110349769e-07, +-9.729491785826012484e-07, +-9.671331496384147607e-07, +-9.613163070638315349e-07, +-9.554986604450446723e-07, +-9.496802193680567976e-07, +-9.438609934189037819e-07, +-9.380409921836562241e-07, +-9.322202252486501625e-07, +-9.263987021994458588e-07, +-9.205764326223489640e-07, +-9.147534261033765023e-07, +-9.089296922284952055e-07, +-9.031052405838565644e-07, +-8.972800807547676840e-07, +-8.914542223271954018e-07, +-8.856276748867429666e-07, +-8.798004480188822311e-07, +-8.739725513089395703e-07, +-8.681439943423390854e-07, +-8.623147867035479423e-07, +-8.564849379776266532e-07, +-8.506544577491584276e-07, +-8.448233556025101638e-07, +-8.389916411218055556e-07, +-8.331593238911707323e-07, +-8.273264134934356508e-07, +-8.214929195129399986e-07, +-8.156588515319234565e-07, +-8.098242191333424012e-07, +-8.039890318998137609e-07, +-7.981532994128315100e-07, +-7.923170312540493942e-07, +-7.864802370055087830e-07, +-7.806429262473099638e-07, +-7.748051085601720874e-07, +-7.689667935243940706e-07, +-7.631279907187937930e-07, +-7.572887097235422692e-07, +-7.514489601165278660e-07, +-7.456087514761852865e-07, +-7.397680933804455667e-07, +-7.339269954059383825e-07, +-7.280854671292816571e-07, +-7.222435181273185187e-07, +-7.164011579747683720e-07, +-7.105583962468087608e-07, +-7.047152425180159413e-07, +-6.988717063613167847e-07, +-6.930277973505665105e-07, +-6.871835250581938288e-07, +-6.813388990554598146e-07, +-6.754939289137183991e-07, +-6.696486242036328639e-07, +-6.638029944941282732e-07, +-6.579570493552177049e-07, +-6.521107983543625502e-07, +-6.462642510593114504e-07, +-6.404174170370427762e-07, +-6.345703058527160008e-07, +-6.287229270722394806e-07, +-6.228752902599360320e-07, +-6.170274049787776659e-07, +-6.111792807916670419e-07, +-6.053309272603861956e-07, +-5.994823539458394242e-07, +-5.936335704083003033e-07, +-5.877845862063562834e-07, +-5.819354108984446784e-07, +-5.760860540418103917e-07, +-5.702365251927399088e-07, +-5.643868339065525095e-07, +-5.585369897378368018e-07, +-5.526870022394124713e-07, +-5.468368809638485876e-07, +-5.409866354624303302e-07, +-5.351362752853947813e-07, +-5.292858099819153614e-07, +-5.234352491003478923e-07, +-5.175846021871740297e-07, +-5.117338787885464628e-07, +-5.058830884492368997e-07, +-5.000322407128705889e-07, +-4.941813451221837125e-07, +-4.883304112179576060e-07, +-4.824794485405694646e-07, +-4.766284666289352456e-07, +-4.707774750207495379e-07, +-4.649264832524830205e-07, +-4.590755008596130676e-07, +-4.532245373755719454e-07, +-4.473736023332982055e-07, +-4.415227052641735531e-07, +-4.356718556982700217e-07, +-4.298210631643359969e-07, +-4.239703371900421738e-07, +-4.181196873009202243e-07, +-4.122691230219106977e-07, +-4.064186538763102107e-07, +-4.005682893860142819e-07, +-3.947180390717565652e-07, +-3.888679124520660468e-07, +-3.830179190445363766e-07, +-3.771680683660841604e-07, +-3.713183699305849441e-07, +-3.654688332514608993e-07, +-3.596194678406249435e-07, +-3.537702832076864352e-07, +-3.479212888614950504e-07, +-3.420724943090850086e-07, +-3.362239090559201832e-07, +-3.303755426058791726e-07, +-3.245274044614998277e-07, +-3.186795041226638103e-07, +-3.128318510894418821e-07, +-3.069844548584348812e-07, +-3.011373249256267415e-07, +-2.952904707853193477e-07, +-2.894439019293458546e-07, +-2.835976278483484354e-07, +-2.777516580320273627e-07, +-2.719060019667857275e-07, +-2.660606691383103486e-07, +-2.602156690305216635e-07, +-2.543710111245126607e-07, +-2.485267049014015809e-07, +-2.426827598386687112e-07, +-2.368391854130046394e-07, +-2.309959910992563594e-07, +-2.251531863696294461e-07, +-2.193107806949736127e-07, +-2.134687835450288003e-07, +-2.076272043860683355e-07, +-2.017860526834855572e-07, +-1.959453379007348131e-07, +-1.901050694982821986e-07, +-1.842652569361847976e-07, +-1.784259096717382610e-07, +-1.725870371597212283e-07, +-1.667486488536802501e-07, +-1.609107542048751528e-07, +-1.550733626625218194e-07, +-1.492364836740385435e-07, +-1.434001266839919236e-07, +-1.375643011356393102e-07, +-1.317290164701354263e-07, +-1.258942821254761714e-07, +-1.200601075390849562e-07, +-1.142265021454558340e-07, +-1.083934753763995504e-07, +-1.025610366623278171e-07, +-9.672919543119833264e-08, +-9.089796110876035578e-08, +-8.506734311879846542e-08, +-7.923735088207849453e-08, +-7.340799381789198874e-08, +-6.757928134300057833e-08, +-6.175122287188234570e-08, +-5.592382781671508321e-08, +-5.009710558762236290e-08, +-4.427106559161843121e-08, +-3.844571723415254857e-08, +-3.262106991805444658e-08, +-2.679713304377900149e-08, +-2.097391600939143423e-08, +-1.515142821081172904e-08, +-9.329679040761137943e-09, +-3.508677890305125251e-09, + 2.311565852200381939e-09, + 8.131042800864270295e-09, + 1.394974357201570415e-08, + 1.976765878525743042e-08, + 2.558477906192312728e-08, + 3.140109502613103747e-08, + 3.721659730453899216e-08, + 4.303127652635958635e-08, + 4.884512332311552870e-08, + 5.465812832969285744e-08, + 6.047028218279864562e-08, + 6.628157552201362484e-08, + 7.209199898954862354e-08, + 7.790154323025817912e-08, + 8.371019889139754533e-08, + 8.951795662367303961e-08, + 9.532480707970383127e-08, + 1.011307409150707800e-07, + 1.069357487880747536e-07, + 1.127398213594907899e-07, + 1.185429492936202307e-07, + 1.243451232570098228e-07, + 1.301463339182072429e-07, + 1.359465719501078822e-07, + 1.417458280273797996e-07, + 1.475440928275134473e-07, + 1.533413570316146522e-07, + 1.591376113228642073e-07, + 1.649328463875698338e-07, + 1.707270529149223410e-07, + 1.765202215967493253e-07, + 1.823123431285691707e-07, + 1.881034082083075814e-07, + 1.938934075360553574e-07, + 1.996823318164134843e-07, + 2.054701717559190271e-07, + 2.112569180640942592e-07, + 2.170425614542379242e-07, + 2.228270926421496040e-07, + 2.286105023458798969e-07, + 2.343927812880784460e-07, + 2.401739201934188004e-07, + 2.459539097896494768e-07, + 2.517327408086436454e-07, + 2.575104039835660429e-07, + 2.632868900525118788e-07, + 2.690621897556757338e-07, + 2.748362938363998160e-07, + 2.806091930419633426e-07, + 2.863808781223075435e-07, + 2.921513398297900751e-07, + 2.979205689215268539e-07, + 3.036885561568178182e-07, + 3.094552922982067778e-07, + 3.152207681125127823e-07, + 3.209849743680186072e-07, + 3.267479018380919787e-07, + 3.325095412983633126e-07, + 3.382698835280302510e-07, + 3.440289193096137698e-07, + 3.497866394289757017e-07, + 3.555430346750706083e-07, + 3.612980958409970013e-07, + 3.670518137224595008e-07, + 3.728041791185605997e-07, + 3.785551828328461139e-07, + 3.843048156707398904e-07, + 3.900530684418828881e-07, + 3.957999319598828276e-07, + 4.015453970410460760e-07, + 4.072894545054197628e-07, + 4.130320951765516989e-07, + 4.187733098812441545e-07, + 4.245130894505989918e-07, + 4.302514247184884004e-07, + 4.359883065223440140e-07, + 4.417237257041941554e-07, + 4.474576731081119376e-07, + 4.531901395825408461e-07, + 4.589211159800548169e-07, + 4.646505931560834515e-07, + 4.703785619699588968e-07, + 4.761050132846702587e-07, + 4.818299379668824485e-07, + 4.875533268866846669e-07, + 4.932751709186437955e-07, + 4.989954609402668731e-07, + 5.047141878330514168e-07, + 5.104313424822379819e-07, + 5.161469157765672760e-07, + 5.218608986093304792e-07, + 5.275732818768296561e-07, + 5.332840564794278651e-07, + 5.389932133213027772e-07, + 5.447007433104662642e-07, + 5.504066373585165350e-07, + 5.561108863816798811e-07, + 5.618134812992884518e-07, + 5.675144130348183991e-07, + 5.732136725156505914e-07, + 5.789112506728222203e-07, + 5.846071384420706635e-07, + 5.903013267623140132e-07, + 5.959938065766791623e-07, + 6.016845688322716235e-07, + 6.073736044801880228e-07, + 6.130609044752627309e-07, + 6.187464597771209369e-07, + 6.244302613489051339e-07, + 6.301123001570331860e-07, + 6.357925671735195153e-07, + 6.414710533734256393e-07, + 6.471477497359084798e-07, + 6.528226472449825866e-07, + 6.584957368880189833e-07, + 6.641670096567725128e-07, + 6.698364565471411737e-07, + 6.755040685589299039e-07, + 6.811698366968759143e-07, + 6.868337519693951857e-07, + 6.924958053883437116e-07, + 6.981559879713159218e-07, + 7.038142907391198892e-07, + 7.094707047168050981e-07, + 7.151252209344416091e-07, + 7.207778304256079991e-07, + 7.264285242284222004e-07, + 7.320772933853056019e-07, + 7.377241289429876023e-07, + 7.433690219522705582e-07, + 7.490119634693207682e-07, + 7.546529445528752757e-07, + 7.602919562678238659e-07, + 7.659289896824213738e-07, + 7.715640358693215943e-07, + 7.771970859063501997e-07, + 7.828281308752542012e-07, + 7.884571618614531330e-07, + 7.940841699563468997e-07, + 7.997091462547868534e-07, + 8.053320818561074798e-07, + 8.109529678651462258e-07, + 8.165717953894902193e-07, + 8.221885555430060665e-07, + 8.278032394430969483e-07, + 8.334158382119630048e-07, + 8.390263429763724248e-07, + 8.446347448676734100e-07, + 8.502410350215528769e-07, + 8.558452045790607308e-07, + 8.614472446851152767e-07, + 8.670471464892612075e-07, + 8.726449011467063726e-07, + 8.782404998158032312e-07, + 8.838339336603413470e-07, + 8.894251938492998429e-07, + 8.950142715556062857e-07, + 9.006011579571582080e-07, + 9.061858442365842452e-07, + 9.117683215810073893e-07, + 9.173485811830614287e-07, + 9.229266142393954056e-07, + 9.285024119514509805e-07, + 9.340759655264666956e-07, + 9.396472661749992390e-07, + 9.452163051131755988e-07, + 9.507830735624658474e-07, + 9.563475627484467902e-07, + 9.619097639018139588e-07, + 9.674696682581393592e-07, + 9.730272670578988949e-07, + 9.785825515462148683e-07, + 9.841355129739010081e-07, + 9.896861425959416216e-07, + 9.952344316725294214e-07, + 1.000780371468817345e-06, + 1.006323953254684987e-06, + 1.011865168305757363e-06, + 1.017404007901907363e-06, + 1.022940463328283195e-06, + 1.028474525875063174e-06, + 1.034006186837466942e-06, + 1.039535437515523172e-06, + 1.045062269215091511e-06, + 1.050586673246355497e-06, + 1.056108640924851070e-06, + 1.061628163571234484e-06, + 1.067145232511033703e-06, + 1.072659839075666535e-06, + 1.078171974600951969e-06, + 1.083681630428125560e-06, + 1.089188797903610729e-06, + 1.094693468379013254e-06, + 1.100195633210903375e-06, + 1.105695283761825029e-06, + 1.111192411399047965e-06, + 1.116687007494343487e-06, + 1.122179063426245822e-06, + 1.127668570577556125e-06, + 1.133155520336371625e-06, + 1.138639904096831648e-06, + 1.144121713257648018e-06, + 1.149600939223106456e-06, + 1.155077573402834710e-06, + 1.160551607211567713e-06, + 1.166023032070144964e-06, + 1.171491839404297154e-06, + 1.176958020644406880e-06, + 1.182421567227750738e-06, + 1.187882470596028531e-06, + 1.193340722196382249e-06, + 1.198796313482136163e-06, + 1.204249235911340143e-06, + 1.209699480947757929e-06, + 1.215147040060643517e-06, + 1.220591904724751960e-06, + 1.226034066420105373e-06, + 1.231473516633235317e-06, + 1.236910246854495382e-06, + 1.242344248581500132e-06, + 1.247775513316464158e-06, + 1.253204032567170866e-06, + 1.258629797847974523e-06, + 1.264052800677376469e-06, + 1.269473032580218719e-06, + 1.274890485087472419e-06, + 1.280305149735013885e-06, + 1.285717018064381635e-06, + 1.291126081623758735e-06, + 1.296532331965307190e-06, + 1.301935760648583817e-06, + 1.307336359237893471e-06, + 1.312734119303257637e-06, + 1.318129032421409685e-06, + 1.323521090173363046e-06, + 1.328910284146632763e-06, + 1.334296605934994510e-06, + 1.339680047137271008e-06, + 1.345060599358106000e-06, + 1.350438254208911022e-06, + 1.355813003305470630e-06, + 1.361184838270145108e-06, + 1.366553750731629912e-06, + 1.371919732323744198e-06, + 1.377282774686446630e-06, + 1.382642869465582965e-06, + 1.388000008312650148e-06, + 1.393354182885800900e-06, + 1.398705384848385758e-06, + 1.404053605869693173e-06, + 1.409398837625943925e-06, + 1.414741071797871150e-06, + 1.420080300072908862e-06, + 1.425416514144984428e-06, + 1.430749705713286563e-06, + 1.436079866483281129e-06, + 1.441406988166457241e-06, + 1.446731062480104706e-06, + 1.452052081148306113e-06, + 1.457370035900475910e-06, + 1.462684918472372188e-06, + 1.467996720605829228e-06, + 1.473305434048796042e-06, + 1.478611050555105345e-06, + 1.483913561885442137e-06, + 1.489212959805920052e-06, + 1.494509236089046550e-06, + 1.499802382513495495e-06, + 1.505092390864143146e-06, + 1.510379252931806641e-06, + 1.515662960514238836e-06, + 1.520943505414689406e-06, + 1.526220879442888041e-06, + 1.531495074414808757e-06, + 1.536766082152441622e-06, + 1.542033894484775950e-06, + 1.547298503246361611e-06, + 1.552559900278286727e-06, + 1.557818077427946001e-06, + 1.563073026549056813e-06, + 1.568324739501437724e-06, + 1.573573208151961170e-06, + 1.578818424373152264e-06, + 1.584060380044141282e-06, + 1.589299067050440892e-06, + 1.594534477283967755e-06, + 1.599766602642801121e-06, + 1.604995435032158820e-06, + 1.610220966362978485e-06, + 1.615443188552881475e-06, + 1.620662093525957515e-06, + 1.625877673212509106e-06, + 1.631089919550053138e-06, + 1.636298824482112814e-06, + 1.641504379958019652e-06, + 1.646706577935041024e-06, + 1.651905410376023283e-06, + 1.657100869250380039e-06, + 1.662292946534758989e-06, + 1.667481634211697037e-06, + 1.672666924270523656e-06, + 1.677848808707181743e-06, + 1.683027279523969690e-06, + 1.688202328730528611e-06, + 1.693373948342631077e-06, + 1.698542130382012348e-06, + 1.703706866878461484e-06, + 1.708868149867496665e-06, + 1.714025971391310057e-06, + 1.719180323499720507e-06, + 1.724331198247856280e-06, + 1.729478587698249342e-06, + 1.734622483920638851e-06, + 1.739762878990795899e-06, + 1.744899764991238618e-06, + 1.750033134012180858e-06, + 1.755162978148996382e-06, + 1.760289289505451781e-06, + 1.765412060191192898e-06, + 1.770531282322689699e-06, + 1.775646948024150645e-06, + 1.780759049425223626e-06, + 1.785867578663106352e-06, + 1.790972527882313627e-06, + 1.796073889233544018e-06, + 1.801171654874376540e-06, + 1.806265816970195194e-06, + 1.811356367691704831e-06, + 1.816443299218117265e-06, + 1.821526603734655702e-06, + 1.826606273433726188e-06, + 1.831682300514681921e-06, + 1.836754677183840618e-06, + 1.841823395654268939e-06, + 1.846888448146718677e-06, + 1.851949826888251384e-06, + 1.857007524112929975e-06, + 1.862061532062774390e-06, + 1.867111842985458731e-06, + 1.872158449136387964e-06, + 1.877201342778491675e-06, + 1.882240516181084174e-06, + 1.887275961620791991e-06, + 1.892307671381340643e-06, + 1.897335637753319575e-06, + 1.902359853035128937e-06, + 1.907380309531626445e-06, + 1.912396999555016980e-06, + 1.917409915424667298e-06, + 1.922419049467122123e-06, + 1.927424394015857451e-06, + 1.932425941412233459e-06, + 1.937423684004110456e-06, + 1.942417614146801794e-06, + 1.947407724202839239e-06, + 1.952394006541981020e-06, + 1.957376453541022938e-06, + 1.962355057584673776e-06, + 1.967329811064247903e-06, + 1.972300706378566095e-06, + 1.977267735933724294e-06, + 1.982230892142913611e-06, + 1.987190167427310988e-06, + 1.992145554214737067e-06, + 1.997097044940580728e-06, + 2.002044632047577172e-06, + 2.006988307985819772e-06, + 2.011928065212553825e-06, + 2.016863896193074404e-06, + 2.021795793399400755e-06, + 2.026723749311173726e-06, + 2.031647756415474925e-06, + 2.036567807206776747e-06, + 2.041483894186798801e-06, + 2.046396009865374422e-06, + 2.051304146759106437e-06, + 2.056208297392323880e-06, + 2.061108454296817300e-06, + 2.066004610011657071e-06, + 2.070896757084106067e-06, + 2.075784888068465587e-06, + 2.080668995525926267e-06, + 2.085549072026541677e-06, + 2.090425110147021370e-06, + 2.095297102471642290e-06, + 2.100165041592925130e-06, + 2.105028920110322703e-06, + 2.109888730631063158e-06, + 2.114744465770019540e-06, + 2.119596118149445094e-06, + 2.124443680399890176e-06, + 2.129287145159100260e-06, + 2.134126505071802070e-06, + 2.138961752791725017e-06, + 2.143792880979378165e-06, + 2.148619882302954437e-06, + 2.153442749439214493e-06, + 2.158261475071327647e-06, + 2.163076051890810296e-06, + 2.167886472597371342e-06, + 2.172692729897773353e-06, + 2.177494816506555083e-06, + 2.182292725146880199e-06, + 2.187086448548139331e-06, + 2.191875979449057411e-06, + 2.196661310595256339e-06, + 2.201442434740175280e-06, + 2.206219344645937182e-06, + 2.210992033081179099e-06, + 2.215760492823029166e-06, + 2.220524716656902468e-06, + 2.225284697375408784e-06, + 2.230040427779033609e-06, + 2.234791900677009743e-06, + 2.239539108884926126e-06, + 2.244282045227811030e-06, + 2.249020702537724371e-06, + 2.253755073654869865e-06, + 2.258485151427376491e-06, + 2.263210928711320937e-06, + 2.267932398370511187e-06, + 2.272649553277378863e-06, + 2.277362386311659558e-06, + 2.282070890361108143e-06, + 2.286775058322307696e-06, + 2.291474883098569273e-06, + 2.296170357601859762e-06, + 2.300861474752610874e-06, + 2.305548227478637483e-06, + 2.310230608716018116e-06, + 2.314908611408910302e-06, + 2.319582228509303234e-06, + 2.324251452977912664e-06, + 2.328916277782906961e-06, + 2.333576695900762197e-06, + 2.338232700316081297e-06, + 2.342884284021568637e-06, + 2.347531440017850465e-06, + 2.352174161314350740e-06, + 2.356812440927987965e-06, + 2.361446271884062884e-06, + 2.366075647216057730e-06, + 2.370700559965619713e-06, + 2.375321003182393301e-06, + 2.379936969924849048e-06, + 2.384548453259049464e-06, + 2.389155446259489270e-06, + 2.393757942008889572e-06, + 2.398355933598015750e-06, + 2.402949414126513475e-06, + 2.407538376701670350e-06, + 2.412122814439238378e-06, + 2.416702720463273449e-06, + 2.421278087906130260e-06, + 2.425848909908248012e-06, + 2.430415179619022010e-06, + 2.434976890195528031e-06, + 2.439534034803398154e-06, + 2.444086606616609427e-06, + 2.448634598817274225e-06, + 2.453178004596531754e-06, + 2.457716817153233457e-06, + 2.462251029694838321e-06, + 2.466780635437207482e-06, + 2.471305627604599132e-06, + 2.475825999429485568e-06, + 2.480341744153377352e-06, + 2.484852855025832281e-06, + 2.489359325304199586e-06, + 2.493861148255546929e-06, + 2.498358317154567388e-06, + 2.502850825284444275e-06, + 2.507338665937660899e-06, + 2.511821832413754237e-06, + 2.516300318022195269e-06, + 2.520774116080183727e-06, + 2.525243219913406187e-06, + 2.529707622856715396e-06, + 2.534167318253096461e-06, + 2.538622299453467379e-06, + 2.543072559818549703e-06, + 2.547518092716803906e-06, + 2.551958891525289537e-06, + 2.556394949630467788e-06, + 2.560826260425975914e-06, + 2.565252817315483429e-06, + 2.569674613710474149e-06, + 2.574091643031264748e-06, + 2.578503898706604962e-06, + 2.582911374174708427e-06, + 2.587314062881039801e-06, + 2.591711958281143014e-06, + 2.596105053838425847e-06, + 2.600493343024988760e-06, + 2.604876819322434650e-06, + 2.609255476219874937e-06, + 2.613629307215724852e-06, + 2.617998305817553087e-06, + 2.622362465541042910e-06, + 2.626721779910618122e-06, + 2.631076242460288396e-06, + 2.635425846731378381e-06, + 2.639770586275432179e-06, + 2.644110454651944567e-06, + 2.648445445429234709e-06, + 2.652775552185195786e-06, + 2.657100768505340885e-06, + 2.661421087984603371e-06, + 2.665736504227150960e-06, + 2.670047010845376061e-06, + 2.674352601460533588e-06, + 2.678653269703528275e-06, + 2.682949009212943638e-06, + 2.687239813636821158e-06, + 2.691525676632501894e-06, + 2.695806591865607499e-06, + 2.700082553010866498e-06, + 2.704353553751938111e-06, + 2.708619587781174655e-06, + 2.712880648800476627e-06, + 2.717136730520087375e-06, + 2.721387826659389732e-06, + 2.725633930946722635e-06, + 2.729875037119390439e-06, + 2.734111138923504102e-06, + 2.738342230114709209e-06, + 2.742568304457080593e-06, + 2.746789355723891440e-06, + 2.751005377697422709e-06, + 2.755216364168780172e-06, + 2.759422308938688930e-06, + 2.763623205816319426e-06, + 2.767819048620095515e-06, + 2.772009831177486940e-06, + 2.776195547325035167e-06, + 2.780376190908172542e-06, + 2.784551755781983778e-06, + 2.788722235810065420e-06, + 2.792887624865302575e-06, + 2.797047916829708404e-06, + 2.801203105594384728e-06, + 2.805353185059417849e-06, + 2.809498149134557444e-06, + 2.813637991738141256e-06, + 2.817772706797862931e-06, + 2.821902288250552635e-06, + 2.826026730042048308e-06, + 2.830146026127925803e-06, + 2.834260170472366826e-06, + 2.838369157048969129e-06, + 2.842472979840513991e-06, + 2.846571632838997989e-06, + 2.850665110045472056e-06, + 2.854753405470745370e-06, + 2.858836513134337148e-06, + 2.862914427065193237e-06, + 2.866987141301511625e-06, + 2.871054649890761076e-06, + 2.875116946889493086e-06, + 2.879174026364293530e-06, + 2.883225882389717591e-06, + 2.887272509050964266e-06, + 2.891313900441748203e-06, + 2.895350050665106065e-06, + 2.899380953834011062e-06, + 2.903406604070338297e-06, + 2.907426995504765661e-06, + 2.911442122278432751e-06, + 2.915451978541107886e-06, + 2.919456558451914444e-06, + 2.923455856180088525e-06, + 2.927449865902965986e-06, + 2.931438581808559954e-06, + 2.935421998093539812e-06, + 2.939400108964185377e-06, + 2.943372908635977363e-06, + 2.947340391334591371e-06, + 2.951302551293814613e-06, + 2.955259382758199668e-06, + 2.959210879980979084e-06, + 2.963157037224864554e-06, + 2.967097848762740638e-06, + 2.971033308875898697e-06, + 2.974963411855634399e-06, + 2.978888152003106687e-06, + 2.982807523628425523e-06, + 2.986721521051213053e-06, + 2.990630138601317223e-06, + 2.994533370616851754e-06, + 2.998431211446708860e-06, + 3.002323655448612767e-06, + 3.006210696989830375e-06, + 3.010092330447881917e-06, + 3.013968550208810896e-06, + 3.017839350668723566e-06, + 3.021704726233686441e-06, + 3.025564671318817429e-06, + 3.029419180348985907e-06, + 3.033268247758682272e-06, + 3.037111867991995925e-06, + 3.040950035502432731e-06, + 3.044782744753706148e-06, + 3.048609990218589501e-06, + 3.052431766379683389e-06, + 3.056248067729233577e-06, + 3.060058888768966668e-06, + 3.063864224010798648e-06, + 3.067664067975786684e-06, + 3.071458415194855453e-06, + 3.075247260208587077e-06, + 3.079030597567288463e-06, + 3.082808421830775312e-06, + 3.086580727569092517e-06, + 3.090347509361476973e-06, + 3.094108761797075860e-06, + 3.097864479474764954e-06, + 3.101614657002973294e-06, + 3.105359289000418828e-06, + 3.109098370095021245e-06, + 3.112831894924653720e-06, + 3.116559858136965033e-06, + 3.120282254389371950e-06, + 3.123999078348880072e-06, + 3.127710324692858449e-06, + 3.131415988107906673e-06, + 3.135116063290608736e-06, + 3.138810544947386494e-06, + 3.142499427794466633e-06, + 3.146182706557733710e-06, + 3.149860375973405234e-06, + 3.153532430787068172e-06, + 3.157198865754290503e-06, + 3.160859675640516185e-06, + 3.164514855220871611e-06, + 3.168164399280884315e-06, + 3.171808302615430958e-06, + 3.175446560029452644e-06, + 3.179079166337774506e-06, + 3.182706116365137893e-06, + 3.186327404946014443e-06, + 3.189943026925298534e-06, + 3.193552977157282377e-06, + 3.197157250506389965e-06, + 3.200755841846945839e-06, + 3.204348746063235642e-06, + 3.207935958049337148e-06, + 3.211517472709925354e-06, + 3.215093284958490334e-06, + 3.218663389719667418e-06, + 3.222227781927374994e-06, + 3.225786456525544653e-06, + 3.229339408468580698e-06, + 3.232886632720567326e-06, + 3.236428124255080585e-06, + 3.239963878056711762e-06, + 3.243493889119423295e-06, + 3.247018152447173880e-06, + 3.250536663054634638e-06, + 3.254049415965360373e-06, + 3.257556406214103241e-06, + 3.261057628845025510e-06, + 3.264553078912311541e-06, + 3.268042751480748008e-06, + 3.271526641624830700e-06, + 3.275004744428683203e-06, + 3.278477054987450701e-06, + 3.281943568405757519e-06, + 3.285404279798322500e-06, + 3.288859184290600628e-06, + 3.292308277017203737e-06, + 3.295751553123344703e-06, + 3.299189007764703610e-06, + 3.302620636106574791e-06, + 3.306046433324419937e-06, + 3.309466394604478389e-06, + 3.312880515142018433e-06, + 3.316288790143606929e-06, + 3.319691214825327998e-06, + 3.323087784413419571e-06, + 3.326478494144953551e-06, + 3.329863339266234502e-06, + 3.333242315034205720e-06, + 3.336615416716391638e-06, + 3.339982639589980912e-06, + 3.343343978942561221e-06, + 3.346699430071924447e-06, + 3.350048988285934546e-06, + 3.353392648903168319e-06, + 3.356730407251948530e-06, + 3.360062258671012636e-06, + 3.363388198509335759e-06, + 3.366708222126153552e-06, + 3.370022324890805926e-06, + 3.373330502183363429e-06, + 3.376632749393712873e-06, + 3.379929061922160422e-06, + 3.383219435179319361e-06, + 3.386503864586075792e-06, + 3.389782345573476397e-06, + 3.393054873583322640e-06, + 3.396321444067258504e-06, + 3.399582052487417629e-06, + 3.402836694316245860e-06, + 3.406085365036339034e-06, + 3.409328060141149835e-06, + 3.412564775133959918e-06, + 3.415795505528557109e-06, + 3.419020246849096496e-06, + 3.422238994630073321e-06, + 3.425451744416224722e-06, + 3.428658491763082854e-06, + 3.431859232236106246e-06, + 3.435053961411298566e-06, + 3.438242674875065047e-06, + 3.441425368224157851e-06, + 3.444602037065622711e-06, + 3.447772677017344414e-06, + 3.450937283707156574e-06, + 3.454095852773474364e-06, + 3.457248379865145437e-06, + 3.460394860641276289e-06, + 3.463535290771862867e-06, + 3.466669665937032906e-06, + 3.469797981826941315e-06, + 3.472920234143048778e-06, + 3.476036418596705508e-06, + 3.479146530909714955e-06, + 3.482250566814794587e-06, + 3.485348522054696250e-06, + 3.488440392382775791e-06, + 3.491526173562893964e-06, + 3.494605861369264805e-06, + 3.497679451587012557e-06, + 3.500746940011476682e-06, + 3.503808322448086498e-06, + 3.506863594713633422e-06, + 3.509912752634841604e-06, + 3.512955792048983294e-06, + 3.515992708804279068e-06, + 3.519023498759185894e-06, + 3.522048157782269656e-06, + 3.525066681753533722e-06, + 3.528079066562903181e-06, + 3.531085308110921105e-06, + 3.534085402309205519e-06, + 3.537079345078968794e-06, + 3.540067132352997580e-06, + 3.543048760074073938e-06, + 3.546024224195547093e-06, + 3.548993520681818775e-06, + 3.551956645507574544e-06, + 3.554913594657662236e-06, + 3.557864364128387926e-06, + 3.560808949926114934e-06, + 3.563747348067802540e-06, + 3.566679554581590433e-06, + 3.569605565505270670e-06, + 3.572525376888241772e-06, + 3.575438984789966286e-06, + 3.578346385280673816e-06, + 3.581247574441271665e-06, + 3.584142548363277068e-06, + 3.587031303148730801e-06, + 3.589913834910794756e-06, + 3.592790139772793104e-06, + 3.595660213868795053e-06, + 3.598524053344042175e-06, + 3.601381654353652445e-06, + 3.604233013063831925e-06, + 3.607078125651745589e-06, + 3.609916988304837576e-06, + 3.612749597221410993e-06, + 3.615575948610430545e-06, + 3.618396038691459864e-06, + 3.621209863695169725e-06, + 3.624017419862535903e-06, + 3.626818703445406691e-06, + 3.629613710706315277e-06, + 3.632402437918600449e-06, + 3.635184881366119451e-06, + 3.637961037343932384e-06, + 3.640730902157394610e-06, + 3.643494472122771701e-06, + 3.646251743567074688e-06, + 3.649002712828067683e-06, + 3.651747376254162854e-06, + 3.654485730204921859e-06, + 3.657217771050264724e-06, + 3.659943495171063188e-06, + 3.662662898958912851e-06, + 3.665375978816115382e-06, + 3.668082731156118563e-06, + 3.670783152402789522e-06, + 3.673477238990923810e-06, + 3.676164987366105212e-06, + 3.678846393984735817e-06, + 3.681521455313906424e-06, + 3.684190167831894173e-06, + 3.686852528027418848e-06, + 3.689508532400139241e-06, + 3.692158177460578612e-06, + 3.694801459730048032e-06, + 3.697438375740598528e-06, + 3.700068922035496688e-06, + 3.702693095168444547e-06, + 3.705310891704189027e-06, + 3.707922308218259354e-06, + 3.710527341296938262e-06, + 3.713125987537780800e-06, + 3.715718243548921880e-06, + 3.718304105948995390e-06, + 3.720883571368261167e-06, + 3.723456636447378071e-06, + 3.726023297837856302e-06, + 3.728583552202482611e-06, + 3.731137396214572790e-06, + 3.733684826558417213e-06, + 3.736225839929279144e-06, + 3.738760433033124108e-06, + 3.741288602587235260e-06, + 3.743810345319547618e-06, + 3.746325657968551078e-06, + 3.748834537284388592e-06, + 3.751336980027618651e-06, + 3.753832982969754848e-06, + 3.756322542893574620e-06, + 3.758805656592558936e-06, + 3.761282320870767360e-06, + 3.763752532543922673e-06, + 3.766216288438189883e-06, + 3.768673585390731446e-06, + 3.771124420250107496e-06, + 3.773568789874987505e-06, + 3.776006691135850276e-06, + 3.778438120913674436e-06, + 3.780863076100374652e-06, + 3.783281553599214138e-06, + 3.785693550324195640e-06, + 3.788099063199928874e-06, + 3.790498089162736752e-06, + 3.792890625159420404e-06, + 3.795276668147805097e-06, + 3.797656215097142571e-06, + 3.800029262986905712e-06, + 3.802395808808322108e-06, + 3.804755849563229279e-06, + 3.807109382264521068e-06, + 3.809456403936153567e-06, + 3.811796911613046863e-06, + 3.814130902341053275e-06, + 3.816458373177386795e-06, + 3.818779321189903541e-06, + 3.821093743457566772e-06, + 3.823401637070731917e-06, + 3.825702999130172908e-06, + 3.827997826748013076e-06, + 3.830286117047621805e-06, + 3.832567867163116481e-06, + 3.834843074239720787e-06, + 3.837111735433768087e-06, + 3.839373847912483746e-06, + 3.841629408854494189e-06, + 3.843878415449168761e-06, + 3.846120864896915342e-06, + 3.848356754409661458e-06, + 3.850586081209726036e-06, + 3.852808842530834995e-06, + 3.855025035618038238e-06, + 3.857234657727101482e-06, + 3.859437706124967044e-06, + 3.861634178089689465e-06, + 3.863824070910415184e-06, + 3.866007381887222446e-06, + 3.868184108331644771e-06, + 3.870354247566012805e-06, + 3.872517796923789752e-06, + 3.874674753749594237e-06, + 3.876825115399023280e-06, + 3.878968879239106305e-06, + 3.881106042647651230e-06, + 3.883236603013705253e-06, + 3.885360557737382905e-06, + 3.887477904229993950e-06, + 3.889588639913788431e-06, + 3.891692762222490299e-06, + 3.893790268600639269e-06, + 3.895881156503978761e-06, + 3.897965423399414393e-06, + 3.900043066764849661e-06, + 3.902114084089688227e-06, + 3.904178472874111399e-06, + 3.906236230629560097e-06, + 3.908287354878623884e-06, + 3.910331843155026575e-06, + 3.912369693003559316e-06, + 3.914400901980460057e-06, + 3.916425467652923964e-06, + 3.918443387598987381e-06, + 3.920454659408457018e-06, + 3.922459280681898602e-06, + 3.924457249031048526e-06, + 3.926448562079106083e-06, + 3.928433217460126987e-06, + 3.930411212819454511e-06, + 3.932382545813605989e-06, + 3.934347214110168626e-06, + 3.936305215388202692e-06, + 3.938256547337768870e-06, + 3.940201207659788502e-06, + 3.942139194066970239e-06, + 3.944070504282813085e-06, + 3.945995136042034998e-06, + 3.947913087090814287e-06, + 3.949824355186216180e-06, + 3.951728938096630731e-06, + 3.953626833601619517e-06, + 3.955518039491978308e-06, + 3.957402553569569362e-06, + 3.959280373647855053e-06, + 3.961151497550863643e-06, + 3.963015923114482704e-06, + 3.964873648185417264e-06, + 3.966724670621604009e-06, + 3.968568988292459461e-06, + 3.970406599078456466e-06, + 3.972237500870962405e-06, + 3.974061691573173475e-06, + 3.975879169099120272e-06, + 3.977689931374057425e-06, + 3.979493976334813421e-06, + 3.981291301928836000e-06, + 3.983081906115427126e-06, + 3.984865786864754505e-06, + 3.986642942158236978e-06, + 3.988413369988877412e-06, + 3.990177068360371615e-06, + 3.991934035287933350e-06, + 3.993684268798209633e-06, + 3.995427766928783518e-06, + 3.997164527728520541e-06, + 3.998894549257877884e-06, + 4.000617829588024306e-06, + 4.002334366801655839e-06, + 4.004044158992872117e-06, + 4.005747204266781664e-06, + 4.007443500739838162e-06, + 4.009133046539734574e-06, + 4.010815839805354014e-06, + 4.012491878687097551e-06, + 4.014161161346339566e-06, + 4.015823685955753011e-06, + 4.017479450699607567e-06, + 4.019128453772911599e-06, + 4.020770693382204980e-06, + 4.022406167745485393e-06, + 4.024034875091721298e-06, + 4.025656813661288988e-06, + 4.027271981705797267e-06, + 4.028880377488073884e-06, + 4.030481999282449299e-06, + 4.032076845374292505e-06, + 4.033664914060332900e-06, + 4.035246203648569656e-06, + 4.036820712458312376e-06, + 4.038388438820032016e-06, + 4.039949381075751367e-06, + 4.041503537578530059e-06, + 4.043050906692783047e-06, + 4.044591486794224704e-06, + 4.046125276269839178e-06, + 4.047652273517862601e-06, + 4.049172476948010096e-06, + 4.050685884981090379e-06, + 4.052192496049240380e-06, + 4.053692308595929486e-06, + 4.055185321075814695e-06, + 4.056671531955104839e-06, + 4.058150939711066766e-06, + 4.059623542832334506e-06, + 4.061089339818839815e-06, + 4.062548329181830808e-06, + 4.064000509443763541e-06, + 4.065445879138613717e-06, + 4.066884436811465878e-06, + 4.068316181018725159e-06, + 4.069741110328194372e-06, + 4.071159223318888504e-06, + 4.072570518581097396e-06, + 4.073974994716635621e-06, + 4.075372650338396943e-06, + 4.076763484070662635e-06, + 4.078147494549012545e-06, + 4.079524680420272576e-06, + 4.080895040342803526e-06, + 4.082258572986123310e-06, + 4.083615277030845977e-06, + 4.084965151169318673e-06, + 4.086308194104915222e-06, + 4.087644404552355454e-06, + 4.088973781237842422e-06, + 4.090296322898721900e-06, + 4.091612028283689056e-06, + 4.092920896152792686e-06, + 4.094222925277348822e-06, + 4.095518114439967828e-06, + 4.096806462434830544e-06, + 4.098087968066940344e-06, + 4.099362630153142974e-06, + 4.100630447521295608e-06, + 4.101891419010573470e-06, + 4.103145543471754448e-06, + 4.104392819766524514e-06, + 4.105633246768106232e-06, + 4.106866823361142712e-06, + 4.108093548441431638e-06, + 4.109313420916096374e-06, + 4.110526439703805342e-06, + 4.111732603734133361e-06, + 4.112931911948393430e-06, + 4.114124363298997225e-06, + 4.115309956749661767e-06, + 4.116488691275669467e-06, + 4.117660565863281129e-06, + 4.118825579510235701e-06, + 4.119983731225737568e-06, + 4.121135020030120283e-06, + 4.122279444955055780e-06, + 4.123417005043759358e-06, + 4.124547699350406925e-06, + 4.125671526940698268e-06, + 4.126788486891794381e-06, + 4.127898578291948998e-06, + 4.129001800240829625e-06, + 4.130098151849424360e-06, + 4.131187632239974138e-06, + 4.132270240546240385e-06, + 4.133345975913117083e-06, + 4.134414837496828973e-06, + 4.135476824465151786e-06, + 4.136531935996830328e-06, + 4.137580171282123971e-06, + 4.138621529522718562e-06, + 4.139656009931436737e-06, + 4.140683611732495419e-06, + 4.141704334161454149e-06, + 4.142718176465110902e-06, + 4.143725137901736714e-06, + 4.144725217740797855e-06, + 4.145718415263109989e-06, + 4.146704729760825471e-06, + 4.147684160537394379e-06, + 4.148656706907545883e-06, + 4.149622368197510167e-06, + 4.150581143744642344e-06, + 4.151533032897686734e-06, + 4.152478035016704862e-06, + 4.153416149473078851e-06, + 4.154347375649432642e-06, + 4.155271712939880180e-06, + 4.156189160749725563e-06, + 4.157099718495609576e-06, + 4.158003385605464802e-06, + 4.158900161518535100e-06, + 4.159790045685496735e-06, + 4.160673037568216970e-06, + 4.161549136639898909e-06, + 4.162418342385054395e-06, + 4.163280654299551440e-06, + 4.164136071890472772e-06, + 4.164984594676381807e-06, + 4.165826222186999074e-06, + 4.166660953963397042e-06, + 4.167488789557961148e-06, + 4.168309728534381334e-06, + 4.169123770467623243e-06, + 4.169930914944082381e-06, + 4.170731161561324924e-06, + 4.171524509928242726e-06, + 4.172310959665083813e-06, + 4.173090510403305842e-06, + 4.173863161785813276e-06, + 4.174628913466751551e-06, + 4.175387765111396963e-06, + 4.176139716396595431e-06, + 4.176884767010331358e-06, + 4.177622916651871625e-06, + 4.178354165031918058e-06, + 4.179078511872316896e-06, + 4.179795956906282407e-06, + 4.180506499878306254e-06, + 4.181210140544121077e-06, + 4.181906878670901235e-06, + 4.182596714036977359e-06, + 4.183279646431904960e-06, + 4.183955675656726163e-06, + 4.184624801523631742e-06, + 4.185287023856092406e-06, + 4.185942342489020588e-06, + 4.186590757268366404e-06, + 4.187232268051480190e-06, + 4.187866874707100637e-06, + 4.188494577115069346e-06, + 4.189115375166548513e-06, + 4.189729268764119183e-06, + 4.190336257821389926e-06, + 4.190936342263462700e-06, + 4.191529522026602512e-06, + 4.192115797058313646e-06, + 4.192695167317533641e-06, + 4.193267632774264823e-06, + 4.193833193409834353e-06, + 4.194391849216963675e-06, + 4.194943600199500860e-06, + 4.195488446372560365e-06, + 4.196026387762639074e-06, + 4.196557424407282569e-06, + 4.197081556355514577e-06, + 4.197598783667471048e-06, + 4.198109106414600905e-06, + 4.198612524679584729e-06, + 4.199109038556352544e-06, + 4.199598648150082973e-06, + 4.200081353577243892e-06, + 4.200557154965499261e-06, + 4.201026052453737071e-06, + 4.201488046192204875e-06, + 4.201943136342251436e-06, + 4.202391323076476660e-06, + 4.202832606578862030e-06, + 4.203266987044484317e-06, + 4.203694464679680748e-06, + 4.204115039702043074e-06, + 4.204528712340365059e-06, + 4.204935482834730569e-06, + 4.205335351436384822e-06, + 4.205728318407819941e-06, + 4.206114384022743612e-06, + 4.206493548566095176e-06, + 4.206865812334007516e-06, + 4.207231175633895147e-06, + 4.207589638784287350e-06, + 4.207941202115025531e-06, + 4.208285865967102284e-06, + 4.208623630692710520e-06, + 4.208954496655274809e-06, + 4.209278464229449681e-06, + 4.209595533801049326e-06, + 4.209905705767080627e-06, + 4.210208980535799913e-06, + 4.210505358526594372e-06, + 4.210794840170106565e-06, + 4.211077425908141255e-06, + 4.211353116193686579e-06, + 4.211621911490925063e-06, + 4.211883812275210749e-06, + 4.212138819033091222e-06, + 4.212386932262339792e-06, + 4.212628152471828443e-06, + 4.212862480181644722e-06, + 4.213089915923060399e-06, + 4.213310460238445917e-06, + 4.213524113681484690e-06, + 4.213730876816882572e-06, + 4.213930750220596558e-06, + 4.214123734479684007e-06, + 4.214309830192413607e-06, + 4.214489037968155259e-06, + 4.214661358427523229e-06, + 4.214826792202203347e-06, + 4.214985339935001295e-06, + 4.215137002280000149e-06, + 4.215281779902310508e-06, + 4.215419673478201783e-06, + 4.215550683695148784e-06, + 4.215674811251695348e-06, + 4.215792056857530571e-06, + 4.215902421233505748e-06, + 4.216005905111527649e-06, + 4.216102509234752491e-06, + 4.216192234357358079e-06, + 4.216275081244643765e-06, + 4.216351050673093120e-06, + 4.216420143430240111e-06, + 4.216482360314753796e-06, + 4.216537702136443414e-06, + 4.216586169716160970e-06, + 4.216627763885923212e-06, + 4.216662485488820995e-06, + 4.216690335379040460e-06, + 4.216711314421829997e-06, + 4.216725423493645091e-06, + 4.216732663481862868e-06, + 4.216733035285107357e-06, + 4.216726539812982678e-06, + 4.216713177986204326e-06, + 4.216692950736601717e-06, + 4.216665859007002142e-06, + 4.216631903751345118e-06, + 4.216591085934684928e-06, + 4.216543406533049166e-06, + 4.216488866533590359e-06, + 4.216427466934541916e-06, + 4.216359208745099550e-06, + 4.216284092985610158e-06, + 4.216202120687419364e-06, + 4.216113292892926571e-06, + 4.216017610655578184e-06, + 4.215915075039875237e-06, + 4.215805687121321721e-06, + 4.215689447986505900e-06, + 4.215566358732989350e-06, + 4.215436420469414532e-06, + 4.215299634315416702e-06, + 4.215156001401656094e-06, + 4.215005522869798444e-06, + 4.214848199872567501e-06, + 4.214684033573678114e-06, + 4.214513025147809128e-06, + 4.214335175780713494e-06, + 4.214150486669092913e-06, + 4.213958959020675761e-06, + 4.213760594054151867e-06, + 4.213555392999255520e-06, + 4.213343357096675691e-06, + 4.213124487598068729e-06, + 4.212898785766091403e-06, + 4.212666252874391581e-06, + 4.212426890207564182e-06, + 4.212180699061176594e-06, + 4.211927680741783067e-06, + 4.211667836566877281e-06, + 4.211401167864944018e-06, + 4.211127675975366829e-06, + 4.210847362248537310e-06, + 4.210560228045763614e-06, + 4.210266274739317889e-06, + 4.209965503712380375e-06, + 4.209657916359123257e-06, + 4.209343514084598858e-06, + 4.209022298304821804e-06, + 4.208694270446709725e-06, + 4.208359431948112062e-06, + 4.208017784257816836e-06, + 4.207669328835471035e-06, + 4.207314067151706812e-06, + 4.206952000687999193e-06, + 4.206583130936760091e-06, + 4.206207459401295957e-06, + 4.205824987595790841e-06, + 4.205435717045343656e-06, + 4.205039649285930917e-06, + 4.204636785864389790e-06, + 4.204227128338493489e-06, + 4.203810678276846232e-06, + 4.203387437258912900e-06, + 4.202957406875052059e-06, + 4.202520588726500724e-06, + 4.202076984425311670e-06, + 4.201626595594414424e-06, + 4.201169423867604251e-06, + 4.200705470889495567e-06, + 4.200234738315571071e-06, + 4.199757227812143621e-06, + 4.199272941056325748e-06, + 4.198781879736137225e-06, + 4.198284045550333121e-06, + 4.197779440208552878e-06, + 4.197268065431265255e-06, + 4.196749922949694635e-06, + 4.196225014505902340e-06, + 4.195693341852780702e-06, + 4.195154906753965821e-06, + 4.194609710983954451e-06, + 4.194057756327965091e-06, + 4.193499044582087907e-06, + 4.192933577553119560e-06, + 4.192361357058684335e-06, + 4.191782384927142661e-06, + 4.191196662997685973e-06, + 4.190604193120193572e-06, + 4.190004977155341885e-06, + 4.189399016974613788e-06, + 4.188786314460130041e-06, + 4.188166871504881380e-06, + 4.187540690012554024e-06, + 4.186907771897518668e-06, + 4.186268119084943981e-06, + 4.185621733510745787e-06, + 4.184968617121446457e-06, + 4.184308771874490004e-06, + 4.183642199737836354e-06, + 4.182968902690263740e-06, + 4.182288882721261126e-06, + 4.181602141830932492e-06, + 4.180908682030178948e-06, + 4.180208505340563206e-06, + 4.179501613794308738e-06, + 4.178788009434334497e-06, + 4.178067694314276947e-06, + 4.177340670498343521e-06, + 4.176606940061545559e-06, + 4.175866505089491629e-06, + 4.175119367678393459e-06, + 4.174365529935211622e-06, + 4.173604993977520018e-06, + 4.172837761933527889e-06, + 4.172063835942123870e-06, + 4.171283218152746391e-06, + 4.170495910725544615e-06, + 4.169701915831244604e-06, + 4.168901235651228941e-06, + 4.168093872377501157e-06, + 4.167279828212636599e-06, + 4.166459105369820550e-06, + 4.165631706072844840e-06, + 4.164797632556123939e-06, + 4.163956887064622111e-06, + 4.163109471853925414e-06, + 4.162255389190154455e-06, + 4.161394641350047399e-06, + 4.160527230620901524e-06, + 4.159653159300555433e-06, + 4.158772429697433945e-06, + 4.157885044130533699e-06, + 4.156991004929319814e-06, + 4.156090314433867344e-06, + 4.155182974994795208e-06, + 4.154268988973242475e-06, + 4.153348358740842105e-06, + 4.152421086679826828e-06, + 4.151487175182849574e-06, + 4.150546626653138479e-06, + 4.149599443504415570e-06, + 4.148645628160913706e-06, + 4.147685183057377425e-06, + 4.146718110638955370e-06, + 4.145744413361374780e-06, + 4.144764093690819514e-06, + 4.143777154103920737e-06, + 4.142783597087806044e-06, + 4.141783425140107935e-06, + 4.140776640768785935e-06, + 4.139763246492374775e-06, + 4.138743244839812444e-06, + 4.137716638350482543e-06, + 4.136683429574212588e-06, + 4.135643621071282481e-06, + 4.134597215412247482e-06, + 4.133544215178379512e-06, + 4.132484622961051359e-06, + 4.131418441362238969e-06, + 4.130345672994295290e-06, + 4.129266320479854555e-06, + 4.128180386452026255e-06, + 4.127087873554432403e-06, + 4.125988784440818755e-06, + 4.124883121775499493e-06, + 4.123770888233099734e-06, + 4.122652086498514019e-06, + 4.121526719267216334e-06, + 4.120394789244799318e-06, + 4.119256299147305458e-06, + 4.118111251701149157e-06, + 4.116959649643063375e-06, + 4.115801495719961560e-06, + 4.114636792689373024e-06, + 4.113465543318840704e-06, + 4.112287750386422601e-06, + 4.111103416680425818e-06, + 4.109912544999309146e-06, + 4.108715138152102348e-06, + 4.107511198957980099e-06, + 4.106300730246296718e-06, + 4.105083734856820792e-06, + 4.103860215639594573e-06, + 4.102630175454751016e-06, + 4.101393617172957622e-06, + 4.100150543674869261e-06, + 4.098900957851553377e-06, + 4.097644862604282468e-06, + 4.096382260844409571e-06, + 4.095113155493773989e-06, + 4.093837549484314201e-06, + 4.092555445758072943e-06, + 4.091266847267455548e-06, + 4.089971756975012266e-06, + 4.088670177853485694e-06, + 4.087362112885870068e-06, + 4.086047565065195271e-06, + 4.084726537394796188e-06, + 4.083399032888146688e-06, + 4.082065054568876568e-06, + 4.080724605470792722e-06, + 4.079377688637874912e-06, + 4.078024307124122452e-06, + 4.076664463993807472e-06, + 4.075298162321291958e-06, + 4.073925405191076881e-06, + 4.072546195697740363e-06, + 4.071160536946095224e-06, + 4.069768432050847629e-06, + 4.068369884136984183e-06, + 4.066964896339526290e-06, + 4.065553471803591986e-06, + 4.064135613684428128e-06, + 4.062711325147207103e-06, + 4.061280609367294496e-06, + 4.059843469530124570e-06, + 4.058399908831140129e-06, + 4.056949930475847578e-06, + 4.055493537679843175e-06, + 4.054030733668603820e-06, + 4.052561521677808925e-06, + 4.051085904953075290e-06, + 4.049603886750076540e-06, + 4.048115470334464346e-06, + 4.046620658981957367e-06, + 4.045119455978092220e-06, + 4.043611864618598717e-06, + 4.042097888209100015e-06, + 4.040577530065199012e-06, + 4.039050793512520702e-06, + 4.037517681886507188e-06, + 4.035978198532716690e-06, + 4.034432346806574513e-06, + 4.032880130073473001e-06, + 4.031321551708746968e-06, + 4.029756615097699113e-06, + 4.028185323635359462e-06, + 4.026607680726908036e-06, + 4.025023689787328415e-06, + 4.023433354241501759e-06, + 4.021836677524245774e-06, + 4.020233663080274047e-06, + 4.018624314363970746e-06, + 4.017008634839992003e-06, + 4.015386627982488344e-06, + 4.013758297275647635e-06, + 4.012123646213557018e-06, + 4.010482678299936937e-06, + 4.008835397048484194e-06, + 4.007181805982902435e-06, + 4.005521908636357513e-06, + 4.003855708552059397e-06, + 4.002183209283076672e-06, + 4.000504414391981635e-06, + 3.998819327451604996e-06, + 3.997127952044116852e-06, + 3.995430291761728028e-06, + 3.993726350206407169e-06, + 3.992016130989724037e-06, + 3.990299637733117177e-06, + 3.988576874068003181e-06, + 3.986847843635104992e-06, + 3.985112550085171036e-06, + 3.983370997078683839e-06, + 3.981623188285594911e-06, + 3.979869127385954088e-06, + 3.978108818069301362e-06, + 3.976342264034804104e-06, + 3.974569468991462888e-06, + 3.972790436658002227e-06, + 3.971005170762545311e-06, + 3.969213675043378034e-06, + 3.967415953247936784e-06, + 3.965612009133599576e-06, + 3.963801846467460739e-06, + 3.961985469025896390e-06, + 3.960162880595366572e-06, + 3.958334084971756266e-06, + 3.956499085960422821e-06, + 3.954657887376553402e-06, + 3.952810493044854132e-06, + 3.950956906799666133e-06, + 3.949097132484956211e-06, + 3.947231173954060201e-06, + 3.945359035070131899e-06, + 3.943480719705798316e-06, + 3.941596231743254547e-06, + 3.939705575074241750e-06, + 3.937808753600126765e-06, + 3.935905771231599722e-06, + 3.933996631889094172e-06, + 3.932081339502479614e-06, + 3.930159898011164830e-06, + 3.928232311364038597e-06, + 3.926298583519576410e-06, + 3.924358718445521150e-06, + 3.922412720119337945e-06, + 3.920460592527870269e-06, + 3.918502339667433121e-06, + 3.916537965543889252e-06, + 3.914567474172312900e-06, + 3.912590869577459888e-06, + 3.910608155793438976e-06, + 3.908619336863799107e-06, + 3.906624416841500607e-06, + 3.904623399788996501e-06, + 3.902616289777925038e-06, + 3.900603090889534903e-06, + 3.898583807214396380e-06, + 3.896558442852453017e-06, + 3.894527001913030102e-06, + 3.892489488514911738e-06, + 3.890445906785981702e-06, + 3.888396260863712187e-06, + 3.886340554894851242e-06, + 3.884278793035471053e-06, + 3.882210979451043335e-06, + 3.880137118316123379e-06, + 3.878057213814750709e-06, + 3.875971270140482108e-06, + 3.873879291495713995e-06, + 3.871781282092415110e-06, + 3.869677246151868165e-06, + 3.867567187904362376e-06, + 3.865451111589685585e-06, + 3.863329021456799847e-06, + 3.861200921763931218e-06, + 3.859066816778618033e-06, + 3.856926710777367013e-06, + 3.854780608046058992e-06, + 3.852628512880070889e-06, + 3.850470429583468490e-06, + 3.848306362469819595e-06, + 3.846136315861942449e-06, + 3.843960294091516112e-06, + 3.841778301499598838e-06, + 3.839590342436647558e-06, + 3.837396421261767411e-06, + 3.835196542343567244e-06, + 3.832990710059757275e-06, + 3.830778928796862793e-06, + 3.828561202951128788e-06, + 3.826337536927294300e-06, + 3.824107935139565654e-06, + 3.821872402011229369e-06, + 3.819630941974418375e-06, + 3.817383559470488097e-06, + 3.815130258950135042e-06, + 3.812871044872618793e-06, + 3.810605921706591682e-06, + 3.808334893929729486e-06, + 3.806057966028404042e-06, + 3.803775142498633200e-06, + 3.801486427844847117e-06, + 3.799191826580812372e-06, + 3.796891343229237247e-06, + 3.794584982321903862e-06, + 3.792272748399212477e-06, + 3.789954646011177597e-06, + 3.787630679716144298e-06, + 3.785300854081784335e-06, + 3.782965173684708201e-06, + 3.780623643110110221e-06, + 3.778276266952693514e-06, + 3.775923049815753498e-06, + 3.773563996311373136e-06, + 3.771199111060768524e-06, + 3.768828398694012758e-06, + 3.766451863850026192e-06, + 3.764069511176713660e-06, + 3.761681345330597707e-06, + 3.759287370977313686e-06, + 3.756887592791274747e-06, + 3.754482015455723939e-06, + 3.752070643662747334e-06, + 3.749653482113371013e-06, + 3.747230535517131197e-06, + 3.744801808592662511e-06, + 3.742367306067322749e-06, + 3.739927032677252590e-06, + 3.737480993167367975e-06, + 3.735029192291463443e-06, + 3.732571634811811063e-06, + 3.730108325499731333e-06, + 3.727639269135166276e-06, + 3.725164470506869600e-06, + 3.722683934412333425e-06, + 3.720197665657545192e-06, + 3.717705669057448019e-06, + 3.715207949435631961e-06, + 3.712704511624354336e-06, + 3.710195360464554551e-06, + 3.707680500805991744e-06, + 3.705159937506724705e-06, + 3.702633675433814064e-06, + 3.700101719462857277e-06, + 3.697564074478099157e-06, + 3.695020745372396300e-06, + 3.692471737047348378e-06, + 3.689917054412831421e-06, + 3.687356702387693233e-06, + 3.684790685899183336e-06, + 3.682219009883214706e-06, + 3.679641679284333703e-06, + 3.677058699055360927e-06, + 3.674470074157866405e-06, + 3.671875809562286059e-06, + 3.669275910246998862e-06, + 3.666670381199275091e-06, + 3.664059227414951492e-06, + 3.661442453898026395e-06, + 3.658820065661344545e-06, + 3.656192067726110899e-06, + 3.653558465122031664e-06, + 3.650919262887373580e-06, + 3.648274466068584461e-06, + 3.645624079720733641e-06, + 3.642968108907685623e-06, + 3.640306558701099307e-06, + 3.637639434181472804e-06, + 3.634966740437722040e-06, + 3.632288482566859305e-06, + 3.629604665674498931e-06, + 3.626915294874989855e-06, + 3.624220375290386897e-06, + 3.621519912051547663e-06, + 3.618813910297719626e-06, + 3.616102375176018344e-06, + 3.613385311842695473e-06, + 3.610662725461584462e-06, + 3.607934621205241928e-06, + 3.605201004254556329e-06, + 3.602461879798390935e-06, + 3.599717253034106030e-06, + 3.596967129167696552e-06, + 3.594211513412762098e-06, + 3.591450410991597484e-06, + 3.588683827134784048e-06, + 3.585911767080666611e-06, + 3.583134236076624021e-06, + 3.580351239377480971e-06, + 3.577562782246713323e-06, + 3.574768869955921257e-06, + 3.571969507784858493e-06, + 3.569164701021503862e-06, + 3.566354454962104933e-06, + 3.563538774910745599e-06, + 3.560717666180006765e-06, + 3.557891134090617367e-06, + 3.555059183970987662e-06, + 3.552221821158352719e-06, + 3.549379050997686100e-06, + 3.546530878841906958e-06, + 3.543677310052325581e-06, + 3.540818349998236810e-06, + 3.537954004057018723e-06, + 3.535084277614245289e-06, + 3.532209176063186617e-06, + 3.529328704805513691e-06, + 3.526442869250958706e-06, + 3.523551674816789061e-06, + 3.520655126929006761e-06, + 3.517753231021278611e-06, + 3.514845992535019650e-06, + 3.511933416920017838e-06, + 3.509015509633869932e-06, + 3.506092276142216112e-06, + 3.503163721918609966e-06, + 3.500229852444669258e-06, + 3.497290673209634623e-06, + 3.494346189711003578e-06, + 3.491396407454062102e-06, + 3.488441331952048548e-06, + 3.485480968726187092e-06, + 3.482515323305254058e-06, + 3.479544401226258082e-06, + 3.476568208033949682e-06, + 3.473586749280963135e-06, + 3.470600030527752525e-06, + 3.467608057342755646e-06, + 3.464610835301846395e-06, + 3.461608369989146651e-06, + 3.458600666996387614e-06, + 3.455587731923155020e-06, + 3.452569570376919637e-06, + 3.449546187972579860e-06, + 3.446517590333151631e-06, + 3.443483783089306793e-06, + 3.440444771879436203e-06, + 3.437400562349713258e-06, + 3.434351160154146832e-06, + 3.431296570954051033e-06, + 3.428236800418754597e-06, + 3.425171854225620368e-06, + 3.422101738058960669e-06, + 3.419026457611248141e-06, + 3.415946018582665541e-06, + 3.412860426680639028e-06, + 3.409769687620610236e-06, + 3.406673807125554731e-06, + 3.403572790926057401e-06, + 3.400466644760457720e-06, + 3.397355374374293249e-06, + 3.394238985520994622e-06, + 3.391117483961901649e-06, + 3.387990875465211713e-06, + 3.384859165807153344e-06, + 3.381722360771549567e-06, + 3.378580466149341026e-06, + 3.375433487739408875e-06, + 3.372281431348009384e-06, + 3.369124302788934028e-06, + 3.365962107883450195e-06, + 3.362794852460462545e-06, + 3.359622542355808703e-06, + 3.356445183413732673e-06, + 3.353262781485010352e-06, + 3.350075342428385255e-06, + 3.346882872110054361e-06, + 3.343685376403215378e-06, + 3.340482861188779941e-06, + 3.337275332355433756e-06, + 3.334062795798478702e-06, + 3.330845257421111427e-06, + 3.327622723133931651e-06, + 3.324395198854331871e-06, + 3.321162690508040236e-06, + 3.317925204027135103e-06, + 3.314682745351598067e-06, + 3.311435320428713843e-06, + 3.308182935212543833e-06, + 3.304925595665249191e-06, + 3.301663307755882108e-06, + 3.298396077460506514e-06, + 3.295123910762847749e-06, + 3.291846813653893619e-06, + 3.288564792131319674e-06, + 3.285277852200865219e-06, + 3.281985999875081399e-06, + 3.278689241173458675e-06, + 3.275387582123098524e-06, + 3.272081028758160323e-06, + 3.268769587119976974e-06, + 3.265453263257177294e-06, + 3.262132063225165519e-06, + 3.258805993086895064e-06, + 3.255475058912427648e-06, + 3.252139266778429725e-06, + 3.248798622769519697e-06, + 3.245453132976974915e-06, + 3.242102803498907016e-06, + 3.238747640440922606e-06, + 3.235387649915562952e-06, + 3.232022838042415787e-06, + 3.228653210948283448e-06, + 3.225278774766571315e-06, + 3.221899535638127225e-06, + 3.218515499710697252e-06, + 3.215126673138996432e-06, + 3.211733062084781186e-06, + 3.208334672716892943e-06, + 3.204931511210742295e-06, + 3.201523583749116644e-06, + 3.198110896521623704e-06, + 3.194693455724806266e-06, + 3.191271267562124421e-06, + 3.187844338244116063e-06, + 3.184412673987792538e-06, + 3.180976281017475086e-06, + 3.177535165564229869e-06, + 3.174089333866028910e-06, + 3.170638792167819547e-06, + 3.167183546720959889e-06, + 3.163723603784105232e-06, + 3.160258969622573209e-06, + 3.156789650508524635e-06, + 3.153315652720898703e-06, + 3.149836982545606960e-06, + 3.146353646274876853e-06, + 3.142865650208168645e-06, + 3.139373000651540982e-06, + 3.135875703917824966e-06, + 3.132373766326572904e-06, + 3.128867194204221361e-06, + 3.125355993883461821e-06, + 3.121840171704183004e-06, + 3.118319734012766561e-06, + 3.114794687162303493e-06, + 3.111265037512706379e-06, + 3.107730791430087656e-06, + 3.104191955287529149e-06, + 3.100648535465182442e-06, + 3.097100538348933110e-06, + 3.093547970331885566e-06, + 3.089990837813735833e-06, + 3.086429147200339981e-06, + 3.082862904904575983e-06, + 3.079292117345738934e-06, + 3.075716790949702411e-06, + 3.072136932148844356e-06, + 3.068552547382291869e-06, + 3.064963643095035638e-06, + 3.061370225739674822e-06, + 3.057772301774226203e-06, + 3.054169877663828418e-06, + 3.050562959880074492e-06, + 3.046951554900431204e-06, + 3.043335669209744256e-06, + 3.039715309298827124e-06, + 3.036090481664630035e-06, + 3.032461192810979010e-06, + 3.028827449248120152e-06, + 3.025189257492089036e-06, + 3.021546624066343363e-06, + 3.017899555499717376e-06, + 3.014248058327943554e-06, + 3.010592139093167686e-06, + 3.006931804343222117e-06, + 3.003267060633220286e-06, + 2.999597914524110420e-06, + 2.995924372582855951e-06, + 2.992246441383164384e-06, + 2.988564127505046422e-06, + 2.984877437534136645e-06, + 2.981186378063297785e-06, + 2.977490955691147319e-06, + 2.973791177022226869e-06, + 2.970087048667799691e-06, + 2.966378577245149325e-06, + 2.962665769377794320e-06, + 2.958948631695599199e-06, + 2.955227170834104873e-06, + 2.951501393435513322e-06, + 2.947771306148203089e-06, + 2.944036915626019045e-06, + 2.940298228529920715e-06, + 2.936555251526502508e-06, + 2.932807991288172024e-06, + 2.929056454493867906e-06, + 2.925300647828499536e-06, + 2.921540577983011404e-06, + 2.917776251654606727e-06, + 2.914007675546029588e-06, + 2.910234856366551305e-06, + 2.906457800831330499e-06, + 2.902676515661519398e-06, + 2.898891007584281620e-06, + 2.895101283332916267e-06, + 2.891307349646252297e-06, + 2.887509213269541716e-06, + 2.883706880953838710e-06, + 2.879900359456153796e-06, + 2.876089655539425031e-06, + 2.872274775972663697e-06, + 2.868455727530307167e-06, + 2.864632516993181141e-06, + 2.860805151147837681e-06, + 2.856973636786689473e-06, + 2.853137980708185581e-06, + 2.849298189716130013e-06, + 2.845454270620668511e-06, + 2.841606230237577470e-06, + 2.837754075388480777e-06, + 2.833897812900780353e-06, + 2.830037449607851396e-06, + 2.826172992348332567e-06, + 2.822304447967160640e-06, + 2.818431823314808174e-06, + 2.814555125247534231e-06, + 2.810674360627318313e-06, + 2.806789536322003929e-06, + 2.802900659204669253e-06, + 2.799007736154573257e-06, + 2.795110774056474699e-06, + 2.791209779800851927e-06, + 2.787304760283954124e-06, + 2.783395722407212620e-06, + 2.779482673078009153e-06, + 2.775565619209849085e-06, + 2.771644567720863001e-06, + 2.767719525535419884e-06, + 2.763790499583507932e-06, + 2.759857496800164511e-06, + 2.755920524126495549e-06, + 2.751979588509011470e-06, + 2.748034696899715709e-06, + 2.744085856256348651e-06, + 2.740133073541634202e-06, + 2.736176355724150959e-06, + 2.732215709778474089e-06, + 2.728251142683622718e-06, + 2.724282661424776863e-06, + 2.720310272992555344e-06, + 2.716333984382362714e-06, + 2.712353802596031660e-06, + 2.708369734640289450e-06, + 2.704381787526977734e-06, + 2.700389968273797940e-06, + 2.696394283903828457e-06, + 2.692394741444872427e-06, + 2.688391347931245403e-06, + 2.684384110401430764e-06, + 2.680373035899916083e-06, + 2.676358131476525663e-06, + 2.672339404185695901e-06, + 2.668316861088179520e-06, + 2.664290509249504814e-06, + 2.660260355740131080e-06, + 2.656226407636283367e-06, + 2.652188672019434093e-06, + 2.648147155975601705e-06, + 2.644101866597249719e-06, + 2.640052810980808734e-06, + 2.635999996228628835e-06, + 2.631943429448052099e-06, + 2.627883117751603596e-06, + 2.623819068256958356e-06, + 2.619751288087125177e-06, + 2.615679784369722408e-06, + 2.611604564238007522e-06, + 2.607525634830362116e-06, + 2.603443003289546526e-06, + 2.599356676764487062e-06, + 2.595266662408620062e-06, + 2.591172967380122285e-06, + 2.587075598842743118e-06, + 2.582974563965078247e-06, + 2.578869869920769135e-06, + 2.574761523888625416e-06, + 2.570649533051922703e-06, + 2.566533904599488489e-06, + 2.562414645724915250e-06, + 2.558291763626759498e-06, + 2.554165265508541783e-06, + 2.550035158578895768e-06, + 2.545901450050846983e-06, + 2.541764147142861450e-06, + 2.537623257078118928e-06, + 2.533478787084707734e-06, + 2.529330744395573919e-06, + 2.525179136248727095e-06, + 2.521023969886464134e-06, + 2.516865252556475811e-06, + 2.512702991511087866e-06, + 2.508537194007452435e-06, + 2.504367867307684417e-06, + 2.500195018678150394e-06, + 2.496018655390557069e-06, + 2.491838784721163097e-06, + 2.487655413950995508e-06, + 2.483468550365805655e-06, + 2.479278201256266154e-06, + 2.475084373917213213e-06, + 2.470887075648719396e-06, + 2.466686313755368140e-06, + 2.462482095546434177e-06, + 2.458274428336019477e-06, + 2.454063319442329885e-06, + 2.449848776188763136e-06, + 2.445630805903149063e-06, + 2.441409415917941878e-06, + 2.437184613570192214e-06, + 2.432956406201719078e-06, + 2.428724801158362766e-06, + 2.424489805790904740e-06, + 2.420251427455217130e-06, + 2.416009673510606785e-06, + 2.411764551321642322e-06, + 2.407516068257391374e-06, + 2.403264231690891195e-06, + 2.399009049000213377e-06, + 2.394750527567704489e-06, + 2.390488674780187245e-06, + 2.386223498029096878e-06, + 2.381955004709773440e-06, + 2.377683202222343569e-06, + 2.373408097971884387e-06, + 2.369129699366785336e-06, + 2.364848013820536270e-06, + 2.360563048751017212e-06, + 2.356274811579721205e-06, + 2.351983309733785920e-06, + 2.347688550643376324e-06, + 2.343390541743733652e-06, + 2.339089290474227153e-06, + 2.334784804278687401e-06, + 2.330477090604499965e-06, + 2.326166156904620503e-06, + 2.321852010634955314e-06, + 2.317534659256411577e-06, + 2.313214110234115121e-06, + 2.308890371036667997e-06, + 2.304563449138015762e-06, + 2.300233352015714454e-06, + 2.295900087151154203e-06, + 2.291563662030417280e-06, + 2.287224084143779191e-06, + 2.282881360984890023e-06, + 2.278535500052840352e-06, + 2.274186508849535449e-06, + 2.269834394881738317e-06, + 2.265479165660102381e-06, + 2.261120828699365458e-06, + 2.256759391518339596e-06, + 2.252394861640069888e-06, + 2.248027246591078499e-06, + 2.243656553902480629e-06, + 2.239282791109417001e-06, + 2.234905965750255112e-06, + 2.230526085368500984e-06, + 2.226143157511069099e-06, + 2.221757189728453924e-06, + 2.217368189575670118e-06, + 2.212976164611467753e-06, + 2.208581122398556360e-06, + 2.204183070503719271e-06, + 2.199782016497073320e-06, + 2.195377967953200896e-06, + 2.190970932450354584e-06, + 2.186560917570660447e-06, + 2.182147930900073565e-06, + 2.177731980028611809e-06, + 2.173313072549507963e-06, + 2.168891216060380325e-06, + 2.164466418162471224e-06, + 2.160038686460782121e-06, + 2.155608028564105372e-06, + 2.151174452085174154e-06, + 2.146737964639882349e-06, + 2.142298573848450481e-06, + 2.137856287334612992e-06, + 2.133411112725809245e-06, + 2.128963057653365639e-06, + 2.124512129751706593e-06, + 2.120058336659516256e-06, + 2.115601686018916886e-06, + 2.111142185475702625e-06, + 2.106679842679263697e-06, + 2.102214665282815100e-06, + 2.097746660942591507e-06, + 2.093275837318991603e-06, + 2.088802202075809830e-06, + 2.084325762880386308e-06, + 2.079846527403814786e-06, + 2.075364503320152354e-06, + 2.070879698307545158e-06, + 2.066392120047464369e-06, + 2.061901776224879403e-06, + 2.057408674528243527e-06, + 2.052912822649681467e-06, + 2.048414228284178807e-06, + 2.043912899130573858e-06, + 2.039408842891723680e-06, + 2.034902067272715993e-06, + 2.030392579982831754e-06, + 2.025880388734760806e-06, + 2.021365501243774745e-06, + 2.016847925229888555e-06, + 2.012327668415111980e-06, + 2.007804738525563298e-06, + 2.003279143290698945e-06, + 1.998750890442696449e-06, + 1.994219987717433603e-06, + 1.989686442854661679e-06, + 1.985150263596233863e-06, + 1.980611457688044959e-06, + 1.976070032879261012e-06, + 1.971525996921473121e-06, + 1.966979357570887023e-06, + 1.962430122585538467e-06, + 1.957878299727447648e-06, + 1.953323896761620549e-06, + 1.948766921456437310e-06, + 1.944207381582648493e-06, + 1.939645284915523158e-06, + 1.935080639232091768e-06, + 1.930513452313277328e-06, + 1.925943731943131781e-06, + 1.921371485907982625e-06, + 1.916796721998448003e-06, + 1.912219448007604995e-06, + 1.907639671731190788e-06, + 1.903057400968584598e-06, + 1.898472643522185526e-06, + 1.893885407196607877e-06, + 1.889295699800867771e-06, + 1.884703529145574390e-06, + 1.880108903045098585e-06, + 1.875511829316792342e-06, + 1.870912315780148098e-06, + 1.866310370258775507e-06, + 1.861706000578634313e-06, + 1.857099214568173059e-06, + 1.852490020059346152e-06, + 1.847878424886981140e-06, + 1.843264436887990326e-06, + 1.838648063903329117e-06, + 1.834029313776203696e-06, + 1.829408194352237891e-06, + 1.824784713480487072e-06, + 1.820158879012600433e-06, + 1.815530698803019629e-06, + 1.810900180709165538e-06, + 1.806267332590621301e-06, + 1.801632162310320924e-06, + 1.796994677733739086e-06, + 1.792354886729063514e-06, + 1.787712797167208956e-06, + 1.783068416921976638e-06, + 1.778421753869250640e-06, + 1.773772815888197506e-06, + 1.769121610860435727e-06, + 1.764468146670225693e-06, + 1.759812431204665352e-06, + 1.755154472352866262e-06, + 1.750494278007148330e-06, + 1.745831856062223907e-06, + 1.741167214415372489e-06, + 1.736500360966463588e-06, + 1.731831303618103267e-06, + 1.727160050274832636e-06, + 1.722486608844324286e-06, + 1.717810987236565961e-06, + 1.713133193364040338e-06, + 1.708453235141717834e-06, + 1.703771120487245700e-06, + 1.699086857320124281e-06, + 1.694400453562903243e-06, + 1.689711917140360586e-06, + 1.685021255979704019e-06, + 1.680328478010746516e-06, + 1.675633591165076855e-06, + 1.670936603377287392e-06, + 1.666237522584120678e-06, + 1.661536356724686506e-06, + 1.656833113740421685e-06, + 1.652127801575302000e-06, + 1.647420428174996459e-06, + 1.642711001488102473e-06, + 1.637999529465277437e-06, + 1.633286020059478651e-06, + 1.628570481225903186e-06, + 1.623852920922210222e-06, + 1.619133347107470096e-06, + 1.614411767744407037e-06, + 1.609688190796521575e-06, + 1.604962624230325658e-06, + 1.600235076014514459e-06, + 1.595505554119333009e-06, + 1.590774066517590946e-06, + 1.586040621184852668e-06, + 1.581305226097586146e-06, + 1.576567889235183311e-06, + 1.571828618579148166e-06, + 1.567087422112232187e-06, + 1.562344307820734009e-06, + 1.557599283691540321e-06, + 1.552852357714422169e-06, + 1.548103537881187081e-06, + 1.543352832185035739e-06, + 1.538600248621596213e-06, + 1.533845795189113691e-06, + 1.529089479886570704e-06, + 1.524331310715743084e-06, + 1.519571295680361619e-06, + 1.514809442785272636e-06, + 1.510045760038483589e-06, + 1.505280255449313565e-06, + 1.500512937028548075e-06, + 1.495743812789497635e-06, + 1.490972890747336657e-06, + 1.486200178918276747e-06, + 1.481425685321829549e-06, + 1.476649417977879825e-06, + 1.471871384908978162e-06, + 1.467091594139474247e-06, + 1.462310053694672370e-06, + 1.457526771602931011e-06, + 1.452741755893732240e-06, + 1.447955014597891780e-06, + 1.443166555748604670e-06, + 1.438376387380584889e-06, + 1.433584517530252343e-06, + 1.428790954235935513e-06, + 1.423995705537041365e-06, + 1.419198779475253266e-06, + 1.414400184093727999e-06, + 1.409599927437256271e-06, + 1.404798017552267585e-06, + 1.399994462487023581e-06, + 1.395189270290760616e-06, + 1.390382449014935762e-06, + 1.385574006712394372e-06, + 1.380763951437526792e-06, + 1.375952291246294187e-06, + 1.371139034196397530e-06, + 1.366324188346438613e-06, + 1.361507761757163702e-06, + 1.356689762490609944e-06, + 1.351870198610303992e-06, + 1.347049078181455129e-06, + 1.342226409270098074e-06, + 1.337402199944352514e-06, + 1.332576458273555327e-06, + 1.327749192328467884e-06, + 1.322920410181256999e-06, + 1.318090119905700118e-06, + 1.313258329576312239e-06, + 1.308425047269610749e-06, + 1.303590281063263516e-06, + 1.298754039036267826e-06, + 1.293916329268958854e-06, + 1.289077159843182670e-06, + 1.284236538841464452e-06, + 1.279394474348244309e-06, + 1.274550974449029821e-06, + 1.269706047230579004e-06, + 1.264859700781116931e-06, + 1.260011943189459696e-06, + 1.255162782546287710e-06, + 1.250312226943264577e-06, + 1.245460284473257538e-06, + 1.240606963230307608e-06, + 1.235752271309839005e-06, + 1.230896216807786498e-06, + 1.226038807821868709e-06, + 1.221180052450709736e-06, + 1.216319958794049430e-06, + 1.211458534952731329e-06, + 1.206595789028901071e-06, + 1.201731729124914569e-06, + 1.196866363345681331e-06, + 1.191999699795670404e-06, + 1.187131746581237182e-06, + 1.182262511809746719e-06, + 1.177392003588935070e-06, + 1.172520230027963424e-06, + 1.167647199237611437e-06, + 1.162772919328332023e-06, + 1.157897398412395404e-06, + 1.153020644603011799e-06, + 1.148142666013454952e-06, + 1.143263470759411382e-06, + 1.138383066955973201e-06, + 1.133501462719968941e-06, + 1.128618666169104022e-06, + 1.123734685421294355e-06, + 1.118849528595728514e-06, + 1.113963203813083949e-06, + 1.109075719193552545e-06, + 1.104187082859004162e-06, + 1.099297302932093224e-06, + 1.094406387535395802e-06, + 1.089514344793542024e-06, + 1.084621182831268533e-06, + 1.079726909773624101e-06, + 1.074831533747022496e-06, + 1.069935062878591322e-06, + 1.065037505295301059e-06, + 1.060138869126305413e-06, + 1.055239162499930541e-06, + 1.050338393546022598e-06, + 1.045436570395058570e-06, + 1.040533701177308552e-06, + 1.035629794024931949e-06, + 1.030724857070061269e-06, + 1.025818898444983395e-06, + 1.020911926283211289e-06, + 1.016003948718609643e-06, + 1.011094973885590546e-06, + 1.006185009919325448e-06, + 1.001274064954854514e-06, + 9.963621471283846936e-07, + 9.914492645764049984e-07, + 9.865354254358866147e-07, + 9.816206378442721021e-07, + 9.767049099396778350e-07, + 9.717882498600204997e-07, + 9.668706657442948438e-07, + 9.619521657316897971e-07, + 9.570327579618139943e-07, + 9.521124505746569172e-07, + 9.471912517108062647e-07, + 9.422691695105619562e-07, + 9.373462121152275392e-07, + 9.324223876662269460e-07, + 9.274977043053108517e-07, + 9.225721701747520213e-07, + 9.176457934164821831e-07, + 9.127185821733572845e-07, + 9.077905445882938354e-07, + 9.028616888044644676e-07, + 8.979320229652843818e-07, + 8.930015552146226824e-07, + 8.880702936959086522e-07, + 8.831382465534352297e-07, + 8.782054219314635899e-07, + 8.732718279744363844e-07, + 8.683374728269592129e-07, + 8.634023646340061343e-07, + 8.584665115400394939e-07, + 8.535299216902960368e-07, + 8.485926032299070524e-07, + 8.436545643041071682e-07, + 8.387158130584259910e-07, + 8.337763576378156627e-07, + 8.288362061877225691e-07, + 8.238953668542888276e-07, + 8.189538477823850534e-07, + 8.140116571177657403e-07, + 8.090688030061968172e-07, + 8.041252935927813040e-07, + 7.991811370232491306e-07, + 7.942363414430829994e-07, + 7.892909149977160611e-07, + 7.843448658327383795e-07, + 7.793982020930075465e-07, + 7.744509319237327786e-07, + 7.695030634706824399e-07, + 7.645546048781872680e-07, + 7.596055642913349301e-07, + 7.546559498550658155e-07, + 7.497057697135133032e-07, + 7.447550320110804461e-07, + 7.398037448926408237e-07, + 7.348519165015707792e-07, + 7.298995549819043768e-07, + 7.249466684774604284e-07, + 7.199932651309485563e-07, + 7.150393530863589907e-07, + 7.100849404858949340e-07, + 7.051300354723544177e-07, + 7.001746461882574344e-07, + 6.952187807751598417e-07, + 6.902624473747440228e-07, + 6.853056541290221740e-07, + 6.803484091783519190e-07, + 6.753907206636165711e-07, + 6.704325967253302433e-07, + 6.654740455027512161e-07, + 6.605150751362791471e-07, + 6.555556937643730355e-07, + 6.505959095259508665e-07, + 6.456357305592763982e-07, + 6.406751650023868074e-07, + 6.357142209919831822e-07, + 6.307529066658300608e-07, + 6.257912301596723369e-07, + 6.208291996096326812e-07, + 6.158668231513196152e-07, + 6.109041089189396092e-07, + 6.059410650474788274e-07, + 6.009776996707128119e-07, + 5.960140209214123122e-07, + 5.910500369324307694e-07, + 5.860857558358066729e-07, + 5.811211857629798716e-07, + 5.761563348449880856e-07, + 5.711912112115775213e-07, + 5.662258229925146083e-07, + 5.612601783169051962e-07, + 5.562942853123043231e-07, + 5.513281521069089723e-07, + 5.463617868275514512e-07, + 5.413951975999200432e-07, + 5.364283925496370690e-07, + 5.314613798013689728e-07, + 5.264941674790332097e-07, + 5.215267637057840582e-07, + 5.165591766042226844e-07, + 5.115914142954965339e-07, + 5.066234849006153037e-07, + 5.016553965395513930e-07, + 4.966871573314492263e-07, + 4.917187753948309767e-07, + 4.867502588467047457e-07, + 4.817816158038700529e-07, + 4.768128543820307281e-07, + 4.718439826959880343e-07, + 4.668750088596428915e-07, + 4.619059409861905354e-07, + 4.569367871872380150e-07, + 4.519675555741004174e-07, + 4.469982542569180482e-07, + 4.420288913448568603e-07, + 4.370594749463169300e-07, + 4.320900131680371431e-07, + 4.271205141164060844e-07, + 4.221509858965675180e-07, + 4.171814366126261631e-07, + 4.122118743676368416e-07, + 4.072423072638096720e-07, + 4.022727434016136434e-07, + 3.973031908808710882e-07, + 3.923336578009593289e-07, + 3.873641522588198332e-07, + 3.823946823511410173e-07, + 3.774252561734734679e-07, + 3.724558818195456977e-07, + 3.674865673825846699e-07, + 3.625173209544076204e-07, + 3.575481506256413333e-07, + 3.525790644859246344e-07, + 3.476100706230108542e-07, + 3.426411771238621946e-07, + 3.376723920748547106e-07, + 3.327037235597829654e-07, + 3.277351796620459051e-07, + 3.227667684637596970e-07, + 3.177984980450770333e-07, + 3.128303764855026261e-07, + 3.078624118629921228e-07, + 3.028946122541642354e-07, + 2.979269857342858641e-07, + 2.929595403774817382e-07, + 2.879922842556135266e-07, + 2.830252254406996524e-07, + 2.780583720018081112e-07, + 2.730917320074751734e-07, + 2.681253135248071593e-07, + 2.631591246188037650e-07, + 2.581931733534545472e-07, + 2.532274677919404106e-07, + 2.482620159946369398e-07, + 2.432968260213076851e-07, + 2.383319059302107017e-07, + 2.333672637771992917e-07, + 2.284029076181394099e-07, + 2.234388455058066642e-07, + 2.184750854922993538e-07, + 2.135116356279230857e-07, + 2.085485039613985886e-07, + 2.035856985398494580e-07, + 1.986232274090094933e-07, + 1.936610986123256375e-07, + 1.886993201922698721e-07, + 1.837379001896673613e-07, + 1.787768466427956853e-07, + 1.738161675895815146e-07, + 1.688558710656025648e-07, + 1.638959651042930817e-07, + 1.589364577380353758e-07, + 1.539773569972636610e-07, + 1.490186709106742779e-07, + 1.440604075054307022e-07, + 1.391025748062678073e-07, + 1.341451808368057182e-07, + 1.291882336188728207e-07, + 1.242317411716098649e-07, + 1.192757115136663748e-07, + 1.143201526611986462e-07, + 1.093650726280798505e-07, + 1.044104794269896234e-07, + 9.945638106851856605e-08, + 9.450278556137575461e-08, + 8.954970091237757015e-08, + 8.459713512665278651e-08, + 7.964509620674922838e-08, + 7.469359215394533575e-08, + 6.974263096735242800e-08, + 6.479222064412409319e-08, + 5.984236917966457131e-08, + 5.489308456673158764e-08, + 4.994437479674927361e-08, + 4.499624785891158249e-08, + 4.004871174039102341e-08, + 3.510177442632495001e-08, + 3.015544390002420852e-08, + 2.520972814207749963e-08, + 2.026463513166270794e-08, + 1.532017284565111501e-08, + 1.037634925881577273e-08, + 5.433172344039005727e-09, + 4.906500714178525635e-10, +-4.451209590425839621e-09, +-9.392398675240051064e-09, +-1.433290921893477224e-08, +-1.927273325959482371e-08, +-2.421186283727202515e-08, +-2.915028999487941064e-08, +-3.408800677710263753e-08, +-3.902500523019108854e-08, +-4.396127740395517878e-08, +-4.889681534957442971e-08, +-5.383161112049217081e-08, +-5.876565677308895069e-08, +-6.369894436537310350e-08, +-6.863146595787490475e-08, +-7.356321361343952464e-08, +-7.849417939701804259e-08, +-8.342435537656188754e-08, +-8.835373362193410944e-08, +-9.328230620470267673e-08, +-9.821006520013345226e-08, +-1.031370026850010498e-07, +-1.080631107384846377e-07, +-1.129883814428373594e-07, +-1.179128068820805132e-07, +-1.228363791428958882e-07, +-1.277590903144179765e-07, +-1.326809324882480684e-07, +-1.376018977582444264e-07, +-1.425219782216363187e-07, +-1.474411659766176785e-07, +-1.523594531254363383e-07, +-1.572768317719904423e-07, +-1.621932940227179891e-07, +-1.671088319872708323e-07, +-1.720234377774272752e-07, +-1.769371035068838596e-07, +-1.818498212932492282e-07, +-1.867615832558547302e-07, +-1.916723815166491256e-07, +-1.965822082010868854e-07, +-2.014910554357283347e-07, +-2.063989153513246002e-07, +-2.113057800804119039e-07, +-2.162116417582093654e-07, +-2.211164925235026953e-07, +-2.260203245164652294e-07, +-2.309231298806443535e-07, +-2.358249007627552240e-07, +-2.407256293115957193e-07, +-2.456253076787171040e-07, +-2.505239280193152669e-07, +-2.554214824900464873e-07, +-2.603179632510176450e-07, +-2.652133624655771091e-07, +-2.701076722992284709e-07, +-2.750008849205264935e-07, +-2.798929925008636059e-07, +-2.847839872142682040e-07, +-2.896738612382903287e-07, +-2.945626067526995121e-07, +-2.994502159401569509e-07, +-3.043366809871012383e-07, +-3.092219940815717536e-07, +-3.141061474151923608e-07, +-3.189891331829647856e-07, +-3.238709435821854717e-07, +-3.287515708133335362e-07, +-3.336310070798641463e-07, +-3.385092445880051259e-07, +-3.433862755476388224e-07, +-3.482620921710063583e-07, +-3.531366866735932039e-07, +-3.580100512739209135e-07, +-3.628821781935675065e-07, +-3.677530596569474512e-07, +-3.726226878922112663e-07, +-3.774910551299371730e-07, +-3.823581536040265144e-07, +-3.872239755514863857e-07, +-3.920885132124537748e-07, +-3.969517588299797806e-07, +-4.018137046509192623e-07, +-4.066743429246359377e-07, +-4.115336659038804916e-07, +-4.163916658445915763e-07, +-4.212483350056879706e-07, +-4.261036656499490178e-07, +-4.309576500427254943e-07, +-4.358102804528186183e-07, +-4.406615491522743264e-07, +-4.455114484163991555e-07, +-4.503599705235535672e-07, +-4.552071077560293144e-07, +-4.600528523987635928e-07, +-4.648971967402176789e-07, +-4.697401330721737474e-07, +-4.745816536897429716e-07, +-4.794217508911610704e-07, +-4.842604169786766342e-07, +-4.890976442572491295e-07, +-4.939334250354375950e-07, +-4.987677516251906838e-07, +-5.036006163416488806e-07, +-5.084320115040153579e-07, +-5.132619294344909379e-07, +-5.180903624580601104e-07, +-5.229173029044687494e-07, +-5.277427431060548615e-07, +-5.325666753986336293e-07, +-5.373890921221582032e-07, +-5.422099856194365521e-07, +-5.470293482370005195e-07, +-5.518471723249092060e-07, +-5.566634502365428221e-07, +-5.614781743294770389e-07, +-5.662913369644182667e-07, +-5.711029305049899916e-07, +-5.759129473197090089e-07, +-5.807213797798137370e-07, +-5.855282202601565657e-07, +-5.903334611400748187e-07, +-5.951370948012374898e-07, +-5.999391136296114176e-07, +-6.047395100152475162e-07, +-6.095382763512199720e-07, +-6.143354050342847058e-07, +-6.191308884657496996e-07, +-6.239247190491156917e-07, +-6.287168891931148021e-07, +-6.335073913093377807e-07, +-6.382962178131209574e-07, +-6.430833611244068272e-07, +-6.478688136656228679e-07, +-6.526525678636021875e-07, +-6.574346161494054355e-07, +-6.622149509572410474e-07, +-6.669935647251330247e-07, +-6.717704498957880846e-07, +-6.765455989142362497e-07, +-6.813190042308671437e-07, +-6.860906582990651810e-07, +-6.908605535762980045e-07, +-6.956286825239171147e-07, +-7.003950376071690930e-07, +-7.051596112949861732e-07, +-7.099223960608670494e-07, +-7.146833843815889627e-07, +-7.194425687378821510e-07, +-7.241999416152726469e-07, +-7.289554955019748597e-07, +-7.337092228908148696e-07, +-7.384611162790397395e-07, +-7.432111681672512059e-07, +-7.479593710602738885e-07, +-7.527057174669612132e-07, +-7.574501998999831244e-07, +-7.621928108767003294e-07, +-7.669335429178813605e-07, +-7.716723885485864544e-07, +-7.764093402979570643e-07, +-7.811443906992191419e-07, +-7.858775322895009201e-07, +-7.906087576106782510e-07, +-7.953380592081185629e-07, +-8.000654296315413388e-07, +-8.047908614348139826e-07, +-8.095143471759709823e-07, +-8.142358794170033169e-07, +-8.189554507247295239e-07, +-8.236730536695267378e-07, +-8.283886808261942404e-07, +-8.331023247737464673e-07, +-8.378139780952227426e-07, +-8.425236333785455355e-07, +-8.472312832152446168e-07, +-8.519369202013381847e-07, +-8.566405369371177189e-07, +-8.613421260271677794e-07, +-8.660416800801611310e-07, +-8.707391917097153049e-07, +-8.754346535331383549e-07, +-8.801280581722843608e-07, +-8.848193982533594574e-07, +-8.895086664069192938e-07, +-8.941958552676891447e-07, +-8.988809574754001436e-07, +-9.035639656735445680e-07, +-9.082448725102343071e-07, +-9.129236706379899508e-07, +-9.176003527135534893e-07, +-9.222749113987337583e-07, +-9.269473393593742230e-07, +-9.316176292651381494e-07, +-9.362857737914334871e-07, +-9.409517656173034392e-07, +-9.456155974262887422e-07, +-9.502772619070703517e-07, +-9.549367517522101167e-07, +-9.595940596590183529e-07, +-9.642491783293364730e-07, +-9.689021004693529683e-07, +-9.735528187904482189e-07, +-9.782013260081575132e-07, +-9.828476148419660658e-07, +-9.874916780172262769e-07, +-9.921335082630469261e-07, +-9.967730983131717573e-07, +-1.001410440906798559e-06, +-1.006045528786520241e-06, +-1.010678354700204186e-06, +-1.015308911400804209e-06, +-1.019937191645317862e-06, +-1.024563188195434834e-06, +-1.029186893818382083e-06, +-1.033808301284620324e-06, +-1.038427403370806319e-06, +-1.043044192857481748e-06, +-1.047658662529938027e-06, +-1.052270805179053177e-06, +-1.056880613599217231e-06, +-1.061488080590220056e-06, +-1.066093198957064373e-06, +-1.070695961508916068e-06, +-1.075296361059751751e-06, +-1.079894390429208542e-06, +-1.084490042440287764e-06, +-1.089083309922299866e-06, +-1.093674185708565149e-06, +-1.098262662637491829e-06, +-1.102848733552346494e-06, +-1.107432391301297298e-06, +-1.112013628737195427e-06, +-1.116592438718421077e-06, +-1.121168814107657159e-06, +-1.125742747772512080e-06, +-1.130314232586372706e-06, +-1.134883261426325108e-06, +-1.139449827175054668e-06, +-1.144013922720617380e-06, +-1.148575540955449247e-06, +-1.153134674777180487e-06, +-1.157691317088451520e-06, +-1.162245460796712854e-06, +-1.166797098815072542e-06, +-1.171346224061045748e-06, +-1.175892829457416818e-06, +-1.180436907932022861e-06, +-1.184978452417777253e-06, +-1.189517455852473764e-06, +-1.194053911179611352e-06, +-1.198587811347185876e-06, +-1.203119149308512136e-06, +-1.207647918022028848e-06, +-1.212174110451307109e-06, +-1.216697719564874858e-06, +-1.221218738337027475e-06, +-1.225737159746612513e-06, +-1.230252976777863380e-06, +-1.234766182420219774e-06, +-1.239276769668095592e-06, +-1.243784731521750319e-06, +-1.248290060986043252e-06, +-1.252792751071278627e-06, +-1.257292794793000214e-06, +-1.261790185172011435e-06, +-1.266284915234180756e-06, +-1.270776978011262677e-06, +-1.275266366539684352e-06, +-1.279753073861387970e-06, +-1.284237093023605015e-06, +-1.288718417078699568e-06, +-1.293197039084972775e-06, +-1.297672952105454133e-06, +-1.302146149208732639e-06, +-1.306616623468756466e-06, +-1.311084367964844401e-06, +-1.315549375781497380e-06, +-1.320011640009224976e-06, +-1.324471153743528540e-06, +-1.328927910084714642e-06, +-1.333381902139746470e-06, +-1.337833123020194439e-06, +-1.342281565843082795e-06, +-1.346727223731505834e-06, +-1.351170089813415586e-06, +-1.355610157222437933e-06, +-1.360047419097687953e-06, +-1.364481868583599242e-06, +-1.368913498830689636e-06, +-1.373342302994615707e-06, +-1.377768274235945760e-06, +-1.382191405722008481e-06, +-1.386611690624876365e-06, +-1.391029122122179500e-06, +-1.395443693397917665e-06, +-1.399855397640289590e-06, +-1.404264228044470805e-06, +-1.408670177810446293e-06, +-1.413073240144016764e-06, +-1.417473408256398859e-06, +-1.421870675365249421e-06, +-1.426265034692468292e-06, +-1.430656479467018723e-06, +-1.435045002922716192e-06, +-1.439430598299051723e-06, +-1.443813258842019858e-06, +-1.448192977802090013e-06, +-1.452569748436045178e-06, +-1.456943564006783496e-06, +-1.461314417782343965e-06, +-1.465682303036486231e-06, +-1.470047213049516871e-06, +-1.474409141106110186e-06, +-1.478768080498104047e-06, +-1.483124024522306926e-06, +-1.487476966481328625e-06, +-1.491826899684354883e-06, +-1.496173817445213393e-06, +-1.500517713084119750e-06, +-1.504858579927528788e-06, +-1.509196411307140174e-06, +-1.513531200560494711e-06, +-1.517862941031791094e-06, +-1.522191626069897075e-06, +-1.526517249030173762e-06, +-1.530839803274245011e-06, +-1.535159282169058915e-06, +-1.539475679087657548e-06, +-1.543788987408999083e-06, +-1.548099200517793473e-06, +-1.552406311805265410e-06, +-1.556710314667988812e-06, +-1.561011202508716069e-06, +-1.565308968736158023e-06, +-1.569603606765002602e-06, +-1.573895110015733135e-06, +-1.578183471915418846e-06, +-1.582468685896546155e-06, +-1.586750745397823999e-06, +-1.591029643863987955e-06, +-1.595305374745610291e-06, +-1.599577931499909309e-06, +-1.603847307589561802e-06, +-1.608113496483515782e-06, +-1.612376491656800748e-06, +-1.616636286590519848e-06, +-1.620892874771701437e-06, +-1.625146249694046160e-06, +-1.629396404856795317e-06, +-1.633643333765509073e-06, +-1.637887029931891123e-06, +-1.642127486873787635e-06, +-1.646364698115001321e-06, +-1.650598657186085537e-06, +-1.654829357623199726e-06, +-1.659056792968870052e-06, +-1.663280956771819785e-06, +-1.667501842586788249e-06, +-1.671719443975302251e-06, +-1.675933754504539792e-06, +-1.680144767748096630e-06, +-1.684352477285831483e-06, +-1.688556876703837869e-06, +-1.692757959594284013e-06, +-1.696955719556193602e-06, +-1.701150150194287889e-06, +-1.705341245119779365e-06, +-1.709528997950172070e-06, +-1.713713402309289756e-06, +-1.717894451827092083e-06, +-1.722072140140611646e-06, +-1.726246460891902254e-06, +-1.730417407730696066e-06, +-1.734584974312318414e-06, +-1.738749154298466647e-06, +-1.742909941357786960e-06, +-1.747067329164929953e-06, +-1.751221311400377835e-06, +-1.755371881752147597e-06, +-1.759519033913925424e-06, +-1.763662761585808477e-06, +-1.767803058475103867e-06, +-1.771939918294214873e-06, +-1.776073334763345317e-06, +-1.780203301608387055e-06, +-1.784329812561904872e-06, +-1.788452861362747265e-06, +-1.792572441757013122e-06, +-1.796688547495981572e-06, +-1.800801172338753034e-06, +-1.804910310050200671e-06, +-1.809015954401725303e-06, +-1.813118099172015621e-06, +-1.817216738145179212e-06, +-1.821311865112442549e-06, +-1.825403473871968035e-06, +-1.829491558227931371e-06, +-1.833576111991097753e-06, +-1.837657128979571491e-06, +-1.841734603016753183e-06, +-1.845808527933953443e-06, +-1.849878897568351340e-06, +-1.853945705763771764e-06, +-1.858008946371419806e-06, +-1.862068613248016854e-06, +-1.866124700257515631e-06, +-1.870177201270908129e-06, +-1.874226110165283914e-06, +-1.878271420824437880e-06, +-1.882313127139590645e-06, +-1.886351223007548589e-06, +-1.890385702332393889e-06, +-1.894416559025293731e-06, +-1.898443787003599490e-06, +-1.902467380191573693e-06, +-1.906487332520236073e-06, +-1.910503637927164090e-06, +-1.914516290357269665e-06, +-1.918525283761676434e-06, +-1.922530612098477633e-06, +-1.926532269332571557e-06, +-1.930530249435638276e-06, +-1.934524546385996051e-06, +-1.938515154169327254e-06, +-1.942502066777592035e-06, +-1.946485278209777535e-06, +-1.950464782471711952e-06, +-1.954440573575891332e-06, +-1.958412645542238925e-06, +-1.962380992396979062e-06, +-1.966345608173424469e-06, +-1.970306486911761118e-06, +-1.974263622659070679e-06, +-1.978217009469177629e-06, +-1.982166641403348472e-06, +-1.986112512529254979e-06, +-1.990054616921668751e-06, +-1.993992948662290115e-06, +-1.997927501839801494e-06, +-2.001858270549638281e-06, +-2.005785248894759214e-06, +-2.009708430984565988e-06, +-2.013627810935599939e-06, +-2.017543382871434893e-06, +-2.021455140922438728e-06, +-2.025363079226542056e-06, +-2.029267191928160373e-06, +-2.033167473178901755e-06, +-2.037063917137440227e-06, +-2.040956517969462399e-06, +-2.044845269847562860e-06, +-2.048730166951917989e-06, +-2.052611203469244955e-06, +-2.056488373593523386e-06, +-2.060361671525810718e-06, +-2.064231091474280736e-06, +-2.068096627654015622e-06, +-2.071958274287945745e-06, +-2.075816025604857859e-06, +-2.079669875841927731e-06, +-2.083519819242757568e-06, +-2.087365850058102348e-06, +-2.091207962546399635e-06, +-2.095046150972905610e-06, +-2.098880409609498981e-06, +-2.102710732736334392e-06, +-2.106537114640027229e-06, +-2.110359549614405788e-06, +-2.114178031961191866e-06, +-2.117992555988105523e-06, +-2.121803116011326136e-06, +-2.125609706353540414e-06, +-2.129412321344701338e-06, +-2.133210955322522828e-06, +-2.137005602631628899e-06, +-2.140796257623380866e-06, +-2.144582914657465531e-06, +-2.148365568100155376e-06, +-2.152144212325009909e-06, +-2.155918841713577853e-06, +-2.159689450653684020e-06, +-2.163456033540984042e-06, +-2.167218584778800048e-06, +-2.170977098777262192e-06, +-2.174731569953847792e-06, +-2.178481992734069546e-06, +-2.182228361549582409e-06, +-2.185970670840625594e-06, +-2.189708915054103614e-06, +-2.193443088644312616e-06, +-2.197173186073618006e-06, +-2.200899201810755725e-06, +-2.204621130332372579e-06, +-2.208338966122873771e-06, +-2.212052703673580951e-06, +-2.215762337483399682e-06, +-2.219467862058672048e-06, +-2.223169271913024196e-06, +-2.226866561568040994e-06, +-2.230559725552250015e-06, +-2.234248758401819069e-06, +-2.237933654660388069e-06, +-2.241614408879106295e-06, +-2.245291015616398620e-06, +-2.248963469438742659e-06, +-2.252631764919584987e-06, +-2.256295896640069595e-06, +-2.259955859188854925e-06, +-2.263611647162138859e-06, +-2.267263255163493125e-06, +-2.270910677804519746e-06, +-2.274553909703887120e-06, +-2.278192945487996204e-06, +-2.281827779790800106e-06, +-2.285458407253682950e-06, +-2.289084822526093040e-06, +-2.292707020264589095e-06, +-2.296324995133495012e-06, +-2.299938741804724948e-06, +-2.303548254957834144e-06, +-2.307153529279808016e-06, +-2.310754559465785095e-06, +-2.314351340218036351e-06, +-2.317943866246633929e-06, +-2.321532132269317740e-06, +-2.325116133011492072e-06, +-2.328695863206048562e-06, +-2.332271317594061183e-06, +-2.335842490923795642e-06, +-2.339409377951370914e-06, +-2.342971973440590255e-06, +-2.346530272162833206e-06, +-2.350084268897658262e-06, +-2.353633958431861387e-06, +-2.357179335560139247e-06, +-2.360720395084905401e-06, +-2.364257131816337735e-06, +-2.367789540572191271e-06, +-2.371317616178466046e-06, +-2.374841353468463523e-06, +-2.378360747283400687e-06, +-2.381875792472266899e-06, +-2.385386483891864126e-06, +-2.388892816406607046e-06, +-2.392394784889382782e-06, +-2.395892384219725125e-06, +-2.399385609286159123e-06, +-2.402874454984352850e-06, +-2.406358916217817905e-06, +-2.409838987898399423e-06, +-2.413314664945450215e-06, +-2.416785942285709640e-06, +-2.420252814854736368e-06, +-2.423715277595299858e-06, +-2.427173325458084245e-06, +-2.430626953402265594e-06, +-2.434076156393792421e-06, +-2.437520929407633719e-06, +-2.440961267426042966e-06, +-2.444397165439142575e-06, +-2.447828618445493100e-06, +-2.451255621451248747e-06, +-2.454678169470003637e-06, +-2.458096257524271568e-06, +-2.461509880643851672e-06, +-2.464919033866526787e-06, +-2.468323712238643256e-06, +-2.471723910813427447e-06, +-2.475119624653184226e-06, +-2.478510848827566472e-06, +-2.481897578414371706e-06, +-2.485279808499241400e-06, +-2.488657534176449986e-06, +-2.492030750547168013e-06, +-2.495399452721700859e-06, +-2.498763635817724357e-06, +-2.502123294960985295e-06, +-2.505478425285856219e-06, +-2.508829021933832379e-06, +-2.512175080054926784e-06, +-2.515516594807522826e-06, +-2.518853561357596273e-06, +-2.522185974879353516e-06, +-2.525513830555075709e-06, +-2.528837123575000188e-06, +-2.532155849137878238e-06, +-2.535470002450111547e-06, +-2.538779578726389599e-06, +-2.542084573189467746e-06, +-2.545384981070252339e-06, +-2.548680797607608876e-06, +-2.551972018049010401e-06, +-2.555258637649585866e-06, +-2.558540651672786324e-06, +-2.561818055390182907e-06, +-2.565090844081543484e-06, +-2.568359013034631495e-06, +-2.571622557545818349e-06, +-2.574881472919241055e-06, +-2.578135754467340932e-06, +-2.581385397510766625e-06, +-2.584630397378200463e-06, +-2.587870749406992464e-06, +-2.591106448942253160e-06, +-2.594337491337446101e-06, +-2.597563871954283664e-06, +-2.600785586162687249e-06, +-2.604002629340674618e-06, +-2.607214996874957905e-06, +-2.610422684160043640e-06, +-2.613625686598848118e-06, +-2.616823999602558490e-06, +-2.620017618590610312e-06, +-2.623206538990586328e-06, +-2.626390756238793720e-06, +-2.629570265779374301e-06, +-2.632745063064914803e-06, +-2.635915143556302459e-06, +-2.639080502722591591e-06, +-2.642241136041571126e-06, +-2.645397038999092050e-06, +-2.648548207088854382e-06, +-2.651694635813797996e-06, +-2.654836320684592793e-06, +-2.657973257220265498e-06, +-2.661105440948626992e-06, +-2.664232867405404102e-06, +-2.667355532134853702e-06, +-2.670473430689577633e-06, +-2.673586558630412591e-06, +-2.676694911527017119e-06, +-2.679798484957153750e-06, +-2.682897274506525948e-06, +-2.685991275770127437e-06, +-2.689080484350743371e-06, +-2.692164895859628813e-06, +-2.695244505916834837e-06, +-2.698319310150576646e-06, +-2.701389304197058233e-06, +-2.704454483701778930e-06, +-2.707514844318115054e-06, +-2.710570381707880215e-06, +-2.713621091541937724e-06, +-2.716666969498582337e-06, +-2.719708011265576094e-06, +-2.722744212538598678e-06, +-2.725775569021802218e-06, +-2.728802076428237772e-06, +-2.731823730479177276e-06, +-2.734840526903936937e-06, +-2.737852461441220629e-06, +-2.740859529837652407e-06, +-2.743861727848350373e-06, +-2.746859051237546280e-06, +-2.749851495777004545e-06, +-2.752839057247980588e-06, +-2.755821731439724974e-06, +-2.758799514150177980e-06, +-2.761772401185660001e-06, +-2.764740388361615674e-06, +-2.767703471501082860e-06, +-2.770661646436612871e-06, +-2.773614909008797481e-06, +-2.776563255066770367e-06, +-2.779506680468846619e-06, +-2.782445181081066267e-06, +-2.785378752778470762e-06, +-2.788307391444992435e-06, +-2.791231092972743414e-06, +-2.794149853262596267e-06, +-2.797063668224013743e-06, +-2.799972533774950101e-06, +-2.802876445842419461e-06, +-2.805775400361623787e-06, +-2.808669393276421299e-06, +-2.811558420539848241e-06, +-2.814442478112765321e-06, +-2.817321561965114292e-06, +-2.820195668075741339e-06, +-2.823064792431774509e-06, +-2.825928931029127280e-06, +-2.828788079872395212e-06, +-2.831642234974843251e-06, +-2.834491392358301540e-06, +-2.837335548053691001e-06, +-2.840174698100211035e-06, +-2.843008838545898135e-06, +-2.845837965447530600e-06, +-2.848662074870413385e-06, +-2.851481162888993895e-06, +-2.854295225586048834e-06, +-2.857104259053189035e-06, +-2.859908259390787043e-06, +-2.862707222707926709e-06, +-2.865501145122327811e-06, +-2.868290022760828436e-06, +-2.871073851758638746e-06, +-2.873852628259866558e-06, +-2.876626348417357682e-06, +-2.879395008392613336e-06, +-2.882158604356300055e-06, +-2.884917132487462379e-06, +-2.887670588974065375e-06, +-2.890418970012869699e-06, +-2.893162271809408306e-06, +-2.895900490577893272e-06, +-2.898633622541741805e-06, +-2.901361663932904121e-06, +-2.904084610991749098e-06, +-2.906802459968277649e-06, +-2.909515207120749682e-06, +-2.912222848716283375e-06, +-2.914925381031202884e-06, +-2.917622800350297187e-06, +-2.920315102967309674e-06, +-2.923002285184840733e-06, +-2.925684343314222815e-06, +-2.928361273676025264e-06, +-2.931033072599409305e-06, +-2.933699736422034444e-06, +-2.936361261491198574e-06, +-2.939017644162554721e-06, +-2.941668880800649334e-06, +-2.944314967779288626e-06, +-2.946955901480795303e-06, +-2.949591678296516360e-06, +-2.952222294626679508e-06, +-2.954847746880437646e-06, +-2.957468031475717662e-06, +-2.960083144839870956e-06, +-2.962693083408275415e-06, +-2.965297843626135775e-06, +-2.967897421947054259e-06, +-2.970491814833578181e-06, +-2.973081018757569253e-06, +-2.975665030199588637e-06, +-2.978243845648738554e-06, +-2.980817461603850669e-06, +-2.983385874572214693e-06, +-2.985949081070059499e-06, +-2.988507077623087603e-06, +-2.991059860765098304e-06, +-2.993607427039735971e-06, +-2.996149772999117414e-06, +-2.998686895204476910e-06, +-3.001218790226022200e-06, +-3.003745454642964566e-06, +-3.006266885043393460e-06, +-3.008783078024741113e-06, +-3.011294030193094734e-06, +-3.013799738163545072e-06, +-3.016300198560681926e-06, +-3.018795408017376111e-06, +-3.021285363175905593e-06, +-3.023770060687792007e-06, +-3.026249497213237380e-06, +-3.028723669421593391e-06, +-3.031192573991241514e-06, +-3.033656207609501536e-06, +-3.036114566973093195e-06, +-3.038567648787413231e-06, +-3.041015449766943240e-06, +-3.043457966635679960e-06, +-3.045895196125974837e-06, +-3.048327134979583928e-06, +-3.050753779947609025e-06, +-3.053175127789839938e-06, +-3.055591175275273724e-06, +-3.058001919182003306e-06, +-3.060407356297192055e-06, +-3.062807483416992060e-06, +-3.065202297346975684e-06, +-3.067591794901504105e-06, +-3.069975972904138974e-06, +-3.072354828187509427e-06, +-3.074728357593326489e-06, +-3.077096557972686734e-06, +-3.079459426185501807e-06, +-3.081816959100896954e-06, +-3.084169153597136483e-06, +-3.086516006561620375e-06, +-3.088857514890761891e-06, +-3.091193675490451742e-06, +-3.093524485275388086e-06, +-3.095849941169532661e-06, +-3.098170040105980757e-06, +-3.100484779026885413e-06, +-3.102794154883890673e-06, +-3.105098164637453956e-06, +-3.107396805257300918e-06, +-3.109690073722389026e-06, +-3.111977967020766106e-06, +-3.114260482149594479e-06, +-3.116537616115529591e-06, +-3.118809365934193576e-06, +-3.121075728630073618e-06, +-3.123336701237491374e-06, +-3.125592280799528518e-06, +-3.127842464368472699e-06, +-3.130087249006139419e-06, +-3.132326631783217272e-06, +-3.134560609779712639e-06, +-3.136789180084826865e-06, +-3.139012339796913912e-06, +-3.141230086023811121e-06, +-3.143442415882423322e-06, +-3.145649326498519544e-06, +-3.147850815007748610e-06, +-3.150046878554565518e-06, +-3.152237514292663009e-06, +-3.154422719385299792e-06, +-3.156602491004636042e-06, +-3.158776826332215792e-06, +-3.160945722558821660e-06, +-3.163109176884465538e-06, +-3.165267186518339883e-06, +-3.167419748679311962e-06, +-3.169566860594756218e-06, +-3.171708519502076389e-06, +-3.173844722647502716e-06, +-3.175975467286561631e-06, +-3.178100750684349342e-06, +-3.180220570115039708e-06, +-3.182334922861771588e-06, +-3.184443806217611911e-06, +-3.186547217484469361e-06, +-3.188645153973568289e-06, +-3.190737613005837929e-06, +-3.192824591910776097e-06, +-3.194906088027915410e-06, +-3.196982098705669201e-06, +-3.199052621301766049e-06, +-3.201117653183639413e-06, +-3.203177191727449307e-06, +-3.205231234318938654e-06, +-3.207279778353425238e-06, +-3.209322821235216824e-06, +-3.211360360377931344e-06, +-3.213392393204944124e-06, +-3.215418917148353233e-06, +-3.217439929649872685e-06, +-3.219455428160774837e-06, +-3.221465410141381320e-06, +-3.223469873061419644e-06, +-3.225468814400005832e-06, +-3.227462231645480097e-06, +-3.229450122295819344e-06, +-3.231432483858107776e-06, +-3.233409313848716468e-06, +-3.235380609793837415e-06, +-3.237346369228391289e-06, +-3.239306589696984582e-06, +-3.241261268753765191e-06, +-3.243210403961983227e-06, +-3.245153992894339996e-06, +-3.247092033132916420e-06, +-3.249024522269083684e-06, +-3.250951457903887355e-06, +-3.252872837647462513e-06, +-3.254788659119415760e-06, +-3.256698919948762963e-06, +-3.258603617773900031e-06, +-3.260502750242529226e-06, +-3.262396315012011526e-06, +-3.264284309748879582e-06, +-3.266166732129101566e-06, +-3.268043579838090072e-06, +-3.269914850570643662e-06, +-3.271780542030894779e-06, +-3.273640651932648559e-06, +-3.275495177998861905e-06, +-3.277344117961990349e-06, +-3.279187469563924097e-06, +-3.281025230555875378e-06, +-3.282857398698751559e-06, +-3.284683971762616857e-06, +-3.286504947527047669e-06, +-3.288320323781077093e-06, +-3.290130098323139866e-06, +-3.291934268961051617e-06, +-3.293732833512301091e-06, +-3.295525789803578775e-06, +-3.297313135671080137e-06, +-3.299094868960482754e-06, +-3.300870987526862881e-06, +-3.302641489234693758e-06, +-3.304406371958177221e-06, +-3.306165633580657555e-06, +-3.307919271995077200e-06, +-3.309667285103790402e-06, +-3.311409670818564909e-06, +-3.313146427060856830e-06, +-3.314877551761440061e-06, +-3.316603042860278805e-06, +-3.318322898307346231e-06, +-3.320037116061712640e-06, +-3.321745694091956702e-06, +-3.323448630376355616e-06, +-3.325145922902424743e-06, +-3.326837569667248801e-06, +-3.328523568677378523e-06, +-3.330203917948779415e-06, +-3.331878615507154472e-06, +-3.333547659387508806e-06, +-3.335211047634109410e-06, +-3.336868778301183961e-06, +-3.338520849452157221e-06, +-3.340167259159914461e-06, +-3.341808005507194065e-06, +-3.343443086585733717e-06, +-3.345072500497003085e-06, +-3.346696245352161897e-06, +-3.348314319271609737e-06, +-3.349926720385248207e-06, +-3.351533446832835406e-06, +-3.353134496763044032e-06, +-3.354729868334649345e-06, +-3.356319559715608442e-06, +-3.357903569083380012e-06, +-3.359481894625275432e-06, +-3.361054534537628249e-06, +-3.362621487026548889e-06, +-3.364182750307807765e-06, +-3.365738322606504934e-06, +-3.367288202157196306e-06, +-3.368832387204344264e-06, +-3.370370876001332566e-06, +-3.371903666811674214e-06, +-3.373430757908054728e-06, +-3.374952147572808607e-06, +-3.376467834097767279e-06, +-3.377977815784341271e-06, +-3.379482090943372399e-06, +-3.380980657895461565e-06, +-3.382473514970541437e-06, +-3.383960660508074225e-06, +-3.385442092857389226e-06, +-3.386917810376852310e-06, +-3.388387811434679067e-06, +-3.389852094408715429e-06, +-3.391310657686171702e-06, +-3.392763499663855073e-06, +-3.394210618748141238e-06, +-3.395652013354871910e-06, +-3.397087681909672032e-06, +-3.398517622847491110e-06, +-3.399941834612930589e-06, +-3.401360315660128235e-06, +-3.402773064452777617e-06, +-3.404180079464066272e-06, +-3.405581359176968780e-06, +-3.406976902083794022e-06, +-3.408366706686483763e-06, +-3.409750771496549547e-06, +-3.411129095035082012e-06, +-3.412501675832643742e-06, +-3.413868512429583517e-06, +-3.415229603375611101e-06, +-3.416584947230080576e-06, +-3.417934542561898859e-06, +-3.419278387949511309e-06, +-3.420616481981108396e-06, +-3.421948823254263599e-06, +-3.423275410376190054e-06, +-3.424596241963678724e-06, +-3.425911316643092890e-06, +-3.427220633050319448e-06, +-3.428524189830994643e-06, +-3.429821985640188551e-06, +-3.431114019142563048e-06, +-3.432400289012393832e-06, +-3.433680793933519608e-06, +-3.434955532599315819e-06, +-3.436224503712916580e-06, +-3.437487705986865691e-06, +-3.438745138143347882e-06, +-3.439996798914141380e-06, +-3.441242687040527273e-06, +-3.442482801273603337e-06, +-3.443717140373889320e-06, +-3.444945703111321011e-06, +-3.446168488265816907e-06, +-3.447385494626594655e-06, +-3.448596720992515372e-06, +-3.449802166172198420e-06, +-3.451001828983638965e-06, +-3.452195708254542987e-06, +-3.453383802822170570e-06, +-3.454566111533311344e-06, +-3.455742633244564851e-06, +-3.456913366821990296e-06, +-3.458078311141064199e-06, +-3.459237465087203432e-06, +-3.460390827555202794e-06, +-3.461538397449454814e-06, +-3.462680173684175484e-06, +-3.463816155182815576e-06, +-3.464946340878652713e-06, +-3.466070729714627468e-06, +-3.467189320643128223e-06, +-3.468302112626141511e-06, +-3.469409104635486649e-06, +-3.470510295652174530e-06, +-3.471605684667228826e-06, +-3.472695270681043085e-06, +-3.473779052703611552e-06, +-3.474857029754776498e-06, +-3.475929200863608198e-06, +-3.476995565068971589e-06, +-3.478056121419458512e-06, +-3.479110868973067534e-06, +-3.480159806797425444e-06, +-3.481202933969976566e-06, +-3.482240249577394920e-06, +-3.483271752716304620e-06, +-3.484297442492781399e-06, +-3.485317318022499990e-06, +-3.486331378430763350e-06, +-3.487339622852494189e-06, +-3.488342050432137561e-06, +-3.489338660323936150e-06, +-3.490329451691561387e-06, +-3.491314423708288789e-06, +-3.492293575557213098e-06, +-3.493266906430707034e-06, +-3.494234415530949418e-06, +-3.495196102069774397e-06, +-3.496151965268519407e-06, +-3.497102004358115800e-06, +-3.498046218579163812e-06, +-3.498984607181788138e-06, +-3.499917169425861554e-06, +-3.500843904580733439e-06, +-3.501764811925388173e-06, +-3.502679890748444711e-06, +-3.503589140348101953e-06, +-3.504492560032112903e-06, +-3.505390149118006177e-06, +-3.506281906932742524e-06, +-3.507167832812950725e-06, +-3.508047926104864072e-06, +-3.508922186164301302e-06, +-3.509790612356666602e-06, +-3.510653204057100803e-06, +-3.511509960650182797e-06, +-3.512360881530176033e-06, +-3.513205966100922204e-06, +-3.514045213775822196e-06, +-3.514878623978022006e-06, +-3.515706196140155675e-06, +-3.516527929704451582e-06, +-3.517343824122778614e-06, +-3.518153878856596611e-06, +-3.518958093376914862e-06, +-3.519756467164486501e-06, +-3.520548999709517126e-06, +-3.521335690511861309e-06, +-3.522116539080976437e-06, +-3.522891544935873156e-06, +-3.523660707605289015e-06, +-3.524424026627421229e-06, +-3.525181501550107940e-06, +-3.525933131930801538e-06, +-3.526678917336500475e-06, +-3.527418857343826343e-06, +-3.528152951539070464e-06, +-3.528881199518043537e-06, +-3.529603600886023975e-06, +-3.530320155258143723e-06, +-3.531030862258935945e-06, +-3.531735721522553982e-06, +-3.532434732692836151e-06, +-3.533127895423113465e-06, +-3.533815209376327798e-06, +-3.534496674225000542e-06, +-3.535172289651228797e-06, +-3.535842055346791249e-06, +-3.536505971012993165e-06, +-3.537164036360563476e-06, +-3.537816251110114717e-06, +-3.538462614991635231e-06, +-3.539103127744707278e-06, +-3.539737789118676024e-06, +-3.540366598872144700e-06, +-3.540989556773611578e-06, +-3.541606662600957093e-06, +-3.542217916141744956e-06, +-3.542823317193013369e-06, +-3.543422865561538446e-06, +-3.544016561063436533e-06, +-3.544604403524632620e-06, +-3.545186392780487642e-06, +-3.545762528675920453e-06, +-3.546332811065586130e-06, +-3.546897239813477016e-06, +-3.547455814793273816e-06, +-3.548008535888284191e-06, +-3.548555402991283085e-06, +-3.549096416004596165e-06, +-3.549631574840289977e-06, +-3.550160879419672195e-06, +-3.550684329673964166e-06, +-3.551201925543732555e-06, +-3.551713666979118036e-06, +-3.552219553939953038e-06, +-3.552719586395447912e-06, +-3.553213764324433187e-06, +-3.553702087715384981e-06, +-3.554184556566247120e-06, +-3.554661170884479848e-06, +-3.555131930687233040e-06, +-3.555596836001026875e-06, +-3.556055886862017377e-06, +-3.556509083315970160e-06, +-3.556956425418102455e-06, +-3.557397913233185601e-06, +-3.557833546835581044e-06, +-3.558263326309116669e-06, +-3.558687251747269763e-06, +-3.559105323252959064e-06, +-3.559517540938672664e-06, +-3.559923904926427778e-06, +-3.560324415347787680e-06, +-3.560719072343806649e-06, +-3.561107876065160413e-06, +-3.561490826671976313e-06, +-3.561867924333926485e-06, +-3.562239169230191855e-06, +-3.562604561549488821e-06, +-3.562964101490107799e-06, +-3.563317789259791663e-06, +-3.563665625075838247e-06, +-3.564007609165046975e-06, +-3.564343741763739192e-06, +-3.564674023117723860e-06, +-3.564998453482398353e-06, +-3.565317033122593874e-06, +-3.565629762312673712e-06, +-3.565936641336531549e-06, +-3.566237670487538514e-06, +-3.566532850068569028e-06, +-3.566822180392033403e-06, +-3.567105661779813478e-06, +-3.567383294563295647e-06, +-3.567655079083349685e-06, +-3.567921015690359664e-06, +-3.568181104744212095e-06, +-3.568435346614271366e-06, +-3.568683741679380161e-06, +-3.568926290327875136e-06, +-3.569162992957583949e-06, +-3.569393849975797732e-06, +-3.569618861799333354e-06, +-3.569838028854465651e-06, +-3.570051351576929969e-06, +-3.570258830411950119e-06, +-3.570460465814217624e-06, +-3.570656258247892561e-06, +-3.570846208186663706e-06, +-3.571030316113552446e-06, +-3.571208582521199495e-06, +-3.571381007911627304e-06, +-3.571547592796301050e-06, +-3.571708337696216297e-06, +-3.571863243141785925e-06, +-3.572012309672818526e-06, +-3.572155537838695009e-06, +-3.572292928198158119e-06, +-3.572424481319422119e-06, +-3.572550197780194396e-06, +-3.572670078167521300e-06, +-3.572784123077999474e-06, +-3.572892333117593749e-06, +-3.572994708901760804e-06, +-3.573091251055303483e-06, +-3.573181960212598216e-06, +-3.573266837017299412e-06, +-3.573345882122592292e-06, +-3.573419096191060757e-06, +-3.573486479894688230e-06, +-3.573548033914920341e-06, +-3.573603758942562856e-06, +-3.573653655677886290e-06, +-3.573697724830583125e-06, +-3.573735967119715725e-06, +-3.573768383273771388e-06, +-3.573794974030677593e-06, +-3.573815740137686808e-06, +-3.573830682351540384e-06, +-3.573839801438306779e-06, +-3.573843098173503523e-06, +-3.573840573342043438e-06, +-3.573832227738161366e-06, +-3.573818062165543768e-06, +-3.573798077437263923e-06, +-3.573772274375755246e-06, +-3.573740653812812139e-06, +-3.573703216589686548e-06, +-3.573659963556906704e-06, +-3.573610895574431698e-06, +-3.573556013511598128e-06, +-3.573495318247081549e-06, +-3.573428810668907915e-06, +-3.573356491674512870e-06, +-3.573278362170668900e-06, +-3.573194423073496347e-06, +-3.573104675308479928e-06, +-3.573009119810453059e-06, +-3.572907757523597015e-06, +-3.572800589401438384e-06, +-3.572687616406853303e-06, +-3.572568839512021297e-06, +-3.572444259698530307e-06, +-3.572313877957236512e-06, +-3.572177695288364696e-06, +-3.572035712701438795e-06, +-3.571887931215328060e-06, +-3.571734351858227152e-06, +-3.571574975667633268e-06, +-3.571409803690384688e-06, +-3.571238836982605290e-06, +-3.571062076609754524e-06, +-3.570879523646571087e-06, +-3.570691179177138566e-06, +-3.570497044294799468e-06, +-3.570297120102211542e-06, +-3.570091407711337617e-06, +-3.569879908243435441e-06, +-3.569662622829027183e-06, +-3.569439552607951103e-06, +-3.569210698729295487e-06, +-3.568976062351461745e-06, +-3.568735644642099619e-06, +-3.568489446778144025e-06, +-3.568237469945828182e-06, +-3.567979715340596371e-06, +-3.567716184167215741e-06, +-3.567446877639653910e-06, +-3.567171796981190779e-06, +-3.566890943424327473e-06, +-3.566604318210818528e-06, +-3.566311922591689254e-06, +-3.566013757827185341e-06, +-3.565709825186808853e-06, +-3.565400125949287738e-06, +-3.565084661402591919e-06, +-3.564763432843913816e-06, +-3.564436441579683165e-06, +-3.564103688925549655e-06, +-3.563765176206401990e-06, +-3.563420904756299697e-06, +-3.563070875918563761e-06, +-3.562715091045716488e-06, +-3.562353551499459055e-06, +-3.561986258650735887e-06, +-3.561613213879653764e-06, +-3.561234418575549159e-06, +-3.560849874136936149e-06, +-3.560459581971511919e-06, +-3.560063543496176242e-06, +-3.559661760137003951e-06, +-3.559254233329236897e-06, +-3.558840964517300881e-06, +-3.558421955154817944e-06, +-3.557997206704536482e-06, +-3.557566720638396469e-06, +-3.557130498437509977e-06, +-3.556688541592089174e-06, +-3.556240851601571689e-06, +-3.555787429974516002e-06, +-3.555328278228581112e-06, +-3.554863397890649365e-06, +-3.554392790496706588e-06, +-3.553916457591835322e-06, +-3.553434400730325356e-06, +-3.552946621475515753e-06, +-3.552453121399940968e-06, +-3.551953902085186427e-06, +-3.551448965121995249e-06, +-3.550938312110243267e-06, +-3.550421944658873798e-06, +-3.549899864385937460e-06, +-3.549372072918592591e-06, +-3.548838571893117532e-06, +-3.548299362954841175e-06, +-3.547754447758225963e-06, +-3.547203827966775995e-06, +-3.546647505253117916e-06, +-3.546085481298909010e-06, +-3.545517757794926144e-06, +-3.544944336440995035e-06, +-3.544365218946012702e-06, +-3.543780407027897910e-06, +-3.543189902413684771e-06, +-3.542593706839431684e-06, +-3.541991822050254795e-06, +-3.541384249800296236e-06, +-3.540770991852771128e-06, +-3.540152049979893897e-06, +-3.539527425962935021e-06, +-3.538897121592184606e-06, +-3.538261138666966791e-06, +-3.537619478995645673e-06, +-3.536972144395525358e-06, +-3.536319136693004122e-06, +-3.535660457723435071e-06, +-3.534996109331220167e-06, +-3.534326093369699686e-06, +-3.533650411701304260e-06, +-3.532969066197342699e-06, +-3.532282058738176902e-06, +-3.531589391213130372e-06, +-3.530891065520523802e-06, +-3.530187083567624665e-06, +-3.529477447270707363e-06, +-3.528762158554959623e-06, +-3.528041219354561275e-06, +-3.527314631612638935e-06, +-3.526582397281288449e-06, +-3.525844518321566003e-06, +-3.525100996703376735e-06, +-3.524351834405674213e-06, +-3.523597033416282982e-06, +-3.522836595731991733e-06, +-3.522070523358511807e-06, +-3.521298818310456435e-06, +-3.520521482611338199e-06, +-3.519738518293606304e-06, +-3.518949927398632176e-06, +-3.518155711976652710e-06, +-3.517355874086868106e-06, +-3.516550415797266529e-06, +-3.515739339184790553e-06, +-3.514922646335318527e-06, +-3.514100339343489237e-06, +-3.513272420312900539e-06, +-3.512438891356019566e-06, +-3.511599754594086178e-06, +-3.510755012157305649e-06, +-3.509904666184764820e-06, +-3.509048718824269467e-06, +-3.508187172232559865e-06, +-3.507320028575250235e-06, +-3.506447290026637305e-06, +-3.505568958770087834e-06, +-3.504685036997575283e-06, +-3.503795526910027097e-06, +-3.502900430717167581e-06, +-3.501999750637464117e-06, +-3.501093488898239390e-06, +-3.500181647735721792e-06, +-3.499264229394742602e-06, +-3.498341236129066759e-06, +-3.497412670201233613e-06, +-3.496478533882458676e-06, +-3.495538829452939817e-06, +-3.494593559201431635e-06, +-3.493642725425592313e-06, +-3.492686330431805748e-06, +-3.491724376535245070e-06, +-3.490756866059739241e-06, +-3.489783801338042408e-06, +-3.488805184711465871e-06, +-3.487821018530177079e-06, +-3.486831305153079783e-06, +-3.485836046947669608e-06, +-3.484835246290376687e-06, +-3.483828905566236582e-06, +-3.482817027168958896e-06, +-3.481799613501027647e-06, +-3.480776666973619527e-06, +-3.479748190006612376e-06, +-3.478714185028607201e-06, +-3.477674654476773597e-06, +-3.476629600797090298e-06, +-3.475579026444191024e-06, +-3.474522933881349228e-06, +-3.473461325580528924e-06, +-3.472394204022380447e-06, +-3.471321571696123141e-06, +-3.470243431099711801e-06, +-3.469159784739724018e-06, +-3.468070635131395330e-06, +-3.466975984798582375e-06, +-3.465875836273794658e-06, +-3.464770192098084857e-06, +-3.463659054821217808e-06, +-3.462542427001545144e-06, +-3.461420311206026893e-06, +-3.460292710010292040e-06, +-3.459159625998394588e-06, +-3.458021061763150667e-06, +-3.456877019905892904e-06, +-3.455727503036566131e-06, +-3.454572513773678260e-06, +-3.453412054744338399e-06, +-3.452246128584121328e-06, +-3.451074737937280102e-06, +-3.449897885456571140e-06, +-3.448715573803323680e-06, +-3.447527805647378374e-06, +-3.446334583667192737e-06, +-3.445135910549606100e-06, +-3.443931788990123788e-06, +-3.442722221692729924e-06, +-3.441507211369926398e-06, +-3.440286760742768859e-06, +-3.439060872540691807e-06, +-3.437829549501705951e-06, +-3.436592794372478676e-06, +-3.435350609907853353e-06, +-3.434102998871368993e-06, +-3.432849964035042137e-06, +-3.431591508179210575e-06, +-3.430327634092826426e-06, +-3.429058344573258349e-06, +-3.427783642426318230e-06, +-3.426503530466312421e-06, +-3.425218011515860482e-06, +-3.423927088406126841e-06, +-3.422630763976817405e-06, +-3.421329041075811950e-06, +-3.420021922559563496e-06, +-3.418709411292984381e-06, +-3.417391510149220526e-06, +-3.416068222009901311e-06, +-3.414739549765268746e-06, +-3.413405496313592175e-06, +-3.412066064561742135e-06, +-3.410721257424991308e-06, +-3.409371077826755751e-06, +-3.408015528699187817e-06, +-3.406654612982446440e-06, +-3.405288333625252785e-06, +-3.403916693584668751e-06, +-3.402539695825956364e-06, +-3.401157343322807744e-06, +-3.399769639057401434e-06, +-3.398376586019949239e-06, +-3.396978187209170561e-06, +-3.395574445632094196e-06, +-3.394165364303882152e-06, +-3.392750946248336594e-06, +-3.391331194497179869e-06, +-3.389906112090662678e-06, +-3.388475702077248973e-06, +-3.387039967513733701e-06, +-3.385598911464972174e-06, +-3.384152537004461558e-06, +-3.382700847213577694e-06, +-3.381243845182175650e-06, +-3.379781534008349157e-06, +-3.378313916798200642e-06, +-3.376840996666434155e-06, +-3.375362776735764557e-06, +-3.373879260137054321e-06, +-3.372390450009556625e-06, +-3.370896349500646850e-06, +-3.369396961765921677e-06, +-3.367892289969226194e-06, +-3.366382337282433666e-06, +-3.364867106885758517e-06, +-3.363346601967591580e-06, +-3.361820825724304853e-06, +-3.360289781360726691e-06, +-3.358753472089718284e-06, +-3.357211901132127919e-06, +-3.355665071717178076e-06, +-3.354112987082143553e-06, +-3.352555650472417957e-06, +-3.350993065141555212e-06, +-3.349425234351273793e-06, +-3.347852161371238614e-06, +-3.346273849479375278e-06, +-3.344690301961675258e-06, +-3.343101522112221311e-06, +-3.341507513233234909e-06, +-3.339908278634841190e-06, +-3.338303821635433601e-06, +-3.336694145561407512e-06, +-3.335079253747211881e-06, +-3.333459149535368739e-06, +-3.331833836276496054e-06, +-3.330203317329078193e-06, +-3.328567596059813200e-06, +-3.326926675843356145e-06, +-3.325280560062435171e-06, +-3.323629252107796010e-06, +-3.321972755378049097e-06, +-3.320311073279963486e-06, +-3.318644209228277118e-06, +-3.316972166645687079e-06, +-3.315294948962881788e-06, +-3.313612559618606639e-06, +-3.311925002059365429e-06, +-3.310232279739753655e-06, +-3.308534396122538144e-06, +-3.306831354678020083e-06, +-3.305123158884719414e-06, +-3.303409812229083467e-06, +-3.301691318205307376e-06, +-3.299967680315688574e-06, +-3.298238902070381145e-06, +-3.296504986987439874e-06, +-3.294765938592923160e-06, +-3.293021760420528368e-06, +-3.291272456012012805e-06, +-3.289518028917210240e-06, +-3.287758482693438821e-06, +-3.285993820906117299e-06, +-3.284224047128568510e-06, +-3.282449164941722495e-06, +-3.280669177934592530e-06, +-3.278884089703966382e-06, +-3.277093903854419017e-06, +-3.275298623998427369e-06, +-3.273498253756295383e-06, +-3.271692796755873217e-06, +-3.269882256633325085e-06, +-3.268066637032109845e-06, +-3.266245941603756464e-06, +-3.264420174007587033e-06, +-3.262589337910468169e-06, +-3.260753436987211231e-06, +-3.258912474920581220e-06, +-3.257066455400680558e-06, +-3.255215382125642387e-06, +-3.253359258801337920e-06, +-3.251498089141093529e-06, +-3.249631876866458581e-06, +-3.247760625706215259e-06, +-3.245884339397139618e-06, +-3.244003021683696234e-06, +-3.242116676317790439e-06, +-3.240225307059422664e-06, +-3.238328917676092119e-06, +-3.236427511942794258e-06, +-3.234521093642465890e-06, +-3.232609666565646795e-06, +-3.230693234510281087e-06, +-3.228771801282382145e-06, +-3.226845370695398597e-06, +-3.224913946570250755e-06, +-3.222977532735724896e-06, +-3.221036133028118368e-06, +-3.219089751291400938e-06, +-3.217138391377166944e-06, +-3.215182057144398966e-06, +-3.213220752459915065e-06, +-3.211254481198092222e-06, +-3.209283247240580890e-06, +-3.207307054477069866e-06, +-3.205325906804588333e-06, +-3.203339808127533391e-06, +-3.201348762358105432e-06, +-3.199352773415957888e-06, +-3.197351845228275164e-06, +-3.195345981729845477e-06, +-3.193335186862731790e-06, +-3.191319464576744449e-06, +-3.189298818829134563e-06, +-3.187273253584612214e-06, +-3.185242772815404899e-06, +-3.183207380501301156e-06, +-3.181167080629281680e-06, +-3.179121877194069894e-06, +-3.177071774197740619e-06, +-3.175016775649845436e-06, +-3.172956885567361019e-06, +-3.170892107974778493e-06, +-3.168822446903761233e-06, +-3.166747906393651394e-06, +-3.164668490491119659e-06, +-3.162584203250227496e-06, +-3.160495048732531769e-06, +-3.158401031006720088e-06, +-3.156302154149104631e-06, +-3.154198422243296881e-06, +-3.152089839380260568e-06, +-3.149976409658331996e-06, +-3.147858137183274680e-06, +-3.145735026067933325e-06, +-3.143607080432757304e-06, +-3.141474304405427107e-06, +-3.139336702120933117e-06, +-3.137194277721599332e-06, +-3.135047035357124863e-06, +-3.132894979184237501e-06, +-3.130738113367233277e-06, +-3.128576442077583015e-06, +-3.126409969494041596e-06, +-3.124238699802715305e-06, +-3.122062637196684044e-06, +-3.119881785876493043e-06, +-3.117696150050152432e-06, +-3.115505733932382114e-06, +-3.113310541745504111e-06, +-3.111110577719041073e-06, +-3.108905846089463014e-06, +-3.106696351100704850e-06, +-3.104482097003798360e-06, +-3.102263088056977225e-06, +-3.100039328525652456e-06, +-3.097810822682469997e-06, +-3.095577574806915585e-06, +-3.093339589186227845e-06, +-3.091096870114178149e-06, +-3.088849421892014201e-06, +-3.086597248828155111e-06, +-3.084340355237829289e-06, +-3.082078745443567836e-06, +-3.079812423775306617e-06, +-3.077541394569504921e-06, +-3.075265662170092443e-06, +-3.072985230928073299e-06, +-3.070700105201151212e-06, +-3.068410289354755690e-06, +-3.066115787760728283e-06, +-3.063816604798297938e-06, +-3.061512744853785809e-06, +-3.059204212320135576e-06, +-3.056891011597883301e-06, +-3.054573147094324790e-06, +-3.052250623223524915e-06, +-3.049923444406895287e-06, +-3.047591615072781753e-06, +-3.045255139656184448e-06, +-3.042914022599614153e-06, +-3.040568268352285065e-06, +-3.038217881370168585e-06, +-3.035862866116482484e-06, +-3.033503227061279239e-06, +-3.031138968681555728e-06, +-3.028770095461328616e-06, +-3.026396611891253609e-06, +-3.024018522469178148e-06, +-3.021635831699844947e-06, +-3.019248544094507012e-06, +-3.016856664171892418e-06, +-3.014460196457310684e-06, +-3.012059145482735361e-06, +-3.009653515787301665e-06, +-3.007243311916907945e-06, +-3.004828538424279635e-06, +-3.002409199869087841e-06, +-2.999985300817524128e-06, +-2.997556845842897679e-06, +-2.995123839525227870e-06, +-2.992686286451350578e-06, +-2.990244191214886412e-06, +-2.987797558416317371e-06, +-2.985346392662642950e-06, +-2.982890698567901910e-06, +-2.980430480752792387e-06, +-2.977965743844779039e-06, +-2.975496492478054929e-06, +-2.973022731293665618e-06, +-2.970544464939062776e-06, +-2.968061698068717436e-06, +-2.965574435343726122e-06, +-2.963082681431858284e-06, +-2.960586441007709188e-06, +-2.958085718752204822e-06, +-2.955580519353312983e-06, +-2.953070847505514730e-06, +-2.950556707909965316e-06, +-2.948038105274486143e-06, +-2.945515044313605845e-06, +-2.942987529748196909e-06, +-2.940455566306070714e-06, +-2.937919158721525219e-06, +-2.935378311735491075e-06, +-2.932833030095486306e-06, +-2.930283318555715841e-06, +-2.927729181876651379e-06, +-2.925170624825644645e-06, +-2.922607652176527168e-06, +-2.920040268709651357e-06, +-2.917468479212057795e-06, +-2.914892288476975911e-06, +-2.912311701304388105e-06, +-2.909726722501102167e-06, +-2.907137356879814884e-06, +-2.904543609260133986e-06, +-2.901945484468169025e-06, +-2.899342987336198074e-06, +-2.896736122703280972e-06, +-2.894124895414849367e-06, +-2.891509310322781672e-06, +-2.888889372285511911e-06, +-2.886265086167605783e-06, +-2.883636456840261250e-06, +-2.881003489181424167e-06, +-2.878366188074818845e-06, +-2.875724558410987786e-06, +-2.873078605086876216e-06, +-2.870428333005384850e-06, +-2.867773747076437997e-06, +-2.865114852216018795e-06, +-2.862451653346221726e-06, +-2.859784155395854852e-06, +-2.857112363300050186e-06, +-2.854436281999829582e-06, +-2.851755916443319809e-06, +-2.849071271584182569e-06, +-2.846382352382838467e-06, +-2.843689163806000292e-06, +-2.840991710826216888e-06, +-2.838289998422991663e-06, +-2.835584031581786481e-06, +-2.832873815294063161e-06, +-2.830159354557880216e-06, +-2.827440654377560392e-06, +-2.824717719763195997e-06, +-2.821990555731888964e-06, +-2.819259167306192726e-06, +-2.816523559515283246e-06, +-2.813783737394456299e-06, +-2.811039705985166861e-06, +-2.808291470335076964e-06, +-2.805539035498123461e-06, +-2.802782406534034369e-06, +-2.800021588509092045e-06, +-2.797256586495689768e-06, +-2.794487405571875606e-06, +-2.791714050822549701e-06, +-2.788936527338369902e-06, +-2.786154840215866537e-06, +-2.783368994558010349e-06, +-2.780578995473754251e-06, +-2.777784848078146406e-06, +-2.774986557492381046e-06, +-2.772184128843407571e-06, +-2.769377567264542526e-06, +-2.766566877895173989e-06, +-2.763752065880232597e-06, +-2.760933136371387136e-06, +-2.758110094525986591e-06, +-2.755282945507118178e-06, +-2.752451694484232018e-06, +-2.749616346632665538e-06, +-2.746776907133702337e-06, +-2.743933381174630628e-06, +-2.741085773948787289e-06, +-2.738234090655111470e-06, +-2.735378336498850604e-06, +-2.732518516691068271e-06, +-2.729654636448726368e-06, +-2.726786700994842229e-06, +-2.723914715557961773e-06, +-2.721038685372898115e-06, +-2.718158615680222925e-06, +-2.715274511726384585e-06, +-2.712386378763703958e-06, +-2.709494222050470948e-06, +-2.706598046850461693e-06, +-2.703697858433657690e-06, +-2.700793662075748173e-06, +-2.697885463058231324e-06, +-2.694973266668560815e-06, +-2.692057078199606671e-06, +-2.689136902950393456e-06, +-2.686212746225621280e-06, +-2.683284613335747537e-06, +-2.680352509597002147e-06, +-2.677416440331482432e-06, +-2.674476410866666487e-06, +-2.671532426536020508e-06, +-2.668584492679093234e-06, +-2.665632614640413534e-06, +-2.662676797770708018e-06, +-2.659717047426401287e-06, +-2.656753368969235613e-06, +-2.653785767766993038e-06, +-2.650814249193021033e-06, +-2.647838818626300263e-06, +-2.644859481451612296e-06, +-2.641876243058967860e-06, +-2.638889108844283618e-06, +-2.635898084209467724e-06, +-2.632903174561278863e-06, +-2.629904385312579863e-06, +-2.626901721881842607e-06, +-2.623895189692592373e-06, +-2.620884794174827045e-06, +-2.617870540763209960e-06, +-2.614852434898464980e-06, +-2.611830482026747564e-06, +-2.608804687599852292e-06, +-2.605775057074608932e-06, +-2.602741595914234305e-06, +-2.599704309586575960e-06, +-2.596663203565462346e-06, +-2.593618283330235672e-06, +-2.590569554365182280e-06, +-2.587517022160820556e-06, +-2.584460692212757436e-06, +-2.581400570021780311e-06, +-2.578336661094493992e-06, +-2.575268970942944632e-06, +-2.572197505084050516e-06, +-2.569122269041080983e-06, +-2.566043268341762035e-06, +-2.562960508519749328e-06, +-2.559873995113936994e-06, +-2.556783733668587237e-06, +-2.553689729733326095e-06, +-2.550591988863250594e-06, +-2.547490516618401042e-06, +-2.544385318564571221e-06, +-2.541276400272821761e-06, +-2.538163767319051124e-06, +-2.535047425285214054e-06, +-2.531927379758158607e-06, +-2.528803636329768449e-06, +-2.525676200597587543e-06, +-2.522545078164266190e-06, +-2.519410274637733403e-06, +-2.516271795631280757e-06, +-2.513129646763035117e-06, +-2.509983833656732399e-06, +-2.506834361941200881e-06, +-2.503681237250453955e-06, +-2.500524465223717228e-06, +-2.497364051505503064e-06, +-2.494200001745114221e-06, +-2.491032321597420584e-06, +-2.487861016722295035e-06, +-2.484686092784749829e-06, +-2.481507555454944641e-06, +-2.478325410408284820e-06, +-2.475139663324879291e-06, +-2.471950319890344384e-06, +-2.468757385795279951e-06, +-2.465560866735323147e-06, +-2.462360768411345789e-06, +-2.459157096528872873e-06, +-2.455949856798876662e-06, +-2.452739054937243903e-06, +-2.449524696664896109e-06, +-2.446306787707759063e-06, +-2.443085333796934766e-06, +-2.439860340668091573e-06, +-2.436631814062313346e-06, +-2.433399759725523892e-06, +-2.430164183408603430e-06, +-2.426925090867567743e-06, +-2.423682487862924004e-06, +-2.420436380160585996e-06, +-2.417186773531215973e-06, +-2.413933673750422857e-06, +-2.410677086598708882e-06, +-2.407417017861626715e-06, +-2.404153473329206015e-06, +-2.400886458796623015e-06, +-2.397615980064346209e-06, +-2.394342042936884013e-06, +-2.391064653224128163e-06, +-2.387783816740822199e-06, +-2.384499539306122279e-06, +-2.381211826744419649e-06, +-2.377920684884773976e-06, +-2.374626119561039981e-06, +-2.371328136612022022e-06, +-2.368026741880862113e-06, +-2.364721941215758206e-06, +-2.361413740470081509e-06, +-2.358102145501116522e-06, +-2.354787162171451016e-06, +-2.351468796348387350e-06, +-2.348147053903398248e-06, +-2.344821940713645109e-06, +-2.341493462659981546e-06, +-2.338161625628537767e-06, +-2.334826435509976450e-06, +-2.331487898199747283e-06, +-2.328146019597405096e-06, +-2.324800805608139184e-06, +-2.321452262140799294e-06, +-2.318100395109392335e-06, +-2.314745210432569919e-06, +-2.311386714033006642e-06, +-2.308024911838821404e-06, +-2.304659809782312788e-06, +-2.301291413800036144e-06, +-2.297919729833564219e-06, +-2.294544763829003081e-06, +-2.291166521736452135e-06, +-2.287785009511520312e-06, +-2.284400233113353753e-06, +-2.281012198506179102e-06, +-2.277620911658712700e-06, +-2.274226378543615098e-06, +-2.270828605138857322e-06, +-2.267427597426475306e-06, +-2.264023361392662222e-06, +-2.260615903028498626e-06, +-2.257205228329496744e-06, +-2.253791343295033819e-06, +-2.250374253929750554e-06, +-2.246953966242303436e-06, +-2.243530486245407510e-06, +-2.240103819956624543e-06, +-2.236673973397750620e-06, +-2.233240952594934307e-06, +-2.229804763578838852e-06, +-2.226365412384030210e-06, +-2.222922905049849906e-06, +-2.219477247619814492e-06, +-2.216028446141751916e-06, +-2.212576506667801949e-06, +-2.209121435254535613e-06, +-2.205663237962365226e-06, +-2.202201920856434208e-06, +-2.198737490005965714e-06, +-2.195269951484477353e-06, +-2.191799311369848110e-06, +-2.188325575743737277e-06, +-2.184848750692487390e-06, +-2.181368842306497428e-06, +-2.177885856680350712e-06, +-2.174399799912832267e-06, +-2.170910678107054615e-06, +-2.167418497369849593e-06, +-2.163923263812636999e-06, +-2.160424983550857067e-06, +-2.156923662704070849e-06, +-2.153419307395962753e-06, +-2.149911923754485810e-06, +-2.146401517911259009e-06, +-2.142888096002417295e-06, +-2.139371664168051257e-06, +-2.135852228552319361e-06, +-2.132329795303579236e-06, +-2.128804370573798569e-06, +-2.125275960519443635e-06, +-2.121744571300829208e-06, +-2.118210209082337509e-06, +-2.114672880032319536e-06, +-2.111132590323291145e-06, +-2.107589346131294393e-06, +-2.104043153636804282e-06, +-2.100494019024119744e-06, +-2.096941948481473334e-06, +-2.093386948201070613e-06, +-2.089829024379183748e-06, +-2.086268183215402311e-06, +-2.082704430914296850e-06, +-2.079137773683269122e-06, +-2.075568217734227098e-06, +-2.071995769282963244e-06, +-2.068420434548660696e-06, +-2.064842219754701335e-06, +-2.061261131128745404e-06, +-2.057677174901386845e-06, +-2.054090357307654665e-06, +-2.050500684586397141e-06, +-2.046908162979647820e-06, +-2.043312798734310262e-06, +-2.039714598100017593e-06, +-2.036113567330765580e-06, +-2.032509712684326489e-06, +-2.028903040421756954e-06, +-2.025293556808162004e-06, +-2.021681268112847528e-06, +-2.018066180607900648e-06, +-2.014448300569753764e-06, +-2.010827634278526410e-06, +-2.007204188017403958e-06, +-2.003577968074184296e-06, +-1.999948980739864980e-06, +-1.996317232308779180e-06, +-1.992682729079386389e-06, +-1.989045477353768860e-06, +-1.985405483437017505e-06, +-1.981762753638917918e-06, +-1.978117294271766721e-06, +-1.974469111652084690e-06, +-1.970818212099962422e-06, +-1.967164601938428446e-06, +-1.963508287495018354e-06, +-1.959849275100350938e-06, +-1.956187571088257364e-06, +-1.952523181796569756e-06, +-1.948856113566633308e-06, +-1.945186372742667620e-06, +-1.941513965673484482e-06, +-1.937838898710285585e-06, +-1.934161178208359982e-06, +-1.930480810526314125e-06, +-1.926797802026202318e-06, +-1.923112159073502147e-06, +-1.919423888037297018e-06, +-1.915732995289601492e-06, +-1.912039487206316321e-06, +-1.908343370166566908e-06, +-1.904644650552887330e-06, +-1.900943334751165491e-06, +-1.897239429150821635e-06, +-1.893532940144140880e-06, +-1.889823874127232490e-06, +-1.886112237499378076e-06, +-1.882398036663173902e-06, +-1.878681278024693726e-06, +-1.874961967992815620e-06, +-1.871240112980194364e-06, +-1.867515719402595890e-06, +-1.863788793679043819e-06, +-1.860059342231835131e-06, +-1.856327371486652820e-06, +-1.852592887871927866e-06, +-1.848855897819812901e-06, +-1.845116407765496322e-06, +-1.841374424147360053e-06, +-1.837629953406988862e-06, +-1.833883001989292754e-06, +-1.830133576341873184e-06, +-1.826381682915955423e-06, +-1.822627328165779758e-06, +-1.818870518548682804e-06, +-1.815111260525311381e-06, +-1.811349560558924136e-06, +-1.807585425116370709e-06, +-1.803818860667424278e-06, +-1.800049873684942490e-06, +-1.796278470644837604e-06, +-1.792504658026265803e-06, +-1.788728442310921195e-06, +-1.784949829984018153e-06, +-1.781168827533637626e-06, +-1.777385441450875997e-06, +-1.773599678229832381e-06, +-1.769811544367742881e-06, +-1.766021046364191785e-06, +-1.762228190722866199e-06, +-1.758432983949263125e-06, +-1.754635432552476916e-06, +-1.750835543044552985e-06, +-1.747033321939944650e-06, +-1.743228775756367576e-06, +-1.739421911014932335e-06, +-1.735612734238637113e-06, +-1.731801251954034458e-06, +-1.727987470690534807e-06, +-1.724171396979751094e-06, +-1.720353037357302083e-06, +-1.716532398360483454e-06, +-1.712709486530067954e-06, +-1.708884308409659541e-06, +-1.705056870545160382e-06, +-1.701227179485585915e-06, +-1.697395241783238066e-06, +-1.693561063992196895e-06, +-1.689724652669956851e-06, +-1.685886014376758042e-06, +-1.682045155674923851e-06, +-1.678202083130484491e-06, +-1.674356803311700411e-06, +-1.670509322789191261e-06, +-1.666659648136771697e-06, +-1.662807785930938930e-06, +-1.658953742750186625e-06, +-1.655097525176834499e-06, +-1.651239139794693466e-06, +-1.647378593190870461e-06, +-1.643515891955093135e-06, +-1.639651042679033719e-06, +-1.635784051957981695e-06, +-1.631914926389310883e-06, +-1.628043672572634657e-06, +-1.624170297110645568e-06, +-1.620294806608425648e-06, +-1.616417207673603743e-06, +-1.612537506916511584e-06, +-1.608655710949504673e-06, +-1.604771826387945691e-06, +-1.600885859849541486e-06, +-1.596997817954499977e-06, +-1.593107707325488659e-06, +-1.589215534587824333e-06, +-1.585321306368775365e-06, +-1.581425029298557369e-06, +-1.577526710009660247e-06, +-1.573626355136995988e-06, +-1.569723971317882580e-06, +-1.565819565192221672e-06, +-1.561913143401792786e-06, +-1.558004712591261920e-06, +-1.554094279407490159e-06, +-1.550181850499708373e-06, +-1.546267432519649357e-06, +-1.542351032120879730e-06, +-1.538432655959801344e-06, +-1.534512310694950573e-06, +-1.530590002987176405e-06, +-1.526665739499606555e-06, +-1.522739526897827677e-06, +-1.518811371849171100e-06, +-1.514881281023754680e-06, +-1.510949261093750539e-06, +-1.507015318733584545e-06, +-1.503079460619896917e-06, +-1.499141693431703381e-06, +-1.495202023849719869e-06, +-1.491260458557359056e-06, +-1.487317004240038752e-06, +-1.483371667585344116e-06, +-1.479424455283197905e-06, +-1.475475374025137743e-06, +-1.471524430505360940e-06, +-1.467571631420011708e-06, +-1.463616983467341893e-06, +-1.459660493347703978e-06, +-1.455702167763717110e-06, +-1.451742013419555799e-06, +-1.447780037021976521e-06, +-1.443816245279627815e-06, +-1.439850644903182628e-06, +-1.435883242605541602e-06, +-1.431914045101088324e-06, +-1.427943059106576590e-06, +-1.423970291341265083e-06, +-1.419995748525376624e-06, +-1.416019437381792020e-06, +-1.412041364635360375e-06, +-1.408061537012359733e-06, +-1.404079961241361695e-06, +-1.400096644053391504e-06, +-1.396111592180345150e-06, +-1.392124812356737653e-06, +-1.388136311318961479e-06, +-1.384146095804611035e-06, +-1.380154172554375362e-06, +-1.376160548309578987e-06, +-1.372165229814103207e-06, +-1.368168223813667169e-06, +-1.364169537055295932e-06, +-1.360169176288189525e-06, +-1.356167148263869693e-06, +-1.352163459734610135e-06, +-1.348158117455167840e-06, +-1.344151128182071364e-06, +-1.340142498672915469e-06, +-1.336132235688264822e-06, +-1.332120345989209678e-06, +-1.328106836339257510e-06, +-1.324091713503459086e-06, +-1.320074984248753633e-06, +-1.316056655343069291e-06, +-1.312036733557239519e-06, +-1.308015225662544803e-06, +-1.303992138432638163e-06, +-1.299967478642807821e-06, +-1.295941253069289189e-06, +-1.291913468490987955e-06, +-1.287884131687905015e-06, +-1.283853249441289797e-06, +-1.279820828534517991e-06, +-1.275786875752360138e-06, +-1.271751397881172426e-06, +-1.267714401709031789e-06, +-1.263675894025044308e-06, +-1.259635881620371810e-06, +-1.255594371287538366e-06, +-1.251551369820564964e-06, +-1.247506884014985606e-06, +-1.243460920668004428e-06, +-1.239413486577769377e-06, +-1.235364588544431630e-06, +-1.231314233369413338e-06, +-1.227262427855597359e-06, +-1.223209178807285756e-06, +-1.219154493030395672e-06, +-1.215098377331711824e-06, +-1.211040838519958844e-06, +-1.206981883405077917e-06, +-1.202921518798372468e-06, +-1.198859751512709334e-06, +-1.194796588361761303e-06, +-1.190732036161091951e-06, +-1.186666101727405176e-06, +-1.182598791878747631e-06, +-1.178530113434454731e-06, +-1.174460073215352035e-06, +-1.170388678043013877e-06, +-1.166315934740818137e-06, +-1.162241850133249556e-06, +-1.158166431046019801e-06, +-1.154089684306110029e-06, +-1.150011616741892228e-06, +-1.145932235182427444e-06, +-1.141851546458522883e-06, +-1.137769557402001556e-06, +-1.133686274845875284e-06, +-1.129601705624504999e-06, +-1.125515856572881614e-06, +-1.121428734527501855e-06, +-1.117340346326549739e-06, +-1.113250698808251422e-06, +-1.109159798812673448e-06, +-1.105067653180988803e-06, +-1.100974268754924641e-06, +-1.096879652377835266e-06, +-1.092783810893965004e-06, +-1.088686751148620993e-06, +-1.084588479988334124e-06, +-1.080489004260144778e-06, +-1.076388330812468705e-06, +-1.072286466495288242e-06, +-1.068183418158502719e-06, +-1.064079192653723952e-06, +-1.059973796833557329e-06, +-1.055867237551026458e-06, +-1.051759521660657163e-06, +-1.047650656017747337e-06, +-1.043540647478523432e-06, +-1.039429502900146391e-06, +-1.035317229140865380e-06, +-1.031203833059116550e-06, +-1.027089321515485398e-06, +-1.022973701370171807e-06, +-1.018856979484971896e-06, +-1.014739162722536650e-06, +-1.010620257945825165e-06, +-1.006500272018980473e-06, +-1.002379211807531781e-06, +-9.982570841767154286e-07, +-9.941338959933038538e-07, +-9.900096541248542689e-07, +-9.858843654389778850e-07, +-9.817580368053211213e-07, +-9.776306750930213304e-07, +-9.735022871726729733e-07, +-9.693728799154445876e-07, +-9.652424601933824488e-07, +-9.611110348785341029e-07, +-9.569786108449062830e-07, +-9.528451949659295284e-07, +-9.487107941164345234e-07, +-9.445754151719127442e-07, +-9.404390650077919277e-07, +-9.363017505012251110e-07, +-9.321634785294508815e-07, +-9.280242559699686069e-07, +-9.238840897014263374e-07, +-9.197429866028893930e-07, +-9.156009535540110402e-07, +-9.114579974351937464e-07, +-9.073141251268674013e-07, +-9.031693435105528735e-07, +-8.990236594683122854e-07, +-8.948770798820081772e-07, +-8.907296116351163693e-07, +-8.865812616110706482e-07, +-8.824320366934314318e-07, +-8.782819437668007765e-07, +-8.741309897160597305e-07, +-8.699791814265571159e-07, +-8.658265257840900468e-07, +-8.616730296750767244e-07, +-8.575186999858123182e-07, +-8.533635436035571919e-07, +-8.492075674158013608e-07, +-8.450507783104169583e-07, +-8.408931831758462765e-07, +-8.367347889003550012e-07, +-8.325756023731181083e-07, +-8.284156304834642040e-07, +-8.242548801210752132e-07, +-8.200933581759493219e-07, +-8.159310715385872182e-07, +-8.117680270992343158e-07, +-8.076042317489878257e-07, +-8.034396923790376033e-07, +-7.992744158808385193e-07, +-7.951084091462959604e-07, +-7.909416790669996871e-07, +-7.867742325353386358e-07, +-7.826060764437323421e-07, +-7.784372176848168641e-07, +-7.742676631514281599e-07, +-7.700974197367810228e-07, +-7.659264943337060112e-07, +-7.617548938355821370e-07, +-7.575826251364897554e-07, +-7.534096951295518628e-07, +-7.492361107087600878e-07, +-7.450618787682307845e-07, +-7.408870062016377324e-07, +-7.367114999033044912e-07, +-7.325353667674663172e-07, +-7.283586136884265472e-07, +-7.241812475607474982e-07, +-7.200032752784902554e-07, +-7.158247037361231153e-07, +-7.116455398287089914e-07, +-7.074657904502178070e-07, +-7.032854624953713331e-07, +-6.991045628588848821e-07, +-6.949230984349163127e-07, +-6.907410761181453619e-07, +-6.865585028030336558e-07, +-6.823753853840001510e-07, +-6.781917307553997473e-07, +-6.740075458117068822e-07, +-6.698228374465790297e-07, +-6.656376125548678744e-07, +-6.614518780300398846e-07, +-6.572656407661753096e-07, +-6.530789076572395200e-07, +-6.488916855964962254e-07, +-6.447039814774417519e-07, +-6.405158021939595196e-07, +-6.363271546386585876e-07, +-6.321380457047056803e-07, +-6.279484822850730220e-07, +-6.237584712717899837e-07, +-6.195680195579678090e-07, +-6.153771340351909648e-07, +-6.111858215955536201e-07, +-6.069940891308939279e-07, +-6.028019435320535072e-07, +-5.986093916907159277e-07, +-5.944164404977234436e-07, +-5.902230968432537060e-07, +-5.860293676177366756e-07, +-5.818352597112872171e-07, +-5.776407800129508162e-07, +-5.734459354125424878e-07, +-5.692507327989819331e-07, +-5.650551790604454760e-07, +-5.608592810853019286e-07, +-5.566630457613452853e-07, +-5.524664799759784230e-07, +-5.482695906163854724e-07, +-5.440723845687718175e-07, +-5.398748687194798501e-07, +-5.356770499544046225e-07, +-5.314789351582520587e-07, +-5.272805312163797688e-07, +-5.230818450131146296e-07, +-5.188828834319301320e-07, +-5.146836533563613889e-07, +-5.104841616692487341e-07, +-5.062844152529199409e-07, +-5.020844209893563459e-07, +-4.978841857594414251e-07, +-4.936837164440690308e-07, +-4.894830199233793678e-07, +-4.852821030769461873e-07, +-4.810809727837527529e-07, +-4.768796359223763877e-07, +-4.726780993702284738e-07, +-4.684763700046608363e-07, +-4.642744547022089724e-07, +-4.600723603387709870e-07, +-4.558700937895899637e-07, +-4.516676619294361830e-07, +-4.474650716318436808e-07, +-4.432623297702262674e-07, +-4.390594432171103269e-07, +-4.348564188443186771e-07, +-4.306532635231392341e-07, +-4.264499841235739066e-07, +-4.222465875154437614e-07, +-4.180430805676289708e-07, +-4.138394701482517713e-07, +-4.096357631246581466e-07, +-4.054319663635937460e-07, +-4.012280867304514010e-07, +-3.970241310903763980e-07, +-3.928201063075084363e-07, +-3.886160192451578642e-07, +-3.844118767657983202e-07, +-3.802076857312322750e-07, +-3.760034530018453250e-07, +-3.717991854377065409e-07, +-3.675948898978148734e-07, +-3.633905732402733239e-07, +-3.591862423224635393e-07, +-3.549819040002905764e-07, +-3.507775651291053737e-07, +-3.465732325638756402e-07, +-3.423689131574987245e-07, +-3.381646137626600053e-07, +-3.339603412310673854e-07, +-3.297561024128854203e-07, +-3.255519041578438733e-07, +-3.213477533144814203e-07, +-3.171436567303166978e-07, +-3.129396212518415796e-07, +-3.087356537246925421e-07, +-3.045317609927121517e-07, +-3.003279498999854382e-07, +-2.961242272882200745e-07, +-2.919205999987858201e-07, +-2.877170748719590211e-07, +-2.835136587463483745e-07, +-2.793103584598195705e-07, +-2.751071808496728520e-07, +-2.709041327509478367e-07, +-2.667012209982812722e-07, +-2.624984524251484655e-07, +-2.582958338631086287e-07, +-2.540933721438444292e-07, +-2.498910740965357109e-07, +-2.456889465499069844e-07, +-2.414869963314659448e-07, +-2.372852302667469117e-07, +-2.330836551811669971e-07, +-2.288822778983346326e-07, +-2.246811052402251967e-07, +-2.204801440281040693e-07, +-2.162794010819545928e-07, +-2.120788832197198719e-07, +-2.078785972591623815e-07, +-2.036785500161674659e-07, +-1.994787483049230943e-07, +-1.952791989388413278e-07, +-1.910799087297999857e-07, +-1.868808844883178231e-07, +-1.826821330237329635e-07, +-1.784836611434416545e-07, +-1.742854756540103425e-07, +-1.700875833606027344e-07, +-1.658899910662249060e-07, +-1.616927055735772071e-07, +-1.574957336833659661e-07, +-1.532990821944791698e-07, +-1.491027579049076914e-07, +-1.449067676109891016e-07, +-1.407111181075817073e-07, +-1.365158161882429054e-07, +-1.323208686444683879e-07, +-1.281262822668041114e-07, +-1.239320638440872755e-07, +-1.197382201636221888e-07, +-1.155447580111696140e-07, +-1.113516841711229779e-07, +-1.071590054257502370e-07, +-1.029667285563031329e-07, +-9.877486034225968095e-08, +-9.458340756150045818e-08, +-9.039237699029703652e-08, +-8.620177540348786109e-08, +-8.201160957372158506e-08, +-7.782188627256508140e-08, +-7.363261226974726750e-08, +-6.944379433333354096e-08, +-6.525543922990212127e-08, +-6.106755372378738472e-08, +-5.688014457818805480e-08, +-5.269321855440971649e-08, +-4.850678241204149546e-08, +-4.432084290894449075e-08, +-4.013540680142816277e-08, +-3.595048084349231822e-08, +-3.176607178793682254e-08, +-2.758218638560388919e-08, +-2.339883138555392833e-08, +-1.921601353505512108e-08, +-1.503373957975859315e-08, +-1.085201626294221465e-08, +-6.670850326618458770e-09, +-2.490248510777675030e-09, + 1.689782446435952419e-09, + 5.869235808548907697e-09, + 1.004810484151482881e-08, + 1.422638281279287499e-08, + 1.840406299117234252e-08, + 2.258113864846107765e-08, + 2.675760305763183681e-08, + 3.093344949357897986e-08, + 3.510867123368808320e-08, + 3.928326155672875191e-08, + 4.345721374361004079e-08, + 4.763052107720580343e-08, + 5.180317684217841671e-08, + 5.597517432573486364e-08, + 6.014650681670557832e-08, + 6.431716760537003003e-08, + 6.848714998514247095e-08, + 7.265644725072024935e-08, + 7.682505269884019680e-08, + 8.099295962903447268e-08, + 8.516016134177726939e-08, + 8.932665114017302838e-08, + 9.349242232978021758e-08, + 9.765746821769105661e-08, + 1.018217821131010141e-07, + 1.059853573280633551e-07, + 1.101481871754534036e-07, + 1.143102649715838885e-07, + 1.184715840341683463e-07, + 1.226321376830770974e-07, + 1.267919192410904968e-07, + 1.309509220320512510e-07, + 1.351091393825476575e-07, + 1.392665646217379119e-07, + 1.434231910804325327e-07, + 1.475790120916612118e-07, + 1.517340209914275211e-07, + 1.558882111166752387e-07, + 1.600415758078996461e-07, + 1.641941084071165550e-07, + 1.683458022587976694e-07, + 1.724966507097007033e-07, + 1.766466471088752560e-07, + 1.807957848074898862e-07, + 1.849440571595850967e-07, + 1.890914575209696250e-07, + 1.932379792497881926e-07, + 1.973836157072749417e-07, + 2.015283602559055795e-07, + 2.056722062610826294e-07, + 2.098151470909558871e-07, + 2.139571761155070685e-07, + 2.180982867073028755e-07, + 2.222384722413183362e-07, + 2.263777260947662340e-07, + 2.305160416478410141e-07, + 2.346534122826260317e-07, + 2.387898313836550554e-07, + 2.429252923386629234e-07, + 2.470597885367474827e-07, + 2.511933133700435635e-07, + 2.553258602335508737e-07, + 2.594574225242159201e-07, + 2.635879936416847037e-07, + 2.677175669881292896e-07, + 2.718461359682558536e-07, + 2.759736939891288170e-07, + 2.801002344609260827e-07, + 2.842257507958364097e-07, + 2.883502364088081902e-07, + 2.924736847173787199e-07, + 2.965960891414979090e-07, + 3.007174431042776944e-07, + 3.048377400308926973e-07, + 3.089569733493311705e-07, + 3.130751364902213038e-07, + 3.171922228868399591e-07, + 3.213082259749370166e-07, + 3.254231391934921993e-07, + 3.295369559836041360e-07, + 3.336496697892518969e-07, + 3.377612740571142049e-07, + 3.418717622363954764e-07, + 3.459811277795768749e-07, + 3.500893641413161737e-07, + 3.541964647792008743e-07, + 3.583024231535691119e-07, + 3.624072327275225194e-07, + 3.665108869667500451e-07, + 3.706133793402795879e-07, + 3.747147033195617730e-07, + 3.788148523783013389e-07, + 3.829138199941191750e-07, + 3.870115996467277070e-07, + 3.911081848186732681e-07, + 3.952035689958966230e-07, + 3.992977456666444776e-07, + 4.033907083222132274e-07, + 4.074824504567737797e-07, + 4.115729655672012476e-07, + 4.156622471538161036e-07, + 4.197502887194777486e-07, + 4.238370837694157932e-07, + 4.279226258128830961e-07, + 4.320069083613366011e-07, + 4.360899249291819859e-07, + 4.401716690345151859e-07, + 4.442521341971153496e-07, + 4.483313139410284483e-07, + 4.524092017925472081e-07, + 4.564857912811511050e-07, + 4.605610759391398109e-07, + 4.646350493025711242e-07, + 4.687077049092427549e-07, + 4.727790363012781044e-07, + 4.768490370231144033e-07, + 4.809177006222492123e-07, + 4.849850206499781349e-07, + 4.890509906595827492e-07, + 4.931156042079798869e-07, + 4.971788548555511682e-07, + 5.012407361652429230e-07, + 5.053012417031157036e-07, + 5.093603650390958150e-07, + 5.134180997449667878e-07, + 5.174744393969437230e-07, + 5.215293775736661416e-07, + 5.255829078571331093e-07, + 5.296350238325156181e-07, + 5.336857190881805155e-07, + 5.377349872155140038e-07, + 5.417828218096526296e-07, + 5.458292164684114693e-07, + 5.498741647928318420e-07, + 5.539176603879281807e-07, + 5.579596968608681820e-07, + 5.620002678226294968e-07, + 5.660393668878199474e-07, + 5.700769876737846489e-07, + 5.741131238013414457e-07, + 5.781477688946058931e-07, + 5.821809165808213214e-07, + 5.862125604910966020e-07, + 5.902426942593277677e-07, + 5.942713115229277325e-07, + 5.982984059226671546e-07, + 6.023239711026661783e-07, + 6.063480007102416503e-07, + 6.103704883966283679e-07, + 6.143914278159086416e-07, + 6.184108126257462490e-07, + 6.224286364872118401e-07, + 6.264448930647967015e-07, + 6.304595760262422910e-07, + 6.344726790432661451e-07, + 6.384841957904984290e-07, + 6.424941199462020203e-07, + 6.465024451921140082e-07, + 6.505091652132637930e-07, + 6.545142736987124403e-07, + 6.585177643404818191e-07, + 6.625196308342764860e-07, + 6.665198668793193607e-07, + 6.705184661783637963e-07, + 6.745154224375159139e-07, + 6.785107293669710981e-07, + 6.825043806799398531e-07, + 6.864963700933819684e-07, + 6.904866913278340420e-07, + 6.944753381072328741e-07, + 6.984623041596587379e-07, + 7.024475832162480018e-07, + 7.064311690119416943e-07, + 7.104130552853022276e-07, + 7.143932357785205968e-07, + 7.183717042372668792e-07, + 7.223484544113898833e-07, + 7.263234800540485163e-07, + 7.302967749215405779e-07, + 7.342683327749180520e-07, + 7.382381473782107724e-07, + 7.422062124991472485e-07, + 7.461725219097151888e-07, + 7.501370693850799460e-07, + 7.540998487043159299e-07, + 7.580608536502419650e-07, + 7.620200780092515671e-07, + 7.659775155720301675e-07, + 7.699331601326723995e-07, + 7.738870054885314320e-07, + 7.778390454418060977e-07, + 7.817892737977868995e-07, + 7.857376843655720712e-07, + 7.896842709587922138e-07, + 7.936290273936523792e-07, + 7.975719474914511460e-07, + 8.015130250766106327e-07, + 8.054522539776013518e-07, + 8.093896280265699387e-07, + 8.133251410602544769e-07, + 8.172587869180317691e-07, + 8.211905594444203199e-07, + 8.251204524871304657e-07, + 8.290484598977801179e-07, + 8.329745755326347514e-07, + 8.368987932508156130e-07, + 8.408211069159182951e-07, + 8.447415103958540227e-07, + 8.486599975619501051e-07, + 8.525765622895160709e-07, + 8.564911984585428939e-07, + 8.604038999517716521e-07, + 8.643146606571898399e-07, + 8.682234744660733451e-07, + 8.721303352737220974e-07, + 8.760352369801679761e-07, + 8.799381734884262164e-07, + 8.838391387060738551e-07, + 8.877381265451097591e-07, + 8.916351309210615340e-07, + 8.955301457535321790e-07, + 8.994231649669120173e-07, + 9.033141824886304207e-07, + 9.072031922507413490e-07, + 9.110901881897703548e-07, + 9.149751642458257283e-07, + 9.188581143633330868e-07, + 9.227390324908490270e-07, + 9.266179125809035774e-07, + 9.304947485907218701e-07, + 9.343695344811542321e-07, + 9.382422642174142692e-07, + 9.421129317688974945e-07, + 9.459815311091935048e-07, + 9.498480562159259973e-07, + 9.537125010714573948e-07, + 9.575748596618392665e-07, + 9.614351259775381288e-07, + 9.652932940132619100e-07, + 9.691493577677925547e-07, + 9.730033112446901209e-07, + 9.768551484512773983e-07, + 9.807048633993107589e-07, + 9.845524501048427258e-07, + 9.883979025882262085e-07, + 9.922412148739342964e-07, + 9.960823809912868014e-07, + 9.999213949734079840e-07, + 1.003758250857916461e-06, + 1.007592942686789047e-06, + 1.011425464506340846e-06, + 1.015255810367083163e-06, + 1.019083974324411720e-06, + 1.022909950437588943e-06, + 1.026733732770424556e-06, + 1.030555315391135817e-06, + 1.034374692372176633e-06, + 1.038191857790929158e-06, + 1.042006805728675924e-06, + 1.045819530271317484e-06, + 1.049630025509186704e-06, + 1.053438285537074172e-06, + 1.057244304454053075e-06, + 1.061048076364191766e-06, + 1.064849595375512969e-06, + 1.068648855600702961e-06, + 1.072445851156941317e-06, + 1.076240576165913193e-06, + 1.080033024753650716e-06, + 1.083823191051396114e-06, + 1.087611069193711349e-06, + 1.091396653320919265e-06, + 1.095179937577194164e-06, + 1.098960916111266330e-06, + 1.102739583076968358e-06, + 1.106515932632345775e-06, + 1.110289958939524688e-06, + 1.114061656166252116e-06, + 1.117831018484200440e-06, + 1.121598040069649053e-06, + 1.125362715104178503e-06, + 1.129125037772815917e-06, + 1.132885002266411347e-06, + 1.136642602779783621e-06, + 1.140397833512415118e-06, + 1.144150688668954692e-06, + 1.147901162458397537e-06, + 1.151649249093901379e-06, + 1.155394942794341415e-06, + 1.159138237782612226e-06, + 1.162879128286317473e-06, + 1.166617608538463403e-06, + 1.170353672775759704e-06, + 1.174087315240165341e-06, + 1.177818530178724437e-06, + 1.181547311842719460e-06, + 1.185273654488199766e-06, + 1.188997552376666003e-06, + 1.192718999773205368e-06, + 1.196437990948884900e-06, + 1.200154520178894783e-06, + 1.203868581743223640e-06, + 1.207580169927359883e-06, + 1.211289279020586204e-06, + 1.214995903317539180e-06, + 1.218700037118028220e-06, + 1.222401674726206740e-06, + 1.226100810451078900e-06, + 1.229797438607202647e-06, + 1.233491553512818613e-06, + 1.237183149492241715e-06, + 1.240872220874000014e-06, + 1.244558761991684285e-06, + 1.248242767183809529e-06, + 1.251924230793789563e-06, + 1.255603147169819916e-06, + 1.259279510665519246e-06, + 1.262953315638945511e-06, + 1.266624556453288417e-06, + 1.270293227476690483e-06, + 1.273959323082256150e-06, + 1.277622837647916885e-06, + 1.281283765557079800e-06, + 1.284942101197653777e-06, + 1.288597838962712267e-06, + 1.292250973250339347e-06, + 1.295901498463476191e-06, + 1.299549409010594675e-06, + 1.303194699304695549e-06, + 1.306837363763996651e-06, + 1.310477396811775356e-06, + 1.314114792876360958e-06, + 1.317749546390997236e-06, + 1.321381651794496574e-06, + 1.325011103530263333e-06, + 1.328637896046967456e-06, + 1.332262023798376754e-06, + 1.335883481243379985e-06, + 1.339502262845818299e-06, + 1.343118363075153968e-06, + 1.346731776405494180e-06, + 1.350342497316253421e-06, + 1.353950520292012231e-06, + 1.357555839822332760e-06, + 1.361158450402449953e-06, + 1.364758346532291950e-06, + 1.368355522717122142e-06, + 1.371949973467412323e-06, + 1.375541693298836554e-06, + 1.379130676732108317e-06, + 1.382716918293664285e-06, + 1.386300412514665879e-06, + 1.389881153931691087e-06, + 1.393459137086551499e-06, + 1.397034356526312851e-06, + 1.400606806803141500e-06, + 1.404176482475124776e-06, + 1.407743378104489670e-06, + 1.411307488259879022e-06, + 1.414868807514589909e-06, + 1.418427330447220140e-06, + 1.421983051642163770e-06, + 1.425535965688803665e-06, + 1.429086067181364333e-06, + 1.432633350720381101e-06, + 1.436177810911084397e-06, + 1.439719442364045832e-06, + 1.443258239695860051e-06, + 1.446794197527342680e-06, + 1.450327310485817309e-06, + 1.453857573203351336e-06, + 1.457384980317393149e-06, + 1.460909526471278224e-06, + 1.464431206313431438e-06, + 1.467950014497204221e-06, + 1.471465945682339502e-06, + 1.474978994533361711e-06, + 1.478489155720242972e-06, + 1.481996423919039010e-06, + 1.485500793810293554e-06, + 1.489002260080508362e-06, + 1.492500817421955395e-06, + 1.495996460531927399e-06, + 1.499489184113187259e-06, + 1.502978982874639063e-06, + 1.506465851529568387e-06, + 1.509949784797887992e-06, + 1.513430777404388491e-06, + 1.516908824079389292e-06, + 1.520383919559384888e-06, + 1.523856058585453697e-06, + 1.527325235904689135e-06, + 1.530791446270079965e-06, + 1.534254684439683594e-06, + 1.537714945177301798e-06, + 1.541172223252313426e-06, + 1.544626513439520458e-06, + 1.548077810519807205e-06, + 1.551526109279185491e-06, + 1.554971404509430143e-06, + 1.558413691007938378e-06, + 1.561852963577727478e-06, + 1.565289217027310487e-06, + 1.568722446171291039e-06, + 1.572152645829478420e-06, + 1.575579810827467998e-06, + 1.579003935996542334e-06, + 1.582425016173647672e-06, + 1.585843046201253337e-06, + 1.589258020927990393e-06, + 1.592669935207709111e-06, + 1.596078783900137746e-06, + 1.599484561870702119e-06, + 1.602887263990382473e-06, + 1.606286885136373518e-06, + 1.609683420191123684e-06, + 1.613076864042982259e-06, + 1.616467211586044589e-06, + 1.619854457720160551e-06, + 1.623238597350807286e-06, + 1.626619625389675978e-06, + 1.629997536753781204e-06, + 1.633372326366083710e-06, + 1.636743989155330961e-06, + 1.640112520056075139e-06, + 1.643477914008517922e-06, + 1.646840165959158257e-06, + 1.650199270859840925e-06, + 1.653555223668397538e-06, + 1.656908019348497669e-06, + 1.660257652869509944e-06, + 1.663604119207118462e-06, + 1.666947413342401019e-06, + 1.670287530262454638e-06, + 1.673624464960271903e-06, + 1.676958212434704537e-06, + 1.680288767690351804e-06, + 1.683616125738183506e-06, + 1.686940281594590027e-06, + 1.690261230282046206e-06, + 1.693578966828934722e-06, + 1.696893486269431747e-06, + 1.700204783644084413e-06, + 1.703512853999091890e-06, + 1.706817692386133441e-06, + 1.710119293863771952e-06, + 1.713417653495907889e-06, + 1.716712766352432356e-06, + 1.720004627509652312e-06, + 1.723293232049572702e-06, + 1.726578575059724729e-06, + 1.729860651634554559e-06, + 1.733139456873902902e-06, + 1.736414985883627576e-06, + 1.739687233776219726e-06, + 1.742956195669128393e-06, + 1.746221866686910284e-06, + 1.749484241959550737e-06, + 1.752743316623083969e-06, + 1.755999085820056606e-06, + 1.759251544698781028e-06, + 1.762500688413186927e-06, + 1.765746512124178887e-06, + 1.768989010998154923e-06, + 1.772228180207604914e-06, + 1.775464014931706060e-06, + 1.778696510354704210e-06, + 1.781925661668010051e-06, + 1.785151464068540832e-06, + 1.788373912759503655e-06, + 1.791593002950081865e-06, + 1.794808729856215589e-06, + 1.798021088698927574e-06, + 1.801230074706447336e-06, + 1.804435683112571936e-06, + 1.807637909157270133e-06, + 1.810836748087275512e-06, + 1.814032195154610320e-06, + 1.817224245617949190e-06, + 1.820412894742445074e-06, + 1.823598137799010112e-06, + 1.826779970064922747e-06, + 1.829958386823677156e-06, + 1.833133383364839266e-06, + 1.836304954984645384e-06, + 1.839473096985141194e-06, + 1.842637804674612472e-06, + 1.845799073368176737e-06, + 1.848956898386335252e-06, + 1.852111275056296508e-06, + 1.855262198711819738e-06, + 1.858409664692524795e-06, + 1.861553668344445056e-06, + 1.864694205019918361e-06, + 1.867831270077583842e-06, + 1.870964858882224585e-06, + 1.874094966805377703e-06, + 1.877221589224481801e-06, + 1.880344721523412509e-06, + 1.883464359092401807e-06, + 1.886580497327884706e-06, + 1.889693131633051730e-06, + 1.892802257417016492e-06, + 1.895907870095410311e-06, + 1.899009965090216620e-06, + 1.902108537829791715e-06, + 1.905203583748737700e-06, + 1.908295098288456872e-06, + 1.911383076896330736e-06, + 1.914467515026272476e-06, + 1.917548408138595035e-06, + 1.920625751699885330e-06, + 1.923699541183578963e-06, + 1.926769772069105985e-06, + 1.929836439842465614e-06, + 1.932899539996103413e-06, + 1.935959068028905780e-06, + 1.939015019446061041e-06, + 1.942067389759642206e-06, + 1.945116174487916211e-06, + 1.948161369155165198e-06, + 1.951202969293023132e-06, + 1.954240970439035420e-06, + 1.957275368137229813e-06, + 1.960306157938554743e-06, + 1.963333335400045422e-06, + 1.966356896085361284e-06, + 1.969376835564708479e-06, + 1.972393149414647598e-06, + 1.975405833218707351e-06, + 1.978414882566658232e-06, + 1.981420293054388854e-06, + 1.984422060285177345e-06, + 1.987420179868297556e-06, + 1.990414647419571751e-06, + 1.993405458561818262e-06, + 1.996392608923989208e-06, + 1.999376094141778670e-06, + 2.002355909857446080e-06, + 2.005332051719846715e-06, + 2.008304515384288125e-06, + 2.011273296513241643e-06, + 2.014238390774813488e-06, + 2.017199793844686587e-06, + 2.020157501404619638e-06, + 2.023111509143001485e-06, + 2.026061812755256432e-06, + 2.029008407943181854e-06, + 2.031951290414800824e-06, + 2.034890455885606816e-06, + 2.037825900077218204e-06, + 2.040757618717894522e-06, + 2.043685607543143788e-06, + 2.046609862294157611e-06, + 2.049530378719786898e-06, + 2.052447152575012952e-06, + 2.055360179621657720e-06, + 2.058269455628091132e-06, + 2.061174976369949393e-06, + 2.064076737628613709e-06, + 2.066974735193146603e-06, + 2.069868964858776999e-06, + 2.072759422427483401e-06, + 2.075646103708488989e-06, + 2.078529004516980052e-06, + 2.081408120675275323e-06, + 2.084283448012719246e-06, + 2.087154982365018332e-06, + 2.090022719574775210e-06, + 2.092886655491347598e-06, + 2.095746785970764020e-06, + 2.098603106876205347e-06, + 2.101455614077264913e-06, + 2.104304303450310622e-06, + 2.107149170879067706e-06, + 2.109990212253235519e-06, + 2.112827423469750466e-06, + 2.115660800432617019e-06, + 2.118490339052265240e-06, + 2.121316035246094579e-06, + 2.124137884938320138e-06, + 2.126955884060031535e-06, + 2.129770028548995975e-06, + 2.132580314350246089e-06, + 2.135386737415263813e-06, + 2.138189293702540284e-06, + 2.140987979177423370e-06, + 2.143782789812003743e-06, + 2.146573721585656138e-06, + 2.149360770484236783e-06, + 2.152143932500619152e-06, + 2.154923203634590203e-06, + 2.157698579892820304e-06, + 2.160470057288773031e-06, + 2.163237631843193899e-06, + 2.166001299583375989e-06, + 2.168761056543671133e-06, + 2.171516898765339560e-06, + 2.174268822296455459e-06, + 2.177016823192422815e-06, + 2.179760897515220711e-06, + 2.182501041333868339e-06, + 2.185237250724380117e-06, + 2.187969521769711472e-06, + 2.190697850559678799e-06, + 2.193422233191430409e-06, + 2.196142665768849374e-06, + 2.198859144402424350e-06, + 2.201571665210390958e-06, + 2.204280224317470974e-06, + 2.206984817855383088e-06, + 2.209685441963249059e-06, + 2.212382092786808091e-06, + 2.215074766478936912e-06, + 2.217763459199543891e-06, + 2.220448167115436061e-06, + 2.223128886400826484e-06, + 2.225805613236712534e-06, + 2.228478343810769593e-06, + 2.231147074318464050e-06, + 2.233811800961810286e-06, + 2.236472519949896675e-06, + 2.239129227499228635e-06, + 2.241781919833020931e-06, + 2.244430593181684301e-06, + 2.247075243782703472e-06, + 2.249715867880657502e-06, + 2.252352461727080432e-06, + 2.254985021581107154e-06, + 2.257613543708092325e-06, + 2.260238024381369226e-06, + 2.262858459880891551e-06, + 2.265474846493712820e-06, + 2.268087180514394655e-06, + 2.270695458244370659e-06, + 2.273299675991828247e-06, + 2.275899830072835208e-06, + 2.278495916810109388e-06, + 2.281087932533506153e-06, + 2.283675873580530002e-06, + 2.286259736294977193e-06, + 2.288839517028673436e-06, + 2.291415212140102118e-06, + 2.293986817994930310e-06, + 2.296554330966480995e-06, + 2.299117747434531121e-06, + 2.301677063786402581e-06, + 2.304232276416853797e-06, + 2.306783381727477896e-06, + 2.309330376127068211e-06, + 2.311873256032086687e-06, + 2.314412017865509801e-06, + 2.316946658057870831e-06, + 2.319477173047159489e-06, + 2.322003559278247630e-06, + 2.324525813203345799e-06, + 2.327043931281890583e-06, + 2.329557909980457360e-06, + 2.332067745773192291e-06, + 2.334573435141163486e-06, + 2.337074974572670181e-06, + 2.339572360563752217e-06, + 2.342065589617000392e-06, + 2.344554658242627105e-06, + 2.347039562958359630e-06, + 2.349520300288826020e-06, + 2.351996866766078995e-06, + 2.354469258929434583e-06, + 2.356937473325401814e-06, + 2.359401506508110052e-06, + 2.361861355038665671e-06, + 2.364317015485586581e-06, + 2.366768484424686613e-06, + 2.369215758439101350e-06, + 2.371658834119168697e-06, + 2.374097708062911262e-06, + 2.376532376875299022e-06, + 2.378962837168768122e-06, + 2.381389085563091708e-06, + 2.383811118685390091e-06, + 2.386228933169989290e-06, + 2.388642525658936875e-06, + 2.391051892801268439e-06, + 2.393457031253501843e-06, + 2.395857937679509307e-06, + 2.398254608750440762e-06, + 2.400647041145138890e-06, + 2.403035231549478864e-06, + 2.405419176656832100e-06, + 2.407798873167971811e-06, + 2.410174317791031501e-06, + 2.412545507241446948e-06, + 2.414912438242391997e-06, + 2.417275107524092043e-06, + 2.419633511824295406e-06, + 2.421987647888157282e-06, + 2.424337512468257114e-06, + 2.426683102324479156e-06, + 2.429024414224459283e-06, + 2.431361444942932779e-06, + 2.433694191262183682e-06, + 2.436022649971919431e-06, + 2.438346817869186579e-06, + 2.440666691758814642e-06, + 2.442982268452839693e-06, + 2.445293544770438292e-06, + 2.447600517538890986e-06, + 2.449903183592523945e-06, + 2.452201539773107908e-06, + 2.454495582930212671e-06, + 2.456785309920559955e-06, + 2.459070717608463858e-06, + 2.461351802865703803e-06, + 2.463628562571455930e-06, + 2.465900993612692469e-06, + 2.468169092883685380e-06, + 2.470432857285865322e-06, + 2.472692283728816918e-06, + 2.474947369129193702e-06, + 2.477198110411169592e-06, + 2.479444504506753560e-06, + 2.481686548355242449e-06, + 2.483924238903163800e-06, + 2.486157573105184293e-06, + 2.488386547923095849e-06, + 2.490611160326200605e-06, + 2.492831407291792458e-06, + 2.495047285803935212e-06, + 2.497258792854996137e-06, + 2.499465925444473672e-06, + 2.501668680579404851e-06, + 2.503867055274818885e-06, + 2.506061046552674987e-06, + 2.508250651442789447e-06, + 2.510435866982786929e-06, + 2.512616690217535497e-06, + 2.514793118199471881e-06, + 2.516965147989053787e-06, + 2.519132776653567278e-06, + 2.521296001268639997e-06, + 2.523454818917057017e-06, + 2.525609226689297009e-06, + 2.527759221683455590e-06, + 2.529904801005220331e-06, + 2.532045961767781823e-06, + 2.534182701092262696e-06, + 2.536315016107071333e-06, + 2.538442903948227980e-06, + 2.540566361759820449e-06, + 2.542685386692900855e-06, + 2.544799975906485964e-06, + 2.546910126567413198e-06, + 2.549015835849868413e-06, + 2.551117100935761136e-06, + 2.553213919014639012e-06, + 2.555306287283606490e-06, + 2.557394202947714038e-06, + 2.559477663219366061e-06, + 2.561556665318710541e-06, + 2.563631206473582283e-06, + 2.565701283919457177e-06, + 2.567766894899379775e-06, + 2.569828036664366480e-06, + 2.571884706472816011e-06, + 2.573936901590885062e-06, + 2.575984619292426467e-06, + 2.578027856858980309e-06, + 2.580066611579664227e-06, + 2.582100880751577875e-06, + 2.584130661679229058e-06, + 2.586155951674916588e-06, + 2.588176748058646855e-06, + 2.590193048158018629e-06, + 2.592204849308634293e-06, + 2.594212148853534452e-06, + 2.596214944143542246e-06, + 2.598213232537208724e-06, + 2.600207011400814109e-06, + 2.602196278108253450e-06, + 2.604181030041432187e-06, + 2.606161264589708379e-06, + 2.608136979150279375e-06, + 2.610108171128053065e-06, + 2.612074837935688537e-06, + 2.614036976993498671e-06, + 2.615994585729819016e-06, + 2.617947661580449602e-06, + 2.619896201989033558e-06, + 2.621840204406975379e-06, + 2.623779666293354521e-06, + 2.625714585115268036e-06, + 2.627644958347407045e-06, + 2.629570783471937313e-06, + 2.631492057979371269e-06, + 2.633408779367608738e-06, + 2.635320945142316838e-06, + 2.637228552817249310e-06, + 2.639131599913651055e-06, + 2.641030083960634639e-06, + 2.642924002495100674e-06, + 2.644813353061664969e-06, + 2.646698133212998617e-06, + 2.648578340509393892e-06, + 2.650453972518666837e-06, + 2.652325026816990320e-06, + 2.654191500987953833e-06, + 2.656053392622983190e-06, + 2.657910699321583632e-06, + 2.659763418690876917e-06, + 2.661611548345548387e-06, + 2.663455085908616915e-06, + 2.665294029010614133e-06, + 2.667128375289858873e-06, + 2.668958122392855689e-06, + 2.670783267973323743e-06, + 2.672603809693441088e-06, + 2.674419745222871432e-06, + 2.676231072239103796e-06, + 2.678037788427840882e-06, + 2.679839891482082577e-06, + 2.681637379102943770e-06, + 2.683430248999572187e-06, + 2.685218498888713014e-06, + 2.687002126494935905e-06, + 2.688781129551050875e-06, + 2.690555505797090164e-06, + 2.692325252981592764e-06, + 2.694090368860583744e-06, + 2.695850851198058332e-06, + 2.697606697765878571e-06, + 2.699357906343772901e-06, + 2.701104474719283640e-06, + 2.702846400688041425e-06, + 2.704583682053371339e-06, + 2.706316316626420391e-06, + 2.708044302226589079e-06, + 2.709767636680645817e-06, + 2.711486317823514253e-06, + 2.713200343498181789e-06, + 2.714909711555255309e-06, + 2.716614419853361832e-06, + 2.718314466258996888e-06, + 2.720009848646500378e-06, + 2.721700564898331440e-06, + 2.723386612904643657e-06, + 2.725067990563490042e-06, + 2.726744695781158885e-06, + 2.728416726471353405e-06, + 2.730084080555962968e-06, + 2.731746755964949590e-06, + 2.733404750635946014e-06, + 2.735058062514586907e-06, + 2.736706689554449986e-06, + 2.738350629717020019e-06, + 2.739989880971640971e-06, + 2.741624441295851851e-06, + 2.743254308674848845e-06, + 2.744879481101871140e-06, + 2.746499956578082340e-06, + 2.748115733112529809e-06, + 2.749726808722411062e-06, + 2.751333181432662106e-06, + 2.752934849276208162e-06, + 2.754531810293981456e-06, + 2.756124062534819148e-06, + 2.757711604055450625e-06, + 2.759294432920782111e-06, + 2.760872547203471449e-06, + 2.762445944984194072e-06, + 2.764014624351587525e-06, + 2.765578583402194286e-06, + 2.767137820240732820e-06, + 2.768692332979679141e-06, + 2.770242119739538292e-06, + 2.771787178648802833e-06, + 2.773327507843916847e-06, + 2.774863105469245024e-06, + 2.776393969677376317e-06, + 2.777920098628686456e-06, + 2.779441490491323119e-06, + 2.780958143441876365e-06, + 2.782470055664619685e-06, + 2.783977225351810705e-06, + 2.785479650703924540e-06, + 2.786977329929185810e-06, + 2.788470261243933288e-06, + 2.789958442872438208e-06, + 2.791441873046948315e-06, + 2.792920550007897505e-06, + 2.794394472003586490e-06, + 2.795863637290103180e-06, + 2.797328044131951184e-06, + 2.798787690801385728e-06, + 2.800242575578652527e-06, + 2.801692696752281276e-06, + 2.803138052618328407e-06, + 2.804578641481357102e-06, + 2.806014461653658873e-06, + 2.807445511455606771e-06, + 2.808871789215523255e-06, + 2.810293293270049491e-06, + 2.811710021963327123e-06, + 2.813121973648026570e-06, + 2.814529146684555474e-06, + 2.815931539441348808e-06, + 2.817329150295160677e-06, + 2.818721977630316817e-06, + 2.820110019839432449e-06, + 2.821493275323253888e-06, + 2.822871742490378175e-06, + 2.824245419757411892e-06, + 2.825614305549298968e-06, + 2.826978398298523619e-06, + 2.828337696446073001e-06, + 2.829692198440741373e-06, + 2.831041902739338467e-06, + 2.832386807806991031e-06, + 2.833726912116464779e-06, + 2.835062214148772987e-06, + 2.836392712393114231e-06, + 2.837718405346532309e-06, + 2.839039291514110630e-06, + 2.840355369409278419e-06, + 2.841666637553092435e-06, + 2.842973094474881133e-06, + 2.844274738712121006e-06, + 2.845571568810201949e-06, + 2.846863583322598788e-06, + 2.848150780810843750e-06, + 2.849433159844506556e-06, + 2.850710719001366796e-06, + 2.851983456867085276e-06, + 2.853251372035467873e-06, + 2.854514463108352453e-06, + 2.855772728695673669e-06, + 2.857026167415365555e-06, + 2.858274777893592762e-06, + 2.859518558764440547e-06, + 2.860757508670096461e-06, + 2.861991626260836797e-06, + 2.863220910194937225e-06, + 2.864445359138940882e-06, + 2.865664971767273816e-06, + 2.866879746762495709e-06, + 2.868089682815271925e-06, + 2.869294778624313794e-06, + 2.870495032896357859e-06, + 2.871690444346409400e-06, + 2.872881011697369315e-06, + 2.874066733680283991e-06, + 2.875247609034266112e-06, + 2.876423636506543363e-06, + 2.877594814852345346e-06, + 2.878761142835170401e-06, + 2.879922619226421800e-06, + 2.881079242805665676e-06, + 2.882231012360534875e-06, + 2.883377926686695932e-06, + 2.884519984588098515e-06, + 2.885657184876601884e-06, + 2.886789526372197664e-06, + 2.887917007902987822e-06, + 2.889039628305164333e-06, + 2.890157386422946507e-06, + 2.891270281108822811e-06, + 2.892378311223226035e-06, + 2.893481475634713707e-06, + 2.894579773219960897e-06, + 2.895673202863725488e-06, + 2.896761763458821068e-06, + 2.897845453906320643e-06, + 2.898924273115219519e-06, + 2.899998220002691529e-06, + 2.901067293493989930e-06, + 2.902131492522445283e-06, + 2.903190816029608183e-06, + 2.904245262965073918e-06, + 2.905294832286324078e-06, + 2.906339522959328370e-06, + 2.907379333957894096e-06, + 2.908414264263956686e-06, + 2.909444312867786799e-06, + 2.910469478767359705e-06, + 2.911489760969140485e-06, + 2.912505158487486874e-06, + 2.913515670344930896e-06, + 2.914521295572040803e-06, + 2.915522033207696357e-06, + 2.916517882298577221e-06, + 2.917508841899755039e-06, + 2.918494911074279235e-06, + 2.919476088893247738e-06, + 2.920452374436124623e-06, + 2.921423766790136176e-06, + 2.922390265050793085e-06, + 2.923351868321831156e-06, + 2.924308575714933055e-06, + 2.925260386349896871e-06, + 2.926207299354827122e-06, + 2.927149313865607479e-06, + 2.928086429026561021e-06, + 2.929018643989947105e-06, + 2.929945957916121877e-06, + 2.930868369973772474e-06, + 2.931785879339396523e-06, + 2.932698485197734977e-06, + 2.933606186741783973e-06, + 2.934508983172451779e-06, + 2.935406873698821383e-06, + 2.936299857538231799e-06, + 2.937187933915887168e-06, + 2.938071102065236649e-06, + 2.938949361227943925e-06, + 2.939822710653633097e-06, + 2.940691149600107639e-06, + 2.941554677333280093e-06, + 2.942413293127134804e-06, + 2.943266996263901558e-06, + 2.944115786033808250e-06, + 2.944959661735237584e-06, + 2.945798622674676676e-06, + 2.946632668166732301e-06, + 2.947461797534094042e-06, + 2.948286010107701587e-06, + 2.949105305226451649e-06, + 2.949919682237430904e-06, + 2.950729140495854579e-06, + 2.951533679364951257e-06, + 2.952333298216263995e-06, + 2.953127996429267468e-06, + 2.953917773391633086e-06, + 2.954702628499129475e-06, + 2.955482561155642798e-06, + 2.956257570773135678e-06, + 2.957027656771819992e-06, + 2.957792818579873537e-06, + 2.958553055633657298e-06, + 2.959308367377625658e-06, + 2.960058753264367904e-06, + 2.960804212754518866e-06, + 2.961544745316982958e-06, + 2.962280350428637290e-06, + 2.963011027574503194e-06, + 2.963736776247744107e-06, + 2.964457595949571548e-06, + 2.965173486189431469e-06, + 2.965884446484782328e-06, + 2.966590476361205206e-06, + 2.967291575352422443e-06, + 2.967987743000251471e-06, + 2.968678978854571782e-06, + 2.969365282473515933e-06, + 2.970046653423187909e-06, + 2.970723091277846505e-06, + 2.971394595619859160e-06, + 2.972061166039720174e-06, + 2.972722802135954565e-06, + 2.973379503515382766e-06, + 2.974031269792661115e-06, + 2.974678100590796423e-06, + 2.975319995540784292e-06, + 2.975956954281689584e-06, + 2.976588976460816673e-06, + 2.977216061733498959e-06, + 2.977838209763067528e-06, + 2.978455420221161162e-06, + 2.979067692787395580e-06, + 2.979675027149463804e-06, + 2.980277423003322088e-06, + 2.980874880052771903e-06, + 2.981467398009984255e-06, + 2.982054976595053718e-06, + 2.982637615536202993e-06, + 2.983215314569833735e-06, + 2.983788073440393562e-06, + 2.984355891900331166e-06, + 2.984918769710353386e-06, + 2.985476706639191429e-06, + 2.986029702463628396e-06, + 2.986577756968683090e-06, + 2.987120869947264426e-06, + 2.987659041200486950e-06, + 2.988192270537613242e-06, + 2.988720557775892132e-06, + 2.989243902740679826e-06, + 2.989762305265541126e-06, + 2.990275765191911464e-06, + 2.990784282369524230e-06, + 2.991287856656077891e-06, + 2.991786487917354568e-06, + 2.992280176027368277e-06, + 2.992768920867981638e-06, + 2.993252722329301019e-06, + 2.993731580309517295e-06, + 2.994205494714846979e-06, + 2.994674465459558902e-06, + 2.995138492466144466e-06, + 2.995597575664955540e-06, + 2.996051714994615694e-06, + 2.996500910401741524e-06, + 2.996945161841023965e-06, + 2.997384469275235073e-06, + 2.997818832675219975e-06, + 2.998248252019876961e-06, + 2.998672727296237534e-06, + 2.999092258499346975e-06, + 2.999506845632326599e-06, + 2.999916488706380960e-06, + 3.000321187740768197e-06, + 3.000720942762786066e-06, + 3.001115753807884165e-06, + 3.001505620919482675e-06, + 3.001890544149117196e-06, + 3.002270523556334993e-06, + 3.002645559208774611e-06, + 3.003015651182173500e-06, + 3.003380799560260868e-06, + 3.003741004434831793e-06, + 3.004096265905763317e-06, + 3.004446584080955581e-06, + 3.004791959076358076e-06, + 3.005132391016040800e-06, + 3.005467880032041368e-06, + 3.005798426264472581e-06, + 3.006124029861499984e-06, + 3.006444690979332121e-06, + 3.006760409782182001e-06, + 3.007071186442392451e-06, + 3.007377021140269259e-06, + 3.007677914064201868e-06, + 3.007973865410593079e-06, + 3.008264875383862436e-06, + 3.008550944196533892e-06, + 3.008832072069104100e-06, + 3.009108259230135584e-06, + 3.009379505916188551e-06, + 3.009645812371883577e-06, + 3.009907178849831721e-06, + 3.010163605610741252e-06, + 3.010415092923279588e-06, + 3.010661641064146134e-06, + 3.010903250318080332e-06, + 3.011139920977824393e-06, + 3.011371653344167763e-06, + 3.011598447725922561e-06, + 3.011820304439815581e-06, + 3.012037223810724617e-06, + 3.012249206171462466e-06, + 3.012456251862853587e-06, + 3.012658361233777297e-06, + 3.012855534641075873e-06, + 3.013047772449573605e-06, + 3.013235075032186064e-06, + 3.013417442769748581e-06, + 3.013594876051113231e-06, + 3.013767375273205581e-06, + 3.013934940840804889e-06, + 3.014097573166816847e-06, + 3.014255272672080034e-06, + 3.014408039785410809e-06, + 3.014555874943685896e-06, + 3.014698778591697966e-06, + 3.014836751182217892e-06, + 3.014969793176070139e-06, + 3.015097905042009939e-06, + 3.015221087256769457e-06, + 3.015339340305123438e-06, + 3.015452664679713018e-06, + 3.015561060881263420e-06, + 3.015664529418408187e-06, + 3.015763070807762031e-06, + 3.015856685573906855e-06, + 3.015945374249426061e-06, + 3.016029137374809255e-06, + 3.016107975498559820e-06, + 3.016181889177121653e-06, + 3.016250878974884241e-06, + 3.016314945464239839e-06, + 3.016374089225463614e-06, + 3.016428310846822065e-06, + 3.016477610924560320e-06, + 3.016521990062833944e-06, + 3.016561448873754262e-06, + 3.016595987977378190e-06, + 3.016625608001690450e-06, + 3.016650309582653119e-06, + 3.016670093364134481e-06, + 3.016684959997928082e-06, + 3.016694910143805673e-06, + 3.016699944469440551e-06, + 3.016700063650420689e-06, + 3.016695268370300405e-06, + 3.016685559320529211e-06, + 3.016670937200486542e-06, + 3.016651402717468201e-06, + 3.016626956586700762e-06, + 3.016597599531318700e-06, + 3.016563332282381750e-06, + 3.016524155578830446e-06, + 3.016480070167542017e-06, + 3.016431076803287617e-06, + 3.016377176248740372e-06, + 3.016318369274497397e-06, + 3.016254656659031525e-06, + 3.016186039188725600e-06, + 3.016112517657836066e-06, + 3.016034092868547170e-06, + 3.015950765630900658e-06, + 3.015862536762852108e-06, + 3.015769407090207822e-06, + 3.015671377446700212e-06, + 3.015568448673911144e-06, + 3.015460621621313867e-06, + 3.015347897146239980e-06, + 3.015230276113923473e-06, + 3.015107759397434663e-06, + 3.014980347877740331e-06, + 3.014848042443643159e-06, + 3.014710843991841450e-06, + 3.014568753426885498e-06, + 3.014421771661151760e-06, + 3.014269899614911041e-06, + 3.014113138216266235e-06, + 3.013951488401183243e-06, + 3.013784951113444385e-06, + 3.013613527304723789e-06, + 3.013437217934499719e-06, + 3.013256023970110484e-06, + 3.013069946386711234e-06, + 3.012878986167307421e-06, + 3.012683144302737435e-06, + 3.012482421791646344e-06, + 3.012276819640535023e-06, + 3.012066338863709758e-06, + 3.011850980483295792e-06, + 3.011630745529243263e-06, + 3.011405635039308561e-06, + 3.011175650059073816e-06, + 3.010940791641909200e-06, + 3.010701060849007659e-06, + 3.010456458749372631e-06, + 3.010206986419800254e-06, + 3.009952644944859468e-06, + 3.009693435416952570e-06, + 3.009429358936254232e-06, + 3.009160416610734373e-06, + 3.008886609556139942e-06, + 3.008607938896022451e-06, + 3.008324405761682915e-06, + 3.008036011292237077e-06, + 3.007742756634544677e-06, + 3.007444642943234019e-06, + 3.007141671380748132e-06, + 3.006833843117238045e-06, + 3.006521159330645373e-06, + 3.006203621206684952e-06, + 3.005881229938801216e-06, + 3.005553986728202930e-06, + 3.005221892783865300e-06, + 3.004884949322475770e-06, + 3.004543157568510250e-06, + 3.004196518754137404e-06, + 3.003845034119308435e-06, + 3.003488704911702874e-06, + 3.003127532386687924e-06, + 3.002761517807415443e-06, + 3.002390662444743595e-06, + 3.002014967577241086e-06, + 3.001634434491204103e-06, + 3.001249064480654620e-06, + 3.000858858847318376e-06, + 3.000463818900653251e-06, + 3.000063945957764561e-06, + 2.999659241343532113e-06, + 2.999249706390498400e-06, + 2.998835342438879609e-06, + 2.998416150836655406e-06, + 2.997992132939455860e-06, + 2.997563290110573301e-06, + 2.997129623721019492e-06, + 2.996691135149490055e-06, + 2.996247825782336099e-06, + 2.995799697013590893e-06, + 2.995346750244963101e-06, + 2.994888986885818560e-06, + 2.994426408353204851e-06, + 2.993959016071809370e-06, + 2.993486811473993628e-06, + 2.993009795999772081e-06, + 2.992527971096785871e-06, + 2.992041338220354066e-06, + 2.991549898833410564e-06, + 2.991053654406568462e-06, + 2.990552606418045943e-06, + 2.990046756353708626e-06, + 2.989536105707032298e-06, + 2.989020655979134254e-06, + 2.988500408678758898e-06, + 2.987975365322247246e-06, + 2.987445527433614860e-06, + 2.986910896544401069e-06, + 2.986371474193810852e-06, + 2.985827261928655120e-06, + 2.985278261303328268e-06, + 2.984724473879828086e-06, + 2.984165901227757869e-06, + 2.983602544924278142e-06, + 2.983034406554145623e-06, + 2.982461487709776321e-06, + 2.981883789991046069e-06, + 2.981301315005475592e-06, + 2.980714064368164021e-06, + 2.980122039701735951e-06, + 2.979525242636406239e-06, + 2.978923674809961368e-06, + 2.978317337867734464e-06, + 2.977706233462621808e-06, + 2.977090363255025664e-06, + 2.976469728912938982e-06, + 2.975844332111930575e-06, + 2.975214174535007051e-06, + 2.974579257872791539e-06, + 2.973939583823434328e-06, + 2.973295154092545946e-06, + 2.972645970393335233e-06, + 2.971992034446489905e-06, + 2.971333347980229497e-06, + 2.970669912730284606e-06, + 2.970001730439901977e-06, + 2.969328802859764881e-06, + 2.968651131748196402e-06, + 2.967968718870873141e-06, + 2.967281566001026387e-06, + 2.966589674919411621e-06, + 2.965893047414178921e-06, + 2.965191685280996208e-06, + 2.964485590323102182e-06, + 2.963774764351063650e-06, + 2.963059209182988128e-06, + 2.962338926644459046e-06, + 2.961613918568442997e-06, + 2.960884186795506999e-06, + 2.960149733173489425e-06, + 2.959410559557843476e-06, + 2.958666667811352150e-06, + 2.957918059804314594e-06, + 2.957164737414364835e-06, + 2.956406702526718692e-06, + 2.955643957033886634e-06, + 2.954876502835846570e-06, + 2.954104341840048512e-06, + 2.953327475961230341e-06, + 2.952545907121701992e-06, + 2.951759637251097269e-06, + 2.950968668286403914e-06, + 2.950173002172080504e-06, + 2.949372640859971740e-06, + 2.948567586309295745e-06, + 2.947757840486700393e-06, + 2.946943405366110841e-06, + 2.946124282928927310e-06, + 2.945300475163920482e-06, + 2.944471984067115448e-06, + 2.943638811642079285e-06, + 2.942800959899647456e-06, + 2.941958430857948380e-06, + 2.941111226542567752e-06, + 2.940259348986393964e-06, + 2.939402800229658335e-06, + 2.938541582319940619e-06, + 2.937675697312185097e-06, + 2.936805147268562512e-06, + 2.935929934258659806e-06, + 2.935050060359386094e-06, + 2.934165527654926082e-06, + 2.933276338236838323e-06, + 2.932382494203877335e-06, + 2.931483997662197741e-06, + 2.930580850725239073e-06, + 2.929673055513699508e-06, + 2.928760614155612108e-06, + 2.927843528786306697e-06, + 2.926921801548282814e-06, + 2.925995434591436708e-06, + 2.925064430072893211e-06, + 2.924128790157045121e-06, + 2.923188517015581574e-06, + 2.922243612827354645e-06, + 2.921294079778569076e-06, + 2.920339920062649294e-06, + 2.919381135880250001e-06, + 2.918417729439284545e-06, + 2.917449702954917727e-06, + 2.916477058649464149e-06, + 2.915499798752527558e-06, + 2.914517925500966114e-06, + 2.913531441138789052e-06, + 2.912540347917258326e-06, + 2.911544648094854730e-06, + 2.910544343937171169e-06, + 2.909539437717099432e-06, + 2.908529931714691275e-06, + 2.907515828217181298e-06, + 2.906497129519030980e-06, + 2.905473837921778766e-06, + 2.904445955734188712e-06, + 2.903413485272329264e-06, + 2.902376428859199715e-06, + 2.901334788825104169e-06, + 2.900288567507500348e-06, + 2.899237767250916582e-06, + 2.898182390407093262e-06, + 2.897122439334901102e-06, + 2.896057916400351728e-06, + 2.894988823976556597e-06, + 2.893915164443833296e-06, + 2.892836940189426451e-06, + 2.891754153608011281e-06, + 2.890666807101060448e-06, + 2.889574903077331942e-06, + 2.888478443952692900e-06, + 2.887377432149971379e-06, + 2.886271870099174459e-06, + 2.885161760237506887e-06, + 2.884047105009026328e-06, + 2.882927906865038931e-06, + 2.881804168263900700e-06, + 2.880675891670869690e-06, + 2.879543079558588385e-06, + 2.878405734406422172e-06, + 2.877263858700983652e-06, + 2.876117454935918762e-06, + 2.874966525611761515e-06, + 2.873811073236315579e-06, + 2.872651100324319708e-06, + 2.871486609397413433e-06, + 2.870317602984425052e-06, + 2.869144083621173004e-06, + 2.867966053850324836e-06, + 2.866783516221816483e-06, + 2.865596473292447814e-06, + 2.864404927625939381e-06, + 2.863208881793119609e-06, + 2.862008338371763445e-06, + 2.860803299946624537e-06, + 2.859593769109489026e-06, + 2.858379748458956586e-06, + 2.857161240600747895e-06, + 2.855938248147537773e-06, + 2.854710773718761211e-06, + 2.853478819941092789e-06, + 2.852242389447990127e-06, + 2.851001484879796376e-06, + 2.849756108883879555e-06, + 2.848506264114535141e-06, + 2.847251953232947956e-06, + 2.845993178907279406e-06, + 2.844729943812463350e-06, + 2.843462250630474186e-06, + 2.842190102050151935e-06, + 2.840913500767219187e-06, + 2.839632449484292107e-06, + 2.838346950910951591e-06, + 2.837057007763460352e-06, + 2.835762622765133925e-06, + 2.834463798646108577e-06, + 2.833160538143370529e-06, + 2.831852844000774595e-06, + 2.830540718969065775e-06, + 2.829224165805711126e-06, + 2.827903187275148360e-06, + 2.826577786148600349e-06, + 2.825247965204136952e-06, + 2.823913727226698740e-06, + 2.822575075007879724e-06, + 2.821232011346264905e-06, + 2.819884539047160912e-06, + 2.818532660922728564e-06, + 2.817176379791889698e-06, + 2.815815698480417801e-06, + 2.814450619820717356e-06, + 2.813081146652148681e-06, + 2.811707281820755186e-06, + 2.810329028179384493e-06, + 2.808946388587647785e-06, + 2.807559365911951565e-06, + 2.806167963025304960e-06, + 2.804772182807619143e-06, + 2.803372028145503624e-06, + 2.801967501932299284e-06, + 2.800558607068114798e-06, + 2.799145346459662731e-06, + 2.797727723020434456e-06, + 2.796305739670847532e-06, + 2.794879399337646008e-06, + 2.793448704954540778e-06, + 2.792013659461922440e-06, + 2.790574265806702472e-06, + 2.789130526942638076e-06, + 2.787682445830125919e-06, + 2.786230025436238134e-06, + 2.784773268734748159e-06, + 2.783312178705942265e-06, + 2.781846758336860964e-06, + 2.780377010621395148e-06, + 2.778902938559681730e-06, + 2.777424545158799481e-06, + 2.775941833432391254e-06, + 2.774454806400595797e-06, + 2.772963467090277724e-06, + 2.771467818535080454e-06, + 2.769967863774926883e-06, + 2.768463605856560642e-06, + 2.766955047833314006e-06, + 2.765442192764916891e-06, + 2.763925043718050389e-06, + 2.762403603765596718e-06, + 2.760877875987230033e-06, + 2.759347863469194922e-06, + 2.757813569304057378e-06, + 2.756274996591303657e-06, + 2.754732148436801981e-06, + 2.753185027952812710e-06, + 2.751633638258347052e-06, + 2.750077982478926091e-06, + 2.748518063746369446e-06, + 2.746953885199436900e-06, + 2.745385449982951722e-06, + 2.743812761248542244e-06, + 2.742235822154236555e-06, + 2.740654635864567534e-06, + 2.739069205550564802e-06, + 2.737479534389789451e-06, + 2.735885625566113816e-06, + 2.734287482270037419e-06, + 2.732685107698564145e-06, + 2.731078505054883339e-06, + 2.729467677549016938e-06, + 2.727852628397243909e-06, + 2.726233360822162935e-06, + 2.724609878052999035e-06, + 2.722982183325323199e-06, + 2.721350279881151493e-06, + 2.719714170968980206e-06, + 2.718073859843504640e-06, + 2.716429349766026104e-06, + 2.714780644004180446e-06, + 2.713127745831996069e-06, + 2.711470658529877843e-06, + 2.709809385384691378e-06, + 2.708143929689447511e-06, + 2.706474294743763935e-06, + 2.704800483853518763e-06, + 2.703122500330952174e-06, + 2.701440347494657517e-06, + 2.699754028669622391e-06, + 2.698063547186979198e-06, + 2.696368906384393926e-06, + 2.694670109605787905e-06, + 2.692967160201383116e-06, + 2.691260061527783512e-06, + 2.689548816947706505e-06, + 2.687833429830351850e-06, + 2.686113903551161936e-06, + 2.684390241491825597e-06, + 2.682662447040364082e-06, + 2.680930523591101416e-06, + 2.679194474544411979e-06, + 2.677454303307160963e-06, + 2.675710013292387161e-06, + 2.673961607919366493e-06, + 2.672209090613628101e-06, + 2.670452464806982296e-06, + 2.668691733937288480e-06, + 2.666926901448803267e-06, + 2.665157970791937814e-06, + 2.663384945423309912e-06, + 2.661607828805824031e-06, + 2.659826624408323612e-06, + 2.658041335706028983e-06, + 2.656251966180522961e-06, + 2.654458519319151998e-06, + 2.652660998615700419e-06, + 2.650859407570126152e-06, + 2.649053749688315928e-06, + 2.647244028482526592e-06, + 2.645430247471077203e-06, + 2.643612410178420608e-06, + 2.641790520135239160e-06, + 2.639964580878069479e-06, + 2.638134595949740793e-06, + 2.636300568899407123e-06, + 2.634462503281865851e-06, + 2.632620402658318348e-06, + 2.630774270596054461e-06, + 2.628924110668217031e-06, + 2.627069926454180523e-06, + 2.625211721539598881e-06, + 2.623349499515741452e-06, + 2.621483263980232872e-06, + 2.619613018536756605e-06, + 2.617738766794709350e-06, + 2.615860512370088736e-06, + 2.613978258884354058e-06, + 2.612092009965313972e-06, + 2.610201769246773280e-06, + 2.608307540368240703e-06, + 2.606409326975699681e-06, + 2.604507132720880776e-06, + 2.602600961261347639e-06, + 2.600690816260899778e-06, + 2.598776701389271863e-06, + 2.596858620321891047e-06, + 2.594936576740662167e-06, + 2.593010574332901757e-06, + 2.591080616792195660e-06, + 2.589146707817980603e-06, + 2.587208851115630167e-06, + 2.585267050396439537e-06, + 2.583321309377713601e-06, + 2.581371631782408224e-06, + 2.579418021339638897e-06, + 2.577460481784406293e-06, + 2.575499016857300659e-06, + 2.573533630305258209e-06, + 2.571564325880861906e-06, + 2.569591107342399054e-06, + 2.567613978454267877e-06, + 2.565632942986628540e-06, + 2.563648004715506488e-06, + 2.561659167422835644e-06, + 2.559666434896148820e-06, + 2.557669810929051629e-06, + 2.555669299320967107e-06, + 2.553664903876813841e-06, + 2.551656628407791589e-06, + 2.549644476730663845e-06, + 2.547628452667832803e-06, + 2.545608560047706120e-06, + 2.543584802704420781e-06, + 2.541557184477862165e-06, + 2.539525709213695377e-06, + 2.537490380763402944e-06, + 2.535451202983997674e-06, + 2.533408179738464377e-06, + 2.531361314895448165e-06, + 2.529310612329308230e-06, + 2.527256075920249565e-06, + 2.525197709553905795e-06, + 2.523135517121870270e-06, + 2.521069502521363604e-06, + 2.518999669655302706e-06, + 2.516926022432283842e-06, + 2.514848564766656749e-06, + 2.512767300578220550e-06, + 2.510682233792653201e-06, + 2.508593368341239168e-06, + 2.506500708160893993e-06, + 2.504404257194261279e-06, + 2.502304019389382344e-06, + 2.500199998700146000e-06, + 2.498092199086025123e-06, + 2.495980624512077078e-06, + 2.493865278948963198e-06, + 2.491746166373045351e-06, + 2.489623290766011121e-06, + 2.487496656115308341e-06, + 2.485366266414216668e-06, + 2.483232125661068307e-06, + 2.481094237860110721e-06, + 2.478952607021146211e-06, + 2.476807237159255790e-06, + 2.474658132295333236e-06, + 2.472505296455714934e-06, + 2.470348733672250609e-06, + 2.468188447982418940e-06, + 2.466024443428948945e-06, + 2.463856724060215112e-06, + 2.461685293930391141e-06, + 2.459510157098590207e-06, + 2.457331317629762810e-06, + 2.455148779594351190e-06, + 2.452962547067873006e-06, + 2.450772624131963614e-06, + 2.448579014873083918e-06, + 2.446381723383473702e-06, + 2.444180753760749292e-06, + 2.441976110108017060e-06, + 2.439767796533474890e-06, + 2.437555817151345191e-06, + 2.435340176080625094e-06, + 2.433120877446099931e-06, + 2.430897925377936234e-06, + 2.428671324011297607e-06, + 2.426441077487297211e-06, + 2.424207189952147348e-06, + 2.421969665557220866e-06, + 2.419728508459526773e-06, + 2.417483722821437485e-06, + 2.415235312810285225e-06, + 2.412983282599378029e-06, + 2.410727636366702098e-06, + 2.408468378295932730e-06, + 2.406205512576057813e-06, + 2.403939043400992002e-06, + 2.401668974970507609e-06, + 2.399395311489390957e-06, + 2.397118057167499554e-06, + 2.394837216220260153e-06, + 2.392552792868357462e-06, + 2.390264791337360603e-06, + 2.387973215858647229e-06, + 2.385678070668560298e-06, + 2.383379360008477959e-06, + 2.381077088125303128e-06, + 2.378771259271049722e-06, + 2.376461877702941756e-06, + 2.374148947683512449e-06, + 2.371832473480185785e-06, + 2.369512459365884266e-06, + 2.367188909618585484e-06, + 2.364861828521468663e-06, + 2.362531220362865948e-06, + 2.360197089436343729e-06, + 2.357859440040364665e-06, + 2.355518276478787020e-06, + 2.353173603060530498e-06, + 2.350825424099616062e-06, + 2.348473743915316280e-06, + 2.346118566831689878e-06, + 2.343759897178200500e-06, + 2.341397739289313095e-06, + 2.339032097504569729e-06, + 2.336662976168604829e-06, + 2.334290379631202783e-06, + 2.331914312246943879e-06, + 2.329534778375733277e-06, + 2.327151782382443987e-06, + 2.324765328636977006e-06, + 2.322375421514266823e-06, + 2.319982065394373748e-06, + 2.317585264662084112e-06, + 2.315185023707470577e-06, + 2.312781346925534267e-06, + 2.310374238716247542e-06, + 2.307963703484678090e-06, + 2.305549745640564984e-06, + 2.303132369598917960e-06, + 2.300711579779612112e-06, + 2.298287380607464548e-06, + 2.295859776512256410e-06, + 2.293428771928792596e-06, + 2.290994371296508730e-06, + 2.288556579060063667e-06, + 2.286115399668930372e-06, + 2.283670837577482320e-06, + 2.281222897245006201e-06, + 2.278771583135757400e-06, + 2.276316899718588148e-06, + 2.273858851467523510e-06, + 2.271397442861346754e-06, + 2.268932678383694651e-06, + 2.266464562523179441e-06, + 2.263993099772920427e-06, + 2.261518294631078029e-06, + 2.259040151600988461e-06, + 2.256558675190137975e-06, + 2.254073869911246640e-06, + 2.251585740281854143e-06, + 2.249094290823862390e-06, + 2.246599526064682812e-06, + 2.244101450535794294e-06, + 2.241600068773860408e-06, + 2.239095385320183927e-06, + 2.236587404720930015e-06, + 2.234076131526601070e-06, + 2.231561570293160733e-06, + 2.229043725580574031e-06, + 2.226522601953945360e-06, + 2.223998203983074223e-06, + 2.221470536242084225e-06, + 2.218939603310386996e-06, + 2.216405409771784765e-06, + 2.213867960214547856e-06, + 2.211327259231930537e-06, + 2.208783311421860156e-06, + 2.206236121386476357e-06, + 2.203685693733341487e-06, + 2.201132033073881635e-06, + 2.198575144024597888e-06, + 2.196015031206610626e-06, + 2.193451699245220339e-06, + 2.190885152770988436e-06, + 2.188315396418741986e-06, + 2.185742434827689333e-06, + 2.183166272641948228e-06, + 2.180586914510200233e-06, + 2.178004365085268054e-06, + 2.175418629025173485e-06, + 2.172829710992167558e-06, + 2.170237615652825829e-06, + 2.167642347678572272e-06, + 2.165043911745271854e-06, + 2.162442312533270346e-06, + 2.159837554727565426e-06, + 2.157229643017289984e-06, + 2.154618582096429140e-06, + 2.152004376663326422e-06, + 2.149387031420790915e-06, + 2.146766551076117168e-06, + 2.144142940341163542e-06, + 2.141516203931895662e-06, + 2.138886346569060230e-06, + 2.136253372977719157e-06, + 2.133617287887373231e-06, + 2.130978096032037079e-06, + 2.128335802149796589e-06, + 2.125690410983495861e-06, + 2.123041927280231943e-06, + 2.120390355791497564e-06, + 2.117735701273156987e-06, + 2.115077968485545542e-06, + 2.112417162193039749e-06, + 2.109753287164676931e-06, + 2.107086348173739736e-06, + 2.104416349997842119e-06, + 2.101743297418919593e-06, + 2.099067195223326223e-06, + 2.096388048201404748e-06, + 2.093705861148125250e-06, + 2.091020638862625637e-06, + 2.088332386148333190e-06, + 2.085641107813081880e-06, + 2.082946808668595255e-06, + 2.080249493531217424e-06, + 2.077549167221420938e-06, + 2.074845834563917746e-06, + 2.072139500387647763e-06, + 2.069430169525894487e-06, + 2.066717846815811089e-06, + 2.064002537099092106e-06, + 2.061284245221531289e-06, + 2.058562976033088522e-06, + 2.055838734387926245e-06, + 2.053111525144476788e-06, + 2.050381353164876980e-06, + 2.047648223316248017e-06, + 2.044912140469015794e-06, + 2.042173109498233968e-06, + 2.039431135283055415e-06, + 2.036686222706442116e-06, + 2.033938376655666180e-06, + 2.031187602022480945e-06, + 2.028433903702007972e-06, + 2.025677286593949157e-06, + 2.022917755602063257e-06, + 2.020155315633721203e-06, + 2.017389971601172411e-06, + 2.014621728419894764e-06, + 2.011850591009877018e-06, + 2.009076564295142348e-06, + 2.006299653203406992e-06, + 2.003519862666611765e-06, + 2.000737197621074101e-06, + 1.997951663006408087e-06, + 1.995163263766677272e-06, + 1.992372004849944050e-06, + 1.989577891207758473e-06, + 1.986780927796357224e-06, + 1.983981119575569678e-06, + 1.981178471508956391e-06, + 1.978372988564340187e-06, + 1.975564675713502922e-06, + 1.972753537931659055e-06, + 1.969939580198785062e-06, + 1.967122807497905468e-06, + 1.964303224816442169e-06, + 1.961480837145685462e-06, + 1.958655649480340880e-06, + 1.955827666819696826e-06, + 1.952996894166534447e-06, + 1.950163336527264423e-06, + 1.947326998912489824e-06, + 1.944487886336661369e-06, + 1.941646003817559885e-06, + 1.938801356377641823e-06, + 1.935953949042312577e-06, + 1.933103786841282164e-06, + 1.930250874807907923e-06, + 1.927395217979352068e-06, + 1.924536821396524084e-06, + 1.921675690104259455e-06, + 1.918811829150752573e-06, + 1.915945243588324154e-06, + 1.913075938472906234e-06, + 1.910203918864174740e-06, + 1.907329189825500565e-06, + 1.904451756424120462e-06, + 1.901571623730592610e-06, + 1.898688796819538830e-06, + 1.895803280769142718e-06, + 1.892915080661273730e-06, + 1.890024201581581635e-06, + 1.887130648619018142e-06, + 1.884234426866544397e-06, + 1.881335541420651340e-06, + 1.878433997381457966e-06, + 1.875529799852714711e-06, + 1.872622953941898322e-06, + 1.869713464759725871e-06, + 1.866801337420898870e-06, + 1.863886577043558213e-06, + 1.860969188749440445e-06, + 1.858049177663865484e-06, + 1.855126548915819210e-06, + 1.852201307637477848e-06, + 1.849273458964925414e-06, + 1.846343008037673650e-06, + 1.843409959998754148e-06, + 1.840474319994834809e-06, + 1.837536093175729205e-06, + 1.834595284695123963e-06, + 1.831651899710070764e-06, + 1.828705943381095180e-06, + 1.825757420872210654e-06, + 1.822806337351007438e-06, + 1.819852697988173806e-06, + 1.816896507958191045e-06, + 1.813937772438893212e-06, + 1.810976496611508212e-06, + 1.808012685660834195e-06, + 1.805046344774677123e-06, + 1.802077479144527552e-06, + 1.799106093965617384e-06, + 1.796132194435829310e-06, + 1.793155785756919078e-06, + 1.790176873134006428e-06, + 1.787195461775187786e-06, + 1.784211556892159680e-06, + 1.781225163700347910e-06, + 1.778236287417737378e-06, + 1.775244933266154912e-06, + 1.772251106470712983e-06, + 1.769254812259357176e-06, + 1.766256055864192642e-06, + 1.763254842519720151e-06, + 1.760251177464231161e-06, + 1.757245065939288792e-06, + 1.754236513189322102e-06, + 1.751225524462270886e-06, + 1.748212105009699396e-06, + 1.745196260085629336e-06, + 1.742177994947834979e-06, + 1.739157314857276925e-06, + 1.736134225077623948e-06, + 1.733108730876638957e-06, + 1.730080837524359144e-06, + 1.727050550294527259e-06, + 1.724017874463922029e-06, + 1.720982815312610152e-06, + 1.717945378123277351e-06, + 1.714905568182678072e-06, + 1.711863390779779212e-06, + 1.708818851207183557e-06, + 1.705771954760625159e-06, + 1.702722706738409666e-06, + 1.699671112442717264e-06, + 1.696617177178427846e-06, + 1.693560906253241712e-06, + 1.690502304978318022e-06, + 1.687441378667735234e-06, + 1.684378132638623454e-06, + 1.681312572211299328e-06, + 1.678244702708701490e-06, + 1.675174529457192071e-06, + 1.672102057786010571e-06, + 1.669027293027407059e-06, + 1.665950240516619300e-06, + 1.662870905592010823e-06, + 1.659789293594519076e-06, + 1.656705409868457784e-06, + 1.653619259760947525e-06, + 1.650530848622075187e-06, + 1.647440181804861779e-06, + 1.644347264665387372e-06, + 1.641252102562265087e-06, + 1.638154700857407874e-06, + 1.635055064915514575e-06, + 1.631953200104167966e-06, + 1.628849111793967744e-06, + 1.625742805357993508e-06, + 1.622634286172602658e-06, + 1.619523559616852093e-06, + 1.616410631072666340e-06, + 1.613295505924808333e-06, + 1.610178189560999693e-06, + 1.607058687371384978e-06, + 1.603937004749310530e-06, + 1.600813147090812023e-06, + 1.597687119794700644e-06, + 1.594558928262580460e-06, + 1.591428577898960861e-06, + 1.588296074110720812e-06, + 1.585161422307898923e-06, + 1.582024627903127205e-06, + 1.578885696311799634e-06, + 1.575744632952164898e-06, + 1.572601443244784720e-06, + 1.569456132613339387e-06, + 1.566308706484067860e-06, + 1.563159170285914948e-06, + 1.560007529450495519e-06, + 1.556853789412241461e-06, + 1.553697955607831203e-06, + 1.550540033477021083e-06, + 1.547380028462065762e-06, + 1.544217946007853749e-06, + 1.541053791562051186e-06, + 1.537887570574515279e-06, + 1.534719288498002624e-06, + 1.531548950788264507e-06, + 1.528376562902825050e-06, + 1.525202130302343669e-06, + 1.522025658450040572e-06, + 1.518847152811302891e-06, + 1.515666618854325457e-06, + 1.512484062050274919e-06, + 1.509299487872014954e-06, + 1.506112901795494347e-06, + 1.502924309299172700e-06, + 1.499733715863459695e-06, + 1.496541126972243568e-06, + 1.493346548110921968e-06, + 1.490149984767923439e-06, + 1.486951442434149437e-06, + 1.483750926602541922e-06, + 1.480548442768778345e-06, + 1.477343996431386001e-06, + 1.474137593090492441e-06, + 1.470929238249209314e-06, + 1.467718937413054265e-06, + 1.464506696089393801e-06, + 1.461292519788966890e-06, + 1.458076414023925775e-06, + 1.454858384309342633e-06, + 1.451638436162527714e-06, + 1.448416575103287475e-06, + 1.445192806653217304e-06, + 1.441967136337224914e-06, + 1.438739569681576234e-06, + 1.435510112215406094e-06, + 1.432278769470164265e-06, + 1.429045546979050064e-06, + 1.425810450278379891e-06, + 1.422573484906349074e-06, + 1.419334656403133095e-06, + 1.416093970311594435e-06, + 1.412851432176708075e-06, + 1.409607047545702316e-06, + 1.406360821968168679e-06, + 1.403112760995514093e-06, + 1.399862870181782083e-06, + 1.396611155083217828e-06, + 1.393357621257707845e-06, + 1.390102274266169758e-06, + 1.386845119671278359e-06, + 1.383586163037593726e-06, + 1.380325409932253880e-06, + 1.377062865924431205e-06, + 1.373798536585413550e-06, + 1.370532427488631755e-06, + 1.367264544209780992e-06, + 1.363994892326241183e-06, + 1.360723477417922758e-06, + 1.357450305066698726e-06, + 1.354175380856505677e-06, + 1.350898710373526110e-06, + 1.347620299205560145e-06, + 1.344340152942896908e-06, + 1.341058277177738339e-06, + 1.337774677504314595e-06, + 1.334489359518893374e-06, + 1.331202328819895107e-06, + 1.327913591007333069e-06, + 1.324623151683638605e-06, + 1.321331016453100390e-06, + 1.318037190921980050e-06, + 1.314741680698659548e-06, + 1.311444491393053974e-06, + 1.308145628617461760e-06, + 1.304845097985971752e-06, + 1.301542905114630077e-06, + 1.298239055621383182e-06, + 1.294933555126251896e-06, + 1.291626409250725593e-06, + 1.288317623618481744e-06, + 1.285007203855510009e-06, + 1.281695155588817755e-06, + 1.278381484447865574e-06, + 1.275066196063956983e-06, + 1.271749296069823391e-06, + 1.268430790100462015e-06, + 1.265110683792562449e-06, + 1.261788982784632015e-06, + 1.258465692717127695e-06, + 1.255140819231887347e-06, + 1.251814367972826389e-06, + 1.248486344586072053e-06, + 1.245156754718660649e-06, + 1.241825604019969898e-06, + 1.238492898141136387e-06, + 1.235158642734602401e-06, + 1.231822843454975878e-06, + 1.228485505958462895e-06, + 1.225146635902976302e-06, + 1.221806238948131483e-06, + 1.218464320755388026e-06, + 1.215120886987321908e-06, + 1.211775943309194835e-06, + 1.208429495386926659e-06, + 1.205081548888676150e-06, + 1.201732109484254217e-06, + 1.198381182844672228e-06, + 1.195028774642868759e-06, + 1.191674890553837290e-06, + 1.188319536253310338e-06, + 1.184962717419206823e-06, + 1.181604439731035757e-06, + 1.178244708869317510e-06, + 1.174883530517155267e-06, + 1.171520910358204691e-06, + 1.168156854078251732e-06, + 1.164791367364637280e-06, + 1.161424455905790240e-06, + 1.158056125391965721e-06, + 1.154686381515378652e-06, + 1.151315229968866322e-06, + 1.147942676447350353e-06, + 1.144568726647246749e-06, + 1.141193386265856449e-06, + 1.137816661002837896e-06, + 1.134438556558860046e-06, + 1.131059078635762875e-06, + 1.127678232937258515e-06, + 1.124296025168341719e-06, + 1.120912461035434489e-06, + 1.117527546246521178e-06, + 1.114141286510537994e-06, + 1.110753687538268101e-06, + 1.107364755041863890e-06, + 1.103974494734282646e-06, + 1.100582912330712951e-06, + 1.097190013547270463e-06, + 1.093795804101105704e-06, + 1.090400289711166387e-06, + 1.087003476097569132e-06, + 1.083605368981743035e-06, + 1.080205974086591877e-06, + 1.076805297135851225e-06, + 1.073403343855004288e-06, + 1.070000119970660404e-06, + 1.066595631210697343e-06, + 1.063189883304257072e-06, + 1.059782881981877892e-06, + 1.056374632974889867e-06, + 1.052965142016313952e-06, + 1.049554414840228198e-06, + 1.046142457181933136e-06, + 1.042729274777929969e-06, + 1.039314873366059478e-06, + 1.035899258684900849e-06, + 1.032482436474654063e-06, + 1.029064412476543801e-06, + 1.025645192432935062e-06, + 1.022224782087498543e-06, + 1.018803187184588713e-06, + 1.015380413470130649e-06, + 1.011956466691032198e-06, + 1.008531352595287529e-06, + 1.005105076932010162e-06, + 1.001677645451537370e-06, + 9.982490639048387349e-07, + 9.948193380444051111e-07, + 9.913884736236362180e-07, + 9.879564763969827319e-07, + 9.845233521199371792e-07, + 9.810891065491633214e-07, + 9.776537454419167842e-07, + 9.742172745568965374e-07, + 9.707796996536604422e-07, + 9.673410264927603529e-07, + 9.639012608358831482e-07, + 9.604604084452345143e-07, + 9.570184750842847575e-07, + 9.535754665179168235e-07, + 9.501313885110523037e-07, + 9.466862468301469781e-07, + 9.432400472425877276e-07, + 9.397927955162238070e-07, + 9.363444974202653358e-07, + 9.328951587246665517e-07, + 9.294447852002698064e-07, + 9.259933826187996366e-07, + 9.225409567529963831e-07, + 9.190875133758584142e-07, + 9.156330582622871694e-07, + 9.121775971869712713e-07, + 9.087211359260331574e-07, + 9.052636802564096874e-07, + 9.018052359554059686e-07, + 8.983458088014294159e-07, + 8.948854045741257002e-07, + 8.914240290530257198e-07, + 8.879616880190316132e-07, + 8.844983872538149425e-07, + 8.810341325391867127e-07, + 8.775689296587757673e-07, + 8.741027843958779600e-07, + 8.706357025351182451e-07, + 8.671676898618416606e-07, + 8.636987521614940418e-07, + 8.602288952211250805e-07, + 8.567581248280213203e-07, + 8.532864467698347995e-07, + 8.498138668353520510e-07, + 8.463403908140118232e-07, + 8.428660244952956398e-07, + 8.393907736702340357e-07, + 8.359146441300390228e-07, + 8.324376416662278625e-07, + 8.289597720713927009e-07, + 8.254810411385775763e-07, + 8.220014546614120385e-07, + 8.185210184342621323e-07, + 8.150397382516075110e-07, + 8.115576199089533730e-07, + 8.080746692023562291e-07, + 8.045908919278041924e-07, + 8.011062938827367668e-07, + 7.976208808646652423e-07, + 7.941346586713033499e-07, + 7.906476331013373202e-07, + 7.871598099537880675e-07, + 7.836711950281692678e-07, + 7.801817941246234131e-07, + 7.766916130432976540e-07, + 7.732006575852683364e-07, + 7.697089335518934445e-07, + 7.662164467449816900e-07, + 7.627232029667610658e-07, + 7.592292080200408413e-07, + 7.557344677075771345e-07, + 7.522389878329849548e-07, + 7.487427742001252689e-07, + 7.452458326132340672e-07, + 7.417481688769220464e-07, + 7.382497887963166991e-07, + 7.347506981764349801e-07, + 7.312509028231046665e-07, + 7.277504085423271773e-07, + 7.242492211404320507e-07, + 7.207473464242213635e-07, + 7.172447902003329739e-07, + 7.137415582761731049e-07, + 7.102376564592695289e-07, + 7.067330905574373739e-07, + 7.032278663787470428e-07, + 6.997219897316951016e-07, + 6.962154664245559822e-07, + 6.927083022663077890e-07, + 6.892005030660014712e-07, + 6.856920746329117007e-07, + 6.821830227765218370e-07, + 6.786733533066686641e-07, + 6.751630720329184451e-07, + 6.716521847654875406e-07, + 6.681406973146010993e-07, + 6.646286154906542058e-07, + 6.611159451043462413e-07, + 6.576026919660605380e-07, + 6.540888618866161205e-07, + 6.505744606774310775e-07, + 6.470594941491007110e-07, + 6.435439681129557594e-07, + 6.400278883804134645e-07, + 6.365112607625184793e-07, + 6.329940910708531110e-07, + 6.294763851169204691e-07, + 6.259581487122725796e-07, + 6.224393876686704735e-07, + 6.189201077974511362e-07, + 6.154003149102852839e-07, + 6.118800148193363943e-07, + 6.083592133358400205e-07, + 6.048379162716603199e-07, + 6.013161294386503326e-07, + 5.977938586481801842e-07, + 5.942711097119013208e-07, + 5.907478884418984461e-07, + 5.872242006492760348e-07, + 5.837000521457023681e-07, + 5.801754487427851640e-07, + 5.766503962514292094e-07, + 5.731249004835514952e-07, + 5.695989672498776609e-07, + 5.660726023616611530e-07, + 5.625458116300390571e-07, + 5.590186008654032814e-07, + 5.554909758789482979e-07, + 5.519629424812611502e-07, + 5.484345064824675664e-07, + 5.449056736929979948e-07, + 5.413764499231187711e-07, + 5.378468409822878438e-07, + 5.343168526808714984e-07, + 5.307864908279421776e-07, + 5.272557612329913938e-07, + 5.237246697051368000e-07, + 5.201932220532720091e-07, + 5.166614240860494413e-07, + 5.131292816120430605e-07, + 5.095968004390918175e-07, + 5.060639863752491746e-07, + 5.025308452282867435e-07, + 4.989973828050751048e-07, + 4.954636049131249842e-07, + 4.919295173591793780e-07, + 4.883951259493585014e-07, + 4.848604364899274122e-07, + 4.813254547866674067e-07, + 4.777901866450201209e-07, + 4.742546378702320554e-07, + 4.707188142667238540e-07, + 4.671827216390188630e-07, + 4.636463657912592641e-07, + 4.601097525265814929e-07, + 4.565728876486582101e-07, + 4.530357769602877795e-07, + 4.494984262635450929e-07, + 4.459608413605458584e-07, + 4.424230280528157728e-07, + 4.388849921414395464e-07, + 4.353467394270484621e-07, + 4.318082757099678652e-07, + 4.282696067895813589e-07, + 4.247307384652626471e-07, + 4.211916765357369239e-07, + 4.176524267992327043e-07, + 4.141129950536205792e-07, + 4.105733870957899576e-07, + 4.070336087225668798e-07, + 4.034936657300856251e-07, + 3.999535639139330774e-07, + 3.964133090691412084e-07, + 3.928729069903311788e-07, + 3.893323634710813458e-07, + 3.857916843048539172e-07, + 3.822508752843638589e-07, + 3.787099422017185496e-07, + 3.751688908485752228e-07, + 3.716277270154951574e-07, + 3.680864564928799134e-07, + 3.645450850703346284e-07, + 3.610036185368118537e-07, + 3.574620626806098079e-07, + 3.539204232895112900e-07, + 3.503787061501511575e-07, + 3.468369170487905676e-07, + 3.432950617714664257e-07, + 3.397531461025661461e-07, + 3.362111758263904284e-07, + 3.326691567265153882e-07, + 3.291270945853119723e-07, + 3.255849951848798649e-07, + 3.220428643064061783e-07, + 3.185007077303194009e-07, + 3.149585312364306398e-07, + 3.114163406033016287e-07, + 3.078741416090161099e-07, + 3.043319400313318239e-07, + 3.007897416462538413e-07, + 2.972475522295971266e-07, + 2.937053775563502050e-07, + 2.901632234001943650e-07, + 2.866210955344344421e-07, + 2.830789997313624319e-07, + 2.795369417624100625e-07, + 2.759949273981310060e-07, + 2.724529624083533454e-07, + 2.689110525613855334e-07, + 2.653692036257329577e-07, + 2.618274213678909443e-07, + 2.582857115540619042e-07, + 2.547440799495190005e-07, + 2.512025323179689149e-07, + 2.476610744231108644e-07, + 2.441197120272176095e-07, + 2.405784508912784443e-07, + 2.370372967757795252e-07, + 2.334962554402213534e-07, + 2.299553326424789739e-07, + 2.264145341405284667e-07, + 2.228738656902283033e-07, + 2.193333330470454139e-07, + 2.157929419652556682e-07, + 2.122526981980978233e-07, + 2.087126074977562923e-07, + 2.051726756155164684e-07, + 2.016329083011199747e-07, + 1.980933113037065375e-07, + 1.945538903713262285e-07, + 1.910146512503024956e-07, + 1.874755996867991740e-07, + 1.839367414253926265e-07, + 1.803980822092203720e-07, + 1.768596277807577083e-07, + 1.733213838811815375e-07, + 1.697833562505164263e-07, + 1.662455506277835517e-07, + 1.627079727503611377e-07, + 1.591706283549202418e-07, + 1.556335231769446989e-07, + 1.520966629500889645e-07, + 1.485600534077463168e-07, + 1.450237002816208914e-07, + 1.414876093018778975e-07, + 1.379517861979184146e-07, + 1.344162366977434298e-07, + 1.308809665281011155e-07, + 1.273459814144768237e-07, + 1.238112870812418994e-07, + 1.202768892510167647e-07, + 1.167427936456024694e-07, + 1.132090059853448875e-07, + 1.096755319892816503e-07, + 1.061423773752903777e-07, + 1.026095478594511797e-07, + 9.907704915697926627e-08, + 9.554488698159013590e-08, + 9.201306704564358431e-08, + 8.848159506013761648e-08, + 8.495047673485539363e-08, + 8.141971777772694096e-08, + 7.788932389576383523e-08, + 7.435930079442085960e-08, + 7.082965417774490935e-08, + 6.730038974852200505e-08, + 6.377151320764011201e-08, + 6.024303025502245149e-08, + 5.671494658899028046e-08, + 5.318726790641124807e-08, + 4.965999990268936364e-08, + 4.613314827191347888e-08, + 4.260671870622008086e-08, + 3.908071689656905510e-08, + 3.555514853289261117e-08, + 3.203001930267111589e-08, + 2.850533489249597501e-08, + 2.498110098743179090e-08, + 2.145732327053591293e-08, + 1.793400742379226812e-08, + 1.441115912747360486e-08, + 1.088878406028964929e-08, + 7.366887899535074592e-09, + 3.845476320452239479e-09, + 3.245549970074668453e-10, +-3.195870397960990454e-09, +-6.715794194165494084e-09, +-1.023521072230752719e-08, +-1.375411431471494950e-08, +-1.727249930597906935e-08, +-2.079036003123641631e-08, +-2.430769082837613219e-08, +-2.782448603632163729e-08, +-3.134073999582492732e-08, +-3.485644704916150585e-08, +-3.837160154092414351e-08, +-4.188619781630535993e-08, +-4.540023022330366324e-08, +-4.891369311100665406e-08, +-5.242658083022704794e-08, +-5.593888773413959124e-08, +-5.945060817672113740e-08, +-6.296173651417202783e-08, +-6.647226710476703396e-08, +-6.998219430808103675e-08, +-7.349151248546830178e-08, +-7.700021600069819734e-08, +-8.050829921824008500e-08, +-8.401575650546700824e-08, +-8.752258223093985514e-08, +-9.102877076504371833e-08, +-9.453431648062347412e-08, +-9.803921375142571834e-08, +-1.015434569535175730e-07, +-1.050470404651406392e-07, +-1.085499586659335005e-07, +-1.120522059374136182e-07, +-1.155537766636110446e-07, +-1.190546652295113513e-07, +-1.225548660224749785e-07, +-1.260543734320882103e-07, +-1.295531818493897009e-07, +-1.330512856675063452e-07, +-1.365486792815037115e-07, +-1.400453570882417276e-07, +-1.435413134870058003e-07, +-1.470365428785784142e-07, +-1.505310396657186319e-07, +-1.540247982537946949e-07, +-1.575178130492296919e-07, +-1.610100784609179832e-07, +-1.645015889000783200e-07, +-1.679923387794782795e-07, +-1.714823225140721075e-07, +-1.749715345208506082e-07, +-1.784599692186938398e-07, +-1.819476210290082156e-07, +-1.854344843747922269e-07, +-1.889205536812742321e-07, +-1.924058233757660259e-07, +-1.958902878876679480e-07, +-1.993739416483227436e-07, +-2.028567790916508909e-07, +-2.063387946532208764e-07, +-2.098199827708823788e-07, +-2.133003378846190970e-07, +-2.167798544365595495e-07, +-2.202585268708269117e-07, +-2.237363496341720402e-07, +-2.272133171750488839e-07, +-2.306894239442447029e-07, +-2.341646643947334519e-07, +-2.376390329815292706e-07, +-2.411125241623193228e-07, +-2.445851323965347868e-07, +-2.480568521459857329e-07, +-2.515276778747110925e-07, +-2.549976040489909936e-07, +-2.584666251371980529e-07, +-2.619347356104277277e-07, +-2.654019299415732495e-07, +-2.688682026059605288e-07, +-2.723335480811964825e-07, +-2.757979608471797813e-07, +-2.792614353859537303e-07, +-2.827239661823377320e-07, +-2.861855477230027503e-07, +-2.896461744970997024e-07, +-2.931058409961174225e-07, +-2.965645417137317310e-07, +-3.000222711464353621e-07, +-3.034790237927757403e-07, +-3.069347941531981201e-07, +-3.103895767314627785e-07, +-3.138433660330939916e-07, +-3.172961565660110740e-07, +-3.207479428411605300e-07, +-3.241987193708135178e-07, +-3.276484806707498707e-07, +-3.310972212585583137e-07, +-3.345449356542675563e-07, +-3.379916183808179305e-07, +-3.414372639632931855e-07, +-3.448818669287839031e-07, +-3.483254218077761027e-07, +-3.517679231326212347e-07, +-3.552093654381620324e-07, +-3.586497432623549752e-07, +-3.620890511447411293e-07, +-3.655272836278377700e-07, +-3.689644352569990448e-07, +-3.724005005796461261e-07, +-3.758354741457420794e-07, +-3.792693505084189323e-07, +-3.827021242222861494e-07, +-3.861337898456017370e-07, +-3.895643419385823060e-07, +-3.929937750640266476e-07, +-3.964220837879475133e-07, +-3.998492626780297507e-07, +-4.032753063050340488e-07, +-4.067002092426449485e-07, +-4.101239660667126419e-07, +-4.135465713557241349e-07, +-4.169680196914226399e-07, +-4.203883056571305560e-07, +-4.238074238399077627e-07, +-4.272253688288632176e-07, +-4.306421352159443390e-07, +-4.340577175957803572e-07, +-4.374721105656951791e-07, +-4.408853087255631808e-07, +-4.442973066784322530e-07, +-4.477080990296097999e-07, +-4.511176803872817083e-07, +-4.545260453623738578e-07, +-4.579331885685564618e-07, +-4.613391046221002307e-07, +-4.647437881424986234e-07, +-4.681472337515520992e-07, +-4.715494360740007450e-07, +-4.749503897373628629e-07, +-4.783500893718069623e-07, +-4.817485296107605646e-07, +-4.851457050900053080e-07, +-4.885416104482970805e-07, +-4.919362403272202251e-07, +-4.953295893711971746e-07, +-4.987216522273440323e-07, +-5.021124235460883771e-07, +-5.055018979802628317e-07, +-5.088900701857235031e-07, +-5.122769348212034458e-07, +-5.156624865483250494e-07, +-5.190467200314538198e-07, +-5.224296299383207364e-07, +-5.258112109391061863e-07, +-5.291914577070652861e-07, +-5.325703649183817689e-07, +-5.359479272520263179e-07, +-5.393241393903710889e-07, +-5.426989960182823260e-07, +-5.460724918237475901e-07, +-5.494446214977196924e-07, +-5.528153797341287649e-07, +-5.561847612297441943e-07, +-5.595527606847822616e-07, +-5.629193728020114644e-07, +-5.662845922873589917e-07, +-5.696484138497742462e-07, +-5.730108322012332910e-07, +-5.763718420566016304e-07, +-5.797314381343897633e-07, +-5.830896151551012569e-07, +-5.864463678433626116e-07, +-5.898016909262619111e-07, +-5.931555791339642982e-07, +-5.965080272001795369e-07, +-5.998590298614008471e-07, +-6.032085818567726620e-07, +-6.065566779294583745e-07, +-6.099033128251295477e-07, +-6.132484812925908137e-07, +-6.165921780843794672e-07, +-6.199343979551210566e-07, +-6.232751356636499313e-07, +-6.266143859713504333e-07, +-6.299521436427772429e-07, +-6.332884034461134122e-07, +-6.366231601524194699e-07, +-6.399564085354983197e-07, +-6.432881433732543050e-07, +-6.466183594461968186e-07, +-6.499470515380529201e-07, +-6.532742144363712698e-07, +-6.565998429310324097e-07, +-6.599239318156043340e-07, +-6.632464758872067517e-07, +-6.665674699457588159e-07, +-6.698869087944528266e-07, +-6.732047872403429190e-07, +-6.765211000927206656e-07, +-6.798358421652090478e-07, +-6.831490082741308587e-07, +-6.864605932391078729e-07, +-6.897705918836832042e-07, +-6.930789990338061750e-07, +-6.963858095192157333e-07, +-6.996910181732817396e-07, +-7.029946198322665661e-07, +-7.062966093357854589e-07, +-7.095969815274121669e-07, +-7.128957312530409916e-07, +-7.161928533629838289e-07, +-7.194883427103493715e-07, +-7.227821941517758986e-07, +-7.260744025473053853e-07, +-7.293649627603841381e-07, +-7.326538696577326692e-07, +-7.359411181099298318e-07, +-7.392267029905441879e-07, +-7.425106191767380484e-07, +-7.457928615491085487e-07, +-7.490734249917162361e-07, +-7.523523043919298510e-07, +-7.556294946410402137e-07, +-7.589049906333625818e-07, +-7.621787872668532899e-07, +-7.654508794429580246e-07, +-7.687212620664808526e-07, +-7.719899300461779900e-07, +-7.752568782938728656e-07, +-7.785221017250732893e-07, +-7.817855952588073403e-07, +-7.850473538176536478e-07, +-7.883073723275852200e-07, +-7.915656457185794131e-07, +-7.948221689237345822e-07, +-7.980769368798607807e-07, +-8.013299445273570467e-07, +-8.045811868102052614e-07, +-8.078306586758361068e-07, +-8.110783550757236826e-07, +-8.143242709645115797e-07, +-8.175684013006130033e-07, +-8.208107410460602129e-07, +-8.240512851663771495e-07, +-8.272900286311699233e-07, +-8.305269664132497116e-07, +-8.337620934892330930e-07, +-8.369954048394004869e-07, +-8.402268954477115065e-07, +-8.434565603016502689e-07, +-8.466843943928313417e-07, +-8.499103927161241220e-07, +-8.531345502702504193e-07, +-8.563568620576393998e-07, +-8.595773230842924857e-07, +-8.627959283603767012e-07, +-8.660126728995022593e-07, +-8.692275517185781432e-07, +-8.724405598391418413e-07, +-8.756516922858975808e-07, +-8.788609440873232266e-07, +-8.820683102760950682e-07, +-8.852737858883798060e-07, +-8.884773659637031557e-07, +-8.916790455462471847e-07, +-8.948788196834170266e-07, +-8.980766834264284046e-07, +-9.012726318308970603e-07, +-9.044666599552400851e-07, +-9.076587628627263752e-07, +-9.108489356198885503e-07, +-9.140371732971023250e-07, +-9.172234709690326822e-07, +-9.204078237139119906e-07, +-9.235902266134126309e-07, +-9.267706747539566156e-07, +-9.299491632252648326e-07, +-9.331256871209510275e-07, +-9.363002415391111266e-07, +-9.394728215807339913e-07, +-9.426434223517313326e-07, +-9.458120389613631828e-07, +-9.489786665229568146e-07, +-9.521433001536421493e-07, +-9.553059349750546883e-07, +-9.584665661117938068e-07, +-9.616251886934077763e-07, +-9.647817978528425290e-07, +-9.679363887270157345e-07, +-9.710889564574052762e-07, +-9.742394961886059069e-07, +-9.773880030696501969e-07, +-9.805344722538577618e-07, +-9.836788988981237551e-07, +-9.868212781635075561e-07, +-9.899616052150987269e-07, +-9.930998752218641227e-07, +-9.962360833572507680e-07, +-9.993702247983172237e-07, +-1.002502294726323334e-06, +-1.005632288326590679e-06, +-1.008760200788510408e-06, +-1.011886027305401148e-06, +-1.015009763075100239e-06, +-1.018131403299105048e-06, +-1.021250943183152553e-06, +-1.024368377937085939e-06, +-1.027483702774865815e-06, +-1.030596912914421987e-06, +-1.033708003578247865e-06, +-1.036816969992533943e-06, +-1.039923807387761151e-06, +-1.043028510998558338e-06, +-1.046131076063565478e-06, +-1.049231497826016852e-06, +-1.052329771532885120e-06, +-1.055425892435467681e-06, +-1.058519855789243312e-06, +-1.061611656853886145e-06, +-1.064701290893119976e-06, +-1.067788753175309917e-06, +-1.070874038972598637e-06, +-1.073957143561505846e-06, +-1.077038062222759526e-06, +-1.080116790241198735e-06, +-1.083193322906314011e-06, +-1.086267655511432950e-06, +-1.089339783354270782e-06, +-1.092409701736806485e-06, +-1.095477405965301851e-06, +-1.098542891350140121e-06, +-1.101606153206416368e-06, +-1.104667186853090253e-06, +-1.107725987613575349e-06, +-1.110782550815570368e-06, +-1.113836871791101090e-06, +-1.116888945876360486e-06, +-1.119938768412306508e-06, +-1.122986334743789652e-06, +-1.126031640220155191e-06, +-1.129074680195090926e-06, +-1.132115450026494623e-06, +-1.135153945077051266e-06, +-1.138190160713529597e-06, +-1.141224092306663744e-06, +-1.144255735232397721e-06, +-1.147285084870508578e-06, +-1.150312136605175607e-06, +-1.153336885825387344e-06, +-1.156359327924133916e-06, +-1.159379458298957621e-06, +-1.162397272351828406e-06, +-1.165412765489143662e-06, +-1.168425933121600955e-06, +-1.171436770664886872e-06, +-1.174445273538187943e-06, +-1.177451437166104084e-06, +-1.180455256977148928e-06, +-1.183456728404307593e-06, +-1.186455846885464649e-06, +-1.189452607862704890e-06, +-1.192447006782200045e-06, +-1.195439039095438667e-06, +-1.198428700257870248e-06, +-1.201415985729455789e-06, +-1.204400890975219854e-06, +-1.207383411463765085e-06, +-1.210363542669176335e-06, +-1.213341280069529886e-06, +-1.216316619147592043e-06, +-1.219289555390536434e-06, +-1.222260084290652131e-06, +-1.225228201343834025e-06, +-1.228193902051500935e-06, +-1.231157181919118587e-06, +-1.234118036456730924e-06, +-1.237076461179516176e-06, +-1.240032451606444744e-06, +-1.242986003261501459e-06, +-1.245937111673546254e-06, +-1.248885772375657918e-06, +-1.251831980905684251e-06, +-1.254775732806096367e-06, +-1.257717023623872657e-06, +-1.260655848911044908e-06, +-1.263592204223892992e-06, +-1.266526085123355670e-06, +-1.269457487175574819e-06, +-1.272386405950565158e-06, +-1.275312837023414926e-06, +-1.278236775974175336e-06, +-1.281158218387178720e-06, +-1.284077159851598414e-06, +-1.286993595961308151e-06, +-1.289907522314897096e-06, +-1.292818934515536865e-06, +-1.295727828171532515e-06, +-1.298634198895512147e-06, +-1.301538042304975362e-06, +-1.304439354022173402e-06, +-1.307338129673967064e-06, +-1.310234364892382564e-06, +-1.313128055313800923e-06, +-1.316019196579518922e-06, +-1.318907784335604464e-06, +-1.321793814232908012e-06, +-1.324677281926939558e-06, +-1.327558183078400983e-06, +-1.330436513352397256e-06, +-1.333312268418980229e-06, +-1.336185443953015234e-06, +-1.339056035634056351e-06, +-1.341924039146890206e-06, +-1.344789450180729173e-06, +-1.347652264429762582e-06, +-1.350512477593033680e-06, +-1.353370085374433924e-06, +-1.356225083482580153e-06, +-1.359077467631365376e-06, +-1.361927233539270555e-06, +-1.364774376929276938e-06, +-1.367618893530035599e-06, +-1.370460779074561105e-06, +-1.373300029300766201e-06, +-1.376136639951864786e-06, +-1.378970606775587565e-06, +-1.381801925524709958e-06, +-1.384630591956934365e-06, +-1.387456601834759297e-06, +-1.390279950926002209e-06, +-1.393100635003179895e-06, +-1.395918649843349881e-06, +-1.398733991229306857e-06, +-1.401546654948295828e-06, +-1.404356636792520114e-06, +-1.407163932559543273e-06, +-1.409968538051526135e-06, +-1.412770449075731844e-06, +-1.415569661444428874e-06, +-1.418366170974868580e-06, +-1.421159973489192453e-06, +-1.423951064815054049e-06, +-1.426739440784224352e-06, +-1.429525097234403575e-06, +-1.432308030007791161e-06, +-1.435088234951632537e-06, +-1.437865707918596473e-06, +-1.440640444766130909e-06, +-1.443412441356371900e-06, +-1.446181693557257044e-06, +-1.448948197241294314e-06, +-1.451711948286054613e-06, +-1.454472942574696719e-06, +-1.457231175994566506e-06, +-1.459986644438991595e-06, +-1.462739343805890314e-06, +-1.465489269998271022e-06, +-1.468236418924638053e-06, +-1.470980786498343946e-06, +-1.473722368637491823e-06, +-1.476461161266055593e-06, +-1.479197160312636716e-06, +-1.481930361710978778e-06, +-1.484660761400468299e-06, +-1.487388355324883876e-06, +-1.490113139433529513e-06, +-1.492835109681126204e-06, +-1.495554262027179617e-06, +-1.498270592436496577e-06, +-1.500984096879054201e-06, +-1.503694771329894434e-06, +-1.506402611769619573e-06, +-1.509107614183654073e-06, +-1.511809774562618934e-06, +-1.514509088902841196e-06, +-1.517205553205108797e-06, +-1.519899163475810043e-06, +-1.522589915726796607e-06, +-1.525277805974788269e-06, +-1.527962830241850645e-06, +-1.530644984555290157e-06, +-1.533324264947550907e-06, +-1.536000667456689434e-06, +-1.538674188125644577e-06, +-1.541344823002753739e-06, +-1.544012568141621386e-06, +-1.546677419601122856e-06, +-1.549339373445293192e-06, +-1.551998425743822226e-06, +-1.554654572571324864e-06, +-1.557307810007837023e-06, +-1.559958134138693024e-06, +-1.562605541054548458e-06, +-1.565250026851234289e-06, +-1.567891587630287942e-06, +-1.570530219498187797e-06, +-1.573165918566880254e-06, +-1.575798680953638917e-06, +-1.578428502780960194e-06, +-1.581055380177065588e-06, +-1.583679309275155462e-06, +-1.586300286213906672e-06, +-1.588918307137373249e-06, +-1.591533368194973484e-06, +-1.594145465541373887e-06, +-1.596754595336997822e-06, +-1.599360753747285846e-06, +-1.601963936943205826e-06, +-1.604564141101100902e-06, +-1.607161362402730355e-06, +-1.609755597035147631e-06, +-1.612346841191168756e-06, +-1.614935091068683057e-06, +-1.617520342871104423e-06, +-1.620102592807308837e-06, +-1.622681837091469621e-06, +-1.625258071943555290e-06, +-1.627831293588749961e-06, +-1.630401498257342396e-06, +-1.632968682185773569e-06, +-1.635532841615490208e-06, +-1.638093972793395203e-06, +-1.640652071972236182e-06, +-1.643207135409870076e-06, +-1.645759159369758212e-06, +-1.648308140120862122e-06, +-1.650854073937632115e-06, +-1.653396957099895673e-06, +-1.655936785893472403e-06, +-1.658473556608856688e-06, +-1.661007265542886974e-06, +-1.663537908997458918e-06, +-1.666065483279982574e-06, +-1.668589984703766307e-06, +-1.671111409587407359e-06, +-1.673629754254700365e-06, +-1.676145015035705251e-06, +-1.678657188265549952e-06, +-1.681166270284918942e-06, +-1.683672257440534553e-06, +-1.686175146083873940e-06, +-1.688674932572799827e-06, +-1.691171613270290381e-06, +-1.693665184544901693e-06, +-1.696155642771257151e-06, +-1.698642984328867947e-06, +-1.701127205603194197e-06, +-1.703608302985532285e-06, +-1.706086272872447564e-06, +-1.708561111666117193e-06, +-1.711032815774787532e-06, +-1.713501381611663473e-06, +-1.715966805595907091e-06, +-1.718429084152554209e-06, +-1.720888213711923386e-06, +-1.723344190710109943e-06, +-1.725797011588855524e-06, +-1.728246672795427603e-06, +-1.730693170783119235e-06, +-1.733136502010540091e-06, +-1.735576662941961407e-06, +-1.738013650047787788e-06, +-1.740447459803428530e-06, +-1.742878088690313005e-06, +-1.745305533195793464e-06, +-1.747729789812564605e-06, +-1.750150855039155279e-06, +-1.752568725379781737e-06, +-1.754983397344265050e-06, +-1.757394867448478761e-06, +-1.759803132213669780e-06, +-1.762208188166938223e-06, +-1.764610031841094058e-06, +-1.767008659774703690e-06, +-1.769404068511946384e-06, +-1.771796254603083316e-06, +-1.774185214603783968e-06, +-1.776570945075599192e-06, +-1.778953442585822303e-06, +-1.781332703707511733e-06, +-1.783708725019387270e-06, +-1.786081503106281951e-06, +-1.788451034558459353e-06, +-1.790817315972084331e-06, +-1.793180343949103799e-06, +-1.795540115097153557e-06, +-1.797896626029984558e-06, +-1.800249873366830176e-06, +-1.802599853732835652e-06, +-1.804946563758961742e-06, +-1.807290000081970746e-06, +-1.809630159344345819e-06, +-1.811967038194728898e-06, +-1.814300633287243279e-06, +-1.816630941281975582e-06, +-1.818957958844834508e-06, +-1.821281682647594038e-06, +-1.823602109367741814e-06, +-1.825919235688960041e-06, +-1.828233058300455698e-06, +-1.830543573897412002e-06, +-1.832850779180865593e-06, +-1.835154670857627336e-06, +-1.837455245640712186e-06, +-1.839752500248779727e-06, +-1.842046431406061538e-06, +-1.844337035843331044e-06, +-1.846624310296810845e-06, +-1.848908251508631809e-06, +-1.851188856227139694e-06, +-1.853466121206275972e-06, +-1.855740043206000070e-06, +-1.858010618992171849e-06, +-1.860277845336485318e-06, +-1.862541719016859757e-06, +-1.864802236816939330e-06, +-1.867059395525987416e-06, +-1.869313191939833383e-06, +-1.871563622859832430e-06, +-1.873810685093285716e-06, +-1.876054375453748677e-06, +-1.878294690760545046e-06, +-1.880531627838614172e-06, +-1.882765183519513060e-06, +-1.884995354640332807e-06, +-1.887222138044153664e-06, +-1.889445530580439339e-06, +-1.891665529103898787e-06, +-1.893882130475967678e-06, +-1.896095331563651982e-06, +-1.898305129239936451e-06, +-1.900511520384255356e-06, +-1.902714501881381607e-06, +-1.904914070622438108e-06, +-1.907110223504748042e-06, +-1.909302957431343598e-06, +-1.911492269311284659e-06, +-1.913678156060052891e-06, +-1.915860614598445514e-06, +-1.918039641854015261e-06, +-1.920215234759931962e-06, +-1.922387390255509400e-06, +-1.924556105286115106e-06, +-1.926721376803153834e-06, +-1.928883201763990488e-06, +-1.931041577132342719e-06, +-1.933196499877688848e-06, +-1.935347966975579576e-06, +-1.937495975408030583e-06, +-1.939640522162527687e-06, +-1.941781604232933170e-06, +-1.943919218619396841e-06, +-1.946053362327845272e-06, +-1.948184032370410823e-06, +-1.950311225765289340e-06, +-1.952434939536713894e-06, +-1.954555170715287245e-06, +-1.956671916337436776e-06, +-1.958785173445678342e-06, +-1.960894939089063080e-06, +-1.963001210322150383e-06, +-1.965103984205910838e-06, +-1.967203257807663540e-06, +-1.969299028200540351e-06, +-1.971391292463903482e-06, +-1.973480047683264181e-06, +-1.975565290950264944e-06, +-1.977647019362596928e-06, +-1.979725230024397634e-06, +-1.981799920045659681e-06, +-1.983871086542632293e-06, +-1.985938726637721357e-06, +-1.988002837459405559e-06, +-1.990063416142617132e-06, +-1.992120459828169680e-06, +-1.994173965663149511e-06, +-1.996223930800815686e-06, +-1.998270352400635168e-06, +-2.000313227628134172e-06, +-2.002352553655334386e-06, +-2.004388327660165127e-06, +-2.006420546826831805e-06, +-2.008449208345765520e-06, +-2.010474309413487964e-06, +-2.012495847233038746e-06, +-2.014513819013353250e-06, +-2.016528221969703935e-06, +-2.018539053323574130e-06, +-2.020546310302677092e-06, +-2.022549990140836571e-06, +-2.024550090078422191e-06, +-2.026546607361827248e-06, +-2.028539539243409000e-06, +-2.030528882982345434e-06, +-2.032514635843644245e-06, +-2.034496795098606157e-06, +-2.036475358025037107e-06, +-2.038450321906731980e-06, +-2.040421684033833325e-06, +-2.042389441702746652e-06, +-2.044353592216059542e-06, +-2.046314132882899940e-06, +-2.048271061018486383e-06, +-2.050224373944037363e-06, +-2.052174068987600578e-06, +-2.054120143483156767e-06, +-2.056062594770947937e-06, +-2.058001420197810246e-06, +-2.059936617116586586e-06, +-2.061868182886503514e-06, +-2.063796114873098828e-06, +-2.065720410448212251e-06, +-2.067641066989896072e-06, +-2.069558081882884819e-06, +-2.071471452517595767e-06, +-2.073381176291388048e-06, +-2.075287250607591106e-06, +-2.077189672875846899e-06, +-2.079088440512502496e-06, +-2.080983550939682156e-06, +-2.082875001586117416e-06, +-2.084762789887077218e-06, +-2.086646913283877890e-06, +-2.088527369224192323e-06, +-2.090404155162403601e-06, +-2.092277268558597034e-06, +-2.094146706879875178e-06, +-2.096012467599317250e-06, +-2.097874548196451781e-06, +-2.099732946157186301e-06, +-2.101587658973780670e-06, +-2.103438684144794973e-06, +-2.105286019175401663e-06, +-2.107129661576921377e-06, +-2.108969608867014797e-06, +-2.110805858570117597e-06, +-2.112638408216493461e-06, +-2.114467255343084927e-06, +-2.116292397493375324e-06, +-2.118113832217007601e-06, +-2.119931557070091806e-06, +-2.121745569615149602e-06, +-2.123555867421024484e-06, +-2.125362448063215505e-06, +-2.127165309123390240e-06, +-2.128964448189614323e-06, +-2.130759862856732618e-06, +-2.132551550725476022e-06, +-2.134339509403272497e-06, +-2.136123736504134839e-06, +-2.137904229648250713e-06, +-2.139680986462345612e-06, +-2.141454004579555368e-06, +-2.143223281639456658e-06, +-2.144988815288004313e-06, +-2.146750603177830325e-06, +-2.148508642967757652e-06, +-2.150262932323165285e-06, +-2.152013468915868819e-06, +-2.153760250424058195e-06, +-2.155503274532634821e-06, +-2.157242538932721137e-06, +-2.158978041321963008e-06, +-2.160709779404488218e-06, +-2.162437750890908589e-06, +-2.164161953498191654e-06, +-2.165882384950071469e-06, +-2.167599042976481525e-06, +-2.169311925313922781e-06, +-2.171021029705395481e-06, +-2.172726353900288615e-06, +-2.174427895654733979e-06, +-2.176125652731108966e-06, +-2.177819622898375804e-06, +-2.179509803931982027e-06, +-2.181196193613880806e-06, +-2.182878789732448789e-06, +-2.184557590082812202e-06, +-2.186232592466444092e-06, +-2.187903794691078348e-06, +-2.189571194571458482e-06, +-2.191234789928521086e-06, +-2.192894578589711777e-06, +-2.194550558389247353e-06, +-2.196202727167640610e-06, +-2.197851082771974775e-06, +-2.199495623055904783e-06, +-2.201136345879508195e-06, +-2.202773249109648154e-06, +-2.204406330619581207e-06, +-2.206035588288832368e-06, +-2.207661020003971001e-06, +-2.209282623657782420e-06, +-2.210900397149609671e-06, +-2.212514338385639824e-06, +-2.214124445278098447e-06, +-2.215730715746285103e-06, +-2.217333147715747073e-06, +-2.218931739118681267e-06, +-2.220526487893769480e-06, +-2.222117391986547698e-06, +-2.223704449348603535e-06, +-2.225287657938618505e-06, +-2.226867015721545975e-06, +-2.228442520668913986e-06, +-2.230014170759123402e-06, +-2.231581963976711841e-06, +-2.233145898313011819e-06, +-2.234705971766096964e-06, +-2.236262182340406357e-06, +-2.237814528046959678e-06, +-2.239363006903682466e-06, +-2.240907616934545110e-06, +-2.242448356170652136e-06, +-2.243985222649409994e-06, +-2.245518214414813779e-06, +-2.247047329517768258e-06, +-2.248572566015325540e-06, +-2.250093921971386419e-06, +-2.251611395456598306e-06, +-2.253124984547991428e-06, +-2.254634687329216423e-06, +-2.256140501890835293e-06, +-2.257642426329573053e-06, +-2.259140458749018648e-06, +-2.260634597259512300e-06, +-2.262124839977805424e-06, +-2.263611185027353700e-06, +-2.265093630538224324e-06, +-2.266572174647059583e-06, +-2.268046815497350030e-06, +-2.269517551238987242e-06, +-2.270984380028519630e-06, +-2.272447300029423486e-06, +-2.273906309411367760e-06, +-2.275361406350887877e-06, +-2.276812589031313735e-06, +-2.278259855642400822e-06, +-2.279703204380624142e-06, +-2.281142633449115106e-06, +-2.282578141057585722e-06, +-2.284009725422623791e-06, +-2.285437384767243128e-06, +-2.286861117321202047e-06, +-2.288280921320908920e-06, +-2.289696795009449278e-06, +-2.291108736636484168e-06, +-2.292516744458584311e-06, +-2.293920816738741782e-06, +-2.295320951746714757e-06, +-2.296717147758919090e-06, +-2.298109403058445255e-06, +-2.299497715935007523e-06, +-2.300882084685189180e-06, +-2.302262507612048655e-06, +-2.303638983025406664e-06, +-2.305011509241748378e-06, +-2.306380084584196741e-06, +-2.307744707382742020e-06, +-2.309105375973886891e-06, +-2.310462088700869638e-06, +-2.311814843913627728e-06, +-2.313163639968808400e-06, +-2.314508475229663207e-06, +-2.315849348066357189e-06, +-2.317186256855549582e-06, +-2.318519199980676738e-06, +-2.319848175831855131e-06, +-2.321173182805921171e-06, +-2.322494219306361327e-06, +-2.323811283743552252e-06, +-2.325124374534383441e-06, +-2.326433490102527000e-06, +-2.327738628878361000e-06, +-2.329039789298917376e-06, +-2.330336969808142393e-06, +-2.331630168856556987e-06, +-2.332919384901223306e-06, +-2.334204616406309680e-06, +-2.335485861842430784e-06, +-2.336763119686945368e-06, +-2.338036388424177759e-06, +-2.339305666544753361e-06, +-2.340570952546434678e-06, +-2.341832244933507216e-06, +-2.343089542216958204e-06, +-2.344342842914693012e-06, +-2.345592145551243352e-06, +-2.346837448657678332e-06, +-2.348078750772177057e-06, +-2.349316050439416223e-06, +-2.350549346210803046e-06, +-2.351778636644738697e-06, +-2.353003920306005891e-06, +-2.354225195766299132e-06, +-2.355442461604192950e-06, +-2.356655716404816215e-06, +-2.357864958760055849e-06, +-2.359070187268776211e-06, +-2.360271400536188473e-06, +-2.361468597174670980e-06, +-2.362661775803107713e-06, +-2.363850935047143668e-06, +-2.365036073539422453e-06, +-2.366217189918971339e-06, +-2.367394282831774278e-06, +-2.368567350930680424e-06, +-2.369736392875143249e-06, +-2.370901407331345051e-06, +-2.372062392972493847e-06, +-2.373219348478142775e-06, +-2.374372272535018073e-06, +-2.375521163836388459e-06, +-2.376666021082330681e-06, +-2.377806842979712573e-06, +-2.378943628242166797e-06, +-2.380076375590030281e-06, +-2.381205083750602564e-06, +-2.382329751457752773e-06, +-2.383450377452223283e-06, +-2.384566960481509016e-06, +-2.385679499299886663e-06, +-2.386787992668348192e-06, +-2.387892439354854960e-06, +-2.388992838133956968e-06, +-2.390089187787054172e-06, +-2.391181487102318982e-06, +-2.392269734874655600e-06, +-2.393353929905945663e-06, +-2.394434071004645054e-06, +-2.395510156986085024e-06, +-2.396582186672363344e-06, +-2.397650158892383697e-06, +-2.398714072481769700e-06, +-2.399773926283112241e-06, +-2.400829719145612877e-06, +-2.401881449925353611e-06, +-2.402929117485159254e-06, +-2.403972720694698644e-06, +-2.405012258430341070e-06, +-2.406047729575447234e-06, +-2.407079133019987658e-06, +-2.408106467660787055e-06, +-2.409129732401489601e-06, +-2.410148926152464488e-06, +-2.411164047831039710e-06, +-2.412175096361204326e-06, +-2.413182070673782104e-06, +-2.414184969706400605e-06, +-2.415183792403500922e-06, +-2.416178537716278391e-06, +-2.417169204602869780e-06, +-2.418155792028082667e-06, +-2.419138298963563997e-06, +-2.420116724387789493e-06, +-2.421091067286015804e-06, +-2.422061326650280498e-06, +-2.423027501479612130e-06, +-2.423989590779521176e-06, +-2.424947593562654363e-06, +-2.425901508848283064e-06, +-2.426851335662485407e-06, +-2.427797073038300016e-06, +-2.428738720015487988e-06, +-2.429676275640456669e-06, +-2.430609738966753041e-06, +-2.431539109054511465e-06, +-2.432464384970694231e-06, +-2.433385565789277066e-06, +-2.434302650590707024e-06, +-2.435215638462586897e-06, +-2.436124528499146662e-06, +-2.437029319801424746e-06, +-2.437930011477441668e-06, +-2.438826602641921792e-06, +-2.439719092416282733e-06, +-2.440607479929015257e-06, +-2.441491764315279666e-06, +-2.442371944717032431e-06, +-2.443248020283239647e-06, +-2.444119990169422592e-06, +-2.444987853538059653e-06, +-2.445851609558526604e-06, +-2.446711257406910264e-06, +-2.447566796266103358e-06, +-2.448418225325995105e-06, +-2.449265543783007043e-06, +-2.450108750840675786e-06, +-2.450947845709204942e-06, +-2.451782827605613773e-06, +-2.452613695753918033e-06, +-2.453440449384694167e-06, +-2.454263087735479538e-06, +-2.455081610050727534e-06, +-2.455896015581580139e-06, +-2.456706303586020819e-06, +-2.457512473329023184e-06, +-2.458314524082065628e-06, +-2.459112455123790755e-06, +-2.459906265739474705e-06, +-2.460695955221262631e-06, +-2.461481522868137360e-06, +-2.462262967985907536e-06, +-2.463040289887170769e-06, +-2.463813487891459330e-06, +-2.464582561325036436e-06, +-2.465347509521009331e-06, +-2.466108331819340296e-06, +-2.466865027566795828e-06, +-2.467617596116928853e-06, +-2.468366036830276505e-06, +-2.469110349074054351e-06, +-2.469850532222350782e-06, +-2.470586585656091441e-06, +-2.471318508762977809e-06, +-2.472046300937674825e-06, +-2.472769961581541955e-06, +-2.473489490102831393e-06, +-2.474204885916596162e-06, +-2.474916148444741358e-06, +-2.475623277115941563e-06, +-2.476326271365837360e-06, +-2.477025130636767244e-06, +-2.477719854377941688e-06, +-2.478410442045391051e-06, +-2.479096893102002424e-06, +-2.479779207017429420e-06, +-2.480457383268263700e-06, +-2.481131421337836764e-06, +-2.481801320716316943e-06, +-2.482467080900719553e-06, +-2.483128701394842106e-06, +-2.483786181709437102e-06, +-2.484439521361954106e-06, +-2.485088719876709156e-06, +-2.485733776784861467e-06, +-2.486374691624381250e-06, +-2.487011463940032341e-06, +-2.487644093283518740e-06, +-2.488272579213265232e-06, +-2.488896921294547826e-06, +-2.489517119099480207e-06, +-2.490133172206952320e-06, +-2.490745080202794702e-06, +-2.491352842679597632e-06, +-2.491956459236660318e-06, +-2.492555929480319115e-06, +-2.493151253023600244e-06, +-2.493742429486348966e-06, +-2.494329458495338424e-06, +-2.494912339684091766e-06, +-2.495491072692863936e-06, +-2.496065657168921615e-06, +-2.496636092766223469e-06, +-2.497202379145566683e-06, +-2.497764515974678444e-06, +-2.498322502927878394e-06, +-2.498876339686552974e-06, +-2.499426025938753925e-06, +-2.499971561379378708e-06, +-2.500512945710220481e-06, +-2.501050178639828759e-06, +-2.501583259883489087e-06, +-2.502112189163486044e-06, +-2.502636966208792378e-06, +-2.503157590755188022e-06, +-2.503674062545424833e-06, +-2.504186381328800965e-06, +-2.504694546861708895e-06, +-2.505198558907185227e-06, +-2.505698417235126260e-06, +-2.506194121622213453e-06, +-2.506685671852053181e-06, +-2.507173067714859946e-06, +-2.507656309007862955e-06, +-2.508135395534988904e-06, +-2.508610327106977174e-06, +-2.509081103541483172e-06, +-2.509547724662806006e-06, +-2.510010190302125233e-06, +-2.510468500297504247e-06, +-2.510922654493711132e-06, +-2.511372652742348681e-06, +-2.511818494901835335e-06, +-2.512260180837366649e-06, +-2.512697710421014390e-06, +-2.513131083531563907e-06, +-2.513560300054630600e-06, +-2.513985359882711167e-06, +-2.514406262914952357e-06, +-2.514823009057377984e-06, +-2.515235598222876638e-06, +-2.515644030331033552e-06, +-2.516048305308275020e-06, +-2.516448423087817578e-06, +-2.516844383609665034e-06, +-2.517236186820611437e-06, +-2.517623832674287663e-06, +-2.518007321131074169e-06, +-2.518386652158157322e-06, +-2.518761825729503565e-06, +-2.519132841825862379e-06, +-2.519499700434820498e-06, +-2.519862401550715928e-06, +-2.520220945174667178e-06, +-2.520575331314579606e-06, +-2.520925559985171255e-06, +-2.521271631207903824e-06, +-2.521613545011078801e-06, +-2.521951301429735398e-06, +-2.522284900505690361e-06, +-2.522614342287571003e-06, +-2.522939626830731777e-06, +-2.523260754197391485e-06, +-2.523577724456482094e-06, +-2.523890537683713950e-06, +-2.524199193961586366e-06, +-2.524503693379364335e-06, +-2.524804036033089957e-06, +-2.525100222025586255e-06, +-2.525392251466438541e-06, +-2.525680124472000343e-06, +-2.525963841165384935e-06, +-2.526243401676488207e-06, +-2.526518806141942080e-06, +-2.526790054705201747e-06, +-2.527057147516430057e-06, +-2.527320084732569933e-06, +-2.527578866517333361e-06, +-2.527833493041160735e-06, +-2.528083964481316992e-06, +-2.528330281021773878e-06, +-2.528572442853221377e-06, +-2.528810450173195198e-06, +-2.529044303185932770e-06, +-2.529274002102402473e-06, +-2.529499547140396383e-06, +-2.529720938524386700e-06, +-2.529938176485618503e-06, +-2.530151261262086026e-06, +-2.530360193098519957e-06, +-2.530564972246389556e-06, +-2.530765598963964061e-06, +-2.530962073516146676e-06, +-2.531154396174689285e-06, +-2.531342567218025171e-06, +-2.531526586931302470e-06, +-2.531706455606486239e-06, +-2.531882173542214038e-06, +-2.532053741043818798e-06, +-2.532221158423474510e-06, +-2.532384426000008613e-06, +-2.532543544098971442e-06, +-2.532698513052714163e-06, +-2.532849333200193949e-06, +-2.532996004887206073e-06, +-2.533138528466214072e-06, +-2.533276904296393798e-06, +-2.533411132743657978e-06, +-2.533541214180663840e-06, +-2.533667148986722054e-06, +-2.533788937547912356e-06, +-2.533906580257003499e-06, +-2.534020077513460457e-06, +-2.534129429723522773e-06, +-2.534234637300043198e-06, +-2.534335700662647785e-06, +-2.534432620237658802e-06, +-2.534525396458079494e-06, +-2.534614029763644049e-06, +-2.534698520600756619e-06, +-2.534778869422524350e-06, +-2.534855076688782795e-06, +-2.534927142866033654e-06, +-2.534995068427458755e-06, +-2.535058853852987389e-06, +-2.535118499629173916e-06, +-2.535174006249279079e-06, +-2.535225374213284827e-06, +-2.535272604027808343e-06, +-2.535315696206189285e-06, +-2.535354651268425415e-06, +-2.535389469741199278e-06, +-2.535420152157863380e-06, +-2.535446699058466872e-06, +-2.535469110989708957e-06, +-2.535487388504968117e-06, +-2.535501532164298304e-06, +-2.535511542534417074e-06, +-2.535517420188710253e-06, +-2.535519165707228966e-06, +-2.535516779676679479e-06, +-2.535510262690430394e-06, +-2.535499615348515193e-06, +-2.535484838257603012e-06, +-2.535465932031069373e-06, +-2.535442897288888182e-06, +-2.535415734657702037e-06, +-2.535384444770805286e-06, +-2.535349028268130473e-06, +-2.535309485796280103e-06, +-2.535265818008459729e-06, +-2.535218025564552908e-06, +-2.535166109131065302e-06, +-2.535110069381139501e-06, +-2.535049906994542314e-06, +-2.534985622657697808e-06, +-2.534917217063643680e-06, +-2.534844690912040580e-06, +-2.534768044909182273e-06, +-2.534687279768010461e-06, +-2.534602396208048717e-06, +-2.534513394955465584e-06, +-2.534420276743039855e-06, +-2.534323042310171152e-06, +-2.534221692402862992e-06, +-2.534116227773734642e-06, +-2.534006649182019424e-06, +-2.533892957393563450e-06, +-2.533775153180800627e-06, +-2.533653237322767485e-06, +-2.533527210605127742e-06, +-2.533397073820104536e-06, +-2.533262827766549463e-06, +-2.533124473249896412e-06, +-2.532982011082165799e-06, +-2.532835442081981934e-06, +-2.532684767074532360e-06, +-2.532529986891609362e-06, +-2.532371102371579892e-06, +-2.532208114359392773e-06, +-2.532041023706571074e-06, +-2.531869831271218463e-06, +-2.531694537918020053e-06, +-2.531515144518201324e-06, +-2.531331651949589105e-06, +-2.531144061096556521e-06, +-2.530952372850058566e-06, +-2.530756588107574504e-06, +-2.530556707773200621e-06, +-2.530352732757534183e-06, +-2.530144663977758133e-06, +-2.529932502357599172e-06, +-2.529716248827320550e-06, +-2.529495904323755107e-06, +-2.529271469790265035e-06, +-2.529042946176744846e-06, +-2.528810334439669648e-06, +-2.528573635542004095e-06, +-2.528332850453262098e-06, +-2.528087980149505556e-06, +-2.527839025613301583e-06, +-2.527585987833754268e-06, +-2.527328867806505947e-06, +-2.527067666533695700e-06, +-2.526802385024003395e-06, +-2.526533024292604796e-06, +-2.526259585361210101e-06, +-2.525982069258027099e-06, +-2.525700477017768794e-06, +-2.525414809681665257e-06, +-2.525125068297447964e-06, +-2.524831253919344285e-06, +-2.524533367608091040e-06, +-2.524231410430912472e-06, +-2.523925383461511357e-06, +-2.523615287780096531e-06, +-2.523301124473376112e-06, +-2.522982894634508377e-06, +-2.522660599363179684e-06, +-2.522334239765508335e-06, +-2.522003816954118694e-06, +-2.521669332048106879e-06, +-2.521330786173022551e-06, +-2.520988180460900683e-06, +-2.520641516050238680e-06, +-2.520290794085997236e-06, +-2.519936015719584659e-06, +-2.519577182108884400e-06, +-2.519214294418222018e-06, +-2.518847353818377888e-06, +-2.518476361486596941e-06, +-2.518101318606526828e-06, +-2.517722226368299663e-06, +-2.517339085968475691e-06, +-2.516951898610048374e-06, +-2.516560665502456669e-06, +-2.516165387861549881e-06, +-2.515766066909614763e-06, +-2.515362703875379756e-06, +-2.514955299993976444e-06, +-2.514543856506962005e-06, +-2.514128374662326407e-06, +-2.513708855714439895e-06, +-2.513285300924108471e-06, +-2.512857711558538738e-06, +-2.512426088891346378e-06, +-2.511990434202536664e-06, +-2.511550748778551896e-06, +-2.511107033912172720e-06, +-2.510659290902612578e-06, +-2.510207521055455866e-06, +-2.509751725682690127e-06, +-2.509291906102695039e-06, +-2.508828063640181004e-06, +-2.508360199626267074e-06, +-2.507888315398495777e-06, +-2.507412412300697165e-06, +-2.506932491683112060e-06, +-2.506448554902372571e-06, +-2.505960603321393250e-06, +-2.505468638309520170e-06, +-2.504972661242422929e-06, +-2.504472673502151824e-06, +-2.503968676477087029e-06, +-2.503460671561930125e-06, +-2.502948660157751534e-06, +-2.502432643672005342e-06, +-2.501912623518394196e-06, +-2.501388601117011608e-06, +-2.500860577894278424e-06, +-2.500328555282916994e-06, +-2.499792534721977850e-06, +-2.499252517656894341e-06, +-2.498708505539320001e-06, +-2.498160499827273397e-06, +-2.497608501985109321e-06, +-2.497052513483402755e-06, +-2.496492535799158930e-06, +-2.495928570415571924e-06, +-2.495360618822175433e-06, +-2.494788682514834723e-06, +-2.494212762995602638e-06, +-2.493632861772951682e-06, +-2.493048980361562690e-06, +-2.492461120282374373e-06, +-2.491869283062663794e-06, +-2.491273470235968008e-06, +-2.490673683342022237e-06, +-2.490069923926970353e-06, +-2.489462193543069265e-06, +-2.488850493748937099e-06, +-2.488234826109402005e-06, +-2.487615192195574150e-06, +-2.486991593584799136e-06, +-2.486364031860681291e-06, +-2.485732508613025646e-06, +-2.485097025437918409e-06, +-2.484457583937700698e-06, +-2.483814185720840224e-06, +-2.483166832402192594e-06, +-2.482515525602743818e-06, +-2.481860266949681034e-06, +-2.481201058076457730e-06, +-2.480537900622728943e-06, +-2.479870796234363124e-06, +-2.479199746563453990e-06, +-2.478524753268222695e-06, +-2.477845818013196555e-06, +-2.477162942469030319e-06, +-2.476476128312600197e-06, +-2.475785377226966583e-06, +-2.475090690901384224e-06, +-2.474392071031247163e-06, +-2.473689519318168782e-06, +-2.472983037469944531e-06, +-2.472272627200528217e-06, +-2.471558290230026913e-06, +-2.470840028284759835e-06, +-2.470117843097115613e-06, +-2.469391736405723391e-06, +-2.468661709955324928e-06, +-2.467927765496847017e-06, +-2.467189904787351510e-06, +-2.466448129589979838e-06, +-2.465702441674078796e-06, +-2.464952842815122615e-06, +-2.464199334794693904e-06, +-2.463441919400521343e-06, +-2.462680598426466556e-06, +-2.461915373672443637e-06, +-2.461146246944557647e-06, +-2.460373220054997037e-06, +-2.459596294822058636e-06, +-2.458815473070137485e-06, +-2.458030756629759451e-06, +-2.457242147337468572e-06, +-2.456449647035989682e-06, +-2.455653257574087385e-06, +-2.454852980806623651e-06, +-2.454048818594572642e-06, +-2.453240772804896192e-06, +-2.452428845310677223e-06, +-2.451613037991170982e-06, +-2.450793352731502233e-06, +-2.449969791422994328e-06, +-2.449142355963026902e-06, +-2.448311048254921104e-06, +-2.447475870208153896e-06, +-2.446636823738216173e-06, +-2.445793910766639444e-06, +-2.444947133221014469e-06, +-2.444096493034885805e-06, +-2.443241992147885632e-06, +-2.442383632505751968e-06, +-2.441521416060073710e-06, +-2.440655344768567193e-06, +-2.439785420594969886e-06, +-2.438911645508932816e-06, +-2.438034021486174309e-06, +-2.437152550508507516e-06, +-2.436267234563548188e-06, +-2.435378075645045863e-06, +-2.434485075752714464e-06, +-2.433588236892144204e-06, +-2.432687561075125153e-06, +-2.431783050319176713e-06, +-2.430874706647968591e-06, +-2.429962532091092102e-06, +-2.429046528683989019e-06, +-2.428126698468250995e-06, +-2.427203043491339199e-06, +-2.426275565806578386e-06, +-2.425344267473352985e-06, +-2.424409150556999525e-06, +-2.423470217128641039e-06, +-2.422527469265578821e-06, +-2.421580909050796908e-06, +-2.420630538573358491e-06, +-2.419676359928198397e-06, +-2.418718375216172632e-06, +-2.417756586544052461e-06, +-2.416790996024552352e-06, +-2.415821605776190647e-06, +-2.414848417923477594e-06, +-2.413871434596826842e-06, +-2.412890657932402119e-06, +-2.411906090072462829e-06, +-2.410917733165043867e-06, +-2.409925589364002213e-06, +-2.408929660829150754e-06, +-2.407929949726159615e-06, +-2.406926458226545139e-06, +-2.405919188507737230e-06, +-2.404908142752891736e-06, +-2.403893323151139475e-06, +-2.402874731897473156e-06, +-2.401852371192547902e-06, +-2.400826243243105195e-06, +-2.399796350261598479e-06, +-2.398762694466244838e-06, +-2.397725278081183808e-06, +-2.396684103336345241e-06, +-2.395639172467478957e-06, +-2.394590487716153039e-06, +-2.393538051329771633e-06, +-2.392481865561418237e-06, +-2.391421932670103041e-06, +-2.390358254920592244e-06, +-2.389290834583437284e-06, +-2.388219673934995160e-06, +-2.387144775257321287e-06, +-2.386066140838348641e-06, +-2.384983772971731057e-06, +-2.383897673956900831e-06, +-2.382807846099041189e-06, +-2.381714291709154047e-06, +-2.380617013103845296e-06, +-2.379516012605610241e-06, +-2.378411292542642607e-06, +-2.377302855248877304e-06, +-2.376190703064016269e-06, +-2.375074838333365829e-06, +-2.373955263408093359e-06, +-2.372831980645045588e-06, +-2.371704992406758342e-06, +-2.370574301061515836e-06, +-2.369439908983335852e-06, +-2.368301818551796095e-06, +-2.367160032152266705e-06, +-2.366014552175953880e-06, +-2.364865381019462805e-06, +-2.363712521085274533e-06, +-2.362555974781548626e-06, +-2.361395744521982547e-06, +-2.360231832726070006e-06, +-2.359064241818926046e-06, +-2.357892974231331515e-06, +-2.356718032399753392e-06, +-2.355539418766187664e-06, +-2.354357135778348637e-06, +-2.353171185889743900e-06, +-2.351981571559237254e-06, +-2.350788295251492133e-06, +-2.349591359436821261e-06, +-2.348390766590990557e-06, +-2.347186519195548212e-06, +-2.345978619737583705e-06, +-2.344767070709815473e-06, +-2.343551874610540938e-06, +-2.342333033943716969e-06, +-2.341110551218692225e-06, +-2.339884428950731890e-06, +-2.338654669660367151e-06, +-2.337421275873863611e-06, +-2.336184250123101850e-06, +-2.334943594945305958e-06, +-2.333699312883556834e-06, +-2.332451406486350459e-06, +-2.331199878307635588e-06, +-2.329944730907062354e-06, +-2.328685966849797617e-06, +-2.327423588706380967e-06, +-2.326157599053208801e-06, +-2.324888000471866867e-06, +-2.323614795549655418e-06, +-2.322337986879388046e-06, +-2.321057577059205755e-06, +-2.319773568693042833e-06, +-2.318485964390178343e-06, +-2.317194766765319562e-06, +-2.315899978438780700e-06, +-2.314601602036382528e-06, +-2.313299640189215632e-06, +-2.311994095534162188e-06, +-2.310684970713403830e-06, +-2.309372268374511019e-06, +-2.308055991170642091e-06, +-2.306736141760387405e-06, +-2.305412722807772305e-06, +-2.304085736982313027e-06, +-2.302755186958837553e-06, +-2.301421075417731244e-06, +-2.300083405044835628e-06, +-2.298742178531192164e-06, +-2.297397398573583927e-06, +-2.296049067874059148e-06, +-2.294697189139956625e-06, +-2.293341765084186939e-06, +-2.291982798424999098e-06, +-2.290620291886033894e-06, +-2.289254248196382781e-06, +-2.287884670090376532e-06, +-2.286511560307839777e-06, +-2.285134921593966064e-06, +-2.283754756699275083e-06, +-2.282371068379677468e-06, +-2.280983859396487073e-06, +-2.279593132516199903e-06, +-2.278198890510820638e-06, +-2.276801136157665704e-06, +-2.275399872239354377e-06, +-2.273995101543857909e-06, +-2.272586826864522401e-06, +-2.271175050999850690e-06, +-2.269759776753811941e-06, +-2.268341006935643014e-06, +-2.266918744359892093e-06, +-2.265492991846453408e-06, +-2.264063752220338962e-06, +-2.262631028312025394e-06, +-2.261194822957212143e-06, +-2.259755138996882445e-06, +-2.258311979277288924e-06, +-2.256865346649995102e-06, +-2.255415243971676768e-06, +-2.253961674104422677e-06, +-2.252504639915512199e-06, +-2.251044144277477157e-06, +-2.249580190068085731e-06, +-2.248112780170396246e-06, +-2.246641917472518307e-06, +-2.245167604867975755e-06, +-2.243689845255433071e-06, +-2.242208641538767382e-06, +-2.240723996627137483e-06, +-2.239235913434709832e-06, +-2.237744394880966440e-06, +-2.236249443890760779e-06, +-2.234751063393785843e-06, +-2.233249256325128532e-06, +-2.231744025625067633e-06, +-2.230235374238798962e-06, +-2.228723305117106209e-06, +-2.227207821215510944e-06, +-2.225688925494918054e-06, +-2.224166620921325636e-06, +-2.222640910465929182e-06, +-2.221111797104826384e-06, +-2.219579283819648604e-06, +-2.218043373596743480e-06, +-2.216504069427798773e-06, +-2.214961374309642460e-06, +-2.213415291243931454e-06, +-2.211865823237833889e-06, +-2.210312973303383255e-06, +-2.208756744457611384e-06, +-2.207197139722795782e-06, +-2.205634162126309283e-06, +-2.204067814700351114e-06, +-2.202498100482600806e-06, +-2.200925022515381746e-06, +-2.199348583846318057e-06, +-2.197768787528092762e-06, +-2.196185636618152600e-06, +-2.194599134179393696e-06, +-2.193009283279538145e-06, +-2.191416086991210245e-06, +-2.189819548392235499e-06, +-2.188219670565485188e-06, +-2.186616456598557033e-06, +-2.185009909584440124e-06, +-2.183400032620939353e-06, +-2.181786828810717772e-06, +-2.180170301261617614e-06, +-2.178550453086386705e-06, +-2.176927287402775870e-06, +-2.175300807333547830e-06, +-2.173671016006227745e-06, +-2.172037916553522925e-06, +-2.170401512113056861e-06, +-2.168761805827164237e-06, +-2.167118800843495295e-06, +-2.165472500314440273e-06, +-2.163822907397206485e-06, +-2.162170025254091490e-06, +-2.160513857052269639e-06, +-2.158854405963796733e-06, +-2.157191675165731575e-06, +-2.155525667839803506e-06, +-2.153856387172849052e-06, +-2.152183836356532828e-06, +-2.150508018587388617e-06, +-2.148828937066826149e-06, +-2.147146595001195894e-06, +-2.145460995601501500e-06, +-2.143772142083819495e-06, +-2.142080037669000283e-06, +-2.140384685582733793e-06, +-2.138686089055573616e-06, +-2.136984251322952252e-06, +-2.135279175624929545e-06, +-2.133570865206602639e-06, +-2.131859323317798939e-06, +-2.130144553213159958e-06, +-2.128426558152214589e-06, +-2.126705341399073330e-06, +-2.124980906222837816e-06, +-2.123253255897331047e-06, +-2.121522393701157098e-06, +-2.119788322917690536e-06, +-2.118051046835154766e-06, +-2.116310568746299314e-06, +-2.114566891948869932e-06, +-2.112820019745273167e-06, +-2.111069955442659801e-06, +-2.109316702352912564e-06, +-2.107560263792735920e-06, +-2.105800643083324881e-06, +-2.104037843550817740e-06, +-2.102271868525988604e-06, +-2.100502721344328706e-06, +-2.098730405346090026e-06, +-2.096954923876004926e-06, +-2.095176280283638938e-06, +-2.093394477923457257e-06, +-2.091609520154175487e-06, +-2.089821410339444048e-06, +-2.088030151847607615e-06, +-2.086235748051353179e-06, +-2.084438202328549878e-06, +-2.082637518061173265e-06, +-2.080833698636156154e-06, +-2.079026747445052347e-06, +-2.077216667883821488e-06, +-2.075403463353185665e-06, +-2.073587137258725544e-06, +-2.071767693010160397e-06, +-2.069945134022116779e-06, +-2.068119463713813859e-06, +-2.066290685508763992e-06, +-2.064458802835509216e-06, +-2.062623819126948282e-06, +-2.060785737820397639e-06, +-2.058944562357963711e-06, +-2.057100296186299370e-06, +-2.055252942756320604e-06, +-2.053402505524023482e-06, +-2.051548987949390634e-06, +-2.049692393497248869e-06, +-2.047832725636975261e-06, +-2.045969987842126140e-06, +-2.044104183591251946e-06, +-2.042235316367171740e-06, +-2.040363389657054944e-06, +-2.038488406952795307e-06, +-2.036610371750778392e-06, +-2.034729287551549544e-06, +-2.032845157860698186e-06, +-2.030957986187712635e-06, +-2.029067776046864404e-06, +-2.027174530956810516e-06, +-2.025278254440647298e-06, +-2.023378950025920115e-06, +-2.021476621244683511e-06, +-2.019571271633204750e-06, +-2.017662904732394531e-06, +-2.015751524087509677e-06, +-2.013837133248206503e-06, +-2.011919735768565798e-06, +-2.009999335207135179e-06, +-2.008075935126614846e-06, +-2.006149539094334029e-06, +-2.004220150681920230e-06, +-2.002287773465376299e-06, +-2.000352411025143537e-06, +-1.998414066945799310e-06, +-1.996472744816484794e-06, +-1.994528448230639013e-06, +-1.992581180786026787e-06, +-1.990630946084747204e-06, +-1.988677747733316204e-06, +-1.986721589342313369e-06, +-1.984762474526888024e-06, +-1.982800406906407294e-06, +-1.980835390104546736e-06, +-1.978867427749273825e-06, +-1.976896523472925878e-06, +-1.974922680911880982e-06, +-1.972945903707028945e-06, +-1.970966195503451543e-06, +-1.968983559950491549e-06, +-1.966998000701835323e-06, +-1.965009521415159594e-06, +-1.963018125752631641e-06, +-1.961023817380589528e-06, +-1.959026599969585311e-06, +-1.957026477194395200e-06, +-1.955023452734090707e-06, +-1.953017530271707882e-06, +-1.951008713494738169e-06, +-1.948997006094773498e-06, +-1.946982411767626989e-06, +-1.944964934213334643e-06, +-1.942944577135888105e-06, +-1.940921344243680629e-06, +-1.938895239249203411e-06, +-1.936866265869090488e-06, +-1.934834427824120852e-06, +-1.932799728839318398e-06, +-1.930762172643577542e-06, +-1.928721762970094355e-06, +-1.926678503556443221e-06, +-1.924632398143795026e-06, +-1.922583450477785367e-06, +-1.920531664308143129e-06, +-1.918477043388348702e-06, +-1.916419591476583091e-06, +-1.914359312334503095e-06, +-1.912296209728179829e-06, +-1.910230287427759905e-06, +-1.908161549207191845e-06, +-1.906089998844647474e-06, +-1.904015640122607475e-06, +-1.901938476827089742e-06, +-1.899858512748479680e-06, +-1.897775751681189279e-06, +-1.895690197423315333e-06, +-1.893601853777567366e-06, +-1.891510724550064209e-06, +-1.889416813551263621e-06, +-1.887320124595536863e-06, +-1.885220661501333660e-06, +-1.883118428090736875e-06, +-1.881013428190392970e-06, +-1.878905665630337811e-06, +-1.876795144244891133e-06, +-1.874681867872332549e-06, +-1.872565840354540717e-06, +-1.870447065537865568e-06, +-1.868325547272319605e-06, +-1.866201289411668533e-06, +-1.864074295813858589e-06, +-1.861944570340748454e-06, +-1.859812116857755195e-06, +-1.857676939234810565e-06, +-1.855539041345105065e-06, +-1.853398427066093158e-06, +-1.851255100279007076e-06, +-1.849109064868941519e-06, +-1.846960324724871024e-06, +-1.844808883739703323e-06, +-1.842654745809940957e-06, +-1.840497914836178273e-06, +-1.838338394722789288e-06, +-1.836176189377946751e-06, +-1.834011302713661317e-06, +-1.831843738645843383e-06, +-1.829673501093950505e-06, +-1.827500593981500493e-06, +-1.825325021235719467e-06, +-1.823146786787637572e-06, +-1.820965894572134295e-06, +-1.818782348527598379e-06, +-1.816596152596466538e-06, +-1.814407310724830434e-06, +-1.812215826862546578e-06, +-1.810021704963212190e-06, +-1.807824948984252444e-06, +-1.805625562886564714e-06, +-1.803423550635024675e-06, +-1.801218916198151093e-06, +-1.799011663548165747e-06, +-1.796801796660992377e-06, +-1.794589319516358110e-06, +-1.792374236097380111e-06, +-1.790156550391159143e-06, +-1.787936266388368751e-06, +-1.785713388083344841e-06, +-1.783487919474189862e-06, +-1.781259864562377453e-06, +-1.779029227353304077e-06, +-1.776796011855919498e-06, +-1.774560222082798570e-06, +-1.772321862050159024e-06, +-1.770080935777921394e-06, +-1.767837447289328068e-06, +-1.765591400611523714e-06, +-1.763342799775147433e-06, +-1.761091648814437794e-06, +-1.758837951767302924e-06, +-1.756581712674949297e-06, +-1.754322935582337859e-06, +-1.752061624538287580e-06, +-1.749797783594590517e-06, +-1.747531416806967898e-06, +-1.745262528234694682e-06, +-1.742991121940274290e-06, +-1.740717201989955302e-06, +-1.738440772453762580e-06, +-1.736161837404682004e-06, +-1.733880400919576324e-06, +-1.731596467078808015e-06, +-1.729310039965850495e-06, +-1.727021123668329972e-06, +-1.724729722276680358e-06, +-1.722435839885184692e-06, +-1.720139480591596096e-06, +-1.717840648496823738e-06, +-1.715539347705426014e-06, +-1.713235582325687207e-06, +-1.710929356468749702e-06, +-1.708620674249559695e-06, +-1.706309539786494503e-06, +-1.703995957200947724e-06, +-1.701679930618403494e-06, +-1.699361464167054334e-06, +-1.697040561978876462e-06, +-1.694717228189137667e-06, +-1.692391466936565230e-06, +-1.690063282362877519e-06, +-1.687732678613839389e-06, +-1.685399659837868393e-06, +-1.683064230187136977e-06, +-1.680726393817155959e-06, +-1.678386154886356089e-06, +-1.676043517557113810e-06, +-1.673698485994796226e-06, +-1.671351064367913356e-06, +-1.669001256848557322e-06, +-1.666649067612020971e-06, +-1.664294500836874535e-06, +-1.661937560705091832e-06, +-1.659578251401604310e-06, +-1.657216577114905191e-06, +-1.654852542036775452e-06, +-1.652486150361813094e-06, +-1.650117406288485997e-06, +-1.647746314018186000e-06, +-1.645372877755329696e-06, +-1.642997101707882111e-06, +-1.640618990086898035e-06, +-1.638238547106638067e-06, +-1.635855776984596142e-06, +-1.633470683941525366e-06, +-1.631083272201078662e-06, +-1.628693545990386871e-06, +-1.626301509539648151e-06, +-1.623907167082230893e-06, +-1.621510522854752918e-06, +-1.619111581096686338e-06, +-1.616710346050948992e-06, +-1.614306821963478606e-06, +-1.611901013083352009e-06, +-1.609492923662765651e-06, +-1.607082557957121581e-06, +-1.604669920224629335e-06, +-1.602255014726893785e-06, +-1.599837845728514061e-06, +-1.597418417497177789e-06, +-1.594996734303729273e-06, +-1.592572800421795956e-06, +-1.590146620128358052e-06, +-1.587718197703352552e-06, +-1.585287537429758989e-06, +-1.582854643593601348e-06, +-1.580419520484027044e-06, +-1.577982172392904375e-06, +-1.575542603615427727e-06, +-1.573100818449688336e-06, +-1.570656821196787584e-06, +-1.568210616160807772e-06, +-1.565762207648944894e-06, +-1.563311599971031124e-06, +-1.560858797440208415e-06, +-1.558403804372451200e-06, +-1.555946625086719702e-06, +-1.553487263904999323e-06, +-1.551025725151923713e-06, +-1.548562013155249110e-06, +-1.546096132245995155e-06, +-1.543628086757461706e-06, +-1.541157881026268775e-06, +-1.538685519391951440e-06, +-1.536211006196623359e-06, +-1.533734345785598913e-06, +-1.531255542506965461e-06, +-1.528774600711702342e-06, +-1.526291524753629844e-06, +-1.523806318989545786e-06, +-1.521318987778673681e-06, +-1.518829535483824223e-06, +-1.516337966469895622e-06, +-1.513844285105041444e-06, +-1.511348495760235242e-06, +-1.508850602808959056e-06, +-1.506350610627687705e-06, +-1.503848523596029185e-06, +-1.501344346095743163e-06, +-1.498838082511791095e-06, +-1.496329737231918208e-06, +-1.493819314646198648e-06, +-1.491306819148234451e-06, +-1.488792255133612254e-06, +-1.486275627001099301e-06, +-1.483756939152095625e-06, +-1.481236195990835857e-06, +-1.478713401923846699e-06, +-1.476188561361117522e-06, +-1.473661678714609167e-06, +-1.471132758399396169e-06, +-1.468601804833245356e-06, +-1.466068822436184923e-06, +-1.463533815631562163e-06, +-1.460996788845070651e-06, +-1.458457746504851675e-06, +-1.455916693042013891e-06, +-1.453373632890217430e-06, +-1.450828570485764531e-06, +-1.448281510267677255e-06, +-1.445732456677291758e-06, +-1.443181414158875988e-06, +-1.440628387159317344e-06, +-1.438073380127654685e-06, +-1.435516397516182234e-06, +-1.432957443779458542e-06, +-1.430396523374383147e-06, +-1.427833640760767899e-06, +-1.425268800400871304e-06, +-1.422702006759508211e-06, +-1.420133264304153153e-06, +-1.417562577504480621e-06, +-1.414989950833038663e-06, +-1.412415388764780268e-06, +-1.409838895777180673e-06, +-1.407260476350220856e-06, +-1.404680134966491286e-06, +-1.402097876110745971e-06, +-1.399513704270551700e-06, +-1.396927623935858813e-06, +-1.394339639599064943e-06, +-1.391749755755044444e-06, +-1.389157976901234158e-06, +-1.386564307537187451e-06, +-1.383968752165221132e-06, +-1.381371315289976482e-06, +-1.378772001418531059e-06, +-1.376170815060477688e-06, +-1.373567760727478705e-06, +-1.370962842933945067e-06, +-1.368356066196556089e-06, +-1.365747435034387973e-06, +-1.363136953968887981e-06, +-1.360524627523984122e-06, +-1.357910460225635167e-06, +-1.355294456602487944e-06, +-1.352676621185425661e-06, +-1.350056958507667645e-06, +-1.347435473104762772e-06, +-1.344812169514702975e-06, +-1.342187052277447842e-06, +-1.339560125935616436e-06, +-1.336931395034001728e-06, +-1.334300864119697443e-06, +-1.331668537742191443e-06, +-1.329034420452909181e-06, +-1.326398516805775914e-06, +-1.323760831357312206e-06, +-1.321121368665610084e-06, +-1.318480133291473134e-06, +-1.315837129797931582e-06, +-1.313192362749912798e-06, +-1.310545836714896471e-06, +-1.307897556262477968e-06, +-1.305247525964447106e-06, +-1.302595750394797258e-06, +-1.299942234129829540e-06, +-1.297286981747575978e-06, +-1.294629997829029615e-06, +-1.291971286956563096e-06, +-1.289310853715165766e-06, +-1.286648702691972502e-06, +-1.283984838475924481e-06, +-1.281319265658327581e-06, +-1.278651988832971184e-06, +-1.275983012595051804e-06, +-1.273312341542365076e-06, +-1.270639980274794993e-06, +-1.267965933393870699e-06, +-1.265290205504017134e-06, +-1.262612801210924913e-06, +-1.259933725122838034e-06, +-1.257252981850056457e-06, +-1.254570576004587122e-06, +-1.251886512200727772e-06, +-1.249200795055161606e-06, +-1.246513429185913522e-06, +-1.243824419213495520e-06, +-1.241133769760452056e-06, +-1.238441485450853725e-06, +-1.235747570911490736e-06, +-1.233052030770788705e-06, +-1.230354869658935500e-06, +-1.227656092208439437e-06, +-1.224955703053677386e-06, +-1.222253706830978840e-06, +-1.219550108178753816e-06, +-1.216844911737011953e-06, +-1.214138122148045009e-06, +-1.211429744056087200e-06, +-1.208719782106821168e-06, +-1.206008240948558534e-06, +-1.203295125231158024e-06, +-1.200580439606162690e-06, +-1.197864188727339256e-06, +-1.195146377250240417e-06, +-1.192427009832285515e-06, +-1.189706091132888867e-06, +-1.186983625812969120e-06, +-1.184259618535652289e-06, +-1.181534073965799113e-06, +-1.178806996770103100e-06, +-1.176078391617086710e-06, +-1.173348263177220793e-06, +-1.170616616122426108e-06, +-1.167883455126794571e-06, +-1.165148784866092046e-06, +-1.162412610017876930e-06, +-1.159674935261498039e-06, +-1.156935765278184598e-06, +-1.154195104750588849e-06, +-1.151452958363476595e-06, +-1.148709330803236552e-06, +-1.145964226758017993e-06, +-1.143217650917803808e-06, +-1.140469607973971315e-06, +-1.137720102619958448e-06, +-1.134969139550798531e-06, +-1.132216723463232929e-06, +-1.129462859055694532e-06, +-1.126707551028431421e-06, +-1.123950804083004366e-06, +-1.121192622923009346e-06, +-1.118433012253590717e-06, +-1.115671976781544971e-06, +-1.112909521215316927e-06, +-1.110145650265113657e-06, +-1.107380368642412146e-06, +-1.104613681060681389e-06, +-1.101845592234874806e-06, +-1.099076106881570638e-06, +-1.096305229719056863e-06, +-1.093532965466856007e-06, +-1.090759318846318709e-06, +-1.087984294580729380e-06, +-1.085207897394224760e-06, +-1.082430132012981456e-06, +-1.079651003164729110e-06, +-1.076870515578385750e-06, +-1.074088673984759772e-06, +-1.071305483116074115e-06, +-1.068520947706075954e-06, +-1.065735072490141309e-06, +-1.062947862204792025e-06, +-1.060159321588286150e-06, +-1.057369455380739913e-06, +-1.054578268323024671e-06, +-1.051785765157959747e-06, +-1.048991950629846557e-06, +-1.046196829484067335e-06, +-1.043400406467698800e-06, +-1.040602686329630961e-06, +-1.037803673819453897e-06, +-1.035003373688671135e-06, +-1.032201790690202653e-06, +-1.029398929577892965e-06, +-1.026594795107838848e-06, +-1.023789392036681294e-06, +-1.020982725122934934e-06, +-1.018174799126489768e-06, +-1.015365618808122218e-06, +-1.012555188930701085e-06, +-1.009743514258079427e-06, +-1.006930599555216313e-06, +-1.004116449588778005e-06, +-1.001301069126752352e-06, +-9.984844629379702102e-07, +-9.956666357934280874e-07, +-9.928475924645735369e-07, +-9.900273377246441045e-07, +-9.872058763480356531e-07, +-9.843832131104376770e-07, +-9.815593527888097963e-07, +-9.787343001614997064e-07, +-9.759080600077493576e-07, +-9.730806371084149333e-07, +-9.702520362455943674e-07, +-9.674222622021309824e-07, +-9.645913197628355468e-07, +-9.617592137133648034e-07, +-9.589259488403347596e-07, +-9.560915299319385981e-07, +-9.532559617774440691e-07, +-9.504192491673016980e-07, +-9.475813968932615708e-07, +-9.447424097478781371e-07, +-9.419022925252341056e-07, +-9.390610500204483182e-07, +-9.362186870297818406e-07, +-9.333752083506362684e-07, +-9.305306187816692413e-07, +-9.276849231222882347e-07, +-9.248381261733803849e-07, +-9.219902327368231153e-07, +-9.191412476155945690e-07, +-9.162911756137485148e-07, +-9.134400215365664958e-07, +-9.105877901900165754e-07, +-9.077344863815101609e-07, +-9.048801149193914550e-07, +-9.020246806130577339e-07, +-8.991681882730728497e-07, +-8.963106427106596467e-07, +-8.934520487384389965e-07, +-8.905924111699336494e-07, +-8.877317348196674427e-07, +-8.848700245031731357e-07, +-8.820072850371017829e-07, +-8.791435212387110206e-07, +-8.762787379266114082e-07, +-8.734129399202686907e-07, +-8.705461320401023723e-07, +-8.676783191074885752e-07, +-8.648095059448735416e-07, +-8.619396973752683788e-07, +-8.590688982229888367e-07, +-8.561971133131463469e-07, +-8.533243474717686185e-07, +-8.504506055259109179e-07, +-8.475758923031584362e-07, +-8.447002126322296947e-07, +-8.418235713431055054e-07, +-8.389459732658857945e-07, +-8.360674232320398227e-07, +-8.331879260738945775e-07, +-8.303074866242485262e-07, +-8.274261097171236749e-07, +-8.245438001872452793e-07, +-8.216605628701691103e-07, +-8.187764026023910400e-07, +-8.158913242208408329e-07, +-8.130053325634991037e-07, +-8.101184324695220431e-07, +-8.072306287780963348e-07, +-8.043419263296862002e-07, +-8.014523299655312133e-07, +-7.985618445272477720e-07, +-7.956704748574643724e-07, +-7.927782257999304533e-07, +-7.898851021983753360e-07, +-7.869911088977676572e-07, +-7.840962507437905258e-07, +-7.812005325823438910e-07, +-7.783039592609118656e-07, +-7.754065356267896740e-07, +-7.725082665284754330e-07, +-7.696091568151424509e-07, +-7.667092113361321719e-07, +-7.638084349422139259e-07, +-7.609068324844347638e-07, +-7.580044088142360303e-07, +-7.551011687840773097e-07, +-7.521971172470575902e-07, +-7.492922590563924330e-07, +-7.463865990668013060e-07, +-7.434801421327226744e-07, +-7.405728931097109689e-07, +-7.376648568537814063e-07, +-7.347560382215366207e-07, +-7.318464420701533229e-07, +-7.289360732575112608e-07, +-7.260249366416632950e-07, +-7.231130370815996335e-07, +-7.202003794368566093e-07, +-7.172869685669980835e-07, +-7.143728093328823956e-07, +-7.114579065955030927e-07, +-7.085422652161127020e-07, +-7.056258900568562061e-07, +-7.027087859802415410e-07, +-6.997909578492721571e-07, +-6.968724105275562863e-07, +-6.939531488787925811e-07, +-6.910331777675294800e-07, +-6.881125020587686901e-07, +-6.851911266174526258e-07, +-6.822690563097329473e-07, +-6.793462960018082191e-07, +-6.764228505600469416e-07, +-6.734987248516196498e-07, +-6.705739237439761874e-07, +-6.676484521049670450e-07, +-6.647223148028365835e-07, +-6.617955167063455361e-07, +-6.588680626842355779e-07, +-6.559399576060166428e-07, +-6.530112063414232343e-07, +-6.500818137605421159e-07, +-6.471517847339358716e-07, +-6.442211241321192282e-07, +-6.412898368263183143e-07, +-6.383579276879541819e-07, +-6.354254015887572617e-07, +-6.324922634007684223e-07, +-6.295585179964490837e-07, +-6.266241702481648457e-07, +-6.236892250289491934e-07, +-6.207536872119781251e-07, +-6.178175616706948782e-07, +-6.148808532789248077e-07, +-6.119435669103586963e-07, +-6.090057074393132840e-07, +-6.060672797402086488e-07, +-6.031282886876911326e-07, +-6.001887391566227527e-07, +-5.972486360222059280e-07, +-5.943079841594509069e-07, +-5.913667884438239588e-07, +-5.884250537513636301e-07, +-5.854827849575088735e-07, +-5.825399869383812445e-07, +-5.795966645702706465e-07, +-5.766528227292242019e-07, +-5.737084662918258402e-07, +-5.707636001346635145e-07, +-5.678182291344650440e-07, +-5.648723581681932998e-07, +-5.619259921125443374e-07, +-5.589791358445767424e-07, +-5.560317942418360387e-07, +-5.530839721811754065e-07, +-5.501356745400502662e-07, +-5.471869061959901540e-07, +-5.442376720261976511e-07, +-5.412879769083234192e-07, +-5.383378257199348991e-07, +-5.353872233386437888e-07, +-5.324361746420949269e-07, +-5.294846845080858293e-07, +-5.265327578139094981e-07, +-5.235803994377858011e-07, +-5.206276142570181166e-07, +-5.176744071494263010e-07, +-5.147207829928150703e-07, +-5.117667466644459803e-07, +-5.088123030423316934e-07, +-5.058574570040522500e-07, +-5.029022134268857233e-07, +-4.999465771884432819e-07, +-4.969905531662745789e-07, +-4.940341462373363443e-07, +-4.910773612794196355e-07, +-4.881202031693187639e-07, +-4.851626767842510280e-07, +-4.822047870013361057e-07, +-4.792465386970564944e-07, +-4.762879367485659122e-07, +-4.733289860324929167e-07, +-4.703696914250764833e-07, +-4.674100578028030799e-07, +-4.644500900420084026e-07, +-4.614897930183494620e-07, +-4.585291716081006503e-07, +-4.555682306869698532e-07, +-4.526069751302221170e-07, +-4.496454098133245054e-07, +-4.466835396114171276e-07, +-4.437213693994320399e-07, +-4.407589040522199308e-07, +-4.377961484440190309e-07, +-4.348331074492287719e-07, +-4.318697859420110986e-07, +-4.289061887957597497e-07, +-4.259423208843996596e-07, +-4.229781870812045532e-07, +-4.200137922589131480e-07, +-4.170491412903843346e-07, +-4.140842390480593631e-07, +-4.111190904040843459e-07, +-4.081537002304396413e-07, +-4.051880733984007706e-07, +-4.022222147793207584e-07, +-3.992561292440983550e-07, +-3.962898216632961976e-07, +-3.933232969071429805e-07, +-3.903565598456437812e-07, +-3.873896153480576002e-07, +-3.844224682836731900e-07, +-3.814551235212719303e-07, +-3.784875859292625592e-07, +-3.755198603756577211e-07, +-3.725519517282119271e-07, +-3.695838648538817833e-07, +-3.666156046196027727e-07, +-3.636471758917630366e-07, +-3.606785835363218526e-07, +-3.577098324189345194e-07, +-3.547409274044205260e-07, +-3.517718733575404926e-07, +-3.488026751424686279e-07, +-3.458333376229087726e-07, +-3.428638656620917526e-07, +-3.398942641228974041e-07, +-3.369245378673203615e-07, +-3.339546917572526618e-07, +-3.309847306539453503e-07, +-3.280146594181427344e-07, +-3.250444829100600967e-07, +-3.220742059895171025e-07, +-3.191038335154028455e-07, +-3.161333703464533182e-07, +-3.131628213407222280e-07, +-3.101921913556985761e-07, +-3.072214852484368886e-07, +-3.042507078750208333e-07, +-3.012798640912095052e-07, +-2.983089587525668114e-07, +-2.953379967132659897e-07, +-2.923669828273967922e-07, +-2.893959219484358249e-07, +-2.864248189287074643e-07, +-2.834536786208265136e-07, +-2.804825058758466411e-07, +-2.775113055447001776e-07, +-2.745400824775329310e-07, +-2.715688415239591430e-07, +-2.685975875323962507e-07, +-2.656263253515028840e-07, +-2.626550598283311686e-07, +-2.596837958097658885e-07, +-2.567125381419876785e-07, +-2.537412916699414584e-07, +-2.507700612386452574e-07, +-2.477988516919943094e-07, +-2.448276678728894321e-07, +-2.418565146238829944e-07, +-2.388853967867814474e-07, +-2.359143192021039900e-07, +-2.329432867105290370e-07, +-2.299723041510404870e-07, +-2.270013763623687380e-07, +-2.240305081824550177e-07, +-2.210597044479183617e-07, +-2.180889699953672975e-07, +-2.151183096602004716e-07, +-2.121477282767333343e-07, +-2.091772306788529755e-07, +-2.062068216996083722e-07, +-2.032365061706805171e-07, +-2.002662889236911368e-07, +-1.972961747890066817e-07, +-1.943261685958664130e-07, +-1.913562751730302772e-07, +-1.883864993482447721e-07, +-1.854168459483674879e-07, +-1.824473197994907994e-07, +-1.794779257264074154e-07, +-1.765086685533917931e-07, +-1.735395531038011586e-07, +-1.705705841995338033e-07, +-1.676017666623459024e-07, +-1.646331053126538630e-07, +-1.616646049696587324e-07, +-1.586962704519991547e-07, +-1.557281065772145631e-07, +-1.527601181618708589e-07, +-1.497923100216831519e-07, +-1.468246869709806999e-07, +-1.438572538234918968e-07, +-1.408900153918070949e-07, +-1.379229764875040449e-07, +-1.349561419211399024e-07, +-1.319895165023746030e-07, +-1.290231050394376029e-07, +-1.260569123399091868e-07, +-1.230909432101863606e-07, +-1.201252024556067571e-07, +-1.171596948804416472e-07, +-1.141944252880188794e-07, +-1.112293984801886927e-07, +-1.082646192581071828e-07, +-1.053000924217003948e-07, +-1.023358227697892469e-07, +-9.937181510021352873e-08, +-9.640807420929596749e-08, +-9.344460489262740083e-08, +-9.048141194453016844e-08, +-8.751850015818263906e-08, +-8.455587432561285776e-08, +-8.159353923782032015e-08, +-7.863149968424276514e-08, +-7.566976045353885984e-08, +-7.270832633305378797e-08, +-6.974720210894229461e-08, +-6.678639256616226728e-08, +-6.382590248859841600e-08, +-6.086573665852709405e-08, +-5.790589985739982989e-08, +-5.494639686530832662e-08, +-5.198723246110876404e-08, +-4.902841142254600152e-08, +-4.606993852571854428e-08, +-4.311181854573019633e-08, +-4.015405625681394562e-08, +-3.719665643113801820e-08, +-3.423962384011706533e-08, +-3.128296325387630927e-08, +-2.832667944071752213e-08, +-2.537077716856091744e-08, +-2.241526120309216302e-08, +-1.946013630920504352e-08, +-1.650540725046613895e-08, +-1.355107878871231191e-08, +-1.059715568470183277e-08, +-7.643642698238430291e-09, +-4.690544586978153911e-09, +-1.737866107739105031e-09, + 1.214387984033087075e-09, + 4.166212934799619812e-09, + 7.117603991619088692e-09, + 1.006855640334035871e-08, + 1.301906542047838137e-08, + 1.596912629456323745e-08, + 1.891873427854299964e-08, + 2.186788462731761718e-08, + 2.481657259629859098e-08, + 2.776479344325923104e-08, + 3.071254242689447879e-08, + 3.365981480735462711e-08, + 3.660660584677969233e-08, + 3.955291080799070524e-08, + 4.249872495568140046e-08, + 4.544404355629486065e-08, + 4.838886187737194962e-08, + 5.133317518795495665e-08, + 5.427697875911996991e-08, + 5.722026786253854835e-08, + 6.016303777232582849e-08, + 6.310528376360171320e-08, + 6.604700111315621609e-08, + 6.898818509932475578e-08, + 7.192883100199597107e-08, + 7.486893410248788211e-08, + 7.780848968408099174e-08, + 8.074749303123724169e-08, + 8.368593943013303458e-08, + 8.662382416853551412e-08, + 8.956114253581022814e-08, + 9.249788982279681324e-08, + 9.543406132234152710e-08, + 9.836965232851776638e-08, + 1.013046581371574740e-07, + 1.042390740457288752e-07, + 1.071728953532109316e-07, + 1.101061173606279112e-07, + 1.130387353702668231e-07, + 1.159707446862110875e-07, + 1.189021406142184837e-07, + 1.218329184617242473e-07, + 1.247630735377219163e-07, + 1.276926011532928853e-07, + 1.306214966208267518e-07, + 1.335497552545550126e-07, + 1.364773723704254126e-07, + 1.394043432861109963e-07, + 1.423306633208851716e-07, + 1.452563277961537251e-07, + 1.481813320346765315e-07, + 1.511056713610979549e-07, + 1.540293411018251412e-07, + 1.569523365849021799e-07, + 1.598746531405418564e-07, + 1.627962861003489487e-07, + 1.657172307978493850e-07, + 1.686374825683678737e-07, + 1.715570367490344948e-07, + 1.744758886786619325e-07, + 1.773940336982761682e-07, + 1.803114671503377394e-07, + 1.832281843792733326e-07, + 1.861441807313530689e-07, + 1.890594515545642435e-07, + 1.919739921991456976e-07, + 1.948877980168067215e-07, + 1.978008643612608707e-07, + 2.007131865881001023e-07, + 2.036247600548025567e-07, + 2.065355801206098708e-07, + 2.094456421470553553e-07, + 2.123549414973228441e-07, + 2.152634735361158540e-07, + 2.181712336308477458e-07, + 2.210782171503384310e-07, + 2.239844194653458593e-07, + 2.268898359490935873e-07, + 2.297944619758466781e-07, + 2.326982929227392804e-07, + 2.356013241683536784e-07, + 2.385035510932443930e-07, + 2.414049690803386432e-07, + 2.443055735142917541e-07, + 2.472053597813638603e-07, + 2.501043232705985529e-07, + 2.530024593725307303e-07, + 2.558997634797117056e-07, + 2.587962309872369085e-07, + 2.616918572913255166e-07, + 2.645866377911445939e-07, + 2.674805678873876639e-07, + 2.703736429829323771e-07, + 2.732658584825871958e-07, + 2.761572097937476328e-07, + 2.790476923249751945e-07, + 2.819373014878249606e-07, + 2.848260326954199219e-07, + 2.877138813629807459e-07, + 2.906008429083517851e-07, + 2.934869127507084511e-07, + 2.963720863117364964e-07, + 2.992563590155037950e-07, + 3.021397262878225263e-07, + 3.050221835566470692e-07, + 3.079037262525947681e-07, + 3.107843498075321291e-07, + 3.136640496563918121e-07, + 3.165428212357584027e-07, + 3.194206599845208396e-07, + 3.222975613437498069e-07, + 3.251735207567102273e-07, + 3.280485336687314546e-07, + 3.309225955277342871e-07, + 3.337957017834645612e-07, + 3.366678478880144477e-07, + 3.395390292957046611e-07, + 3.424092414630847242e-07, + 3.452784798488170835e-07, + 3.481467399141986698e-07, + 3.510140171223910508e-07, + 3.538803069389490862e-07, + 3.567456048316923367e-07, + 3.596099062705876977e-07, + 3.624732067282726006e-07, + 3.653355016792859597e-07, + 3.681967866005915330e-07, + 3.710570569714575376e-07, + 3.739163082734631082e-07, + 3.767745359903730949e-07, + 3.796317356086669828e-07, + 3.824879026167679326e-07, + 3.853430325055656653e-07, + 3.881971207682995180e-07, + 3.910501629005553211e-07, + 3.939021544001566071e-07, + 3.967530907676744716e-07, + 3.996029675056703788e-07, + 4.024517801192147576e-07, + 4.052995241157651874e-07, + 4.081461950050465958e-07, + 4.109917882995718138e-07, + 4.138362995138754339e-07, + 4.166797241650356357e-07, + 4.195220577725551776e-07, + 4.223632958583674852e-07, + 4.252034339467098074e-07, + 4.280424675646504953e-07, + 4.308803922413273598e-07, + 4.337172035084589100e-07, + 4.365528969002288380e-07, + 4.393874679531665352e-07, + 4.422209122066621936e-07, + 4.450532252023344432e-07, + 4.478844024839133553e-07, + 4.507144395983909249e-07, + 4.535433320947593097e-07, + 4.563710755245192083e-07, + 4.591976654420773305e-07, + 4.620230974041085816e-07, + 4.648473669694426127e-07, + 4.676704697002119740e-07, + 4.704924011605871243e-07, + 4.733131569172951852e-07, + 4.761327325401305434e-07, + 4.789511236005674639e-07, + 4.817683256735433058e-07, + 4.845843343360695471e-07, + 4.873991451677478398e-07, + 4.902127537511532391e-07, + 4.930251556712141752e-07, + 4.958363465150821165e-07, + 4.986463218732882987e-07, + 5.014550773384792104e-07, + 5.042626085059311659e-07, + 5.070689109740642422e-07, + 5.098739803430533567e-07, + 5.126778122166107426e-07, + 5.154804022006024257e-07, + 5.182817459036795824e-07, + 5.210818389370402051e-07, + 5.238806769150666009e-07, + 5.266782554539344573e-07, + 5.294745701734021994e-07, + 5.322696166954139150e-07, + 5.350633906446249386e-07, + 5.378558876489021298e-07, + 5.406471033380728062e-07, + 5.434370333450692963e-07, + 5.462256733058078142e-07, + 5.490130188585605957e-07, + 5.517990656444768243e-07, + 5.545838093074502820e-07, + 5.573672454940159053e-07, + 5.601493698538419114e-07, + 5.629301780389965857e-07, + 5.657096657043258459e-07, + 5.684878285079602979e-07, + 5.712646621100726381e-07, + 5.740401621740075955e-07, + 5.768143243661710759e-07, + 5.795871443553974289e-07, + 5.823586178134702667e-07, + 5.851287404149938212e-07, + 5.878975078374106261e-07, + 5.906649157608719202e-07, + 5.934309598687463973e-07, + 5.961956358468880516e-07, + 5.989589393841277745e-07, + 6.017208661721646170e-07, + 6.044814119054400051e-07, + 6.072405722816521005e-07, + 6.099983430010118941e-07, + 6.127547197667380849e-07, + 6.155096982849566009e-07, + 6.182632742646946694e-07, + 6.210154434177649857e-07, + 6.237662014592717094e-07, + 6.265155441068720629e-07, + 6.292634670812788345e-07, + 6.320099661061382991e-07, + 6.347550369079208453e-07, + 6.374986752164195605e-07, + 6.402408767640138409e-07, + 6.429816372861668123e-07, + 6.457209525213139450e-07, + 6.484588182108691946e-07, + 6.511952300991027119e-07, + 6.539301839336491685e-07, + 6.566636754647684029e-07, + 6.593957004458459108e-07, + 6.621262546332760609e-07, + 6.648553337864701415e-07, + 6.675829336677359758e-07, + 6.703090500427858244e-07, + 6.730336786799930075e-07, + 6.757568153508966312e-07, + 6.784784558300869200e-07, + 6.811985958950844090e-07, + 6.839172313268375754e-07, + 6.866343579091190104e-07, + 6.893499714284063049e-07, + 6.920640676749975916e-07, + 6.947766424417802774e-07, + 6.974876915247433919e-07, + 7.001972107233359884e-07, + 7.029051958397542600e-07, + 7.056116426794202187e-07, + 7.083165470508843928e-07, + 7.110199047658156623e-07, + 7.137217116388951681e-07, + 7.164219634884312582e-07, + 7.191206561350242455e-07, + 7.218177854032769915e-07, + 7.245133471204629466e-07, + 7.272073371170160529e-07, + 7.298997512269161440e-07, + 7.325905852870646823e-07, + 7.352798351371812084e-07, + 7.379674966209175078e-07, + 7.406535655846199892e-07, + 7.433380378778413990e-07, + 7.460209093538346410e-07, + 7.487021758682083235e-07, + 7.513818332806465538e-07, + 7.540598774535699910e-07, + 7.567363042526444891e-07, + 7.594111095471279570e-07, + 7.620842892092832590e-07, + 7.647558391142660886e-07, + 7.674257551412167941e-07, + 7.700940331720548388e-07, + 7.727606690919671157e-07, + 7.754256587899088615e-07, + 7.780889981573909170e-07, + 7.807506830895721882e-07, + 7.834107094851564140e-07, + 7.860690732457799731e-07, + 7.887257702765132215e-07, + 7.913807964857398965e-07, + 7.940341477850427670e-07, + 7.966858200896947010e-07, + 7.993358093179429227e-07, + 8.019841113913680484e-07, + 8.046307222353853187e-07, + 8.072756377780294235e-07, + 8.099188539510633739e-07, + 8.125603666898520830e-07, + 8.152001719327656308e-07, + 8.178382656216818724e-07, + 8.204746437018493249e-07, + 8.231093021217891227e-07, + 8.257422368337780388e-07, + 8.283734437931376118e-07, + 8.310029189587079551e-07, + 8.336306582927464307e-07, + 8.362566577609362255e-07, + 8.388809133322584490e-07, + 8.415034209794840479e-07, + 8.441241766784690748e-07, + 8.467431764086218265e-07, + 8.493604161528157059e-07, + 8.519758918973653988e-07, + 8.545895996319375123e-07, + 8.572015353500233249e-07, + 8.598116950482233612e-07, + 8.624200747267465062e-07, + 8.650266703892821032e-07, + 8.676314780428918515e-07, + 8.702344936984958970e-07, + 8.728357133701588897e-07, + 8.754351330755822154e-07, + 8.780327488359685767e-07, + 8.806285566760561915e-07, + 8.832225526239870797e-07, + 8.858147327117895543e-07, + 8.884050929746855600e-07, + 8.909936294515494477e-07, + 8.935803381848244356e-07, + 8.961652152204939163e-07, + 8.987482566079973884e-07, + 9.013294584006937839e-07, + 9.039088166551693359e-07, + 9.064863274317023886e-07, + 9.090619867941618586e-07, + 9.116357908098956387e-07, + 9.142077355501992186e-07, + 9.167778170897457381e-07, + 9.193460315064560726e-07, + 9.219123748825798598e-07, + 9.244768433035178056e-07, + 9.270394328583020580e-07, + 9.296001396399449728e-07, + 9.321589597447569344e-07, + 9.347158892728075654e-07, + 9.372709243278152944e-07, + 9.398240610171623913e-07, + 9.423752954517728882e-07, + 9.449246237467116436e-07, + 9.474720420198966408e-07, + 9.500175463937540898e-07, + 9.525611329939204557e-07, + 9.551027979497327847e-07, + 9.576425373945674111e-07, + 9.601803474652818689e-07, + 9.627162243020914367e-07, + 9.652501640496195642e-07, + 9.677821628557556483e-07, + 9.703122168721105252e-07, + 9.728403222544982205e-07, + 9.753664751616533291e-07, + 9.778906717568721423e-07, + 9.804129082067315094e-07, + 9.829331806815731300e-07, + 9.854514853558387662e-07, + 9.879678184075154368e-07, + 9.904821760180130205e-07, + 9.929945543732073775e-07, + 9.955049496623118894e-07, + 9.980133580783138931e-07, + 1.000519775818467654e-06, + 1.003024199083137742e-06, + 1.005526624076836014e-06, + 1.008027047008126529e-06, + 1.010525464089038138e-06, + 1.013021871535544746e-06, + 1.015516265567447152e-06, + 1.018008642408268443e-06, + 1.020498998285715838e-06, + 1.022987329430996704e-06, + 1.025473632079181728e-06, + 1.027957902469646643e-06, + 1.030440136844947577e-06, + 1.032920331451854858e-06, + 1.035398482541238667e-06, + 1.037874586367511054e-06, + 1.040348639189074861e-06, + 1.042820637268239239e-06, + 1.045290576871086443e-06, + 1.047758454267944907e-06, + 1.050224265732709072e-06, + 1.052688007543299117e-06, + 1.055149675981560580e-06, + 1.057609267333256742e-06, + 1.060066777887965706e-06, + 1.062522203939556221e-06, + 1.064975541785484009e-06, + 1.067426787727264621e-06, + 1.069875938070373275e-06, + 1.072322989124237022e-06, + 1.074767937202137335e-06, + 1.077210778621651627e-06, + 1.079651509704012894e-06, + 1.082090126774527725e-06, + 1.084526626162496469e-06, + 1.086961004201095074e-06, + 1.089393257227830792e-06, + 1.091823381583878314e-06, + 1.094251373614523196e-06, + 1.096677229669073341e-06, + 1.099100946100845869e-06, + 1.101522519267076276e-06, + 1.103941945529350420e-06, + 1.106359221252970514e-06, + 1.108774342807368482e-06, + 1.111187306566035651e-06, + 1.113598108906504757e-06, + 1.116006746210259095e-06, + 1.118413214863164934e-06, + 1.120817511254830733e-06, + 1.123219631779042731e-06, + 1.125619572833659064e-06, + 1.128017330820514689e-06, + 1.130412902145852947e-06, + 1.132806283219805057e-06, + 1.135197470456253114e-06, + 1.137586460273846739e-06, + 1.139973249094905320e-06, + 1.142357833345862287e-06, + 1.144740209457588039e-06, + 1.147120373864760176e-06, + 1.149498323006285958e-06, + 1.151874053325213577e-06, + 1.154247561268616114e-06, + 1.156618843288034323e-06, + 1.158987895838949359e-06, + 1.161354715380661435e-06, + 1.163719298377287839e-06, + 1.166081641296675348e-06, + 1.168441740610845762e-06, + 1.170799592796314180e-06, + 1.173155194333557698e-06, + 1.175508541706923081e-06, + 1.177859631405589629e-06, + 1.180208459922503821e-06, + 1.182555023754805797e-06, + 1.184899319404282096e-06, + 1.187241343376177268e-06, + 1.189581092180697995e-06, + 1.191918562331845241e-06, + 1.194253750347842220e-06, + 1.196586652751585226e-06, + 1.198917266069549055e-06, + 1.201245586832779728e-06, + 1.203571611576783106e-06, + 1.205895336840997613e-06, + 1.208216759169111026e-06, + 1.210535875109508765e-06, + 1.212852681214089744e-06, + 1.215167174039775146e-06, + 1.217479350147331050e-06, + 1.219789206101920269e-06, + 1.222096738472986100e-06, + 1.224401943834269894e-06, + 1.226704818763693534e-06, + 1.229005359843807940e-06, + 1.231303563661147201e-06, + 1.233599426806560407e-06, + 1.235892945875634100e-06, + 1.238184117467648312e-06, + 1.240472938186517614e-06, + 1.242759404640700275e-06, + 1.245043513442681780e-06, + 1.247325261209385857e-06, + 1.249604644562089136e-06, + 1.251881660126307644e-06, + 1.254156304532230706e-06, + 1.256428574414101117e-06, + 1.258698466410518603e-06, + 1.260965977164870952e-06, + 1.263231103324300428e-06, + 1.265493841540633808e-06, + 1.267754188470301284e-06, + 1.270012140773807064e-06, + 1.272267695116150557e-06, + 1.274520848166738078e-06, + 1.276771596599374790e-06, + 1.279019937092166460e-06, + 1.281265866327953340e-06, + 1.283509380993679349e-06, + 1.285750477780813889e-06, + 1.287989153385256769e-06, + 1.290225404507235712e-06, + 1.292459227851729026e-06, + 1.294690620127844940e-06, + 1.296919578049241308e-06, + 1.299146098334033071e-06, + 1.301370177704777647e-06, + 1.303591812888412886e-06, + 1.305811000616637596e-06, + 1.308027737625309305e-06, + 1.310242020654872651e-06, + 1.312453846450250532e-06, + 1.314663211760743314e-06, + 1.316870113340450439e-06, + 1.319074547947660775e-06, + 1.321276512345261942e-06, + 1.323476003300648200e-06, + 1.325673017585717060e-06, + 1.327867551976779497e-06, + 1.330059603254963140e-06, + 1.332249168205725861e-06, + 1.334436243618731476e-06, + 1.336620826288802652e-06, + 1.338802913014876098e-06, + 1.340982500600436878e-06, + 1.343159585853817623e-06, + 1.345334165587594390e-06, + 1.347506236618993869e-06, + 1.349675795769810375e-06, + 1.351842839866295524e-06, + 1.354007365739572852e-06, + 1.356169370225135949e-06, + 1.358328850162747876e-06, + 1.360485802397364854e-06, + 1.362640223778115375e-06, + 1.364792111158724143e-06, + 1.366941461397815736e-06, + 1.369088271358310674e-06, + 1.371232537907825847e-06, + 1.373374257918590455e-06, + 1.375513428267447696e-06, + 1.377650045835756936e-06, + 1.379784107509893459e-06, + 1.381915610180162147e-06, + 1.384044550742203553e-06, + 1.386170926095883655e-06, + 1.388294733145711441e-06, + 1.390415968801231511e-06, + 1.392534629976044270e-06, + 1.394650713588707595e-06, + 1.396764216562618251e-06, + 1.398875135825544116e-06, + 1.400983468309923608e-06, + 1.403089210953247695e-06, + 1.405192360697000472e-06, + 1.407292914488025212e-06, + 1.409390869277462184e-06, + 1.411486222021228924e-06, + 1.413578969679936165e-06, + 1.415669109218895039e-06, + 1.417756637608010772e-06, + 1.419841551822188838e-06, + 1.421923848840748597e-06, + 1.424003525647720187e-06, + 1.426080579232241351e-06, + 1.428155006587592884e-06, + 1.430226804712056887e-06, + 1.432295970608854509e-06, + 1.434362501285639211e-06, + 1.436426393754904824e-06, + 1.438487645033882846e-06, + 1.440546252144449480e-06, + 1.442602212113531576e-06, + 1.444655521972513704e-06, + 1.446706178757542244e-06, + 1.448754179509909935e-06, + 1.450799521275091953e-06, + 1.452842201103635508e-06, + 1.454882216051046765e-06, + 1.456919563177325397e-06, + 1.458954239547341728e-06, + 1.460986242230769820e-06, + 1.463015568302062693e-06, + 1.465042214840379483e-06, + 1.467066178929954534e-06, + 1.469087457659553608e-06, + 1.471106048122839160e-06, + 1.473121947418283313e-06, + 1.475135152649075103e-06, + 1.477145660923524517e-06, + 1.479153469354467450e-06, + 1.481158575059657035e-06, + 1.483160975161694610e-06, + 1.485160666788010659e-06, + 1.487157647070767192e-06, + 1.489151913147270887e-06, + 1.491143462159391810e-06, + 1.493132291253937383e-06, + 1.495118397582574880e-06, + 1.497101778301740581e-06, + 1.499082430573010140e-06, + 1.501060351562547375e-06, + 1.503035538441478447e-06, + 1.505007988385807158e-06, + 1.506977698576426593e-06, + 1.508944666199006893e-06, + 1.510908888444386582e-06, + 1.512870362508103311e-06, + 1.514829085590336472e-06, + 1.516785054896686465e-06, + 1.518738267637301627e-06, + 1.520688721027246045e-06, + 1.522636412286759393e-06, + 1.524581338640715885e-06, + 1.526523497319009886e-06, + 1.528462885556448130e-06, + 1.530399500592679626e-06, + 1.532333339672545695e-06, + 1.534264400045649466e-06, + 1.536192678966254654e-06, + 1.538118173694108032e-06, + 1.540040881493541572e-06, + 1.541960799633827354e-06, + 1.543877925389470853e-06, + 1.545792256039656764e-06, + 1.547703788868614075e-06, + 1.549612521165552964e-06, + 1.551518450224627527e-06, + 1.553421573344890890e-06, + 1.555321887830716812e-06, + 1.557219390990832382e-06, + 1.559114080139583055e-06, + 1.561005952595916643e-06, + 1.562895005683808519e-06, + 1.564781236732543471e-06, + 1.566664643075891964e-06, + 1.568545222052884534e-06, + 1.570422971007732385e-06, + 1.572297887289388200e-06, + 1.574169968251820364e-06, + 1.576039211254342679e-06, + 1.577905613660701257e-06, + 1.579769172840263544e-06, + 1.581629886167069221e-06, + 1.583487751020183837e-06, + 1.585342764784066425e-06, + 1.587194924847677786e-06, + 1.589044228605278817e-06, + 1.590890673456356821e-06, + 1.592734256805178696e-06, + 1.594574976061057327e-06, + 1.596412828638711150e-06, + 1.598247811957391290e-06, + 1.600079923441668235e-06, + 1.601909160521355184e-06, + 1.603735520631067168e-06, + 1.605559001210580611e-06, + 1.607379599704742489e-06, + 1.609197313563391131e-06, + 1.611012140241704350e-06, + 1.612824077199688472e-06, + 1.614633121902430323e-06, + 1.616439271820456379e-06, + 1.618242524428881488e-06, + 1.620042877208164435e-06, + 1.621840327644030852e-06, + 1.623634873227068340e-06, + 1.625426511453053426e-06, + 1.627215239822868973e-06, + 1.629001055842424351e-06, + 1.630783957023022623e-06, + 1.632563940880805952e-06, + 1.634341004937149469e-06, + 1.636115146718539939e-06, + 1.637886363756596721e-06, + 1.639654653588005493e-06, + 1.641420013754818308e-06, + 1.643182441803991962e-06, + 1.644941935287710718e-06, + 1.646698491763302444e-06, + 1.648452108793246664e-06, + 1.650202783945089217e-06, + 1.651950514791789965e-06, + 1.653695298911222833e-06, + 1.655437133886488571e-06, + 1.657176017305885538e-06, + 1.658911946762773327e-06, + 1.660644919855945033e-06, + 1.662374934189118403e-06, + 1.664101987371276339e-06, + 1.665826077016577115e-06, + 1.667547200744371529e-06, + 1.669265356179121587e-06, + 1.670980540950722801e-06, + 1.672692752694009519e-06, + 1.674401989049118726e-06, + 1.676108247661367016e-06, + 1.677811526181285952e-06, + 1.679511822264535458e-06, + 1.681209133572220184e-06, + 1.682903457770428513e-06, + 1.684594792530543842e-06, + 1.686283135529157761e-06, + 1.687968484448011607e-06, + 1.689650836974314743e-06, + 1.691330190800345172e-06, + 1.693006543623368654e-06, + 1.694679893146383030e-06, + 1.696350237077270348e-06, + 1.698017573129192421e-06, + 1.699681899020840918e-06, + 1.701343212475615741e-06, + 1.703001511222722779e-06, + 1.704656792996295110e-06, + 1.706309055535722078e-06, + 1.707958296585904034e-06, + 1.709604513896823948e-06, + 1.711247705223508238e-06, + 1.712887868326714560e-06, + 1.714525000972157616e-06, + 1.716159100930827641e-06, + 1.717790165979299148e-06, + 1.719418193898968385e-06, + 1.721043182476741972e-06, + 1.722665129504952834e-06, + 1.724284032781012705e-06, + 1.725899890107604618e-06, + 1.727512699293018963e-06, + 1.729122458150301163e-06, + 1.730729164498345824e-06, + 1.732332816161034462e-06, + 1.733933410967536617e-06, + 1.735530946752663492e-06, + 1.737125421356056709e-06, + 1.738716832622909555e-06, + 1.740305178403876773e-06, + 1.741890456554704621e-06, + 1.743472664936463807e-06, + 1.745051801415860137e-06, + 1.746627863864368212e-06, + 1.748200850159350148e-06, + 1.749770758183176143e-06, + 1.751337585823646724e-06, + 1.752901330973875218e-06, + 1.754461991532341121e-06, + 1.756019565402769388e-06, + 1.757574050494467985e-06, + 1.759125444721860318e-06, + 1.760673746004721559e-06, + 1.762218952268484850e-06, + 1.763761061443485113e-06, + 1.765300071465630956e-06, + 1.766835980276360844e-06, + 1.768368785822243296e-06, + 1.769898486055278853e-06, + 1.771425078932851374e-06, + 1.772948562417625547e-06, + 1.774468934477875956e-06, + 1.775986193087020159e-06, + 1.777500336223934629e-06, + 1.779011361872886994e-06, + 1.780519268023500668e-06, + 1.782024052670739186e-06, + 1.783525713815162218e-06, + 1.785024249462501628e-06, + 1.786519657623952221e-06, + 1.788011936316116471e-06, + 1.789501083560988638e-06, + 1.790987097385888494e-06, + 1.792469975823764130e-06, + 1.793949716912737950e-06, + 1.795426318696428757e-06, + 1.796899779223860480e-06, + 1.798370096549390817e-06, + 1.799837268733028021e-06, + 1.801301293839953811e-06, + 1.802762169940875738e-06, + 1.804219895111890599e-06, + 1.805674467434542460e-06, + 1.807125884995724401e-06, + 1.808574145887965870e-06, + 1.810019248209030132e-06, + 1.811461190062182143e-06, + 1.812899969556103422e-06, + 1.814335584804943934e-06, + 1.815768033928205198e-06, + 1.817197315051045217e-06, + 1.818623426303856661e-06, + 1.820046365822556334e-06, + 1.821466131748520168e-06, + 1.822882722228480523e-06, + 1.824296135414851015e-06, + 1.825706369465359972e-06, + 1.827113422542994103e-06, + 1.828517292816595018e-06, + 1.829917978460211041e-06, + 1.831315477653363384e-06, + 1.832709788581289889e-06, + 1.834100909434237112e-06, + 1.835488838408400959e-06, + 1.836873573705173458e-06, + 1.838255113531422070e-06, + 1.839633456099702084e-06, + 1.841008599627912293e-06, + 1.842380542339233378e-06, + 1.843749282462735865e-06, + 1.845114818232703340e-06, + 1.846477147888906049e-06, + 1.847836269676887189e-06, + 1.849192181847266438e-06, + 1.850544882656370569e-06, + 1.851894370366152773e-06, + 1.853240643243869726e-06, + 1.854583699562271110e-06, + 1.855923537599880411e-06, + 1.857260155640260534e-06, + 1.858593551972956133e-06, + 1.859923724892736784e-06, + 1.861250672699907423e-06, + 1.862574393700534717e-06, + 1.863894886205803740e-06, + 1.865212148532624873e-06, + 1.866526179003555667e-06, + 1.867836975946468382e-06, + 1.869144537694769154e-06, + 1.870448862587650413e-06, + 1.871749948969378530e-06, + 1.873047795190191457e-06, + 1.874342399605609877e-06, + 1.875633760576744471e-06, + 1.876921876470246358e-06, + 1.878206745658291858e-06, + 1.879488366518549447e-06, + 1.880766737434410159e-06, + 1.882041856794620606e-06, + 1.883313722993516757e-06, + 1.884582334431007846e-06, + 1.885847689512522799e-06, + 1.887109786649004089e-06, + 1.888368624257100651e-06, + 1.889624200758873114e-06, + 1.890876514581947748e-06, + 1.892125564159545477e-06, + 1.893371347930365407e-06, + 1.894613864338851014e-06, + 1.895853111834839678e-06, + 1.897089088873760890e-06, + 1.898321793916643240e-06, + 1.899551225430064868e-06, + 1.900777381886118310e-06, + 1.902000261762641313e-06, + 1.903219863542862778e-06, + 1.904436185715653694e-06, + 1.905649226775447300e-06, + 1.906858985222260056e-06, + 1.908065459561639758e-06, + 1.909268648304872425e-06, + 1.910468549968655349e-06, + 1.911665163075326423e-06, + 1.912858486152819889e-06, + 1.914048517734576973e-06, + 1.915235256359818206e-06, + 1.916418700573184707e-06, + 1.917598848924943589e-06, + 1.918775699970976945e-06, + 1.919949252272749661e-06, + 1.921119504397261563e-06, + 1.922286454917295168e-06, + 1.923450102411054430e-06, + 1.924610445462386656e-06, + 1.925767482660765998e-06, + 1.926921212601197729e-06, + 1.928071633884466854e-06, + 1.929218745116788281e-06, + 1.930362544910051192e-06, + 1.931503031881744080e-06, + 1.932640204654967458e-06, + 1.933774061858388110e-06, + 1.934904602126448744e-06, + 1.936031824099091425e-06, + 1.937155726421705488e-06, + 1.938276307745642111e-06, + 1.939393566727636635e-06, + 1.940507502030061406e-06, + 1.941618112321104921e-06, + 1.942725396274229730e-06, + 1.943829352568875892e-06, + 1.944929979889907018e-06, + 1.946027276927813137e-06, + 1.947121242378862736e-06, + 1.948211874944863050e-06, + 1.949299173333070702e-06, + 1.950383136256722364e-06, + 1.951463762434460477e-06, + 1.952541050590556013e-06, + 1.953614999455143530e-06, + 1.954685607763607919e-06, + 1.955752874257359019e-06, + 1.956816797683220054e-06, + 1.957877376793730875e-06, + 1.958934610346988290e-06, + 1.959988497106975990e-06, + 1.961039035842939432e-06, + 1.962086225330130383e-06, + 1.963130064349247881e-06, + 1.964170551686642790e-06, + 1.965207686134507962e-06, + 1.966241466490398387e-06, + 1.967271891557658531e-06, + 1.968298960145393102e-06, + 1.969322671068215490e-06, + 1.970343023146377783e-06, + 1.971360015206005394e-06, + 1.972373646078514730e-06, + 1.973383914601350528e-06, + 1.974390819617411573e-06, + 1.975394359975240852e-06, + 1.976394534529258916e-06, + 1.977391342139246762e-06, + 1.978384781670787986e-06, + 1.979374851995259468e-06, + 1.980361551989507377e-06, + 1.981344880536152532e-06, + 1.982324836523431155e-06, + 1.983301418845284235e-06, + 1.984274626401249108e-06, + 1.985244458096694508e-06, + 1.986210912842516907e-06, + 1.987173989555313732e-06, + 1.988133687157383364e-06, + 1.989090004576641707e-06, + 1.990042940746811078e-06, + 1.990992494607157621e-06, + 1.991938665102672155e-06, + 1.992881451184024007e-06, + 1.993820851807551272e-06, + 1.994756865935243024e-06, + 1.995689492534903221e-06, + 1.996618730579866943e-06, + 1.997544579049207075e-06, + 1.998467036927681782e-06, + 1.999386103205680733e-06, + 2.000301776879427532e-06, + 2.001214056950673100e-06, + 2.002122942426932414e-06, + 2.003028432321377363e-06, + 2.003930525652890531e-06, + 2.004829221445973719e-06, + 2.005724518730980031e-06, + 2.006616416543805555e-06, + 2.007504913926079098e-06, + 2.008390009925127882e-06, + 2.009271703593977118e-06, + 2.010149993991289022e-06, + 2.011024880181550433e-06, + 2.011896361234826323e-06, + 2.012764436226919044e-06, + 2.013629104239304798e-06, + 2.014490364359134060e-06, + 2.015348215679387433e-06, + 2.016202657298647371e-06, + 2.017053688321065573e-06, + 2.017901307856759387e-06, + 2.018745515021367125e-06, + 2.019586308936228476e-06, + 2.020423688728510294e-06, + 2.021257653530967306e-06, + 2.022088202482087809e-06, + 2.022915334726058510e-06, + 2.023739049412780205e-06, + 2.024559345697816101e-06, + 2.025376222742587487e-06, + 2.026189679713942592e-06, + 2.026999715784727908e-06, + 2.027806330133320206e-06, + 2.028609521943812458e-06, + 2.029409290406122259e-06, + 2.030205634715796161e-06, + 2.030998554073958004e-06, + 2.031788047687703211e-06, + 2.032574114769650707e-06, + 2.033356754538156793e-06, + 2.034135966217423994e-06, + 2.034911749037096595e-06, + 2.035684102232806137e-06, + 2.036453025045739848e-06, + 2.037218516722830379e-06, + 2.037980576516689741e-06, + 2.038739203685796915e-06, + 2.039494397494070952e-06, + 2.040246157211420275e-06, + 2.040994482113301370e-06, + 2.041739371480897938e-06, + 2.042480824601245831e-06, + 2.043218840766879836e-06, + 2.043953419276152590e-06, + 2.044684559433237960e-06, + 2.045412260547866776e-06, + 2.046136521935555100e-06, + 2.046857342917527998e-06, + 2.047574722820684810e-06, + 2.048288660977757543e-06, + 2.048999156727075823e-06, + 2.049706209412708771e-06, + 2.050409818384567917e-06, + 2.051109982998066269e-06, + 2.051806702614458401e-06, + 2.052499976600769720e-06, + 2.053189804329649508e-06, + 2.053876185179492049e-06, + 2.054559118534431123e-06, + 2.055238603784290028e-06, + 2.055914640324593019e-06, + 2.056587227556691938e-06, + 2.057256364887545983e-06, + 2.057922051729867402e-06, + 2.058584287502090150e-06, + 2.059243071628334736e-06, + 2.059898403538545023e-06, + 2.060550282668283243e-06, + 2.061198708458866367e-06, + 2.061843680357326302e-06, + 2.062485197816421318e-06, + 2.063123260294577606e-06, + 2.063757867256078167e-06, + 2.064389018170795574e-06, + 2.065016712514366457e-06, + 2.065640949768154236e-06, + 2.066261729419200841e-06, + 2.066879050960366470e-06, + 2.067492913890134773e-06, + 2.068103317712750496e-06, + 2.068710261938171198e-06, + 2.069313746082076144e-06, + 2.069913769665831157e-06, + 2.070510332216624987e-06, + 2.071103433267265599e-06, + 2.071693072356308079e-06, + 2.072279249028041926e-06, + 2.072861962832456322e-06, + 2.073441213325253686e-06, + 2.074017000067932263e-06, + 2.074589322627615017e-06, + 2.075158180577193208e-06, + 2.075723573495251428e-06, + 2.076285500966088352e-06, + 2.076843962579795091e-06, + 2.077398957932137030e-06, + 2.077950486624493686e-06, + 2.078498548264147553e-06, + 2.079043142463981279e-06, + 2.079584268842597950e-06, + 2.080121927024400713e-06, + 2.080656116639431409e-06, + 2.081186837323463331e-06, + 2.081714088718008842e-06, + 2.082237870470287190e-06, + 2.082758182233190625e-06, + 2.083275023665469902e-06, + 2.083788394431365820e-06, + 2.084298294201057724e-06, + 2.084804722650298862e-06, + 2.085307679460601880e-06, + 2.085807164319235862e-06, + 2.086303176919144588e-06, + 2.086795716958906726e-06, + 2.087284784142975962e-06, + 2.087770378181408684e-06, + 2.088252498789985103e-06, + 2.088731145690282527e-06, + 2.089206318609433948e-06, + 2.089678017280453735e-06, + 2.090146241441963615e-06, + 2.090610990838293892e-06, + 2.091072265219567305e-06, + 2.091530064341571551e-06, + 2.091984387965707188e-06, + 2.092435235859269279e-06, + 2.092882607795136527e-06, + 2.093326503551904260e-06, + 2.093766922913973371e-06, + 2.094203865671303829e-06, + 2.094637331619641262e-06, + 2.095067320560480959e-06, + 2.095493832300952669e-06, + 2.095916866653927332e-06, + 2.096336423437964987e-06, + 2.096752502477315614e-06, + 2.097165103602001300e-06, + 2.097574226647674358e-06, + 2.097979871455701190e-06, + 2.098382037873222416e-06, + 2.098780725752973313e-06, + 2.099175934953434581e-06, + 2.099567665338835731e-06, + 2.099955916779050480e-06, + 2.100340689149661547e-06, + 2.100721982331958958e-06, + 2.101099796212893885e-06, + 2.101474130685218827e-06, + 2.101844985647266960e-06, + 2.102212361003129168e-06, + 2.102576256662571031e-06, + 2.102936672541062049e-06, + 2.103293608559735407e-06, + 2.103647064645491739e-06, + 2.103997040730847506e-06, + 2.104343536754064170e-06, + 2.104686552659049094e-06, + 2.105026088395434308e-06, + 2.105362143918509179e-06, + 2.105694719189305957e-06, + 2.106023814174503213e-06, + 2.106349428846462684e-06, + 2.106671563183259769e-06, + 2.106990217168617885e-06, + 2.107305390792010952e-06, + 2.107617084048530838e-06, + 2.107925296938984342e-06, + 2.108230029469854230e-06, + 2.108531281653298390e-06, + 2.108829053507155760e-06, + 2.109123345054986560e-06, + 2.109414156325971923e-06, + 2.109701487355009606e-06, + 2.109985338182647077e-06, + 2.110265708855122169e-06, + 2.110542599424343180e-06, + 2.110816009947914703e-06, + 2.111085940489109252e-06, + 2.111352391116841427e-06, + 2.111615361905721278e-06, + 2.111874852936017883e-06, + 2.112130864293705933e-06, + 2.112383396070408135e-06, + 2.112632448363347354e-06, + 2.112878021275546514e-06, + 2.113120114915593119e-06, + 2.113358729397759963e-06, + 2.113593864842027144e-06, + 2.113825521373989744e-06, + 2.114053699124920504e-06, + 2.114278398231752465e-06, + 2.114499618837072613e-06, + 2.114717361089134583e-06, + 2.114931625141890001e-06, + 2.115142411154838983e-06, + 2.115349719293252057e-06, + 2.115553549728004143e-06, + 2.115753902635590226e-06, + 2.115950778198233352e-06, + 2.116144176603777899e-06, + 2.116334098045653582e-06, + 2.116520542723047398e-06, + 2.116703510840716856e-06, + 2.116883002609081459e-06, + 2.117059018244255732e-06, + 2.117231557967895493e-06, + 2.117400622007416383e-06, + 2.117566210595801167e-06, + 2.117728323971679354e-06, + 2.117886962379360658e-06, + 2.118042126068769349e-06, + 2.118193815295426046e-06, + 2.118342030320558673e-06, + 2.118486771410986844e-06, + 2.118628038839154895e-06, + 2.118765832883206000e-06, + 2.118900153826803022e-06, + 2.119031001959350014e-06, + 2.119158377575801636e-06, + 2.119282280976785975e-06, + 2.119402712468507982e-06, + 2.119519672362864247e-06, + 2.119633160977306201e-06, + 2.119743178634955738e-06, + 2.119849725664537451e-06, + 2.119952802400368467e-06, + 2.120052409182455435e-06, + 2.120148546356334012e-06, + 2.120241214273196338e-06, + 2.120330413289866901e-06, + 2.120416143768756795e-06, + 2.120498406077885742e-06, + 2.120577200590894374e-06, + 2.120652527687016706e-06, + 2.120724387751110628e-06, + 2.120792781173628682e-06, + 2.120857708350631616e-06, + 2.120919169683772712e-06, + 2.120977165580321083e-06, + 2.121031696453112539e-06, + 2.121082762720629637e-06, + 2.121130364806911047e-06, + 2.121174503141594750e-06, + 2.121215178159940907e-06, + 2.121252390302765793e-06, + 2.121286140016486264e-06, + 2.121316427753121877e-06, + 2.121343253970260157e-06, + 2.121366619131079474e-06, + 2.121386523704350306e-06, + 2.121402968164400092e-06, + 2.121415952991178877e-06, + 2.121425478670184346e-06, + 2.121431545692486391e-06, + 2.121434154554759721e-06, + 2.121433305759216948e-06, + 2.121428999813664912e-06, + 2.121421237231489010e-06, + 2.121410018531625672e-06, + 2.121395344238586922e-06, + 2.121377214882446825e-06, + 2.121355630998844454e-06, + 2.121330593128974144e-06, + 2.121302101819616418e-06, + 2.121270157623078259e-06, + 2.121234761097242673e-06, + 2.121195912805543695e-06, + 2.121153613316972317e-06, + 2.121107863206063366e-06, + 2.121058663052914131e-06, + 2.121006013443147522e-06, + 2.120949914967966702e-06, + 2.120890368224081818e-06, + 2.120827373813782847e-06, + 2.120760932344876915e-06, + 2.120691044430723025e-06, + 2.120617710690204530e-06, + 2.120540931747753272e-06, + 2.120460708233325440e-06, + 2.120377040782421904e-06, + 2.120289930036068304e-06, + 2.120199376640798112e-06, + 2.120105381248713620e-06, + 2.120007944517411395e-06, + 2.119907067110006429e-06, + 2.119802749695161352e-06, + 2.119694992947032228e-06, + 2.119583797545305823e-06, + 2.119469164175188593e-06, + 2.119351093527379577e-06, + 2.119229586298116990e-06, + 2.119104643189122735e-06, + 2.118976264907642217e-06, + 2.118844452166419782e-06, + 2.118709205683701251e-06, + 2.118570526183244937e-06, + 2.118428414394306399e-06, + 2.118282871051617683e-06, + 2.118133896895442812e-06, + 2.117981492671501545e-06, + 2.117825659131031638e-06, + 2.117666397030754115e-06, + 2.117503707132863526e-06, + 2.117337590205064796e-06, + 2.117168047020533410e-06, + 2.116995078357911605e-06, + 2.116818685001351143e-06, + 2.116638867740452749e-06, + 2.116455627370310158e-06, + 2.116268964691477501e-06, + 2.116078880509995143e-06, + 2.115885375637362151e-06, + 2.115688450890543074e-06, + 2.115488107091964976e-06, + 2.115284345069532681e-06, + 2.115077165656595745e-06, + 2.114866569691950564e-06, + 2.114652558019884007e-06, + 2.114435131490112844e-06, + 2.114214290957816361e-06, + 2.113990037283602904e-06, + 2.113762371333549261e-06, + 2.113531293979167631e-06, + 2.113296806097417483e-06, + 2.113058908570684378e-06, + 2.112817602286818934e-06, + 2.112572888139094051e-06, + 2.112324767026202791e-06, + 2.112073239852286758e-06, + 2.111818307526915764e-06, + 2.111559970965074281e-06, + 2.111298231087178379e-06, + 2.111033088819076575e-06, + 2.110764545092023147e-06, + 2.110492600842699317e-06, + 2.110217257013184870e-06, + 2.109938514550996694e-06, + 2.109656374409058715e-06, + 2.109370837545672244e-06, + 2.109081904924572734e-06, + 2.108789577514910296e-06, + 2.108493856291204807e-06, + 2.108194742233400117e-06, + 2.107892236326823820e-06, + 2.107586339562193603e-06, + 2.107277052935626142e-06, + 2.106964377448619735e-06, + 2.106648314108091151e-06, + 2.106328863926301513e-06, + 2.106006027920902886e-06, + 2.105679807114938276e-06, + 2.105350202536817911e-06, + 2.105017215220340422e-06, + 2.104680846204654723e-06, + 2.104341096534319303e-06, + 2.103997967259188301e-06, + 2.103651459434545338e-06, + 2.103301574121033636e-06, + 2.102948312384609007e-06, + 2.102591675296620321e-06, + 2.102231663933775628e-06, + 2.101868279378098955e-06, + 2.101501522717002729e-06, + 2.101131395043230603e-06, + 2.100757897454860419e-06, + 2.100381031055340632e-06, + 2.100000796953417890e-06, + 2.099617196263194203e-06, + 2.099230230104133303e-06, + 2.098839899600993299e-06, + 2.098446205883871573e-06, + 2.098049150088203933e-06, + 2.097648733354712943e-06, + 2.097244956829487119e-06, + 2.096837821663907241e-06, + 2.096427329014679807e-06, + 2.096013480043812896e-06, + 2.095596275918651315e-06, + 2.095175717811792750e-06, + 2.094751806901218624e-06, + 2.094324544370135711e-06, + 2.093893931407091324e-06, + 2.093459969205936897e-06, + 2.093022658965755141e-06, + 2.092582001891015048e-06, + 2.092137999191423238e-06, + 2.091690652081948526e-06, + 2.091239961782876973e-06, + 2.090785929519782667e-06, + 2.090328556523464198e-06, + 2.089867844030070861e-06, + 2.089403793280958661e-06, + 2.088936405522781799e-06, + 2.088465682007465980e-06, + 2.087991623992180046e-06, + 2.087514232739368583e-06, + 2.087033509516742605e-06, + 2.086549455597229155e-06, + 2.086062072259040759e-06, + 2.085571360785650022e-06, + 2.085077322465712962e-06, + 2.084579958593219792e-06, + 2.084079270467347104e-06, + 2.083575259392488367e-06, + 2.083067926678315338e-06, + 2.082557273639711564e-06, + 2.082043301596807964e-06, + 2.081526011874946826e-06, + 2.081005405804670373e-06, + 2.080481484721782174e-06, + 2.079954249967296744e-06, + 2.079423702887376018e-06, + 2.078889844833508497e-06, + 2.078352677162322054e-06, + 2.077812201235633911e-06, + 2.077268418420501457e-06, + 2.076721330089165925e-06, + 2.076170937619063823e-06, + 2.075617242392835406e-06, + 2.075060245798324254e-06, + 2.074499949228481130e-06, + 2.073936354081548213e-06, + 2.073369461760890114e-06, + 2.072799273675059096e-06, + 2.072225791237796770e-06, + 2.071649015867977768e-06, + 2.071068948989683008e-06, + 2.070485592032139981e-06, + 2.069898946429768491e-06, + 2.069309013622109924e-06, + 2.068715795053901793e-06, + 2.068119292174973970e-06, + 2.067519506440358806e-06, + 2.066916439310228022e-06, + 2.066310092249886361e-06, + 2.065700466729792336e-06, + 2.065087564225513763e-06, + 2.064471386217783667e-06, + 2.063851934192450726e-06, + 2.063229209640506379e-06, + 2.062603214058047557e-06, + 2.061973948946325387e-06, + 2.061341415811641851e-06, + 2.060705616165460753e-06, + 2.060066551524425500e-06, + 2.059424223410150737e-06, + 2.058778633349443847e-06, + 2.058129782874218970e-06, + 2.057477673521425860e-06, + 2.056822306833159571e-06, + 2.056163684356617686e-06, + 2.055501807644062194e-06, + 2.054836678252861426e-06, + 2.054168297745413816e-06, + 2.053496667689241924e-06, + 2.052821789656987354e-06, + 2.052143665226265064e-06, + 2.051462295979824302e-06, + 2.050777683505494397e-06, + 2.050089829396089465e-06, + 2.049398735249560879e-06, + 2.048704402668882491e-06, + 2.048006833262095955e-06, + 2.047306028642270909e-06, + 2.046601990427565544e-06, + 2.045894720241079639e-06, + 2.045184219711123499e-06, + 2.044470490470865159e-06, + 2.043753534158606101e-06, + 2.043033352417685533e-06, + 2.042309946896354185e-06, + 2.041583319248054251e-06, + 2.040853471131139870e-06, + 2.040120404208975803e-06, + 2.039384120149971317e-06, + 2.038644620627566207e-06, + 2.037901907320097390e-06, + 2.037155981911094517e-06, + 2.036406846088881446e-06, + 2.035654501546895150e-06, + 2.034898949983566707e-06, + 2.034140193102205259e-06, + 2.033378232611259321e-06, + 2.032613070224076220e-06, + 2.031844707658942759e-06, + 2.031073146639178810e-06, + 2.030298388893082679e-06, + 2.029520436153815914e-06, + 2.028739290159661646e-06, + 2.027954952653778954e-06, + 2.027167425384226152e-06, + 2.026376710104103943e-06, + 2.025582808571423705e-06, + 2.024785722549152802e-06, + 2.023985453805205273e-06, + 2.023182004112389737e-06, + 2.022375375248491977e-06, + 2.021565568996251651e-06, + 2.020752587143207702e-06, + 2.019936431482002025e-06, + 2.019117103810113074e-06, + 2.018294605929855860e-06, + 2.017468939648581428e-06, + 2.016640106778498557e-06, + 2.015808109136708066e-06, + 2.014972948545264645e-06, + 2.014134626831011262e-06, + 2.013293145825803202e-06, + 2.012448507366314521e-06, + 2.011600713294130370e-06, + 2.010749765455739377e-06, + 2.009895665702498914e-06, + 2.009038415890563522e-06, + 2.008178017881057288e-06, + 2.007314473539937889e-06, + 2.006447784738033868e-06, + 2.005577953351008206e-06, + 2.004704981259448112e-06, + 2.003828870348676131e-06, + 2.002949622508963600e-06, + 2.002067239635384530e-06, + 2.001181723627869823e-06, + 2.000293076391219545e-06, + 1.999401299834946234e-06, + 1.998506395873522227e-06, + 1.997608366426192046e-06, + 1.996707213417027452e-06, + 1.995802938774924908e-06, + 1.994895544433612350e-06, + 1.993985032331542044e-06, + 1.993071404412072691e-06, + 1.992154662623308919e-06, + 1.991234808918191915e-06, + 1.990311845254438436e-06, + 1.989385773594582316e-06, + 1.988456595905849528e-06, + 1.987524314160351309e-06, + 1.986588930334950748e-06, + 1.985650446411269144e-06, + 1.984708864375756307e-06, + 1.983764186219505479e-06, + 1.982816413938446041e-06, + 1.981865549533389245e-06, + 1.980911595009665688e-06, + 1.979954552377514524e-06, + 1.978994423651916597e-06, + 1.978031210852453409e-06, + 1.977064916003708193e-06, + 1.976095541134727623e-06, + 1.975123088279449138e-06, + 1.974147559476531966e-06, + 1.973168956769257169e-06, + 1.972187282205673755e-06, + 1.971202537838693551e-06, + 1.970214725725689706e-06, + 1.969223847928898608e-06, + 1.968229906515268690e-06, + 1.967232903556287210e-06, + 1.966232841128360571e-06, + 1.965229721312481435e-06, + 1.964223546194242701e-06, + 1.963214317864052650e-06, + 1.962202038416982053e-06, + 1.961186709952621031e-06, + 1.960168334575513995e-06, + 1.959146914394585368e-06, + 1.958122451523590621e-06, + 1.957094948080937558e-06, + 1.956064406189515207e-06, + 1.955030827977133859e-06, + 1.953994215576100280e-06, + 1.952954571123297754e-06, + 1.951911896760360998e-06, + 1.950866194633559690e-06, + 1.949817466893624410e-06, + 1.948765715696205304e-06, + 1.947710943201285940e-06, + 1.946653151573623337e-06, + 1.945592342982544685e-06, + 1.944528519601996464e-06, + 1.943461683610517344e-06, + 1.942391837191286467e-06, + 1.941318982531961660e-06, + 1.940243121824904748e-06, + 1.939164257267089650e-06, + 1.938082391059874528e-06, + 1.936997525409463842e-06, + 1.935909662526499236e-06, + 1.934818804626121791e-06, + 1.933724953928154564e-06, + 1.932628112656931909e-06, + 1.931528283041373169e-06, + 1.930425467314965313e-06, + 1.929319667715619786e-06, + 1.928210886485928313e-06, + 1.927099125872968084e-06, + 1.925984388128367818e-06, + 1.924866675508264568e-06, + 1.923745990273390964e-06, + 1.922622334688847787e-06, + 1.921495711024396190e-06, + 1.920366121554265426e-06, + 1.919233568557189271e-06, + 1.918098054316412795e-06, + 1.916959581119721592e-06, + 1.915818151259259237e-06, + 1.914673767031802155e-06, + 1.913526430738566914e-06, + 1.912376144685247925e-06, + 1.911222911182060212e-06, + 1.910066732543574243e-06, + 1.908907611088942511e-06, + 1.907745549141746643e-06, + 1.906580549030042508e-06, + 1.905412613086320191e-06, + 1.904241743647569215e-06, + 1.903067943055105750e-06, + 1.901891213654802365e-06, + 1.900711557796943192e-06, + 1.899528977836230906e-06, + 1.898343476131808544e-06, + 1.897155055047293169e-06, + 1.895963716950561998e-06, + 1.894769464214064105e-06, + 1.893572299214612059e-06, + 1.892372224333408174e-06, + 1.891169241956128792e-06, + 1.889963354472684150e-06, + 1.888754564277486466e-06, + 1.887542873769475135e-06, + 1.886328285351674583e-06, + 1.885110801431699306e-06, + 1.883890424421523266e-06, + 1.882667156737299898e-06, + 1.881441000799887695e-06, + 1.880211959034174694e-06, + 1.878980033869587339e-06, + 1.877745227739905607e-06, + 1.876507543083117960e-06, + 1.875266982341639457e-06, + 1.874023547962382262e-06, + 1.872777242396292748e-06, + 1.871528068098825197e-06, + 1.870276027529789757e-06, + 1.869021123153099604e-06, + 1.867763357437274928e-06, + 1.866502732855007129e-06, + 1.865239251883182965e-06, + 1.863972917003147337e-06, + 1.862703730700536430e-06, + 1.861431695465073995e-06, + 1.860156813791138654e-06, + 1.858879088177004323e-06, + 1.857598521125464048e-06, + 1.856315115143553877e-06, + 1.855028872742375402e-06, + 1.853739796437616901e-06, + 1.852447888749047021e-06, + 1.851153152200613032e-06, + 1.849855589320639673e-06, + 1.848555202641712468e-06, + 1.847251994700431669e-06, + 1.845945968038007501e-06, + 1.844637125199515202e-06, + 1.843325468734454911e-06, + 1.842011001196508990e-06, + 1.840693725143550498e-06, + 1.839373643137691048e-06, + 1.838050757745280803e-06, + 1.836725071536706675e-06, + 1.835396587086733253e-06, + 1.834065306974237474e-06, + 1.832731233782311530e-06, + 1.831394370098198925e-06, + 1.830054718513391243e-06, + 1.828712281623385264e-06, + 1.827367062028005259e-06, + 1.826019062331178739e-06, + 1.824668285141005064e-06, + 1.823314733069762219e-06, + 1.821958408733745665e-06, + 1.820599314753540663e-06, + 1.819237453753804798e-06, + 1.817872828363351618e-06, + 1.816505441215093678e-06, + 1.815135294946144605e-06, + 1.813762392197558634e-06, + 1.812386735614676834e-06, + 1.811008327846889939e-06, + 1.809627171547680274e-06, + 1.808243269374642723e-06, + 1.806856623989515006e-06, + 1.805467238057956184e-06, + 1.804075114249873399e-06, + 1.802680255239197622e-06, + 1.801282663703937020e-06, + 1.799882342326230312e-06, + 1.798479293792084197e-06, + 1.797073520791758325e-06, + 1.795665026019498693e-06, + 1.794253812173599059e-06, + 1.792839881956401150e-06, + 1.791423238074345064e-06, + 1.790003883237720450e-06, + 1.788581820161023534e-06, + 1.787157051562721646e-06, + 1.785729580165289429e-06, + 1.784299408695275539e-06, + 1.782866539883071626e-06, + 1.781430976463238221e-06, + 1.779992721174281122e-06, + 1.778551776758688666e-06, + 1.777108145962945704e-06, + 1.775661831537577643e-06, + 1.774212836236907989e-06, + 1.772761162819352473e-06, + 1.771306814047472419e-06, + 1.769849792687436663e-06, + 1.768390101509612784e-06, + 1.766927743288301559e-06, + 1.765462720801536638e-06, + 1.763995036831700551e-06, + 1.762524694164691015e-06, + 1.761051695590569970e-06, + 1.759576043903354792e-06, + 1.758097741900776669e-06, + 1.756616792384609470e-06, + 1.755133198160729029e-06, + 1.753646962038543097e-06, + 1.752158086831600993e-06, + 1.750666575357361939e-06, + 1.749172430436907918e-06, + 1.747675654895670215e-06, + 1.746176251562495776e-06, + 1.744674223270370148e-06, + 1.743169572856085235e-06, + 1.741662303160350466e-06, + 1.740152417027497185e-06, + 1.738639917306131286e-06, + 1.737124806848298252e-06, + 1.735607088510113985e-06, + 1.734086765151532080e-06, + 1.732563839636106444e-06, + 1.731038314831571730e-06, + 1.729510193609319442e-06, + 1.727979478844408950e-06, + 1.726446173415930650e-06, + 1.724910280206752922e-06, + 1.723371802103310999e-06, + 1.721830741996269559e-06, + 1.720287102779647536e-06, + 1.718740887351497641e-06, + 1.717192098613650992e-06, + 1.715640739471470195e-06, + 1.714086812834461332e-06, + 1.712530321615707928e-06, + 1.710971268731921773e-06, + 1.709409657103762256e-06, + 1.707845489655563616e-06, + 1.706278769315420072e-06, + 1.704709499015149401e-06, + 1.703137681690381028e-06, + 1.701563320280261044e-06, + 1.699986417727865566e-06, + 1.698406976979914220e-06, + 1.696825000986836849e-06, + 1.695240492702839157e-06, + 1.693653455085629328e-06, + 1.692063891096800254e-06, + 1.690471803701585795e-06, + 1.688877195868888312e-06, + 1.687280070571293277e-06, + 1.685680430785129412e-06, + 1.684078279490186841e-06, + 1.682473619670121966e-06, + 1.680866454312184306e-06, + 1.679256786407272610e-06, + 1.677644618950005157e-06, + 1.676029954938423301e-06, + 1.674412797374420490e-06, + 1.672793149263453002e-06, + 1.671171013614589925e-06, + 1.669546393440524163e-06, + 1.667919291757639570e-06, + 1.666289711585715962e-06, + 1.664657655948341206e-06, + 1.663023127872630639e-06, + 1.661386130389291016e-06, + 1.659746666532622416e-06, + 1.658104739340560598e-06, + 1.656460351854425428e-06, + 1.654813507119316021e-06, + 1.653164208183799882e-06, + 1.651512458100027887e-06, + 1.649858259923774518e-06, + 1.648201616714133571e-06, + 1.646542531533902279e-06, + 1.644881007449602914e-06, + 1.643217047530891771e-06, + 1.641550654851217100e-06, + 1.639881832487545301e-06, + 1.638210583520159757e-06, + 1.636536911033045382e-06, + 1.634860818113640447e-06, + 1.633182307852859655e-06, + 1.631501383345125486e-06, + 1.629818047688419015e-06, + 1.628132303983908493e-06, + 1.626444155336744071e-06, + 1.624753604855039034e-06, + 1.623060655650664952e-06, + 1.621365310838941241e-06, + 1.619667573538434421e-06, + 1.617967446871310687e-06, + 1.616264933963375724e-06, + 1.614560037943447268e-06, + 1.612852761944065974e-06, + 1.611143109101186041e-06, + 1.609431082553906066e-06, + 1.607716685445240690e-06, + 1.605999920921100349e-06, + 1.604280792131094049e-06, + 1.602559302228153070e-06, + 1.600835454368671997e-06, + 1.599109251712144922e-06, + 1.597380697421943442e-06, + 1.595649794664312712e-06, + 1.593916546609159823e-06, + 1.592180956429751199e-06, + 1.590443027302421641e-06, + 1.588702762407291126e-06, + 1.586960164927608363e-06, + 1.585215238049813677e-06, + 1.583467984963905359e-06, + 1.581718408863205877e-06, + 1.579966512944079397e-06, + 1.578212300406704485e-06, + 1.576455774454066986e-06, + 1.574696938292754540e-06, + 1.572935795132647842e-06, + 1.571172348186632222e-06, + 1.569406600671316992e-06, + 1.567638555806382380e-06, + 1.565868216814642003e-06, + 1.564095586922386758e-06, + 1.562320669359108692e-06, + 1.560543467357564106e-06, + 1.558763984153752166e-06, + 1.556982222987002147e-06, + 1.555198187099662364e-06, + 1.553411879737545705e-06, + 1.551623304149612000e-06, + 1.549832463588055260e-06, + 1.548039361308356410e-06, + 1.546244000568985553e-06, + 1.544446384631857040e-06, + 1.542646516761988326e-06, + 1.540844400227633380e-06, + 1.539040038300193957e-06, + 1.537233434254355124e-06, + 1.535424591367753858e-06, + 1.533613512921418653e-06, + 1.531800202199470525e-06, + 1.529984662489203048e-06, + 1.528166897081123229e-06, + 1.526346909268677067e-06, + 1.524524702348672648e-06, + 1.522700279620986220e-06, + 1.520873644388617257e-06, + 1.519044799957703063e-06, + 1.517213749637567058e-06, + 1.515380496740416811e-06, + 1.513545044581816468e-06, + 1.511707396480337355e-06, + 1.509867555757649033e-06, + 1.508025525738524802e-06, + 1.506181309750893796e-06, + 1.504334911125524405e-06, + 1.502486333196499033e-06, + 1.500635579300888840e-06, + 1.498782652778830823e-06, + 1.496927556973587743e-06, + 1.495070295231241071e-06, + 1.493210870901074067e-06, + 1.491349287335635936e-06, + 1.489485547890050864e-06, + 1.487619655922765311e-06, + 1.485751614795268492e-06, + 1.483881427871805232e-06, + 1.482009098519876984e-06, + 1.480134630109907680e-06, + 1.478258026015312545e-06, + 1.476379289612500434e-06, + 1.474498424280946669e-06, + 1.472615433402786471e-06, + 1.470730320363680410e-06, + 1.468843088551701828e-06, + 1.466953741358196583e-06, + 1.465062282177477686e-06, + 1.463168714406555525e-06, + 1.461273041445548040e-06, + 1.459375266697745100e-06, + 1.457475393568901648e-06, + 1.455573425467999613e-06, + 1.453669365806944670e-06, + 1.451763218000239285e-06, + 1.449854985465853463e-06, + 1.447944671624086766e-06, + 1.446032279898465523e-06, + 1.444117813715403390e-06, + 1.442201276503947023e-06, + 1.440282671696189645e-06, + 1.438362002727336054e-06, + 1.436439273034956388e-06, + 1.434514486059822992e-06, + 1.432587645245554242e-06, + 1.430658754038277850e-06, + 1.428727815887465189e-06, + 1.426794834245172355e-06, + 1.424859812566118938e-06, + 1.422922754308094811e-06, + 1.420983662931613481e-06, + 1.419042541900013732e-06, + 1.417099394679509182e-06, + 1.415154224738871908e-06, + 1.413207035549905308e-06, + 1.411257830587206506e-06, + 1.409306613327814410e-06, + 1.407353387252042346e-06, + 1.405398155842713823e-06, + 1.403440922585256973e-06, + 1.401481690968111982e-06, + 1.399520464482364740e-06, + 1.397557246621855476e-06, + 1.395592040883242289e-06, + 1.393624850765667623e-06, + 1.391655679771241503e-06, + 1.389684531404715001e-06, + 1.387711409173543769e-06, + 1.385736316587903066e-06, + 1.383759257160741339e-06, + 1.381780234407450725e-06, + 1.379799251846365105e-06, + 1.377816312998412400e-06, + 1.375831421387203084e-06, + 1.373844580539003291e-06, + 1.371855793982843870e-06, + 1.369865065250146844e-06, + 1.367872397875248242e-06, + 1.365877795395030273e-06, + 1.363881261349028690e-06, + 1.361882799279485726e-06, + 1.359882412731016154e-06, + 1.357880105251114872e-06, + 1.355875880389806441e-06, + 1.353869741699716235e-06, + 1.351861692736072352e-06, + 1.349851737056785229e-06, + 1.347839878222101209e-06, + 1.345826119795099959e-06, + 1.343810465341349308e-06, + 1.341792918429001803e-06, + 1.339773482628761468e-06, + 1.337752161513979303e-06, + 1.335728958660295418e-06, + 1.333703877646168844e-06, + 1.331676922052495531e-06, + 1.329648095462704264e-06, + 1.327617401462853022e-06, + 1.325584843641247809e-06, + 1.323550425588887556e-06, + 1.321514150899530407e-06, + 1.319476023168927149e-06, + 1.317436045995665071e-06, + 1.315394222980823433e-06, + 1.313350557727697758e-06, + 1.311305053842335999e-06, + 1.309257714933152301e-06, + 1.307208544611036257e-06, + 1.305157546489420045e-06, + 1.303104724183920763e-06, + 1.301050081312782794e-06, + 1.298993621496945144e-06, + 1.296935348359263444e-06, + 1.294875265525364603e-06, + 1.292813376623299741e-06, + 1.290749685283263815e-06, + 1.288684195138039682e-06, + 1.286616909823073906e-06, + 1.284547832975686897e-06, + 1.282476968235929268e-06, + 1.280404319246241743e-06, + 1.278329889651092211e-06, + 1.276253683097922491e-06, + 1.274175703235934749e-06, + 1.272095953717032130e-06, + 1.270014438195471891e-06, + 1.267931160327592664e-06, + 1.265846123772245802e-06, + 1.263759332190886227e-06, + 1.261670789246751230e-06, + 1.259580498605763619e-06, + 1.257488463936155003e-06, + 1.255394688908104743e-06, + 1.253299177194723145e-06, + 1.251201932470783454e-06, + 1.249102958413709703e-06, + 1.247002258703115082e-06, + 1.244899837020883678e-06, + 1.242795697051177247e-06, + 1.240689842480504463e-06, + 1.238582276997358176e-06, + 1.236473004292749461e-06, + 1.234362028059945893e-06, + 1.232249351994076611e-06, + 1.230134979793049870e-06, + 1.228018915156724431e-06, + 1.225901161786994261e-06, + 1.223781723388242336e-06, + 1.221660603666954602e-06, + 1.219537806331836442e-06, + 1.217413335093854183e-06, + 1.215287193665902211e-06, + 1.213159385763314366e-06, + 1.211029915103520471e-06, + 1.208898785406103507e-06, + 1.206766000392811471e-06, + 1.204631563787650551e-06, + 1.202495479316484688e-06, + 1.200357750707591022e-06, + 1.198218381691303712e-06, + 1.196077376000074921e-06, + 1.193934737368480113e-06, + 1.191790469533306780e-06, + 1.189644576233163957e-06, + 1.187497061209057358e-06, + 1.185347928203988309e-06, + 1.183197180963034634e-06, + 1.181044823233471786e-06, + 1.178890858764361187e-06, + 1.176735291307111176e-06, + 1.174578124615109818e-06, + 1.172419362443797752e-06, + 1.170259008550670307e-06, + 1.168097066695356275e-06, + 1.165933540639242043e-06, + 1.163768434146030632e-06, + 1.161601750981355665e-06, + 1.159433494912863311e-06, + 1.157263669710217799e-06, + 1.155092279145187811e-06, + 1.152919326991252397e-06, + 1.150744817024166376e-06, + 1.148568753021579167e-06, + 1.146391138763119493e-06, + 1.144211978030480721e-06, + 1.142031274607044140e-06, + 1.139849032278346106e-06, + 1.137665254832144316e-06, + 1.135479946057597039e-06, + 1.133293109746163295e-06, + 1.131104749691249644e-06, + 1.128914869687900598e-06, + 1.126723473533371636e-06, + 1.124530565026733428e-06, + 1.122336147968967763e-06, + 1.120140226163050768e-06, + 1.117942803413580850e-06, + 1.115743883527216614e-06, + 1.113543470312803065e-06, + 1.111341567580475243e-06, + 1.109138179142631457e-06, + 1.106933308813528197e-06, + 1.104726960408990021e-06, + 1.102519137746889825e-06, + 1.100309844647216181e-06, + 1.098099084931243883e-06, + 1.095886862422439419e-06, + 1.093673180946097600e-06, + 1.091458044328967380e-06, + 1.089241456400254744e-06, + 1.087023420990310867e-06, + 1.084803941931665278e-06, + 1.082583023058644489e-06, + 1.080360668206972403e-06, + 1.078136881214721747e-06, + 1.075911665921458988e-06, + 1.073685026168318454e-06, + 1.071456965798485984e-06, + 1.069227488656891461e-06, + 1.066996598589833781e-06, + 1.064764299446021018e-06, + 1.062530595075218551e-06, + 1.060295489329307226e-06, + 1.058058986061790803e-06, + 1.055821089127882566e-06, + 1.053581802384504903e-06, + 1.051341129690376118e-06, + 1.049099074905616783e-06, + 1.046855641892326772e-06, + 1.044610834514281814e-06, + 1.042364656636550209e-06, + 1.040117112126446592e-06, + 1.037868204852650164e-06, + 1.035617938685306977e-06, + 1.033366317496498555e-06, + 1.031113345159850560e-06, + 1.028859025550619829e-06, + 1.026603362545793264e-06, + 1.024346360023688033e-06, + 1.022088021864519926e-06, + 1.019828351950119392e-06, + 1.017567354163524749e-06, + 1.015305032389959022e-06, + 1.013041390515935905e-06, + 1.010776432429352296e-06, + 1.008510162019986141e-06, + 1.006242583179076095e-06, + 1.003973699799420412e-06, + 1.001703515775379487e-06, + 9.994320350029554768e-07, + 9.971592613794028748e-07, + 9.948851988038008967e-07, + 9.926098511766621492e-07, + 9.903332224000234748e-07, + 9.880553163775357372e-07, + 9.857761370140576694e-07, + 9.834956882162494313e-07, + 9.812139738921713285e-07, + 9.789309979513661860e-07, + 9.766467643048665480e-07, + 9.743612768652757813e-07, + 9.720745395463742048e-07, + 9.697865562636942253e-07, + 9.674973309341321843e-07, + 9.652068674760298850e-07, + 9.629151698092726365e-07, + 9.606222418548845835e-07, + 9.583280875356195122e-07, + 9.560327107755496154e-07, + 9.537361155001705249e-07, + 9.514383056363789708e-07, + 9.491392851125844840e-07, + 9.468390578582829153e-07, + 9.445376278045701606e-07, + 9.422349988842154295e-07, + 9.399311750307754604e-07, + 9.376261601795680790e-07, + 9.353199582672812929e-07, + 9.330125732316505717e-07, + 9.307040090120743224e-07, + 9.283942695491802085e-07, + 9.260833587849408761e-07, + 9.237712806627639509e-07, + 9.214580391270715924e-07, + 9.191436381238028901e-07, + 9.168280816005161429e-07, + 9.145113735054634756e-07, + 9.121935177885975376e-07, + 9.098745184011659856e-07, + 9.075543792953896114e-07, + 9.052331044250783464e-07, + 9.029106977452053102e-07, + 9.005871632120059131e-07, + 8.982625047829773268e-07, + 8.959367264169683758e-07, + 8.936098320736614712e-07, + 8.912818257146883642e-07, + 8.889527113022045902e-07, + 8.866224927999914583e-07, + 8.842911741730489465e-07, + 8.819587593871797022e-07, + 8.796252524099999762e-07, + 8.772906572100192157e-07, + 8.749549777567327083e-07, + 8.726182180211293782e-07, + 8.702803819753681140e-07, + 8.679414735923792396e-07, + 8.656014968469583512e-07, + 8.632604557143584428e-07, + 8.609183541713783437e-07, + 8.585751961959692712e-07, + 8.562309857668073974e-07, + 8.538857268643161110e-07, + 8.515394234697272943e-07, + 8.491920795651978949e-07, + 8.468436991342925236e-07, + 8.444942861616796869e-07, + 8.421438446327238345e-07, + 8.397923785344816823e-07, + 8.374398918548012865e-07, + 8.350863885823895951e-07, + 8.327318727073375015e-07, + 8.303763482207002466e-07, + 8.280198191145808508e-07, + 8.256622893822440403e-07, + 8.233037630176833072e-07, + 8.209442440162432670e-07, + 8.185837363742953509e-07, + 8.162222440888257245e-07, + 8.138597711584505621e-07, + 8.114963215824927812e-07, + 8.091318993610680164e-07, + 8.067665084955984505e-07, + 8.044001529883971333e-07, + 8.020328368427573432e-07, + 7.996645640630579377e-07, + 7.972953386543255422e-07, + 7.949251646228732138e-07, + 7.925540459758626305e-07, + 7.901819867213999122e-07, + 7.878089908685426083e-07, + 7.854350624273863075e-07, + 7.830602054086451438e-07, + 7.806844238242678022e-07, + 7.783077216870102957e-07, + 7.759301030105476680e-07, + 7.735515718094528179e-07, + 7.711721320992983548e-07, + 7.687917878962360468e-07, + 7.664105432176200253e-07, + 7.640284020815627280e-07, + 7.616453685070548599e-07, + 7.592614465140550727e-07, + 7.568766401230599901e-07, + 7.544909533557350354e-07, + 7.521043902344766212e-07, + 7.497169547825284049e-07, + 7.473286510239527013e-07, + 7.449394829837427141e-07, + 7.425494546873983849e-07, + 7.401585701615381621e-07, + 7.377668334334772844e-07, + 7.353742485313324957e-07, + 7.329808194840007630e-07, + 7.305865503212783906e-07, + 7.281914450734149513e-07, + 7.257955077717472904e-07, + 7.233987424482645746e-07, + 7.210011531357161827e-07, + 7.186027438677062555e-07, + 7.162035186782641445e-07, + 7.138034816023659721e-07, + 7.114026366760330995e-07, + 7.090009879353738146e-07, + 7.065985394176377822e-07, + 7.041952951607804572e-07, + 7.017912592031421653e-07, + 6.993864355840805186e-07, + 6.969808283435332410e-07, + 6.945744415221179061e-07, + 6.921672791611303493e-07, + 6.897593453026377352e-07, + 6.873506439889515975e-07, + 6.849411792637714393e-07, + 6.825309551707104721e-07, + 6.801199757544448280e-07, + 6.777082450602857020e-07, + 6.752957671337526591e-07, + 6.728825460216161204e-07, + 6.704685857709456154e-07, + 6.680538904292115319e-07, + 6.656384640447978886e-07, + 6.632223106666848039e-07, + 6.608054343440219083e-07, + 6.583878391272743806e-07, + 6.559695290667436045e-07, + 6.535505082137264392e-07, + 6.511307806200741269e-07, + 6.487103503377742822e-07, + 6.462892214199942248e-07, + 6.438673979201251029e-07, + 6.414448838918870310e-07, + 6.390216833898370981e-07, + 6.365978004690563890e-07, + 6.341732391847190563e-07, + 6.317480035931393586e-07, + 6.293220977508163141e-07, + 6.268955257145292026e-07, + 6.244682915418673851e-07, + 6.220403992907910115e-07, + 6.196118530197348876e-07, + 6.171826567877083193e-07, + 6.147528146538600553e-07, + 6.123223306781185383e-07, + 6.098912089208506561e-07, + 6.074594534424444727e-07, + 6.050270683043585955e-07, + 6.025940575681596289e-07, + 6.001604252956217003e-07, + 5.977261755492498204e-07, + 5.952913123918563675e-07, + 5.928558398866443073e-07, + 5.904197620973246142e-07, + 5.879830830876734835e-07, + 5.855458069221665485e-07, + 5.831079376655474222e-07, + 5.806694793829246831e-07, + 5.782304361397680632e-07, + 5.757908120020079747e-07, + 5.733506110355985466e-07, + 5.709098373071608407e-07, + 5.684684948835384764e-07, + 5.660265878318993810e-07, + 5.635841202197350484e-07, + 5.611410961149540303e-07, + 5.586975195854560904e-07, + 5.562533946997565738e-07, + 5.538087255265563255e-07, + 5.513635161348512759e-07, + 5.489177705940136495e-07, + 5.464714929733733193e-07, + 5.440246873428461994e-07, + 5.415773577725031047e-07, + 5.391295083326649368e-07, + 5.366811430938984487e-07, + 5.342322661271212764e-07, + 5.317828815031609532e-07, + 5.293329932933893367e-07, + 5.268826055692976105e-07, + 5.244317224025800340e-07, + 5.219803478651484484e-07, + 5.195284860292117919e-07, + 5.170761409668559707e-07, + 5.146233167506739465e-07, + 5.121700174533295139e-07, + 5.097162471476583094e-07, + 5.072620099067732670e-07, + 5.048073098036209844e-07, + 5.023521509115157777e-07, + 4.998965373042427013e-07, + 4.974404730550802841e-07, + 4.949839622378707554e-07, + 4.925270089265804348e-07, + 4.900696171948661572e-07, + 4.876117911172483076e-07, + 4.851535347676039495e-07, + 4.826948522203357304e-07, + 4.802357475499426477e-07, + 4.777762248306856827e-07, + 4.753162881371177780e-07, + 4.728559415441918351e-07, + 4.703951891262770434e-07, + 4.679340349582339248e-07, + 4.654724831149771050e-07, + 4.630105376710313632e-07, + 4.605482027016167865e-07, + 4.580854822816539301e-07, + 4.556223804858758371e-07, + 4.531589013893589698e-07, + 4.506950490671943486e-07, + 4.482308275940429661e-07, + 4.457662410453243857e-07, + 4.433012934956940413e-07, + 4.408359890202260656e-07, + 4.383703316939741038e-07, + 4.359043255915272036e-07, + 4.334379747880958701e-07, + 4.309712833585224138e-07, + 4.285042553773845003e-07, + 4.260368949195332281e-07, + 4.235692060597567504e-07, + 4.211011928723444241e-07, + 4.186328594322685262e-07, + 4.161642098136635654e-07, + 4.136952480910078926e-07, + 4.112259783385810179e-07, + 4.087564046305593779e-07, + 4.062865310410157538e-07, + 4.038163616440121269e-07, + 4.013459005131699155e-07, + 3.988751517223049322e-07, + 3.964041193451020168e-07, + 3.939328074546688093e-07, + 3.914612201246189989e-07, + 3.889893614280906658e-07, + 3.865172354378368608e-07, + 3.840448462267745355e-07, + 3.815721978675368327e-07, + 3.790992944325773239e-07, + 3.766261399942720773e-07, + 3.741527386244767125e-07, + 3.716790943951708860e-07, + 3.692052113780238700e-07, + 3.667310936444877257e-07, + 3.642567452657959266e-07, + 3.617821703130646325e-07, + 3.593073728568472024e-07, + 3.568323569677884751e-07, + 3.543571267161751003e-07, + 3.518816861720413117e-07, + 3.494060394051616217e-07, + 3.469301904851545828e-07, + 3.444541434810368245e-07, + 3.419779024618720398e-07, + 3.395014714963324336e-07, + 3.370248546527928491e-07, + 3.345480559994434766e-07, + 3.320710796038348904e-07, + 3.295939295335375173e-07, + 3.271166098556920737e-07, + 3.246391246371113683e-07, + 3.221614779442792963e-07, + 3.196836738434479307e-07, + 3.172057164001966413e-07, + 3.147276096800799165e-07, + 3.122493577481870647e-07, + 3.097709646692368704e-07, + 3.072924345076905671e-07, + 3.048137713273006863e-07, + 3.023349791917618969e-07, + 2.998560621642685886e-07, + 2.973770243076191104e-07, + 2.948978696842036473e-07, + 2.924186023561124289e-07, + 2.899392263846892367e-07, + 2.874597458310707000e-07, + 2.849801647562927040e-07, + 2.825004872202950202e-07, + 2.800207172830118617e-07, + 2.775408590039275080e-07, + 2.750609164416279076e-07, + 2.725808936550051052e-07, + 2.701007947017114070e-07, + 2.676206236393619557e-07, + 2.651403845250870205e-07, + 2.626600814151963074e-07, + 2.601797183657266190e-07, + 2.576992994325364047e-07, + 2.552188286703167963e-07, + 2.527383101336829576e-07, + 2.502577478767249978e-07, + 2.477771459525658731e-07, + 2.452965084145586153e-07, + 2.428158393147495488e-07, + 2.403351427050700136e-07, + 2.378544226367897901e-07, + 2.353736831607231141e-07, + 2.328929283266778139e-07, + 2.304121621846541793e-07, + 2.279313887833032827e-07, + 2.254506121711247101e-07, + 2.229698363960272417e-07, + 2.204890655048746309e-07, + 2.180083035445821943e-07, + 2.155275545611237186e-07, + 2.130468225996306687e-07, + 2.105661117049354015e-07, + 2.080854259212375928e-07, + 2.056047692916575077e-07, + 2.031241458594357690e-07, + 2.006435596663912019e-07, + 1.981630147541212914e-07, + 1.956825151634475342e-07, + 1.932020649345183009e-07, + 1.907216681068014236e-07, + 1.882413287191895465e-07, + 1.857610508095531829e-07, + 1.832808384153921900e-07, + 1.808006955733911823e-07, + 1.783206263195228959e-07, + 1.758406346890413065e-07, + 1.733607247165855499e-07, + 1.708809004357323178e-07, + 1.684011658796508791e-07, + 1.659215250806562962e-07, + 1.634419820703113079e-07, + 1.609625408795322870e-07, + 1.584832055381405517e-07, + 1.560039800755173602e-07, + 1.535248685201569152e-07, + 1.510458748997706025e-07, + 1.485670032412789965e-07, + 1.460882575709171836e-07, + 1.436096419137860206e-07, + 1.411311602945083990e-07, + 1.386528167367806094e-07, + 1.361746152634767383e-07, + 1.336965598966428177e-07, + 1.312186546575995550e-07, + 1.287409035664956285e-07, + 1.262633106429622326e-07, + 1.237858799056650231e-07, + 1.213086153724103413e-07, + 1.188315210602456926e-07, + 1.163546009850153722e-07, + 1.138778591620140834e-07, + 1.114012996055390816e-07, + 1.089249263289944529e-07, + 1.064487433448848136e-07, + 1.039727546649194160e-07, + 1.014969642995645183e-07, + 9.902137625869792862e-08, + 9.654599455116150766e-08, + 9.407082318486671644e-08, + 9.159586616689618106e-08, + 8.912112750305799446e-08, + 8.664661119853971856e-08, + 8.417232125746129643e-08, + 8.169826168297955497e-08, + 7.922443647728022425e-08, + 7.675084964168402844e-08, + 7.427750517619762598e-08, + 7.180440708005867524e-08, + 6.933155935183951671e-08, + 6.685896598845020193e-08, + 6.438663098623210572e-08, + 6.191455834051212211e-08, + 5.944275204515605301e-08, + 5.697121609377190452e-08, + 5.449995447816356212e-08, + 5.202897118953494067e-08, + 4.955827021804317447e-08, + 4.708785555246214011e-08, + 4.461773118072639716e-08, + 4.214790109003485708e-08, + 3.967836926585409013e-08, + 3.720913969301251327e-08, + 3.474021635525306412e-08, + 3.227160323478804545e-08, + 2.980330431350183916e-08, + 2.733532357140522005e-08, + 2.486766498783835106e-08, + 2.240033254091523882e-08, + 1.993333020773671946e-08, + 1.746666196383434836e-08, + 1.500033178437410348e-08, + 1.253434364261014986e-08, + 1.006870151108834933e-08, + 7.603409361199875887e-09, + 5.138471162735295763e-09, + 2.673890884977662266e-09, + 2.096724957065971283e-10, +-2.254180038697936174e-09, +-4.717662752712334813e-09, +-7.180771682005461600e-09, +-9.643502863884560475e-09, +-1.210585233609261675e-08, +-1.456781613835325258e-08, +-1.702939031116814942e-08, +-1.949057089626302579e-08, +-2.195135393703313524e-08, +-2.441173547745119932e-08, +-2.687171156306241988e-08, +-2.933127824088044947e-08, +-3.179043155884506532e-08, +-3.424916756626738105e-08, +-3.670748231372639949e-08, +-3.916537185307541837e-08, +-4.162283223733828864e-08, +-4.407985952115482805e-08, +-4.653644976012853961e-08, +-4.899259901127194580e-08, +-5.144830333290307185e-08, +-5.390355878454200187e-08, +-5.635836142735558436e-08, +-5.881270732350615653e-08, +-6.126659253659585278e-08, +-6.372001313156376298e-08, +-6.617296517469145146e-08, +-6.862544473350100858e-08, +-7.107744787719773803e-08, +-7.352897067601992661e-08, +-7.598000920168378805e-08, +-7.843055952727898677e-08, +-8.088061772716610718e-08, +-8.333017987742102836e-08, +-8.577924205518306599e-08, +-8.822780033910130584e-08, +-9.067585080922822168e-08, +-9.312338954702907204e-08, +-9.557041263527594174e-08, +-9.801691615849383701e-08, +-1.004628962023085761e-07, +-1.029083488538916402e-07, +-1.053532702018578548e-07, +-1.077976563362690688e-07, +-1.102415033485327620e-07, +-1.126848073318454007e-07, +-1.151275643805422606e-07, +-1.175697705905412456e-07, +-1.200114220592389670e-07, +-1.224525148854091269e-07, +-1.248930451696441126e-07, +-1.273330090138154505e-07, +-1.297724025209715927e-07, +-1.322112217963255311e-07, +-1.346494629461700658e-07, +-1.370871220783203798e-07, +-1.395241953024464465e-07, +-1.419606787294281728e-07, +-1.443965684717925214e-07, +-1.468318606436145134e-07, +-1.492665513605217284e-07, +-1.517006367395922370e-07, +-1.541341128999049605e-07, +-1.565669759613473660e-07, +-1.589992220461480403e-07, +-1.614308472776814469e-07, +-1.638618477809131478e-07, +-1.662922196827303316e-07, +-1.687219591114054298e-07, +-1.711510621964901056e-07, +-1.735795250698050380e-07, +-1.760073438643553757e-07, +-1.784345147147718561e-07, +-1.808610337577529032e-07, +-1.832868971308736204e-07, +-1.857121009741149226e-07, +-1.881366414286736673e-07, +-1.905605146374028729e-07, +-1.929837167451435707e-07, +-1.954062438981897181e-07, +-1.978280922441825845e-07, +-2.002492579330962737e-07, +-2.026697371161580748e-07, +-2.050895259462867489e-07, +-2.075086205785350770e-07, +-2.099270171690089139e-07, +-2.123447118758513611e-07, +-2.147617008591391636e-07, +-2.171779802803470684e-07, +-2.195935463026768956e-07, +-2.220083950915017817e-07, +-2.244225228131748802e-07, +-2.268359256365570651e-07, +-2.292485997318262142e-07, +-2.316605412709226427e-07, +-2.340717464279821752e-07, +-2.364822113782626902e-07, +-2.388919322991248786e-07, +-2.413009053699276346e-07, +-2.437091267714938699e-07, +-2.461165926865506524e-07, +-2.485232992996272716e-07, +-2.509292427969487767e-07, +-2.533344193668796637e-07, +-2.557388251992775885e-07, +-2.581424564859337188e-07, +-2.605453094204707721e-07, +-2.629473801983459274e-07, +-2.653486650167541049e-07, +-2.677491600750604820e-07, +-2.701488615741609835e-07, +-2.725477657169213620e-07, +-2.749458687080723252e-07, +-2.773431667542172117e-07, +-2.797396560637298706e-07, +-2.821353328471915192e-07, +-2.845301933167518677e-07, +-2.869242336865622183e-07, +-2.893174501726757797e-07, +-2.917098389929472409e-07, +-2.941013963674672991e-07, +-2.964921185179229908e-07, +-2.988820016680348672e-07, +-3.012710420434555084e-07, +-3.036592358717731766e-07, +-3.060465793824134014e-07, +-3.084330688070716020e-07, +-3.108187003790767006e-07, +-3.132034703338263913e-07, +-3.155873749086828496e-07, +-3.179704103429823142e-07, +-3.203525728779321724e-07, +-3.227338587570460705e-07, +-3.251142642255045097e-07, +-3.274937855305917566e-07, +-3.298724189215952575e-07, +-3.322501606496993890e-07, +-3.346270069684257565e-07, +-3.370029541331018396e-07, +-3.393779984007568598e-07, +-3.417521360310938571e-07, +-3.441253632854252342e-07, +-3.464976764271047958e-07, +-3.488690717218557629e-07, +-3.512395454371336973e-07, +-3.536090938425632007e-07, +-3.559777132098332527e-07, +-3.583453998127032463e-07, +-3.607121499269051553e-07, +-3.630779598306798651e-07, +-3.654428258036089554e-07, +-3.678067441281181310e-07, +-3.701697110883015395e-07, +-3.725317229703667290e-07, +-3.748927760629483143e-07, +-3.772528666565840347e-07, +-3.796119910436198859e-07, +-3.819701455191667907e-07, +-3.843273263800446672e-07, +-3.866835299252144677e-07, +-3.890387524562108543e-07, +-3.913929902759730284e-07, +-3.937462396903446146e-07, +-3.960984970069060256e-07, +-3.984497585354067136e-07, +-4.008000205880926546e-07, +-4.031492794791724000e-07, +-4.054975315247266026e-07, +-4.078447730436651645e-07, +-4.101910003566691332e-07, +-4.125362097866236951e-07, +-4.148803976590462972e-07, +-4.172235603010355323e-07, +-4.195656940422242101e-07, +-4.219067952146888300e-07, +-4.242468601524141511e-07, +-4.265858851917328547e-07, +-4.289238666712176008e-07, +-4.312608009315855251e-07, +-4.335966843161230787e-07, +-4.359315131700654181e-07, +-4.382652838409042485e-07, +-4.405979926788336807e-07, +-4.429296360356871519e-07, +-4.452602102658984905e-07, +-4.475897117263977839e-07, +-4.499181367760961179e-07, +-4.522454817763075046e-07, +-4.545717430906529565e-07, +-4.568969170849554541e-07, +-4.592210001276721973e-07, +-4.615439885892676953e-07, +-4.638658788426370185e-07, +-4.661866672630063776e-07, +-4.685063502279452472e-07, +-4.708249241172582099e-07, +-4.731423853134149319e-07, +-4.754587302009293930e-07, +-4.777739551667787453e-07, +-4.800880566003028859e-07, +-4.824010308932197042e-07, +-4.847128744395166086e-07, +-4.870235836358772190e-07, +-4.893331548810618684e-07, +-4.916415845763266725e-07, +-4.939488691253334265e-07, +-4.962550049340387492e-07, +-4.985599884111244826e-07, +-5.008638159673764980e-07, +-5.031664840161064135e-07, +-5.054679889730530200e-07, +-5.077683272563845045e-07, +-5.100674952866099358e-07, +-5.123654894869892278e-07, +-5.146623062829203116e-07, +-5.169579421023601107e-07, +-5.192523933757246970e-07, +-5.215456565358975492e-07, +-5.238377280181264270e-07, +-5.261286042604516516e-07, +-5.284182817030789841e-07, +-5.307067567888098120e-07, +-5.329940259629345295e-07, +-5.352800856731387277e-07, +-5.375649323699248062e-07, +-5.398485625060979292e-07, +-5.421309725366596176e-07, +-5.444121589197643665e-07, +-5.466921181156695361e-07, +-5.489708465871642680e-07, +-5.512483407998882876e-07, +-5.535245972217074285e-07, +-5.557996123231403258e-07, +-5.580733825772585716e-07, +-5.603459044595893069e-07, +-5.626171744485316434e-07, +-5.648871890248447388e-07, +-5.671559446715527165e-07, +-5.694234378748806376e-07, +-5.716896651232222851e-07, +-5.739546229075668569e-07, +-5.762183077217983919e-07, +-5.784807160622067142e-07, +-5.807418444273736133e-07, +-5.830016893191053213e-07, +-5.852602472414214732e-07, +-5.875175147009607302e-07, +-5.897734882073951898e-07, +-5.920281642723188676e-07, +-5.942815394106770648e-07, +-5.965336101396513557e-07, +-5.987843729790673277e-07, +-6.010338244517149720e-07, +-6.032819610828378165e-07, +-6.055287794000394346e-07, +-6.077742759342007819e-07, +-6.100184472184770977e-07, +-6.122612897886965393e-07, +-6.145028001837851815e-07, +-6.167429749446442737e-07, +-6.189818106155864908e-07, +-6.212193037432146728e-07, +-6.234554508769445504e-07, +-6.256902485688995008e-07, +-6.279236933739246300e-07, +-6.301557818494805758e-07, +-6.323865105560649068e-07, +-6.346158760565990822e-07, +-6.368438749167467245e-07, +-6.390705037053157484e-07, +-6.412957589932529325e-07, +-6.435196373545744914e-07, +-6.457421353662433611e-07, +-6.479632496076909436e-07, +-6.501829766612161649e-07, +-6.524013131118915604e-07, +-6.546182555474715838e-07, +-6.568338005587931473e-07, +-6.590479447391822754e-07, +-6.612606846848644922e-07, +-6.634720169948613776e-07, +-6.656819382710000965e-07, +-6.678904451178156721e-07, +-6.700975341429666675e-07, +-6.723032019566226750e-07, +-6.745074451718844443e-07, +-6.767102604046838271e-07, +-6.789116442737857883e-07, +-6.811115934006988327e-07, +-6.833101044100756512e-07, +-6.855071739291225274e-07, +-6.877027985880000901e-07, +-6.898969750197280216e-07, +-6.920896998600987667e-07, +-6.942809697480729912e-07, +-6.964707813251878232e-07, +-6.986591312359585587e-07, +-7.008460161277968169e-07, +-7.030314326509964585e-07, +-7.052153774586514233e-07, +-7.073978472070571180e-07, +-7.095788385551206695e-07, +-7.117583481647571247e-07, +-7.139363727007941589e-07, +-7.161129088309901816e-07, +-7.182879532259258102e-07, +-7.204615025594108693e-07, +-7.226335535078967615e-07, +-7.248041027508776438e-07, +-7.269731469707920653e-07, +-7.291406828529327587e-07, +-7.313067070858446395e-07, +-7.334712163608368096e-07, +-7.356342073718924538e-07, +-7.377956768165555773e-07, +-7.399556213949492952e-07, +-7.421140378101879131e-07, +-7.442709227686640722e-07, +-7.464262729794606958e-07, +-7.485800851547605305e-07, +-7.507323560097504308e-07, +-7.528830822625203511e-07, +-7.550322606344682268e-07, +-7.571798878498155778e-07, +-7.593259606355049114e-07, +-7.614704757220949302e-07, +-7.636134298427880328e-07, +-7.657548197338134898e-07, +-7.678946421347431755e-07, +-7.700328937878973747e-07, +-7.721695714387462756e-07, +-7.743046718358133028e-07, +-7.764381917306834813e-07, +-7.785701278779097337e-07, +-7.807004770355046889e-07, +-7.828292359638729965e-07, +-7.849564014271801327e-07, +-7.870819701922884205e-07, +-7.892059390291488886e-07, +-7.913283047111957770e-07, +-7.934490640143780605e-07, +-7.955682137180412104e-07, +-7.976857506048315851e-07, +-7.998016714602211393e-07, +-8.019159730727921324e-07, +-8.040286522346495282e-07, +-8.061397057403396510e-07, +-8.082491303882205795e-07, +-8.103569229793985906e-07, +-8.124630803182232503e-07, +-8.145675992121865111e-07, +-8.166704764719361586e-07, +-8.187717089111743789e-07, +-8.208712933470580881e-07, +-8.229692265996206203e-07, +-8.250655054920627891e-07, +-8.271601268511479230e-07, +-8.292530875062416474e-07, +-8.313443842901807288e-07, +-8.334340140391842419e-07, +-8.355219735923823023e-07, +-8.376082597921921482e-07, +-8.396928694842382026e-07, +-8.417757995172562520e-07, +-8.438570467434826585e-07, +-8.459366080180826122e-07, +-8.480144801994450049e-07, +-8.500906601495679357e-07, +-8.521651447331071754e-07, +-8.542379308182409872e-07, +-8.563090152765773767e-07, +-8.583783949826848354e-07, +-8.604460668144790115e-07, +-8.625120276531264655e-07, +-8.645762743830537761e-07, +-8.666388038918633660e-07, +-8.686996130706987852e-07, +-8.707586988136986919e-07, +-8.728160580183743123e-07, +-8.748716875855200779e-07, +-8.769255844191146287e-07, +-8.789777454267189191e-07, +-8.810281675189096582e-07, +-8.830768476096480871e-07, +-8.851237826162073456e-07, +-8.871689694591698256e-07, +-8.892124050623324088e-07, +-8.912540863531013961e-07, +-8.932940102619150429e-07, +-8.953321737226374292e-07, +-8.973685736724694157e-07, +-8.994032070518469993e-07, +-9.014360708048323251e-07, +-9.034671618785527385e-07, +-9.054964772235767623e-07, +-9.075240137938291815e-07, +-9.095497685465914666e-07, +-9.115737384424224705e-07, +-9.135959204455224406e-07, +-9.156163115232757272e-07, +-9.176349086461739150e-07, +-9.196517087886364922e-07, +-9.216667089281051606e-07, +-9.236799060454076361e-07, +-9.256912971250512518e-07, +-9.277008791546576691e-07, +-9.297086491253453131e-07, +-9.317146040316409636e-07, +-9.337187408713980166e-07, +-9.357210566461524495e-07, +-9.377215483606842701e-07, +-9.397202130229202136e-07, +-9.417170476447738934e-07, +-9.437120492412178766e-07, +-9.457052148306694013e-07, +-9.476965414352586748e-07, +-9.496860260802950305e-07, +-9.516736657946251177e-07, +-9.536594576105525385e-07, +-9.556433985638487539e-07, +-9.576254856936496399e-07, +-9.596057160429270729e-07, +-9.615840866574914423e-07, +-9.635605945872637889e-07, +-9.655352368852907047e-07, +-9.675080106080952167e-07, +-9.694789128160607048e-07, +-9.714479405725233055e-07, +-9.734150909445820993e-07, +-9.753803610030279597e-07, +-9.773437478218853086e-07, +-9.793052484786933311e-07, +-9.812648600548585528e-07, +-9.832225796346890109e-07, +-9.851784043066448980e-07, +-9.871323311623513452e-07, +-9.890843572969696346e-07, +-9.910344798095573998e-07, +-9.929826958021741590e-07, +-9.949290023806957376e-07, +-9.968733966547234235e-07, +-9.988158757371576979e-07, +-1.000756436744439852e-06, +-1.002695076796940138e-06, +-1.004631793018060340e-06, +-1.006566582535036549e-06, +-1.008499442478862928e-06, +-1.010430369983840035e-06, +-1.012359362187946032e-06, +-1.014286416232747536e-06, +-1.016211529263310892e-06, +-1.018134698428564493e-06, +-1.020055920880773194e-06, +-1.021975193775801953e-06, +-1.023892514273480475e-06, +-1.025807879536718702e-06, +-1.027721286732313187e-06, +-1.029632733030853920e-06, +-1.031542215606287257e-06, +-1.033449731636283113e-06, +-1.035355278302136492e-06, +-1.037258852788700994e-06, +-1.039160452284727208e-06, +-1.041060073982346017e-06, +-1.042957715077433250e-06, +-1.044853372769512696e-06, +-1.046747044261765418e-06, +-1.048638726760941243e-06, +-1.050528417477732299e-06, +-1.052416113626216942e-06, +-1.054301812424248329e-06, +-1.056185511093354259e-06, +-1.058067206858746487e-06, +-1.059946896949224165e-06, +-1.061824578597549079e-06, +-1.063700249039903966e-06, +-1.065573905516266273e-06, +-1.067445545270302063e-06, +-1.069315165549310746e-06, +-1.071182763604549706e-06, +-1.073048336690729470e-06, +-1.074911882066371787e-06, +-1.076773396993709471e-06, +-1.078632878738707785e-06, +-1.080490324570967883e-06, +-1.082345731764082772e-06, +-1.084199097595134601e-06, +-1.086050419345016953e-06, +-1.087899694298374287e-06, +-1.089746919743598969e-06, +-1.091592092972748480e-06, +-1.093435211281891845e-06, +-1.095276271970603325e-06, +-1.097115272342304829e-06, +-1.098952209704190525e-06, +-1.100787081367131553e-06, +-1.102619884646038341e-06, +-1.104450616859420359e-06, +-1.106279275329319840e-06, +-1.108105857382081522e-06, +-1.109930360347485283e-06, +-1.111752781559123711e-06, +-1.113573118354628256e-06, +-1.115391368075183038e-06, +-1.117207528065860692e-06, +-1.119021595675542749e-06, +-1.120833568256924083e-06, +-1.122643443166428629e-06, +-1.124451217764651325e-06, +-1.126256889415405199e-06, +-1.128060455486929450e-06, +-1.129861913350952840e-06, +-1.131661260383050720e-06, +-1.133458493962955679e-06, +-1.135253611473752013e-06, +-1.137046610302626838e-06, +-1.138837487840775427e-06, +-1.140626241482993155e-06, +-1.142412868627941891e-06, +-1.144197366678479071e-06, +-1.145979733040732735e-06, +-1.147759965125293094e-06, +-1.149538060346283545e-06, +-1.151314016121713037e-06, +-1.153087829873790318e-06, +-1.154859499028112271e-06, +-1.156629021014420733e-06, +-1.158396393266499794e-06, +-1.160161613221789762e-06, +-1.161924678321618192e-06, +-1.163685586011561353e-06, +-1.165444333740590215e-06, +-1.167200918961837428e-06, +-1.168955339132511144e-06, +-1.170707591713485050e-06, +-1.172457674169644379e-06, +-1.174205583969785540e-06, +-1.175951318586551319e-06, +-1.177694875496774350e-06, +-1.179436252180954496e-06, +-1.181175446123541334e-06, +-1.182912454813246077e-06, +-1.184647275742239856e-06, +-1.186379906406877719e-06, +-1.188110344307632989e-06, +-1.189838586948696407e-06, +-1.191564631838283177e-06, +-1.193288476488586806e-06, +-1.195010118415668776e-06, +-1.196729555139811758e-06, +-1.198446784185025793e-06, +-1.200161803079372702e-06, +-1.201874609354900232e-06, +-1.203585200547632527e-06, +-1.205293574197502152e-06, +-1.206999727848673873e-06, +-1.208703659049053798e-06, +-1.210405365350634548e-06, +-1.212104844309410975e-06, +-1.213802093485360889e-06, +-1.215497110442414146e-06, +-1.217189892748733438e-06, +-1.218880437976261128e-06, +-1.220568743701027360e-06, +-1.222254807503093098e-06, +-1.223938626966457372e-06, +-1.225620199679379365e-06, +-1.227299523233922073e-06, +-1.228976595226247920e-06, +-1.230651413256563701e-06, +-1.232323974929108510e-06, +-1.233994277852096355e-06, +-1.235662319638008598e-06, +-1.237328097903160058e-06, +-1.238991610267974936e-06, +-1.240652854356953989e-06, +-1.242311827798644676e-06, +-1.243968528225585251e-06, +-1.245622953274604400e-06, +-1.247275100586379306e-06, +-1.248924967805722999e-06, +-1.250572552581541799e-06, +-1.252217852566726467e-06, +-1.253860865418495891e-06, +-1.255501588797990933e-06, +-1.257140020370210479e-06, +-1.258776157804710028e-06, +-1.260409998774835129e-06, +-1.262041540958014663e-06, +-1.263670782036111308e-06, +-1.265297719694535536e-06, +-1.266922351623347821e-06, +-1.268544675516413509e-06, +-1.270164689071709441e-06, +-1.271782389991561339e-06, +-1.273397775982264334e-06, +-1.275010844754001649e-06, +-1.276621594021552718e-06, +-1.278230021503513496e-06, +-1.279836124922607106e-06, +-1.281439902006008674e-06, +-1.283041350484567545e-06, +-1.284640468093514765e-06, +-1.286237252572353814e-06, +-1.287831701664541063e-06, +-1.289423813117663652e-06, +-1.291013584683769407e-06, +-1.292601014118537172e-06, +-1.294186099182333908e-06, +-1.295768837639387140e-06, +-1.297349227258092218e-06, +-1.298927265811307721e-06, +-1.300502951075635479e-06, +-1.302076280832056692e-06, +-1.303647252865887042e-06, +-1.305215864966400816e-06, +-1.306782114927058554e-06, +-1.308346000545805408e-06, +-1.309907519624246349e-06, +-1.311466669968723382e-06, +-1.313023449389459190e-06, +-1.314577855700953126e-06, +-1.316129886721909853e-06, +-1.317679540275239971e-06, +-1.319226814187984217e-06, +-1.320771706291614368e-06, +-1.322314214421613323e-06, +-1.323854336417659127e-06, +-1.325392070123948531e-06, +-1.326927413388474268e-06, +-1.328460364063654178e-06, +-1.329990920006299876e-06, +-1.331519079077224571e-06, +-1.333044839141543978e-06, +-1.334568198068626973e-06, +-1.336089153732003060e-06, +-1.337607704009656289e-06, +-1.339123846783600044e-06, +-1.340637579940178591e-06, +-1.342148901369978560e-06, +-1.343657808967838049e-06, +-1.345164300632795806e-06, +-1.346668374268348090e-06, +-1.348170027782046541e-06, +-1.349669259085779821e-06, +-1.351166066095707753e-06, +-1.352660446732255186e-06, +-1.354152398920046766e-06, +-1.355641920588209759e-06, +-1.357129009669929987e-06, +-1.358613664102740455e-06, +-1.360095881828464817e-06, +-1.361575660793145161e-06, +-1.363052998947327672e-06, +-1.364527894245630860e-06, +-1.366000344647040746e-06, +-1.367470348114854538e-06, +-1.368937902616654373e-06, +-1.370403006124258610e-06, +-1.371865656614014270e-06, +-1.373325852066352555e-06, +-1.374783590466091452e-06, +-1.376238869802364579e-06, +-1.377691688068557873e-06, +-1.379142043262578095e-06, +-1.380589933386443931e-06, +-1.382035356446573129e-06, +-1.383478310453711565e-06, +-1.384918793422928373e-06, +-1.386356803373569142e-06, +-1.387792338329498806e-06, +-1.389225396318813865e-06, +-1.390655975373720198e-06, +-1.392084073531188456e-06, +-1.393509688832251662e-06, +-1.394932819322304420e-06, +-1.396353463051359997e-06, +-1.397771618073293915e-06, +-1.399187282446840066e-06, +-1.400600454234796197e-06, +-1.402011131504334765e-06, +-1.403419312327182936e-06, +-1.404824994779301982e-06, +-1.406228176940827990e-06, +-1.407628856896661817e-06, +-1.409027032735813702e-06, +-1.410422702551663301e-06, +-1.411815864442244508e-06, +-1.413206516509499848e-06, +-1.414594656860220686e-06, +-1.415980283605315392e-06, +-1.417363394860154504e-06, +-1.418743988744418901e-06, +-1.420122063382470163e-06, +-1.421497616902579354e-06, +-1.422870647437889246e-06, +-1.424241153125676343e-06, +-1.425609132107611135e-06, +-1.426974582530045660e-06, +-1.428337502543331436e-06, +-1.429697890302446263e-06, +-1.431055743966889824e-06, +-1.432411061700389135e-06, +-1.433763841671083616e-06, +-1.435114082051795722e-06, +-1.436461781019313081e-06, +-1.437806936755303711e-06, +-1.439149547445594140e-06, +-1.440489611280513935e-06, +-1.441827126454816715e-06, +-1.443162091167693705e-06, +-1.444494503622695810e-06, +-1.445824362028016309e-06, +-1.447151664596085976e-06, +-1.448476409543845611e-06, +-1.449798595092689079e-06, +-1.451118219468440439e-06, +-1.452435280901314980e-06, +-1.453749777626174601e-06, +-1.455061707882135428e-06, +-1.456371069912837161e-06, +-1.457677861966374685e-06, +-1.458982082295241739e-06, +-1.460283729156583965e-06, +-1.461582800811817322e-06, +-1.462879295526886645e-06, +-1.464173211572209523e-06, +-1.465464547222673552e-06, +-1.466753300757568144e-06, +-1.468039470460851772e-06, +-1.469323054620781598e-06, +-1.470604051530140694e-06, +-1.471882459486195266e-06, +-1.473158276790707570e-06, +-1.474431501749843798e-06, +-1.475702132674461013e-06, +-1.476970167879705649e-06, +-1.478235605685293673e-06, +-1.479498444415422280e-06, +-1.480758682398727118e-06, +-1.482016317968520725e-06, +-1.483271349462439745e-06, +-1.484523775222684211e-06, +-1.485773593595945548e-06, +-1.487020802933429654e-06, +-1.488265401590799093e-06, +-1.489507387928394802e-06, +-1.490746760310892198e-06, +-1.491983517107533899e-06, +-1.493217656692100080e-06, +-1.494449177442797932e-06, +-1.495678077742558973e-06, +-1.496904355978659788e-06, +-1.498128010542936965e-06, +-1.499349039831765917e-06, +-1.500567442246055800e-06, +-1.501783216191179000e-06, +-1.502996360077216771e-06, +-1.504206872318664465e-06, +-1.505414751334385375e-06, +-1.506619995548125511e-06, +-1.507822603387935297e-06, +-1.509022573286408003e-06, +-1.510219903680912897e-06, +-1.511414593012955942e-06, +-1.512606639729001633e-06, +-1.513796042279821839e-06, +-1.514982799120749913e-06, +-1.516166908711835700e-06, +-1.517348369517571519e-06, +-1.518527180006832241e-06, +-1.519703338653399807e-06, +-1.520876843935384287e-06, +-1.522047694335445164e-06, +-1.523215888341054974e-06, +-1.524381424443837561e-06, +-1.525544301140384619e-06, +-1.526704516931635024e-06, +-1.527862070323143985e-06, +-1.529016959824993252e-06, +-1.530169183952062807e-06, +-1.531318741223398550e-06, +-1.532465630163036677e-06, +-1.533609849299365228e-06, +-1.534751397165341771e-06, +-1.535890272298745402e-06, +-1.537026473241583812e-06, +-1.538159998540641327e-06, +-1.539290846747386787e-06, +-1.540419016417713295e-06, +-1.541544506112105511e-06, +-1.542667314395867710e-06, +-1.543787439838503970e-06, +-1.544904881014503369e-06, +-1.546019636502736685e-06, +-1.547131704886658841e-06, +-1.548241084754575715e-06, +-1.549347774699034704e-06, +-1.550451773317364706e-06, +-1.551553079211611745e-06, +-1.552651690988263263e-06, +-1.553747607258467923e-06, +-1.554840826637985425e-06, +-1.555931347747191585e-06, +-1.557019169211022011e-06, +-1.558104289659178989e-06, +-1.559186707725837561e-06, +-1.560266422049828062e-06, +-1.561343431274604782e-06, +-1.562417734048197468e-06, +-1.563489329023404243e-06, +-1.564558214857513559e-06, +-1.565624390212464718e-06, +-1.566687853754840666e-06, +-1.567748604155844915e-06, +-1.568806640091266600e-06, +-1.569861960241686100e-06, +-1.570914563292136434e-06, +-1.571964447932362239e-06, +-1.573011612856749897e-06, +-1.574056056764247694e-06, +-1.575097778358610829e-06, +-1.576136776348077213e-06, +-1.577173049445581764e-06, +-1.578206596368703260e-06, +-1.579237415839653958e-06, +-1.580265506585259273e-06, +-1.581290867337130351e-06, +-1.582313496831383922e-06, +-1.583333393808825677e-06, +-1.584350557014929516e-06, +-1.585364985199806847e-06, +-1.586376677118180748e-06, +-1.587385631529587136e-06, +-1.588391847198047606e-06, +-1.589395322892318878e-06, +-1.590396057385795811e-06, +-1.591394049456491713e-06, +-1.592389297887238661e-06, +-1.593381801465421748e-06, +-1.594371558982942867e-06, +-1.595358569236674092e-06, +-1.596342831027962581e-06, +-1.597324343162802105e-06, +-1.598303104452028921e-06, +-1.599279113710976397e-06, +-1.600252369759729543e-06, +-1.601222871423018709e-06, +-1.602190617530271256e-06, +-1.603155606915532991e-06, +-1.604117838417713808e-06, +-1.605077310880078197e-06, +-1.606034023150887932e-06, +-1.606987974082918201e-06, +-1.607939162533604990e-06, +-1.608887587365218516e-06, +-1.609833247444625629e-06, +-1.610776141643223114e-06, +-1.611716268837384710e-06, +-1.612653627907986556e-06, +-1.613588217740583805e-06, +-1.614520037225619834e-06, +-1.615449085257887538e-06, +-1.616375360737220501e-06, +-1.617298862567943914e-06, +-1.618219589659074257e-06, +-1.619137540924476007e-06, +-1.620052715282599050e-06, +-1.620965111656478052e-06, +-1.621874728974095832e-06, +-1.622781566167971285e-06, +-1.623685622175312054e-06, +-1.624586895938218880e-06, +-1.625485386403207665e-06, +-1.626381092521658608e-06, +-1.627274013249717315e-06, +-1.628164147548130053e-06, +-1.629051494382321674e-06, +-1.629936052722629398e-06, +-1.630817821543768760e-06, +-1.631696799825483068e-06, +-1.632572986552051916e-06, +-1.633446380712462073e-06, +-1.634316981300585781e-06, +-1.635184787314752582e-06, +-1.636049797758139163e-06, +-1.636912011638719170e-06, +-1.637771427969049548e-06, +-1.638628045766457937e-06, +-1.639481864052981698e-06, +-1.640332881855337411e-06, +-1.641181098205084565e-06, +-1.642026512138388607e-06, +-1.642869122696168317e-06, +-1.643708928924062992e-06, +-1.644545929872451501e-06, +-1.645380124596370123e-06, +-1.646211512155726214e-06, +-1.647040091615020587e-06, +-1.647865862043513534e-06, +-1.648688822515217415e-06, +-1.649508972108849856e-06, +-1.650326309907821047e-06, +-1.651140835000404205e-06, +-1.651952546479466007e-06, +-1.652761443442658443e-06, +-1.653567524992349994e-06, +-1.654370790235628172e-06, +-1.655171238284405826e-06, +-1.655968868255230133e-06, +-1.656763679269413465e-06, +-1.657555670453006710e-06, +-1.658344840936800963e-06, +-1.659131189856271833e-06, +-1.659914716351770030e-06, +-1.660695419568258992e-06, +-1.661473298655478789e-06, +-1.662248352767908849e-06, +-1.663020581064776436e-06, +-1.663789982710003913e-06, +-1.664556556872373498e-06, +-1.665320302725292206e-06, +-1.666081219446964015e-06, +-1.666839306220317014e-06, +-1.667594562232996209e-06, +-1.668346986677505397e-06, +-1.669096578751016586e-06, +-1.669843337655332514e-06, +-1.670587262597237319e-06, +-1.671328352788101611e-06, +-1.672066607444054842e-06, +-1.672802025786088011e-06, +-1.673534607039814374e-06, +-1.674264350435648383e-06, +-1.674991255208748085e-06, +-1.675715320599026984e-06, +-1.676436545851112108e-06, +-1.677154930214532901e-06, +-1.677870472943315917e-06, +-1.678583173296475463e-06, +-1.679293030537667587e-06, +-1.680000043935276051e-06, +-1.680704212762557810e-06, +-1.681405536297448404e-06, +-1.682104013822549466e-06, +-1.682799644625405916e-06, +-1.683492427998191070e-06, +-1.684182363237834126e-06, +-1.684869449646166904e-06, +-1.685553686529522997e-06, +-1.686235073199246830e-06, +-1.686913608971295560e-06, +-1.687589293166395773e-06, +-1.688262125110127978e-06, +-1.688932104132769905e-06, +-1.689599229569243990e-06, +-1.690263500759461480e-06, +-1.690924917047934705e-06, +-1.691583477783941192e-06, +-1.692239182321678882e-06, +-1.692892030019872682e-06, +-1.693542020242133611e-06, +-1.694189152356894209e-06, +-1.694833425737241886e-06, +-1.695474839761079225e-06, +-1.696113393811058755e-06, +-1.696749087274555215e-06, +-1.697381919543838135e-06, +-1.698011890015809469e-06, +-1.698638998092156695e-06, +-1.699263243179452766e-06, +-1.699884624688843129e-06, +-1.700503142036333084e-06, +-1.701118794642760465e-06, +-1.701731581933642963e-06, +-1.702341503339280617e-06, +-1.702948558294750521e-06, +-1.703552746239848589e-06, +-1.704154066619259596e-06, +-1.704752518882316413e-06, +-1.705348102483156280e-06, +-1.705940816880700055e-06, +-1.706530661538612618e-06, +-1.707117635925309009e-06, +-1.707701739514062423e-06, +-1.708282971782818928e-06, +-1.708861332214326419e-06, +-1.709436820296106669e-06, +-1.710009435520427590e-06, +-1.710579177384330970e-06, +-1.711146045389683297e-06, +-1.711710039043053363e-06, +-1.712271157855793578e-06, +-1.712829401344033195e-06, +-1.713384769028636591e-06, +-1.713937260435329056e-06, +-1.714486875094518701e-06, +-1.715033612541408477e-06, +-1.715577472315971826e-06, +-1.716118453962949079e-06, +-1.716656557031819506e-06, +-1.717191781076923285e-06, +-1.717724125657280031e-06, +-1.718253590336712243e-06, +-1.718780174683810372e-06, +-1.719303878271927946e-06, +-1.719824700679163782e-06, +-1.720342641488471893e-06, +-1.720857700287492922e-06, +-1.721369876668652191e-06, +-1.721879170229159487e-06, +-1.722385580570962265e-06, +-1.722889107300855337e-06, +-1.723389750030349795e-06, +-1.723887508375642515e-06, +-1.724382381957859050e-06, +-1.724874370402798666e-06, +-1.725363473341011638e-06, +-1.725849690407908938e-06, +-1.726333021243593892e-06, +-1.726813465492945394e-06, +-1.727291022805629135e-06, +-1.727765692836041909e-06, +-1.728237475243431467e-06, +-1.728706369691760780e-06, +-1.729172375849677759e-06, +-1.729635493390762799e-06, +-1.730095721993251166e-06, +-1.730553061340151155e-06, +-1.731007511119307619e-06, +-1.731459071023285292e-06, +-1.731907740749338929e-06, +-1.732353519999634169e-06, +-1.732796408481026674e-06, +-1.733236405905099183e-06, +-1.733673511988329653e-06, +-1.734107726451779334e-06, +-1.734539049021441750e-06, +-1.734967479427978846e-06, +-1.735393017406821364e-06, +-1.735815662698229616e-06, +-1.736235415047188661e-06, +-1.736652274203370831e-06, +-1.737066239921354892e-06, +-1.737477311960384436e-06, +-1.737885490084464860e-06, +-1.738290774062465012e-06, +-1.738693163667838309e-06, +-1.739092658678987590e-06, +-1.739489258878959977e-06, +-1.739882964055599764e-06, +-1.740273774001498862e-06, +-1.740661688514022850e-06, +-1.741046707395267986e-06, +-1.741428830452157134e-06, +-1.741808057496307835e-06, +-1.742184388344092877e-06, +-1.742557822816732827e-06, +-1.742928360740078981e-06, +-1.743296001944797807e-06, +-1.743660746266354213e-06, +-1.744022593544908847e-06, +-1.744381543625403646e-06, +-1.744737596357533672e-06, +-1.745090751595726996e-06, +-1.745441009199227918e-06, +-1.745788369031972242e-06, +-1.746132830962646990e-06, +-1.746474394864783157e-06, +-1.746813060616525734e-06, +-1.747148828100856062e-06, +-1.747481697205530417e-06, +-1.747811667822996578e-06, +-1.748138739850471756e-06, +-1.748462913189932216e-06, +-1.748784187748100572e-06, +-1.749102563436418048e-06, +-1.749418040171143366e-06, +-1.749730617873229506e-06, +-1.750040296468383419e-06, +-1.750347075887063702e-06, +-1.750650956064448828e-06, +-1.750951936940533288e-06, +-1.751250018459992916e-06, +-1.751545200572253490e-06, +-1.751837483231511704e-06, +-1.752126866396686249e-06, +-1.752413350031420140e-06, +-1.752696934104164790e-06, +-1.752977618588042148e-06, +-1.753255403460946560e-06, +-1.753530288705500722e-06, +-1.753802274309058432e-06, +-1.754071360263760282e-06, +-1.754337546566423548e-06, +-1.754600833218632815e-06, +-1.754861220226694456e-06, +-1.755118707601667756e-06, +-1.755373295359316422e-06, +-1.755624983520189473e-06, +-1.755873772109539291e-06, +-1.756119661157303831e-06, +-1.756362650698238127e-06, +-1.756602740771779397e-06, +-1.756839931422081138e-06, +-1.757074222698079834e-06, +-1.757305614653391821e-06, +-1.757534107346384659e-06, +-1.757759700840138796e-06, +-1.757982395202459220e-06, +-1.758202190505907009e-06, +-1.758419086827744907e-06, +-1.758633084249915942e-06, +-1.758844182859173227e-06, +-1.759052382746926865e-06, +-1.759257684009328011e-06, +-1.759460086747266973e-06, +-1.759659591066320689e-06, +-1.759856197076801648e-06, +-1.760049904893734172e-06, +-1.760240714636855049e-06, +-1.760428626430613750e-06, +-1.760613640404224937e-06, +-1.760795756691529346e-06, +-1.760974975431157471e-06, +-1.761151296766407382e-06, +-1.761324720845289404e-06, +-1.761495247820578422e-06, +-1.761662877849670734e-06, +-1.761827611094729105e-06, +-1.761989447722625800e-06, +-1.762148387904917602e-06, +-1.762304431817853222e-06, +-1.762457579642450376e-06, +-1.762607831564331676e-06, +-1.762755187773908435e-06, +-1.762899648466251069e-06, +-1.763041213841140559e-06, +-1.763179884103051715e-06, +-1.763315659461164619e-06, +-1.763448540129337513e-06, +-1.763578526326171391e-06, +-1.763705618274909832e-06, +-1.763829816203490037e-06, +-1.763951120344623721e-06, +-1.764069530935598695e-06, +-1.764185048218456527e-06, +-1.764297672439937069e-06, +-1.764407403851444359e-06, +-1.764514242709073089e-06, +-1.764618189273609248e-06, +-1.764719243810508088e-06, +-1.764817406589951946e-06, +-1.764912677886762990e-06, +-1.765005057980444305e-06, +-1.765094547155228597e-06, +-1.765181145699955158e-06, +-1.765264853908193538e-06, +-1.765345672078172815e-06, +-1.765423600512811453e-06, +-1.765498639519685113e-06, +-1.765570789411051011e-06, +-1.765640050503832875e-06, +-1.765706423119615658e-06, +-1.765769907584693180e-06, +-1.765830504229986815e-06, +-1.765888213391107744e-06, +-1.765943035408320114e-06, +-1.765994970626550141e-06, +-1.766044019395407709e-06, +-1.766090182069155031e-06, +-1.766133459006697543e-06, +-1.766173850571627101e-06, +-1.766211357132174552e-06, +-1.766245979061229843e-06, +-1.766277716736360030e-06, +-1.766306570539762895e-06, +-1.766332540858292573e-06, +-1.766355628083460610e-06, +-1.766375832611418597e-06, +-1.766393154842988666e-06, +-1.766407595183622830e-06, +-1.766419154043420139e-06, +-1.766427831837134721e-06, +-1.766433628984154189e-06, +-1.766436545908504505e-06, +-1.766436583038871374e-06, +-1.766433740808566994e-06, +-1.766428019655524340e-06, +-1.766419420022352430e-06, +-1.766407942356272380e-06, +-1.766393587109126714e-06, +-1.766376354737409441e-06, +-1.766356245702255250e-06, +-1.766333260469396313e-06, +-1.766307399509207177e-06, +-1.766278663296697779e-06, +-1.766247052311502643e-06, +-1.766212567037866481e-06, +-1.766175207964660288e-06, +-1.766134975585379435e-06, +-1.766091870398142822e-06, +-1.766045892905663022e-06, +-1.765997043615312134e-06, +-1.765945323039038990e-06, +-1.765890731693415949e-06, +-1.765833270099627678e-06, +-1.765772938783477503e-06, +-1.765709738275354585e-06, +-1.765643669110285379e-06, +-1.765574731827860789e-06, +-1.765502926972325743e-06, +-1.765428255092490250e-06, +-1.765350716741776205e-06, +-1.765270312478205947e-06, +-1.765187042864390620e-06, +-1.765100908467547531e-06, +-1.765011909859474528e-06, +-1.764920047616583885e-06, +-1.764825322319858467e-06, +-1.764727734554886241e-06, +-1.764627284911821532e-06, +-1.764523973985419324e-06, +-1.764417802375022978e-06, +-1.764308770684538185e-06, +-1.764196879522478075e-06, +-1.764082129501910059e-06, +-1.763964521240500516e-06, +-1.763844055360476248e-06, +-1.763720732488636765e-06, +-1.763594553256371228e-06, +-1.763465518299621383e-06, +-1.763333628258898088e-06, +-1.763198883779306294e-06, +-1.763061285510479826e-06, +-1.762920834106630510e-06, +-1.762777530226544785e-06, +-1.762631374533547492e-06, +-1.762482367695538511e-06, +-1.762330510384959722e-06, +-1.762175803278829736e-06, +-1.762018247058700698e-06, +-1.761857842410676495e-06, +-1.761694590025422710e-06, +-1.761528490598141210e-06, +-1.761359544828590900e-06, +-1.761187753421053207e-06, +-1.761013117084374218e-06, +-1.760835636531937149e-06, +-1.760655312481654941e-06, +-1.760472145655978088e-06, +-1.760286136781892733e-06, +-1.760097286590924270e-06, +-1.759905595819119767e-06, +-1.759711065207056222e-06, +-1.759513695499856238e-06, +-1.759313487447137832e-06, +-1.759110441803061659e-06, +-1.758904559326305600e-06, +-1.758695840780066035e-06, +-1.758484286932061228e-06, +-1.758269898554509730e-06, +-1.758052676424171881e-06, +-1.757832621322289462e-06, +-1.757609734034638209e-06, +-1.757384015351483770e-06, +-1.757155466067612827e-06, +-1.756924086982298164e-06, +-1.756689878899331273e-06, +-1.756452842626995037e-06, +-1.756212978978070510e-06, +-1.755970288769843688e-06, +-1.755724772824083490e-06, +-1.755476431967050651e-06, +-1.755225267029501534e-06, +-1.754971278846681351e-06, +-1.754714468258303414e-06, +-1.754454836108598051e-06, +-1.754192383246259664e-06, +-1.753927110524441649e-06, +-1.753659018800807851e-06, +-1.753388108937481321e-06, +-1.753114381801060621e-06, +-1.752837838262622152e-06, +-1.752558479197691567e-06, +-1.752276305486278288e-06, +-1.751991318012876777e-06, +-1.751703517666398137e-06, +-1.751412905340242958e-06, +-1.751119481932274634e-06, +-1.750823248344789929e-06, +-1.750524205484556038e-06, +-1.750222354262793217e-06, +-1.749917695595169069e-06, +-1.749610230401808073e-06, +-1.749299959607247116e-06, +-1.748986884140496897e-06, +-1.748671004935029231e-06, +-1.748352322928689585e-06, +-1.748030839063828581e-06, +-1.747706554287194638e-06, +-1.747379469549956417e-06, +-1.747049585807757664e-06, +-1.746716904020644793e-06, +-1.746381425153071327e-06, +-1.746043150173948937e-06, +-1.745702080056591750e-06, +-1.745358215778720365e-06, +-1.745011558322517979e-06, +-1.744662108674529794e-06, +-1.744309867825733961e-06, +-1.743954836771549833e-06, +-1.743597016511724894e-06, +-1.743236408050503735e-06, +-1.742873012396489567e-06, +-1.742506830562667727e-06, +-1.742137863566457768e-06, +-1.741766112429666029e-06, +-1.741391578178454924e-06, +-1.741014261843463440e-06, +-1.740634164459624383e-06, +-1.740251287066308378e-06, +-1.739865630707275374e-06, +-1.739477196430645423e-06, +-1.739085985288926205e-06, +-1.738691998339024469e-06, +-1.738295236642161960e-06, +-1.737895701263994005e-06, +-1.737493393274529469e-06, +-1.737088313748107460e-06, +-1.736680463763498554e-06, +-1.736269844403805897e-06, +-1.735856456756453562e-06, +-1.735440301913287349e-06, +-1.735021380970459158e-06, +-1.734599695028506616e-06, +-1.734175245192323216e-06, +-1.733748032571101779e-06, +-1.733318058278423815e-06, +-1.732885323432206372e-06, +-1.732449829154702462e-06, +-1.732011576572499996e-06, +-1.731570566816553342e-06, +-1.731126801022077444e-06, +-1.730680280328695417e-06, +-1.730231005880322079e-06, +-1.729778978825202281e-06, +-1.729324200315908579e-06, +-1.728866671509341230e-06, +-1.728406393566680336e-06, +-1.727943367653463563e-06, +-1.727477594939527901e-06, +-1.727009076599027882e-06, +-1.726537813810424139e-06, +-1.726063807756449316e-06, +-1.725587059624179857e-06, +-1.725107570604983906e-06, +-1.724625341894522371e-06, +-1.724140374692740032e-06, +-1.723652670203914662e-06, +-1.723162229636542261e-06, +-1.722669054203472365e-06, +-1.722173145121802168e-06, +-1.721674503612934336e-06, +-1.721173130902538247e-06, +-1.720669028220561645e-06, +-1.720162196801210944e-06, +-1.719652637882986379e-06, +-1.719140352708651090e-06, +-1.718625342525229429e-06, +-1.718107608584025381e-06, +-1.717587152140559038e-06, +-1.717063974454627584e-06, +-1.716538076790365013e-06, +-1.716009460416023592e-06, +-1.715478126604182656e-06, +-1.714944076631671742e-06, +-1.714407311779504301e-06, +-1.713867833333040339e-06, +-1.713325642581764698e-06, +-1.712780740819458795e-06, +-1.712233129344166105e-06, +-1.711682809458071881e-06, +-1.711129782467644190e-06, +-1.710574049683629460e-06, +-1.710015612420879263e-06, +-1.709454471998543230e-06, +-1.708890629739985403e-06, +-1.708324086972718170e-06, +-1.707754845028560444e-06, +-1.707182905243502352e-06, +-1.706608268957683850e-06, +-1.706030937515517958e-06, +-1.705450912265606492e-06, +-1.704868194560677583e-06, +-1.704282785757784529e-06, +-1.703694687218043631e-06, +-1.703103900306833459e-06, +-1.702510426393720740e-06, +-1.701914266852359343e-06, +-1.701315423060726608e-06, +-1.700713896400899938e-06, +-1.700109688259097030e-06, +-1.699502800025772020e-06, +-1.698893233095535856e-06, +-1.698280988867085574e-06, +-1.697666068743434688e-06, +-1.697048474131602969e-06, +-1.696428206442838150e-06, +-1.695805267092548381e-06, +-1.695179657500268766e-06, +-1.694551379089703082e-06, +-1.693920433288695192e-06, +-1.693286821529187751e-06, +-1.692650545247313899e-06, +-1.692011605883352576e-06, +-1.691370004881620107e-06, +-1.690725743690694662e-06, +-1.690078823763228430e-06, +-1.689429246555935542e-06, +-1.688777013529727182e-06, +-1.688122126149607394e-06, +-1.687464585884698497e-06, +-1.686804394208252944e-06, +-1.686141552597556546e-06, +-1.685476062534090045e-06, +-1.684807925503396763e-06, +-1.684137142995133429e-06, +-1.683463716503033539e-06, +-1.682787647524964958e-06, +-1.682108937562806252e-06, +-1.681427588122601059e-06, +-1.680743600714440776e-06, +-1.680056976852521522e-06, +-1.679367718055095856e-06, +-1.678675825844526779e-06, +-1.677981301747169142e-06, +-1.677284147293526142e-06, +-1.676584364018135607e-06, +-1.675881953459597734e-06, +-1.675176917160619135e-06, +-1.674469256667858254e-06, +-1.673758973532108328e-06, +-1.673046069308200611e-06, +-1.672330545555009033e-06, +-1.671612403835440249e-06, +-1.670891645716474293e-06, +-1.670168272769056164e-06, +-1.669442286568237697e-06, +-1.668713688693076771e-06, +-1.667982480726658694e-06, +-1.667248664256119709e-06, +-1.666512240872536459e-06, +-1.665773212171089880e-06, +-1.665031579750933921e-06, +-1.664287345215261816e-06, +-1.663540510171246162e-06, +-1.662791076230114090e-06, +-1.662039045006995435e-06, +-1.661284418121088756e-06, +-1.660527197195660909e-06, +-1.659767383857806070e-06, +-1.659004979738724408e-06, +-1.658239986473599685e-06, +-1.657472405701488514e-06, +-1.656702239065609400e-06, +-1.655929488212980639e-06, +-1.655154154794691157e-06, +-1.654376240465806487e-06, +-1.653595746885264584e-06, +-1.652812675716036129e-06, +-1.652027028625135113e-06, +-1.651238807283341860e-06, +-1.650448013365524049e-06, +-1.649654648550496960e-06, +-1.648858714520896625e-06, +-1.648060212963505937e-06, +-1.647259145568858027e-06, +-1.646455514031522139e-06, +-1.645649320049975729e-06, +-1.644840565326666503e-06, +-1.644029251567830103e-06, +-1.643215380483846279e-06, +-1.642398953788803088e-06, +-1.641579973200820256e-06, +-1.640758440441936729e-06, +-1.639934357237973030e-06, +-1.639107725318842125e-06, +-1.638278546418260789e-06, +-1.637446822273789637e-06, +-1.636612554626980923e-06, +-1.635775745223267162e-06, +-1.634936395811851645e-06, +-1.634094508146044717e-06, +-1.633250083982814632e-06, +-1.632403125083132088e-06, +-1.631553633211843170e-06, +-1.630701610137539120e-06, +-1.629847057632865714e-06, +-1.628989977474258776e-06, +-1.628130371441917501e-06, +-1.627268241320019381e-06, +-1.626403588896545726e-06, +-1.625536415963349842e-06, +-1.624666724316107908e-06, +-1.623794515754393302e-06, +-1.622919792081495756e-06, +-1.622042555104673144e-06, +-1.621162806634957715e-06, +-1.620280548487210734e-06, +-1.619395782480170756e-06, +-1.618508510436279990e-06, +-1.617618734181909605e-06, +-1.616726455547202187e-06, +-1.615831676366127849e-06, +-1.614934398476453109e-06, +-1.614034623719777095e-06, +-1.613132353941415716e-06, +-1.612227590990562598e-06, +-1.611320336720190193e-06, +-1.610410592987041520e-06, +-1.609498361651700681e-06, +-1.608583644578418370e-06, +-1.607666443635328507e-06, +-1.606746760694306353e-06, +-1.605824597631005997e-06, +-1.604899956324836001e-06, +-1.603972838659018268e-06, +-1.603043246520409534e-06, +-1.602111181799763308e-06, +-1.601176646391523408e-06, +-1.600239642193893425e-06, +-1.599300171108816171e-06, +-1.598358235042022393e-06, +-1.597413835902870256e-06, +-1.596466975604550536e-06, +-1.595517656063969520e-06, +-1.594565879201746887e-06, +-1.593611646942270979e-06, +-1.592654961213529813e-06, +-1.591695823947346564e-06, +-1.590734237079217984e-06, +-1.589770202548349349e-06, +-1.588803722297651072e-06, +-1.587834798273782316e-06, +-1.586863432426969104e-06, +-1.585889626711263507e-06, +-1.584913383084353059e-06, +-1.583934703507626405e-06, +-1.582953589946147044e-06, +-1.581970044368692926e-06, +-1.580984068747574973e-06, +-1.579995665059041754e-06, +-1.579004835282725946e-06, +-1.578011581402100249e-06, +-1.577015905404281934e-06, +-1.576017809279933106e-06, +-1.575017295023443026e-06, +-1.574014364632979779e-06, +-1.573009020110102762e-06, +-1.572001263460190218e-06, +-1.570991096692234254e-06, +-1.569978521818718027e-06, +-1.568963540856032055e-06, +-1.567946155823908190e-06, +-1.566926368745861131e-06, +-1.565904181648983871e-06, +-1.564879596564030913e-06, +-1.563852615525195077e-06, +-1.562823240570559608e-06, +-1.561791473741544424e-06, +-1.560757317083298083e-06, +-1.559720772644589149e-06, +-1.558681842477613070e-06, +-1.557640528638391342e-06, +-1.556596833186399237e-06, +-1.555550758184620651e-06, +-1.554502305699735506e-06, +-1.553451477801993547e-06, +-1.552398276565043236e-06, +-1.551342704066388095e-06, +-1.550284762386807546e-06, +-1.549224453610797793e-06, +-1.548161779826408762e-06, +-1.547096743125062212e-06, +-1.546029345601989850e-06, +-1.544959589355833118e-06, +-1.543887476488662882e-06, +-1.542813009106249211e-06, +-1.541736189317816165e-06, +-1.540657019236125435e-06, +-1.539575500977447335e-06, +-1.538491636661629836e-06, +-1.537405428411887862e-06, +-1.536316878355068415e-06, +-1.535225988621509970e-06, +-1.534132761345019386e-06, +-1.533037198662955134e-06, +-1.531939302716038615e-06, +-1.530839075648600863e-06, +-1.529736519608427747e-06, +-1.528631636746772254e-06, +-1.527524429218367617e-06, +-1.526414899181469667e-06, +-1.525303048797657993e-06, +-1.524188880232114191e-06, +-1.523072395653431707e-06, +-1.521953597233670256e-06, +-1.520832487148371918e-06, +-1.519709067576399989e-06, +-1.518583340700192456e-06, +-1.517455308705581579e-06, +-1.516324973781840052e-06, +-1.515192338121660680e-06, +-1.514057403921223712e-06, +-1.512920173379982120e-06, +-1.511780648700947898e-06, +-1.510638832090502113e-06, +-1.509494725758442976e-06, +-1.508348331917970379e-06, +-1.507199652785723807e-06, +-1.506048690581618855e-06, +-1.504895447529092656e-06, +-1.503739925854927701e-06, +-1.502582127789285297e-06, +-1.501422055565772478e-06, +-1.500259711421223687e-06, +-1.499095097595931167e-06, +-1.497928216333708277e-06, +-1.496759069881454541e-06, +-1.495587660489604997e-06, +-1.494413990411953171e-06, +-1.493238061905523170e-06, +-1.492059877230802620e-06, +-1.490879438651587023e-06, +-1.489696748435016389e-06, +-1.488511808851557665e-06, +-1.487324622175059572e-06, +-1.486135190682509940e-06, +-1.484943516654543919e-06, +-1.483749602374793888e-06, +-1.482553450130395553e-06, +-1.481355062211780001e-06, +-1.480154440912563375e-06, +-1.478951588529733222e-06, +-1.477746507363744207e-06, +-1.476539199718031700e-06, +-1.475329667899536099e-06, +-1.474117914218467344e-06, +-1.472903940988118791e-06, +-1.471687750525409729e-06, +-1.470469345150189123e-06, +-1.469248727185758235e-06, +-1.468025898958699941e-06, +-1.466800862798682224e-06, +-1.465573621038754848e-06, +-1.464344176015351469e-06, +-1.463112530067847070e-06, +-1.461878685539069138e-06, +-1.460642644775085060e-06, +-1.459404410124976179e-06, +-1.458163983941372060e-06, +-1.456921368579968950e-06, +-1.455676566399586105e-06, +-1.454429579762399999e-06, +-1.453180411033812392e-06, +-1.451929062582211263e-06, +-1.450675536779554621e-06, +-1.449419836000641845e-06, +-1.448161962623670189e-06, +-1.446901919030028528e-06, +-1.445639707604073526e-06, +-1.444375330733659673e-06, +-1.443108790809667480e-06, +-1.441840090226036520e-06, +-1.440569231380038806e-06, +-1.439296216672045432e-06, +-1.438021048505597723e-06, +-1.436743729287439850e-06, +-1.435464261427305374e-06, +-1.434182647338235518e-06, +-1.432898889436355554e-06, +-1.431612990140925199e-06, +-1.430324951874344756e-06, +-1.429034777062191961e-06, +-1.427742468133007682e-06, +-1.426448027518610382e-06, +-1.425151457653880124e-06, +-1.423852760976800712e-06, +-1.422551939928479806e-06, +-1.421248996953155914e-06, +-1.419943934498022416e-06, +-1.418636755013515136e-06, +-1.417327460953107992e-06, +-1.416016054773357892e-06, +-1.414702538933950258e-06, +-1.413386915897492776e-06, +-1.412069188129804236e-06, +-1.410749358099736651e-06, +-1.409427428279200670e-06, +-1.408103401143148215e-06, +-1.406777279169648077e-06, +-1.405449064839650441e-06, +-1.404118760637312359e-06, +-1.402786369049772014e-06, +-1.401451892567203146e-06, +-1.400115333682810389e-06, +-1.398776694892874378e-06, +-1.397435978696534906e-06, +-1.396093187596106659e-06, +-1.394748324096861950e-06, +-1.393401390707084929e-06, +-1.392052389938108429e-06, +-1.390701324304097974e-06, +-1.389348196322334263e-06, +-1.387993008513236462e-06, +-1.386635763399882789e-06, +-1.385276463508548161e-06, +-1.383915111368489687e-06, +-1.382551709511756721e-06, +-1.381186260473535603e-06, +-1.379818766791927525e-06, +-1.378449231007969708e-06, +-1.377077655665726879e-06, +-1.375704043312023186e-06, +-1.374328396496753699e-06, +-1.372950717772908752e-06, +-1.371571009696077806e-06, +-1.370189274825005302e-06, +-1.368805515721363244e-06, +-1.367419734949565054e-06, +-1.366031935077050817e-06, +-1.364642118674351228e-06, +-1.363250288314552058e-06, +-1.361856446573866958e-06, +-1.360460596031407703e-06, +-1.359062739268955491e-06, +-1.357662878871572928e-06, +-1.356261017426798706e-06, +-1.354857157525284366e-06, +-1.353451301760548654e-06, +-1.352043452728816163e-06, +-1.350633613029268901e-06, +-1.349221785264151325e-06, +-1.347807972038191179e-06, +-1.346392175959201103e-06, +-1.344974399637842519e-06, +-1.343554645687386135e-06, +-1.342132916724333030e-06, +-1.340709215367623950e-06, +-1.339283544239238372e-06, +-1.337855905963941452e-06, +-1.336426303169294827e-06, +-1.334994738485684563e-06, +-1.333561214546355675e-06, +-1.332125733987176650e-06, +-1.330688299446993510e-06, +-1.329248913567446002e-06, +-1.327807578992725134e-06, +-1.326364298370159751e-06, +-1.324919074349674428e-06, +-1.323471909583855120e-06, +-1.322022806728231219e-06, +-1.320571768441034154e-06, +-1.319118797383264303e-06, +-1.317663896218722336e-06, +-1.316207067613790255e-06, +-1.314748314237777199e-06, +-1.313287638762658974e-06, +-1.311825043863152387e-06, +-1.310360532216716304e-06, +-1.308894106503573033e-06, +-1.307425769406504194e-06, +-1.305955523611185505e-06, +-1.304483371805938817e-06, +-1.303009316681791192e-06, +-1.301533360932476384e-06, +-1.300055507254486512e-06, +-1.298575758346818371e-06, +-1.297094116911335326e-06, +-1.295610585652538827e-06, +-1.294125167277591702e-06, +-1.292637864496398200e-06, +-1.291148680021345647e-06, +-1.289657616567664861e-06, +-1.288164676853189166e-06, +-1.286669863598403948e-06, +-1.285173179526433310e-06, +-1.283674627363126474e-06, +-1.282174209836775505e-06, +-1.280671929678484404e-06, +-1.279167789621936389e-06, +-1.277661792403437726e-06, +-1.276153940761900578e-06, +-1.274644237438936392e-06, +-1.273132685178560704e-06, +-1.271619286727588707e-06, +-1.270104044835377115e-06, +-1.268586962253865036e-06, +-1.267068041737656129e-06, +-1.265547286043746077e-06, +-1.264024697931834078e-06, +-1.262500280164396329e-06, +-1.260974035506086748e-06, +-1.259445966724379449e-06, +-1.257916076589314634e-06, +-1.256384367873300382e-06, +-1.254850843351475823e-06, +-1.253315505801469724e-06, +-1.251778358003451106e-06, +-1.250239402740194040e-06, +-1.248698642796797913e-06, +-1.247156080961030479e-06, +-1.245611720023369150e-06, +-1.244065562776412307e-06, +-1.242517612015541683e-06, +-1.240967870538635004e-06, +-1.239416341145889810e-06, +-1.237863026640115676e-06, +-1.236307929826813625e-06, +-1.234751053513589134e-06, +-1.233192400510776608e-06, +-1.231631973631196070e-06, +-1.230069775689872370e-06, +-1.228505809504757069e-06, +-1.226940077895813643e-06, +-1.225372583685710142e-06, +-1.223803329699573133e-06, +-1.222232318764782499e-06, +-1.220659553711281670e-06, +-1.219085037371660841e-06, +-1.217508772580536312e-06, +-1.215930762175217945e-06, +-1.214351008995442988e-06, +-1.212769515883092530e-06, +-1.211186285682929266e-06, +-1.209601321241650724e-06, +-1.208014625408631694e-06, +-1.206426201035570799e-06, +-1.204836050976559742e-06, +-1.203244178088076744e-06, +-1.201650585229053877e-06, +-1.200055275260585054e-06, +-1.198458251046351874e-06, +-1.196859515452394288e-06, +-1.195259071346843358e-06, +-1.193656921600599098e-06, +-1.192053069086701974e-06, +-1.190447516680411043e-06, +-1.188840267259522437e-06, +-1.187231323704105090e-06, +-1.185620688896555793e-06, +-1.184008365721670560e-06, +-1.182394357066351761e-06, +-1.180778665820038421e-06, +-1.179161294874465235e-06, +-1.177542247123407188e-06, +-1.175921525463353370e-06, +-1.174299132792872338e-06, +-1.172675072012694066e-06, +-1.171049346026035203e-06, +-1.169421957738327601e-06, +-1.167792910057279939e-06, +-1.166162205892866283e-06, +-1.164529848157398300e-06, +-1.162895839765239804e-06, +-1.161260183633210371e-06, +-1.159622882680321910e-06, +-1.157983939827817414e-06, +-1.156343357999262018e-06, +-1.154701140120241875e-06, +-1.153057289118777725e-06, +-1.151411807925043678e-06, +-1.149764699471440267e-06, +-1.148115966692575183e-06, +-1.146465612525336120e-06, +-1.144813639908610400e-06, +-1.143160051783683512e-06, +-1.141504851093971654e-06, +-1.139848040785082509e-06, +-1.138189623804862259e-06, +-1.136529603103137659e-06, +-1.134867981632116474e-06, +-1.133204762346096946e-06, +-1.131539948201551440e-06, +-1.129873542157102724e-06, +-1.128205547173591947e-06, +-1.126535966213799963e-06, +-1.124864802242789955e-06, +-1.123192058227980706e-06, +-1.121517737138479349e-06, +-1.119841841945827597e-06, +-1.118164375623668867e-06, +-1.116485341147555999e-06, +-1.114804741495363551e-06, +-1.113122579647004041e-06, +-1.111438858584490207e-06, +-1.109753581291996623e-06, +-1.108066750755571294e-06, +-1.106378369963504316e-06, +-1.104688441906364518e-06, +-1.102996969576375196e-06, +-1.101303955968107620e-06, +-1.099609404078202998e-06, +-1.097913316905139117e-06, +-1.096215697449666776e-06, +-1.094516548714520103e-06, +-1.092815873704465893e-06, +-1.091113675426310171e-06, +-1.089409956888967231e-06, +-1.087704721103088203e-06, +-1.085997971081851343e-06, +-1.084289709839945379e-06, +-1.082579940394365720e-06, +-1.080868665764102537e-06, +-1.079155888969867808e-06, +-1.077441613034802803e-06, +-1.075725840983819513e-06, +-1.074008575843665024e-06, +-1.072289820643294217e-06, +-1.070569578413629417e-06, +-1.068847852187276214e-06, +-1.067124644999316925e-06, +-1.065399959886272339e-06, +-1.063673799886917623e-06, +-1.061946168041899463e-06, +-1.060217067393810395e-06, +-1.058486500987180961e-06, +-1.056754471868544516e-06, +-1.055020983086144785e-06, +-1.053286037690370393e-06, +-1.051549638733521506e-06, +-1.049811789269515276e-06, +-1.048072492354621912e-06, +-1.046331751046788960e-06, +-1.044589568405713092e-06, +-1.042845947493203687e-06, +-1.041100891372879601e-06, +-1.039354403110236081e-06, +-1.037606485772729463e-06, +-1.035857142429449378e-06, +-1.034106376151577204e-06, +-1.032354190012154402e-06, +-1.030600587085778010e-06, +-1.028845570449337560e-06, +-1.027089143181349736e-06, +-1.025331308362005170e-06, +-1.023572069073559558e-06, +-1.021811428400023228e-06, +-1.020049389427221276e-06, +-1.018285955242802880e-06, +-1.016521128936294459e-06, +-1.014754913598811039e-06, +-1.012987312323485281e-06, +-1.011218328205173556e-06, +-1.009447964340521382e-06, +-1.007676223828036901e-06, +-1.005903109767774727e-06, +-1.004128625261793129e-06, +-1.002352773413846771e-06, +-1.000575557329445372e-06, +-9.987969801158606874e-07, +-9.970170448821913138e-07, +-9.952357547390530944e-07, +-9.934531127990375770e-07, +-9.916691221763922587e-07, +-9.898837859870932193e-07, +-9.880971073489183892e-07, +-9.863090893811421943e-07, +-9.845197352049796131e-07, +-9.827290479432772213e-07, +-9.809370307205896364e-07, +-9.791436866631560128e-07, +-9.773490188990095207e-07, +-9.755530305576205333e-07, +-9.737557247703847299e-07, +-9.719571046702904233e-07, +-9.701571733919969106e-07, +-9.683559340718380732e-07, +-9.665533898478742571e-07, +-9.647495438596051294e-07, +-9.629443992483997586e-07, +-9.611379591571974007e-07, +-9.593302267305775909e-07, +-9.575212051148317182e-07, +-9.557108974576491991e-07, +-9.538993069084905963e-07, +-9.520864366186801568e-07, +-9.502722897406760926e-07, +-9.484568694288581102e-07, +-9.466401788392115729e-07, +-9.448222211290784732e-07, +-9.430029994576299712e-07, +-9.411825169855458984e-07, +-9.393607768750740503e-07, +-9.375377822900553856e-07, +-9.357135363959674364e-07, +-9.338880423595385907e-07, +-9.320613033496039134e-07, +-9.302333225360056974e-07, +-9.284041030904449434e-07, +-9.265736481861642524e-07, +-9.247419609976327288e-07, +-9.229090447013215453e-07, +-9.210749024749868237e-07, +-9.192395374977484088e-07, +-9.174029529504854327e-07, +-9.155651520155770172e-07, +-9.137261378765952239e-07, +-9.118859137191623578e-07, +-9.100444827298448480e-07, +-9.082018480970052569e-07, +-9.063580130104966072e-07, +-9.045129806613283335e-07, +-9.026667542424537049e-07, +-9.008193369480599060e-07, +-8.989707319736307170e-07, +-8.971209425163501248e-07, +-8.952699717748472606e-07, +-8.934178229488773858e-07, +-8.915644992401099506e-07, +-8.897100038514128505e-07, +-8.878543399869218839e-07, +-8.859975108524317629e-07, +-8.841395196550762530e-07, +-8.822803696034059941e-07, +-8.804200639074452514e-07, +-8.785586057783894193e-07, +-8.766959984290649599e-07, +-8.748322450736888458e-07, +-8.729673489275410759e-07, +-8.711013132077591924e-07, +-8.692341411326219026e-07, +-8.673658359216035009e-07, +-8.654964007957913499e-07, +-8.636258389775401855e-07, +-8.617541536905669840e-07, +-8.598813481600072904e-07, +-8.580074256120921809e-07, +-8.561323892746406007e-07, +-8.542562423767130337e-07, +-8.523789881486938761e-07, +-8.505006298222864606e-07, +-8.486211706305929944e-07, +-8.467406138077683353e-07, +-8.448589625895286343e-07, +-8.429762202127916647e-07, +-8.410923899157704188e-07, +-8.392074749379710967e-07, +-8.373214785202505983e-07, +-8.354344039045003685e-07, +-8.335462543341249705e-07, +-8.316570330537148137e-07, +-8.297667433091061871e-07, +-8.278753883474879854e-07, +-8.259829714170376966e-07, +-8.240894957674235869e-07, +-8.221949646494683223e-07, +-8.202993813152230842e-07, +-8.184027490179675696e-07, +-8.165050710122775416e-07, +-8.146063505537060277e-07, +-8.127065908992520465e-07, +-8.108057953070393703e-07, +-8.089039670363902174e-07, +-8.070011093478119108e-07, +-8.050972255030924877e-07, +-8.031923187649432508e-07, +-8.012863923974995772e-07, +-7.993794496659930104e-07, +-7.974714938368110822e-07, +-7.955625281775851922e-07, +-7.936525559568522182e-07, +-7.917415804444605627e-07, +-7.898296049116557033e-07, +-7.879166326303098158e-07, +-7.860026668737774899e-07, +-7.840877109165197516e-07, +-7.821717680338812945e-07, +-7.802548415025648176e-07, +-7.783369346003017413e-07, +-7.764180506059244172e-07, +-7.744981927994494548e-07, +-7.725773644617362615e-07, +-7.706555688748960533e-07, +-7.687328093223753937e-07, +-7.668090890881902642e-07, +-7.648844114577647327e-07, +-7.629587797175888580e-07, +-7.610321971548749003e-07, +-7.591046670583899548e-07, +-7.571761927177056921e-07, +-7.552467774232635795e-07, +-7.533164244667929983e-07, +-7.513851371410534274e-07, +-7.494529187395041011e-07, +-7.475197725571991106e-07, +-7.455857018896310985e-07, +-7.436507100336337724e-07, +-7.417148002870447855e-07, +-7.397779759483653357e-07, +-7.378402403175905750e-07, +-7.359015966954555389e-07, +-7.339620483835062968e-07, +-7.320215986845160571e-07, +-7.300802509022322220e-07, +-7.281380083410286805e-07, +-7.261948743068288624e-07, +-7.242508521059203158e-07, +-7.223059450458755378e-07, +-7.203601564351271875e-07, +-7.184134895830468600e-07, +-7.164659477999294163e-07, +-7.145175343970914509e-07, +-7.125682526865149026e-07, +-7.106181059813412985e-07, +-7.086670975956353255e-07, +-7.067152308440135126e-07, +-7.047625090425092631e-07, +-7.028089355077919963e-07, +-7.008545135572435919e-07, +-6.988992465093922830e-07, +-6.969431376835493845e-07, +-6.949861903999023611e-07, +-6.930284079795838603e-07, +-6.910697937443342758e-07, +-6.891103510170011794e-07, +-6.871500831211961662e-07, +-6.851889933813796647e-07, +-6.832270851228378542e-07, +-6.812643616717854742e-07, +-6.793008263549990586e-07, +-6.773364825003347908e-07, +-6.753713334363801611e-07, +-6.734053824925302001e-07, +-6.714386329989849370e-07, +-6.694710882868293390e-07, +-6.675027516876806273e-07, +-6.655336265342035915e-07, +-6.635637161597591761e-07, +-6.615930238984809255e-07, +-6.596215530853619110e-07, +-6.576493070559015178e-07, +-6.556762891466172645e-07, +-6.537025026946946612e-07, +-6.517279510380651365e-07, +-6.497526375154040255e-07, +-6.477765654662081795e-07, +-6.457997382304547173e-07, +-6.438221591490934695e-07, +-6.418438315637189642e-07, +-6.398647588166368141e-07, +-6.378849442508600101e-07, +-6.359043912101940482e-07, +-6.339231030388796935e-07, +-6.319410830821167644e-07, +-6.299583346856960962e-07, +-6.279748611960964210e-07, +-6.259906659605595417e-07, +-6.240057523267322488e-07, +-6.220201236431047658e-07, +-6.200337832590819003e-07, +-6.180467345242037730e-07, +-6.160589807890068274e-07, +-6.140705254046655345e-07, +-6.120813717226499798e-07, +-6.100915230956637404e-07, +-6.081009828764313576e-07, +-6.061097544186408727e-07, +-6.041178410766020491e-07, +-6.021252462049640987e-07, +-6.001319731591595271e-07, +-5.981380252954780372e-07, +-5.961434059702776241e-07, +-5.941481185408522541e-07, +-5.921521663650786523e-07, +-5.901555528010559957e-07, +-5.881582812079810044e-07, +-5.861603549453478128e-07, +-5.841617773730410376e-07, +-5.821625518517542119e-07, +-5.801626817427347225e-07, +-5.781621704074150329e-07, +-5.761610212083822184e-07, +-5.741592375081360039e-07, +-5.721568226700572405e-07, +-5.701537800580416694e-07, +-5.681501130361532736e-07, +-5.661458249694850754e-07, +-5.641409192233738308e-07, +-5.621353991634764743e-07, +-5.601292681562028465e-07, +-5.581225295684548088e-07, +-5.561151867672575713e-07, +-5.541072431207266874e-07, +-5.520987019968383738e-07, +-5.500895667643767045e-07, +-5.480798407925000366e-07, +-5.460695274508168189e-07, +-5.440586301093845339e-07, +-5.420471521387905888e-07, +-5.400350969097901036e-07, +-5.380224677938408119e-07, +-5.360092681628172935e-07, +-5.339955013886629496e-07, +-5.319811708442643527e-07, +-5.299662799026536588e-07, +-5.279508319370843116e-07, +-5.259348303214745696e-07, +-5.239182784300461408e-07, +-5.219011796374053921e-07, +-5.198835373186260410e-07, +-5.178653548488919189e-07, +-5.158466356040216030e-07, +-5.138273829601088499e-07, +-5.118076002936048643e-07, +-5.097872909813115225e-07, +-5.077664584004679817e-07, +-5.057451059283896318e-07, +-5.037232369429895505e-07, +-5.017008548224258197e-07, +-4.996779629451774410e-07, +-4.976545646900442298e-07, +-4.956306634362264360e-07, +-4.936062625629707907e-07, +-4.915813654500862431e-07, +-4.895559754775922300e-07, +-4.875300960257973442e-07, +-4.855037304753863668e-07, +-4.834768822070559376e-07, +-4.814495546020454325e-07, +-4.794217510417711517e-07, +-4.773934749079138813e-07, +-4.753647295824135464e-07, +-4.733355184475490443e-07, +-4.713058448855773023e-07, +-4.692757122792664851e-07, +-4.672451240115271647e-07, +-4.652140834655016296e-07, +-4.631825940246472116e-07, +-4.611506590723682501e-07, +-4.591182819925533754e-07, +-4.570854661692072615e-07, +-4.550522149865352761e-07, +-4.530185318289433751e-07, +-4.509844200811098353e-07, +-4.489498831276395064e-07, +-4.469149243534896568e-07, +-4.448795471440603413e-07, +-4.428437548843827319e-07, +-4.408075509600128432e-07, +-4.387709387566599502e-07, +-4.367339216598276574e-07, +-4.346965030557920635e-07, +-4.326586863303468818e-07, +-4.306204748697748815e-07, +-4.285818720604893274e-07, +-4.265428812887599127e-07, +-4.245035059411526858e-07, +-4.224637494046160250e-07, +-4.204236150656653685e-07, +-4.183831063112822877e-07, +-4.163422265285397275e-07, +-4.143009791042433937e-07, +-4.122593674259116119e-07, +-4.102173948805158418e-07, +-4.081750648554587358e-07, +-4.061323807381227764e-07, +-4.040893459160411122e-07, +-4.020459637764486301e-07, +-4.000022377072585318e-07, +-3.979581710957996189e-07, +-3.959137673298049927e-07, +-3.938690297970381947e-07, +-3.918239618849378232e-07, +-3.897785669814983950e-07, +-3.877328484744728108e-07, +-3.856868097514401175e-07, +-3.836404542002586184e-07, +-3.815937852087899520e-07, +-3.795468061645294150e-07, +-3.774995204555938145e-07, +-3.754519314694560008e-07, +-3.734040425939295432e-07, +-3.713558572168003767e-07, +-3.693073787254628422e-07, +-3.672586105078163239e-07, +-3.652095559514457454e-07, +-3.631602184437093428e-07, +-3.611106013721809221e-07, +-3.590607081242846823e-07, +-3.570105420873835181e-07, +-3.549601066487667384e-07, +-3.529094051957407517e-07, +-3.508584411152578005e-07, +-3.488072177944550985e-07, +-3.467557386202882234e-07, +-3.447040069796124328e-07, +-3.426520262592755196e-07, +-3.405997998457393473e-07, +-3.385473311256254982e-07, +-3.364946234853464961e-07, +-3.344416803111860630e-07, +-3.323885049892995953e-07, +-3.303351009057963792e-07, +-3.282814714463715545e-07, +-3.262276199968451986e-07, +-3.241735499427938668e-07, +-3.221192646696351897e-07, +-3.200647675627134241e-07, +-3.180100620069313103e-07, +-3.159551513872897391e-07, +-3.139000390885150564e-07, +-3.118447284951545665e-07, +-3.097892229915575271e-07, +-3.077335259619686929e-07, +-3.056776407901590626e-07, +-3.036215708599630036e-07, +-3.015653195549118043e-07, +-2.995088902583151481e-07, +-2.974522863532620133e-07, +-2.953955112226991297e-07, +-2.933385682490673366e-07, +-2.912814608148362725e-07, +-2.892241923021406803e-07, +-2.871667660928617222e-07, +-2.851091855687165538e-07, +-2.830514541108824001e-07, +-2.809935751005455917e-07, +-2.789355519185233647e-07, +-2.768773879453567163e-07, +-2.748190865612999764e-07, +-2.727606511464075747e-07, +-2.707020850801672231e-07, +-2.686433917420349229e-07, +-2.665845745110736517e-07, +-2.645256367660298619e-07, +-2.624665818853338506e-07, +-2.604074132471821338e-07, +-2.583481342290815310e-07, +-2.562887482088393467e-07, +-2.542292585632857798e-07, +-2.521696686692711992e-07, +-2.501099819032947201e-07, +-2.480502016412271705e-07, +-2.459903312587577962e-07, +-2.439303741314850514e-07, +-2.418703336340844421e-07, +-2.398102131412219980e-07, +-2.377500160271762050e-07, +-2.356897456654766393e-07, +-2.336294054298928786e-07, +-2.315689986931586325e-07, +-2.295085288279653909e-07, +-2.274479992065041536e-07, +-2.253874132006407121e-07, +-2.233267741814531443e-07, +-2.212660855202332977e-07, +-2.192053505871994056e-07, +-2.171445727524987358e-07, +-2.150837553858334404e-07, +-2.130229018560931551e-07, +-2.109620155322600274e-07, +-2.089010997825832302e-07, +-2.068401579746627650e-07, +-2.047791934759043982e-07, +-2.027182096532353224e-07, +-2.006572098727380267e-07, +-1.985961975006459044e-07, +-1.965351759020612422e-07, +-1.944741484419534485e-07, +-1.924131184847891381e-07, +-1.903520893941618997e-07, +-1.882910645336976945e-07, +-1.862300472662300579e-07, +-1.841690409538843792e-07, +-1.821080489585294234e-07, +-1.800470746414077331e-07, +-1.779861213632206767e-07, +-1.759251924841220950e-07, +-1.738642913638065779e-07, +-1.718034213611365586e-07, +-1.697425858346856852e-07, +-1.676817881423678990e-07, +-1.656210316415237799e-07, +-1.635603196890068635e-07, +-1.614996556408105235e-07, +-1.594390428526142287e-07, +-1.573784846794103715e-07, +-1.553179844755902954e-07, +-1.532575455949396091e-07, +-1.511971713907237904e-07, +-1.491368652153179265e-07, +-1.470766304207477564e-07, +-1.450164703583223765e-07, +-1.429563883787155289e-07, +-1.408963878320555990e-07, +-1.388364720675522852e-07, +-1.367766444340410037e-07, +-1.347169082796108020e-07, +-1.326572669516913390e-07, +-1.305977237970462146e-07, +-1.285382821618608228e-07, +-1.264789453913705570e-07, +-1.244197168304026470e-07, +-1.223605998230070902e-07, +-1.203015977125409581e-07, +-1.182427138416652332e-07, +-1.161839515524281360e-07, +-1.141253141858967315e-07, +-1.120668050826981966e-07, +-1.100084275826494024e-07, +-1.079501850248432182e-07, +-1.058920807477344462e-07, +-1.038341180887686358e-07, +-1.017763003848335516e-07, +-9.971863097234677568e-08, +-9.766111318642532408e-08, +-9.560375036179614079e-08, +-9.354654583242432987e-08, +-9.148950293123391247e-08, +-8.943262499065098676e-08, +-8.737591534223254211e-08, +-8.531937731675267127e-08, +-8.326301424419722338e-08, +-8.120682945384976465e-08, +-7.915082627382923068e-08, +-7.709500803209069591e-08, +-7.503937805513923348e-08, +-7.298393966903084348e-08, +-7.092869619900138636e-08, +-6.887365096918726057e-08, +-6.681880730307659317e-08, +-6.476416852359569016e-08, +-6.270973795228082354e-08, +-6.065551891018730941e-08, +-5.860151471751849430e-08, +-5.654772869325476800e-08, +-5.449416415615345284e-08, +-5.244082442346474806e-08, +-5.038771281193058022e-08, +-4.833483263741470783e-08, +-4.628218721462277039e-08, +-4.422977985755413410e-08, +-4.217761387958831574e-08, +-4.012569259265606162e-08, +-3.807401930814958377e-08, +-3.602259733655059337e-08, +-3.397142998705943927e-08, +-3.192052056850455668e-08, +-2.986987238851387042e-08, +-2.781948875360128493e-08, +-2.576937296961828521e-08, +-2.371952834147483608e-08, +-2.166995817276794176e-08, +-1.962066576678199508e-08, +-1.757165442520427181e-08, +-1.552292744912453881e-08, +-1.347448813866458127e-08, +-1.142633979260740746e-08, +-9.378485709305355706e-09, +-7.330929185853123089e-09, +-5.283673518173510120e-09, +-3.236722001468987757e-09, +-1.190077929851179425e-09, + 8.562554035731083786e-10, + 2.902274706615817006e-09, + 4.947976688377970834e-09, + 6.993358058707283766e-09, + 9.038415528568430817e-09, + 1.108314580995701543e-08, + 1.312754561590482126e-08, + 1.517161166039374071e-08, + 1.721534065872599035e-08, + 1.925872932698182624e-08, + 2.130177438238977341e-08, + 2.334447254324070823e-08, + 2.538682052889277853e-08, + 2.742881505968552239e-08, + 2.947045285731002812e-08, + 3.151173064426668432e-08, + 3.355264514423542261e-08, + 3.559319308198949890e-08, + 3.763337118330972144e-08, + 3.967317617535398875e-08, + 4.171260478611589000e-08, + 4.375165374479395842e-08, + 4.579031978170676951e-08, + 4.782859962829647473e-08, + 4.986649001704442247e-08, + 5.190398768184029899e-08, + 5.394108935743983541e-08, + 5.597779177983572873e-08, + 5.801409168617041068e-08, + 6.004998581474223505e-08, + 6.208547090491923248e-08, + 6.412054369750811910e-08, + 6.615520093421337331e-08, + 6.818943935800733623e-08, + 7.022325571304258355e-08, + 7.225664674456828095e-08, + 7.428960919929706854e-08, + 7.632213982495688777e-08, + 7.835423537020457082e-08, + 8.038589258544920959e-08, + 8.241710822194927147e-08, + 8.444787903217948380e-08, + 8.647820177010999731e-08, + 8.850807319066571447e-08, + 9.053749005009477526e-08, + 9.256644910588369507e-08, + 9.459494711667046440e-08, + 9.662298084261332583e-08, + 9.865054704494274655e-08, + 1.006776424858741078e-07, + 1.027042639294310870e-07, + 1.047304081405426677e-07, + 1.067560718854115727e-07, + 1.087812519317902374e-07, + 1.108059450485342785e-07, + 1.128301480055163875e-07, + 1.148538575744458877e-07, + 1.168770705279688022e-07, + 1.188997836400358094e-07, + 1.209219936862679503e-07, + 1.229436974429671079e-07, + 1.249648916883878942e-07, + 1.269855732017475606e-07, + 1.290057387635925387e-07, + 1.310253851560744668e-07, + 1.330445091625039097e-07, + 1.350631075672653904e-07, + 1.370811771566339301e-07, + 1.390987147178789138e-07, + 1.411157170396283408e-07, + 1.431321809122381311e-07, + 1.451481031267991383e-07, + 1.471634804764114840e-07, + 1.491783097551919144e-07, + 1.511925877587344808e-07, + 1.532063112840207802e-07, + 1.552194771294286642e-07, + 1.572320820946462383e-07, + 1.592441229810364569e-07, + 1.612555965911007396e-07, + 1.632664997287570363e-07, + 1.652768291997033896e-07, + 1.672865818105218003e-07, + 1.692957543694946085e-07, + 1.713043436865193931e-07, + 1.733123465726640416e-07, + 1.753197598405312119e-07, + 1.773265803041731002e-07, + 1.793328047790069493e-07, + 1.813384300821807284e-07, + 1.833434530320366967e-07, + 1.853478704484767393e-07, + 1.873516791528795962e-07, + 1.893548759681007564e-07, + 1.913574577183938163e-07, + 1.933594212297692506e-07, + 1.953607633294644353e-07, + 1.973614808463055415e-07, + 1.993615706106234417e-07, + 2.013610294542594798e-07, + 2.033598542104789150e-07, + 2.053580417143358076e-07, + 2.073555888021407388e-07, + 2.093524923118215134e-07, + 2.113487490828421895e-07, + 2.133443559561150663e-07, + 2.153393097743659934e-07, + 2.173336073816026459e-07, + 2.193272456234736931e-07, + 2.213202213471891239e-07, + 2.233125314015209622e-07, + 2.253041726367229835e-07, + 2.272951419048884541e-07, + 2.292854360594224563e-07, + 2.312750519554038093e-07, + 2.332639864494976135e-07, + 2.352522363999652820e-07, + 2.372397986665732204e-07, + 2.392266701109635356e-07, + 2.412128475961150852e-07, + 2.431983279867098184e-07, + 2.451831081490478620e-07, + 2.471671849509632130e-07, + 2.491505552621848933e-07, + 2.511332159538945332e-07, + 2.531151638986449504e-07, + 2.550963959711660494e-07, + 2.570769090474782949e-07, + 2.590567000052525955e-07, + 2.610357657240859067e-07, + 2.630141030849691886e-07, + 2.649917089706471830e-07, + 2.669685802655372040e-07, + 2.689447138556449645e-07, + 2.709201066289209119e-07, + 2.728947554748260709e-07, + 2.748686572842445877e-07, + 2.768418089502893109e-07, + 2.788142073674183361e-07, + 2.807858494317934599e-07, + 2.827567320415538773e-07, + 2.847268520963766246e-07, + 2.866962064973902879e-07, + 2.886647921479809548e-07, + 2.906326059529115651e-07, + 2.925996448186734821e-07, + 2.945659056538566991e-07, + 2.965313853681719931e-07, + 2.984960808736968039e-07, + 3.004599890839127929e-07, + 3.024231069140528625e-07, + 3.043854312813839586e-07, + 3.063469591047600493e-07, + 3.083076873045427154e-07, + 3.102676128034008025e-07, + 3.122267325254324716e-07, + 3.141850433965210582e-07, + 3.161425423446950090e-07, + 3.180992262991590347e-07, + 3.200550921915406249e-07, + 3.220101369549174955e-07, + 3.239643575242626515e-07, + 3.259177508363692130e-07, + 3.278703138298455446e-07, + 3.298220434450414576e-07, + 3.317729366243925292e-07, + 3.337229903119136294e-07, + 3.356722014534505428e-07, + 3.376205669970477928e-07, + 3.395680838920692096e-07, + 3.415147490899939292e-07, + 3.434605595443376197e-07, + 3.454055122102104357e-07, + 3.473496040446812424e-07, + 3.492928320066872481e-07, + 3.512351930569565006e-07, + 3.531766841583571292e-07, + 3.551173022753850487e-07, + 3.570570443744223048e-07, + 3.589959074240988096e-07, + 3.609338883944146568e-07, + 3.628709842575441152e-07, + 3.648071919877383781e-07, + 3.667425085609022059e-07, + 3.686769309549471391e-07, + 3.706104561497061063e-07, + 3.725430811269397246e-07, + 3.744748028702527603e-07, + 3.764056183654511538e-07, + 3.783355246000189766e-07, + 3.802645185634720146e-07, + 3.821925972472800528e-07, + 3.841197576447775133e-07, + 3.860459967515225974e-07, + 3.879713115647765191e-07, + 3.898956990838529591e-07, + 3.918191563100467021e-07, + 3.937416802466242670e-07, + 3.956632678987511145e-07, + 3.975839162738402013e-07, + 3.995036223810366137e-07, + 4.014223832315679742e-07, + 4.033401958386632326e-07, + 4.052570572174719327e-07, + 4.071729643854141434e-07, + 4.090879143616635032e-07, + 4.110019041675001689e-07, + 4.129149308262286529e-07, + 4.148269913631823762e-07, + 4.167380828056409771e-07, + 4.186482021831837351e-07, + 4.205573465272555728e-07, + 4.224655128710924111e-07, + 4.243726982504972100e-07, + 4.262788997029852596e-07, + 4.281841142681320459e-07, + 4.300883389878381604e-07, + 4.319915709058104923e-07, + 4.338938070679229587e-07, + 4.357950445221224839e-07, + 4.376952803183554665e-07, + 4.395945115089138453e-07, + 4.414927351480094649e-07, + 4.433899482916921787e-07, + 4.452861479986298070e-07, + 4.471813313292530047e-07, + 4.490754953460991033e-07, + 4.509686371140806207e-07, + 4.528607536999709001e-07, + 4.547518421727505470e-07, + 4.566418996035318310e-07, + 4.585309230655577331e-07, + 4.604189096341185129e-07, + 4.623058563869982009e-07, + 4.641917604035164985e-07, + 4.660766187657498813e-07, + 4.679604285575837702e-07, + 4.698431868650638901e-07, + 4.717248907767402722e-07, + 4.736055373828200086e-07, + 4.754851237759392173e-07, + 4.773636470510800329e-07, + 4.792411043051500016e-07, + 4.811174926372433912e-07, + 4.829928091489841333e-07, + 4.848670509435968400e-07, + 4.867402151270951913e-07, + 4.886122988073649158e-07, + 4.904832990944927570e-07, + 4.923532131011188396e-07, + 4.942220379415913299e-07, + 4.960897707327317307e-07, + 4.979564085937602360e-07, + 4.998219486458694619e-07, + 5.016863880124814154e-07, + 5.035497238196094949e-07, + 5.054119531949860460e-07, + 5.072730732688530673e-07, + 5.091330811738707307e-07, + 5.109919740447026524e-07, + 5.128497490183540716e-07, + 5.147064032340975225e-07, + 5.165619338333896142e-07, + 5.184163379602131254e-07, + 5.202696127605736554e-07, + 5.221217553827594515e-07, + 5.239727629776822337e-07, + 5.258226326980382088e-07, + 5.276713616990725172e-07, + 5.295189471384922010e-07, + 5.313653861760634390e-07, + 5.332106759739378668e-07, + 5.350548136965816374e-07, + 5.368977965106918826e-07, + 5.387396215855376441e-07, + 5.405802860924626649e-07, + 5.424197872052204965e-07, + 5.442581220999026075e-07, + 5.460952879549347832e-07, + 5.479312819510014223e-07, + 5.497661012713815974e-07, + 5.515997431014573518e-07, + 5.534322046290490193e-07, + 5.552634830443300969e-07, + 5.570935755398467269e-07, + 5.589224793104171116e-07, + 5.607501915534905492e-07, + 5.625767094686385793e-07, + 5.644020302578946425e-07, + 5.662261511256770007e-07, + 5.680490692787091160e-07, + 5.698707819263558169e-07, + 5.716912862801336072e-07, + 5.735105795540361388e-07, + 5.753286589644683543e-07, + 5.771455217302381233e-07, + 5.789611650724876320e-07, + 5.807755862150261618e-07, + 5.825887823838336217e-07, + 5.844007508074016912e-07, + 5.862114887166491168e-07, + 5.880209933449301823e-07, + 5.898292619279565701e-07, + 5.916362917041266453e-07, + 5.934420799140395761e-07, + 5.952466238008308654e-07, + 5.970499206100829881e-07, + 5.988519675897658874e-07, + 6.006527619905527062e-07, + 6.024523010654209408e-07, + 6.042505820695709134e-07, + 6.060476022611753967e-07, + 6.078433589005570390e-07, + 6.096378492505175422e-07, + 6.114310705766018301e-07, + 6.132230201465942760e-07, + 6.150136952308585743e-07, + 6.168030931022576960e-07, + 6.185912110361601355e-07, + 6.203780463103608191e-07, + 6.221635962054930802e-07, + 6.239478580041366285e-07, + 6.257308289919624200e-07, + 6.275125064568366027e-07, + 6.292928876891601765e-07, + 6.310719699821865248e-07, + 6.328497506312203330e-07, + 6.346262269343502721e-07, + 6.364013961923690597e-07, + 6.381752557083841430e-07, + 6.399478027880461854e-07, + 6.417190347398923269e-07, + 6.434889488744481173e-07, + 6.452575425053748225e-07, + 6.470248129485800396e-07, + 6.487907575225382991e-07, + 6.505553735486324192e-07, + 6.523186583503335777e-07, + 6.540806092539458543e-07, + 6.558412235885194094e-07, + 6.576004986854554491e-07, + 6.593584318787547238e-07, + 6.611150205053403534e-07, + 6.628702619042510283e-07, + 6.646241534173856577e-07, + 6.663766923894090308e-07, + 6.681278761673637701e-07, + 6.698777021009909333e-07, + 6.716261675426615096e-07, + 6.733732698472853634e-07, + 6.751190063726546006e-07, + 6.768633744789511248e-07, + 6.786063715290005349e-07, + 6.803479948885893398e-07, + 6.820882419256742525e-07, + 6.838271100110993094e-07, + 6.855645965185296963e-07, + 6.873006988240464428e-07, + 6.890354143064776119e-07, + 6.907687403473157150e-07, + 6.925006743306441254e-07, + 6.942312136434608566e-07, + 6.959603556752070831e-07, + 6.976880978180814949e-07, + 6.994144374669723234e-07, + 7.011393720194540592e-07, + 7.028628988757259361e-07, + 7.045850154389113576e-07, + 7.063057191146062162e-07, + 7.080250073111883783e-07, + 7.097428774397444158e-07, + 7.114593269140771234e-07, + 7.131743531506222979e-07, + 7.148879535687811984e-07, + 7.166001255904376315e-07, + 7.183108666402845888e-07, + 7.200201741457497076e-07, + 7.217280455369117326e-07, + 7.234344782468318113e-07, + 7.251394697110779914e-07, + 7.268430173680379872e-07, + 7.285451186588646520e-07, + 7.302457710274522613e-07, + 7.319449719203813497e-07, + 7.336427187872299956e-07, + 7.353390090801091177e-07, + 7.370338402539742888e-07, + 7.387272097665562793e-07, + 7.404191150783669865e-07, + 7.421095536526163195e-07, + 7.437985229555360830e-07, + 7.454860204559144274e-07, + 7.471720436254069212e-07, + 7.488565899384644478e-07, + 7.505396568722614188e-07, + 7.522212419070145766e-07, + 7.539013425255855240e-07, + 7.555799562134133849e-07, + 7.572570804592227123e-07, + 7.589327127542416770e-07, + 7.606068505925218222e-07, + 7.622794914711770328e-07, + 7.639506328899106794e-07, + 7.656202723513418319e-07, + 7.672884073609246850e-07, + 7.689550354268761375e-07, + 7.706201540604896178e-07, + 7.722837607757474600e-07, + 7.739458530892618243e-07, + 7.756064285209463931e-07, + 7.772654845932840059e-07, + 7.789230188316074502e-07, + 7.805790287644209109e-07, + 7.822335119226442050e-07, + 7.838864658402994075e-07, + 7.855378880544348306e-07, + 7.871877761047477760e-07, + 7.888361275338219160e-07, + 7.904829398874367783e-07, + 7.921282107137263247e-07, + 7.937719375642500238e-07, + 7.954141179931619122e-07, + 7.970547495575152085e-07, + 7.986938298175769861e-07, + 8.003313563360628788e-07, + 8.019673266788342948e-07, + 8.036017384148155138e-07, + 8.052345891156201446e-07, + 8.068658763557870248e-07, + 8.084955977130859987e-07, + 8.101237507676830613e-07, + 8.117503331032100545e-07, + 8.133753423059358455e-07, + 8.149987759651359509e-07, + 8.166206316730379030e-07, + 8.182409070248142617e-07, + 8.198595996185080756e-07, + 8.214767070553518962e-07, + 8.230922269392994740e-07, + 8.247061568772726686e-07, + 8.263184944794610873e-07, + 8.279292373585619782e-07, + 8.295383831304778678e-07, + 8.311459294142303758e-07, + 8.327518738316007552e-07, + 8.343562140074193657e-07, + 8.359589475695081817e-07, + 8.375600721485988414e-07, + 8.391595853786456261e-07, + 8.407574848963661557e-07, + 8.423537683415534155e-07, + 8.439484333570073574e-07, + 8.455414775885289711e-07, + 8.471328986848559098e-07, + 8.487226942979583157e-07, + 8.503108620826047165e-07, + 8.518973996966560512e-07, + 8.534823048009885902e-07, + 8.550655750595122522e-07, + 8.566472081390916190e-07, + 8.582272017098400670e-07, + 8.598055534446890511e-07, + 8.613822610196863665e-07, + 8.629573221139206568e-07, + 8.645307344094461334e-07, + 8.661024955915956609e-07, + 8.676726033485314055e-07, + 8.692410553715412968e-07, + 8.708078493549777236e-07, + 8.723729829962529814e-07, + 8.739364539957740505e-07, + 8.754982600572339757e-07, + 8.770583988871796675e-07, + 8.786168681953066695e-07, + 8.801736656943911844e-07, + 8.817287891002171226e-07, + 8.832822361318667413e-07, + 8.848340045113087737e-07, + 8.863840919636607985e-07, + 8.879324962171459345e-07, + 8.894792150030734650e-07, + 8.910242460557972275e-07, + 8.925675871129804173e-07, + 8.941092359152571976e-07, + 8.956491902061571020e-07, + 8.971874477327498383e-07, + 8.987240062449432042e-07, + 9.002588634957599609e-07, + 9.017920172416406475e-07, + 9.033234652416403823e-07, + 9.048532052584570544e-07, + 9.063812350576299252e-07, + 9.079075524078422304e-07, + 9.094321550811227741e-07, + 9.109550408525058451e-07, + 9.124762074999555135e-07, + 9.139956528050194337e-07, + 9.155133745521047377e-07, + 9.170293705287778843e-07, + 9.185436385260538153e-07, + 9.200561763376039797e-07, + 9.215669817607645143e-07, + 9.230760525957623737e-07, + 9.245833866460563666e-07, + 9.260889817182197359e-07, + 9.275928356222727252e-07, + 9.290949461709415307e-07, + 9.305953111806131191e-07, + 9.320939284705842270e-07, + 9.335907958633475522e-07, + 9.350859111848602632e-07, + 9.365792722638644670e-07, + 9.380708769325057546e-07, + 9.395607230262672388e-07, + 9.410488083836431287e-07, + 9.425351308463234884e-07, + 9.440196882594867817e-07, + 9.455024784710523649e-07, + 9.469834993326289521e-07, + 9.484627486987775910e-07, + 9.499402244273441230e-07, + 9.514159243794118550e-07, + 9.528898464192826079e-07, + 9.543619884144298110e-07, + 9.558323482357646831e-07, + 9.573009237572305032e-07, + 9.587677128560148982e-07, + 9.602327134128204700e-07, + 9.616959233111939454e-07, + 9.631573404381292635e-07, + 9.646169626840118834e-07, + 9.660747879422833589e-07, + 9.675308141097075190e-07, + 9.689850390863141398e-07, + 9.704374607753271587e-07, + 9.718880770834446189e-07, + 9.733368859204329402e-07, + 9.747838851993969112e-07, + 9.762290728367199730e-07, + 9.776724467520678197e-07, + 9.791140048683138591e-07, + 9.805537451118278390e-07, + 9.819916654120555077e-07, + 9.834277637018193101e-07, + 9.848620379172169558e-07, + 9.862944859976500064e-07, + 9.877251058857548424e-07, + 9.891538955276718079e-07, + 9.905808528726401168e-07, + 9.920059758732849974e-07, + 9.934292624855279067e-07, + 9.948507106685564607e-07, + 9.962703183850573684e-07, + 9.976880836008503021e-07, + 9.991040042851341720e-07, + 1.000518078410444139e-06, + 1.001930303952630864e-06, + 1.003340678890816670e-06, + 1.004749201207662787e-06, + 1.006155868888960017e-06, + 1.007560679923902542e-06, + 1.008963632305033501e-06, + 1.010364724028171085e-06, + 1.011763953092682763e-06, + 1.013161317501078077e-06, + 1.014556815259304460e-06, + 1.015950444376648563e-06, + 1.017342202865766110e-06, + 1.018732088742600159e-06, + 1.020120100026658718e-06, + 1.021506234740687369e-06, + 1.022890490910604676e-06, + 1.024272866566085585e-06, + 1.025653359739934404e-06, + 1.027031968468321338e-06, + 1.028408690791059681e-06, + 1.029783524750896215e-06, + 1.031156468394406521e-06, + 1.032527519771304226e-06, + 1.033896676934692995e-06, + 1.035263937941264312e-06, + 1.036629300850977726e-06, + 1.037992763726993301e-06, + 1.039354324636264112e-06, + 1.040713981648888907e-06, + 1.042071732838372984e-06, + 1.043427576281890356e-06, + 1.044781510059573085e-06, + 1.046133532255422480e-06, + 1.047483640956601823e-06, + 1.048831834253751468e-06, + 1.050178110240875759e-06, + 1.051522467015662153e-06, + 1.052864902678773942e-06, + 1.054205415334747903e-06, + 1.055544003091312008e-06, + 1.056880664059620053e-06, + 1.058215396354517207e-06, + 1.059548198093917223e-06, + 1.060879067399357676e-06, + 1.062208002395955277e-06, + 1.063535001212077440e-06, + 1.064860061979555517e-06, + 1.066183182833915620e-06, + 1.067504361913700145e-06, + 1.068823597361355462e-06, + 1.070140887322534384e-06, + 1.071456229946351762e-06, + 1.072769623385641342e-06, + 1.074081065796324306e-06, + 1.075390555337994996e-06, + 1.076698090173829219e-06, + 1.078003668470299860e-06, + 1.079307288397417857e-06, + 1.080608948128678210e-06, + 1.081908645841059340e-06, + 1.083206379714950881e-06, + 1.084502147934439557e-06, + 1.085795948686895400e-06, + 1.087087780163257205e-06, + 1.088377640557951426e-06, + 1.089665528068842834e-06, + 1.090951440897485665e-06, + 1.092235377248744146e-06, + 1.093517335331052962e-06, + 1.094797313356356267e-06, + 1.096075309540106835e-06, + 1.097351322101208467e-06, + 1.098625349262258660e-06, + 1.099897389249197517e-06, + 1.101167440291533266e-06, + 1.102435500622308805e-06, + 1.103701568478022925e-06, + 1.104965642098886115e-06, + 1.106227719728451681e-06, + 1.107487799613867100e-06, + 1.108745880005811767e-06, + 1.110001959158505672e-06, + 1.111256035329634441e-06, + 1.112508106780624624e-06, + 1.113758171776245369e-06, + 1.115006228584883932e-06, + 1.116252275478463501e-06, + 1.117496310732464385e-06, + 1.118738332625861959e-06, + 1.119978339441354522e-06, + 1.121216329465023631e-06, + 1.122452300986572124e-06, + 1.123686252299258046e-06, + 1.124918181699845736e-06, + 1.126148087488844053e-06, + 1.127375967970143425e-06, + 1.128601821451274189e-06, + 1.129825646243330577e-06, + 1.131047440660989133e-06, + 1.132267203022436293e-06, + 1.133484931649619110e-06, + 1.134700624867882084e-06, + 1.135914281006215557e-06, + 1.137125898397201716e-06, + 1.138335475376992777e-06, + 1.139543010285289602e-06, + 1.140748501465610421e-06, + 1.141951947264657245e-06, + 1.143153346033145541e-06, + 1.144352696125141639e-06, + 1.145549995898320441e-06, + 1.146745243714138001e-06, + 1.147938437937521943e-06, + 1.149129576936855991e-06, + 1.150318659084466389e-06, + 1.151505682756053323e-06, + 1.152690646330942914e-06, + 1.153873548192301521e-06, + 1.155054386726505332e-06, + 1.156233160323958603e-06, + 1.157409867378454989e-06, + 1.158584506287413237e-06, + 1.159757075452046166e-06, + 1.160927573277078603e-06, + 1.162095998170697413e-06, + 1.163262348545064374e-06, + 1.164426622815739984e-06, + 1.165588819401926981e-06, + 1.166748936726689941e-06, + 1.167906973216395383e-06, + 1.169062927301221054e-06, + 1.170216797415099806e-06, + 1.171368581995440082e-06, + 1.172518279483300401e-06, + 1.173665888323611068e-06, + 1.174811406964564527e-06, + 1.175954833858398012e-06, + 1.177096167460784115e-06, + 1.178235406231041900e-06, + 1.179372548632379800e-06, + 1.180507593131343130e-06, + 1.181640538198294150e-06, + 1.182771382307370978e-06, + 1.183900123936227769e-06, + 1.185026761566226140e-06, + 1.186151293682406584e-06, + 1.187273718773433835e-06, + 1.188394035331795076e-06, + 1.189512241853510041e-06, + 1.190628336838316515e-06, + 1.191742318789642171e-06, + 1.192854186214592709e-06, + 1.193963937623910566e-06, + 1.195071571532172273e-06, + 1.196177086457499196e-06, + 1.197280480921743244e-06, + 1.198381753450448119e-06, + 1.199480902572862657e-06, + 1.200577926821868831e-06, + 1.201672824734210872e-06, + 1.202765594850165137e-06, + 1.203856235713767966e-06, + 1.204944745872754898e-06, + 1.206031123878519601e-06, + 1.207115368286310587e-06, + 1.208197477654942801e-06, + 1.209277450546977191e-06, + 1.210355285528694238e-06, + 1.211430981170084428e-06, + 1.212504536044806747e-06, + 1.213575948730391333e-06, + 1.214645217807922473e-06, + 1.215712341862276622e-06, + 1.216777319482036216e-06, + 1.217840149259511482e-06, + 1.218900829790688559e-06, + 1.219959359675435961e-06, + 1.221015737517195623e-06, + 1.222069961923190210e-06, + 1.223122031504382251e-06, + 1.224171944875413150e-06, + 1.225219700654810499e-06, + 1.226265297464740106e-06, + 1.227308733930957507e-06, + 1.228350008683260067e-06, + 1.229389120354988500e-06, + 1.230426067583219362e-06, + 1.231460849008941438e-06, + 1.232493463276731126e-06, + 1.233523909034965668e-06, + 1.234552184935769583e-06, + 1.235578289635028215e-06, + 1.236602221792323995e-06, + 1.237623980071198597e-06, + 1.238643563138603641e-06, + 1.239660969665591653e-06, + 1.240676198326786041e-06, + 1.241689247800569767e-06, + 1.242700116769228922e-06, + 1.243708803918728896e-06, + 1.244715307938650216e-06, + 1.245719627522627730e-06, + 1.246721761367889403e-06, + 1.247721708175419366e-06, + 1.248719466650175181e-06, + 1.249715035500543412e-06, + 1.250708413439040756e-06, + 1.251699599181752882e-06, + 1.252688591448548309e-06, + 1.253675388963229178e-06, + 1.254659990453277985e-06, + 1.255642394649815660e-06, + 1.256622600288034818e-06, + 1.257600606106726905e-06, + 1.258576410848474688e-06, + 1.259550013259835423e-06, + 1.260521412090874566e-06, + 1.261490606095593733e-06, + 1.262457594031884118e-06, + 1.263422374661288048e-06, + 1.264384946749141077e-06, + 1.265345309064780989e-06, + 1.266303460380999345e-06, + 1.267259399474720803e-06, + 1.268213125126496806e-06, + 1.269164636120671595e-06, + 1.270113931245590799e-06, + 1.271061009293113536e-06, + 1.272005869059059441e-06, + 1.272948509343147888e-06, + 1.273888928948763784e-06, + 1.274827126683162980e-06, + 1.275763101357407891e-06, + 1.276696851786328745e-06, + 1.277628376788712901e-06, + 1.278557675187025740e-06, + 1.279484745807601473e-06, + 1.280409587480592941e-06, + 1.281332199039969720e-06, + 1.282252579323488257e-06, + 1.283170727172866360e-06, + 1.284086641433503889e-06, + 1.285000320954671222e-06, + 1.285911764589483631e-06, + 1.286820971194863800e-06, + 1.287727939631534205e-06, + 1.288632668764183764e-06, + 1.289535157461204199e-06, + 1.290435404594849703e-06, + 1.291333409041229317e-06, + 1.292229169680238317e-06, + 1.293122685395744355e-06, + 1.294013955075309625e-06, + 1.294902977610404533e-06, + 1.295789751896325323e-06, + 1.296674276832217153e-06, + 1.297556551321028150e-06, + 1.298436574269677753e-06, + 1.299314344588803877e-06, + 1.300189861192934858e-06, + 1.301063123000451764e-06, + 1.301934128933593684e-06, + 1.302802877918391873e-06, + 1.303669368884866266e-06, + 1.304533600766767766e-06, + 1.305395572501740662e-06, + 1.306255283031284090e-06, + 1.307112731300713918e-06, + 1.307967916259339349e-06, + 1.308820836860227449e-06, + 1.309671492060198274e-06, + 1.310519880820172579e-06, + 1.311366002104776042e-06, + 1.312209854882498080e-06, + 1.313051438125804718e-06, + 1.313890750810917304e-06, + 1.314727791917972593e-06, + 1.315562560430958589e-06, + 1.316395055337700565e-06, + 1.317225275630016498e-06, + 1.318053220303517588e-06, + 1.318878888357555746e-06, + 1.319702278795610897e-06, + 1.320523390624876994e-06, + 1.321342222856412155e-06, + 1.322158774505284351e-06, + 1.322973044590353719e-06, + 1.323785032134234448e-06, + 1.324594736163672341e-06, + 1.325402155709123627e-06, + 1.326207289804927549e-06, + 1.327010137489481272e-06, + 1.327810697804764908e-06, + 1.328608969796932751e-06, + 1.329404952515871543e-06, + 1.330198645015337485e-06, + 1.330990046353112091e-06, + 1.331779155590777936e-06, + 1.332565971793689853e-06, + 1.333350494031326458e-06, + 1.334132721376907076e-06, + 1.334912652907537006e-06, + 1.335690287704376294e-06, + 1.336465624852203088e-06, + 1.337238663439958914e-06, + 1.338009402560339773e-06, + 1.338777841309966603e-06, + 1.339543978789355847e-06, + 1.340307814102930253e-06, + 1.341069346358967415e-06, + 1.341828574669771088e-06, + 1.342585498151414532e-06, + 1.343340115923880280e-06, + 1.344092427111220008e-06, + 1.344842430841139918e-06, + 1.345590126245377452e-06, + 1.346335512459643060e-06, + 1.347078588623450371e-06, + 1.347819353880244517e-06, + 1.348557807377389639e-06, + 1.349293948266119761e-06, + 1.350027775701679395e-06, + 1.350759288843130631e-06, + 1.351488486853463675e-06, + 1.352215368899593883e-06, + 1.352939934152342703e-06, + 1.353662181786412053e-06, + 1.354382110980520059e-06, + 1.355099720917204539e-06, + 1.355815010782935877e-06, + 1.356527979768121888e-06, + 1.357238627067066313e-06, + 1.357946951877968613e-06, + 1.358652953403049959e-06, + 1.359356630848339994e-06, + 1.360057983423839252e-06, + 1.360757010343439961e-06, + 1.361453710824949544e-06, + 1.362148084090184646e-06, + 1.362840129364778853e-06, + 1.363529845878338545e-06, + 1.364217232864373234e-06, + 1.364902289560343626e-06, + 1.365585015207572687e-06, + 1.366265409051431351e-06, + 1.366943470341107709e-06, + 1.367619198329745707e-06, + 1.368292592274427569e-06, + 1.368963651436115354e-06, + 1.369632375079819305e-06, + 1.370298762474367876e-06, + 1.370962812892550458e-06, + 1.371624525611092819e-06, + 1.372283899910645875e-06, + 1.372940935075767270e-06, + 1.373595630395040174e-06, + 1.374247985160908106e-06, + 1.374897998669670283e-06, + 1.375545670221734030e-06, + 1.376190999121325096e-06, + 1.376833984676594169e-06, + 1.377474626199733345e-06, + 1.378112923006766058e-06, + 1.378748874417689178e-06, + 1.379382479756431498e-06, + 1.380013738350839129e-06, + 1.380642649532784340e-06, + 1.381269212638009072e-06, + 1.381893427006103970e-06, + 1.382515291980791506e-06, + 1.383134806909606859e-06, + 1.383751971144020313e-06, + 1.384366784039541862e-06, + 1.384979244955530842e-06, + 1.385589353255317691e-06, + 1.386197108306170067e-06, + 1.386802509479304075e-06, + 1.387405556149845508e-06, + 1.388006247696986557e-06, + 1.388604583503651225e-06, + 1.389200562956919695e-06, + 1.389794185447695446e-06, + 1.390385450370823411e-06, + 1.390974357125193743e-06, + 1.391560905113571768e-06, + 1.392145093742582531e-06, + 1.392726922422974223e-06, + 1.393306390569338021e-06, + 1.393883497600193429e-06, + 1.394458242938135877e-06, + 1.395030626009492182e-06, + 1.395600646244761225e-06, + 1.396168303078252265e-06, + 1.396733595948266624e-06, + 1.397296524297052379e-06, + 1.397857087570805623e-06, + 1.398415285219644848e-06, + 1.398971116697717461e-06, + 1.399524581463047100e-06, + 1.400075678977598437e-06, + 1.400624408707409949e-06, + 1.401170770122283268e-06, + 1.401714762696080915e-06, + 1.402256385906660652e-06, + 1.402795639235747584e-06, + 1.403332522169044056e-06, + 1.403867034196210601e-06, + 1.404399174810827395e-06, + 1.404928943510513479e-06, + 1.405456339796770060e-06, + 1.405981363175030692e-06, + 1.406504013154802948e-06, + 1.407024289249381273e-06, + 1.407542190976094953e-06, + 1.408057717856289694e-06, + 1.408570869415168800e-06, + 1.409081645181938442e-06, + 1.409590044689739470e-06, + 1.410096067475671979e-06, + 1.410599713080774342e-06, + 1.411100981050109610e-06, + 1.411599870932617916e-06, + 1.412096382281224895e-06, + 1.412590514652801659e-06, + 1.413082267608165014e-06, + 1.413571640712154747e-06, + 1.414058633533489000e-06, + 1.414543245644869507e-06, + 1.415025476622949626e-06, + 1.415505326048347251e-06, + 1.415982793505595473e-06, + 1.416457878583281708e-06, + 1.416930580873861349e-06, + 1.417400899973763428e-06, + 1.417868835483387872e-06, + 1.418334387007055097e-06, + 1.418797554153125869e-06, + 1.419258336533831891e-06, + 1.419716733765392276e-06, + 1.420172745467988134e-06, + 1.420626371265752406e-06, + 1.421077610786738524e-06, + 1.421526463663050223e-06, + 1.421972929530681657e-06, + 1.422417008029521216e-06, + 1.422858698803547400e-06, + 1.423298001500622142e-06, + 1.423734915772531681e-06, + 1.424169441275114247e-06, + 1.424601577668085367e-06, + 1.425031324615138230e-06, + 1.425458681783925697e-06, + 1.425883648846021754e-06, + 1.426306225477051956e-06, + 1.426726411356530801e-06, + 1.427144206167859395e-06, + 1.427559609598535944e-06, + 1.427972621339930230e-06, + 1.428383241087357513e-06, + 1.428791468540162813e-06, + 1.429197303401568867e-06, + 1.429600745378794926e-06, + 1.430001794182994496e-06, + 1.430400449529292186e-06, + 1.430796711136733307e-06, + 1.431190578728412414e-06, + 1.431582052031223213e-06, + 1.431971130776161595e-06, + 1.432357814698107516e-06, + 1.432742103535871379e-06, + 1.433123997032304782e-06, + 1.433503494934149955e-06, + 1.433880596992050140e-06, + 1.434255302960725347e-06, + 1.434627612598763986e-06, + 1.434997525668712018e-06, + 1.435365041937149397e-06, + 1.435730161174458407e-06, + 1.436092883155118645e-06, + 1.436453207657488058e-06, + 1.436811134463863721e-06, + 1.437166663360586229e-06, + 1.437519794137811431e-06, + 1.437870526589727472e-06, + 1.438218860514498682e-06, + 1.438564795714181721e-06, + 1.438908331994783385e-06, + 1.439249469166340231e-06, + 1.439588207042719309e-06, + 1.439924545441798795e-06, + 1.440258484185438343e-06, + 1.440590023099395017e-06, + 1.440919162013387242e-06, + 1.441245900761085065e-06, + 1.441570239180085799e-06, + 1.441892177111988991e-06, + 1.442211714402289052e-06, + 1.442528850900411903e-06, + 1.442843586459833970e-06, + 1.443155920937838251e-06, + 1.443465854195718016e-06, + 1.443773386098747595e-06, + 1.444078516516092795e-06, + 1.444381245320879728e-06, + 1.444681572390179985e-06, + 1.444979497604991365e-06, + 1.445275020850304582e-06, + 1.445568142014999289e-06, + 1.445858860991921584e-06, + 1.446147177677850549e-06, + 1.446433091973512441e-06, + 1.446716603783551467e-06, + 1.446997713016606864e-06, + 1.447276419585211682e-06, + 1.447552723405845718e-06, + 1.447826624398937640e-06, + 1.448098122488846345e-06, + 1.448367217603855037e-06, + 1.448633909676235809e-06, + 1.448898198642132539e-06, + 1.449160084441675458e-06, + 1.449419567018900040e-06, + 1.449676646321773686e-06, + 1.449931322302245488e-06, + 1.450183594916155594e-06, + 1.450433464123278622e-06, + 1.450680929887336150e-06, + 1.450925992175983803e-06, + 1.451168650960790071e-06, + 1.451408906217291162e-06, + 1.451646757924928950e-06, + 1.451882206067068343e-06, + 1.452115250631026506e-06, + 1.452345891608029236e-06, + 1.452574128993227481e-06, + 1.452799962785748373e-06, + 1.453023392988599727e-06, + 1.453244419608719802e-06, + 1.453463042656981958e-06, + 1.453679262148175392e-06, + 1.453893078101052354e-06, + 1.454104490538255516e-06, + 1.454313499486320093e-06, + 1.454520104975783104e-06, + 1.454724307041048274e-06, + 1.454926105720436222e-06, + 1.455125501056236548e-06, + 1.455322493094619961e-06, + 1.455517081885682318e-06, + 1.455709267483447805e-06, + 1.455899049945858768e-06, + 1.456086429334749460e-06, + 1.456271405715932223e-06, + 1.456453979159049259e-06, + 1.456634149737743307e-06, + 1.456811917529516611e-06, + 1.456987282615789154e-06, + 1.457160245081953927e-06, + 1.457330805017231875e-06, + 1.457498962514787941e-06, + 1.457664717671732546e-06, + 1.457828070589044511e-06, + 1.457989021371621879e-06, + 1.458147570128299912e-06, + 1.458303716971763851e-06, + 1.458457462018664956e-06, + 1.458608805389529663e-06, + 1.458757747208785628e-06, + 1.458904287604808955e-06, + 1.459048426709811744e-06, + 1.459190164659947131e-06, + 1.459329501595288530e-06, + 1.459466437659783262e-06, + 1.459600973001274576e-06, + 1.459733107771551621e-06, + 1.459862842126229386e-06, + 1.459990176224870878e-06, + 1.460115110230936728e-06, + 1.460237644311768457e-06, + 1.460357778638607542e-06, + 1.460475513386593713e-06, + 1.460590848734740820e-06, + 1.460703784865994004e-06, + 1.460814321967159180e-06, + 1.460922460228934171e-06, + 1.461028199845939407e-06, + 1.461131541016638308e-06, + 1.461232483943399115e-06, + 1.461331028832508232e-06, + 1.461427175894100345e-06, + 1.461520925342210728e-06, + 1.461612277394753853e-06, + 1.461701232273522968e-06, + 1.461787790204217201e-06, + 1.461871951416402598e-06, + 1.461953716143523557e-06, + 1.462033084622901346e-06, + 1.462110057095742148e-06, + 1.462184633807123937e-06, + 1.462256815006016375e-06, + 1.462326600945250117e-06, + 1.462393991881536920e-06, + 1.462458988075460116e-06, + 1.462521589791472923e-06, + 1.462581797297902035e-06, + 1.462639610866954621e-06, + 1.462695030774692058e-06, + 1.462748057301049841e-06, + 1.462798690729836524e-06, + 1.462846931348717202e-06, + 1.462892779449235955e-06, + 1.462936235326790231e-06, + 1.462977299280635923e-06, + 1.463015971613911511e-06, + 1.463052252633593170e-06, + 1.463086142650517004e-06, + 1.463117641979413563e-06, + 1.463146750938833940e-06, + 1.463173469851196779e-06, + 1.463197799042778535e-06, + 1.463219738843703100e-06, + 1.463239289587953660e-06, + 1.463256451613368670e-06, + 1.463271225261632539e-06, + 1.463283610878286217e-06, + 1.463293608812702842e-06, + 1.463301219418113577e-06, + 1.463306443051605489e-06, + 1.463309280074100375e-06, + 1.463309730850346506e-06, + 1.463307795748969442e-06, + 1.463303475142418677e-06, + 1.463296769406981186e-06, + 1.463287678922788414e-06, + 1.463276204073803998e-06, + 1.463262345247838371e-06, + 1.463246102836532040e-06, + 1.463227477235340971e-06, + 1.463206468843595883e-06, + 1.463183078064428766e-06, + 1.463157305304799140e-06, + 1.463129150975514386e-06, + 1.463098615491197977e-06, + 1.463065699270297319e-06, + 1.463030402735101747e-06, + 1.462992726311705254e-06, + 1.462952670430030638e-06, + 1.462910235523830341e-06, + 1.462865422030673537e-06, + 1.462818230391939354e-06, + 1.462768661052835932e-06, + 1.462716714462375224e-06, + 1.462662391073398410e-06, + 1.462605691342556408e-06, + 1.462546615730300352e-06, + 1.462485164700912295e-06, + 1.462421338722464548e-06, + 1.462355138266851025e-06, + 1.462286563809766488e-06, + 1.462215615830710360e-06, + 1.462142294812990110e-06, + 1.462066601243718716e-06, + 1.461988535613803865e-06, + 1.461908098417951760e-06, + 1.461825290154673479e-06, + 1.461740111326272688e-06, + 1.461652562438858773e-06, + 1.461562644002314017e-06, + 1.461470356530336584e-06, + 1.461375700540409184e-06, + 1.461278676553799916e-06, + 1.461179285095559940e-06, + 1.461077526694547618e-06, + 1.460973401883389548e-06, + 1.460866911198493273e-06, + 1.460758055180072479e-06, + 1.460646834372106758e-06, + 1.460533249322346908e-06, + 1.460417300582338642e-06, + 1.460298988707396974e-06, + 1.460178314256614046e-06, + 1.460055277792851299e-06, + 1.459929879882743918e-06, + 1.459802121096712263e-06, + 1.459672002008925878e-06, + 1.459539523197332494e-06, + 1.459404685243645963e-06, + 1.459267488733338636e-06, + 1.459127934255653430e-06, + 1.458986022403588369e-06, + 1.458841753773913316e-06, + 1.458695128967151339e-06, + 1.458546148587573200e-06, + 1.458394813243211972e-06, + 1.458241123545859012e-06, + 1.458085080111050832e-06, + 1.457926683558079268e-06, + 1.457765934509987239e-06, + 1.457602833593558585e-06, + 1.457437381439325690e-06, + 1.457269578681570332e-06, + 1.457099425958308006e-06, + 1.456926923911310379e-06, + 1.456752073186058695e-06, + 1.456574874431807521e-06, + 1.456395328301529897e-06, + 1.456213435451930254e-06, + 1.456029196543459665e-06, + 1.455842612240282592e-06, + 1.455653683210303995e-06, + 1.455462410125158533e-06, + 1.455268793660196375e-06, + 1.455072834494508187e-06, + 1.454874533310902897e-06, + 1.454673890795900286e-06, + 1.454470907639733738e-06, + 1.454265584536386453e-06, + 1.454057922183526435e-06, + 1.453847921282552868e-06, + 1.453635582538567106e-06, + 1.453420906660389401e-06, + 1.453203894360548316e-06, + 1.452984546355275004e-06, + 1.452762863364506603e-06, + 1.452538846111895545e-06, + 1.452312495324778224e-06, + 1.452083811734194471e-06, + 1.451852796074912334e-06, + 1.451619449085357771e-06, + 1.451383771507668017e-06, + 1.451145764087675911e-06, + 1.450905427574895285e-06, + 1.450662762722553788e-06, + 1.450417770287533802e-06, + 1.450170451030433010e-06, + 1.449920805715514841e-06, + 1.449668835110738539e-06, + 1.449414539987716181e-06, + 1.449157921121790172e-06, + 1.448898979291928647e-06, + 1.448637715280793649e-06, + 1.448374129874737107e-06, + 1.448108223863749382e-06, + 1.447839998041523215e-06, + 1.447569453205405237e-06, + 1.447296590156395542e-06, + 1.447021409699174795e-06, + 1.446743912642088984e-06, + 1.446464099797110033e-06, + 1.446181971979929399e-06, + 1.445897530009838219e-06, + 1.445610774709806292e-06, + 1.445321706906451166e-06, + 1.445030327430052112e-06, + 1.444736637114517936e-06, + 1.444440636797429546e-06, + 1.444142327319973032e-06, + 1.443841709527021619e-06, + 1.443538784267077009e-06, + 1.443233552392239101e-06, + 1.442926014758307633e-06, + 1.442616172224692821e-06, + 1.442304025654411971e-06, + 1.441989575914139242e-06, + 1.441672823874184047e-06, + 1.441353770408468182e-06, + 1.441032416394551662e-06, + 1.440708762713596933e-06, + 1.440382810250405717e-06, + 1.440054559893388944e-06, + 1.439724012534579247e-06, + 1.439391169069634134e-06, + 1.439056030397816298e-06, + 1.438718597421984086e-06, + 1.438378871048622418e-06, + 1.438036852187826056e-06, + 1.437692541753277793e-06, + 1.437345940662285724e-06, + 1.436997049835748303e-06, + 1.436645870198145879e-06, + 1.436292402677585578e-06, + 1.435936648205745622e-06, + 1.435578607717910051e-06, + 1.435218282152961099e-06, + 1.434855672453333670e-06, + 1.434490779565082039e-06, + 1.434123604437842372e-06, + 1.433754148024827855e-06, + 1.433382411282818106e-06, + 1.433008395172206397e-06, + 1.432632100656909446e-06, + 1.432253528704457837e-06, + 1.431872680285939480e-06, + 1.431489556376016765e-06, + 1.431104157952933124e-06, + 1.430716485998451836e-06, + 1.430326541497939458e-06, + 1.429934325440311614e-06, + 1.429539838818046549e-06, + 1.429143082627170307e-06, + 1.428744057867278114e-06, + 1.428342765541490973e-06, + 1.427939206656485519e-06, + 1.427533382222545266e-06, + 1.427125293253401784e-06, + 1.426714940766396067e-06, + 1.426302325782401868e-06, + 1.425887449325781659e-06, + 1.425470312424538034e-06, + 1.425050916110089249e-06, + 1.424629261417469332e-06, + 1.424205349385216697e-06, + 1.423779181055374992e-06, + 1.423350757473526136e-06, + 1.422920079688833511e-06, + 1.422487148753870234e-06, + 1.422051965724819896e-06, + 1.421614531661357351e-06, + 1.421174847626620330e-06, + 1.420732914687362339e-06, + 1.420288733913740475e-06, + 1.419842306379479324e-06, + 1.419393633161790708e-06, + 1.418942715341417938e-06, + 1.418489554002523591e-06, + 1.418034150232890245e-06, + 1.417576505123678662e-06, + 1.417116619769616244e-06, + 1.416654495268904926e-06, + 1.416190132723184746e-06, + 1.415723533237670647e-06, + 1.415254697921027114e-06, + 1.414783627885350383e-06, + 1.414310324246276233e-06, + 1.413834788122910310e-06, + 1.413357020637769475e-06, + 1.412877022916960526e-06, + 1.412394796089935619e-06, + 1.411910341289700211e-06, + 1.411423659652702950e-06, + 1.410934752318801365e-06, + 1.410443620431397187e-06, + 1.409950265137329403e-06, + 1.409454687586832757e-06, + 1.408956888933649344e-06, + 1.408456870334964237e-06, + 1.407954632951408660e-06, + 1.407450177947052371e-06, + 1.406943506489432243e-06, + 1.406434619749466294e-06, + 1.405923518901573328e-06, + 1.405410205123584634e-06, + 1.404894679596764101e-06, + 1.404376943505827491e-06, + 1.403856998038863448e-06, + 1.403334844387440443e-06, + 1.402810483746531593e-06, + 1.402283917314536899e-06, + 1.401755146293262918e-06, + 1.401224171887962571e-06, + 1.400690995307245784e-06, + 1.400155617763183033e-06, + 1.399618040471235682e-06, + 1.399078264650275248e-06, + 1.398536291522592297e-06, + 1.397992122313824445e-06, + 1.397445758253056732e-06, + 1.396897200572761696e-06, + 1.396346450508802758e-06, + 1.395793509300431685e-06, + 1.395238378190306582e-06, + 1.394681058424413976e-06, + 1.394121551252185909e-06, + 1.393559857926406767e-06, + 1.392995979703245258e-06, + 1.392429917842248480e-06, + 1.391861673606353781e-06, + 1.391291248261807654e-06, + 1.390718643078276911e-06, + 1.390143859328784522e-06, + 1.389566898289714271e-06, + 1.388987761240825367e-06, + 1.388406449465173037e-06, + 1.387822964249239816e-06, + 1.387237306882827337e-06, + 1.386649478659086400e-06, + 1.386059480874518668e-06, + 1.385467314828991068e-06, + 1.384872981825654471e-06, + 1.384276483171042798e-06, + 1.383677820175029399e-06, + 1.383076994150805239e-06, + 1.382474006414896263e-06, + 1.381868858287180762e-06, + 1.381261551090768881e-06, + 1.380652086152253763e-06, + 1.380040464801387563e-06, + 1.379426688371337247e-06, + 1.378810758198581680e-06, + 1.378192675622839417e-06, + 1.377572441987180088e-06, + 1.376950058638065476e-06, + 1.376325526925107269e-06, + 1.375698848201316723e-06, + 1.375070023823000897e-06, + 1.374439055149676893e-06, + 1.373805943544307969e-06, + 1.373170690372993097e-06, + 1.372533297005207312e-06, + 1.371893764813707898e-06, + 1.371252095174471717e-06, + 1.370608289466788796e-06, + 1.369962349073317389e-06, + 1.369314275379825634e-06, + 1.368664069775463234e-06, + 1.368011733652636099e-06, + 1.367357268406923759e-06, + 1.366700675437323100e-06, + 1.366041956145998698e-06, + 1.365381111938344867e-06, + 1.364718144223061678e-06, + 1.364053054412119171e-06, + 1.363385843920628400e-06, + 1.362716514167122006e-06, + 1.362045066573194653e-06, + 1.361371502563792504e-06, + 1.360695823567083202e-06, + 1.360018031014392548e-06, + 1.359338126340403139e-06, + 1.358656110982970130e-06, + 1.357971986383110018e-06, + 1.357285753985141033e-06, + 1.356597415236587000e-06, + 1.355906971588173955e-06, + 1.355214424493886043e-06, + 1.354519775410818139e-06, + 1.353823025799374265e-06, + 1.353124177123120203e-06, + 1.352423230848840463e-06, + 1.351720188446504184e-06, + 1.351015051389312996e-06, + 1.350307821153580106e-06, + 1.349598499218897583e-06, + 1.348887087068005494e-06, + 1.348173586186841670e-06, + 1.347457998064519466e-06, + 1.346740324193362281e-06, + 1.346020566068784337e-06, + 1.345298725189456273e-06, + 1.344574803057197999e-06, + 1.343848801176994361e-06, + 1.343120721057016535e-06, + 1.342390564208522915e-06, + 1.341658332146009259e-06, + 1.340924026387101110e-06, + 1.340187648452573492e-06, + 1.339449199866358744e-06, + 1.338708682155562827e-06, + 1.337966096850345252e-06, + 1.337221445484091459e-06, + 1.336474729593304815e-06, + 1.335725950717617837e-06, + 1.334975110399793255e-06, + 1.334222210185754076e-06, + 1.333467251624465851e-06, + 1.332710236268103752e-06, + 1.331951165671928688e-06, + 1.331190041394317806e-06, + 1.330426864996797096e-06, + 1.329661638043916457e-06, + 1.328894362103383314e-06, + 1.328125038746108146e-06, + 1.327353669545920946e-06, + 1.326580256079871276e-06, + 1.325804799928102700e-06, + 1.325027302673758760e-06, + 1.324247765903168264e-06, + 1.323466191205714635e-06, + 1.322682580173857507e-06, + 1.321896934403151784e-06, + 1.321109255492247003e-06, + 1.320319545042748003e-06, + 1.319527804659548225e-06, + 1.318734035950391801e-06, + 1.317938240526205377e-06, + 1.317140420000985882e-06, + 1.316340575991696766e-06, + 1.315538710118408395e-06, + 1.314734824004346970e-06, + 1.313928919275596367e-06, + 1.313120997561412814e-06, + 1.312311060494092963e-06, + 1.311499109708842177e-06, + 1.310685146844144049e-06, + 1.309869173541275686e-06, + 1.309051191444673628e-06, + 1.308231202201801710e-06, + 1.307409207463062762e-06, + 1.306585208881929047e-06, + 1.305759208114994146e-06, + 1.304931206821670987e-06, + 1.304101206664524735e-06, + 1.303269209309108460e-06, + 1.302435216423864887e-06, + 1.301599229680426666e-06, + 1.300761250753328171e-06, + 1.299921281320041073e-06, + 1.299079323061111352e-06, + 1.298235377660095551e-06, + 1.297389446803386717e-06, + 1.296541532180597258e-06, + 1.295691635484086508e-06, + 1.294839758409323472e-06, + 1.293985902654753628e-06, + 1.293130069921646463e-06, + 1.292272261914449530e-06, + 1.291412480340473778e-06, + 1.290550726909915150e-06, + 1.289687003336032883e-06, + 1.288821311334998103e-06, + 1.287953652625946338e-06, + 1.287084028930976674e-06, + 1.286212441975034013e-06, + 1.285338893486121051e-06, + 1.284463385195122509e-06, + 1.283585918835870784e-06, + 1.282706496145120326e-06, + 1.281825118862590411e-06, + 1.280941788730820935e-06, + 1.280056507495369137e-06, + 1.279169276904691016e-06, + 1.278280098710136879e-06, + 1.277388974665981841e-06, + 1.276495906529440009e-06, + 1.275600896060514345e-06, + 1.274703945022227484e-06, + 1.273805055180451903e-06, + 1.272904228303965404e-06, + 1.272001466164464661e-06, + 1.271096770536426948e-06, + 1.270190143197324011e-06, + 1.269281585927465158e-06, + 1.268371100510047230e-06, + 1.267458688731130888e-06, + 1.266544352379684023e-06, + 1.265628093247444531e-06, + 1.264709913129107729e-06, + 1.263789813822204796e-06, + 1.262867797127112310e-06, + 1.261943864847067699e-06, + 1.261018018788196565e-06, + 1.260090260759354495e-06, + 1.259160592572354705e-06, + 1.258229016041813241e-06, + 1.257295532985183287e-06, + 1.256360145222788411e-06, + 1.255422854577663954e-06, + 1.254483662875752066e-06, + 1.253542571945930922e-06, + 1.252599583619665537e-06, + 1.251654699731400364e-06, + 1.250707922118376971e-06, + 1.249759252620543407e-06, + 1.248808693080761303e-06, + 1.247856245344658701e-06, + 1.246901911260662874e-06, + 1.245945692680028278e-06, + 1.244987591456700395e-06, + 1.244027609447476030e-06, + 1.243065748512054559e-06, + 1.242102010512691279e-06, + 1.241136397314570952e-06, + 1.240168910785647289e-06, + 1.239199552796534956e-06, + 1.238228325220690626e-06, + 1.237255229934461260e-06, + 1.236280268816702520e-06, + 1.235303443749194447e-06, + 1.234324756616469730e-06, + 1.233344209305653824e-06, + 1.232361803706891645e-06, + 1.231377541712794245e-06, + 1.230391425218875248e-06, + 1.229403456123375511e-06, + 1.228413636327162327e-06, + 1.227421967733899684e-06, + 1.226428452250097172e-06, + 1.225433091784748310e-06, + 1.224435888249728643e-06, + 1.223436843559621048e-06, + 1.222435959631568344e-06, + 1.221433238385692369e-06, + 1.220428681744545518e-06, + 1.219422291633534265e-06, + 1.218414069980725616e-06, + 1.217404018716875905e-06, + 1.216392139775432278e-06, + 1.215378435092580551e-06, + 1.214362906607047003e-06, + 1.213345556260373873e-06, + 1.212326385996769651e-06, + 1.211305397762953853e-06, + 1.210282593508563391e-06, + 1.209257975185772249e-06, + 1.208231544749333417e-06, + 1.207203304156781965e-06, + 1.206173255368266270e-06, + 1.205141400346582536e-06, + 1.204107741057211846e-06, + 1.203072279468162198e-06, + 1.202035017550198045e-06, + 1.200995957276718536e-06, + 1.199955100623595522e-06, + 1.198912449569577164e-06, + 1.197868006095903597e-06, + 1.196821772186358381e-06, + 1.195773749827464806e-06, + 1.194723941008323259e-06, + 1.193672347720635155e-06, + 1.192618971958719662e-06, + 1.191563815719530857e-06, + 1.190506881002500176e-06, + 1.189448169809779726e-06, + 1.188387684146068005e-06, + 1.187325426018659669e-06, + 1.186261397437462045e-06, + 1.185195600414853893e-06, + 1.184128036965904147e-06, + 1.183058709108214794e-06, + 1.181987618861961109e-06, + 1.180914768249879579e-06, + 1.179840159297318308e-06, + 1.178763794032046433e-06, + 1.177685674484519029e-06, + 1.176605802687706650e-06, + 1.175524180677123276e-06, + 1.174440810490859564e-06, + 1.173355694169426776e-06, + 1.172268833756000096e-06, + 1.171180231296239053e-06, + 1.170089888838337077e-06, + 1.168997808433016625e-06, + 1.167903992133552265e-06, + 1.166808441995611010e-06, + 1.165711160077462592e-06, + 1.164612148440014618e-06, + 1.163511409146421659e-06, + 1.162408944262508347e-06, + 1.161304755856609283e-06, + 1.160198845999410434e-06, + 1.159091216764229073e-06, + 1.157981870226819387e-06, + 1.156870808465426474e-06, + 1.155758033560808794e-06, + 1.154643547596074473e-06, + 1.153527352656889466e-06, + 1.152409450831528801e-06, + 1.151289844210450945e-06, + 1.150168534886769391e-06, + 1.149045524956038357e-06, + 1.147920816516144787e-06, + 1.146794411667546587e-06, + 1.145666312513111043e-06, + 1.144536521158145111e-06, + 1.143405039710395835e-06, + 1.142271870280079575e-06, + 1.141137014979670029e-06, + 1.140000475924384016e-06, + 1.138862255231541323e-06, + 1.137722355021058317e-06, + 1.136580777415273245e-06, + 1.135437524538796519e-06, + 1.134292598518727770e-06, + 1.133146001484721703e-06, + 1.131997735568549546e-06, + 1.130847802904557084e-06, + 1.129696205629491655e-06, + 1.128542945882291231e-06, + 1.127388025804619541e-06, + 1.126231447540177423e-06, + 1.125073213235234559e-06, + 1.123913325038391664e-06, + 1.122751785100605685e-06, + 1.121588595575209287e-06, + 1.120423758617939437e-06, + 1.119257276386742164e-06, + 1.118089151042065422e-06, + 1.116919384746709797e-06, + 1.115747979665613786e-06, + 1.114574937966359477e-06, + 1.113400261818715787e-06, + 1.112223953394687796e-06, + 1.111046014868753922e-06, + 1.109866448417676609e-06, + 1.108685256220535146e-06, + 1.107502440458770985e-06, + 1.106318003315998431e-06, + 1.105131946978285429e-06, + 1.103944273634004915e-06, + 1.102754985473637030e-06, + 1.101564084690254895e-06, + 1.100371573479077164e-06, + 1.099177454037515462e-06, + 1.097981728565409643e-06, + 1.096784399264838272e-06, + 1.095585468340156524e-06, + 1.094384937997990681e-06, + 1.093182810447290863e-06, + 1.091979087899119900e-06, + 1.090773772566962500e-06, + 1.089566866666492952e-06, + 1.088358372415660677e-06, + 1.087148292034700599e-06, + 1.085936627745944265e-06, + 1.084723381774124769e-06, + 1.083508556346160762e-06, + 1.082292153691199227e-06, + 1.081074176040624163e-06, + 1.079854625628094061e-06, + 1.078633504689334176e-06, + 1.077410815462446957e-06, + 1.076186560187689709e-06, + 1.074960741107538112e-06, + 1.073733360466725192e-06, + 1.072504420512025958e-06, + 1.071273923492574196e-06, + 1.070041871659642660e-06, + 1.068808267266692201e-06, + 1.067573112569376430e-06, + 1.066336409825574322e-06, + 1.065098161295200909e-06, + 1.063858369240435343e-06, + 1.062617035925791619e-06, + 1.061374163617629632e-06, + 1.060129754584686262e-06, + 1.058883811097853875e-06, + 1.057636335430018755e-06, + 1.056387329856384453e-06, + 1.055136796654237589e-06, + 1.053884738103007352e-06, + 1.052631156484317592e-06, + 1.051376054081767228e-06, + 1.050119433181183091e-06, + 1.048861296070687043e-06, + 1.047601645040192635e-06, + 1.046340482381953135e-06, + 1.045077810390334522e-06, + 1.043813631361642269e-06, + 1.042547947594456344e-06, + 1.041280761389401029e-06, + 1.040012075049198072e-06, + 1.038741890878654404e-06, + 1.037470211184740489e-06, + 1.036197038276269513e-06, + 1.034922374464532867e-06, + 1.033646222062506057e-06, + 1.032368583385464280e-06, + 1.031089460750742510e-06, + 1.029808856477583659e-06, + 1.028526772887390787e-06, + 1.027243212303797403e-06, + 1.025958177052155856e-06, + 1.024671669460079017e-06, + 1.023383691857231057e-06, + 1.022094246575094303e-06, + 1.020803335947565127e-06, + 1.019510962310193309e-06, + 1.018217128000777291e-06, + 1.016921835359127639e-06, + 1.015625086726863335e-06, + 1.014326884447941387e-06, + 1.013027230868168295e-06, + 1.011726128335246433e-06, + 1.010423579199038320e-06, + 1.009119585811417756e-06, + 1.007814150526023755e-06, + 1.006507275698809850e-06, + 1.005198963687561073e-06, + 1.003889216851926561e-06, + 1.002578037553695480e-06, + 1.001265428156585691e-06, + 9.999513910262668298e-07, + 9.986359285304464950e-07, + 9.973190430386169821e-07, + 9.960007369223940986e-07, + 9.946810125553439455e-07, + 9.933598723127584535e-07, + 9.920373185722112480e-07, + 9.907133537130424419e-07, + 9.893879801164187745e-07, + 9.880612001656124973e-07, + 9.867330162457523463e-07, + 9.854034307438976573e-07, + 9.840724460490843174e-07, + 9.827400645520890783e-07, + 9.814062886457687928e-07, + 9.800711207248306572e-07, + 9.787345631858853626e-07, + 9.773966184274401067e-07, + 9.760572888499453928e-07, + 9.747165768555786125e-07, + 9.733744848485703652e-07, + 9.720310152349685596e-07, + 9.706861704227057526e-07, + 9.693399528215860206e-07, + 9.679923648433315458e-07, + 9.666434089013600588e-07, + 9.652930874111253458e-07, + 9.639414027898669498e-07, + 9.625883574566868278e-07, + 9.612339538325832317e-07, + 9.598781943402332328e-07, + 9.585210814043154411e-07, + 9.571626174512859654e-07, + 9.558028049094366466e-07, + 9.544416462088772700e-07, + 9.530791437816007869e-07, + 9.517153000612422279e-07, + 9.503501174834215395e-07, + 9.489835984855128734e-07, + 9.476157455066910672e-07, + 9.462465609879281511e-07, + 9.448760473720585686e-07, + 9.435042071035203028e-07, + 9.421310426287272526e-07, + 9.407565563957997709e-07, + 9.393807508546618611e-07, + 9.380036284570448834e-07, + 9.366251916562881841e-07, + 9.352454429076133225e-07, + 9.338643846681713992e-07, + 9.324820193965230831e-07, + 9.310983495532187239e-07, + 9.297133776005487943e-07, + 9.283271060023861307e-07, + 9.269395372245040994e-07, + 9.255506737343617684e-07, + 9.241605180011429763e-07, + 9.227690724958234601e-07, + 9.213763396909233094e-07, + 9.199823220607915701e-07, + 9.185870220816772884e-07, + 9.171904422311825399e-07, + 9.157925849888472001e-07, + 9.143934528359166450e-07, + 9.129930482550884888e-07, + 9.115913737311184238e-07, + 9.101884317502618143e-07, + 9.087842248003471766e-07, + 9.073787553710574995e-07, + 9.059720259537485562e-07, + 9.045640390412105701e-07, + 9.031547971283165129e-07, + 9.017443027111833298e-07, + 9.003325582878235201e-07, + 8.989195663579045794e-07, + 8.975053294225034663e-07, + 8.960898499847023840e-07, + 8.946731305490381028e-07, + 8.932551736215690880e-07, + 8.918359817101633848e-07, + 8.904155573243103652e-07, + 8.889939029748911824e-07, + 8.875710211748232567e-07, + 8.861469144382154661e-07, + 8.847215852810233265e-07, + 8.832950362207518945e-07, + 8.818672697765108248e-07, + 8.804382884689979587e-07, + 8.790080948205661344e-07, + 8.775766913549791350e-07, + 8.761440805977610896e-07, + 8.747102650760172206e-07, + 8.732752473181819566e-07, + 8.718390298546292199e-07, + 8.704016152171097849e-07, + 8.689630059388227466e-07, + 8.675232045546942999e-07, + 8.660822136011584643e-07, + 8.646400356161828127e-07, + 8.631966731393532800e-07, + 8.617521287115968662e-07, + 8.603064048755725420e-07, + 8.588595041754000919e-07, + 8.574114291567295718e-07, + 8.559621823667369671e-07, + 8.545117663541667566e-07, + 8.530601836691008841e-07, + 8.516074368633105948e-07, + 8.501535284900096309e-07, + 8.486984611039131006e-07, + 8.472422372612305958e-07, + 8.457848595197254843e-07, + 8.443263304384629181e-07, + 8.428666525781746919e-07, + 8.414058285010062987e-07, + 8.399438607705815158e-07, + 8.384807519520505794e-07, + 8.370165046118430634e-07, + 8.355511213180323150e-07, + 8.340846046400971206e-07, + 8.326169571489539995e-07, + 8.311481814169729790e-07, + 8.296782800180233354e-07, + 8.282072555272296472e-07, + 8.267351105213360203e-07, + 8.252618475784576950e-07, + 8.237874692781228685e-07, + 8.223119782012934472e-07, + 8.208353769304010453e-07, + 8.193576680490996517e-07, + 8.178788541426475357e-07, + 8.163989377976331256e-07, + 8.149179216020459485e-07, + 8.134358081453288281e-07, + 8.119526000181341512e-07, + 8.104682998126179996e-07, + 8.089829101225021960e-07, + 8.074964335425103908e-07, + 8.060088726689917967e-07, + 8.045202300996594556e-07, + 8.030305084333963731e-07, + 8.015397102706401784e-07, + 8.000478382131124966e-07, + 7.985548948638863937e-07, + 7.970608828274418576e-07, + 7.955658047094097823e-07, + 7.940696631168799699e-07, + 7.925724606584675173e-07, + 7.910741999437319631e-07, + 7.895748835838084329e-07, + 7.880745141911520476e-07, + 7.865730943792703663e-07, + 7.850706267633666021e-07, + 7.835671139597569695e-07, + 7.820625585859262710e-07, + 7.805569632608479692e-07, + 7.790503306047913815e-07, + 7.775426632390475586e-07, + 7.760339637866416395e-07, + 7.745242348714236673e-07, + 7.730134791187793560e-07, + 7.715016991553599927e-07, + 7.699888976088182689e-07, + 7.684750771084579554e-07, + 7.669602402846473316e-07, + 7.654443897688663017e-07, + 7.639275281940423491e-07, + 7.624096581943399432e-07, + 7.608907824049015586e-07, + 7.593709034625567479e-07, + 7.578500240049086165e-07, + 7.563281466710442714e-07, + 7.548052741012024670e-07, + 7.532814089368351205e-07, + 7.517565538206068885e-07, + 7.502307113964524477e-07, + 7.487038843093085147e-07, + 7.471760752055031637e-07, + 7.456472867325634440e-07, + 7.441175215389333180e-07, + 7.425867822746391116e-07, + 7.410550715906821913e-07, + 7.395223921391092686e-07, + 7.379887465733334245e-07, + 7.364541375478656009e-07, + 7.349185677183774923e-07, + 7.333820397417620032e-07, + 7.318445562758659027e-07, + 7.303061199798777663e-07, + 7.287667335140641247e-07, + 7.272263995398278033e-07, + 7.256851207197037928e-07, + 7.241428997174217181e-07, + 7.225997391976397641e-07, + 7.210556418263308164e-07, + 7.195106102705158582e-07, + 7.179646471983247447e-07, + 7.164177552789989560e-07, + 7.148699371829416777e-07, + 7.133211955814520446e-07, + 7.117715331471245168e-07, + 7.102209525535752877e-07, + 7.086694564755016824e-07, + 7.071170475887447323e-07, + 7.055637285700190772e-07, + 7.040095020973107538e-07, + 7.024543708496036032e-07, + 7.008983375069361284e-07, + 6.993414047504144120e-07, + 6.977835752622506551e-07, + 6.962248517255088569e-07, + 6.946652368244928606e-07, + 6.931047332444781625e-07, + 6.915433436717726858e-07, + 6.899810707937805205e-07, + 6.884179172987299195e-07, + 6.868538858760653692e-07, + 6.852889792161798211e-07, + 6.837232000104795957e-07, + 6.821565509513710420e-07, + 6.805890347323352875e-07, + 6.790206540476421538e-07, + 6.774514115926894982e-07, + 6.758813100640671652e-07, + 6.743103521589392879e-07, + 6.727385405757210666e-07, + 6.711658780138004136e-07, + 6.695923671732594901e-07, + 6.680180107556266605e-07, + 6.664428114629070626e-07, + 6.648667719983410203e-07, + 6.632898950661145696e-07, + 6.617121833711547944e-07, + 6.601336396194684282e-07, + 6.585542665182037928e-07, + 6.569740667750310886e-07, + 6.553930430988244671e-07, + 6.538111981993743578e-07, + 6.522285347871247822e-07, + 6.506450555739084719e-07, + 6.490607632719871812e-07, + 6.474756605948044866e-07, + 6.458897502566347984e-07, + 6.443030349727163444e-07, + 6.427155174589012396e-07, + 6.411272004324128393e-07, + 6.395380866108788513e-07, + 6.379481787130707955e-07, + 6.363574794586374001e-07, + 6.347659915678201050e-07, + 6.331737177621377813e-07, + 6.315806607637588686e-07, + 6.299868232955757021e-07, + 6.283922080815268085e-07, + 6.267968178464041003e-07, + 6.252006553155608609e-07, + 6.236037232156714276e-07, + 6.220060242737557271e-07, + 6.204075612179372642e-07, + 6.188083367771648714e-07, + 6.172083536809264117e-07, + 6.156076146599391107e-07, + 6.140061224455173520e-07, + 6.124038797696477461e-07, + 6.108008893653172490e-07, + 6.091971539663108279e-07, + 6.075926763069242107e-07, + 6.059874591226621591e-07, + 6.043815051495937703e-07, + 6.027748171244266987e-07, + 6.011673977848533802e-07, + 5.995592498692589120e-07, + 5.979503761167952736e-07, + 5.963407792674398784e-07, + 5.947304620617130876e-07, + 5.931194272410964332e-07, + 5.915076775477438854e-07, + 5.898952157245494038e-07, + 5.882820445151405841e-07, + 5.866681666639494916e-07, + 5.850535849159167292e-07, + 5.834383020169216238e-07, + 5.818223207134866124e-07, + 5.802056437528461687e-07, + 5.785882738830120252e-07, + 5.769702138524885700e-07, + 5.753514664106896926e-07, + 5.737320343076505815e-07, + 5.721119202940954863e-07, + 5.704911271214360237e-07, + 5.688696575418323760e-07, + 5.672475143079074171e-07, + 5.656247001731645119e-07, + 5.640012178917069360e-07, + 5.623770702182957923e-07, + 5.607522599083490575e-07, + 5.591267897180064865e-07, + 5.575006624038481851e-07, + 5.558738807233051042e-07, + 5.542464474343763415e-07, + 5.526183652956935170e-07, + 5.509896370665890643e-07, + 5.493602655068081339e-07, + 5.477302533769246981e-07, + 5.460996034380643594e-07, + 5.444683184519578192e-07, + 5.428364011809386550e-07, + 5.412038543880212468e-07, + 5.395706808365956338e-07, + 5.379368832908614068e-07, + 5.363024645155325174e-07, + 5.346674272759068408e-07, + 5.330317743378632105e-07, + 5.313955084679206055e-07, + 5.297586324328827135e-07, + 5.281211490006182605e-07, + 5.264830609390582291e-07, + 5.248443710169686709e-07, + 5.232050820036698085e-07, + 5.215651966688143250e-07, + 5.199247177827393062e-07, + 5.182836481165299797e-07, + 5.166419904413741699e-07, + 5.149997475292785704e-07, + 5.133569221527680472e-07, + 5.117135170845981769e-07, + 5.100695350985462695e-07, + 5.084249789683917527e-07, + 5.067798514687046535e-07, + 5.051341553744834918e-07, + 5.034878934612986403e-07, + 5.018410685049165603e-07, + 5.001936832820956943e-07, + 4.985457405695735206e-07, + 4.968972431448518592e-07, + 4.952481937859018919e-07, + 4.935985952708779717e-07, + 4.919484503788258475e-07, + 4.902977618890361669e-07, + 4.886465325811055682e-07, + 4.869947652352986808e-07, + 4.853424626323267323e-07, + 4.836896275530461108e-07, + 4.820362627792570105e-07, + 4.803823710926845576e-07, + 4.787279552757665505e-07, + 4.770730181113671629e-07, + 4.754175623824721176e-07, + 4.737615908729146469e-07, + 4.721051063667215830e-07, + 4.704481116481741328e-07, + 4.687906095021710961e-07, + 4.671326027139295450e-07, + 4.654740940690581989e-07, + 4.638150863535493242e-07, + 4.621555823538453320e-07, + 4.604955848565505232e-07, + 4.588350966488518509e-07, + 4.571741205182350594e-07, + 4.555126592525420703e-07, + 4.538507156400479037e-07, + 4.521882924691572817e-07, + 4.505253925288433912e-07, + 4.488620186083520051e-07, + 4.471981734972611448e-07, + 4.455338599854855803e-07, + 4.438690808633413637e-07, + 4.422038389212506375e-07, + 4.405381369501719282e-07, + 4.388719777413087134e-07, + 4.372053640861714675e-07, + 4.355382987766529940e-07, + 4.338707846047276237e-07, + 4.322028243628821950e-07, + 4.305344208438258396e-07, + 4.288655768405533511e-07, + 4.271962951463422734e-07, + 4.255265785548202923e-07, + 4.238564298596740155e-07, + 4.221858518550725951e-07, + 4.205148473353798943e-07, + 4.188434190952172749e-07, + 4.171715699294624845e-07, + 4.154993026333160435e-07, + 4.138266200020047831e-07, + 4.121535248312155265e-07, + 4.104800199168024387e-07, + 4.088061080548485955e-07, + 4.071317920417346456e-07, + 4.054570746738500791e-07, + 4.037819587480181726e-07, + 4.021064470612056159e-07, + 4.004305424105830220e-07, + 3.987542475935320212e-07, + 3.970775654077039178e-07, + 3.954004986507225931e-07, + 3.937230501206265516e-07, + 3.920452226155649409e-07, + 3.903670189338674860e-07, + 3.886884418740423177e-07, + 3.870094942348429949e-07, + 3.853301788148945921e-07, + 3.836504984135021396e-07, + 3.819704558296109961e-07, + 3.802900538626186774e-07, + 3.786092953120671181e-07, + 3.769281829774247728e-07, + 3.752467196584460228e-07, + 3.735649081552441795e-07, + 3.718827512676169285e-07, + 3.702002517957852075e-07, + 3.685174125400906562e-07, + 3.668342363006974608e-07, + 3.651507258783968239e-07, + 3.634668840735721544e-07, + 3.617827136870059198e-07, + 3.600982175195784199e-07, + 3.584133983720408876e-07, + 3.567282590453842136e-07, + 3.550428023409012025e-07, + 3.533570310595273701e-07, + 3.516709480025633032e-07, + 3.499845559713834925e-07, + 3.482978577671347882e-07, + 3.466108561914643197e-07, + 3.449235540458599211e-07, + 3.432359541317089471e-07, + 3.415480592506724503e-07, + 3.398598722044526168e-07, + 3.381713957944932352e-07, + 3.364826328227956533e-07, + 3.347935860908668694e-07, + 3.331042584005369717e-07, + 3.314146525536567481e-07, + 3.297247713517955066e-07, + 3.280346175969794237e-07, + 3.263441940910170943e-07, + 3.246535036355747060e-07, + 3.229625490325342278e-07, + 3.212713330836972667e-07, + 3.195798585908556357e-07, + 3.178881283558563108e-07, + 3.161961451803042816e-07, + 3.145039118660016312e-07, + 3.128114312146448286e-07, + 3.111187060278991613e-07, + 3.094257391073867712e-07, + 3.077325332547618813e-07, + 3.060390912714071350e-07, + 3.043454159588756936e-07, + 3.026515101185883169e-07, + 3.009573765519032430e-07, + 2.992630180601138590e-07, + 2.975684374445151402e-07, + 2.958736375061020534e-07, + 2.941786210460156257e-07, + 2.924833908652340949e-07, + 2.907879497646480842e-07, + 2.890923005451264052e-07, + 2.873964460072207620e-07, + 2.857003889515975783e-07, + 2.840041321787430719e-07, + 2.823076784890314404e-07, + 2.806110306827199377e-07, + 2.789141915600184370e-07, + 2.772171639207863517e-07, + 2.755199505649774862e-07, + 2.738225542923354220e-07, + 2.721249779024647214e-07, + 2.704272241948235687e-07, + 2.687292959687979917e-07, + 2.670311960233956062e-07, + 2.653329271576898847e-07, + 2.636344921705173952e-07, + 2.619358938605492698e-07, + 2.602371350263572197e-07, + 2.585382184661128924e-07, + 2.568391469779572828e-07, + 2.551399233600718850e-07, + 2.534405504099966184e-07, + 2.517410309253792403e-07, + 2.500413677036645906e-07, + 2.483415635418751576e-07, + 2.466416212370450762e-07, + 2.449415435859228723e-07, + 2.432413333850403372e-07, + 2.415409934307823022e-07, + 2.398405265190814947e-07, + 2.381399354457903856e-07, + 2.364392230067526844e-07, + 2.347383919971209217e-07, + 2.330374452121028175e-07, + 2.313363854466585467e-07, + 2.296352154952687837e-07, + 2.279339381523061538e-07, + 2.262325562121058271e-07, + 2.245310724682882368e-07, + 2.228294897144994921e-07, + 2.211278107441113690e-07, + 2.194260383499117998e-07, + 2.177241753249339592e-07, + 2.160222244613923912e-07, + 2.143201885515078600e-07, + 2.126180703872038743e-07, + 2.109158727598746530e-07, + 2.092135984607576874e-07, + 2.075112502810027747e-07, + 2.058088310109916645e-07, + 2.041063434410863605e-07, + 2.024037903613234199e-07, + 2.007011745611062962e-07, + 1.989984988300325985e-07, + 1.972957659568333152e-07, + 1.955929787301948069e-07, + 1.938901399383825910e-07, + 1.921872523693817641e-07, + 1.904843188105214224e-07, + 1.887813420492945097e-07, + 1.870783248723000593e-07, + 1.853752700660686533e-07, + 1.836721804167550559e-07, + 1.819690587098326995e-07, + 1.802659077308428582e-07, + 1.785627302647114367e-07, + 1.768595290958207830e-07, + 1.751563070083806355e-07, + 1.734530667861247264e-07, + 1.717498112123781478e-07, + 1.700465430701310165e-07, + 1.683432651417315043e-07, + 1.666399802093323829e-07, + 1.649366910545881572e-07, + 1.632334004587218215e-07, + 1.615301112025255216e-07, + 1.598268260664256438e-07, + 1.581235478301812448e-07, + 1.564202792733300941e-07, + 1.547170231748826830e-07, + 1.530137823133938256e-07, + 1.513105594669565443e-07, + 1.496073574132752585e-07, + 1.479041789293585503e-07, + 1.462010267919667415e-07, + 1.444979037773060356e-07, + 1.427948126611004626e-07, + 1.410917562186614151e-07, + 1.393887372245818695e-07, + 1.376857584531852338e-07, + 1.359828226782188543e-07, + 1.342799326729235252e-07, + 1.325770912100320589e-07, + 1.308743010618372080e-07, + 1.291715649998869712e-07, + 1.274688857954324888e-07, + 1.257662662191227927e-07, + 1.240637090410725961e-07, + 1.223612170308631668e-07, + 1.206587929576088189e-07, + 1.189564395896515051e-07, + 1.172541596950104187e-07, + 1.155519560410750634e-07, + 1.138498313946764041e-07, + 1.121477885221568399e-07, + 1.104458301890660924e-07, + 1.087439591605318756e-07, + 1.070421782013323171e-07, + 1.053404900752116218e-07, + 1.036388975456302120e-07, + 1.019374033754598882e-07, + 1.002360103267503394e-07, + 9.853472116118079670e-08, + 9.683353863975042960e-08, + 9.513246552285203798e-08, + 9.343150457034137630e-08, + 9.173065854123167920e-08, + 9.002993019406662065e-08, + 8.832932228699120003e-08, + 8.662883757706749834e-08, + 8.492847882102635377e-08, + 8.322824877495992841e-08, + 8.152815019409052122e-08, + 7.982818583314526102e-08, + 7.812835844642577489e-08, + 7.642867078712446057e-08, + 7.472912560807528853e-08, + 7.302972566144838039e-08, + 7.133047369844145071e-08, + 6.963137247010809933e-08, + 6.793242472629473211e-08, + 6.623363321646775473e-08, + 6.453500068940677475e-08, + 6.283652989297374539e-08, + 6.113822357448599094e-08, + 5.944008448078756264e-08, + 5.774211535756523973e-08, + 5.604431895009891463e-08, + 5.434669800295537725e-08, + 5.264925525968218542e-08, + 5.095199346363369406e-08, + 4.925491535690876995e-08, + 4.755802368117886574e-08, + 4.586132117730416180e-08, + 4.416481058540602723e-08, + 4.246849464486155390e-08, + 4.077237609437575270e-08, + 3.907645767167462330e-08, + 3.738074211395373079e-08, + 3.568523215764793192e-08, + 3.398993053812423295e-08, + 3.229483999043267778e-08, + 3.059996324862298424e-08, + 2.890530304581510592e-08, + 2.721086211457273399e-08, + 2.551664318659652570e-08, + 2.382264899279578122e-08, + 2.212888226335941904e-08, + 2.043534572744952213e-08, + 1.874204211364979552e-08, + 1.704897414973533549e-08, + 1.535614456236582498e-08, + 1.366355607783621321e-08, + 1.197121142139301287e-08, + 1.027911331730564774e-08, + 8.587264489239231571e-09, + 6.895667659948473213e-09, + 5.204325551348805035e-09, + 3.513240884512080765e-09, + 1.822416379737668358e-09, + 1.318547562464429745e-10, +-1.558441267371000520e-09, +-3.248468973460355218e-09, +-4.938225645232464381e-09, +-6.627708566692309972e-09, +-8.316915022944758022e-09, +-1.000584229974663599e-08, +-1.169448768381259188e-08, +-1.338284846274383598e-08, +-1.507092192503274156e-08, +-1.675870535999156021e-08, +-1.844619605805814107e-08, +-2.013339131034822767e-08, +-2.182028840896095887e-08, +-2.350688464690805225e-08, +-2.519317731804256736e-08, +-2.687916371736471763e-08, +-2.856484114057386946e-08, +-3.025020688437433754e-08, +-3.193525824640434996e-08, +-3.361999252524027013e-08, +-3.530440702032558496e-08, +-3.698849903227631320e-08, +-3.867226586250859545e-08, +-4.035570481316870151e-08, +-4.203881318781328381e-08, +-4.372158829066174512e-08, +-4.540402742690204393e-08, +-4.708612790291960508e-08, +-4.876788702585064886e-08, +-5.044930210388771181e-08, +-5.213037044620830406e-08, +-5.381108936290373872e-08, +-5.549145616528455341e-08, +-5.717146816550889439e-08, +-5.885112267651107470e-08, +-6.053041701268268119e-08, +-6.220934848912529304e-08, +-6.388791442195503634e-08, +-6.556611212853259329e-08, +-6.724393892701620703e-08, +-6.892139213666690465e-08, +-7.059846907777701554e-08, +-7.227516707167472425e-08, +-7.395148344065356814e-08, +-7.562741550835108769e-08, +-7.730296059892887202e-08, +-7.897811603812536799e-08, +-8.065287915243675960e-08, +-8.232724726941961023e-08, +-8.400121771792118941e-08, +-8.567478782770840620e-08, +-8.734795492939668497e-08, +-8.902071635512984157e-08, +-9.069306943783335773e-08, +-9.236501151151932607e-08, +-9.403653991158938354e-08, +-9.570765197401688784e-08, +-9.737834503639718539e-08, +-9.904861643712962890e-08, +-1.007184635157952482e-07, +-1.023878836130877172e-07, +-1.040568740708148226e-07, +-1.057254322318301987e-07, +-1.073935554403361946e-07, +-1.090612410414376860e-07, +-1.107284863813729846e-07, +-1.123952888078147865e-07, +-1.140616456691294148e-07, +-1.157275543150514422e-07, +-1.173930120966134001e-07, +-1.190580163657772534e-07, +-1.207225644757367646e-07, +-1.223866537808472564e-07, +-1.240502816365551754e-07, +-1.257134453996994772e-07, +-1.273761424280703353e-07, +-1.290383700806355903e-07, +-1.307001257178430082e-07, +-1.323614067008792587e-07, +-1.340222103923461125e-07, +-1.356825341561871465e-07, +-1.373423753573221164e-07, +-1.390017313619486330e-07, +-1.406605995374695292e-07, +-1.423189772524254943e-07, +-1.439768618767950031e-07, +-1.456342507815524557e-07, +-1.472911413389706216e-07, +-1.489475309225485092e-07, +-1.506034169070181685e-07, +-1.522587966682717407e-07, +-1.539136675836649606e-07, +-1.555680270315730728e-07, +-1.572218723916957905e-07, +-1.588752010449822532e-07, +-1.605280103736397092e-07, +-1.621802977610600088e-07, +-1.638320605921235568e-07, +-1.654832962527550702e-07, +-1.671340021302264984e-07, +-1.687841756130856607e-07, +-1.704338140910876629e-07, +-1.720829149554941650e-07, +-1.737314755986328707e-07, +-1.753794934141998656e-07, +-1.770269657971866131e-07, +-1.786738901438855401e-07, +-1.803202638518210562e-07, +-1.819660843200474452e-07, +-1.836113489487101806e-07, +-1.852560551393467292e-07, +-1.869002002948142612e-07, +-1.885437818192982799e-07, +-1.901867971182353827e-07, +-1.918292435986194371e-07, +-1.934711186685612031e-07, +-1.951124197375831267e-07, +-1.967531442165556805e-07, +-1.983932895176235923e-07, +-2.000328530545088711e-07, +-2.016718322421407861e-07, +-2.033102244965889247e-07, +-2.049480272357321630e-07, +-2.065852378785229648e-07, +-2.082218538452870464e-07, +-2.098578725579492161e-07, +-2.114932914395958821e-07, +-2.131281079147704289e-07, +-2.147623194094068570e-07, +-2.163959233508324568e-07, +-2.180289171676986961e-07, +-2.196612982903521937e-07, +-2.212930641500307792e-07, +-2.229242121798953120e-07, +-2.245547398142277790e-07, +-2.261846444887268030e-07, +-2.278139236407319481e-07, +-2.294425747088615862e-07, +-2.310705951329441818e-07, +-2.326979823546796655e-07, +-2.343247338169133422e-07, +-2.359508469639327487e-07, +-2.375763192417611779e-07, +-2.392011480973598263e-07, +-2.408253309796542393e-07, +-2.424488653387362207e-07, +-2.440717486261556356e-07, +-2.456939782952227484e-07, +-2.473155518002749038e-07, +-2.489364665973446771e-07, +-2.505567201440858117e-07, +-2.521763098994122771e-07, +-2.537952333237247448e-07, +-2.554134878792030256e-07, +-2.570310710290820689e-07, +-2.586479802383106365e-07, +-2.602642129734859750e-07, +-2.618797667024887977e-07, +-2.634946388947808580e-07, +-2.651088270213360746e-07, +-2.667223285545714988e-07, +-2.683351409686425051e-07, +-2.699472617390084224e-07, +-2.715586883426582682e-07, +-2.731694182584026042e-07, +-2.747794489661486881e-07, +-2.763887779475642298e-07, +-2.779974026860030639e-07, +-2.796053206661495551e-07, +-2.812125293743099246e-07, +-2.828190262983452281e-07, +-2.844248089276058703e-07, +-2.860298747532166836e-07, +-2.876342212676553713e-07, +-2.892378459650400216e-07, +-2.908407463410636216e-07, +-2.924429198929964929e-07, +-2.940443641196170988e-07, +-2.956450765215108361e-07, +-2.972450546006305300e-07, +-2.988442958605967080e-07, +-3.004427978066256546e-07, +-3.020405579455368759e-07, +-3.036375737856792490e-07, +-3.052338428372293892e-07, +-3.068293626117562223e-07, +-3.084241306225216811e-07, +-3.100181443844050019e-07, +-3.116114014138363386e-07, +-3.132038992290906824e-07, +-3.147956353498573583e-07, +-3.163866072975347387e-07, +-3.179768125951573461e-07, +-3.195662487674065469e-07, +-3.211549133405333125e-07, +-3.227428038426592334e-07, +-3.243299178033402977e-07, +-3.259162527538663169e-07, +-3.275018062271845342e-07, +-3.290865757579108479e-07, +-3.306705588822576543e-07, +-3.322537531383263392e-07, +-3.338361560656780968e-07, +-3.354177652056275322e-07, +-3.369985781011721465e-07, +-3.385785922969290734e-07, +-3.401578053394179886e-07, +-3.417362147767144084e-07, +-3.433138181583758393e-07, +-3.448906130360942048e-07, +-3.464665969629803145e-07, +-3.480417674938565670e-07, +-3.496161221854740546e-07, +-3.511896585960851300e-07, +-3.527623742857381202e-07, +-3.543342668162075526e-07, +-3.559053337509230568e-07, +-3.574755726552608500e-07, +-3.590449810961933832e-07, +-3.606135566422179782e-07, +-3.621812968640048612e-07, +-3.637481993336841724e-07, +-3.653142616251398341e-07, +-3.668794813142964822e-07, +-3.684438559784074831e-07, +-3.700073831967044484e-07, +-3.715700605503259256e-07, +-3.731318856219676793e-07, +-3.746928559960979964e-07, +-3.762529692592475304e-07, +-3.778122229992327835e-07, +-3.793706148061464474e-07, +-3.809281422715890381e-07, +-3.824848029889527582e-07, +-3.840405945537076352e-07, +-3.855955145626984306e-07, +-3.871495606147847861e-07, +-3.887027303107744129e-07, +-3.902550212530733735e-07, +-3.918064310459016515e-07, +-3.933569572955772251e-07, +-3.949065976097470144e-07, +-3.964553495983746275e-07, +-3.980032108729707252e-07, +-3.995501790469473985e-07, +-4.010962517355552763e-07, +-4.026414265558802962e-07, +-4.041857011267822415e-07, +-4.057290730691788151e-07, +-4.072715400056244522e-07, +-4.088130995605295431e-07, +-4.103537493604397953e-07, +-4.118934870333450013e-07, +-4.134323102093058436e-07, +-4.149702165203912667e-07, +-4.165072036003321997e-07, +-4.180432690848047299e-07, +-4.195784106113621284e-07, +-4.211126258193734403e-07, +-4.226459123502976056e-07, +-4.241782678472794246e-07, +-4.257096899554216143e-07, +-4.272401763217251984e-07, +-4.287697245950913602e-07, +-4.302983324262535211e-07, +-4.318259974680627907e-07, +-4.333527173750696915e-07, +-4.348784898038139499e-07, +-4.364033124127452987e-07, +-4.379271828622399411e-07, +-4.394500988145271240e-07, +-4.409720579339741109e-07, +-4.424930578866699190e-07, +-4.440130963407078570e-07, +-4.455321709661250683e-07, +-4.470502794348241277e-07, +-4.485674194208668027e-07, +-4.500835886000538197e-07, +-4.515987846502068724e-07, +-4.531130052511090124e-07, +-4.546262480844955966e-07, +-4.561385108340020882e-07, +-4.576497911854374371e-07, +-4.591600868263694042e-07, +-4.606693954464124996e-07, +-4.621777147371566200e-07, +-4.636850423921724490e-07, +-4.651913761069463406e-07, +-4.666967135791568764e-07, +-4.682010525082717830e-07, +-4.697043905958170772e-07, +-4.712067255453175619e-07, +-4.727080550622324514e-07, +-4.742083768542307100e-07, +-4.757076886308536686e-07, +-4.772059881034441910e-07, +-4.787032729857752260e-07, +-4.801995409933647686e-07, +-4.816947898437530524e-07, +-4.831890172567049369e-07, +-4.846822209538164612e-07, +-4.861743986587783767e-07, +-4.876655480973195020e-07, +-4.891556669971406542e-07, +-4.906447530881873938e-07, +-4.921328041023152346e-07, +-4.936198177732260103e-07, +-4.951057918370793268e-07, +-4.965907240318216060e-07, +-4.980746120974573480e-07, +-4.995574537763225110e-07, +-5.010392468124186379e-07, +-5.025199889520131904e-07, +-5.039996779435890449e-07, +-5.054783115374921268e-07, +-5.069558874861572505e-07, +-5.084324035443677354e-07, +-5.099078574685206044e-07, +-5.113822470175748373e-07, +-5.128555699523154053e-07, +-5.143278240356191334e-07, +-5.157990070327331623e-07, +-5.172691167106057925e-07, +-5.187381508384902072e-07, +-5.202061071878854973e-07, +-5.216729835321986954e-07, +-5.231387776469602399e-07, +-5.246034873100810494e-07, +-5.260671103011271448e-07, +-5.275296444022627149e-07, +-5.289910873975085385e-07, +-5.304514370730891628e-07, +-5.319106912173621753e-07, +-5.333688476208233926e-07, +-5.348259040760500028e-07, +-5.362818583779595462e-07, +-5.377367083234204917e-07, +-5.391904517114534069e-07, +-5.406430863435007388e-07, +-5.420946100227621040e-07, +-5.435450205548025644e-07, +-5.449943157474839120e-07, +-5.464424934106377136e-07, +-5.478895513563313856e-07, +-5.493354873988063603e-07, +-5.507802993544232404e-07, +-5.522239850419160150e-07, +-5.536665422820032716e-07, +-5.551079688976659164e-07, +-5.565482627140700952e-07, +-5.579874215585747099e-07, +-5.594254432606746680e-07, +-5.608623256522624038e-07, +-5.622980665672342195e-07, +-5.637326638417614423e-07, +-5.651661153142243552e-07, +-5.665984188252188677e-07, +-5.680295722174911882e-07, +-5.694595733362034750e-07, +-5.708884200285434598e-07, +-5.723161101439932747e-07, +-5.737426415342612661e-07, +-5.751680120532235497e-07, +-5.765922195571932606e-07, +-5.780152619045198013e-07, +-5.794371369558622213e-07, +-5.808578425741248426e-07, +-5.822773766244612835e-07, +-5.836957369742091304e-07, +-5.851129214931594012e-07, +-5.865289280531614033e-07, +-5.879437545283937851e-07, +-5.893573987952997374e-07, +-5.907698587325198663e-07, +-5.921811322211621848e-07, +-5.935912171444167130e-07, +-5.950001113878112819e-07, +-5.964078128391494881e-07, +-5.978143193885278467e-07, +-5.992196289282554284e-07, +-6.006237393531255459e-07, +-6.020266485600977986e-07, +-6.034283544482290394e-07, +-6.048288549192626980e-07, +-6.062281478769819654e-07, +-6.076262312274857147e-07, +-6.090231028794231294e-07, +-6.104187607433135356e-07, +-6.118132027324349404e-07, +-6.132064267621240638e-07, +-6.145984307500395553e-07, +-6.159892126163553288e-07, +-6.173787702834390072e-07, +-6.187671016758015249e-07, +-6.201542047206629450e-07, +-6.215400773473238553e-07, +-6.229247174874239252e-07, +-6.243081230751982389e-07, +-6.256902920467759521e-07, +-6.270712223410837585e-07, +-6.284509118991408411e-07, +-6.298293586643844498e-07, +-6.312065605825439059e-07, +-6.325825156019558041e-07, +-6.339572216728801389e-07, +-6.353306767483857721e-07, +-6.367028787836509951e-07, +-6.380738257362290739e-07, +-6.394435155662968530e-07, +-6.408119462360308100e-07, +-6.421791157101748855e-07, +-6.435450219559824607e-07, +-6.449096629429008382e-07, +-6.462730366427702946e-07, +-6.476351410300681317e-07, +-6.489959740812342267e-07, +-6.503555337755362763e-07, +-6.517138180943925939e-07, +-6.530708250216316191e-07, +-6.544265525437306754e-07, +-6.557809986492031419e-07, +-6.571341613291623650e-07, +-6.584860385772600375e-07, +-6.598366283893805246e-07, +-6.611859287638254124e-07, +-6.625339377015693108e-07, +-6.638806532056427906e-07, +-6.652260732816884603e-07, +-6.665701959379063329e-07, +-6.679130191847449759e-07, +-6.692545410351565746e-07, +-6.705947595045260990e-07, +-6.719336726106283163e-07, +-6.732712783738626314e-07, +-6.746075748168988151e-07, +-6.759425599649135380e-07, +-6.772762318455437840e-07, +-6.786085884888838852e-07, +-6.799396279274244300e-07, +-6.812693481963070083e-07, +-6.825977473329523636e-07, +-6.839248233773112213e-07, +-6.852505743718094427e-07, +-6.865749983612829096e-07, +-6.878980933932341754e-07, +-6.892198575174538412e-07, +-6.905402887862851477e-07, +-6.918593852545500718e-07, +-6.931771449795667963e-07, +-6.944935660210764418e-07, +-6.958086464415049058e-07, +-6.971223843055805331e-07, +-6.984347776806088720e-07, +-6.997458246363854301e-07, +-7.010555232452151560e-07, +-7.023638715818476413e-07, +-7.036708677237321832e-07, +-7.049765097506412787e-07, +-7.062807957449293929e-07, +-7.075837237914710198e-07, +-7.088852919775972607e-07, +-7.101854983933514164e-07, +-7.114843411311153398e-07, +-7.127818182858674634e-07, +-7.140779279551158833e-07, +-7.153726682389074654e-07, +-7.166660372397569060e-07, +-7.179580330629161943e-07, +-7.192486538159890003e-07, +-7.205378976091880677e-07, +-7.218257625552746502e-07, +-7.231122467695658178e-07, +-7.243973483698642585e-07, +-7.256810654767769747e-07, +-7.269633962130505741e-07, +-7.282443387044100438e-07, +-7.295238910789069589e-07, +-7.308020514671624746e-07, +-7.320788180025438271e-07, +-7.333541888208748598e-07, +-7.346281620603712253e-07, +-7.359007358621948747e-07, +-7.371719083698420758e-07, +-7.384416777293907469e-07, +-7.397100420897459907e-07, +-7.409769996019894669e-07, +-7.422425484202026022e-07, +-7.435066867008305749e-07, +-7.447694126029673410e-07, +-7.460307242882536729e-07, +-7.472906199211638800e-07, +-7.485490976683659809e-07, +-7.498061556995435378e-07, +-7.510617921867590045e-07, +-7.523160053046876142e-07, +-7.535687932308454424e-07, +-7.548201541450248600e-07, +-7.560700862298100582e-07, +-7.573185876705194510e-07, +-7.585656566549283769e-07, +-7.598112913734361769e-07, +-7.610554900193038927e-07, +-7.622982507880208978e-07, +-7.635395718781148731e-07, +-7.647794514905264844e-07, +-7.660178878288270703e-07, +-7.672548790994706342e-07, +-7.684904235112015564e-07, +-7.697245192755891782e-07, +-7.709571646069721092e-07, +-7.721883577221595422e-07, +-7.734180968406826105e-07, +-7.746463801847274722e-07, +-7.758732059791385924e-07, +-7.770985724513659094e-07, +-7.783224778316987221e-07, +-7.795449203529205235e-07, +-7.807658982505389707e-07, +-7.819854097627472385e-07, +-7.832034531303387871e-07, +-7.844200265969676130e-07, +-7.856351284087908006e-07, +-7.868487568147108801e-07, +-7.880609100663088057e-07, +-7.892715864178572964e-07, +-7.904807841262575202e-07, +-7.916885014512801813e-07, +-7.928947366552117772e-07, +-7.940994880031009802e-07, +-7.953027537626906625e-07, +-7.965045322043678155e-07, +-7.977048216013970133e-07, +-7.989036202295779996e-07, +-8.001009263674780925e-07, +-8.012967382963729978e-07, +-8.024910543002536912e-07, +-8.036838726657729498e-07, +-8.048751916824655800e-07, +-8.060650096424232630e-07, +-8.072533248405174306e-07, +-8.084401355743414548e-07, +-8.096254401442199655e-07, +-8.108092368531517813e-07, +-8.119915240070340559e-07, +-8.131722999143323586e-07, +-8.143515628863061969e-07, +-8.155293112369547006e-07, +-8.167055432829609291e-07, +-8.178802573439241704e-07, +-8.190534517420183752e-07, +-8.202251248022274198e-07, +-8.213952748522816850e-07, +-8.225639002226643030e-07, +-8.237309992465666876e-07, +-8.248965702600903404e-07, +-8.260606116019495420e-07, +-8.272231216136632048e-07, +-8.283840986395205686e-07, +-8.295435410265770707e-07, +-8.307014471246008777e-07, +-8.318578152863554761e-07, +-8.330126438669906563e-07, +-8.341659312248165941e-07, +-8.353176757207083873e-07, +-8.364678757183162252e-07, +-8.376165295842391366e-07, +-8.387636356877497037e-07, +-8.399091924007516050e-07, +-8.410531980982564944e-07, +-8.421956511578541826e-07, +-8.433365499599335005e-07, +-8.444758928878887637e-07, +-8.456136783275364845e-07, +-8.467499046678735719e-07, +-8.478845703004847267e-07, +-8.490176736197572698e-07, +-8.501492130230479020e-07, +-8.512791869104162064e-07, +-8.524075936845762612e-07, +-8.535344317513682257e-07, +-8.546596995192448266e-07, +-8.557833953994695633e-07, +-8.569055178063455131e-07, +-8.580260651566664536e-07, +-8.591450358702262472e-07, +-8.602624283697462082e-07, +-8.613782410806138988e-07, +-8.624924724310492532e-07, +-8.636051208523184542e-07, +-8.647161847781533972e-07, +-8.658256626454910444e-07, +-8.669335528938960661e-07, +-8.680398539657795868e-07, +-8.691445643066071316e-07, +-8.702476823643670077e-07, +-8.713492065900608417e-07, +-8.724491354376384643e-07, +-8.735474673637524827e-07, +-8.746442008279539447e-07, +-8.757393342926539049e-07, +-8.768328662230715440e-07, +-8.779247950874412682e-07, +-8.790151193567018479e-07, +-8.801038375047119882e-07, +-8.811909480081922006e-07, +-8.822764493467351797e-07, +-8.833603400027497926e-07, +-8.844426184616813080e-07, +-8.855232832116793588e-07, +-8.866023327438349002e-07, +-8.876797655521133992e-07, +-8.887555801333575880e-07, +-8.898297749872469121e-07, +-8.909023486164953126e-07, +-8.919732995265493648e-07, +-8.930426262258042713e-07, +-8.941103272255336648e-07, +-8.951764010398625024e-07, +-8.962408461859548955e-07, +-8.973036611837248479e-07, +-8.983648445560334029e-07, +-8.994243948286438562e-07, +-9.004823105302196384e-07, +-9.015385901922785755e-07, +-9.025932323494022113e-07, +-9.036462355389154180e-07, +-9.046975983011182705e-07, +-9.057473191792134144e-07, +-9.067953967193215233e-07, +-9.078418294704321718e-07, +-9.088866159845961114e-07, +-9.099297548166393969e-07, +-9.109712445243550281e-07, +-9.120110836684623975e-07, +-9.130492708125600684e-07, +-9.140858045233165695e-07, +-9.151206833702320602e-07, +-9.161539059255947092e-07, +-9.171854707649165983e-07, +-9.182153764664493256e-07, +-9.192436216113822113e-07, +-9.202702047839865049e-07, +-9.212951245713326881e-07, +-9.223183795634735398e-07, +-9.233399683534208423e-07, +-9.243598895370725373e-07, +-9.253781417134183421e-07, +-9.263947234843113692e-07, +-9.274096334543993045e-07, +-9.284228702315783112e-07, +-9.294344324265121265e-07, +-9.304443186528082451e-07, +-9.314525275271899720e-07, +-9.324590576692431605e-07, +-9.334639077013630601e-07, +-9.344670762492026090e-07, +-9.354685619411954488e-07, +-9.364683634087293545e-07, +-9.374664792863604276e-07, +-9.384629082112852892e-07, +-9.394576488240002827e-07, +-9.404506997677899727e-07, +-9.414420596889165619e-07, +-9.424317272367535111e-07, +-9.434197010635726159e-07, +-9.444059798244750798e-07, +-9.453905621778388530e-07, +-9.463734467848261891e-07, +-9.473546323095984735e-07, +-9.483341174194856302e-07, +-9.493119007844795958e-07, +-9.502879810778972291e-07, +-9.512623569758571618e-07, +-9.522350271575199331e-07, +-9.532059903050034974e-07, +-9.541752451036031356e-07, +-9.551427902412912823e-07, +-9.561086244093693173e-07, +-9.570727463019529934e-07, +-9.580351546161707475e-07, +-9.589958480523307786e-07, +-9.599548253134892721e-07, +-9.609120851058368588e-07, +-9.618676261386763804e-07, +-9.628214471241810616e-07, +-9.637735467775893273e-07, +-9.647239238171565222e-07, +-9.656725769641066298e-07, +-9.666195049428249720e-07, +-9.675647064805822887e-07, +-9.685081803077164261e-07, +-9.694499251575863850e-07, +-9.703899397665843914e-07, +-9.713282228740844388e-07, +-9.722647732226188949e-07, +-9.731995895576229094e-07, +-9.741326706276112319e-07, +-9.750640151841282373e-07, +-9.759936219817536427e-07, +-9.769214897780656623e-07, +-9.778476173338089307e-07, +-9.787720034126399705e-07, +-9.796946467812949041e-07, +-9.806155462095672192e-07, +-9.815347004702397948e-07, +-9.824521083392750597e-07, +-9.833677685955625768e-07, +-9.842816800210664268e-07, +-9.851938414008228791e-07, +-9.861042515229077804e-07, +-9.870129091784062742e-07, +-9.879198131616052883e-07, +-9.888249622697046968e-07, +-9.897283553030089614e-07, +-9.906299910648835089e-07, +-9.915298683617598139e-07, +-9.924279860030858469e-07, +-9.933243428014997163e-07, +-9.942189375725829700e-07, +-9.951117691350264020e-07, +-9.960028363105902420e-07, +-9.968921379240588392e-07, +-9.977796728034187507e-07, +-9.986654397796495245e-07, +-9.995494376866654661e-07, +-1.000431665361720944e-06, +-1.001312121644983695e-06, +-1.002190805379687718e-06, +-1.003067715412286793e-06, +-1.003942850592176024e-06, +-1.004816209771889829e-06, +-1.005687791807039051e-06, +-1.006557595556273687e-06, +-1.007425619881478765e-06, +-1.008291863647516209e-06, +-1.009156325722232041e-06, +-1.010019004976808110e-06, +-1.010879900285347259e-06, +-1.011739010525056918e-06, +-1.012596334576356254e-06, +-1.013451871322687495e-06, +-1.014305619650456636e-06, +-1.015157578449424347e-06, +-1.016007746612281187e-06, +-1.016856123034824204e-06, +-1.017702706616117667e-06, +-1.018547496258048582e-06, +-1.019390490865880438e-06, +-1.020231689347844519e-06, +-1.021071090615262505e-06, +-1.021908693582692381e-06, +-1.022744497167731495e-06, +-1.023578500290947952e-06, +-1.024410701876290578e-06, +-1.025241100850642321e-06, +-1.026069696144016762e-06, +-1.026896486689697241e-06, +-1.027721471423811436e-06, +-1.028544649285880026e-06, +-1.029366019218389787e-06, +-1.030185580166989683e-06, +-1.031003331080451898e-06, +-1.031819270910673110e-06, +-1.032633398612640819e-06, +-1.033445713144585182e-06, +-1.034256213467745436e-06, +-1.035064898546495055e-06, +-1.035871767348493999e-06, +-1.036676818844294001e-06, +-1.037480052007699397e-06, +-1.038281465815740874e-06, +-1.039081059248456086e-06, +-1.039878831289054823e-06, +-1.040674780923893394e-06, +-1.041468907142427823e-06, +-1.042261208937361869e-06, +-1.043051685304437601e-06, +-1.043840335242534920e-06, +-1.044627157753829533e-06, +-1.045412151843418773e-06, +-1.046195316519647077e-06, +-1.046976650794097934e-06, +-1.047756153681381282e-06, +-1.048533824199294657e-06, +-1.049309661368787615e-06, +-1.050083664213967239e-06, +-1.050855831762045201e-06, +-1.051626163043506953e-06, +-1.052394657091880491e-06, +-1.053161312943883737e-06, +-1.053926129639395739e-06, +-1.054689106221407123e-06, +-1.055450241736200716e-06, +-1.056209535233083258e-06, +-1.056966985764583385e-06, +-1.057722592386369265e-06, +-1.058476354157290731e-06, +-1.059228270139316181e-06, +-1.059978339397694571e-06, +-1.060726561000725446e-06, +-1.061472934019924958e-06, +-1.062217457529967000e-06, +-1.062960130608658003e-06, +-1.063700952337093637e-06, +-1.064439921799422071e-06, +-1.065177038083008715e-06, +-1.065912300278384974e-06, +-1.066645707479269218e-06, +-1.067377258782507273e-06, +-1.068106953288234206e-06, +-1.068834790099693483e-06, +-1.069560768323196098e-06, +-1.070284887068447745e-06, +-1.071007145448189669e-06, +-1.071727542578349867e-06, +-1.072446077578146846e-06, +-1.073162749569869819e-06, +-1.073877557679029478e-06, +-1.074590501034322841e-06, +-1.075301578767596405e-06, +-1.076010790013992897e-06, +-1.076718133911768102e-06, +-1.077423609602266509e-06, +-1.078127216230229212e-06, +-1.078828952943446833e-06, +-1.079528818892906061e-06, +-1.080226813232885368e-06, +-1.080922935120758496e-06, +-1.081617183717118546e-06, +-1.082309558185764218e-06, +-1.083000057693689006e-06, +-1.083688681411040967e-06, +-1.084375428511309915e-06, +-1.085060298170939903e-06, +-1.085743289569818810e-06, +-1.086424401890895688e-06, +-1.087103634320310367e-06, +-1.087780986047533206e-06, +-1.088456456265140214e-06, +-1.089130044168826809e-06, +-1.089801748957689880e-06, +-1.090471569833895966e-06, +-1.091139506002820590e-06, +-1.091805556673171501e-06, +-1.092469721056644569e-06, +-1.093131998368369537e-06, +-1.093792387826546429e-06, +-1.094450888652590818e-06, +-1.095107500071265330e-06, +-1.095762221310338707e-06, +-1.096415051600888840e-06, +-1.097065990177283918e-06, +-1.097715036276999260e-06, +-1.098362189140721074e-06, +-1.099007448012489606e-06, +-1.099650812139357789e-06, +-1.100292280771698922e-06, +-1.100931853163163901e-06, +-1.101569528570521125e-06, +-1.102205306253804516e-06, +-1.102839185476251265e-06, +-1.103471165504296958e-06, +-1.104101245607686540e-06, +-1.104729425059294528e-06, +-1.105355703135216710e-06, +-1.105980079114899096e-06, +-1.106602552280822619e-06, +-1.107223121918782862e-06, +-1.107841787317867189e-06, +-1.108458547770293176e-06, +-1.109073402571534181e-06, +-1.109686351020289275e-06, +-1.110297392418458891e-06, +-1.110906526071256207e-06, +-1.111513751287041976e-06, +-1.112119067377424897e-06, +-1.112722473657253996e-06, +-1.113323969444598717e-06, +-1.113923554060737913e-06, +-1.114521226830267840e-06, +-1.115116987080921105e-06, +-1.115710834143712359e-06, +-1.116302767352866291e-06, +-1.116892786045859779e-06, +-1.117480889563362586e-06, +-1.118067077249373743e-06, +-1.118651348451040274e-06, +-1.119233702518766896e-06, +-1.119814138806210296e-06, +-1.120392656670221532e-06, +-1.120969255470983680e-06, +-1.121543934571829295e-06, +-1.122116693339351376e-06, +-1.122687531143400819e-06, +-1.123256447357050212e-06, +-1.123823441356587903e-06, +-1.124388512521642727e-06, +-1.124951660234983680e-06, +-1.125512883882653754e-06, +-1.126072182853940499e-06, +-1.126629556541373910e-06, +-1.127185004340701857e-06, +-1.127738525650993215e-06, +-1.128290119874483705e-06, +-1.128839786416683465e-06, +-1.129387524686341475e-06, +-1.129933334095427345e-06, +-1.130477214059242703e-06, +-1.131019163996274654e-06, +-1.131559183328179478e-06, +-1.132097271480020645e-06, +-1.132633427880014917e-06, +-1.133167651959605403e-06, +-1.133699943153586078e-06, +-1.134230300899899968e-06, +-1.134758724639779981e-06, +-1.135285213817708663e-06, +-1.135809767881408462e-06, +-1.136332386281838339e-06, +-1.136853068473307060e-06, +-1.137371813913195153e-06, +-1.137888622062311725e-06, +-1.138403492384618965e-06, +-1.138916424347332936e-06, +-1.139427417420988590e-06, +-1.139936471079347438e-06, +-1.140443584799320472e-06, +-1.140948758061242815e-06, +-1.141451990348597375e-06, +-1.141953281148120091e-06, +-1.142452629949903481e-06, +-1.142950036247122841e-06, +-1.143445499536375901e-06, +-1.143939019317431050e-06, +-1.144430595093302293e-06, +-1.144920226370361275e-06, +-1.145407912658081476e-06, +-1.145893653469283003e-06, +-1.146377448320080284e-06, +-1.146859296729773228e-06, +-1.147339198220925150e-06, +-1.147817152319458274e-06, +-1.148293158554387764e-06, +-1.148767216458084519e-06, +-1.149239325566209734e-06, +-1.149709485417619616e-06, +-1.150177695554446482e-06, +-1.150643955522100665e-06, +-1.151108264869203814e-06, +-1.151570623147729287e-06, +-1.152031029912824908e-06, +-1.152489484722907204e-06, +-1.152945987139749066e-06, +-1.153400536728236871e-06, +-1.153853133056587527e-06, +-1.154303775696343181e-06, +-1.154752464222213461e-06, +-1.155199198212212270e-06, +-1.155643977247602942e-06, +-1.156086800912890616e-06, +-1.156527668795917108e-06, +-1.156966580487710134e-06, +-1.157403535582592371e-06, +-1.157838533678144394e-06, +-1.158271574375201291e-06, +-1.158702657277854570e-06, +-1.159131781993510811e-06, +-1.159558948132782192e-06, +-1.159984155309565898e-06, +-1.160407403141013835e-06, +-1.160828691247557835e-06, +-1.161248019252857559e-06, +-1.161665386783904049e-06, +-1.162080793470893096e-06, +-1.162494238947302745e-06, +-1.162905722849869364e-06, +-1.163315244818575998e-06, +-1.163722804496744061e-06, +-1.164128401530880235e-06, +-1.164532035570784252e-06, +-1.164933706269518618e-06, +-1.165333413283412419e-06, +-1.165731156272028292e-06, +-1.166126934898271687e-06, +-1.166520748828243063e-06, +-1.166912597731321956e-06, +-1.167302481280162954e-06, +-1.167690399150677699e-06, +-1.168076351022024510e-06, +-1.168460336576687794e-06, +-1.168842355500357763e-06, +-1.169222407482002226e-06, +-1.169600492213859596e-06, +-1.169976609391418563e-06, +-1.170350758713478871e-06, +-1.170722939882071270e-06, +-1.171093152602433164e-06, +-1.171461396583183737e-06, +-1.171827671536125111e-06, +-1.172191977176332131e-06, +-1.172554313222194083e-06, +-1.172914679395308389e-06, +-1.173273075420556630e-06, +-1.173629501026086548e-06, +-1.173983955943285571e-06, +-1.174336439906867215e-06, +-1.174686952654765203e-06, +-1.175035493928130080e-06, +-1.175382063471482732e-06, +-1.175726661032532489e-06, +-1.176069286362252512e-06, +-1.176409939214953484e-06, +-1.176748619348101708e-06, +-1.177085326522469244e-06, +-1.177420060502156995e-06, +-1.177752821054439056e-06, +-1.178083607949874956e-06, +-1.178412420962353696e-06, +-1.178739259868895547e-06, +-1.179064124449913358e-06, +-1.179387014489007363e-06, +-1.179707929773049250e-06, +-1.180026870092233405e-06, +-1.180343835239911741e-06, +-1.180658825012751881e-06, +-1.180971839210722759e-06, +-1.181282877636989166e-06, +-1.181591940097992637e-06, +-1.181899026403486609e-06, +-1.182204136366380984e-06, +-1.182507269802965540e-06, +-1.182808426532706428e-06, +-1.183107606378359462e-06, +-1.183404809165936874e-06, +-1.183700034724709011e-06, +-1.183993282887188870e-06, +-1.184284553489201774e-06, +-1.184573846369781604e-06, +-1.184861161371212308e-06, +-1.185146498339115990e-06, +-1.185429857122256823e-06, +-1.185711237572723797e-06, +-1.185990639545882648e-06, +-1.186268062900307460e-06, +-1.186543507497859442e-06, +-1.186816973203640551e-06, +-1.187088459886002173e-06, +-1.187357967416593193e-06, +-1.187625495670276353e-06, +-1.187891044525163822e-06, +-1.188154613862688141e-06, +-1.188416203567446999e-06, +-1.188675813527335587e-06, +-1.188933443633529864e-06, +-1.189189093780418162e-06, +-1.189442763865658149e-06, +-1.189694453790156076e-06, +-1.189944163458071434e-06, +-1.190191892776805736e-06, +-1.190437641657056298e-06, +-1.190681410012723280e-06, +-1.190923197760974058e-06, +-1.191163004822226712e-06, +-1.191400831120137526e-06, +-1.191636676581653297e-06, +-1.191870541136925359e-06, +-1.192102424719376710e-06, +-1.192332327265671732e-06, +-1.192560248715725509e-06, +-1.192786189012686669e-06, +-1.193010148102994357e-06, +-1.193232125936288439e-06, +-1.193452122465473884e-06, +-1.193670137646706149e-06, +-1.193886171439363652e-06, +-1.194100223806115532e-06, +-1.194312294712831233e-06, +-1.194522384128645932e-06, +-1.194730492025929839e-06, +-1.194936618380303439e-06, +-1.195140763170611026e-06, +-1.195342926378987827e-06, +-1.195543107990777845e-06, +-1.195741307994524957e-06, +-1.195937526382101882e-06, +-1.196131763148557291e-06, +-1.196324018292192881e-06, +-1.196514291814573758e-06, +-1.196702583720486293e-06, +-1.196888894017945747e-06, +-1.197073222718224011e-06, +-1.197255569835801326e-06, +-1.197435935388445265e-06, +-1.197614319397127306e-06, +-1.197790721886019229e-06, +-1.197965142882605346e-06, +-1.198137582417556509e-06, +-1.198308040524768223e-06, +-1.198476517241424388e-06, +-1.198643012607863042e-06, +-1.198807526667724805e-06, +-1.198970059467847635e-06, +-1.199130611058303671e-06, +-1.199289181492392251e-06, +-1.199445770826676964e-06, +-1.199600379120886550e-06, +-1.199753006438044708e-06, +-1.199903652844361039e-06, +-1.200052318409280808e-06, +-1.200199003205504219e-06, +-1.200343707308909118e-06, +-1.200486430798627018e-06, +-1.200627173757027425e-06, +-1.200765936269677820e-06, +-1.200902718425376266e-06, +-1.201037520316173434e-06, +-1.201170342037276674e-06, +-1.201301183687183636e-06, +-1.201430045367584013e-06, +-1.201556927183379236e-06, +-1.201681829242701107e-06, +-1.201804751656904177e-06, +-1.201925694540539701e-06, +-1.202044658011417466e-06, +-1.202161642190525331e-06, +-1.202276647202078136e-06, +-1.202389673173536127e-06, +-1.202500720235518774e-06, +-1.202609788521888834e-06, +-1.202716878169740919e-06, +-1.202821989319355120e-06, +-1.202925122114225595e-06, +-1.203026276701075602e-06, +-1.203125453229813244e-06, +-1.203222651853584196e-06, +-1.203317872728725752e-06, +-1.203411116014780592e-06, +-1.203502381874508636e-06, +-1.203591670473869475e-06, +-1.203678981982017069e-06, +-1.203764316571356717e-06, +-1.203847674417443197e-06, +-1.203929055699063142e-06, +-1.204008460598195861e-06, +-1.204085889300029017e-06, +-1.204161341992939347e-06, +-1.204234818868526128e-06, +-1.204306320121568611e-06, +-1.204375845950049946e-06, +-1.204443396555149776e-06, +-1.204508972141241481e-06, +-1.204572572915912295e-06, +-1.204634199089924769e-06, +-1.204693850877237096e-06, +-1.204751528495008617e-06, +-1.204807232163591779e-06, +-1.204860962106519422e-06, +-1.204912718550532102e-06, +-1.204962501725549289e-06, +-1.205010311864676993e-06, +-1.205056149204220040e-06, +-1.205100013983650314e-06, +-1.205141906445661391e-06, +-1.205181826836096748e-06, +-1.205219775404003554e-06, +-1.205255752401604502e-06, +-1.205289758084307979e-06, +-1.205321792710703615e-06, +-1.205351856542565035e-06, +-1.205379949844850711e-06, +-1.205406072885674945e-06, +-1.205430225936355097e-06, +-1.205452409271378121e-06, +-1.205472623168392313e-06, +-1.205490867908254740e-06, +-1.205507143774955432e-06, +-1.205521451055691073e-06, +-1.205533790040814818e-06, +-1.205544161023848994e-06, +-1.205552564301500983e-06, +-1.205559000173639083e-06, +-1.205563468943279803e-06, +-1.205565970916642281e-06, +-1.205566506403087091e-06, +-1.205565075715152872e-06, +-1.205561679168545322e-06, +-1.205556317082109029e-06, +-1.205548989777882955e-06, +-1.205539697581044743e-06, +-1.205528440819942691e-06, +-1.205515219826071190e-06, +-1.205500034934111169e-06, +-1.205482886481865932e-06, +-1.205463774810321508e-06, +-1.205442700263603880e-06, +-1.205419663188993378e-06, +-1.205394663936939509e-06, +-1.205367702861018601e-06, +-1.205338780317967685e-06, +-1.205307896667690002e-06, +-1.205275052273215825e-06, +-1.205240247500727028e-06, +-1.205203482719560891e-06, +-1.205164758302185331e-06, +-1.205124074624226214e-06, +-1.205081432064441944e-06, +-1.205036831004745067e-06, +-1.204990271830178126e-06, +-1.204941754928926579e-06, +-1.204891280692308637e-06, +-1.204838849514790720e-06, +-1.204784461793968611e-06, +-1.204728117930575715e-06, +-1.204669818328473741e-06, +-1.204609563394666255e-06, +-1.204547353539277505e-06, +-1.204483189175574019e-06, +-1.204417070719941100e-06, +-1.204348998591898920e-06, +-1.204278973214091721e-06, +-1.204206995012281885e-06, +-1.204133064415374496e-06, +-1.204057181855381980e-06, +-1.203979347767445280e-06, +-1.203899562589824537e-06, +-1.203817826763897184e-06, +-1.203734140734165359e-06, +-1.203648504948240660e-06, +-1.203560919856855787e-06, +-1.203471385913857981e-06, +-1.203379903576207330e-06, +-1.203286473303974437e-06, +-1.203191095560341694e-06, +-1.203093770811600102e-06, +-1.202994499527156688e-06, +-1.202893282179506545e-06, +-1.202790119244277732e-06, +-1.202685011200180871e-06, +-1.202577958529040702e-06, +-1.202468961715780834e-06, +-1.202358021248427771e-06, +-1.202245137618099685e-06, +-1.202130311319020185e-06, +-1.202013542848515982e-06, +-1.201894832706997202e-06, +-1.201774181397972627e-06, +-1.201651589428048428e-06, +-1.201527057306911646e-06, +-1.201400585547350734e-06, +-1.201272174665239250e-06, +-1.201141825179534162e-06, +-1.201009537612287077e-06, +-1.200875312488627081e-06, +-1.200739150336773660e-06, +-1.200601051688025055e-06, +-1.200461017076754235e-06, +-1.200319047040420758e-06, +-1.200175142119564839e-06, +-1.200029302857796978e-06, +-1.199881529801810026e-06, +-1.199731823501368601e-06, +-1.199580184509295319e-06, +-1.199426613381509764e-06, +-1.199271110676980834e-06, +-1.199113676957758724e-06, +-1.198954312788952054e-06, +-1.198793018738740995e-06, +-1.198629795378360543e-06, +-1.198464643282129953e-06, +-1.198297563027400858e-06, +-1.198128555194605126e-06, +-1.197957620367229027e-06, +-1.197784759131800524e-06, +-1.197609972077937771e-06, +-1.197433259798277108e-06, +-1.197254622888526433e-06, +-1.197074061947448887e-06, +-1.196891577576832794e-06, +-1.196707170381537605e-06, +-1.196520840969470183e-06, +-1.196332589951569559e-06, +-1.196142417941826200e-06, +-1.195950325557277137e-06, +-1.195756313417979076e-06, +-1.195560382147057522e-06, +-1.195362532370663793e-06, +-1.195162764717973327e-06, +-1.194961079821207704e-06, +-1.194757478315633377e-06, +-1.194551960839518047e-06, +-1.194344528034198214e-06, +-1.194135180544000620e-06, +-1.193923919016308946e-06, +-1.193710744101518075e-06, +-1.193495656453035153e-06, +-1.193278656727326384e-06, +-1.193059745583856256e-06, +-1.192838923685093473e-06, +-1.192616191696550127e-06, +-1.192391550286745067e-06, +-1.192165000127213001e-06, +-1.191936541892501958e-06, +-1.191706176260159096e-06, +-1.191473903910764591e-06, +-1.191239725527896264e-06, +-1.191003641798129166e-06, +-1.190765653411058441e-06, +-1.190525761059282813e-06, +-1.190283965438381291e-06, +-1.190040267246949594e-06, +-1.189794667186596756e-06, +-1.189547165961904056e-06, +-1.189297764280453592e-06, +-1.189046462852839517e-06, +-1.188793262392620385e-06, +-1.188538163616360234e-06, +-1.188281167243607412e-06, +-1.188022273996911940e-06, +-1.187761484601801794e-06, +-1.187498799786769779e-06, +-1.187234220283309736e-06, +-1.186967746825899816e-06, +-1.186699380151985325e-06, +-1.186429121001997573e-06, +-1.186156970119342650e-06, +-1.185882928250384695e-06, +-1.185606996144481476e-06, +-1.185329174553951985e-06, +-1.185049464234084492e-06, +-1.184767865943130607e-06, +-1.184484380442325405e-06, +-1.184199008495829613e-06, +-1.183911750870803934e-06, +-1.183622608337351244e-06, +-1.183331581668538396e-06, +-1.183038671640394741e-06, +-1.182743879031879095e-06, +-1.182447204624929287e-06, +-1.182148649204425317e-06, +-1.181848213558196129e-06, +-1.181545898477029141e-06, +-1.181241704754652671e-06, +-1.180935633187718144e-06, +-1.180627684575844570e-06, +-1.180317859721589313e-06, +-1.180006159430440683e-06, +-1.179692584510825983e-06, +-1.179377135774126545e-06, +-1.179059814034607210e-06, +-1.178740620109538517e-06, +-1.178419554819053553e-06, +-1.178096618986243244e-06, +-1.177771813437142801e-06, +-1.177445139000660786e-06, +-1.177116596508669313e-06, +-1.176786186795982880e-06, +-1.176453910700271120e-06, +-1.176119769062160236e-06, +-1.175783762725203774e-06, +-1.175445892535814866e-06, +-1.175106159343397303e-06, +-1.174764564000189264e-06, +-1.174421107361387397e-06, +-1.174075790285082455e-06, +-1.173728613632245099e-06, +-1.173379578266765291e-06, +-1.173028685055469445e-06, +-1.172675934868018358e-06, +-1.172321328577007372e-06, +-1.171964867057935459e-06, +-1.171606551189145928e-06, +-1.171246381851938231e-06, +-1.170884359930470136e-06, +-1.170520486311764708e-06, +-1.170154761885759021e-06, +-1.169787187545282762e-06, +-1.169417764185990053e-06, +-1.169046492706510217e-06, +-1.168673374008254024e-06, +-1.168298408995566787e-06, +-1.167921598575660391e-06, +-1.167542943658570518e-06, +-1.167162445157279254e-06, +-1.166780103987596291e-06, +-1.166395921068184130e-06, +-1.166009897320587935e-06, +-1.165622033669215844e-06, +-1.165232331041333035e-06, +-1.164840790367074010e-06, +-1.164447412579390504e-06, +-1.164052198614130257e-06, +-1.163655149409980686e-06, +-1.163256265908478417e-06, +-1.162855549054003776e-06, +-1.162452999793803659e-06, +-1.162048619077924410e-06, +-1.161642407859296304e-06, +-1.161234367093676803e-06, +-1.160824497739658811e-06, +-1.160412800758681685e-06, +-1.159999277115020651e-06, +-1.159583927775743176e-06, +-1.159166753710798547e-06, +-1.158747755892935071e-06, +-1.158326935297739674e-06, +-1.157904292903628794e-06, +-1.157479829691806034e-06, +-1.157053546646335849e-06, +-1.156625444754080443e-06, +-1.156195525004723701e-06, +-1.155763788390760383e-06, +-1.155330235907510744e-06, +-1.154894868553062927e-06, +-1.154457687328353648e-06, +-1.154018693237116316e-06, +-1.153577887285883356e-06, +-1.153135270483986853e-06, +-1.152690843843577392e-06, +-1.152244608379551427e-06, +-1.151796565109650596e-06, +-1.151346715054388877e-06, +-1.150895059237083290e-06, +-1.150441598683838865e-06, +-1.149986334423510100e-06, +-1.149529267487765761e-06, +-1.149070398911102010e-06, +-1.148609729730699255e-06, +-1.148147260986579489e-06, +-1.147682993721548691e-06, +-1.147216928981129061e-06, +-1.146749067813662998e-06, +-1.146279411270247449e-06, +-1.145807960404752761e-06, +-1.145334716273819289e-06, +-1.144859679936808695e-06, +-1.144382852455870859e-06, +-1.143904234895972683e-06, +-1.143423828324729953e-06, +-1.142941633812578860e-06, +-1.142457652432711632e-06, +-1.141971885261018718e-06, +-1.141484333376167355e-06, +-1.140994997859624644e-06, +-1.140503879795503821e-06, +-1.140010980270717987e-06, +-1.139516300374925476e-06, +-1.139019841200443038e-06, +-1.138521603842457379e-06, +-1.138021589398753058e-06, +-1.137519798969917251e-06, +-1.137016233659263736e-06, +-1.136510894572786725e-06, +-1.136003782819226936e-06, +-1.135494899510111824e-06, +-1.134984245759567329e-06, +-1.134471822684516294e-06, +-1.133957631404590588e-06, +-1.133441673042059948e-06, +-1.132923948722043320e-06, +-1.132404459572223832e-06, +-1.131883206723071771e-06, +-1.131360191307737226e-06, +-1.130835414462089686e-06, +-1.130308877324623171e-06, +-1.129780581036656766e-06, +-1.129250526742080939e-06, +-1.128718715587537742e-06, +-1.128185148722369359e-06, +-1.127649827298518151e-06, +-1.127112752470738418e-06, +-1.126573925396398190e-06, +-1.126033347235511420e-06, +-1.125491019150820773e-06, +-1.124946942307735166e-06, +-1.124401117874332090e-06, +-1.123853547021373497e-06, +-1.123304230922238884e-06, +-1.122753170753019519e-06, +-1.122200367692486053e-06, +-1.121645822921972679e-06, +-1.121089537625612821e-06, +-1.120531512990119332e-06, +-1.119971750204824092e-06, +-1.119410250461771178e-06, +-1.118847014955631741e-06, +-1.118282044883724120e-06, +-1.117715341446017447e-06, +-1.117146905845129523e-06, +-1.116576739286267106e-06, +-1.116004842977336448e-06, +-1.115431218128848218e-06, +-1.114855865953953282e-06, +-1.114278787668453510e-06, +-1.113699984490708178e-06, +-1.113119457641768429e-06, +-1.112537208345293634e-06, +-1.111953237827556051e-06, +-1.111367547317445688e-06, +-1.110780138046494031e-06, +-1.110191011248773449e-06, +-1.109600168161037385e-06, +-1.109007610022623365e-06, +-1.108413338075478837e-06, +-1.107817353564173027e-06, +-1.107219657735804827e-06, +-1.106620251840148266e-06, +-1.106019137129542406e-06, +-1.105416314858919497e-06, +-1.104811786285813029e-06, +-1.104205552670351375e-06, +-1.103597615275195538e-06, +-1.102987975365628090e-06, +-1.102376634209583024e-06, +-1.101763593077431462e-06, +-1.101148853242221994e-06, +-1.100532415979561887e-06, +-1.099914282567571766e-06, +-1.099294454287008011e-06, +-1.098672932421171276e-06, +-1.098049718255918986e-06, +-1.097424813079696673e-06, +-1.096798218183442900e-06, +-1.096169934860686033e-06, +-1.095539964407589981e-06, +-1.094908308122733120e-06, +-1.094274967307318571e-06, +-1.093639943265108762e-06, +-1.093003237302334166e-06, +-1.092364850727836658e-06, +-1.091724784852974222e-06, +-1.091083040991636628e-06, +-1.090439620460250294e-06, +-1.089794524577800315e-06, +-1.089147754665694298e-06, +-1.088499312048039346e-06, +-1.087849198051294138e-06, +-1.087197414004535104e-06, +-1.086543961239357967e-06, +-1.085888841089795361e-06, +-1.085232054892448336e-06, +-1.084573603986499275e-06, +-1.083913489713483195e-06, +-1.083251713417550962e-06, +-1.082588276445343508e-06, +-1.081923180145907974e-06, +-1.081256425870964312e-06, +-1.080588014974542758e-06, +-1.079917948813280927e-06, +-1.079246228746266475e-06, +-1.078572856135080725e-06, +-1.077897832343782146e-06, +-1.077221158738947016e-06, +-1.076542836689538971e-06, +-1.075862867567082653e-06, +-1.075181252745583029e-06, +-1.074497993601398123e-06, +-1.073813091513517901e-06, +-1.073126547863314822e-06, +-1.072438364034579413e-06, +-1.071748541413633346e-06, +-1.071057081389229913e-06, +-1.070363985352583460e-06, +-1.069669254697378917e-06, +-1.068972890819678201e-06, +-1.068274895118060397e-06, +-1.067575268993559081e-06, +-1.066874013849531240e-06, +-1.066171131091942724e-06, +-1.065466622129112014e-06, +-1.064760488371733310e-06, +-1.064052731233018826e-06, +-1.063343352128573647e-06, +-1.062632352476433205e-06, +-1.061919733697054812e-06, +-1.061205497213340529e-06, +-1.060489644450526416e-06, +-1.059772176836353210e-06, +-1.059053095800937786e-06, +-1.058332402776806616e-06, +-1.057610099198920758e-06, +-1.056886186504564469e-06, +-1.056160666133498093e-06, +-1.055433539527861293e-06, +-1.054704808132181303e-06, +-1.053974473393385004e-06, +-1.053242536760814166e-06, +-1.052508999686106866e-06, +-1.051773863623377694e-06, +-1.051037130029091755e-06, +-1.050298800362089237e-06, +-1.049558876083621616e-06, +-1.048817358657222276e-06, +-1.048074249548883116e-06, +-1.047329550226935536e-06, +-1.046583262162072045e-06, +-1.045835386827350487e-06, +-1.045085925698215437e-06, +-1.044334880252375798e-06, +-1.043582251969965106e-06, +-1.042828042333543647e-06, +-1.042072252827848792e-06, +-1.041314884940079179e-06, +-1.040555940159776339e-06, +-1.039795419978731098e-06, +-1.039033325891160186e-06, +-1.038269659393585743e-06, +-1.037504421984864123e-06, +-1.036737615166203252e-06, +-1.035969240441051036e-06, +-1.035199299315235756e-06, +-1.034427793296997829e-06, +-1.033654723896711352e-06, +-1.032880092627180978e-06, +-1.032103901003539221e-06, +-1.031326150543117494e-06, +-1.030546842765651298e-06, +-1.029765979193148514e-06, +-1.028983561349917563e-06, +-1.028199590762561902e-06, +-1.027414068960009672e-06, +-1.026626997473356356e-06, +-1.025838377836207199e-06, +-1.025048211584231452e-06, +-1.024256500255504998e-06, +-1.023463245390384568e-06, +-1.022668448531408850e-06, +-1.021872111223453498e-06, +-1.021074235013760349e-06, +-1.020274821451651766e-06, +-1.019473872088838324e-06, +-1.018671388479295772e-06, +-1.017867372179128666e-06, +-1.017061824746925275e-06, +-1.016254747743298489e-06, +-1.015446142731246863e-06, +-1.014636011276011477e-06, +-1.013824354944952894e-06, +-1.013011175307863935e-06, +-1.012196473936680627e-06, +-1.011380252405511421e-06, +-1.010562512290794111e-06, +-1.009743255171197789e-06, +-1.008922482627480963e-06, +-1.008100196242839903e-06, +-1.007276397602577025e-06, +-1.006451088294153200e-06, +-1.005624269907345507e-06, +-1.004795944034111077e-06, +-1.003966112268609329e-06, +-1.003134776207245163e-06, +-1.002301937448530264e-06, +-1.001467597593270292e-06, +-1.000631758244475101e-06, +-9.997944210072083870e-07, +-9.989555874889315832e-07, +-9.981152592991913079e-07, +-9.972734380496574785e-07, +-9.964301253542715431e-07, +-9.955853228291416602e-07, +-9.947390320925352870e-07, +-9.938912547649331777e-07, +-9.930419924688836939e-07, +-9.921912468292094809e-07, +-9.913390194728588129e-07, +-9.904853120289403217e-07, +-9.896301261287323141e-07, +-9.887734634056910304e-07, +-9.879153254953259186e-07, +-9.870557140354012284e-07, +-9.861946306657934982e-07, +-9.853320770285214123e-07, +-9.844680547677400841e-07, +-9.836025655297891251e-07, +-9.827356109630266259e-07, +-9.818671927180515033e-07, +-9.809973124475554802e-07, +-9.801259718063556974e-07, +-9.792531724514262647e-07, +-9.783789160417553248e-07, +-9.775032042385517290e-07, +-9.766260387051084528e-07, +-9.757474211068203845e-07, +-9.748673531111949122e-07, +-9.739858363878762765e-07, +-9.731028726085030570e-07, +-9.722184634469178131e-07, +-9.713326105790258411e-07, +-9.704453156828218560e-07, +-9.695565804383887206e-07, +-9.686664065279334447e-07, +-9.677747956356313307e-07, +-9.668817494478517083e-07, +-9.659872696530010215e-07, +-9.650913579415577683e-07, +-9.641940160061112531e-07, +-9.632952455412053088e-07, +-9.623950482435206206e-07, +-9.614934258119115721e-07, +-9.605903799470642553e-07, +-9.596859123518691660e-07, +-9.587800247312710662e-07, +-9.578727187921465886e-07, +-9.569639962435361113e-07, +-9.560538587964781632e-07, +-9.551423081640541051e-07, +-9.542293460613798708e-07, +-9.533149742056403778e-07, +-9.523991943158992630e-07, +-9.514820081135114930e-07, +-9.505634173215986276e-07, +-9.496434236654394079e-07, +-9.487220288723377248e-07, +-9.477992346714979992e-07, +-9.468750427942087768e-07, +-9.459494549738804207e-07, +-9.450224729456988869e-07, +-9.440940984470023362e-07, +-9.431643332171379858e-07, +-9.422331789972795732e-07, +-9.413006375308665436e-07, +-9.403667105630635363e-07, +-9.394313998411671726e-07, +-9.384947071144576131e-07, +-9.375566341340394218e-07, +-9.366171826532319416e-07, +-9.356763544272043300e-07, +-9.347341512130148393e-07, +-9.337905747698103995e-07, +-9.328456268587000922e-07, +-9.318993092425931559e-07, +-9.309516236866324549e-07, +-9.300025719576376611e-07, +-9.290521558245425348e-07, +-9.281003770581771314e-07, +-9.271472374313265640e-07, +-9.261927387187083456e-07, +-9.252368826970192936e-07, +-9.242796711447733225e-07, +-9.233211058425312023e-07, +-9.223611885727894905e-07, +-9.213999211198001148e-07, +-9.204373052699780074e-07, +-9.194733428115393159e-07, +-9.185080355345329556e-07, +-9.175413852310417796e-07, +-9.165733936950109488e-07, +-9.156040627222997068e-07, +-9.146333941107011793e-07, +-9.136613896597935081e-07, +-9.126880511711642088e-07, +-9.117133804482547406e-07, +-9.107373792963976694e-07, +-9.097600495228106329e-07, +-9.087813929366279987e-07, +-9.078014113487548567e-07, +-9.068201065720807889e-07, +-9.058374804213346038e-07, +-9.048535347131084763e-07, +-9.038682712658682182e-07, +-9.028816918999771010e-07, +-9.018937984375343902e-07, +-9.009045927026247966e-07, +-8.999140765211418699e-07, +-8.989222517208241032e-07, +-8.979291201313054378e-07, +-8.969346835839344214e-07, +-8.959389439120215418e-07, +-8.949419029506747963e-07, +-8.939435625368338915e-07, +-8.929439245092754303e-07, +-8.919429907086325003e-07, +-8.909407629772473956e-07, +-8.899372431593987279e-07, +-8.889324331011431366e-07, +-8.879263346503524529e-07, +-8.869189496567052291e-07, +-8.859102799717334317e-07, +-8.849003274486411759e-07, +-8.838890939425605300e-07, +-8.828765813103798848e-07, +-8.818627914107787885e-07, +-8.808477261042682860e-07, +-8.798313872530225716e-07, +-8.788137767210819589e-07, +-8.777948963743943856e-07, +-8.767747480804278961e-07, +-8.757533337085973339e-07, +-8.747306551300843475e-07, +-8.737067142177118175e-07, +-8.726815128461926728e-07, +-8.716550528919527545e-07, +-8.706273362331862968e-07, +-8.695983647498731854e-07, +-8.685681403236165384e-07, +-8.675366648378538300e-07, +-8.665039401778960652e-07, +-8.654699682305297805e-07, +-8.644347508844518892e-07, +-8.633982900301026043e-07, +-8.623605875594658565e-07, +-8.613216453665168449e-07, +-8.602814653468264730e-07, +-8.592400493975896180e-07, +-8.581973994178594416e-07, +-8.571535173083935476e-07, +-8.561084049714821399e-07, +-8.550620643114404665e-07, +-8.540144972339669804e-07, +-8.529657056466421355e-07, +-8.519156914587375933e-07, +-8.508644565810431097e-07, +-8.498120029263005342e-07, +-8.487583324088072923e-07, +-8.477034469444585251e-07, +-8.466473484509531308e-07, +-8.455900388476671324e-07, +-8.445315200554756957e-07, +-8.434717939972296905e-07, +-8.424108625971324869e-07, +-8.413487277812311276e-07, +-8.402853914771854065e-07, +-8.392208556143102194e-07, +-8.381551221235702710e-07, +-8.370881929376223198e-07, +-8.360200699906393134e-07, +-8.349507552185632280e-07, +-8.338802505589746246e-07, +-8.328085579509128668e-07, +-8.317356793353168958e-07, +-8.306616166546149480e-07, +-8.295863718527723072e-07, +-8.285099468755080390e-07, +-8.274323436701155255e-07, +-8.263535641854997348e-07, +-8.252736103722199964e-07, +-8.241924841823132885e-07, +-8.231101875695494073e-07, +-8.220267224892988293e-07, +-8.209420908983485877e-07, +-8.198562947553499295e-07, +-8.187693360204089865e-07, +-8.176812166551254214e-07, +-8.165919386228172092e-07, +-8.155015038883419130e-07, +-8.144099144181241069e-07, +-8.133171721801676582e-07, +-8.122232791440844198e-07, +-8.111282372809215426e-07, +-8.100320485634184429e-07, +-8.089347149658280793e-07, +-8.078362384639665037e-07, +-8.067366210352370019e-07, +-8.056358646584579342e-07, +-8.045339713141266918e-07, +-8.034309429842380086e-07, +-8.023267816523237712e-07, +-8.012214893034480433e-07, +-8.001150679242561930e-07, +-7.990075195027764757e-07, +-7.978988460286999783e-07, +-7.967890494931950131e-07, +-7.956781318889414227e-07, +-7.945660952101833079e-07, +-7.934529414525297631e-07, +-7.923386726132378910e-07, +-7.912232906910231734e-07, +-7.901067976860971641e-07, +-7.889891956001649476e-07, +-7.878704864364728909e-07, +-7.867506721996139315e-07, +-7.856297548957606175e-07, +-7.845077365327050239e-07, +-7.833846191194400010e-07, +-7.822604046666175248e-07, +-7.811350951863593850e-07, +-7.800086926921130840e-07, +-7.788811991989342163e-07, +-7.777526167232881566e-07, +-7.766229472830983411e-07, +-7.754921928977862896e-07, +-7.743603555880870584e-07, +-7.732274373762696802e-07, +-7.720934402861931746e-07, +-7.709583663428641849e-07, +-7.698222175729208458e-07, +-7.686849960044286483e-07, +-7.675467036666914457e-07, +-7.664073425907787313e-07, +-7.652669148088373185e-07, +-7.641254223546259246e-07, +-7.629828672632717541e-07, +-7.618392515713564734e-07, +-7.606945773166806290e-07, +-7.595488465387793850e-07, +-7.584020612782576025e-07, +-7.572542235773064232e-07, +-7.561053354795042173e-07, +-7.549553990296339416e-07, +-7.538044162741458314e-07, +-7.526523892607356839e-07, +-7.514993200383700575e-07, +-7.503452106575446168e-07, +-7.491900631701253142e-07, +-7.480338796291459484e-07, +-7.468766620893498425e-07, +-7.457184126064980299e-07, +-7.445591332379030962e-07, +-7.433988260421819522e-07, +-7.422374930793010437e-07, +-7.410751364105765637e-07, +-7.399117580987130979e-07, +-7.387473602076046782e-07, +-7.375819448026321969e-07, +-7.364155139505060702e-07, +-7.352480697190694094e-07, +-7.340796141777823115e-07, +-7.329101493972808730e-07, +-7.317396774494208118e-07, +-7.305682004075173895e-07, +-7.293957203461464647e-07, +-7.282222393411918205e-07, +-7.270477594698879399e-07, +-7.258722828106222239e-07, +-7.246958114432221350e-07, +-7.235183474487663095e-07, +-7.223398929096119799e-07, +-7.211604499094072569e-07, +-7.199800205331301988e-07, +-7.187986068668846765e-07, +-7.176162109982004351e-07, +-7.164328350158257823e-07, +-7.152484810097796815e-07, +-7.140631510713419040e-07, +-7.128768472930992995e-07, +-7.116895717687483303e-07, +-7.105013265933846517e-07, +-7.093121138633051172e-07, +-7.081219356760504485e-07, +-7.069307941304508688e-07, +-7.057386913264287447e-07, +-7.045456293652878476e-07, +-7.033516103495118655e-07, +-7.021566363828102492e-07, +-7.009607095701209650e-07, +-6.997638320176455404e-07, +-6.985660058326525528e-07, +-6.973672331237761025e-07, +-6.961675160008077602e-07, +-6.949668565747396603e-07, +-6.937652569578233689e-07, +-6.925627192633470089e-07, +-6.913592456059541677e-07, +-6.901548381014211273e-07, +-6.889494988667126631e-07, +-6.877432300199793964e-07, +-6.865360336806002521e-07, +-6.853279119689761006e-07, +-6.841188670067810086e-07, +-6.829089009170157080e-07, +-6.816980158235323049e-07, +-6.804862138515509693e-07, +-6.792734971274552711e-07, +-6.780598677786203382e-07, +-6.768453279337278466e-07, +-6.756298797225570154e-07, +-6.744135252760262171e-07, +-6.731962667262472936e-07, +-6.719781062063113627e-07, +-6.707590458505447283e-07, +-6.695390877945583252e-07, +-6.683182341747722168e-07, +-6.670964871289426607e-07, +-6.658738487959331985e-07, +-6.646503213155184616e-07, +-6.634259068289494596e-07, +-6.622006074782084037e-07, +-6.609744254066030055e-07, +-6.597473627584745685e-07, +-6.585194216793191141e-07, +-6.572906043155093425e-07, +-6.560609128148769686e-07, +-6.548303493259655321e-07, +-6.535989159986115688e-07, +-6.523666149837313697e-07, +-6.511334484330978938e-07, +-6.498994184998725987e-07, +-6.486645273381198792e-07, +-6.474287771028658302e-07, +-6.461921699503502389e-07, +-6.449547080378664955e-07, +-6.437163935235470823e-07, +-6.424772285669444266e-07, +-6.412372153282818055e-07, +-6.399963559690319757e-07, +-6.387546526517067918e-07, +-6.375121075396351771e-07, +-6.362687227974932613e-07, +-6.350245005908249589e-07, +-6.337794430860862274e-07, +-6.325335524509117765e-07, +-6.312868308539487319e-07, +-6.300392804646394776e-07, +-6.287909034537561332e-07, +-6.275417019929082163e-07, +-6.262916782545992879e-07, +-6.250408344124923911e-07, +-6.237891726411825171e-07, +-6.225366951162534621e-07, +-6.212834040143264259e-07, +-6.200293015128450773e-07, +-6.187743897903865212e-07, +-6.175186710264477401e-07, +-6.162621474014926047e-07, +-6.150048210969568501e-07, +-6.137466942952859805e-07, +-6.124877691797208642e-07, +-6.112280479346208763e-07, +-6.099675327452410236e-07, +-6.087062257977818131e-07, +-6.074441292794402864e-07, +-6.061812453781957199e-07, +-6.049175762831173096e-07, +-6.036531241841562245e-07, +-6.023878912721886996e-07, +-6.011218797390186826e-07, +-5.998550917774228329e-07, +-5.985875295809301867e-07, +-5.973191953441457237e-07, +-5.960500912625357506e-07, +-5.947802195324638993e-07, +-5.935095823511984330e-07, +-5.922381819169606328e-07, +-5.909660204287009694e-07, +-5.896931000864269047e-07, +-5.884194230909717576e-07, +-5.871449916440622552e-07, +-5.858698079483501903e-07, +-5.845938742072014044e-07, +-5.833171926250189312e-07, +-5.820397654070162028e-07, +-5.807615947592724251e-07, +-5.794826828887290833e-07, +-5.782030320032373762e-07, +-5.769226443113377755e-07, +-5.756415220225831693e-07, +-5.743596673473178917e-07, +-5.730770824967294985e-07, +-5.717937696828393432e-07, +-5.705097311185629288e-07, +-5.692249690174205396e-07, +-5.679394855941543049e-07, +-5.666532830639331529e-07, +-5.653663636429699799e-07, +-5.640787295482937982e-07, +-5.627903829975787417e-07, +-5.615013262094170224e-07, +-5.602115614033715516e-07, +-5.589210907994743913e-07, +-5.576299166187745723e-07, +-5.563380410831144776e-07, +-5.550454664149009320e-07, +-5.537521948377212064e-07, +-5.524582285755486069e-07, +-5.511635698533596443e-07, +-5.498682208969037472e-07, +-5.485721839325369254e-07, +-5.472754611874881621e-07, +-5.459780548899201885e-07, +-5.446799672684188286e-07, +-5.433812005525471709e-07, +-5.420817569726209984e-07, +-5.407816387594777605e-07, +-5.394808481450397442e-07, +-5.381793873617979130e-07, +-5.368772586428678116e-07, +-5.355744642222638981e-07, +-5.342710063347329968e-07, +-5.329668872155191401e-07, +-5.316621091009811617e-07, +-5.303566742278070736e-07, +-5.290505848336169414e-07, +-5.277438431567442446e-07, +-5.264364514360006123e-07, +-5.251284119112419598e-07, +-5.238197268228501038e-07, +-5.225103984117906783e-07, +-5.212004289198875738e-07, +-5.198898205896004845e-07, +-5.185785756640670489e-07, +-5.172666963871644711e-07, +-5.159541850032735161e-07, +-5.146410437576185938e-07, +-5.133272748960347191e-07, +-5.120128806650229924e-07, +-5.106978633117443526e-07, +-5.093822250840738934e-07, +-5.080659682303694113e-07, +-5.067490949998066192e-07, +-5.054316076421521411e-07, +-5.041135084078148639e-07, +-5.027947995478394786e-07, +-5.014754833139651371e-07, +-5.001555619583868013e-07, +-4.988350377340996672e-07, +-4.975139128946630548e-07, +-4.961921896942572652e-07, +-4.948698703877342965e-07, +-4.935469572303848041e-07, +-4.922234524782783960e-07, +-4.908993583880372634e-07, +-4.895746772168766264e-07, +-4.882494112226108750e-07, +-4.869235626637049205e-07, +-4.855971337990388262e-07, +-4.842701268882512795e-07, +-4.829425441915019987e-07, +-4.816143879695328256e-07, +-4.802856604836561844e-07, +-4.789563639958123628e-07, +-4.776265007683323422e-07, +-4.762960730642867225e-07, +-4.749650831472443711e-07, +-4.736335332813286440e-07, +-4.723014257312702199e-07, +-4.709687627621795130e-07, +-4.696355466398763807e-07, +-4.683017796306652358e-07, +-4.669674640013867162e-07, +-4.656326020194119670e-07, +-4.642971959526996566e-07, +-4.629612480695569545e-07, +-4.616247606389878206e-07, +-4.602877359304533480e-07, +-4.589501762139261317e-07, +-4.576120837598906924e-07, +-4.562734608393933452e-07, +-4.549343097237489149e-07, +-4.535946326851779689e-07, +-4.522544319959872076e-07, +-4.509137099292077561e-07, +-4.495724687583543425e-07, +-4.482307107572509146e-07, +-4.468884382003157731e-07, +-4.455456533626182160e-07, +-4.442023585193472909e-07, +-4.428585559463947649e-07, +-4.415142479201134558e-07, +-4.401694367170843510e-07, +-4.388241246147515114e-07, +-4.374783138906033613e-07, +-4.361320068228095512e-07, +-4.347852056899841593e-07, +-4.334379127710052732e-07, +-4.320901303453091226e-07, +-4.307418606929372477e-07, +-4.293931060940087984e-07, +-4.280438688293025514e-07, +-4.266941511800221234e-07, +-4.253439554275513903e-07, +-4.239932838540402634e-07, +-4.226421387418724350e-07, +-4.212905223737256768e-07, +-4.199384370328509900e-07, +-4.185858850029000753e-07, +-4.172328685676830816e-07, +-4.158793900118164270e-07, +-4.145254516198892132e-07, +-4.131710556771098286e-07, +-4.118162044690686204e-07, +-4.104609002814941614e-07, +-4.091051454008419371e-07, +-4.077489421137588627e-07, +-4.063922927071378104e-07, +-4.050351994684099419e-07, +-4.036776646853029335e-07, +-4.023196906459018563e-07, +-4.009612796386975102e-07, +-3.996024339523467666e-07, +-3.982431558760301221e-07, +-3.968834476992034117e-07, +-3.955233117116586897e-07, +-3.941627502035169241e-07, +-3.928017654652861236e-07, +-3.914403597876201987e-07, +-3.900785354616670915e-07, +-3.887162947788329836e-07, +-3.873536400308341234e-07, +-3.859905735096955030e-07, +-3.846270975078048560e-07, +-3.832632143176693482e-07, +-3.818989262322750360e-07, +-3.805342355448381046e-07, +-3.791691445488638419e-07, +-3.778036555382014312e-07, +-3.764377708068032879e-07, +-3.750714926490764195e-07, +-3.737048233596433503e-07, +-3.723377652333933672e-07, +-3.709703205654865959e-07, +-3.696024916513997933e-07, +-3.682342807866908730e-07, +-3.668656902673508469e-07, +-3.654967223895621036e-07, +-3.641273794497540475e-07, +-3.627576637445968523e-07, +-3.613875775710633470e-07, +-3.600171232261788766e-07, +-3.586463030073827737e-07, +-3.572751192122796480e-07, +-3.559035741387000024e-07, +-3.545316700847537017e-07, +-3.531594093485856039e-07, +-3.517867942286766273e-07, +-3.504138270238949431e-07, +-3.490405100329515978e-07, +-3.476668455550021714e-07, +-3.462928358893977498e-07, +-3.449184833355022830e-07, +-3.435437901930525745e-07, +-3.421687587619069770e-07, +-3.407933913421108786e-07, +-3.394176902339461485e-07, +-3.380416577376875089e-07, +-3.366652961539024909e-07, +-3.352886077835065443e-07, +-3.339115949272158013e-07, +-3.325342598861455587e-07, +-3.311566049615725257e-07, +-3.297786324547381540e-07, +-3.284003446671561104e-07, +-3.270217439006639988e-07, +-3.256428324568771830e-07, +-3.242636126377918209e-07, +-3.228840867455340899e-07, +-3.215042570821187828e-07, +-3.201241259501105226e-07, +-3.187436956517707472e-07, +-3.173629684897205662e-07, +-3.159819467666962325e-07, +-3.146006327853598838e-07, +-3.132190288486054799e-07, +-3.118371372596060252e-07, +-3.104549603212757556e-07, +-3.090725003368618966e-07, +-3.076897596097044768e-07, +-3.063067404429889415e-07, +-3.049234451404083203e-07, +-3.035398760053107415e-07, +-3.021560353413626592e-07, +-3.007719254522445564e-07, +-2.993875486417643944e-07, +-2.980029072135522048e-07, +-2.966180034717237397e-07, +-2.952328397200277211e-07, +-2.938474182625088561e-07, +-2.924617414032617209e-07, +-2.910758114461824744e-07, +-2.896896306955767096e-07, +-2.883032014556034833e-07, +-2.869165260303361958e-07, +-2.855296067240601116e-07, +-2.841424458410282550e-07, +-2.827550456855159908e-07, +-2.813674085618778813e-07, +-2.799795367743055411e-07, +-2.785914326271799491e-07, +-2.772030984248942080e-07, +-2.758145364715991685e-07, +-2.744257490718136646e-07, +-2.730367385298702358e-07, +-2.716475071499720901e-07, +-2.702580572364943836e-07, +-2.688683910937383154e-07, +-2.674785110259853384e-07, +-2.660884193374950415e-07, +-2.646981183325625888e-07, +-2.633076103152703804e-07, +-2.619168975898497883e-07, +-2.605259824604343523e-07, +-2.591348672311188073e-07, +-2.577435542060117586e-07, +-2.563520456889909419e-07, +-2.549603439840646419e-07, +-2.535684513951256822e-07, +-2.521763702260053176e-07, +-2.507841027804719637e-07, +-2.493916513622899067e-07, +-2.479990182749655643e-07, +-2.466062058221168451e-07, +-2.452132163072198851e-07, +-2.438200520336706703e-07, +-2.424267153048382401e-07, +-2.410332084238204776e-07, +-2.396395336938021928e-07, +-2.382456934178136385e-07, +-2.368516898987819412e-07, +-2.354575254395285336e-07, +-2.340632023428295588e-07, +-2.326687229111631099e-07, +-2.312740894470153799e-07, +-2.298793042529349247e-07, +-2.284843696309816413e-07, +-2.270892878833312058e-07, +-2.256940613120286658e-07, +-2.242986922187998699e-07, +-2.229031829054174652e-07, +-2.215075356734494345e-07, +-2.201117528243170121e-07, +-2.187158366593548233e-07, +-2.173197894795593154e-07, +-2.159236135858915985e-07, +-2.145273112793367380e-07, +-2.131308848603461948e-07, +-2.117343366294488011e-07, +-2.103376688870012562e-07, +-2.089408839329987880e-07, +-2.075439840674442477e-07, +-2.061469715900930733e-07, +-2.047498488005134560e-07, +-2.033526179980841953e-07, +-2.019552814820498362e-07, +-2.005578415512110254e-07, +-1.991603005045956793e-07, +-1.977626606405981599e-07, +-1.963649242576463401e-07, +-1.949670936539565991e-07, +-1.935691711273425256e-07, +-1.921711589755208819e-07, +-1.907730594961683020e-07, +-1.893748749863637852e-07, +-1.879766077432006775e-07, +-1.865782600635375643e-07, +-1.851798342437456167e-07, +-1.837813325803862174e-07, +-1.823827573693406348e-07, +-1.809841109064874106e-07, +-1.795853954873886142e-07, +-1.781866134073482079e-07, +-1.767877669614100621e-07, +-1.753888584444121122e-07, +-1.739898901507396075e-07, +-1.725908643746890705e-07, +-1.711917834102819765e-07, +-1.697926495510106166e-07, +-1.683934650904555323e-07, +-1.669942323217235356e-07, +-1.655949535375073980e-07, +-1.641956310303884533e-07, +-1.627962670925896080e-07, +-1.613968640160291280e-07, +-1.599974240923828688e-07, +-1.585979496128302717e-07, +-1.571984428684222144e-07, +-1.557989061498938430e-07, +-1.543993417474110180e-07, +-1.529997519511855514e-07, +-1.516001390509162446e-07, +-1.502005053358456391e-07, +-1.488008530950661667e-07, +-1.474011846172687388e-07, +-1.460015021908020919e-07, +-1.446018081036664881e-07, +-1.432021046435750452e-07, +-1.418023940977002622e-07, +-1.404026787530422935e-07, +-1.390029608961784915e-07, +-1.376032428133201053e-07, +-1.362035267903716256e-07, +-1.348038151126799571e-07, +-1.334041100654004958e-07, +-1.320044139332467247e-07, +-1.306047290005490032e-07, +-1.292050575512499085e-07, +-1.278054018689632365e-07, +-1.264057642367214274e-07, +-1.250061469373459837e-07, +-1.236065522531929635e-07, +-1.222069824662133312e-07, +-1.208074398580102912e-07, +-1.194079267095885397e-07, +-1.180084453017213876e-07, +-1.166089979147001970e-07, +-1.152095868283920196e-07, +-1.138102143222368699e-07, +-1.124108826753042388e-07, +-1.110115941660432843e-07, +-1.096123510725886376e-07, +-1.082131556728177095e-07, +-1.068140102437908153e-07, +-1.054149170623658295e-07, +-1.040158784049483374e-07, +-1.026168965472996897e-07, +-1.012179737649073142e-07, +-9.981911233273219502e-08, +-9.842031452526742281e-08, +-9.702158261659664061e-08, +-9.562291888014144256e-08, +-9.422432558896995857e-08, +-9.282580501585271881e-08, +-9.142735943270247380e-08, +-9.002899111118980204e-08, +-8.863070232249257353e-08, +-8.723249533710478507e-08, +-8.583437242520606512e-08, +-8.443633585640960207e-08, +-8.303838789982097336e-08, +-8.164053082403402943e-08, +-8.024276689718850517e-08, +-7.884509838665832502e-08, +-7.744752755972860735e-08, +-7.605005668272392189e-08, +-7.465268802168733231e-08, +-7.325542384212898616e-08, +-7.185826640883540020e-08, +-7.046121798617644359e-08, +-6.906428083816435230e-08, +-6.766745722789070370e-08, +-6.627074941814414171e-08, +-6.487415967115813314e-08, +-6.347769024835910766e-08, +-6.208134341104583120e-08, +-6.068512141951637969e-08, +-5.928902653374783002e-08, +-5.789306101314382441e-08, +-5.649722711628315378e-08, +-5.510152710153666250e-08, +-5.370596322650471918e-08, +-5.231053774807669432e-08, +-5.091525292273636859e-08, +-4.952011100637293200e-08, +-4.812511425402893868e-08, +-4.673026492051754239e-08, +-4.533556525985982845e-08, +-4.394101752534372886e-08, +-4.254662396983103859e-08, +-4.115238684550469547e-08, +-3.975830840392772827e-08, +-3.836439089610199986e-08, +-3.697063657221587734e-08, +-3.557704768201338625e-08, +-3.418362647460434946e-08, +-3.279037519821232204e-08, +-3.139729610079210477e-08, +-3.000439142946712238e-08, +-2.861166343058817649e-08, +-2.721911435004022708e-08, +-2.582674643299029430e-08, +-2.443456192394626437e-08, +-2.304256306681518602e-08, +-2.165075210465170163e-08, +-2.025913128002650993e-08, +-1.886770283477476411e-08, +-1.747646901005449059e-08, +-1.608543204634314802e-08, +-1.469459418349590042e-08, +-1.330395766049424533e-08, +-1.191352471581429608e-08, +-1.052329758717540492e-08, +-9.133278511598391602e-09, +-7.743469725402161829e-09, +-6.353873464262067346e-09, +-4.964491962958507549e-09, +-3.575327455745166310e-09, +-2.186382176097613585e-09, +-7.976583567717733370e-10, + 5.908417701377671631e-10, + 1.979115973448981391e-09, + 3.367162022524315022e-09, + 4.754977687521984331e-09, + 6.142560739337576313e-09, + 7.529908949607547654e-09, + 8.917020090650911395e-09, + 1.030389193572032843e-08, + 1.169052225863420488e-08, + 1.307690883402781913e-08, + 1.446304943729502386e-08, + 1.584894184459165559e-08, + 1.723458383277724170e-08, + 1.861997317966599674e-08, + 2.000510766365912579e-08, + 2.138998506399581754e-08, + 2.277460316069478574e-08, + 2.415895973449604894e-08, + 2.554305256711175815e-08, + 2.692687944092052046e-08, + 2.831043813890902993e-08, + 2.969372644523222762e-08, + 3.107674214459823000e-08, + 3.245948302251932196e-08, + 3.384194686550071616e-08, + 3.522413146067358923e-08, + 3.660603459604534029e-08, + 3.798765406044141037e-08, + 3.936898764344704893e-08, + 4.075003313565816131e-08, + 4.213078832837528499e-08, + 4.351125101354604430e-08, + 4.489141898432381499e-08, + 4.627129003445408191e-08, + 4.765086195852488947e-08, + 4.903013255215505501e-08, + 5.040909961168987219e-08, + 5.178776093414215619e-08, + 5.316611431775123916e-08, + 5.454415756136942051e-08, + 5.592188846471247037e-08, + 5.729930482860935867e-08, + 5.867640445432760003e-08, + 6.005318514444059564e-08, + 6.142964470215152893e-08, + 6.280578093154438511e-08, + 6.418159163783360747e-08, + 6.555707462675165293e-08, + 6.693222770510659110e-08, + 6.830704868072387082e-08, + 6.968153536214206327e-08, + 7.105568555880147236e-08, + 7.242949708129269922e-08, + 7.380296774068392599e-08, + 7.517609534938567025e-08, + 7.654887772047731447e-08, + 7.792131266801796703e-08, + 7.929339800698891701e-08, + 8.066513155329677078e-08, + 8.203651112371525822e-08, + 8.340753453613465748e-08, + 8.477819960919626049e-08, + 8.614850416248036141e-08, + 8.751844601675603865e-08, + 8.888802299336880304e-08, + 9.025723291479772046e-08, + 9.162607360459807832e-08, + 9.299454288709638755e-08, + 9.436263858764013818e-08, + 9.573035853253947316e-08, + 9.709770054900977547e-08, + 9.846466246541999429e-08, + 9.983124211092798412e-08, + 1.011974373157297707e-07, + 1.025632459110011322e-07, + 1.039286657289006034e-07, + 1.052936946025125925e-07, + 1.066583303660952173e-07, + 1.080225708547163194e-07, + 1.093864139045010360e-07, + 1.107498573525760017e-07, + 1.121128990370703940e-07, + 1.134755367970597644e-07, + 1.148377684728129751e-07, + 1.161995919054289804e-07, + 1.175610049370855240e-07, + 1.189220054109804813e-07, + 1.202825911712739442e-07, + 1.216427600633374468e-07, + 1.230025099333890666e-07, + 1.243618386287421609e-07, + 1.257207439977465903e-07, + 1.270792238897934047e-07, + 1.284372761552568470e-07, + 1.297948986457404700e-07, + 1.311520892137167232e-07, + 1.325088457127720634e-07, + 1.338651659975505739e-07, + 1.352210479237571937e-07, + 1.365764893480993519e-07, + 1.379314881285349894e-07, + 1.392860421239102139e-07, + 1.406401491942052047e-07, + 1.419938072004787049e-07, + 1.433470140048080412e-07, + 1.446997674705378075e-07, + 1.460520654619783743e-07, + 1.474039058443470989e-07, + 1.487552864843214909e-07, + 1.501062052494316518e-07, + 1.514566600083106787e-07, + 1.528066486308754530e-07, + 1.541561689879687689e-07, + 1.555052189516045762e-07, + 1.568537963949108581e-07, + 1.582018991920711863e-07, + 1.595495252185722398e-07, + 1.608966723509039284e-07, + 1.622433384664993599e-07, + 1.635895214442865493e-07, + 1.649352191640852782e-07, + 1.662804295068513586e-07, + 1.676251503549229865e-07, + 1.689693795914191106e-07, + 1.703131151007859272e-07, + 1.716563547687427762e-07, + 1.729990964819783207e-07, + 1.743413381283391708e-07, + 1.756830775970734322e-07, + 1.770243127781682730e-07, + 1.783650415632012982e-07, + 1.797052618446769787e-07, + 1.810449715162748580e-07, + 1.823841684730891574e-07, + 1.837228506110338404e-07, + 1.850610158273845557e-07, + 1.863986620207246911e-07, + 1.877357870906456835e-07, + 1.890723889379311417e-07, + 1.904084654648002633e-07, + 1.917440145742521515e-07, + 1.930790341709073421e-07, + 1.944135221603509829e-07, + 1.957474764494386649e-07, + 1.970808949462356219e-07, + 1.984137755600232944e-07, + 1.997461162012403289e-07, + 2.010779147817296465e-07, + 2.024091692143758602e-07, + 2.037398774132923364e-07, + 2.050700372940641350e-07, + 2.063996467731500037e-07, + 2.077287037684271265e-07, + 2.090572061991318310e-07, + 2.103851519855669917e-07, + 2.117125390493404433e-07, + 2.130393653133108498e-07, + 2.143656287015310859e-07, + 2.156913271394898793e-07, + 2.170164585537569573e-07, + 2.183410208721650526e-07, + 2.196650120240511754e-07, + 2.209884299396656758e-07, + 2.223112725507086006e-07, + 2.236335377902765953e-07, + 2.249552235925660188e-07, + 2.262763278931146919e-07, + 2.275968486287462844e-07, + 2.289167837375719297e-07, + 2.302361311589373646e-07, + 2.315548888336608135e-07, + 2.328730547036780017e-07, + 2.341906267122885365e-07, + 2.355076028040938353e-07, + 2.368239809249448481e-07, + 2.381397590221816087e-07, + 2.394549350442774809e-07, + 2.407695069410864395e-07, + 2.420834726637796483e-07, + 2.433968301648513631e-07, + 2.447095773980633715e-07, + 2.460217123186860268e-07, + 2.473332328831431296e-07, + 2.486441370492536492e-07, + 2.499544227761776733e-07, + 2.512640880243547325e-07, + 2.525731307557491227e-07, + 2.538815489334961098e-07, + 2.551893405221403698e-07, + 2.564965034875819901e-07, + 2.578030357970776873e-07, + 2.591089354191874438e-07, + 2.604142003240116778e-07, + 2.617188284828992807e-07, + 2.630228178683911312e-07, + 2.643261664547578551e-07, + 2.656288722174079612e-07, + 2.669309331331305158e-07, + 2.682323471802731792e-07, + 2.695331123383934921e-07, + 2.708332265884962040e-07, + 2.721326879129764161e-07, + 2.734314942955661123e-07, + 2.747296437215717516e-07, + 2.760271341775823603e-07, + 2.773239636514147913e-07, + 2.786201301326473559e-07, + 2.799156316120304999e-07, + 2.812104660817299025e-07, + 2.825046315355614218e-07, + 2.837981259683490969e-07, + 2.850909473767511638e-07, + 2.863830937586150929e-07, + 2.876745631132762735e-07, + 2.889653534414437709e-07, + 2.902554627454941935e-07, + 2.915448890288327124e-07, + 2.928336302967130421e-07, + 2.941216845556008427e-07, + 2.954090498134070768e-07, + 2.966957240797249678e-07, + 2.979817053652540697e-07, + 2.992669916823201341e-07, + 3.005515810448275700e-07, + 3.018354714679652063e-07, + 3.031186609683883504e-07, + 3.044011475644531519e-07, + 3.056829292755758751e-07, + 3.069640041230590208e-07, + 3.082443701294458342e-07, + 3.095240253187594861e-07, + 3.108029677167393945e-07, + 3.120811953502614840e-07, + 3.133587062478657816e-07, + 3.146354984396977589e-07, + 3.159115699572251591e-07, + 3.171869188334155033e-07, + 3.184615431029646299e-07, + 3.197354408017277013e-07, + 3.210086099672375340e-07, + 3.222810486386554187e-07, + 3.235527548564791578e-07, + 3.248237266627796531e-07, + 3.260939621011495538e-07, + 3.273634592166415822e-07, + 3.286322160560088263e-07, + 3.299002306673557623e-07, + 3.311675011003776470e-07, + 3.324340254063004318e-07, + 3.336998016378873271e-07, + 3.349648278493856506e-07, + 3.362291020967526681e-07, + 3.374926224373218618e-07, + 3.387553869300301478e-07, + 3.400173936353652531e-07, + 3.412786406153130416e-07, + 3.425391259335855774e-07, + 3.437988476552842702e-07, + 3.450578038471313274e-07, + 3.463159925774127381e-07, + 3.475734119159819786e-07, + 3.488300599342090320e-07, + 3.500859347052079222e-07, + 3.513410343034989064e-07, + 3.525953568052377570e-07, + 3.538489002881655739e-07, + 3.551016628316089443e-07, + 3.563536425164228731e-07, + 3.576048374252296467e-07, + 3.588552456420705434e-07, + 3.601048652526440614e-07, + 3.613536943442466796e-07, + 3.626017310057224589e-07, + 3.638489733276929060e-07, + 3.650954194022152485e-07, + 3.663410673230168510e-07, + 3.675859151854380937e-07, + 3.688299610864387779e-07, + 3.700732031245397867e-07, + 3.713156394000566539e-07, + 3.725572680147605929e-07, + 3.737980870721092592e-07, + 3.750380946771887295e-07, + 3.762772889367228184e-07, + 3.775156679590133632e-07, + 3.787532298541738986e-07, + 3.799899727337880379e-07, + 3.812258947111486011e-07, + 3.824609939011893227e-07, + 3.836952684204428707e-07, + 3.849287163872641988e-07, + 3.861613359215520310e-07, + 3.873931251446975103e-07, + 3.886240821800905131e-07, + 3.898542051525615598e-07, + 3.910834921886108844e-07, + 3.923119414166326869e-07, + 3.935395509663028337e-07, + 3.947663189693661222e-07, + 3.959922435590228702e-07, + 3.972173228702107128e-07, + 3.984415550394963414e-07, + 3.996649382053605829e-07, + 4.008874705075791130e-07, + 4.021091500880157023e-07, + 4.033299750900037765e-07, + 4.045499436585775508e-07, + 4.057690539406956460e-07, + 4.069873040846858588e-07, + 4.082046922407489346e-07, + 4.094212165609121394e-07, + 4.106368751987411630e-07, + 4.118516663095230777e-07, + 4.130655880504798967e-07, + 4.142786385801704102e-07, + 4.154908160592631554e-07, + 4.167021186499303649e-07, + 4.179125445160747069e-07, + 4.191220918235528483e-07, + 4.203307587396215488e-07, + 4.215385434334415923e-07, + 4.227454440760251648e-07, + 4.239514588399595102e-07, + 4.251565858995772895e-07, + 4.263608234311828449e-07, + 4.275641696124975517e-07, + 4.287666226231615793e-07, + 4.299681806446820638e-07, + 4.311688418601601515e-07, + 4.323686044545119683e-07, + 4.335674666144192804e-07, + 4.347654265282742784e-07, + 4.359624823864062641e-07, + 4.371586323807498784e-07, + 4.383538747050687713e-07, + 4.395482075549055735e-07, + 4.407416291275832204e-07, + 4.419341376221516944e-07, + 4.431257312396098420e-07, + 4.443164081825851953e-07, + 4.455061666555450947e-07, + 4.466950048647548670e-07, + 4.478829210182181095e-07, + 4.490699133259016299e-07, + 4.502559799994121447e-07, + 4.514411192522107905e-07, + 4.526253292995697128e-07, + 4.538086083585687316e-07, + 4.549909546480456838e-07, + 4.561723663888135811e-07, + 4.573528418033420199e-07, + 4.585323791159752923e-07, + 4.597109765528774879e-07, + 4.608886323420379462e-07, + 4.620653447132236114e-07, + 4.632411118981902079e-07, + 4.644159321303634917e-07, + 4.655898036450611725e-07, + 4.667627246794376453e-07, + 4.679346934724338033e-07, + 4.691057082649936139e-07, + 4.702757672997519869e-07, + 4.714448688212380096e-07, + 4.726130110758354538e-07, + 4.737801923117817169e-07, + 4.749464107791150943e-07, + 4.761116647298951140e-07, + 4.772759524178801870e-07, + 4.784392720987448718e-07, + 4.796016220300354582e-07, + 4.807630004711610728e-07, + 4.819234056833516457e-07, + 4.830828359299229254e-07, + 4.842412894756963677e-07, + 4.853987645877419828e-07, + 4.865552595347999184e-07, + 4.877107725874974057e-07, + 4.888653020185029193e-07, + 4.900188461022715382e-07, + 4.911714031149860766e-07, + 4.923229713350471990e-07, + 4.934735490425364005e-07, + 4.946231345194362360e-07, + 4.957717260498401723e-07, + 4.969193219193804176e-07, + 4.980659204159615573e-07, + 4.992115198291865843e-07, + 5.003561184505709857e-07, + 5.014997145737028322e-07, + 5.026423064939801985e-07, + 5.037838925085635167e-07, + 5.049244709168495980e-07, + 5.060640400199513422e-07, + 5.072025981209047316e-07, + 5.083401435248863066e-07, + 5.094766745386886406e-07, + 5.106121894711964783e-07, + 5.117466866333336904e-07, + 5.128801643378105401e-07, + 5.140126208992731845e-07, + 5.151440546345234793e-07, + 5.162744638619436321e-07, + 5.174038469022274034e-07, + 5.185322020778139710e-07, + 5.196595277130941823e-07, + 5.207858221346225247e-07, + 5.219110836706025528e-07, + 5.230353106513513801e-07, + 5.241585014092559511e-07, + 5.252806542785085550e-07, + 5.264017675953250429e-07, + 5.275218396978914643e-07, + 5.286408689263112338e-07, + 5.297588536228254655e-07, + 5.308757921314893003e-07, + 5.319916827983935109e-07, + 5.331065239716135744e-07, + 5.342203140012027895e-07, + 5.353330512391572311e-07, + 5.364447340396131087e-07, + 5.375553607585415166e-07, + 5.386649297539687692e-07, + 5.397734393859054609e-07, + 5.408808880163702899e-07, + 5.419872740093269536e-07, + 5.430925957308990835e-07, + 5.441968515490608661e-07, + 5.453000398338458371e-07, + 5.464021589573011411e-07, + 5.475032072934338509e-07, + 5.486031832184182794e-07, + 5.497020851102945408e-07, + 5.507999113491745924e-07, + 5.518966603171911999e-07, + 5.529923303984999499e-07, + 5.540869199792395448e-07, + 5.551804274477234439e-07, + 5.562728511941461551e-07, + 5.573641896107885344e-07, + 5.584544410919660107e-07, + 5.595436040340321861e-07, + 5.606316768353319313e-07, + 5.617186578964024499e-07, + 5.628045456196812640e-07, + 5.638893384096953142e-07, + 5.649730346730269725e-07, + 5.660556328182593026e-07, + 5.671371312561808303e-07, + 5.682175283994848467e-07, + 5.692968226629732256e-07, + 5.703750124635123777e-07, + 5.714520962200308154e-07, + 5.725280723534710837e-07, + 5.736029392869961187e-07, + 5.746766954456868565e-07, + 5.757493392567477449e-07, + 5.768208691494587802e-07, + 5.778912835551240496e-07, + 5.789605809072834898e-07, + 5.800287596414507300e-07, + 5.810958181950765639e-07, + 5.821617550079971358e-07, + 5.832265685219381087e-07, + 5.842902571807140347e-07, + 5.853528194303794447e-07, + 5.864142537189896671e-07, + 5.874745584965435476e-07, + 5.885337322154366114e-07, + 5.895917733299697845e-07, + 5.906486802965462226e-07, + 5.917044515738712114e-07, + 5.927590856224149353e-07, + 5.938125809051017509e-07, + 5.948649358867699916e-07, + 5.959161490343739851e-07, + 5.969662188171319663e-07, + 5.980151437062806496e-07, + 5.990629221750323479e-07, + 6.001095526990161709e-07, + 6.011550337557894987e-07, + 6.021993638250399994e-07, + 6.032425413887776936e-07, + 6.042845649308013237e-07, + 6.053254329373864624e-07, + 6.063651438967510347e-07, + 6.074036962992979931e-07, + 6.084410886375181204e-07, + 6.094773194062480571e-07, + 6.105123871021214242e-07, + 6.115462902242593665e-07, + 6.125790272737394634e-07, + 6.136105967537867345e-07, + 6.146409971699765039e-07, + 6.156702270297464037e-07, + 6.166982848428340781e-07, + 6.177251691212409726e-07, + 6.187508783789745186e-07, + 6.197754111322589385e-07, + 6.207987658994844239e-07, + 6.218209412011592782e-07, + 6.228419355601039928e-07, + 6.238617475011659032e-07, + 6.248803755514201475e-07, + 6.258978182401116445e-07, + 6.269140740986637758e-07, + 6.279291416606327521e-07, + 6.289430194618995717e-07, + 6.299557060403866884e-07, + 6.309671999362467935e-07, + 6.319774996918260763e-07, + 6.329866038516577650e-07, + 6.339945109624194576e-07, + 6.350012195731224336e-07, + 6.360067282348361571e-07, + 6.370110355008740937e-07, + 6.380141399267489246e-07, + 6.390160400701262768e-07, + 6.400167344910249408e-07, + 6.410162217515179735e-07, + 6.420145004159420219e-07, + 6.430115690508393005e-07, + 6.440074262249630977e-07, + 6.450020705092382825e-07, + 6.459955004769419344e-07, + 6.469877147034321871e-07, + 6.479787117663313990e-07, + 6.489684902454851785e-07, + 6.499570487229619600e-07, + 6.509443857830088526e-07, + 6.519305000122415872e-07, + 6.529153899993676425e-07, + 6.538990543353678278e-07, + 6.548814916134627192e-07, + 6.558627004290570733e-07, + 6.568426793799352796e-07, + 6.578214270660259918e-07, + 6.587989420893619991e-07, + 6.597752230544966491e-07, + 6.607502685680412619e-07, + 6.617240772388615356e-07, + 6.626966476782013193e-07, + 6.636679784994222562e-07, + 6.646380683181850487e-07, + 6.656069157524032951e-07, + 6.665745194222019848e-07, + 6.675408779500989755e-07, + 6.685059899607899524e-07, + 6.694698540810879713e-07, + 6.704324689403449633e-07, + 6.713938331699979372e-07, + 6.723539454037533145e-07, + 6.733128042777195966e-07, + 6.742704084301907356e-07, + 6.752267565015930890e-07, + 6.761818471349070305e-07, + 6.771356789752019288e-07, + 6.780882506698328710e-07, + 6.790395608686103867e-07, + 6.799896082233157337e-07, + 6.809383913883275964e-07, + 6.818859090201325004e-07, + 6.828321597775094662e-07, + 6.837771423216529345e-07, + 6.847208553159694787e-07, + 6.856632974260170296e-07, + 6.866044673199203457e-07, + 6.875443636679255795e-07, + 6.884829851425740251e-07, + 6.894203304188861362e-07, + 6.903563981738776585e-07, + 6.912911870871777520e-07, + 6.922246958405419468e-07, + 6.931569231180826426e-07, + 6.940878676061738167e-07, + 6.950175279936788763e-07, + 6.959459029714644617e-07, + 6.968729912330283092e-07, + 6.977987914740013016e-07, + 6.987233023923331803e-07, + 6.996465226884726458e-07, + 7.005684510649273238e-07, + 7.014890862266583769e-07, + 7.024084268810403761e-07, + 7.033264717376493314e-07, + 7.042432195084259568e-07, + 7.051586689076466596e-07, + 7.060728186518772714e-07, + 7.069856674601443603e-07, + 7.078972140536855682e-07, + 7.088074571560740185e-07, + 7.097163954933902636e-07, + 7.106240277938069220e-07, + 7.115303527879632774e-07, + 7.124353692089282221e-07, + 7.133390757919900862e-07, + 7.142414712748274210e-07, + 7.151425543974670707e-07, + 7.160423239022886196e-07, + 7.169407785339850046e-07, + 7.178379170397269458e-07, + 7.187337381689157188e-07, + 7.196282406733528787e-07, + 7.205214233071965322e-07, + 7.214132848269324324e-07, + 7.223038239915276098e-07, + 7.231930395621865323e-07, + 7.240809303025334290e-07, + 7.249674949785480220e-07, + 7.258527323585838431e-07, + 7.267366412133266235e-07, + 7.276192203159556535e-07, + 7.285004684419015310e-07, + 7.293803843690117568e-07, + 7.302589668775147351e-07, + 7.311362147499741402e-07, + 7.320121267714583227e-07, + 7.328867017292938231e-07, + 7.337599384132323429e-07, + 7.346318356154141110e-07, + 7.355023921303606832e-07, + 7.363716067549520729e-07, + 7.372394782885713816e-07, + 7.381060055329136874e-07, + 7.389711872919508927e-07, + 7.398350223722880078e-07, + 7.406975095827654691e-07, + 7.415586477346257921e-07, + 7.424184356416266511e-07, + 7.432768721198138738e-07, + 7.441339559876710490e-07, + 7.449896860660837388e-07, + 7.458440611783100450e-07, + 7.466970801501323332e-07, + 7.475487418096601920e-07, + 7.483990449872943285e-07, + 7.492479885160938623e-07, + 7.500955712313649859e-07, + 7.509417919708292061e-07, + 7.517866495747474345e-07, + 7.526301428856783713e-07, + 7.534722707486359476e-07, + 7.543130320110628555e-07, + 7.551524255228161488e-07, + 7.559904501361451141e-07, + 7.568271047058794178e-07, + 7.576623880889970137e-07, + 7.584962991451854083e-07, + 7.593288367364000386e-07, + 7.601599997270302908e-07, + 7.609897869840151203e-07, + 7.618181973766537400e-07, + 7.626452297765553271e-07, + 7.634708830580103420e-07, + 7.642951560975844813e-07, + 7.651180477742881904e-07, + 7.659395569697281767e-07, + 7.667596825676778577e-07, + 7.675784234546364032e-07, + 7.683957785193857364e-07, + 7.692117466531593060e-07, + 7.700263267497891517e-07, + 7.708395177053325746e-07, + 7.716513184184070330e-07, + 7.724617277901666370e-07, + 7.732707447240983314e-07, + 7.740783681261525505e-07, + 7.748845969048843548e-07, + 7.756894299710781955e-07, + 7.764928662380956217e-07, + 7.772949046218323990e-07, + 7.780955440405370331e-07, + 7.788947834149547650e-07, + 7.796926216683033249e-07, + 7.804890577262225339e-07, + 7.812840905169388398e-07, + 7.820777189710325949e-07, + 7.828699420215540997e-07, + 7.836607586041795627e-07, + 7.844501676568288768e-07, + 7.852381681200114205e-07, + 7.860247589367931293e-07, + 7.868099390525962789e-07, + 7.875937074153667733e-07, + 7.883760629755231119e-07, + 7.891570046859361662e-07, + 7.899365315020648108e-07, + 7.907146423817432126e-07, + 7.914913362853324495e-07, + 7.922666121756702179e-07, + 7.930404690180941259e-07, + 7.938129057803826132e-07, + 7.945839214329222397e-07, + 7.953535149484816334e-07, + 7.961216853023520987e-07, + 7.968884314723320514e-07, + 7.976537524387027724e-07, + 7.984176471842132676e-07, + 7.991801146942170632e-07, + 7.999411539564605533e-07, + 8.007007639612240313e-07, + 8.014589437012921492e-07, + 8.022156921719123075e-07, + 8.029710083709555911e-07, + 8.037248912986786474e-07, + 8.044773399578856811e-07, + 8.052283533538892792e-07, + 8.059779304945118934e-07, + 8.067260703900483584e-07, + 8.074727720534127467e-07, + 8.082180344999321157e-07, + 8.089618567474714457e-07, + 8.097042378164218863e-07, + 8.104451767296822287e-07, + 8.111846725126409052e-07, + 8.119227241933056921e-07, + 8.126593308021056089e-07, + 8.133944913720142684e-07, + 8.141282049385437348e-07, + 8.148604705396818442e-07, + 8.155912872160520812e-07, + 8.163206540107309381e-07, + 8.170485699692220799e-07, + 8.177750341397590531e-07, + 8.185000455729724013e-07, + 8.192236033220224382e-07, + 8.199457064427034320e-07, + 8.206663539932366124e-07, + 8.213855450344148009e-07, + 8.221032786295664121e-07, + 8.228195538445523833e-07, + 8.235343697477384342e-07, + 8.242477254101712495e-07, + 8.249596199051890558e-07, + 8.256700523089142769e-07, + 8.263790216998757571e-07, + 8.270865271591385694e-07, + 8.277925677704236584e-07, + 8.284971426199212815e-07, + 8.292002507962647510e-07, + 8.299018913908494475e-07, + 8.306020634974734667e-07, + 8.313007662124832029e-07, + 8.319979986349188268e-07, + 8.326937598661264506e-07, + 8.333880490102464420e-07, + 8.340808651738370245e-07, + 8.347722074660129788e-07, + 8.354620749985737564e-07, + 8.361504668856788546e-07, + 8.368373822441430067e-07, + 8.375228201934072782e-07, + 8.382067798553774941e-07, + 8.388892603545101077e-07, + 8.395702608179640305e-07, + 8.402497803752603376e-07, + 8.409278181585846577e-07, + 8.416043733027473629e-07, + 8.422794449450331145e-07, + 8.429530322253229414e-07, + 8.436251342860637473e-07, + 8.442957502722403580e-07, + 8.449648793315106239e-07, + 8.456325206139966258e-07, + 8.462986732723958482e-07, + 8.469633364621101400e-07, + 8.476265093409163247e-07, + 8.482881910692662617e-07, + 8.489483808102486240e-07, + 8.496070777294399260e-07, + 8.502642809950174972e-07, + 8.509199897777407407e-07, + 8.515742032509144999e-07, + 8.522269205905232066e-07, + 8.528781409750326758e-07, + 8.535278635855262660e-07, + 8.541760876056647511e-07, + 8.548228122217037904e-07, + 8.554680366224409892e-07, + 8.561117599993603177e-07, + 8.567539815464376110e-07, + 8.573947004602625423e-07, + 8.580339159400203052e-07, + 8.586716271874799677e-07, + 8.593078334069755189e-07, + 8.599425338055217019e-07, + 8.605757275926305242e-07, + 8.612074139804397956e-07, + 8.618375921836809410e-07, + 8.624662614196510477e-07, + 8.630934209083307096e-07, + 8.637190698722057262e-07, + 8.643432075363953226e-07, + 8.649658331286114916e-07, + 8.655869458791635468e-07, + 8.662065450209344053e-07, + 8.668246297894983259e-07, + 8.674411994229341374e-07, + 8.680562531619583298e-07, + 8.686697902498915955e-07, + 8.692818099326561827e-07, + 8.698923114587486848e-07, + 8.705012940793606361e-07, + 8.711087570482004236e-07, + 8.717146996216130360e-07, + 8.723191210585493588e-07, + 8.729220206205481752e-07, + 8.735233975718365389e-07, + 8.741232511791956257e-07, + 8.747215807119276991e-07, + 8.753183854421290668e-07, + 8.759136646443839837e-07, + 8.765074175958923426e-07, + 8.770996435765558597e-07, + 8.776903418688071857e-07, + 8.782795117577198081e-07, + 8.788671525309805228e-07, + 8.794532634788700583e-07, + 8.800378438943696961e-07, + 8.806208930730223566e-07, + 8.812024103129031656e-07, + 8.817823949148828811e-07, + 8.823608461823363021e-07, + 8.829377634212572535e-07, + 8.835131459403489010e-07, + 8.840869930508799673e-07, + 8.846593040666586856e-07, + 8.852300783042822510e-07, + 8.857993150828692641e-07, + 8.863670137241549160e-07, + 8.869331735526183609e-07, + 8.874977938951659261e-07, + 8.880608740815286880e-07, + 8.886224134439555281e-07, + 8.891824113173202833e-07, + 8.897408670392389537e-07, + 8.902977799497975932e-07, + 8.908531493917867263e-07, + 8.914069747106909715e-07, + 8.919592552545382696e-07, + 8.925099903739930574e-07, + 8.930591794224645818e-07, + 8.936068217557939216e-07, + 8.941529167326660683e-07, + 8.946974637142770431e-07, + 8.952404620644909145e-07, + 8.957819111498113179e-07, + 8.963218103393718200e-07, + 8.968601590049246956e-07, + 8.973969565209362190e-07, + 8.979322022644279513e-07, + 8.984658956150738312e-07, + 8.989980359552809610e-07, + 8.995286226699410024e-07, + 9.000576551466713693e-07, + 9.005851327757801813e-07, + 9.011110549501377272e-07, + 9.016354210652838255e-07, + 9.021582305194077084e-07, + 9.026794827133087398e-07, + 9.031991770505132004e-07, + 9.037173129371119749e-07, + 9.042338897818697134e-07, + 9.047489069961989967e-07, + 9.052623639941494312e-07, + 9.057742601924084955e-07, + 9.062845950103752324e-07, + 9.067933678700230297e-07, + 9.073005781960023226e-07, + 9.078062254156140186e-07, + 9.083103089588017678e-07, + 9.088128282581411634e-07, + 9.093137827489276215e-07, + 9.098131718690436084e-07, + 9.103109950590386856e-07, + 9.108072517621176511e-07, + 9.113019414241116343e-07, + 9.117950634935840812e-07, + 9.122866174216715122e-07, + 9.127766026621895069e-07, + 9.132650186716186225e-07, + 9.137518649090850176e-07, + 9.142371408363463703e-07, + 9.147208459178929931e-07, + 9.152029796207939901e-07, + 9.156835414148036660e-07, + 9.161625307723353734e-07, + 9.166399471684509252e-07, + 9.171157900808599596e-07, + 9.175900589899924665e-07, + 9.180627533788672864e-07, + 9.185338727331875074e-07, + 9.190034165413178065e-07, + 9.194713842942588274e-07, + 9.199377754857353777e-07, + 9.204025896121025139e-07, + 9.208658261722887906e-07, + 9.213274846680339586e-07, + 9.217875646036476668e-07, + 9.222460654860982946e-07, + 9.227029868250860086e-07, + 9.231583281329059667e-07, + 9.236120889245454092e-07, + 9.240642687176508364e-07, + 9.245148670325074679e-07, + 9.249638833921363340e-07, + 9.254113173221833140e-07, + 9.258571683508812320e-07, + 9.263014360092718847e-07, + 9.267441198309698260e-07, + 9.271852193522577632e-07, + 9.276247341121765547e-07, + 9.280626636522724766e-07, + 9.284990075169207891e-07, + 9.289337652530680268e-07, + 9.293669364103585241e-07, + 9.297985205410774527e-07, + 9.302285172002708879e-07, + 9.306569259455004870e-07, + 9.310837463371436568e-07, + 9.315089779381667600e-07, + 9.319326203141998663e-07, + 9.323546730336371257e-07, + 9.327751356674097637e-07, + 9.331940077891762399e-07, + 9.336112889753240484e-07, + 9.340269788048403331e-07, + 9.344410768593791214e-07, + 9.348535827233565089e-07, + 9.352644959837078794e-07, + 9.356738162301942122e-07, + 9.360815430551573965e-07, + 9.364876760536426268e-07, + 9.368922148233580635e-07, + 9.372951589646883851e-07, + 9.376965080806728714e-07, + 9.380962617770839658e-07, + 9.384944196623043497e-07, + 9.388909813473913167e-07, + 9.392859464461646525e-07, + 9.396793145749854536e-07, + 9.400710853529583560e-07, + 9.404612584018953250e-07, + 9.408498333462335983e-07, + 9.412368098130929673e-07, + 9.416221874322750353e-07, + 9.420059658362351600e-07, + 9.423881446601688506e-07, + 9.427687235418807955e-07, + 9.431477021218550600e-07, + 9.435250800433261313e-07, + 9.439008569520938417e-07, + 9.442750324966858931e-07, + 9.446476063283467398e-07, + 9.450185781009479087e-07, + 9.453879474710437978e-07, + 9.457557140978718877e-07, + 9.461218776433473419e-07, + 9.464864377720416193e-07, + 9.468493941512614599e-07, + 9.472107464509301944e-07, + 9.475704943436675771e-07, + 9.479286375047818446e-07, + 9.482851756122247176e-07, + 9.486401083466911390e-07, + 9.489934353914922186e-07, + 9.493451564326394075e-07, + 9.496952711588207806e-07, + 9.500437792613968021e-07, + 9.503906804343996895e-07, + 9.507359743745854010e-07, + 9.510796607813349555e-07, + 9.514217393567257955e-07, + 9.517622098055115642e-07, + 9.521010718351109879e-07, + 9.524383251556694979e-07, + 9.527739694799634099e-07, + 9.531080045234591104e-07, + 9.534404300043051156e-07, + 9.537712456433251894e-07, + 9.541004511640075437e-07, + 9.544280462925696366e-07, + 9.547540307578709278e-07, + 9.550784042913947730e-07, + 9.554011666274174077e-07, + 9.557223175028173641e-07, + 9.560418566571455636e-07, + 9.563597838326937141e-07, + 9.566760987743750909e-07, + 9.569908012297978042e-07, + 9.573038909492497650e-07, + 9.576153676856819557e-07, + 9.579252311947725932e-07, + 9.582334812348430605e-07, + 9.585401175668435076e-07, + 9.588451399545061639e-07, + 9.591485481641661914e-07, + 9.594503419648449051e-07, + 9.597505211283027129e-07, + 9.600490854288688618e-07, + 9.603460346436601842e-07, + 9.606413685524070327e-07, + 9.609350869375312073e-07, + 9.612271895841196967e-07, + 9.615176762800013358e-07, + 9.618065468155640573e-07, + 9.620938009839971439e-07, + 9.623794385810917518e-07, + 9.626634594053226490e-07, + 9.629458632579005203e-07, + 9.632266499426228890e-07, + 9.635058192660083716e-07, + 9.637833710372801609e-07, + 9.640593050682995339e-07, + 9.643336211736020622e-07, + 9.646063191704554224e-07, + 9.648773988786999417e-07, + 9.651468601209618387e-07, + 9.654147027224734407e-07, + 9.656809265111549223e-07, + 9.659455313176494573e-07, + 9.662085169751967988e-07, + 9.664698833197522877e-07, + 9.667296301899749940e-07, + 9.669877574271531781e-07, + 9.672442648752536302e-07, + 9.674991523809748218e-07, + 9.677524197935959220e-07, + 9.680040669651294752e-07, + 9.682540937502777790e-07, + 9.685025000063738036e-07, + 9.687492855934436603e-07, + 9.689944503741854261e-07, + 9.692379942139536847e-07, + 9.694799169808213607e-07, + 9.697202185454876040e-07, + 9.699588987813449177e-07, + 9.701959575644550175e-07, + 9.704313947735473492e-07, + 9.706652102900131599e-07, + 9.708974039979565312e-07, + 9.711279757841117940e-07, + 9.713569255378932911e-07, + 9.715842531513974956e-07, + 9.718099585193663758e-07, + 9.720340415392562174e-07, + 9.722565021111537668e-07, + 9.724773401378295942e-07, + 9.726965555247222120e-07, + 9.729141481799378627e-07, + 9.731301180142420489e-07, + 9.733444649411095081e-07, + 9.735571888766369680e-07, + 9.737682897396058275e-07, + 9.739777674514677568e-07, + 9.741856219363377094e-07, + 9.743918531209884165e-07, + 9.745964609348927385e-07, + 9.747994453101565378e-07, + 9.750008061815671712e-07, + 9.752005434865680793e-07, + 9.753986571652617507e-07, + 9.755951471604531327e-07, + 9.757900134175725511e-07, + 9.759832558847269560e-07, + 9.761748745126937805e-07, + 9.763648692549069648e-07, + 9.765532400674546268e-07, + 9.767399869091184493e-07, + 9.769251097413167168e-07, + 9.771086085281348089e-07, + 9.772904832363188472e-07, + 9.774707338352801427e-07, + 9.776493602970816430e-07, + 9.778263625964783781e-07, + 9.780017407108490626e-07, + 9.781754946202473413e-07, + 9.783476243073856950e-07, + 9.785181297576206183e-07, + 9.786870109590053467e-07, + 9.788542679022299293e-07, + 9.790199005806051351e-07, + 9.791839089901672736e-07, + 9.793462931295655388e-07, + 9.795070530001056321e-07, + 9.796661886057908430e-07, + 9.798236999532070643e-07, + 9.799795870516746232e-07, + 9.801338499131142378e-07, + 9.802864885521245209e-07, + 9.804375029859360285e-07, + 9.805868932344857986e-07, + 9.807346593202814024e-07, + 9.808808012685576456e-07, + 9.810253191071617950e-07, + 9.811682128665982599e-07, + 9.813094825800510383e-07, + 9.814491282833021902e-07, + 9.815871500148146344e-07, + 9.817235478157141501e-07, + 9.818583217297512595e-07, + 9.819914718033213452e-07, + 9.821229980855125076e-07, + 9.822529006279907918e-07, + 9.823811794851310545e-07, + 9.825078347139189195e-07, + 9.826328663739922824e-07, + 9.827562745276624868e-07, + 9.828780592398374557e-07, + 9.829982205780873367e-07, + 9.831167586126618659e-07, + 9.832336734164107473e-07, + 9.833489650648315099e-07, + 9.834626336360980947e-07, + 9.835746792109780581e-07, + 9.836851018728999101e-07, + 9.837939017079522678e-07, + 9.839010788048434095e-07, + 9.840066332549184270e-07, + 9.841105651521715077e-07, + 9.842128745932181941e-07, + 9.843135616773445120e-07, + 9.844126265064406899e-07, + 9.845100691850452047e-07, + 9.846058898203369470e-07, + 9.847000885221206093e-07, + 9.847926654028364273e-07, + 9.848836205775750026e-07, + 9.849729541640408807e-07, + 9.850606662825779616e-07, + 9.851467570561614532e-07, + 9.852312266103870715e-07, + 9.853140750735172041e-07, + 9.853953025764059477e-07, + 9.854749092525526827e-07, + 9.855528952380836507e-07, + 9.856292606717538597e-07, + 9.857040056949367085e-07, + 9.857771304516542680e-07, + 9.858486350885374705e-07, + 9.859185197548489796e-07, + 9.859867846024700613e-07, + 9.860534297859111720e-07, + 9.861184554622992526e-07, + 9.861818617914048341e-07, + 9.862436489355958738e-07, + 9.863038170598707901e-07, + 9.863623663318576148e-07, + 9.864192969217832890e-07, + 9.864746090025230020e-07, + 9.865283027495438638e-07, + 9.865803783409487396e-07, + 9.866308359574425795e-07, + 9.866796757823597357e-07, + 9.867268980016374925e-07, + 9.867725028038516423e-07, + 9.868164903801641802e-07, + 9.868588609243677744e-07, + 9.868996146328595074e-07, + 9.869387517046546406e-07, + 9.869762723413662855e-07, + 9.870121767472517785e-07, + 9.870464651291275546e-07, + 9.870791376964680380e-07, + 9.871101946613222095e-07, + 9.871396362383591346e-07, + 9.871674626448601286e-07, + 9.871936741007056272e-07, + 9.872182708283656575e-07, + 9.872412530529510838e-07, + 9.872626210021452094e-07, + 9.872823749062414695e-07, + 9.873005149981489371e-07, + 9.873170415133523007e-07, + 9.873319546899618392e-07, + 9.873452547686706465e-07, + 9.873569419927741138e-07, + 9.873670166081775522e-07, + 9.873754788633659120e-07, + 9.873823290094219933e-07, + 9.873875673000387283e-07, + 9.873911939914880529e-07, + 9.873932093426416585e-07, + 9.873936136149676047e-07, + 9.873924070725197306e-07, + 9.873895899819412552e-07, + 9.873851626124753651e-07, + 9.873791252359455209e-07, + 9.873714781267651984e-07, + 9.873622215619444526e-07, + 9.873513558210579429e-07, + 9.873388811862953307e-07, + 9.873247979424106702e-07, + 9.873091063767435831e-07, + 9.872918067792321769e-07, + 9.872728994423747158e-07, + 9.872523846612643497e-07, + 9.872302627335721733e-07, + 9.872065339595548491e-07, + 9.871811986420344908e-07, + 9.871542570864211096e-07, + 9.871257096006958850e-07, + 9.870955564954198474e-07, + 9.870637980837262542e-07, + 9.870304346813273665e-07, + 9.869954666064966612e-07, + 9.869588941800929718e-07, + 9.869207177255391001e-07, + 9.868809375688332518e-07, + 9.868395540385337898e-07, + 9.867965674657774450e-07, + 9.867519781842600468e-07, + 9.867057865302466873e-07, + 9.866579928425717212e-07, + 9.866085974626322014e-07, + 9.865576007343821615e-07, + 9.865050030043472272e-07, + 9.864508046216068284e-07, + 9.863950059378037285e-07, + 9.863376073071446598e-07, + 9.862786090863846531e-07, + 9.862180116348499076e-07, + 9.861558153144115331e-07, + 9.860920204895005847e-07, + 9.860266275271004396e-07, + 9.859596367967501852e-07, + 9.858910486705416541e-07, + 9.858208635231122252e-07, + 9.857490817316596457e-07, + 9.856757036759255149e-07, + 9.856007297381965542e-07, + 9.855241603033090542e-07, + 9.854459957586480274e-07, + 9.853662364941423385e-07, + 9.852848829022604683e-07, + 9.852019353780227962e-07, + 9.851173943189842362e-07, + 9.850312601252412242e-07, + 9.849435331994334129e-07, + 9.848542139467362598e-07, + 9.847633027748639918e-07, + 9.846708000940674878e-07, + 9.845767063171272906e-07, + 9.844810218593730886e-07, + 9.843837471386515287e-07, + 9.842848825753520506e-07, + 9.841844285923916403e-07, + 9.840823856152135597e-07, + 9.839787540717941226e-07, + 9.838735343926369775e-07, + 9.837667270107743778e-07, + 9.836583323617599824e-07, + 9.835483508836722436e-07, + 9.834367830171169482e-07, + 9.833236292052132417e-07, + 9.832088898936139567e-07, + 9.830925655304804139e-07, + 9.829746565664949158e-07, + 9.828551634548673114e-07, + 9.827340866513057733e-07, + 9.826114266140519494e-07, + 9.824871838038491997e-07, + 9.823613586839569954e-07, + 9.822339517201511310e-07, + 9.821049633807050893e-07, + 9.819743941364188406e-07, + 9.818422444605932199e-07, + 9.817085148290284449e-07, + 9.815732057200404210e-07, + 9.814363176144505770e-07, + 9.812978509955678659e-07, + 9.811578063492245517e-07, + 9.810161841637406342e-07, + 9.808729849299412132e-07, + 9.807282091411467474e-07, + 9.805818572931808898e-07, + 9.804339298843467705e-07, + 9.802844274154699838e-07, + 9.801333503898445896e-07, + 9.799806993132659363e-07, + 9.798264746940300251e-07, + 9.796706770429032290e-07, + 9.795133068731612560e-07, + 9.793543647005556915e-07, + 9.791938510433190802e-07, + 9.790317664221814435e-07, + 9.788681113603482569e-07, + 9.787028863835142135e-07, + 9.785360920198553898e-07, + 9.783677288000099750e-07, + 9.781977972571157529e-07, + 9.780262979267804551e-07, + 9.778532313470876904e-07, + 9.776785980585946160e-07, + 9.775023986043336307e-07, + 9.773246335298068699e-07, + 9.771453033829910755e-07, + 9.769644087143295496e-07, + 9.767819500767330011e-07, + 9.765979280255842046e-07, + 9.764123431187322829e-07, + 9.762251959164717430e-07, + 9.760364869815882156e-07, + 9.758462168793108100e-07, + 9.756543861773335009e-07, + 9.754609954458172470e-07, + 9.752660452573618262e-07, + 9.750695361870369647e-07, + 9.748714688123656078e-07, + 9.746718437133256140e-07, + 9.744706614723436141e-07, + 9.742679226743055992e-07, + 9.740636279065266388e-07, + 9.738577777587915390e-07, + 9.736503728233211726e-07, + 9.734414136947853963e-07, + 9.732309009702952159e-07, + 9.730188352494165503e-07, + 9.728052171341319035e-07, + 9.725900472288852571e-07, + 9.723733261405496718e-07, + 9.721550544784389332e-07, + 9.719352328543094586e-07, + 9.717138618823245093e-07, + 9.714909421791092477e-07, + 9.712664743637244796e-07, + 9.710404590576259965e-07, + 9.708128968847312793e-07, + 9.705837884713773584e-07, + 9.703531344463095910e-07, + 9.701209354407170239e-07, + 9.698871920882061363e-07, + 9.696519050248065567e-07, + 9.694150748889736042e-07, + 9.691767023215590661e-07, + 9.689367879658457139e-07, + 9.686953324675545037e-07, + 9.684523364747795660e-07, + 9.682078006380502512e-07, + 9.679617256103199062e-07, + 9.677141120469154758e-07, + 9.674649606055967953e-07, + 9.672142719465481201e-07, + 9.669620467323160804e-07, + 9.667082856278810439e-07, + 9.664529893006270460e-07, + 9.661961584203066380e-07, + 9.659377936591291902e-07, + 9.656778956916446367e-07, + 9.654164651948311435e-07, + 9.651535028480614385e-07, + 9.648890093330801536e-07, + 9.646229853340410944e-07, + 9.643554315375042751e-07, + 9.640863486323825558e-07, + 9.638157373100017817e-07, + 9.635435982640751603e-07, + 9.632699321906636627e-07, + 9.629947397882749147e-07, + 9.627180217577367771e-07, + 9.624397788022873429e-07, + 9.621600116275459265e-07, + 9.618787209415041698e-07, + 9.615959074544993608e-07, + 9.613115718793073952e-07, + 9.610257149310066162e-07, + 9.607383373270870813e-07, + 9.604494397874071523e-07, + 9.601590230341530493e-07, + 9.598670877919388005e-07, + 9.595736347877075630e-07, + 9.592786647507521634e-07, + 9.589821784127489787e-07, + 9.586841765077287143e-07, + 9.583846597720787329e-07, + 9.580836289445504661e-07, + 9.577810847662270156e-07, + 9.574770279805678337e-07, + 9.571714593333845837e-07, + 9.568643795728032342e-07, + 9.565557894493540572e-07, + 9.562456897158831124e-07, + 9.559340811275634710e-07, + 9.556209644419437081e-07, + 9.553063404189023747e-07, + 9.549902098206579501e-07, + 9.546725734117652426e-07, + 9.543534319591321175e-07, + 9.540327862319657117e-07, + 9.537106370018370186e-07, + 9.533869850426399142e-07, + 9.530618311306067203e-07, + 9.527351760442993112e-07, + 9.524070205645751263e-07, + 9.520773654746504861e-07, + 9.517462115600589811e-07, + 9.514135596086513668e-07, + 9.510794104105963038e-07, + 9.507437647584019583e-07, + 9.504066234468528969e-07, + 9.500679872730840974e-07, + 9.497278570365283257e-07, + 9.493862335389404888e-07, + 9.490431175843877877e-07, + 9.486985099792143539e-07, + 9.483524115321100707e-07, + 9.480048230540548808e-07, + 9.476557453583289508e-07, + 9.473051792605198711e-07, + 9.469531255785244553e-07, + 9.465995851325034247e-07, + 9.462445587449328649e-07, + 9.458880472406241314e-07, + 9.455300514466141589e-07, + 9.451705721922725047e-07, + 9.448096103092584682e-07, + 9.444471666314884796e-07, + 9.440832419951942280e-07, + 9.437178372388847562e-07, + 9.433509532033476259e-07, + 9.429825907316746459e-07, + 9.426127506691870157e-07, + 9.422414338635089116e-07, + 9.418686411645874977e-07, + 9.414943734245590947e-07, + 9.411186314978875641e-07, + 9.407414162413081921e-07, + 9.403627285137754910e-07, + 9.399825691765661142e-07, + 9.396009390932002936e-07, + 9.392178391294583565e-07, + 9.388332701533846437e-07, + 9.384472330353027555e-07, + 9.380597286477300020e-07, + 9.376707578655370681e-07, + 9.372803215657631492e-07, + 9.368884206277456526e-07, + 9.364950559330726583e-07, + 9.361002283655404610e-07, + 9.357039388112224976e-07, + 9.353061881584761236e-07, + 9.349069772978179930e-07, + 9.345063071220726072e-07, + 9.341041785262888820e-07, + 9.337005924077036190e-07, + 9.332955496658920662e-07, + 9.328890512025588068e-07, + 9.324810979217016593e-07, + 9.320716907295492098e-07, + 9.316608305344914605e-07, + 9.312485182472479660e-07, + 9.308347547807128263e-07, + 9.304195410499669685e-07, + 9.300028779723641212e-07, + 9.295847664674788273e-07, + 9.291652074570350816e-07, + 9.287442018650687497e-07, + 9.283217506177880188e-07, + 9.278978546435730805e-07, + 9.274725148730653867e-07, + 9.270457322390976635e-07, + 9.266175076767114873e-07, + 9.261878421231657548e-07, + 9.257567365178719912e-07, + 9.253241918024915470e-07, + 9.248902089208922936e-07, + 9.244547888190614846e-07, + 9.240179324452877623e-07, + 9.235796407500005388e-07, + 9.231399146857821721e-07, + 9.226987552074659046e-07, + 9.222561632720402537e-07, + 9.218121398386926347e-07, + 9.213666858688033250e-07, + 9.209198023258844784e-07, + 9.204714901756779567e-07, + 9.200217503860886264e-07, + 9.195705839271901818e-07, + 9.191179917712346743e-07, + 9.186639748926691351e-07, + 9.182085342680463195e-07, + 9.177516708761468911e-07, + 9.172933856978965186e-07, + 9.168336797163859928e-07, + 9.163725539168665679e-07, + 9.159100092867648903e-07, + 9.154460468156170364e-07, + 9.149806674951689914e-07, + 9.145138723192979812e-07, + 9.140456622840342836e-07, + 9.135760383875780632e-07, + 9.131050016302225029e-07, + 9.126325530144614830e-07, + 9.121586935449086897e-07, + 9.116834242283310730e-07, + 9.112067460736280939e-07, + 9.107286600918554418e-07, + 9.102491672961519780e-07, + 9.097682687018438142e-07, + 9.092859653263734800e-07, + 9.088022581893089224e-07, + 9.083171483123467882e-07, + 9.078306367193357171e-07, + 9.073427244361833802e-07, + 9.068534124909758053e-07, + 9.063627019139058031e-07, + 9.058705937372786846e-07, + 9.053770889955375657e-07, + 9.048821887251753824e-07, + 9.043858939648493456e-07, + 9.038882057553689769e-07, + 9.033891251395444898e-07, + 9.028886531623636076e-07, + 9.023867908709178718e-07, + 9.018835393143501260e-07, + 9.013788995439455718e-07, + 9.008728726130817939e-07, + 9.003654595772259014e-07, + 8.998566614939356927e-07, + 8.993464794228817836e-07, + 8.988349144257456465e-07, + 8.983219675664330621e-07, + 8.978076399107935400e-07, + 8.972919325268404413e-07, + 8.967748464846741107e-07, + 8.962563828564007723e-07, + 8.957365427162548209e-07, + 8.952153271405950097e-07, + 8.946927372077415027e-07, + 8.941687739981560807e-07, + 8.936434385943702497e-07, + 8.931167320809096427e-07, + 8.925886555444952965e-07, + 8.920592100737704833e-07, + 8.915283967595198802e-07, + 8.909962166945864547e-07, + 8.904626709737818904e-07, + 8.899277606941015220e-07, + 8.893914869545200940e-07, + 8.888538508560329484e-07, + 8.883148535017355393e-07, + 8.877744959967644584e-07, + 8.872327794482251198e-07, + 8.866897049653790597e-07, + 8.861452736594725187e-07, + 8.855994866437330531e-07, + 8.850523450335004017e-07, + 8.845038499461134072e-07, + 8.839540025009446382e-07, + 8.834028038194151065e-07, + 8.828502550249045879e-07, + 8.822963572428831236e-07, + 8.817411116008354225e-07, + 8.811845192281928873e-07, + 8.806265812565148790e-07, + 8.800672988193233339e-07, + 8.795066730520995874e-07, + 8.789447050924076172e-07, + 8.783813960797903874e-07, + 8.778167471558035185e-07, + 8.772507594640201573e-07, + 8.766834341499556975e-07, + 8.761147723611857284e-07, + 8.755447752472626026e-07, + 8.749734439597311059e-07, + 8.744007796521312102e-07, + 8.738267834800102497e-07, + 8.732514566008378996e-07, + 8.726748001741449843e-07, + 8.720968153614097625e-07, + 8.715175033261023968e-07, + 8.709368652336618723e-07, + 8.703549022515376063e-07, + 8.697716155490742528e-07, + 8.691870062976666029e-07, + 8.686010756706471414e-07, + 8.680138248433251165e-07, + 8.674252549929947980e-07, + 8.668353672988419859e-07, + 8.662441629420810187e-07, + 8.656516431058713397e-07, + 8.650578089753161214e-07, + 8.644626617374811114e-07, + 8.638662025814068091e-07, + 8.632684326980095738e-07, + 8.626693532802273150e-07, + 8.620689655229131897e-07, + 8.614672706228690599e-07, + 8.608642697788375519e-07, + 8.602599641915149735e-07, + 8.596543550634745515e-07, + 8.590474435992867108e-07, + 8.584392310054281237e-07, + 8.578297184903080741e-07, + 8.572189072642900569e-07, + 8.566067985395788047e-07, + 8.559933935303606838e-07, + 8.553786934528043292e-07, + 8.547626995248612747e-07, + 8.541454129664873455e-07, + 8.535268349995573201e-07, + 8.529069668477756739e-07, + 8.522858097368352922e-07, + 8.516633648943040738e-07, + 8.510396335496598707e-07, + 8.504146169343058408e-07, + 8.497883162814678512e-07, + 8.491607328263136976e-07, + 8.485318678059881509e-07, + 8.479017224593743052e-07, + 8.472702980273435586e-07, + 8.466375957526586280e-07, + 8.460036168798834457e-07, + 8.453683626555290610e-07, + 8.447318343280481346e-07, + 8.440940331476287918e-07, + 8.434549603664302034e-07, + 8.428146172384882479e-07, + 8.421730050196053965e-07, + 8.415301249676313992e-07, + 8.408859783421067899e-07, + 8.402405664045355244e-07, + 8.395938904182809020e-07, + 8.389459516484658271e-07, + 8.382967513622188721e-07, + 8.376462908284535195e-07, + 8.369945713178718680e-07, + 8.363415941031201686e-07, + 8.356873604586755338e-07, + 8.350318716607615524e-07, + 8.343751289876301393e-07, + 8.337171337191823828e-07, + 8.330578871372677585e-07, + 8.323973905255436279e-07, + 8.317356451694957793e-07, + 8.310726523564453094e-07, + 8.304084133755676817e-07, + 8.297429295177800715e-07, + 8.290762020759030428e-07, + 8.284082323445820920e-07, + 8.277390216201671579e-07, + 8.270685712009884360e-07, + 8.263968823871132809e-07, + 8.257239564803589112e-07, + 8.250497947844343934e-07, + 8.243743986048266107e-07, + 8.236977692488305437e-07, + 8.230199080255628234e-07, + 8.223408162458613573e-07, + 8.216604952224404432e-07, + 8.209789462698118881e-07, + 8.202961707041657893e-07, + 8.196121698436430668e-07, + 8.189269450080953293e-07, + 8.182404975190962038e-07, + 8.175528287000899892e-07, + 8.168639398762637551e-07, + 8.161738323745954101e-07, + 8.154825075238231035e-07, + 8.147899666544895880e-07, + 8.140962110988270238e-07, + 8.134012421909076439e-07, + 8.127050612665526990e-07, + 8.120076696633344681e-07, + 8.113090687206215758e-07, + 8.106092597794505600e-07, + 8.099082441826931618e-07, + 8.092060232749508692e-07, + 8.085025984025711169e-07, + 8.077979709136501450e-07, + 8.070921421580572453e-07, + 8.063851134873100359e-07, + 8.056768862547666312e-07, + 8.049674618154813296e-07, + 8.042568415262453761e-07, + 8.035450267456121618e-07, + 8.028320188337753574e-07, + 8.021178191527473191e-07, + 8.014024290662245161e-07, + 8.006858499396424826e-07, + 7.999680831401406650e-07, + 7.992491300366107036e-07, + 7.985289919995728710e-07, + 7.978076704013124448e-07, + 7.970851666159142242e-07, + 7.963614820189948673e-07, + 7.956366179879869652e-07, + 7.949105759020363389e-07, + 7.941833571418880075e-07, + 7.934549630900745473e-07, + 7.927253951307979308e-07, + 7.919946546499469965e-07, + 7.912627430351284716e-07, + 7.905296616755474344e-07, + 7.897954119621537455e-07, + 7.890599952876681992e-07, + 7.883234130463072385e-07, + 7.875856666340858750e-07, + 7.868467574486916925e-07, + 7.861066868893641453e-07, + 7.853654563572170657e-07, + 7.846230672548291234e-07, + 7.838795209865523576e-07, + 7.831348189583745341e-07, + 7.823889625779729315e-07, + 7.816419532545520292e-07, + 7.808937923991895195e-07, + 7.801444814243968043e-07, + 7.793940217444525135e-07, + 7.786424147752908032e-07, + 7.778896619343532302e-07, + 7.771357646409106251e-07, + 7.763807243157812416e-07, + 7.756245423813545797e-07, + 7.748672202617422632e-07, + 7.741087593826862425e-07, + 7.733491611714379866e-07, + 7.725884270570824732e-07, + 7.718265584701149900e-07, + 7.710635568427671362e-07, + 7.702994236088622978e-07, + 7.695341602038375642e-07, + 7.687677680647344113e-07, + 7.680002486302423234e-07, + 7.672316033405604094e-07, + 7.664618336375838555e-07, + 7.656909409648100111e-07, + 7.649189267672080509e-07, + 7.641457924915293071e-07, + 7.633715395860274307e-07, + 7.625961695004803084e-07, + 7.618196836863515284e-07, + 7.610420835966548550e-07, + 7.602633706859888513e-07, + 7.594835464105594312e-07, + 7.587026122280579927e-07, + 7.579205695978463885e-07, + 7.571374199808522118e-07, + 7.563531648394538114e-07, + 7.555678056377814123e-07, + 7.547813438414347353e-07, + 7.539937809175073501e-07, + 7.532051183347541755e-07, + 7.524153575634492837e-07, + 7.516245000754199938e-07, + 7.508325473440410483e-07, + 7.500395008442785525e-07, + 7.492453620525358152e-07, + 7.484501324468585419e-07, + 7.476538135068024861e-07, + 7.468564067134567428e-07, + 7.460579135494794295e-07, + 7.452583354989625847e-07, + 7.444576740476252912e-07, + 7.436559306826813276e-07, + 7.428531068928659551e-07, + 7.420492041684362356e-07, + 7.412442240012004660e-07, + 7.404381678843845587e-07, + 7.396310373128258004e-07, + 7.388228337828369033e-07, + 7.380135587922435921e-07, + 7.372032138404026038e-07, + 7.363918004280773852e-07, + 7.355793200576300518e-07, + 7.347657742328855453e-07, + 7.339511644591620204e-07, + 7.331354922432671392e-07, + 7.323187590935404230e-07, + 7.315009665196961276e-07, + 7.306821160330003789e-07, + 7.298622091463039956e-07, + 7.290412473737328988e-07, + 7.282192322310212073e-07, + 7.273961652353725363e-07, + 7.265720479053690472e-07, + 7.257468817611492182e-07, + 7.249206683242866136e-07, + 7.240934091178186819e-07, + 7.232651056662738618e-07, + 7.224357594955294915e-07, + 7.216053721329895806e-07, + 7.207739451076092676e-07, + 7.199414799495905235e-07, + 7.191079781907086830e-07, + 7.182734413641877190e-07, + 7.174378710045507411e-07, + 7.166012686480001017e-07, + 7.157636358319287639e-07, + 7.149249740952971253e-07, + 7.140852849784677406e-07, + 7.132445700232566731e-07, + 7.124028307727638763e-07, + 7.115600687717537234e-07, + 7.107162855661657400e-07, + 7.098714827034917454e-07, + 7.090256617326377862e-07, + 7.081788242037701883e-07, + 7.073309716686875100e-07, + 7.064821056804757997e-07, + 7.056322277935510534e-07, + 7.047813395638353977e-07, + 7.039294425486479280e-07, + 7.030765383065558429e-07, + 7.022226283977613265e-07, + 7.013677143836134453e-07, + 7.005117978269813723e-07, + 6.996548802921164267e-07, + 6.987969633445038427e-07, + 6.979380485512224412e-07, + 6.970781374806137577e-07, + 6.962172317023188877e-07, + 6.953553327874557286e-07, + 6.944924423085038896e-07, + 6.936285618391619656e-07, + 6.927636929547022332e-07, + 6.918978372316459190e-07, + 6.910309962477950693e-07, + 6.901631715824104270e-07, + 6.892943648160638361e-07, + 6.884245775306757230e-07, + 6.875538113095376486e-07, + 6.866820677371784773e-07, + 6.858093483995674529e-07, + 6.849356548839743324e-07, + 6.840609887789978675e-07, + 6.831853516745607227e-07, + 6.823087451619578613e-07, + 6.814311708336884100e-07, + 6.805526302836836166e-07, + 6.796731251071512073e-07, + 6.787926569006168918e-07, + 6.779112272619522090e-07, + 6.770288377902285204e-07, + 6.761454900859258027e-07, + 6.752611857508010412e-07, + 6.743759263879038991e-07, + 6.734897136015791529e-07, + 6.726025489975071385e-07, + 6.717144341825463086e-07, + 6.708253707649524028e-07, + 6.699353603542292634e-07, + 6.690444045611715054e-07, + 6.681525049978448225e-07, + 6.672596632776306681e-07, + 6.663658810150729426e-07, + 6.654711598261005510e-07, + 6.645755013278705962e-07, + 6.636789071388057542e-07, + 6.627813788786339785e-07, + 6.618829181682231176e-07, + 6.609835266298144837e-07, + 6.600832058868646695e-07, + 6.591819575640827119e-07, + 6.582797832874220449e-07, + 6.573766846841257105e-07, + 6.564726633825568454e-07, + 6.555677210124425216e-07, + 6.546618592047009509e-07, + 6.537550795914870133e-07, + 6.528473838061845276e-07, + 6.519387734834451093e-07, + 6.510292502590328458e-07, + 6.501188157700431484e-07, + 6.492074716547599216e-07, + 6.482952195526803388e-07, + 6.473820611045523233e-07, + 6.464679979522196473e-07, + 6.455530317388135730e-07, + 6.446371641087819697e-07, + 6.437203967075477473e-07, + 6.428027311818826097e-07, + 6.418841691797610477e-07, + 6.409647123501907207e-07, + 6.400443623436428549e-07, + 6.391231208115048486e-07, + 6.382009894065048474e-07, + 6.372779697825516550e-07, + 6.363540635946143484e-07, + 6.354292724989229192e-07, + 6.345035981529898727e-07, + 6.335770422152687678e-07, + 6.326496063455336878e-07, + 6.317212922047245510e-07, + 6.307921014547841626e-07, + 6.298620357590517676e-07, + 6.289310967819062379e-07, + 6.279992861887939189e-07, + 6.270666056464362580e-07, + 6.261330568226973503e-07, + 6.251986413864263900e-07, + 6.242633610078959043e-07, + 6.233272173582330768e-07, + 6.223902121098595691e-07, + 6.214523469363375727e-07, + 6.205136235121900260e-07, + 6.195740435133096260e-07, + 6.186336086165921680e-07, + 6.176923204999708513e-07, + 6.167501808426241191e-07, + 6.158071913248360049e-07, + 6.148633536278504417e-07, + 6.139186694342960499e-07, + 6.129731404276267778e-07, + 6.120267682925622523e-07, + 6.110795547148783507e-07, + 6.101315013814508224e-07, + 6.091826099802502069e-07, + 6.082328822003725388e-07, + 6.072823197318913287e-07, + 6.063309242660792741e-07, + 6.053786974952509231e-07, + 6.044256411128035434e-07, + 6.034717568132083348e-07, + 6.025170462920502396e-07, + 6.015615112458645710e-07, + 6.006051533723766175e-07, + 5.996479743703331895e-07, + 5.986899759395452883e-07, + 5.977311597809212466e-07, + 5.967715275963042034e-07, + 5.958110810887108624e-07, + 5.948498219621681195e-07, + 5.938877519217504388e-07, + 5.929248726735751938e-07, + 5.919611859248406778e-07, + 5.909966933836624148e-07, + 5.900313967593113880e-07, + 5.890652977620517262e-07, + 5.880983981031744802e-07, + 5.871306994949974104e-07, + 5.861622036509065975e-07, + 5.851929122851780365e-07, + 5.842228271132332280e-07, + 5.832519498514632083e-07, + 5.822802822172729117e-07, + 5.813078259291157936e-07, + 5.803345827063235766e-07, + 5.793605542693619489e-07, + 5.783857423396467575e-07, + 5.774101486395944075e-07, + 5.764337748926111675e-07, + 5.754566228231391217e-07, + 5.744786941564807281e-07, + 5.734999906190456224e-07, + 5.725205139381865059e-07, + 5.715402658422345086e-07, + 5.705592480604926250e-07, + 5.695774623232823009e-07, + 5.685949103617223577e-07, + 5.676115939081957075e-07, + 5.666275146957514539e-07, + 5.656426744585674779e-07, + 5.646570749317820898e-07, + 5.636707178513600923e-07, + 5.626836049542999861e-07, + 5.616957379786764271e-07, + 5.607071186632575794e-07, + 5.597177487479188911e-07, + 5.587276299734797226e-07, + 5.577367640815253636e-07, + 5.567451528148696196e-07, + 5.557527979169602998e-07, + 5.547597011323419098e-07, + 5.537658642064843384e-07, + 5.527712888856501913e-07, + 5.517759769171064438e-07, + 5.507799300491598039e-07, + 5.497831500307799946e-07, + 5.487856386120112005e-07, + 5.477873975438056253e-07, + 5.467884285778469915e-07, + 5.457887334669763862e-07, + 5.447883139648034734e-07, + 5.437871718257451389e-07, + 5.427853088052431790e-07, + 5.417827266596195625e-07, + 5.407794271459167661e-07, + 5.397754120223539009e-07, + 5.387706830477335779e-07, + 5.377652419819019525e-07, + 5.367590905855806949e-07, + 5.357522306201904888e-07, + 5.347446638482740194e-07, + 5.337363920331107842e-07, + 5.327274169387531985e-07, + 5.317177403302433299e-07, + 5.307073639734754667e-07, + 5.296962896350249119e-07, + 5.286845190826136391e-07, + 5.276720540845167348e-07, + 5.266588964100149251e-07, + 5.256450478291884294e-07, + 5.246305101129559237e-07, + 5.236152850330673412e-07, + 5.225993743621466470e-07, + 5.215827798735147028e-07, + 5.205655033414517407e-07, + 5.195475465410096401e-07, + 5.185289112480619021e-07, + 5.175095992392957091e-07, + 5.164896122922548053e-07, + 5.154689521851621496e-07, + 5.144476206971765663e-07, + 5.134256196082150804e-07, + 5.124029506989983389e-07, + 5.113796157510867164e-07, + 5.103556165466998969e-07, + 5.093309548689829475e-07, + 5.083056325018239954e-07, + 5.072796512298974257e-07, + 5.062530128386538236e-07, + 5.052257191143766193e-07, + 5.041977718439834592e-07, + 5.031691728153004321e-07, + 5.021399238168792167e-07, + 5.011100266380373152e-07, + 5.000794830688551950e-07, + 4.990482949002175810e-07, + 4.980164639236373789e-07, + 4.969839919315108442e-07, + 4.959508807169411869e-07, + 4.949171320737807119e-07, + 4.938827477966712648e-07, + 4.928477296808630726e-07, + 4.918120795224780648e-07, + 4.907757991183298796e-07, + 4.897388902659673795e-07, + 4.887013547636651225e-07, + 4.876631944104717490e-07, + 4.866244110060244812e-07, + 4.855850063508148801e-07, + 4.845449822460068391e-07, + 4.835043404934790414e-07, + 4.824630828958691117e-07, + 4.814212112563840927e-07, + 4.803787273790280851e-07, + 4.793356330686418465e-07, + 4.782919301304948387e-07, + 4.772476203707330970e-07, + 4.762027055961951592e-07, + 4.751571876142728340e-07, + 4.741110682331405889e-07, + 4.730643492617831843e-07, + 4.720170325096022793e-07, + 4.709691197868550366e-07, + 4.699206129044712689e-07, + 4.688715136738747148e-07, + 4.678218239074695537e-07, + 4.667715454180149777e-07, + 4.657206800191069414e-07, + 4.646692295250040441e-07, + 4.636171957504841690e-07, + 4.625645805110677826e-07, + 4.615113856230622451e-07, + 4.604576129031475581e-07, + 4.594032641688333392e-07, + 4.583483412382649041e-07, + 4.572928459300459191e-07, + 4.562367800637307924e-07, + 4.551801454591897692e-07, + 4.541229439370993645e-07, + 4.530651773187186930e-07, + 4.520068474259734314e-07, + 4.509479560812270136e-07, + 4.498885051077760391e-07, + 4.488284963292107634e-07, + 4.477679315699172289e-07, + 4.467068126548810721e-07, + 4.456451414095156276e-07, + 4.445829196601039745e-07, + 4.435201492333935245e-07, + 4.424568319566323916e-07, + 4.413929696577953914e-07, + 4.403285641654029345e-07, + 4.392636173085564958e-07, + 4.381981309169900196e-07, + 4.371321068208740424e-07, + 4.360655468510933613e-07, + 4.349984528391108735e-07, + 4.339308266167660351e-07, + 4.328626700167491471e-07, + 4.317939848721688385e-07, + 4.307247730166063301e-07, + 4.296550362843376742e-07, + 4.285847765101424313e-07, + 4.275139955293584624e-07, + 4.264426951778656770e-07, + 4.253708772921380718e-07, + 4.242985437090493906e-07, + 4.232256962661527503e-07, + 4.221523368014920175e-07, + 4.210784671536372252e-07, + 4.200040891617443413e-07, + 4.189292046653460519e-07, + 4.178538155046423458e-07, + 4.167779235203071272e-07, + 4.157015305535279194e-07, + 4.146246384460089364e-07, + 4.135472490400102569e-07, + 4.124693641781588314e-07, + 4.113909857037290606e-07, + 4.103121154604466555e-07, + 4.092327552925377114e-07, + 4.081529070447692073e-07, + 4.070725725622584761e-07, + 4.059917536907548961e-07, + 4.049104522764436971e-07, + 4.038286701659968880e-07, + 4.027464092065627750e-07, + 4.016636712458133424e-07, + 4.005804581317555760e-07, + 3.994967717129565093e-07, + 3.984126138385947864e-07, + 3.973279863580304754e-07, + 3.962428911212700362e-07, + 3.951573299787827796e-07, + 3.940713047813469183e-07, + 3.929848173803361826e-07, + 3.918978696275245254e-07, + 3.908104633751305393e-07, + 3.897226004758647840e-07, + 3.886342827827329573e-07, + 3.875455121492735409e-07, + 3.864562904295982987e-07, + 3.853666194779646316e-07, + 3.842765011492472684e-07, + 3.831859372987443488e-07, + 3.820949297820324744e-07, + 3.810034804552448005e-07, + 3.799115911748891883e-07, + 3.788192637978761578e-07, + 3.777265001815292630e-07, + 3.766333021836225208e-07, + 3.755396716621422886e-07, + 3.744456104758071839e-07, + 3.733511204833988221e-07, + 3.722562035442781364e-07, + 3.711608615182014125e-07, + 3.700650962651648052e-07, + 3.689689096456416137e-07, + 3.678723035206316738e-07, + 3.667752797512242366e-07, + 3.656778401990720945e-07, + 3.645799867261998345e-07, + 3.634817211948103969e-07, + 3.623830454678030363e-07, + 3.612839614081057532e-07, + 3.601844708791937315e-07, + 3.590845757448523809e-07, + 3.579842778692668046e-07, + 3.568835791167766898e-07, + 3.557824813524046963e-07, + 3.546809864411832253e-07, + 3.535790962486728558e-07, + 3.524768126407718153e-07, + 3.513741374835202092e-07, + 3.502710726435751007e-07, + 3.491676199877779415e-07, + 3.480637813831984585e-07, + 3.469595586973711882e-07, + 3.458549537981006055e-07, + 3.447499685535049586e-07, + 3.436446048320638077e-07, + 3.425388645024189730e-07, + 3.414327494336648021e-07, + 3.403262614951943803e-07, + 3.392194025565118074e-07, + 3.381121744877029889e-07, + 3.370045791590031196e-07, + 3.358966184408409418e-07, + 3.347882942040766548e-07, + 3.336796083198066744e-07, + 3.325705626594057195e-07, + 3.314611590945270244e-07, + 3.303513994971494541e-07, + 3.292412857393733703e-07, + 3.281308196937155042e-07, + 3.270200032329079981e-07, + 3.259088382299437743e-07, + 3.247973265581248697e-07, + 3.236854700908623763e-07, + 3.225732707019670269e-07, + 3.214607302654486070e-07, + 3.203478506555646066e-07, + 3.192346337468138668e-07, + 3.181210814139855493e-07, + 3.170071955319604015e-07, + 3.158929779759972118e-07, + 3.147784306215370399e-07, + 3.136635553442505969e-07, + 3.125483540200805978e-07, + 3.114328285250447725e-07, + 3.103169807355252343e-07, + 3.092008125280710146e-07, + 3.080843257794434855e-07, + 3.069675223666120717e-07, + 3.058504041668025840e-07, + 3.047329730572963139e-07, + 3.036152309156707498e-07, + 3.024971796198472225e-07, + 3.013788210476485422e-07, + 3.002601570772821781e-07, + 2.991411895871415230e-07, + 2.980219204556618978e-07, + 2.969023515616015549e-07, + 2.957824847838501954e-07, + 2.946623220014716389e-07, + 2.935418650937503037e-07, + 2.924211159399930550e-07, + 2.913000764197693907e-07, + 2.901787484129570231e-07, + 2.890571337993033801e-07, + 2.879352344589028555e-07, + 2.868130522720058032e-07, + 2.856905891188650120e-07, + 2.845678468800264503e-07, + 2.834448274361325421e-07, + 2.823215326679631957e-07, + 2.811979644564403030e-07, + 2.800741246826661743e-07, + 2.789500152276777922e-07, + 2.778256379729855777e-07, + 2.767009947998813647e-07, + 2.755760875899748359e-07, + 2.744509182249939412e-07, + 2.733254885866364548e-07, + 2.721998005568107974e-07, + 2.710738560176824643e-07, + 2.699476568512277977e-07, + 2.688212049397233600e-07, + 2.676945021655476754e-07, + 2.665675504109770944e-07, + 2.654403515587287426e-07, + 2.643129074912652650e-07, + 2.631852200913347566e-07, + 2.620572912417696982e-07, + 2.609291228252861035e-07, + 2.598007167249768101e-07, + 2.586720748238605401e-07, + 2.575431990049295987e-07, + 2.564140911513957258e-07, + 2.552847531465343473e-07, + 2.541551868734882229e-07, + 2.530253942157559187e-07, + 2.518953770567447863e-07, + 2.507651372798176020e-07, + 2.496346767685352418e-07, + 2.485039974064567291e-07, + 2.473731010771883622e-07, + 2.462419896644247426e-07, + 2.451106650517507809e-07, + 2.439791291229356176e-07, + 2.428473837617806862e-07, + 2.417154308519178547e-07, + 2.405832722773029814e-07, + 2.394509099217664048e-07, + 2.383183456690586570e-07, + 2.371855814030954151e-07, + 2.360526190077576014e-07, + 2.349194603669357995e-07, + 2.337861073645779004e-07, + 2.326525618844868726e-07, + 2.315188258106164305e-07, + 2.303849010268705250e-07, + 2.292507894171454837e-07, + 2.281164928653312551e-07, + 2.269820132553560629e-07, + 2.258473524709847595e-07, + 2.247125123961149695e-07, + 2.235774949145730081e-07, + 2.224423019101638027e-07, + 2.213069352666639582e-07, + 2.201713968678715729e-07, + 2.190356885974022096e-07, + 2.178998123389847745e-07, + 2.167637699762606385e-07, + 2.156275633928284500e-07, + 2.144911944722934486e-07, + 2.133546650980608946e-07, + 2.122179771536368451e-07, + 2.110811325224216638e-07, + 2.099441330877591744e-07, + 2.088069807329330881e-07, + 2.076696773412137222e-07, + 2.065322247956550303e-07, + 2.053946249793911161e-07, + 2.042568797754340844e-07, + 2.031189910667194892e-07, + 2.019809607361051429e-07, + 2.008427906664168824e-07, + 1.997044827402443281e-07, + 1.985660388402409457e-07, + 1.974274608489194345e-07, + 1.962887506486963293e-07, + 1.951499101219433513e-07, + 1.940109411507802559e-07, + 1.928718456173236223e-07, + 1.917326254037358223e-07, + 1.905932823917676492e-07, + 1.894538184632568493e-07, + 1.883142354999289372e-07, + 1.871745353832382447e-07, + 1.860347199946674524e-07, + 1.848947912155253349e-07, + 1.837547509269931087e-07, + 1.826146010101703837e-07, + 1.814743433458724320e-07, + 1.803339798148798498e-07, + 1.791935122979812539e-07, + 1.780529426755227392e-07, + 1.769122728279038962e-07, + 1.757715046353760579e-07, + 1.746306399778870815e-07, + 1.734896807353302698e-07, + 1.723486287875915673e-07, + 1.712074860140941470e-07, + 1.700662542942965192e-07, + 1.689249355074909640e-07, + 1.677835315325977817e-07, + 1.666420442487155466e-07, + 1.655004755344144696e-07, + 1.643588272682851963e-07, + 1.632171013287376367e-07, + 1.620752995937932304e-07, + 1.609334239415865751e-07, + 1.597914762499093791e-07, + 1.586494583962586097e-07, + 1.575073722580832445e-07, + 1.563652197126315408e-07, + 1.552230026367478003e-07, + 1.540807229074191826e-07, + 1.529383824010720845e-07, + 1.517959829941205948e-07, + 1.506535265627117219e-07, + 1.495110149827743635e-07, + 1.483684501300142238e-07, + 1.472258338799619890e-07, + 1.460831681077706480e-07, + 1.449404546885102335e-07, + 1.437976954970189557e-07, + 1.426548924076935884e-07, + 1.415120472949948562e-07, + 1.403691620329878138e-07, + 1.392262384953895438e-07, + 1.380832785558209643e-07, + 1.369402840875979027e-07, + 1.357972569637815735e-07, + 1.346541990572246888e-07, + 1.335111122403665293e-07, + 1.323679983855343025e-07, + 1.312248593647351964e-07, + 1.300816970497079159e-07, + 1.289385133119159332e-07, + 1.277953100225966421e-07, + 1.266520890525563496e-07, + 1.255088522724697815e-07, + 1.243656015526762118e-07, + 1.232223387632249648e-07, + 1.220790657738734824e-07, + 1.209357844541364788e-07, + 1.197924966730775171e-07, + 1.186492042996115459e-07, + 1.175059092022989510e-07, + 1.163626132493932674e-07, + 1.152193183088887321e-07, + 1.140760262483143493e-07, + 1.129327389350364002e-07, + 1.117894582360502316e-07, + 1.106461860180293047e-07, + 1.095029241473230378e-07, + 1.083596744900027044e-07, + 1.072164389116572856e-07, + 1.060732192776932931e-07, + 1.049300174531293106e-07, + 1.037868353026456118e-07, + 1.026436746905774232e-07, + 1.015005374809661968e-07, + 1.003574255373516366e-07, + 9.921434072307393051e-08, + 9.807128490106735250e-08, + 9.692825993390810656e-08, + 9.578526768386313699e-08, + 9.464231001268231422e-08, + 9.349938878185079761e-08, + 9.235650585263494735e-08, + 9.121366308562541631e-08, + 9.007086234123855387e-08, + 8.892810547951253568e-08, + 8.778539435995190662e-08, + 8.664273084182756283e-08, + 8.550011678397278881e-08, + 8.435755404482959279e-08, + 8.321504448249710670e-08, + 8.207258995452575719e-08, + 8.093019231816748442e-08, + 7.978785343042321565e-08, + 7.864557514758556005e-08, + 7.750335932573961697e-08, + 7.636120782055980712e-08, + 7.521912248715335678e-08, + 7.407710518031202540e-08, + 7.293515775455845416e-08, + 7.179328206368776238e-08, + 7.065147996127235263e-08, + 6.950975330045380534e-08, + 6.836810393373936594e-08, + 6.722653371355590435e-08, + 6.608504449153668679e-08, + 6.494363811907684412e-08, + 6.380231644712700019e-08, + 6.266108132598811780e-08, + 6.151993460581527159e-08, + 6.037887813615815907e-08, + 5.923791376600893818e-08, + 5.809704334405325344e-08, + 5.695626871851443481e-08, + 5.581559173694830395e-08, + 5.467501424679756394e-08, + 5.353453809467985482e-08, + 5.239416512694115728e-08, + 5.125389718940043208e-08, + 5.011373612739676935e-08, + 4.897368378578709895e-08, + 4.783374200899311476e-08, + 4.669391264079615377e-08, + 4.555419752463854788e-08, + 4.441459850346788894e-08, + 4.327511741953186815e-08, + 4.213575611488224737e-08, + 4.099651643091531734e-08, + 3.985740020842033733e-08, + 3.871840928782926428e-08, + 3.757954550901160542e-08, + 3.644081071132220280e-08, + 3.530220673364850173e-08, + 3.416373541420536366e-08, + 3.302539859083606065e-08, + 3.188719810085719556e-08, + 3.074913578085344214e-08, + 2.961121346718079507e-08, + 2.847343299550827558e-08, + 2.733579620086513029e-08, + 2.619830491789153646e-08, + 2.506096098063292189e-08, + 2.392376622258770313e-08, + 2.278672247670449958e-08, + 2.164983157542974594e-08, + 2.051309535050215114e-08, + 1.937651563325402697e-08, + 1.824009425440519434e-08, + 1.710383304411126752e-08, + 1.596773383201101848e-08, + 1.483179844702124437e-08, + 1.369602871763738150e-08, + 1.256042647172823053e-08, + 1.142499353658381057e-08, + 1.028973173891215791e-08, + 9.154642904887190094e-09, + 8.019728859943520380e-09, + 6.884991429076950999e-09, + 5.750432436639376181e-09, + 4.616053706386334297e-09, + 3.481857061524838744e-09, + 2.347844324508056834e-09, + 1.214017317335965540e-09, + 8.037786135013945036e-11, +-1.053072222718556720e-09, +-2.186331114752849539e-09, +-3.319396995201374109e-09, +-4.452268045283781937e-09, +-5.584942446740824743e-09, +-6.717418381786739459e-09, +-7.849694033566971932e-09, +-8.981767585655645263e-09, +-1.011363722226063194e-08, +-1.124530112837794049e-08, +-1.237675748949139596e-08, +-1.350800449177780886e-08, +-1.463904032205903341e-08, +-1.576986316775450224e-08, +-1.690047121708607774e-08, +-1.803086265882828479e-08, +-1.916103568226091832e-08, +-2.029098847762609535e-08, +-2.142071923562631184e-08, +-2.255022614762935848e-08, +-2.367950740587284612e-08, +-2.480856120291202293e-08, +-2.593738573232905866e-08, +-2.706597918818099752e-08, +-2.819433976525457284e-08, +-2.932246565896849386e-08, +-3.045035506562831991e-08, +-3.157800618187447953e-08, +-3.270541720539122046e-08, +-3.383258633435457911e-08, +-3.495951176763734925e-08, +-3.608619170501292584e-08, +-3.721262434665452985e-08, +-3.833880789359181859e-08, +-3.946474054766269086e-08, +-4.059042051126441807e-08, +-4.171584598750809541e-08, +-4.284101518042214813e-08, +-4.396592629440189250e-08, +-4.509057753491688769e-08, +-4.621496710795986805e-08, +-4.733909322030190523e-08, +-4.846295407944408749e-08, +-4.958654789362063661e-08, +-5.070987287175171224e-08, +-5.183292722364690494e-08, +-5.295570915970663059e-08, +-5.407821689107575440e-08, +-5.520044862984757365e-08, +-5.632240258856369100e-08, +-5.744407698066930803e-08, +-5.856547002046569864e-08, +-5.968657992286212115e-08, +-6.080740490357882158e-08, +-6.192794317910047332e-08, +-6.304819296662798232e-08, +-6.416815248428321754e-08, +-6.528781995080894960e-08, +-6.640719358572368567e-08, +-6.752627160952437513e-08, +-6.864505224318781150e-08, +-6.976353370862497300e-08, +-7.088171422863295344e-08, +-7.199959202664830353e-08, +-7.311716532694906156e-08, +-7.423443235460796797e-08, +-7.535139133549519181e-08, +-7.646804049623112184e-08, +-7.758437806438942946e-08, +-7.870040226819899253e-08, +-7.981611133674781857e-08, +-8.093150349993471088e-08, +-8.204657698842284061e-08, +-8.316133003384193613e-08, +-8.427576086849154361e-08, +-8.538986772554304432e-08, +-8.650364883899353109e-08, +-8.761710244366744940e-08, +-8.873022677517036796e-08, +-8.984302007009078422e-08, +-9.095548056570339825e-08, +-9.206760650017171236e-08, +-9.317939611250088842e-08, +-9.429084764249039347e-08, +-9.540195933093634794e-08, +-9.651272941933572582e-08, +-9.762315615008715444e-08, +-9.873323776644492325e-08, +-9.984297251252133958e-08, +-1.009523586332393213e-07, +-1.020613943745350892e-07, +-1.031700779831110978e-07, +-1.042784077063898727e-07, +-1.053863817929645782e-07, +-1.064939984921022599e-07, +-1.076012560539484423e-07, +-1.087081527296773184e-07, +-1.098146867711963208e-07, +-1.109208564313475958e-07, +-1.120266599638619336e-07, +-1.131320956233108571e-07, +-1.142371616653084548e-07, +-1.153418563462654626e-07, +-1.164461779233419232e-07, +-1.175501246548982836e-07, +-1.186536948000001194e-07, +-1.197568866186193047e-07, +-1.208596983718378831e-07, +-1.219621283213008041e-07, +-1.230641747299162877e-07, +-1.241658358613117905e-07, +-1.252671099800841457e-07, +-1.263679953517043243e-07, +-1.274684902427675482e-07, +-1.285685929204497070e-07, +-1.296683016532060540e-07, +-1.307676147102262466e-07, +-1.318665303616370255e-07, +-1.329650468787020082e-07, +-1.340631625333302779e-07, +-1.351608755985235109e-07, +-1.362581843483288602e-07, +-1.373550870575970751e-07, +-1.384515820021293551e-07, +-1.395476674588803735e-07, +-1.406433417054173669e-07, +-1.417386030206134322e-07, +-1.428334496841070930e-07, +-1.439278799765028874e-07, +-1.450218921795721149e-07, +-1.461154845757599163e-07, +-1.472086554486341214e-07, +-1.483014030828372597e-07, +-1.493937257638429324e-07, +-1.504856217781066106e-07, +-1.515770894132657205e-07, +-1.526681269576479673e-07, +-1.537587327007204476e-07, +-1.548489049330391986e-07, +-1.559386419460082167e-07, +-1.570279420320782193e-07, +-1.581168034847001109e-07, +-1.592052245982789257e-07, +-1.602932036683712655e-07, +-1.613807389913962765e-07, +-1.624678288648321080e-07, +-1.635544715871698544e-07, +-1.646406654579166265e-07, +-1.657264087775492552e-07, +-1.668116998477135830e-07, +-1.678965369709308078e-07, +-1.689809184507975154e-07, +-1.700648425919416071e-07, +-1.711483076999710541e-07, +-1.722313120816757565e-07, +-1.733138540447360310e-07, +-1.743959318979200760e-07, +-1.754775439510381257e-07, +-1.765586885149447792e-07, +-1.776393639014941349e-07, +-1.787195684237351102e-07, +-1.797993003956236362e-07, +-1.808785581322184278e-07, +-1.819573399496365677e-07, +-1.830356441650554914e-07, +-1.841134690966645212e-07, +-1.851908130638678628e-07, +-1.862676743869886470e-07, +-1.873440513874700465e-07, +-1.884199423878286632e-07, +-1.894953457116074117e-07, +-1.905702596835734340e-07, +-1.916446826294287581e-07, +-1.927186128760063598e-07, +-1.937920487512279172e-07, +-1.948649885841001042e-07, +-1.959374307046734045e-07, +-1.970093734442382518e-07, +-1.980808151350340745e-07, +-1.991517541104479246e-07, +-2.002221887049672561e-07, +-2.012921172541860123e-07, +-2.023615380947530370e-07, +-2.034304495645718413e-07, +-2.044988500025123217e-07, +-2.055667377486067949e-07, +-2.066341111440037288e-07, +-2.077009685309219499e-07, +-2.087673082528458842e-07, +-2.098331286542900556e-07, +-2.108984280807484758e-07, +-2.119632048791333013e-07, +-2.130274573972963660e-07, +-2.140911839842234425e-07, +-2.151543829902292981e-07, +-2.162170527664297021e-07, +-2.172791916654216992e-07, +-2.183407980407512493e-07, +-2.194018702471127301e-07, +-2.204624066404915296e-07, +-2.215224055779309538e-07, +-2.225818654174830985e-07, +-2.236407845186446739e-07, +-2.246991612418802844e-07, +-2.257569939488153666e-07, +-2.268142810024317742e-07, +-2.278710207665894433e-07, +-2.289272116064618460e-07, +-2.299828518884901982e-07, +-2.310379399801446491e-07, +-2.320924742500716647e-07, +-2.331464530682913605e-07, +-2.341998748056672320e-07, +-2.352527378345817957e-07, +-2.363050405284132028e-07, +-2.373567812617285738e-07, +-2.384079584104778899e-07, +-2.394585703515159225e-07, +-2.405086154630403341e-07, +-2.415580921245414390e-07, +-2.426069987165665163e-07, +-2.436553336208675905e-07, +-2.447030952205933907e-07, +-2.457502818997667838e-07, +-2.467968920439555191e-07, +-2.478429240397492910e-07, +-2.488883762750045317e-07, +-2.499332471387915776e-07, +-2.509775350214036688e-07, +-2.520212383143097801e-07, +-2.530643554103460504e-07, +-2.541068847034347268e-07, +-2.551488245887752758e-07, +-2.561901734628010795e-07, +-2.572309297231801234e-07, +-2.582710917687704741e-07, +-2.593106579998125032e-07, +-2.603496268176469840e-07, +-2.613879966249066795e-07, +-2.624257658254720326e-07, +-2.634629328244267492e-07, +-2.644994960282471633e-07, +-2.655354538445232454e-07, +-2.665708046821471205e-07, +-2.676055469512725690e-07, +-2.686396790633150799e-07, +-2.696731994309046815e-07, +-2.707061064680812357e-07, +-2.717383985900131167e-07, +-2.727700742131845646e-07, +-2.738011317553544452e-07, +-2.748315696355581030e-07, +-2.758613862740618329e-07, +-2.768905800925542043e-07, +-2.779191495138642105e-07, +-2.789470929621564038e-07, +-2.799744088628802857e-07, +-2.810010956427305491e-07, +-2.820271517298335312e-07, +-2.830525755534719811e-07, +-2.840773655442711951e-07, +-2.851015201341562943e-07, +-2.861250377563534427e-07, +-2.871479168453510420e-07, +-2.881701558370785089e-07, +-2.891917531686379770e-07, +-2.902127072784878385e-07, +-2.912330166064008691e-07, +-2.922526795934656043e-07, +-2.932716946820422406e-07, +-2.942900603159994345e-07, +-2.953077749402024824e-07, +-2.963248370011664363e-07, +-2.973412449465484135e-07, +-2.983569972253369609e-07, +-2.993720922879912336e-07, +-3.003865285862110782e-07, +-3.014003045728978045e-07, +-3.024134187025670613e-07, +-3.034258694308902739e-07, +-3.044376552148861792e-07, +-3.054487745131016677e-07, +-3.064592257851087511e-07, +-3.074690074921558257e-07, +-3.084781180966557989e-07, +-3.094865560623829720e-07, +-3.104943198546028476e-07, +-3.115014079398488310e-07, +-3.125078187858814133e-07, +-3.135135508620986123e-07, +-3.145186026390834977e-07, +-3.155229725887859326e-07, +-3.165266591847146386e-07, +-3.175296609014731272e-07, +-3.185319762151800931e-07, +-3.195336036034226157e-07, +-3.205345415450328597e-07, +-3.215347885202235476e-07, +-3.225343430107766893e-07, +-3.235332034995402329e-07, +-3.245313684710746151e-07, +-3.255288364111458124e-07, +-3.265256058069146527e-07, +-3.275216751471220511e-07, +-3.285170429216319823e-07, +-3.295117076218461036e-07, +-3.305056677406606089e-07, +-3.314989217722416592e-07, +-3.324914682121604314e-07, +-3.334833055575807891e-07, +-3.344744323067598507e-07, +-3.354648469596874992e-07, +-3.364545480175868978e-07, +-3.374435339831466294e-07, +-3.384318033604753808e-07, +-3.394193546551055422e-07, +-3.404061863739471500e-07, +-3.413922970254756634e-07, +-3.423776851194595373e-07, +-3.433623491671441345e-07, +-3.443462876812087387e-07, +-3.453294991757680369e-07, +-3.463119821663336319e-07, +-3.472937351699869967e-07, +-3.482747567051230343e-07, +-3.492550452916211261e-07, +-3.502345994508126269e-07, +-3.512134177054300425e-07, +-3.521914985797919483e-07, +-3.531688405995400905e-07, +-3.541454422918112291e-07, +-3.551213021852042082e-07, +-3.560964188097757750e-07, +-3.570707906970011388e-07, +-3.580444163799535428e-07, +-3.590172943930403596e-07, +-3.599894232721787985e-07, +-3.609608015547614410e-07, +-3.619314277796523239e-07, +-3.629013004871450108e-07, +-3.638704182191438573e-07, +-3.648387795189010601e-07, +-3.658063829311935282e-07, +-3.667732270022818019e-07, +-3.677393102798701359e-07, +-3.687046313132825239e-07, +-3.696691886531984240e-07, +-3.706329808518367766e-07, +-3.715960064629079886e-07, +-3.725582640416219265e-07, +-3.735197521446406953e-07, +-3.744804693302612261e-07, +-3.754404141581509495e-07, +-3.763995851895241900e-07, +-3.773579809871053731e-07, +-3.783156001150805324e-07, +-3.792724411392841338e-07, +-3.802285026269700583e-07, +-3.811837831467790977e-07, +-3.821382812691352070e-07, +-3.830919955658020295e-07, +-3.840449246100682915e-07, +-3.849970669768755981e-07, +-3.859484212426054575e-07, +-3.868989859850355000e-07, +-3.878487597837349893e-07, +-3.887977412196334184e-07, +-3.897459288751918213e-07, +-3.906933213345827684e-07, +-3.916399171832115804e-07, +-3.925857150083294747e-07, +-3.935307133985557326e-07, +-3.944749109440537237e-07, +-3.954183062366642604e-07, +-3.963608978696905045e-07, +-3.973026844378557746e-07, +-3.982436645376956691e-07, +-3.991838367671260265e-07, +-4.001231997256225495e-07, +-4.010617520143903175e-07, +-4.019994922358917771e-07, +-4.029364189944592004e-07, +-4.038725308958127758e-07, +-4.048078265472832719e-07, +-4.057423045577293988e-07, +-4.066759635377503606e-07, +-4.076088020992195108e-07, +-4.085408188558829396e-07, +-4.094720124228962000e-07, +-4.104023814169908559e-07, +-4.113319244566527293e-07, +-4.122606401616901781e-07, +-4.131885271536295550e-07, +-4.141155840556649674e-07, +-4.150418094924561547e-07, +-4.159672020902915945e-07, +-4.168917604770570570e-07, +-4.178154832821878001e-07, +-4.187383691368463938e-07, +-4.196604166736612517e-07, +-4.205816245268687203e-07, +-4.215019913324714748e-07, +-4.224215157278255899e-07, +-4.233401963520217054e-07, +-4.242580318458434148e-07, +-4.251750208515545021e-07, +-4.260911620130795178e-07, +-4.270064539759515812e-07, +-4.279208953873260384e-07, +-4.288344848959283700e-07, +-4.297472211522363029e-07, +-4.306591028082209890e-07, +-4.315701285175213353e-07, +-4.324802969353995342e-07, +-4.333896067187063359e-07, +-4.342980565260492893e-07, +-4.352056450175386333e-07, +-4.361123708549626844e-07, +-4.370182327017466506e-07, +-4.379232292229519957e-07, +-4.388273590852376348e-07, +-4.397306209570294994e-07, +-4.406330135082730453e-07, +-4.415345354106001180e-07, +-4.424351853372865479e-07, +-4.433349619632230340e-07, +-4.442338639650697268e-07, +-4.451318900210176302e-07, +-4.460290388109529258e-07, +-4.469253090164202326e-07, +-4.478206993206206486e-07, +-4.487152084083756985e-07, +-4.496088349662921351e-07, +-4.505015776825616685e-07, +-4.513934352469143795e-07, +-4.522844063509973432e-07, +-4.531744896879623889e-07, +-4.540636839526325417e-07, +-4.549519878416308248e-07, +-4.558394000531249848e-07, +-4.567259192870116683e-07, +-4.576115442448580298e-07, +-4.584962736298740971e-07, +-4.593801061470772546e-07, +-4.602630405030844025e-07, +-4.611450754060779695e-07, +-4.620262095661744785e-07, +-4.629064416950141056e-07, +-4.637857705059344279e-07, +-4.646641947140856733e-07, +-4.655417130361911156e-07, +-4.664183241907124049e-07, +-4.672940268978108688e-07, +-4.681688198793489418e-07, +-4.690427018588504075e-07, +-4.699156715617096690e-07, +-4.707877277147402271e-07, +-4.716588690467458985e-07, +-4.725290942880826344e-07, +-4.733984021708168107e-07, +-4.742667914288483117e-07, +-4.751342607977125894e-07, +-4.760008090145426000e-07, +-4.768664348184311222e-07, +-4.777311369500296871e-07, +-4.785949141517134848e-07, +-4.794577651677427244e-07, +-4.803196887438209591e-07, +-4.811806836276643981e-07, +-4.820407485685517091e-07, +-4.828998823175431874e-07, +-4.837580836273823947e-07, +-4.846153512527119405e-07, +-4.854716839496321780e-07, +-4.863270804762592930e-07, +-4.871815395922920465e-07, +-4.880350600591661462e-07, +-4.888876406402292653e-07, +-4.897392801003275838e-07, +-4.905899772061758367e-07, +-4.914397307263200439e-07, +-4.922885394309321053e-07, +-4.931364020919811128e-07, +-4.939833174831875050e-07, +-4.948292843799853739e-07, +-4.956743015596921891e-07, +-4.965183678012587118e-07, +-4.973614818853999667e-07, +-4.982036425947492965e-07, +-4.990448487134701029e-07, +-4.998850990276083186e-07, +-5.007243923250549255e-07, +-5.015627273953565374e-07, +-5.024001030298669130e-07, +-5.032365180217108509e-07, +-5.040719711657902249e-07, +-5.049064612587433261e-07, +-5.057399870991018822e-07, +-5.065725474870617229e-07, +-5.074041412246378927e-07, +-5.082347671156285467e-07, +-5.090644239655767276e-07, +-5.098931105819268554e-07, +-5.107208257737978283e-07, +-5.115475683521329477e-07, +-5.123733371296676249e-07, +-5.131981309209311811e-07, +-5.140219485422076720e-07, +-5.148447888116937540e-07, +-5.156666505492668084e-07, +-5.164875325766402662e-07, +-5.173074337173317389e-07, +-5.181263527966202427e-07, +-5.189442886417033237e-07, +-5.197612400814740759e-07, +-5.205772059466654550e-07, +-5.213921850698225377e-07, +-5.222061762852994513e-07, +-5.230191784292246454e-07, +-5.238311903396530402e-07, +-5.246422108563840201e-07, +-5.254522388209092357e-07, +-5.262612730767805333e-07, +-5.270693124692074026e-07, +-5.278763558452255366e-07, +-5.286824020538056749e-07, +-5.294874499456304106e-07, +-5.302914983732465507e-07, +-5.310945461910287991e-07, +-5.318965922551447108e-07, +-5.326976354237052522e-07, +-5.334976745565787710e-07, +-5.342967085153529863e-07, +-5.350947361636786714e-07, +-5.358917563668956896e-07, +-5.366877679921777302e-07, +-5.374827699086581992e-07, +-5.382767609871946383e-07, +-5.390697401005270138e-07, +-5.398617061232390712e-07, +-5.406526579317651111e-07, +-5.414425944043472142e-07, +-5.422315144212243413e-07, +-5.430194168642293576e-07, +-5.438063006173085813e-07, +-5.445921645661106551e-07, +-5.453770075981434589e-07, +-5.461608286028792480e-07, +-5.469436264715785760e-07, +-5.477254000972506961e-07, +-5.485061483749831624e-07, +-5.492858702015884061e-07, +-5.500645644757373543e-07, +-5.508422300981152845e-07, +-5.516188659710184250e-07, +-5.523944709988684212e-07, +-5.531690440878115839e-07, +-5.539425841458654252e-07, +-5.547150900830675252e-07, +-5.554865608111159661e-07, +-5.562569952436889811e-07, +-5.570263922964158384e-07, +-5.577947508867017163e-07, +-5.585620699338246890e-07, +-5.593283483590974037e-07, +-5.600935850854937511e-07, +-5.608577790379870431e-07, +-5.616209291435038495e-07, +-5.623830343307558623e-07, +-5.631440935303763734e-07, +-5.639041056748913698e-07, +-5.646630696986822642e-07, +-5.654209845381330671e-07, +-5.661778491314175695e-07, +-5.669336624186038457e-07, +-5.676884233418015311e-07, +-5.684421308448037392e-07, +-5.691947838734149690e-07, +-5.699463813754119300e-07, +-5.706969223003694767e-07, +-5.714464055997988867e-07, +-5.721948302271249910e-07, +-5.729421951376401164e-07, +-5.736884992886550694e-07, +-5.744337416392810248e-07, +-5.751779211505808273e-07, +-5.759210367855304515e-07, +-5.766630875090176252e-07, +-5.774040722878168421e-07, +-5.781439900907213931e-07, +-5.788828398883380667e-07, +-5.796206206532301915e-07, +-5.803573313598840727e-07, +-5.810929709847082510e-07, +-5.818275385060002562e-07, +-5.825610329040855212e-07, +-5.832934531611206579e-07, +-5.840247982612183951e-07, +-5.847550671904202615e-07, +-5.854842589366690572e-07, +-5.862123724899425788e-07, +-5.869394068420472611e-07, +-5.876653609867577261e-07, +-5.883902339197917950e-07, +-5.891140246387990537e-07, +-5.898367321433368180e-07, +-5.905583554350023766e-07, +-5.912788935172356325e-07, +-5.919983453954522991e-07, +-5.927167100770111831e-07, +-5.934339865712211732e-07, +-5.941501738892995228e-07, +-5.948652710445147879e-07, +-5.955792770519855499e-07, +-5.962921909288121299e-07, +-5.970040116940469422e-07, +-5.977147383686661188e-07, +-5.984243699756956116e-07, +-5.991329055400566085e-07, +-5.998403440885212762e-07, +-6.005466846500247860e-07, +-6.012519262553267123e-07, +-6.019560679371469812e-07, +-6.026591087302689971e-07, +-6.033610476713380486e-07, +-6.040618837990032926e-07, +-6.047616161538726496e-07, +-6.054602437784906752e-07, +-6.061577657174704850e-07, +-6.068541810173302780e-07, +-6.075494887264551136e-07, +-6.082436878954048082e-07, +-6.089367775765779810e-07, +-6.096287568243517085e-07, +-6.103196246951739565e-07, +-6.110093802474050799e-07, +-6.116980225412844700e-07, +-6.123855506392289223e-07, +-6.130719636055053639e-07, +-6.137572605063596028e-07, +-6.144414404101557703e-07, +-6.151245023870105092e-07, +-6.158064455092555589e-07, +-6.164872688510786142e-07, +-6.171669714886531327e-07, +-6.178455525002754482e-07, +-6.185230109660325223e-07, +-6.191993459681072996e-07, +-6.198745565907329678e-07, +-6.205486419200428214e-07, +-6.212216010441631175e-07, +-6.218934330533462719e-07, +-6.225641370396177520e-07, +-6.232337120972239455e-07, +-6.239021573222812772e-07, +-6.245694718129438155e-07, +-6.252356546693655796e-07, +-6.259007049936988452e-07, +-6.265646218900736039e-07, +-6.272274044647196422e-07, +-6.278890518257731000e-07, +-6.285495630833810795e-07, +-6.292089373498300760e-07, +-6.298671737392197650e-07, +-6.305242713677562870e-07, +-6.311802293537231308e-07, +-6.318350468173234793e-07, +-6.324887228807999594e-07, +-6.331412566684146299e-07, +-6.337926473064189129e-07, +-6.344428939231667776e-07, +-6.350919956489409933e-07, +-6.357399516160763725e-07, +-6.363867609589253601e-07, +-6.370324228138642804e-07, +-6.376769363192612556e-07, +-6.383203006155976494e-07, +-6.389625148452933660e-07, +-6.396035781528202473e-07, +-6.402434896846787787e-07, +-6.408822485893966075e-07, +-6.415198540175011198e-07, +-6.421563051216420485e-07, +-6.427916010564030089e-07, +-6.434257409784418938e-07, +-6.440587240464401579e-07, +-6.446905494210849240e-07, +-6.453212162651948733e-07, +-6.459507237435277572e-07, +-6.465790710229115813e-07, +-6.472062572722142187e-07, +-6.478322816623390681e-07, +-6.484571433662082199e-07, +-6.490808415588669581e-07, +-6.497033754173156249e-07, +-6.503247441206287342e-07, +-6.509449468499257493e-07, +-6.515639827883701299e-07, +-6.521818511211414859e-07, +-6.527985510355633734e-07, +-6.534140817209082654e-07, +-6.540284423685338184e-07, +-6.546416321718477202e-07, +-6.552536503262767735e-07, +-6.558644960293931038e-07, +-6.564741684807585168e-07, +-6.570826668819048051e-07, +-6.576899904365952697e-07, +-6.582961383505292112e-07, +-6.589011098314634793e-07, +-6.595049040893056459e-07, +-6.601075203359273408e-07, +-6.607089577852963884e-07, +-6.613092156534347742e-07, +-6.619082931584047739e-07, +-6.625061895204153626e-07, +-6.631029039616800188e-07, +-6.636984357063900430e-07, +-6.642927839809783022e-07, +-6.648859480138268984e-07, +-6.654779270353845879e-07, +-6.660687202782606963e-07, +-6.666583269770679938e-07, +-6.672467463684106253e-07, +-6.678339776911301730e-07, +-6.684200201860281476e-07, +-6.690048730959809727e-07, +-6.695885356660492524e-07, +-6.701710071431711452e-07, +-6.707522867765606812e-07, +-6.713323738173931953e-07, +-6.719112675189212649e-07, +-6.724889671365872591e-07, +-6.730654719277478418e-07, +-6.736407811519196106e-07, +-6.742148940707550627e-07, +-6.747878099479136340e-07, +-6.753595280491273441e-07, +-6.759300476423284865e-07, +-6.764993679973345327e-07, +-6.770674883862461311e-07, +-6.776344080831400582e-07, +-6.782001263641986027e-07, +-6.787646425077052242e-07, +-6.793279557940230600e-07, +-6.798900655055785140e-07, +-6.804509709269707353e-07, +-6.810106713448083526e-07, +-6.815691660477896254e-07, +-6.821264543268170041e-07, +-6.826825354747201512e-07, +-6.832374087865103684e-07, +-6.837910735593391978e-07, +-6.843435290923822725e-07, +-6.848947746869286790e-07, +-6.854448096463743921e-07, +-6.859936332761803471e-07, +-6.865412448839859423e-07, +-6.870876437794601726e-07, +-6.876328292743606046e-07, +-6.881768006826588431e-07, +-6.887195573202663040e-07, +-6.892610985052789015e-07, +-6.898014235579476133e-07, +-6.903405318005500490e-07, +-6.908784225574915654e-07, +-6.914150951552889604e-07, +-6.919505489225625325e-07, +-6.924847831900119400e-07, +-6.930177972905259981e-07, +-6.935495905590239657e-07, +-6.940801623325590953e-07, +-6.946095119502939633e-07, +-6.951376387534809882e-07, +-6.956645420855597333e-07, +-6.961902212920015821e-07, +-6.967146757204190060e-07, +-6.972379047205398349e-07, +-6.977599076442055638e-07, +-6.982806838453438238e-07, +-6.988002326800812496e-07, +-6.993185535065819077e-07, +-6.998356456851491520e-07, +-7.003515085782108011e-07, +-7.008661415502822922e-07, +-7.013795439680793365e-07, +-7.018917152003549710e-07, +-7.024026546180163434e-07, +-7.029123615940897721e-07, +-7.034208355037196872e-07, +-7.039280757241531722e-07, +-7.044340816348313376e-07, +-7.049388526172746541e-07, +-7.054423880550479063e-07, +-7.059446873339931269e-07, +-7.064457498419837452e-07, +-7.069455749690141614e-07, +-7.074441621072798963e-07, +-7.079415106510341257e-07, +-7.084376199966795831e-07, +-7.089324895427537370e-07, +-7.094261186898922622e-07, +-7.099185068409387309e-07, +-7.104096534008220045e-07, +-7.108995577765247873e-07, +-7.113882193773085144e-07, +-7.118756376144727937e-07, +-7.123618119014493208e-07, +-7.128467416539010881e-07, +-7.133304262894545102e-07, +-7.138128652280478723e-07, +-7.142940578916492681e-07, +-7.147740037043945605e-07, +-7.152527020925278774e-07, +-7.157301524845309959e-07, +-7.162063543108526095e-07, +-7.166813070042500000e-07, +-7.171550099995261397e-07, +-7.176274627336188415e-07, +-7.180986646457071676e-07, +-7.185686151769654719e-07, +-7.190373137707817234e-07, +-7.195047598727330475e-07, +-7.199709529304686241e-07, +-7.204358923937816850e-07, +-7.208995777147049115e-07, +-7.213620083472452069e-07, +-7.218231837477265330e-07, +-7.222831033745192833e-07, +-7.227417666881389622e-07, +-7.231991731513458172e-07, +-7.236553222289016350e-07, +-7.241102133877909221e-07, +-7.245638460971906244e-07, +-7.250162198283562005e-07, +-7.254673340546910788e-07, +-7.259171882518425836e-07, +-7.263657818974699546e-07, +-7.268131144714496459e-07, +-7.272591854558549974e-07, +-7.277039943348486617e-07, +-7.281475405947609545e-07, +-7.285898237240763024e-07, +-7.290308432134118549e-07, +-7.294705985556025055e-07, +-7.299090892455726722e-07, +-7.303463147803967543e-07, +-7.307822746594006705e-07, +-7.312169683839268075e-07, +-7.316503954575392134e-07, +-7.320825553860059160e-07, +-7.325134476771826677e-07, +-7.329430718411046366e-07, +-7.333714273899634307e-07, +-7.337985138380920633e-07, +-7.342243307020431975e-07, +-7.346488775004630443e-07, +-7.350721537541778656e-07, +-7.354941589861757631e-07, +-7.359148927216064668e-07, +-7.363343544877520061e-07, +-7.367525438141267657e-07, +-7.371694602323393136e-07, +-7.375851032761841979e-07, +-7.379994724816110303e-07, +-7.384125673867384622e-07, +-7.388243875318263382e-07, +-7.392349324593576469e-07, +-7.396442017139161247e-07, +-7.400521948422762524e-07, +-7.404589113933717040e-07, +-7.408643509182805231e-07, +-7.412685129703110970e-07, +-7.416713971048702313e-07, +-7.420730028795576999e-07, +-7.424733298541336340e-07, +-7.428723775905274165e-07, +-7.432701456528168233e-07, +-7.436666336073061624e-07, +-7.440618410224068419e-07, +-7.444557674687170976e-07, +-7.448484125190050515e-07, +-7.452397757482077597e-07, +-7.456298567334072832e-07, +-7.460186550539254499e-07, +-7.464061702911821884e-07, +-7.467924020287934658e-07, +-7.471773498525425952e-07, +-7.475610133503667882e-07, +-7.479433921124316944e-07, +-7.483244857310325100e-07, +-7.487042938005829668e-07, +-7.490828159177817734e-07, +-7.494600516814253158e-07, +-7.498360006924751019e-07, +-7.502106625541499826e-07, +-7.505840368717050760e-07, +-7.509561232527002765e-07, +-7.513269213067946383e-07, +-7.516964306458427249e-07, +-7.520646508838516222e-07, +-7.524315816370778181e-07, +-7.527972225238188319e-07, +-7.531615731646856422e-07, +-7.535246331823797045e-07, +-7.538864022017842195e-07, +-7.542468798500342251e-07, +-7.546060657563238961e-07, +-7.549639595520821982e-07, +-7.553205608709495938e-07, +-7.556758693486909043e-07, +-7.560298846232430610e-07, +-7.563826063347983264e-07, +-7.567340341255913711e-07, +-7.570841676401732891e-07, +-7.574330065251910517e-07, +-7.577805504294716810e-07, +-7.581267990040924481e-07, +-7.584717519022015139e-07, +-7.588154087791790768e-07, +-7.591577692926184206e-07, +-7.594988331022438582e-07, +-7.598385998699514949e-07, +-7.601770692598941435e-07, +-7.605142409382926478e-07, +-7.608501145736030657e-07, +-7.611846898364958109e-07, +-7.615179663997659734e-07, +-7.618499439384167522e-07, +-7.621806221296184801e-07, +-7.625100006527106355e-07, +-7.628380791892667460e-07, +-7.631648574229889332e-07, +-7.634903350397721810e-07, +-7.638145117276992535e-07, +-7.641373871770287308e-07, +-7.644589610801907736e-07, +-7.647792331318410159e-07, +-7.650982030287682382e-07, +-7.654158704699609656e-07, +-7.657322351565893625e-07, +-7.660472967919880799e-07, +-7.663610550817209482e-07, +-7.666735097334942612e-07, +-7.669846604572014581e-07, +-7.672945069649252403e-07, +-7.676030489709282547e-07, +-7.679102861916414464e-07, +-7.682162183457267395e-07, +-7.685208451539793106e-07, +-7.688241663393910104e-07, +-7.691261816271453871e-07, +-7.694268907446005346e-07, +-7.697262934212857038e-07, +-7.700243893889608069e-07, +-7.703211783815198556e-07, +-7.706166601350575590e-07, +-7.709108343878499480e-07, +-7.712037008803466458e-07, +-7.714952593552220076e-07, +-7.717855095572906291e-07, +-7.720744512335629331e-07, +-7.723620841332371227e-07, +-7.726484080076912400e-07, +-7.729334226104712024e-07, +-7.732171276973645998e-07, +-7.734995230262798867e-07, +-7.737806083573355325e-07, +-7.740603834528310106e-07, +-7.743388480772490217e-07, +-7.746160019972417298e-07, +-7.748918449816922777e-07, +-7.751663768016183312e-07, +-7.754395972302438652e-07, +-7.757115060429721646e-07, +-7.759821030173724832e-07, +-7.762513879332475950e-07, +-7.765193605725542787e-07, +-7.767860207193874359e-07, +-7.770513681601131813e-07, +-7.773154026832286585e-07, +-7.775781240794078858e-07, +-7.778395321415706833e-07, +-7.780996266647185609e-07, +-7.783584074461399111e-07, +-7.786158742852453677e-07, +-7.788720269836313330e-07, +-7.791268653451219059e-07, +-7.793803891756960372e-07, +-7.796325982834731297e-07, +-7.798834924788417879e-07, +-7.801330715743163510e-07, +-7.803813353845938564e-07, +-7.806282837266155552e-07, +-7.808739164194148700e-07, +-7.811182332842596961e-07, +-7.813612341446197912e-07, +-7.816029188261130943e-07, +-7.818432871565372777e-07, +-7.820823389659262869e-07, +-7.823200740864059207e-07, +-7.825564923523731913e-07, +-7.827915936003632336e-07, +-7.830253776690858336e-07, +-7.832578443994914973e-07, +-7.834889936346281959e-07, +-7.837188252197690562e-07, +-7.839473390023981728e-07, +-7.841745348321370220e-07, +-7.844004125607886134e-07, +-7.846249720424007000e-07, +-7.848482131330970064e-07, +-7.850701356912822113e-07, +-7.852907395774892693e-07, +-7.855100246544433624e-07, +-7.857279907870510998e-07, +-7.859446378424011539e-07, +-7.861599656897543067e-07, +-7.863739742005817788e-07, +-7.865866632485019135e-07, +-7.867980327093241165e-07, +-7.870080824610399621e-07, +-7.872168123838210757e-07, +-7.874242223600047341e-07, +-7.876303122741423584e-07, +-7.878350820129379979e-07, +-7.880385314652769177e-07, +-7.882406605222276102e-07, +-7.884414690770231606e-07, +-7.886409570251146100e-07, +-7.888391242640956749e-07, +-7.890359706937421348e-07, +-7.892314962160213610e-07, +-7.894257007350690233e-07, +-7.896185841571906781e-07, +-7.898101463909013672e-07, +-7.900003873468606082e-07, +-7.901893069379159106e-07, +-7.903769050790903880e-07, +-7.905631816875884757e-07, +-7.907481366827741193e-07, +-7.909317699862243499e-07, +-7.911140815216570745e-07, +-7.912950712149775564e-07, +-7.914747389942631694e-07, +-7.916530847897633973e-07, +-7.918301085339246095e-07, +-7.920058101613465454e-07, +-7.921801896088056068e-07, +-7.923532468152561293e-07, +-7.925249817218266761e-07, +-7.926953942718055325e-07, +-7.928644844106869756e-07, +-7.930322520861062637e-07, +-7.931986972478904591e-07, +-7.933638198480254992e-07, +-7.935276198406676315e-07, +-7.936900971821736951e-07, +-7.938512518310504048e-07, +-7.940110837479474685e-07, +-7.941695928957461025e-07, +-7.943267792394510347e-07, +-7.944826427462518087e-07, +-7.946371833855259599e-07, +-7.947904011288042874e-07, +-7.949422959497564546e-07, +-7.950928678242814093e-07, +-7.952421167304088110e-07, +-7.953900426483319590e-07, +-7.955366455604586141e-07, +-7.956819254512907205e-07, +-7.958258823075671302e-07, +-7.959685161181541246e-07, +-7.961098268740861776e-07, +-7.962498145685929548e-07, +-7.963884791970448919e-07, +-7.965258207569632526e-07, +-7.966618392480782572e-07, +-7.967965346722550720e-07, +-7.969299070335174213e-07, +-7.970619563380932206e-07, +-7.971926825943127214e-07, +-7.973220858127285777e-07, +-7.974501660060229904e-07, +-7.975769231890484704e-07, +-7.977023573788149217e-07, +-7.978264685945224635e-07, +-7.979492568574767273e-07, +-7.980707221912041591e-07, +-7.981908646213558812e-07, +-7.983096841757399853e-07, +-7.984271808843707661e-07, +-7.985433547793590310e-07, +-7.986582058950044263e-07, +-7.987717342677811435e-07, +-7.988839399362962032e-07, +-7.989948229413158190e-07, +-7.991043833257951490e-07, +-7.992126211347876641e-07, +-7.993195364155661672e-07, +-7.994251292175210434e-07, +-7.995293995922084356e-07, +-7.996323475933370087e-07, +-7.997339732767761030e-07, +-7.998342767005333936e-07, +-7.999332579248016886e-07, +-8.000309170118981550e-07, +-8.001272540263029639e-07, +-8.002222690346481741e-07, +-8.003159621057186841e-07, +-8.004083333104399507e-07, +-8.004993827219135644e-07, +-8.005891104153690738e-07, +-8.006775164681938444e-07, +-8.007646009599234229e-07, +-8.008503639722348669e-07, +-8.009348055889755445e-07, +-8.010179258961203585e-07, +-8.010997249817990637e-07, +-8.011802029362851494e-07, +-8.012593598519993334e-07, +-8.013371958235074444e-07, +-8.014137109475348216e-07, +-8.014889053229315864e-07, +-8.015627790507028179e-07, +-8.016353322339909769e-07, +-8.017065649780910466e-07, +-8.017764773904225809e-07, +-8.018450695805805258e-07, +-8.019123416602702099e-07, +-8.019782937433520255e-07, +-8.020429259458208877e-07, +-8.021062383858123760e-07, +-8.021682311836144862e-07, +-8.022289044616368199e-07, +-8.022882583444336661e-07, +-8.023462929587008251e-07, +-8.024030084332681964e-07, +-8.024584048990975557e-07, +-8.025124824892963190e-07, +-8.025652413391066372e-07, +-8.026166815858945961e-07, +-8.026668033691662045e-07, +-8.027156068305644294e-07, +-8.027630921138702549e-07, +-8.028092593649920943e-07, +-8.028541087319523430e-07, +-8.028976403649336485e-07, +-8.029398544162362405e-07, +-8.029807510402823779e-07, +-8.030203303936458893e-07, +-8.030585926350146915e-07, +-8.030955379251916369e-07, +-8.031311664271383470e-07, +-8.031654783059194147e-07, +-8.031984737287319438e-07, +-8.032301528649130671e-07, +-8.032605158858914536e-07, +-8.032895629652593058e-07, +-8.033172942787091508e-07, +-8.033437100040570269e-07, +-8.033688103212558248e-07, +-8.033925954123685004e-07, +-8.034150654615741095e-07, +-8.034362206551866544e-07, +-8.034560611816343317e-07, +-8.034745872314593205e-07, +-8.034917989973376875e-07, +-8.035076966740353417e-07, +-8.035222804584669028e-07, +-8.035355505496422322e-07, +-8.035475071486963973e-07, +-8.035581504588697656e-07, +-8.035674806855415688e-07, +-8.035754980361710339e-07, +-8.035822027203584755e-07, +-8.035875949498006145e-07, +-8.035916749383064603e-07, +-8.035944429018132987e-07, +-8.035958990583393635e-07, +-8.035960436280362467e-07, +-8.035948768331613704e-07, +-8.035923988980697277e-07, +-8.035886100492319883e-07, +-8.035835105152225342e-07, +-8.035771005267202006e-07, +-8.035693803165129348e-07, +-8.035603501194918670e-07, +-8.035500101726512042e-07, +-8.035383607150895009e-07, +-8.035254019880037299e-07, +-8.035111342346922468e-07, +-8.034955577005636840e-07, +-8.034786726331149277e-07, +-8.034604792819449881e-07, +-8.034409778987592346e-07, +-8.034201687373490670e-07, +-8.033980520536105502e-07, +-8.033746281055326616e-07, +-8.033498971532031145e-07, +-8.033238594587982997e-07, +-8.032965152865915438e-07, +-8.032678649029523681e-07, +-8.032379085763388656e-07, +-8.032066465773008771e-07, +-8.031740791784773442e-07, +-8.031402066546017094e-07, +-8.031050292824911159e-07, +-8.030685473410531846e-07, +-8.030307611112827313e-07, +-8.029916708762645196e-07, +-8.029512769211654262e-07, +-8.029095795332352876e-07, +-8.028665790018119823e-07, +-8.028222756183148664e-07, +-8.027766696762475267e-07, +-8.027297614711900509e-07, +-8.026815513008110985e-07, +-8.026320394648549830e-07, +-8.025812262651425193e-07, +-8.025291120055786468e-07, +-8.024756969921411006e-07, +-8.024209815328858109e-07, +-8.023649659379427739e-07, +-8.023076505195216638e-07, +-8.022490355919012441e-07, +-8.021891214714346624e-07, +-8.021279084765479673e-07, +-8.020653969277379914e-07, +-8.020015871475725628e-07, +-8.019364794606883877e-07, +-8.018700741937896738e-07, +-8.018023716756549063e-07, +-8.017333722371203316e-07, +-8.016630762110960500e-07, +-8.015914839325501342e-07, +-8.015185957385222881e-07, +-8.014444119681083877e-07, +-8.013689329624717049e-07, +-8.012921590648372955e-07, +-8.012140906204894584e-07, +-8.011347279767700414e-07, +-8.010540714830841587e-07, +-8.009721214908878028e-07, +-8.008888783537051033e-07, +-8.008043424271017508e-07, +-8.007185140687129493e-07, +-8.006313936382188519e-07, +-8.005429814973575843e-07, +-8.004532780099127508e-07, +-8.003622835417299514e-07, +-8.002699984606934888e-07, +-8.001764231367483909e-07, +-8.000815579418760584e-07, +-7.999854032501181942e-07, +-7.998879594375546740e-07, +-7.997892268823138168e-07, +-7.996892059645650792e-07, +-7.995878970665314434e-07, +-7.994853005724631591e-07, +-7.993814168686617781e-07, +-7.992762463434760246e-07, +-7.991697893872823142e-07, +-7.990620463924979882e-07, +-7.989530177535859726e-07, +-7.988427038670341312e-07, +-7.987311051313784540e-07, +-7.986182219471846331e-07, +-7.985040547170444640e-07, +-7.983886038455946910e-07, +-7.982718697394992203e-07, +-7.981538528074512371e-07, +-7.980345534601759589e-07, +-7.979139721104240705e-07, +-7.977921091729765946e-07, +-7.976689650646407630e-07, +-7.975445402042470510e-07, +-7.974188350126596606e-07, +-7.972918499127570376e-07, +-7.971635853294401312e-07, +-7.970340416896360990e-07, +-7.969032194222913192e-07, +-7.967711189583674734e-07, +-7.966377407308581693e-07, +-7.965030851747543181e-07, +-7.963671527270769574e-07, +-7.962299438268594632e-07, +-7.960914589151462796e-07, +-7.959516984350021302e-07, +-7.958106628314966653e-07, +-7.956683525517094388e-07, +-7.955247680447365781e-07, +-7.953799097616823142e-07, +-7.952337781556504049e-07, +-7.950863736817631937e-07, +-7.949376967971427629e-07, +-7.947877479609092395e-07, +-7.946365276341938188e-07, +-7.944840362801314581e-07, +-7.943302743638570656e-07, +-7.941752423525038059e-07, +-7.940189407151982298e-07, +-7.938613699230746741e-07, +-7.937025304492609672e-07, +-7.935424227688773711e-07, +-7.933810473590414514e-07, +-7.932184046988722064e-07, +-7.930544952694601041e-07, +-7.928893195539080565e-07, +-7.927228780372966918e-07, +-7.925551712067007655e-07, +-7.923861995511828076e-07, +-7.922159635617899465e-07, +-7.920444637315533791e-07, +-7.918717005554921829e-07, +-7.916976745306073868e-07, +-7.915223861558820765e-07, +-7.913458359322859478e-07, +-7.911680243627509540e-07, +-7.909889519521975643e-07, +-7.908086192075467279e-07, +-7.906270266376552879e-07, +-7.904441747533817319e-07, +-7.902600640675543228e-07, +-7.900746950949617813e-07, +-7.898880683523788025e-07, +-7.897001843585432924e-07, +-7.895110436341634613e-07, +-7.893206467019216357e-07, +-7.891289940864647293e-07, +-7.889360863143838078e-07, +-7.887419239142765585e-07, +-7.885465074166645976e-07, +-7.883498373540522341e-07, +-7.881519142609028581e-07, +-7.879527386736299413e-07, +-7.877523111306074133e-07, +-7.875506321721913666e-07, +-7.873477023406533528e-07, +-7.871435221802461335e-07, +-7.869380922371762579e-07, +-7.867314130595752632e-07, +-7.865234851975733669e-07, +-7.863143092032049165e-07, +-7.861038856304780579e-07, +-7.858922150353482660e-07, +-7.856792979756901805e-07, +-7.854651350113650508e-07, +-7.852497267041556208e-07, +-7.850330736177719518e-07, +-7.848151763178957864e-07, +-7.845960353721352313e-07, +-7.843756513500173469e-07, +-7.841540248230471210e-07, +-7.839311563646427774e-07, +-7.837070465501455162e-07, +-7.834816959568460898e-07, +-7.832551051639702974e-07, +-7.830272747526699852e-07, +-7.827982053060266464e-07, +-7.825678974090409389e-07, +-7.823363516486554498e-07, +-7.821035686137389188e-07, +-7.818695488950566986e-07, +-7.816342930853386228e-07, +-7.813978017792224669e-07, +-7.811600755732426188e-07, +-7.809211150658817483e-07, +-7.806809208575284551e-07, +-7.804394935504907156e-07, +-7.801968337489976827e-07, +-7.799529420591703575e-07, +-7.797078190890699760e-07, +-7.794614654486549160e-07, +-7.792138817497979559e-07, +-7.789650686062802392e-07, +-7.787150266337952981e-07, +-7.784637564499235365e-07, +-7.782112586741705583e-07, +-7.779575339279344508e-07, +-7.777025828345295017e-07, +-7.774464060191566585e-07, +-7.771890041089284104e-07, +-7.769303777328323659e-07, +-7.766705275217768863e-07, +-7.764094541085552992e-07, +-7.761471581278589210e-07, +-7.758836402162802336e-07, +-7.756189010122733916e-07, +-7.753529411562129849e-07, +-7.750857612903484049e-07, +-7.748173620588195149e-07, +-7.745477441076537908e-07, +-7.742769080847661100e-07, +-7.740048546399365162e-07, +-7.737315844248468539e-07, +-7.734570980930514398e-07, +-7.731813962999830980e-07, +-7.729044797029548539e-07, +-7.726263489611663929e-07, +-7.723470047356563090e-07, +-7.720664476893708202e-07, +-7.717846784871202523e-07, +-7.715016977955814741e-07, +-7.712175062833127204e-07, +-7.709321046207104993e-07, +-7.706454934800526850e-07, +-7.703576735355171523e-07, +-7.700686454630846857e-07, +-7.697784099406354355e-07, +-7.694869676479156709e-07, +-7.691943192664947942e-07, +-7.689004654798317261e-07, +-7.686054069732319192e-07, +-7.683091444338576283e-07, +-7.680116785507341570e-07, +-7.677130100147025301e-07, +-7.674131395184842912e-07, +-7.671120677566752563e-07, +-7.668097954256561513e-07, +-7.665063232236987033e-07, +-7.662016518509177833e-07, +-7.658957820092395360e-07, +-7.655887144024489201e-07, +-7.652804497362162837e-07, +-7.649709887179752859e-07, +-7.646603320570406340e-07, +-7.643484804645681674e-07, +-7.640354346534988474e-07, +-7.637211953386874005e-07, +-7.634057632367393700e-07, +-7.630891390661426185e-07, +-7.627713235472037999e-07, +-7.624523174020174429e-07, +-7.621321213545681244e-07, +-7.618107361306341196e-07, +-7.614881624577903660e-07, +-7.611644010654661685e-07, +-7.608394526849143877e-07, +-7.605133180491583950e-07, +-7.601859978931179627e-07, +-7.598574929534469511e-07, +-7.595278039686601521e-07, +-7.591969316790717731e-07, +-7.588648768268047545e-07, +-7.585316401557932051e-07, +-7.581972224117930952e-07, +-7.578616243423259300e-07, +-7.575248466967545580e-07, +-7.571868902262483374e-07, +-7.568477556837225730e-07, +-7.565074438239698065e-07, +-7.561659554035450432e-07, +-7.558232911807708346e-07, +-7.554794519158086407e-07, +-7.551344383705956199e-07, +-7.547882513088619940e-07, +-7.544408914961434350e-07, +-7.540923596997223031e-07, +-7.537426566887094906e-07, +-7.533917832339864006e-07, +-7.530397401082249580e-07, +-7.526865280858725745e-07, +-7.523321479431727951e-07, +-7.519766004581099237e-07, +-7.516198864104877965e-07, +-7.512620065818682667e-07, +-7.509029617555882511e-07, +-7.505427527167679883e-07, +-7.501813802523016157e-07, +-7.498188451508151354e-07, +-7.494551482027449765e-07, +-7.490902902002811383e-07, +-7.487242719373784130e-07, +-7.483570942097662328e-07, +-7.479887578148983772e-07, +-7.476192635520321707e-07, +-7.472486122221637903e-07, +-7.468768046280501831e-07, +-7.465038415742026070e-07, +-7.461297238669025131e-07, +-7.457544523141374884e-07, +-7.453780277256915711e-07, +-7.450004509130848993e-07, +-7.446217226895805930e-07, +-7.442418438701902600e-07, +-7.438608152716824662e-07, +-7.434786377125294786e-07, +-7.430953120129818037e-07, +-7.427108389950166247e-07, +-7.423252194823494484e-07, +-7.419384543004507278e-07, +-7.415505442764741821e-07, +-7.411614902393376884e-07, +-7.407712930197368343e-07, +-7.403799534500048396e-07, +-7.399874723642647048e-07, +-7.395938505983602837e-07, +-7.391990889898245196e-07, +-7.388031883779487963e-07, +-7.384061496037355040e-07, +-7.380079735099035455e-07, +-7.376086609409071819e-07, +-7.372082127428692237e-07, +-7.368066297636558867e-07, +-7.364039128528999800e-07, +-7.360000628618447339e-07, +-7.355950806435045248e-07, +-7.351889670526060060e-07, +-7.347817229455326275e-07, +-7.343733491804201383e-07, +-7.339638466170902010e-07, +-7.335532161170611910e-07, +-7.331414585435595254e-07, +-7.327285747615191340e-07, +-7.323145656375067087e-07, +-7.318994320398949211e-07, +-7.314831748386376418e-07, +-7.310657949054415702e-07, +-7.306472931137008012e-07, +-7.302276703384407093e-07, +-7.298069274564607793e-07, +-7.293850653461969640e-07, +-7.289620848877348126e-07, +-7.285379869628914215e-07, +-7.281127724551615417e-07, +-7.276864422496490751e-07, +-7.272589972332480218e-07, +-7.268304382944163223e-07, +-7.264007663233414527e-07, +-7.259699822118693794e-07, +-7.255380868535116533e-07, +-7.251050811434491155e-07, +-7.246709659785393087e-07, +-7.242357422572544325e-07, +-7.237994108797815041e-07, +-7.233619727479637025e-07, +-7.229234287652333461e-07, +-7.224837798367824640e-07, +-7.220430268694053546e-07, +-7.216011707715117134e-07, +-7.211582124532172665e-07, +-7.207141528262699724e-07, +-7.202689928040597629e-07, +-7.198227333016433190e-07, +-7.193753752356668849e-07, +-7.189269195244691823e-07, +-7.184773670880336594e-07, +-7.180267188479052695e-07, +-7.175749757273724773e-07, +-7.171221386513126756e-07, +-7.166682085461912320e-07, +-7.162131863401611215e-07, +-7.157570729629880698e-07, +-7.152998693460619883e-07, +-7.148415764223989858e-07, +-7.143821951266576738e-07, +-7.139217263950683334e-07, +-7.134601711655291596e-07, +-7.129975303775417806e-07, +-7.125338049722216343e-07, +-7.120689958923216849e-07, +-7.116031040821472963e-07, +-7.111361304876740754e-07, +-7.106680760564646514e-07, +-7.101989417376950393e-07, +-7.097287284821418289e-07, +-7.092574372422045250e-07, +-7.087850689718273028e-07, +-7.083116246266168518e-07, +-7.078371051637495189e-07, +-7.073615115420018025e-07, +-7.068848447217705748e-07, +-7.064071056649803321e-07, +-7.059282953352055908e-07, +-7.054484146975917958e-07, +-7.049674647188671789e-07, +-7.044854463673531349e-07, +-7.040023606129633750e-07, +-7.035182084271468572e-07, +-7.030329907829643376e-07, +-7.025467086551085930e-07, +-7.020593630197416845e-07, +-7.015709548546695527e-07, +-7.010814851392740429e-07, +-7.005909548544473659e-07, +-7.000993649827075065e-07, +-6.996067165081240020e-07, +-6.991130104163275773e-07, +-6.986182476945312151e-07, +-6.981224293314526517e-07, +-6.976255563174033163e-07, +-6.971276296443148000e-07, +-6.966286503055532505e-07, +-6.961286192961203298e-07, +-6.956275376125685117e-07, +-6.951254062529154249e-07, +-6.946222262168726586e-07, +-6.941179985055537468e-07, +-6.936127241216945039e-07, +-6.931064040695581561e-07, +-6.925990393549620236e-07, +-6.920906309851885814e-07, +-6.915811799691906540e-07, +-6.910706873173172934e-07, +-6.905591540415289262e-07, +-6.900465811553190025e-07, +-6.895329696736277050e-07, +-6.890183206130390952e-07, +-6.885026349916090606e-07, +-6.879859138288708197e-07, +-6.874681581459395312e-07, +-6.869493689654500367e-07, +-6.864295473114717338e-07, +-6.859086942097348401e-07, +-6.853868106873327669e-07, +-6.848638977729622530e-07, +-6.843399564968218264e-07, +-6.838149878905367363e-07, +-6.832889929873603354e-07, +-6.827619728219912260e-07, +-6.822339284305832132e-07, +-6.817048608508534071e-07, +-6.811747711220167898e-07, +-6.806436602847028886e-07, +-6.801115293811570518e-07, +-6.795783794550545251e-07, +-6.790442115515182397e-07, +-6.785090267172204558e-07, +-6.779728260003016591e-07, +-6.774356104503795612e-07, +-6.768973811185854153e-07, +-6.763581390574584553e-07, +-6.758178853210800446e-07, +-6.752766209650105717e-07, +-6.747343470461955359e-07, +-6.741910646231835523e-07, +-6.736467747559282517e-07, +-6.731014785058055392e-07, +-6.725551769357278378e-07, +-6.720078711100436087e-07, +-6.714595620945668921e-07, +-6.709102509565913888e-07, +-6.703599387648062863e-07, +-6.698086265894179142e-07, +-6.692563155020675815e-07, +-6.687030065758508471e-07, +-6.681487008853085198e-07, +-6.675933995064539753e-07, +-6.670371035166787116e-07, +-6.664798139948871337e-07, +-6.659215320214003092e-07, +-6.653622586779806380e-07, +-6.648019950478301584e-07, +-6.642407422156075937e-07, +-6.636785012673364490e-07, +-6.631152732905435010e-07, +-6.625510593741571543e-07, +-6.619858606085395227e-07, +-6.614196780854976521e-07, +-6.608525128981921474e-07, +-6.602843661412814850e-07, +-6.597152389108141226e-07, +-6.591451323042566628e-07, +-6.585740474204940649e-07, +-6.580019853598442559e-07, +-6.574289472239705691e-07, +-6.568549341160118692e-07, +-6.562799471404973192e-07, +-6.557039874033549575e-07, +-6.551270560119197440e-07, +-6.545491540749490185e-07, +-6.539702827025294336e-07, +-6.533904430062168200e-07, +-6.528096360989375082e-07, +-6.522278630950078094e-07, +-6.516451251101667327e-07, +-6.510614232614630118e-07, +-6.504767586673836425e-07, +-6.498911324478698702e-07, +-6.493045457241035258e-07, +-6.487169996187413364e-07, +-6.481284952558197401e-07, +-6.475390337606571591e-07, +-6.469486162601127687e-07, +-6.463572438822481073e-07, +-6.457649177565943155e-07, +-6.451716390140241284e-07, +-6.445774087868021679e-07, +-6.439822282084560877e-07, +-6.433860984140533418e-07, +-6.427890205398440537e-07, +-6.421909957235359850e-07, +-6.415920251041907734e-07, +-6.409921098221280065e-07, +-6.403912510191628142e-07, +-6.397894498383898760e-07, +-6.391867074241954903e-07, +-6.385830249223946886e-07, +-6.379784034801357323e-07, +-6.373728442458159385e-07, +-6.367663483693389667e-07, +-6.361589170017744173e-07, +-6.355505512956283525e-07, +-6.349412524047303237e-07, +-6.343310214841523736e-07, +-6.337198596904351942e-07, +-6.331077681813768980e-07, +-6.324947481160430762e-07, +-6.318808006549020068e-07, +-6.312659269597377275e-07, +-6.306501281935532623e-07, +-6.300334055208159434e-07, +-6.294157601072354885e-07, +-6.287971931197781889e-07, +-6.281777057267945993e-07, +-6.275572990979192704e-07, +-6.269359744040897016e-07, +-6.263137328175737632e-07, +-6.256905755118573590e-07, +-6.250665036618119269e-07, +-6.244415184435688662e-07, +-6.238156210345597720e-07, +-6.231888126135052116e-07, +-6.225610943604415122e-07, +-6.219324674566182698e-07, +-6.213029330846389567e-07, +-6.206724924283802414e-07, +-6.200411466729836248e-07, +-6.194088970049048848e-07, +-6.187757446117965512e-07, +-6.181416906826610068e-07, +-6.175067364077512784e-07, +-6.168708829785878717e-07, +-6.162341315879570774e-07, +-6.155964834299459109e-07, +-6.149579396998177049e-07, +-6.143185015941786568e-07, +-6.136781703108711029e-07, +-6.130369470489892938e-07, +-6.123948330088849010e-07, +-6.117518293921907329e-07, +-6.111079374017103036e-07, +-6.104631582415731572e-07, +-6.098174931171300474e-07, +-6.091709432349749608e-07, +-6.085235098029714802e-07, +-6.078751940301406592e-07, +-6.072259971268240757e-07, +-6.065759203045684234e-07, +-6.059249647761590763e-07, +-6.052731317556071706e-07, +-6.046204224581813690e-07, +-6.039668381002961578e-07, +-6.033123798996722543e-07, +-6.026570490752224685e-07, +-6.020008468470803967e-07, +-6.013437744366028568e-07, +-6.006858330663812170e-07, +-6.000270239601430346e-07, +-5.993673483429082271e-07, +-5.987068074408771586e-07, +-5.980454024814571090e-07, +-5.973831346932881090e-07, +-5.967200053061309195e-07, +-5.960560155509982164e-07, +-5.953911666601869892e-07, +-5.947254598670197724e-07, +-5.940588964061275548e-07, +-5.933914775133274889e-07, +-5.927232044255190235e-07, +-5.920540783809789891e-07, +-5.913841006189788443e-07, +-5.907132723800807144e-07, +-5.900415949060253708e-07, +-5.893690694396478460e-07, +-5.886956972250181460e-07, +-5.880214795074585096e-07, +-5.873464175332956506e-07, +-5.866705125501407023e-07, +-5.859937658067677743e-07, +-5.853161785530043678e-07, +-5.846377520400059195e-07, +-5.839584875200071980e-07, +-5.832783862463413620e-07, +-5.825974494735821557e-07, +-5.819156784574548646e-07, +-5.812330744547270482e-07, +-5.805496387235090251e-07, +-5.798653725228593671e-07, +-5.791802771130952314e-07, +-5.784943537556746224e-07, +-5.778076037130819367e-07, +-5.771200282491049431e-07, +-5.764316286285921070e-07, +-5.757424061174565088e-07, +-5.750523619828305324e-07, +-5.743614974929779863e-07, +-5.736698139171700127e-07, +-5.729773125260034663e-07, +-5.722839945909933856e-07, +-5.715898613848949712e-07, +-5.708949141815448728e-07, +-5.701991542558984592e-07, +-5.695025828840208181e-07, +-5.688052013431155552e-07, +-5.681070109114100215e-07, +-5.674080128683202731e-07, +-5.667082084943362977e-07, +-5.660075990710570609e-07, +-5.653061858811680599e-07, +-5.646039702084887574e-07, +-5.639009533378408675e-07, +-5.631971365552263391e-07, +-5.624925211477067593e-07, +-5.617871084034315171e-07, +-5.610808996116655440e-07, +-5.603738960626659647e-07, +-5.596660990478577507e-07, +-5.589575098597161941e-07, +-5.582481297917902014e-07, +-5.575379601387035640e-07, +-5.568270021961785690e-07, +-5.561152572609215441e-07, +-5.554027266307900406e-07, +-5.546894116046761548e-07, +-5.539753134825346916e-07, +-5.532604335653803059e-07, +-5.525447731553138664e-07, +-5.518283335554019653e-07, +-5.511111160698507718e-07, +-5.503931220038917885e-07, +-5.496743526637994273e-07, +-5.489548093569260552e-07, +-5.482344933915773750e-07, +-5.475134060771887138e-07, +-5.467915487242020974e-07, +-5.460689226441004489e-07, +-5.453455291493978486e-07, +-5.446213695536709793e-07, +-5.438964451714341894e-07, +-5.431707573183186401e-07, +-5.424443073109520271e-07, +-5.417170964669822972e-07, +-5.409891261051106825e-07, +-5.402603975449577636e-07, +-5.395309121072305469e-07, +-5.388006711137318875e-07, +-5.380696758870954738e-07, +-5.373379277510848306e-07, +-5.366054280304709222e-07, +-5.358721780509328385e-07, +-5.351381791392132246e-07, +-5.344034326231504691e-07, +-5.336679398313893357e-07, +-5.329317020936929893e-07, +-5.321947207408169996e-07, +-5.314569971043848278e-07, +-5.307185325172202864e-07, +-5.299793283129139645e-07, +-5.292393858261706172e-07, +-5.284987063926656994e-07, +-5.277572913489645799e-07, +-5.270151420326680195e-07, +-5.262722597824459462e-07, +-5.255286459377472408e-07, +-5.247843018391161035e-07, +-5.240392288280633051e-07, +-5.232934282469396611e-07, +-5.225469014392726219e-07, +-5.217996497493294152e-07, +-5.210516745224622118e-07, +-5.203029771049436960e-07, +-5.195535588440283687e-07, +-5.188034210877955295e-07, +-5.180525651854935951e-07, +-5.173009924870929718e-07, +-5.165487043436314335e-07, +-5.157957021070892897e-07, +-5.150419871302558726e-07, +-5.142875607670468563e-07, +-5.135324243722129834e-07, +-5.127765793013734172e-07, +-5.120200269111721250e-07, +-5.112627685591765515e-07, +-5.105048056037502469e-07, +-5.097461394044011025e-07, +-5.089867713213312593e-07, +-5.082267027157887321e-07, +-5.074659349498975795e-07, +-5.067044693867022673e-07, +-5.059423073901481867e-07, +-5.051794503251215709e-07, +-5.044158995573188399e-07, +-5.036516564534294540e-07, +-5.028867223810152117e-07, +-5.021210987085300488e-07, +-5.013547868053277677e-07, +-5.005877880416825782e-07, +-4.998201037886618303e-07, +-4.990517354183186088e-07, +-4.982826843035562077e-07, +-4.975129518181625411e-07, +-4.967425393368376716e-07, +-4.959714482350598735e-07, +-4.951996798892841559e-07, +-4.944272356768025021e-07, +-4.936541169757792339e-07, +-4.928803251652448698e-07, +-4.921058616251299009e-07, +-4.913307277361278892e-07, +-4.905549248798928261e-07, +-4.897784544389073129e-07, +-4.890013177965049017e-07, +-4.882235163368741181e-07, +-4.874450514450895902e-07, +-4.866659245069734527e-07, +-4.858861369092952466e-07, +-4.851056900396338529e-07, +-4.843245852864085152e-07, +-4.835428240389142033e-07, +-4.827604076871820644e-07, +-4.819773376221744527e-07, +-4.811936152356546977e-07, +-4.804092419202132568e-07, +-4.796242190692713149e-07, +-4.788385480771031249e-07, +-4.780522303387115998e-07, +-4.772652672500119072e-07, +-4.764776602077089140e-07, +-4.756894106093185211e-07, +-4.749005198532050389e-07, +-4.741109893384415855e-07, +-4.733208204649732464e-07, +-4.725300146336555619e-07, +-4.717385732459429771e-07, +-4.709464977042243737e-07, +-4.701537894116843677e-07, +-4.693604497722074361e-07, +-4.685664801905337709e-07, +-4.677718820722954368e-07, +-4.669766568237111750e-07, +-4.661808058519231510e-07, +-4.653843305648524833e-07, +-4.645872323710666823e-07, +-4.637895126801503861e-07, +-4.629911729022246695e-07, +-4.621922144483216970e-07, +-4.613926387302410978e-07, +-4.605924471604551514e-07, +-4.597916411522643765e-07, +-4.589902221198387182e-07, +-4.581881914779016048e-07, +-4.573855506420748488e-07, +-4.565823010287350221e-07, +-4.557784440548759188e-07, +-4.549739811384794500e-07, +-4.541689136980445873e-07, +-4.533632431529462934e-07, +-4.525569709232705621e-07, +-4.517500984298833457e-07, +-4.509426270942476490e-07, +-4.501345583388050114e-07, +-4.493258935864906338e-07, +-4.485166342611125846e-07, +-4.477067817872015572e-07, +-4.468963375898832853e-07, +-4.460853030952108454e-07, +-4.452736797298565477e-07, +-4.444614689211451825e-07, +-4.436486720972185034e-07, +-4.428352906869011843e-07, +-4.420213261197309420e-07, +-4.412067798259858532e-07, +-4.403916532365491994e-07, +-4.395759477831135493e-07, +-4.387596648980728149e-07, +-4.379428060143810615e-07, +-4.371253725658986269e-07, +-4.363073659870791425e-07, +-4.354887877129939383e-07, +-4.346696391795129378e-07, +-4.338499218231551035e-07, +-4.330296370811274530e-07, +-4.322087863913169070e-07, +-4.313873711923258114e-07, +-4.305653929233321237e-07, +-4.297428530242897368e-07, +-4.289197529357914708e-07, +-4.280960940991003609e-07, +-4.272718779561820032e-07, +-4.264471059495627293e-07, +-4.256217795225347478e-07, +-4.247959001190163302e-07, +-4.239694691835862752e-07, +-4.231424881614739024e-07, +-4.223149584985983872e-07, +-4.214868816414240234e-07, +-4.206582590371672171e-07, +-4.198290921336563560e-07, +-4.189993823793593901e-07, +-4.181691312234242257e-07, +-4.173383401155287994e-07, +-4.165070105060903492e-07, +-4.156751438461245416e-07, +-4.148427415872794591e-07, +-4.140098051818290888e-07, +-4.131763360827078916e-07, +-4.123423357433691889e-07, +-4.115078056179915213e-07, +-4.106727471613355528e-07, +-4.098371618287771050e-07, +-4.090010510763068925e-07, +-4.081644163605597455e-07, +-4.073272591386718318e-07, +-4.064895808684909859e-07, +-4.056513830084359951e-07, +-4.048126670175228051e-07, +-4.039734343554012601e-07, +-4.031336864822106301e-07, +-4.022934248587526712e-07, +-4.014526509465300587e-07, +-4.006113662074156749e-07, +-3.997695721040136556e-07, +-3.989272700995092547e-07, +-3.980844616575619582e-07, +-3.972411482425154433e-07, +-3.963973313192543234e-07, +-3.955530123532359122e-07, +-3.947081928104873647e-07, +-3.938628741576390823e-07, +-3.930170578617474180e-07, +-3.921707453906798118e-07, +-3.913239382126103825e-07, +-3.904766377964205746e-07, +-3.896288456115429860e-07, +-3.887805631278579247e-07, +-3.879317918158638210e-07, +-3.870825331467232317e-07, +-3.862327885919203748e-07, +-3.853825596236301174e-07, +-3.845318477145673103e-07, +-3.836806543378383981e-07, +-3.828289809673433365e-07, +-3.819768290772543495e-07, +-3.811242001424259989e-07, +-3.802710956382381658e-07, +-3.794175170404851951e-07, +-3.785634658255601781e-07, +-3.777089434704829046e-07, +-3.768539514525757141e-07, +-3.759984912498196199e-07, +-3.751425643407081434e-07, +-3.742861722041026827e-07, +-3.734293163195883729e-07, +-3.725719981671475545e-07, +-3.717142192271909549e-07, +-3.708559809807408592e-07, +-3.699972849092792269e-07, +-3.691381324947832670e-07, +-3.682785252197635015e-07, +-3.674184645671062704e-07, +-3.665579520202968189e-07, +-3.656969890633072247e-07, +-3.648355771804417077e-07, +-3.639737178567102256e-07, +-3.631114125774859013e-07, +-3.622486628285453628e-07, +-3.613854700962491618e-07, +-3.605218358673889366e-07, +-3.596577616292260582e-07, +-3.587932488695219120e-07, +-3.579282990763919427e-07, +-3.570629137385193194e-07, +-3.561970943450106213e-07, +-3.553308423854281845e-07, +-3.544641593497836432e-07, +-3.535970467285782164e-07, +-3.527295060126475956e-07, +-3.518615386933856666e-07, +-3.509931462625892914e-07, +-3.501243302124961597e-07, +-3.492550920357840476e-07, +-3.483854332255998817e-07, +-3.475153552754104493e-07, +-3.466448596792269683e-07, +-3.457739479314483329e-07, +-3.449026215268999713e-07, +-3.440308819608649213e-07, +-3.431587307289354406e-07, +-3.422861693272336590e-07, +-3.414131992522580007e-07, +-3.405398220009186538e-07, +-3.396660390705361408e-07, +-3.387918519588751472e-07, +-3.379172621639936437e-07, +-3.370422711844606795e-07, +-3.361668805192136042e-07, +-3.352910916675810437e-07, +-3.344149061292893061e-07, +-3.335383254044924508e-07, +-3.326613509936220465e-07, +-3.317839843976089880e-07, +-3.309062271177321416e-07, +-3.300280806556486798e-07, +-3.291495465134394502e-07, +-3.282706261934427458e-07, +-3.273913211984491750e-07, +-3.265116330317347490e-07, +-3.256315631967161924e-07, +-3.247511131973297257e-07, +-3.238702845378751054e-07, +-3.229890787229018037e-07, +-3.221074972574299787e-07, +-3.212255416467981138e-07, +-3.203432133967013464e-07, +-3.194605140131838974e-07, +-3.185774450026784050e-07, +-3.176940078718098369e-07, +-3.168102041278181599e-07, +-3.159260352780130091e-07, +-3.150415028301978396e-07, +-3.141566082925123788e-07, +-3.132713531733149946e-07, +-3.123857389813721656e-07, +-3.114997672258934749e-07, +-3.106134394161859671e-07, +-3.097267570620338839e-07, +-3.088397216735416987e-07, +-3.079523347609781561e-07, +-3.070645978351996829e-07, +-3.061765124071040515e-07, +-3.052880799880574966e-07, +-3.043993020897297026e-07, +-3.035101802239496487e-07, +-3.026207159030744922e-07, +-3.017309106396490084e-07, +-3.008407659464402657e-07, +-2.999502833366248197e-07, +-2.990594643236749469e-07, +-2.981683104211969663e-07, +-2.972768231433182812e-07, +-2.963850040043375545e-07, +-2.954928545187577954e-07, +-2.946003762014780014e-07, +-2.937075705676387860e-07, +-2.928144391326542484e-07, +-2.919209834122527371e-07, +-2.910272049223125255e-07, +-2.901331051791031101e-07, +-2.892386856991534973e-07, +-2.883439479991027549e-07, +-2.874488935960842472e-07, +-2.865535240073706227e-07, +-2.856578407504131476e-07, +-2.847618453430330832e-07, +-2.838655393032630250e-07, +-2.829689241493838024e-07, +-2.820720013999583597e-07, +-2.811747725736773842e-07, +-2.802772391895881114e-07, +-2.793794027669374114e-07, +-2.784812648252051949e-07, +-2.775828268841053118e-07, +-2.766840904636217103e-07, +-2.757850570838471818e-07, +-2.748857282652183076e-07, +-2.739861055283520337e-07, +-2.730861903940884467e-07, +-2.721859843834843675e-07, +-2.712854890178482389e-07, +-2.703847058185877652e-07, +-2.694836363074343762e-07, +-2.685822820062896495e-07, +-2.676806444372580800e-07, +-2.667787251226877903e-07, +-2.658765255850065243e-07, +-2.649740473469590279e-07, +-2.640712919314447893e-07, +-2.631682608615554674e-07, +-2.622649556605719269e-07, +-2.613613778520026199e-07, +-2.604575289594203198e-07, +-2.595534105067004558e-07, +-2.586490240178562584e-07, +-2.577443710170785706e-07, +-2.568394530287347887e-07, +-2.559342715774013673e-07, +-2.550288281877058478e-07, +-2.541231243845616451e-07, +-2.532171616930071645e-07, +-2.523109416382428591e-07, +-2.514044657456653233e-07, +-2.504977355407145089e-07, +-2.495907525490589078e-07, +-2.486835182966391740e-07, +-2.477760343093078704e-07, +-2.468683021132213797e-07, +-2.459603232346825687e-07, +-2.450520992000147385e-07, +-2.441436315357987414e-07, +-2.432349217687157501e-07, +-2.423259714255773804e-07, +-2.414167820333682546e-07, +-2.405073551190819416e-07, +-2.395976922099178926e-07, +-2.386877948333198215e-07, +-2.377776645166126726e-07, +-2.368673027874010698e-07, +-2.359567111734048864e-07, +-2.350458912023381460e-07, +-2.341348444021065132e-07, +-2.332235723008430017e-07, +-2.323120764265488321e-07, +-2.314003583074880434e-07, +-2.304884194720253129e-07, +-2.295762614484656282e-07, +-2.286638857654882864e-07, +-2.277512939515871901e-07, +-2.268384875355074666e-07, +-2.259254680460814346e-07, +-2.250122370120694680e-07, +-2.240987959625537338e-07, +-2.231851464265789708e-07, +-2.222712899331877736e-07, +-2.213572280116185604e-07, +-2.204429621911828323e-07, +-2.195284940011036020e-07, +-2.186138249709524362e-07, +-2.176989566300859937e-07, +-2.167838905080856614e-07, +-2.158686281345528110e-07, +-2.149531710391470743e-07, +-2.140375207515837754e-07, +-2.131216788016728679e-07, +-2.122056467191530488e-07, +-2.112894260339328980e-07, +-2.103730182759661529e-07, +-2.094564249750897928e-07, +-2.085396476614225943e-07, +-2.076226878650000598e-07, +-2.067055471158133286e-07, +-2.057882269440082030e-07, +-2.048707288797201882e-07, +-2.039530544531122389e-07, +-2.030352051944157869e-07, +-2.021171826337621555e-07, +-2.011989883014246781e-07, +-2.002806237276951643e-07, +-1.993620904427204486e-07, +-1.984433899769004164e-07, +-1.975245238605262420e-07, +-1.966054936238161224e-07, +-1.956863007971152301e-07, +-1.947669469107305418e-07, +-1.938474334949702517e-07, +-1.929277620801400394e-07, +-1.920079341965821659e-07, +-1.910879513745103811e-07, +-1.901678151442498464e-07, +-1.892475270360745572e-07, +-1.883270885802427063e-07, +-1.874065013070362035e-07, +-1.864857667465965628e-07, +-1.855648864291645598e-07, +-1.846438618849157490e-07, +-1.837226946439979969e-07, +-1.828013862365315624e-07, +-1.818799381926434013e-07, +-1.809583520423053827e-07, +-1.800366293155737086e-07, +-1.791147715424242716e-07, +-1.781927802527906392e-07, +-1.772706569766033613e-07, +-1.763484032436231577e-07, +-1.754260205836849165e-07, +-1.745035105265284464e-07, +-1.735808746018405107e-07, +-1.726581143392502213e-07, +-1.717352312683685586e-07, +-1.708122269186216114e-07, +-1.698891028194526739e-07, +-1.689658605003606533e-07, +-1.680425014905298900e-07, +-1.671190273192363626e-07, +-1.661954395156808494e-07, +-1.652717396088654461e-07, +-1.643479291278344151e-07, +-1.634240096015102047e-07, +-1.624999825587294747e-07, +-1.615758495282845216e-07, +-1.606516120387546395e-07, +-1.597272716187089051e-07, +-1.588028297967443475e-07, +-1.578782881011165616e-07, +-1.569536480601444056e-07, +-1.560289112020452258e-07, +-1.551040790548103431e-07, +-1.541791531464452397e-07, +-1.532541350048064260e-07, +-1.523290261576375451e-07, +-1.514038281325684468e-07, +-1.504785424571532504e-07, +-1.495531706586629284e-07, +-1.486277142645330157e-07, +-1.477021748017888451e-07, +-1.467765537974921982e-07, +-1.458508527785758431e-07, +-1.449250732716771713e-07, +-1.439992168035444036e-07, +-1.430732849006671773e-07, +-1.421472790893135248e-07, +-1.412212008957337703e-07, +-1.402950518460322834e-07, +-1.393688334660052727e-07, +-1.384425472815844720e-07, +-1.375161948182647844e-07, +-1.365897776015503774e-07, +-1.356632971567477687e-07, +-1.347367550090061394e-07, +-1.338101526833111671e-07, +-1.328834917045266093e-07, +-1.319567735972272532e-07, +-1.310299998859415636e-07, +-1.301031720950263489e-07, +-1.291762917485018015e-07, +-1.282493603704562203e-07, +-1.273223794846782927e-07, +-1.263953506146920880e-07, +-1.254682752839610596e-07, +-1.245411550157222647e-07, +-1.236139913330237399e-07, +-1.226867857587636501e-07, +-1.217595398155235814e-07, +-1.208322550258126192e-07, +-1.199049329119406904e-07, +-1.189775749958537227e-07, +-1.180501827995396776e-07, +-1.171227578446573123e-07, +-1.161953016525763601e-07, +-1.152678157445776030e-07, +-1.143403016416892216e-07, +-1.134127608647223709e-07, +-1.124851949342701742e-07, +-1.115576053707471766e-07, +-1.106299936942214866e-07, +-1.097023614246579940e-07, +-1.087747100817544420e-07, +-1.078470411849762091e-07, +-1.069193562535985943e-07, +-1.059916568065378472e-07, +-1.050639443625956826e-07, +-1.041362204402923888e-07, +-1.032084865579059232e-07, +-1.022807442334693843e-07, +-1.013529949848087845e-07, +-1.004252403293784343e-07, +-9.949748178450194957e-08, +-9.856972086720790088e-08, +-9.764195909426714896e-08, +-9.671419798223235094e-08, +-9.578643904727077718e-08, +-9.485868380540783327e-08, +-9.393093377236100183e-08, +-9.300319046357924282e-08, +-9.207545539423871866e-08, +-9.114773007928199595e-08, +-9.022001603325268877e-08, +-8.929231477049670842e-08, +-8.836462780520151811e-08, +-8.743695665102416635e-08, +-8.650930282150025832e-08, +-8.558166782987522424e-08, +-8.465405318898053343e-08, +-8.372646041147728249e-08, +-8.279889100968874746e-08, +-8.187134649564004876e-08, +-8.094382838109583096e-08, +-8.001633817739476048e-08, +-7.908887739565097382e-08, +-7.816144754679388810e-08, +-7.723405014119538752e-08, +-7.630668668907897990e-08, +-7.537935870035217684e-08, +-7.445206768443993261e-08, +-7.352481515073447161e-08, +-7.259760260801830011e-08, +-7.167043156491207489e-08, +-7.074330352966791400e-08, +-6.981622001024905757e-08, +-6.888918251412147117e-08, +-6.796219254870416303e-08, +-6.703525162079091192e-08, +-6.610836123700051814e-08, +-6.518152290360918363e-08, +-6.425473812638424205e-08, +-6.332800841099241545e-08, +-6.240133526262799323e-08, +-6.147472018605129275e-08, +-6.054816468579100759e-08, +-5.962167026602063332e-08, +-5.869523843038883600e-08, +-5.776887068247111255e-08, +-5.684256852519139309e-08, +-5.591633346127178223e-08, +-5.499016699306556794e-08, +-5.406407062239085233e-08, +-5.313804585093860315e-08, +-5.221209417990100486e-08, +-5.128621711000974718e-08, +-5.036041614173890267e-08, +-4.943469277517959899e-08, +-4.850904850987350411e-08, +-4.758348484522059991e-08, +-4.665800328010763905e-08, +-4.573260531294679756e-08, +-4.480729244187806268e-08, +-4.388206616460347919e-08, +-4.295692797842489524e-08, +-4.203187938028332958e-08, +-4.110692186659214575e-08, +-4.018205693348084537e-08, +-3.925728607666963448e-08, +-3.833261079130305436e-08, +-3.740803257235774184e-08, +-3.648355291427087966e-08, +-3.555917331097847837e-08, +-3.463489525611872378e-08, +-3.371072024286533650e-08, +-3.278664976396572147e-08, +-3.186268531178058662e-08, +-3.093882837811623035e-08, +-3.001508045446947963e-08, +-2.909144303186053004e-08, +-2.816791760087163467e-08, +-2.724450565164534382e-08, +-2.632120867392220799e-08, +-2.539802815687518286e-08, +-2.447496558935294284e-08, +-2.355202245971338285e-08, +-2.262920025586269766e-08, +-2.170650046525247678e-08, +-2.078392457491892279e-08, +-1.986147407131579062e-08, +-1.893915044055867054e-08, +-1.801695516825842042e-08, +-1.709488973955978190e-08, +-1.617295563917990374e-08, +-1.525115435124208526e-08, +-1.432948735951956454e-08, +-1.340795614726899548e-08, +-1.248656219726914657e-08, +-1.156530699181859802e-08, +-1.064419201277441412e-08, +-9.723218741385467994e-09, +-8.802388658536698126e-09, +-7.881703244582218026e-09, +-6.961163979384281417e-09, +-6.040772342310850324e-09, +-5.120529812274236809e-09, +-4.200437867564772674e-09, +-3.280497986094499757e-09, +-2.360711645230823505e-09, +-1.441080321835153676e-09, +-5.216054923016172233e-10, + 3.977113676093526631e-10, + 1.316868782568250804e-09, + 2.235865277637883727e-09, + 3.154699378644698484e-09, + 4.073369611771118272e-09, + 4.991874503721836132e-09, + 5.910212581890115061e-09, + 6.828382373909265459e-09, + 7.746382408228696598e-09, + 8.664211213665558261e-09, + 9.581867319570822068e-09, + 1.049934925595463491e-08, + 1.141665555328367292e-08, + 1.233378474244267097e-08, + 1.325073535510522293e-08, + 1.416750592332659207e-08, + 1.508409497970978081e-08, + 1.600050105757178575e-08, + 1.691672269053635680e-08, + 1.783275841290462373e-08, + 1.874860675961678944e-08, + 1.966426626604942106e-08, + 2.057973546814093990e-08, + 2.149501290255709392e-08, + 2.241009710624379386e-08, + 2.332498661700170267e-08, + 2.423967997303861165e-08, + 2.515417571313558466e-08, + 2.606847237681263910e-08, + 2.698256850392217340e-08, + 2.789646263501933214e-08, + 2.881015331132314186e-08, + 2.972363907451495024e-08, + 3.063691846686274808e-08, + 3.154999003138714143e-08, + 3.246285231141435310e-08, + 3.337550385115014043e-08, + 3.428794319523316738e-08, + 3.520016888894080047e-08, + 3.611217947815170033e-08, + 3.702397350934688716e-08, + 3.793554952957184257e-08, + 3.884690608660195235e-08, + 3.975804172869993078e-08, + 4.066895500478118397e-08, + 4.157964446437539559e-08, + 4.249010865762899517e-08, + 4.340034613526613503e-08, + 4.431035544875464919e-08, + 4.522013515006307401e-08, + 4.612968379182666006e-08, + 4.703899992730807108e-08, + 4.794808211035992264e-08, + 4.885692889558903375e-08, + 4.976553883811500922e-08, + 5.067391049373470302e-08, + 5.158204241888455179e-08, + 5.248993317064189833e-08, + 5.339758130668776185e-08, + 5.430498538547049399e-08, + 5.521214396596487739e-08, + 5.611905560783699927e-08, + 5.702571887140553946e-08, + 5.793213231764363643e-08, + 5.883829450814178997e-08, + 5.974420400527100100e-08, + 6.064985937194275027e-08, + 6.155525917177252201e-08, + 6.246040196904209115e-08, + 6.336528632866132075e-08, + 6.426991081633252615e-08, + 6.517427399830821031e-08, + 6.607837444155777043e-08, + 6.698221071372682720e-08, + 6.788578138314142021e-08, + 6.878908501876822390e-08, + 6.969212019038031455e-08, + 7.059488546831449532e-08, + 7.149737942363707652e-08, + 7.239960062810515028e-08, + 7.330154765416816552e-08, + 7.420321907493090997e-08, + 7.510461346431623313e-08, + 7.600572939682603740e-08, + 7.690656544770377607e-08, + 7.780712019289711764e-08, + 7.870739220901945886e-08, + 7.960738007351401078e-08, + 8.050708236445348878e-08, + 8.140649766050272397e-08, + 8.230562454128323147e-08, + 8.320446158697345055e-08, + 8.410300737847002504e-08, + 8.500126049755347761e-08, + 8.589921952644517190e-08, + 8.679688304837553925e-08, + 8.769424964714129223e-08, + 8.859131790726996078e-08, + 8.948808641414280466e-08, + 9.038455375379523127e-08, + 9.128071851287842775e-08, + 9.217657927902481596e-08, + 9.307213464044724708e-08, + 9.396738318610190988e-08, + 9.486232350585175515e-08, + 9.575695419006617996e-08, + 9.665127382998612534e-08, + 9.754528101768464954e-08, + 9.843897434586855030e-08, + 9.933235240800175368e-08, + 1.002254137984673356e-07, + 1.011181571121287985e-07, + 1.020105809448926997e-07, + 1.029026838932724559e-07, + 1.037944645545471884e-07, + 1.046859215269271195e-07, + 1.055770534091531242e-07, + 1.064678588008605976e-07, + 1.073583363025420391e-07, + 1.082484845153462003e-07, + 1.091383020412048620e-07, + 1.100277874829908185e-07, + 1.109169394440820269e-07, + 1.118057565289234278e-07, + 1.126942373425893338e-07, + 1.135823804909852746e-07, + 1.144701845808098279e-07, + 1.153576482195571736e-07, + 1.162447700154801681e-07, + 1.171315485777506328e-07, + 1.180179825162223959e-07, + 1.189040704415933806e-07, + 1.197898109653687588e-07, + 1.206752026998607396e-07, + 1.215602442581529540e-07, + 1.224449342542613519e-07, + 1.233292713028974557e-07, + 1.242132540196287943e-07, + 1.250968810208423477e-07, + 1.259801509237064047e-07, + 1.268630623463322663e-07, + 1.277456139075369179e-07, + 1.286278042270048389e-07, + 1.295096319252504159e-07, + 1.303910956236203774e-07, + 1.312721939442537456e-07, + 1.321529255102469016e-07, + 1.330332889454141135e-07, + 1.339132828744496898e-07, + 1.347929059228900491e-07, + 1.356721567171176102e-07, + 1.365510338843200823e-07, + 1.374295360526534124e-07, + 1.383076618510051723e-07, + 1.391854099091559450e-07, + 1.400627788577411281e-07, + 1.409397673282126859e-07, + 1.418163739530027054e-07, + 1.426925973652839510e-07, + 1.435684361991328391e-07, + 1.444438890894905535e-07, + 1.453189546721666988e-07, + 1.461936315838010511e-07, + 1.470679184620230918e-07, + 1.479418139452168496e-07, + 1.488153166726843252e-07, + 1.496884252846027426e-07, + 1.505611384219916472e-07, + 1.514334547268698715e-07, + 1.523053728420622526e-07, + 1.531768914111615426e-07, + 1.540480090788850621e-07, + 1.549187244906837681e-07, + 1.557890362929000668e-07, + 1.566589431328893366e-07, + 1.575284436588251365e-07, + 1.583975365196609047e-07, + 1.592662203654875655e-07, + 1.601344938471418818e-07, + 1.610023556163636596e-07, + 1.618698043259590932e-07, + 1.627368386293670308e-07, + 1.636034571812120344e-07, + 1.644696586368750930e-07, + 1.653354416526526794e-07, + 1.662008048858748847e-07, + 1.670657469947131155e-07, + 1.679302666381440422e-07, + 1.687943624763001114e-07, + 1.696580331700837494e-07, + 1.705212773813244070e-07, + 1.713840937729371928e-07, + 1.722464810084955192e-07, + 1.731084377527789203e-07, + 1.739699626713472329e-07, + 1.748310544307360494e-07, + 1.756917116983813051e-07, + 1.765519331428168754e-07, + 1.774117174332469828e-07, + 1.782710632400947568e-07, + 1.791299692345742703e-07, + 1.799884340888494377e-07, + 1.808464564761922251e-07, + 1.817040350705936498e-07, + 1.825611685471179995e-07, + 1.834178555818643714e-07, + 1.842740948517748194e-07, + 1.851298850347533884e-07, + 1.859852248098219422e-07, + 1.868401128566984734e-07, + 1.876945478563391249e-07, + 1.885485284905139325e-07, + 1.894020534419647697e-07, + 1.902551213945629229e-07, + 1.911077310329214939e-07, + 1.919598810427488775e-07, + 1.928115701108088451e-07, + 1.936627969247331916e-07, + 1.945135601731728513e-07, + 1.953638585457666107e-07, + 1.962136907331391763e-07, + 1.970630554268666313e-07, + 1.979119513196334015e-07, + 1.987603771049990830e-07, + 1.996083314775605169e-07, + 2.004558131329093841e-07, + 2.013028207675992247e-07, + 2.021493530792999682e-07, + 2.029954087665692873e-07, + 2.038409865290090878e-07, + 2.046860850672268622e-07, + 2.055307030828416459e-07, + 2.063748392784444708e-07, + 2.072184923577530815e-07, + 2.080616610253859894e-07, + 2.089043439870170822e-07, + 2.097465399493395196e-07, + 2.105882476200281989e-07, + 2.114294657078954767e-07, + 2.122701929226652760e-07, + 2.131104279751243344e-07, + 2.139501695770891695e-07, + 2.147894164414062913e-07, + 2.156281672819172882e-07, + 2.164664208136109751e-07, + 2.173041757523989036e-07, + 2.181414308152703689e-07, + 2.189781847202532607e-07, + 2.198144361864172135e-07, + 2.206501839338385870e-07, + 2.214854266837538317e-07, + 2.223201631583328552e-07, + 2.231543920808329698e-07, + 2.239881121755632646e-07, + 2.248213221678496919e-07, + 2.256540207841861829e-07, + 2.264862067520479564e-07, + 2.273178787998570818e-07, + 2.281490356573227216e-07, + 2.289796760550661866e-07, + 2.298097987247735347e-07, + 2.306394023993130437e-07, + 2.314684858125056386e-07, + 2.322970476992816987e-07, + 2.331250867956447147e-07, + 2.339526018386719503e-07, + 2.347795915664791583e-07, + 2.356060547184108449e-07, + 2.364319900346296708e-07, + 2.372573962566422468e-07, + 2.380822721268883228e-07, + 2.389066163888937039e-07, + 2.397304277873848908e-07, + 2.405537050681025208e-07, + 2.413764469777649985e-07, + 2.421986522644093469e-07, + 2.430203196770202601e-07, + 2.438414479656761637e-07, + 2.446620358817047507e-07, + 2.454820821772726474e-07, + 2.463015856059107856e-07, + 2.471205449221056031e-07, + 2.479389588814845440e-07, + 2.487568262407490903e-07, + 2.495741457578586737e-07, + 2.503909161916223528e-07, + 2.512071363022239739e-07, + 2.520228048508141122e-07, + 2.528379205996613739e-07, + 2.536524823123012084e-07, + 2.544664887531657027e-07, + 2.552799386879241943e-07, + 2.560928308834433544e-07, + 2.569051641076043352e-07, + 2.577169371294536473e-07, + 2.585281487191689082e-07, + 2.593387976480214663e-07, + 2.601488826885274380e-07, + 2.609584026142284851e-07, + 2.617673561998034107e-07, + 2.625757422212169730e-07, + 2.633835594553528021e-07, + 2.641908066803505191e-07, + 2.649974826755659256e-07, + 2.658035862213901622e-07, + 2.666091160994013802e-07, + 2.674140710923272606e-07, + 2.682184499840458081e-07, + 2.690222515595523165e-07, + 2.698254746051083414e-07, + 2.706281179080219472e-07, + 2.714301802567965738e-07, + 2.722316604410962020e-07, + 2.730325572517125839e-07, + 2.738328694807094507e-07, + 2.746325959212066776e-07, + 2.754317353675297854e-07, + 2.762302866151735179e-07, + 2.770282484608031655e-07, + 2.778256197022204194e-07, + 2.786223991385146724e-07, + 2.794185855698388202e-07, + 2.802141777975617801e-07, + 2.810091746242333922e-07, + 2.818035748535473088e-07, + 2.825973772904918190e-07, + 2.833905807411308909e-07, + 2.841831840127514492e-07, + 2.849751859138312412e-07, + 2.857665852540361896e-07, + 2.865573808441907994e-07, + 2.873475714964207769e-07, + 2.881371560239400542e-07, + 2.889261332411959490e-07, + 2.897145019638338544e-07, + 2.905022610087042264e-07, + 2.912894091938206035e-07, + 2.920759453385105367e-07, + 2.928618682632006552e-07, + 2.936471767895602915e-07, + 2.944318697404691353e-07, + 2.952159459399802816e-07, + 2.959994042134741788e-07, + 2.967822433874675173e-07, + 2.975644622895889298e-07, + 2.983460597489013406e-07, + 2.991270345955420823e-07, + 2.999073856608713384e-07, + 3.006871117775815694e-07, + 3.014662117794799840e-07, + 3.022446845016401581e-07, + 3.030225287803625420e-07, + 3.037997434531768424e-07, + 3.045763273588089356e-07, + 3.053522793373637730e-07, + 3.061275982299291293e-07, + 3.069022828790801160e-07, + 3.076763321284903933e-07, + 3.084497448230707660e-07, + 3.092225198090818390e-07, + 3.099946559339577811e-07, + 3.107661520462702736e-07, + 3.115370069960519707e-07, + 3.123072196344427047e-07, + 3.130767888138310459e-07, + 3.138457133880021105e-07, + 3.146139922117450662e-07, + 3.153816241413518232e-07, + 3.161486080342310515e-07, + 3.169149427490494769e-07, + 3.176806271458409363e-07, + 3.184456600858294009e-07, + 3.192100404313975300e-07, + 3.199737670464057378e-07, + 3.207368387958394571e-07, + 3.214992545459518112e-07, + 3.222610131644088275e-07, + 3.230221135199355892e-07, + 3.237825544826375784e-07, + 3.245423349239661599e-07, + 3.253014537165421859e-07, + 3.260599097343011571e-07, + 3.268177018524588113e-07, + 3.275748289474769247e-07, + 3.283312898972059842e-07, + 3.290870835806758640e-07, + 3.298422088782032402e-07, + 3.305966646715344218e-07, + 3.313504498434934613e-07, + 3.321035632783007979e-07, + 3.328560038615405409e-07, + 3.336077704799864047e-07, + 3.343588620217430037e-07, + 3.351092773762108603e-07, + 3.358590154340606754e-07, + 3.366080750873630838e-07, + 3.373564552293873776e-07, + 3.381041547547443905e-07, + 3.388511725593488573e-07, + 3.395975075404225379e-07, + 3.403431585964625587e-07, + 3.410881246273784740e-07, + 3.418324045342922594e-07, + 3.425759972196689147e-07, + 3.433189015872923224e-07, + 3.440611165422615429e-07, + 3.448026409909581502e-07, + 3.455434738411904394e-07, + 3.462836140019806626e-07, + 3.470230603837133127e-07, + 3.477618118980932482e-07, + 3.484998674581192761e-07, + 3.492372259782201012e-07, + 3.499738863740506141e-07, + 3.507098475626311757e-07, + 3.514451084623136294e-07, + 3.521796679927851134e-07, + 3.529135250750342320e-07, + 3.536466786314853102e-07, + 3.543791275858044234e-07, + 3.551108708630260287e-07, + 3.558419073895302538e-07, + 3.565722360930378680e-07, + 3.573018559025803180e-07, + 3.580307657486409709e-07, + 3.587589645629432501e-07, + 3.594864512785979130e-07, + 3.602132248300634523e-07, + 3.609392841531189381e-07, + 3.616646281849962608e-07, + 3.623892558642162830e-07, + 3.631131661305577116e-07, + 3.638363579253556761e-07, + 3.645588301911712277e-07, + 3.652805818719285053e-07, + 3.660016119130126737e-07, + 3.667219192610749472e-07, + 3.674415028641632447e-07, + 3.681603616716934430e-07, + 3.688784946344189372e-07, + 3.695959007045613479e-07, + 3.703125788356456678e-07, + 3.710285279824724151e-07, + 3.717437471014161072e-07, + 3.724582351500932766e-07, + 3.731719910874983663e-07, + 3.738850138741045272e-07, + 3.745973024717005644e-07, + 3.753088558433538259e-07, + 3.760196729537186291e-07, + 3.767297527686964943e-07, + 3.774390942555798231e-07, + 3.781476963831769412e-07, + 3.788555581214586211e-07, + 3.795626784420146859e-07, + 3.802690563176941792e-07, + 3.809746907227414193e-07, + 3.816795806329261253e-07, + 3.823837250252191087e-07, + 3.830871228780841828e-07, + 3.837897731714523275e-07, + 3.844916748865585831e-07, + 3.851928270060366530e-07, + 3.858932285140564935e-07, + 3.865928783959634253e-07, + 3.872917756387383894e-07, + 3.879899192306387528e-07, + 3.886873081613637442e-07, + 3.893839414220262372e-07, + 3.900798180051465568e-07, + 3.907749369046293444e-07, + 3.914692971158886540e-07, + 3.921628976356611289e-07, + 3.928557374620967925e-07, + 3.935478155948979620e-07, + 3.942391310349894349e-07, + 3.949296827848196623e-07, + 3.956194698483223674e-07, + 3.963084912307578329e-07, + 3.969967459388461499e-07, + 3.976842329807340777e-07, + 3.983709513659653446e-07, + 3.990569001056094500e-07, + 3.997420782120732524e-07, + 4.004264846992275480e-07, + 4.011101185823750951e-07, + 4.017929788782568081e-07, + 4.024750646050181936e-07, + 4.031563747823376234e-07, + 4.038369084312388751e-07, + 4.045166645742174990e-07, + 4.051956422352134485e-07, + 4.058738404396086973e-07, + 4.065512582141973292e-07, + 4.072278945873184691e-07, + 4.079037485886612532e-07, + 4.085788192493962258e-07, + 4.092531056021436279e-07, + 4.099266066809468746e-07, + 4.105993215213942634e-07, + 4.112712491604350619e-07, + 4.119423886365047098e-07, + 4.126127389894975026e-07, + 4.132822992607644733e-07, + 4.139510684930852820e-07, + 4.146190457307968588e-07, + 4.152862300196023452e-07, + 4.159526204066998425e-07, + 4.166182159407539312e-07, + 4.172830156718933939e-07, + 4.179470186516848515e-07, + 4.186102239332577540e-07, + 4.192726305711152796e-07, + 4.199342376212690666e-07, + 4.205950441411986083e-07, + 4.212550491898266893e-07, + 4.219142518276471814e-07, + 4.225726511165657487e-07, + 4.232302461198749128e-07, + 4.238870359025309798e-07, + 4.245430195308494262e-07, + 4.251981960726244359e-07, + 4.258525645972262568e-07, + 4.265061241754201470e-07, + 4.271588738794822595e-07, + 4.278108127831807430e-07, + 4.284619399617372548e-07, + 4.291122544919597330e-07, + 4.297617554520789724e-07, + 4.304104419217307835e-07, + 4.310583129822257728e-07, + 4.317053677162459462e-07, + 4.323516052079702284e-07, + 4.329970245431655721e-07, + 4.336416248090339628e-07, + 4.342854050941903954e-07, + 4.349283644889283668e-07, + 4.355705020849223552e-07, + 4.362118169753520161e-07, + 4.368523082550189676e-07, + 4.374919750200211056e-07, + 4.381308163681736852e-07, + 4.387688313986801958e-07, + 4.394060192122530630e-07, + 4.400423789112326038e-07, + 4.406779095992930002e-07, + 4.413126103817119738e-07, + 4.419464803653376448e-07, + 4.425795186584459668e-07, + 4.432117243708307231e-07, + 4.438430966139202060e-07, + 4.444736345004516914e-07, + 4.451033371448955903e-07, + 4.457322036631177479e-07, + 4.463602331725410674e-07, + 4.469874247921122644e-07, + 4.476137776422953022e-07, + 4.482392908450638216e-07, + 4.488639635239938908e-07, + 4.494877948041087339e-07, + 4.501107838119586694e-07, + 4.507329296757414422e-07, + 4.513542315250119554e-07, + 4.519746884909428924e-07, + 4.525942997063058168e-07, + 4.532130643053134663e-07, + 4.538309814237467009e-07, + 4.544480501989236926e-07, + 4.550642697696700673e-07, + 4.556796392764424129e-07, + 4.562941578611483906e-07, + 4.569078246672357262e-07, + 4.575206388398181538e-07, + 4.581325995253724418e-07, + 4.587437058720127795e-07, + 4.593539570294531368e-07, + 4.599633521488722150e-07, + 4.605718903830255205e-07, + 4.611795708862166711e-07, + 4.617863928143048606e-07, + 4.623923553246680657e-07, + 4.629974575763243839e-07, + 4.636016987297626262e-07, + 4.642050779470531203e-07, + 4.648075943918243108e-07, + 4.654092472292331135e-07, + 4.660100356260819643e-07, + 4.666099587506472423e-07, + 4.672090157727943076e-07, + 4.678072058639489667e-07, + 4.684045281971035076e-07, + 4.690009819467839834e-07, + 4.695965662891669965e-07, + 4.701912804019110335e-07, + 4.707851234642712384e-07, + 4.713780946570698716e-07, + 4.719701931626713762e-07, + 4.725614181650940797e-07, + 4.731517688498460291e-07, + 4.737412444040330401e-07, + 4.743298440163373096e-07, + 4.749175668770161983e-07, + 4.755044121778732724e-07, + 4.760903791123749299e-07, + 4.766754668755083633e-07, + 4.772596746637562019e-07, + 4.778430016753490333e-07, + 4.784254471099873650e-07, + 4.790070101689525854e-07, + 4.795876900551959027e-07, + 4.801674859731662910e-07, + 4.807463971289283339e-07, + 4.813244227301309902e-07, + 4.819015619859832414e-07, + 4.824778141073665359e-07, + 4.830531783066951337e-07, + 4.836276537978929196e-07, + 4.842012397966397834e-07, + 4.847739355200968639e-07, + 4.853457401870199451e-07, + 4.859166530178407717e-07, + 4.864866732345056893e-07, + 4.870558000605808879e-07, + 4.876240327212381087e-07, + 4.881913704432417262e-07, + 4.887578124549273615e-07, + 4.893233579863436537e-07, + 4.898880062689471164e-07, + 4.904517565359891264e-07, + 4.910146080222149087e-07, + 4.915765599639738629e-07, + 4.921376115993314772e-07, + 4.926977621677945726e-07, + 4.932570109105577887e-07, + 4.938153570704807146e-07, + 4.943727998919490808e-07, + 4.949293386209597804e-07, + 4.954849725052263246e-07, + 4.960397007938924399e-07, + 4.965935227378949154e-07, + 4.971464375896820708e-07, + 4.976984446033423989e-07, + 4.982495430345810611e-07, + 4.987997321407186162e-07, + 4.993490111806676216e-07, + 4.998973794150395710e-07, + 5.004448361059854405e-07, + 5.009913805172782742e-07, + 5.015370119144153578e-07, + 5.020817295643588144e-07, + 5.026255327357752094e-07, + 5.031684206990059039e-07, + 5.037103927259384118e-07, + 5.042514480901149259e-07, + 5.047915860667040482e-07, + 5.053308059324731552e-07, + 5.058691069658986184e-07, + 5.064064884470097383e-07, + 5.069429496574641303e-07, + 5.074784898806544511e-07, + 5.080131084014527003e-07, + 5.085468045064420956e-07, + 5.090795774838879568e-07, + 5.096114266236152025e-07, + 5.101423512171116892e-07, + 5.106723505574993056e-07, + 5.112014239395392669e-07, + 5.117295706596041625e-07, + 5.122567900157882821e-07, + 5.127830813077433976e-07, + 5.133084438367882412e-07, + 5.138328769058862717e-07, + 5.143563798196171925e-07, + 5.148789518842808193e-07, + 5.154005924077430257e-07, + 5.159213006995459634e-07, + 5.164410760708714284e-07, + 5.169599178345542013e-07, + 5.174778253050482722e-07, + 5.179947977985315548e-07, + 5.185108346327573385e-07, + 5.190259351271552964e-07, + 5.195400986028035339e-07, + 5.200533243824121771e-07, + 5.205656117904141111e-07, + 5.210769601528236316e-07, + 5.215873687973339595e-07, + 5.220968370532933121e-07, + 5.226053642517055385e-07, + 5.231129497252085204e-07, + 5.236195928081722157e-07, + 5.241252928365488402e-07, + 5.246300491479762050e-07, + 5.251338610817517765e-07, + 5.256367279788344761e-07, + 5.261386491818201165e-07, + 5.266396240350375398e-07, + 5.271396518844135157e-07, + 5.276387320775569155e-07, + 5.281368639637417713e-07, + 5.286340468938854651e-07, + 5.291302802206445494e-07, + 5.296255632982929858e-07, + 5.301198954827007580e-07, + 5.306132761315490177e-07, + 5.311057046041008568e-07, + 5.315971802612803986e-07, + 5.320877024657805828e-07, + 5.325772705818015387e-07, + 5.330658839753808217e-07, + 5.335535420141353858e-07, + 5.340402440673761452e-07, + 5.345259895060715518e-07, + 5.350107777029569680e-07, + 5.354946080322782278e-07, + 5.359774798701214503e-07, + 5.364593925941598823e-07, + 5.369403455837445312e-07, + 5.374203382199974447e-07, + 5.378993698855815290e-07, + 5.383774399649104015e-07, + 5.388545478441266858e-07, + 5.393306929109822621e-07, + 5.398058745549149239e-07, + 5.402800921671376338e-07, + 5.407533451403834612e-07, + 5.412256328692328540e-07, + 5.416969547498651410e-07, + 5.421673101801392113e-07, + 5.426366985596939938e-07, + 5.431051192897198639e-07, + 5.435725717731653201e-07, + 5.440390554147111489e-07, + 5.445045696206578757e-07, + 5.449691137990034799e-07, + 5.454326873595221689e-07, + 5.458952897135448909e-07, + 5.463569202741610344e-07, + 5.468175784562045581e-07, + 5.472772636761275715e-07, + 5.477359753521047312e-07, + 5.481937129040017952e-07, + 5.486504757533638703e-07, + 5.491062633234934447e-07, + 5.495610750393249216e-07, + 5.500149103274922757e-07, + 5.504677686164132273e-07, + 5.509196493360758958e-07, + 5.513705519182281115e-07, + 5.518204757963704276e-07, + 5.522694204056311828e-07, + 5.527173851828652869e-07, + 5.531643695666300796e-07, + 5.536103729971612967e-07, + 5.540553949164657140e-07, + 5.544994347681890100e-07, + 5.549424919976989871e-07, + 5.553845660520777367e-07, + 5.558256563801052276e-07, + 5.562657624322476593e-07, + 5.567048836607437539e-07, + 5.571430195194777007e-07, + 5.575801694640597304e-07, + 5.580163329518085392e-07, + 5.584515094417588062e-07, + 5.588856983946259356e-07, + 5.593188992729041008e-07, + 5.597511115407346365e-07, + 5.601823346639896835e-07, + 5.606125681102569420e-07, + 5.610418113488115076e-07, + 5.614700638507116920e-07, + 5.618973250886610627e-07, + 5.623235945371021455e-07, + 5.627488716721888967e-07, + 5.631731559717959137e-07, + 5.635964469154899544e-07, + 5.640187439846183456e-07, + 5.644400466621793872e-07, + 5.648603544329200786e-07, + 5.652796667832969435e-07, + 5.656979832014881001e-07, + 5.661153031773717676e-07, + 5.665316262026063107e-07, + 5.669469517705111259e-07, + 5.673612793761425564e-07, + 5.677746085162871163e-07, + 5.681869386894283501e-07, + 5.685982693958320655e-07, + 5.690086001374480775e-07, + 5.694179304178889270e-07, + 5.698262597426161218e-07, + 5.702335876187299666e-07, + 5.706399135550592430e-07, + 5.710452370622422063e-07, + 5.714495576524939699e-07, + 5.718528748399073074e-07, + 5.722551881402141069e-07, + 5.726564970708771684e-07, + 5.730568011511486490e-07, + 5.734560999019661955e-07, + 5.738543928459429917e-07, + 5.742516795075371652e-07, + 5.746479594128559107e-07, + 5.750432320897422051e-07, + 5.754374970678446881e-07, + 5.758307538784265497e-07, + 5.762230020545436194e-07, + 5.766142411310252022e-07, + 5.770044706443711634e-07, + 5.773936901328170449e-07, + 5.777818991364073333e-07, + 5.781690971967903723e-07, + 5.785552838574807305e-07, + 5.789404586636515732e-07, + 5.793246211622106833e-07, + 5.797077709018857998e-07, + 5.800899074330194241e-07, + 5.804710303077488146e-07, + 5.808511390799906340e-07, + 5.812302333053390941e-07, + 5.816083125411277885e-07, + 5.819853763465047614e-07, + 5.823614242822277373e-07, + 5.827364559109219364e-07, + 5.831104707968810223e-07, + 5.834834685061526519e-07, + 5.838554486065319112e-07, + 5.842264106675506211e-07, + 5.845963542604660090e-07, + 5.849652789583301648e-07, + 5.853331843358871269e-07, + 5.857000699696377858e-07, + 5.860659354378278141e-07, + 5.864307803204460781e-07, + 5.867946041992089679e-07, + 5.871574066576297480e-07, + 5.875191872809119372e-07, + 5.878799456560269180e-07, + 5.882396813716843962e-07, + 5.885983940183286952e-07, + 5.889560831881985777e-07, + 5.893127484752311074e-07, + 5.896683894751236944e-07, + 5.900230057853207542e-07, + 5.903765970050219660e-07, + 5.907291627351489217e-07, + 5.910807025784299339e-07, + 5.914312161392844169e-07, + 5.917807030239035658e-07, + 5.921291628402237816e-07, + 5.924765951979348232e-07, + 5.928229997084555615e-07, + 5.931683759850111652e-07, + 5.935127236425256333e-07, + 5.938560422976859582e-07, + 5.941983315689371490e-07, + 5.945395910764547033e-07, + 5.948798204422180869e-07, + 5.952190192899086668e-07, + 5.955571872449794850e-07, + 5.958943239346348243e-07, + 5.962304289878310552e-07, + 5.965655020352622362e-07, + 5.968995427094277707e-07, + 5.972325506445300216e-07, + 5.975645254765427099e-07, + 5.978954668431929144e-07, + 5.982253743839686956e-07, + 5.985542477400884964e-07, + 5.988820865545844690e-07, + 5.992088904721855843e-07, + 5.995346591394042410e-07, + 5.998593922044993141e-07, + 6.001830893174765781e-07, + 6.005057501301483167e-07, + 6.008273742960470321e-07, + 6.011479614704164446e-07, + 6.014675113103558060e-07, + 6.017860234746567399e-07, + 6.021034976238693105e-07, + 6.024199334203663968e-07, + 6.027353305281693096e-07, + 6.030496886131699265e-07, + 6.033630073429524965e-07, + 6.036752863868637327e-07, + 6.039865254160569635e-07, + 6.042967241034153703e-07, + 6.046058821235311293e-07, + 6.049139991528533249e-07, + 6.052210748695334715e-07, + 6.055271089534777127e-07, + 6.058321010864186065e-07, + 6.061360509517562014e-07, + 6.064389582346975845e-07, + 6.067408226222453414e-07, + 6.070416438031135932e-07, + 6.073414214677833722e-07, + 6.076401553085584194e-07, + 6.079378450193926018e-07, + 6.082344902961188235e-07, + 6.085300908362621483e-07, + 6.088246463391174096e-07, + 6.091181565058029968e-07, + 6.094106210391050015e-07, + 6.097020396436240713e-07, + 6.099924120257556111e-07, + 6.102817378936076202e-07, + 6.105700169570573382e-07, + 6.108572489278039724e-07, + 6.111434335192104089e-07, + 6.114285704464994062e-07, + 6.117126594266151056e-07, + 6.119957001782651710e-07, + 6.122776924219327532e-07, + 6.125586358798605022e-07, + 6.128385302760465437e-07, + 6.131173753362939249e-07, + 6.133951707881314167e-07, + 6.136719163608676179e-07, + 6.139476117855765558e-07, + 6.142222567950971566e-07, + 6.144958511240242460e-07, + 6.147683945087555592e-07, + 6.150398866874202726e-07, + 6.153103273999226261e-07, + 6.155797163879342997e-07, + 6.158480533948831903e-07, + 6.161153381660059278e-07, + 6.163815704482604189e-07, + 6.166467499903884218e-07, + 6.169108765428998759e-07, + 6.171739498580699372e-07, + 6.174359696899277552e-07, + 6.176969357943152359e-07, + 6.179568479287969385e-07, + 6.182157058527190500e-07, + 6.184735093271979506e-07, + 6.187302581151147075e-07, + 6.189859519811093580e-07, + 6.192405906916266488e-07, + 6.194941740148391678e-07, + 6.197467017207071662e-07, + 6.199981735809517707e-07, + 6.202485893690536073e-07, + 6.204979488602998112e-07, + 6.207462518317074768e-07, + 6.209934980620745852e-07, + 6.212396873319665577e-07, + 6.214848194237231378e-07, + 6.217288941214329801e-07, + 6.219719112109964371e-07, + 6.222138704800445612e-07, + 6.224547717179854799e-07, + 6.226946147160005844e-07, + 6.229333992670260001e-07, + 6.231711251658080682e-07, + 6.234077922088311352e-07, + 6.236434001943137419e-07, + 6.238779489223217021e-07, + 6.241114381946335301e-07, + 6.243438678148026978e-07, + 6.245752375881853750e-07, + 6.248055473218832545e-07, + 6.250347968247322234e-07, + 6.252629859074088772e-07, + 6.254901143823097116e-07, + 6.257161820636018391e-07, + 6.259411887672683048e-07, + 6.261651343109772199e-07, + 6.263880185142521215e-07, + 6.266098411983348587e-07, + 6.268306021862412852e-07, + 6.270503013027845531e-07, + 6.272689383745289487e-07, + 6.274865132297703059e-07, + 6.277030256986430491e-07, + 6.279184756130067974e-07, + 6.281328628064844804e-07, + 6.283461871145250192e-07, + 6.285584483742529777e-07, + 6.287696464246516280e-07, + 6.289797811064205423e-07, + 6.291888522620422974e-07, + 6.293968597357587575e-07, + 6.296038033736223198e-07, + 6.298096830233766943e-07, + 6.300144985346157229e-07, + 6.302182497586500775e-07, + 6.304209365485643285e-07, + 6.306225587592532616e-07, + 6.308231162473150461e-07, + 6.310226088711454666e-07, + 6.312210364909382412e-07, + 6.314183989686152468e-07, + 6.316146961678672830e-07, + 6.318099279542002349e-07, + 6.320040941948082301e-07, + 6.321971947587284344e-07, + 6.323892295167264897e-07, + 6.325801983413281727e-07, + 6.327701011068810161e-07, + 6.329589376894252421e-07, + 6.331467079668039825e-07, + 6.333334118186516321e-07, + 6.335190491263304268e-07, + 6.337036197729887835e-07, + 6.338871236435323947e-07, + 6.340695606246448751e-07, + 6.342509306047579036e-07, + 6.344312334741014102e-07, + 6.346104691246425891e-07, + 6.347886374501232748e-07, + 6.349657383460527418e-07, + 6.351417717096957403e-07, + 6.353167374401115657e-07, + 6.354906354380986839e-07, + 6.356634656062271301e-07, + 6.358352278488338503e-07, + 6.360059220720191013e-07, + 6.361755481836413685e-07, + 6.363441060933496592e-07, + 6.365115957125321510e-07, + 6.366780169543486968e-07, + 6.368433697337256367e-07, + 6.370076539673412926e-07, + 6.371708695736684256e-07, + 6.373330164729143088e-07, + 6.374940945870577844e-07, + 6.376541038398420643e-07, + 6.378130441567805535e-07, + 6.379709154651276273e-07, + 6.381277176939390882e-07, + 6.382834507739998507e-07, + 6.384381146378680928e-07, + 6.385917092198648797e-07, + 6.387442344560737406e-07, + 6.388956902843275392e-07, + 6.390460766442552728e-07, + 6.391953934772136741e-07, + 6.393436407263321040e-07, + 6.394908183365004814e-07, + 6.396369262543606010e-07, + 6.397819644283419206e-07, + 6.399259328086163507e-07, + 6.400688313470929604e-07, + 6.402106599974873284e-07, + 6.403514187152442511e-07, + 6.404911074575647418e-07, + 6.406297261834379005e-07, + 6.407672748535855389e-07, + 6.409037534304958499e-07, + 6.410391618784126084e-07, + 6.411735001633475583e-07, + 6.413067682530508733e-07, + 6.414389661170704483e-07, + 6.415700937266503618e-07, + 6.417001510548541190e-07, + 6.418291380764631139e-07, + 6.419570547680186630e-07, + 6.420839011078461463e-07, + 6.422096770760061964e-07, + 6.423343826542925811e-07, + 6.424580178263042016e-07, + 6.425805825773608123e-07, + 6.427020768945387020e-07, + 6.428225007666998109e-07, + 6.429418541844075569e-07, + 6.430601371400343023e-07, + 6.431773496276724159e-07, + 6.432934916431773653e-07, + 6.434085631841481299e-07, + 6.435225642499716696e-07, + 6.436354948417320807e-07, + 6.437473549623141455e-07, + 6.438581446163350408e-07, + 6.439678638101548192e-07, + 6.440765125519171732e-07, + 6.441840908514755312e-07, + 6.442905987204519263e-07, + 6.443960361722354084e-07, + 6.445004032219419156e-07, + 6.446036998864493206e-07, + 6.447059261843784781e-07, + 6.448070821360979894e-07, + 6.449071677637429429e-07, + 6.450061830911757391e-07, + 6.451041281440076896e-07, + 6.452010029496273932e-07, + 6.452968075371256669e-07, + 6.453915419373664855e-07, + 6.454852061829702526e-07, + 6.455778003082828835e-07, + 6.456693243494039695e-07, + 6.457597783441811663e-07, + 6.458491623322039467e-07, + 6.459374763547998953e-07, + 6.460247204550653072e-07, + 6.461108946778180722e-07, + 6.461959990696265793e-07, + 6.462800336788002939e-07, + 6.463629985553894400e-07, + 6.464448937512037407e-07, + 6.465257193197734548e-07, + 6.466054753163855874e-07, + 6.466841617980609142e-07, + 6.467617788235620284e-07, + 6.468383264533880463e-07, + 6.469138047497964191e-07, + 6.469882137767644982e-07, + 6.470615536000190756e-07, + 6.471338242870196551e-07, + 6.472050259069663935e-07, + 6.472751585308087820e-07, + 6.473442222312190711e-07, + 6.474122170826118582e-07, + 6.474791431611396403e-07, + 6.475450005446918615e-07, + 6.476097893128837954e-07, + 6.476735095470914856e-07, + 6.477361613304034643e-07, + 6.477977447476502930e-07, + 6.478582598853952448e-07, + 6.479177068319371634e-07, + 6.479760856773023103e-07, + 6.480333965132658585e-07, + 6.480896394333215046e-07, + 6.481448145326963983e-07, + 6.481989219083541069e-07, + 6.482519616589813802e-07, + 6.483039338850090091e-07, + 6.483548386885902257e-07, + 6.484046761735942452e-07, + 6.484534464456453348e-07, + 6.485011496120833214e-07, + 6.485477857819713202e-07, + 6.485933550661139461e-07, + 6.486378575770332794e-07, + 6.486812934289780769e-07, + 6.487236627379268426e-07, + 6.487649656215816866e-07, + 6.488052021993711841e-07, + 6.488443725924586335e-07, + 6.488824769237048934e-07, + 6.489195153177269331e-07, + 6.489554879008423527e-07, + 6.489903948010994521e-07, + 6.490242361482747961e-07, + 6.490570120738583914e-07, + 6.490887227110559097e-07, + 6.491193681948128287e-07, + 6.491489486617807618e-07, + 6.491774642503282585e-07, + 6.492049151005619798e-07, + 6.492313013542792646e-07, + 6.492566231550202217e-07, + 6.492808806480328965e-07, + 6.493040739802768700e-07, + 6.493262033004435879e-07, + 6.493472687589277735e-07, + 6.493672705078360035e-07, + 6.493862087010050254e-07, + 6.494040834939710524e-07, + 6.494208950439935862e-07, + 6.494366435100490643e-07, + 6.494513290528119076e-07, + 6.494649518346754845e-07, + 6.494775120197510521e-07, + 6.494890097738552624e-07, + 6.494994452645136566e-07, + 6.495088186609645822e-07, + 6.495171301341528403e-07, + 6.495243798567395329e-07, + 6.495305680030832157e-07, + 6.495356947492557804e-07, + 6.495397602730408665e-07, + 6.495427647539154382e-07, + 6.495447083730660896e-07, + 6.495455913134004803e-07, + 6.495454137595125003e-07, + 6.495441758977041876e-07, + 6.495418779159857282e-07, + 6.495385200040632795e-07, + 6.495341023533531587e-07, + 6.495286251569679721e-07, + 6.495220886097189448e-07, + 6.495144929081252381e-07, + 6.495058382504003967e-07, + 6.494961248364544664e-07, + 6.494853528679043702e-07, + 6.494735225480586620e-07, + 6.494606340819237731e-07, + 6.494466876761991418e-07, + 6.494316835392910839e-07, + 6.494156218812892872e-07, + 6.493985029139863991e-07, + 6.493803268508646862e-07, + 6.493610939071016456e-07, + 6.493408042995638638e-07, + 6.493194582468126287e-07, + 6.492970559691050939e-07, + 6.492735976883821029e-07, + 6.492490836282778237e-07, + 6.492235140141145611e-07, + 6.491968890729037096e-07, + 6.491692090333453295e-07, + 6.491404741258266651e-07, + 6.491106845824193913e-07, + 6.490798406368890375e-07, + 6.490479425246773051e-07, + 6.490149904829137147e-07, + 6.489809847504135942e-07, + 6.489459255676736319e-07, + 6.489098131768744175e-07, + 6.488726478218744073e-07, + 6.488344297482219940e-07, + 6.487951592031386723e-07, + 6.487548364355288852e-07, + 6.487134616959745190e-07, + 6.486710352367356437e-07, + 6.486275573117524192e-07, + 6.485830281766399074e-07, + 6.485374480886891303e-07, + 6.484908173068720473e-07, + 6.484431360918278960e-07, + 6.483944047058769568e-07, + 6.483446234130053063e-07, + 6.482937924788778404e-07, + 6.482419121708296980e-07, + 6.481889827578643553e-07, + 6.481350045106646375e-07, + 6.480799777015726009e-07, + 6.480239026046044630e-07, + 6.479667794954456251e-07, + 6.479086086514456968e-07, + 6.478493903516229426e-07, + 6.477891248766600466e-07, + 6.477278125089112065e-07, + 6.476654535323890049e-07, + 6.476020482327711851e-07, + 6.475375968973952514e-07, + 6.474720998152708571e-07, + 6.474055572770577817e-07, + 6.473379695750823418e-07, + 6.472693370033302975e-07, + 6.471996598574473817e-07, + 6.471289384347357004e-07, + 6.470571730341582851e-07, + 6.469843639563301992e-07, + 6.469105115035271144e-07, + 6.468356159796754636e-07, + 6.467596776903579467e-07, + 6.466826969428180834e-07, + 6.466046740459399907e-07, + 6.465256093102689226e-07, + 6.464455030479969772e-07, + 6.463643555729691315e-07, + 6.462821672006784768e-07, + 6.461989382482703481e-07, + 6.461146690345313125e-07, + 6.460293598799031454e-07, + 6.459430111064707604e-07, + 6.458556230379603030e-07, + 6.457671959997504804e-07, + 6.456777303188627138e-07, + 6.455872263239544691e-07, + 6.454956843453309026e-07, + 6.454031047149417911e-07, + 6.453094877663732733e-07, + 6.452148338348528258e-07, + 6.451191432572446047e-07, + 6.450224163720539983e-07, + 6.449246535194207449e-07, + 6.448258550411232742e-07, + 6.447260212805793418e-07, + 6.446251525828352306e-07, + 6.445232492945724201e-07, + 6.444203117641056813e-07, + 6.443163403413859353e-07, + 6.442113353779908299e-07, + 6.441052972271305629e-07, + 6.439982262436443883e-07, + 6.438901227840015693e-07, + 6.437809872062977779e-07, + 6.436708198702550956e-07, + 6.435596211372266715e-07, + 6.434473913701860287e-07, + 6.433341309337300290e-07, + 6.432198401940803553e-07, + 6.431045195190874287e-07, + 6.429881692782162213e-07, + 6.428707898425550435e-07, + 6.427523815848146975e-07, + 6.426329448793164070e-07, + 6.425124801020100280e-07, + 6.423909876304567910e-07, + 6.422684678438343831e-07, + 6.421449211229406534e-07, + 6.420203478501887430e-07, + 6.418947484095916265e-07, + 6.417681231867903816e-07, + 6.416404725690314253e-07, + 6.415117969451740311e-07, + 6.413820967056892704e-07, + 6.412513722426482599e-07, + 6.411196239497384667e-07, + 6.409868522222597911e-07, + 6.408530574571043438e-07, + 6.407182400527775153e-07, + 6.405824004093945883e-07, + 6.404455389286573380e-07, + 6.403076560138882317e-07, + 6.401687520700034286e-07, + 6.400288275035181807e-07, + 6.398878827225561494e-07, + 6.397459181368236774e-07, + 6.396029341576348817e-07, + 6.394589311979130300e-07, + 6.393139096721504128e-07, + 6.391678699964551419e-07, + 6.390208125885274333e-07, + 6.388727378676453136e-07, + 6.387236462546913016e-07, + 6.385735381721473261e-07, + 6.384224140440652914e-07, + 6.382702742960956648e-07, + 6.381171193554882176e-07, + 6.379629496510532734e-07, + 6.378077656132212124e-07, + 6.376515676739754494e-07, + 6.374943562669042094e-07, + 6.373361318271759628e-07, + 6.371768947915259795e-07, + 6.370166455982924332e-07, + 6.368553846873909908e-07, + 6.366931125002974477e-07, + 6.365298294800829862e-07, + 6.363655360713970224e-07, + 6.362002327204445486e-07, + 6.360339198750408727e-07, + 6.358665979845391967e-07, + 6.356982674998903324e-07, + 6.355289288736082912e-07, + 6.353585825597790717e-07, + 6.351872290140603421e-07, + 6.350148686936804874e-07, + 6.348415020574254801e-07, + 6.346671295656569859e-07, + 6.344917516803139518e-07, + 6.343153688648680307e-07, + 6.341379815843930385e-07, + 6.339595903055064028e-07, + 6.337801954963807035e-07, + 6.335997976267601902e-07, + 6.334183971679483944e-07, + 6.332359945928032589e-07, + 6.330525903757532313e-07, + 6.328681849927596771e-07, + 6.326827789213584905e-07, + 6.324963726406401884e-07, + 6.323089666312276764e-07, + 6.321205613753278116e-07, + 6.319311573566834396e-07, + 6.317407550605770999e-07, + 6.315493549738567550e-07, + 6.313569575849116497e-07, + 6.311635633836796168e-07, + 6.309691728616461239e-07, + 6.307737865118435329e-07, + 6.305774048288338410e-07, + 6.303800283087347276e-07, + 6.301816574492089659e-07, + 6.299822927494509763e-07, + 6.297819347102051439e-07, + 6.295805838337352189e-07, + 6.293782406238587278e-07, + 6.291749055859275970e-07, + 6.289705792268215888e-07, + 6.287652620549655594e-07, + 6.285589545803162241e-07, + 6.283516573143421461e-07, + 6.281433707700654530e-07, + 6.279340954620285905e-07, + 6.277238319063056517e-07, + 6.275125806205015301e-07, + 6.273003421237315905e-07, + 6.270871169366539626e-07, + 6.268729055814422236e-07, + 6.266577085817951397e-07, + 6.264415264629349715e-07, + 6.262243597516076862e-07, + 6.260062089760614637e-07, + 6.257870746660712610e-07, + 6.255669573529613642e-07, + 6.253458575695188851e-07, + 6.251237758500795238e-07, + 6.249007127304918869e-07, + 6.246766687480941944e-07, + 6.244516444417612898e-07, + 6.242256403518658888e-07, + 6.239986570202988017e-07, + 6.237706949904583455e-07, + 6.235417548072304392e-07, + 6.233118370170205787e-07, + 6.230809421677626249e-07, + 6.228490708088501943e-07, + 6.226162234912070683e-07, + 6.223824007672551120e-07, + 6.221476031909035803e-07, + 6.219118313175736818e-07, + 6.216750857041804739e-07, + 6.214373669091339210e-07, + 6.211986754923418595e-07, + 6.209590120152122212e-07, + 6.207183770406112107e-07, + 6.204767711329624090e-07, + 6.202341948581122004e-07, + 6.199906487834385107e-07, + 6.197461334777967030e-07, + 6.195006495115071896e-07, + 6.192541974564192774e-07, + 6.190067778858405463e-07, + 6.187583913745544255e-07, + 6.185090384988417921e-07, + 6.182587198364699607e-07, + 6.180074359666480013e-07, + 6.177551874701270078e-07, + 6.175019749290737836e-07, + 6.172477989271682506e-07, + 6.169926600495584507e-07, + 6.167365588828402165e-07, + 6.164794960151288523e-07, + 6.162214720359860767e-07, + 6.159624875364237288e-07, + 6.157025431089520490e-07, + 6.154416393475505623e-07, + 6.151797768476189501e-07, + 6.149169562060936236e-07, + 6.146531780213310445e-07, + 6.143884428931410773e-07, + 6.141227514228207646e-07, + 6.138561042131163163e-07, + 6.135885018682345451e-07, + 6.133199449938485832e-07, + 6.130504341970574371e-07, + 6.127799700864524796e-07, + 6.125085532720685333e-07, + 6.122361843653596245e-07, + 6.119628639792883454e-07, + 6.116885927282385033e-07, + 6.114133712280230622e-07, + 6.111372000959319995e-07, + 6.108600799506921782e-07, + 6.105820114124754997e-07, + 6.103029951029073735e-07, + 6.100230316450250017e-07, + 6.097421216633397413e-07, + 6.094602657837880819e-07, + 6.091774646337473165e-07, + 6.088937188420362822e-07, + 6.086090290389158896e-07, + 6.083233958560501596e-07, + 6.080368199265721855e-07, + 6.077493018850317235e-07, + 6.074608423674132977e-07, + 6.071714420111280473e-07, + 6.068811014550267500e-07, + 6.065898213393609643e-07, + 6.062976023058351218e-07, + 6.060044449975654462e-07, + 6.057103500590947768e-07, + 6.054153181363971205e-07, + 6.051193498768347716e-07, + 6.048224459292225797e-07, + 6.045246069437832693e-07, + 6.042258335721546390e-07, + 6.039261264673896681e-07, + 6.036254862839665744e-07, + 6.033239136777432866e-07, + 6.030214093060229834e-07, + 6.027179738275086713e-07, + 6.024136079023050904e-07, + 6.021083121919365021e-07, + 6.018020873593351485e-07, + 6.014949340688057826e-07, + 6.011868529860922663e-07, + 6.008778447783297134e-07, + 6.005679101140503122e-07, + 6.002570496631983612e-07, + 5.999452640970861170e-07, + 5.996325540884396399e-07, + 5.993189203114183821e-07, + 5.990043634415061314e-07, + 5.986888841556217613e-07, + 5.983724831320818557e-07, + 5.980551610505374986e-07, + 5.977369185921208115e-07, + 5.974177564392629465e-07, + 5.970976752758276003e-07, + 5.967766757870517217e-07, + 5.964547586595678522e-07, + 5.961319245813419749e-07, + 5.958081742418069223e-07, + 5.954835083316826992e-07, + 5.951579275431271488e-07, + 5.948314325696634257e-07, + 5.945040241061453733e-07, + 5.941757028488746257e-07, + 5.938464694954865767e-07, + 5.935163247449617081e-07, + 5.931852692976867884e-07, + 5.928533038554219439e-07, + 5.925204291212359670e-07, + 5.921866457996563465e-07, + 5.918519545964839796e-07, + 5.915163562189309203e-07, + 5.911798513755729456e-07, + 5.908424407762938631e-07, + 5.905041251324099191e-07, + 5.901649051565608488e-07, + 5.898247815627101941e-07, + 5.894837550662187835e-07, + 5.891418263837963456e-07, + 5.887989962334530163e-07, + 5.884552653346260759e-07, + 5.881106344080634828e-07, + 5.877651041758340369e-07, + 5.874186753613900609e-07, + 5.870713486895152013e-07, + 5.867231248863336403e-07, + 5.863740046793270361e-07, + 5.860239887972760779e-07, + 5.856730779703373540e-07, + 5.853212729300089413e-07, + 5.849685744090653952e-07, + 5.846149831417002629e-07, + 5.842604998633976525e-07, + 5.839051253109438791e-07, + 5.835488602224970279e-07, + 5.831917053375316848e-07, + 5.828336613968443367e-07, + 5.824747291425776174e-07, + 5.821149093181501103e-07, + 5.817542026683480391e-07, + 5.813926099392636464e-07, + 5.810301318783077935e-07, + 5.806667692342099601e-07, + 5.803025227570299972e-07, + 5.799373931981025402e-07, + 5.795713813101168420e-07, + 5.792044878470606571e-07, + 5.788367135642289235e-07, + 5.784680592182318096e-07, + 5.780985255669981024e-07, + 5.777281133697189856e-07, + 5.773568233869357075e-07, + 5.769846563804780654e-07, + 5.766116131134792284e-07, + 5.762376943503828315e-07, + 5.758629008568922594e-07, + 5.754872334000497384e-07, + 5.751106927481797968e-07, + 5.747332796708990055e-07, + 5.743549949391200019e-07, + 5.739758393250634542e-07, + 5.735958136021899806e-07, + 5.732149185452957587e-07, + 5.728331549304512213e-07, + 5.724505235350102678e-07, + 5.720670251376066644e-07, + 5.716826605181813609e-07, + 5.712974304579043520e-07, + 5.709113357392712388e-07, + 5.705243771460411840e-07, + 5.701365554632488757e-07, + 5.697478714772209394e-07, + 5.693583259755100805e-07, + 5.689679197469713177e-07, + 5.685766535817786059e-07, + 5.681845282712806288e-07, + 5.677915446081549587e-07, + 5.673977033863454825e-07, + 5.670030054009982384e-07, + 5.666074514486305050e-07, + 5.662110423269100437e-07, + 5.658137788348335044e-07, + 5.654156617726497695e-07, + 5.650166919418172844e-07, + 5.646168701450828317e-07, + 5.642161971864941304e-07, + 5.638146738712560529e-07, + 5.634123010058856311e-07, + 5.630090793981509648e-07, + 5.626050098570054703e-07, + 5.622000931927392881e-07, + 5.617943302168426982e-07, + 5.613877217420161790e-07, + 5.609802685822487579e-07, + 5.605719715527682479e-07, + 5.601628314699765554e-07, + 5.597528491516299928e-07, + 5.593420254165996735e-07, + 5.589303610850586006e-07, + 5.585178569784111514e-07, + 5.581045139192259498e-07, + 5.576903327314001911e-07, + 5.572753142400064346e-07, + 5.568594592713144148e-07, + 5.564427686528624039e-07, + 5.560252432134146484e-07, + 5.556068837828876774e-07, + 5.551876911925359082e-07, + 5.547676662747136308e-07, + 5.543468098630565899e-07, + 5.539251227923987642e-07, + 5.535026058987933305e-07, + 5.530792600194975229e-07, + 5.526550859929958205e-07, + 5.522300846589355726e-07, + 5.518042568582154080e-07, + 5.513776034329247779e-07, + 5.509501252263565555e-07, + 5.505218230830085185e-07, + 5.500926978485902311e-07, + 5.496627503699623751e-07, + 5.492319814952324651e-07, + 5.488003920736867677e-07, + 5.483679829558058659e-07, + 5.479347549932788471e-07, + 5.475007090389337404e-07, + 5.470658459468437133e-07, + 5.466301665722457565e-07, + 5.461936717715658832e-07, + 5.457563624024139412e-07, + 5.453182393235990707e-07, + 5.448793033950613073e-07, + 5.444395554779685662e-07, + 5.439989964346545979e-07, + 5.435576271286238583e-07, + 5.431154484245590260e-07, + 5.426724611883307433e-07, + 5.422286662869296419e-07, + 5.417840645885690456e-07, + 5.413386569626087372e-07, + 5.408924442795813226e-07, + 5.404454274111994302e-07, + 5.399976072302827609e-07, + 5.395489846108685192e-07, + 5.390995604281354984e-07, + 5.386493355584204918e-07, + 5.381983108792163867e-07, + 5.377464872691884698e-07, + 5.372938656081041237e-07, + 5.368404467769338354e-07, + 5.363862316577806807e-07, + 5.359312211338964181e-07, + 5.354754160896967351e-07, + 5.350188174106892507e-07, + 5.345614259835761121e-07, + 5.341032426961890908e-07, + 5.336442684374947705e-07, + 5.331845040975999473e-07, + 5.327239505677668763e-07, + 5.322626087403364028e-07, + 5.318004795088207130e-07, + 5.313375637679196392e-07, + 5.308738624133488178e-07, + 5.304093763420329190e-07, + 5.299441064520161788e-07, + 5.294780536423987656e-07, + 5.290112188135312802e-07, + 5.285436028667575753e-07, + 5.280752067046150791e-07, + 5.276060312307587737e-07, + 5.271360773499086794e-07, + 5.266653459679307462e-07, + 5.261938379918670292e-07, + 5.257215543297528357e-07, + 5.252484958908114365e-07, + 5.247746635853753981e-07, + 5.243000583248032557e-07, + 5.238246810217001649e-07, + 5.233485325896338287e-07, + 5.228716139433520788e-07, + 5.223939259986836665e-07, + 5.219154696725726739e-07, + 5.214362458829873519e-07, + 5.209562555491189609e-07, + 5.204754995911221557e-07, + 5.199939789303202845e-07, + 5.195116944891224860e-07, + 5.190286471909502091e-07, + 5.185448379604279013e-07, + 5.180602677232062964e-07, + 5.175749374059792492e-07, + 5.170888479365789210e-07, + 5.166020002439231575e-07, + 5.161143952579191389e-07, + 5.156260339096974786e-07, + 5.151369171313168205e-07, + 5.146470458559924320e-07, + 5.141564210179893720e-07, + 5.136650435526391138e-07, + 5.131729143963465331e-07, + 5.126800344865965788e-07, + 5.121864047618810040e-07, + 5.116920261618114455e-07, + 5.111968996270423433e-07, + 5.107010260992842819e-07, + 5.102044065213083307e-07, + 5.097070418369563150e-07, + 5.092089329910682880e-07, + 5.087100809295941282e-07, + 5.082104865995123296e-07, + 5.077101509488504364e-07, + 5.072090749267048427e-07, + 5.067072594831524889e-07, + 5.062047055693762229e-07, + 5.057014141375824261e-07, + 5.051973861410130835e-07, + 5.046926225339485366e-07, + 5.041871242717287651e-07, + 5.036808923106622250e-07, + 5.031739276081557624e-07, + 5.026662311226228160e-07, + 5.021578038135069224e-07, + 5.016486466412827753e-07, + 5.011387605674674479e-07, + 5.006281465545403489e-07, + 5.001168055660635010e-07, + 4.996047385666032962e-07, + 4.990919465217382249e-07, + 4.985784303980907457e-07, + 4.980641911632327353e-07, + 4.975492297858110610e-07, + 4.970335472354655245e-07, + 4.965171444828431555e-07, + 4.960000224996007530e-07, + 4.954821822584214021e-07, + 4.949636247329288182e-07, + 4.944443508978168367e-07, + 4.939243617287535929e-07, + 4.934036582024080973e-07, + 4.928822412964695055e-07, + 4.923601119895566981e-07, + 4.918372712613258530e-07, + 4.913137200924889749e-07, + 4.907894594646183362e-07, + 4.902644903603642705e-07, + 4.897388137633618933e-07, + 4.892124306581639742e-07, + 4.886853420303532748e-07, + 4.881575488665549367e-07, + 4.876290521542470639e-07, + 4.870998528819684572e-07, + 4.865699520392403696e-07, + 4.860393506164635922e-07, + 4.855080496051682226e-07, + 4.849760499976992043e-07, + 4.844433527874615422e-07, + 4.839099589688223652e-07, + 4.833758695370519506e-07, + 4.828410854884235690e-07, + 4.823056078202453531e-07, + 4.817694375306452581e-07, + 4.812325756188015596e-07, + 4.806950230848458690e-07, + 4.801567809297786418e-07, + 4.796178501557056054e-07, + 4.790782317655268985e-07, + 4.785379267631846161e-07, + 4.779969361535426365e-07, + 4.774552609424307738e-07, + 4.769129021365361447e-07, + 4.763698607436419799e-07, + 4.758261377723158625e-07, + 4.752817342321489090e-07, + 4.747366511336761482e-07, + 4.741908894882699539e-07, + 4.736444503083732968e-07, + 4.730973346072911622e-07, + 4.725495433992125204e-07, + 4.720010776993208639e-07, + 4.714519385237254926e-07, + 4.709021268893658515e-07, + 4.703516438142678640e-07, + 4.698004903172111542e-07, + 4.692486674179881328e-07, + 4.686961761373055827e-07, + 4.681430174966934969e-07, + 4.675891925187309714e-07, + 4.670347022268392652e-07, + 4.664795476453035574e-07, + 4.659237297993845448e-07, + 4.653672497152218265e-07, + 4.648101084198606388e-07, + 4.642523069412490492e-07, + 4.636938463082533089e-07, + 4.631347275505710319e-07, + 4.625749516988641263e-07, + 4.620145197846671558e-07, + 4.614534328404020573e-07, + 4.608916918994089511e-07, + 4.603292979958442326e-07, + 4.597662521648203328e-07, + 4.592025554423121741e-07, + 4.586382088651747458e-07, + 4.580732134711497752e-07, + 4.575075702988754678e-07, + 4.569412803878000044e-07, + 4.563743447783156372e-07, + 4.558067645116668391e-07, + 4.552385406299661332e-07, + 4.546696741762217797e-07, + 4.541001661942411089e-07, + 4.535300177287647221e-07, + 4.529592298253758069e-07, + 4.523878035305175012e-07, + 4.518157398914963869e-07, + 4.512430399564995367e-07, + 4.506697047745002816e-07, + 4.500957353953952717e-07, + 4.495211328699156959e-07, + 4.489458982496400940e-07, + 4.483700325869960503e-07, + 4.477935369352838050e-07, + 4.472164123485760391e-07, + 4.466386598818616058e-07, + 4.460602805909451570e-07, + 4.454812755324766831e-07, + 4.449016457639615724e-07, + 4.443213923436722012e-07, + 4.437405163307633424e-07, + 4.431590187852937121e-07, + 4.425769007680067992e-07, + 4.419941633405735411e-07, + 4.414108075654879265e-07, + 4.408268345060014559e-07, + 4.402422452262558090e-07, + 4.396570407911918935e-07, + 4.390712222665683220e-07, + 4.384847907189628936e-07, + 4.378977472157927641e-07, + 4.373100928251858029e-07, + 4.367218286162622844e-07, + 4.361329556587710345e-07, + 4.355434750233724981e-07, + 4.349533877815305310e-07, + 4.343626950054390783e-07, + 4.337713977681445711e-07, + 4.331794971435639255e-07, + 4.325869942062714609e-07, + 4.319938900317296109e-07, + 4.314001856961969673e-07, + 4.308058822766276415e-07, + 4.302109808509383452e-07, + 4.296154824976594123e-07, + 4.290193882962102966e-07, + 4.284226993267905166e-07, + 4.278254166703154391e-07, + 4.272275414085236944e-07, + 4.266290746240114804e-07, + 4.260300174000023288e-07, + 4.254303708205942273e-07, + 4.248301359706577630e-07, + 4.242293139357363323e-07, + 4.236279058022941091e-07, + 4.230259126574854933e-07, + 4.224233355891804159e-07, + 4.218201756860886413e-07, + 4.212164340376579109e-07, + 4.206121117340924199e-07, + 4.200072098663841038e-07, + 4.194017295261996659e-07, + 4.187956718060428899e-07, + 4.181890377991643777e-07, + 4.175818285994645643e-07, + 4.169740453017451277e-07, + 4.163656890014789139e-07, + 4.157567607948312180e-07, + 4.151472617787849869e-07, + 4.145371930510433570e-07, + 4.139265557100423601e-07, + 4.133153508549840104e-07, + 4.127035795857262434e-07, + 4.120912430029377637e-07, + 4.114783422079933840e-07, + 4.108648783029949888e-07, + 4.102508523907750283e-07, + 4.096362655749144656e-07, + 4.090211189596390142e-07, + 4.084054136499743047e-07, + 4.077891507516421227e-07, + 4.071723313710762381e-07, + 4.065549566154310338e-07, + 4.059370275925971234e-07, + 4.053185454111015599e-07, + 4.046995111802572838e-07, + 4.040799260100578798e-07, + 4.034597910112044696e-07, + 4.028391072951287410e-07, + 4.022178759738838391e-07, + 4.015960981603010678e-07, + 4.009737749678874512e-07, + 4.003509075108416161e-07, + 3.997274969040577092e-07, + 3.991035442631496432e-07, + 3.984790507043412479e-07, + 3.978540173446231292e-07, + 3.972284453016465260e-07, + 3.966023356937465505e-07, + 3.959756896399427703e-07, + 3.953485082599590609e-07, + 3.947207926741194738e-07, + 3.940925440035034548e-07, + 3.934637633698385358e-07, + 3.928344518955255873e-07, + 3.922046107036609463e-07, + 3.915742409179335026e-07, + 3.909433436627484712e-07, + 3.903119200632564029e-07, + 3.896799712451110922e-07, + 3.890474983347342747e-07, + 3.884145024592063600e-07, + 3.877809847461828403e-07, + 3.871469463240584027e-07, + 3.865123883218497741e-07, + 3.858773118692260557e-07, + 3.852417180965058111e-07, + 3.846056081346818423e-07, + 3.839689831152830170e-07, + 3.833318441706701484e-07, + 3.826941924336570533e-07, + 3.820560290378056904e-07, + 3.814173551173135047e-07, + 3.807781718069329070e-07, + 3.801384802421030398e-07, + 3.794982815589745002e-07, + 3.788575768941685711e-07, + 3.782163673850368368e-07, + 3.775746541695616561e-07, + 3.769324383862371017e-07, + 3.762897211743689686e-07, + 3.756465036736917035e-07, + 3.750027870246678837e-07, + 3.743585723683746088e-07, + 3.737138608464199623e-07, + 3.730686536010772133e-07, + 3.724229517753154154e-07, + 3.717767565125436559e-07, + 3.711300689568857062e-07, + 3.704828902530699602e-07, + 3.698352215463166206e-07, + 3.691870639826110783e-07, + 3.685384187084507555e-07, + 3.678892868708785640e-07, + 3.672396696176093770e-07, + 3.665895680969236213e-07, + 3.659389834576928467e-07, + 3.652879168494013255e-07, + 3.646363694220380557e-07, + 3.639843423262569563e-07, + 3.633318367132966635e-07, + 3.626788537348616288e-07, + 3.620253945434011634e-07, + 3.613714602918573398e-07, + 3.607170521336913559e-07, + 3.600621712230181601e-07, + 3.594068187144949608e-07, + 3.587509957633456843e-07, + 3.580947035253920505e-07, + 3.574379431569317058e-07, + 3.567807158149082124e-07, + 3.561230226567982866e-07, + 3.554648648406364158e-07, + 3.548062435250115767e-07, + 3.541471598690945515e-07, + 3.534876150325263844e-07, + 3.528276101755799535e-07, + 3.521671464590479504e-07, + 3.515062250442685028e-07, + 3.508448470931238513e-07, + 3.501830137680674543e-07, + 3.495207262320069388e-07, + 3.488579856484697480e-07, + 3.481947931814964154e-07, + 3.475311499956571877e-07, + 3.468670572560841062e-07, + 3.462025161283523693e-07, + 3.455375277786507449e-07, + 3.448720933736663737e-07, + 3.442062140806077984e-07, + 3.435398910672088279e-07, + 3.428731255017477543e-07, + 3.422059185529386685e-07, + 3.415382713900928723e-07, + 3.408701851830105644e-07, + 3.402016611020012749e-07, + 3.395327003178840774e-07, + 3.388633040020169171e-07, + 3.381934733261760675e-07, + 3.375232094627255904e-07, + 3.368525135845053149e-07, + 3.361813868648521731e-07, + 3.355098304776314863e-07, + 3.348378455971172697e-07, + 3.341654333981334743e-07, + 3.334925950560838982e-07, + 3.328193317466889710e-07, + 3.321456446462704628e-07, + 3.314715349316361818e-07, + 3.307970037799905062e-07, + 3.301220523691074443e-07, + 3.294466818772096138e-07, + 3.287708934829991592e-07, + 3.280946883656818388e-07, + 3.274180677048489699e-07, + 3.267410326806213184e-07, + 3.260635844736776328e-07, + 3.253857242649888883e-07, + 3.247074532361063835e-07, + 3.240287725690463320e-07, + 3.233496834462003950e-07, + 3.226701870504740649e-07, + 3.219902845653199645e-07, + 3.213099771744709788e-07, + 3.206292660622282456e-07, + 3.199481524133456952e-07, + 3.192666374129081299e-07, + 3.185847222466554262e-07, + 3.179024081005641003e-07, + 3.172196961611720396e-07, + 3.165365876154590709e-07, + 3.158530836507542634e-07, + 3.151691854548852179e-07, + 3.144848942161991901e-07, + 3.138002111233036336e-07, + 3.131151373653520204e-07, + 3.124296741319277451e-07, + 3.117438226129226806e-07, + 3.110575839988613808e-07, + 3.103709594804831754e-07, + 3.096839502490662657e-07, + 3.089965574962777471e-07, + 3.083087824142047904e-07, + 3.076206261953458539e-07, + 3.069320900326430292e-07, + 3.062431751193593277e-07, + 3.055538826492560279e-07, + 3.048642138165005076e-07, + 3.041741698155462829e-07, + 3.034837518414291523e-07, + 3.027929610894932340e-07, + 3.021017987554248477e-07, + 3.014102660353931749e-07, + 3.007183641259328915e-07, + 3.000260942239726500e-07, + 2.993334575268594309e-07, + 2.986404552322388471e-07, + 2.979470885382357202e-07, + 2.972533586433252788e-07, + 2.965592667463654514e-07, + 2.958648140465973434e-07, + 2.951700017436661475e-07, + 2.944748310375070066e-07, + 2.937793031285156905e-07, + 2.930834192174331880e-07, + 2.923871805053687356e-07, + 2.916905881937995523e-07, + 2.909936434845988454e-07, + 2.902963475799144194e-07, + 2.895987016823450712e-07, + 2.889007069948196225e-07, + 2.882023647206265138e-07, + 2.875036760634374150e-07, + 2.868046422271879524e-07, + 2.861052644162570156e-07, + 2.854055438353418194e-07, + 2.847054816894882388e-07, + 2.840050791840865205e-07, + 2.833043375249011410e-07, + 2.826032579179480927e-07, + 2.819018415696735018e-07, + 2.812000896868290617e-07, + 2.804980034765034790e-07, + 2.797955841461484669e-07, + 2.790928329034560312e-07, + 2.783897509565381473e-07, + 2.776863395138049991e-07, + 2.769825997839912899e-07, + 2.762785329761539135e-07, + 2.755741402997018642e-07, + 2.748694229642726238e-07, + 2.741643821798807624e-07, + 2.734590191569473203e-07, + 2.727533351060227747e-07, + 2.720473312380928720e-07, + 2.713410087644503552e-07, + 2.706343688966027428e-07, + 2.699274128464546533e-07, + 2.692201418261835554e-07, + 2.685125570482661854e-07, + 2.678046597255087221e-07, + 2.670964510709242324e-07, + 2.663879322978802135e-07, + 2.656791046201274449e-07, + 2.649699692515240676e-07, + 2.642605274063403043e-07, + 2.635507802991310333e-07, + 2.628407291446446273e-07, + 2.621303751580049064e-07, + 2.614197195545825476e-07, + 2.607087635500285959e-07, + 2.599975083602691705e-07, + 2.592859552015358515e-07, + 2.585741052902087676e-07, + 2.578619598431542444e-07, + 2.571495200772896941e-07, + 2.564367872099239111e-07, + 2.557237624586284818e-07, + 2.550104470411127942e-07, + 2.542968421755314581e-07, + 2.535829490802053135e-07, + 2.528687689736482708e-07, + 2.521543030747198830e-07, + 2.514395526025340776e-07, + 2.507245187763287136e-07, + 2.500092028158048182e-07, + 2.492936059406947588e-07, + 2.485777293710961329e-07, + 2.478615743273181902e-07, + 2.471451420299094674e-07, + 2.464284336996540821e-07, + 2.457114505576060907e-07, + 2.449941938249566633e-07, + 2.442766647232224421e-07, + 2.435588644741489272e-07, + 2.428407942995847978e-07, + 2.421224554217900206e-07, + 2.414038490631534171e-07, + 2.406849764462254864e-07, + 2.399658387938661591e-07, + 2.392464373291226132e-07, + 2.385267732752552671e-07, + 2.378068478557711582e-07, + 2.370866622942917529e-07, + 2.363662178147420198e-07, + 2.356455156412555626e-07, + 2.349245569980415030e-07, + 2.342033431097033097e-07, + 2.334818752009486098e-07, + 2.327601544966209530e-07, + 2.320381822218556386e-07, + 2.313159596019499346e-07, + 2.305934878623938355e-07, + 2.298707682288685535e-07, + 2.291478019272738352e-07, + 2.284245901836017009e-07, + 2.277011342241227390e-07, + 2.269774352752580184e-07, + 2.262534945636092378e-07, + 2.255293133159861220e-07, + 2.248048927592832843e-07, + 2.240802341206605388e-07, + 2.233553386274192863e-07, + 2.226302075070305991e-07, + 2.219048419871340295e-07, + 2.211792432955656944e-07, + 2.204534126602315381e-07, + 2.197273513092926733e-07, + 2.190010604710399679e-07, + 2.182745413739213347e-07, + 2.175477952465714575e-07, + 2.168208233176838622e-07, + 2.160936268161983763e-07, + 2.153662069711729086e-07, + 2.146385650118117727e-07, + 2.139107021674677507e-07, + 2.131826196676645934e-07, + 2.124543187419754705e-07, + 2.117258006201736104e-07, + 2.109970665322665519e-07, + 2.102681177082054266e-07, + 2.095389553782023054e-07, + 2.088095807726003639e-07, + 2.080799951217761032e-07, + 2.073501996563280265e-07, + 2.066201956069487897e-07, + 2.058899842044523337e-07, + 2.051595666798076589e-07, + 2.044289442640047038e-07, + 2.036981181882153066e-07, + 2.029670896838214233e-07, + 2.022358599821271881e-07, + 2.015044303146726874e-07, + 2.007728019131097096e-07, + 2.000409760090977989e-07, + 1.993089538344997347e-07, + 1.985767366212458204e-07, + 1.978443256013707301e-07, + 1.971117220070038201e-07, + 1.963789270704052604e-07, + 1.956459420237999633e-07, + 1.949127680997310342e-07, + 1.941794065306056828e-07, + 1.934458585490490179e-07, + 1.927121253877713281e-07, + 1.919782082794409739e-07, + 1.912441084569978429e-07, + 1.905098271533676610e-07, + 1.897753656014897864e-07, + 1.890407250344754455e-07, + 1.883059066855100594e-07, + 1.875709117877218480e-07, + 1.868357415745361282e-07, + 1.861003972792187363e-07, + 1.853648801352311731e-07, + 1.846291913760977525e-07, + 1.838933322352773549e-07, + 1.831573039464800325e-07, + 1.824211077433781180e-07, + 1.816847448596355532e-07, + 1.809482165290657549e-07, + 1.802115239855336498e-07, + 1.794746684628258408e-07, + 1.787376511949679528e-07, + 1.780004734159371444e-07, + 1.772631363596871222e-07, + 1.765256412603105855e-07, + 1.757879893519088099e-07, + 1.750501818686184079e-07, + 1.743122200446449197e-07, + 1.735741051141295635e-07, + 1.728358383113423069e-07, + 1.720974208705824987e-07, + 1.713588540260464410e-07, + 1.706201390121508231e-07, + 1.698812770632381397e-07, + 1.691422694136073163e-07, + 1.684031172976732421e-07, + 1.676638219498357719e-07, + 1.669243846045093452e-07, + 1.661848064961548030e-07, + 1.654450888591454771e-07, + 1.647052329279629345e-07, + 1.639652399370615046e-07, + 1.632251111209008902e-07, + 1.624848477139437851e-07, + 1.617444509506863147e-07, + 1.610039220655262424e-07, + 1.602632622929549289e-07, + 1.595224728674274713e-07, + 1.587815550233901522e-07, + 1.580405099952806515e-07, + 1.572993390175583810e-07, + 1.565580433245708379e-07, + 1.558166241507489525e-07, + 1.550750827304726212e-07, + 1.543334202981041381e-07, + 1.535916380880151938e-07, + 1.528497373344571741e-07, + 1.521077192717543094e-07, + 1.513655851341692615e-07, + 1.506233361559369783e-07, + 1.498809735712601675e-07, + 1.491384986143394723e-07, + 1.483959125192454631e-07, + 1.476532165201056206e-07, + 1.469104118509771482e-07, + 1.461674997458750298e-07, + 1.454244814387708126e-07, + 1.446813581636229412e-07, + 1.439381311542442235e-07, + 1.431948016444974687e-07, + 1.424513708681583212e-07, + 1.417078400589511003e-07, + 1.409642104505761173e-07, + 1.402204832765779354e-07, + 1.394766597705075234e-07, + 1.387327411659506312e-07, + 1.379887286962355641e-07, + 1.372446235947534927e-07, + 1.365004270948288839e-07, + 1.357561404295858019e-07, + 1.350117648323049062e-07, + 1.342673015359642801e-07, + 1.335227517735974611e-07, + 1.327781167781263638e-07, + 1.320333977824278776e-07, + 1.312885960191644601e-07, + 1.305437127211440205e-07, + 1.297987491208607217e-07, + 1.290537064508501517e-07, + 1.283085859435596484e-07, + 1.275633888312121652e-07, + 1.268181163461349201e-07, + 1.260727697204603665e-07, + 1.253273501861568978e-07, + 1.245818589751922991e-07, + 1.238362973194324198e-07, + 1.230906664505071318e-07, + 1.223449676001714821e-07, + 1.215992019998414136e-07, + 1.208533708809560832e-07, + 1.201074754748417012e-07, + 1.193615170125788118e-07, + 1.186154967253300553e-07, + 1.178694158440417213e-07, + 1.171232755994738448e-07, + 1.163770772223630614e-07, + 1.156308219433236899e-07, + 1.148845109927109761e-07, + 1.141381456009504829e-07, + 1.133917269982388625e-07, + 1.126452564145754745e-07, + 1.118987350799244340e-07, + 1.111521642240806613e-07, + 1.104055450767026384e-07, + 1.096588788673405856e-07, + 1.089121668253044572e-07, + 1.081654101798594867e-07, + 1.074186101601250592e-07, + 1.066717679949411050e-07, + 1.059248849131950282e-07, + 1.051779621435237756e-07, + 1.044310009143454153e-07, + 1.036840024540201926e-07, + 1.029369679907183787e-07, + 1.021898987524497191e-07, + 1.014427959670960440e-07, + 1.006956608622762726e-07, + 9.994849466554220992e-08, + 9.920129860424640969e-08, + 9.845407390557012647e-08, + 9.770682179652387154e-08, + 9.695954350397752221e-08, + 9.621224025452647742e-08, + 9.546491327468699148e-08, + 9.471756379076346779e-08, + 9.397019302887838299e-08, + 9.322280221497121488e-08, + 9.247539257482840623e-08, + 9.172796533395053942e-08, + 9.098052171774703492e-08, + 9.023306295140348474e-08, + 8.948559025991201327e-08, + 8.873810486810211458e-08, + 8.799060800050753587e-08, + 8.724310088156125393e-08, + 8.649558473546213354e-08, + 8.574806078620568543e-08, + 8.500053025758233247e-08, + 8.425299437320848518e-08, + 8.350545435639161207e-08, + 8.275791143032845855e-08, + 8.201036681796844966e-08, + 8.126282174204620816e-08, + 8.051527742508000608e-08, + 7.976773508940134466e-08, + 7.902019595702195701e-08, + 7.827266124982979027e-08, + 7.752513218945464509e-08, + 7.677760999730033637e-08, + 7.603009589457371735e-08, + 7.528259110215242343e-08, + 7.453509684074743625e-08, + 7.378761433093374896e-08, + 7.304014479285189300e-08, + 7.229268944653542216e-08, + 7.154524951177824612e-08, + 7.079782620799861543e-08, + 7.005042075460202220e-08, + 6.930303437051628490e-08, + 6.855566827455259617e-08, + 6.780832368527215480e-08, + 6.706100182088470707e-08, + 6.631370389941134916e-08, + 6.556643113871703202e-08, + 6.481918475620937497e-08, + 6.407196596916837330e-08, + 6.332477599461190529e-08, + 6.257761604916182164e-08, + 6.183048734937215746e-08, + 6.108339111142950760e-08, + 6.033632855118539922e-08, + 5.958930088431792950e-08, + 5.884230932623184217e-08, + 5.809535509192352508e-08, + 5.734843939634352042e-08, + 5.660156345393125876e-08, + 5.585472847897672234e-08, + 5.510793568548679244e-08, + 5.436118628705024037e-08, + 5.361448149716722320e-08, + 5.286782252894927532e-08, + 5.212121059515038395e-08, + 5.137464690833075770e-08, + 5.062813268075557297e-08, + 4.988166912426040830e-08, + 4.913525745061380748e-08, + 4.838889887105142472e-08, + 4.764259459663866059e-08, + 4.689634583810294952e-08, + 4.615015380586500738e-08, + 4.540401971003687269e-08, + 4.465794476045313436e-08, + 4.391193016653689535e-08, + 4.316597713749570196e-08, + 4.242008688218770602e-08, + 4.167426060915299849e-08, + 4.092849952661129997e-08, + 4.018280484249334063e-08, + 3.943717776430642018e-08, + 3.869161949933119746e-08, + 3.794613125448757470e-08, + 3.720071423636530316e-08, + 3.645536965125551532e-08, + 3.571009870501657596e-08, + 3.496490260327045490e-08, + 3.421978255126845239e-08, + 3.347473975392238714e-08, + 3.272977541580327283e-08, + 3.198489074117136794e-08, + 3.124008693384267538e-08, + 3.049536519738545418e-08, + 2.975072673498589526e-08, + 2.900617274947919032e-08, + 2.826170444334778156e-08, + 2.751732301875257614e-08, + 2.677302967739842676e-08, + 2.602882562073101062e-08, + 2.528471204980245219e-08, + 2.454069016530253446e-08, + 2.379676116758982076e-08, + 2.305292625655751253e-08, + 2.230918663182995766e-08, + 2.156554349262862737e-08, + 2.082199803780287079e-08, + 2.007855146582847900e-08, + 1.933520497483854874e-08, + 1.859195976248938324e-08, + 1.784881702615711967e-08, + 1.710577796280338174e-08, + 1.636284376900669936e-08, + 1.562001564099332606e-08, + 1.487729477450340284e-08, + 1.413468236498730270e-08, + 1.339217960747147357e-08, + 1.264978769658969739e-08, + 1.190750782658115625e-08, + 1.116534119132155913e-08, + 1.042328898418908406e-08, + 9.681352398227799257e-09, + 8.939532626178723742e-09, + 8.197830860180508713e-09, + 7.456248292098152522e-09, + 6.714786113388812116e-09, + 5.973445514967741055e-09, + 5.232227687570029650e-09, + 4.491133821285963557e-09, + 3.750165105922666307e-09, + 3.009322730870068756e-09, + 2.268607884999918600e-09, + 1.528021756829078235e-09, + 7.875655345506711115e-10, + 4.724040573495007542e-11, +-6.929524423423027143e-10, +-1.433011822833758070e-09, +-2.172936549454473436e-09, +-2.912725436120573060e-09, +-3.652377297413340591e-09, +-4.391890948217933371e-09, +-5.131265203890283282e-09, +-5.870498880193016308e-09, +-6.609590793462253506e-09, +-7.348539760246502827e-09, +-8.087344597770474174e-09, +-8.826004123574052288e-09, +-9.564517155646024559e-09, +-1.030288251255797344e-08, +-1.104109901313632415e-08, +-1.177916547676086422e-08, +-1.251708072333379705e-08, +-1.325484357311665492e-08, +-1.399245284683102980e-08, +-1.472990736579235818e-08, +-1.546720595154917770e-08, +-1.620434742634620439e-08, +-1.694133061276415666e-08, +-1.767815433388580031e-08, +-1.841481741326520877e-08, +-1.915131867492944727e-08, +-1.988765694334758999e-08, +-2.062383104356412769e-08, +-2.135983980100345867e-08, +-2.209568204160332619e-08, +-2.283135659178362055e-08, +-2.356686227844845035e-08, +-2.430219792895483866e-08, +-2.503736237124637887e-08, +-2.577235443365750390e-08, +-2.650717294504690049e-08, +-2.724181673476684401e-08, +-2.797628463263155377e-08, +-2.871057546905087209e-08, +-2.944468807483482795e-08, +-3.017862128132683624e-08, +-3.091237392037290679e-08, +-3.164594482432315316e-08, +-3.237933282600076340e-08, +-3.311253675883584455e-08, +-3.384555545666928814e-08, +-3.457838775388644923e-08, +-3.531103248538618336e-08, +-3.604348848658234870e-08, +-3.677575459337316073e-08, +-3.750782964227388515e-08, +-3.823971247022230492e-08, +-3.897140191471118825e-08, +-3.970289681375768293e-08, +-4.043419600587223415e-08, +-4.116529833019148933e-08, +-4.189620262628344077e-08, +-4.262690773428049590e-08, +-4.335741249484806424e-08, +-4.408771574918721763e-08, +-4.481781633900274119e-08, +-4.554771310663654763e-08, +-4.627740489487285309e-08, +-4.700689054707097596e-08, +-4.773616890713425478e-08, +-4.846523881947934331e-08, +-4.919409912916906232e-08, +-4.992274868174969649e-08, +-5.065118632322149383e-08, +-5.137941090033321481e-08, +-5.210742126025856569e-08, +-5.283521625072741592e-08, +-5.356279472012606564e-08, +-5.429015551733659393e-08, +-5.501729749170428119e-08, +-5.574421949333470591e-08, +-5.647092037276809357e-08, +-5.719739898111267807e-08, +-5.792365417017590576e-08, +-5.864968479210813897e-08, +-5.937548969986051706e-08, +-6.010106774682905034e-08, +-6.082641778698521537e-08, +-6.155153867497691732e-08, +-6.227642926596652137e-08, +-6.300108841560053820e-08, +-6.372551498030414000e-08, +-6.444970781695747477e-08, +-6.517366578302802844e-08, +-6.589738773670198118e-08, +-6.662087253652797707e-08, +-6.734411904187510424e-08, +-6.806712611257617491e-08, +-6.878989260909222179e-08, +-6.951241739244997651e-08, +-7.023469932440436754e-08, +-7.095673726708530752e-08, +-7.167853008345213960e-08, +-7.240007663693907479e-08, +-7.312137579158673353e-08, +-7.384242641217374016e-08, +-7.456322736389379165e-08, +-7.528377751264939272e-08, +-7.600407572502211706e-08, +-7.672412086811047991e-08, +-7.744391180963031148e-08, +-7.816344741804546472e-08, +-7.888272656221380848e-08, +-7.960174811184159452e-08, +-8.032051093712937125e-08, +-8.103901390890431943e-08, +-8.175725589874889526e-08, +-8.247523577868181662e-08, +-8.319295242144859536e-08, +-8.391040470049314846e-08, +-8.462759148979545889e-08, +-8.534451166400498328e-08, +-8.606116409840774998e-08, +-8.677754766893079276e-08, +-8.749366125210895772e-08, +-8.820950372521708011e-08, +-8.892507396607818430e-08, +-8.964037085319358279e-08, +-9.035539326571293884e-08, +-9.107014008340329686e-08, +-9.178461018678083571e-08, +-9.249880245691704379e-08, +-9.321271577557172963e-08, +-9.392634902516068905e-08, +-9.463970108875870954e-08, +-9.535277085006813735e-08, +-9.606555719355020729e-08, +-9.677805900423223690e-08, +-9.749027516784084883e-08, +-9.820220457076775862e-08, +-9.891384610004244471e-08, +-9.962519864346044741e-08, +-1.003362610893938585e-07, +-1.010470323269199249e-07, +-1.017575112457917195e-07, +-1.024676967364401671e-07, +-1.031775876899420017e-07, +-1.038871829981516661e-07, +-1.045964815535091809e-07, +-1.053054822491708123e-07, +-1.060141839789787380e-07, +-1.067225856374621190e-07, +-1.074306861198077184e-07, +-1.081384843219890869e-07, +-1.088459791405754911e-07, +-1.095531694728632294e-07, +-1.102600542168440675e-07, +-1.109666322711754727e-07, +-1.116729025353097468e-07, +-1.123788639093361208e-07, +-1.130845152939511748e-07, +-1.137898555907470539e-07, +-1.144948837018938315e-07, +-1.151995985302695283e-07, +-1.159039989795571508e-07, +-1.166080839540543865e-07, +-1.173118523588038358e-07, +-1.180153030995631930e-07, +-1.187184350828050619e-07, +-1.194212472156879043e-07, +-1.201237384062171227e-07, +-1.208259075628962278e-07, +-1.215277535951738732e-07, +-1.222292754130961094e-07, +-1.229304719274341791e-07, +-1.236313420497834088e-07, +-1.243318846924042842e-07, +-1.250320987681922478e-07, +-1.257319831909667759e-07, +-1.264315368751541114e-07, +-1.271307587359163571e-07, +-1.278296476892792453e-07, +-1.285282026517881102e-07, +-1.292264225409483446e-07, +-1.299243062748822993e-07, +-1.306218527724559140e-07, +-1.313190609533760995e-07, +-1.320159297380338521e-07, +-1.327124580474736006e-07, +-1.334086448036817276e-07, +-1.341044889292688790e-07, +-1.347999893476001424e-07, +-1.354951449829221812e-07, +-1.361899547600503621e-07, +-1.368844176046521142e-07, +-1.375785324432193735e-07, +-1.382722982029108764e-07, +-1.389657138116814908e-07, +-1.396587781982506376e-07, +-1.403514902920730154e-07, +-1.410438490234665023e-07, +-1.417358533234248556e-07, +-1.424275021237137445e-07, +-1.431187943569965342e-07, +-1.438097289565259132e-07, +-1.445003048564226461e-07, +-1.451905209916498457e-07, +-1.458803762978557948e-07, +-1.465698697115017162e-07, +-1.472590001698322321e-07, +-1.479477666108444478e-07, +-1.486361679734160916e-07, +-1.493242031971192736e-07, +-1.500118712223463228e-07, +-1.506991709902808296e-07, +-1.513861014428982275e-07, +-1.520726615229380270e-07, +-1.527588501740285406e-07, +-1.534446663405016742e-07, +-1.541301089675206170e-07, +-1.548151770010481574e-07, +-1.554998693878493033e-07, +-1.561841850754622714e-07, +-1.568681230123230539e-07, +-1.575516821475817712e-07, +-1.582348614312282975e-07, +-1.589176598140623762e-07, +-1.596000762476645830e-07, +-1.602821096845214745e-07, +-1.609637590778412531e-07, +-1.616450233816799480e-07, +-1.623259015509107901e-07, +-1.630063925412275734e-07, +-1.636864953091124150e-07, +-1.643662088119659067e-07, +-1.650455320079171681e-07, +-1.657244638559529661e-07, +-1.664030033158882277e-07, +-1.670811493483655634e-07, +-1.677589009148273416e-07, +-1.684362569776408112e-07, +-1.691132164999147456e-07, +-1.697897784456231624e-07, +-1.704659417795765771e-07, +-1.711417054673927804e-07, +-1.718170684756231524e-07, +-1.724920297715966492e-07, +-1.731665883233941807e-07, +-1.738407431001250338e-07, +-1.745144930716222855e-07, +-1.751878372085652513e-07, +-1.758607744825750680e-07, +-1.765333038660312318e-07, +-1.772054243321953969e-07, +-1.778771348551835300e-07, +-1.785484344099665185e-07, +-1.792193219723414246e-07, +-1.798897965190859629e-07, +-1.805598570276228637e-07, +-1.812295024764504831e-07, +-1.818987318448076429e-07, +-1.825675441127971120e-07, +-1.832359382614795743e-07, +-1.839039132727218770e-07, +-1.845714681291680998e-07, +-1.852386018145156076e-07, +-1.859053133132116278e-07, +-1.865716016105766259e-07, +-1.872374656929278131e-07, +-1.879029045472461043e-07, +-1.885679171616013809e-07, +-1.892325025248253244e-07, +-1.898966596266262693e-07, +-1.905603874576884112e-07, +-1.912236850095183618e-07, +-1.918865512744167203e-07, +-1.925489852457536240e-07, +-1.932109859176659070e-07, +-1.938725522851807677e-07, +-1.945336833443371853e-07, +-1.951943780918862024e-07, +-1.958546355255627963e-07, +-1.965144546440591976e-07, +-1.971738344468736943e-07, +-1.978327739344333463e-07, +-1.984912721080664034e-07, +-1.991493279699719978e-07, +-1.998069405233430167e-07, +-2.004641087721870338e-07, +-2.011208317214167573e-07, +-2.017771083769731403e-07, +-2.024329377455270401e-07, +-2.030883188347478864e-07, +-2.037432506532799644e-07, +-2.043977322105884402e-07, +-2.050517625170843774e-07, +-2.057053405840953557e-07, +-2.063584654238365396e-07, +-2.070111360495331271e-07, +-2.076633514752387414e-07, +-2.083151107159635966e-07, +-2.089664127876372025e-07, +-2.096172567071162524e-07, +-2.102676414921543148e-07, +-2.109175661615217421e-07, +-2.115670297348288523e-07, +-2.122160312326473986e-07, +-2.128645696764797586e-07, +-2.135126440887646257e-07, +-2.141602534928451124e-07, +-2.148073969130897443e-07, +-2.154540733747154032e-07, +-2.161002819039097502e-07, +-2.167460215277995942e-07, +-2.173912912744254807e-07, +-2.180360901728617857e-07, +-2.186804172530381234e-07, +-2.193242715458589904e-07, +-2.199676520831788832e-07, +-2.206105578978012669e-07, +-2.212529880234509927e-07, +-2.218949414948932539e-07, +-2.225364173477582229e-07, +-2.231774146186625483e-07, +-2.238179323451776432e-07, +-2.244579695658334181e-07, +-2.250975253200896670e-07, +-2.257365986484552339e-07, +-2.263751885923125980e-07, +-2.270132941940378613e-07, +-2.276509144969716842e-07, +-2.282880485453918899e-07, +-2.289246953846321016e-07, +-2.295608540609357088e-07, +-2.301965236214293978e-07, +-2.308317031143878224e-07, +-2.314663915889406369e-07, +-2.321005880951946011e-07, +-2.327342916843171453e-07, +-2.333675014083681020e-07, +-2.340002163204142405e-07, +-2.346324354745016856e-07, +-2.352641579256305062e-07, +-2.358953827298709447e-07, +-2.365261089442178858e-07, +-2.371563356265673247e-07, +-2.377860618359745008e-07, +-2.384152866323674150e-07, +-2.390440090766644086e-07, +-2.396722282308613811e-07, +-2.402999431578897003e-07, +-2.409271529215862126e-07, +-2.415538565869588930e-07, +-2.421800532198949370e-07, +-2.428057418872802445e-07, +-2.434309216571148288e-07, +-2.440555915981978785e-07, +-2.446797507805326926e-07, +-2.453033982750106843e-07, +-2.459265331535263653e-07, +-2.465491544890697786e-07, +-2.471712613555781619e-07, +-2.477928528279127070e-07, +-2.484139279821159519e-07, +-2.490344858951273895e-07, +-2.496545256448998819e-07, +-2.502740463105137450e-07, +-2.508930469718660989e-07, +-2.515115267100695563e-07, +-2.521294846071410432e-07, +-2.527469197461456362e-07, +-2.533638312111676569e-07, +-2.539802180873149605e-07, +-2.545960794606893426e-07, +-2.552114144185052292e-07, +-2.558262220489137062e-07, +-2.564405014410952689e-07, +-2.570542516853730605e-07, +-2.576674718729285857e-07, +-2.582801610960601626e-07, +-2.588923184481557640e-07, +-2.595039430235500808e-07, +-2.601150339176457008e-07, +-2.607255902268774273e-07, +-2.613356110486909446e-07, +-2.619450954816553142e-07, +-2.625540426252969037e-07, +-2.631624515801810198e-07, +-2.637703214480287984e-07, +-2.643776513314401720e-07, +-2.649844403341417329e-07, +-2.655906875609633869e-07, +-2.661963921176982748e-07, +-2.668015531112192928e-07, +-2.674061696494471169e-07, +-2.680102408413554967e-07, +-2.686137657969445211e-07, +-2.692167436273503089e-07, +-2.698191734446824318e-07, +-2.704210543621342399e-07, +-2.710223854939583509e-07, +-2.716231659554380099e-07, +-2.722233948630009626e-07, +-2.728230713340523244e-07, +-2.734221944870927422e-07, +-2.740207634416817070e-07, +-2.746187773184472947e-07, +-2.752162352390569437e-07, +-2.758131363263282572e-07, +-2.764094797040664789e-07, +-2.770052644971739187e-07, +-2.776004898316267129e-07, +-2.781951548344450186e-07, +-2.787892586338069400e-07, +-2.793828003588837273e-07, +-2.799757791399498383e-07, +-2.805681941083601743e-07, +-2.811600443965465328e-07, +-2.817513291379946325e-07, +-2.823420474673567679e-07, +-2.829321985203108317e-07, +-2.835217814335369154e-07, +-2.841107953449658604e-07, +-2.846992393935054020e-07, +-2.852871127191515540e-07, +-2.858744144630702412e-07, +-2.864611437674391696e-07, +-2.870472997755510581e-07, +-2.876328816317931509e-07, +-2.882178884816197950e-07, +-2.888023194716618131e-07, +-2.893861737495916140e-07, +-2.899694504640981516e-07, +-2.905521487651331472e-07, +-2.911342678036382919e-07, +-2.917158067316574256e-07, +-2.922967647024175871e-07, +-2.928771408701676018e-07, +-2.934569343902901015e-07, +-2.940361444192719845e-07, +-2.946147701147071680e-07, +-2.951928106352731362e-07, +-2.957702651408633949e-07, +-2.963471327922922807e-07, +-2.969234127516767610e-07, +-2.974991041821380135e-07, +-2.980742062479109586e-07, +-2.986487181144536850e-07, +-2.992226389481829640e-07, +-2.997959679167086129e-07, +-3.003687041888168717e-07, +-3.009408469343313840e-07, +-3.015123953241983769e-07, +-3.020833485305930163e-07, +-3.026537057266268102e-07, +-3.032234660867224205e-07, +-3.037926287863245075e-07, +-3.043611930020280021e-07, +-3.049291579115568772e-07, +-3.054965226937653123e-07, +-3.060632865286108533e-07, +-3.066294485972626208e-07, +-3.071950080819411681e-07, +-3.077599641660047193e-07, +-3.083243160340484316e-07, +-3.088880628716474264e-07, +-3.094512038655921584e-07, +-3.100137382038646988e-07, +-3.105756650755075513e-07, +-3.111369836707295309e-07, +-3.116976931808837942e-07, +-3.122577927984376637e-07, +-3.128172817170808363e-07, +-3.133761591315711704e-07, +-3.139344242378124012e-07, +-3.144920762329601786e-07, +-3.150491143151610222e-07, +-3.156055376837903375e-07, +-3.161613455394273758e-07, +-3.167165370837229378e-07, +-3.172711115195076354e-07, +-3.178250680507664273e-07, +-3.183784058826386726e-07, +-3.189311242213954191e-07, +-3.194832222745395123e-07, +-3.200346992506603823e-07, +-3.205855543595279052e-07, +-3.211357868120723397e-07, +-3.216853958203640505e-07, +-3.222343805977090118e-07, +-3.227827403585017938e-07, +-3.233304743183285834e-07, +-3.238775816939375908e-07, +-3.244240617032512784e-07, +-3.249699135653272388e-07, +-3.255151365004734970e-07, +-3.260597297300902740e-07, +-3.266036924767731129e-07, +-3.271470239642942448e-07, +-3.276897234175681244e-07, +-3.282317900627657798e-07, +-3.287732231271544588e-07, +-3.293140218392034545e-07, +-3.298541854285611831e-07, +-3.303937131260526952e-07, +-3.309326041636605650e-07, +-3.314708577746204991e-07, +-3.320084731933029632e-07, +-3.325454496551847014e-07, +-3.330817863970759520e-07, +-3.336174826568732734e-07, +-3.341525376736579050e-07, +-3.346869506877742246e-07, +-3.352207209406804579e-07, +-3.357538476750459291e-07, +-3.362863301347351789e-07, +-3.368181675647748769e-07, +-3.373493592114604426e-07, +-3.378799043222296779e-07, +-3.384098021456411153e-07, +-3.389390519315980051e-07, +-3.394676529310976993e-07, +-3.399956043963398074e-07, +-3.405229055807936943e-07, +-3.410495557390531081e-07, +-3.415755541269387242e-07, +-3.421009000014710929e-07, +-3.426255926208748750e-07, +-3.431496312445513659e-07, +-3.436730151332059212e-07, +-3.441957435485783352e-07, +-3.447178157537854135e-07, +-3.452392310130520394e-07, +-3.457599885918137179e-07, +-3.462800877568118673e-07, +-3.467995277758516203e-07, +-3.473183079180224763e-07, +-3.478364274536763315e-07, +-3.483538856543051884e-07, +-3.488706817926128359e-07, +-3.493868151426188228e-07, +-3.499022849793862425e-07, +-3.504170905793666343e-07, +-3.509312312201313677e-07, +-3.514447061804737634e-07, +-3.519575147405020020e-07, +-3.524696561813997308e-07, +-3.529811297856458168e-07, +-3.534919348369907350e-07, +-3.540020706203360253e-07, +-3.545115364218079314e-07, +-3.550203315288542271e-07, +-3.555284552300080002e-07, +-3.560359068150993576e-07, +-3.565426855752356791e-07, +-3.570487908026824501e-07, +-3.575542217909590297e-07, +-3.580589778348168391e-07, +-3.585630582302146394e-07, +-3.590664622744185867e-07, +-3.595691892658565959e-07, +-3.600712385041891738e-07, +-3.605726092904127038e-07, +-3.610733009266133831e-07, +-3.615733127161896748e-07, +-3.620726439638269498e-07, +-3.625712939753750902e-07, +-3.630692620579535750e-07, +-3.635665475199217802e-07, +-3.640631496708552097e-07, +-3.645590678216481445e-07, +-3.650543012843636654e-07, +-3.655488493723390024e-07, +-3.660427114001522358e-07, +-3.665358866836335195e-07, +-3.670283745398338995e-07, +-3.675201742871265343e-07, +-3.680112852450600523e-07, +-3.685017067344625784e-07, +-3.689914380774078521e-07, +-3.694804785972260804e-07, +-3.699688276184782623e-07, +-3.704564844670456035e-07, +-3.709434484699970614e-07, +-3.714297189556817252e-07, +-3.719152952537024515e-07, +-3.724001766949013592e-07, +-3.728843626114416735e-07, +-3.733678523366831072e-07, +-3.738506452052666686e-07, +-3.743327405530950751e-07, +-3.748141377173303699e-07, +-3.752948360363794171e-07, +-3.757748348499755347e-07, +-3.762541334990539800e-07, +-3.767327313258332125e-07, +-3.772106276738036176e-07, +-3.776878218877177655e-07, +-3.781643133135765944e-07, +-3.786401012987155426e-07, +-3.791151851916742648e-07, +-3.795895643422845644e-07, +-3.800632381016487941e-07, +-3.805362058221196332e-07, +-3.810084668573924671e-07, +-3.814800205623890789e-07, +-3.819508662932382738e-07, +-3.824210034074807549e-07, +-3.828904312638437067e-07, +-3.833591492223304220e-07, +-3.838271566443105633e-07, +-3.842944528922827825e-07, +-3.847610373301736698e-07, +-3.852269093231055616e-07, +-3.856920682374799197e-07, +-3.861565134410493824e-07, +-3.866202443028025149e-07, +-3.870832601929457570e-07, +-3.875455604831058108e-07, +-3.880071445461025835e-07, +-3.884680117560437896e-07, +-3.889281614884107667e-07, +-3.893875931198443343e-07, +-3.898463060283344769e-07, +-3.903042995932079026e-07, +-3.907615731950136411e-07, +-3.912181262155950414e-07, +-3.916739580381701869e-07, +-3.921290680470997555e-07, +-3.925834556281894106e-07, +-3.930371201684506196e-07, +-3.934900610561908634e-07, +-3.939422776810975984e-07, +-3.943937694340308923e-07, +-3.948445357072052714e-07, +-3.952945758941806677e-07, +-3.957438893897489701e-07, +-3.961924755900025274e-07, +-3.966403338924192758e-07, +-3.970874636956271044e-07, +-3.975338643997066697e-07, +-3.979795354059559734e-07, +-3.984244761169961356e-07, +-3.988686859367527601e-07, +-3.993121642704546639e-07, +-3.997549105246166186e-07, +-4.001969241071226777e-07, +-4.006382044270977978e-07, +-4.010787508949794663e-07, +-4.015185629225947279e-07, +-4.019576399229518147e-07, +-4.023959813104334288e-07, +-4.028335865007767306e-07, +-4.032704549109628017e-07, +-4.037065859593090238e-07, +-4.041419790654443033e-07, +-4.045766336502904895e-07, +-4.050105491361458072e-07, +-4.054437249465593372e-07, +-4.058761605064187370e-07, +-4.063078552419258888e-07, +-4.067388085806019284e-07, +-4.071690199512594522e-07, +-4.075984887840999789e-07, +-4.080272145105760421e-07, +-4.084551965634807107e-07, +-4.088824343769294308e-07, +-4.093089273863582789e-07, +-4.097346750285029448e-07, +-4.101596767414835934e-07, +-4.105839319646854864e-07, +-4.110074401388339447e-07, +-4.114302007059798425e-07, +-4.118522131094797026e-07, +-4.122734767940760584e-07, +-4.126939912057783926e-07, +-4.131137557919420705e-07, +-4.135327700012491228e-07, +-4.139510332837150218e-07, +-4.143685450906598291e-07, +-4.147853048747954935e-07, +-4.152013120901025543e-07, +-4.156165661919161683e-07, +-4.160310666368991635e-07, +-4.164448128830480742e-07, +-4.168578043896768357e-07, +-4.172700406174877230e-07, +-4.176815210284592784e-07, +-4.180922450859246612e-07, +-4.185022122545538608e-07, +-4.189114220003332615e-07, +-4.193198737906418227e-07, +-4.197275670941645228e-07, +-4.201345013808584248e-07, +-4.205406761221401884e-07, +-4.209460907906864876e-07, +-4.213507448605145321e-07, +-4.217546378070610526e-07, +-4.221577691069667847e-07, +-4.225601382383501654e-07, +-4.229617446805977464e-07, +-4.233625879144353439e-07, +-4.237626674219919373e-07, +-4.241619826867033722e-07, +-4.245605331932903899e-07, +-4.249583184279371929e-07, +-4.253553378780947218e-07, +-4.257515910325658873e-07, +-4.261470773815720099e-07, +-4.265417964165701781e-07, +-4.269357476304221788e-07, +-4.273289305173785623e-07, +-4.277213445729823452e-07, +-4.281129892941265561e-07, +-4.285038641791287209e-07, +-4.288939687275317047e-07, +-4.292833024403558628e-07, +-4.296718648199017349e-07, +-4.300596553698239486e-07, +-4.304466735952052822e-07, +-4.308329190023694701e-07, +-4.312183910990507683e-07, +-4.316030893943810372e-07, +-4.319870133987863506e-07, +-4.323701626240538054e-07, +-4.327525365833988608e-07, +-4.331341347912665502e-07, +-4.335149567635907790e-07, +-4.338950020175859020e-07, +-4.342742700718501668e-07, +-4.346527604463399326e-07, +-4.350304726623682405e-07, +-4.354074062425951259e-07, +-4.357835607110960162e-07, +-4.361589355932525165e-07, +-4.365335304158279016e-07, +-4.369073447069470516e-07, +-4.372803779961036519e-07, +-4.376526298141318176e-07, +-4.380240996932877261e-07, +-4.383947871671363797e-07, +-4.387646917706278913e-07, +-4.391338130400805965e-07, +-4.395021505131566488e-07, +-4.398697037289462465e-07, +-4.402364722278470888e-07, +-4.406024555516491855e-07, +-4.409676532435043107e-07, +-4.413320648479406669e-07, +-4.416956899108339803e-07, +-4.420585279794850041e-07, +-4.424205786025098806e-07, +-4.427818413299211920e-07, +-4.431423157130959846e-07, +-4.435020013047847156e-07, +-4.438608976590947892e-07, +-4.442190043315601716e-07, +-4.445763208790351419e-07, +-4.449328468597621601e-07, +-4.452885818333664677e-07, +-4.456435253608236882e-07, +-4.459976770045404547e-07, +-4.463510363282483182e-07, +-4.467036028970701876e-07, +-4.470553762775084176e-07, +-4.474063560374389858e-07, +-4.477565417461063045e-07, +-4.481059329741781189e-07, +-4.484545292936513806e-07, +-4.488023302779194280e-07, +-4.491493355017573751e-07, +-4.494955445413008293e-07, +-4.498409569741192134e-07, +-4.501855723791095682e-07, +-4.505293903365720975e-07, +-4.508724104281839103e-07, +-4.512146322370090261e-07, +-4.515560553474751873e-07, +-4.518966793454429456e-07, +-4.522365038181246114e-07, +-4.525755283540662014e-07, +-4.529137525433010163e-07, +-4.532511759771766871e-07, +-4.535877982484283909e-07, +-4.539236189512433308e-07, +-4.542586376810797358e-07, +-4.545928540348969892e-07, +-4.549262676109757927e-07, +-4.552588780089836526e-07, +-4.555906848300320016e-07, +-4.559216876765777317e-07, +-4.562518861524243579e-07, +-4.565812798628590269e-07, +-4.569098684144959739e-07, +-4.572376514153366094e-07, +-4.575646284748381290e-07, +-4.578907992037393950e-07, +-4.582161632142799473e-07, +-4.585407201200246676e-07, +-4.588644695359478478e-07, +-4.591874110784026960e-07, +-4.595095443651966176e-07, +-4.598308690154154020e-07, +-4.601513846496575868e-07, +-4.604710908898455691e-07, +-4.607899873592987680e-07, +-4.611080736827915404e-07, +-4.614253494864006625e-07, +-4.617418143976457249e-07, +-4.620574680454729338e-07, +-4.623723100601744834e-07, +-4.626863400734450959e-07, +-4.629995577184336899e-07, +-4.633119626295794802e-07, +-4.636235544428241063e-07, +-4.639343327954513840e-07, +-4.642442973261374929e-07, +-4.645534476750201675e-07, +-4.648617834835450145e-07, +-4.651693043946034197e-07, +-4.654760100525145489e-07, +-4.657819001029507561e-07, +-4.660869741930030164e-07, +-4.663912319711605977e-07, +-4.666946730873131780e-07, +-4.669972971927352812e-07, +-4.672991039401541456e-07, +-4.676000929836473389e-07, +-4.679002639787110502e-07, +-4.681996165822434669e-07, +-4.684981504525318045e-07, +-4.687958652493093228e-07, +-4.690927606336687162e-07, +-4.693888362681237358e-07, +-4.696840918165871137e-07, +-4.699785269443778153e-07, +-4.702721413182056871e-07, +-4.705649346062284725e-07, +-4.708569064779636145e-07, +-4.711480566043484483e-07, +-4.714383846577310421e-07, +-4.717278903118441514e-07, +-4.720165732418750460e-07, +-4.723044331243713309e-07, +-4.725914696373009261e-07, +-4.728776824600414265e-07, +-4.731630712733760780e-07, +-4.734476357594812841e-07, +-4.737313756019867449e-07, +-4.740142904858839249e-07, +-4.742963800975883098e-07, +-4.745776441249238422e-07, +-4.748580822571244570e-07, +-4.751376941848166642e-07, +-4.754164796000791058e-07, +-4.756944381963617174e-07, +-4.759715696685341675e-07, +-4.762478737128766992e-07, +-4.765233500270668954e-07, +-4.767979983102356885e-07, +-4.770718182628942513e-07, +-4.773448095869243617e-07, +-4.776169719857034989e-07, +-4.778883051639649772e-07, +-4.781588088278539032e-07, +-4.784284826849682565e-07, +-4.786973264442756693e-07, +-4.789653398161712356e-07, +-4.792325225124634303e-07, +-4.794988742463711437e-07, +-4.797643947325167997e-07, +-4.800290836869896717e-07, +-4.802929408271925692e-07, +-4.805559658720416321e-07, +-4.808181585418117470e-07, +-4.810795185581920279e-07, +-4.813400456443237209e-07, +-4.815997395247431353e-07, +-4.818585999253527386e-07, +-4.821166265735536116e-07, +-4.823738191981094992e-07, +-4.826301775291979501e-07, +-4.828857012984654801e-07, +-4.831403902388819877e-07, +-4.833942440849241377e-07, +-4.836472625724365526e-07, +-4.838994454386882469e-07, +-4.841507924223524041e-07, +-4.844013032635730801e-07, +-4.846509777038170789e-07, +-4.848998154860633699e-07, +-4.851478163546507282e-07, +-4.853949800553409440e-07, +-4.856413063353588453e-07, +-4.858867949432747720e-07, +-4.861314456291117253e-07, +-4.863752581443386978e-07, +-4.866182322418024869e-07, +-4.868603676757687760e-07, +-4.871016642019730626e-07, +-4.873421215774801564e-07, +-4.875817395608614211e-07, +-4.878205179120576609e-07, +-4.880584563924270838e-07, +-4.882955547647986648e-07, +-4.885318127933440315e-07, +-4.887672302436906500e-07, +-4.890018068829167416e-07, +-4.892355424794746271e-07, +-4.894684368032516068e-07, +-4.897004896255560906e-07, +-4.899317007191160098e-07, +-4.901620698580665350e-07, +-4.903915968179964511e-07, +-4.906202813758870654e-07, +-4.908481233101442886e-07, +-4.910751224005949291e-07, +-4.913012784284787524e-07, +-4.915265911764889264e-07, +-4.917510604287034121e-07, +-4.919746859706348325e-07, +-4.921974675892130026e-07, +-4.924194050727969997e-07, +-4.926404982111457288e-07, +-4.928607467954809210e-07, +-4.930801506184074062e-07, +-4.932987094739635115e-07, +-4.935164231576111091e-07, +-4.937332914662175104e-07, +-4.939493141981121115e-07, +-4.941644911530083606e-07, +-4.943788221320527795e-07, +-4.945923069378150113e-07, +-4.948049453742849616e-07, +-4.950167372468648577e-07, +-4.952276823624125529e-07, +-4.954377805291710110e-07, +-4.956470315568250578e-07, +-4.958554352564716289e-07, +-4.960629914406371339e-07, +-4.962696999232555392e-07, +-4.964755605197164376e-07, +-4.966805730468014145e-07, +-4.968847373227213174e-07, +-4.970880531671167858e-07, +-4.972905204010322042e-07, +-4.974921388469711832e-07, +-4.976929083288376907e-07, +-4.978928286719259932e-07, +-4.980918997030162649e-07, +-4.982901212502696611e-07, +-4.984874931432732114e-07, +-4.986840152130614189e-07, +-4.988796872920679788e-07, +-4.990745092141528845e-07, +-4.992684808146021089e-07, +-4.994616019301260169e-07, +-4.996538723988435892e-07, +-4.998452920603404440e-07, +-5.000358607555542757e-07, +-5.002255783269159922e-07, +-5.004144446182371649e-07, +-5.006024594747535452e-07, +-5.007896227431543932e-07, +-5.009759342715322907e-07, +-5.011613939093673655e-07, +-5.013460015076324289e-07, +-5.015297569186757682e-07, +-5.017126599962676269e-07, +-5.018947105956479570e-07, +-5.020759085734008454e-07, +-5.022562537876114277e-07, +-5.024357460977394677e-07, +-5.026143853646757917e-07, +-5.027921714507591227e-07, +-5.029691042197290705e-07, +-5.031451835367223198e-07, +-5.033204092683547924e-07, +-5.034947812826276267e-07, +-5.036682994489618000e-07, +-5.038409636382404803e-07, +-5.040127737227148996e-07, +-5.041837295760824928e-07, +-5.043538310734846743e-07, +-5.045230780914562276e-07, +-5.046914705079629985e-07, +-5.048590082023932127e-07, +-5.050256910555462529e-07, +-5.051915189496777632e-07, +-5.053564917684297688e-07, +-5.055206093968704866e-07, +-5.056838717215253480e-07, +-5.058462786302877424e-07, +-5.060078300124977917e-07, +-5.061685257589389616e-07, +-5.063283657617828993e-07, +-5.064873499146414195e-07, +-5.066454781125401408e-07, +-5.068027502519181683e-07, +-5.069591662306647270e-07, +-5.071147259480615647e-07, +-5.072694293048208554e-07, +-5.074232762030741892e-07, +-5.075762665463797710e-07, +-5.077284002397020924e-07, +-5.078796771894528006e-07, +-5.080300973034398768e-07, +-5.081796604908998231e-07, +-5.083283666624898277e-07, +-5.084762157302840590e-07, +-5.086232076077754657e-07, +-5.087693422098959995e-07, +-5.089146194529741576e-07, +-5.090590392547657937e-07, +-5.092026015344485064e-07, +-5.093453062126091450e-07, +-5.094871532112791740e-07, +-5.096281424538826856e-07, +-5.097682738652779047e-07, +-5.099075473717348483e-07, +-5.100459629009450668e-07, +-5.101835203820096789e-07, +-5.103202197454746299e-07, +-5.104560609232775403e-07, +-5.105910438487832810e-07, +-5.107251684567783619e-07, +-5.108584346834625673e-07, +-5.109908424664462032e-07, +-5.111223917447837667e-07, +-5.112530824589204773e-07, +-5.113829145507283812e-07, +-5.115118879634969285e-07, +-5.116400026419223853e-07, +-5.117672585321470086e-07, +-5.118936555817085423e-07, +-5.120191937395391582e-07, +-5.121438729560361834e-07, +-5.122676931829790911e-07, +-5.123906543735656050e-07, +-5.125127564824308641e-07, +-5.126339994656054938e-07, +-5.127543832805404883e-07, +-5.128739078861015982e-07, +-5.129925732425656252e-07, +-5.131103793116413862e-07, +-5.132273260564426080e-07, +-5.133434134414721516e-07, +-5.134586414326943273e-07, +-5.135730099974560149e-07, +-5.136865191045182159e-07, +-5.137991687240775465e-07, +-5.139109588277297099e-07, +-5.140218893884631430e-07, +-5.141319603807202148e-07, +-5.142411717803272402e-07, +-5.143495235645285733e-07, +-5.144570157120051359e-07, +-5.145636482027987141e-07, +-5.146694210184159319e-07, +-5.147743341417466177e-07, +-5.148783875570901688e-07, +-5.149815812501790565e-07, +-5.150839152081440973e-07, +-5.151853894195072537e-07, +-5.152860038742391262e-07, +-5.153857585636945790e-07, +-5.154846534806393153e-07, +-5.155826886192742299e-07, +-5.156798639751661643e-07, +-5.157761795453319741e-07, +-5.158716353281805081e-07, +-5.159662313235278542e-07, +-5.160599675326021042e-07, +-5.161528439580390131e-07, +-5.162448606038760691e-07, +-5.163360174755789641e-07, +-5.164263145799979713e-07, +-5.165157519253987557e-07, +-5.166043295214709508e-07, +-5.166920473792770186e-07, +-5.167789055113047658e-07, +-5.168649039314591913e-07, +-5.169500426550344276e-07, +-5.170343216987332236e-07, +-5.171177410806705433e-07, +-5.172003008203531320e-07, +-5.172820009387143502e-07, +-5.173628414580730927e-07, +-5.174428224021590932e-07, +-5.175219437961054075e-07, +-5.176002056664492602e-07, +-5.176776080411228334e-07, +-5.177541509494860888e-07, +-5.178298344222750993e-07, +-5.179046584916418591e-07, +-5.179786231911342728e-07, +-5.180517285557063197e-07, +-5.181239746217068304e-07, +-5.181953614269006630e-07, +-5.182658890104414921e-07, +-5.183355574128855727e-07, +-5.184043666761888820e-07, +-5.184723168437050014e-07, +-5.185394079601989869e-07, +-5.186056400718226992e-07, +-5.186710132261316384e-07, +-5.187355274720786974e-07, +-5.187991828600177613e-07, +-5.188619794416926964e-07, +-5.189239172702611731e-07, +-5.189849964002634309e-07, +-5.190452168876402785e-07, +-5.191045787897304468e-07, +-5.191630821652682589e-07, +-5.192207270743818311e-07, +-5.192775135786055657e-07, +-5.193334417408568584e-07, +-5.193885116254507091e-07, +-5.194427232980989809e-07, +-5.194960768259007652e-07, +-5.195485722773633457e-07, +-5.196002097223811281e-07, +-5.196509892322244177e-07, +-5.197009108795848408e-07, +-5.197499747385285465e-07, +-5.197981808845117709e-07, +-5.198455293943976717e-07, +-5.198920203464258352e-07, +-5.199376538202302758e-07, +-5.199824298968409180e-07, +-5.200263486586683500e-07, +-5.200694101895248939e-07, +-5.201116145746060765e-07, +-5.201529619004839587e-07, +-5.201934522551409118e-07, +-5.202330857279339353e-07, +-5.202718624096082099e-07, +-5.203097823923063090e-07, +-5.203468457695500932e-07, +-5.203830526362358399e-07, +-5.204184030886698189e-07, +-5.204528972245299637e-07, +-5.204865351428747660e-07, +-5.205193169441658271e-07, +-5.205512427302273071e-07, +-5.205823126042849936e-07, +-5.206125266709394089e-07, +-5.206418850361706800e-07, +-5.206703878073542089e-07, +-5.206980350932417206e-07, +-5.207248270039520509e-07, +-5.207507636510125456e-07, +-5.207758451473140620e-07, +-5.208000716071265327e-07, +-5.208234431461159065e-07, +-5.208459598813049732e-07, +-5.208676219311179385e-07, +-5.208884294153410372e-07, +-5.209083824551512261e-07, +-5.209274811730944793e-07, +-5.209457256930984932e-07, +-5.209631161404641105e-07, +-5.209796526418780258e-07, +-5.209953353253926683e-07, +-5.210101643204379546e-07, +-5.210241397578282766e-07, +-5.210372617697389965e-07, +-5.210495304897270931e-07, +-5.210609460527269265e-07, +-5.210715085950378505e-07, +-5.210812182543369180e-07, +-5.210900751696736929e-07, +-5.210980794814637915e-07, +-5.211052313315063525e-07, +-5.211115308629598967e-07, +-5.211169782203576792e-07, +-5.211215735496064191e-07, +-5.211253169979740175e-07, +-5.211282087141019454e-07, +-5.211302488480029139e-07, +-5.211314375510515576e-07, +-5.211317749759986218e-07, +-5.211312612769537044e-07, +-5.211298966093956322e-07, +-5.211276811301660019e-07, +-5.211246149974819919e-07, +-5.211206983709163509e-07, +-5.211159314114061858e-07, +-5.211103142812593149e-07, +-5.211038471441396558e-07, +-5.210965301650800377e-07, +-5.210883635104733065e-07, +-5.210793473480727495e-07, +-5.210694818469940002e-07, +-5.210587671777124978e-07, +-5.210472035120676162e-07, +-5.210347910232571585e-07, +-5.210215298858361921e-07, +-5.210074202757187431e-07, +-5.209924623701787486e-07, +-5.209766563478453988e-07, +-5.209600023887088540e-07, +-5.209425006741106095e-07, +-5.209241513867542958e-07, +-5.209049547106942428e-07, +-5.208849108313417278e-07, +-5.208640199354612686e-07, +-5.208422822111721066e-07, +-5.208196978479491594e-07, +-5.207962670366111622e-07, +-5.207719899693432204e-07, +-5.207468668396693867e-07, +-5.207208978424697077e-07, +-5.206940831739775767e-07, +-5.206664230317715814e-07, +-5.206379176147803742e-07, +-5.206085671232825660e-07, +-5.205783717589046090e-07, +-5.205473317246237613e-07, +-5.205154472247597222e-07, +-5.204827184649781264e-07, +-5.204491456522952027e-07, +-5.204147289950699387e-07, +-5.203794687030042930e-07, +-5.203433649871448887e-07, +-5.203064180598879903e-07, +-5.202686281349652095e-07, +-5.202299954274530349e-07, +-5.201905201537699725e-07, +-5.201502025316752758e-07, +-5.201090427802697928e-07, +-5.200670411199925772e-07, +-5.200241977726251246e-07, +-5.199805129612841716e-07, +-5.199359869104274143e-07, +-5.198906198458462019e-07, +-5.198444119946743251e-07, +-5.197973635853770043e-07, +-5.197494748477566077e-07, +-5.197007460129505327e-07, +-5.196511773134349129e-07, +-5.196007689830128644e-07, +-5.195495212568235922e-07, +-5.194974343713397428e-07, +-5.194445085643651808e-07, +-5.193907440750343538e-07, +-5.193361411438111276e-07, +-5.192807000124952447e-07, +-5.192244209242111014e-07, +-5.191673041234103946e-07, +-5.191093498558763569e-07, +-5.190505583687194158e-07, +-5.189909299103734876e-07, +-5.189304647306038128e-07, +-5.188691630804963679e-07, +-5.188070252124659125e-07, +-5.187440513802475186e-07, +-5.186802418389041942e-07, +-5.186155968448182011e-07, +-5.185501166556961373e-07, +-5.184838015305633248e-07, +-5.184166517297686809e-07, +-5.183486675149843998e-07, +-5.182798491491919771e-07, +-5.182101968967052910e-07, +-5.181397110231470977e-07, +-5.180683917954577128e-07, +-5.179962394819006234e-07, +-5.179232543520484061e-07, +-5.178494366767943734e-07, +-5.177747867283463272e-07, +-5.176993047802222177e-07, +-5.176229911072567077e-07, +-5.175458459855968316e-07, +-5.174678696927017838e-07, +-5.173890625073393188e-07, +-5.173094247095922097e-07, +-5.172289565808514718e-07, +-5.171476584038181631e-07, +-5.170655304624979837e-07, +-5.169825730422105939e-07, +-5.168987864295782846e-07, +-5.168141709125327537e-07, +-5.167287267803066361e-07, +-5.166424543234453616e-07, +-5.165553538337924382e-07, +-5.164674256044972867e-07, +-5.163786699300138649e-07, +-5.162890871060917729e-07, +-5.161986774297905477e-07, +-5.161074411994652629e-07, +-5.160153787147707643e-07, +-5.159224902766665401e-07, +-5.158287761874078272e-07, +-5.157342367505411643e-07, +-5.156388722709196382e-07, +-5.155426830546891200e-07, +-5.154456694092881588e-07, +-5.153478316434544406e-07, +-5.152491700672227763e-07, +-5.151496849919094318e-07, +-5.150493767301349982e-07, +-5.149482455958072385e-07, +-5.148462919041242650e-07, +-5.147435159715808912e-07, +-5.146399181159474565e-07, +-5.145354986562967195e-07, +-5.144302579129924225e-07, +-5.143241962076690694e-07, +-5.142173138632608299e-07, +-5.141096112039871406e-07, +-5.140010885553433872e-07, +-5.138917462441179512e-07, +-5.137815845983787635e-07, +-5.136706039474818799e-07, +-5.135588046220590941e-07, +-5.134461869540303249e-07, +-5.133327512765801114e-07, +-5.132184979241984823e-07, +-5.131034272326298161e-07, +-5.129875395389070402e-07, +-5.128708351813482427e-07, +-5.127533144995276617e-07, +-5.126349778343182483e-07, +-5.125158255278570447e-07, +-5.123958579235467720e-07, +-5.122750753660778530e-07, +-5.121534782014105188e-07, +-5.120310667767605152e-07, +-5.119078414406471717e-07, +-5.117838025428271210e-07, +-5.116589504343441684e-07, +-5.115332854675106570e-07, +-5.114068079958898915e-07, +-5.112795183743380665e-07, +-5.111514169589604327e-07, +-5.110225041071279197e-07, +-5.108927801774821125e-07, +-5.107622455299287926e-07, +-5.106309005256220564e-07, +-5.104987455270003141e-07, +-5.103657808977537846e-07, +-5.102320070028212133e-07, +-5.100974242084172951e-07, +-5.099620328820093804e-07, +-5.098258333923225580e-07, +-5.096888261093420898e-07, +-5.095510114042998584e-07, +-5.094123896496925783e-07, +-5.092729612192743847e-07, +-5.091327264880325866e-07, +-5.089916858322372187e-07, +-5.088498396293965718e-07, +-5.087071882582580402e-07, +-5.085637320988345912e-07, +-5.084194715323860246e-07, +-5.082744069414180199e-07, +-5.081285387096877477e-07, +-5.079818672221915877e-07, +-5.078343928651804815e-07, +-5.076861160261464856e-07, +-5.075370370938264772e-07, +-5.073871564582015191e-07, +-5.072364745104995067e-07, +-5.070849916431769567e-07, +-5.069327082499400767e-07, +-5.067796247257396837e-07, +-5.066257414667593452e-07, +-5.064710588704209907e-07, +-5.063155773353919001e-07, +-5.061592972615577043e-07, +-5.060022190500574309e-07, +-5.058443431032551294e-07, +-5.056856698247564933e-07, +-5.055261996193988021e-07, +-5.053659328932389571e-07, +-5.052048700535795271e-07, +-5.050430115089458790e-07, +-5.048803576690993068e-07, +-5.047169089450195610e-07, +-5.045526657489306839e-07, +-5.043876284942611985e-07, +-5.042217975956802133e-07, +-5.040551734690798466e-07, +-5.038877565315742736e-07, +-5.037195472015016319e-07, +-5.035505458984265631e-07, +-5.033807530431182951e-07, +-5.032101690575868535e-07, +-5.030387943650525682e-07, +-5.028666293899532727e-07, +-5.026936745579538340e-07, +-5.025199302959145998e-07, +-5.023453970319271866e-07, +-5.021700751953100318e-07, +-5.019939652165669955e-07, +-5.018170675274370180e-07, +-5.016393825608651082e-07, +-5.014609107509913330e-07, +-5.012816525332012151e-07, +-5.011016083440547943e-07, +-5.009207786213360733e-07, +-5.007391638040428525e-07, +-5.005567643323604730e-07, +-5.003735806476887091e-07, +-5.001896131926539447e-07, +-5.000048624110460694e-07, +-4.998193287478834882e-07, +-4.996330126493884517e-07, +-4.994459145629543393e-07, +-4.992580349372180809e-07, +-4.990693742219929231e-07, +-4.988799328682761590e-07, +-4.986897113282844911e-07, +-4.984987100554273506e-07, +-4.983069295042858268e-07, +-4.981143701306776771e-07, +-4.979210323915740001e-07, +-4.977269167451576811e-07, +-4.975320236508064511e-07, +-4.973363535690593233e-07, +-4.971399069616879555e-07, +-4.969426842916274055e-07, +-4.967446860229913773e-07, +-4.965459126210947733e-07, +-4.963463645524457540e-07, +-4.961460422847023267e-07, +-4.959449462867567319e-07, +-4.957430770286344341e-07, +-4.955404349815714139e-07, +-4.953370206179745689e-07, +-4.951328344114323020e-07, +-4.949278768367122975e-07, +-4.947221483697645920e-07, +-4.945156494876952103e-07, +-4.943083806688061875e-07, +-4.941003423925757701e-07, +-4.938915351396248518e-07, +-4.936819593917910895e-07, +-4.934716156320609281e-07, +-4.932605043445802950e-07, +-4.930486260146821282e-07, +-4.928359811288610717e-07, +-4.926225701747810982e-07, +-4.924083936412790034e-07, +-4.921934520183340189e-07, +-4.919777457971105869e-07, +-4.917612754699352791e-07, +-4.915440415302905491e-07, +-4.913260444728226743e-07, +-4.911072847933446137e-07, +-4.908877629888077387e-07, +-4.906674795573423848e-07, +-4.904464349982285228e-07, +-4.902246298119056057e-07, +-4.900020644999648399e-07, +-4.897787395651600899e-07, +-4.895546555113749507e-07, +-4.893298128436678520e-07, +-4.891042120682418826e-07, +-4.888778536924492372e-07, +-4.886507382247969344e-07, +-4.884228661749208756e-07, +-4.881942380536249151e-07, +-4.879648543728493074e-07, +-4.877347156456791781e-07, +-4.875038223863470650e-07, +-4.872721751102316470e-07, +-4.870397743338312749e-07, +-4.868066205748082286e-07, +-4.865727143519590710e-07, +-4.863380561852131656e-07, +-4.861026465956415705e-07, +-4.858664861054593678e-07, +-4.856295752379900879e-07, +-4.853919145177174847e-07, +-4.851535044702479482e-07, +-4.849143456223269163e-07, +-4.846744385018312508e-07, +-4.844337836377453093e-07, +-4.841923815601986379e-07, +-4.839502328004761356e-07, +-4.837073378909351510e-07, +-4.834636973650931503e-07, +-4.832193117575963767e-07, +-4.829741816041734761e-07, +-4.827283074417432810e-07, +-4.824816898082761099e-07, +-4.822343292429049397e-07, +-4.819862262858797720e-07, +-4.817373814785375634e-07, +-4.814877953633577063e-07, +-4.812374684839568406e-07, +-4.809864013850137856e-07, +-4.807345946123568901e-07, +-4.804820487129267631e-07, +-4.802287642347390043e-07, +-4.799747417269753659e-07, +-4.797199817398959791e-07, +-4.794644848248576709e-07, +-4.792082515343445633e-07, +-4.789512824219497562e-07, +-4.786935780423339285e-07, +-4.784351389513267707e-07, +-4.781759657057938944e-07, +-4.779160588637389001e-07, +-4.776554189842715073e-07, +-4.773940466275562034e-07, +-4.771319423549147345e-07, +-4.768691067287391787e-07, +-4.766055403124940109e-07, +-4.763412436707701538e-07, +-4.760762173692534260e-07, +-4.758104619746789083e-07, +-4.755439780549463517e-07, +-4.752767661789744350e-07, +-4.750088269168089202e-07, +-4.747401608395764891e-07, +-4.744707685194870200e-07, +-4.742006505298402048e-07, +-4.739298074450256022e-07, +-4.736582398404912973e-07, +-4.733859482927964179e-07, +-4.731129333795653943e-07, +-4.728391956795100886e-07, +-4.725647357724176709e-07, +-4.722895542391620549e-07, +-4.720136516616645101e-07, +-4.717370286229532198e-07, +-4.714596857071203990e-07, +-4.711816234993282244e-07, +-4.709028425858235513e-07, +-4.706233435538927561e-07, +-4.703431269919226169e-07, +-4.700621934893574326e-07, +-4.697805436367078104e-07, +-4.694981780255544781e-07, +-4.692150972485500304e-07, +-4.689313018993787483e-07, +-4.686467925728207618e-07, +-4.683615698647077392e-07, +-4.680756343719296636e-07, +-4.677889866924346738e-07, +-4.675016274252457409e-07, +-4.672135571704022751e-07, +-4.669247765290365711e-07, +-4.666352861033216094e-07, +-4.663450864964855617e-07, +-4.660541783128195734e-07, +-4.657625621576295351e-07, +-4.654702386373095630e-07, +-4.651772083592871535e-07, +-4.648834719320374241e-07, +-4.645890299650807308e-07, +-4.642938830689978620e-07, +-4.639980318553735518e-07, +-4.637014769368731366e-07, +-4.634042189271888744e-07, +-4.631062584410575208e-07, +-4.628075960942628169e-07, +-4.625082325035909674e-07, +-4.622081682869008913e-07, +-4.619074040630758879e-07, +-4.616059404520324781e-07, +-4.613037780747171217e-07, +-4.610009175531269702e-07, +-4.606973595102478212e-07, +-4.603931045701193400e-07, +-4.600881533578476067e-07, +-4.597825064994924072e-07, +-4.594761646221854479e-07, +-4.591691283540856741e-07, +-4.588613983243225724e-07, +-4.585529751631388421e-07, +-4.582438595017090778e-07, +-4.579340519722757179e-07, +-4.576235532080999166e-07, +-4.573123638434239572e-07, +-4.570004845135289557e-07, +-4.566879158547473021e-07, +-4.563746585043561455e-07, +-4.560607131006882502e-07, +-4.557460802830887433e-07, +-4.554307606918642933e-07, +-4.551147549684140825e-07, +-4.547980637550598706e-07, +-4.544806876951783970e-07, +-4.541626274331409239e-07, +-4.538438836143316585e-07, +-4.535244568850881969e-07, +-4.532043478928358843e-07, +-4.528835572859127967e-07, +-4.525620857137061135e-07, +-4.522399338266007657e-07, +-4.519171022759245912e-07, +-4.515935917140793065e-07, +-4.512694027944225049e-07, +-4.509445361712734798e-07, +-4.506189924999866518e-07, +-4.502927724369027583e-07, +-4.499658766393004670e-07, +-4.496383057655343890e-07, +-4.493100604748600082e-07, +-4.489811414275646003e-07, +-4.486515492849184757e-07, +-4.483212847091242104e-07, +-4.479903483634434363e-07, +-4.476587409120777273e-07, +-4.473264630201803517e-07, +-4.469935153539196408e-07, +-4.466598985804322433e-07, +-4.463256133678229140e-07, +-4.459906603851742011e-07, +-4.456550403025524814e-07, +-4.453187537909525860e-07, +-4.449818015223818680e-07, +-4.446441841698006981e-07, +-4.443059024071398825e-07, +-4.439669569093043679e-07, +-4.436273483521263375e-07, +-4.432870774124396970e-07, +-4.429461447680290403e-07, +-4.426045510976355796e-07, +-4.422622970809611151e-07, +-4.419193833986829643e-07, +-4.415758107323900110e-07, +-4.412315797646673028e-07, +-4.408866911790429524e-07, +-4.405411456599943319e-07, +-4.401949438929663367e-07, +-4.398480865643130462e-07, +-4.395005743613755450e-07, +-4.391524079724344889e-07, +-4.388035880867105815e-07, +-4.384541153943738387e-07, +-4.381039905865495175e-07, +-4.377532143552627418e-07, +-4.374017873935238936e-07, +-4.370497103952660913e-07, +-4.366969840553658364e-07, +-4.363436090696318429e-07, +-4.359895861348241488e-07, +-4.356349159485956707e-07, +-4.352795992095741543e-07, +-4.349236366173048937e-07, +-4.345670288722635427e-07, +-4.342097766758685558e-07, +-4.338518807304283015e-07, +-4.334933417391992429e-07, +-4.331341604064097075e-07, +-4.327743374371265853e-07, +-4.324138735373948249e-07, +-4.320527694141808406e-07, +-4.316910257753265613e-07, +-4.313286433296411746e-07, +-4.309656227868319875e-07, +-4.306019648575218441e-07, +-4.302376702532498661e-07, +-4.298727396864833117e-07, +-4.295071738705418187e-07, +-4.291409735197565415e-07, +-4.287741393492699858e-07, +-4.284066720751883162e-07, +-4.280385724145240226e-07, +-4.276698410851507098e-07, +-4.273004788058748304e-07, +-4.269304862964514612e-07, +-4.265598642774468717e-07, +-4.261886134703862258e-07, +-4.258167345976949772e-07, +-4.254442283826344427e-07, +-4.250710955494657554e-07, +-4.246973368232413889e-07, +-4.243229529299664115e-07, +-4.239479445965209820e-07, +-4.235723125506911083e-07, +-4.231960575210955375e-07, +-4.228191802373418217e-07, +-4.224416814298187952e-07, +-4.220635618298605808e-07, +-4.216848221696870863e-07, +-4.213054631823385707e-07, +-4.209254856018244575e-07, +-4.205448901629919389e-07, +-4.201636776015353988e-07, +-4.197818486540697869e-07, +-4.193994040580868911e-07, +-4.190163445518910155e-07, +-4.186326708747656344e-07, +-4.182483837667576633e-07, +-4.178634839688464423e-07, +-4.174779722228824319e-07, +-4.170918492715162740e-07, +-4.167051158583594636e-07, +-4.163177727278434765e-07, +-4.159298206252275514e-07, +-4.155412602966838697e-07, +-4.151520924892239166e-07, +-4.147623179507237332e-07, +-4.143719374299127464e-07, +-4.139809516763951034e-07, +-4.135893614405786267e-07, +-4.131971674737757172e-07, +-4.128043705281327327e-07, +-4.124109713566464520e-07, +-4.120169707131778921e-07, +-4.116223693523929634e-07, +-4.112271680298465899e-07, +-4.108313675019232058e-07, +-4.104349685258540665e-07, +-4.100379718597084605e-07, +-4.096403782624154149e-07, +-4.092421884936929678e-07, +-4.088434033141495479e-07, +-4.084440234852086941e-07, +-4.080440497691322435e-07, +-4.076434829290316071e-07, +-4.072423237288008014e-07, +-4.068405729332150217e-07, +-4.064382313078613977e-07, +-4.060352996191562511e-07, +-4.056317786343419725e-07, +-4.052276691215039623e-07, +-4.048229718494994265e-07, +-4.044176875880614032e-07, +-4.040118171077232707e-07, +-4.036053611798410883e-07, +-4.031983205765871901e-07, +-4.027906960709707259e-07, +-4.023824884367620634e-07, +-4.019736984485981381e-07, +-4.015643268819110374e-07, +-4.011543745129445183e-07, +-4.007438421187682476e-07, +-4.003327304772081340e-07, +-3.999210403669355837e-07, +-3.995087725674736945e-07, +-3.990959278590489192e-07, +-3.986825070227597842e-07, +-3.982685108405039382e-07, +-3.978539400949284425e-07, +-3.974387955695313619e-07, +-3.970230780485865371e-07, +-3.966067883171689966e-07, +-3.961899271611438386e-07, +-3.957724953671858718e-07, +-3.953544937226944888e-07, +-3.949359230159779486e-07, +-3.945167840360106484e-07, +-3.940970775726250830e-07, +-3.936768044164402172e-07, +-3.932559653588035699e-07, +-3.928345611918832233e-07, +-3.924125927086767166e-07, +-3.919900607028604329e-07, +-3.915669659689574707e-07, +-3.911433093022647989e-07, +-3.907190914987897824e-07, +-3.902943133554332471e-07, +-3.898689756697459046e-07, +-3.894430792401199942e-07, +-3.890166248657163843e-07, +-3.885896133464133275e-07, +-3.881620454828890459e-07, +-3.877339220766379310e-07, +-3.873052439298168596e-07, +-3.868760118454128542e-07, +-3.864462266271741547e-07, +-3.860158890795367393e-07, +-3.855850000078009300e-07, +-3.851535602179720451e-07, +-3.847215705167712516e-07, +-3.842890317117304859e-07, +-3.838559446111148972e-07, +-3.834223100239377765e-07, +-3.829881287599801444e-07, +-3.825534016297199708e-07, +-3.821181294444307484e-07, +-3.816823130161340056e-07, +-3.812459531575193155e-07, +-3.808090506821311188e-07, +-3.803716064041955063e-07, +-3.799336211386424000e-07, +-3.794950957011943332e-07, +-3.790560309082885230e-07, +-3.786164275771020170e-07, +-3.781762865255557166e-07, +-3.777356085722544492e-07, +-3.772943945365845360e-07, +-3.768526452386408414e-07, +-3.764103614992481074e-07, +-3.759675441399546539e-07, +-3.755241939830520723e-07, +-3.750803118514988333e-07, +-3.746358985690290786e-07, +-3.741909549600815748e-07, +-3.737454818498080790e-07, +-3.732994800640815966e-07, +-3.728529504295042166e-07, +-3.724058937733410431e-07, +-3.719583109236201980e-07, +-3.715102027090630469e-07, +-3.710615699591044217e-07, +-3.706124135039008263e-07, +-3.701627341742601861e-07, +-3.697125328017504795e-07, +-3.692618102186262053e-07, +-3.688105672578412997e-07, +-3.683588047530503010e-07, +-3.679065235386282019e-07, +-3.674537244495858522e-07, +-3.670004083216910317e-07, +-3.665465759913825817e-07, +-3.660922282957960813e-07, +-3.656373660727542650e-07, +-3.651819901607933338e-07, +-3.647261013990742813e-07, +-3.642697006275097368e-07, +-3.638127886866718511e-07, +-3.633553664178198770e-07, +-3.628974346629133522e-07, +-3.624389942645349657e-07, +-3.619800460659851612e-07, +-3.615205909112981775e-07, +-3.610606296450732774e-07, +-3.606001631126571244e-07, +-3.601391921600715201e-07, +-3.596777176339506181e-07, +-3.592157403816585027e-07, +-3.587532612512060735e-07, +-3.582902810912738098e-07, +-3.578268007512239994e-07, +-3.573628210810298528e-07, +-3.568983429313616885e-07, +-3.564333671536103852e-07, +-3.559678945997092405e-07, +-3.555019261223282059e-07, +-3.550354625747925189e-07, +-3.545685048110237279e-07, +-3.541010536856402780e-07, +-3.536331100539637572e-07, +-3.531646747718551550e-07, +-3.526957486958977150e-07, +-3.522263326833264199e-07, +-3.517564275919397940e-07, +-3.512860342803196551e-07, +-3.508151536075550883e-07, +-3.503437864334515563e-07, +-3.498719336184564143e-07, +-3.493995960235945880e-07, +-3.489267745105681001e-07, +-3.484534699417736990e-07, +-3.479796831801213822e-07, +-3.475054150892337138e-07, +-3.470306665333648266e-07, +-3.465554383773159310e-07, +-3.460797314866561786e-07, +-3.456035467274406001e-07, +-3.451268849664294874e-07, +-3.446497470709843665e-07, +-3.441721339090892271e-07, +-3.436940463493480868e-07, +-3.432154852610030968e-07, +-3.427364515138514265e-07, +-3.422569459783677660e-07, +-3.417769695256378864e-07, +-3.412965230272809780e-07, +-3.408156073556482795e-07, +-3.403342233836359890e-07, +-3.398523719847122639e-07, +-3.393700540330074825e-07, +-3.388872704032395462e-07, +-3.384040219707254207e-07, +-3.379203096114072877e-07, +-3.374361342017628654e-07, +-3.369514966189308227e-07, +-3.364663977406264988e-07, +-3.359808384451602738e-07, +-3.354948196114331742e-07, +-3.350083421189626021e-07, +-3.345214068477915433e-07, +-3.340340146786153578e-07, +-3.335461664926948532e-07, +-3.330578631718798426e-07, +-3.325691055985989270e-07, +-3.320798946558878187e-07, +-3.315902312273011963e-07, +-3.311001161970331422e-07, +-3.306095504498366222e-07, +-3.301185348710399487e-07, +-3.296270703465670045e-07, +-3.291351577628559272e-07, +-3.286427980069751528e-07, +-3.281499919665425768e-07, +-3.276567405297465187e-07, +-3.271630445853409571e-07, +-3.266689050226666526e-07, +-3.261743227315647505e-07, +-3.256792986025051066e-07, +-3.251838335264923718e-07, +-3.246879283950938387e-07, +-3.241915841004321889e-07, +-3.236948015352087333e-07, +-3.231975815926168032e-07, +-3.226999251664626110e-07, +-3.222018331510861587e-07, +-3.217033064413757965e-07, +-3.212043459327892921e-07, +-3.207049525212680165e-07, +-3.202051271033402282e-07, +-3.197048705761411381e-07, +-3.192041838372206326e-07, +-3.187030677847539200e-07, +-3.182015233174569864e-07, +-3.176995513345175093e-07, +-3.171971527357208538e-07, +-3.166943284213683869e-07, +-3.161910792922923535e-07, +-3.156874062498771581e-07, +-3.151833101959725969e-07, +-3.146787920330003720e-07, +-3.141738526639707678e-07, +-3.136684929922918033e-07, +-3.131627139219777087e-07, +-3.126565163575671332e-07, +-3.121499012040519947e-07, +-3.116428693669869056e-07, +-3.111354217525051076e-07, +-3.106275592671319659e-07, +-3.101192828179849215e-07, +-3.096105933126978940e-07, +-3.091014916593292721e-07, +-3.085919787665938424e-07, +-3.080820555435658509e-07, +-3.075717228999095020e-07, +-3.070609817457949438e-07, +-3.065498329918288106e-07, +-3.060382775491608969e-07, +-3.055263163295067622e-07, +-3.050139502449491547e-07, +-3.045011802081532109e-07, +-3.039880071322800047e-07, +-3.034744319308929511e-07, +-3.029604555182057215e-07, +-3.024460788087624359e-07, +-3.019313027176870615e-07, +-3.014161281605663101e-07, +-3.009005560534715022e-07, +-3.003845873129590435e-07, +-2.998682228560860951e-07, +-2.993514636003291522e-07, +-2.988343104637048523e-07, +-2.983167643647076656e-07, +-2.977988262222212207e-07, +-2.972804969557333985e-07, +-2.967617774851378086e-07, +-2.962426687307563418e-07, +-2.957231716134449430e-07, +-2.952032870545063670e-07, +-2.946830159757065368e-07, +-2.941623592992991077e-07, +-2.936413179479348874e-07, +-2.931198928447915911e-07, +-2.925980849135052848e-07, +-2.920758950780813406e-07, +-2.915533242631172070e-07, +-2.910303733935951498e-07, +-2.905070433949073989e-07, +-2.899833351929633509e-07, +-2.894592497141015831e-07, +-2.889347878851082771e-07, +-2.884099506332141477e-07, +-2.878847388861217601e-07, +-2.873591535719056329e-07, +-2.868331956191516807e-07, +-2.863068659568625585e-07, +-2.857801655144797373e-07, +-2.852530952219043619e-07, +-2.847256560094059841e-07, +-2.841978488077532694e-07, +-2.836696745481283414e-07, +-2.831411341621403872e-07, +-2.826122285818290454e-07, +-2.820829587396837819e-07, +-2.815533255685517226e-07, +-2.810233300017719603e-07, +-2.804929729730830172e-07, +-2.799622554166470375e-07, +-2.794311782670649286e-07, +-2.788997424592876873e-07, +-2.783679489287515542e-07, +-2.778357986112846287e-07, +-2.773032924431270917e-07, +-2.767704313609291938e-07, +-2.762372163017776194e-07, +-2.757036482030944781e-07, +-2.751697280027555183e-07, +-2.746354566391096623e-07, +-2.741008350507731773e-07, +-2.735658641768527624e-07, +-2.730305449568571928e-07, +-2.724948783306228335e-07, +-2.719588652384541943e-07, +-2.714225066210267321e-07, +-2.708858034194088746e-07, +-2.703487565750835129e-07, +-2.698113670298564168e-07, +-2.692736357259666662e-07, +-2.687355636061082507e-07, +-2.681971516132268874e-07, +-2.676584006907396674e-07, +-2.671193117824476523e-07, +-2.665798858324630825e-07, +-2.660401237853464905e-07, +-2.655000265860115159e-07, +-2.649595951797494158e-07, +-2.644188305122228715e-07, +-2.638777335294938873e-07, +-2.633363051778989593e-07, +-2.627945464043080023e-07, +-2.622524581557959133e-07, +-2.617100413798957281e-07, +-2.611672970245052892e-07, +-2.606242260377909482e-07, +-2.600808293684224065e-07, +-2.595371079653571974e-07, +-2.589930627778640863e-07, +-2.584486947556376311e-07, +-2.579040048487279320e-07, +-2.573589940074442284e-07, +-2.568136631826098555e-07, +-2.562680133252365077e-07, +-2.557220453867758600e-07, +-2.551757603190247532e-07, +-2.546291590740335558e-07, +-2.540822426043354980e-07, +-2.535350118627351782e-07, +-2.529874678023299504e-07, +-2.524396113766246976e-07, +-2.518914435394647039e-07, +-2.513429652449333227e-07, +-2.507941774475884047e-07, +-2.502450811022502220e-07, +-2.496956771640211615e-07, +-2.491459665884035687e-07, +-2.485959503312022325e-07, +-2.480456293485495850e-07, +-2.474950045969226947e-07, +-2.469440770330506753e-07, +-2.463928476140542875e-07, +-2.458413172973726703e-07, +-2.452894870406676797e-07, +-2.447373578020583575e-07, +-2.441849305399064206e-07, +-2.436322062128407187e-07, +-2.430791857798691490e-07, +-2.425258702002854292e-07, +-2.419722604336913324e-07, +-2.414183574400184452e-07, +-2.408641621794295410e-07, +-2.403096756124617820e-07, +-2.397548986999312159e-07, +-2.391998324029508285e-07, +-2.386444776829321846e-07, +-2.380888355016063393e-07, +-2.375329068209276995e-07, +-2.369766926032140761e-07, +-2.364201938110496980e-07, +-2.358634114073116558e-07, +-2.353063463551609286e-07, +-2.347489996180701771e-07, +-2.341913721597253290e-07, +-2.336334649441658688e-07, +-2.330752789356894938e-07, +-2.325168150988731045e-07, +-2.319580743985941657e-07, +-2.313990577999383799e-07, +-2.308397662683333600e-07, +-2.302802007694596109e-07, +-2.297203622692669676e-07, +-2.291602517339753363e-07, +-2.285998701300975908e-07, +-2.280392184243393576e-07, +-2.274782975837463735e-07, +-2.269171085755998506e-07, +-2.263556523674455928e-07, +-2.257939299270879342e-07, +-2.252319422226134830e-07, +-2.246696902222938178e-07, +-2.241071748947276310e-07, +-2.235443972087426843e-07, +-2.229813581334205320e-07, +-2.224180586381136990e-07, +-2.218544996923532758e-07, +-2.212906822659648024e-07, +-2.207266073290912182e-07, +-2.201622758519741947e-07, +-2.195976888051937137e-07, +-2.190328471595725113e-07, +-2.184677518860959540e-07, +-2.179024039560606136e-07, +-2.173368043409753492e-07, +-2.167709540125804720e-07, +-2.162048539428510006e-07, +-2.156385051040142899e-07, +-2.150719084684312615e-07, +-2.145050650088594335e-07, +-2.139379756981119373e-07, +-2.133706415093227178e-07, +-2.128030634158482777e-07, +-2.122352423911682840e-07, +-2.116671794091282157e-07, +-2.110988754437165151e-07, +-2.105303314690902107e-07, +-2.099615484596933162e-07, +-2.093925273901814448e-07, +-2.088232692353231033e-07, +-2.082537749702689162e-07, +-2.076840455702045011e-07, +-2.071140820106181045e-07, +-2.065438852672058138e-07, +-2.059734563157651483e-07, +-2.054027961324430287e-07, +-2.048319056935122922e-07, +-2.042607859753939275e-07, +-2.036894379547783063e-07, +-2.031178626085501676e-07, +-2.025460609136914477e-07, +-2.019740338475195609e-07, +-2.014017823874687060e-07, +-2.008293075111124188e-07, +-2.002566101962831889e-07, +-1.996836914209736483e-07, +-1.991105521633609760e-07, +-1.985371934018263801e-07, +-1.979636161148581657e-07, +-1.973898212811956505e-07, +-1.968158098797557646e-07, +-1.962415828895298181e-07, +-1.956671412898321054e-07, +-1.950924860600739856e-07, +-1.945176181797851642e-07, +-1.939425386287408008e-07, +-1.933672483868566362e-07, +-1.927917484342129207e-07, +-1.922160397510783961e-07, +-1.916401233178093661e-07, +-1.910640001149949096e-07, +-1.904876711233605574e-07, +-1.899111373237854972e-07, +-1.893343996973070472e-07, +-1.887574592251391850e-07, +-1.881803168885728622e-07, +-1.876029736691238647e-07, +-1.870254305484329423e-07, +-1.864476885082866404e-07, +-1.858697485306156852e-07, +-1.852916115975231477e-07, +-1.847132786911757585e-07, +-1.841347507939559508e-07, +-1.835560288883614863e-07, +-1.829771139570254934e-07, +-1.823980069827428043e-07, +-1.818187089483656110e-07, +-1.812392208369555612e-07, +-1.806595436316779845e-07, +-1.800796783158279391e-07, +-1.794996258728262409e-07, +-1.789193872862471247e-07, +-1.783389635397110152e-07, +-1.777583556170370455e-07, +-1.771775645021396402e-07, +-1.765965911790533435e-07, +-1.760154366319290344e-07, +-1.754341018450587552e-07, +-1.748525878027730354e-07, +-1.742708954895905249e-07, +-1.736890258901161390e-07, +-1.731069799890626836e-07, +-1.725247587712784103e-07, +-1.719423632216392586e-07, +-1.713597943251769950e-07, +-1.707770530671018193e-07, +-1.701941404325730030e-07, +-1.696110574069513588e-07, +-1.690278049756942082e-07, +-1.684443841242794395e-07, +-1.678607958383568625e-07, +-1.672770411036422230e-07, +-1.666931209059428258e-07, +-1.661090362311815959e-07, +-1.655247880652920195e-07, +-1.649403773943463110e-07, +-1.643558052045758741e-07, +-1.637710724821448262e-07, +-1.631861802133987881e-07, +-1.626011293847636370e-07, +-1.620159209826417978e-07, +-1.614305559936648177e-07, +-1.608450354044627619e-07, +-1.602593602016875857e-07, +-1.596735313721406402e-07, +-1.590875499026920447e-07, +-1.585014167801788052e-07, +-1.579151329916830638e-07, +-1.573286995241736195e-07, +-1.567421173647844159e-07, +-1.561553875007120508e-07, +-1.555685109191094996e-07, +-1.549814886073447254e-07, +-1.543943215527632184e-07, +-1.538070107427149423e-07, +-1.532195571646815213e-07, +-1.526319618061955870e-07, +-1.520442256547385519e-07, +-1.514563496980186216e-07, +-1.508683349236139027e-07, +-1.502801823192487475e-07, +-1.496918928726663810e-07, +-1.491034675716528565e-07, +-1.485149074040336143e-07, +-1.479262133576999513e-07, +-1.473373864205026924e-07, +-1.467484275804060589e-07, +-1.461593378254087886e-07, +-1.455701181434382306e-07, +-1.449807695226074721e-07, +-1.443912929509817168e-07, +-1.438016894166018422e-07, +-1.432119599076129644e-07, +-1.426221054121570226e-07, +-1.420321269184014466e-07, +-1.414420254145580562e-07, +-1.408518018887819727e-07, +-1.402614573293231321e-07, +-1.396709927244223121e-07, +-1.390804090623345045e-07, +-1.384897073313274067e-07, +-1.378988885197074147e-07, +-1.373079536157113357e-07, +-1.367169036076630359e-07, +-1.361257394838654175e-07, +-1.355344622326282382e-07, +-1.349430728422624470e-07, +-1.343515723011084802e-07, +-1.337599615974271000e-07, +-1.331682417195573135e-07, +-1.325764136558073166e-07, +-1.319844783944807791e-07, +-1.313924369239013026e-07, +-1.308002902323059853e-07, +-1.302080393080007999e-07, +-1.296156851392527819e-07, +-1.290232287143185643e-07, +-1.284306710214378924e-07, +-1.278380130488614699e-07, +-1.272452557847437035e-07, +-1.266524002172978686e-07, +-1.260594473346896746e-07, +-1.254663981250628342e-07, +-1.248732535765616693e-07, +-1.242800146772284869e-07, +-1.236866824151540074e-07, +-1.230932577783751912e-07, +-1.224997417548972083e-07, +-1.219061353326935709e-07, +-1.213124394997294796e-07, +-1.207186552438561564e-07, +-1.201247835529410224e-07, +-1.195308254148886892e-07, +-1.189367818174088843e-07, +-1.183426537482718718e-07, +-1.177484421952058683e-07, +-1.171541481457879878e-07, +-1.165597725877314786e-07, +-1.159653165085193811e-07, +-1.153707808956880192e-07, +-1.147761667367216510e-07, +-1.141814750189739196e-07, +-1.135867067297944707e-07, +-1.129918628565561379e-07, +-1.123969443864151791e-07, +-1.118019523065737769e-07, +-1.112068876041725456e-07, +-1.106117512661845057e-07, +-1.100165442797002172e-07, +-1.094212676315622047e-07, +-1.088259223086484095e-07, +-1.082305092977427256e-07, +-1.076350295855819972e-07, +-1.070394841587285664e-07, +-1.064438740038510382e-07, +-1.058482001073607711e-07, +-1.052524634556949182e-07, +-1.046566650352125471e-07, +-1.040608058320867616e-07, +-1.034648868325656944e-07, +-1.028689090227347021e-07, +-1.022728733885421073e-07, +-1.016767809159265843e-07, +-1.010806325907388485e-07, +-1.004844293986340696e-07, +-9.988817232535916174e-08, +-9.929186235638390033e-08, +-9.869550047718751054e-08, +-9.809908767312739038e-08, +-9.750262492946139825e-08, +-9.690611323134798530e-08, +-9.630955356387017703e-08, +-9.571294691192935009e-08, +-9.511629426040066281e-08, +-9.451959659402648787e-08, +-9.392285489744231297e-08, +-9.332607015517292920e-08, +-9.272924335165895376e-08, +-9.213237547114930970e-08, +-9.153546749785718586e-08, +-9.093852041585407835e-08, +-9.034153520909374570e-08, +-8.974451286143678608e-08, +-8.914745435654523456e-08, +-8.855036067803708053e-08, +-8.795323280937983268e-08, +-8.735607173391607556e-08, +-8.675887843486162996e-08, +-8.616165389532887276e-08, +-8.556439909822216809e-08, +-8.496711502639242434e-08, +-8.436980266253146656e-08, +-8.377246298919491950e-08, +-8.317509698880305474e-08, +-8.257770564366358109e-08, +-8.198028993586575228e-08, +-8.138285084743648572e-08, +-8.078538936023289516e-08, +-8.018790645596883992e-08, +-7.959040311623723889e-08, +-7.899288032240462817e-08, +-7.839533905576753130e-08, +-7.779778029744515077e-08, +-7.720020502840417018e-08, +-7.660261422945703374e-08, +-7.600500888128783369e-08, +-7.540738996434350629e-08, +-7.480975845899176374e-08, +-7.421211534541342838e-08, +-7.361446160362731422e-08, +-7.301679821351557186e-08, +-7.241912615471517550e-08, +-7.182144640677713880e-08, +-7.122375994905651957e-08, +-7.062606776073912791e-08, +-7.002837082083911737e-08, +-6.943067010822440920e-08, +-6.883296660150892066e-08, +-6.823526127918347128e-08, +-6.763755511964012187e-08, +-6.703984910093370822e-08, +-6.644214420104352138e-08, +-6.584444139776656828e-08, +-6.524674166861006466e-08, +-6.464904599108096162e-08, +-6.405135534231366129e-08, +-6.345367069935972866e-08, +-6.285599303908108598e-08, +-6.225832333806778438e-08, +-6.166066257276963811e-08, +-6.106301171952066937e-08, +-6.046537175430000677e-08, +-5.986774365299445236e-08, +-5.927012839129079590e-08, +-5.867252694456888358e-08, +-5.807494028819158124e-08, +-5.747736939713159016e-08, +-5.687981524626150291e-08, +-5.628227881022025010e-08, +-5.568476106346419363e-08, +-5.508726298013297788e-08, +-5.448978553433945320e-08, +-5.389232969979800710e-08, +-5.329489645011287974e-08, +-5.269748675867178183e-08, +-5.210010159853821565e-08, +-5.150274194271447207e-08, +-5.090540876390176147e-08, +-5.030810303452545267e-08, +-4.971082572686622405e-08, +-4.911357781297754399e-08, +-4.851636026458017564e-08, +-4.791917405335035995e-08, +-4.732202015054837853e-08, +-4.672489952730811978e-08, +-4.612781315452928073e-08, +-4.553076200277021739e-08, +-4.493374704251168958e-08, +-4.433676924391572128e-08, +-4.373982957685141527e-08, +-4.314292901102586605e-08, +-4.254606851587617637e-08, +-4.194924906059480203e-08, +-4.135247161412785121e-08, +-4.075573714520015799e-08, +-4.015904662220766278e-08, +-3.956240101337469583e-08, +-3.896580128664657605e-08, +-3.836924840971473744e-08, +-3.777274335004135264e-08, +-3.717628707475210384e-08, +-3.657988055079346618e-08, +-3.598352474482527359e-08, +-3.538722062324559369e-08, +-3.479096915218915292e-08, +-3.419477129755223793e-08, +-3.359862802488555254e-08, +-3.300254029955132251e-08, +-3.240650908661555028e-08, +-3.181053535087384953e-08, +-3.121462005687536055e-08, +-3.061876416881586533e-08, +-3.002296865069508418e-08, +-2.942723446620908604e-08, +-2.883156257877533550e-08, +-2.823595395153117408e-08, +-2.764040954735877131e-08, +-2.704493032877765082e-08, +-2.644951725810190760e-08, +-2.585417129733295905e-08, +-2.525889340818438686e-08, +-2.466368455208059703e-08, +-2.406854569018144663e-08, +-2.347347778327504785e-08, +-2.287848179193520030e-08, +-2.228355867641361270e-08, +-2.168870939666508226e-08, +-2.109393491237247551e-08, +-2.049923618283935036e-08, +-1.990461416712054474e-08, +-1.931006982404721039e-08, +-1.871560411198748969e-08, +-1.812121798910904950e-08, +-1.752691241327210689e-08, +-1.693268834194839521e-08, +-1.633854673237833504e-08, +-1.574448854146389440e-08, +-1.515051472579333806e-08, +-1.455662624163982127e-08, +-1.396282404498632267e-08, +-1.336910909139185943e-08, +-1.277548233628076384e-08, +-1.218194473457124946e-08, +-1.158849724096454714e-08, +-1.099514080983765115e-08, +-1.040187639516253006e-08, +-9.808704950636971855e-09, +-9.215627429709099892e-09, +-8.622644785338395483e-09, +-8.029757970258288020e-09, +-7.436967936868926723e-09, +-6.844275637130137688e-09, +-6.251682022850315878e-09, +-5.659188045315376726e-09, +-5.066794655577534805e-09, +-4.474502804348293958e-09, +-3.882313441917720258e-09, +-3.290227518284983105e-09, +-2.698245983183200836e-09, +-2.106369785840382632e-09, +-1.514599875241932424e-09, +-9.229372000235322093e-10, +-3.313827083641105687e-10, + 2.600626517517647888e-10, + 8.513979327728805966e-10, + 1.442622187556450116e-09, + 2.033734469237697670e-09, + 2.624733831310507408e-09, + 3.215619327734416223e-09, + 3.806390012645941056e-09, + 4.397044940729333449e-09, + 4.987583166927956788e-09, + 5.578003746551258958e-09, + 6.168305735381673850e-09, + 6.758488189412552353e-09, + 7.348550165086838696e-09, + 7.938490719272188859e-09, + 8.528308909130698724e-09, + 9.118003792225763402e-09, + 9.707574426497215494e-09, + 1.029701987023653366e-08, + 1.088633918219351251e-08, + 1.147553142141983121e-08, + 1.206459564737594998e-08, + 1.265353091990602836e-08, + 1.324233629923956299e-08, + 1.383101084596655406e-08, + 1.441955362114405934e-08, + 1.500796368614004071e-08, + 1.559624010273977929e-08, + 1.618438193312143885e-08, + 1.677238823985705351e-08, + 1.736025808588807292e-08, + 1.794799053463183368e-08, + 1.853558464982529164e-08, + 1.912303949563169849e-08, + 1.971035413661571679e-08, + 2.029752763771850532e-08, + 2.088455906436472981e-08, + 2.147144748230571288e-08, + 2.205819195772644482e-08, + 2.264479155722066885e-08, + 2.323124534779231053e-08, + 2.381755239683065899e-08, + 2.440371177221679867e-08, + 2.498972254216787760e-08, + 2.557558377534293033e-08, + 2.616129454081871431e-08, + 2.674685390809084809e-08, + 2.733226094704896613e-08, + 2.791751472808323979e-08, + 2.850261432192854645e-08, + 2.908755879977046114e-08, + 2.967234723322101015e-08, + 3.025697869429337596e-08, + 3.084145225550847769e-08, + 3.142576698976531559e-08, + 3.200992197031616882e-08, + 3.259391627100389039e-08, + 3.317774896600129237e-08, + 3.376141912991779260e-08, + 3.434492583787855934e-08, + 3.492826816536974248e-08, + 3.551144518834386293e-08, + 3.609445598319573180e-08, + 3.667729962676350252e-08, + 3.725997519630394145e-08, + 3.784248176962491580e-08, + 3.842481842479886482e-08, + 3.900698424053037242e-08, + 3.958897829587020090e-08, + 4.017079967032085246e-08, + 4.075244744391697110e-08, + 4.133392069709560768e-08, + 4.191521851067168236e-08, + 4.249633996607507449e-08, + 4.307728414508984889e-08, + 4.365805012996067104e-08, + 4.423863700349867956e-08, + 4.481904384879587063e-08, + 4.539926974959159864e-08, + 4.597931378998700028e-08, + 4.655917505455124427e-08, + 4.713885262840051720e-08, + 4.771834559706934064e-08, + 4.829765304648617929e-08, + 4.887677406320908818e-08, + 4.945570773416632205e-08, + 5.003445314676301520e-08, + 5.061300938898501580e-08, + 5.119137554914199007e-08, + 5.176955071610153424e-08, + 5.234753397926513338e-08, + 5.292532442843916755e-08, + 5.350292115394107546e-08, + 5.408032324657400303e-08, + 5.465752979760241813e-08, + 5.523453989885817496e-08, + 5.581135264258473942e-08, + 5.638796712151734622e-08, + 5.696438242898804417e-08, + 5.754059765866780776e-08, + 5.811661190480094692e-08, + 5.869242426218098640e-08, + 5.926803382602251899e-08, + 5.984343969206554935e-08, + 6.041864095655165801e-08, + 6.099363671619937782e-08, + 6.156842606830886213e-08, + 6.214300811060858500e-08, + 6.271738194135928807e-08, + 6.329154665933009154e-08, + 6.386550136380042654e-08, + 6.443924515453449169e-08, + 6.501277713188631175e-08, + 6.558609639664668929e-08, + 6.615920205014720448e-08, + 6.673209319423602172e-08, + 6.730476893127945133e-08, + 6.787722836413759739e-08, + 6.844947059626817217e-08, + 6.902149473157413611e-08, + 6.959329987450726084e-08, + 7.016488513004458428e-08, + 7.073624960366362172e-08, + 7.130739240144633908e-08, + 7.187831262992664733e-08, + 7.244900939619514334e-08, + 7.301948180787336808e-08, + 7.358972897311632122e-08, + 7.415975000058760600e-08, + 7.472954399956373340e-08, + 7.529911007978166948e-08, + 7.586844735154172335e-08, + 7.643755492568547144e-08, + 7.700643191359469866e-08, + 7.757507742716844910e-08, + 7.814349057892685380e-08, + 7.871167048185833388e-08, + 7.927961624952328270e-08, + 7.984732699603075919e-08, + 8.041480183601352691e-08, + 8.098203988473159052e-08, + 8.154904025794614673e-08, + 8.211580207189458359e-08, + 8.268232444352340130e-08, + 8.324860649023230242e-08, + 8.381464732997873419e-08, + 8.438044608135537890e-08, + 8.494600186343927607e-08, + 8.551131379589336058e-08, + 8.607638099894447948e-08, + 8.664120259335739868e-08, + 8.720577770053959682e-08, + 8.777010544241395884e-08, + 8.833418494139504585e-08, + 8.889801532062081157e-08, + 8.946159570369690422e-08, + 9.002492521480232073e-08, + 9.058800297876512346e-08, + 9.115082812093782053e-08, + 9.171339976717277538e-08, + 9.227571704405237472e-08, + 9.283777907863599070e-08, + 9.339958499856407331e-08, + 9.396113393215952963e-08, + 9.452242500815036024e-08, + 9.508345735602607481e-08, + 9.564423010576129468e-08, + 9.620474238791619239e-08, + 9.676499333371576871e-08, + 9.732498207492433296e-08, + 9.788470774381988020e-08, + 9.844416947342521217e-08, + 9.900336639725458177e-08, + 9.956229764941758694e-08, + 1.001209623647209999e-07, + 1.006793596783908742e-07, + 1.012374887264309588e-07, + 1.017953486453416021e-07, + 1.023529385722513466e-07, + 1.029102576448898766e-07, + 1.034673050015922803e-07, + 1.040240797812721689e-07, + 1.045805811235260083e-07, + 1.051368081684822006e-07, + 1.056927600568786281e-07, + 1.062484359301641514e-07, + 1.068038349302474506e-07, + 1.073589561997266644e-07, + 1.079137988818639656e-07, + 1.084683621204618942e-07, + 1.090226450599643001e-07, + 1.095766468454342276e-07, + 1.101303666225289673e-07, + 1.106838035376002183e-07, + 1.112369567375486627e-07, + 1.117898253698960167e-07, + 1.123424085828910948e-07, + 1.128947055252560573e-07, + 1.134467153464164330e-07, + 1.139984371964770178e-07, + 1.145498702260956012e-07, + 1.151010135865870319e-07, + 1.156518664298976750e-07, + 1.162024279086082433e-07, + 1.167526971759082549e-07, + 1.173026733856989737e-07, + 1.178523556924441994e-07, + 1.184017432512709188e-07, + 1.189508352179457343e-07, + 1.194996307488521796e-07, + 1.200481290010902195e-07, + 1.205963291323293160e-07, + 1.211442303009080607e-07, + 1.216918316658122842e-07, + 1.222391323866748973e-07, + 1.227861316237517773e-07, + 1.233328285380249732e-07, + 1.238792222910513783e-07, + 1.244253120450669680e-07, + 1.249710969629598537e-07, + 1.255165762082495571e-07, + 1.260617489451861655e-07, + 1.266066143386021546e-07, + 1.271511715540138467e-07, + 1.276954197575981703e-07, + 1.282393581161921046e-07, + 1.287829857972717412e-07, + 1.293263019690497203e-07, + 1.298693058003554540e-07, + 1.304119964606099543e-07, + 1.309543731200494492e-07, + 1.314964349494809348e-07, + 1.320381811203805101e-07, + 1.325796108049702984e-07, + 1.331207231760695548e-07, + 1.336615174071978190e-07, + 1.342019926725478365e-07, + 1.347421481469643827e-07, + 1.352819830060435250e-07, + 1.358214964260105439e-07, + 1.363606875836964544e-07, + 1.368995556567613840e-07, + 1.374380998234484842e-07, + 1.379763192626858909e-07, + 1.385142131541588024e-07, + 1.390517806781652190e-07, + 1.395890210157143043e-07, + 1.401259333485040187e-07, + 1.406625168589219132e-07, + 1.411987707300207508e-07, + 1.417346941456456146e-07, + 1.422702862901611363e-07, + 1.428055463487985419e-07, + 1.433404735073867713e-07, + 1.438750669524515816e-07, + 1.444093258712895561e-07, + 1.449432494518492555e-07, + 1.454768368827037946e-07, + 1.460100873532773184e-07, + 1.465430000535968740e-07, + 1.470755741743954310e-07, + 1.476078089072066168e-07, + 1.481397034441021632e-07, + 1.486712569780296602e-07, + 1.492024687025500824e-07, + 1.497333378119577758e-07, + 1.502638635012589119e-07, + 1.507940449661709579e-07, + 1.513238814031018190e-07, + 1.518533720092467702e-07, + 1.523825159824434819e-07, + 1.529113125212470346e-07, + 1.534397608250292870e-07, + 1.539678600937344537e-07, + 1.544956095281003135e-07, + 1.550230083296359215e-07, + 1.555500557004997423e-07, + 1.560767508435992030e-07, + 1.566030929625668705e-07, + 1.571290812617375016e-07, + 1.576547149462472525e-07, + 1.581799932218876180e-07, + 1.587049152951802619e-07, + 1.592294803734746639e-07, + 1.597536876647081973e-07, + 1.602775363776242404e-07, + 1.608010257217487769e-07, + 1.613241549072717057e-07, + 1.618469231451443285e-07, + 1.623693296470549984e-07, + 1.628913736254327458e-07, + 1.634130542934232173e-07, + 1.639343708649838348e-07, + 1.644553225547452791e-07, + 1.649759085781038162e-07, + 1.654961281512039072e-07, + 1.660159804909099116e-07, + 1.665354648149063021e-07, + 1.670545803415535103e-07, + 1.675733262899874792e-07, + 1.680917018800929290e-07, + 1.686097063325071688e-07, + 1.691273388685987881e-07, + 1.696445987105594014e-07, + 1.701614850812665081e-07, + 1.706779972043762955e-07, + 1.711941343043043955e-07, + 1.717098956062005262e-07, + 1.722252803360451598e-07, + 1.727402877205107152e-07, + 1.732549169870530372e-07, + 1.737691673638929735e-07, + 1.742830380800151313e-07, + 1.747965283651460388e-07, + 1.753096374498507606e-07, + 1.758223645654132805e-07, + 1.763347089438172578e-07, + 1.768466698179577330e-07, + 1.773582464214062082e-07, + 1.778694379885069972e-07, + 1.783802437544473438e-07, + 1.788906629551200705e-07, + 1.794006948272159840e-07, + 1.799103386082022234e-07, + 1.804195935363027251e-07, + 1.809284588505879819e-07, + 1.814369337908638438e-07, + 1.819450175976449685e-07, + 1.824527095123708676e-07, + 1.829600087771695583e-07, + 1.834669146349536486e-07, + 1.839734263294914614e-07, + 1.844795431052688359e-07, + 1.849852642075823014e-07, + 1.854905888825161277e-07, + 1.859955163769454752e-07, + 1.865000459385138160e-07, + 1.870041768157487926e-07, + 1.875079082578082395e-07, + 1.880112395148093094e-07, + 1.885141698375688834e-07, + 1.890166984777022242e-07, + 1.895188246877132113e-07, + 1.900205477207663571e-07, + 1.905218668308960239e-07, + 1.910227812729819393e-07, + 1.915232903026378380e-07, + 1.920233931762804152e-07, + 1.925230891512210714e-07, + 1.930223774854164608e-07, + 1.935212574377897022e-07, + 1.940197282679796572e-07, + 1.945177892364335216e-07, + 1.950154396044988078e-07, + 1.955126786341976370e-07, + 1.960095055884304770e-07, + 1.965059197309569784e-07, + 1.970019203262813864e-07, + 1.974975066397229775e-07, + 1.979926779375078032e-07, + 1.984874334865416855e-07, + 1.989817725546173163e-07, + 1.994756944103911231e-07, + 1.999691983232718572e-07, + 2.004622835635108031e-07, + 2.009549494021819790e-07, + 2.014471951111603521e-07, + 2.019390199632112802e-07, + 2.024304232318585861e-07, + 2.029214041914532200e-07, + 2.034119621172614575e-07, + 2.039020962852440087e-07, + 2.043918059722574533e-07, + 2.048810904560343884e-07, + 2.053699490150713290e-07, + 2.058583809287190757e-07, + 2.063463854771627831e-07, + 2.068339619413987457e-07, + 2.073211096033260892e-07, + 2.078078277456132040e-07, + 2.082941156517889073e-07, + 2.087799726062202082e-07, + 2.092653978941124139e-07, + 2.097503908014919238e-07, + 2.102349506152914895e-07, + 2.107190766232191091e-07, + 2.112027681138505662e-07, + 2.116860243766055802e-07, + 2.121688447017480980e-07, + 2.126512283803681349e-07, + 2.131331747044688610e-07, + 2.136146829668372164e-07, + 2.140957524611304148e-07, + 2.145763824818569378e-07, + 2.150565723243539035e-07, + 2.155363212848782550e-07, + 2.160156286604751523e-07, + 2.164944937490630994e-07, + 2.169729158494214241e-07, + 2.174508942611819661e-07, + 2.179284282848135664e-07, + 2.184055172217090991e-07, + 2.188821603740565644e-07, + 2.193583570449252470e-07, + 2.198341065382457056e-07, + 2.203094081588113607e-07, + 2.207842612122587215e-07, + 2.212586650051526986e-07, + 2.217326188448585690e-07, + 2.222061220396305181e-07, + 2.226791738985891136e-07, + 2.231517737317016913e-07, + 2.236239208498713204e-07, + 2.240956145648276682e-07, + 2.245668541891055598e-07, + 2.250376390362433955e-07, + 2.255079684205654900e-07, + 2.259778416572702429e-07, + 2.264472580624972132e-07, + 2.269162169531950354e-07, + 2.273847176472146722e-07, + 2.278527594632815155e-07, + 2.283203417210019243e-07, + 2.287874637408404609e-07, + 2.292541248442281258e-07, + 2.297203243533269353e-07, + 2.301860615913340593e-07, + 2.306513358822421641e-07, + 2.311161465509302565e-07, + 2.315804929232491549e-07, + 2.320443743258055751e-07, + 2.325077900861591979e-07, + 2.329707395328016786e-07, + 2.334332219950494443e-07, + 2.338952368031076981e-07, + 2.343567832881620040e-07, + 2.348178607821366979e-07, + 2.352784686180022540e-07, + 2.357386061295345162e-07, + 2.361982726514057540e-07, + 2.366574675192710332e-07, + 2.371161900695524345e-07, + 2.375744396396325739e-07, + 2.380322155678397003e-07, + 2.384895171933342726e-07, + 2.389463438561782308e-07, + 2.394026948974198319e-07, + 2.398585696588607951e-07, + 2.403139674833559134e-07, + 2.407688877145773667e-07, + 2.412233296971258945e-07, + 2.416772927765077677e-07, + 2.421307762991336764e-07, + 2.425837796123035368e-07, + 2.430363020642897116e-07, + 2.434883430042085260e-07, + 2.439399017820885067e-07, + 2.443909777489540266e-07, + 2.448415702566149758e-07, + 2.452916786578569731e-07, + 2.457413023064233143e-07, + 2.461904405569077160e-07, + 2.466390927648415605e-07, + 2.470872582866726667e-07, + 2.475349364797457025e-07, + 2.479821267023873647e-07, + 2.484288283137803299e-07, + 2.488750406740479046e-07, + 2.493207631442359733e-07, + 2.497659950863120978e-07, + 2.502107358631446599e-07, + 2.506549848385889933e-07, + 2.510987413773647759e-07, + 2.515420048451354393e-07, + 2.519847746084916513e-07, + 2.524270500349511044e-07, + 2.528688304929399340e-07, + 2.533101153518748803e-07, + 2.537509039820396749e-07, + 2.541911957546693733e-07, + 2.546309900419338904e-07, + 2.550702862169114782e-07, + 2.555090836536764468e-07, + 2.559473817271761321e-07, + 2.563851798133126881e-07, + 2.568224772889242402e-07, + 2.572592735317859441e-07, + 2.576955679205917743e-07, + 2.581313598350324515e-07, + 2.585666486556780753e-07, + 2.590014337640594394e-07, + 2.594357145426483384e-07, + 2.598694903748577262e-07, + 2.603027606450221286e-07, + 2.607355247384839877e-07, + 2.611677820414658128e-07, + 2.615995319411564719e-07, + 2.620307738256909159e-07, + 2.624615070841300086e-07, + 2.628917311065439593e-07, + 2.633214452839106263e-07, + 2.637506490080952935e-07, + 2.641793416720374943e-07, + 2.646075226695440713e-07, + 2.650351913953748845e-07, + 2.654623472453022633e-07, + 2.658889896159922098e-07, + 2.663151179050841257e-07, + 2.667407315111722304e-07, + 2.671658298337883563e-07, + 2.675904122734796102e-07, + 2.680144782317105947e-07, + 2.684380271108435024e-07, + 2.688610583143209696e-07, + 2.692835712464647468e-07, + 2.697055653125565904e-07, + 2.701270399189196309e-07, + 2.705479944727219143e-07, + 2.709684283821514201e-07, + 2.713883410564006028e-07, + 2.718077319055676071e-07, + 2.722266003407145540e-07, + 2.726449457739504974e-07, + 2.730627676182110364e-07, + 2.734800652875409067e-07, + 2.738968381968713172e-07, + 2.743130857621050233e-07, + 2.747288074001913957e-07, + 2.751440025289348848e-07, + 2.755586705671694036e-07, + 2.759728109347391637e-07, + 2.763864230524062427e-07, + 2.767995063419041593e-07, + 2.772120602260191882e-07, + 2.776240841283781783e-07, + 2.780355774737183328e-07, + 2.784465396876780982e-07, + 2.788569701968923492e-07, + 2.792668684289727484e-07, + 2.796762338125146281e-07, + 2.800850657770699917e-07, + 2.804933637532309460e-07, + 2.809011271725137107e-07, + 2.813083554674163756e-07, + 2.817150480714966155e-07, + 2.821212044191798380e-07, + 2.825268239459372183e-07, + 2.829319060882599713e-07, + 2.833364502835696186e-07, + 2.837404559702928983e-07, + 2.841439225878427594e-07, + 2.845468495766047567e-07, + 2.849492363780076187e-07, + 2.853510824344121281e-07, + 2.857523871891928599e-07, + 2.861531500867115532e-07, + 2.865533705723230404e-07, + 2.869530480923563474e-07, + 2.873521820941887564e-07, + 2.877507720261379151e-07, + 2.881488173375312933e-07, + 2.885463174786967066e-07, + 2.889432719009544284e-07, + 2.893396800566042731e-07, + 2.897355413989997109e-07, + 2.901308553824369068e-07, + 2.905256214622279889e-07, + 2.909198390946872311e-07, + 2.913135077371104067e-07, + 2.917066268478491158e-07, + 2.920991958862022586e-07, + 2.924912143124885104e-07, + 2.928826815880315508e-07, + 2.932735971751573642e-07, + 2.936639605371799990e-07, + 2.940537711384720300e-07, + 2.944430284443599500e-07, + 2.948317319211921968e-07, + 2.952198810363271894e-07, + 2.956074752581105106e-07, + 2.959945140559545814e-07, + 2.963809969002240463e-07, + 2.967669232623122187e-07, + 2.971522926146268398e-07, + 2.975371044305816080e-07, + 2.979213581845887150e-07, + 2.983050533521251789e-07, + 2.986881894096468169e-07, + 2.990707658345681291e-07, + 2.994527821054283693e-07, + 2.998342377017084800e-07, + 3.002151321039080671e-07, + 3.005954647936146970e-07, + 3.009752352533057974e-07, + 3.013544429666050431e-07, + 3.017330874180829862e-07, + 3.021111680933272003e-07, + 3.024886844790022617e-07, + 3.028656360627583751e-07, + 3.032420223332100926e-07, + 3.036178427801045019e-07, + 3.039930968941375267e-07, + 3.043677841670311121e-07, + 3.047419040916007759e-07, + 3.051154561615617964e-07, + 3.054884398717826874e-07, + 3.058608547180829689e-07, + 3.062327001973290937e-07, + 3.066039758073946367e-07, + 3.069746810472549508e-07, + 3.073448154167871087e-07, + 3.077143784170242769e-07, + 3.080833695499551282e-07, + 3.084517883186030390e-07, + 3.088196342270897228e-07, + 3.091869067804633352e-07, + 3.095536054848584576e-07, + 3.099197298474769859e-07, + 3.102852793765011506e-07, + 3.106502535811469860e-07, + 3.110146519717395043e-07, + 3.113784740595107841e-07, + 3.117417193568551920e-07, + 3.121043873771315475e-07, + 3.124664776347550790e-07, + 3.128279896451778361e-07, + 3.131889229248895368e-07, + 3.135492769914034325e-07, + 3.139090513633244414e-07, + 3.142682455602436394e-07, + 3.146268591028121646e-07, + 3.149848915127207818e-07, + 3.153423423127042772e-07, + 3.156992110265214465e-07, + 3.160554971790247112e-07, + 3.164112002960630268e-07, + 3.167663199045426047e-07, + 3.171208555324160070e-07, + 3.174748067086644111e-07, + 3.178281729633655846e-07, + 3.181809538275939882e-07, + 3.185331488334858912e-07, + 3.188847575142295250e-07, + 3.192357794040584655e-07, + 3.195862140382386101e-07, + 3.199360609531361518e-07, + 3.202853196861175767e-07, + 3.206339897756158382e-07, + 3.209820707611160108e-07, + 3.213295621831522190e-07, + 3.216764635833008085e-07, + 3.220227745042333386e-07, + 3.223684944896299731e-07, + 3.227136230842386138e-07, + 3.230581598338634654e-07, + 3.234021042853460304e-07, + 3.237454559866330835e-07, + 3.240882144866810097e-07, + 3.244303793355149376e-07, + 3.247719500842207990e-07, + 3.251129262849388168e-07, + 3.254533074908554056e-07, + 3.257930932562609286e-07, + 3.261322831364593827e-07, + 3.264708766878283791e-07, + 3.268088734678090847e-07, + 3.271462730348840405e-07, + 3.274830749486490535e-07, + 3.278192787697098586e-07, + 3.281548840597547519e-07, + 3.284898903815331499e-07, + 3.288242972988573367e-07, + 3.291581043765891759e-07, + 3.294913111807044327e-07, + 3.298239172782085994e-07, + 3.301559222371263079e-07, + 3.304873256266467544e-07, + 3.308181270169580518e-07, + 3.311483259793166860e-07, + 3.314779220861142203e-07, + 3.318069149106931711e-07, + 3.321353040275804186e-07, + 3.324630890123073713e-07, + 3.327902694414740226e-07, + 3.331168448927992434e-07, + 3.334428149450406848e-07, + 3.337681791779787371e-07, + 3.340929371725631726e-07, + 3.344170885107503034e-07, + 3.347406327755692090e-07, + 3.350635695511869044e-07, + 3.353858984227305166e-07, + 3.357076189765157718e-07, + 3.360287307998647769e-07, + 3.363492334811972878e-07, + 3.366691266099868222e-07, + 3.369884097768489630e-07, + 3.373070825733637989e-07, + 3.376251445923006001e-07, + 3.379425954274413172e-07, + 3.382594346736472330e-07, + 3.385756619269173540e-07, + 3.388912767842424037e-07, + 3.392062788437329890e-07, + 3.395206677046127180e-07, + 3.398344429671396908e-07, + 3.401476042326508098e-07, + 3.404601511036268953e-07, + 3.407720831835221676e-07, + 3.410834000769827278e-07, + 3.413941013896711699e-07, + 3.417041867283373602e-07, + 3.420136557008734421e-07, + 3.423225079161632228e-07, + 3.426307429842227277e-07, + 3.429383605161797132e-07, + 3.432453601242061682e-07, + 3.435517414215716247e-07, + 3.438575040226309288e-07, + 3.441626475428268341e-07, + 3.444671715986743324e-07, + 3.447710758078190455e-07, + 3.450743597889497164e-07, + 3.453770231618591953e-07, + 3.456790655474284525e-07, + 3.459804865676136602e-07, + 3.462812858455010920e-07, + 3.465814630052262830e-07, + 3.468810176720282408e-07, + 3.471799494722356808e-07, + 3.474782580332691968e-07, + 3.477759429836280262e-07, + 3.480730039529442069e-07, + 3.483694405718993568e-07, + 3.486652524722823242e-07, + 3.489604392869742070e-07, + 3.492550006499359107e-07, + 3.495489361962665948e-07, + 3.498422455621130392e-07, + 3.501349283847355550e-07, + 3.504269843024860666e-07, + 3.507184129548126123e-07, + 3.510092139822454205e-07, + 3.512993870264524971e-07, + 3.515889317301576740e-07, + 3.518778477371922792e-07, + 3.521661346924902125e-07, + 3.524537922420793699e-07, + 3.527408200330712673e-07, + 3.530272177137210737e-07, + 3.533129849333386730e-07, + 3.535981213423459446e-07, + 3.538826265922659108e-07, + 3.541665003357087075e-07, + 3.544497422264250007e-07, + 3.547323519192384353e-07, + 3.550143290700316592e-07, + 3.552956733358721074e-07, + 3.555763843748738832e-07, + 3.558564618462536621e-07, + 3.561359054103706609e-07, + 3.564147147286472819e-07, + 3.566928894636221577e-07, + 3.569704292789353816e-07, + 3.572473338393341718e-07, + 3.575236028106532838e-07, + 3.577992358598885437e-07, + 3.580742326550446466e-07, + 3.583485928653270099e-07, + 3.586223161609924304e-07, + 3.588954022134033479e-07, + 3.591678506950677082e-07, + 3.594396612795748534e-07, + 3.597108336415793227e-07, + 3.599813674569244659e-07, + 3.602512624025059654e-07, + 3.605205181563300167e-07, + 3.607891343975630386e-07, + 3.610571108063858780e-07, + 3.613244470641810036e-07, + 3.615911428533890931e-07, + 3.618571978575577904e-07, + 3.621226117613840573e-07, + 3.623873842506542985e-07, + 3.626515150122170983e-07, + 3.629150037341164163e-07, + 3.631778501054528853e-07, + 3.634400538164382340e-07, + 3.637016145584485435e-07, + 3.639625320238925341e-07, + 3.642228059063323731e-07, + 3.644824359004670519e-07, + 3.647414217020694410e-07, + 3.649997630080253062e-07, + 3.652574595163868306e-07, + 3.655145109262269779e-07, + 3.657709169378257337e-07, + 3.660266772525230925e-07, + 3.662817915727766558e-07, + 3.665362596022077425e-07, + 3.667900810454767161e-07, + 3.670432556083964873e-07, + 3.672957829979224027e-07, + 3.675476629220880816e-07, + 3.677988950900530619e-07, + 3.680494792120972944e-07, + 3.682994149996022961e-07, + 3.685487021651041960e-07, + 3.687973404222192487e-07, + 3.690453294856937568e-07, + 3.692926690713920004e-07, + 3.695393588962957609e-07, + 3.697853986784911387e-07, + 3.700307881372245637e-07, + 3.702755269928187798e-07, + 3.705196149667322432e-07, + 3.707630517815395350e-07, + 3.710058371609358080e-07, + 3.712479708297234986e-07, + 3.714894525138606080e-07, + 3.717302819403930454e-07, + 3.719704588374949678e-07, + 3.722099829344635921e-07, + 3.724488539617022542e-07, + 3.726870716507752547e-07, + 3.729246357343286610e-07, + 3.731615459461433531e-07, + 3.733978020211254410e-07, + 3.736334036952992775e-07, + 3.738683507057997279e-07, + 3.741026427909207169e-07, + 3.743362796900442353e-07, + 3.745692611436860281e-07, + 3.748015868934850584e-07, + 3.750332566822017083e-07, + 3.752642702537134905e-07, + 3.754946273530522646e-07, + 3.757243277263408687e-07, + 3.759533711208374298e-07, + 3.761817572849237170e-07, + 3.764094859680953479e-07, + 3.766365569210076866e-07, + 3.768629698954189346e-07, + 3.770887246441763656e-07, + 3.773138209213220995e-07, + 3.775382584819781169e-07, + 3.777620370823921587e-07, + 3.779851564799722416e-07, + 3.782076164332178903e-07, + 3.784294167017683654e-07, + 3.786505570463868343e-07, + 3.788710372289659297e-07, + 3.790908570125114975e-07, + 3.793100161612020479e-07, + 3.795285144402650883e-07, + 3.797463516161354126e-07, + 3.799635274563274645e-07, + 3.801800417294876938e-07, + 3.803958942054213977e-07, + 3.806110846550390923e-07, + 3.808256128503468250e-07, + 3.810394785645474479e-07, + 3.812526815719267445e-07, + 3.814652216478971582e-07, + 3.816770985690483494e-07, + 3.818883121130208816e-07, + 3.820988620586598521e-07, + 3.823087481858959368e-07, + 3.825179702757904947e-07, + 3.827265281105677551e-07, + 3.829344214735586490e-07, + 3.831416501491903795e-07, + 3.833482139230900251e-07, + 3.835541125819680193e-07, + 3.837593459136658491e-07, + 3.839639137071975602e-07, + 3.841678157526453064e-07, + 3.843710518412542181e-07, + 3.845736217654187963e-07, + 3.847755253186379142e-07, + 3.849767622955476396e-07, + 3.851773324919168411e-07, + 3.853772357046365999e-07, + 3.855764717317591208e-07, + 3.857750403724371159e-07, + 3.859729414269556746e-07, + 3.861701746967760974e-07, + 3.863667399844245112e-07, + 3.865626370935928248e-07, + 3.867578658291267118e-07, + 3.869524259969718239e-07, + 3.871463174042172545e-07, + 3.873395398590836799e-07, + 3.875320931709143598e-07, + 3.877239771502200301e-07, + 3.879151916086079637e-07, + 3.881057363588308867e-07, + 3.882956112147761789e-07, + 3.884848159914629618e-07, + 3.886733505050320936e-07, + 3.888612145727888376e-07, + 3.890484080131453707e-07, + 3.892349306456540290e-07, + 3.894207822909994728e-07, + 3.896059627710027629e-07, + 3.897904719086086555e-07, + 3.899743095279230826e-07, + 3.901574754541597898e-07, + 3.903399695136726819e-07, + 3.905217915339533348e-07, + 3.907029413436150077e-07, + 3.908834187724360538e-07, + 3.910632236512997805e-07, + 3.912423558122318783e-07, + 3.914208150883940146e-07, + 3.915986013140809220e-07, + 3.917757143247168518e-07, + 3.919521539568833670e-07, + 3.921279200482707964e-07, + 3.923030124377140226e-07, + 3.924774309651820518e-07, + 3.926511754717788620e-07, + 3.928242457997329198e-07, + 3.929966417924390036e-07, + 3.931683632943944639e-07, + 3.933394101512443808e-07, + 3.935097822097671646e-07, + 3.936794793178663500e-07, + 3.938485013246111478e-07, + 3.940168480801840347e-07, + 3.941845194358763597e-07, + 3.943515152441723057e-07, + 3.945178353586520634e-07, + 3.946834796340314299e-07, + 3.948484479261876434e-07, + 3.950127400921087198e-07, + 3.951763559899246345e-07, + 3.953392954789018689e-07, + 3.955015584194354704e-07, + 3.956631446730786448e-07, + 3.958240541025037404e-07, + 3.959842865714933008e-07, + 3.961438419450167218e-07, + 3.963027200891447006e-07, + 3.964609208710827471e-07, + 3.966184441591963295e-07, + 3.967752898229738702e-07, + 3.969314577330088520e-07, + 3.970869477610842035e-07, + 3.972417597800815081e-07, + 3.973958936640217673e-07, + 3.975493492880912353e-07, + 3.977021265285529568e-07, + 3.978542252628698518e-07, + 3.980056453696009008e-07, + 3.981563867284404260e-07, + 3.983064492202477908e-07, + 3.984558327269970006e-07, + 3.986045371317724684e-07, + 3.987525623188457237e-07, + 3.988999081735917153e-07, + 3.990465745825162869e-07, + 3.991925614332986344e-07, + 3.993378686146903505e-07, + 3.994824960166398855e-07, + 3.996264435301959854e-07, + 3.997697110475518436e-07, + 3.999122984620329248e-07, + 4.000542056681065472e-07, + 4.001954325613598063e-07, + 4.003359790385413446e-07, + 4.004758449975119589e-07, + 4.006150303372658290e-07, + 4.007535349579651930e-07, + 4.008913587608568620e-07, + 4.010285016483503054e-07, + 4.011649635240034108e-07, + 4.013007442924825669e-07, + 4.014358438596000394e-07, + 4.015702621323024297e-07, + 4.017039990186605111e-07, + 4.018370544279058092e-07, + 4.019694282703778221e-07, + 4.021011204575547775e-07, + 4.022321309020747032e-07, + 4.023624595176678757e-07, + 4.024921062192190776e-07, + 4.026210709227638917e-07, + 4.027493535454479372e-07, + 4.028769540055575753e-07, + 4.030038722225176321e-07, + 4.031301081168795406e-07, + 4.032556616103271639e-07, + 4.033805326256960653e-07, + 4.035047210869338562e-07, + 4.036282269191310075e-07, + 4.037510500485070319e-07, + 4.038731904024147724e-07, + 4.039946479093549072e-07, + 4.041154224989397926e-07, + 4.042355141019277144e-07, + 4.043549226502026123e-07, + 4.044736480767856737e-07, + 4.045916903158228398e-07, + 4.047090493026105343e-07, + 4.048257249735634232e-07, + 4.049417172662282850e-07, + 4.050570261192884047e-07, + 4.051716514725502858e-07, + 4.052855932669731908e-07, + 4.053988514446286423e-07, + 4.055114259487239812e-07, + 4.056233167236025783e-07, + 4.057345237147370053e-07, + 4.058450468687228408e-07, + 4.059548861333094280e-07, + 4.060640414573621819e-07, + 4.061725127908594660e-07, + 4.062803000849479669e-07, + 4.063874032918786373e-07, + 4.064938223650381425e-07, + 4.065995572589554245e-07, + 4.067046079292758677e-07, + 4.068089743327794572e-07, + 4.069126564273749023e-07, + 4.070156541720975722e-07, + 4.071179675271272303e-07, + 4.072195964537673353e-07, + 4.073205409144254004e-07, + 4.074208008726792205e-07, + 4.075203762932085806e-07, + 4.076192671418250074e-07, + 4.077174733854846869e-07, + 4.078149949922543711e-07, + 4.079118319313395948e-07, + 4.080079841730682645e-07, + 4.081034516888999227e-07, + 4.081982344514150012e-07, + 4.082923324343462671e-07, + 4.083857456125131779e-07, + 4.084784739619021377e-07, + 4.085705174596034466e-07, + 4.086618760838388814e-07, + 4.087525498139691610e-07, + 4.088425386304729818e-07, + 4.089318425149387591e-07, + 4.090204614501137024e-07, + 4.091083954198505579e-07, + 4.091956444091258198e-07, + 4.092822084040680002e-07, + 4.093680873918898661e-07, + 4.094532813609675315e-07, + 4.095377903007834412e-07, + 4.096216142019464879e-07, + 4.097047530561955595e-07, + 4.097872068563892151e-07, + 4.098689755965083328e-07, + 4.099500592716755381e-07, + 4.100304578781171403e-07, + 4.101101714131872733e-07, + 4.101891998753828771e-07, + 4.102675432642931936e-07, + 4.103452015806474123e-07, + 4.104221748263053528e-07, + 4.104984630042398892e-07, + 4.105740661185470608e-07, + 4.106489841744455966e-07, + 4.107232171782735794e-07, + 4.107967651375036397e-07, + 4.108696280607175448e-07, + 4.109418059576158336e-07, + 4.110132988390447630e-07, + 4.110841067169378626e-07, + 4.111542296043660684e-07, + 4.112236675155306817e-07, + 4.112924204657375880e-07, + 4.113604884714193853e-07, + 4.114278715501276550e-07, + 4.114945697205333326e-07, + 4.115605830024237430e-07, + 4.116259114167196472e-07, + 4.116905549854419429e-07, + 4.117545137317432701e-07, + 4.118177876798854579e-07, + 4.118803768552522840e-07, + 4.119422812843514856e-07, + 4.120035009948037483e-07, + 4.120640360153436591e-07, + 4.121238863758285998e-07, + 4.121830521072280009e-07, + 4.122415332416281058e-07, + 4.122993298122416055e-07, + 4.123564418533869930e-07, + 4.124128694004979328e-07, + 4.124686124901326316e-07, + 4.125236711599515507e-07, + 4.125780454487483755e-07, + 4.126317353964151286e-07, + 4.126847410439668922e-07, + 4.127370624335277266e-07, + 4.127886996083405695e-07, + 4.128396526127556955e-07, + 4.128899214922510976e-07, + 4.129395062934047470e-07, + 4.129884070639019516e-07, + 4.130366238525590732e-07, + 4.130841567092920808e-07, + 4.131310056851271392e-07, + 4.131771708322177082e-07, + 4.132226522038111904e-07, + 4.132674498542738662e-07, + 4.133115638390821585e-07, + 4.133549942148181327e-07, + 4.133977410391871791e-07, + 4.134398043709945070e-07, + 4.134811842701453041e-07, + 4.135218807976782996e-07, + 4.135618940157233075e-07, + 4.136012239875195428e-07, + 4.136398707774272688e-07, + 4.136778344509009564e-07, + 4.137151150745093486e-07, + 4.137517127159245544e-07, + 4.137876274439327960e-07, + 4.138228593284174680e-07, + 4.138574084403837541e-07, + 4.138912748519204050e-07, + 4.139244586362437310e-07, + 4.139569598676632974e-07, + 4.139887786215930943e-07, + 4.140199149745658309e-07, + 4.140503690042003242e-07, + 4.140801407892274396e-07, + 4.141092304094867027e-07, + 4.141376379459163469e-07, + 4.141653634805529424e-07, + 4.141924070965500313e-07, + 4.142187688781426579e-07, + 4.142444489106904617e-07, + 4.142694472806405663e-07, + 4.142937640755421915e-07, + 4.143173993840561286e-07, + 4.143403532959291182e-07, + 4.143626259020156614e-07, + 4.143842172942733606e-07, + 4.144051275657567261e-07, + 4.144253568106148992e-07, + 4.144449051241080111e-07, + 4.144637726025784891e-07, + 4.144819593434755151e-07, + 4.144994654453521136e-07, + 4.145162910078479994e-07, + 4.145324361317047716e-07, + 4.145479009187617837e-07, + 4.145626854719507440e-07, + 4.145767898953064628e-07, + 4.145902142939519755e-07, + 4.146029587741070667e-07, + 4.146150234430933519e-07, + 4.146264084093134723e-07, + 4.146371137822750768e-07, + 4.146471396725792277e-07, + 4.146564861919147895e-07, + 4.146651534530660520e-07, + 4.146731415699105598e-07, + 4.146804506574151419e-07, + 4.146870808316438527e-07, + 4.146930322097457957e-07, + 4.146983049099661351e-07, + 4.147028990516385782e-07, + 4.147068147551847933e-07, + 4.147100521421176388e-07, + 4.147126113350430164e-07, + 4.147144924576496532e-07, + 4.147156956347183667e-07, + 4.147162209921186234e-07, + 4.147160686568054685e-07, + 4.147152387568204258e-07, + 4.147137314212967913e-07, + 4.147115467804496284e-07, + 4.147086849655810083e-07, + 4.147051461090778923e-07, + 4.147009303444149913e-07, + 4.146960378061516945e-07, + 4.146904686299302699e-07, + 4.146842229524743820e-07, + 4.146773009115961322e-07, + 4.146697026461884895e-07, + 4.146614282962241776e-07, + 4.146524780027631403e-07, + 4.146428519079457646e-07, + 4.146325501549917695e-07, + 4.146215728882027466e-07, + 4.146099202529602545e-07, + 4.145975923957263485e-07, + 4.145845894640443211e-07, + 4.145709116065317675e-07, + 4.145565589728920731e-07, + 4.145415317139009143e-07, + 4.145258299814123990e-07, + 4.145094539283614493e-07, + 4.144924037087578191e-07, + 4.144746794776837121e-07, + 4.144562813913053219e-07, + 4.144372096068565278e-07, + 4.144174642826524461e-07, + 4.143970455780793725e-07, + 4.143759536535989108e-07, + 4.143541886707444264e-07, + 4.143317507921235868e-07, + 4.143086401814176213e-07, + 4.142848570033788849e-07, + 4.142604014238341942e-07, + 4.142352736096763036e-07, + 4.142094737288740170e-07, + 4.141830019504624471e-07, + 4.141558584445491560e-07, + 4.141280433823119320e-07, + 4.140995569359920661e-07, + 4.140703992789064754e-07, + 4.140405705854356857e-07, + 4.140100710310286488e-07, + 4.139789007921993548e-07, + 4.139470600465322315e-07, + 4.139145489726738332e-07, + 4.138813677503388754e-07, + 4.138475165603039358e-07, + 4.138129955844148118e-07, + 4.137778050055775219e-07, + 4.137419450077615869e-07, + 4.137054157760015131e-07, + 4.136682174963935094e-07, + 4.136303503560943230e-07, + 4.135918145433226688e-07, + 4.135526102473603936e-07, + 4.135127376585480298e-07, + 4.134721969682860655e-07, + 4.134309883690346801e-07, + 4.133891120543120497e-07, + 4.133465682186963069e-07, + 4.133033570578218867e-07, + 4.132594787683795275e-07, + 4.132149335481226234e-07, + 4.131697215958553657e-07, + 4.131238431114378783e-07, + 4.130772982957870114e-07, + 4.130300873508743304e-07, + 4.129822104797254271e-07, + 4.129336678864179081e-07, + 4.128844597760866891e-07, + 4.128345863549156831e-07, + 4.127840478301408181e-07, + 4.127328444100517837e-07, + 4.126809763039873203e-07, + 4.126284437223360652e-07, + 4.125752468765376120e-07, + 4.125213859790829870e-07, + 4.124668612435085080e-07, + 4.124116728844010253e-07, + 4.123558211173938986e-07, + 4.122993061591667848e-07, + 4.122421282274478621e-07, + 4.121842875410111293e-07, + 4.121257843196729652e-07, + 4.120666187843017109e-07, + 4.120067911568027930e-07, + 4.119463016601275124e-07, + 4.118851505182716144e-07, + 4.118233379562736476e-07, + 4.117608642002150703e-07, + 4.116977294772111442e-07, + 4.116339340154314223e-07, + 4.115694780440761911e-07, + 4.115043617933865285e-07, + 4.114385854946466337e-07, + 4.113721493801776859e-07, + 4.113050536833355681e-07, + 4.112372986385171666e-07, + 4.111688844811557126e-07, + 4.110998114477221056e-07, + 4.110300797757214194e-07, + 4.109596897036938551e-07, + 4.108886414712141584e-07, + 4.108169353188911437e-07, + 4.107445714883673231e-07, + 4.106715502223163124e-07, + 4.105978717644515134e-07, + 4.105235363595065792e-07, + 4.104485442532515074e-07, + 4.103728956924920054e-07, + 4.102965909250541906e-07, + 4.102196301997995720e-07, + 4.101420137666163688e-07, + 4.100637418764206745e-07, + 4.099848147811574629e-07, + 4.099052327337951884e-07, + 4.098249959883332502e-07, + 4.097441047997956929e-07, + 4.096625594242254356e-07, + 4.095803601186944369e-07, + 4.094975071413029530e-07, + 4.094140007511684740e-07, + 4.093298412084306998e-07, + 4.092450287742563051e-07, + 4.091595637108227920e-07, + 4.090734462813427904e-07, + 4.089866767500417165e-07, + 4.088992553821567146e-07, + 4.088111824439585737e-07, + 4.087224582027285934e-07, + 4.086330829267596952e-07, + 4.085430568853764865e-07, + 4.084523803489052975e-07, + 4.083610535886957268e-07, + 4.082690768771139714e-07, + 4.081764504875289566e-07, + 4.080831746943408172e-07, + 4.079892497729532106e-07, + 4.078946759997762277e-07, + 4.077994536522433345e-07, + 4.077035830087945365e-07, + 4.076070643488719323e-07, + 4.075098979529468712e-07, + 4.074120841024802490e-07, + 4.073136230799523126e-07, + 4.072145151688485781e-07, + 4.071147606536616840e-07, + 4.070143598198907024e-07, + 4.069133129540443691e-07, + 4.068116203436238775e-07, + 4.067092822771521546e-07, + 4.066062990441492440e-07, + 4.065026709351277532e-07, + 4.063983982416211229e-07, + 4.062934812561568403e-07, + 4.061879202722562796e-07, + 4.060817155844522784e-07, + 4.059748674882709261e-07, + 4.058673762802426817e-07, + 4.057592422578954382e-07, + 4.056504657197472701e-07, + 4.055410469653238509e-07, + 4.054309862951416703e-07, + 4.053202840107144939e-07, + 4.052089404145499215e-07, + 4.050969558101589692e-07, + 4.049843305020286469e-07, + 4.048710647956537750e-07, + 4.047571589975174493e-07, + 4.046426134150929475e-07, + 4.045274283568467989e-07, + 4.044116041322387850e-07, + 4.042951410517040460e-07, + 4.041780394266849496e-07, + 4.040602995696025577e-07, + 4.039419217938671603e-07, + 4.038229064138789646e-07, + 4.037032537450140655e-07, + 4.035829641036460979e-07, + 4.034620378071250083e-07, + 4.033404751737923008e-07, + 4.032182765229684911e-07, + 4.030954421749588235e-07, + 4.029719724510417302e-07, + 4.028478676734882073e-07, + 4.027231281655441856e-07, + 4.025977542514363014e-07, + 4.024717462563762374e-07, + 4.023451045065395468e-07, + 4.022178293290906938e-07, + 4.020899210521699245e-07, + 4.019613800048903023e-07, + 4.018322065173441138e-07, + 4.017024009205992157e-07, + 4.015719635466850059e-07, + 4.014408947286159286e-07, + 4.013091948003895157e-07, + 4.011768640969486938e-07, + 4.010439029542234476e-07, + 4.009103117091196495e-07, + 4.007760906994896253e-07, + 4.006412402641854116e-07, + 4.005057607430022163e-07, + 4.003696524767144699e-07, + 4.002329158070645501e-07, + 4.000955510767490173e-07, + 3.999575586294365608e-07, + 3.998189388097743519e-07, + 3.996796919633468568e-07, + 3.995398184367161234e-07, + 3.993993185774149526e-07, + 3.992581927339104754e-07, + 3.991164412556654041e-07, + 3.989740644930706935e-07, + 3.988310627974946683e-07, + 3.986874365212587770e-07, + 3.985431860176463801e-07, + 3.983983116408834796e-07, + 3.982528137461772067e-07, + 3.981066926896648933e-07, + 3.979599488284517125e-07, + 3.978125825205979729e-07, + 3.976645941250995308e-07, + 3.975159840019301423e-07, + 3.973667525120068404e-07, + 3.972169000171813061e-07, + 3.970664268802718968e-07, + 3.969153334650462819e-07, + 3.967636201362009554e-07, + 3.966112872594141228e-07, + 3.964583352012773024e-07, + 3.963047643293443481e-07, + 3.961505750121207024e-07, + 3.959957676190318441e-07, + 3.958403425204765992e-07, + 3.956843000877841002e-07, + 3.955276406932137865e-07, + 3.953703647099818215e-07, + 3.952124725122389633e-07, + 3.950539644750798294e-07, + 3.948948409745337384e-07, + 3.947351023875757209e-07, + 3.945747490920985679e-07, + 3.944137814669535410e-07, + 3.942521998919171266e-07, + 3.940900047477013589e-07, + 3.939271964159629784e-07, + 3.937637752792706099e-07, + 3.935997417211430899e-07, + 3.934350961260255387e-07, + 3.932698388792947067e-07, + 3.931039703672568574e-07, + 3.929374909771524784e-07, + 3.927704010971344707e-07, + 3.926027011163019770e-07, + 3.924343914246729061e-07, + 3.922654724131922444e-07, + 3.920959444737361319e-07, + 3.919258079990874048e-07, + 3.917550633829695821e-07, + 3.915837110200228844e-07, + 3.914117513058130214e-07, + 3.912391846368222986e-07, + 3.910660114104615282e-07, + 3.908922320250420775e-07, + 3.907178468798130320e-07, + 3.905428563749350435e-07, + 3.903672609114848300e-07, + 3.901910608914558109e-07, + 3.900142567177643538e-07, + 3.898368487942220344e-07, + 3.896588375255704174e-07, + 3.894802233174608340e-07, + 3.893010065764551229e-07, + 3.891211877100316653e-07, + 3.889407671265609270e-07, + 3.887597452353448981e-07, + 3.885781224465830002e-07, + 3.883958991713859567e-07, + 3.882130758217685395e-07, + 3.880296528106607927e-07, + 3.878456305518763746e-07, + 3.876610094601537447e-07, + 3.874757899511295879e-07, + 3.872899724413422556e-07, + 3.871035573482311838e-07, + 3.869165450901444096e-07, + 3.867289360863028910e-07, + 3.865407307568728215e-07, + 3.863519295228748394e-07, + 3.861625328062488780e-07, + 3.859725410298383905e-07, + 3.857819546173574209e-07, + 3.855907739934284031e-07, + 3.853989995835921666e-07, + 3.852066318142368914e-07, + 3.850136711126745528e-07, + 3.848201179071041815e-07, + 3.846259726265943402e-07, + 3.844312357011458044e-07, + 3.842359075616025711e-07, + 3.840399886397228503e-07, + 3.838434793681465075e-07, + 3.836463801804053868e-07, + 3.834486915108900120e-07, + 3.832504137949217432e-07, + 3.830515474686598678e-07, + 3.828520929691738100e-07, + 3.826520507344116851e-07, + 3.824514212031778524e-07, + 3.822502048151967082e-07, + 3.820484020110532869e-07, + 3.818460132321923617e-07, + 3.816430389209623307e-07, + 3.814394795205862069e-07, + 3.812353354751312830e-07, + 3.810306072295945235e-07, + 3.808252952297917091e-07, + 3.806193999224439927e-07, + 3.804129217551406832e-07, + 3.802058611763187046e-07, + 3.799982186353241120e-07, + 3.797899945823530642e-07, + 3.795811894684519818e-07, + 3.793718037455612761e-07, + 3.791618378664767557e-07, + 3.789512922848625967e-07, + 3.787401674552450959e-07, + 3.785284638330267530e-07, + 3.783161818744444479e-07, + 3.781033220366236510e-07, + 3.778898847775413654e-07, + 3.776758705560365564e-07, + 3.774612798318135392e-07, + 3.772461130654108504e-07, + 3.770303707182527056e-07, + 3.768140532526072300e-07, + 3.765971611315991636e-07, + 3.763796948192092792e-07, + 3.761616547802790409e-07, + 3.759430414804783640e-07, + 3.757238553863541605e-07, + 3.755040969652947637e-07, + 3.752837666855408869e-07, + 3.750628650161899643e-07, + 3.748413924271605224e-07, + 3.746193493892466552e-07, + 3.743967363740765197e-07, + 3.741735538541275818e-07, + 3.739498023027177763e-07, + 3.737254821940223408e-07, + 3.735005940030291355e-07, + 3.732751382055950233e-07, + 3.730491152784076474e-07, + 3.728225256989960198e-07, + 3.725953699457267620e-07, + 3.723676484978135813e-07, + 3.721393618352819605e-07, + 3.719105104390187086e-07, + 3.716810947907356981e-07, + 3.714511153729810874e-07, + 3.712205726691427092e-07, + 3.709894671634156719e-07, + 3.707577993408447634e-07, + 3.705255696873265695e-07, + 3.702927786895431398e-07, + 3.700594268350311806e-07, + 3.698255146121605077e-07, + 3.695910425100964070e-07, + 3.693560110188601438e-07, + 3.691204206292877235e-07, + 3.688842718330357145e-07, + 3.686475651225877601e-07, + 3.684103009912559017e-07, + 3.681724799331365331e-07, + 3.679341024432092390e-07, + 3.676951690172088927e-07, + 3.674556801517246002e-07, + 3.672156363441634896e-07, + 3.669750380927164061e-07, + 3.667338858964156165e-07, + 3.664921802551269738e-07, + 3.662499216694786075e-07, + 3.660071106409444099e-07, + 3.657637476718118481e-07, + 3.655198332651403539e-07, + 3.652753679248614328e-07, + 3.650303521556529317e-07, + 3.647847864630349662e-07, + 3.645386713533347155e-07, + 3.642920073336543937e-07, + 3.640447949119203253e-07, + 3.637970345968914151e-07, + 3.635487268980677217e-07, + 3.632998723257952251e-07, + 3.630504713912143160e-07, + 3.628005246062286151e-07, + 3.625500324835957108e-07, + 3.622989955368436741e-07, + 3.620474142802765110e-07, + 3.617952892290208552e-07, + 3.615426208989999752e-07, + 3.612894098068909985e-07, + 3.610356564702311618e-07, + 3.607813614072778915e-07, + 3.605265251371223592e-07, + 3.602711481796425770e-07, + 3.600152310554639049e-07, + 3.597587742860596358e-07, + 3.595017783936617923e-07, + 3.592442439012642502e-07, + 3.589861713326755724e-07, + 3.587275612124786683e-07, + 3.584684140660369356e-07, + 3.582087304195058536e-07, + 3.579485107997919550e-07, + 3.576877557346077774e-07, + 3.574264657524384053e-07, + 3.571646413825422644e-07, + 3.569022831549551447e-07, + 3.566393916004978773e-07, + 3.563759672507350406e-07, + 3.561120106380338832e-07, + 3.558475222955229770e-07, + 3.555825027571048706e-07, + 3.553169525574506889e-07, + 3.550508722320073862e-07, + 3.547842623169631764e-07, + 3.545171233493022727e-07, + 3.542494558667642297e-07, + 3.539812604078518850e-07, + 3.537125375118476107e-07, + 3.534432877187595807e-07, + 3.531735115693910149e-07, + 3.529032096052950752e-07, + 3.526323823687847119e-07, + 3.523610304029330345e-07, + 3.520891542515778643e-07, + 3.518167544592831420e-07, + 3.515438315714030895e-07, + 3.512703861340322888e-07, + 3.509964186940191281e-07, + 3.507219297989650610e-07, + 3.504469199972331824e-07, + 3.501713898379063006e-07, + 3.498953398708439529e-07, + 3.496187706466508013e-07, + 3.493416827166713906e-07, + 3.490640766330111134e-07, + 3.487859529484863402e-07, + 3.485073122166794771e-07, + 3.482281549919488124e-07, + 3.479484818293298902e-07, + 3.476682932846392718e-07, + 3.473875899144394370e-07, + 3.471063722759923029e-07, + 3.468246409273355102e-07, + 3.465423964272276833e-07, + 3.462596393351659533e-07, + 3.459763702113939525e-07, + 3.456925896168514678e-07, + 3.454082981132379693e-07, + 3.451234962630141447e-07, + 3.448381846293041204e-07, + 3.445523637760074285e-07, + 3.442660342677510434e-07, + 3.439791966698556599e-07, + 3.436918515483873084e-07, + 3.434039994701780550e-07, + 3.431156410027086341e-07, + 3.428267767142322214e-07, + 3.425374071737211232e-07, + 3.422475329508237372e-07, + 3.419571546159893838e-07, + 3.416662727403040871e-07, + 3.413748878956159364e-07, + 3.410830006544942166e-07, + 3.407906115901834566e-07, + 3.404977212766679629e-07, + 3.402043302886805541e-07, + 3.399104392015958882e-07, + 3.396160485915445473e-07, + 3.393211590353681974e-07, + 3.390257711105717315e-07, + 3.387298853954487360e-07, + 3.384335024689170607e-07, + 3.381366229106471441e-07, + 3.378392473010018212e-07, + 3.375413762210478644e-07, + 3.372430102525550304e-07, + 3.369441499780036307e-07, + 3.366447959805420211e-07, + 3.363449488440509233e-07, + 3.360446091531089611e-07, + 3.357437774929442210e-07, + 3.354424544495526777e-07, + 3.351406406095888210e-07, + 3.348383365603752909e-07, + 3.345355428899669347e-07, + 3.342322601870939492e-07, + 3.339284890411784516e-07, + 3.336242300423446435e-07, + 3.333194837813668770e-07, + 3.330142508497431883e-07, + 3.327085318396445280e-07, + 3.324023273439307494e-07, + 3.320956379561397027e-07, + 3.317884642705084637e-07, + 3.314808068819167946e-07, + 3.311726663859599357e-07, + 3.308640433789032891e-07, + 3.305549384576888245e-07, + 3.302453522199347615e-07, + 3.299352852639504988e-07, + 3.296247381886802330e-07, + 3.293137115937794039e-07, + 3.290022060795637665e-07, + 3.286902222470219374e-07, + 3.283777606978241301e-07, + 3.280648220342701682e-07, + 3.277514068593706950e-07, + 3.274375157767871396e-07, + 3.271231493908473872e-07, + 3.268083083065436087e-07, + 3.264929931295455483e-07, + 3.261772044661461548e-07, + 3.258609429233393497e-07, + 3.255442091087641230e-07, + 3.252270036307219502e-07, + 3.249093270981702811e-07, + 3.245911801207355626e-07, + 3.242725633086633168e-07, + 3.239534772728917800e-07, + 3.236339226249982748e-07, + 3.233138999772129745e-07, + 3.229934099424338848e-07, + 3.226724531341661224e-07, + 3.223510301665906305e-07, + 3.220291416545752957e-07, + 3.217067882135581110e-07, + 3.213839704596721658e-07, + 3.210606890096966236e-07, + 3.207369444810152711e-07, + 3.204127374916929618e-07, + 3.200880686604219365e-07, + 3.197629386065339985e-07, + 3.194373479500132725e-07, + 3.191112973114436351e-07, + 3.187847873120691728e-07, + 3.184578185738092684e-07, + 3.181303917191413941e-07, + 3.178025073712255716e-07, + 3.174741661538553502e-07, + 3.171453686914143437e-07, + 3.168161156089424047e-07, + 3.164864075321493357e-07, + 3.161562450872893170e-07, + 3.158256289013003488e-07, + 3.154945596017418362e-07, + 3.151630378167450903e-07, + 3.148310641751583294e-07, + 3.144986393063553032e-07, + 3.141657638403861700e-07, + 3.138324384079203750e-07, + 3.134986636402024987e-07, + 3.131644401691256845e-07, + 3.128297686272342319e-07, + 3.124946496476100420e-07, + 3.121590838640004659e-07, + 3.118230719107657363e-07, + 3.114866144228224803e-07, + 3.111497120357933271e-07, + 3.108123653858157432e-07, + 3.104745751096858691e-07, + 3.101363418447967387e-07, + 3.097976662291433616e-07, + 3.094585489013268526e-07, + 3.091189905005658664e-07, + 3.087789916666359817e-07, + 3.084385530399604400e-07, + 3.080976752615574704e-07, + 3.077563589729904735e-07, + 3.074146048165027528e-07, + 3.070724134348917301e-07, + 3.067297854715218098e-07, + 3.063867215703941006e-07, + 3.060432223760865403e-07, + 3.056992885337705726e-07, + 3.053549206892200928e-07, + 3.050101194887573445e-07, + 3.046648855793322757e-07, + 3.043192196084847396e-07, + 3.039731222242811796e-07, + 3.036265940754567713e-07, + 3.032796358112908032e-07, + 3.029322480816136117e-07, + 3.025844315368788964e-07, + 3.022361868281055398e-07, + 3.018875146068934359e-07, + 3.015384155254163436e-07, + 3.011888902364400449e-07, + 3.008389393932617291e-07, + 3.004885636497977136e-07, + 3.001377636605188048e-07, + 2.997865400804696208e-07, + 2.994348935652792328e-07, + 2.990828247711002839e-07, + 2.987303343546995692e-07, + 2.983774229733930257e-07, + 2.980240912850653732e-07, + 2.976703399481628083e-07, + 2.973161696217110043e-07, + 2.969615809652522183e-07, + 2.966065746389332246e-07, + 2.962511513034474511e-07, + 2.958953116200434502e-07, + 2.955390562505462858e-07, + 2.951823858572888183e-07, + 2.948253011032045602e-07, + 2.944678026517630901e-07, + 2.941098911669913870e-07, + 2.937515673134632958e-07, + 2.933928317563185322e-07, + 2.930336851612007436e-07, + 2.926741281943338478e-07, + 2.923141615225283332e-07, + 2.919537858130522445e-07, + 2.915930017337781434e-07, + 2.912318099531195809e-07, + 2.908702111399893281e-07, + 2.905082059638812736e-07, + 2.901457950948188604e-07, + 2.897829792033588445e-07, + 2.894197589606119947e-07, + 2.890561350381785586e-07, + 2.886921081082241257e-07, + 2.883276788434913265e-07, + 2.879628479171659485e-07, + 2.875976160030219378e-07, + 2.872319837753676124e-07, + 2.868659519089889640e-07, + 2.864995210792477547e-07, + 2.861326919620147079e-07, + 2.857654652336866601e-07, + 2.853978415711830141e-07, + 2.850298216519592390e-07, + 2.846614061539343953e-07, + 2.842925957556517539e-07, + 2.839233911360659263e-07, + 2.835537929747117414e-07, + 2.831838019516382829e-07, + 2.828134187473650026e-07, + 2.824426440429546710e-07, + 2.820714785200304767e-07, + 2.816999228606326133e-07, + 2.813279777473740274e-07, + 2.809556438633759914e-07, + 2.805829218922066402e-07, + 2.802098125180472551e-07, + 2.798363164254773285e-07, + 2.794624342996407414e-07, + 2.790881668261867888e-07, + 2.787135146912013586e-07, + 2.783384785813657493e-07, + 2.779630591838123050e-07, + 2.775872571861417787e-07, + 2.772110732764966539e-07, + 2.768345081435148228e-07, + 2.764575624762687582e-07, + 2.760802369644143267e-07, + 2.757025322980530405e-07, + 2.753244491677467739e-07, + 2.749459882645923026e-07, + 2.745671502801600526e-07, + 2.741879359065059584e-07, + 2.738083458361877160e-07, + 2.734283807622021017e-07, + 2.730480413780726406e-07, + 2.726673283778085254e-07, + 2.722862424558330419e-07, + 2.719047843071460937e-07, + 2.715229546271778769e-07, + 2.711407541118019567e-07, + 2.707581834574194409e-07, + 2.703752433608859232e-07, + 2.699919345195325538e-07, + 2.696082576311773147e-07, + 2.692242133940620751e-07, + 2.688398025069451826e-07, + 2.684550256690369826e-07, + 2.680698835800170769e-07, + 2.676843769400296118e-07, + 2.672985064496988426e-07, + 2.669122728100649706e-07, + 2.665256767226780052e-07, + 2.661387188895336008e-07, + 2.657514000130859215e-07, + 2.653637207962479584e-07, + 2.649756819424078354e-07, + 2.645872841553581344e-07, + 2.641985281393964808e-07, + 2.638094145992565630e-07, + 2.634199442401262910e-07, + 2.630301177676582254e-07, + 2.626399358879072141e-07, + 2.622493993074265313e-07, + 2.618585087331981028e-07, + 2.614672648726508758e-07, + 2.610756684336588078e-07, + 2.606837201245553713e-07, + 2.602914206540667446e-07, + 2.598987707314099088e-07, + 2.595057710662239319e-07, + 2.591124223685892390e-07, + 2.587187253490209422e-07, + 2.583246807184859923e-07, + 2.579302891883397580e-07, + 2.575355514704167109e-07, + 2.571404682769704981e-07, + 2.567450403206826769e-07, + 2.563492683146847911e-07, + 2.559531529724831965e-07, + 2.555566950080474702e-07, + 2.551598951358214744e-07, + 2.547627540705742796e-07, + 2.543652725275657054e-07, + 2.539674512224755943e-07, + 2.535692908713591831e-07, + 2.531707921907365707e-07, + 2.527719558975323674e-07, + 2.523727827090869178e-07, + 2.519732733431575184e-07, + 2.515734285179327113e-07, + 2.511732489519469460e-07, + 2.507727353642639612e-07, + 2.503718884742416282e-07, + 2.499707090017152272e-07, + 2.495691976669259258e-07, + 2.491673551904577812e-07, + 2.487651822933987824e-07, + 2.483626796971937309e-07, + 2.479598481236528171e-07, + 2.475566882950453232e-07, + 2.471532009340354605e-07, + 2.467493867636223361e-07, + 2.463452465073206352e-07, + 2.459407808889238231e-07, + 2.455359906326882152e-07, + 2.451308764632666446e-07, + 2.447254391056335520e-07, + 2.443196792852615394e-07, + 2.439135977279605398e-07, + 2.435071951598952868e-07, + 2.431004723076710775e-07, + 2.426934298982796144e-07, + 2.422860686590295493e-07, + 2.418783893177154662e-07, + 2.414703926024676919e-07, + 2.410620792417594956e-07, + 2.406534499644981978e-07, + 2.402445054999524846e-07, + 2.398352465777700892e-07, + 2.394256739279913449e-07, + 2.390157882809805746e-07, + 2.386055903675297474e-07, + 2.381950809188013297e-07, + 2.377842606662617139e-07, + 2.373731303418509162e-07, + 2.369616906778259549e-07, + 2.365499424067776586e-07, + 2.361378862617141258e-07, + 2.357255229759919557e-07, + 2.353128532833334542e-07, + 2.348998779178387040e-07, + 2.344865976139175104e-07, + 2.340730131063926869e-07, + 2.336591251304279777e-07, + 2.332449344215449455e-07, + 2.328304417156206420e-07, + 2.324156477489071960e-07, + 2.320005532579549973e-07, + 2.315851589797211709e-07, + 2.311694656514955928e-07, + 2.307534740109183876e-07, + 2.303371847959799279e-07, + 2.299205987450319780e-07, + 2.295037165967225786e-07, + 2.290865390900972143e-07, + 2.286690669645264712e-07, + 2.282513009597228192e-07, + 2.278332418157579234e-07, + 2.274148902729908043e-07, + 2.269962470721702239e-07, + 2.265773129543653341e-07, + 2.261580886609822208e-07, + 2.257385749337603832e-07, + 2.253187725147899921e-07, + 2.248986821464407657e-07, + 2.244783045714654663e-07, + 2.240576405329298615e-07, + 2.236366907742259058e-07, + 2.232154560390756850e-07, + 2.227939370715416860e-07, + 2.223721346159582935e-07, + 2.219500494170356306e-07, + 2.215276822197897583e-07, + 2.211050337695546393e-07, + 2.206821048120031292e-07, + 2.202588960930709550e-07, + 2.198354083590480090e-07, + 2.194116423565915580e-07, + 2.189875988325654387e-07, + 2.185632785342194702e-07, + 2.181386822091128767e-07, + 2.177138106050625132e-07, + 2.172886644702469436e-07, + 2.168632445531364294e-07, + 2.164375516025055019e-07, + 2.160115863674520471e-07, + 2.155853495973242759e-07, + 2.151588420418078890e-07, + 2.147320644509450554e-07, + 2.143050175749673884e-07, + 2.138777021644809957e-07, + 2.134501189703855614e-07, + 2.130222687438059744e-07, + 2.125941522362711319e-07, + 2.121657701995469680e-07, + 2.117371233856568619e-07, + 2.113082125469696497e-07, + 2.108790384361411001e-07, + 2.104496018060468398e-07, + 2.100199034099729887e-07, + 2.095899440013657031e-07, + 2.091597243340273166e-07, + 2.087292451620445806e-07, + 2.082985072397112932e-07, + 2.078675113217121315e-07, + 2.074362581629576925e-07, + 2.070047485185970656e-07, + 2.065729831441127273e-07, + 2.061409627952620426e-07, + 2.057086882280022764e-07, + 2.052761601986931930e-07, + 2.048433794638359847e-07, + 2.044103467802758452e-07, + 2.039770629051100663e-07, + 2.035435285957016433e-07, + 2.031097446096796989e-07, + 2.026757117049576940e-07, + 2.022414306396572215e-07, + 2.018069021722171146e-07, + 2.013721270613369336e-07, + 2.009371060659040953e-07, + 2.005018399451730194e-07, + 2.000663294586014934e-07, + 1.996305753658641715e-07, + 1.991945784269475484e-07, + 1.987583394020730910e-07, + 1.983218590517118763e-07, + 1.978851381366080964e-07, + 1.974481774176957318e-07, + 1.970109776562144889e-07, + 1.965735396136325347e-07, + 1.961358640516625113e-07, + 1.956979517322615619e-07, + 1.952598034176488278e-07, + 1.948214198702273357e-07, + 1.943828018527005443e-07, + 1.939439501279872177e-07, + 1.935048654592471006e-07, + 1.930655486098751748e-07, + 1.926260003435202937e-07, + 1.921862214240085788e-07, + 1.917462126154545398e-07, + 1.913059746821875683e-07, + 1.908655083887650133e-07, + 1.904248144999904989e-07, + 1.899838937808407880e-07, + 1.895427469965742024e-07, + 1.891013749126542577e-07, + 1.886597782947685628e-07, + 1.882179579088265166e-07, + 1.877759145209782079e-07, + 1.873336488975354029e-07, + 1.868911618050848887e-07, + 1.864484540104113142e-07, + 1.860055262805159304e-07, + 1.855623793826127787e-07, + 1.851190140841480673e-07, + 1.846754311527252874e-07, + 1.842316313562115431e-07, + 1.837876154626665324e-07, + 1.833433842403568676e-07, + 1.828989384577743661e-07, + 1.824542788835593403e-07, + 1.820094062865938516e-07, + 1.815643214360203444e-07, + 1.811190251010677398e-07, + 1.806735180512406417e-07, + 1.802278010562429450e-07, + 1.797818748859181463e-07, + 1.793357403103640902e-07, + 1.788893980998525542e-07, + 1.784428490248499217e-07, + 1.779960938560350490e-07, + 1.775491333642176855e-07, + 1.771019683204372057e-07, + 1.766545994959775123e-07, + 1.762070276621951144e-07, + 1.757592535907090748e-07, + 1.753112780533222096e-07, + 1.748631018219438227e-07, + 1.744147256688002733e-07, + 1.739661503661619924e-07, + 1.735173766865561947e-07, + 1.730684054026695486e-07, + 1.726192372873835931e-07, + 1.721698731136780171e-07, + 1.717203136548410679e-07, + 1.712705596842002737e-07, + 1.708206119753292259e-07, + 1.703704713019737548e-07, + 1.699201384379692643e-07, + 1.694696141574355233e-07, + 1.690188992345996884e-07, + 1.685679944438156008e-07, + 1.681169005596591036e-07, + 1.676656183568671614e-07, + 1.672141486102605952e-07, + 1.667624920949549139e-07, + 1.663106495860887612e-07, + 1.658586218590354882e-07, + 1.654064096893036006e-07, + 1.649540138525578025e-07, + 1.645014351246139931e-07, + 1.640486742814601784e-07, + 1.635957320991767702e-07, + 1.631426093540501947e-07, + 1.626893068225158765e-07, + 1.622358252810780879e-07, + 1.617821655065020140e-07, + 1.613283282756402432e-07, + 1.608743143654468488e-07, + 1.604201245530770745e-07, + 1.599657596158054899e-07, + 1.595112203310470072e-07, + 1.590565074763722075e-07, + 1.586016218294284077e-07, + 1.581465641680587217e-07, + 1.576913352702188659e-07, + 1.572359359139962702e-07, + 1.567803668776097340e-07, + 1.563246289394270289e-07, + 1.558687228778857535e-07, + 1.554126494716093771e-07, + 1.549564094993256604e-07, + 1.545000037398901332e-07, + 1.540434329722784189e-07, + 1.535866979756084162e-07, + 1.531297995290599362e-07, + 1.526727384119906143e-07, + 1.522155154038559444e-07, + 1.517581312842273584e-07, + 1.513005868328140630e-07, + 1.508428828293769871e-07, + 1.503850200538499337e-07, + 1.499269992862581324e-07, + 1.494688213067372711e-07, + 1.490104868955317493e-07, + 1.485519968330118564e-07, + 1.480933518995965867e-07, + 1.476345528758681467e-07, + 1.471756005424924936e-07, + 1.467164956802373077e-07, + 1.462572390699917659e-07, + 1.457978314926849082e-07, + 1.453382737294033760e-07, + 1.448785665613105201e-07, + 1.444187107696670204e-07, + 1.439587071358263866e-07, + 1.434985564412559748e-07, + 1.430382594674542166e-07, + 1.425778169960506220e-07, + 1.421172298088236730e-07, + 1.416564986875196907e-07, + 1.411956244140522322e-07, + 1.407346077704188169e-07, + 1.402734495386223375e-07, + 1.398121505008874770e-07, + 1.393507114393801819e-07, + 1.388891331364270968e-07, + 1.384274163744333227e-07, + 1.379655619358209807e-07, + 1.375035706031295588e-07, + 1.370414431590325088e-07, + 1.365791803861568805e-07, + 1.361167830672822167e-07, + 1.356542519852586282e-07, + 1.351915879229266969e-07, + 1.347287916633343952e-07, + 1.342658639894579626e-07, + 1.338028056844179254e-07, + 1.333396175313807082e-07, + 1.328763003135950571e-07, + 1.324128548142914535e-07, + 1.319492818169017613e-07, + 1.314855821047759732e-07, + 1.310217564614035776e-07, + 1.305578056703296496e-07, + 1.300937305150745149e-07, + 1.296295317793334380e-07, + 1.291652102467936103e-07, + 1.287007667011542136e-07, + 1.282362019262246239e-07, + 1.277715167058623918e-07, + 1.273067118238935426e-07, + 1.268417880643309517e-07, + 1.263767462110904563e-07, + 1.259115870482132280e-07, + 1.254463113597826577e-07, + 1.249809199298422464e-07, + 1.245154135425961402e-07, + 1.240497929822277326e-07, + 1.235840590329160236e-07, + 1.231182124789371304e-07, + 1.226522541046012636e-07, + 1.221861846941716762e-07, + 1.217200050320645900e-07, + 1.212537159026662368e-07, + 1.207873180903519163e-07, + 1.203208123795867928e-07, + 1.198541995548411927e-07, + 1.193874804006113558e-07, + 1.189206557014386137e-07, + 1.184537262418261149e-07, + 1.179866928063593424e-07, + 1.175195561796239114e-07, + 1.170523171462252895e-07, + 1.165849764907857131e-07, + 1.161175349979650714e-07, + 1.156499934523765084e-07, + 1.151823526387092686e-07, + 1.147146133416443510e-07, + 1.142467763458730913e-07, + 1.137788424361194622e-07, + 1.133108123970534249e-07, + 1.128426870134137622e-07, + 1.123744670699253335e-07, + 1.119061533513180277e-07, + 1.114377466423248967e-07, + 1.109692477277017035e-07, + 1.105006573921440982e-07, + 1.100319764204094719e-07, + 1.095632055972322660e-07, + 1.090943457073443547e-07, + 1.086253975354734032e-07, + 1.081563618663621780e-07, + 1.076872394846854444e-07, + 1.072180311751707224e-07, + 1.067487377225174868e-07, + 1.062793599114127454e-07, + 1.058098985265528897e-07, + 1.053403543525593616e-07, + 1.048707281741013151e-07, + 1.044010207758109654e-07, + 1.039312329423041961e-07, + 1.034613654581775280e-07, + 1.029914191080299172e-07, + 1.025213946763767941e-07, + 1.020512929477731222e-07, + 1.015811147067298985e-07, + 1.011108607377338734e-07, + 1.006405318252451294e-07, + 1.001701287537172109e-07, + 9.969965230749364034e-08, + 9.922910327103080768e-08, + 9.875848242861053450e-08, + 9.828779056456461734e-08, + 9.781702846319077293e-08, + 9.734619690869039445e-08, + 9.687529668526912349e-08, + 9.640432857715810526e-08, + 9.593329336842487527e-08, + 9.546219184317940009e-08, + 9.499102478549055195e-08, + 9.451979297930188192e-08, + 9.404849720865751299e-08, + 9.357713825741184600e-08, + 9.310571690945485718e-08, + 9.263423394860928952e-08, + 9.216269015866830602e-08, + 9.169108632329209877e-08, + 9.121942322623464226e-08, + 9.074770165105179793e-08, + 9.027592238132771018e-08, + 8.980408620059134713e-08, + 8.933219389223269736e-08, + 8.886024623970711655e-08, + 8.838824402634876848e-08, + 8.791618803538998773e-08, + 8.744407905006313531e-08, + 8.697191785353760065e-08, + 8.649970522883565411e-08, + 8.602744195905823428e-08, + 8.555512882709565969e-08, + 8.508276661585160286e-08, + 8.461035610816072963e-08, + 8.413789808670410168e-08, + 8.366539333421487323e-08, + 8.319284263329108350e-08, + 8.272024676641398706e-08, + 8.224760651605219913e-08, + 8.177492266457554975e-08, + 8.130219599427621983e-08, + 8.082942728736594864e-08, + 8.035661732599703755e-08, + 7.988376689217665413e-08, + 7.941087676789106805e-08, + 7.893794773502126546e-08, + 7.846498057536204688e-08, + 7.799197607064150899e-08, + 7.751893500243671192e-08, + 7.704585815229799455e-08, + 7.657274630166280214e-08, + 7.609960023187731216e-08, + 7.562642072419287411e-08, + 7.515320855978791321e-08, + 7.467996451968189046e-08, + 7.420668938485870467e-08, + 7.373338393618351126e-08, + 7.326004895442101280e-08, + 7.278668522025592021e-08, + 7.231329351420732299e-08, + 7.183987461675432804e-08, + 7.136642930824901379e-08, + 7.089295836893734131e-08, + 7.041946257895847936e-08, + 6.994594271836273765e-08, + 6.947239956702866348e-08, + 6.899883390478518654e-08, + 6.852524651132858326e-08, + 6.805163816624104526e-08, + 6.757800964898955450e-08, + 6.710436173894576200e-08, + 6.663069521530084783e-08, + 6.615701085719011434e-08, + 6.568330944360756822e-08, + 6.520959175342578603e-08, + 6.473585856541615038e-08, + 6.426211065816306134e-08, + 6.378834881016728770e-08, + 6.331457379986642816e-08, + 6.284078640544469943e-08, + 6.236698740504117400e-08, + 6.189317757666442836e-08, + 6.141935769812954493e-08, + 6.094552854718128912e-08, + 6.047169090140916788e-08, + 5.999784553826832754e-08, + 5.952399323507681422e-08, + 5.905013476903647833e-08, + 5.857627091712585133e-08, + 5.810240245633025423e-08, + 5.762853016334738738e-08, + 5.715465481481517575e-08, + 5.668077718722827004e-08, + 5.620689805687302360e-08, + 5.573301819993126065e-08, + 5.525913839250003591e-08, + 5.478525941040160813e-08, + 5.431138202939245198e-08, + 5.383750702507699316e-08, + 5.336363517282352703e-08, + 5.288976724799285803e-08, + 5.241590402564417409e-08, + 5.194204628076415577e-08, + 5.146819478818141935e-08, + 5.099435032250327391e-08, + 5.052051365821896007e-08, + 5.004668556971872147e-08, + 4.957286683110460541e-08, + 4.909905821639894546e-08, + 4.862526049945851994e-08, + 4.815147445389042435e-08, + 4.767770085325928346e-08, + 4.720394047089900478e-08, + 4.673019407993072516e-08, + 4.625646245336753839e-08, + 4.578274636404981635e-08, + 4.530904658456055201e-08, + 4.483536388745422377e-08, + 4.436169904496241843e-08, + 4.388805282922348961e-08, + 4.341442601219659713e-08, + 4.294081936557732798e-08, + 4.246723366100588114e-08, + 4.199366966987703442e-08, + 4.152012816336022177e-08, + 4.104660991250271248e-08, + 4.057311568814459689e-08, + 4.009964626093924090e-08, + 3.962620240137178832e-08, + 3.915278487967494070e-08, + 3.867939446595328584e-08, + 3.820603193009807836e-08, + 3.773269804180729715e-08, + 3.725939357058381899e-08, + 3.678611928575621716e-08, + 3.631287595639254936e-08, + 3.583966435142536788e-08, + 3.536648523956681114e-08, + 3.489333938932809211e-08, + 3.442022756901841960e-08, + 3.394715054676465213e-08, + 3.347410909042624389e-08, + 3.300110396771995710e-08, + 3.252813594613440434e-08, + 3.205520579295005967e-08, + 3.158231427525925662e-08, + 3.110946215988047232e-08, + 3.063665021348341719e-08, + 3.016387920250355727e-08, + 2.969114989316263502e-08, + 2.921846305146629362e-08, + 2.874581944322476309e-08, + 2.827321983396740262e-08, + 2.780066498906720448e-08, + 2.732815567365602126e-08, + 2.685569265264387888e-08, + 2.638327669071843723e-08, + 2.591090855236393265e-08, + 2.543858900177666322e-08, + 2.496631880298931069e-08, + 2.449409871978608170e-08, + 2.402192951572214977e-08, + 2.354981195414377242e-08, + 2.307774679810284996e-08, + 2.260573481046102786e-08, + 2.213377675390887078e-08, + 2.166187339077633235e-08, + 2.119002548324127084e-08, + 2.071823379324392861e-08, + 2.024649908242344436e-08, + 1.977482211224188058e-08, + 1.930320364389963275e-08, + 1.883164443835478868e-08, + 1.836014525634308012e-08, + 1.788870685829289487e-08, + 1.741733000442868764e-08, + 1.694601545479089855e-08, + 1.647476396904606884e-08, + 1.600357630669515472e-08, + 1.553245322698868514e-08, + 1.506139548886246007e-08, + 1.459040385104136164e-08, + 1.411947907205875816e-08, + 1.364862191006717243e-08, + 1.317783312304633251e-08, + 1.270711346871808959e-08, + 1.223646370446181728e-08, + 1.176588458754318826e-08, + 1.129537687481998416e-08, + 1.082494132297125275e-08, + 1.035457868841231676e-08, + 9.884289727230784838e-09, + 9.414075195290000446e-09, + 8.943935848248938830e-09, + 8.473872441372375698e-09, + 8.003885729739196115e-09, + 7.533976468157419890e-09, + 7.064145411079293969e-09, + 6.594393312830343712e-09, + 6.124720927315164597e-09, + 5.655129008246455298e-09, + 5.185618309039227078e-09, + 4.716189582830475795e-09, + 4.246843582478032950e-09, + 3.777581060580304696e-09, + 3.308402769391442815e-09, + 2.839309460945599648e-09, + 2.370301886993039155e-09, + 1.901380798915332694e-09, + 1.432546947933224761e-09, + 9.638010849173085074e-10, + 4.951439604077454162e-10, + 2.657632471763301061e-11, +-4.419010721518119332e-10, +-9.102874804915192089e-10, +-1.378582150864837878e-09, +-1.846784334192319222e-09, +-2.314893281627478876e-09, +-2.782908244641587808e-09, +-3.250828475003930723e-09, +-3.718653224782973419e-09, +-4.186381746326706289e-09, +-4.654013292347214441e-09, +-5.121547115796750738e-09, +-5.588982469952257937e-09, +-6.056318608395720674e-09, +-6.523554785015358255e-09, +-6.990690253985893917e-09, +-7.457724269853175405e-09, +-7.924656087410201278e-09, +-8.391484961781702607e-09, +-8.858210148404430435e-09, +-9.324830903007535881e-09, +-9.791346481697013696e-09, +-1.025775614083192958e-08, +-1.072405913710880252e-08, +-1.119025472754205026e-08, +-1.165634216946510928e-08, +-1.212232072051074130e-08, +-1.258818963869558600e-08, +-1.305394818229620307e-08, +-1.351959560993364317e-08, +-1.398513118055378083e-08, +-1.445055415342848081e-08, +-1.491586378813570442e-08, +-1.538105934464449070e-08, +-1.584614008319059318e-08, +-1.631110526436117321e-08, +-1.677595414907517096e-08, +-1.724068599856356562e-08, +-1.770530007445375772e-08, +-1.816979563866679028e-08, +-1.863417195339750641e-08, +-1.909842828130318953e-08, +-1.956256388529642405e-08, +-2.002657802862958366e-08, +-2.049046997495829920e-08, +-2.095423898821794076e-08, +-2.141788433270786107e-08, +-2.188140527307163578e-08, +-2.234480107427787292e-08, +-2.280807100170371838e-08, +-2.327121432103278518e-08, +-2.373423029823526138e-08, +-2.419711819975593822e-08, +-2.465987729230771931e-08, +-2.512250684295583760e-08, +-2.558500611918136625e-08, +-2.604737438877835049e-08, +-2.650961091983435563e-08, +-2.697171498091829990e-08, +-2.743368584087405640e-08, +-2.789552276890471628e-08, +-2.835722503465653105e-08, +-2.881879190799198715e-08, +-2.928022265928140700e-08, +-2.974151655917563973e-08, +-3.020267287869037074e-08, +-3.066369088926932826e-08, +-3.112456986268192136e-08, +-3.158530907100365234e-08, +-3.204590778680318858e-08, +-3.250636528293749969e-08, +-3.296668083263438364e-08, +-3.342685370957740170e-08, +-3.388688318767914490e-08, +-3.434676854137179942e-08, +-3.480650904538069103e-08, +-3.526610397482929068e-08, +-3.572555260521894527e-08, +-3.618485421243100849e-08, +-3.664400807270607524e-08, +-3.710301346272859895e-08, +-3.756186965950367468e-08, +-3.802057594042029537e-08, +-3.847913158333506244e-08, +-3.893753586636666783e-08, +-3.939578806808323389e-08, +-3.985388746748199117e-08, +-4.031183334388802490e-08, +-4.076962497703744306e-08, +-4.122726164705786815e-08, +-4.168474263444923996e-08, +-4.214206722016699687e-08, +-4.259923468549995750e-08, +-4.305624431213278943e-08, +-4.351309538222969998e-08, +-4.396978717822960649e-08, +-4.442631898303263571e-08, +-4.488269007998059576e-08, +-4.533889975275502116e-08, +-4.579494728546041363e-08, +-4.625083196260566697e-08, +-4.670655306910417291e-08, +-4.716210989025480257e-08, +-4.761750171182490910e-08, +-4.807272781992857990e-08, +-4.852778750110973849e-08, +-4.898268004232240472e-08, +-4.943740473091203351e-08, +-4.989196085469744548e-08, +-5.034634770185014459e-08, +-5.080056456097655313e-08, +-5.125461072109889392e-08, +-5.170848547165625573e-08, +-5.216218810248527695e-08, +-5.261571790390345921e-08, +-5.306907416658639395e-08, +-5.352225618165166498e-08, +-5.397526324063936011e-08, +-5.442809463549221883e-08, +-5.488074965863884005e-08, +-5.533322760287213949e-08, +-5.578552776143198834e-08, +-5.623764942798651233e-08, +-5.668959189663208518e-08, +-5.714135446187443571e-08, +-5.759293641871200124e-08, +-5.804433706253417772e-08, +-5.849555568910204976e-08, +-5.894659159473333496e-08, +-5.939744407610014157e-08, +-5.984811243031021083e-08, +-6.029859595496970996e-08, +-6.074889394806246375e-08, +-6.119900570803221602e-08, +-6.164893053376323391e-08, +-6.209866772456118344e-08, +-6.254821658023500056e-08, +-6.299757640099789415e-08, +-6.344674648744594524e-08, +-6.389572614074323660e-08, +-6.434451466242019276e-08, +-6.479311135445455106e-08, +-6.524151551933442589e-08, +-6.568972645993713005e-08, +-6.613774347961193251e-08, +-6.658556588215982224e-08, +-6.703319297183538763e-08, +-6.748062405332741407e-08, +-6.792785843186113674e-08, +-6.837489541297645035e-08, +-6.882173430281240626e-08, +-6.926837440788650755e-08, +-6.971481503517520356e-08, +-7.016105549217626592e-08, +-7.060709508680932839e-08, +-7.105293312739598157e-08, +-7.149856892284281141e-08, +-7.194400178244061273e-08, +-7.238923101594615433e-08, +-7.283425593366427505e-08, +-7.327907584622596111e-08, +-7.372369006487320064e-08, +-7.416809790123704786e-08, +-7.461229866741956021e-08, +-7.505629167607621208e-08, +-7.550007624021404944e-08, +-7.594365167337602544e-08, +-7.638701728961967898e-08, +-7.683017240341909063e-08, +-7.727311632972519407e-08, +-7.771584838404821615e-08, +-7.815836788225731396e-08, +-7.860067414076226336e-08, +-7.904276647649424193e-08, +-7.948464420680777166e-08, +-7.992630664956012831e-08, +-8.036775312309324930e-08, +-8.080898294621507253e-08, +-8.124999543828021623e-08, +-8.169078991907074590e-08, +-8.213136570885729299e-08, +-8.257172212848115090e-08, +-8.301185849915344882e-08, +-8.345177414263750200e-08, +-8.389146838122948884e-08, +-8.433094053765869948e-08, +-8.477018993517074361e-08, +-8.520921589750538197e-08, +-8.564801774888098865e-08, +-8.608659481407247807e-08, +-8.652494641829436153e-08, +-8.696307188728059327e-08, +-8.740097054726679603e-08, +-8.783864172498974491e-08, +-8.827608474766992373e-08, +-8.871329894309061678e-08, +-8.915028363948199765e-08, +-8.958703816559824889e-08, +-9.002356185070193168e-08, +-9.045985402456292695e-08, +-9.089591401744026395e-08, +-9.133174116016270747e-08, +-9.176733478401031880e-08, +-9.220269422079541354e-08, +-9.263781880284317253e-08, +-9.307270786297254387e-08, +-9.350736073457718752e-08, +-9.394177675150757888e-08, +-9.437595524815036522e-08, +-9.480989555941109414e-08, +-9.524359702071311504e-08, +-9.567705896798133998e-08, +-9.611028073771987946e-08, +-9.654326166689598575e-08, +-9.697600109301936952e-08, +-9.740849835412406809e-08, +-9.784075278876852481e-08, +-9.827276373601736463e-08, +-9.870453053552252395e-08, +-9.913605252740287934e-08, +-9.956732905232655530e-08, +-9.999835945149217039e-08, +-1.004291430666085217e-07, +-1.008596792399759134e-07, +-1.012899673143873313e-07, +-1.017200066331116618e-07, +-1.021497965400697417e-07, +-1.025793363796392896e-07, +-1.030086254967350693e-07, +-1.034376632368685795e-07, +-1.038664489460306863e-07, +-1.042949819707715890e-07, +-1.047232616581817748e-07, +-1.051512873558943347e-07, +-1.055790584120645689e-07, +-1.060065741754685999e-07, +-1.064338339952919977e-07, +-1.068608372214009500e-07, +-1.072875832041304904e-07, +-1.077140712943629019e-07, +-1.081403008436072190e-07, +-1.085662712038044762e-07, +-1.089919817275040233e-07, +-1.094174317678457906e-07, +-1.098426206784631578e-07, +-1.102675478135425116e-07, +-1.106922125279025617e-07, +-1.111166141767800024e-07, +-1.115407521161047976e-07, +-1.119646257022853397e-07, +-1.123882342922877655e-07, +-1.128115772437149424e-07, +-1.132346539146127494e-07, +-1.136574636636464052e-07, +-1.140800058500808147e-07, +-1.145022798336863631e-07, +-1.149242849747965533e-07, +-1.153460206343859735e-07, +-1.157674861738795286e-07, +-1.161886809553262812e-07, +-1.166096043413808562e-07, +-1.170302556952081495e-07, +-1.174506343805627378e-07, +-1.178707397617678612e-07, +-1.182905712036989193e-07, +-1.187101280718614911e-07, +-1.191294097322760059e-07, +-1.195484155515360302e-07, +-1.199671448968884837e-07, +-1.203855971360385974e-07, +-1.208037716373279886e-07, +-1.212216677697129822e-07, +-1.216392849026706433e-07, +-1.220566224062773126e-07, +-1.224736796511892310e-07, +-1.228904560086247248e-07, +-1.233069508504416569e-07, +-1.237231635490245594e-07, +-1.241390934773597547e-07, +-1.245547400090192357e-07, +-1.249701025181604009e-07, +-1.253851803795089019e-07, +-1.257999729684349826e-07, +-1.262144796608395792e-07, +-1.266286998332333332e-07, +-1.270426328627173206e-07, +-1.274562781269828939e-07, +-1.278696350042954553e-07, +-1.282827028735699491e-07, +-1.286954811142590534e-07, +-1.291079691064288565e-07, +-1.295201662307413612e-07, +-1.299320718684368821e-07, +-1.303436854014102252e-07, +-1.307550062120964979e-07, +-1.311660336835512858e-07, +-1.315767671994289735e-07, +-1.319872061439860541e-07, +-1.323973499020611703e-07, +-1.328071978591550005e-07, +-1.332167494013130770e-07, +-1.336260039152058308e-07, +-1.340349607881090301e-07, +-1.344436194079053159e-07, +-1.348519791630657260e-07, +-1.352600394427268540e-07, +-1.356677996365766329e-07, +-1.360752591349336115e-07, +-1.364824173287271024e-07, +-1.368892736094784677e-07, +-1.372958273693796021e-07, +-1.377020780011969795e-07, +-1.381080248982574130e-07, +-1.385136674546132784e-07, +-1.389190050648607204e-07, +-1.393240371242118620e-07, +-1.397287630285525349e-07, +-1.401331821743326419e-07, +-1.405372939586397691e-07, +-1.409410977791824309e-07, +-1.413445930342721495e-07, +-1.417477791228984179e-07, +-1.421506554446377226e-07, +-1.425532213996343536e-07, +-1.429554763887685929e-07, +-1.433574198134734116e-07, +-1.437590510758077118e-07, +-1.441603695785326122e-07, +-1.445613747249255776e-07, +-1.449620659189516516e-07, +-1.453624425652398726e-07, +-1.457625040689970610e-07, +-1.461622498360607856e-07, +-1.465616792729760733e-07, +-1.469607917867912207e-07, +-1.473595867853191303e-07, +-1.477580636769346584e-07, +-1.481562218706481738e-07, +-1.485540607761802829e-07, +-1.489515798037798756e-07, +-1.493487783643897208e-07, +-1.497456558696278842e-07, +-1.501422117316994785e-07, +-1.505384453634489409e-07, +-1.509343561784379073e-07, +-1.513299435907420037e-07, +-1.517252070152082650e-07, +-1.521201458672554203e-07, +-1.525147595629669873e-07, +-1.529090475190710757e-07, +-1.533030091529438284e-07, +-1.536966438825916072e-07, +-1.540899511267237585e-07, +-1.544829303046437426e-07, +-1.548755808363069443e-07, +-1.552679021423918496e-07, +-1.556598936441201311e-07, +-1.560515547634210778e-07, +-1.564428849229132782e-07, +-1.568338835458173233e-07, +-1.572245500560256332e-07, +-1.576148838780872906e-07, +-1.580048844371903056e-07, +-1.583945511592350430e-07, +-1.587838834707259344e-07, +-1.591728807988447202e-07, +-1.595615425714349118e-07, +-1.599498682169999915e-07, +-1.603378571646868692e-07, +-1.607255088443602619e-07, +-1.611128226864937184e-07, +-1.614997981222436812e-07, +-1.618864345834305077e-07, +-1.622727315025431821e-07, +-1.626586883127169481e-07, +-1.630443044478090129e-07, +-1.634295793422922706e-07, +-1.638145124313251295e-07, +-1.641991031507371659e-07, +-1.645833509370107272e-07, +-1.649672552273518182e-07, +-1.653508154595881923e-07, +-1.657340310722360023e-07, +-1.661169015044863542e-07, +-1.664994261962049096e-07, +-1.668816045879153162e-07, +-1.672634361208707019e-07, +-1.676449202369473731e-07, +-1.680260563787190615e-07, +-1.684068439894367286e-07, +-1.687872825130132917e-07, +-1.691673713940948284e-07, +-1.695471100779561791e-07, +-1.699264980105713573e-07, +-1.703055346385963966e-07, +-1.706842194093708334e-07, +-1.710625517709020631e-07, +-1.714405311719338172e-07, +-1.718181570618604548e-07, +-1.721954288907105239e-07, +-1.725723461093047607e-07, +-1.729489081690820231e-07, +-1.733251145221698602e-07, +-1.737009646214382716e-07, +-1.740764579203949406e-07, +-1.744515938732552728e-07, +-1.748263719349272292e-07, +-1.752007915609944915e-07, +-1.755748522077852831e-07, +-1.759485533322868455e-07, +-1.763218943921314626e-07, +-1.766948748457490318e-07, +-1.770674941521969961e-07, +-1.774397517712299069e-07, +-1.778116471633706535e-07, +-1.781831797897173402e-07, +-1.785543491121905932e-07, +-1.789251545933408606e-07, +-1.792955956964383040e-07, +-1.796656718854358196e-07, +-1.800353826250579775e-07, +-1.804047273806126092e-07, +-1.807737056182313123e-07, +-1.811423168046815413e-07, +-1.815105604074362499e-07, +-1.818784358947438239e-07, +-1.822459427354556836e-07, +-1.826130803991826674e-07, +-1.829798483562776938e-07, +-1.833462460777522232e-07, +-1.837122730353264440e-07, +-1.840779287015000269e-07, +-1.844432125493645864e-07, +-1.848081240528428612e-07, +-1.851726626865025530e-07, +-1.855368279256411088e-07, +-1.859006192462699714e-07, +-1.862640361251166174e-07, +-1.866270780396057378e-07, +-1.869897444679295411e-07, +-1.873520348889483329e-07, +-1.877139487822373414e-07, +-1.880754856281599851e-07, +-1.884366449076966669e-07, +-1.887974261025978219e-07, +-1.891578286953697825e-07, +-1.895178521691864230e-07, +-1.898774960079652591e-07, +-1.902367596963438378e-07, +-1.905956427196650992e-07, +-1.909541445640491625e-07, +-1.913122647162892470e-07, +-1.916700026639204671e-07, +-1.920273578952054588e-07, +-1.923843298991328186e-07, +-1.927409181654032327e-07, +-1.930971221844948843e-07, +-1.934529414475655683e-07, +-1.938083754465183626e-07, +-1.941634236739884461e-07, +-1.945180856233403992e-07, +-1.948723607886547568e-07, +-1.952262486647962739e-07, +-1.955797487473102702e-07, +-1.959328605324937010e-07, +-1.962855835173787465e-07, +-1.966379171997153940e-07, +-1.969898610780389101e-07, +-1.973414146515729078e-07, +-1.976925774202935096e-07, +-1.980433488849167477e-07, +-1.983937285468954670e-07, +-1.987437159084054287e-07, +-1.990933104724130463e-07, +-1.994425117425752503e-07, +-1.997913192233074893e-07, +-2.001397324197647510e-07, +-2.004877508378331187e-07, +-2.008353739841872364e-07, +-2.011826013661973479e-07, +-2.015294324919960794e-07, +-2.018758668704608372e-07, +-2.022219040112140462e-07, +-2.025675434246095442e-07, +-2.029127846217980416e-07, +-2.032576271146446947e-07, +-2.036020704157149178e-07, +-2.039461140384210789e-07, +-2.042897574968597101e-07, +-2.046330003058792707e-07, +-2.049758419811438334e-07, +-2.053182820389546513e-07, +-2.056603199964828539e-07, +-2.060019553715839468e-07, +-2.063431876828690949e-07, +-2.066840164497521593e-07, +-2.070244411923705259e-07, +-2.073644614315683502e-07, +-2.077040766890420882e-07, +-2.080432864871840334e-07, +-2.083820903491409739e-07, +-2.087204877988836492e-07, +-2.090584783610297730e-07, +-2.093960615610683384e-07, +-2.097332369251845730e-07, +-2.100700039803410161e-07, +-2.104063622542458341e-07, +-2.107423112754329446e-07, +-2.110778505730878190e-07, +-2.114129796772706223e-07, +-2.117476981187414073e-07, +-2.120820054290257060e-07, +-2.124159011404779518e-07, +-2.127493847861219194e-07, +-2.130824558997980289e-07, +-2.134151140161431233e-07, +-2.137473586705158237e-07, +-2.140791893990430628e-07, +-2.144106057386822362e-07, +-2.147416072270519281e-07, +-2.150721934026500225e-07, +-2.154023638046845345e-07, +-2.157321179731321615e-07, +-2.160614554488050668e-07, +-2.163903757731956339e-07, +-2.167188784886149037e-07, +-2.170469631381794454e-07, +-2.173746292657332443e-07, +-2.177018764158957708e-07, +-2.180287041341251638e-07, +-2.183551119665612384e-07, +-2.186810994601682374e-07, +-2.190066661627177321e-07, +-2.193318116227135535e-07, +-2.196565353894542879e-07, +-2.199808370130164948e-07, +-2.203047160442425047e-07, +-2.206281720348005312e-07, +-2.209512045370931659e-07, +-2.212738131043211170e-07, +-2.215959972904660307e-07, +-2.219177566502931115e-07, +-2.222390907393354522e-07, +-2.225599991139555498e-07, +-2.228804813312554934e-07, +-2.232005369491363359e-07, +-2.235201655262863413e-07, +-2.238393666221637267e-07, +-2.241581397970590250e-07, +-2.244764846120046639e-07, +-2.247944006288360056e-07, +-2.251118874101789321e-07, +-2.254289445194456368e-07, +-2.257455715208239305e-07, +-2.260617679793373278e-07, +-2.263775334607547061e-07, +-2.266928675316499415e-07, +-2.270077697593914535e-07, +-2.273222397121387110e-07, +-2.276362769588292356e-07, +-2.279498810692382646e-07, +-2.282630516138910827e-07, +-2.285757881641229237e-07, +-2.288880902920630881e-07, +-2.291999575706231114e-07, +-2.295113895735534887e-07, +-2.298223858753595804e-07, +-2.301329460513568015e-07, +-2.304430696776600072e-07, +-2.307527563311811904e-07, +-2.310620055896175960e-07, +-2.313708170315093731e-07, +-2.316791902361525149e-07, +-2.319871247836610899e-07, +-2.322946202549465421e-07, +-2.326016762317240176e-07, +-2.329082922964959528e-07, +-2.332144680326256610e-07, +-2.335202030241781959e-07, +-2.338254968561246187e-07, +-2.341303491141796325e-07, +-2.344347593848669894e-07, +-2.347387272555567595e-07, +-2.350422523143957954e-07, +-2.353453341502947879e-07, +-2.356479723530579152e-07, +-2.359501665132387679e-07, +-2.362519162221988740e-07, +-2.365532210721670963e-07, +-2.368540806560803909e-07, +-2.371544945677834156e-07, +-2.374544624018761963e-07, +-2.377539837537683106e-07, +-2.380530582197237011e-07, +-2.383516853967872220e-07, +-2.386498648827766450e-07, +-2.389475962764057702e-07, +-2.392448791771438454e-07, +-2.395417131852754404e-07, +-2.398380979019549220e-07, +-2.401340329290658466e-07, +-2.404295178693498677e-07, +-2.407245523263919133e-07, +-2.410191359045534815e-07, +-2.413132682090080046e-07, +-2.416069488458062822e-07, +-2.419001774217150156e-07, +-2.421929535444197249e-07, +-2.424852768223668308e-07, +-2.427771468648222580e-07, +-2.430685632819283460e-07, +-2.433595256845617056e-07, +-2.436500336844627097e-07, +-2.439400868942197699e-07, +-2.442296849272013623e-07, +-2.445188273976112433e-07, +-2.448075139204759029e-07, +-2.450957441116304300e-07, +-2.453835175877760578e-07, +-2.456708339663946131e-07, +-2.459576928658072793e-07, +-2.462440939051581326e-07, +-2.465300367044184826e-07, +-2.468155208843712023e-07, +-2.471005460666638796e-07, +-2.473851118737334841e-07, +-2.476692179288557597e-07, +-2.479528638561332074e-07, +-2.482360492804973089e-07, +-2.485187738276942856e-07, +-2.488010371243396266e-07, +-2.490828387978357673e-07, +-2.493641784764334997e-07, +-2.496450557892086259e-07, +-2.499254703660564523e-07, +-2.502054218377438823e-07, +-2.504849098358268305e-07, +-2.507639339927104148e-07, +-2.510424939416288396e-07, +-2.513205893166494193e-07, +-2.515982197526632607e-07, +-2.518753848854305791e-07, +-2.521520843515083306e-07, +-2.524283177883011922e-07, +-2.527040848340468977e-07, +-2.529793851278219556e-07, +-2.532542183095219019e-07, +-2.535285840199222874e-07, +-2.538024819005934971e-07, +-2.540759115939559664e-07, +-2.543488727432686937e-07, +-2.546213649926158989e-07, +-2.548933879869581107e-07, +-2.551649413720707033e-07, +-2.554360247945256854e-07, +-2.557066379018183846e-07, +-2.559767803422284281e-07, +-2.562464517648758586e-07, +-2.565156518197628507e-07, +-2.567843801576927131e-07, +-2.570526364303224053e-07, +-2.573204202901533783e-07, +-2.575877313905289281e-07, +-2.578545693856222313e-07, +-2.581209339305017254e-07, +-2.583868246809889658e-07, +-2.586522412938403149e-07, +-2.589171834266052756e-07, +-2.591816507376776307e-07, +-2.594456428863379008e-07, +-2.597091595326838872e-07, +-2.599722003376212491e-07, +-2.602347649629808173e-07, +-2.604968530713883630e-07, +-2.607584643263167434e-07, +-2.610195983921379411e-07, +-2.612802549339830921e-07, +-2.615404336179217388e-07, +-2.618001341108204817e-07, +-2.620593560803952837e-07, +-2.623180991952498511e-07, +-2.625763631248135884e-07, +-2.628341475393273049e-07, +-2.630914521099578815e-07, +-2.633482765086765097e-07, +-2.636046204083021025e-07, +-2.638604834825575156e-07, +-2.641158654059423340e-07, +-2.643707658538464802e-07, +-2.646251845025383028e-07, +-2.648791210291007313e-07, +-2.651325751114739987e-07, +-2.653855464284982573e-07, +-2.656380346597840359e-07, +-2.658900394858819112e-07, +-2.661415605881486764e-07, +-2.663925976487974748e-07, +-2.666431503509457635e-07, +-2.668932183784933403e-07, +-2.671428014162356875e-07, +-2.673918991498480369e-07, +-2.676405112658258128e-07, +-2.678886374515359837e-07, +-2.681362773952021858e-07, +-2.683834307858959355e-07, +-2.686300973135812041e-07, +-2.688762766690480319e-07, +-2.691219685439571033e-07, +-2.693671726308263526e-07, +-2.696118886230379528e-07, +-2.698561162148192039e-07, +-2.700998551012953136e-07, +-2.703431049784173999e-07, +-2.705858655430080717e-07, +-2.708281364927559761e-07, +-2.710699175262074342e-07, +-2.713112083427611996e-07, +-2.715520086427141458e-07, +-2.717923181271914384e-07, +-2.720321364981921165e-07, +-2.722714634585796162e-07, +-2.725102987120713417e-07, +-2.727486419632827110e-07, +-2.729864929176579636e-07, +-2.732238512815197653e-07, +-2.734607167620548613e-07, +-2.736970890673170940e-07, +-2.739329679062126855e-07, +-2.741683529885509009e-07, +-2.744032440249733210e-07, +-2.746376407269962472e-07, +-2.748715428070081068e-07, +-2.751049499782605070e-07, +-2.753378619548651108e-07, +-2.755702784518330245e-07, +-2.758021991850108993e-07, +-2.760336238711271478e-07, +-2.762645522277762208e-07, +-2.764949839734122017e-07, +-2.767249188273920581e-07, +-2.769543565099211670e-07, +-2.771832967420396032e-07, +-2.774117392457262191e-07, +-2.776396837437876826e-07, +-2.778671299598988705e-07, +-2.780940776186407733e-07, +-2.783205264454324675e-07, +-2.785464761665762730e-07, +-2.787719265092463187e-07, +-2.789968772014776364e-07, +-2.792213279722119010e-07, +-2.794452785512433787e-07, +-2.796687286692038927e-07, +-2.798916780576655787e-07, +-2.801141264490312996e-07, +-2.803360735765772626e-07, +-2.805575191744871647e-07, +-2.807784629777966592e-07, +-2.809989047223863147e-07, +-2.812188441450742065e-07, +-2.814382809835126316e-07, +-2.816572149762270189e-07, +-2.818756458626649518e-07, +-2.820935733830718126e-07, +-2.823109972786469016e-07, +-2.825279172914240054e-07, +-2.827443331643114191e-07, +-2.829602446411282100e-07, +-2.831756514665500076e-07, +-2.833905533860964566e-07, +-2.836049501462311672e-07, +-2.838188414942517591e-07, +-2.840322271783345431e-07, +-2.842451069475794664e-07, +-2.844574805518881928e-07, +-2.846693477421170982e-07, +-2.848807082699592682e-07, +-2.850915618879986023e-07, +-2.853019083496981145e-07, +-2.855117474094011506e-07, +-2.857210788223222298e-07, +-2.859299023445877022e-07, +-2.861382177331704745e-07, +-2.863460247459277029e-07, +-2.865533231416392270e-07, +-2.867601126799029086e-07, +-2.869663931212291286e-07, +-2.871721642270316287e-07, +-2.873774257595777479e-07, +-2.875821774820236275e-07, +-2.877864191584102934e-07, +-2.879901505536503158e-07, +-2.881933714335713778e-07, +-2.883960815648522189e-07, +-2.885982807150550872e-07, +-2.887999686526693609e-07, +-2.890011451470052991e-07, +-2.892018099682864745e-07, +-2.894019628876432611e-07, +-2.896016036770595776e-07, +-2.898007321094125918e-07, +-2.899993479584672152e-07, +-2.901974509988717084e-07, +-2.903950410061512762e-07, +-2.905921177567435364e-07, +-2.907886810279451042e-07, +-2.909847305979469028e-07, +-2.911802662458256930e-07, +-2.913752877515359736e-07, +-2.915697948959457682e-07, +-2.917637874607854860e-07, +-2.919572652286765620e-07, +-2.921502279831298156e-07, +-2.923426755085442332e-07, +-2.925346075901941570e-07, +-2.927260240142733302e-07, +-2.929169245678313703e-07, +-2.931073090388188198e-07, +-2.932971772160719532e-07, +-2.934865288893066887e-07, +-2.936753638491550634e-07, +-2.938636818871107059e-07, +-2.940514827955647821e-07, +-2.942387663677968895e-07, +-2.944255323979764337e-07, +-2.946117806811534169e-07, +-2.947975110132953369e-07, +-2.949827231912390121e-07, +-2.951674170126843871e-07, +-2.953515922762770663e-07, +-2.955352487815154041e-07, +-2.957183863287875633e-07, +-2.959010047194019021e-07, +-2.960831037555282110e-07, +-2.962646832402367297e-07, +-2.964457429774868706e-07, +-2.966262827721221368e-07, +-2.968063024299039504e-07, +-2.969858017574658597e-07, +-2.971647805623069749e-07, +-2.973432386528725950e-07, +-2.975211758384635751e-07, +-2.976985919292698373e-07, +-2.978754867364044637e-07, +-2.980518600718438219e-07, +-2.982277117484653106e-07, +-2.984030415800374604e-07, +-2.985778493812264976e-07, +-2.987521349675771809e-07, +-2.989258981555648932e-07, +-2.990991387624951099e-07, +-2.992718566066295005e-07, +-2.994440515070877262e-07, +-2.996157232838794150e-07, +-2.997868717579400018e-07, +-2.999574967510761480e-07, +-3.001275980859639413e-07, +-3.002971755862247052e-07, +-3.004662290763393958e-07, +-3.006347583816839655e-07, +-3.008027633285622381e-07, +-3.009702437441099829e-07, +-3.011371994564232924e-07, +-3.013036302944520688e-07, +-3.014695360880533860e-07, +-3.016349166679770383e-07, +-3.017997718658685040e-07, +-3.019641015142597343e-07, +-3.021279054466022938e-07, +-3.022911834972198202e-07, +-3.024539355013292004e-07, +-3.026161612950761460e-07, +-3.027778607154518662e-07, +-3.029390336003684539e-07, +-3.030996797886503621e-07, +-3.032597991199916824e-07, +-3.034193914349926725e-07, +-3.035784565751485334e-07, +-3.037369943828410450e-07, +-3.038950047013744059e-07, +-3.040524873749225589e-07, +-3.042094422485582547e-07, +-3.043658691682793095e-07, +-3.045217679809341727e-07, +-3.046771385342929183e-07, +-3.048319806770350161e-07, +-3.049862942587151327e-07, +-3.051400791297907659e-07, +-3.052933351416166333e-07, +-3.054460621464451483e-07, +-3.055982599974161505e-07, +-3.057499285485930099e-07, +-3.059010676549100580e-07, +-3.060516771722055696e-07, +-3.062017569572175800e-07, +-3.063513068675722915e-07, +-3.065003267618169491e-07, +-3.066488164993723531e-07, +-3.067967759405629824e-07, +-3.069442049466152469e-07, +-3.070911033796480118e-07, +-3.072374711026732854e-07, +-3.073833079796225835e-07, +-3.075286138753014008e-07, +-3.076733886554217162e-07, +-3.078176321865906106e-07, +-3.079613443363107436e-07, +-3.081045249730005229e-07, +-3.082471739659558829e-07, +-3.083892911853762770e-07, +-3.085308765023606548e-07, +-3.086719297889064561e-07, +-3.088124509178975407e-07, +-3.089524397631451636e-07, +-3.090918961993390059e-07, +-3.092308201020443689e-07, +-3.093692113477709429e-07, +-3.095070698138974738e-07, +-3.096443953786984980e-07, +-3.097811879213704941e-07, +-3.099174473219852964e-07, +-3.100531734615223350e-07, +-3.101883662218571481e-07, +-3.103230254857573581e-07, +-3.104571511369105183e-07, +-3.105907430598876373e-07, +-3.107238011401360852e-07, +-3.108563252640460327e-07, +-3.109883153188767064e-07, +-3.111197711927861934e-07, +-3.112506927748518766e-07, +-3.113810799550278707e-07, +-3.115109326241736099e-07, +-3.116402506740489244e-07, +-3.117690339973098051e-07, +-3.118972824875033219e-07, +-3.120249960391068513e-07, +-3.121521745474431617e-07, +-3.122788179087845454e-07, +-3.124049260202722977e-07, +-3.125304987799461511e-07, +-3.126555360867673568e-07, +-3.127800378405782923e-07, +-3.129040039421029904e-07, +-3.130274342930021965e-07, +-3.131503287958078823e-07, +-3.132726873539509861e-07, +-3.133945098717884650e-07, +-3.135157962545274326e-07, +-3.136365464083191264e-07, +-3.137567602401897692e-07, +-3.138764376580615325e-07, +-3.139955785707819718e-07, +-3.141141828880554159e-07, +-3.142322505205063365e-07, +-3.143497813796699773e-07, +-3.144667753779595846e-07, +-3.145832324286856773e-07, +-3.146991524460853753e-07, +-3.148145353452532607e-07, +-3.149293810422019405e-07, +-3.150436894538529937e-07, +-3.151574604980084904e-07, +-3.152706940933748669e-07, +-3.153833901595542970e-07, +-3.154955486170441624e-07, +-3.156071693872549462e-07, +-3.157182523924780459e-07, +-3.158287975559015493e-07, +-3.159388048016359630e-07, +-3.160482740546521144e-07, +-3.161572052408376910e-07, +-3.162655982869892998e-07, +-3.163734531207843032e-07, +-3.164807696708004594e-07, +-3.165875478665158170e-07, +-3.166937876382975444e-07, +-3.167994889174283998e-07, +-3.169046516360709966e-07, +-3.170092757272890856e-07, +-3.171133611250484018e-07, +-3.172169077642050176e-07, +-3.173199155805096311e-07, +-3.174223845106273653e-07, +-3.175243144921013988e-07, +-3.176257054633775828e-07, +-3.177265573637964996e-07, +-3.178268701336007690e-07, +-3.179266437139190071e-07, +-3.180258780467934080e-07, +-3.181245730751467623e-07, +-3.182227287428033158e-07, +-3.183203449944831041e-07, +-3.184174217757966065e-07, +-3.185139590332669802e-07, +-3.186099567142976084e-07, +-3.187054147671923234e-07, +-3.188003331411486831e-07, +-3.188947117862636355e-07, +-3.189885506535208132e-07, +-3.190818496948172153e-07, +-3.191746088629273667e-07, +-3.192668281115301591e-07, +-3.193585073951948214e-07, +-3.194496466693874319e-07, +-3.195402458904651472e-07, +-3.196303050156938847e-07, +-3.197198240032177230e-07, +-3.198088028120837838e-07, +-3.198972414022295793e-07, +-3.199851397344853412e-07, +-3.200724977705898503e-07, +-3.201593154731648660e-07, +-3.202455928057111034e-07, +-3.203313297326542375e-07, +-3.204165262192933402e-07, +-3.205011822318197796e-07, +-3.205852977373374429e-07, +-3.206688727038243555e-07, +-3.207519071001589387e-07, +-3.208344008961115926e-07, +-3.209163540623424192e-07, +-3.209977665704185342e-07, +-3.210786383927882853e-07, +-3.211589695027814106e-07, +-3.212387598746474734e-07, +-3.213180094835085866e-07, +-3.213967183053804828e-07, +-3.214748863171898258e-07, +-3.215525134967250824e-07, +-3.216295998226824739e-07, +-3.217061452746587236e-07, +-3.217821498331307810e-07, +-3.218576134794619095e-07, +-3.219325361959304858e-07, +-3.220069179656693839e-07, +-3.220807587727369143e-07, +-3.221540586020644670e-07, +-3.222268174394713867e-07, +-3.222990352716902260e-07, +-3.223707120863125344e-07, +-3.224418478718360280e-07, +-3.225124426176565425e-07, +-3.225824963140470693e-07, +-3.226520089521696137e-07, +-3.227209805240949942e-07, +-3.227894110227495329e-07, +-3.228573004419847765e-07, +-3.229246487765187333e-07, +-3.229914560219661550e-07, +-3.230577221748283191e-07, +-3.231234472324973169e-07, +-3.231886311932479542e-07, +-3.232532740562550620e-07, +-3.233173758215727446e-07, +-3.233809364901400968e-07, +-3.234439560638006328e-07, +-3.235064345452620523e-07, +-3.235683719381312333e-07, +-3.236297682469091502e-07, +-3.236906234769732974e-07, +-3.237509376345933070e-07, +-3.238107107269224251e-07, +-3.238699427619984121e-07, +-3.239286337487573067e-07, +-3.239867836970083857e-07, +-3.240443926174517399e-07, +-3.241014605216730331e-07, +-3.241579874221413313e-07, +-3.242139733322128090e-07, +-3.242694182661351425e-07, +-3.243243222390316816e-07, +-3.243786852669138903e-07, +-3.244325073666770051e-07, +-3.244857885561036889e-07, +-3.245385288538518010e-07, +-3.245907282794807086e-07, +-3.246423868534184112e-07, +-3.246935045969804399e-07, +-3.247440815323674224e-07, +-3.247941176826573008e-07, +-3.248436130718237545e-07, +-3.248925677247120596e-07, +-3.249409816670507362e-07, +-3.249888549254562064e-07, +-3.250361875274232126e-07, +-3.250829795013244999e-07, +-3.251292308764275975e-07, +-3.251749416828676086e-07, +-3.252201119516680146e-07, +-3.252647417147298235e-07, +-3.253088310048380278e-07, +-3.253523798556531873e-07, +-3.253953883017257761e-07, +-3.254378563784771238e-07, +-3.254797841222119096e-07, +-3.255211715701136622e-07, +-3.255620187602420601e-07, +-3.256023257315482310e-07, +-3.256420925238515643e-07, +-3.256813191778445817e-07, +-3.257200057351134774e-07, +-3.257581522381142426e-07, +-3.257957587301770595e-07, +-3.258328252555205949e-07, +-3.258693518592319892e-07, +-3.259053385872799319e-07, +-3.259407854865086276e-07, +-3.259756926046352006e-07, +-3.260100599902642545e-07, +-3.260438876928687073e-07, +-3.260771757627907975e-07, +-3.261099242512630483e-07, +-3.261421332103861915e-07, +-3.261738026931323971e-07, +-3.262049327533622668e-07, +-3.262355234457923820e-07, +-3.262655748260245263e-07, +-3.262950869505376922e-07, +-3.263240598766789217e-07, +-3.263524936626663246e-07, +-3.263803883676060187e-07, +-3.264077440514552313e-07, +-3.264345607750632740e-07, +-3.264608386001427968e-07, +-3.264865775892759821e-07, +-3.265117778059316437e-07, +-3.265364393144299698e-07, +-3.265605621799754507e-07, +-3.265841464686457090e-07, +-3.266071922473818114e-07, +-3.266296995839964746e-07, +-3.266516685471819529e-07, +-3.266730992064843100e-07, +-3.266939916323341768e-07, +-3.267143458960268986e-07, +-3.267341620697242827e-07, +-3.267534402264599981e-07, +-3.267721804401348636e-07, +-3.267903827855174303e-07, +-3.268080473382491698e-07, +-3.268251741748339920e-07, +-3.268417633726420039e-07, +-3.268578150099215797e-07, +-3.268733291657737384e-07, +-3.268883059201705662e-07, +-3.269027453539591873e-07, +-3.269166475488406942e-07, +-3.269300125873898406e-07, +-3.269428405530402190e-07, +-3.269551315300958539e-07, +-3.269668856037269669e-07, +-3.269781028599617711e-07, +-3.269887833856975884e-07, +-3.269989272686925377e-07, +-3.270085345975714646e-07, +-3.270176054618171002e-07, +-3.270261399517819195e-07, +-3.270341381586782949e-07, +-3.270416001745790253e-07, +-3.270485260924199306e-07, +-3.270549160059991099e-07, +-3.270607700099725481e-07, +-3.270660881998650739e-07, +-3.270708706720533137e-07, +-3.270751175237810968e-07, +-3.270788288531474911e-07, +-3.270820047591120968e-07, +-3.270846453414968469e-07, +-3.270867507009800246e-07, +-3.270883209390983280e-07, +-3.270893561582473994e-07, +-3.270898564616821965e-07, +-3.270898219535126503e-07, +-3.270892527387098600e-07, +-3.270881489230985751e-07, +-3.270865106133607425e-07, +-3.270843379170352944e-07, +-3.270816309425153431e-07, +-3.270783897990535805e-07, +-3.270746145967551840e-07, +-3.270703054465803580e-07, +-3.270654624603434867e-07, +-3.270600857507147752e-07, +-3.270541754312148495e-07, +-3.270477316162241801e-07, +-3.270407544209698470e-07, +-3.270332439615334274e-07, +-3.270252003548527960e-07, +-3.270166237187135487e-07, +-3.270075141717536611e-07, +-3.269978718334652888e-07, +-3.269876968241875673e-07, +-3.269769892651134411e-07, +-3.269657492782826234e-07, +-3.269539769865896949e-07, +-3.269416725137757403e-07, +-3.269288359844313651e-07, +-3.269154675239938374e-07, +-3.269015672587532284e-07, +-3.268871353158438366e-07, +-3.268721718232484228e-07, +-3.268566769098013866e-07, +-3.268406507051766959e-07, +-3.268240933399006455e-07, +-3.268070049453430693e-07, +-3.267893856537196164e-07, +-3.267712355980917512e-07, +-3.267525549123660654e-07, +-3.267333437312945424e-07, +-3.267136021904721222e-07, +-3.266933304263379720e-07, +-3.266725285761742684e-07, +-3.266511967781079978e-07, +-3.266293351711060323e-07, +-3.266069438949794715e-07, +-3.265840230903808891e-07, +-3.265605728988053390e-07, +-3.265365934625874435e-07, +-3.265120849249029288e-07, +-3.264870474297673011e-07, +-3.264614811220382822e-07, +-3.264353861474096683e-07, +-3.264087626524159359e-07, +-3.263816107844320297e-07, +-3.263539306916689161e-07, +-3.263257225231753831e-07, +-3.262969864288392045e-07, +-3.262677225593832759e-07, +-3.262379310663689495e-07, +-3.262076121021923816e-07, +-3.261767658200859615e-07, +-3.261453923741188943e-07, +-3.261134919191938125e-07, +-3.260810646110476762e-07, +-3.260481106062521433e-07, +-3.260146300622138346e-07, +-3.259806231371696750e-07, +-3.259460899901917635e-07, +-3.259110307811843566e-07, +-3.258754456708839732e-07, +-3.258393348208575952e-07, +-3.258026983935041496e-07, +-3.257655365520538735e-07, +-3.257278494605650843e-07, +-3.256896372839277271e-07, +-3.256509001878620511e-07, +-3.256116383389163330e-07, +-3.255718519044660302e-07, +-3.255315410527169042e-07, +-3.254907059527017381e-07, +-3.254493467742786430e-07, +-3.254074636881358220e-07, +-3.253650568657847414e-07, +-3.253221264795670659e-07, +-3.252786727026453406e-07, +-3.252346957090089209e-07, +-3.251901956734723840e-07, +-3.251451727716735172e-07, +-3.250996271800737415e-07, +-3.250535590759588527e-07, +-3.250069686374362157e-07, +-3.249598560434372523e-07, +-3.249122214737124656e-07, +-3.248640651088359391e-07, +-3.248153871302035900e-07, +-3.247661877200278755e-07, +-3.247164670613437745e-07, +-3.246662253380079939e-07, +-3.246154627346938862e-07, +-3.245641794368925611e-07, +-3.245123756309155329e-07, +-3.244600515038903792e-07, +-3.244072072437631758e-07, +-3.243538430392960622e-07, +-3.242999590800659704e-07, +-3.242455555564701839e-07, +-3.241906326597191378e-07, +-3.241351905818327132e-07, +-3.240792295156552717e-07, +-3.240227496548377620e-07, +-3.239657511938455024e-07, +-3.239082343279593446e-07, +-3.238501992532720747e-07, +-3.237916461666853421e-07, +-3.237325752659193479e-07, +-3.236729867494962743e-07, +-3.236128808167545259e-07, +-3.235522576678444940e-07, +-3.234911175037163810e-07, +-3.234294605261425934e-07, +-3.233672869376957192e-07, +-3.233045969417581100e-07, +-3.232413907425208749e-07, +-3.231776685449829807e-07, +-3.231134305549434170e-07, +-3.230486769790204127e-07, +-3.229834080246215789e-07, +-3.229176238999738191e-07, +-3.228513248141040593e-07, +-3.227845109768359132e-07, +-3.227171825988087400e-07, +-3.226493398914585333e-07, +-3.225809830670222096e-07, +-3.225121123385425839e-07, +-3.224427279198649295e-07, +-3.223728300256284538e-07, +-3.223024188712852515e-07, +-3.222314946730745754e-07, +-3.221600576480429008e-07, +-3.220881080140366197e-07, +-3.220156459896909765e-07, +-3.219426717944509789e-07, +-3.218691856485582165e-07, +-3.217951877730410135e-07, +-3.217206783897338576e-07, +-3.216456577212648007e-07, +-3.215701259910504822e-07, +-3.214940834233158228e-07, +-3.214175302430711546e-07, +-3.213404666761207440e-07, +-3.212628929490643274e-07, +-3.211848092892945698e-07, +-3.211062159249945770e-07, +-3.210271130851443536e-07, +-3.209475009995058219e-07, +-3.208673798986397619e-07, +-3.207867500138929472e-07, +-3.207056115774054509e-07, +-3.206239648221025984e-07, +-3.205418099817028028e-07, +-3.204591472907051767e-07, +-3.203759769844025026e-07, +-3.202922992988721274e-07, +-3.202081144709786092e-07, +-3.201234227383746172e-07, +-3.200382243394914558e-07, +-3.199525195135513464e-07, +-3.198663085005577921e-07, +-3.197795915412989666e-07, +-3.196923688773468136e-07, +-3.196046407510559880e-07, +-3.195164074055590389e-07, +-3.194276690847747734e-07, +-3.193384260334008457e-07, +-3.192486784969159801e-07, +-3.191584267215782241e-07, +-3.190676709544278074e-07, +-3.189764114432752300e-07, +-3.188846484367157152e-07, +-3.187923821841242330e-07, +-3.186996129356469770e-07, +-3.186063409422132224e-07, +-3.185125664555179627e-07, +-3.184182897280392201e-07, +-3.183235110130286225e-07, +-3.182282305645107157e-07, +-3.181324486372862450e-07, +-3.180361654869281323e-07, +-3.179393813697747524e-07, +-3.178420965429452860e-07, +-3.177443112643276487e-07, +-3.176460257925791271e-07, +-3.175472403871279134e-07, +-3.174479553081735292e-07, +-3.173481708166759731e-07, +-3.172478871743822430e-07, +-3.171471046437854139e-07, +-3.170458234881585726e-07, +-3.169440439715420586e-07, +-3.168417663587321884e-07, +-3.167389909152968197e-07, +-3.166357179075806454e-07, +-3.165319476026703060e-07, +-3.164276802684310244e-07, +-3.163229161734913589e-07, +-3.162176555872264742e-07, +-3.161118987797998585e-07, +-3.160056460221112298e-07, +-3.158988975858353947e-07, +-3.157916537434079009e-07, +-3.156839147680129148e-07, +-3.155756809335979908e-07, +-3.154669525148838659e-07, +-3.153577297873252840e-07, +-3.152480130271492183e-07, +-3.151378025113371365e-07, +-3.150270985176169014e-07, +-3.149159013244889755e-07, +-3.148042112111996869e-07, +-3.146920284577412820e-07, +-3.145793533448699781e-07, +-3.144661861540978103e-07, +-3.143525271676701328e-07, +-3.142383766686143758e-07, +-3.141237349406795886e-07, +-3.140086022683826028e-07, +-3.138929789369886039e-07, +-3.137768652324968901e-07, +-3.136602614416784065e-07, +-3.135431678520417054e-07, +-3.134255847518330515e-07, +-3.133075124300601394e-07, +-3.131889511764696469e-07, +-3.130699012815563408e-07, +-3.129503630365618593e-07, +-3.128303367334605766e-07, +-3.127098226649835855e-07, +-3.125888211245988972e-07, +-3.124673324065216059e-07, +-3.123453568057031423e-07, +-3.122228946178420729e-07, +-3.120999461393664185e-07, +-3.119765116674546713e-07, +-3.118525915000220829e-07, +-3.117281859357203474e-07, +-3.116032952739417304e-07, +-3.114779198148177454e-07, +-3.113520598592061308e-07, +-3.112257157087111788e-07, +-3.110988876656697059e-07, +-3.109715760331520597e-07, +-3.108437811149690528e-07, +-3.107155032156491470e-07, +-3.105867426404704280e-07, +-3.104574996954356181e-07, +-3.103277746872807586e-07, +-3.101975679234712919e-07, +-3.100668797122088379e-07, +-3.099357103624108653e-07, +-3.098040601837347260e-07, +-3.096719294865664322e-07, +-3.095393185820164207e-07, +-3.094062277819225710e-07, +-3.092726573988534344e-07, +-3.091386077460899697e-07, +-3.090040791376518015e-07, +-3.088690718882781618e-07, +-3.087335863134320722e-07, +-3.085976227293053204e-07, +-3.084611814527963313e-07, +-3.083242628015397600e-07, +-3.081868670938875400e-07, +-3.080489946489112122e-07, +-3.079106457864019247e-07, +-3.077718208268732391e-07, +-3.076325200915475775e-07, +-3.074927439023745928e-07, +-3.073524925820179337e-07, +-3.072117664538579447e-07, +-3.070705658419898662e-07, +-3.069288910712291810e-07, +-3.067867424670853569e-07, +-3.066441203558190210e-07, +-3.065010250643656209e-07, +-3.063574569203941347e-07, +-3.062134162522856836e-07, +-3.060689033891162205e-07, +-3.059239186606833701e-07, +-3.057784623975085472e-07, +-3.056325349307904750e-07, +-3.054861365924601896e-07, +-3.053392677151536176e-07, +-3.051919286321923585e-07, +-3.050441196776424480e-07, +-3.048958411862377015e-07, +-3.047470934934364119e-07, +-3.045978769354038275e-07, +-3.044481918489922458e-07, +-3.042980385717651016e-07, +-3.041474174420059134e-07, +-3.039963287986670382e-07, +-3.038447729814211818e-07, +-3.036927503306442986e-07, +-3.035402611873868464e-07, +-3.033873058934310134e-07, +-3.032338847912433903e-07, +-3.030799982239742295e-07, +-3.029256465354853438e-07, +-3.027708300703373485e-07, +-3.026155491737623967e-07, +-3.024598041917250608e-07, +-3.023035954708448282e-07, +-3.021469233584593645e-07, +-3.019897882025947083e-07, +-3.018321903519477484e-07, +-3.016741301559395336e-07, +-3.015156079646640277e-07, +-3.013566241288942501e-07, +-3.011971790001063104e-07, +-3.010372729304639505e-07, +-3.008769062728131968e-07, +-3.007160793806932138e-07, +-3.005547926083133806e-07, +-3.003930463105838902e-07, +-3.002308408430940444e-07, +-3.000681765621175473e-07, +-2.999050538246082180e-07, +-2.997414729882140186e-07, +-2.995774344112408445e-07, +-2.994129384526940282e-07, +-2.992479854722558404e-07, +-2.990825758302854902e-07, +-2.989167098878207657e-07, +-2.987503880065836989e-07, +-2.985836105489573781e-07, +-2.984163778780165997e-07, +-2.982486903575079106e-07, +-2.980805483518498719e-07, +-2.979119522261452360e-07, +-2.977429023461488646e-07, +-2.975733990783074865e-07, +-2.974034427897338103e-07, +-2.972330338482139355e-07, +-2.970621726222013180e-07, +-2.968908594808270399e-07, +-2.967190947938724399e-07, +-2.965468789318054829e-07, +-2.963742122657550310e-07, +-2.962010951675175144e-07, +-2.960275280095571958e-07, +-2.958535111650070174e-07, +-2.956790450076467898e-07, +-2.955041299119390852e-07, +-2.953287662530036677e-07, +-2.951529544066222042e-07, +-2.949766947492434534e-07, +-2.947999876579617718e-07, +-2.946228335105394014e-07, +-2.944452326854200751e-07, +-2.942671855616668127e-07, +-2.940886925190259781e-07, +-2.939097539379026618e-07, +-2.937303701993366468e-07, +-2.935505416850432250e-07, +-2.933702687773887918e-07, +-2.931895518593904228e-07, +-2.930083913147275203e-07, +-2.928267875277090440e-07, +-2.926447408833127390e-07, +-2.924622517671848181e-07, +-2.922793205655828932e-07, +-2.920959476654414614e-07, +-2.919121334543422059e-07, +-2.917278783204956258e-07, +-2.915431826527722180e-07, +-2.913580468407107352e-07, +-2.911724712744529119e-07, +-2.909864563448140853e-07, +-2.908000024432521732e-07, +-2.906131099618443272e-07, +-2.904257792933555958e-07, +-2.902380108311443210e-07, +-2.900498049692400124e-07, +-2.898611621023096250e-07, +-2.896720826256413595e-07, +-2.894825669351729321e-07, +-2.892926154275061856e-07, +-2.891022284998327626e-07, +-2.889114065500118206e-07, +-2.887201499765373681e-07, +-2.885284591785088836e-07, +-2.883363345557121538e-07, +-2.881437765085127597e-07, +-2.879507854379423146e-07, +-2.877573617456528838e-07, +-2.875635058339287894e-07, +-2.873692181056841757e-07, +-2.871744989644711614e-07, +-2.869793488144464352e-07, +-2.867837680604185304e-07, +-2.865877571078206142e-07, +-2.863913163626851298e-07, +-2.861944462317136232e-07, +-2.859971471222088222e-07, +-2.857994194420837419e-07, +-2.856012635998947716e-07, +-2.854026800048164761e-07, +-2.852036690666403778e-07, +-2.850042311957911560e-07, +-2.848043668032880544e-07, +-2.846040763007912560e-07, +-2.844033601005813422e-07, +-2.842022186155237180e-07, +-2.840006522591478621e-07, +-2.837986614455756999e-07, +-2.835962465895282736e-07, +-2.833934081063655002e-07, +-2.831901464120519723e-07, +-2.829864619231647401e-07, +-2.827823550568926235e-07, +-2.825778262310440471e-07, +-2.823728758640136880e-07, +-2.821675043748281098e-07, +-2.819617121831175992e-07, +-2.817554997091179651e-07, +-2.815488673736805451e-07, +-2.813418155982377940e-07, +-2.811343448048534181e-07, +-2.809264554161863231e-07, +-2.807181478554990316e-07, +-2.805094225466585830e-07, +-2.803002799141416685e-07, +-2.800907203830000091e-07, +-2.798807443789128182e-07, +-2.796703523281487383e-07, +-2.794595446575767993e-07, +-2.792483217946710777e-07, +-2.790366841674780850e-07, +-2.788246322046676434e-07, +-2.786121663354950335e-07, +-2.783992869898094649e-07, +-2.781859945980558760e-07, +-2.779722895912795929e-07, +-2.777581724010934535e-07, +-2.775436434597168774e-07, +-2.773287031999893122e-07, +-2.771133520552854245e-07, +-2.768975904596038795e-07, +-2.766814188475313950e-07, +-2.764648376542166952e-07, +-2.762478473154205383e-07, +-2.760304482674809358e-07, +-2.758126409473181283e-07, +-2.755944257924506264e-07, +-2.753758032409485179e-07, +-2.751567737314845017e-07, +-2.749373377033373816e-07, +-2.747174955963151982e-07, +-2.744972478508404088e-07, +-2.742765949079132529e-07, +-2.740555372090886706e-07, +-2.738340751965231014e-07, +-2.736122093129398088e-07, +-2.733899400016399971e-07, +-2.731672677064970946e-07, +-2.729441928719690352e-07, +-2.727207159430507187e-07, +-2.724968373653719490e-07, +-2.722725575850709618e-07, +-2.720478770488919385e-07, +-2.718227962041503318e-07, +-2.715973154987006247e-07, +-2.713714353809858292e-07, +-2.711451563000422513e-07, +-2.709184787054171692e-07, +-2.706914030472621136e-07, +-2.704639297762905683e-07, +-2.702360593437455718e-07, +-2.700077922014939492e-07, +-2.697791288019037045e-07, +-2.695500695979379353e-07, +-2.693206150431118459e-07, +-2.690907655915016940e-07, +-2.688605216977406084e-07, +-2.686298838170284361e-07, +-2.683988524050956900e-07, +-2.681674279182540009e-07, +-2.679356108133727175e-07, +-2.677034015478383552e-07, +-2.674708005796425815e-07, +-2.672378083673090536e-07, +-2.670044253698870124e-07, +-2.667706520470093577e-07, +-2.665364888588478611e-07, +-2.663019362661230124e-07, +-2.660669947301136023e-07, +-2.658316647126164350e-07, +-2.655959466760063617e-07, +-2.653598410831999642e-07, +-2.651233483976229969e-07, +-2.648864690833007018e-07, +-2.646492036047733698e-07, +-2.644115524271055524e-07, +-2.641735160159285719e-07, +-2.639350948374101873e-07, +-2.636962893582512587e-07, +-2.634571000456952769e-07, +-2.632175273675325453e-07, +-2.629775717920602638e-07, +-2.627372337881413970e-07, +-2.624965138251643878e-07, +-2.622554123730510981e-07, +-2.620139299022684025e-07, +-2.617720668837855721e-07, +-2.615298237891317666e-07, +-2.612872010903580770e-07, +-2.610441992600455721e-07, +-2.608008187713045576e-07, +-2.605570600977806639e-07, +-2.603129237136224473e-07, +-2.600684100935297766e-07, +-2.598235197127201107e-07, +-2.595782530469346396e-07, +-2.593326105724488192e-07, +-2.590865927660306553e-07, +-2.588402001050001542e-07, +-2.585934330671881363e-07, +-2.583462921309466645e-07, +-2.580987777751459746e-07, +-2.578508904791848506e-07, +-2.576026307229497029e-07, +-2.573539989868626902e-07, +-2.571049957518935251e-07, +-2.568556214994639182e-07, +-2.566058767115529805e-07, +-2.563557618706502137e-07, +-2.561052774597283514e-07, +-2.558544239623011166e-07, +-2.556032018623820880e-07, +-2.553516116444952870e-07, +-2.550996537936807373e-07, +-2.548473287954608476e-07, +-2.545946371358801166e-07, +-2.543415793015214385e-07, +-2.540881557794115526e-07, +-2.538343670571219990e-07, +-2.535802136227268735e-07, +-2.533256959647723336e-07, +-2.530708145723354678e-07, +-2.528155699349863905e-07, +-2.525599625427916307e-07, +-2.523039928863181018e-07, +-2.520476614566400901e-07, +-2.517909687452875855e-07, +-2.515339152443585137e-07, +-2.512765014463731519e-07, +-2.510187278443889025e-07, +-2.507605949319545524e-07, +-2.505021032030809452e-07, +-2.502432531522909561e-07, +-2.499840452746285441e-07, +-2.497244800655653669e-07, +-2.494645580211028486e-07, +-2.492042796377298807e-07, +-2.489436454123822172e-07, +-2.486826558425531720e-07, +-2.484213114261475578e-07, +-2.481596126615974657e-07, +-2.478975600478159953e-07, +-2.476351540841582916e-07, +-2.473723952705231890e-07, +-2.471092841072589787e-07, +-2.468458210951718260e-07, +-2.465820067355782338e-07, +-2.463178415302719549e-07, +-2.460533259814815878e-07, +-2.457884605919744438e-07, +-2.455232458649610974e-07, +-2.452576823041068735e-07, +-2.449917704135795997e-07, +-2.447255106980086835e-07, +-2.444589036624958589e-07, +-2.441919498126233396e-07, +-2.439246496544096672e-07, +-2.436570036943757795e-07, +-2.433890124395079531e-07, +-2.431206763972185222e-07, +-2.428519960754484755e-07, +-2.425829719825711061e-07, +-2.423136046274018581e-07, +-2.420438945192525902e-07, +-2.417738421678852000e-07, +-2.415034480835213124e-07, +-2.412327127768582142e-07, +-2.409616367590147498e-07, +-2.406902205416017311e-07, +-2.404184646366782092e-07, +-2.401463695567583035e-07, +-2.398739358148109903e-07, +-2.396011639242714845e-07, +-2.393280543989949175e-07, +-2.390546077533242590e-07, +-2.387808245020401826e-07, +-2.385067051603756778e-07, +-2.382322502440126086e-07, +-2.379574602690937305e-07, +-2.376823357521760780e-07, +-2.374068772102962647e-07, +-2.371310851609278938e-07, +-2.368549601219874611e-07, +-2.365785026118480130e-07, +-2.363017131492917921e-07, +-2.360245922535767032e-07, +-2.357471404443912084e-07, +-2.354693582418636976e-07, +-2.351912461665632029e-07, +-2.349128047395079224e-07, +-2.346340344821192946e-07, +-2.343549359162890466e-07, +-2.340755095643339045e-07, +-2.337957559490055986e-07, +-2.335156755934895134e-07, +-2.332352690214136878e-07, +-2.329545367568070190e-07, +-2.326734793241610695e-07, +-2.323920972483866564e-07, +-2.321103910548238840e-07, +-2.318283612692517783e-07, +-2.315460084178429975e-07, +-2.312633330272183859e-07, +-2.309803356244602887e-07, +-2.306970167370044754e-07, +-2.304133768927565276e-07, +-2.301294166200450671e-07, +-2.298451364475849361e-07, +-2.295605369045468659e-07, +-2.292756185205085870e-07, +-2.289903818254658408e-07, +-2.287048273498472289e-07, +-2.284189556244595797e-07, +-2.281327671805491993e-07, +-2.278462625498129887e-07, +-2.275594422642916652e-07, +-2.272723068564853553e-07, +-2.269848568593045201e-07, +-2.266970928060268625e-07, +-2.264090152304085532e-07, +-2.261206246665796482e-07, +-2.258319216490543862e-07, +-2.255429067127900305e-07, +-2.252535803931503144e-07, +-2.249639432258550954e-07, +-2.246739957471148223e-07, +-2.243837384934566279e-07, +-2.240931720018592726e-07, +-2.238022968097027192e-07, +-2.235111134547186611e-07, +-2.232196224751107741e-07, +-2.229278244094456082e-07, +-2.226357197966617464e-07, +-2.223433091761322465e-07, +-2.220505930876243543e-07, +-2.217575720712521225e-07, +-2.214642466676077541e-07, +-2.211706174175911367e-07, +-2.208766848625423769e-07, +-2.205824495441798874e-07, +-2.202879120046138600e-07, +-2.199930727863411305e-07, +-2.196979324322580434e-07, +-2.194024914856131232e-07, +-2.191067504900762937e-07, +-2.188107099897026667e-07, +-2.185143705288816673e-07, +-2.182177326524607802e-07, +-2.179207969056309620e-07, +-2.176235638339407230e-07, +-2.173260339833552873e-07, +-2.170282079002058502e-07, +-2.167300861312023629e-07, +-2.164316692234445708e-07, +-2.161329577243700000e-07, +-2.158339521818310906e-07, +-2.155346531440390273e-07, +-2.152350611595800189e-07, +-2.149351767774121744e-07, +-2.146350005468771502e-07, +-2.143345330176498835e-07, +-2.140337747398099285e-07, +-2.137327262637969872e-07, +-2.134313881404147214e-07, +-2.131297609208339018e-07, +-2.128278451566036321e-07, +-2.125256413995992027e-07, +-2.122231502020980597e-07, +-2.119203721167261236e-07, +-2.116173076964710511e-07, +-2.113139574946962901e-07, +-2.110103220650831380e-07, +-2.107064019617113149e-07, +-2.104021977390051778e-07, +-2.100977099517453932e-07, +-2.097929391550682490e-07, +-2.094878859044772222e-07, +-2.091825507557925533e-07, +-2.088769342652238799e-07, +-2.085710369893197059e-07, +-2.082648594849806887e-07, +-2.079584023094548755e-07, +-2.076516660203533199e-07, +-2.073446511755957660e-07, +-2.070373583334885491e-07, +-2.067297880526697767e-07, +-2.064219408921217695e-07, +-2.061138174111842428e-07, +-2.058054181695007588e-07, +-2.054967437270823595e-07, +-2.051877946443202460e-07, +-2.048785714818666113e-07, +-2.045690748007667511e-07, +-2.042593051624008304e-07, +-2.039492631284483872e-07, +-2.036389492609638778e-07, +-2.033283641223228895e-07, +-2.030175082752357996e-07, +-2.027063822827575424e-07, +-2.023949867082378992e-07, +-2.020833221153815051e-07, +-2.017713890682637308e-07, +-2.014591881312088426e-07, +-2.011467198689227743e-07, +-2.008339848464377794e-07, +-2.005209836290595174e-07, +-2.002077167824959360e-07, +-1.998941848727432118e-07, +-1.995803884660909393e-07, +-1.992663281291916135e-07, +-1.989520044290177756e-07, +-1.986374179328088085e-07, +-1.983225692082178972e-07, +-1.980074588231198849e-07, +-1.976920873457633677e-07, +-1.973764553447109530e-07, +-1.970605633887867958e-07, +-1.967444120472098747e-07, +-1.964280018894710125e-07, +-1.961113334853472767e-07, +-1.957944074049653736e-07, +-1.954772242187649886e-07, +-1.951597844974384079e-07, +-1.948420888120802851e-07, +-1.945241377339994140e-07, +-1.942059318348624072e-07, +-1.938874716866295328e-07, +-1.935687578615633439e-07, +-1.932497909322293666e-07, +-1.929305714715109233e-07, +-1.926111000525491519e-07, +-1.922913772488269683e-07, +-1.919714036341256027e-07, +-1.916511797824708925e-07, +-1.913307062682660547e-07, +-1.910099836661691311e-07, +-1.906890125511081814e-07, +-1.903677934983442290e-07, +-1.900463270834178444e-07, +-1.897246138821619039e-07, +-1.894026544707128923e-07, +-1.890804494254579101e-07, +-1.887579993231128656e-07, +-1.884353047406668086e-07, +-1.881123662553987918e-07, +-1.877891844448710947e-07, +-1.874657598869450523e-07, +-1.871420931597261566e-07, +-1.868181848416420108e-07, +-1.864940355113901301e-07, +-1.861696457479467037e-07, +-1.858450161305701149e-07, +-1.855201472388105767e-07, +-1.851950396524541210e-07, +-1.848696939516054232e-07, +-1.845441107166311033e-07, +-1.842182905281728557e-07, +-1.838922339671589626e-07, +-1.835659416147514613e-07, +-1.832394140524235674e-07, +-1.829126518619050684e-07, +-1.825856556251975169e-07, +-1.822584259245695456e-07, +-1.819309633425716373e-07, +-1.816032684619802739e-07, +-1.812753418658777692e-07, +-1.809471841375990908e-07, +-1.806187958607421839e-07, +-1.802901776191806231e-07, +-1.799613299970090855e-07, +-1.796322535786241093e-07, +-1.793029489486683223e-07, +-1.789734166920417444e-07, +-1.786436573939044347e-07, +-1.783136716396854910e-07, +-1.779834600150266167e-07, +-1.776530231058546472e-07, +-1.773223614983893592e-07, +-1.769914757790210743e-07, +-1.766603665344462634e-07, +-1.763290343516120133e-07, +-1.759974798176749456e-07, +-1.756657035200795406e-07, +-1.753337060465053836e-07, +-1.750014879848772755e-07, +-1.746690499233808241e-07, +-1.743363924504026223e-07, +-1.740035161546013457e-07, +-1.736704216249211467e-07, +-1.733371094504623228e-07, +-1.730035802206210241e-07, +-1.726698345250340907e-07, +-1.723358729535197069e-07, +-1.720016960962316675e-07, +-1.716673045434617542e-07, +-1.713326988857943191e-07, +-1.709978797140322224e-07, +-1.706628476192270874e-07, +-1.703276031926048937e-07, +-1.699921470257229695e-07, +-1.696564797102689804e-07, +-1.693206018382168627e-07, +-1.689845140017678220e-07, +-1.686482167932958587e-07, +-1.683117108054831345e-07, +-1.679749966311963054e-07, +-1.676380748634968184e-07, +-1.673009460957120361e-07, +-1.669636109213913758e-07, +-1.666260699342476001e-07, +-1.662883237283151853e-07, +-1.659503728977458420e-07, +-1.656122180369665669e-07, +-1.652738597406223880e-07, +-1.649352986035152993e-07, +-1.645965352207495797e-07, +-1.642575701875994702e-07, +-1.639184040995233890e-07, +-1.635790375522361138e-07, +-1.632394711416608190e-07, +-1.628997054638750241e-07, +-1.625597411152493224e-07, +-1.622195786923207752e-07, +-1.618792187918036329e-07, +-1.615386620106599291e-07, +-1.611979089460438683e-07, +-1.608569601953124663e-07, +-1.605158163560387325e-07, +-1.601744780259558711e-07, +-1.598329458030387292e-07, +-1.594912202854499039e-07, +-1.591493020715471276e-07, +-1.588071917598901763e-07, +-1.584648899492451319e-07, +-1.581223972385335328e-07, +-1.577797142269118635e-07, +-1.574368415137183765e-07, +-1.570937796984812183e-07, +-1.567505293809367996e-07, +-1.564070911609651300e-07, +-1.560634656386830174e-07, +-1.557196534143776029e-07, +-1.553756550885256040e-07, +-1.550314712617881005e-07, +-1.546871025350278980e-07, +-1.543425495092457101e-07, +-1.539978127856713725e-07, +-1.536528929657016393e-07, +-1.533077906509144505e-07, +-1.529625064430669728e-07, +-1.526170409441111110e-07, +-1.522713947561322837e-07, +-1.519255684814367996e-07, +-1.515795627224926978e-07, +-1.512333780819418182e-07, +-1.508870151626172180e-07, +-1.505404745674778184e-07, +-1.501937568997002546e-07, +-1.498468627626164335e-07, +-1.494997927597284360e-07, +-1.491525474947074059e-07, +-1.488051275714059898e-07, +-1.484575335938008456e-07, +-1.481097661660775570e-07, +-1.477618258925715531e-07, +-1.474137133777824816e-07, +-1.470654292263720646e-07, +-1.467169740431791335e-07, +-1.463683484331420196e-07, +-1.460195530014657902e-07, +-1.456705883534069434e-07, +-1.453214550944402735e-07, +-1.449721538301966407e-07, +-1.446226851664179193e-07, +-1.442730497090305841e-07, +-1.439232480641578595e-07, +-1.435732808379870270e-07, +-1.432231486369162791e-07, +-1.428728520674944745e-07, +-1.425223917363582719e-07, +-1.421717682503990490e-07, +-1.418209822165498202e-07, +-1.414700342419497731e-07, +-1.411189249338678237e-07, +-1.407676548997337184e-07, +-1.404162247470582276e-07, +-1.400646350836004347e-07, +-1.397128865171551042e-07, +-1.393609796557166888e-07, +-1.390089151074195076e-07, +-1.386566934804744566e-07, +-1.383043153833206277e-07, +-1.379517814244882220e-07, +-1.375990922126109902e-07, +-1.372462483565028101e-07, +-1.368932504651093521e-07, +-1.365400991474485496e-07, +-1.361867950127746313e-07, +-1.358333386703648813e-07, +-1.354797307296880132e-07, +-1.351259718003380218e-07, +-1.347720624919763207e-07, +-1.344180034144802639e-07, +-1.340637951778068793e-07, +-1.337094383920056539e-07, +-1.333549336672942372e-07, +-1.330002816140137335e-07, +-1.326454828425619193e-07, +-1.322905379635492290e-07, +-1.319354475876586243e-07, +-1.315802123256594114e-07, +-1.312248327884834473e-07, +-1.308693095871622742e-07, +-1.305136433328421015e-07, +-1.301578346367979932e-07, +-1.298018841103711882e-07, +-1.294457923650594938e-07, +-1.290895600124559820e-07, +-1.287331876642632571e-07, +-1.283766759322919462e-07, +-1.280200254284739876e-07, +-1.276632367648037883e-07, +-1.273063105534246741e-07, +-1.269492474065694918e-07, +-1.265920479365741084e-07, +-1.262347127558914404e-07, +-1.258772424770299379e-07, +-1.255196377126428935e-07, +-1.251618990754680650e-07, +-1.248040271783415189e-07, +-1.244460226341950100e-07, +-1.240878860560722866e-07, +-1.237296180570650869e-07, +-1.233712192504057036e-07, +-1.230126902494031122e-07, +-1.226540316674581650e-07, +-1.222952441180638024e-07, +-1.219363282148158796e-07, +-1.215772845713538474e-07, +-1.212181138014508025e-07, +-1.208588165189507540e-07, +-1.204993933377835529e-07, +-1.201398448719784438e-07, +-1.197801717356027880e-07, +-1.194203745428526428e-07, +-1.190604539079885856e-07, +-1.187004104453534222e-07, +-1.183402447693683751e-07, +-1.179799574945486478e-07, +-1.176195492354404266e-07, +-1.172590206067119896e-07, +-1.168983722230929191e-07, +-1.165376046993861186e-07, +-1.161767186504675348e-07, +-1.158157146913008753e-07, +-1.154545934368591515e-07, +-1.150933555022943901e-07, +-1.147320015027180527e-07, +-1.143705320533735530e-07, +-1.140089477695698437e-07, +-1.136472492666360606e-07, +-1.132854371599972796e-07, +-1.129235120651888360e-07, +-1.125614745977163267e-07, +-1.121993253732091077e-07, +-1.118370650073570188e-07, +-1.114746941158492114e-07, +-1.111122133145412391e-07, +-1.107496232192373571e-07, +-1.103869244458618612e-07, +-1.100241176103941175e-07, +-1.096612033288216447e-07, +-1.092981822172170751e-07, +-1.089350548917528323e-07, +-1.085718219685589217e-07, +-1.082084840638786132e-07, +-1.078450417940048867e-07, +-1.074814957752161905e-07, +-1.071178466239338034e-07, +-1.067540949565772312e-07, +-1.063902413895812657e-07, +-1.060262865394717945e-07, +-1.056622310228177848e-07, +-1.052980754561683249e-07, +-1.049338204562243736e-07, +-1.045694666396166918e-07, +-1.042050146230782138e-07, +-1.038404650233804401e-07, +-1.034758184572700694e-07, +-1.031110755416235549e-07, +-1.027462368933061800e-07, +-1.023813031291852525e-07, +-1.020162748662093163e-07, +-1.016511527213430222e-07, +-1.012859373115824272e-07, +-1.009206292539697383e-07, +-1.005552291655287796e-07, +-1.001897376633591843e-07, +-9.982415536457146489e-08, +-9.945848288630248433e-08, +-9.909272084571449025e-08, +-9.872686986000977903e-08, +-9.836093054636486545e-08, +-9.799490352202811653e-08, +-9.762878940425108891e-08, +-9.726258881030650178e-08, +-9.689630235748541793e-08, +-9.652993066311329759e-08, +-9.616347434448431374e-08, +-9.579693401895629917e-08, +-9.543031030388725872e-08, +-9.506360381664796890e-08, +-9.469681517463791270e-08, +-9.432994499522128889e-08, +-9.396299389582046358e-08, +-9.359596249385193982e-08, +-9.322885140674067778e-08, +-9.286166125192063731e-08, +-9.249439264684696736e-08, +-9.212704620893329901e-08, +-9.175962255564641466e-08, +-9.139212230443998094e-08, +-9.102454607277086732e-08, +-9.065689447809747851e-08, +-9.028916813789484225e-08, +-8.992136766959032744e-08, +-8.955349369065702954e-08, +-8.918554681855000481e-08, +-8.881752767072100085e-08, +-8.844943686463354425e-08, +-8.808127501769716329e-08, +-8.771304274736319526e-08, +-8.734474067106025314e-08, +-8.697636940620751343e-08, +-8.660792957021519260e-08, +-8.623942178049881435e-08, +-8.587084665441446444e-08, +-8.550220480935355259e-08, +-8.513349686267850408e-08, +-8.476472343173635205e-08, +-8.439588513387563838e-08, +-8.402698258637928639e-08, +-8.365801640654532039e-08, +-8.328898721170122559e-08, +-8.291989561905816571e-08, +-8.255074224587123110e-08, +-8.218152770937379364e-08, +-8.181225262672902736e-08, +-8.144291761510757077e-08, +-8.107352329170407046e-08, +-8.070407027359137235e-08, +-8.033455917787957856e-08, +-7.996499062165102440e-08, +-7.959536522189472600e-08, +-7.922568359568412483e-08, +-7.885594635994767415e-08, +-7.848615413164699385e-08, +-7.811630752771104012e-08, +-7.774640716498689811e-08, +-7.737645366031866191e-08, +-7.700644763056343546e-08, +-7.663638969244412097e-08, +-7.626628046271182416e-08, +-7.589612055807758876e-08, +-7.552591059514818080e-08, +-7.515565119060313173e-08, +-7.478534296096689980e-08, +-7.441498652278552936e-08, +-7.404458249254528277e-08, +-7.367413148670406002e-08, +-7.330363412160882624e-08, +-7.293309101367311807e-08, +-7.256250277914927119e-08, +-7.219187003430575462e-08, +-7.182119339536091683e-08, +-7.145047347841749954e-08, +-7.107971089962374602e-08, +-7.070890627502679823e-08, +-7.033806022058677870e-08, +-6.996717335225792046e-08, +-6.959624628592251166e-08, +-6.922527963740578487e-08, +-6.885427402249153418e-08, +-6.848323005685559672e-08, +-6.811214835616331433e-08, +-6.774102953600234004e-08, +-6.736987421189863910e-08, +-6.699868299931544333e-08, +-6.662745651366816692e-08, +-6.625619537025857607e-08, +-6.588490018437124484e-08, +-6.551357157120843953e-08, +-6.514221014590357851e-08, +-6.477081652352151021e-08, +-6.439939131907364058e-08, +-6.402793514745154687e-08, +-6.365644862352396290e-08, +-6.328493236207028700e-08, +-6.291338697779588152e-08, +-6.254181308534821940e-08, +-6.217021129924957152e-08, +-6.179858223399424345e-08, +-6.142692650398230833e-08, +-6.105524472353550199e-08, +-6.068353750689525097e-08, +-6.031180546823836904e-08, +-5.994004922161172986e-08, +-5.956826938102755149e-08, +-5.919646656039816171e-08, +-5.882464137355088056e-08, +-5.845279443422786158e-08, +-5.808092635610010093e-08, +-5.770903775270230849e-08, +-5.733712923752899976e-08, +-5.696520142396915527e-08, +-5.659325492532051417e-08, +-5.622129035480570103e-08, +-5.584930832550533005e-08, +-5.547730945043928049e-08, +-5.510529434258156614e-08, +-5.473326361471210448e-08, +-5.436121787958039262e-08, +-5.398915774983754609e-08, +-5.361708383798701880e-08, +-5.324499675648192570e-08, +-5.287289711765821330e-08, +-5.250078553375003195e-08, +-5.212866261690552505e-08, +-5.175652897912038994e-08, +-5.138438523231782984e-08, +-5.101223198836512396e-08, +-5.064006985892446363e-08, +-5.026789945561583415e-08, +-4.989572138995138952e-08, +-4.952353627328377687e-08, +-4.915134471688819938e-08, +-4.877914733197802679e-08, +-4.840694472955523461e-08, +-4.803473752057416595e-08, +-4.766252631587457624e-08, +-4.729031172611537278e-08, +-4.691809436195369601e-08, +-4.654587483381454637e-08, +-4.617365375207048109e-08, +-4.580143172697439413e-08, +-4.542920936860972653e-08, +-4.505698728697117940e-08, +-4.468476609198097298e-08, +-4.431254639333906077e-08, +-4.394032880068705686e-08, +-4.356811392354122772e-08, +-4.319590237122632433e-08, +-4.282369475305447822e-08, +-4.245149167809493421e-08, +-4.207929375535324422e-08, +-4.170710159368884036e-08, +-4.133491580182972568e-08, +-4.096273698837174622e-08, +-4.059056576179485672e-08, +-4.021840273039502048e-08, +-3.984624850238278282e-08, +-3.947410368583270718e-08, +-3.910196888861657204e-08, +-3.872984471856717910e-08, +-3.835773178332864688e-08, +-3.798563069037306015e-08, +-3.761354204708056756e-08, +-3.724146646067303506e-08, +-3.686940453822985504e-08, +-3.649735688670291494e-08, +-3.612532411285019123e-08, +-3.575330682333326404e-08, +-3.538130562466699814e-08, +-3.500932112315320966e-08, +-3.463735392504358098e-08, +-3.426540463639074171e-08, +-3.389347386306434252e-08, +-3.352156221083152984e-08, +-3.314967028529077144e-08, +-3.277779869188699050e-08, +-3.240594803591090390e-08, +-3.203411892251438789e-08, +-3.166231195664335740e-08, +-3.129052774313601516e-08, +-3.091876688665595604e-08, +-3.054702999170742681e-08, +-3.017531766265106909e-08, +-2.980363050363695738e-08, +-2.943196911870271596e-08, +-2.906033411170613011e-08, +-2.868872608634120665e-08, +-2.831714564613687694e-08, +-2.794559339447257433e-08, +-2.757406993451174207e-08, +-2.720257586929887155e-08, +-2.683111180169379764e-08, +-2.645967833438621079e-08, +-2.608827606991158190e-08, +-2.571690561058440223e-08, +-2.534556755859587670e-08, +-2.497426251594723335e-08, +-2.460299108446494672e-08, +-2.423175386580041692e-08, +-2.386055146144461073e-08, +-2.348938447266197646e-08, +-2.311825350057142830e-08, +-2.274715914616185093e-08, +-2.237610201014337579e-08, +-2.200508269311042830e-08, +-2.163410179547546736e-08, +-2.126315991741851414e-08, +-2.089225765898471965e-08, +-2.052139562001781645e-08, +-2.015057440017557693e-08, +-1.977979459894530482e-08, +-1.940905681557704198e-08, +-1.903836164916488022e-08, +-1.866770969866271091e-08, +-1.829710156273478974e-08, +-1.792653783991949869e-08, +-1.755601912856278111e-08, +-1.718554602676748525e-08, +-1.681511913249148764e-08, +-1.644473904348056579e-08, +-1.607440635728429329e-08, +-1.570412167125488504e-08, +-1.533388558256256959e-08, +-1.496369868811276188e-08, +-1.459356158472568224e-08, +-1.422347486890544885e-08, +-1.385343913701980927e-08, +-1.348345498523358048e-08, +-1.311352300945835964e-08, +-1.274364380543367378e-08, +-1.237381796874262677e-08, +-1.200404609466289267e-08, +-1.163432877833028406e-08, +-1.126466661467188936e-08, +-1.089506019833954108e-08, +-1.052551012388973421e-08, +-1.015601698555231838e-08, +-9.786581377410589958e-09, +-9.417203893334553510e-09, +-9.047885126914189788e-09, +-8.678625671622982738e-09, +-8.309426120668942617e-09, +-7.940287067010206615e-09, +-7.571209103436276264e-09, +-7.202192822517704181e-09, +-6.833238816539481208e-09, +-6.464347677664455872e-09, +-6.095519997784437735e-09, +-5.726756368535824496e-09, +-5.358057381380665685e-09, +-4.989423627540212766e-09, +-4.620855698010195509e-09, +-4.252354183576493751e-09, +-3.883919674748437692e-09, +-3.515552761856451597e-09, +-3.147254035001802579e-09, +-2.779024083990088660e-09, +-2.410863498494431574e-09, +-2.042772867906808431e-09, +-1.674752781353555764e-09, +-1.306803827776523393e-09, +-9.389265958664857676e-10, +-5.711216740786416745e-10, +-2.033896506480860577e-10, + 1.642688864767095719e-10, + 5.318533495364073614e-10, + 8.993631510273349069e-10, + 1.266797703685995909e-09, + 1.634156420489999302e-09, + 2.001438714642565571e-09, + 2.368643999639037648e-09, + 2.735771689169407924e-09, + 3.102821197184863886e-09, + 3.469791937882239609e-09, + 3.836683325704980658e-09, + 4.203494775327661751e-09, + 4.570225701722411430e-09, + 4.936875520061558280e-09, + 5.303443645784065109e-09, + 5.669929494580027589e-09, + 6.036332482375313508e-09, + 6.402652025397804222e-09, + 6.768887540080218303e-09, + 7.135038443126400140e-09, + 7.501104151495939343e-09, + 7.867084082405030182e-09, + 8.232977653311007447e-09, + 8.598784281978808754e-09, + 8.964503386383528535e-09, + 9.330134384776949828e-09, + 9.695676695671908910e-09, + 1.006112973784341695e-08, + 1.042649293031298495e-08, + 1.079176569241508768e-08, + 1.115694744369994020e-08, + 1.152203760399975008e-08, + 1.188703559341330034e-08, + 1.225194083229047300e-08, + 1.261675274129857564e-08, + 1.298147074134147296e-08, + 1.334609425354427400e-08, + 1.371062269940097895e-08, + 1.407505550061250553e-08, + 1.443939207915239700e-08, + 1.480363185731703524e-08, + 1.516777425762844050e-08, + 1.553181870290056158e-08, + 1.589576461622372821e-08, + 1.625961142096560389e-08, + 1.662335854075596582e-08, + 1.698700539956863217e-08, + 1.735055142154361491e-08, + 1.771399603121564669e-08, + 1.807733865333635352e-08, + 1.844057871293983368e-08, + 1.880371563539273850e-08, + 1.916674884631353297e-08, + 1.952967777155737483e-08, + 1.989250183736320385e-08, + 2.025522047019190890e-08, + 2.061783309679257852e-08, + 2.098033914426811284e-08, + 2.134273803989746250e-08, + 2.170502921136402316e-08, + 2.206721208657775192e-08, + 2.242928609374109033e-08, + 2.279125066141460613e-08, + 2.315310521835582870e-08, + 2.351484919366592140e-08, + 2.387648201677460043e-08, + 2.423800311735958726e-08, + 2.459941192539658693e-08, + 2.496070787122461210e-08, + 2.532189038538474246e-08, + 2.568295889876721391e-08, + 2.604391284259601651e-08, + 2.640475164834836345e-08, + 2.676547474782079606e-08, + 2.712608157311369563e-08, + 2.748657155661606000e-08, + 2.784694413107102952e-08, + 2.820719872947954032e-08, + 2.856733478514998495e-08, + 2.892735173176367547e-08, + 2.928724900321387405e-08, + 2.964702603375242899e-08, + 3.000668225797442221e-08, + 3.036621711073800554e-08, + 3.072563002723008547e-08, + 3.108492044295095413e-08, + 3.144408779369911883e-08, + 3.180313151563670883e-08, + 3.216205104519336360e-08, + 3.252084581913170586e-08, + 3.287951527453239268e-08, + 3.323805884879456555e-08, + 3.359647597962041184e-08, + 3.395476610508132603e-08, + 3.431292866352122882e-08, + 3.467096309362224529e-08, + 3.502886883438938552e-08, + 3.538664532515180850e-08, + 3.574429200554666895e-08, + 3.610180831558538444e-08, + 3.645919369555703390e-08, + 3.681644758609428062e-08, + 3.717356942815777492e-08, + 3.753055866302069582e-08, + 3.788741473233494532e-08, + 3.824413707803413668e-08, + 3.860072514239968281e-08, + 3.895717836804546368e-08, + 3.931349619791814396e-08, + 3.966967807528274694e-08, + 4.002572344378722102e-08, + 4.038163174736680432e-08, + 4.073740243030997418e-08, + 4.109303493724197634e-08, + 4.144852871312668441e-08, + 4.180388320325100259e-08, + 4.215909785328990188e-08, + 4.251417210921079144e-08, + 4.286910541733895843e-08, + 4.322389722434247367e-08, + 4.357854697721621051e-08, + 4.393305412334764868e-08, + 4.428741811043680320e-08, + 4.464163838648197706e-08, + 4.499571439992401485e-08, + 4.534964559948723930e-08, + 4.570343143424413012e-08, + 4.605707135366498136e-08, + 4.641056480752149843e-08, + 4.676391124595266157e-08, + 4.711711011944892335e-08, + 4.747016087883739887e-08, + 4.782306297534635272e-08, + 4.817581586052647789e-08, + 4.852841898623570210e-08, + 4.888087180478345471e-08, + 4.923317376877193409e-08, + 4.958532433116105119e-08, + 4.993732294533266512e-08, + 5.028916906493245267e-08, + 5.064086214401330169e-08, + 5.099240163702185127e-08, + 5.134378699871779856e-08, + 5.169501768422346346e-08, + 5.204609314908812343e-08, + 5.239701284911424597e-08, + 5.274777624057990098e-08, + 5.309838278006586012e-08, + 5.344883192451919711e-08, + 5.379912313131839676e-08, + 5.414925585811428481e-08, + 5.449922956297497648e-08, + 5.484904370436975632e-08, + 5.519869774109105198e-08, + 5.554819113230309223e-08, + 5.589752333760518962e-08, + 5.624669381685999131e-08, + 5.659570203041406494e-08, + 5.694454743892563999e-08, + 5.729322950344439425e-08, + 5.764174768539632637e-08, + 5.799010144658480142e-08, + 5.833829024917527782e-08, + 5.868631355575917891e-08, + 5.903417082926085832e-08, + 5.938186153298453745e-08, + 5.972938513067883887e-08, + 6.007674108637999914e-08, + 6.042392886455440859e-08, + 6.077094793008335148e-08, + 6.111779774818539003e-08, + 6.146447778448088447e-08, + 6.181098750497505237e-08, + 6.215732637604495879e-08, + 6.250349386450242167e-08, + 6.284948943750042795e-08, + 6.319531256259693896e-08, + 6.354096270774000115e-08, + 6.388643934126918875e-08, + 6.423174193189900717e-08, + 6.457686994878390278e-08, + 6.492182286142483784e-08, + 6.526660013973205036e-08, + 6.561120125401074714e-08, + 6.595562567496179203e-08, + 6.629987287366677695e-08, + 6.664394232165199934e-08, + 6.698783349079400478e-08, + 6.733154585338405411e-08, + 6.767507888211316804e-08, + 6.801843205005713195e-08, + 6.836160483073940142e-08, + 6.870459669803853733e-08, + 6.904740712625222304e-08, + 6.939003559008078699e-08, + 6.973248156462922760e-08, + 7.007474452539194020e-08, + 7.041682394831596662e-08, + 7.075871930970809942e-08, + 7.110043008629844916e-08, + 7.144195575522489333e-08, + 7.178329579401936501e-08, + 7.212444968066963339e-08, + 7.246541689352771828e-08, + 7.280619691137221322e-08, + 7.314678921339396534e-08, + 7.348719327919655180e-08, + 7.382740858878158908e-08, + 7.416743462261255160e-08, + 7.450727086153568005e-08, + 7.484691678676756701e-08, + 7.518637188003414981e-08, + 7.552563562341730490e-08, + 7.586470749941645629e-08, + 7.620358699099671079e-08, + 7.654227358149755056e-08, + 7.688076675469327682e-08, + 7.721906599477988086e-08, + 7.755717078635990330e-08, + 7.789508061450541895e-08, + 7.823279496468091711e-08, + 7.857031332272916670e-08, + 7.890763517501020905e-08, + 7.924476000824915673e-08, + 7.958168730959687544e-08, + 7.991841656669386890e-08, + 8.025494726750080602e-08, + 8.059127890051480550e-08, + 8.092741095460144540e-08, + 8.126334291907186954e-08, + 8.159907428365381641e-08, + 8.193460453856724325e-08, + 8.226993317435812236e-08, + 8.260505968211304480e-08, + 8.293998355329153439e-08, + 8.327470427978798692e-08, + 8.360922135399362273e-08, + 8.394353426864440457e-08, + 8.427764251696000392e-08, + 8.461154559262752214e-08, + 8.494524298972770587e-08, + 8.527873420278050160e-08, + 8.561201872680661111e-08, + 8.594509605716171121e-08, + 8.627796568974903261e-08, + 8.661062712085425461e-08, + 8.694307984722052047e-08, + 8.727532336603518932e-08, + 8.760735717493049783e-08, + 8.793918077196800931e-08, + 8.827079365570224698e-08, + 8.860219532508753361e-08, + 8.893338527952710621e-08, + 8.926436301893262007e-08, + 8.959512804357344311e-08, + 8.992567985421465600e-08, + 9.025601795210179242e-08, + 9.058614183888657804e-08, + 9.091605101668744044e-08, + 9.124574498807542720e-08, + 9.157522325606098426e-08, + 9.190448532415248055e-08, + 9.223353069626863280e-08, + 9.256235887679881685e-08, + 9.289096937058860198e-08, + 9.321936168294037292e-08, + 9.354753531959968469e-08, + 9.387548978681573281e-08, + 9.420322459125142220e-08, + 9.453073924004473740e-08, + 9.485803324079452828e-08, + 9.518510610156032476e-08, + 9.551195733084955190e-08, + 9.583858643767700747e-08, + 9.616499293147573826e-08, + 9.649117632215912491e-08, + 9.681713612010439123e-08, + 9.714287183613958108e-08, + 9.746838298160413448e-08, + 9.779366906825980353e-08, + 9.811872960835097707e-08, + 9.844356411459022816e-08, + 9.876817210016051108e-08, + 9.909255307869814126e-08, + 9.941670656435576689e-08, + 9.974063207171227900e-08, + 1.000643291158335729e-07, + 1.003877972122585456e-07, + 1.007110358769839154e-07, + 1.010340446265263068e-07, + 1.013568229778312473e-07, + 1.016793704483356100e-07, + 1.020016865559518368e-07, + 1.023237708190701891e-07, + 1.026456227565424290e-07, + 1.029672418877444333e-07, + 1.032886277325001460e-07, + 1.036097798110702494e-07, + 1.039306976442834538e-07, + 1.042513807533909274e-07, + 1.045718286601253499e-07, + 1.048920408867464410e-07, + 1.052120169559525644e-07, + 1.055317563909407345e-07, + 1.058512587153927202e-07, + 1.061705234534607378e-07, + 1.064895501298267431e-07, + 1.068083382696302354e-07, + 1.071268873984534080e-07, + 1.074451970424553231e-07, + 1.077632667282242901e-07, + 1.080810959828378065e-07, + 1.083986843339230412e-07, + 1.087160313094944425e-07, + 1.090331364381604008e-07, + 1.093499992489628946e-07, + 1.096666192714510768e-07, + 1.099829960356534944e-07, + 1.102991290721499938e-07, + 1.106150179119146225e-07, + 1.109306620865174216e-07, + 1.112460611279671952e-07, + 1.115612145687688045e-07, + 1.118761219419832670e-07, + 1.121907827810820936e-07, + 1.125051966200791348e-07, + 1.128193629935174774e-07, + 1.131332814363955417e-07, + 1.134469514842136413e-07, + 1.137603726730304302e-07, + 1.140735445393058972e-07, + 1.143864666201040714e-07, + 1.146991384529342964e-07, + 1.150115595758098736e-07, + 1.153237295273074744e-07, + 1.156356478464215952e-07, + 1.159473140726964175e-07, + 1.162587277462111562e-07, + 1.165698884075101400e-07, + 1.168807955976444482e-07, + 1.171914488582326725e-07, + 1.175018477313157957e-07, + 1.178119917594875164e-07, + 1.181218804858816752e-07, + 1.184315134540995957e-07, + 1.187408902082691251e-07, + 1.190500102930308832e-07, + 1.193588732535240214e-07, + 1.196674786354444568e-07, + 1.199758259849599697e-07, + 1.202839148487681730e-07, + 1.205917447740813843e-07, + 1.208993153086288230e-07, + 1.212066260006428728e-07, + 1.215136763989158588e-07, + 1.218204660527155566e-07, + 1.221269945118441665e-07, + 1.224332613266223787e-07, + 1.227392660478770916e-07, + 1.230450082269987718e-07, + 1.233504874158566711e-07, + 1.236557031668569279e-07, + 1.239606550329274793e-07, + 1.242653425675207347e-07, + 1.245697653245989115e-07, + 1.248739228586904949e-07, + 1.251778147248069115e-07, + 1.254814404785007357e-07, + 1.257847996758499145e-07, + 1.260878918734605196e-07, + 1.263907166284508662e-07, + 1.266932734985122076e-07, + 1.269955620418207501e-07, + 1.272975818170971037e-07, + 1.275993323835918303e-07, + 1.279008133010729227e-07, + 1.282020241298815239e-07, + 1.285029644308483621e-07, + 1.288036337653529897e-07, + 1.291040316953055194e-07, + 1.294041577831523419e-07, + 1.297040115918587875e-07, + 1.300035926849687103e-07, + 1.303029006265187258e-07, + 1.306019349810967620e-07, + 1.309006953138265216e-07, + 1.311991811903710823e-07, + 1.314973921769168819e-07, + 1.317953278402444198e-07, + 1.320929877475773259e-07, + 1.323903714667757222e-07, + 1.326874785661853720e-07, + 1.329843086146923132e-07, + 1.332808611817684657e-07, + 1.335771358373977281e-07, + 1.338731321520674010e-07, + 1.341688496968901337e-07, + 1.344642880434685841e-07, + 1.347594467639497080e-07, + 1.350543254310806637e-07, + 1.353489236180598396e-07, + 1.356432408987270929e-07, + 1.359372768474148303e-07, + 1.362310310390173326e-07, + 1.365245030489632262e-07, + 1.368176924532852041e-07, + 1.371105988284693602e-07, + 1.374032217516477305e-07, + 1.376955608004495064e-07, + 1.379876155530540007e-07, + 1.382793855882473194e-07, + 1.385708704852864130e-07, + 1.388620698240218167e-07, + 1.391529831848858716e-07, + 1.394436101488226061e-07, + 1.397339502973334226e-07, + 1.400240032125275757e-07, + 1.403137684769755821e-07, + 1.406032456738995126e-07, + 1.408924343870248662e-07, + 1.411813342006340929e-07, + 1.414699446996226827e-07, + 1.417582654693626609e-07, + 1.420462960958283730e-07, + 1.423340361655788549e-07, + 1.426214852656941743e-07, + 1.429086429838152929e-07, + 1.431955089081988334e-07, + 1.434820826275827450e-07, + 1.437683637313081964e-07, + 1.440543518093070826e-07, + 1.443400464520347649e-07, + 1.446254472505236723e-07, + 1.449105537963722635e-07, + 1.451953656817307334e-07, + 1.454798824993559641e-07, + 1.457641038425302100e-07, + 1.460480293051189606e-07, + 1.463316584815531527e-07, + 1.466149909668329295e-07, + 1.468980263565141140e-07, + 1.471807642467620227e-07, + 1.474632042342715790e-07, + 1.477453459163223976e-07, + 1.480271888907639345e-07, + 1.483087327560063815e-07, + 1.485899771110696619e-07, + 1.488709215555076737e-07, + 1.491515656894606469e-07, + 1.494319091136432326e-07, + 1.497119514293434433e-07, + 1.499916922384117747e-07, + 1.502711311433141976e-07, + 1.505502677470521400e-07, + 1.508291016532178090e-07, + 1.511076324659790499e-07, + 1.513858597900831051e-07, + 1.516637832308407585e-07, + 1.519414023941817370e-07, + 1.522187168865749832e-07, + 1.524957263150836334e-07, + 1.527724302873499828e-07, + 1.530488284115838384e-07, + 1.533249202966164649e-07, + 1.536007055518210693e-07, + 1.538761837871668784e-07, + 1.541513546132049514e-07, + 1.544262176410720179e-07, + 1.547007724824739870e-07, + 1.549750187497403959e-07, + 1.552489560557470915e-07, + 1.555225840139686938e-07, + 1.557959022384658104e-07, + 1.560689103438841374e-07, + 1.563416079454468881e-07, + 1.566139946590131331e-07, + 1.568860701009417983e-07, + 1.571578338882697006e-07, + 1.574292856385712051e-07, + 1.577004249700113502e-07, + 1.579712515013827462e-07, + 1.582417648520430803e-07, + 1.585119646419039992e-07, + 1.587818504915448764e-07, + 1.590514220220853863e-07, + 1.593206788552388942e-07, + 1.595896206133628545e-07, + 1.598582469193184149e-07, + 1.601265573966509670e-07, + 1.603945516694495918e-07, + 1.606622293623985167e-07, + 1.609295901008154437e-07, + 1.611966335105889224e-07, + 1.614633592181666233e-07, + 1.617297668506686818e-07, + 1.619958560357632106e-07, + 1.622616264017148983e-07, + 1.625270775774401195e-07, + 1.627922091923765447e-07, + 1.630570208766001099e-07, + 1.633215122608120736e-07, + 1.635856829762767592e-07, + 1.638495326548584276e-07, + 1.641130609290744553e-07, + 1.643762674319564734e-07, + 1.646391517972257833e-07, + 1.649017136591568782e-07, + 1.651639526526272329e-07, + 1.654258684131694759e-07, + 1.656874605768443339e-07, + 1.659487287803557761e-07, + 1.662096726610388905e-07, + 1.664702918567958800e-07, + 1.667305860061483405e-07, + 1.669905547482247934e-07, + 1.672501977227486156e-07, + 1.675095145700877494e-07, + 1.677685049311817256e-07, + 1.680271684475910032e-07, + 1.682855047614856930e-07, + 1.685435135156451608e-07, + 1.688011943534464071e-07, + 1.690585469189140685e-07, + 1.693155708566472021e-07, + 1.695722658118681227e-07, + 1.698286314304107028e-07, + 1.700846673587241313e-07, + 1.703403732438545702e-07, + 1.705957487335003966e-07, + 1.708507934759361292e-07, + 1.711055071200634084e-07, + 1.713598893153983178e-07, + 1.716139397120587577e-07, + 1.718676579608177822e-07, + 1.721210437130258039e-07, + 1.723740966206612047e-07, + 1.726268163363213623e-07, + 1.728792025132201089e-07, + 1.731312548051768789e-07, + 1.733829728666655191e-07, + 1.736343563527429526e-07, + 1.738854049190972214e-07, + 1.741361182220362368e-07, + 1.743864959184878323e-07, + 1.746365376659876407e-07, + 1.748862431227290950e-07, + 1.751356119474904253e-07, + 1.753846437996835744e-07, + 1.756333383393447487e-07, + 1.758816952271188798e-07, + 1.761297141243096266e-07, + 1.763773946928096532e-07, + 1.766247365951466869e-07, + 1.768717394944732475e-07, + 1.771184030545669123e-07, + 1.773647269398178221e-07, + 1.776107108152791064e-07, + 1.778563543465926884e-07, + 1.781016572000394984e-07, + 1.783466190425275620e-07, + 1.785912395415807774e-07, + 1.788355183653857929e-07, + 1.790794551827329798e-07, + 1.793230496630094174e-07, + 1.795663014762977052e-07, + 1.798092102932655304e-07, + 1.800517757852096611e-07, + 1.802939976240925540e-07, + 1.805358754824833267e-07, + 1.807774090335476724e-07, + 1.810185979511539248e-07, + 1.812594419097539440e-07, + 1.814999405844333293e-07, + 1.817400936509562066e-07, + 1.819799007856383318e-07, + 1.822193616655117067e-07, + 1.824584759681940828e-07, + 1.826972433719381157e-07, + 1.829356635556679992e-07, + 1.831737361989176589e-07, + 1.834114609818227574e-07, + 1.836488375852236890e-07, + 1.838858656905527386e-07, + 1.841225449798764072e-07, + 1.843588751359459159e-07, + 1.845948558420713423e-07, + 1.848304867822776332e-07, + 1.850657676411843264e-07, + 1.853006981040608455e-07, + 1.855352778568047419e-07, + 1.857695065859972815e-07, + 1.860033839787810484e-07, + 1.862369097230182871e-07, + 1.864700835071672354e-07, + 1.867029050203263295e-07, + 1.869353739522810286e-07, + 1.871674899933900478e-07, + 1.873992528346896758e-07, + 1.876306621678801691e-07, + 1.878617176852706423e-07, + 1.880924190798270838e-07, + 1.883227660451564743e-07, + 1.885527582755007516e-07, + 1.887823954657785533e-07, + 1.890116773115198897e-07, + 1.892406035089119095e-07, + 1.894691737547869098e-07, + 1.896973877466233676e-07, + 1.899252451825350082e-07, + 1.901527457613152481e-07, + 1.903798891823712054e-07, + 1.906066751457688841e-07, + 1.908331033522218448e-07, + 1.910591735030919195e-07, + 1.912848853003775915e-07, + 1.915102384467610317e-07, + 1.917352326455396484e-07, + 1.919598676006708473e-07, + 1.921841430167626081e-07, + 1.924080585990622091e-07, + 1.926316140535003513e-07, + 1.928548090866250908e-07, + 1.930776434056489279e-07, + 1.933001167184341431e-07, + 1.935222287334956292e-07, + 1.937439791599902243e-07, + 1.939653677077590897e-07, + 1.941863940872645527e-07, + 1.944070580096334648e-07, + 1.946273591866452369e-07, + 1.948472973307361537e-07, + 1.950668721549832011e-07, + 1.952860833731520559e-07, + 1.955049306996307255e-07, + 1.957234138494735149e-07, + 1.959415325383903589e-07, + 1.961592864827364462e-07, + 1.963766753995578798e-07, + 1.965936990065324637e-07, + 1.968103570219659712e-07, + 1.970266491648843123e-07, + 1.972425751549291105e-07, + 1.974581347123997371e-07, + 1.976733275582850215e-07, + 1.978881534142039062e-07, + 1.981026120024424254e-07, + 1.983167030459460809e-07, + 1.985304262683102609e-07, + 1.987437813938224589e-07, + 1.989567681474084869e-07, + 1.991693862546238997e-07, + 1.993816354417475916e-07, + 1.995935154356802056e-07, + 1.998050259639819321e-07, + 2.000161667549062053e-07, + 2.002269375373483513e-07, + 2.004373380408358475e-07, + 2.006473679956204904e-07, + 2.008570271325758518e-07, + 2.010663151832404505e-07, + 2.012752318798560016e-07, + 2.014837769552575405e-07, + 2.016919501430159621e-07, + 2.018997511773265044e-07, + 2.021071797930486113e-07, + 2.023142357257382260e-07, + 2.025209187115957517e-07, + 2.027272284874602541e-07, + 2.029331647908939534e-07, + 2.031387273600864568e-07, + 2.033439159338958123e-07, + 2.035487302518853557e-07, + 2.037531700542169836e-07, + 2.039572350817895642e-07, + 2.041609250761311527e-07, + 2.043642397794471655e-07, + 2.045671789346020905e-07, + 2.047697422851689052e-07, + 2.049719295753201281e-07, + 2.051737405499675255e-07, + 2.053751749546520767e-07, + 2.055762325355875437e-07, + 2.057769130396947224e-07, + 2.059772162145071579e-07, + 2.061771418082574887e-07, + 2.063766895698709878e-07, + 2.065758592489136557e-07, + 2.067746505956336723e-07, + 2.069730633609508880e-07, + 2.071710972964483005e-07, + 2.073687521544101979e-07, + 2.075660276877638459e-07, + 2.077629236501111452e-07, + 2.079594397957652662e-07, + 2.081555758796537426e-07, + 2.083513316574091574e-07, + 2.085467068853570722e-07, + 2.087417013204675881e-07, + 2.089363147203958966e-07, + 2.091305468434720365e-07, + 2.093243974487009995e-07, + 2.095178662957536775e-07, + 2.097109531450056672e-07, + 2.099036577574791957e-07, + 2.100959798948842545e-07, + 2.102879193196059201e-07, + 2.104794757946956194e-07, + 2.106706490839117870e-07, + 2.108614389516612878e-07, + 2.110518451630372952e-07, + 2.112418674838110057e-07, + 2.114315056804340219e-07, + 2.116207595200229727e-07, + 2.118096287704031364e-07, + 2.119981132000504447e-07, + 2.121862125781288581e-07, + 2.123739266744819491e-07, + 2.125612552596224724e-07, + 2.127481981047723877e-07, + 2.129347549818051816e-07, + 2.131209256632828994e-07, + 2.133067099224486006e-07, + 2.134921075332268093e-07, + 2.136771182702120527e-07, + 2.138617419087093069e-07, + 2.140459782246852394e-07, + 2.142298269947623066e-07, + 2.144132879962975543e-07, + 2.145963610072953994e-07, + 2.147790458064414855e-07, + 2.149613421731315606e-07, + 2.151432498874167646e-07, + 2.153247687300400514e-07, + 2.155058984824292014e-07, + 2.156866389266841683e-07, + 2.158669898456168105e-07, + 2.160469510227042515e-07, + 2.162265222420812034e-07, + 2.164057032886202501e-07, + 2.165844939478425642e-07, + 2.167628940059536154e-07, + 2.169409032498733718e-07, + 2.171185214671761083e-07, + 2.172957484461325459e-07, + 2.174725839756988408e-07, + 2.176490278455167427e-07, + 2.178250798459053367e-07, + 2.180007397679038181e-07, + 2.181760074031788750e-07, + 2.183508825441439342e-07, + 2.185253649838627586e-07, + 2.186994545160874050e-07, + 2.188731509352844551e-07, + 2.190464540365879263e-07, + 2.192193636157945597e-07, + 2.193918794694423035e-07, + 2.195640013947210826e-07, + 2.197357291895089571e-07, + 2.199070626524058972e-07, + 2.200780015826435481e-07, + 2.202485457801985203e-07, + 2.204186950457045631e-07, + 2.205884491804827667e-07, + 2.207578079865804195e-07, + 2.209267712666810377e-07, + 2.210953388241835626e-07, + 2.212635104631947638e-07, + 2.214312859884845585e-07, + 2.215986652055146250e-07, + 2.217656479204694518e-07, + 2.219322339401753667e-07, + 2.220984230721729317e-07, + 2.222642151247114898e-07, + 2.224296099067061785e-07, + 2.225946072277719170e-07, + 2.227592068982140620e-07, + 2.229234087290232200e-07, + 2.230872125319042844e-07, + 2.232506181192326548e-07, + 2.234136253040736653e-07, + 2.235762339002167311e-07, + 2.237384437220978709e-07, + 2.239002545848668613e-07, + 2.240616663043854893e-07, + 2.242226786971816540e-07, + 2.243832915804871917e-07, + 2.245435047722253295e-07, + 2.247033180910052323e-07, + 2.248627313561538990e-07, + 2.250217443876676696e-07, + 2.251803570062455511e-07, + 2.253385690332790264e-07, + 2.254963802908573217e-07, + 2.256537906017526894e-07, + 2.258107997894570423e-07, + 2.259674076781335669e-07, + 2.261236140926466074e-07, + 2.262794188585582252e-07, + 2.264348218021224016e-07, + 2.265898227502834500e-07, + 2.267444215307039144e-07, + 2.268986179717172950e-07, + 2.270524119023619823e-07, + 2.272058031523704307e-07, + 2.273587915521659295e-07, + 2.275113769328888873e-07, + 2.276635591263532097e-07, + 2.278153379650788837e-07, + 2.279667132822806220e-07, + 2.281176849118692663e-07, + 2.282682526884467840e-07, + 2.284184164473331355e-07, + 2.285681760245238692e-07, + 2.287175312567188149e-07, + 2.288664819813141430e-07, + 2.290150280364059115e-07, + 2.291631692607787363e-07, + 2.293109054939370266e-07, + 2.294582365760609381e-07, + 2.296051623480367082e-07, + 2.297516826514477353e-07, + 2.298977973285682259e-07, + 2.300435062223941382e-07, + 2.301888091766050918e-07, + 2.303337060355542827e-07, + 2.304781966443416726e-07, + 2.306222808487329377e-07, + 2.307659584951960509e-07, + 2.309092294309165275e-07, + 2.310520935037606062e-07, + 2.311945505622987015e-07, + 2.313366004558011679e-07, + 2.314782430342377976e-07, + 2.316194781482698529e-07, + 2.317603056492895058e-07, + 2.319007253893354796e-07, + 2.320407372211973390e-07, + 2.321803409983383576e-07, + 2.323195365749188379e-07, + 2.324583238058219718e-07, + 2.325967025466168364e-07, + 2.327346726535507968e-07, + 2.328722339836157333e-07, + 2.330093863944730004e-07, + 2.331461297444890543e-07, + 2.332824638927553583e-07, + 2.334183886990163061e-07, + 2.335539040237662860e-07, + 2.336890097281723096e-07, + 2.338237056741027853e-07, + 2.339579917241556544e-07, + 2.340918677415862094e-07, + 2.342253335903757553e-07, + 2.343583891352177140e-07, + 2.344910342414865218e-07, + 2.346232687752594139e-07, + 2.347550926033419154e-07, + 2.348865055932002366e-07, + 2.350175076130226045e-07, + 2.351480985317140739e-07, + 2.352782782188605288e-07, + 2.354080465447553376e-07, + 2.355374033803953559e-07, + 2.356663485974735681e-07, + 2.357948820684026455e-07, + 2.359230036662795825e-07, + 2.360507132649041462e-07, + 2.361780107388047109e-07, + 2.363048959631699659e-07, + 2.364313688139149313e-07, + 2.365574291676665055e-07, + 2.366830769017376572e-07, + 2.368083118941493421e-07, + 2.369331340236244151e-07, + 2.370575431695847981e-07, + 2.371815392121720467e-07, + 2.373051220322125693e-07, + 2.374282915112414760e-07, + 2.375510475314977351e-07, + 2.376733899759229548e-07, + 2.377953187281550577e-07, + 2.379168336725559411e-07, + 2.380379346941710843e-07, + 2.381586216787537159e-07, + 2.382788945127629073e-07, + 2.383987530833593381e-07, + 2.385181972784021194e-07, + 2.386372269864723256e-07, + 2.387558420968345600e-07, + 2.388740424994655428e-07, + 2.389918280850441312e-07, + 2.391091987449470318e-07, + 2.392261543712720409e-07, + 2.393426948568037399e-07, + 2.394588200950362588e-07, + 2.395745299801658652e-07, + 2.396898244070960462e-07, + 2.398047032714244853e-07, + 2.399191664694735027e-07, + 2.400332138982490272e-07, + 2.401468454554691305e-07, + 2.402600610395540216e-07, + 2.403728605496274235e-07, + 2.404852438855146140e-07, + 2.405972109477597374e-07, + 2.407087616375928757e-07, + 2.408198958569556716e-07, + 2.409306135084936521e-07, + 2.410409144955489760e-07, + 2.411507987221874857e-07, + 2.412602660931658849e-07, + 2.413693165139292506e-07, + 2.414779498906607428e-07, + 2.415861661302239009e-07, + 2.416939651401869958e-07, + 2.418013468288399172e-07, + 2.419083111051598166e-07, + 2.420148578788313294e-07, + 2.421209870602476872e-07, + 2.422266985604983296e-07, + 2.423319922913921450e-07, + 2.424368681654338593e-07, + 2.425413260958141361e-07, + 2.426453659964615637e-07, + 2.427489877819866448e-07, + 2.428521913677031312e-07, + 2.429549766696545995e-07, + 2.430573436045517707e-07, + 2.431592920898273023e-07, + 2.432608220436309713e-07, + 2.433619333847971690e-07, + 2.434626260328661300e-07, + 2.435628999081037840e-07, + 2.436627549314433114e-07, + 2.437621910245587812e-07, + 2.438612081098062833e-07, + 2.439598061102467973e-07, + 2.440579849496672104e-07, + 2.441557445525251010e-07, + 2.442530848439990842e-07, + 2.443500057499829356e-07, + 2.444465071970580629e-07, + 2.445425891125097050e-07, + 2.446382514243473672e-07, + 2.447334940612491812e-07, + 2.448283169526325797e-07, + 2.449227200285992922e-07, + 2.450167032199587971e-07, + 2.451102664582259925e-07, + 2.452034096756186549e-07, + 2.452961328050527278e-07, + 2.453884357801641328e-07, + 2.454803185352766880e-07, + 2.455717810054178840e-07, + 2.456628231263391602e-07, + 2.457534448344660881e-07, + 2.458436460669416762e-07, + 2.459334267616233522e-07, + 2.460227868570570760e-07, + 2.461117262924959209e-07, + 2.462002450078981154e-07, + 2.462883429439186781e-07, + 2.463760200419312826e-07, + 2.464632762440009398e-07, + 2.465501114928906688e-07, + 2.466365257320904019e-07, + 2.467225189057616097e-07, + 2.468080909587846289e-07, + 2.468932418367518864e-07, + 2.469779714859444996e-07, + 2.470622798533514940e-07, + 2.471461668866649323e-07, + 2.472296325342793320e-07, + 2.473126767452867425e-07, + 2.473952994694974442e-07, + 2.474775006574080258e-07, + 2.475592802602230368e-07, + 2.476406382298532404e-07, + 2.477215745189015316e-07, + 2.478020890806903070e-07, + 2.478821818692304421e-07, + 2.479618528392375968e-07, + 2.480411019461318447e-07, + 2.481199291460340733e-07, + 2.481983343957622784e-07, + 2.482763176528528454e-07, + 2.483538788755275152e-07, + 2.484310180227148250e-07, + 2.485077350540453433e-07, + 2.485840299298478055e-07, + 2.486599026111650489e-07, + 2.487353530597262190e-07, + 2.488103812379713868e-07, + 2.488849871090366197e-07, + 2.489591706367618694e-07, + 2.490329317856838250e-07, + 2.491062705210532248e-07, + 2.491791868088119856e-07, + 2.492516806155917208e-07, + 2.493237519087478866e-07, + 2.493954006563242593e-07, + 2.494666268270619879e-07, + 2.495374303904157407e-07, + 2.496078113165282418e-07, + 2.496777695762463640e-07, + 2.497473051411196471e-07, + 2.498164179833882803e-07, + 2.498851080760129603e-07, + 2.499533753926395273e-07, + 2.500212199076035715e-07, + 2.500886415959650016e-07, + 2.501556404334680234e-07, + 2.502222163965546919e-07, + 2.502883694623834401e-07, + 2.503540996087857748e-07, + 2.504194068143174686e-07, + 2.504842910582190146e-07, + 2.505487523204347372e-07, + 2.506127905816023103e-07, + 2.506764058230749389e-07, + 2.507395980268766249e-07, + 2.508023671757579131e-07, + 2.508647132531532212e-07, + 2.509266362431932283e-07, + 2.509881361307236148e-07, + 2.510492129012645113e-07, + 2.511098665410458621e-07, + 2.511700970370038251e-07, + 2.512299043767594902e-07, + 2.512892885486339671e-07, + 2.513482495416588144e-07, + 2.514067873455376585e-07, + 2.514649019506978094e-07, + 2.515225933482477505e-07, + 2.515798615299981556e-07, + 2.516367064884557476e-07, + 2.516931282168240931e-07, + 2.517491267090010078e-07, + 2.518047019595899919e-07, + 2.518598539638815951e-07, + 2.519145827178614108e-07, + 2.519688882182261161e-07, + 2.520227704623464681e-07, + 2.520762294483002312e-07, + 2.521292651748688956e-07, + 2.521818776415174542e-07, + 2.522340668484107606e-07, + 2.522858327964080770e-07, + 2.523371754870610089e-07, + 2.523880949226270049e-07, + 2.524385911060462222e-07, + 2.524886640409601615e-07, + 2.525383137317016079e-07, + 2.525875401833003491e-07, + 2.526363434014754455e-07, + 2.526847233926505833e-07, + 2.527326801639328983e-07, + 2.527802137231284344e-07, + 2.528273240787342556e-07, + 2.528740112399443221e-07, + 2.529202752166396439e-07, + 2.529661160194061211e-07, + 2.530115336595119918e-07, + 2.530565281489214376e-07, + 2.531010995002918836e-07, + 2.531452477269696043e-07, + 2.531889728430049707e-07, + 2.532322748631283090e-07, + 2.532751538027658364e-07, + 2.533176096780371192e-07, + 2.533596425057513144e-07, + 2.534012523034082817e-07, + 2.534424390892074238e-07, + 2.534832028820279933e-07, + 2.535235437014486276e-07, + 2.535634615677343780e-07, + 2.536029565018402044e-07, + 2.536420285254188101e-07, + 2.536806776608053951e-07, + 2.537189039310289852e-07, + 2.537567073598065030e-07, + 2.537940879715478499e-07, + 2.538310457913471181e-07, + 2.538675808449972548e-07, + 2.539036931589751866e-07, + 2.539393827604373191e-07, + 2.539746496772468540e-07, + 2.540094939379437725e-07, + 2.540439155717594463e-07, + 2.540779146086174846e-07, + 2.541114910791236761e-07, + 2.541446450145748294e-07, + 2.541773764469551203e-07, + 2.542096854089332332e-07, + 2.542415719338742193e-07, + 2.542730360558225034e-07, + 2.543040778095056422e-07, + 2.543346972303515299e-07, + 2.543648943544637282e-07, + 2.543946692186327955e-07, + 2.544240218603452868e-07, + 2.544529523177574421e-07, + 2.544814606297260509e-07, + 2.545095468357882820e-07, + 2.545372109761652829e-07, + 2.545644530917614394e-07, + 2.545912732241762866e-07, + 2.546176714156780920e-07, + 2.546436477092358311e-07, + 2.546692021484919237e-07, + 2.546943347777750979e-07, + 2.547190456421073254e-07, + 2.547433347871783574e-07, + 2.547672022593708711e-07, + 2.547906481057538521e-07, + 2.548136723740721653e-07, + 2.548362751127541255e-07, + 2.548584563709194379e-07, + 2.548802161983567522e-07, + 2.549015546455493907e-07, + 2.549224717636558142e-07, + 2.549429676045150742e-07, + 2.549630422206560250e-07, + 2.549826956652778943e-07, + 2.550019279922652123e-07, + 2.550207392561895061e-07, + 2.550391295122965409e-07, + 2.550570988165106612e-07, + 2.550746472254450611e-07, + 2.550917747963822493e-07, + 2.551084815872894551e-07, + 2.551247676568171455e-07, + 2.551406330642883848e-07, + 2.551560778697102162e-07, + 2.551711021337646095e-07, + 2.551857059178130666e-07, + 2.551998892838993744e-07, + 2.552136522947401817e-07, + 2.552269950137322517e-07, + 2.552399175049480155e-07, + 2.552524198331405476e-07, + 2.552645020637362083e-07, + 2.552761642628429014e-07, + 2.552874064972411810e-07, + 2.552982288343891746e-07, + 2.553086313424198831e-07, + 2.553186140901420809e-07, + 2.553281771470457156e-07, + 2.553373205832891500e-07, + 2.553460444697086376e-07, + 2.553543488778145115e-07, + 2.553622338797926136e-07, + 2.553696995485008004e-07, + 2.553767459574760372e-07, + 2.553833731809223806e-07, + 2.553895812937241077e-07, + 2.553953703714335398e-07, + 2.554007404902788776e-07, + 2.554056917271581661e-07, + 2.554102241596466000e-07, + 2.554143378659884245e-07, + 2.554180329250984698e-07, + 2.554213094165674986e-07, + 2.554241674206532062e-07, + 2.554266070182889024e-07, + 2.554286282910755180e-07, + 2.554302313212853102e-07, + 2.554314161918607509e-07, + 2.554321829864155331e-07, + 2.554325317892293289e-07, + 2.554324626852591724e-07, + 2.554319757601245834e-07, + 2.554310711001151904e-07, + 2.554297487921905193e-07, + 2.554280089239781930e-07, + 2.554258515837727142e-07, + 2.554232768605398593e-07, + 2.554202848439082077e-07, + 2.554168756241778773e-07, + 2.554130492923134834e-07, + 2.554088059399460443e-07, + 2.554041456593761050e-07, + 2.553990685435674373e-07, + 2.553935746861478338e-07, + 2.553876641814174727e-07, + 2.553813371243347294e-07, + 2.553745936105267649e-07, + 2.553674337362853965e-07, + 2.553598575985632858e-07, + 2.553518652949819858e-07, + 2.553434569238236824e-07, + 2.553346325840338410e-07, + 2.553253923752248597e-07, + 2.553157363976693988e-07, + 2.553056647523003808e-07, + 2.552951775407164960e-07, + 2.552842748651784439e-07, + 2.552729568286049098e-07, + 2.552612235345817235e-07, + 2.552490750873506885e-07, + 2.552365115918168355e-07, + 2.552235331535451924e-07, + 2.552101398787608906e-07, + 2.551963318743491119e-07, + 2.551821092478548237e-07, + 2.551674721074804501e-07, + 2.551524205620892594e-07, + 2.551369547212030882e-07, + 2.551210746950017058e-07, + 2.551047805943219145e-07, + 2.550880725306600375e-07, + 2.550709506161671018e-07, + 2.550534149636534432e-07, + 2.550354656865846309e-07, + 2.550171028990841137e-07, + 2.549983267159316323e-07, + 2.549791372525596190e-07, + 2.549595346250592863e-07, + 2.549395189501746971e-07, + 2.549190903453063119e-07, + 2.548982489285065419e-07, + 2.548769948184859960e-07, + 2.548553281346061747e-07, + 2.548332489968809529e-07, + 2.548107575259805502e-07, + 2.547878538432253366e-07, + 2.547645380705900154e-07, + 2.547408103306992288e-07, + 2.547166707468310517e-07, + 2.546921194429159336e-07, + 2.546671565435326216e-07, + 2.546417821739132429e-07, + 2.546159964599384342e-07, + 2.545897995281400948e-07, + 2.545631915056993217e-07, + 2.545361725204458805e-07, + 2.545087427008617520e-07, + 2.544809021760743031e-07, + 2.544526510758601517e-07, + 2.544239895306449546e-07, + 2.543949176715000722e-07, + 2.543654356301469100e-07, + 2.543355435389507243e-07, + 2.543052415309257046e-07, + 2.542745297397325382e-07, + 2.542434082996768752e-07, + 2.542118773457095928e-07, + 2.541799370134266899e-07, + 2.541475874390707161e-07, + 2.541148287595267485e-07, + 2.540816611123249857e-07, + 2.540480846356397947e-07, + 2.540140994682890230e-07, + 2.539797057497321455e-07, + 2.539449036200731763e-07, + 2.539096932200566450e-07, + 2.538740746910717265e-07, + 2.538380481751449350e-07, + 2.538016138149491235e-07, + 2.537647717537949612e-07, + 2.537275221356340033e-07, + 2.536898651050589032e-07, + 2.536518008073012948e-07, + 2.536133293882316336e-07, + 2.535744509943619497e-07, + 2.535351657728383831e-07, + 2.534954738714515072e-07, + 2.534553754386259524e-07, + 2.534148706234231062e-07, + 2.533739595755434952e-07, + 2.533326424453255151e-07, + 2.532909193837406654e-07, + 2.532487905423975736e-07, + 2.532062560735449061e-07, + 2.531633161300588750e-07, + 2.531199708654584845e-07, + 2.530762204338906550e-07, + 2.530320649901405991e-07, + 2.529875046896266336e-07, + 2.529425396883976912e-07, + 2.528971701431382441e-07, + 2.528513962111685159e-07, + 2.528052180504336813e-07, + 2.527586358195157781e-07, + 2.527116496776282543e-07, + 2.526642597846107798e-07, + 2.526164663009413697e-07, + 2.525682693877214025e-07, + 2.525196692066869490e-07, + 2.524706659201998787e-07, + 2.524212596912550062e-07, + 2.523714506834695037e-07, + 2.523212390610981476e-07, + 2.522706249890146833e-07, + 2.522196086327244253e-07, + 2.521681901583621397e-07, + 2.521163697326820908e-07, + 2.520641475230736064e-07, + 2.520115236975467832e-07, + 2.519584984247361401e-07, + 2.519050718739036887e-07, + 2.518512442149362331e-07, + 2.517970156183427762e-07, + 2.517423862552610309e-07, + 2.516873562974445034e-07, + 2.516319259172760451e-07, + 2.515760952877580590e-07, + 2.515198645825169999e-07, + 2.514632339757996152e-07, + 2.514062036424747452e-07, + 2.513487737580316288e-07, + 2.512909444985810682e-07, + 2.512327160408526233e-07, + 2.511740885621966762e-07, + 2.511150622405837430e-07, + 2.510556372546014561e-07, + 2.509958137834547763e-07, + 2.509355920069691159e-07, + 2.508749721055876919e-07, + 2.508139542603702554e-07, + 2.507525386529939387e-07, + 2.506907254657485434e-07, + 2.506285148815432643e-07, + 2.505659070839033005e-07, + 2.505029022569658328e-07, + 2.504395005854873288e-07, + 2.503757022548356019e-07, + 2.503115074509896531e-07, + 2.502469163605453879e-07, + 2.501819291707111695e-07, + 2.501165460693080306e-07, + 2.500507672447654915e-07, + 2.499845928861339473e-07, + 2.499180231830615338e-07, + 2.498510583258171031e-07, + 2.497836985052774653e-07, + 2.497159439129272294e-07, + 2.496477947408654211e-07, + 2.495792511817910829e-07, + 2.495103134290187328e-07, + 2.494409816764716407e-07, + 2.493712561186774874e-07, + 2.493011369507713293e-07, + 2.492306243684988277e-07, + 2.491597185682051314e-07, + 2.490884197468452001e-07, + 2.490167281019800983e-07, + 2.489446438317767842e-07, + 2.488721671350051440e-07, + 2.487992982110354520e-07, + 2.487260372598446166e-07, + 2.486523844820200983e-07, + 2.485783400787379924e-07, + 2.485039042517860051e-07, + 2.484290772035536593e-07, + 2.483538591370259423e-07, + 2.482782502557913522e-07, + 2.482022507640474038e-07, + 2.481258608665763295e-07, + 2.480490807687704900e-07, + 2.479719106766198805e-07, + 2.478943507967040844e-07, + 2.478164013362189014e-07, + 2.477380625029393430e-07, + 2.476593345052485372e-07, + 2.475802175521242294e-07, + 2.475007118531350762e-07, + 2.474208176184501218e-07, + 2.473405350588394333e-07, + 2.472598643856565773e-07, + 2.471788058108564613e-07, + 2.470973595469889272e-07, + 2.470155258071857817e-07, + 2.469333048051921362e-07, + 2.468506967553262257e-07, + 2.467677018725088963e-07, + 2.466843203722483586e-07, + 2.466005524706502988e-07, + 2.465163983843969152e-07, + 2.464318583307807460e-07, + 2.463469325276644887e-07, + 2.462616211935105400e-07, + 2.461759245473718902e-07, + 2.460898428088761888e-07, + 2.460033761982577724e-07, + 2.459165249363286013e-07, + 2.458292892444814357e-07, + 2.457416693447040232e-07, + 2.456536654595686175e-07, + 2.455652778122292779e-07, + 2.454765066264316631e-07, + 2.453873521264940792e-07, + 2.452978145373297670e-07, + 2.452078940844341438e-07, + 2.451175909938728386e-07, + 2.450269054923124504e-07, + 2.449358378069934431e-07, + 2.448443881657307277e-07, + 2.447525567969271091e-07, + 2.446603439295680447e-07, + 2.445677497932138099e-07, + 2.444747746180056388e-07, + 2.443814186346680005e-07, + 2.442876820744932999e-07, + 2.441935651693609884e-07, + 2.440990681517241177e-07, + 2.440041912546157452e-07, + 2.439089347116452815e-07, + 2.438132987569906019e-07, + 2.437172836254118642e-07, + 2.436208895522439907e-07, + 2.435241167733945511e-07, + 2.434269655253452975e-07, + 2.433294360451534881e-07, + 2.432315285704427811e-07, + 2.431332433394153056e-07, + 2.430345805908444084e-07, + 2.429355405640726953e-07, + 2.428361234990184901e-07, + 2.427363296361590521e-07, + 2.426361592165520172e-07, + 2.425356124818219509e-07, + 2.424346896741618311e-07, + 2.423333910363314590e-07, + 2.422317168116630718e-07, + 2.421296672440453011e-07, + 2.420272425779408022e-07, + 2.419244430583887953e-07, + 2.418212689309714487e-07, + 2.417177204418544832e-07, + 2.416137978377638792e-07, + 2.415095013659804237e-07, + 2.414048312743600919e-07, + 2.412997878113174772e-07, + 2.411943712258297088e-07, + 2.410885817674390987e-07, + 2.409824196862401714e-07, + 2.408758852328942753e-07, + 2.407689786586350881e-07, + 2.406617002152329363e-07, + 2.405540501550329638e-07, + 2.404460287309391444e-07, + 2.403376361964021061e-07, + 2.402288728054435887e-07, + 2.401197388126359564e-07, + 2.400102344731092385e-07, + 2.399003600425508124e-07, + 2.397901157772061968e-07, + 2.396795019338608414e-07, + 2.395685187698823719e-07, + 2.394571665431632570e-07, + 2.393454455121690360e-07, + 2.392333559359151845e-07, + 2.391208980739585377e-07, + 2.390080721864149729e-07, + 2.388948785339645972e-07, + 2.387813173778139484e-07, + 2.386673889797359119e-07, + 2.385530936020536798e-07, + 2.384384315076225398e-07, + 2.383234029598748735e-07, + 2.382080082227636702e-07, + 2.380922475608038465e-07, + 2.379761212390548018e-07, + 2.378596295231264808e-07, + 2.377427726791563973e-07, + 2.376255509738591328e-07, + 2.375079646744638148e-07, + 2.373900140487584802e-07, + 2.372716993650773168e-07, + 2.371530208922805465e-07, + 2.370339788997951885e-07, + 2.369145736575772075e-07, + 2.367948054361181314e-07, + 2.366746745064610653e-07, + 2.365541811401854979e-07, + 2.364333256094105309e-07, + 2.363121081867986906e-07, + 2.361905291455397281e-07, + 2.360685887593713722e-07, + 2.359462873025730822e-07, + 2.358236250499402925e-07, + 2.357006022768329587e-07, + 2.355772192591336294e-07, + 2.354534762732499869e-07, + 2.353293735961385910e-07, + 2.352049115052861381e-07, + 2.350800902787120821e-07, + 2.349549101949705133e-07, + 2.348293715331501322e-07, + 2.347034745728598498e-07, + 2.345772195942526372e-07, + 2.344506068780078432e-07, + 2.343236367053345302e-07, + 2.341963093579758939e-07, + 2.340686251181930643e-07, + 2.339405842687858847e-07, + 2.338121870930782201e-07, + 2.336834338749231460e-07, + 2.335543248986987927e-07, + 2.334248604493137446e-07, + 2.332950408121903116e-07, + 2.331648662732866314e-07, + 2.330343371190846522e-07, + 2.329034536365862151e-07, + 2.327722161133241716e-07, + 2.326406248373378191e-07, + 2.325086800972032891e-07, + 2.323763821820143821e-07, + 2.322437313813840509e-07, + 2.321107279854484230e-07, + 2.319773722848656102e-07, + 2.318436645707995883e-07, + 2.317096051349425110e-07, + 2.315751942695185745e-07, + 2.314404322672403956e-07, + 2.313053194213568156e-07, + 2.311698560256354573e-07, + 2.310340423743408868e-07, + 2.308978787622691309e-07, + 2.307613654847271356e-07, + 2.306245028375332433e-07, + 2.304872911170265100e-07, + 2.303497306200422999e-07, + 2.302118216439366377e-07, + 2.300735644865963732e-07, + 2.299349594463855004e-07, + 2.297960068221998971e-07, + 2.296567069134439520e-07, + 2.295170600200183886e-07, + 2.293770664423446704e-07, + 2.292367264813478750e-07, + 2.290960404384639466e-07, + 2.289550086156313053e-07, + 2.288136313153007998e-07, + 2.286719088404083108e-07, + 2.285298414944317937e-07, + 2.283874295813157339e-07, + 2.282446734055304917e-07, + 2.281015732720476063e-07, + 2.279581294863284403e-07, + 2.278143423543438729e-07, + 2.276702121825836440e-07, + 2.275257392780055322e-07, + 2.273809239480884529e-07, + 2.272357665008123417e-07, + 2.270902672446314197e-07, + 2.269444264885406062e-07, + 2.267982445419904181e-07, + 2.266517217149522450e-07, + 2.265048583178927258e-07, + 2.263576546617529702e-07, + 2.262101110580020809e-07, + 2.260622278185868603e-07, + 2.259140052559391697e-07, + 2.257654436829985345e-07, + 2.256165434131972676e-07, + 2.254673047604377325e-07, + 2.253177280391484060e-07, + 2.251678135642305680e-07, + 2.250175616510656340e-07, + 2.248669726155397449e-07, + 2.247160467740249211e-07, + 2.245647844433793269e-07, + 2.244131859409561644e-07, + 2.242612515845773627e-07, + 2.241089816925693118e-07, + 2.239563765837444664e-07, + 2.238034365773762521e-07, + 2.236501619932601849e-07, + 2.234965531516553457e-07, + 2.233426103732934069e-07, + 2.231883339794077493e-07, + 2.230337242917061978e-07, + 2.228787816323795980e-07, + 2.227235063241051510e-07, + 2.225678986900203412e-07, + 2.224119590537640963e-07, + 2.222556877394458444e-07, + 2.220990850716536137e-07, + 2.219421513754533972e-07, + 2.217848869763943671e-07, + 2.216272922004839937e-07, + 2.214693673742232231e-07, + 2.213111128245835019e-07, + 2.211525288790095033e-07, + 2.209936158654202390e-07, + 2.208343741122138238e-07, + 2.206748039482433350e-07, + 2.205149057028518054e-07, + 2.203546797058467068e-07, + 2.201941262875085786e-07, + 2.200332457785921137e-07, + 2.198720385103028381e-07, + 2.197105048143350421e-07, + 2.195486450228435377e-07, + 2.193864594684521809e-07, + 2.192239484842499021e-07, + 2.190611124037989640e-07, + 2.188979515611102129e-07, + 2.187344662906753715e-07, + 2.185706569274449101e-07, + 2.184065238068341086e-07, + 2.182420672647202502e-07, + 2.180772876374495569e-07, + 2.179121852618099253e-07, + 2.177467604750724844e-07, + 2.175810136149593023e-07, + 2.174149450196523065e-07, + 2.172485550278010134e-07, + 2.170818439784921141e-07, + 2.169148122112836735e-07, + 2.167474600662110067e-07, + 2.165797878837245544e-07, + 2.164117960047608218e-07, + 2.162434847707077562e-07, + 2.160748545233901357e-07, + 2.159059056051054092e-07, + 2.157366383585969356e-07, + 2.155670531270629567e-07, + 2.153971502541571273e-07, + 2.152269300839681062e-07, + 2.150563929610456824e-07, + 2.148855392304098539e-07, + 2.147143692374909270e-07, + 2.145428833281933345e-07, + 2.143710818488707278e-07, + 2.141989651463017574e-07, + 2.140265335677277386e-07, + 2.138537874608553787e-07, + 2.136807271737945461e-07, + 2.135073530551287331e-07, + 2.133336654538843771e-07, + 2.131596647195033852e-07, + 2.129853512019198966e-07, + 2.128107252514599621e-07, + 2.126357872189206355e-07, + 2.124605374555381840e-07, + 2.122849763129610091e-07, + 2.121091041433187063e-07, + 2.119329212991587762e-07, + 2.117564281334524210e-07, + 2.115796249996287967e-07, + 2.114025122515557428e-07, + 2.112250902435054513e-07, + 2.110473593302375815e-07, + 2.108693198668949959e-07, + 2.106909722090844398e-07, + 2.105123167128374189e-07, + 2.103333537346177701e-07, + 2.101540836313222698e-07, + 2.099745067602864574e-07, + 2.097946234792541954e-07, + 2.096144341464195177e-07, + 2.094339391204073861e-07, + 2.092531387602419004e-07, + 2.090720334254175017e-07, + 2.088906234758340425e-07, + 2.087089092718062094e-07, + 2.085268911740925346e-07, + 2.083445695438710960e-07, + 2.081619447427435675e-07, + 2.079790171327436893e-07, + 2.077957870763052922e-07, + 2.076122549363066346e-07, + 2.074284210760422387e-07, + 2.072442858592241611e-07, + 2.070598496499881069e-07, + 2.068751128128937481e-07, + 2.066900757129003706e-07, + 2.065047387154049912e-07, + 2.063191021862175817e-07, + 2.061331664915610426e-07, + 2.059469319980793819e-07, + 2.057603990728361007e-07, + 2.055735680832876707e-07, + 2.053864393973278970e-07, + 2.051990133832556518e-07, + 2.050112904097831066e-07, + 2.048232708460403641e-07, + 2.046349550615503121e-07, + 2.044463434262649929e-07, + 2.042574363105403777e-07, + 2.040682340851411576e-07, + 2.038787371212418022e-07, + 2.036889457904307951e-07, + 2.034988604646819139e-07, + 2.033084815163969261e-07, + 2.031178093183788546e-07, + 2.029268442438321893e-07, + 2.027355866663675728e-07, + 2.025440369600067758e-07, + 2.023521954991514637e-07, + 2.021600626586285916e-07, + 2.019676388136581380e-07, + 2.017749243398633219e-07, + 2.015819196132732765e-07, + 2.013886250102936677e-07, + 2.011950409077447043e-07, + 2.010011676828679148e-07, + 2.008070057132556582e-07, + 2.006125553769265628e-07, + 2.004178170522991887e-07, + 2.002227911181597877e-07, + 2.000274779537145284e-07, + 1.998318779385551644e-07, + 1.996359914526666051e-07, + 1.994398188764340624e-07, + 1.992433605906109957e-07, + 1.990466169763568579e-07, + 1.988495884152471274e-07, + 1.986522752891974193e-07, + 1.984546779805445888e-07, + 1.982567968720136703e-07, + 1.980586323466852405e-07, + 1.978601847880746155e-07, + 1.976614545800582387e-07, + 1.974624421068846923e-07, + 1.972631477532081018e-07, + 1.970635719040682573e-07, + 1.968637149448550121e-07, + 1.966635772613975116e-07, + 1.964631592398500562e-07, + 1.962624612667805364e-07, + 1.960614837291373724e-07, + 1.958602270142165326e-07, + 1.956586915097397518e-07, + 1.954568776037847568e-07, + 1.952547856847885753e-07, + 1.950524161415912902e-07, + 1.948497693634077171e-07, + 1.946468457397946613e-07, + 1.944436456607441441e-07, + 1.942401695165607154e-07, + 1.940364176979571686e-07, + 1.938323905960098861e-07, + 1.936280886021670712e-07, + 1.934235121082474775e-07, + 1.932186615064486149e-07, + 1.930135371893142708e-07, + 1.928081395497797209e-07, + 1.926024689811495468e-07, + 1.923965258770618763e-07, + 1.921903106315712064e-07, + 1.919838236390741035e-07, + 1.917770652943153435e-07, + 1.915700359924271407e-07, + 1.913627361289016456e-07, + 1.911551660995893033e-07, + 1.909473263007140212e-07, + 1.907392171288352908e-07, + 1.905308389808984001e-07, + 1.903221922542096059e-07, + 1.901132773463985727e-07, + 1.899040946555086347e-07, + 1.896946445799118806e-07, + 1.894849275183219388e-07, + 1.892749438698339732e-07, + 1.890646940338913310e-07, + 1.888541784102912605e-07, + 1.886433973991851491e-07, + 1.884323514010895348e-07, + 1.882210408168432252e-07, + 1.880094660476670133e-07, + 1.877976274951222522e-07, + 1.875855255611211255e-07, + 1.873731606479350119e-07, + 1.871605331581579564e-07, + 1.869476434947579957e-07, + 1.867344920610440178e-07, + 1.865210792606702091e-07, + 1.863074054976371128e-07, + 1.860934711762994115e-07, + 1.858792767013320191e-07, + 1.856648224777769854e-07, + 1.854501089110128440e-07, + 1.852351364067617593e-07, + 1.850199053710943436e-07, + 1.848044162103965439e-07, + 1.845886693314208078e-07, + 1.843726651412514873e-07, + 1.841564040473100007e-07, + 1.839398864573569765e-07, + 1.837231127794989767e-07, + 1.835060834221533186e-07, + 1.832887987940897645e-07, + 1.830712593044403951e-07, + 1.828534653626180032e-07, + 1.826354173784052437e-07, + 1.824171157619169408e-07, + 1.821985609235731418e-07, + 1.819797532741534859e-07, + 1.817606932247578436e-07, + 1.815413811868173548e-07, + 1.813218175720993787e-07, + 1.811020027926744589e-07, + 1.808819372609581996e-07, + 1.806616213897191791e-07, + 1.804410555920010233e-07, + 1.802202402812053619e-07, + 1.799991758710601706e-07, + 1.797778627755818925e-07, + 1.795563014091716033e-07, + 1.793344921864912119e-07, + 1.791124355225595985e-07, + 1.788901318327066898e-07, + 1.786675815325950316e-07, + 1.784447850381661880e-07, + 1.782217427657462491e-07, + 1.779984551319153888e-07, + 1.777749225536072582e-07, + 1.775511454480713725e-07, + 1.773271242328361588e-07, + 1.771028593258018917e-07, + 1.768783511451540312e-07, + 1.766536001093724342e-07, + 1.764286066372782589e-07, + 1.762033711480045571e-07, + 1.759778940609585808e-07, + 1.757521757959219177e-07, + 1.755262167729212128e-07, + 1.753000174123305534e-07, + 1.750735781348212559e-07, + 1.748468993613729037e-07, + 1.746199815132703563e-07, + 1.743928250121155018e-07, + 1.741654302797862549e-07, + 1.739377977384920910e-07, + 1.737099278107490319e-07, + 1.734818209193350445e-07, + 1.732534774873883491e-07, + 1.730248979383200962e-07, + 1.727960826958228363e-07, + 1.725670321839170278e-07, + 1.723377468269126287e-07, + 1.721082270494195529e-07, + 1.718784732763522754e-07, + 1.716484859328952364e-07, + 1.714182654445568136e-07, + 1.711878122371305697e-07, + 1.709571267367052323e-07, + 1.707262093696635813e-07, + 1.704950605626888292e-07, + 1.702636807427312680e-07, + 1.700320703370584568e-07, + 1.698002297732194873e-07, + 1.695681594790535333e-07, + 1.693358598826996979e-07, + 1.691033314125542909e-07, + 1.688705744973311536e-07, + 1.686375895660232776e-07, + 1.684043770479065372e-07, + 1.681709373725436594e-07, + 1.679372709697918212e-07, + 1.677033782697625213e-07, + 1.674692597028787017e-07, + 1.672349156998370814e-07, + 1.670003466916139796e-07, + 1.667655531094689952e-07, + 1.665305353849498242e-07, + 1.662952939498542224e-07, + 1.660598292362871011e-07, + 1.658241416766220398e-07, + 1.655882317035099420e-07, + 1.653520997498848053e-07, + 1.651157462489308198e-07, + 1.648791716341330045e-07, + 1.646423763392411558e-07, + 1.644053607982779469e-07, + 1.641681254455387693e-07, + 1.639306707156000174e-07, + 1.636929970432782463e-07, + 1.634551048636920574e-07, + 1.632169946122166238e-07, + 1.629786667244965546e-07, + 1.627401216364444387e-07, + 1.625013597842492893e-07, + 1.622623816043359384e-07, + 1.620231875334247799e-07, + 1.617837780084898675e-07, + 1.615441534667716467e-07, + 1.613043143457801842e-07, + 1.610642610832595661e-07, + 1.608239941172348816e-07, + 1.605835138860218845e-07, + 1.603428208281358580e-07, + 1.601019153823909818e-07, + 1.598607979878613691e-07, + 1.596194690838367821e-07, + 1.593779291099345732e-07, + 1.591361785059578068e-07, + 1.588942177120045793e-07, + 1.586520471684177532e-07, + 1.584096673158038830e-07, + 1.581670785949814403e-07, + 1.579242814470930985e-07, + 1.576812763134603607e-07, + 1.574380636356967713e-07, + 1.571946438556653787e-07, + 1.569510174154372839e-07, + 1.567071847573927812e-07, + 1.564631463241291908e-07, + 1.562189025584712877e-07, + 1.559744539035179677e-07, + 1.557298008026146400e-07, + 1.554849436993103192e-07, + 1.552398830374680308e-07, + 1.549946192611225628e-07, + 1.547491528145908710e-07, + 1.545034841424331951e-07, + 1.542576136894066833e-07, + 1.540115419005709275e-07, + 1.537652692211926723e-07, + 1.535187960967570906e-07, + 1.532721229730169123e-07, + 1.530252502959612419e-07, + 1.527781785117732077e-07, + 1.525309080669347023e-07, + 1.522834394081288418e-07, + 1.520357729822515324e-07, + 1.517879092364628227e-07, + 1.515398486181440219e-07, + 1.512915915749075204e-07, + 1.510431385546052337e-07, + 1.507944900052893213e-07, + 1.505456463752703404e-07, + 1.502966081130764830e-07, + 1.500473756674627340e-07, + 1.497979494874109508e-07, + 1.495483300221383868e-07, + 1.492985177210560272e-07, + 1.490485130338295765e-07, + 1.487983164103380322e-07, + 1.485479283006828175e-07, + 1.482973491551965958e-07, + 1.480465794244013950e-07, + 1.477956195590717914e-07, + 1.475444700101893549e-07, + 1.472931312289545868e-07, + 1.470416036667873966e-07, + 1.467898877753329251e-07, + 1.465379840064209662e-07, + 1.462858928121286741e-07, + 1.460336146447369935e-07, + 1.457811499567405600e-07, + 1.455284992008466672e-07, + 1.452756628299856166e-07, + 1.450226412972672012e-07, + 1.447694350560426980e-07, + 1.445160445598635219e-07, + 1.442624702624896697e-07, + 1.440087126178993815e-07, + 1.437547720802468419e-07, + 1.435006491039241197e-07, + 1.432463441435200862e-07, + 1.429918576538261332e-07, + 1.427371900898399049e-07, + 1.424823419067717039e-07, + 1.422273135600027744e-07, + 1.419721055051483800e-07, + 1.417167181980138108e-07, + 1.414611520946055010e-07, + 1.412054076511279050e-07, + 1.409494853239958325e-07, + 1.406933855697783592e-07, + 1.404371088453173054e-07, + 1.401806556075751670e-07, + 1.399240263137528004e-07, + 1.396672214212455884e-07, + 1.394102413876115176e-07, + 1.391530866706226093e-07, + 1.388957577282743426e-07, + 1.386382550186908662e-07, + 1.383805790002289983e-07, + 1.381227301314353452e-07, + 1.378647088710027061e-07, + 1.376065156778890540e-07, + 1.373481510111618150e-07, + 1.370896153301204487e-07, + 1.368309090942490949e-07, + 1.365720327631846501e-07, + 1.363129867967706341e-07, + 1.360537716550660307e-07, + 1.357943877982481698e-07, + 1.355348356867188985e-07, + 1.352751157810621226e-07, + 1.350152285419971409e-07, + 1.347551744304897655e-07, + 1.344949539076508362e-07, + 1.342345674347479732e-07, + 1.339740154732575113e-07, + 1.337132984848342971e-07, + 1.334524169312626411e-07, + 1.331913712745801166e-07, + 1.329301619769200382e-07, + 1.326687895006342018e-07, + 1.324072543082460600e-07, + 1.321455568624053793e-07, + 1.318836976260016627e-07, + 1.316216770620593299e-07, + 1.313594956337500784e-07, + 1.310971538044476231e-07, + 1.308346520376931794e-07, + 1.305719907971495917e-07, + 1.303091705467249468e-07, + 1.300461917504128551e-07, + 1.297830548724179181e-07, + 1.295197603770958262e-07, + 1.292563087289651125e-07, + 1.289927003927067811e-07, + 1.287289358331742606e-07, + 1.284650155153467638e-07, + 1.282009399043980565e-07, + 1.279367094656491821e-07, + 1.276723246645785472e-07, + 1.274077859668225298e-07, + 1.271430938381845588e-07, + 1.268782487445903004e-07, + 1.266132511521538063e-07, + 1.263481015271315093e-07, + 1.260828003359342137e-07, + 1.258173480451354602e-07, + 1.255517451214266063e-07, + 1.252859920316839276e-07, + 1.250200892429221894e-07, + 1.247540372223057907e-07, + 1.244878364371470702e-07, + 1.242214873549169205e-07, + 1.239549904432005042e-07, + 1.236883461697617874e-07, + 1.234215550024986732e-07, + 1.231546174094539602e-07, + 1.228875338588137015e-07, + 1.226203048189182427e-07, + 1.223529307582153700e-07, + 1.220854121453291055e-07, + 1.218177494490120615e-07, + 1.215499431381559754e-07, + 1.212819936818037007e-07, + 1.210139015491007936e-07, + 1.207456672093651018e-07, + 1.204772911320389609e-07, + 1.202087737866999932e-07, + 1.199401156430622727e-07, + 1.196713171709834457e-07, + 1.194023788404208964e-07, + 1.191333011214984114e-07, + 1.188640844844596721e-07, + 1.185947293996801927e-07, + 1.183252363376636277e-07, + 1.180556057690567534e-07, + 1.177858381645866689e-07, + 1.175159339951896374e-07, + 1.172458937318475561e-07, + 1.169757178457147593e-07, + 1.167054068080703603e-07, + 1.164349610902832707e-07, + 1.161643811638701169e-07, + 1.158936675005034323e-07, + 1.156228205719090604e-07, + 1.153518408499802131e-07, + 1.150807288067302355e-07, + 1.148094849142463232e-07, + 1.145381096448147644e-07, + 1.142666034707584286e-07, + 1.139949668645654226e-07, + 1.137232002988384809e-07, + 1.134513042462616265e-07, + 1.131792791796565915e-07, + 1.129071255719944903e-07, + 1.126348438962890666e-07, + 1.123624346257134521e-07, + 1.120898982335525472e-07, + 1.118172351931543692e-07, + 1.115444459780481347e-07, + 1.112715310618354679e-07, + 1.109984909182049996e-07, + 1.107253260209858354e-07, + 1.104520368441157660e-07, + 1.101786238615897435e-07, + 1.099050875475915423e-07, + 1.096314283763265359e-07, + 1.093576468221498773e-07, + 1.090837433595201898e-07, + 1.088097184629507566e-07, + 1.085355726071264250e-07, + 1.082613062667966286e-07, + 1.079869199167882778e-07, + 1.077124140320604600e-07, + 1.074377890876594409e-07, + 1.071630455587279551e-07, + 1.068881839205172768e-07, + 1.066132046483383692e-07, + 1.063381082176322155e-07, + 1.060628951039228738e-07, + 1.057875657828262925e-07, + 1.055121207300511036e-07, + 1.052365604214086818e-07, + 1.049608853327669278e-07, + 1.046850959401173960e-07, + 1.044091927195304281e-07, + 1.041331761471626175e-07, + 1.038570466992609123e-07, + 1.035808048521679488e-07, + 1.033044510822783366e-07, + 1.030279858661061040e-07, + 1.027514096802390237e-07, + 1.024747230013466869e-07, + 1.021979263061943463e-07, + 1.019210200715936298e-07, + 1.016440047744717058e-07, + 1.013668808918250671e-07, + 1.010896489007290467e-07, + 1.008123092783378709e-07, + 1.005348625018951146e-07, + 1.002573090486865058e-07, + 9.997964939610816485e-08, + 9.970188402162175122e-08, + 9.942401340276199420e-08, + 9.914603801713783108e-08, + 9.886795834244311425e-08, + 9.858977485640835672e-08, + 9.831148803687066530e-08, + 9.803309836172618765e-08, + 9.775460630894149428e-08, + 9.747601235656305474e-08, + 9.719731698267005519e-08, + 9.691852066544495368e-08, + 9.663962388312476245e-08, + 9.636062711401258879e-08, + 9.608153083647555715e-08, + 9.580233552895887781e-08, + 9.552304166993310591e-08, + 9.524364973796830967e-08, + 9.496416021168437348e-08, + 9.468457356976185045e-08, + 9.440489029095400616e-08, + 9.412511085403642024e-08, + 9.384523573786818446e-08, + 9.356526542140212007e-08, + 9.328520038357597380e-08, + 9.300504110343071128e-08, + 9.272478806006438021e-08, + 9.244444173259158515e-08, + 9.216400260020624735e-08, + 9.188347114219069711e-08, + 9.160284783780790212e-08, + 9.132213316641903291e-08, + 9.104132760743700846e-08, + 9.076043164027585948e-08, + 9.047944574448302434e-08, + 9.019837039956957197e-08, + 8.991720608514229923e-08, + 8.963595328085425894e-08, + 8.935461246636885359e-08, + 8.907318412141777771e-08, + 8.879166872581369687e-08, + 8.851006675933953787e-08, + 8.822837870186969380e-08, + 8.794660503332019475e-08, + 8.766474623359862692e-08, + 8.738280278273977706e-08, + 8.710077516073094510e-08, + 8.681866384764721804e-08, + 8.653646932358916000e-08, + 8.625419206870674098e-08, + 8.597183256313743722e-08, + 8.568939128713834190e-08, + 8.540686872091794969e-08, + 8.512426534476501163e-08, + 8.484158163900274240e-08, + 8.455881808393707193e-08, + 8.427597515997860489e-08, + 8.399305334753228142e-08, + 8.371005312700779297e-08, + 8.342697497888062164e-08, + 8.314381938364311079e-08, + 8.286058682181398088e-08, + 8.257727777395092917e-08, + 8.229389272060107820e-08, + 8.201043214237289424e-08, + 8.172689651989940753e-08, + 8.144328633378758878e-08, + 8.115960206474132782e-08, + 8.087584419344916202e-08, + 8.059201320059553914e-08, + 8.030810956692273018e-08, + 8.002413377317988830e-08, + 7.974008630013468226e-08, + 7.945596762857271410e-08, + 7.917177823930868936e-08, + 7.888751861313739511e-08, + 7.860318923090530063e-08, + 7.831879057346121779e-08, + 7.803432312166797422e-08, + 7.774978735641386146e-08, + 7.746518375856246151e-08, + 7.718051280902543873e-08, + 7.689577498871365016e-08, + 7.661097077854695256e-08, + 7.632610065945465240e-08, + 7.604116511238684815e-08, + 7.575616461826358186e-08, + 7.547109965804940452e-08, + 7.518597071270130998e-08, + 7.490077826318302866e-08, + 7.461552279047356404e-08, + 7.433020477551896473e-08, + 7.404482469930505017e-08, + 7.375938304280719748e-08, + 7.347388028700176317e-08, + 7.318831691286581843e-08, + 7.290269340138781644e-08, + 7.261701023351879536e-08, + 7.233126789023171033e-08, + 7.204546685253399338e-08, + 7.175960760135557300e-08, + 7.147369061767086019e-08, + 7.118771638244980574e-08, + 7.090168537661852653e-08, + 7.061559808113442669e-08, + 7.032945497693421099e-08, + 7.004325654494623300e-08, + 6.975700326610257850e-08, + 6.947069562128815092e-08, + 6.918433409140116796e-08, + 6.889791915736674064e-08, + 6.861145130002216647e-08, + 6.832493100024218446e-08, + 6.803835873888722673e-08, + 6.775173499676556667e-08, + 6.746506025470765936e-08, + 6.717833499351524016e-08, + 6.689155969397281263e-08, + 6.660473483684699995e-08, + 6.631786090289913139e-08, + 6.603093837282017950e-08, + 6.574396772736873392e-08, + 6.545694944719491112e-08, + 6.516988401297711053e-08, + 6.488277190537125872e-08, + 6.459561360497221651e-08, + 6.430840959237610202e-08, + 6.402116034819134180e-08, + 6.373386635292561844e-08, + 6.344652808711031823e-08, + 6.315914603124935178e-08, + 6.287172066576858362e-08, + 6.258425247115298524e-08, + 6.229674192776964500e-08, + 6.200918951600609915e-08, + 6.172159571620560001e-08, + 6.143396100869201078e-08, + 6.114628587370639718e-08, + 6.085857079154403506e-08, + 6.057081624237818781e-08, + 6.028302270639658454e-08, + 5.999519066375221280e-08, + 5.970732059451007458e-08, + 5.941941297877344056e-08, + 5.913146829656978518e-08, + 5.884348702786231430e-08, + 5.855546965261191763e-08, + 5.826741665072667771e-08, + 5.797932850207260994e-08, + 5.769120568648720196e-08, + 5.740304868372677179e-08, + 5.711485797354102666e-08, + 5.682663403563615744e-08, + 5.653837734962208446e-08, + 5.625008839513836092e-08, + 5.596176765173974412e-08, + 5.567341559890886119e-08, + 5.538503271611697049e-08, + 5.509661948277377492e-08, + 5.480817637823906860e-08, + 5.451970388182167147e-08, + 5.423120247279181716e-08, + 5.394267263032912000e-08, + 5.365411483359892050e-08, + 5.336552956169896857e-08, + 5.307691729367296285e-08, + 5.278827850852154225e-08, + 5.249961368515137137e-08, + 5.221092330245019550e-08, + 5.192220783923517829e-08, + 5.163346777426468738e-08, + 5.134470358623860544e-08, + 5.105591575380862689e-08, + 5.076710475552801168e-08, + 5.047827106992599180e-08, + 5.018941517545705521e-08, + 4.990053755051239400e-08, + 4.961163867343159743e-08, + 4.932271902245243214e-08, + 4.903377907578430239e-08, + 4.874481931155778545e-08, + 4.845584020783653635e-08, + 4.816684224261652692e-08, + 4.787782589383760641e-08, + 4.758879163933190533e-08, + 4.729973995688766067e-08, + 4.701067132425936043e-08, + 4.672158621905393024e-08, + 4.643248511885687503e-08, + 4.614336850118010053e-08, + 4.585423684342354529e-08, + 4.556509062295044089e-08, + 4.527593031703564958e-08, + 4.498675640287829690e-08, + 4.469756935761230014e-08, + 4.440836965825599627e-08, + 4.411915778177461066e-08, + 4.382993420509183758e-08, + 4.354069940497497461e-08, + 4.325145385816133571e-08, + 4.296219804130654908e-08, + 4.267293243094555395e-08, + 4.238365750356813876e-08, + 4.209437373556750368e-08, + 4.180508160325184783e-08, + 4.151578158284391925e-08, + 4.122647415049301897e-08, + 4.093715978221020960e-08, + 4.064783895400810882e-08, + 4.035851214172128537e-08, + 4.006917982114615179e-08, + 3.977984246798872632e-08, + 3.949050055782601350e-08, + 3.920115456616878386e-08, + 3.891180496847350518e-08, + 3.862245224002745702e-08, + 3.833309685607434307e-08, + 3.804373929176337652e-08, + 3.775438002209728020e-08, + 3.746501952207183522e-08, + 3.717565826649634310e-08, + 3.688629673013338619e-08, + 3.659693538764733075e-08, + 3.630757471355196304e-08, + 3.601821518233735905e-08, + 3.572885726835472106e-08, + 3.543950144582815008e-08, + 3.515014818891772997e-08, + 3.486079797168014700e-08, + 3.457145126801729878e-08, + 3.428210855180342865e-08, + 3.399277029676863213e-08, + 3.370343697651143668e-08, + 3.341410906456176011e-08, + 3.312478703432925481e-08, + 3.283547135911492791e-08, + 3.254616251212346967e-08, + 3.225686096641147191e-08, + 3.196756719496300588e-08, + 3.167828167065066536e-08, + 3.138900486618385131e-08, + 3.109973725423559521e-08, + 3.081047930732681997e-08, + 3.052123149783860863e-08, + 3.023199429807488485e-08, + 2.994276818021133942e-08, + 2.965355361630635239e-08, + 2.936435107831382426e-08, + 2.907516103803119600e-08, + 2.878598396717511286e-08, + 2.849682033732973887e-08, + 2.820767061995859871e-08, + 2.791853528640442222e-08, + 2.762941480790026504e-08, + 2.734030965551830277e-08, + 2.705122030024551142e-08, + 2.676214721293182634e-08, + 2.647309086430212639e-08, + 2.618405172495560532e-08, + 2.589503026537790812e-08, + 2.560602695588887972e-08, + 2.531704226671866556e-08, + 2.502807666795610219e-08, + 2.473913062956032421e-08, + 2.445020462137324483e-08, + 2.416129911306724492e-08, + 2.387241457422126041e-08, + 2.358355147426931844e-08, + 2.329471028251192925e-08, + 2.300589146811574542e-08, + 2.271709550012537398e-08, + 2.242832284741173390e-08, + 2.213957397874783905e-08, + 2.185084936275692073e-08, + 2.156214946792480893e-08, + 2.127347476259855590e-08, + 2.098482571499892326e-08, + 2.069620279316840859e-08, + 2.040760646504730964e-08, + 2.011903719842155242e-08, + 1.983049546093511213e-08, + 1.954198172010162346e-08, + 1.925349644325304907e-08, + 1.896504009760232034e-08, + 1.867661315025569544e-08, + 1.838821606809686801e-08, + 1.809984931791412137e-08, + 1.781151336634840143e-08, + 1.752320867985412818e-08, + 1.723493572477552130e-08, + 1.694669496729430580e-08, + 1.665848687344197416e-08, + 1.637031190911169770e-08, + 1.608217054000678001e-08, + 1.579406323170340028e-08, + 1.550599044966289523e-08, + 1.521795265911615568e-08, + 1.492995032519030761e-08, + 1.464198391285706961e-08, + 1.435405388689380924e-08, + 1.406616071194640376e-08, + 1.377830485254152046e-08, + 1.349048677297085608e-08, + 1.320270693741796339e-08, + 1.291496580990687504e-08, + 1.262726385424971492e-08, + 1.233960153418683243e-08, + 1.205197931320715378e-08, + 1.176439765468798047e-08, + 1.147685702184309858e-08, + 1.118935787767104360e-08, + 1.090190068508213222e-08, + 1.061448590678256272e-08, + 1.032711400528671019e-08, + 1.003978544298012628e-08, + 9.752500682080496251e-09, + 9.465260184585926975e-09, + 9.178064412414573342e-09, + 8.890913827225194677e-09, + 8.603808890556973076e-09, + 8.316750063764730276e-09, + 8.029737808031153380e-09, + 7.742772584366043783e-09, + 7.455854853618284816e-09, + 7.168985076424145441e-09, + 6.882163713283045034e-09, + 6.595391224518718079e-09, + 6.308668070227216771e-09, + 6.021994710403928730e-09, + 5.735371604828011605e-09, + 5.448799213074420273e-09, + 5.162277994576960339e-09, + 4.875808408576552125e-09, + 4.589390914133302541e-09, + 4.303025970138476875e-09, + 4.016714035262783454e-09, + 3.730455568032190545e-09, + 3.444251026776232524e-09, + 3.158100869639959331e-09, + 2.872005554583297469e-09, + 2.585965539393033374e-09, + 2.299981281631155983e-09, + 2.014053238710568990e-09, + 1.728181867843420594e-09, + 1.442367626053136910e-09, + 1.156610970173696740e-09, + 8.709123568616626029e-10, + 5.852722425445134815e-10, + 2.996910834963704702e-10, + 1.416933578631623131e-11, +-2.712925447095672871e-10, +-5.566941022961797943e-10, +-8.420348815110475945e-10, +-1.127314427048624531e-09, +-1.412532283811954014e-09, +-1.697687996900615188e-09, +-1.982781111611468430e-09, +-2.267811173426615012e-09, +-2.552777728064995799e-09, +-2.837680321406769364e-09, +-3.122518499544917099e-09, +-3.407291808773206495e-09, +-3.691999795586906654e-09, +-3.976642006670805337e-09, +-4.261217988950729080e-09, +-4.545727289517964532e-09, +-4.830169455680859219e-09, +-5.114544034952777380e-09, +-5.398850575040081038e-09, +-5.683088623893703878e-09, +-5.967257729646325228e-09, +-6.251357440600285778e-09, +-6.535387305342733601e-09, +-6.819346872619192907e-09, +-7.103235691385171838e-09, +-7.387053310844874527e-09, +-7.670799280375762220e-09, +-7.954473149579951798e-09, +-8.238074468272458236e-09, +-8.521602786468877883e-09, +-8.805057654437045885e-09, +-9.088438622634248223e-09, +-9.371745241695187880e-09, +-9.654977062546982807e-09, +-9.938133636282769410e-09, +-1.022121451421346090e-08, +-1.050421924791886043e-08, +-1.078714738912172948e-08, +-1.106999848980256080e-08, +-1.135277210218752144e-08, +-1.163546777868584511e-08, +-1.191808507192853924e-08, +-1.220062353481964870e-08, +-1.248308272039787180e-08, +-1.276546218201422871e-08, +-1.304776147319361299e-08, +-1.332998014768620746e-08, +-1.361211775951864032e-08, +-1.389417386286822896e-08, +-1.417614801217744184e-08, +-1.445803976214220382e-08, +-1.473984866764891468e-08, +-1.502157428381343404e-08, +-1.530321616603214666e-08, +-1.558477386984360808e-08, +-1.586624695110638028e-08, +-1.614763496586026049e-08, +-1.642893747039085756e-08, +-1.671015402121678719e-08, +-1.699128417509107151e-08, +-1.727232748898865863e-08, +-1.755328352015810148e-08, +-1.783415182604598999e-08, +-1.811493196433598075e-08, +-1.839562349299942705e-08, +-1.867622597017051105e-08, +-1.895673895425997778e-08, +-1.923716200394326345e-08, +-1.951749467809834108e-08, +-1.979773653585658222e-08, +-2.007788713659101758e-08, +-2.035794603990421386e-08, +-2.063791280567971118e-08, +-2.091778699400661394e-08, +-2.119756816521843527e-08, +-2.147725587994392230e-08, +-2.175684969898200629e-08, +-2.203634918341558299e-08, +-2.231575389459977660e-08, +-2.259506339409942144e-08, +-2.287427724374059204e-08, +-2.315339500559805311e-08, +-2.343241624199630841e-08, +-2.371134051549757028e-08, +-2.399016738895282972e-08, +-2.426889642542692375e-08, +-2.454752718824958575e-08, +-2.482605924100373912e-08, +-2.510449214751327162e-08, +-2.538282547189389701e-08, +-2.566105877847894373e-08, +-2.593919163186972025e-08, +-2.621722359692401068e-08, +-2.649515423875631298e-08, +-2.677298312272676135e-08, +-2.705070981449083316e-08, +-2.732833387992573654e-08, +-2.760585488518059039e-08, +-2.788327239666497296e-08, +-2.816058598103687806e-08, +-2.843779520525334185e-08, +-2.871489963649621825e-08, +-2.899189884222289833e-08, +-2.926879239015415411e-08, +-2.954557984827507488e-08, +-2.982226078482329813e-08, +-3.009883476833917634e-08, +-3.037530136760463513e-08, +-3.065166015163058356e-08, +-3.092791068977106508e-08, +-3.120405255159752605e-08, +-3.148008530695089501e-08, +-3.175600852597866031e-08, +-3.203182177906100607e-08, +-3.230752463686160780e-08, +-3.258311667031536357e-08, +-3.285859745061682678e-08, +-3.313396654927082957e-08, +-3.340922353803051046e-08, +-3.368436798888566768e-08, +-3.395939947417560641e-08, +-3.423431756646498891e-08, +-3.450912183859464327e-08, +-3.478381186373141264e-08, +-3.505838721523306667e-08, +-3.533284746682159918e-08, +-3.560719219244821907e-08, +-3.588142096635552776e-08, +-3.615553336305376928e-08, +-3.642952895738325255e-08, +-3.670340732437822394e-08, +-3.697716803944235533e-08, +-3.725081067821122693e-08, +-3.752433481660400295e-08, +-3.779774003087288372e-08, +-3.807102589748012055e-08, +-3.834419199321014164e-08, +-3.861723789515762749e-08, +-3.889016318066630613e-08, +-3.916296742736719535e-08, +-3.943565021322783648e-08, +-3.970821111641764926e-08, +-3.998064971548102428e-08, +-4.025296558920292940e-08, +-4.052515831665764712e-08, +-4.079722747726003339e-08, +-4.106917265064222134e-08, +-4.134099341676511198e-08, +-4.161268935590693268e-08, +-4.188426004860201916e-08, +-4.215570507567875989e-08, +-4.242702401830902186e-08, +-4.269821645788615791e-08, +-4.296928197613577619e-08, +-4.324022015510515221e-08, +-4.351103057710101168e-08, +-4.378171282474001490e-08, +-4.405226648093752708e-08, +-4.432269112889493258e-08, +-4.459298635215024521e-08, +-4.486315173450462147e-08, +-4.513318686007248771e-08, +-4.540309131326931769e-08, +-4.567286467881266491e-08, +-4.594250654171041004e-08, +-4.621201648731032557e-08, +-4.648139410122741626e-08, +-4.675063896939327867e-08, +-4.701975067804469932e-08, +-4.728872881371188221e-08, +-4.755757296326802015e-08, +-4.782628271385636386e-08, +-4.809485765294021678e-08, +-4.836329736829079209e-08, +-4.863160144798832437e-08, +-4.889976948040978769e-08, +-4.916780105427936023e-08, +-4.943569575859504339e-08, +-4.970345318267792210e-08, +-4.997107291616116000e-08, +-5.023855454899044280e-08, +-5.050589767141220581e-08, +-5.077310187402293399e-08, +-5.104016674769736259e-08, +-5.130709188363679778e-08, +-5.157387687335838976e-08, +-5.184052130868275150e-08, +-5.210702478178418519e-08, +-5.237338688511760575e-08, +-5.263960721146788715e-08, +-5.290568535393844068e-08, +-5.317162090595224729e-08, +-5.343741346123932412e-08, +-5.370306261388693771e-08, +-5.396856795826606431e-08, +-5.423392908908227141e-08, +-5.449914560136275418e-08, +-5.476421709045725530e-08, +-5.502914315202766230e-08, +-5.529392338209507088e-08, +-5.555855737696911719e-08, +-5.582304473329703291e-08, +-5.608738504805142954e-08, +-5.635157791851914792e-08, +-5.661562294235006854e-08, +-5.687951971749795819e-08, +-5.714326784220819462e-08, +-5.740686691512686831e-08, +-5.767031653518153618e-08, +-5.793361630162963475e-08, +-5.819676581410723089e-08, +-5.845976467249689791e-08, +-5.872261247709726775e-08, +-5.898530882849144966e-08, +-5.924785332760686519e-08, +-5.951024557569275545e-08, +-5.977248517438016829e-08, +-6.003457172555075418e-08, +-6.029650483150540521e-08, +-6.055828409483240909e-08, +-6.081990911845729176e-08, +-6.108137950568966889e-08, +-6.134269486010508481e-08, +-6.160385478565310183e-08, +-6.186485888664574616e-08, +-6.212570676769855978e-08, +-6.238639803376674484e-08, +-6.264693229019390784e-08, +-6.290730914258148415e-08, +-6.316752819695516676e-08, +-6.342758905963570729e-08, +-6.368749133728628370e-08, +-6.394723463696096638e-08, +-6.420681856598672916e-08, +-6.446624273207020193e-08, +-6.472550674328733417e-08, +-6.498461020802369236e-08, +-6.524355273501118684e-08, +-6.550233393337546590e-08, +-6.576095341251919732e-08, +-6.601941078222785482e-08, +-6.627770565265906400e-08, +-6.653583763428458055e-08, +-6.679380633793723446e-08, +-6.705161137479954793e-08, +-6.730925235639380928e-08, +-6.756672889462854063e-08, +-6.782404060172868382e-08, +-6.808118709028366956e-08, +-6.833816797323562515e-08, +-6.859498286388105530e-08, +-6.885163137585775280e-08, +-6.910811312319411177e-08, +-6.936442772023853271e-08, +-6.962057478170640640e-08, +-6.987655392267024064e-08, +-7.013236475854710034e-08, +-7.038800690514752370e-08, +-7.064347997860417290e-08, +-7.089878359542043262e-08, +-7.115391737245885596e-08, +-7.140888092694136302e-08, +-7.166367387643882496e-08, +-7.191829583891799500e-08, +-7.217274643267156198e-08, +-7.242702527636674887e-08, +-7.268113198903232939e-08, +-7.293506619006049408e-08, +-7.318882749919533595e-08, +-7.344241553658005938e-08, +-7.369582992268781454e-08, +-7.394907027836796657e-08, +-7.420213622483676498e-08, +-7.445502738366446615e-08, +-7.470774337682317739e-08, +-7.496028382661749291e-08, +-7.521264835573176886e-08, +-7.546483658721882072e-08, +-7.571684814450050563e-08, +-7.596868265135713449e-08, +-7.622033973197303969e-08, +-7.647181901086955360e-08, +-7.672312011294998077e-08, +-7.697424266348969817e-08, +-7.722518628813644643e-08, +-7.747595061289945071e-08, +-7.772653526420678073e-08, +-7.797693986878099574e-08, +-7.822716405379854553e-08, +-7.847720744676525661e-08, +-7.872706967556294547e-08, +-7.897675036848335282e-08, +-7.922624915417196154e-08, +-7.947556566161713076e-08, +-7.972469952025391041e-08, +-7.997365035984937408e-08, +-8.022241781054966909e-08, +-8.047100150292538566e-08, +-8.071940106784745338e-08, +-8.096761613664685982e-08, +-8.121564634098979262e-08, +-8.146349131292367044e-08, +-8.171115068491261240e-08, +-8.195862408977982669e-08, +-8.220591116069730054e-08, +-8.245301153128916471e-08, +-8.269992483551780728e-08, +-8.294665070773003693e-08, +-8.319318878270298158e-08, +-8.343953869553222702e-08, +-8.368570008173266686e-08, +-8.393167257722832484e-08, +-8.417745581829672859e-08, +-8.442304944160310865e-08, +-8.466845308424605874e-08, +-8.491366638363304846e-08, +-8.515868897764110808e-08, +-8.540352050449107058e-08, +-8.564816060279405260e-08, +-8.589260891159677075e-08, +-8.613686507026991845e-08, +-8.638092871860988939e-08, +-8.662479949682742194e-08, +-8.686847704549250234e-08, +-8.711196100556870917e-08, +-8.735525101845800033e-08, +-8.759834672587806518e-08, +-8.784124777002016397e-08, +-8.808395379342603003e-08, +-8.832646443904409164e-08, +-8.856877935021906935e-08, +-8.881089817069363042e-08, +-8.905282054459549797e-08, +-8.929454611648402458e-08, +-8.953607453128335611e-08, +-8.977740543432789352e-08, +-9.001853847135145353e-08, +-9.025947328848732151e-08, +-9.050020953225812684e-08, +-9.074074684962130472e-08, +-9.098108488790151886e-08, +-9.122122329483694385e-08, +-9.146116171856772434e-08, +-9.170089980762585039e-08, +-9.194043721097997077e-08, +-9.217977357796892734e-08, +-9.241890855834815660e-08, +-9.265784180227683859e-08, +-9.289657296031973656e-08, +-9.313510168343618552e-08, +-9.337342762302507764e-08, +-9.361155043085940248e-08, +-9.384946975912945892e-08, +-9.408718526043442453e-08, +-9.432469658778136294e-08, +-9.456200339457454328e-08, +-9.479910533466069031e-08, +-9.503600206226377607e-08, +-9.527269323202848329e-08, +-9.550917849900967037e-08, +-9.574545751866325262e-08, +-9.598152994688986410e-08, +-9.621739543996820672e-08, +-9.645305365460151797e-08, +-9.668850424790569919e-08, +-9.692374687740980528e-08, +-9.715878120104736260e-08, +-9.739360687719697364e-08, +-9.762822356462199235e-08, +-9.786263092251024206e-08, +-9.809682861046665692e-08, +-9.833081628850036458e-08, +-9.856459361707163041e-08, +-9.879816025703498711e-08, +-9.903151586963059239e-08, +-9.926466011658227301e-08, +-9.949759265998960747e-08, +-9.973031316237006592e-08, +-9.996282128669506202e-08, +-1.001951166963328973e-07, +-1.004271990550409260e-07, +-1.006590680270623421e-07, +-1.008907232770180633e-07, +-1.011221644699527089e-07, +-1.013533912713748475e-07, +-1.015844033471413104e-07, +-1.018152003636071432e-07, +-1.020457819875090990e-07, +-1.022761478860074603e-07, +-1.025062977267197623e-07, +-1.027362311776681833e-07, +-1.029659479072669060e-07, +-1.031954475844219613e-07, +-1.034247298784222125e-07, +-1.036537944589840097e-07, +-1.038826409962941110e-07, +-1.041112691608920899e-07, +-1.043396786238207635e-07, +-1.045678690565100165e-07, +-1.047958401308285891e-07, +-1.050235915190651385e-07, +-1.052511228939806746e-07, +-1.054784339286923718e-07, +-1.057055242968234934e-07, +-1.059323936723855215e-07, +-1.061590417298235003e-07, +-1.063854681440561768e-07, +-1.066116725903714326e-07, +-1.068376547445232952e-07, +-1.070634142827199607e-07, +-1.072889508815722701e-07, +-1.075142642181364318e-07, +-1.077393539699042806e-07, +-1.079642198147923456e-07, +-1.081888614311845724e-07, +-1.084132784978692593e-07, +-1.086374706940838700e-07, +-1.088614376995012697e-07, +-1.090851791942330734e-07, +-1.093086948588183698e-07, +-1.095319843742668009e-07, +-1.097550474219952066e-07, +-1.099778836838704395e-07, +-1.102004928421992930e-07, +-1.104228745797287532e-07, +-1.106450285796366414e-07, +-1.108669545255727748e-07, +-1.110886521015978611e-07, +-1.113101209922248705e-07, +-1.115313608824091230e-07, +-1.117523714575386401e-07, +-1.119731524034760860e-07, +-1.121937034064964847e-07, +-1.124140241533297165e-07, +-1.126341143311496264e-07, +-1.128539736275768028e-07, +-1.130736017306652506e-07, +-1.132929983289461452e-07, +-1.135121631113671639e-07, +-1.137310957673315293e-07, +-1.139497959866902263e-07, +-1.141682634597416986e-07, +-1.143864978772230997e-07, +-1.146044989303496408e-07, +-1.148222663107547951e-07, +-1.150397997105316442e-07, +-1.152570988222228716e-07, +-1.154741633388111287e-07, +-1.156909929537596918e-07, +-1.159075873609528917e-07, +-1.161239462547363750e-07, +-1.163400693299064888e-07, +-1.165559562817133785e-07, +-1.167716068058480300e-07, +-1.169870205984852575e-07, +-1.172021973562231796e-07, +-1.174171367761230171e-07, +-1.176318385557015622e-07, +-1.178463023929183933e-07, +-1.180605279862192861e-07, +-1.182745150344848086e-07, +-1.184882632370211233e-07, +-1.187017722936508445e-07, +-1.189150419046128900e-07, +-1.191280717706036813e-07, +-1.193408615928067367e-07, +-1.195534110728429480e-07, +-1.197657199127610380e-07, +-1.199777878151294106e-07, +-1.201896144829340835e-07, +-1.204011996196219398e-07, +-1.206125429291372031e-07, +-1.208236441158169088e-07, +-1.210345028845271170e-07, +-1.212451189405545988e-07, +-1.214554919896481284e-07, +-1.216656217380470979e-07, +-1.218755078924341090e-07, +-1.220851501599230092e-07, +-1.222945482481521182e-07, +-1.225037018651811545e-07, +-1.227126107195347255e-07, +-1.229212745202401261e-07, +-1.231296929767204802e-07, +-1.233378657989322514e-07, +-1.235457926972576432e-07, +-1.237534733825548917e-07, +-1.239609075661375131e-07, +-1.241680949598245434e-07, +-1.243750352758332567e-07, +-1.245817282269164633e-07, +-1.247881735262550166e-07, +-1.249943708874976497e-07, +-1.252003200247998596e-07, +-1.254060206527284575e-07, +-1.256114724863467213e-07, +-1.258166752412075672e-07, +-1.260216286333039185e-07, +-1.262263323791083839e-07, +-1.264307861955644693e-07, +-1.266349898000756196e-07, +-1.268389429105464851e-07, +-1.270426452453243170e-07, +-1.272460965232265229e-07, +-1.274492964635830448e-07, +-1.276522447861374678e-07, +-1.278549412111354559e-07, +-1.280573854593155669e-07, +-1.282595772518599654e-07, +-1.284615163104361395e-07, +-1.286632023571849632e-07, +-1.288646351147211454e-07, +-1.290658143061266401e-07, +-1.292667396549861415e-07, +-1.294674108853320802e-07, +-1.296678277216819720e-07, +-1.298679898890308741e-07, +-1.300678971128403733e-07, +-1.302675491190776560e-07, +-1.304669456341592063e-07, +-1.306660863849887907e-07, +-1.308649710989484846e-07, +-1.310635995038983281e-07, +-1.312619713281695234e-07, +-1.314600863005990309e-07, +-1.316579441504761265e-07, +-1.318555446075789828e-07, +-1.320528874021663051e-07, +-1.322499722649680664e-07, +-1.324467989272235183e-07, +-1.326433671206240693e-07, +-1.328396765773543655e-07, +-1.330357270300792152e-07, +-1.332315182119463410e-07, +-1.334270498565765072e-07, +-1.336223216981024298e-07, +-1.338173334711201786e-07, +-1.340120849106823740e-07, +-1.342065757523820964e-07, +-1.344008057322587596e-07, +-1.345947745868363862e-07, +-1.347884820531524594e-07, +-1.349819278687014369e-07, +-1.351751117714731317e-07, +-1.353680334999437391e-07, +-1.355606927930646134e-07, +-1.357530893903053076e-07, +-1.359452230315998667e-07, +-1.361370934573444714e-07, +-1.363287004084775092e-07, +-1.365200436263883336e-07, +-1.367111228529550889e-07, +-1.369019378305711005e-07, +-1.370924883020930741e-07, +-1.372827740108741295e-07, +-1.374727947007584273e-07, +-1.376625501160787339e-07, +-1.378520400016503861e-07, +-1.380412641028140932e-07, +-1.382302221653387127e-07, +-1.384189139355485973e-07, +-1.386073391602220033e-07, +-1.387954975866295249e-07, +-1.389833889625605112e-07, +-1.391710130362800260e-07, +-1.393583695565169366e-07, +-1.395454582725488289e-07, +-1.397322789341094689e-07, +-1.399188312914279252e-07, +-1.401051150952615238e-07, +-1.402911300967995510e-07, +-1.404768760477889848e-07, +-1.406623527004354981e-07, +-1.408475598074403311e-07, +-1.410324971220259402e-07, +-1.412171643978950232e-07, +-1.414015613892174694e-07, +-1.415856878507137927e-07, +-1.417695435375660601e-07, +-1.419531282054528062e-07, +-1.421364416105851373e-07, +-1.423194835096194081e-07, +-1.425022536597348836e-07, +-1.426847518186296365e-07, +-1.428669777444705194e-07, +-1.430489311959342192e-07, +-1.432306119321948696e-07, +-1.434120197129184654e-07, +-1.435931542982966121e-07, +-1.437740154489931094e-07, +-1.439546029261754506e-07, +-1.441349164915436215e-07, +-1.443149559072466941e-07, +-1.444947209359615480e-07, +-1.446742113408833672e-07, +-1.448534268856832892e-07, +-1.450323673345421004e-07, +-1.452110324521448631e-07, +-1.453894220036691892e-07, +-1.455675357548206303e-07, +-1.457453734717835498e-07, +-1.459229349212535223e-07, +-1.461002198704295507e-07, +-1.462772280870148874e-07, +-1.464539593392075580e-07, +-1.466304133957381069e-07, +-1.468065900258137201e-07, +-1.469824889991557059e-07, +-1.471581100859916337e-07, +-1.473334530570537193e-07, +-1.475085176835714132e-07, +-1.476833037373061026e-07, +-1.478578109905005806e-07, +-1.480320392159121600e-07, +-1.482059881868049968e-07, +-1.483796576769421230e-07, +-1.485530474606194072e-07, +-1.487261573126155003e-07, +-1.488989870082244993e-07, +-1.490715363232489591e-07, +-1.492438050340011898e-07, +-1.494157929172928802e-07, +-1.495874997504693234e-07, +-1.497589253113606331e-07, +-1.499300693783154657e-07, +-1.501009317301912271e-07, +-1.502715121463547868e-07, +-1.504418104066778991e-07, +-1.506118262915647312e-07, +-1.507815595819064945e-07, +-1.509510100591143990e-07, +-1.511201775051098599e-07, +-1.512890617023182767e-07, +-1.514576624337010623e-07, +-1.516259794827165201e-07, +-1.517940126333095209e-07, +-1.519617616699867040e-07, +-1.521292263777349230e-07, +-1.522964065420546514e-07, +-1.524633019489837520e-07, +-1.526299123850488257e-07, +-1.527962376372984574e-07, +-1.529622774932967046e-07, +-1.531280317411198149e-07, +-1.532935001693519117e-07, +-1.534586825671239573e-07, +-1.536235787240250533e-07, +-1.537881884302157043e-07, +-1.539525114763399912e-07, +-1.541165476535587909e-07, +-1.542802967535717727e-07, +-1.544437585685790438e-07, +-1.546069328912730223e-07, +-1.547698195149110183e-07, +-1.549324182332348712e-07, +-1.550947288405039042e-07, +-1.552567511315260272e-07, +-1.554184849015729532e-07, +-1.555799299464875339e-07, +-1.557410860626000881e-07, +-1.559019530467586575e-07, +-1.560625306963616694e-07, +-1.562228188092791637e-07, +-1.563828171839228575e-07, +-1.565425256192409045e-07, +-1.567019439146760729e-07, +-1.568610718701906795e-07, +-1.570199092862984067e-07, +-1.571784559639866401e-07, +-1.573367117047861369e-07, +-1.574946763107618674e-07, +-1.576523495844799014e-07, +-1.578097313290321836e-07, +-1.579668213480325371e-07, +-1.581236194456081397e-07, +-1.582801254264313939e-07, +-1.584363390956723075e-07, +-1.585922602590240898e-07, +-1.587478887227319249e-07, +-1.589032242935188552e-07, +-1.590582667786514805e-07, +-1.592130159859355369e-07, +-1.593674717236772245e-07, +-1.595216338007128541e-07, +-1.596755020264022287e-07, +-1.598290762106210479e-07, +-1.599823561637929618e-07, +-1.601353416968411054e-07, +-1.602880326212216093e-07, +-1.604404287489144408e-07, +-1.605925298924244895e-07, +-1.607443358647731234e-07, +-1.608958464795311173e-07, +-1.610470615507697098e-07, +-1.611979808930949882e-07, +-1.613486043216376178e-07, +-1.614989316520541654e-07, +-1.616489627005201909e-07, +-1.617986972837590196e-07, +-1.619481352189984382e-07, +-1.620972763240002610e-07, +-1.622461204170533684e-07, +-1.623946673169661104e-07, +-1.625429168430954763e-07, +-1.626908688153041866e-07, +-1.628385230539897841e-07, +-1.629858793800771158e-07, +-1.631329376150194185e-07, +-1.632796975807908543e-07, +-1.634261590999154421e-07, +-1.635723219954232500e-07, +-1.637181860908810737e-07, +-1.638637512103836222e-07, +-1.640090171785551592e-07, +-1.641539838205420116e-07, +-1.642986509620406277e-07, +-1.644430184292566286e-07, +-1.645870860489310396e-07, +-1.647308536483363462e-07, +-1.648743210552663034e-07, +-1.650174880980670638e-07, +-1.651603546056004380e-07, +-1.653029204072377004e-07, +-1.654451853329246517e-07, +-1.655871492131075307e-07, +-1.657288118787642744e-07, +-1.658701731614257470e-07, +-1.660112328931329913e-07, +-1.661519909064648101e-07, +-1.662924470345322077e-07, +-1.664326011109706341e-07, +-1.665724529699702135e-07, +-1.667120024462370189e-07, +-1.668512493749896844e-07, +-1.669901935920210793e-07, +-1.671288349336290634e-07, +-1.672671732366433009e-07, +-1.674052083384473096e-07, +-1.675429400769462738e-07, +-1.676803682905556090e-07, +-1.678174928182650725e-07, +-1.679543134995728525e-07, +-1.680908301745088362e-07, +-1.682270426836644934e-07, +-1.683629508681178613e-07, +-1.684985545695300006e-07, +-1.686338536300671478e-07, +-1.687688478924307582e-07, +-1.689035371998845583e-07, +-1.690379213961857240e-07, +-1.691720003256467675e-07, +-1.693057738331289721e-07, +-1.694392417640078764e-07, +-1.695724039641963551e-07, +-1.697052602801675691e-07, +-1.698378105588837347e-07, +-1.699700546478906474e-07, +-1.701019923952420316e-07, +-1.702336236495353801e-07, +-1.703649482599031930e-07, +-1.704959660760162333e-07, +-1.706266769480728067e-07, +-1.707570807268294403e-07, +-1.708871772635584246e-07, +-1.710169664100691749e-07, +-1.711464480187344364e-07, +-1.712756219424247981e-07, +-1.714044880345669787e-07, +-1.715330461491404126e-07, +-1.716612961406399802e-07, +-1.717892378641054423e-07, +-1.719168711751140815e-07, +-1.720441959297757788e-07, +-1.721712119847559630e-07, +-1.722979191972398764e-07, +-1.724243174249516596e-07, +-1.725504065261780417e-07, +-1.726761863597064810e-07, +-1.728016567848824447e-07, +-1.729268176616026072e-07, +-1.730516688502830062e-07, +-1.731762102118843479e-07, +-1.733004416079092017e-07, +-1.734243629003966528e-07, +-1.735479739519196289e-07, +-1.736712746256095700e-07, +-1.737942647851174121e-07, +-1.739169442946413804e-07, +-1.740393130189189687e-07, +-1.741613708232202164e-07, +-1.742831175733765607e-07, +-1.744045531357380344e-07, +-1.745256773772023567e-07, +-1.746464901652064624e-07, +-1.747669913677290702e-07, +-1.748871808532821850e-07, +-1.750070584909366685e-07, +-1.751266241502876427e-07, +-1.752458777014748717e-07, +-1.753648190151790298e-07, +-1.754834479626174923e-07, +-1.756017644155649557e-07, +-1.757197682463207479e-07, +-1.758374593277303208e-07, +-1.759548375331801954e-07, +-1.760719027366001319e-07, +-1.761886548124544476e-07, +-1.763050936357661576e-07, +-1.764212190820895254e-07, +-1.765370310275013808e-07, +-1.766525293486576331e-07, +-1.767677139227307494e-07, +-1.768825846274374946e-07, +-1.769971413410523256e-07, +-1.771113839423755216e-07, +-1.772253123107550742e-07, +-1.773389263260818173e-07, +-1.774522258687830480e-07, +-1.775652108198451579e-07, +-1.776778810607880107e-07, +-1.777902364736546715e-07, +-1.779022769410664645e-07, +-1.780140023461647390e-07, +-1.781254125726334485e-07, +-1.782365075047227612e-07, +-1.783472870271860892e-07, +-1.784577510253588353e-07, +-1.785678993850993130e-07, +-1.786777319928133895e-07, +-1.787872487354439246e-07, +-1.788964495005014223e-07, +-1.790053341759995244e-07, +-1.791139026505356635e-07, +-1.792221548132271653e-07, +-1.793300905537373741e-07, +-1.794377097622938637e-07, +-1.795450123296354987e-07, +-1.796519981470616673e-07, +-1.797586671064268028e-07, +-1.798650191001130664e-07, +-1.799710540210466525e-07, +-1.800767717627197061e-07, +-1.801821722191308449e-07, +-1.802872552848620276e-07, +-1.803920208550155294e-07, +-1.804964688252453084e-07, +-1.806005990917493564e-07, +-1.807044115512703072e-07, +-1.808079061010895606e-07, +-1.809110826390507080e-07, +-1.810139410635249894e-07, +-1.811164812734283398e-07, +-1.812187031682426976e-07, +-1.813206066479641239e-07, +-1.814221916131480389e-07, +-1.815234579649057548e-07, +-1.816244056048799645e-07, +-1.817250344352605708e-07, +-1.818253443587847656e-07, +-1.819253352787283479e-07, +-1.820250070989291760e-07, +-1.821243597237538154e-07, +-1.822233930581146653e-07, +-1.823221070074897307e-07, +-1.824205014778717483e-07, +-1.825185763758152493e-07, +-1.826163316084287508e-07, +-1.827137670833517802e-07, +-1.828108827087745423e-07, +-1.829076783934327046e-07, +-1.830041540466072649e-07, +-1.831003095781208986e-07, +-1.831961448983561701e-07, +-1.832916599182261508e-07, +-1.833868545491954630e-07, +-1.834817287032732920e-07, +-1.835762822930107915e-07, +-1.836705152315196130e-07, +-1.837644274324409624e-07, +-1.838580188099698197e-07, +-1.839512892788449073e-07, +-1.840442387543506484e-07, +-1.841368671523138851e-07, +-1.842291743891214541e-07, +-1.843211603816914140e-07, +-1.844128250474921833e-07, +-1.845041683045403692e-07, +-1.845951900713914512e-07, +-1.846858902671630737e-07, +-1.847762688115030972e-07, +-1.848663256246115419e-07, +-1.849560606272339966e-07, +-1.850454737406615924e-07, +-1.851345648867291759e-07, +-1.852233339878289944e-07, +-1.853117809668926700e-07, +-1.853999057473814057e-07, +-1.854877082533331278e-07, +-1.855751884093111879e-07, +-1.856623461404269152e-07, +-1.857491813723503890e-07, +-1.858356940312857432e-07, +-1.859218840439866773e-07, +-1.860077513377527503e-07, +-1.860932958404267079e-07, +-1.861785174804100726e-07, +-1.862634161866421535e-07, +-1.863479918885930846e-07, +-1.864322445163106235e-07, +-1.865161740003667089e-07, +-1.865997802718811245e-07, +-1.866830632625377512e-07, +-1.867660229045348576e-07, +-1.868486591306493942e-07, +-1.869309718741859868e-07, +-1.870129610689986414e-07, +-1.870946266494867739e-07, +-1.871759685506105358e-07, +-1.872569867078462660e-07, +-1.873376810572472385e-07, +-1.874180515353964672e-07, +-1.874980980794210523e-07, +-1.875778206270130913e-07, +-1.876572191163854747e-07, +-1.877362934863090759e-07, +-1.878150436761099456e-07, +-1.878934696256472357e-07, +-1.879715712753255610e-07, +-1.880493485661140571e-07, +-1.881268014394966705e-07, +-1.882039298375345212e-07, +-1.882807337028174365e-07, +-1.883572129784806537e-07, +-1.884333676082225280e-07, +-1.885091975362622340e-07, +-1.885847027073774324e-07, +-1.886598830669003255e-07, +-1.887347385606948406e-07, +-1.888092691351747884e-07, +-1.888834747373119093e-07, +-1.889573553146015427e-07, +-1.890309108150959784e-07, +-1.891041411874024189e-07, +-1.891770463806605326e-07, +-1.892496263445597917e-07, +-1.893218810293374076e-07, +-1.893938103857693841e-07, +-1.894654143651906344e-07, +-1.895366929194701258e-07, +-1.896076460010244855e-07, +-1.896782735628181329e-07, +-1.897485755583591234e-07, +-1.898185519416971109e-07, +-1.898882026674413202e-07, +-1.899575276907313248e-07, +-1.900265269672573752e-07, +-1.900952004532550792e-07, +-1.901635481055008218e-07, +-1.902315698813280976e-07, +-1.902992657386027880e-07, +-1.903666356357424043e-07, +-1.904336795317070623e-07, +-1.905003973860023400e-07, +-1.905667891586752021e-07, +-1.906328548103290610e-07, +-1.906985943020997952e-07, +-1.907640075956723987e-07, +-1.908290946532775664e-07, +-1.908938554376891269e-07, +-1.909582899122233271e-07, +-1.910223980407496857e-07, +-1.910861797876741046e-07, +-1.911496351179474723e-07, +-1.912127639970677545e-07, +-1.912755663910713917e-07, +-1.913380422665527015e-07, +-1.914001915906371706e-07, +-1.914620143309976542e-07, +-1.915235104558529466e-07, +-1.915846799339644464e-07, +-1.916455227346342766e-07, +-1.917060388277183875e-07, +-1.917662281836083984e-07, +-1.918260907732407030e-07, +-1.918856265680962313e-07, +-1.919448355401990998e-07, +-1.920037176621139642e-07, +-1.920622729069601281e-07, +-1.921205012483865818e-07, +-1.921784026605947399e-07, +-1.922359771183239094e-07, +-1.922932245968560541e-07, +-1.923501450720258801e-07, +-1.924067385202037621e-07, +-1.924630049182932821e-07, +-1.925189442437612991e-07, +-1.925745564746031148e-07, +-1.926298415893585671e-07, +-1.926847995671223535e-07, +-1.927394303875078467e-07, +-1.927937340306947141e-07, +-1.928477104773929978e-07, +-1.929013597088557677e-07, +-1.929546817068764475e-07, +-1.930076764538049883e-07, +-1.930603439325082163e-07, +-1.931126841264194378e-07, +-1.931646970194994749e-07, +-1.932163825962522041e-07, +-1.932677408417349319e-07, +-1.933187717415286164e-07, +-1.933694752817628283e-07, +-1.934198514491190070e-07, +-1.934699002308076695e-07, +-1.935196216145801901e-07, +-1.935690155887428554e-07, +-1.936180821421210245e-07, +-1.936668212641020363e-07, +-1.937152329446018311e-07, +-1.937633171740787946e-07, +-1.938110739435422808e-07, +-1.938585032445240514e-07, +-1.939056050691060689e-07, +-1.939523794099174526e-07, +-1.939988262601162938e-07, +-1.940449456134022556e-07, +-1.940907374640279547e-07, +-1.941362018067635186e-07, +-1.941813386369405517e-07, +-1.942261479504174069e-07, +-1.942706297435964970e-07, +-1.943147840134187097e-07, +-1.943586107573644926e-07, +-1.944021099734510208e-07, +-1.944452816602434471e-07, +-1.944881258168376167e-07, +-1.945306424428697554e-07, +-1.945728315385161256e-07, +-1.946146931044912788e-07, +-1.946562271420460446e-07, +-1.946974336529765033e-07, +-1.947383126396124721e-07, +-1.947788641048206015e-07, +-1.948190880520078434e-07, +-1.948589844851166068e-07, +-1.948985534086340487e-07, +-1.949377948275780187e-07, +-1.949767087475065618e-07, +-1.950152951745136300e-07, +-1.950535541152345089e-07, +-1.950914855768358383e-07, +-1.951290895670296679e-07, +-1.951663660940581049e-07, +-1.952033151667021808e-07, +-1.952399367942793906e-07, +-1.952762309866448036e-07, +-1.953121977541871468e-07, +-1.953478371078391007e-07, +-1.953831490590617623e-07, +-1.954181336198547033e-07, +-1.954527908027543024e-07, +-1.954871206208292722e-07, +-1.955211230876909028e-07, +-1.955547982174820768e-07, +-1.955881460248803928e-07, +-1.956211665250986950e-07, +-1.956538597338869257e-07, +-1.956862256675258522e-07, +-1.957182643428389254e-07, +-1.957499757771776416e-07, +-1.957813599884297485e-07, +-1.958124169950185039e-07, +-1.958431468159006374e-07, +-1.958735494705646037e-07, +-1.959036249790420968e-07, +-1.959333733618830887e-07, +-1.959627946401878321e-07, +-1.959918888355782987e-07, +-1.960206559702142204e-07, +-1.960490960667918979e-07, +-1.960772091485370276e-07, +-1.961049952392027692e-07, +-1.961324543630874538e-07, +-1.961595865450131438e-07, +-1.961863918103347116e-07, +-1.962128701849468810e-07, +-1.962390216952645860e-07, +-1.962648463682474826e-07, +-1.962903442313785605e-07, +-1.963155153126729580e-07, +-1.963403596406839705e-07, +-1.963648772444910332e-07, +-1.963890681536992446e-07, +-1.964129323984589806e-07, +-1.964364700094411190e-07, +-1.964596810178475214e-07, +-1.964825654554187621e-07, +-1.965051233544146468e-07, +-1.965273547476311002e-07, +-1.965492596683959570e-07, +-1.965708381505649653e-07, +-1.965920902285209394e-07, +-1.966130159371837390e-07, +-1.966336153119911316e-07, +-1.966538883889220062e-07, +-1.966738352044771301e-07, +-1.966934557956858721e-07, +-1.967127502001141169e-07, +-1.967317184558461335e-07, +-1.967503606014989214e-07, +-1.967686766762214437e-07, +-1.967866667196850442e-07, +-1.968043307720893771e-07, +-1.968216688741692629e-07, +-1.968386810671735649e-07, +-1.968553673928922152e-07, +-1.968717278936337419e-07, +-1.968877626122367306e-07, +-1.969034715920655623e-07, +-1.969188548770112608e-07, +-1.969339125114899841e-07, +-1.969486445404492706e-07, +-1.969630510093564728e-07, +-1.969771319642087088e-07, +-1.969908874515269604e-07, +-1.970043175183576610e-07, +-1.970174222122716633e-07, +-1.970302015813694536e-07, +-1.970426556742717819e-07, +-1.970547845401241351e-07, +-1.970665882285997810e-07, +-1.970780667898924363e-07, +-1.970892202747246572e-07, +-1.971000487343382578e-07, +-1.971105522205012183e-07, +-1.971207307855044561e-07, +-1.971305844821614547e-07, +-1.971401133638099054e-07, +-1.971493174843119185e-07, +-1.971581968980496827e-07, +-1.971667516599290913e-07, +-1.971749818253773598e-07, +-1.971828874503449584e-07, +-1.971904685913031501e-07, +-1.971977253052471145e-07, +-1.972046576496924531e-07, +-1.972112656826750579e-07, +-1.972175494627527517e-07, +-1.972235090490031708e-07, +-1.972291445010278415e-07, +-1.972344558789449274e-07, +-1.972394432433944698e-07, +-1.972441066555383093e-07, +-1.972484461770550293e-07, +-1.972524618701432649e-07, +-1.972561537975247470e-07, +-1.972595220224366527e-07, +-1.972625666086356548e-07, +-1.972652876203979750e-07, +-1.972676851225168692e-07, +-1.972697591803088215e-07, +-1.972715098596036443e-07, +-1.972729372267479725e-07, +-1.972740413486108222e-07, +-1.972748222925762319e-07, +-1.972752801265440832e-07, +-1.972754149189332241e-07, +-1.972752267386819457e-07, +-1.972747156552377647e-07, +-1.972738817385715847e-07, +-1.972727250591664730e-07, +-1.972712456880224518e-07, +-1.972694436966573717e-07, +-1.972673191570987586e-07, +-1.972648721418974198e-07, +-1.972621027241126468e-07, +-1.972590109773204744e-07, +-1.972555969756129919e-07, +-1.972518607935957496e-07, +-1.972478025063850059e-07, +-1.972434221896162499e-07, +-1.972387199194345674e-07, +-1.972336957725010722e-07, +-1.972283498259900479e-07, +-1.972226821575843684e-07, +-1.972166928454848418e-07, +-1.972103819684021900e-07, +-1.972037496055593516e-07, +-1.971967958366903173e-07, +-1.971895207420449737e-07, +-1.971819244023784891e-07, +-1.971740068989625366e-07, +-1.971657683135766385e-07, +-1.971572087285111308e-07, +-1.971483282265704193e-07, +-1.971391268910639794e-07, +-1.971296048058126300e-07, +-1.971197620551514711e-07, +-1.971095987239199844e-07, +-1.970991148974686243e-07, +-1.970883106616560915e-07, +-1.970771861028511326e-07, +-1.970657413079303967e-07, +-1.970539763642779583e-07, +-1.970418913597884147e-07, +-1.970294863828609830e-07, +-1.970167615224039999e-07, +-1.970037168678325135e-07, +-1.969903525090696059e-07, +-1.969766685365431647e-07, +-1.969626650411888206e-07, +-1.969483421144490215e-07, +-1.969336998482708612e-07, +-1.969187383351076948e-07, +-1.969034576679183442e-07, +-1.968878579401659866e-07, +-1.968719392458204307e-07, +-1.968557016793540403e-07, +-1.968391453357443287e-07, +-1.968222703104743819e-07, +-1.968050766995300264e-07, +-1.967875645993991146e-07, +-1.967697341070755217e-07, +-1.967515853200541956e-07, +-1.967331183363336190e-07, +-1.967143332544141418e-07, +-1.966952301733006010e-07, +-1.966758091924967099e-07, +-1.966560704120103516e-07, +-1.966360139323488144e-07, +-1.966156398545215979e-07, +-1.965949482800397244e-07, +-1.965739393109133307e-07, +-1.965526130496532026e-07, +-1.965309695992724698e-07, +-1.965090090632809141e-07, +-1.964867315456888876e-07, +-1.964641371510065975e-07, +-1.964412259842426505e-07, +-1.964179981509046089e-07, +-1.963944537569973224e-07, +-1.963705929090262109e-07, +-1.963464157139918645e-07, +-1.963219222793937226e-07, +-1.962971127132283802e-07, +-1.962719871239891374e-07, +-1.962465456206664767e-07, +-1.962207883127456531e-07, +-1.961947153102110627e-07, +-1.961683267235407628e-07, +-1.961416226637077956e-07, +-1.961146032421822528e-07, +-1.960872685709281257e-07, +-1.960596187624040994e-07, +-1.960316539295630763e-07, +-1.960033741858529435e-07, +-1.959747796452154877e-07, +-1.959458704220843309e-07, +-1.959166466313879472e-07, +-1.958871083885462490e-07, +-1.958572558094733656e-07, +-1.958270890105747323e-07, +-1.957966081087469043e-07, +-1.957658132213820042e-07, +-1.957347044663591986e-07, +-1.957032819620493301e-07, +-1.956715458273180145e-07, +-1.956394961815165881e-07, +-1.956071331444889367e-07, +-1.955744568365692196e-07, +-1.955414673785781370e-07, +-1.955081648918318767e-07, +-1.954745494981294357e-07, +-1.954406213197615926e-07, +-1.954063804795070173e-07, +-1.953718271006319794e-07, +-1.953369613068906924e-07, +-1.953017832225253667e-07, +-1.952662929722650447e-07, +-1.952304906813259190e-07, +-1.951943764754109081e-07, +-1.951579504807063484e-07, +-1.951212128238894846e-07, +-1.950841636321203439e-07, +-1.950468030330424769e-07, +-1.950091311547876956e-07, +-1.949711481259718651e-07, +-1.949328540756937120e-07, +-1.948942491335374454e-07, +-1.948553334295693946e-07, +-1.948161070943402598e-07, +-1.947765702588855350e-07, +-1.947367230547176995e-07, +-1.946965656138408030e-07, +-1.946560980687343456e-07, +-1.946153205523601065e-07, +-1.945742331981629120e-07, +-1.945328361400685442e-07, +-1.944911295124837942e-07, +-1.944491134502941325e-07, +-1.944067880888691089e-07, +-1.943641535640537765e-07, +-1.943212100121751499e-07, +-1.942779575700389234e-07, +-1.942343963749294176e-07, +-1.941905265646116182e-07, +-1.941463482773237902e-07, +-1.941018616517860017e-07, +-1.940570668271963651e-07, +-1.940119639432287604e-07, +-1.939665531400332856e-07, +-1.939208345582390358e-07, +-1.938748083389472208e-07, +-1.938284746237389745e-07, +-1.937818335546685512e-07, +-1.937348852742669526e-07, +-1.936876299255413718e-07, +-1.936400676519683637e-07, +-1.935921985975030042e-07, +-1.935440229065738077e-07, +-1.934955407240816680e-07, +-1.934467521954010235e-07, +-1.933976574663813127e-07, +-1.933482566833401716e-07, +-1.932985499930688069e-07, +-1.932485375428361522e-07, +-1.931982194803728531e-07, +-1.931475959538873348e-07, +-1.930966671120578084e-07, +-1.930454331040291735e-07, +-1.929938940794220974e-07, +-1.929420501883237775e-07, +-1.928899015812905614e-07, +-1.928374484093509117e-07, +-1.927846908239962742e-07, +-1.927316289771899180e-07, +-1.926782630213668836e-07, +-1.926245931094227059e-07, +-1.925706193947249290e-07, +-1.925163420311072830e-07, +-1.924617611728679099e-07, +-1.924068769747724347e-07, +-1.923516895920545740e-07, +-1.922961991804098096e-07, +-1.922404058960018472e-07, +-1.921843098954596256e-07, +-1.921279113358707251e-07, +-1.920712103747961119e-07, +-1.920142071702518733e-07, +-1.919569018807219236e-07, +-1.918992946651546954e-07, +-1.918413856829539807e-07, +-1.917831750939927220e-07, +-1.917246630586085916e-07, +-1.916658497375904658e-07, +-1.916067352921956301e-07, +-1.915473198841436381e-07, +-1.914876036756050093e-07, +-1.914275868292242837e-07, +-1.913672695080940289e-07, +-1.913066518757715426e-07, +-1.912457340962741406e-07, +-1.911845163340723013e-07, +-1.911229987540977128e-07, +-1.910611815217471368e-07, +-1.909990648028617895e-07, +-1.909366487637483050e-07, +-1.908739335711713770e-07, +-1.908109193923423238e-07, +-1.907476063949413493e-07, +-1.906839947470985907e-07, +-1.906200846173944894e-07, +-1.905558761748721516e-07, +-1.904913695890238231e-07, +-1.904265650298012913e-07, +-1.903614626676070447e-07, +-1.902960626732939815e-07, +-1.902303652181722389e-07, +-1.901643704740064402e-07, +-1.900980786130030951e-07, +-1.900314898078350052e-07, +-1.899646042316184994e-07, +-1.898974220579195490e-07, +-1.898299434607584260e-07, +-1.897621686146045152e-07, +-1.896940976943777171e-07, +-1.896257308754489770e-07, +-1.895570683336323976e-07, +-1.894881102451964881e-07, +-1.894188567868581558e-07, +-1.893493081357806943e-07, +-1.892794644695753454e-07, +-1.892093259663021459e-07, +-1.891388928044632045e-07, +-1.890681651630117544e-07, +-1.889971432213455620e-07, +-1.889258271593095480e-07, +-1.888542171571923723e-07, +-1.887823133957300870e-07, +-1.887101160560967398e-07, +-1.886376253199171586e-07, +-1.885648413692575286e-07, +-1.884917643866285946e-07, +-1.884183945549831736e-07, +-1.883447320577148305e-07, +-1.882707770786611347e-07, +-1.881965298021022299e-07, +-1.881219904127587172e-07, +-1.880471590957915225e-07, +-1.879720360368056815e-07, +-1.878966214218374491e-07, +-1.878209154373732519e-07, +-1.877449182703329325e-07, +-1.876686301080776378e-07, +-1.875920511384054777e-07, +-1.875151815495565015e-07, +-1.874380215302004428e-07, +-1.873605712694515152e-07, +-1.872828309568588047e-07, +-1.872048007824084662e-07, +-1.871264809365249941e-07, +-1.870478716100599726e-07, +-1.869689729943060786e-07, +-1.868897852809994105e-07, +-1.868103086622937599e-07, +-1.867305433307876372e-07, +-1.866504894795146101e-07, +-1.865701473019321861e-07, +-1.864895169919386212e-07, +-1.864085987438626231e-07, +-1.863273927524645417e-07, +-1.862458992129361319e-07, +-1.861641183209035439e-07, +-1.860820502724130562e-07, +-1.859996952639600601e-07, +-1.859170534924503609e-07, +-1.858341251552305121e-07, +-1.857509104500768307e-07, +-1.856674095751846237e-07, +-1.855836227291842024e-07, +-1.854995501111410415e-07, +-1.854151919205337028e-07, +-1.853305483572760704e-07, +-1.852456196217101504e-07, +-1.851604059145922803e-07, +-1.850749074371253960e-07, +-1.849891243909159121e-07, +-1.849030569780078150e-07, +-1.848167054008707518e-07, +-1.847300698623846511e-07, +-1.846431505658714604e-07, +-1.845559477150679881e-07, +-1.844684615141275180e-07, +-1.843806921676336531e-07, +-1.842926398805939629e-07, +-1.842043048584230958e-07, +-1.841156873069776393e-07, +-1.840267874325234835e-07, +-1.839376054417415643e-07, +-1.838481415417413105e-07, +-1.837583959400489707e-07, +-1.836683688446088304e-07, +-1.835780604637874478e-07, +-1.834874710063612655e-07, +-1.833966006815310102e-07, +-1.833054496989171663e-07, +-1.832140182685419767e-07, +-1.831223066008652561e-07, +-1.830303149067511185e-07, +-1.829380433974733510e-07, +-1.828454922847322744e-07, +-1.827526617806376706e-07, +-1.826595520977129385e-07, +-1.825661634488999111e-07, +-1.824724960475428148e-07, +-1.823785501074082547e-07, +-1.822843258426738583e-07, +-1.821898234679257083e-07, +-1.820950431981660191e-07, +-1.819999852488076833e-07, +-1.819046498356651668e-07, +-1.818090371749734344e-07, +-1.817131474833731532e-07, +-1.816169809779152718e-07, +-1.815205378760581352e-07, +-1.814238183956740494e-07, +-1.813268227550306199e-07, +-1.812295511728149455e-07, +-1.811320038681161743e-07, +-1.810341810604312213e-07, +-1.809360829696661716e-07, +-1.808377098161227804e-07, +-1.807390618205164461e-07, +-1.806401392039677402e-07, +-1.805409421879980923e-07, +-1.804414709945343963e-07, +-1.803417258459095131e-07, +-1.802417069648494590e-07, +-1.801414145744934173e-07, +-1.800408488983778562e-07, +-1.799400101604432787e-07, +-1.798388985850294841e-07, +-1.797375143968804126e-07, +-1.796358578211297983e-07, +-1.795339290833228216e-07, +-1.794317284093993007e-07, +-1.793292560256972652e-07, +-1.792265121589598648e-07, +-1.791234970363139021e-07, +-1.790202108852918291e-07, +-1.789166539338356381e-07, +-1.788128264102602809e-07, +-1.787087285432915199e-07, +-1.786043605620515557e-07, +-1.784997226960459770e-07, +-1.783948151751869219e-07, +-1.782896382297767195e-07, +-1.781841920905114370e-07, +-1.780784769884841087e-07, +-1.779724931551687750e-07, +-1.778662408224410494e-07, +-1.777597202225776947e-07, +-1.776529315882263685e-07, +-1.775458751524396629e-07, +-1.774385511486604934e-07, +-1.773309598107106641e-07, +-1.772231013728091843e-07, +-1.771149760695766366e-07, +-1.770065841359972189e-07, +-1.768979258074591638e-07, +-1.767890013197412918e-07, +-1.766798109089900094e-07, +-1.765703548117685958e-07, +-1.764606332649979102e-07, +-1.763506465059997496e-07, +-1.762403947724831639e-07, +-1.761298783025238890e-07, +-1.760190973346087892e-07, +-1.759080521075942205e-07, +-1.757967428607126746e-07, +-1.756851698335919162e-07, +-1.755733332662423045e-07, +-1.754612333990387403e-07, +-1.753488704727673853e-07, +-1.752362447285671111e-07, +-1.751233564079723274e-07, +-1.750102057528950878e-07, +-1.748967930056257790e-07, +-1.747831184088340198e-07, +-1.746691822055726586e-07, +-1.745549846392601711e-07, +-1.744405259537043236e-07, +-1.743258063930921948e-07, +-1.742108262019681256e-07, +-1.740955856252801214e-07, +-1.739800849083382940e-07, +-1.738643242968188587e-07, +-1.737483040367866866e-07, +-1.736320243746754524e-07, +-1.735154855572953102e-07, +-1.733986878318305117e-07, +-1.732816314458270445e-07, +-1.731643166472163227e-07, +-1.730467436843009991e-07, +-1.729289128057377068e-07, +-1.728108242605793050e-07, +-1.726924782982389332e-07, +-1.725738751684878405e-07, +-1.724550151214802936e-07, +-1.723358984077358952e-07, +-1.722165252781423632e-07, +-1.720968959839552131e-07, +-1.719770107768016491e-07, +-1.718568699086616909e-07, +-1.717364736318980321e-07, +-1.716158221992318991e-07, +-1.714949158637509663e-07, +-1.713737548789122672e-07, +-1.712523394985238510e-07, +-1.711306699767714114e-07, +-1.710087465681980105e-07, +-1.708865695277128934e-07, +-1.707641391105851087e-07, +-1.706414555724515558e-07, +-1.705185191692954911e-07, +-1.703953301574755919e-07, +-1.702718887937067920e-07, +-1.701481953350641204e-07, +-1.700242500389849772e-07, +-1.699000531632541521e-07, +-1.697756049660276732e-07, +-1.696509057058149404e-07, +-1.695259556414822453e-07, +-1.694007550322534602e-07, +-1.692753041377135577e-07, +-1.691496032177887591e-07, +-1.690236525327713627e-07, +-1.688974523433214906e-07, +-1.687710029104263260e-07, +-1.686443044954445814e-07, +-1.685173573600898764e-07, +-1.683901617664135055e-07, +-1.682627179768324962e-07, +-1.681350262541137535e-07, +-1.680070868613735041e-07, +-1.678789000620841519e-07, +-1.677504661200533938e-07, +-1.676217852994486773e-07, +-1.674928578648026269e-07, +-1.673636840809652929e-07, +-1.672342642131563229e-07, +-1.671045985269425423e-07, +-1.669746872882181018e-07, +-1.668445307632590050e-07, +-1.667141292186523815e-07, +-1.665834829213511994e-07, +-1.664525921386484316e-07, +-1.663214571381860545e-07, +-1.661900781879328407e-07, +-1.660584555562340426e-07, +-1.659265895117424647e-07, +-1.657944803234756651e-07, +-1.656621282607918152e-07, +-1.655295335933706677e-07, +-1.653966965912642460e-07, +-1.652636175248490670e-07, +-1.651302966648322283e-07, +-1.649967342822749403e-07, +-1.648629306485782326e-07, +-1.647288860354600043e-07, +-1.645946007150132314e-07, +-1.644600749596317720e-07, +-1.643253090420660582e-07, +-1.641903032354001478e-07, +-1.640550578130519613e-07, +-1.639195730487754006e-07, +-1.637838492166647952e-07, +-1.636478865911323766e-07, +-1.635116854469400159e-07, +-1.633752460591824943e-07, +-1.632385687032683659e-07, +-1.631016536549677356e-07, +-1.629645011903667310e-07, +-1.628271115858736166e-07, +-1.626894851182416644e-07, +-1.625516220645490364e-07, +-1.624135227022045019e-07, +-1.622751873089497674e-07, +-1.621366161628407089e-07, +-1.619978095422763835e-07, +-1.618587677259829614e-07, +-1.617194909929920479e-07, +-1.615799796226947871e-07, +-1.614402338947910668e-07, +-1.613002540892954739e-07, +-1.611600404865650878e-07, +-1.610195933672736989e-07, +-1.608789130124195639e-07, +-1.607379997033246917e-07, +-1.605968537216389456e-07, +-1.604554753493176504e-07, +-1.603138648686544675e-07, +-1.601720225622575987e-07, +-1.600299487130578065e-07, +-1.598876436043102141e-07, +-1.597451075195721239e-07, +-1.596023407427377982e-07, +-1.594593435580129431e-07, +-1.593161162499224371e-07, +-1.591726591033068108e-07, +-1.590289724033312204e-07, +-1.588850564354585274e-07, +-1.587409114854842128e-07, +-1.585965378395140098e-07, +-1.584519357839681125e-07, +-1.583071056055855701e-07, +-1.581620475914027403e-07, +-1.580167620287870913e-07, +-1.578712492054104673e-07, +-1.577255094092582998e-07, +-1.575795429286266435e-07, +-1.574333500521286873e-07, +-1.572869310686701641e-07, +-1.571402862674780970e-07, +-1.569934159381060670e-07, +-1.568463203703829404e-07, +-1.566989998544666561e-07, +-1.565514546808234200e-07, +-1.564036851402100761e-07, +-1.562556915237060027e-07, +-1.561074741226915131e-07, +-1.559590332288517465e-07, +-1.558103691341835238e-07, +-1.556614821309696453e-07, +-1.555123725118081400e-07, +-1.553630405696180624e-07, +-1.552134865975862087e-07, +-1.550637108892242654e-07, +-1.549137137383465742e-07, +-1.547634954390427363e-07, +-1.546130562857477302e-07, +-1.544623965731514389e-07, +-1.543115165962689262e-07, +-1.541604166504074295e-07, +-1.540090970311773710e-07, +-1.538575580344654911e-07, +-1.537057999564943521e-07, +-1.535538230937444380e-07, +-1.534016277430137640e-07, +-1.532492142013973365e-07, +-1.530965827662596506e-07, +-1.529437337352967355e-07, +-1.527906674064803824e-07, +-1.526373840780626182e-07, +-1.524838840486074160e-07, +-1.523301676169708166e-07, +-1.521762350822750939e-07, +-1.520220867439770201e-07, +-1.518677229017812836e-07, +-1.517131438557059750e-07, +-1.515583499060599817e-07, +-1.514033413534143746e-07, +-1.512481184986682642e-07, +-1.510926816429875767e-07, +-1.509370310878141061e-07, +-1.507811671348941549e-07, +-1.506250900862607726e-07, +-1.504688002442070215e-07, +-1.503122979113472275e-07, +-1.501555833905647818e-07, +-1.499986569850108969e-07, +-1.498415189981397584e-07, +-1.496841697336824521e-07, +-1.495266094956517025e-07, +-1.493688385883484634e-07, +-1.492108573163350248e-07, +-1.490526659844730233e-07, +-1.488942648978991960e-07, +-1.487356543620281333e-07, +-1.485768346825528347e-07, +-1.484178061654518029e-07, +-1.482585691169612501e-07, +-1.480991238436142737e-07, +-1.479394706522127982e-07, +-1.477796098498362573e-07, +-1.476195417438453260e-07, +-1.474592666418546833e-07, +-1.472987848517747551e-07, +-1.471380966817810887e-07, +-1.469772024403242788e-07, +-1.468161024361249912e-07, +-1.466547969781848155e-07, +-1.464932863757559307e-07, +-1.463315709383806777e-07, +-1.461696509758652744e-07, +-1.460075267982854805e-07, +-1.458451987159869682e-07, +-1.456826670395888423e-07, +-1.455199320799597119e-07, +-1.453569941482554627e-07, +-1.451938535558916486e-07, +-1.450305106145493688e-07, +-1.448669656361832342e-07, +-1.447032189329919870e-07, +-1.445392708174599249e-07, +-1.443751216023268324e-07, +-1.442107716005986472e-07, +-1.440462211255414523e-07, +-1.438814704906913222e-07, +-1.437165200098259477e-07, +-1.435513699970039170e-07, +-1.433860207665377162e-07, +-1.432204726329996325e-07, +-1.430547259112210390e-07, +-1.428887809163001245e-07, +-1.427226379635715852e-07, +-1.425562973686483410e-07, +-1.423897594473937955e-07, +-1.422230245159279503e-07, +-1.420560928906326988e-07, +-1.418889648881254100e-07, +-1.417216408252930206e-07, +-1.415541210192942595e-07, +-1.413864057875033721e-07, +-1.412184954475722722e-07, +-1.410503903174076713e-07, +-1.408820907151395539e-07, +-1.407135969591963773e-07, +-1.405449093682111312e-07, +-1.403760282610934936e-07, +-1.402069539570016145e-07, +-1.400376867753236397e-07, +-1.398682270357091042e-07, +-1.396985750580753641e-07, +-1.395287311625467428e-07, +-1.393586956695202288e-07, +-1.391884688996416795e-07, +-1.390180511737714901e-07, +-1.388474428130586024e-07, +-1.386766441388742783e-07, +-1.385056554728202519e-07, +-1.383344771367620286e-07, +-1.381631094528071801e-07, +-1.379915527432785302e-07, +-1.378198073307884291e-07, +-1.376478735381407361e-07, +-1.374757516884080050e-07, +-1.373034421049020765e-07, +-1.371309451111462054e-07, +-1.369582610309435116e-07, +-1.367853901883141934e-07, +-1.366123329075028338e-07, +-1.364390895130100311e-07, +-1.362656603295732355e-07, +-1.360920456821374201e-07, +-1.359182458959314994e-07, +-1.357442612963694911e-07, +-1.355700922091266694e-07, +-1.353957389601066107e-07, +-1.352212018754431253e-07, +-1.350464812815026930e-07, +-1.348715775048912920e-07, +-1.346964908724226618e-07, +-1.345212217111636198e-07, +-1.343457703484018469e-07, +-1.341701371116568463e-07, +-1.339943223286735116e-07, +-1.338183263274337468e-07, +-1.336421494361242524e-07, +-1.334657919831802802e-07, +-1.332892542972564106e-07, +-1.331125367072313172e-07, +-1.329356395422172430e-07, +-1.327585631315291099e-07, +-1.325813078047263413e-07, +-1.324038738915846716e-07, +-1.322262617221024724e-07, +-1.320484716264995618e-07, +-1.318705039352252506e-07, +-1.316923589789268436e-07, +-1.315140370884946911e-07, +-1.313355385950309812e-07, +-1.311568638298562246e-07, +-1.309780131245102078e-07, +-1.307989868107577366e-07, +-1.306197852205580905e-07, +-1.304404086861102329e-07, +-1.302608575398201737e-07, +-1.300811321143119544e-07, +-1.299012327424295804e-07, +-1.297211597572098364e-07, +-1.295409134919253001e-07, +-1.293604942800538220e-07, +-1.291799024552871554e-07, +-1.289991383515260584e-07, +-1.288182023028937151e-07, +-1.286370946436983862e-07, +-1.284558157084823515e-07, +-1.282743658319896702e-07, +-1.280927453491729038e-07, +-1.279109545951932486e-07, +-1.277289939054259622e-07, +-1.275468636154260053e-07, +-1.273645640610045662e-07, +-1.271820955781274695e-07, +-1.269994585029955387e-07, +-1.268166531720141293e-07, +-1.266336799217706027e-07, +-1.264505390890705640e-07, +-1.262672310109442935e-07, +-1.260837560245812081e-07, +-1.259001144674002968e-07, +-1.257163066770232278e-07, +-1.255323329912405997e-07, +-1.253481937480968029e-07, +-1.251638892857825531e-07, +-1.249794199427157559e-07, +-1.247947860575156462e-07, +-1.246099879689734329e-07, +-1.244250260160934597e-07, +-1.242399005380990018e-07, +-1.240546118743629151e-07, +-1.238691603644843193e-07, +-1.236835463482561720e-07, +-1.234977701656344056e-07, +-1.233118321568164096e-07, +-1.231257326621659625e-07, +-1.229394720222258052e-07, +-1.227530505777524748e-07, +-1.225664686696928263e-07, +-1.223797266391541213e-07, +-1.221928248274861114e-07, +-1.220057635761748672e-07, +-1.218185432269251000e-07, +-1.216311641216289533e-07, +-1.214436266023353249e-07, +-1.212559310113262319e-07, +-1.210680776910460834e-07, +-1.208800669841090657e-07, +-1.206918992333385028e-07, +-1.205035747817406779e-07, +-1.203150939724750283e-07, +-1.201264571489385841e-07, +-1.199376646546549538e-07, +-1.197487168333624952e-07, +-1.195596140289715403e-07, +-1.193703565855732892e-07, +-1.191809448474399025e-07, +-1.189913791590292397e-07, +-1.188016598649553847e-07, +-1.186117873100335390e-07, +-1.184217618392487474e-07, +-1.182315837977630447e-07, +-1.180412535309139210e-07, +-1.178507713842245251e-07, +-1.176601377033674278e-07, +-1.174693528342140674e-07, +-1.172784171228018741e-07, +-1.170873309153415231e-07, +-1.168960945582240277e-07, +-1.167047083979888045e-07, +-1.165131727813705770e-07, +-1.163214880552671229e-07, +-1.161296545667463011e-07, +-1.159376726630454701e-07, +-1.157455426915789385e-07, +-1.155532649999050505e-07, +-1.153608399357751943e-07, +-1.151682678470982665e-07, +-1.149755490819513130e-07, +-1.147826839885763393e-07, +-1.145896729153887811e-07, +-1.143965162109446416e-07, +-1.142032142239888788e-07, +-1.140097673034211529e-07, +-1.138161757983035962e-07, +-1.136224400578707778e-07, +-1.134285604314923557e-07, +-1.132345372687242556e-07, +-1.130403709192747236e-07, +-1.128460617330124126e-07, +-1.126516100599639206e-07, +-1.124570162503236908e-07, +-1.122622806544188193e-07, +-1.120674036227594013e-07, +-1.118723855060035640e-07, +-1.116772266549653551e-07, +-1.114819274206224716e-07, +-1.112864881540835696e-07, +-1.110909092066277577e-07, +-1.108951909297117959e-07, +-1.106993336748978474e-07, +-1.105033377939322253e-07, +-1.103072036387130602e-07, +-1.101109315612654981e-07, +-1.099145219137817224e-07, +-1.097179750486287096e-07, +-1.095212913182730024e-07, +-1.093244710753632027e-07, +-1.091275146726965798e-07, +-1.089304224631842629e-07, +-1.087331947999424688e-07, +-1.085358320361759559e-07, +-1.083383345252679419e-07, +-1.081407026207469502e-07, +-1.079429366762609492e-07, +-1.077450370456196509e-07, +-1.075470040827992752e-07, +-1.073488381418693219e-07, +-1.071505395770753146e-07, +-1.069521087428034504e-07, +-1.067535459935472618e-07, +-1.065548516839995850e-07, +-1.063560261689341349e-07, +-1.061570698032967991e-07, +-1.059579829421635641e-07, +-1.057587659407569398e-07, +-1.055594191544021390e-07, +-1.053599429386201845e-07, +-1.051603376490091792e-07, +-1.049606036413357723e-07, +-1.047607412715023237e-07, +-1.045607508955102166e-07, +-1.043606328695455270e-07, +-1.041603875499017851e-07, +-1.039600152929876515e-07, +-1.037595164553685672e-07, +-1.035588913937326473e-07, +-1.033581404648990191e-07, +-1.031572640258241353e-07, +-1.029562624335679983e-07, +-1.027551360453452997e-07, +-1.025538852184981833e-07, +-1.023525103104619003e-07, +-1.021510116788493803e-07, +-1.019493896813742703e-07, +-1.017476446758592730e-07, +-1.015457770202759040e-07, +-1.013437870727123976e-07, +-1.011416751913802179e-07, +-1.009394417346139534e-07, +-1.007370870608785032e-07, +-1.005346115287349047e-07, +-1.003320154968922143e-07, +-1.001292993241700394e-07, +-9.992646336950792205e-08, +-9.972350799197357086e-08, +-9.952043355072748435e-08, +-9.931724040507401099e-08, +-9.911392891442542983e-08, +-9.891049943831226038e-08, +-9.870695233638036425e-08, +-9.850328796839950807e-08, +-9.829950669422875427e-08, +-9.809560887386695219e-08, +-9.789159486741879059e-08, +-9.768746503510144156e-08, +-9.748321973725252790e-08, +-9.727885933429693007e-08, +-9.707438418679596698e-08, +-9.686979465541274709e-08, +-9.666509110091997699e-08, +-9.646027388420068930e-08, +-9.625534336625450279e-08, +-9.605029990816256315e-08, +-9.584514387114160751e-08, +-9.563987561650453772e-08, +-9.543449550567124647e-08, +-9.522900390016697619e-08, +-9.502340116163104079e-08, +-9.481768765178070772e-08, +-9.461186373246297280e-08, +-9.440592976561919661e-08, +-9.419988611329452774e-08, +-9.399373313764330264e-08, +-9.378747120089492603e-08, +-9.358110066539798281e-08, +-9.337462189362631290e-08, +-9.316803524810109741e-08, +-9.296134109147707072e-08, +-9.275453978650814948e-08, +-9.254763169601826290e-08, +-9.234061718295480847e-08, +-9.213349661035323543e-08, +-9.192627034134431066e-08, +-9.171893873915415846e-08, +-9.151150216711149995e-08, +-9.130396098860483830e-08, +-9.109631556717645282e-08, +-9.088856626639996306e-08, +-9.068071344997645379e-08, +-9.047275748169766878e-08, +-9.026469872542024245e-08, +-9.005653754510851476e-08, +-8.984827430484218099e-08, +-8.963990936873815289e-08, +-8.943144310103571205e-08, +-8.922287586606215202e-08, +-8.901420802819630307e-08, +-8.880543995196563647e-08, +-8.859657200192100957e-08, +-8.838760454273398190e-08, +-8.817853793915245183e-08, +-8.796937255601627377e-08, +-8.776010875821314623e-08, +-8.755074691077602064e-08, +-8.734128737875722433e-08, +-8.713173052732683541e-08, +-8.692207672173497663e-08, +-8.671232632727610761e-08, +-8.650247970937900888e-08, +-8.629253723352386525e-08, +-8.608249926525122591e-08, +-8.587236617020585152e-08, +-8.566213831410186684e-08, +-8.545181606272841197e-08, +-8.524139978196016409e-08, +-8.503088983772063715e-08, +-8.482028659603382435e-08, +-8.460959042299864163e-08, +-8.439880168475075821e-08, +-8.418792074755267325e-08, +-8.397694797771222865e-08, +-8.376588374159035147e-08, +-8.355472840564687306e-08, +-8.334348233640190973e-08, +-8.313214590044569622e-08, +-8.292071946443703725e-08, +-8.270920339511254543e-08, +-8.249759805924947773e-08, +-8.228590382371938972e-08, +-8.207412105545091904e-08, +-8.186225012143987039e-08, +-8.165029138875469479e-08, +-8.143824522450304500e-08, +-8.122611199588231957e-08, +-8.101389207014522566e-08, +-8.080158581460709790e-08, +-8.058919359664503819e-08, +-8.037671578370810650e-08, +-8.016415274327777506e-08, +-7.995150484292323693e-08, +-7.973877245026516891e-08, +-7.952595593298258719e-08, +-7.931305565882223089e-08, +-7.910007199556187494e-08, +-7.888700531106284614e-08, +-7.867385597323558596e-08, +-7.846062435004538125e-08, +-7.824731080951269512e-08, +-7.803391571972310634e-08, +-7.782043944878765760e-08, +-7.760688236488981293e-08, +-7.739324483629330593e-08, +-7.717952723125972618e-08, +-7.696572991813843703e-08, +-7.675185326532984880e-08, +-7.653789764125749319e-08, +-7.632386341442227302e-08, +-7.610975095336487522e-08, +-7.589556062667446613e-08, +-7.568129280299828675e-08, +-7.546694785100251724e-08, +-7.525252613941865193e-08, +-7.503802803705165201e-08, +-7.482345391269726722e-08, +-7.460880413523252272e-08, +-7.439407907357904528e-08, +-7.417927909667393323e-08, +-7.396440457352572686e-08, +-7.374945587317544485e-08, +-7.353443336470632522e-08, +-7.331933741724239587e-08, +-7.310416839995793762e-08, +-7.288892668202978561e-08, +-7.267361263273872178e-08, +-7.245822662134030241e-08, +-7.224276901716413296e-08, +-7.202724018957812068e-08, +-7.181164050795831225e-08, +-7.159597034173655268e-08, +-7.138023006040735417e-08, +-7.116442003344430453e-08, +-7.094854063039395557e-08, +-7.073259222083511248e-08, +-7.051657517434316588e-08, +-7.030048986059098134e-08, +-7.008433664921824455e-08, +-6.986811590993307885e-08, +-6.965182801247459041e-08, +-6.943547332658335452e-08, +-6.921905222204884935e-08, +-6.900256506871689402e-08, +-6.878601223640534231e-08, +-6.856939409499719014e-08, +-6.835271101440260466e-08, +-6.813596336452033131e-08, +-6.791915151533098654e-08, +-6.770227583681284424e-08, +-6.748533669894939286e-08, +-6.726833447177612070e-08, +-6.705126952534261124e-08, +-6.683414222972090756e-08, +-6.661695295501472385e-08, +-6.639970207132095829e-08, +-6.618238994878502821e-08, +-6.596501695757371203e-08, +-6.574758346783441229e-08, +-6.553008984979096303e-08, +-6.531253647365641184e-08, +-6.509492370964372692e-08, +-6.487725192801038538e-08, +-6.465952149902118325e-08, +-6.444173279295740722e-08, +-6.422388618012412707e-08, +-6.400598203081346887e-08, +-6.378802071535951328e-08, +-6.357000260410049673e-08, +-6.335192806738742730e-08, +-6.313379747558340977e-08, +-6.291561119907312180e-08, +-6.269736960822330775e-08, +-6.247907307343954318e-08, +-6.226072196512780065e-08, +-6.204231665370315837e-08, +-6.182385750958919133e-08, +-6.160534490322686516e-08, +-6.138677920503581085e-08, +-6.116816078547159213e-08, +-6.094949001498543167e-08, +-6.073076726403433579e-08, +-6.051199290308984272e-08, +-6.029316730259887380e-08, +-6.007429083304092143e-08, +-5.985536386488826500e-08, +-5.963638676861650584e-08, +-5.941735991470262173e-08, +-5.919828367363394673e-08, +-5.897915841587039224e-08, +-5.875998451189984819e-08, +-5.854076233220063568e-08, +-5.832149224724906413e-08, +-5.810217462752007314e-08, +-5.788280984349568297e-08, +-5.766339826562620970e-08, +-5.744394026438631501e-08, +-5.722443621023755139e-08, +-5.700488647363586638e-08, +-5.678529142504174046e-08, +-5.656565143488032357e-08, +-5.634596687358995423e-08, +-5.612623811162926663e-08, +-5.590646551939250066e-08, +-5.568664946730252321e-08, +-5.546679032577396251e-08, +-5.524688846518217222e-08, +-5.502694425592126647e-08, +-5.480695806836476589e-08, +-5.458693027287449810e-08, +-5.436686123980918050e-08, +-5.414675133948670751e-08, +-5.392660094222986379e-08, +-5.370641041837686592e-08, +-5.348618013819299300e-08, +-5.326591047196714839e-08, +-5.304560178997224109e-08, +-5.282525446243596973e-08, +-5.260486885958762774e-08, +-5.238444535166804936e-08, +-5.216398430884212704e-08, +-5.194348610129395045e-08, +-5.172295109918812748e-08, +-5.150237967263117811e-08, +-5.128177219177558708e-08, +-5.106112902668525802e-08, +-5.084045054744092271e-08, +-5.061973712410027761e-08, +-5.039898912665976150e-08, +-5.017820692514954227e-08, +-4.995739088954635857e-08, +-4.973654138978341947e-08, +-4.951565879579653472e-08, +-4.929474347749545458e-08, +-4.907379580472474084e-08, +-4.885281614736885186e-08, +-4.863180487521684232e-08, +-4.841076235806740189e-08, +-4.818968896568120301e-08, +-4.796858506778810731e-08, +-4.774745103408810527e-08, +-4.752628723425968066e-08, +-4.730509403792058236e-08, +-4.708387181468556817e-08, +-4.686262093413588512e-08, +-4.664134176578204639e-08, +-4.642003467915689242e-08, +-4.619870004373071556e-08, +-4.597733822891883704e-08, +-4.575594960412964963e-08, +-4.553453453872556809e-08, +-4.531309340203181052e-08, +-4.509162656334572236e-08, +-4.487013439189746210e-08, +-4.464861725690721576e-08, +-4.442707552754596867e-08, +-4.420550957294468382e-08, +-4.398391976219371959e-08, +-4.376230646435181619e-08, +-4.354067004840671527e-08, +-4.331901088333291035e-08, +-4.309732933805224656e-08, +-4.287562578144241744e-08, +-4.265390058233728921e-08, +-4.243215410953547691e-08, +-4.221038673176093101e-08, +-4.198859881772069438e-08, +-4.176679073606525718e-08, +-4.154496285539850296e-08, +-4.132311554428535172e-08, +-4.110124917121373610e-08, +-4.087936410465127983e-08, +-4.065746071300641357e-08, +-4.043553936463746731e-08, +-4.021360042785139322e-08, +-3.999164427091425424e-08, +-3.976967126201042760e-08, +-3.954768176930061992e-08, +-3.932567616088307575e-08, +-3.910365480480174352e-08, +-3.888161806904655345e-08, +-3.865956632156173567e-08, +-3.843749993020733983e-08, +-3.821541926281582079e-08, +-3.799332468715322077e-08, +-3.777121657092846681e-08, +-3.754909528180196022e-08, +-3.732696118734638808e-08, +-3.710481465509473943e-08, +-3.688265605254922556e-08, +-3.666048574709387682e-08, +-3.643830410609016468e-08, +-3.621611149683813749e-08, +-3.599390828654650965e-08, +-3.577169484239044507e-08, +-3.554947153147221654e-08, +-3.532723872082980835e-08, +-3.510499677744698809e-08, +-3.488274606821276813e-08, +-3.466048695996993138e-08, +-3.443821981952450084e-08, +-3.421594501355682102e-08, +-3.399366290871894682e-08, +-3.377137387159497861e-08, +-3.354907826867082050e-08, +-3.332677646638295752e-08, +-3.310446883112717741e-08, +-3.288215572917021451e-08, +-3.265983752674692691e-08, +-3.243751459002058519e-08, +-3.221518728504314128e-08, +-3.199285597786224577e-08, +-3.177052103438380356e-08, +-3.154818282047885887e-08, +-3.132584170194384422e-08, +-3.110349804446098166e-08, +-3.088115221369545330e-08, +-3.065880457520680700e-08, +-3.043645549445802222e-08, +-3.021410533686439314e-08, +-2.999175446776281044e-08, +-2.976940325237230147e-08, +-2.954705205590133548e-08, +-2.932470124340999543e-08, +-2.910235117991711774e-08, +-2.888000223035094932e-08, +-2.865765475955765761e-08, +-2.843530913230202540e-08, +-2.821296571327527266e-08, +-2.799062486705614593e-08, +-2.776828695816887066e-08, +-2.754595235105308810e-08, +-2.732362141002429622e-08, +-2.710129449937097069e-08, +-2.687897198326632449e-08, +-2.665665422577675844e-08, +-2.643434159091084351e-08, +-2.621203444257929188e-08, +-2.598973314460423793e-08, +-2.576743806072866478e-08, +-2.554514955457630259e-08, +-2.532286798970979256e-08, +-2.510059372960131211e-08, +-2.487832713759201326e-08, +-2.465606857698988139e-08, +-2.443381841098102179e-08, +-2.421157700263857332e-08, +-2.398934471497132022e-08, +-2.376712191088387490e-08, +-2.354490895318610450e-08, +-2.332270620459203902e-08, +-2.310051402772968829e-08, +-2.287833278510084762e-08, +-2.265616283913945371e-08, +-2.243400455217188003e-08, +-2.221185828642593981e-08, +-2.198972440404055746e-08, +-2.176760326702549809e-08, +-2.154549523731984257e-08, +-2.132340067675207443e-08, +-2.110131994704949315e-08, +-2.087925340983759543e-08, +-2.065720142664903523e-08, +-2.043516435888417385e-08, +-2.021314256786939949e-08, +-1.999113641481683032e-08, +-1.976914626083397922e-08, +-1.954717246693284952e-08, +-1.932521539399022696e-08, +-1.910327540280573791e-08, +-1.888135285406223066e-08, +-1.865944810833508289e-08, +-1.843756152609132155e-08, +-1.821569346769919169e-08, +-1.799384429338816390e-08, +-1.777201436329736745e-08, +-1.755020403748499690e-08, +-1.732841367583940351e-08, +-1.710664363817646097e-08, +-1.688489428420009893e-08, +-1.666316597347191908e-08, +-1.644145906546965359e-08, +-1.621977391954742737e-08, +-1.599811089494497950e-08, +-1.577647035079675228e-08, +-1.555485264609219977e-08, +-1.533325813972439628e-08, +-1.511168719049904267e-08, +-1.489014015704569500e-08, +-1.466861739791534206e-08, +-1.444711927154056340e-08, +-1.422564613620557876e-08, +-1.400419835010442367e-08, +-1.378277627130138379e-08, +-1.356138025773992676e-08, +-1.334001066724239782e-08, +-1.311866785751907909e-08, +-1.289735218611871922e-08, +-1.267606401053575913e-08, +-1.245480368807258164e-08, +-1.223357157594665451e-08, +-1.201236803125100611e-08, +-1.179119341091410880e-08, +-1.157004807179758389e-08, +-1.134893237060737228e-08, +-1.112784666390296259e-08, +-1.090679130814579605e-08, +-1.068576665966933746e-08, +-1.046477307463940032e-08, +-1.024381090916124685e-08, +-1.002288051914187898e-08, +-9.801982260397293850e-09, +-9.581116488612709726e-09, +-9.360283559302828192e-09, +-9.139483827909285969e-09, +-8.918717649711800829e-09, +-8.697985379837603108e-09, +-8.477287373309673567e-09, +-8.256623985016916918e-09, +-8.035995569674314876e-09, +-7.815402481920470608e-09, +-7.594845076228796003e-09, +-7.374323706916728119e-09, +-7.153838728194273107e-09, +-6.933390494124123693e-09, +-6.712979358631006322e-09, +-6.492605675510869482e-09, +-6.272269798391157523e-09, +-6.051972080789024322e-09, +-5.831712876081436497e-09, +-5.611492537465424066e-09, +-5.391311418055416444e-09, +-5.171169870794598465e-09, +-4.951068248464153290e-09, +-4.731006903731645036e-09, +-4.510986189111341398e-09, +-4.291006456973422654e-09, +-4.071068059553195628e-09, +-3.851171348911484975e-09, +-3.631316676992711186e-09, +-3.411504395585233893e-09, +-3.191734856330583622e-09, +-2.972008410722918329e-09, +-2.752325410118267566e-09, +-2.532686205694819533e-09, +-2.313091148511123987e-09, +-2.093540589466356972e-09, +-1.874034879309601368e-09, +-1.654574368639269314e-09, +-1.435159407912355049e-09, +-1.215790347404769326e-09, +-9.964675372694645708e-10, +-7.771913274967711528e-10, +-5.579620679236547802e-10, +-3.387801082429126275e-10, +-1.196457979635512034e-10, + 9.944051353110686075e-11, + 3.184784770230716584e-10, + 5.374677434406796464e-10, + 7.564079639079897692e-10, + 9.752987896476218032e-10, + 1.194139872069231608e-09, + 1.412930862760267071e-09, + 1.631671413427924022e-09, + 1.850361175987556014e-09, + 2.068999802455817067e-09, + 2.287586945039078385e-09, + 2.506122256133973052e-09, + 2.724605388230290612e-09, + 2.943035994048189168e-09, + 3.161413726441119536e-09, + 3.379738238386628647e-09, + 3.598009183123453570e-09, + 3.816226213947252980e-09, + 4.034388984396399783e-09, + 4.252497148125814151e-09, + 4.470550359004917011e-09, + 4.688548271010987851e-09, + 4.906490538317413312e-09, + 5.124376815284491419e-09, + 5.342206756401452015e-09, + 5.559980016374681358e-09, + 5.777696250021195322e-09, + 5.995355112356706012e-09, + 6.212956258596214845e-09, + 6.430499344057180315e-09, + 6.647984024296325386e-09, + 6.865409955003078436e-09, + 7.082776792039130687e-09, + 7.300084191477698334e-09, + 7.517331809497277809e-09, + 7.734519302518171121e-09, + 7.951646327105817384e-09, + 8.168712539971294097e-09, + 8.385717598059474742e-09, + 8.602661158442426708e-09, + 8.819542878407519262e-09, + 9.036362415399759136e-09, + 9.253119427012370594e-09, + 9.469813571074848804e-09, + 9.686444505546773013e-09, + 9.903011888615220299e-09, + 1.011951537857889907e-08, + 1.033595463398459913e-08, + 1.055232931352097175e-08, + 1.076863907605775128e-08, + 1.098488358068518352e-08, + 1.120106248660775621e-08, + 1.141717545328063084e-08, + 1.163322214031311732e-08, + 1.184920220746917361e-08, + 1.206511531475519602e-08, + 1.228096112231408716e-08, + 1.249673929051259633e-08, + 1.271244947988413313e-08, + 1.292809135111929137e-08, + 1.314366456515373033e-08, + 1.335916878306208887e-08, + 1.357460366615529497e-08, + 1.378996887587476433e-08, + 1.400526407387983340e-08, + 1.422048892203855945e-08, + 1.443564308237050118e-08, + 1.465072621713391848e-08, + 1.486573798871049153e-08, + 1.508067805974112899e-08, + 1.529554609302966928e-08, + 1.551034175154379381e-08, + 1.572506469850202485e-08, + 1.593971459726819382e-08, + 1.615429111143900334e-08, + 1.636879390478632644e-08, + 1.658322264124829280e-08, + 1.679757698501652989e-08, + 1.701185660043076358e-08, + 1.722606115207542296e-08, + 1.744019030467427731e-08, + 1.765424372317785261e-08, + 1.786822107275402481e-08, + 1.808212201873082857e-08, + 1.829594622668374797e-08, + 1.850969336233031056e-08, + 1.872336309161694130e-08, + 1.893695508071989893e-08, + 1.915046899593954246e-08, + 1.936390450388395531e-08, + 1.957726127126716289e-08, + 1.979053896504459830e-08, + 2.000373725240358646e-08, + 2.021685580066819849e-08, + 2.042989427743398947e-08, + 2.064285235045317590e-08, + 2.085572968773126689e-08, + 2.106852595742214790e-08, + 2.128124082791458730e-08, + 2.149387396782344838e-08, + 2.170642504593264700e-08, + 2.191889373128167133e-08, + 2.213127969306086747e-08, + 2.234358260069809483e-08, + 2.255580212385933496e-08, + 2.276793793234362637e-08, + 2.297998969626586484e-08, + 2.319195708585571251e-08, + 2.340383977159273929e-08, + 2.361563742419688057e-08, + 2.382734971453327502e-08, + 2.403897631374700901e-08, + 2.425051689316762687e-08, + 2.446197112430033962e-08, + 2.467333867895999515e-08, + 2.488461922907154572e-08, + 2.509581244685115085e-08, + 2.530691800468331785e-08, + 2.551793557521635520e-08, + 2.572886483125802531e-08, + 2.593970544586229591e-08, + 2.615045709232892654e-08, + 2.636111944410025286e-08, + 2.657169217494172715e-08, + 2.678217495874291846e-08, + 2.699256746965107917e-08, + 2.720286938206229744e-08, + 2.741308037052680156e-08, + 2.762320010988233788e-08, + 2.783322827515994501e-08, + 2.804316454157484159e-08, + 2.825300858465983069e-08, + 2.846276008006629335e-08, + 2.867241870374523530e-08, + 2.888198413184324416e-08, + 2.909145604070301222e-08, + 2.930083410694922425e-08, + 2.951011800738475627e-08, + 2.971930741907647074e-08, + 2.992840201929846530e-08, + 3.013740148552390359e-08, + 3.034630549550975493e-08, + 3.055511372719408160e-08, + 3.076382585879023823e-08, + 3.097244156867468623e-08, + 3.118096053551932284e-08, + 3.138938243819753326e-08, + 3.159770695577536958e-08, + 3.180593376764404531e-08, + 3.201406255332237151e-08, + 3.222209299263638076e-08, + 3.243002476561599570e-08, + 3.263785755249594892e-08, + 3.284559103380046637e-08, + 3.305322489024041240e-08, + 3.326075880279854232e-08, + 3.346819245267339310e-08, + 3.367552552127048214e-08, + 3.388275769028716939e-08, + 3.408988864161046417e-08, + 3.429691805741029803e-08, + 3.450384562003741757e-08, + 3.471067101210843849e-08, + 3.491739391649650837e-08, + 3.512401401627583260e-08, + 3.533053099480640416e-08, + 3.553694453563104281e-08, + 3.574325432256127627e-08, + 3.594946003967631454e-08, + 3.615556137123101443e-08, + 3.636155800178682561e-08, + 3.656744961610032635e-08, + 3.677323589920750991e-08, + 3.697891653636834358e-08, + 3.718449121305818588e-08, + 3.738995961505182145e-08, + 3.759532142832129439e-08, + 3.780057633913009427e-08, + 3.800572403393046667e-08, + 3.821076419944832821e-08, + 3.841569652267404850e-08, + 3.862052069080698924e-08, + 3.882523639134028041e-08, + 3.902984331195817699e-08, + 3.923434114062065646e-08, + 3.943872956556398784e-08, + 3.964300827520782939e-08, + 3.984717695828628052e-08, + 4.005123530374546356e-08, + 4.025518300078234171e-08, + 4.045901973888081721e-08, + 4.066274520771107336e-08, + 4.086635909725966688e-08, + 4.106986109771869234e-08, + 4.127325089957890945e-08, + 4.147652819352812557e-08, + 4.167969267053579314e-08, + 4.188274402184295115e-08, + 4.208568193890798195e-08, + 4.228850611349026899e-08, + 4.249121623754881095e-08, + 4.269381200332550889e-08, + 4.289629310334656255e-08, + 4.309865923032915111e-08, + 4.330091007731300788e-08, + 4.350304533755735359e-08, + 4.370506470457968782e-08, + 4.390696787219250925e-08, + 4.410875453440234665e-08, + 4.431042438553959317e-08, + 4.451197712016627237e-08, + 4.471341243307740143e-08, + 4.491473001938302102e-08, + 4.511592957440858283e-08, + 4.531701079377727729e-08, + 4.551797337335608811e-08, + 4.571881700924644842e-08, + 4.591954139786778610e-08, + 4.612014623585630326e-08, + 4.632063122015858002e-08, + 4.652099604791109734e-08, + 4.672124041661570515e-08, + 4.692136402394797456e-08, + 4.712136656788488803e-08, + 4.732124774669710363e-08, + 4.752100725885724385e-08, + 4.772064480316892915e-08, + 4.792016007867521238e-08, + 4.811955278465922067e-08, + 4.831882262072708527e-08, + 4.851796928670738281e-08, + 4.871699248273456150e-08, + 4.891589190919344053e-08, + 4.911466726671214273e-08, + 4.931331825624278101e-08, + 4.951184457896299742e-08, + 4.971024593636672141e-08, + 4.990852203016488830e-08, + 5.010667256236776691e-08, + 5.030469723527595985e-08, + 5.050259575142618015e-08, + 5.070036781367471049e-08, + 5.089801312508693819e-08, + 5.109553138906627629e-08, + 5.129292230926314718e-08, + 5.149018558956716080e-08, + 5.168732093423313725e-08, + 5.188432804769250302e-08, + 5.208120663472551656e-08, + 5.227795640036145742e-08, + 5.247457704987979086e-08, + 5.267106828889164188e-08, + 5.286742982324075191e-08, + 5.306366135909450836e-08, + 5.325976260284451090e-08, + 5.345573326118950131e-08, + 5.365157304112483509e-08, + 5.384728164989057424e-08, + 5.404285879505158480e-08, + 5.423830418440014131e-08, + 5.443361752603673905e-08, + 5.462879852837027269e-08, + 5.482384690001982018e-08, + 5.501876234998654413e-08, + 5.521354458746389687e-08, + 5.540819332196517168e-08, + 5.560270826331384797e-08, + 5.579708912155544025e-08, + 5.599133560708255467e-08, + 5.618544743052754738e-08, + 5.637942430284544115e-08, + 5.657326593525782929e-08, + 5.676697203924637730e-08, + 5.696054232663313884e-08, + 5.715397650948224027e-08, + 5.734727430019028167e-08, + 5.754043541138843166e-08, + 5.773345955602218088e-08, + 5.792634644735372426e-08, + 5.811909579886241483e-08, + 5.831170732441487831e-08, + 5.850418073807936736e-08, + 5.869651575424972619e-08, + 5.888871208763722457e-08, + 5.908076945318249955e-08, + 5.927268756617981782e-08, + 5.946446614218882544e-08, + 5.965610489702604447e-08, + 5.984760354688943973e-08, + 6.003896180817301120e-08, + 6.023017939763492349e-08, + 6.042125603230069923e-08, + 6.061219142946500575e-08, + 6.080298530676869539e-08, + 6.099363738210485105e-08, + 6.118414737369707049e-08, + 6.137451500002975823e-08, + 6.156473997992779959e-08, + 6.175482203246031649e-08, + 6.194476087701954750e-08, + 6.213455623332287271e-08, + 6.232420782132317383e-08, + 6.251371536133354657e-08, + 6.270307857393954009e-08, + 6.289229717999116312e-08, + 6.308137090072505521e-08, + 6.327029945758222909e-08, + 6.345908257237412881e-08, + 6.364771996718622684e-08, + 6.383621136437932102e-08, + 6.402455648666820283e-08, + 6.421275505702573083e-08, + 6.440080679876257095e-08, + 6.458871143547430977e-08, + 6.477646869103339459e-08, + 6.496407828966891324e-08, + 6.515153995586941035e-08, + 6.533885341447165374e-08, + 6.552601839055642288e-08, + 6.571303460957024342e-08, + 6.589990179723026806e-08, + 6.608661967955948130e-08, + 6.627318798292235428e-08, + 6.645960643392889183e-08, + 6.664587475955683018e-08, + 6.683199268706530578e-08, + 6.701795994399526559e-08, + 6.720377625824792353e-08, + 6.738944135798929717e-08, + 6.757495497172978915e-08, + 6.776031682827106234e-08, + 6.794552665669927679e-08, + 6.813058418646152123e-08, + 6.831548914727286446e-08, + 6.850024126920226297e-08, + 6.868484028257805064e-08, + 6.886928591806569368e-08, + 6.905357790666086883e-08, + 6.923771597963607374e-08, + 6.942169986861971876e-08, + 6.960552930550217239e-08, + 6.978920402251289426e-08, + 6.997272375222054096e-08, + 7.015608822744814369e-08, + 7.033929718139375748e-08, + 7.052235034752703053e-08, + 7.070524745966730330e-08, + 7.088798825193249536e-08, + 7.107057245873101888e-08, + 7.125299981483873952e-08, + 7.143527005530617336e-08, + 7.161738291554254169e-08, + 7.179933813122516499e-08, + 7.198113543837328710e-08, + 7.216277457334227835e-08, + 7.234425527277174158e-08, + 7.252557727366271122e-08, + 7.270674031328491645e-08, + 7.288774412925306708e-08, + 7.306858845952756823e-08, + 7.324927304233006853e-08, + 7.342979761626187263e-08, + 7.361016192021166762e-08, + 7.379036569339005277e-08, + 7.397040867536295770e-08, + 7.415029060595944810e-08, + 7.433001122539083975e-08, + 7.450957027414861781e-08, + 7.468896749308986803e-08, + 7.486820262334505605e-08, + 7.504727540639351921e-08, + 7.522618558405612118e-08, + 7.540493289844481378e-08, + 7.558351709203836705e-08, + 7.576193790759139261e-08, + 7.594019508820871048e-08, + 7.611828837734667261e-08, + 7.629621751872145829e-08, + 7.647398225646744285e-08, + 7.665158233496321184e-08, + 7.682901749894792211e-08, + 7.700628749351453885e-08, + 7.718339206402482784e-08, + 7.736033095622807244e-08, + 7.753710391617737615e-08, + 7.771371069023044344e-08, + 7.789015102512403928e-08, + 7.806642466788367420e-08, + 7.824253136589826238e-08, + 7.841847086687131129e-08, + 7.859424291881201467e-08, + 7.876984727011047961e-08, + 7.894528366944770285e-08, + 7.912055186587764034e-08, + 7.929565160872077222e-08, + 7.947058264772024806e-08, + 7.964534473287188475e-08, + 7.981993761453610713e-08, + 7.999436104343204526e-08, + 8.016861477055576928e-08, + 8.034269854729526088e-08, + 8.051661212534833052e-08, + 8.069035525671500738e-08, + 8.086392769381341078e-08, + 8.103732918930704816e-08, + 8.121055949626064264e-08, + 8.138361836805086368e-08, + 8.155650555836709473e-08, + 8.172922082128456920e-08, + 8.190176391117510117e-08, + 8.207413458278875786e-08, + 8.224633259116582113e-08, + 8.241835769170867946e-08, + 8.259020964017449578e-08, + 8.276188819262781331e-08, + 8.293339310551247400e-08, + 8.310472413556367265e-08, + 8.327588103988073561e-08, + 8.344686357592865597e-08, + 8.361767150144756696e-08, + 8.378830457460728573e-08, + 8.395876255383090554e-08, + 8.412904519794747339e-08, + 8.429915226610366042e-08, + 8.446908351776482070e-08, + 8.463883871278653898e-08, + 8.480841761132824666e-08, + 8.497781997392371073e-08, + 8.514704556143481758e-08, + 8.531609413504361881e-08, + 8.548496545632364084e-08, + 8.565365928715363311e-08, + 8.582217538979672596e-08, + 8.599051352681466855e-08, + 8.615867346113679589e-08, + 8.632665495606362867e-08, + 8.649445777517753784e-08, + 8.666208168249458841e-08, + 8.682952644229893135e-08, + 8.699679181925274577e-08, + 8.716387757839036264e-08, + 8.733078348503767758e-08, + 8.749750930492423710e-08, + 8.766405480408825179e-08, + 8.783041974894858093e-08, + 8.799660390625676923e-08, + 8.816260704309021759e-08, + 8.832842892692276483e-08, + 8.849406932554015641e-08, + 8.865952800711594652e-08, + 8.882480474012803888e-08, + 8.898989929342868608e-08, + 8.915481143623620452e-08, + 8.931954093808944639e-08, + 8.948408756891809017e-08, + 8.964845109895750062e-08, + 8.981263129881809278e-08, + 8.997662793948631138e-08, + 9.014044079224706116e-08, + 9.030406962879306676e-08, + 9.046751422113949441e-08, + 9.063077434165525252e-08, + 9.079384976309394799e-08, + 9.095674025851083738e-08, + 9.111944560136841477e-08, + 9.128196556546148911e-08, + 9.144429992491750183e-08, + 9.160644845426516297e-08, + 9.176841092835099200e-08, + 9.193018712240784805e-08, + 9.209177681199543909e-08, + 9.225317977306740957e-08, + 9.241439578188927090e-08, + 9.257542461510632289e-08, + 9.273626604974496399e-08, + 9.289691986313553190e-08, + 9.305738583302010174e-08, + 9.321766373746963565e-08, + 9.337775335491274219e-08, + 9.353765446416767829e-08, + 9.369736684435960478e-08, + 9.385689027502567136e-08, + 9.401622453604092767e-08, + 9.417536940761731752e-08, + 9.433432467037263258e-08, + 9.449309010524861494e-08, + 9.465166549357739621e-08, + 9.481005061703743862e-08, + 9.496824525764650725e-08, + 9.512624919782928713e-08, + 9.528406222033507539e-08, + 9.544168410831299523e-08, + 9.559911464521576494e-08, + 9.575635361494027898e-08, + 9.591340080167286561e-08, + 9.607025598999284988e-08, + 9.622691896486597596e-08, + 9.638338951156985493e-08, + 9.653966741579871899e-08, + 9.669575246358872369e-08, + 9.685164444131954941e-08, + 9.700734313578035076e-08, + 9.716284833408811059e-08, + 9.731815982375546877e-08, + 9.747327739264670297e-08, + 9.762820082896980091e-08, + 9.778292992134345547e-08, + 9.793746445871760230e-08, + 9.809180423044421332e-08, + 9.824594902619984612e-08, + 9.839989863605036258e-08, + 9.855365285044383495e-08, + 9.870721146016787659e-08, + 9.886057425641416203e-08, + 9.901374103070073819e-08, + 9.916671157493507541e-08, + 9.931948568141646289e-08, + 9.947206314275495834e-08, + 9.962444375201112183e-08, + 9.977662730253472228e-08, + 9.992861358810410079e-08, + 1.000804024028465893e-07, + 1.002319935412390266e-07, + 1.003833867981717494e-07, + 1.005345819688709294e-07, + 1.006855788489699365e-07, + 1.008363772344310405e-07, + 1.009869769216098525e-07, + 1.011373777072487994e-07, + 1.012875793884349182e-07, + 1.014375817626624838e-07, + 1.015873846277572252e-07, + 1.017369877819384244e-07, + 1.018863910238216689e-07, + 1.020355941523380658e-07, + 1.021845969668721497e-07, + 1.023333992671106739e-07, + 1.024820008531446117e-07, + 1.026304015254603285e-07, + 1.027786010848693846e-07, + 1.029265993326086430e-07, + 1.030743960702693314e-07, + 1.032219910997898150e-07, + 1.033693842235554146e-07, + 1.035165752442501493e-07, + 1.036635639649915602e-07, + 1.038103501892370074e-07, + 1.039569337208581295e-07, + 1.041033143640599654e-07, + 1.042494919234474591e-07, + 1.043954662040227075e-07, + 1.045412370111119297e-07, + 1.046868041504948650e-07, + 1.048321674282601151e-07, + 1.049773266509033077e-07, + 1.051222816253195919e-07, + 1.052670321587346187e-07, + 1.054115780588019891e-07, + 1.055559191335340490e-07, + 1.057000551912959999e-07, + 1.058439860409017852e-07, + 1.059877114914692482e-07, + 1.061312313525527052e-07, + 1.062745454340661706e-07, + 1.064176535462842435e-07, + 1.065605554999035567e-07, + 1.067032511059686755e-07, + 1.068457401759332157e-07, + 1.069880225216042309e-07, + 1.071300979552067589e-07, + 1.072719662893053787e-07, + 1.074136273368694584e-07, + 1.075550809112704420e-07, + 1.076963268262158470e-07, + 1.078373648958442647e-07, + 1.079781949346565119e-07, + 1.081188167575109196e-07, + 1.082592301797167314e-07, + 1.083994350168934168e-07, + 1.085394310850987450e-07, + 1.086792182007544714e-07, + 1.088187961806482165e-07, + 1.089581648419917129e-07, + 1.090973240023485691e-07, + 1.092362734796952958e-07, + 1.093750130923799469e-07, + 1.095135426591169840e-07, + 1.096518619990461057e-07, + 1.097899709316619838e-07, + 1.099278692768771286e-07, + 1.100655568549518634e-07, + 1.102030334865528490e-07, + 1.103402989927480018e-07, + 1.104773531949652004e-07, + 1.106141959150536432e-07, + 1.107508269752032077e-07, + 1.108872461980398744e-07, + 1.110234534065560581e-07, + 1.111594484241137842e-07, + 1.112952310745028963e-07, + 1.114308011818693887e-07, + 1.115661585707744869e-07, + 1.117013030661551818e-07, + 1.118362344933191732e-07, + 1.119709526780025084e-07, + 1.121054574462979678e-07, + 1.122397486247219276e-07, + 1.123738260401410122e-07, + 1.125076895198324188e-07, + 1.126413388914769425e-07, + 1.127747739831194835e-07, + 1.129079946232301127e-07, + 1.130410006406298640e-07, + 1.131737918645506484e-07, + 1.133063681246360613e-07, + 1.134387292508757905e-07, + 1.135708750736970957e-07, + 1.137028054238865640e-07, + 1.138345201326503283e-07, + 1.139660190315726823e-07, + 1.140973019526125593e-07, + 1.142283687281595166e-07, + 1.143592191909646885e-07, + 1.144898531742050817e-07, + 1.146202705114112860e-07, + 1.147504710365290963e-07, + 1.148804545839088188e-07, + 1.150102209882712438e-07, + 1.151397700847612736e-07, + 1.152691017088819204e-07, + 1.153982156965491511e-07, + 1.155271118840925363e-07, + 1.156557901081925699e-07, + 1.157842502059702688e-07, + 1.159124920149152416e-07, + 1.160405153729132174e-07, + 1.161683201182712314e-07, + 1.162959060896477580e-07, + 1.164232731261416229e-07, + 1.165504210672285285e-07, + 1.166773497527634231e-07, + 1.168040590230337843e-07, + 1.169305487186934713e-07, + 1.170568186808180859e-07, + 1.171828687508555280e-07, + 1.173086987706819117e-07, + 1.174343085825339626e-07, + 1.175596980290644713e-07, + 1.176848669533430614e-07, + 1.178098151987880429e-07, + 1.179345426092823363e-07, + 1.180590490290476228e-07, + 1.181833343027276836e-07, + 1.183073982753833579e-07, + 1.184312407924313048e-07, + 1.185548616997314202e-07, + 1.186782608435229643e-07, + 1.188014380704269582e-07, + 1.189243932275004727e-07, + 1.190471261621694748e-07, + 1.191696367222846388e-07, + 1.192919247560841305e-07, + 1.194139901121887230e-07, + 1.195358326396556626e-07, + 1.196574521879115024e-07, + 1.197788486068151260e-07, + 1.199000217465892707e-07, + 1.200209714578758230e-07, + 1.201416975917299418e-07, + 1.202621999995834776e-07, + 1.203824785333014586e-07, + 1.205025330451069964e-07, + 1.206223633876672067e-07, + 1.207419694140333080e-07, + 1.208613509776346927e-07, + 1.209805079323630214e-07, + 1.210994401324459620e-07, + 1.212181474325626774e-07, + 1.213366296877759837e-07, + 1.214548867535340969e-07, + 1.215729184857240223e-07, + 1.216907247406060423e-07, + 1.218083053748732732e-07, + 1.219256602455869197e-07, + 1.220427892102291093e-07, + 1.221596921266993449e-07, + 1.222763688532748529e-07, + 1.223928192486676525e-07, + 1.225090431719586195e-07, + 1.226250404826501870e-07, + 1.227408110406673254e-07, + 1.228563547062917118e-07, + 1.229716713402760531e-07, + 1.230867608037118428e-07, + 1.232016229581425460e-07, + 1.233162576655003629e-07, + 1.234306647881045349e-07, + 1.235448441887141517e-07, + 1.236587957304656560e-07, + 1.237725192769242747e-07, + 1.238860146920493697e-07, + 1.239992818401889055e-07, + 1.241123205861311717e-07, + 1.242251307950430550e-07, + 1.243377123325252817e-07, + 1.244500650645511933e-07, + 1.245621888575177801e-07, + 1.246740835782468195e-07, + 1.247857490939206072e-07, + 1.248971852721904570e-07, + 1.250083919810588570e-07, + 1.251193690889586150e-07, + 1.252301164647460283e-07, + 1.253406339776454304e-07, + 1.254509214973297114e-07, + 1.255609788938606292e-07, + 1.256708060376868502e-07, + 1.257804027997206856e-07, + 1.258897690512206185e-07, + 1.259989046638986649e-07, + 1.261078095098475295e-07, + 1.262164834615945769e-07, + 1.263249263920459017e-07, + 1.264331381745296323e-07, + 1.265411186827953227e-07, + 1.266488677909793561e-07, + 1.267563853736547879e-07, + 1.268636713057705441e-07, + 1.269707254627014760e-07, + 1.270775477202490484e-07, + 1.271841379545850913e-07, + 1.272904960423302561e-07, + 1.273966218604971059e-07, + 1.275025152864882889e-07, + 1.276081761981694627e-07, + 1.277136044737565330e-07, + 1.278187999919207123e-07, + 1.279237626317261037e-07, + 1.280284922726306282e-07, + 1.281329887945361839e-07, + 1.282372520777280310e-07, + 1.283412820029233901e-07, + 1.284450784512291696e-07, + 1.285486413041898501e-07, + 1.286519704437300181e-07, + 1.287550657522002119e-07, + 1.288579271123786154e-07, + 1.289605544074178540e-07, + 1.290629475209185545e-07, + 1.291651063368729900e-07, + 1.292670307396838214e-07, + 1.293687206141875228e-07, + 1.294701758455957509e-07, + 1.295713963195679781e-07, + 1.296723819221604588e-07, + 1.297731325398268383e-07, + 1.298736480594634689e-07, + 1.299739283683531617e-07, + 1.300739733542115615e-07, + 1.301737829051579245e-07, + 1.302733569097077859e-07, + 1.303726952568201820e-07, + 1.304717978358422227e-07, + 1.305706645365578483e-07, + 1.306692952491354202e-07, + 1.307676898641701247e-07, + 1.308658482726819615e-07, + 1.309637703660831334e-07, + 1.310614560362244207e-07, + 1.311589051753349362e-07, + 1.312561176760927998e-07, + 1.313530934315745808e-07, + 1.314498323352551924e-07, + 1.315463342810546634e-07, + 1.316425991632804344e-07, + 1.317386268766747387e-07, + 1.318344173163838706e-07, + 1.319299703779530770e-07, + 1.320252859573712913e-07, + 1.321203639510185114e-07, + 1.322152042557116452e-07, + 1.323098067686547479e-07, + 1.324041713874799438e-07, + 1.324982980102435089e-07, + 1.325921865353976014e-07, + 1.326858368618333013e-07, + 1.327792488888272737e-07, + 1.328724225160852327e-07, + 1.329653576437437937e-07, + 1.330580541723198634e-07, + 1.331505120027795673e-07, + 1.332427310364840129e-07, + 1.333347111752109949e-07, + 1.334264523211720154e-07, + 1.335179543769610647e-07, + 1.336092172456199755e-07, + 1.337002408305844507e-07, + 1.337910250357273151e-07, + 1.338815697653097053e-07, + 1.339718749240230240e-07, + 1.340619404169829846e-07, + 1.341517661497035119e-07, + 1.342413520281366318e-07, + 1.343306979586240055e-07, + 1.344198038479362371e-07, + 1.345086696032739321e-07, + 1.345972951322170079e-07, + 1.346856803428131031e-07, + 1.347738251434795861e-07, + 1.348617294430676119e-07, + 1.349493931508610636e-07, + 1.350368161765262333e-07, + 1.351239984301787903e-07, + 1.352109398223366389e-07, + 1.352976402639212415e-07, + 1.353840996662981706e-07, + 1.354703179412267100e-07, + 1.355562950009010952e-07, + 1.356420307579152022e-07, + 1.357275251253014320e-07, + 1.358127780164827999e-07, + 1.358977893453115818e-07, + 1.359825590260727817e-07, + 1.360670869734308211e-07, + 1.361513731025167309e-07, + 1.362354173288352955e-07, + 1.363192195683262768e-07, + 1.364027797373584326e-07, + 1.364860977526882767e-07, + 1.365691735315205089e-07, + 1.366520069914639433e-07, + 1.367345980505267171e-07, + 1.368169466271798444e-07, + 1.368990526402626134e-07, + 1.369809160090673956e-07, + 1.370625366532902531e-07, + 1.371439144930331354e-07, + 1.372250494488412288e-07, + 1.373059414416561836e-07, + 1.373865903928575136e-07, + 1.374669962242194230e-07, + 1.375471588579453238e-07, + 1.376270782166649238e-07, + 1.377067542234096096e-07, + 1.377861868016495045e-07, + 1.378653758752431226e-07, + 1.379443213684962382e-07, + 1.380230232061217837e-07, + 1.381014813132326232e-07, + 1.381796956154015598e-07, + 1.382576660385740648e-07, + 1.383353925091472100e-07, + 1.384128749539235847e-07, + 1.384901133001123272e-07, + 1.385671074753642507e-07, + 1.386438574077298091e-07, + 1.387203630256928724e-07, + 1.387966242581481746e-07, + 1.388726410343961785e-07, + 1.389484132841800804e-07, + 1.390239409376417379e-07, + 1.390992239253612953e-07, + 1.391742621783139583e-07, + 1.392490556279051989e-07, + 1.393236042059704907e-07, + 1.393979078447321630e-07, + 1.394719664768752634e-07, + 1.395457800354595722e-07, + 1.396193484539946707e-07, + 1.396926716663983570e-07, + 1.397657496069937610e-07, + 1.398385822105470374e-07, + 1.399111694122230550e-07, + 1.399835111476216342e-07, + 1.400556073527527710e-07, + 1.401274579640331696e-07, + 1.401990629183229295e-07, + 1.402704221528811820e-07, + 1.403415356054039688e-07, + 1.404124032139843516e-07, + 1.404830249171449173e-07, + 1.405534006538349458e-07, + 1.406235303634068250e-07, + 1.406934139856509914e-07, + 1.407630514607549017e-07, + 1.408324427293353257e-07, + 1.409015877324389028e-07, + 1.409704864115048454e-07, + 1.410391387084175878e-07, + 1.411075445654695694e-07, + 1.411757039253566290e-07, + 1.412436167312305739e-07, + 1.413112829266223379e-07, + 1.413787024555095326e-07, + 1.414458752622719777e-07, + 1.415128012917251854e-07, + 1.415794804890817678e-07, + 1.416459127999851060e-07, + 1.417120981705034476e-07, + 1.417780365471103189e-07, + 1.418437278767163154e-07, + 1.419091721066279673e-07, + 1.419743691845819389e-07, + 1.420393190587453460e-07, + 1.421040216776773749e-07, + 1.421684769903820098e-07, + 1.422326849462689639e-07, + 1.422966454951643201e-07, + 1.423603585873280801e-07, + 1.424238241734148309e-07, + 1.424870422045217870e-07, + 1.425500126321548298e-07, + 1.426127354082275020e-07, + 1.426752104850930354e-07, + 1.427374378155076911e-07, + 1.427994173526575463e-07, + 1.428611490501417125e-07, + 1.429226328619680743e-07, + 1.429838687425826173e-07, + 1.430448566468339856e-07, + 1.431055965300047424e-07, + 1.431660883477714006e-07, + 1.432263320562642444e-07, + 1.432863276119984023e-07, + 1.433460749719223395e-07, + 1.434055740934113463e-07, + 1.434648249342364629e-07, + 1.435238274526111452e-07, + 1.435825816071555838e-07, + 1.436410873569013096e-07, + 1.436993446613155463e-07, + 1.437573534802672491e-07, + 1.438151137740588427e-07, + 1.438726255034024506e-07, + 1.439298886294197637e-07, + 1.439869031136692503e-07, + 1.440436689181131491e-07, + 1.441001860051465322e-07, + 1.441564543375631598e-07, + 1.442124738785855761e-07, + 1.442682445918599211e-07, + 1.443237664414375342e-07, + 1.443790393918038326e-07, + 1.444340634078412274e-07, + 1.444888384548702045e-07, + 1.445433644986209226e-07, + 1.445976415052281838e-07, + 1.446516694412766444e-07, + 1.447054482737333429e-07, + 1.447589779700093218e-07, + 1.448122584979223056e-07, + 1.448652898257000353e-07, + 1.449180719220062361e-07, + 1.449706047559051734e-07, + 1.450228882968959850e-07, + 1.450749225148756229e-07, + 1.451267073801681819e-07, + 1.451782428635206644e-07, + 1.452295289360867017e-07, + 1.452805655694512236e-07, + 1.453313527355984301e-07, + 1.453818904069389759e-07, + 1.454321785563092818e-07, + 1.454822171569400628e-07, + 1.455320061825102729e-07, + 1.455815456070870191e-07, + 1.456308354051675158e-07, + 1.456798755516724143e-07, + 1.457286660219204718e-07, + 1.457772067916667463e-07, + 1.458254978370685576e-07, + 1.458735391347122739e-07, + 1.459213306615935655e-07, + 1.459688723951190991e-07, + 1.460161643131262576e-07, + 1.460632063938560617e-07, + 1.461099986159798512e-07, + 1.461565409585683949e-07, + 1.462028334011173279e-07, + 1.462488759235464108e-07, + 1.462946685061711802e-07, + 1.463402111297510710e-07, + 1.463855037754364502e-07, + 1.464305464248026306e-07, + 1.464753390598513003e-07, + 1.465198816629786001e-07, + 1.465641742170177396e-07, + 1.466082167052073133e-07, + 1.466520091111932590e-07, + 1.466955514190627922e-07, + 1.467388436132886080e-07, + 1.467818856787816877e-07, + 1.468246776008536332e-07, + 1.468672193652461534e-07, + 1.469095109580985866e-07, + 1.469515523659762226e-07, + 1.469933435758620973e-07, + 1.470348845751450547e-07, + 1.470761753516418229e-07, + 1.471172158935684266e-07, + 1.471580061895634542e-07, + 1.471985462286884014e-07, + 1.472388360004002758e-07, + 1.472788754945914860e-07, + 1.473186647015581050e-07, + 1.473582036120028874e-07, + 1.473974922170666362e-07, + 1.474365305082780955e-07, + 1.474753184775992138e-07, + 1.475138561173991507e-07, + 1.475521434204546208e-07, + 1.475901803799701702e-07, + 1.476279669895517853e-07, + 1.476655032432299220e-07, + 1.477027891354430942e-07, + 1.477398246610370537e-07, + 1.477766098152847212e-07, + 1.478131445938618347e-07, + 1.478494289928687870e-07, + 1.478854630088020909e-07, + 1.479212466385892138e-07, + 1.479567798795608902e-07, + 1.479920627294607301e-07, + 1.480270951864551986e-07, + 1.480618772491064835e-07, + 1.480964089164071716e-07, + 1.481306901877550223e-07, + 1.481647210629530212e-07, + 1.481985015422310848e-07, + 1.482320316262204908e-07, + 1.482653113159728836e-07, + 1.482983406129479656e-07, + 1.483311195190124651e-07, + 1.483636480364569180e-07, + 1.483959261679728509e-07, + 1.484279539166754922e-07, + 1.484597312860780434e-07, + 1.484912582801123519e-07, + 1.485225349031259998e-07, + 1.485535611598690418e-07, + 1.485843370555149700e-07, + 1.486148625956350376e-07, + 1.486451377862176882e-07, + 1.486751626336690320e-07, + 1.487049371447914053e-07, + 1.487344613268135196e-07, + 1.487637351873622448e-07, + 1.487927587344872262e-07, + 1.488215319766408733e-07, + 1.488500549226819595e-07, + 1.488783275818911337e-07, + 1.489063499639492148e-07, + 1.489341220789576796e-07, + 1.489616439374148661e-07, + 1.489889155502371497e-07, + 1.490159369287531195e-07, + 1.490427080846936261e-07, + 1.490692290302084571e-07, + 1.490954997778458498e-07, + 1.491215203405688757e-07, + 1.491472907317563939e-07, + 1.491728109651810541e-07, + 1.491980810550412726e-07, + 1.492231010159333329e-07, + 1.492478708628645678e-07, + 1.492723906112576737e-07, + 1.492966602769307261e-07, + 1.493206798761239144e-07, + 1.493444494254752155e-07, + 1.493679689420423905e-07, + 1.493912384432780242e-07, + 1.494142579470495087e-07, + 1.494370274716350211e-07, + 1.494595470357137818e-07, + 1.494818166583809311e-07, + 1.495038363591294500e-07, + 1.495256061578632627e-07, + 1.495471260749015778e-07, + 1.495683961309545364e-07, + 1.495894163471587073e-07, + 1.496101867450416446e-07, + 1.496307073465423753e-07, + 1.496509781740134105e-07, + 1.496709992502006819e-07, + 1.496907705982699582e-07, + 1.497102922417867019e-07, + 1.497295642047181073e-07, + 1.497485865114471559e-07, + 1.497673591867541937e-07, + 1.497858822558324687e-07, + 1.498041557442761402e-07, + 1.498221796780831640e-07, + 1.498399540836629155e-07, + 1.498574789878235377e-07, + 1.498747544177864725e-07, + 1.498917804011650997e-07, + 1.499085569659943042e-07, + 1.499250841406991087e-07, + 1.499413619541134148e-07, + 1.499573904354831526e-07, + 1.499731696144451313e-07, + 1.499886995210518681e-07, + 1.500039801857549123e-07, + 1.500190116394042360e-07, + 1.500337939132684047e-07, + 1.500483270390014100e-07, + 1.500626110486756783e-07, + 1.500766459747602851e-07, + 1.500904318501232322e-07, + 1.501039687080446295e-07, + 1.501172565821998599e-07, + 1.501302955066741910e-07, + 1.501430855159468401e-07, + 1.501556266449033091e-07, + 1.501679189288363904e-07, + 1.501799624034320055e-07, + 1.501917571047869930e-07, + 1.502033030693902880e-07, + 1.502146003341409753e-07, + 1.502256489363363240e-07, + 1.502364489136689564e-07, + 1.502470003042476523e-07, + 1.502573031465657975e-07, + 1.502673574795286476e-07, + 1.502771633424390079e-07, + 1.502867207749956450e-07, + 1.502960298173053042e-07, + 1.503050905098691570e-07, + 1.503139028935935480e-07, + 1.503224670097816830e-07, + 1.503307829001336028e-07, + 1.503388506067552622e-07, + 1.503466701721473865e-07, + 1.503542416392147884e-07, + 1.503615650512550658e-07, + 1.503686404519674690e-07, + 1.503754678854548066e-07, + 1.503820473962092047e-07, + 1.503883790291321975e-07, + 1.503944628295139749e-07, + 1.504002988430470410e-07, + 1.504058871158248112e-07, + 1.504112276943309714e-07, + 1.504163206254554127e-07, + 1.504211659564790111e-07, + 1.504257637350844543e-07, + 1.504301140093498352e-07, + 1.504342168277472494e-07, + 1.504380722391513452e-07, + 1.504416802928286290e-07, + 1.504450410384460691e-07, + 1.504481545260637625e-07, + 1.504510208061382179e-07, + 1.504536399295248698e-07, + 1.504560119474713556e-07, + 1.504581369116253770e-07, + 1.504600148740239530e-07, + 1.504616458871029760e-07, + 1.504630300036964965e-07, + 1.504641672770262152e-07, + 1.504650577607155379e-07, + 1.504657015087794382e-07, + 1.504660985756243246e-07, + 1.504662490160584432e-07, + 1.504661528852749638e-07, + 1.504658102388693174e-07, + 1.504652211328264380e-07, + 1.504643856235227472e-07, + 1.504633037677328255e-07, + 1.504619756226207028e-07, + 1.504604012457460004e-07, + 1.504585806950580007e-07, + 1.504565140289026890e-07, + 1.504542013060153416e-07, + 1.504516425855234109e-07, + 1.504488379269494904e-07, + 1.504457873902033735e-07, + 1.504424910355906295e-07, + 1.504389489238065690e-07, + 1.504351611159369317e-07, + 1.504311276734620159e-07, + 1.504268486582480229e-07, + 1.504223241325567446e-07, + 1.504175541590372790e-07, + 1.504125388007294444e-07, + 1.504072781210650765e-07, + 1.504017721838637139e-07, + 1.503960210533359596e-07, + 1.503900247940834020e-07, + 1.503837834710936116e-07, + 1.503772971497459911e-07, + 1.503705658958072755e-07, + 1.503635897754356878e-07, + 1.503563688551737922e-07, + 1.503489032019560910e-07, + 1.503411928831052128e-07, + 1.503332379663294510e-07, + 1.503250385197271311e-07, + 1.503165946117824021e-07, + 1.503079063113690217e-07, + 1.502989736877459889e-07, + 1.502897968105589465e-07, + 1.502803757498434639e-07, + 1.502707105760183398e-07, + 1.502608013598912405e-07, + 1.502506481726547029e-07, + 1.502402510858865845e-07, + 1.502296101715522073e-07, + 1.502187255020017111e-07, + 1.502075971499706092e-07, + 1.501962251885800001e-07, + 1.501846096913349795e-07, + 1.501727507321267312e-07, + 1.501606483852302245e-07, + 1.501483027253048755e-07, + 1.501357138273936741e-07, + 1.501228817669239249e-07, + 1.501098066197086237e-07, + 1.500964884619407663e-07, + 1.500829273701994367e-07, + 1.500691234214450428e-07, + 1.500550766930216188e-07, + 1.500407872626564019e-07, + 1.500262552084579265e-07, + 1.500114806089172420e-07, + 1.499964635429086269e-07, + 1.499812040896868365e-07, + 1.499657023288888234e-07, + 1.499499583405319635e-07, + 1.499339722050159096e-07, + 1.499177440031211086e-07, + 1.499012738160075046e-07, + 1.498845617252177948e-07, + 1.498676078126728766e-07, + 1.498504121606746533e-07, + 1.498329748519048962e-07, + 1.498152959694241854e-07, + 1.497973755966732601e-07, + 1.497792138174716156e-07, + 1.497608107160185885e-07, + 1.497421663768911861e-07, + 1.497232808850450661e-07, + 1.497041543258146157e-07, + 1.496847867849121312e-07, + 1.496651783484272354e-07, + 1.496453291028274075e-07, + 1.496252391349572151e-07, + 1.496049085320403522e-07, + 1.495843373816741076e-07, + 1.495635257718348173e-07, + 1.495424737908749526e-07, + 1.495211815275216647e-07, + 1.494996490708808082e-07, + 1.494778765104306140e-07, + 1.494558639360281490e-07, + 1.494336114379039949e-07, + 1.494111191066633338e-07, + 1.493883870332881979e-07, + 1.493654153091327319e-07, + 1.493422040259264215e-07, + 1.493187532757747032e-07, + 1.492950631511527959e-07, + 1.492711337449147012e-07, + 1.492469651502834360e-07, + 1.492225574608568821e-07, + 1.491979107706075216e-07, + 1.491730251738770108e-07, + 1.491479007653823471e-07, + 1.491225376402102318e-07, + 1.490969358938238454e-07, + 1.490710956220516782e-07, + 1.490450169210996529e-07, + 1.490186998875417810e-07, + 1.489921446183222803e-07, + 1.489653512107600484e-07, + 1.489383197625394776e-07, + 1.489110503717191898e-07, + 1.488835431367273783e-07, + 1.488557981563586042e-07, + 1.488278155297820822e-07, + 1.487995953565312244e-07, + 1.487711377365120319e-07, + 1.487424427699990177e-07, + 1.487135105576321898e-07, + 1.486843412004250180e-07, + 1.486549347997541908e-07, + 1.486252914573657027e-07, + 1.485954112753753314e-07, + 1.485652943562628666e-07, + 1.485349408028772723e-07, + 1.485043507184318424e-07, + 1.484735242065111361e-07, + 1.484424613710619779e-07, + 1.484111623163965280e-07, + 1.483796271471981857e-07, + 1.483478559685081949e-07, + 1.483158488857396206e-07, + 1.482836060046670255e-07, + 1.482511274314293025e-07, + 1.482184132725349420e-07, + 1.481854636348501734e-07, + 1.481522786256097383e-07, + 1.481188583524080764e-07, + 1.480852029232063129e-07, + 1.480513124463296916e-07, + 1.480171870304614335e-07, + 1.479828267846539865e-07, + 1.479482318183156583e-07, + 1.479134022412221305e-07, + 1.478783381635088092e-07, + 1.478430396956719100e-07, + 1.478075069485710521e-07, + 1.477717400334228790e-07, + 1.477357390618121232e-07, + 1.476995041456785296e-07, + 1.476630353973209852e-07, + 1.476263329294048511e-07, + 1.475893968549481983e-07, + 1.475522272873337982e-07, + 1.475148243402998057e-07, + 1.474771881279443644e-07, + 1.474393187647294719e-07, + 1.474012163654673737e-07, + 1.473628810453342481e-07, + 1.473243129198594336e-07, + 1.472855121049356456e-07, + 1.472464787168098710e-07, + 1.472072128720840830e-07, + 1.471677146877219379e-07, + 1.471279842810375518e-07, + 1.470880217697078886e-07, + 1.470478272717624631e-07, + 1.470074009055840559e-07, + 1.469667427899173160e-07, + 1.469258530438555521e-07, + 1.468847317868501562e-07, + 1.468433791387086713e-07, + 1.468017952195871414e-07, + 1.467599801500042994e-07, + 1.467179340508242824e-07, + 1.466756570432681990e-07, + 1.466331492489141557e-07, + 1.465904107896853718e-07, + 1.465474417878656646e-07, + 1.465042423660838849e-07, + 1.464608126473272051e-07, + 1.464171527549282544e-07, + 1.463732628125784335e-07, + 1.463291429443171415e-07, + 1.462847932745297900e-07, + 1.462402139279641359e-07, + 1.461954050297039432e-07, + 1.461503667051949767e-07, + 1.461050990802279023e-07, + 1.460596022809402462e-07, + 1.460138764338259762e-07, + 1.459679216657207060e-07, + 1.459217381038107472e-07, + 1.458753258756375033e-07, + 1.458286851090798679e-07, + 1.457818159323721705e-07, + 1.457347184740913390e-07, + 1.456873928631633848e-07, + 1.456398392288655999e-07, + 1.455920577008136127e-07, + 1.455440484089776146e-07, + 1.454958114836652070e-07, + 1.454473470555385277e-07, + 1.453986552556015718e-07, + 1.453497362152003766e-07, + 1.453005900660307514e-07, + 1.452512169401272126e-07, + 1.452016169698773304e-07, + 1.451517902880043915e-07, + 1.451017370275781984e-07, + 1.450514573220181399e-07, + 1.450009513050722800e-07, + 1.449502191108471896e-07, + 1.448992608737808410e-07, + 1.448480767286568492e-07, + 1.447966668106066417e-07, + 1.447450312550935773e-07, + 1.446931701979288542e-07, + 1.446410837752589632e-07, + 1.445887721235787903e-07, + 1.445362353797192026e-07, + 1.444834736808483712e-07, + 1.444304871644813542e-07, + 1.443772759684634463e-07, + 1.443238402309890523e-07, + 1.442701800905874459e-07, + 1.442162956861200705e-07, + 1.441621871568015025e-07, + 1.441078546421643529e-07, + 1.440532982820983098e-07, + 1.439985182168179250e-07, + 1.439435145868772784e-07, + 1.438882875331749802e-07, + 1.438328371969337367e-07, + 1.437771637197221085e-07, + 1.437212672434370666e-07, + 1.436651479103141305e-07, + 1.436088058629315238e-07, + 1.435522412441890783e-07, + 1.434954541973315001e-07, + 1.434384448659281741e-07, + 1.433812133938935182e-07, + 1.433237599254703085e-07, + 1.432660846052289108e-07, + 1.432081875780867096e-07, + 1.431500689892756565e-07, + 1.430917289843764158e-07, + 1.430331677092952832e-07, + 1.429743853102645561e-07, + 1.429153819338600301e-07, + 1.428561577269777060e-07, + 1.427967128368469714e-07, + 1.427370474110395473e-07, + 1.426771615974339662e-07, + 1.426170555442620527e-07, + 1.425567294000688483e-07, + 1.424961833137388692e-07, + 1.424354174344754605e-07, + 1.423744319118213889e-07, + 1.423132268956444174e-07, + 1.422518025361334929e-07, + 1.421901589838143906e-07, + 1.421282963895296230e-07, + 1.420662149044614950e-07, + 1.420039146801121460e-07, + 1.419413958683041850e-07, + 1.418786586211997224e-07, + 1.418157030912745883e-07, + 1.417525294313334471e-07, + 1.416891377945156734e-07, + 1.416255283342636943e-07, + 1.415617012043682264e-07, + 1.414976565589262149e-07, + 1.414333945523647365e-07, + 1.413689153394420574e-07, + 1.413042190752255052e-07, + 1.412393059151152119e-07, + 1.411741760148264322e-07, + 1.411088295304042080e-07, + 1.410432666182048921e-07, + 1.409774874349184358e-07, + 1.409114921375515282e-07, + 1.408452808834222485e-07, + 1.407788538301865892e-07, + 1.407122111358036748e-07, + 1.406453529585622050e-07, + 1.405782794570696551e-07, + 1.405109907902442025e-07, + 1.404434871173370940e-07, + 1.403757685979049846e-07, + 1.403078353918266402e-07, + 1.402396876593068549e-07, + 1.401713255608531840e-07, + 1.401027492573026260e-07, + 1.400339589097986991e-07, + 1.399649546798061060e-07, + 1.398957367291142276e-07, + 1.398263052198122153e-07, + 1.397566603143166514e-07, + 1.396868021753479119e-07, + 1.396167309659545718e-07, + 1.395464468494933141e-07, + 1.394759499896290626e-07, + 1.394052405503504926e-07, + 1.393343186959480884e-07, + 1.392631845910414325e-07, + 1.391918384005458545e-07, + 1.391202802896966774e-07, + 1.390485104240480787e-07, + 1.389765289694514389e-07, + 1.389043360920808579e-07, + 1.388319319584136736e-07, + 1.387593167352402817e-07, + 1.386864905896697742e-07, + 1.386134536891068048e-07, + 1.385402062012766024e-07, + 1.384667482942024988e-07, + 1.383930801362297511e-07, + 1.383192018960081248e-07, + 1.382451137424864675e-07, + 1.381708158449343876e-07, + 1.380963083729145667e-07, + 1.380215914963129885e-07, + 1.379466653853144540e-07, + 1.378715302104019198e-07, + 1.377961861423829942e-07, + 1.377206333523536474e-07, + 1.376448720117243372e-07, + 1.375689022922106647e-07, + 1.374927243658230252e-07, + 1.374163384048936863e-07, + 1.373397445820412660e-07, + 1.372629430701997693e-07, + 1.371859340425956926e-07, + 1.371087176727718461e-07, + 1.370312941345666808e-07, + 1.369536636021157182e-07, + 1.368758262498659232e-07, + 1.367977822525533372e-07, + 1.367195317852308976e-07, + 1.366410750232434244e-07, + 1.365624121422299753e-07, + 1.364835433181494426e-07, + 1.364044687272310543e-07, + 1.363251885460305434e-07, + 1.362457029513923484e-07, + 1.361660121204494553e-07, + 1.360861162306543663e-07, + 1.360060154597375432e-07, + 1.359257099857342471e-07, + 1.358451999869872387e-07, + 1.357644856421166816e-07, + 1.356835671300556392e-07, + 1.356024446300204011e-07, + 1.355211183215339360e-07, + 1.354395883844026774e-07, + 1.353578549987428346e-07, + 1.352759183449577876e-07, + 1.351937786037354137e-07, + 1.351114359560822595e-07, + 1.350288905832645671e-07, + 1.349461426668719859e-07, + 1.348631923887753276e-07, + 1.347800399311286570e-07, + 1.346966854763990969e-07, + 1.346131292073242118e-07, + 1.345293713069416011e-07, + 1.344454119585927641e-07, + 1.343612513458784976e-07, + 1.342768896527235888e-07, + 1.341923270633191107e-07, + 1.341075637621536039e-07, + 1.340225999340147702e-07, + 1.339374357639595092e-07, + 1.338520714373496260e-07, + 1.337665071398186642e-07, + 1.336807430573069788e-07, + 1.335947793760318250e-07, + 1.335086162824928378e-07, + 1.334222539634871990e-07, + 1.333356926060825319e-07, + 1.332489323976549124e-07, + 1.331619735258434729e-07, + 1.330748161785819545e-07, + 1.329874605441003480e-07, + 1.328999068108829926e-07, + 1.328121551677318910e-07, + 1.327242058037070469e-07, + 1.326360589081612464e-07, + 1.325477146707398459e-07, + 1.324591732813514173e-07, + 1.323704349302017884e-07, + 1.322814998077668047e-07, + 1.321923681048092446e-07, + 1.321030400123823127e-07, + 1.320135157218002851e-07, + 1.319237954246740846e-07, + 1.318338793128774790e-07, + 1.317437675785841917e-07, + 1.316534604142355820e-07, + 1.315629580125435833e-07, + 1.314722605665236843e-07, + 1.313813682694320900e-07, + 1.312902813148402340e-07, + 1.311989998965691070e-07, + 1.311075242087262879e-07, + 1.310158544457062353e-07, + 1.309239908021600319e-07, + 1.308319334730289756e-07, + 1.307396826535175528e-07, + 1.306472385391106182e-07, + 1.305546013255788734e-07, + 1.304617712089455418e-07, + 1.303687483855253585e-07, + 1.302755330518874067e-07, + 1.301821254048970458e-07, + 1.300885256416792773e-07, + 1.299947339596248858e-07, + 1.299007505564114823e-07, + 1.298065756299676643e-07, + 1.297122093785169558e-07, + 1.296176520005405373e-07, + 1.295229036947811639e-07, + 1.294279646602744787e-07, + 1.293328350963010496e-07, + 1.292375152024207539e-07, + 1.291420051784774099e-07, + 1.290463052245459967e-07, + 1.289504155410085427e-07, + 1.288543363284875543e-07, + 1.287580677878885529e-07, + 1.286616101203659550e-07, + 1.285649635273629362e-07, + 1.284681282105769935e-07, + 1.283711043719634927e-07, + 1.282738922137579291e-07, + 1.281764919384414376e-07, + 1.280789037487824562e-07, + 1.279811278478015738e-07, + 1.278831644387716896e-07, + 1.277850137252544347e-07, + 1.276866759110484510e-07, + 1.275881512002296246e-07, + 1.274894397971352309e-07, + 1.273905419063496934e-07, + 1.272914577327443682e-07, + 1.271921874814245776e-07, + 1.270927313577675947e-07, + 1.269930895674219811e-07, + 1.268932623162732559e-07, + 1.267932498104839446e-07, + 1.266930522564604651e-07, + 1.265926698608768449e-07, + 1.264921028306735562e-07, + 1.263913513730276316e-07, + 1.262904156953916012e-07, + 1.261892960054552439e-07, + 1.260879925111919354e-07, + 1.259865054208031950e-07, + 1.258848349427635773e-07, + 1.257829812858001323e-07, + 1.256809446588800969e-07, + 1.255787252712524256e-07, + 1.254763233323923632e-07, + 1.253737390520399054e-07, + 1.252709726402003806e-07, + 1.251680243071085576e-07, + 1.250648942632702290e-07, + 1.249615827194278275e-07, + 1.248580898865830040e-07, + 1.247544159759996988e-07, + 1.246505611991695451e-07, + 1.245465257678540354e-07, + 1.244423098940435995e-07, + 1.243379137900037675e-07, + 1.242333376682355977e-07, + 1.241285817414816055e-07, + 1.240236462227478398e-07, + 1.239185313252680158e-07, + 1.238132372625519285e-07, + 1.237077642483274575e-07, + 1.236021124965819128e-07, + 1.234962822215604992e-07, + 1.233902736377297621e-07, + 1.232840869598215533e-07, + 1.231777224027966617e-07, + 1.230711801818685834e-07, + 1.229644605125069358e-07, + 1.228575636104004799e-07, + 1.227504896915023566e-07, + 1.226432389719868620e-07, + 1.225358116682965104e-07, + 1.224282079971026473e-07, + 1.223204281753099229e-07, + 1.222124724200817560e-07, + 1.221043409487998616e-07, + 1.219960339791136170e-07, + 1.218875517288977105e-07, + 1.217788944162548940e-07, + 1.216700622595606373e-07, + 1.215610554773819987e-07, + 1.214518742885671191e-07, + 1.213425189121847118e-07, + 1.212329895675295423e-07, + 1.211232864741616031e-07, + 1.210134098518480395e-07, + 1.209033599206140767e-07, + 1.207931369006989485e-07, + 1.206827410126027216e-07, + 1.205721724770485236e-07, + 1.204614315149836549e-07, + 1.203505183476092343e-07, + 1.202394331963362860e-07, + 1.201281762828363501e-07, + 1.200167478290000566e-07, + 1.199051480569377614e-07, + 1.197933771890270857e-07, + 1.196814354478279482e-07, + 1.195693230561773796e-07, + 1.194570402371235864e-07, + 1.193445872139329128e-07, + 1.192319642101324302e-07, + 1.191191714494471641e-07, + 1.190062091558451726e-07, + 1.188930775535408413e-07, + 1.187797768669316341e-07, + 1.186663073206933315e-07, + 1.185526691396917537e-07, + 1.184388625490430324e-07, + 1.183248877740669710e-07, + 1.182107450403367283e-07, + 1.180964345736376980e-07, + 1.179819565999659334e-07, + 1.178673113455805312e-07, + 1.177524990369138065e-07, + 1.176375199006677483e-07, + 1.175223741637492483e-07, + 1.174070620532753022e-07, + 1.172915837966177829e-07, + 1.171759396213375975e-07, + 1.170601297552329810e-07, + 1.169441544263408464e-07, + 1.168280138628734955e-07, + 1.167117082933140293e-07, + 1.165952379463295664e-07, + 1.164786030508203583e-07, + 1.163618038359196302e-07, + 1.162448405309514939e-07, + 1.161277133654834378e-07, + 1.160104225692802957e-07, + 1.158929683723347268e-07, + 1.157753510048705772e-07, + 1.156575706972998802e-07, + 1.155396276802749483e-07, + 1.154215221846396690e-07, + 1.153032544414882018e-07, + 1.151848246820945283e-07, + 1.150662331379621896e-07, + 1.149474800408281240e-07, + 1.148285656225954601e-07, + 1.147094901154325671e-07, + 1.145902537516828060e-07, + 1.144708567639155234e-07, + 1.143512993849280766e-07, + 1.142315818476992335e-07, + 1.141117043854432770e-07, + 1.139916672315660914e-07, + 1.138714706196933130e-07, + 1.137511147836743540e-07, + 1.136305999575396662e-07, + 1.135099263755535356e-07, + 1.133890942721629164e-07, + 1.132681038820528845e-07, + 1.131469554401017985e-07, + 1.130256491813846343e-07, + 1.129041853412036109e-07, + 1.127825641550418154e-07, + 1.126607858586189350e-07, + 1.125388506878444980e-07, + 1.124167588788185756e-07, + 1.122945106678797184e-07, + 1.121721062915373395e-07, + 1.120495459865282272e-07, + 1.119268299897728041e-07, + 1.118039585384043231e-07, + 1.116809318697740949e-07, + 1.115577502214048487e-07, + 1.114344138310457626e-07, + 1.113109229366220917e-07, + 1.111872777762897090e-07, + 1.110634785883902260e-07, + 1.109395256114539836e-07, + 1.108154190842323721e-07, + 1.106911592456495101e-07, + 1.105667463348572622e-07, + 1.104421805911923978e-07, + 1.103174622541725674e-07, + 1.101925915635483821e-07, + 1.100675687592320510e-07, + 1.099423940813515383e-07, + 1.098170677702320876e-07, + 1.096915900663727032e-07, + 1.095659612105027692e-07, + 1.094401814435116267e-07, + 1.093142510065072042e-07, + 1.091881701407658439e-07, + 1.090619390877873594e-07, + 1.089355580892501824e-07, + 1.088090273870134535e-07, + 1.086823472231491572e-07, + 1.085555178398945549e-07, + 1.084285394797096779e-07, + 1.083014123852285169e-07, + 1.081741367992596439e-07, + 1.080467129648391387e-07, + 1.079191411251541046e-07, + 1.077914215236019734e-07, + 1.076635544037678348e-07, + 1.075355400094048482e-07, + 1.074073785844890352e-07, + 1.072790703731469247e-07, + 1.071506156197078173e-07, + 1.070220145687026869e-07, + 1.068932674648160056e-07, + 1.067643745529444405e-07, + 1.066353360781476199e-07, + 1.065061522856805720e-07, + 1.063768234209973778e-07, + 1.062473497297040019e-07, + 1.061177314576166317e-07, + 1.059879688507063428e-07, + 1.058580621551686743e-07, + 1.057280116173231498e-07, + 1.055978174837226903e-07, + 1.054674800010804251e-07, + 1.053369994162730269e-07, + 1.052063759763942340e-07, + 1.050756099286809992e-07, + 1.049447015205641403e-07, + 1.048136509996688293e-07, + 1.046824586137659145e-07, + 1.045511246108320601e-07, + 1.044196492389977992e-07, + 1.042880327465815076e-07, + 1.041562753820951874e-07, + 1.040243773941925073e-07, + 1.038923390317303575e-07, + 1.037601605437130383e-07, + 1.036278421793518572e-07, + 1.034953841880158682e-07, + 1.033627868192363188e-07, + 1.032300503227403594e-07, + 1.030971749483989509e-07, + 1.029641609462946136e-07, + 1.028310085666422168e-07, + 1.026977180598455845e-07, + 1.025642896764998376e-07, + 1.024307236673163259e-07, + 1.022970202832360509e-07, + 1.021631797753268971e-07, + 1.020292023948408066e-07, + 1.018950883932148379e-07, + 1.017608380220218261e-07, + 1.016264515330286961e-07, + 1.014919291781430862e-07, + 1.013572712094708402e-07, + 1.012224778792699372e-07, + 1.010875494399507692e-07, + 1.009524861441120340e-07, + 1.008172882444897153e-07, + 1.006819559940173140e-07, + 1.005464896457756090e-07, + 1.004108894529920614e-07, + 1.002751556691017746e-07, + 1.001392885476419192e-07, + 1.000032883423663081e-07, + 9.986715530716896431e-08, + 9.973088969608782718e-08, + 9.959449176336131814e-08, + 9.945796176334815051e-08, + 9.932129995059559513e-08, + 9.918450657978798332e-08, + 9.904758190577946328e-08, + 9.891052618359932052e-08, + 9.877333966840155290e-08, + 9.863602261552536734e-08, + 9.849857528043955356e-08, + 9.836099791880219991e-08, + 9.822329078641271690e-08, + 9.808545413921294891e-08, + 9.794748823332357016e-08, + 9.780939332499133043e-08, + 9.767116967065178843e-08, + 9.753281752687710019e-08, + 9.739433715037582048e-08, + 9.725572879804879382e-08, + 9.711699272691126709e-08, + 9.697812919414557767e-08, + 9.683913845710967668e-08, + 9.670002077325488739e-08, + 9.656077640024687213e-08, + 9.642140559585467093e-08, + 9.628190861801494370e-08, + 9.614228572483120263e-08, + 9.600253717452084610e-08, + 9.586266322547817007e-08, + 9.572266413622292398e-08, + 9.558254016544484622e-08, + 9.544229157195218038e-08, + 9.530191861473402481e-08, + 9.516142155290825335e-08, + 9.502080064572172705e-08, + 9.488005615260617193e-08, + 9.473918833309747259e-08, + 9.459819744689941143e-08, + 9.445708375385890618e-08, + 9.431584751394352384e-08, + 9.417448898730339347e-08, + 9.403300843419222038e-08, + 9.389140611502111243e-08, + 9.374968229036125346e-08, + 9.360783722088892558e-08, + 9.346587116745102186e-08, + 9.332378439101067740e-08, + 9.318157715268179919e-08, + 9.303924971373639819e-08, + 9.289680233554893664e-08, + 9.275423527966154962e-08, + 9.261154880772477917e-08, + 9.246874318156748102e-08, + 9.232581866311476823e-08, + 9.218277551445070491e-08, + 9.203961399779571422e-08, + 9.189633437548257032e-08, + 9.175293691001966111e-08, + 9.160942186400852164e-08, + 9.146578950020264997e-08, + 9.132204008150681897e-08, + 9.117817387092336907e-08, + 9.103419113161654316e-08, + 9.089009212686008957e-08, + 9.074587712007011113e-08, + 9.060154637481262225e-08, + 9.045710015474810799e-08, + 9.031253872369735439e-08, + 9.016786234558181206e-08, + 9.002307128448666046e-08, + 8.987816580460932411e-08, + 8.973314617026362841e-08, + 8.958801264591481913e-08, + 8.944276549612592140e-08, + 8.929740498562288185e-08, + 8.915193137924046438e-08, + 8.900634494192093987e-08, + 8.886064593877490057e-08, + 8.871483463499613321e-08, + 8.856891129593288895e-08, + 8.842287618703330265e-08, + 8.827672957388181529e-08, + 8.813047172220400473e-08, + 8.798410289781229616e-08, + 8.783762336667110428e-08, + 8.769103339483773943e-08, + 8.754433324852610721e-08, + 8.739752319405339828e-08, + 8.725060349784518382e-08, + 8.710357442647097765e-08, + 8.695643624658989383e-08, + 8.680918922501662252e-08, + 8.666183362866565820e-08, + 8.651436972455251726e-08, + 8.636679777985845661e-08, + 8.621911806181443017e-08, + 8.607133083782990407e-08, + 8.592343637540607544e-08, + 8.577543494214119288e-08, + 8.562732680579212511e-08, + 8.547911223418788427e-08, + 8.533079149530216630e-08, + 8.518236485719220576e-08, + 8.503383258806496352e-08, + 8.488519495622300931e-08, + 8.473645223006832010e-08, + 8.458760467813982749e-08, + 8.443865256905685183e-08, + 8.428959617158789713e-08, + 8.414043575459301313e-08, + 8.399117158702317328e-08, + 8.384180393798983727e-08, + 8.369233307664475184e-08, + 8.354275927231059230e-08, + 8.339308279439359905e-08, + 8.324330391238945391e-08, + 8.309342289594451788e-08, + 8.294344001476852065e-08, + 8.279335553869602334e-08, + 8.264316973769310223e-08, + 8.249288288176810580e-08, + 8.234249524110367280e-08, + 8.219200708593726090e-08, + 8.204141868662834021e-08, + 8.189073031365963738e-08, + 8.173994223757892854e-08, + 8.158905472906788719e-08, + 8.143806805887936408e-08, + 8.128698249791789502e-08, + 8.113579831712000457e-08, + 8.098451578758688576e-08, + 8.083313518049364850e-08, + 8.068165676709712814e-08, + 8.053008081879704390e-08, + 8.037840760704837066e-08, + 8.022663740342325178e-08, + 8.007477047961676953e-08, + 7.992280710735917125e-08, + 7.977074755854637865e-08, + 7.961859210512043704e-08, + 7.946634101913886612e-08, + 7.931399457277328360e-08, + 7.916155303825257453e-08, + 7.900901668793240099e-08, + 7.885638579423588328e-08, + 7.870366062969474723e-08, + 7.855084146695126968e-08, + 7.839792857870267874e-08, + 7.824492223777092813e-08, + 7.809182271703730355e-08, + 7.793863028951291178e-08, + 7.778534522828030150e-08, + 7.763196780649424421e-08, + 7.747849829744973503e-08, + 7.732493697446074795e-08, + 7.717128411100110795e-08, + 7.701753998058193591e-08, + 7.686370485682129064e-08, + 7.670977901344397032e-08, + 7.655576272422423194e-08, + 7.640165626305428180e-08, + 7.624745990388658466e-08, + 7.609317392077281403e-08, + 7.593879858786900050e-08, + 7.578433417937679535e-08, + 7.562978096961508450e-08, + 7.547513923295317879e-08, + 7.532040924388389709e-08, + 7.516559127696292395e-08, + 7.501068560681464626e-08, + 7.485569250817233435e-08, + 7.470061225581744676e-08, + 7.454544512465182662e-08, + 7.439019138963794606e-08, + 7.423485132579955478e-08, + 7.407942520828461190e-08, + 7.392391331227497108e-08, + 7.376831591306379144e-08, + 7.361263328599567610e-08, + 7.345686570650637684e-08, + 7.330101345012851165e-08, + 7.314507679243207380e-08, + 7.298905600909588708e-08, + 7.283295137584189457e-08, + 7.267676316850641523e-08, + 7.252049166298119576e-08, + 7.236413713521902216e-08, + 7.220769986127305387e-08, + 7.205118011723620788e-08, + 7.189457817931511540e-08, + 7.173789432376805017e-08, + 7.158112882690556373e-08, + 7.142428196515646137e-08, + 7.126735401497386087e-08, + 7.111034525290786530e-08, + 7.095325595557857703e-08, + 7.079608639965001181e-08, + 7.063883686190062750e-08, + 7.048150761913188417e-08, + 7.032409894823287011e-08, + 7.016661112618051357e-08, + 7.000904442997903315e-08, + 6.985139913673284878e-08, + 6.969367552358556893e-08, + 6.953587386777406830e-08, + 6.937799444656657509e-08, + 6.922003753733620396e-08, + 6.906200341750075059e-08, + 6.890389236452177841e-08, + 6.874570465597126955e-08, + 6.858744056943655863e-08, + 6.842910038259557306e-08, + 6.827068437318737222e-08, + 6.811219281898599532e-08, + 6.795362599787331942e-08, + 6.779498418774495941e-08, + 6.763626766657698509e-08, + 6.747747671242503439e-08, + 6.731861160336405497e-08, + 6.715967261756088431e-08, + 6.700066003321363395e-08, + 6.684157412859191028e-08, + 6.668241518204284972e-08, + 6.652318347192992049e-08, + 6.636387927670632341e-08, + 6.620450287484752035e-08, + 6.604505454493925953e-08, + 6.588553456554686774e-08, + 6.572594321535796215e-08, + 6.556628077308721203e-08, + 6.540654751748250624e-08, + 6.524674372739227910e-08, + 6.508686968166938538e-08, + 6.492692565924022611e-08, + 6.476691193910278987e-08, + 6.460682880026497816e-08, + 6.444667652181968693e-08, + 6.428645538288278793e-08, + 6.412616566263362742e-08, + 6.396580764032112746e-08, + 6.380538159520170110e-08, + 6.364488780661518086e-08, + 6.348432655391394595e-08, + 6.332369811653971110e-08, + 6.316300277395981377e-08, + 6.300224080567457277e-08, + 6.284141249125793260e-08, + 6.268051811029451831e-08, + 6.251955794245573615e-08, + 6.235853226743640486e-08, + 6.219744136495502041e-08, + 6.203628551482870516e-08, + 6.187506499684167955e-08, + 6.171378009089678833e-08, + 6.155243107688386634e-08, + 6.139101823475554800e-08, + 6.122954184452567906e-08, + 6.106800218620776120e-08, + 6.090639953989015261e-08, + 6.074473418566647898e-08, + 6.058300640371087382e-08, + 6.042121647421585392e-08, + 6.025936467739827502e-08, + 6.009745129354137908e-08, + 5.993547660293003592e-08, + 5.977344088592827329e-08, + 5.961134442291598751e-08, + 5.944918749428797083e-08, + 5.928697038053005163e-08, + 5.912469336208670593e-08, + 5.896235671950717710e-08, + 5.879996073334644585e-08, + 5.863750568417219177e-08, + 5.847499185263415076e-08, + 5.831241951936630259e-08, + 5.814978896505538790e-08, + 5.798710047044812788e-08, + 5.782435431625244562e-08, + 5.766155078328448590e-08, + 5.749869015233417521e-08, + 5.733577270425678727e-08, + 5.717279871990185190e-08, + 5.700976848018967907e-08, + 5.684668226604826164e-08, + 5.668354035841247458e-08, + 5.652034303830128075e-08, + 5.635709058668272840e-08, + 5.619378328462247968e-08, + 5.603042141318356303e-08, + 5.586700525343387729e-08, + 5.570353508651574113e-08, + 5.554001119354681659e-08, + 5.537643385569051211e-08, + 5.521280335416148163e-08, + 5.504911997012799081e-08, + 5.488538398485806327e-08, + 5.472159567958611926e-08, + 5.455775533558935419e-08, + 5.439386323418758644e-08, + 5.422991965667896885e-08, + 5.406592488441850476e-08, + 5.390187919875182058e-08, + 5.373778288107274418e-08, + 5.357363621275875835e-08, + 5.340943947524863004e-08, + 5.324519294997767849e-08, + 5.308089691837779513e-08, + 5.291655166194807816e-08, + 5.275215746215412163e-08, + 5.258771460049913979e-08, + 5.242322335853082934e-08, + 5.225868401774102251e-08, + 5.209409685971452665e-08, + 5.192946216599375774e-08, + 5.176478021815603217e-08, + 5.160005129781412259e-08, + 5.143527568655057317e-08, + 5.127045366599607000e-08, + 5.110558551776512613e-08, + 5.094067152349775822e-08, + 5.077571196486646139e-08, + 5.061070712351156994e-08, + 5.044565728111982634e-08, + 5.028056271935137091e-08, + 5.011542371991857548e-08, + 4.995024056452113946e-08, + 4.978501353485282642e-08, + 4.961974291264352454e-08, + 4.945442897959507070e-08, + 4.928907201746631763e-08, + 4.912367230797239002e-08, + 4.895823013285557715e-08, + 4.879274577388512780e-08, + 4.862721951279287567e-08, + 4.846165163135035918e-08, + 4.829604241130499613e-08, + 4.813039213442181997e-08, + 4.796470108249116264e-08, + 4.779896953726215587e-08, + 4.763319778052270961e-08, + 4.746738609402624369e-08, + 4.730153475957040233e-08, + 4.713564405893260684e-08, + 4.696971427387559441e-08, + 4.680374568619170207e-08, + 4.663773857763600401e-08, + 4.647169323000551578e-08, + 4.630560992507487938e-08, + 4.613948894459460956e-08, + 4.597333057036327038e-08, + 4.580713508412633411e-08, + 4.564090276766149338e-08, + 4.547463390271459104e-08, + 4.530832877104086010e-08, + 4.514198765441232866e-08, + 4.497561083455318728e-08, + 4.480919859321735873e-08, + 4.464275121211679793e-08, + 4.447626897299995502e-08, + 4.430975215758703024e-08, + 4.414320104757588999e-08, + 4.397661592468518604e-08, + 4.380999707058893550e-08, + 4.364334476699590368e-08, + 4.347665929558337672e-08, + 4.330994093799717478e-08, + 4.314318997592381535e-08, + 4.297640669098788321e-08, + 4.280959136483190305e-08, + 4.264274427908645508e-08, + 4.247586571534116413e-08, + 4.230895595522367888e-08, + 4.214201528029762422e-08, + 4.197504397213496303e-08, + 4.180804231231560574e-08, + 4.164101058236099765e-08, + 4.147394906381413707e-08, + 4.130685803817352000e-08, + 4.113973778695077147e-08, + 4.097258859160488133e-08, + 4.080541073362146803e-08, + 4.063820449444753724e-08, + 4.047097015549001937e-08, + 4.030370799819616493e-08, + 4.013641830391432673e-08, + 3.996910135404657134e-08, + 3.980175742994640656e-08, + 3.963438681292529293e-08, + 3.946698978432508491e-08, + 3.929956662541612224e-08, + 3.913211761746877113e-08, + 3.896464304175344410e-08, + 3.879714317947466379e-08, + 3.862961831185035976e-08, + 3.846206872004606467e-08, + 3.829449468521832466e-08, + 3.812689648852145582e-08, + 3.795927441104109176e-08, + 3.779162873387447309e-08, + 3.762395973805659674e-08, + 3.745626770464043923e-08, + 3.728855291463038519e-08, + 3.712081564898938081e-08, + 3.695305618868241044e-08, + 3.678527481460989204e-08, + 3.661747180769484213e-08, + 3.644964744878077525e-08, + 3.628180201870358265e-08, + 3.611393579829897689e-08, + 3.594604906829922666e-08, + 3.577814210948624470e-08, + 3.561021520255315088e-08, + 3.544226862818266245e-08, + 3.527430266704780210e-08, + 3.510631759974534632e-08, + 3.493831370687558546e-08, + 3.477029126896909509e-08, + 3.460225056656618506e-08, + 3.443419188015163159e-08, + 3.426611549016020289e-08, + 3.409802167702114821e-08, + 3.392991072109124917e-08, + 3.376178290273540037e-08, + 3.359363850225978646e-08, + 3.342547779991173649e-08, + 3.325730107595960980e-08, + 3.308910861055371048e-08, + 3.292090068388605238e-08, + 3.275267757605151190e-08, + 3.258443956712765417e-08, + 3.241618693717413754e-08, + 3.224791996616683026e-08, + 3.207963893407710734e-08, + 3.191134412080671502e-08, + 3.174303580622973203e-08, + 3.157471427020092738e-08, + 3.140637979248798450e-08, + 3.123803265285297523e-08, + 3.106967313097742389e-08, + 3.090130150654343710e-08, + 3.073291805916691398e-08, + 3.056452306839673875e-08, + 3.039611681379563274e-08, + 3.022769957479968583e-08, + 3.005927163087263561e-08, + 2.989083326140218519e-08, + 2.972238474570708395e-08, + 2.955392636310996567e-08, + 2.938545839283458960e-08, + 2.921698111407799374e-08, + 2.904849480601813138e-08, + 2.887999974770997722e-08, + 2.871149621824002154e-08, + 2.854298449658552705e-08, + 2.837446486171013780e-08, + 2.820593759248976041e-08, + 2.803740296779290653e-08, + 2.786886126641407499e-08, + 2.770031276708070673e-08, + 2.753175774849686328e-08, + 2.736319648927657250e-08, + 2.719462926802429344e-08, + 2.702605636326824887e-08, + 2.685747805346005471e-08, + 2.668889461704780972e-08, + 2.652030633237240341e-08, + 2.635171347774102597e-08, + 2.618311633143395113e-08, + 2.601451517160074485e-08, + 2.584591027641490507e-08, + 2.567730192393337668e-08, + 2.550869039217673179e-08, + 2.534007595912927560e-08, + 2.517145890267176020e-08, + 2.500283950066258730e-08, + 2.483421803087039625e-08, + 2.466559477103303213e-08, + 2.449696999879076249e-08, + 2.432834399176664620e-08, + 2.415971702749985941e-08, + 2.399108938344524887e-08, + 2.382246133704686495e-08, + 2.365383316563365750e-08, + 2.348520514650098291e-08, + 2.331657755687978997e-08, + 2.314795067390759580e-08, + 2.297932477470831532e-08, + 2.281070013628910857e-08, + 2.264207703561345386e-08, + 2.247345574960080693e-08, + 2.230483655505969198e-08, + 2.213621972876841134e-08, + 2.196760554740846405e-08, + 2.179899428760787359e-08, + 2.163038622594862586e-08, + 2.146178163889935985e-08, + 2.129318080289659349e-08, + 2.112458399426990679e-08, + 2.095599148932335959e-08, + 2.078740356426791750e-08, + 2.061882049522908516e-08, + 2.045024255829019092e-08, + 2.028167002942563996e-08, + 2.011310318458943922e-08, + 1.994454229961079392e-08, + 1.977598765026808732e-08, + 1.960743951228793769e-08, + 1.943889816127881877e-08, + 1.927036387281129625e-08, + 1.910183692235146625e-08, + 1.893331758530481566e-08, + 1.876480613702313085e-08, + 1.859630285273746621e-08, + 1.842780800763903577e-08, + 1.825932187680510119e-08, + 1.809084473527953912e-08, + 1.792237685800596861e-08, + 1.775391851983464646e-08, + 1.758546999556667512e-08, + 1.741703155988653450e-08, + 1.724860348744350630e-08, + 1.708018605278437133e-08, + 1.691177953035292640e-08, + 1.674338419457131603e-08, + 1.657500031969830337e-08, + 1.640662817998506463e-08, + 1.623826804957059711e-08, + 1.606992020248873699e-08, + 1.590158491274197692e-08, + 1.573326245419728428e-08, + 1.556495310067445397e-08, + 1.539665712587153649e-08, + 1.522837480344614309e-08, + 1.506010640694824240e-08, + 1.489185220982687703e-08, + 1.472361248547463954e-08, + 1.455538750716007844e-08, + 1.438717754810932443e-08, + 1.421898288143845515e-08, + 1.405080378015318909e-08, + 1.388264051723029179e-08, + 1.371449336547578050e-08, + 1.354636259768074350e-08, + 1.337824848651662735e-08, + 1.321015130454256235e-08, + 1.304207132427898826e-08, + 1.287400881810314334e-08, + 1.270596405832320122e-08, + 1.253793731718510674e-08, + 1.236992886676807159e-08, + 1.220193897914031259e-08, + 1.203396792621745158e-08, + 1.186601597985854779e-08, + 1.169808341179142990e-08, + 1.153017049369402113e-08, + 1.136227749712708118e-08, + 1.119440469353369670e-08, + 1.102655235432056665e-08, + 1.085872075071648993e-08, + 1.069091015392800103e-08, + 1.052312083503478630e-08, + 1.035535306499673980e-08, + 1.018760711472787517e-08, + 1.001988325499189907e-08, + 9.852181756476020517e-09, + 9.684502889797897501e-09, + 9.516846925401483404e-09, + 9.349214133712225922e-09, + 9.181604784995768072e-09, + 9.014019149439129358e-09, + 8.846457497150310369e-09, + 8.678920098091028117e-09, + 8.511407222157981559e-09, + 8.343919139115519102e-09, + 8.176456118639996987e-09, + 8.009018430326476146e-09, + 7.841606343621675901e-09, + 7.674220127905176634e-09, + 7.506860052414740264e-09, + 7.339526386334992283e-09, + 7.172219398693051414e-09, + 7.004939358432405937e-09, + 6.837686534419820649e-09, + 6.670461195341016983e-09, + 6.503263609856182131e-09, + 6.336094046458522816e-09, + 6.168952773555420813e-09, + 6.001840059468031758e-09, + 5.834756172364194191e-09, + 5.667701380339437004e-09, + 5.500675951349916599e-09, + 5.333680153256519678e-09, + 5.166714253831778476e-09, + 4.999778520692773172e-09, + 4.832873221382263423e-09, + 4.665998623294063436e-09, + 4.499154993754382774e-09, + 4.332342599954409480e-09, + 4.165561708957491663e-09, + 3.998812587743168317e-09, + 3.832095503139990679e-09, + 3.665410721914111616e-09, + 3.498758510665046392e-09, + 3.332139135899458834e-09, + 3.165552864030655512e-09, + 2.998999961311518758e-09, + 2.832480693915608009e-09, + 2.665995327870032439e-09, + 2.499544129099531420e-09, + 2.333127363433460886e-09, + 2.166745296538658942e-09, + 2.000398194000600139e-09, + 1.834086321248829278e-09, + 1.667809943638086532e-09, + 1.501569326381204068e-09, + 1.335364734556111648e-09, + 1.169196433149860009e-09, + 1.003064686991555128e-09, + 8.369697608334285370e-10, + 6.709119192837430505e-10, + 5.048914268064171223e-10, + 3.389085477946420582e-10, + 1.729635464668244789e-10, + 7.056686947612061798e-12, +-1.588117667621274235e-10, +-3.246415508153121276e-10, +-4.904324014376603473e-10, +-6.561840550316836775e-10, +-8.218962480883151585e-10, +-9.875687172612821452e-10, +-1.153201199286163065e-09, +-1.318793431047356374e-09, +-1.484345149571078162e-09, +-1.649856091981421700e-09, +-1.815325995567274696e-09, +-1.980754597701443364e-09, +-2.146141635907550865e-09, +-2.311486847860455238e-09, +-2.476789971312770121e-09, +-2.642050744198660821e-09, +-2.807268904553063921e-09, +-2.972444190541574561e-09, +-3.137576340490392441e-09, +-3.302665092805529021e-09, +-3.467710186076547969e-09, +-3.632711359003169421e-09, +-3.797668350395661651e-09, +-3.962580899241626812e-09, +-4.127448744625329724e-09, +-4.292271625794390973e-09, +-4.457049282115972807e-09, +-4.621781453069819232e-09, +-4.786467878315013635e-09, +-4.951108297609250906e-09, +-5.115702450882954486e-09, +-5.280250078143983500e-09, +-5.444750919617842355e-09, +-5.609204715593452914e-09, +-5.773611206526720817e-09, +-5.937970133033535880e-09, +-6.102281235816503742e-09, +-6.266544255768410449e-09, +-6.430758933899134421e-09, +-6.594925011335864838e-09, +-6.759042229389837734e-09, +-6.923110329475742144e-09, +-7.087129053178370177e-09, +-7.251098142208869090e-09, +-7.415017338397749956e-09, +-7.578886383761451716e-09, +-7.742705020421999609e-09, +-7.906472990680720196e-09, +-8.070190036937884075e-09, +-8.233855901759216164e-09, +-8.397470327868942422e-09, +-8.561033058106146145e-09, +-8.724543835491165751e-09, +-8.888002403138016211e-09, +-9.051408504357404465e-09, +-9.214761882583803522e-09, +-9.378062281368547163e-09, +-9.541309444482792414e-09, +-9.704503115764006409e-09, +-9.867643039255680503e-09, +-1.003072895912694982e-08, +-1.019376061967320041e-08, +-1.035673776538215602e-08, +-1.051966014085388640e-08, +-1.068252749087430727e-08, +-1.084533956033504972e-08, +-1.100809609429979672e-08, +-1.117079683799728026e-08, +-1.133344153677790066e-08, +-1.149602993617962312e-08, +-1.165856178184836153e-08, +-1.182103681960380391e-08, +-1.198345479543994508e-08, +-1.214581545544514958e-08, +-1.230811854594118256e-08, +-1.247036381333042948e-08, +-1.263255100419825313e-08, +-1.279467986530630832e-08, +-1.295675014351979470e-08, +-1.311876158591000396e-08, +-1.328071393966724583e-08, +-1.344260695216685051e-08, +-1.360444037092565896e-08, +-1.376621394359537232e-08, +-1.392792741802838894e-08, +-1.408958054219784575e-08, +-1.425117306427117449e-08, +-1.441270473253020927e-08, +-1.457417529543710793e-08, +-1.473558450163462003e-08, +-1.489693209986679333e-08, +-1.505821783911708812e-08, +-1.521944146845634972e-08, +-1.538060273714480808e-08, +-1.554170139462538594e-08, +-1.570273719045116663e-08, +-1.586370987438764354e-08, +-1.602461919634037821e-08, +-1.618546490634833324e-08, +-1.634624675468548980e-08, +-1.650696449170910630e-08, +-1.666761786799791707e-08, +-1.682820663425807870e-08, +-1.698873054139623646e-08, +-1.714918934043995623e-08, +-1.730958278260361103e-08, +-1.746991061928116472e-08, +-1.763017260200338029e-08, +-1.779036848250312082e-08, +-1.795049801263625111e-08, +-1.811056094444715377e-08, +-1.827055703016893099e-08, +-1.843048602215173104e-08, +-1.859034767296411423e-08, +-1.875014173532111474e-08, +-1.890986796207752385e-08, +-1.906952610632946115e-08, +-1.922911592126282510e-08, +-1.938863716029101199e-08, +-1.954808957697585069e-08, +-1.970747292502822804e-08, +-1.986678695837280081e-08, +-2.002603143106951613e-08, +-2.018520609737870727e-08, +-2.034431071171820932e-08, +-2.050334502865662593e-08, +-2.066230880297822326e-08, +-2.082120178960460594e-08, +-2.098002374366661229e-08, +-2.113877442041836690e-08, +-2.129745357533859047e-08, +-2.145606096405173638e-08, +-2.161459634235706111e-08, +-2.177305946625771786e-08, +-2.193145009188246887e-08, +-2.208976797558589336e-08, +-2.224801287387755113e-08, +-2.240618454342210826e-08, +-2.256428274110428071e-08, +-2.272230722395033492e-08, +-2.288025774919302808e-08, +-2.303813407422866420e-08, +-2.319593595661089361e-08, +-2.335366315411491207e-08, +-2.351131542465938483e-08, +-2.366889252637829892e-08, +-2.382639421754261912e-08, +-2.398382025662505960e-08, +-2.414117040229319510e-08, +-2.429844441336721187e-08, +-2.445564204888402082e-08, +-2.461276306801974733e-08, +-2.476980723015362601e-08, +-2.492677429486901321e-08, +-2.508366402188190530e-08, +-2.524047617114150406e-08, +-2.539721050274462330e-08, +-2.555386677700066554e-08, +-2.571044475438873438e-08, +-2.586694419555135784e-08, +-2.602336486135845588e-08, +-2.617970651282973765e-08, +-2.633596891120594155e-08, +-2.649215181787115310e-08, +-2.664825499441742755e-08, +-2.680427820263711368e-08, +-2.696022120448147488e-08, +-2.711608376212462364e-08, +-2.727186563788565734e-08, +-2.742756659429320153e-08, +-2.758318639408525769e-08, +-2.773872480013951168e-08, +-2.789418157557190049e-08, +-2.804955648365938344e-08, +-2.820484928786921438e-08, +-2.836005975188665888e-08, +-2.851518763953810945e-08, +-2.867023271489036709e-08, +-2.882519474216583867e-08, +-2.898007348581432965e-08, +-2.913486871043457439e-08, +-2.928958018083897463e-08, +-2.944420766204650886e-08, +-2.959875091924102264e-08, +-2.975320971783472619e-08, +-2.990758382339098875e-08, +-3.006187300168874283e-08, +-3.021607701872196140e-08, +-3.037019564062298823e-08, +-3.052422863379653450e-08, +-3.067817576477236123e-08, +-3.083203680030401821e-08, +-3.098581150736192875e-08, +-3.113949965306389327e-08, +-3.129310100477359658e-08, +-3.144661533003047623e-08, +-3.160004239655044378e-08, +-3.175338197228887627e-08, +-3.190663382536464132e-08, +-3.205979772412251292e-08, +-3.221287343709203731e-08, +-3.236586073298131267e-08, +-3.251875938073921288e-08, +-3.267156914947960460e-08, +-3.282428980855126053e-08, +-3.297692112744759750e-08, +-3.312946287593935619e-08, +-3.328191482392860712e-08, +-3.343427674154701305e-08, +-3.358654839914853657e-08, +-3.373872956724053926e-08, +-3.389082001658130958e-08, +-3.404281951811143338e-08, +-3.419472784294625661e-08, +-3.434654476247447201e-08, +-3.449827004821149638e-08, +-3.464990347193299081e-08, +-3.480144480559786663e-08, +-3.495289382134874209e-08, +-3.510425029157536391e-08, +-3.525551398883761331e-08, +-3.540668468593623329e-08, +-3.555776215583590079e-08, +-3.570874617172918433e-08, +-3.585963650702842439e-08, +-3.601043293532575742e-08, +-3.616113523045495589e-08, +-3.631174316640927268e-08, +-3.646225651743810210e-08, +-3.661267505797870775e-08, +-3.676299856264908222e-08, +-3.691322680634547509e-08, +-3.706335956409747743e-08, +-3.721339661119913326e-08, +-3.736333772313428155e-08, +-3.751318267557584151e-08, +-3.766293124444908861e-08, +-3.781258320585514370e-08, +-3.796213833613483793e-08, +-3.811159641182598397e-08, +-3.826095720965784373e-08, +-3.841022050661323982e-08, +-3.855938607985304378e-08, +-3.870845370678530859e-08, +-3.885742316498981652e-08, +-3.900629423228113020e-08, +-3.915506668670737495e-08, +-3.930374030647640137e-08, +-3.945231487008540784e-08, +-3.960079015617838751e-08, +-3.974916594364133350e-08, +-3.989744201159638244e-08, +-4.004561813933322469e-08, +-4.019369410640593074e-08, +-4.034166969255010084e-08, +-4.048954467774570424e-08, +-4.063731884217565400e-08, +-4.078499196622006966e-08, +-4.093256383051709815e-08, +-4.108003421588895726e-08, +-4.122740290341021443e-08, +-4.137466967433291697e-08, +-4.152183431014840560e-08, +-4.166889659258073673e-08, +-4.181585630354611754e-08, +-4.196271322521464669e-08, +-4.210946713993561665e-08, +-4.225611783029897649e-08, +-4.240266507913610616e-08, +-4.254910866945151120e-08, +-4.269544838451846465e-08, +-4.284168400781167460e-08, +-4.298781532300058069e-08, +-4.313384211404449310e-08, +-4.327976416505069470e-08, +-4.342558126040399078e-08, +-4.357129318469120398e-08, +-4.371689972270303378e-08, +-4.386240065949395104e-08, +-4.400779578030885682e-08, +-4.415308487064429375e-08, +-4.429826771619386538e-08, +-4.444334410291041364e-08, +-4.458831381693135423e-08, +-4.473317664464007329e-08, +-4.487793237266543768e-08, +-4.502258078781618968e-08, +-4.516712167717385584e-08, +-4.531155482802031913e-08, +-4.545588002786424894e-08, +-4.560009706446882824e-08, +-4.574420572577782342e-08, +-4.588820580000955207e-08, +-4.603209707559097318e-08, +-4.617587934115717764e-08, +-4.631955238561244075e-08, +-4.646311599805637815e-08, +-4.660656996784560059e-08, +-4.674991408455208358e-08, +-4.689314813795863438e-08, +-4.703627191811791308e-08, +-4.717928521528007077e-08, +-4.732218781995920856e-08, +-4.746497952284797287e-08, +-4.760766011494268463e-08, +-4.775022938740633177e-08, +-4.789268713165951933e-08, +-4.803503313937530788e-08, +-4.817726720241348904e-08, +-4.831938911291241580e-08, +-4.846139866322446914e-08, +-4.860329564591544927e-08, +-4.874507985382482744e-08, +-4.888675107999306658e-08, +-4.902830911772115840e-08, +-4.916975376053199739e-08, +-4.931108480216347885e-08, +-4.945230203662826760e-08, +-4.959340525814162817e-08, +-4.973439426118785068e-08, +-4.987526884044769059e-08, +-5.001602879085801170e-08, +-5.015667390760534076e-08, +-5.029720398608724811e-08, +-5.043761882197113036e-08, +-5.057791821112276854e-08, +-5.071810194966507110e-08, +-5.085816983397939741e-08, +-5.099812166063255414e-08, +-5.113795722650200389e-08, +-5.127767632863235930e-08, +-5.141727876435981750e-08, +-5.155676433124030126e-08, +-5.169613282705000161e-08, +-5.183538404984466353e-08, +-5.197451779788737643e-08, +-5.211353386971460958e-08, +-5.225243206406448567e-08, +-5.239121217993603336e-08, +-5.252987401658268900e-08, +-5.266841737347365074e-08, +-5.280684205035223774e-08, +-5.294514784716590413e-08, +-5.308333456412356587e-08, +-5.322140200169627580e-08, +-5.335934996054693971e-08, +-5.349717824165258025e-08, +-5.363488664616916242e-08, +-5.377247497552266942e-08, +-5.390994303140290877e-08, +-5.404729061569850910e-08, +-5.418451753058816151e-08, +-5.432162357846331457e-08, +-5.445860856198658651e-08, +-5.459547228405298037e-08, +-5.473221454778410696e-08, +-5.486883515658701399e-08, +-5.500533391408183748e-08, +-5.514171062416796304e-08, +-5.527796509095345737e-08, +-5.541409711881222318e-08, +-5.555010651238511093e-08, +-5.568599307650953564e-08, +-5.582175661634058276e-08, +-5.595739693721914239e-08, +-5.609291384475853159e-08, +-5.622830714484078198e-08, +-5.636357664355229178e-08, +-5.649872214727296931e-08, +-5.663374346261347322e-08, +-5.676864039640860826e-08, +-5.690341275580709091e-08, +-5.703806034813836004e-08, +-5.717258298103218069e-08, +-5.730698046235101369e-08, +-5.744125260018940031e-08, +-5.757539920293072002e-08, +-5.770942007917892501e-08, +-5.784331503781433840e-08, +-5.797708388794539326e-08, +-5.811072643896343831e-08, +-5.824424250047516050e-08, +-5.837763188235878706e-08, +-5.851089439476468760e-08, +-5.864402984805276653e-08, +-5.877703805288011771e-08, +-5.890991882013977999e-08, +-5.904267196095331906e-08, +-5.917529728675950784e-08, +-5.930779460918299003e-08, +-5.944016374015327504e-08, +-5.957240449183634665e-08, +-5.970451667663494098e-08, +-5.983650010724523150e-08, +-5.996835459658800099e-08, +-6.010007995786496926e-08, +-6.023167600452172218e-08, +-6.036314255024252362e-08, +-6.049447940900518731e-08, +-6.062568639501421419e-08, +-6.075676332276191109e-08, +-6.088771000696229571e-08, +-6.101852626260473767e-08, +-6.114921190494965709e-08, +-6.127976674949110962e-08, +-6.141019061201254502e-08, +-6.154048330851360495e-08, +-6.167064465529556745e-08, +-6.180067446890157820e-08, +-6.193057256611528726e-08, +-6.206033876401722975e-08, +-6.218997287991734114e-08, +-6.231947473141084819e-08, +-6.244884413634092008e-08, +-6.257808091279350679e-08, +-6.270718487915195954e-08, +-6.283615585403125333e-08, +-6.296499365633759693e-08, +-6.309369810520293339e-08, +-6.322226902003942805e-08, +-6.335070622053361879e-08, +-6.347900952661036414e-08, +-6.360717875848738426e-08, +-6.373521373660993353e-08, +-6.386311428170367397e-08, +-6.399088021477635602e-08, +-6.411851135705703071e-08, +-6.424600753008097796e-08, +-6.437336855561764258e-08, +-6.450059425572460620e-08, +-6.462768445271295148e-08, +-6.475463896913957273e-08, +-6.488145762786330502e-08, +-6.500814025197786301e-08, +-6.513468666487260232e-08, +-6.526109669016696714e-08, +-6.538737015176413123e-08, +-6.551350687384537309e-08, +-6.563950668083562552e-08, +-6.576536939745515790e-08, +-6.589109484865588991e-08, +-6.601668285967475453e-08, +-6.614213325603417460e-08, +-6.626744586348255868e-08, +-6.639262050807684706e-08, +-6.651765701612022844e-08, +-6.664255521418260097e-08, +-6.676731492912649947e-08, +-6.689193598804213858e-08, +-6.701641821832989256e-08, +-6.714076144764149272e-08, +-6.726496550388054353e-08, +-6.738903021525556811e-08, +-6.751295541021628221e-08, +-6.763674091750502497e-08, +-6.776038656611120448e-08, +-6.788389218532450201e-08, +-6.800725760466990190e-08, +-6.813048265396086943e-08, +-6.825356716329939045e-08, +-6.837651096301342332e-08, +-6.849931388376537208e-08, +-6.862197575643159597e-08, +-6.874449641218373789e-08, +-6.886687568248362891e-08, +-6.898911339902460481e-08, +-6.911120939381292708e-08, +-6.923316349911146852e-08, +-6.935497554743807206e-08, +-6.947664537161890062e-08, +-6.959817280472465820e-08, +-6.971955768012289413e-08, +-6.984079983144404234e-08, +-6.996189909257508190e-08, +-7.008285529771162947e-08, +-7.020366828129623833e-08, +-7.032433787807431570e-08, +-7.044486392303182618e-08, +-7.056524625144731807e-08, +-7.068548469888633827e-08, +-7.080557910116732593e-08, +-7.092552929441259329e-08, +-7.104533511498175415e-08, +-7.116499639954954506e-08, +-7.128451298505063578e-08, +-7.140388470867355449e-08, +-7.152311140794046774e-08, +-7.164219292058830459e-08, +-7.176112908467675340e-08, +-7.187991973852593866e-08, +-7.199856472071700339e-08, +-7.211706387014269281e-08, +-7.223541702594570631e-08, +-7.235362402757538242e-08, +-7.247168471472542869e-08, +-7.258959892738557743e-08, +-7.270736650583556387e-08, +-7.282498729061233009e-08, +-7.294246112255945732e-08, +-7.305978784276660311e-08, +-7.317696729262034976e-08, +-7.329399931380355579e-08, +-7.341088374823493873e-08, +-7.352762043817434536e-08, +-7.364420922610165253e-08, +-7.376064995482133598e-08, +-7.387694246740237072e-08, +-7.399308660717815164e-08, +-7.410908221779657430e-08, +-7.422492914315931328e-08, +-7.434062722747210153e-08, +-7.445617631521104754e-08, +-7.457157625111866490e-08, +-7.468682688025182233e-08, +-7.480192804792286159e-08, +-7.491687959975407235e-08, +-7.503168138161783076e-08, +-7.514633323968575380e-08, +-7.526083502042879199e-08, +-7.537518657055865169e-08, +-7.548938773713000824e-08, +-7.560343836742663288e-08, +-7.571733830903778460e-08, +-7.583108740985435875e-08, +-7.594468551801234763e-08, +-7.605813248197076747e-08, +-7.617142815045689249e-08, +-7.628457237246207266e-08, +-7.639756499731561087e-08, +-7.651040587457316633e-08, +-7.662309485411919261e-08, +-7.673563178609655450e-08, +-7.684801652096096314e-08, +-7.696024890942153807e-08, +-7.707232880249050430e-08, +-7.718425605147621750e-08, +-7.729603050795281638e-08, +-7.740765202380733894e-08, +-7.751912045118216387e-08, +-7.763043564252239153e-08, +-7.774159745057614831e-08, +-7.785260572834259998e-08, +-7.796346032914495535e-08, +-7.807416110657841347e-08, +-7.818470791450508139e-08, +-7.829510060712803664e-08, +-7.840533903888018060e-08, +-7.851542306452563101e-08, +-7.862535253910077377e-08, +-7.873512731791616875e-08, +-7.884474725660127047e-08, +-7.895421221104990042e-08, +-7.906352203746525882e-08, +-7.917267659231920096e-08, +-7.928167573240006803e-08, +-7.939051931475334190e-08, +-7.949920719673217591e-08, +-7.960773923599405973e-08, +-7.971611529045035463e-08, +-7.982433521834002515e-08, +-7.993239887817161728e-08, +-8.004030612874447402e-08, +-8.014805682916999060e-08, +-8.025565083881371183e-08, +-8.036308801737006953e-08, +-8.047036822480815921e-08, +-8.057749132137417524e-08, +-8.068445716763652864e-08, +-8.079126562443015462e-08, +-8.089791655290260975e-08, +-8.100440981448345959e-08, +-8.111074527087992450e-08, +-8.121692278412175907e-08, +-8.132294221650636708e-08, +-8.142880343064986169e-08, +-8.153450628943024807e-08, +-8.164005065603480427e-08, +-8.174543639395382116e-08, +-8.185066336695131360e-08, +-8.195573143911068080e-08, +-8.206064047477287295e-08, +-8.216539033860878601e-08, +-8.226998089556873095e-08, +-8.237441201088144113e-08, +-8.247868355010146640e-08, +-8.258279537905170725e-08, +-8.268674736387115305e-08, +-8.279053937098342269e-08, +-8.289417126709162949e-08, +-8.299764291922470326e-08, +-8.310095419468202880e-08, +-8.320410496108355316e-08, +-8.330709508631456973e-08, +-8.340992443857238438e-08, +-8.351259288635935399e-08, +-8.361510029845436522e-08, +-8.371744654395717139e-08, +-8.381963149223508235e-08, +-8.392165501296607053e-08, +-8.402351697614009442e-08, +-8.412521725200920301e-08, +-8.422675571115795869e-08, +-8.432813222444761244e-08, +-8.442934666303675026e-08, +-8.453039889840154261e-08, +-8.463128880228145480e-08, +-8.473201624674724792e-08, +-8.483258110414416146e-08, +-8.493298324713988973e-08, +-8.503322254867039828e-08, +-8.513329888198520042e-08, +-8.523321212064183830e-08, +-8.533296213847711024e-08, +-8.543254880965078556e-08, +-8.553197200859225477e-08, +-8.563123161004556789e-08, +-8.573032748906710509e-08, +-8.582925952097487386e-08, +-8.592802758143869150e-08, +-8.602663154638079117e-08, +-8.612507129204133451e-08, +-8.622334669497551328e-08, +-8.632145763200411698e-08, +-8.641940398028320136e-08, +-8.651718561725333257e-08, +-8.661480242064153274e-08, +-8.671225426850424039e-08, +-8.680954103917430473e-08, +-8.690666261130511076e-08, +-8.700361886383087459e-08, +-8.710040967601207886e-08, +-8.719703492738109052e-08, +-8.729349449778542576e-08, +-8.738978826738944398e-08, +-8.748591611662008484e-08, +-8.758187792625858597e-08, +-8.767767357734082429e-08, +-8.777330295122277577e-08, +-8.786876592957847723e-08, +-8.796406239434927060e-08, +-8.805919222781291542e-08, +-8.815415531253471250e-08, +-8.824895153136472450e-08, +-8.834358076750172697e-08, +-8.843804290439624954e-08, +-8.853233782583967318e-08, +-8.862646541591180683e-08, +-8.872042555898160205e-08, +-8.881421813974979585e-08, +-8.890784304319701671e-08, +-8.900130015463041106e-08, +-8.909458935963337720e-08, +-8.918771054410708311e-08, +-8.928066359426620486e-08, +-8.937344839660992894e-08, +-8.946606483796521712e-08, +-8.955851280543140521e-08, +-8.965079218644382314e-08, +-8.974290286872883610e-08, +-8.983484474029874906e-08, +-8.992661768951766360e-08, +-9.001822160500257357e-08, +-9.010965637571281970e-08, +-9.020092189089902945e-08, +-9.029201804010331545e-08, +-9.038294471320018460e-08, +-9.047370180034694695e-08, +-9.056428919202533938e-08, +-9.065470677901256768e-08, +-9.074495445237846106e-08, +-9.083503210352582534e-08, +-9.092493962414078560e-08, +-9.101467690623820836e-08, +-9.110424384211181927e-08, +-9.119364032437528420e-08, +-9.128286624596255335e-08, +-9.137192150007793927e-08, +-9.146080598028093922e-08, +-9.154951958038948818e-08, +-9.163806219456345771e-08, +-9.172643371725656043e-08, +-9.181463404321570144e-08, +-9.190266306752289327e-08, +-9.199052068554360008e-08, +-9.207820679296904962e-08, +-9.216572128578891638e-08, +-9.225306406028739086e-08, +-9.234023501308231515e-08, +-9.242723404107723290e-08, +-9.251406104150637469e-08, +-9.260071591188484196e-08, +-9.268719855004856311e-08, +-9.277350885415101124e-08, +-9.285964672263604618e-08, +-9.294561205427764561e-08, +-9.303140474813208740e-08, +-9.311702470357719108e-08, +-9.320247182031283399e-08, +-9.328774599831673350e-08, +-9.337284713790560546e-08, +-9.345777513969236254e-08, +-9.354252990458157470e-08, +-9.362711133382983347e-08, +-9.371151932895526505e-08, +-9.379575379182075129e-08, +-9.387981462457585499e-08, +-9.396370172970151410e-08, +-9.404741500996207852e-08, +-9.413095436844509415e-08, +-9.421431970855550603e-08, +-9.429751093399105465e-08, +-9.438052794878164977e-08, +-9.446337065724067926e-08, +-9.454603896400427701e-08, +-9.462853277403190526e-08, +-9.471085199256319564e-08, +-9.479299652517779735e-08, +-9.487496627774902852e-08, +-9.495676115645998314e-08, +-9.503838106782236428e-08, +-9.511982591862796496e-08, +-9.520109561600962811e-08, +-9.528219006739690962e-08, +-9.536310918051924153e-08, +-9.544385286344138828e-08, +-9.552442102451772017e-08, +-9.560481357243194451e-08, +-9.568503041616903437e-08, +-9.576507146501385224e-08, +-9.584493662858651355e-08, +-9.592462581679872485e-08, +-9.600413893989356787e-08, +-9.608347590839786713e-08, +-9.616263663317724709e-08, +-9.624162102539491871e-08, +-9.632042899652380261e-08, +-9.639906045836612993e-08, +-9.647751532300727906e-08, +-9.655579350287273857e-08, +-9.663389491068857462e-08, +-9.671181945947992217e-08, +-9.678956706261013380e-08, +-9.686713763373278997e-08, +-9.694453108683072875e-08, +-9.702174733619146859e-08, +-9.709878629640244379e-08, +-9.717564788238802247e-08, +-9.725233200936486529e-08, +-9.732883859288312566e-08, +-9.740516754878096144e-08, +-9.748131879322197641e-08, +-9.755729224268971460e-08, +-9.763308781396563738e-08, +-9.770870542416401070e-08, +-9.778414499068403441e-08, +-9.785940643126583914e-08, +-9.793448966395127131e-08, +-9.800939460708386664e-08, +-9.808412117934364470e-08, +-9.815866929970418813e-08, +-9.823303888746854895e-08, +-9.830722986224551834e-08, +-9.838124214394552387e-08, +-9.845507565281674748e-08, +-9.852873030940096069e-08, +-9.860220603457318954e-08, +-9.867550274949900560e-08, +-9.874862037567002195e-08, +-9.882155883489886392e-08, +-9.889431804929690803e-08, +-9.896689794130838825e-08, +-9.903929843367010903e-08, +-9.911151944944320905e-08, +-9.918356091201453760e-08, +-9.925542274505534854e-08, +-9.932710487259262308e-08, +-9.939860721892956782e-08, +-9.946992970869933517e-08, +-9.954107226686142345e-08, +-9.961203481866255455e-08, +-9.968281728969071201e-08, +-9.975341960582969238e-08, +-9.982384169329293360e-08, +-9.989408347860094955e-08, +-9.996414488857792864e-08, +-1.000340258503866342e-07, +-1.001037262914836707e-07, +-1.001732461396604322e-07, +-1.002425853230013996e-07, +-1.003117437699162745e-07, +-1.003807214091413826e-07, +-1.004495181696986981e-07, +-1.005181339809646519e-07, +-1.005865687725970623e-07, +-1.006548224745804900e-07, +-1.007228950172270729e-07, +-1.007907863311391236e-07, +-1.008584963472588136e-07, +-1.009260249968336168e-07, +-1.009933722114111478e-07, +-1.010605379228914003e-07, +-1.011275220634505537e-07, +-1.011943245656078620e-07, +-1.012609453621810394e-07, +-1.013273843863211870e-07, +-1.013936415714734849e-07, +-1.014597168514095652e-07, +-1.015256101602240311e-07, +-1.015913214323134263e-07, +-1.016568506024069404e-07, +-1.017221976055291922e-07, +-1.017873623770308155e-07, +-1.018523448525887504e-07, +-1.019171449681718985e-07, +-1.019817626600884379e-07, +-1.020461978649542844e-07, +-1.021104505196857857e-07, +-1.021745205615499215e-07, +-1.022384079280925836e-07, +-1.023021125572026591e-07, +-1.023656343870751185e-07, +-1.024289733562112140e-07, +-1.024921294034487612e-07, +-1.025551024679244592e-07, +-1.026178924891052173e-07, +-1.026804994067668873e-07, +-1.027429231609920393e-07, +-1.028051636922000448e-07, +-1.028672209411088547e-07, +-1.029290948487698858e-07, +-1.029907853565292434e-07, +-1.030522924060702575e-07, +-1.031136159393808061e-07, +-1.031747558987655709e-07, +-1.032357122268574193e-07, +-1.032964848665844358e-07, +-1.033570737612127507e-07, +-1.034174788543167480e-07, +-1.034777000897764055e-07, +-1.035377374118084758e-07, +-1.035975907649296406e-07, +-1.036572600939864746e-07, +-1.037167453441358311e-07, +-1.037760464608409643e-07, +-1.038351633899013213e-07, +-1.038940960774183560e-07, +-1.039528444698245402e-07, +-1.040114085138502761e-07, +-1.040697881565530267e-07, +-1.041279833453123525e-07, +-1.041859940278125076e-07, +-1.042438201520699153e-07, +-1.043014616664003457e-07, +-1.043589185194438502e-07, +-1.044161906601675540e-07, +-1.044732780378337865e-07, +-1.045301806020431741e-07, +-1.045868983026976091e-07, +-1.046434310900280825e-07, +-1.046997789145773330e-07, +-1.047559417271945534e-07, +-1.048119194790647055e-07, +-1.048677121216743876e-07, +-1.049233196068420892e-07, +-1.049787418866850510e-07, +-1.050339789136467936e-07, +-1.050890306404931863e-07, +-1.051438970202960363e-07, +-1.051985780064579039e-07, +-1.052530735526813579e-07, +-1.053073836129936056e-07, +-1.053615081417486371e-07, +-1.054154470935968378e-07, +-1.054692004235245739e-07, +-1.055227680868257378e-07, +-1.055761500391095692e-07, +-1.056293462363145923e-07, +-1.056823566346750117e-07, +-1.057351811907629982e-07, +-1.057878198614533516e-07, +-1.058402726039517174e-07, +-1.058925393757629292e-07, +-1.059446201347189075e-07, +-1.059965148389731939e-07, +-1.060482234469848972e-07, +-1.060997459175438263e-07, +-1.061510822097400767e-07, +-1.062022322829897321e-07, +-1.062531960970327078e-07, +-1.063039736119051821e-07, +-1.063545647879895579e-07, +-1.064049695859578174e-07, +-1.064551879668098111e-07, +-1.065052198918701600e-07, +-1.065550653227612969e-07, +-1.066047242214418868e-07, +-1.066541965501792192e-07, +-1.067034822715488640e-07, +-1.067525813484597644e-07, +-1.068014937441234664e-07, +-1.068502194220801912e-07, +-1.068987583461803196e-07, +-1.069471104805834656e-07, +-1.069952757897821007e-07, +-1.070432542385721857e-07, +-1.070910457920794286e-07, +-1.071386504157245431e-07, +-1.071860680752749838e-07, +-1.072332987367876524e-07, +-1.072803423666465508e-07, +-1.073271989315600814e-07, +-1.073738683985361784e-07, +-1.074203507349164014e-07, +-1.074666459083510666e-07, +-1.075127538867967455e-07, +-1.075586746385528197e-07, +-1.076044081322061858e-07, +-1.076499543366809783e-07, +-1.076953132212095460e-07, +-1.077404847553344502e-07, +-1.077854689089289789e-07, +-1.078302656521694726e-07, +-1.078748749555619662e-07, +-1.079192967899137604e-07, +-1.079635311263557752e-07, +-1.080075779363394931e-07, +-1.080514371916242268e-07, +-1.080951088642969056e-07, +-1.081385929267429054e-07, +-1.081818893516821007e-07, +-1.082249981121422362e-07, +-1.082679191814575235e-07, +-1.083106525333022977e-07, +-1.083531981416415189e-07, +-1.083955559807743678e-07, +-1.084377260253088217e-07, +-1.084797082501614158e-07, +-1.085215026305798225e-07, +-1.085631091421150182e-07, +-1.086045277606426443e-07, +-1.086457584623508046e-07, +-1.086868012237357510e-07, +-1.087276560216230856e-07, +-1.087683228331430909e-07, +-1.088088016357530040e-07, +-1.088490924072112089e-07, +-1.088891951255994971e-07, +-1.089291097693213343e-07, +-1.089688363170788315e-07, +-1.090083747479130186e-07, +-1.090477250411580785e-07, +-1.090868871764728722e-07, +-1.091258611338383584e-07, +-1.091646468935350012e-07, +-1.092032444361742827e-07, +-1.092416537426708301e-07, +-1.092798747942653384e-07, +-1.093179075725078552e-07, +-1.093557520592564566e-07, +-1.093934082366987281e-07, +-1.094308760873254134e-07, +-1.094681555939533903e-07, +-1.095052467397006702e-07, +-1.095421495080085928e-07, +-1.095788638826360688e-07, +-1.096153898476481851e-07, +-1.096517273874363083e-07, +-1.096878764866926868e-07, +-1.097238371304308991e-07, +-1.097596093039858270e-07, +-1.097951929929925197e-07, +-1.098305881834137486e-07, +-1.098657948615221272e-07, +-1.099008130138948699e-07, +-1.099356426274449737e-07, +-1.099702836893771323e-07, +-1.100047361872263428e-07, +-1.100390001088353662e-07, +-1.100730754423564747e-07, +-1.101069621762663675e-07, +-1.101406602993462255e-07, +-1.101741698006998699e-07, +-1.102074906697361329e-07, +-1.102406228961883532e-07, +-1.102735664700908707e-07, +-1.103063213817987857e-07, +-1.103388876219862788e-07, +-1.103712651816271817e-07, +-1.104034540520227438e-07, +-1.104354542247799539e-07, +-1.104672656918191766e-07, +-1.104988884453820664e-07, +-1.105303224780095718e-07, +-1.105615677825703769e-07, +-1.105926243522393549e-07, +-1.106234921804999239e-07, +-1.106541712611589893e-07, +-1.106846615883277664e-07, +-1.107149631564377678e-07, +-1.107450759602285617e-07, +-1.107749999947489095e-07, +-1.108047352553702396e-07, +-1.108342817377672574e-07, +-1.108636394379371236e-07, +-1.108928083521761071e-07, +-1.109217884771064259e-07, +-1.109505798096545018e-07, +-1.109791823470602382e-07, +-1.110075960868822480e-07, +-1.110358210269790069e-07, +-1.110638571655333644e-07, +-1.110917045010354977e-07, +-1.111193630322816140e-07, +-1.111468327583909844e-07, +-1.111741136787849530e-07, +-1.112012057932055984e-07, +-1.112281091017013072e-07, +-1.112548236046275951e-07, +-1.112813493026618502e-07, +-1.113076861967846058e-07, +-1.113338342882960045e-07, +-1.113597935787970312e-07, +-1.113855640702065200e-07, +-1.114111457647558336e-07, +-1.114365386649822194e-07, +-1.114617427737416873e-07, +-1.114867580941907320e-07, +-1.115115846298027578e-07, +-1.115362223843662517e-07, +-1.115606713619687302e-07, +-1.115849315670209188e-07, +-1.116090030042349411e-07, +-1.116328856786397906e-07, +-1.116565795955721983e-07, +-1.116800847606742244e-07, +-1.117034011799070086e-07, +-1.117265288595348759e-07, +-1.117494678061404236e-07, +-1.117722180266054768e-07, +-1.117947795281272746e-07, +-1.118171523182158888e-07, +-1.118393364046848808e-07, +-1.118613317956651714e-07, +-1.118831384995873323e-07, +-1.119047565251979980e-07, +-1.119261858815552725e-07, +-1.119474265780162493e-07, +-1.119684786242624887e-07, +-1.119893420302710196e-07, +-1.120100168063326306e-07, +-1.120305029630521080e-07, +-1.120508005113321291e-07, +-1.120709094623961054e-07, +-1.120908298277671525e-07, +-1.121105616192843690e-07, +-1.121301048490874180e-07, +-1.121494595296279748e-07, +-1.121686256736694232e-07, +-1.121876032942766639e-07, +-1.122063924048314015e-07, +-1.122249930190138665e-07, +-1.122434051508160903e-07, +-1.122616288145431095e-07, +-1.122796640247956411e-07, +-1.122975107964975323e-07, +-1.123151691448667756e-07, +-1.123326390854334022e-07, +-1.123499206340406210e-07, +-1.123670138068274668e-07, +-1.123839186202506118e-07, +-1.124006350910691853e-07, +-1.124171632363444425e-07, +-1.124335030734572348e-07, +-1.124496546200808385e-07, +-1.124656178942062467e-07, +-1.124813929141263533e-07, +-1.124969796984366947e-07, +-1.125123782660470698e-07, +-1.125275886361668094e-07, +-1.125426108283181964e-07, +-1.125574448623185461e-07, +-1.125720907583061858e-07, +-1.125865485367123048e-07, +-1.126008182182776163e-07, +-1.126148998240539464e-07, +-1.126287933753885504e-07, +-1.126424988939436472e-07, +-1.126560164016820073e-07, +-1.126693459208677724e-07, +-1.126824874740821130e-07, +-1.126954410841971686e-07, +-1.127082067744000824e-07, +-1.127207845681787868e-07, +-1.127331744893229698e-07, +-1.127453765619330215e-07, +-1.127573908104078584e-07, +-1.127692172594567683e-07, +-1.127808559340893121e-07, +-1.127923068596165416e-07, +-1.128035700616596549e-07, +-1.128146455661384956e-07, +-1.128255333992822065e-07, +-1.128362335876162728e-07, +-1.128467461579737057e-07, +-1.128570711374942216e-07, +-1.128672085536120134e-07, +-1.128771584340752849e-07, +-1.128869208069250087e-07, +-1.128964957005120924e-07, +-1.129058831434884180e-07, +-1.129150831648039437e-07, +-1.129240957937191978e-07, +-1.129329210597907198e-07, +-1.129415589928817020e-07, +-1.129500096231551994e-07, +-1.129582729810741960e-07, +-1.129663490974086195e-07, +-1.129742380032255340e-07, +-1.129819397298993973e-07, +-1.129894543090998315e-07, +-1.129967817728003055e-07, +-1.130039221532784392e-07, +-1.130108754831083667e-07, +-1.130176417951706895e-07, +-1.130242211226410810e-07, +-1.130306134989984785e-07, +-1.130368189580266060e-07, +-1.130428375338021150e-07, +-1.130486692607084552e-07, +-1.130543141734257494e-07, +-1.130597723069366967e-07, +-1.130650436965234618e-07, +-1.130701283777641813e-07, +-1.130750263865442532e-07, +-1.130797377590423074e-07, +-1.130842625317414162e-07, +-1.130886007414192340e-07, +-1.130927524251549324e-07, +-1.130967176203291211e-07, +-1.131004963646168461e-07, +-1.131040886959972912e-07, +-1.131074946527433226e-07, +-1.131107142734290325e-07, +-1.131137475969280979e-07, +-1.131165946624088444e-07, +-1.131192555093420280e-07, +-1.131217301774936749e-07, +-1.131240187069276231e-07, +-1.131261211380093070e-07, +-1.131280375113961361e-07, +-1.131297678680476855e-07, +-1.131313122492194891e-07, +-1.131326706964617024e-07, +-1.131338432516261573e-07, +-1.131348299568574545e-07, +-1.131356308546016458e-07, +-1.131362459875965065e-07, +-1.131366753988813424e-07, +-1.131369191317866401e-07, +-1.131369772299423651e-07, +-1.131368497372753683e-07, +-1.131365366980051369e-07, +-1.131360381566503066e-07, +-1.131353541580238040e-07, +-1.131344847472338921e-07, +-1.131334299696859178e-07, +-1.131321898710769908e-07, +-1.131307644974032369e-07, +-1.131291538949539215e-07, +-1.131273581103114361e-07, +-1.131253771903569368e-07, +-1.131232111822628797e-07, +-1.131208601334976394e-07, +-1.131183240918236438e-07, +-1.131156031052954277e-07, +-1.131126972222644508e-07, +-1.131096064913744653e-07, +-1.131063309615629982e-07, +-1.131028706820606897e-07, +-1.130992257023934636e-07, +-1.130953960723776701e-07, +-1.130913818421241356e-07, +-1.130871830620371571e-07, +-1.130827997828120669e-07, +-1.130782320554377998e-07, +-1.130734799311973040e-07, +-1.130685434616621803e-07, +-1.130634226986992738e-07, +-1.130581176944662131e-07, +-1.130526285014122709e-07, +-1.130469551722793169e-07, +-1.130410977600985089e-07, +-1.130350563181957591e-07, +-1.130288309001853148e-07, +-1.130224215599740866e-07, +-1.130158283517586307e-07, +-1.130090513300265250e-07, +-1.130020905495569256e-07, +-1.129949460654184883e-07, +-1.129876179329698323e-07, +-1.129801062078610620e-07, +-1.129724109460302066e-07, +-1.129645322037070058e-07, +-1.129564700374090050e-07, +-1.129482245039450100e-07, +-1.129397956604114339e-07, +-1.129311835641942426e-07, +-1.129223882729699875e-07, +-1.129134098447012257e-07, +-1.129042483376411659e-07, +-1.128949038103307300e-07, +-1.128853763215999032e-07, +-1.128756659305652191e-07, +-1.128657726966323938e-07, +-1.128556966794941951e-07, +-1.128454379391325198e-07, +-1.128349965358152047e-07, +-1.128243725300974162e-07, +-1.128135659828221793e-07, +-1.128025769551195177e-07, +-1.127914055084050906e-07, +-1.127800517043822173e-07, +-1.127685156050408584e-07, +-1.127567972726565969e-07, +-1.127448967697911936e-07, +-1.127328141592922961e-07, +-1.127205495042935978e-07, +-1.127081028682148377e-07, +-1.126954743147592331e-07, +-1.126826639079182833e-07, +-1.126696717119659074e-07, +-1.126564977914620696e-07, +-1.126431422112516421e-07, +-1.126296050364630543e-07, +-1.126158863325102917e-07, +-1.126019861650910428e-07, +-1.125879046001859979e-07, +-1.125736417040621841e-07, +-1.125591975432677771e-07, +-1.125445721846356881e-07, +-1.125297656952822537e-07, +-1.125147781426063751e-07, +-1.124996095942899949e-07, +-1.124842601182976340e-07, +-1.124687297828775162e-07, +-1.124530186565595436e-07, +-1.124371268081553361e-07, +-1.124210543067596873e-07, +-1.124048012217480763e-07, +-1.123883676227783488e-07, +-1.123717535797904386e-07, +-1.123549591630034301e-07, +-1.123379844429211825e-07, +-1.123208294903252896e-07, +-1.123034943762794994e-07, +-1.122859791721275706e-07, +-1.122682839494945564e-07, +-1.122504087802850175e-07, +-1.122323537366828238e-07, +-1.122141188911549260e-07, +-1.121957043164439181e-07, +-1.121771100855740193e-07, +-1.121583362718491947e-07, +-1.121393829488498728e-07, +-1.121202501904390869e-07, +-1.121009380707553546e-07, +-1.120814466642178522e-07, +-1.120617760455241523e-07, +-1.120419262896480527e-07, +-1.120218974718431633e-07, +-1.120016896676397693e-07, +-1.119813029528464990e-07, +-1.119607374035495294e-07, +-1.119399930961107734e-07, +-1.119190701071717307e-07, +-1.118979685136477178e-07, +-1.118766883927335192e-07, +-1.118552298218990196e-07, +-1.118335928788894955e-07, +-1.118117776417280103e-07, +-1.117897841887111530e-07, +-1.117676125984152718e-07, +-1.117452629496879637e-07, +-1.117227353216536071e-07, +-1.117000297937129911e-07, +-1.116771464455396495e-07, +-1.116540853570835529e-07, +-1.116308466085670860e-07, +-1.116074302804890572e-07, +-1.115838364536223961e-07, +-1.115600652090119031e-07, +-1.115361166279783000e-07, +-1.115119907921129751e-07, +-1.114876877832840316e-07, +-1.114632076836312060e-07, +-1.114385505755653645e-07, +-1.114137165417736515e-07, +-1.113887056652119329e-07, +-1.113635180291112939e-07, +-1.113381537169740954e-07, +-1.113126128125727826e-07, +-1.112868953999551525e-07, +-1.112610015634359501e-07, +-1.112349313876058411e-07, +-1.112086849573227435e-07, +-1.111822623577170419e-07, +-1.111556636741913361e-07, +-1.111288889924154384e-07, +-1.111019383983322365e-07, +-1.110748119781519630e-07, +-1.110475098183572244e-07, +-1.110200320057002880e-07, +-1.109923786272003559e-07, +-1.109645497701488584e-07, +-1.109365455221020824e-07, +-1.109083659708899993e-07, +-1.108800112046091839e-07, +-1.108514813116217030e-07, +-1.108227763805648429e-07, +-1.107938965003344997e-07, +-1.107648417601025036e-07, +-1.107356122493050519e-07, +-1.107062080576430527e-07, +-1.106766292750901589e-07, +-1.106468759918816375e-07, +-1.106169482985218735e-07, +-1.105868462857839336e-07, +-1.105565700447021411e-07, +-1.105261196665814996e-07, +-1.104954952429889571e-07, +-1.104646968657605670e-07, +-1.104337246269938379e-07, +-1.104025786190561509e-07, +-1.103712589345779306e-07, +-1.103397656664514276e-07, +-1.103080989078400353e-07, +-1.102762587521626603e-07, +-1.102442452931105300e-07, +-1.102120586246350963e-07, +-1.101796988409487635e-07, +-1.101471660365349334e-07, +-1.101144603061327985e-07, +-1.100815817447471227e-07, +-1.100485304476493661e-07, +-1.100153065103650325e-07, +-1.099819100286914572e-07, +-1.099483410986806676e-07, +-1.099145998166490447e-07, +-1.098806862791793485e-07, +-1.098466005831084352e-07, +-1.098123428255391958e-07, +-1.097779131038312781e-07, +-1.097433115156109070e-07, +-1.097085381587617526e-07, +-1.096735931314259754e-07, +-1.096384765320100237e-07, +-1.096031884591753026e-07, +-1.095677290118493971e-07, +-1.095320982892128113e-07, +-1.094962963907082985e-07, +-1.094603234160411787e-07, +-1.094241794651651516e-07, +-1.093878646383058538e-07, +-1.093513790359366129e-07, +-1.093147227587927810e-07, +-1.092778959078707418e-07, +-1.092408985844185934e-07, +-1.092037308899464186e-07, +-1.091663929262178145e-07, +-1.091288847952548821e-07, +-1.090912065993408200e-07, +-1.090533584410075241e-07, +-1.090153404230495232e-07, +-1.089771526485113266e-07, +-1.089387952206998916e-07, +-1.089002682431752002e-07, +-1.088615718197475853e-07, +-1.088227060544938382e-07, +-1.087836710517312544e-07, +-1.087444669160452020e-07, +-1.087050937522658154e-07, +-1.086655516654807533e-07, +-1.086258407610360592e-07, +-1.085859611445235089e-07, +-1.085459129217942289e-07, +-1.085056961989492603e-07, +-1.084653110823430659e-07, +-1.084247576785875136e-07, +-1.083840360945399259e-07, +-1.083431464373153613e-07, +-1.083020888142754047e-07, +-1.082608633330398934e-07, +-1.082194701014784468e-07, +-1.081779092277073561e-07, +-1.081361808201005296e-07, +-1.080942849872757022e-07, +-1.080522218381085697e-07, +-1.080099914817226780e-07, +-1.079675940274860213e-07, +-1.079250295850277048e-07, +-1.078822982642158295e-07, +-1.078394001751721695e-07, +-1.077963354282728999e-07, +-1.077531041341305843e-07, +-1.077097064036202473e-07, +-1.076661423478548768e-07, +-1.076224120782024043e-07, +-1.075785157062726292e-07, +-1.075344533439307178e-07, +-1.074902251032851732e-07, +-1.074458310966887353e-07, +-1.074012714367470492e-07, +-1.073565462363055103e-07, +-1.073116556084637429e-07, +-1.072665996665652902e-07, +-1.072213785241936574e-07, +-1.071759922951884977e-07, +-1.071304410936250187e-07, +-1.070847250338296926e-07, +-1.070388442303737840e-07, +-1.069927987980676326e-07, +-1.069465888519757277e-07, +-1.069002145073983248e-07, +-1.068536758798822191e-07, +-1.068069730852231276e-07, +-1.067601062394513687e-07, +-1.067130754588482740e-07, +-1.066658808599317091e-07, +-1.066185225594682493e-07, +-1.065710006744608453e-07, +-1.065233153221617667e-07, +-1.064754666200626490e-07, +-1.064274546858906695e-07, +-1.063792796376262282e-07, +-1.063309415934801713e-07, +-1.062824406719096726e-07, +-1.062337769916147132e-07, +-1.061849506715273350e-07, +-1.061359618308315321e-07, +-1.060868105889410963e-07, +-1.060374970655131559e-07, +-1.059880213804494599e-07, +-1.059383836538820044e-07, +-1.058885840061885046e-07, +-1.058386225579809598e-07, +-1.057884994301110397e-07, +-1.057382147436748626e-07, +-1.056877686199960810e-07, +-1.056371611806437751e-07, +-1.055863925474175903e-07, +-1.055354628423625334e-07, +-1.054843721877576306e-07, +-1.054331207061136909e-07, +-1.053817085201850979e-07, +-1.053301357529536770e-07, +-1.052784025276494077e-07, +-1.052265089677259789e-07, +-1.051744551968772795e-07, +-1.051222413390367632e-07, +-1.050698675183648221e-07, +-1.050173338592627367e-07, +-1.049646404863594676e-07, +-1.049117875245224807e-07, +-1.048587750988576956e-07, +-1.048056033346937878e-07, +-1.047522723576015257e-07, +-1.046987822933772398e-07, +-1.046451332680587973e-07, +-1.045913254079122749e-07, +-1.045373588394319845e-07, +-1.044832336893510356e-07, +-1.044289500846261408e-07, +-1.043745081524551129e-07, +-1.043199080202629811e-07, +-1.042651498156989871e-07, +-1.042102336666581046e-07, +-1.041551597012451466e-07, +-1.040999280478138346e-07, +-1.040445388349400510e-07, +-1.039889921914237052e-07, +-1.039332882463067726e-07, +-1.038774271288484928e-07, +-1.038214089685441759e-07, +-1.037652338951097709e-07, +-1.037089020384999711e-07, +-1.036524135288923982e-07, +-1.035957684966877346e-07, +-1.035389670725218336e-07, +-1.034820093872491096e-07, +-1.034248955719612651e-07, +-1.033676257579714620e-07, +-1.033102000768126808e-07, +-1.032526186602603647e-07, +-1.031948816402931792e-07, +-1.031369891491361171e-07, +-1.030789413192302045e-07, +-1.030207382832373445e-07, +-1.029623801740562390e-07, +-1.029038671247968450e-07, +-1.028451992687990230e-07, +-1.027863767396351439e-07, +-1.027273996710799268e-07, +-1.026682681971538231e-07, +-1.026089824520857866e-07, +-1.025495425703357199e-07, +-1.024899486865767001e-07, +-1.024302009357160484e-07, +-1.023702994528768546e-07, +-1.023102443733978842e-07, +-1.022500358328553233e-07, +-1.021896739670247683e-07, +-1.021291589119223860e-07, +-1.020684908037771073e-07, +-1.020076697790312096e-07, +-1.019466959743625911e-07, +-1.018855695266531126e-07, +-1.018242905730113489e-07, +-1.017628592507726546e-07, +-1.017012756974709338e-07, +-1.016395400508814424e-07, +-1.015776524489811093e-07, +-1.015156130299704539e-07, +-1.014534219322756105e-07, +-1.013910792945258824e-07, +-1.013285852555790599e-07, +-1.012659399545019783e-07, +-1.012031435305813709e-07, +-1.011401961233273890e-07, +-1.010770978724528364e-07, +-1.010138489178976145e-07, +-1.009504493998057201e-07, +-1.008868994585522441e-07, +-1.008231992347109068e-07, +-1.007593488690781585e-07, +-1.006953485026729808e-07, +-1.006311982767052820e-07, +-1.005668983326248658e-07, +-1.005024488120757845e-07, +-1.004378498569230071e-07, +-1.003731016092504079e-07, +-1.003082042113421843e-07, +-1.002431578057051577e-07, +-1.001779625350493185e-07, +-1.001126185423009151e-07, +-1.000471259706053127e-07, +-9.998148496330432199e-08, +-9.991569566396270873e-08, +-9.984975821634458244e-08, +-9.978367276443814586e-08, +-9.971743945243430729e-08, +-9.965105842472947317e-08, +-9.958452982593870354e-08, +-9.951785380087468183e-08, +-9.945103049457548164e-08, +-9.938406005227053984e-08, +-9.931694261940637197e-08, +-9.924967834164358112e-08, +-9.918226736483594686e-08, +-9.911470983505715969e-08, +-9.904700589857841435e-08, +-9.897915570188238590e-08, +-9.891115939166541345e-08, +-9.884301711481697287e-08, +-9.877472901844295694e-08, +-9.870629524984353338e-08, +-9.863771595653888673e-08, +-9.856899128624712931e-08, +-9.850012138688575704e-08, +-9.843110640658729310e-08, +-9.836194649367549160e-08, +-9.829264179669383229e-08, +-9.822319246438167128e-08, +-9.815359864567311609e-08, +-9.808386048972477920e-08, +-9.801397814587654985e-08, +-9.794395176368229899e-08, +-9.787378149289725316e-08, +-9.780346748346880951e-08, +-9.773300988556402466e-08, +-9.766240884953227908e-08, +-9.759166452593794076e-08, +-9.752077706553222789e-08, +-9.744974661928306675e-08, +-9.737857333834978657e-08, +-9.730725737408775179e-08, +-9.723579887806097488e-08, +-9.716419800201992143e-08, +-9.709245489792974020e-08, +-9.702056971794669174e-08, +-9.694854261441661315e-08, +-9.687637373990235406e-08, +-9.680406324714592476e-08, +-9.673161128909756008e-08, +-9.665901801890445648e-08, +-9.658628358989946945e-08, +-9.651340815563127583e-08, +-9.644039186982558236e-08, +-9.636723488641212481e-08, +-9.629393735952453568e-08, +-9.622049944347576701e-08, +-9.614692129278674386e-08, +-9.607320306216236953e-08, +-9.599934490650752647e-08, +-9.592534698092927334e-08, +-9.585120944071200306e-08, +-9.577693244134783017e-08, +-9.570251613850660053e-08, +-9.562796068807591365e-08, +-9.555326624610310091e-08, +-9.547843296885647666e-08, +-9.540346101278514384e-08, +-9.532835053452111158e-08, +-9.525310169090785604e-08, +-9.517771463895931881e-08, +-9.510218953589040002e-08, +-9.502652653911317318e-08, +-9.495072580621341975e-08, +-9.487478749498153258e-08, +-9.479871176338488146e-08, +-9.472249876958652726e-08, +-9.464614867194681012e-08, +-9.456966162899783260e-08, +-9.449303779947404545e-08, +-9.441627734228301181e-08, +-9.433938041653801793e-08, +-9.426234718153061081e-08, +-9.418517779673374806e-08, +-9.410787242181877831e-08, +-9.403043121662845524e-08, +-9.395285434121326734e-08, +-9.387514195578797459e-08, +-9.379729422076174424e-08, +-9.371931129674123458e-08, +-9.364119334448783298e-08, +-9.356294052498038929e-08, +-9.348455299935830582e-08, +-9.340603092895385693e-08, +-9.332737447529206988e-08, +-9.324858380006323605e-08, +-9.316965906515536280e-08, +-9.309060043262442150e-08, +-9.301140806472661415e-08, +-9.293208212389166540e-08, +-9.285262277272410632e-08, +-9.277303017402344439e-08, +-9.269330449075413349e-08, +-9.261344588608007733e-08, +-9.253345452333600232e-08, +-9.245333056602847667e-08, +-9.237307417786788591e-08, +-9.229268552271025230e-08, +-9.221216476462274752e-08, +-9.213151206783803231e-08, +-9.205072759675855783e-08, +-9.196981151598688674e-08, +-9.188876399028139610e-08, +-9.180758518459443349e-08, +-9.172627526404182384e-08, +-9.164483439392477320e-08, +-9.156326273972965697e-08, +-9.148156046709945897e-08, +-9.139972774187037920e-08, +-9.131776473003827014e-08, +-9.123567159779299449e-08, +-9.115344851149063197e-08, +-9.107109563765163961e-08, +-9.098861314299802856e-08, +-9.090600119438974403e-08, +-9.082325995889283814e-08, +-9.074038960373423311e-08, +-9.065739029630435498e-08, +-9.057426220418909588e-08, +-9.049100549512373015e-08, +-9.040762033702741766e-08, +-9.032410689800287301e-08, +-9.024046534629155212e-08, +-9.015669585034314867e-08, +-9.007279857875153723e-08, +-8.998877370029769402e-08, +-8.990462138391735081e-08, +-8.982034179873466450e-08, +-8.973593511403523119e-08, +-8.965140149926660230e-08, +-8.956674112405812372e-08, +-8.948195415819212342e-08, +-8.939704077163931479e-08, +-8.931200113452823730e-08, +-8.922683541714491233e-08, +-8.914154378996741280e-08, +-8.905612642361633813e-08, +-8.897058348888971466e-08, +-8.888491515676535150e-08, +-8.879912159835400221e-08, +-8.871320298496874213e-08, +-8.862715948806122910e-08, +-8.854099127925939648e-08, +-8.845469853036512379e-08, +-8.836828141332534492e-08, +-8.828174010026772945e-08, +-8.819507476347032173e-08, +-8.810828557538156537e-08, +-8.802137270862373098e-08, +-8.793433633596100691e-08, +-8.784717663033803923e-08, +-8.775989376484436960e-08, +-8.767248791275489428e-08, +-8.758495924748282738e-08, +-8.749730794261632180e-08, +-8.740953417190459901e-08, +-8.732163810924288783e-08, +-8.723361992871275105e-08, +-8.714547980453021797e-08, +-8.705721791108104211e-08, +-8.696883442292191881e-08, +-8.688032951474719953e-08, +-8.679170336142718033e-08, +-8.670295613797674845e-08, +-8.661408801957549933e-08, +-8.652509918157259383e-08, +-8.643598979945169897e-08, +-8.634676004887233377e-08, +-8.625741010563275861e-08, +-8.616794014570881959e-08, +-8.607835034522185399e-08, +-8.598864088044166804e-08, +-8.589881192780845399e-08, +-8.580886366389878959e-08, +-8.571879626546597810e-08, +-8.562860990940708014e-08, +-8.553830477276184167e-08, +-8.544788103274947377e-08, +-8.535733886671724831e-08, +-8.526667845218445102e-08, +-8.517589996680722963e-08, +-8.508500358840231078e-08, +-8.499398949494934261e-08, +-8.490285786455790017e-08, +-8.481160887550703128e-08, +-8.472024270620886057e-08, +-8.462875953524792357e-08, +-8.453715954134937654e-08, +-8.444544290337990963e-08, +-8.435360980037092121e-08, +-8.426166041148541737e-08, +-8.416959491605733283e-08, +-8.407741349355804662e-08, +-8.398511632359630270e-08, +-8.389270358595991309e-08, +-8.380017546054219834e-08, +-8.370753212742155572e-08, +-8.361477376680866521e-08, +-8.352190055904989088e-08, +-8.342891268466416652e-08, +-8.333581032429042669e-08, +-8.324259365873144063e-08, +-8.314926286891851483e-08, +-8.305581813594886838e-08, +-8.296225964105372360e-08, +-8.286858756560128394e-08, +-8.277480209111927297e-08, +-8.268090339926011339e-08, +-8.258689167184159786e-08, +-8.249276709081487377e-08, +-8.239852983826138600e-08, +-8.230418009643569182e-08, +-8.220971804769253658e-08, +-8.211514387456630281e-08, +-8.202045775971826915e-08, +-8.192565988593851620e-08, +-8.183075043618576352e-08, +-8.173572959353116105e-08, +-8.164059754119819234e-08, +-8.154535446256522881e-08, +-8.145000054111163738e-08, +-8.135453596049803673e-08, +-8.125896090449350550e-08, +-8.116327555701618689e-08, +-8.106748010213492976e-08, +-8.097157472403274717e-08, +-8.087555960704900914e-08, +-8.077943493564090269e-08, +-8.068320089443385676e-08, +-8.058685766814652685e-08, +-8.049040544167199107e-08, +-8.039384440002487677e-08, +-8.029717472834236636e-08, +-8.020039661192443142e-08, +-8.010351023617780936e-08, +-8.000651578665589343e-08, +-7.990941344906173698e-08, +-7.981220340919246699e-08, +-7.971488585302175062e-08, +-7.961746096662587837e-08, +-7.951992893622401136e-08, +-7.942228994818016661e-08, +-7.932454418896679455e-08, +-7.922669184520767339e-08, +-7.912873310364156601e-08, +-7.903066815114633403e-08, +-7.893249717474314642e-08, +-7.883422036155842925e-08, +-7.873583789886924810e-08, +-7.863734997406185638e-08, +-7.853875677467967184e-08, +-7.844005848836717382e-08, +-7.834125530290914476e-08, +-7.824234740623567292e-08, +-7.814333498636323070e-08, +-7.804421823148075437e-08, +-7.794499732987195521e-08, +-7.784567246995937852e-08, +-7.774624384030445652e-08, +-7.764671162957059627e-08, +-7.754707602656617979e-08, +-7.744733722021076220e-08, +-7.734749539955575780e-08, +-7.724755075378977379e-08, +-7.714750347220183045e-08, +-7.704735374422504956e-08, +-7.694710175939586443e-08, +-7.684674770739839652e-08, +-7.674629177802899917e-08, +-7.664573416119695899e-08, +-7.654507504695093926e-08, +-7.644431462544136630e-08, +-7.634345308696430317e-08, +-7.624249062192533164e-08, +-7.614142742083881104e-08, +-7.604026367436774174e-08, +-7.593899957326831098e-08, +-7.583763530843580469e-08, +-7.573617107086852918e-08, +-7.563460705169353976e-08, +-7.553294344216813630e-08, +-7.543118043364374520e-08, +-7.532931821761057393e-08, +-7.522735698565703282e-08, +-7.512529692951220587e-08, +-7.502313824101155909e-08, +-7.492088111209809200e-08, +-7.481852573484814561e-08, +-7.471607230143366981e-08, +-7.461352100416691751e-08, +-7.451087203546431348e-08, +-7.440812558784376759e-08, +-7.430528185396721181e-08, +-7.420234102658204901e-08, +-7.409930329856687953e-08, +-7.399616886291326350e-08, +-7.389293791271013011e-08, +-7.378961064118806161e-08, +-7.368618724166169500e-08, +-7.358266790757052526e-08, +-7.347905283247816415e-08, +-7.337534221003477962e-08, +-7.327153623402327232e-08, +-7.316763509832029886e-08, +-7.306363899692986197e-08, +-7.295954812394610719e-08, +-7.285536267359694513e-08, +-7.275108284020871424e-08, +-7.264670881820280597e-08, +-7.254224080214023984e-08, +-7.243767898666026683e-08, +-7.233302356652722082e-08, +-7.222827473661443830e-08, +-7.212343269188410152e-08, +-7.201849762743635326e-08, +-7.191346973844800600e-08, +-7.180834922021476123e-08, +-7.170313626815208298e-08, +-7.159783107775440784e-08, +-7.149243384464346558e-08, +-7.138694476452959357e-08, +-7.128136403323528162e-08, +-7.117569184670096889e-08, +-7.106992840094467745e-08, +-7.096407389211020054e-08, +-7.085812851642263333e-08, +-7.075209247024447560e-08, +-7.064596594999382692e-08, +-7.053974915223410593e-08, +-7.043344227361274638e-08, +-7.032704551086629250e-08, +-7.022055906086261835e-08, +-7.011398312054024584e-08, +-7.000731788695066987e-08, +-6.990056355725905984e-08, +-6.979372032870463434e-08, +-6.968678839864671859e-08, +-6.957976796452743528e-08, +-6.947265922389542149e-08, +-6.936546237441122854e-08, +-6.925817761380736584e-08, +-6.915080513993523180e-08, +-6.904334515072284162e-08, +-6.893579784422046119e-08, +-6.882816341856214647e-08, +-6.872044207196939633e-08, +-6.861263400277733119e-08, +-6.850473940939461775e-08, +-6.839675849035067782e-08, +-6.828869144425877626e-08, +-6.818053846981115051e-08, +-6.807229976583091785e-08, +-6.796397553118550594e-08, +-6.785556596488513369e-08, +-6.774707126599738003e-08, +-6.763849163369591473e-08, +-6.752982726725986319e-08, +-6.742107836603467086e-08, +-6.731224512947878263e-08, +-6.720332775711992807e-08, +-6.709432644860371992e-08, +-6.698524140365290383e-08, +-6.687607282207171270e-08, +-6.676682090377185994e-08, +-6.665748584873278191e-08, +-6.654806785704994524e-08, +-6.643856712889371281e-08, +-6.632898386450984664e-08, +-6.621931826426847706e-08, +-6.610957052857742732e-08, +-6.599974085797769015e-08, +-6.588982945307853707e-08, +-6.577983651456372558e-08, +-6.566976224323386399e-08, +-6.555960683994445895e-08, +-6.544937050565911970e-08, +-6.533905344140884752e-08, +-6.522865584831853201e-08, +-6.511817792761130536e-08, +-6.500761988056791121e-08, +-6.489698190857514440e-08, +-6.478626421308045527e-08, +-6.467546699564238780e-08, +-6.456459045788846623e-08, +-6.445363480151479802e-08, +-6.434260022833640608e-08, +-6.423148694019983884e-08, +-6.412029513907916290e-08, +-6.400902502701030474e-08, +-6.389767680609721814e-08, +-6.378625067855549323e-08, +-6.367474684664933184e-08, +-6.356316551273569916e-08, +-6.345150687926982945e-08, +-6.333977114873987213e-08, +-6.322795852376300355e-08, +-6.311606920699775912e-08, +-6.300410340119455082e-08, +-6.289206130919534961e-08, +-6.277994313389109557e-08, +-6.266774907827304919e-08, +-6.255547934539071777e-08, +-6.244313413838785422e-08, +-6.233071366046063485e-08, +-6.221821811490907694e-08, +-6.210564770509382678e-08, +-6.199300263443643762e-08, +-6.188028310646553299e-08, +-6.176748932475071162e-08, +-6.165462149295003424e-08, +-6.154167981481293529e-08, +-6.142866449411477632e-08, +-6.131557573475561803e-08, +-6.120241374066977302e-08, +-6.108917871587768654e-08, +-6.097587086448506301e-08, +-6.086249039064170550e-08, +-6.074903749859032601e-08, +-6.063551239262609963e-08, +-6.052191527712320053e-08, +-6.040824635654021498e-08, +-6.029450583537629420e-08, +-6.018069391822340570e-08, +-6.006681080971888619e-08, +-5.995285671459643560e-08, +-5.983883183764340810e-08, +-5.972473638370540465e-08, +-5.961057055771456910e-08, +-5.949633456464530434e-08, +-5.938202860957308148e-08, +-5.926765289760473832e-08, +-5.915320763392896385e-08, +-5.903869302381264539e-08, +-5.892410927256027721e-08, +-5.880945658556402809e-08, +-5.869473516826229630e-08, +-5.857994522616606686e-08, +-5.846508696486527090e-08, +-5.835016058998407821e-08, +-5.823516630723363167e-08, +-5.812010432236364723e-08, +-5.800497484121487704e-08, +-5.788977806967572547e-08, +-5.777451421368623281e-08, +-5.765918347926729791e-08, +-5.754378607247583837e-08, +-5.742832219945945064e-08, +-5.731279206641029966e-08, +-5.719719587956612473e-08, +-5.708153384525788506e-08, +-5.696580616984187147e-08, +-5.685001305975719871e-08, +-5.673415472148163402e-08, +-5.661823136156143521e-08, +-5.650224318661445422e-08, +-5.638619040328654138e-08, +-5.627007321830514014e-08, +-5.615389183842988120e-08, +-5.603764647050546250e-08, +-5.592133732141825204e-08, +-5.580496459810023188e-08, +-5.568852850755795603e-08, +-5.557202925682848496e-08, +-5.545546705303234495e-08, +-5.533884210332978019e-08, +-5.522215461491972708e-08, +-5.510540479508920682e-08, +-5.498859285114308784e-08, +-5.487171899045994371e-08, +-5.475478342046935525e-08, +-5.463778634863361990e-08, +-5.452072798250098252e-08, +-5.440360852963647639e-08, +-5.428642819767096515e-08, +-5.416918719429984577e-08, +-5.405188572724041233e-08, +-5.393452400428343902e-08, +-5.381710223324937266e-08, +-5.369962062202793809e-08, +-5.358207937853253076e-08, +-5.346447871075475771e-08, +-5.334681882671935289e-08, +-5.322909993448357499e-08, +-5.311132224219241019e-08, +-5.299348595798239417e-08, +-5.287559129008681629e-08, +-5.275763844676474084e-08, +-5.263962763630690322e-08, +-5.252155906708390475e-08, +-5.240343294747651118e-08, +-5.228524948592597827e-08, +-5.216700889093236446e-08, +-5.204871137100991594e-08, +-5.193035713474168050e-08, +-5.181194639073414491e-08, +-5.169347934764682816e-08, +-5.157495621419639084e-08, +-5.145637719911291377e-08, +-5.133774251119262570e-08, +-5.121905235924830564e-08, +-5.110030695217433892e-08, +-5.098150649885061205e-08, +-5.086265120824798156e-08, +-5.074374128935710998e-08, +-5.062477695119333631e-08, +-5.050575840284756413e-08, +-5.038668585341327122e-08, +-5.026755951203866164e-08, +-5.014837958793018618e-08, +-5.002914629028182175e-08, +-4.990985982838100345e-08, +-4.979052041151159295e-08, +-4.967112824901045764e-08, +-4.955168355026545234e-08, +-4.943218652467053977e-08, +-4.931263738168107930e-08, +-4.919303633076245572e-08, +-4.907338358144575846e-08, +-4.895367934328169102e-08, +-4.883392382584495178e-08, +-4.871411723876547493e-08, +-4.859425979168073191e-08, +-4.847435169429242310e-08, +-4.835439315632022848e-08, +-4.823438438750101352e-08, +-4.811432559764477970e-08, +-4.799421699653722923e-08, +-4.787405879405250650e-08, +-4.775385120005442604e-08, +-4.763359442445364728e-08, +-4.751328867720609298e-08, +-4.739293416826779839e-08, +-4.727253110764997502e-08, +-4.715207970537256940e-08, +-4.703158017149580846e-08, +-4.691103271612316411e-08, +-4.679043754935610320e-08, +-4.666979488135003136e-08, +-4.654910492226215417e-08, +-4.642836788230781145e-08, +-4.630758397171429414e-08, +-4.618675340071950095e-08, +-4.606587637962955643e-08, +-4.594495311871960225e-08, +-4.582398382834168805e-08, +-4.570296871885257507e-08, +-4.558190800061861985e-08, +-4.546080188406658296e-08, +-4.533965057961110183e-08, +-4.521845429770714720e-08, +-4.509721324885253777e-08, +-4.497592764351725266e-08, +-4.485459769225070677e-08, +-4.473322360558328326e-08, +-4.461180559409337484e-08, +-4.449034386835518538e-08, +-4.436883863899516346e-08, +-4.424729011664564060e-08, +-4.412569851194885461e-08, +-4.400406403558801852e-08, +-4.388238689824035660e-08, +-4.376066731063410034e-08, +-4.363890548350094882e-08, +-4.351710162757534732e-08, +-4.339525595364779751e-08, +-4.327336867248954431e-08, +-4.315143999490551541e-08, +-4.302947013173911234e-08, +-4.290745929379859138e-08, +-4.278540769196611904e-08, +-4.266331553709869570e-08, +-4.254118304008527075e-08, +-4.241901041184567061e-08, +-4.229679786328401183e-08, +-4.217454560534532669e-08, +-4.205225384896841377e-08, +-4.192992280512725004e-08, +-4.180755268478369589e-08, +-4.168514369894425965e-08, +-4.156269605861345114e-08, +-4.144020997479253104e-08, +-4.131768565853191441e-08, +-4.119512332085763763e-08, +-4.107252317282853315e-08, +-4.094988542551474262e-08, +-4.082721028997636242e-08, +-4.070449797732149850e-08, +-4.058174869863150246e-08, +-4.045896266501356703e-08, +-4.033614008760019006e-08, +-4.021328117750193916e-08, +-4.009038614586444121e-08, +-3.996745520382086239e-08, +-3.984448856252327495e-08, +-3.972148643314779232e-08, +-3.959844902684593748e-08, +-3.947537655480300887e-08, +-3.935226922818482318e-08, +-3.922912725819543266e-08, +-3.910595085602906269e-08, +-3.898274023287498879e-08, +-3.885949559994992901e-08, +-3.873621716844834696e-08, +-3.861290514960689244e-08, +-3.848955975462942582e-08, +-3.836618119473992450e-08, +-3.824276968118189395e-08, +-3.811932542517005377e-08, +-3.799584863794939837e-08, +-3.787233953074557274e-08, +-3.774879831479751633e-08, +-3.762522520136204890e-08, +-3.750162040166557647e-08, +-3.737798412696235786e-08, +-3.725431658848092990e-08, +-3.713061799748231442e-08, +-3.700688856521204848e-08, +-3.688312850290441284e-08, +-3.675933802181472510e-08, +-3.663551733317070815e-08, +-3.651166664823098171e-08, +-3.638778617823646383e-08, +-3.626387613441004666e-08, +-3.613993672801563064e-08, +-3.601596817025531589e-08, +-3.589197067238156793e-08, +-3.576794444562237431e-08, +-3.564388970118607541e-08, +-3.551980665031437678e-08, +-3.539569550420712198e-08, +-3.527155647408598555e-08, +-3.514738977114159296e-08, +-3.502319560659066228e-08, +-3.489897419162808723e-08, +-3.477472573743211205e-08, +-3.465045045519600920e-08, +-3.452614855607944776e-08, +-3.440182025126674676e-08, +-3.427746575191941493e-08, +-3.415308526917437056e-08, +-3.402867901420347868e-08, +-3.390424719811109976e-08, +-3.377979003204627523e-08, +-3.365530772712739456e-08, +-3.353080049444686710e-08, +-3.340626854512555723e-08, +-3.328171209023573080e-08, +-3.315713134085522557e-08, +-3.303252650807265908e-08, +-3.290789780291147370e-08, +-3.278324543644259194e-08, +-3.265856961968176668e-08, +-3.253387056365934227e-08, +-3.240914847936634218e-08, +-3.228440357781282829e-08, +-3.215963606997911708e-08, +-3.203484616681579942e-08, +-3.191003407930260946e-08, +-3.178520001834523872e-08, +-3.166034419488866651e-08, +-3.153546681984152913e-08, +-3.141056810408011019e-08, +-3.128564825850315290e-08, +-3.116070749395526316e-08, +-3.103574602128078881e-08, +-3.091076405132872309e-08, +-3.078576179487687543e-08, +-3.066073946274489734e-08, +-3.053569726569161940e-08, +-3.041063541447350315e-08, +-3.028555411984476019e-08, +-3.016045359250811840e-08, +-3.003533404317422674e-08, +-2.991019568251240163e-08, +-2.978503872118273804e-08, +-2.965986336984155242e-08, +-2.953466983909168562e-08, +-2.940945833954224853e-08, +-2.928422908175377670e-08, +-2.915898227630328639e-08, +-2.903371813370761154e-08, +-2.890843686447731274e-08, +-2.878313867912256677e-08, +-2.865782378807565315e-08, +-2.853249240180525067e-08, +-2.840714473071303648e-08, +-2.828178098519277327e-08, +-2.815640137563002802e-08, +-2.803100611235306395e-08, +-2.790559540569215929e-08, +-2.778016946593063157e-08, +-2.765472850333639623e-08, +-2.752927272816808111e-08, +-2.740380235062465779e-08, +-2.727831758090581584e-08, +-2.715281862915679651e-08, +-2.702730570552780741e-08, +-2.690177902012519245e-08, +-2.677623878301601436e-08, +-2.665068520426054640e-08, +-2.652511849386293925e-08, +-2.639953886183643929e-08, +-2.627394651812633173e-08, +-2.614834167266455440e-08, +-2.602272453536896981e-08, +-2.589709531609442256e-08, +-2.577145422469181325e-08, +-2.564580147095910292e-08, +-2.552013726467343411e-08, +-2.539446181559657706e-08, +-2.526877533342512017e-08, +-2.514307802785017920e-08, +-2.501737010850296883e-08, +-2.489165178501393939e-08, +-2.476592326696347034e-08, +-2.464018476388716748e-08, +-2.451443648530807343e-08, +-2.438867864068713266e-08, +-2.426291143948330445e-08, +-2.413713509110381617e-08, +-2.401134980490357770e-08, +-2.388555579023998375e-08, +-2.375975325639560889e-08, +-2.363394241263835683e-08, +-2.350812346819906034e-08, +-2.338229663224914739e-08, +-2.325646211396081688e-08, +-2.313062012243000498e-08, +-2.300477086674134525e-08, +-2.287891455591357473e-08, +-2.275305139895912736e-08, +-2.262718160483476782e-08, +-2.250130538244633622e-08, +-2.237542294068157400e-08, +-2.224953448836064521e-08, +-2.212364023429566381e-08, +-2.199774038724123815e-08, +-2.187183515589410371e-08, +-2.174592474894768396e-08, +-2.162000937501485149e-08, +-2.149408924268808396e-08, +-2.136816456051686878e-08, +-2.124223553698612694e-08, +-2.111630238057533330e-08, +-2.099036529968189314e-08, +-2.086442450267562363e-08, +-2.073848019789837662e-08, +-2.061253259361429198e-08, +-2.048658189806967889e-08, +-2.036062831944384821e-08, +-2.023467206588099531e-08, +-2.010871334549571243e-08, +-1.998275236632334792e-08, +-1.985678933637979152e-08, +-1.973082446360634775e-08, +-1.960485795594095946e-08, +-1.947889002121332798e-08, +-1.935292086725998712e-08, +-1.922695070184697839e-08, +-1.910097973267513496e-08, +-1.897500816743470212e-08, +-1.884903621372785689e-08, +-1.872306407912370559e-08, +-1.859709197115753279e-08, +-1.847112009728145834e-08, +-1.834514866492413991e-08, +-1.821917788144111573e-08, +-1.809320795414758077e-08, +-1.796723909032351196e-08, +-1.784127149716368993e-08, +-1.771530538183790123e-08, +-1.758934095143599037e-08, +-1.746337841302745321e-08, +-1.733741797361190538e-08, +-1.721145984012430679e-08, +-1.708550421946737713e-08, +-1.695955131846211398e-08, +-1.683360134391323600e-08, +-1.670765450253170257e-08, +-1.658171100098992315e-08, +-1.645577104592643581e-08, +-1.632983484386853275e-08, +-1.620390260134789355e-08, +-1.607797452479534461e-08, +-1.595205082060116392e-08, +-1.582613169511485281e-08, +-1.570021735459525690e-08, +-1.557430800527050694e-08, +-1.544840385328301793e-08, +-1.532250510474949277e-08, +-1.519661196571123851e-08, +-1.507072464213892428e-08, +-1.494484333996590015e-08, +-1.481896826503781682e-08, +-1.469309962317313888e-08, +-1.456723762011315499e-08, +-1.444138246152151956e-08, +-1.431553435304494141e-08, +-1.418969350020755773e-08, +-1.406386010852699414e-08, +-1.393803438343629042e-08, +-1.381221653028957665e-08, +-1.368640675441654962e-08, +-1.356060526104500741e-08, +-1.343481225536681704e-08, +-1.330902794248786835e-08, +-1.318325252746082213e-08, +-1.305748621529042058e-08, +-1.293172921088344127e-08, +-1.280598171910892741e-08, +-1.268024394474291572e-08, +-1.255451609252868321e-08, +-1.242879836712682692e-08, +-1.230309097311473447e-08, +-1.217739411504745793e-08, +-1.205170799735169910e-08, +-1.192603282444249649e-08, +-1.180036880064457542e-08, +-1.167471613019816964e-08, +-1.154907501731370298e-08, +-1.142344566609423950e-08, +-1.129782828059022299e-08, +-1.117222306480498599e-08, +-1.104663022261674005e-08, +-1.092104995789454314e-08, +-1.079548247439281923e-08, +-1.066992797582300703e-08, +-1.054438666579783282e-08, +-1.041885874789195767e-08, +-1.029334442559176430e-08, +-1.016784390230068574e-08, +-1.004235738137194518e-08, +-9.916885066058488338e-09, +-9.791427159573581086e-09, +-9.665983865040662445e-09, +-9.540555385492959115e-09, +-9.415141923928630305e-09, +-9.289743683232822499e-09, +-9.164360866232878797e-09, +-9.038993675703419464e-09, +-8.913642314288464527e-09, +-8.788306984617601364e-09, +-8.662987889200244555e-09, +-8.537685230486372442e-09, +-8.412399210866095346e-09, +-8.287130032619688890e-09, +-8.161877897977958335e-09, +-8.036643009072199111e-09, +-7.911425567967108685e-09, +-7.786225776666037502e-09, +-7.661043837060721216e-09, +-7.535879950991994096e-09, +-7.410734320194043668e-09, +-7.285607146360610810e-09, +-7.160498631066991577e-09, +-7.035408975830789488e-09, +-6.910338382089448470e-09, +-6.785287051177632777e-09, +-6.660255184388028901e-09, +-6.535242982893306044e-09, +-6.410250647801432997e-09, +-6.285278380155052786e-09, +-6.160326380881583836e-09, +-6.035394850853709200e-09, +-5.910483990839197308e-09, +-5.785594001533922185e-09, +-5.660725083566953097e-09, +-5.535877437450586221e-09, +-5.411051263640724698e-09, +-5.286246762481360748e-09, +-5.161464134265086416e-09, +-5.036703579183009438e-09, +-4.911965297329906578e-09, +-4.787249488737218208e-09, +-4.662556353322803702e-09, +-4.537886090951682137e-09, +-4.413238901385712415e-09, +-4.288614984283423689e-09, +-4.164014539254998888e-09, +-4.039437765784485822e-09, +-3.914884863295902978e-09, +-3.790356031103098312e-09, +-3.665851468442761613e-09, +-3.541371374479439697e-09, +-3.416915948255614409e-09, +-3.292485388752148839e-09, +-3.168079894832713610e-09, +-3.043699665304315406e-09, +-2.919344898867153282e-09, +-2.795015794119958529e-09, +-2.670712549592734068e-09, +-2.546435363696777440e-09, +-2.422184434785149361e-09, +-2.297959961102624747e-09, +-2.173762140785375492e-09, +-2.049591171915958947e-09, +-1.925447252445599348e-09, +-1.801330580254730189e-09, +-1.677241353130528831e-09, +-1.553179768744515829e-09, +-1.429146024713067120e-09, +-1.305140318519719019e-09, +-1.181162847581178266e-09, +-1.057213809191768365e-09, +-9.332934005839008369e-10, +-8.094018188780367822e-10, +-6.855392610879230421e-10, +-5.617059241534208241e-10, +-4.379020048905047020e-10, +-3.141277000516929161e-10, +-1.903832062760558343e-10, +-6.666872008891966563e-11, + 5.701556203772998672e-11, + 1.806694437903979875e-10, + 3.042927288985064982e-10, + 4.278852212119464810e-10, + 5.514467246958466024e-10, + 6.749770433757321729e-10, + 7.984759814150220962e-10, + 9.219433430602052506e-10, + 1.045378932641121059e-09, + 1.168782554620889351e-09, + 1.292154013535569501e-09, + 1.415493114044069511e-09, + 1.538799660895363493e-09, + 1.662073458923304840e-09, + 1.785314313096509346e-09, + 1.908522028458033686e-09, + 2.031696410180765287e-09, + 2.154837263496143142e-09, + 2.277944393799049896e-09, + 2.401017606532513828e-09, + 2.524056707265073399e-09, + 2.647061501685540371e-09, + 2.770031795548328134e-09, + 2.892967394750707477e-09, + 3.015868105278120026e-09, + 3.138733733199008777e-09, + 3.261564084742033339e-09, + 3.384358966180971061e-09, + 3.507118183939417002e-09, + 3.629841544530642527e-09, + 3.752528854557886059e-09, + 3.875179920764083179e-09, + 3.997794549971739693e-09, + 4.120372549138170752e-09, + 4.242913725295346214e-09, + 4.365417885599653826e-09, + 4.487884837326661518e-09, + 4.610314387838502498e-09, + 4.732706344633535869e-09, + 4.855060515280828957e-09, + 4.977376707497194302e-09, + 5.099654729092710710e-09, + 5.221894387965466525e-09, + 5.344095492178620596e-09, + 5.466257849845686395e-09, + 5.588381269234764216e-09, + 5.710465558708680591e-09, + 5.832510526725278641e-09, + 5.954515981886942193e-09, + 6.076481732880715361e-09, + 6.198407588527834940e-09, + 6.320293357751171753e-09, + 6.442138849570078142e-09, + 6.563943873149879839e-09, + 6.685708237741993881e-09, + 6.807431752738951835e-09, + 6.929114227614525156e-09, + 7.050755471973153369e-09, + 7.172355295550309679e-09, + 7.293913508152727244e-09, + 7.415429919762287274e-09, + 7.536904340421817648e-09, + 7.658336580311679908e-09, + 7.779726449744719327e-09, + 7.901073759111877779e-09, + 8.022378318958884139e-09, + 8.143639939921189908e-09, + 8.264858432773184806e-09, + 8.386033608395789489e-09, + 8.507165277771381625e-09, + 8.628253252033109092e-09, + 8.749297342405164229e-09, + 8.870297360257589514e-09, + 8.991253117046629572e-09, + 9.112164424364140328e-09, + 9.233031093932235489e-09, + 9.353852937571048012e-09, + 9.474629767247955621e-09, + 9.595361395017944393e-09, + 9.716047633072981513e-09, + 9.836688293742197256e-09, + 9.957283189437878364e-09, + 1.007783213273174568e-08, + 1.019833493630095249e-08, + 1.031879141292292124e-08, + 1.043920137555166259e-08, + 1.055956463720408762e-08, + 1.067988101106328803e-08, + 1.080015031041929342e-08, + 1.092037234866922844e-08, + 1.104054693936640603e-08, + 1.116067389616103336e-08, + 1.128075303284924058e-08, + 1.140078416333002599e-08, + 1.152076710165419540e-08, + 1.164070166196515251e-08, + 1.176058765854807483e-08, + 1.188042490582982432e-08, + 1.200021321832530806e-08, + 1.211995241071357386e-08, + 1.223964229777843032e-08, + 1.235928269443045312e-08, + 1.247887341572882590e-08, + 1.259841427682235897e-08, + 1.271790509302501752e-08, + 1.283734567976252215e-08, + 1.295673585257254741e-08, + 1.307607542715349564e-08, + 1.319536421930544456e-08, + 1.331460204497899729e-08, + 1.343378872024322902e-08, + 1.355292406128052715e-08, + 1.367200788443538493e-08, + 1.379104000615535407e-08, + 1.391002024304521512e-08, + 1.402894841180266745e-08, + 1.414782432929397334e-08, + 1.426664781249491871e-08, + 1.438541867851281617e-08, + 1.450413674460802330e-08, + 1.462280182813531206e-08, + 1.474141374661922167e-08, + 1.485997231770060614e-08, + 1.497847735913708600e-08, + 1.509692868885137044e-08, + 1.521532612487287168e-08, + 1.533366948538575251e-08, + 1.545195858869736940e-08, + 1.557019325323315059e-08, + 1.568837329758502582e-08, + 1.580649854045273629e-08, + 1.592456880069766747e-08, + 1.604258389728430798e-08, + 1.616054364932878846e-08, + 1.627844787609338586e-08, + 1.639629639695507726e-08, + 1.651408903145382412e-08, + 1.663182559923400127e-08, + 1.674950592009275385e-08, + 1.686712981398021902e-08, + 1.698469710094679485e-08, + 1.710220760121748401e-08, + 1.721966113512848540e-08, + 1.733705752317544526e-08, + 1.745439658598180591e-08, + 1.757167814429356146e-08, + 1.768890201902754196e-08, + 1.780606803121304426e-08, + 1.792317600204567484e-08, + 1.804022575282849421e-08, + 1.815721710502055597e-08, + 1.827414988023173516e-08, + 1.839102390019116645e-08, + 1.850783898679523710e-08, + 1.862459496204930715e-08, + 1.874129164811622191e-08, + 1.885792886731604062e-08, + 1.897450644206821987e-08, + 1.909102419499246343e-08, + 1.920748194879785690e-08, + 1.932387952635723787e-08, + 1.944021675070201112e-08, + 1.955649344496985764e-08, + 1.967270943247848927e-08, + 1.978886453666299811e-08, + 1.990495858112863063e-08, + 2.002099138959303059e-08, + 2.013696278593411957e-08, + 2.025287259418482949e-08, + 2.036872063850191460e-08, + 2.048450674321384853e-08, + 2.060023073276257754e-08, + 2.071589243175153341e-08, + 2.083149166494590473e-08, + 2.094702825721490634e-08, + 2.106250203363196411e-08, + 2.117791281936456427e-08, + 2.129326043974842505e-08, + 2.140854472028175604e-08, + 2.152376548657356600e-08, + 2.163892256441747720e-08, + 2.175401577973909021e-08, + 2.186904495859114325e-08, + 2.198400992722747211e-08, + 2.209891051199262117e-08, + 2.221374653942244516e-08, + 2.232851783618578628e-08, + 2.244322422908554294e-08, + 2.255786554510550140e-08, + 2.267244161135329009e-08, + 2.278695225511294200e-08, + 2.290139730377693346e-08, + 2.301577658494621350e-08, + 2.313008992632005316e-08, + 2.324433715577010126e-08, + 2.335851810133491185e-08, + 2.347263259116827184e-08, + 2.358668045361243630e-08, + 2.370066151714594655e-08, + 2.381457561037939835e-08, + 2.392842256212775069e-08, + 2.404220220130177657e-08, + 2.415591435700699043e-08, + 2.426955885848675804e-08, + 2.438313553512242220e-08, + 2.449664421648042557e-08, + 2.461008473225536424e-08, + 2.472345691231724292e-08, + 2.483676058668009500e-08, + 2.494999558549724117e-08, + 2.506316173910830304e-08, + 2.517625887798232952e-08, + 2.528928683276997205e-08, + 2.540224543424641579e-08, + 2.551513451335898876e-08, + 2.562795390122124925e-08, + 2.574070342908272744e-08, + 2.585338292837566453e-08, + 2.596599223065326527e-08, + 2.607853116766210277e-08, + 2.619099957129082669e-08, + 2.630339727357037499e-08, + 2.641572410672086183e-08, + 2.652797990309460469e-08, + 2.664016449522316115e-08, + 2.675227771578654457e-08, + 2.686431939760830730e-08, + 2.697628937370206131e-08, + 2.708818747721510751e-08, + 2.720001354148046211e-08, + 2.731176739995988699e-08, + 2.742344888629078427e-08, + 2.753505783428141518e-08, + 2.764659407787999000e-08, + 2.775805745122133756e-08, + 2.786944778857049483e-08, + 2.798076492436957833e-08, + 2.809200869323729770e-08, + 2.820317892991850430e-08, + 2.831427546935589125e-08, + 2.842529814662897067e-08, + 2.853624679700004503e-08, + 2.864712125588413089e-08, + 2.875792135884373442e-08, + 2.886864694163555734e-08, + 2.897929784015385818e-08, + 2.908987389048231653e-08, + 2.920037492883791711e-08, + 2.931080079161700715e-08, + 2.942115131539060466e-08, + 2.953142633687379937e-08, + 2.964162569297244206e-08, + 2.975174922072637356e-08, + 2.986179675735627953e-08, + 2.997176814026359783e-08, + 3.008166320697999103e-08, + 3.019148179523868905e-08, + 3.030122374291869091e-08, + 3.041088888806555008e-08, + 3.052047706891200772e-08, + 3.062998812382185021e-08, + 3.073942189136178792e-08, + 3.084877821025038171e-08, + 3.095805691935883042e-08, + 3.106725785775652538e-08, + 3.117638086465533809e-08, + 3.128542577945610786e-08, + 3.139439244170762018e-08, + 3.150328069115262447e-08, + 3.161209036767265783e-08, + 3.172082131133337452e-08, + 3.182947336238531362e-08, + 3.193804636120777641e-08, + 3.204654014840583157e-08, + 3.215495456470404559e-08, + 3.226328945101733577e-08, + 3.237154464844634460e-08, + 3.247971999822712075e-08, + 3.258781534180195216e-08, + 3.269583052076910657e-08, + 3.280376537688330136e-08, + 3.291161975210115213e-08, + 3.301939348852555314e-08, + 3.312708642845193979e-08, + 3.323469841433775577e-08, + 3.334222928879798631e-08, + 3.344967889465041483e-08, + 3.355704707486053936e-08, + 3.366433367259239450e-08, + 3.377153853114317773e-08, + 3.387866149403841481e-08, + 3.398570240492783435e-08, + 3.409266110765508917e-08, + 3.419953744625269396e-08, + 3.430633126489328120e-08, + 3.441304240795842259e-08, + 3.451967071999012975e-08, + 3.462621604568563310e-08, + 3.473267822996661356e-08, + 3.483905711787617556e-08, + 3.494535255467266251e-08, + 3.505156438577548645e-08, + 3.515769245676537950e-08, + 3.526373661342935936e-08, + 3.536969670170616193e-08, + 3.547557256773583236e-08, + 3.558136405780611058e-08, + 3.568707101839663579e-08, + 3.579269329617430766e-08, + 3.589823073796390485e-08, + 3.600368319079316968e-08, + 3.610905050183781714e-08, + 3.621433251846692398e-08, + 3.631952908824260441e-08, + 3.642464005886645518e-08, + 3.652966527827313280e-08, + 3.663460459452218483e-08, + 3.673945785589181907e-08, + 3.684422491082537501e-08, + 3.694890560793074818e-08, + 3.705349979602551445e-08, + 3.715800732408275303e-08, + 3.726242804127555539e-08, + 3.736676179694767693e-08, + 3.747100844060910987e-08, + 3.757516782198036058e-08, + 3.767923979093841815e-08, + 3.778322419756595511e-08, + 3.788712089209824888e-08, + 3.799092972496692968e-08, + 3.809465054680003354e-08, + 3.819828320836935382e-08, + 3.830182756068180833e-08, + 3.840528345487925784e-08, + 3.850865074230526280e-08, + 3.861192927450084824e-08, + 3.871511890315677212e-08, + 3.881821948018067252e-08, + 3.892123085764954781e-08, + 3.902415288780462808e-08, + 3.912698542312003781e-08, + 3.922972831620039745e-08, + 3.933238141987373244e-08, + 3.943494458712826329e-08, + 3.953741767116138133e-08, + 3.963980052532648417e-08, + 3.974209300317654493e-08, + 3.984429495845996972e-08, + 3.994640624509115666e-08, + 4.004842671719422392e-08, + 4.015035622905093707e-08, + 4.025219463514332539e-08, + 4.035394179015416500e-08, + 4.045559754891959791e-08, + 4.055716176649557117e-08, + 4.065863429811127655e-08, + 4.076001499916371760e-08, + 4.086130372528459880e-08, + 4.096250033224131532e-08, + 4.106360467602674515e-08, + 4.116461661280763304e-08, + 4.126553599892442504e-08, + 4.136636269093483116e-08, + 4.146709654556085932e-08, + 4.156773741973242434e-08, + 4.166828517054939024e-08, + 4.176873965532427926e-08, + 4.186910073153068887e-08, + 4.196936825684589488e-08, + 4.206954208915046761e-08, + 4.216962208648290932e-08, + 4.226960810710375080e-08, + 4.236950000944537125e-08, + 4.246929765213056024e-08, + 4.256900089399131123e-08, + 4.266860959401779449e-08, + 4.276812361142367122e-08, + 4.286754280560034060e-08, + 4.296686703611600670e-08, + 4.306609616275851319e-08, + 4.316523004548413097e-08, + 4.326426854446004212e-08, + 4.336321152003553420e-08, + 4.346205883273875107e-08, + 4.356081034331822397e-08, + 4.365946591269177824e-08, + 4.375802540199300761e-08, + 4.385648867252116696e-08, + 4.395485558578237246e-08, + 4.405312600348541942e-08, + 4.415129978751423378e-08, + 4.424937679996925110e-08, + 4.434735690311329899e-08, + 4.444523995943488642e-08, + 4.454302583160331758e-08, + 4.464071438246836762e-08, + 4.473830547510231000e-08, + 4.483579897274901520e-08, + 4.493319473886586552e-08, + 4.503049263709643170e-08, + 4.512769253126574806e-08, + 4.522479428542164506e-08, + 4.532179776378514490e-08, + 4.541870283079608226e-08, + 4.551550935106245427e-08, + 4.561221718940273919e-08, + 4.570882621084062882e-08, + 4.580533628057864480e-08, + 4.590174726403855137e-08, + 4.599805902681153916e-08, + 4.609427143470000783e-08, + 4.619038435371701676e-08, + 4.628639765004153792e-08, + 4.638231119008147377e-08, + 4.647812484042088317e-08, + 4.657383846785897134e-08, + 4.666945193938441418e-08, + 4.676496512217093122e-08, + 4.686037788361732112e-08, + 4.695569009129893598e-08, + 4.705090161301229614e-08, + 4.714601231672626007e-08, + 4.724102207062217239e-08, + 4.733593074308959560e-08, + 4.743073820269987345e-08, + 4.752544431824641788e-08, + 4.762004895869566717e-08, + 4.771455199322745235e-08, + 4.780895329123510968e-08, + 4.790325272227742479e-08, + 4.799745015616175439e-08, + 4.809154546285224230e-08, + 4.818553851253150069e-08, + 4.827942917559662632e-08, + 4.837321732261472477e-08, + 4.846690282438518051e-08, + 4.856048555189638550e-08, + 4.865396537632436272e-08, + 4.874734216907380759e-08, + 4.884061580172955560e-08, + 4.893378614609585686e-08, + 4.902685307416220363e-08, + 4.911981645814242615e-08, + 4.921267617042614048e-08, + 4.930543208362023325e-08, + 4.939808407054663158e-08, + 4.949063200419579565e-08, + 4.958307575780972138e-08, + 4.967541520478999096e-08, + 4.976765021875952690e-08, + 4.985978067355796638e-08, + 4.995180644319873396e-08, + 5.004372740192968377e-08, + 5.013554342418964941e-08, + 5.022725438460492346e-08, + 5.031886015804966815e-08, + 5.041036061955499823e-08, + 5.050175564439172558e-08, + 5.059304510802296500e-08, + 5.068422888610389603e-08, + 5.077530685452097128e-08, + 5.086627888934459508e-08, + 5.095714486687255383e-08, + 5.104790466358261514e-08, + 5.113855815617129954e-08, + 5.122910522155008862e-08, + 5.131954573681996774e-08, + 5.140987957930918518e-08, + 5.150010662652284703e-08, + 5.159022675620291100e-08, + 5.168023984628533840e-08, + 5.177014577489625609e-08, + 5.185994442041114945e-08, + 5.194963566136700262e-08, + 5.203921937654176078e-08, + 5.212869544490805431e-08, + 5.221806374563417822e-08, + 5.230732415812151376e-08, + 5.239647656195835855e-08, + 5.248552083695870478e-08, + 5.257445686313578928e-08, + 5.266328452069952598e-08, + 5.275200369009342459e-08, + 5.284061425194872513e-08, + 5.292911608712698778e-08, + 5.301750907667364506e-08, + 5.310579310185599255e-08, + 5.319396804416313597e-08, + 5.328203378526105211e-08, + 5.336999020707081364e-08, + 5.345783719167734116e-08, + 5.354557462140952063e-08, + 5.363320237879362314e-08, + 5.372072034655353654e-08, + 5.380812840764876281e-08, + 5.389542644522898929e-08, + 5.398261434267085522e-08, + 5.406969198355375173e-08, + 5.415665925165552711e-08, + 5.424351603099017319e-08, + 5.433026220576228406e-08, + 5.441689766040873936e-08, + 5.450342227955253435e-08, + 5.458983594804208097e-08, + 5.467613855094505355e-08, + 5.476232997352461237e-08, + 5.484841010127693779e-08, + 5.493437881988555667e-08, + 5.502023601525889633e-08, + 5.510598157353037724e-08, + 5.519161538101758995e-08, + 5.527713732427919856e-08, + 5.536254729007491836e-08, + 5.544784516536073806e-08, + 5.553303083734729226e-08, + 5.561810419341346412e-08, + 5.570306512118441161e-08, + 5.578791350847797946e-08, + 5.587264924334722287e-08, + 5.595727221403398612e-08, + 5.604178230900643010e-08, + 5.612617941695507511e-08, + 5.621046342676842214e-08, + 5.629463422757011646e-08, + 5.637869170867309539e-08, + 5.646263575961867746e-08, + 5.654646627017400156e-08, + 5.663018313029306993e-08, + 5.671378623017336713e-08, + 5.679727546021160911e-08, + 5.688065071101967804e-08, + 5.696391187344080196e-08, + 5.704705883850643553e-08, + 5.713009149749142963e-08, + 5.721300974187435320e-08, + 5.729581346333773144e-08, + 5.737850255380467338e-08, + 5.746107690539399235e-08, + 5.754353641045710490e-08, + 5.762588096154596260e-08, + 5.770811045144952744e-08, + 5.779022477314877981e-08, + 5.787222381985404750e-08, + 5.795410748500439690e-08, + 5.803587566222843789e-08, + 5.811752824539949343e-08, + 5.819906512859216934e-08, + 5.828048620609969193e-08, + 5.836179137244774515e-08, + 5.844298052235209240e-08, + 5.852405355077428888e-08, + 5.860501035288211580e-08, + 5.868585082404942163e-08, + 5.876657485989152540e-08, + 5.884718235622351356e-08, + 5.892767320909367132e-08, + 5.900804731476143333e-08, + 5.908830456969283086e-08, + 5.916844487059649734e-08, + 5.924846811438041670e-08, + 5.932837419819123106e-08, + 5.940816301937065817e-08, + 5.948783447549260869e-08, + 5.956738846435707168e-08, + 5.964682488396881302e-08, + 5.972614363257086631e-08, + 5.980534460859931589e-08, + 5.988442771073734808e-08, + 5.996339283787589729e-08, + 6.004223988911531358e-08, + 6.012096876379852930e-08, + 6.019957936146988537e-08, + 6.027807158190948903e-08, + 6.035644532510994690e-08, + 6.043470049127345332e-08, + 6.051283698084590991e-08, + 6.059085469447456063e-08, + 6.066875353304731271e-08, + 6.074653339764981586e-08, + 6.082419418960068031e-08, + 6.090173581044709608e-08, + 6.097915816194270423e-08, + 6.105646114608142526e-08, + 6.113364466505613975e-08, + 6.121070862129352262e-08, + 6.128765291745230934e-08, + 6.136447745638356481e-08, + 6.144118214120205909e-08, + 6.151776687520664634e-08, + 6.159423156193386609e-08, + 6.167057610515316549e-08, + 6.174680040883166796e-08, + 6.182290437718412175e-08, + 6.189888791462951591e-08, + 6.197475092582852181e-08, + 6.205049331564196207e-08, + 6.212611498916519477e-08, + 6.220161585172409010e-08, + 6.227699580885247804e-08, + 6.235225476632687676e-08, + 6.242739263012411450e-08, + 6.250240930645599170e-08, + 6.257730470176924136e-08, + 6.265207872270415672e-08, + 6.272673127616620530e-08, + 6.280126226924705626e-08, + 6.287567160927796997e-08, + 6.294995920382499377e-08, + 6.302412496065255273e-08, + 6.309816878777492020e-08, + 6.317209059342017915e-08, + 6.324589028602617234e-08, + 6.331956777429153601e-08, + 6.339312296709989048e-08, + 6.346655577358903210e-08, + 6.353986610310265244e-08, + 6.361305386522804440e-08, + 6.368611896975598737e-08, + 6.375906132671292113e-08, + 6.383188084636154152e-08, + 6.390457743916081778e-08, + 6.397715101583560808e-08, + 6.404960148729928838e-08, + 6.412192876470613607e-08, + 6.419413275944619490e-08, + 6.426621338311071865e-08, + 6.433817054754152400e-08, + 6.441000416479577255e-08, + 6.448171414714331058e-08, + 6.455330040711467198e-08, + 6.462476285742816726e-08, + 6.469610141105636241e-08, + 6.476731598118797563e-08, + 6.483840648122779793e-08, + 6.490937282482811276e-08, + 6.498021492585028836e-08, + 6.505093269839719001e-08, + 6.512152605679081305e-08, + 6.519199491556964916e-08, + 6.526233918952076771e-08, + 6.533255879364032286e-08, + 6.540265364316972452e-08, + 6.547262365355249259e-08, + 6.554246874048511866e-08, + 6.561218881987988920e-08, + 6.568178380786358855e-08, + 6.575125362082497243e-08, + 6.582059817534255844e-08, + 6.588981738825033723e-08, + 6.595891117659947079e-08, + 6.602787945765939088e-08, + 6.609672214894810698e-08, + 6.616543916819418242e-08, + 6.623403043336847167e-08, + 6.630249586266297096e-08, + 6.637083537448814486e-08, + 6.643904888750340621e-08, + 6.650713632057886729e-08, + 6.657509759283159020e-08, + 6.664293262358598805e-08, + 6.671064133240569459e-08, + 6.677822363909012313e-08, + 6.684567946365372746e-08, + 6.691300872635690534e-08, + 6.698021134766581735e-08, + 6.704728724829937078e-08, + 6.711423634919520591e-08, + 6.718105857151055636e-08, + 6.724775383665185544e-08, + 6.731432206623852558e-08, + 6.738076318213283617e-08, + 6.744707710641954836e-08, + 6.751326376140357245e-08, + 6.757932306963974639e-08, + 6.764525495389547369e-08, + 6.771105933718498859e-08, + 6.777673614273233799e-08, + 6.784228529400206001e-08, + 6.790770671469498847e-08, + 6.797300032872841382e-08, + 6.803816606026766159e-08, + 6.810320383368765824e-08, + 6.816811357360363615e-08, + 6.823289520487138503e-08, + 6.829754865255412502e-08, + 6.836207384196855090e-08, + 6.842647069864887284e-08, + 6.849073914835989248e-08, + 6.855487911711113784e-08, + 6.861889053111883943e-08, + 6.868277331685384057e-08, + 6.874652740100131040e-08, + 6.881015271049372520e-08, + 6.887364917247546506e-08, + 6.893701671433116304e-08, + 6.900025526368434195e-08, + 6.906336474837566946e-08, + 6.912634509649394093e-08, + 6.918919623633989524e-08, + 6.925191809645511983e-08, + 6.931451060562301677e-08, + 6.937697369283212895e-08, + 6.943930728733862195e-08, + 6.950151131859834938e-08, + 6.956358571631117651e-08, + 6.962553041041865093e-08, + 6.968734533107225205e-08, + 6.974903040867719858e-08, + 6.981058557386129364e-08, + 6.987201075747507027e-08, + 6.993330589062045826e-08, + 6.999447090461518228e-08, + 7.005550573102238156e-08, + 7.011641030163046638e-08, + 7.017718454845164902e-08, + 7.023782840374883705e-08, + 7.029834180000152697e-08, + 7.035872466993840184e-08, + 7.041897694649491336e-08, + 7.047909856287340805e-08, + 7.053908945247807770e-08, + 7.059894954895834341e-08, + 7.065867878620528211e-08, + 7.071827709832187455e-08, + 7.077774441966474815e-08, + 7.083708068481486171e-08, + 7.089628582857414376e-08, + 7.095535978600736773e-08, + 7.101430249237920682e-08, + 7.107311388321197785e-08, + 7.113179389425181283e-08, + 7.119034246146914873e-08, + 7.124875952108618977e-08, + 7.130704500954305268e-08, + 7.136519886352816717e-08, + 7.142322101994566518e-08, + 7.148111141594183744e-08, + 7.153886998890293647e-08, + 7.159649667643625066e-08, + 7.165399141639858582e-08, + 7.171135414685867800e-08, + 7.176858480614003493e-08, + 7.182568333279107800e-08, + 7.188264966558233658e-08, + 7.193948374354747607e-08, + 7.199618550592155723e-08, + 7.205275489219736379e-08, + 7.210919184209296379e-08, + 7.216549629555170959e-08, + 7.222166819276779437e-08, + 7.227770747415595754e-08, + 7.233361408037573104e-08, + 7.238938795231613978e-08, + 7.244502903109028859e-08, + 7.250053725806461134e-08, + 7.255591257482423521e-08, + 7.261115492320330184e-08, + 7.266626424525333591e-08, + 7.272124048326844443e-08, + 7.277608357978622989e-08, + 7.283079347755564274e-08, + 7.288537011959140325e-08, + 7.293981344911519890e-08, + 7.299412340959391998e-08, + 7.304829994473746258e-08, + 7.310234299847113386e-08, + 7.315625251497425823e-08, + 7.321002843864743420e-08, + 7.326367071413618517e-08, + 7.331717928631691719e-08, + 7.337055410029087061e-08, + 7.342379510141190012e-08, + 7.347690223525445958e-08, + 7.352987544764196432e-08, + 7.358271468461598040e-08, + 7.363541989246147670e-08, + 7.368799101770441623e-08, + 7.374042800709440518e-08, + 7.379273080762978623e-08, + 7.384489936652780715e-08, + 7.389693363124899946e-08, + 7.394883354949737695e-08, + 7.400059906919292032e-08, + 7.405223013850982606e-08, + 7.410372670585011603e-08, + 7.415508871983968027e-08, + 7.420631612936657874e-08, + 7.425740888352516364e-08, + 7.430836693166610726e-08, + 7.435919022336260012e-08, + 7.440987870843593395e-08, + 7.446043233692806583e-08, + 7.451085105912323071e-08, + 7.456113482554710765e-08, + 7.461128358695002472e-08, + 7.466129729433133768e-08, + 7.471117589890990294e-08, + 7.476091935214828416e-08, + 7.481052760575199789e-08, + 7.486000061164525398e-08, + 7.490933832200473105e-08, + 7.495854068923300082e-08, + 7.500760766596865279e-08, + 7.505653920509550574e-08, + 7.510533525971599236e-08, + 7.515399578318515968e-08, + 7.520252072908811682e-08, + 7.525091005123591893e-08, + 7.529916370369218259e-08, + 7.534728164074322783e-08, + 7.539526381692112014e-08, + 7.544311018698913854e-08, + 7.549082070593816242e-08, + 7.553839532901164585e-08, + 7.558583401167483315e-08, + 7.563313670964241984e-08, + 7.568030337884659041e-08, + 7.572733397547406274e-08, + 7.577422845593683900e-08, + 7.582098677688330972e-08, + 7.586760889520710795e-08, + 7.591409476802192326e-08, + 7.596044435269374190e-08, + 7.600665760681735491e-08, + 7.605273448821618605e-08, + 7.609867495496464553e-08, + 7.614447896536140878e-08, + 7.619014647794944079e-08, + 7.623567745150550092e-08, + 7.628107184503303570e-08, + 7.632632961778692810e-08, + 7.637145072924614101e-08, + 7.641643513913769885e-08, + 7.646128280741050899e-08, + 7.650599369425660371e-08, + 7.655056776010879764e-08, + 7.659500496562777051e-08, + 7.663930527172087393e-08, + 7.668346863951783212e-08, + 7.672749503039186481e-08, + 7.677138440595964752e-08, + 7.681513672805676087e-08, + 7.685875195877216741e-08, + 7.690223006041942579e-08, + 7.694557099555739011e-08, + 7.698877472697641916e-08, + 7.703184121769599414e-08, + 7.707477043098631799e-08, + 7.711756233034154125e-08, + 7.716021687950384951e-08, + 7.720273404243840977e-08, + 7.724511378335281254e-08, + 7.728735606669602622e-08, + 7.732946085714324321e-08, + 7.737142811961832622e-08, + 7.741325781926729884e-08, + 7.745494992147880668e-08, + 7.749650439188501727e-08, + 7.753792119633667240e-08, + 7.757920030094472500e-08, + 7.762034167203421557e-08, + 7.766134527617551979e-08, + 7.770221108018152943e-08, + 7.774293905108621188e-08, + 7.778352915617495772e-08, + 7.782398136295878595e-08, + 7.786429563919582417e-08, + 7.790447195286675790e-08, + 7.794451027219525202e-08, + 7.798441056564589932e-08, + 7.802417280191028418e-08, + 7.806379694992741726e-08, + 7.810328297885898625e-08, + 7.814263085811018756e-08, + 7.818184055732825726e-08, + 7.822091204637931005e-08, + 7.825984529538936737e-08, + 7.829864027469929265e-08, + 7.833729695489429184e-08, + 7.837581530680223260e-08, + 7.841419530147265376e-08, + 7.845243691020540562e-08, + 7.849054010453046674e-08, + 7.852850485620527050e-08, + 7.856633113724435125e-08, + 7.860401891987539123e-08, + 7.864156817657805177e-08, + 7.867897888006360475e-08, + 7.871625100327109451e-08, + 7.875338451938906954e-08, + 7.879037940183157436e-08, + 7.882723562425892835e-08, + 7.886395316055054124e-08, + 7.890053198484510747e-08, + 7.893697207149554145e-08, + 7.897327339510047651e-08, + 7.900943593049989745e-08, + 7.904545965275456026e-08, + 7.908134453717624710e-08, + 7.911709055930635222e-08, + 7.915269769491369821e-08, + 7.918816592002317632e-08, + 7.922349521087387126e-08, + 7.925868554395602623e-08, + 7.929373689598995977e-08, + 7.932864924392565545e-08, + 7.936342256496054957e-08, + 7.939805683651832888e-08, + 7.943255203626565949e-08, + 7.946690814210079157e-08, + 7.950112513215317562e-08, + 7.953520298479810020e-08, + 7.956914167863703812e-08, + 7.960294119251707532e-08, + 7.963660150550669093e-08, + 7.967012259692394765e-08, + 7.970350444631605708e-08, + 7.973674703345918115e-08, + 7.976985033838283730e-08, + 7.980281434133133199e-08, + 7.983563902279950816e-08, + 7.986832436351211200e-08, + 7.990087034442348857e-08, + 7.993327694673420484e-08, + 7.996554415187159436e-08, + 7.999767194150516271e-08, + 8.002966029753557603e-08, + 8.006150920209353612e-08, + 8.009321863755619163e-08, + 8.012478858652645197e-08, + 8.015621903185103969e-08, + 8.018750995660124696e-08, + 8.021866134408921445e-08, + 8.024967317786524469e-08, + 8.028054544170735972e-08, + 8.031127811963789766e-08, + 8.034187119590286624e-08, + 8.037232465498881733e-08, + 8.040263848162252929e-08, + 8.043281266075328542e-08, + 8.046284717757743798e-08, + 8.049274201751727200e-08, + 8.052249716623652987e-08, + 8.055211260963053806e-08, + 8.058158833382408955e-08, + 8.061092432518680959e-08, + 8.064012057031367385e-08, + 8.066917705604466231e-08, + 8.069809376944191580e-08, + 8.072687069780823838e-08, + 8.075550782868407980e-08, + 8.078400514983770198e-08, + 8.081236264927963147e-08, + 8.084058031524469976e-08, + 8.086865813620813685e-08, + 8.089659610088350665e-08, + 8.092439419820657365e-08, + 8.095205241735940361e-08, + 8.097957074775188771e-08, + 8.100694917902756586e-08, + 8.103418770106999269e-08, + 8.106128630398692188e-08, + 8.108824497813006582e-08, + 8.111506371408076225e-08, + 8.114174250264904779e-08, + 8.116828133488903692e-08, + 8.119468020207986369e-08, + 8.122093909574124600e-08, + 8.124705800761998598e-08, + 8.127303692970553422e-08, + 8.129887585420978012e-08, + 8.132457477358400576e-08, + 8.135013368051757564e-08, + 8.137555256792227984e-08, + 8.140083142895394656e-08, + 8.142597025699571323e-08, + 8.145096904566513367e-08, + 8.147582778881781762e-08, + 8.150054648053229011e-08, + 8.152512511513090253e-08, + 8.154956368716524779e-08, + 8.157386219141466479e-08, + 8.159802062290096885e-08, + 8.162203897687099488e-08, + 8.164591724881140723e-08, + 8.166965543443849559e-08, + 8.169325352969632209e-08, + 8.171671153077110766e-08, + 8.174002943407448987e-08, + 8.176320723625830628e-08, + 8.178624493419419953e-08, + 8.180914252500450753e-08, + 8.183190000602750865e-08, + 8.185451737484121806e-08, + 8.187699462925950990e-08, + 8.189933176731886914e-08, + 8.192152878729837630e-08, + 8.194358568770438144e-08, + 8.196550246727233052e-08, + 8.198727912497739309e-08, + 8.200891566001994358e-08, + 8.203041207183858444e-08, + 8.205176836010015378e-08, + 8.207298452469988422e-08, + 8.209406056577312897e-08, + 8.211499648367994321e-08, + 8.213579227901940423e-08, + 8.215644795261382220e-08, + 8.217696350552110157e-08, + 8.219733893903385432e-08, + 8.221757425467020172e-08, + 8.223766945418685040e-08, + 8.225762453956351487e-08, + 8.227743951301649655e-08, + 8.229711437699571913e-08, + 8.231664913417235394e-08, + 8.233604378746359570e-08, + 8.235529834000280455e-08, + 8.237441279516512886e-08, + 8.239338715655284094e-08, + 8.241222142799414590e-08, + 8.243091561355787238e-08, + 8.244946971753568485e-08, + 8.246788374445668173e-08, + 8.248615769907287667e-08, + 8.250429158637092468e-08, + 8.252228541157046777e-08, + 8.254013918011615432e-08, + 8.255785289769019898e-08, + 8.257542657019658021e-08, + 8.259286020377419576e-08, + 8.261015380479500980e-08, + 8.262730737985187680e-08, + 8.264432093578090851e-08, + 8.266119447963528212e-08, + 8.267792801870473521e-08, + 8.269452156051101301e-08, + 8.271097511279763777e-08, + 8.272728868354589657e-08, + 8.274346228096139459e-08, + 8.275949591348337257e-08, + 8.277538958977855250e-08, + 8.279114331873917891e-08, + 8.280675710949499642e-08, + 8.282223097139784433e-08, + 8.283756491403493124e-08, + 8.285275894721611628e-08, + 8.286781308098322651e-08, + 8.288272732561085099e-08, + 8.289750169159307942e-08, + 8.291213618966568383e-08, + 8.292663083078162080e-08, + 8.294098562612717799e-08, + 8.295520058712028014e-08, + 8.296927572540008638e-08, + 8.298321105284170747e-08, + 8.299700658154491640e-08, + 8.301066232383368522e-08, + 8.302417829227202717e-08, + 8.303755449963910185e-08, + 8.305079095895058958e-08, + 8.306388768344786527e-08, + 8.307684468659618520e-08, + 8.308966198209546026e-08, + 8.310233958386764309e-08, + 8.311487750606764685e-08, + 8.312727576307237351e-08, + 8.313953436949255908e-08, + 8.315165334015926078e-08, + 8.316363269013447141e-08, + 8.317547243471056351e-08, + 8.318717258939921174e-08, + 8.319873316994814824e-08, + 8.321015419232719986e-08, + 8.322143567272975719e-08, + 8.323257762758596978e-08, + 8.324358007354213938e-08, + 8.325444302747887825e-08, + 8.326516650650056092e-08, + 8.327575052793486097e-08, + 8.328619510934239931e-08, + 8.329650026850459448e-08, + 8.330666602343346975e-08, + 8.331669239236459894e-08, + 8.332657939375797985e-08, + 8.333632704630388416e-08, + 8.334593536891469147e-08, + 8.335540438073347873e-08, + 8.336473410112277061e-08, + 8.337392454967375096e-08, + 8.338297574620515110e-08, + 8.339188771075757203e-08, + 8.340066046360116070e-08, + 8.340929402522532646e-08, + 8.341778841635065249e-08, + 8.342614365792111366e-08, + 8.343435977110203841e-08, + 8.344243677728892309e-08, + 8.345037469809853823e-08, + 8.345817355537512237e-08, + 8.346583337118616020e-08, + 8.347335416782092667e-08, + 8.348073596779874560e-08, + 8.348797879385905025e-08, + 8.349508266896888753e-08, + 8.350204761631528145e-08, + 8.350887365931174467e-08, + 8.351556082159711387e-08, + 8.352210912703085134e-08, + 8.352851859970101238e-08, + 8.353478926391404121e-08, + 8.354092114420216927e-08, + 8.354691426532324316e-08, + 8.355276865225442485e-08, + 8.355848433020002672e-08, + 8.356406132458458971e-08, + 8.356949966105833611e-08, + 8.357479936549396671e-08, + 8.357996046398423879e-08, + 8.358498298284880860e-08, + 8.358986694862713745e-08, + 8.359461238808435473e-08, + 8.359921932820385964e-08, + 8.360368779619404453e-08, + 8.360801781948716988e-08, + 8.361220942573411010e-08, + 8.361626264281195032e-08, + 8.362017749881550285e-08, + 8.362395402206383199e-08, + 8.362759224109914224e-08, + 8.363109218468061094e-08, + 8.363445388179641867e-08, + 8.363767736164946891e-08, + 8.364076265366674502e-08, + 8.364370978749778830e-08, + 8.364651879301019808e-08, + 8.364918970029590506e-08, + 8.365172253966657884e-08, + 8.365411734165246321e-08, + 8.365637413700908625e-08, + 8.365849295670917383e-08, + 8.366047383194799648e-08, + 8.366231679413938571e-08, + 8.366402187492018092e-08, + 8.366558910614437958e-08, + 8.366701851988730622e-08, + 8.366831014844649917e-08, + 8.366946402433527841e-08, + 8.367048018029145411e-08, + 8.367135864926869751e-08, + 8.367209946444138485e-08, + 8.367270265920502093e-08, + 8.367316826717162010e-08, + 8.367349632217482817e-08, + 8.367368685826752692e-08, + 8.367373990971827387e-08, + 8.367365551102014322e-08, + 8.367343369687933061e-08, + 8.367307450222494692e-08, + 8.367257796220278464e-08, + 8.367194411217600610e-08, + 8.367117298772929921e-08, + 8.367026462466284237e-08, + 8.366921905899718810e-08, + 8.366803632696770445e-08, + 8.366671646503206588e-08, + 8.366525950986121390e-08, + 8.366366549834641121e-08, + 8.366193446759716385e-08, + 8.366006645493787274e-08, + 8.365806149791234685e-08, + 8.365591963428105026e-08, + 8.365364090202009635e-08, + 8.365122533932574767e-08, + 8.364867298460777200e-08, + 8.364598387649460398e-08, + 8.364315805383187601e-08, + 8.364019555567917574e-08, + 8.363709642131523411e-08, + 8.363386069023294905e-08, + 8.363048840214328976e-08, + 8.362697959697189538e-08, + 8.362333431485967051e-08, + 8.361955259616581603e-08, + 8.361563448146289246e-08, + 8.361158001154044637e-08, + 8.360738922740231041e-08, + 8.360306217026797977e-08, + 8.359859888157316802e-08, + 8.359399940296643225e-08, + 8.358926377631379200e-08, + 8.358439204369437501e-08, + 8.357938424740320981e-08, + 8.357424042994881688e-08, + 8.356896063405410874e-08, + 8.356354490265742216e-08, + 8.355799327891020214e-08, + 8.355230580617848417e-08, + 8.354648252804289425e-08, + 8.354052348829614747e-08, + 8.353442873094643618e-08, + 8.352819830021414773e-08, + 8.352183224053448492e-08, + 8.351533059655438237e-08, + 8.350869341313455783e-08, + 8.350192073535001520e-08, + 8.349501260848710628e-08, + 8.348796907804572786e-08, + 8.348079018973822315e-08, + 8.347347598948901127e-08, + 8.346602652343626801e-08, + 8.345844183792888186e-08, + 8.345072197952879656e-08, + 8.344286699501021702e-08, + 8.343487693135840492e-08, + 8.342675183577122723e-08, + 8.341849175565740916e-08, + 8.341009673863771213e-08, + 8.340156683254399401e-08, + 8.339290208541909006e-08, + 8.338410254551812320e-08, + 8.337516826130568491e-08, + 8.336609928145827052e-08, + 8.335689565486241304e-08, + 8.334755743061556994e-08, + 8.333808465802548784e-08, + 8.332847738661025546e-08, + 8.331873566609785365e-08, + 8.330885954642724064e-08, + 8.329884907774630061e-08, + 8.328870431041287605e-08, + 8.327842529499463539e-08, + 8.326801208226838479e-08, + 8.325746472322110044e-08, + 8.324678326904726840e-08, + 8.323596777115309324e-08, + 8.322501828115115118e-08, + 8.321393485086453257e-08, + 8.320271753232366558e-08, + 8.319136637776855284e-08, + 8.317988143964724946e-08, + 8.316826277061526741e-08, + 8.315651042353814318e-08, + 8.314462445148750694e-08, + 8.313260490774358394e-08, + 8.312045184579430782e-08, + 8.310816531933489704e-08, + 8.309574538226811962e-08, + 8.308319208870421372e-08, + 8.307050549295953763e-08, + 8.305768564955949478e-08, + 8.304473261323420584e-08, + 8.303164643892149984e-08, + 8.301842718176585541e-08, + 8.300507489711736839e-08, + 8.299158964053364448e-08, + 8.297797146777634491e-08, + 8.296422043481585835e-08, + 8.295033659782660252e-08, + 8.293632001318881095e-08, + 8.292217073748891671e-08, + 8.290788882751752754e-08, + 8.289347434027217867e-08, + 8.287892733295442116e-08, + 8.286424786297025866e-08, + 8.284943598793245025e-08, + 8.283449176565626206e-08, + 8.281941525416306718e-08, + 8.280420651167742070e-08, + 8.278886559662883324e-08, + 8.277339256765102974e-08, + 8.275778748358041427e-08, + 8.274205040345941842e-08, + 8.272618138653163086e-08, + 8.271018049224551637e-08, + 8.269404778025314526e-08, + 8.267778331040857874e-08, + 8.266138714277006589e-08, + 8.264485933759685408e-08, + 8.262819995535394025e-08, + 8.261140905670673730e-08, + 8.259448670252352250e-08, + 8.257743295387465667e-08, + 8.256024787203258415e-08, + 8.254293151847275926e-08, + 8.252548395487148902e-08, + 8.250790524310589341e-08, + 8.249019544525774352e-08, + 8.247235462360591766e-08, + 8.245438284063414376e-08, + 8.243628015902463339e-08, + 8.241804664166185371e-08, + 8.239968235163136278e-08, + 8.238118735221742733e-08, + 8.236256170690761521e-08, + 8.234380547938623089e-08, + 8.232491873354094619e-08, + 8.230590153345792978e-08, + 8.228675394342253545e-08, + 8.226747602792103583e-08, + 8.224806785163760485e-08, + 8.222852947945761326e-08, + 8.220886097646559042e-08, + 8.218906240794239204e-08, + 8.216913383937197646e-08, + 8.214907533643180932e-08, + 8.212888696500264421e-08, + 8.210856879116136251e-08, + 8.208812088118183371e-08, + 8.206754330154019615e-08, + 8.204683611890609545e-08, + 8.202599940014837559e-08, + 8.200503321233597883e-08, + 8.198393762272987246e-08, + 8.196271269879407343e-08, + 8.194135850818496784e-08, + 8.191987511875972827e-08, + 8.189826259856878319e-08, + 8.187652101586263289e-08, + 8.185465043908623789e-08, + 8.183265093687969393e-08, + 8.181052257808314211e-08, + 8.178826543172705448e-08, + 8.176587956704280871e-08, + 8.174336505345584566e-08, + 8.172072196058490178e-08, + 8.169795035824803093e-08, + 8.167505031645437232e-08, + 8.165202190540993414e-08, + 8.162886519551754064e-08, + 8.160558025736879854e-08, + 8.158216716175730541e-08, + 8.155862597966517665e-08, + 8.153495678227040397e-08, + 8.151115964094719961e-08, + 8.148723462725980231e-08, + 8.146318181296906836e-08, + 8.143900127002699233e-08, + 8.141469307057987020e-08, + 8.139025728696974197e-08, + 8.136569399172715216e-08, + 8.134100325757833641e-08, + 8.131618515743970245e-08, + 8.129123976442440791e-08, + 8.126616715183320173e-08, + 8.124096739316028725e-08, + 8.121564056209647208e-08, + 8.119018673251550973e-08, + 8.116460597849109318e-08, + 8.113889837428294503e-08, + 8.111306399434417607e-08, + 8.108710291332067651e-08, + 8.106101520604488233e-08, + 8.103480094754484119e-08, + 8.100846021303470975e-08, + 8.098199307792154320e-08, + 8.095539961780440851e-08, + 8.092867990846787288e-08, + 8.090183402589052697e-08, + 8.087486204623650137e-08, + 8.084776404586365899e-08, + 8.082054010131869815e-08, + 8.079319028933420118e-08, + 8.076571468683521221e-08, + 8.073811337093199762e-08, + 8.071038641892904581e-08, + 8.068253390831353960e-08, + 8.065455591676299277e-08, + 8.062645252214695733e-08, + 8.059822380251640917e-08, + 8.056986983611486537e-08, + 8.054139070137040352e-08, + 8.051278647689979107e-08, + 8.048405724150961021e-08, + 8.045520307418843615e-08, + 8.042622405411620734e-08, + 8.039712026065531844e-08, + 8.036789177335969942e-08, + 8.033853867196705994e-08, + 8.030906103639940549e-08, + 8.027945894676834460e-08, + 8.024973248336716114e-08, + 8.021988172667948313e-08, + 8.018990675737282420e-08, + 8.015980765629597623e-08, + 8.012958450449011347e-08, + 8.009923738317457825e-08, + 8.006876637375680716e-08, + 8.003817155782943260e-08, + 8.000745301716514765e-08, + 7.997661083372786307e-08, + 7.994564508965891656e-08, + 7.991455586728775331e-08, + 7.988334324912301891e-08, + 7.985200731786223406e-08, + 7.982054815638389336e-08, + 7.978896584774734617e-08, + 7.975726047519814350e-08, + 7.972543212216079856e-08, + 7.969348087224774676e-08, + 7.966140680925062390e-08, + 7.962921001714026621e-08, + 7.959689058007662324e-08, + 7.956444858239458333e-08, + 7.953188410861413798e-08, + 7.949919724343768193e-08, + 7.946638807174368693e-08, + 7.943345667859960569e-08, + 7.940040314924630768e-08, + 7.936722756910805825e-08, + 7.933393002379325978e-08, + 7.930051059908427402e-08, + 7.926696938094846002e-08, + 7.923330645552966409e-08, + 7.919952190915273290e-08, + 7.916561582832576337e-08, + 7.913158829972977952e-08, + 7.909743941022992916e-08, + 7.906316924686533272e-08, + 7.902877789686217254e-08, + 7.899426544761452880e-08, + 7.895963198670421858e-08, + 7.892487760188750805e-08, + 7.889000238109572126e-08, + 7.885500641244549719e-08, + 7.881988978422318582e-08, + 7.878465258489552865e-08, + 7.874929490311163076e-08, + 7.871381682768939500e-08, + 7.867821844762944510e-08, + 7.864249985210470984e-08, + 7.860666113046708017e-08, + 7.857070237224813712e-08, + 7.853462366714844484e-08, + 7.849842510505000453e-08, + 7.846210677600605043e-08, + 7.842566877025113476e-08, + 7.838911117819178390e-08, + 7.835243409040739835e-08, + 7.831563759765749225e-08, + 7.827872179086967604e-08, + 7.824168676115504870e-08, + 7.820453259979055561e-08, + 7.816725939823092641e-08, + 7.812986724810949560e-08, + 7.809235624122143390e-08, + 7.805472646954907982e-08, + 7.801697802523773312e-08, + 7.797911100061014692e-08, + 7.794112548816531014e-08, + 7.790302158056870662e-08, + 7.786479937066320744e-08, + 7.782645895145839032e-08, + 7.778800041614395987e-08, + 7.774942385807717436e-08, + 7.771072937078509574e-08, + 7.767191704797098202e-08, + 7.763298698350393762e-08, + 7.759393927143095712e-08, + 7.755477400596707850e-08, + 7.751549128149358316e-08, + 7.747609119257325582e-08, + 7.743657383392445731e-08, + 7.739693930044897078e-08, + 7.735718768721409496e-08, + 7.731731908945212790e-08, + 7.727733360257468719e-08, + 7.723723132215300322e-08, + 7.719701234393438330e-08, + 7.715667676383031359e-08, + 7.711622467792294415e-08, + 7.707565618246766971e-08, + 7.703497137388001399e-08, + 7.699417034875062472e-08, + 7.695325320383074182e-08, + 7.691222003604838361e-08, + 7.687107094249464872e-08, + 7.682980602042341171e-08, + 7.678842536726768137e-08, + 7.674692908061208536e-08, + 7.670531725822115324e-08, + 7.666358999802118458e-08, + 7.662174739810038140e-08, + 7.657978955672278445e-08, + 7.653771657230850029e-08, + 7.649552854344794205e-08, + 7.645322556890225294e-08, + 7.641080774758465829e-08, + 7.636827517858844410e-08, + 7.632562796116015641e-08, + 7.628286619471856685e-08, + 7.623998997883992904e-08, + 7.619699941327317217e-08, + 7.615389459792694411e-08, + 7.611067563287179513e-08, + 7.606734261834646447e-08, + 7.602389565474632630e-08, + 7.598033484263921863e-08, + 7.593666028275122906e-08, + 7.589287207596697268e-08, + 7.584897032334381963e-08, + 7.580495512609180447e-08, + 7.576082658558740376e-08, + 7.571658480337467420e-08, + 7.567222988114475186e-08, + 7.562776192076715263e-08, + 7.558318102426036434e-08, + 7.553848729380866825e-08, + 7.549368083176186119e-08, + 7.544876174062183532e-08, + 7.540373012305797035e-08, + 7.535858608189411035e-08, + 7.531332972011720622e-08, + 7.526796114087928762e-08, + 7.522248044748197815e-08, + 7.517688774339442868e-08, + 7.513118313223796481e-08, + 7.508536671780305407e-08, + 7.503943860402824913e-08, + 7.499339889501711530e-08, + 7.494724769503178507e-08, + 7.490098510848594370e-08, + 7.485461123996272270e-08, + 7.480812619419136679e-08, + 7.476153007606466420e-08, + 7.471482299063620711e-08, + 7.466800504310764636e-08, + 7.462107633884585720e-08, + 7.457403698336744117e-08, + 7.452688708234915520e-08, + 7.447962674162852045e-08, + 7.443225606719033592e-08, + 7.438477516518242798e-08, + 7.433718414189996703e-08, + 7.428948310380396989e-08, + 7.424167215750578846e-08, + 7.419375140976782447e-08, + 7.414572096751423647e-08, + 7.409758093781582556e-08, + 7.404933142790735991e-08, + 7.400097254517271197e-08, + 7.395250439714406435e-08, + 7.390392709152053132e-08, + 7.385524073614138465e-08, + 7.380644543900832790e-08, + 7.375754130826887341e-08, + 7.370852845222773755e-08, + 7.365940697934658924e-08, + 7.361017699822894895e-08, + 7.356083861763985576e-08, + 7.351139194648687525e-08, + 7.346183709384037541e-08, + 7.341217416891645357e-08, + 7.336240328107954374e-08, + 7.331252453985176037e-08, + 7.326253805489729449e-08, + 7.321244393604165716e-08, + 7.316224229325559917e-08, + 7.311193323665430361e-08, + 7.306151687651579570e-08, + 7.301099332325465822e-08, + 7.296036268744345884e-08, + 7.290962507980300924e-08, + 7.285878061119611823e-08, + 7.280782939264748378e-08, + 7.275677153531705121e-08, + 7.270560715052317423e-08, + 7.265433634972215380e-08, + 7.260295924453060513e-08, + 7.255147594670655819e-08, + 7.249988656815174741e-08, + 7.244819122092312599e-08, + 7.239639001721470766e-08, + 7.234448306937935129e-08, + 7.229247048991004677e-08, + 7.224035239144188700e-08, + 7.218812888676998793e-08, + 7.213580008881497197e-08, + 7.208336611066242120e-08, + 7.203082706553512380e-08, + 7.197818306679655482e-08, + 7.192543422796740659e-08, + 7.187258066270040268e-08, + 7.181962248479911794e-08, + 7.176655980821637707e-08, + 7.171339274703800217e-08, + 7.166012141550339303e-08, + 7.160674592798783202e-08, + 7.155326639901394556e-08, + 7.149968294325334521e-08, + 7.144599567550960763e-08, + 7.139220471073814012e-08, + 7.133831016402716212e-08, + 7.128431215062353967e-08, + 7.123021078589378223e-08, + 7.117600618536667225e-08, + 7.112169846470453219e-08, + 7.106728773970456130e-08, + 7.101277412632054080e-08, + 7.095815774063199660e-08, + 7.090343869886566629e-08, + 7.084861711739637263e-08, + 7.079369311271990530e-08, + 7.073866680149350636e-08, + 7.068353830049850825e-08, + 7.062830772666197272e-08, + 7.057297519705661154e-08, + 7.051754082888107966e-08, + 7.046200473948442008e-08, + 7.040636704634500715e-08, + 7.035062786708482703e-08, + 7.029478731946918646e-08, + 7.023884552139007658e-08, + 7.018280259088705753e-08, + 7.012665864612659883e-08, + 7.007041380542754327e-08, + 7.001406818723079902e-08, + 6.995762191012048902e-08, + 6.990107509282598911e-08, + 6.984442785419124955e-08, + 6.978768031322083927e-08, + 6.973083258903739561e-08, + 6.967388480090552660e-08, + 6.961683706823212855e-08, + 6.955968951054613670e-08, + 6.950244224752249359e-08, + 6.944509539896155558e-08, + 6.938764908480390269e-08, + 6.933010342512963713e-08, + 6.927245854014029125e-08, + 6.921471455018205473e-08, + 6.915687157572389733e-08, + 6.909892973738110050e-08, + 6.904088915589553744e-08, + 6.898274995213720829e-08, + 6.892451224711869267e-08, + 6.886617616197267682e-08, + 6.880774181797794694e-08, + 6.874920933653821335e-08, + 6.869057883918262665e-08, + 6.863185044758695356e-08, + 6.857302428354262047e-08, + 6.851410046898389799e-08, + 6.845507912596619563e-08, + 6.839596037667986585e-08, + 6.833674434345261280e-08, + 6.827743114872891208e-08, + 6.821802091509333056e-08, + 6.815851376524968149e-08, + 6.809890982204447671e-08, + 6.803920920844674341e-08, + 6.797941204754887122e-08, + 6.791951846258226901e-08, + 6.785952857689413775e-08, + 6.779944251397453577e-08, + 6.773926039743414421e-08, + 6.767898235100380376e-08, + 6.761860849855950216e-08, + 6.755813896408673261e-08, + 6.749757387170807531e-08, + 6.743691334567237132e-08, + 6.737615751034586839e-08, + 6.731530649023730109e-08, + 6.725436040996488302e-08, + 6.719331939428036780e-08, + 6.713218356806744767e-08, + 6.707095305632077619e-08, + 6.700962798417242477e-08, + 6.694820847686944957e-08, + 6.688669465979329379e-08, + 6.682508665843744722e-08, + 6.676338459843370425e-08, + 6.670158860553149096e-08, + 6.663969880559550935e-08, + 6.657771532463161148e-08, + 6.651563828875093297e-08, + 6.645346782419797746e-08, + 6.639120405733964479e-08, + 6.632884711465493437e-08, + 6.626639712276351923e-08, + 6.620385420838843688e-08, + 6.614121849838249295e-08, + 6.607849011972700382e-08, + 6.601566919951009146e-08, + 6.595275586495263701e-08, + 6.588975024338654909e-08, + 6.582665246226985158e-08, + 6.576346264918733217e-08, + 6.570018093182908853e-08, + 6.563680743801754077e-08, + 6.557334229568251015e-08, + 6.550978563289205632e-08, + 6.544613757780686995e-08, + 6.538239825873040645e-08, + 6.531856780407586495e-08, + 6.525464634236629417e-08, + 6.519063400226042689e-08, + 6.512653091251760755e-08, + 6.506233720202174736e-08, + 6.499805299978229047e-08, + 6.493367843490962353e-08, + 6.486921363664503947e-08, + 6.480465873433539274e-08, + 6.474001385744861051e-08, + 6.467527913557710737e-08, + 6.461045469841352569e-08, + 6.454554067577871426e-08, + 6.448053719759644958e-08, + 6.441544439392035565e-08, + 6.435026239491243700e-08, + 6.428499133084293308e-08, + 6.421963133210735157e-08, + 6.415418252920263236e-08, + 6.408864505275431874e-08, + 6.402301903349460075e-08, + 6.395730460226079319e-08, + 6.389150189002462435e-08, + 6.382561102784200969e-08, + 6.375963214690956477e-08, + 6.369356537851623175e-08, + 6.362741085407043737e-08, + 6.356116870510045028e-08, + 6.349483906323066417e-08, + 6.342842206021003948e-08, + 6.336191782788555427e-08, + 6.329532649823073860e-08, + 6.322864820332189145e-08, + 6.316188307534067476e-08, + 6.309503124658918796e-08, + 6.302809284946654225e-08, + 6.296106801649726262e-08, + 6.289395688030754449e-08, + 6.282675957362483017e-08, + 6.275947622930646245e-08, + 6.269210698028931255e-08, + 6.262465195964567107e-08, + 6.255711130054469480e-08, + 6.248948513625594038e-08, + 6.242177360017566207e-08, + 6.235397682578823199e-08, + 6.228609494669904214e-08, + 6.221812809660960949e-08, + 6.215007640933324614e-08, + 6.208194001879814302e-08, + 6.201371905902201187e-08, + 6.194541366414298868e-08, + 6.187702396839091400e-08, + 6.180855010611658205e-08, + 6.173999221176893695e-08, + 6.167135041989332580e-08, + 6.160262486516142271e-08, + 6.153381568231953333e-08, + 6.146492300624513430e-08, + 6.139594697190949793e-08, + 6.132688771437892304e-08, + 6.125774536884215765e-08, + 6.118852007057220308e-08, + 6.111921195495318079e-08, + 6.104982115748274114e-08, + 6.098034781373349687e-08, + 6.091079205941149491e-08, + 6.084115403030106656e-08, + 6.077143386229770295e-08, + 6.070163169140629481e-08, + 6.063174765371607882e-08, + 6.056178188543136904e-08, + 6.049173452284600031e-08, + 6.042160570236515261e-08, + 6.035139556048091943e-08, + 6.028110423380139808e-08, + 6.021073185902609924e-08, + 6.014027857294564259e-08, + 6.006974451246952358e-08, + 5.999912981458663376e-08, + 5.992843461639218054e-08, + 5.985765905509249151e-08, + 5.978680326796253034e-08, + 5.971586739240668472e-08, + 5.964485156590458269e-08, + 5.957375592604163214e-08, + 5.950258061050862376e-08, + 5.943132575707635317e-08, + 5.935999150362692139e-08, + 5.928857798812678865e-08, + 5.921708534864474733e-08, + 5.914551372335372193e-08, + 5.907386325050510000e-08, + 5.900213406846018484e-08, + 5.893032631566083392e-08, + 5.885844013066076598e-08, + 5.878647565210079857e-08, + 5.871443301870922528e-08, + 5.864231236932023200e-08, + 5.857011384284744047e-08, + 5.849783757831862996e-08, + 5.842548371483420619e-08, + 5.835305239159628500e-08, + 5.828054374790937400e-08, + 5.820795792315216891e-08, + 5.813529505681045561e-08, + 5.806255528845084544e-08, + 5.798973875773712690e-08, + 5.791684560443361412e-08, + 5.784387596837815427e-08, + 5.777082998951455965e-08, + 5.769770780786273659e-08, + 5.762450956355066749e-08, + 5.755123539678780215e-08, + 5.747788544786759882e-08, + 5.740445985718503396e-08, + 5.733095876521013249e-08, + 5.725738231251948666e-08, + 5.718373063977052080e-08, + 5.711000388769961198e-08, + 5.703620219715307951e-08, + 5.696232570904427078e-08, + 5.688837456438945431e-08, + 5.681434890428062867e-08, + 5.674024886990327705e-08, + 5.666607460253959001e-08, + 5.659182624353979203e-08, + 5.651750393435641993e-08, + 5.644310781651309511e-08, + 5.636863803163764387e-08, + 5.629409472143516444e-08, + 5.621947802769003200e-08, + 5.614478809228383866e-08, + 5.607002505716903609e-08, + 5.599518906440048755e-08, + 5.592028025610868048e-08, + 5.584529877449936910e-08, + 5.577024476188353166e-08, + 5.569511836063518416e-08, + 5.561991971322350147e-08, + 5.554464896220162724e-08, + 5.546930625019308160e-08, + 5.539389171992588740e-08, + 5.531840551418902078e-08, + 5.524284777586287125e-08, + 5.516721864791922848e-08, + 5.509151827339341620e-08, + 5.501574679541708171e-08, + 5.493990435719169294e-08, + 5.486399110201124957e-08, + 5.478800717323559484e-08, + 5.471195271432326457e-08, + 5.463582786880377332e-08, + 5.455963278027750182e-08, + 5.448336759244900927e-08, + 5.440703244906905785e-08, + 5.433062749399754466e-08, + 5.425415287116134857e-08, + 5.417760872455693087e-08, + 5.410099519828064320e-08, + 5.402431243648513179e-08, + 5.394756058341018802e-08, + 5.387073978338353585e-08, + 5.379385018079050412e-08, + 5.371689192010946955e-08, + 5.363986514588318339e-08, + 5.356277000273734652e-08, + 5.348560663538324326e-08, + 5.340837518858961059e-08, + 5.333107580721645328e-08, + 5.325370863618395515e-08, + 5.317627382051242195e-08, + 5.309877150526281703e-08, + 5.302120183560232696e-08, + 5.294356495675993861e-08, + 5.286586101402932439e-08, + 5.278809015280044053e-08, + 5.271025251851529610e-08, + 5.263234825669814173e-08, + 5.255437751295929459e-08, + 5.247634043295056981e-08, + 5.239823716243111087e-08, + 5.232006784720742893e-08, + 5.224183263316737677e-08, + 5.216353166628016204e-08, + 5.208516509256820990e-08, + 5.200673305814085238e-08, + 5.192823570916243236e-08, + 5.184967319188751494e-08, + 5.177104565263152589e-08, + 5.169235323777419265e-08, + 5.161359609377764975e-08, + 5.153477436715829473e-08, + 5.145588820452128494e-08, + 5.137693775253108988e-08, + 5.129792315791169634e-08, + 5.121884456748193235e-08, + 5.113970212809330287e-08, + 5.106049598670098177e-08, + 5.098122629030302393e-08, + 5.090189318597423338e-08, + 5.082249682086668605e-08, + 5.074303734218035494e-08, + 5.066351489719854651e-08, + 5.058392963325777152e-08, + 5.050428169776774287e-08, + 5.042457123821408880e-08, + 5.034479840212925596e-08, + 5.026496333712663561e-08, + 5.018506619086965350e-08, + 5.010510711110567767e-08, + 5.002508624563760312e-08, + 4.994500374232293865e-08, + 4.986485974910959397e-08, + 4.978465441397375511e-08, + 4.970438788498823607e-08, + 4.962406031027580590e-08, + 4.954367183801302027e-08, + 4.946322261646254104e-08, + 4.938271279392634429e-08, + 4.930214251877921786e-08, + 4.922151193947097158e-08, + 4.914082120448080332e-08, + 4.906007046238563739e-08, + 4.897925986179743088e-08, + 4.889838955140593551e-08, + 4.881745967994520683e-08, + 4.873647039622984131e-08, + 4.865542184912466182e-08, + 4.857431418754852928e-08, + 4.849314756049310312e-08, + 4.841192211699274516e-08, + 4.833063800616163021e-08, + 4.824929537716284923e-08, + 4.816789437920799906e-08, + 4.808643516159066667e-08, + 4.800491787364003427e-08, + 4.792334266475235851e-08, + 4.784170968439577471e-08, + 4.776001908206199614e-08, + 4.767827100733677658e-08, + 4.759646560983645567e-08, + 4.751460303924366657e-08, + 4.743268344530756764e-08, + 4.735070697781407715e-08, + 4.726867378662100527e-08, + 4.718658402162865942e-08, + 4.710443783280630079e-08, + 4.702223537016101588e-08, + 4.693997678377550212e-08, + 4.685766222377657544e-08, + 4.677529184033573939e-08, + 4.669286578370188191e-08, + 4.661038420415382825e-08, + 4.652784725203784869e-08, + 4.644525507775331846e-08, + 4.636260783173897340e-08, + 4.627990566451026535e-08, + 4.619714872661106811e-08, + 4.611433716864818072e-08, + 4.603147114129028200e-08, + 4.594855079523704684e-08, + 4.586557628125712377e-08, + 4.578254775015636461e-08, + 4.569946535279810028e-08, + 4.561632924010721720e-08, + 4.553313956303814205e-08, + 4.544989647261245534e-08, + 4.536660011988448731e-08, + 4.528325065597873299e-08, + 4.519984823205883618e-08, + 4.511639299933040855e-08, + 4.503288510906157675e-08, + 4.494932471255241646e-08, + 4.486571196117464382e-08, + 4.478204700632405586e-08, + 4.469832999945461031e-08, + 4.461456109207817418e-08, + 4.453074043573293868e-08, + 4.444686818202136362e-08, + 4.436294448257862548e-08, + 4.427896948909372042e-08, + 4.419494335331186639e-08, + 4.411086622700324899e-08, + 4.402673826200100554e-08, + 4.394255961016672178e-08, + 4.385833042342739689e-08, + 4.377405085374453339e-08, + 4.368972105311780326e-08, + 4.360534117360450314e-08, + 4.352091136728867081e-08, + 4.343643178631907586e-08, + 4.335190258287775380e-08, + 4.326732390917903327e-08, + 4.318269591750529008e-08, + 4.309801876015648922e-08, + 4.301329258949317839e-08, + 4.292851755790385074e-08, + 4.284369381782565091e-08, + 4.275882152174826603e-08, + 4.267390082218160613e-08, + 4.258893187169428462e-08, + 4.250391482287790390e-08, + 4.241884982838662770e-08, + 4.233373704090369017e-08, + 4.224857661314535315e-08, + 4.216336869788220107e-08, + 4.207811344790620595e-08, + 4.199281101607039234e-08, + 4.190746155525565088e-08, + 4.182206521837143307e-08, + 4.173662215839413251e-08, + 4.165113252829864724e-08, + 4.156559648113416274e-08, + 4.148001416997284688e-08, + 4.139438574791364833e-08, + 4.130871136811796458e-08, + 4.122299118375862146e-08, + 4.113722534805652053e-08, + 4.105141401427907074e-08, + 4.096555733570849751e-08, + 4.087965546568082611e-08, + 4.079370855755333039e-08, + 4.070771676473286211e-08, + 4.062168024064334604e-08, + 4.053559913876543169e-08, + 4.044947361260328035e-08, + 4.036330381568428715e-08, + 4.027708990159910339e-08, + 4.019083202393204085e-08, + 4.010453033633729153e-08, + 4.001818499248762921e-08, + 3.993179614607785715e-08, + 3.984536395086138932e-08, + 3.975888856059781377e-08, + 3.967237012909051278e-08, + 3.958580881018864153e-08, + 3.949920475773729867e-08, + 3.941255812565226380e-08, + 3.932586906785179145e-08, + 3.923913773829599809e-08, + 3.915236429098600189e-08, + 3.906554887993179500e-08, + 3.897869165919133283e-08, + 3.889179278283438291e-08, + 3.880485240498185240e-08, + 3.871787067977307804e-08, + 3.863084776136937971e-08, + 3.854378380397504437e-08, + 3.845667896180452338e-08, + 3.836953338912633262e-08, + 3.828234724021103276e-08, + 3.819512066936804210e-08, + 3.810785383094879310e-08, + 3.802054687929495089e-08, + 3.793319996881603586e-08, + 3.784581325391823320e-08, + 3.775838688904530860e-08, + 3.767092102867813174e-08, + 3.758341582730129792e-08, + 3.749587143944347464e-08, + 3.740828801964354010e-08, + 3.732066572247352592e-08, + 3.723300470254056924e-08, + 3.714530511445451375e-08, + 3.705756711286779301e-08, + 3.696979085243838601e-08, + 3.688197648787021665e-08, + 3.679412417387955698e-08, + 3.670623406519440516e-08, + 3.661830631659630111e-08, + 3.653034108284754121e-08, + 3.644233851877433974e-08, + 3.635429877919505609e-08, + 3.626622201896116332e-08, + 3.617810839295683791e-08, + 3.608995805606523064e-08, + 3.600177116320958739e-08, + 3.591354786931857372e-08, + 3.582528832934929037e-08, + 3.573699269828982755e-08, + 3.564866113112650201e-08, + 3.556029378288352197e-08, + 3.547189080858621403e-08, + 3.538345236330170055e-08, + 3.529497860210480659e-08, + 3.520646968008118999e-08, + 3.511792575235052886e-08, + 3.502934697403157487e-08, + 3.494073350028360492e-08, + 3.485208548627246703e-08, + 3.476340308716971347e-08, + 3.467468645819100839e-08, + 3.458593575454211624e-08, + 3.449715113145678666e-08, + 3.440833274420020873e-08, + 3.431948074801602518e-08, + 3.423059529820511300e-08, + 3.414167655005363858e-08, + 3.405272465888245699e-08, + 3.396373978000810871e-08, + 3.387472206878453601e-08, + 3.378567168056922813e-08, + 3.369658877072605350e-08, + 3.360747349464812307e-08, + 3.351832600772356484e-08, + 3.342914646537609542e-08, + 3.333993502303229678e-08, + 3.325069183611926707e-08, + 3.316141706010398112e-08, + 3.307211085043915321e-08, + 3.298277336260464235e-08, + 3.289340475209245058e-08, + 3.280400517439075505e-08, + 3.271457478502627951e-08, + 3.262511373950962765e-08, + 3.253562219337394876e-08, + 3.244610030217440839e-08, + 3.235654822145361218e-08, + 3.226696610678326265e-08, + 3.217735411372956987e-08, + 3.208771239788391666e-08, + 3.199804111482746850e-08, + 3.190834042017359798e-08, + 3.181861046953269323e-08, + 3.172885141851248214e-08, + 3.163906342275941793e-08, + 3.154924663788579453e-08, + 3.145940121954983757e-08, + 3.136952732340228835e-08, + 3.127962510508930229e-08, + 3.118969472029073082e-08, + 3.109973632466647379e-08, + 3.100975007389419888e-08, + 3.091973612366929530e-08, + 3.082969462967005938e-08, + 3.073962574759968891e-08, + 3.064952963315129007e-08, + 3.055940644203081350e-08, + 3.046925632996050201e-08, + 3.037907945264424158e-08, + 3.028887596580944985e-08, + 3.019864602516835743e-08, + 3.010838978645993600e-08, + 3.001810740541573909e-08, + 2.992779903776239688e-08, + 2.983746483924502204e-08, + 2.974710496559240532e-08, + 2.965671957256279504e-08, + 2.956630881588957777e-08, + 2.947587285131979847e-08, + 2.938541183461786631e-08, + 2.929492592151080848e-08, + 2.920441526776942659e-08, + 2.911388002913450552e-08, + 2.902332036135928085e-08, + 2.893273642020905841e-08, + 2.884212836142568848e-08, + 2.875149634077099278e-08, + 2.866084051398653042e-08, + 2.857016103683681645e-08, + 2.847945806507363724e-08, + 2.838873175444004413e-08, + 2.829798226069336560e-08, + 2.820720973956973447e-08, + 2.811641434682650901e-08, + 2.802559623820782581e-08, + 2.793475556944321018e-08, + 2.784389249629085086e-08, + 2.775300717446311080e-08, + 2.766209975970822280e-08, + 2.757117040775538130e-08, + 2.748021927431823632e-08, + 2.738924651513411843e-08, + 2.729825228590853822e-08, + 2.720723674236213375e-08, + 2.711620004019516796e-08, + 2.702514233511076586e-08, + 2.693406378281849120e-08, + 2.684296453899909541e-08, + 2.675184475934686257e-08, + 2.666070459953085768e-08, + 2.656954421523706656e-08, + 2.647836376213324395e-08, + 2.638716339586863893e-08, + 2.629594327211692555e-08, + 2.620470354650104523e-08, + 2.611344437467577259e-08, + 2.602216591227272783e-08, + 2.593086831490303692e-08, + 2.583955173819742999e-08, + 2.574821633775030082e-08, + 2.565686226915912027e-08, + 2.556548968802804283e-08, + 2.547409874991232006e-08, + 2.538268961040119074e-08, + 2.529126242504227983e-08, + 2.519981734939281420e-08, + 2.510835453897994445e-08, + 2.501687414934396342e-08, + 2.492537633600228412e-08, + 2.483386125445332751e-08, + 2.474232906019984565e-08, + 2.465077990871340592e-08, + 2.455921395547706356e-08, + 2.446763135595007416e-08, + 2.437603226556733454e-08, + 2.428441683977859432e-08, + 2.419278523399322021e-08, + 2.410113760361895099e-08, + 2.400947410406628163e-08, + 2.391779489069224806e-08, + 2.382610011888341327e-08, + 2.373438994398042838e-08, + 2.364266452132149278e-08, + 2.355092400624195703e-08, + 2.345916855403817841e-08, + 2.336739832001133500e-08, + 2.327561345943141356e-08, + 2.318381412756022829e-08, + 2.309200047965562625e-08, + 2.300017267093550498e-08, + 2.290833085662107404e-08, + 2.281647519189674010e-08, + 2.272460583195787489e-08, + 2.263272293195489456e-08, + 2.254082664703633923e-08, + 2.244891713233312340e-08, + 2.235699454294219098e-08, + 2.226505903397002818e-08, + 2.217311076047674951e-08, + 2.208114987751560716e-08, + 2.198917654013290502e-08, + 2.189719090333158616e-08, + 2.180519312211505688e-08, + 2.171318335145089331e-08, + 2.162116174629467749e-08, + 2.152912846159366338e-08, + 2.143708365225057284e-08, + 2.134502747316715169e-08, + 2.125296007920445836e-08, + 2.116088162522593356e-08, + 2.106879226606156684e-08, + 2.097669215651144019e-08, + 2.088458145136962034e-08, + 2.079246030538790841e-08, + 2.070032887332340277e-08, + 2.060818730988264454e-08, + 2.051603576976081927e-08, + 2.042387440764185956e-08, + 2.033170337816212852e-08, + 2.023952283595427685e-08, + 2.014733293561073443e-08, + 2.005513383170761915e-08, + 1.996292567880839301e-08, + 1.987070863142803533e-08, + 1.977848284407609580e-08, + 1.968624847121682108e-08, + 1.959400566731296229e-08, + 1.950175458678947833e-08, + 1.940949538403714899e-08, + 1.931722821343630181e-08, + 1.922495322932104477e-08, + 1.913267058602238891e-08, + 1.904038043783229572e-08, + 1.894808293900334295e-08, + 1.885577824378860468e-08, + 1.876346650638533684e-08, + 1.867114788097858946e-08, + 1.857882252172531824e-08, + 1.848649058273760927e-08, + 1.839415221812697624e-08, + 1.830180758194766879e-08, + 1.820945682824466550e-08, + 1.811710011101333730e-08, + 1.802473758424337070e-08, + 1.793236940188215684e-08, + 1.783999571783900345e-08, + 1.774761668600849777e-08, + 1.765523246023434879e-08, + 1.756284319435343963e-08, + 1.747044904215908745e-08, + 1.737805015740110963e-08, + 1.728564669382961142e-08, + 1.719323880511862393e-08, + 1.710082664494976514e-08, + 1.700841036695620674e-08, + 1.691599012472621776e-08, + 1.682356607184317359e-08, + 1.673113836182898683e-08, + 1.663870714818406336e-08, + 1.654627258438714025e-08, + 1.645383482385889972e-08, + 1.636139402000563435e-08, + 1.626895032618311586e-08, + 1.617650389572039801e-08, + 1.608405488192363821e-08, + 1.599160343803941702e-08, + 1.589914971729906178e-08, + 1.580669387287807507e-08, + 1.571423605794802870e-08, + 1.562177642560000652e-08, + 1.552931512892888084e-08, + 1.543685232097664067e-08, + 1.534438815473617358e-08, + 1.525192278319142697e-08, + 1.515945635926074621e-08, + 1.506698903583660906e-08, + 1.497452096578983109e-08, + 1.488205230191261924e-08, + 1.478958319700319072e-08, + 1.469711380378860539e-08, + 1.460464427496931765e-08, + 1.451217476321848992e-08, + 1.441970542114583819e-08, + 1.432723640134148092e-08, + 1.423476785633542531e-08, + 1.414229993864174214e-08, + 1.404983280072201921e-08, + 1.395736659498912339e-08, + 1.386490147383111275e-08, + 1.377243758957486708e-08, + 1.367997509453404949e-08, + 1.358751414095245276e-08, + 1.349505488104408791e-08, + 1.340259746699714962e-08, + 1.331014205091692593e-08, + 1.321768878491061564e-08, + 1.312523782101036913e-08, + 1.303278931121725465e-08, + 1.294034340750119872e-08, + 1.284790026176434541e-08, + 1.275546002588523931e-08, + 1.266302285168214007e-08, + 1.257058889093720425e-08, + 1.247815829540013643e-08, + 1.238573121675175195e-08, + 1.229330780664794319e-08, + 1.220088821667917090e-08, + 1.210847259841468857e-08, + 1.201606110336588508e-08, + 1.192365388298604983e-08, + 1.183125108871461857e-08, + 1.173885287190012156e-08, + 1.164645938388490012e-08, + 1.155407077594803773e-08, + 1.146168719930940333e-08, + 1.136930880516984236e-08, + 1.127693574465412777e-08, + 1.118456816885945927e-08, + 1.109220622881864718e-08, + 1.099985007552435542e-08, + 1.090749985993270639e-08, + 1.081515573292670636e-08, + 1.072281784536053102e-08, + 1.063048634801881004e-08, + 1.053816139166093082e-08, + 1.044584312698421909e-08, + 1.035353170462810618e-08, + 1.026122727519777154e-08, + 1.016892998922765910e-08, + 1.007663999722585218e-08, + 9.984357449637270606e-09, + 9.892082496843371246e-09, + 9.799815289202640163e-09, + 9.707555976993505572e-09, + 9.615304710454553706e-09, + 9.523061639788489358e-09, + 9.430826915104984317e-09, + 9.338600686505805835e-09, + 9.246383104007298221e-09, + 9.154174317593008074e-09, + 9.061974477172823212e-09, + 8.969783732627534549e-09, + 8.877602233771794947e-09, + 8.785430130358145928e-09, + 8.693267572101045620e-09, + 8.601114708640194875e-09, + 8.508971689584849335e-09, + 8.416838664477057875e-09, + 8.324715782791583185e-09, + 8.232603193976063053e-09, + 8.140501047394007688e-09, + 8.048409492369288802e-09, + 7.956328678169577807e-09, + 7.864258753989932886e-09, + 7.772199868997200405e-09, + 7.680152172272869961e-09, + 7.588115812853662480e-09, + 7.496090939731048802e-09, + 7.404077701814565045e-09, + 7.312076247976304169e-09, + 7.220086727014036131e-09, + 7.128109287675432690e-09, + 7.036144078661807927e-09, + 6.944191248591447664e-09, + 6.852250946043957935e-09, + 6.760323319519403909e-09, + 6.668408517486897661e-09, + 6.576506688327474725e-09, + 6.484617980378488055e-09, + 6.392742541917187664e-09, + 6.300880521144296948e-09, + 6.209032066228315656e-09, + 6.117197325248510601e-09, + 6.025376446235280419e-09, + 5.933569577169995099e-09, + 5.841776865948084699e-09, + 5.749998460423583849e-09, + 5.658234508372305674e-09, + 5.566485157516046749e-09, + 5.474750555526302797e-09, + 5.383030849987567510e-09, + 5.291326188441762903e-09, + 5.199636718347396446e-09, + 5.107962587123988102e-09, + 5.016303942115304635e-09, + 4.924660930593226677e-09, + 4.833033699781835403e-09, + 4.741422396820630287e-09, + 4.649827168809001642e-09, + 4.558248162769465753e-09, + 4.466685525647388594e-09, + 4.375139404351426693e-09, + 4.283609945696363157e-09, + 4.192097296451746721e-09, + 4.100601603304962271e-09, + 4.009123012885473853e-09, + 3.917661671768588342e-09, + 3.826217726438762540e-09, + 3.734791323333972315e-09, + 3.643382608804893722e-09, + 3.551991729159404904e-09, + 3.460618830625727751e-09, + 3.369264059356306966e-09, + 3.277927561451945538e-09, + 3.186609482925040286e-09, + 3.095309969743989882e-09, + 3.004029167796440314e-09, + 2.912767222889142204e-09, + 2.821524280792204141e-09, + 2.730300487161933271e-09, + 2.639095987625701963e-09, + 2.547910927724986912e-09, + 2.456745452919185333e-09, + 2.365599708625937125e-09, + 2.274473840164139154e-09, + 2.183367992802391569e-09, + 2.092282311718216558e-09, + 2.001216942042399363e-09, + 1.910172028822342111e-09, + 1.819147717025848167e-09, + 1.728144151565242306e-09, + 1.637161477260653817e-09, + 1.546199838884396197e-09, + 1.455259381124248185e-09, + 1.364340248583250689e-09, + 1.273442585824032711e-09, + 1.182566537291655035e-09, + 1.091712247398404312e-09, + 1.000879860466898538e-09, + 9.100695207339223818e-10, + 8.192813723906710741e-10, + 7.285155595258736739e-10, + 6.377722261660383010e-10, + 5.470515162792711254e-10, + 4.563535737184368585e-10, + 3.656785423058624094e-10, + 2.750265657562853212e-10, + 1.843977877211196952e-10, + 9.379235178821740724e-11, + 3.210401445284993123e-12, +-8.734791987588387761e-11, +-1.778824688400328929e-10, +-2.683931021561455762e-10, +-3.588796766544089485e-10, +-4.493420492016180458e-10, +-5.397800767579338480e-10, +-6.301936163730547248e-10, +-7.205825251460702588e-10, +-8.109466602821908947e-10, +-9.012858790525990735e-10, +-9.916000387906401696e-10, +-1.081888996948517656e-09, +-1.172152611012804052e-09, +-1.262390738581284550e-09, +-1.352603237318808424e-09, +-1.442789964957522298e-09, +-1.532950779333356042e-09, +-1.623085538341906341e-09, +-1.713194099974906876e-09, +-1.803276322296311642e-09, +-1.893332063438422086e-09, +-1.983361181638405684e-09, +-2.073363535194172887e-09, +-2.163338982504884153e-09, +-2.253287382022838025e-09, +-2.343208592310055657e-09, +-2.433102471998210947e-09, +-2.522968879784899539e-09, +-2.612807674490079838e-09, +-2.702618714971885872e-09, +-2.792401860203216778e-09, +-2.882156969227735338e-09, +-2.971883901160083049e-09, +-3.061582515222245465e-09, +-3.151252670699618974e-09, +-3.240894226977309975e-09, +-3.330507043516271534e-09, +-3.420090979849525245e-09, +-3.509645895618480657e-09, +-3.599171650529008264e-09, +-3.688668104391746362e-09, +-3.778135117078267092e-09, +-3.867572548557267662e-09, +-3.956980258890873675e-09, +-4.046358108210727407e-09, +-4.135705956754309721e-09, +-4.225023664821066405e-09, +-4.314311092808632068e-09, +-4.403568101213126272e-09, +-4.492794550589242063e-09, +-4.581990301606561256e-09, +-4.671155215001640829e-09, +-4.760289151614359233e-09, +-4.849391972364038173e-09, +-4.938463538245665701e-09, +-5.027503710366104393e-09, +-5.116512349900378161e-09, +-5.205489318131724339e-09, +-5.294434476407926819e-09, +-5.383347686177506855e-09, +-5.472228808985855172e-09, +-5.561077706451552259e-09, +-5.649894240302464883e-09, +-5.738678272332028761e-09, +-5.827429664435482385e-09, +-5.916148278609921612e-09, +-6.004833976914733135e-09, +-6.093486621527527610e-09, +-6.182106074700632434e-09, +-6.270692198777056336e-09, +-6.359244856206807990e-09, +-6.447763909503246526e-09, +-6.536249221298905467e-09, +-6.624700654306040348e-09, +-6.713118071316743695e-09, +-6.801501335239048979e-09, +-6.889850309053250513e-09, +-6.978164855848012370e-09, +-7.066444838788746095e-09, +-7.154690121153545911e-09, +-7.242900566289675713e-09, +-7.331076037649543975e-09, +-7.419216398790999060e-09, +-7.507321513333693781e-09, +-7.595391245034808002e-09, +-7.683425457705849983e-09, +-7.771424015268564689e-09, +-7.859386781750961668e-09, +-7.947313621247921406e-09, +-8.035204397977020087e-09, +-8.123058976238912609e-09, +-8.210877220417671723e-09, +-8.298658995016619850e-09, +-8.386404164614905399e-09, +-8.474112593903428884e-09, +-8.561784147661160734e-09, +-8.649418690751501708e-09, +-8.737016088158066721e-09, +-8.824576204941310803e-09, +-8.912098906278382664e-09, +-8.999584057411774972e-09, +-9.087031523724888958e-09, +-9.174441170658889530e-09, +-9.261812863768485371e-09, +-9.349146468718097435e-09, +-9.436441851242544711e-09, +-9.523698877202518262e-09, +-9.610917412545308342e-09, +-9.698097323301173077e-09, +-9.785238475638574273e-09, +-9.872340735781611561e-09, +-9.959403970085237924e-09, +-1.004642804499199816e-08, +-1.013341282703220588e-08, +-1.022035818285966286e-08, +-1.030726397920862243e-08, +-1.039413008293306076e-08, +-1.048095636096387188e-08, +-1.056774268034431072e-08, +-1.065448890822634691e-08, +-1.074119491184723571e-08, +-1.082786055856500903e-08, +-1.091448571581554803e-08, +-1.100107025114824954e-08, +-1.108761403222584738e-08, +-1.117411692678181252e-08, +-1.126057880269481923e-08, +-1.134699952790284235e-08, +-1.143337897047780540e-08, +-1.151971699858249272e-08, +-1.160601348047106231e-08, +-1.169226828452420272e-08, +-1.177848127920632140e-08, +-1.186465233310105897e-08, +-1.195078131488788821e-08, +-1.203686809333850094e-08, +-1.212291253735217667e-08, +-1.220891451591277905e-08, +-1.229487389812843083e-08, +-1.238079055318829527e-08, +-1.246666435039817309e-08, +-1.255249515918057191e-08, +-1.263828284903210975e-08, +-1.272402728959772643e-08, +-1.280972835058881742e-08, +-1.289538590183852100e-08, +-1.298099981329732424e-08, +-1.306656995499481089e-08, +-1.315209619709420067e-08, +-1.323757840984568310e-08, +-1.332301646362190184e-08, +-1.340841022889454881e-08, +-1.349375957623095953e-08, +-1.357906437632895726e-08, +-1.366432449997441200e-08, +-1.374953981808037280e-08, +-1.383471020164452248e-08, +-1.391983552178419227e-08, +-1.400491564973267252e-08, +-1.408995045681618897e-08, +-1.417493981448915390e-08, +-1.425988359429128837e-08, +-1.434478166788310498e-08, +-1.442963390704583341e-08, +-1.451444018364295982e-08, +-1.459920036967464050e-08, +-1.468391433723914523e-08, +-1.476858195852924923e-08, +-1.485320310588644152e-08, +-1.493777765172001348e-08, +-1.502230546858056043e-08, +-1.510678642911778884e-08, +-1.519122040608072474e-08, +-1.527560727235254301e-08, +-1.535994690090815945e-08, +-1.544423916484967059e-08, +-1.552848393737499681e-08, +-1.561268109181314350e-08, +-1.569683050158205780e-08, +-1.578093204022327094e-08, +-1.586498558140208684e-08, +-1.594899099886939616e-08, +-1.603294816651588636e-08, +-1.611685695832940889e-08, +-1.620071724841097676e-08, +-1.628452891099013366e-08, +-1.636829182038290003e-08, +-1.645200585104575819e-08, +-1.653567087753737374e-08, +-1.661928677451905218e-08, +-1.670285341678887163e-08, +-1.678637067924018491e-08, +-1.686983843689614600e-08, +-1.695325656488682033e-08, +-1.703662493844563450e-08, +-1.711994343294392929e-08, +-1.720321192384913077e-08, +-1.728643028676313151e-08, +-1.736959839738040872e-08, +-1.745271613152261039e-08, +-1.753578336513480315e-08, +-1.761879997426291341e-08, +-1.770176583508818110e-08, +-1.778468082388151254e-08, +-1.786754481705721737e-08, +-1.795035769113469026e-08, +-1.803311932273907598e-08, +-1.811582958863530948e-08, +-1.819848836568658487e-08, +-1.828109553088879256e-08, +-1.836365096134789753e-08, +-1.844615453427618727e-08, +-1.852860612702685450e-08, +-1.861100561705209224e-08, +-1.869335288194148159e-08, +-1.877564779938035147e-08, +-1.885789024718401393e-08, +-1.894008010329423711e-08, +-1.902221724575664333e-08, +-1.910430155275501391e-08, +-1.918633290256976474e-08, +-1.926831117361223783e-08, +-1.935023624442462525e-08, +-1.943210799364274600e-08, +-1.951392630004883996e-08, +-1.959569104252643031e-08, +-1.967740210009466146e-08, +-1.975905935188553505e-08, +-1.984066267714057141e-08, +-1.992221195524478025e-08, +-2.000370706568527844e-08, +-2.008514788808937675e-08, +-2.016653430218322409e-08, +-2.024786618782569546e-08, +-2.032914342500510973e-08, +-2.041036589381650526e-08, +-2.049153347449585878e-08, +-2.057264604737876604e-08, +-2.065370349293469037e-08, +-2.073470569176668478e-08, +-2.081565252457064172e-08, +-2.089654387220671187e-08, +-2.097737961562057637e-08, +-2.105815963589614155e-08, +-2.113888381425183648e-08, +-2.121955203200365452e-08, +-2.130016417061745099e-08, +-2.138072011167172999e-08, +-2.146121973685783960e-08, +-2.154166292801394913e-08, +-2.162204956708382247e-08, +-2.170237953615071594e-08, +-2.178265271740770898e-08, +-2.186286899319132076e-08, +-2.194302824594100480e-08, +-2.202313035823237849e-08, +-2.210317521277777562e-08, +-2.218316269238527118e-08, +-2.226309268002939866e-08, +-2.234296505877360687e-08, +-2.242277971182217377e-08, +-2.250253652251664297e-08, +-2.258223537429884216e-08, +-2.266187615076343552e-08, +-2.274145873562031020e-08, +-2.282098301269164477e-08, +-2.290044886596323080e-08, +-2.297985617950772376e-08, +-2.305920483755451993e-08, +-2.313849472444931055e-08, +-2.321772572465449545e-08, +-2.329689772278253822e-08, +-2.337601060355510688e-08, +-2.345506425184050206e-08, +-2.353405855260605780e-08, +-2.361299339098771730e-08, +-2.369186865221333677e-08, +-2.377068422165432466e-08, +-2.384943998482200204e-08, +-2.392813582733093537e-08, +-2.400677163495070144e-08, +-2.408534729356916387e-08, +-2.416386268918911808e-08, +-2.424231770797957974e-08, +-2.432071223619932689e-08, +-2.439904616026608527e-08, +-2.447731936671728028e-08, +-2.455553174220927925e-08, +-2.463368317355085593e-08, +-2.471177354766324750e-08, +-2.478980275161303342e-08, +-2.486777067259039046e-08, +-2.494567719790564504e-08, +-2.502352221502248286e-08, +-2.510130561151735419e-08, +-2.517902727511660767e-08, +-2.525668709365655401e-08, +-2.533428495511617934e-08, +-2.541182074761732720e-08, +-2.548929435938502695e-08, +-2.556670567881650709e-08, +-2.564405459440152786e-08, +-2.572134099479149714e-08, +-2.579856476875955400e-08, +-2.587572580520117753e-08, +-2.595282399316632116e-08, +-2.602985922182027705e-08, +-2.610683138047576083e-08, +-2.618374035857244709e-08, +-2.626058604567232398e-08, +-2.633736833149294253e-08, +-2.641408710586787082e-08, +-2.649074225878258701e-08, +-2.656733368033539999e-08, +-2.664386126076970612e-08, +-2.672032489047086252e-08, +-2.679672445994435938e-08, +-2.687305985984841755e-08, +-2.694933098095475364e-08, +-2.702553771418122393e-08, +-2.710167995059132145e-08, +-2.717775758135917295e-08, +-2.725377049781931536e-08, +-2.732971859143163987e-08, +-2.740560175377739832e-08, +-2.748141987660938324e-08, +-2.755717285177753127e-08, +-2.763286057129644752e-08, +-2.770848292729952689e-08, +-2.778403981207419852e-08, +-2.785953111802401449e-08, +-2.793495673769934811e-08, +-2.801031656379495213e-08, +-2.808561048912864719e-08, +-2.816083840667298308e-08, +-2.823600020951697657e-08, +-2.831109579089770979e-08, +-2.838612504420081659e-08, +-2.846108786292489056e-08, +-2.853598414073121853e-08, +-2.861081377140524711e-08, +-2.868557664887067459e-08, +-2.876027266720353612e-08, +-2.883490172059428582e-08, +-2.890946370339602465e-08, +-2.898395851009087721e-08, +-2.905838603528910832e-08, +-2.913274617376096280e-08, +-2.920703882039886339e-08, +-2.928126387024836050e-08, +-2.935542121848049445e-08, +-2.942951076042362206e-08, +-2.950353239152520758e-08, +-2.957748600738270624e-08, +-2.965137150374440800e-08, +-2.972518877647433532e-08, +-2.979893772160135121e-08, +-2.987261823528084092e-08, +-2.994623021380889313e-08, +-3.001977355363610392e-08, +-3.009324815133003601e-08, +-3.016665390362344342e-08, +-3.023999070737962249e-08, +-3.031325845959311336e-08, +-3.038645705742059677e-08, +-3.045958639814298279e-08, +-3.053264637919673114e-08, +-3.060563689815348269e-08, +-3.067855785271640667e-08, +-3.075140914075132246e-08, +-3.082419066024925152e-08, +-3.089690230936082145e-08, +-3.096954398635838775e-08, +-3.104211558966746008e-08, +-3.111461701786334056e-08, +-3.118704816965020607e-08, +-3.125940894389259402e-08, +-3.133169923957426171e-08, +-3.140391895584620251e-08, +-3.147606799199257925e-08, +-3.154814624743100876e-08, +-3.162015362174296906e-08, +-3.169209001463739015e-08, +-3.176395532598012811e-08, +-3.183574945577466204e-08, +-3.190747230415841473e-08, +-3.197912377143339144e-08, +-3.205070375802955235e-08, +-3.212221216453782037e-08, +-3.219364889167411533e-08, +-3.226501384030915231e-08, +-3.233630691146523885e-08, +-3.240752800629646889e-08, +-3.247867702611900420e-08, +-3.254975387237426819e-08, +-3.262075844665905523e-08, +-3.269169065072594761e-08, +-3.276255038644678718e-08, +-3.283333755587571981e-08, +-3.290405206117621816e-08, +-3.297469380468468195e-08, +-3.304526268887359206e-08, +-3.311575861635202665e-08, +-3.318618148989526764e-08, +-3.325653121240894076e-08, +-3.332680768696189761e-08, +-3.339701081674971391e-08, +-3.346714050512528184e-08, +-3.353719665559483968e-08, +-3.360717917179912525e-08, +-3.367708795754208904e-08, +-3.374692291675610629e-08, +-3.381668395353059744e-08, +-3.388637097211266341e-08, +-3.395598387687096097e-08, +-3.402552257235825744e-08, +-3.409498696324262250e-08, +-3.416437695435332678e-08, +-3.423369245067789049e-08, +-3.430293335732945942e-08, +-3.437209957959259765e-08, +-3.444119102289059738e-08, +-3.451020759278263341e-08, +-3.457914919500937060e-08, +-3.464801573542475784e-08, +-3.471680712005763647e-08, +-3.478552325507049374e-08, +-3.485416404679086262e-08, +-3.492272940167661325e-08, +-3.499121922634473224e-08, +-3.505963342757201089e-08, +-3.512797191225881463e-08, +-3.519623458749127384e-08, +-3.526442136047352117e-08, +-3.533253213857242545e-08, +-3.540056682931505066e-08, +-3.546852534035625021e-08, +-3.553640757952405609e-08, +-3.560421345478750476e-08, +-3.567194287425340793e-08, +-3.573959574621169520e-08, +-3.580717197906820074e-08, +-3.587467148140529893e-08, +-3.594209416194701714e-08, +-3.600943992955910858e-08, +-3.607670869327803670e-08, +-3.614390036227586297e-08, +-3.621101484588878139e-08, +-3.627805205359924471e-08, +-3.634501189503106752e-08, +-3.641189427997981361e-08, +-3.647869911837700876e-08, +-3.654542632032238099e-08, +-3.661207579604565801e-08, +-3.667864745595145998e-08, +-3.674514121058708581e-08, +-3.681155697064048817e-08, +-3.687789464698342591e-08, +-3.694415415060610350e-08, +-3.701033539267674794e-08, +-3.707643828450746930e-08, +-3.714246273755396962e-08, +-3.720840866344414346e-08, +-3.727427597394394513e-08, +-3.734006458098508931e-08, +-3.740577439664666782e-08, +-3.747140533315212541e-08, +-3.753695730289784713e-08, +-3.760243021841805940e-08, +-3.766782399241699745e-08, +-3.773313853773434233e-08, +-3.779837376737347085e-08, +-3.786352959449790199e-08, +-3.792860593241378712e-08, +-3.799360269459720037e-08, +-3.805851979465690226e-08, +-3.812335714637860378e-08, +-3.818811466369303723e-08, +-3.825279226067756426e-08, +-3.831738985158238754e-08, +-3.838190735079786063e-08, +-3.844634467288171211e-08, +-3.851070173254123806e-08, +-3.857497844462978157e-08, +-3.863917472417472451e-08, +-3.870329048634420844e-08, +-3.876732564647716456e-08, +-3.883128012005002794e-08, +-3.889515382270449111e-08, +-3.895894667024483060e-08, +-3.902265857861863033e-08, +-3.908628946394579250e-08, +-3.914983924248345846e-08, +-3.921330783065550275e-08, +-3.927669514505087866e-08, +-3.934000110239384638e-08, +-3.940322561958718491e-08, +-3.946636861367803282e-08, +-3.952943000187087167e-08, +-3.959240970153892122e-08, +-3.965530763019219048e-08, +-3.971812370551842636e-08, +-3.978085784534799498e-08, +-3.984350996768369983e-08, +-3.990607999066777396e-08, +-3.996856783260962693e-08, +-4.003097341198154347e-08, +-4.009329664740276853e-08, +-4.015553745766479254e-08, +-4.021769576169926341e-08, +-4.027977147860502539e-08, +-4.034176452764817207e-08, +-4.040367482823210237e-08, +-4.046550229993968697e-08, +-4.052724686250008174e-08, +-4.058890843580160538e-08, +-4.065048693990268460e-08, +-4.071198229500003748e-08, +-4.077339442146972149e-08, +-4.083472323983814242e-08, +-4.089596867078180959e-08, +-4.095713063515387175e-08, +-4.101820905395273059e-08, +-4.107920384834712744e-08, +-4.114011493965375646e-08, +-4.120094224936350943e-08, +-4.126168569910907013e-08, +-4.132234521069219803e-08, +-4.138292070608242473e-08, +-4.144341210738613716e-08, +-4.150381933690234287e-08, +-4.156414231705996306e-08, +-4.162438097046028353e-08, +-4.168453521987340773e-08, +-4.174460498820937820e-08, +-4.180459019855897314e-08, +-4.186449077416443083e-08, +-4.192430663841787468e-08, +-4.198403771490022379e-08, +-4.204368392732143083e-08, +-4.210324519957557226e-08, +-4.216272145570883974e-08, +-4.222211261991975851e-08, +-4.228141861658513439e-08, +-4.234063937022896503e-08, +-4.239977480555068979e-08, +-4.245882484739329364e-08, +-4.251778942077041882e-08, +-4.257666845086277821e-08, +-4.263546186300103601e-08, +-4.269416958269199955e-08, +-4.275279153558379170e-08, +-4.281132764750722974e-08, +-4.286977784444560351e-08, +-4.292814205253326588e-08, +-4.298642019809482126e-08, +-4.304461220758582006e-08, +-4.310271800764683644e-08, +-4.316073752507197591e-08, +-4.321867068680978192e-08, +-4.327651741998772698e-08, +-4.333427765188185189e-08, +-4.339195130994225608e-08, +-4.344953832177571362e-08, +-4.350703861514368134e-08, +-4.356445211798718706e-08, +-4.362177875839584010e-08, +-4.367901846463723258e-08, +-4.373617116512442126e-08, +-4.379323678844198050e-08, +-4.385021526334660438e-08, +-4.390710651873544886e-08, +-4.396391048370003088e-08, +-4.402062708746737942e-08, +-4.407725625943940929e-08, +-4.413379792918970507e-08, +-4.419025202643631012e-08, +-4.424661848108018727e-08, +-4.430289722317238957e-08, +-4.435908818293916034e-08, +-4.441519129076476084e-08, +-4.447120647718982918e-08, +-4.452713367293522298e-08, +-4.458297280887228716e-08, +-4.463872381605037589e-08, +-4.469438662566701459e-08, +-4.474996116909180868e-08, +-4.480544737786486869e-08, +-4.486084518367951884e-08, +-4.491615451840784039e-08, +-4.497137531406983434e-08, +-4.502650750285853466e-08, +-4.508155101714012736e-08, +-4.513650578942642195e-08, +-4.519137175241353041e-08, +-4.524614883895382243e-08, +-4.530083698205504531e-08, +-4.535543611491628977e-08, +-4.540994617087262181e-08, +-4.546436708344560683e-08, +-4.551869878630909092e-08, +-4.557294121331560440e-08, +-4.562709429846718551e-08, +-4.568115797593930250e-08, +-4.573513218007915956e-08, +-4.578901684538806791e-08, +-4.584281190654683036e-08, +-4.589651729838625396e-08, +-4.595013295591095296e-08, +-4.600365881429928262e-08, +-4.605709480887713411e-08, +-4.611044087515558122e-08, +-4.616369694880053930e-08, +-4.621686296564467671e-08, +-4.626993886169732774e-08, +-4.632292457311558096e-08, +-4.637582003624156860e-08, +-4.642862518757586434e-08, +-4.648133996377831052e-08, +-4.653396430169030572e-08, +-4.658649813830717689e-08, +-4.663894141080143308e-08, +-4.669129405650703575e-08, +-4.674355601291722825e-08, +-4.679572721770764398e-08, +-4.684780760870760646e-08, +-4.689979712392711533e-08, +-4.695169570152468554e-08, +-4.700350327984421976e-08, +-4.705521979738627544e-08, +-4.710684519281889091e-08, +-4.715837940498778295e-08, +-4.720982237288774609e-08, +-4.726117403569959788e-08, +-4.731243433276337159e-08, +-4.736360320357930221e-08, +-4.741468058783045149e-08, +-4.746566642535475588e-08, +-4.751656065616823387e-08, +-4.756736322044940857e-08, +-4.761807405853705110e-08, +-4.766869311095352038e-08, +-4.771922031837579192e-08, +-4.776965562166180189e-08, +-4.781999896182227663e-08, +-4.787025028004387387e-08, +-4.792040951768631078e-08, +-4.797047661626707101e-08, +-4.802045151748530694e-08, +-4.807033416319296113e-08, +-4.812012449541788767e-08, +-4.816982245636370661e-08, +-4.821942798838532604e-08, +-4.826894103402367702e-08, +-4.831836153597546528e-08, +-4.836768943711657709e-08, +-4.841692468048609155e-08, +-4.846606720928466589e-08, +-4.851511696689653189e-08, +-4.856407389686225184e-08, +-4.861293794290381854e-08, +-4.866170904889743109e-08, +-4.871038715889532585e-08, +-4.875897221712422799e-08, +-4.880746416796976075e-08, +-4.885586295599887860e-08, +-4.890416852593329158e-08, +-4.895238082267117713e-08, +-4.900049979128731244e-08, +-4.904852537700588999e-08, +-4.909645752524820287e-08, +-4.914429618157994341e-08, +-4.919204129174609700e-08, +-4.923969280166838115e-08, +-4.928725065742127045e-08, +-4.933471480526576540e-08, +-4.938208519162048084e-08, +-4.942936176308523705e-08, +-4.947654446641611871e-08, +-4.952363324854559184e-08, +-4.957062805658085609e-08, +-4.961752883778927316e-08, +-4.966433553962015136e-08, +-4.971104810967859354e-08, +-4.975766649574630890e-08, +-4.980419064578334678e-08, +-4.985062050789978062e-08, +-4.989695603040206977e-08, +-4.994319716174333600e-08, +-4.998934385055637797e-08, +-5.003539604565133522e-08, +-5.008135369599166689e-08, +-5.012721675072856239e-08, +-5.017298515917586796e-08, +-5.021865887080851165e-08, +-5.026423783529544502e-08, +-5.030972200245040931e-08, +-5.035511132227603411e-08, +-5.040040574493875725e-08, +-5.044560522076855346e-08, +-5.049070970028044108e-08, +-5.053571913414791305e-08, +-5.058063347322679275e-08, +-5.062545266852564740e-08, +-5.067017667124868902e-08, +-5.071480543274815524e-08, +-5.075933890455625832e-08, +-5.080377703838331907e-08, +-5.084811978609408300e-08, +-5.089236709974065531e-08, +-5.093651893153901563e-08, +-5.098057523386713864e-08, +-5.102453595929698278e-08, +-5.106840106054642779e-08, +-5.111217049052242041e-08, +-5.115584420229721779e-08, +-5.119942214910655442e-08, +-5.124290428437122165e-08, +-5.128629056167203387e-08, +-5.132958093477023674e-08, +-5.137277535759369656e-08, +-5.141587378423496796e-08, +-5.145887616897188082e-08, +-5.150178246624190425e-08, +-5.154459263066536721e-08, +-5.158730661701854538e-08, +-5.162992438026469033e-08, +-5.167244587553213241e-08, +-5.171487105811152130e-08, +-5.175719988348800660e-08, +-5.179943230729324151e-08, +-5.184156828534877347e-08, +-5.188360777364083162e-08, +-5.192555072832109446e-08, +-5.196739710572591353e-08, +-5.200914686235280826e-08, +-5.205079995487921975e-08, +-5.209235634015102296e-08, +-5.213381597517845693e-08, +-5.217517881715734032e-08, +-5.221644482344424940e-08, +-5.225761395157864675e-08, +-5.229868615925895920e-08, +-5.233966140436174861e-08, +-5.238053964494070595e-08, +-5.242132083921242386e-08, +-5.246200494557607029e-08, +-5.250259192259061783e-08, +-5.254308172899322042e-08, +-5.258347432369940523e-08, +-5.262376966578256518e-08, +-5.266396771450214927e-08, +-5.270406842928054126e-08, +-5.274407176971988113e-08, +-5.278397769559036554e-08, +-5.282378616682861987e-08, +-5.286349714355575723e-08, +-5.290311058605464096e-08, +-5.294262645479128542e-08, +-5.298204471039172138e-08, +-5.302136531365988966e-08, +-5.306058822557692636e-08, +-5.309971340728768981e-08, +-5.313874082011997759e-08, +-5.317767042556179563e-08, +-5.321650218527911941e-08, +-5.325523606111793879e-08, +-5.329387201508107043e-08, +-5.333241000935875690e-08, +-5.337085000630558500e-08, +-5.340919196844859215e-08, +-5.344743585849574994e-08, +-5.348558163931314722e-08, +-5.352362927395358401e-08, +-5.356157872563723537e-08, +-5.359942995774979854e-08, +-5.363718293386223933e-08, +-5.367483761770825978e-08, +-5.371239397320182771e-08, +-5.374985196442224123e-08, +-5.378721155563053993e-08, +-5.382447271124991066e-08, +-5.386163539588129806e-08, +-5.389869957430412590e-08, +-5.393566521145773511e-08, +-5.397253227246705286e-08, +-5.400930072262262112e-08, +-5.404597052738745233e-08, +-5.408254165240508943e-08, +-5.411901406347905210e-08, +-5.415538772659841980e-08, +-5.419166260791971979e-08, +-5.422783867376632500e-08, +-5.426391589064638726e-08, +-5.429989422523117841e-08, +-5.433577364437193171e-08, +-5.437155411509051125e-08, +-5.440723560457443558e-08, +-5.444281808019615441e-08, +-5.447830150949174037e-08, +-5.451368586017931862e-08, +-5.454897110013519772e-08, +-5.458415719742888915e-08, +-5.461924412028491143e-08, +-5.465423183710736729e-08, +-5.468912031647963266e-08, +-5.472390952714440509e-08, +-5.475859943803096757e-08, +-5.479319001823580611e-08, +-5.482768123702247071e-08, +-5.486207306383917780e-08, +-5.489636546829803806e-08, +-5.493055842019099785e-08, +-5.496465188947974762e-08, +-5.499864584629331313e-08, +-5.503254026094489690e-08, +-5.506633510391148318e-08, +-5.510003034585198302e-08, +-5.513362595758828853e-08, +-5.516712191012001654e-08, +-5.520051817462352921e-08, +-5.523381472244136598e-08, +-5.526701152509778130e-08, +-5.530010855427958059e-08, +-5.533310578185175054e-08, +-5.536600317985773051e-08, +-5.539880072050051305e-08, +-5.543149837617434151e-08, +-5.546409611942832729e-08, +-5.549659392299784961e-08, +-5.552899175978668847e-08, +-5.556128960286606504e-08, +-5.559348742549052359e-08, +-5.562558520108004449e-08, +-5.565758290323518498e-08, +-5.568948050571976125e-08, +-5.572127798247561863e-08, +-5.575297530762115587e-08, +-5.578457245544094238e-08, +-5.581606940040108394e-08, +-5.584746611713087914e-08, +-5.587876258043749686e-08, +-5.590995876530602262e-08, +-5.594105464688137308e-08, +-5.597205020049986787e-08, +-5.600294540165428288e-08, +-5.603374022601676645e-08, +-5.606443464943754237e-08, +-5.609502864792874346e-08, +-5.612552219768662631e-08, +-5.615591527507209616e-08, +-5.618620785662605278e-08, +-5.621639991905867676e-08, +-5.624649143924852960e-08, +-5.627648239425638412e-08, +-5.630637276130911104e-08, +-5.633616251781337704e-08, +-5.636585164133969673e-08, +-5.639544010963595210e-08, +-5.642492790062845132e-08, +-5.645431499240276460e-08, +-5.648360136323589157e-08, +-5.651278699156061979e-08, +-5.654187185599053863e-08, +-5.657085593531561220e-08, +-5.659973920848811072e-08, +-5.662852165464405759e-08, +-5.665720325308794313e-08, +-5.668578398329011730e-08, +-5.671426382491010297e-08, +-5.674264275776310499e-08, +-5.677092076184927921e-08, +-5.679909781733676530e-08, +-5.682717390456222277e-08, +-5.685514900404410561e-08, +-5.688302309646607230e-08, +-5.691079616269032660e-08, +-5.693846818374659950e-08, +-5.696603914084397463e-08, +-5.699350901535551586e-08, +-5.702087778883141625e-08, +-5.704814544299935532e-08, +-5.707531195974863046e-08, +-5.710237732115225256e-08, +-5.712934150945070682e-08, +-5.715620450705207843e-08, +-5.718296629655121016e-08, +-5.720962686069922232e-08, +-5.723618618243193475e-08, +-5.726264424485320404e-08, +-5.728900103123451992e-08, +-5.731525652502931215e-08, +-5.734141070985621497e-08, +-5.736746356951193811e-08, +-5.739341508796255153e-08, +-5.741926524934247300e-08, +-5.744501403796708757e-08, +-5.747066143831688550e-08, +-5.749620743505257660e-08, +-5.752165201299724288e-08, +-5.754699515715249842e-08, +-5.757223685269346008e-08, +-5.759737708496285797e-08, +-5.762241583948208001e-08, +-5.764735310193538925e-08, +-5.767218885818908808e-08, +-5.769692309427692666e-08, +-5.772155579640170444e-08, +-5.774608695094587788e-08, +-5.777051654445740570e-08, +-5.779484456366175962e-08, +-5.781907099545406939e-08, +-5.784319582689690598e-08, +-5.786721904523340395e-08, +-5.789114063787220679e-08, +-5.791496059240053634e-08, +-5.793867889656903887e-08, +-5.796229553830488100e-08, +-5.798581050570960561e-08, +-5.800922378705131672e-08, +-5.803253537077717312e-08, +-5.805574524549680514e-08, +-5.807885339999747517e-08, +-5.810185982324117262e-08, +-5.812476450435226577e-08, +-5.814756743263664602e-08, +-5.817026859756493282e-08, +-5.819286798878501376e-08, +-5.821536559611319699e-08, +-5.823776140953450906e-08, +-5.826005541921255486e-08, +-5.828224761547645484e-08, +-5.830433798883306740e-08, +-5.832632652995294665e-08, +-5.834821322968261782e-08, +-5.836999807904172510e-08, +-5.839168106921671863e-08, +-5.841326219157245484e-08, +-5.843474143763620876e-08, +-5.845611879911130589e-08, +-5.847739426787580539e-08, +-5.849856783597031071e-08, +-5.851963949561542640e-08, +-5.854060923919772918e-08, +-5.856147705927567727e-08, +-5.858224294858312424e-08, +-5.860290690001670623e-08, +-5.862346890665268990e-08, +-5.864392896173457798e-08, +-5.866428705867333425e-08, +-5.868454319105776634e-08, +-5.870469735264272680e-08, +-5.872474953735760329e-08, +-5.874469973929835118e-08, +-5.876454795273761160e-08, +-5.878429417211152291e-08, +-5.880393839203101003e-08, +-5.882348060728100362e-08, +-5.884292081280708601e-08, +-5.886225900373998905e-08, +-5.888149517536770816e-08, +-5.890062932315428926e-08, +-5.891966144273763179e-08, +-5.893859152991790155e-08, +-5.895741958067428607e-08, +-5.897614559115195827e-08, +-5.899476955766439915e-08, +-5.901329147670139830e-08, +-5.903171134491734102e-08, +-5.905002915914178297e-08, +-5.906824491637195266e-08, +-5.908635861377187128e-08, +-5.910437024868300682e-08, +-5.912227981861007962e-08, +-5.914008732123523696e-08, +-5.915779275440046389e-08, +-5.917539611613016855e-08, +-5.919289740460778290e-08, +-5.921029661819092331e-08, +-5.922759375541037140e-08, +-5.924478881495909580e-08, +-5.926188179570775674e-08, +-5.927887269669322481e-08, +-5.929576151711758175e-08, +-5.931254825636343979e-08, +-5.932923291397133651e-08, +-5.934581548965971948e-08, +-5.936229598331301502e-08, +-5.937867439498324947e-08, +-5.939495072489693799e-08, +-5.941112497344498628e-08, +-5.942719714119314617e-08, +-5.944316722886975349e-08, +-5.945903523737578000e-08, +-5.947480116778370174e-08, +-5.949046502133033903e-08, +-5.950602679942772225e-08, +-5.952148650365002906e-08, +-5.953684413574337817e-08, +-5.955209969762646463e-08, +-5.956725319137872125e-08, +-5.958230461925892682e-08, +-5.959725398368402368e-08, +-5.961210128724835463e-08, +-5.962684653271089789e-08, +-5.964148972299672292e-08, +-5.965603086120591737e-08, +-5.967046995060141097e-08, +-5.968480699461910023e-08, +-5.969904199686108539e-08, +-5.971317496109548518e-08, +-5.972720589126395417e-08, +-5.974113479147225958e-08, +-5.975496166599850013e-08, +-5.976868651928380192e-08, +-5.978230935594014023e-08, +-5.979583018075037923e-08, +-5.980924899865757822e-08, +-5.982256581478442040e-08, +-5.983578063441050185e-08, +-5.984889346298797512e-08, +-5.986190430613956402e-08, +-5.987481316964896834e-08, +-5.988762005947416490e-08, +-5.990032498173818281e-08, +-5.991292794272836235e-08, +-5.992542894890814724e-08, +-5.993782800689871463e-08, +-5.995012512349570398e-08, +-5.996232030565798062e-08, +-5.997441356051622526e-08, +-5.998640489536291512e-08, +-5.999829431766005312e-08, +-6.001008183503959140e-08, +-6.002176745529632419e-08, +-6.003335118639670223e-08, +-6.004483303646860224e-08, +-6.005621301380996923e-08, +-6.006749112688779749e-08, +-6.007866738432979257e-08, +-6.008974179493759293e-08, +-6.010071436767472623e-08, +-6.011158511167191645e-08, +-6.012235403622985006e-08, +-6.013302115080997773e-08, +-6.014358646504597573e-08, +-6.015404998873491832e-08, +-6.016441173183898496e-08, +-6.017467170449054260e-08, +-6.018482991698420468e-08, +-6.019488637978456035e-08, +-6.020484110351868347e-08, +-6.021469409898350451e-08, +-6.022444537713744605e-08, +-6.023409494910701376e-08, +-6.024364282618772288e-08, +-6.025308901983443669e-08, +-6.026243354167335738e-08, +-6.027167640349370127e-08, +-6.028081761725004139e-08, +-6.028985719506531180e-08, +-6.029879514922272109e-08, +-6.030763149217700199e-08, +-6.031636623654485586e-08, +-6.032499939510643490e-08, +-6.033353098081150970e-08, +-6.034196100677170028e-08, +-6.035028948626619362e-08, +-6.035851643273778642e-08, +-6.036664185979197185e-08, +-6.037466578120420555e-08, +-6.038258821091021768e-08, +-6.039040916301461559e-08, +-6.039812865178225467e-08, +-6.040574669164484257e-08, +-6.041326329719993336e-08, +-6.042067848320646732e-08, +-6.042799226459222225e-08, +-6.043520465644349022e-08, +-6.044231567401606252e-08, +-6.044932533272799020e-08, +-6.045623364815917378e-08, +-6.046304063605803363e-08, +-6.046974631233294698e-08, +-6.047635069305979186e-08, +-6.048285379447621632e-08, +-6.048925563298219436e-08, +-6.049555622514506840e-08, +-6.050175558769257446e-08, +-6.050785373751920819e-08, +-6.051385069167943537e-08, +-6.051974646739272112e-08, +-6.052554108204356965e-08, +-6.053123455317677293e-08, +-6.053682689850388251e-08, +-6.054231813589566571e-08, +-6.054770828338773037e-08, +-6.055299735918047194e-08, +-6.055818538163249576e-08, +-6.056327236927247551e-08, +-6.056825834078418451e-08, +-6.057314331501943951e-08, +-6.057792731099088763e-08, +-6.058261034787208577e-08, +-6.058719244500206667e-08, +-6.059167362187984642e-08, +-6.059605389816926840e-08, +-6.060033329369372263e-08, +-6.060451182843985145e-08, +-6.060858952255762902e-08, +-6.061256639635682753e-08, +-6.061644247031162298e-08, +-6.062021776505557913e-08, +-6.062389230138479746e-08, +-6.062746610025950529e-08, +-6.063093918279668398e-08, +-6.063431157028098770e-08, +-6.063758328415318941e-08, +-6.064075434601739381e-08, +-6.064382477764111681e-08, +-6.064679460094860186e-08, +-6.064966383802999179e-08, +-6.065243251113414219e-08, +-6.065510064266934938e-08, +-6.065766825520930612e-08, +-6.066013537148347980e-08, +-6.066250201438607248e-08, +-6.066476820696936375e-08, +-6.066693397244862089e-08, +-6.066899933419689749e-08, +-6.067096431574936135e-08, +-6.067282894080210328e-08, +-6.067459323320881514e-08, +-6.067625721698767201e-08, +-6.067782091631257071e-08, +-6.067928435551904573e-08, +-6.068064755910486487e-08, +-6.068191055172353085e-08, +-6.068307335819191790e-08, +-6.068413600348495127e-08, +-6.068509851273564700e-08, +-6.068596091124060436e-08, +-6.068672322445156198e-08, +-6.068738547798235944e-08, +-6.068794769760590645e-08, +-6.068840990925232998e-08, +-6.068877213901306385e-08, +-6.068903441313693116e-08, +-6.068919675803341337e-08, +-6.068925920026954003e-08, +-6.068922176657016679e-08, +-6.068908448382183993e-08, +-6.068884737906662892e-08, +-6.068851047950735420e-08, +-6.068807381250311379e-08, +-6.068753740557328023e-08, +-6.068690128639465508e-08, +-6.068616548280067480e-08, +-6.068533002278661210e-08, +-6.068439493450151587e-08, +-6.068336024625525214e-08, +-6.068222598651426893e-08, +-6.068099218390200652e-08, +-6.067965886720129298e-08, +-6.067822606535067806e-08, +-6.067669380744759639e-08, +-6.067506212274666014e-08, +-6.067333104065797822e-08, +-6.067150059075108699e-08, +-6.066957080275100632e-08, +-6.066754170654125711e-08, +-6.066541333216042023e-08, +-6.066318570980438646e-08, +-6.066085886982719026e-08, +-6.065843284273771432e-08, +-6.065590765920265413e-08, +-6.065328335004368578e-08, +-6.065055994624027167e-08, +-6.064773747892714596e-08, +-6.064481597939534684e-08, +-6.064179547909201805e-08, +-6.063867600962066028e-08, +-6.063545760274045627e-08, +-6.063214029036611191e-08, +-6.062872410456767103e-08, +-6.062520907757165353e-08, +-6.062159524175889815e-08, +-6.061788262966705059e-08, +-6.061407127398810183e-08, +-6.061016120756904989e-08, +-6.060615246341283950e-08, +-6.060204507467652244e-08, +-6.059783907467300455e-08, +-6.059353449686908697e-08, +-6.058913137488590289e-08, +-6.058462974250160425e-08, +-6.058002963364589567e-08, +-6.057533108240467999e-08, +-6.057053412301763620e-08, +-6.056563878987857684e-08, +-6.056064511753596411e-08, +-6.055555314069128203e-08, +-6.055036289420080987e-08, +-6.054507441307473547e-08, +-6.053968773247657282e-08, +-6.053420288772310920e-08, +-6.052861991428517277e-08, +-6.052293884778712965e-08, +-6.051715972400626185e-08, +-6.051128257887323054e-08, +-6.050530744847212897e-08, +-6.049923436903962220e-08, +-6.049306337696566176e-08, +-6.048679450879266514e-08, +-6.048042780121576721e-08, +-6.047396329108323052e-08, +-6.046740101539529384e-08, +-6.046074101130451632e-08, +-6.045398331611673034e-08, +-6.044712796728895044e-08, +-6.044017500243082915e-08, +-6.043312445930347906e-08, +-6.042597637582061105e-08, +-6.041873079004718432e-08, +-6.041138774019993580e-08, +-6.040394726464790950e-08, +-6.039640940191037870e-08, +-6.038877419065914875e-08, +-6.038104166971649250e-08, +-6.037321187805616931e-08, +-6.036528485480304130e-08, +-6.035726063923249099e-08, +-6.034913927077187714e-08, +-6.034092078899813923e-08, +-6.033260523363927976e-08, +-6.032419264457391431e-08, +-6.031568306183090089e-08, +-6.030707652558949883e-08, +-6.029837307617935548e-08, +-6.028957275407960631e-08, +-6.028067559992034392e-08, +-6.027168165448109604e-08, +-6.026259095869049468e-08, +-6.025340355362834078e-08, +-6.024411948052242779e-08, +-6.023473878075088428e-08, +-6.022526149584074458e-08, +-6.021568766746913988e-08, +-6.020601733746153804e-08, +-6.019625054779240529e-08, +-6.018638734058564301e-08, +-6.017642775811314513e-08, +-6.016637184279657156e-08, +-6.015621963720513804e-08, +-6.014597118405676748e-08, +-6.013562652621891062e-08, +-6.012518570670544900e-08, +-6.011464876867968608e-08, +-6.010401575545232226e-08, +-6.009328671048187844e-08, +-6.008246167737566217e-08, +-6.007154069988720004e-08, +-6.006052382191895085e-08, +-6.004941108751991012e-08, +-6.003820254088684090e-08, +-6.002689822636402233e-08, +-6.001549818844187319e-08, +-6.000400247175908275e-08, +-5.999241112109952700e-08, +-5.998072418139617299e-08, +-5.996894169772708184e-08, +-5.995706371531670581e-08, +-5.994509027953737055e-08, +-5.993302143590564881e-08, +-5.992085723008630439e-08, +-5.990859770788924811e-08, +-5.989624291526976284e-08, +-5.988379289833097840e-08, +-5.987124770331967609e-08, +-5.985860737662946509e-08, +-5.984587196479887663e-08, +-5.983304151451185366e-08, +-5.982011607259870378e-08, +-5.980709568603297581e-08, +-5.979398040193541699e-08, +-5.978077026756959230e-08, +-5.976746533034580190e-08, +-5.975406563781791805e-08, +-5.974057123768417920e-08, +-5.972698217778868551e-08, +-5.971329850611770632e-08, +-5.969952027080343887e-08, +-5.968564752012251276e-08, +-5.967168030249352825e-08, +-5.965761866648143700e-08, +-5.964346266079253930e-08, +-5.962921233427815014e-08, +-5.961486773593383156e-08, +-5.960042891489564718e-08, +-5.958589592044675982e-08, +-5.957126880201037730e-08, +-5.955654760915451033e-08, +-5.954173239158861091e-08, +-5.952682319916655017e-08, +-5.951182008188428900e-08, +-5.949672308987902440e-08, +-5.948153227343284237e-08, +-5.946624768296723197e-08, +-5.945086936904869696e-08, +-5.943539738238431548e-08, +-5.941983177382227605e-08, +-5.940417259435486209e-08, +-5.938841989511379978e-08, +-5.937257372737310362e-08, +-5.935663414255030063e-08, +-5.934060119220014381e-08, +-5.932447492802228168e-08, +-5.930825540185536225e-08, +-5.929194266567909095e-08, +-5.927553677161602399e-08, +-5.925903777192608252e-08, +-5.924244571901328917e-08, +-5.922576066541887265e-08, +-5.920898266382619118e-08, +-5.919211176705970674e-08, +-5.917514802808135212e-08, +-5.915809149999541456e-08, +-5.914094223604349332e-08, +-5.912370028960997886e-08, +-5.910636571421629570e-08, +-5.908893856352454199e-08, +-5.907141889133616606e-08, +-5.905380675159017966e-08, +-5.903610219836759167e-08, +-5.901830528588547891e-08, +-5.900041606850043374e-08, +-5.898243460071027145e-08, +-5.896436093714756497e-08, +-5.894619513258588510e-08, +-5.892793724193562497e-08, +-5.890958732024550215e-08, +-5.889114542270443137e-08, +-5.887261160463575418e-08, +-5.885398592150380999e-08, +-5.883526842890753045e-08, +-5.881645918258622305e-08, +-5.879755823841548818e-08, +-5.877856565240685517e-08, +-5.875948148071135570e-08, +-5.874030577961414383e-08, +-5.872103860554069654e-08, +-5.870168001505036171e-08, +-5.868223006484006391e-08, +-5.866268881174472128e-08, +-5.864305631273245451e-08, +-5.862333262491084033e-08, +-5.860351780552038670e-08, +-5.858361191193923782e-08, +-5.856361500168343219e-08, +-5.854352713240054991e-08, +-5.852334836187682637e-08, +-5.850307874803111719e-08, +-5.848271834892106567e-08, +-5.846226722273735221e-08, +-5.844172542780513031e-08, +-5.842109302258603165e-08, +-5.840037006567438754e-08, +-5.837955661580238390e-08, +-5.835865273183413865e-08, +-5.833765847276741561e-08, +-5.831657389773774061e-08, +-5.829539906601069870e-08, +-5.827413403698798254e-08, +-5.825277887020590351e-08, +-5.823133362533118955e-08, +-5.820979836216853573e-08, +-5.818817314065190890e-08, +-5.816645802085180043e-08, +-5.814465306296810580e-08, +-5.812275832733787367e-08, +-5.810077387442978691e-08, +-5.807869976484285236e-08, +-5.805653605931183372e-08, +-5.803428281870050841e-08, +-5.801194010400891366e-08, +-5.798950797636743051e-08, +-5.796698649703620808e-08, +-5.794437572741299205e-08, +-5.792167572901975076e-08, +-5.789888656351694242e-08, +-5.787600829269355590e-08, +-5.785304097846802391e-08, +-5.782998468289482056e-08, +-5.780683946815449556e-08, +-5.778360539656047027e-08, +-5.776028253056020902e-08, +-5.773687093272606056e-08, +-5.771337066576533644e-08, +-5.768978179251266783e-08, +-5.766610437593428705e-08, +-5.764233847912869588e-08, +-5.761848416532004155e-08, +-5.759454149786573339e-08, +-5.757051054025011655e-08, +-5.754639135609160563e-08, +-5.752218400913079309e-08, +-5.749788856324474298e-08, +-5.747350508243638976e-08, +-5.744903363083581547e-08, +-5.742447427270646353e-08, +-5.739982707243629119e-08, +-5.737509209454342086e-08, +-5.735026940367742386e-08, +-5.732535906460850090e-08, +-5.730036114224350958e-08, +-5.727527570161090965e-08, +-5.725010280786935907e-08, +-5.722484252630851477e-08, +-5.719949492233933143e-08, +-5.717406006150503321e-08, +-5.714853800947202142e-08, +-5.712292883203832492e-08, +-5.709723259512701586e-08, +-5.707144936478583900e-08, +-5.704557920719247268e-08, +-5.701962218864811644e-08, +-5.699357837558494891e-08, +-5.696744783455598987e-08, +-5.694123063224286255e-08, +-5.691492683545645532e-08, +-5.688853651112515594e-08, +-5.686205972631203698e-08, +-5.683549654819984092e-08, +-5.680884704409808062e-08, +-5.678211128144471353e-08, +-5.675528932779738023e-08, +-5.672838125084297984e-08, +-5.670138711839012616e-08, +-5.667430699837341588e-08, +-5.664714095885430875e-08, +-5.661988906801452332e-08, +-5.659255139416315075e-08, +-5.656512800572934249e-08, +-5.653761897127179307e-08, +-5.651002435946995220e-08, +-5.648234423912415041e-08, +-5.645457867916539956e-08, +-5.642672774863866390e-08, +-5.639879151672048896e-08, +-5.637077005270713647e-08, +-5.634266342601488212e-08, +-5.631447170618908151e-08, +-5.628619496289125945e-08, +-5.625783326591000897e-08, +-5.622938668515305029e-08, +-5.620085529065124772e-08, +-5.617223915256058156e-08, +-5.614353834115328739e-08, +-5.611475292682791459e-08, +-5.608588298009997587e-08, +-5.605692857161197932e-08, +-5.602788977212442871e-08, +-5.599876665251785500e-08, +-5.596955928379688611e-08, +-5.594026773708238537e-08, +-5.591089208362145713e-08, +-5.588143239477889696e-08, +-5.585188874203679466e-08, +-5.582226119700405015e-08, +-5.579254983140380687e-08, +-5.576275471708095606e-08, +-5.573287592600408881e-08, +-5.570291353025193039e-08, +-5.567286760203332487e-08, +-5.564273821366850776e-08, +-5.561252543760159976e-08, +-5.558222934639052841e-08, +-5.555185001271905855e-08, +-5.552138750938560227e-08, +-5.549084190930517105e-08, +-5.546021328551552995e-08, +-5.542950171116707295e-08, +-5.539870725953469464e-08, +-5.536783000400800302e-08, +-5.533687001809171655e-08, +-5.530582737541459768e-08, +-5.527470214971583417e-08, +-5.524349441485635490e-08, +-5.521220424481394625e-08, +-5.518083171367893744e-08, +-5.514937689566591347e-08, +-5.511783986509947437e-08, +-5.508622069642306286e-08, +-5.505451946419971872e-08, +-5.502273624310245047e-08, +-5.499087110792574964e-08, +-5.495892413357553233e-08, +-5.492689539507532647e-08, +-5.489478496756764165e-08, +-5.486259292630461869e-08, +-5.483031934665816089e-08, +-5.479796430410987560e-08, +-5.476552787426537443e-08, +-5.473301013283281292e-08, +-5.470041115564618397e-08, +-5.466773101864888006e-08, +-5.463496979789625421e-08, +-5.460212756956502341e-08, +-5.456920440993804181e-08, +-5.453620039541537177e-08, +-5.450311560251421766e-08, +-5.446995010785856954e-08, +-5.443670398819147195e-08, +-5.440337732036399919e-08, +-5.436997018134367275e-08, +-5.433648264821356133e-08, +-5.430291479816273846e-08, +-5.426926670849845866e-08, +-5.423553845663460990e-08, +-5.420173012010465081e-08, +-5.416784177655004332e-08, +-5.413387350372258201e-08, +-5.409982537948991308e-08, +-5.406569748182554200e-08, +-5.403148988882169780e-08, +-5.399720267867799743e-08, +-5.396283592970178982e-08, +-5.392838972032084157e-08, +-5.389386412906110889e-08, +-5.385925923457170530e-08, +-5.382457511560293165e-08, +-5.378981185101865736e-08, +-5.375496951979696237e-08, +-5.372004820101856317e-08, +-5.368504797388006755e-08, +-5.364996891768113018e-08, +-5.361481111183930211e-08, +-5.357957463587721941e-08, +-5.354425956942414506e-08, +-5.350886599222332090e-08, +-5.347339398412075107e-08, +-5.343784362507872807e-08, +-5.340221499516390813e-08, +-5.336650817454852879e-08, +-5.333072324352218801e-08, +-5.329486028246865659e-08, +-5.325891937189263913e-08, +-5.322290059240143711e-08, +-5.318680402470602751e-08, +-5.315062974963361611e-08, +-5.311437784810936673e-08, +-5.307804840117311029e-08, +-5.304164148996517020e-08, +-5.300515719573585183e-08, +-5.296859559984568069e-08, +-5.293195678375384180e-08, +-5.289524082903221524e-08, +-5.285844781735219425e-08, +-5.282157783049954135e-08, +-5.278463095036094174e-08, +-5.274760725892542600e-08, +-5.271050683829761161e-08, +-5.267332977067270891e-08, +-5.263607613836475765e-08, +-5.259874602378679460e-08, +-5.256133950945350045e-08, +-5.252385667799262820e-08, +-5.248629761212736761e-08, +-5.244866239468914339e-08, +-5.241095110861897174e-08, +-5.237316383694810437e-08, +-5.233530066282660917e-08, +-5.229736166949676154e-08, +-5.225934694030958133e-08, +-5.222125655872221898e-08, +-5.218309060828736762e-08, +-5.214484917266727214e-08, +-5.210653233562134802e-08, +-5.206814018101721258e-08, +-5.202967279281788021e-08, +-5.199113025509751192e-08, +-5.195251265202773705e-08, +-5.191382006787773272e-08, +-5.187505258702852407e-08, +-5.183621029395262907e-08, +-5.179729327322863007e-08, +-5.175830160954141868e-08, +-5.171923538766373972e-08, +-5.168009469248409033e-08, +-5.164087960898019731e-08, +-5.160159022223535552e-08, +-5.156222661743705815e-08, +-5.152278887986437056e-08, +-5.148327709490401072e-08, +-5.144369134803613491e-08, +-5.140403172484472052e-08, +-5.136429831101667928e-08, +-5.132449119232965471e-08, +-5.128461045466794369e-08, +-5.124465618400779251e-08, +-5.120462846643423161e-08, +-5.116452738812082626e-08, +-5.112435303534616716e-08, +-5.108410549448610163e-08, +-5.104378485200969030e-08, +-5.100339119449396404e-08, +-5.096292460860329736e-08, +-5.092238518110460872e-08, +-5.088177299886652669e-08, +-5.084108814884597642e-08, +-5.080033071810514674e-08, +-5.075950079379642228e-08, +-5.071859846317255441e-08, +-5.067762381358719736e-08, +-5.063657693248141515e-08, +-5.059545790740055612e-08, +-5.055426682597765637e-08, +-5.051300377595218039e-08, +-5.047166884515381488e-08, +-5.043026212150463271e-08, +-5.038878369302935656e-08, +-5.034723364783913953e-08, +-5.030561207415020654e-08, +-5.026391906026859445e-08, +-5.022215469459119767e-08, +-5.018031906561979044e-08, +-5.013841226193966584e-08, +-5.009643437223838950e-08, +-5.005438548529122808e-08, +-5.001226568997016881e-08, +-4.997007507524632824e-08, +-4.992781373017411009e-08, +-4.988548174391001862e-08, +-4.984307920569536067e-08, +-4.980060620487396052e-08, +-4.975806283087786622e-08, +-4.971544917322850767e-08, +-4.967276532154631834e-08, +-4.963001136553578650e-08, +-4.958718739500369289e-08, +-4.954429349984375822e-08, +-4.950132977003635865e-08, +-4.945829629566507601e-08, +-4.941519316689355661e-08, +-4.937202047398324595e-08, +-4.932877830728679118e-08, +-4.928546675724074865e-08, +-4.924208591438482742e-08, +-4.919863586933698786e-08, +-4.915511671281084550e-08, +-4.911152853561526073e-08, +-4.906787142863872831e-08, +-4.902414548286877966e-08, +-4.898035078937491649e-08, +-4.893648743932389049e-08, +-4.889255552396302072e-08, +-4.884855513463845781e-08, +-4.880448636278087698e-08, +-4.876034929990440609e-08, +-4.871614403762532645e-08, +-4.867187066762976654e-08, +-4.862752928170954202e-08, +-4.858311997173708230e-08, +-4.853864282966818332e-08, +-4.849409794755801522e-08, +-4.844948541753729288e-08, +-4.840480533182979232e-08, +-4.836005778275092791e-08, +-4.831524286269329992e-08, +-4.827036066414522996e-08, +-4.822541127967425706e-08, +-4.818039480193823514e-08, +-4.813531132368629917e-08, +-4.809016093774367811e-08, +-4.804494373702989288e-08, +-4.799965981454166354e-08, +-4.795430926337568647e-08, +-4.790889217669442226e-08, +-4.786340864776313347e-08, +-4.781785876992530749e-08, +-4.777224263660401312e-08, +-4.772656034131935733e-08, +-4.768081197766359714e-08, +-4.763499763931861622e-08, +-4.758911742005808219e-08, +-4.754317141372111583e-08, +-4.749715971425092372e-08, +-4.745108241565953384e-08, +-4.740493961204839574e-08, +-4.735873139760691140e-08, +-4.731245786659749308e-08, +-4.726611911337435686e-08, +-4.721971523236513935e-08, +-4.717324631809113388e-08, +-4.712671246515048878e-08, +-4.708011376822014629e-08, +-4.703345032206593418e-08, +-4.698672222152665738e-08, +-4.693992956153412241e-08, +-4.689307243709569378e-08, +-4.684615094329452559e-08, +-4.679916517530978444e-08, +-4.675211522838125935e-08, +-4.670500119784987375e-08, +-4.665782317912222259e-08, +-4.661058126769076879e-08, +-4.656327555913424691e-08, +-4.651590614910002761e-08, +-4.646847313332429432e-08, +-4.642097660761607529e-08, +-4.637341666786709697e-08, +-4.632579341005435159e-08, +-4.627810693022223668e-08, +-4.623035732450457792e-08, +-4.618254468910349302e-08, +-4.613466912031136163e-08, +-4.608673071449334869e-08, +-4.603872956808730515e-08, +-4.599066577762385191e-08, +-4.594253943969117505e-08, +-4.589435065097337386e-08, +-4.584609950822555283e-08, +-4.579778610827343784e-08, +-4.574941054803371153e-08, +-4.570097292448639210e-08, +-4.565247333469803410e-08, +-4.560391187580394731e-08, +-4.555528864501973097e-08, +-4.550660373964322595e-08, +-4.545785725703656157e-08, +-4.540904929464713294e-08, +-4.536017994998879417e-08, +-4.531124932066209451e-08, +-4.526225750433734431e-08, +-4.521320459875572016e-08, +-4.516409070174195709e-08, +-4.511491591118488013e-08, +-4.506568032506015499e-08, +-4.501638404141155416e-08, +-4.496702715835159213e-08, +-4.491760977408020647e-08, +-4.486813198685757994e-08, +-4.481859389502346349e-08, +-4.476899559699898277e-08, +-4.471933719125893091e-08, +-4.466961877637237978e-08, +-4.461984045096628405e-08, +-4.457000231374547909e-08, +-4.452010446349385225e-08, +-4.447014699905548320e-08, +-4.442013001935688508e-08, +-4.437005362338838307e-08, +-4.431991791021982419e-08, +-4.426972297898324620e-08, +-4.421946892889359683e-08, +-4.416915585923138944e-08, +-4.411878386934211410e-08, +-4.406835305865598403e-08, +-4.401786352666041362e-08, +-4.396731537292094283e-08, +-4.391670869707340875e-08, +-4.386604359881593184e-08, +-4.381532017793044250e-08, +-4.376453853425478193e-08, +-4.371369876770232285e-08, +-4.366280097826197611e-08, +-4.361184526597991993e-08, +-4.356083173098078894e-08, +-4.350976047345073356e-08, +-4.345863159364823288e-08, +-4.340744519190637766e-08, +-4.335620136861411654e-08, +-4.330490022423944352e-08, +-4.325354185930731558e-08, +-4.320212637442284680e-08, +-4.315065387025275967e-08, +-4.309912444752676153e-08, +-4.304753820705021035e-08, +-4.299589524968495059e-08, +-4.294419567637399632e-08, +-4.289243958811295704e-08, +-4.284062708596961873e-08, +-4.278875827108455926e-08, +-4.273683324465138208e-08, +-4.268485210794066478e-08, +-4.263281496227990158e-08, +-4.258072190906608972e-08, +-4.252857304976855511e-08, +-4.247636848590834562e-08, +-4.242410831908245093e-08, +-4.237179265094168036e-08, +-4.231942158321437325e-08, +-4.226699521768683775e-08, +-4.221451365620516399e-08, +-4.216197700068794285e-08, +-4.210938535310726723e-08, +-4.205673881551138361e-08, +-4.200403749000544847e-08, +-4.195128147875166730e-08, +-4.189847088399007336e-08, +-4.184560580800871607e-08, +-4.179268635316884706e-08, +-4.173971262188619274e-08, +-4.168668471664240912e-08, +-4.163360273998816557e-08, +-4.158046679452266377e-08, +-4.152727698291815539e-08, +-4.147403340789744277e-08, +-4.142073617225722525e-08, +-4.136738537884986148e-08, +-4.131398113058354813e-08, +-4.126052353043617681e-08, +-4.120701268143546184e-08, +-4.115344868668237931e-08, +-4.109983164933196980e-08, +-4.104616167259261714e-08, +-4.099243885974950059e-08, +-4.093866331412460565e-08, +-4.088483513912022713e-08, +-4.083095443818953475e-08, +-4.077702131483828706e-08, +-4.072303587264625214e-08, +-4.066899821523706509e-08, +-4.061490844629886786e-08, +-4.056076666958536805e-08, +-4.050657298889476235e-08, +-4.045232750809434680e-08, +-4.039803033110053211e-08, +-4.034368156189580421e-08, +-4.028928130450934168e-08, +-4.023482966304071950e-08, +-4.018032674163964641e-08, +-4.012577264450660018e-08, +-4.007116747591577693e-08, +-4.001651134017385120e-08, +-3.996180434166564291e-08, +-3.990704658482361761e-08, +-3.985223817412888569e-08, +-3.979737921413406562e-08, +-3.974246980943215556e-08, +-3.968751006467753704e-08, +-3.963250008458879410e-08, +-3.957743997391718766e-08, +-3.952232983749324906e-08, +-3.946716978018440849e-08, +-3.941195990691865239e-08, +-3.935670032268563516e-08, +-3.930139113251496071e-08, +-3.924603244150128245e-08, +-3.919062435478179071e-08, +-3.913516697756514423e-08, +-3.907966041508836414e-08, +-3.902410477266393687e-08, +-3.896850015564815637e-08, +-3.891284666944372471e-08, +-3.885714441952092132e-08, +-3.880139351138705685e-08, +-3.874559405060773502e-08, +-3.868974614280994296e-08, +-3.863384989364963900e-08, +-3.857790540885893499e-08, +-3.852191279420373148e-08, +-3.846587215550750740e-08, +-3.840978359865119433e-08, +-3.835364722955339699e-08, +-3.829746315419432847e-08, +-3.824123147859556092e-08, +-3.818495230883325379e-08, +-3.812862575104050303e-08, +-3.807225191138695933e-08, +-3.801583089610257156e-08, +-3.795936281145564330e-08, +-3.790284776377735048e-08, +-3.784628585944098904e-08, +-3.778967720486200145e-08, +-3.773302190652258696e-08, +-3.767632007092858233e-08, +-3.761957180465896694e-08, +-3.756277721432246559e-08, +-3.750593640658256242e-08, +-3.744904948815764652e-08, +-3.739211656579953832e-08, +-3.733513774631865572e-08, +-3.727811313656404263e-08, +-3.722104284343569732e-08, +-3.716392697388749726e-08, +-3.710676563490588438e-08, +-3.704955893353536870e-08, +-3.699230697685487094e-08, +-3.693500987200335190e-08, +-3.687766772615850429e-08, +-3.682028064653934014e-08, +-3.676284874041898233e-08, +-3.670537211510438212e-08, +-3.664785087796174999e-08, +-3.659028513639475115e-08, +-3.653267499784484305e-08, +-3.647502056981414524e-08, +-3.641732195983302054e-08, +-3.635957927548256772e-08, +-3.630179262439734787e-08, +-3.624396211423205238e-08, +-3.618608785271055137e-08, +-3.612816994758139144e-08, +-3.607020850664805722e-08, +-3.601220363774477133e-08, +-3.595415544876328190e-08, +-3.589606404763023080e-08, +-3.583792954231014479e-08, +-3.577975204081903435e-08, +-3.572153165120299948e-08, +-3.566326848156417671e-08, +-3.560496264003910003e-08, +-3.554661423479897887e-08, +-3.548822337407221721e-08, +-3.542979016611189550e-08, +-3.537131471922138676e-08, +-3.531279714174474806e-08, +-3.525423754205660908e-08, +-3.519563602858880730e-08, +-3.513699270979661918e-08, +-3.507830769418198743e-08, +-3.501958109029405035e-08, +-3.496081300670671536e-08, +-3.490200355204529415e-08, +-3.484315283496446007e-08, +-3.478426096416763053e-08, +-3.472532804838452729e-08, +-3.466635419639832122e-08, +-3.460733951702278225e-08, +-3.454828411910282201e-08, +-3.448918811154054009e-08, +-3.443005160324900779e-08, +-3.437087470320326217e-08, +-3.431165752040574315e-08, +-3.425240016388938382e-08, +-3.419310274274032812e-08, +-3.413376536606474443e-08, +-3.407438814301290635e-08, +-3.401497118277839869e-08, +-3.395551459457671661e-08, +-3.389601848767141777e-08, +-3.383648297135180169e-08, +-3.377690815494832178e-08, +-3.371729414783380958e-08, +-3.365764105940154452e-08, +-3.359794899909227295e-08, +-3.353821807636918101e-08, +-3.347844840074506581e-08, +-3.341864008175956479e-08, +-3.335879322898195497e-08, +-3.329890795202515539e-08, +-3.323898436052387634e-08, +-3.317902256416368318e-08, +-3.311902267264622167e-08, +-3.305898479571409291e-08, +-3.299890904315267318e-08, +-3.293879552475602748e-08, +-3.287864435037761234e-08, +-3.281845562988376849e-08, +-3.275822947318075970e-08, +-3.269796599021433601e-08, +-3.263766529094737344e-08, +-3.257732748538703854e-08, +-3.251695268355907304e-08, +-3.245654099553643415e-08, +-3.239609253141529967e-08, +-3.233560740131785399e-08, +-3.227508571540711110e-08, +-3.221452758386419034e-08, +-3.215393311691580526e-08, +-3.209330242481112236e-08, +-3.203263561782211850e-08, +-3.197193280627064623e-08, +-3.191119410048037125e-08, +-3.185041961083218695e-08, +-3.178960944771619158e-08, +-3.172876372155913740e-08, +-3.166788254282401383e-08, +-3.160696602198742234e-08, +-3.154601426956755507e-08, +-3.148502739610021977e-08, +-3.142400551215466218e-08, +-3.136294872833563720e-08, +-3.130185715526030086e-08, +-3.124073090358612926e-08, +-3.117957008398515689e-08, +-3.111837480717229266e-08, +-3.105714518388108021e-08, +-3.099588132486459125e-08, +-3.093458334092285490e-08, +-3.087325134285408045e-08, +-3.081188544150838446e-08, +-3.075048574775138815e-08, +-3.068905237246732098e-08, +-3.062758542658343245e-08, +-3.056608502103482033e-08, +-3.050455126678933212e-08, +-3.044298427485023190e-08, +-3.038138415621985730e-08, +-3.031975102195346566e-08, +-3.025808498311009949e-08, +-3.019638615078650091e-08, +-3.013465463608996020e-08, +-3.007289055016743265e-08, +-3.001109400418178186e-08, +-2.994926510931411574e-08, +-2.988740397677935073e-08, +-2.982551071780231618e-08, +-2.976358544364683144e-08, +-2.970162826559125108e-08, +-2.963963929492880569e-08, +-2.957761864299304924e-08, +-2.951556642112197272e-08, +-2.945348274068293533e-08, +-2.939136771307551991e-08, +-2.932922144969496166e-08, +-2.926704406198671555e-08, +-2.920483566139638545e-08, +-2.914259635939837104e-08, +-2.908032626749565274e-08, +-2.901802549719640568e-08, +-2.895569416004217674e-08, +-2.889333236758410482e-08, +-2.883094023139921623e-08, +-2.876851786309164897e-08, +-2.870606537426957438e-08, +-2.864358287657401607e-08, +-2.858107048165196994e-08, +-2.851852830118782705e-08, +-2.845595644686658063e-08, +-2.839335503040265834e-08, +-2.833072416352873872e-08, +-2.826806395798539826e-08, +-2.820537452554963584e-08, +-2.814265597799806655e-08, +-2.807990842713304071e-08, +-2.801713198478220051e-08, +-2.795432676277478297e-08, +-2.789149287297062745e-08, +-2.782863042723575734e-08, +-2.776573953745828504e-08, +-2.770282031555072811e-08, +-2.763987287342653714e-08, +-2.757689732302825634e-08, +-2.751389377630114638e-08, +-2.745086234522275112e-08, +-2.738780314177776127e-08, +-2.732471627796124370e-08, +-2.726160186579413947e-08, +-2.719846001729893815e-08, +-2.713529084453205692e-08, +-2.707209445954560834e-08, +-2.700887097441412484e-08, +-2.694562050123503195e-08, +-2.688234315210323390e-08, +-2.681903903914123632e-08, +-2.675570827447436384e-08, +-2.669235097024707878e-08, +-2.662896723862504242e-08, +-2.656555719177085878e-08, +-2.650212094187414429e-08, +-2.643865860112318859e-08, +-2.637517028173517970e-08, +-2.631165609593182204e-08, +-2.624811615594142094e-08, +-2.618455057401522441e-08, +-2.612095946240257132e-08, +-2.605734293338113976e-08, +-2.599370109923138050e-08, +-2.593003407223728800e-08, +-2.586634196471257232e-08, +-2.580262488896296288e-08, +-2.573888295731585133e-08, +-2.567511628210884995e-08, +-2.561132497567912433e-08, +-2.554750915039316530e-08, +-2.548366891860813968e-08, +-2.541980439270453087e-08, +-2.535591568505883856e-08, +-2.529200290807320836e-08, +-2.522806617415070238e-08, +-2.516410559569795618e-08, +-2.510012128514152378e-08, +-2.503611335490246677e-08, +-2.497208191742697647e-08, +-2.490802708516093316e-08, +-2.484394897055044214e-08, +-2.477984768607086443e-08, +-2.471572334417548854e-08, +-2.465157605735205011e-08, +-2.458740593808499261e-08, +-2.452321309885741614e-08, +-2.445899765217832812e-08, +-2.439475971054448377e-08, +-2.433049938646716358e-08, +-2.426621679247233878e-08, +-2.420191204107536624e-08, +-2.413758524481176285e-08, +-2.407323651621143390e-08, +-2.400886596782067281e-08, +-2.394447371217787175e-08, +-2.388005986184254248e-08, +-2.381562452937139425e-08, +-2.375116782731731807e-08, +-2.368668986826007838e-08, +-2.362219076475355547e-08, +-2.355767062938313864e-08, +-2.349312957472753352e-08, +-2.342856771336082678e-08, +-2.336398515788011728e-08, +-2.329938202086668484e-08, +-2.323475841491327733e-08, +-2.317011445262695947e-08, +-2.310545024658999378e-08, +-2.304076590941757781e-08, +-2.297606155370559941e-08, +-2.291133729206031927e-08, +-2.284659323709860254e-08, +-2.278182950142242180e-08, +-2.271704619764993591e-08, +-2.265224343838644603e-08, +-2.258742133625549432e-08, +-2.252258000387342645e-08, +-2.245771955385222719e-08, +-2.239284009881561738e-08, +-2.232794175137421859e-08, +-2.226302462415823675e-08, +-2.219808882977929267e-08, +-2.213313448085689517e-08, +-2.206816169002163399e-08, +-2.200317056987615998e-08, +-2.193816123305310768e-08, +-2.187313379216216891e-08, +-2.180808835982049007e-08, +-2.174302504865274158e-08, +-2.167794397126533302e-08, +-2.161284524027738940e-08, +-2.154772896829508538e-08, +-2.148259526792857271e-08, +-2.141744425179413421e-08, +-2.135227603248928229e-08, +-2.128709072262317610e-08, +-2.122188843478846424e-08, +-2.115666928159146365e-08, +-2.109143337562766513e-08, +-2.102618082948065139e-08, +-2.096091175575328175e-08, +-2.089562626701422982e-08, +-2.083032447585612435e-08, +-2.076500649485692322e-08, +-2.069967243658193507e-08, +-2.063432241361186070e-08, +-2.056895653850332335e-08, +-2.050357492382240590e-08, +-2.043817768211913730e-08, +-2.037276492594404612e-08, +-2.030733676785125752e-08, +-2.024189332037235100e-08, +-2.017643469604752200e-08, +-2.011096100739721618e-08, +-2.004547236695267889e-08, +-1.997996888723080883e-08, +-1.991445068073632532e-08, +-1.984891785997914236e-08, +-1.978337053744803120e-08, +-1.971780882564196723e-08, +-1.965223283704438804e-08, +-1.958664268412314716e-08, +-1.952103847935828743e-08, +-1.945542033520264080e-08, +-1.938978836410953878e-08, +-1.932414267853592275e-08, +-1.925848339090216275e-08, +-1.919281061365129356e-08, +-1.912712445919534727e-08, +-1.906142503995174253e-08, +-1.899571246831486269e-08, +-1.892998685668684672e-08, +-1.886424831745239666e-08, +-1.879849696298081903e-08, +-1.873273290564327656e-08, +-1.866695625778676175e-08, +-1.860116713176550661e-08, +-1.853536563991474113e-08, +-1.846955189455112346e-08, +-1.840372600800035777e-08, +-1.833788809255778081e-08, +-1.827203826051898740e-08, +-1.820617662416841863e-08, +-1.814030329576799977e-08, +-1.807441838758793119e-08, +-1.800852201186695391e-08, +-1.794261428084031829e-08, +-1.787669530674004202e-08, +-1.781076520176865880e-08, +-1.774482407813051548e-08, +-1.767887204800606336e-08, +-1.761290922356858369e-08, +-1.754693571698712589e-08, +-1.748095164040013370e-08, +-1.741495710594749345e-08, +-1.734895222574100373e-08, +-1.728293711189869014e-08, +-1.721691187650489551e-08, +-1.715087663164119655e-08, +-1.708483148937502850e-08, +-1.701877656174790937e-08, +-1.695271196080667431e-08, +-1.688663779856363523e-08, +-1.682055418702445023e-08, +-1.675446123818821618e-08, +-1.668835906402158464e-08, +-1.662224777649008551e-08, +-1.655612748753183923e-08, +-1.648999830907499375e-08, +-1.642386035304027225e-08, +-1.635771373131479121e-08, +-1.629155855578363556e-08, +-1.622539493830092060e-08, +-1.615922299072115202e-08, +-1.609304282487323928e-08, +-1.602685455256322854e-08, +-1.596065828559124004e-08, +-1.589445413572565677e-08, +-1.582824221473418672e-08, +-1.576202263435814753e-08, +-1.569579550631208263e-08, +-1.562956094231242476e-08, +-1.556331905403705341e-08, +-1.549706995315955005e-08, +-1.543081375132336030e-08, +-1.536455056015851620e-08, +-1.529828049128460089e-08, +-1.523200365628448718e-08, +-1.516572016673605176e-08, +-1.509943013418300542e-08, +-1.503313367016631933e-08, +-1.496683088619854605e-08, +-1.490052189376597517e-08, +-1.483420680434605865e-08, +-1.476788572938126039e-08, +-1.470155878031048079e-08, +-1.463522606854304853e-08, +-1.456888770545851381e-08, +-1.450254380243797032e-08, +-1.443619447080968473e-08, +-1.436983982190863872e-08, +-1.430347996703660435e-08, +-1.423711501746462390e-08, +-1.417074508446161877e-08, +-1.410437027925407600e-08, +-1.403799071306010328e-08, +-1.397160649706082672e-08, +-1.390521774243155898e-08, +-1.383882456031585564e-08, +-1.377242706182826468e-08, +-1.370602535807128373e-08, +-1.363961956010936837e-08, +-1.357320977900044939e-08, +-1.350679612576968632e-08, +-1.344037871140955186e-08, +-1.337395764691107110e-08, +-1.330753304320896297e-08, +-1.324110501124207734e-08, +-1.317467366191289294e-08, +-1.310823910608993273e-08, +-1.304180145463677316e-08, +-1.297536081837144276e-08, +-1.290891730809476144e-08, +-1.284247103459344897e-08, +-1.277602210859921263e-08, +-1.270957064084947224e-08, +-1.264311674203219378e-08, +-1.257666052281737025e-08, +-1.251020209385716727e-08, +-1.244374156575934076e-08, +-1.237727904911907518e-08, +-1.231081465448991139e-08, +-1.224434849242110710e-08, +-1.217788067340252020e-08, +-1.211141130792509715e-08, +-1.204494050644028487e-08, +-1.197846837936287625e-08, +-1.191199503709943540e-08, +-1.184552059000790309e-08, +-1.177904514842621059e-08, +-1.171256882267501931e-08, +-1.164609172301711116e-08, +-1.157961395971777440e-08, +-1.151313564299001785e-08, +-1.144665688302587136e-08, +-1.138017778999631963e-08, +-1.131369847402510711e-08, +-1.124721904522044544e-08, +-1.118073961364863135e-08, +-1.111426028935143734e-08, +-1.104778118234864613e-08, +-1.098130240261207389e-08, +-1.091482406009689888e-08, +-1.084834626471276968e-08, +-1.078186912635829203e-08, +-1.071539275488038278e-08, +-1.064891726010298798e-08, +-1.058244275182978944e-08, +-1.051596933980362814e-08, +-1.044949713376691494e-08, +-1.038302624340663962e-08, +-1.031655677838592611e-08, +-1.025008884834390021e-08, +-1.018362256286947121e-08, +-1.011715803153292527e-08, +-1.005069536385990397e-08, +-9.984234669348353197e-09, +-9.917776057471383599e-09, +-9.851319637650938069e-09, +-9.784865519289624983e-09, +-9.718413811741424425e-09, +-9.651964624343523057e-09, +-9.585518066389875773e-09, +-9.519074247134213329e-09, +-9.452633275806944951e-09, +-9.386195261589075676e-09, +-9.319760313643945270e-09, +-9.253328541090867640e-09, +-9.186900053004980285e-09, +-9.120474958446056650e-09, +-9.054053366417927957e-09, +-8.987635385902814505e-09, +-8.921221125835137137e-09, +-8.854810695118884718e-09, +-8.788404202630277663e-09, +-8.722001757191390796e-09, +-8.655603467602006426e-09, +-8.589209442610313949e-09, +-8.522819790944891968e-09, +-8.456434621288147514e-09, +-8.390054042279158245e-09, +-8.323678162530963830e-09, +-8.257307090604152410e-09, +-8.190940935038756694e-09, +-8.124579804327865232e-09, +-8.058223806917529778e-09, +-7.991873051235516430e-09, +-7.925527645650522320e-09, +-7.859187698504046881e-09, +-7.792853318098503608e-09, +-7.726524612685388063e-09, +-7.660201690497182240e-09, +-7.593884659706536501e-09, +-7.527573628454961167e-09, +-7.461268704852816593e-09, +-7.394969996952924449e-09, +-7.328677612782430720e-09, +-7.262391660316406236e-09, +-7.196112247500953132e-09, +-7.129839482226842608e-09, +-7.063573472361514405e-09, +-6.997314325722452347e-09, +-6.931062150077152907e-09, +-6.864817053172076524e-09, +-6.798579142691731950e-09, +-6.732348526290465620e-09, +-6.666125311580638763e-09, +-6.599909606120996416e-09, +-6.533701517448278130e-09, +-6.467501153036418940e-09, +-6.401308620325480008e-09, +-6.335124026721484842e-09, +-6.268947479570026442e-09, +-6.202779086188175794e-09, +-6.136618953837981482e-09, +-6.070467189744007578e-09, +-6.004323901095839162e-09, +-5.938189195021816865e-09, +-5.872063178620909787e-09, +-5.805945958933396911e-09, +-5.739837642978566683e-09, +-5.673738337699185899e-09, +-5.607648150022644893e-09, +-5.541567186819782971e-09, +-5.475495554907787676e-09, +-5.409433361079115507e-09, +-5.343380712060562190e-09, +-5.277337714542213178e-09, +-5.211304475177223617e-09, +-5.145281100555589278e-09, +-5.079267697235865625e-09, +-5.013264371718853543e-09, +-4.947271230464870042e-09, +-4.881288379896578048e-09, +-4.815315926372543911e-09, +-4.749353976219107853e-09, +-4.683402635701112529e-09, +-4.617462011053832191e-09, +-4.551532208456447496e-09, +-4.485613334034935669e-09, +-4.419705493879325494e-09, +-4.353808794017321830e-09, +-4.287923340446161169e-09, +-4.222049239106248554e-09, +-4.156186595881093894e-09, +-4.090335516628977263e-09, +-4.024496107127622922e-09, +-3.958668473138040295e-09, +-3.892852720349018491e-09, +-3.827048954409034802e-09, +-3.761257280926066103e-09, +-3.695477805441215435e-09, +-3.629710633460606443e-09, +-3.563955870426083806e-09, +-3.498213621747061760e-09, +-3.432483992774178807e-09, +-3.366767088802054713e-09, +-3.301063015086586850e-09, +-3.235371876818551142e-09, +-3.169693779155565564e-09, +-3.104028827195605890e-09, +-3.038377125976908493e-09, +-2.972738780509830038e-09, +-2.907113895721370548e-09, +-2.841502576516117170e-09, +-2.775904927735350853e-09, +-2.710321054159857105e-09, +-2.644751060538736693e-09, +-2.579195051548623575e-09, +-2.513653131828373127e-09, +-2.448125405952736710e-09, +-2.382611978449667528e-09, +-2.317112953803063972e-09, +-2.251628436426399520e-09, +-2.186158530694642387e-09, +-2.120703340914905926e-09, +-2.055262971358322786e-09, +-1.989837526233741810e-09, +-1.924427109690443673e-09, +-1.859031825835432466e-09, +-1.793651778707112332e-09, +-1.728287072307133299e-09, +-1.662937810574007317e-09, +-1.597604097383005485e-09, +-1.532286036575045882e-09, +-1.466983731915843465e-09, +-1.401697287124830364e-09, +-1.336426805877858909e-09, +-1.271172391766428029e-09, +-1.205934148358492408e-09, +-1.140712179143119132e-09, +-1.075506587562287826e-09, +-1.010317477010725215e-09, +-9.451449508096200143e-10, +-8.799891122384018611e-10, +-8.148500645084519676e-10, +-7.497279107861794934e-10, +-6.846227541667301272e-10, +-6.195346977057554059e-10, +-5.544638443931417680e-10, +-4.894102971528642470e-10, +-4.243741588718162479e-10, +-3.593555323590710062e-10, +-2.943545203776154929e-10, +-2.293712256325889921e-10, +-1.644057507595467519e-10, +-9.945819835617264174e-11, +-3.452867094156410139e-11, + 3.038272901495253797e-11, + 9.527589909398378036e-11, + 1.601507369522813881e-10, + 2.250071402910510825e-10, + 2.898450068821572191e-10, + 3.546642345509121054e-10, + 4.194647211733413290e-10, + 4.842463647023753461e-10, + 5.490090631361815696e-10, + 6.137527145472351150e-10, + 6.784772170506823984e-10, + 7.431824688304968467e-10, + 8.078683681367455819e-10, + 8.725348132684131199e-10, + 9.371817025995457572e-10, + 1.001808934544740872e-09, + 1.066416407599752705e-09, + 1.131004020312736560e-09, + 1.195571671284443608e-09, + 1.260119259194312434e-09, + 1.324646682768896180e-09, + 1.389153840807984076e-09, + 1.453640632167425451e-09, + 1.518106955756430432e-09, + 1.582552710563635653e-09, + 1.646977795625590528e-09, + 1.711382110055693687e-09, + 1.775765553012636653e-09, + 1.840128023726531794e-09, + 1.904469421496149328e-09, + 1.968789645671792410e-09, + 2.033088595681355809e-09, + 2.097366170998851470e-09, + 2.161622271170404946e-09, + 2.225856795814430343e-09, + 2.290069644593030141e-09, + 2.354260717252381453e-09, + 2.418429913588395632e-09, + 2.482577133472752115e-09, + 2.546702276835759665e-09, + 2.610805243663710625e-09, + 2.674885934024798147e-09, + 2.738944248037734611e-09, + 2.802980085900573493e-09, + 2.866993347859315382e-09, + 2.930983934233856630e-09, + 2.994951745415287785e-09, + 3.058896681848851602e-09, + 3.122818644059835448e-09, + 3.186717532622244321e-09, + 3.250593248184706488e-09, + 3.314445691470657539e-09, + 3.378274763246938951e-09, + 3.442080364378407313e-09, + 3.505862395767867366e-09, + 3.569620758396423941e-09, + 3.633355353320667062e-09, + 3.697066081644196256e-09, + 3.760752844557917067e-09, + 3.824415543311478097e-09, + 3.888054079213486076e-09, + 3.951668353657330848e-09, + 4.015258268089998601e-09, + 4.078823724037783116e-09, + 4.142364623083649147e-09, + 4.205880866893147986e-09, + 4.269372357183011071e-09, + 4.332838995747134212e-09, + 4.396280684456604058e-09, + 4.459697325228567158e-09, + 4.523088820080482251e-09, + 4.586455071070390387e-09, + 4.649795980337029872e-09, + 4.713111450097074318e-09, + 4.776401382616812455e-09, + 4.839665680252147280e-09, + 4.902904245420288282e-09, + 4.966116980597054002e-09, + 5.029303788356848852e-09, + 5.092464571312992781e-09, + 5.155599232172051327e-09, + 5.218707673702551645e-09, + 5.281789798735212466e-09, + 5.344845510188625573e-09, + 5.407874711038232388e-09, + 5.470877304344726877e-09, + 5.533853193217375051e-09, + 5.596802280868094383e-09, + 5.659724470551950566e-09, + 5.722619665607057399e-09, + 5.785487769451914921e-09, + 5.848328685557056141e-09, + 5.911142317485135518e-09, + 5.973928568862408599e-09, + 6.036687343376281089e-09, + 6.099418544815001932e-09, + 6.162122077008366047e-09, + 6.224797843881629960e-09, + 6.287445749424511553e-09, + 6.350065697691398517e-09, + 6.412657592826866870e-09, + 6.475221339034694777e-09, + 6.537756840603563872e-09, + 6.600264001890113643e-09, + 6.662742727316339942e-09, + 6.725192921395092005e-09, + 6.787614488699280653e-09, + 6.850007333890052890e-09, + 6.912371361686023264e-09, + 6.974706476888741107e-09, + 7.037012584382920490e-09, + 7.099289589105408542e-09, + 7.161537396099057241e-09, + 7.223755910450656747e-09, + 7.285945037344910585e-09, + 7.348104682033241019e-09, + 7.410234749834140594e-09, + 7.472335146158590576e-09, + 7.534405776479260053e-09, + 7.596446546355920229e-09, + 7.658457361418721319e-09, + 7.720438127365609259e-09, + 7.782388749987625854e-09, + 7.844309135138145933e-09, + 7.906199188761241369e-09, + 7.968058816860731291e-09, + 8.029887925525791596e-09, + 8.091686420928081323e-09, + 8.153454209305182495e-09, + 8.215191196986017729e-09, + 8.276897290359931877e-09, + 8.338572395902260178e-09, + 8.400216420174367965e-09, + 8.461829269795787908e-09, + 8.523410851483595473e-09, + 8.584961072024423743e-09, + 8.646479838272053012e-09, + 8.707967057186488458e-09, + 8.769422635775314683e-09, + 8.830846481147222579e-09, + 8.892238500475510805e-09, + 8.953598601026428307e-09, + 9.014926690128312206e-09, + 9.076222675197150991e-09, + 9.137486463733662914e-09, + 9.198717963306777196e-09, + 9.259917081578929208e-09, + 9.321083726275441555e-09, + 9.382217805209810986e-09, + 9.443319226283776224e-09, + 9.504387897459602449e-09, + 9.565423726799314482e-09, + 9.626426622434043118e-09, + 9.687396492575319453e-09, + 9.748333245526445310e-09, + 9.809236789651894173e-09, + 9.870107033416469915e-09, + 9.930943885357573090e-09, + 9.991747254085429233e-09, + 1.005251704830811273e-08, + 1.011325317680108174e-08, + 1.017395554843251809e-08, + 1.023462407214104793e-08, + 1.029525865696087484e-08, + 1.035585921199152319e-08, + 1.041642564642269494e-08, + 1.047695786953475764e-08, + 1.053745579067076922e-08, + 1.059791931927559039e-08, + 1.065834836486555023e-08, + 1.071874283703960825e-08, + 1.077910264549059733e-08, + 1.083942769997476040e-08, + 1.089971791035096536e-08, + 1.095997318655276460e-08, + 1.102019343858873081e-08, + 1.108037857656743954e-08, + 1.114052851066720592e-08, + 1.120064315116102582e-08, + 1.126072240840010009e-08, + 1.132076619281154985e-08, + 1.138077441492276377e-08, + 1.144074698533170390e-08, + 1.150068381473434161e-08, + 1.156058481389451349e-08, + 1.162044989366899151e-08, + 1.168027896500462927e-08, + 1.174007193892201195e-08, + 1.179982872654058934e-08, + 1.185954923904550924e-08, + 1.191923338772629971e-08, + 1.197888108394958699e-08, + 1.203849223915917330e-08, + 1.209806676490096967e-08, + 1.215760457279260700e-08, + 1.221710557454879743e-08, + 1.227656968196450117e-08, + 1.233599680691251120e-08, + 1.239538686136827193e-08, + 1.245473975737979965e-08, + 1.251405540709517302e-08, + 1.257333372273273971e-08, + 1.263257461660545368e-08, + 1.269177800111886018e-08, + 1.275094378875426429e-08, + 1.281007189209360586e-08, + 1.286916222378976376e-08, + 1.292821469659094283e-08, + 1.298722922334099477e-08, + 1.304620571694938823e-08, + 1.310514409044335755e-08, + 1.316404425690786768e-08, + 1.322290612953747174e-08, + 1.328172962160658882e-08, + 1.334051464646968425e-08, + 1.339926111758563839e-08, + 1.345796894848815339e-08, + 1.351663805281310805e-08, + 1.357526834426856097e-08, + 1.363385973665949146e-08, + 1.369241214388511296e-08, + 1.375092547992275779e-08, + 1.380939965885237007e-08, + 1.386783459482688265e-08, + 1.392623020209656274e-08, + 1.398458639500949827e-08, + 1.404290308798138595e-08, + 1.410118019554744513e-08, + 1.415941763230572117e-08, + 1.421761531295490417e-08, + 1.427577315229179776e-08, + 1.433389106518442085e-08, + 1.439196896661012911e-08, + 1.445000677162838745e-08, + 1.450800439537847047e-08, + 1.456596175311703468e-08, + 1.462387876016207531e-08, + 1.468175533194375001e-08, + 1.473959138396987707e-08, + 1.479738683185263855e-08, + 1.485514159127958751e-08, + 1.491285557803735506e-08, + 1.497052870801208713e-08, + 1.502816089716013408e-08, + 1.508575206155876853e-08, + 1.514330211735049454e-08, + 1.520081098078022775e-08, + 1.525827856819305539e-08, + 1.531570479600736280e-08, + 1.537308958075242716e-08, + 1.543043283904188153e-08, + 1.548773448757128293e-08, + 1.554499444315521306e-08, + 1.560221262267166198e-08, + 1.565938894311290302e-08, + 1.571652332155588633e-08, + 1.577361567516277822e-08, + 1.583066592120472106e-08, + 1.588767397703291177e-08, + 1.594463976010238824e-08, + 1.600156318795645510e-08, + 1.605844417822400707e-08, + 1.611528264864358987e-08, + 1.617207851703429681e-08, + 1.622883170132227159e-08, + 1.628554211950927544e-08, + 1.634220968970960587e-08, + 1.639883433012403385e-08, + 1.645541595903698147e-08, + 1.651195449485383109e-08, + 1.656844985604556051e-08, + 1.662490196119874104e-08, + 1.668131072898697001e-08, + 1.673767607817092371e-08, + 1.679399792762199160e-08, + 1.685027619629339445e-08, + 1.690651080324446708e-08, + 1.696270166762436949e-08, + 1.701884870866996270e-08, + 1.707495184572924109e-08, + 1.713101099823296672e-08, + 1.718702608572060644e-08, + 1.724299702781190329e-08, + 1.729892374423042807e-08, + 1.735480615480119365e-08, + 1.741064417943479304e-08, + 1.746643773815122877e-08, + 1.752218675104875465e-08, + 1.757789113834035443e-08, + 1.763355082032775182e-08, + 1.768916571740160897e-08, + 1.774473575006536916e-08, + 1.780026083890606721e-08, + 1.785574090461830785e-08, + 1.791117586798862533e-08, + 1.796656564989313756e-08, + 1.802191017132082297e-08, + 1.807720935334526074e-08, + 1.813246311715039247e-08, + 1.818767138400264619e-08, + 1.824283407527371036e-08, + 1.829795111243846585e-08, + 1.835302241705950113e-08, + 1.840804791081027669e-08, + 1.846302751544709679e-08, + 1.851796115283226060e-08, + 1.857284874493445268e-08, + 1.862769021380253451e-08, + 1.868248548160210926e-08, + 1.873723447058730164e-08, + 1.879193710311103150e-08, + 1.884659330163532053e-08, + 1.890120298870331696e-08, + 1.895576608697552611e-08, + 1.901028251919852309e-08, + 1.906475220823110163e-08, + 1.911917507701621285e-08, + 1.917355104860405016e-08, + 1.922788004614953464e-08, + 1.928216199289706517e-08, + 1.933639681220352064e-08, + 1.939058442751089022e-08, + 1.944472476236849473e-08, + 1.949881774043335056e-08, + 1.955286328544514589e-08, + 1.960686132126165717e-08, + 1.966081177183089634e-08, + 1.971471456120132815e-08, + 1.976856961353244816e-08, + 1.982237685306669828e-08, + 1.987613620416489658e-08, + 1.992984759128131932e-08, + 1.998351093896373071e-08, + 2.003712617187619324e-08, + 2.009069321477138690e-08, + 2.014421199251315155e-08, + 2.019768243005718378e-08, + 2.025110445247293406e-08, + 2.030447798491641897e-08, + 2.035780295265301499e-08, + 2.041107928105738900e-08, + 2.046430689558602598e-08, + 2.051748572182488782e-08, + 2.057061568543743002e-08, + 2.062369671219891310e-08, + 2.067672872799441740e-08, + 2.072971165879408721e-08, + 2.078264543068794843e-08, + 2.083552996986118584e-08, + 2.088836520259393462e-08, + 2.094115105528450758e-08, + 2.099388745442131738e-08, + 2.104657432660569671e-08, + 2.109921159853714812e-08, + 2.115179919701090867e-08, + 2.120433704894016811e-08, + 2.125682508132920201e-08, + 2.130926322129799854e-08, + 2.136165139605551747e-08, + 2.141398953292138538e-08, + 2.146627755932398656e-08, + 2.151851540278579544e-08, + 2.157070299094522409e-08, + 2.162284025152769075e-08, + 2.167492711237971288e-08, + 2.172696350144484287e-08, + 2.177894934676082581e-08, + 2.183088457649445357e-08, + 2.188276911888992560e-08, + 2.193460290231557137e-08, + 2.198638585523696372e-08, + 2.203811790621714712e-08, + 2.208979898393845543e-08, + 2.214142901717633657e-08, + 2.219300793482299665e-08, + 2.224453566586114859e-08, + 2.229601213938608789e-08, + 2.234743728460324088e-08, + 2.239881103081352691e-08, + 2.245013330743549708e-08, + 2.250140404397888089e-08, + 2.255262317006596402e-08, + 2.260379061543207460e-08, + 2.265490630989911684e-08, + 2.270597018342128756e-08, + 2.275698216603473073e-08, + 2.280794218789106804e-08, + 2.285885017925571476e-08, + 2.290970607048296506e-08, + 2.296050979205063765e-08, + 2.301126127453062484e-08, + 2.306196044861114368e-08, + 2.311260724508213459e-08, + 2.316320159483282615e-08, + 2.321374342887363218e-08, + 2.326423267831013531e-08, + 2.331466927436638035e-08, + 2.336505314835930116e-08, + 2.341538423171997927e-08, + 2.346566245599379266e-08, + 2.351588775281433320e-08, + 2.356606005394870300e-08, + 2.361617929124787698e-08, + 2.366624539667951216e-08, + 2.371625830232615764e-08, + 2.376621794036127297e-08, + 2.381612424308279515e-08, + 2.386597714288936215e-08, + 2.391577657227805636e-08, + 2.396552246387752490e-08, + 2.401521475039889472e-08, + 2.406485336467976207e-08, + 2.411443823965469855e-08, + 2.416396930837801512e-08, + 2.421344650399848012e-08, + 2.426286975978042900e-08, + 2.431223900910128267e-08, + 2.436155418543820351e-08, + 2.441081522238837451e-08, + 2.446002205364372719e-08, + 2.450917461301247817e-08, + 2.455827283441845412e-08, + 2.460731665187840386e-08, + 2.465630599953441725e-08, + 2.470524081163108175e-08, + 2.475412102251274942e-08, + 2.480294656665645539e-08, + 2.485171737862299180e-08, + 2.490043339310157555e-08, + 2.494909454488381194e-08, + 2.499770076886407520e-08, + 2.504625200006044606e-08, + 2.509474817358948940e-08, + 2.514318922468675173e-08, + 2.519157508869307637e-08, + 2.523990570105262810e-08, + 2.528818099733352637e-08, + 2.533640091320252365e-08, + 2.538456538444813670e-08, + 2.543267434695364741e-08, + 2.548072773672832058e-08, + 2.552872548988308481e-08, + 2.557666754263938997e-08, + 2.562455383133855430e-08, + 2.567238429241667774e-08, + 2.572015886243671332e-08, + 2.576787747806552449e-08, + 2.581554007607450719e-08, + 2.586314659335939913e-08, + 2.591069696691592762e-08, + 2.595819113386002587e-08, + 2.600562903141450873e-08, + 2.605301059690655147e-08, + 2.610033576778842885e-08, + 2.614760448161293794e-08, + 2.619481667605537461e-08, + 2.624197228888930052e-08, + 2.628907125800661705e-08, + 2.633611352141589449e-08, + 2.638309901722819738e-08, + 2.643002768367783358e-08, + 2.647689945909583484e-08, + 2.652371428194059224e-08, + 2.657047209077609473e-08, + 2.661717282427177034e-08, + 2.666381642122290757e-08, + 2.671040282052587642e-08, + 2.675693196119857623e-08, + 2.680340378236674425e-08, + 2.684981822326226816e-08, + 2.689617522324310125e-08, + 2.694247472176833126e-08, + 2.698871665842162260e-08, + 2.703490097288563338e-08, + 2.708102760496285368e-08, + 2.712709649457317370e-08, + 2.717310758174092013e-08, + 2.721906080661438758e-08, + 2.726495610944180400e-08, + 2.731079343059148079e-08, + 2.735657271055150845e-08, + 2.740229388990595685e-08, + 2.744795690937643288e-08, + 2.749356170977614538e-08, + 2.753910823204103364e-08, + 2.758459641722671014e-08, + 2.763002620648780419e-08, + 2.767539754110752204e-08, + 2.772071036247260318e-08, + 2.776596461209414213e-08, + 2.781116023158447701e-08, + 2.785629716267662165e-08, + 2.790137534722187011e-08, + 2.794639472717718710e-08, + 2.799135524462460705e-08, + 2.803625684174754365e-08, + 2.808109946085026497e-08, + 2.812588304435801260e-08, + 2.817060753479346009e-08, + 2.821527287481749955e-08, + 2.825987900718405443e-08, + 2.830442587477048340e-08, + 2.834891342057533701e-08, + 2.839334158769714215e-08, + 2.843771031936414750e-08, + 2.848201955891323372e-08, + 2.852626924978793482e-08, + 2.857045933556824975e-08, + 2.861458975992555777e-08, + 2.865866046666387160e-08, + 2.870267139969587891e-08, + 2.874662250304340893e-08, + 2.879051372085630865e-08, + 2.883434499738949353e-08, + 2.887811627702400756e-08, + 2.892182750423918362e-08, + 2.896547862365389334e-08, + 2.900906957998099262e-08, + 2.905260031805803979e-08, + 2.909607078284443359e-08, + 2.913948091940086598e-08, + 2.918283067291887565e-08, + 2.922611998869958620e-08, + 2.926934881215152565e-08, + 2.931251708882094098e-08, + 2.935562476434656788e-08, + 2.939867178450070858e-08, + 2.944165809516513104e-08, + 2.948458364233251494e-08, + 2.952744837212364374e-08, + 2.957025223076599068e-08, + 2.961299516461147334e-08, + 2.965567712012481028e-08, + 2.969829804388072184e-08, + 2.974085788258344168e-08, + 2.978335658304359874e-08, + 2.982579409219904567e-08, + 2.986817035708964960e-08, + 2.991048532488717663e-08, + 2.995273894287371886e-08, + 2.999493115844073491e-08, + 3.003706191911681673e-08, + 3.007913117252540408e-08, + 3.012113886642364884e-08, + 3.016308494867978991e-08, + 3.020496936727290180e-08, + 3.024679207031219767e-08, + 3.028855300601380213e-08, + 3.033025212271959109e-08, + 3.037188936888485025e-08, + 3.041346469307648172e-08, + 3.045497804399121529e-08, + 3.049642937043311570e-08, + 3.053781862133445406e-08, + 3.057914574573281811e-08, + 3.062041069278998519e-08, + 3.066161341178957967e-08, + 3.070275385212502914e-08, + 3.074383196331821244e-08, + 3.078484769499660299e-08, + 3.082580099691192994e-08, + 3.086669181894018485e-08, + 3.090752011106143182e-08, + 3.094828582338821620e-08, + 3.098898890614092784e-08, + 3.102962930966717036e-08, + 3.107020698442822183e-08, + 3.111072188099796939e-08, + 3.115117395008121310e-08, + 3.119156314249068353e-08, + 3.123188940916834996e-08, + 3.127215270116215344e-08, + 3.131235296964577968e-08, + 3.135249016591460261e-08, + 3.139256424137546040e-08, + 3.143257514756378801e-08, + 3.147252283612199804e-08, + 3.151240725881751321e-08, + 3.155222836754254805e-08, + 3.159198611429450135e-08, + 3.163168045120408695e-08, + 3.167131133051292708e-08, + 3.171087870458169840e-08, + 3.175038252589852959e-08, + 3.178982274705680637e-08, + 3.182919932078311704e-08, + 3.186851219991356198e-08, + 3.190776133741353321e-08, + 3.194694668635624741e-08, + 3.198606819993982551e-08, + 3.202512583148635966e-08, + 3.206411953442949891e-08, + 3.210304926233228321e-08, + 3.214191496886582197e-08, + 3.218071660782648626e-08, + 3.221945413313699399e-08, + 3.225812749882557163e-08, + 3.229673665905408494e-08, + 3.233528156809663156e-08, + 3.237376218034719736e-08, + 3.241217845032759079e-08, + 3.245053033266569793e-08, + 3.248881778212381842e-08, + 3.252704075357788002e-08, + 3.256519920201844452e-08, + 3.260329308256774097e-08, + 3.264132235045865538e-08, + 3.267928696105208158e-08, + 3.271718686982508927e-08, + 3.275502203237014979e-08, + 3.279279240441082603e-08, + 3.283049794178178781e-08, + 3.286813860044787669e-08, + 3.290571433647919795e-08, + 3.294322510608711281e-08, + 3.298067086558487795e-08, + 3.301805157141358581e-08, + 3.305536718014136395e-08, + 3.309261764844322489e-08, + 3.312980293312834984e-08, + 3.316692299112100400e-08, + 3.320397777946068215e-08, + 3.324096725531917499e-08, + 3.327789137597943310e-08, + 3.331475009885334796e-08, + 3.335154338146966850e-08, + 3.338827118147268425e-08, + 3.342493345663892115e-08, + 3.346153016485670022e-08, + 3.349806126414465986e-08, + 3.353452671263171816e-08, + 3.357092646857323276e-08, + 3.360726049034997508e-08, + 3.364352873645621899e-08, + 3.367973116551670126e-08, + 3.371586773626678912e-08, + 3.375193840756842828e-08, + 3.378794313841065909e-08, + 3.382388188788933408e-08, + 3.385975461524180001e-08, + 3.389556127980709389e-08, + 3.393130184106010226e-08, + 3.396697625859178165e-08, + 3.400258449210958208e-08, + 3.403812650145320323e-08, + 3.407360224657484131e-08, + 3.410901168755822089e-08, + 3.414435478459724037e-08, + 3.417963149801319058e-08, + 3.421484178825277619e-08, + 3.424998561587734905e-08, + 3.428506294157913428e-08, + 3.432007372616170869e-08, + 3.435501793055532689e-08, + 3.438989551581853584e-08, + 3.442470644311699913e-08, + 3.445945067375796055e-08, + 3.449412816915317322e-08, + 3.452873889084348997e-08, + 3.456328280049720902e-08, + 3.459775985989222670e-08, + 3.463217003094168007e-08, + 3.466651327567130201e-08, + 3.470078955623648100e-08, + 3.473499883491118352e-08, + 3.476914107408651805e-08, + 3.480321623628659711e-08, + 3.483722428414893635e-08, + 3.487116518044190478e-08, + 3.490503888804664594e-08, + 3.493884536997125239e-08, + 3.497258458935157311e-08, + 3.500625650943240005e-08, + 3.503986109359984071e-08, + 3.507339830534531924e-08, + 3.510686810828961097e-08, + 3.514027046618164465e-08, + 3.517360534288052953e-08, + 3.520687270238036407e-08, + 3.524007250879258731e-08, + 3.527320472634450972e-08, + 3.530626931940330809e-08, + 3.533926625243990752e-08, + 3.537219549006229362e-08, + 3.540505699699554108e-08, + 3.543785073808282611e-08, + 3.547057667829986575e-08, + 3.550323478273744115e-08, + 3.553582501661543321e-08, + 3.556834734527015675e-08, + 3.560080173416915055e-08, + 3.563318814889342931e-08, + 3.566550655515125460e-08, + 3.569775691877918038e-08, + 3.572993920572537044e-08, + 3.576205338207250799e-08, + 3.579409941402127852e-08, + 3.582607726788879483e-08, + 3.585798691013242649e-08, + 3.588982830731380752e-08, + 3.592160142613143393e-08, + 3.595330623340173121e-08, + 3.598494269605949773e-08, + 3.601651078117273439e-08, + 3.604801045592437387e-08, + 3.607944168762713019e-08, + 3.611080444371403575e-08, + 3.614209869173629727e-08, + 3.617332439937816522e-08, + 3.620448153443921888e-08, + 3.623557006485060559e-08, + 3.626658995865547954e-08, + 3.629754118403135554e-08, + 3.632842370927349920e-08, + 3.635923750280005548e-08, + 3.638998253315921534e-08, + 3.642065876901124283e-08, + 3.645126617915127210e-08, + 3.648180473249332635e-08, + 3.651227439806980160e-08, + 3.654267514504668027e-08, + 3.657300694270512799e-08, + 3.660326976045645570e-08, + 3.663346356783229933e-08, + 3.666358833448326324e-08, + 3.669364403019316097e-08, + 3.672363062486130029e-08, + 3.675354808851839823e-08, + 3.678339639131025576e-08, + 3.681317550351035089e-08, + 3.684288539551908417e-08, + 3.687252603785428935e-08, + 3.690209740116566600e-08, + 3.693159945621713081e-08, + 3.696103217390068108e-08, + 3.699039552523759254e-08, + 3.701968948136139924e-08, + 3.704891401354053185e-08, + 3.707806909315936530e-08, + 3.710715469173236686e-08, + 3.713617078089485820e-08, + 3.716511733240137425e-08, + 3.719399431813914959e-08, + 3.722280171011246150e-08, + 3.725153948045647376e-08, + 3.728020760142137453e-08, + 3.730880604538556499e-08, + 3.733733478485466008e-08, + 3.736579379245219098e-08, + 3.739418304093288634e-08, + 3.742250250316694921e-08, + 3.745075215215248465e-08, + 3.747893196101654520e-08, + 3.750704190299933514e-08, + 3.753508195147571710e-08, + 3.756305207993846337e-08, + 3.759095226200447625e-08, + 3.761878247142092908e-08, + 3.764654268204806745e-08, + 3.767423286788090126e-08, + 3.770185300303405730e-08, + 3.772940306174166683e-08, + 3.775688301837094452e-08, + 3.778429284740577724e-08, + 3.781163252345964786e-08, + 3.783890202126505405e-08, + 3.786610131568532031e-08, + 3.789323038169934485e-08, + 3.792028919441436460e-08, + 3.794727772906609418e-08, + 3.797419596100306902e-08, + 3.800104386571343942e-08, + 3.802782141879566186e-08, + 3.805452859597746460e-08, + 3.808116537311555653e-08, + 3.810773172618044673e-08, + 3.813422763127675342e-08, + 3.816065306462954556e-08, + 3.818700800258309876e-08, + 3.821329242161458015e-08, + 3.823950629831884152e-08, + 3.826564960941997332e-08, + 3.829172233176346969e-08, + 3.831772444231489827e-08, + 3.834365591817257268e-08, + 3.836951673655193528e-08, + 3.839530687479925534e-08, + 3.842102631037465526e-08, + 3.844667502087723040e-08, + 3.847225298401624997e-08, + 3.849776017763122109e-08, + 3.852319657968974478e-08, + 3.854856216827398989e-08, + 3.857385692159967191e-08, + 3.859908081800357249e-08, + 3.862423383594040937e-08, + 3.864931595400272846e-08, + 3.867432715089288553e-08, + 3.869926740544785504e-08, + 3.872413669662490335e-08, + 3.874893500350159538e-08, + 3.877366230528754051e-08, + 3.879831858131034380e-08, + 3.882290381102804677e-08, + 3.884741797401515796e-08, + 3.887186104997422023e-08, + 3.889623301873488434e-08, + 3.892053386024567682e-08, + 3.894476355458551433e-08, + 3.896892208195040922e-08, + 3.899300942266403097e-08, + 3.901702555717826867e-08, + 3.904097046605879177e-08, + 3.906484413000985885e-08, + 3.908864652984548545e-08, + 3.911237764651442489e-08, + 3.913603746108552389e-08, + 3.915962595474849017e-08, + 3.918314310882450686e-08, + 3.920658890475258732e-08, + 3.922996332410102329e-08, + 3.925326634855976163e-08, + 3.927649795993922641e-08, + 3.929965814018129060e-08, + 3.932274687134635888e-08, + 3.934576413562480914e-08, + 3.936870991532338041e-08, + 3.939158419287731592e-08, + 3.941438695084945644e-08, + 3.943711817191656207e-08, + 3.945977783889366442e-08, + 3.948236593470748432e-08, + 3.950488244241358428e-08, + 3.952732734519545522e-08, + 3.954970062635190368e-08, + 3.957200226931457480e-08, + 3.959423225763328139e-08, + 3.961639057498642649e-08, + 3.963847720517420058e-08, + 3.966049213211761544e-08, + 3.968243533986827815e-08, + 3.970430681259653258e-08, + 3.972610653460225249e-08, + 3.974783449030230141e-08, + 3.976949066424129930e-08, + 3.979107504108993505e-08, + 3.981258760563881888e-08, + 3.983402834280795854e-08, + 3.985539723763408025e-08, + 3.987669427528199752e-08, + 3.989791944104362511e-08, + 3.991907272032661028e-08, + 3.994015409867083668e-08, + 3.996116356173694973e-08, + 3.998210109530438459e-08, + 4.000296668528838625e-08, + 4.002376031771495586e-08, + 4.004448197874395227e-08, + 4.006513165465499021e-08, + 4.008570933184823440e-08, + 4.010621499685468971e-08, + 4.012664863632379338e-08, + 4.014701023703305672e-08, + 4.016729978587901900e-08, + 4.018751726988821258e-08, + 4.020766267620381551e-08, + 4.022773599209615344e-08, + 4.024773720496265991e-08, + 4.026766630231726194e-08, + 4.028752327180479286e-08, + 4.030730810118959043e-08, + 4.032702077835955334e-08, + 4.034666129133092563e-08, + 4.036622962823567059e-08, + 4.038572577733745191e-08, + 4.040514972701970241e-08, + 4.042450146578697400e-08, + 4.044378098227330876e-08, + 4.046298826523134660e-08, + 4.048212330354139121e-08, + 4.050118608620529546e-08, + 4.052017660234501890e-08, + 4.053909484121266633e-08, + 4.055794079217871541e-08, + 4.057671444474226047e-08, + 4.059541578851937903e-08, + 4.061404481325269401e-08, + 4.063260150881100974e-08, + 4.065108586518151669e-08, + 4.066949787248068369e-08, + 4.068783752094096354e-08, + 4.070610480092525876e-08, + 4.072429970291685638e-08, + 4.074242221751911037e-08, + 4.076047233546510973e-08, + 4.077845004760593247e-08, + 4.079635534492014831e-08, + 4.081418821850724091e-08, + 4.083194865958751526e-08, + 4.084963665951008491e-08, + 4.086725220974204580e-08, + 4.088479530187936205e-08, + 4.090226592763429933e-08, + 4.091966407884603268e-08, + 4.093698974747813850e-08, + 4.095424292561398217e-08, + 4.097142360546478470e-08, + 4.098853177935835990e-08, + 4.100556743974917945e-08, + 4.102253057921720165e-08, + 4.103942119045770700e-08, + 4.105623926629980060e-08, + 4.107298479968438266e-08, + 4.108965778368373614e-08, + 4.110625821148964181e-08, + 4.112278607641376872e-08, + 4.113924137189668048e-08, + 4.115562409149676431e-08, + 4.117193422890024325e-08, + 4.118817177790991986e-08, + 4.120433673245467224e-08, + 4.122042908658805118e-08, + 4.123644883448179502e-08, + 4.125239597043604039e-08, + 4.126827048886702036e-08, + 4.128407238431681858e-08, + 4.129980165145291267e-08, + 4.131545828505788408e-08, + 4.133104228004733812e-08, + 4.134655363144952227e-08, + 4.136199233441926248e-08, + 4.137735838423660002e-08, + 4.139265177629748066e-08, + 4.140787250612674482e-08, + 4.142302056936869098e-08, + 4.143809596178680445e-08, + 4.145309867927556287e-08, + 4.146802871784177498e-08, + 4.148288607362198455e-08, + 4.149767074287020822e-08, + 4.151238272196746463e-08, + 4.152702200741107403e-08, + 4.154158859582405501e-08, + 4.155608248395343049e-08, + 4.157050366866155221e-08, + 4.158485214694252522e-08, + 4.159912791590371877e-08, + 4.161333097277790270e-08, + 4.162746131492265847e-08, + 4.164151893981081695e-08, + 4.165550384504451389e-08, + 4.166941602834382117e-08, + 4.168325548754785845e-08, + 4.169702222062602970e-08, + 4.171071622566018909e-08, + 4.172433750086068174e-08, + 4.173788604455696015e-08, + 4.175136185519800774e-08, + 4.176476493135932685e-08, + 4.177809527173356845e-08, + 4.179135287513884363e-08, + 4.180453774051105403e-08, + 4.181764986691215036e-08, + 4.183068925352008715e-08, + 4.184365589963769672e-08, + 4.185654980469087602e-08, + 4.186937096822149935e-08, + 4.188211938989852902e-08, + 4.189479506950982299e-08, + 4.190739800696115545e-08, + 4.191992820228802238e-08, + 4.193238565563758913e-08, + 4.194477036728575685e-08, + 4.195708233762614438e-08, + 4.196932156717166326e-08, + 4.198148805656081752e-08, + 4.199358180654941862e-08, + 4.200560281801734190e-08, + 4.201755109196372226e-08, + 4.202942662950681525e-08, + 4.204122943189007187e-08, + 4.205295950047391966e-08, + 4.206461683674368383e-08, + 4.207620144230064709e-08, + 4.208771331886928912e-08, + 4.209915246829663141e-08, + 4.211051889254648016e-08, + 4.212181259370849212e-08, + 4.213303357398620365e-08, + 4.214418183571013326e-08, + 4.215525738132816646e-08, + 4.216626021340712410e-08, + 4.217719033463855925e-08, + 4.218804774783029349e-08, + 4.219883245591458282e-08, + 4.220954446194150687e-08, + 4.222018376907976956e-08, + 4.223075038062243648e-08, + 4.224124429997947697e-08, + 4.225166553068445442e-08, + 4.226201407638659851e-08, + 4.227228994085809770e-08, + 4.228249312799200142e-08, + 4.229262364179864673e-08, + 4.230268148641205072e-08, + 4.231266666608172474e-08, + 4.232257918517943083e-08, + 4.233241904819893024e-08, + 4.234218625974829396e-08, + 4.235188082456152294e-08, + 4.236150274748820509e-08, + 4.237105203349855104e-08, + 4.238052868768476408e-08, + 4.238993271525388659e-08, + 4.239926412153753438e-08, + 4.240852291198285059e-08, + 4.241770909216097606e-08, + 4.242682266775733491e-08, + 4.243586364457933060e-08, + 4.244483202855485041e-08, + 4.245372782572841411e-08, + 4.246255104226752667e-08, + 4.247130168445420794e-08, + 4.247997975869223875e-08, + 4.248858527150638008e-08, + 4.249711822953580189e-08, + 4.250557863954337407e-08, + 4.251396650840813571e-08, + 4.252228184312841862e-08, + 4.253052465082370015e-08, + 4.253869493872792623e-08, + 4.254679271419863017e-08, + 4.255481798470987188e-08, + 4.256277075785278049e-08, + 4.257065104134047772e-08, + 4.257845884300210233e-08, + 4.258619417078773352e-08, + 4.259385703276295798e-08, + 4.260144743711607628e-08, + 4.260896539214907012e-08, + 4.261641090628479541e-08, + 4.262378398806574485e-08, + 4.263108464614827093e-08, + 4.263831288931365022e-08, + 4.264546872645489487e-08, + 4.265255216658588467e-08, + 4.265956321884075822e-08, + 4.266650189246680582e-08, + 4.267336819683405151e-08, + 4.268016214142820550e-08, + 4.268688373585159726e-08, + 4.269353298982760253e-08, + 4.270010991319433032e-08, + 4.270661451591092271e-08, + 4.271304680805181090e-08, + 4.271940679980825048e-08, + 4.272569450149211980e-08, + 4.273190992353000401e-08, + 4.273805307646898532e-08, + 4.274412397097015790e-08, + 4.275012261781344536e-08, + 4.275604902789809047e-08, + 4.276190321223732812e-08, + 4.276768518196496964e-08, + 4.277339494832832879e-08, + 4.277903252269512373e-08, + 4.278459791654894409e-08, + 4.279009114148799365e-08, + 4.279551220923333564e-08, + 4.280086113161678289e-08, + 4.280613792059083716e-08, + 4.281134258822400404e-08, + 4.281647514669954221e-08, + 4.282153560832049937e-08, + 4.282652398550414027e-08, + 4.283144029078716798e-08, + 4.283628453681925854e-08, + 4.284105673636855352e-08, + 4.284575690232044237e-08, + 4.285038504767470369e-08, + 4.285494118554985289e-08, + 4.285942532917790780e-08, + 4.286383749190819370e-08, + 4.286817768720869988e-08, + 4.287244592865834388e-08, + 4.287664222995820124e-08, + 4.288076660491997798e-08, + 4.288481906747474557e-08, + 4.288879963166843447e-08, + 4.289270831166128489e-08, + 4.289654512173221430e-08, + 4.290031007627348376e-08, + 4.290400318979481398e-08, + 4.290762447692044054e-08, + 4.291117395238909408e-08, + 4.291465163105780528e-08, + 4.291805752789610139e-08, + 4.292139165799161120e-08, + 4.292465403654514828e-08, + 4.292784467887315942e-08, + 4.293096360040890919e-08, + 4.293401081669781458e-08, + 4.293698634340414854e-08, + 4.293989019630388647e-08, + 4.294272239128898113e-08, + 4.294548294436814345e-08, + 4.294817187166153539e-08, + 4.295078918940742706e-08, + 4.295333491395685645e-08, + 4.295580906177476761e-08, + 4.295821164944417307e-08, + 4.296054269365814008e-08, + 4.296280221122804917e-08, + 4.296499021907736716e-08, + 4.296710673424564411e-08, + 4.296915177388455603e-08, + 4.297112535526141880e-08, + 4.297302749575811614e-08, + 4.297485821286931284e-08, + 4.297661752420541946e-08, + 4.297830544748924383e-08, + 4.297992200055793002e-08, + 4.298146720136367299e-08, + 4.298294106797032383e-08, + 4.298434361855773746e-08, + 4.298567487141818594e-08, + 4.298693484495633864e-08, + 4.298812355769412606e-08, + 4.298924102826292460e-08, + 4.299028727541029977e-08, + 4.299126231799610189e-08, + 4.299216617499261829e-08, + 4.299299886548714085e-08, + 4.299376040867882939e-08, + 4.299445082388067698e-08, + 4.299507013051890782e-08, + 4.299561834813125666e-08, + 4.299609549636998638e-08, + 4.299650159499916819e-08, + 4.299683666389691837e-08, + 4.299710072305217552e-08, + 4.299729379256797625e-08, + 4.299741589265981402e-08, + 4.299746704365490462e-08, + 4.299744726599433681e-08, + 4.299735658022943276e-08, + 4.299719500702589719e-08, + 4.299696256716092551e-08, + 4.299665928152282005e-08, + 4.299628517111421932e-08, + 4.299584025704769747e-08, + 4.299532456054948327e-08, + 4.299473810295680649e-08, + 4.299408090571815601e-08, + 4.299335299039517241e-08, + 4.299255437866025242e-08, + 4.299168509229821658e-08, + 4.299074515320457540e-08, + 4.298973458338666759e-08, + 4.298865340496370641e-08, + 4.298750164016546274e-08, + 4.298627931133427685e-08, + 4.298498644092198784e-08, + 4.298362305149283212e-08, + 4.298218916572223241e-08, + 4.298068480639557353e-08, + 4.297910999641041258e-08, + 4.297746475877404377e-08, + 4.297574911660558288e-08, + 4.297396309313451807e-08, + 4.297210671170035249e-08, + 4.297017999575394769e-08, + 4.296818296885671623e-08, + 4.296611565468070775e-08, + 4.296397807700734499e-08, + 4.296177025972893263e-08, + 4.295949222684839916e-08, + 4.295714400247835060e-08, + 4.295472561084181828e-08, + 4.295223707627164341e-08, + 4.294967842321039104e-08, + 4.294704967621143535e-08, + 4.294435085993653104e-08, + 4.294158199915857277e-08, + 4.293874311875928572e-08, + 4.293583424372976820e-08, + 4.293285539917194747e-08, + 4.292980661029563502e-08, + 4.292668790242107423e-08, + 4.292349930097708754e-08, + 4.292024083150245284e-08, + 4.291691251964436163e-08, + 4.291351439115950428e-08, + 4.291004647191330898e-08, + 4.290650878788058369e-08, + 4.290290136514489409e-08, + 4.289922422989813341e-08, + 4.289547740844093935e-08, + 4.289166092718323013e-08, + 4.288777481264253681e-08, + 4.288381909144571067e-08, + 4.287979379032775189e-08, + 4.287569893613174337e-08, + 4.287153455580926765e-08, + 4.286730067641969219e-08, + 4.286299732513104952e-08, + 4.285862452921913067e-08, + 4.285418231606729320e-08, + 4.284967071316709653e-08, + 4.284508974811838132e-08, + 4.284043944862790631e-08, + 4.283571984251045338e-08, + 4.283093095768845041e-08, + 4.282607282219130949e-08, + 4.282114546415620784e-08, + 4.281614891182757156e-08, + 4.281108319355744628e-08, + 4.280594833780450453e-08, + 4.280074437313463466e-08, + 4.279547132822090118e-08, + 4.279012923184314106e-08, + 4.278471811288818211e-08, + 4.277923800034934009e-08, + 4.277368892332723922e-08, + 4.276807091102829683e-08, + 4.276238399276628504e-08, + 4.275662819796075585e-08, + 4.275080355613790137e-08, + 4.274491009693042149e-08, + 4.273894785007686874e-08, + 4.273291684542178728e-08, + 4.272681711291682460e-08, + 4.272064868261841545e-08, + 4.271441158468937659e-08, + 4.270810584939829145e-08, + 4.270173150711947033e-08, + 4.269528858833289755e-08, + 4.268877712362388725e-08, + 4.268219714368402318e-08, + 4.267554867930935201e-08, + 4.266883176140159444e-08, + 4.266204642096797307e-08, + 4.265519268912038524e-08, + 4.264827059707630964e-08, + 4.264128017615785999e-08, + 4.263422145779188429e-08, + 4.262709447351093103e-08, + 4.261989925495144255e-08, + 4.261263583385481389e-08, + 4.260530424206704201e-08, + 4.259790451153843469e-08, + 4.259043667432415972e-08, + 4.258290076258303393e-08, + 4.257529680857901874e-08, + 4.256762484467925478e-08, + 4.255988490335574930e-08, + 4.255207701718414537e-08, + 4.254420121884385424e-08, + 4.253625754111875009e-08, + 4.252824601689514520e-08, + 4.252016667916463537e-08, + 4.251201956102159855e-08, + 4.250380469566343309e-08, + 4.249552211639189444e-08, + 4.248717185661137462e-08, + 4.247875394982961690e-08, + 4.247026842965768933e-08, + 4.246171532980925685e-08, + 4.245309468410199737e-08, + 4.244440652645539159e-08, + 4.243565089089221190e-08, + 4.242682781153763566e-08, + 4.241793732261998632e-08, + 4.240897945846970115e-08, + 4.239995425351948341e-08, + 4.239086174230543391e-08, + 4.238170195946436437e-08, + 4.237247493973674881e-08, + 4.236318071796429488e-08, + 4.235381932909077772e-08, + 4.234439080816260904e-08, + 4.233489519032684528e-08, + 4.232533251083300737e-08, + 4.231570280503320651e-08, + 4.230600610837887513e-08, + 4.229624245642523365e-08, + 4.228641188482709505e-08, + 4.227651442934199491e-08, + 4.226655012582735250e-08, + 4.225651901024274724e-08, + 4.224642111864911130e-08, + 4.223625648720681060e-08, + 4.222602515217836456e-08, + 4.221572714992623585e-08, + 4.220536251691439876e-08, + 4.219493128970715465e-08, + 4.218443350496811951e-08, + 4.217386919946388338e-08, + 4.216323841005873626e-08, + 4.215254117371872459e-08, + 4.214177752750973884e-08, + 4.213094750859675907e-08, + 4.212005115424664755e-08, + 4.210908850182425766e-08, + 4.209805958879470369e-08, + 4.208696445272433359e-08, + 4.207580313127676517e-08, + 4.206457566221683001e-08, + 4.205328208340745011e-08, + 4.204192243281164294e-08, + 4.203049674849223687e-08, + 4.201900506860950878e-08, + 4.200744743142472438e-08, + 4.199582387529614787e-08, + 4.198413443868283377e-08, + 4.197237916014093437e-08, + 4.196055807832613493e-08, + 4.194867123199295888e-08, + 4.193671865999308037e-08, + 4.192470040127838149e-08, + 4.191261649489774948e-08, + 4.190046697999843989e-08, + 4.188825189582677141e-08, + 4.187597128172563112e-08, + 4.186362517713706850e-08, + 4.185121362159966170e-08, + 4.183873665475050278e-08, + 4.182619431632550873e-08, + 4.181358664615573551e-08, + 4.180091368417161328e-08, + 4.178817547039914795e-08, + 4.177537204496366667e-08, + 4.176250344808652231e-08, + 4.174956972008545747e-08, + 4.173657090137701979e-08, + 4.172350703247245256e-08, + 4.171037815398214164e-08, + 4.169718430661097662e-08, + 4.168392553116128894e-08, + 4.167060186853312988e-08, + 4.165721335972064414e-08, + 4.164376004581601390e-08, + 4.163024196800683826e-08, + 4.161665916757654352e-08, + 4.160301168590643465e-08, + 4.158929956447099682e-08, + 4.157552284484285194e-08, + 4.156168156868796758e-08, + 4.154777577777057375e-08, + 4.153380551394933141e-08, + 4.151977081917721333e-08, + 4.150567173550440917e-08, + 4.149150830507407708e-08, + 4.147728057012708178e-08, + 4.146298857299793806e-08, + 4.144863235611528725e-08, + 4.143421196200502067e-08, + 4.141972743328464152e-08, + 4.140517881266905519e-08, + 4.139056614296673772e-08, + 4.137588946707917999e-08, + 4.136114882800516252e-08, + 4.134634426883476673e-08, + 4.133147583275415273e-08, + 4.131654356304238294e-08, + 4.130154750307291761e-08, + 4.128648769631401854e-08, + 4.127136418632580424e-08, + 4.125617701676363152e-08, + 4.124092623137465438e-08, + 4.122561187400145699e-08, + 4.121023398857966478e-08, + 4.119479261913599234e-08, + 4.117928780979403362e-08, + 4.116371960476567255e-08, + 4.114808804836010257e-08, + 4.113239318497748051e-08, + 4.111663505910961484e-08, + 4.110081371534348609e-08, + 4.108492919835658822e-08, + 4.106898155291911237e-08, + 4.105297082389593867e-08, + 4.103689705623940341e-08, + 4.102076029499915243e-08, + 4.100456058531300899e-08, + 4.098829797241218838e-08, + 4.097197250162133096e-08, + 4.095558421835385672e-08, + 4.093913316811686885e-08, + 4.092261939650756703e-08, + 4.090604294921600031e-08, + 4.088940387202159957e-08, + 4.087270221079739945e-08, + 4.085593801150631935e-08, + 4.083911132020116340e-08, + 4.082222218302861747e-08, + 4.080527064622268455e-08, + 4.078825675610980678e-08, + 4.077118055910880578e-08, + 4.075404210172417265e-08, + 4.073684143055573600e-08, + 4.071957859229074089e-08, + 4.070225363370691270e-08, + 4.068486660167420415e-08, + 4.066741754314923000e-08, + 4.064990650518118971e-08, + 4.063233353490668593e-08, + 4.061469867955319206e-08, + 4.059700198643952212e-08, + 4.057924350297058967e-08, + 4.056142327664294006e-08, + 4.054354135504019096e-08, + 4.052559778583843222e-08, + 4.050759261679929079e-08, + 4.048952589577544966e-08, + 4.047139767070780895e-08, + 4.045320798962498969e-08, + 4.043495690064684756e-08, + 4.041664445197847096e-08, + 4.039827069191487937e-08, + 4.037983566884091747e-08, + 4.036133943122641113e-08, + 4.034278202763159381e-08, + 4.032416350670342715e-08, + 4.030548391717673927e-08, + 4.028674330787638196e-08, + 4.026794172771122875e-08, + 4.024907922568065332e-08, + 4.023015585086836210e-08, + 4.021117165244888591e-08, + 4.019212667968266988e-08, + 4.017302098191559698e-08, + 4.015385460858288566e-08, + 4.013462760920371654e-08, + 4.011534003338800200e-08, + 4.009599193082974893e-08, + 4.007658335130854100e-08, + 4.005711434469388636e-08, + 4.003758496093817664e-08, + 4.001799525008249708e-08, + 3.999834526225165687e-08, + 3.997863504765784189e-08, + 3.995886465660089273e-08, + 3.993903413946285848e-08, + 3.991914354671423040e-08, + 3.989919292890858838e-08, + 3.987918233668819929e-08, + 3.985911182077888188e-08, + 3.983898143199075453e-08, + 3.981879122122094839e-08, + 3.979854123944914063e-08, + 3.977823153774338438e-08, + 3.975786216725444424e-08, + 3.973743317921649768e-08, + 3.971694462495221066e-08, + 3.969639655586443269e-08, + 3.967578902344280111e-08, + 3.965512207926149772e-08, + 3.963439577497585403e-08, + 3.961361016232989518e-08, + 3.959276529314769093e-08, + 3.957186121933799447e-08, + 3.955089799289594311e-08, + 3.952987566589600411e-08, + 3.950879429049953178e-08, + 3.948765391894853381e-08, + 3.946645460357070724e-08, + 3.944519639677428338e-08, + 3.942387935105379826e-08, + 3.940250351898490455e-08, + 3.938106895322419290e-08, + 3.935957570651608068e-08, + 3.933802383168031824e-08, + 3.931641338162591206e-08, + 3.929474440934110588e-08, + 3.927301696789514096e-08, + 3.925123111044347727e-08, + 3.922938689021897241e-08, + 3.920748436053849905e-08, + 3.918552357480270672e-08, + 3.916350458648992052e-08, + 3.914142744916320854e-08, + 3.911929221646482323e-08, + 3.909709894211925864e-08, + 3.907484767993452096e-08, + 3.905253848379540523e-08, + 3.903017140767135023e-08, + 3.900774650560893427e-08, + 3.898526383174162936e-08, + 3.896272344027495160e-08, + 3.894012538550313720e-08, + 3.891746972179720458e-08, + 3.889475650360633079e-08, + 3.887198578546542851e-08, + 3.884915762198388974e-08, + 3.882627206785344076e-08, + 3.880332917784876411e-08, + 3.878032900681695705e-08, + 3.875727160969255975e-08, + 3.873415704148379101e-08, + 3.871098535728046935e-08, + 3.868775661225408578e-08, + 3.866447086165070992e-08, + 3.864112816079876551e-08, + 3.861772856510288276e-08, + 3.859427213005020482e-08, + 3.857075891120441219e-08, + 3.854718896420636464e-08, + 3.852356234477844225e-08, + 3.849987910871733899e-08, + 3.847613931190302277e-08, + 3.845234301029076140e-08, + 3.842849025991189683e-08, + 3.840458111688187214e-08, + 3.838061563738480623e-08, + 3.835659387769159256e-08, + 3.833251589414422904e-08, + 3.830838174316446040e-08, + 3.828419148125342750e-08, + 3.825994516498549319e-08, + 3.823564285101530319e-08, + 3.821128459607132080e-08, + 3.818687045696083634e-08, + 3.816240049057006639e-08, + 3.813787475385678856e-08, + 3.811329330385963243e-08, + 3.808865619768893419e-08, + 3.806396349253711946e-08, + 3.803921524566967705e-08, + 3.801441151442558249e-08, + 3.798955235622649630e-08, + 3.796463782856051152e-08, + 3.793966798899992819e-08, + 3.791464289518891839e-08, + 3.788956260484524022e-08, + 3.786442717576726548e-08, + 3.783923666582253150e-08, + 3.781399113295828934e-08, + 3.778869063519288793e-08, + 3.776333523062143851e-08, + 3.773792497741627133e-08, + 3.771245993381961005e-08, + 3.768694015815166495e-08, + 3.766136570880298974e-08, + 3.763573664424368642e-08, + 3.761005302301535852e-08, + 3.758431490373155439e-08, + 3.755852234508353106e-08, + 3.753267540583130080e-08, + 3.750677414481476829e-08, + 3.748081862094403609e-08, + 3.745480889319994722e-08, + 3.742874502064295918e-08, + 3.740262706240024658e-08, + 3.737645507767503827e-08, + 3.735022912574669025e-08, + 3.732394926595864181e-08, + 3.729761555773688487e-08, + 3.727122806057234837e-08, + 3.724478683403140007e-08, + 3.721829193775554887e-08, + 3.719174343145286851e-08, + 3.716514137490787748e-08, + 3.713848582797336642e-08, + 3.711177685057833910e-08, + 3.708501450271798699e-08, + 3.705819884446501827e-08, + 3.703132993596067142e-08, + 3.700440783741489382e-08, + 3.697743260911530182e-08, + 3.695040431141372082e-08, + 3.692332300473748791e-08, + 3.689618874958406522e-08, + 3.686900160651792314e-08, + 3.684176163618110836e-08, + 3.681446889927932738e-08, + 3.678712345659128376e-08, + 3.675972536896886999e-08, + 3.673227469732880965e-08, + 3.670477150266213363e-08, + 3.667721584602582228e-08, + 3.664960778854870814e-08, + 3.662194739143225024e-08, + 3.659423471594137549e-08, + 3.656646982341532473e-08, + 3.653865277525738906e-08, + 3.651078363294682119e-08, + 3.648286245802799614e-08, + 3.645488931211234349e-08, + 3.642686425688426999e-08, + 3.639878735409171650e-08, + 3.637065866555815538e-08, + 3.634247825316813139e-08, + 3.631424617887806799e-08, + 3.628596250471517542e-08, + 3.625762729276860987e-08, + 3.622924060520049804e-08, + 3.620080250423662648e-08, + 3.617231305217268181e-08, + 3.614377231137472716e-08, + 3.611518034426993118e-08, + 3.608653721335838011e-08, + 3.605784298120174876e-08, + 3.602909771043503324e-08, + 3.600030146375690271e-08, + 3.597145430393088389e-08, + 3.594255629379132343e-08, + 3.591360749623352123e-08, + 3.588460797422617791e-08, + 3.585555779080035026e-08, + 3.582645700905061595e-08, + 3.579730569214467538e-08, + 3.576810390330874042e-08, + 3.573885170584020017e-08, + 3.570954916309762863e-08, + 3.568019633850781904e-08, + 3.565079329556547947e-08, + 3.562134009782451766e-08, + 3.559183680890930390e-08, + 3.556228349250374563e-08, + 3.553268021236333781e-08, + 3.550302703230491249e-08, + 3.547332401620757190e-08, + 3.544357122801991465e-08, + 3.541376873174897140e-08, + 3.538391659147276475e-08, + 3.535401487132998606e-08, + 3.532406363552019392e-08, + 3.529406294831574543e-08, + 3.526401287404026307e-08, + 3.523391347709266919e-08, + 3.520376482193031819e-08, + 3.517356697307097513e-08, + 3.514331999510327791e-08, + 3.511302395267137815e-08, + 3.508267891048564826e-08, + 3.505228493332259540e-08, + 3.502184208601464413e-08, + 3.499135043346317278e-08, + 3.496081004062682044e-08, + 3.493022097253124769e-08, + 3.489958329425872732e-08, + 3.486889707096063813e-08, + 3.483816236784662551e-08, + 3.480737925018487939e-08, + 3.477654778331483310e-08, + 3.474566803262435967e-08, + 3.471474006357447476e-08, + 3.468376394168307096e-08, + 3.465273973252559277e-08, + 3.462166750174694141e-08, + 3.459054731504442826e-08, + 3.455937923818030167e-08, + 3.452816333698157493e-08, + 3.449689967732459441e-08, + 3.446558832515879611e-08, + 3.443422934648440496e-08, + 3.440282280736591449e-08, + 3.437136877393077662e-08, + 3.433986731235949531e-08, + 3.430831848889882177e-08, + 3.427672236984863868e-08, + 3.424507902157799423e-08, + 3.421338851050231830e-08, + 3.418165090310840993e-08, + 3.414986626593715911e-08, + 3.411803466558502256e-08, + 3.408615616871619975e-08, + 3.405423084204452101e-08, + 3.402225875234643755e-08, + 3.399023996646181552e-08, + 3.395817455127666456e-08, + 3.392606257374866121e-08, + 3.389390410088394158e-08, + 3.386169919974982002e-08, + 3.382944793747625166e-08, + 3.379715038124250480e-08, + 3.376480659829202373e-08, + 3.373241665592086804e-08, + 3.369998062148473373e-08, + 3.366749856240042893e-08, + 3.363497054613414110e-08, + 3.360239664021579035e-08, + 3.356977691222535113e-08, + 3.353711142980721870e-08, + 3.350440026065854924e-08, + 3.347164347252934582e-08, + 3.343884113323576612e-08, + 3.340599331063620034e-08, + 3.337310007265943507e-08, + 3.334016148727981800e-08, + 3.330717762253106856e-08, + 3.327414854650669475e-08, + 3.324107432734795609e-08, + 3.320795503325797197e-08, + 3.317479073248996244e-08, + 3.314158149335457374e-08, + 3.310832738422199589e-08, + 3.307502847350913145e-08, + 3.304168482969391567e-08, + 3.300829652130288893e-08, + 3.297486361692445812e-08, + 3.294138618519771972e-08, + 3.290786429481322090e-08, + 3.287429801452112534e-08, + 3.284068741311877913e-08, + 3.280703255946516984e-08, + 3.277333352246918722e-08, + 3.273959037108935184e-08, + 3.270580317434667279e-08, + 3.267197200130656223e-08, + 3.263809692109108427e-08, + 3.260417800288107916e-08, + 3.257021531589712490e-08, + 3.253620892942658937e-08, + 3.250215891279935754e-08, + 3.246806533540436843e-08, + 3.243392826667622808e-08, + 3.239974777610964214e-08, + 3.236552393324792804e-08, + 3.233125680768339212e-08, + 3.229694646906550223e-08, + 3.226259298708868513e-08, + 3.222819643150744738e-08, + 3.219375687212318011e-08, + 3.215927437878472817e-08, + 3.212474902140202866e-08, + 3.209018086992609314e-08, + 3.205556999436447926e-08, + 3.202091646477542105e-08, + 3.198622035126269380e-08, + 3.195148172398981509e-08, + 3.191670065316114538e-08, + 3.188187720903565227e-08, + 3.184701146192655319e-08, + 3.181210348218866280e-08, + 3.177715334023360657e-08, + 3.174216110651726739e-08, + 3.170712685155062504e-08, + 3.167205064588725576e-08, + 3.163693256013819509e-08, + 3.160177266495998672e-08, + 3.156657103105374284e-08, + 3.153132772917928562e-08, + 3.149604283013538748e-08, + 3.146071640477544788e-08, + 3.142534852400092877e-08, + 3.138993925875666283e-08, + 3.135448868004482292e-08, + 3.131899685890678360e-08, + 3.128346386643564804e-08, + 3.124788977377647296e-08, + 3.121227465211402635e-08, + 3.117661857268740544e-08, + 3.114092160677778779e-08, + 3.110518382571614722e-08, + 3.106940530088547068e-08, + 3.103358610370697409e-08, + 3.099772630565587173e-08, + 3.096182597824729430e-08, + 3.092588519305121128e-08, + 3.088990402168039376e-08, + 3.085388253579060639e-08, + 3.081782080709016293e-08, + 3.078171890732605613e-08, + 3.074557690830120937e-08, + 3.070939488185466404e-08, + 3.067317289987529752e-08, + 3.063691103430198198e-08, + 3.060060935711040243e-08, + 3.056426794032868051e-08, + 3.052788685602480800e-08, + 3.049146617631432298e-08, + 3.045500597336201057e-08, + 3.041850631936900552e-08, + 3.038196728658820424e-08, + 3.034538894730990491e-08, + 3.030877137387715339e-08, + 3.027211463867362003e-08, + 3.023541881412350702e-08, + 3.019868397270124296e-08, + 3.016191018691754654e-08, + 3.012509752933577818e-08, + 3.008824607255859274e-08, + 3.005135588922735708e-08, + 3.001442705203880626e-08, + 2.997745963371682008e-08, + 2.994045370704433243e-08, + 2.990340934483512110e-08, + 2.986632661995080801e-08, + 2.982920560529939677e-08, + 2.979204637382321895e-08, + 2.975484899851361163e-08, + 2.971761355239764278e-08, + 2.968034010855276891e-08, + 2.964302874009404684e-08, + 2.960567952017560941e-08, + 2.956829252199899684e-08, + 2.953086781880013027e-08, + 2.949340548386490249e-08, + 2.945590559051667756e-08, + 2.941836821211495411e-08, + 2.938079342207241186e-08, + 2.934318129382612904e-08, + 2.930553190086898551e-08, + 2.926784531672836114e-08, + 2.923012161496778031e-08, + 2.919236086920128830e-08, + 2.915456315307338052e-08, + 2.911672854027234666e-08, + 2.907885710453283822e-08, + 2.904094891961414345e-08, + 2.900300405933191468e-08, + 2.896502259752906482e-08, + 2.892700460809555680e-08, + 2.888895016495338198e-08, + 2.885085934207235269e-08, + 2.881273221345674492e-08, + 2.877456885314531486e-08, + 2.873636933522774984e-08, + 2.869813373381523730e-08, + 2.865986212307321778e-08, + 2.862155457719852828e-08, + 2.858321117042273750e-08, + 2.854483197702507624e-08, + 2.850641707131275389e-08, + 2.846796652763475575e-08, + 2.842948042038434114e-08, + 2.839095882397651101e-08, + 2.835240181288077418e-08, + 2.831380946159165011e-08, + 2.827518184464523900e-08, + 2.823651903661917871e-08, + 2.819782111211873165e-08, + 2.815908814579357982e-08, + 2.812032021232375284e-08, + 2.808151738642870042e-08, + 2.804267974286916515e-08, + 2.800380735643234616e-08, + 2.796490030194932284e-08, + 2.792595865427934175e-08, + 2.788698248832817671e-08, + 2.784797187902639047e-08, + 2.780892690134458797e-08, + 2.776984763029494159e-08, + 2.773073414090949923e-08, + 2.769158650827223588e-08, + 2.765240480748954312e-08, + 2.761318911370730545e-08, + 2.757393950211106569e-08, + 2.753465604791092403e-08, + 2.749533882635961685e-08, + 2.745598791273774657e-08, + 2.741660338236320163e-08, + 2.737718531059225495e-08, + 2.733773377280597169e-08, + 2.729824884442675291e-08, + 2.725873060090269849e-08, + 2.721917911772484231e-08, + 2.717959447041252436e-08, + 2.713997673451566386e-08, + 2.710032598562290860e-08, + 2.706064229934815525e-08, + 2.702092575134898885e-08, + 2.698117641730464672e-08, + 2.694139437293143378e-08, + 2.690157969398264979e-08, + 2.686173245623485815e-08, + 2.682185273550390339e-08, + 2.678194060763152412e-08, + 2.674199614849437257e-08, + 2.670201943400549032e-08, + 2.666201054009992193e-08, + 2.662196954275184426e-08, + 2.658189651795913781e-08, + 2.654179154175995357e-08, + 2.650165469021881635e-08, + 2.646148603942764058e-08, + 2.642128566551569613e-08, + 2.638105364463473897e-08, + 2.634079005297632902e-08, + 2.630049496675763568e-08, + 2.626016846222147095e-08, + 2.621981061565146326e-08, + 2.617942150334993529e-08, + 2.613900120165541378e-08, + 2.609854978693611132e-08, + 2.605806733558302106e-08, + 2.601755392402793600e-08, + 2.597700962872057248e-08, + 2.593643452614762846e-08, + 2.589582869281673616e-08, + 2.585519220527376672e-08, + 2.581452514008875818e-08, + 2.577382757385665665e-08, + 2.573309958320738143e-08, + 2.569234124479087290e-08, + 2.565155263529518793e-08, + 2.561073383143126650e-08, + 2.556988490993276631e-08, + 2.552900594757442280e-08, + 2.548809702114028219e-08, + 2.544715820745834708e-08, + 2.540618958337700509e-08, + 2.536519122576742440e-08, + 2.532416321153869447e-08, + 2.528310561761552853e-08, + 2.524201852095411570e-08, + 2.520090199854234597e-08, + 2.515975612738463306e-08, + 2.511858098451973528e-08, + 2.507737664700634927e-08, + 2.503614319193557067e-08, + 2.499488069641596190e-08, + 2.495358923759211072e-08, + 2.491226889262903957e-08, + 2.487091973871224528e-08, + 2.482954185306614184e-08, + 2.478813531292154895e-08, + 2.474670019555166112e-08, + 2.470523657824746386e-08, + 2.466374453831979500e-08, + 2.462222415311599089e-08, + 2.458067549999603384e-08, + 2.453909865634937361e-08, + 2.449749369959647265e-08, + 2.445586070716523138e-08, + 2.441419975652573647e-08, + 2.437251092515861283e-08, + 2.433079429057313895e-08, + 2.428904993030728653e-08, + 2.424727792191245076e-08, + 2.420547834297139023e-08, + 2.416365127108181562e-08, + 2.412179678387487558e-08, + 2.407991495899898035e-08, + 2.403800587412223701e-08, + 2.399606960694192895e-08, + 2.395410623516941485e-08, + 2.391211583655036817e-08, + 2.387009848884054404e-08, + 2.382805426982313351e-08, + 2.378598325730987200e-08, + 2.374388552911713041e-08, + 2.370176116310189095e-08, + 2.365961023712888482e-08, + 2.361743282908938911e-08, + 2.357522901690084960e-08, + 2.353299887849195842e-08, + 2.349074249182056416e-08, + 2.344845993485845836e-08, + 2.340615128560177484e-08, + 2.336381662207227677e-08, + 2.332145602230171968e-08, + 2.327906956435083689e-08, + 2.323665732629164775e-08, + 2.319421938622698245e-08, + 2.315175582227402443e-08, + 2.310926671256452541e-08, + 2.306675213526372802e-08, + 2.302421216853717596e-08, + 2.298164689058710999e-08, + 2.293905637962792712e-08, + 2.289644071388821876e-08, + 2.285379997162730113e-08, + 2.281113423111103510e-08, + 2.276844357063275718e-08, + 2.272572806849735791e-08, + 2.268298780303146617e-08, + 2.264022285258521269e-08, + 2.259743329551621250e-08, + 2.255461921020909639e-08, + 2.251178067505713419e-08, + 2.246891776848207724e-08, + 2.242603056891789267e-08, + 2.238311915481223248e-08, + 2.234018360463721669e-08, + 2.229722399687324704e-08, + 2.225424041002837957e-08, + 2.221123292262212181e-08, + 2.216820161318540301e-08, + 2.212514656027806072e-08, + 2.208206784246401215e-08, + 2.203896553832887971e-08, + 2.199583972648136749e-08, + 2.195269048552873364e-08, + 2.190951789411335510e-08, + 2.186632203087937568e-08, + 2.182310297449530460e-08, + 2.177986080363629171e-08, + 2.173659559700351324e-08, + 2.169330743330796574e-08, + 2.164999639127206744e-08, + 2.160666254964072599e-08, + 2.156330598716426871e-08, + 2.151992678261850007e-08, + 2.147652501478847244e-08, + 2.143310076246823790e-08, + 2.138965410447865582e-08, + 2.134618511964192557e-08, + 2.130269388680180950e-08, + 2.125918048481564562e-08, + 2.121564499254731992e-08, + 2.117208748888686390e-08, + 2.112850805272513626e-08, + 2.108490676297179915e-08, + 2.104128369855498732e-08, + 2.099763893840491673e-08, + 2.095397256147404454e-08, + 2.091028464672012850e-08, + 2.086657527311716887e-08, + 2.082284451965703303e-08, + 2.077909246533312028e-08, + 2.073531918916014472e-08, + 2.069152477015565933e-08, + 2.064770928736214168e-08, + 2.060387281982088485e-08, + 2.056001544659217728e-08, + 2.051613724674782175e-08, + 2.047223829936379336e-08, + 2.042831868354001905e-08, + 2.038437847837476145e-08, + 2.034041776298281691e-08, + 2.029643661649525074e-08, + 2.025243511804286357e-08, + 2.020841334677606681e-08, + 2.016437138184865341e-08, + 2.012030930242807801e-08, + 2.007622718769760765e-08, + 2.003212511683946380e-08, + 1.998800316905521406e-08, + 1.994386142354657487e-08, + 1.989969995953608783e-08, + 1.985551885625036091e-08, + 1.981131819292153760e-08, + 1.976709804879832816e-08, + 1.972285850312924763e-08, + 1.967859963518505228e-08, + 1.963432152423195221e-08, + 1.959002424955047764e-08, + 1.954570789043521428e-08, + 1.950137252617818025e-08, + 1.945701823608882071e-08, + 1.941264509947713671e-08, + 1.936825319566517962e-08, + 1.932384260398815303e-08, + 1.927941340377796171e-08, + 1.923496567438322278e-08, + 1.919049949515084278e-08, + 1.914601494544620743e-08, + 1.910151210463618809e-08, + 1.905699105209099461e-08, + 1.901245186719547132e-08, + 1.896789462933148471e-08, + 1.892331941789894373e-08, + 1.887872631229863743e-08, + 1.883411539193213575e-08, + 1.878948673622211163e-08, + 1.874484042457670945e-08, + 1.870017653642907095e-08, + 1.865549515121035926e-08, + 1.861079634835179378e-08, + 1.856608020730348009e-08, + 1.852134680750761590e-08, + 1.847659622842111283e-08, + 1.843182854949675322e-08, + 1.838704385020335678e-08, + 1.834224221000933293e-08, + 1.829742370838378262e-08, + 1.825258842480808216e-08, + 1.820773643875855213e-08, + 1.816286782972728249e-08, + 1.811798267720485442e-08, + 1.807308106068006568e-08, + 1.802816305966119251e-08, + 1.798322875363920650e-08, + 1.793827822212768446e-08, + 1.789331154463610368e-08, + 1.784832880067191980e-08, + 1.780333006975877809e-08, + 1.775831543141028841e-08, + 1.771328496514902730e-08, + 1.766823875050764963e-08, + 1.762317686700266706e-08, + 1.757809939417404673e-08, + 1.753300641154910990e-08, + 1.748789799866307238e-08, + 1.744277423505913399e-08, + 1.739763520027100839e-08, + 1.735248097384406259e-08, + 1.730731163531568957e-08, + 1.726212726424031892e-08, + 1.721692794015281577e-08, + 1.717171374260861224e-08, + 1.712648475115667524e-08, + 1.708124104534125672e-08, + 1.703598270472124312e-08, + 1.699070980884275585e-08, + 1.694542243725841791e-08, + 1.690012066952908116e-08, + 1.685480458519693620e-08, + 1.680947426382539912e-08, + 1.676412978496299014e-08, + 1.671877122816367895e-08, + 1.667339867298748356e-08, + 1.662801219898243118e-08, + 1.658261188570581347e-08, + 1.653719781270682230e-08, + 1.649177005953780608e-08, + 1.644632870575607300e-08, + 1.640087383090647388e-08, + 1.635540551454277990e-08, + 1.630992383620756881e-08, + 1.626442887545580620e-08, + 1.621892071182750556e-08, + 1.617339942486686262e-08, + 1.612786509412409165e-08, + 1.608231779912832376e-08, + 1.603675761942805268e-08, + 1.599118463455411352e-08, + 1.594559892404085853e-08, + 1.590000056742622665e-08, + 1.585438964423397560e-08, + 1.580876623399484121e-08, + 1.576313041622919972e-08, + 1.571748227045824128e-08, + 1.567182187620621001e-08, + 1.562614931298236484e-08, + 1.558046466030236704e-08, + 1.553476799766883163e-08, + 1.548905940459242041e-08, + 1.544333896057424291e-08, + 1.539760674510767949e-08, + 1.535186283769024310e-08, + 1.530610731780523573e-08, + 1.526034026494363229e-08, + 1.521456175858613080e-08, + 1.516877187820318217e-08, + 1.512297070327420395e-08, + 1.507715831326019072e-08, + 1.503133478762706375e-08, + 1.498550020582803549e-08, + 1.493965464731486589e-08, + 1.489379819154007092e-08, + 1.484793091793887684e-08, + 1.480205290595091876e-08, + 1.475616423500027420e-08, + 1.471026498451689365e-08, + 1.466435523391921986e-08, + 1.461843506261531943e-08, + 1.457250455001521442e-08, + 1.452656377551260496e-08, + 1.448061281850654138e-08, + 1.443465175838365803e-08, + 1.438868067451783249e-08, + 1.434269964629011729e-08, + 1.429670875306054961e-08, + 1.425070807419002527e-08, + 1.420469768903219229e-08, + 1.415867767692536280e-08, + 1.411264811721425294e-08, + 1.406660908922208209e-08, + 1.402056067227399861e-08, + 1.397450294567780655e-08, + 1.392843598874469971e-08, + 1.388235988077194222e-08, + 1.383627470104452116e-08, + 1.379018052884697032e-08, + 1.374407744344531120e-08, + 1.369796552410867548e-08, + 1.365184485009168446e-08, + 1.360571550063380548e-08, + 1.355957755497944745e-08, + 1.351343109234981688e-08, + 1.346727619196488279e-08, + 1.342111293303492796e-08, + 1.337494139475285771e-08, + 1.332876165631558095e-08, + 1.328257379689653119e-08, + 1.323637789566485880e-08, + 1.319017403178555013e-08, + 1.314396228440157196e-08, + 1.309774273265528560e-08, + 1.305151545567072369e-08, + 1.300528053256506813e-08, + 1.295903804245097452e-08, + 1.291278806441805817e-08, + 1.286653067755479947e-08, + 1.282026596092881073e-08, + 1.277399399361201054e-08, + 1.272771485464333616e-08, + 1.268142862306977662e-08, + 1.263513537791892851e-08, + 1.258883519820050316e-08, + 1.254252816292613589e-08, + 1.249621435108159112e-08, + 1.244989384164631529e-08, + 1.240356671359344177e-08, + 1.235723304587167399e-08, + 1.231089291742706344e-08, + 1.226454640718515580e-08, + 1.221819359406244409e-08, + 1.217183455696846803e-08, + 1.212546937478777990e-08, + 1.207909812640158022e-08, + 1.203272089066782078e-08, + 1.198633774644281720e-08, + 1.193994877256350593e-08, + 1.189355404784889013e-08, + 1.184715365111216119e-08, + 1.180074766114250572e-08, + 1.175433615672696959e-08, + 1.170791921663237079e-08, + 1.166149691960514392e-08, + 1.161506934439311988e-08, + 1.156863656970765752e-08, + 1.152219867426726746e-08, + 1.147575573675948410e-08, + 1.142930783586294963e-08, + 1.138285505024702032e-08, + 1.133639745855393249e-08, + 1.128993513942026453e-08, + 1.124346817145746346e-08, + 1.119699663327289331e-08, + 1.115052060345241971e-08, + 1.110404016056176807e-08, + 1.105755538315883868e-08, + 1.101106634977515637e-08, + 1.096457313893807694e-08, + 1.091807582915252310e-08, + 1.087157449890085037e-08, + 1.082506922666466489e-08, + 1.077856009088688221e-08, + 1.073204717001333124e-08, + 1.068553054246498741e-08, + 1.063901028663940040e-08, + 1.059248648093097495e-08, + 1.054595920370266474e-08, + 1.049942853330981833e-08, + 1.045289454808202425e-08, + 1.040635732633517788e-08, + 1.035981694637311924e-08, + 1.031327348646970309e-08, + 1.026672702489043461e-08, + 1.022017763987275769e-08, + 1.017362540964739956e-08, + 1.012707041242069715e-08, + 1.008051272637411079e-08, + 1.003395242968646540e-08, + 9.987389600495400597e-09, + 9.940824316939710719e-09, + 9.894256657130807127e-09, + 9.847686699154877138e-09, + 9.801114521092651981e-09, + 9.754540200991156933e-09, + 9.707963816883816766e-09, + 9.661385446792230877e-09, + 9.614805168697931692e-09, + 9.568223060584428594e-09, + 9.521639200399131153e-09, + 9.475053666074918684e-09, + 9.428466535530385090e-09, + 9.381877886651384470e-09, + 9.335287797313186315e-09, + 9.288696345362120379e-09, + 9.242103608631620669e-09, + 9.195509664924058904e-09, + 9.148914592032575470e-09, + 9.102318467722945962e-09, + 9.055721369733510049e-09, + 9.009123375795055242e-09, + 8.962524563602585217e-09, + 8.915925010835375639e-09, + 8.869324795158640103e-09, + 8.822723994195642564e-09, + 8.776122685569345886e-09, + 8.729520946864424396e-09, + 8.682918855649013771e-09, + 8.636316489474874822e-09, + 8.589713925858889460e-09, + 8.543111242305139806e-09, + 8.496508516286882266e-09, + 8.449905825258169423e-09, + 8.403303246656005666e-09, + 8.356700857881894446e-09, + 8.310098736324091091e-09, + 8.263496959337087070e-09, + 8.216895604265943993e-09, + 8.170294748417613605e-09, + 8.123694469083420554e-09, + 8.077094843530507691e-09, + 8.030495948993681723e-09, + 7.983897862697793408e-09, + 7.937300661828930171e-09, + 7.890704423554825949e-09, + 7.844109225024540253e-09, + 7.797515143350313128e-09, + 7.750922255629505296e-09, + 7.704330638926334005e-09, + 7.657740370283971374e-09, + 7.611151526726339376e-09, + 7.564564185239853958e-09, + 7.517978422795434669e-09, + 7.471394316328404164e-09, + 7.424811942760391954e-09, + 7.378231378980979260e-09, + 7.331652701849802540e-09, + 7.285075988208439246e-09, + 7.238501314862036138e-09, + 7.191928758601611736e-09, + 7.145358396185501822e-09, + 7.098790304339508340e-09, + 7.052224559776745937e-09, + 7.005661239169336671e-09, + 6.959100419172546312e-09, + 6.912542176406429208e-09, + 6.865986587467907599e-09, + 6.819433728932598035e-09, + 6.772883677336571215e-09, + 6.726336509198389734e-09, + 6.679792300998755301e-09, + 6.633251129202775619e-09, + 6.586713070241500055e-09, + 6.540178200513856070e-09, + 6.493646596398750047e-09, + 6.447118334236503703e-09, + 6.400593490351416265e-09, + 6.354072141032985816e-09, + 6.307554362535979611e-09, + 6.261040231102694325e-09, + 6.214529822924090981e-09, + 6.168023214182516340e-09, + 6.121520481022944319e-09, + 6.075021699555133272e-09, + 6.028526945873585862e-09, + 5.982036296029110590e-09, + 5.935549826048968608e-09, + 5.889067611936827394e-09, + 5.842589729654255896e-09, + 5.796116255143032767e-09, + 5.749647264306750692e-09, + 5.703182833026868659e-09, + 5.656723037144368399e-09, + 5.610267952482005547e-09, + 5.563817654825808089e-09, + 5.517372219925082985e-09, + 5.470931723514559788e-09, + 5.424496241275667843e-09, + 5.378065848879209706e-09, + 5.331640621956605862e-09, + 5.285220636101950274e-09, + 5.238805966892170422e-09, + 5.192396689858414305e-09, + 5.145992880506346141e-09, + 5.099594614317957065e-09, + 5.053201966723134933e-09, + 5.006815013142096207e-09, + 4.960433828946658182e-09, + 4.914058489482577827e-09, + 4.867689070069360711e-09, + 4.821325645981852917e-09, + 4.774968292472513716e-09, + 4.728617084750896518e-09, + 4.682272098010136025e-09, + 4.635933407387993817e-09, + 4.589601088009553274e-09, + 4.543275214958601611e-09, + 4.496955863279578719e-09, + 4.450643107997756229e-09, + 4.404337024090654292e-09, + 4.358037686508362093e-09, + 4.311745170175308022e-09, + 4.265459549961707880e-09, + 4.219180900726240776e-09, + 4.172909297277201425e-09, + 4.126644814394805893e-09, + 4.080387526831046845e-09, + 4.034137509291351641e-09, + 3.987894836456684600e-09, + 3.941659582965264657e-09, + 3.895431823424584295e-09, + 3.849211632413380718e-09, + 3.802999084463173179e-09, + 3.756794254080527374e-09, + 3.710597215726580653e-09, + 3.664408043839407741e-09, + 3.618226812815441441e-09, + 3.572053597009457737e-09, + 3.525888470756841433e-09, + 3.479731508334765737e-09, + 3.433582784006869529e-09, + 3.387442371984467138e-09, + 3.341310346448901659e-09, + 3.295186781551263294e-09, + 3.249071751394115283e-09, + 3.202965330053692122e-09, + 3.156867591561477005e-09, + 3.110778609916315891e-09, + 3.064698459086334904e-09, + 3.018627212990486761e-09, + 2.972564945520880517e-09, + 2.926511730522250522e-09, + 2.880467641814251012e-09, + 2.834432753173052991e-09, + 2.788407138333245095e-09, + 2.742390870999938138e-09, + 2.696384024830307816e-09, + 2.650386673455934790e-09, + 2.604398890464309340e-09, + 2.558420749398751543e-09, + 2.512452323778624255e-09, + 2.466493687070765192e-09, + 2.420544912713783705e-09, + 2.374606074099606378e-09, + 2.328677244585630797e-09, + 2.282758497496580912e-09, + 2.236849906106126259e-09, + 2.190951543659139321e-09, + 2.145063483351254658e-09, + 2.099185798351108891e-09, + 2.053318561781922706e-09, + 2.007461846723441004e-09, + 1.961615726224050266e-09, + 1.915780273282298516e-09, + 1.869955560869188250e-09, + 1.824141661909766290e-09, + 1.778338649283029279e-09, + 1.732546595842102753e-09, + 1.686765574385690175e-09, + 1.640995657680354698e-09, + 1.595236918452223576e-09, + 1.549489429378781504e-09, + 1.503753263111095506e-09, + 1.458028492245281760e-09, + 1.412315189342692730e-09, + 1.366613426929810875e-09, + 1.320923277479864764e-09, + 1.275244813435066799e-09, + 1.229578107188200373e-09, + 1.183923231098771199e-09, + 1.138280257474638313e-09, + 1.092649258594210228e-09, + 1.047030306688076762e-09, + 1.001423473938907096e-09, + 9.558288325016389724e-10, + 9.102464544749387952e-10, + 8.646764119234274544e-10, + 8.191187768694547396e-10, + 7.735736212848828515e-10, + 7.280410171132712821e-10, + 6.825210362413894386e-10, + 6.370137505193975754e-10, + 5.915192317607059667e-10, + 5.460375517236520285e-10, + 5.005687821336692765e-10, + 4.551129946649572617e-10, + 4.096702609525196853e-10, + 3.642406525940788045e-10, + 3.188242411317512111e-10, + 2.734210980742088267e-10, + 2.280312948763283731e-10, + 1.826549029613446904e-10, + 1.372919937025345289e-10, + 9.194263842513242806e-11, + 4.660690841836039820e-11, + 1.284874917120952773e-12, +-4.402339087384722727e-11, +-8.931781780838049831e-11, +-1.345983347787781264e-10, +-1.798648707159146032e-10, +-2.251173546075295780e-10, +-2.703557154761096241e-10, +-3.155798823971728201e-10, +-3.607897844872565626e-10, +-4.059853509020134480e-10, +-4.511665108544751101e-10, +-4.963331935929566236e-10, +-5.414853284213513803e-10, +-5.866228446770264447e-10, +-6.317456717490998338e-10, +-6.768537390765182011e-10, +-7.219469761360735740e-10, +-7.670253124606353454e-10, +-8.120886776170937096e-10, +-8.571370012246091274e-10, +-9.021702129547059012e-10, +-9.471882425092134394e-10, +-9.921910196586486771e-10, +-1.037178474198026951e-09, +-1.082150535985195721e-09, +-1.127107134918808713e-09, +-1.172048200938432833e-09, +-1.216973664042756275e-09, +-1.261883454267565456e-09, +-1.306777501705964824e-09, +-1.351655736486342426e-09, +-1.396518088790609442e-09, +-1.441364488852240597e-09, +-1.486194866944359036e-09, +-1.531009153397900593e-09, +-1.575807278579630222e-09, +-1.620589172910320120e-09, +-1.665354766864836786e-09, +-1.710103990950198405e-09, +-1.754836775743779421e-09, +-1.799553051851262673e-09, +-1.844252749934866106e-09, +-1.888935800711423509e-09, +-1.933602134932408715e-09, +-1.978251683412148054e-09, +-2.022884377007840003e-09, +-2.067500146617700859e-09, +-2.112098923209059928e-09, +-2.156680637776425188e-09, +-2.201245221379628725e-09, +-2.245792605117905373e-09, +-2.290322720150013470e-09, +-2.334835497672288100e-09, +-2.379330868936834520e-09, +-2.423808765251528571e-09, +-2.468269117958158845e-09, +-2.512711858470534067e-09, +-2.557136918232591363e-09, +-2.601544228746464152e-09, +-2.645933721570598651e-09, +-2.690305328299902375e-09, +-2.734658980593731374e-09, +-2.778994610156087117e-09, +-2.823312148733714805e-09, +-2.867611528144101365e-09, +-2.911892680233733849e-09, +-2.956155536916049654e-09, +-3.000400030149596471e-09, +-3.044626091938210129e-09, +-3.088833654348956973e-09, +-3.133022649490347161e-09, +-3.177193009530392024e-09, +-3.221344666680725500e-09, +-3.265477553214630886e-09, +-3.309591601445274406e-09, +-3.353686743743712934e-09, +-3.397762912538932453e-09, +-3.441820040298125595e-09, +-3.485858059554581271e-09, +-3.529876902887934907e-09, +-3.573876502922266759e-09, +-3.617856792353984513e-09, +-3.661817703910271939e-09, +-3.705759170386901795e-09, +-3.749681124626413149e-09, +-3.793583499518323965e-09, +-3.837466228017000685e-09, +-3.881329243119998921e-09, +-3.925172477885952471e-09, +-3.968995865422772766e-09, +-4.012799338885870427e-09, +-4.056582831495947926e-09, +-4.100346276517364671e-09, +-4.144089607278050552e-09, +-4.187812757147785013e-09, +-4.231515659556160098e-09, +-4.275198247990632442e-09, +-4.318860455984824460e-09, +-4.362502217136368284e-09, +-4.406123465083259150e-09, +-4.449724133531673483e-09, +-4.493304156236272074e-09, +-4.536863467000311747e-09, +-4.580401999693514114e-09, +-4.623919688230385175e-09, +-4.667416466588235443e-09, +-4.710892268795219744e-09, +-4.754347028928574491e-09, +-4.797780681132523665e-09, +-4.841193159596526446e-09, +-4.884584398575208958e-09, +-4.927954332366718603e-09, +-4.971302895330644108e-09, +-5.014630021885999680e-09, +-5.057935646499569208e-09, +-5.101219703703741928e-09, +-5.144482128074942864e-09, +-5.187722854251383296e-09, +-5.230941816933260938e-09, +-5.274138950863041605e-09, +-5.317314190853258274e-09, +-5.360467471764829850e-09, +-5.403598728515048427e-09, +-5.446707896085579773e-09, +-5.489794909500912798e-09, +-5.532859703855951815e-09, +-5.575902214292514687e-09, +-5.618922376019181022e-09, +-5.661920124289623354e-09, +-5.704895394420430400e-09, +-5.747848121789312908e-09, +-5.790778241823304750e-09, +-5.833685690016532420e-09, +-5.876570401908829101e-09, +-5.919432313103424754e-09, +-5.962271359266919648e-09, +-6.005087476109957281e-09, +-6.047880599414633015e-09, +-6.090650665013046932e-09, +-6.133397608795316737e-09, +-6.176121366717330918e-09, +-6.218821874779487726e-09, +-6.261499069054141026e-09, +-6.304152885665949794e-09, +-6.346783260792269374e-09, +-6.389390130680526410e-09, +-6.431973431627096781e-09, +-6.474533099994730995e-09, +-6.517069072197141332e-09, +-6.559581284716752309e-09, +-6.602069674083133603e-09, +-6.644534176890759616e-09, +-6.686974729799027678e-09, +-6.729391269511054092e-09, +-6.771783732810530001e-09, +-6.814152056521166370e-09, +-6.856496177533972755e-09, +-6.898816032805229876e-09, +-6.941111559337355281e-09, +-6.983382694206044795e-09, +-7.025629374541014097e-09, +-7.067851537526110394e-09, +-7.110049120416743599e-09, +-7.152222060518760959e-09, +-7.194370295205992389e-09, +-7.236493761908528493e-09, +-7.278592398111148093e-09, +-7.320666141370531860e-09, +-7.362714929294365248e-09, +-7.404738699560443058e-09, +-7.446737389895802981e-09, +-7.488710938094038487e-09, +-7.530659282013449247e-09, +-7.572582359565570627e-09, +-7.614480108732584174e-09, +-7.656352467544422923e-09, +-7.698199374105613400e-09, +-7.740020766576258741e-09, +-7.781816583170104746e-09, +-7.823586762181724340e-09, +-7.865331241945977456e-09, +-7.907049960874784169e-09, +-7.948742857436013398e-09, +-7.990409870153635106e-09, +-8.032050937624971976e-09, +-8.073665998499751895e-09, +-8.115254991499430886e-09, +-8.156817855396060305e-09, +-8.198354529029649355e-09, +-8.239864951306401543e-09, +-8.281349061187243335e-09, +-8.322806797705171790e-09, +-8.364238099944242517e-09, +-8.405642907057048003e-09, +-8.447021158264467803e-09, +-8.488372792835058506e-09, +-8.529697750121165136e-09, +-8.570995969517265989e-09, +-8.612267390496065831e-09, +-8.653511952587750209e-09, +-8.694729595379985448e-09, +-8.735920258535327502e-09, +-8.777083881770079209e-09, +-8.818220404871671014e-09, +-8.859329767687288889e-09, +-8.900411910122147183e-09, +-8.941466772156477251e-09, +-8.982494293824885996e-09, +-9.023494415235419068e-09, +-9.064467076548681174e-09, +-9.105412217994995112e-09, +-9.146329779874524192e-09, +-9.187219702536516623e-09, +-9.228081926415324265e-09, +-9.268916391990848503e-09, +-9.309723039814824743e-09, +-9.350501810509498920e-09, +-9.391252644748266508e-09, +-9.431975483282584018e-09, +-9.472670266922923988e-09, +-9.513336936537224845e-09, +-9.553975433077110883e-09, +-9.594585697538488680e-09, +-9.635167670997632028e-09, +-9.675721294586383059e-09, +-9.716246509511324637e-09, +-9.756743257033115730e-09, +-9.797211478483513135e-09, +-9.837651115263435873e-09, +-9.878062108831927295e-09, +-9.918444400723166873e-09, +-9.958797932525716241e-09, +-9.999122645899582281e-09, +-1.003941848257632465e-08, +-1.007968538434035653e-08, +-1.011992329305527381e-08, +-1.016013215064513595e-08, +-1.020031189909277032e-08, +-1.024046248046603346e-08, +-1.028058383687851838e-08, +-1.032067591052527557e-08, +-1.036073864366211684e-08, +-1.040077197860607203e-08, +-1.044077585775191435e-08, +-1.048075022355179358e-08, +-1.052069501853232725e-08, +-1.056061018528312272e-08, +-1.060049566645532458e-08, +-1.064035140477818813e-08, +-1.068017734303889610e-08, +-1.071997342410103128e-08, +-1.075973959088260331e-08, +-1.079947578638178056e-08, +-1.083918195365701801e-08, +-1.087885803583406673e-08, +-1.091850397611370306e-08, +-1.095811971775157192e-08, +-1.099770520408376151e-08, +-1.103726037850880722e-08, +-1.107678518448751955e-08, +-1.111627956555981891e-08, +-1.115574346532441012e-08, +-1.119517682745541206e-08, +-1.123457959569151663e-08, +-1.127395171383415905e-08, +-1.131329312576412266e-08, +-1.135260377542134247e-08, +-1.139188360682362925e-08, +-1.143113256404618853e-08, +-1.147035059123830648e-08, +-1.150953763262178155e-08, +-1.154869363247977249e-08, +-1.158781853517344116e-08, +-1.162691228512012324e-08, +-1.166597482681880212e-08, +-1.170500610483234601e-08, +-1.174400606378700002e-08, +-1.178297464838925739e-08, +-1.182191180340591113e-08, +-1.186081747368013946e-08, +-1.189969160412114117e-08, +-1.193853413970202634e-08, +-1.197734502547652869e-08, +-1.201612420655882733e-08, +-1.205487162814185392e-08, +-1.209358723547759919e-08, +-1.213227097389320651e-08, +-1.217092278878943338e-08, +-1.220954262562986331e-08, +-1.224813042995695644e-08, +-1.228668614737285732e-08, +-1.232520972355505174e-08, +-1.236370110425678864e-08, +-1.240216023528726744e-08, +-1.244058706254589657e-08, +-1.247898153198459225e-08, +-1.251734358963304881e-08, +-1.255567318159699669e-08, +-1.259397025404027909e-08, +-1.263223475321007929e-08, +-1.267046662541540239e-08, +-1.270866581704520384e-08, +-1.274683227454858171e-08, +-1.278496594445110030e-08, +-1.282306677335310600e-08, +-1.286113470791881846e-08, +-1.289916969489279141e-08, +-1.293717168108010178e-08, +-1.297514061336254250e-08, +-1.301307643869879296e-08, +-1.305097910410475027e-08, +-1.308884855668739242e-08, +-1.312668474360793562e-08, +-1.316448761210599295e-08, +-1.320225710949853542e-08, +-1.323999318316195538e-08, +-1.327769578055691174e-08, +-1.331536484921082514e-08, +-1.335300033671594735e-08, +-1.339060219075461174e-08, +-1.342817035906173722e-08, +-1.346570478945863673e-08, +-1.350320542983011102e-08, +-1.354067222814223625e-08, +-1.357810513242289720e-08, +-1.361550409077783784e-08, +-1.365286905139063984e-08, +-1.369019996250364944e-08, +-1.372749677245099518e-08, +-1.376475942962218865e-08, +-1.380198788248653293e-08, +-1.383918207959154104e-08, +-1.387634196954552047e-08, +-1.391346750104188730e-08, +-1.395055862284217595e-08, +-1.398761528377394805e-08, +-1.402463743275544740e-08, +-1.406162501875903026e-08, +-1.409857799084448427e-08, +-1.413549629813968063e-08, +-1.417237988984067503e-08, +-1.420922871522788238e-08, +-1.424604272364625585e-08, +-1.428282186452153603e-08, +-1.431956608734977883e-08, +-1.435627534169556051e-08, +-1.439294957720773873e-08, +-1.442958874360053334e-08, +-1.446619279067060596e-08, +-1.450276166827686022e-08, +-1.453929532636425967e-08, +-1.457579371494675964e-08, +-1.461225678410565957e-08, +-1.464868448401379799e-08, +-1.468507676489955534e-08, +-1.472143357707919003e-08, +-1.475775487093878446e-08, +-1.479404059693344926e-08, +-1.483029070560325973e-08, +-1.486650514755443916e-08, +-1.490268387347482709e-08, +-1.493882683412361234e-08, +-1.497493398032962078e-08, +-1.501100526300688283e-08, +-1.504704063313605666e-08, +-1.508304004178108760e-08, +-1.511900344007095393e-08, +-1.515493077921485057e-08, +-1.519082201050056786e-08, +-1.522667708528435691e-08, +-1.526249595500629531e-08, +-1.529827857117189063e-08, +-1.533402488536681086e-08, +-1.536973484925756934e-08, +-1.540540841457435573e-08, +-1.544104553313469677e-08, +-1.547664615682351122e-08, +-1.551221023760809184e-08, +-1.554773772752835779e-08, +-1.558322857869475371e-08, +-1.561868274330396274e-08, +-1.565410017362014942e-08, +-1.568948082199186065e-08, +-1.572482464083370529e-08, +-1.576013158264148822e-08, +-1.579540159999048986e-08, +-1.583063464552574511e-08, +-1.586583067197675062e-08, +-1.590098963213945873e-08, +-1.593611147889123622e-08, +-1.597119616519091721e-08, +-1.600624364406216696e-08, +-1.604125386861703991e-08, +-1.607622679203752037e-08, +-1.611116236758228552e-08, +-1.614606054859347175e-08, +-1.618092128847828810e-08, +-1.621574454073253796e-08, +-1.625053025892068072e-08, +-1.628527839669241838e-08, +-1.631998890776438508e-08, +-1.635466174593562862e-08, +-1.638929686508542671e-08, +-1.642389421916366851e-08, +-1.645845376220571739e-08, +-1.649297544831441813e-08, +-1.652745923167494644e-08, +-1.656190506655470972e-08, +-1.659631290728729642e-08, +-1.663068270829513090e-08, +-1.666501442407169231e-08, +-1.669930800918816848e-08, +-1.673356341829986487e-08, +-1.676778060612842685e-08, +-1.680195952748468306e-08, +-1.683610013725268090e-08, +-1.687020239038909419e-08, +-1.690426624193847645e-08, +-1.693829164701532095e-08, +-1.697227856081853641e-08, +-1.700622693862203697e-08, +-1.704013673577290917e-08, +-1.707400790770605637e-08, +-1.710784040992693049e-08, +-1.714163419802710949e-08, +-1.717538922766361126e-08, +-1.720910545458961177e-08, +-1.724278283462069612e-08, +-1.727642132365742072e-08, +-1.731002087768359272e-08, +-1.734358145275062311e-08, +-1.737710300499961240e-08, +-1.741058549064569049e-08, +-1.744402886597788754e-08, +-1.747743308737361637e-08, +-1.751079811128120228e-08, +-1.754412389423435882e-08, +-1.757741039284233432e-08, +-1.761065756378898222e-08, +-1.764386536384648560e-08, +-1.767703374985818823e-08, +-1.771016267875464188e-08, +-1.774325210753604692e-08, +-1.777630199328663207e-08, +-1.780931229317293378e-08, +-1.784228296443487270e-08, +-1.787521396439945832e-08, +-1.790810525046201867e-08, +-1.794095678010842164e-08, +-1.797376851089963651e-08, +-1.800654040046955018e-08, +-1.803927240654753597e-08, +-1.807196448692565096e-08, +-1.810461659948794794e-08, +-1.813722870219355460e-08, +-1.816980075307675297e-08, +-1.820233271026125323e-08, +-1.823482453194260784e-08, +-1.826727617640440445e-08, +-1.829968760200062706e-08, +-1.833205876717024426e-08, +-1.836438963043526689e-08, +-1.839668015039168227e-08, +-1.842893028572352278e-08, +-1.846113999518549513e-08, +-1.849330923761757512e-08, +-1.852543797194439550e-08, +-1.855752615715888438e-08, +-1.858957375235130256e-08, +-1.862158071667678827e-08, +-1.865354700937725758e-08, +-1.868547258977977656e-08, +-1.871735741728131795e-08, +-1.874920145137014547e-08, +-1.878100465160749670e-08, +-1.881276697764185691e-08, +-1.884448838919885758e-08, +-1.887616884608067083e-08, +-1.890780830817948920e-08, +-1.893940673546065780e-08, +-1.897096408797824840e-08, +-1.900248032585796002e-08, +-1.903395540931136296e-08, +-1.906538929863547195e-08, +-1.909678195419625550e-08, +-1.912813333645768979e-08, +-1.915944340594958797e-08, +-1.919071212328925241e-08, +-1.922193944917950604e-08, +-1.925312534439438212e-08, +-1.928426976979951918e-08, +-1.931537268633745709e-08, +-1.934643405502623086e-08, +-1.937745383698039420e-08, +-1.940843199337951393e-08, +-1.943936848549673087e-08, +-1.947026327468212353e-08, +-1.950111632236328056e-08, +-1.953192759005827095e-08, +-1.956269703935931876e-08, +-1.959342463194655088e-08, +-1.962411032957590367e-08, +-1.965475409409254970e-08, +-1.968535588741452296e-08, +-1.971591567154665842e-08, +-1.974643340857980131e-08, +-1.977690906067660939e-08, +-1.980734259009206368e-08, +-1.983773395915893657e-08, +-1.986808313028602168e-08, +-1.989839006597919714e-08, +-1.992865472881002915e-08, +-1.995887708144468693e-08, +-1.998905708662670091e-08, +-2.001919470717763443e-08, +-2.004928990601025578e-08, +-2.007934264611236184e-08, +-2.010935289056011552e-08, +-2.013932060250891705e-08, +-2.016924574519273555e-08, +-2.019912828193658295e-08, +-2.022896817614073472e-08, +-2.025876539129548010e-08, +-2.028851989096337082e-08, +-2.031823163880009254e-08, +-2.034790059853794772e-08, +-2.037752673399225132e-08, +-2.040711000906691928e-08, +-2.043665038773827564e-08, +-2.046614783407581805e-08, +-2.049560231222764287e-08, +-2.052501378642036242e-08, +-2.055438222097229691e-08, +-2.058370758027733114e-08, +-2.061298982881865895e-08, +-2.064222893115922431e-08, +-2.067142485194076180e-08, +-2.070057755589706460e-08, +-2.072968700783767906e-08, +-2.075875317266256903e-08, +-2.078777601534634970e-08, +-2.081675550095139688e-08, +-2.084569159462610979e-08, +-2.087458426159639122e-08, +-2.090343346717891873e-08, +-2.093223917676502789e-08, +-2.096100135583373874e-08, +-2.098971996995214289e-08, +-2.101839498476034553e-08, +-2.104702636599255852e-08, +-2.107561407945907450e-08, +-2.110415809105955469e-08, +-2.113265836677446263e-08, +-2.116111487266371753e-08, +-2.118952757487939974e-08, +-2.121789643965012366e-08, +-2.124622143329576821e-08, +-2.127450252221108206e-08, +-2.130273967287907075e-08, +-2.133093285186943166e-08, +-2.135908202582991822e-08, +-2.138718716149961126e-08, +-2.141524822569258706e-08, +-2.144326518531176115e-08, +-2.147123800734779964e-08, +-2.149916665886574877e-08, +-2.152705110702452980e-08, +-2.155489131906148076e-08, +-2.158268726229825251e-08, +-2.161043890414605644e-08, +-2.163814621209056339e-08, +-2.166580915371163034e-08, +-2.169342769666620416e-08, +-2.172100180870243006e-08, +-2.174853145764454060e-08, +-2.177601661140526016e-08, +-2.180345723798424647e-08, +-2.183085330546028536e-08, +-2.185820478200336760e-08, +-2.188551163585979302e-08, +-2.191277383536422751e-08, +-2.193999134894003387e-08, +-2.196716414508427008e-08, +-2.199429219239347749e-08, +-2.202137545953520261e-08, +-2.204841391526684033e-08, +-2.207540752843500523e-08, +-2.210235626796098314e-08, +-2.212926010286045775e-08, +-2.215611900222967019e-08, +-2.218293293524568048e-08, +-2.220970187117827886e-08, +-2.223642577937534145e-08, +-2.226310462927515520e-08, +-2.228973839039796741e-08, +-2.231632703234486080e-08, +-2.234287052480999906e-08, +-2.236936883756557878e-08, +-2.239582194047565332e-08, +-2.242222980347826569e-08, +-2.244859239661164039e-08, +-2.247490968998521886e-08, +-2.250118165379905853e-08, +-2.252740825834221484e-08, +-2.255358947397942033e-08, +-2.257972527117010319e-08, +-2.260581562045453692e-08, +-2.263186049245312897e-08, +-2.265785985788455916e-08, +-2.268381368753842647e-08, +-2.270972195229971041e-08, +-2.273558462313511594e-08, +-2.276140167109230916e-08, +-2.278717306731255991e-08, +-2.281289878301536949e-08, +-2.283857878951288670e-08, +-2.286421305819406244e-08, +-2.288980156053769264e-08, +-2.291534426811017498e-08, +-2.294084115255857707e-08, +-2.296629218562142628e-08, +-2.299169733911548467e-08, +-2.301705658494632375e-08, +-2.304236989510972071e-08, +-2.306763724167586925e-08, +-2.309285859681522724e-08, +-2.311803393276933718e-08, +-2.314316322187602206e-08, +-2.316824643655443992e-08, +-2.319328354930589109e-08, +-2.321827453272500179e-08, +-2.324321935948568509e-08, +-2.326811800235243370e-08, +-2.329297043417329877e-08, +-2.331777662787793781e-08, +-2.334253655648960875e-08, +-2.336725019311087962e-08, +-2.339191751093670458e-08, +-2.341653848324008396e-08, +-2.344111308338363482e-08, +-2.346564128481973654e-08, +-2.349012306107648864e-08, +-2.351455838578178169e-08, +-2.353894723263684410e-08, +-2.356328957543377504e-08, +-2.358758538805473710e-08, +-2.361183464445878756e-08, +-2.363603731869972238e-08, +-2.366019338491129940e-08, +-2.368430281731810420e-08, +-2.370836559022842643e-08, +-2.373238167803266499e-08, +-2.375635105521524605e-08, +-2.378027369633994557e-08, +-2.380414957606313079e-08, +-2.382797866911976105e-08, +-2.385176095033477307e-08, +-2.387549639462161190e-08, +-2.389918497697500798e-08, +-2.392282667248203488e-08, +-2.394642145630873878e-08, +-2.396996930371104726e-08, +-2.399347019003448153e-08, +-2.401692409070265193e-08, +-2.404033098123386445e-08, +-2.406369083722892476e-08, +-2.408700363437016216e-08, +-2.411026934843853231e-08, +-2.413348795528784237e-08, +-2.415665943086779947e-08, +-2.417978375121105712e-08, +-2.420286089243290749e-08, +-2.422589083074231266e-08, +-2.424887354242846795e-08, +-2.427180900387221035e-08, +-2.429469719153553980e-08, +-2.431753808197305416e-08, +-2.434033165181879373e-08, +-2.436307787779655449e-08, +-2.438577673672038116e-08, +-2.440842820548253335e-08, +-2.443103226106972805e-08, +-2.445358888055109926e-08, +-2.447609804108178126e-08, +-2.449855971990835482e-08, +-2.452097389435567515e-08, +-2.454334054184343867e-08, +-2.456565963987429479e-08, +-2.458793116603406099e-08, +-2.461015509800232721e-08, +-2.463233141353915155e-08, +-2.465446009049610805e-08, +-2.467654110680895128e-08, +-2.469857444049664025e-08, +-2.472056006967176417e-08, +-2.474249797252778741e-08, +-2.476438812735041815e-08, +-2.478623051250563753e-08, +-2.480802510644919562e-08, +-2.482977188772579751e-08, +-2.485147083496247257e-08, +-2.487312192687872902e-08, +-2.489472514227252155e-08, +-2.491628046003672216e-08, +-2.493778785914784737e-08, +-2.495924731866522773e-08, +-2.498065881774210522e-08, +-2.500202233561268299e-08, +-2.502333785160260400e-08, +-2.504460534512191677e-08, +-2.506582479566402311e-08, +-2.508699618281646795e-08, +-2.510811948624720144e-08, +-2.512919468571712903e-08, +-2.515022176106712463e-08, +-2.517120069222819179e-08, +-2.519213145922054381e-08, +-2.521301404214666540e-08, +-2.523384842120148364e-08, +-2.525463457666039705e-08, +-2.527537248888866246e-08, +-2.529606213834196075e-08, +-2.531670350555509429e-08, +-2.533729657115734602e-08, +-2.535784131585956220e-08, +-2.537833772046364181e-08, +-2.539878576585670991e-08, +-2.541918543300910594e-08, +-2.543953670298468044e-08, +-2.545983955692894985e-08, +-2.548009397607974726e-08, +-2.550029994175516545e-08, +-2.552045743536362202e-08, +-2.554056643840281380e-08, +-2.556062693245284801e-08, +-2.558063889918637020e-08, +-2.560060232035619956e-08, +-2.562051717780574150e-08, +-2.564038345346841524e-08, +-2.566020112935599381e-08, +-2.567997018757901565e-08, +-2.569969061032454330e-08, +-2.571936237987063913e-08, +-2.573898547858570684e-08, +-2.575855988891760909e-08, +-2.577808559340865275e-08, +-2.579756257468497445e-08, +-2.581699081545639836e-08, +-2.583637029852654098e-08, +-2.585570100678043326e-08, +-2.587498292319412909e-08, +-2.589421603082690334e-08, +-2.591340031283007957e-08, +-2.593253575243566450e-08, +-2.595162233296594337e-08, +-2.597066003783323835e-08, +-2.598964885052878466e-08, +-2.600858875464210973e-08, +-2.602747973383934123e-08, +-2.604632177187784153e-08, +-2.606511485260504968e-08, +-2.608385895994843609e-08, +-2.610255407792914772e-08, +-2.612120019065303815e-08, +-2.613979728230847717e-08, +-2.615834533718095882e-08, +-2.617684433963198843e-08, +-2.619529427411828641e-08, +-2.621369512518027063e-08, +-2.623204687744252625e-08, +-2.625034951562307343e-08, +-2.626860302452135006e-08, +-2.628680738902900151e-08, +-2.630496259411691707e-08, +-2.632306862485381500e-08, +-2.634112546638538108e-08, +-2.635913310394852256e-08, +-2.637709152286973698e-08, +-2.639500070855625137e-08, +-2.641286064650873443e-08, +-2.643067132231206181e-08, +-2.644843272163408533e-08, +-2.646614483023957589e-08, +-2.648380763396952081e-08, +-2.650142111875941778e-08, +-2.651898527062963651e-08, +-2.653650007568389013e-08, +-2.655396552011887678e-08, +-2.657138159021351968e-08, +-2.658874827233759625e-08, +-2.660606555294595448e-08, +-2.662333341857736480e-08, +-2.664055185586335765e-08, +-2.665772085151806244e-08, +-2.667484039234676720e-08, +-2.669191046523636956e-08, +-2.670893105716347328e-08, +-2.672590215519438155e-08, +-2.674282374647489956e-08, +-2.675969581824799313e-08, +-2.677651835783366177e-08, +-2.679329135264579327e-08, +-2.681001479018255523e-08, +-2.682668865802647109e-08, +-2.684331294385236115e-08, +-2.685988763541724096e-08, +-2.687641272056873874e-08, +-2.689288818723992057e-08, +-2.690931402344745731e-08, +-2.692569021730077654e-08, +-2.694201675699143495e-08, +-2.695829363080242580e-08, +-2.697452082709810711e-08, +-2.699069833433262240e-08, +-2.700682614104845811e-08, +-2.702290423587172860e-08, +-2.703893260751954142e-08, +-2.705491124479062038e-08, +-2.707084013657323657e-08, +-2.708671927184486750e-08, +-2.710254863966375334e-08, +-2.711832822918114242e-08, +-2.713405802963183493e-08, +-2.714973803033679680e-08, +-2.716536822070767284e-08, +-2.718094859023667523e-08, +-2.719647912850891844e-08, +-2.721195982519168580e-08, +-2.722739067004358465e-08, +-2.724277165290450443e-08, +-2.725810276370415975e-08, +-2.727338399246011513e-08, +-2.728861532927337776e-08, +-2.730379676433606381e-08, +-2.731892828792172703e-08, +-2.733400989039307801e-08, +-2.734904156220194777e-08, +-2.736402329388138988e-08, +-2.737895507605655946e-08, +-2.739383689943583928e-08, +-2.740866875481439324e-08, +-2.742345063307733952e-08, +-2.743818252519049270e-08, +-2.745286442221186162e-08, +-2.746749631528407237e-08, +-2.748207819563332277e-08, +-2.749661005457760122e-08, +-2.751109188351703513e-08, +-2.752552367394174258e-08, +-2.753990541742514862e-08, +-2.755423710563116527e-08, +-2.756851873030496678e-08, +-2.758275028328134413e-08, +-2.759693175648350398e-08, +-2.761106314191469762e-08, +-2.762514443167347084e-08, +-2.763917561793673322e-08, +-2.765315669297113020e-08, +-2.766708764913187511e-08, +-2.768096847885535414e-08, +-2.769479917466946948e-08, +-2.770857972918641297e-08, +-2.772231013510206733e-08, +-2.773599038520361283e-08, +-2.774962047236049780e-08, +-2.776320038953150281e-08, +-2.777673012976009844e-08, +-2.779020968617419392e-08, +-2.780363905199205963e-08, +-2.781701822051436313e-08, +-2.783034718513208020e-08, +-2.784362593931765400e-08, +-2.785685447663200625e-08, +-2.787003279072370010e-08, +-2.788316087532478438e-08, +-2.789623872425679562e-08, +-2.790926633142216865e-08, +-2.792224369081498987e-08, +-2.793517079651295050e-08, +-2.794804764267679069e-08, +-2.796087422356077826e-08, +-2.797365053349743559e-08, +-2.798637656691080437e-08, +-2.799905231830885529e-08, +-2.801167778228332933e-08, +-2.802425295351633526e-08, +-2.803677782677224994e-08, +-2.804925239690520593e-08, +-2.806167665885055172e-08, +-2.807405060763211100e-08, +-2.808637423836105446e-08, +-2.809864754623104914e-08, +-2.811087052652558068e-08, +-2.812304317460966162e-08, +-2.813516548593612464e-08, +-2.814723745604568867e-08, +-2.815925908055941837e-08, +-2.817123035519187959e-08, +-2.818315127573530712e-08, +-2.819502183807360723e-08, +-2.820684203817422147e-08, +-2.821861187208786536e-08, +-2.823033133595547664e-08, +-2.824200042599990379e-08, +-2.825361913853272199e-08, +-2.826518746994949502e-08, +-2.827670541672918302e-08, +-2.828817297544060112e-08, +-2.829959014273455125e-08, +-2.831095691535094919e-08, +-2.832227329011075124e-08, +-2.833353926392310771e-08, +-2.834475483378411552e-08, +-2.835591999676976069e-08, +-2.836703475004950725e-08, +-2.837809909087083231e-08, +-2.838911301656952609e-08, +-2.840007652456869928e-08, +-2.841098961237235426e-08, +-2.842185227757420937e-08, +-2.843266451785133962e-08, +-2.844342633096322046e-08, +-2.845413771476148515e-08, +-2.846479866717557158e-08, +-2.847540918622543767e-08, +-2.848596927001269068e-08, +-2.849647891672794580e-08, +-2.850693812464239888e-08, +-2.851734689211448682e-08, +-2.852770521758917624e-08, +-2.853801309959371507e-08, +-2.854827053674374378e-08, +-2.855847752773570843e-08, +-2.856863407135366344e-08, +-2.857874016646793158e-08, +-2.858879581202941619e-08, +-2.859880100707840250e-08, +-2.860875575073833713e-08, +-2.861866004221468000e-08, +-2.862851388080436401e-08, +-2.863831726588175274e-08, +-2.864807019691176292e-08, +-2.865777267344156278e-08, +-2.866742469510122723e-08, +-2.867702626160947516e-08, +-2.868657737276656230e-08, +-2.869607802845980018e-08, +-2.870552822865985037e-08, +-2.871492797342044319e-08, +-2.872427726288329456e-08, +-2.873357609727165719e-08, +-2.874282447689623338e-08, +-2.875202240214831924e-08, +-2.876116987350758359e-08, +-2.877026689153564236e-08, +-2.877931345687917541e-08, +-2.878830957027099530e-08, +-2.879725523252435291e-08, +-2.880615044454094791e-08, +-2.881499520730503918e-08, +-2.882378952188342504e-08, +-2.883253338943047902e-08, +-2.884122681118214464e-08, +-2.884986978846093148e-08, +-2.885846232267208375e-08, +-2.886700441530343137e-08, +-2.887549606793027694e-08, +-2.888393728220928125e-08, +-2.889232805988383333e-08, +-2.890066840277793590e-08, +-2.890895831280169789e-08, +-2.891719779194972970e-08, +-2.892538684229882376e-08, +-2.893352546601216325e-08, +-2.894161366533297597e-08, +-2.894965144259231643e-08, +-2.895763880020336828e-08, +-2.896557574066125896e-08, +-2.897346226654865810e-08, +-2.898129838052882258e-08, +-2.898908408535097650e-08, +-2.899681938384696938e-08, +-2.900450427893051515e-08, +-2.901213877360244970e-08, +-2.901972287094418626e-08, +-2.902725657412371408e-08, +-2.903473988638917950e-08, +-2.904217281107361418e-08, +-2.904955535159476958e-08, +-2.905688751145173549e-08, +-2.906416929422948623e-08, +-2.907140070359316313e-08, +-2.907858174329319978e-08, +-2.908571241716448822e-08, +-2.909279272912160115e-08, +-2.909982268316614057e-08, +-2.910680228338056045e-08, +-2.911373153393085338e-08, +-2.912061043906780788e-08, +-2.912743900312187327e-08, +-2.913421723051054807e-08, +-2.914094512573108090e-08, +-2.914762269336684976e-08, +-2.915424993808085376e-08, +-2.916082686462058682e-08, +-2.916735347781756459e-08, +-2.917382978258389655e-08, +-2.918025578391757011e-08, +-2.918663148689582316e-08, +-2.919295689668043147e-08, +-2.919923201851722560e-08, +-2.920545685773097229e-08, +-2.921163141973431133e-08, +-2.921775571001777316e-08, +-2.922382973415613820e-08, +-2.922985349780878761e-08, +-2.923582700671374095e-08, +-2.924175026669500155e-08, +-2.924762328365755371e-08, +-2.925344606358749510e-08, +-2.925921861255596743e-08, +-2.926494093671418685e-08, +-2.927061304229770881e-08, +-2.927623493562235507e-08, +-2.928180662308845218e-08, +-2.928732811117566982e-08, +-2.929279940644764315e-08, +-2.929822051555091397e-08, +-2.930359144521090402e-08, +-2.930891220224003792e-08, +-2.931418279352823055e-08, +-2.931940322604889241e-08, +-2.932457350685914798e-08, +-2.932969364309449875e-08, +-2.933476364197581790e-08, +-2.933978351080406289e-08, +-2.934475325696060969e-08, +-2.934967288791274196e-08, +-2.935454241120500862e-08, +-2.935936183446641044e-08, +-2.936413116540710783e-08, +-2.936885041181686906e-08, +-2.937351958157024182e-08, +-2.937813868262046512e-08, +-2.938270772300511732e-08, +-2.938722671084019680e-08, +-2.939169565432470787e-08, +-2.939611456173938690e-08, +-2.940048344144525308e-08, +-2.940480230188604370e-08, +-2.940907115158456457e-08, +-2.941328999914676968e-08, +-2.941745885325984881e-08, +-2.942157772268930917e-08, +-2.942564661628656233e-08, +-2.942966554297908080e-08, +-2.943363451177911646e-08, +-2.943755353177814855e-08, +-2.944142261214778367e-08, +-2.944524176214285267e-08, +-2.944901099109715902e-08, +-2.945273030842637722e-08, +-2.945639972362683847e-08, +-2.946001924627391276e-08, +-2.946358888602633002e-08, +-2.946710865262124353e-08, +-2.947057855587878600e-08, +-2.947399860569702380e-08, +-2.947736881205562302e-08, +-2.948068918501608438e-08, +-2.948395973471721358e-08, +-2.948718047138235419e-08, +-2.949035140531152280e-08, +-2.949347254688638535e-08, +-2.949654390657029682e-08, +-2.949956549490410247e-08, +-2.950253732251123328e-08, +-2.950545940009374871e-08, +-2.950833173843488772e-08, +-2.951115434839758316e-08, +-2.951392724092332026e-08, +-2.951665042703637510e-08, +-2.951932391783849419e-08, +-2.952194772451331824e-08, +-2.952452185832225616e-08, +-2.952704633060749601e-08, +-2.952952115279185280e-08, +-2.953194633637613144e-08, +-2.953432189294272332e-08, +-2.953664783415174833e-08, +-2.953892417174379449e-08, +-2.954115091753985510e-08, +-2.954332808343820858e-08, +-2.954545568141888196e-08, +-2.954753372354021974e-08, +-2.954956222193870521e-08, +-2.955154118883353969e-08, +-2.955347063651939320e-08, +-2.955535057737275381e-08, +-2.955718102384780172e-08, +-2.955896198847923488e-08, +-2.956069348387920513e-08, +-2.956237552273946225e-08, +-2.956400811783193629e-08, +-2.956559128200592846e-08, +-2.956712502819090039e-08, +-2.956860936939384039e-08, +-2.957004431870128837e-08, +-2.957142988927914067e-08, +-2.957276609437046954e-08, +-2.957405294729834225e-08, +-2.957529046146421299e-08, +-2.957647865034743322e-08, +-2.957761752750711113e-08, +-2.957870710657902796e-08, +-2.957974740127917499e-08, +-2.958073842540136464e-08, +-2.958168019281639341e-08, +-2.958257271747572441e-08, +-2.958341601340731844e-08, +-2.958421009471812213e-08, +-2.958495497559316792e-08, +-2.958565067029451205e-08, +-2.958629719316396416e-08, +-2.958689455861994409e-08, +-2.958744278116002291e-08, +-2.958794187535828259e-08, +-2.958839185586800933e-08, +-2.958879273741960237e-08, +-2.958914453482085861e-08, +-2.958944726295853761e-08, +-2.958970093679534735e-08, +-2.958990557137294522e-08, +-2.959006118181051861e-08, +-2.959016778330346802e-08, +-2.959022539112624593e-08, +-2.959023402062950472e-08, +-2.959019368724218444e-08, +-2.959010440647018272e-08, +-2.958996619389581215e-08, +-2.958977906518016265e-08, +-2.958954303606034870e-08, +-2.958925812235129598e-08, +-2.958892433994416977e-08, +-2.958854170480751642e-08, +-2.958811023298731634e-08, +-2.958762994060582259e-08, +-2.958710084386250057e-08, +-2.958652295903331999e-08, +-2.958589630247149265e-08, +-2.958522089060655598e-08, +-2.958449673994430355e-08, +-2.958372386706799933e-08, +-2.958290228863670020e-08, +-2.958203202138667871e-08, +-2.958111308213023853e-08, +-2.958014548775568139e-08, +-2.957912925522849818e-08, +-2.957806440158965179e-08, +-2.957695094395722807e-08, +-2.957578889952446063e-08, +-2.957457828556119319e-08, +-2.957331911941366791e-08, +-2.957201141850369152e-08, +-2.957065520032959491e-08, +-2.956925048246480703e-08, +-2.956779728255898649e-08, +-2.956629561833811751e-08, +-2.956474550760273312e-08, +-2.956314696823044969e-08, +-2.956150001817379304e-08, +-2.955980467546086353e-08, +-2.955806095819562390e-08, +-2.955626888455700262e-08, +-2.955442847279992621e-08, +-2.955253974125422073e-08, +-2.955060270832554817e-08, +-2.954861739249454617e-08, +-2.954658381231681476e-08, +-2.954450198642369729e-08, +-2.954237193352108590e-08, +-2.954019367239045388e-08, +-2.953796722188769101e-08, +-2.953569260094398367e-08, +-2.953336982856537145e-08, +-2.953099892383261152e-08, +-2.952857990590165508e-08, +-2.952611279400247606e-08, +-2.952359760744007037e-08, +-2.952103436559437979e-08, +-2.951842308791908098e-08, +-2.951576379394301484e-08, +-2.951305650326951818e-08, +-2.951030123557555015e-08, +-2.950749801061349890e-08, +-2.950464684820899772e-08, +-2.950174776826250670e-08, +-2.949880079074850201e-08, +-2.949580593571525098e-08, +-2.949276322328532821e-08, +-2.948967267365567186e-08, +-2.948653430709673325e-08, +-2.948334814395252325e-08, +-2.948011420464164124e-08, +-2.947683250965569357e-08, +-2.947350307956038544e-08, +-2.947012593499499147e-08, +-2.946670109667256418e-08, +-2.946322858537936489e-08, +-2.945970842197526739e-08, +-2.945614062739341048e-08, +-2.945252522264075388e-08, +-2.944886222879687717e-08, +-2.944515166701494257e-08, +-2.944139355852157590e-08, +-2.943758792461593016e-08, +-2.943373478667071125e-08, +-2.942983416613136072e-08, +-2.942588608451629398e-08, +-2.942189056341688049e-08, +-2.941784762449727496e-08, +-2.941375728949425857e-08, +-2.940961958021772864e-08, +-2.940543451854994756e-08, +-2.940120212644559575e-08, +-2.939692242593208263e-08, +-2.939259543910940107e-08, +-2.938822118814975352e-08, +-2.938379969529752879e-08, +-2.937933098286996056e-08, +-2.937481507325609501e-08, +-2.937025198891724080e-08, +-2.936564175238670111e-08, +-2.936098438626991918e-08, +-2.935627991324442538e-08, +-2.935152835605955269e-08, +-2.934672973753626129e-08, +-2.934188408056803194e-08, +-2.933699140811937377e-08, +-2.933205174322671757e-08, +-2.932706510899822727e-08, +-2.932203152861349879e-08, +-2.931695102532363616e-08, +-2.931182362245092396e-08, +-2.930664934338982324e-08, +-2.930142821160531717e-08, +-2.929616025063388377e-08, +-2.929084548408321472e-08, +-2.928548393563210281e-08, +-2.928007562903056112e-08, +-2.927462058809909834e-08, +-2.926911883672993309e-08, +-2.926357039888564732e-08, +-2.925797529859968256e-08, +-2.925233355997635978e-08, +-2.924664520719051215e-08, +-2.924091026448791186e-08, +-2.923512875618448260e-08, +-2.922930070666683563e-08, +-2.922342614039230616e-08, +-2.921750508188823533e-08, +-2.921153755575248309e-08, +-2.920552358665274659e-08, +-2.919946319932742708e-08, +-2.919335641858490197e-08, +-2.918720326930323038e-08, +-2.918100377643129461e-08, +-2.917475796498691421e-08, +-2.916846586005852680e-08, +-2.916212748680409617e-08, +-2.915574287045102295e-08, +-2.914931203629697514e-08, +-2.914283500970874324e-08, +-2.913631181612287223e-08, +-2.912974248104533072e-08, +-2.912312703005162674e-08, +-2.911646548878665883e-08, +-2.910975788296411058e-08, +-2.910300423836756234e-08, +-2.909620458084914455e-08, +-2.908935893633034181e-08, +-2.908246733080208216e-08, +-2.907552979032345335e-08, +-2.906854634102332076e-08, +-2.906151700909814698e-08, +-2.905444182081440714e-08, +-2.904732080250676918e-08, +-2.904015398057806070e-08, +-2.903294138150081415e-08, +-2.902568303181488127e-08, +-2.901837895812909071e-08, +-2.901102918712097675e-08, +-2.900363374553546906e-08, +-2.899619266018671906e-08, +-2.898870595795610482e-08, +-2.898117366579346516e-08, +-2.897359581071754968e-08, +-2.896597241981373902e-08, +-2.895830352023607315e-08, +-2.895058913920575245e-08, +-2.894282930401303036e-08, +-2.893502404201420571e-08, +-2.892717338063428960e-08, +-2.891927734736597302e-08, +-2.891133596976853501e-08, +-2.890334927546976833e-08, +-2.889531729216385193e-08, +-2.888724004761267779e-08, +-2.887911756964594682e-08, +-2.887094988615876678e-08, +-2.886273702511570874e-08, +-2.885447901454657854e-08, +-2.884617588254842188e-08, +-2.883782765728628531e-08, +-2.882943436699050312e-08, +-2.882099603995915236e-08, +-2.881251270455628932e-08, +-2.880398438921331934e-08, +-2.879541112242806374e-08, +-2.878679293276406831e-08, +-2.877812984885229736e-08, +-2.876942189938888712e-08, +-2.876066911313752137e-08, +-2.875187151892749255e-08, +-2.874302914565333451e-08, +-2.873414202227780032e-08, +-2.872521017782706796e-08, +-2.871623364139537913e-08, +-2.870721244214144930e-08, +-2.869814660929015185e-08, +-2.868903617213274636e-08, +-2.867988116002492318e-08, +-2.867068160238885479e-08, +-2.866143752871176317e-08, +-2.865214896854641610e-08, +-2.864281595151155066e-08, +-2.863343850728988469e-08, +-2.862401666563048585e-08, +-2.861455045634665403e-08, +-2.860503990931758231e-08, +-2.859548505448763571e-08, +-2.858588592186472984e-08, +-2.857624254152357022e-08, +-2.856655494360140381e-08, +-2.855682315830221784e-08, +-2.854704721589384462e-08, +-2.853722714670785903e-08, +-2.852736298114241403e-08, +-2.851745474965797577e-08, +-2.850750248278080433e-08, +-2.849750621110027370e-08, +-2.848746596527062866e-08, +-2.847738177601099472e-08, +-2.846725367410304219e-08, +-2.845708169039355703e-08, +-2.844686585579253504e-08, +-2.843660620127454173e-08, +-2.842630275787790168e-08, +-2.841595555670364642e-08, +-2.840556462891767494e-08, +-2.839513000574814647e-08, +-2.838465171848807453e-08, +-2.837412979849373539e-08, +-2.836356427718335123e-08, +-2.835295518604025989e-08, +-2.834230255660964254e-08, +-2.833160642050008540e-08, +-2.832086680938464514e-08, +-2.831008375499652108e-08, +-2.829925728913461054e-08, +-2.828838744365916779e-08, +-2.827747425049334259e-08, +-2.826651774162392798e-08, +-2.825551794909894825e-08, +-2.824447490503005768e-08, +-2.823338864159037672e-08, +-2.822225919101644741e-08, +-2.821108658560609924e-08, +-2.819987085772079837e-08, +-2.818861203978325542e-08, +-2.817731016427761736e-08, +-2.816596526375202846e-08, +-2.815457737081435544e-08, +-2.814314651813573442e-08, +-2.813167273844929041e-08, +-2.812015606454817199e-08, +-2.810859652928969045e-08, +-2.809699416559039977e-08, +-2.808534900642942850e-08, +-2.807366108484810254e-08, +-2.806193043394737759e-08, +-2.805015708689085670e-08, +-2.803834107690234182e-08, +-2.802648243726742528e-08, +-2.801458120133334755e-08, +-2.800263740250658844e-08, +-2.799065107425628175e-08, +-2.797862225011052601e-08, +-2.796655096366051709e-08, +-2.795443724855614098e-08, +-2.794228113850887223e-08, +-2.793008266729068208e-08, +-2.791784186873276126e-08, +-2.790555877672912323e-08, +-2.789323342523138300e-08, +-2.788086584825284671e-08, +-2.786845607986744953e-08, +-2.785600415420770756e-08, +-2.784351010546759310e-08, +-2.783097396789937153e-08, +-2.781839577581620528e-08, +-2.780577556359180307e-08, +-2.779311336565765386e-08, +-2.778040921650628260e-08, +-2.776766315068859003e-08, +-2.775487520281642687e-08, +-2.774204540756031080e-08, +-2.772917379964921139e-08, +-2.771626041387261143e-08, +-2.770330528507767798e-08, +-2.769030844817236596e-08, +-2.767726993812310532e-08, +-2.766418978995371250e-08, +-2.765106803874945686e-08, +-2.763790471965192219e-08, +-2.762469986786309303e-08, +-2.761145351864208230e-08, +-2.759816570730727539e-08, +-2.758483646923659815e-08, +-2.757146583986431074e-08, +-2.755805385468468029e-08, +-2.754460054924804687e-08, +-2.753110595916561119e-08, +-2.751757012010515311e-08, +-2.750399306779177610e-08, +-2.749037483800992226e-08, +-2.747671546660007023e-08, +-2.746301498946285120e-08, +-2.744927344255500570e-08, +-2.743549086189004198e-08, +-2.742166728354187567e-08, +-2.740780274363770274e-08, +-2.739389727836574522e-08, +-2.737995092397015582e-08, +-2.736596371675113368e-08, +-2.735193569306852759e-08, +-2.733786688933653541e-08, +-2.732375734202740654e-08, +-2.730960708767174964e-08, +-2.729541616285410552e-08, +-2.728118460421804923e-08, +-2.726691244846216665e-08, +-2.725259973234322090e-08, +-2.723824649267205620e-08, +-2.722385276631885206e-08, +-2.720941859020856060e-08, +-2.719494400132119770e-08, +-2.718042903669616087e-08, +-2.716587373342461259e-08, +-2.715127812865755027e-08, +-2.713664225960052886e-08, +-2.712196616351321083e-08, +-2.710724987771447818e-08, +-2.709249343957548078e-08, +-2.707769688652448038e-08, +-2.706286025604681087e-08, +-2.704798358567917737e-08, +-2.703306691301819272e-08, +-2.701811027571217517e-08, +-2.700311371146601552e-08, +-2.698807725804122010e-08, +-2.697300095325124220e-08, +-2.695788483496699436e-08, +-2.694272894111204084e-08, +-2.692753330966834486e-08, +-2.691229797866719273e-08, +-2.689702298619952045e-08, +-2.688170837040864107e-08, +-2.686635416949106528e-08, +-2.685096042170095166e-08, +-2.683552716534322118e-08, +-2.682005443877889093e-08, +-2.680454228042468692e-08, +-2.678899072874647633e-08, +-2.677339982226968003e-08, +-2.675776959956938611e-08, +-2.674210009927627916e-08, +-2.672639136007585602e-08, +-2.671064342070482596e-08, +-2.669485631995539876e-08, +-2.667903009667149623e-08, +-2.666316478975133960e-08, +-2.664726043814805175e-08, +-2.663131708086480992e-08, +-2.661533475696049036e-08, +-2.659931350554468214e-08, +-2.658325336578286854e-08, +-2.656715437689176513e-08, +-2.655101657813936605e-08, +-2.653484000885090964e-08, +-2.651862470839785380e-08, +-2.650237071621069395e-08, +-2.648607807176741561e-08, +-2.646974681460091586e-08, +-2.645337698429720338e-08, +-2.643696862049163977e-08, +-2.642052176287442209e-08, +-2.640403645118547416e-08, +-2.638751272521789762e-08, +-2.637095062481815386e-08, +-2.635435018988171969e-08, +-2.633771146035792469e-08, +-2.632103447624537524e-08, +-2.630431927759725177e-08, +-2.628756590451685197e-08, +-2.627077439715744512e-08, +-2.625394479572610367e-08, +-2.623707714047796255e-08, +-2.622017147172321385e-08, +-2.620322782982089301e-08, +-2.618624625517948101e-08, +-2.616922678826248953e-08, +-2.615216946957980857e-08, +-2.613507433969540262e-08, +-2.611794143922094794e-08, +-2.610077080882058718e-08, +-2.608356248921017503e-08, +-2.606631652115240446e-08, +-2.604903294546337783e-08, +-2.603171180300634679e-08, +-2.601435313469830327e-08, +-2.599695698150419251e-08, +-2.597952338443842515e-08, +-2.596205238456697166e-08, +-2.594454402300286575e-08, +-2.592699834091232227e-08, +-2.590941537950944979e-08, +-2.589179518005618780e-08, +-2.587413778386781567e-08, +-2.585644323230485628e-08, +-2.583871156677994155e-08, +-2.582094282875425231e-08, +-2.580313705973601608e-08, +-2.578529430128650255e-08, +-2.576741459501186750e-08, +-2.574949798256869167e-08, +-2.573154450566425866e-08, +-2.571355420605100949e-08, +-2.569552712553283252e-08, +-2.567746330595966693e-08, +-2.565936278923241280e-08, +-2.564122561729703836e-08, +-2.562305183215164404e-08, +-2.560484147584048035e-08, +-2.558659459045394123e-08, +-2.556831121813517491e-08, +-2.554999140107042570e-08, +-2.553163518149630001e-08, +-2.551324260169720534e-08, +-2.549481370400266362e-08, +-2.547634853079419998e-08, +-2.545784712449608493e-08, +-2.543930952758241172e-08, +-2.542073578257598794e-08, +-2.540212593204321026e-08, +-2.538348001860062567e-08, +-2.536479808490932981e-08, +-2.534608017367878191e-08, +-2.532732632766673860e-08, +-2.530853658967468792e-08, +-2.528971100255331531e-08, +-2.527084960919682911e-08, +-2.525195245254997181e-08, +-2.523301957560179299e-08, +-2.521405102138643019e-08, +-2.519504683298689409e-08, +-2.517600705352883158e-08, +-2.515693172618918466e-08, +-2.513782089418566541e-08, +-2.511867460078399547e-08, +-2.509949288929784649e-08, +-2.508027580308233849e-08, +-2.506102338554180211e-08, +-2.504173568012328031e-08, +-2.502241273032074693e-08, +-2.500305457967556006e-08, +-2.498366127177016549e-08, +-2.496423285023556120e-08, +-2.494476935874464353e-08, +-2.492527084101917866e-08, +-2.490573734082395275e-08, +-2.488616890196721206e-08, +-2.486656556830468630e-08, +-2.484692738373332527e-08, +-2.482725439219877653e-08, +-2.480754663768903598e-08, +-2.478780416423449087e-08, +-2.476802701591533798e-08, +-2.474821523684817000e-08, +-2.472836887120197327e-08, +-2.470848796318362561e-08, +-2.468857255704609203e-08, +-2.466862269708857363e-08, +-2.464863842764953613e-08, +-2.462861979311483606e-08, +-2.460856683791020669e-08, +-2.458847960650966217e-08, +-2.456835814342784113e-08, +-2.454820249322166769e-08, +-2.452801270049397117e-08, +-2.450778880988723924e-08, +-2.448753086609140334e-08, +-2.446723891383715177e-08, +-2.444691299789562857e-08, +-2.442655316308722809e-08, +-2.440615945426634846e-08, +-2.438573191633761750e-08, +-2.436527059424530484e-08, +-2.434477553297384139e-08, +-2.432424677755506873e-08, +-2.430368437305793908e-08, +-2.428308836459606248e-08, +-2.426245879732779615e-08, +-2.424179571644614954e-08, +-2.422109916719428242e-08, +-2.420036919485102589e-08, +-2.417960584474086479e-08, +-2.415880916222599351e-08, +-2.413797919271459763e-08, +-2.411711598165457074e-08, +-2.409621957453235636e-08, +-2.407529001688185830e-08, +-2.405432735426979960e-08, +-2.403333163231173344e-08, +-2.401230289666110116e-08, +-2.399124119300970544e-08, +-2.397014656709610451e-08, +-2.394901906469367429e-08, +-2.392785873161892321e-08, +-2.390666561373207453e-08, +-2.388543975692601522e-08, +-2.386418120714243923e-08, +-2.384289001035711041e-08, +-2.382156621258856778e-08, +-2.380020985989751010e-08, +-2.377882099838009240e-08, +-2.375739967417627057e-08, +-2.373594593346256851e-08, +-2.371445982245852020e-08, +-2.369294138741939053e-08, +-2.367139067464452977e-08, +-2.364980773047074958e-08, +-2.362819260127146270e-08, +-2.360654533346517643e-08, +-2.358486597350394523e-08, +-2.356315456788118590e-08, +-2.354141116313263708e-08, +-2.351963580582495083e-08, +-2.349782854257248437e-08, +-2.347598942002183179e-08, +-2.345411848486062197e-08, +-2.343221578381742921e-08, +-2.341028136365445768e-08, +-2.338831527117646173e-08, +-2.336631755322311925e-08, +-2.334428825667366723e-08, +-2.332222742844848994e-08, +-2.330013511550059895e-08, +-2.327801136482517881e-08, +-2.325585622345098768e-08, +-2.323366973844956218e-08, +-2.321145195692767022e-08, +-2.318920292602774773e-08, +-2.316692269293336800e-08, +-2.314461130486092022e-08, +-2.312226880907014445e-08, +-2.309989525285207466e-08, +-2.307749068353717487e-08, +-2.305505514849559060e-08, +-2.303258869512920132e-08, +-2.301009137088129518e-08, +-2.298756322322798616e-08, +-2.296500429968392822e-08, +-2.294241464780291422e-08, +-2.291979431517004414e-08, +-2.289714334941091343e-08, +-2.287446179818325182e-08, +-2.285174970918592312e-08, +-2.282900713015171544e-08, +-2.280623410884717249e-08, +-2.278343069307838052e-08, +-2.276059693068299759e-08, +-2.273773286953947504e-08, +-2.271483855755921243e-08, +-2.269191404268654105e-08, +-2.266895937290764423e-08, +-2.264597459623760366e-08, +-2.262295976073022965e-08, +-2.259991491447456045e-08, +-2.257684010559129220e-08, +-2.255373538224213262e-08, +-2.253060079261744631e-08, +-2.250743638494672348e-08, +-2.248424220749022548e-08, +-2.246101830854762384e-08, +-2.243776473645045973e-08, +-2.241448153956307365e-08, +-2.239116876628768768e-08, +-2.236782646505624617e-08, +-2.234445468433996467e-08, +-2.232105347264187872e-08, +-2.229762287849603322e-08, +-2.227416295047737549e-08, +-2.225067373718499990e-08, +-2.222715528726049476e-08, +-2.220360764937536251e-08, +-2.218003087223194290e-08, +-2.215642500457256161e-08, +-2.213279009516621920e-08, +-2.210912619281779606e-08, +-2.208543334636810195e-08, +-2.206171160468561422e-08, +-2.203796101667608623e-08, +-2.201418163127466278e-08, +-2.199037349745263310e-08, +-2.196653666420971500e-08, +-2.194267118058330601e-08, +-2.191877709564074429e-08, +-2.189485445847892481e-08, +-2.187090331823424870e-08, +-2.184692372406532522e-08, +-2.182291572517188444e-08, +-2.179887937078231991e-08, +-2.177481471015387389e-08, +-2.175072179258206397e-08, +-2.172660066738764007e-08, +-2.170245138392582566e-08, +-2.167827399158709534e-08, +-2.165406853978403924e-08, +-2.162983507797057341e-08, +-2.160557365562493963e-08, +-2.158128432225896652e-08, +-2.155696712741829454e-08, +-2.153262212067410750e-08, +-2.150824935163306199e-08, +-2.148384886992783773e-08, +-2.145942072522733171e-08, +-2.143496496722872057e-08, +-2.141048164565721905e-08, +-2.138597081027252873e-08, +-2.136143251085983164e-08, +-2.133686679724106973e-08, +-2.131227371926177945e-08, +-2.128765332680027674e-08, +-2.126300566976883829e-08, +-2.123833079809991077e-08, +-2.121362876176611202e-08, +-2.118889961076207284e-08, +-2.116414339511489911e-08, +-2.113936016488407922e-08, +-2.111454997015260998e-08, +-2.108971286103754162e-08, +-2.106484888768164303e-08, +-2.103995810025814654e-08, +-2.101504054897239892e-08, +-2.099009628405296094e-08, +-2.096512535576183463e-08, +-2.094012781438506983e-08, +-2.091510371024292523e-08, +-2.089005309368159992e-08, +-2.086497601507246907e-08, +-2.083987252482324753e-08, +-2.081474267335901434e-08, +-2.078958651114384844e-08, +-2.076440408866195574e-08, +-2.073919545642853824e-08, +-2.071396066498941690e-08, +-2.068869976491262078e-08, +-2.066341280679843569e-08, +-2.063809984127096365e-08, +-2.061276091898364507e-08, +-2.058739609062041691e-08, +-2.056200540688647794e-08, +-2.053658891851893958e-08, +-2.051114667627778313e-08, +-2.048567873095520031e-08, +-2.046018513336763246e-08, +-2.043466593435637604e-08, +-2.040912118479332328e-08, +-2.038355093557215102e-08, +-2.035795523761885573e-08, +-2.033233414188319047e-08, +-2.030668769933796351e-08, +-2.028101596098941444e-08, +-2.025531897786282122e-08, +-2.022959680101262823e-08, +-2.020384948152316422e-08, +-2.017807707049469273e-08, +-2.015227961906418098e-08, +-2.012645717838641366e-08, +-2.010060979964677451e-08, +-2.007473753405090990e-08, +-2.004884043283604463e-08, +-2.002291854726173740e-08, +-1.999697192861063185e-08, +-1.997100062819451155e-08, +-1.994500469734538296e-08, +-1.991898418742601045e-08, +-1.989293914982099595e-08, +-1.986686963593651755e-08, +-1.984077569721084467e-08, +-1.981465738509931641e-08, +-1.978851475108594526e-08, +-1.976234784667905620e-08, +-1.973615672340737251e-08, +-1.970994143283071942e-08, +-1.968370202652579998e-08, +-1.965743855609650170e-08, +-1.963115107317366163e-08, +-1.960483962940552401e-08, +-1.957850427646946969e-08, +-1.955214506606229510e-08, +-1.952576204990620437e-08, +-1.949935527975006658e-08, +-1.947292480735974115e-08, +-1.944647068452958880e-08, +-1.941999296307180098e-08, +-1.939349169482885716e-08, +-1.936696693165916171e-08, +-1.934041872544782700e-08, +-1.931384712810281545e-08, +-1.928725219155041646e-08, +-1.926063396774711157e-08, +-1.923399250866418551e-08, +-1.920732786629855899e-08, +-1.918064009267252734e-08, +-1.915392923982446294e-08, +-1.912719535981985318e-08, +-1.910043850474196982e-08, +-1.907365872669816880e-08, +-1.904685607782064465e-08, +-1.902003061025710320e-08, +-1.899318237618186893e-08, +-1.896631142778594231e-08, +-1.893941781728774647e-08, +-1.891250159692376026e-08, +-1.888556281894988142e-08, +-1.885860153564705470e-08, +-1.883161779931226226e-08, +-1.880461166227058722e-08, +-1.877758317686047000e-08, +-1.875053239544475288e-08, +-1.872345937040962446e-08, +-1.869636415415566960e-08, +-1.866924679910914554e-08, +-1.864210735771252557e-08, +-1.861494588243056390e-08, +-1.858776242575139751e-08, +-1.856055704017705998e-08, +-1.853332977823471468e-08, +-1.850608069246594104e-08, +-1.847880983543879822e-08, +-1.845151725973766400e-08, +-1.842420301796443914e-08, +-1.839686716274470826e-08, +-1.836950974671827353e-08, +-1.834213082255069554e-08, +-1.831473044292328109e-08, +-1.828730866053354310e-08, +-1.825986552810640065e-08, +-1.823240109837400897e-08, +-1.820491542409799410e-08, +-1.817740855805455039e-08, +-1.814988055303529413e-08, +-1.812233146185783825e-08, +-1.809476133735076740e-08, +-1.806717023236637654e-08, +-1.803955819976984810e-08, +-1.801192529245103766e-08, +-1.798427156331457423e-08, +-1.795659706528106797e-08, +-1.792890185129324122e-08, +-1.790118597430601558e-08, +-1.787344948729882035e-08, +-1.784569244326525611e-08, +-1.781791489521313108e-08, +-1.779011689617641224e-08, +-1.776229849919455904e-08, +-1.773445975733490364e-08, +-1.770660072367772188e-08, +-1.767872145131683553e-08, +-1.765082199337092481e-08, +-1.762290240296756706e-08, +-1.759496273325455925e-08, +-1.756700303740058961e-08, +-1.753902336858014325e-08, +-1.751102377999604780e-08, +-1.748300432485874758e-08, +-1.745496505640045167e-08, +-1.742690602786400009e-08, +-1.739882729251499024e-08, +-1.737072890363161251e-08, +-1.734261091450474958e-08, +-1.731447337844991093e-08, +-1.728631634878584527e-08, +-1.725813987885835014e-08, +-1.722994402202405913e-08, +-1.720172883165174885e-08, +-1.717349436113331064e-08, +-1.714524066386793157e-08, +-1.711696779327353601e-08, +-1.708867580278739112e-08, +-1.706036474585034741e-08, +-1.703203467593068470e-08, +-1.700368564650223483e-08, +-1.697531771105699124e-08, +-1.694693092310470526e-08, +-1.691852533616313205e-08, +-1.689010100376975335e-08, +-1.686165797947185134e-08, +-1.683319631683313270e-08, +-1.680471606943482380e-08, +-1.677621729086540372e-08, +-1.674770003473254875e-08, +-1.671916435465266030e-08, +-1.669061030426320969e-08, +-1.666203793720766036e-08, +-1.663344730714609215e-08, +-1.660483846775691192e-08, +-1.657621147272013786e-08, +-1.654756637574169878e-08, +-1.651890323053135830e-08, +-1.649022209081563871e-08, +-1.646152301033721879e-08, +-1.643280604284468341e-08, +-1.640407124210523891e-08, +-1.637531866189400609e-08, +-1.634654835600107112e-08, +-1.631776037823231270e-08, +-1.628895478239931375e-08, +-1.626013162233139527e-08, +-1.623129095186438651e-08, +-1.620243282485313194e-08, +-1.617355729516104563e-08, +-1.614466441666096490e-08, +-1.611575424324226073e-08, +-1.608682682880013741e-08, +-1.605788222724851003e-08, +-1.602892049250919822e-08, +-1.599994167851192617e-08, +-1.597094583920591966e-08, +-1.594193302854344189e-08, +-1.591290330049375294e-08, +-1.588385670903233663e-08, +-1.585479330814824915e-08, +-1.582571315184467161e-08, +-1.579661629412848760e-08, +-1.576750278902321365e-08, +-1.573837269055691248e-08, +-1.570922605277527566e-08, +-1.568006292973080085e-08, +-1.565088337548392328e-08, +-1.562168744410995753e-08, +-1.559247518968837065e-08, +-1.556324666631569273e-08, +-1.553400192809487611e-08, +-1.550474102913500751e-08, +-1.547546402356329551e-08, +-1.544617096550804718e-08, +-1.541686190911221732e-08, +-1.538753690852780347e-08, +-1.535819601791148168e-08, +-1.532883929143763961e-08, +-1.529946678328116124e-08, +-1.527007854763223998e-08, +-1.524067463868376917e-08, +-1.521125511064497732e-08, +-1.518182001773003286e-08, +-1.515236941415938747e-08, +-1.512290335416692295e-08, +-1.509342189198891662e-08, +-1.506392508187732912e-08, +-1.503441297808870369e-08, +-1.500488563488408012e-08, +-1.497534310654141569e-08, +-1.494578544733784052e-08, +-1.491621271156330270e-08, +-1.488662495351562509e-08, +-1.485702222749541814e-08, +-1.482740458781951331e-08, +-1.479777208880357576e-08, +-1.476812478477464931e-08, +-1.473846273007061057e-08, +-1.470878597902913761e-08, +-1.467909458600137004e-08, +-1.464938860534051541e-08, +-1.461966809140915491e-08, +-1.458993309858040964e-08, +-1.456018368122700862e-08, +-1.453041989373429869e-08, +-1.450064179048809322e-08, +-1.447084942589050930e-08, +-1.444104285433666774e-08, +-1.441122213024017683e-08, +-1.438138730801591044e-08, +-1.435153844208118097e-08, +-1.432167558686807925e-08, +-1.429179879680583735e-08, +-1.426190812633322639e-08, +-1.423200362989848375e-08, +-1.420208536194811304e-08, +-1.417215337694034068e-08, +-1.414220772933375372e-08, +-1.411224847359509191e-08, +-1.408227566419975892e-08, +-1.405228935562102590e-08, +-1.402228960234351461e-08, +-1.399227645885042734e-08, +-1.396224997963750646e-08, +-1.393221021920148198e-08, +-1.390215723204117173e-08, +-1.387209107266532961e-08, +-1.384201179558066640e-08, +-1.381191945530713109e-08, +-1.378181410636032662e-08, +-1.375169580326380849e-08, +-1.372156460055019974e-08, +-1.369142055274371428e-08, +-1.366126371438639012e-08, +-1.363109414001393071e-08, +-1.360091188416970583e-08, +-1.357071700140442067e-08, +-1.354050954626485464e-08, +-1.351028957330758594e-08, +-1.348005713708617187e-08, +-1.344981229216525069e-08, +-1.341955509310874758e-08, +-1.338928559448116845e-08, +-1.335900385085505440e-08, +-1.332870991679966265e-08, +-1.329840384689455211e-08, +-1.326808569571826097e-08, +-1.323775551784817597e-08, +-1.320741336787449522e-08, +-1.317705930037576517e-08, +-1.314669336994562336e-08, +-1.311631563117487008e-08, +-1.308592613865274228e-08, +-1.305552494697940724e-08, +-1.302511211074813193e-08, +-1.299468768456051796e-08, +-1.296425172301480862e-08, +-1.293380428071345422e-08, +-1.290334541226440914e-08, +-1.287287517226954796e-08, +-1.284239361533847943e-08, +-1.281190079607579792e-08, +-1.278139676909493870e-08, +-1.275088158900684391e-08, +-1.272035531041949772e-08, +-1.268981798795217363e-08, +-1.265926967621094833e-08, +-1.262871042981539807e-08, +-1.259814030338072499e-08, +-1.256755935151884399e-08, +-1.253696762885133644e-08, +-1.250636518999096758e-08, +-1.247575208955480402e-08, +-1.244512838216517155e-08, +-1.241449412243180963e-08, +-1.238384936497856605e-08, +-1.235319416441892244e-08, +-1.232252857537022330e-08, +-1.229185265245323439e-08, +-1.226116645028082354e-08, +-1.223047002347180766e-08, +-1.219976342663933251e-08, +-1.216904671440107018e-08, +-1.213831994136765676e-08, +-1.210758316215649635e-08, +-1.207683643138048323e-08, +-1.204607980364748907e-08, +-1.201531333357333307e-08, +-1.198453707576371968e-08, +-1.195375108482698212e-08, +-1.192295541537523714e-08, +-1.189215012200615891e-08, +-1.186133525933034382e-08, +-1.183051088194624856e-08, +-1.179967704445454832e-08, +-1.176883380145792502e-08, +-1.173798120754947190e-08, +-1.170711931732677381e-08, +-1.167624818538014963e-08, +-1.164536786630020775e-08, +-1.161447841467943263e-08, +-1.158357988510000700e-08, +-1.155267233214818000e-08, +-1.152175581040112829e-08, +-1.149083037444254337e-08, +-1.145989607884431785e-08, +-1.142895297818064225e-08, +-1.139800112702295754e-08, +-1.136704057993437663e-08, +-1.133607139148402107e-08, +-1.130509361622878338e-08, +-1.127410730872618970e-08, +-1.124311252353425420e-08, +-1.121210931519978109e-08, +-1.118109773827253095e-08, +-1.115007784729342839e-08, +-1.111904969680225157e-08, +-1.108801334133882991e-08, +-1.105696883543129818e-08, +-1.102591623361037192e-08, +-1.099485559039603156e-08, +-1.096378696031198476e-08, +-1.093271039787376502e-08, +-1.090162595758988802e-08, +-1.087053369396960728e-08, +-1.083943366151115996e-08, +-1.080832591471597610e-08, +-1.077721050807677721e-08, +-1.074608749607749350e-08, +-1.071495693320657656e-08, +-1.068381887393805527e-08, +-1.065267337274744577e-08, +-1.062152048409987646e-08, +-1.059036026245787345e-08, +-1.055919276228247059e-08, +-1.052801803802135602e-08, +-1.049683614412322040e-08, +-1.046564713502474045e-08, +-1.043445106516455825e-08, +-1.040324798897157335e-08, +-1.037203796086617525e-08, +-1.034082103526806032e-08, +-1.030959726658421607e-08, +-1.027836670922326951e-08, +-1.024712941758383217e-08, +-1.021588544605405335e-08, +-1.018463484902487825e-08, +-1.015337768087151082e-08, +-1.012211399596779182e-08, +-1.009084384868082379e-08, +-1.005956729336555633e-08, +-1.002828438437953805e-08, +-9.996995176063831842e-09, +-9.965699722759088665e-09, +-9.934398078792191887e-09, +-9.903090298490736248e-09, +-9.871776436170952683e-09, +-9.840456546139026843e-09, +-9.809130682698834893e-09, +-9.777798900140164457e-09, +-9.746461252752895804e-09, +-9.715117794815222792e-09, +-9.683768580593451044e-09, +-9.652413664356488490e-09, +-9.621053100350616362e-09, +-9.589686942827198092e-09, +-9.558315246024178584e-09, +-9.526938064167045406e-09, +-9.495555451482220837e-09, +-9.464167462178245168e-09, +-9.432774150459120775e-09, +-9.401375570524154958e-09, +-9.369971776555836781e-09, +-9.338562822734455007e-09, +-9.307148763226140376e-09, +-9.275729652190465740e-09, +-9.244305543781939951e-09, +-9.212876492137876431e-09, +-9.181442551392936660e-09, +-9.150003775665605774e-09, +-9.118560219075715561e-09, +-9.087111935718796895e-09, +-9.055658979693990467e-09, +-9.024201405085418676e-09, +-8.992739265963310596e-09, +-8.961272616397288151e-09, +-8.929801510437699956e-09, +-8.898326002128634522e-09, +-8.866846145509546497e-09, +-8.835361994596075997e-09, +-8.803873603408255468e-09, +-8.772381025944868740e-09, +-8.740884316198332006e-09, +-8.709383528154275271e-09, +-8.677878715779649145e-09, +-8.646369933037238560e-09, +-8.614857233872346810e-09, +-8.583340672227214966e-09, +-8.551820302029016179e-09, +-8.520296177191045162e-09, +-8.488768351620730266e-09, +-8.457236879207488807e-09, +-8.425701813837240784e-09, +-8.394163209380595084e-09, +-8.362621119692311810e-09, +-8.331075598626275911e-09, +-8.299526700009776823e-09, +-8.267974477673109958e-09, +-8.236418985423768666e-09, +-8.204860277061305363e-09, +-8.173298406377109848e-09, +-8.141733427142367205e-09, +-8.110165393122677395e-09, +-8.078594358065778242e-09, +-8.047020375709663380e-09, +-8.015443499783862732e-09, +-7.983863783997092705e-09, +-7.952281282052074296e-09, +-7.920696047632091415e-09, +-7.889108134415395407e-09, +-7.857517596063384634e-09, +-7.825924486221529273e-09, +-7.794328858527593484e-09, +-7.762730766599328619e-09, +-7.731130264049175532e-09, +-7.699527404472268803e-09, +-7.667922241445990063e-09, +-7.636314828543611508e-09, +-7.604705219315320378e-09, +-7.573093467304205050e-09, +-7.541479626034113679e-09, +-7.509863749017661308e-09, +-7.478245889757419351e-09, +-7.446626101733865231e-09, +-7.415004438419890296e-09, +-7.383380953267366406e-09, +-7.351755699721920210e-09, +-7.320128731210589952e-09, +-7.288500101143263942e-09, +-7.256869862920451917e-09, +-7.225238069921343857e-09, +-7.193604775518344384e-09, +-7.161970033064892520e-09, +-7.130333895895389725e-09, +-7.098696417338677155e-09, +-7.067057650698941015e-09, +-7.035417649270560460e-09, +-7.003776466332510887e-09, +-6.972134155143083215e-09, +-6.940490768954480313e-09, +-6.908846360993798465e-09, +-6.877200984476597265e-09, +-6.845554692606720950e-09, +-6.813907538564061087e-09, +-6.782259575519301068e-09, +-6.750610856621846721e-09, +-6.718961435010316608e-09, +-6.687311363800313818e-09, +-6.655660696099506300e-09, +-6.624009484994986708e-09, +-6.592357783553389041e-09, +-6.560705644834340248e-09, +-6.529053121871422673e-09, +-6.497400267686890419e-09, +-6.465747135286238911e-09, +-6.434093777652682634e-09, +-6.402440247762029503e-09, +-6.370786598563532450e-09, +-6.339132882993401424e-09, +-6.307479153974751277e-09, +-6.275825464405328061e-09, +-6.244171867172193961e-09, +-6.212518415139628128e-09, +-6.180865161157012188e-09, +-6.149212158060324962e-09, +-6.117559458659563527e-09, +-6.085907115753763988e-09, +-6.054255182117408425e-09, +-6.022603710517825455e-09, +-5.990952753689330919e-09, +-5.959302364361777194e-09, +-5.927652595241397336e-09, +-5.896003499011968935e-09, +-5.864355128348548611e-09, +-5.832707535898088699e-09, +-5.801060774293251159e-09, +-5.769414896152062647e-09, +-5.737769954065690435e-09, +-5.706126000613373024e-09, +-5.674483088349942953e-09, +-5.642841269814143267e-09, +-5.611200597529639995e-09, +-5.579561123992985008e-09, +-5.547922901688179368e-09, +-5.516285983073182010e-09, +-5.484650420594826289e-09, +-5.453016266676349405e-09, +-5.421383573718763871e-09, +-5.389752394108877853e-09, +-5.358122780207101704e-09, +-5.326494784362155232e-09, +-5.294868458898865960e-09, +-5.263243856117955714e-09, +-5.231621028311164794e-09, +-5.200000027734969133e-09, +-5.168380906640817892e-09, +-5.136763717248829108e-09, +-5.105148511763027193e-09, +-5.073535342371001309e-09, +-5.041924261231642413e-09, +-5.010315320490084619e-09, +-4.978708572263957462e-09, +-4.947104068658336355e-09, +-4.915501861753335709e-09, +-4.883902003605462199e-09, +-4.852304546255666545e-09, +-4.820709541716923388e-09, +-4.789117041989332304e-09, +-4.757527099047595116e-09, +-4.725939764840980324e-09, +-4.694355091308321544e-09, +-4.662773130351843862e-09, +-4.631193933865996864e-09, +-4.599617553718032437e-09, +-4.568044041749329088e-09, +-4.536473449789115694e-09, +-4.504905829635070808e-09, +-4.473341233067048070e-09, +-4.441779711848291331e-09, +-4.410221317706266402e-09, +-4.378666102361227730e-09, +-4.347114117500201092e-09, +-4.315565414794674503e-09, +-4.284020045886823180e-09, +-4.252478062404514597e-09, +-4.220939515948867686e-09, +-4.189404458094226372e-09, +-4.157872940403106724e-09, +-4.126345014400035714e-09, +-4.094820731600378462e-09, +-4.063300143490952431e-09, +-4.031783301531375729e-09, +-4.000270257167693259e-09, +-3.968761061813046334e-09, +-3.937255766861438615e-09, +-3.905754423688883414e-09, +-3.874257083634152714e-09, +-3.842763798027593667e-09, +-3.811274618164866431e-09, +-3.779789595322043528e-09, +-3.748308780755470049e-09, +-3.716832225689421293e-09, +-3.685359981330994500e-09, +-3.653892098857774345e-09, +-3.622428629428692581e-09, +-3.590969624171610403e-09, +-3.559515134198332603e-09, +-3.528065210592196138e-09, +-3.496619904407905936e-09, +-3.465179266685374454e-09, +-3.433743348430177468e-09, +-3.402312200627370884e-09, +-3.370885874242780729e-09, +-3.339464420203564400e-09, +-3.308047889427177298e-09, +-3.276636332794972522e-09, +-3.245229801167473937e-09, +-3.213828345384105686e-09, +-3.182432016250799782e-09, +-3.151040864555088433e-09, +-3.119654941053585487e-09, +-3.088274296480220196e-09, +-3.056898981547463089e-09, +-3.025529046933982373e-09, +-2.994164543299552624e-09, +-2.962805521271328136e-09, +-2.931452031458853355e-09, +-2.900104124441628288e-09, +-2.868761850770366226e-09, +-2.837425260975222545e-09, +-2.806094405553291861e-09, +-2.774769334985088373e-09, +-2.743450099715162531e-09, +-2.712136750165766066e-09, +-2.680829336736855297e-09, +-2.649527909793559755e-09, +-2.618232519681255486e-09, +-2.586943216713115568e-09, +-2.555660051178316568e-09, +-2.524383073343281384e-09, +-2.493112333439233482e-09, +-2.461847881677292532e-09, +-2.430589768234593488e-09, +-2.399338043269378085e-09, +-2.368092756908535017e-09, +-2.336853959248833265e-09, +-2.305621700365248910e-09, +-2.274396030298319607e-09, +-2.243176999069350650e-09, +-2.211964656667891042e-09, +-2.180759053051652430e-09, +-2.149560238160228725e-09, +-2.118368261895709056e-09, +-2.087183174137820551e-09, +-2.056005024738236092e-09, +-2.024833863515077292e-09, +-1.993669740267962143e-09, +-1.962512704758622527e-09, +-1.931362806727401917e-09, +-1.900220095879372389e-09, +-1.869084621899436049e-09, +-1.837956434439821161e-09, +-1.806835583121413289e-09, +-1.775722117541933837e-09, +-1.744616087263467614e-09, +-1.713517541827535720e-09, +-1.682426530742646890e-09, +-1.651343103484175485e-09, +-1.620267309508133841e-09, +-1.589199198231742008e-09, +-1.558138819048535164e-09, +-1.527086221322785940e-09, +-1.496041454383917021e-09, +-1.465004567541559762e-09, +-1.433975610066219666e-09, +-1.402954631202989183e-09, +-1.371941680171420938e-09, +-1.340936806153101208e-09, +-1.309940058306718258e-09, +-1.278951485755593209e-09, +-1.247971137598606271e-09, +-1.216999062897767320e-09, +-1.186035310693227982e-09, +-1.155079929990891919e-09, +-1.124132969762301090e-09, +-1.093194478959663554e-09, +-1.062264506489735656e-09, +-1.031343101242539259e-09, +-1.000430312072081813e-09, +-9.695261877976622727e-10, +-9.386307772175263965e-10, +-9.077441290895637659e-10, +-8.768662921449765310e-10, +-8.459973150881771501e-10, +-8.151372465844137678e-10, +-7.842861352747478710e-10, +-7.534440297636487511e-10, +-7.226109786271719419e-10, +-6.917870304142152939e-10, +-6.609722336341425938e-10, +-6.301666367717780748e-10, +-5.993702882736307573e-10, +-5.685832365628887520e-10, +-5.378055300270258195e-10, +-5.070372170190930125e-10, +-4.762783458658759180e-10, +-4.455289648554849316e-10, +-4.147891222537167863e-10, +-3.840588662848208460e-10, +-3.533382451451179102e-10, +-3.226273070042858081e-10, +-2.919260999861456467e-10, +-2.612346721973165886e-10, +-2.305530717011455229e-10, +-1.998813465326941561e-10, +-1.692195446986563198e-10, +-1.385677141649900183e-10, +-1.079259028718792770e-10, +-7.729415872000083821e-11, +-4.667252958547853922e-11, +-1.606106330751890103e-11, + 1.454019231029091541e-11, + 4.513118949186230234e-11, + 7.571188050096097645e-11, + 1.062822176262649693e-10, + 1.368421531937165340e-10, + 1.673916395665901035e-10, + 1.979306291305616997e-10, + 2.284590743196862563e-10, + 2.589769275864699786e-10, + 2.894841414278482095e-10, + 3.199806683702545862e-10, + 3.504664609696944530e-10, + 3.809414718240765214e-10, + 4.114056535583020605e-10, + 4.418589588365812545e-10, + 4.723013403543419292e-10, + 5.027327508369325837e-10, + 5.331531430519444872e-10, + 5.635624697943113119e-10, + 5.939606838999785520e-10, + 6.243477382310114802e-10, + 6.547235856879204495e-10, + 6.850881792097021487e-10, + 7.154414717589671014e-10, + 7.457834163478378646e-10, + 7.761139660094732319e-10, + 8.064330738171617339e-10, + 8.367406928830193455e-10, + 8.670367763445088203e-10, + 8.973212773834755976e-10, + 9.275941492126656893e-10, + 9.578553450744376564e-10, + 9.881048182598170244e-10, + 1.018342522080074151e-09, + 1.048568409892566794e-09, + 1.078782435083201405e-09, + 1.108984551080013571e-09, + 1.139174711338350519e-09, + 1.169352869353139244e-09, + 1.199518978657598378e-09, + 1.229672992815155396e-09, + 1.259814865431734798e-09, + 1.289944550140903596e-09, + 1.320062000616153713e-09, + 1.350167170570926996e-09, + 1.380260013745187807e-09, + 1.410340483924410537e-09, + 1.440408534926117242e-09, + 1.470464120598608335e-09, + 1.500507194839941210e-09, + 1.530537711569641701e-09, + 1.560555624754390728e-09, + 1.590560888393276076e-09, + 1.620553456517848029e-09, + 1.650533283204331655e-09, + 1.680500322558840745e-09, + 1.710454528729597341e-09, + 1.740395855898895879e-09, + 1.770324258281854978e-09, + 1.800239690138548042e-09, + 1.830142105759298675e-09, + 1.860031459478211499e-09, + 1.889907705657054121e-09, + 1.919770798704188200e-09, + 1.949620693059820606e-09, + 1.979457343201479153e-09, + 2.009280703649414704e-09, + 2.039090728951897212e-09, + 2.068887373704106870e-09, + 2.098670592534737920e-09, + 2.128440340106081786e-09, + 2.158196571126178357e-09, + 2.187939240334131461e-09, + 2.217668302512187773e-09, + 2.247383712477808288e-09, + 2.277085425082386188e-09, + 2.306773395223351808e-09, + 2.336447577829527813e-09, + 2.366107927874564682e-09, + 2.395754400362249977e-09, + 2.425386950338712983e-09, + 2.455005532891055721e-09, + 2.484610103139417393e-09, + 2.514200616249088440e-09, + 2.543777027414514525e-09, + 2.573339291878100417e-09, + 2.602887364916861360e-09, + 2.632421201842549224e-09, + 2.661940758013679704e-09, + 2.691445988820937965e-09, + 2.720936849699254235e-09, + 2.750413296119831854e-09, + 2.779875283588908981e-09, + 2.809322767659835021e-09, + 2.838755703918403057e-09, + 2.868174047996339924e-09, + 2.897577755556601836e-09, + 2.926966782305510775e-09, + 2.956341083991437211e-09, + 2.985700616396907554e-09, + 3.015045335350621438e-09, + 3.044375196712840397e-09, + 3.073690156387557354e-09, + 3.102990170322399006e-09, + 3.132275194495477793e-09, + 3.161545184934035719e-09, + 3.190800097699904174e-09, + 3.220039888894880192e-09, + 3.249264514666072934e-09, + 3.278473931191416447e-09, + 3.307668094698239453e-09, + 3.336846961447468272e-09, + 3.366010487746894793e-09, + 3.395158629936714879e-09, + 3.424291344401478233e-09, + 3.453408587568813707e-09, + 3.482510315901551656e-09, + 3.511596485909788771e-09, + 3.540667054136236237e-09, + 3.569721977168262238e-09, + 3.598761211638006936e-09, + 3.627784714207795967e-09, + 3.656792441595381031e-09, + 3.685784350546221072e-09, + 3.714760397852109967e-09, + 3.743720540349774872e-09, + 3.772664734907841510e-09, + 3.801592938445363842e-09, + 3.830505107918641290e-09, + 3.859401200321334543e-09, + 3.888281172696348006e-09, + 3.917144982121372339e-09, + 3.945992585720919104e-09, + 3.974823940655703906e-09, + 4.003639004134599977e-09, + 4.032437733400270049e-09, + 4.061220085741010756e-09, + 4.089986018490808880e-09, + 4.118735489014954197e-09, + 4.147468454735151857e-09, + 4.176184873101818448e-09, + 4.204884701612667920e-09, + 4.233567897811395537e-09, + 4.262234419274616697e-09, + 4.290884223630312234e-09, + 4.319517268544743245e-09, + 4.348133511721286423e-09, + 4.376732910918701508e-09, + 4.405315423923759061e-09, + 4.433881008576164238e-09, + 4.462429622754220095e-09, + 4.490961224374902038e-09, + 4.519475771405639353e-09, + 4.547973221850021529e-09, + 4.576453533760988474e-09, + 4.604916665226349898e-09, + 4.633362574380756264e-09, + 4.661791219404381924e-09, + 4.690202558515152924e-09, + 4.718596549980560798e-09, + 4.746973152102044575e-09, + 4.775332323233357493e-09, + 4.803674021767533116e-09, + 4.831998206135634638e-09, + 4.860304834825075277e-09, + 4.888593866352342820e-09, + 4.916865259287738947e-09, + 4.945118972241183152e-09, + 4.973354963862192890e-09, + 5.001573192851758588e-09, + 5.029773617947952348e-09, + 5.057956197937804616e-09, + 5.086120891649461673e-09, + 5.114267657951076393e-09, + 5.142396455762382977e-09, + 5.170507244040600972e-09, + 5.198599981793472461e-09, + 5.226674628064916270e-09, + 5.254731141946893050e-09, + 5.282769482579374668e-09, + 5.310789609136216790e-09, + 5.338791480849738555e-09, + 5.366775056983629097e-09, + 5.394740296851240650e-09, + 5.422687159814089690e-09, + 5.450615605269177917e-09, + 5.478525592667121568e-09, + 5.506417081496621104e-09, + 5.534290031296198072e-09, + 5.562144401646506465e-09, + 5.589980152169052246e-09, + 5.617797242537980668e-09, + 5.645595632465741238e-09, + 5.673375281716176196e-09, + 5.701136150090402191e-09, + 5.728878197438361039e-09, + 5.756601383657674899e-09, + 5.784305668685936122e-09, + 5.811991012512397802e-09, + 5.839657375163797546e-09, + 5.867304716715998390e-09, + 5.894932997294076484e-09, + 5.922542177059513847e-09, + 5.950132216228224295e-09, + 5.977703075057771011e-09, + 6.005254713846110893e-09, + 6.032787092949680023e-09, + 6.060300172756471426e-09, + 6.087793913710355003e-09, + 6.115268276294664616e-09, + 6.142723221044838233e-09, + 6.170158708534608148e-09, + 6.197574699387363963e-09, + 6.224971154275133499e-09, + 6.252348033910766768e-09, + 6.279705299059575230e-09, + 6.307042910525383048e-09, + 6.334360829161953759e-09, + 6.361659015873172256e-09, + 6.388937431600191227e-09, + 6.416196037339526558e-09, + 6.443434794128904273e-09, + 6.470653663052481700e-09, + 6.497852605245991703e-09, + 6.525031581882827026e-09, + 6.552190554191826328e-09, + 6.579329483444645622e-09, + 6.606448330955839330e-09, + 6.633547058094347347e-09, + 6.660625626269509898e-09, + 6.687683996942547973e-09, + 6.714722131619016963e-09, + 6.741739991847750348e-09, + 6.768737539231962944e-09, + 6.795714735415719879e-09, + 6.822671542096463423e-09, + 6.849607921008657138e-09, + 6.876523833947790663e-09, + 6.903419242744019952e-09, + 6.930294109279835847e-09, + 6.957148395488771196e-09, + 6.983982063343028716e-09, + 7.010795074870898931e-09, + 7.037587392144589865e-09, + 7.064358977279900308e-09, + 7.091109792447791241e-09, + 7.117839799860564479e-09, + 7.144548961783224822e-09, + 7.171237240525960984e-09, + 7.197904598443000775e-09, + 7.224550997943970773e-09, + 7.251176401479956673e-09, + 7.277780771556337826e-09, + 7.304364070718866613e-09, + 7.330926261565164605e-09, + 7.357467306743256793e-09, + 7.383987168944416481e-09, + 7.410485810914256123e-09, + 7.436963195437859574e-09, + 7.463419285357295164e-09, + 7.489854043559136849e-09, + 7.516267432973434370e-09, + 7.542659416590916128e-09, + 7.569029957437220856e-09, + 7.595379018596245616e-09, + 7.621706563196917532e-09, + 7.648012554412823204e-09, + 7.674296955473701564e-09, + 7.700559729651725908e-09, + 7.726800840273989364e-09, + 7.753020250708932507e-09, + 7.779217924377497067e-09, + 7.805393824752007580e-09, + 7.831547915348706907e-09, + 7.857680159738901671e-09, + 7.883790521535596667e-09, + 7.909878964404453356e-09, + 7.935945452063948678e-09, + 7.961989948271842384e-09, + 7.988012416848508486e-09, + 8.014012821651449826e-09, + 8.039991126592200683e-09, + 8.065947295635263019e-09, + 8.091881292786021372e-09, + 8.117793082107731490e-09, + 8.143682627707057903e-09, + 8.169549893744918265e-09, + 8.195394844429538344e-09, + 8.221217444014873759e-09, + 8.247017656811900999e-09, + 8.272795447175122795e-09, + 8.298550779514891462e-09, + 8.324283618283972170e-09, + 8.349993927988585810e-09, + 8.375681673188501639e-09, + 8.401346818483638605e-09, + 8.426989328537102328e-09, + 8.452609168049966019e-09, + 8.478206301778096988e-09, + 8.503780694531084616e-09, + 8.529332311160151937e-09, + 8.554861116575081413e-09, + 8.580367075732356466e-09, + 8.605850153633770165e-09, + 8.631310315343427093e-09, + 8.656747525962562317e-09, + 8.682161750652358338e-09, + 8.707552954620799536e-09, + 8.732921103122749924e-09, + 8.758266161470757783e-09, + 8.783588095021936576e-09, + 8.808886869188633925e-09, + 8.834162449429211855e-09, + 8.859414801258484159e-09, + 8.884643890234944728e-09, + 8.909849681971376974e-09, + 8.935032142134794268e-09, + 8.960191236434975218e-09, + 8.985326930640630088e-09, + 9.010439190567957583e-09, + 9.035527982079265108e-09, + 9.060593271099806857e-09, + 9.085635023592746714e-09, + 9.110653205581816380e-09, + 9.135647783138408050e-09, + 9.160618722381427172e-09, + 9.185565989488049106e-09, + 9.210489550680858119e-09, + 9.235389372238344305e-09, + 9.260265420488026410e-09, + 9.285117661805204439e-09, + 9.309946062623721278e-09, + 9.334750589422929637e-09, + 9.359531208739442976e-09, + 9.384287887153298428e-09, + 9.409020591304288654e-09, + 9.433729287879034663e-09, + 9.458413943615887687e-09, + 9.483074525309415805e-09, + 9.507710999797979693e-09, + 9.532323333979624416e-09, + 9.556911494800781797e-09, + 9.581475449256202586e-09, + 9.606015164399539412e-09, + 9.630530607330469233e-09, + 9.655021745205253121e-09, + 9.679488545230065885e-09, + 9.703930974659254021e-09, + 9.728349000806457987e-09, + 9.752742591031517932e-09, + 9.777111712752222969e-09, + 9.801456333431605685e-09, + 9.825776420588384462e-09, + 9.850071941795793851e-09, + 9.874342864674900946e-09, + 9.898589156904751586e-09, + 9.922810786209812097e-09, + 9.947007720370472834e-09, + 9.971179927223086225e-09, + 9.995327374648248938e-09, + 1.001945003058724954e-08, + 1.004354786302830916e-08, + 1.006762084001660693e-08, + 1.009166892964778168e-08, + 1.011569210006664314e-08, + 1.013969031947764407e-08, + 1.016366355613219131e-08, + 1.018761177834018663e-08, + 1.021153495445760407e-08, + 1.023543305289656671e-08, + 1.025930604212442517e-08, + 1.028315389065689035e-08, + 1.030697656706827890e-08, + 1.033077403997912040e-08, + 1.035454627806636808e-08, + 1.037829325006341037e-08, + 1.040201492474893875e-08, + 1.042571127096255662e-08, + 1.044938225759263465e-08, + 1.047302785358059388e-08, + 1.049664802792579276e-08, + 1.052024274967284811e-08, + 1.054381198792755665e-08, + 1.056735571184366514e-08, + 1.059087389063364683e-08, + 1.061436649355677355e-08, + 1.063783348992918083e-08, + 1.066127484912260066e-08, + 1.068469054055794260e-08, + 1.070808053371521987e-08, + 1.073144479812120626e-08, + 1.075478330335993462e-08, + 1.077809601907218406e-08, + 1.080138291494356357e-08, + 1.082464396072579042e-08, + 1.084787912621299141e-08, + 1.087108838125772208e-08, + 1.089427169576957044e-08, + 1.091742903970435890e-08, + 1.094056038307947032e-08, + 1.096366569596284650e-08, + 1.098674494847311224e-08, + 1.100979811078959087e-08, + 1.103282515314000733e-08, + 1.105582604581051036e-08, + 1.107880075913940079e-08, + 1.110174926351548375e-08, + 1.112467152938849949e-08, + 1.114756752725680001e-08, + 1.117043722767847792e-08, + 1.119328060125712575e-08, + 1.121609761866267758e-08, + 1.123888825060827772e-08, + 1.126165246786611300e-08, + 1.128439024126573852e-08, + 1.130710154168355925e-08, + 1.132978634005812789e-08, + 1.135244460737915329e-08, + 1.137507631468643175e-08, + 1.139768143308523090e-08, + 1.142025993372351580e-08, + 1.144281178781240178e-08, + 1.146533696661445147e-08, + 1.148783544144361035e-08, + 1.151030718367499222e-08, + 1.153275216473308033e-08, + 1.155517035610244766e-08, + 1.157756172931590833e-08, + 1.159992625596462085e-08, + 1.162226390769646514e-08, + 1.164457465620992307e-08, + 1.166685847326383754e-08, + 1.168911533066543655e-08, + 1.171134520028020310e-08, + 1.173354805403177930e-08, + 1.175572386389041224e-08, + 1.177787260189299000e-08, + 1.179999424011977635e-08, + 1.182208875071467834e-08, + 1.184415610587354832e-08, + 1.186619627784423684e-08, + 1.188820923893610528e-08, + 1.191019496150857102e-08, + 1.193215341798040165e-08, + 1.195408458082359713e-08, + 1.197598842256227313e-08, + 1.199786491578221160e-08, + 1.201971403311930679e-08, + 1.204153574727012164e-08, + 1.206333003098020973e-08, + 1.208509685705401656e-08, + 1.210683619835440479e-08, + 1.212854802779129042e-08, + 1.215023231834181940e-08, + 1.217188904302815116e-08, + 1.219351817493221889e-08, + 1.221511968719464090e-08, + 1.223669355300459435e-08, + 1.225823974561398810e-08, + 1.227975823832530483e-08, + 1.230124900450098128e-08, + 1.232271201755706210e-08, + 1.234414725096219404e-08, + 1.236555467824715003e-08, + 1.238693427299326528e-08, + 1.240828600884318396e-08, + 1.242960985948882704e-08, + 1.245090579868133501e-08, + 1.247217380022992305e-08, + 1.249341383799542903e-08, + 1.251462588590004613e-08, + 1.253580991791559503e-08, + 1.255696590807327642e-08, + 1.257809383046325076e-08, + 1.259919365922462278e-08, + 1.262026536855985926e-08, + 1.264130893272437812e-08, + 1.266232432602572288e-08, + 1.268331152283785636e-08, + 1.270427049757985747e-08, + 1.272520122473499102e-08, + 1.274610367883983692e-08, + 1.276697783448418927e-08, + 1.278782366632032076e-08, + 1.280864114905164207e-08, + 1.282943025744208038e-08, + 1.285019096630782251e-08, + 1.287092325052678610e-08, + 1.289162708502687698e-08, + 1.291230244479569528e-08, + 1.293294930488039651e-08, + 1.295356764037747581e-08, + 1.297415742644705012e-08, + 1.299471863830167797e-08, + 1.301525125121079316e-08, + 1.303575524050418392e-08, + 1.305623058156122131e-08, + 1.307667724982506694e-08, + 1.309709522079254325e-08, + 1.311748447001409054e-08, + 1.313784497310290069e-08, + 1.315817670572379322e-08, + 1.317847964360270143e-08, + 1.319875376252000857e-08, + 1.321899903830995732e-08, + 1.323921544686967095e-08, + 1.325940296414815846e-08, + 1.327956156615625399e-08, + 1.329969122895458630e-08, + 1.331979192866795020e-08, + 1.333986364147391133e-08, + 1.335990634360702142e-08, + 1.337992001136275906e-08, + 1.339990462108668032e-08, + 1.341986014918837335e-08, + 1.343978657213134520e-08, + 1.345968386643343549e-08, + 1.347955200867528339e-08, + 1.349939097548983067e-08, + 1.351920074357104024e-08, + 1.353898128966797846e-08, + 1.355873259058413358e-08, + 1.357845462318588105e-08, + 1.359814736439188243e-08, + 1.361781079118326630e-08, + 1.363744488059220159e-08, + 1.365704960971110078e-08, + 1.367662495569171667e-08, + 1.369617089573919158e-08, + 1.371568740712086683e-08, + 1.373517446715545005e-08, + 1.375463205322224477e-08, + 1.377406014276062110e-08, + 1.379345871326065529e-08, + 1.381282774227650529e-08, + 1.383216720741517763e-08, + 1.385147708634478264e-08, + 1.387075735678905692e-08, + 1.389000799652634753e-08, + 1.390922898339847606e-08, + 1.392842029529971891e-08, + 1.394758191018683607e-08, + 1.396671380606844680e-08, + 1.398581596101357107e-08, + 1.400488835315081564e-08, + 1.402393096066249776e-08, + 1.404294376179354729e-08, + 1.406192673484063754e-08, + 1.408087985816113539e-08, + 1.409980311017287294e-08, + 1.411869646934380449e-08, + 1.413755991421007050e-08, + 1.415639342335606251e-08, + 1.417519697542791613e-08, + 1.419397054913220908e-08, + 1.421271412322673476e-08, + 1.423142767653370413e-08, + 1.425011118793036045e-08, + 1.426876463634906367e-08, + 1.428738800078555068e-08, + 1.430598126028876760e-08, + 1.432454439396958326e-08, + 1.434307738099267626e-08, + 1.436158020058549996e-08, + 1.438005283202788474e-08, + 1.439849525466035294e-08, + 1.441690744788432223e-08, + 1.443528939115159554e-08, + 1.445364106398246799e-08, + 1.447196244594573397e-08, + 1.449025351667211720e-08, + 1.450851425585306476e-08, + 1.452674464323171754e-08, + 1.454494465861576629e-08, + 1.456311428186805984e-08, + 1.458125349290625267e-08, + 1.459936227171507702e-08, + 1.461744059832732760e-08, + 1.463548845284139623e-08, + 1.465350581541105444e-08, + 1.467149266624549489e-08, + 1.468944898561765277e-08, + 1.470737475385405297e-08, + 1.472526995134423834e-08, + 1.474313455852852240e-08, + 1.476096855591553387e-08, + 1.477877192406299465e-08, + 1.479654464359081240e-08, + 1.481428669517966610e-08, + 1.483199805956223462e-08, + 1.484967871753616689e-08, + 1.486732864995440060e-08, + 1.488494783772481808e-08, + 1.490253626182262754e-08, + 1.492009390327141239e-08, + 1.493762074316062439e-08, + 1.495511676263516126e-08, + 1.497258194289568591e-08, + 1.499001626520699421e-08, + 1.500741971088747672e-08, + 1.502479226131775446e-08, + 1.504213389793507393e-08, + 1.505944460223249314e-08, + 1.507672435576691522e-08, + 1.509397314014928466e-08, + 1.511119093705367309e-08, + 1.512837772820720415e-08, + 1.514553349539820627e-08, + 1.516265822047628209e-08, + 1.517975188534253782e-08, + 1.519681447196620628e-08, + 1.521384596236561179e-08, + 1.523084633862476345e-08, + 1.524781558288342231e-08, + 1.526475367733754477e-08, + 1.528166060424682315e-08, + 1.529853634592535179e-08, + 1.531538088474927351e-08, + 1.533219420315173046e-08, + 1.534897628362181532e-08, + 1.536572710871274380e-08, + 1.538244666103185898e-08, + 1.539913492324968734e-08, + 1.541579187809015812e-08, + 1.543241750833867662e-08, + 1.544901179684095624e-08, + 1.546557472649802557e-08, + 1.548210628027422565e-08, + 1.549860644118711829e-08, + 1.551507519231594651e-08, + 1.553151251680105219e-08, + 1.554791839783569363e-08, + 1.556429281867797014e-08, + 1.558063576264041946e-08, + 1.559694721309776676e-08, + 1.561322715348212369e-08, + 1.562947556728166489e-08, + 1.564569243804850277e-08, + 1.566187774938944621e-08, + 1.567803148497435842e-08, + 1.569415362852682966e-08, + 1.571024416383198579e-08, + 1.572630307473554531e-08, + 1.574233034513861805e-08, + 1.575832595900549058e-08, + 1.577428990035429562e-08, + 1.579022215326466842e-08, + 1.580612270187755155e-08, + 1.582199153038699590e-08, + 1.583782862305203233e-08, + 1.585363396418709959e-08, + 1.586940753816560778e-08, + 1.588514932942327355e-08, + 1.590085932244904098e-08, + 1.591653750179640401e-08, + 1.593218385207570373e-08, + 1.594779835795333763e-08, + 1.596338100416024311e-08, + 1.597893177548172321e-08, + 1.599445065676552317e-08, + 1.600993763291521963e-08, + 1.602539268889732441e-08, + 1.604081580973266203e-08, + 1.605620698050327499e-08, + 1.607156618635307560e-08, + 1.608689341247817123e-08, + 1.610218864414275288e-08, + 1.611745186666193938e-08, + 1.613268306541320574e-08, + 1.614788222583540047e-08, + 1.616304933342091052e-08, + 1.617818437372661977e-08, + 1.619328733236647763e-08, + 1.620835819501078765e-08, + 1.622339694739366876e-08, + 1.623840357530466095e-08, + 1.625337806459524019e-08, + 1.626832040117470571e-08, + 1.628323057100866785e-08, + 1.629810856012723059e-08, + 1.631295435461504551e-08, + 1.632776794062006336e-08, + 1.634254930434467659e-08, + 1.635729843205264455e-08, + 1.637201531006854089e-08, + 1.638669992477269455e-08, + 1.640135226260892555e-08, + 1.641597231007428462e-08, + 1.643056005373066024e-08, + 1.644511548019658288e-08, + 1.645963857614678500e-08, + 1.647412932832277237e-08, + 1.648858772351679002e-08, + 1.650301374858618540e-08, + 1.651740739044561636e-08, + 1.653176863606613458e-08, + 1.654609747248278578e-08, + 1.656039388678582831e-08, + 1.657465786612862118e-08, + 1.658888939771900810e-08, + 1.660308846882627911e-08, + 1.661725506678064441e-08, + 1.663138917896821839e-08, + 1.664549079283807382e-08, + 1.665955989589404613e-08, + 1.667359647570129459e-08, + 1.668760051988655382e-08, + 1.670157201612955424e-08, + 1.671551095217752753e-08, + 1.672941731582880855e-08, + 1.674329109494672213e-08, + 1.675713227745150310e-08, + 1.677094085132046838e-08, + 1.678471680459448551e-08, + 1.679846012536994904e-08, + 1.681217080180524570e-08, + 1.682584882211687666e-08, + 1.683949417457787589e-08, + 1.685310684752510596e-08, + 1.686668682935083728e-08, + 1.688023410851032841e-08, + 1.689374867351344508e-08, + 1.690723051293151583e-08, + 1.692067961539741145e-08, + 1.693409596959716398e-08, + 1.694747956428398906e-08, + 1.696083038826311874e-08, + 1.697414843040176410e-08, + 1.698743367962861885e-08, + 1.700068612492635524e-08, + 1.701390575534191412e-08, + 1.702709255997944416e-08, + 1.704024652799918681e-08, + 1.705336764862776309e-08, + 1.706645591114314210e-08, + 1.707951130488810088e-08, + 1.709253381926110559e-08, + 1.710552344372331272e-08, + 1.711848016779084992e-08, + 1.713140398104114551e-08, + 1.714429487311199877e-08, + 1.715715283369783445e-08, + 1.716997785255545335e-08, + 1.718276991949687552e-08, + 1.719552902439527614e-08, + 1.720825515718488293e-08, + 1.722094830785465982e-08, + 1.723360846645714782e-08, + 1.724623562310213877e-08, + 1.725882976795571582e-08, + 1.727139089125010016e-08, + 1.728391898326895700e-08, + 1.729641403436061391e-08, + 1.730887603493061621e-08, + 1.732130497544143246e-08, + 1.733370084641872452e-08, + 1.734606363844394924e-08, + 1.735839334216032740e-08, + 1.737068994826748685e-08, + 1.738295344752758702e-08, + 1.739518383075783455e-08, + 1.740738108883656469e-08, + 1.741954521270318514e-08, + 1.743167619335144934e-08, + 1.744377402183895914e-08, + 1.745583868927966065e-08, + 1.746787018684665330e-08, + 1.747986850577456883e-08, + 1.749183363735285459e-08, + 1.750376557293427696e-08, + 1.751566430392883329e-08, + 1.752752982180351035e-08, + 1.753936211808834264e-08, + 1.755116118436922579e-08, + 1.756292701229329330e-08, + 1.757465959356607759e-08, + 1.758635891994964724e-08, + 1.759802498326910861e-08, + 1.760965777540542922e-08, + 1.762125728830167137e-08, + 1.763282351395618612e-08, + 1.764435644442807600e-08, + 1.765585607183676152e-08, + 1.766732238835829531e-08, + 1.767875538623060309e-08, + 1.769015505774632695e-08, + 1.770152139526127576e-08, + 1.771285439118856219e-08, + 1.772415403799820891e-08, + 1.773542032822285289e-08, + 1.774665325445131647e-08, + 1.775785280933345140e-08, + 1.776901898557695584e-08, + 1.778015177594644456e-08, + 1.779125117326928227e-08, + 1.780231717042868491e-08, + 1.781334976036947023e-08, + 1.782434893609227079e-08, + 1.783531469065793792e-08, + 1.784624701718752846e-08, + 1.785714590885856922e-08, + 1.786801135891042040e-08, + 1.787884336063767802e-08, + 1.788964190739549765e-08, + 1.790040699259968706e-08, + 1.791113860972095895e-08, + 1.792183675229255755e-08, + 1.793250141390444194e-08, + 1.794313258820523811e-08, + 1.795373026890474707e-08, + 1.796429444976736040e-08, + 1.797482512462029572e-08, + 1.798532228734687666e-08, + 1.799578593189194261e-08, + 1.800621605225529416e-08, + 1.801661264249751642e-08, + 1.802697569673904930e-08, + 1.803730520915651813e-08, + 1.804760117398838165e-08, + 1.805786358552794728e-08, + 1.806809243812939631e-08, + 1.807828772620715857e-08, + 1.808844944422933468e-08, + 1.809857758672949493e-08, + 1.810867214829383819e-08, + 1.811873312356945039e-08, + 1.812876050726381160e-08, + 1.813875429413912486e-08, + 1.814871447901998576e-08, + 1.815864105678797934e-08, + 1.816853402238147164e-08, + 1.817839337080079442e-08, + 1.818821909710206124e-08, + 1.819801119640197824e-08, + 1.820776966387388039e-08, + 1.821749449475227429e-08, + 1.822718568432652186e-08, + 1.823684322794648172e-08, + 1.824646712102210547e-08, + 1.825605735901716773e-08, + 1.826561393746021465e-08, + 1.827513685193256983e-08, + 1.828462609807630170e-08, + 1.829408167159349889e-08, + 1.830350356824077781e-08, + 1.831289178383694230e-08, + 1.832224631425765328e-08, + 1.833156715543456518e-08, + 1.834085430336323047e-08, + 1.835010775409178718e-08, + 1.835932750373076918e-08, + 1.836851354844739541e-08, + 1.837766588446566247e-08, + 1.838678450807101657e-08, + 1.839586941560453344e-08, + 1.840492060346830167e-08, + 1.841393806811922216e-08, + 1.842292180607436822e-08, + 1.843187181390985069e-08, + 1.844078808825785334e-08, + 1.844967062581149338e-08, + 1.845851942331834294e-08, + 1.846733447758786716e-08, + 1.847611578548586876e-08, + 1.848486334393459397e-08, + 1.849357714991942276e-08, + 1.850225720047803605e-08, + 1.851090349271041804e-08, + 1.851951602377316184e-08, + 1.852809479087917833e-08, + 1.853663979130258644e-08, + 1.854515102237328354e-08, + 1.855362848148089940e-08, + 1.856207216607203995e-08, + 1.857048207364986712e-08, + 1.857885820177853255e-08, + 1.858720054807760563e-08, + 1.859550911022722196e-08, + 1.860378388596217719e-08, + 1.861202487307702584e-08, + 1.862023206942546913e-08, + 1.862840547291516033e-08, + 1.863654508151713457e-08, + 1.864465089325466843e-08, + 1.865272290621296451e-08, + 1.866076111853349688e-08, + 1.866876552841413345e-08, + 1.867673613411345389e-08, + 1.868467293394528692e-08, + 1.869257592628315062e-08, + 1.870044510955735395e-08, + 1.870828048225453030e-08, + 1.871608204292186264e-08, + 1.872384979016161095e-08, + 1.873158372263653851e-08, + 1.873928383906385694e-08, + 1.874695013821987494e-08, + 1.875458261893949869e-08, + 1.876218128011330363e-08, + 1.876974612069189204e-08, + 1.877727713968040056e-08, + 1.878477433614324491e-08, + 1.879223770920352760e-08, + 1.879966725803854804e-08, + 1.880706298188644973e-08, + 1.881442488004151855e-08, + 1.882175295185350783e-08, + 1.882904719673417634e-08, + 1.883630761414789487e-08, + 1.884353420361991799e-08, + 1.885072696473059051e-08, + 1.885788589711986717e-08, + 1.886501100048232973e-08, + 1.887210227457133609e-08, + 1.887915971919841150e-08, + 1.888618333423031701e-08, + 1.889317311959381405e-08, + 1.890012907526984438e-08, + 1.890705120129803326e-08, + 1.891393949777648762e-08, + 1.892079396485739546e-08, + 1.892761460275333557e-08, + 1.893440141173205970e-08, + 1.894115439211872264e-08, + 1.894787354429709315e-08, + 1.895455886870509391e-08, + 1.896121036584074057e-08, + 1.896782803625772468e-08, + 1.897441188056547983e-08, + 1.898096189943320505e-08, + 1.898747809358462383e-08, + 1.899396046380253357e-08, + 1.900040901092548367e-08, + 1.900682373584783833e-08, + 1.901320463952339637e-08, + 1.901955172296062329e-08, + 1.902586498722700893e-08, + 1.903214443344391239e-08, + 1.903839006279275274e-08, + 1.904460187650958927e-08, + 1.905077987588751704e-08, + 1.905692406227806314e-08, + 1.906303443708648171e-08, + 1.906911100177773939e-08, + 1.907515375787209487e-08, + 1.908116270694551583e-08, + 1.908713785063280232e-08, + 1.909307919062353030e-08, + 1.909898672866538352e-08, + 1.910486046656183077e-08, + 1.911070040617165939e-08, + 1.911650654941277365e-08, + 1.912227889825732103e-08, + 1.912801745473628802e-08, + 1.913372222093439143e-08, + 1.913939319899421104e-08, + 1.914503039111540207e-08, + 1.915063379955258425e-08, + 1.915620342661861745e-08, + 1.916173927467981723e-08, + 1.916724134616198338e-08, + 1.917270964354574786e-08, + 1.917814416936694201e-08, + 1.918354492621990201e-08, + 1.918891191675333299e-08, + 1.919424514367376990e-08, + 1.919954460974303647e-08, + 1.920481031777796060e-08, + 1.921004227065413645e-08, + 1.921524047130093150e-08, + 1.922040492270590375e-08, + 1.922553562791044080e-08, + 1.923063259001308513e-08, + 1.923569581216906424e-08, + 1.924072529758805399e-08, + 1.924572104953800011e-08, + 1.925068307134008902e-08, + 1.925561136637275465e-08, + 1.926050593807139719e-08, + 1.926536678992431339e-08, + 1.927019392547968786e-08, + 1.927498734833786062e-08, + 1.927974706215664749e-08, + 1.928447307065050964e-08, + 1.928916537758715219e-08, + 1.929382398679248729e-08, + 1.929844890214640232e-08, + 1.930304012758627035e-08, + 1.930759766710290367e-08, + 1.931212152474375658e-08, + 1.931661170461291545e-08, + 1.932106821086820364e-08, + 1.932549104772488723e-08, + 1.932988021945176743e-08, + 1.933423573037404924e-08, + 1.933855758487353996e-08, + 1.934284578738455966e-08, + 1.934710034240091590e-08, + 1.935132125446807865e-08, + 1.935550852818846759e-08, + 1.935966216822067791e-08, + 1.936378217927637340e-08, + 1.936786856612481938e-08, + 1.937192133358943836e-08, + 1.937594048654751222e-08, + 1.937992602993525450e-08, + 1.938387796873995548e-08, + 1.938779630800687429e-08, + 1.939168105283472904e-08, + 1.939553220837887659e-08, + 1.939934977984785819e-08, + 1.940313377250617219e-08, + 1.940688419167450570e-08, + 1.941060104272576405e-08, + 1.941428433109124493e-08, + 1.941793406225419958e-08, + 1.942155024175389591e-08, + 1.942513287518540673e-08, + 1.942868196819636725e-08, + 1.943219752649187524e-08, + 1.943567955583033198e-08, + 1.943912806202394521e-08, + 1.944254305094263671e-08, + 1.944592452850756383e-08, + 1.944927250069726710e-08, + 1.945258697354372619e-08, + 1.945586795313264125e-08, + 1.945911544560649997e-08, + 1.946232945716037893e-08, + 1.946550999404530515e-08, + 1.946865706256613862e-08, + 1.947177066908120825e-08, + 1.947485082000536917e-08, + 1.947789752180593632e-08, + 1.948091078100661186e-08, + 1.948389060418308131e-08, + 1.948683699796735788e-08, + 1.948974996904498990e-08, + 1.949262952415462739e-08, + 1.949547567009194290e-08, + 1.949828841370378498e-08, + 1.950106776189314128e-08, + 1.950381372161675626e-08, + 1.950652629988440328e-08, + 1.950920550376149186e-08, + 1.951185134036631814e-08, + 1.951446381687208982e-08, + 1.951704294050560600e-08, + 1.951958871854666485e-08, + 1.952210115833079339e-08, + 1.952458026724605784e-08, + 1.952702605273551536e-08, + 1.952943852229455389e-08, + 1.953181768347328763e-08, + 1.953416354387595488e-08, + 1.953647611115949523e-08, + 1.953875539303608413e-08, + 1.954100139726981415e-08, + 1.954321413167919646e-08, + 1.954539360413717399e-08, + 1.954753982256853076e-08, + 1.954965279495317077e-08, + 1.955173252932359680e-08, + 1.955377903376634636e-08, + 1.955579231642142594e-08, + 1.955777238548122902e-08, + 1.955971924919298452e-08, + 1.956163291585617935e-08, + 1.956351339382472558e-08, + 1.956536069150452192e-08, + 1.956717481735515774e-08, + 1.956895577989047884e-08, + 1.957070358767609264e-08, + 1.957241824933194906e-08, + 1.957409977353008722e-08, + 1.957574816899597217e-08, + 1.957736344450894159e-08, + 1.957894560889991615e-08, + 1.958049467105403323e-08, + 1.958201063990907862e-08, + 1.958349352445524496e-08, + 1.958494333373672652e-08, + 1.958636007684896311e-08, + 1.958774376294186932e-08, + 1.958909440121693279e-08, + 1.959041200092945425e-08, + 1.959169657138651590e-08, + 1.959294812194822226e-08, + 1.959416666202779934e-08, + 1.959535220109020837e-08, + 1.959650474865429974e-08, + 1.959762431428989469e-08, + 1.959871090762020733e-08, + 1.959976453832161301e-08, + 1.960078521612126274e-08, + 1.960177295080032902e-08, + 1.960272775219149788e-08, + 1.960364963017985887e-08, + 1.960453859470352384e-08, + 1.960539465575160858e-08, + 1.960621782336666475e-08, + 1.960700810764329353e-08, + 1.960776551872725556e-08, + 1.960849006681781352e-08, + 1.960918176216530685e-08, + 1.960984061507296491e-08, + 1.961046663589562651e-08, + 1.961105983503951162e-08, + 1.961162022296421320e-08, + 1.961214781018008995e-08, + 1.961264260725025483e-08, + 1.961310462478842111e-08, + 1.961353387346191988e-08, + 1.961393036398825242e-08, + 1.961429410713726398e-08, + 1.961462511373096843e-08, + 1.961492339464229097e-08, + 1.961518896079637174e-08, + 1.961542182316994379e-08, + 1.961562199279045627e-08, + 1.961578948073822179e-08, + 1.961592429814385546e-08, + 1.961602645619037924e-08, + 1.961609596611187864e-08, + 1.961613283919337359e-08, + 1.961613708677190710e-08, + 1.961610872023545664e-08, + 1.961604775102365876e-08, + 1.961595419062686613e-08, + 1.961582805058656771e-08, + 1.961566934249650047e-08, + 1.961547807800016131e-08, + 1.961525426879338116e-08, + 1.961499792662164494e-08, + 1.961470906328286761e-08, + 1.961438769062509127e-08, + 1.961403382054717667e-08, + 1.961364746499972638e-08, + 1.961322863598349327e-08, + 1.961277734555034005e-08, + 1.961229360580306058e-08, + 1.961177742889443031e-08, + 1.961122882702909219e-08, + 1.961064781246132334e-08, + 1.961003439749682833e-08, + 1.960938859449165067e-08, + 1.960871041585203707e-08, + 1.960799987403522500e-08, + 1.960725698154869155e-08, + 1.960648175095063323e-08, + 1.960567419484929426e-08, + 1.960483432590310560e-08, + 1.960396215682198522e-08, + 1.960305770036445952e-08, + 1.960212096934096547e-08, + 1.960115197661091242e-08, + 1.960015073508430672e-08, + 1.959911725772168551e-08, + 1.959805155753284954e-08, + 1.959695364757837847e-08, + 1.959582354096858870e-08, + 1.959466125086397011e-08, + 1.959346679047470958e-08, + 1.959224017306073400e-08, + 1.959098141193230258e-08, + 1.958969052044912996e-08, + 1.958836751202091569e-08, + 1.958701240010707285e-08, + 1.958562519821648656e-08, + 1.958420591990808303e-08, + 1.958275457879001235e-08, + 1.958127118852048560e-08, + 1.957975576280665313e-08, + 1.957820831540546822e-08, + 1.957662886012359767e-08, + 1.957501741081663109e-08, + 1.957337398139007676e-08, + 1.957169858579828631e-08, + 1.956999123804493122e-08, + 1.956825195218357848e-08, + 1.956648074231609251e-08, + 1.956467762259412406e-08, + 1.956284260721849485e-08, + 1.956097571043865152e-08, + 1.955907694655349294e-08, + 1.955714632991071497e-08, + 1.955518387490716126e-08, + 1.955318959598839639e-08, + 1.955116350764901689e-08, + 1.954910562443251561e-08, + 1.954701596093092434e-08, + 1.954489453178539618e-08, + 1.954274135168549743e-08, + 1.954055643536956499e-08, + 1.953833979762466661e-08, + 1.953609145328635274e-08, + 1.953381141723872274e-08, + 1.953149970441455387e-08, + 1.952915632979490428e-08, + 1.952678130840939755e-08, + 1.952437465533575284e-08, + 1.952193638570044996e-08, + 1.951946651467788894e-08, + 1.951696505749093599e-08, + 1.951443202941080436e-08, + 1.951186744575646210e-08, + 1.950927132189550554e-08, + 1.950664367324307406e-08, + 1.950398451526288901e-08, + 1.950129386346626438e-08, + 1.949857173341267927e-08, + 1.949581814070934437e-08, + 1.949303310101168511e-08, + 1.949021663002271626e-08, + 1.948736874349310810e-08, + 1.948448945722151735e-08, + 1.948157878705431248e-08, + 1.947863674888515022e-08, + 1.947566335865565057e-08, + 1.947265863235512873e-08, + 1.946962258602003266e-08, + 1.946655523573454528e-08, + 1.946345659763009804e-08, + 1.946032668788572500e-08, + 1.945716552272763596e-08, + 1.945397311842930584e-08, + 1.945074949131195774e-08, + 1.944749465774334530e-08, + 1.944420863413882808e-08, + 1.944089143696081235e-08, + 1.943754308271865185e-08, + 1.943416358796892903e-08, + 1.943075296931508114e-08, + 1.942731124340746314e-08, + 1.942383842694364212e-08, + 1.942033453666769260e-08, + 1.941679958937074574e-08, + 1.941323360189056253e-08, + 1.940963659111162972e-08, + 1.940600857396525913e-08, + 1.940234956742908135e-08, + 1.939865958852789285e-08, + 1.939493865433246807e-08, + 1.939118678196035027e-08, + 1.938740398857556031e-08, + 1.938359029138843787e-08, + 1.937974570765573408e-08, + 1.937587025468048247e-08, + 1.937196394981190966e-08, + 1.936802681044584231e-08, + 1.936405885402398581e-08, + 1.936006009803417247e-08, + 1.935603056001035156e-08, + 1.935197025753269522e-08, + 1.934787920822719146e-08, + 1.934375742976568055e-08, + 1.933960493986639438e-08, + 1.933542175629291418e-08, + 1.933120789685496133e-08, + 1.932696337940780835e-08, + 1.932268822185258340e-08, + 1.931838244213616100e-08, + 1.931404605825068561e-08, + 1.930967908823448486e-08, + 1.930528155017099418e-08, + 1.930085346218918364e-08, + 1.929639484246369029e-08, + 1.929190570921426231e-08, + 1.928738608070631157e-08, + 1.928283597525010295e-08, + 1.927825541120166761e-08, + 1.927364440696210149e-08, + 1.926900298097743299e-08, + 1.926433115173921192e-08, + 1.925962893778361943e-08, + 1.925489635769209338e-08, + 1.925013343009126549e-08, + 1.924534017365194221e-08, + 1.924051660709097417e-08, + 1.923566274916911877e-08, + 1.923077861869213864e-08, + 1.922586423451088435e-08, + 1.922091961552038789e-08, + 1.921594478066072946e-08, + 1.921093974891624013e-08, + 1.920590453931627938e-08, + 1.920083917093418622e-08, + 1.919574366288814940e-08, + 1.919061803434077064e-08, + 1.918546230449841616e-08, + 1.918027649261266252e-08, + 1.917506061797866881e-08, + 1.916981469993582510e-08, + 1.916453875786851349e-08, + 1.915923281120404671e-08, + 1.915389687941481227e-08, + 1.914853098201646251e-08, + 1.914313513856903626e-08, + 1.913770936867662472e-08, + 1.913225369198657730e-08, + 1.912676812819099390e-08, + 1.912125269702494147e-08, + 1.911570741826743674e-08, + 1.911013231174157192e-08, + 1.910452739731353533e-08, + 1.909889269489352460e-08, + 1.909322822443469784e-08, + 1.908753400593434156e-08, + 1.908181005943309317e-08, + 1.907605640501437847e-08, + 1.907027306280597007e-08, + 1.906446005297770438e-08, + 1.905861739574377451e-08, + 1.905274511136077821e-08, + 1.904684322012867728e-08, + 1.904091174239123776e-08, + 1.903495069853407437e-08, + 1.902896010898663250e-08, + 1.902293999422085144e-08, + 1.901689037475174675e-08, + 1.901081127113746320e-08, + 1.900470270397836814e-08, + 1.899856469391790520e-08, + 1.899239726164204832e-08, + 1.898620042787982784e-08, + 1.897997421340259597e-08, + 1.897371863902389777e-08, + 1.896743372560034129e-08, + 1.896111949403043627e-08, + 1.895477596525560986e-08, + 1.894840316025964088e-08, + 1.894200110006779291e-08, + 1.893556980574877304e-08, + 1.892910929841243235e-08, + 1.892261959921139374e-08, + 1.891610072933987079e-08, + 1.890955271003433936e-08, + 1.890297556257400416e-08, + 1.889636930827871427e-08, + 1.888973396851109390e-08, + 1.888306956467496418e-08, + 1.887637611821672619e-08, + 1.886965365062406062e-08, + 1.886290218342599398e-08, + 1.885612173819383161e-08, + 1.884931233653992025e-08, + 1.884247400011870352e-08, + 1.883560675062576901e-08, + 1.882871060979773246e-08, + 1.882178559941365389e-08, + 1.881483174129271822e-08, + 1.880784905729593592e-08, + 1.880083756932603713e-08, + 1.879379729932578425e-08, + 1.878672826928028469e-08, + 1.877963050121462184e-08, + 1.877250401719543335e-08, + 1.876534883933077876e-08, + 1.875816498976855464e-08, + 1.875095249069829449e-08, + 1.874371136435007362e-08, + 1.873644163299502857e-08, + 1.872914331894411306e-08, + 1.872181644455011297e-08, + 1.871446103220590267e-08, + 1.870707710434431597e-08, + 1.869966468343976739e-08, + 1.869222379200626363e-08, + 1.868475445259860464e-08, + 1.867725668781202293e-08, + 1.866973052028120423e-08, + 1.866217597268244147e-08, + 1.865459306773097453e-08, + 1.864698182818249243e-08, + 1.863934227683362633e-08, + 1.863167443651981869e-08, + 1.862397833011722249e-08, + 1.861625398054128512e-08, + 1.860850141074771118e-08, + 1.860072064373263784e-08, + 1.859291170253062320e-08, + 1.858507461021689614e-08, + 1.857720938990576818e-08, + 1.856931606475230768e-08, + 1.856139465794899143e-08, + 1.855344519272982397e-08, + 1.854546769236757487e-08, + 1.853746218017357020e-08, + 1.852942867949998555e-08, + 1.852136721373706996e-08, + 1.851327780631450253e-08, + 1.850516048070198796e-08, + 1.849701526040707612e-08, + 1.848884216897743847e-08, + 1.848064122999878683e-08, + 1.847241246709629946e-08, + 1.846415590393466739e-08, + 1.845587156421631764e-08, + 1.844755947168338850e-08, + 1.843921965011561197e-08, + 1.843085212333278207e-08, + 1.842245691519265709e-08, + 1.841403404959118459e-08, + 1.840558355046358008e-08, + 1.839710544178259979e-08, + 1.838859974756074766e-08, + 1.838006649184802207e-08, + 1.837150569873213090e-08, + 1.836291739234098303e-08, + 1.835430159683799983e-08, + 1.834565833642720402e-08, + 1.833698763534921941e-08, + 1.832828951788308075e-08, + 1.831956400834658449e-08, + 1.831081113109405869e-08, + 1.830203091051890078e-08, + 1.829322337105094057e-08, + 1.828438853715957353e-08, + 1.827552643335072677e-08, + 1.826663708416795086e-08, + 1.825772051419311139e-08, + 1.824877674804439710e-08, + 1.823980581037886760e-08, + 1.823080772589057401e-08, + 1.822178251930986416e-08, + 1.821273021540646958e-08, + 1.820365083898494280e-08, + 1.819454441488923332e-08, + 1.818541096799939870e-08, + 1.817625052323209762e-08, + 1.816706310554261808e-08, + 1.815784873992143302e-08, + 1.814860745139685728e-08, + 1.813933926503488208e-08, + 1.813004420593612443e-08, + 1.812072229924052222e-08, + 1.811137357012259940e-08, + 1.810199804379496000e-08, + 1.809259574550549227e-08, + 1.808316670054013477e-08, + 1.807371093422054043e-08, + 1.806422847190420884e-08, + 1.805471933898679581e-08, + 1.804518356089757375e-08, + 1.803562116310461978e-08, + 1.802603217111121251e-08, + 1.801641661045595778e-08, + 1.800677450671533639e-08, + 1.799710588550034902e-08, + 1.798741077245837245e-08, + 1.797768919327398345e-08, + 1.796794117366474009e-08, + 1.795816673938728642e-08, + 1.794836591623159524e-08, + 1.793853873002429006e-08, + 1.792868520662831423e-08, + 1.791880537194089610e-08, + 1.790889925189582872e-08, + 1.789896687246123309e-08, + 1.788900825964211921e-08, + 1.787902343947703095e-08, + 1.786901243804178495e-08, + 1.785897528144645305e-08, + 1.784891199583562699e-08, + 1.783882260739093635e-08, + 1.782870714232698544e-08, + 1.781856562689420542e-08, + 1.780839808737951934e-08, + 1.779820455010136914e-08, + 1.778798504141656473e-08, + 1.777773958771416279e-08, + 1.776746821541911967e-08, + 1.775717095099179834e-08, + 1.774684782092526851e-08, + 1.773649885174884031e-08, + 1.772612407002504013e-08, + 1.771572350235132126e-08, + 1.770529717536069251e-08, + 1.769484511571860469e-08, + 1.768436735012617006e-08, + 1.767386390531726382e-08, + 1.766333480806177993e-08, + 1.765278008516281870e-08, + 1.764219976345676618e-08, + 1.763159386981532240e-08, + 1.762096243114265922e-08, + 1.761030547437894738e-08, + 1.759962302649588976e-08, + 1.758891511449978853e-08, + 1.757818176543201833e-08, + 1.756742300636519146e-08, + 1.755663886440738970e-08, + 1.754582936669874976e-08, + 1.753499454041379257e-08, + 1.752413441276125457e-08, + 1.751324901098115617e-08, + 1.750233836234866634e-08, + 1.749140249417028434e-08, + 1.748044143378794585e-08, + 1.746945520857543631e-08, + 1.745844384593916516e-08, + 1.744740737331986654e-08, + 1.743634581818929385e-08, + 1.742525920805428949e-08, + 1.741414757045356879e-08, + 1.740301093295736928e-08, + 1.739184932317129212e-08, + 1.738066276873082614e-08, + 1.736945129730632751e-08, + 1.735821493659877462e-08, + 1.734695371434253416e-08, + 1.733566765830541079e-08, + 1.732435679628549722e-08, + 1.731302115611485017e-08, + 1.730166076565594346e-08, + 1.729027565280596273e-08, + 1.727886584549261326e-08, + 1.726743137167531113e-08, + 1.725597225934665559e-08, + 1.724448853652962659e-08, + 1.723298023128107878e-08, + 1.722144737168853866e-08, + 1.720988998587059834e-08, + 1.719830810197972129e-08, + 1.718670174819761351e-08, + 1.717507095273895570e-08, + 1.716341574385007981e-08, + 1.715173614980714260e-08, + 1.714003219892051967e-08, + 1.712830391952899858e-08, + 1.711655134000429531e-08, + 1.710477448875003849e-08, + 1.709297339419895694e-08, + 1.708114808481671451e-08, + 1.706929858909856163e-08, + 1.705742493557221726e-08, + 1.704552715279437482e-08, + 1.703360526935517559e-08, + 1.702165931387417211e-08, + 1.700968931500049359e-08, + 1.699769530141724979e-08, + 1.698567730183368942e-08, + 1.697363534499375641e-08, + 1.696156945967019053e-08, + 1.694947967466497073e-08, + 1.693736601881359993e-08, + 1.692522852097862322e-08, + 1.691306721005447519e-08, + 1.690088211496668579e-08, + 1.688867326466886608e-08, + 1.687644068814638757e-08, + 1.686418441441327530e-08, + 1.685190447251433867e-08, + 1.683960089152553206e-08, + 1.682727370055000426e-08, + 1.681492292872305823e-08, + 1.680254860520734020e-08, + 1.679015075919804100e-08, + 1.677772941991821751e-08, + 1.676528461662034778e-08, + 1.675281637858740636e-08, + 1.674032473513014120e-08, + 1.672780971559129892e-08, + 1.671527134934031429e-08, + 1.670270966577679101e-08, + 1.669012469433163660e-08, + 1.667751646446008762e-08, + 1.666488500565188730e-08, + 1.665223034742167038e-08, + 1.663955251931475009e-08, + 1.662685155090632402e-08, + 1.661412747179812572e-08, + 1.660138031162251761e-08, + 1.658861010003858331e-08, + 1.657581686673672023e-08, + 1.656300064143451682e-08, + 1.655016145387720595e-08, + 1.653729933384021916e-08, + 1.652441431112527581e-08, + 1.651150641556497226e-08, + 1.649857567701899007e-08, + 1.648562212537367248e-08, + 1.647264579054753674e-08, + 1.645964670248184759e-08, + 1.644662489115101984e-08, + 1.643358038655379735e-08, + 1.642051321871827233e-08, + 1.640742341770163723e-08, + 1.639431101358617121e-08, + 1.638117603648438192e-08, + 1.636801851653440639e-08, + 1.635483848390288960e-08, + 1.634163596878552709e-08, + 1.632841100140264787e-08, + 1.631516361200438921e-08, + 1.630189383086575674e-08, + 1.628860168829228238e-08, + 1.627528721461486269e-08, + 1.626195044019041074e-08, + 1.624859139540675298e-08, + 1.623521011067339129e-08, + 1.622180661643179976e-08, + 1.620838094314823149e-08, + 1.619493312131453255e-08, + 1.618146318145289661e-08, + 1.616797115410857251e-08, + 1.615445706985514831e-08, + 1.614092095929461415e-08, + 1.612736285305090360e-08, + 1.611378278177956839e-08, + 1.610018077615879190e-08, + 1.608655686689574857e-08, + 1.607291108472133303e-08, + 1.605924346039553685e-08, + 1.604555402470326624e-08, + 1.603184280845447779e-08, + 1.601810984248715956e-08, + 1.600435515766301323e-08, + 1.599057878487224513e-08, + 1.597678075503004575e-08, + 1.596296109907558058e-08, + 1.594911984797721127e-08, + 1.593525703272570285e-08, + 1.592137268433882282e-08, + 1.590746683386199628e-08, + 1.589353951236100031e-08, + 1.587959075093295550e-08, + 1.586562058069597297e-08, + 1.585162903279517958e-08, + 1.583761613840238701e-08, + 1.582358192871163495e-08, + 1.580952643494476299e-08, + 1.579544968834625559e-08, + 1.578135172018725561e-08, + 1.576723256176491575e-08, + 1.575309224439832889e-08, + 1.573893079943404365e-08, + 1.572474825824073078e-08, + 1.571054465221544326e-08, + 1.569632001277619813e-08, + 1.568207437136760132e-08, + 1.566780775945918006e-08, + 1.565352020854230246e-08, + 1.563921175013668245e-08, + 1.562488241578267046e-08, + 1.561053223704638527e-08, + 1.559616124551979668e-08, + 1.558176947281570623e-08, + 1.556735695057401388e-08, + 1.555292371045615607e-08, + 1.553846978414869237e-08, + 1.552399520336377202e-08, + 1.550949999983396898e-08, + 1.549498420531851231e-08, + 1.548044785159760833e-08, + 1.546589097047808539e-08, + 1.545131359378925456e-08, + 1.543671575338239354e-08, + 1.542209748113459140e-08, + 1.540745880894360013e-08, + 1.539279976873423710e-08, + 1.537812039245094041e-08, + 1.536342071206276835e-08, + 1.534870075956382293e-08, + 1.533396056696782027e-08, + 1.531920016631422167e-08, + 1.530441958966336314e-08, + 1.528961886909944983e-08, + 1.527479803673119789e-08, + 1.525995712468677216e-08, + 1.524509616512003962e-08, + 1.523021519020439864e-08, + 1.521531423213929057e-08, + 1.520039332314497520e-08, + 1.518545249546306684e-08, + 1.517049178135988934e-08, + 1.515551121312110603e-08, + 1.514051082305803275e-08, + 1.512549064350281708e-08, + 1.511045070680765414e-08, + 1.509539104535148675e-08, + 1.508031169152904697e-08, + 1.506521267776261528e-08, + 1.505009403649418552e-08, + 1.503495580018575608e-08, + 1.501979800132520948e-08, + 1.500462067241804055e-08, + 1.498942384599416252e-08, + 1.497420755460228215e-08, + 1.495897183081611022e-08, + 1.494371670722882272e-08, + 1.492844221645411966e-08, + 1.491314839112907052e-08, + 1.489783526390940270e-08, + 1.488250286747525205e-08, + 1.486715123452615012e-08, + 1.485178039778103248e-08, + 1.483639038998446076e-08, + 1.482098124389558970e-08, + 1.480555299229999089e-08, + 1.479010566800218001e-08, + 1.477463930382528594e-08, + 1.475915393261726458e-08, + 1.474364958724274283e-08, + 1.472812630058856398e-08, + 1.471258410556430557e-08, + 1.469702303509421603e-08, + 1.468144312212944699e-08, + 1.466584439963657866e-08, + 1.465022690060546976e-08, + 1.463459065804319431e-08, + 1.461893570498035629e-08, + 1.460326207446594958e-08, + 1.458756979956724873e-08, + 1.457185891337580274e-08, + 1.455612944899711681e-08, + 1.454038143956192514e-08, + 1.452461491821842869e-08, + 1.450882991813275173e-08, + 1.449302647249476694e-08, + 1.447720461450975403e-08, + 1.446136437740404777e-08, + 1.444550579442615800e-08, + 1.442962889883763588e-08, + 1.441373372392595805e-08, + 1.439782030299314468e-08, + 1.438188866936206417e-08, + 1.436593885637645138e-08, + 1.434997089739540523e-08, + 1.433398482580039325e-08, + 1.431798067498881944e-08, + 1.430195847837848442e-08, + 1.428591826940763174e-08, + 1.426986008152959108e-08, + 1.425378394821935765e-08, + 1.423768990296756695e-08, + 1.422157797928743324e-08, + 1.420544821070663153e-08, + 1.418930063077279671e-08, + 1.417313527305446817e-08, + 1.415695217113227869e-08, + 1.414075135861177903e-08, + 1.412453286911177965e-08, + 1.410829673627087058e-08, + 1.409204299374776050e-08, + 1.407577167521522516e-08, + 1.405948281436699110e-08, + 1.404317644491212083e-08, + 1.402685260057867551e-08, + 1.401051131511432712e-08, + 1.399415262228057975e-08, + 1.397777655585945984e-08, + 1.396138314964771928e-08, + 1.394497243746302113e-08, + 1.392854445313855789e-08, + 1.391209923052355947e-08, + 1.389563680348701380e-08, + 1.387915720591198744e-08, + 1.386266047170228601e-08, + 1.384614663477711061e-08, + 1.382961572907051024e-08, + 1.381306778853800420e-08, + 1.379650284714750959e-08, + 1.377992093888680077e-08, + 1.376332209775798717e-08, + 1.374670635778089972e-08, + 1.373007375299415960e-08, + 1.371342431744891150e-08, + 1.369675808521597873e-08, + 1.368007509037935994e-08, + 1.366337536704323698e-08, + 1.364665894932624420e-08, + 1.362992587136185724e-08, + 1.361317616730212192e-08, + 1.359640987131232559e-08, + 1.357962701757731675e-08, + 1.356282764029607547e-08, + 1.354601177368148836e-08, + 1.352917945196678077e-08, + 1.351233070939650709e-08, + 1.349546558023334360e-08, + 1.347858409875583192e-08, + 1.346168629925526709e-08, + 1.344477221604310425e-08, + 1.342784188344162466e-08, + 1.341089533579179722e-08, + 1.339393260744664124e-08, + 1.337695373277822762e-08, + 1.335995874617185720e-08, + 1.334294768202695411e-08, + 1.332592057476024543e-08, + 1.330887745880029024e-08, + 1.329181836859448747e-08, + 1.327474333860320462e-08, + 1.325765240329958744e-08, + 1.324054559717596567e-08, + 1.322342295473506837e-08, + 1.320628451049660827e-08, + 1.318913029899491437e-08, + 1.317196035477606991e-08, + 1.315477471240526270e-08, + 1.313757340645743798e-08, + 1.312035647152366437e-08, + 1.310312394221140027e-08, + 1.308587585313824365e-08, + 1.306861223893904250e-08, + 1.305133313426012774e-08, + 1.303403857376314140e-08, + 1.301672859212558587e-08, + 1.299940322403475240e-08, + 1.298206250419498538e-08, + 1.296470646732130978e-08, + 1.294733514814742664e-08, + 1.292994858141329048e-08, + 1.291254680187909033e-08, + 1.289512984431587112e-08, + 1.287769774350591255e-08, + 1.286025053424952853e-08, + 1.284278825135581099e-08, + 1.282531092964871629e-08, + 1.280781860396753179e-08, + 1.279031130916056440e-08, + 1.277278908009244295e-08, + 1.275525195163795738e-08, + 1.273769995868632862e-08, + 1.272013313614130452e-08, + 1.270255151891566412e-08, + 1.268495514193802034e-08, + 1.266734404014622405e-08, + 1.264971824849476733e-08, + 1.263207780194857634e-08, + 1.261442273548368129e-08, + 1.259675308409102647e-08, + 1.257906888277077096e-08, + 1.256137016653980605e-08, + 1.254365697042238658e-08, + 1.252592932945698994e-08, + 1.250818727869693647e-08, + 1.249043085320050129e-08, + 1.247266008804548265e-08, + 1.245487501831617052e-08, + 1.243707567911043716e-08, + 1.241926210554004983e-08, + 1.240143433272430808e-08, + 1.238359239579748509e-08, + 1.236573632990197530e-08, + 1.234786617019573738e-08, + 1.232998195184594975e-08, + 1.231208371002996847e-08, + 1.229417147993901149e-08, + 1.227624529677199779e-08, + 1.225830519574323856e-08, + 1.224035121207601824e-08, + 1.222238338100241086e-08, + 1.220440173777105230e-08, + 1.218640631763400128e-08, + 1.216839715586081142e-08, + 1.215037428772916254e-08, + 1.213233774852522300e-08, + 1.211428757355070057e-08, + 1.209622379811295101e-08, + 1.207814645753337890e-08, + 1.206005558714083514e-08, + 1.204195122227625569e-08, + 1.202383339829268482e-08, + 1.200570215054931935e-08, + 1.198755751441900292e-08, + 1.196939952528110068e-08, + 1.195122821852931446e-08, + 1.193304362956518777e-08, + 1.191484579379812895e-08, + 1.189663474665300965e-08, + 1.187841052355659909e-08, + 1.186017315995249958e-08, + 1.184192269129129984e-08, + 1.182365915303080654e-08, + 1.180538258064339963e-08, + 1.178709300960614917e-08, + 1.176879047540735998e-08, + 1.175047501354774791e-08, + 1.173214665952998757e-08, + 1.171380544887388117e-08, + 1.169545141710273321e-08, + 1.167708459975091750e-08, + 1.165870503236401120e-08, + 1.164031275049245199e-08, + 1.162190778969886688e-08, + 1.160349018555195768e-08, + 1.158505997363205637e-08, + 1.156661718952446794e-08, + 1.154816186882768925e-08, + 1.152969404714630854e-08, + 1.151121376009156455e-08, + 1.149272104328803019e-08, + 1.147421593236352423e-08, + 1.145569846295646491e-08, + 1.143716867071634977e-08, + 1.141862659129362094e-08, + 1.140007226035484729e-08, + 1.138150571356862429e-08, + 1.136292698661417832e-08, + 1.134433611518042866e-08, + 1.132573313495988954e-08, + 1.130711808165659943e-08, + 1.128849099097930019e-08, + 1.126985189864594680e-08, + 1.125120084038416729e-08, + 1.123253785192499270e-08, + 1.121386296901038446e-08, + 1.119517622738597667e-08, + 1.117647766281015854e-08, + 1.115776731104321024e-08, + 1.113904520785566400e-08, + 1.112031138902519724e-08, + 1.110156589033372917e-08, + 1.108280874757530214e-08, + 1.106403999654566252e-08, + 1.104525967304979294e-08, + 1.102646781290168738e-08, + 1.100766445191768403e-08, + 1.098884962592455181e-08, + 1.097002337075253878e-08, + 1.095118572224039807e-08, + 1.093233671623524231e-08, + 1.091347638858627852e-08, + 1.089460477515288972e-08, + 1.087572191179696197e-08, + 1.085682783439123560e-08, + 1.083792257881223777e-08, + 1.081900618094141404e-08, + 1.080007867666900789e-08, + 1.078114010188765003e-08, + 1.076219049250036221e-08, + 1.074322988441386202e-08, + 1.072425831353832634e-08, + 1.070527581579508905e-08, + 1.068628242710572389e-08, + 1.066727818340139662e-08, + 1.064826312061573964e-08, + 1.062923727468930719e-08, + 1.061020068157044060e-08, + 1.059115337720832989e-08, + 1.057209539756120448e-08, + 1.055302677858870831e-08, + 1.053394755626041643e-08, + 1.051485776654857402e-08, + 1.049575744542895668e-08, + 1.047664662888544473e-08, + 1.045752535290296900e-08, + 1.043839365347597289e-08, + 1.041925156660128375e-08, + 1.040009912827841231e-08, + 1.038093637451665812e-08, + 1.036176334132469541e-08, + 1.034258006471873735e-08, + 1.032338658071955482e-08, + 1.030418292534917773e-08, + 1.028496913463948768e-08, + 1.026574524462112218e-08, + 1.024651129133297237e-08, + 1.022726731081417092e-08, + 1.020801333911247633e-08, + 1.018874941227757446e-08, + 1.016947556636135308e-08, + 1.015019183742294114e-08, + 1.013089826152117805e-08, + 1.011159487472363661e-08, + 1.009228171309911383e-08, + 1.007295881271771700e-08, + 1.005362620965947293e-08, + 1.003428393999926669e-08, + 1.001493203982335047e-08, + 9.995570545218194835e-09, + 9.976199492271251376e-09, + 9.956818917078882080e-09, + 9.937428855735041840e-09, + 9.918029344339187953e-09, + 9.898620418996299972e-09, + 9.879202115809622027e-09, + 9.859774470889326712e-09, + 9.840337520345234244e-09, + 9.820891300291845024e-09, + 9.801435846848528243e-09, + 9.781971196132770423e-09, + 9.762497384268592819e-09, + 9.743014447378727934e-09, + 9.723522421594668117e-09, + 9.704021343041696896e-09, + 9.684511247855521931e-09, + 9.664992172170911206e-09, + 9.645464152122508626e-09, + 9.625927223852791496e-09, + 9.606381423500777854e-09, + 9.586826787210008759e-09, + 9.567263351129165372e-09, + 9.547691151400931795e-09, + 9.528110224178778563e-09, + 9.508520605611520840e-09, + 9.488922331852114657e-09, + 9.469315439057701577e-09, + 9.449699963382212048e-09, + 9.430075940985217892e-09, + 9.410443408023682001e-09, + 9.390802400661070562e-09, + 9.371152955059691709e-09, + 9.351495107381511123e-09, + 9.331828893793153167e-09, + 9.312154350458256080e-09, + 9.292471513546600747e-09, + 9.272780419226459274e-09, + 9.253081103664849760e-09, + 9.233373603036177030e-09, + 9.213657953506852033e-09, + 9.193934191252993510e-09, + 9.174202352444992805e-09, + 9.154462473256458993e-09, + 9.134714589863988926e-09, + 9.114958738439926092e-09, + 9.095194955161309059e-09, + 9.075423276202266371e-09, + 9.055643737738946547e-09, + 9.035856375950336993e-09, + 9.016061227010759813e-09, + 8.996258327098873193e-09, + 8.976447712389306949e-09, + 8.956629419061902136e-09, + 8.936803483293814780e-09, + 8.916969941259891418e-09, + 8.897128829141288321e-09, + 8.877280183110100825e-09, + 8.857424039346393323e-09, + 8.837560434026550908e-09, + 8.817689403324271991e-09, + 8.797810983418558865e-09, + 8.777925210482213278e-09, + 8.758032120691572347e-09, + 8.738131750219092057e-09, + 8.718224135238255752e-09, + 8.698309311924225953e-09, + 8.678387316446495685e-09, + 8.658458184977896474e-09, + 8.638521953686172684e-09, + 8.618578658742989517e-09, + 8.598628336316617424e-09, + 8.578671022572516097e-09, + 8.558706753678319059e-09, + 8.538735565796395656e-09, + 8.518757495092561268e-09, + 8.498772577729205091e-09, + 8.478780849864462961e-09, + 8.458782347661010280e-09, + 8.438777107274175431e-09, + 8.418765164860125561e-09, + 8.398746556576776474e-09, + 8.378721318571942445e-09, + 8.358689487001001489e-09, + 8.338651098010662768e-09, + 8.318606187748336893e-09, + 8.298554792361915894e-09, + 8.278496947992330250e-09, + 8.258432690782657799e-09, + 8.238362056870315157e-09, + 8.218285082394144998e-09, + 8.198201803486380823e-09, + 8.178112256281921309e-09, + 8.158016476910870795e-09, + 8.137914501498342411e-09, + 8.117806366172817567e-09, + 8.097692107054340431e-09, + 8.077571760263628496e-09, + 8.057445361918950800e-09, + 8.037312948132177311e-09, + 8.017174555018410621e-09, + 7.997030218683991823e-09, + 7.976879975234800444e-09, + 7.956723860776299112e-09, + 7.936561911405772948e-09, + 7.916394163221799127e-09, + 7.896220652316213305e-09, + 7.876041414779358902e-09, + 7.855856486700891125e-09, + 7.835665904161917094e-09, + 7.815469703244460450e-09, + 7.795267920022835505e-09, + 7.775060590574432033e-09, + 7.754847750964045154e-09, + 7.734629437260976467e-09, + 7.714405685527544515e-09, + 7.694176531819814354e-09, + 7.673942012195751900e-09, + 7.653702162703693035e-09, + 7.633457019390415229e-09, + 7.613206618301332763e-09, + 7.592950995472631887e-09, + 7.572690186940555101e-09, + 7.552424228733802673e-09, + 7.532153156878551968e-09, + 7.511877007399061294e-09, + 7.491595816310218656e-09, + 7.471309619626784672e-09, + 7.451018453354627772e-09, + 7.430722353500216916e-09, + 7.410421356062805569e-09, + 7.390115497035306027e-09, + 7.369804812409291385e-09, + 7.349489338167276278e-09, + 7.329169110291898595e-09, + 7.308844164758562529e-09, + 7.288514537534920763e-09, + 7.268180264590469767e-09, + 7.247841381880227866e-09, + 7.227497925363401404e-09, + 7.207149930987202603e-09, + 7.186797434696042854e-09, + 7.166440472431660926e-09, + 7.146079080125182861e-09, + 7.125713293706530325e-09, + 7.105343149095874181e-09, + 7.084968682212932823e-09, + 7.064589928969194199e-09, + 7.044206925268730580e-09, + 7.023819707013250157e-09, + 7.003428310094477879e-09, + 6.983032770403252783e-09, + 6.962633123821988245e-09, + 6.942229406224506542e-09, + 6.921821653485385169e-09, + 6.901409901463732514e-09, + 6.880994186020920960e-09, + 6.860574543008841745e-09, + 6.840151008270404580e-09, + 6.819723617648161836e-09, + 6.799292406972258998e-09, + 6.778857412068953805e-09, + 6.758418668761369808e-09, + 6.737976212857444350e-09, + 6.717530080168041337e-09, + 6.697080306490300922e-09, + 6.676626927618900744e-09, + 6.656169979337451588e-09, + 6.635709497427764299e-09, + 6.615245517662166091e-09, + 6.594778075803416185e-09, + 6.574307207614002482e-09, + 6.553832948839967710e-09, + 6.533355335228646649e-09, + 6.512874402516780379e-09, + 6.492390186431112675e-09, + 6.471902722697173011e-09, + 6.451412047026991271e-09, + 6.430918195127647495e-09, + 6.410421202702276066e-09, + 6.389921105437702679e-09, + 6.369417939022590193e-09, + 6.348911739130972781e-09, + 6.328402541431757749e-09, + 6.307890381588551002e-09, + 6.287375295251925388e-09, + 6.266857318068804235e-09, + 6.246336485674758644e-09, + 6.225812833700600116e-09, + 6.205286397764759744e-09, + 6.184757213482708965e-09, + 6.164225316459057511e-09, + 6.143690742287507907e-09, + 6.123153526559441611e-09, + 6.102613704851943918e-09, + 6.082071312735987260e-09, + 6.061526385777643020e-09, + 6.040978959525673831e-09, + 6.020429069529720789e-09, + 5.999876751323808648e-09, + 5.979322040435778987e-09, + 5.958764972387365484e-09, + 5.938205582686076790e-09, + 5.917643906834887782e-09, + 5.897079980324321784e-09, + 5.876513838637581575e-09, + 5.855945517251348438e-09, + 5.835375051627941324e-09, + 5.814802477224779788e-09, + 5.794227829485771394e-09, + 5.773651143850547179e-09, + 5.753072455746806103e-09, + 5.732491800591071912e-09, + 5.711909213793810085e-09, + 5.691324730751572093e-09, + 5.670738386857349223e-09, + 5.650150217488453553e-09, + 5.629560258014967604e-09, + 5.608968543799852696e-09, + 5.588375110190961699e-09, + 5.567779992530585517e-09, + 5.547183226147565099e-09, + 5.526584846362491921e-09, + 5.505984888488439217e-09, + 5.485383387823186474e-09, + 5.464780379658588916e-09, + 5.444175899271946693e-09, + 5.423569981935468663e-09, + 5.402962662908360399e-09, + 5.382353977437667097e-09, + 5.361743960763434348e-09, + 5.341132648110896247e-09, + 5.320520074699796065e-09, + 5.299906275736676098e-09, + 5.279291286414751932e-09, + 5.258675141922570551e-09, + 5.238057877431764744e-09, + 5.217439528107409416e-09, + 5.196820129100238642e-09, + 5.176199715551654242e-09, + 5.155578322594702687e-09, + 5.134955985346031592e-09, + 5.114332738915515617e-09, + 5.093708618397427142e-09, + 5.073083658880066303e-09, + 5.052457895437704250e-09, + 5.031831363131570807e-09, + 5.011204097014871317e-09, + 4.990576132124976405e-09, + 4.969947503492964333e-09, + 4.949318246135642845e-09, + 4.928688395055530135e-09, + 4.908057985249580786e-09, + 4.887427051696878140e-09, + 4.866795629368091458e-09, + 4.846163753222034852e-09, + 4.825531458202087239e-09, + 4.804898779245750420e-09, + 4.784265751272338150e-09, + 4.763632409191686346e-09, + 4.742998787904043903e-09, + 4.722364922292279825e-09, + 4.701730847231294884e-09, + 4.681096597580153478e-09, + 4.660462208189041051e-09, + 4.639827713891301648e-09, + 4.619193149513091114e-09, + 4.598558549865311259e-09, + 4.577923949743671064e-09, + 4.557289383938259645e-09, + 4.536654887216679215e-09, + 4.516020494342625212e-09, + 4.495386240063441366e-09, + 4.474752159110913797e-09, + 4.454118286210030025e-09, + 4.433484656066698651e-09, + 4.412851303376356995e-09, + 4.392218262823979371e-09, + 4.371585569076108027e-09, + 4.350953256790473254e-09, + 4.330321360607982975e-09, + 4.309689915157996840e-09, + 4.289058955059140179e-09, + 4.268428514911361410e-09, + 4.247798629305444616e-09, + 4.227169332814241435e-09, + 4.206540660002335830e-09, + 4.185912645417968334e-09, + 4.165285323593927742e-09, + 4.144658729052741677e-09, + 4.124032896298759638e-09, + 4.103407859828598643e-09, + 4.082783654118776871e-09, + 4.062160313634466896e-09, + 4.041537872830384072e-09, + 4.020916366138270468e-09, + 4.000295827985466722e-09, + 3.979676292778007783e-09, + 3.959057794910435753e-09, + 3.938440368765537670e-09, + 3.917824048706467438e-09, + 3.897208869086403166e-09, + 3.876594864239588796e-09, + 3.855982068491098976e-09, + 3.835370516148746745e-09, + 3.814760241504002539e-09, + 3.794151278837151654e-09, + 3.773543662409314440e-09, + 3.752937426472138376e-09, + 3.732332605259776895e-09, + 3.711729232988834383e-09, + 3.691127343868023094e-09, + 3.670526972081379243e-09, + 3.649928151807566923e-09, + 3.629330917203033393e-09, + 3.608735302411787186e-09, + 3.588141341565230189e-09, + 3.567549068774179485e-09, + 3.546958518138595825e-09, + 3.526369723739444998e-09, + 3.505782719644152261e-09, + 3.485197539907238851e-09, + 3.464614218562362859e-09, + 3.444032789632061758e-09, + 3.423453287118787833e-09, + 3.402875745014619288e-09, + 3.382300197293215491e-09, + 3.361726677909819880e-09, + 3.341155220810887921e-09, + 3.320585859917194848e-09, + 3.300018629142452183e-09, + 3.279453562380806149e-09, + 3.258890693507688831e-09, + 3.238330056388617315e-09, + 3.217771684866718977e-09, + 3.197215612771609195e-09, + 3.176661873920154016e-09, + 3.156110502103998746e-09, + 3.135561531108199372e-09, + 3.115014994694265360e-09, + 3.094470926611692200e-09, + 3.073929360588948042e-09, + 3.053390330343340712e-09, + 3.032853869572788510e-09, + 3.012320011956777256e-09, + 2.991788791161610822e-09, + 2.971260240832317165e-09, + 2.950734394602481026e-09, + 2.930211286086049466e-09, + 2.909690948877422440e-09, + 2.889173416560196095e-09, + 2.868658722694669868e-09, + 2.848146900826733291e-09, + 2.827637984488676223e-09, + 2.807132007186678566e-09, + 2.786629002419463188e-09, + 2.766129003661282060e-09, + 2.745632044371770045e-09, + 2.725138157995780288e-09, + 2.704647377955346915e-09, + 2.684159737659471822e-09, + 2.663675270496006725e-09, + 2.643194009838770221e-09, + 2.622715989039421563e-09, + 2.602241241437322726e-09, + 2.581769800351331117e-09, + 2.561301699079803300e-09, + 2.540836970909517377e-09, + 2.520375649103041942e-09, + 2.499917766908555955e-09, + 2.479463357556207494e-09, + 2.459012454254541159e-09, + 2.438565090200182292e-09, + 2.418121298565340345e-09, + 2.397681112506687837e-09, + 2.377244565165287561e-09, + 2.356811689658535431e-09, + 2.336382519089895160e-09, + 2.315957086540838621e-09, + 2.295535425076180341e-09, + 2.275117567744822784e-09, + 2.254703547571793501e-09, + 2.234293397567912389e-09, + 2.213887150720877165e-09, + 2.193484840005018309e-09, + 2.173086498373182763e-09, + 2.152692158757665341e-09, + 2.132301854075390602e-09, + 2.111915617219928485e-09, + 2.091533481072095461e-09, + 2.071155478487459550e-09, + 2.050781642305169240e-09, + 2.030412005347935699e-09, + 2.010046600413926818e-09, + 1.989685460286568474e-09, + 1.969328617726441474e-09, + 1.948976105476552755e-09, + 1.928627956263260179e-09, + 1.908284202788102878e-09, + 1.887944877737645537e-09, + 1.867610013774432341e-09, + 1.847279643546836423e-09, + 1.826953799680904486e-09, + 1.806632514781230715e-09, + 1.786315821436275141e-09, + 1.766003752210254367e-09, + 1.745696339652939532e-09, + 1.725393616291531528e-09, + 1.705095614630697402e-09, + 1.684802367161333297e-09, + 1.664513906348107320e-09, + 1.644230264639184912e-09, + 1.623951474462634539e-09, + 1.603677568222792651e-09, + 1.583408578310039917e-09, + 1.563144537088246490e-09, + 1.542885476905478410e-09, + 1.522631430084953625e-09, + 1.502382428934860831e-09, + 1.482138505740258066e-09, + 1.461899692763938974e-09, + 1.441666022251707946e-09, + 1.421437526424323374e-09, + 1.401214237487277621e-09, + 1.380996187622662109e-09, + 1.360783408989199582e-09, + 1.340575933731922323e-09, + 1.320373793965269961e-09, + 1.300177021791677873e-09, + 1.279985649289123981e-09, + 1.259799708511905680e-09, + 1.239619231499584761e-09, + 1.219444250264371463e-09, + 1.199274796800065051e-09, + 1.179110903081945460e-09, + 1.158952601058770728e-09, + 1.138799922662464117e-09, + 1.118652899800100176e-09, + 1.098511564360961625e-09, + 1.078375948208484065e-09, + 1.058246083189978246e-09, + 1.038122001128613650e-09, + 1.018003733823333916e-09, + 9.978913130586268716e-10, + 9.777847705875392123e-10, + 9.576841381503693309e-10, + 9.375894474620885913e-10, + 9.175007302132574301e-10, + 8.974180180788132205e-10, + 8.773413427056277178e-10, + 8.572707357213035047e-10, + 8.372062287350531816e-10, + 8.171478533251771954e-10, + 7.970956410577281367e-10, + 7.770496234695159002e-10, + 7.570098320778918873e-10, + 7.369762983806700103e-10, + 7.169490538480982841e-10, + 6.969281299325816108e-10, + 6.769135580597488492e-10, + 6.569053696381933835e-10, + 6.369035960514057343e-10, + 6.169082686586430288e-10, + 5.969194188001910068e-10, + 5.769370777893461592e-10, + 5.569612769229997106e-10, + 5.369920474691912391e-10, + 5.170294206759132910e-10, + 4.970734277719756801e-10, + 4.771240999545236433e-10, + 4.571814684076225205e-10, + 4.372455642853662096e-10, + 4.173164187215868197e-10, + 3.973940628297984739e-10, + 3.774785276951877198e-10, + 3.575698443843128944e-10, + 3.376680439370805752e-10, + 3.177731573720180812e-10, + 2.978852156871120276e-10, + 2.780042498518020441e-10, + 2.581302908166601845e-10, + 2.382633695045112456e-10, + 2.184035168201099798e-10, + 1.985507636421370878e-10, + 1.787051408231580155e-10, + 1.588666791992987953e-10, + 1.390354095734124039e-10, + 1.192113627344723217e-10, + 9.939456944074252247e-11, + 7.958506042944938594e-11, + 5.978286641673873604e-11, + 3.998801808968105636e-11, + 2.020054611594211680e-11, + 4.204811357933107073e-13, +-1.935214623263637989e-11, +-3.911730539252432131e-11, +-5.887496577633574875e-11, +-7.862509683616780429e-11, +-9.836766805260747516e-11, +-1.181026489250817176e-10, +-1.378300089798334168e-10, +-1.575497177690821342e-10, +-1.772617448657826137e-10, +-1.969660598715949115e-10, +-2.166626324072404790e-10, +-2.363514321204759767e-10, +-2.560324286861274217e-10, +-2.757055917973369358e-10, +-2.953708911779269770e-10, +-3.150282965736402376e-10, +-3.346777777513101374e-10, +-3.543193045112114574e-10, +-3.739528466686410955e-10, +-3.935783740706623735e-10, +-4.131958565847223598e-10, +-4.328052641074799025e-10, +-4.524065665551900690e-10, +-4.719997338716474572e-10, +-4.915847360273496065e-10, +-5.111615430142832260e-10, +-5.307301248538469310e-10, +-5.502904515872604454e-10, +-5.698424932834859933e-10, +-5.893862200392853749e-10, +-6.089216019704862828e-10, +-6.284486092242945760e-10, +-6.479672119697010518e-10, +-6.674773804010350147e-10, +-6.869790847414944755e-10, +-7.064722952335617139e-10, +-7.259569821513076926e-10, +-7.454331157916808122e-10, +-7.649006664745335873e-10, +-7.843596045505579971e-10, +-8.038099003917077681e-10, +-8.232515243990822318e-10, +-8.426844469977498295e-10, +-8.621086386359021123e-10, +-8.815240697927711010e-10, +-9.009307109690468118e-10, +-9.203285326956610879e-10, +-9.397175055233473388e-10, +-9.590976000349243791e-10, +-9.784687868356931726e-10, +-9.978310365570066326e-10, +-1.017184319859779867e-09, +-1.036528607424954233e-09, +-1.055863869965726790e-09, +-1.075190078218877927e-09, +-1.094507202944848092e-09, +-1.113815214935560636e-09, +-1.133114085004914826e-09, +-1.152403783996664739e-09, +-1.171684282779222499e-09, +-1.190955552244845159e-09, +-1.210217563317493121e-09, +-1.229470286943313221e-09, +-1.248713694099363828e-09, +-1.267947755784096267e-09, +-1.287172443025215730e-09, +-1.306387726878862358e-09, +-1.325593578424424620e-09, +-1.344789968772402280e-09, +-1.363976869054029007e-09, +-1.383154250433484864e-09, +-1.402322084099203265e-09, +-1.421480341263101075e-09, +-1.440628993172718516e-09, +-1.459768011093081173e-09, +-1.478897366323204304e-09, +-1.498017030186552976e-09, +-1.517126974031186400e-09, +-1.536227169237478841e-09, +-1.555317587208692442e-09, +-1.574398199379668004e-09, +-1.593468977207336596e-09, +-1.612529892178549653e-09, +-1.631580915809261510e-09, +-1.650622019639351668e-09, +-1.669653175240489836e-09, +-1.688674354206624795e-09, +-1.707685528161815322e-09, +-1.726686668760272170e-09, +-1.745677747676910213e-09, +-1.764658736623758680e-09, +-1.783629607331884361e-09, +-1.802590331563566674e-09, +-1.821540881111366256e-09, +-1.840481227789631269e-09, +-1.859411343446567618e-09, +-1.878331199953941793e-09, +-1.897240769214859884e-09, +-1.916140023158643813e-09, +-1.935028933740076953e-09, +-1.953907472947041892e-09, +-1.972775612791234094e-09, +-1.991633325316721152e-09, +-2.010480582590554697e-09, +-2.029317356710537628e-09, +-2.048143619805256370e-09, +-2.066959344024675003e-09, +-2.085764501556502687e-09, +-2.104559064608175598e-09, +-2.123343005418914327e-09, +-2.142116296258916966e-09, +-2.160878909420832528e-09, +-2.179630817231764168e-09, +-2.198371992044737641e-09, +-2.217102406237960559e-09, +-2.235822032226733384e-09, +-2.254530842445587697e-09, +-2.273228809364537406e-09, +-2.291915905478047465e-09, +-2.310592103313553007e-09, +-2.329257375422160176e-09, +-2.347911694386329401e-09, +-2.366555032819105697e-09, +-2.385187363358958718e-09, +-2.403808658677543364e-09, +-2.422418891470379107e-09, +-2.441018034464520854e-09, +-2.459606060418584175e-09, +-2.478182942114301857e-09, +-2.496748652368489482e-09, +-2.515303164024503138e-09, +-2.533846449951501158e-09, +-2.552378483056327395e-09, +-2.570899236265730564e-09, +-2.589408682542527763e-09, +-2.607906794876303241e-09, +-2.626393546283493596e-09, +-2.644868909814941180e-09, +-2.663332858546708665e-09, +-2.681785365587704413e-09, +-2.700226404074635016e-09, +-2.718655947171188871e-09, +-2.737073968075702903e-09, +-2.755480440011874154e-09, +-2.773875336237310762e-09, +-2.792258630033320004e-09, +-2.810630294716839546e-09, +-2.828990303631191224e-09, +-2.847338630149467928e-09, +-2.865675247677924635e-09, +-2.884000129646762785e-09, +-2.902313249522031759e-09, +-2.920614580797094442e-09, +-2.938904096992756675e-09, +-2.957181771664866154e-09, +-2.975447578395095978e-09, +-2.993701490798521628e-09, +-3.011943482518621900e-09, +-3.030173527226483154e-09, +-3.048391598628410208e-09, +-3.066597670456703684e-09, +-3.084791716478041415e-09, +-3.102973710484363333e-09, +-3.121143626300426518e-09, +-3.139301437782981330e-09, +-3.157447118815755794e-09, +-3.175580643317139288e-09, +-3.193701985230879650e-09, +-3.211811118533709787e-09, +-3.229908017235350568e-09, +-3.247992655370225785e-09, +-3.266065007009174614e-09, +-3.284125046249437769e-09, +-3.302172747222272527e-09, +-3.320208084087880454e-09, +-3.338231031034704303e-09, +-3.356241562286892492e-09, +-3.374239652095198049e-09, +-3.392225274745336446e-09, +-3.410198404548878751e-09, +-3.428159015850726035e-09, +-3.446107083028390965e-09, +-3.464042580486937113e-09, +-3.481965482666579916e-09, +-3.499875764033544268e-09, +-3.517773399087550498e-09, +-3.535658362361890063e-09, +-3.553530628415129334e-09, +-3.571390171842816690e-09, +-3.589236967268291294e-09, +-3.607070989346098939e-09, +-3.624892212765305322e-09, +-3.642700612240458262e-09, +-3.660496162523188501e-09, +-3.678278838392315379e-09, +-3.696048614662080594e-09, +-3.713805466173265931e-09, +-3.731549367800474523e-09, +-3.749280294451404174e-09, +-3.766998221061969057e-09, +-3.784703122603687268e-09, +-3.802394974074681513e-09, +-3.820073750507098090e-09, +-3.837739426967247511e-09, +-3.855391978546421970e-09, +-3.873031380376610948e-09, +-3.890657607613323978e-09, +-3.908270635447096729e-09, +-3.925870439102652246e-09, +-3.943456993830778861e-09, +-3.961030274919888390e-09, +-3.978590257687694693e-09, +-3.996136917481395659e-09, +-4.013670229685009465e-09, +-4.031190169710422003e-09, +-4.048696713004719838e-09, +-4.066189835045447977e-09, +-4.083669511339640417e-09, +-4.101135717431413663e-09, +-4.118588428892833823e-09, +-4.136027621332184284e-09, +-4.153453270383399301e-09, +-4.170865351721537243e-09, +-4.188263841045797742e-09, +-4.205648714090801134e-09, +-4.223019946626013565e-09, +-4.240377514447426379e-09, +-4.257721393389072133e-09, +-4.275051559314926492e-09, +-4.292367988118158808e-09, +-4.309670655732414035e-09, +-4.326959538114951477e-09, +-4.344234611261926127e-09, +-4.361495851199673488e-09, +-4.378743233984582192e-09, +-4.395976735710508013e-09, +-4.413196332499841978e-09, +-4.430402000511684559e-09, +-4.447593715932951834e-09, +-4.464771454985620756e-09, +-4.481935193926117042e-09, +-4.499084909040323967e-09, +-4.516220576650919451e-09, +-4.533342173107814683e-09, +-4.550449674799354146e-09, +-4.567543058144310987e-09, +-4.584622299591212039e-09, +-4.601687375629522961e-09, +-4.618738262772801044e-09, +-4.635774937574031973e-09, +-4.652797376616783952e-09, +-4.669805556515302007e-09, +-4.686799453921671367e-09, +-4.703779045517066724e-09, +-4.720744308018964414e-09, +-4.737695218176507733e-09, +-4.754631752769506042e-09, +-4.771553888615816527e-09, +-4.788461602562520668e-09, +-4.805354871493969392e-09, +-4.822233672323025717e-09, +-4.839097981998204144e-09, +-4.855947777503860082e-09, +-4.872783035851295177e-09, +-4.889603734093932766e-09, +-4.906409849310740350e-09, +-4.923201358617265012e-09, +-4.939978239164951817e-09, +-4.956740468133204538e-09, +-4.973488022740436782e-09, +-4.990220880234815846e-09, +-5.006939017901145681e-09, +-5.023642413056295069e-09, +-5.040331043048429170e-09, +-5.057004885264091842e-09, +-5.073663917119612890e-09, +-5.090308116068933195e-09, +-5.106937459595112878e-09, +-5.123551925217265551e-09, +-5.140151490489928838e-09, +-5.156736132998292368e-09, +-5.173305830365361985e-09, +-5.189860560243291724e-09, +-5.206400300320492601e-09, +-5.222925028321729392e-09, +-5.239434722000187971e-09, +-5.255929359148516519e-09, +-5.272408917591025209e-09, +-5.288873375182964078e-09, +-5.305322709821455043e-09, +-5.321756899429101323e-09, +-5.338175921968853524e-09, +-5.354579755435546756e-09, +-5.370968377855771594e-09, +-5.387341767294978730e-09, +-5.403699901848979692e-09, +-5.420042759650921635e-09, +-5.436370318865082654e-09, +-5.452682557693958242e-09, +-5.468979454369731408e-09, +-5.485260987161185418e-09, +-5.501527134373835321e-09, +-5.517777874342149970e-09, +-5.534013185440456742e-09, +-5.550233046074392629e-09, +-5.566437434684117002e-09, +-5.582626329747262174e-09, +-5.598799709770756708e-09, +-5.614957553301318212e-09, +-5.631099838917911102e-09, +-5.647226545231893843e-09, +-5.663337650893738959e-09, +-5.679433134584757098e-09, +-5.695512975023970069e-09, +-5.711577150963631665e-09, +-5.727625641188327684e-09, +-5.743658424521962305e-09, +-5.759675479819425060e-09, +-5.775676785974149621e-09, +-5.791662321909077671e-09, +-5.807632066587238547e-09, +-5.823585999003622193e-09, +-5.839524098187927876e-09, +-5.855446343207887801e-09, +-5.871352713160801744e-09, +-5.887243187184190313e-09, +-5.903117744448371826e-09, +-5.918976364156252206e-09, +-5.934819025550391591e-09, +-5.950645707904597693e-09, +-5.966456390530705369e-09, +-5.982251052774166098e-09, +-5.998029674013228244e-09, +-6.013792233665847319e-09, +-6.029538711181309958e-09, +-6.045269086047842321e-09, +-6.060983337784430108e-09, +-6.076681445947454199e-09, +-6.092363390130040491e-09, +-6.108029149957608015e-09, +-6.123678705094572400e-09, +-6.139312035236194017e-09, +-6.154929120115269864e-09, +-6.170529939502200569e-09, +-6.186114473197595399e-09, +-6.201682701042615320e-09, +-6.217234602910092391e-09, +-6.232770158711331668e-09, +-6.248289348391578255e-09, +-6.263792151929282767e-09, +-6.279278549342927225e-09, +-6.294748520682805362e-09, +-6.310202046038459804e-09, +-6.325639105530466512e-09, +-6.341059679317339257e-09, +-6.356463747594560169e-09, +-6.371851290590399162e-09, +-6.387222288572301421e-09, +-6.402576721839219445e-09, +-6.417914570727745756e-09, +-6.433235815612576126e-09, +-6.448540436898103765e-09, +-6.463828415032730371e-09, +-6.479099730493136469e-09, +-6.494354363794802315e-09, +-6.509592295491195610e-09, +-6.524813506166574195e-09, +-6.540017976446109923e-09, +-6.555205686987168514e-09, +-6.570376618486727713e-09, +-6.585530751673243624e-09, +-6.600668067313352527e-09, +-6.615788546211011435e-09, +-6.630892169203431678e-09, +-6.645978917167264556e-09, +-6.661048771010916834e-09, +-6.676101711680949809e-09, +-6.691137720162232341e-09, +-6.706156777469826206e-09, +-6.721158864662914999e-09, +-6.736143962829531061e-09, +-6.751112053096763723e-09, +-6.766063116630039656e-09, +-6.780997134625783294e-09, +-6.795914088321823601e-09, +-6.810813958989884091e-09, +-6.825696727935175031e-09, +-6.840562376506172371e-09, +-6.855410886079992361e-09, +-6.870242238075489960e-09, +-6.885056413945872107e-09, +-6.899853395178365201e-09, +-6.914633163300965719e-09, +-6.929395699874395883e-09, +-6.944140986499262083e-09, +-6.958869004807040263e-09, +-6.973579736473297574e-09, +-6.988273163202971044e-09, +-7.002949266740271408e-09, +-7.017608028868065203e-09, +-7.032249431400656797e-09, +-7.046873456193908936e-09, +-7.061480085137958596e-09, +-7.076069300156842267e-09, +-7.090641083218070573e-09, +-7.105195416318007851e-09, +-7.119732281495244353e-09, +-7.134251660822903468e-09, +-7.148753536408562314e-09, +-7.163237890400691332e-09, +-7.177704704980993777e-09, +-7.192153962370570684e-09, +-7.206585644825821370e-09, +-7.220999734637748598e-09, +-7.235396214138394042e-09, +-7.249775065692881636e-09, +-7.264136271706776178e-09, +-7.278479814617996804e-09, +-7.292805676903671842e-09, +-7.307113841079624299e-09, +-7.321404289692936340e-09, +-7.335677005335291707e-09, +-7.349931970627499998e-09, +-7.364169168232882105e-09, +-7.378388580849462456e-09, +-7.392590191210317258e-09, +-7.406773982089393708e-09, +-7.420939936294241567e-09, +-7.435088036672068112e-09, +-7.449218266105726314e-09, +-7.463330607513023318e-09, +-7.477425043852741486e-09, +-7.491501558117570967e-09, +-7.505560133340359877e-09, +-7.519600752587060096e-09, +-7.533623398962721027e-09, +-7.547628055610831153e-09, +-7.561614705709286364e-09, +-7.575583332476468077e-09, +-7.589533919163790339e-09, +-7.603466449061974820e-09, +-7.617380905500865526e-09, +-7.631277271842678999e-09, +-7.645155531491650908e-09, +-7.659015667885880036e-09, +-7.672857664503250903e-09, +-7.686681504857627075e-09, +-7.700487172498191077e-09, +-7.714274651015284287e-09, +-7.728043924033241895e-09, +-7.741794975217035168e-09, +-7.755527788264939320e-09, +-7.769242346914520640e-09, +-7.782938634942027696e-09, +-7.796616636158576370e-09, +-7.810276334415728367e-09, +-7.823917713598557789e-09, +-7.837540757631524116e-09, +-7.851145450478478822e-09, +-7.864731776136041313e-09, +-7.878299718642944415e-09, +-7.891849262072650962e-09, +-7.905380390536222450e-09, +-7.918893088184749305e-09, +-7.932387339202223885e-09, +-7.945863127814695720e-09, +-7.959320438283870789e-09, +-7.972759254906924574e-09, +-7.986179562022499121e-09, +-7.999581344003703440e-09, +-8.012964585263634104e-09, +-8.026329270250445255e-09, +-8.039675383453143831e-09, +-8.053002909394394751e-09, +-8.066311832636517969e-09, +-8.079602137781412381e-09, +-8.092873809463923485e-09, +-8.106126832361417169e-09, +-8.119361191186045578e-09, +-8.132576870687786171e-09, +-8.145773855656876940e-09, +-8.158952130916696044e-09, +-8.172111681332983212e-09, +-8.185252491807149514e-09, +-8.198374547276540396e-09, +-8.211477832720065479e-09, +-8.224562333151160899e-09, +-8.237628033623650716e-09, +-8.250674919227948496e-09, +-8.263702975090140796e-09, +-8.276712186378154622e-09, +-8.289702538294608935e-09, +-8.302674016083000310e-09, +-8.315626605019609795e-09, +-8.328560290425657509e-09, +-8.341475057653796432e-09, +-8.354370892097184925e-09, +-8.367247779188781973e-09, +-8.380105704394858777e-09, +-8.392944653224367404e-09, +-8.405764611222005702e-09, +-8.418565563968589536e-09, +-8.431347497086796726e-09, +-8.444110396233914329e-09, +-8.456854247107920071e-09, +-8.469579035443369605e-09, +-8.482284747011067291e-09, +-8.494971367623490850e-09, +-8.507638883128081273e-09, +-8.520287279413329215e-09, +-8.532916542402088070e-09, +-8.545526658057145856e-09, +-8.558117612380556854e-09, +-8.570689391409876285e-09, +-8.583241981224180526e-09, +-8.595775367936465322e-09, +-8.608289537699957176e-09, +-8.620784476707828797e-09, +-8.633260171186277250e-09, +-8.645716607406607416e-09, +-8.658153771671333701e-09, +-8.670571650326165879e-09, +-8.682970229753067399e-09, +-8.695349496370300050e-09, +-8.707709436638000810e-09, +-8.720050037051408894e-09, +-8.732371284147127512e-09, +-8.744673164496087869e-09, +-8.756955664709498248e-09, +-8.769218771437881172e-09, +-8.781462471367524800e-09, +-8.793686751226064740e-09, +-8.805891597775722676e-09, +-8.818076997818783960e-09, +-8.830242938197634003e-09, +-8.842389405787980360e-09, +-8.854516387510737663e-09, +-8.866623870318772874e-09, +-8.878711841205827261e-09, +-8.890780287205758693e-09, +-8.902829195386394042e-09, +-8.914858552858222846e-09, +-8.926868346768195109e-09, +-8.938858564299304404e-09, +-8.950829192678791849e-09, +-8.962780219165622594e-09, +-8.974711631062074618e-09, +-8.986623415705589349e-09, +-8.998515560475179005e-09, +-9.010388052784542794e-09, +-9.022240880087489912e-09, +-9.034074029878281998e-09, +-9.045887489684585550e-09, +-9.057681247079153374e-09, +-9.069455289667092618e-09, +-9.081209605094391350e-09, +-9.092944181047304791e-09, +-9.104659005246235832e-09, +-9.116354065454402231e-09, +-9.128029349471533500e-09, +-9.139684845133450696e-09, +-9.151320540320445757e-09, +-9.162936422944748067e-09, +-9.174532480961818777e-09, +-9.186108702363721781e-09, +-9.197665075179456239e-09, +-9.209201587479944482e-09, +-9.220718227371667679e-09, +-9.232214983001954832e-09, +-9.243691842554338987e-09, +-9.255148794253864417e-09, +-9.266585826360527090e-09, +-9.278002927174542144e-09, +-9.289400085036661536e-09, +-9.300777288321930472e-09, +-9.312134525448046901e-09, +-9.323471784868944247e-09, +-9.334789055077132327e-09, +-9.346086324606071364e-09, +-9.357363582023602512e-09, +-9.368620815940433083e-09, +-9.379858015003922759e-09, +-9.391075167898378072e-09, +-9.402272263350177616e-09, +-9.413449290121356430e-09, +-9.424606237014921464e-09, +-9.435743092871372458e-09, +-9.446859846567977327e-09, +-9.457956487024289461e-09, +-9.469033003195432672e-09, +-9.480089384078129682e-09, +-9.491125618704276589e-09, +-9.502141696146116052e-09, +-9.513137605515683080e-09, +-9.524113335961373888e-09, +-9.535068876673254743e-09, +-9.546004216875832401e-09, +-9.556919345836367277e-09, +-9.567814252859106339e-09, +-9.578688927285254985e-09, +-9.589543358498044353e-09, +-9.600377535916532426e-09, +-9.611191449000980706e-09, +-9.621985087248949927e-09, +-9.632758440195038658e-09, +-9.643511497415972127e-09, +-9.654244248524386776e-09, +-9.664956683174362455e-09, +-9.675648791055407155e-09, +-9.686320561897296022e-09, +-9.696971985469833126e-09, +-9.707603051579117567e-09, +-9.718213750072865557e-09, +-9.728804070834147007e-09, +-9.739374003786391623e-09, +-9.749923538893458393e-09, +-9.760452666154020682e-09, +-9.770961375609553487e-09, +-9.781449657337251120e-09, +-9.791917501455367484e-09, +-9.802364898119821323e-09, +-9.812791837523572529e-09, +-9.823198309901701032e-09, +-9.833584305525240994e-09, +-9.843949814706630275e-09, +-9.854294827794029356e-09, +-9.864619335175816242e-09, +-9.874923327280258893e-09, +-9.885206794572168457e-09, +-9.895469727557882200e-09, +-9.905712116779278032e-09, +-9.915933952818494398e-09, +-9.926135226298338904e-09, +-9.936315927875839619e-09, +-9.946476048252745304e-09, +-9.956615578164239360e-09, +-9.966734508386487024e-09, +-9.976832829735983554e-09, +-9.986910533064141152e-09, +-9.996967609265188544e-09, +-1.000700404927032612e-08, +-1.001701984404793274e-08, +-1.002701498460846261e-08, +-1.003698946199845158e-08, +-1.004694326730531805e-08, +-1.005687639165316095e-08, +-1.006678882620750934e-08, +-1.007668056216963312e-08, +-1.008655159078105777e-08, +-1.009640190332368510e-08, +-1.010623149111399802e-08, +-1.011604034551305953e-08, +-1.012582845791552940e-08, +-1.013559581975680603e-08, +-1.014534242251295368e-08, +-1.015506825769490723e-08, +-1.016477331685608889e-08, +-1.017445759158719029e-08, +-1.018412107351565801e-08, +-1.019376375431284539e-08, +-1.020338562568326247e-08, +-1.021298667937426889e-08, +-1.022256690717063934e-08, +-1.023212630089420619e-08, +-1.024166485240879778e-08, +-1.025118255361440347e-08, +-1.026067939645243121e-08, +-1.027015537289997351e-08, +-1.027961047497434042e-08, +-1.028904469473291889e-08, +-1.029845802426965392e-08, +-1.030785045571981980e-08, +-1.031722198125401305e-08, +-1.032657259308510741e-08, +-1.033590228346319644e-08, +-1.034521104467523286e-08, +-1.035449886905204306e-08, +-1.036376574895754229e-08, +-1.037301167679856492e-08, +-1.038223664501913699e-08, +-1.039144064610064334e-08, +-1.040062367256622820e-08, +-1.040978571697520011e-08, +-1.041892677192776841e-08, +-1.042804683006196775e-08, +-1.043714588405295333e-08, +-1.044622392661772906e-08, +-1.045528095050953933e-08, +-1.046431694852290810e-08, +-1.047333191348814153e-08, +-1.048232583827568226e-08, +-1.049129871579644849e-08, +-1.050025053899602228e-08, +-1.050918130086410419e-08, +-1.051809099442387078e-08, +-1.052697961274105372e-08, +-1.053584714891875840e-08, +-1.054469359609731826e-08, +-1.055351894745865078e-08, +-1.056232319622121331e-08, +-1.057110633564396364e-08, +-1.057986835902361867e-08, +-1.058860925969426568e-08, +-1.059732903103151477e-08, +-1.060602766644739843e-08, +-1.061470515939493929e-08, +-1.062336150336314232e-08, +-1.063199669188116219e-08, +-1.064061071851768451e-08, +-1.064920357687826237e-08, +-1.065777526060958120e-08, +-1.066632576339410698e-08, +-1.067485507895442064e-08, +-1.068336320105338183e-08, +-1.069185012348905337e-08, +-1.070031584010154531e-08, +-1.070876034476816933e-08, +-1.071718363140320876e-08, +-1.072558569396412413e-08, +-1.073396652644198263e-08, +-1.074232612287020810e-08, +-1.075066447731872948e-08, +-1.075898158389829048e-08, +-1.076727743675548976e-08, +-1.077555203007707733e-08, +-1.078380535808926636e-08, +-1.079203741505516059e-08, +-1.080024819527867852e-08, +-1.080843769309977394e-08, +-1.081660590289835347e-08, +-1.082475281909421533e-08, +-1.083287843614265704e-08, +-1.084098274854080333e-08, +-1.084906575082250574e-08, +-1.085712743756028650e-08, +-1.086516780336692179e-08, +-1.087318684289093684e-08, +-1.088118455082228211e-08, +-1.088916092188829165e-08, +-1.089711595085346805e-08, +-1.090504963252362827e-08, +-1.091296196174091075e-08, +-1.092085293338760860e-08, +-1.092872254238324964e-08, +-1.093657078368767515e-08, +-1.094439765229678158e-08, +-1.095220314324636690e-08, +-1.095998725161200985e-08, +-1.096774997250479840e-08, +-1.097549130107727879e-08, +-1.098321123251905165e-08, +-1.099090976205791846e-08, +-1.099858688496210008e-08, +-1.100624259653514952e-08, +-1.101387689212227168e-08, +-1.102148976710574401e-08, +-1.102908121690510352e-08, +-1.103665123698080284e-08, +-1.104419982282990399e-08, +-1.105172696998940857e-08, +-1.105923267403382750e-08, +-1.106671693057512647e-08, +-1.107417973526595022e-08, +-1.108162108379552971e-08, +-1.108904097189334485e-08, +-1.109643939532507628e-08, +-1.110381634989585289e-08, +-1.111117183145010126e-08, +-1.111850583586898969e-08, +-1.112581835907410581e-08, +-1.113310939702257295e-08, +-1.114037894571273449e-08, +-1.114762700118002295e-08, +-1.115485355949716015e-08, +-1.116205861677754367e-08, +-1.116924216917082644e-08, +-1.117640421286676474e-08, +-1.118354474409250674e-08, +-1.119066375911234432e-08, +-1.119776125423123025e-08, +-1.120483722579065055e-08, +-1.121189167017215328e-08, +-1.121892458379324236e-08, +-1.122593596311083025e-08, +-1.123292580462105598e-08, +-1.123989410485655875e-08, +-1.124684086039027303e-08, +-1.125376606783110739e-08, +-1.126066972382727303e-08, +-1.126755182506640626e-08, +-1.127441236827120096e-08, +-1.128125135020695078e-08, +-1.128806876767317318e-08, +-1.129486461750910680e-08, +-1.130163889659340050e-08, +-1.130839160184021068e-08, +-1.131512273020450848e-08, +-1.132183227867742443e-08, +-1.132852024429030161e-08, +-1.133518662411016271e-08, +-1.134183141524343233e-08, +-1.134845461483526204e-08, +-1.135505622006770059e-08, +-1.136163622816249481e-08, +-1.136819463637730771e-08, +-1.137473144200899907e-08, +-1.138124664239371479e-08, +-1.138774023490248463e-08, +-1.139421221694875618e-08, +-1.140066258597994933e-08, +-1.140709133948342191e-08, +-1.141349847498537117e-08, +-1.141988399004746223e-08, +-1.142624788227199463e-08, +-1.143259014929818002e-08, +-1.143891078880159123e-08, +-1.144520979849960682e-08, +-1.145148717614353796e-08, +-1.145774291952550227e-08, +-1.146397702647369240e-08, +-1.147018949485617603e-08, +-1.147638032257661777e-08, +-1.148254950757778304e-08, +-1.148869704784129986e-08, +-1.149482294138403910e-08, +-1.150092718626451191e-08, +-1.150700978057550616e-08, +-1.151307072244912394e-08, +-1.151911001005641598e-08, +-1.152512764160378835e-08, +-1.153112361533782827e-08, +-1.153709792954199700e-08, +-1.154305058253610212e-08, +-1.154898157268138467e-08, +-1.155489089837266098e-08, +-1.156077855804567957e-08, +-1.156664455017272388e-08, +-1.157248887326272475e-08, +-1.157831152586447485e-08, +-1.158411250656289151e-08, +-1.158989181398184230e-08, +-1.159564944678217312e-08, +-1.160138540366143182e-08, +-1.160709968335688089e-08, +-1.161279228464177177e-08, +-1.161846320632865692e-08, +-1.162411244726527539e-08, +-1.162974000633961685e-08, +-1.163534588247601068e-08, +-1.164093007463515572e-08, +-1.164649258181863173e-08, +-1.165203340306197094e-08, +-1.165755253744083706e-08, +-1.166304998406750978e-08, +-1.166852574209093772e-08, +-1.167397981069937379e-08, +-1.167941218911700365e-08, +-1.168482287660682095e-08, +-1.169021187246870333e-08, +-1.169557917603886978e-08, +-1.170092478669307191e-08, +-1.170624870384295434e-08, +-1.171155092693908221e-08, +-1.171683145546759106e-08, +-1.172209028895278919e-08, +-1.172732742695731145e-08, +-1.173254286907969567e-08, +-1.173773661495751761e-08, +-1.174290866426366210e-08, +-1.174805901670955890e-08, +-1.175318767204476751e-08, +-1.175829463005383714e-08, +-1.176337989056102335e-08, +-1.176844345342613889e-08, +-1.177348531854759770e-08, +-1.177850548586043963e-08, +-1.178350395533599129e-08, +-1.178848072698474299e-08, +-1.179343580085274884e-08, +-1.179836917702485109e-08, +-1.180328085562121924e-08, +-1.180817083680008964e-08, +-1.181303912075756529e-08, +-1.181788570772545032e-08, +-1.182271059797457526e-08, +-1.182751379181080006e-08, +-1.183229528957789602e-08, +-1.183705509165789981e-08, +-1.184179319846761948e-08, +-1.184650961046307141e-08, +-1.185120432813605420e-08, +-1.185587735201558127e-08, +-1.186052868266874284e-08, +-1.186515832069743688e-08, +-1.186976626674277635e-08, +-1.187435252148131556e-08, +-1.187891708562806945e-08, +-1.188345995993302449e-08, +-1.188798114518432165e-08, +-1.189248064220731350e-08, +-1.189695845186316121e-08, +-1.190141457505134431e-08, +-1.190584901270641143e-08, +-1.191026176580079116e-08, +-1.191465283534437175e-08, +-1.191902222238192037e-08, +-1.192336992799725206e-08, +-1.192769595330946777e-08, +-1.193200029947459870e-08, +-1.193628296768652788e-08, +-1.194054395917385508e-08, +-1.194478327520398811e-08, +-1.194900091708003254e-08, +-1.195319688614110943e-08, +-1.195737118376459029e-08, +-1.196152381136303657e-08, +-1.196565477038691940e-08, +-1.196976406232262113e-08, +-1.197385168869231456e-08, +-1.197791765105656360e-08, +-1.198196195101089045e-08, +-1.198598459018904963e-08, +-1.198998557025886554e-08, +-1.199396489292780276e-08, +-1.199792255993704338e-08, +-1.200185857306542939e-08, +-1.200577293412907884e-08, +-1.200966564497843446e-08, +-1.201353670750273872e-08, +-1.201738612362641573e-08, +-1.202121389530960396e-08, +-1.202502002455058813e-08, +-1.202880451338239456e-08, +-1.203256736387573426e-08, +-1.203630857813692504e-08, +-1.204002815830800072e-08, +-1.204372610656869639e-08, +-1.204740242513385099e-08, +-1.205105711625569700e-08, +-1.205469018222130776e-08, +-1.205830162535472329e-08, +-1.206189144801664759e-08, +-1.206545965260289845e-08, +-1.206900624154711403e-08, +-1.207253121731678898e-08, +-1.207603458241768168e-08, +-1.207951633939078841e-08, +-1.208297649081213488e-08, +-1.208641503929647374e-08, +-1.208983198749171602e-08, +-1.209322733808412083e-08, +-1.209660109379486423e-08, +-1.209995325738057855e-08, +-1.210328383163531115e-08, +-1.210659281938784438e-08, +-1.210988022350425151e-08, +-1.211314604688495369e-08, +-1.211639029246693178e-08, +-1.211961296322390670e-08, +-1.212281406216414574e-08, +-1.212599359233311946e-08, +-1.212915155681073066e-08, +-1.213228795871337567e-08, +-1.213540280119396920e-08, +-1.213849608743919313e-08, +-1.214156782067449929e-08, +-1.214461800415832748e-08, +-1.214764664118587079e-08, +-1.215065373508884727e-08, +-1.215363928923287121e-08, +-1.215660330702097193e-08, +-1.215954579189058117e-08, +-1.216246674731591542e-08, +-1.216536617680605350e-08, +-1.216824408390506397e-08, +-1.217110047219404002e-08, +-1.217393534528843756e-08, +-1.217674870684033012e-08, +-1.217954056053598524e-08, +-1.218231091009783149e-08, +-1.218505975928452131e-08, +-1.218778711188828739e-08, +-1.219049297173929029e-08, +-1.219317734270077945e-08, +-1.219584022867235892e-08, +-1.219848163358974576e-08, +-1.220110156142224721e-08, +-1.220370001617634566e-08, +-1.220627700189291105e-08, +-1.220883252264736629e-08, +-1.221136658255255597e-08, +-1.221387918575413229e-08, +-1.221637033643473900e-08, +-1.221884003881164063e-08, +-1.222128829713649755e-08, +-1.222371511569767546e-08, +-1.222612049881735353e-08, +-1.222850445085386368e-08, +-1.223086697619969710e-08, +-1.223320807928350103e-08, +-1.223552776456771635e-08, +-1.223782603655048340e-08, +-1.224010289976561222e-08, +-1.224235835878043017e-08, +-1.224459241819868872e-08, +-1.224680508265843092e-08, +-1.224899635683184750e-08, +-1.225116624542814715e-08, +-1.225331475318904349e-08, +-1.225544188489297859e-08, +-1.225754764535240984e-08, +-1.225963203941415075e-08, +-1.226169507196097404e-08, +-1.226373674790941131e-08, +-1.226575707221157616e-08, +-1.226775604985398134e-08, +-1.226973368585714002e-08, +-1.227168998527763705e-08, +-1.227362495320557301e-08, +-1.227553859476677770e-08, +-1.227743091512025914e-08, +-1.227930191946111691e-08, +-1.228115161301817140e-08, +-1.228298000105469510e-08, +-1.228478708886959544e-08, +-1.228657288179472809e-08, +-1.228833738519781695e-08, +-1.229008060448044240e-08, +-1.229180254507813564e-08, +-1.229350321246202474e-08, +-1.229518261213655497e-08, +-1.229684074964156334e-08, +-1.229847763055059447e-08, +-1.230009326047118515e-08, +-1.230168764504619276e-08, +-1.230326078995183159e-08, +-1.230481270089952238e-08, +-1.230634338363391701e-08, +-1.230785284393428656e-08, +-1.230934108761468833e-08, +-1.231080812052241078e-08, +-1.231225394853992073e-08, +-1.231367857758268119e-08, +-1.231508201360087860e-08, +-1.231646426257925238e-08, +-1.231782533053525196e-08, +-1.231916522352191375e-08, +-1.232048394762518272e-08, +-1.232178150896571893e-08, +-1.232305791369777428e-08, +-1.232431316800911138e-08, +-1.232554727812241807e-08, +-1.232676025029338009e-08, +-1.232795209081237844e-08, +-1.232912280600288960e-08, +-1.233027240222240704e-08, +-1.233140088586262814e-08, +-1.233250826334849303e-08, +-1.233359454113940217e-08, +-1.233465972572751569e-08, +-1.233570382363911490e-08, +-1.233672684143496133e-08, +-1.233772878570785321e-08, +-1.233870966308611617e-08, +-1.233966948023008443e-08, +-1.234060824383425311e-08, +-1.234152596062717400e-08, +-1.234242263736984259e-08, +-1.234329828085799098e-08, +-1.234415289791989751e-08, +-1.234498649541811394e-08, +-1.234579908024767870e-08, +-1.234659065933752315e-08, +-1.234736123965032428e-08, +-1.234811082818148897e-08, +-1.234883943196027730e-08, +-1.234954705804893235e-08, +-1.235023371354291511e-08, +-1.235089940557152324e-08, +-1.235154414129623996e-08, +-1.235216792791324545e-08, +-1.235277077265041412e-08, +-1.235335268276949178e-08, +-1.235391366556581272e-08, +-1.235445372836667351e-08, +-1.235497287853355808e-08, +-1.235547112346054293e-08, +-1.235594847057415653e-08, +-1.235640492733543235e-08, +-1.235684050123674736e-08, +-1.235725519980448398e-08, +-1.235764903059786034e-08, +-1.235802200120830337e-08, +-1.235837411926100878e-08, +-1.235870539241338935e-08, +-1.235901582835626104e-08, +-1.235930543481228132e-08, +-1.235957421953822056e-08, +-1.235982219032253350e-08, +-1.236004935498672898e-08, +-1.236025572138538819e-08, +-1.236044129740494538e-08, +-1.236060609096528435e-08, +-1.236075011001865646e-08, +-1.236087336254923728e-08, +-1.236097585657529216e-08, +-1.236105760014601638e-08, +-1.236111860134420363e-08, +-1.236115886828473727e-08, +-1.236117840911462336e-08, +-1.236117723201397342e-08, +-1.236115534519482977e-08, +-1.236111275690186535e-08, +-1.236104947541226462e-08, +-1.236096550903488146e-08, +-1.236086086611153293e-08, +-1.236073555501599996e-08, +-1.236058958415460810e-08, +-1.236042296196538874e-08, +-1.236023569691880700e-08, +-1.236002779751800827e-08, +-1.235979927229728458e-08, +-1.235955012982412604e-08, +-1.235928037869713138e-08, +-1.235899002754768211e-08, +-1.235867908503886728e-08, +-1.235834755986552144e-08, +-1.235799546075502375e-08, +-1.235762279646636160e-08, +-1.235722957579067652e-08, +-1.235681580755079440e-08, +-1.235638150060125520e-08, +-1.235592666382890528e-08, +-1.235545130615187495e-08, +-1.235495543652068030e-08, +-1.235443906391709326e-08, +-1.235390219735469583e-08, +-1.235334484587908851e-08, +-1.235276701856711111e-08, +-1.235216872452774766e-08, +-1.235154997290103789e-08, +-1.235091077285882493e-08, +-1.235025113360504160e-08, +-1.234957106437415688e-08, +-1.234887057443307518e-08, +-1.234814967307952992e-08, +-1.234740836964311917e-08, +-1.234664667348474484e-08, +-1.234586459399639428e-08, +-1.234506214060186818e-08, +-1.234423932275611559e-08, +-1.234339614994556139e-08, +-1.234253263168749592e-08, +-1.234164877753075650e-08, +-1.234074459705551241e-08, +-1.233982009987273881e-08, +-1.233887529562505709e-08, +-1.233791019398587469e-08, +-1.233692480465973412e-08, +-1.233591913738256938e-08, +-1.233489320192083247e-08, +-1.233384700807252243e-08, +-1.233278056566630682e-08, +-1.233169388456190393e-08, +-1.233058697465001325e-08, +-1.232945984585219639e-08, +-1.232831250812093828e-08, +-1.232714497143958926e-08, +-1.232595724582207891e-08, +-1.232474934131338913e-08, +-1.232352126798921009e-08, +-1.232227303595585421e-08, +-1.232100465535049101e-08, +-1.231971613634099830e-08, +-1.231840748912557833e-08, +-1.231707872393330866e-08, +-1.231572985102388083e-08, +-1.231436088068730422e-08, +-1.231297182324427161e-08, +-1.231156268904613608e-08, +-1.231013348847436669e-08, +-1.230868423194119371e-08, +-1.230721492988889887e-08, +-1.230572559279050854e-08, +-1.230421623114917007e-08, +-1.230268685549832875e-08, +-1.230113747640182050e-08, +-1.229956810445371802e-08, +-1.229797875027842835e-08, +-1.229636942453027600e-08, +-1.229474013789397116e-08, +-1.229309090108423740e-08, +-1.229142172484604997e-08, +-1.228973261995427015e-08, +-1.228802359721393641e-08, +-1.228629466746022474e-08, +-1.228454584155794900e-08, +-1.228277713040214325e-08, +-1.228098854491770776e-08, +-1.227918009605937258e-08, +-1.227735179481179349e-08, +-1.227550365218941471e-08, +-1.227363567923654994e-08, +-1.227174788702728643e-08, +-1.226984028666531457e-08, +-1.226791288928420746e-08, +-1.226596570604708346e-08, +-1.226399874814677159e-08, +-1.226201202680559978e-08, +-1.226000555327579360e-08, +-1.225797933883885251e-08, +-1.225593339480584439e-08, +-1.225386773251734595e-08, +-1.225178236334348412e-08, +-1.224967729868364814e-08, +-1.224755254996673777e-08, +-1.224540812865110701e-08, +-1.224324404622428452e-08, +-1.224106031420317544e-08, +-1.223885694413394066e-08, +-1.223663394759200339e-08, +-1.223439133618199625e-08, +-1.223212912153771163e-08, +-1.222984731532204875e-08, +-1.222754592922721054e-08, +-1.222522497497434130e-08, +-1.222288446431358632e-08, +-1.222052440902425393e-08, +-1.221814482091451612e-08, +-1.221574571182161368e-08, +-1.221332709361153519e-08, +-1.221088897817952334e-08, +-1.220843137744931718e-08, +-1.220595430337368647e-08, +-1.220345776793410748e-08, +-1.220094178314087708e-08, +-1.219840636103301353e-08, +-1.219585151367825311e-08, +-1.219327725317287649e-08, +-1.219068359164216362e-08, +-1.218807054123959302e-08, +-1.218543811414747047e-08, +-1.218278632257649722e-08, +-1.218011517876600984e-08, +-1.217742469498375691e-08, +-1.217471488352584274e-08, +-1.217198575671708476e-08, +-1.216923732691041625e-08, +-1.216646960648717258e-08, +-1.216368260785704321e-08, +-1.216087634345798235e-08, +-1.215805082575620900e-08, +-1.215520606724612251e-08, +-1.215234208045046974e-08, +-1.214945887791998437e-08, +-1.214655647223349940e-08, +-1.214363487599814569e-08, +-1.214069410184878284e-08, +-1.213773416244866094e-08, +-1.213475507048879192e-08, +-1.213175683868804717e-08, +-1.212873947979373155e-08, +-1.212570300658038073e-08, +-1.212264743185089110e-08, +-1.211957276843568430e-08, +-1.211647902919309766e-08, +-1.211336622700929486e-08, +-1.211023437479795329e-08, +-1.210708348550077188e-08, +-1.210391357208682760e-08, +-1.210072464755293939e-08, +-1.209751672492344981e-08, +-1.209428981725038220e-08, +-1.209104393761321897e-08, +-1.208777909911892643e-08, +-1.208449531490186878e-08, +-1.208119259812413731e-08, +-1.207787096197475135e-08, +-1.207453041967062607e-08, +-1.207117098445544585e-08, +-1.206779266960064202e-08, +-1.206439548840463681e-08, +-1.206097945419304520e-08, +-1.205754458031914308e-08, +-1.205409088016277537e-08, +-1.205061836713128416e-08, +-1.204712705465885682e-08, +-1.204361695620684370e-08, +-1.204008808526388714e-08, +-1.203654045534500333e-08, +-1.203297407999289911e-08, +-1.202938897277659894e-08, +-1.202578514729236137e-08, +-1.202216261716325219e-08, +-1.201852139603893604e-08, +-1.201486149759619419e-08, +-1.201118293553816849e-08, +-1.200748572359514224e-08, +-1.200376987552384042e-08, +-1.200003540510758348e-08, +-1.199628232615669770e-08, +-1.199251065250746793e-08, +-1.198872039802328903e-08, +-1.198491157659369147e-08, +-1.198108420213471022e-08, +-1.197723828858934968e-08, +-1.197337384992630314e-08, +-1.196949090014111088e-08, +-1.196558945325527176e-08, +-1.196166952331701085e-08, +-1.195773112440070534e-08, +-1.195377427060664140e-08, +-1.194979897606168251e-08, +-1.194580525491870364e-08, +-1.194179312135681631e-08, +-1.193776258958121138e-08, +-1.193371367382282652e-08, +-1.192964638833921479e-08, +-1.192556074741333855e-08, +-1.192145676535443145e-08, +-1.191733445649771713e-08, +-1.191319383520395101e-08, +-1.190903491586030201e-08, +-1.190485771287920283e-08, +-1.190066224069920686e-08, +-1.189644851378431324e-08, +-1.189221654662452433e-08, +-1.188796635373562408e-08, +-1.188369794965865688e-08, +-1.187941134896049995e-08, +-1.187510656623338032e-08, +-1.187078361609550674e-08, +-1.186644251319029049e-08, +-1.186208327218641159e-08, +-1.185770590777843252e-08, +-1.185331043468600416e-08, +-1.184889686765432238e-08, +-1.184446522145375581e-08, +-1.184001551087983756e-08, +-1.183554775075389059e-08, +-1.183106195592178692e-08, +-1.182655814125484595e-08, +-1.182203632164998998e-08, +-1.181749651202848193e-08, +-1.181293872733724882e-08, +-1.180836298254783953e-08, +-1.180376929265714278e-08, +-1.179915767268662616e-08, +-1.179452813768318642e-08, +-1.178988070271826609e-08, +-1.178521538288824221e-08, +-1.178053219331462654e-08, +-1.177583114914290752e-08, +-1.177111226554425916e-08, +-1.176637555771413490e-08, +-1.176162104087236850e-08, +-1.175684873026421298e-08, +-1.175205864115880372e-08, +-1.174725078885013617e-08, +-1.174242518865707086e-08, +-1.173758185592225469e-08, +-1.173272080601345275e-08, +-1.172784205432232903e-08, +-1.172294561626509659e-08, +-1.171803150728298737e-08, +-1.171309974284057306e-08, +-1.170815033842730033e-08, +-1.170318330955638404e-08, +-1.169819867176586275e-08, +-1.169319644061763588e-08, +-1.168817663169754309e-08, +-1.168313926061590034e-08, +-1.167808434300666273e-08, +-1.167301189452846017e-08, +-1.166792193086324246e-08, +-1.166281446771705185e-08, +-1.165768952082057891e-08, +-1.165254710592703669e-08, +-1.164738723881475311e-08, +-1.164220993528515261e-08, +-1.163701521116358831e-08, +-1.163180308229957695e-08, +-1.162657356456553823e-08, +-1.162132667385824570e-08, +-1.161606242609740072e-08, +-1.161078083722708660e-08, +-1.160548192321451629e-08, +-1.160016570005037483e-08, +-1.159483218374903437e-08, +-1.158948139034778330e-08, +-1.158411333590819271e-08, +-1.157872803651458282e-08, +-1.157332550827441009e-08, +-1.156790576731933759e-08, +-1.156246882980300657e-08, +-1.155701471190354946e-08, +-1.155154342982132007e-08, +-1.154605499978017075e-08, +-1.154054943802745404e-08, +-1.153502676083277366e-08, +-1.152948698448949987e-08, +-1.152393012531342946e-08, +-1.151835619964357981e-08, +-1.151276522384232792e-08, +-1.150715721429400248e-08, +-1.150153218740654820e-08, +-1.149589015961003850e-08, +-1.149023114735816120e-08, +-1.148455516712672950e-08, +-1.147886223541414527e-08, +-1.147315236874242805e-08, +-1.146742558365459616e-08, +-1.146168189671774387e-08, +-1.145592132452091548e-08, +-1.145014388367526421e-08, +-1.144434959081536239e-08, +-1.143853846259732711e-08, +-1.143271051569997660e-08, +-1.142686576682510817e-08, +-1.142100423269529956e-08, +-1.141512593005720442e-08, +-1.140923087567837762e-08, +-1.140331908634936963e-08, +-1.139739057888201595e-08, +-1.139144537011156954e-08, +-1.138548347689458826e-08, +-1.137950491610939470e-08, +-1.137350970465700933e-08, +-1.136749785945967142e-08, +-1.136146939746249347e-08, +-1.135542433563186470e-08, +-1.134936269095583984e-08, +-1.134328448044525586e-08, +-1.133718972113159611e-08, +-1.133107843006855544e-08, +-1.132495062433225685e-08, +-1.131880632101885601e-08, +-1.131264553724786650e-08, +-1.130646829015925313e-08, +-1.130027459691482158e-08, +-1.129406447469858734e-08, +-1.128783794071491287e-08, +-1.128159501219045150e-08, +-1.127533570637260889e-08, +-1.126906004053089458e-08, +-1.126276803195512874e-08, +-1.125645969795769699e-08, +-1.125013505587150900e-08, +-1.124379412305025317e-08, +-1.123743691687001469e-08, +-1.123106345472670787e-08, +-1.122467375403810284e-08, +-1.121826783224300324e-08, +-1.121184570680064409e-08, +-1.120540739519237921e-08, +-1.119895291491924767e-08, +-1.119248228350368936e-08, +-1.118599551848963762e-08, +-1.117949263744075737e-08, +-1.117297365794239226e-08, +-1.116643859759975650e-08, +-1.115988747403944524e-08, +-1.115332030490909711e-08, +-1.114673710787587056e-08, +-1.114013790062842080e-08, +-1.113352270087506348e-08, +-1.112689152634579793e-08, +-1.112024439479043119e-08, +-1.111358132397899154e-08, +-1.110690233170250935e-08, +-1.110020743577148853e-08, +-1.109349665401806040e-08, +-1.108677000429335830e-08, +-1.108002750446928443e-08, +-1.107326917243842875e-08, +-1.106649502611262809e-08, +-1.105970508342467007e-08, +-1.105289936232662890e-08, +-1.104607788079099357e-08, +-1.103924065681093260e-08, +-1.103238770839839483e-08, +-1.102551905358618892e-08, +-1.101863471042598987e-08, +-1.101173469699076597e-08, +-1.100481903137241307e-08, +-1.099788773168228723e-08, +-1.099094081605233143e-08, +-1.098397830263313822e-08, +-1.097700020959610709e-08, +-1.097000655513175033e-08, +-1.096299735744957068e-08, +-1.095597263478012424e-08, +-1.094893240537125687e-08, +-1.094187668749238564e-08, +-1.093480549943140516e-08, +-1.092771885949501685e-08, +-1.092061678601081504e-08, +-1.091349929732398985e-08, +-1.090636641180044399e-08, +-1.089921814782388773e-08, +-1.089205452379858678e-08, +-1.088487555814732411e-08, +-1.087768126931159681e-08, +-1.087047167575275102e-08, +-1.086324679595005952e-08, +-1.085600664840331911e-08, +-1.084875125163029955e-08, +-1.084148062416714231e-08, +-1.083419478457069482e-08, +-1.082689375141404539e-08, +-1.081957754329142836e-08, +-1.081224617881479960e-08, +-1.080489967661432949e-08, +-1.079753805534025086e-08, +-1.079016133365994233e-08, +-1.078276953025998137e-08, +-1.077536266384649010e-08, +-1.076794075314175043e-08, +-1.076050381688901990e-08, +-1.075305187384806660e-08, +-1.074558494279852252e-08, +-1.073810304253685609e-08, +-1.073060619187941619e-08, +-1.072309440966007306e-08, +-1.071556771473012726e-08, +-1.070802612596119327e-08, +-1.070046966224008916e-08, +-1.069289834247448124e-08, +-1.068531218558894009e-08, +-1.067771121052533098e-08, +-1.067009543624529542e-08, +-1.066246488172666119e-08, +-1.065481956596587093e-08, +-1.064715950797823695e-08, +-1.063948472679442400e-08, +-1.063179524146574329e-08, +-1.062409107105910662e-08, +-1.061637223465989016e-08, +-1.060863875137194263e-08, +-1.060089064031523289e-08, +-1.059312792062850676e-08, +-1.058535061146699580e-08, +-1.057755873200424368e-08, +-1.056975230143170254e-08, +-1.056193133895686188e-08, +-1.055409586380580790e-08, +-1.054624589522076837e-08, +-1.053838145246301941e-08, +-1.053050255480919620e-08, +-1.052260922155420140e-08, +-1.051470147201095034e-08, +-1.050677932550693162e-08, +-1.049884280138962680e-08, +-1.049089191902145963e-08, +-1.048292669778272426e-08, +-1.047494715707142646e-08, +-1.046695331630080201e-08, +-1.045894519490271648e-08, +-1.045092281232441933e-08, +-1.044288618803065822e-08, +-1.043483534150378648e-08, +-1.042677029224123369e-08, +-1.041869105975852809e-08, +-1.041059766358636845e-08, +-1.040249012327398401e-08, +-1.039436845838610044e-08, +-1.038623268850344107e-08, +-1.037808283322450367e-08, +-1.036991891216267364e-08, +-1.036174094494973783e-08, +-1.035354895123199015e-08, +-1.034534295067271154e-08, +-1.033712296295261161e-08, +-1.032888900776669364e-08, +-1.032064110482769901e-08, +-1.031237927386339065e-08, +-1.030410353461812147e-08, +-1.029581390685339511e-08, +-1.028751041034478226e-08, +-1.027919306488559332e-08, +-1.027086189028349690e-08, +-1.026251690636374911e-08, +-1.025415813296676167e-08, +-1.024578558994811514e-08, +-1.023739929718041014e-08, +-1.022899927455044007e-08, +-1.022058554196272149e-08, +-1.021215811933629625e-08, +-1.020371702660513682e-08, +-1.019526228372077341e-08, +-1.018679391064821097e-08, +-1.017831192736931904e-08, +-1.016981635388122368e-08, +-1.016130721019535785e-08, +-1.015278451634082143e-08, +-1.014424829235974076e-08, +-1.013569855831114974e-08, +-1.012713533426782671e-08, +-1.011855864031959322e-08, +-1.010996849657050166e-08, +-1.010136492313919256e-08, +-1.009274794016071110e-08, +-1.008411756778355078e-08, +-1.007547382617298857e-08, +-1.006681673550848428e-08, +-1.005814631598351514e-08, +-1.004946258780844113e-08, +-1.004076557120651961e-08, +-1.003205528641703213e-08, +-1.002333175369402866e-08, +-1.001459499330496286e-08, +-1.000584502553418270e-08, +-9.997081870678610943e-09, +-9.988305549050615490e-09, +-9.979516080978105297e-09, +-9.970713486801564123e-09, +-9.961897786877776150e-09, +-9.953069001576446118e-09, +-9.944227151282470767e-09, +-9.935372256395918987e-09, +-9.926504337329439426e-09, +-9.917623414511417020e-09, +-9.908729508382942196e-09, +-9.899822639401915347e-09, +-9.890902828036861175e-09, +-9.881970094773481611e-09, +-9.873024460110430584e-09, +-9.864065944559366954e-09, +-9.855094568648188792e-09, +-9.846110352916507046e-09, +-9.837113317918768976e-09, +-9.828103484224370649e-09, +-9.819080872414525235e-09, +-9.810045503085783486e-09, +-9.800997396847280882e-09, +-9.791936574322418458e-09, +-9.782863056149144047e-09, +-9.773776862977244093e-09, +-9.764678015471667257e-09, +-9.755566534309319927e-09, +-9.746442440182336884e-09, +-9.737305753795606379e-09, +-9.728156495866555069e-09, +-9.718994687127482316e-09, +-9.709820348322125737e-09, +-9.700633500210184226e-09, +-9.691434163561939625e-09, +-9.682222359162109732e-09, +-9.672998107809671286e-09, +-9.663761430313709172e-09, +-9.654512347499712920e-09, +-9.645250880203859234e-09, +-9.635977049275988189e-09, +-9.626690875580326184e-09, +-9.617392379991609774e-09, +-9.608081583399382048e-09, +-9.598758506704157818e-09, +-9.589423170821430484e-09, +-9.580075596678240886e-09, +-9.570715805213825815e-09, +-9.561343817381406378e-09, +-9.551959654145129083e-09, +-9.542563336483725286e-09, +-9.533154885387442354e-09, +-9.523734321858075093e-09, +-9.514301666912494503e-09, +-9.504856941576379404e-09, +-9.495400166890969538e-09, +-9.485931363908825438e-09, +-9.476450553693467785e-09, +-9.466957757323165886e-09, +-9.457452995885997758e-09, +-9.447936290483947978e-09, +-9.438407662229701530e-09, +-9.428867132248700179e-09, +-9.419314721679594111e-09, +-9.409750451670865378e-09, +-9.400174343384642860e-09, +-9.390586417993330673e-09, +-9.380986696683203098e-09, +-9.371375200651408533e-09, +-9.361751951105716375e-09, +-9.352116969268671121e-09, +-9.342470276370468687e-09, +-9.332811893656556547e-09, +-9.323141842382546570e-09, +-9.313460143814641846e-09, +-9.303766819233084374e-09, +-9.294061889927008343e-09, +-9.284345377198178992e-09, +-9.274617302361192785e-09, +-9.264877686738487859e-09, +-9.255126551667672842e-09, +-9.245363918494820074e-09, +-9.235589808579073004e-09, +-9.225804243288953656e-09, +-9.216007244006268571e-09, +-9.206198832123028394e-09, +-9.196379029041479299e-09, +-9.186547856176328113e-09, +-9.176705334951560972e-09, +-9.166851486804213614e-09, +-9.156986333181209895e-09, +-9.147109895539236055e-09, +-9.137222195348244658e-09, +-9.127323254086784328e-09, +-9.117413093244823746e-09, +-9.107491734324726066e-09, +-9.097559198835849082e-09, +-9.087615508302115583e-09, +-9.077660684255192423e-09, +-9.067694748238237652e-09, +-9.057717721806282666e-09, +-9.047729626522364319e-09, +-9.037730483961859343e-09, +-9.027720315709028391e-09, +-9.017699143359232878e-09, +-9.007666988519173212e-09, +-8.997623872803542022e-09, +-8.987569817839370159e-09, +-8.977504845261624449e-09, +-8.967428976718207165e-09, +-8.957342233864463553e-09, +-8.947244638367210199e-09, +-8.937136211903328823e-09, +-8.927016976158111917e-09, +-8.916886952829349020e-09, +-8.906746163622256095e-09, +-8.896594630252843814e-09, +-8.886432374448018472e-09, +-8.876259417942260028e-09, +-8.866075782481614084e-09, +-8.855881489820295474e-09, +-8.845676561722752912e-09, +-8.835461019964429997e-09, +-8.825234886327783165e-09, +-8.814998182606760045e-09, +-8.804750930602840572e-09, +-8.794493152129174546e-09, +-8.784224869007253057e-09, +-8.773946103066941569e-09, +-8.763656876149012752e-09, +-8.753357210101740148e-09, +-8.743047126784615525e-09, +-8.732726648065294921e-09, +-8.722395795819345530e-09, +-8.712054591934151649e-09, +-8.701703058303379184e-09, +-8.691341216831564850e-09, +-8.680969089430954682e-09, +-8.670586698023067413e-09, +-8.660194064539701976e-09, +-8.649791210919097731e-09, +-8.639378159110171285e-09, +-8.628954931068719736e-09, +-8.618521548761422568e-09, +-8.608078034162686786e-09, +-8.597624409254635337e-09, +-8.587160696029411635e-09, +-8.576686916485917155e-09, +-8.566203092633803417e-09, +-8.555709246489984583e-09, +-8.545205400078668894e-09, +-8.534691575435021428e-09, +-8.524167794600043845e-09, +-8.513634079624404243e-09, +-8.503090452567059065e-09, +-8.492536935493537534e-09, +-8.481973550480365410e-09, +-8.471400319609337596e-09, +-8.460817264972284347e-09, +-8.450224408667337384e-09, +-8.439621772802632347e-09, +-8.429009379493297861e-09, +-8.418387250861505169e-09, +-8.407755409038840481e-09, +-8.397113876162799389e-09, +-8.386462674380969084e-09, +-8.375801825847458252e-09, +-8.365131352723088976e-09, +-8.354451277179317573e-09, +-8.343761621390836290e-09, +-8.333062407543980769e-09, +-8.322353657830953017e-09, +-8.311635394450264774e-09, +-8.300907639610643462e-09, +-8.290170415525587678e-09, +-8.279423744416925731e-09, +-8.268667648515146509e-09, +-8.257902150055529930e-09, +-8.247127271282646807e-09, +-8.236343034446684506e-09, +-8.225549461805673722e-09, +-8.214746575626156837e-09, +-8.203934398179174442e-09, +-8.193112951744824757e-09, +-8.182282258608190589e-09, +-8.171442341064586973e-09, +-8.160593221411721146e-09, +-8.149734921958195973e-09, +-8.138867465017827208e-09, +-8.127990872910071977e-09, +-8.117105167963858624e-09, +-8.106210372512026405e-09, +-8.095306508895252936e-09, +-8.084393599462469445e-09, +-8.073471666565088699e-09, +-8.062540732565483609e-09, +-8.051600819829416873e-09, +-8.040651950730180184e-09, +-8.029694147648748093e-09, +-8.018727432969933266e-09, +-8.007751829086954178e-09, +-7.996767358397302521e-09, +-7.985774043307123950e-09, +-7.974771906227447794e-09, +-7.963760969574855418e-09, +-7.952741255773463802e-09, +-7.941712787251456347e-09, +-7.930675586446014525e-09, +-7.919629675797330745e-09, +-7.908575077752774033e-09, +-7.897511814767260613e-09, +-7.886439909297591027e-09, +-7.875359383810784805e-09, +-7.864270260776296697e-09, +-7.853172562670667082e-09, +-7.842066311977305247e-09, +-7.830951531182790235e-09, +-7.819828242781387251e-09, +-7.808696469271396489e-09, +-7.797556233157262437e-09, +-7.786407556950306766e-09, +-7.775250463164759512e-09, +-7.764084974322354894e-09, +-7.752911112948031629e-09, +-7.741728901574624699e-09, +-7.730538362738954445e-09, +-7.719339518981940713e-09, +-7.708132392852904194e-09, +-7.696917006901709866e-09, +-7.685693383687667455e-09, +-7.674461545773307728e-09, +-7.663221515725039275e-09, +-7.651973316117157025e-09, +-7.640716969526035439e-09, +-7.629452498534962555e-09, +-7.618179925730449107e-09, +-7.606899273704657124e-09, +-7.595610565055820143e-09, +-7.584313822384312444e-09, +-7.573009068297428501e-09, +-7.561696325404841757e-09, +-7.550375616323607417e-09, +-7.539046963673899156e-09, +-7.527710390079642741e-09, +-7.516365918170959519e-09, +-7.505013570580212501e-09, +-7.493653369946835434e-09, +-7.482285338913274659e-09, +-7.470909500125136346e-09, +-7.459525876235175160e-09, +-7.448134489897413007e-09, +-7.436735363771408112e-09, +-7.425328520522609882e-09, +-7.413913982816172418e-09, +-7.402491773326113065e-09, +-7.391061914727192798e-09, +-7.379624429699271339e-09, +-7.368179340927520560e-09, +-7.356726671098395292e-09, +-7.345266442904473983e-09, +-7.333798679040358365e-09, +-7.322323402206178219e-09, +-7.310840635103565485e-09, +-7.299350400440737289e-09, +-7.287852720928023373e-09, +-7.276347619278077862e-09, +-7.264835118210288126e-09, +-7.253315240444482425e-09, +-7.241788008705725072e-09, +-7.230253445722533031e-09, +-7.218711574225199224e-09, +-7.207162416950324652e-09, +-7.195605996634791555e-09, +-7.184042336020164847e-09, +-7.172471457852562240e-09, +-7.160893384878600238e-09, +-7.149308139850342330e-09, +-7.137715745521149848e-09, +-7.126116224648521686e-09, +-7.114509599994149712e-09, +-7.102895894320122845e-09, +-7.091275130393767708e-09, +-7.079647330983056954e-09, +-7.068012518861954506e-09, +-7.056370716804185228e-09, +-7.044721947588111991e-09, +-7.033066233994748775e-09, +-7.021403598806093082e-09, +-7.009734064809982304e-09, +-6.998057654793666541e-09, +-6.986374391548406059e-09, +-6.974684297869333988e-09, +-6.962987396551518107e-09, +-6.951283710394586444e-09, +-6.939573262198844488e-09, +-6.927856074767938709e-09, +-6.916132170909193223e-09, +-6.904401573429532618e-09, +-6.892664305140430975e-09, +-6.880920388853207692e-09, +-6.869169847384320614e-09, +-6.857412703550853760e-09, +-6.845648980171107105e-09, +-6.833878700067242732e-09, +-6.822101886061253977e-09, +-6.810318560979786241e-09, +-6.798528747650012665e-09, +-6.786732468899828521e-09, +-6.774929747562034260e-09, +-6.763120606468035706e-09, +-6.751305068453370452e-09, +-6.739483156353475175e-09, +-6.727654893006373144e-09, +-6.715820301253180457e-09, +-6.703979403933769134e-09, +-6.692132223892058586e-09, +-6.680278783971024416e-09, +-6.668419107018016353e-09, +-6.656553215880399019e-09, +-6.644681133406062294e-09, +-6.632802882446115446e-09, +-6.620918485850578343e-09, +-6.609027966473758962e-09, +-6.597131347169696443e-09, +-6.585228650792209070e-09, +-6.573319900200110471e-09, +-6.561405118248144543e-09, +-6.549484327796823945e-09, +-6.537557551705799409e-09, +-6.525624812834511566e-09, +-6.513686134046450924e-09, +-6.501741538202840686e-09, +-6.489791048168123444e-09, +-6.477834686805179245e-09, +-6.465872476980665871e-09, +-6.453904441560457763e-09, +-6.441930603410194443e-09, +-6.429950985398303031e-09, +-6.417965610391254365e-09, +-6.405974501259093532e-09, +-6.393977680870973089e-09, +-6.381975172095123288e-09, +-6.369966997804084819e-09, +-6.357953180865576735e-09, +-6.345933744152602121e-09, +-6.333908710536508044e-09, +-6.321878102887565411e-09, +-6.309841944079621029e-09, +-6.297800256983536411e-09, +-6.285753064471698393e-09, +-6.273700389418618834e-09, +-6.261642254694104592e-09, +-6.249578683173440116e-09, +-6.237509697727999771e-09, +-6.225435321230628648e-09, +-6.213355576555549096e-09, +-6.201270486574058552e-09, +-6.189180074159747397e-09, +-6.177084362184046246e-09, +-6.164983373520294017e-09, +-6.152877131038988263e-09, +-6.140765657613353754e-09, +-6.128648976114808693e-09, +-6.116527109412932466e-09, +-6.104400080380401419e-09, +-6.092267911885899925e-09, +-6.080130626799280338e-09, +-6.067988247991704436e-09, +-6.055840798328915968e-09, +-6.043688300681460462e-09, +-6.031530777915300042e-09, +-6.019368252897239726e-09, +-6.007200748494792600e-09, +-5.995028287571732895e-09, +-5.982850892993638093e-09, +-5.970668587623174829e-09, +-5.958481394323122235e-09, +-5.946289335956845912e-09, +-5.934092435383790628e-09, +-5.921890715464885110e-09, +-5.909684199057512790e-09, +-5.897472909021018347e-09, +-5.885256868212135048e-09, +-5.873036099485396688e-09, +-5.860810625696152662e-09, +-5.848580469696088783e-09, +-5.836345654339011753e-09, +-5.824106202474019137e-09, +-5.811862136950244894e-09, +-5.799613480617099264e-09, +-5.787360256319409075e-09, +-5.775102486903105446e-09, +-5.762840195210602320e-09, +-5.750573404083718899e-09, +-5.738302136364261151e-09, +-5.726026414889313494e-09, +-5.713746262496924015e-09, +-5.701461702020865103e-09, +-5.689172756296120138e-09, +-5.676879448154459732e-09, +-5.664581800424786662e-09, +-5.652279835936170794e-09, +-5.639973577513218530e-09, +-5.627663047981737335e-09, +-5.615348270163905009e-09, +-5.603029266878449178e-09, +-5.590706060945531802e-09, +-5.578378675179662714e-09, +-5.566047132395827378e-09, +-5.553711455404707434e-09, +-5.541371667015850462e-09, +-5.529027790038075291e-09, +-5.516679847274814153e-09, +-5.504327861529739989e-09, +-5.491971855601608150e-09, +-5.479611852289801819e-09, +-5.467247874389718821e-09, +-5.454879944693262144e-09, +-5.442508085991897197e-09, +-5.430132321071932746e-09, +-5.417752672720072120e-09, +-5.405369163718932379e-09, +-5.392981816846872254e-09, +-5.380590654883104954e-09, +-5.368195700600540575e-09, +-5.355796976771209090e-09, +-5.343394506164546432e-09, +-5.330988311544832722e-09, +-5.318578415677135553e-09, +-5.306164841319897629e-09, +-5.293747611230228242e-09, +-5.281326748163597207e-09, +-5.268902274869382985e-09, +-5.256474214096524803e-09, +-5.244042588588619954e-09, +-5.231607421088191225e-09, +-5.219168734331958732e-09, +-5.206726551056463091e-09, +-5.194280893993376132e-09, +-5.181831785869511656e-09, +-5.169379249412443642e-09, +-5.156923307340662797e-09, +-5.144463982374278622e-09, +-5.132001297227909795e-09, +-5.119535274611092791e-09, +-5.107065937233375672e-09, +-5.094593307797097615e-09, +-5.082117409002480218e-09, +-5.069638263547668029e-09, +-5.057155894123939168e-09, +-5.044670323421349182e-09, +-5.032181574124169973e-09, +-5.019689668913803951e-09, +-5.007194630469331631e-09, +-4.994696481462801667e-09, +-4.982195244565000434e-09, +-4.969690942440017453e-09, +-4.957183597752074593e-09, +-4.944673233155661945e-09, +-4.932159871306313501e-09, +-4.919643534853339545e-09, +-4.907124246440359360e-09, +-4.894602028710290780e-09, +-4.882076904298348931e-09, +-4.869548895836840574e-09, +-4.857018025955863070e-09, +-4.844484317275972251e-09, +-4.831947792418999462e-09, +-4.819408473998175853e-09, +-4.806866384623784498e-09, +-4.794321546903211689e-09, +-4.781773983436107094e-09, +-4.769223716820104545e-09, +-4.756670769645653809e-09, +-4.744115164501581723e-09, +-4.731556923970498038e-09, +-4.718996070629150274e-09, +-4.706432627051715899e-09, +-4.693866615804799546e-09, +-4.681298059453334115e-09, +-4.668726980555751692e-09, +-4.656153401664032355e-09, +-4.643577345329274408e-09, +-4.630998834091920415e-09, +-4.618417890492962185e-09, +-4.605834537064322323e-09, +-4.593248796334192845e-09, +-4.580660690827226265e-09, +-4.568070243059737941e-09, +-4.555477475545426033e-09, +-4.542882410790594533e-09, +-4.530285071297275872e-09, +-4.517685479563782649e-09, +-4.505083658079825615e-09, +-4.492479629332365970e-09, +-4.479873415800200640e-09, +-4.467265039959868353e-09, +-4.454654524280690680e-09, +-4.442041891224960643e-09, +-4.429427163253382248e-09, +-4.416810362815480155e-09, +-4.404191512360153676e-09, +-4.391570634328512563e-09, +-4.378947751154378280e-09, +-4.366322885269395151e-09, +-4.353696059095737109e-09, +-4.341067295051220501e-09, +-4.328436615549976582e-09, +-4.315804042994818297e-09, +-4.303169599788398117e-09, +-4.290533308323140424e-09, +-4.277895190988049209e-09, +-4.265255270163390954e-09, +-4.252613568226437748e-09, +-4.239970107546799505e-09, +-4.227324910486740774e-09, +-4.214677999404455551e-09, +-4.202029396649150513e-09, +-4.189379124566947781e-09, +-4.176727205496015306e-09, +-4.164073661766539574e-09, +-4.151418515705956698e-09, +-4.138761789631638479e-09, +-4.126103505855960553e-09, +-4.113443686686870654e-09, +-4.100782354420521749e-09, +-4.088119531352217291e-09, +-4.075455239766425494e-09, +-4.062789501942462891e-09, +-4.050122340154622546e-09, +-4.037453776667212628e-09, +-4.024783833740342536e-09, +-4.012112533625268355e-09, +-3.999439898568459274e-09, +-3.986765950806833032e-09, +-3.974090712573575124e-09, +-3.961414206093250173e-09, +-3.948736453581957432e-09, +-3.936057477252328616e-09, +-3.923377299306278484e-09, +-3.910695941940689233e-09, +-3.898013427345307797e-09, +-3.885329777700595180e-09, +-3.872645015183440623e-09, +-3.859959161959856766e-09, +-3.847272240190076740e-09, +-3.834584272028596350e-09, +-3.821895279619399591e-09, +-3.809205285101677772e-09, +-3.796514310605104665e-09, +-3.783822378252866460e-09, +-3.771129510162344197e-09, +-3.758435728440113454e-09, +-3.745741055187830567e-09, +-3.733045512496869188e-09, +-3.720349122454166387e-09, +-3.707651907137340218e-09, +-3.694953888615261712e-09, +-3.682255088951093941e-09, +-3.669555530197661460e-09, +-3.656855234403611563e-09, +-3.644154223605961382e-09, +-3.631452519835493177e-09, +-3.618750145116619918e-09, +-3.606047121462570677e-09, +-3.593343470881225152e-09, +-3.580639215370352822e-09, +-3.567934376920624307e-09, +-3.555228977516265245e-09, +-3.542523039130071295e-09, +-3.529816583729391957e-09, +-3.517109633270662084e-09, +-3.504402209705213238e-09, +-3.491694334974603841e-09, +-3.478986031010879326e-09, +-3.466277319739905259e-09, +-3.453568223076505584e-09, +-3.440858762930206157e-09, +-3.428148961200535525e-09, +-3.415438839776885140e-09, +-3.402728420543810339e-09, +-3.390017725373665548e-09, +-3.377306776132756847e-09, +-3.364595594676648548e-09, +-3.351884202853315584e-09, +-3.339172622503612926e-09, +-3.326460875456422523e-09, +-3.313748983534517594e-09, +-3.301036968549235586e-09, +-3.288324852306210121e-09, +-3.275612656600630015e-09, +-3.262900403217630939e-09, +-3.250188113935599602e-09, +-3.237475810521228031e-09, +-3.224763514735386971e-09, +-3.212051248328279431e-09, +-3.199339033039457230e-09, +-3.186626890603573621e-09, +-3.173914842740250748e-09, +-3.161202911165274702e-09, +-3.148491117583028478e-09, +-3.135779483687055693e-09, +-3.123068031165305332e-09, +-3.110356781692720617e-09, +-3.097645756936413437e-09, +-3.084934978555737554e-09, +-3.072224468197354887e-09, +-3.059514247501176731e-09, +-3.046804338095431283e-09, +-3.034094761600944301e-09, +-3.021385539626367926e-09, +-3.008676693773884092e-09, +-2.995968245634432934e-09, +-2.983260216787686735e-09, +-2.970552628807891884e-09, +-2.957845503253637483e-09, +-2.945138861679131474e-09, +-2.932432725626583953e-09, +-2.919727116626800268e-09, +-2.907022056204414584e-09, +-2.894317565870415067e-09, +-2.881613667127446941e-09, +-2.868910381470318304e-09, +-2.856207730378455007e-09, +-2.843505735327116805e-09, +-2.830804417777251986e-09, +-2.818103799181250415e-09, +-2.805403900982984478e-09, +-2.792704744612896044e-09, +-2.780006351493914525e-09, +-2.767308743036047947e-09, +-2.754611940642201750e-09, +-2.741915965703384033e-09, +-2.729220839599207656e-09, +-2.716526583700990514e-09, +-2.703833219366964914e-09, +-2.691140767948705189e-09, +-2.678449250783509776e-09, +-2.665758689199766307e-09, +-2.653069104517471494e-09, +-2.640380518040712473e-09, +-2.627692951068791137e-09, +-2.615006424886110617e-09, +-2.602320960767987879e-09, +-2.589636579980643383e-09, +-2.576953303776307897e-09, +-2.564271153399127740e-09, +-2.551590150080320811e-09, +-2.538910315041268176e-09, +-2.526231669494125358e-09, +-2.513554234636898954e-09, +-2.500878031659339471e-09, +-2.488203081737507166e-09, +-2.475529406039707060e-09, +-2.462857025721569289e-09, +-2.450185961926065229e-09, +-2.437516235789323818e-09, +-2.424847868430410912e-09, +-2.412180880963160036e-09, +-2.399515294485869025e-09, +-2.386851130087230902e-09, +-2.374188408846266057e-09, +-2.361527151827484061e-09, +-2.348867380086717364e-09, +-2.336209114666290141e-09, +-2.323552376598198802e-09, +-2.310897186904623607e-09, +-2.298243566593031754e-09, +-2.285591536662113228e-09, +-2.272941118096285423e-09, +-2.260292331871703444e-09, +-2.247645198951255244e-09, +-2.234999740285138582e-09, +-2.222355976814054775e-09, +-2.209713929464291515e-09, +-2.197073619153674436e-09, +-2.184435066786640842e-09, +-2.171798293254249629e-09, +-2.159163319439482689e-09, +-2.146530166209691924e-09, +-2.133898854421984190e-09, +-2.121269404923715536e-09, +-2.108641838544853021e-09, +-2.096016176109349690e-09, +-2.083392438424866021e-09, +-2.070770646289669446e-09, +-2.058150820487248986e-09, +-2.045532981792256479e-09, +-2.032917150965581544e-09, +-2.020303348754853270e-09, +-2.007691595897660013e-09, +-1.995081913116637184e-09, +-1.982474321125471342e-09, +-1.969868840623860181e-09, +-1.957265492297574154e-09, +-1.944664296823824463e-09, +-1.932065274863619084e-09, +-1.919468447067727977e-09, +-1.906873834074461279e-09, +-1.894281456507509128e-09, +-1.881691334981800987e-09, +-1.869103490095936535e-09, +-1.856517942437578057e-09, +-1.843934712583402464e-09, +-1.831353821094180190e-09, +-1.818775288520736478e-09, +-1.806199135399013524e-09, +-1.793625382254435300e-09, +-1.781054049596881609e-09, +-1.768485157926757934e-09, +-1.755918727729973208e-09, +-1.743354779477966911e-09, +-1.730793333633103523e-09, +-1.718234410641007041e-09, +-1.705678030936560732e-09, +-1.693124214941636722e-09, +-1.680572983062943471e-09, +-1.668024355697949004e-09, +-1.655478353227240245e-09, +-1.642934996019941873e-09, +-1.630394304433666905e-09, +-1.617856298809639840e-09, +-1.605320999478578949e-09, +-1.592788426755813223e-09, +-1.580258600944502998e-09, +-1.567731542336159632e-09, +-1.555207271205728743e-09, +-1.542685807817521924e-09, +-1.530167172419736462e-09, +-1.517651385250493961e-09, +-1.505138466532785240e-09, +-1.492628436475071897e-09, +-1.480121315274505489e-09, +-1.467617123111986989e-09, +-1.455115880158663050e-09, +-1.442617606568284097e-09, +-1.430122322482662476e-09, +-1.417630048031545692e-09, +-1.405140803327772850e-09, +-1.392654608473191271e-09, +-1.380171483553732498e-09, +-1.367691448642660831e-09, +-1.355214523801083295e-09, +-1.342740729073000404e-09, +-1.330270084491322454e-09, +-1.317802610072323279e-09, +-1.305338325821631933e-09, +-1.292877251729309722e-09, +-1.280419407770367816e-09, +-1.267964813907982085e-09, +-1.255513490088579645e-09, +-1.243065456247818961e-09, +-1.230620732305599468e-09, +-1.218179338166094448e-09, +-1.205741293723679644e-09, +-1.193306618852568271e-09, +-1.180875333418213081e-09, +-1.168447457269645222e-09, +-1.156023010240026383e-09, +-1.143602012152005821e-09, +-1.131184482810121673e-09, +-1.118770442007270131e-09, +-1.106359909519262176e-09, +-1.093952905110748676e-09, +-1.081549448530323270e-09, +-1.069149559511016812e-09, +-1.056753257773557293e-09, +-1.044360563021413996e-09, +-1.031971494946772629e-09, +-1.019586073225602855e-09, +-1.007204317517644225e-09, +-9.948262474723354093e-10, +-9.824518827184669965e-10, +-9.700812428755889333e-10, +-9.577143475463371843e-10, +-9.453512163169662291e-10, +-9.329918687627567558e-10, +-9.206363244403760275e-10, +-9.082846028932857824e-10, +-8.959367236522495025e-10, +-8.835927062277019821e-10, +-8.712525701211458094e-10, +-8.589163348147779008e-10, +-8.465840197785258093e-10, +-8.342556444646063240e-10, +-8.219312283134488068e-10, +-8.096107907487980765e-10, +-7.972943511776730495e-10, +-7.849819289963239918e-10, +-7.726735435798782850e-10, +-7.603692142937147803e-10, +-7.480689604858377106e-10, +-7.357728014874002954e-10, +-7.234807566180825522e-10, +-7.111928451784872323e-10, +-6.989090864555437913e-10, +-6.866294997229789517e-10, +-6.743541042337588568e-10, +-6.620829192313924944e-10, +-6.498159639396396044e-10, +-6.375532575684340169e-10, +-6.252948193138471520e-10, +-6.130406683531985555e-10, +-6.007908238509864738e-10, +-5.885453049539751247e-10, +-5.763041307944232869e-10, +-5.640673204905885696e-10, +-5.518348931418549057e-10, +-5.396068678346254893e-10, +-5.273832636369040191e-10, +-5.151640996047645953e-10, +-5.029493947747314209e-10, +-4.907391681691771901e-10, +-4.785334387968238417e-10, +-4.663322256451650687e-10, +-4.541355476917674658e-10, +-4.419434238939963264e-10, +-4.297558731949163870e-10, +-4.175729145232763692e-10, +-4.053945667886183259e-10, +-3.932208488871813331e-10, +-3.810517796970291373e-10, +-3.688873780812579620e-10, +-3.567276628885025872e-10, +-3.445726529480624979e-10, +-3.324223670758092456e-10, +-3.202768240687604546e-10, +-3.081360427109854255e-10, +-2.960000417687315425e-10, +-2.838688399909346437e-10, +-2.717424561124217093e-10, +-2.596209088490452304e-10, +-2.475042169035739756e-10, +-2.353923989608224995e-10, +-2.232854736876233810e-10, +-2.111834597381854148e-10, +-1.990863757465351449e-10, +-1.869942403329426881e-10, +-1.749070720990597475e-10, +-1.628248896311143130e-10, +-1.507477115004299240e-10, +-1.386755562585533948e-10, +-1.266084424431462273e-10, +-1.145463885725843755e-10, +-1.024894131518415288e-10, +-9.043753466762792660e-11, +-7.839077158890424422e-11, +-6.634914237007672026e-11, +-5.431266544613862078e-11, +-4.228135923854983260e-11, +-3.025524215038002069e-11, +-1.823433256628719572e-11, +-6.218648857850556427e-12, + 5.791790623958106100e-12, + 1.779696754290428481e-11, + 2.979686357966085212e-11, + 4.179146043397442898e-11, + 5.378073981880053698e-11, + 6.576468346782521391e-11, + 7.774327312906543395e-11, + 8.971649057024681569e-11, + 1.016843175729414254e-10, + 1.136467359374131038e-10, + 1.256037274820995217e-10, + 1.375552740404347727e-10, + 1.495013574656822401e-10, + 1.614419596250830313e-10, + 1.733770624046889352e-10, + 1.853066477093853767e-10, + 1.972306974570473339e-10, + 2.091491935887012001e-10, + 2.210621180573428274e-10, + 2.329694528354367974e-10, + 2.448711799144016307e-10, + 2.567672812993062152e-10, + 2.686577390163550664e-10, + 2.805425351075831793e-10, + 2.924216516308865301e-10, + 3.042950706648322351e-10, + 3.161627743028273412e-10, + 3.280247446579392204e-10, + 3.398809638597190418e-10, + 3.517314140537021021e-10, + 3.635760774062100750e-10, + 3.754149360985416179e-10, + 3.872479723322918156e-10, + 3.990751683224808942e-10, + 4.108965063076701230e-10, + 4.227119685388315308e-10, + 4.345215372868036464e-10, + 4.463251948417910031e-10, + 4.581229235080672354e-10, + 4.699147056114539293e-10, + 4.817005234940048499e-10, + 4.934803595135254522e-10, + 5.052541960510085114e-10, + 5.170220154995302572e-10, + 5.287838002743391853e-10, + 5.405395328070520413e-10, + 5.522891955456898034e-10, + 5.640327709594473087e-10, + 5.757702415329022654e-10, + 5.875015897713371260e-10, + 5.992267981949292809e-10, + 6.109458493435519114e-10, + 6.226587257762455243e-10, + 6.343654100681056854e-10, + 6.460658848150169737e-10, + 6.577601326273719922e-10, + 6.694481361374695684e-10, + 6.811298779942700150e-10, + 6.928053408628797969e-10, + 7.044745074319719611e-10, + 7.161373604027149454e-10, + 7.277938824988506360e-10, + 7.394440564608683280e-10, + 7.510878650460689353e-10, + 7.627252910333058730e-10, + 7.743563172172293276e-10, + 7.859809264130339637e-10, + 7.975991014533289760e-10, + 8.092108251876522238e-10, + 8.208160804871951906e-10, + 8.324148502390582144e-10, + 8.440071173515299676e-10, + 8.555928647483343134e-10, + 8.671720753733610540e-10, + 8.787447321907173202e-10, + 8.903108181789344112e-10, + 9.018703163410233128e-10, + 9.134232096934151892e-10, + 9.249694812733576179e-10, + 9.365091141384140428e-10, + 9.480420913612332005e-10, + 9.595683960369201269e-10, + 9.710880112767487573e-10, + 9.826009202129450983e-10, + 9.941071059955021689e-10, + 1.005606551791734150e-09, + 1.017099240790970842e-09, + 1.028585156198854046e-09, + 1.040064281242563485e-09, + 1.051536599165096025e-09, + 1.063002093230031470e-09, + 1.074460746720944239e-09, + 1.085912542938375667e-09, + 1.097357465204506966e-09, + 1.108795496857454774e-09, + 1.120226621255993736e-09, + 1.131650821779561678e-09, + 1.143068081823078558e-09, + 1.154478384804280454e-09, + 1.165881714158493239e-09, + 1.177278053338160041e-09, + 1.188667385820142779e-09, + 1.200049695094816398e-09, + 1.211424964675973740e-09, + 1.222793178095125031e-09, + 1.234154318901532204e-09, + 1.245508370666884539e-09, + 1.256855316979619246e-09, + 1.268195141449605161e-09, + 1.279527827704030215e-09, + 1.290853359392068179e-09, + 1.302171720179221369e-09, + 1.313482893751969196e-09, + 1.324786863817853363e-09, + 1.336083614100240985e-09, + 1.347373128345637075e-09, + 1.358655390318026626e-09, + 1.369930383800910301e-09, + 1.381198092599455315e-09, + 1.392458500534780853e-09, + 1.403711591451259801e-09, + 1.414957349211323017e-09, + 1.426195757695509586e-09, + 1.437426800807132114e-09, + 1.448650462466607028e-09, + 1.459866726616131042e-09, + 1.471075577216594943e-09, + 1.482276998247130506e-09, + 1.493470973709686250e-09, + 1.504657487623457408e-09, + 1.515836524030006798e-09, + 1.527008066987148648e-09, + 1.538172100576131215e-09, + 1.549328608896028703e-09, + 1.560477576065806322e-09, + 1.571618986226401059e-09, + 1.582752823535088168e-09, + 1.593879072172676189e-09, + 1.604997716338406971e-09, + 1.616108740249989374e-09, + 1.627212128148197985e-09, + 1.638307864291276204e-09, + 1.649395932959613537e-09, + 1.660476318452571291e-09, + 1.671549005088117995e-09, + 1.682613977207374963e-09, + 1.693671219169036340e-09, + 1.704720715354503826e-09, + 1.715762450162273018e-09, + 1.726796408012545763e-09, + 1.737822573346801890e-09, + 1.748840930624632761e-09, + 1.759851464328460957e-09, + 1.770854158957909865e-09, + 1.781848999034396601e-09, + 1.792835969101176470e-09, + 1.803815053718238639e-09, + 1.814786237469516881e-09, + 1.825749504956721698e-09, + 1.836704840803976674e-09, + 1.847652229654774653e-09, + 1.858591656171516380e-09, + 1.869523105040057927e-09, + 1.880446560964162171e-09, + 1.891362008670652545e-09, + 1.902269432903716658e-09, + 1.913168818429620807e-09, + 1.924060150036146674e-09, + 1.934943412529587828e-09, + 1.945818590739326931e-09, + 1.956685669512319682e-09, + 1.967544633717568626e-09, + 1.978395468246291484e-09, + 1.989238158006245454e-09, + 2.000072687931382061e-09, + 2.010899042971305157e-09, + 2.021717208098301539e-09, + 2.032527168306876904e-09, + 2.043328908608733618e-09, + 2.054122414039872066e-09, + 2.064907669654481507e-09, + 2.075684660530066527e-09, + 2.086453371761902858e-09, + 2.097213788467586463e-09, + 2.107965895786555007e-09, + 2.118709678877078163e-09, + 2.129445122920763678e-09, + 2.140172213117163328e-09, + 2.150890934688195025e-09, + 2.161601272878158535e-09, + 2.172303212948344326e-09, + 2.182996740186455572e-09, + 2.193681839896175334e-09, + 2.204358497404151690e-09, + 2.215026698059595722e-09, + 2.225686427229189393e-09, + 2.236337670304142643e-09, + 2.246980412695244772e-09, + 2.257614639832352011e-09, + 2.268240337171382567e-09, + 2.278857490183890432e-09, + 2.289466084366566374e-09, + 2.300066105235686316e-09, + 2.310657538327222180e-09, + 2.321240369201304110e-09, + 2.331814583436759015e-09, + 2.342380166636088125e-09, + 2.352937104419078677e-09, + 2.363485382432150231e-09, + 2.374024986338105897e-09, + 2.384555901822952028e-09, + 2.395078114595466436e-09, + 2.405591610382276246e-09, + 2.416096374934783057e-09, + 2.426592394024260242e-09, + 2.437079653441337201e-09, + 2.447558139002979935e-09, + 2.458027836542093804e-09, + 2.468488731916916159e-09, + 2.478940811005636364e-09, + 2.489384059706421019e-09, + 2.499818463941816219e-09, + 2.510244009653374188e-09, + 2.520660682806076627e-09, + 2.531068469385495005e-09, + 2.541467355397177200e-09, + 2.551857326871146125e-09, + 2.562238369856530912e-09, + 2.572610470426475812e-09, + 2.582973614672766004e-09, + 2.593327788710206281e-09, + 2.603672978676747184e-09, + 2.614009170728014041e-09, + 2.624336351046631766e-09, + 2.634654505831520317e-09, + 2.644963621307166980e-09, + 2.655263683718296427e-09, + 2.665554679329846315e-09, + 2.675836594431436957e-09, + 2.686109415331932610e-09, + 2.696373128363935959e-09, + 2.706627719880772220e-09, + 2.716873176256159504e-09, + 2.727109483888476658e-09, + 2.737336629195487508e-09, + 2.747554598619171177e-09, + 2.757763378620534839e-09, + 2.767962955683795941e-09, + 2.778153316316019072e-09, + 2.788334447044225796e-09, + 2.798506334419756372e-09, + 2.808668965012956359e-09, + 2.818822325417508566e-09, + 2.828966402250551748e-09, + 2.839101182147763016e-09, + 2.849226651770140724e-09, + 2.859342797798295262e-09, + 2.869449606936733441e-09, + 2.879547065911005135e-09, + 2.889635161467259494e-09, + 2.899713880376542567e-09, + 2.909783209429627417e-09, + 2.919843135441651713e-09, + 2.929893645247011957e-09, + 2.939934725703637525e-09, + 2.949966363692519176e-09, + 2.959988546114840800e-09, + 2.970001259896296893e-09, + 2.980004491981966098e-09, + 2.989998229340430983e-09, + 2.999982458963887227e-09, + 3.009957167863417524e-09, + 3.019922343075640874e-09, + 3.029877971657488939e-09, + 3.039824040688086635e-09, + 3.049760537270790722e-09, + 3.059687448527841251e-09, + 3.069604761607062558e-09, + 3.079512463677175627e-09, + 3.089410541927772450e-09, + 3.099298983573576836e-09, + 3.109177775849294381e-09, + 3.119046906013847219e-09, + 3.128906361346687696e-09, + 3.138756129151900767e-09, + 3.148596196753165231e-09, + 3.158426551497981859e-09, + 3.168247180757646926e-09, + 3.178058071922583192e-09, + 3.187859212408911025e-09, + 3.197650589653415002e-09, + 3.207432191115235499e-09, + 3.217204004277903968e-09, + 3.226966016644149479e-09, + 3.236718215742458268e-09, + 3.246460589122429941e-09, + 3.256193124354777476e-09, + 3.265915809035619051e-09, + 3.275628630781170021e-09, + 3.285331577232172476e-09, + 3.295024636050929381e-09, + 3.304707794920971222e-09, + 3.314381041551219625e-09, + 3.324044363670874132e-09, + 3.333697749034027872e-09, + 3.343341185413797475e-09, + 3.352974660610973726e-09, + 3.362598162444370432e-09, + 3.372211678757354606e-09, + 3.381815197417341052e-09, + 3.391408706311193661e-09, + 3.400992193351699336e-09, + 3.410565646473074335e-09, + 3.420129053630769881e-09, + 3.429682402805798736e-09, + 3.439225681999609984e-09, + 3.448758879238242306e-09, + 3.458281982569601733e-09, + 3.467794980063022406e-09, + 3.477297859813334242e-09, + 3.486790609935997045e-09, + 3.496273218571484556e-09, + 3.505745673880370595e-09, + 3.515207964047459582e-09, + 3.524660077281342343e-09, + 3.534102001811621746e-09, + 3.543533725893059358e-09, + 3.552955237800642964e-09, + 3.562366525833530157e-09, + 3.571767578315193913e-09, + 3.581158383588416502e-09, + 3.590538930023871068e-09, + 3.599909206010219454e-09, + 3.609269199962661522e-09, + 3.618618900318081263e-09, + 3.627958295534902450e-09, + 3.637287374097302709e-09, + 3.646606124510168136e-09, + 3.655914535303681248e-09, + 3.665212595028319440e-09, + 3.674500292258918508e-09, + 3.683777615594303727e-09, + 3.693044553654565941e-09, + 3.702301095085045688e-09, + 3.711547228551506592e-09, + 3.720782942744111209e-09, + 3.730008226377498785e-09, + 3.739223068185803559e-09, + 3.748427456931164381e-09, + 3.757621381394465256e-09, + 3.766804830381451102e-09, + 3.775977792722335667e-09, + 3.785140257267410853e-09, + 3.794292212893210868e-09, + 3.803433648498152156e-09, + 3.812564553002028816e-09, + 3.821684915352238791e-09, + 3.830794724514599684e-09, + 3.839893969481626348e-09, + 3.848982639266827485e-09, + 3.858060722909203846e-09, + 3.867128209468305830e-09, + 3.876185088028300733e-09, + 3.885231347697891680e-09, + 3.894266977605589464e-09, + 3.903291966908025711e-09, + 3.912306304780658676e-09, + 3.921309980424049892e-09, + 3.930302983063403431e-09, + 3.939285301944132211e-09, + 3.948256926338054414e-09, + 3.957217845539076423e-09, + 3.966168048862623725e-09, + 3.975107525651888606e-09, + 3.984036265268569864e-09, + 3.992954257101325768e-09, + 4.001861490560801874e-09, + 4.010757955079760893e-09, + 4.019643640116971269e-09, + 4.028518535152490591e-09, + 4.037382629691477246e-09, + 4.046235913260770850e-09, + 4.055078375412857755e-09, + 4.063910005721045277e-09, + 4.072730793783361850e-09, + 4.081540729222649674e-09, + 4.090339801682202987e-09, + 4.099128000831764302e-09, + 4.107905316363309092e-09, + 4.116671737990551964e-09, + 4.125427255455056214e-09, + 4.134171858517125741e-09, + 4.142905536964058660e-09, + 4.151628280605330621e-09, + 4.160340079272793338e-09, + 4.169040922824312530e-09, + 4.177730801139146459e-09, + 4.186409704121922189e-09, + 4.195077621699895139e-09, + 4.203734543822647986e-09, + 4.212380460465889904e-09, + 4.221015361626864065e-09, + 4.229639237328477742e-09, + 4.238252077614680031e-09, + 4.246853872554362005e-09, + 4.255444612240843034e-09, + 4.264024286789411577e-09, + 4.272592886341052462e-09, + 4.281150401057559068e-09, + 4.289696821127235089e-09, + 4.298232136760759453e-09, + 4.306756338191309575e-09, + 4.315269415678164551e-09, + 4.323771359502287193e-09, + 4.332262159969918952e-09, + 4.340741807410164548e-09, + 4.349210292174691711e-09, + 4.357667604641266543e-09, + 4.366113735209335552e-09, + 4.374548674304140872e-09, + 4.382972412372171599e-09, + 4.391384939884885276e-09, + 4.399786247338322427e-09, + 4.408176325250663063e-09, + 4.416555164165888614e-09, + 4.424922754649215064e-09, + 4.433279087290945958e-09, + 4.441624152706364039e-09, + 4.449957941531656561e-09, + 4.458280444429700587e-09, + 4.466591652085075089e-09, + 4.474891555207925538e-09, + 4.483180144531237518e-09, + 4.491457410810693620e-09, + 4.499723344828182344e-09, + 4.507977937387468636e-09, + 4.516221179318103970e-09, + 4.524453061471084479e-09, + 4.532673574722514535e-09, + 4.540882709973106305e-09, + 4.549080458145837178e-09, + 4.557266810189583569e-09, + 4.565441757074658276e-09, + 4.573605289796450906e-09, + 4.581757399375478332e-09, + 4.589898076852933632e-09, + 4.598027313298345783e-09, + 4.606145099801047295e-09, + 4.614251427475970263e-09, + 4.622346287463127724e-09, + 4.630429670923657254e-09, + 4.638501569045424291e-09, + 4.646561973039003685e-09, + 4.654610874137775661e-09, + 4.662648263601418166e-09, + 4.670674132711527780e-09, + 4.678688472775317213e-09, + 4.686691275122297483e-09, + 4.694682531108005189e-09, + 4.702662232109444751e-09, + 4.710630369528967884e-09, + 4.718586934793952652e-09, + 4.726531919352622898e-09, + 4.734465314681573106e-09, + 4.742387112277419664e-09, + 4.750297303662339673e-09, + 4.758195880383761572e-09, + 4.766082834010239996e-09, + 4.773958156137303110e-09, + 4.781821838383136385e-09, + 4.789673872388441975e-09, + 4.797514249821885702e-09, + 4.805342962371836829e-09, + 4.813160001753838331e-09, + 4.820965359706280737e-09, + 4.828759027990503050e-09, + 4.836540998394182528e-09, + 4.844311262727075537e-09, + 4.852069812825016963e-09, + 4.859816640545498110e-09, + 4.867551737771296365e-09, + 4.875275096409977237e-09, + 4.882986708391763539e-09, + 4.890686565672768010e-09, + 4.898374660230498415e-09, + 4.906050984069337618e-09, + 4.913715529216487087e-09, + 4.921368287721802284e-09, + 4.929009251663021279e-09, + 4.936638413137777485e-09, + 4.944255764270938414e-09, + 4.951861297210284478e-09, + 4.959455004126551179e-09, + 4.967036877216912367e-09, + 4.974606908700750034e-09, + 4.982165090823095393e-09, + 4.989711415852326825e-09, + 4.997245876079890301e-09, + 5.004768463823594862e-09, + 5.012279171423467621e-09, + 5.019777991245646476e-09, + 5.027264915678063878e-09, + 5.034739937134002883e-09, + 5.042203048052004506e-09, + 5.049654240891707005e-09, + 5.057093508141206959e-09, + 5.064520842308460726e-09, + 5.071936235928661242e-09, + 5.079339681560040901e-09, + 5.086731171783906303e-09, + 5.094110699207917194e-09, + 5.101478256462068852e-09, + 5.108833836202157972e-09, + 5.116177431107238258e-09, + 5.123509033879517856e-09, + 5.130828637247603551e-09, + 5.138136233962464960e-09, + 5.145431816801095625e-09, + 5.152715378562437502e-09, + 5.159986912070838569e-09, + 5.167246410175525917e-09, + 5.174493865748419511e-09, + 5.181729271687545962e-09, + 5.188952620912942329e-09, + 5.196163906369863101e-09, + 5.203363121029035793e-09, + 5.210550257882615207e-09, + 5.217725309949824803e-09, + 5.224888270272813352e-09, + 5.232039131916494461e-09, + 5.239177887973756989e-09, + 5.246304531557596898e-09, + 5.253419055808239282e-09, + 5.260521453888219125e-09, + 5.267611718986302133e-09, + 5.274689844313123016e-09, + 5.281755823104710098e-09, + 5.288809648622113919e-09, + 5.295851314149042322e-09, + 5.302880812995390863e-09, + 5.309898138493050655e-09, + 5.316903283999200552e-09, + 5.323896242896525520e-09, + 5.330877008589236246e-09, + 5.337845574508421827e-09, + 5.344801934107929577e-09, + 5.351746080865876290e-09, + 5.358678008286130547e-09, + 5.365597709894112294e-09, + 5.372505179242291107e-09, + 5.379400409906123087e-09, + 5.386283395484254342e-09, + 5.393154129601807378e-09, + 5.400012605906309714e-09, + 5.406858818071043139e-09, + 5.413692759792014573e-09, + 5.420514424791454216e-09, + 5.427323806813577077e-09, + 5.434120899627975235e-09, + 5.440905697029545881e-09, + 5.447678192835002268e-09, + 5.454438380887770616e-09, + 5.461186255054163583e-09, + 5.467921809224673967e-09, + 5.474645037315645617e-09, + 5.481355933265104438e-09, + 5.488054491037768627e-09, + 5.494740704621672949e-09, + 5.501414568028012399e-09, + 5.508076075294357451e-09, + 5.514725220480772931e-09, + 5.521361997673102747e-09, + 5.527986400980638069e-09, + 5.534598424535961820e-09, + 5.541198062498002624e-09, + 5.547785309048192554e-09, + 5.554360158394020700e-09, + 5.560922604765111505e-09, + 5.567472642416406101e-09, + 5.574010265627903403e-09, + 5.580535468702363855e-09, + 5.587048245968633868e-09, + 5.593548591777364336e-09, + 5.600036500505882725e-09, + 5.606511966554799982e-09, + 5.612974984347858334e-09, + 5.619425548335312800e-09, + 5.625863652989857326e-09, + 5.632289292809768074e-09, + 5.638702462317016623e-09, + 5.645103156056760424e-09, + 5.651491368600457961e-09, + 5.657867094542102601e-09, + 5.664230328501840681e-09, + 5.670581065121778526e-09, + 5.676919299069482258e-09, + 5.683245025037394623e-09, + 5.689558237740853077e-09, + 5.695858931921187569e-09, + 5.702147102341909725e-09, + 5.708422743791786649e-09, + 5.714685851085019594e-09, + 5.720936419057194088e-09, + 5.727174442571884966e-09, + 5.733399916513602181e-09, + 5.739612835792409774e-09, + 5.745813195343641327e-09, + 5.752000990124521758e-09, + 5.758176215118980683e-09, + 5.764338865333360177e-09, + 5.770488935799983231e-09, + 5.776626421573465352e-09, + 5.782751317733545180e-09, + 5.788863619384990181e-09, + 5.794963321655423654e-09, + 5.801050419698293472e-09, + 5.807124908689467414e-09, + 5.813186783829919017e-09, + 5.819236040345866544e-09, + 5.825272673485103609e-09, + 5.831296678523308910e-09, + 5.837308050757059040e-09, + 5.843306785508445802e-09, + 5.849292878124934765e-09, + 5.855266323975748831e-09, + 5.861227118456647681e-09, + 5.867175256986666205e-09, + 5.873110735007709184e-09, + 5.879033547989168608e-09, + 5.884943691421042366e-09, + 5.890841160820269617e-09, + 5.896725951726186266e-09, + 5.902598059704024756e-09, + 5.908457480341310880e-09, + 5.914304209250705965e-09, + 5.920138242070002740e-09, + 5.925959574458651178e-09, + 5.931768202103815110e-09, + 5.937564120713653866e-09, + 5.943347326021792358e-09, + 5.949117813786970355e-09, + 5.954875579789865284e-09, + 5.960620619837574722e-09, + 5.966352929760449117e-09, + 5.972072505411650907e-09, + 5.977779342671823949e-09, + 5.983473437442150997e-09, + 5.989154785650590640e-09, + 5.994823383248284857e-09, + 6.000479226209554058e-09, + 6.006122310534798001e-09, + 6.011752632247012537e-09, + 6.017370187394507725e-09, + 6.022974972049241893e-09, + 6.028566982306292237e-09, + 6.034146214286708598e-09, + 6.039712664134174133e-09, + 6.045266328018051822e-09, + 6.050807202129658845e-09, + 6.056335282686503400e-09, + 6.061850565929471467e-09, + 6.067353048122211379e-09, + 6.072842725555570823e-09, + 6.078319594541100990e-09, + 6.083783651416950237e-09, + 6.089234892544452790e-09, + 6.094673314308059270e-09, + 6.100098913118265728e-09, + 6.105511685408003840e-09, + 6.110911627635588143e-09, + 6.116298736282772165e-09, + 6.121673007854453120e-09, + 6.127034438881442964e-09, + 6.132383025917138165e-09, + 6.137718765540419797e-09, + 6.143041654352561543e-09, + 6.148351688979661601e-09, + 6.153648866072540118e-09, + 6.158933182304852388e-09, + 6.164204634375747411e-09, + 6.169463219006363957e-09, + 6.174708932943922628e-09, + 6.179941772958920888e-09, + 6.185161735844794747e-09, + 6.190368818420865178e-09, + 6.195563017529013677e-09, + 6.200744330036286230e-09, + 6.205912752833115699e-09, + 6.211068282833076152e-09, + 6.216210916975490135e-09, + 6.221340652222314337e-09, + 6.226457485560786567e-09, + 6.231561414000442943e-09, + 6.236652434575706139e-09, + 6.241730544345494127e-09, + 6.246795740391583191e-09, + 6.251848019821073745e-09, + 6.256887379763430690e-09, + 6.261913817372796203e-09, + 6.266927329828203154e-09, + 6.271927914330590637e-09, + 6.276915568106806696e-09, + 6.281890288406517155e-09, + 6.286852072503276811e-09, + 6.291800917695848793e-09, + 6.296736821304717990e-09, + 6.301659780676351863e-09, + 6.306569793179725457e-09, + 6.311466856209101557e-09, + 6.316350967180882434e-09, + 6.321222123536345337e-09, + 6.326080322741011351e-09, + 6.330925562283380637e-09, + 6.335757839677076487e-09, + 6.340577152457932820e-09, + 6.345383498186469105e-09, + 6.350176874447896979e-09, + 6.354957278849363256e-09, + 6.359724709023721042e-09, + 6.364479162626674305e-09, + 6.369220637337620776e-09, + 6.373949130860967993e-09, + 6.378664640922960233e-09, + 6.383367165275613414e-09, + 6.388056701693911776e-09, + 6.392733247975778934e-09, + 6.397396801944535427e-09, + 6.402047361446135938e-09, + 6.406684924351155356e-09, + 6.411309488553523184e-09, + 6.415921051970072730e-09, + 6.420519612543021822e-09, + 6.425105168236990820e-09, + 6.429677717041674408e-09, + 6.434237256968491517e-09, + 6.438783786055325894e-09, + 6.443317302361295010e-09, + 6.447837803970169630e-09, + 6.452345288990292745e-09, + 6.456839755551858976e-09, + 6.461321201810554170e-09, + 6.465789625945092052e-09, + 6.470245026156937955e-09, + 6.474687400672901193e-09, + 6.479116747742087739e-09, + 6.483533065638375139e-09, + 6.487936352658738306e-09, + 6.492326607122993918e-09, + 6.496703827376138029e-09, + 6.501068011785694134e-09, + 6.505419158743884509e-09, + 6.509757266665109800e-09, + 6.514082333988130293e-09, + 6.518394359175770614e-09, + 6.522693340713570594e-09, + 6.526979277111735764e-09, + 6.531252166902487067e-09, + 6.535512008643281898e-09, + 6.539758800914365653e-09, + 6.543992542318583126e-09, + 6.548213231484860946e-09, + 6.552420867062827591e-09, + 6.556615447727716086e-09, + 6.560796972177498652e-09, + 6.564965439133025672e-09, + 6.569120847340061380e-09, + 6.573263195566640195e-09, + 6.577392482605525101e-09, + 6.581508707271496147e-09, + 6.585611868403583837e-09, + 6.589701964864686970e-09, + 6.593778995540406320e-09, + 6.597842959340797425e-09, + 6.601893855198001548e-09, + 6.605931682068317760e-09, + 6.609956438932181437e-09, + 6.613968124791513970e-09, + 6.617966738674339261e-09, + 6.621952279629723861e-09, + 6.625924746731033578e-09, + 6.629884139075720893e-09, + 6.633830455783002234e-09, + 6.637763695997123689e-09, + 6.641683858884469181e-09, + 6.645590943635763248e-09, + 6.649484949464566406e-09, + 6.653365875607183325e-09, + 6.657233721324571969e-09, + 6.661088485899807456e-09, + 6.664930168640542924e-09, + 6.668758768876257495e-09, + 6.672574285960427629e-09, + 6.676376719270497346e-09, + 6.680166068205494288e-09, + 6.683942332190082906e-09, + 6.687705510669943001e-09, + 6.691455603114890679e-09, + 6.695192609018746825e-09, + 6.698916527896897753e-09, + 6.702627359289524511e-09, + 6.706325102759421616e-09, + 6.710009757891674444e-09, + 6.713681324296781843e-09, + 6.717339801605956090e-09, + 6.720985189475387009e-09, + 6.724617487583331119e-09, + 6.728236695632306148e-09, + 6.731842813346582192e-09, + 6.735435840474391116e-09, + 6.739015776787426934e-09, + 6.742582622079621585e-09, + 6.746136376169132646e-09, + 6.749677038895871718e-09, + 6.753204610123560794e-09, + 6.756719089739565999e-09, + 6.760220477652975221e-09, + 6.763708773797286447e-09, + 6.767183978128482916e-09, + 6.770646090624645168e-09, + 6.774095111289174570e-09, + 6.777531040145984913e-09, + 6.780953877243850902e-09, + 6.784363622653775240e-09, + 6.787760276469220237e-09, + 6.791143838807929262e-09, + 6.794514309809413771e-09, + 6.797871689637108936e-09, + 6.801215978476964132e-09, + 6.804547176537172447e-09, + 6.807865284050169979e-09, + 6.811170301270335446e-09, + 6.814462228475929096e-09, + 6.817741065966587182e-09, + 6.821006814066423881e-09, + 6.824259473121502612e-09, + 6.827499043500807139e-09, + 6.830725525597021605e-09, + 6.833938919824054781e-09, + 6.837139226620469556e-09, + 6.840326446446667214e-09, + 6.843500579785464807e-09, + 6.846661627143604760e-09, + 6.849809589049618259e-09, + 6.852944466055714539e-09, + 6.856066258736313459e-09, + 6.859174967688217560e-09, + 6.862270593531992626e-09, + 6.865353136910027122e-09, + 6.868422598488410716e-09, + 6.871478978954768726e-09, + 6.874522279019997541e-09, + 6.877552499418100014e-09, + 6.880569640905061322e-09, + 6.883573704260441289e-09, + 6.886564690285238608e-09, + 6.889542599803776809e-09, + 6.892507433663563640e-09, + 6.895459192733382764e-09, + 6.898397877906018488e-09, + 6.901323490095726245e-09, + 6.904236030240502380e-09, + 6.907135499300153510e-09, + 6.910021898256699358e-09, + 6.912895228115745050e-09, + 6.915755489904620782e-09, + 6.918602684674011369e-09, + 6.921436813496041318e-09, + 6.924257877466007776e-09, + 6.927065877701950393e-09, + 6.929860815343709163e-09, + 6.932642691554539083e-09, + 6.935411507519027310e-09, + 6.938167264444752487e-09, + 6.940909963562321136e-09, + 6.943639606123518088e-09, + 6.946356193403799597e-09, + 6.949059726700248558e-09, + 6.951750207332406644e-09, + 6.954427636642889733e-09, + 6.957092015995429142e-09, + 6.959743346777376330e-09, + 6.962381630397474474e-09, + 6.965006868287878445e-09, + 6.967619061901809747e-09, + 6.970218212715363086e-09, + 6.972804322227358298e-09, + 6.975377391958106199e-09, + 6.977937423451167172e-09, + 6.980484418271145901e-09, + 6.983018378005668334e-09, + 6.985539304264923423e-09, + 6.988047198679974025e-09, + 6.990542062906040806e-09, + 6.993023898618774137e-09, + 6.995492707516685183e-09, + 6.997948491321061523e-09, + 7.000391251773954629e-09, + 7.002820990641079123e-09, + 7.005237709709492546e-09, + 7.007641410787785601e-09, + 7.010032095708372623e-09, + 7.012409766323880103e-09, + 7.014774424510368559e-09, + 7.017126072165434986e-09, + 7.019464711208330308e-09, + 7.021790343581282878e-09, + 7.024102971247676188e-09, + 7.026402596193806637e-09, + 7.028689220426655926e-09, + 7.030962845976944189e-09, + 7.033223474895766669e-09, + 7.035471109256872608e-09, + 7.037705751156484914e-09, + 7.039927402711424125e-09, + 7.042136066061849674e-09, + 7.044331743369097649e-09, + 7.046514436815902471e-09, + 7.048684148608518617e-09, + 7.050840880973098390e-09, + 7.052984636159277755e-09, + 7.055115416437762617e-09, + 7.057233224100718431e-09, + 7.059338061463067217e-09, + 7.061429930860778604e-09, + 7.063508834652187534e-09, + 7.065574775217103381e-09, + 7.067627754956700768e-09, + 7.069667776294790118e-09, + 7.071694841676080570e-09, + 7.073708953567895553e-09, + 7.075710114458049416e-09, + 7.077698326857264448e-09, + 7.079673593297372584e-09, + 7.081635916331225250e-09, + 7.083585298535164972e-09, + 7.085521742505070627e-09, + 7.087445250859932519e-09, + 7.089355826239830750e-09, + 7.091253471305903784e-09, + 7.093138188741922575e-09, + 7.095009981252280518e-09, + 7.096868851563811588e-09, + 7.098714802424336161e-09, + 7.100547836602837203e-09, + 7.102367956890692765e-09, + 7.104175166100063813e-09, + 7.105969467065294642e-09, + 7.107750862641281676e-09, + 7.109519355704961568e-09, + 7.111274949154841358e-09, + 7.113017645910390499e-09, + 7.114747448913069039e-09, + 7.116464361125000824e-09, + 7.118168385530065381e-09, + 7.119859525133932652e-09, + 7.121537782962573248e-09, + 7.123203162064467017e-09, + 7.124855665508541713e-09, + 7.126495296385626352e-09, + 7.128122057807609139e-09, + 7.129735952907156229e-09, + 7.131336984839093121e-09, + 7.132925156778784206e-09, + 7.134500471923562138e-09, + 7.136062933491085054e-09, + 7.137612544720655099e-09, + 7.139149308873008322e-09, + 7.140673229229541260e-09, + 7.142184309093462378e-09, + 7.143682551788331265e-09, + 7.145167960659133142e-09, + 7.146640539072608907e-09, + 7.148100290415490760e-09, + 7.149547218096472546e-09, + 7.150981325544901155e-09, + 7.152402616211145444e-09, + 7.153811093567092549e-09, + 7.155206761104706106e-09, + 7.156589622338044570e-09, + 7.157959680801605205e-09, + 7.159316940050462218e-09, + 7.160661403661481889e-09, + 7.161993075231875833e-09, + 7.163311958380143160e-09, + 7.164618056745282166e-09, + 7.165911373987939293e-09, + 7.167191913788662949e-09, + 7.168459679849361000e-09, + 7.169714675893141948e-09, + 7.170956905663047697e-09, + 7.172186372923916359e-09, + 7.173403081460713004e-09, + 7.174607035079285704e-09, + 7.175798237606887484e-09, + 7.176976692890409464e-09, + 7.178142404798495132e-09, + 7.179295377220072100e-09, + 7.180435614064425722e-09, + 7.181563119262347218e-09, + 7.182677896764452023e-09, + 7.183779950542861437e-09, + 7.184869284589841092e-09, + 7.185945902917934124e-09, + 7.187009809561100202e-09, + 7.188061008573222469e-09, + 7.189099504029385533e-09, + 7.190125300024310442e-09, + 7.191138400674486331e-09, + 7.192138810115891535e-09, + 7.193126532505363405e-09, + 7.194101572020598303e-09, + 7.195063932858968738e-09, + 7.196013619239199232e-09, + 7.196950635399942741e-09, + 7.197874985600034602e-09, + 7.198786674119551323e-09, + 7.199685705258149604e-09, + 7.200572083336473371e-09, + 7.201445812695208310e-09, + 7.202306897695106680e-09, + 7.203155342717939401e-09, + 7.203991152165146093e-09, + 7.204814330459171800e-09, + 7.205624882041945806e-09, + 7.206422811375996673e-09, + 7.207208122944354636e-09, + 7.207980821249857595e-09, + 7.208740910816081697e-09, + 7.209488396186106351e-09, + 7.210223281923515950e-09, + 7.210945572612507396e-09, + 7.211655272856405320e-09, + 7.212352387279931031e-09, + 7.213036920526711880e-09, + 7.213708877261277242e-09, + 7.214368262167987322e-09, + 7.215015079950820569e-09, + 7.215649335334636776e-09, + 7.216271033063650939e-09, + 7.216880177902628525e-09, + 7.217476774635667870e-09, + 7.218060828067224223e-09, + 7.218632343021835950e-09, + 7.219191324343614167e-09, + 7.219737776897052547e-09, + 7.220271705566113284e-09, + 7.220793115254712652e-09, + 7.221302010887036159e-09, + 7.221798397406349058e-09, + 7.222282279776814497e-09, + 7.222753662981382547e-09, + 7.223212552023205512e-09, + 7.223658951925617249e-09, + 7.224092867730899842e-09, + 7.224514304501832081e-09, + 7.224923267320410645e-09, + 7.225319761288698788e-09, + 7.225703791528278744e-09, + 7.226075363180136748e-09, + 7.226434481405500976e-09, + 7.226781151384746350e-09, + 7.227115378318320158e-09, + 7.227437167425699805e-09, + 7.227746523946242329e-09, + 7.228043453139178606e-09, + 7.228327960282544641e-09, + 7.228600050674772227e-09, + 7.228859729633154530e-09, + 7.229107002494678236e-09, + 7.229341874616083925e-09, + 7.229564351372945431e-09, + 7.229774438160896540e-09, + 7.229972140394809609e-09, + 7.230157463508391068e-09, + 7.230330412955935045e-09, + 7.230490994209913791e-09, + 7.230639212762857857e-09, + 7.230775074126393262e-09, + 7.230898583831259684e-09, + 7.231009747427949048e-09, + 7.231108570485778257e-09, + 7.231195058593617107e-09, + 7.231269217359471391e-09, + 7.231331052410756696e-09, + 7.231380569393620113e-09, + 7.231417773973685528e-09, + 7.231442671835984966e-09, + 7.231455268684139681e-09, + 7.231455570241327959e-09, + 7.231443582249837613e-09, + 7.231419310470566364e-09, + 7.231382760684297356e-09, + 7.231333938689979446e-09, + 7.231272850306244254e-09, + 7.231199501370529351e-09, + 7.231113897738961627e-09, + 7.231016045287253126e-09, + 7.230905949909527281e-09, + 7.230783617519242041e-09, + 7.230649054048607543e-09, + 7.230502265448477745e-09, + 7.230343257689046916e-09, + 7.230172036759065469e-09, + 7.229988608666355291e-09, + 7.229792979437335772e-09, + 7.229585155117256241e-09, + 7.229365141770402762e-09, + 7.229132945479518280e-09, + 7.228888572346389090e-09, + 7.228632028491113616e-09, + 7.228363320052913865e-09, + 7.228082453189682143e-09, + 7.227789434077552566e-09, + 7.227484268911799384e-09, + 7.227166963906043712e-09, + 7.226837525292729989e-09, + 7.226495959322757878e-09, + 7.226142272265429331e-09, + 7.225776470408953166e-09, + 7.225398560059924774e-09, + 7.225008547543530427e-09, + 7.224606439203192422e-09, + 7.224192241401029822e-09, + 7.223765960517690531e-09, + 7.223327602952008850e-09, + 7.222877175121478618e-09, + 7.222414683461895873e-09, + 7.221940134427330727e-09, + 7.221453534490525240e-09, + 7.220954890142134896e-09, + 7.220444207891476371e-09, + 7.219921494265950995e-09, + 7.219386755811404568e-09, + 7.218839999092005768e-09, + 7.218281230689787067e-09, + 7.217710457205407389e-09, + 7.217127685257504428e-09, + 7.216532921483101625e-09, + 7.215926172537086208e-09, + 7.215307445092640990e-09, + 7.214676745841144274e-09, + 7.214034081492017656e-09, + 7.213379458772871602e-09, + 7.212712884429119164e-09, + 7.212034365224342413e-09, + 7.211343907940292443e-09, + 7.210641519376456757e-09, + 7.209927206350512555e-09, + 7.209200975698052946e-09, + 7.208462834272578670e-09, + 7.207712788945592399e-09, + 7.206950846606254630e-09, + 7.206177014161940377e-09, + 7.205391298537735418e-09, + 7.204593706676395763e-09, + 7.203784245538715750e-09, + 7.202962922103320422e-09, + 7.202129743366507536e-09, + 7.201284716342301329e-09, + 7.200427848062643597e-09, + 7.199559145576910624e-09, + 7.198678615952335040e-09, + 7.197786266273908215e-09, + 7.196882103644113082e-09, + 7.195966135183321180e-09, + 7.195038368029214459e-09, + 7.194098809337182322e-09, + 7.193147466280293505e-09, + 7.192184346049002425e-09, + 7.191209455851413053e-09, + 7.190222802913165587e-09, + 7.189224394477289217e-09, + 7.188214237804355153e-09, + 7.187192340172299607e-09, + 7.186158708876647959e-09, + 7.185113351230204565e-09, + 7.184056274563138783e-09, + 7.182987486223066867e-09, + 7.181906993574968417e-09, + 7.180814804001130133e-09, + 7.179710924901014294e-09, + 7.178595363691602037e-09, + 7.177468127806941716e-09, + 7.176329224698383823e-09, + 7.175178661834489996e-09, + 7.174016446701071070e-09, + 7.172842586801124214e-09, + 7.171657089654727046e-09, + 7.170459962799080653e-09, + 7.169251213788681639e-09, + 7.168030850194816721e-09, + 7.166798879606186423e-09, + 7.165555309628245812e-09, + 7.164300147883683434e-09, + 7.163033402012153313e-09, + 7.161755079670203806e-09, + 7.160465188531507565e-09, + 7.159163736286534800e-09, + 7.157850730642708784e-09, + 7.156526179324367809e-09, + 7.155190090072868582e-09, + 7.153842470646269410e-09, + 7.152483328819495644e-09, + 7.151112672384266879e-09, + 7.149730509149222693e-09, + 7.148336846939623202e-09, + 7.146931693597527733e-09, + 7.145515056981823777e-09, + 7.144086944968040869e-09, + 7.142647365448361348e-09, + 7.141196326331665016e-09, + 7.139733835543479517e-09, + 7.138259901025977019e-09, + 7.136774530737927072e-09, + 7.135277732654573354e-09, + 7.133769514767915740e-09, + 7.132249885086376949e-09, + 7.130718851634862103e-09, + 7.129176422454870392e-09, + 7.127622605604265947e-09, + 7.126057409157449069e-09, + 7.124480841205172590e-09, + 7.122892909854684979e-09, + 7.121293623229628598e-09, + 7.119682989469875918e-09, + 7.118061016731732182e-09, + 7.116427713187842759e-09, + 7.114783087027087262e-09, + 7.113127146454692050e-09, + 7.111459899692003576e-09, + 7.109781354976858968e-09, + 7.108091520563078135e-09, + 7.106390404720673048e-09, + 7.104678015735984223e-09, + 7.102954361911327516e-09, + 7.101219451565210842e-09, + 7.099473293032210928e-09, + 7.097715894663112276e-09, + 7.095947264824615173e-09, + 7.094167411899474651e-09, + 7.092376344286488914e-09, + 7.090574070400416612e-09, + 7.088760598672037232e-09, + 7.086935937547949262e-09, + 7.085100095490852260e-09, + 7.083253080979278849e-09, + 7.081394902507540122e-09, + 7.079525568585915893e-09, + 7.077645087740471064e-09, + 7.075753468513097813e-09, + 7.073850719461483327e-09, + 7.071936849158967537e-09, + 7.070011866194940156e-09, + 7.068075779174169840e-09, + 7.066128596717334409e-09, + 7.064170327460681706e-09, + 7.062200980056121409e-09, + 7.060220563171278801e-09, + 7.058229085489210221e-09, + 7.056226555708908468e-09, + 7.054212982544541797e-09, + 7.052188374726032118e-09, + 7.050152740998763001e-09, + 7.048106090123603664e-09, + 7.046048430876970184e-09, + 7.043979772050583135e-09, + 7.041900122451728975e-09, + 7.039809490903098747e-09, + 7.037707886242687162e-09, + 7.035595317323911714e-09, + 7.033471793015473712e-09, + 7.031337322201428593e-09, + 7.029191913781104856e-09, + 7.027035576669034581e-09, + 7.024868319795204889e-09, + 7.022690152104658415e-09, + 7.020501082557617386e-09, + 7.018301120129567168e-09, + 7.016090273811086688e-09, + 7.013868552608023801e-09, + 7.011635965541041996e-09, + 7.009392521646265592e-09, + 7.007138229974580775e-09, + 7.004873099592109570e-09, + 7.002597139579858290e-09, + 7.000310359033850713e-09, + 6.998012767065232303e-09, + 6.995704372799854145e-09, + 6.993385185378649304e-09, + 6.991055213957449199e-09, + 6.988714467706909149e-09, + 6.986362955812625838e-09, + 6.984000687474906532e-09, + 6.981627671908965943e-09, + 6.979243918344707857e-09, + 6.976849436026866582e-09, + 6.974444234215071468e-09, + 6.972028322183348941e-09, + 6.969601709220684990e-09, + 6.967164404630498252e-09, + 6.964716417731124738e-09, + 6.962257757855360404e-09, + 6.959788434350556276e-09, + 6.957308456578763205e-09, + 6.954817833916600349e-09, + 6.952316575755119513e-09, + 6.949804691499894485e-09, + 6.947282190570958995e-09, + 6.944749082403012689e-09, + 6.942205376444885936e-09, + 6.939651082160017945e-09, + 6.937086209026170553e-09, + 6.934510766535588707e-09, + 6.931924764194734105e-09, + 6.929328211524370397e-09, + 6.926721118059669893e-09, + 6.924103493349917431e-09, + 6.921475346958784176e-09, + 6.918836688464291221e-09, + 6.916187527458281845e-09, + 6.913527873547245390e-09, + 6.910857736351282454e-09, + 6.908177125505140522e-09, + 6.905486050657429799e-09, + 6.902784521470762175e-09, + 6.900072547622014271e-09, + 6.897350138802029653e-09, + 6.894617304715542729e-09, + 6.891874055081563394e-09, + 6.889120399632698732e-09, + 6.886356348115814773e-09, + 6.883581910291431812e-09, + 6.880797095934174402e-09, + 6.878001914832394989e-09, + 6.875196376788484096e-09, + 6.872380491618499754e-09, + 6.869554269152206376e-09, + 6.866717719233500757e-09, + 6.863870851719511272e-09, + 6.861013676481564024e-09, + 6.858146203404484704e-09, + 6.855268442386726803e-09, + 6.852380403340664435e-09, + 6.849482096191919839e-09, + 6.846573530879917588e-09, + 6.843654717357961522e-09, + 6.840725665592189184e-09, + 6.837786385563021876e-09, + 6.834836887263942904e-09, + 6.831877180702091504e-09, + 6.828907275898123040e-09, + 6.825927182885943483e-09, + 6.822936911713097358e-09, + 6.819936472440201126e-09, + 6.816925875141591690e-09, + 6.813905129904905367e-09, + 6.810874246830842135e-09, + 6.807833236033644573e-09, + 6.804782107640586663e-09, + 6.801720871792556127e-09, + 6.798649538643288456e-09, + 6.795568118359850809e-09, + 6.792476621122740452e-09, + 6.789375057125074944e-09, + 6.786263436573672437e-09, + 6.783141769688049960e-09, + 6.780010066700831218e-09, + 6.776868337858105590e-09, + 6.773716593418381745e-09, + 6.770554843653614171e-09, + 6.767383098848589411e-09, + 6.764201369300966592e-09, + 6.761009665321674472e-09, + 6.757807997234066888e-09, + 6.754596375374796263e-09, + 6.751374810092954986e-09, + 6.748143311750964635e-09, + 6.744901890723716537e-09, + 6.741650557398881959e-09, + 6.738389322177364575e-09, + 6.735118195471895916e-09, + 6.731837187708889080e-09, + 6.728546309326795125e-09, + 6.725245570776912876e-09, + 6.721934982523415400e-09, + 6.718614555042753604e-09, + 6.715284298824234437e-09, + 6.711944224369413737e-09, + 6.708594342192604951e-09, + 6.705234662820818746e-09, + 6.701865196793119467e-09, + 6.698485954661423362e-09, + 6.695096946989731790e-09, + 6.691698184354907112e-09, + 6.688289677345971246e-09, + 6.684871436564117245e-09, + 6.681443472623270124e-09, + 6.678005796149214188e-09, + 6.674558417780569933e-09, + 6.671101348167859325e-09, + 6.667634597973832545e-09, + 6.664158177873902252e-09, + 6.660672098555007042e-09, + 6.657176370716752126e-09, + 6.653671005070822035e-09, + 6.650156012340656361e-09, + 6.646631403262386132e-09, + 6.643097188583745234e-09, + 6.639553379064816537e-09, + 6.635999985477272535e-09, + 6.632437018605348116e-09, + 6.628864489245007588e-09, + 6.625282408203962878e-09, + 6.621690786302174804e-09, + 6.618089634371058155e-09, + 6.614478963254557022e-09, + 6.610858783808076914e-09, + 6.607229106898579876e-09, + 6.603589943405484471e-09, + 6.599941304219419209e-09, + 6.596283200242962882e-09, + 6.592615642390523788e-09, + 6.588938641587951792e-09, + 6.585252208773219914e-09, + 6.581556354895407730e-09, + 6.577851090915449968e-09, + 6.574136427806190276e-09, + 6.570412376551518471e-09, + 6.566678948147243216e-09, + 6.562936153600483214e-09, + 6.559184003930113886e-09, + 6.555422510166003058e-09, + 6.551651683350115242e-09, + 6.547871534535476012e-09, + 6.544082074786266299e-09, + 6.540283315178843958e-09, + 6.536475266799749440e-09, + 6.532657940747983844e-09, + 6.528831348133332221e-09, + 6.524995500076558792e-09, + 6.521150407710399563e-09, + 6.517296082178153635e-09, + 6.513432534634581526e-09, + 6.509559776245843954e-09, + 6.505677818188861604e-09, + 6.501786671651972737e-09, + 6.497886347834276403e-09, + 6.493976857946221399e-09, + 6.490058213209461512e-09, + 6.486130424856205350e-09, + 6.482193504130050974e-09, + 6.478247462285203381e-09, + 6.474292310587295895e-09, + 6.470328060312689545e-09, + 6.466354722748275371e-09, + 6.462372309192397554e-09, + 6.458380830953640771e-09, + 6.454380299352152031e-09, + 6.450370725718073165e-09, + 6.446352121392892442e-09, + 6.442324497728940812e-09, + 6.438287866088388540e-09, + 6.434242237845260217e-09, + 6.430187624383316349e-09, + 6.426124037097343759e-09, + 6.422051487393043919e-09, + 6.417969986686187570e-09, + 6.413879546403472509e-09, + 6.409780177981689792e-09, + 6.405671892868774251e-09, + 6.401554702522835867e-09, + 6.397428618412255722e-09, + 6.393293652016284879e-09, + 6.389149814823928516e-09, + 6.384997118335499368e-09, + 6.380835574061112262e-09, + 6.376665193520944675e-09, + 6.372485988246460965e-09, + 6.368297969778088820e-09, + 6.364101149667673499e-09, + 6.359895539476790390e-09, + 6.355681150777084975e-09, + 6.351457995151007371e-09, + 6.347226084190367242e-09, + 6.342985429497777233e-09, + 6.338736042685404751e-09, + 6.334477935375780120e-09, + 6.330211119201832155e-09, + 6.325935605805936898e-09, + 6.321651406840884596e-09, + 6.317358533968916862e-09, + 6.313056998863007149e-09, + 6.308746813205665477e-09, + 6.304427988688901207e-09, + 6.300100537015627595e-09, + 6.295764469897245597e-09, + 6.291419799056256934e-09, + 6.287066536224448428e-09, + 6.282704693143004500e-09, + 6.278334281563706583e-09, + 6.273955313247215894e-09, + 6.269567799964311720e-09, + 6.265171753495855858e-09, + 6.260767185631244122e-09, + 6.256354108170745618e-09, + 6.251932532923297477e-09, + 6.247502471708027696e-09, + 6.243063936352931648e-09, + 6.238616938696332053e-09, + 6.234161490585693636e-09, + 6.229697603877600784e-09, + 6.225225290438754305e-09, + 6.220744562144464303e-09, + 6.216255430880318600e-09, + 6.211757908540852632e-09, + 6.207252007029511396e-09, + 6.202737738260014300e-09, + 6.198215114154417079e-09, + 6.193684146644578384e-09, + 6.189144847671935618e-09, + 6.184597229185881180e-09, + 6.180041303146511187e-09, + 6.175477081521962778e-09, + 6.170904576289897249e-09, + 6.166323799437496745e-09, + 6.161734762960315308e-09, + 6.157137478863518815e-09, + 6.152531959160831985e-09, + 6.147918215875214177e-09, + 6.143296261039070330e-09, + 6.138666106692915057e-09, + 6.134027764886847517e-09, + 6.129381247679147683e-09, + 6.124726567138160662e-09, + 6.120063735339896217e-09, + 6.115392764369784042e-09, + 6.110713666322084815e-09, + 6.106026453299298756e-09, + 6.101331137413636360e-09, + 6.096627730784957062e-09, + 6.091916245542435177e-09, + 6.087196693824217448e-09, + 6.082469087776257548e-09, + 6.077733439553828995e-09, + 6.072989761320230613e-09, + 6.068238065247670789e-09, + 6.063478363517299731e-09, + 6.058710668317823115e-09, + 6.053934991847371515e-09, + 6.049151346311665712e-09, + 6.044359743925765357e-09, + 6.039560196912697503e-09, + 6.034752717503588132e-09, + 6.029937317938557157e-09, + 6.025114010465197243e-09, + 6.020282807340685596e-09, + 6.015443720829245347e-09, + 6.010596763203813974e-09, + 6.005741946746068945e-09, + 6.000879283745003314e-09, + 5.996008786498518043e-09, + 5.991130467311978573e-09, + 5.986244338499384454e-09, + 5.981350412383150973e-09, + 5.976448701292881616e-09, + 5.971539217566972799e-09, + 5.966621973551103437e-09, + 5.961696981599895919e-09, + 5.956764254075443733e-09, + 5.951823803347463661e-09, + 5.946875641794361191e-09, + 5.941919781801457868e-09, + 5.936956235762969083e-09, + 5.931985016080513494e-09, + 5.927006135163025342e-09, + 5.922019605428278952e-09, + 5.917025439300786029e-09, + 5.912023649213470710e-09, + 5.907014247606844856e-09, + 5.901997246928571308e-09, + 5.896972659635044622e-09, + 5.891940498189170095e-09, + 5.886900775062270413e-09, + 5.881853502732486712e-09, + 5.876798693686376690e-09, + 5.871736360417756556e-09, + 5.866666515427441294e-09, + 5.861589171224396098e-09, + 5.856504340324253237e-09, + 5.851412035251079744e-09, + 5.846312268535807419e-09, + 5.841205052716236147e-09, + 5.836090400338977766e-09, + 5.830968323955967849e-09, + 5.825838836128159890e-09, + 5.820701949423151301e-09, + 5.815557676415238001e-09, + 5.810406029687139916e-09, + 5.805247021827535982e-09, + 5.800080665432906274e-09, + 5.794906973107230089e-09, + 5.789725957460690574e-09, + 5.784537631111334888e-09, + 5.779342006683665503e-09, + 5.774139096809516194e-09, + 5.768928914128227402e-09, + 5.763711471285078721e-09, + 5.758486780933337831e-09, + 5.753254855732150358e-09, + 5.748015708349030512e-09, + 5.742769351456482056e-09, + 5.737515797735526236e-09, + 5.732255059873375740e-09, + 5.726987150563490955e-09, + 5.721712082507428708e-09, + 5.716429868412177925e-09, + 5.711140520991997620e-09, + 5.705844052968489689e-09, + 5.700540477068318376e-09, + 5.695229806026582682e-09, + 5.689912052583652406e-09, + 5.684587229486997864e-09, + 5.679255349491285016e-09, + 5.673916425356565596e-09, + 5.668570469850311147e-09, + 5.663217495745575854e-09, + 5.657857515822961098e-09, + 5.652490542869014036e-09, + 5.647116589676220151e-09, + 5.641735669044378861e-09, + 5.636347793778549623e-09, + 5.630952976691473920e-09, + 5.625551230600934903e-09, + 5.620142568331493639e-09, + 5.614727002714723207e-09, + 5.609304546586595630e-09, + 5.603875212791377072e-09, + 5.598439014177958465e-09, + 5.592995963601925940e-09, + 5.587546073925591433e-09, + 5.582089358016245681e-09, + 5.576625828748112021e-09, + 5.571155499000863256e-09, + 5.565678381660370254e-09, + 5.560194489619265258e-09, + 5.554703835774916944e-09, + 5.549206433031548836e-09, + 5.543702294298440187e-09, + 5.538191432491815257e-09, + 5.532673860533260090e-09, + 5.527149591349562870e-09, + 5.521618637874941517e-09, + 5.516081013047225422e-09, + 5.510536729811943372e-09, + 5.504985801119565733e-09, + 5.499428239925755907e-09, + 5.493864059193124791e-09, + 5.488293271888671472e-09, + 5.482715890985864416e-09, + 5.477131929463239400e-09, + 5.471541400305089377e-09, + 5.465944316501839188e-09, + 5.460340691048430084e-09, + 5.454730536946118008e-09, + 5.449113867200743970e-09, + 5.443490694824705209e-09, + 5.437861032835355435e-09, + 5.432224894254954362e-09, + 5.426582292111906003e-09, + 5.420933239439049715e-09, + 5.415277749275632193e-09, + 5.409615834665677931e-09, + 5.403947508657815507e-09, + 5.398272784307377799e-09, + 5.392591674673517606e-09, + 5.386904192821087000e-09, + 5.381210351820929322e-09, + 5.375510164747101512e-09, + 5.369803644680860288e-09, + 5.364090804707039924e-09, + 5.358371657916015979e-09, + 5.352646217403981570e-09, + 5.346914496270765275e-09, + 5.341176507622246499e-09, + 5.335432264568435584e-09, + 5.329681780225090127e-09, + 5.323925067711876149e-09, + 5.318162140154402139e-09, + 5.312393010682831870e-09, + 5.306617692431259049e-09, + 5.300836198540079672e-09, + 5.295048542153083658e-09, + 5.289254736419564985e-09, + 5.283454794493574746e-09, + 5.277648729533022834e-09, + 5.271836554701870793e-09, + 5.266018283167430250e-09, + 5.260193928102128942e-09, + 5.254363502683587649e-09, + 5.248527020092828516e-09, + 5.242684493516372783e-09, + 5.236835936144498747e-09, + 5.230981361172269945e-09, + 5.225120781800015743e-09, + 5.219254211231091336e-09, + 5.213381662674369213e-09, + 5.207503149342057056e-09, + 5.201618684452108141e-09, + 5.195728281225490821e-09, + 5.189831952888100961e-09, + 5.183929712670408737e-09, + 5.178021573806018509e-09, + 5.172107549534396870e-09, + 5.166187653097651599e-09, + 5.160261897742726999e-09, + 5.154330296721365849e-09, + 5.148392863288132440e-09, + 5.142449610702742746e-09, + 5.136500552228228906e-09, + 5.130545701132006289e-09, + 5.124585070686118341e-09, + 5.118618674165408514e-09, + 5.112646524849680860e-09, + 5.106668636021682544e-09, + 5.100685020969235479e-09, + 5.094695692983620851e-09, + 5.088700665359362393e-09, + 5.082699951395768249e-09, + 5.076693564394848965e-09, + 5.070681517663716307e-09, + 5.064663824512569909e-09, + 5.058640498254744417e-09, + 5.052611552208679838e-09, + 5.046576999695200937e-09, + 5.040536854039659644e-09, + 5.034491128570291435e-09, + 5.028439836619298122e-09, + 5.022382991523170444e-09, + 5.016320606620607716e-09, + 5.010252695254912511e-09, + 5.004179270771911957e-09, + 4.998100346522104272e-09, + 4.992015935858788508e-09, + 4.985926052138313530e-09, + 4.979830708721236072e-09, + 4.973729918970449654e-09, + 4.967623696253405559e-09, + 4.961512053940416290e-09, + 4.955395005404241976e-09, + 4.949272564022754723e-09, + 4.943144743174623212e-09, + 4.937011556243968069e-09, + 4.930873016617171436e-09, + 4.924729137683181365e-09, + 4.918579932835533456e-09, + 4.912425415469516100e-09, + 4.906265598984426210e-09, + 4.900100496781617893e-09, + 4.893930122266754043e-09, + 4.887754488847904647e-09, + 4.881573609935627854e-09, + 4.875387498944334818e-09, + 4.869196169290357407e-09, + 4.862999634394146849e-09, + 4.856797907678468823e-09, + 4.850591002568161922e-09, + 4.844378932492825165e-09, + 4.838161710882262711e-09, + 4.831939351171441979e-09, + 4.825711866796997987e-09, + 4.819479271197884337e-09, + 4.813241577817137597e-09, + 4.806998800098934188e-09, + 4.800750951490819640e-09, + 4.794498045443816949e-09, + 4.788240095409350292e-09, + 4.781977114843807759e-09, + 4.775709117204505537e-09, + 4.769436115951776538e-09, + 4.763158124549230140e-09, + 4.756875156461540299e-09, + 4.750587225157008988e-09, + 4.744294344105182257e-09, + 4.737996526779823126e-09, + 4.731693786654653252e-09, + 4.725386137207918973e-09, + 4.719073591919294341e-09, + 4.712756164270068888e-09, + 4.706433867745454642e-09, + 4.700106715831193848e-09, + 4.693774722016038865e-09, + 4.687437899791779459e-09, + 4.681096262650173135e-09, + 4.674749824087564941e-09, + 4.668398597600576204e-09, + 4.662042596688653075e-09, + 4.655681834853953199e-09, + 4.649316325599344772e-09, + 4.642946082430764829e-09, + 4.636571118855392830e-09, + 4.630191448382663958e-09, + 4.623807084524715795e-09, + 4.617418040794240958e-09, + 4.611024330706880966e-09, + 4.604625967779077222e-09, + 4.598222965530467353e-09, + 4.591815337481741987e-09, + 4.585403097154836660e-09, + 4.578986258075154449e-09, + 4.572564833767340732e-09, + 4.566138837760290116e-09, + 4.559708283582745006e-09, + 4.553273184765770529e-09, + 4.546833554842747092e-09, + 4.540389407347427333e-09, + 4.533940755816083481e-09, + 4.527487613785753735e-09, + 4.521029994795443330e-09, + 4.514567912386352011e-09, + 4.508101380099777958e-09, + 4.501630411479579472e-09, + 4.495155020070032585e-09, + 4.488675219418072710e-09, + 4.482191023071389652e-09, + 4.475702444578502877e-09, + 4.469209497490248783e-09, + 4.462712195357587020e-09, + 4.456210551734175500e-09, + 4.449704580174146935e-09, + 4.443194294232306538e-09, + 4.436679707466184253e-09, + 4.430160833432883199e-09, + 4.423637685691830873e-09, + 4.417110277802631789e-09, + 4.410578623326520004e-09, + 4.404042735826392213e-09, + 4.397502628864976362e-09, + 4.390958316007066695e-09, + 4.384409810817276305e-09, + 4.377857126862685763e-09, + 4.371300277710570857e-09, + 4.364739276928678037e-09, + 4.358174138086599196e-09, + 4.351604874753553168e-09, + 4.345031500501230402e-09, + 4.338454028901270063e-09, + 4.331872473525397340e-09, + 4.325286847947869425e-09, + 4.318697165741946756e-09, + 4.312103440482610307e-09, + 4.305505685745547464e-09, + 4.298903915106163544e-09, + 4.292298142142212231e-09, + 4.285688380430356155e-09, + 4.279074643548576477e-09, + 4.272456945076212583e-09, + 4.265835298591636061e-09, + 4.259209717674964676e-09, + 4.252580215905983667e-09, + 4.245946806865733106e-09, + 4.239309504134600419e-09, + 4.232668321294854869e-09, + 4.226023271928400930e-09, + 4.219374369616815516e-09, + 4.212721627943984198e-09, + 4.206065060491354849e-09, + 4.199404680843315968e-09, + 4.192740502583396612e-09, + 4.186072539294651866e-09, + 4.179400804562154308e-09, + 4.172725311969389153e-09, + 4.166046075100791225e-09, + 4.159363107541686216e-09, + 4.152676422876125137e-09, + 4.145986034689374953e-09, + 4.139291956565858902e-09, + 4.132594202090525487e-09, + 4.125892784849124744e-09, + 4.119187718425916960e-09, + 4.112479016406392439e-09, + 4.105766692374674154e-09, + 4.099050759917001007e-09, + 4.092331232616570357e-09, + 4.085608124059061105e-09, + 4.078881447829015605e-09, + 4.072151217510022472e-09, + 4.065417446687249410e-09, + 4.058680148943859863e-09, + 4.051939337863617808e-09, + 4.045195027030953104e-09, + 4.038447230027508009e-09, + 4.031695960437397226e-09, + 4.024941231842339114e-09, + 4.018183057824490440e-09, + 4.011421451966314853e-09, + 4.004656427848461995e-09, + 3.997887999052325144e-09, + 3.991116179157575389e-09, + 3.984340981744923582e-09, + 3.977562420393814165e-09, + 3.970780508682682418e-09, + 3.963995260190339160e-09, + 3.957206688493781204e-09, + 3.950414807171017006e-09, + 3.943619629798522255e-09, + 3.936821169951390420e-09, + 3.930019441206125315e-09, + 3.923214457135658988e-09, + 3.916406231315027006e-09, + 3.909594777316409510e-09, + 3.902780108712146285e-09, + 3.895962239074338890e-09, + 3.889141181972841433e-09, + 3.882316950977912514e-09, + 3.875489559657877611e-09, + 3.868659021580700725e-09, + 3.861825350314224261e-09, + 3.854988559423719747e-09, + 3.848148662474883054e-09, + 3.841305673031013712e-09, + 3.834459604656015919e-09, + 3.827610470911944296e-09, + 3.820758285358975767e-09, + 3.813903061558333637e-09, + 3.807044813067157422e-09, + 3.800183553444201293e-09, + 3.793319296245910761e-09, + 3.786452055026767609e-09, + 3.779581843341864081e-09, + 3.772708674743230197e-09, + 3.765832562782434412e-09, + 3.758953521010770554e-09, + 3.752071562975663730e-09, + 3.745186702226019699e-09, + 3.738298952307323829e-09, + 3.731408326764987869e-09, + 3.724514839141671536e-09, + 3.717618502980205775e-09, + 3.710719331821197657e-09, + 3.703817339203183819e-09, + 3.696912538664357203e-09, + 3.690004943739950273e-09, + 3.683094567965307163e-09, + 3.676181424873379385e-09, + 3.669265527994696056e-09, + 3.662346890860053468e-09, + 3.655425526996707169e-09, + 3.648501449931141776e-09, + 3.641574673189087927e-09, + 3.634645210291934806e-09, + 3.627713074762293340e-09, + 3.620778280118845352e-09, + 3.613840839879273426e-09, + 3.606900767560265464e-09, + 3.599958076675045964e-09, + 3.593012780736406391e-09, + 3.586064893254059035e-09, + 3.579114427736931188e-09, + 3.572161397690693120e-09, + 3.565205816620653208e-09, + 3.558247698029319824e-09, + 3.551287055416368660e-09, + 3.544323902281460931e-09, + 3.537358252120188953e-09, + 3.530390118427171862e-09, + 3.523419514694954639e-09, + 3.516446454412884384e-09, + 3.509470951070050946e-09, + 3.502493018151420676e-09, + 3.495512669140702613e-09, + 3.488529917520118111e-09, + 3.481544776768037996e-09, + 3.474557260361911204e-09, + 3.467567381775828316e-09, + 3.460575154482134151e-09, + 3.453580591951634140e-09, + 3.446583707651098318e-09, + 3.439584515046390128e-09, + 3.432583027599525382e-09, + 3.425579258771733245e-09, + 3.418573222020999919e-09, + 3.411564930802275853e-09, + 3.404554398569094949e-09, + 3.397541638771083511e-09, + 3.390526664857350436e-09, + 3.383509490272416255e-09, + 3.376490128459036293e-09, + 3.369468592858200259e-09, + 3.362444896906624647e-09, + 3.355419054039724795e-09, + 3.348391077689118041e-09, + 3.341360981284240863e-09, + 3.334328778252751714e-09, + 3.327294482017761620e-09, + 3.320258106001048606e-09, + 3.313219663620203923e-09, + 3.306179168291625614e-09, + 3.299136633428058065e-09, + 3.292092072438812035e-09, + 3.285045498731480642e-09, + 3.277996925709240688e-09, + 3.270946366774095619e-09, + 3.263893835324179742e-09, + 3.256839344753844670e-09, + 3.249782908456385704e-09, + 3.242724539820084190e-09, + 3.235664252231630807e-09, + 3.228602059073450048e-09, + 3.221537973725464601e-09, + 3.214472009565289317e-09, + 3.207404179965744710e-09, + 3.200334498297862103e-09, + 3.193262977928072038e-09, + 3.186189632221251613e-09, + 3.179114474538305807e-09, + 3.172037518236203456e-09, + 3.164958776669803674e-09, + 3.157878263189253128e-09, + 3.150795991143025923e-09, + 3.143711973875423455e-09, + 3.136626224726519810e-09, + 3.129538757035306710e-09, + 3.122449584134151402e-09, + 3.115358719354889666e-09, + 3.108266176024692815e-09, + 3.101171967466434955e-09, + 3.094076107001454947e-09, + 3.086978607945541269e-09, + 3.079879483611882157e-09, + 3.072778747310826550e-09, + 3.065676412347450110e-09, + 3.058572492024628199e-09, + 3.051466999640476995e-09, + 3.044359948490543866e-09, + 3.037251351865298948e-09, + 3.030141223053150626e-09, + 3.023029575337999566e-09, + 3.015916421999059215e-09, + 3.008801776314074774e-09, + 3.001685651553843954e-09, + 2.994568060988196666e-09, + 2.987449017881966648e-09, + 2.980328535495208604e-09, + 2.973206627086227749e-09, + 2.966083305907267719e-09, + 2.958958585207543844e-09, + 2.951832478233463587e-09, + 2.944704998224575430e-09, + 2.937576158419584544e-09, + 2.930445972050871478e-09, + 2.923314452347584985e-09, + 2.916181612535751213e-09, + 2.909047465835522086e-09, + 2.901912025464361190e-09, + 2.894775304634189588e-09, + 2.887637316554457143e-09, + 2.880498074429598104e-09, + 2.873357591459232946e-09, + 2.866215880839959626e-09, + 2.859072955762635878e-09, + 2.851928829415883571e-09, + 2.844783514982006978e-09, + 2.837637025639877162e-09, + 2.830489374565147038e-09, + 2.823340574926241618e-09, + 2.816190639890427033e-09, + 2.809039582618181157e-09, + 2.801887416266446080e-09, + 2.794734153988600812e-09, + 2.787579808931798588e-09, + 2.780424394240169296e-09, + 2.773267923052148930e-09, + 2.766110408502211286e-09, + 2.758951863721208764e-09, + 2.751792301833573602e-09, + 2.744631735960679537e-09, + 2.737470179217761800e-09, + 2.730307644717166278e-09, + 2.723144145565731078e-09, + 2.715979694864675681e-09, + 2.708814305712932002e-09, + 2.701647991201415333e-09, + 2.694480764419517714e-09, + 2.687312638449532321e-09, + 2.680143626369798820e-09, + 2.672973741254763751e-09, + 2.665802996172241321e-09, + 2.658631404186627413e-09, + 2.651458978356367998e-09, + 2.644285731735480325e-09, + 2.637111677373971468e-09, + 2.629936828315144618e-09, + 2.622761197598804819e-09, + 2.615584798258286495e-09, + 2.608407643323657531e-09, + 2.601229745819145094e-09, + 2.594051118763236954e-09, + 2.586871775170593106e-09, + 2.579691728049263958e-09, + 2.572510990403944457e-09, + 2.565329575233334561e-09, + 2.558147495530045765e-09, + 2.550964764283642644e-09, + 2.543781394476351027e-09, + 2.536597399086088370e-09, + 2.529412791086670558e-09, + 2.522227583443754163e-09, + 2.515041789120886036e-09, + 2.507855421073995105e-09, + 2.500668492255101459e-09, + 2.493481015609456779e-09, + 2.486293004078683907e-09, + 2.479104470598090573e-09, + 2.471915428097013917e-09, + 2.464725889500531100e-09, + 2.457535867726774274e-09, + 2.450345375690151625e-09, + 2.443154426298739271e-09, + 2.435963032454166281e-09, + 2.428771207054568960e-09, + 2.421578962990490089e-09, + 2.414386313148040006e-09, + 2.407193270407742269e-09, + 2.399999847643301987e-09, + 2.392806057724824378e-09, + 2.385611913514742147e-09, + 2.378417427870633690e-09, + 2.371222613645255352e-09, + 2.364027483683849372e-09, + 2.356832050827434402e-09, + 2.349636327910009227e-09, + 2.342440327761001632e-09, + 2.335244063202555250e-09, + 2.328047547052741089e-09, + 2.320850792122862993e-09, + 2.313653811217482458e-09, + 2.306456617137340643e-09, + 2.299259222675172844e-09, + 2.292061640618960133e-09, + 2.284863883750763037e-09, + 2.277665964845443546e-09, + 2.270467896673927510e-09, + 2.263269691999074111e-09, + 2.256071363578567280e-09, + 2.248872924164937196e-09, + 2.241674386502835971e-09, + 2.234475763332293018e-09, + 2.227277067386077999e-09, + 2.220078311391358910e-09, + 2.212879508070032123e-09, + 2.205680670136053906e-09, + 2.198481810298636644e-09, + 2.191282941259306973e-09, + 2.184084075715080502e-09, + 2.176885226355907475e-09, + 2.169686405864770794e-09, + 2.162487626919576539e-09, + 2.155288902190403182e-09, + 2.148090244343076245e-09, + 2.140891666034960018e-09, + 2.133693179917941203e-09, + 2.126494798638350743e-09, + 2.119296534834392117e-09, + 2.112098401139226312e-09, + 2.104900410178395982e-09, + 2.097702574571536054e-09, + 2.090504906932678964e-09, + 2.083307419867533229e-09, + 2.076110125976742951e-09, + 2.068913037852937681e-09, + 2.061716168083906721e-09, + 2.054519529249935192e-09, + 2.047323133924113810e-09, + 2.040126994674049913e-09, + 2.032931124059216756e-09, + 2.025735534634148913e-09, + 2.018540238945860647e-09, + 2.011345249533667648e-09, + 2.004150578932557386e-09, + 1.996956239667461709e-09, + 1.989762244259521083e-09, + 1.982568605221858939e-09, + 1.975375335059903033e-09, + 1.968182446274281820e-09, + 1.960989951356746451e-09, + 1.953797862793582070e-09, + 1.946606193062717641e-09, + 1.939414954636927551e-09, + 1.932224159981167264e-09, + 1.925033821552814856e-09, + 1.917843951803460204e-09, + 1.910654563176236095e-09, + 1.903465668109010721e-09, + 1.896277279031712169e-09, + 1.889089408366325937e-09, + 1.881902068530164782e-09, + 1.874715271930107400e-09, + 1.867529030968963178e-09, + 1.860343358041132379e-09, + 1.853158265533072269e-09, + 1.845973765826045417e-09, + 1.838789871292091950e-09, + 1.831606594296916204e-09, + 1.824423947200174583e-09, + 1.817241942351300783e-09, + 1.810060592095705090e-09, + 1.802879908769189675e-09, + 1.795699904701669664e-09, + 1.788520592214265807e-09, + 1.781341983622535649e-09, + 1.774164091233781887e-09, + 1.766986927347005634e-09, + 1.759810504256201076e-09, + 1.752634834244673368e-09, + 1.745459929591247446e-09, + 1.738285802566085183e-09, + 1.731112465430975938e-09, + 1.723939930442324744e-09, + 1.716768209846873303e-09, + 1.709597315884770274e-09, + 1.702427260789767935e-09, + 1.695258056785088763e-09, + 1.688089716089624115e-09, + 1.680922250912249848e-09, + 1.673755673455130279e-09, + 1.666589995913656565e-09, + 1.659425230473768912e-09, + 1.652261389315184438e-09, + 1.645098484608779148e-09, + 1.637936528518235264e-09, + 1.630775533200416973e-09, + 1.623615510802639073e-09, + 1.616456473465895050e-09, + 1.609298433321915827e-09, + 1.602141402496699140e-09, + 1.594985393106280365e-09, + 1.587830417259800331e-09, + 1.580676487059665375e-09, + 1.573523614597413921e-09, + 1.566371811959963555e-09, + 1.559221091223912579e-09, + 1.552071464458797035e-09, + 1.544922943727079946e-09, + 1.537775541081496695e-09, + 1.530629268568197894e-09, + 1.523484138224163820e-09, + 1.516340162078918547e-09, + 1.509197352154825868e-09, + 1.502055720464380066e-09, + 1.494915279013457157e-09, + 1.487776039798372807e-09, + 1.480638014809059537e-09, + 1.473501216026418916e-09, + 1.466365655422598876e-09, + 1.459231344962727066e-09, + 1.452098296602261187e-09, + 1.444966522290529117e-09, + 1.437836033966489821e-09, + 1.430706843561804666e-09, + 1.423578963000707148e-09, + 1.416452404197350117e-09, + 1.409327179059095477e-09, + 1.402203299483735481e-09, + 1.395080777361353057e-09, + 1.387959624574542254e-09, + 1.380839852995739965e-09, + 1.373721474490461440e-09, + 1.366604500914297417e-09, + 1.359488944116221396e-09, + 1.352374815935841538e-09, + 1.345262128203689352e-09, + 1.338150892743027495e-09, + 1.331041121367078309e-09, + 1.323932825882384649e-09, + 1.316826018086014433e-09, + 1.309720709765571804e-09, + 1.302616912702206621e-09, + 1.295514638666350344e-09, + 1.288413899421034475e-09, + 1.281314706720653097e-09, + 1.274217072309779590e-09, + 1.267121007926388295e-09, + 1.260026525297684487e-09, + 1.252933636143670353e-09, + 1.245842352174126817e-09, + 1.238752685091925363e-09, + 1.231664646590235058e-09, + 1.224578248352921050e-09, + 1.217493502056218781e-09, + 1.210410419366059087e-09, + 1.203329011941371551e-09, + 1.196249291431333294e-09, + 1.189171269475364844e-09, + 1.182094957706434717e-09, + 1.175020367745283634e-09, + 1.167947511206794637e-09, + 1.160876399695694022e-09, + 1.153807044806863810e-09, + 1.146739458128343997e-09, + 1.139673651237094287e-09, + 1.132609635701982285e-09, + 1.125547423083753509e-09, + 1.118487024932363524e-09, + 1.111428452790187615e-09, + 1.104371718189351469e-09, + 1.097316832653513342e-09, + 1.090263807698138678e-09, + 1.083212654827763795e-09, + 1.076163385539320537e-09, + 1.069116011319065151e-09, + 1.062070543646544833e-09, + 1.055026993988783880e-09, + 1.047985373806634793e-09, + 1.040945694550527386e-09, + 1.033907967660770093e-09, + 1.026872204570527817e-09, + 1.019838416701587383e-09, + 1.012806615467401979e-09, + 1.005776812273300020e-09, + 9.987490185122869934e-10, + 9.917232455713731928e-10, + 9.846995048257995771e-10, + 9.776778076423589030e-10, + 9.706581653793676011e-10, + 9.636405893839637896e-10, + 9.566250909953510637e-10, + 9.496116815418136139e-10, + 9.426003723440108868e-10, + 9.355911747122311385e-10, + 9.285840999466832224e-10, + 9.215791593393008772e-10, + 9.145763641709848031e-10, + 9.075757257152555948e-10, + 9.005772552339611913e-10, + 8.935809639803040467e-10, + 8.865868631991162710e-10, + 8.795949641226326337e-10, + 8.726052779768049508e-10, + 8.656178159755406681e-10, + 8.586325893240377433e-10, + 8.516496092187300522e-10, + 8.446688868445742362e-10, + 8.376904333783566668e-10, + 8.307142599859611651e-10, + 8.237403778241563318e-10, + 8.167687980408783401e-10, + 8.097995317725048580e-10, + 8.028325901471862085e-10, + 7.958679842817579179e-10, + 7.889057252850745635e-10, + 7.819458242552791474e-10, + 7.749882922797905853e-10, + 7.680331404385906119e-10, + 7.610803797984800458e-10, + 7.541300214194288478e-10, + 7.471820763502828473e-10, + 7.402365556290930633e-10, + 7.332934702861009990e-10, + 7.263528313395023402e-10, + 7.194146497990433295e-10, + 7.124789366632966536e-10, + 7.055457029214806206e-10, + 6.986149595536933553e-10, + 6.916867175282187754e-10, + 6.847609878048218724e-10, + 6.778377813317216438e-10, + 6.709171090488821349e-10, + 6.639989818852852242e-10, + 6.570834107592209639e-10, + 6.501704065800995186e-10, + 6.432599802456853841e-10, + 6.363521426454155189e-10, + 6.294469046576770923e-10, + 6.225442771497944571e-10, + 6.156442709810114452e-10, + 6.087468969982643717e-10, + 6.018521660392011405e-10, + 5.949600889324302259e-10, + 5.880706764933193187e-10, + 5.811839395302805547e-10, + 5.742998888390556272e-10, + 5.674185352066057074e-10, + 5.605398894080869617e-10, + 5.536639622101323910e-10, + 5.467907643681644240e-10, + 5.399203066266453463e-10, + 5.330525997208809679e-10, + 5.261876543742994054e-10, + 5.193254813017419169e-10, + 5.124660912067474748e-10, + 5.056094947815293980e-10, + 4.987557027099783275e-10, + 4.919047256634257180e-10, + 4.850565743039458388e-10, + 4.782112592831334082e-10, + 4.713687912408889820e-10, + 4.645291808087073066e-10, + 4.576924386054612828e-10, + 4.508585752403985310e-10, + 4.440276013130986363e-10, + 4.371995274107862075e-10, + 4.303743641116065119e-10, + 4.235521219819082910e-10, + 4.167328115780364154e-10, + 4.099164434466080604e-10, + 4.031030281218023961e-10, + 3.962925761286581956e-10, + 3.894850979800426826e-10, + 3.826806041802387555e-10, + 3.758791052207412556e-10, + 3.690806115835345670e-10, + 3.622851337398825025e-10, + 3.554926821491118833e-10, + 3.487032672619003235e-10, + 3.419168995160593664e-10, + 3.351335893395251562e-10, + 3.283533471503321750e-10, + 3.215761833539210799e-10, + 3.148021083464024995e-10, + 3.080311325118572199e-10, + 3.012632662241132781e-10, + 2.944985198470415250e-10, + 2.877369037318364232e-10, + 2.809784282202949402e-10, + 2.742231036418211717e-10, + 2.674709403166907582e-10, + 2.607219485533516399e-10, + 2.539761386487103643e-10, + 2.472335208899126962e-10, + 2.404941055516335150e-10, + 2.337579028993521401e-10, + 2.270249231866555154e-10, + 2.202951766552220789e-10, + 2.135686735377885239e-10, + 2.068454240539646784e-10, + 2.001254384137989896e-10, + 1.934087268150771335e-10, + 1.866952994451018222e-10, + 1.799851664809713322e-10, + 1.732783380868911150e-10, + 1.665748244174349827e-10, + 1.598746356145527567e-10, + 1.531777818108281434e-10, + 1.464842731267975329e-10, + 1.397941196712234846e-10, + 1.331073315428686164e-10, + 1.264239188278115846e-10, + 1.197438916026971023e-10, + 1.130672599320507431e-10, + 1.063940338682682137e-10, + 9.972422345486511378e-11, + 9.305783872082641347e-11, + 8.639488968682175941e-11, + 7.973538636104253311e-11, + 7.307933873948514741e-11, + 6.642675680889989364e-11, + 5.977765054263239454e-11, + 5.313202990416178525e-11, + 4.648990484413331927e-11, + 3.985128530359272857e-11, + 3.321618121131570984e-11, + 2.658460248409057463e-11, + 1.995655902847804384e-11, + 1.333206073813987435e-11, + 6.711117497074825967e-12, + 9.373917694799058017e-14, +-6.520064362921246656e-12, +-1.313028327232577874e-11, +-1.973690771578936858e-11, +-2.633992786638424266e-11, +-3.293933390987357493e-11, +-3.953511604442726140e-11, +-4.612726447768954388e-11, +-5.271576943091486132e-11, +-5.930062113603429256e-11, +-6.588180983537559447e-11, +-7.245932578579525990e-11, +-7.903315925251113013e-11, +-8.560330051470532861e-11, +-9.216973986229861841e-11, +-9.873246759596849687e-11, +-1.052914740298014080e-10, +-1.118467494880740406e-10, +-1.183982843082047733e-10, +-1.249460688369458390e-10, +-1.314900934359766814e-10, +-1.380303484757474051e-10, +-1.445668243396070914e-10, +-1.510995114235130963e-10, +-1.576284001331173584e-10, +-1.641534808878795029e-10, +-1.706747441181496858e-10, +-1.771921802648862146e-10, +-1.837057797837701783e-10, +-1.902155331390640180e-10, +-1.967214308091921276e-10, +-2.032234632835286008e-10, +-2.097216210624077263e-10, +-2.162158946597723095e-10, +-2.227062745999684773e-10, +-2.291927514203847716e-10, +-2.356753156697125891e-10, +-2.421539579076716598e-10, +-2.486286687076393449e-10, +-2.550994386534576672e-10, +-2.615662583423595666e-10, +-2.680291183814838842e-10, +-2.744880093919689760e-10, +-2.809429220060420711e-10, +-2.873938468667568486e-10, +-2.938407746320597544e-10, +-3.002836959687037090e-10, +-3.067226015577818431e-10, +-3.131574820915432655e-10, +-3.195883282734013865e-10, +-3.260151308205590791e-10, +-3.324378804608315301e-10, +-3.388565679352688159e-10, +-3.452711839964159804e-10, +-3.516817194080469920e-10, +-3.580881649477787389e-10, +-3.644905114038973431e-10, +-3.708887495782626502e-10, +-3.772828702831333035e-10, +-3.836728643437961445e-10, +-3.900587225982698751e-10, +-3.964404358955888133e-10, +-4.028179950984130612e-10, +-4.091913910798708469e-10, +-4.155606147261533380e-10, +-4.219256569365382680e-10, +-4.282865086205055578e-10, +-4.346431607018030114e-10, +-4.409956041149753112e-10, +-4.473438298079798733e-10, +-4.536878287404718951e-10, +-4.600275918835175824e-10, +-4.663631102222102111e-10, +-4.726943747524934957e-10, +-4.790213764840843280e-10, +-4.853441064372759313e-10, +-4.916625556455693285e-10, +-4.979767151553843458e-10, +-5.042865760243384569e-10, +-5.105921293238672909e-10, +-5.168933661360391600e-10, +-5.231902775561933519e-10, +-5.294828546929147974e-10, +-5.357710886651854674e-10, +-5.420549706064216342e-10, +-5.483344916613143523e-10, +-5.546096429869987811e-10, +-5.608804157542013816e-10, +-5.671468011441019026e-10, +-5.734087903523658869e-10, +-5.796663745862700113e-10, +-5.859195450647210088e-10, +-5.921682930208501203e-10, +-5.984126096988622604e-10, +-6.046524863566334680e-10, +-6.108879142634144456e-10, +-6.171188847024499310e-10, +-6.233453889677980837e-10, +-6.295674183669469609e-10, +-6.357849642208078998e-10, +-6.419980178608706372e-10, +-6.482065706332278527e-10, +-6.544106138954127544e-10, +-6.606101390175826706e-10, +-6.668051373836545621e-10, +-6.729956003881838630e-10, +-6.791815194403424957e-10, +-6.853628859611208287e-10, +-6.915396913832956240e-10, +-6.977119271540382405e-10, +-7.038795847317534598e-10, +-7.100426555886999950e-10, +-7.162011312092474136e-10, +-7.223550030896252954e-10, +-7.285042627404860448e-10, +-7.346489016837862132e-10, +-7.407889114556412023e-10, +-7.469242836026349016e-10, +-7.530550096872460964e-10, +-7.591810812818615412e-10, +-7.653024899727888202e-10, +-7.714192273599572175e-10, +-7.775312850541211230e-10, +-7.836386546808051673e-10, +-7.897413278775051453e-10, +-7.958392962936776769e-10, +-8.019325515933319707e-10, +-8.080210854518759907e-10, +-8.141048895587070828e-10, +-8.201839556155094304e-10, +-8.262582753359989726e-10, +-8.323278404484454776e-10, +-8.383926426925979128e-10, +-8.444526738225202261e-10, +-8.505079256034779423e-10, +-8.565583898144904280e-10, +-8.626040582480666083e-10, +-8.686449227085157597e-10, +-8.746809750144884028e-10, +-8.807122069959135624e-10, +-8.867386104964846521e-10, +-8.927601773737517049e-10, +-8.987768994959488255e-10, +-9.047887687474011594e-10, +-9.107957770223269326e-10, +-9.167979162302039918e-10, +-9.227951782926535058e-10, +-9.287875551434968331e-10, +-9.347750387312527812e-10, +-9.407576210160775545e-10, +-9.467352939725612458e-10, +-9.527080495866701626e-10, +-9.586758798582771729e-10, +-9.646387768008674358e-10, +-9.705967324398916915e-10, +-9.765497388152947455e-10, +-9.824977879784282243e-10, +-9.884408719945802999e-10, +-9.943789829429889249e-10, +-1.000312112913785194e-09, +-1.006240254013281301e-09, +-1.012163398358148016e-09, +-1.018081538079305331e-09, +-1.023994665321674509e-09, +-1.029902772241381180e-09, +-1.035805851009652400e-09, +-1.041703893809520951e-09, +-1.047596892838295098e-09, +-1.053484840305929873e-09, +-1.059367728434752652e-09, +-1.065245549461958556e-09, +-1.071118295636579870e-09, +-1.076985959222225453e-09, +-1.082848532494115712e-09, +-1.088706007741524234e-09, +-1.094558377267785847e-09, +-1.100405633387300163e-09, +-1.106247768430765765e-09, +-1.112084774739387672e-09, +-1.117916644668747508e-09, +-1.123743370588543977e-09, +-1.129564944879842276e-09, +-1.135381359938935378e-09, +-1.141192608174593448e-09, +-1.146998682007804522e-09, +-1.152799573875657708e-09, +-1.158595276225506597e-09, +-1.164385781520274800e-09, +-1.170171082235375944e-09, +-1.175951170858793489e-09, +-1.181726039893490933e-09, +-1.187495681854424650e-09, +-1.193260089271060176e-09, +-1.199019254685113591e-09, +-1.204773170653071734e-09, +-1.210521829743178367e-09, +-1.216265224537911791e-09, +-1.222003347633960443e-09, +-1.227736191639542623e-09, +-1.233463749178199116e-09, +-1.239186012886098865e-09, +-1.244902975411763922e-09, +-1.250614629419867252e-09, +-1.256320967585558474e-09, +-1.262021982599622161e-09, +-1.267717667165488825e-09, +-1.273408013999257041e-09, +-1.279093015832151001e-09, +-1.284772665407505237e-09, +-1.290446955483253603e-09, +-1.296115878830262510e-09, +-1.301779428232135916e-09, +-1.307437596487592643e-09, +-1.313090376407513963e-09, +-1.318737760817705349e-09, +-1.324379742555847483e-09, +-1.330016314473997449e-09, +-1.335647469438282878e-09, +-1.341273200327326171e-09, +-1.346893500034662763e-09, +-1.352508361465494850e-09, +-1.358117777540491044e-09, +-1.363721741193129470e-09, +-1.369320245369631797e-09, +-1.374913283031441265e-09, +-1.380500847152257242e-09, +-1.386082930720460932e-09, +-1.391659526737531944e-09, +-1.397230628217720315e-09, +-1.402796228190582852e-09, +-1.408356319697921116e-09, +-1.413910895796512774e-09, +-1.419459949555204679e-09, +-1.425003474057280053e-09, +-1.430541462400211780e-09, +-1.436073907694102345e-09, +-1.441600803063988981e-09, +-1.447122141647085637e-09, +-1.452637916595022574e-09, +-1.458148121073917500e-09, +-1.463652748261753825e-09, +-1.469151791352043824e-09, +-1.474645243550699831e-09, +-1.480133098078392530e-09, +-1.485615348169020671e-09, +-1.491091987069369649e-09, +-1.496563008041561617e-09, +-1.502028404360125194e-09, +-1.507488169314660646e-09, +-1.512942296206925518e-09, +-1.518390778353210917e-09, +-1.523833609084145887e-09, +-1.529270781743022366e-09, +-1.534702289688216758e-09, +-1.540128126290331401e-09, +-1.545548284934518123e-09, +-1.550962759020505120e-09, +-1.556371541959998369e-09, +-1.561774627180298893e-09, +-1.567172008121513088e-09, +-1.572563678237523426e-09, +-1.577949630997065231e-09, +-1.583329859880885111e-09, +-1.588704358385380345e-09, +-1.594073120019988922e-09, +-1.599436138307185816e-09, +-1.604793406784907249e-09, +-1.610144919003574286e-09, +-1.615490668528518542e-09, +-1.620830648937901827e-09, +-1.626164853825032657e-09, +-1.631493276795528207e-09, +-1.636815911469667220e-09, +-1.642132751482346993e-09, +-1.647443790480345207e-09, +-1.652749022127113229e-09, +-1.658048440097432319e-09, +-1.663342038081000490e-09, +-1.668629809782203177e-09, +-1.673911748917521467e-09, +-1.679187849219131582e-09, +-1.684458104432418988e-09, +-1.689722508315862182e-09, +-1.694981054643407730e-09, +-1.700233737201675020e-09, +-1.705480549792217563e-09, +-1.710721486230031592e-09, +-1.715956540343282260e-09, +-1.721185705975658007e-09, +-1.726408976983464256e-09, +-1.731626347238265640e-09, +-1.736837810623563835e-09, +-1.742043361039612371e-09, +-1.747242992398089383e-09, +-1.752436698625683854e-09, +-1.757624473663787282e-09, +-1.762806311466068797e-09, +-1.767982206001912518e-09, +-1.773152151253945927e-09, +-1.778316141217776215e-09, +-1.783474169905545704e-09, +-1.788626231340638516e-09, +-1.793772319562438098e-09, +-1.798912428623632273e-09, +-1.804046552590138582e-09, +-1.809174685543406536e-09, +-1.814296821577663519e-09, +-1.819412954802434588e-09, +-1.824523079339766864e-09, +-1.829627189326489395e-09, +-1.834725278913964378e-09, +-1.839817342266669371e-09, +-1.844903373564316118e-09, +-1.849983366999181651e-09, +-1.855057316778362149e-09, +-1.860125217123774592e-09, +-1.865187062269399356e-09, +-1.870242846465997003e-09, +-1.875292563975734295e-09, +-1.880336209076797795e-09, +-1.885373776060717727e-09, +-1.890405259232359712e-09, +-1.895430652912172622e-09, +-1.900449951433482880e-09, +-1.905463149144630236e-09, +-1.910470240407672402e-09, +-1.915471219597948305e-09, +-1.920466081106397081e-09, +-1.925454819336843275e-09, +-1.930437428708471348e-09, +-1.935413903653088949e-09, +-1.940384238617361548e-09, +-1.945348428062553937e-09, +-1.950306466463151323e-09, +-1.955258348308923142e-09, +-1.960204068102312481e-09, +-1.965143620360647950e-09, +-1.970076999616140384e-09, +-1.975004200413423628e-09, +-1.979925217312959214e-09, +-1.984840044888697510e-09, +-1.989748677727717065e-09, +-1.994651110433697532e-09, +-1.999547337621792384e-09, +-2.004437353923273950e-09, +-2.009321153982373171e-09, +-2.014198732458695380e-09, +-2.019070084024529896e-09, +-2.023935203367141732e-09, +-2.028794085188405150e-09, +-2.033646724203417308e-09, +-2.038493115142646034e-09, +-2.043333252749348609e-09, +-2.048167131781643027e-09, +-2.052994747012561763e-09, +-2.057816093227718708e-09, +-2.062631165228537243e-09, +-2.067439957829688874e-09, +-2.072242465860055656e-09, +-2.077038684163696753e-09, +-2.081828607597191123e-09, +-2.086612231032970640e-09, +-2.091389549357036246e-09, +-2.096160557468836776e-09, +-2.100925250283479178e-09, +-2.105683622729088155e-09, +-2.110435669748974619e-09, +-2.115181386299732350e-09, +-2.119920767353361777e-09, +-2.124653807894632932e-09, +-2.129380502923337448e-09, +-2.134100847454159102e-09, +-2.138814836514357712e-09, +-2.143522465147111360e-09, +-2.148223728408882235e-09, +-2.152918621370365823e-09, +-2.157607139117430583e-09, +-2.162289276748626068e-09, +-2.166965029378320418e-09, +-2.171634392134433888e-09, +-2.176297360158451252e-09, +-2.180953928607532359e-09, +-2.185604092651896171e-09, +-2.190247847476985495e-09, +-2.194885188281997498e-09, +-2.199516110279749289e-09, +-2.204140608698671425e-09, +-2.208758678780323473e-09, +-2.213370315781692747e-09, +-2.217975514972611847e-09, +-2.222574271637943659e-09, +-2.227166581077211192e-09, +-2.231752438603374175e-09, +-2.236331839544772521e-09, +-2.240904779242411932e-09, +-2.245471253053193628e-09, +-2.250031256347613125e-09, +-2.254584784509770169e-09, +-2.259131832939389117e-09, +-2.263672397049421361e-09, +-2.268206472267945770e-09, +-2.272734054036881186e-09, +-2.277255137811760602e-09, +-2.281769719063799944e-09, +-2.286277793277338770e-09, +-2.290779355952179953e-09, +-2.295274402601013014e-09, +-2.299762928751572233e-09, +-2.304244929946291304e-09, +-2.308720401741020790e-09, +-2.313189339707035693e-09, +-2.317651739428563833e-09, +-2.322107596504813687e-09, +-2.326556906549941712e-09, +-2.330999665190677510e-09, +-2.335435868070497368e-09, +-2.339865510844685163e-09, +-2.344288589184677128e-09, +-2.348705098775524475e-09, +-2.353115035315899187e-09, +-2.357518394520155347e-09, +-2.361915172115817411e-09, +-2.366305363845899206e-09, +-2.370688965466332221e-09, +-2.375065972748045975e-09, +-2.379436381476726886e-09, +-2.383800187451492305e-09, +-2.388157386486912558e-09, +-2.392507974410474393e-09, +-2.396851947064765159e-09, +-2.401189300307258970e-09, +-2.405520030008010946e-09, +-2.409844132053844811e-09, +-2.414161602343656163e-09, +-2.418472436791575201e-09, +-2.422776631326702436e-09, +-2.427074181890959265e-09, +-2.431365084442095189e-09, +-2.435649334951529693e-09, +-2.439926929404093755e-09, +-2.444197863801223592e-09, +-2.448462134156181620e-09, +-2.452719736498350767e-09, +-2.456970666870321137e-09, +-2.461214921330163935e-09, +-2.465452495948902773e-09, +-2.469683386812563425e-09, +-2.473907590022129985e-09, +-2.478125101691220488e-09, +-2.482335917950130589e-09, +-2.486540034941287370e-09, +-2.490737448822420342e-09, +-2.494928155766128415e-09, +-2.499112151957867781e-09, +-2.503289433598932245e-09, +-2.507459996904262851e-09, +-2.511623838102327115e-09, +-2.515780953438024082e-09, +-2.519931339168190667e-09, +-2.524074991565823172e-09, +-2.528211906917481595e-09, +-2.532342081523462505e-09, +-2.536465511699656897e-09, +-2.540582193775227877e-09, +-2.544692124094516903e-09, +-2.548795299015701268e-09, +-2.552891714910789553e-09, +-2.556981368167258617e-09, +-2.561064255185883900e-09, +-2.565140372382856181e-09, +-2.569209716187161482e-09, +-2.573272283043634194e-09, +-2.577328069410732782e-09, +-2.581377071760498434e-09, +-2.585419286581327351e-09, +-2.589454710373594964e-09, +-2.593483339653766610e-09, +-2.597505170951921361e-09, +-2.601520200811849636e-09, +-2.605528425792944550e-09, +-2.609529842467806394e-09, +-2.613524447424305218e-09, +-2.617512237264093550e-09, +-2.621493208602567113e-09, +-2.625467358070669317e-09, +-2.629434682312633470e-09, +-2.633395177988028805e-09, +-2.637348841769476228e-09, +-2.641295670344612039e-09, +-2.645235660415683031e-09, +-2.649168808698510443e-09, +-2.653095111924197262e-09, +-2.657014566836722369e-09, +-2.660927170195842702e-09, +-2.664832918774966988e-09, +-2.668731809361185519e-09, +-2.672623838757197075e-09, +-2.676509003778902649e-09, +-2.680387301257337747e-09, +-2.684258728037447741e-09, +-2.688123280977831036e-09, +-2.691980956952648611e-09, +-2.695831752849282272e-09, +-2.699675665570498973e-09, +-2.703512692032105756e-09, +-2.707342829164762517e-09, +-2.711166073913916660e-09, +-2.714982423238411780e-09, +-2.718791874112430710e-09, +-2.722594423523201333e-09, +-2.726390068472907371e-09, +-2.730178805978568858e-09, +-2.733960633070060217e-09, +-2.737735546792992565e-09, +-2.741503544206408780e-09, +-2.745264622383659481e-09, +-2.749018778413152873e-09, +-2.752766009396151129e-09, +-2.756506312449663878e-09, +-2.760239684703901307e-09, +-2.763966123304349150e-09, +-2.767685625409581618e-09, +-2.771398188193013370e-09, +-2.775103808842745658e-09, +-2.778802484560288328e-09, +-2.782494212562524383e-09, +-2.786178990079290470e-09, +-2.789856814355279403e-09, +-2.793527682650105917e-09, +-2.797191592236158073e-09, +-2.800848540401551531e-09, +-2.804498524447761742e-09, +-2.808141541690575211e-09, +-2.811777589460809556e-09, +-2.815406665102137193e-09, +-2.819028765973796012e-09, +-2.822643889448757166e-09, +-2.826252032913555092e-09, +-2.829853193770175130e-09, +-2.833447369433828414e-09, +-2.837034557334802270e-09, +-2.840614754916762016e-09, +-2.844187959638575311e-09, +-2.847754168972188777e-09, +-2.851313380404320830e-09, +-2.854865591436522473e-09, +-2.858410799582937710e-09, +-2.861949002374184670e-09, +-2.865480197353022428e-09, +-2.869004382077254820e-09, +-2.872521554119437619e-09, +-2.876031711065006217e-09, +-2.879534850514913084e-09, +-2.883030970083761652e-09, +-2.886520067399702093e-09, +-2.890002140106362779e-09, +-2.893477185860464698e-09, +-2.896945202333749612e-09, +-2.900406187211722739e-09, +-2.903860138193529093e-09, +-2.907307052993603709e-09, +-2.910746929339600792e-09, +-2.914179764974363655e-09, +-2.917605557653677263e-09, +-2.921024305148130220e-09, +-2.924436005242773967e-09, +-2.927840655736152091e-09, +-2.931238254441814888e-09, +-2.934628799186243555e-09, +-2.938012287811258941e-09, +-2.941388718172455278e-09, +-2.944758088138629014e-09, +-2.948120395594721924e-09, +-2.951475638437653770e-09, +-2.954823814580061159e-09, +-2.958164921948112133e-09, +-2.961498958481501204e-09, +-2.964825922135291074e-09, +-2.968145810877612243e-09, +-2.971458622691699530e-09, +-2.974764355573760841e-09, +-2.978063007534707629e-09, +-2.981354576599892269e-09, +-2.984639060808037683e-09, +-2.987916458212950842e-09, +-2.991186766881370449e-09, +-2.994449984894681679e-09, +-2.997706110348945130e-09, +-3.000955141352805302e-09, +-3.004197076031043746e-09, +-3.007431912520657403e-09, +-3.010659648973452642e-09, +-3.013880283555922424e-09, +-3.017093814447271408e-09, +-3.020300239842111732e-09, +-3.023499557948124162e-09, +-3.026691766987877887e-09, +-3.029876865197529777e-09, +-3.033054850826800813e-09, +-3.036225722140606040e-09, +-3.039389477416887358e-09, +-3.042546114948595446e-09, +-3.045695633041602370e-09, +-3.048838030016386140e-09, +-3.051973304207957913e-09, +-3.055101453963953693e-09, +-3.058222477647931053e-09, +-3.061336373635808543e-09, +-3.064443140318102795e-09, +-3.067542776099934313e-09, +-3.070635279399154327e-09, +-3.073720648648872239e-09, +-3.076798882295693316e-09, +-3.079869978799396092e-09, +-3.082933936635692251e-09, +-3.085990754292204880e-09, +-3.089040430271963717e-09, +-3.092082963091126686e-09, +-3.095118351280667339e-09, +-3.098146593384507504e-09, +-3.101167687960992554e-09, +-3.104181633582907542e-09, +-3.107188428836159500e-09, +-3.110188072321525687e-09, +-3.113180562652720878e-09, +-3.116165898457834596e-09, +-3.119144078379500677e-09, +-3.122115101073037362e-09, +-3.125078965208847769e-09, +-3.128035669470878443e-09, +-3.130985212556169373e-09, +-3.133927593177461677e-09, +-3.136862810059479009e-09, +-3.139790861942246627e-09, +-3.142711747579201278e-09, +-3.145625465737049757e-09, +-3.148532015197596558e-09, +-3.151431394755546471e-09, +-3.154323603220181690e-09, +-3.157208639414354719e-09, +-3.160086502174245599e-09, +-3.162957190350958360e-09, +-3.165820702808571362e-09, +-3.168677038425846662e-09, +-3.171526196094364721e-09, +-3.174368174720536520e-09, +-3.177202973224060871e-09, +-3.180030590538444297e-09, +-3.182851025611679322e-09, +-3.185664277404445768e-09, +-3.188470344892347446e-09, +-3.191269227064444745e-09, +-3.194060922922971315e-09, +-3.196845431485019455e-09, +-3.199622751780669438e-09, +-3.202392882854443698e-09, +-3.205155823764305940e-09, +-3.207911573581519278e-09, +-3.210660131392178591e-09, +-3.213401496295267055e-09, +-3.216135667404355179e-09, +-3.218862643845821122e-09, +-3.221582424760304878e-09, +-3.224295009302513473e-09, +-3.227000396640233729e-09, +-3.229698585955807950e-09, +-3.232389576444254982e-09, +-3.235073367315371669e-09, +-3.237749957792266256e-09, +-3.240419347111199989e-09, +-3.243081534523206318e-09, +-3.245736519292188384e-09, +-3.248384300696347555e-09, +-3.251024878027399680e-09, +-3.253658250590144534e-09, +-3.256284417704073864e-09, +-3.258903378701587980e-09, +-3.261515132929542177e-09, +-3.264119679747491864e-09, +-3.266717018529171156e-09, +-3.269307148662219485e-09, +-3.271890069547428871e-09, +-3.274465780599949532e-09, +-3.277034281247581763e-09, +-3.279595570932326891e-09, +-3.282149649110247078e-09, +-3.284696515249921378e-09, +-3.287236168834622058e-09, +-3.289768609360757837e-09, +-3.292293836338144381e-09, +-3.294811849290949764e-09, +-3.297322647755815944e-09, +-3.299826231284040453e-09, +-3.302322599439752048e-09, +-3.304811751801426519e-09, +-3.307293687960205034e-09, +-3.309768407521242852e-09, +-3.312235910103560023e-09, +-3.314696195339095502e-09, +-3.317149262874121217e-09, +-3.319595112367573230e-09, +-3.322033743492284651e-09, +-3.324465155935132878e-09, +-3.326889349395374891e-09, +-3.329306323587319878e-09, +-3.331716078237331944e-09, +-3.334118613085905090e-09, +-3.336513927887455598e-09, +-3.338902022408826894e-09, +-3.341282896431395970e-09, +-3.343656549749639051e-09, +-3.346022982170969049e-09, +-3.348382193517211262e-09, +-3.350734183622888208e-09, +-3.353078952336548907e-09, +-3.355416499519910267e-09, +-3.357746825047722254e-09, +-3.360069928808925945e-09, +-3.362385810705351545e-09, +-3.364694470652837976e-09, +-3.366995908579483390e-09, +-3.369290124428417052e-09, +-3.371577118154726364e-09, +-3.373856889727457814e-09, +-3.376129439129423829e-09, +-3.378394766355928091e-09, +-3.380652871416592366e-09, +-3.382903754333905212e-09, +-3.385147415143238527e-09, +-3.387383853894715733e-09, +-3.389613070650204565e-09, +-3.391835065486040970e-09, +-3.394049838491592302e-09, +-3.396257389768993447e-09, +-3.398457719434569985e-09, +-3.400650827617263660e-09, +-3.402836714460051811e-09, +-3.405015380118332725e-09, +-3.407186824761208176e-09, +-3.409351048571318402e-09, +-3.411508051744171262e-09, +-3.413657834489035181e-09, +-3.415800397027590839e-09, +-3.417935739595713753e-09, +-3.420063862442089981e-09, +-3.422184765828105704e-09, +-3.424298450029751800e-09, +-3.426404915334810195e-09, +-3.428504162045258888e-09, +-3.430596190475925715e-09, +-3.432681000954448645e-09, +-3.434758593822468987e-09, +-3.436828969434108551e-09, +-3.438892128157202977e-09, +-3.440948070372616409e-09, +-3.442996796473839079e-09, +-3.445038306868360009e-09, +-3.447072601976154098e-09, +-3.449099682231038287e-09, +-3.451119548079134242e-09, +-3.453132199980083481e-09, +-3.455137638407029178e-09, +-3.457135863845287299e-09, +-3.459126876794625066e-09, +-3.461110677766583791e-09, +-3.463087267286353267e-09, +-3.465056645892623287e-09, +-3.467018814136210939e-09, +-3.468973772581872547e-09, +-3.470921521806895804e-09, +-3.472862062402053932e-09, +-3.474795394970921184e-09, +-3.476721520129694592e-09, +-3.478640438508406195e-09, +-3.480552150749475476e-09, +-3.482456657508969985e-09, +-3.484353959455118479e-09, +-3.486244057269680326e-09, +-3.488126951647560445e-09, +-3.490002643296153356e-09, +-3.491871132936448293e-09, +-3.493732421301651946e-09, +-3.495586509138329561e-09, +-3.497433397206328007e-09, +-3.499273086277632615e-09, +-3.501105577137963226e-09, +-3.502930870585639705e-09, +-3.504748967431353234e-09, +-3.506559868500011746e-09, +-3.508363574628013128e-09, +-3.510160086665600615e-09, +-3.511949405475408608e-09, +-3.513731531933480518e-09, +-3.515506466927994497e-09, +-3.517274211360347458e-09, +-3.519034766145055395e-09, +-3.520788132209000655e-09, +-3.522534310492503961e-09, +-3.524273301947909931e-09, +-3.526005107540889067e-09, +-3.527729728250198277e-09, +-3.529447165066533583e-09, +-3.531157418994283743e-09, +-3.532860491050112871e-09, +-3.534556382263442690e-09, +-3.536245093676932295e-09, +-3.537926626345288253e-09, +-3.539600981336678665e-09, +-3.541268159731671074e-09, +-3.542928162623225013e-09, +-3.544580991117772720e-09, +-3.546226646333817479e-09, +-3.547865129403094983e-09, +-3.549496441469741190e-09, +-3.551120583690320859e-09, +-3.552737557234705604e-09, +-3.554347363284898470e-09, +-3.555950003036145251e-09, +-3.557545477695362431e-09, +-3.559133788483509539e-09, +-3.560714936632872275e-09, +-3.562288923388991082e-09, +-3.563855750010286431e-09, +-3.565415417766988037e-09, +-3.566967927942729252e-09, +-3.568513281833407618e-09, +-3.570051480747178669e-09, +-3.571582526005393537e-09, +-3.573106418941550499e-09, +-3.574623160902029107e-09, +-3.576132753245550029e-09, +-3.577635197343050567e-09, +-3.579130494578709116e-09, +-3.580618646348615883e-09, +-3.582099654061984299e-09, +-3.583573519139790715e-09, +-3.585040243015953549e-09, +-3.586499827136995385e-09, +-3.587952272961535496e-09, +-3.589397581961174928e-09, +-3.590835755619350440e-09, +-3.592266795432259706e-09, +-3.593690702908817062e-09, +-3.595107479569623252e-09, +-3.596517126948816656e-09, +-3.597919646591734440e-09, +-3.599315040057043787e-09, +-3.600703308915453146e-09, +-3.602084454749687834e-09, +-3.603458479155610861e-09, +-3.604825383740762136e-09, +-3.606185170125745643e-09, +-3.607537839942759130e-09, +-3.608883394836671511e-09, +-3.610221836464931048e-09, +-3.611553166496856461e-09, +-3.612877386614593557e-09, +-3.614194498511928645e-09, +-3.615504503895402329e-09, +-3.616807404483989393e-09, +-3.618103202008176496e-09, +-3.619391898211853100e-09, +-3.620673494850063615e-09, +-3.621947993690625772e-09, +-3.623215396513758807e-09, +-3.624475705111337347e-09, +-3.625728921288081718e-09, +-3.626975046860396171e-09, +-3.628214083657337103e-09, +-3.629446033519916560e-09, +-3.630670898300976515e-09, +-3.631888679866243107e-09, +-3.633099380092941109e-09, +-3.634303000871120320e-09, +-3.635499544102251005e-09, +-3.636689011700237609e-09, +-3.637871405591444400e-09, +-3.639046727713520041e-09, +-3.640214980017270746e-09, +-3.641376164464650641e-09, +-3.642530283030114206e-09, +-3.643677337700399138e-09, +-3.644817330473666914e-09, +-3.645950263360780781e-09, +-3.647076138384385935e-09, +-3.648194957578720092e-09, +-3.649306722991062713e-09, +-3.650411436679562000e-09, +-3.651509100715247008e-09, +-3.652599717180742213e-09, +-3.653683288170415985e-09, +-3.654759815791150698e-09, +-3.655829302161337290e-09, +-3.656891749411663150e-09, +-3.657947159684365593e-09, +-3.658995535134169877e-09, +-3.660036877927066222e-09, +-3.661071190241254030e-09, +-3.662098474267072409e-09, +-3.663118732206189532e-09, +-3.664131966272704854e-09, +-3.665138178692301671e-09, +-3.666137371702288884e-09, +-3.667129547552587007e-09, +-3.668114708504008453e-09, +-3.669092856829896182e-09, +-3.670063994815165409e-09, +-3.671028124756218407e-09, +-3.671985248961842411e-09, +-3.672935369752089615e-09, +-3.673878489459229257e-09, +-3.674814610427089182e-09, +-3.675743735010914811e-09, +-3.676665865578276969e-09, +-3.677581004508045768e-09, +-3.678489154191217374e-09, +-3.679390317029960269e-09, +-3.680284495438493714e-09, +-3.681171691842816851e-09, +-3.682051908680252509e-09, +-3.682925148400271494e-09, +-3.683791413463367618e-09, +-3.684650706342247189e-09, +-3.685503029521094474e-09, +-3.686348385495292523e-09, +-3.687186776772602732e-09, +-3.688018205871736299e-09, +-3.688842675323410949e-09, +-3.689660187669784314e-09, +-3.690470745464280229e-09, +-3.691274351272440308e-09, +-3.692071007670842824e-09, +-3.692860717248191690e-09, +-3.693643482604047978e-09, +-3.694419306349825432e-09, +-3.695188191108564645e-09, +-3.695950139514507065e-09, +-3.696705154213758803e-09, +-3.697453237863391904e-09, +-3.698194393132277732e-09, +-3.698928622700895474e-09, +-3.699655929260614153e-09, +-3.700376315514764235e-09, +-3.701089784177783567e-09, +-3.701796337975720719e-09, +-3.702495979645978139e-09, +-3.703188711936939927e-09, +-3.703874537609091009e-09, +-3.704553459433649390e-09, +-3.705225480193665482e-09, +-3.705890602683074980e-09, +-3.706548829707336618e-09, +-3.707200164083429277e-09, +-3.707844608639234074e-09, +-3.708482166214489350e-09, +-3.709112839659581327e-09, +-3.709736631836484200e-09, +-3.710353545618627376e-09, +-3.710963583890189887e-09, +-3.711566749547086389e-09, +-3.712163045496189201e-09, +-3.712752474655511936e-09, +-3.713335039954737660e-09, +-3.713910744334050081e-09, +-3.714479590745421059e-09, +-3.715041582151730071e-09, +-3.715596721526832039e-09, +-3.716145011856135532e-09, +-3.716686456135813219e-09, +-3.717221057373545919e-09, +-3.717748818587743812e-09, +-3.718269742808288832e-09, +-3.718783833075758358e-09, +-3.719291092441981492e-09, +-3.719791523970118886e-09, +-3.720285130733722232e-09, +-3.720771915818348510e-09, +-3.721251882319702551e-09, +-3.721725033344879049e-09, +-3.722191372012152872e-09, +-3.722650901450348335e-09, +-3.723103624799723044e-09, +-3.723549545211340892e-09, +-3.723988665846936817e-09, +-3.724420989879784510e-09, +-3.724846520493578901e-09, +-3.725265260883306759e-09, +-3.725677214254687937e-09, +-3.726082383824185708e-09, +-3.726480772819524171e-09, +-3.726872384478967358e-09, +-3.727257222052071145e-09, +-3.727635288798627767e-09, +-3.728006587990008333e-09, +-3.728371122907796325e-09, +-3.728728896844622222e-09, +-3.729079913104162672e-09, +-3.729424175000391068e-09, +-3.729761685858527977e-09, +-3.730092449014454671e-09, +-3.730416467814471588e-09, +-3.730733745616279370e-09, +-3.731044285787645445e-09, +-3.731348091707539751e-09, +-3.731645166765473813e-09, +-3.731935514361470143e-09, +-3.732219137906647051e-09, +-3.732496040822485766e-09, +-3.732766226541357353e-09, +-3.733029698506047903e-09, +-3.733286460170038129e-09, +-3.733536514997672933e-09, +-3.733779866463586516e-09, +-3.734016518053429471e-09, +-3.734246473262991972e-09, +-3.734469735598832428e-09, +-3.734686308578303129e-09, +-3.734896195728790894e-09, +-3.735099400588925579e-09, +-3.735295926707173873e-09, +-3.735485777642999830e-09, +-3.735668956966281710e-09, +-3.735845468257133305e-09, +-3.736015315106507780e-09, +-3.736178501115575638e-09, +-3.736335029896160638e-09, +-3.736484905070438707e-09, +-3.736628130270848600e-09, +-3.736764709140615509e-09, +-3.736894645333092624e-09, +-3.737017942512226837e-09, +-3.737134604352120337e-09, +-3.737244634537374716e-09, +-3.737348036763097588e-09, +-3.737444814734348376e-09, +-3.737534972167034150e-09, +-3.737618512787018753e-09, +-3.737695440330517365e-09, +-3.737765758544296684e-09, +-3.737829471184986708e-09, +-3.737886582019911227e-09, +-3.737937094826450066e-09, +-3.737981013392001031e-09, +-3.738018341514896434e-09, +-3.738049083002876934e-09, +-3.738073241674466321e-09, +-3.738090821358081462e-09, +-3.738101825892561700e-09, +-3.738106259126656005e-09, +-3.738104124919340602e-09, +-3.738095427140014199e-09, +-3.738080169667836228e-09, +-3.738058356392425826e-09, +-3.738029991213169475e-09, +-3.737995078039723106e-09, +-3.737953620791997206e-09, +-3.737905623399605920e-09, +-3.737851089802504805e-09, +-3.737790023950717031e-09, +-3.737722429803940475e-09, +-3.737648311332455133e-09, +-3.737567672515981616e-09, +-3.737480517344663837e-09, +-3.737386849818437044e-09, +-3.737286673947050159e-09, +-3.737179993750636527e-09, +-3.737066813258890047e-09, +-3.736947136511645026e-09, +-3.736820967558512217e-09, +-3.736688310459192325e-09, +-3.736549169283050003e-09, +-3.736403548109425704e-09, +-3.736251451027634024e-09, +-3.736092882136709759e-09, +-3.735927845545594846e-09, +-3.735756345373038278e-09, +-3.735578385747567146e-09, +-3.735393970807646293e-09, +-3.735203104701287878e-09, +-3.735005791586486476e-09, +-3.734802035631042062e-09, +-3.734591841012210112e-09, +-3.734375211917301309e-09, +-3.734152152543156285e-09, +-3.733922667096475663e-09, +-3.733686759793552882e-09, +-3.733444434860243586e-09, +-3.733195696532406518e-09, +-3.732940549055269893e-09, +-3.732678996683902066e-09, +-3.732411043682796290e-09, +-3.732136694326199930e-09, +-3.731855952898022650e-09, +-3.731568823691591563e-09, +-3.731275311010002786e-09, +-3.730975419165741763e-09, +-3.730669152481001729e-09, +-3.730356515287490153e-09, +-3.730037511926221110e-09, +-3.729712146748054606e-09, +-3.729380424113119208e-09, +-3.729042348391114789e-09, +-3.728697923961313355e-09, +-3.728347155212167791e-09, +-3.727990046541857796e-09, +-3.727626602357839077e-09, +-3.727256827077140299e-09, +-3.726880725125971832e-09, +-3.726498300940079786e-09, +-3.726109558964575606e-09, +-3.725714503653950143e-09, +-3.725313139472110041e-09, +-3.724905470892121731e-09, +-3.724491502396458754e-09, +-3.724071238477044776e-09, +-3.723644683634836275e-09, +-3.723211842380282043e-09, +-3.722772719233087432e-09, +-3.722327318722200301e-09, +-3.721875645385767581e-09, +-3.721417703771124114e-09, +-3.720953498434961808e-09, +-3.720483033943046743e-09, +-3.720006314870466083e-09, +-3.719523345801414665e-09, +-3.719034131329192930e-09, +-3.718538676056390555e-09, +-3.718036984594583298e-09, +-3.717529061564627880e-09, +-3.717014911596349315e-09, +-3.716494539328729093e-09, +-3.715967949409850586e-09, +-3.715435146496822534e-09, +-3.714896135255930004e-09, +-3.714350920362303520e-09, +-3.713799506500222636e-09, +-3.713241898363043561e-09, +-3.712678100652922049e-09, +-3.712108118081154201e-09, +-3.711531955368089196e-09, +-3.710949617242807103e-09, +-3.710361108443507661e-09, +-3.709766433717242678e-09, +-3.709165597820035565e-09, +-3.708558605516743608e-09, +-3.707945461581250703e-09, +-3.707326170796115800e-09, +-3.706700737952940175e-09, +-3.706069167852134165e-09, +-3.705431465302828243e-09, +-3.704787635123202653e-09, +-3.704137682139995650e-09, +-3.703481611188882346e-09, +-3.702819427114287772e-09, +-3.702151134769407968e-09, +-3.701476739016235211e-09, +-3.700796244725453794e-09, +-3.700109656776376744e-09, +-3.699416980057248570e-09, +-3.698718219464813063e-09, +-3.698013379904594120e-09, +-3.697302466290826680e-09, +-3.696585483546247030e-09, +-3.695862436602424917e-09, +-3.695133330399359475e-09, +-3.694398169885862618e-09, +-3.693656960019196323e-09, +-3.692909705765240138e-09, +-3.692156412098455606e-09, +-3.691397084001948722e-09, +-3.690631726467298708e-09, +-3.689860344494522854e-09, +-3.689082943092289929e-09, +-3.688299527277739450e-09, +-3.687510102076422118e-09, +-3.686714672522445402e-09, +-3.685913243658362288e-09, +-3.685105820535184509e-09, +-3.684292408212329195e-09, +-3.683473011757566758e-09, +-3.682647636247180542e-09, +-3.681816286765793108e-09, +-3.680978968406432003e-09, +-3.680135686270397407e-09, +-3.679286445467444937e-09, +-3.678431251115635521e-09, +-3.677570108341304372e-09, +-3.676703022279131302e-09, +-3.675829998072032360e-09, +-3.674951040871263231e-09, +-3.674066155836302600e-09, +-3.673175348134900961e-09, +-3.672278622943051248e-09, +-3.671375985444911081e-09, +-3.670467440832906991e-09, +-3.669552994307602071e-09, +-3.668632651077729478e-09, +-3.667706416360217659e-09, +-3.666774295380202349e-09, +-3.665836293370844175e-09, +-3.664892415573460591e-09, +-3.663942667237477077e-09, +-3.662987053620435408e-09, +-3.662025579987888190e-09, +-3.661058251613514252e-09, +-3.660085073778970579e-09, +-3.659106051774077188e-09, +-3.658121190896535060e-09, +-3.657130496452089920e-09, +-3.656133973754526863e-09, +-3.655131628125548342e-09, +-3.654123464894817596e-09, +-3.653109489399937970e-09, +-3.652089706986555490e-09, +-3.651064123008098706e-09, +-3.650032742825972673e-09, +-3.648995571809431976e-09, +-3.647952615335624571e-09, +-3.646903878789538019e-09, +-3.645849367564054492e-09, +-3.644789087059807258e-09, +-3.643723042685366383e-09, +-3.642651239856983131e-09, +-3.641573683998768639e-09, +-3.640490380542585551e-09, +-3.639401334928031478e-09, +-3.638306552602473325e-09, +-3.637206039020979875e-09, +-3.636099799646424361e-09, +-3.634987839949297934e-09, +-3.633870165407788664e-09, +-3.632746781507747204e-09, +-3.631617693742694244e-09, +-3.630482907613818848e-09, +-3.629342428629867205e-09, +-3.628196262307314263e-09, +-3.627044414170117650e-09, +-3.625886889749886824e-09, +-3.624723694585763551e-09, +-3.623554834224474432e-09, +-3.622380314220278372e-09, +-3.621200140134924810e-09, +-3.620014317537665301e-09, +-3.618822852005382968e-09, +-3.617625749122309606e-09, +-3.616423014480135697e-09, +-3.615214653678096854e-09, +-3.614000672322794315e-09, +-3.612781076028247477e-09, +-3.611555870415905474e-09, +-3.610325061114699286e-09, +-3.609088653760777459e-09, +-3.607846653997746398e-09, +-3.606599067476551671e-09, +-3.605345899855442020e-09, +-3.604087156800051257e-09, +-3.602822843983258057e-09, +-3.601552967085199189e-09, +-3.600277531793408072e-09, +-3.598996543802587299e-09, +-3.597710008814707486e-09, +-3.596417932538969220e-09, +-3.595120320691807199e-09, +-3.593817178996791377e-09, +-3.592508513184712996e-09, +-3.591194328993655312e-09, +-3.589874632168671813e-09, +-3.588549428462082359e-09, +-3.587218723633262246e-09, +-3.585882523448745604e-09, +-3.584540833682120347e-09, +-3.583193660114064565e-09, +-3.581841008532449101e-09, +-3.580482884732012461e-09, +-3.579119294514666463e-09, +-3.577750243689218718e-09, +-3.576375738071624502e-09, +-3.574995783484762180e-09, +-3.573610385758460501e-09, +-3.572219550729551542e-09, +-3.570823284241841336e-09, +-3.569421592146055285e-09, +-3.568014480299827813e-09, +-3.566601954567648608e-09, +-3.565184020820967666e-09, +-3.563760684938068736e-09, +-3.562331952804087934e-09, +-3.560897830311136986e-09, +-3.559458323357964091e-09, +-3.558013437850252115e-09, +-3.556563179700422552e-09, +-3.555107554827728580e-09, +-3.553646569158176480e-09, +-3.552180228624497925e-09, +-3.550708539166194234e-09, +-3.549231506729546710e-09, +-3.547749137267477679e-09, +-3.546261436739545936e-09, +-3.544768411112121692e-09, +-3.543270066358189297e-09, +-3.541766408457319527e-09, +-3.540257443395789936e-09, +-3.538743177166486426e-09, +-3.537223615768927232e-09, +-3.535698765209166557e-09, +-3.534168631499816905e-09, +-3.532633220660184741e-09, +-3.531092538715885848e-09, +-3.529546591699238654e-09, +-3.527995385649146358e-09, +-3.526438926610784258e-09, +-3.524877220636035670e-09, +-3.523310273783069244e-09, +-3.521738092116612345e-09, +-3.520160681707892323e-09, +-3.518578048634308122e-09, +-3.516990198979968362e-09, +-3.515397138835219432e-09, +-3.513798874296815475e-09, +-3.512195411467822851e-09, +-3.510586756457750828e-09, +-3.508972915382416754e-09, +-3.507353894363869129e-09, +-3.505729699530549317e-09, +-3.504100337017177397e-09, +-3.502465812964717422e-09, +-3.500826133520467994e-09, +-3.499181304837795083e-09, +-3.497531333076500125e-09, +-3.495876224402449445e-09, +-3.494215984987694198e-09, +-3.492550621010737131e-09, +-3.490880138655827005e-09, +-3.489204544113728694e-09, +-3.487523843581092876e-09, +-3.485838043260814616e-09, +-3.484147149361949406e-09, +-3.482451168099448468e-09, +-3.480750105694527677e-09, +-3.479043968374383422e-09, +-3.477332762372219080e-09, +-3.475616493927422442e-09, +-3.473895169285180664e-09, +-3.472168794696866557e-09, +-3.470437376419651882e-09, +-3.468700920716876273e-09, +-3.466959433857720086e-09, +-3.465212922117326408e-09, +-3.463461391776767970e-09, +-3.461704849122948714e-09, +-3.459943300448828370e-09, +-3.458176752053079178e-09, +-3.456405210240303850e-09, +-3.454628681320960293e-09, +-3.452847171611383124e-09, +-3.451060687433648001e-09, +-3.449269235115593967e-09, +-3.447472820990924775e-09, +-3.445671451399168355e-09, +-3.443865132685462164e-09, +-3.442053871200758737e-09, +-3.440237673301735942e-09, +-3.438416545350817655e-09, +-3.436590493716102213e-09, +-3.434759524771256943e-09, +-3.432923644895794035e-09, +-3.431082860474656943e-09, +-3.429237177898662104e-09, +-3.427386603564088658e-09, +-3.425531143872836022e-09, +-3.423670805232495029e-09, +-3.421805594056060483e-09, +-3.419935516762238458e-09, +-3.418060579775093088e-09, +-3.416180789524386128e-09, +-3.414296152445333351e-09, +-3.412406674978678160e-09, +-3.410512363570574549e-09, +-3.408613224672625978e-09, +-3.406709264741975120e-09, +-3.404800490241218667e-09, +-3.402886907638190601e-09, +-3.400968523406275289e-09, +-3.399045344024201509e-09, +-3.397117375976131792e-09, +-3.395184625751554881e-09, +-3.393247099845144291e-09, +-3.391304804757206634e-09, +-3.389357746993052140e-09, +-3.387405933063478138e-09, +-3.385449369484482032e-09, +-3.383488062777329536e-09, +-3.381522019468651047e-09, +-3.379551246090111181e-09, +-3.377575749178754122e-09, +-3.375595535276663242e-09, +-3.373610610931312233e-09, +-3.371620982695225552e-09, +-3.369626657126083886e-09, +-3.367627640786789915e-09, +-3.365623940245165146e-09, +-3.363615562074431751e-09, +-3.361602512852741068e-09, +-3.359584799163237714e-09, +-3.357562427594389210e-09, +-3.355535404739402413e-09, +-3.353503737196782266e-09, +-3.351467431569962887e-09, +-3.349426494467211191e-09, +-3.347380932502122382e-09, +-3.345330752292916014e-09, +-3.343275960462943472e-09, +-3.341216563640544450e-09, +-3.339152568458879868e-09, +-3.337083981556083655e-09, +-3.335010809575081594e-09, +-3.332933059163729470e-09, +-3.330850736974921420e-09, +-3.328763849666088670e-09, +-3.326672403899719414e-09, +-3.324576406342970451e-09, +-3.322475863668090707e-09, +-3.320370782551601081e-09, +-3.318261169675281686e-09, +-3.316147031725518790e-09, +-3.314028375393196458e-09, +-3.311905207374376075e-09, +-3.309777534369331859e-09, +-3.307645363083415261e-09, +-3.305508700226607465e-09, +-3.303367552513229455e-09, +-3.301221926662661253e-09, +-3.299071829398625164e-09, +-3.296917267449562975e-09, +-3.294758247548606998e-09, +-3.292594776433339364e-09, +-3.290426860845994269e-09, +-3.288254507533194513e-09, +-3.286077723246356823e-09, +-3.283896514741316312e-09, +-3.281710888778269401e-09, +-3.279520852122107589e-09, +-3.277326411542025783e-09, +-3.275127573811954083e-09, +-3.272924345709913000e-09, +-3.270716734018542020e-09, +-3.268504745525067346e-09, +-3.266288387020629811e-09, +-3.264067665301288668e-09, +-3.261842587167034756e-09, +-3.259613159422521734e-09, +-3.257379388876685985e-09, +-3.255141282342603521e-09, +-3.252898846637882061e-09, +-3.250652088584186644e-09, +-3.248401015007601939e-09, +-3.246145632738556549e-09, +-3.243885948611558321e-09, +-3.241621969465450770e-09, +-3.239353702143099160e-09, +-3.237081153491858281e-09, +-3.234804330363134865e-09, +-3.232523239612298667e-09, +-3.230237888099351241e-09, +-3.227948282687740588e-09, +-3.225654430245728071e-09, +-3.223356337645379674e-09, +-3.221054011762618523e-09, +-3.218747459477934606e-09, +-3.216436687675445100e-09, +-3.214121703243566453e-09, +-3.211802513074517662e-09, +-3.209479124064719801e-09, +-3.207151543114685181e-09, +-3.204819777128557849e-09, +-3.202483833014778225e-09, +-3.200143717685402340e-09, +-3.197799438056791283e-09, +-3.195451001049047897e-09, +-3.193098413586081709e-09, +-3.190741682595901340e-09, +-3.188380815010092965e-09, +-3.186015817764436155e-09, +-3.183646697798411697e-09, +-3.181273462055101925e-09, +-3.178896117481864868e-09, +-3.176514671029350321e-09, +-3.174129129652298486e-09, +-3.171739500309386120e-09, +-3.169345789962363781e-09, +-3.166948005577485198e-09, +-3.164546154124192056e-09, +-3.162140242575914290e-09, +-3.159730277909455904e-09, +-3.157316267105742332e-09, +-3.154898217149090446e-09, +-3.152476135027330982e-09, +-3.150050027732184907e-09, +-3.147619902258686459e-09, +-3.145185765605823800e-09, +-3.142747624775950890e-09, +-3.140305486774794104e-09, +-3.137859358612143755e-09, +-3.135409247300803576e-09, +-3.132955159857341797e-09, +-3.130497103301847960e-09, +-3.128035084657676070e-09, +-3.125569110952004191e-09, +-3.123099189215067234e-09, +-3.120625326480808357e-09, +-3.118147529786654393e-09, +-3.115665806173122519e-09, +-3.113180162684412521e-09, +-3.110690606367850929e-09, +-3.108197144274297160e-09, +-3.105699783458019441e-09, +-3.103198530976425980e-09, +-3.100693393890418994e-09, +-3.098184379263883512e-09, +-3.095671494164494293e-09, +-3.093154745662681849e-09, +-3.090634140832420330e-09, +-3.088109686750937604e-09, +-3.085581390498352535e-09, +-3.083049259158558825e-09, +-3.080513299818091364e-09, +-3.077973519566857457e-09, +-3.075429925498152541e-09, +-3.072882524708037317e-09, +-3.070331324295954004e-09, +-3.067776331364232502e-09, +-3.065217553018513922e-09, +-3.062654996367601267e-09, +-3.060088668523014833e-09, +-3.057518576599641124e-09, +-3.054944727715066563e-09, +-3.052367128990340979e-09, +-3.049785787549282359e-09, +-3.047200710518505803e-09, +-3.044611905028027776e-09, +-3.042019378210317750e-09, +-3.039423137201272203e-09, +-3.036823189139519792e-09, +-3.034219541166360140e-09, +-3.031612200426482243e-09, +-3.029001174066942902e-09, +-3.026386469238104743e-09, +-3.023768093092793324e-09, +-3.021146052786867062e-09, +-3.018520355479211024e-09, +-3.015891008331048308e-09, +-3.013258018506797406e-09, +-3.010621393173203258e-09, +-3.007981139500343929e-09, +-3.005337264660720707e-09, +-3.002689775829435951e-09, +-3.000038680184573593e-09, +-2.997383984906564275e-09, +-2.994725697179000539e-09, +-2.992063824187826185e-09, +-2.989398373121457873e-09, +-2.986729351171627185e-09, +-2.984056765531717999e-09, +-2.981380623398535000e-09, +-2.978700931971181604e-09, +-2.976017698451086434e-09, +-2.973330930042752329e-09, +-2.970640633952683493e-09, +-2.967946817390370250e-09, +-2.965249487567334481e-09, +-2.962548651698112312e-09, +-2.959844316999464986e-09, +-2.957136490690450825e-09, +-2.954425179992902104e-09, +-2.951710392130711601e-09, +-2.948992134330606433e-09, +-2.946270413821570261e-09, +-2.943545237834667521e-09, +-2.940816613603964489e-09, +-2.938084548365031253e-09, +-2.935349049356589874e-09, +-2.932610123819352195e-09, +-2.929867778996048380e-09, +-2.927122022132387270e-09, +-2.924372860475707668e-09, +-2.921620301275872102e-09, +-2.918864351785292057e-09, +-2.916105019257830723e-09, +-2.913342310950470998e-09, +-2.910576234121697943e-09, +-2.907806796032520759e-09, +-2.905034003946288327e-09, +-2.902257865128021675e-09, +-2.899478386845306091e-09, +-2.896695576367465594e-09, +-2.893909440966570033e-09, +-2.891119987915864677e-09, +-2.888327224491482899e-09, +-2.885531157971412194e-09, +-2.882731795635324201e-09, +-2.879929144765516855e-09, +-2.877123212645748890e-09, +-2.874314006562045106e-09, +-2.871501533802738960e-09, +-2.868685801657248759e-09, +-2.865866817417992165e-09, +-2.863044588378572604e-09, +-2.860219121834790908e-09, +-2.857390425084594857e-09, +-2.854558505427339261e-09, +-2.851723370164704968e-09, +-2.848885026599879945e-09, +-2.846043482038018367e-09, +-2.843198743786492497e-09, +-2.840350819153896340e-09, +-2.837499715451071768e-09, +-2.834645439990205646e-09, +-2.831788000085879114e-09, +-2.828927403053849564e-09, +-2.826063656211822809e-09, +-2.823196766879667743e-09, +-2.820326742378017159e-09, +-2.817453590030205836e-09, +-2.814577317160542144e-09, +-2.811697931095244828e-09, +-2.808815439162466994e-09, +-2.805929848691456107e-09, +-2.803041167013611545e-09, +-2.800149401461464266e-09, +-2.797254559369367095e-09, +-2.794356648073530705e-09, +-2.791455674911184027e-09, +-2.788551647221525511e-09, +-2.785644572344860785e-09, +-2.782734457623528278e-09, +-2.779821310401187422e-09, +-2.776905138022687136e-09, +-2.773985947834751146e-09, +-2.771063747185135911e-09, +-2.768138543423535974e-09, +-2.765210343900845291e-09, +-2.762279155969038115e-09, +-2.759344986982208350e-09, +-2.756407844295109576e-09, +-2.753467735264366869e-09, +-2.750524667247571452e-09, +-2.747578647603820018e-09, +-2.744629683693816058e-09, +-2.741677782879040610e-09, +-2.738722952522669608e-09, +-2.735765199988781440e-09, +-2.732804532643177096e-09, +-2.729840957852684098e-09, +-2.726874482985136648e-09, +-2.723905115409987738e-09, +-2.720932862497412077e-09, +-2.717957731619273062e-09, +-2.714979730148442424e-09, +-2.711998865458588055e-09, +-2.709015144925181102e-09, +-2.706028575924148899e-09, +-2.703039165832919702e-09, +-2.700046922030033498e-09, +-2.697051851894666373e-09, +-2.694053962807851435e-09, +-2.691053262150894764e-09, +-2.688049757306436679e-09, +-2.685043455658436439e-09, +-2.682034364591309909e-09, +-2.679022491490914727e-09, +-2.676007843743692521e-09, +-2.672990428737403448e-09, +-2.669970253860394545e-09, +-2.666947326502382249e-09, +-2.663921654053776588e-09, +-2.660893243905583988e-09, +-2.657862103450351497e-09, +-2.654828240080839162e-09, +-2.651791661191030431e-09, +-2.648752374175815344e-09, +-2.645710386430456995e-09, +-2.642665705351721054e-09, +-2.639618338336475763e-09, +-2.636568292782676690e-09, +-2.633515576089351430e-09, +-2.630460195655663651e-09, +-2.627402158882000831e-09, +-2.624341473169160734e-09, +-2.621278145918726943e-09, +-2.618212184533320738e-09, +-2.615143596415666799e-09, +-2.612072388969606913e-09, +-2.608998569599172704e-09, +-2.605922145709766847e-09, +-2.602843124706405314e-09, +-2.599761513995611195e-09, +-2.596677320984149947e-09, +-2.593590553079027737e-09, +-2.590501217688538237e-09, +-2.587409322220802237e-09, +-2.584314874084722631e-09, +-2.581217880690127509e-09, +-2.578118349446660918e-09, +-2.575016287764952486e-09, +-2.571911703055733176e-09, +-2.568804602730354332e-09, +-2.565694994200943609e-09, +-2.562582884879428484e-09, +-2.559468282178609523e-09, +-2.556351193511283156e-09, +-2.553231626291156954e-09, +-2.550109587931998455e-09, +-2.546985085847757180e-09, +-2.543858127453107674e-09, +-2.540728720162506930e-09, +-2.537596871391375197e-09, +-2.534462588555140992e-09, +-2.531325879069133161e-09, +-2.528186750349813783e-09, +-2.525045209812734214e-09, +-2.521901264874839609e-09, +-2.518754922952453082e-09, +-2.515606191462398193e-09, +-2.512455077821981986e-09, +-2.509301589448176501e-09, +-2.506145733758504264e-09, +-2.502987518170283488e-09, +-2.499826950101138856e-09, +-2.496664036969155378e-09, +-2.493498786191877501e-09, +-2.490331205187400160e-09, +-2.487161301373537876e-09, +-2.483989082168617610e-09, +-2.480814554990760767e-09, +-2.477637727257819918e-09, +-2.474458606388466130e-09, +-2.471277199800251296e-09, +-2.468093514911697588e-09, +-2.464907559141003755e-09, +-2.461719339905897877e-09, +-2.458528864624808243e-09, +-2.455336140715361605e-09, +-2.452141175595644213e-09, +-2.448943976683186452e-09, +-2.445744551395643610e-09, +-2.442542907150798778e-09, +-2.439339051365774952e-09, +-2.436132991457944112e-09, +-2.432924734844033865e-09, +-2.429714288941205260e-09, +-2.426501661166068856e-09, +-2.423286858934878698e-09, +-2.420069889663978581e-09, +-2.416850760769051382e-09, +-2.413629479666088102e-09, +-2.410406053770480864e-09, +-2.407180490497041111e-09, +-2.403952797261000078e-09, +-2.400722981476545928e-09, +-2.397491050557842006e-09, +-2.394257011919078129e-09, +-2.391020872973166118e-09, +-2.387782641133651829e-09, +-2.384542323812945399e-09, +-2.381299928423301041e-09, +-2.378055462376911758e-09, +-2.374808933084900179e-09, +-2.371560347958425330e-09, +-2.368309714407867862e-09, +-2.365057039843450017e-09, +-2.361802331674416313e-09, +-2.358545597310134515e-09, +-2.355286844159154310e-09, +-2.352026079629147743e-09, +-2.348763311127949816e-09, +-2.345498546062227135e-09, +-2.342231791838331982e-09, +-2.338963055862146383e-09, +-2.335692345538430709e-09, +-2.332419668272133928e-09, +-2.329145031466807073e-09, +-2.325868442525661617e-09, +-2.322589908851579405e-09, +-2.319309437846156840e-09, +-2.316027036910803800e-09, +-2.312742713445775001e-09, +-2.309456474850862766e-09, +-2.306168328525433837e-09, +-2.302878281867465288e-09, +-2.299586342274677355e-09, +-2.296292517143571011e-09, +-2.292996813870414791e-09, +-2.289699239850397757e-09, +-2.286399802477651424e-09, +-2.283098509145899503e-09, +-2.279795367247528159e-09, +-2.276490384174767628e-09, +-2.273183567318243006e-09, +-2.269874924068033035e-09, +-2.266564461813653146e-09, +-2.263252187942980127e-09, +-2.259938109843560719e-09, +-2.256622234901554070e-09, +-2.253304570502365349e-09, +-2.249985124030767350e-09, +-2.246663902869922757e-09, +-2.243340914402507872e-09, +-2.240016166009614534e-09, +-2.236689665072021079e-09, +-2.233361418969096328e-09, +-2.230031435078951788e-09, +-2.226699720779030602e-09, +-2.223366283445234050e-09, +-2.220031130452942290e-09, +-2.216694269176137954e-09, +-2.213355706987303998e-09, +-2.210015451258619390e-09, +-2.206673509360277450e-09, +-2.203329888661908187e-09, +-2.199984596531445064e-09, +-2.196637640335969134e-09, +-2.193289027441593234e-09, +-2.189938765212564497e-09, +-2.186586861012450527e-09, +-2.183233322203012363e-09, +-2.179878156145422921e-09, +-2.176521370199226812e-09, +-2.173162971722500813e-09, +-2.169802968072427935e-09, +-2.166441366604290326e-09, +-2.163078174672765051e-09, +-2.159713399630808642e-09, +-2.156347048829691421e-09, +-2.152979129620222558e-09, +-2.149609649350530742e-09, +-2.146238615368579229e-09, +-2.142866035020386571e-09, +-2.139491915650192470e-09, +-2.136116264601647674e-09, +-2.132739089216093443e-09, +-2.129360396833783295e-09, +-2.125980194793792015e-09, +-2.122598490433092108e-09, +-2.119215291087632445e-09, +-2.115830604091418848e-09, +-2.112444436777365675e-09, +-2.109056796476270114e-09, +-2.105667690518053370e-09, +-2.102277126230700219e-09, +-2.098885110940301604e-09, +-2.095491651972242058e-09, +-2.092096756648974173e-09, +-2.088700432292542324e-09, +-2.085302686222838980e-09, +-2.081903525757764757e-09, +-2.078502958214360415e-09, +-2.075100990907126445e-09, +-2.071697631149331665e-09, +-2.068292886252865570e-09, +-2.064886763526794486e-09, +-2.061479270279689260e-09, +-2.058070413817482858e-09, +-2.054660201444623457e-09, +-2.051248640464180326e-09, +-2.047835738176758148e-09, +-2.044421501881666653e-09, +-2.041005938875839084e-09, +-2.037589056455322773e-09, +-2.034170861913004806e-09, +-2.030751362541103083e-09, +-2.027330565629500372e-09, +-2.023908478465772433e-09, +-2.020485108336555351e-09, +-2.017060462525609516e-09, +-2.013634548315187782e-09, +-2.010207372986064417e-09, +-2.006778943815863787e-09, +-2.003349268081562160e-09, +-1.999918353057163331e-09, +-1.996486206015146187e-09, +-1.993052834226210766e-09, +-1.989618244958390272e-09, +-1.986182445478271585e-09, +-1.982745443049889734e-09, +-1.979307244935494277e-09, +-1.975867858395575774e-09, +-1.972427290687903359e-09, +-1.968985549068661703e-09, +-1.965542640791356239e-09, +-1.962098573108079573e-09, +-1.958653353268444014e-09, +-1.955206988519509188e-09, +-1.951759486107175429e-09, +-1.948310853273799431e-09, +-1.944861097260925179e-09, +-1.941410225306885133e-09, +-1.937958244648165069e-09, +-1.934505162519383820e-09, +-1.931050986152192706e-09, +-1.927595722776584137e-09, +-1.924139379619782776e-09, +-1.920681963907028054e-09, +-1.917223482861589056e-09, +-1.913763943703677195e-09, +-1.910303353651817677e-09, +-1.906841719921600456e-09, +-1.903379049726957817e-09, +-1.899915350279121714e-09, +-1.896450628786748259e-09, +-1.892984892456523635e-09, +-1.889518148492154935e-09, +-1.886050404095665109e-09, +-1.882581666466301092e-09, +-1.879111942800467212e-09, +-1.875641240293012695e-09, +-1.872169566135437517e-09, +-1.868696927517155914e-09, +-1.865223331625587792e-09, +-1.861748785644384009e-09, +-1.858273296756059287e-09, +-1.854796872139612628e-09, +-1.851319518972109497e-09, +-1.847841244427429472e-09, +-1.844362055677693754e-09, +-1.840881959892002886e-09, +-1.837400964236659265e-09, +-1.833919075875810071e-09, +-1.830436301970406669e-09, +-1.826952649679511767e-09, +-1.823468126159149009e-09, +-1.819982738562305254e-09, +-1.816496494040238551e-09, +-1.813009399740573560e-09, +-1.809521462808799989e-09, +-1.806032690387639176e-09, +-1.802543089616644566e-09, +-1.799052667633506381e-09, +-1.795561431572242779e-09, +-1.792069388564589521e-09, +-1.788576545739805582e-09, +-1.785082910223633799e-09, +-1.781588489139686607e-09, +-1.778093289608196993e-09, +-1.774597318747151321e-09, +-1.771100583671012373e-09, +-1.767603091492229988e-09, +-1.764104849319964100e-09, +-1.760605864260116998e-09, +-1.757106143416623317e-09, +-1.753605693889631891e-09, +-1.750104522776887977e-09, +-1.746602637173208195e-09, +-1.743100044169956104e-09, +-1.739596750856505270e-09, +-1.736092764318308423e-09, +-1.732588091638281332e-09, +-1.729082739896692166e-09, +-1.725576716170092987e-09, +-1.722070027532655021e-09, +-1.718562681054978145e-09, +-1.715054683804981342e-09, +-1.711546042847838390e-09, +-1.708036765244922172e-09, +-1.704526858055199923e-09, +-1.701016328333894230e-09, +-1.697505183133907028e-09, +-1.693993429504666296e-09, +-1.690481074492178384e-09, +-1.686968125139918054e-09, +-1.683454588487512231e-09, +-1.679940471572357348e-09, +-1.676425781427759841e-09, +-1.672910525084262126e-09, +-1.669394709569584689e-09, +-1.665878341907452321e-09, +-1.662361429119103723e-09, +-1.658843978221952090e-09, +-1.655325996230443110e-09, +-1.651807490156188546e-09, +-1.648288467006725886e-09, +-1.644768933786986584e-09, +-1.641248897497946104e-09, +-1.637728365138122769e-09, +-1.634207343702255100e-09, +-1.630685840181525983e-09, +-1.627163861564329878e-09, +-1.623641414835003509e-09, +-1.620118506975368560e-09, +-1.616595144963456985e-09, +-1.613071335773487849e-09, +-1.609547086377420567e-09, +-1.606022403742295933e-09, +-1.602497294833202591e-09, +-1.598971766610728704e-09, +-1.595445826032436816e-09, +-1.591919480052811738e-09, +-1.588392735622066306e-09, +-1.584865599687668772e-09, +-1.581338079192861735e-09, +-1.577810181078192218e-09, +-1.574281912280303782e-09, +-1.570753279732060184e-09, +-1.567224290363308038e-09, +-1.563694951099668104e-09, +-1.560165268863998766e-09, +-1.556635250575226618e-09, +-1.553104903148243263e-09, +-1.549574233495438083e-09, +-1.546043248524118678e-09, +-1.542511955139292877e-09, +-1.538980360241814615e-09, +-1.535448470728482989e-09, +-1.531916293493429023e-09, +-1.528383835426108312e-09, +-1.524851103412730177e-09, +-1.521318104336359830e-09, +-1.517784845075011508e-09, +-1.514251332504448896e-09, +-1.510717573495628729e-09, +-1.507183574916522238e-09, +-1.503649343630570599e-09, +-1.500114886498331438e-09, +-1.496580210376167953e-09, +-1.493045322116248297e-09, +-1.489510228568030780e-09, +-1.485974936575699192e-09, +-1.482439452980934898e-09, +-1.478903784621102618e-09, +-1.475367938329271526e-09, +-1.471831920935634895e-09, +-1.468295739265567668e-09, +-1.464759400140964223e-09, +-1.461222910380384571e-09, +-1.457686276797130955e-09, +-1.454149506202130578e-09, +-1.450612605401241887e-09, +-1.447075581196827454e-09, +-1.443538440387720688e-09, +-1.440001189767982784e-09, +-1.436463836128372834e-09, +-1.432926386255144070e-09, +-1.429388846930821619e-09, +-1.425851224934386969e-09, +-1.422313527039929454e-09, +-1.418775760018223894e-09, +-1.415237930635344242e-09, +-1.411700045654260459e-09, +-1.408162111832926478e-09, +-1.404624135925628723e-09, +-1.401086124683184007e-09, +-1.397548084850897848e-09, +-1.394010023171477794e-09, +-1.390471946382443318e-09, +-1.386933861217608535e-09, +-1.383395774407052636e-09, +-1.379857692675867530e-09, +-1.376319622745733836e-09, +-1.372781571333574642e-09, +-1.369243545152417222e-09, +-1.365705550911499537e-09, +-1.362167595315052623e-09, +-1.358629685063786001e-09, +-1.355091826853487674e-09, +-1.351554027376531664e-09, +-1.348016293320685426e-09, +-1.344478631369123492e-09, +-1.340941048201330135e-09, +-1.337403550491837713e-09, +-1.333866144911839047e-09, +-1.330328838127263815e-09, +-1.326791636800132855e-09, +-1.323254547588620613e-09, +-1.319717577145686575e-09, +-1.316180732120641947e-09, +-1.312644019157908265e-09, +-1.309107444897823687e-09, +-1.305571015976748664e-09, +-1.302034739025851646e-09, +-1.298498620672565737e-09, +-1.294962667539275348e-09, +-1.291426886244727774e-09, +-1.287891283402856742e-09, +-1.284355865622873809e-09, +-1.280820639510081691e-09, +-1.277285611664645487e-09, +-1.273750788683076016e-09, +-1.270216177157032477e-09, +-1.266681783673201474e-09, +-1.263147614814790281e-09, +-1.259613677159485983e-09, +-1.256079977281021326e-09, +-1.252546521748602108e-09, +-1.249013317126313460e-09, +-1.245480369974690464e-09, +-1.241947686848697553e-09, +-1.238415274299435607e-09, +-1.234883138872713203e-09, +-1.231351287110584760e-09, +-1.227819725550076266e-09, +-1.224288460723308527e-09, +-1.220757499158320628e-09, +-1.217226847377876307e-09, +-1.213696511900854865e-09, +-1.210166499241093107e-09, +-1.206636815907334890e-09, +-1.203107468404601961e-09, +-1.199578463232266015e-09, +-1.196049806885541539e-09, +-1.192521505854971934e-09, +-1.188993566625760944e-09, +-1.185465995679404059e-09, +-1.181938799491643938e-09, +-1.178411984533904735e-09, +-1.174885557273267492e-09, +-1.171359524171202280e-09, +-1.167833891685056500e-09, +-1.164308666266915030e-09, +-1.160783854364527496e-09, +-1.157259462420165519e-09, +-1.153735496872119292e-09, +-1.150211964153409250e-09, +-1.146688870691812122e-09, +-1.143166222911337241e-09, +-1.139644027229638299e-09, +-1.136122290060845201e-09, +-1.132601017813670643e-09, +-1.129080216891498831e-09, +-1.125559893693797065e-09, +-1.122040054614136707e-09, +-1.118520706041557825e-09, +-1.115001854360635572e-09, +-1.111483505950126920e-09, +-1.107965667184530101e-09, +-1.104448344432834738e-09, +-1.100931544059327517e-09, +-1.097415272423712341e-09, +-1.093899535879899328e-09, +-1.090384340777438324e-09, +-1.086869693460226220e-09, +-1.083355600267935291e-09, +-1.079842067534785243e-09, +-1.076329101589686110e-09, +-1.072816708757044548e-09, +-1.069304895355491009e-09, +-1.065793667699581464e-09, +-1.062283032097816712e-09, +-1.058772994853995858e-09, +-1.055263562267394363e-09, +-1.051754740630762889e-09, +-1.048246536233281776e-09, +-1.044738955357873334e-09, +-1.041232004282723432e-09, +-1.037725689281305908e-09, +-1.034220016621102709e-09, +-1.030714992565094885e-09, +-1.027210623370405395e-09, +-1.023706915289791336e-09, +-1.020203874570405245e-09, +-1.016701507453903457e-09, +-1.013199820177254466e-09, +-1.009698818971574465e-09, +-1.006198510063507908e-09, +-1.002698899674056017e-09, +-9.991999940185521692e-10, +-9.957017993081692342e-10, +-9.922043217472758985e-10, +-9.887075675363311798e-10, +-9.852115428699910102e-10, +-9.817162539371407031e-10, +-9.782217069223317660e-10, +-9.747279080038456771e-10, +-9.712348633552992365e-10, +-9.677425791444186843e-10, +-9.642510615338675018e-10, +-9.607603166813425708e-10, +-9.572703507383809662e-10, +-9.537811698517909780e-10, +-9.502927801623160079e-10, +-9.468051878061379702e-10, +-9.433183989135976432e-10, +-9.398324196092298245e-10, +-9.363472560132241322e-10, +-9.328629142388398580e-10, +-9.293794003952663585e-10, +-9.258967205856776294e-10, +-9.224148809073775791e-10, +-9.189338874531683926e-10, +-9.154537463094021069e-10, +-9.119744635573488716e-10, +-9.084960452733437737e-10, +-9.050184975268389299e-10, +-9.015418263832662559e-10, +-8.980660379014511827e-10, +-8.945911381353495289e-10, +-8.911171331327073650e-10, +-8.876440289365306028e-10, +-8.841718315838426740e-10, +-8.807005471058556526e-10, +-8.772301815287171996e-10, +-8.737607408723062907e-10, +-8.702922311517374452e-10, +-8.668246583761069261e-10, +-8.633580285484628585e-10, +-8.598923476672136084e-10, +-8.564276217241725339e-10, +-8.529638567059099089e-10, +-8.495010585939141196e-10, +-8.460392333625942306e-10, +-8.425783869822691051e-10, +-8.391185254164186837e-10, +-8.356596546232939882e-10, +-8.322017805558336797e-10, +-8.287449091604737457e-10, +-8.252890463786133676e-10, +-8.218341981453678425e-10, +-8.183803703904156160e-10, +-8.149275690381079873e-10, +-8.114758000062159304e-10, +-8.080250692074367001e-10, +-8.045753825480430463e-10, +-8.011267459294767774e-10, +-7.976791652464348708e-10, +-7.942326463883769067e-10, +-7.907871952389740622e-10, +-7.873428176755162293e-10, +-7.838995195704754902e-10, +-7.804573067894921389e-10, +-7.770161851928383774e-10, +-7.735761606353262919e-10, +-7.701372389650935517e-10, +-7.666994260251202514e-10, +-7.632627276519447134e-10, +-7.598271496765393684e-10, +-7.563926979243741384e-10, +-7.529593782142443215e-10, +-7.495271963596878626e-10, +-7.460961581676703433e-10, +-7.426662694400569492e-10, +-7.392375359723943437e-10, +-7.358099635539842866e-10, +-7.323835579687717160e-10, +-7.289583249940453512e-10, +-7.255342704021245204e-10, +-7.221113999583541786e-10, +-7.186897194225583670e-10, +-7.152692345489757967e-10, +-7.118499510850192844e-10, +-7.084318747728121368e-10, +-7.050150113478867891e-10, +-7.015993665400815717e-10, +-6.981849460735954079e-10, +-6.947717556657687565e-10, +-6.913598010285987995e-10, +-6.879490878673386120e-10, +-6.845396218820222766e-10, +-6.811314087661976424e-10, +-6.777244542070771822e-10, +-6.743187638863385998e-10, +-6.709143434788676192e-10, +-6.675111986543083276e-10, +-6.641093350757697751e-10, +-6.607087583998353840e-10, +-6.573094742780876494e-10, +-6.539114883544265230e-10, +-6.505148062680622561e-10, +-6.471194336514483785e-10, +-6.437253761305006948e-10, +-6.403326393259353520e-10, +-6.369412288513425431e-10, +-6.335511503148154323e-10, +-6.301624093175782760e-10, +-6.267750114555105031e-10, +-6.233889623178706853e-10, +-6.200042674874131700e-10, +-6.166209325412673729e-10, +-6.132389630496128417e-10, +-6.098583645772659949e-10, +-6.064791426823679039e-10, +-6.031013029164133469e-10, +-5.997248508257561748e-10, +-5.963497919489408262e-10, +-5.929761318196618766e-10, +-5.896038759647675341e-10, +-5.862330299044103935e-10, +-5.828635991534299650e-10, +-5.794955892193830540e-10, +-5.761290056039607214e-10, +-5.727638538030883723e-10, +-5.694001393049642009e-10, +-5.660378675930151200e-10, +-5.626770441431997390e-10, +-5.593176744255648074e-10, +-5.559597639042135754e-10, +-5.526033180360794980e-10, +-5.492483422724037873e-10, +-5.458948420573648769e-10, +-5.425428228298939801e-10, +-5.391922900209703130e-10, +-5.358432490566084569e-10, +-5.324957053558364188e-10, +-5.291496643308642732e-10, +-5.258051313884840614e-10, +-5.224621119280557100e-10, +-5.191206113429453955e-10, +-5.157806350206362819e-10, +-5.124421883407699647e-10, +-5.091052766780734492e-10, +-5.057699053996920099e-10, +-5.024360798667395339e-10, +-4.991038054342645030e-10, +-4.957730874499916454e-10, +-4.924439312558682461e-10, +-4.891163421867774678e-10, +-4.857903255713857974e-10, +-4.824658867322720859e-10, +-4.791430309846603080e-10, +-4.758217636379501562e-10, +-4.725020899943096967e-10, +-4.691840153503494790e-10, +-4.658675449951603609e-10, +-4.625526842116974325e-10, +-4.592394382769249286e-10, +-4.559278124598278411e-10, +-4.526178120243873915e-10, +-4.493094422268591927e-10, +-4.460027083173442720e-10, +-4.426976155397775940e-10, +-4.393941691306393647e-10, +-4.360923743205196955e-10, +-4.327922363328236002e-10, +-4.294937603846321935e-10, +-4.261969516868085699e-10, +-4.229018154427425056e-10, +-4.196083568498902553e-10, +-4.163165810983558854e-10, +-4.130264933724364479e-10, +-4.097380988493432102e-10, +-4.064514026993384507e-10, +-4.031664100865939171e-10, +-3.998831261678710592e-10, +-3.966015560941037879e-10, +-3.933217050091078149e-10, +-3.900435780495777053e-10, +-3.867671803464853824e-10, +-3.834925170231018209e-10, +-3.802195931966980413e-10, +-3.769484139772397151e-10, +-3.736789844682478460e-10, +-3.704113097669260010e-10, +-3.671453949628924493e-10, +-3.638812451397093088e-10, +-3.606188653734827500e-10, +-3.573582607344025855e-10, +-3.540994362854580726e-10, +-3.508423970825830832e-10, +-3.475871481754882993e-10, +-3.443336946064016236e-10, +-3.410820414115800590e-10, +-3.378321936200709538e-10, +-3.345841562536856872e-10, +-3.313379343284078408e-10, +-3.280935328524146858e-10, +-3.248509568276131027e-10, +-3.216102112490788558e-10, +-3.183713011044945761e-10, +-3.151342313756603476e-10, +-3.118990070365563995e-10, +-3.086656330550083749e-10, +-3.054341143912669073e-10, +-3.022044559995544479e-10, +-2.989766628267953887e-10, +-2.957507398127549250e-10, +-2.925266918908674770e-10, +-2.893045239869751877e-10, +-2.860842410208465748e-10, +-2.828658479049423254e-10, +-2.796493495443773491e-10, +-2.764347508383249173e-10, +-2.732220566780654991e-10, +-2.700112719484939359e-10, +-2.668024015275773799e-10, +-2.635954502857779220e-10, +-2.603904230875886659e-10, +-2.571873247895695880e-10, +-2.539861602417363219e-10, +-2.507869342875554021e-10, +-2.475896517626916542e-10, +-2.443943174965221417e-10, +-2.412009363108813338e-10, +-2.380095130209045704e-10, +-2.348200524351328044e-10, +-2.316325593542810845e-10, +-2.284470385727505121e-10, +-2.252634948772364070e-10, +-2.220819330485203936e-10, +-2.189023578588423190e-10, +-2.157247740747886390e-10, +-2.125491864553679556e-10, +-2.093755997521261511e-10, +-2.062040187105304932e-10, +-2.030344480680282168e-10, +-1.998668925554261835e-10, +-1.967013568968782669e-10, +-1.935378458086409889e-10, +-1.903763640005954803e-10, +-1.872169161749817909e-10, +-1.840595070272320672e-10, +-1.809041412461029015e-10, +-1.777508235124260563e-10, +-1.745995585006210159e-10, +-1.714503508773133363e-10, +-1.683032053028379681e-10, +-1.651581264300049225e-10, +-1.620151189042200394e-10, +-1.588741873643151151e-10, +-1.557353364412949300e-10, +-1.525985707598553066e-10, +-1.494638949371325929e-10, +-1.463313135826983891e-10, +-1.432008313000748394e-10, +-1.400724526841084110e-10, +-1.369461823239905247e-10, +-1.338220248006432513e-10, +-1.306999846882262788e-10, +-1.275800665541268575e-10, +-1.244622749577231646e-10, +-1.213466144518928237e-10, +-1.182330895816260067e-10, +-1.151217048855333842e-10, +-1.120124648946089738e-10, +-1.089053741323619975e-10, +-1.058004371156310214e-10, +-1.026976583533482901e-10, +-9.959704234803842278e-11, +-9.649859359458884812e-11, +-9.340231658023534145e-11, +-9.030821578606455959e-11, +-8.721629568441618969e-11, +-8.412656074174149154e-11, +-8.103901541668946011e-11, +-7.795366416023807587e-11, +-7.487051141705555972e-11, +-7.178956162358078408e-11, +-6.871081920965916470e-11, +-6.563428859731073023e-11, +-6.255997420154152181e-11, +-5.948788043047433926e-11, +-5.641801168412066226e-11, +-5.335037235587135903e-11, +-5.028496683113447496e-11, +-4.722179948882102995e-11, +-4.416087470012081695e-11, +-4.110219682849769735e-11, +-3.804577023117714963e-11, +-3.499159925656319109e-11, +-3.193968824708333631e-11, +-2.889004153728630794e-11, +-2.584266345396952267e-11, +-2.279755831753346701e-11, +-1.975473044007829655e-11, +-1.671418412675450231e-11, +-1.367592367589313681e-11, +-1.063995337710716955e-11, +-7.606277514128185034e-12, +-4.574900362231218435e-12, + 0.0 /* Need a final zero coefficient */ +} +} ; /* high_qual_coeffs */ + +#ifdef _MSC_VER +#pragma warning (pop) +#endif diff --git a/source/engine/thirdparty/libsamplerate/src/mid_qual_coeffs.h b/source/engine/thirdparty/libsamplerate/src/mid_qual_coeffs.h new file mode 100644 index 0000000..6fc4d37 --- /dev/null +++ b/source/engine/thirdparty/libsamplerate/src/mid_qual_coeffs.h @@ -0,0 +1,22472 @@ +/* +** Copyright (c) 2007-2016, Erik de Castro Lopo +** All rights reserved. +** +** This code is released under 2-clause BSD license. Please see the +** file at : https://github.com/libsndfile/libsamplerate/blob/master/COPYING +*/ + +/* +** f = make_src_filter (cycles = 21, incr = 491, atten = 122.000000) +** +** Stop band atten. : 120.61 dB +** -3dB band width : 1.811 +** half length : 22437 +** increment : 491 +*/ + +#ifdef _MSC_VER +#pragma warning (push) +#pragma warning (disable: 4305) +#endif + +static const struct slow_mid_qual_coeffs_s +{ int increment ; + coeff_t coeffs [22438] ; +} slow_mid_qual_coeffs = +{ 491, +{ + 9.190632349861385109e-01, + 9.190579273831620544e-01, + 9.190420046848706281e-01, + 9.190154672231939381e-01, + 9.189783155513205903e-01, + 9.189305504437105254e-01, + 9.188721728960548285e-01, + 9.188031841252660703e-01, + 9.187235855694375619e-01, + 9.186333788878118245e-01, + 9.185325659607400661e-01, + 9.184211488896345532e-01, + 9.182991299969165411e-01, + 9.181665118259576541e-01, + 9.180232971410120513e-01, + 9.178694889271632462e-01, + 9.177050903902308487e-01, + 9.175301049567006206e-01, + 9.173445362736407649e-01, + 9.171483882086021167e-01, + 9.169416648495360977e-01, + 9.167243705046783653e-01, + 9.164965097024515561e-01, + 9.162580871913481584e-01, + 9.160091079398144931e-01, + 9.157495771361238157e-01, + 9.154795001882498617e-01, + 9.151988827237356183e-01, + 9.149077305895451095e-01, + 9.146060498519228421e-01, + 9.142938467962469229e-01, + 9.139711279268634136e-01, + 9.136378999669314549e-01, + 9.132941698582575096e-01, + 9.129399447611106222e-01, + 9.125752320540596596e-01, + 9.122000393337836854e-01, + 9.118143744148777818e-01, + 9.114182453296666431e-01, + 9.110116603280005165e-01, + 9.105946278770478131e-01, + 9.101671566610971542e-01, + 9.097292555813195625e-01, + 9.092809337555683991e-01, + 9.088222005181412211e-01, + 9.083530654195477450e-01, + 9.078735382262775877e-01, + 9.073836289205553518e-01, + 9.068833477000901588e-01, + 9.063727049778221856e-01, + 9.058517113816679789e-01, + 9.053203777542537800e-01, + 9.047787151526440752e-01, + 9.042267348480692579e-01, + 9.036644483256435212e-01, + 9.030918672840801964e-01, + 9.025090036354035394e-01, + 9.019158695046503027e-01, + 9.013124772295638687e-01, + 9.006988393602999299e-01, + 9.000749686590990839e-01, + 8.994408780999827435e-01, + 8.987965808684226232e-01, + 8.981420903610175532e-01, + 8.974774201851590805e-01, + 8.968025841586921842e-01, + 8.961175963095725505e-01, + 8.954224708755219586e-01, + 8.947172223036650163e-01, + 8.940018652501846574e-01, + 8.932764145799431121e-01, + 8.925408853661255248e-01, + 8.917952928898525977e-01, + 8.910396526398144390e-01, + 8.902739803118754347e-01, + 8.894982918086901114e-01, + 8.887126032393080077e-01, + 8.879169309187701087e-01, + 8.871112913677079437e-01, + 8.862957013119301397e-01, + 8.854701776820081971e-01, + 8.846347376128601558e-01, + 8.837893984433177197e-01, + 8.829341777157024840e-01, + 8.820690931753858433e-01, + 8.811941627703521185e-01, + 8.803094046507521364e-01, + 8.794148371684512577e-01, + 8.785104788765752959e-01, + 8.775963485290545485e-01, + 8.766724650801458463e-01, + 8.757388476839771396e-01, + 8.747955156940626642e-01, + 8.738424886628276544e-01, + 8.728797863411223990e-01, + 8.719074286777279692e-01, + 8.709254358188718292e-01, + 8.699338281077153567e-01, + 8.689326260838612370e-01, + 8.679218504828314362e-01, + 8.669015222355691552e-01, + 8.658716624679085871e-01, + 8.648322925000503369e-01, + 8.637834338460406158e-01, + 8.627251082132331161e-01, + 8.616573375017505532e-01, + 8.605801438039482054e-01, + 8.594935494038545842e-01, + 8.583975767766348630e-01, + 8.572922485880160037e-01, + 8.561775876937460783e-01, + 8.550536171390092921e-01, + 8.539203601578667646e-01, + 8.527778401726748836e-01, + 8.516260807935129851e-01, + 8.504651058175859424e-01, + 8.492949392286508470e-01, + 8.481156051964116038e-01, + 8.469271280759230747e-01, + 8.457295324069898923e-01, + 8.445228429135611670e-01, + 8.433070845031135354e-01, + 8.420822822660410933e-01, + 8.408484614750260100e-01, + 8.396056475844214662e-01, + 8.383538662296191601e-01, + 8.370931432264129279e-01, + 8.358235045703655830e-01, + 8.345449764361591027e-01, + 8.332575851769530306e-01, + 8.319613573237311099e-01, + 8.306563195846453640e-01, + 8.293424988443554025e-01, + 8.280199221633630646e-01, + 8.266886167773459526e-01, + 8.253486100964876337e-01, + 8.239999297047861937e-01, + 8.226426033593938758e-01, + 8.212766589899133107e-01, + 8.199021246977172828e-01, + 8.185190287552487343e-01, + 8.171273996053307620e-01, + 8.157272658604564075e-01, + 8.143186563020841096e-01, + 8.129015998799332676e-01, + 8.114761257112590442e-01, + 8.100422630801440427e-01, + 8.086000414367682243e-01, + 8.071494903966890400e-01, + 8.056906397400991349e-01, + 8.042235194111070351e-01, + 8.027481595169910777e-01, + 8.012645903274501213e-01, + 7.997728422738685783e-01, + 7.982729459485642387e-01, + 7.967649321040266575e-01, + 7.952488316521624245e-01, + 7.937246756635402134e-01, + 7.921924953666147351e-01, + 7.906523221469667906e-01, + 7.891041875465214517e-01, + 7.875481232627762340e-01, + 7.859841611480169465e-01, + 7.844123332085419786e-01, + 7.828326716038601640e-01, + 7.812452086459110712e-01, + 7.796499767982624229e-01, + 7.780470086753159542e-01, + 7.764363370415053867e-01, + 7.748179948104801928e-01, + 7.731920150443076789e-01, + 7.715584309526551943e-01, + 7.699172758919735626e-01, + 7.682685833646747398e-01, + 7.666123870183109146e-01, + 7.649487206447473930e-01, + 7.632776181793284875e-01, + 7.615991137000481803e-01, + 7.599132414267077973e-01, + 7.582200357200843399e-01, + 7.565195310810692852e-01, + 7.548117621498410257e-01, + 7.530967637050012264e-01, + 7.513745706627268373e-01, + 7.496452180759085593e-01, + 7.479087411332924207e-01, + 7.461651751586176884e-01, + 7.444145556097488958e-01, + 7.426569180778060941e-01, + 7.408922982862901074e-01, + 7.391207320902084543e-01, + 7.373422554751976055e-01, + 7.355569045566335840e-01, + 7.337647155787578868e-01, + 7.319657249137790922e-01, + 7.301599690609852367e-01, + 7.283474846458531937e-01, + 7.265283084191426211e-01, + 7.247024772560038963e-01, + 7.228700281550752837e-01, + 7.210309982375715521e-01, + 7.191854247463771443e-01, + 7.173333450451372384e-01, + 7.154747966173405915e-01, + 7.136098170654050499e-01, + 7.117384441097539538e-01, + 7.098607155879003150e-01, + 7.079766694535134519e-01, + 7.060863437754946181e-01, + 7.041897767370496330e-01, + 7.022870066347511875e-01, + 7.003780718776047021e-01, + 6.984630109861137415e-01, + 6.965418625913292194e-01, + 6.946146654339206972e-01, + 6.926814583632128208e-01, + 6.907422803362553987e-01, + 6.887971704168563969e-01, + 6.868461677746440230e-01, + 6.848893116840982787e-01, + 6.829266415235965004e-01, + 6.809581967744615660e-01, + 6.789840170199873404e-01, + 6.770041419444806641e-01, + 6.750186113322906856e-01, + 6.730274650668458536e-01, + 6.710307431296762548e-01, + 6.690284855994397262e-01, + 6.670207326509497436e-01, + 6.650075245541966495e-01, + 6.629889016733656604e-01, + 6.609649044658548744e-01, + 6.589355734812931686e-01, + 6.569009493605521000e-01, + 6.548610728347569188e-01, + 6.528159847243016900e-01, + 6.507657259378472059e-01, + 6.487103374713369952e-01, + 6.466498604069961242e-01, + 6.445843359123345495e-01, + 6.425138052391472510e-01, + 6.404383097225108123e-01, + 6.383578907797843316e-01, + 6.362725899096030036e-01, + 6.341824486908668179e-01, + 6.320875087817382498e-01, + 6.299878119186311798e-01, + 6.278833999151931522e-01, + 6.257743146613017338e-01, + 6.236605981220407768e-01, + 6.215422923366868968e-01, + 6.194194394176928409e-01, + 6.172920815496674152e-01, + 6.151602609883521922e-01, + 6.130240200596011046e-01, + 6.108834011583562651e-01, + 6.087384467476207872e-01, + 6.065891993574344943e-01, + 6.044357015838404124e-01, + 6.022779960878675842e-01, + 6.001161255944840178e-01, + 5.979501328915760583e-01, + 5.957800608289128830e-01, + 5.936059523171076657e-01, + 5.914278503265888443e-01, + 5.892457978865548451e-01, + 5.870598380839474606e-01, + 5.848700140623979138e-01, + 5.826763690212029001e-01, + 5.804789462142687650e-01, + 5.782777889490804402e-01, + 5.760729405856517271e-01, + 5.738644445354834644e-01, + 5.716523442605190297e-01, + 5.694366832720955118e-01, + 5.672175051299007675e-01, + 5.649948534409220402e-01, + 5.627687718583990195e-01, + 5.605393040807753469e-01, + 5.583064938506450137e-01, + 5.560703849537081966e-01, + 5.538310212177105507e-01, + 5.515884465114002655e-01, + 5.493427047434678023e-01, + 5.470938398614946241e-01, + 5.448418958509020360e-01, + 5.425869167338921439e-01, + 5.403289465683932535e-01, + 5.380680294470076008e-01, + 5.358042094959520885e-01, + 5.335375308740007982e-01, + 5.312680377714298352e-01, + 5.289957744089563985e-01, + 5.267207850366882882e-01, + 5.244431139330546499e-01, + 5.221628054037583677e-01, + 5.198799037807055878e-01, + 5.175944534209612202e-01, + 5.153064987056736879e-01, + 5.130160840390248778e-01, + 5.107232538471692118e-01, + 5.084280525771708303e-01, + 5.061305246959465487e-01, + 5.038307146892031518e-01, + 5.015286670603764652e-01, + 4.992244263295749218e-01, + 4.969180370325161356e-01, + 4.946095437194681921e-01, + 4.922989909541840015e-01, + 4.899864233128516933e-01, + 4.876718853830233624e-01, + 4.853554217625615785e-01, + 4.830370770585796225e-01, + 4.807168958863756725e-01, + 4.783949228683817001e-01, + 4.760712026330969904e-01, + 4.737457798140347620e-01, + 4.714186990486617379e-01, + 4.690900049773344405e-01, + 4.667597422422511966e-01, + 4.644279554863849913e-01, + 4.620946893524336962e-01, + 4.597599884817572535e-01, + 4.574238975133261276e-01, + 4.550864610826618750e-01, + 4.527477238207830434e-01, + 4.504077303531530130e-01, + 4.480665252986199554e-01, + 4.457241532683687835e-01, + 4.433806588648644964e-01, + 4.410360866808032965e-01, + 4.386904812980580992e-01, + 4.363438872866268747e-01, + 4.339963492035851522e-01, + 4.316479115920361376e-01, + 4.292986189800601093e-01, + 4.269485158796667568e-01, + 4.245976467857516812e-01, + 4.222460561750463470e-01, + 4.198937885050729735e-01, + 4.175408882131029231e-01, + 4.151873997151118156e-01, + 4.128333674047376389e-01, + 4.104788356522376391e-01, + 4.081238488034499290e-01, + 4.057684511787542636e-01, + 4.034126870720317060e-01, + 4.010566007496311758e-01, + 3.987002364493300588e-01, + 3.963436383793022544e-01, + 3.939868507170818934e-01, + 3.916299176085331069e-01, + 3.892728831668186840e-01, + 3.869157914713690083e-01, + 3.845586865668559340e-01, + 3.822016124621629984e-01, + 3.798446131293629069e-01, + 3.774877325026881336e-01, + 3.751310144775131805e-01, + 3.727745029093312845e-01, + 3.704182416127326238e-01, + 3.680622743603884639e-01, + 3.657066448820316396e-01, + 3.633513968634422553e-01, + 3.609965739454338851e-01, + 3.586422197228419373e-01, + 3.562883777435115751e-01, + 3.539350915072877468e-01, + 3.515824044650110447e-01, + 3.492303600175108436e-01, + 3.468790015145981065e-01, + 3.445283722540682936e-01, + 3.421785154806974427e-01, + 3.398294743852442457e-01, + 3.374812921034551771e-01, + 3.351340117150671816e-01, + 3.327876762428151336e-01, + 3.304423286514424074e-01, + 3.280980118467101692e-01, + 3.257547686744098892e-01, + 3.234126419193791291e-01, + 3.210716743045173849e-01, + 3.187319084898069810e-01, + 3.163933870713313556e-01, + 3.140561525802987863e-01, + 3.117202474820692792e-01, + 3.093857141751790718e-01, + 3.070525949903712415e-01, + 3.047209321896293677e-01, + 3.023907679652058089e-01, + 3.000621444386648573e-01, + 2.977351036599155676e-01, + 2.954096876062539678e-01, + 2.930859381814076015e-01, + 2.907638972145774048e-01, + 2.884436064594896321e-01, + 2.861251075934408972e-01, + 2.838084422163551501e-01, + 2.814936518498354356e-01, + 2.791807779362223130e-01, + 2.768698618376533860e-01, + 2.745609448351263859e-01, + 2.722540681275621988e-01, + 2.699492728308742207e-01, + 2.676465999770359372e-01, + 2.653460905131571068e-01, + 2.630477853005538380e-01, + 2.607517251138323777e-01, + 2.584579506399626303e-01, + 2.561665024773684407e-01, + 2.538774211350079968e-01, + 2.515907470314657779e-01, + 2.493065204940423107e-01, + 2.470247817578479221e-01, + 2.447455709649018207e-01, + 2.424689281632305682e-01, + 2.401948933059702695e-01, + 2.379235062504720111e-01, + 2.356548067574134042e-01, + 2.333888344899041900e-01, + 2.311256290126076363e-01, + 2.288652297908512490e-01, + 2.266076761897511394e-01, + 2.243530074733340873e-01, + 2.221012628036639069e-01, + 2.198524812399700601e-01, + 2.176067017377827095e-01, + 2.153639631480640526e-01, + 2.131243042163519785e-01, + 2.108877635818975083e-01, + 2.086543797768119768e-01, + 2.064241912252161304e-01, + 2.041972362423890019e-01, + 2.019735530339234475e-01, + 1.997531796948866234e-01, + 1.975361542089770495e-01, + 1.953225144476904152e-01, + 1.931122981694899932e-01, + 1.909055430189743885e-01, + 1.887022865260525595e-01, + 1.865025661051234740e-01, + 1.843064190542557934e-01, + 1.821138825543719975e-01, + 1.799249936684388651e-01, + 1.777397893406555962e-01, + 1.755583063956519529e-01, + 1.733805815376853743e-01, + 1.712066513498422260e-01, + 1.690365522932452125e-01, + 1.668703207062609550e-01, + 1.647079928037134544e-01, + 1.625496046760998015e-01, + 1.603951922888105230e-01, + 1.582447914813536749e-01, + 1.560984379665793786e-01, + 1.539561673299155720e-01, + 1.518180150285969310e-01, + 1.496840163909078092e-01, + 1.475542066154204024e-01, + 1.454286207702433220e-01, + 1.433072937922706958e-01, + 1.411902604864334054e-01, + 1.390775555249584849e-01, + 1.369692134466284628e-01, + 1.348652686560476988e-01, + 1.327657554229089709e-01, + 1.306707078812674727e-01, + 1.285801600288170587e-01, + 1.264941457261690716e-01, + 1.244126986961386766e-01, + 1.223358525230311133e-01, + 1.202636406519352608e-01, + 1.181960963880184096e-01, + 1.161332528958274463e-01, + 1.140751431985919384e-01, + 1.120218001775331595e-01, + 1.099732565711753762e-01, + 1.079295449746630053e-01, + 1.058906978390803943e-01, + 1.038567474707753902e-01, + 1.018277260306897219e-01, + 9.980366553368975879e-02, + 9.778459784790455300e-02, + 9.577055469406584032e-02, + 9.376156764485409079e-02, + 9.175766812424655805e-02, + 8.975888740687235079e-02, + 8.776525661736865602e-02, + 8.577680672974313802e-02, + 8.379356856674115284e-02, + 8.181557279921417014e-02, + 7.984284994549635528e-02, + 7.787543037078317743e-02, + 7.591334428651391741e-02, + 7.395662174976043446e-02, + 7.200529266261787575e-02, + 7.005938677160263028e-02, + 6.811893366705192021e-02, + 6.618396278252910991e-02, + 6.425450339423315060e-02, + 6.233058462041313197e-02, + 6.041223542078567182e-02, + 5.849948459595861322e-02, + 5.659236078685713628e-02, + 5.469089247415612892e-02, + 5.279510797771662378e-02, + 5.090503545602581559e-02, + 4.902070290564224803e-02, + 4.714213816064585783e-02, + 4.526936889209169645e-02, + 4.340242260746868946e-02, + 4.154132665016377346e-02, + 3.968610819892821884e-02, + 3.783679426735115509e-02, + 3.599341170333596185e-02, + 3.415598718858217642e-02, + 3.232454723807156455e-02, + 3.049911819955901035e-02, + 2.867972625306763890e-02, + 2.686639741038932688e-02, + 2.505915751458907478e-02, + 2.325803223951459012e-02, + 2.146304708931060651e-02, + 1.967422739793688383e-02, + 1.789159832869266151e-02, + 1.611518487374387701e-02, + 1.434501185365678888e-02, + 1.258110391693542836e-02, + 1.082348553956342420e-02, + 9.072181024551642312e-03, + 7.327214501490089335e-03, + 5.588609926104382876e-03, + 3.856391079816731595e-03, + 2.130581569313045372e-03, + 4.112048261128918277e-04, +-1.301715893853703891e-03, +-3.008157510666674764e-03, +-4.708097120829565600e-03, +-6.401511997679847077e-03, +-8.088379591793346673e-03, +-9.768677531385444243e-03, +-1.144238362270462092e-02, +-1.310947585042377024e-02, +-1.476993237802585839e-02, +-1.642373154818383557e-02, +-1.807085188313660440e-02, +-1.971127208506028711e-02, +-2.134497103643320792e-02, +-2.297192780039746321e-02, +-2.459212162111552510e-02, +-2.620553192412000687e-02, +-2.781213831666087127e-02, +-2.941192058804676171e-02, +-3.100485870998073712e-02, +-3.259093283689189213e-02, +-3.417012330626258837e-02, +-3.574241063894840337e-02, +-3.730777553949572029e-02, +-3.886619889645268056e-02, +-4.041766178267684750e-02, +-4.196214545563502207e-02, +-4.349963135770099770e-02, +-4.503010111644691060e-02, +-4.655353654492962873e-02, +-4.806991964197219330e-02, +-4.957923259244118031e-02, +-5.108145776751701894e-02, +-5.257657772496109050e-02, +-5.406457520937765077e-02, +-5.554543315246938257e-02, +-5.701913467328958290e-02, +-5.848566307848800799e-02, +-5.994500186255261043e-02, +-6.139713470804509382e-02, +-6.284204548583378902e-02, +-6.427971825531779426e-02, +-6.571013726464908222e-02, +-6.713328695094904208e-02, +-6.854915194051883209e-02, +-6.995771704904532595e-02, +-7.135896728180173010e-02, +-7.275288783384496749e-02, +-7.413946409020417960e-02, +-7.551868162606749368e-02, +-7.689052620696315565e-02, +-7.825498378893407103e-02, +-7.961204051870818255e-02, +-8.096168273386479541e-02, +-8.230389696299372781e-02, +-8.363866992585079763e-02, +-8.496598853350889602e-02, +-8.628583988850112296e-02, +-8.759821128496195208e-02, +-8.890309020876198398e-02, +-9.020046433763699578e-02, +-9.149032154131311878e-02, +-9.277264988162647885e-02, +-9.404743761263691104e-02, +-9.531467318073758022e-02, +-9.657434522475939753e-02, +-9.782644257607100990e-02, +-9.907095425867107341e-02, +-1.003078694892777928e-01, +-1.015371776774138673e-01, +-1.027588684254842066e-01, +-1.039729315288496908e-01, +-1.051793569758964209e-01, +-1.063781349480981131e-01, +-1.075692558200752463e-01, +-1.087527101596490881e-01, +-1.099284887278886014e-01, +-1.110965824791536605e-01, +-1.122569825611343941e-01, +-1.134096803148829935e-01, +-1.145546672748422035e-01, +-1.156919351688680681e-01, +-1.168214759182474166e-01, +-1.179432816377107424e-01, +-1.190573446354401682e-01, +-1.201636574130715424e-01, +-1.212622126656922456e-01, +-1.223530032818331281e-01, +-1.234360223434566306e-01, +-1.245112631259390062e-01, +-1.255787190980464096e-01, +-1.266383839219092644e-01, +-1.276902514529875965e-01, +-1.287343157400339111e-01, +-1.297705710250501576e-01, +-1.307990117432406285e-01, +-1.318196325229574750e-01, +-1.328324281856444466e-01, +-1.338373937457725815e-01, +-1.348345244107727325e-01, +-1.358238155809629033e-01, +-1.368052628494691725e-01, +-1.377788620021447863e-01, +-1.387446090174797586e-01, +-1.397025000665092775e-01, +-1.406525315127157560e-01, +-1.415946999119251926e-01, +-1.425290020122001178e-01, +-1.434554347537262409e-01, +-1.443739952686944883e-01, +-1.452846808811790458e-01, +-1.461874891070080174e-01, +-1.470824176536327244e-01, +-1.479694644199892328e-01, +-1.488486274963550238e-01, +-1.497199051642035539e-01, +-1.505832958960495460e-01, +-1.514387983552939465e-01, +-1.522864113960600008e-01, +-1.531261340630272472e-01, +-1.539579655912597933e-01, +-1.547819054060284583e-01, +-1.555979531226297785e-01, +-1.564061085462002954e-01, +-1.572063716715234871e-01, +-1.579987426828348140e-01, +-1.587832219536197687e-01, +-1.595598100464094560e-01, +-1.603285077125682634e-01, +-1.610893158920797819e-01, +-1.618422357133250944e-01, +-1.625872684928586220e-01, +-1.633244157351789183e-01, +-1.640536791324917476e-01, +-1.647750605644736632e-01, +-1.654885620980248440e-01, +-1.661941859870235405e-01, +-1.668919346720686980e-01, +-1.675818107802248824e-01, +-1.682638171247568815e-01, +-1.689379567048636122e-01, +-1.696042327054044230e-01, +-1.702626484966231479e-01, +-1.709132076338646389e-01, +-1.715559138572904652e-01, +-1.721907710915855649e-01, +-1.728177834456636197e-01, +-1.734369552123671276e-01, +-1.740482908681612872e-01, +-1.746517950728253277e-01, +-1.752474726691367890e-01, +-1.758353286825550810e-01, +-1.764153683208952716e-01, +-1.769875969740035415e-01, +-1.775520202134212855e-01, +-1.781086437920502696e-01, +-1.786574736438100441e-01, +-1.791985158832926639e-01, +-1.797317768054111087e-01, +-1.802572628850462877e-01, +-1.807749807766843297e-01, +-1.812849373140552889e-01, +-1.817871395097633569e-01, +-1.822815945549154382e-01, +-1.827683098187413702e-01, +-1.832472928482144769e-01, +-1.837185513676646009e-01, +-1.841820932783877762e-01, +-1.846379266582506562e-01, +-1.850860597612929148e-01, +-1.855265010173219875e-01, +-1.859592590315060912e-01, +-1.863843425839618873e-01, +-1.868017606293377042e-01, +-1.872115222963938452e-01, +-1.876136368875747640e-01, +-1.880081138785841266e-01, +-1.883949629179472729e-01, +-1.887741938265751485e-01, +-1.891458165973220751e-01, +-1.895098413945400795e-01, +-1.898662785536271713e-01, +-1.902151385805748440e-01, +-1.905564321515070547e-01, +-1.908901701122190653e-01, +-1.912163634777095667e-01, +-1.915350234317103051e-01, +-1.918461613262105736e-01, +-1.921497886809775124e-01, +-1.924459171830743276e-01, +-1.927345586863704607e-01, +-1.930157252110531740e-01, +-1.932894289431289492e-01, +-1.935556822339275507e-01, +-1.938144975995957087e-01, +-1.940658877205916066e-01, +-1.943098654411736514e-01, +-1.945464437688827486e-01, +-1.947756358740273808e-01, +-1.949974550891566127e-01, +-1.952119149085367322e-01, +-1.954190289876166220e-01, +-1.956188111424968790e-01, +-1.958112753493901070e-01, +-1.959964357440767968e-01, +-1.961743066213625097e-01, +-1.963449024345252369e-01, +-1.965082377947637848e-01, +-1.966643274706406652e-01, +-1.968131863875193510e-01, +-1.969548296270003107e-01, +-1.970892724263536289e-01, +-1.972165301779451041e-01, +-1.973366184286627079e-01, +-1.974495528793354937e-01, +-1.975553493841510633e-01, +-1.976540239500707841e-01, +-1.977455927362358201e-01, +-1.978300720533773538e-01, +-1.979074783632173984e-01, +-1.979778282778685006e-01, +-1.980411385592297513e-01, +-1.980974261183778840e-01, +-1.981467080149586224e-01, +-1.981890014565697022e-01, +-1.982243237981424766e-01, +-1.982526925413239660e-01, +-1.982741253338477783e-01, +-1.982886399689092749e-01, +-1.982962543845317727e-01, +-1.982969866629326061e-01, +-1.982908550298856376e-01, +-1.982778778540780218e-01, +-1.982580736464675530e-01, +-1.982314610596337956e-01, +-1.981980588871263271e-01, +-1.981578860628108452e-01, +-1.981109616602116097e-01, +-1.980573048918519430e-01, +-1.979969351085877072e-01, +-1.979298717989431133e-01, +-1.978561345884379818e-01, +-1.977757432389165293e-01, +-1.976887176478709651e-01, +-1.975950778477610914e-01, +-1.974948440053329035e-01, +-1.973880364209327498e-01, +-1.972746755278200759e-01, +-1.971547818914748951e-01, +-1.970283762089042046e-01, +-1.968954793079456533e-01, +-1.967561121465653262e-01, +-1.966102958121587474e-01, +-1.964580515208399492e-01, +-1.962994006167389505e-01, +-1.961343645712849137e-01, +-1.959629649824959630e-01, +-1.957852235742604252e-01, +-1.956011621956174340e-01, +-1.954108028200353953e-01, +-1.952141675446855962e-01, +-1.950112785897158141e-01, +-1.948021582975197619e-01, +-1.945868291320025922e-01, +-1.943653136778486501e-01, +-1.941376346397789276e-01, +-1.939038148418137653e-01, +-1.936638772265284747e-01, +-1.934178448543069084e-01, +-1.931657409025933636e-01, +-1.929075886651437644e-01, +-1.926434115512693501e-01, +-1.923732330850826677e-01, +-1.920970769047395388e-01, +-1.918149667616791398e-01, +-1.915269265198594195e-01, +-1.912329801549935704e-01, +-1.909331517537815881e-01, +-1.906274655131419415e-01, +-1.903159457394377752e-01, +-1.899986168477036386e-01, +-1.896755033608688856e-01, +-1.893466299089792415e-01, +-1.890120212284156775e-01, +-1.886717021611102052e-01, +-1.883256976537637795e-01, +-1.879740327570557090e-01, +-1.876167326248569800e-01, +-1.872538225134368906e-01, +-1.868853277806705182e-01, +-1.865112738852438279e-01, +-1.861316863858549775e-01, +-1.857465909404159565e-01, +-1.853560133052509495e-01, +-1.849599793342928122e-01, +-1.845585149782788814e-01, +-1.841516462839419832e-01, +-1.837393993932036618e-01, +-1.833218005423634112e-01, +-1.828988760612835773e-01, +-1.824706523725789786e-01, +-1.820371559907975889e-01, +-1.815984135216056616e-01, +-1.811544516609651101e-01, +-1.807052971943146902e-01, +-1.802509769957474639e-01, +-1.797915180271848767e-01, +-1.793269473375513623e-01, +-1.788572920619474760e-01, +-1.783825794208199200e-01, +-1.779028367191308468e-01, +-1.774180913455263020e-01, +-1.769283707715027520e-01, +-1.764337025505696988e-01, +-1.759341143174174282e-01, +-1.754296337870740463e-01, +-1.749202887540707296e-01, +-1.744061070915970402e-01, +-1.738871167506614024e-01, +-1.733633457592479721e-01, +-1.728348222214689811e-01, +-1.723015743167230218e-01, +-1.717636302988445329e-01, +-1.712210184952562553e-01, +-1.706737673061213545e-01, +-1.701219052034905754e-01, +-1.695654607304505901e-01, +-1.690044625002734557e-01, +-1.684389391955579962e-01, +-1.678689195673798429e-01, +-1.672944324344317613e-01, +-1.667155066821666698e-01, +-1.661321712619413249e-01, +-1.655444551901550099e-01, +-1.649523875473913603e-01, +-1.643559974775558319e-01, +-1.637553141870143614e-01, +-1.631503669437308346e-01, +-1.625411850764024169e-01, +-1.619277979735971595e-01, +-1.613102350828858056e-01, +-1.606885259099785079e-01, +-1.600627000178563852e-01, +-1.594327870259047986e-01, +-1.587988166090451014e-01, +-1.581608184968653352e-01, +-1.575188224727510355e-01, +-1.568728583730151782e-01, +-1.562229560860272370e-01, +-1.555691455513421584e-01, +-1.549114567588285030e-01, +-1.542499197477955886e-01, +-1.535845646061212433e-01, +-1.529154214693787817e-01, +-1.522425205199613163e-01, +-1.515658919862105658e-01, +-1.508855661415393901e-01, +-1.502015733035588496e-01, +-1.495139438332021009e-01, +-1.488227081338478752e-01, +-1.481278966504471217e-01, +-1.474295398686431557e-01, +-1.467276683138982185e-01, +-1.460223125506163178e-01, +-1.453135031812648192e-01, +-1.446012708454984530e-01, +-1.438856462192825147e-01, +-1.431666600140145407e-01, +-1.424443429756479529e-01, +-1.417187258838134845e-01, +-1.409898395509420199e-01, +-1.402577148213876301e-01, +-1.395223825705493303e-01, +-1.387838737039929771e-01, +-1.380422191565756351e-01, +-1.372974498915662533e-01, +-1.365495968997690046e-01, +-1.357986911986465428e-01, +-1.350447638314421495e-01, +-1.342878458663030183e-01, +-1.335279683954043173e-01, +-1.327651625340714736e-01, +-1.319994594199049298e-01, +-1.312308902119038168e-01, +-1.304594860895899600e-01, +-1.296852782521335790e-01, +-1.289082979174762944e-01, +-1.281285763214592144e-01, +-1.273461447169460803e-01, +-1.265610343729507703e-01, +-1.257732765737639424e-01, +-1.249829026180795249e-01, +-1.241899438181227056e-01, +-1.233944314987776986e-01, +-1.225963969967164835e-01, +-1.217958716595282653e-01, +-1.209928868448487266e-01, +-1.201874739194905700e-01, +-1.193796642585740891e-01, +-1.185694892446600424e-01, +-1.177569802668806259e-01, +-1.169421687200731391e-01, +-1.161250860039137744e-01, +-1.153057635220514771e-01, +-1.144842326812446492e-01, +-1.136605248904952736e-01, +-1.128346715601877132e-01, +-1.120067041012253739e-01, +-1.111766539241694496e-01, +-1.103445524383789011e-01, +-1.095104310511497286e-01, +-1.086743211668582260e-01, +-1.078362541861021262e-01, +-1.069962615048431626e-01, +-1.061543745135536260e-01, +-1.053106245963597309e-01, +-1.044650431301889504e-01, +-1.036176614839176974e-01, +-1.027685110175191041e-01, +-1.019176230812139927e-01, +-1.010650290146204999e-01, +-1.002107601459072267e-01, +-9.935484779094549967e-02, +-9.849732325246546294e-02, +-9.763821781920969944e-02, +-9.677756276509209832e-02, +-9.591538934835500130e-02, +-9.505172881072967983e-02, +-9.418661237659614605e-02, +-9.332007125214691889e-02, +-9.245213662454923598e-02, +-9.158283966111123442e-02, +-9.071221150844796521e-02, +-8.984028329164922555e-02, +-8.896708611344975037e-02, +-8.809265105339894597e-02, +-8.721700916703446771e-02, +-8.634019148505563124e-02, +-8.546222901249865556e-02, +-8.458315272791444572e-02, +-8.370299358254701394e-02, +-8.282178249951348270e-02, +-8.193955037298662758e-02, +-8.105632806737848861e-02, +-8.017214641652514739e-02, +-7.928703622287416874e-02, +-7.840102825667365216e-02, +-7.751415325516218535e-02, +-7.662644192176196190e-02, +-7.573792492527164910e-02, +-7.484863289906408534e-02, +-7.395859644028197899e-02, +-7.306784610903965804e-02, +-7.217641242762286302e-02, +-7.128432587969313339e-02, +-7.039161690949324868e-02, +-6.949831592105389089e-02, +-6.860445327740317956e-02, +-6.771005929977824689e-02, +-6.681516426683822840e-02, +-6.591979841387921035e-02, +-6.502399193205235517e-02, +-6.412777496758288731e-02, +-6.323117762099134120e-02, +-6.233422994631773739e-02, +-6.143696195034705626e-02, +-6.053940359183709874e-02, +-5.964158478074842867e-02, +-5.874353537747725729e-02, +-5.784528519208916031e-02, +-5.694686398355629231e-02, +-5.604830145899593330e-02, +-5.514962727291260886e-02, +-5.425087102644017556e-02, +-5.335206226658920081e-02, +-5.245323048549390549e-02, +-5.155440511966371403e-02, +-5.065561554923501270e-02, +-4.975689109722783443e-02, +-4.885826102880189148e-02, +-4.795975455051824932e-02, +-4.706140080960100752e-02, +-4.616322889320215866e-02, +-4.526526782767004153e-02, +-4.436754657781861316e-02, +-4.347009404619985723e-02, +-4.257293907237917618e-02, +-4.167611043221376710e-02, +-4.077963683713110854e-02, +-3.988354693341313734e-02, +-3.898786930148114699e-02, +-3.809263245518437757e-02, +-3.719786484108952851e-02, +-3.630359483777548940e-02, +-3.540985075512882024e-02, +-3.451666083364200721e-02, +-3.362405324371572218e-02, +-3.273205608496281699e-02, +-3.184069738551512097e-02, +-3.095000510133325000e-02, +-3.006000711551949645e-02, +-2.917073123763230108e-02, +-2.828220520300543661e-02, +-2.739445667206867954e-02, +-2.650751322967108067e-02, +-2.562140238440870077e-02, +-2.473615156795364034e-02, +-2.385178813438674703e-02, +-2.296833935953311243e-02, +-2.208583244030043816e-02, +-2.120429449402067013e-02, +-2.032375255779379775e-02, +-1.944423358783580608e-02, +-1.856576445882891432e-02, +-1.768837196327451358e-02, +-1.681208281085015688e-02, +-1.593692362776880436e-02, +-1.506292095614137141e-02, +-1.419010125334228822e-02, +-1.331849089137860688e-02, +-1.244811615626108259e-02, +-1.157900324738007913e-02, +-1.071117827688339297e-02, +-9.844667269056943046e-03, +-8.979496159710283198e-03, +-8.115690795563606369e-03, +-7.253276933638790752e-03, +-6.392280240653525070e-03, +-5.532726292418784463e-03, +-4.674640573238895459e-03, +-3.818048475316177144e-03, +-2.962975298157581594e-03, +-2.109446247985370584e-03, +-1.257486437150360332e-03, +-4.071208835497625608e-04, + 4.416254899527989955e-04, + 1.288727856103917936e-03, + 2.134161483832644392e-03, + 2.977901738819858837e-03, + 3.819924084065656495e-03, + 4.660204080450173689e-03, + 5.498717387294599357e-03, + 6.335439762916334275e-03, + 7.170347065180650466e-03, + 8.003415252051096843e-03, + 8.834620382134322075e-03, + 9.663938615221290968e-03, + 1.049134621282744352e-02, + 1.131681953872633144e-02, + 1.214033505948173067e-02, + 1.296186934497535817e-02, + 1.378139906893190852e-02, + 1.459890100943853943e-02, + 1.541435204946387319e-02, + 1.622772917737084694e-02, + 1.703900948742618007e-02, + 1.784817018030847649e-02, + 1.865518856360981123e-02, + 1.946004205233562226e-02, + 2.026270816940014055e-02, + 2.106316454611901340e-02, + 2.186138892269620312e-02, + 2.265735914871047640e-02, + 2.345105318359553062e-02, + 2.424244909711654322e-02, + 2.503152506984553799e-02, + 2.581825939362976385e-02, + 2.660263047205869286e-02, + 2.738461682092602906e-02, + 2.816419706868916392e-02, + 2.894134995692274059e-02, + 2.971605434077162142e-02, + 3.048828918939719412e-02, + 3.125803358642074981e-02, + 3.202526673036449473e-02, + 3.278996793508710816e-02, + 3.355211663021503976e-02, + 3.431169236157279728e-02, + 3.506867479160614282e-02, + 3.582304369980302688e-02, + 3.657477898311160130e-02, + 3.732386065635161926e-02, + 3.807026885262537047e-02, + 3.881398382372207995e-02, + 3.955498594051913563e-02, + 4.029325569338068624e-02, + 4.102877369255063938e-02, + 4.176152066854230821e-02, + 4.249147747252515761e-02, + 4.321862507670611031e-02, + 4.394294457470727944e-02, + 4.466441718194132104e-02, + 4.538302423598088858e-02, + 4.609874719692400730e-02, + 4.681156764775806778e-02, + 4.752146729471744269e-02, + 4.822842796763708584e-02, + 4.893243162030429944e-02, + 4.963346033080404118e-02, + 5.033149630186199014e-02, + 5.102652186118265126e-02, + 5.171851946178442072e-02, + 5.240747168232848252e-02, + 5.309336122744753861e-02, + 5.377617092806637189e-02, + 5.445588374172065371e-02, + 5.513248275287205291e-02, + 5.580595117321775905e-02, + 5.647627234199695950e-02, + 5.714342972629322948e-02, + 5.780740692133330000e-02, + 5.846818765077928248e-02, + 5.912575576702142760e-02, + 5.978009525146244646e-02, + 6.043119021479914643e-02, + 6.107902489730181878e-02, + 6.172358366908740207e-02, + 6.236485103038832967e-02, + 6.300281161181928158e-02, + 6.363745017463873221e-02, + 6.426875161100566169e-02, + 6.489670094423362345e-02, + 6.552128332903969787e-02, + 6.614248405178961565e-02, + 6.676028853073934233e-02, + 6.737468231627116722e-02, + 6.798565109112746085e-02, + 6.859318067063896462e-02, + 6.919725700294883375e-02, + 6.979786616923443210e-02, + 7.039499438392284036e-02, + 7.098862799490290865e-02, + 7.157875348373402002e-02, + 7.216535746585003852e-02, + 7.274842669075808066e-02, + 7.332794804223585761e-02, + 7.390390853852199515e-02, + 7.447629533250424427e-02, + 7.504509571190193240e-02, + 7.561029709944663835e-02, + 7.617188705305501240e-02, + 7.672985326600156863e-02, + 7.728418356708499637e-02, + 7.783486592078980859e-02, + 7.838188842744558960e-02, + 7.892523932338159354e-02, + 7.946490698107566697e-02, + 8.000087990930167259e-02, + 8.053314675327025163e-02, + 8.106169629476690786e-02, + 8.158651745228566454e-02, + 8.210759928115832218e-02, + 8.262493097367956674e-02, + 8.313850185922837255e-02, + 8.364830140438496431e-02, + 8.415431921304285245e-02, + 8.465654502651848157e-02, + 8.515496872365528602e-02, + 8.564958032092395701e-02, + 8.614036997251864336e-02, + 8.662732797044912780e-02, + 8.711044474462915910e-02, + 8.758971086295898323e-02, + 8.806511703140673664e-02, + 8.853665409408212339e-02, + 8.900431303330950950e-02, + 8.946808496969338442e-02, + 8.992796116218310098e-02, + 9.038393300813062081e-02, + 9.083599204334591448e-02, + 9.128412994214787912e-02, + 9.172833851741038491e-02, + 9.216860972060436641e-02, + 9.260493564183765181e-02, + 9.303730850988797818e-02, + 9.346572069223295365e-02, + 9.389016469507693863e-02, + 9.431063316337252866e-02, + 9.472711888083733267e-02, + 9.513961476997029321e-02, + 9.554811389205820904e-02, + 9.595260944718277119e-02, + 9.635309477422218660e-02, + 9.674956335084826387e-02, + 9.714200879351844731e-02, + 9.753042485746703238e-02, + 9.791480543668885927e-02, + 9.829514456392052235e-02, + 9.867143641061781878e-02, + 9.904367528692763212e-02, + 9.941185564165799793e-02, + 9.977597206224188275e-02, + 1.001360192746983263e-01, + 1.004919921435895591e-01, + 1.008438856719724164e-01, + 1.011916950013485306e-01, + 1.015354154116073354e-01, + 1.018750423209683204e-01, + 1.022105712859157911e-01, + 1.025419980011329085e-01, + 1.028693182994293021e-01, + 1.031925281516662546e-01, + 1.035116236666767803e-01, + 1.038266010911824133e-01, + 1.041374568097056669e-01, + 1.044441873444791474e-01, + 1.047467893553492291e-01, + 1.050452596396778127e-01, + 1.053395951322381868e-01, + 1.056297929051085993e-01, + 1.059158501675602909e-01, + 1.061977642659436560e-01, + 1.064755326835677279e-01, + 1.067491530405779016e-01, + 1.070186230938299510e-01, + 1.072839407367579129e-01, + 1.075451039992403046e-01, + 1.078021110474614019e-01, + 1.080549601837691998e-01, + 1.083036498465280856e-01, + 1.085481786099699586e-01, + 1.087885451840396034e-01, + 1.090247484142371631e-01, + 1.092567872814559082e-01, + 1.094846609018174932e-01, + 1.097083685265021202e-01, + 1.099279095415756358e-01, + 1.101432834678127276e-01, + 1.103544899605155838e-01, + 1.105615288093303034e-01, + 1.107643999380577282e-01, + 1.109631034044619990e-01, + 1.111576394000742957e-01, + 1.113480082499938295e-01, + 1.115342104126838263e-01, + 1.117162464797655103e-01, + 1.118941171758056075e-01, + 1.120678233581040434e-01, + 1.122373660164741466e-01, + 1.124027462730216587e-01, + 1.125639653819188457e-01, + 1.127210247291753065e-01, + 1.128739258324051309e-01, + 1.130226703405906863e-01, + 1.131672600338419626e-01, + 1.133076968231531700e-01, + 1.134439827501550480e-01, + 1.135761199868644267e-01, + 1.137041108354286401e-01, + 1.138279577278690502e-01, + 1.139476632258167033e-01, + 1.140632300202501642e-01, + 1.141746609312234984e-01, + 1.142819589075965009e-01, + 1.143851270267569054e-01, + 1.144841684943423976e-01, + 1.145790866439563016e-01, + 1.146698849368823908e-01, + 1.147565669617940376e-01, + 1.148391364344608367e-01, + 1.149175971974534943e-01, + 1.149919532198401817e-01, + 1.150622085968862202e-01, + 1.151283675497450365e-01, + 1.151904344251484247e-01, + 1.152484136950913812e-01, + 1.153023099565165382e-01, + 1.153521279309927400e-01, + 1.153978724643902054e-01, + 1.154395485265540811e-01, + 1.154771612109735945e-01, + 1.155107157344481272e-01, + 1.155402174367492762e-01, + 1.155656717802802796e-01, + 1.155870843497332628e-01, + 1.156044608517408645e-01, + 1.156178071145261832e-01, + 1.156271290875492269e-01, + 1.156324328411498237e-01, + 1.156337245661875623e-01, + 1.156310105736796240e-01, + 1.156242972944318131e-01, + 1.156135912786717401e-01, + 1.155988991956739681e-01, + 1.155802278333856459e-01, + 1.155575840980460067e-01, + 1.155309750138054092e-01, + 1.155004077223396458e-01, + 1.154658894824609344e-01, + 1.154274276697283830e-01, + 1.153850297760513205e-01, + 1.153387034092934887e-01, + 1.152884562928717105e-01, + 1.152342962653528091e-01, + 1.151762312800465454e-01, + 1.151142694045968057e-01, + 1.150484188205689456e-01, + 1.149786878230339149e-01, + 1.149050848201512154e-01, + 1.148276183327461980e-01, + 1.147462969938865956e-01, + 1.146611295484560450e-01, + 1.145721248527229452e-01, + 1.144792918739091503e-01, + 1.143826396897532349e-01, + 1.142821774880731500e-01, + 1.141779145663237016e-01, + 1.140698603311543491e-01, + 1.139580242979606889e-01, + 1.138424160904357163e-01, + 1.137230454401182145e-01, + 1.135999221859367581e-01, + 1.134730562737523707e-01, + 1.133424577558981017e-01, + 1.132081367907163821e-01, + 1.130701036420929950e-01, + 1.129283686789885194e-01, + 1.127829423749675680e-01, + 1.126338353077252358e-01, + 1.124810581586112579e-01, + 1.123246217121506435e-01, + 1.121645368555623107e-01, + 1.120008145782764308e-01, + 1.118334659714461665e-01, + 1.116625022274604639e-01, + 1.114879346394518772e-01, + 1.113097746008028244e-01, + 1.111280336046494149e-01, + 1.109427232433825294e-01, + 1.107538552081471228e-01, + 1.105614412883377251e-01, + 1.103654933710936092e-01, + 1.101660234407898648e-01, + 1.099630435785269866e-01, + 1.097565659616171196e-01, + 1.095466028630702332e-01, + 1.093331666510749256e-01, + 1.091162697884799915e-01, + 1.088959248322710210e-01, + 1.086721444330465552e-01, + 1.084449413344920066e-01, + 1.082143283728496802e-01, + 1.079803184763889062e-01, + 1.077429246648720779e-01, + 1.075021600490196488e-01, + 1.072580378299725218e-01, + 1.070105712987531182e-01, + 1.067597738357224380e-01, + 1.065056589100376316e-01, + 1.062482400791050774e-01, + 1.059875309880336097e-01, + 1.057235453690833632e-01, + 1.054562970411151712e-01, + 1.051857999090357876e-01, + 1.049120679632426917e-01, + 1.046351152790657157e-01, + 1.043549560162079365e-01, + 1.040716044181830002e-01, + 1.037850748117533639e-01, + 1.034953816063630683e-01, + 1.032025392935715102e-01, + 1.029065624464844120e-01, + 1.026074657191820699e-01, + 1.023052638461480757e-01, + 1.019999716416930963e-01, + 1.016916039993806808e-01, + 1.013801758914470580e-01, + 1.010657023682232231e-01, + 1.007481985575529870e-01, + 1.004276796642093739e-01, + 1.001041609693105461e-01, + 9.977765782973362085e-02, + 9.944818567752557181e-02, + 9.911576001931479696e-02, + 9.878039643571960571e-02, + 9.844211058075447163e-02, + 9.810091818123778395e-02, + 9.775683503619382597e-02, + 9.740987701625695994e-02, + 9.706006006307223155e-02, + 9.670740018869518340e-02, + 9.635191347499004466e-02, + 9.599361607302604738e-02, + 9.563252420247460306e-02, + 9.526865415100128909e-02, + 9.490202227365962528e-02, + 9.453264499228233864e-02, + 9.416053879487110145e-02, + 9.378572023498490950e-02, + 9.340820593112907078e-02, + 9.302801256613879577e-02, + 9.264515688656607684e-02, + 9.225965570206304256e-02, + 9.187152588476360515e-02, + 9.148078436866510788e-02, + 9.108744814900887610e-02, + 9.069153428165842301e-02, + 9.029305988247791903e-02, + 8.989204212670820482e-02, + 8.948849824834312350e-02, + 8.908244553950339650e-02, + 8.867390134981041616e-02, + 8.826288308575909458e-02, + 8.784940821008821454e-02, + 8.743349424115216817e-02, + 8.701515875228980901e-02, + 8.659441937119286004e-02, + 8.617129377927386369e-02, + 8.574579971103250819e-02, + 8.531795495342238411e-02, + 8.488777734521436857e-02, + 8.445528477636236875e-02, + 8.402049518736558198e-02, + 8.358342656863104736e-02, + 8.314409695983582260e-02, + 8.270252444928742619e-02, + 8.225872717328426564e-02, + 8.181272331547521925e-02, + 8.136453110621788554e-02, + 8.091416882193715188e-02, + 8.046165478448212560e-02, + 8.000700736048345363e-02, + 7.955024496070883799e-02, + 7.909138603941888446e-02, + 7.863044909372222946e-02, + 7.816745266292945971e-02, + 7.770241532790697625e-02, + 7.723535571043102510e-02, + 7.676629247253963229e-02, + 7.629524431588495526e-02, + 7.582222998108610612e-02, + 7.534726824707928261e-02, + 7.487037793046977252e-02, + 7.439157788488190426e-02, + 7.391088700030996883e-02, + 7.342832420246665770e-02, + 7.294390845213463703e-02, + 7.245765874451400024e-02, + 7.196959410857182993e-02, + 7.147973360639094109e-02, + 7.098809633251808304e-02, + 7.049470141331172501e-02, + 6.999956800629074383e-02, + 6.950271529948102989e-02, + 6.900416251076395280e-02, + 6.850392888722357798e-02, + 6.800203370449309226e-02, + 6.749849626610290865e-02, + 6.699333590282730011e-02, + 6.648657197203076963e-02, + 6.597822385701584968e-02, + 6.546831096636943070e-02, + 6.495685273330933929e-02, + 6.444386861503183239e-02, + 6.392937809205777311e-02, + 6.341340066757955585e-02, + 6.289595586680890582e-02, + 6.237706323632246502e-02, + 6.185674234341029948e-02, + 6.133501277542201258e-02, + 6.081189413911518293e-02, + 6.028740606000180385e-02, + 5.976156818169715834e-02, + 5.923440016526682755e-02, + 5.870592168857491355e-02, + 5.817615244563349719e-02, + 5.764511214594966737e-02, + 5.711282051387563813e-02, + 5.657929728795784569e-02, + 5.604456222028585122e-02, + 5.550863507584274936e-02, + 5.497153563185583347e-02, + 5.443328367714608124e-02, + 5.389389901147991629e-02, + 5.335340144492110165e-02, + 5.281181079718162003e-02, + 5.226914689697428895e-02, + 5.172542958136654156e-02, + 5.118067869513240331e-02, + 5.063491409010693195e-02, + 5.008815562454091430e-02, + 4.954042316245493849e-02, + 4.899173657299552703e-02, + 4.844211572979159608e-02, + 4.789158051030967950e-02, + 4.734015079521310815e-02, + 4.678784646771852462e-02, + 4.623468741295520129e-02, + 4.568069351732450406e-02, + 4.512588466785955044e-02, + 4.457028075158589453e-02, + 4.401390165488382883e-02, + 4.345676726284972841e-02, + 4.289889745865927556e-02, + 4.234031212293234980e-02, + 4.178103113309632882e-02, + 4.122107436275198461e-02, + 4.066046168104092695e-02, + 4.009921295201131913e-02, + 3.953734803398728515e-02, + 3.897488677893685971e-02, + 3.841184903184327593e-02, + 3.784825463007453900e-02, + 3.728412340275675391e-02, + 3.671947517014593348e-02, + 3.615432974300223506e-02, + 3.558870692196561963e-02, + 3.502262649693039381e-02, + 3.445610824642367231e-02, + 3.388917193698297303e-02, + 3.332183732253514441e-02, + 3.275412414377701364e-02, + 3.218605212755724920e-02, + 3.161764098625815395e-02, + 3.104891041717990074e-02, + 3.047988010192603792e-02, + 2.991056970578846036e-02, + 2.934099887713631158e-02, + 2.877118724680330711e-02, + 2.820115442747860371e-02, + 2.763092001309731816e-02, + 2.706050357823376606e-02, + 2.648992467749444052e-02, + 2.591920284491351298e-02, + 2.534835759334986768e-02, + 2.477740841388362605e-02, + 2.420637477521704953e-02, + 2.363527612307361747e-02, + 2.306413187960070638e-02, + 2.249296144277369153e-02, + 2.192178418579965316e-02, + 2.135061945652438550e-02, + 2.077948657684075551e-02, + 2.020840484209705801e-02, + 1.963739352050834427e-02, + 1.906647185256950261e-02, + 1.849565905046804404e-02, + 1.792497429750028112e-02, + 1.735443674748887027e-02, + 1.678406552420035058e-02, + 1.621387972076678008e-02, + 1.564389839910706320e-02, + 1.507414058935030270e-02, + 1.450462528926140665e-02, + 1.393537146366859852e-02, + 1.336639804389102432e-02, + 1.279772392716960021e-02, + 1.222936797609982737e-02, + 1.166134901806436391e-02, + 1.109368584466934385e-02, + 1.052639721118220177e-02, + 9.959501835969834099e-03, + 9.393018399940177704e-03, + 8.826965545985472963e-03, + 8.261361878425896310e-03, + 7.696225962456655287e-03, + 7.131576323596798377e-03, + 6.567431447138396931e-03, + 6.003809777599971101e-03, + 5.440729718179292129e-03, + 4.878209630210759117e-03, + 4.316267832621930103e-03, + 3.754922601394939871e-03, + 3.194192169027075100e-03, + 2.634094723995269137e-03, + 2.074648410222489341e-03, + 1.515871326544439724e-03, + 9.577815261809084118e-04, + 4.003970162065617904e-04, +-1.562642429744725257e-04, +-7.121843381519621981e-04, +-1.267345403832345185e-03, +-1.821729622757877181e-03, +-2.375319226423679153e-03, +-2.928096495594133264e-03, +-3.480043760815640895e-03, +-4.031143402927247175e-03, +-4.581377853570486186e-03, +-5.130729595695702507e-03, +-5.679181164066179205e-03, +-6.226715145760802587e-03, +-6.773314180674660893e-03, +-7.318960962015670473e-03, +-7.863638236801374568e-03, +-8.407328806351688916e-03, +-8.950015526779514508e-03, +-9.491681309480425738e-03, +-1.003230912161858293e-02, +-1.057188198661029345e-02, +-1.111038298460692575e-02, +-1.164779525297362367e-02, +-1.218410198676608130e-02, +-1.271928643920606540e-02, +-1.325333192215328790e-02, +-1.378622180657479435e-02, +-1.431793952301350752e-02, +-1.484846856205270481e-02, +-1.537779247477824920e-02, +-1.590589487323990775e-02, +-1.643275943090778679e-02, +-1.695836988312885568e-02, +-1.748271002757850745e-02, +-1.800576372471216630e-02, +-1.852751489821160419e-02, +-1.904794753543158359e-02, +-1.956704568784189968e-02, +-2.008479347146733748e-02, +-2.060117506732618217e-02, +-2.111617472186435099e-02, +-2.162977674738865083e-02, +-2.214196552249662192e-02, +-2.265272549250304732e-02, +-2.316204116986610509e-02, +-2.366989713460843081e-02, +-2.417627803473664308e-02, +-2.468116858665893310e-02, +-2.518455357559880661e-02, +-2.568641785600618913e-02, +-2.618674635196735143e-02, +-2.668552405761034571e-02, +-2.718273603750876247e-02, +-2.767836742708236139e-02, +-2.817240343299569696e-02, +-2.866482933355291723e-02, +-2.915563047909090072e-02, +-2.964479229236912164e-02, +-3.013230026895627814e-02, +-3.061813997761563683e-02, +-3.110229706068614111e-02, +-3.158475723446103195e-02, +-3.206550628956489346e-02, +-3.254453009132615704e-02, +-3.302181458014773890e-02, +-3.349734577187515883e-02, +-3.397110975816115819e-02, +-3.444309270682747309e-02, +-3.491328086222460214e-02, +-3.538166054558810475e-02, +-3.584821815539138146e-02, +-3.631294016769773259e-02, +-3.677581313650651190e-02, +-3.723682369409982845e-02, +-3.769595855138266338e-02, +-3.815320449822387494e-02, +-3.860854840379085440e-02, +-3.906197721688409868e-02, +-3.951347796626701603e-02, +-3.996303776099318500e-02, +-4.041064379073169149e-02, +-4.085628332608786523e-02, +-4.129994371892273253e-02, +-4.174161240266845846e-02, +-4.218127689264063868e-02, +-4.261892478634904391e-02, +-4.305454376380369458e-02, +-4.348812158781886761e-02, +-4.391964610431411259e-02, +-4.434910524261240217e-02, +-4.477648701573413992e-02, +-4.520177952068980820e-02, +-4.562497093876844573e-02, +-4.604604953582377980e-02, +-4.646500366255647968e-02, +-4.688182175479485569e-02, +-4.729649233377042350e-02, +-4.770900400639280226e-02, +-4.811934546551954739e-02, +-4.852750549022394333e-02, +-4.893347294605966680e-02, +-4.933723678532259127e-02, +-4.973878604730814362e-02, +-5.013810985856800850e-02, +-5.053519743316140650e-02, +-5.093003807290445717e-02, +-5.132262116761681509e-02, +-5.171293619536403846e-02, +-5.210097272269752916e-02, +-5.248672040489194002e-02, +-5.287016898617811350e-02, +-5.325130829997406362e-02, +-5.363012826911270348e-02, +-5.400661890606531235e-02, +-5.438077031316390642e-02, +-5.475257268281816941e-02, +-5.512201629773157141e-02, +-5.548909153111245690e-02, +-5.585378884688277368e-02, +-5.621609879988397757e-02, +-5.657601203607912771e-02, +-5.693351929275265733e-02, +-5.728861139870543989e-02, +-5.764127927444902960e-02, +-5.799151393239466296e-02, +-5.833930647704012318e-02, +-5.868464810515328089e-02, +-5.902753010595210292e-02, +-5.936794386128207979e-02, +-5.970588084579041277e-02, +-6.004133262709646784e-02, +-6.037429086595917649e-02, +-6.070474731644233402e-02, +-6.103269382607497129e-02, +-6.135812233601007498e-02, +-6.168102488117883919e-02, +-6.200139359044339049e-02, +-6.231922068674428800e-02, +-6.263449848724655933e-02, +-6.294721940348170508e-02, +-6.325737594148625464e-02, +-6.356496070193826120e-02, +-6.386996638028936968e-02, +-6.417238576689431040e-02, +-6.447221174713720082e-02, +-6.476943730155461376e-02, +-6.506405550595520393e-02, +-6.535605953153604541e-02, +-6.564544264499701243e-02, +-6.593219820864985870e-02, +-6.621631968052585360e-02, +-6.649780061447972679e-02, +-6.677663466028946337e-02, +-6.705281556375505825e-02, +-6.732633716679145564e-02, +-6.759719340752012862e-02, +-6.786537832035696716e-02, +-6.813088603609683547e-02, +-6.839371078199486809e-02, +-6.865384688184511530e-02, +-6.891128875605452564e-02, +-6.916603092171628997e-02, +-6.941806799267744021e-02, +-6.966739467960426924e-02, +-6.991400579004571070e-02, +-7.015789622849051554e-02, +-7.039906099642520565e-02, +-7.063749519238513019e-02, +-7.087319401200507796e-02, +-7.110615274806442176e-02, +-7.133636679053179108e-02, +-7.156383162660372166e-02, +-7.178854284074179248e-02, +-7.201049611470679290e-02, +-7.222968722758806026e-02, +-7.244611205583206814e-02, +-7.265976657326482513e-02, +-7.287064685111470375e-02, +-7.307874905802826115e-02, +-7.328406946008640677e-02, +-7.348660442081482447e-02, +-7.368635040119259072e-02, +-7.388330395965721220e-02, +-7.407746175210652706e-02, +-7.426882053189751143e-02, +-7.445737714984203282e-02, +-7.464312855419916182e-02, +-7.482607179066477765e-02, +-7.500620400235745444e-02, +-7.518352242980172462e-02, +-7.535802441090819204e-02, +-7.552970738095023118e-02, +-7.569856887253761935e-02, +-7.586460651558714352e-02, +-7.602781803729012633e-02, +-7.618820126207685728e-02, +-7.634575411157773495e-02, +-7.650047460458174464e-02, +-7.665236085699106416e-02, +-7.680141108177293563e-02, +-7.694762358890945564e-02, +-7.709099678534202249e-02, +-7.723152917491574176e-02, +-7.736921935831750363e-02, +-7.750406603301283892e-02, +-7.763606799318044371e-02, +-7.776522412964197162e-02, +-7.789153342978868966e-02, +-7.801499497750735701e-02, +-7.813560795310030282e-02, +-7.825337163320410239e-02, +-7.836828539070507527e-02, +-7.848034869465121688e-02, +-7.858956111016091040e-02, +-7.869592229833052843e-02, +-7.879943201613610892e-02, +-7.890009011633403180e-02, +-7.899789654735855926e-02, +-7.909285135321561522e-02, +-7.918495467337399729e-02, +-7.927420674265373002e-02, +-7.936060789111153146e-02, +-7.944415854392208876e-02, +-7.952485922125902829e-02, +-7.960271053816962705e-02, +-7.967771320444942684e-02, +-7.974986802451212997e-02, +-7.981917589725705253e-02, +-7.988563781593471802e-02, +-7.994925486800705250e-02, +-8.001002823500755201e-02, +-8.006795919239662052e-02, +-8.012304910941422942e-02, +-8.017529944893107829e-02, +-8.022471176729469022e-02, +-8.027128771417457731e-02, +-8.031502903240339553e-02, +-8.035593755781576808e-02, +-8.039401521908397241e-02, +-8.042926403755103204e-02, +-8.046168612706085244e-02, +-8.049128369378535930e-02, +-8.051805903604918047e-02, +-8.054201454415137185e-02, +-8.056315270018434005e-02, +-8.058147607784947597e-02, +-8.059698734227134509e-02, +-8.060968924980749239e-02, +-8.061958464785648482e-02, +-8.062667647466324750e-02, +-8.063096775912062530e-02, +-8.063246162056990352e-02, +-8.063116126859672106e-02, +-8.062707000282591518e-02, +-8.062019121271238320e-02, +-8.061052837732993193e-02, +-8.059808506515787896e-02, +-8.058286493386304650e-02, +-8.056487173008190783e-02, +-8.054410928919755741e-02, +-8.052058153511557070e-02, +-8.049429248003638071e-02, +-8.046524622422575324e-02, +-8.043344695578176495e-02, +-8.039889895039974144e-02, +-8.036160657113503025e-02, +-8.032157426816183277e-02, +-8.027880657853071755e-02, +-8.023330812592333050e-02, +-8.018508362040356607e-02, +-8.013413785816747570e-02, +-8.008047572129053937e-02, +-8.002410217747082943e-02, +-7.996502227977152211e-02, +-7.990324116636024487e-02, +-7.983876406024549566e-02, +-7.977159626901146605e-02, +-7.970174318454900653e-02, +-7.962921028278552305e-02, +-7.955400312341211200e-02, +-7.947612734960739223e-02, +-7.939558868776043499e-02, +-7.931239294718864241e-02, +-7.922654601985744394e-02, +-7.913805388009254038e-02, +-7.904692258429427132e-02, +-7.895315827064632030e-02, +-7.885676715882442012e-02, +-7.875775554970082526e-02, +-7.865612982504785466e-02, +-7.855189644723831188e-02, +-7.844506195894383749e-02, +-7.833563298283097165e-02, +-7.822361622125473257e-02, +-7.810901845595029369e-02, +-7.799184654772250980e-02, +-7.787210743613204311e-02, +-7.774980813918051792e-02, +-7.762495575299306616e-02, +-7.749755745149848607e-02, +-7.736762048610719422e-02, +-7.723515218538730409e-02, +-7.710015995473767925e-02, +-7.696265127606051470e-02, +-7.682263370742957453e-02, +-7.668011488275798537e-02, +-7.653510251146330989e-02, +-7.638760437813052473e-02, +-7.623762834217213957e-02, +-7.608518233748813586e-02, +-7.593027437212182540e-02, +-7.577291252791458487e-02, +-7.561310496015874461e-02, +-7.545085989724746589e-02, +-7.528618564032441007e-02, +-7.511909056292874476e-02, +-7.494958311064056633e-02, +-7.477767180072351916e-02, +-7.460336522176438945e-02, +-7.442667203331282400e-02, +-7.424760096551691335e-02, +-7.406616081875874724e-02, +-7.388236046328676421e-02, +-7.369620883884638041e-02, +-7.350771495430935554e-02, +-7.331688788730084116e-02, +-7.312373678382456943e-02, +-7.292827085788614050e-02, +-7.273049939111450590e-02, +-7.253043173238218899e-02, +-7.232807729742261882e-02, +-7.212344556844652033e-02, +-7.191654609375608409e-02, +-7.170738848735802584e-02, +-7.149598242857389818e-02, +-7.128233766164919494e-02, +-7.106646399536135916e-02, +-7.084837130262473803e-02, +-7.062806952009438588e-02, +-7.040556864776979784e-02, +-7.018087874859349484e-02, +-6.995400994805141270e-02, +-6.972497243377005771e-02, +-6.949377645511187196e-02, +-6.926043232276914152e-02, +-6.902495040835739115e-02, +-6.878734114400550381e-02, +-6.854761502194529899e-02, +-6.830578259409987585e-02, +-6.806185447166897273e-02, +-6.781584132471454862e-02, +-6.756775388174379726e-02, +-6.731760292929084288e-02, +-6.706539931149697875e-02, +-6.681115392968989264e-02, +-6.655487774196078288e-02, +-6.629658176274041970e-02, +-6.603627706237351347e-02, +-6.577397476669244458e-02, +-6.550968605658825938e-02, +-6.524342216758195756e-02, +-6.497519438939264314e-02, +-6.470501406550616119e-02, +-6.443289259274068148e-02, +-6.415884142081215713e-02, +-6.388287205189886742e-02, +-6.360499604020235231e-02, +-6.332522499150991524e-02, +-6.304357056275446125e-02, +-6.276004446157291972e-02, +-6.247465844586397310e-02, +-6.218742432334468245e-02, +-6.189835395110540595e-02, +-6.160745923516382921e-02, +-6.131475213001792018e-02, +-6.102024463819785693e-02, +-6.072394880981624166e-02, +-6.042587674211781501e-02, +-6.012604057902817128e-02, +-5.982445251070026004e-02, +-5.952112477306180371e-02, +-5.921606964735958573e-02, +-5.890929945970377335e-02, +-5.860082658061234462e-02, +-5.829066342455116456e-02, +-5.797882244947703823e-02, +-5.766531615637713465e-02, +-5.735015708880845942e-02, +-5.703335783243624474e-02, +-5.671493101457135422e-02, +-5.639488930370698677e-02, +-5.607324540905390259e-02, +-5.575001208007627357e-02, +-5.542520210602428637e-02, +-5.509882831546800835e-02, +-5.477090357582996283e-02, +-5.444144079291571986e-02, +-5.411045291044555561e-02, +-5.377795290958351654e-02, +-5.344395380846742732e-02, +-5.310846866173626890e-02, +-5.277151056005919411e-02, +-5.243309262966099754e-02, +-5.209322803185014589e-02, +-5.175192996254258937e-02, +-5.140921165178801572e-02, +-5.106508636329365469e-02, +-5.071956739394813812e-02, +-5.037266807334418034e-02, +-5.002440176330155003e-02, +-4.967478185738846697e-02, +-4.932382178044337345e-02, +-4.897153498809565797e-02, +-4.861793496628525474e-02, +-4.826303523078317309e-02, +-4.790684932671046559e-02, +-4.754939082805644673e-02, +-4.719067333719809132e-02, +-4.683071048441636575e-02, +-4.646951592741498105e-02, +-4.610710335083630096e-02, +-4.574348646577875571e-02, +-4.537867900931220194e-02, +-4.501269474399419851e-02, +-4.464554745738560232e-02, +-4.427725096156497758e-02, +-4.390781909264397653e-02, +-4.353726571028161685e-02, +-4.316560469719835091e-02, +-4.279284995868991304e-02, +-4.241901542214145809e-02, +-4.204411503654013893e-02, +-4.166816277198868990e-02, +-4.129117261921873283e-02, +-4.091315858910295200e-02, +-4.053413471216760905e-02, +-4.015411503810565469e-02, +-3.977311363528829996e-02, +-3.939114459027746179e-02, +-3.900822200733783385e-02, +-3.862436000794840923e-02, +-3.823957273031457216e-02, +-3.785387432888023124e-02, +-3.746727897383874545e-02, +-3.707980085064529335e-02, +-3.669145415952819456e-02, +-3.630225311500043239e-02, +-3.591221194537174560e-02, +-3.552134489225985958e-02, +-3.512966621010248786e-02, +-3.473719016566926415e-02, +-3.434393103757314714e-02, +-3.394990311578257453e-02, +-3.355512070113409601e-02, +-3.315959810484352122e-02, +-3.276334964801892735e-02, +-3.236638966117337535e-02, +-3.196873248373656440e-02, +-3.157039246356881795e-02, +-3.117138395647334193e-02, +-3.077172132570999558e-02, +-3.037141894150807361e-02, +-2.997049118058095832e-02, +-2.956895242563938736e-02, +-2.916681706490596715e-02, +-2.876409949163010252e-02, +-2.836081410360228802e-02, +-2.795697530266948866e-02, +-2.755259749425129426e-02, +-2.714769508685485611e-02, +-2.674228249159179074e-02, +-2.633637412169491376e-02, +-2.592998439203500136e-02, +-2.552312771863811044e-02, +-2.511581851820446007e-02, +-2.470807120762553641e-02, +-2.429990020350381030e-02, +-2.389131992167181293e-02, +-2.348234477671209269e-02, +-2.307298918147697095e-02, +-2.266326754661033421e-02, +-2.225319428006821559e-02, +-2.184278378664095133e-02, +-2.143205046747626366e-02, +-2.102100871960134801e-02, +-2.060967293544775300e-02, +-2.019805750237453623e-02, +-1.978617680219405678e-02, +-1.937404521069751098e-02, +-1.896167709718065905e-02, +-1.854908682397107475e-02, +-1.813628874595625898e-02, +-1.772329721011116355e-02, +-1.731012655502743927e-02, +-1.689679111044398857e-02, +-1.648330519677641826e-02, +-1.606968312464891746e-02, +-1.565593919442648599e-02, +-1.524208769574730837e-02, +-1.482814290705705175e-02, +-1.441411909514261729e-02, +-1.400003051466842605e-02, +-1.358589140771156861e-02, +-1.317171600329985516e-02, +-1.275751851694901899e-02, +-1.234331315020175540e-02, +-1.192911409016795751e-02, +-1.151493550906453230e-02, +-1.110079156375751858e-02, +-1.068669639530485729e-02, +-1.027266412849928666e-02, +-9.858708871413103883e-03, +-9.444844714944151606e-03, +-9.031085732361488622e-03, +-8.617445978853281036e-03, +-8.203939491075741205e-03, +-7.790580286701910551e-03, +-7.377382363973220523e-03, +-6.964359701250321527e-03, +-6.551526256566859996e-03, +-6.138895967182455768e-03, +-5.726482749138683132e-03, +-5.314300496814470740e-03, +-4.902363082483721102e-03, +-4.490684355874207702e-03, +-4.079278143726318591e-03, +-3.668158249354945468e-03, +-3.257338452210606448e-03, +-2.846832507443070731e-03, +-2.436654145466198886e-03, +-2.026817071522901085e-03, +-1.617334965252489052e-03, +-1.208221480259231680e-03, +-7.994902436811283670e-04, +-3.911548557610529516e-04, + 1.677111058077926023e-05, + 4.242741101741629079e-04, + 8.313406260238004721e-04, + 1.237957169732863214e-03, + 1.644110281926440586e-03, + 2.049786532671881486e-03, + 2.454972521898892736e-03, + 2.859654879818813826e-03, + 3.263820267340243435e-03, + 3.667455376485580579e-03, + 4.070546930804781749e-03, + 4.473081685789086388e-03, + 4.875046429280869599e-03, + 5.276427981884174861e-03, + 5.677213197373867648e-03, + 6.077388963101055044e-03, + 6.476942200399119463e-03, + 6.875859864988406213e-03, + 7.274128947377056509e-03, + 7.671736473262571673e-03, + 8.068669503931742357e-03, + 8.464915136656972136e-03, + 8.860460505093223013e-03, + 9.255292779672637249e-03, + 9.649399167997339474e-03, + 1.004276691523033928e-02, + 1.043538330448613369e-02, + 1.082723565721786969e-02, + 1.121831133360458831e-02, + 1.160859773293578846e-02, + 1.199808229399418856e-02, + 1.238675249543743848e-02, + 1.277459585617868321e-02, + 1.316159993576333093e-02, + 1.354775233474598758e-02, + 1.393304069506600892e-02, + 1.431745270041902274e-02, + 1.470097607662862807e-02, + 1.508359859201690960e-02, + 1.546530805777043306e-02, + 1.584609232830710285e-02, + 1.622593930164089454e-02, + 1.660483691974278669e-02, + 1.698277316890229802e-02, + 1.735973608008629585e-02, + 1.773571372929534651e-02, + 1.811069423791929200e-02, + 1.848466577309051603e-02, + 1.885761654803489243e-02, + 1.922953482242151582e-02, + 1.960040890271130473e-02, + 1.997022714250126091e-02, + 2.033897794286903746e-02, + 2.070664975271587979e-02, + 2.107323106910502855e-02, + 2.143871043760092049e-02, + 2.180307645260595728e-02, + 2.216631775769328794e-02, + 2.252842304594031286e-02, + 2.288938106025933256e-02, + 2.324918059372480666e-02, + 2.360781048990075875e-02, + 2.396525964316528756e-02, + 2.432151699903265657e-02, + 2.467657155447372519e-02, + 2.503041235823523503e-02, + 2.538302851115518607e-02, + 2.573440916647813659e-02, + 2.608454353016740820e-02, + 2.643342086121521634e-02, + 2.678103047195084033e-02, + 2.712736172834807891e-02, + 2.747240405032783800e-02, + 2.781614691206098916e-02, + 2.815857984226893818e-02, + 2.849969242452052992e-02, + 2.883947429752827668e-02, + 2.917791515544300093e-02, + 2.951500474814375274e-02, + 2.985073288152844187e-02, + 3.018508941780147226e-02, + 3.051806427575786199e-02, + 3.084964743106703364e-02, + 3.117982891655382907e-02, + 3.150859882247699501e-02, + 3.183594729680571528e-02, + 3.216186454549446044e-02, + 3.248634083275445811e-02, + 3.280936648132455613e-02, + 3.313093187273905005e-02, + 3.345102744759234636e-02, + 3.376964370580342462e-02, + 3.408677120687665651e-02, + 3.440240057016114711e-02, + 3.471652247510688405e-02, + 3.502912766151942275e-02, + 3.534020692981312828e-02, + 3.564975114125976813e-02, + 3.595775121823711895e-02, + 3.626419814447476991e-02, + 3.656908296529646357e-02, + 3.687239678786174979e-02, + 3.717413078140495430e-02, + 3.747427617747067785e-02, + 3.777282427014849731e-02, + 3.806976641630491903e-02, + 3.836509403581284117e-02, + 3.865879861177835830e-02, + 3.895087169076628941e-02, + 3.924130488302231268e-02, + 3.953008986269310882e-02, + 3.981721836804547054e-02, + 4.010268220168012460e-02, + 4.038647323074603945e-02, + 4.066858338715204774e-02, + 4.094900466777352810e-02, + 4.122772913466016265e-02, + 4.150474891523963511e-02, + 4.178005620251827590e-02, + 4.205364325528090919e-02, + 4.232550239828787586e-02, + 4.259562602246853152e-02, + 4.286400658511372447e-02, + 4.313063661006582422e-02, + 4.339550868790523208e-02, + 4.365861547613541366e-02, + 4.391994969936587057e-02, + 4.417950414949153165e-02, + 4.443727168587049969e-02, + 4.469324523549987604e-02, + 4.494741779318756764e-02, + 4.519978242172353888e-02, + 4.545033225204764271e-02, + 4.569906048341459970e-02, + 4.594596038355773515e-02, + 4.619102528884996839e-02, + 4.643424860446098562e-02, + 4.667562380451385079e-02, + 4.691514443223870207e-02, + 4.715280410012290258e-02, + 4.738859649005978947e-02, + 4.762251535349541764e-02, + 4.785455451157124424e-02, + 4.808470785526570285e-02, + 4.831296934553317574e-02, + 4.853933301343992673e-02, + 4.876379296029758476e-02, + 4.898634335779545462e-02, + 4.920697844812826210e-02, + 4.942569254412320506e-02, + 4.964248002936416659e-02, + 4.985733535831241015e-02, + 5.007025305642578278e-02, + 5.028122772027596166e-02, + 5.049025401766154414e-02, + 5.069732668771988887e-02, + 5.090244054103713195e-02, + 5.110559045975310299e-02, + 5.130677139766675471e-02, + 5.150597838033766501e-02, + 5.170320650518459016e-02, + 5.189845094158274802e-02, + 5.209170693095781929e-02, + 5.228296978687782537e-02, + 5.247223489514173111e-02, + 5.265949771386699285e-02, + 5.284475377357324144e-02, + 5.302799867726451510e-02, + 5.320922810050816160e-02, + 5.338843779151170033e-02, + 5.356562357119716566e-02, + 5.374078133327277879e-02, + 5.391390704430269742e-02, + 5.408499674377323374e-02, + 5.425404654415744155e-02, + 5.442105263097726797e-02, + 5.458601126286231203e-02, + 5.474891877160698028e-02, + 5.490977156222513061e-02, + 5.506856611300162130e-02, + 5.522529897554126488e-02, + 5.537996677481685920e-02, + 5.553256620921263181e-02, + 5.568309405056650480e-02, + 5.583154714420941050e-02, + 5.597792240900273386e-02, + 5.612221683737193823e-02, + 5.626442749533908799e-02, + 5.640455152255246379e-02, + 5.654258613231323560e-02, + 5.667852861160008887e-02, + 5.681237632109142205e-02, + 5.694412669518481712e-02, + 5.707377724201420643e-02, + 5.720132554346434028e-02, + 5.732676925518302019e-02, + 5.745010610659129213e-02, + 5.757133390088959440e-02, + 5.769045051506336425e-02, + 5.780745389988525829e-02, + 5.792234207991459743e-02, + 5.803511315349475091e-02, + 5.814576529274893130e-02, + 5.825429674357097964e-02, + 5.836070582561687925e-02, + 5.846499093229173827e-02, + 5.856715053073460048e-02, + 5.866718316180138948e-02, + 5.876508744004534796e-02, + 5.886086205369428503e-02, + 5.895450576462613057e-02, + 5.904601740834193591e-02, + 5.913539589393613377e-02, + 5.922264020406479285e-02, + 5.930774939491100656e-02, + 5.939072259614806143e-02, + 5.947155901090028784e-02, + 5.955025791570162791e-02, + 5.962681866045101142e-02, + 5.970124066836630244e-02, + 5.977352343593546335e-02, + 5.984366653286506826e-02, + 5.991166960202637393e-02, + 5.997753235939982247e-02, + 6.004125459401647019e-02, + 6.010283616789632161e-02, + 6.016227701598628880e-02, + 6.021957714609379314e-02, + 6.027473663881898619e-02, + 6.032775564748447950e-02, + 6.037863439806250010e-02, + 6.042737318909979088e-02, + 6.047397239164051252e-02, + 6.051843244914587028e-02, + 6.056075387741225585e-02, + 6.060093726448704393e-02, + 6.063898327058152987e-02, + 6.067489262798180655e-02, + 6.070866614095681013e-02, + 6.074030468566572749e-02, + 6.076980921006056718e-02, + 6.079718073378870963e-02, + 6.082242034809136333e-02, + 6.084552921570155620e-02, + 6.086650857073751947e-02, + 6.088535971859639073e-02, + 6.090208403584315006e-02, + 6.091668297009911887e-02, + 6.092915803992764168e-02, + 6.093951083471679103e-02, + 6.094774301456059445e-02, + 6.095385631013817973e-02, + 6.095785252258952014e-02, + 6.095973352339040252e-02, + 6.095950125422446020e-02, + 6.095715772685216666e-02, + 6.095270502297909371e-02, + 6.094614529412142878e-02, + 6.093748076146855014e-02, + 6.092671371574377714e-02, + 6.091384651706437114e-02, + 6.089888159479672769e-02, + 6.088182144741112467e-02, + 6.086266864233412510e-02, + 6.084142581579844722e-02, + 6.081809567269076677e-02, + 6.079268098639753481e-02, + 6.076518459864802685e-02, + 6.073560941935628871e-02, + 6.070395842646030687e-02, + 6.067023466575852120e-02, + 6.063444125074543556e-02, + 6.059658136244441134e-02, + 6.055665824923797680e-02, + 6.051467522669694288e-02, + 6.047063567740684764e-02, + 6.042454305079233978e-02, + 6.037640086293942498e-02, + 6.032621269641617184e-02, + 6.027398220009076019e-02, + 6.021971308894749630e-02, + 6.016340914390131550e-02, + 6.010507421160960623e-02, + 6.004471220428249378e-02, + 5.998232709949078562e-02, + 5.991792293997202229e-02, + 5.985150383343446068e-02, + 5.978307395235912813e-02, + 5.971263753380014888e-02, + 5.964019887918215607e-02, + 5.956576235409705850e-02, + 5.948933238809774732e-02, + 5.941091347449023452e-02, + 5.933051017012427875e-02, + 5.924812709518093717e-02, + 5.916376893295986761e-02, + 5.907744042966268233e-02, + 5.898914639417618400e-02, + 5.889889169785273576e-02, + 5.880668127428869546e-02, + 5.871252011910215590e-02, + 5.861641328970636222e-02, + 5.851836590508399660e-02, + 5.841838314555813233e-02, + 5.831647025256120331e-02, + 5.821263252840275237e-02, + 5.810687533603505622e-02, + 5.799920409881725858e-02, + 5.788962430027688733e-02, + 5.777814148387054594e-02, + 5.766476125274203751e-02, + 5.754948926947907328e-02, + 5.743233125586839904e-02, + 5.731329299264863175e-02, + 5.719238031926159038e-02, + 5.706959913360234310e-02, + 5.694495539176641641e-02, + 5.681845510779613001e-02, + 5.669010435342562715e-02, + 5.655990925782287959e-02, + 5.642787600733064485e-02, + 5.629401084520669479e-02, + 5.615832007136059567e-02, + 5.602081004208959297e-02, + 5.588148716981398284e-02, + 5.574035792280878504e-02, + 5.559742882493519389e-02, + 5.545270645536990589e-02, + 5.530619744833302487e-02, + 5.515790849281448222e-02, + 5.500784633229773013e-02, + 5.485601776448425365e-02, + 5.470242964101335731e-02, + 5.454708886718351996e-02, + 5.439000240166987077e-02, + 5.423117725624113789e-02, + 5.407062049547496640e-02, + 5.390833923647164044e-02, + 5.374434064856668802e-02, + 5.357863195304077980e-02, + 5.341122042282967636e-02, + 5.324211338223209383e-02, + 5.307131820661516175e-02, + 5.289884232212019310e-02, + 5.272469320536576215e-02, + 5.254887838314915849e-02, + 5.237140543214788974e-02, + 5.219228197861830454e-02, + 5.201151569809316089e-02, + 5.182911431507822991e-02, + 5.164508560274734539e-02, + 5.145943738263589889e-02, + 5.127217752433306519e-02, + 5.108331394517288265e-02, + 5.089285460992350185e-02, + 5.070080753047587901e-02, + 5.050718076553058211e-02, + 5.031198242028282752e-02, + 5.011522064610827998e-02, + 4.991690364024480020e-02, + 4.971703964547460192e-02, + 4.951563694980555541e-02, + 4.931270388614966693e-02, + 4.910824883200155810e-02, + 4.890228020911547430e-02, + 4.869480648318098848e-02, + 4.848583616349690789e-02, + 4.827537780264567341e-02, + 4.806343999616458085e-02, + 4.785003138221756436e-02, + 4.763516064126436383e-02, + 4.741883649572962989e-02, + 4.720106770967028714e-02, + 4.698186308844284204e-02, + 4.676123147836757504e-02, + 4.653918176639375986e-02, + 4.631572287976245400e-02, + 4.609086378566933789e-02, + 4.586461349092482709e-02, + 4.563698104161497543e-02, + 4.540797552276072679e-02, + 4.517760605797500190e-02, + 4.494588180912080511e-02, + 4.471281197596696511e-02, + 4.447840579584280002e-02, + 4.424267254329306009e-02, + 4.400562152973085811e-02, + 4.376726210308929527e-02, + 4.352760364747376015e-02, + 4.328665558281200032e-02, + 4.304442736450318774e-02, + 4.280092848306752545e-02, + 4.255616846379326607e-02, + 4.231015686638363998e-02, + 4.206290328460323552e-02, + 4.181441734592326182e-02, + 4.156470871116545174e-02, + 4.131378707414628398e-02, + 4.106166216131934554e-02, + 4.080834373141728477e-02, + 4.055384157509318854e-02, + 4.029816551456149448e-02, + 4.004132540323636358e-02, + 3.978333112537235650e-02, + 3.952419259570155718e-02, + 3.926391975907111975e-02, + 3.900252259008071126e-02, + 3.874001109271837245e-02, + 3.847639529999571234e-02, + 3.821168527358311667e-02, + 3.794589110344370742e-02, + 3.767902290746692751e-02, + 3.741109083110142480e-02, + 3.714210504698767235e-02, + 3.687207575458907594e-02, + 3.660101317982328295e-02, + 3.632892757469322748e-02, + 3.605582921691673215e-02, + 3.578172840955531897e-02, + 3.550663548064450503e-02, + 3.523056078282122555e-02, + 3.495351469295160385e-02, + 3.467550761175898499e-02, + 3.439654996345063720e-02, + 3.411665219534355808e-02, + 3.383582477749137035e-02, + 3.355407820230967703e-02, + 3.327142298420013994e-02, + 3.298786965917676478e-02, + 3.270342878448915386e-02, + 3.241811093824626538e-02, + 3.213192671904098463e-02, + 3.184488674557200971e-02, + 3.155700165626729864e-02, + 3.126828210890678778e-02, + 3.097873878024409722e-02, + 3.068838236562784413e-02, + 3.039722357862456592e-02, + 3.010527315063872555e-02, + 2.981254183053381676e-02, + 2.951904038425356633e-02, + 2.922477959444228293e-02, + 2.892977026006430391e-02, + 2.863402319602474308e-02, + 2.833754923278945792e-02, + 2.804035921600333756e-02, + 2.774246400611119281e-02, + 2.744387447797607196e-02, + 2.714460152049846114e-02, + 2.684465603623512747e-02, + 2.654404894101841661e-02, + 2.624279116357395789e-02, + 2.594089364514005208e-02, + 2.563836733908565410e-02, + 2.533522321052872339e-02, + 2.503147223595478602e-02, + 2.472712540283522956e-02, + 2.442219370924449476e-02, + 2.411668816347972699e-02, + 2.381061978367808585e-02, + 2.350399959743439127e-02, + 2.319683864142038643e-02, + 2.288914796100240470e-02, + 2.258093860985876597e-02, + 2.227222164959932402e-02, + 2.196300814938328960e-02, + 2.165330918553663025e-02, + 2.134313584117212420e-02, + 2.103249920580676363e-02, + 2.072141037498076085e-02, + 2.040988044987618669e-02, + 2.009792053693617089e-02, + 1.978554174748349895e-02, + 1.947275519734028779e-02, + 1.915957200644721053e-02, + 1.884600329848249572e-02, + 1.853206020048260572e-02, + 1.821775384246182572e-02, + 1.790309535703187363e-02, + 1.758809587902336255e-02, + 1.727276654510595533e-02, + 1.695711849340873420e-02, + 1.664116286314245435e-02, + 1.632491079422064909e-02, + 1.600837342688059273e-02, + 1.569156190130669565e-02, + 1.537448735725228249e-02, + 1.505716093366207993e-02, + 1.473959376829560471e-02, + 1.442179699735095418e-02, + 1.410378175508775721e-02, + 1.378555917345238545e-02, + 1.346714038170172129e-02, + 1.314853650602847319e-02, + 1.282975866918687098e-02, + 1.251081799011815807e-02, + 1.219172558357715756e-02, + 1.187249255975839773e-02, + 1.155313002392431912e-02, + 1.123364907603253797e-02, + 1.091406081036339765e-02, + 1.059437631514981160e-02, + 1.027460667220603252e-02, + 9.954762956556636663e-03, + 9.634856236068070276e-03, + 9.314897571078967903e-03, + 8.994898014030819344e-03, + 8.674868609101299421e-03, + 8.354820391836078122e-03, + 8.034764388781564029e-03, + 7.714711617119713802e-03, + 7.394673084301857206e-03, + 7.074659787683494454e-03, + 6.754682714160666068e-03, + 6.434752839805614986e-03, + 6.114881129504146084e-03, + 5.795078536593415049e-03, + 5.475356002500293175e-03, + 5.155724456379775535e-03, + 4.836194814755938320e-03, + 4.516777981161897854e-03, + 4.197484845780509455e-03, + 3.878326285087576025e-03, + 3.559313161494014922e-03, + 3.240456322988873126e-03, + 2.921766602784826514e-03, + 2.603254818962751505e-03, + 2.284931774117096841e-03, + 1.966808255003778955e-03, + 1.648895032187144708e-03, + 1.331202859688308468e-03, + 1.013742474634615233e-03, + 6.965245969101002471e-04, + 3.795599288058420953e-04, + 6.285915467254162275e-05, +-2.535670594268588400e-04, +-5.697080660641302280e-04, +-8.855532367899752923e-04, +-1.201091962479042697e-03, +-1.516313653674007103e-03, +-1.831207740926959170e-03, +-2.145763675141579112e-03, +-2.459970927914333604e-03, +-2.773818991872943965e-03, +-3.087297381015633238e-03, +-3.400395631049311831e-03, +-3.713103299725090383e-03, +-4.025409967174431447e-03, +-4.337305236244289389e-03, +-4.648778732829520269e-03, +-4.959820106206004262e-03, +-5.270419029362214194e-03, +-5.580565199328917959e-03, +-5.890248337509066540e-03, +-6.199458190005678430e-03, +-6.508184527948632919e-03, +-6.816417147820781619e-03, +-7.124145871783336623e-03, +-7.431360547998411108e-03, +-7.738051050952144544e-03, +-8.044207281776545940e-03, +-8.349819168568684696e-03, +-8.654876666710175498e-03, +-8.959369759185552978e-03, +-9.263288456897925474e-03, +-9.566622798984828271e-03, +-9.869362853133048161e-03, +-1.017149871589054233e-02, +-1.047302051297883431e-02, +-1.077391839960360233e-02, +-1.107418256076376888e-02, +-1.137380321155924238e-02, +-1.167277059749829461e-02, +-1.197107499480240533e-02, +-1.226870671071055713e-02, +-1.256565608378274086e-02, +-1.286191348420051561e-02, +-1.315746931406783747e-02, +-1.345231400770978067e-02, +-1.374643803197069143e-02, +-1.403983188650943272e-02, +-1.433248610409477292e-02, +-1.462439125089949783e-02, +-1.491553792679147297e-02, +-1.520591676562495914e-02, +-1.549551843553028871e-02, +-1.578433363920156429e-02, +-1.607235311418258802e-02, +-1.635956763315388196e-02, +-1.664596800421410186e-02, +-1.693154507116420224e-02, +-1.721628971378745890e-02, +-1.750019284812929024e-02, +-1.778324542677434811e-02, +-1.806543843912499642e-02, +-1.834676291167382581e-02, +-1.862720990827931161e-02, +-1.890677053043694072e-02, +-1.918543591755002969e-02, +-1.946319724719821134e-02, +-1.974004573540671589e-02, +-2.001597263691005241e-02, +-2.029096924541853170e-02, +-2.056502689388045590e-02, +-2.083813695474322214e-02, +-2.111029084021400978e-02, +-2.138148000251775122e-02, +-2.165169593415407212e-02, +-2.192093016815180317e-02, +-2.218917427832410930e-02, +-2.245641987951886576e-02, +-2.272265862787032145e-02, +-2.298788222104748355e-02, +-2.325208239850166600e-02, +-2.351525094171103003e-02, +-2.377737967442692529e-02, +-2.403846046291355926e-02, +-2.429848521619067461e-02, +-2.455744588627195232e-02, +-2.481533446840275201e-02, +-2.507214300129514961e-02, +-2.532786356736328390e-02, +-2.558248829295506344e-02, +-2.583600934858316586e-02, +-2.608841894915431975e-02, +-2.633970935419615439e-02, +-2.658987286808375122e-02, +-2.683890184026338499e-02, +-2.708678866547472447e-02, +-2.733352578397119440e-02, +-2.757910568174019514e-02, +-2.782352089071823964e-02, +-2.806676398900820671e-02, +-2.830882760109225404e-02, +-2.854970439804405125e-02, +-2.878938709773831012e-02, +-2.902786846506084234e-02, +-2.926514131211338521e-02, +-2.950119849841987760e-02, +-2.973603293112926996e-02, +-2.996963756521692571e-02, +-3.020200540368389586e-02, +-3.043312949775546852e-02, +-3.066300294707679022e-02, +-3.089161889990713755e-02, +-3.111897055331265191e-02, +-3.134505115335641662e-02, +-3.156985399528784708e-02, +-3.179337242372963501e-02, +-3.201559983286290240e-02, +-3.223652966661002400e-02, +-3.245615541881754357e-02, +-3.267447063343414948e-02, +-3.289146890469003132e-02, +-3.310714387727202446e-02, +-3.332148924649831756e-02, +-3.353449875849000283e-02, +-3.374616621034268876e-02, +-3.395648545029412296e-02, +-3.416545037789159300e-02, +-3.437305494415599655e-02, +-3.457929315174609886e-02, +-3.478415905511812733e-02, +-3.498764676068633062e-02, +-3.518975042697974898e-02, +-3.539046426479728474e-02, +-3.558978253736214820e-02, +-3.578769956047301443e-02, +-3.598420970265375080e-02, +-3.617930738530115292e-02, +-3.637298708283200066e-02, +-3.656524332282515277e-02, +-3.675607068616555673e-02, +-3.694546380718333189e-02, +-3.713341737379273477e-02, +-3.731992612762760619e-02, +-3.750498486417733895e-02, +-3.768858843291756494e-02, +-3.787073173744227861e-02, +-3.805140973559151957e-02, +-3.823061743957868047e-02, +-3.840834991611457444e-02, +-3.858460228653117635e-02, +-3.875936972690165877e-02, +-3.893264746815981031e-02, +-3.910443079621696294e-02, +-3.927471505207656699e-02, +-3.944349563194798902e-02, +-3.961076798735697901e-02, +-3.977652762525509672e-02, +-3.994077010812675799e-02, +-4.010349105409504594e-02, +-4.026468613702371968e-02, +-4.042435108661964621e-02, +-4.058248168853173521e-02, +-4.073907378444820149e-02, +-4.089412327219155846e-02, +-4.104762610581318139e-02, +-4.119957829568306196e-02, +-4.134997590858076333e-02, +-4.149881506778189261e-02, +-4.164609195314414314e-02, +-4.179180280119016572e-02, +-4.193594390518966958e-02, +-4.207851161523871314e-02, +-4.221950233833710736e-02, +-4.235891253846401500e-02, +-4.249673873665161389e-02, +-4.263297751105663697e-02, +-4.276762549702978894e-02, +-4.290067938718337970e-02, +-4.303213593145702176e-02, +-4.316199193718126687e-02, +-4.329024426913872375e-02, +-4.341688984962442655e-02, +-4.354192565850283775e-02, +-4.366534873326371330e-02, +-4.378715616907559449e-02, +-4.390734511883770397e-02, +-4.402591279322923268e-02, +-4.414285646075716274e-02, +-4.425817344780190454e-02, +-4.437186113866109505e-02, +-4.448391697559060665e-02, +-4.459433845884520214e-02, +-4.470312314671527620e-02, +-4.481026865556295841e-02, +-4.491577265985596812e-02, +-4.501963289219865910e-02, +-4.512184714336230779e-02, +-4.522241326231255659e-02, +-4.532132915623512254e-02, +-4.541859279055930620e-02, +-4.551420218898043907e-02, +-4.560815543347856993e-02, +-4.570045066433676972e-02, +-4.579108608015700077e-02, +-4.588005993787376557e-02, +-4.596737055276535477e-02, +-4.605301629846447059e-02, +-4.613699560696565838e-02, +-4.621930696863099652e-02, +-4.629994893219394059e-02, +-4.637892010476165477e-02, +-4.645621915181401274e-02, +-4.653184479720262612e-02, +-4.660579582314586244e-02, +-4.667807107022313440e-02, +-4.674866943736685765e-02, +-4.681758988185266007e-02, +-4.688483141928711379e-02, +-4.695039312359397532e-02, +-4.701427412699839964e-02, +-4.707647362000887126e-02, +-4.713699085139760880e-02, +-4.719582512817859649e-02, +-4.725297581558410981e-02, +-4.730844233703894453e-02, +-4.736222417413284147e-02, +-4.741432086659043421e-02, +-4.746473201224087057e-02, +-4.751345726698293082e-02, +-4.756049634475089521e-02, +-4.760584901747635239e-02, +-4.764951511504921661e-02, +-4.769149452527685767e-02, +-4.773178719384044838e-02, +-4.777039312425021556e-02, +-4.780731237779797804e-02, +-4.784254507350924057e-02, +-4.787609138809141573e-02, +-4.790795155588148391e-02, +-4.793812586879121762e-02, +-4.796661467625110836e-02, +-4.799341838515095576e-02, +-4.801853745978074128e-02, +-4.804197242176705407e-02, +-4.806372385001020375e-02, +-4.808379238061719074e-02, +-4.810217870683440589e-02, +-4.811888357897738111e-02, +-4.813390780435974903e-02, +-4.814725224721889962e-02, +-4.815891782864113041e-02, +-4.816890552648405571e-02, +-4.817721637529769063e-02, +-4.818385146624309251e-02, +-4.818881194700976034e-02, +-4.819209902173104271e-02, +-4.819371395089716570e-02, +-4.819365805126699792e-02, +-4.819193269577821959e-02, +-4.818853931345431357e-02, +-4.818347938931162588e-02, +-4.817675446426313013e-02, +-4.816836613502095688e-02, +-4.815831605399711890e-02, +-4.814660592920209925e-02, +-4.813323752414238460e-02, +-4.811821265771498018e-02, +-4.810153320410152228e-02, +-4.808320109265933756e-02, +-4.806321830781184329e-02, +-4.804158688893610946e-02, +-4.801830893024960911e-02, +-4.799338658069447067e-02, +-4.796682204382023140e-02, +-4.793861757766496728e-02, +-4.790877549463466722e-02, +-4.787729816138016486e-02, +-4.784418799867379973e-02, +-4.780944748128269223e-02, +-4.777307913784129001e-02, +-4.773508555072199927e-02, +-4.769546935590419923e-02, +-4.765423324284077944e-02, +-4.761137995432414977e-02, +-4.756691228634986335e-02, +-4.752083308797826894e-02, +-4.747314526119529587e-02, +-4.742385176077097697e-02, +-4.737295559411616036e-02, +-4.732045982113838173e-02, +-4.726636755409471119e-02, +-4.721068195744436424e-02, +-4.715340624769884942e-02, +-4.709454369327053386e-02, +-4.703409761431960601e-02, +-4.697207138259974074e-02, +-4.690846842130179384e-02, +-4.684329220489558826e-02, +-4.677654625897107593e-02, +-4.670823416007649498e-02, +-4.663835953555664493e-02, +-4.656692606338756757e-02, +-4.649393747201126942e-02, +-4.641939754016849440e-02, +-4.634331009672902624e-02, +-4.626567902052154679e-02, +-4.618650824016166251e-02, +-4.610580173387752306e-02, +-4.602356352933524575e-02, +-4.593979770346184183e-02, +-4.585450838226686615e-02, +-4.576769974066238061e-02, +-4.567937600228236250e-02, +-4.558954143929872665e-02, +-4.549820037223782643e-02, +-4.540535716979402642e-02, +-4.531101624864267846e-02, +-4.521518207325108535e-02, +-4.511785915568827798e-02, +-4.501905205543316885e-02, +-4.491876537918113726e-02, +-4.481700378065004570e-02, +-4.471377196038264779e-02, +-4.460907466555085604e-02, +-4.450291668975525639e-02, +-4.439530287282546922e-02, +-4.428623810061761701e-02, +-4.417572730481238857e-02, +-4.406377546270856538e-02, +-4.395038759701863640e-02, +-4.383556877566043702e-02, +-4.371932411154887815e-02, +-4.360165876238526056e-02, +-4.348257793044650599e-02, +-4.336208686237141147e-02, +-4.324019084894727138e-02, +-4.311689522489405013e-02, +-4.299220536864727799e-02, +-4.286612670214035026e-02, +-4.273866469058475170e-02, +-4.260982484224946909e-02, +-4.247961270823868291e-02, +-4.234803388226898030e-02, +-4.221509400044389654e-02, +-4.208079874102885198e-02, +-4.194515382422375066e-02, +-4.180816501193435064e-02, +-4.166983810754284340e-02, +-4.153017895567748252e-02, +-4.138919344197949934e-02, +-4.124688749287076101e-02, +-4.110326707531898605e-02, +-4.095833819660176650e-02, +-4.081210690407020836e-02, +-4.066457928491069851e-02, +-4.051576146590552679e-02, +-4.036565961319268925e-02, +-4.021427993202473378e-02, +-4.006162866652517029e-02, +-3.990771209944581760e-02, +-3.975253655192109020e-02, +-3.959610838322231291e-02, +-3.943843399051047416e-02, +-3.927951980858845893e-02, +-3.911937230965078366e-02, +-3.895799800303442056e-02, +-3.879540343496618721e-02, +-3.863159518831146833e-02, +-3.846657988231934333e-02, +-3.830036417236910157e-02, +-3.813295474971411386e-02, +-3.796435834122510733e-02, +-3.779458170913279486e-02, +-3.762363165076928334e-02, +-3.745151499830794151e-02, +-3.727823861850332321e-02, +-3.710380941242927971e-02, +-3.692823431521626704e-02, +-3.675152029578850760e-02, +-3.657367435659860527e-02, +-3.639470353336279884e-02, +-3.621461489479418927e-02, +-3.603341554233650823e-02, +-3.585111260989409798e-02, +-3.566771326356503458e-02, +-3.548322470136976159e-02, +-3.529765415298060510e-02, +-3.511100887945043519e-02, +-3.492329617294022415e-02, +-3.473452335644471728e-02, +-3.454469778351952625e-02, +-3.435382683800535658e-02, +-3.416191793375215197e-02, +-3.396897851434274584e-02, +-3.377501605281544445e-02, +-3.358003805138540937e-02, +-3.338405204116585978e-02, +-3.318706558188833783e-02, +-3.298908626162218305e-02, +-3.279012169649338226e-02, +-3.259017953040219823e-02, +-3.238926743474049991e-02, +-3.218739310810864174e-02, +-3.198456427603126040e-02, +-3.178078869067160750e-02, +-3.157607413054729084e-02, +-3.137042840024306667e-02, +-3.116385933012424947e-02, +-3.095637477604932727e-02, +-3.074798261908187960e-02, +-3.053869076520074333e-02, +-3.032850714501227757e-02, +-3.011743971345876361e-02, +-2.990549644952865752e-02, +-2.969268535596459799e-02, +-2.947901445897259387e-02, +-2.926449180792852628e-02, +-2.904912547508570198e-02, +-2.883292355528170245e-02, +-2.861589416564302643e-02, +-2.839804544529225122e-02, +-2.817938555505131171e-02, +-2.795992267714690269e-02, +-2.773966501491360176e-02, +-2.751862079249831755e-02, +-2.729679825456143502e-02, +-2.707420566598130532e-02, +-2.685085131155455843e-02, +-2.662674349569844195e-02, +-2.640189054215152931e-02, +-2.617630079367494825e-02, +-2.594998261175176721e-02, +-2.572294437628747446e-02, +-2.549519448530907645e-02, +-2.526674135466419960e-02, +-2.503759341772020253e-02, +-2.480775912506162639e-02, +-2.457724694418877281e-02, +-2.434606535921502238e-02, +-2.411422287056476377e-02, +-2.388172799466880408e-02, +-2.364858926366300573e-02, +-2.341481522508297164e-02, +-2.318041444156099598e-02, +-2.294539549052141553e-02, +-2.270976696387663404e-02, +-2.247353746772122116e-02, +-2.223671562202844676e-02, +-2.199931006034350905e-02, +-2.176132942947965263e-02, +-2.152278238921035911e-02, +-2.128367761196581220e-02, +-2.104402378252490449e-02, +-2.080382959770994342e-02, +-2.056310376607967810e-02, +-2.032185500762339128e-02, +-2.008009205345307607e-02, +-1.983782364549729893e-02, +-1.959505853619383786e-02, +-1.935180548818230331e-02, +-1.910807327399761946e-02, +-1.886387067576157997e-02, +-1.861920648487594074e-02, +-1.837408950171459318e-02, +-1.812852853531673331e-02, +-1.788253240307727948e-02, +-1.763610993044150560e-02, +-1.738926995059542069e-02, +-1.714202130415855285e-02, +-1.689437283887624056e-02, +-1.664633340931207656e-02, +-1.639791187653862406e-02, +-1.614911710783160231e-02, +-1.589995797636059929e-02, +-1.565044336088179319e-02, +-1.540058214543002166e-02, +-1.515038321901172359e-02, +-1.489985547529647236e-02, +-1.464900781230964177e-02, +-1.439784913212591513e-02, +-1.414638834055993201e-02, +-1.389463434686135160e-02, +-1.364259606340595746e-02, +-1.339028240538946146e-02, +-1.313770229052024785e-02, +-1.288486463871350851e-02, +-1.263177837178292191e-02, +-1.237845241313639301e-02, +-1.212489568746820921e-02, +-1.187111712045369090e-02, +-1.161712563844312894e-02, +-1.136293016815685328e-02, +-1.110853963637818166e-02, +-1.085396296965038948e-02, +-1.059920909397008178e-02, +-1.034428693448308408e-02, +-1.008920541518053791e-02, +-9.833973458593743902e-03, +-9.578599985490971955e-03, +-9.323093914573563762e-03, +-9.067464162173310277e-03, +-8.811719641947927950e-03, +-8.555869264580420741e-03, +-8.299921937475201669e-03, +-8.043886564456753999e-03, +-7.787772045467711290e-03, +-7.531587276268427583e-03, +-7.275341148134297636e-03, +-7.019042547557440004e-03, +-6.762700355944790964e-03, +-6.506323449319266310e-03, +-6.249920698019990721e-03, +-5.993500966404121354e-03, +-5.737073112547368646e-03, +-5.480645987946627419e-03, +-5.224228437222215062e-03, +-4.967829297820585029e-03, +-4.711457399718278066e-03, +-4.455121565124857755e-03, +-4.198830608187782872e-03, +-3.942593334696933675e-03, +-3.686418541790675157e-03, +-3.430315017659999518e-03, +-3.174291541257058796e-03, +-2.918356882000325194e-03, +-2.662519799482811027e-03, +-2.406789043179776919e-03, +-2.151173352158020774e-03, +-1.895681454783338347e-03, +-1.640322068432381337e-03, +-1.385103899201141223e-03, +-1.130035641617361608e-03, +-8.751259783502362546e-04, +-6.203835799247027277e-04, +-3.658171044325204090e-04, +-1.114351972464500416e-04, + 1.427535092659879619e-04, + 3.967403960271835128e-04, + 6.505168575349715978e-04, + 9.040743021459496896e-04, + 1.157404152358894713e-03, + 1.410497845097456997e-03, + 1.663346831991413272e-03, + 1.915942579658723487e-03, + 2.168276569985339974e-03, + 2.420340300405178155e-03, + 2.672125284178331929e-03, + 2.923623050670949835e-03, + 3.174825145630515068e-03, + 3.425723131464205283e-03, + 3.676308587514073942e-03, + 3.926573110332396040e-03, + 4.176508313955305980e-03, + 4.426105830177932965e-03, + 4.675357308825033031e-03, + 4.924254418024512012e-03, + 5.172788844477903616e-03, + 5.420952293730155365e-03, + 5.668736490439921054e-03, + 5.916133178647458440e-03, + 6.163134122042608458e-03, + 6.409731104230886184e-03, + 6.655915929000998620e-03, + 6.901680420587838309e-03, + 7.147016423938205680e-03, + 7.391915804973368115e-03, + 7.636370450851612084e-03, + 7.880372270228933052e-03, + 8.123913193521218115e-03, + 8.366985173161568812e-03, + 8.609580183860635408e-03, + 8.851690222863483476e-03, + 9.093307310206582769e-03, + 9.334423488972936472e-03, + 9.575030825547659746e-03, + 9.815121409871190375e-03, + 1.005468735569220277e-02, + 1.029372080081947596e-02, + 1.053221390737212222e-02, + 1.077015886203006555e-02, + 1.100754787628239854e-02, + 1.124437318667508533e-02, + 1.148062705505716388e-02, + 1.171630176882771171e-02, + 1.195138964117840527e-02, + 1.218588301133870927e-02, + 1.241977424481747853e-02, + 1.265305573364454254e-02, + 1.288571989661032278e-02, + 1.311775917950654298e-02, + 1.334916605536229026e-02, + 1.357993302468250840e-02, + 1.381005261568314831e-02, + 1.403951738452622819e-02, + 1.426831991555274973e-02, + 1.449645282151618662e-02, + 1.472390874381300507e-02, + 1.495068035271317035e-02, + 1.517676034758918061e-02, + 1.540214145714347872e-02, + 1.562681643963588496e-02, + 1.585077808310851599e-02, + 1.607401920561048539e-02, + 1.629653265542033505e-02, + 1.651831131126934443e-02, + 1.673934808256050122e-02, + 1.695963590958959877e-02, + 1.717916776376256921e-02, + 1.739793664781313573e-02, + 1.761593559601792869e-02, + 1.783315767441211175e-02, + 1.804959598100195489e-02, + 1.826524364597752886e-02, + 1.848009383192267263e-02, + 1.869413973402626536e-02, + 1.890737458028849544e-02, + 1.911979163172956853e-02, + 1.933138418259487679e-02, + 1.954214556055955745e-02, + 1.975206912693131325e-02, + 1.996114827685321891e-02, + 2.016937643950366885e-02, + 2.037674707829554774e-02, + 2.058325369107523797e-02, + 2.078888981031776911e-02, + 2.099364900332346962e-02, + 2.119752487241136421e-02, + 2.140051105511208904e-02, + 2.160260122435852387e-02, + 2.180378908867731946e-02, + 2.200406839237566484e-02, + 2.220343291572988986e-02, + 2.240187647517083089e-02, + 2.259939292346849898e-02, + 2.279597614991486082e-02, + 2.299162008050662301e-02, + 2.318631867812414107e-02, + 2.338006594271169886e-02, + 2.357285591145470358e-02, + 2.376468265895527107e-02, + 2.395554029740802962e-02, + 2.414542297677284982e-02, + 2.433432488494709570e-02, + 2.452224024793563800e-02, + 2.470916333002115550e-02, + 2.489508843393019658e-02, + 2.508000990100086453e-02, + 2.526392211134685650e-02, + 2.544681948402115201e-02, + 2.562869647717732485e-02, + 2.580954758823139628e-02, + 2.598936735401911197e-02, + 2.616815035095467271e-02, + 2.634589119518640846e-02, + 2.652258454275164753e-02, + 2.669822508972909819e-02, + 2.687280757239155632e-02, + 2.704632676735546984e-02, + 2.721877749172962879e-02, + 2.739015460326264806e-02, + 2.756045300048807351e-02, + 2.772966762286941528e-02, + 2.789779345094221472e-02, + 2.806482550645560473e-02, + 2.823075885251150746e-02, + 2.839558859370369323e-02, + 2.855930987625323464e-02, + 2.872191788814460259e-02, + 2.888340785925901447e-02, + 2.904377506150637375e-02, + 2.920301480895552346e-02, + 2.936112245796436426e-02, + 2.951809340730592035e-02, + 2.967392309829521707e-02, + 2.982860701491337960e-02, + 2.998214068393063175e-02, + 3.013451967502715073e-02, + 3.028573960091325915e-02, + 3.043579611744749377e-02, + 3.058468492375314429e-02, + 3.073240176233360543e-02, + 3.087894241918508892e-02, + 3.102430272390957477e-02, + 3.116847854982460891e-02, + 3.131146581407209806e-02, + 3.145326047772543931e-02, + 3.159385854589585874e-02, + 3.173325606783530123e-02, + 3.187144913703984089e-02, + 3.200843389135021866e-02, + 3.214420651305129051e-02, + 3.227876322896932465e-02, + 3.241210031056863256e-02, + 3.254421407404577138e-02, + 3.267510088042289290e-02, + 3.280475713563807405e-02, + 3.293317929063656335e-02, + 3.306036384145739221e-02, + 3.318630732932101313e-02, + 3.331100634071352401e-02, + 3.343445750747046225e-02, + 3.355665750685804527e-02, + 3.367760306165377970e-02, + 3.379729094022449615e-02, + 3.391571795660333621e-02, + 3.403288097056535177e-02, + 3.414877688770053682e-02, + 3.426340265948638747e-02, + 3.437675528335786684e-02, + 3.448883180277667604e-02, + 3.459962930729763853e-02, + 3.470914493263538292e-02, + 3.481737586072709834e-02, + 3.492431931979551180e-02, + 3.502997258440931211e-02, + 3.513433297554234558e-02, + 3.523739786063057738e-02, + 3.533916465362867132e-02, + 3.543963081506344009e-02, + 3.553879385208651154e-02, + 3.563665131852564172e-02, + 3.573320081493307210e-02, + 3.582843998863430995e-02, + 3.592236653377334915e-02, + 3.601497819135713457e-02, + 3.610627274929843755e-02, + 3.619624804245726718e-02, + 3.628490195267933260e-02, + 3.637223240883519920e-02, + 3.645823738685539939e-02, + 3.654291490976566137e-02, + 3.662626304771939012e-02, + 3.670827991802962098e-02, + 3.678896368519790627e-02, + 3.686831256094273701e-02, + 3.694632480422611887e-02, + 3.702299872127819136e-02, + 3.709833266561997356e-02, + 3.717232503808562405e-02, + 3.724497428684171718e-02, + 3.731627890740588788e-02, + 3.738623744266306864e-02, + 3.745484848288076901e-02, + 3.752211066572234965e-02, + 3.758802267625870747e-02, + 3.765258324697849657e-02, + 3.771579115779633701e-02, + 3.777764523606016306e-02, + 3.783814435655578901e-02, + 3.789728744151123208e-02, + 3.795507346059798920e-02, + 3.801150143093195294e-02, + 3.806657041707171840e-02, + 3.812027953101626565e-02, + 3.817262793219978328e-02, + 3.822361482748581896e-02, + 3.827323947116003516e-02, + 3.832150116491998132e-02, + 3.836839925786485889e-02, + 3.841393314648246932e-02, + 3.845810227463543340e-02, + 3.850090613354515551e-02, + 3.854234426177444162e-02, + 3.858241624520869495e-02, + 3.862112171703494662e-02, + 3.865846035772015771e-02, + 3.869443189498693314e-02, + 3.872903610378839595e-02, + 3.876227280628136845e-02, + 3.879414187179720114e-02, + 3.882464321681215053e-02, + 3.885377680491545332e-02, + 3.888154264677603361e-02, + 3.890794080010710754e-02, + 3.893297136963060068e-02, + 3.895663450703810982e-02, + 3.897893041095178840e-02, + 3.899985932688297685e-02, + 3.901942154718916755e-02, + 3.903761741103010247e-02, + 3.905444730432132416e-02, + 3.906991165968676238e-02, + 3.908401095641005074e-02, + 3.909674572038326912e-02, + 3.910811652405543626e-02, + 3.911812398637815741e-02, + 3.912676877275057807e-02, + 3.913405159496266550e-02, + 3.913997321113658889e-02, + 3.914453442566696861e-02, + 3.914773608915943226e-02, + 3.914957909836734584e-02, + 3.915006439612759431e-02, + 3.914919297129441228e-02, + 3.914696585867177836e-02, + 3.914338413894432461e-02, + 3.913844893860665003e-02, + 3.913216142989146829e-02, + 3.912452283069554199e-02, + 3.911553440450481894e-02, + 3.910519746031777127e-02, + 3.909351335256698590e-02, + 3.908048348103985298e-02, + 3.906610929079719352e-02, + 3.905039227209091551e-02, + 3.903333396027936636e-02, + 3.901493593574209551e-02, + 3.899519982379302113e-02, + 3.897412729459116126e-02, + 3.895172006305153839e-02, + 3.892797988875280196e-02, + 3.890290857584489254e-02, + 3.887650797295454097e-02, + 3.884877997308908842e-02, + 3.881972651353962633e-02, + 3.878934957578208942e-02, + 3.875765118537688458e-02, + 3.872463341186761082e-02, + 3.869029836867765582e-02, + 3.865464821300632070e-02, + 3.861768514572199579e-02, + 3.857941141125584977e-02, + 3.853982929749250746e-02, + 3.849894113565995035e-02, + 3.845674930021829308e-02, + 3.841325620874662394e-02, + 3.836846432182876299e-02, + 3.832237614293747263e-02, + 3.827499421831773163e-02, + 3.822632113686743466e-02, + 3.817635953001870253e-02, + 3.812511207161575072e-02, + 3.807258147779273710e-02, + 3.801877050684965981e-02, + 3.796368195912738080e-02, + 3.790731867688070661e-02, + 3.784968354415032404e-02, + 3.779077948663394498e-02, + 3.773060947155543188e-02, + 3.766917650753256325e-02, + 3.760648364444421632e-02, + 3.754253397329565534e-02, + 3.747733062608224475e-02, + 3.741087677565298891e-02, + 3.734317563557109504e-02, + 3.727423045997497325e-02, + 3.720404454343683581e-02, + 3.713262122082020000e-02, + 3.705996386713648200e-02, + 3.698607589740000867e-02, + 3.691096076648173185e-02, + 3.683462196896204743e-02, + 3.675706303898171323e-02, + 3.667828755009259339e-02, + 3.659829911510561334e-02, + 3.651710138593901311e-02, + 3.643469805346447737e-02, + 3.635109284735237728e-02, + 3.626628953591548576e-02, + 3.618029192595203364e-02, + 3.609310386258689218e-02, + 3.600472922911215207e-02, + 3.591517194682605774e-02, + 3.582443597487114384e-02, + 3.573252531007095611e-02, + 3.563944398676543307e-02, + 3.554519607664550357e-02, + 3.544978568858653256e-02, + 3.535321696848028883e-02, + 3.525549409906547638e-02, + 3.515662129975866135e-02, + 3.505660282648188214e-02, + 3.495544297149060647e-02, + 3.485314606320048109e-02, + 3.474971646601232589e-02, + 3.464515858013641342e-02, + 3.453947684141583929e-02, + 3.443267572114830366e-02, + 3.432475972590728203e-02, + 3.421573339736153768e-02, + 3.410560131209468965e-02, + 3.399436808142207445e-02, + 3.388203835120793400e-02, + 3.376861680168111168e-02, + 3.365410814724927729e-02, + 3.353851713631293696e-02, + 3.342184855107770830e-02, + 3.330410720736565189e-02, + 3.318529795442622110e-02, + 3.306542567474547722e-02, + 3.294449528385426373e-02, + 3.282251173013660955e-02, + 3.269947999463518329e-02, + 3.257540509085745523e-02, + 3.245029206458004134e-02, + 3.232414599365244362e-02, + 3.219697198779936792e-02, + 3.206877518842285446e-02, + 3.193956076840260422e-02, + 3.180933393189597919e-02, + 3.167809991413680221e-02, + 3.154586398123367108e-02, + 3.141263142996627428e-02, + 3.127840758758216461e-02, + 3.114319781159198899e-02, + 3.100700748956309108e-02, + 3.086984203891421363e-02, + 3.073170690670692581e-02, + 3.059260756943811901e-02, + 3.045254953283036900e-02, + 3.031153833162273867e-02, + 3.016957952935862136e-02, + 3.002667871817562770e-02, + 2.988284151859190926e-02, + 2.973807357929347459e-02, + 2.959238057691976689e-02, + 2.944576821584931822e-02, + 2.929824222798289510e-02, + 2.914980837252825405e-02, + 2.900047243578204176e-02, + 2.885024023091202483e-02, + 2.869911759773830298e-02, + 2.854711040251367224e-02, + 2.839422453770320057e-02, + 2.824046592176318246e-02, + 2.808584049891964599e-02, + 2.793035423894522917e-02, + 2.777401313693676418e-02, + 2.761682321309034960e-02, + 2.745879051247763006e-02, + 2.729992110481971324e-02, + 2.714022108426198884e-02, + 2.697969656914598821e-02, + 2.681835370178397085e-02, + 2.665619864822913604e-02, + 2.649323759804825609e-02, + 2.632947676409113855e-02, + 2.616492238226189246e-02, + 2.599958071128747814e-02, + 2.583345803248688483e-02, + 2.566656064953919125e-02, + 2.549889488825139716e-02, + 2.533046709632500587e-02, + 2.516128364312291560e-02, + 2.499135091943482587e-02, + 2.482067533724264391e-02, + 2.464926332948581475e-02, + 2.447712134982420185e-02, + 2.430425587240298002e-02, + 2.413067339161478406e-02, + 2.395638042186325548e-02, + 2.378138349732370968e-02, + 2.360568917170620395e-02, + 2.342930401801543439e-02, + 2.325223462831186444e-02, + 2.307448761347139291e-02, + 2.289606960294561511e-02, + 2.271698724451986368e-02, + 2.253724720407314711e-02, + 2.235685616533534745e-02, + 2.217582082964546231e-02, + 2.199414791570874703e-02, + 2.181184415935418300e-02, + 2.162891631329006206e-02, + 2.144537114686094134e-02, + 2.126121544580271763e-02, + 2.107645601199834365e-02, + 2.089109966323285383e-02, + 2.070515323294745344e-02, + 2.051862356999407597e-02, + 2.033151753838897610e-02, + 2.014384201706698879e-02, + 1.995560389963323827e-02, + 1.976681009411762960e-02, + 1.957746752272627316e-02, + 1.938758312159392927e-02, + 1.919716384053600858e-02, + 1.900621664280056217e-02, + 1.881474850481856809e-02, + 1.862276641595629265e-02, + 1.843027737826500798e-02, + 1.823728840623209391e-02, + 1.804380652653100880e-02, + 1.784983877777181899e-02, + 1.765539221025032995e-02, + 1.746047388569797049e-02, + 1.726509087703175307e-02, + 1.706925026810185431e-02, + 1.687295915344256061e-02, + 1.667622463801951213e-02, + 1.647905383697905249e-02, + 1.628145387539623248e-02, + 1.608343188802377824e-02, + 1.588499501903887015e-02, + 1.568615042179280147e-02, + 1.548690525855737042e-02, + 1.528726670027324291e-02, + 1.508724192629739939e-02, + 1.488683812415080368e-02, + 1.468606248926533631e-02, + 1.448492222473132980e-02, + 1.428342454104480387e-02, + 1.408157665585427036e-02, + 1.387938579370845242e-02, + 1.367685918580233834e-02, + 1.347400406972472375e-02, + 1.327082768920489174e-02, + 1.306733729385999888e-02, + 1.286354013894051677e-02, + 1.265944348507900934e-02, + 1.245505459803523084e-02, + 1.225038074844389188e-02, + 1.204542921156104979e-02, + 1.184020726701153631e-02, + 1.163472219853503228e-02, + 1.142898129373349364e-02, + 1.122299184381787135e-02, + 1.101676114335571263e-02, + 1.081029649001691295e-02, + 1.060360518432260958e-02, + 1.039669452939095962e-02, + 1.018957183068507945e-02, + 9.982244395760354536e-03, + 9.774719534012271324e-03, + 9.567004556423359257e-03, + 9.359106775311510154e-03, + 9.151033504077636660e-03, + 8.942792056953613455e-03, + 8.734389748750952254e-03, + 8.525833894608396066e-03, + 8.317131809740840528e-03, + 8.108290809187831960e-03, + 7.899318207562969207e-03, + 7.690221318801668780e-03, + 7.481007455912013458e-03, + 7.271683930722933759e-03, + 7.062258053634427706e-03, + 6.852737133367259315e-03, + 6.643128476713625920e-03, + 6.433439388286207872e-03, + 6.223677170270484720e-03, + 6.013849122174232467e-03, + 5.803962540579294185e-03, + 5.594024718892734796e-03, + 5.384042947099001997e-03, + 5.174024511511204211e-03, + 4.963976694523694784e-03, + 4.753906774365251192e-03, + 4.543822024850515187e-03, + 4.333729715135012546e-03, + 4.123637109467314862e-03, + 3.913551466943596124e-03, + 3.703480041261589077e-03, + 3.493430080475851737e-03, + 3.283408826751327801e-03, + 3.073423516120447636e-03, + 2.863481378237488391e-03, + 2.653589636135308093e-03, + 2.443755505981569289e-03, + 2.233986196836339200e-03, + 2.024288910407985934e-03, + 1.814670840812705049e-03, + 1.605139174331314143e-03, + 1.395701089168377386e-03, + 1.186363755211621495e-03, + 9.771343337907146317e-04, + 7.680199774377314409e-04, + 5.590278296473556166e-04, + 3.501650246384149985e-04, + 1.414386871139108773e-04, +-6.714406797532524471e-05, +-2.755761356696215117e-04, +-4.838504212369299103e-04, +-6.919598404096564915e-04, +-8.998973196200926337e-04, +-1.107655796237313854e-03, +-1.315228218800422108e-03, +-1.522607547254347564e-03, +-1.729786753183119906e-03, +-1.936758820043437681e-03, +-2.143516743396924572e-03, +-2.350053531143047464e-03, +-2.556362203750230187e-03, +-2.762435794486947736e-03, +-2.968267349652289888e-03, +-3.173849928805214018e-03, +-3.379176604994517819e-03, +-3.584240464986861337e-03, +-3.789034609494973740e-03, +-3.993552153404298852e-03, +-4.197786226001021942e-03, +-4.401729971196341289e-03, +-4.605376547753154901e-03, +-4.808719129510105258e-03, +-5.011750905605867785e-03, +-5.214465080701932709e-03, +-5.416854875205988872e-03, +-5.618913525493401950e-03, +-5.820634284128644101e-03, +-6.022010420085259497e-03, +-6.223035218966967846e-03, +-6.423701983225124992e-03, +-6.624004032378331096e-03, +-6.823934703229525209e-03, +-7.023487350083052090e-03, +-7.222655344960342109e-03, +-7.421432077815970189e-03, +-7.619810956751992166e-03, +-7.817785408231142305e-03, +-8.015348877291375226e-03, +-8.212494827756386742e-03, +-8.409216742448382895e-03, +-8.605508123398268594e-03, +-8.801362492055639364e-03, +-8.996773389497357554e-03, +-9.191734376637086118e-03, +-9.386239034430995595e-03, +-9.580280964085745310e-03, +-9.773853787263610954e-03, +-9.966951146287629515e-03, +-1.015956670434512571e-02, +-1.035169414569211098e-02, +-1.054332717585409855e-02, +-1.073445952182879200e-02, +-1.092508493228623763e-02, +-1.111519717776823964e-02, +-1.130479005088781685e-02, +-1.149385736652666808e-02, +-1.168239296203250031e-02, +-1.187039069741461193e-02, +-1.205784445554020090e-02, +-1.224474814232723481e-02, +-1.243109568693899838e-02, +-1.261688104197600940e-02, +-1.280209818366766228e-02, +-1.298674111206232600e-02, +-1.317080385121814808e-02, +-1.335428044939008380e-02, +-1.353716497921899839e-02, +-1.371945153791762941e-02, +-1.390113424745671560e-02, +-1.408220725474928006e-02, +-1.426266473183509034e-02, +-1.444250087606311662e-02, +-1.462170991027329087e-02, +-1.480028608297755469e-02, +-1.497822366853926446e-02, +-1.515551696735254784e-02, +-1.533216030601970530e-02, +-1.550814803752814490e-02, +-1.568347454142571956e-02, +-1.585813422399643888e-02, +-1.603212151843270289e-02, +-1.620543088500921505e-02, +-1.637805681125380219e-02, +-1.654999381211829518e-02, +-1.672123643014758465e-02, +-1.689177923564882597e-02, +-1.706161682685768122e-02, +-1.723074383010550492e-02, +-1.739915489998408726e-02, +-1.756684471950997056e-02, +-1.773380800028697551e-02, +-1.790003948266882111e-02, +-1.806553393591952758e-02, +-1.823028615837306646e-02, +-1.839429097759243473e-02, +-1.855754325052635240e-02, +-1.872003786366661926e-02, +-1.888176973320252611e-02, +-1.904273380517574471e-02, +-1.920292505563232430e-02, +-1.936233849077598559e-02, +-1.952096914711735215e-02, +-1.967881209162467004e-02, +-1.983586242187164450e-02, +-1.999211526618507179e-02, +-2.014756578379050395e-02, +-2.030220916495782332e-02, +-2.045604063114460358e-02, +-2.060905543513915847e-02, +-2.076124886120123136e-02, +-2.091261622520351401e-02, +-2.106315287476944256e-02, +-2.121285418941205869e-02, +-2.136171558067034848e-02, +-2.150973249224502268e-02, +-2.165690040013229511e-02, +-2.180321481275778600e-02, +-2.194867127110818744e-02, +-2.209326534886145096e-02, +-2.223699265251750587e-02, +-2.237984882152514732e-02, +-2.252182952841035382e-02, +-2.266293047890131918e-02, +-2.280314741205369602e-02, +-2.294247610037327897e-02, +-2.308091234993929486e-02, +-2.321845200052402927e-02, +-2.335509092571364312e-02, +-2.349082503302600891e-02, +-2.362565026402827645e-02, +-2.375956259445225274e-02, +-2.389255803431026073e-02, +-2.402463262800718508e-02, +-2.415578245445383979e-02, +-2.428600362717741115e-02, +-2.441529229443087021e-02, +-2.454364463930214582e-02, +-2.467105687982060203e-02, +-2.479752526906326901e-02, +-2.492304609525907572e-02, +-2.504761568189283263e-02, +-2.517123038780650496e-02, +-2.529388660730040247e-02, +-2.541558077023262779e-02, +-2.553630934211734843e-02, +-2.565606882422114682e-02, +-2.577485575365960971e-02, +-2.589266670349036487e-02, +-2.600949828280732512e-02, +-2.612534713683156706e-02, +-2.624020994700220627e-02, +-2.635408343106486126e-02, +-2.646696434316042970e-02, +-2.657884947391070049e-02, +-2.668973565050400745e-02, +-2.679961973677885689e-02, +-2.690849863330639982e-02, +-2.701636927747217559e-02, +-2.712322864355530203e-02, +-2.722907374280770024e-02, +-2.733390162353071737e-02, +-2.743770937115195402e-02, +-2.754049410829891714e-02, +-2.764225299487278742e-02, +-2.774298322812055947e-02, +-2.784268204270538144e-02, +-2.794134671077564899e-02, +-2.803897454203365183e-02, +-2.813556288380150705e-02, +-2.823110912108676984e-02, +-2.832561067664642745e-02, +-2.841906501104941515e-02, +-2.851146962273781033e-02, +-2.860282204808687473e-02, +-2.869311986146369162e-02, +-2.878236067528441508e-02, +-2.887054214006988875e-02, +-2.895766194450049777e-02, +-2.904371781546937967e-02, +-2.912870751813411915e-02, +-2.921262885596732917e-02, +-2.929547967080571927e-02, +-2.937725784289823769e-02, +-2.945796129095207966e-02, +-2.953758797217819268e-02, +-2.961613588233447808e-02, +-2.969360305576914522e-02, +-2.976998756546063093e-02, +-2.984528752305824761e-02, +-2.991950107891983013e-02, +-2.999262642214932037e-02, +-3.006466178063167682e-02, +-3.013560542106804088e-02, +-3.020545564900779453e-02, +-3.027421080888069091e-02, +-3.034186928402699684e-02, +-3.040842949672599091e-02, +-3.047388990822378491e-02, +-3.053824901875952513e-02, +-3.060150536758995260e-02, +-3.066365753301263097e-02, +-3.072470413238886228e-02, +-3.078464382216340028e-02, +-3.084347529788432352e-02, +-3.090119729422105208e-02, +-3.095780858498090385e-02, +-3.101330798312432885e-02, +-3.106769434077895700e-02, +-3.112096654925215755e-02, +-3.117312353904214822e-02, +-3.122416427984811213e-02, +-3.127408778057861466e-02, +-3.132289308935849725e-02, +-3.137057929353534447e-02, +-3.141714551968324137e-02, +-3.146259093360639220e-02, +-3.150691474034070239e-02, +-3.155011618415422964e-02, +-3.159219454854636511e-02, +-3.163314915624525908e-02, +-3.167297936920464296e-02, +-3.171168458859845857e-02, +-3.174926425481500170e-02, +-3.178571784744874812e-02, +-3.182104488529178404e-02, +-3.185524492632346022e-02, +-3.188831756769851256e-02, +-3.192026244573401700e-02, +-3.195107923589565746e-02, +-3.198076765278123901e-02, +-3.200932745010416636e-02, +-3.203675842067514601e-02, +-3.206306039638223693e-02, +-3.208823324817009631e-02, +-3.211227688601762942e-02, +-3.213519125891409894e-02, +-3.215697635483470707e-02, +-3.217763220071370722e-02, +-3.219715886241709957e-02, +-3.221555644471373742e-02, +-3.223282509124499040e-02, +-3.224896498449319332e-02, +-3.226397634574883905e-02, +-3.227785943507630734e-02, +-3.229061455127852504e-02, +-3.230224203185996790e-02, +-3.231274225298885749e-02, +-3.232211562945740135e-02, +-3.233036261464142941e-02, +-3.233748370045810144e-02, +-3.234347941732289983e-02, +-3.234835033410499855e-02, +-3.235209705808109182e-02, +-3.235472023488864673e-02, +-3.235622054847708817e-02, +-3.235659872105840079e-02, +-3.235585551305591306e-02, +-3.235399172305213067e-02, +-3.235100818773500170e-02, +-3.234690578184324511e-02, +-3.234168541811028447e-02, +-3.233534804720666900e-02, +-3.232789465768164811e-02, +-3.231932627590312912e-02, +-3.230964396599660116e-02, +-3.229884882978276139e-02, +-3.228694200671385767e-02, +-3.227392467380860164e-02, +-3.225979804558607583e-02, +-3.224456337399872474e-02, +-3.222822194836302140e-02, +-3.221077509529027272e-02, +-3.219222417861491992e-02, +-3.217257059932268626e-02, +-3.215181579547667784e-02, +-3.212996124214287375e-02, +-3.210700845131374964e-02, +-3.208295897183143647e-02, +-3.205781438930890848e-02, +-3.203157632605083127e-02, +-3.200424644097209920e-02, +-3.197582642951619231e-02, +-3.194631802357193739e-02, +-3.191572299138863145e-02, +-3.188404313749091529e-02, +-3.185128030259157250e-02, +-3.181743636350382182e-02, +-3.178251323305173598e-02, +-3.174651285998011246e-02, +-3.170943722886302579e-02, +-3.167128836001074921e-02, +-3.163206830937623920e-02, +-3.159177916845995471e-02, +-3.155042306421346893e-02, +-3.150800215894252604e-02, +-3.146451865020816890e-02, +-3.141997477072722145e-02, +-3.137437278827146653e-02, +-3.132771500556590094e-02, +-3.128000376018543610e-02, +-3.123124142445093607e-02, +-3.118143040532366655e-02, +-3.113057314429898761e-02, +-3.107867211729903670e-02, +-3.102572983456357292e-02, +-3.097174884054076927e-02, +-3.091673171377604459e-02, +-3.086068106680010456e-02, +-3.080359954601598338e-02, +-3.074548983158499962e-02, +-3.068635463731118201e-02, +-3.062619671052560499e-02, +-3.056501883196831998e-02, +-3.050282381567042192e-02, +-3.043961450883426664e-02, +-3.037539379171316778e-02, +-3.031016457748949428e-02, +-3.024392981215225790e-02, +-3.017669247437310479e-02, +-3.010845557538209191e-02, +-3.003922215884124308e-02, +-2.996899530071836862e-02, +-2.989777810915871664e-02, +-2.982557372435642659e-02, +-2.975238531842462272e-02, +-2.967821609526432799e-02, +-2.960306929043293386e-02, +-2.952694817101107067e-02, +-2.944985603546875982e-02, +-2.937179621353038644e-02, +-2.929277206603954700e-02, +-2.921278698482115965e-02, +-2.913184439254465699e-02, +-2.904994774258463919e-02, +-2.896710051888121834e-02, +-2.888330623579958914e-02, +-2.879856843798815971e-02, +-2.871289070023605103e-02, +-2.862627662732963180e-02, +-2.853872985390795008e-02, +-2.845025404431733920e-02, +-2.836085289246543031e-02, +-2.827053012167349971e-02, +-2.817928948452856630e-02, +-2.808713476273430945e-02, +-2.799406976696127217e-02, +-2.790009833669554809e-02, +-2.780522434008783975e-02, +-2.770945167380007429e-02, +-2.761278426285258478e-02, +-2.751522606046888711e-02, +-2.741678104792164353e-02, +-2.731745323437563891e-02, +-2.721724665673099300e-02, +-2.711616537946578628e-02, +-2.701421349447717321e-02, +-2.691139512092183966e-02, +-2.680771440505578390e-02, +-2.670317552007335851e-02, +-2.659778266594506335e-02, +-2.649154006925513380e-02, +-2.638445198303774122e-02, +-2.627652268661263141e-02, +-2.616775648542009683e-02, +-2.605815771085522037e-02, +-2.594773072010065143e-02, +-2.583647989595979147e-02, +-2.572440964668787702e-02, +-2.561152440582354500e-02, +-2.549782863201859734e-02, +-2.538332680886799808e-02, +-2.526802344473786169e-02, +-2.515192307259437807e-02, +-2.503503024983027778e-02, +-2.491734955809185581e-02, +-2.479888560310459025e-02, +-2.467964301449855277e-02, +-2.455962644563235847e-02, +-2.443884057341726146e-02, +-2.431729009813999448e-02, +-2.419497974328516793e-02, +-2.407191425535708598e-02, +-2.394809840370046641e-02, +-2.382353698032086547e-02, +-2.369823479970435340e-02, +-2.357219669863688111e-02, +-2.344542753602172833e-02, +-2.331793219269839498e-02, +-2.318971557125883154e-02, +-2.306078259586426607e-02, +-2.293113821206095235e-02, +-2.280078738659578955e-02, +-2.266973510723007193e-02, +-2.253798638255474079e-02, +-2.240554624180268739e-02, +-2.227241973466238811e-02, +-2.213861193108979109e-02, +-2.200412792112037969e-02, +-2.186897281467985177e-02, +-2.173315174139509379e-02, +-2.159666985040420775e-02, +-2.145953231016553900e-02, +-2.132174430826746375e-02, +-2.118331105123606381e-02, +-2.104423776434341531e-02, +-2.090452969141478115e-02, +-2.076419209463601853e-02, +-2.062323025435881460e-02, +-2.048164946890804194e-02, +-2.033945505438608872e-02, +-2.019665234447805616e-02, +-2.005324669025632459e-02, +-1.990924345998469625e-02, +-1.976464803892110864e-02, +-1.961946582912189180e-02, +-1.947370224924338186e-02, +-1.932736273434448523e-02, +-1.918045273568861828e-02, +-1.903297772054459575e-02, +-1.888494317198787312e-02, +-1.873635458870081399e-02, +-1.858721748477324201e-02, +-1.843753738950107066e-02, +-1.828731984718711193e-02, +-1.813657041693867225e-02, +-1.798529467246682764e-02, +-1.783349820188425208e-02, +-1.768118660750349000e-02, +-1.752836550563380627e-02, +-1.737504052637872318e-02, +-1.722121731343255815e-02, +-1.706690152387747503e-02, +-1.691209882797834949e-02, +-1.675681490898013951e-02, +-1.660105546290210551e-02, +-1.644482619833365772e-02, +-1.628813283622896832e-02, +-1.613098110970202781e-02, +-1.597337676382026839e-02, +-1.581532555539919699e-02, +-1.565683325279592850e-02, +-1.549790563570262007e-02, +-1.533854849494023682e-02, +-1.517876763225092622e-02, +-1.501856886009115925e-02, +-1.485795800142423670e-02, +-1.469694088951293762e-02, +-1.453552336771072109e-02, +-1.437371128925485873e-02, +-1.421151051705718364e-02, +-1.404892692349614565e-02, +-1.388596639020774591e-02, +-1.372263480787732498e-02, +-1.355893807602950515e-02, +-1.339488210282020059e-02, +-1.323047280482640177e-02, +-1.306571610683699043e-02, +-1.290061794164303055e-02, +-1.273518424982831784e-02, +-1.256942097955895087e-02, +-1.240333408637363938e-02, +-1.223692953297348361e-02, +-1.207021328901167895e-02, +-1.190319133088352591e-02, +-1.173586964151535246e-02, +-1.156825421015453791e-02, +-1.140035103215857569e-02, +-1.123216610878496717e-02, +-1.106370544697938239e-02, +-1.089497505916626682e-02, +-1.072598096303693967e-02, +-1.055672918133917539e-02, +-1.038722574166609305e-02, +-1.021747667624580726e-02, +-1.004748802172921243e-02, +-9.877265818980634701e-03, +-9.706816112865510396e-03, +-9.536144952040109812e-03, +-9.365258388740322487e-03, +-9.194162478571054828e-03, +-9.022863280294793342e-03, +-8.851366855620984922e-03, +-8.679679268995585395e-03, +-8.507806587389124889e-03, +-8.335754880087448138e-03, +-8.163530218479833622e-03, +-7.991138675848901210e-03, +-7.818586327159883151e-03, +-7.645879248850672230e-03, +-7.473023518620261832e-03, +-7.300025215219971969e-03, +-7.126890418242071493e-03, +-6.953625207910332784e-03, +-6.780235664869733829e-03, +-6.606727869977159495e-03, +-6.433107904091067177e-03, +-6.259381847862280010e-03, +-6.085555781524558915e-03, +-5.911635784685204120e-03, +-5.737627936116367934e-03, +-5.563538313545551318e-03, +-5.389372993447197682e-03, +-5.215138050833963146e-03, +-5.040839559048849831e-03, +-4.866483589555837749e-03, +-4.692076211733416276e-03, +-4.517623492665615893e-03, +-4.343131496934970678e-03, +-4.168606286414993332e-03, +-3.994053920063510635e-03, +-3.819480453715101177e-03, +-3.644891939874956438e-03, +-3.470294427512249195e-03, +-3.295693961854606960e-03, +-3.121096584181022853e-03, +-2.946508331617845190e-03, +-2.771935236932227854e-03, +-2.597383328327730438e-03, +-2.422858629239335506e-03, +-2.248367158129460728e-03, +-2.073914928283230718e-03, +-1.899507947605078538e-03, +-1.725152218415164406e-03, +-1.550853737246128987e-03, +-1.376618494640682172e-03, +-1.202452474948495368e-03, +-1.028361656124486979e-03, +-8.543520095268402085e-04, +-6.804294997161049489e-04, +-5.066000842529871364e-04, +-3.328697134991459019e-04, +-1.592443304157407837e-04, + 1.427012963595713283e-05, + 1.876677390942900871e-04, + 3.609425783958070534e-04, + 5.340887361750209540e-04, + 7.071003094617644849e-04, + 8.799714038791712177e-04, + 1.052696133841647284e-03, + 1.225268622751578230e-03, + 1.397683003195592704e-03, + 1.569933417141219922e-03, + 1.742014016132769879e-03, + 1.913918961485100434e-03, + 2.085642424480469836e-03, + 2.257178586561334101e-03, + 2.428521639524397306e-03, + 2.599665785714316227e-03, + 2.770605238216777670e-03, + 2.941334221049340166e-03, + 3.111846969355572517e-03, + 3.282137729593889719e-03, + 3.452200759730636361e-03, + 3.622030329428905637e-03, + 3.791620720238545340e-03, + 3.960966225785719774e-03, + 4.130061151961897901e-03, + 4.298899817110462748e-03, + 4.467476552216401685e-03, + 4.635785701091860687e-03, + 4.803821620562829207e-03, + 4.971578680655551821e-03, + 5.139051264781509601e-03, + 5.306233769921847240e-03, + 5.473120606812043910e-03, + 5.639706200125558025e-03, + 5.805984988655794529e-03, + 5.971951425499591806e-03, + 6.137599978238397064e-03, + 6.302925129119171972e-03, + 6.467921375235353813e-03, + 6.632583228706884215e-03, + 6.796905216858062544e-03, + 6.960881882398097659e-03, + 7.124507783597640309e-03, + 7.287777494466331218e-03, + 7.450685604929750683e-03, + 7.613226721005292644e-03, + 7.775395464976892976e-03, + 7.937186475570675442e-03, + 8.098594408128030261e-03, + 8.259613934778883490e-03, + 8.420239744614810284e-03, + 8.580466543860569562e-03, + 8.740289056044948240e-03, + 8.899702022171707833e-03, + 9.058700200889377441e-03, + 9.217278368659456017e-03, + 9.375431319925636373e-03, + 9.533153867280931906e-03, + 9.690440841634272509e-03, + 9.847287092377029344e-03, + 1.000368748754857165e-02, + 1.015963691399949208e-02, + 1.031513027755733003e-02, + 1.047016250318834156e-02, + 1.062472853515999092e-02, + 1.077882333720293732e-02, + 1.093244189267148468e-02, + 1.108557920470326121e-02, + 1.123823029637925110e-02, + 1.139039021088145143e-02, + 1.154205401165041278e-02, + 1.169321678254269838e-02, + 1.184387362798644365e-02, + 1.199401967313636248e-02, + 1.214365006402848626e-02, + 1.229275996773403386e-02, + 1.244134457251068124e-02, + 1.258939908795639849e-02, + 1.273691874515923798e-02, + 1.288389879684765510e-02, + 1.303033451754032762e-02, + 1.317622120369482674e-02, + 1.332155417385399998e-02, + 1.346632876879472022e-02, + 1.361054035167236914e-02, + 1.375418430816635444e-02, + 1.389725604662457245e-02, + 1.403975099820661300e-02, + 1.418166461702592002e-02, + 1.432299238029171792e-02, + 1.446372978845002731e-02, + 1.460387236532248618e-02, + 1.474341565824609235e-02, + 1.488235523821109831e-02, + 1.502068669999757911e-02, + 1.515840566231226559e-02, + 1.529550776792384242e-02, + 1.543198868379625117e-02, + 1.556784410122366916e-02, + 1.570306973596197544e-02, + 1.583766132836047710e-02, + 1.597161464349286519e-02, + 1.610492547128709873e-02, + 1.623758962665301786e-02, + 1.636960294961189652e-02, + 1.650096130542204331e-02, + 1.663166058470503042e-02, + 1.676169670357096145e-02, + 1.689106560374238966e-02, + 1.701976325267692131e-02, + 1.714778564368987790e-02, + 1.727512879607541463e-02, + 1.740178875522601504e-02, + 1.752776159275231532e-02, + 1.765304340660108634e-02, + 1.777763032117215050e-02, + 1.790151848743505233e-02, + 1.802470408304427188e-02, + 1.814718331245259927e-02, + 1.826895240702566120e-02, + 1.839000762515331441e-02, + 1.851034525236080683e-02, + 1.862996160141953961e-02, + 1.874885301245588984e-02, + 1.886701585305926993e-02, + 1.898444651838999617e-02, + 1.910114143128463504e-02, + 1.921709704236146052e-02, + 1.933230983012480808e-02, + 1.944677630106780158e-02, + 1.956049298977436540e-02, + 1.967345645902069534e-02, + 1.978566329987502606e-02, + 1.989711013179604540e-02, + 2.000779360273171464e-02, + 2.011771038921536872e-02, + 2.022685719646185459e-02, + 2.033523075846227837e-02, + 2.044282783807782264e-02, + 2.054964522713178046e-02, + 2.065567974650213759e-02, + 2.076092824621122990e-02, + 2.086538760551549451e-02, + 2.096905473299415582e-02, + 2.107192656663622182e-02, + 2.117400007392666525e-02, + 2.127527225193203558e-02, + 2.137574012738435031e-02, + 2.147540075676379959e-02, + 2.157425122638124276e-02, + 2.167228865245898056e-02, + 2.176951018121016032e-02, + 2.186591298891790366e-02, + 2.196149428201302906e-02, + 2.205625129714974125e-02, + 2.215018130128231649e-02, + 2.224328159173863742e-02, + 2.233554949629345740e-02, + 2.242698237324079399e-02, + 2.251757761146537876e-02, + 2.260733263051144248e-02, + 2.269624488065293336e-02, + 2.278431184296046685e-02, + 2.287153102936801546e-02, + 2.295789998273886981e-02, + 2.304341627692980607e-02, + 2.312807751685410501e-02, + 2.321188133854456409e-02, + 2.329482540921393521e-02, + 2.337690742731499821e-02, + 2.345812512259980859e-02, + 2.353847625617705094e-02, + 2.361795862056883730e-02, + 2.369657003976634660e-02, + 2.377430836928422567e-02, + 2.385117149621337335e-02, + 2.392715733927396754e-02, + 2.400226384886581729e-02, + 2.407648900711837139e-02, + 2.414983082793995331e-02, + 2.422228735706480687e-02, + 2.429385667210001362e-02, + 2.436453688257099806e-02, + 2.443432612996527392e-02, + 2.450322258777623552e-02, + 2.457122446154478071e-02, + 2.463832998890016709e-02, + 2.470453743960009108e-02, + 2.476984511556896626e-02, + 2.483425135093558778e-02, + 2.489775451206958923e-02, + 2.496035299761625165e-02, + 2.502204523853107654e-02, + 2.508282969811246113e-02, + 2.514270487203358953e-02, + 2.520166928837308529e-02, + 2.525972150764447741e-02, + 2.531686012282503839e-02, + 2.537308375938215205e-02, + 2.542839107530048617e-02, + 2.548278076110627871e-02, + 2.553625153989148508e-02, + 2.558880216733642673e-02, + 2.564043143173149256e-02, + 2.569113815399715409e-02, + 2.574092118770400853e-02, + 2.578977941909024740e-02, + 2.583771176707915646e-02, + 2.588471718329470386e-02, + 2.593079465207653519e-02, + 2.597594319049341058e-02, + 2.602016184835584736e-02, + 2.606344970822745480e-02, + 2.610580588543500585e-02, + 2.614722952807754797e-02, + 2.618771981703453544e-02, + 2.622727596597243874e-02, + 2.626589722135054886e-02, + 2.630358286242547722e-02, + 2.634033220125447591e-02, + 2.637614458269786286e-02, + 2.641101938442010424e-02, + 2.644495601688977640e-02, + 2.647795392337858045e-02, + 2.651001257995891022e-02, + 2.654113149550076101e-02, + 2.657131021166683760e-02, + 2.660054830290738137e-02, + 2.662884537645306485e-02, + 2.665620107230712646e-02, + 2.668261506323670387e-02, + 2.670808705476243258e-02, + 2.673261678514701409e-02, + 2.675620402538339201e-02, + 2.677884857918074596e-02, + 2.680055028295023206e-02, + 2.682130900578901314e-02, + 2.684112464946362617e-02, + 2.685999714839181624e-02, + 2.687792646962372176e-02, + 2.689491261282142207e-02, + 2.691095561023793686e-02, + 2.692605552669453256e-02, + 2.694021245955745270e-02, + 2.695342653871309752e-02, + 2.696569792654264844e-02, + 2.697702681789478085e-02, + 2.698741344005808201e-02, + 2.699685805273200137e-02, + 2.700536094799652412e-02, + 2.701292245028120292e-02, + 2.701954291633272554e-02, + 2.702522273518143808e-02, + 2.702996232810703225e-02, + 2.703376214860291407e-02, + 2.703662268233945898e-02, + 2.703854444712614630e-02, + 2.703952799287312470e-02, + 2.703957390155075496e-02, + 2.703868278714928117e-02, + 2.703685529563602460e-02, + 2.703409210491271655e-02, + 2.703039392477123506e-02, + 2.702576149684807888e-02, + 2.702019559457825848e-02, + 2.701369702314778548e-02, + 2.700626661944505527e-02, + 2.699790525201160862e-02, + 2.698861382099120368e-02, + 2.697839325807823915e-02, + 2.696724452646514711e-02, + 2.695516862078862694e-02, + 2.694216656707465116e-02, + 2.692823942268271140e-02, + 2.691338827624906171e-02, + 2.689761424762835557e-02, + 2.688091848783511623e-02, + 2.686330217898348985e-02, + 2.684476653422624565e-02, + 2.682531279769255830e-02, + 2.680494224442509996e-02, + 2.678365618031573747e-02, + 2.676145594204052541e-02, + 2.673834289699345695e-02, + 2.671431844321912538e-02, + 2.668938400934478192e-02, + 2.666354105451094678e-02, + 2.663679106830125348e-02, + 2.660913557067118990e-02, + 2.658057611187589903e-02, + 2.655111427239683838e-02, + 2.652075166286785649e-02, + 2.648948992399963176e-02, + 2.645733072650366738e-02, + 2.642427577101505790e-02, + 2.639032678801446138e-02, + 2.635548553774864911e-02, + 2.631975381015071863e-02, + 2.628313342475883593e-02, + 2.624562623063405806e-02, + 2.620723410627774294e-02, + 2.616795895954709267e-02, + 2.612780272757033936e-02, + 2.608676737666114701e-02, + 2.604485490223136870e-02, + 2.600206732870353685e-02, + 2.595840670942189607e-02, + 2.591387512656297479e-02, + 2.586847469104473773e-02, + 2.582220754243538460e-02, + 2.577507584886045561e-02, + 2.572708180690964908e-02, + 2.567822764154271270e-02, + 2.562851560599365905e-02, + 2.557794798167527250e-02, + 2.552652707808165597e-02, + 2.547425523269031267e-02, + 2.542113481086329813e-02, + 2.536716820574775808e-02, + 2.531235783817458937e-02, + 2.525670615655770460e-02, + 2.520021563679113522e-02, + 2.514288878214575307e-02, + 2.508472812316510717e-02, + 2.502573621756071925e-02, + 2.496591565010545730e-02, + 2.490526903252734958e-02, + 2.484379900340185146e-02, + 2.478150822804298103e-02, + 2.471839939839432648e-02, + 2.465447523291870030e-02, + 2.458973847648720373e-02, + 2.452419190026695200e-02, + 2.445783830160899383e-02, + 2.439068050393422213e-02, + 2.432272135661921186e-02, + 2.425396373488106910e-02, + 2.418441053966127047e-02, + 2.411406469750883644e-02, + 2.404292916046315079e-02, + 2.397100690593455957e-02, + 2.389830093658639604e-02, + 2.382481428021375816e-02, + 2.375054998962340680e-02, + 2.367551114251207484e-02, + 2.359970084134392632e-02, + 2.352312221322724883e-02, + 2.344577840979123265e-02, + 2.336767260706032467e-02, + 2.328880800532946369e-02, + 2.320918782903755306e-02, + 2.312881532664080864e-02, + 2.304769377048459730e-02, + 2.296582645667543179e-02, + 2.288321670495141111e-02, + 2.279986785855253259e-02, + 2.271578328409030317e-02, + 2.263096637141572345e-02, + 2.254542053348768116e-02, + 2.245914920624014072e-02, + 2.237215584844855221e-02, + 2.228444394159532008e-02, + 2.219601698973591719e-02, + 2.210687851936197004e-02, + 2.201703207926593298e-02, + 2.192648124040389931e-02, + 2.183522959575783656e-02, + 2.174328076019725262e-02, + 2.165063837034060870e-02, + 2.155730608441520230e-02, + 2.146328758211712984e-02, + 2.136858656447056595e-02, + 2.127320675368563410e-02, + 2.117715189301673170e-02, + 2.108042574661944668e-02, + 2.098303209940706807e-02, + 2.088497475690637845e-02, + 2.078625754511327986e-02, + 2.068688431034723316e-02, + 2.058685891910513183e-02, + 2.048618525791521400e-02, + 2.038486723318956931e-02, + 2.028290877107639251e-02, + 2.018031381731211216e-02, + 2.007708633707185053e-02, + 1.997323031482039005e-02, + 1.986874975416220296e-02, + 1.976364867769043673e-02, + 1.965793112683598964e-02, + 1.955160116171619777e-02, + 1.944466286098165894e-02, + 1.933712032166413908e-02, + 1.922897765902326431e-02, + 1.912023900639222077e-02, + 1.901090851502363482e-02, + 1.890099035393466922e-02, + 1.879048870975164043e-02, + 1.867940778655364023e-02, + 1.856775180571698311e-02, + 1.845552500575733598e-02, + 1.834273164217297553e-02, + 1.822937598728661610e-02, + 1.811546233008703988e-02, + 1.800099497607002969e-02, + 1.788597824707991932e-02, + 1.777041648114840652e-02, + 1.765431403233556559e-02, + 1.753767527056864992e-02, + 1.742050458148083555e-02, + 1.730280636624986768e-02, + 1.718458504143620391e-02, + 1.706584503882006137e-02, + 1.694659080523904654e-02, + 1.682682680242484838e-02, + 1.670655750683937638e-02, + 1.658578740951064182e-02, + 1.646452101586876049e-02, + 1.634276284558048783e-02, + 1.622051743238397958e-02, + 1.609778932392419426e-02, + 1.597458308158537094e-02, + 1.585090328032566845e-02, + 1.572675450851029541e-02, + 1.560214136774425511e-02, + 1.547706847270462552e-02, + 1.535154045097384887e-02, + 1.522556194287018674e-02, + 1.509913760128024293e-02, + 1.497227209149007247e-02, + 1.484497009101580153e-02, + 1.471723628943425247e-02, + 1.458907538821377359e-02, + 1.446049210054328564e-02, + 1.433149115116272819e-02, + 1.420207727619240100e-02, + 1.407225522296166008e-02, + 1.394202974983805438e-02, + 1.381140562605604957e-02, + 1.368038763154505975e-02, + 1.354898055675716508e-02, + 1.341718920249620681e-02, + 1.328501837974356732e-02, + 1.315247290948682625e-02, + 1.301955762254639742e-02, + 1.288627735940229245e-02, + 1.275263697002040029e-02, + 1.261864131368021190e-02, + 1.248429525879919157e-02, + 1.234960368276009218e-02, + 1.221457147173649754e-02, + 1.207920352051795529e-02, + 1.194350473233585057e-02, + 1.180748001868864999e-02, + 1.167113429916675355e-02, + 1.153447250127715915e-02, + 1.139749956026906222e-02, + 1.126022041895750891e-02, + 1.112264002754829312e-02, + 1.098476334346236948e-02, + 1.084659533115965406e-02, + 1.070814096196290137e-02, + 1.056940521388274878e-02, + 1.043039307143982242e-02, + 1.029110952548958902e-02, + 1.015155957304581837e-02, + 1.001174821710356169e-02, + 9.871680466462499567e-03, + 9.731361335551406977e-03, + 9.590795844249579150e-03, + 9.449989017711180397e-03, + 9.308945886188217320e-03, + 9.167671484852981181e-03, + 9.026170853621350715e-03, + 8.884449036975935327e-03, + 8.742511083788422066e-03, + 8.600362047142311173e-03, + 8.458006984156623068e-03, + 8.315450955807572250e-03, + 8.172699026751788567e-03, + 8.029756265149227967e-03, + 7.886627742485496917e-03, + 7.743318533394381517e-03, + 7.599833715481738375e-03, + 7.456178369146524917e-03, + 7.312357577404790011e-03, + 7.168376425712182261e-03, + 7.024240001786364630e-03, + 6.879953395430116886e-03, + 6.735521698354520435e-03, + 6.590950004001026007e-03, + 6.446243407365244774e-03, + 6.301407004819813140e-03, + 6.156445893937156043e-03, + 6.011365173312808834e-03, + 5.866169942389056619e-03, + 5.720865301277692355e-03, + 5.575456350583458433e-03, + 5.429948191228325255e-03, + 5.284345924274186888e-03, + 5.138654650746986123e-03, + 4.992879471460830859e-03, + 4.847025486841466044e-03, + 4.701097796750216586e-03, + 4.555101500309456826e-03, + 4.409041695724982661e-03, + 4.262923480112671033e-03, + 4.116751949321147824e-03, + 3.970532197757900908e-03, + 3.824269318213967695e-03, + 3.677968401688795717e-03, + 3.531634537215375992e-03, + 3.385272811686903822e-03, + 3.238888309680765937e-03, + 3.092486113285572089e-03, + 2.946071301927081186e-03, + 2.799648952194017278e-03, + 2.653224137664800166e-03, + 2.506801928734503707e-03, + 2.360387392441326213e-03, + 2.213985592293632454e-03, + 2.067601588098103710e-03, + 1.921240435786485080e-03, + 1.774907187243770883e-03, + 1.628606890136575450e-03, + 1.482344587741034900e-03, + 1.336125318771251656e-03, + 1.189954117209411242e-03, + 1.043836012133179903e-03, + 8.977760275463510286e-04, + 7.517791822084059694e-04, + 6.058504894640585935e-04, + 4.599949570738438159e-04, + 3.142175870450486302e-04, + 1.685233754617562079e-04, + 2.291731231684970379e-05, +-1.225956186565327420e-04, +-2.680104401535781397e-04, +-4.133221814653443085e-04, +-5.585258786459684115e-04, +-7.036165746802448048e-04, +-8.485893196504932113e-04, +-9.934391709022197172e-04, +-1.138161193211061463e-03, +-1.282750458948161846e-03, +-1.427202048245250487e-03, +-1.571511049160075361e-03, +-1.715672557841153812e-03, +-1.859681678690775419e-03, +-2.003533524530585683e-03, +-2.147223216763767713e-03, +-2.290745885538263658e-03, +-2.434096669909839583e-03, +-2.577270718004019950e-03, +-2.720263187177549176e-03, +-2.863069244180643791e-03, +-3.005684065317124325e-03, +-3.148102836605065017e-03, +-3.290320753937273513e-03, +-3.432333023240669891e-03, +-3.574134860635235899e-03, +-3.715721492593151987e-03, +-3.857088156097276434e-03, +-3.998230098797715855e-03, +-4.139142579170927531e-03, +-4.279820866675360103e-03, +-4.420260241908030574e-03, +-4.560455996760779535e-03, +-4.700403434575827280e-03, +-4.840097870299543172e-03, +-4.979534630638556870e-03, +-5.118709054212478189e-03, +-5.257616491707528539e-03, +-5.396252306029749972e-03, +-5.534611872457287883e-03, +-5.672690578791775989e-03, +-5.810483825510545305e-03, +-5.947987025916703745e-03, +-6.085195606289405673e-03, +-6.222105006034032125e-03, +-6.358710677831066506e-03, +-6.495008087784452482e-03, +-6.630992715570114063e-03, +-6.766660054583568430e-03, +-6.902005612085633166e-03, +-7.037024909350550819e-03, +-7.171713481810510459e-03, +-7.306066879201033974e-03, +-7.440080665705905288e-03, +-7.573750420101347559e-03, +-7.707071735898306936e-03, +-7.840040221486904715e-03, +-7.972651500277500719e-03, +-8.104901210842443623e-03, +-8.236785007057479541e-03, +-8.368298558241969720e-03, +-8.499437549298223538e-03, +-8.630197680851192307e-03, +-8.760574669386950522e-03, +-8.890564247389896868e-03, +-9.020162163480669945e-03, +-9.149364182552525288e-03, +-9.278166085906966454e-03, +-9.406563671389389994e-03, +-9.534552753523904689e-03, +-9.662129163646185348e-03, +-9.789288750038257353e-03, +-9.916027378060134415e-03, +-1.004234093028183797e-02, +-1.016822530661502105e-02, +-1.029367642444365544e-02, +-1.041869021875293198e-02, +-1.054326264225992522e-02, +-1.066738966554110768e-02, +-1.079106727716027010e-02, +-1.091429148379606355e-02, +-1.103705831036811726e-02, +-1.115936380016254587e-02, +-1.128120401495737862e-02, +-1.140257503514678465e-02, +-1.152347295986402669e-02, +-1.164389390710497858e-02, +-1.176383401384995149e-02, +-1.188328943618488162e-02, +-1.200225634942218497e-02, +-1.212073094822093029e-02, +-1.223870944670485232e-02, +-1.235618807858226281e-02, +-1.247316309726264651e-02, +-1.258963077597365608e-02, +-1.270558740787775150e-02, +-1.282102930618706817e-02, +-1.293595280427807352e-02, +-1.305035425580582109e-02, +-1.316423003481652886e-02, +-1.327757653585985922e-02, +-1.339039017410088156e-02, +-1.350266738543038671e-02, +-1.361440462657482163e-02, +-1.372559837520571230e-02, +-1.383624513004809604e-02, +-1.394634141098707696e-02, +-1.405588375917628426e-02, +-1.416486873714232000e-02, +-1.427329292889057723e-02, +-1.438115294000960435e-02, +-1.448844539777470117e-02, +-1.459516695124992922e-02, +-1.470131427139115959e-02, +-1.480688405114629139e-02, +-1.491187300555560369e-02, +-1.501627787185164618e-02, +-1.512009540955744358e-02, +-1.522332240058422818e-02, +-1.532595564932872668e-02, +-1.542799198276907820e-02, +-1.552942825055975834e-02, +-1.563026132512657790e-02, +-1.573048810175993809e-02, +-1.583010549870741968e-02, +-1.592911045726590896e-02, +-1.602749994187278870e-02, +-1.612527094019517229e-02, +-1.622242046322053613e-02, +-1.631894554534410111e-02, +-1.641484324445681778e-02, +-1.651011064203211642e-02, +-1.660474484321154687e-02, +-1.669874297688987361e-02, +-1.679210219579945970e-02, +-1.688481967659248920e-02, +-1.697689261992463283e-02, +-1.706831825053561902e-02, +-1.715909381732993316e-02, +-1.724921659345668434e-02, +-1.733868387638842767e-02, +-1.742749298799872379e-02, +-1.751564127463973303e-02, +-1.760312610721784590e-02, +-1.768994488126899092e-02, +-1.777609501703314096e-02, +-1.786157395952775104e-02, +-1.794637917861995752e-02, +-1.803050816909852402e-02, +-1.811395845074471184e-02, +-1.819672756840142250e-02, +-1.827881309204278798e-02, +-1.836021261684185266e-02, +-1.844092376323755098e-02, +-1.852094417700113696e-02, +-1.860027152930137512e-02, +-1.867890351676846153e-02, +-1.875683786155812535e-02, +-1.883407231141354110e-02, +-1.891060463972702582e-02, +-1.898643264560096952e-02, +-1.906155415390711413e-02, +-1.913596701534553066e-02, +-1.920966910650268727e-02, +-1.928265832990805340e-02, +-1.935493261409006530e-02, +-1.942648991363144992e-02, +-1.949732820922337254e-02, +-1.956744550771814112e-02, +-1.963683984218203560e-02, +-1.970550927194642671e-02, +-1.977345188265776377e-02, +-1.984066578632767697e-02, +-1.990714912138112289e-02, +-1.997290005270370775e-02, +-2.003791677168861515e-02, +-2.010219749628245831e-02, +-2.016574047102922748e-02, +-2.022854396711497998e-02, +-2.029060628240994535e-02, +-2.035192574151081443e-02, +-2.041250069578154011e-02, +-2.047232952339312489e-02, +-2.053141062936294364e-02, +-2.058974244559272707e-02, +-2.064732343090555297e-02, +-2.070415207108192504e-02, +-2.076022687889543181e-02, +-2.081554639414654601e-02, +-2.087010918369605617e-02, +-2.092391384149750247e-02, +-2.097695898862862729e-02, +-2.102924327332133039e-02, +-2.108076537099192599e-02, +-2.113152398426891218e-02, +-2.118151784302092430e-02, +-2.123074570438338374e-02, +-2.127920635278394285e-02, +-2.132689859996710763e-02, +-2.137382128501827752e-02, +-2.141997327438635579e-02, +-2.146535346190535029e-02, +-2.150996076881553018e-02, +-2.155379414378315317e-02, +-2.159685256291946423e-02, +-2.163913502979845915e-02, +-2.168064057547436363e-02, +-2.172136825849706881e-02, +-2.176131716492767793e-02, +-2.180048640835252627e-02, +-2.183887512989617086e-02, +-2.187648249823371388e-02, +-2.191330770960237678e-02, +-2.194934998781103777e-02, +-2.198460858425039730e-02, +-2.201908277790084675e-02, +-2.205277187533984454e-02, +-2.208567521074877513e-02, +-2.211779214591815326e-02, +-2.214912207025205443e-02, +-2.217966440077214635e-02, +-2.220941858211982617e-02, +-2.223838408655824661e-02, +-2.226656041397285721e-02, +-2.229394709187123083e-02, +-2.232054367538185979e-02, +-2.234634974725192846e-02, +-2.237136491784458281e-02, +-2.239558882513429522e-02, +-2.241902113470234381e-02, +-2.244166153973074784e-02, +-2.246350976099515881e-02, +-2.248456554685739073e-02, +-2.250482867325626080e-02, +-2.252429894369804494e-02, +-2.254297618924576765e-02, +-2.256086026850767992e-02, +-2.257795106762433210e-02, +-2.259424850025546286e-02, +-2.260975250756524710e-02, +-2.262446305820708936e-02, +-2.263838014830715437e-02, +-2.265150380144716549e-02, +-2.266383406864608957e-02, +-2.267537102834113819e-02, +-2.268611478636751652e-02, +-2.269606547593752341e-02, +-2.270522325761853422e-02, +-2.271358831931004699e-02, +-2.272116087622008673e-02, +-2.272794117084021848e-02, +-2.273392947292002600e-02, +-2.273912607944043873e-02, +-2.274353131458628496e-02, +-2.274714552971776257e-02, +-2.274996910334114303e-02, +-2.275200244107850739e-02, +-2.275324597563636170e-02, +-2.275370016677385338e-02, +-2.275336550126943677e-02, +-2.275224249288709116e-02, +-2.275033168234133138e-02, +-2.274763363726172230e-02, +-2.274414895215584945e-02, +-2.273987824837205018e-02, +-2.273482217406064265e-02, +-2.272898140413487714e-02, +-2.272235664023035742e-02, +-2.271494861066413948e-02, +-2.270675807039231747e-02, +-2.269778580096736345e-02, +-2.268803261049419026e-02, +-2.267749933358528466e-02, +-2.266618683131520900e-02, +-2.265409599117402389e-02, +-2.264122772701984351e-02, +-2.262758297903059643e-02, +-2.261316271365491209e-02, +-2.259796792356203940e-02, +-2.258199962759077292e-02, +-2.256525887069798716e-02, +-2.254774672390566850e-02, +-2.252946428424760367e-02, +-2.251041267471491983e-02, +-2.249059304420072611e-02, +-2.247000656744422425e-02, +-2.244865444497351828e-02, +-2.242653790304795225e-02, +-2.240365819359937949e-02, +-2.238001659417252973e-02, +-2.235561440786480378e-02, +-2.233045296326504822e-02, +-2.230453361439124066e-02, +-2.227785774062796334e-02, +-2.225042674666236758e-02, +-2.222224206241973574e-02, +-2.219330514299809945e-02, +-2.216361746860196630e-02, +-2.213318054447508884e-02, +-2.210199590083307061e-02, +-2.207006509279409515e-02, +-2.203738970030971397e-02, +-2.200397132809459727e-02, +-2.196981160555513610e-02, +-2.193491218671758669e-02, +-2.189927475015553474e-02, +-2.186290099891595798e-02, +-2.182579266044511884e-02, +-2.178795148651340233e-02, +-2.174937925313927267e-02, +-2.171007776051250837e-02, +-2.167004883291693412e-02, +-2.162929431865179275e-02, +-2.158781608995275977e-02, +-2.154561604291231960e-02, +-2.150269609739862905e-02, +-2.145905819697458555e-02, +-2.141470430881544859e-02, +-2.136963642362592342e-02, +-2.132385655555626286e-02, +-2.127736674211827550e-02, +-2.123016904409963032e-02, +-2.118226554547809892e-02, +-2.113365835333498241e-02, +-2.108434959776728929e-02, +-2.103434143179989946e-02, +-2.098363603129648619e-02, +-2.093223559486982743e-02, +-2.088014234379131223e-02, +-2.082735852190018347e-02, +-2.077388639551124017e-02, +-2.071972825332259877e-02, +-2.066488640632232685e-02, +-2.060936318769432396e-02, +-2.055316095272367513e-02, +-2.049628207870161228e-02, +-2.043872896482880341e-02, +-2.038050403211884992e-02, +-2.032160972330105883e-02, +-2.026204850272175784e-02, +-2.020182285624563118e-02, +-2.014093529115654202e-02, +-2.007938833605663401e-02, +-2.001718454076589424e-02, +-1.995432647622053662e-02, +-1.989081673437059772e-02, +-1.982665792807720637e-02, +-1.976185269100888542e-02, +-1.969640367753764179e-02, +-1.963031356263347099e-02, +-1.956358504175966309e-02, +-1.949622083076607212e-02, +-1.942822366578255203e-02, +-1.935959630311154256e-02, +-1.929034151912006195e-02, +-1.922046211013061362e-02, +-1.914996089231281451e-02, +-1.907884070157240403e-02, +-1.900710439344140482e-02, +-1.893475484296692005e-02, +-1.886179494459913966e-02, +-1.878822761207914194e-02, +-1.871405577832618503e-02, +-1.863928239532363501e-02, +-1.856391043400536928e-02, +-1.848794288414094128e-02, +-1.841138275422012430e-02, +-1.833423307133727476e-02, +-1.825649688107483862e-02, +-1.817817724738634427e-02, +-1.809927725247868421e-02, +-1.801979999669454935e-02, +-1.793974859839314942e-02, +-1.785912619383124567e-02, +-1.777793593704372552e-02, +-1.769618099972276523e-02, +-1.761386457109714518e-02, +-1.753098985781153391e-02, +-1.744756008380344767e-02, +-1.736357849018189958e-02, +-1.727904833510399141e-02, +-1.719397289365155040e-02, +-1.710835545770711050e-02, +-1.702219933582982750e-02, +-1.693550785313002391e-02, +-1.684828435114404596e-02, +-1.676053218770860720e-02, +-1.667225473683374773e-02, +-1.658345538857645615e-02, +-1.649413754891326800e-02, +-1.640430463961214946e-02, +-1.631396009810423542e-02, +-1.622310737735577213e-02, +-1.613174994573776319e-02, +-1.603989128689708651e-02, +-1.594753489962638313e-02, +-1.585468429773310983e-02, +-1.576134300990859882e-02, +-1.566751457959735666e-02, +-1.557320256486404569e-02, +-1.547841053826206140e-02, +-1.538314208670076358e-02, +-1.528740081131192523e-02, +-1.519119032731666361e-02, +-1.509451426389145715e-02, +-1.499737626403355173e-02, +-1.489977998442652482e-02, +-1.480172909530525285e-02, +-1.470322728032014484e-02, +-1.460427823640148351e-02, +-1.450488567362328597e-02, +-1.440505331506649125e-02, +-1.430478489668178532e-02, +-1.420408416715326395e-02, +-1.410295488775945884e-02, +-1.400140083223608972e-02, +-1.389942578663771848e-02, +-1.379703354919874225e-02, +-1.369422793019418536e-02, +-1.359101275180127875e-02, +-1.348739184795838195e-02, +-1.338336906422606457e-02, +-1.327894825764642378e-02, +-1.317413329660224210e-02, +-1.306892806067627352e-02, +-1.296333644051009780e-02, +-1.285736233766237614e-02, +-1.275100966446686586e-02, +-1.264428234389095365e-02, +-1.253718430939260858e-02, +-1.242971950477799771e-02, +-1.232189188405869405e-02, +-1.221370541130826527e-02, +-1.210516406051866979e-02, +-1.199627181545734680e-02, +-1.188703266952217431e-02, +-1.177745062559797801e-02, +-1.166752969591214155e-02, +-1.155727390188950737e-02, +-1.144668727400779268e-02, +-1.133577385165260819e-02, +-1.122453768297161127e-02, +-1.111298282472945181e-02, +-1.100111334216199652e-02, +-1.088893330883010553e-02, +-1.077644680647357744e-02, +-1.066365792486514454e-02, +-1.055057076166350527e-02, +-1.043718942226662567e-02, +-1.032351801966543102e-02, +-1.020956067429608372e-02, +-1.009532151389309559e-02, +-9.980804673342068972e-03, +-9.866014294531775045e-03, +-9.750954526206979944e-03, +-9.635629523820216091e-03, +-9.520043449383654155e-03, +-9.404200471322067892e-03, +-9.288104764323130980e-03, +-9.171760509190053992e-03, +-9.055171892693024416e-03, +-8.938343107420297987e-03, +-8.821278351629404518e-03, +-8.703981829099321707e-03, +-8.586457748980202975e-03, +-8.468710325645341375e-03, +-8.350743778541955611e-03, +-8.232562332041785252e-03, +-8.114170215291913180e-03, +-7.995571662065858662e-03, +-7.876770910613678164e-03, +-7.757772203512596117e-03, +-7.638579787518150893e-03, +-7.519197913413848931e-03, +-7.399630835861967237e-03, +-7.279882813254146857e-03, +-7.159958107561304602e-03, +-7.039860984183864828e-03, +-6.919595711803034656e-03, +-6.799166562229660982e-03, +-6.678577810255433705e-03, +-6.557833733503068939e-03, +-6.436938612276165220e-03, +-6.315896729409391057e-03, +-6.194712370119691627e-03, +-6.073389821855109359e-03, +-5.951933374146112059e-03, +-5.830347318455689383e-03, +-5.708635948029338290e-03, +-5.586803557745648706e-03, +-5.464854443966910870e-03, +-5.342792904389175382e-03, +-5.220623237892694016e-03, +-5.098349744393057027e-03, +-4.975976724691116154e-03, +-4.853508480323891205e-03, +-4.730949313415542569e-03, +-4.608303526527789476e-03, +-4.485575422510628373e-03, +-4.362769304354342792e-03, +-4.239889475039071605e-03, +-4.116940237386972415e-03, +-3.993925893913327640e-03, +-3.870850746677485365e-03, +-3.747719097134599893e-03, +-3.624535245987407870e-03, +-3.501303493037245460e-03, +-3.378028137036475850e-03, +-3.254713475540381602e-03, +-3.131363804758847090e-03, +-3.007983419408793817e-03, +-2.884576612566757542e-03, +-2.761147675521031727e-03, +-2.637700897624235992e-03, +-2.514240566146805269e-03, +-2.390770966129234301e-03, +-2.267296380235498277e-03, +-2.143821088606640002e-03, +-2.020349368713863537e-03, +-1.896885495212083860e-03, +-1.773433739794856925e-03, +-1.649998371046929252e-03, +-1.526583654299577385e-03, +-1.403193851484911070e-03, +-1.279833220990185321e-03, +-1.156506017512916751e-03, +-1.033216491916293719e-03, +-9.099688910837541332e-04, +-7.867674577752378122e-04, +-6.636164304828861106e-04, +-5.405200432867124935e-04, +-4.174825257110998137e-04, +-2.945081025815410466e-04, +-1.716009938810469850e-04, +-4.876541460702524413e-05, + 7.399442537038658876e-05, + 1.966743214522470714e-04, + 3.192700744519398094e-04, + 4.417774907372183537e-04, + 5.641923823721127409e-04, + 6.865105672584077660e-04, + 8.087278692756437329e-04, + 9.308401184233330416e-04, + 1.052843150960382137e-03, + 1.174732809545360164e-03, + 1.296504943376712441e-03, + 1.418155408332052135e-03, + 1.539680067107132436e-03, + 1.661074789355097359e-03, + 1.782335451825100897e-03, + 1.903457938499860834e-03, + 2.024438140734280932e-03, + 2.145271957392683171e-03, + 2.265955294985793223e-03, + 2.386484067807952743e-03, + 2.506854198073739902e-03, + 2.627061616053086562e-03, + 2.747102260208499243e-03, + 2.866972077329447716e-03, + 2.986667022667534224e-03, + 3.106183060071405957e-03, + 3.225516162121221716e-03, + 3.344662310261458001e-03, + 3.463617494935885676e-03, + 3.582377715719659191e-03, + 3.700938981452131342e-03, + 3.819297310369545312e-03, + 3.937448730236663315e-03, + 4.055389278478044833e-03, + 4.173115002309503094e-03, + 4.290621958868744493e-03, + 4.407906215345009683e-03, + 4.524963849109518710e-03, + 4.641790947844548314e-03, + 4.758383609672180506e-03, + 4.874737943283089306e-03, + 4.990850068064676959e-03, + 5.106716114227768596e-03, + 5.222332222935020807e-03, + 5.337694546426706432e-03, + 5.452799248146997235e-03, + 5.567642502870082631e-03, + 5.682220496825196414e-03, + 5.796529427821185514e-03, + 5.910565505371439578e-03, + 6.024324950817197717e-03, + 6.137803997450883876e-03, + 6.250998890639326844e-03, + 6.363905887945945500e-03, + 6.476521259252390229e-03, + 6.588841286880223365e-03, + 6.700862265711889261e-03, + 6.812580503310372917e-03, + 6.923992320039829181e-03, + 7.035094049184498037e-03, + 7.145882037067385721e-03, + 7.256352643168840870e-03, + 7.366502240244394289e-03, + 7.476327214441089511e-03, + 7.585823965415458732e-03, + 7.694988906448703252e-03, + 7.803818464562471517e-03, + 7.912309080634149713e-03, + 8.020457209511236418e-03, + 8.128259320124913215e-03, + 8.235711895604218985e-03, + 8.342811433388119119e-03, + 8.449554445337934677e-03, + 8.555937457849266750e-03, + 8.661957011963006617e-03, + 8.767609663475579157e-03, + 8.872891983049285142e-03, + 8.977800556321715447e-03, + 9.082331984013739326e-03, + 9.186482882038946376e-03, + 9.290249881610300811e-03, + 9.393629629347328286e-03, + 9.496618787382900273e-03, + 9.599214033468504020e-03, + 9.701412061079843843e-03, + 9.803209579521523012e-03, + 9.904603314030183472e-03, + 1.000559000587908885e-02, + 1.010616641247996834e-02, + 1.020632930748534284e-02, + 1.030607548089013635e-02, + 1.040540173913275489e-02, + 1.050430490519447049e-02, + 1.060278181870017919e-02, + 1.070082933601651520e-02, + 1.079844433035032428e-02, + 1.089562369184667555e-02, + 1.099236432768559667e-02, + 1.108866316217835789e-02, + 1.118451713686353412e-02, + 1.127992321060189602e-02, + 1.137487835967062287e-02, + 1.146937957785748065e-02, + 1.156342387655382060e-02, + 1.165700828484619693e-02, + 1.175012984960944161e-02, + 1.184278563559693423e-02, + 1.193497272553099148e-02, + 1.202668822019265643e-02, + 1.211792923851129876e-02, + 1.220869291765190427e-02, + 1.229897641310395175e-02, + 1.238877689876734592e-02, + 1.247809156703925948e-02, + 1.256691762889990821e-02, + 1.265525231399690712e-02, + 1.274309287072975666e-02, + 1.283043656633353798e-02, + 1.291728068696155855e-02, + 1.300362253776720690e-02, + 1.308945944298555569e-02, + 1.317478874601430219e-02, + 1.325960780949325853e-02, + 1.334391401538365281e-02, + 1.342770476504728631e-02, + 1.351097747932332449e-02, + 1.359372959860644624e-02, + 1.367595858292232000e-02, + 1.375766191200363149e-02, + 1.383883708536518334e-02, + 1.391948162237794870e-02, + 1.399959306234187240e-02, + 1.407916896455966259e-02, + 1.415820690840819719e-02, + 1.423670449340956948e-02, + 1.431465933930179367e-02, + 1.439206908610891032e-02, + 1.446893139420930841e-02, + 1.454524394440433015e-02, + 1.462100443798604321e-02, + 1.469621059680334407e-02, + 1.477086016332868242e-02, + 1.484495090072272469e-02, + 1.491848059289905583e-02, + 1.499144704458813503e-02, + 1.506384808140014651e-02, + 1.513568154988661173e-02, + 1.520694531760288966e-02, + 1.527763727316827636e-02, + 1.534775532632576441e-02, + 1.541729740800147630e-02, + 1.548626147036315064e-02, + 1.555464548687730819e-02, + 1.562244745236675628e-02, + 1.568966538306579978e-02, + 1.575629731667621547e-02, + 1.582234131242160960e-02, + 1.588779545110093755e-02, + 1.595265783514151353e-02, + 1.601692658865138189e-02, + 1.608059985747074816e-02, + 1.614367580922199119e-02, + 1.620615263336012621e-02, + 1.626802854122168240e-02, + 1.632930176607275824e-02, + 1.638997056315654940e-02, + 1.645003320974021063e-02, + 1.650948800516041995e-02, + 1.656833327086880067e-02, + 1.662656735047578910e-02, + 1.668418860979449525e-02, + 1.674119543688341524e-02, + 1.679758624208790158e-02, + 1.685335945808172364e-02, + 1.690851353990724740e-02, + 1.696304696501492459e-02, + 1.701695823330185917e-02, + 1.707024586714987052e-02, + 1.712290841146273807e-02, + 1.717494443370218629e-02, + 1.722635252392349173e-02, + 1.727713129481052781e-02, + 1.732727938170896057e-02, + 1.737679544266008611e-02, + 1.742567815843261078e-02, + 1.747392623255423008e-02, + 1.752153839134243732e-02, + 1.756851338393440945e-02, + 1.761484998231563001e-02, + 1.766054698134867165e-02, + 1.770560319880053191e-02, + 1.775001747536888649e-02, + 1.779378867470824202e-02, + 1.783691568345490558e-02, + 1.787939741125114945e-02, + 1.792123279076842171e-02, + 1.796242077773028273e-02, + 1.800296035093375269e-02, + 1.804285051227065562e-02, + 1.808209028674747157e-02, + 1.812067872250464062e-02, + 1.815861489083537769e-02, + 1.819589788620319323e-02, + 1.823252682625850843e-02, + 1.826850085185518016e-02, + 1.830381912706565903e-02, + 1.833848083919515162e-02, + 1.837248519879548792e-02, + 1.840583143967802066e-02, + 1.843851881892536598e-02, + 1.847054661690291852e-02, + 1.850191413726888501e-02, + 1.853262070698417918e-02, + 1.856266567632097741e-02, + 1.859204841887079560e-02, + 1.862076833155142108e-02, + 1.864882483461351159e-02, + 1.867621737164594509e-02, + 1.870294540958048271e-02, + 1.872900843869576906e-02, + 1.875440597262031939e-02, + 1.877913754833488574e-02, + 1.880320272617378580e-02, + 1.882660108982582570e-02, + 1.884933224633368598e-02, + 1.887139582609340810e-02, + 1.889279148285237867e-02, + 1.891351889370680023e-02, + 1.893357775909837795e-02, + 1.895296780280989954e-02, + 1.897168877196058964e-02, + 1.898974043700002098e-02, + 1.900712259170158486e-02, + 1.902383505315527121e-02, + 1.903987766175902971e-02, + 1.905525028121022452e-02, + 1.906995279849559369e-02, + 1.908398512388055288e-02, + 1.909734719089801330e-02, + 1.911003895633593685e-02, + 1.912206040022464831e-02, + 1.913341152582260368e-02, + 1.914409235960211342e-02, + 1.915410295123387216e-02, + 1.916344337357066621e-02, + 1.917211372263061611e-02, + 1.918011411757922571e-02, + 1.918744470071081717e-02, + 1.919410563742927553e-02, + 1.920009711622791895e-02, + 1.920541934866842534e-02, + 1.921007256935930094e-02, + 1.921405703593342604e-02, + 1.921737302902446626e-02, + 1.922002085224315884e-02, + 1.922200083215233266e-02, + 1.922331331824129672e-02, + 1.922395868289938567e-02, + 1.922393732138893627e-02, + 1.922324965181723341e-02, + 1.922189611510789764e-02, + 1.921987717497119705e-02, + 1.921719331787400536e-02, + 1.921384505300866366e-02, + 1.920983291226120715e-02, + 1.920515745017882525e-02, + 1.919981924393643694e-02, + 1.919381889330281504e-02, + 1.918715702060544773e-02, + 1.917983427069525071e-02, + 1.917185131090988481e-02, + 1.916320883103691045e-02, + 1.915390754327575204e-02, + 1.914394818219909353e-02, + 1.913333150471354174e-02, + 1.912205829001954738e-02, + 1.911012933957028856e-02, + 1.909754547703048158e-02, + 1.908430754823357833e-02, + 1.907041642113888741e-02, + 1.905587298578782784e-02, + 1.904067815425910734e-02, + 1.902483286062357781e-02, + 1.900833806089816114e-02, + 1.899119473299908795e-02, + 1.897340387669427947e-02, + 1.895496651355524365e-02, + 1.893588368690819063e-02, + 1.891615646178405191e-02, + 1.889578592486838848e-02, + 1.887477318445011584e-02, + 1.885311937036975374e-02, + 1.883082563396679468e-02, + 1.880789314802645482e-02, + 1.878432310672585245e-02, + 1.876011672557915261e-02, + 1.873527524138219116e-02, + 1.870979991215654045e-02, + 1.868369201709266930e-02, + 1.865695285649236063e-02, + 1.862958375171064329e-02, + 1.860158604509687397e-02, + 1.857296109993531591e-02, + 1.854371030038461099e-02, + 1.851383505141721356e-02, + 1.848333677875734285e-02, + 1.845221692881920256e-02, + 1.842047696864362177e-02, + 1.838811838583445657e-02, + 1.835514268849442257e-02, + 1.832155140516013650e-02, + 1.828734608473618281e-02, + 1.825252829642902072e-02, + 1.821709962968008287e-02, + 1.818106169409788170e-02, + 1.814441611938988688e-02, + 1.810716455529356311e-02, + 1.806930867150667586e-02, + 1.803085015761718771e-02, + 1.799179072303231514e-02, + 1.795213209690686360e-02, + 1.791187602807130588e-02, + 1.787102428495874681e-02, + 1.782957865553158258e-02, + 1.778754094720736215e-02, + 1.774491298678437107e-02, + 1.770169662036587613e-02, + 1.765789371328437690e-02, + 1.761350615002507669e-02, + 1.756853583414880876e-02, + 1.752298468821389052e-02, + 1.747685465369816504e-02, + 1.743014769091950217e-02, + 1.738286577895672980e-02, + 1.733501091556901089e-02, + 1.728658511711513024e-02, + 1.723759041847225046e-02, + 1.718802887295380402e-02, + 1.713790255222680248e-02, + 1.708721354622873279e-02, + 1.703596396308417610e-02, + 1.698415592901989304e-02, + 1.693179158828022821e-02, + 1.687887310304175825e-02, + 1.682540265332712476e-02, + 1.677138243691824598e-02, + 1.671681466926954254e-02, + 1.666170158341985508e-02, + 1.660604542990444521e-02, + 1.654984847666611178e-02, + 1.649311300896565483e-02, + 1.643584132929191283e-02, + 1.637803575727200117e-02, + 1.631969862957930589e-02, + 1.626083229984251130e-02, + 1.620143913855357984e-02, + 1.614152153297516989e-02, + 1.608108188704705441e-02, + 1.602012262129319173e-02, + 1.595864617272719707e-02, + 1.589665499475750171e-02, + 1.583415155709276545e-02, + 1.577113834564553355e-02, + 1.570761786243669508e-02, + 1.564359262549840091e-02, + 1.557906516877692951e-02, + 1.551403804203508284e-02, + 1.544851381075452827e-02, + 1.538249505603620122e-02, + 1.531598437450189254e-02, + 1.524898437819462681e-02, + 1.518149769447843522e-02, + 1.511352696593780062e-02, + 1.504507485027690994e-02, + 1.497614402021787104e-02, + 1.490673716339916376e-02, + 1.483685698227316802e-02, + 1.476650619400304322e-02, + 1.469568753035998925e-02, + 1.462440373761927752e-02, + 1.455265757645607741e-02, + 1.448045182184086108e-02, + 1.440778926293477362e-02, + 1.433467270298388087e-02, + 1.426110495921315002e-02, + 1.418708886272073040e-02, + 1.411262725837097130e-02, + 1.403772300468706172e-02, + 1.396237897374420951e-02, + 1.388659805106094020e-02, + 1.381038313549157875e-02, + 1.373373713911713034e-02, + 1.365666298713603607e-02, + 1.357916361775516820e-02, + 1.350124198207987292e-02, + 1.342290104400330891e-02, + 1.334414378009625424e-02, + 1.326497317949619156e-02, + 1.318539224379586955e-02, + 1.310540398693122582e-02, + 1.302501143506995529e-02, + 1.294421762649881902e-02, + 1.286302561151059405e-02, + 1.278143845229153842e-02, + 1.269945922280738167e-02, + 1.261709100869000053e-02, + 1.253433690712308160e-02, + 1.245120002672745092e-02, + 1.236768348744680078e-02, + 1.228379042043228203e-02, + 1.219952396792690560e-02, + 1.211488728315037421e-02, + 1.202988353018238574e-02, + 1.194451588384689948e-02, + 1.185878752959517758e-02, + 1.177270166338870681e-02, + 1.168626149158237711e-02, + 1.159947023080680657e-02, + 1.151233110785025195e-02, + 1.142484735954087116e-02, + 1.133702223262840481e-02, + 1.124885898366548807e-02, + 1.116036087888837465e-02, + 1.107153119409851061e-02, + 1.098237321454267716e-02, + 1.089289023479312474e-02, + 1.080308555862839574e-02, + 1.071296249891229117e-02, + 1.062252437747425449e-02, + 1.053177452498839373e-02, + 1.044071628085248629e-02, + 1.034935299306685708e-02, + 1.025768801811399733e-02, + 1.016572472083561961e-02, + 1.007346647431169549e-02, + 9.980916659738693630e-03, + 9.888078666307097836e-03, + 9.794955891078819393e-03, + 9.701551738865299770e-03, + 9.607869622104001778e-03, + 9.513912960736174013e-03, + 9.419685182083433958e-03, + 9.325189720724135975e-03, + 9.230430018370516451e-03, + 9.135409523744803320e-03, + 9.040131692455122617e-03, + 8.944599986871668712e-03, + 8.848817876003325575e-03, + 8.752788835372109222e-03, + 8.656516346889436830e-03, + 8.560003898731726249e-03, + 8.463254985215442130e-03, + 8.366273106671916551e-03, + 8.269061769323144545e-03, + 8.171624485155785933e-03, + 8.073964771796700648e-03, + 7.976086152387346084e-03, + 7.877992155457846576e-03, + 7.779686314802221683e-03, + 7.681172169352324698e-03, + 7.582453263051854020e-03, + 7.483533144730685448e-03, + 7.384415367979182791e-03, + 7.285103491021882247e-03, + 7.185601076591062279e-03, + 7.085911691801206891e-03, + 6.986038908022328305e-03, + 6.885986300753385927e-03, + 6.785757449496574410e-03, + 6.685355937629942034e-03, + 6.584785352281750763e-03, + 6.484049284203445042e-03, + 6.383151327642865198e-03, + 6.282095080217611760e-03, + 6.180884142789266726e-03, + 6.079522119335117707e-03, + 5.978012616822295060e-03, + 5.876359245081048607e-03, + 5.774565616677745060e-03, + 5.672635346787597427e-03, + 5.570572053068606130e-03, + 5.468379355534291886e-03, + 5.366060876426498837e-03, + 5.263620240089391181e-03, + 5.161061072841650887e-03, + 5.058387002850427486e-03, + 4.955601660004180231e-03, + 4.852708675785660786e-03, + 4.749711683145209015e-03, + 4.646614316374858902e-03, + 4.543420210980151155e-03, + 4.440133003554318919e-03, + 4.336756331651733624e-03, + 4.233293833661081959e-03, + 4.129749148678431812e-03, + 4.026125916381596663e-03, + 3.922427776902741824e-03, + 3.818658370702809977e-03, + 3.714821338444885494e-03, + 3.610920320867558320e-03, + 3.506958958659539896e-03, + 3.402940892333166257e-03, + 3.298869762098176946e-03, + 3.194749207736021727e-03, + 3.090582868474330350e-03, + 2.986374382860920024e-03, + 2.882127388637794208e-03, + 2.777845522616391710e-03, + 2.673532420551809254e-03, + 2.569191717017110365e-03, + 2.464827045279071888e-03, + 2.360442037172083476e-03, + 2.256040322974148683e-03, + 2.151625531281681301e-03, + 2.047201288884499884e-03, + 1.942771220642053711e-03, + 1.838338949358669493e-03, + 1.733908095659088440e-03, + 1.629482277864633451e-03, + 1.525065111869564755e-03, + 1.420660211017043704e-03, + 1.316271185975206740e-03, + 1.211901644614462974e-03, + 1.107555191883890372e-03, + 1.003235429687791315e-03, + 8.989459567636706293e-04, + 7.946903685585427575e-04, + 6.904722571072911038e-04, + 5.862952109099781994e-04, + 4.821628148094715314e-04, + 3.780786498696533785e-04, + 2.740462932545903820e-04, + 1.700693181055207260e-04, + 6.615129342045394695e-05, +-3.770421606677580958e-05, +-1.414936500076040520e-04, +-2.452134525597306691e-04, +-3.488600725066301933e-04, +-4.524299633787056546e-04, +-5.559195835723291200e-04, +-6.593253964698814413e-04, +-7.626438705595621785e-04, +-8.658714795538029630e-04, +-9.690047025085711530e-04, +-1.072040023942268756e-03, +-1.174973933954016935e-03, +-1.277802928340907159e-03, +-1.380523508717356471e-03, +-1.483132182631826399e-03, +-1.585625463684000062e-03, +-1.687999871642072462e-03, +-1.790251932559834992e-03, +-1.892378178892288251e-03, +-1.994375149612764072e-03, +-2.096239390327925105e-03, +-2.197967453393707884e-03, +-2.299555898030920028e-03, +-2.401001290439449664e-03, +-2.502300203913285833e-03, +-2.603449218955047537e-03, +-2.704444923389746902e-03, +-2.805283912478201067e-03, +-2.905962789030639652e-03, +-3.006478163520059400e-03, +-3.106826654194166752e-03, +-3.207004887188090632e-03, +-3.307009496636714903e-03, +-3.406837124785505946e-03, +-3.506484422102764450e-03, +-3.605948047389703585e-03, +-3.705224667891401057e-03, +-3.804310959407415475e-03, +-3.903203606400888759e-03, +-4.001899302108397061e-03, +-4.100394748649457792e-03, +-4.198686657134403401e-03, +-4.296771747773732268e-03, +-4.394646749985233088e-03, +-4.492308402501929768e-03, +-4.589753453479691533e-03, +-4.686978660603294787e-03, +-4.783980791193223094e-03, +-4.880756622311885166e-03, +-4.977302940869038350e-03, +-5.073616543726759340e-03, +-5.169694237804412298e-03, +-5.265532840183511157e-03, +-5.361129178210854128e-03, +-5.456480089602535125e-03, +-5.551582422547319401e-03, +-5.646433035808625343e-03, +-5.741028798827675465e-03, +-5.835366591824510223e-03, +-5.929443305899749495e-03, +-6.023255843135806760e-03, +-6.116801116697255861e-03, +-6.210076050930149992e-03, +-6.303077581462931435e-03, +-6.395802655304913542e-03, +-6.488248230944782674e-03, +-6.580411278449150442e-03, +-6.672288779560638441e-03, +-6.763877727794473729e-03, +-6.855175128536194519e-03, +-6.946177999137275946e-03, +-7.036883369011399415e-03, +-7.127288279730179844e-03, +-7.217389785117512072e-03, +-7.307184951344372625e-03, +-7.396670857022979648e-03, +-7.485844593300210355e-03, +-7.574703263949853632e-03, +-7.663243985466459442e-03, +-7.751463887156488132e-03, +-7.839360111229863939e-03, +-7.926929812891069654e-03, +-8.014170160430055673e-03, +-8.101078335311441211e-03, +-8.187651532264892534e-03, +-8.273886959373276395e-03, +-8.359781838161519513e-03, +-8.445333403684772422e-03, +-8.530538904615249732e-03, +-8.615395603329398244e-03, +-8.699900775994435370e-03, +-8.784051712653980284e-03, +-8.867845717313183745e-03, +-8.951280108023566481e-03, +-9.034352216967685839e-03, +-9.117059390542067709e-03, +-9.199398989440702237e-03, +-9.281368388737946257e-03, +-9.362964977969755187e-03, +-9.444186161216075459e-03, +-9.525029357180981801e-03, +-9.605491999273423412e-03, +-9.685571535687232878e-03, +-9.765265429479868739e-03, +-9.844571158651350615e-03, +-9.923486216222545536e-03, +-1.000200811031260947e-02, +-1.008013436421564303e-02, +-1.015786251647746163e-02, +-1.023519012097144805e-02, +-1.031211474697353754e-02, +-1.038863397923694108e-02, +-1.046474541806664306e-02, +-1.054044667939213475e-02, +-1.061573539484119040e-02, +-1.069060921181149391e-02, +-1.076506579354261431e-02, +-1.083910281918742079e-02, +-1.091271798388242058e-02, +-1.098590899881721206e-02, +-1.105867359130480176e-02, +-1.113100950484971832e-02, +-1.120291449921624258e-02, +-1.127438635049585886e-02, +-1.134542285117465937e-02, +-1.141602181019905210e-02, +-1.148618105304193872e-02, +-1.155589842176749614e-02, +-1.162517177509573077e-02, +-1.169399898846669797e-02, +-1.176237795410316374e-02, +-1.183030658107355783e-02, +-1.189778279535406297e-02, +-1.196480453988999458e-02, +-1.203136977465590375e-02, +-1.209747647671677653e-02, +-1.216312264028689832e-02, +-1.222830627678854476e-02, +-1.229302541491060149e-02, +-1.235727810066625937e-02, +-1.242106239744936343e-02, +-1.248437638609156165e-02, +-1.254721816491722285e-02, +-1.260958584979889920e-02, +-1.267147757421183997e-02, +-1.273289148928736375e-02, +-1.279382576386618557e-02, +-1.285427858455096342e-02, +-1.291424815575812832e-02, +-1.297373269976871343e-02, +-1.303273045677920926e-02, +-1.309123968495149934e-02, +-1.314925866046177082e-02, +-1.320678567754913352e-02, +-1.326381904856393373e-02, +-1.332035710401433329e-02, +-1.337639819261355993e-02, +-1.343194068132532414e-02, +-1.348698295540926712e-02, +-1.354152341846578782e-02, +-1.359556049247979959e-02, +-1.364909261786366283e-02, +-1.370211825350049067e-02, +-1.375463587678569383e-02, +-1.380664398366820110e-02, +-1.385814108869117683e-02, +-1.390912572503214505e-02, +-1.395959644454196000e-02, +-1.400955181778349573e-02, +-1.405899043406978917e-02, +-1.410791090150091513e-02, +-1.415631184700099146e-02, +-1.420419191635368707e-02, +-1.425154977423769530e-02, +-1.429838410426125840e-02, +-1.434469360899618198e-02, +-1.439047701001039056e-02, +-1.443573304790142509e-02, +-1.448046048232757080e-02, +-1.452465809203922625e-02, +-1.456832467490938414e-02, +-1.461145904796355526e-02, +-1.465406004740853023e-02, +-1.469612652866135634e-02, +-1.473765736637651022e-02, +-1.477865145447332385e-02, +-1.481910770616236446e-02, +-1.485902505397088472e-02, +-1.489840244976809239e-02, +-1.493723886478938098e-02, +-1.497553328965996015e-02, +-1.501328473441776619e-02, +-1.505049222853576882e-02, +-1.508715482094367781e-02, +-1.512327158004862261e-02, +-1.515884159375542606e-02, +-1.519386396948612869e-02, +-1.522833783419900999e-02, +-1.526226233440640574e-02, +-1.529563663619222524e-02, +-1.532845992522890999e-02, +-1.536073140679345556e-02, +-1.539245030578255923e-02, +-1.542361586672746226e-02, +-1.545422735380815558e-02, +-1.548428405086628781e-02, +-1.551378526141820174e-02, +-1.554273030866654658e-02, +-1.557111853551162994e-02, +-1.559894930456207605e-02, +-1.562622199814462862e-02, +-1.565293601831317660e-02, +-1.567909078685747123e-02, +-1.570468574531082295e-02, +-1.572972035495718429e-02, +-1.575419409683759264e-02, +-1.577810647175590525e-02, +-1.580145700028390277e-02, +-1.582424522276544565e-02, +-1.584647069932046404e-02, +-1.586813300984758410e-02, +-1.588923175402669197e-02, +-1.590976655132043255e-02, +-1.592973704097502829e-02, +-1.594914288202073371e-02, +-1.596798375327124209e-02, +-1.598625935332243647e-02, +-1.600396940055088049e-02, +-1.602111363311100461e-02, +-1.603769180893207733e-02, +-1.605370370571422220e-02, +-1.606914912092401518e-02, +-1.608402787178913121e-02, +-1.609833979529236639e-02, +-1.611208474816519867e-02, +-1.612526260688037019e-02, +-1.613787326764397692e-02, +-1.614991664638687832e-02, +-1.616139267875515637e-02, +-1.617230132010046353e-02, +-1.618264254546906630e-02, +-1.619241634959064924e-02, +-1.620162274686613030e-02, +-1.621026177135519164e-02, +-1.621833347676268633e-02, +-1.622583793642466687e-02, +-1.623277524329374069e-02, +-1.623914550992363801e-02, +-1.624494886845310668e-02, +-1.625018547058913743e-02, +-1.625485548758974844e-02, +-1.625895911024582974e-02, +-1.626249654886236309e-02, +-1.626546803323902432e-02, +-1.626787381265029642e-02, +-1.626971415582451064e-02, +-1.627098935092266205e-02, +-1.627169970551623976e-02, +-1.627184554656465817e-02, +-1.627142722039167863e-02, +-1.627044509266169919e-02, +-1.626889954835478505e-02, +-1.626679099174156359e-02, +-1.626411984635712724e-02, +-1.626088655497445398e-02, +-1.625709157957712023e-02, +-1.625273540133129191e-02, +-1.624781852055739648e-02, +-1.624234145670051116e-02, +-1.623630474830084838e-02, +-1.622970895296310320e-02, +-1.622255464732529767e-02, +-1.621484242702695214e-02, +-1.620657290667673958e-02, +-1.619774671981933853e-02, +-1.618836451890188002e-02, +-1.617842697523936765e-02, +-1.616793477897988593e-02, +-1.615688863906890316e-02, +-1.614528928321313714e-02, +-1.613313745784364026e-02, +-1.612043392807823577e-02, +-1.610717947768356903e-02, +-1.609337490903618717e-02, +-1.607902104308343502e-02, +-1.606411871930311930e-02, +-1.604866879566329424e-02, +-1.603267214858079825e-02, +-1.601612967287956851e-02, +-1.599904228174808818e-02, +-1.598141090669648670e-02, +-1.596323649751276580e-02, +-1.594452002221859871e-02, +-1.592526246702436268e-02, +-1.590546483628391128e-02, +-1.588512815244834050e-02, +-1.586425345601918252e-02, +-1.584284180550137727e-02, +-1.582089427735547393e-02, +-1.579841196594878802e-02, +-1.577539598350683955e-02, +-1.575184746006334097e-02, +-1.572776754341019545e-02, +-1.570315739904669383e-02, +-1.567801821012795513e-02, +-1.565235117741309648e-02, +-1.562615751921279592e-02, +-1.559943847133595830e-02, +-1.557219528703605339e-02, +-1.554442923695702888e-02, +-1.551614160907834050e-02, +-1.548733370865956749e-02, +-1.545800685818437409e-02, +-1.542816239730421257e-02, +-1.539780168278103746e-02, +-1.536692608842961383e-02, +-1.533553700505954111e-02, +-1.530363584041638352e-02, +-1.527122401912222281e-02, +-1.523830298261611392e-02, +-1.520487418909334358e-02, +-1.517093911344477401e-02, +-1.513649924719524635e-02, +-1.510155609844145326e-02, +-1.506611119178956175e-02, +-1.503016606829210566e-02, +-1.499372228538421205e-02, +-1.495678141681948403e-02, +-1.491934505260548820e-02, +-1.488141479893850642e-02, +-1.484299227813752967e-02, +-1.480407912857848070e-02, +-1.476467700462711675e-02, +-1.472478757657176389e-02, +-1.468441253055590562e-02, +-1.464355356850928838e-02, +-1.460221240807978507e-02, +-1.456039078256366262e-02, +-1.451809044083586346e-02, +-1.447531314727971627e-02, +-1.443206068171653568e-02, +-1.438833483933363820e-02, +-1.434413743061304682e-02, +-1.429947028125928311e-02, +-1.425433523212640829e-02, +-1.420873413914482825e-02, +-1.416266887324782627e-02, +-1.411614132029707057e-02, +-1.406915338100829700e-02, +-1.402170697087604979e-02, +-1.397380402009797129e-02, +-1.392544647349904484e-02, +-1.387663629045500328e-02, +-1.382737544481520489e-02, +-1.377766592482535489e-02, +-1.372750973304993211e-02, +-1.367690888629323996e-02, +-1.362586541552132657e-02, +-1.357438136578225339e-02, +-1.352245879612682354e-02, +-1.347009977952845147e-02, +-1.341730640280247924e-02, +-1.336408076652520829e-02, +-1.331042498495320706e-02, +-1.325634118594055597e-02, +-1.320183151085717495e-02, +-1.314689811450625752e-02, +-1.309154316504113416e-02, +-1.303576884388157539e-02, +-1.297957734563045216e-02, +-1.292297087798894260e-02, +-1.286595166167219667e-02, +-1.280852193032431738e-02, +-1.275068393043249544e-02, +-1.269243992124167476e-02, +-1.263379217466806953e-02, +-1.257474297521239334e-02, +-1.251529461987301549e-02, +-1.245544941805870262e-02, +-1.239520969150068735e-02, +-1.233457777416442462e-02, +-1.227355601216133067e-02, +-1.221214676365988717e-02, +-1.215035239879602019e-02, +-1.208817529958418867e-02, +-1.202561785982670522e-02, +-1.196268248502397116e-02, +-1.189937159228364634e-02, +-1.183568761022943915e-02, +-1.177163297891013760e-02, +-1.170721014970772279e-02, +-1.164242158524528455e-02, +-1.157726975929466127e-02, +-1.151175715668404514e-02, +-1.144588627320481354e-02, +-1.137965961551783492e-02, +-1.131307970106048590e-02, +-1.124614905795225453e-02, +-1.117887022490037831e-02, +-1.111124575110573193e-02, +-1.104327819616731862e-02, +-1.097497012998760631e-02, +-1.090632413267689747e-02, +-1.083734279445721163e-02, +-1.076802871556650082e-02, +-1.069838450616260837e-02, +-1.062841278622586941e-02, +-1.055811618546261335e-02, +-1.048749734320805933e-02, +-1.041655890832871890e-02, +-1.034530353912434253e-02, +-1.027373390323051139e-02, +-1.020185267751970784e-02, +-1.012966254800327058e-02, +-1.005716620973243040e-02, +-9.984366366699030243e-03, +-9.911265731736607770e-03, +-9.837867026420765021e-03, +-9.764172980969043625e-03, +-9.690186334141153920e-03, +-9.615909833139141619e-03, +-9.541346233506057400e-03, +-9.466498299025639593e-03, +-9.391368801621658574e-03, +-9.315960521256490962e-03, +-9.240276245829443999e-03, +-9.164318771075860570e-03, +-9.088090900464562347e-03, +-9.011595445096541937e-03, +-8.934835223602374810e-03, +-8.857813062039695401e-03, +-8.780531793790995881e-03, +-8.702994259460694604e-03, +-8.625203306771899239e-03, +-8.547161790463494307e-03, +-8.468872572186926864e-03, +-8.390338520402541161e-03, +-8.311562510275666976e-03, +-8.232547423573250908e-03, +-8.153296148559580417e-03, +-8.073811579891891632e-03, +-7.994096618516560032e-03, +-7.914154171564033446e-03, +-7.833987152244703545e-03, +-7.753598479743899555e-03, +-7.672991079116803920e-03, +-7.592167881183427801e-03, +-7.511131822424126948e-03, +-7.429885844873071465e-03, +-7.348432896013512745e-03, +-7.266775928672270651e-03, +-7.184917900913851199e-03, +-7.102861775934335258e-03, +-7.020610521955991494e-03, +-6.938167112121049716e-03, +-6.855534524385129003e-03, +-6.772715741411793403e-03, +-6.689713750465358169e-03, +-6.606531543305180915e-03, +-6.523172116078787032e-03, +-6.439638469215128690e-03, +-6.355933607317943573e-03, +-6.272060539059686086e-03, +-6.188022277073482701e-03, +-6.103821837846914837e-03, +-6.019462241615114798e-03, +-5.934946512253571130e-03, +-5.850277677170630415e-03, +-5.765458767201120556e-03, +-5.680492816498221992e-03, +-5.595382862427049353e-03, +-5.510131945456873959e-03, +-5.424743109053587441e-03, +-5.339219399572860125e-03, +-5.253563866152425113e-03, +-5.167779560604406595e-03, +-5.081869537308088790e-03, +-4.995836853102523546e-03, +-4.909684567178897695e-03, +-4.823415740972634112e-03, +-4.737033438056455562e-03, +-4.650540724032582035e-03, +-4.563940666424741617e-03, +-4.477236334571446826e-03, +-4.390430799517563119e-03, +-4.303527133907454269e-03, +-4.216528411877203987e-03, +-4.129437708946700515e-03, +-4.042258101912808016e-03, +-3.954992668741562183e-03, +-3.867644488460480773e-03, +-3.780216641051363773e-03, +-3.692712207343115671e-03, +-3.605134268904144033e-03, +-3.517485907934766315e-03, +-3.429770207160556458e-03, +-3.341990249724780763e-03, +-3.254149119080950846e-03, +-3.166249898886402698e-03, +-3.078295672894431571e-03, +-2.990289524848022823e-03, +-2.902234538372582256e-03, +-2.814133796868923624e-03, +-2.725990383406524595e-03, +-2.637807380617601932e-03, +-2.549587870589224703e-03, +-2.461334934757474033e-03, +-2.373051653801136647e-03, +-2.284741107535107410e-03, +-2.196406374803828304e-03, +-2.108050533375849765e-03, +-2.019676659836925313e-03, +-1.931287829484806644e-03, +-1.842887116223071615e-03, +-1.754477592455084937e-03, +-1.666062328979006635e-03, +-1.577644394882002105e-03, +-1.489226857434644948e-03, +-1.400812781985787949e-03, +-1.312405231858214697e-03, +-1.224007268242254627e-03, +-1.135621950092263396e-03, +-1.047252334020938114e-03, +-9.589014741955454195e-04, +-8.705724222331929748e-04, +-7.822682270963814393e-04, +-6.939919349890169044e-04, +-6.057465892532377808e-04, +-5.175352302643749071e-04, +-4.293608953280970844e-04, +-3.412266185770983186e-04, +-2.531354308676335451e-04, +-1.650903596761246382e-04, +-7.709442899701688312e-05, + 1.084934076078174458e-05, + 9.873793287567347876e-05, + 1.865683344160195818e-04, + 2.743375363425893591e-04, + 3.620425336098599938e-04, + 4.496803252680676250e-04, + 5.372479145649475653e-04, + 6.247423090468417909e-04, + 7.121605206595957175e-04, + 7.994995658496585351e-04, + 8.867564656650857476e-04, + 9.739282458553426931e-04, + 1.061011936971860935e-03, + 1.148004574468343116e-03, + 1.234903198799802660e-03, + 1.321704855522920453e-03, + 1.408406595394625597e-03, + 1.495005474471442809e-03, + 1.581498554208609969e-03, + 1.667882901558024938e-03, + 1.754155589066851801e-03, + 1.840313694975782973e-03, + 1.926354303316628888e-03, + 2.012274504009623193e-03, + 2.098071392960927217e-03, + 2.183742072159911961e-03, + 2.269283649775279132e-03, + 2.354693240251814253e-03, + 2.439967964406884130e-03, + 2.525104949525616791e-03, + 2.610101329457301805e-03, + 2.694954244710039398e-03, + 2.779660842546052661e-03, + 2.864218277076647622e-03, + 2.948623709356558344e-03, + 3.032874307477366558e-03, + 3.116967246662576217e-03, + 3.200899709360450259e-03, + 3.284668885337120592e-03, + 3.368271971769712381e-03, + 3.451706173339270586e-03, + 3.534968702322395431e-03, + 3.618056778683586064e-03, + 3.700967630167094607e-03, + 3.783698492387607953e-03, + 3.866246608922008134e-03, + 3.948609231399311664e-03, + 4.030783619591324016e-03, + 4.112767041502787130e-03, + 4.194556773460918035e-03, + 4.276150100204033702e-03, + 4.357544314971672529e-03, + 4.438736719592482373e-03, + 4.519724624572392206e-03, + 4.600505349182682294e-03, + 4.681076221547825385e-03, + 4.761434578731930586e-03, + 4.841577766826405012e-03, + 4.921503141035617895e-03, + 5.001208065763321046e-03, + 5.080689914698616541e-03, + 5.159946070900697096e-03, + 5.238973926884092983e-03, + 5.317770884703398523e-03, + 5.396334356037289087e-03, + 5.474661762272099198e-03, + 5.552750534585431871e-03, + 5.630598114029463502e-03, + 5.708201951612938176e-03, + 5.785559508383787339e-03, + 5.862668255511091150e-03, + 5.939525674366003330e-03, + 6.016129256603351683e-03, + 6.092476504241727681e-03, + 6.168564929743899569e-03, + 6.244392056096888070e-03, + 6.319955416890802626e-03, + 6.395252556398078360e-03, + 6.470281029652157068e-03, + 6.545038402525452624e-03, + 6.619522251806895727e-03, + 6.693730165279313839e-03, + 6.767659741796532707e-03, + 6.841308591359330366e-03, + 6.914674335191608838e-03, + 6.987754605816167731e-03, + 7.060547047129256577e-03, + 7.133049314475884382e-03, + 7.205259074723411802e-03, + 7.277174006335595212e-03, + 7.348791799446125102e-03, + 7.420110155931267625e-03, + 7.491126789481819190e-03, + 7.561839425676039443e-03, + 7.632245802050555486e-03, + 7.702343668171306862e-03, + 7.772130785704297988e-03, + 7.841604928486036602e-03, + 7.910763882592488153e-03, + 7.979605446409019850e-03, + 8.048127430698517187e-03, + 8.116327658669793624e-03, + 8.184203966045732262e-03, + 8.251754201130034536e-03, + 8.318976224874201353e-03, + 8.385867910944212397e-03, + 8.452427145786077858e-03, + 8.518651828690841990e-03, + 8.584539871860284027e-03, + 8.650089200470825399e-03, + 8.715297752737365816e-03, + 8.780163479976794971e-03, + 8.844684346671193714e-03, + 8.908858330529675212e-03, + 8.972683422551013671e-03, + 9.036157627084373534e-03, + 9.099278961890664916e-03, + 9.162045458202995249e-03, + 9.224455160786283053e-03, + 9.286506127996850893e-03, + 9.348196431841405973e-03, + 9.409524158035389302e-03, + 9.470487406060615343e-03, + 9.531084289222890860e-03, + 9.591312934708976293e-03, + 9.651171483642561819e-03, + 9.710658091140243406e-03, + 9.769770926367125907e-03, + 9.828508172590949901e-03, + 9.886868027237049467e-03, + 9.944848701941561356e-03, + 1.000244842260475560e-02, + 1.005966542944389946e-02, + 1.011649797704539284e-02, + 1.017294433441578994e-02, + 1.022900278503374207e-02, + 1.028467162690010865e-02, + 1.033994917258787387e-02, + 1.039483374929168341e-02, + 1.044932369887713840e-02, + 1.050341737792864251e-02, + 1.055711315779756139e-02, + 1.061040942464965865e-02, + 1.066330457951144249e-02, + 1.071579703831699627e-02, + 1.076788523195298594e-02, + 1.081956760630425722e-02, + 1.087084262229842321e-02, + 1.092170875594954821e-02, + 1.097216449840195465e-02, + 1.102220835597313500e-02, + 1.107183885019589684e-02, + 1.112105451786053224e-02, + 1.116985391105575036e-02, + 1.121823559720956653e-02, + 1.126619815912948894e-02, + 1.131374019504221250e-02, + 1.136086031863211589e-02, + 1.140755715908051485e-02, + 1.145382936110309578e-02, + 1.149967558498732334e-02, + 1.154509450662928420e-02, + 1.159008481757003994e-02, + 1.163464522503099979e-02, + 1.167877445194937490e-02, + 1.172247123701234545e-02, + 1.176573433469126247e-02, + 1.180856251527502912e-02, + 1.185095456490280891e-02, + 1.189290928559623775e-02, + 1.193442549529141923e-02, + 1.197550202786974542e-02, + 1.201613773318829445e-02, + 1.205633147711027489e-02, + 1.209608214153413269e-02, + 1.213538862442223309e-02, + 1.217424983982931704e-02, + 1.221266471793015264e-02, + 1.225063220504644251e-02, + 1.228815126367364084e-02, + 1.232522087250658913e-02, + 1.236184002646494896e-02, + 1.239800773671819595e-02, + 1.243372303070944609e-02, + 1.246898495217938461e-02, + 1.250379256118913998e-02, + 1.253814493414286135e-02, + 1.257204116380946680e-02, + 1.260548035934391103e-02, + 1.263846164630818593e-02, + 1.267098416669107039e-02, + 1.270304707892787321e-02, + 1.273464955791951854e-02, + 1.276579079505061123e-02, + 1.279646999820757171e-02, + 1.282668639179556161e-02, + 1.285643921675534186e-02, + 1.288572773057917835e-02, + 1.291455120732649953e-02, + 1.294290893763830677e-02, + 1.297080022875211035e-02, + 1.299822440451523647e-02, + 1.302518080539797826e-02, + 1.305166878850619501e-02, + 1.307768772759337547e-02, + 1.310323701307180601e-02, + 1.312831605202342475e-02, + 1.315292426821015187e-02, + 1.317706110208333344e-02, + 1.320072601079285736e-02, + 1.322391846819554080e-02, + 1.324663796486309775e-02, + 1.326888400808922883e-02, + 1.329065612189665908e-02, + 1.331195384704267348e-02, + 1.333277674102521099e-02, + 1.335312437808758475e-02, + 1.337299634922267492e-02, + 1.339239226217688560e-02, + 1.341131174145338174e-02, + 1.342975442831441379e-02, + 1.344771998078369245e-02, + 1.346520807364751972e-02, + 1.348221839845578987e-02, + 1.349875066352229994e-02, + 1.351480459392435766e-02, + 1.353037993150186039e-02, + 1.354547643485589856e-02, + 1.356009387934675042e-02, + 1.357423205709100585e-02, + 1.358789077695863462e-02, + 1.360106986456907120e-02, + 1.361376916228681545e-02, + 1.362598852921650255e-02, + 1.363772784119742995e-02, + 1.364898699079735052e-02, + 1.365976588730592398e-02, + 1.367006445672726105e-02, + 1.367988264177234271e-02, + 1.368922040185034314e-02, + 1.369807771305992482e-02, + 1.370645456817937147e-02, + 1.371435097665675215e-02, + 1.372176696459906885e-02, + 1.372870257476097207e-02, + 1.373515786653293873e-02, + 1.374113291592891570e-02, + 1.374662781557328683e-02, + 1.375164267468727795e-02, + 1.375617761907488475e-02, + 1.376023279110826988e-02, + 1.376380834971238469e-02, + 1.376690447034916928e-02, + 1.376952134500117851e-02, + 1.377165918215474821e-02, + 1.377331820678236694e-02, + 1.377449866032460363e-02, + 1.377520080067156857e-02, + 1.377542490214365110e-02, + 1.377517125547179748e-02, + 1.377444016777726842e-02, + 1.377323196255066627e-02, + 1.377154697963060663e-02, + 1.376938557518171853e-02, + 1.376674812167216246e-02, + 1.376363500785047350e-02, + 1.376004663872207323e-02, + 1.375598343552492976e-02, + 1.375144583570496806e-02, + 1.374643429289080197e-02, + 1.374094927686778794e-02, + 1.373499127355187407e-02, + 1.372856078496246905e-02, + 1.372165832919517922e-02, + 1.371428444039374250e-02, + 1.370643966872154250e-02, + 1.369812458033247034e-02, + 1.368933975734142917e-02, + 1.368008579779412225e-02, + 1.367036331563646276e-02, + 1.366017294068320662e-02, + 1.364951531858647066e-02, + 1.363839111080323782e-02, + 1.362680099456272526e-02, + 1.361474566283294406e-02, + 1.360222582428697452e-02, + 1.358924220326845726e-02, + 1.357579553975688490e-02, + 1.356188658933204713e-02, + 1.354751612313808730e-02, + 1.353268492784721194e-02, + 1.351739380562255732e-02, + 1.350164357408079226e-02, + 1.348543506625414154e-02, + 1.346876913055175540e-02, + 1.345164663072093841e-02, + 1.343406844580737752e-02, + 1.341603547011526766e-02, + 1.339754861316668107e-02, + 1.337860879966069026e-02, + 1.335921696943156295e-02, + 1.333937407740697773e-02, + 1.331908109356545744e-02, + 1.329833900289317458e-02, + 1.327714880534061094e-02, + 1.325551151577839676e-02, + 1.323342816395288446e-02, + 1.321089979444124186e-02, + 1.318792746660570406e-02, + 1.316451225454789119e-02, + 1.314065524706223287e-02, + 1.311635754758896932e-02, + 1.309162027416688710e-02, + 1.306644455938535225e-02, + 1.304083155033590284e-02, + 1.301478240856353621e-02, + 1.298829831001727109e-02, + 1.296138044500045640e-02, + 1.293403001812058403e-02, + 1.290624824823835559e-02, + 1.287803636841668674e-02, + 1.284939562586919631e-02, + 1.282032728190777779e-02, + 1.279083261189029389e-02, + 1.276091290516751658e-02, + 1.273056946502972020e-02, + 1.269980360865257188e-02, + 1.266861666704307589e-02, + 1.263700998498463145e-02, + 1.260498492098158230e-02, + 1.257254284720398484e-02, + 1.253968514943094165e-02, + 1.250641322699451961e-02, + 1.247272849272253875e-02, + 1.243863237288101234e-02, + 1.240412630711642747e-02, + 1.236921174839764048e-02, + 1.233389016295676974e-02, + 1.229816303023019072e-02, + 1.226203184279922587e-02, + 1.222549810632985075e-02, + 1.218856333951232919e-02, + 1.215122907400066968e-02, + 1.211349685435097849e-02, + 1.207536823796017712e-02, + 1.203684479500385582e-02, + 1.199792810837369862e-02, + 1.195861977361477139e-02, + 1.191892139886227379e-02, + 1.187883460477782635e-02, + 1.183836102448534468e-02, + 1.179750230350684083e-02, + 1.175626009969746658e-02, + 1.171463608318017852e-02, + 1.167263193628032686e-02, + 1.163024935345964052e-02, + 1.158749004124970221e-02, + 1.154435571818543393e-02, + 1.150084811473781055e-02, + 1.145696897324647093e-02, + 1.141272004785186256e-02, + 1.136810310442685698e-02, + 1.132311992050838954e-02, + 1.127777228522843130e-02, + 1.123206199924450983e-02, + 1.118599087467021282e-02, + 1.113956073500515544e-02, + 1.109277341506467902e-02, + 1.104563076090878983e-02, + 1.099813462977149159e-02, + 1.095028688998920738e-02, + 1.090208942092887358e-02, + 1.085354411291617263e-02, + 1.080465286716275272e-02, + 1.075541759569374582e-02, + 1.070584022127459359e-02, + 1.065592267733752284e-02, + 1.060566690790775216e-02, + 1.055507486752993093e-02, + 1.050414852119305534e-02, + 1.045288984425612154e-02, + 1.040130082237319259e-02, + 1.034938345141796917e-02, + 1.029713973740796311e-02, + 1.024457169642900047e-02, + 1.019168135455847737e-02, + 1.013847074778922996e-02, + 1.008494192195255081e-02, + 1.003109693264086534e-02, + 9.976937845130687613e-03, + 9.922466734304658323e-03, + 9.867685684573565541e-03, + 9.812596789797962960e-03, + 9.757202153210223564e-03, + 9.701503887334787454e-03, + 9.645504113909623978e-03, + 9.589204963806855983e-03, + 9.532608576953021523e-03, + 9.475717102248964324e-03, + 9.418532697490072936e-03, + 9.361057529285430473e-03, + 9.303293772977457021e-03, + 9.245243612560884172e-03, + 9.186909240601313226e-03, + 9.128292858154217482e-03, + 9.069396674683000842e-03, + 9.010222907977032125e-03, + 8.950773784069523259e-03, + 8.891051537155341550e-03, + 8.831058409508223475e-03, + 8.770796651397756022e-03, + 8.710268521006621703e-03, + 8.649476284347154889e-03, + 8.588422215177611910e-03, + 8.527108594918893919e-03, + 8.465537712570032902e-03, + 8.403711864624565861e-03, + 8.341633354985856022e-03, + 8.279304494882492108e-03, + 8.216727602783474235e-03, + 8.153905004313804009e-03, + 8.090839032168435294e-03, + 8.027532026027387260e-03, + 7.963986332470307516e-03, + 7.900204304890558193e-03, + 7.836188303409076517e-03, + 7.771940694788673394e-03, + 7.707463852347639852e-03, + 7.642760155872944071e-03, + 7.577831991534224668e-03, + 7.512681751796333740e-03, + 7.447311835332892128e-03, + 7.381724646939077060e-03, + 7.315922597444000398e-03, + 7.249908103623524912e-03, + 7.183683588113070999e-03, + 7.117251479319094618e-03, + 7.050614211331647681e-03, + 6.983774223836457934e-03, + 6.916733962026669694e-03, + 6.849495876514232438e-03, + 6.782062423242072625e-03, + 6.714436063394874261e-03, + 6.646619263310956684e-03, + 6.578614494393243348e-03, + 6.510424233020035457e-03, + 6.442050960456524589e-03, + 6.373497162765302641e-03, + 6.304765330717023580e-03, + 6.235857959701086861e-03, + 6.166777549636329528e-03, + 6.097526604881391317e-03, + 6.028107634144600109e-03, + 5.958523150394828827e-03, + 5.888775670771299355e-03, + 5.818867716493412480e-03, + 5.748801812771252642e-03, + 5.678580488714787301e-03, + 5.608206277244285817e-03, + 5.537681714999733926e-03, + 5.467009342250256886e-03, + 5.396191702804154985e-03, + 5.325231343918205261e-03, + 5.254130816206915508e-03, + 5.182892673552050647e-03, + 5.111519473012162557e-03, + 5.040013774731693166e-03, + 4.968378141849874585e-03, + 4.896615140410511338e-03, + 4.824727339270694880e-03, + 4.752717310010077557e-03, + 4.680587626839689472e-03, + 4.608340866511101419e-03, + 4.535979608225580023e-03, + 4.463506433542909803e-03, + 4.390923926289986255e-03, + 4.318234672470317066e-03, + 4.245441260172636011e-03, + 4.172546279479466547e-03, + 4.099552322376659452e-03, + 4.026461982661497588e-03, + 3.953277855852197105e-03, + 3.880002539096428105e-03, + 3.806638631079976680e-03, + 3.733188731936024941e-03, + 3.659655443153816533e-03, + 3.586041367487296117e-03, + 3.512349108864200754e-03, + 3.438581272295084500e-03, + 3.364740463782081494e-03, + 3.290829290227577537e-03, + 3.216850359343675740e-03, + 3.142806279560935324e-03, + 3.068699659937129069e-03, + 2.994533110066895879e-03, + 2.920309239990162564e-03, + 2.846030660101848877e-03, + 2.771699981060818819e-03, + 2.697319813698906103e-03, + 2.622892768930282659e-03, + 2.548421457661428219e-03, + 2.473908490699426328e-03, + 2.399356478662039317e-03, + 2.324768031887311862e-03, + 2.250145760342964641e-03, + 2.175492273535773683e-03, + 2.100810180421906412e-03, + 2.026102089316008260e-03, + 1.951370607801693538e-03, + 1.876618342641225975e-03, + 1.801847899685298784e-03, + 1.727061883783685995e-03, + 1.652262898695184721e-03, + 1.577453546997768189e-03, + 1.502636429999059048e-03, + 1.427814147647470762e-03, + 1.352989298441743512e-03, + 1.278164479342286603e-03, + 1.203342285682085450e-03, + 1.128525311077476726e-03, + 1.053716147338906598e-03, + 9.789173843827499600e-04, + 9.041316101418683110e-04, + 8.293614104776662107e-04, + 7.546093690913539950e-04, + 6.798780674353603268e-04, + 6.051700846256634998e-04, + 5.304879973534834970e-04, + 4.558343797971634590e-04, + 3.812118035345843088e-04, + 3.066228374557106195e-04, + 2.320700476749260922e-04, + 1.575559974434305899e-04, + 8.308324706260158227e-05, + 8.654353796701388379e-06, +-6.572812821425376699e-05, +-1.400616480405653553e-04, +-2.143436580501050523e-04, +-2.885716139940516182e-04, +-3.627429750933549549e-04, +-4.368552041249363456e-04, +-5.109057675074390884e-04, +-5.848921353862669183e-04, +-6.588117817201385226e-04, +-7.326621843657555450e-04, +-8.064408251628123843e-04, +-8.801451900191028122e-04, +-9.537727689954961620e-04, +-1.027321056389929712e-03, +-1.100787550821998896e-03, +-1.174169755317343907e-03, +-1.247465177390946452e-03, +-1.320671329131541290e-03, +-1.393785727284493512e-03, +-1.466805893335346514e-03, +-1.539729353593065949e-03, +-1.612553639272791897e-03, +-1.685276286577856589e-03, +-1.757894836783225039e-03, +-1.830406836317062611e-03, +-1.902809836842590547e-03, +-1.975101395339952989e-03, +-2.047279074187973412e-03, +-2.119340441244770695e-03, +-2.191283069929440309e-03, +-2.263104539302206782e-03, +-2.334802434145183750e-03, +-2.406374345042894183e-03, +-2.477817868461732864e-03, +-2.549130606830016937e-03, +-2.620310168617607984e-03, +-2.691354168414987653e-03, +-2.762260227012067453e-03, +-2.833025971477055351e-03, +-2.903649035235150201e-03, +-2.974127058146209222e-03, +-3.044457686582880806e-03, +-3.114638573508505311e-03, +-3.184667378553859667e-03, +-3.254541768094878183e-03, +-3.324259415328889317e-03, +-3.393818000351311696e-03, +-3.463215210232161931e-03, +-3.532448739091453068e-03, +-3.601516288175060990e-03, +-3.670415565930259475e-03, +-3.739144288080574387e-03, +-3.807700177700332114e-03, +-3.876080965289281730e-03, +-3.944284388847004233e-03, +-4.012308193946169908e-03, +-4.080150133806381176e-03, +-4.147807969367549655e-03, +-4.215279469362277938e-03, +-4.282562410389018949e-03, +-4.349654576983841454e-03, +-4.416553761692518232e-03, +-4.483257765142386990e-03, +-4.549764396113498317e-03, +-4.616071471609033312e-03, +-4.682176816926869600e-03, +-4.748078265729367524e-03, +-4.813773660113206641e-03, +-4.879260850679185794e-03, +-4.944537696601749091e-03, +-5.009602065697390388e-03, +-5.074451834493866158e-03, +-5.139084888297909548e-03, +-5.203499121263349507e-03, +-5.267692436458998317e-03, +-5.331662745935269315e-03, +-5.395407970791326301e-03, +-5.458926041241761104e-03, +-5.522214896682599815e-03, +-5.585272485756570017e-03, +-5.648096766419458299e-03, +-5.710685706004608141e-03, +-5.773037281287514075e-03, +-5.835149478550334320e-03, +-5.897020293646010498e-03, +-5.958647732061412433e-03, +-6.020029808981010311e-03, +-6.081164549349276152e-03, +-6.142049987933317738e-03, +-6.202684169385174265e-03, +-6.263065148303072899e-03, +-6.323190989292905642e-03, +-6.383059767029361856e-03, +-6.442669566316225511e-03, +-6.502018482146416575e-03, +-6.561104619761931774e-03, +-6.619926094713288363e-03, +-6.678481032918178600e-03, +-6.736767570720247379e-03, +-6.794783854947092708e-03, +-6.852528042968320833e-03, +-6.909998302752707981e-03, +-6.967192812925016021e-03, +-7.024109762822705778e-03, +-7.080747352552266109e-03, +-7.137103793044574131e-03, +-7.193177306110322237e-03, +-7.248966124495315015e-03, +-7.304468491934277760e-03, +-7.359682663205658129e-03, +-7.414606904184672248e-03, +-7.469239491896902464e-03, +-7.523578714571176919e-03, +-7.577622871691658962e-03, +-7.631370274049992068e-03, +-7.684819243797008474e-03, +-7.737968114493700561e-03, +-7.790815231161806256e-03, +-7.843358950334163721e-03, +-7.895597640104825773e-03, +-7.947529680178005984e-03, +-7.999153461917271959e-03, +-8.050467388394242502e-03, +-8.101469874436308116e-03, +-8.152159346674714077e-03, +-8.202534243591359797e-03, +-8.252593015565858406e-03, +-8.302334124921859071e-03, +-8.351756045972949516e-03, +-8.400857265067675564e-03, +-8.449636280635275387e-03, +-8.498091603229741484e-03, +-8.546221755573998879e-03, +-8.594025272603523016e-03, +-8.641500701509837942e-03, +-8.688646601782822748e-03, +-8.735461545253422194e-03, +-8.781944116135158643e-03, +-8.828092911065631848e-03, +-8.873906539147670067e-03, +-8.919383621989398700e-03, +-8.964522793744475471e-03, +-9.009322701151671609e-03, +-9.053782003574003742e-03, +-9.097899373036913429e-03, +-9.141673494267100672e-03, +-9.185103064729789255e-03, +-9.228186794666000739e-03, +-9.270923407129287239e-03, +-9.313311638022356634e-03, +-9.355350236132367256e-03, +-9.397037963166772478e-03, +-9.438373593787838245e-03, +-9.479355915647228251e-03, +-9.519983729420087790e-03, +-9.560255848838130135e-03, +-9.600171100722884251e-03, +-9.639728325018255550e-03, +-9.678926374822502052e-03, +-9.717764116419665837e-03, +-9.756240429310726950e-03, +-9.794354206244436367e-03, +-9.832104353247115083e-03, +-9.869489789652421963e-03, +-9.906509448130687914e-03, +-9.943162274717273416e-03, +-9.979447228841137676e-03, +-1.001536328335225073e-02, +-1.005090942454888413e-02, +-1.008608465220469166e-02, +-1.012088797959445272e-02, +-1.015531843352023185e-02, +-1.018937505433654966e-02, +-1.022305689597528301e-02, +-1.025636302596980194e-02, +-1.028929252547891235e-02, +-1.032184448931031812e-02, +-1.035401802594324537e-02, +-1.038581225755096267e-02, +-1.041722632002271311e-02, +-1.044825936298487100e-02, +-1.047891054982214888e-02, +-1.050917905769773765e-02, +-1.053906407757330098e-02, +-1.056856481422855688e-02, +-1.059768048628009600e-02, +-1.062641032619955454e-02, +-1.065475358033208218e-02, +-1.068270950891349151e-02, +-1.071027738608713344e-02, +-1.073745649992057134e-02, +-1.076424615242149545e-02, +-1.079064565955311153e-02, +-1.081665435124923823e-02, +-1.084227157142876596e-02, +-1.086749667800953646e-02, +-1.089232904292206788e-02, +-1.091676805212238484e-02, +-1.094081310560448411e-02, +-1.096446361741261998e-02, +-1.098771901565256080e-02, +-1.101057874250258896e-02, +-1.103304225422431159e-02, +-1.105510902117242192e-02, +-1.107677852780434603e-02, +-1.109805027268920274e-02, +-1.111892376851654485e-02, +-1.113939854210411508e-02, +-1.115947413440571308e-02, +-1.117915010051793827e-02, +-1.119842600968698650e-02, +-1.121730144531466085e-02, +-1.123577600496388287e-02, +-1.125384930036374756e-02, +-1.127152095741421403e-02, +-1.128879061619015960e-02, +-1.130565793094487695e-02, +-1.132212257011319667e-02, +-1.133818421631428187e-02, +-1.135384256635335598e-02, +-1.136909733122368552e-02, +-1.138394823610747349e-02, +-1.139839502037658103e-02, +-1.141243743759264885e-02, +-1.142607525550666005e-02, +-1.143930825605816645e-02, +-1.145213623537389910e-02, +-1.146455900376601791e-02, +-1.147657638572957550e-02, +-1.148818821993993593e-02, +-1.149939435924934687e-02, +-1.151019467068307989e-02, +-1.152058903543524970e-02, +-1.153057734886398823e-02, +-1.154015952048610509e-02, +-1.154933547397145495e-02, +-1.155810514713660926e-02, +-1.156646849193808391e-02, +-1.157442547446523376e-02, +-1.158197607493247940e-02, +-1.158912028767102032e-02, +-1.159585812112031919e-02, +-1.160218959781889395e-02, +-1.160811475439454954e-02, +-1.161363364155435646e-02, +-1.161874632407407411e-02, +-1.162345288078693063e-02, +-1.162775340457211821e-02, +-1.163164800234273329e-02, +-1.163513679503321886e-02, +-1.163821991758636452e-02, +-1.164089751893977905e-02, +-1.164316976201196056e-02, +-1.164503682368778388e-02, +-1.164649889480369981e-02, +-1.164755618013210703e-02, +-1.164820889836572920e-02, +-1.164845728210111946e-02, +-1.164830157782179541e-02, +-1.164774204588110013e-02, +-1.164677896048432748e-02, +-1.164541260967046771e-02, +-1.164364329529360247e-02, +-1.164147133300361993e-02, +-1.163889705222662801e-02, +-1.163592079614490793e-02, +-1.163254292167617381e-02, +-1.162876379945276990e-02, +-1.162458381379992758e-02, +-1.162000336271395116e-02, +-1.161502285783979835e-02, +-1.160964272444816453e-02, +-1.160386340141206056e-02, +-1.159768534118315979e-02, +-1.159110900976745989e-02, +-1.158413488670055266e-02, +-1.157676346502252603e-02, +-1.156899525125228492e-02, +-1.156083076536149404e-02, +-1.155227054074807296e-02, +-1.154331512420918651e-02, +-1.153396507591388301e-02, +-1.152422096937515475e-02, +-1.151408339142167420e-02, +-1.150355294216902531e-02, +-1.149263023499047000e-02, +-1.148131589648733290e-02, +-1.146961056645891437e-02, +-1.145751489787194891e-02, +-1.144502955682964382e-02, +-1.143215522254032758e-02, +-1.141889258728549794e-02, +-1.140524235638764108e-02, +-1.139120524817759626e-02, +-1.137678199396120575e-02, +-1.136197333798594569e-02, +-1.134678003740684053e-02, +-1.133120286225208773e-02, +-1.131524259538818807e-02, +-1.129890003248466314e-02, +-1.128217598197839115e-02, +-1.126507126503746743e-02, +-1.124758671552466942e-02, +-1.122972317996055736e-02, +-1.121148151748602509e-02, +-1.119286259982459585e-02, +-1.117386731124415250e-02, +-1.115449654851832610e-02, +-1.113475122088766756e-02, +-1.111463225001990338e-02, +-1.109414056997033889e-02, +-1.107327712714152416e-02, +-1.105204288024270141e-02, +-1.103043880024859140e-02, +-1.100846587035811050e-02, +-1.098612508595242336e-02, +-1.096341745455280299e-02, +-1.094034399577788717e-02, +-1.091690574130067294e-02, +-1.089310373480518145e-02, +-1.086893903194256772e-02, +-1.084441270028689910e-02, +-1.081952581929059541e-02, +-1.079427948023951520e-02, +-1.076867478620758406e-02, +-1.074271285201090602e-02, +-1.071639480416194251e-02, +-1.068972178082272691e-02, +-1.066269493175810851e-02, +-1.063531541828867215e-02, +-1.060758441324283381e-02, +-1.057950310090906808e-02, +-1.055107267698754923e-02, +-1.052229434854122340e-02, +-1.049316933394705588e-02, +-1.046369886284636945e-02, +-1.043388417609504917e-02, +-1.040372652571340886e-02, +-1.037322717483575747e-02, +-1.034238739765949884e-02, +-1.031120847939366592e-02, +-1.027969171620779325e-02, +-1.024783841517961161e-02, +-1.021564989424290221e-02, +-1.018312748213500568e-02, +-1.015027251834360600e-02, +-1.011708635305369301e-02, +-1.008357034709387624e-02, +-1.004972587188220079e-02, +-1.001555430937203263e-02, +-9.981057051997576160e-03, +-9.946235502618510499e-03, +-9.911091074464965789e-03, +-9.875625191081895821e-03, +-9.839839286273121058e-03, +-9.803734804044887674e-03, +-9.767313198549615674e-03, +-9.730575934028607918e-03, +-9.693524484755217108e-03, +-9.656160334977105519e-03, +-9.618484978858326054e-03, +-9.580499920421451862e-03, +-9.542206673488940957e-03, +-9.503606761624306537e-03, +-9.464701718073172815e-03, +-9.425493085704157378e-03, +-9.385982416948667612e-03, +-9.346171273741351107e-03, +-9.306061227459833107e-03, +-9.265653858864082715e-03, +-9.224950758035550119e-03, +-9.183953524316310763e-03, +-9.142663766247291837e-03, +-9.101083101506961953e-03, +-9.059213156849321713e-03, +-9.017055568041327032e-03, +-8.974611979800952571e-03, +-8.931884045734068620e-03, +-8.888873428271343996e-03, +-8.845581798605148954e-03, +-8.802010836625953280e-03, +-8.758162230858474590e-03, +-8.714037678397412029e-03, +-8.669638884843396814e-03, +-8.624967564238252352e-03, +-8.580025438999923024e-03, +-8.534814239857850537e-03, +-8.489335705787096065e-03, +-8.443591583943121578e-03, +-8.397583629595851279e-03, +-8.351313606063358319e-03, +-8.304783284645905414e-03, +-8.257994444559246458e-03, +-8.210948872867633239e-03, +-8.163648364417012970e-03, +-8.116094721767851128e-03, +-8.068289755127522334e-03, +-8.020235282282465322e-03, +-7.971933128530610257e-03, +-7.923385126613067056e-03, +-7.874593116645588198e-03, +-7.825558946050427053e-03, +-7.776284469487053895e-03, +-7.726771548783680291e-03, +-7.677022052867775621e-03, +-7.627037857696629571e-03, +-7.576820846187794917e-03, +-7.526372908149692523e-03, +-7.475695940210969059e-03, +-7.424791845750682191e-03, +-7.373662534827987898e-03, +-7.322309924111516412e-03, +-7.270735936808390802e-03, +-7.218942502593746029e-03, +-7.166931557539162924e-03, +-7.114705044041747493e-03, +-7.062264910752570103e-03, +-7.009613112504795886e-03, +-6.956751610242266175e-03, +-6.903682370947366968e-03, +-6.850407367568658867e-03, +-6.796928578949034370e-03, +-6.743247989753013878e-03, +-6.689367590393994860e-03, +-6.635289376961860976e-03, +-6.581015351149664856e-03, +-6.526547520180898086e-03, +-6.471887896736185260e-03, +-6.417038498879749919e-03, +-6.362001349985991518e-03, +-6.306778478666309577e-03, +-6.251371918694581704e-03, +-6.195783708933684172e-03, +-6.140015893261548466e-03, +-6.084070520496857870e-03, +-6.027949644324580997e-03, +-5.971655323221999705e-03, +-5.915189620383731750e-03, +-5.858554603647451661e-03, +-5.801752345418986247e-03, +-5.744784922597273059e-03, +-5.687654416499737797e-03, +-5.630362912787031590e-03, +-5.572912501387698031e-03, +-5.515305276423063986e-03, +-5.457543336131907494e-03, +-5.399628782794937444e-03, +-5.341563722658955807e-03, +-5.283350265861584509e-03, +-5.224990526355404244e-03, +-5.166486621831771486e-03, +-5.107840673645542770e-03, +-5.049054806738368685e-03, +-4.990131149563236876e-03, +-4.931071834008021043e-03, +-4.871878995319098467e-03, +-4.812554772025473201e-03, +-4.753101305862226199e-03, +-4.693520741693899510e-03, +-4.633815227438242181e-03, +-4.573986913989756646e-03, +-4.514037955142986662e-03, +-4.453970507515669919e-03, +-4.393786730472448374e-03, +-4.333488786047921121e-03, +-4.273078838869686855e-03, +-4.212559056081938841e-03, +-4.151931607268115332e-03, +-4.091198664374426017e-03, +-4.030362401632753971e-03, +-3.969424995483510771e-03, +-3.908388624498746605e-03, +-3.847255469305609077e-03, +-3.786027712508435034e-03, +-3.724707538612243192e-03, +-3.663297133945640858e-03, +-3.601798686583667763e-03, +-3.540214386270423494e-03, +-3.478546424342479886e-03, +-3.416796993651161074e-03, +-3.354968288485956750e-03, +-3.293062504497140924e-03, +-3.231081838618463532e-03, +-3.169028488990416250e-03, +-3.106904654882967909e-03, +-3.044712536618240060e-03, +-2.982454335493545539e-03, +-2.920132253704793481e-03, +-2.857748494268537356e-03, +-2.795305260945486238e-03, +-2.732804758163528622e-03, +-2.670249190940591870e-03, +-2.607640764807488652e-03, +-2.544981685731459008e-03, +-2.482274160038702802e-03, +-2.419520394338039310e-03, +-2.356722595443827822e-03, +-2.293882970299008367e-03, +-2.231003725898760004e-03, +-2.168087069213613972e-03, +-2.105135207112651848e-03, +-2.042150346287067118e-03, +-1.979134693173770568e-03, +-1.916090453878758213e-03, +-1.853019834100487484e-03, +-1.789925039053932984e-03, +-1.726808273394105347e-03, +-1.663671741139575956e-03, +-1.600517645596858394e-03, +-1.537348189283727811e-03, +-1.474165573853725110e-03, +-1.410972000020032074e-03, +-1.347769667479437354e-03, +-1.284560774836677370e-03, +-1.221347519529267277e-03, +-1.158132097751012231e-03, +-1.094916704377040017e-03, +-1.031703532888466127e-03, +-9.684947752969288439e-04, +-9.052926220691658509e-04, +-8.420992620523414310e-04, +-7.789168823988288585e-04, +-7.157476684910744295e-04, +-6.525938038673398042e-04, +-5.894574701464155506e-04, +-5.263408469535913858e-04, +-4.632461118459744879e-04, +-4.001754402380083842e-04, +-3.371310053273465367e-04, +-2.741149780212911763e-04, +-2.111295268619290343e-04, +-1.481768179528349658e-04, +-8.525901488544691093e-05, +-2.237827866535364188e-05, + 4.046323236136215479e-05, + 1.032633625808792108e-04, + 1.660199591853928124e-04, + 2.287308722455853708e-04, + 2.913939547837128465e-04, + 3.540070628465379109e-04, + 4.165680555774341209e-04, + 4.790747952890165684e-04, + 5.415251475355384227e-04, + 6.039169811848338169e-04, + 6.662481684900863933e-04, + 7.285165851617564142e-04, + 7.907201104393997773e-04, + 8.528566271626482386e-04, + 9.149240218426940054e-04, + 9.769201847336138680e-04, + 1.038843009902744871e-03, + 1.100690395302029697e-03, + 1.162460242838037798e-03, + 1.224150458442581227e-03, + 1.285758952143110359e-03, + 1.347283638132279774e-03, + 1.408722434837982301e-03, + 1.470073264993120021e-03, + 1.531334055704890434e-03, + 1.592502738523860319e-03, + 1.653577249513157790e-03, + 1.714555529317514067e-03, + 1.775435523231478230e-03, + 1.836215181268034636e-03, + 1.896892458227065949e-03, + 1.957465313762832802e-03, + 2.017931712452353775e-03, + 2.078289623862501247e-03, + 2.138537022617561720e-03, + 2.198671888466552198e-03, + 2.258692206350047370e-03, + 2.318595966466396180e-03, + 2.378381164339084600e-03, + 2.438045800882449564e-03, + 2.497587882467646164e-03, + 2.557005420988598798e-03, + 2.616296433927745024e-03, + 2.675458944420889065e-03, + 2.734490981322824227e-03, + 2.793390579271708488e-03, + 2.852155778753865528e-03, + 2.910784626168364583e-03, + 2.969275173890681754e-03, + 3.027625480336824503e-03, + 3.085833610027120897e-03, + 3.143897633649158415e-03, + 3.201815628121101789e-03, + 3.259585676654786195e-03, + 3.317205868817775689e-03, + 3.374674300596267745e-03, + 3.431989074456692854e-03, + 3.489148299407688388e-03, + 3.546150091061818325e-03, + 3.602992571696721387e-03, + 3.659673870315688880e-03, + 3.716192122709150673e-03, + 3.772545471514705730e-03, + 3.828732066277179547e-03, + 3.884750063508678533e-03, + 3.940597626748425404e-03, + 3.996272926621569771e-03, + 4.051774140898863931e-03, + 4.107099454554861973e-03, + 4.162247059826647971e-03, + 4.217215156272244130e-03, + 4.272001950828037929e-03, + 4.326605657866649905e-03, + 4.381024499254372075e-03, + 4.435256704408034774e-03, + 4.489300510351376498e-03, + 4.543154161772123244e-03, + 4.596815911077757263e-03, + 4.650284018451154855e-03, + 4.703556751906285728e-03, + 4.756632387343561960e-03, + 4.809509208604297904e-03, + 4.862185507525776385e-03, + 4.914659583995067624e-03, + 4.966929746003165627e-03, + 5.018994309698832264e-03, + 5.070851599441469036e-03, + 5.122499947854363550e-03, + 5.173937695877473680e-03, + 5.225163192819631472e-03, + 5.276174796410456475e-03, + 5.326970872852158922e-03, + 5.377549796871144289e-03, + 5.427909951768681955e-03, + 5.478049729471706590e-03, + 5.527967530583552738e-03, + 5.577661764433403113e-03, + 5.627130849126638079e-03, + 5.676373211593643830e-03, + 5.725387287639173081e-03, + 5.774171521991049161e-03, + 5.822724368348519697e-03, + 5.871044289429851355e-03, + 5.919129757020716483e-03, + 5.966979252021086151e-03, + 6.014591264492144020e-03, + 6.061964293703055347e-03, + 6.109096848177438498e-03, + 6.155987445738881486e-03, + 6.202634613556771634e-03, + 6.249036888191630834e-03, + 6.295192815639622484e-03, + 6.341100951377481691e-03, + 6.386759860406317907e-03, + 6.432168117295548534e-03, + 6.477324306226421406e-03, + 6.522227021035088834e-03, + 6.566874865254905373e-03, + 6.611266452159409064e-03, + 6.655400404803977349e-03, + 6.699275356067286961e-03, + 6.742889948692776421e-03, + 6.786242835329623670e-03, + 6.829332678572868492e-03, + 6.872158151004048414e-03, + 6.914717935230468501e-03, + 6.957010723924821581e-03, + 6.999035219864431154e-03, + 7.040790135969372809e-03, + 7.082274195341109989e-03, + 7.123486131300334374e-03, + 7.164424687424417702e-03, + 7.205088617584422088e-03, + 7.245476685981949889e-03, + 7.285587667185660504e-03, + 7.325420346166925875e-03, + 7.364973518335538906e-03, + 7.404245989575152127e-03, + 7.443236576277710223e-03, + 7.481944105378206082e-03, + 7.520367414388478416e-03, + 7.558505351430971214e-03, + 7.596356775272163596e-03, + 7.633920555355059451e-03, + 7.671195571831971975e-03, + 7.708180715596558812e-03, + 7.744874888315485956e-03, + 7.781277002459632830e-03, + 7.817385981335063169e-03, + 7.853200759113724422e-03, + 7.888720280863176573e-03, + 7.923943502576583781e-03, + 7.958869391201984361e-03, + 7.993496924671108020e-03, + 8.027825091928033480e-03, + 8.061852892957108857e-03, + 8.095579338810776626e-03, + 8.129003451636966637e-03, + 8.162124264705925350e-03, + 8.194940822436469138e-03, + 8.227452180422529029e-03, + 8.259657405458619914e-03, + 8.291555575565026995e-03, + 8.323145780012780603e-03, + 8.354427119348242434e-03, + 8.385398705416954521e-03, + 8.416059661387509036e-03, + 8.446409121774588885e-03, + 8.476446232461911159e-03, + 8.506170150724795889e-03, + 8.535580045251869169e-03, + 8.564675096166865162e-03, + 8.593454495049905953e-03, + 8.621917444958179452e-03, + 8.650063160446136781e-03, + 8.677890867585785067e-03, + 8.705399803986064305e-03, + 8.732589218811970949e-03, + 8.759458372803240883e-03, + 8.786006538292831167e-03, + 8.812232999224577784e-03, + 8.838137051170872477e-03, + 8.863718001349584971e-03, + 8.888975168640740609e-03, + 8.913907883602856241e-03, + 8.938515488488570082e-03, + 8.962797337260085956e-03, + 8.986752795604353861e-03, + 9.010381240947355416e-03, + 9.033682062468375434e-03, + 9.056654661113675009e-03, + 9.079298449609952970e-03, + 9.101612852477024979e-03, + 9.123597306040348229e-03, + 9.145251258443285944e-03, + 9.166574169658422977e-03, + 9.187565511498997639e-03, + 9.208224767629606677e-03, + 9.228551433576610147e-03, + 9.248545016738121682e-03, + 9.268205036393580704e-03, + 9.287531023712589096e-03, + 9.306522521764061875e-03, + 9.325179085524226003e-03, + 9.343500281884497757e-03, + 9.361485689658987155e-03, + 9.379134899591514904e-03, + 9.396447514362218228e-03, + 9.413423148593712611e-03, + 9.430061428856890970e-03, + 9.446361993676240590e-03, + 9.462324493534814834e-03, + 9.477948590878682716e-03, + 9.493233960121064477e-03, + 9.508180287646042159e-03, + 9.522787271811697721e-03, + 9.537054622953036048e-03, + 9.550982063384415299e-03, + 9.564569327401477652e-03, + 9.577816161282812907e-03, + 9.590722323291039214e-03, + 9.603287583673557684e-03, + 9.615511724663008616e-03, + 9.627394540477073742e-03, + 9.638935837317830907e-03, + 9.650135433371226715e-03, + 9.660993158805331396e-03, + 9.671508855768836538e-03, + 9.681682378388756574e-03, + 9.691513592767949867e-03, + 9.701002376982053449e-03, + 9.710148621076114192e-03, + 9.718952227060654453e-03, + 9.727413108907593739e-03, + 9.735531192545502505e-03, + 9.743306415854529820e-03, + 9.750738728660961543e-03, + 9.757828092731313588e-03, + 9.764574481766047018e-03, + 9.770977881392806097e-03, + 9.777038289159387455e-03, + 9.782755714526129853e-03, + 9.788130178857972624e-03, + 9.793161715416139404e-03, + 9.797850369349403801e-03, + 9.802196197684855464e-03, + 9.806199269318329609e-03, + 9.809859665004532978e-03, + 9.813177477346527941e-03, + 9.816152810785004970e-03, + 9.818785781587067649e-03, + 9.821076517834646455e-03, + 9.823025159412487536e-03, + 9.824631857995752907e-03, + 9.825896777037183491e-03, + 9.826820091753953393e-03, + 9.827401989113969047e-03, + 9.827642667821915104e-03, + 9.827542338304901329e-03, + 9.827101222697502345e-03, + 9.826319554826693295e-03, + 9.825197580196143657e-03, + 9.823735555970358399e-03, + 9.821933750958099230e-03, + 9.819792445595746863e-03, + 9.817311931930052665e-03, + 9.814492513600586721e-03, + 9.811334505821693239e-03, + 9.807838235364334939e-03, + 9.804004040537082215e-03, + 9.799832271167157813e-03, + 9.795323288580855270e-03, + 9.790477465583657252e-03, + 9.785295186439854284e-03, + 9.779776846851962260e-03, + 9.773922853939583100e-03, + 9.767733626217999995e-03, + 9.761209593576309490e-03, + 9.754351197255189260e-03, + 9.747158889824341504e-03, + 9.739633135159513067e-03, + 9.731774408419144318e-03, + 9.723583196020596509e-03, + 9.715059995616033908e-03, + 9.706205316068056144e-03, + 9.697019677424712977e-03, + 9.687503610894284897e-03, + 9.677657658819753192e-03, + 9.667482374652813792e-03, + 9.656978322927438352e-03, + 9.646146079233260118e-03, + 9.634986230188479286e-03, + 9.623499373412362431e-03, + 9.611686117497537235e-03, + 9.599547081981660984e-03, + 9.587082897319040495e-03, + 9.574294204851655291e-03, + 9.561181656779885879e-03, + 9.547745916132934982e-03, + 9.533987656738854982e-03, + 9.519907563194185060e-03, + 9.505506330833230974e-03, + 9.490784665697171371e-03, + 9.475743284502470207e-03, + 9.460382914609283961e-03, + 9.444704293989344968e-03, + 9.428708171193353818e-03, + 9.412395305318468908e-03, + 9.395766465974961582e-03, + 9.378822433252786278e-03, + 9.361563997687763830e-03, + 9.343991960227473331e-03, + 9.326107132196691241e-03, + 9.307910335262485277e-03, + 9.289402401399192086e-03, + 9.270584172852770408e-03, + 9.251456502104984242e-03, + 9.232020251837258148e-03, + 9.212276294894100603e-03, + 9.192225514246287962e-03, + 9.171868802953717092e-03, + 9.151207064127869426e-03, + 9.130241210893905515e-03, + 9.108972166352787350e-03, + 9.087400863542453508e-03, + 9.065528245399223292e-03, + 9.043355264718663106e-03, + 9.020882884116211697e-03, + 8.998112075987213868e-03, + 8.975043822467099891e-03, + 8.951679115390962990e-03, + 8.928018956252675373e-03, + 8.904064356164189883e-03, + 8.879816335813965622e-03, + 8.855275925425544481e-03, + 8.830444164715588184e-03, + 8.805322102851556240e-03, + 8.779910798409278072e-03, + 8.754211319330211169e-03, + 8.728224742878114631e-03, + 8.701952155595788635e-03, + 8.675394653261336853e-03, + 8.648553340844114881e-03, + 8.621429332460467040e-03, + 8.594023751329150917e-03, + 8.566337729726420172e-03, + 8.538372408940925196e-03, + 8.510128939228263356e-03, + 8.481608479765104236e-03, + 8.452812198603455382e-03, + 8.423741272624157839e-03, + 8.394396887490343517e-03, + 8.364780237600632357e-03, + 8.334892526042121316e-03, + 8.304734964542846015e-03, + 8.274308773424093183e-03, + 8.243615181552676682e-03, + 8.212655426292642807e-03, + 8.181430753456628638e-03, + 8.149942417257556929e-03, + 8.118191680259154858e-03, + 8.086179813327196153e-03, + 8.053908095579691978e-03, + 8.021377814337168552e-03, + 7.988590265072873647e-03, + 7.955546751362280525e-03, + 7.922248584832662990e-03, + 7.888697085112342591e-03, + 7.854893579779788360e-03, + 7.820839404312256854e-03, + 7.786535902034231842e-03, + 7.751984424065929032e-03, + 7.717186329271187584e-03, + 7.682142984205298300e-03, + 7.646855763062511760e-03, + 7.611326047623397269e-03, + 7.575555227202082978e-03, + 7.539544698593054518e-03, + 7.503295866017596280e-03, + 7.466810141070586576e-03, + 7.430088942666458404e-03, + 7.393133696985184494e-03, + 7.355945837418199906e-03, + 7.318526804513745231e-03, + 7.280878045922417087e-03, + 7.243001016342202544e-03, + 7.204897177463267209e-03, + 7.166567997912753722e-03, + 7.128014953199578521e-03, + 7.089239525658173890e-03, + 7.050243204392903952e-03, + 7.011027485222023556e-03, + 6.971593870621277216e-03, + 6.931943869667249979e-03, + 6.892078997980994118e-03, + 6.852000777670948922e-03, + 6.811710737275768549e-03, + 6.771210411707393600e-03, + 6.730501342193257082e-03, + 6.689585076218892805e-03, + 6.648463167470081495e-03, + 6.607137175774767911e-03, + 6.565608667044845262e-03, + 6.523879213218322128e-03, + 6.481950392200105070e-03, + 6.439823787803672893e-03, + 6.397500989692334571e-03, + 6.354983593320104665e-03, + 6.312273199872342824e-03, + 6.269371416206797470e-03, + 6.226279854793739625e-03, + 6.183000133656570314e-03, + 6.139533876311959598e-03, + 6.095882711709671616e-03, + 6.052048274172813769e-03, + 6.008032203337359059e-03, + 5.963836144091688371e-03, + 5.919461746516141432e-03, + 5.874910665822384755e-03, + 5.830184562292559276e-03, + 5.785285101218067168e-03, + 5.740213952838857381e-03, + 5.694972792281972201e-03, + 5.649563299500067783e-03, + 5.603987159210296366e-03, + 5.558246060832187571e-03, + 5.512341698426369285e-03, + 5.466275770632519210e-03, + 5.420049980607138593e-03, + 5.373666035961876739e-03, + 5.327125648701110452e-03, + 5.280430535159485322e-03, + 5.233582415939605319e-03, + 5.186583015849574076e-03, + 5.139434063840279433e-03, + 5.092137292942376138e-03, + 5.044694440203852277e-03, + 4.997107246626865396e-03, + 4.949377457104471925e-03, + 4.901506820357946423e-03, + 4.853497088873032217e-03, + 4.805350018836997833e-03, + 4.757067370075092338e-03, + 4.708650905986890532e-03, + 4.660102393482724002e-03, + 4.611423602920474742e-03, + 4.562616308041092875e-03, + 4.513682285905160421e-03, + 4.464623316829089035e-03, + 4.415441184320982072e-03, + 4.366137675016432476e-03, + 4.316714578614817659e-03, + 4.267173687814651561e-03, + 4.217516798249744230e-03, + 4.167745708424761171e-03, + 4.117862219650605775e-03, + 4.067868135980432301e-03, + 4.017765264144984930e-03, + 3.967555413487884770e-03, + 3.917240395901216976e-03, + 3.866822025761264010e-03, + 3.816302119863129554e-03, + 3.765682497356482618e-03, + 3.714964979680825466e-03, + 3.664151390500620595e-03, + 3.613243555640274600e-03, + 3.562243303019714449e-03, + 3.511152462588991007e-03, + 3.459972866263840135e-03, + 3.408706347860499582e-03, + 3.357354743030586605e-03, + 3.305919889196498596e-03, + 3.254403625486182710e-03, + 3.202807792668003941e-03, + 3.151134233085833500e-03, + 3.099384790594104239e-03, + 3.047561310492645330e-03, + 2.995665639461397682e-03, + 2.943699625495717863e-03, + 2.891665117841119102e-03, + 2.839563966927989742e-03, + 2.787398024306930559e-03, + 2.735169142583204326e-03, + 2.682879175352089179e-03, + 2.630529977133602704e-03, + 2.578123403307348328e-03, + 2.525661310047499618e-03, + 2.473145554258229101e-03, + 2.420577993507942293e-03, + 2.367960485964699154e-03, + 2.315294890331318078e-03, + 2.262583065780284300e-03, + 2.209826871888658298e-03, + 2.157028168573510690e-03, + 2.104188816026917371e-03, + 2.051310674650875729e-03, + 1.998395604992992802e-03, + 1.945445467681188121e-03, + 1.892462123359403559e-03, + 1.839447432622744400e-03, + 1.786403255952702168e-03, + 1.733331453652612068e-03, + 1.680233885783556039e-03, + 1.627112412099111565e-03, + 1.573968891981315657e-03, + 1.520805184376375352e-03, + 1.467623147730174596e-03, + 1.414424639923819726e-03, + 1.361211518209859981e-03, + 1.307985639147634565e-03, + 1.254748858539622616e-03, + 1.201503031367237399e-03, + 1.148250011726672550e-03, + 1.094991652765424416e-03, + 1.041729806618279467e-03, + 9.884663243434699612e-04, + 9.352030558591477218e-04, + 8.819418498799381449e-04, + 8.286845538533339599e-04, + 7.754330138960990751e-04, + 7.221890747313393149e-04, + 6.689545796250819052e-04, + 6.157313703229568740e-04, + 5.625212869875974948e-04, + 5.093261681351904987e-04, + 4.561478505730758482e-04, + 4.029881693368073375e-04, + 3.498489576273183604e-04, + 2.967320467487643827e-04, + 2.436392660458966332e-04, + 1.905724428416119499e-04, + 1.375334023748625545e-04, + 8.452396773868434382e-05, + 3.154595981807963354e-05, +-2.139880277204428150e-05, +-7.430850374824364709e-05, +-1.271813292204252278e-04, +-1.800154677532257773e-04, +-2.328091104275871318e-04, +-2.855604509018841051e-04, +-3.382676854729227867e-04, +-3.909290131370648787e-04, +-4.435426356512794997e-04, +-4.961067575934901761e-04, +-5.486195864233519084e-04, +-6.010793325428956954e-04, +-6.534842093563903711e-04, +-7.058324333310175402e-04, +-7.581222240564444758e-04, +-8.103518043048941241e-04, +-8.625194000910486837e-04, +-9.146232407312527906e-04, +-9.666615589031128707e-04, +-1.018632590704893204e-03, +-1.070534575714492077e-03, +-1.122365757048264740e-03, +-1.174124381419940468e-03, +-1.225808699199420039e-03, +-1.277416964470876829e-03, +-1.328947435091215904e-03, +-1.380398372748392393e-03, +-1.431768043018942504e-03, +-1.483054715426220579e-03, +-1.534256663497612656e-03, +-1.585372164822118233e-03, +-1.636399501107736005e-03, +-1.687336958238476198e-03, +-1.738182826330797849e-03, +-1.788935399791078676e-03, +-1.839592977371667026e-03, +-1.890153862227182333e-03, +-1.940616361970752025e-03, +-1.990978788730162798e-03, +-2.041239459203183105e-03, +-2.091396694713596252e-03, +-2.141448821266162070e-03, +-2.191394169601946790e-03, +-2.241231075253473370e-03, +-2.290957878599133267e-03, +-2.340572924917901348e-03, +-2.390074564443828761e-03, +-2.439461152420123805e-03, +-2.488731049152662512e-03, +-2.537882620064437714e-03, +-2.586914235748656761e-03, +-2.635824272021959798e-03, +-2.684611109977651493e-03, +-2.733273136038706381e-03, +-2.781808742010044317e-03, +-2.830216325131368425e-03, +-2.878494288129014676e-03, +-2.926641039268057781e-03, +-2.974654992404242304e-03, +-3.022534567035187799e-03, +-3.070278188351798637e-03, +-3.117884287289503838e-03, +-3.165351300578907959e-03, +-3.212677670796319686e-03, +-3.259861846414184149e-03, +-3.306902281851403780e-03, +-3.353797437522858162e-03, +-3.400545779889219220e-03, +-3.447145781506518770e-03, +-3.493595921074912469e-03, +-3.539894683488022283e-03, +-3.586040559881204740e-03, +-3.632032047680157014e-03, +-3.677867650649139196e-03, +-3.723545878938901241e-03, +-3.769065249133877853e-03, +-3.814424284300290194e-03, +-3.859621514032918373e-03, +-3.904655474501891269e-03, +-3.949524708499478100e-03, +-3.994227765486566863e-03, +-4.038763201638482722e-03, +-4.083129579890998513e-03, +-4.127325469986025189e-03, +-4.171349448516623558e-03, +-4.215200098972382049e-03, +-4.258876011783914971e-03, +-4.302375784367460515e-03, +-4.345698021169248047e-03, +-4.388841333709396150e-03, +-4.431804340625226935e-03, +-4.474585667715319341e-03, +-4.517183947982252729e-03, +-4.559597821675418980e-03, +-4.601825936333727926e-03, +-4.643866946827995314e-03, +-4.685719515402646425e-03, +-4.727382311717818683e-03, +-4.768854012890457253e-03, +-4.810133303535644826e-03, +-4.851218875807574056e-03, +-4.892109429439858194e-03, +-4.932803671785957085e-03, +-4.973300317859285710e-03, +-5.013598090372811851e-03, +-5.053695719778360587e-03, +-5.093591944305869354e-03, +-5.133285510002273504e-03, +-5.172775170769823745e-03, +-5.212059688404416594e-03, +-5.251137832633667214e-03, +-5.290008381154213783e-03, +-5.328670119669382671e-03, +-5.367121841925938559e-03, +-5.405362349750883130e-03, +-5.443390453088061201e-03, +-5.481204970033951539e-03, +-5.518804726873620739e-03, +-5.556188558116275517e-03, +-5.593355306530422080e-03, +-5.630303823178582287e-03, +-5.667032967451949080e-03, +-5.703541607104829422e-03, +-5.739828618288236352e-03, +-5.775892885583674453e-03, +-5.811733302036615686e-03, +-5.847348769189117390e-03, +-5.882738197112881776e-03, +-5.917900504441320556e-03, +-5.952834618401647328e-03, +-5.987539474846804294e-03, +-6.022014018286686414e-03, +-6.056257201919003873e-03, +-6.090267987660512305e-03, +-6.124045346177131068e-03, +-6.157588256914045891e-03, +-6.190895708125529646e-03, +-6.223966696904554077e-03, +-6.256800229211594011e-03, +-6.289395319903801941e-03, +-6.321750992763126159e-03, +-6.353866280524658738e-03, +-6.385740224904490857e-03, +-6.417371876627006935e-03, +-6.448760295452132807e-03, +-6.479904550202232605e-03, +-6.510803718788542478e-03, +-6.541456888237116851e-03, +-6.571863154715021013e-03, +-6.602021623555607774e-03, +-6.631931409283598096e-03, +-6.661591635639950958e-03, +-6.691001435606536325e-03, +-6.720159951429930355e-03, +-6.749066334645476874e-03, +-6.777719746100658443e-03, +-6.806119355978151701e-03, +-6.834264343818763007e-03, +-6.862153898543738723e-03, +-6.889787218476892475e-03, +-6.917163511366409764e-03, +-6.944281994406318638e-03, +-6.971141894257327186e-03, +-6.997742447067827574e-03, +-7.024082898494089962e-03, +-7.050162503720494578e-03, +-7.075980527479031751e-03, +-7.101536244068723004e-03, +-7.126828937374781944e-03, +-7.151857900887070851e-03, +-7.176622437718472268e-03, +-7.201121860622881551e-03, +-7.225355492012937482e-03, +-7.249322663977078932e-03, +-7.273022718296585053e-03, +-7.296455006462264185e-03, +-7.319618889690427191e-03, +-7.342513738939051605e-03, +-7.365138934923109656e-03, +-7.387493868129770512e-03, +-7.409577938833420384e-03, +-7.431390557109923689e-03, +-7.452931142850768853e-03, +-7.474199125777057987e-03, +-7.495193945452767112e-03, +-7.515915051297784345e-03, +-7.536361902600756391e-03, +-7.556533968531464057e-03, +-7.576430728152719861e-03, +-7.596051670432153735e-03, +-7.615396294253566796e-03, +-7.634464108427718720e-03, +-7.653254631703155890e-03, +-7.671767392776334370e-03, +-7.690001930301545996e-03, +-7.707957792900550428e-03, +-7.725634539171729286e-03, +-7.743031737698866449e-03, +-7.760148967059764431e-03, +-7.776985815834371561e-03, +-7.793541882612486753e-03, +-7.809816776001235299e-03, +-7.825810114632203787e-03, +-7.841521527168129196e-03, +-7.856950652309268798e-03, +-7.872097138799450874e-03, +-7.886960645431664862e-03, +-7.901540841053546552e-03, +-7.915837404572127756e-03, +-7.929850024958629354e-03, +-7.943578401252591667e-03, +-7.957022242565919834e-03, +-7.970181268086183254e-03, +-7.983055207080130139e-03, +-7.995643798896279186e-03, +-8.007946792967589322e-03, +-8.019963948813433816e-03, +-8.031695036041525820e-03, +-8.043139834349257583e-03, +-8.054298133524899136e-03, +-8.065169733448195044e-03, +-8.075754444090784204e-03, +-8.086052085516338625e-03, +-8.096062487880075972e-03, +-8.105785491428155881e-03, +-8.115220946496685961e-03, +-8.124368713510363507e-03, +-8.133228662980647103e-03, +-8.141800675503707910e-03, +-8.150084641758138099e-03, +-8.158080462501987942e-03, +-8.165788048569768212e-03, +-8.173207320868961651e-03, +-8.180338210376118108e-03, +-8.187180658132816105e-03, +-8.193734615241067554e-03, +-8.200000042858432772e-03, +-8.205976912192877032e-03, +-8.211665204497207299e-03, +-8.217064911063064886e-03, +-8.222176033214883412e-03, +-8.226998582303078275e-03, +-8.231532579697262153e-03, +-8.235778056778851608e-03, +-8.239735054933581757e-03, +-8.243403625543368682e-03, +-8.246783829978147559e-03, +-8.249875739587145262e-03, +-8.252679435689870210e-03, +-8.255195009566842004e-03, +-8.257422562449866568e-03, +-8.259362205512025060e-03, +-8.261014059857326244e-03, +-8.262378256510050090e-03, +-8.263454936403622983e-03, +-8.264244250369314274e-03, +-8.264746359124563319e-03, +-8.264961433260812132e-03, +-8.264889653231254768e-03, +-8.264531209338087103e-03, +-8.263886301719387123e-03, +-8.262955140335807858e-03, +-8.261737944956878271e-03, +-8.260234945146839244e-03, +-8.258446380250422311e-03, +-8.256372499378014304e-03, +-8.254013561390643322e-03, +-8.251369834884629897e-03, +-8.248441598175939790e-03, +-8.245229139284018099e-03, +-8.241732755915571335e-03, +-8.237952755447777026e-03, +-8.233889454911364966e-03, +-8.229543180973237018e-03, +-8.224914269918840587e-03, +-8.220003067634115354e-03, +-8.214809929587301232e-03, +-8.209335220810239780e-03, +-8.203579315879462250e-03, +-8.197542598896925478e-03, +-8.191225463470360943e-03, +-8.184628312693521465e-03, +-8.177751559125794739e-03, +-8.170595624771782167e-03, +-8.163160941060438811e-03, +-8.155447948823845578e-03, +-8.147457098275801002e-03, +-8.139188848989988012e-03, +-8.130643669877930801e-03, +-8.121822039166469442e-03, +-8.112724444375168584e-03, +-8.103351382293191851e-03, +-8.093703358956044411e-03, +-8.083780889621883584e-03, +-8.073584498747501600e-03, +-8.063114719964209476e-03, +-8.052372096053216077e-03, +-8.041357178920738313e-03, +-8.030070529572871929e-03, +-8.018512718090130970e-03, +-8.006684323601673259e-03, +-7.994585934259204954e-03, +-7.982218147210796630e-03, +-7.969581568573969044e-03, +-7.956676813408933291e-03, +-7.943504505691303605e-03, +-7.930065278284558622e-03, +-7.916359772912209478e-03, +-7.902388640129695552e-03, +-7.888152539295990515e-03, +-7.873652138544852755e-03, +-7.858888114756001214e-03, +-7.843861153525638966e-03, +-7.828571949137034039e-03, +-7.813021204530744626e-03, +-7.797209631274335147e-03, +-7.781137949532133079e-03, +-7.764806888034528690e-03, +-7.748217184046874914e-03, +-7.731369583338530346e-03, +-7.714264840151144158e-03, +-7.696903717166927138e-03, +-7.679286985476664260e-03, +-7.661415424547342139e-03, +-7.643289822189525823e-03, +-7.624910974524575988e-03, +-7.606279685951427248e-03, +-7.587396769113329172e-03, +-7.568263044864044324e-03, +-7.548879342233975193e-03, +-7.529246498396003143e-03, +-7.509365358631042014e-03, +-7.489236776293269060e-03, +-7.468861612775175469e-03, +-7.448240737472515416e-03, +-7.427375027748503097e-03, +-7.406265368898326366e-03, +-7.384912654113139942e-03, +-7.363317784443742034e-03, +-7.341481668764099182e-03, +-7.319405223734733179e-03, +-7.297089373765536409e-03, +-7.274535050978740702e-03, +-7.251743195171365779e-03, +-7.228714753777398805e-03, +-7.205450681830074568e-03, +-7.181951941923503391e-03, +-7.158219504174272163e-03, +-7.134254346182732250e-03, +-7.110057452994258780e-03, +-7.085629817059972170e-03, +-7.060972438197343423e-03, +-7.036086323550706616e-03, +-7.010972487551391484e-03, +-6.985631951877554167e-03, +-6.960065745414088616e-03, +-6.934274904211936916e-03, +-6.908260471447484619e-03, +-6.882023497381561418e-03, +-6.855565039318264886e-03, +-6.828886161563469358e-03, +-6.801987935383554257e-03, +-6.774871438963152304e-03, +-6.747537757363346149e-03, +-6.719987982479443470e-03, +-6.692223212998457162e-03, +-6.664244554356384305e-03, +-6.636053118695479057e-03, +-6.607650024821048497e-03, +-6.579036398158182551e-03, +-6.550213370708371161e-03, +-6.521182081005665217e-03, +-6.491943674072945050e-03, +-6.462499301377766514e-03, +-6.432850120788078697e-03, +-6.402997296527635461e-03, +-6.372941999131759121e-03, +-6.342685405401934061e-03, +-6.312228698361075155e-03, +-6.281573067208350361e-03, +-6.250719707273597395e-03, +-6.219669819971759481e-03, +-6.188424612757230034e-03, +-6.156985299077714219e-03, +-6.125353098328261379e-03, +-6.093529235804864656e-03, +-6.061514942657885395e-03, +-6.029311455845621538e-03, +-5.996920018087273201e-03, +-5.964341877815992378e-03, +-5.931578289131684591e-03, +-5.898630511753797517e-03, +-5.865499810973720182e-03, +-5.832187457606990456e-03, +-5.798694727945759297e-03, +-5.765022903710618346e-03, +-5.731173272002380685e-03, +-5.697147125254025529e-03, +-5.662945761181951629e-03, +-5.628570482737661751e-03, +-5.594022598058855621e-03, +-5.559303420420428320e-03, +-5.524414268185646494e-03, +-5.489356464756827564e-03, +-5.454131338525939135e-03, +-5.418740222825205351e-03, +-5.383184455877518954e-03, +-5.347465380746665130e-03, +-5.311584345287254788e-03, +-5.275542702094978761e-03, +-5.239341808456299959e-03, +-5.202983026298047507e-03, +-5.166467722137317066e-03, +-5.129797267030509859e-03, +-5.092973036523065593e-03, +-5.055996410598454643e-03, +-5.018868773627240508e-03, +-4.981591514316032962e-03, +-4.944166025656675408e-03, +-4.906593704874445162e-03, +-4.868875953376990140e-03, +-4.831014176702883023e-03, +-4.793009784469877063e-03, +-4.754864190323154077e-03, +-4.716578811883732902e-03, +-4.678155070696266363e-03, +-4.639594392177254570e-03, +-4.600898205562835817e-03, +-4.562067943856446504e-03, +-4.523105043776710042e-03, +-4.484010945704936316e-03, +-4.444787093632503183e-03, +-4.405434935108289152e-03, +-4.365955921186367994e-03, +-4.326351506372581000e-03, +-4.286623148572106697e-03, +-4.246772309036463307e-03, +-4.206800452310467849e-03, +-4.166709046178954969e-03, +-4.126499561613912979e-03, +-4.086173472720864425e-03, +-4.045732256685839918e-03, +-4.005177393721881876e-03, +-3.964510367015356557e-03, +-3.923732662672737952e-03, +-3.882845769666851739e-03, +-3.841851179783077174e-03, +-3.800750387565728083e-03, +-3.759544890264346264e-03, +-3.718236187779754183e-03, +-3.676825782609951555e-03, +-3.635315179796496775e-03, +-3.593705886870298544e-03, +-3.551999413797409660e-03, +-3.510197272925242359e-03, +-3.468300978927987832e-03, +-3.426312048752790367e-03, +-3.384232001565296109e-03, +-3.342062358695204859e-03, +-3.299804643582263802e-03, +-3.257460381721701340e-03, +-3.215031100609725984e-03, +-3.172518329689179208e-03, +-3.129923600295167908e-03, +-3.087248445600417144e-03, +-3.044494400560634161e-03, +-3.001663001860180747e-03, +-2.958755787857402994e-03, +-2.915774298529815334e-03, +-2.872720075419841427e-03, +-2.829594661579767478e-03, +-2.786399601517409834e-03, +-2.743136441141296421e-03, +-2.699806727705881572e-03, +-2.656412009756850198e-03, +-2.612953837076816607e-03, +-2.569433760629941717e-03, +-2.525853332507581577e-03, +-2.482214105873634460e-03, +-2.438517634909659858e-03, +-2.394765474760032157e-03, +-2.350959181477550557e-03, +-2.307100311968326035e-03, +-2.263190423937401670e-03, +-2.219231075833899818e-03, +-2.175223826796167121e-03, +-2.131170236597403067e-03, +-2.087071865590822348e-03, +-2.042930274654848870e-03, +-1.998747025138782486e-03, +-1.954523678808036367e-03, +-1.910261797789365073e-03, +-1.865962944516660286e-03, +-1.821628681675996732e-03, +-1.777260572151452859e-03, +-1.732860178970473770e-03, +-1.688429065249311785e-03, +-1.643968794138628330e-03, +-1.599480928769480507e-03, +-1.554967032198334691e-03, +-1.510428667353100156e-03, +-1.465867396978913105e-03, +-1.421284783583796245e-03, +-1.376682389384289301e-03, +-1.332061776251691450e-03, +-1.287424505657525087e-03, +-1.242772138619859575e-03, +-1.198106235649155568e-03, +-1.153428356694151174e-03, +-1.108740061088301938e-03, +-1.064042907495777813e-03, +-1.019338453857582651e-03, +-9.746282573379494050e-04, +-9.299138742707950675e-04, +-8.851968601060221983e-04, +-8.404787693558401834e-04, +-7.957611555416282696e-04, +-7.510455711403962514e-04, +-7.063335675313077173e-04, +-6.616266949428156524e-04, +-6.169265023990716263e-04, +-5.722345376672119920e-04, +-5.275523472041916467e-04, +-4.828814761036936878e-04, +-4.382234680436028528e-04, +-3.935798652330907074e-04, +-3.489522083598248117e-04, +-3.043420365374958285e-04, +-2.597508872534213392e-04, +-2.151802963160355747e-04, +-1.706317978024115092e-04, +-1.261069240063661466e-04, +-8.160720538617621258e-05, +-3.713417051239320700e-05, + 7.310653983705088637e-06, + 5.172574346236636760e-05, + 9.610957532670665602e-05, + 1.404606290744316998e-04, + 1.847773863497182052e-04, + 2.290583309940219601e-04, + 2.733019490974734011e-04, + 3.175067290506943863e-04, + 3.616711615950029906e-04, + 4.057937398737899428e-04, + 4.498729594834496468e-04, + 4.939073185237722718e-04, + 5.378953176486954727e-04, + 5.818354601169213993e-04, + 6.257262518419496981e-04, + 6.695662014424009741e-04, + 7.133538202925205534e-04, + 7.570876225713017325e-04, + 8.007661253129485590e-04, + 8.443878484566738878e-04, + 8.879513148957390379e-04, + 9.314550505269920738e-04, + 9.748975843007780771e-04, + 1.018277448269265615e-03, + 1.061593177635863266e-03, + 1.104843310804208426e-03, + 1.148026389426561652e-03, + 1.191140958452559977e-03, + 1.234185566177799795e-03, + 1.277158764291809988e-03, + 1.320059107926288512e-03, + 1.362885155703510076e-03, + 1.405635469783307655e-03, + 1.448308615911498599e-03, + 1.490903163466976520e-03, + 1.533417685509523738e-03, + 1.575850758826466890e-03, + 1.618200963979818689e-03, + 1.660466885353755785e-03, + 1.702647111200529745e-03, + 1.744740233687412352e-03, + 1.786744848943194654e-03, + 1.828659557104074301e-03, + 1.870482962359864675e-03, + 1.912213673000015589e-03, + 1.953850301459000589e-03, + 1.995391464361956878e-03, + 2.036835782570415448e-03, + 2.078181881226687667e-03, + 2.119428389799437977e-03, + 2.160573942128611504e-03, + 2.201617176469553711e-03, + 2.242556735537552023e-03, + 2.283391266552714863e-03, + 2.324119421283227412e-03, + 2.364739856089650809e-03, + 2.405251231968704839e-03, + 2.445652214596499840e-03, + 2.485941474371975487e-03, + 2.526117686460202950e-03, + 2.566179530834985373e-03, + 2.606125692321721588e-03, + 2.645954860640292814e-03, + 2.685665730446669570e-03, + 2.725257001375590207e-03, + 2.764727378082610602e-03, + 2.804075570285303846e-03, + 2.843300292805138203e-03, + 2.882400265608877146e-03, + 2.921374213849412156e-03, + 2.960220867906847905e-03, + 2.998938963429289509e-03, + 3.037527241373109803e-03, + 3.075984448043331525e-03, + 3.114309335133829976e-03, + 3.152500659766927643e-03, + 3.190557184533110262e-03, + 3.228477677530780174e-03, + 3.266260912404953670e-03, + 3.303905668386299208e-03, + 3.341410730330489180e-03, + 3.378774888756009946e-03, + 3.415996939882809304e-03, + 3.453075685670534568e-03, + 3.490009933856074147e-03, + 3.526798497991368454e-03, + 3.563440197480956251e-03, + 3.599933857618892175e-03, + 3.636278309625829482e-03, + 3.672472390685894202e-03, + 3.708514943982909196e-03, + 3.744404818736712763e-03, + 3.780140870239560944e-03, + 3.815721959891366262e-03, + 3.851146955235381416e-03, + 3.886414729994040838e-03, + 3.921524164103316890e-03, + 3.956474143747935185e-03, + 3.991263561396040868e-03, + 4.025891315833313687e-03, + 4.060356312197196255e-03, + 4.094657462010889426e-03, + 4.128793683216757000e-03, + 4.162763900209755577e-03, + 4.196567043870915587e-03, + 4.230202051599536023e-03, + 4.263667867346368837e-03, + 4.296963441646063468e-03, + 4.330087731648829888e-03, + 4.363039701152633329e-03, + 4.395818320634907635e-03, + 4.428422567283673596e-03, + 4.460851425028817749e-03, + 4.493103884573028568e-03, + 4.525178943422227852e-03, + 4.557075605915989966e-03, + 4.588792883257804094e-03, + 4.620329793544647803e-03, + 4.651685361796645615e-03, + 4.682858619986702414e-03, + 4.713848607068965926e-03, + 4.744654369008005634e-03, + 4.775274958807516380e-03, + 4.805709436538106033e-03, + 4.835956869365551532e-03, + 4.866016331578675892e-03, + 4.895886904616514844e-03, + 4.925567677095672552e-03, + 4.955057744837382434e-03, + 4.984356210893888840e-03, + 5.013462185575010867e-03, + 5.042374786474377452e-03, + 5.071093138495033625e-03, + 5.099616373875087531e-03, + 5.127943632213308005e-03, + 5.156074060493741167e-03, + 5.184006813110581154e-03, + 5.211741051893022635e-03, + 5.239275946128976215e-03, + 5.266610672589243543e-03, + 5.293744415551263939e-03, + 5.320676366822277292e-03, + 5.347405725762565017e-03, + 5.373931699308358810e-03, + 5.400253501994163943e-03, + 5.426370355975174489e-03, + 5.452281491049349414e-03, + 5.477986144678897995e-03, + 5.503483562011805136e-03, + 5.528772995903173670e-03, + 5.553853706935773030e-03, + 5.578724963440631276e-03, + 5.603386041517751173e-03, + 5.627836225055627556e-03, + 5.652074805751183643e-03, + 5.676101083129289279e-03, + 5.699914364561757020e-03, + 5.723513965286300062e-03, + 5.746899208425205671e-03, + 5.770069425003398859e-03, + 5.793023953966610143e-03, + 5.815762142199262276e-03, + 5.838283344541454929e-03, + 5.860586923806479324e-03, + 5.882672250797681482e-03, + 5.904538704324800713e-03, + 5.926185671220367962e-03, + 5.947612546355769345e-03, + 5.968818732656783199e-03, + 5.989803641119087647e-03, + 6.010566690823426414e-03, + 6.031107308950281118e-03, + 6.051424930794470705e-03, + 6.071518999779508888e-03, + 6.091388967471352694e-03, + 6.111034293592108521e-03, + 6.130454446033634097e-03, + 6.149648900870147324e-03, + 6.168617142371372007e-03, + 6.187358663014968889e-03, + 6.205872963498559880e-03, + 6.224159552751679439e-03, + 6.242217947947528191e-03, + 6.260047674514048269e-03, + 6.277648266145029014e-03, + 6.295019264810897824e-03, + 6.312160220768997521e-03, + 6.329070692573737084e-03, + 6.345750247086559374e-03, + 6.362198459485234048e-03, + 6.378414913273239804e-03, + 6.394399200288775412e-03, + 6.410150920713220818e-03, + 6.425669683079451681e-03, + 6.440955104280241504e-03, + 6.456006809575557011e-03, + 6.470824432600300220e-03, + 6.485407615371427750e-03, + 6.499756008294696290e-03, + 6.513869270171348223e-03, + 6.527747068204360972e-03, + 6.541389078004332044e-03, + 6.554794983595226172e-03, + 6.567964477419838826e-03, + 6.580897260344645630e-03, + 6.593593041664774952e-03, + 6.606051539108486956e-03, + 6.618272478841292703e-03, + 6.630255595469773146e-03, + 6.642000632045462309e-03, + 6.653507340067833613e-03, + 6.664775479487444060e-03, + 6.675804818708704590e-03, + 6.686595134592149964e-03, + 6.697146212456646201e-03, + 6.707457846081225049e-03, + 6.717529837706530740e-03, + 6.727361998036060324e-03, + 6.736954146237270416e-03, + 6.746306109941899859e-03, + 6.755417725246546518e-03, + 6.764288836712718453e-03, + 6.772919297366427130e-03, + 6.781308968697770216e-03, + 6.789457720660085904e-03, + 6.797365431668761157e-03, + 6.805031988599864745e-03, + 6.812457286788422932e-03, + 6.819641230026336071e-03, + 6.826583730560172904e-03, + 6.833284709088562406e-03, + 6.839744094759197916e-03, + 6.845961825165754536e-03, + 6.851937846344421414e-03, + 6.857672112770065408e-03, + 6.863164587352167494e-03, + 6.868415241430599581e-03, + 6.873424054770853157e-03, + 6.878191015559132621e-03, + 6.882716120397189274e-03, + 6.886999374296765876e-03, + 6.891040790673802659e-03, + 6.894840391342384016e-03, + 6.898398206508320890e-03, + 6.901714274762464282e-03, + 6.904788643073838349e-03, + 6.907621366782335480e-03, + 6.910212509591190204e-03, + 6.912562143559207624e-03, + 6.914670349092657056e-03, + 6.916537214936804845e-03, + 6.918162838167385593e-03, + 6.919547324181552113e-03, + 6.920690786688650162e-03, + 6.921593347700764204e-03, + 6.922255137522799993e-03, + 6.922676294742526396e-03, + 6.922856966220088983e-03, + 6.922797307077469854e-03, + 6.922497480687494695e-03, + 6.921957658662647277e-03, + 6.921178020843555233e-03, + 6.920158755287243377e-03, + 6.918900058255136355e-03, + 6.917402134200631957e-03, + 6.915665195756572070e-03, + 6.913689463722363232e-03, + 6.911475167050803135e-03, + 6.909022542834677288e-03, + 6.906331836293051231e-03, + 6.903403300757206262e-03, + 6.900237197656595121e-03, + 6.896833796504112449e-03, + 6.893193374881395608e-03, + 6.889316218423775090e-03, + 6.885202620804891857e-03, + 6.880852883721138603e-03, + 6.876267316875729792e-03, + 6.871446237962625103e-03, + 6.866389972650062574e-03, + 6.861098854563938212e-03, + 6.855573225270810041e-03, + 6.849813434260680969e-03, + 6.843819838929652427e-03, + 6.837592804562022883e-03, + 6.831132704312368152e-03, + 6.824439919187302514e-03, + 6.817514838026905895e-03, + 6.810357857486005334e-03, + 6.802969382015039250e-03, + 6.795349823840840173e-03, + 6.787499602947032369e-03, + 6.779419147054295026e-03, + 6.771108891600118897e-03, + 6.762569279718645340e-03, + 6.753800762220058679e-03, + 6.744803797569659358e-03, + 6.735578851866829558e-03, + 6.726126398823781098e-03, + 6.716446919743777715e-03, + 6.706540903499473572e-03, + 6.696408846510721810e-03, + 6.686051252722231310e-03, + 6.675468633581092479e-03, + 6.664661508013801708e-03, + 6.653630402403252868e-03, + 6.642375850565436501e-03, + 6.630898393725916974e-03, + 6.619198580495818697e-03, + 6.607276966848027455e-03, + 6.595134116092807135e-03, + 6.582770598853190068e-03, + 6.570186993040347430e-03, + 6.557383883828532024e-03, + 6.544361863629765200e-03, + 6.531121532068494273e-03, + 6.517663495955828418e-03, + 6.503988369263496126e-03, + 6.490096773097868595e-03, + 6.475989335673465290e-03, + 6.461666692286146402e-03, + 6.447129485286573307e-03, + 6.432378364052904023e-03, + 6.417413984963501669e-03, + 6.402237011369443440e-03, + 6.386848113566725993e-03, + 6.371247968768246200e-03, + 6.355437261075630104e-03, + 6.339416681450814675e-03, + 6.323186927687332072e-03, + 6.306748704381460319e-03, + 6.290102722903216127e-03, + 6.273249701366842915e-03, + 6.256190364601539947e-03, + 6.238925444121603409e-03, + 6.221455678096378394e-03, + 6.203781811320301098e-03, + 6.185904595182402377e-03, + 6.167824787635738451e-03, + 6.149543153166621250e-03, + 6.131060462763654462e-03, + 6.112377493886431319e-03, + 6.093495030434251461e-03, + 6.074413862714446617e-03, + 6.055134787410531086e-03, + 6.035658607550299301e-03, + 6.015986132473565180e-03, + 5.996118177799611773e-03, + 5.976055565394830862e-03, + 5.955799123339871638e-03, + 5.935349685896335742e-03, + 5.914708093474063851e-03, + 5.893875192597413520e-03, + 5.872851835871784228e-03, + 5.851638881949887405e-03, + 5.830237195497769281e-03, + 5.808647647160703614e-03, + 5.786871113528757431e-03, + 5.764908477102479931e-03, + 5.742760626258068372e-03, + 5.720428455212475845e-03, + 5.697912863988505161e-03, + 5.675214758379520247e-03, + 5.652335049913827063e-03, + 5.629274655819525505e-03, + 5.606034498988434964e-03, + 5.582615507940102278e-03, + 5.559018616786007456e-03, + 5.535244765193075497e-03, + 5.511294898347202965e-03, + 5.487169966916853082e-03, + 5.462870927016082699e-03, + 5.438398740167652533e-03, + 5.413754373265985617e-03, + 5.388938798539878554e-03, + 5.363952993514991587e-03, + 5.338797940976386380e-03, + 5.313474628930733336e-03, + 5.287984050568284716e-03, + 5.262327204225020379e-03, + 5.236505093344458704e-03, + 5.210518726438943642e-03, + 5.184369117051558853e-03, + 5.158057283717254297e-03, + 5.131584249923997962e-03, + 5.104951044073938009e-03, + 5.078158699444293434e-03, + 5.051208254147947219e-03, + 5.024100751094270206e-03, + 4.996837237949561597e-03, + 4.969418767097050563e-03, + 4.941846395597707976e-03, + 4.914121185149825620e-03, + 4.886244202048923256e-03, + 4.858216517147876876e-03, + 4.830039205816460610e-03, + 4.801713347900548635e-03, + 4.773240027681999696e-03, + 4.744620333837661248e-03, + 4.715855359398496774e-03, + 4.686946201708766004e-03, + 4.657893962384831305e-03, + 4.628699747273872997e-03, + 4.599364666412680998e-03, + 4.569889833986226155e-03, + 4.540276368285730245e-03, + 4.510525391667553896e-03, + 4.480638030510998571e-03, + 4.450615415176297635e-03, + 4.420458679962983861e-03, + 4.390168963067502331e-03, + 4.359747406540913535e-03, + 4.329195156246743934e-03, + 4.298513361818440993e-03, + 4.267703176616687716e-03, + 4.236765757686999923e-03, + 4.205702265716817004e-03, + 4.174513864992584859e-03, + 4.143201723356988025e-03, + 4.111767012165847002e-03, + 4.080210906244747561e-03, + 4.048534583846148845e-03, + 4.016739226606062980e-03, + 3.984826019500159640e-03, + 3.952796150800858520e-03, + 3.920650812033510228e-03, + 3.888391197932561990e-03, + 3.856018506398098053e-03, + 3.823533938451900444e-03, + 3.790938698193385692e-03, + 3.758233992755888059e-03, + 3.725421032262469633e-03, + 3.692501029781640638e-03, + 3.659475201283434505e-03, + 3.626344765595013262e-03, + 3.593110944356045673e-03, + 3.559774961974752384e-03, + 3.526338045583284498e-03, + 3.492801424992763443e-03, + 3.459166332649254126e-03, + 3.425434003588802637e-03, + 3.391605675392603183e-03, + 3.357682588142465140e-03, + 3.323665984375805214e-03, + 3.289557109040659125e-03, + 3.255357209450969978e-03, + 3.221067535241439045e-03, + 3.186689338322209585e-03, + 3.152223872834365986e-03, + 3.117672395104289281e-03, + 3.083036163598390413e-03, + 3.048316438878282807e-03, + 3.013514483555253254e-03, + 2.978631562244791336e-03, + 2.943668941521508740e-03, + 2.908627889873591481e-03, + 2.873509677657236534e-03, + 2.838315577051415874e-03, + 2.803046862012236774e-03, + 2.767704808227306433e-03, + 2.732290693070368523e-03, + 2.696805795555646135e-03, + 2.661251396291865103e-03, + 2.625628777437285198e-03, + 2.589939222653528730e-03, + 2.554184017059778645e-03, + 2.518364447187545607e-03, + 2.482481800934628873e-03, + 2.446537367519292707e-03, + 2.410532437434731619e-03, + 2.374468302403188666e-03, + 2.338346255330031251e-03, + 2.302167590258195982e-03, + 2.265933602322244955e-03, + 2.229645587702456296e-03, + 2.193304843579210479e-03, + 2.156912668087114255e-03, + 2.120470360268848775e-03, + 2.083979220029832588e-03, + 2.047440548092295705e-03, + 2.010855645948924318e-03, + 1.974225815817752788e-03, + 1.937552360595998311e-03, + 1.900836583814144746e-03, + 1.864079789590423900e-03, + 1.827283282584888074e-03, + 1.790448367953500174e-03, + 1.753576351302636900e-03, + 1.716668538643245211e-03, + 1.679726236344770019e-03, + 1.642750751090128790e-03, + 1.605743389829516077e-03, + 1.568705459734606169e-03, + 1.531638268153382625e-03, + 1.494543122564397954e-03, + 1.457421330530673988e-03, + 1.420274199654805941e-03, + 1.383103037533093931e-03, + 1.345909151709942953e-03, + 1.308693849632633225e-03, + 1.271458438605769592e-03, + 1.234204225745722493e-03, + 1.196932517935541621e-03, + 1.159644621779514851e-03, + 1.122341843557540884e-03, + 1.085025489180590878e-03, + 1.047696864144956634e-03, + 1.010357273487016375e-03, + 9.730080217386040051e-04, + 9.356504128816294950e-04, + 8.982857503029848586e-04, + 8.609153367498366405e-04, + 8.235404742845856647e-04, + 7.861624642398756801e-04, + 7.487826071740569375e-04, + 7.114022028263114949e-04, + 6.740225500718343603e-04, + 6.366449468774720583e-04, + 5.992706902570754017e-04, + 5.619010762266812842e-04, + 5.245373997605741944e-04, + 4.871809547468279643e-04, + 4.498330339424663651e-04, + 4.124949289299474067e-04, + 3.751679300726488693e-04, + 3.378533264706862519e-04, + 3.005524059171712321e-04, + 2.632664548541371126e-04, + 2.259967583285409760e-04, + 1.887445999487515882e-04, + 1.515112618407108498e-04, + 1.142980246041755041e-04, + 7.710616726944776725e-05, + 3.993696725382956747e-05, + 2.791700317938687076e-06, +-3.432835947708023786e-05, +-7.142193981283992941e-05, +-1.084877701573526122e-04, +-1.455245818073255273e-04, +-1.825311079314393032e-04, +-2.195060836132626983e-04, +-2.564482458937150525e-04, +-2.933563338138312740e-04, +-3.302290884574314556e-04, +-3.670652529932863376e-04, +-4.038635727175385608e-04, +-4.406227950962912122e-04, +-4.773416698070177345e-04, +-5.140189487811164812e-04, +-5.506533862459150408e-04, +-5.872437387659844646e-04, +-6.237887652851423432e-04, +-6.602872271681299718e-04, +-6.967378882418101896e-04, +-7.331395148366647843e-04, +-7.694908758281665626e-04, +-8.057907426776331726e-04, +-8.420378894733750695e-04, +-8.782310929717124020e-04, +-9.143691326374758181e-04, +-9.504507906847409161e-04, +-9.864748521176999567e-04, +-1.022440104770359166e-03, +-1.058345339347336938e-03, +-1.094189349464083291e-03, +-1.129970931686433621e-03, +-1.165688885570777744e-03, +-1.201342013703910611e-03, +-1.236929121742405546e-03, +-1.272449018452201722e-03, +-1.307900515748111831e-03, +-1.343282428732765982e-03, +-1.378593575735820786e-03, +-1.413832778353032917e-03, +-1.448998861484787756e-03, +-1.484090653374855280e-03, +-1.519106985649195177e-03, +-1.554046693353863806e-03, +-1.588908614993314291e-03, +-1.623691592568998667e-03, +-1.658394471616608931e-03, +-1.693016101244206473e-03, +-1.727555334169925648e-03, +-1.762011026759215462e-03, +-1.796382039062291176e-03, +-1.830667234851415890e-03, +-1.864865481657696205e-03, +-1.898975650808049824e-03, +-1.932996617462059107e-03, +-1.966927260648223749e-03, +-2.000766463300492765e-03, +-2.034513112294727716e-03, +-2.068166098484336760e-03, +-2.101724316736266682e-03, +-2.135186665967208318e-03, +-2.168552049178547325e-03, +-2.201819373492050046e-03, +-2.234987550185233221e-03, +-2.268055494726151262e-03, +-2.301022126808427697e-03, +-2.333886370386117903e-03, +-2.366647153708011098e-03, +-2.399303409352086715e-03, +-2.431854074260057091e-03, +-2.464298089770759585e-03, +-2.496634401654481122e-03, +-2.528861960146735859e-03, +-2.560979719981296490e-03, +-2.592986640423843546e-03, +-2.624881685305131569e-03, +-2.656663823053748933e-03, +-2.688332026728997796e-03, +-2.719885274053602739e-03, +-2.751322547445894662e-03, +-2.782642834052133449e-03, +-2.813845125778674950e-03, +-2.844928419323599321e-03, +-2.875891716208407896e-03, +-2.906734022809816763e-03, +-2.937454350390457467e-03, +-2.968051715130382625e-03, +-2.998525138158034207e-03, +-3.028873645580577780e-03, +-3.059096268514592369e-03, +-3.089192043116541740e-03, +-3.119160010612622488e-03, +-3.148999217328782557e-03, +-3.178708714720588410e-03, +-3.208287559402498920e-03, +-3.237734813177313604e-03, +-3.267049543065380160e-03, +-3.296230821333318017e-03, +-3.325277725522801740e-03, +-3.354189338479314931e-03, +-3.382964748380078417e-03, +-3.411603048762216952e-03, +-3.440103338551093754e-03, +-3.468464722087412095e-03, +-3.496686309155019445e-03, +-3.524767215008211586e-03, +-3.552706560398617795e-03, +-3.580503471602136754e-03, +-3.608157080445719388e-03, +-3.635666524333564052e-03, +-3.663030946273410169e-03, +-3.690249494902831870e-03, +-3.717321324514494697e-03, +-3.744245595082114440e-03, +-3.771021472285898159e-03, +-3.797648127537381953e-03, +-3.824124738004386695e-03, +-3.850450486636161976e-03, +-3.876624562187337870e-03, +-3.902646159242463032e-03, +-3.928514478240129927e-03, +-3.954228725496631257e-03, +-3.979788113229631996e-03, +-4.005191859581700049e-03, +-4.030439188643260111e-03, +-4.055529330475606507e-03, +-4.080461521133898692e-03, +-4.105235002689133252e-03, +-4.129849023250808937e-03, +-4.154302836989020968e-03, +-4.178595704155966400e-03, +-4.202726891107741794e-03, +-4.226695670325770517e-03, +-4.250501320437746929e-03, +-4.274143126238696792e-03, +-4.297620378711653442e-03, +-4.320932375048024306e-03, +-4.344078418667846400e-03, +-4.367057819239882240e-03, +-4.389869892701200524e-03, +-4.412513961276767240e-03, +-4.434989353498958696e-03, +-4.457295404226265315e-03, +-4.479431454662189706e-03, +-4.501396852374239289e-03, +-4.523190951311749711e-03, +-4.544813111824354442e-03, +-4.566262700679619979e-03, +-4.587539091081086970e-03, +-4.608641662685280908e-03, +-4.629569801619067178e-03, +-4.650322900496665218e-03, +-4.670900358436223809e-03, +-4.691301581076315688e-03, +-4.711525980592279512e-03, +-4.731572975712047477e-03, +-4.751441991731960787e-03, +-4.771132460532455898e-03, +-4.790643820592951040e-03, +-4.809975517007172505e-03, +-4.829127001498005611e-03, +-4.848097732431760204e-03, +-4.866887174832646053e-03, +-4.885494800396903044e-03, +-4.903920087506456922e-03, +-4.922162521242615801e-03, +-4.940221593399417993e-03, +-4.958096802496630290e-03, +-4.975787653792668186e-03, +-4.993293659297261093e-03, +-5.010614337783663927e-03, +-5.027749214800854814e-03, +-5.044697822685554126e-03, +-5.061459700573622475e-03, +-5.078034394411443976e-03, +-5.094421456967394499e-03, +-5.110620447842356695e-03, +-5.126630933480539470e-03, +-5.142452487179944437e-03, +-5.158084689102357054e-03, +-5.173527126283364655e-03, +-5.188779392642089115e-03, +-5.203841088990434662e-03, +-5.218711823042343489e-03, +-5.233391209422821530e-03, +-5.247878869676429921e-03, +-5.262174432275815508e-03, +-5.276277532629995888e-03, +-5.290187813092073719e-03, +-5.303904922967010022e-03, +-5.317428518519276039e-03, +-5.330758262979719275e-03, +-5.343893826552669792e-03, +-5.356834886422721237e-03, +-5.369581126761001875e-03, +-5.382132238731496786e-03, +-5.394487920496994493e-03, +-5.406647877224744769e-03, +-5.418611821091919543e-03, +-5.430379471290961921e-03, +-5.441950554034281212e-03, +-5.453324802559210774e-03, +-5.464501957132409000e-03, +-5.475481765054007917e-03, +-5.486263980661622124e-03, +-5.496848365334134831e-03, +-5.507234687495087509e-03, +-5.517422722615908208e-03, +-5.527412253218988089e-03, +-5.537203068880280910e-03, +-5.546794966231876484e-03, +-5.556187748964224599e-03, +-5.565381227828090915e-03, +-5.574375220636283886e-03, +-5.583169552265267177e-03, +-5.591764054656234335e-03, +-5.600158566816201659e-03, +-5.608352934818810510e-03, +-5.616347011804708085e-03, +-5.624140657981880481e-03, +-5.631733740625694332e-03, +-5.639126134078593228e-03, +-5.646317719749614598e-03, +-5.653308386113765210e-03, +-5.660098028710944772e-03, +-5.666686550144724686e-03, +-5.673073860081010583e-03, +-5.679259875246167946e-03, +-5.685244519425159022e-03, +-5.691027723459396968e-03, +-5.696609425244184531e-03, +-5.701989569726047778e-03, +-5.707168108899937121e-03, +-5.712145001805884505e-03, +-5.716920214525669265e-03, +-5.721493720179172612e-03, +-5.725865498920420724e-03, +-5.730035537933482991e-03, +-5.734003831428073628e-03, +-5.737770380634884398e-03, +-5.741335193800762952e-03, +-5.744698286183617074e-03, +-5.747859680046954640e-03, +-5.750819404654401029e-03, +-5.753577496263847027e-03, +-5.756133998121295767e-03, +-5.758488960454629865e-03, +-5.760642440467061108e-03, +-5.762594502330276557e-03, +-5.764345217177457154e-03, +-5.765894663096021375e-03, +-5.767242925120047957e-03, +-5.768390095222626635e-03, +-5.769336272307825503e-03, +-5.770081562202492714e-03, +-5.770626077647791896e-03, +-5.770969938290536339e-03, +-5.771113270674273384e-03, +-5.771056208230092993e-03, +-5.770798891267278456e-03, +-5.770341466963654388e-03, +-5.769684089355788144e-03, +-5.768826919328847759e-03, +-5.767770124606282946e-03, +-5.766513879739304863e-03, +-5.765058366096107410e-03, +-5.763403771850841330e-03, +-5.761550291972360183e-03, +-5.759498128212799800e-03, +-5.757247489095821194e-03, +-5.754798589904737242e-03, +-5.752151652670304573e-03, +-5.749306906158418301e-03, +-5.746264585857417326e-03, +-5.743024933965339314e-03, +-5.739588199376801855e-03, +-5.735954637669731827e-03, +-5.732124511091887462e-03, +-5.728098088547114129e-03, +-5.723875645581376348e-03, +-5.719457464368605908e-03, +-5.714843833696320145e-03, +-5.710035048950971338e-03, +-5.705031412103126094e-03, +-5.699833231692421828e-03, +-5.694440822812321147e-03, +-5.688854507094511480e-03, +-5.683074612693328996e-03, +-5.677101474269804354e-03, +-5.670935432975417884e-03, +-5.664576836435869511e-03, +-5.658026038734486132e-03, +-5.651283400395358363e-03, +-5.644349288366428720e-03, +-5.637224076002280565e-03, +-5.629908143046623466e-03, +-5.622401875614797644e-03, +-5.614705666175856882e-03, +-5.606819913534460617e-03, +-5.598745022812777299e-03, +-5.590481405431858668e-03, +-5.582029479093036581e-03, +-5.573389667759065698e-03, +-5.564562401635037188e-03, +-5.555548117148957632e-03, +-5.546347256932469307e-03, +-5.536960269801018825e-03, +-5.527387610733961593e-03, +-5.517629740854538764e-03, +-5.507687127409508984e-03, +-5.497560243748650897e-03, +-5.487249569304123407e-03, +-5.476755589569555320e-03, +-5.466078796078850492e-03, +-5.455219686385071043e-03, +-5.444178764038858261e-03, +-5.432956538566696518e-03, +-5.421553525449183258e-03, +-5.409970246098881781e-03, +-5.398207227838059535e-03, +-5.386265003876284166e-03, +-5.374144113287762821e-03, +-5.361845100988515793e-03, +-5.349368517713386229e-03, +-5.336714919992844273e-03, +-5.323884870129526672e-03, +-5.310878936174783307e-03, +-5.297697691904897609e-03, +-5.284341716797013797e-03, +-5.270811596005200300e-03, +-5.257107920336114189e-03, +-5.243231286224355955e-03, +-5.229182295708024661e-03, +-5.214961556403790825e-03, +-5.200569681481813193e-03, +-5.186007289640676317e-03, +-5.171275005081935223e-03, +-5.156373457484576817e-03, +-5.141303281979350305e-03, +-5.126065119122860843e-03, +-5.110659614871465410e-03, +-5.095087420555121857e-03, +-5.079349192850967330e-03, +-5.063445593756649502e-03, +-5.047377290563756676e-03, +-5.031144955830874933e-03, +-5.014749267356379860e-03, +-4.998190908151411288e-03, +-4.981470566412372729e-03, +-4.964588935493342327e-03, +-4.947546713878460400e-03, +-4.930344605154042027e-03, +-4.912983317980409471e-03, +-4.895463566063884206e-03, +-4.877786068128373009e-03, +-4.859951547886717273e-03, +-4.841960734012339812e-03, +-4.823814360110226414e-03, +-4.805513164687893503e-03, +-4.787057891126509333e-03, +-4.768449287651493028e-03, +-4.749688107303068514e-03, +-4.730775107906834941e-03, +-4.711711052043954587e-03, +-4.692496707021306945e-03, +-4.673132844841568212e-03, +-4.653620242173053985e-03, +-4.633959680319325175e-03, +-4.614151945188955245e-03, +-4.594197827264898462e-03, +-4.574098121573604014e-03, +-4.553853627654556868e-03, +-4.533465149529050144e-03, +-4.512933495668993052e-03, +-4.492259478965969499e-03, +-4.471443916699681734e-03, +-4.450487630506389652e-03, +-4.429391446347472408e-03, +-4.408156194477506028e-03, +-4.386782709412401747e-03, +-4.365271829897467148e-03, +-4.343624398875207092e-03, +-4.321841263453010153e-03, +-4.299923274870868888e-03, +-4.277871288468871117e-03, +-4.255686163654327780e-03, +-4.233368763869363970e-03, +-4.210919956557983464e-03, +-4.188340613132744694e-03, +-4.165631608942124524e-03, +-4.142793823237044155e-03, +-4.119828139137546828e-03, +-4.096735443599462505e-03, +-4.073516627380817552e-03, +-4.050172585008088300e-03, +-4.026704214742578627e-03, +-4.003112418546494848e-03, +-3.979398102048788133e-03, +-3.955562174511448835e-03, +-3.931605548795043606e-03, +-3.907529141324321900e-03, +-3.883333872054159450e-03, +-3.859020664434970483e-03, +-3.834590445377801179e-03, +-3.810044145220108352e-03, +-3.785382697690729305e-03, +-3.760607039874977464e-03, +-3.735718112179840789e-03, +-3.710716858298840175e-03, +-3.685604225176778142e-03, +-3.660381162974708259e-03, +-3.635048625034529874e-03, +-3.609607567843351687e-03, +-3.584058950998464648e-03, +-3.558403737171414102e-03, +-3.532642892072276625e-03, +-3.506777384414233069e-03, +-3.480808185877566976e-03, +-3.454736271073653459e-03, +-3.428562617509220856e-03, +-3.402288205550159199e-03, +-3.375914018385334312e-03, +-3.349441041990512940e-03, +-3.322870265092074931e-03, +-3.296202679130518995e-03, +-3.269439278224235603e-03, +-3.242581059132984556e-03, +-3.215629021221136623e-03, +-3.188584166421351042e-03, +-3.161447499197880904e-03, +-3.134220026509443140e-03, +-3.106902757772898611e-03, +-3.079496704826179768e-03, +-3.052002881891233491e-03, +-3.024422305537325609e-03, +-2.996755994643815913e-03, +-2.969004970363028125e-03, +-2.941170256083290319e-03, +-2.913252877391622753e-03, +-2.885253862036404882e-03, +-2.857174239890283938e-03, +-2.829015042912739596e-03, +-2.800777305112483843e-03, +-2.772462062510372156e-03, +-2.744070353101861481e-03, +-2.715603216819092655e-03, +-2.687061695493841041e-03, +-2.658446832819667035e-03, +-2.629759674314175420e-03, +-2.601001267281559653e-03, +-2.572172660774762337e-03, +-2.543274905557640474e-03, +-2.514309054067365330e-03, +-2.485276160376539544e-03, +-2.456177280155086122e-03, +-2.427013470632891599e-03, +-2.397785790561519827e-03, +-2.368495300176185099e-03, +-2.339143061158176738e-03, +-2.309730136596644876e-03, +-2.280257590950501585e-03, +-2.250726490010642941e-03, +-2.221137900861748678e-03, +-2.191492891844142987e-03, +-2.161792532515914664e-03, +-2.132037893614715900e-03, +-2.102230047019522895e-03, +-2.072370065712753843e-03, +-2.042459023742025648e-03, +-2.012497996181746279e-03, +-1.982488059095505531e-03, +-1.952430289497423654e-03, +-1.922325765314248942e-03, +-1.892175565346879834e-03, +-1.861980769232540137e-03, +-1.831742457406565234e-03, +-1.801461711063749626e-03, +-1.771139612120748537e-03, +-1.740777243177608685e-03, +-1.710375687479514378e-03, +-1.679936028878809429e-03, +-1.649459351796739130e-03, +-1.618946741185152329e-03, +-1.588399282488579724e-03, +-1.557818061606006631e-03, +-1.527204164852439747e-03, +-1.496558678921360800e-03, +-1.465882690846186413e-03, +-1.435177287962096163e-03, +-1.404443557868347014e-03, +-1.373682588389944824e-03, +-1.342895467539549376e-03, +-1.312083283479644836e-03, +-1.281247124484429173e-03, +-1.250388078901738288e-03, +-1.219507235115286064e-03, +-1.188605681506627954e-03, +-1.157684506417155576e-03, +-1.126744798110420470e-03, +-1.095787644734223234e-03, +-1.064814134282495578e-03, +-1.033825354558100479e-03, +-1.002822393134637259e-03, +-9.718063373186457523e-04, +-9.407782741123305688e-04, +-9.097392901756490378e-04, +-8.786904717886333390e-04, +-8.476329048140350758e-04, +-8.165676746596979303e-04, +-7.854958662409396424e-04, +-7.544185639433437099e-04, +-7.233368515852502210e-04, +-6.922518123802773706e-04, +-6.611645289002518293e-04, +-6.300760830378660015e-04, +-5.989875559692127687e-04, +-5.679000281170404688e-04, +-5.368145791135660620e-04, +-5.057322877629800593e-04, +-4.746542320050438379e-04, +-4.435814888778529344e-04, +-4.125151344808724186e-04, +-3.814562439383414926e-04, +-3.504058913623886071e-04, +-3.193651498162206298e-04, +-2.883350912777005908e-04, +-2.573167866026539988e-04, +-2.263113054882466601e-04, +-1.953197164367568488e-04, +-1.643430867191181418e-04, +-1.333824823383446983e-04, +-1.024389679936998015e-04, +-7.151360704444580248e-05, +-4.060746147329469621e-05, +-9.721591850978506961e-06, + 2.114294270000422832e-05, + 5.198508454134074977e-05, + 8.280377755448202319e-05, + 1.135979671764772024e-04, + 1.443666004357311303e-04, + 1.751086259873432241e-04, + 2.058229941486652544e-04, + 2.365086569349976583e-04, + 2.671645680943107617e-04, + 2.977896831429220235e-04, + 3.283829594007117085e-04, + 3.589433560257759403e-04, + 3.894698340496509392e-04, + 4.199613564122667785e-04, + 4.504168879965114790e-04, + 4.808353956630409456e-04, + 5.112158482849898629e-04, + 5.415572167822562278e-04, + 5.718584741560284179e-04, + 6.021185955232084483e-04, + 6.323365581504117924e-04, + 6.625113414881567218e-04, + 6.926419272051804977e-04, + 7.227272992217690468e-04, + 7.527664437440139550e-04, + 7.827583492975939304e-04, + 8.127020067609840243e-04, + 8.425964093992186627e-04, + 8.724405528973475229e-04, + 9.022334353935168192e-04, + 9.319740575122574533e-04, + 9.616614223976476146e-04, + 9.912945357460789964e-04, + 1.020872405839189220e-03, + 1.050394043576713919e-03, + 1.079858462508892026e-03, + 1.109264678869032166e-03, + 1.138611711606159508e-03, + 1.167898582416887618e-03, + 1.197124315777641380e-03, + 1.226287938977123869e-03, + 1.255388482147646321e-03, + 1.284424978297214444e-03, + 1.313396463341261720e-03, + 1.342301976133983494e-03, + 1.371140558499856681e-03, + 1.399911255265045423e-03, + 1.428613114288360044e-03, + 1.457245186492357606e-03, + 1.485806525894543947e-03, + 1.514296189637582809e-03, + 1.542713238020385329e-03, + 1.571056734528679779e-03, + 1.599325745865064338e-03, + 1.627519341979322695e-03, + 1.655636596098959516e-03, + 1.683676584758636531e-03, + 1.711638387830293406e-03, + 1.739521088552928828e-03, + 1.767323773561953974e-03, + 1.795045532918754802e-03, + 1.822685460140049864e-03, + 1.850242652226873844e-03, + 1.877716209693638732e-03, + 1.905105236597268506e-03, + 1.932408840565385134e-03, + 1.959626132825301008e-03, + 1.986756228232504189e-03, + 2.013798245298583332e-03, + 2.040751306219602563e-03, + 2.067614536904160191e-03, + 2.094387067001018086e-03, + 2.121068029926911468e-03, + 2.147656562894180009e-03, + 2.174151806937958762e-03, + 2.200552906943514797e-03, + 2.226859011673432923e-03, + 2.253069273794340837e-03, + 2.279182849903754401e-03, + 2.305198900556928998e-03, + 2.331116590292945431e-03, + 2.356935087661107646e-03, + 2.382653565247446273e-03, + 2.408271199700206047e-03, + 2.433787171755937354e-03, + 2.459200666265206562e-03, + 2.484510872217927761e-03, + 2.509716982768781229e-03, + 2.534818195262510468e-03, + 2.559813711258733526e-03, + 2.584702736556887884e-03, + 2.609484481221010978e-03, + 2.634158159604097892e-03, + 2.658722990372467711e-03, + 2.683178196530202741e-03, + 2.707523005442828787e-03, + 2.731756648861188418e-03, + 2.755878362945540609e-03, + 2.779887388288521111e-03, + 2.803782969938773285e-03, + 2.827564357424144394e-03, + 2.851230804774506321e-03, + 2.874781570544672135e-03, + 2.898215917837115331e-03, + 2.921533114324276637e-03, + 2.944732432270912893e-03, + 2.967813148556457201e-03, + 2.990774544696485262e-03, + 3.013615906864853481e-03, + 3.036336525915313191e-03, + 3.058935697402620935e-03, + 3.081412721603982684e-03, + 3.103766903540138098e-03, + 3.125997552996097415e-03, + 3.148103984541865321e-03, + 3.170085517553074619e-03, + 3.191941476231148055e-03, + 3.213671189623497435e-03, + 3.235273991643583535e-03, + 3.256749221090551871e-03, + 3.278096221668838108e-03, + 3.299314342007806430e-03, + 3.320402935680577799e-03, + 3.341361361223338291e-03, + 3.362188982154282711e-03, + 3.382885166991949754e-03, + 3.403449289273917117e-03, + 3.423880727575133193e-03, + 3.444178865525837196e-03, + 3.464343091829586406e-03, + 3.484372800281016272e-03, + 3.504267389783244022e-03, + 3.524026264365286154e-03, + 3.543648833199253018e-03, + 3.563134510617204688e-03, + 3.582482716127922268e-03, + 3.601692874433685704e-03, + 3.620764415446356844e-03, + 3.639696774303642895e-03, + 3.658489391385378979e-03, + 3.677141712328920765e-03, + 3.695653188044961245e-03, + 3.714023274732975843e-03, + 3.732251433896327086e-03, + 3.750337132357291214e-03, + 3.768279842272032314e-03, + 3.786079041145031313e-03, + 3.803734211843578725e-03, + 3.821244842612192810e-03, + 3.838610427086299598e-03, + 3.855830464306348338e-03, + 3.872904458731434279e-03, + 3.889831920252616142e-03, + 3.906612364206113464e-03, + 3.923245311386667870e-03, + 3.939730288060007066e-03, + 3.956066825975685687e-03, + 3.972254462379548427e-03, + 3.988292740025841873e-03, + 4.004181207189359305e-03, + 4.019919417677315747e-03, + 4.035506930840823160e-03, + 4.050943311586462786e-03, + 4.066228130387594675e-03, + 4.081360963295126848e-03, + 4.096341391948555080e-03, + 4.111169003586640988e-03, + 4.125843391057633890e-03, + 4.140364152829604551e-03, + 4.154730893000543879e-03, + 4.168943221308011454e-03, + 4.183000753138837839e-03, + 4.196903109538612647e-03, + 4.210649917220717249e-03, + 4.224240808575441611e-03, + 4.237675421678794088e-03, + 4.250953400301008510e-03, + 4.264074393914951515e-03, + 4.277038057704423205e-03, + 4.289844052571995490e-03, + 4.302492045146744624e-03, + 4.314981707792066995e-03, + 4.327312718612767208e-03, + 4.339484761462323106e-03, + 4.351497525949929619e-03, + 4.363350707447043869e-03, + 4.375044007094105493e-03, + 4.386577131806783381e-03, + 4.397949794282120933e-03, + 4.409161713004424582e-03, + 4.420212612251062968e-03, + 4.431102222097900098e-03, + 4.441830278424586248e-03, + 4.452396522919782954e-03, + 4.462800703085907476e-03, + 4.473042572243796609e-03, + 4.483121889537429461e-03, + 4.493038419937902574e-03, + 4.502791934247656579e-03, + 4.512382209104331618e-03, + 4.521809026984370365e-03, + 4.531072176206488340e-03, + 4.540171450934924781e-03, + 4.549106651182468868e-03, + 4.557877582813230077e-03, + 4.566484057545462313e-03, + 4.574925892953676798e-03, + 4.583202912471058543e-03, + 4.591314945391482098e-03, + 4.599261826871218518e-03, + 4.607043397930500953e-03, + 4.614659505455063343e-03, + 4.622110002197181260e-03, + 4.629394746776697989e-03, + 4.636513603681825975e-03, + 4.643466443269638616e-03, + 4.650253141766504811e-03, + 4.656873581268203451e-03, + 4.663327649739880919e-03, + 4.669615241015780474e-03, + 4.675736254798893571e-03, + 4.681690596660054333e-03, + 4.687478178037338475e-03, + 4.693098916234863735e-03, + 4.698552734421495777e-03, + 4.703839561629405766e-03, + 4.708959332752409369e-03, + 4.713911988544038610e-03, + 4.718697475615455869e-03, + 4.723315746433216084e-03, + 4.727766759316703697e-03, + 4.732050478435455114e-03, + 4.736166873806320690e-03, + 4.740115921290258966e-03, + 4.743897602589097068e-03, + 4.747511905242071673e-03, + 4.750958822622026491e-03, + 4.754238353931534294e-03, + 4.757350504198843734e-03, + 4.760295284273534724e-03, + 4.763072710821988215e-03, + 4.765682806322732792e-03, + 4.768125599061496384e-03, + 4.770401123126112239e-03, + 4.772509418401224557e-03, + 4.774450530562803288e-03, + 4.776224511072367507e-03, + 4.777831417171191433e-03, + 4.779271311874143564e-03, + 4.780544263963396566e-03, + 4.781650347981974969e-03, + 4.782589644227001890e-03, + 4.783362238742911929e-03, + 4.783968223314291092e-03, + 4.784407695458635194e-03, + 4.784680758418889679e-03, + 4.784787521155786476e-03, + 4.784728098339967491e-03, + 4.784502610343958039e-03, + 4.784111183233913898e-03, + 4.783553948761199229e-03, + 4.782831044353722492e-03, + 4.781942613107168297e-03, + 4.780888803775931728e-03, + 4.779669770763955543e-03, + 4.778285674115347915e-03, + 4.776736679504747785e-03, + 4.775022958227586982e-03, + 4.773144687190138125e-03, + 4.771102048899315308e-03, + 4.768895231452421890e-03, + 4.766524428526530514e-03, + 4.763989839367813693e-03, + 4.761291668780665357e-03, + 4.758430127116572601e-03, + 4.755405430262867744e-03, + 4.752217799631248789e-03, + 4.748867462146190606e-03, + 4.745354650233048199e-03, + 4.741679601806093186e-03, + 4.737842560256323027e-03, + 4.733843774439056018e-03, + 4.729683498661394446e-03, + 4.725361992669504727e-03, + 4.720879521635661623e-03, + 4.716236356145177104e-03, + 4.711432772183105425e-03, + 4.706469051120798150e-03, + 4.701345479702258821e-03, + 4.696062350030363181e-03, + 4.690619959552788827e-03, + 4.685018611047945744e-03, + 4.679258612610599777e-03, + 4.673340277637261925e-03, + 4.667263924811666104e-03, + 4.661029878089801952e-03, + 4.654638466684837481e-03, + 4.648090025051992286e-03, + 4.641384892873112386e-03, + 4.634523415041101081e-03, + 4.627505941644230111e-03, + 4.620332827950229641e-03, + 4.613004434390162271e-03, + 4.605521126542302252e-03, + 4.597883275115636527e-03, + 4.590091255933311139e-03, + 4.582145449915960532e-03, + 4.574046243064703796e-03, + 4.565794026444139168e-03, + 4.557389196165105225e-03, + 4.548832153367305883e-03, + 4.540123304201661332e-03, + 4.531263059812683236e-03, + 4.522251836320559382e-03, + 4.513090054803079593e-03, + 4.503778141277483583e-03, + 4.494316526682071156e-03, + 4.484705646857625912e-03, + 4.474945942528844173e-03, + 4.465037859285438636e-03, + 4.454981847563084171e-03, + 4.444778362624400916e-03, + 4.434427864539561802e-03, + 4.423930818166788188e-03, + 4.413287693132868922e-03, + 4.402498963813366271e-03, + 4.391565109312529566e-03, + 4.380486613443475979e-03, + 4.369263964707845692e-03, + 4.357897656275384196e-03, + 4.346388185963572307e-03, + 4.334736056216855447e-03, + 4.322941774085857329e-03, + 4.311005851206450509e-03, + 4.298928803778674299e-03, + 4.286711152545371641e-03, + 4.274353422770974312e-03, + 4.261856144219899542e-03, + 4.249219851134773164e-03, + 4.236445082214794142e-03, + 4.223532380593727868e-03, + 4.210482293817702573e-03, + 4.197295373823123690e-03, + 4.183972176914277710e-03, + 4.170513263740736540e-03, + 4.156919199274843393e-03, + 4.143190552788877760e-03, + 4.129327897832121494e-03, + 4.115331812207879796e-03, + 4.101202877950318321e-03, + 4.086941681300994104e-03, + 4.072548812685718687e-03, + 4.058024866690759444e-03, + 4.043370442039175353e-03, + 4.028586141567082508e-03, + 4.013672572199714940e-03, + 3.998630344927217410e-03, + 3.983460074780616894e-03, + 3.968162380807431500e-03, + 3.952737886047156222e-03, + 3.937187217506841509e-03, + 3.921511006136331814e-03, + 3.905709886803421325e-03, + 3.889784498269030499e-03, + 3.873735483162124571e-03, + 3.857563487954449033e-03, + 3.841269162935409976e-03, + 3.824853162186731513e-03, + 3.808316143556624445e-03, + 3.791658768634564251e-03, + 3.774881702725334850e-03, + 3.757985614823200309e-03, + 3.740971177586059192e-03, + 3.723839067309297080e-03, + 3.706589963899609153e-03, + 3.689224550848805868e-03, + 3.671743515207359729e-03, + 3.654147547557918662e-03, + 3.636437341988761271e-03, + 3.618613596067114194e-03, + 3.600677010812189296e-03, + 3.582628290668520964e-03, + 3.564468143478903995e-03, + 3.546197280457082969e-03, + 3.527816416160854066e-03, + 3.509326268464615234e-03, + 3.490727558531959724e-03, + 3.472021010788268764e-03, + 3.453207352893112106e-03, + 3.434287315712483343e-03, + 3.415261633291183548e-03, + 3.396131042824906097e-03, + 3.376896284632138930e-03, + 3.357558102126441055e-03, + 3.338117241788100212e-03, + 3.318574453135853409e-03, + 3.298930488698833836e-03, + 3.279186103988065894e-03, + 3.259342057467902540e-03, + 3.239399110527660820e-03, + 3.219358027452897016e-03, + 3.199219575396654910e-03, + 3.178984524350792536e-03, + 3.158653647117045261e-03, + 3.138227719278043320e-03, + 3.117707519168386610e-03, + 3.097093827845529956e-03, + 3.076387429060422479e-03, + 3.055589109228624457e-03, + 3.034699657400736789e-03, + 3.013719865232946261e-03, + 2.992650526957824943e-03, + 2.971492439354675094e-03, + 2.950246401719819854e-03, + 2.928913215837176693e-03, + 2.907493685948391113e-03, + 2.885988618722985528e-03, + 2.864398823228692017e-03, + 2.842725110901413860e-03, + 2.820968295515210045e-03, + 2.799129193152381703e-03, + 2.777208622173344722e-03, + 2.755207403186302022e-03, + 2.733126359017294411e-03, + 2.710966314679887166e-03, + 2.688728097344569943e-03, + 2.666412536308747794e-03, + 2.644020462966144118e-03, + 2.621552710776254777e-03, + 2.599010115233981767e-03, + 2.576393513838965907e-03, + 2.553703746064897410e-03, + 2.530941653328996465e-03, + 2.508108078961208878e-03, + 2.485203868173368330e-03, + 2.462229868028545116e-03, + 2.439186927410158957e-03, + 2.416075896990872805e-03, + 2.392897629201985385e-03, + 2.369652978202388318e-03, + 2.346342799847234845e-03, + 2.322967951657346677e-03, + 2.299529292787887494e-03, + 2.276027683997213814e-03, + 2.252463987615875487e-03, + 2.228839067515365081e-03, + 2.205153789076810898e-03, + 2.181409019159898099e-03, + 2.157605626071547843e-03, + 2.133744479534392148e-03, + 2.109826450655884981e-03, + 2.085852411896614491e-03, + 2.061823237038882400e-03, + 2.037739801155580462e-03, + 2.013602980578607649e-03, + 1.989413652867336787e-03, + 1.965172696777325780e-03, + 1.940880992228753666e-03, + 1.916539420274824797e-03, + 1.892148863070418265e-03, + 1.867710203840475388e-03, + 1.843224326848352281e-03, + 1.818692117364423310e-03, + 1.794114461634471833e-03, + 1.769492246847830050e-03, + 1.744826361106280831e-03, + 1.720117693392081773e-03, + 1.695367133536294360e-03, + 1.670575572187476751e-03, + 1.645743900779866138e-03, + 1.620873011501667562e-03, + 1.595963797263604900e-03, + 1.571017151667191249e-03, + 1.546033968972988044e-03, + 1.521015144069164928e-03, + 1.495961572439740870e-03, + 1.470874150132881874e-03, + 1.445753773729432012e-03, + 1.420601340311212438e-03, + 1.395417747429216100e-03, + 1.370203893072276463e-03, + 1.344960675635436999e-03, + 1.319688993887953559e-03, + 1.294389746942198587e-03, + 1.269063834221833068e-03, + 1.243712155430169502e-03, + 1.218335610518807895e-03, + 1.192935099655980085e-03, + 1.167511523194946117e-03, + 1.142065781642656467e-03, + 1.116598775628199151e-03, + 1.091111405871064265e-03, + 1.065604573150193265e-03, + 1.040079178272161099e-03, + 1.014536122039705508e-03, + 9.889763052206375273e-04, + 9.634006285164089470e-04, + 9.378099925303987495e-04, + 9.122052977370962877e-04, + 8.865874444505453646e-04, + 8.609573327930381123e-04, + 8.353158626640458774e-04, + 8.096639337089449762e-04, + 7.840024452877271616e-04, + 7.583322964440632153e-04, + 7.326543858741269314e-04, + 7.069696118952726238e-04, + 6.812788724154956446e-04, + 6.555830649020618619e-04, + 6.298830863504853829e-04, + 6.041798332539347538e-04, + 5.784742015721440044e-04, + 5.527670867004985753e-04, + 5.270593834394299163e-04, + 5.013519859635497686e-04, + 4.756457877908557876e-04, + 4.499416817522415004e-04, + 4.242405599607809675e-04, + 3.985433137810593589e-04, + 3.728508337988328575e-04, + 3.471640097904833233e-04, + 3.214837306923774927e-04, + 2.958108845708255254e-04, + 2.701463585916985153e-04, + 2.444910389897813480e-04, + 2.188458110390504360e-04, + 1.932115590222649383e-04, + 1.675891662007986452e-04, + 1.419795147847756291e-04, + 1.163834859029883235e-04, + 9.080195957287256353e-05, + 6.523581467082280761e-05, + 3.968592890228980112e-05, + 1.415317877194101341e-05, +-1.136156044583797919e-05, +-3.685741473662481363e-05, +-6.233351137572971283e-05, +-8.778897895734495064e-05, +-1.132229474240262706e-04, +-1.386345480964154499e-04, +-1.640229137020295059e-04, +-1.893871784047209631e-04, +-2.147264778338800115e-04, +-2.400399491133198347e-04, +-2.653267308903651308e-04, +-2.905859633648651455e-04, +-3.158167883178597340e-04, +-3.410183491404079979e-04, +-3.661897908625303039e-04, +-3.913302601813334097e-04, +-4.164389054899176245e-04, +-4.415148769058907844e-04, +-4.665573262994130929e-04, +-4.915654073217061090e-04, +-5.165382754333231559e-04, +-5.414750879321004323e-04, +-5.663750039812890779e-04, +-5.912371846376073860e-04, +-6.160607928789350136e-04, +-6.408449936321838078e-04, +-6.655889538010888347e-04, +-6.902918422936414047e-04, +-7.149528300496597920e-04, +-7.395710900684641454e-04, +-7.641457974357330433e-04, +-7.886761293511002340e-04, +-8.131612651553743985e-04, +-8.376003863572644087e-04, +-8.619926766605366403e-04, +-8.863373219909643358e-04, +-9.106335105228922921e-04, +-9.348804327060132938e-04, +-9.590772812920184522e-04, +-9.832232513608961562e-04, +-1.007317540347393760e-03, +-1.031359348067371288e-03, +-1.055347876743798321e-03, +-1.079282331032872973e-03, +-1.103161918050193230e-03, +-1.126985847396292945e-03, +-1.150753331182444985e-03, +-1.174463584056664733e-03, +-1.198115823228773158e-03, +-1.221709268496098044e-03, +-1.245243142268706409e-03, +-1.268716669594726698e-03, +-1.292129078185285437e-03, +-1.315479598439576363e-03, +-1.338767463469831996e-03, +-1.361991909125918757e-03, +-1.385152174020064155e-03, +-1.408247499551500484e-03, +-1.431277129930693922e-03, +-1.454240312203730623e-03, +-1.477136296276721460e-03, +-1.499964334939427003e-03, +-1.522723683889551892e-03, +-1.545413601756638697e-03, +-1.568033350125479317e-03, +-1.590582193559895432e-03, +-1.613059399626286944e-03, +-1.635464238916811133e-03, +-1.657795985072696692e-03, +-1.680053914807436762e-03, +-1.702237307929605750e-03, +-1.724345447365808852e-03, +-1.746377619183488899e-03, +-1.768333112613376928e-03, +-1.790211220072026894e-03, +-1.812011237184359483e-03, +-1.833732462805593788e-03, +-1.855374199043387804e-03, +-1.876935751280139810e-03, +-1.898416428194394214e-03, +-1.919815541782765632e-03, +-1.941132407381545959e-03, +-1.962366343688017826e-03, +-1.983516672781830519e-03, +-2.004582720146246000e-03, +-2.025563814689034306e-03, +-2.046459288763445052e-03, +-2.067268478189149012e-03, +-2.087990722272514005e-03, +-2.108625363827364759e-03, +-2.129171749195417525e-03, +-2.149629228266253678e-03, +-2.169997154497448153e-03, +-2.190274884934827540e-03, +-2.210461780231850852e-03, +-2.230557204669511573e-03, +-2.250560526175888424e-03, +-2.270471116345387352e-03, +-2.290288350458061575e-03, +-2.310011607498777247e-03, +-2.329640270176030863e-03, +-2.349173724940810479e-03, +-2.368611362005447821e-03, +-2.387952575361773893e-03, +-2.407196762799759023e-03, +-2.426343325925832840e-03, +-2.445391670180653045e-03, +-2.464341204857272739e-03, +-2.483191343118929147e-03, +-2.501941502016568220e-03, +-2.520591102506413057e-03, +-2.539139569467366644e-03, +-2.557586331718083271e-03, +-2.575930822034069867e-03, +-2.594172477164655502e-03, +-2.612310737849619143e-03, +-2.630345048835790091e-03, +-2.648274858893711736e-03, +-2.666099620833527282e-03, +-2.683818791521430137e-03, +-2.701431831895659361e-03, +-2.718938206982106972e-03, +-2.736337385910116073e-03, +-2.753628841928082958e-03, +-2.770812052418673236e-03, +-2.787886498914084795e-03, +-2.804851667111195410e-03, +-2.821707046886314831e-03, +-2.838452132309977633e-03, +-2.855086421661626791e-03, +-2.871609417443870063e-03, +-2.888020626396830062e-03, +-2.904319559512375058e-03, +-2.920505732047843240e-03, +-2.936578663539903596e-03, +-2.952537877818393365e-03, +-2.968382903019509307e-03, +-2.984113271599235766e-03, +-2.999728520346587983e-03, +-3.015228190396442107e-03, +-3.030611827242448916e-03, +-3.045878980749762779e-03, +-3.061029205167420213e-03, +-3.076062059140731875e-03, +-3.090977105723610816e-03, +-3.105773912390295301e-03, +-3.120452051047446773e-03, +-3.135011098045851000e-03, +-3.149450634191777038e-03, +-3.163770244758400824e-03, +-3.177969519497181924e-03, +-3.192048052648650044e-03, +-3.206005442953415753e-03, +-3.219841293662882402e-03, +-3.233555212549738163e-03, +-3.247146811918333580e-03, +-3.260615708614970649e-03, +-3.273961524037847983e-03, +-3.287183884146954813e-03, +-3.300282419473945898e-03, +-3.313256765131388035e-03, +-3.326106560822374766e-03, +-3.338831450849741658e-03, +-3.351431084124936385e-03, +-3.363905114177034080e-03, +-3.376253199161451720e-03, +-3.388475001868394929e-03, +-3.400570189731295673e-03, +-3.412538434835073447e-03, +-3.424379413924034769e-03, +-3.436092808409844674e-03, +-3.447678304379220206e-03, +-3.459135592601427899e-03, +-3.470464368535605606e-03, +-3.481664332338145051e-03, +-3.492735188869478067e-03, +-3.503676647700983398e-03, +-3.514488423121893499e-03, +-3.525170234145498342e-03, +-3.535721804515668410e-03, +-3.546142862713040720e-03, +-3.556433141960935532e-03, +-3.566592380231240096e-03, +-3.576620320250127605e-03, +-3.586516709503422690e-03, +-3.596281300242057128e-03, +-3.605913849487172532e-03, +-3.615414119035089031e-03, +-3.624781875462130404e-03, +-3.634016890129343393e-03, +-3.643118939186847528e-03, +-3.652087803578167157e-03, +-3.660923269044518390e-03, +-3.669625126128547854e-03, +-3.678193170178239296e-03, +-3.686627201350598133e-03, +-3.694927024614957402e-03, +-3.703092449756340086e-03, +-3.711123291378629757e-03, +-3.719019368907363048e-03, +-3.726780506592602352e-03, +-3.734406533511572604e-03, +-3.741897283570940706e-03, +-3.749252595509212048e-03, +-3.756472312898792663e-03, +-3.763556284147850147e-03, +-3.770504362502080480e-03, +-3.777316406046367283e-03, +-3.783992277706055545e-03, +-3.790531845248291259e-03, +-3.796934981283062692e-03, +-3.803201563264069045e-03, +-3.809331473489480698e-03, +-3.815324599102492154e-03, +-3.821180832091690231e-03, +-3.826900069291290420e-03, +-3.832482212381238800e-03, +-3.837927167886933180e-03, +-3.843234847179125956e-03, +-3.848405166473366397e-03, +-3.853438046829377878e-03, +-3.858333414150259474e-03, +-3.863091199181578703e-03, +-3.867711337510172393e-03, +-3.872193769562859086e-03, +-3.876538440605043021e-03, +-3.880745300738961193e-03, +-3.884814304901970314e-03, +-3.888745412864550582e-03, +-3.892538589228145950e-03, +-3.896193803422893370e-03, +-3.899711029705122192e-03, +-3.903090247154752078e-03, +-3.906331439672412927e-03, +-3.909434595976584749e-03, +-3.912399709600357205e-03, +-3.915226778888166587e-03, +-3.917915806992373212e-03, +-3.920466801869527430e-03, +-3.922879776276664253e-03, +-3.925154747767281398e-03, +-3.927291738687243607e-03, +-3.929290776170455378e-03, +-3.931151892134469514e-03, +-3.932875123275766070e-03, +-3.934460511065054726e-03, +-3.935908101742302198e-03, +-3.937217946311609602e-03, +-3.938390100535934558e-03, +-3.939424624931701403e-03, +-3.940321584763133850e-03, +-3.941081050036555553e-03, +-3.941703095494455619e-03, +-3.942187800609389323e-03, +-3.942535249577733963e-03, +-3.942745531313335446e-03, +-3.942818739440887704e-03, +-3.942754972289228867e-03, +-3.942554332884494299e-03, +-3.942216928943031128e-03, +-3.941742872864203474e-03, +-3.941132281723077127e-03, +-3.940385277262857880e-03, +-3.939501985887263955e-03, +-3.938482538652625202e-03, +-3.937327071259984906e-03, +-3.936035724046917962e-03, +-3.934608641979189456e-03, +-3.933045974642384625e-03, +-3.931347876233246517e-03, +-3.929514505550905229e-03, +-3.927546025988009996e-03, +-3.925442605521611492e-03, +-3.923204416703933092e-03, +-3.920831636653061489e-03, +-3.918324447043317234e-03, +-3.915683034095645242e-03, +-3.912907588567761559e-03, +-3.909998305744150082e-03, +-3.906955385425940445e-03, +-3.903779031920649300e-03, +-3.900469454031675262e-03, +-3.897026865047791694e-03, +-3.893451482732350217e-03, +-3.889743529312430018e-03, +-3.885903231467805006e-03, +-3.881930820319770895e-03, +-3.877826531419789266e-03, +-3.873590604738051408e-03, +-3.869223284651833548e-03, +-3.864724819933798745e-03, +-3.860095463739974392e-03, +-3.855335473597807771e-03, +-3.850445111393919345e-03, +-3.845424643361781015e-03, +-3.840274340069216134e-03, +-3.834994476405804119e-03, +-3.829585331570091195e-03, +-3.824047189056697070e-03, +-3.818380336643277615e-03, +-3.812585066377283723e-03, +-3.806661674562735343e-03, +-3.800610461746657676e-03, +-3.794431732705532551e-03, +-3.788125796431556381e-03, +-3.781692966118731149e-03, +-3.775133559148876466e-03, +-3.768447897077481165e-03, +-3.761636305619407011e-03, +-3.754699114634452769e-03, +-3.747636658112845406e-03, +-3.740449274160518797e-03, +-3.733137304984277937e-03, +-3.725701096876886820e-03, +-3.718141000201972447e-03, +-3.710457369378748413e-03, +-3.702650562866803552e-03, +-3.694720943150495932e-03, +-3.686668876723368099e-03, +-3.678494734072485558e-03, +-3.670198889662527626e-03, +-3.661781721919766825e-03, +-3.653243613216015755e-03, +-3.644584949852377066e-03, +-3.635806122042791778e-03, +-3.626907523897678672e-03, +-3.617889553407238439e-03, +-3.608752612424709263e-03, +-3.599497106649548681e-03, +-3.590123445610456706e-03, +-3.580632042648162171e-03, +-3.571023314898366923e-03, +-3.561297683274315326e-03, +-3.551455572449258805e-03, +-3.541497410839016240e-03, +-3.531423630584204758e-03, +-3.521234667532369914e-03, +-3.510930961220162707e-03, +-3.500512954855232971e-03, +-3.489981095298013043e-03, +-3.479335833043572124e-03, +-3.468577622203109813e-03, +-3.457706920485475663e-03, +-3.446724189178615450e-03, +-3.435629893130785414e-03, +-3.424424500731675439e-03, +-3.413108483893568211e-03, +-3.401682318032267678e-03, +-3.390146482047778562e-03, +-3.378501458305260829e-03, +-3.366747732615492372e-03, +-3.354885794215431861e-03, +-3.342916135748656269e-03, +-3.330839253245621457e-03, +-3.318655646103869407e-03, +-3.306365817068164341e-03, +-3.293970272210492659e-03, +-3.281469520909809610e-03, +-3.268864075832096476e-03, +-3.256154452909865681e-03, +-3.243341171321727050e-03, +-3.230424753472059020e-03, +-3.217405724970275223e-03, +-3.204284614610130970e-03, +-3.191061954349007183e-03, +-3.177738279286955372e-03, +-3.164314127645715714e-03, +-3.150790040747690913e-03, +-3.137166562994750038e-03, +-3.123444241846907912e-03, +-3.109623627801088620e-03, +-3.095705274369599767e-03, +-3.081689738058659631e-03, +-3.067577578346661511e-03, +-3.053369357662615892e-03, +-3.039065641364304196e-03, +-3.024666997716279893e-03, +-3.010173997868069093e-03, +-2.995587215832107037e-03, +-2.980907228461414805e-03, +-2.966134615427604322e-03, +-2.951269959198489588e-03, +-2.936313845015648023e-03, +-2.921266860872063793e-03, +-2.906129597489543002e-03, +-2.890902648296036527e-03, +-2.875586609403050879e-03, +-2.860182079582837024e-03, +-2.844689660245392285e-03, +-2.829109955415830442e-03, +-2.813443571711165062e-03, +-2.797691118317198206e-03, +-2.781853206965567444e-03, +-2.765930451910405142e-03, +-2.749923469905029855e-03, +-2.733832880178655930e-03, +-2.717659304412960858e-03, +-2.701403366718493470e-03, +-2.685065693611249100e-03, +-2.668646913988958948e-03, +-2.652147659107355164e-03, +-2.635568562556528296e-03, +-2.618910260237033646e-03, +-2.602173390335892674e-03, +-2.585358593302913149e-03, +-2.568466511826471982e-03, +-2.551497790809392156e-03, +-2.534453077345014821e-03, +-2.517333020692906660e-03, +-2.500138272254545137e-03, +-2.482869485549130378e-03, +-2.465527316189183686e-03, +-2.448112421856053246e-03, +-2.430625462275586793e-03, +-2.413067099193515457e-03, +-2.395437996350861017e-03, +-2.377738819459388267e-03, +-2.359970236176915561e-03, +-2.342132916082428039e-03, +-2.324227530651535624e-03, +-2.306254753231608366e-03, +-2.288215259016646800e-03, +-2.270109725022718267e-03, +-2.251938830062802550e-03, +-2.233703254721757653e-03, +-2.215403681331401357e-03, +-2.197040793945345162e-03, +-2.178615278313802191e-03, +-2.160127821858526947e-03, +-2.141579113647586359e-03, +-2.122969844369911388e-03, +-2.104300706310353007e-03, +-2.085572393324111509e-03, +-2.066785600811316733e-03, +-2.047941025691830778e-03, +-2.029039366379810014e-03, +-2.010081322757941834e-03, +-1.991067596152308085e-03, +-1.971998889306684696e-03, +-1.952875906356931314e-03, +-1.933699352805522955e-03, +-1.914469935495878268e-03, +-1.895188362586646812e-03, +-1.875855343526154195e-03, +-1.856471589026665713e-03, +-1.837037811038482382e-03, +-1.817554722724549782e-03, +-1.798023038434415962e-03, +-1.778443473678384488e-03, +-1.758816745101955681e-03, +-1.739143570459826147e-03, +-1.719424668589985454e-03, +-1.699660759387984109e-03, +-1.679852563780959759e-03, +-1.660000803701673373e-03, +-1.640106202062704792e-03, +-1.620169482730468092e-03, +-1.600191370499156251e-03, +-1.580172591064934106e-03, +-1.560113870999902536e-03, +-1.540015937725948587e-03, +-1.519879519489000450e-03, +-1.499705345332960410e-03, +-1.479494145073417723e-03, +-1.459246649271984464e-03, +-1.438963589210077998e-03, +-1.418645696862837679e-03, +-1.398293704873217408e-03, +-1.377908346525861779e-03, +-1.357490355720993502e-03, +-1.337040466948488182e-03, +-1.316559415261761524e-03, +-1.296047936251628783e-03, +-1.275506766020409032e-03, +-1.254936641155806731e-03, +-1.234338298704700052e-03, +-1.213712476147361160e-03, +-1.193059911371356424e-03, +-1.172381342645225462e-03, +-1.151677508592832168e-03, +-1.130949148167145670e-03, +-1.110197000624171988e-03, +-1.089421805497093210e-03, +-1.068624302570199370e-03, +-1.047805231852810999e-03, +-1.026965333553471645e-03, +-1.006105348053915310e-03, +-9.852260158829241696e-04, +-9.643280776907884547e-04, +-9.434122742230831781e-04, +-9.224793462947113599e-04, +-9.015300347642920273e-04, +-8.805650805081132338e-04, +-8.595852243942221204e-04, +-8.385912072567520926e-04, +-8.175837698700231821e-04, +-7.965636529226811143e-04, +-7.755315969920811891e-04, +-7.544883425184541279e-04, +-7.334346297791220120e-04, +-7.123711988629378902e-04, +-6.912987896445758765e-04, +-6.702181417586752050e-04, +-6.491299945746222292e-04, +-6.280350871706721428e-04, +-6.069341583083195241e-04, +-5.858279464070612541e-04, +-5.647171895187093815e-04, +-5.436026253018773520e-04, +-5.224849909966959799e-04, +-5.013650233993343719e-04, +-4.802434588365601530e-04, +-4.591210331405535584e-04, +-4.379984816235427407e-04, +-4.168765390524637425e-04, +-3.957559396238955851e-04, +-3.746374169388205300e-04, +-3.535217039773128913e-04, +-3.324095330737109684e-04, +-3.113016358915037256e-04, +-2.901987433980109305e-04, +-2.691015858398123684e-04, +-2.480108927176114279e-04, +-2.269273927612973666e-04, +-2.058518139052563476e-04, +-1.847848832634994885e-04, +-1.637273271048368824e-04, +-1.426798708283303382e-04, +-1.216432389385911763e-04, +-1.006181550209736422e-04, +-7.960534171743082171e-05, +-5.860552070170776327e-05, +-3.761941265484430267e-05, +-1.664773724103225223e-05, + 4.308786916777418395e-06, + 2.524944226146522429e-05, + 4.617351232557014452e-05, + 6.708028175566784358e-05, + 8.796903633653994849e-05, + 1.088390630150838797e-04, + 1.296896499243903724e-04, + 1.505200864077633387e-04, + 1.713296630424509257e-04, + 1.921176716635178579e-04, + 2.128834053878085012e-04, + 2.336261586372400246e-04, + 2.543452271627408257e-04, + 2.750399080678704979e-04, + 2.957094998320490250e-04, + 3.163533023341733334e-04, + 3.369706168760397457e-04, + 3.575607462055036228e-04, + 3.781229945397871091e-04, + 3.986566675887307149e-04, + 4.191610725777394257e-04, + 4.396355182708891647e-04, + 4.600793149939640830e-04, + 4.804917746571881051e-04, + 5.008722107780962281e-04, + 5.212199385044725530e-04, + 5.415342746366214781e-04, + 5.618145376502610075e-04, + 5.820600477190839136e-04, + 6.022701267369346594e-04, + 6.224440983403472507e-04, + 6.425812879308757898e-04, + 6.626810226971588565e-04, + 6.827426316371288479e-04, + 7.027654455801275344e-04, + 7.227487972087354943e-04, + 7.426920210807277500e-04, + 7.625944536509633763e-04, + 7.824554332929544017e-04, + 8.022743003205570073e-04, + 8.220503970097083708e-04, + 8.417830676196175069e-04, + 8.614716584142138216e-04, + 8.811155176837288071e-04, + 9.007139957655305043e-04, + 9.202664450654405442e-04, + 9.397722200788232892e-04, + 9.592306774113869023e-04, + 9.786411758001220020e-04, + 9.980030761341431716e-04, + 1.017315741475221472e-03, + 1.036578537078426676e-03, + 1.055790830412810157e-03, + 1.074951991181429456e-03, + 1.094061391341947468e-03, + 1.113118405126884260e-03, + 1.132122409063526704e-03, + 1.151072781993976247e-03, + 1.169968905095373829e-03, + 1.188810161899367390e-03, + 1.207595938312021073e-03, + 1.226325622633510403e-03, + 1.244998605577525390e-03, + 1.263614280290770555e-03, + 1.282172042372397734e-03, + 1.300671289893093026e-03, + 1.319111423414271074e-03, + 1.337491846007299702e-03, + 1.355811963272073170e-03, + 1.374071183356116678e-03, + 1.392268916973370173e-03, + 1.410404577422572948e-03, + 1.428477580605932301e-03, + 1.446487345047604844e-03, + 1.464433291911865567e-03, + 1.482314845021392470e-03, + 1.500131430875424566e-03, + 1.517882478667638424e-03, + 1.535567420304092797e-03, + 1.553185690421066351e-03, + 1.570736726402627162e-03, + 1.588219968398199610e-03, + 1.605634859340192852e-03, + 1.622980844961099131e-03, + 1.640257373810766412e-03, + 1.657463897273776625e-03, + 1.674599869586108989e-03, + 1.691664747852199713e-03, + 1.708657992061789416e-03, + 1.725579065106435956e-03, + 1.742427432796153251e-03, + 1.759202563875899824e-03, + 1.775903930041798466e-03, + 1.792531005957390599e-03, + 1.809083269269802161e-03, + 1.825560200625598760e-03, + 1.841961283686681383e-03, + 1.858286005146181450e-03, + 1.874533854743861251e-03, + 1.890704325281656207e-03, + 1.906796912639322069e-03, + 1.922811115789372412e-03, + 1.938746436812379759e-03, + 1.954602380912081987e-03, + 1.970378456430132031e-03, + 1.986074174860973356e-03, + 2.001689050866565373e-03, + 2.017222602290807444e-03, + 2.032674350173998678e-03, + 2.048043818767303348e-03, + 2.063330535546624347e-03, + 2.078534031226882996e-03, + 2.093653839775990073e-03, + 2.108689498428448217e-03, + 2.123640547699173764e-03, + 2.138506531397074868e-03, + 2.153286996638395425e-03, + 2.167981493860067672e-03, + 2.182589576832948131e-03, + 2.197110802674765578e-03, + 2.211544731863112831e-03, + 2.225890928248291500e-03, + 2.240148959065886135e-03, + 2.254318394949334468e-03, + 2.268398809942501117e-03, + 2.282389781511697489e-03, + 2.296290890558011326e-03, + 2.310101721429425048e-03, + 2.323821861932480904e-03, + 2.337450903344211531e-03, + 2.350988440423793392e-03, + 2.364434071423979471e-03, + 2.377787398102497712e-03, + 2.391048025733382223e-03, + 2.404215563117993119e-03, + 2.417289622596026366e-03, + 2.430269820056439947e-03, + 2.443155774948088145e-03, + 2.455947110290321138e-03, + 2.468643452683565512e-03, + 2.481244432319493643e-03, + 2.493749682991208260e-03, + 2.506158842103532389e-03, + 2.518471550682654415e-03, + 2.530687453386055476e-03, + 2.542806198512199186e-03, + 2.554827438009952927e-03, + 2.566750827488028207e-03, + 2.578576026224283120e-03, + 2.590302697174739870e-03, + 2.601930506982593188e-03, + 2.613459125987208781e-03, + 2.624888228232539339e-03, + 2.636217491475929559e-03, + 2.647446597196567285e-03, + 2.658575230603616758e-03, + 2.669603080644457251e-03, + 2.680529840012854485e-03, + 2.691355205156608157e-03, + 2.702078876285465316e-03, + 2.712700557378752275e-03, + 2.723219956192732012e-03, + 2.733636784268051335e-03, + 2.743950756936901388e-03, + 2.754161593330125245e-03, + 2.764269016384091754e-03, + 2.774272752847487845e-03, + 2.784172533288072678e-03, + 2.793968092099038871e-03, + 2.803659167505471745e-03, + 2.813245501570652441e-03, + 2.822726840202000216e-03, + 2.832102933157104076e-03, + 2.841373534049636881e-03, + 2.850538400354873936e-03, + 2.859597293415329540e-03, + 2.868549978446168890e-03, + 2.877396224540415721e-03, + 2.886135804674087087e-03, + 2.894768495711248345e-03, + 2.903294078408756324e-03, + 2.911712337420998588e-03, + 2.920023061304563312e-03, + 2.928226042522448589e-03, + 2.936321077448524140e-03, + 2.944307966371676865e-03, + 2.952186513499686655e-03, + 2.959956526963172449e-03, + 2.967617818819377837e-03, + 2.975170205055635737e-03, + 2.982613505592885978e-03, + 2.989947544288984287e-03, + 2.997172148941820886e-03, + 3.004287151292384453e-03, + 3.011292387027667342e-03, + 3.018187695783343134e-03, + 3.024972921146413390e-03, + 3.031647910657729941e-03, + 3.038212515814171961e-03, + 3.044666592070964864e-03, + 3.051009998843695181e-03, + 3.057242599510207048e-03, + 3.063364261412289662e-03, + 3.069374855857465775e-03, + 3.075274258120358657e-03, + 3.081062347444011359e-03, + 3.086739007041273616e-03, + 3.092304124095627584e-03, + 3.097757589762248180e-03, + 3.103099299168879128e-03, + 3.108329151416238442e-03, + 3.113447049578764794e-03, + 3.118452900704853439e-03, + 3.123346615817120323e-03, + 3.128128109912504864e-03, + 3.132797301962238733e-03, + 3.137354114911583905e-03, + 3.141798475679602812e-03, + 3.146130315158656571e-03, + 3.150349568213764873e-03, + 3.154456173681932912e-03, + 3.158450074371231108e-03, + 3.162331217059796348e-03, + 3.166099552494640226e-03, + 3.169755035390428230e-03, + 3.173297624428003498e-03, + 3.176727282252777857e-03, + 3.180043975473134145e-03, + 3.183247674658491993e-03, + 3.186338354337373176e-03, + 3.189315992995267468e-03, + 3.192180573072400922e-03, + 3.194932080961300318e-03, + 3.197570507004361944e-03, + 3.200095845491074311e-03, + 3.202508094655288125e-03, + 3.204807256672301957e-03, + 3.206993337655733231e-03, + 3.209066347654356693e-03, + 3.211026300648765937e-03, + 3.212873214547867090e-03, + 3.214607111185313528e-03, + 3.216228016315740221e-03, + 3.217735959610870146e-03, + 3.219130974655540038e-03, + 3.220413098943549195e-03, + 3.221582373873347390e-03, + 3.222638844743665101e-03, + 3.223582560748949020e-03, + 3.224413574974700422e-03, + 3.225131944392623570e-03, + 3.225737729855760252e-03, + 3.226230996093340693e-03, + 3.226611811705618407e-03, + 3.226880249158540267e-03, + 3.227036384778259569e-03, + 3.227080298745538083e-03, + 3.227012075090032305e-03, + 3.226831801684429662e-03, + 3.226539570238458506e-03, + 3.226135476292774952e-03, + 3.225619619212705298e-03, + 3.224992102181876985e-03, + 3.224253032195735502e-03, + 3.223402520054850524e-03, + 3.222440680358239391e-03, + 3.221367631496409572e-03, + 3.220183495644391575e-03, + 3.218888398754539415e-03, + 3.217482470549333680e-03, + 3.215965844513928723e-03, + 3.214338657888662562e-03, + 3.212601051661398508e-03, + 3.210753170559755773e-03, + 3.208795163043211274e-03, + 3.206727181295085643e-03, + 3.204549381214389162e-03, + 3.202261922407568812e-03, + 3.199864968180095737e-03, + 3.197358685527955120e-03, + 3.194743245129035014e-03, + 3.192018821334329133e-03, + 3.189185592159078479e-03, + 3.186243739273775938e-03, + 3.183193447995021248e-03, + 3.180034907276285770e-03, + 3.176768309698567959e-03, + 3.173393851460874944e-03, + 3.169911732370632538e-03, + 3.166322155834024998e-03, + 3.162625328846011691e-03, + 3.158821461980536316e-03, + 3.154910769380357954e-03, + 3.150893468746836582e-03, + 3.146769781329705144e-03, + 3.142539931916596158e-03, + 3.138204148822476384e-03, + 3.133762663879072815e-03, + 3.129215712424018078e-03, + 3.124563533290001041e-03, + 3.119806368793799026e-03, + 3.114944464725088839e-03, + 3.109978070335288163e-03, + 3.104907438326199622e-03, + 3.099732824838568115e-03, + 3.094454489440481588e-03, + 3.089072695115736237e-03, + 3.083587708252070320e-03, + 3.077999798629237928e-03, + 3.072309239406976079e-03, + 3.066516307113003898e-03, + 3.060621281630690471e-03, + 3.054624446186762158e-03, + 3.048526087338923607e-03, + 3.042326494963238075e-03, + 3.036025962241496040e-03, + 3.029624785648536538e-03, + 3.023123264939250182e-03, + 3.016521703135749584e-03, + 3.009820406514262647e-03, + 3.003019684591857596e-03, + 2.996119850113346684e-03, + 2.989121219037761418e-03, + 2.982024110524918864e-03, + 2.974828846921910314e-03, + 2.967535753749285955e-03, + 2.960145159687361388e-03, + 2.952657396562342450e-03, + 2.945072799332293465e-03, + 2.937391706073043916e-03, + 2.929614457964117239e-03, + 2.921741399274326110e-03, + 2.913772877347440594e-03, + 2.905709242587780836e-03, + 2.897550848445556472e-03, + 2.889298051402259399e-03, + 2.880951210955871779e-03, + 2.872510689606090108e-03, + 2.863976852839279080e-03, + 2.855350069113483588e-03, + 2.846630709843348331e-03, + 2.837819149384793703e-03, + 2.828915765019764540e-03, + 2.819920936940854394e-03, + 2.810835048235748104e-03, + 2.801658484871638339e-03, + 2.792391635679681173e-03, + 2.783034892338986759e-03, + 2.773588649361064060e-03, + 2.764053304073732162e-03, + 2.754429256604993409e-03, + 2.744716909867203191e-03, + 2.734916669540638640e-03, + 2.725028944057295878e-03, + 2.715054144584646070e-03, + 2.704992685008992485e-03, + 2.694844981919068683e-03, + 2.684611454589479716e-03, + 2.674292524963851891e-03, + 2.663888617638195903e-03, + 2.653400159844075245e-03, + 2.642827581431544774e-03, + 2.632171314852272716e-03, + 2.621431795142368203e-03, + 2.610609459905350628e-03, + 2.599704749294742996e-03, + 2.588718105996834842e-03, + 2.577649975213395280e-03, + 2.566500804644023491e-03, + 2.555271044468700008e-03, + 2.543961147330263840e-03, + 2.532571568316566504e-03, + 2.521102764942793461e-03, + 2.509555197133725695e-03, + 2.497929327205613594e-03, + 2.486225619848467586e-03, + 2.474444542107927681e-03, + 2.462586563366985989e-03, + 2.450652155328139452e-03, + 2.438641791994881208e-03, + 2.426555949653485568e-03, + 2.414395106854730095e-03, + 2.402159744395282459e-03, + 2.389850345299295020e-03, + 2.377467394799912676e-03, + 2.365011380320476697e-03, + 2.352482791455937604e-03, + 2.339882119954158745e-03, + 2.327209859696953605e-03, + 2.314466506681304384e-03, + 2.301652559000488645e-03, + 2.288768516824943571e-03, + 2.275814882383315422e-03, + 2.262792159943301674e-03, + 2.249700855792603326e-03, + 2.236541478219529824e-03, + 2.223314537493816054e-03, + 2.210020545847378622e-03, + 2.196660017454760746e-03, + 2.183233468413771448e-03, + 2.169741416726110421e-03, + 2.156184382277632951e-03, + 2.142562886818841217e-03, + 2.128877453945395536e-03, + 2.115128609078061831e-03, + 2.101316879443378572e-03, + 2.087442794053693575e-03, + 2.073506883687126212e-03, + 2.059509680868122899e-03, + 2.045451719847147815e-03, + 2.031333536580870631e-03, + 2.017155668712222825e-03, + 2.002918655550166901e-03, + 1.988623038049674649e-03, + 1.974269358791686316e-03, + 1.959858161962736278e-03, + 1.945389993334805528e-03, + 1.930865400245184143e-03, + 1.916284931575938004e-03, + 1.901649137733726815e-03, + 1.886958570629326121e-03, + 1.872213783657358148e-03, + 1.857415331675654020e-03, + 1.842563770984821095e-03, + 1.827659659307861919e-03, + 1.812703555769396577e-03, + 1.797696020875166499e-03, + 1.782637616491516801e-03, + 1.767528905824542742e-03, + 1.752370453399503328e-03, + 1.737162825040222550e-03, + 1.721906587847995586e-03, + 1.706602310181241358e-03, + 1.691250561634494382e-03, + 1.675851913017376233e-03, + 1.660406936334171343e-03, + 1.644916204762585966e-03, + 1.629380292632956429e-03, + 1.613799775407441560e-03, + 1.598175229658840412e-03, + 1.582507233049731780e-03, + 1.566796364311578808e-03, + 1.551043203223481659e-03, + 1.535248330591260438e-03, + 1.519412328226500599e-03, + 1.503535778925233629e-03, + 1.487619266447016281e-03, + 1.471663375493708400e-03, + 1.455668691688514430e-03, + 1.439635801554599043e-03, + 1.423565292494039739e-03, + 1.407457752766748870e-03, + 1.391313771469078866e-03, + 1.375133938512706957e-03, + 1.358918844603545064e-03, + 1.342669081220287117e-03, + 1.326385240593261914e-03, + 1.310067915683326301e-03, + 1.293717700160362414e-03, + 1.277335188382117083e-03, + 1.260920975373108679e-03, + 1.244475656802885178e-03, + 1.227999828965276432e-03, + 1.211494088756838276e-03, + 1.194959033655338494e-03, + 1.178395261698955308e-03, + 1.161803371464544335e-03, + 1.145183962046487751e-03, + 1.128537633035503777e-03, + 1.111864984497099029e-03, + 1.095166616950379737e-03, + 1.078443131346856028e-03, + 1.061695129048896872e-03, + 1.044923211808546732e-03, + 1.028127981746343499e-03, + 1.011310041329766506e-03, + 9.944699933521130176e-04, + 9.776084409111253544e-04, + 9.607259873878630421e-04, + 9.438232364251844357e-04, + 9.269007919065958868e-04, + 9.099592579351170650e-04, + 8.929992388117661585e-04, + 8.760213390144557704e-04, + 8.590261631768711425e-04, + 8.420143160670028439e-04, + 8.249864025660497147e-04, + 8.079430276473599732e-04, + 7.908847963549791920e-04, + 7.738123137826105960e-04, + 7.567261850525817566e-04, + 7.396270152944452603e-04, + 7.225154096240274772e-04, + 7.053919731222282885e-04, + 6.882573108140978280e-04, + 6.711120276475123934e-04, + 6.539567284722411049e-04, + 6.367920180190405352e-04, + 6.196185008783824466e-04, + 6.024367814795905966e-04, + 5.852474640699900123e-04, + 5.680511526937052002e-04, + 5.508484511708671002e-04, + 5.336399630768638410e-04, + 5.164262917210167602e-04, + 4.992080401262639737e-04, + 4.819858110080800159e-04, + 4.647602067534357040e-04, + 4.475318294005590104e-04, + 4.303012806177380434e-04, + 4.130691616827708622e-04, + 3.958360734624042873e-04, + 3.786026163914317294e-04, + 3.613693904521913603e-04, + 3.441369951540993572e-04, + 3.269060295128440089e-04, + 3.096770920299790251e-04, + 2.924507806725580995e-04, + 2.752276928524277329e-04, + 2.580084254059257639e-04, + 2.407935745736235395e-04, + 2.235837359797234174e-04, + 2.063795046119099529e-04, + 1.891814748009962798e-04, + 1.719902402008489960e-04, + 1.548063937679436072e-04, + 1.376305277413319669e-04, + 1.204632336226494802e-04, + 1.033051021557907314e-04, + 8.615672330700057725e-05, + 6.901868624500784983e-05, + 5.189157932082953667e-05, + 3.477599004799140252e-05, + 1.767250508283470036e-05, + 5.817102042483011815e-07, +-1.649580970556165701e-05, +-3.355947068104061961e-05, +-5.060868969320613843e-05, +-6.764288466873769436e-05, +-8.466147451000654504e-05, +-1.016638791144389115e-04, +-1.186495193938698545e-04, +-1.356178172942185893e-04, +-1.525681958147387255e-04, +-1.695000790272216699e-04, +-1.864128920955139730e-04, +-2.033060612946117147e-04, +-2.201790140297043533e-04, +-2.370311788555291702e-04, +-2.538619854952655535e-04, +-2.706708648596152208e-04, +-2.874572490655805741e-04, +-3.042205714556028471e-04, +-3.209602666162620710e-04, +-3.376757703969292560e-04, +-3.543665199287255631e-04, +-3.710319536430503433e-04, +-3.876715112900554010e-04, +-4.042846339574174123e-04, +-4.208707640886937928e-04, +-4.374293455015668391e-04, +-4.539598234066371803e-04, +-4.704616444251858830e-04, +-4.869342566076348910e-04, +-5.033771094519475615e-04, +-5.197896539211989755e-04, +-5.361713424620450502e-04, +-5.525216290225209645e-04, +-5.688399690698212616e-04, +-5.851258196083648257e-04, +-6.013786391974347426e-04, +-6.175978879687543015e-04, +-6.337830276443470572e-04, +-6.499335215539753545e-04, +-6.660488346525003569e-04, +-6.821284335375427240e-04, +-6.981717864666570246e-04, +-7.141783633746936078e-04, +-7.301476358908313112e-04, +-7.460790773559497404e-04, +-7.619721628395594113e-04, +-7.778263691566632623e-04, +-7.936411748849067811e-04, +-8.094160603812844759e-04, +-8.251505077987782589e-04, +-8.408440011032780473e-04, +-8.564960260900683587e-04, +-8.721060704002296876e-04, +-8.876736235373331591e-04, +-9.031981768836940200e-04, +-9.186792237165040259e-04, +-9.341162592244755701e-04, +-9.495087805234736023e-04, +-9.648562866728153074e-04, +-9.801582786914471608e-04, +-9.954142595733730167e-04, +-1.010623734303864448e-03, +-1.025786209875047131e-03, +-1.040901195301440711e-03, +-1.055968201635741534e-03, +-1.070986741984194471e-03, +-1.085956331521887100e-03, +-1.100876487508279170e-03, +-1.115746729302316814e-03, +-1.130566578377481058e-03, +-1.145335558337052737e-03, +-1.160053194928943512e-03, +-1.174719016060653959e-03, +-1.189332551813925259e-03, +-1.203893334459678853e-03, +-1.218400898472508107e-03, +-1.232854780545124436e-03, +-1.247254519603012684e-03, +-1.261599656818680358e-03, +-1.275889735625817742e-03, +-1.290124301733684611e-03, +-1.304302903141093184e-03, +-1.318425090150261410e-03, +-1.332490415381103839e-03, +-1.346498433784584650e-03, +-1.360448702656653561e-03, +-1.374340781652071998e-03, +-1.388174232797503328e-03, +-1.401948620505332962e-03, +-1.415663511586873723e-03, +-1.429318475265512877e-03, +-1.442913083190082305e-03, +-1.456446909447817748e-03, +-1.469919530577209208e-03, +-1.483330525581101579e-03, +-1.496679475939345985e-03, +-1.509965965621383032e-03, +-1.523189581099033789e-03, +-1.536349911358841913e-03, +-1.549446547914526797e-03, +-1.562479084819148097e-03, +-1.575447118677479521e-03, +-1.588350248658021132e-03, +-1.601188076504874184e-03, +-1.613960206549843856e-03, +-1.626666245724121959e-03, +-1.639305803569900697e-03, +-1.651878492252147100e-03, +-1.664383926569994523e-03, +-1.676821723968053039e-03, +-1.689191504547871842e-03, +-1.701492891079052754e-03, +-1.713725509010190912e-03, +-1.725888986480212696e-03, +-1.737982954328848046e-03, +-1.750007046107611257e-03, +-1.761960898090625654e-03, +-1.773844149284828755e-03, +-1.785656441440761815e-03, +-1.797397419062814672e-03, +-1.809066729419389922e-03, +-1.820664022553250549e-03, +-1.832188951291454900e-03, +-1.843641171255244173e-03, +-1.855020340870024891e-03, +-1.866326121375043879e-03, +-1.877558176832909952e-03, +-1.888716174139296001e-03, +-1.899799783032231045e-03, +-1.910808676101479224e-03, +-1.921742528797605902e-03, +-1.932601019441257569e-03, +-1.943383829232062055e-03, +-1.954090642257417729e-03, +-1.964721145501425147e-03, +-1.975275028853488470e-03, +-1.985751985116759443e-03, +-1.996151710016768731e-03, +-2.006473902209661517e-03, +-2.016718263290338559e-03, +-2.026884497800854421e-03, +-2.036972313238080614e-03, +-2.046981420061782467e-03, +-2.056911531702530337e-03, +-2.066762364569079986e-03, +-2.076533638056201822e-03, +-2.086225074552036565e-03, +-2.095836399445395824e-03, +-2.105367341133113860e-03, +-2.114817631027121354e-03, +-2.124187003561391670e-03, +-2.133475196198975597e-03, +-2.142681949438734676e-03, +-2.151807006821945725e-03, +-2.160850114939025929e-03, +-2.169811023435881496e-03, +-2.178689485020306616e-03, +-2.187485255468139562e-03, +-2.196198093629492948e-03, +-2.204827761434732889e-03, +-2.213374023900284253e-03, +-2.221836649134557341e-03, +-2.230215408343553217e-03, +-2.238510075836361475e-03, +-2.246720429030736946e-03, +-2.254846248458377590e-03, +-2.262887317770027190e-03, +-2.270843423740868169e-03, +-2.278714356275198406e-03, +-2.286499908411471476e-03, +-2.294199876327154743e-03, +-2.301814059343170252e-03, +-2.309342259928545520e-03, +-2.316784283704942469e-03, +-2.324139939450758745e-03, +-2.331409039105489245e-03, +-2.338591397773778866e-03, +-2.345686833729308720e-03, +-2.352695168418789898e-03, +-2.359616226465625476e-03, +-2.366449835673515266e-03, +-2.373195827030067078e-03, +-2.379854034710134764e-03, +-2.386424296079064315e-03, +-2.392906451695991574e-03, +-2.399300345316785193e-03, +-2.405605823897073291e-03, +-2.411822737594990392e-03, +-2.417950939773975960e-03, +-2.423990287005361316e-03, +-2.429940639070788267e-03, +-2.435801858964683261e-03, +-2.441573812896472625e-03, +-2.447256370292683753e-03, +-2.452849403799065367e-03, +-2.458352789282454952e-03, +-2.463766405832544266e-03, +-2.469090135763703404e-03, +-2.474323864616379855e-03, +-2.479467481158641965e-03, +-2.484520877387640884e-03, +-2.489483948530601086e-03, +-2.494356593046149172e-03, +-2.499138712625235004e-03, +-2.503830212191987797e-03, +-2.508430999904583906e-03, +-2.512940987155854854e-03, +-2.517360088573823793e-03, +-2.521688222022191658e-03, +-2.525925308600637711e-03, +-2.530071272644994311e-03, +-2.534126041727406946e-03, +-2.538089546656280455e-03, +-2.541961721476165836e-03, +-2.545742503467477054e-03, +-2.549431833146199172e-03, +-2.553029654263378346e-03, +-2.556535913804529412e-03, +-2.559950561988982767e-03, +-2.563273552269072515e-03, +-2.566504841329154615e-03, +-2.569644389084662327e-03, +-2.572692158680916618e-03, +-2.575648116491852883e-03, +-2.578512232118726401e-03, +-2.581284478388535478e-03, +-2.583964831352494450e-03, +-2.586553270284343634e-03, +-2.589049777678469316e-03, +-2.591454339248050638e-03, +-2.593766943922974893e-03, +-2.595987583847706847e-03, +-2.598116254379029266e-03, +-2.600152954083700171e-03, +-2.602097684735915368e-03, +-2.603950451314773588e-03, +-2.605711262001578557e-03, +-2.607380128176964556e-03, +-2.608957064418064489e-03, +-2.610442088495431613e-03, +-2.611835221369905764e-03, +-2.613136487189372456e-03, +-2.614345913285426575e-03, +-2.615463530169873877e-03, +-2.616489371531168298e-03, +-2.617423474230767735e-03, +-2.618265878299298570e-03, +-2.619016626932676398e-03, +-2.619675766488092743e-03, +-2.620243346479944092e-03, +-2.620719419575551039e-03, +-2.621104041590865269e-03, +-2.621397271486054694e-03, +-2.621599171360936356e-03, +-2.621709806450329104e-03, +-2.621729245119329074e-03, +-2.621657558858413867e-03, +-2.621494822278536748e-03, +-2.621241113105987532e-03, +-2.620896512177283821e-03, +-2.620461103433857544e-03, +-2.619934973916676884e-03, +-2.619318213760788404e-03, +-2.618610916189677024e-03, +-2.617813177509622103e-03, +-2.616925097103871799e-03, +-2.615946777426744578e-03, +-2.614878323997642685e-03, +-2.613719845394937239e-03, +-2.612471453249755760e-03, +-2.611133262239682083e-03, +-2.609705390082333546e-03, +-2.608187957528867919e-03, +-2.606581088357365870e-03, +-2.604884909366092863e-03, +-2.603099550366718123e-03, +-2.601225144177377914e-03, +-2.599261826615687204e-03, +-2.597209736491587831e-03, +-2.595069015600168921e-03, +-2.592839808714354159e-03, +-2.590522263577480638e-03, +-2.588116530895784046e-03, +-2.585622764330814446e-03, +-2.583041120491725434e-03, +-2.580371758927477860e-03, +-2.577614842118926882e-03, +-2.574770535470858289e-03, +-2.571839007303886905e-03, +-2.568820428846241375e-03, +-2.565714974225561523e-03, +-2.562522820460441577e-03, +-2.559244147451999411e-03, +-2.555879137975350379e-03, +-2.552427977670860409e-03, +-2.548890855035479321e-03, +-2.545267961413874656e-03, +-2.541559490989460553e-03, +-2.537765640775423159e-03, +-2.533886610605586443e-03, +-2.529922603125147468e-03, +-2.525873823781459374e-03, +-2.521740480814609227e-03, +-2.517522785247862729e-03, +-2.513220950878219517e-03, +-2.508835194266660542e-03, +-2.504365734728393293e-03, +-2.499812794323096575e-03, +-2.495176597844889470e-03, +-2.490457372812371426e-03, +-2.485655349458532667e-03, +-2.480770760720511087e-03, +-2.475803842229359984e-03, +-2.470754832299672243e-03, +-2.465623971919132535e-03, +-2.460411504737971058e-03, +-2.455117677058338797e-03, +-2.449742737823678001e-03, +-2.444286938607828988e-03, +-2.438750533604205472e-03, +-2.433133779614897029e-03, +-2.427436936039533040e-03, +-2.421660264864217756e-03, +-2.415804030650362585e-03, +-2.409868500523330587e-03, +-2.403853944161117411e-03, +-2.397760633782941575e-03, +-2.391588844137620094e-03, +-2.385338852492089375e-03, +-2.379010938619688462e-03, +-2.372605384788281820e-03, +-2.366122475748636683e-03, +-2.359562498722322064e-03, +-2.352925743389808547e-03, +-2.346212501878410656e-03, +-2.339423068750080912e-03, +-2.332557740989229904e-03, +-2.325616817990466562e-03, +-2.318600601546145449e-03, +-2.311509395833970856e-03, +-2.304343507404537153e-03, +-2.297103245168618472e-03, +-2.289788920384601065e-03, +-2.282400846645691889e-03, +-2.274939339867196580e-03, +-2.267404718273537210e-03, +-2.259797302385340746e-03, +-2.252117415006508420e-03, +-2.244365381210991061e-03, +-2.236541528329695841e-03, +-2.228646185937323190e-03, +-2.220679685838953046e-03, +-2.212642362056764251e-03, +-2.204534550816645080e-03, +-2.196356590534531000e-03, +-2.188108821803062473e-03, +-2.179791587377859392e-03, +-2.171405232163728730e-03, +-2.162950103201105936e-03, +-2.154426549652156339e-03, +-2.145834922786777656e-03, +-2.137175575968873562e-03, +-2.128448864642174931e-03, +-2.119655146316225865e-03, +-2.110794780552320733e-03, +-2.101868128949198767e-03, +-2.092875555128855328e-03, +-2.083817424722296356e-03, +-2.074694105355035650e-03, +-2.065505966632739596e-03, +-2.056253380126815081e-03, +-2.046936719359723766e-03, +-2.037556359790489331e-03, +-2.028112678799986156e-03, +-2.018606055676321672e-03, +-2.009036871599933355e-03, +-1.999405509628864389e-03, +-1.989712354683912266e-03, +-1.979957793533612589e-03, +-1.970142214779297025e-03, +-1.960266008840141298e-03, +-1.950329567937958810e-03, +-1.940333286082108121e-03, +-1.930277559054421020e-03, +-1.920162784393713608e-03, +-1.909989361380793520e-03, +-1.899757691022988578e-03, +-1.889468176038648769e-03, +-1.879121220841985847e-03, +-1.868717231527378857e-03, +-1.858256615853903218e-03, +-1.847739783229880627e-03, +-1.837167144697080933e-03, +-1.826539112915175327e-03, +-1.815856102146073308e-03, +-1.805118528238050394e-03, +-1.794326808610024809e-03, +-1.783481362235813565e-03, +-1.772582609628096462e-03, +-1.761630972822604297e-03, +-1.750626875362130790e-03, +-1.739570742280604565e-03, +-1.728463000086948205e-03, +-1.717304076749042677e-03, +-1.706094401677717143e-03, +-1.694834405710432578e-03, +-1.683524521095187227e-03, +-1.672165181474358307e-03, +-1.660756821868290432e-03, +-1.649299878659098726e-03, +-1.637794789574415107e-03, +-1.626241993670769640e-03, +-1.614641931317498807e-03, +-1.602995044180207307e-03, +-1.591301775204105162e-03, +-1.579562568597891493e-03, +-1.567777869816914908e-03, +-1.555948125546735691e-03, +-1.544073783686638560e-03, +-1.532155293332825366e-03, +-1.520193104761887945e-03, +-1.508187669414200530e-03, +-1.496139439877064740e-03, +-1.484048869868059275e-03, +-1.471916414218397843e-03, +-1.459742528855953155e-03, +-1.447527670788567589e-03, +-1.435272298087297057e-03, +-1.422976869869402479e-03, +-1.410641846281582377e-03, +-1.398267688483028530e-03, +-1.385854858628626264e-03, +-1.373403819851821018e-03, +-1.360915036247790878e-03, +-1.348388972856510038e-03, +-1.335826095645604745e-03, +-1.323226871493403314e-03, +-1.310591768172013035e-03, +-1.297921254330072901e-03, +-1.285215799475769149e-03, +-1.272475873959882237e-03, +-1.259701948958351359e-03, +-1.246894496455535880e-03, +-1.234053989226921010e-03, +-1.221180900821773390e-03, +-1.208275705546386913e-03, +-1.195338878446561368e-03, +-1.182370895290567672e-03, +-1.169372232552012489e-03, +-1.156343367392464539e-03, +-1.143284777644328759e-03, +-1.130196941793702248e-03, +-1.117080338962963279e-03, +-1.103935448893619657e-03, +-1.090762751929138423e-03, +-1.077562728997507116e-03, +-1.064335861594093184e-03, +-1.051082631764306509e-03, +-1.037803522086443641e-03, +-1.024499015654222389e-03, +-1.011169596059586367e-03, +-9.978157473755110748e-04, +-9.844379541385115881e-04, +-9.710367013314586109e-04, +-9.576124743663553792e-04, +-9.441657590668645506e-04, +-9.306970416510967122e-04, +-9.172068087144401955e-04, +-9.036955472119038687e-04, +-8.901637444412496608e-04, +-8.766118880254890940e-04, +-8.630404658954084381e-04, +-8.494499662726913685e-04, +-8.358408776522746608e-04, +-8.222136887852057614e-04, +-8.085688886614483166e-04, +-7.949069664924277110e-04, +-7.812284116938512327e-04, +-7.675337138685592482e-04, +-7.538233627890643428e-04, +-7.400978483804155055e-04, +-7.263576607030540738e-04, +-7.126032899353896286e-04, +-6.988352263567237021e-04, +-6.850539603299628244e-04, +-6.712599822845673843e-04, +-6.574537826991594001e-04, +-6.436358520844570694e-04, +-6.298066809662091012e-04, +-6.159667598678487824e-04, +-6.021165792934638720e-04, +-5.882566297107762535e-04, +-5.743874015338354660e-04, +-5.605093851060412909e-04, +-5.466230706831593997e-04, +-5.327289484160722391e-04, +-5.188275083338409746e-04, +-5.049192403268192584e-04, +-4.910046341292870209e-04, +-4.770841793028953001e-04, +-4.631583652195109648e-04, +-4.492276810440716289e-04, +-4.352926157180945577e-04, +-4.213536579424142711e-04, +-4.074112961604362286e-04, +-3.934660185413807552e-04, +-3.795183129632495752e-04, +-3.655686669961199912e-04, +-3.516175678854574407e-04, +-3.376655025351574355e-04, +-3.237129574909094554e-04, +-3.097604189235913619e-04, +-2.958083726123844669e-04, +-2.818573039282544664e-04, +-2.679076978172545095e-04, +-2.539600387840648416e-04, +-2.400148108752173505e-04, +-2.260724976626562967e-04, +-2.121335822273299977e-04, +-1.981985471425053093e-04, +-1.842678744574233857e-04, +-1.703420456809773146e-04, +-1.564215417651290002e-04, +-1.425068430886536396e-04, +-1.285984294409557550e-04, +-1.146967800054122573e-04, +-1.008023733435576224e-04, +-8.691568737866478794e-05, +-7.303719937936182843e-05, +-5.916738594392185210e-05, +-4.530672298378503213e-05, +-3.145568570761954038e-05, +-1.761474860538695696e-05, +-3.784385432144545134e-06, + 1.003493080781320573e-05, + 2.384272787677377340e-05, + 3.763853431968683806e-05, + 5.142187947990367949e-05, + 6.519229351487651567e-05, + 7.894930741211600542e-05, + 9.269245300477468277e-05, + 1.064212629873866587e-04, + 1.201352709313665217e-04, + 1.338340113007963105e-04, + 1.475170194678704621e-04, + 1.611838317282952772e-04, + 1.748339853169438105e-04, + 1.884670184231668243e-04, + 2.020824702060562954e-04, + 2.156798808099616763e-04, + 2.292587913796625184e-04, + 2.428187440754936888e-04, + 2.563592820887157248e-04, + 2.698799496565497912e-04, + 2.833802920771181480e-04, + 2.968598557248405541e-04, + 3.103181880649821724e-04, + 3.237548376687864851e-04, + 3.371693542285444565e-04, + 3.505612885719995683e-04, + 3.639301926774864268e-04, + 3.772756196885171842e-04, + 3.905971239283597221e-04, + 4.038942609148517553e-04, + 4.171665873748641438e-04, + 4.304136612587164987e-04, + 4.436350417548291444e-04, + 4.568302893040243964e-04, + 4.699989656137736819e-04, + 4.831406336726886070e-04, + 4.962548577646155304e-04, + 5.093412034828837150e-04, + 5.223992377442921321e-04, + 5.354285288033688341e-04, + 5.484286462662718359e-04, + 5.613991611046417491e-04, + 5.743396456696796054e-04, + 5.872496737058781682e-04, + 6.001288203646896026e-04, + 6.129766622184250552e-04, + 6.257927772738085910e-04, + 6.385767449854253116e-04, + 6.513281462696002277e-04, + 6.640465635174451139e-04, + 6.767315806084485495e-04, + 6.893827829239955940e-04, + 7.019997573602329306e-04, + 7.145820923416265971e-04, + 7.271293778339721955e-04, + 7.396412053573895966e-04, + 7.521171679995203915e-04, + 7.645568604283829511e-04, + 7.769598789051636268e-04, + 7.893258212972229480e-04, + 8.016542870907484783e-04, + 8.139448774033519437e-04, + 8.261971949968673718e-04, + 8.384108442897719293e-04, + 8.505854313697414158e-04, + 8.627205640059568267e-04, + 8.748158516614874597e-04, + 8.868709055057746350e-04, + 8.988853384264395251e-04, + 9.108587650417573336e-04, + 9.227908017125892662e-04, + 9.346810665543010561e-04, + 9.465291794488509512e-04, + 9.583347620565619814e-04, + 9.700974378278031524e-04, + 9.818168320148811922e-04, + 9.934925716835810161e-04, + 1.005124285724643416e-03, + 1.016711604865424461e-03, + 1.028254161681230834e-03, + 1.039751590606563005e-03, + 1.051203527946563323e-03, + 1.062609611888090709e-03, + 1.073969482510894443e-03, + 1.085282781798541400e-03, + 1.096549153649555583e-03, + 1.107768243888224147e-03, + 1.118939700275323190e-03, + 1.130063172519025702e-03, + 1.141138312285480986e-03, + 1.152164773209312341e-03, + 1.163142210904289080e-03, + 1.174070282973681094e-03, + 1.184948649020485696e-03, + 1.195776970658007487e-03, + 1.206554911519707026e-03, + 1.217282137269453919e-03, + 1.227958315611757780e-03, + 1.238583116301336532e-03, + 1.249156211153327643e-03, + 1.259677274052940993e-03, + 1.270145980965112610e-03, + 1.280562009944304124e-03, + 1.290925041143962428e-03, + 1.301234756825922967e-03, + 1.311490841369952450e-03, + 1.321692981282995144e-03, + 1.331840865208296218e-03, + 1.341934183934728481e-03, + 1.351972630405738141e-03, + 1.361955899728375984e-03, + 1.371883689182099367e-03, + 1.381755698227735531e-03, + 1.391571628516134187e-03, + 1.401331183896738133e-03, + 1.411034070426305442e-03, + 1.420679996377294035e-03, + 1.430268672246206565e-03, + 1.439799810762027463e-03, + 1.449273126894383510e-03, + 1.458688337861585799e-03, + 1.468045163138944264e-03, + 1.477343324466433858e-03, + 1.486582545856708973e-03, + 1.495762553603052596e-03, + 1.504883076286776204e-03, + 1.513943844785108420e-03, + 1.522944592278623098e-03, + 1.531885054258645944e-03, + 1.540764968534732689e-03, + 1.549584075241897466e-03, + 1.558342116847726260e-03, + 1.567038838159603769e-03, + 1.575673986331685037e-03, + 1.584247310871744361e-03, + 1.592758563648128062e-03, + 1.601207498896456806e-03, + 1.609593873226296485e-03, + 1.617917445627661257e-03, + 1.626177977477630873e-03, + 1.634375232546680023e-03, + 1.642508977004914026e-03, + 1.650578979428419862e-03, + 1.658585010805350502e-03, + 1.666526844541858744e-03, + 1.674404256468221656e-03, + 1.682217024844604629e-03, + 1.689964930366786612e-03, + 1.697647756171960813e-03, + 1.705265287844256105e-03, + 1.712817313420174955e-03, + 1.720303623394203296e-03, + 1.727724010723885248e-03, + 1.735078270835176692e-03, + 1.742366201627682399e-03, + 1.749587603479466850e-03, + 1.756742279252218077e-03, + 1.763830034296034414e-03, + 1.770850676454154438e-03, + 1.777804016067738952e-03, + 1.784689865980413140e-03, + 1.791508041542726106e-03, + 1.798258360616640994e-03, + 1.804940643579835795e-03, + 1.811554713329843703e-03, + 1.818100395288312727e-03, + 1.824577517404984929e-03, + 1.830985910161663085e-03, + 1.837325406576016456e-03, + 1.843595842205445531e-03, + 1.849797055150713453e-03, + 1.855928886059470765e-03, + 1.861991178129858426e-03, + 1.867983777113846073e-03, + 1.873906531320505874e-03, + 1.879759291619306771e-03, + 1.885541911443204240e-03, + 1.891254246791608182e-03, + 1.896896156233477456e-03, + 1.902467500909993956e-03, + 1.907968144537376112e-03, + 1.913397953409655319e-03, + 1.918756796401043831e-03, + 1.924044544968564604e-03, + 1.929261073154400980e-03, + 1.934406257588114960e-03, + 1.939479977488959379e-03, + 1.944482114667925310e-03, + 1.949412553529728540e-03, + 1.954271181074799298e-03, + 1.959057886901082249e-03, + 1.963772563205741072e-03, + 1.968415104786856110e-03, + 1.972985409044957211e-03, + 1.977483375984490435e-03, + 1.981908908215129078e-03, + 1.986261910953155373e-03, + 1.990542292022571148e-03, + 1.994749961856175959e-03, + 1.998884833496626136e-03, + 2.002946822597313423e-03, + 2.006935847423141697e-03, + 2.010851828851323211e-03, + 2.014694690371954516e-03, + 2.018464358088560735e-03, + 2.022160760718570878e-03, + 2.025783829593660011e-03, + 2.029333498659963066e-03, + 2.032809704478360634e-03, + 2.036212386224432562e-03, + 2.039541485688503488e-03, + 2.042796947275586465e-03, + 2.045978718005082419e-03, + 2.049086747510584124e-03, + 2.052120988039468543e-03, + 2.055081394452392025e-03, + 2.057967924222793739e-03, + 2.060780537436214793e-03, + 2.063519196789532790e-03, + 2.066183867590179902e-03, + 2.068774517755183565e-03, + 2.071291117810150368e-03, + 2.073733640888187919e-03, + 2.076102062728693142e-03, + 2.078396361676073355e-03, + 2.080616518678343740e-03, + 2.082762517285720923e-03, + 2.084834343649020084e-03, + 2.086831986518014777e-03, + 2.088755437239719556e-03, + 2.090604689756560275e-03, + 2.092379740604448108e-03, + 2.094080588910797198e-03, + 2.095707236392428674e-03, + 2.097259687353357580e-03, + 2.098737948682601918e-03, + 2.100142029851721943e-03, + 2.101471942912438388e-03, + 2.102727702494117112e-03, + 2.103909325801078117e-03, + 2.105016832609929271e-03, + 2.106050245266780346e-03, + 2.107009588684301792e-03, + 2.107894890338809536e-03, + 2.108706180267171538e-03, + 2.109443491063663165e-03, + 2.110106857876746251e-03, + 2.110696318405726277e-03, + 2.111211912897355356e-03, + 2.111653684142340229e-03, + 2.112021677471759631e-03, + 2.112315940753387109e-03, + 2.112536524387950091e-03, + 2.112683481305283138e-03, + 2.112756866960412670e-03, + 2.112756739329533281e-03, + 2.112683158905939371e-03, + 2.112536188695814544e-03, + 2.112315894213987605e-03, + 2.112022343479581874e-03, + 2.111655607011592509e-03, + 2.111215757824335456e-03, + 2.110702871422896840e-03, + 2.110117025798416250e-03, + 2.109458301423333161e-03, + 2.108726781246521038e-03, + 2.107922550688401050e-03, + 2.107045697635872780e-03, + 2.106096312437240586e-03, + 2.105074487897046730e-03, + 2.103980319270796519e-03, + 2.102813904259625329e-03, + 2.101575343004864153e-03, + 2.100264738082545293e-03, + 2.098882194497815688e-03, + 2.097427819679274340e-03, + 2.095901723473217373e-03, + 2.094304018137826701e-03, + 2.092634818337245090e-03, + 2.090894241135625182e-03, + 2.089082405991029776e-03, + 2.087199434749298279e-03, + 2.085245451637858950e-03, + 2.083220583259387613e-03, + 2.081124958585432554e-03, + 2.078958708949997340e-03, + 2.076721968042984437e-03, + 2.074414871903566826e-03, + 2.072037558913545751e-03, + 2.069590169790545397e-03, + 2.067072847581198029e-03, + 2.064485737654243262e-03, + 2.061828987693473808e-03, + 2.059102747690749746e-03, + 2.056307169938837581e-03, + 2.053442409024124841e-03, + 2.050508621819431814e-03, + 2.047505967476580865e-03, + 2.044434607418977451e-03, + 2.041294705334110917e-03, + 2.038086427165959006e-03, + 2.034809941107314744e-03, + 2.031465417592101617e-03, + 2.028053029287517437e-03, + 2.024572951086202506e-03, + 2.021025360098280699e-03, + 2.017410435643345479e-03, + 2.013728359242357869e-03, + 2.009979314609512333e-03, + 2.006163487644011152e-03, + 2.002281066421740356e-03, + 1.998332241186918327e-03, + 1.994317204343682391e-03, + 1.990236150447547911e-03, + 1.986089276196848722e-03, + 1.981876780424123366e-03, + 1.977598864087367746e-03, + 1.973255730261267837e-03, + 1.968847584128403331e-03, + 1.964374632970249633e-03, + 1.959837086158296073e-03, + 1.955235155144985013e-03, + 1.950569053454505016e-03, + 1.945838996673796744e-03, + 1.941045202443159425e-03, + 1.936187890447020827e-03, + 1.931267282404606394e-03, + 1.926283602060424073e-03, + 1.921237075174835225e-03, + 1.916127929514514945e-03, + 1.910956394842768620e-03, + 1.905722702909912669e-03, + 1.900427087443524315e-03, + 1.895069784138626087e-03, + 1.889651030647817621e-03, + 1.884171066571403578e-03, + 1.878630133447349148e-03, + 1.873028474741268322e-03, + 1.867366335836318251e-03, + 1.861643964023076709e-03, + 1.855861608489251706e-03, + 1.850019520309443806e-03, + 1.844117952434858130e-03, + 1.838157159682819904e-03, + 1.832137398726381081e-03, + 1.826058928083855188e-03, + 1.819922008108162004e-03, + 1.813726900976284128e-03, + 1.807473870678615556e-03, + 1.801163183008099283e-03, + 1.794795105549638978e-03, + 1.788369907669168715e-03, + 1.781887860502688430e-03, + 1.775349236945506035e-03, + 1.768754311641083585e-03, + 1.762103360970061674e-03, + 1.755396663039198845e-03, + 1.748634497670127760e-03, + 1.741817146388230202e-03, + 1.734944892411401053e-03, + 1.728018020638672414e-03, + 1.721036817638919685e-03, + 1.714001571639494140e-03, + 1.706912572514700027e-03, + 1.699770111774344091e-03, + 1.692574482552179713e-03, + 1.685325979594372303e-03, + 1.678024899247770613e-03, + 1.670671539448269783e-03, + 1.663266199709131010e-03, + 1.655809181109113874e-03, + 1.648300786280702769e-03, + 1.640741319398281942e-03, + 1.633131086166164821e-03, + 1.625470393806639595e-03, + 1.617759551048077692e-03, + 1.609998868112706358e-03, + 1.602188656704740767e-03, + 1.594329229998150965e-03, + 1.586420902624418846e-03, + 1.578463990660538847e-03, + 1.570458811616589744e-03, + 1.562405684423515476e-03, + 1.554304929420853923e-03, + 1.546156868344276611e-03, + 1.537961824313212756e-03, + 1.529720121818502589e-03, + 1.521432086709751004e-03, + 1.513098046182983266e-03, + 1.504718328767960713e-03, + 1.496293264315633718e-03, + 1.487823183985612432e-03, + 1.479308420233270849e-03, + 1.470749306797338764e-03, + 1.462146178687012774e-03, + 1.453499372169110440e-03, + 1.444809224755494621e-03, + 1.436076075190113139e-03, + 1.427300263436045383e-03, + 1.418482130662850537e-03, + 1.409622019233407750e-03, + 1.400720272691062052e-03, + 1.391777235746696545e-03, + 1.382793254265570404e-03, + 1.373768675254356158e-03, + 1.364703846848107143e-03, + 1.355599118297046504e-03, + 1.346454839953469375e-03, + 1.337271363258676080e-03, + 1.328049040729629721e-03, + 1.318788225945840588e-03, + 1.309489273536077738e-03, + 1.300152539165186838e-03, + 1.290778379520667951e-03, + 1.281367152299423126e-03, + 1.271919216194482066e-03, + 1.262434930881500134e-03, + 1.252914657005442609e-03, + 1.243358756167227321e-03, + 1.233767590910178407e-03, + 1.224141524706606277e-03, + 1.214480921944446120e-03, + 1.204786147913507188e-03, + 1.195057568792231434e-03, + 1.185295551634034513e-03, + 1.175500464353615784e-03, + 1.165672675713652542e-03, + 1.155812555310984464e-03, + 1.145920473563070627e-03, + 1.135996801694428952e-03, + 1.126041911722864674e-03, + 1.116056176445858394e-03, + 1.106039969426959781e-03, + 1.095993664981965944e-03, + 1.085917638165263517e-03, + 1.075812264756172056e-03, + 1.065677921245086410e-03, + 1.055514984819789972e-03, + 1.045323833351663196e-03, + 1.035104845381990771e-03, + 1.024858400108028325e-03, + 1.014584877369272518e-03, + 1.004284657633722905e-03, + 9.939581219839152375e-04, + 9.836056521031514514e-04, + 9.732276302617416794e-04, + 9.628244393029964689e-04, + 9.523964626294466806e-04, + 9.419440841890658811e-04, + 9.314676884611259493e-04, + 9.209676604426418394e-04, + 9.104443856343186941e-04, + 8.998982500265211839e-04, + 8.893296400856626508e-04, + 8.787389427401446317e-04, + 8.681265453663104771e-04, + 8.574928357748379639e-04, + 8.468382021965543526e-04, + 8.361630332686124847e-04, + 8.254677180206433521e-04, + 8.147526458606703598e-04, + 8.040182065612653649e-04, + 7.932647902456876942e-04, + 7.824927873738035016e-04, + 7.717025887282345439e-04, + 7.608945854004969811e-04, + 7.500691687769247456e-04, + 7.392267305248401100e-04, + 7.283676625785744183e-04, + 7.174923571256488445e-04, + 7.066012065926979792e-04, + 6.956946036316235919e-04, + 6.847729411057636812e-04, + 6.738366120758258184e-04, + 6.628860097860484997e-04, + 6.519215276503942651e-04, + 6.409435592384841269e-04, + 6.299524982617935075e-04, + 6.189487385598709457e-04, + 6.079326740861809098e-04, + 5.969046988945631970e-04, + 5.858652071252303537e-04, + 5.748145929907501339e-04, + 5.637532507625433878e-04, + 5.526815747567657977e-04, + 5.415999593205905521e-04, + 5.305087988184719380e-04, + 5.194084876181841778e-04, + 5.082994200771124519e-04, + 4.971819905285536790e-04, + 4.860565932677927037e-04, + 4.749236225384207495e-04, + 4.637834725186874276e-04, + 4.526365373076032166e-04, + 4.414832109113394471e-04, + 4.303238872294752517e-04, + 4.191589600414256304e-04, + 4.079888229926087657e-04, + 3.968138695808784248e-04, + 3.856344931429704572e-04, + 3.744510868407237769e-04, + 3.632640436475634521e-04, + 3.520737563349943646e-04, + 3.408806174588811734e-04, + 3.296850193459841503e-04, + 3.184873540805376242e-04, + 3.072880134904547550e-04, + 2.960873891341862449e-04, + 2.848858722870988014e-04, + 2.736838539278663401e-04, + 2.624817247254022587e-04, + 2.512798750251605422e-04, + 2.400786948358675954e-04, + 2.288785738162484366e-04, + 2.176799012615346959e-04, + 2.064830660902371054e-04, + 1.952884568309465026e-04, + 1.840964616089101882e-04, + 1.729074681328839416e-04, + 1.617218636820032273e-04, + 1.505400350924415720e-04, + 1.393623687443367397e-04, + 1.281892505487441480e-04, + 1.170210659343737274e-04, + 1.058581998346278647e-04, + 9.470103667450128593e-05, + 8.354996035767432098e-05, + 7.240535425336543421e-05, + 6.126760118345450765e-05, + 5.013708340963751178e-05, + 3.901418262036876765e-05, + 2.789927991807623472e-05, + 1.679275580640780355e-05, + 5.694990177268111283e-06, +-5.393637701871444205e-06, +-1.647274920060317176e-05, +-2.754196633858244566e-05, +-3.860091179785114649e-05, +-4.964920893563560302e-05, +-6.068648179711078077e-05, +-7.171235512762116492e-05, +-8.272645438550835261e-05, +-9.372840575450274521e-05, +-1.047178361561054217e-04, +-1.156943732621754073e-04, +-1.266576455072369542e-04, +-1.376072821007541459e-04, +-1.485429130396052541e-04, +-1.594641691202777626e-04, +-1.703706819510302157e-04, +-1.812620839642499276e-04, +-1.921380084285084159e-04, +-2.029980894607346883e-04, +-2.138419620381927760e-04, +-2.246692620106818003e-04, +-2.354796261124546069e-04, +-2.462726919741019499e-04, +-2.570480981346270075e-04, +-2.678054840532421792e-04, +-2.785444901211268790e-04, +-2.892647576733759851e-04, +-2.999659290006674280e-04, +-3.106476473608668393e-04, +-3.213095569909746470e-04, +-3.319513031184054643e-04, +-3.425725319727157417e-04, +-3.531728907972934181e-04, +-3.637520278604978270e-04, +-3.743095924673848552e-04, +-3.848452349709975532e-04, +-3.953586067836319172e-04, +-4.058493603882894251e-04, +-4.163171493498559199e-04, +-4.267616283262275299e-04, +-4.371824530796190596e-04, +-4.475792804875989997e-04, +-4.579517685540755311e-04, +-4.682995764204541029e-04, +-4.786223643765085117e-04, +-4.889197938713348663e-04, +-4.991915275241225409e-04, +-5.094372291351150243e-04, +-5.196565636962964139e-04, +-5.298491974020335098e-04, +-5.400147976598789141e-04, +-5.501530331011165228e-04, +-5.602635735912360037e-04, +-5.703460902405902864e-04, +-5.804002554147807014e-04, +-5.904257427449707786e-04, +-6.004222271383954186e-04, +-6.103893847885736440e-04, +-6.203268931854535873e-04, +-6.302344311258662596e-04, +-6.401116787233423512e-04, +-6.499583174183374504e-04, +-6.597740299883953548e-04, +-6.695585005578064694e-04, +-6.793114146077801167e-04, +-6.890324589862116805e-04, +-6.987213219173989001e-04, +-7.083776930119406370e-04, +-7.180012632763465913e-04, +-7.275917251225925931e-04, +-7.371487723778411254e-04, +-7.466721002938821227e-04, +-7.561614055565216196e-04, +-7.656163862951137315e-04, +-7.750367420918177893e-04, +-7.844221739909175992e-04, +-7.937723845079566048e-04, +-8.030870776390365475e-04, +-8.123659588698566763e-04, +-8.216087351846765221e-04, +-8.308151150754513855e-04, +-8.399848085506821365e-04, +-8.491175271442006137e-04, +-8.582129839241233989e-04, +-8.672708935015087384e-04, +-8.762909720389590361e-04, +-8.852729372594744491e-04, +-8.942165084547236149e-04, +-9.031214064936711906e-04, +-9.119873538311361110e-04, +-9.208140745158811466e-04, +-9.296012941991518624e-04, +-9.383487401428387093e-04, +-9.470561412275869647e-04, +-9.557232279610387285e-04, +-9.643497324858288063e-04, +-9.729353885874975419e-04, +-9.814799317025525108e-04, +-9.899830989262515743e-04, +-9.984446290203469014e-04, +-1.006864262420928196e-03, +-1.015241741246011246e-03, +-1.023576809303170486e-03, +-1.031869212096995060e-03, +-1.040118696836679537e-03, +-1.048325012443358968e-03, +-1.056487909557386490e-03, +-1.064607140545726716e-03, +-1.072682459509081976e-03, +-1.080713622288984738e-03, +-1.088700386474978710e-03, +-1.096642511411556435e-03, +-1.104539758205041371e-03, +-1.112391889730558660e-03, +-1.120198670638793614e-03, +-1.127959867362625292e-03, +-1.135675248124014443e-03, +-1.143344582940337192e-03, +-1.150967643631035974e-03, +-1.158544203824180691e-03, +-1.166074038962614185e-03, +-1.173556926310480655e-03, +-1.180992644959401707e-03, +-1.188380975834583660e-03, +-1.195721701701070797e-03, +-1.203014607169705001e-03, +-1.210259478703049193e-03, +-1.217456104621409633e-03, +-1.224604275108597809e-03, +-1.231703782217643530e-03, +-1.238754419876599532e-03, +-1.245755983894079356e-03, +-1.252708271964856832e-03, +-1.259611083675259971e-03, +-1.266464220508691733e-03, +-1.273267485850917242e-03, +-1.280020684995276416e-03, +-1.286723625147976387e-03, +-1.293376115433169694e-03, +-1.299977966897961339e-03, +-1.306528992517467895e-03, +-1.313029007199697498e-03, +-1.319477827790317736e-03, +-1.325875273077590719e-03, +-1.332221163796855172e-03, +-1.338515322635261797e-03, +-1.344757574236391754e-03, +-1.350947745204537313e-03, +-1.357085664109286723e-03, +-1.363171161489781444e-03, +-1.369204069858923284e-03, +-1.375184223707665455e-03, +-1.381111459509077027e-03, +-1.386985615722325206e-03, +-1.392806532796741310e-03, +-1.398574053175672283e-03, +-1.404288021300243534e-03, +-1.409948283613201778e-03, +-1.415554688562544513e-03, +-1.421107086605121741e-03, +-1.426605330210123411e-03, +-1.432049273862616087e-03, +-1.437438774066871231e-03, +-1.442773689349650121e-03, +-1.448053880263489848e-03, +-1.453279209389847938e-03, +-1.458449541342132262e-03, +-1.463564742768800123e-03, +-1.468624682356246998e-03, +-1.473629230831620049e-03, +-1.478578260965763679e-03, +-1.483471647575747244e-03, +-1.488309267527605914e-03, +-1.493090999738954467e-03, +-1.497816725181360829e-03, +-1.502486326882822602e-03, +-1.507099689930188526e-03, +-1.511656701471278527e-03, +-1.516157250717215616e-03, +-1.520601228944444680e-03, +-1.524988529496873555e-03, +-1.529319047787796844e-03, +-1.533592681301766160e-03, +-1.537809329596500707e-03, +-1.541968894304579507e-03, +-1.546071279135102393e-03, +-1.550116389875363151e-03, +-1.554104134392332278e-03, +-1.558034422634074897e-03, +-1.561907166631258453e-03, +-1.565722280498305433e-03, +-1.569479680434705902e-03, +-1.573179284726227475e-03, +-1.576821013745869846e-03, +-1.580404789954990407e-03, +-1.583930537904190260e-03, +-1.587398184234161411e-03, +-1.590807657676523990e-03, +-1.594158889054514503e-03, +-1.597451811283603831e-03, +-1.600686359372108496e-03, +-1.603862470421668152e-03, +-1.606980083627626349e-03, +-1.610039140279440149e-03, +-1.613039583760916048e-03, +-1.615981359550417709e-03, +-1.618864415220959418e-03, +-1.621688700440316461e-03, +-1.624454166970960931e-03, +-1.627160768669963942e-03, +-1.629808461488854677e-03, +-1.632397203473363650e-03, +-1.634926954763088339e-03, +-1.637397677591147325e-03, +-1.639809336283681558e-03, +-1.642161897259317247e-03, +-1.644455329028619633e-03, +-1.646689602193324078e-03, +-1.648864689445633715e-03, +-1.650980565567420613e-03, +-1.653037207429252156e-03, +-1.655034593989486392e-03, +-1.656972706293211896e-03, +-1.658851527471104587e-03, +-1.660671042738278043e-03, +-1.662431239393022137e-03, +-1.664132106815427621e-03, +-1.665773636466051470e-03, +-1.667355821884381655e-03, +-1.668878658687322075e-03, +-1.670342144567574065e-03, +-1.671746279291941350e-03, +-1.673091064699571903e-03, +-1.674376504700115240e-03, +-1.675602605271842190e-03, +-1.676769374459654953e-03, +-1.677876822373049887e-03, +-1.678924961183999622e-03, +-1.679913805124774902e-03, +-1.680843370485673180e-03, +-1.681713675612718376e-03, +-1.682524740905244186e-03, +-1.683276588813427963e-03, +-1.683969243835777094e-03, +-1.684602732516499602e-03, +-1.685177083442842639e-03, +-1.685692327242351842e-03, +-1.686148496580050461e-03, +-1.686545626155542578e-03, +-1.686883752700112874e-03, +-1.687162914973646408e-03, +-1.687383153761579406e-03, +-1.687544511871735993e-03, +-1.687647034131086647e-03, +-1.687690767382484316e-03, +-1.687675760481275634e-03, +-1.687602064291896745e-03, +-1.687469731684360921e-03, +-1.687278817530703029e-03, +-1.687029378701349622e-03, +-1.686721474061425932e-03, +-1.686355164466978940e-03, +-1.685930512761157083e-03, +-1.685447583770317750e-03, +-1.684906444300063658e-03, +-1.684307163131196824e-03, +-1.683649811015649990e-03, +-1.682934460672305286e-03, +-1.682161186782782326e-03, +-1.681330065987139992e-03, +-1.680441176879531604e-03, +-1.679494600003761861e-03, +-1.678490417848838793e-03, +-1.677428714844378908e-03, +-1.676309577356031649e-03, +-1.675133093680792381e-03, +-1.673899354042236677e-03, +-1.672608450585758499e-03, +-1.671260477373677413e-03, +-1.669855530380292023e-03, +-1.668393707486929721e-03, +-1.666875108476854406e-03, +-1.665299835030154474e-03, +-1.663667990718580274e-03, +-1.661979681000284219e-03, +-1.660235013214516860e-03, +-1.658434096576280690e-03, +-1.656577042170873136e-03, +-1.654663962948419798e-03, +-1.652694973718329616e-03, +-1.650670191143674588e-03, +-1.648589733735517223e-03, +-1.646453721847202000e-03, +-1.644262277668552498e-03, +-1.642015525220020178e-03, +-1.639713590346779815e-03, +-1.637356600712788724e-03, +-1.634944685794713056e-03, +-1.632477976875888791e-03, +-1.629956607040169547e-03, +-1.627380711165702818e-03, +-1.624750425918715119e-03, +-1.622065889747170480e-03, +-1.619327242874395775e-03, +-1.616534627292671566e-03, +-1.613688186756760722e-03, +-1.610788066777304106e-03, +-1.607834414614307773e-03, +-1.604827379270428291e-03, +-1.601767111484291885e-03, +-1.598653763723746363e-03, +-1.595487490179007227e-03, +-1.592268446755808111e-03, +-1.588996791068482926e-03, +-1.585672682432970153e-03, +-1.582296281859765959e-03, +-1.578867752046892933e-03, +-1.575387257372691009e-03, +-1.571854963888673004e-03, +-1.568271039312245938e-03, +-1.564635653019464442e-03, +-1.560948976037609612e-03, +-1.557211181037838552e-03, +-1.553422442327742192e-03, +-1.549582935843788183e-03, +-1.545692839143811281e-03, +-1.541752331399407882e-03, +-1.537761593388259872e-03, +-1.533720807486427468e-03, +-1.529630157660655720e-03, +-1.525489829460456147e-03, +-1.521300010010389172e-03, +-1.517060888002091327e-03, +-1.512772653686288811e-03, +-1.508435498864910997e-03, +-1.504049616882948293e-03, +-1.499615202620405196e-03, +-1.495132452484180261e-03, +-1.490601564399833111e-03, +-1.486022737803387650e-03, +-1.481396173633066533e-03, +-1.476722074320930677e-03, +-1.472000643784531979e-03, +-1.467232087418538075e-03, +-1.462416612086208344e-03, +-1.457554426110944067e-03, +-1.452645739267712172e-03, +-1.447690762774505192e-03, +-1.442689709283650080e-03, +-1.437642792873161917e-03, +-1.432550229038060318e-03, +-1.427412234681540342e-03, +-1.422229028106228180e-03, +-1.417000829005333855e-03, +-1.411727858453740592e-03, +-1.406410338899087261e-03, +-1.401048494152860998e-03, +-1.395642549381268232e-03, +-1.390192731096331642e-03, +-1.384699267146750771e-03, +-1.379162386708698883e-03, +-1.373582320276800451e-03, +-1.367959299654865780e-03, +-1.362293557946590719e-03, +-1.356585329546417060e-03, +-1.350834850130108213e-03, +-1.345042356645433958e-03, +-1.339208087302825060e-03, +-1.333332281565880210e-03, +-1.327415180141942137e-03, +-1.321457024972643585e-03, +-1.315458059224303231e-03, +-1.309418527278399672e-03, +-1.303338674722008539e-03, +-1.297218748338105181e-03, +-1.291058996095935212e-03, +-1.284859667141304614e-03, +-1.278621011786890008e-03, +-1.272343281502401249e-03, +-1.266026728904824043e-03, +-1.259671607748635456e-03, +-1.253278172915856144e-03, +-1.246846680406198419e-03, +-1.240377387327208257e-03, +-1.233870551884205195e-03, +-1.227326433370356249e-03, +-1.220745292156716648e-03, +-1.214127389682039199e-03, +-1.207472988442884199e-03, +-1.200782351983445710e-03, +-1.194055744885322767e-03, +-1.187293432757577458e-03, +-1.180495682226381446e-03, +-1.173662760924865231e-03, +-1.166794937482936194e-03, +-1.159892481516928585e-03, +-1.152955663619357812e-03, +-1.145984755348658903e-03, +-1.138980029218765802e-03, +-1.131941758688785864e-03, +-1.124870218152663071e-03, +-1.117765682928690326e-03, +-1.110628429249121930e-03, +-1.103458734249698455e-03, +-1.096256875959229294e-03, +-1.089023133289001525e-03, +-1.081757786022297194e-03, +-1.074461114803908863e-03, +-1.067133401129470192e-03, +-1.059774927334928120e-03, +-1.052385976585980135e-03, +-1.044966832867350211e-03, +-1.037517780972201358e-03, +-1.030039106491528441e-03, +-1.022531095803295986e-03, +-1.014994036061961109e-03, +-1.007428215187642544e-03, +-9.998339218552925074e-04, +-9.922114454841575969e-04, +-9.845610762268218463e-04, +-9.768831049584880862e-04, +-9.691778232662328491e-04, +-9.614455234380709986e-04, +-9.536864984521881920e-04, +-9.459010419661369141e-04, +-9.380894483058657609e-04, +-9.302520124549044141e-04, +-9.223890300435129462e-04, +-9.145007973376844323e-04, +-9.065876112282719203e-04, +-8.986497692201181114e-04, +-8.906875694210047382e-04, +-8.827013105307699933e-04, +-8.746912918303075641e-04, +-8.666578131706672563e-04, +-8.586011749619550408e-04, +-8.505216781623951882e-04, +-8.424196242673797188e-04, +-8.342953152983453554e-04, +-8.261490537917942417e-04, +-8.179811427883309236e-04, +-8.097918858215022225e-04, +-8.015815869068038590e-04, +-7.933505505307068091e-04, +-7.850990816393778066e-04, +-7.768274856278670291e-04, +-7.685360683289115414e-04, +-7.602251360017354877e-04, +-7.518949953212293201e-04, +-7.435459533666263906e-04, +-7.351783176104986252e-04, +-7.267923959077086113e-04, +-7.183884964841890817e-04, +-7.099669279258967371e-04, +-7.015279991677578295e-04, +-6.930720194824361528e-04, +-6.845992984692816615e-04, +-6.761101460432679226e-04, +-6.676048724237571789e-04, +-6.590837881234632789e-04, +-6.505472039372838531e-04, +-6.419954309312617255e-04, +-6.334287804313536640e-04, +-6.248475640123590498e-04, +-6.162520934868660023e-04, +-6.076426808940156837e-04, +-5.990196384884407263e-04, +-5.903832787292164538e-04, +-5.817339142686288713e-04, +-5.730718579411211164e-04, +-5.643974227522754713e-04, +-5.557109218674858350e-04, +-5.470126686011248093e-04, +-5.383029764053267599e-04, +-5.295821588587784666e-04, +-5.208505296559009547e-04, +-5.121084025955464697e-04, +-5.033560915700088963e-04, +-4.945939105540206240e-04, +-4.858221735935694895e-04, +-4.770411947949065932e-04, +-4.682512883135697820e-04, +-4.594527683432175595e-04, +-4.506459491046668265e-04, +-4.418311448349313258e-04, +-4.330086697760940958e-04, +-4.241788381643801223e-04, +-4.153419642191290805e-04, +-4.064983621318995371e-04, +-3.976483460553640096e-04, +-3.887922300924204861e-04, +-3.799303282853054640e-04, +-3.710629546045264679e-04, +-3.621904229380032772e-04, +-3.533130470802178812e-04, +-3.444311407211904743e-04, +-3.355450174356526668e-04, +-3.266549906722380440e-04, +-3.177613737424974630e-04, +-3.088644798101176383e-04, +-2.999646218801749089e-04, +-2.910621127880838577e-04, +-2.821572651890765383e-04, +-2.732503915472697599e-04, +-2.643418041248705541e-04, +-2.554318149714932592e-04, +-2.465207359133792984e-04, +-2.376088785427645444e-04, +-2.286965542070517178e-04, +-2.197840739981896238e-04, +-2.108717487420765666e-04, +-2.019598889877818079e-04, +-1.930488049969875520e-04, +-1.841388067334424504e-04, +-1.752302038522455098e-04, +-1.663233056893448629e-04, +-1.574184212510731842e-04, +-1.485158592033871457e-04, +-1.396159278616411687e-04, +-1.307189351799714031e-04, +-1.218251887407079516e-04, +-1.129349957442123581e-04, +-1.040486629982233154e-04, +-9.516649690754836919e-05, +-8.628880346375612342e-05, +-7.741588823469970312e-05, +-6.854805635425640709e-05, +-5.968561251209189079e-05, +-5.082886094325584373e-05, +-4.197810541799623538e-05, +-3.313364923159705430e-05, +-2.429579519405073357e-05, +-1.546484561996956149e-05, +-6.641102318394703775e-06, + 2.175133417239181911e-06, + 1.098356081932656723e-05, + 1.978387965609399896e-05, + 2.857579024157589487e-05, + 3.735899344575398207e-05, + 4.613319070447661108e-05, + 5.489808402935040144e-05, + 6.365337601779317775e-05, + 7.239876986286759527e-05, + 8.113396936306343534e-05, + 8.985867893236808171e-05, + 9.857260360979877188e-05, + 1.072754490693069601e-04, + 1.159669216296498696e-04, + 1.246467282638319559e-04, + 1.333145766090209922e-04, + 1.419701749761142974e-04, + 1.506132323592958018e-04, + 1.592434584457509184e-04, + 1.678605636251562130e-04, + 1.764642589991399346e-04, + 1.850542563908954467e-04, + 1.936302683545738338e-04, + 2.021920081846413782e-04, + 2.107391899253936523e-04, + 2.192715283802431183e-04, + 2.277887391209755866e-04, + 2.362905384971565365e-04, + 2.447766436452975848e-04, + 2.532467724981062214e-04, + 2.617006437935804220e-04, + 2.701379770842724242e-04, + 2.785584927463274495e-04, + 2.869619119884903881e-04, + 2.953479568612558687e-04, + 3.037163502657987233e-04, + 3.120668159628676975e-04, + 3.203990785818209750e-04, + 3.287128636294461620e-04, + 3.370078974987135933e-04, + 3.452839074778038878e-04, + 3.535406217586018049e-04, + 3.617777694455424670e-04, + 3.699950805644150811e-04, + 3.781922860707375876e-04, + 3.863691178585886249e-04, + 3.945253087690807326e-04, + 4.026605925988248802e-04, + 4.107747041085313888e-04, + 4.188673790313878322e-04, + 4.269383540813956302e-04, + 4.349873669618451485e-04, + 4.430141563735710310e-04, + 4.510184620231619951e-04, + 4.590000246313102731e-04, + 4.669585859409160775e-04, + 4.748938887252755498e-04, + 4.828056767960925270e-04, + 4.906936950116624245e-04, + 4.985576892848198180e-04, + 5.063974065908500828e-04, + 5.142125949755298924e-04, + 5.220030035629505492e-04, + 5.297683825632913896e-04, + 5.375084832807306649e-04, + 5.452230581211314504e-04, + 5.529118605996566479e-04, + 5.605746453486456062e-04, + 5.682111681249677219e-04, + 5.758211858176949050e-04, + 5.834044564557391323e-04, + 5.909607392150700899e-04, + 5.984897944263479564e-04, + 6.059913835822169394e-04, + 6.134652693445843919e-04, + 6.209112155520156136e-04, + 6.283289872268973909e-04, + 6.357183505825825644e-04, + 6.430790730306304393e-04, + 6.504109231878409808e-04, + 6.577136708832383768e-04, + 6.649870871651810192e-04, + 6.722309443082358877e-04, + 6.794450158200260456e-04, + 6.866290764481879647e-04, + 6.937829021870829541e-04, + 7.009062702845844824e-04, + 7.079989592487035202e-04, + 7.150607488543382411e-04, + 7.220914201498112184e-04, + 7.290907554633709519e-04, + 7.360585384097854435e-04, + 7.429945538967281478e-04, + 7.498985881311290118e-04, + 7.567704286256091064e-04, + 7.636098642047234623e-04, + 7.704166850111276868e-04, + 7.771906825119581684e-04, + 7.839316495047332807e-04, + 7.906393801235557777e-04, + 7.973136698452215143e-04, + 8.039543154949979186e-04, + 8.105611152527244720e-04, + 8.171338686586189374e-04, + 8.236723766190512776e-04, + 8.301764414124033348e-04, + 8.366458666947349790e-04, + 8.430804575053986493e-04, + 8.494800202727394384e-04, + 8.558443628196018638e-04, + 8.621732943687790678e-04, + 8.684666255485545003e-04, + 8.747241683980334827e-04, + 8.809457363725042628e-04, + 8.871311443486598570e-04, + 8.932802086299247366e-04, + 8.993927469515809346e-04, + 9.054685784858287770e-04, + 9.115075238469614542e-04, + 9.175094050963154878e-04, + 9.234740457471753367e-04, + 9.294012707697772062e-04, + 9.352909065960940665e-04, + 9.411427811245662431e-04, + 9.469567237250022277e-04, + 9.527325652430538314e-04, + 9.584701380049278014e-04, + 9.641692758220411687e-04, + 9.698298139953369151e-04, + 9.754515893198953012e-04, + 9.810344400892657968e-04, + 9.865782060997816631e-04, + 9.920827286549035919e-04, + 9.975478505694190378e-04, + 1.002973416173564680e-03, + 1.008359271317221416e-03, + 1.013705263373931549e-03, + 1.019011241244850707e-03, + 1.024277055362774131e-03, + 1.029502557695969982e-03, + 1.034687601752027394e-03, + 1.039832042581570297e-03, + 1.044935736782055379e-03, + 1.049998542501388334e-03, + 1.055020319441472886e-03, + 1.060000928861834849e-03, + 1.064940233583064246e-03, + 1.069838097990195641e-03, + 1.074694388036153076e-03, + 1.079508971245021331e-03, + 1.084281716715261232e-03, + 1.089012495122965510e-03, + 1.093701178724963306e-03, + 1.098347641361844445e-03, + 1.102951758461111426e-03, + 1.107513407039978186e-03, + 1.112032465708343411e-03, + 1.116508814671708129e-03, + 1.120942335733794487e-03, + 1.125332912299417589e-03, + 1.129680429377082811e-03, + 1.133984773581581378e-03, + 1.138245833136584647e-03, + 1.142463497877127141e-03, + 1.146637659251979876e-03, + 1.150768210326108239e-03, + 1.154855045782940360e-03, + 1.158898061926596666e-03, + 1.162897156684146970e-03, + 1.166852229607708187e-03, + 1.170763181876549423e-03, + 1.174629916299059582e-03, + 1.178452337314769838e-03, + 1.182230350996239278e-03, + 1.185963865050850777e-03, + 1.189652788822667369e-03, + 1.193297033294118611e-03, + 1.196896511087642938e-03, + 1.200451136467348221e-03, + 1.203960825340541800e-03, + 1.207425495259162058e-03, + 1.210845065421330352e-03, + 1.214219456672589390e-03, + 1.217548591507281678e-03, + 1.220832394069843200e-03, + 1.224070790155891300e-03, + 1.227263707213453302e-03, + 1.230411074344001706e-03, + 1.233512822303459242e-03, + 1.236568883503198074e-03, + 1.239579192010915615e-03, + 1.242543683551446598e-03, + 1.245462295507600943e-03, + 1.248334966920861553e-03, + 1.251161638492013150e-03, + 1.253942252581809061e-03, + 1.256676753211479055e-03, + 1.259365086063228079e-03, + 1.262007198480642831e-03, + 1.264603039469102677e-03, + 1.267152559696074115e-03, + 1.269655711491328486e-03, + 1.272112448847195461e-03, + 1.274522727418666472e-03, + 1.276886504523458031e-03, + 1.279203739142069189e-03, + 1.281474391917721261e-03, + 1.283698425156232052e-03, + 1.285875802825937799e-03, + 1.288006490557389375e-03, + 1.290090455643119619e-03, + 1.292127667037360579e-03, + 1.294118095355558003e-03, + 1.296061712873987967e-03, + 1.297958493529267465e-03, + 1.299808412917737282e-03, + 1.301611448294881295e-03, + 1.303367578574648198e-03, + 1.305076784328686266e-03, + 1.306739047785595480e-03, + 1.308354352830043248e-03, + 1.309922685001867551e-03, + 1.311444031495120682e-03, + 1.312918381157037731e-03, + 1.314345724486955204e-03, + 1.315726053635197330e-03, + 1.317059362401852649e-03, + 1.318345646235552547e-03, + 1.319584902232137473e-03, + 1.320777129133317946e-03, + 1.321922327325251653e-03, + 1.323020498837053317e-03, + 1.324071647339277466e-03, + 1.325075778142325092e-03, + 1.326032898194792189e-03, + 1.326943016081785125e-03, + 1.327806142023155341e-03, + 1.328622287871674204e-03, + 1.329391467111203312e-03, + 1.330113694854723411e-03, + 1.330788987842383914e-03, + 1.331417364439478699e-03, + 1.331998844634317818e-03, + 1.332533450036127182e-03, + 1.333021203872819874e-03, + 1.333462130988752716e-03, + 1.333856257842414537e-03, + 1.334203612504068683e-03, + 1.334504224653327003e-03, + 1.334758125576679172e-03, + 1.334965348164972570e-03, + 1.335125926910825812e-03, + 1.335239897905995433e-03, + 1.335307298838693361e-03, + 1.335328168990832171e-03, + 1.335302549235241722e-03, + 1.335230482032818576e-03, + 1.335112011429622500e-03, + 1.334947183053914214e-03, + 1.334736044113169927e-03, + 1.334478643390998084e-03, + 1.334175031244028142e-03, + 1.333825259598761396e-03, + 1.333429381948338533e-03, + 1.332987453349282047e-03, + 1.332499530418163177e-03, + 1.331965671328227008e-03, + 1.331385935805979182e-03, + 1.330760385127708213e-03, + 1.330089082115939710e-03, + 1.329372091135884318e-03, + 1.328609478091786556e-03, + 1.327801310423250020e-03, + 1.326947657101516407e-03, + 1.326048588625663429e-03, + 1.325104177018795147e-03, + 1.324114495824145997e-03, + 1.323079620101151425e-03, + 1.321999626421471253e-03, + 1.320874592864949284e-03, + 1.319704599015543650e-03, + 1.318489725957187322e-03, + 1.317230056269622388e-03, + 1.315925674024157575e-03, + 1.314576664779401691e-03, + 1.313183115576943951e-03, + 1.311745114936967074e-03, + 1.310262752853837403e-03, + 1.308736120791639942e-03, + 1.307165311679652680e-03, + 1.305550419907783831e-03, + 1.303891541321978292e-03, + 1.302188773219540175e-03, + 1.300442214344430187e-03, + 1.298651964882541112e-03, + 1.296818126456863139e-03, + 1.294940802122661761e-03, + 1.293020096362596481e-03, + 1.291056115081764709e-03, + 1.289048965602741965e-03, + 1.286998756660528206e-03, + 1.284905598397524055e-03, + 1.282769602358364370e-03, + 1.280590881484785191e-03, + 1.278369550110422829e-03, + 1.276105723955552659e-03, + 1.273799520121794314e-03, + 1.271451057086795625e-03, + 1.269060454698826140e-03, + 1.266627834171363482e-03, + 1.264153318077657811e-03, + 1.261637030345153605e-03, + 1.259079096250011187e-03, + 1.256479642411477762e-03, + 1.253838796786223113e-03, + 1.251156688662736442e-03, + 1.248433448655534130e-03, + 1.245669208699429296e-03, + 1.242864102043738901e-03, + 1.240018263246424075e-03, + 1.237131828168194000e-03, + 1.234204933966629326e-03, + 1.231237719090155303e-03, + 1.228230323272079538e-03, + 1.225182887524551255e-03, + 1.222095554132434682e-03, + 1.218968466647229716e-03, + 1.215801769880885683e-03, + 1.212595609899620947e-03, + 1.209350134017658394e-03, + 1.206065490790956575e-03, + 1.202741830010919380e-03, + 1.199379302698000980e-03, + 1.195978061095338742e-03, + 1.192538258662336707e-03, + 1.189060050068172945e-03, + 1.185543591185306495e-03, + 1.181989039082974096e-03, + 1.178396552020560080e-03, + 1.174766289441008535e-03, + 1.171098411964224427e-03, + 1.167393081380289953e-03, + 1.163650460642861543e-03, + 1.159870713862364965e-03, + 1.156054006299164424e-03, + 1.152200504356851347e-03, + 1.148310375575298985e-03, + 1.144383788623803532e-03, + 1.140420913294190120e-03, + 1.136421920493817543e-03, + 1.132386982238607056e-03, + 1.128316271646049272e-03, + 1.124209962928106104e-03, + 1.120068231384145890e-03, + 1.115891253393859646e-03, + 1.111679206410058282e-03, + 1.107432268951529224e-03, + 1.103150620595808474e-03, + 1.098834441971982805e-03, + 1.094483914753358392e-03, + 1.090099221650178869e-03, + 1.085680546402347521e-03, + 1.081228073771984015e-03, + 1.076741989536078277e-03, + 1.072222480479102314e-03, + 1.067669734385496465e-03, + 1.063083940032221808e-03, + 1.058465287181312338e-03, + 1.053813966572214860e-03, + 1.049130169914367847e-03, + 1.044414089879560628e-03, + 1.039665920094249001e-03, + 1.034885855132055155e-03, + 1.030074090505983531e-03, + 1.025230822660772208e-03, + 1.020356248965206781e-03, + 1.015450567704311068e-03, + 1.010513978071613493e-03, + 1.005546680161382034e-03, + 1.000548874960741855e-03, + 9.955207643418668810e-04, + 9.904625510541418838e-04, + 9.853744387162107279e-04, + 9.802566318081050618e-04, + 9.751093356632819370e-04, + 9.699327564607153123e-04, + 9.647271012168377215e-04, + 9.594925777775743141e-04, + 9.542293948103555386e-04, + 9.489377617959874689e-04, + 9.436178890206282747e-04, + 9.382699875677296721e-04, + 9.328942693098521725e-04, + 9.274909469005708637e-04, + 9.220602337663724073e-04, + 9.166023440983521106e-04, + 9.111174928441763020e-04, + 9.056058956998054230e-04, + 9.000677691011814505e-04, + 8.945033302161382307e-04, + 8.889127969360583262e-04, + 8.832963878675109985e-04, + 8.776543223241176561e-04, + 8.719868203180868374e-04, + 8.662941025519472777e-04, + 8.605763904102082260e-04, + 8.548339059509340015e-04, + 8.490668718973875054e-04, + 8.432755116296690705e-04, + 8.374600491762256406e-04, + 8.316207092054559010e-04, + 8.257577170173019659e-04, + 8.198712985347126952e-04, + 8.139616802952159749e-04, + 8.080290894424101145e-04, + 8.020737537175063117e-04, + 7.960959014507400363e-04, + 7.900957615528756556e-04, + 7.840735635067089997e-04, + 7.780295373584304990e-04, + 7.719639137090982591e-04, + 7.658769237061030044e-04, + 7.597687990344968462e-04, + 7.536397719084299285e-04, + 7.474900750625995422e-04, + 7.413199417434725332e-04, + 7.351296057008325363e-04, + 7.289193011790576779e-04, + 7.226892629083808217e-04, + 7.164397260964157702e-04, + 7.101709264193303405e-04, + 7.038831000132227296e-04, + 6.975764834654804222e-04, + 6.912513138059971779e-04, + 6.849078284985137249e-04, + 6.785462654319569364e-04, + 6.721668629116212554e-04, + 6.657698596505078710e-04, + 6.593554947606233450e-04, + 6.529240077441652657e-04, + 6.464756384848308491e-04, + 6.400106272390439005e-04, + 6.335292146272634159e-04, + 6.270316416251297707e-04, + 6.205181495547575999e-04, + 6.139889800760048267e-04, + 6.074443751776164658e-04, + 6.008845771684934341e-04, + 5.943098286689637482e-04, + 5.877203726019104976e-04, + 5.811164521840289469e-04, + 5.744983109171132368e-04, + 5.678661925790867791e-04, + 5.612203412154260010e-04, + 5.545610011302659842e-04, + 5.478884168775232343e-04, + 5.412028332523002340e-04, + 5.345044952819250550e-04, + 5.277936482172163740e-04, + 5.210705375237395997e-04, + 5.143354088729195587e-04, + 5.075885081332942366e-04, + 5.008300813617724227e-04, + 4.940603747947466123e-04, + 4.872796348393572115e-04, + 4.804881080647489876e-04, + 4.736860411931917252e-04, + 4.668736810913507178e-04, + 4.600512747615535195e-04, + 4.532190693329189485e-04, + 4.463773120526464983e-04, + 4.395262502772244884e-04, + 4.326661314637179575e-04, + 4.257972031609243927e-04, + 4.189197130006590752e-04, + 4.120339086890591825e-04, + 4.051400379977358312e-04, + 3.982383487550915152e-04, + 3.913290888376291950e-04, + 3.844125061611313918e-04, + 3.774888486719866240e-04, + 3.705583643385449008e-04, + 3.636213011422263970e-04, + 3.566779070690375168e-04, + 3.497284301007847905e-04, + 3.427731182062867653e-04, + 3.358122193329186921e-04, + 3.288459813977606650e-04, + 3.218746522790085179e-04, + 3.148984798073750169e-04, + 3.079177117573507027e-04, + 3.009325958386286108e-04, + 2.939433796875278522e-04, + 2.869503108582935422e-04, + 2.799536368145437459e-04, + 2.729536049207351264e-04, + 2.659504624334856418e-04, + 2.589444564930812841e-04, + 2.519358341148838858e-04, + 2.449248421808643142e-04, + 2.379117274309715442e-04, + 2.308967364546693219e-04, + 2.238801156824832641e-04, + 2.168621113774124045e-04, + 2.098429696265062441e-04, + 2.028229363324506648e-04, + 1.958022572050234131e-04, + 1.887811777527103718e-04, + 1.817599432743553594e-04, + 1.747387988505725719e-04, + 1.677179893355776070e-04, + 1.606977593487146953e-04, + 1.536783532659995166e-04, + 1.466600152119983363e-04, + 1.396429890513185628e-04, + 1.326275183803704918e-04, + 1.256138465191267736e-04, + 1.186022165027489838e-04, + 1.115928710733831813e-04, + 1.045860526719730703e-04, + 9.758200342993907388e-05, + 9.058096516102830521e-05, + 8.358317935318291549e-05, + 7.658888716027496336e-05, + 6.959832939401281858e-05, + 6.261174651586647153e-05, + 5.562937862886168798e-05, + 4.865146546956139223e-05, + 4.167824639996744931e-05, + 3.470996039954273271e-05, + 2.774684605708660799e-05, + 2.078914156278256393e-05, + 1.383708470026656214e-05, + 6.890912838566480117e-06, +-4.913707578592772503e-08, +-6.982828526621039276e-06, +-1.390992543612590632e-05, +-2.083019217266539693e-05, +-2.774339355856376133e-05, +-3.464929487811433068e-05, +-4.154766188516390599e-05, +-4.843826081099238378e-05, +-5.532085837216674034e-05, +-6.219522177805544383e-05, +-6.906111873871813929e-05, +-7.591831747252026480e-05, +-8.276658671374057961e-05, +-8.960569572030233879e-05, +-9.643541428133037209e-05, +-1.032555127246812069e-04, +-1.100657619245988365e-04, +-1.168659333091944143e-04, +-1.236557988678968500e-04, +-1.304351311590309090e-04, +-1.372037033171992601e-04, +-1.439612890607381678e-04, +-1.507076626990466858e-04, +-1.574425991400530691e-04, +-1.641658738975048412e-04, +-1.708772630982331113e-04, +-1.775765434895319522e-04, +-1.842634924463679115e-04, +-1.909378879785556676e-04, +-1.975995087380538978e-04, +-2.042481340260857484e-04, +-2.108835438002127391e-04, +-2.175055186816232851e-04, +-2.241138399620029608e-04, +-2.307082896106800701e-04, +-2.372886502817431078e-04, +-2.438547053208198700e-04, +-2.504062387722173311e-04, +-2.569430353857779493e-04, +-2.634648806237349411e-04, +-2.699715606676703116e-04, +-2.764628624253014717e-04, +-2.829385735372370652e-04, +-2.893984823838406184e-04, +-2.958423780919223448e-04, +-3.022700505413981518e-04, +-3.086812903720562011e-04, +-3.150758889901330824e-04, +-3.214536385749574253e-04, +-3.278143320854560333e-04, +-3.341577632667929419e-04, +-3.404837266568277402e-04, +-3.467920175925417992e-04, +-3.530824322165747103e-04, +-3.593547674835782520e-04, +-3.656088211665443899e-04, +-3.718443918632335660e-04, +-3.780612790024309245e-04, +-3.842592828501668130e-04, +-3.904382045160389829e-04, +-3.965978459593645688e-04, +-4.027380099952789427e-04, +-4.088585003010300500e-04, +-4.149591214218714815e-04, +-4.210396787772009014e-04, +-4.270999786666738627e-04, +-4.331398282759865628e-04, +-4.391590356829823947e-04, +-4.451574098635047963e-04, +-4.511347606972195240e-04, +-4.570908989735368902e-04, +-4.630256363973645948e-04, +-4.689387855948216866e-04, +-4.748301601190486410e-04, +-4.806995744558443975e-04, +-4.865468440292690833e-04, +-4.923717852073391642e-04, +-4.981742153075393665e-04, +-5.039539526023775317e-04, +-5.097108163248212408e-04, +-5.154446266738409600e-04, +-5.211552048197731551e-04, +-5.268423729096598793e-04, +-5.325059540726688077e-04, +-5.381457724253405593e-04, +-5.437616530768128167e-04, +-5.493534221341171957e-04, +-5.549209067073139186e-04, +-5.604639349145882146e-04, +-5.659823358874331318e-04, +-5.714759397756634298e-04, +-5.769445777523928270e-04, +-5.823880820190882254e-04, +-5.878062858104544756e-04, +-5.931990233993579553e-04, +-5.985661301016203693e-04, +-6.039074422809192350e-04, +-6.092227973535132689e-04, +-6.145120337929350311e-04, +-6.197749911347634737e-04, +-6.250115099812222604e-04, +-6.302214320057560742e-04, +-6.354045999576603786e-04, +-6.405608576665803135e-04, +-6.456900500469258926e-04, +-6.507920231024541665e-04, +-6.558666239304962019e-04, +-6.609137007263934200e-04, +-6.659331027878739786e-04, +-6.709246805191642835e-04, +-6.758882854353462886e-04, +-6.808237701664931855e-04, +-6.857309884617664945e-04, +-6.906097951935905683e-04, +-6.954600463616633817e-04, +-7.002815990969358780e-04, +-7.050743116656409733e-04, +-7.098380434731914801e-04, +-7.145726550680096172e-04, +-7.192780081454444498e-04, +-7.239539655515225781e-04, +-7.286003912866587107e-04, +-7.332171505094309651e-04, +-7.378041095401980916e-04, +-7.423611358647298156e-04, +-7.468880981377335306e-04, +-7.513848661864549333e-04, +-7.558513110141166797e-04, +-7.602873048033330795e-04, +-7.646927209195589431e-04, +-7.690674339144149387e-04, +-7.734113195289488716e-04, +-7.777242546969679801e-04, +-7.820061175482145637e-04, +-7.862567874114939062e-04, +-7.904761448179203768e-04, +-7.946640715038440174e-04, +-7.988204504139658890e-04, +-8.029451657043791503e-04, +-8.070381027453751898e-04, +-8.110991481244583584e-04, +-8.151281896491629434e-04, +-8.191251163498158242e-04, +-8.230898184823724198e-04, +-8.270221875310948849e-04, +-8.309221162111916003e-04, +-8.347894984715085965e-04, +-8.386242294970661527e-04, +-8.424262057115749049e-04, +-8.461953247799755898e-04, +-8.499314856108412027e-04, +-8.536345883587958530e-04, +-8.573045344268170670e-04, +-8.609412264686017342e-04, +-8.645445683908025997e-04, +-8.681144653551939577e-04, +-8.716508237809084689e-04, +-8.751535513465194798e-04, +-8.786225569920904895e-04, +-8.820577509212572517e-04, +-8.854590446031705567e-04, +-8.888263507744094145e-04, +-8.921595834409556036e-04, +-8.954586578799268769e-04, +-8.987234906414228158e-04, +-9.019539995503202687e-04, +-9.051501037078724414e-04, +-9.083117234934525103e-04, +-9.114387805661303783e-04, +-9.145311978662115909e-04, +-9.175888996168072610e-04, +-9.206118113252717214e-04, +-9.235998597846069996e-04, +-9.265529730748901707e-04, +-9.294710805645713635e-04, +-9.323541129117488913e-04, +-9.352020020654370092e-04, +-9.380146812667520314e-04, +-9.407920850500130130e-04, +-9.435341492439080265e-04, +-9.462408109724991089e-04, +-9.489120086562512777e-04, +-9.515476820129577891e-04, +-9.541477720587016086e-04, +-9.567122211086919814e-04, +-9.592409727780684767e-04, +-9.617339719827181508e-04, +-9.641911649399729058e-04, +-9.666124991692828881e-04, +-9.689979234928709122e-04, +-9.713473880363282303e-04, +-9.736608442291015556e-04, +-9.759382448050748452e-04, +-9.781795438029358691e-04, +-9.803846965666057709e-04, +-9.825536597456499804e-04, +-9.846863912954841036e-04, +-9.867828504777338781e-04, +-9.888429978604069102e-04, +-9.908667953180511859e-04, +-9.928542060319244227e-04, +-9.948051944900465453e-04, +-9.967197264872257063e-04, +-9.985977691250706462e-04, +-1.000439290811920871e-03, +-1.002244261262728257e-03, +-1.004012651498933885e-03, +-1.005744433848253586e-03, +-1.007439581944457197e-03, +-1.009098070727040049e-03, +-1.010719876440943675e-03, +-1.012304976636147500e-03, +-1.013853350167237110e-03, +-1.015364977192958216e-03, +-1.016839839175703603e-03, +-1.018277918880916393e-03, +-1.019679200376535791e-03, +-1.021043669032315349e-03, +-1.022371311519126684e-03, +-1.023662115808248027e-03, +-1.024916071170539796e-03, +-1.026133168175637732e-03, +-1.027313398691084238e-03, +-1.028456755881388806e-03, +-1.029563234207076959e-03, +-1.030632829423679120e-03, +-1.031665538580666579e-03, +-1.032661360020375963e-03, +-1.033620293376845672e-03, +-1.034542339574627372e-03, +-1.035427500827582102e-03, +-1.036275780637578364e-03, +-1.037087183793175462e-03, +-1.037861716368275629e-03, +-1.038599385720700681e-03, +-1.039300200490756105e-03, +-1.039964170599718156e-03, +-1.040591307248313162e-03, +-1.041181622915129598e-03, +-1.041735131354980725e-03, +-1.042251847597259638e-03, +-1.042731787944210830e-03, +-1.043174969969173568e-03, +-1.043581412514797734e-03, +-1.043951135691195686e-03, +-1.044284160874050767e-03, +-1.044580510702703248e-03, +-1.044840209078177519e-03, +-1.045063281161165902e-03, +-1.045249753369979946e-03, +-1.045399653378462253e-03, +-1.045513010113816770e-03, +-1.045589853754478769e-03, +-1.045630215727840623e-03, +-1.045634128708029841e-03, +-1.045601626613570445e-03, +-1.045532744605060394e-03, +-1.045427519082770939e-03, +-1.045285987684217797e-03, +-1.045108189281689385e-03, +-1.044894163979737329e-03, +-1.044643953112622510e-03, +-1.044357599241716459e-03, +-1.044035146152874540e-03, +-1.043676638853751693e-03, +-1.043282123571096258e-03, +-1.042851647747981142e-03, +-1.042385260041021541e-03, +-1.041883010317524788e-03, +-1.041344949652629141e-03, +-1.040771130326378609e-03, +-1.040161605820758743e-03, +-1.039516430816723102e-03, +-1.038835661191144693e-03, +-1.038119354013733366e-03, +-1.037367567543953217e-03, +-1.036580361227832205e-03, +-1.035757795694809301e-03, +-1.034899932754482091e-03, +-1.034006835393333360e-03, +-1.033078567771453758e-03, +-1.032115195219177961e-03, +-1.031116784233694367e-03, +-1.030083402475655014e-03, +-1.029015118765692688e-03, +-1.027912003080923287e-03, +-1.026774126551441464e-03, +-1.025601561456726063e-03, +-1.024394381222034495e-03, +-1.023152660414776947e-03, +-1.021876474740819911e-03, +-1.020565901040774949e-03, +-1.019221017286238689e-03, +-1.017841902576026520e-03, +-1.016428637132312180e-03, +-1.014981302296791635e-03, +-1.013499980526782118e-03, +-1.011984755391283873e-03, +-1.010435711567006338e-03, +-1.008852934834389556e-03, +-1.007236512073532127e-03, +-1.005586531260141935e-03, +-1.003903081461424412e-03, +-1.002186252831929617e-03, +-1.000436136609384559e-03, +-9.986528251104910461e-04, +-9.968364117266456919e-04, +-9.949869909197100060e-04, +-9.931046582176681660e-04, +-9.911895102102659220e-04, +-9.892416445446826790e-04, +-9.872611599210667516e-04, +-9.852481560881189756e-04, +-9.832027338386147355e-04, +-9.811249950048769874e-04, +-9.790150424542468956e-04, +-9.768729800845134866e-04, +-9.746989128192940811e-04, +-9.724929466033987871e-04, +-9.702551883981759117e-04, +-9.679857461767852733e-04, +-9.656847289194843073e-04, +-9.633522466088544327e-04, +-9.609884102250294781e-04, +-9.585933317408363956e-04, +-9.561671241169576599e-04, +-9.537099012970576706e-04, +-9.512217782028455125e-04, +-9.487028707291379325e-04, +-9.461532957389022589e-04, +-9.435731710582193066e-04, +-9.409626154712719777e-04, +-9.383217487152996014e-04, +-9.356506914754482993e-04, +-9.329495653797184943e-04, +-9.302184929937970612e-04, +-9.274575978158340747e-04, +-9.246670042713208207e-04, +-9.218468377077907588e-04, +-9.189972243895846689e-04, +-9.161182914925853314e-04, +-9.132101670988634120e-04, +-9.102729801913593414e-04, +-9.073068606485362470e-04, +-9.043119392389385594e-04, +-9.012883476158068882e-04, +-8.982362183116377125e-04, +-8.951556847326868011e-04, +-8.920468811534831496e-04, +-8.889099427113010673e-04, +-8.857450054006482014e-04, +-8.825522060676369018e-04, +-8.793316824044129397e-04, +-8.760835729435631925e-04, +-8.728080170524128495e-04, +-8.695051549273914628e-04, +-8.661751275883468500e-04, +-8.628180768727989301e-04, +-8.594341454302085234e-04, +-8.560234767162485346e-04, +-8.525862149869356012e-04, +-8.491225052929162386e-04, +-8.456324934735877548e-04, +-8.421163261512045264e-04, +-8.385741507250963830e-04, +-8.350061153656844612e-04, +-8.314123690086001666e-04, +-8.277930613487567571e-04, +-8.241483428343486083e-04, +-8.204783646608863673e-04, +-8.167832787652278773e-04, +-8.130632378194886482e-04, +-8.093183952250334245e-04, +-8.055489051064373962e-04, +-8.017549223053490725e-04, +-7.979366023744099675e-04, +-7.940941015711598661e-04, +-7.902275768518467886e-04, +-7.863371858652950684e-04, +-7.824230869467139072e-04, +-7.784854391115291318e-04, +-7.745244020491238784e-04, +-7.705401361166203675e-04, +-7.665328023326656911e-04, +-7.625025623711080948e-04, +-7.584495785547311570e-04, +-7.543740138489842808e-04, +-7.502760318556131154e-04, +-7.461557968063408253e-04, +-7.420134735565646475e-04, +-7.378492275788789759e-04, +-7.336632249568144195e-04, +-7.294556323783818116e-04, +-7.252266171296103655e-04, +-7.209763470882260160e-04, +-7.167049907171195357e-04, +-7.124127170579132046e-04, +-7.080996957245257444e-04, +-7.037660968966224367e-04, +-6.994120913131502424e-04, +-6.950378502658434302e-04, +-6.906435455926471321e-04, +-6.862293496711998784e-04, +-6.817954354123171093e-04, +-6.773419762533485931e-04, +-6.728691461516917533e-04, +-6.683771195780882635e-04, +-6.638660715101387831e-04, +-6.593361774256499682e-04, +-6.547876132959252115e-04, +-6.502205555792787278e-04, +-6.456351812142635191e-04, +-6.410316676130697758e-04, +-6.364101926548730798e-04, +-6.317709346790990150e-04, +-6.271140724787720210e-04, +-6.224397852938416947e-04, +-6.177482528044181279e-04, +-6.130396551240857410e-04, +-6.083141727932062743e-04, +-6.035719867721291891e-04, +-5.988132784344822991e-04, +-5.940382295604081922e-04, +-5.892470223298478145e-04, +-5.844398393157047931e-04, +-5.796168634771106968e-04, +-5.747782781526720834e-04, +-5.699242670536212689e-04, +-5.650550142570497135e-04, +-5.601707041991507317e-04, +-5.552715216683341577e-04, +-5.503576517984547440e-04, +-5.454292800620228875e-04, +-5.404865922633174521e-04, +-5.355297745315843513e-04, +-5.305590133142541048e-04, +-5.255744953699736715e-04, +-5.205764077619130185e-04, +-5.155649378508469355e-04, +-5.105402732882350064e-04, +-5.055026020095174447e-04, +-5.004521122271284950e-04, +-4.953889924236790782e-04, +-4.903134313451270763e-04, +-4.852256179938381681e-04, +-4.801257416217534577e-04, +-4.750139917235496768e-04, +-4.698905580296915629e-04, +-4.647556304995963442e-04, +-4.596093993147826119e-04, +-4.544520548719284988e-04, +-4.492837877760317189e-04, +-4.441047888335062353e-04, +-4.389152490453525454e-04, +-4.337153596001922786e-04, +-4.285053118674351743e-04, +-4.232852973904220996e-04, +-4.180555078794770483e-04, +-4.128161352050583981e-04, +-4.075673713909169988e-04, +-4.023094086071427500e-04, +-3.970424391633220387e-04, +-3.917666555017125778e-04, +-3.864822501902346902e-04, +-3.811894159157528327e-04, +-3.758883454771375695e-04, +-3.705792317783217996e-04, +-3.652622678215956711e-04, +-3.599376467006085980e-04, +-3.546055615935619345e-04, +-3.492662057563908611e-04, +-3.439197725158356280e-04, +-3.385664552626355844e-04, +-3.332064474447201177e-04, +-3.278399425602990334e-04, +-3.224671341510608664e-04, +-3.170882157953855592e-04, +-3.117033811014453034e-04, +-3.063128237004334267e-04, +-3.009167372397281181e-04, +-2.955153153761375779e-04, +-2.901087517690214049e-04, +-2.846972400735334153e-04, +-2.792809739338741643e-04, +-2.738601469764329337e-04, +-2.684349528030499036e-04, +-2.630055849842917134e-04, +-2.575722370526098209e-04, +-2.521351024956329772e-04, +-2.466943747494730371e-04, +-2.412502471918466995e-04, +-2.358029131355176286e-04, +-2.303525658215004046e-04, +-2.248993984122740948e-04, +-2.194436039852368985e-04, +-2.139853755259360903e-04, +-2.085249059213123023e-04, +-2.030623879531936332e-04, +-1.975980142914925510e-04, +-1.921319774876060560e-04, +-1.866644699678138384e-04, +-1.811956840265718913e-04, +-1.757258118199292354e-04, +-1.702550453589622888e-04, +-1.647835765030968317e-04, +-1.593115969535642237e-04, +-1.538392982468665096e-04, +-1.483668717481367665e-04, +-1.428945086446425363e-04, +-1.374223999392225001e-04, +-1.319507364438163657e-04, +-1.264797087728732712e-04, +-1.210095073368948457e-04, +-1.155403223359896954e-04, +-1.100723437533229792e-04, +-1.046057613486993143e-04, +-9.914076465215889539e-05, +-9.367754295746940827e-05, +-8.821628531575050123e-05, +-8.275718052912717714e-05, +-7.730041714419935912e-05, +-7.184618344584266648e-05, +-6.639466745077478619e-05, +-6.094605690113776166e-05, +-5.550053925834408836e-05, +-5.005830169662453858e-05, +-4.461953109678957406e-05, +-3.918441403999252718e-05, +-3.375313680139212756e-05, +-2.832588534394949684e-05, +-2.290284531224215863e-05, +-1.748420202617706522e-05, +-1.207014047483894625e-05, +-6.660845310356076629e-06, +-1.256500841665996954e-06, + 4.142708971569870839e-06, + 9.536600525112154351e-06, + 1.492499057619274568e-05, + 2.030769624967599987e-05, + 2.568453504408354536e-05, + 3.105532483760099782e-05, + 3.641988389418168801e-05, + 4.177803086951488985e-05, + 4.712958481697404487e-05, + 5.247436519366268352e-05, + 5.781219186632302208e-05, + 6.314288511721191828e-05, + 6.846626565015140385e-05, + 7.378215459624679388e-05, + 7.909037351983140118e-05, + 8.439074442438941083e-05, + 8.968308975821263722e-05, + 9.496723242034604481e-05, + 1.002429957663184478e-04, + 1.055102036138641974e-04, + 1.107686802487392895e-04, + 1.160182504303993719e-04, + 1.212587393976569491e-04, + 1.264899728744298352e-04, + 1.317117770753533778e-04, + 1.369239787113688423e-04, + 1.421264049954059868e-04, + 1.473188836479250561e-04, + 1.525012429024379188e-04, + 1.576733115111194098e-04, + 1.628349187502669388e-04, + 1.679858944258158266e-04, + 1.731260688787515884e-04, + 1.782552729906257849e-04, + 1.833733381889341807e-04, + 1.884800964524708860e-04, + 1.935753803167702394e-04, + 1.986590228794117541e-04, + 2.037308578053001560e-04, + 2.087907193320324008e-04, + 2.138384422751280010e-04, + 2.188738620332202132e-04, + 2.238968145934106143e-04, + 2.289071365362968448e-04, + 2.339046650412136428e-04, + 2.388892378914447931e-04, + 2.438606934791750038e-04, + 2.488188708107133486e-04, + 2.537636095115039341e-04, + 2.586947498311209276e-04, + 2.636121326483504570e-04, + 2.685155994761332710e-04, + 2.734049924664817052e-04, + 2.782801544154755221e-04, + 2.831409287681265646e-04, + 2.879871596232135922e-04, + 2.928186917381939342e-04, + 2.976353705339744127e-04, + 3.024370420997210258e-04, + 3.072235531975709452e-04, + 3.119947512674359647e-04, + 3.167504844316666301e-04, + 3.214906014996939251e-04, + 3.262149519727448464e-04, + 3.309233860484240793e-04, + 3.356157546252652073e-04, + 3.402919093073620985e-04, + 3.449517024088623275e-04, + 3.495949869584225956e-04, + 3.542216167038053686e-04, + 3.588314461161693360e-04, + 3.634243303945546466e-04, + 3.680001254703288969e-04, + 3.725586880113943228e-04, + 3.770998754266320532e-04, + 3.816235458701503934e-04, + 3.861295582455114245e-04, + 3.906177722100302447e-04, + 3.950880481789426427e-04, + 3.995402473295382923e-04, + 4.039742316053696806e-04, + 4.083898637203266474e-04, + 4.127870071626776947e-04, + 4.171655261991858896e-04, + 4.215252858790878858e-04, + 4.258661520380436181e-04, + 4.301879913021596684e-04, + 4.344906710918574277e-04, + 4.387740596257891259e-04, + 4.430380259246505920e-04, + 4.472824398150707201e-04, + 4.515071719333702905e-04, + 4.557120937292936848e-04, + 4.598970774697981189e-04, + 4.640619962427209016e-04, + 4.682067239604121634e-04, + 4.723311353634274861e-04, + 4.764351060240935181e-04, + 4.805185123500354269e-04, + 4.845812315878257810e-04, + 4.886231418263460103e-04, + 4.926441220003196586e-04, + 4.966440518938045447e-04, + 5.006228121434661308e-04, + 5.045802842420517948e-04, + 5.085163505416884309e-04, + 5.124308942571550052e-04, + 5.163237994692042266e-04, + 5.201949511277739529e-04, + 5.240442350551527363e-04, + 5.278715379492098783e-04, + 5.316767473864941881e-04, + 5.354597518253069368e-04, + 5.392204406088238174e-04, + 5.429587039680883187e-04, + 5.466744330250291684e-04, + 5.503675197953786799e-04, + 5.540378571916648254e-04, + 5.576853390260723365e-04, + 5.613098600132774597e-04, + 5.649113157733260792e-04, + 5.684896028344019019e-04, + 5.720446186355427091e-04, + 5.755762615294334784e-04, + 5.790844307850486926e-04, + 5.825690265902807707e-04, + 5.860299500546479719e-04, + 5.894671032117649668e-04, + 5.928803890219376581e-04, + 5.962697113747352342e-04, + 5.996349750913461396e-04, + 6.029760859271178193e-04, + 6.062929505739329643e-04, + 6.095854766625461840e-04, + 6.128535727649765154e-04, + 6.160971483967860908e-04, + 6.193161140193128352e-04, + 6.225103810419527119e-04, + 6.256798618243304038e-04, + 6.288244696784329145e-04, + 6.319441188707793826e-04, + 6.350387246244833424e-04, + 6.381082031213075037e-04, + 6.411524715036643219e-04, + 6.441714478766291446e-04, + 6.471650513098705249e-04, + 6.501332018395310957e-04, + 6.530758204701513775e-04, + 6.559928291764805051e-04, + 6.588841509052539933e-04, + 6.617497095770068487e-04, + 6.645894300877820552e-04, + 6.674032383107944989e-04, + 6.701910610981423816e-04, + 6.729528262823973117e-04, + 6.756884626781701087e-04, + 6.783979000837320108e-04, + 6.810810692824369314e-04, + 6.837379020442409683e-04, + 6.863683311271892790e-04, + 6.889722902787230856e-04, + 6.915497142371327234e-04, + 6.941005387328573820e-04, + 6.966247004897616448e-04, + 6.991221372264366405e-04, + 7.015927876574044831e-04, + 7.040365914942878006e-04, + 7.064534894469953101e-04, + 7.088434232248260781e-04, + 7.112063355375188110e-04, + 7.135421700963402855e-04, + 7.158508716150683952e-04, + 7.181323858109666313e-04, + 7.203866594057007754e-04, + 7.226136401262718556e-04, + 7.248132767058608483e-04, + 7.269855188846295786e-04, + 7.291303174105546884e-04, + 7.312476240401567622e-04, + 7.333373915392041916e-04, + 7.353995736834247369e-04, + 7.374341252591368580e-04, + 7.394410020638285700e-04, + 7.414201609067992910e-04, + 7.433715596096182425e-04, + 7.452951570066621055e-04, + 7.471909129456056221e-04, + 7.490587882877828511e-04, + 7.508987449086383052e-04, + 7.527107456980605595e-04, + 7.544947545606843107e-04, + 7.562507364162082647e-04, + 7.579786571996227108e-04, + 7.596784838614114004e-04, + 7.613501843677586292e-04, + 7.629937277006503937e-04, + 7.646090838580184811e-04, + 7.661962238537797180e-04, + 7.677551197178618825e-04, + 7.692857444962511925e-04, + 7.707880722508854031e-04, + 7.722620780596120647e-04, + 7.737077380161091599e-04, + 7.751250292296649018e-04, + 7.765139298250676872e-04, + 7.778744189423480570e-04, + 7.792064767365317144e-04, + 7.805100843773641380e-04, + 7.817852240489829357e-04, + 7.830318789495419518e-04, + 7.842500332908374340e-04, + 7.854396722978802077e-04, + 7.866007822084016042e-04, + 7.877333502723910495e-04, + 7.888373647515349888e-04, + 7.899128149186553788e-04, + 7.909596910571057866e-04, + 7.919779844601335540e-04, + 7.929676874301979424e-04, + 7.939287932782540178e-04, + 7.948612963230295954e-04, + 7.957651918902326890e-04, + 7.966404763117262153e-04, + 7.974871469247019409e-04, + 7.983052020707870995e-04, + 7.990946410951118694e-04, + 7.998554643453875852e-04, + 8.005876731708947433e-04, + 8.012912699214730676e-04, + 8.019662579464677732e-04, + 8.026126415936325710e-04, + 8.032304262080092530e-04, + 8.038196181307850517e-04, + 8.043802246980747556e-04, + 8.049122542397163776e-04, + 8.054157160780107700e-04, + 8.058906205264146187e-04, + 8.063369788882313776e-04, + 8.067548034552441977e-04, + 8.071441075063179576e-04, + 8.075049053059850292e-04, + 8.078372121029805215e-04, + 8.081410441287377325e-04, + 8.084164185958818676e-04, + 8.086633536966562116e-04, + 8.088818686013411448e-04, + 8.090719834566152636e-04, + 8.092337193839120547e-04, + 8.093670984777242032e-04, + 8.094721438038737478e-04, + 8.095488793977691179e-04, + 8.095973302626120792e-04, + 8.096175223675689024e-04, + 8.096094826459341578e-04, + 8.095732389932340121e-04, + 8.095088202653166233e-04, + 8.094162562763975409e-04, + 8.092955777970859159e-04, + 8.091468165523677761e-04, + 8.089700052195641488e-04, + 8.087651774262582822e-04, + 8.085323677481871980e-04, + 8.082716117071006090e-04, + 8.079829457685973933e-04, + 8.076664073399224958e-04, + 8.073220347677394345e-04, + 8.069498673358594396e-04, + 8.065499452629619178e-04, + 8.061223097002577801e-04, + 8.056670027291479991e-04, + 8.051840673588278466e-04, + 8.046735475238796405e-04, + 8.041354880818228808e-04, + 8.035699348106476901e-04, + 8.029769344062965370e-04, + 8.023565344801446590e-04, + 8.017087835564225880e-04, + 8.010337310696298953e-04, + 8.003314273619051332e-04, + 7.996019236803823338e-04, + 7.988452721744976337e-04, + 7.980615258932864664e-04, + 7.972507387826368447e-04, + 7.964129656825282228e-04, + 7.955482623242176666e-04, + 7.946566853274374077e-04, + 7.937382921975122754e-04, + 7.927931413224972943e-04, + 7.918212919702607468e-04, + 7.908228042855317821e-04, + 7.897977392869490014e-04, + 7.887461588640586269e-04, + 7.876681257742840486e-04, + 7.865637036398866969e-04, + 7.854329569448789943e-04, + 7.842759510319227776e-04, + 7.830927520991912919e-04, + 7.818834271972155718e-04, + 7.806480442256898394e-04, + 7.793866719302669282e-04, + 7.780993798993106640e-04, + 7.767862385606291633e-04, + 7.754473191781839549e-04, + 7.740826938487735138e-04, + 7.726924354986823172e-04, + 7.712766178803085425e-04, + 7.698353155687750679e-04, + 7.683686039584927685e-04, + 7.668765592597292331e-04, + 7.653592584951234880e-04, + 7.638167794961861923e-04, + 7.622492008997814022e-04, + 7.606566021445830723e-04, + 7.590390634674799505e-04, + 7.573966658999979271e-04, + 7.557294912646853047e-04, + 7.540376221714233671e-04, + 7.523211420138068784e-04, + 7.505801349654176802e-04, + 7.488146859761091309e-04, + 7.470248807682772088e-04, + 7.452108058330804419e-04, + 7.433725484266520299e-04, + 7.415101965663034025e-04, + 7.396238390266588218e-04, + 7.377135653358222935e-04, + 7.357794657714921121e-04, + 7.338216313570454811e-04, + 7.318401538576178216e-04, + 7.298351257761545412e-04, + 7.278066403494536964e-04, + 7.257547915441482644e-04, + 7.236796740526988238e-04, + 7.215813832893810302e-04, + 7.194600153861954641e-04, + 7.173156671888024144e-04, + 7.151484362524373637e-04, + 7.129584208377604459e-04, + 7.107457199067274784e-04, + 7.085104331184505872e-04, + 7.062526608249720950e-04, + 7.039725040670914268e-04, + 7.016700645701501662e-04, + 6.993454447397392647e-04, + 6.969987476574989512e-04, + 6.946300770768122808e-04, + 6.922395374184635557e-04, + 6.898272337663859761e-04, + 6.873932718632741988e-04, + 6.849377581062314826e-04, + 6.824607995424156410e-04, + 6.799625038646101840e-04, + 6.774429794068226752e-04, + 6.749023351398709437e-04, + 6.723406806668944880e-04, + 6.697581262189100052e-04, + 6.671547826503297337e-04, + 6.645307614344314389e-04, + 6.618861746588575656e-04, + 6.592211350210664669e-04, + 6.565357558237893808e-04, + 6.538301509704408940e-04, + 6.511044349605316821e-04, + 6.483587228850827685e-04, + 6.455931304219723454e-04, + 6.428077738313162049e-04, + 6.400027699508201986e-04, + 6.371782361910900867e-04, + 6.343342905309513630e-04, + 6.314710515127771023e-04, + 6.285886382377061949e-04, + 6.256871703609873494e-04, + 6.227667680871986277e-04, + 6.198275521654534291e-04, + 6.168696438846962447e-04, + 6.138931650688516121e-04, + 6.108982380720437595e-04, + 6.078849857738000953e-04, + 6.048535315741740328e-04, + 6.018039993889274467e-04, + 5.987365136446873249e-04, + 5.956511992740372600e-04, + 5.925481817106480805e-04, + 5.894275868844089158e-04, + 5.862895412164641521e-04, + 5.831341716143296442e-04, + 5.799616054669383446e-04, + 5.767719706397206282e-04, + 5.735653954696080716e-04, + 5.703420087600790831e-04, + 5.671019397761962923e-04, + 5.638453182395781289e-04, + 5.605722743234096495e-04, + 5.572829386474481604e-04, + 5.539774422729585842e-04, + 5.506559166976907841e-04, + 5.473184938508689245e-04, + 5.439653060880461719e-04, + 5.405964861861393750e-04, + 5.372121673383002454e-04, + 5.338124831487895761e-04, + 5.303975676279690937e-04, + 5.269675551871457527e-04, + 5.235225806334174378e-04, + 5.200627791646430251e-04, + 5.165882863642302968e-04, + 5.130992381960214344e-04, + 5.095957709991694043e-04, + 5.060780214829311858e-04, + 5.025461267215298447e-04, + 4.990002241489996946e-04, + 4.954404515539628275e-04, + 4.918669470744596378e-04, + 4.882798491927809186e-04, + 4.846792967302175582e-04, + 4.810654288418840172e-04, + 4.774383850114784873e-04, + 4.737983050461042544e-04, + 4.701453290709878448e-04, + 4.664795975242650968e-04, + 4.628012511517678833e-04, + 4.591104310017354818e-04, + 4.554072784195751134e-04, + 4.516919350426390695e-04, + 4.479645427949119590e-04, + 4.442252438817632780e-04, + 4.404741807847180855e-04, + 4.367114962560791447e-04, + 4.329373333137633549e-04, + 4.291518352359646044e-04, + 4.253551455558110929e-04, + 4.215474080561872907e-04, + 4.177287667643441523e-04, + 4.138993659466307074e-04, + 4.100593501032241879e-04, + 4.062088639627654493e-04, + 4.023480524770779851e-04, + 3.984770608158919817e-04, + 3.945960343614649413e-04, + 3.907051187033032435e-04, + 3.868044596328656546e-04, + 3.828942031381954978e-04, + 3.789744953986290410e-04, + 3.750454827794597588e-04, + 3.711073118266491064e-04, + 3.671601292614462206e-04, + 3.632040819750935977e-04, + 3.592393170235192194e-04, + 3.552659816219668788e-04, + 3.512842231396859751e-04, + 3.472941890946343183e-04, + 3.432960271480985895e-04, + 3.392898850993909658e-04, + 3.352759108805616287e-04, + 3.312542525509678875e-04, + 3.272250582920719600e-04, + 3.231884764020604025e-04, + 3.191446552904624555e-04, + 3.150937434729509691e-04, + 3.110358895659198200e-04, + 3.069712422812003231e-04, + 3.028999504207764508e-04, + 2.988221628714084915e-04, + 2.947380285993509244e-04, + 2.906476966450733312e-04, + 2.865513161178917523e-04, + 2.824490361906951269e-04, + 2.783410060946716800e-04, + 2.742273751139537763e-04, + 2.701082925803509208e-04, + 2.659839078680851978e-04, + 2.618543703884510334e-04, + 2.577198295845655970e-04, + 2.535804349260690040e-04, + 2.494363359038927696e-04, + 2.452876820249253170e-04, + 2.411346228067783439e-04, + 2.369773077725528365e-04, + 2.328158864455248255e-04, + 2.286505083439224859e-04, + 2.244813229757127511e-04, + 2.203084798332983715e-04, + 2.161321283883147469e-04, + 2.119524180864417481e-04, + 2.077694983420694426e-04, + 2.035835185332142427e-04, + 1.993946279962468919e-04, + 1.952029760206311837e-04, + 1.910087118438572409e-04, + 1.868119846461404178e-04, + 1.826129435452815311e-04, + 1.784117375915205046e-04, + 1.742085157623095390e-04, + 1.700034269571836702e-04, + 1.657966199926384830e-04, + 1.615882435969271606e-04, + 1.573784464049535398e-04, + 1.531673769531766865e-04, + 1.489551836744313089e-04, + 1.447420148928568089e-04, + 1.405280188187795496e-04, + 1.363133435436576270e-04, + 1.320981370349393394e-04, + 1.278825471310213494e-04, + 1.236667215362126729e-04, + 1.194508078156219339e-04, + 1.152349533901436213e-04, + 1.110193055314539801e-04, + 1.068040113569272828e-04, + 1.025892178246517924e-04, + 9.837507172846837213e-05, + 9.416171969286832473e-05, + 8.994930816814143877e-05, + 8.573798342534791968e-05, + 8.152789155129717849e-05, + 7.731917844373348628e-05, + 7.311198980628809147e-05, + 6.890647114359636631e-05, + 6.470276775641560377e-05, + 6.050102473665496032e-05, + 5.630138696256780528e-05, + 5.210399909380643079e-05, + 4.790900556658911222e-05, + 4.371655058888034159e-05, + 3.952677813549303914e-05, + 3.533983194329480765e-05, + 3.115585550642686511e-05, + 2.697499207144599906e-05, + 2.279738463257082799e-05, + 1.862317592695097657e-05, + 1.445250842980009386e-05, + 1.028552434978355900e-05, + 6.122365624229527987e-06, + 1.963173914354139532e-06, +-2.191909399307805455e-06, +-6.342743221698878667e-06, +-1.048918674786956803e-05, +-1.463109946760408130e-05, +-1.876834117012134975e-05, +-2.290077194867067017e-05, +-2.702825220511210672e-05, +-3.115064265457150446e-05, +-3.526780432998958143e-05, +-3.937959858665561496e-05, +-4.348588710681530083e-05, +-4.758653190416223022e-05, +-5.168139532837312094e-05, +-5.577034006956731714e-05, +-5.985322916284904076e-05, +-6.392992599274387232e-05, +-6.800029429761756587e-05, +-7.206419817416877282e-05, +-7.612150208181388072e-05, +-8.017207084705626672e-05, +-8.421576966792508904e-05, +-8.825246411831133672e-05, +-9.228202015227184116e-05, +-9.630430410846711894e-05, +-1.003191827143430040e-04, +-1.043265230904824321e-04, +-1.083261927549382646e-04, +-1.123180596273612263e-04, +-1.163019920333456850e-04, +-1.202778587086088317e-04, +-1.242455288031627035e-04, +-1.282048718855528042e-04, +-1.321557579469925879e-04, +-1.360980574054779105e-04, +-1.400316411099682427e-04, +-1.439563803444644352e-04, +-1.478721468320641497e-04, +-1.517788127390868962e-04, +-1.556762506790810815e-04, +-1.595643337168700345e-04, +-1.634429353725202680e-04, +-1.673119296253876124e-04, +-1.711711909180511893e-04, +-1.750205941602354584e-04, +-1.788600147327902427e-04, +-1.826893284915673743e-04, +-1.865084117712798853e-04, +-1.903171413894207207e-04, +-1.941153946500767181e-04, +-1.979030493477156982e-04, +-2.016799837710877500e-04, +-2.054460767068859580e-04, +-2.092012074435604897e-04, +-2.129452557751097797e-04, +-2.166781020046869115e-04, +-2.203996269483478397e-04, +-2.241097119387793922e-04, +-2.278082388288294596e-04, +-2.314950899952372199e-04, +-2.351701483422017356e-04, +-2.388332973049388144e-04, +-2.424844208532982604e-04, +-2.461234034952754419e-04, +-2.497501302805005523e-04, +-2.533644868037883153e-04, +-2.569663592085805431e-04, +-2.605556341903700747e-04, +-2.641321990001794921e-04, +-2.676959414479296285e-04, +-2.712467499058333919e-04, +-2.747845133117211218e-04, +-2.783091211724257933e-04, +-2.818204635670651143e-04, +-2.853184311503021548e-04, +-2.888029151556634395e-04, +-2.922738073987491076e-04, +-2.957310002804216056e-04, +-2.991743867900526020e-04, +-3.026038605086632700e-04, +-3.060193156120324790e-04, +-3.094206468739132423e-04, +-3.128077496690150321e-04, +-3.161805199761264450e-04, +-3.195388543812149895e-04, +-3.228826500803346454e-04, +-3.262118048827233213e-04, +-3.295262172137374641e-04, +-3.328257861177762070e-04, +-3.361104112612581544e-04, +-3.393799929354906694e-04, +-3.426344320595245234e-04, +-3.458736301830481197e-04, +-3.490974894891895057e-04, +-3.523059127972889490e-04, +-3.554988035657231753e-04, +-3.586760658946206988e-04, +-3.618376045285989447e-04, +-3.649833248594339346e-04, +-3.681131329287763211e-04, +-3.712269354307747233e-04, +-3.743246397146759150e-04, +-3.774061537874640981e-04, +-3.804713863164073677e-04, +-3.835202466315781032e-04, +-3.865526447284191119e-04, +-3.895684912702074244e-04, +-3.925676975904945627e-04, +-3.955501756956266053e-04, +-3.985158382670605311e-04, +-4.014645986637956510e-04, +-4.043963709247800492e-04, +-4.073110697711497855e-04, +-4.102086106086150078e-04, +-4.130889095297162849e-04, +-4.159518833160564914e-04, +-4.187974494405718312e-04, +-4.216255260697148247e-04, +-4.244360320656046610e-04, +-4.272288869882246592e-04, +-4.300040110975179766e-04, +-4.327613253554627717e-04, +-4.355007514281856399e-04, +-4.382222116879796927e-04, +-4.409256292152973216e-04, +-4.436109278007842154e-04, +-4.462780319472062045e-04, +-4.489268668714023426e-04, +-4.515573585061591669e-04, +-4.541694335021370004e-04, +-4.567630192296945552e-04, +-4.593380437806990086e-04, +-4.618944359703641592e-04, +-4.644321253389956669e-04, +-4.669510421537198682e-04, +-4.694511174102391528e-04, +-4.719322828344936667e-04, +-4.743944708843056673e-04, +-4.768376147510778717e-04, +-4.792616483613185499e-04, +-4.816665063782572570e-04, +-4.840521242034328099e-04, +-4.864184379781392878e-04, +-4.887653845849875001e-04, +-4.910929016493441020e-04, +-4.934009275407648561e-04, +-4.956894013744314164e-04, +-4.979582630125267478e-04, +-5.002074530655732480e-04, +-5.024369128937963488e-04, +-5.046465846084096209e-04, +-5.068364110728711472e-04, +-5.090063359041649416e-04, +-5.111563034739979080e-04, +-5.132862589100021123e-04, +-5.153961480968690745e-04, +-5.174859176775289471e-04, +-5.195555150542333078e-04, +-5.216048883896219060e-04, +-5.236339866078035038e-04, +-5.256427593953671117e-04, +-5.276311572023592881e-04, +-5.295991312432845330e-04, +-5.315466334980310879e-04, +-5.334736167127590058e-04, +-5.353800344008440579e-04, +-5.372658408436644306e-04, +-5.391309910914612565e-04, +-5.409754409641723662e-04, +-5.427991470521338754e-04, +-5.446020667168816271e-04, +-5.463841580918508273e-04, +-5.481453800830460819e-04, +-5.498856923697329011e-04, +-5.516050554050554774e-04, +-5.533034304166338643e-04, +-5.549807794071562762e-04, +-5.566370651549240080e-04, +-5.582722512143591673e-04, +-5.598863019165212966e-04, +-5.614791823695569921e-04, +-5.630508584591426913e-04, +-5.646012968488869129e-04, +-5.661304649807269657e-04, +-5.676383310752780619e-04, +-5.691248641321425316e-04, +-5.705900339302359507e-04, +-5.720338110280472413e-04, +-5.734561667638651610e-04, +-5.748570732560228996e-04, +-5.762365034030694907e-04, +-5.775944308839210586e-04, +-5.789308301580147744e-04, +-5.802456764654073023e-04, +-5.815389458268270572e-04, +-5.828106150437761205e-04, +-5.840606616984941359e-04, +-5.852890641539828121e-04, +-5.864958015539906361e-04, +-5.876808538229068377e-04, +-5.888442016657117334e-04, +-5.899858265678480313e-04, +-5.911057107950715367e-04, +-5.922038373932919913e-04, +-5.932801901883750974e-04, +-5.943347537859077889e-04, +-5.953675135709560196e-04, +-5.963784557077862324e-04, +-5.973675671395502901e-04, +-5.983348355879607562e-04, +-5.992802495529256281e-04, +-6.002037983121684319e-04, +-6.011054719207968187e-04, +-6.019852612108830868e-04, +-6.028431577909788928e-04, +-6.036791540456271435e-04, +-6.044932431348390856e-04, +-6.052854189935475424e-04, +-6.060556763310210107e-04, +-6.068040106302798184e-04, +-6.075304181474490721e-04, +-6.082348959111083531e-04, +-6.089174417216230897e-04, +-6.095780541504153228e-04, +-6.102167325392310023e-04, +-6.108334769994055481e-04, +-6.114282884110374718e-04, +-6.120011684221977758e-04, +-6.125521194480911067e-04, +-6.130811446701708292e-04, +-6.135882480352661348e-04, +-6.140734342546560250e-04, +-6.145367088031177070e-04, +-6.149780779179629545e-04, +-6.153975485980498579e-04, +-6.157951286027385203e-04, +-6.161708264508632344e-04, +-6.165246514196488217e-04, +-6.168566135436185163e-04, +-6.171667236134546850e-04, +-6.174549931748643181e-04, +-6.177214345273962732e-04, +-6.179660607232365099e-04, +-6.181888855659877120e-04, +-6.183899236094177925e-04, +-6.185691901561730542e-04, +-6.187267012564867967e-04, +-6.188624737068503011e-04, +-6.189765250486558429e-04, +-6.190688735668237663e-04, +-6.191395382884032133e-04, +-6.191885389811366399e-04, +-6.192158961520189114e-04, +-6.192216310458151978e-04, +-6.192057656435624984e-04, +-6.191683226610496986e-04, +-6.191093255472567523e-04, +-6.190287984827980931e-04, +-6.189267663783119431e-04, +-6.188032548728387809e-04, +-6.186582903321892913e-04, +-6.184918998472626597e-04, +-6.183041112323545661e-04, +-6.180949530234442543e-04, +-6.178644544764535194e-04, +-6.176126455654801098e-04, +-6.173395569810077085e-04, +-6.170452201281006284e-04, +-6.167296671245690171e-04, +-6.163929307991048963e-04, +-6.160350446894051913e-04, +-6.156560430402689557e-04, +-6.152559608016694437e-04, +-6.148348336267999434e-04, +-6.143926978701053001e-04, +-6.139295905852934889e-04, +-6.134455495232993749e-04, +-6.129406131302638687e-04, +-6.124148205454583299e-04, +-6.118682115992002965e-04, +-6.113008268107554457e-04, +-6.107127073861997636e-04, +-6.101038952162644770e-04, +-6.094744328741759972e-04, +-6.088243636134469663e-04, +-6.081537313656636178e-04, +-6.074625807382529703e-04, +-6.067509570122140263e-04, +-6.060189061398409474e-04, +-6.052664747424182576e-04, +-6.044937101078982650e-04, +-6.037006601885510542e-04, +-6.028873735986067794e-04, +-6.020538996118607713e-04, +-6.012002881592650892e-04, +-6.003265898265066312e-04, +-5.994328558515527169e-04, +-5.985191381221832262e-04, +-5.975854891734927064e-04, +-5.966319621853970320e-04, +-5.956586109800830363e-04, +-5.946654900194719116e-04, +-5.936526544026431455e-04, +-5.926201598632436021e-04, +-5.915680627668748123e-04, +-5.904964201084772274e-04, +-5.894052895096540826e-04, +-5.882947292160319074e-04, +-5.871647980945590185e-04, +-5.860155556307927380e-04, +-5.848470619261819485e-04, +-5.836593776953231949e-04, +-5.824525642631895716e-04, +-5.812266835623525630e-04, +-5.799817981301792725e-04, +-5.787179711060220621e-04, +-5.774352662283634141e-04, +-5.761337478319708766e-04, +-5.748134808450266380e-04, +-5.734745307862269608e-04, +-5.721169637618717498e-04, +-5.707408464629464212e-04, +-5.693462461621697293e-04, +-5.679332307110253287e-04, +-5.665018685368019028e-04, +-5.650522286395598913e-04, +-5.635843805891618602e-04, +-5.620983945222121246e-04, +-5.605943411390014669e-04, +-5.590722917004733224e-04, +-5.575323180251127693e-04, +-5.559744924858600222e-04, +-5.543988880070024579e-04, +-5.528055780610286948e-04, +-5.511946366654886346e-04, +-5.495661383798437468e-04, +-5.479201583022637930e-04, +-5.462567720664432847e-04, +-5.445760558384051464e-04, +-5.428780863132523374e-04, +-5.411629407119379056e-04, +-5.394306967780089111e-04, +-5.376814327743420019e-04, +-5.359152274798394166e-04, +-5.341321601861401648e-04, +-5.323323106943111515e-04, +-5.305157593114988345e-04, +-5.286825868475931349e-04, +-5.268328746118826735e-04, +-5.249667044096563385e-04, +-5.230841585388290322e-04, +-5.211853197865536471e-04, +-5.192702714257683158e-04, +-5.173390972118150017e-04, +-5.153918813789747132e-04, +-5.134287086369905767e-04, +-5.114496641676510814e-04, +-5.094548336212589412e-04, +-5.074443031131625152e-04, +-5.054181592202514495e-04, +-5.033764889774196847e-04, +-5.013193798740397380e-04, +-4.992469198504351441e-04, +-4.971591972942945642e-04, +-4.950563010371177713e-04, +-4.929383203506471078e-04, +-4.908053449432454906e-04, +-4.886574649563142072e-04, +-4.864947709606651759e-04, +-4.843173539529117984e-04, +-4.821253053518022432e-04, +-4.799187169945834104e-04, +-4.776976811333543804e-04, +-4.754622904313672788e-04, +-4.732126379593568728e-04, +-4.709488171918626317e-04, +-4.686709220034980419e-04, +-4.663790466652465382e-04, +-4.640732858407570563e-04, +-4.617537345825791948e-04, +-4.594204883284330179e-04, +-4.570736428974772310e-04, +-4.547132944864867724e-04, +-4.523395396661517801e-04, +-4.499524753772600081e-04, +-4.475521989268783744e-04, +-4.451388079846178305e-04, +-4.427124005787705114e-04, +-4.402730750925058128e-04, +-4.378209302600714003e-04, +-4.353560651629133382e-04, +-4.328785792258610528e-04, +-4.303885722132850828e-04, +-4.278861442252072326e-04, +-4.253713956934523596e-04, +-4.228444273777876928e-04, +-4.203053403620071282e-04, +-4.177542360500658856e-04, +-4.151912161621689238e-04, +-4.126163827308963273e-04, +-4.100298380972492752e-04, +-4.074316849067566174e-04, +-4.048220261055625845e-04, +-4.022009649364658183e-04, +-3.995686049349941806e-04, +-3.969250499254837897e-04, +-3.942704040170865007e-04, +-3.916047715998412443e-04, +-3.889282573407287780e-04, +-3.862409661796424110e-04, +-3.835430033254899726e-04, +-3.808344742521838902e-04, +-3.781154846946167933e-04, +-3.753861406447554588e-04, +-3.726465483475792807e-04, +-3.698968142971049890e-04, +-3.671370452324029658e-04, +-3.643673481335547425e-04, +-3.615878302176550596e-04, +-3.587985989348221644e-04, +-3.559997619641304270e-04, +-3.531914272096155975e-04, +-3.503737027962569692e-04, +-3.475466970659134638e-04, +-3.447105185733121920e-04, +-3.418652760819985786e-04, +-3.390110785603189596e-04, +-3.361480351773383449e-04, +-3.332762552988153171e-04, +-3.303958484831651674e-04, +-3.275069244773739174e-04, +-3.246095932129608040e-04, +-3.217039648019402774e-04, +-3.187901495327224153e-04, +-3.158682578660709631e-04, +-3.129384004310637054e-04, +-3.100006880209819297e-04, +-3.070552315892662444e-04, +-3.041021422454750524e-04, +-3.011415312511400255e-04, +-2.981735100157859985e-04, +-2.951981900928157170e-04, +-2.922156831753968081e-04, +-2.892261010924789639e-04, +-2.862295558046435069e-04, +-2.832261594000568764e-04, +-2.802160240904169597e-04, +-2.771992622068371348e-04, +-2.741759861957921134e-04, +-2.711463086150643262e-04, +-2.681103421296289957e-04, +-2.650681995075991116e-04, +-2.620199936161758279e-04, +-2.589658374175321260e-04, +-2.559058439647700963e-04, +-2.528401263978371821e-04, +-2.497687979394841657e-04, +-2.466919718911537648e-04, +-2.436097616289358545e-04, +-2.405222805995268077e-04, +-2.374296423161179298e-04, +-2.343319603543603561e-04, +-2.312293483483235802e-04, +-2.281219199863990395e-04, +-2.250097890072605953e-04, +-2.218930691958490270e-04, +-2.187718743792344998e-04, +-2.156463184226692018e-04, +-2.125165152254974890e-04, +-2.093825787170703408e-04, +-2.062446228528014118e-04, +-2.031027616100538941e-04, +-1.999571089841372089e-04, +-1.968077789842991184e-04, +-1.936548856296604545e-04, +-1.904985429452152540e-04, +-1.873388649578360422e-04, +-1.841759656922168568e-04, +-1.810099591668891037e-04, +-1.778409593902383599e-04, +-1.746690803564612490e-04, +-1.714944360416001336e-04, +-1.683171403995389946e-04, +-1.651373073580485326e-04, +-1.619550508147597659e-04, +-1.587704846332155836e-04, +-1.555837226389194519e-04, +-1.523948786153299644e-04, +-1.492040662999244297e-04, +-1.460113993802669848e-04, +-1.428169914900206017e-04, +-1.396209562050251753e-04, +-1.364234070393964017e-04, +-1.332244574415121703e-04, +-1.300242207901904795e-04, +-1.268228103907297142e-04, +-1.236203394709516870e-04, +-1.204169211773936627e-04, +-1.172126685713664837e-04, +-1.140076946250221014e-04, +-1.108021122175711193e-04, +-1.075960341313265945e-04, +-1.043895730478680751e-04, +-1.011828415442064935e-04, +-9.797595208888789547e-05, +-9.476901703817362007e-05, +-9.156214863222875968e-05, +-8.835545899124883421e-05, +-8.514906011166596439e-05, +-8.194306386236004601e-05, +-7.873758198081212255e-05, +-7.553272606934206812e-05, +-7.232860759130854016e-05, +-6.912533786736448397e-05, +-6.592302807164487455e-05, +-6.272178922803207381e-05, +-5.952173220643080333e-05, +-5.632296771898314704e-05, +-5.312560631636255857e-05, +-4.992975838407696893e-05, +-4.673553413871244617e-05, +-4.354304362425660477e-05, +-4.035239670843832559e-05, +-3.716370307896371087e-05, +-3.397707223994543373e-05, +-3.079261350819724013e-05, +-2.761043600953867275e-05, +-2.443064867525565571e-05, +-2.125336023838858278e-05, +-1.807867923014542757e-05, +-1.490671397631821315e-05, +-1.173757259364196804e-05, +-8.571362986233174608e-06, +-5.408192842039840435e-06, +-2.248169629233924849e-06, + 9.085994073158900746e-07, + 4.062007249559963914e-06, + 7.211947109840360059e-06, + 1.035831243437538848e-05, + 1.350099690677804931e-05, + 1.663989445151674347e-05, + 1.977489923743988608e-05, + 2.290590568121984836e-05, + 2.603280845078441007e-05, + 2.915550246880447023e-05, + 3.227388291610041378e-05, + 3.538784523503596597e-05, + 3.849728513296748328e-05, + 4.160209858561236292e-05, + 4.470218184039641198e-05, + 4.779743141990192208e-05, + 5.088774412512074341e-05, + 5.397301703883864219e-05, + 5.705314752900416748e-05, + 6.012803325194276179e-05, + 6.319757215573732379e-05, + 6.626166248348101806e-05, + 6.932020277652611406e-05, + 7.237309187778388417e-05, + 7.542022893494506361e-05, + 7.846151340368422351e-05, + 8.149684505092017015e-05, + 8.452612395799063798e-05, + 8.754925052381620841e-05, + 9.056612546811526740e-05, + 9.357664983453636040e-05, + 9.658072499377798412e-05, + 9.957825264675863105e-05, + 1.025691348276992982e-04, + 1.055532739072324638e-04, + 1.085305725954559193e-04, + 1.115009339450413528e-04, + 1.144642613542636370e-04, + 1.174204585700133123e-04, + 1.203694296908608944e-04, + 1.233110791700392842e-04, + 1.262453118184091280e-04, + 1.291720328074765867e-04, + 1.320911476723274705e-04, + 1.350025623145396372e-04, + 1.379061830051878036e-04, + 1.408019163876573490e-04, + 1.436896694805827462e-04, + 1.465693496807631176e-04, + 1.494408647659332110e-04, + 1.523041228976822355e-04, + 1.551590326242550325e-04, + 1.580055028833392348e-04, + 1.608434430049030569e-04, + 1.636727627139501718e-04, + 1.664933721332581887e-04, + 1.693051817861664619e-04, + 1.721081025992772181e-04, + 1.749020459051485248e-04, + 1.776869234450233627e-04, + 1.804626473714810147e-04, + 1.832291302511037702e-04, + 1.859862850670928333e-04, + 1.887340252219307985e-04, + 1.914722645399650060e-04, + 1.942009172699763961e-04, + 1.969198980877891300e-04, + 1.996291220988007380e-04, + 2.023285048404991216e-04, + 2.050179622850149016e-04, + 2.076974108416031564e-04, + 2.103667673590943422e-04, + 2.130259491284320315e-04, + 2.156748738850263088e-04, + 2.183134598112238813e-04, + 2.209416255387514376e-04, + 2.235592901510201726e-04, + 2.261663731855686858e-04, + 2.287627946363877268e-04, + 2.313484749562338288e-04, + 2.339233350589864997e-04, + 2.364872963219185416e-04, + 2.390402805879580212e-04, + 2.415822101679853697e-04, + 2.441130078430523375e-04, + 2.466325968665815968e-04, + 2.491409009666123138e-04, + 2.516378443479499322e-04, + 2.541233516943481024e-04, + 2.565973481706226595e-04, + 2.590597594248182927e-04, + 2.615105115902947126e-04, + 2.639495312877900512e-04, + 2.663767456275328328e-04, + 2.687920822112623855e-04, + 2.711954691342454023e-04, + 2.735868349873153802e-04, + 2.759661088588475481e-04, + 2.783332203367077208e-04, + 2.806880995102372018e-04, + 2.830306769721676469e-04, + 2.853608838205087686e-04, + 2.876786516604782707e-04, + 2.899839126063509000e-04, + 2.922765992832912366e-04, + 2.945566448292232919e-04, + 2.968239828966126115e-04, + 2.990785476542692496e-04, + 3.013202737890967493e-04, + 3.035490965078737041e-04, + 3.057649515389691277e-04, + 3.079677751340319670e-04, + 3.101575040697167177e-04, + 3.123340756493348815e-04, + 3.144974277044852262e-04, + 3.166474985967178738e-04, + 3.187842272191221144e-04, + 3.209075529978961685e-04, + 3.230174158939708336e-04, + 3.251137564044837827e-04, + 3.271965155643439594e-04, + 3.292656349477634473e-04, + 3.313210566696717574e-04, + 3.333627233872442277e-04, + 3.353905783013171786e-04, + 3.374045651577999775e-04, + 3.394046282491060230e-04, + 3.413907124155172133e-04, + 3.433627630465302546e-04, + 3.453207260822255199e-04, + 3.472645480145729172e-04, + 3.491941758887091873e-04, + 3.511095573042519570e-04, + 3.530106404165289538e-04, + 3.548973739378270061e-04, + 3.567697071385853166e-04, + 3.586275898486170326e-04, + 3.604709724582657649e-04, + 3.622998059195475231e-04, + 3.641140417472995910e-04, + 3.659136320202863580e-04, + 3.676985293822643318e-04, + 3.694686870430808679e-04, + 3.712240587797045418e-04, + 3.729645989372330230e-04, + 3.746902624299445345e-04, + 3.764010047422215927e-04, + 3.780967819295399089e-04, + 3.797775506194354424e-04, + 3.814432680123662337e-04, + 3.830938918826428665e-04, + 3.847293805793243439e-04, + 3.863496930270196930e-04, + 3.879547887267716447e-04, + 3.895446277568475040e-04, + 3.911191707735202643e-04, + 3.926783790118635437e-04, + 3.942222142864887889e-04, + 3.957506389922609566e-04, + 3.972636161050249835e-04, + 3.987611091822865564e-04, + 4.002430823638575925e-04, + 4.017095003725249750e-04, + 4.031603285146561884e-04, + 4.045955326808080982e-04, + 4.060150793462865616e-04, + 4.074189355717365048e-04, + 4.088070690036545336e-04, + 4.101794478748993760e-04, + 4.115360410052106184e-04, + 4.128768178016641792e-04, + 4.142017482591180241e-04, + 4.155108029606594542e-04, + 4.168039530780101630e-04, + 4.180811703718910173e-04, + 4.193424271924330775e-04, + 4.205876964794781929e-04, + 4.218169517629213926e-04, + 4.230301671630330566e-04, + 4.242273173907018849e-04, + 4.254083777477293132e-04, + 4.265733241270551349e-04, + 4.277221330129674028e-04, + 4.288547814813199201e-04, + 4.299712471996981235e-04, + 4.310715084275624142e-04, + 4.321555440164084037e-04, + 4.332233334098622686e-04, + 4.342748566437679212e-04, + 4.353100943462749920e-04, + 4.363290277378814390e-04, + 4.373316386314608155e-04, + 4.383179094322644923e-04, + 4.392878231379250737e-04, + 4.402413633384142755e-04, + 4.411785142159785236e-04, + 4.420992605450830095e-04, + 4.430035876923051129e-04, + 4.438914816162095557e-04, + 4.447629288672291402e-04, + 4.456179165874963178e-04, + 4.464564325106518822e-04, + 4.472784649616788144e-04, + 4.480840028566412622e-04, + 4.488730357024674276e-04, + 4.496455535966942382e-04, + 4.504015472271598124e-04, + 4.511410078717227601e-04, + 4.518639273979317716e-04, + 4.525702982626724391e-04, + 4.532601135118208540e-04, + 4.539333667798478187e-04, + 4.545900522894110243e-04, + 4.552301648509383914e-04, + 4.558536998621819753e-04, + 4.564606533077386402e-04, + 4.570510217585829304e-04, + 4.576248023715507197e-04, + 4.581819928888074094e-04, + 4.587225916373142845e-04, + 4.592465975282551877e-04, + 4.597540100564493693e-04, + 4.602448292997426537e-04, + 4.607190559183878720e-04, + 4.611766911543958044e-04, + 4.616177368308614572e-04, + 4.620421953512901764e-04, + 4.624500696988885257e-04, + 4.628413634358270832e-04, + 4.632160807025117490e-04, + 4.635742262168107632e-04, + 4.639158052732666538e-04, + 4.642408237423050941e-04, + 4.645492880693974109e-04, + 4.648412052742233636e-04, + 4.651165829498146785e-04, + 4.653754292616635638e-04, + 4.656177529468281885e-04, + 4.658435633130129537e-04, + 4.660528702376251281e-04, + 4.662456841668207504e-04, + 4.664220161145283595e-04, + 4.665818776614450228e-04, + 4.667252809540293839e-04, + 4.668522387034660325e-04, + 4.669627641846072147e-04, + 4.670568712349087970e-04, + 4.671345742533333247e-04, + 4.671958881992458162e-04, + 4.672408285912818017e-04, + 4.672694115062051706e-04, + 4.672816535777399435e-04, + 4.672775719953896844e-04, + 4.672571845032351206e-04, + 4.672205093987145236e-04, + 4.671675655313846831e-04, + 4.670983723016658884e-04, + 4.670129496595690753e-04, + 4.669113181033992285e-04, + 4.667934986784483221e-04, + 4.666595129756697736e-04, + 4.665093831303249801e-04, + 4.663431318206253014e-04, + 4.661607822663494305e-04, + 4.659623582274440685e-04, + 4.657478840026049206e-04, + 4.655173844278470674e-04, + 4.652708848750484474e-04, + 4.650084112504843407e-04, + 4.647299899933398986e-04, + 4.644356480742053246e-04, + 4.641254129935572324e-04, + 4.637993127802194585e-04, + 4.634573759898105391e-04, + 4.630996317031664121e-04, + 4.627261095247605727e-04, + 4.623368395810890995e-04, + 4.619318525190577954e-04, + 4.615111795043335503e-04, + 4.610748522197000935e-04, + 4.606229028633767762e-04, + 4.601553641473365942e-04, + 4.596722692955974854e-04, + 4.591736520425064171e-04, + 4.586595466309942000e-04, + 4.581299878108344224e-04, + 4.575850108368651956e-04, + 4.570246514672037983e-04, + 4.564489459614547075e-04, + 4.558579310788811456e-04, + 4.552516440765832953e-04, + 4.546301227076468619e-04, + 4.539934052192734753e-04, + 4.533415303509126092e-04, + 4.526745373323598910e-04, + 4.519924658818471165e-04, + 4.512953562041267363e-04, + 4.505832489885180144e-04, + 4.498561854069646807e-04, + 4.491142071120569120e-04, + 4.483573562350536934e-04, + 4.475856753838733577e-04, + 4.467992076410936121e-04, + 4.459979965619085759e-04, + 4.451820861720944380e-04, + 4.443515209659479001e-04, + 4.435063459042188207e-04, + 4.426466064120195476e-04, + 4.417723483767223790e-04, + 4.408836181458559403e-04, + 4.399804625249631798e-04, + 4.390629287754658702e-04, + 4.381310646125140935e-04, + 4.371849182028055849e-04, + 4.362245381624045354e-04, + 4.352499735545582249e-04, + 4.342612738874614521e-04, + 4.332584891120592357e-04, + 4.322416696197972576e-04, + 4.312108662403607053e-04, + 4.301661302394392430e-04, + 4.291075133164244920e-04, + 4.280350676021317958e-04, + 4.269488456565061576e-04, + 4.258489004662909341e-04, + 4.247352854427120339e-04, + 4.236080544191417872e-04, + 4.224672616487353850e-04, + 4.213129618020723601e-04, + 4.201452099647876590e-04, + 4.189640616351733332e-04, + 4.177695727217762721e-04, + 4.165617995409934965e-04, + 4.153407988146542258e-04, + 4.141066276675647016e-04, + 4.128593436250719857e-04, + 4.115990046106124704e-04, + 4.103256689432263453e-04, + 4.090393953350821466e-04, + 4.077402428889936631e-04, + 4.064282710958981365e-04, + 4.051035398323516454e-04, + 4.037661093580081190e-04, + 4.024160403130726000e-04, + 4.010533937157509843e-04, + 3.996782309597162949e-04, + 3.982906138114988988e-04, + 3.968906044079513170e-04, + 3.954782652536374655e-04, + 3.940536592182181021e-04, + 3.926168495338786110e-04, + 3.911678997926778026e-04, + 3.897068739439286987e-04, + 3.882338362915720522e-04, + 3.867488514915060657e-04, + 3.852519845489371978e-04, + 3.837433008157242471e-04, + 3.822228659876809658e-04, + 3.806907461018970503e-04, + 3.791470075340564751e-04, + 3.775917169957095326e-04, + 3.760249415315750120e-04, + 3.744467485168102871e-04, + 3.728572056542912697e-04, + 3.712563809718577232e-04, + 3.696443428195687669e-04, + 3.680211598669621219e-04, + 3.663869011002663561e-04, + 3.647416358196356261e-04, + 3.630854336363811136e-04, + 3.614183644701632120e-04, + 3.597404985461995436e-04, + 3.580519063924802407e-04, + 3.563526588369090664e-04, + 3.546428270045379953e-04, + 3.529224823147112614e-04, + 3.511916964782126603e-04, + 3.494505414944692285e-04, + 3.476990896486621707e-04, + 3.459374135088842434e-04, + 3.441655859232905807e-04, + 3.423836800172041996e-04, + 3.405917691902502365e-04, + 3.387899271134843840e-04, + 3.369782277264827294e-04, + 3.351567452344539279e-04, + 3.333255541053511050e-04, + 3.314847290669380056e-04, + 3.296343451038909211e-04, + 3.277744774548732956e-04, + 3.259052016096209564e-04, + 3.240265933059882598e-04, + 3.221387285270224795e-04, + 3.202416834980367864e-04, + 3.183355346836296679e-04, + 3.164203587847511860e-04, + 3.144962327357511819e-04, + 3.125632337013957147e-04, + 3.106214390739068100e-04, + 3.086709264700072497e-04, + 3.067117737278970578e-04, + 3.047440589043241485e-04, + 3.027678602715731717e-04, + 3.007832563144453592e-04, + 2.987903257273184397e-04, + 2.967891474111177029e-04, + 2.947798004702863054e-04, + 2.927623642098342886e-04, + 2.907369181322795571e-04, + 2.887035419346474572e-04, + 2.866623155054684588e-04, + 2.846133189217250415e-04, + 2.825566324458409742e-04, + 2.804923365226680461e-04, + 2.784205117764215688e-04, + 2.763412390076613618e-04, + 2.742545991902678036e-04, + 2.721606734683706128e-04, + 2.700595431533260918e-04, + 2.679512897206588642e-04, + 2.658359948070293066e-04, + 2.637137402071755565e-04, + 2.615846078708275479e-04, + 2.594486798997124445e-04, + 2.573060385444451482e-04, + 2.551567662014868950e-04, + 2.530009454100995685e-04, + 2.508386588492504655e-04, + 2.486699893345648742e-04, + 2.464950198152724196e-04, + 2.443138333711105271e-04, + 2.421265132092706592e-04, + 2.399331426613412718e-04, + 2.377338051802090557e-04, + 2.355285843370046853e-04, + 2.333175638180193473e-04, + 2.311008274216529016e-04, + 2.288784590553089428e-04, + 2.266505427323334200e-04, + 2.244171625689555063e-04, + 2.221784027811817388e-04, + 2.199343476817356682e-04, + 2.176850816769960453e-04, + 2.154306892638919362e-04, + 2.131712550268407733e-04, + 2.109068636346947000e-04, + 2.086375998376094484e-04, + 2.063635484640345132e-04, + 2.040847944176105719e-04, + 2.018014226740629739e-04, + 1.995135182781994224e-04, + 1.972211663407786360e-04, + 1.949244520354615449e-04, + 1.926234605957580963e-04, + 1.903182773119268428e-04, + 1.880089875279238618e-04, + 1.856956766383542233e-04, + 1.833784300853742884e-04, + 1.810573333556474325e-04, + 1.787324719772986567e-04, + 1.764039315168246930e-04, + 1.740717975760575607e-04, + 1.717361557891002315e-04, + 1.693970918192953085e-04, + 1.670546913561437512e-04, + 1.647090401122718734e-04, + 1.623602238204041701e-04, + 1.600083282302875711e-04, + 1.576534391056663275e-04, + 1.552956422212641073e-04, + 1.529350233597161104e-04, + 1.505716683085541732e-04, + 1.482056628571951800e-04, + 1.458370927938849957e-04, + 1.434660439026914848e-04, + 1.410926019605108941e-04, + 1.387168527339910221e-04, + 1.363388819765940885e-04, + 1.339587754255551131e-04, + 1.315766187988467735e-04, + 1.291924977922529263e-04, + 1.268064980763105340e-04, + 1.244187052933432870e-04, + 1.220292050544901724e-04, + 1.196380829366912421e-04, + 1.172454244797248004e-04, + 1.148513151832536303e-04, + 1.124558405038200601e-04, + 1.100590858519014727e-04, + 1.076611365889665350e-04, + 1.052620780244888977e-04, + 1.028619954130201482e-04, + 1.004609739512355218e-04, + 9.805909877501749346e-05, + 9.565645495648902028e-05, + 9.325312750110331314e-05, + 9.084920134473885224e-05, + 8.844476135074806687e-05, + 8.603989230706530740e-05, + 8.363467892331827324e-05, + 8.122920582789540855e-05, + 7.882355756506970363e-05, + 7.641781859213564226e-05, + 7.401207327646574185e-05, + 7.160640589271114343e-05, + 6.920090061989899919e-05, + 6.679564153853753065e-05, + 6.439071262783644604e-05, + 6.198619776279526113e-05, + 5.958218071138609477e-05, + 5.717874513173604428e-05, + 5.477597456926659253e-05, + 5.237395245389007124e-05, + 4.997276209721475713e-05, + 4.757248668970427582e-05, + 4.517320929789675200e-05, + 4.277501286163184715e-05, + 4.037798019123245056e-05, + 3.798219396475260151e-05, + 3.558773672519759492e-05, + 3.319469087778752279e-05, + 3.080313868717025801e-05, + 2.841316227469468589e-05, + 2.602484361569175887e-05, + 2.363826453671236276e-05, + 2.125350671282456676e-05, + 1.887065166491977403e-05, + 1.648978075697524339e-05, + 1.411097519337696205e-05, + 1.173431601625678239e-05, + 9.359884102752299179e-06, + 6.987760162412990763e-06, + 4.618024734506339166e-06, + 2.250758185332994009e-06, +-1.139592943460997295e-07, +-2.476047691976475657e-06, +-4.835427175867579754e-06, +-7.192018097732475792e-06, +-9.545740995355304581e-06, +-1.189651659516344231e-05, +-1.424426581479630246e-05, +-1.658890976571526115e-05, +-1.893036975575310856e-05, +-2.126856729165356046e-05, +-2.360342408165203541e-05, +-2.593486203799535086e-05, +-2.826280327945194246e-05, +-3.058717013386214143e-05, +-3.290788514062223077e-05, +-3.522487105319239124e-05, +-3.753805084155972750e-05, +-3.984734769474820968e-05, +-4.215268502326642916e-05, +-4.445398646154595577e-05, +-4.675117587041871937e-05, +-4.904417733953356099e-05, +-5.133291518976179960e-05, +-5.361731397564326680e-05, +-5.589729848776915953e-05, +-5.817279375515100150e-05, +-6.044372504765935949e-05, +-6.271001787831994635e-05, +-6.497159800570334490e-05, +-6.722839143630304954e-05, +-6.948032442679744406e-05, +-7.172732348643322351e-05, +-7.396931537931442969e-05, +-7.620622712668445272e-05, +-7.843798600924763316e-05, +-8.066451956942798042e-05, +-8.288575561361803841e-05, +-8.510162221446331313e-05, +-8.731204771308690642e-05, +-8.951696072130161362e-05, +-9.171629012385885710e-05, +-9.390996508063228295e-05, +-9.609791502882000596e-05, +-9.828006968510332396e-05, +-1.004563590478474043e-04, +-1.026267133992400486e-04, +-1.047910633074188301e-04, +-1.069493396286341579e-04, +-1.091014735093504337e-04, +-1.112473963883362719e-04, +-1.133870399987890883e-04, +-1.155203363703990961e-04, +-1.176472178313953305e-04, +-1.197676170106592606e-04, +-1.218814668396951776e-04, +-1.239887005546941225e-04, +-1.260892516985776348e-04, +-1.281830541229342997e-04, +-1.302700419900651365e-04, +-1.323501497749413015e-04, +-1.344233122671481984e-04, +-1.364894645728694596e-04, +-1.385485421168049811e-04, +-1.406004806440810972e-04, +-1.426452162221888086e-04, +-1.446826852428661472e-04, +-1.467128244239635187e-04, +-1.487355708113438483e-04, +-1.507508617807235289e-04, +-1.527586350394968622e-04, +-1.547588286285951674e-04, +-1.567513809242809190e-04, +-1.587362306399566565e-04, +-1.607133168279312315e-04, +-1.626825788812234319e-04, +-1.646439565353026413e-04, +-1.665973898698204188e-04, +-1.685428193103691828e-04, +-1.704801856301821046e-04, +-1.724094299518231360e-04, +-1.743304937489001025e-04, +-1.762433188477262975e-04, +-1.781478474289576277e-04, +-1.800440220292915305e-04, +-1.819317855430339719e-04, +-1.838110812237446685e-04, +-1.856818526858653427e-04, +-1.875440439062452764e-04, +-1.893975992257657440e-04, +-1.912424633508784139e-04, +-1.930785813551326642e-04, +-1.949058986807341502e-04, +-1.967243611400427115e-04, +-1.985339149170557227e-04, +-2.003345065689232120e-04, +-2.021260830273986320e-04, +-2.039085916002819328e-04, +-2.056819799728869756e-04, +-2.074461962094438668e-04, +-2.092011887545202925e-04, +-2.109469064343977242e-04, +-2.126832984584741044e-04, +-2.144103144206201302e-04, +-2.161279043005096229e-04, +-2.178360184649824789e-04, +-2.195346076693506726e-04, +-2.212236230586868304e-04, +-2.229030161691393681e-04, +-2.245727389291929572e-04, +-2.262327436609087709e-04, +-2.278829830812132752e-04, +-2.295234103030713085e-04, +-2.311539788367216657e-04, +-2.327746425908999424e-04, +-2.343853558739638829e-04, +-2.359860733951051385e-04, +-2.375767502654831261e-04, +-2.391573419993466899e-04, +-2.407278045151767687e-04, +-2.422880941367792180e-04, +-2.438381675943598502e-04, +-2.453779820256201294e-04, +-2.469074949768038335e-04, +-2.484266644037227360e-04, +-2.499354486728099086e-04, +-2.514338065621144771e-04, +-2.529216972622859135e-04, +-2.543990803775748638e-04, +-2.558659159267800357e-04, +-2.573221643442039769e-04, +-2.587677864805675455e-04, +-2.602027436039487749e-04, +-2.616269974006728413e-04, +-2.630405099761820814e-04, +-2.644432438559275321e-04, +-2.658351619862104340e-04, +-2.672162277350069296e-04, +-2.685864048928109766e-04, +-2.699456576734278750e-04, +-2.712939507147492553e-04, +-2.726312490795658504e-04, +-2.739575182562754797e-04, +-2.752727241596490920e-04, +-2.765768331315761547e-04, +-2.778698119417266133e-04, +-2.791516277882845711e-04, +-2.804222482986127966e-04, +-2.816816415299000466e-04, +-2.829297759698325121e-04, +-2.841666205372087245e-04, +-2.853921445825464910e-04, +-2.866063178886988304e-04, +-2.878091106714275702e-04, +-2.890004935799564520e-04, +-2.901804376975452714e-04, +-2.913489145420056865e-04, +-2.925058960662293875e-04, +-2.936513546586777762e-04, +-2.947852631438808079e-04, +-2.959075947829078058e-04, +-2.970183232738041234e-04, +-2.981174227520507923e-04, +-2.992048677909770068e-04, +-3.002806334021593270e-04, +-3.013446950358265202e-04, +-3.023970285812287314e-04, +-3.034376103669809044e-04, +-3.044664171614393255e-04, +-3.054834261729900751e-04, +-3.064886150503766198e-04, +-3.074819618830130379e-04, +-3.084634452012223818e-04, +-3.094330439765360799e-04, +-3.103907376219247637e-04, +-3.113365059920235106e-04, +-3.122703293833623992e-04, +-3.131921885345585223e-04, +-3.141020646264928193e-04, +-3.149999392824904339e-04, +-3.158857945684658344e-04, +-3.167596129930534059e-04, +-3.176213775077397767e-04, +-3.184710715069595001e-04, +-3.193086788281887826e-04, +-3.201341837520082058e-04, +-3.209475710021750423e-04, +-3.217488257456560530e-04, +-3.225379335926461350e-04, +-3.233148805965934758e-04, +-3.240796532541876263e-04, +-3.248322385053268669e-04, +-3.255726237331009140e-04, +-3.263007967637243504e-04, +-3.270167458664689168e-04, +-3.277204597535875630e-04, +-3.284119275802105278e-04, +-3.290911389442200048e-04, +-3.297580838861458963e-04, +-3.304127528889890344e-04, +-3.310551368780754642e-04, +-3.316852272208876875e-04, +-3.323030157268494489e-04, +-3.329084946471374097e-04, +-3.335016566744514058e-04, +-3.340824949427684959e-04, +-3.346510030271022691e-04, +-3.352071749432266982e-04, +-3.357510051473851947e-04, +-3.362824885360034028e-04, +-3.368016204453670292e-04, +-3.373083966512867705e-04, +-3.378028133687669267e-04, +-3.382848672516250085e-04, +-3.387545553921413239e-04, +-3.392118753206416139e-04, +-3.396568250051043548e-04, +-3.400894028507488154e-04, +-3.405096076995764941e-04, +-3.409174388299389012e-04, +-3.413128959560680995e-04, +-3.416959792275864284e-04, +-3.420666892290225155e-04, +-3.424250269792968233e-04, +-3.427709939311909316e-04, +-3.431045919708170921e-04, +-3.434258234170579666e-04, +-3.437346910209959031e-04, +-3.440311979653319120e-04, +-3.443153478637875657e-04, +-3.445871447604909607e-04, +-3.448465931293432187e-04, +-3.450936978733858541e-04, +-3.453284643241399531e-04, +-3.455508982409302818e-04, +-3.457610058102085818e-04, +-3.459587936448474291e-04, +-3.461442687834250941e-04, +-3.463174386895036261e-04, +-3.464783112508803740e-04, +-3.466268947788322973e-04, +-3.467631980073503030e-04, +-3.468872300923437116e-04, +-3.469990006108486275e-04, +-3.470985195602179310e-04, +-3.471857973572835157e-04, +-3.472608448375257896e-04, +-3.473236732542124929e-04, +-3.473742942775333428e-04, +-3.474127199937145647e-04, +-3.474389629041271907e-04, +-3.474530359243715050e-04, +-3.474549523833589957e-04, +-3.474447260223739774e-04, +-3.474223709941186809e-04, +-3.473879018617541674e-04, +-3.473413335979242756e-04, +-3.472826815837561499e-04, +-3.472119616078660274e-04, +-3.471291898653342325e-04, +-3.470343829566808775e-04, +-3.469275578868154328e-04, +-3.468087320639852682e-04, +-3.466779232987000155e-04, +-3.465351498026552810e-04, +-3.463804301876283317e-04, +-3.462137834643777925e-04, +-3.460352290415146664e-04, +-3.458447867243708072e-04, +-3.456424767138495564e-04, +-3.454283196052703093e-04, +-3.452023363871887943e-04, +-3.449645484402159433e-04, +-3.447149775358203361e-04, +-3.444536458351144903e-04, +-3.441805758876352963e-04, +-3.438957906301077019e-04, +-3.435993133851945728e-04, +-3.432911678602424874e-04, +-3.429713781460032459e-04, +-3.426399687153562461e-04, +-3.422969644220061943e-04, +-3.419423904991795147e-04, +-3.415762725583007552e-04, +-3.411986365876650364e-04, +-3.408095089510884907e-04, +-3.404089163865570752e-04, +-3.399968860048563032e-04, +-3.395734452881962588e-04, +-3.391386220888159032e-04, +-3.386924446275821777e-04, +-3.382349414925830337e-04, +-3.377661416376902693e-04, +-3.372860743811352665e-04, +-3.367947694040543177e-04, +-3.362922567490312948e-04, +-3.357785668186277425e-04, +-3.352537303739060864e-04, +-3.347177785329264951e-04, +-3.341707427692584332e-04, +-3.336126549104582247e-04, +-3.330435471365414120e-04, +-3.324634519784571752e-04, +-3.318724023165340199e-04, +-3.312704313789250309e-04, +-3.306575727400449410e-04, +-3.300338603189870330e-04, +-3.293993283779351631e-04, +-3.287540115205719350e-04, +-3.280979446904600406e-04, +-3.274311631694306474e-04, +-3.267537025759531923e-04, +-3.260655988634914601e-04, +-3.253668883188602580e-04, +-3.246576075605667492e-04, +-3.239377935371342220e-04, +-3.232074835254289489e-04, +-3.224667151289711624e-04, +-3.217155262762384955e-04, +-3.209539552189528337e-04, +-3.201820405303666792e-04, +-3.193998211035420343e-04, +-3.186073361496017460e-04, +-3.178046251959928308e-04, +-3.169917280847345123e-04, +-3.161686849706443585e-04, +-3.153355363195760189e-04, +-3.144923229066344658e-04, +-3.136390858143763265e-04, +-3.127758664310251245e-04, +-3.119027064486582217e-04, +-3.110196478613769027e-04, +-3.101267329635019367e-04, +-3.092240043477244705e-04, +-3.083115049032666803e-04, +-3.073892778140380308e-04, +-3.064573665567624791e-04, +-3.055158148991206401e-04, +-3.045646668978766098e-04, +-3.036039668969818593e-04, +-3.026337595256923000e-04, +-3.016540896966719604e-04, +-3.006650026040731888e-04, +-2.996665437216319817e-04, +-2.986587588007351760e-04, +-2.976416938685037426e-04, +-2.966153952258385120e-04, +-2.955799094454812409e-04, +-2.945352833700679821e-04, +-2.934815641101539926e-04, +-2.924187990422545810e-04, +-2.913470358068745696e-04, +-2.902663223065145011e-04, +-2.891767067036858977e-04, +-2.880782374189269548e-04, +-2.869709631287710710e-04, +-2.858549327637701309e-04, +-2.847301955064623848e-04, +-2.835968007893348536e-04, +-2.824547982928240055e-04, +-2.813042379432560431e-04, +-2.801451699108123438e-04, +-2.789776446074848171e-04, +-2.778017126850119631e-04, +-2.766174250328198099e-04, +-2.754248327759651824e-04, +-2.742239872730473115e-04, +-2.730149401141329971e-04, +-2.717977431186827998e-04, +-2.705724483334443278e-04, +-2.693391080303630340e-04, +-2.680977747044793508e-04, +-2.668485010718276698e-04, +-2.655913400673114134e-04, +-2.643263448425881902e-04, +-2.630535687639590160e-04, +-2.617730654102196422e-04, +-2.604848885705368200e-04, +-2.591890922423171388e-04, +-2.578857306290453983e-04, +-2.565748581381476455e-04, +-2.552565293788432621e-04, +-2.539307991599698382e-04, +-2.525977224878305969e-04, +-2.512573545640386214e-04, +-2.499097507833110995e-04, +-2.485549667313339335e-04, +-2.471930581825615143e-04, +-2.458240810980175258e-04, +-2.444480916231409062e-04, +-2.430651460855632337e-04, +-2.416753009929237066e-04, +-2.402786130306762088e-04, +-2.388751390598696229e-04, +-2.374649361149466017e-04, +-2.360480614015408754e-04, +-2.346245722942464794e-04, +-2.331945263344053847e-04, +-2.317579812278978133e-04, +-2.303149948428945509e-04, +-2.288656252076453105e-04, +-2.274099305082379031e-04, +-2.259479690863772225e-04, +-2.244797994371286953e-04, +-2.230054802066868845e-04, +-2.215250701901428189e-04, +-2.200386283292193120e-04, +-2.185462137100298611e-04, +-2.170478855608389847e-04, +-2.155437032497881621e-04, +-2.140337262826512909e-04, +-2.125180143005880309e-04, +-2.109966270778476530e-04, +-2.094696245195501927e-04, +-2.079370666594009790e-04, +-2.063990136574038892e-04, +-2.048555257976375152e-04, +-2.033066634859470047e-04, +-2.017524872476864550e-04, +-2.001930577254539868e-04, +-1.986284356767997143e-04, +-1.970586819719535008e-04, +-1.954838575915635035e-04, +-1.939040236243918364e-04, +-1.923192412650470977e-04, +-1.907295718117106348e-04, +-1.891350766638361385e-04, +-1.875358173198774262e-04, +-1.859318553749967642e-04, +-1.843232525187964448e-04, +-1.827100705330078915e-04, +-1.810923712892176262e-04, +-1.794702167465910946e-04, +-1.778436689495616627e-04, +-1.762127900255543611e-04, +-1.745776421827086272e-04, +-1.729382877075663790e-04, +-1.712947889627954620e-04, +-1.696472083849151014e-04, +-1.679956084819648674e-04, +-1.663400518312669902e-04, +-1.646806010771129439e-04, +-1.630173189284529571e-04, +-1.613502681566538833e-04, +-1.596795115931883588e-04, +-1.580051121273238265e-04, +-1.563271327038883742e-04, +-1.546456363209392393e-04, +-1.529606860274956338e-04, +-1.512723449212647925e-04, +-1.495806761463344930e-04, +-1.478857428909037118e-04, +-1.461876083850123325e-04, +-1.444863358982375408e-04, +-1.427819887374256471e-04, +-1.410746302444266999e-04, +-1.393643237937954352e-04, +-1.376511327905296307e-04, +-1.359351206677910317e-04, +-1.342163508846486110e-04, +-1.324948869237844789e-04, +-1.307707922892377666e-04, +-1.290441305041498381e-04, +-1.273149651084755666e-04, +-1.255833596567337775e-04, +-1.238493777157573391e-04, +-1.221130828624121371e-04, +-1.203745386813520168e-04, +-1.186338087627821419e-04, +-1.168909567001617328e-04, +-1.151460460880099395e-04, +-1.133991405196329877e-04, +-1.116503035848572754e-04, +-1.098995988678417635e-04, +-1.081470899447932921e-04, +-1.063928403817494535e-04, +-1.046369137323567919e-04, +-1.028793735356176953e-04, +-1.011202833136759125e-04, +-9.935970656960644817e-05, +-9.759770678517043681e-05, +-9.583434741861026924e-05, +-9.406969190244984097e-05, +-9.230380364125933396e-05, +-9.053674600946567030e-05, +-8.876858234914139034e-05, +-8.699937596782250605e-05, +-8.522919013628890879e-05, +-8.345808808638402519e-05, +-8.168613300884085629e-05, +-7.991338805107395910e-05, +-7.813991631501132694e-05, +-7.636578085493227338e-05, +-7.459104467527134016e-05, +-7.281577072846352663e-05, +-7.104002191279907381e-05, +-6.926386107021868506e-05, +-6.748735098421495789e-05, +-6.571055437765771837e-05, +-6.393353391062474940e-05, +-6.215635217831653114e-05, +-6.037907170887482622e-05, +-5.860175496126965783e-05, +-5.682446432318681627e-05, +-5.504726210888180279e-05, +-5.327021055707770381e-05, +-5.149337182886793741e-05, +-4.971680800558536233e-05, +-4.794058108671611038e-05, +-4.616475298781709156e-05, +-4.438938553840276205e-05, +-4.261454047987333585e-05, +-4.084027946344990140e-05, +-3.906666404807705955e-05, +-3.729375569837272444e-05, +-3.552161578255872028e-05, +-3.375030557042293532e-05, +-3.197988623124410466e-05, +-3.021041883176161461e-05, +-2.844196433415065007e-05, +-2.667458359396532411e-05, +-2.490833735812642244e-05, +-2.314328626291511102e-05, +-2.137949083193460548e-05, +-1.961701147411656389e-05, +-1.785590848173807080e-05, +-1.609624202838127720e-05, +-1.433807216700148944e-05, +-1.258145882792123937e-05, +-1.082646181683097320e-05, +-9.073140812876971144e-06, +-7.321555366654213098e-06, +-5.571764898269951198e-06, +-3.823828695409499071e-06, +-2.077805911371170882e-06, +-3.337555631462109005e-07, + 1.408263470494281391e-06, + 3.148192450947390809e-06, + 4.885972781656096202e-06, + 6.621546010042845337e-06, + 8.354853829393779218e-06, + 1.008583808073136904e-05, + 1.181444075474264899e-05, + 1.354060399359919871e-05, + 1.526427009284940045e-05, + 1.698538150330287396e-05, + 1.870388083282798202e-05, + 2.041971084824172869e-05, + 2.213281447712934361e-05, + 2.384313480966037145e-05, + 2.555061510043408568e-05, + 2.725519877027979271e-05, + 2.895682940804879444e-05, + 3.065545077243629521e-05, + 3.235100679375700638e-05, + 3.404344157571324300e-05, + 3.573269939719221584e-05, + 3.741872471401271841e-05, + 3.910146216068953722e-05, + 4.078085655216379780e-05, + 4.245685288556682609e-05, + 4.412939634193747729e-05, + 4.579843228793225468e-05, + 4.746390627756269618e-05, + 4.912576405388786139e-05, + 5.078395155069788749e-05, + 5.243841489422560565e-05, + 5.408910040481267517e-05, + 5.573595459856728118e-05, + 5.737892418904863920e-05, + 5.901795608890704747e-05, + 6.065299741151007498e-05, + 6.228399547262131305e-05, + 6.391089779197211608e-05, + 6.553365209490185034e-05, + 6.715220631398753799e-05, + 6.876650859059009197e-05, + 7.037650727648529488e-05, + 7.198215093542717784e-05, + 7.358338834470490775e-05, + 7.518016849672695570e-05, + 7.677244060055888871e-05, + 7.836015408345385657e-05, + 7.994325859240618585e-05, + 8.152170399566256796e-05, + 8.309544038422206640e-05, + 8.466441807336241594e-05, + 8.622858760411755978e-05, + 8.778789974476800743e-05, + 8.934230549229964225e-05, + 9.089175607388921396e-05, + 9.243620294834814359e-05, + 9.397559780755341283e-05, + 9.550989257790557202e-05, + 9.703903942174033070e-05, + 9.856299073873128487e-05, + 1.000816991673172420e-04, + 1.015951175860831828e-04, + 1.031031991151302324e-04, + 1.046058971174895134e-04, + 1.061031652004372435e-04, + 1.075949572168700583e-04, + 1.090812272666689389e-04, + 1.105619296979858064e-04, + 1.120370191086031663e-04, + 1.135064503472337823e-04, + 1.149701785148090195e-04, + 1.164281589657927631e-04, + 1.178803473094499336e-04, + 1.193266994111055447e-04, + 1.207671713934262570e-04, + 1.222017196376570054e-04, + 1.236303007848491020e-04, + 1.250528717371095081e-04, + 1.264693896588017915e-04, + 1.278798119777601076e-04, + 1.292840963864697328e-04, + 1.306822008432736190e-04, + 1.320740835735343332e-04, + 1.334597030707871063e-04, + 1.348390180979125062e-04, + 1.362119876882666102e-04, + 1.375785711468011216e-04, + 1.389387280512034077e-04, + 1.402924182529940924e-04, + 1.416396018786102824e-04, + 1.429802393305299119e-04, + 1.443142912883029817e-04, + 1.456417187096335655e-04, + 1.469624828314567485e-04, + 1.482765451709362552e-04, + 1.495838675265184032e-04, + 1.508844119789691691e-04, + 1.521781408923413243e-04, + 1.534650169150062425e-04, + 1.547450029806271077e-04, + 1.560180623091243410e-04, + 1.572841584076566145e-04, + 1.585432550715660312e-04, + 1.597953163853056062e-04, + 1.610403067233911144e-04, + 1.622781907513069148e-04, + 1.635089334264041845e-04, + 1.647324999988141424e-04, + 1.659488560123206151e-04, + 1.671579673052372376e-04, + 1.683598000112571157e-04, + 1.695543205603179378e-04, + 1.707414956794345881e-04, + 1.719212923935127860e-04, + 1.730936780261838406e-04, + 1.742586202005990184e-04, + 1.754160868402104671e-04, + 1.765660461695719801e-04, + 1.777084667150960679e-04, + 1.788433173058005669e-04, + 1.799705670740855241e-04, + 1.810901854564287946e-04, + 1.822021421941263345e-04, + 1.833064073340197006e-04, + 1.844029512291565736e-04, + 1.854917445395107766e-04, + 1.865727582326443977e-04, + 1.876459635843636504e-04, + 1.887113321793897785e-04, + 1.897688359119871612e-04, + 1.908184469865865397e-04, + 1.918601379184174324e-04, + 1.928938815341040393e-04, + 1.939196509722520396e-04, + 1.949374196840444418e-04, + 1.959471614338028484e-04, + 1.969488502995489368e-04, + 1.979424606735411668e-04, + 1.989279672628242268e-04, + 1.999053450897450329e-04, + 2.008745694924540641e-04, + 2.018356161254214963e-04, + 2.027884609599164205e-04, + 2.037330802844741057e-04, + 2.046694507053757866e-04, + 2.055975491470918575e-04, + 2.065173528527125719e-04, + 2.074288393844034349e-04, + 2.083319866237904195e-04, + 2.092267727723780084e-04, + 2.101131763519565286e-04, + 2.109911762049535412e-04, + 2.118607514948268108e-04, + 2.127218817064139872e-04, + 2.135745466462707419e-04, + 2.144187264430180099e-04, + 2.152544015476567344e-04, + 2.160815527338730692e-04, + 2.169001610983474037e-04, + 2.177102080610353069e-04, + 2.185116753654365446e-04, + 2.193045450788706297e-04, + 2.200887995927198733e-04, + 2.208644216226643311e-04, + 2.216313942089217647e-04, + 2.223897007164534227e-04, + 2.231393248351739157e-04, + 2.238802505801342564e-04, + 2.246124622917153085e-04, + 2.253359446357891429e-04, + 2.260506826038725340e-04, + 2.267566615132812411e-04, + 2.274538670072590561e-04, + 2.281422850550943009e-04, + 2.288219019522401193e-04, + 2.294927043204088844e-04, + 2.301546791076483091e-04, + 2.308078135884433074e-04, + 2.314520953637461077e-04, + 2.320875123610491655e-04, + 2.327140528344266886e-04, + 2.333317053645474573e-04, + 2.339404588587064564e-04, + 2.345403025508244416e-04, + 2.351312260014386420e-04, + 2.357132190976906174e-04, + 2.362862720532959548e-04, + 2.368503754084961025e-04, + 2.374055200300155717e-04, + 2.379516971109948780e-04, + 2.384888981709089013e-04, + 2.390171150554883084e-04, + 2.395363399366166619e-04, + 2.400465653122224065e-04, + 2.405477840061526955e-04, + 2.410399891680482462e-04, + 2.415231742731948857e-04, + 2.419973331223648511e-04, + 2.424624598416571944e-04, + 2.429185488823155286e-04, + 2.433655950205341990e-04, + 2.438035933572666781e-04, + 2.442325393180082098e-04, + 2.446524286525663923e-04, + 2.450632574348449340e-04, + 2.454650220625743647e-04, + 2.458577192570688763e-04, + 2.462413460629618318e-04, + 2.466158998479121628e-04, + 2.469813783023258927e-04, + 2.473377794390515844e-04, + 2.476851015930616384e-04, + 2.480233434211388506e-04, + 2.483525039015336416e-04, + 2.486725823336194971e-04, + 2.489835783375405481e-04, + 2.492854918538394728e-04, + 2.495783231430794892e-04, + 2.498620727854570242e-04, + 2.501367416804008842e-04, + 2.504023310461557040e-04, + 2.506588424193689204e-04, + 2.509062776546506948e-04, + 2.511446389241341060e-04, + 2.513739287170174003e-04, + 2.515941498391026094e-04, + 2.518053054123185557e-04, + 2.520073988742323645e-04, + 2.522004339775543095e-04, + 2.523844147896320321e-04, + 2.525593456919275766e-04, + 2.527252313794938290e-04, + 2.528820768604318195e-04, + 2.530298874553403273e-04, + 2.531686687967628835e-04, + 2.532984268286067467e-04, + 2.534191678055681680e-04, + 2.535308982925446987e-04, + 2.536336251640243511e-04, + 2.537273556034816977e-04, + 2.538120971027521783e-04, + 2.538878574613999558e-04, + 2.539546447860787791e-04, + 2.540124674898752819e-04, + 2.540613342916483780e-04, + 2.541012542153570563e-04, + 2.541322365893778756e-04, + 2.541542910458098820e-04, + 2.541674275197747029e-04, + 2.541716562487030331e-04, + 2.541669877716125564e-04, + 2.541534329283751331e-04, + 2.541310028589737965e-04, + 2.540997090027559001e-04, + 2.540595630976642556e-04, + 2.540105771794701141e-04, + 2.539527635809943297e-04, + 2.538861349313109583e-04, + 2.538107041549536765e-04, + 2.537264844711015991e-04, + 2.536334893927610326e-04, + 2.535317327259405053e-04, + 2.534212285688066074e-04, + 2.533019913108423794e-04, + 2.531740356319878106e-04, + 2.530373765017760552e-04, + 2.528920291784547952e-04, + 2.527380092081051629e-04, + 2.525753324237468953e-04, + 2.524040149444354642e-04, + 2.522240731743521599e-04, + 2.520355238018808387e-04, + 2.518383837986798456e-04, + 2.516326704187434754e-04, + 2.514184011974527526e-04, + 2.511955939506217684e-04, + 2.509642667735295413e-04, + 2.507244380399485184e-04, + 2.504761264011613666e-04, + 2.502193507849666504e-04, + 2.499541303946834262e-04, + 2.496804847081407117e-04, + 2.493984334766581189e-04, + 2.491079967240238851e-04, + 2.488091947454601103e-04, + 2.485020481065775325e-04, + 2.481865776423268868e-04, + 2.478628044559419712e-04, + 2.475307499178667201e-04, + 2.471904356646838501e-04, + 2.468418835980331510e-04, + 2.464851158835113464e-04, + 2.461201549495815486e-04, + 2.457470234864609759e-04, + 2.453657444450025975e-04, + 2.449763410355772675e-04, + 2.445788367269378059e-04, + 2.441732552450798276e-04, + 2.437596205720983695e-04, + 2.433379569450259245e-04, + 2.429082888546761393e-04, + 2.424706410444718466e-04, + 2.420250385092651273e-04, + 2.415715064941538232e-04, + 2.411100704932906487e-04, + 2.406407562486783172e-04, + 2.401635897489653722e-04, + 2.396785972282298202e-04, + 2.391858051647607051e-04, + 2.386852402798212498e-04, + 2.381769295364192900e-04, + 2.376609001380633143e-04, + 2.371371795275066334e-04, + 2.366057953854931479e-04, + 2.360667756294951736e-04, + 2.355201484124377703e-04, + 2.349659421214198702e-04, + 2.344041853764384435e-04, + 2.338349070290809506e-04, + 2.332581361612411585e-04, + 2.326739020838106988e-04, + 2.320822343353571540e-04, + 2.314831626808217142e-04, + 2.308767171101835751e-04, + 2.302629278371346095e-04, + 2.296418252977360951e-04, + 2.290134401490810797e-04, + 2.283778032679431949e-04, + 2.277349457494174181e-04, + 2.270848989055589660e-04, + 2.264276942640204788e-04, + 2.257633635666698524e-04, + 2.250919387682129768e-04, + 2.244134520348128956e-04, + 2.237279357426851683e-04, + 2.230354224767161085e-04, + 2.223359450290488220e-04, + 2.216295363976716296e-04, + 2.209162297850169254e-04, + 2.201960585965246362e-04, + 2.194690564392264161e-04, + 2.187352571203150147e-04, + 2.179946946456994418e-04, + 2.172474032185700533e-04, + 2.164934172379514936e-04, + 2.157327712972447148e-04, + 2.149655001827733051e-04, + 2.141916388723227166e-04, + 2.134112225336661840e-04, + 2.126242865230963620e-04, + 2.118308663839513261e-04, + 2.110309978451221946e-04, + 2.102247168195730035e-04, + 2.094120594028465402e-04, + 2.085930618715713157e-04, + 2.077677606819526806e-04, + 2.069361924682697684e-04, + 2.060983940413735230e-04, + 2.052544023871569168e-04, + 2.044042546650445759e-04, + 2.035479882064720233e-04, + 2.026856405133484163e-04, + 2.018172492565295561e-04, + 2.009428522742874818e-04, + 2.000624875707536921e-04, + 1.991761933143927242e-04, + 1.982840078364487895e-04, + 1.973859696293771239e-04, + 1.964821173453162374e-04, + 1.955724897945040311e-04, + 1.946571259437248128e-04, + 1.937360649147434649e-04, + 1.928093459827275513e-04, + 1.918770085746745460e-04, + 1.909390922678429387e-04, + 1.899956367881556118e-04, + 1.890466820086241417e-04, + 1.880922679477648883e-04, + 1.871324347679953243e-04, + 1.861672227740477931e-04, + 1.851966724113680070e-04, + 1.842208242645230587e-04, + 1.832397190555826801e-04, + 1.822533976425216710e-04, + 1.812619010176148729e-04, + 1.802652703058122482e-04, + 1.792635467631297072e-04, + 1.782567717750380653e-04, + 1.772449868548298005e-04, + 1.762282336420009090e-04, + 1.752065539006359047e-04, + 1.741799895177535706e-04, + 1.731485825017057276e-04, + 1.721123749805319851e-04, + 1.710714092003098289e-04, + 1.700257275235466953e-04, + 1.689753724275153688e-04, + 1.679203865026223112e-04, + 1.668608124507696226e-04, + 1.657966930836964287e-04, + 1.647280713213367478e-04, + 1.636549901901793646e-04, + 1.625774928216002185e-04, + 1.614956224502179399e-04, + 1.604094224122458630e-04, + 1.593189361438209720e-04, + 1.582242071793559955e-04, + 1.571252791498758603e-04, + 1.560221957813655031e-04, + 1.549150008930939924e-04, + 1.538037383959586801e-04, + 1.526884522908265624e-04, + 1.515691866668553926e-04, + 1.504459856998329543e-04, + 1.493188936505160911e-04, + 1.481879548629491086e-04, + 1.470532137627978710e-04, + 1.459147148556897788e-04, + 1.447725027255245282e-04, + 1.436266220328107275e-04, + 1.424771175130018367e-04, + 1.413240339747959219e-04, + 1.401674162984926550e-04, + 1.390073094343048860e-04, + 1.378437584006663385e-04, + 1.366768082825908868e-04, + 1.355065042299668078e-04, + 1.343328914558912025e-04, + 1.331560152350018693e-04, + 1.319759209017845668e-04, + 1.307926538489037214e-04, + 1.296062595255340034e-04, + 1.284167834356670734e-04, + 1.272242711364437822e-04, + 1.260287682364849863e-04, + 1.248303203941986757e-04, + 1.236289733161153974e-04, + 1.224247727552074444e-04, + 1.212177645092228976e-04, + 1.200079944189948124e-04, + 1.187955083667757759e-04, + 1.175803522745720575e-04, + 1.163625721024517923e-04, + 1.151422138468843767e-04, + 1.139193235390733856e-04, + 1.126939472432705159e-04, + 1.114661310551135181e-04, + 1.102359210999678146e-04, + 1.090033635312273645e-04, + 1.077685045286839836e-04, + 1.065313902968447433e-04, + 1.052920670632483271e-04, + 1.040505810768396620e-04, + 1.028069786062748772e-04, + 1.015613059382719616e-04, + 1.003136093759594014e-04, + 9.906393523720000410e-05, + 9.781232985294319551e-05, + 9.655883956557731712e-05, + 9.530351072725912805e-05, + 9.404638969827012747e-05, + 9.278752284537424575e-05, + 9.152695654015217117e-05, + 9.026473715736677960e-05, + 8.900091107331022761e-05, + 8.773552466417485743e-05, + 8.646862430439302587e-05, + 8.520025636500784668e-05, + 8.393046721204431226e-05, + 8.265930320485759296e-05, + 8.138681069450903781e-05, + 8.011303602214466879e-05, + 7.883802551734986341e-05, + 7.756182549653232138e-05, + 7.628448226130869043e-05, + 7.500604209686519846e-05, + 7.372655127034890080e-05, + 7.244605602926513447e-05, + 7.116460259983033057e-05, + 6.988223718540192682e-05, + 6.859900596485298593e-05, + 6.731495509094953793e-05, + 6.603013068878831266e-05, + 6.474457885416511028e-05, + 6.345834565199078199e-05, + 6.217147711470825413e-05, + 6.088401924068444633e-05, + 5.959601799263318424e-05, + 5.830751929604122261e-05, + 5.701856903757009733e-05, + 5.572921306348851825e-05, + 5.443949717810833298e-05, + 5.314946714219649594e-05, + 5.185916867142081036e-05, + 5.056864743478076249e-05, + 4.927794905306088005e-05, + 4.798711909725599640e-05, + 4.669620308702950143e-05, + 4.540524648917313078e-05, + 4.411429471604436624e-05, + 4.282339312403530505e-05, + 4.153258701204434825e-05, + 4.024192161992546632e-05, + 3.895144212696797825e-05, + 3.766119365038407606e-05, + 3.637122124375397715e-05, + 3.508156989554928843e-05, + 3.379228452760169271e-05, + 3.250340999357636493e-05, + 3.121499107750768938e-05, + 2.992707249226543207e-05, + 2.863969887807180632e-05, + 2.735291480101950727e-05, + 2.606676475156658178e-05, + 2.478129314306364820e-05, + 2.349654431028547663e-05, + 2.221256250793961470e-05, + 2.092939190920728174e-05, + 1.964707660428885745e-05, + 1.836566059892662587e-05, + 1.708518781296296948e-05, + 1.580570207888476006e-05, + 1.452724714039143925e-05, + 1.324986665093697166e-05, + 1.197360417230447818e-05, + 1.069850317318606996e-05, + 9.424607027739795737e-06, + 8.151959014179596208e-06, + 6.880602313370171242e-06, + 5.610580007399637890e-06, + 4.341935078184899107e-06, + 3.074710406085300690e-06, + 1.808948768475808304e-06, + 5.446928383989096508e-07, +-7.180148168362075570e-07, +-1.979131737048930197e-06, +-3.238615570522119734e-06, +-4.496424075386408844e-06, +-5.752515120998873115e-06, +-7.006846689258187335e-06, +-8.259376875987296666e-06, +-9.510063892264602613e-06, +-1.075886606575263161e-05, +-1.200574184204806324e-05, +-1.325064978599878937e-05, +-1.449354858301492638e-05, +-1.573439704040153166e-05, +-1.697315408865764387e-05, +-1.820977878276983439e-05, +-1.944423030352651952e-05, +-2.067646795879647204e-05, +-2.190645118481880153e-05, +-2.313413954746912636e-05, +-2.435949274354964214e-05, +-2.558247060204550530e-05, +-2.680303308537577888e-05, +-2.802114029066407334e-05, +-2.923675245097673259e-05, +-3.044982993655440635e-05, +-3.166033325606376153e-05, +-3.286822305781628134e-05, +-3.407346013097800114e-05, +-3.527600540681618846e-05, +-3.647581995986938350e-05, +-3.767286500916668611e-05, +-3.886710191944030718e-05, +-4.005849220227566319e-05, +-4.124699751732548614e-05, +-4.243257967347268458e-05, +-4.361520062999010112e-05, +-4.479482249771946035e-05, +-4.597140754021680130e-05, +-4.714491817489179773e-05, +-4.831531697416636370e-05, +-4.948256666659907966e-05, +-5.064663013800463793e-05, +-5.180747043259000526e-05, +-5.296505075405724623e-05, +-5.411933446671401727e-05, +-5.527028509656192946e-05, +-5.641786633240519273e-05, +-5.756204202692676101e-05, +-5.870277619775746402e-05, +-5.984003302856355690e-05, +-6.097377687010093063e-05, +-6.210397224126283763e-05, +-6.323058383014574374e-05, +-6.435357649508150228e-05, +-6.547291526566067826e-05, +-6.658856534378977427e-05, +-6.770049210467434431e-05, +-6.880866109784741379e-05, +-6.991303804819054047e-05, +-7.101358885689487840e-05, +-7.211027960248054473e-05, +-7.320307654176841730e-05, +-7.429194611084508808e-05, +-7.537685492604744074e-05, +-7.645776978491243883e-05, +-7.753465766712103224e-05, +-7.860748573545866538e-05, +-7.967622133674323235e-05, +-8.074083200274496822e-05, +-8.180128545112448721e-05, +-8.285754958633706154e-05, +-8.390959250053051696e-05, +-8.495738247445779219e-05, +-8.600088797835758216e-05, +-8.704007767283999562e-05, +-8.807492040975105731e-05, +-8.910538523305462514e-05, +-9.013144137968244528e-05, +-9.115305828037637405e-05, +-9.217020556054804175e-05, +-9.318285304110298186e-05, +-9.419097073926184646e-05, +-9.519452886939276171e-05, +-9.619349784381526385e-05, +-9.718784827359122462e-05, +-9.817755096934835705e-05, +-9.916257694203322096e-05, +-1.001428974037043575e-04, +-1.011184837683172381e-04, +-1.020893076524557482e-04, +-1.030553408761100215e-04, +-1.040165554634148897e-04, +-1.049729236433791441e-04, +-1.059244178506295558e-04, +-1.068710107261247144e-04, +-1.078126751178599897e-04, +-1.087493840815880928e-04, +-1.096811108815070424e-04, +-1.106078289909413835e-04, +-1.115295120930364010e-04, +-1.124461340814203241e-04, +-1.133576690608719642e-04, +-1.142640913479660861e-04, +-1.151653754717347307e-04, +-1.160614961742975702e-04, +-1.169524284114851755e-04, +-1.178381473534741549e-04, +-1.187186283853938334e-04, +-1.195938471079232413e-04, +-1.204637793379019538e-04, +-1.213284011089104509e-04, +-1.221876886718401499e-04, +-1.230416184954905576e-04, +-1.238901672671010028e-04, +-1.247333118929212661e-04, +-1.255710294987587088e-04, +-1.264032974305102908e-04, +-1.272300932546930165e-04, +-1.280513947589578198e-04, +-1.288671799526124745e-04, +-1.296774270671184842e-04, +-1.304821145565805186e-04, +-1.312812210982427878e-04, +-1.320747255929631645e-04, +-1.328626071656733459e-04, +-1.336448451658530572e-04, +-1.344214191679748451e-04, +-1.351923089719428005e-04, +-1.359574946035365934e-04, +-1.367169563148357212e-04, +-1.374706745846251629e-04, +-1.382186301188279216e-04, +-1.389608038508802126e-04, +-1.396971769421342718e-04, +-1.404277307822541707e-04, +-1.411524469895631404e-04, +-1.418713074114345352e-04, +-1.425842941246375302e-04, +-1.432913894356834699e-04, +-1.439925758811756858e-04, +-1.446878362281358687e-04, +-1.453771534743216040e-04, +-1.460605108485528523e-04, +-1.467378918110107556e-04, +-1.474092800535296670e-04, +-1.480746594998980710e-04, +-1.487340143061296072e-04, +-1.493873288607390807e-04, +-1.500345877849973582e-04, +-1.506757759331978921e-04, +-1.513108783928950008e-04, +-1.519398804851365659e-04, +-1.525627677647030172e-04, +-1.531795260203213001e-04, +-1.537901412748724731e-04, +-1.543945997856018535e-04, +-1.549928880443109482e-04, +-1.555849927775345039e-04, +-1.561709009467364222e-04, +-1.567505997484549890e-04, +-1.573240766144746387e-04, +-1.578913192119859557e-04, +-1.584523154437074573e-04, +-1.590070534480365959e-04, +-1.595555215991698072e-04, +-1.600977085072144001e-04, +-1.606336030183057588e-04, +-1.611631942147045418e-04, +-1.616864714148802190e-04, +-1.622034241736069430e-04, +-1.627140422820305254e-04, +-1.632183157677305886e-04, +-1.637162348947869734e-04, +-1.642077901638237846e-04, +-1.646929723120502381e-04, +-1.651717723132891758e-04, +-1.656441813780085614e-04, +-1.661101909533315639e-04, +-1.665697927230395654e-04, +-1.670229786075785048e-04, +-1.674697407640450260e-04, +-1.679100715861622740e-04, +-1.683439637042634417e-04, +-1.687714099852501094e-04, +-1.691924035325449466e-04, +-1.696069376860520302e-04, +-1.700150060220808419e-04, +-1.704166023532863389e-04, +-1.708117207285957974e-04, +-1.712003554331125354e-04, +-1.715825009880269812e-04, +-1.719581521505229708e-04, +-1.723273039136506257e-04, +-1.726899515062232178e-04, +-1.730460903926834605e-04, +-1.733957162729666006e-04, +-1.737388250823631317e-04, +-1.740754129913643492e-04, +-1.744054764054994494e-04, +-1.747290119651748229e-04, +-1.750460165454943489e-04, +-1.753564872560722343e-04, +-1.756604214408476693e-04, +-1.759578166778806184e-04, +-1.762486707791445473e-04, +-1.765329817903072524e-04, +-1.768107479905120137e-04, +-1.770819678921413745e-04, +-1.773466402405756901e-04, +-1.776047640139495881e-04, +-1.778563384228910014e-04, +-1.781013629102586016e-04, +-1.783398371508690676e-04, +-1.785717610512195031e-04, +-1.787971347491934548e-04, +-1.790159586137734095e-04, +-1.792282332447294108e-04, +-1.794339594723093573e-04, +-1.796331383569258031e-04, +-1.798257711888182563e-04, +-1.800118594877267528e-04, +-1.801914050025463752e-04, +-1.803644097109737487e-04, +-1.805308758191553800e-04, +-1.806908057613164538e-04, +-1.808442021993881654e-04, +-1.809910680226299573e-04, +-1.811314063472383123e-04, +-1.812652205159478482e-04, +-1.813925140976337677e-04, +-1.815132908868963117e-04, +-1.816275549036418225e-04, +-1.817353103926566259e-04, +-1.818365618231754916e-04, +-1.819313138884383297e-04, +-1.820195715052398135e-04, +-1.821013398134776193e-04, +-1.821766241756863822e-04, +-1.822454301765652008e-04, +-1.823077636225030275e-04, +-1.823636305410920519e-04, +-1.824130371806331958e-04, +-1.824559900096393860e-04, +-1.824924957163258170e-04, +-1.825225612080964995e-04, +-1.825461936110244399e-04, +-1.825634002693198661e-04, +-1.825741887447973697e-04, +-1.825785668163316629e-04, +-1.825765424793094065e-04, +-1.825681239450706284e-04, +-1.825533196403450475e-04, +-1.825321382066837615e-04, +-1.825045884998782774e-04, +-1.824706795893784304e-04, +-1.824304207576995151e-04, +-1.823838214998261913e-04, +-1.823308915226047339e-04, +-1.822716407441320587e-04, +-1.822060792931381058e-04, +-1.821342175083605266e-04, +-1.820560659379111300e-04, +-1.819716353386392391e-04, +-1.818809366754839884e-04, +-1.817839811208264050e-04, +-1.816807800538262831e-04, +-1.815713450597606585e-04, +-1.814556879293510608e-04, +-1.813338206580860767e-04, +-1.812057554455368392e-04, +-1.810715046946656049e-04, +-1.809310810111300751e-04, +-1.807844972025789360e-04, +-1.806317662779418417e-04, +-1.804729014467158733e-04, +-1.803079161182383379e-04, +-1.801368239009649064e-04, +-1.799596386017289409e-04, +-1.797763742250039392e-04, +-1.795870449721572782e-04, +-1.793916652406948506e-04, +-1.791902496235038035e-04, +-1.789828129080874171e-04, +-1.787693700757942371e-04, +-1.785499363010407557e-04, +-1.783245269505291056e-04, +-1.780931575824585471e-04, +-1.778558439457310185e-04, +-1.776126019791501821e-04, +-1.773634478106175967e-04, +-1.771083977563196743e-04, +-1.768474683199085652e-04, +-1.765806761916838296e-04, +-1.763080382477592010e-04, +-1.760295715492312199e-04, +-1.757452933413390856e-04, +-1.754552210526194665e-04, +-1.751593722940540730e-04, +-1.748577648582191283e-04, +-1.745504167184149164e-04, +-1.742373460278082598e-04, +-1.739185711185566193e-04, +-1.735941105009274781e-04, +-1.732639828624223609e-04, +-1.729282070668846435e-04, +-1.725868021536064684e-04, +-1.722397873364351186e-04, +-1.718871820028644831e-04, +-1.715290057131288806e-04, +-1.711652781992939834e-04, +-1.707960193643319924e-04, +-1.704212492812016110e-04, +-1.700409881919235722e-04, +-1.696552565066424792e-04, +-1.692640748026914637e-04, +-1.688674638236499059e-04, +-1.684654444783993655e-04, +-1.680580378401653910e-04, +-1.676452651455659696e-04, +-1.672271477936518726e-04, +-1.668037073449352104e-04, +-1.663749655204242760e-04, +-1.659409442006490364e-04, +-1.655016654246796318e-04, +-1.650571513891427062e-04, +-1.646074244472387404e-04, +-1.641525071077430957e-04, +-1.636924220340138872e-04, +-1.632271920429934878e-04, +-1.627568401041943659e-04, +-1.622813893387030555e-04, +-1.618008630181590006e-04, +-1.613152845637352427e-04, +-1.608246775451269140e-04, +-1.603290656795160413e-04, +-1.598284728305475173e-04, +-1.593229230072979970e-04, +-1.588124403632332475e-04, +-1.582970491951708378e-04, +-1.577767739422375698e-04, +-1.572516391848175312e-04, +-1.567216696435003653e-04, +-1.561868901780303536e-04, +-1.556473257862415398e-04, +-1.551030016029978948e-04, +-1.545539428991258386e-04, +-1.540001750803473310e-04, +-1.534417236862029065e-04, +-1.528786143889750886e-04, +-1.523108729926141082e-04, +-1.517385254316474131e-04, +-1.511615977700947607e-04, +-1.505801162003850193e-04, +-1.499941070422536695e-04, +-1.494035967416507691e-04, +-1.488086118696474263e-04, +-1.482091791213196140e-04, +-1.476053253146584381e-04, +-1.469970773894543577e-04, +-1.463844624061801049e-04, +-1.457675075448910593e-04, +-1.451462401040951847e-04, +-1.445206874996382248e-04, +-1.438908772635859724e-04, +-1.432568370430905463e-04, +-1.426185945992657750e-04, +-1.419761778060623378e-04, +-1.413296146491254215e-04, +-1.406789332246638708e-04, +-1.400241617383160314e-04, +-1.393653285040007941e-04, +-1.387024619427811880e-04, +-1.380355905817142045e-04, +-1.373647430527111116e-04, +-1.366899480913779264e-04, +-1.360112345358680040e-04, +-1.353286313257320785e-04, +-1.346421675007523119e-04, +-1.339518721997900585e-04, +-1.332577746596274757e-04, +-1.325599042137975351e-04, +-1.318582902914237356e-04, +-1.311529624160579746e-04, +-1.304439502045035384e-04, +-1.297312833656484999e-04, +-1.290149916993015033e-04, +-1.282951050949993576e-04, +-1.275716535308531478e-04, +-1.268446670723617927e-04, +-1.261141758712232708e-04, +-1.253802101641751209e-04, +-1.246428002717956936e-04, +-1.239019765973267077e-04, +-1.231577696254946143e-04, +-1.224102099213130140e-04, +-1.216593281289018254e-04, +-1.209051549703030242e-04, +-1.201477212442807164e-04, +-1.193870578251345196e-04, +-1.186231956615130527e-04, +-1.178561657752098888e-04, +-1.170859992599766926e-04, +-1.163127272803225206e-04, +-1.155363810703263490e-04, +-1.147569919324271714e-04, +-1.139745912362324069e-04, +-1.131892104173229732e-04, +-1.124008809760428161e-04, +-1.116096344763034813e-04, +-1.108155025443885786e-04, +-1.100185168677391767e-04, +-1.092187091937578478e-04, +-1.084161113286116805e-04, +-1.076107551360083378e-04, +-1.068026725360152662e-04, +-1.059918955038434781e-04, +-1.051784560686322293e-04, +-1.043623863122651645e-04, +-1.035437183681457658e-04, +-1.027224844199966933e-04, +-1.018987167006602239e-04, +-1.010724474908790389e-04, +-1.002437091180949412e-04, +-9.941253395524840032e-05, +-9.857895441955837686e-05, +-9.774300297132163689e-05, +-9.690471211271142868e-05, +-9.606411438655779590e-05, +-9.522124237514915479e-05, +-9.437612869902159266e-05, +-9.352880601575852060e-05, +-9.267930701877419861e-05, +-9.182766443611142316e-05, +-9.097391102924314498e-05, +-9.011807959185397492e-05, +-8.926020294864151709e-05, +-8.840031395411717351e-05, +-8.753844549139025205e-05, +-8.667463047096955709e-05, +-8.580890182956689113e-05, +-8.494129252888212489e-05, +-8.407183555440741725e-05, +-8.320056391423181455e-05, +-8.232751063782899059e-05, +-8.145270877486337742e-05, +-8.057619139399704151e-05, +-7.969799158168016132e-05, +-7.881814244096163049e-05, +-7.793667709028861555e-05, +-7.705362866232014067e-05, +-7.616903030272012662e-05, +-7.528291516897048761e-05, +-7.439531642918523094e-05, +-7.350626726090823937e-05, +-7.261580084992840087e-05, +-7.172395038909805853e-05, +-7.083074907713423545e-05, +-6.993623011743750476e-05, +-6.904042671691702630e-05, +-6.814337208478443936e-05, +-6.724509943139868600e-05, +-6.634564196707426953e-05, +-6.544503290088958081e-05, +-6.454330543953721027e-05, +-6.364049278612536240e-05, +-6.273662813901244686e-05, +-6.183174469064137136e-05, +-6.092587562635654838e-05, +-6.001905412324112224e-05, +-5.911131334895745545e-05, +-5.820268646056820803e-05, +-5.729320660338046951e-05, +-5.638290690979031112e-05, +-5.547182049811131215e-05, +-5.455998047142553603e-05, +-5.364741991642378637e-05, +-5.273417190226172620e-05, +-5.182026947939526195e-05, +-5.090574567843844482e-05, +-4.999063350902295110e-05, +-4.907496595864112326e-05, +-4.815877599150988192e-05, +-4.724209654743732802e-05, +-4.632496054067239074e-05, +-4.540740085877575293e-05, +-4.448945036149627881e-05, +-4.357114187961620320e-05, +-4.265250821385204182e-05, +-4.173358213371594866e-05, +-4.081439637638023104e-05, +-3.989498364558491427e-05, +-3.897537661049697800e-05, +-3.805560790460379240e-05, +-3.713571012460757073e-05, +-3.621571582930308459e-05, +-3.529565753847758492e-05, +-3.437556773181348106e-05, +-3.345547884777428906e-05, +-3.253542328251334833e-05, +-3.161543338878512684e-05, +-3.069554147484003959e-05, +-2.977577980334398359e-05, +-2.885618059028785404e-05, +-2.793677600391348290e-05, +-2.701759816362029885e-05, +-2.609867913889508769e-05, +-2.518005094824508650e-05, +-2.426174555811442190e-05, +-2.334379488182336724e-05, +-2.242623077851109645e-05, +-2.150908505206193760e-05, +-2.059238945005458792e-05, +-1.967617566271486932e-05, +-1.876047532185217014e-05, +-1.784531999981886515e-05, +-1.693074120847545477e-05, +-1.601677039812668827e-05, +-1.510343895651326084e-05, +-1.419077820776580416e-05, +-1.327881941136239376e-05, +-1.236759376113135585e-05, +-1.145713238420517479e-05, +-1.054746634001075531e-05, +-9.638626619261631142e-06, +-8.730644142933770109e-06, +-7.823549761265219694e-06, +-6.917374252759404239e-06, +-6.012148323172715587e-06, +-5.107902604525509790e-06, +-4.204667654117172963e-06, +-3.302473953525395900e-06, +-2.401351907631273461e-06, +-1.501331843635360604e-06, +-6.024440100907752780e-07, + 2.952814240813488971e-07, + 1.191814370550560616e-06, + 2.087124822544718775e-06, + 2.981182855800449203e-06, + 3.873958629533237150e-06, + 4.765422387370817619e-06, + 5.655544458312672488e-06, + 6.544295257674329934e-06, + 7.431645288005860712e-06, + 8.317565140049265089e-06, + 9.202025493650286029e-06, + 1.008499711868988624e-05, + 1.096645087600670940e-05, + 1.184635771831740180e-05, + 1.272468869110877350e-05, + 1.360141493356852997e-05, + 1.447650767946839209e-05, + 1.534993825807918981e-05, + 1.622167809504512388e-05, + 1.709169871329599150e-05, + 1.795997173391202393e-05, + 1.882646887700788730e-05, + 1.969116196260968364e-05, + 2.055402291153119961e-05, + 2.141502374622265733e-05, + 2.227413659165448814e-05, + 2.313133367615436721e-05, + 2.398658733226025704e-05, + 2.483986999757942419e-05, + 2.569115421561321566e-05, + 2.654041263660582986e-05, + 2.738761801837843408e-05, + 2.823274322713895842e-05, + 2.907576123831658591e-05, + 2.991664513738264263e-05, + 3.075536812064811308e-05, + 3.159190349608258556e-05, + 3.242622468411841504e-05, + 3.325830521842883816e-05, + 3.408811874674232763e-05, + 3.491563903161259936e-05, + 3.574083995120635993e-05, + 3.656369550008192634e-05, + 3.738417978996398335e-05, + 3.820226705049147969e-05, + 3.901793163000071338e-05, + 3.983114799626283998e-05, + 4.064189073725000368e-05, + 4.145013456186270824e-05, + 4.225585430069115050e-05, + 4.305902490673210845e-05, + 4.385962145612164501e-05, + 4.465761914886132026e-05, + 4.545299330954223513e-05, + 4.624571938804247838e-05, + 4.703577296025655071e-05, + 4.782312972877953019e-05, + 4.860776552360599644e-05, + 4.938965630283344066e-05, + 5.016877815333190276e-05, + 5.094510729143668170e-05, + 5.171862006362476922e-05, + 5.248929294716893546e-05, + 5.325710255081278033e-05, + 5.402202561543325557e-05, + 5.478403901467974774e-05, + 5.554311975563655285e-05, + 5.629924497944692956e-05, + 5.705239196197055263e-05, + 5.780253811439589059e-05, + 5.854966098386711859e-05, + 5.929373825411444641e-05, + 6.003474774605410918e-05, + 6.077266741839936951e-05, + 6.150747536827406070e-05, + 6.223914983179369882e-05, + 6.296766918465726733e-05, + 6.369301194274349439e-05, + 6.441515676267491584e-05, + 6.513408244240155543e-05, + 6.584976792177056463e-05, + 6.656219228307079028e-05, + 6.727133475160919070e-05, + 6.797717469624548284e-05, + 6.867969162994176505e-05, + 6.937886521030273439e-05, + 7.007467524011137729e-05, + 7.076710166783914098e-05, + 7.145612458818644886e-05, + 7.214172424258097273e-05, + 7.282388101970076037e-05, + 7.350257545596115068e-05, + 7.417778823603089463e-05, + 7.484950019330741523e-05, + 7.551769231040494251e-05, + 7.618234571963618381e-05, + 7.684344170348963033e-05, + 7.750096169508325500e-05, + 7.815488727864462434e-05, + 7.880520018995008165e-05, + 7.945188231677633079e-05, + 8.009491569935304990e-05, + 8.073428253078868469e-05, + 8.136996515750435975e-05, + 8.200194607966915857e-05, + 8.263020795160580490e-05, + 8.325473358220520747e-05, + 8.387550593534295624e-05, + 8.449250813026791399e-05, + 8.510572344200524142e-05, + 8.571513530174807870e-05, + 8.632072729722484606e-05, + 8.692248317309331067e-05, + 8.752038683129901024e-05, + 8.811442233144304160e-05, + 8.870457389114338456e-05, + 8.929082588638862286e-05, + 8.987316285187106537e-05, + 9.045156948134251338e-05, + 9.102603062793538779e-05, + 9.159653130450137965e-05, + 9.216305668392023092e-05, + 9.272559209943155459e-05, + 9.328412304492929037e-05, + 9.383863517526969946e-05, + 9.438911430656809717e-05, + 9.493554641649538212e-05, + 9.547791764454981872e-05, + 9.601621429235263126e-05, + 9.655042282390628803e-05, + 9.708052986586289553e-05, + 9.760652220779222682e-05, + 9.812838680242494871e-05, + 9.864611076590789718e-05, + 9.915968137804796864e-05, + 9.966908608253591284e-05, + 1.001743124871836511e-04, + 1.006753483641505495e-04, + 1.011721816501509347e-04, + 1.016648004466722905e-04, + 1.021531930201818650e-04, + 1.026373478023125444e-04, + 1.031172533900710195e-04, + 1.035928985460102687e-04, + 1.040642721984211093e-04, + 1.045313634414944215e-04, + 1.049941615355039177e-04, + 1.054526559069498941e-04, + 1.059068361487303583e-04, + 1.063566920202775173e-04, + 1.068022134477129804e-04, + 1.072433905239719281e-04, + 1.076802135089481642e-04, + 1.081126728296077813e-04, + 1.085407590801087480e-04, + 1.089644630219215672e-04, + 1.093837755839255533e-04, + 1.097986878625127665e-04, + 1.102091911216893311e-04, + 1.106152767931523875e-04, + 1.110169364763758927e-04, + 1.114141619386907023e-04, + 1.118069451153470476e-04, + 1.121952781095839519e-04, + 1.125791531926881702e-04, + 1.129585628040368796e-04, + 1.133334995511501008e-04, + 1.137039562097310843e-04, + 1.140699257236937680e-04, + 1.144314012051948288e-04, + 1.147883759346569253e-04, + 1.151408433607740240e-04, + 1.154887971005323107e-04, + 1.158322309392037936e-04, + 1.161711388303520364e-04, + 1.165055148958135504e-04, + 1.168353534256955583e-04, + 1.171606488783407714e-04, + 1.174813958803127119e-04, + 1.177975892263542019e-04, + 1.181092238793556910e-04, + 1.184162949703029973e-04, + 1.187187977982362983e-04, + 1.190167278301852000e-04, + 1.193100807011072902e-04, + 1.195988522138254984e-04, + 1.198830383389472417e-04, + 1.201626352147854541e-04, + 1.204376391472792771e-04, + 1.207080466098931610e-04, + 1.209738542435215096e-04, + 1.212350588563896518e-04, + 1.214916574239373304e-04, + 1.217436470887086827e-04, + 1.219910251602316097e-04, + 1.222337891148846220e-04, + 1.224719365957710460e-04, + 1.227054654125758813e-04, + 1.229343735414234321e-04, + 1.231586591247274835e-04, + 1.233783204710379956e-04, + 1.235933560548721033e-04, + 1.238037645165556062e-04, + 1.240095446620432347e-04, + 1.242106954627461807e-04, + 1.244072160553410340e-04, + 1.245991057415880973e-04, + 1.247863639881286672e-04, + 1.249689904262876012e-04, + 1.251469848518637956e-04, + 1.253203472249227505e-04, + 1.254890776695720585e-04, + 1.256531764737451066e-04, + 1.258126440889665361e-04, + 1.259674811301178380e-04, + 1.261176883752020540e-04, + 1.262632667650915913e-04, + 1.264042174032825963e-04, + 1.265405415556367791e-04, + 1.266722406501169496e-04, + 1.267993162765220384e-04, + 1.269217701862141486e-04, + 1.270396042918389679e-04, + 1.271528206670432789e-04, + 1.272614215461862364e-04, + 1.273654093240424320e-04, + 1.274647865555052825e-04, + 1.275595559552792258e-04, + 1.276497203975718612e-04, + 1.277352829157760346e-04, + 1.278162467021519769e-04, + 1.278926151074969212e-04, + 1.279643916408172396e-04, + 1.280315799689897116e-04, + 1.280941839164217891e-04, + 1.281522074647016432e-04, + 1.282056547522501897e-04, + 1.282545300739606185e-04, + 1.282988378808358910e-04, + 1.283385827796232825e-04, + 1.283737695324414709e-04, + 1.284044030564011473e-04, + 1.284304884232255993e-04, + 1.284520308588603171e-04, + 1.284690357430805935e-04, + 1.284815086090963592e-04, + 1.284894551431463663e-04, + 1.284928811840932927e-04, + 1.284917927230116367e-04, + 1.284861959027673725e-04, + 1.284760970175989592e-04, + 1.284615025126892719e-04, + 1.284424189837336003e-04, + 1.284188531765034476e-04, + 1.283908119864055856e-04, + 1.283583024580350375e-04, + 1.283213317847250535e-04, + 1.282799073080907422e-04, + 1.282340365175699932e-04, + 1.281837270499577570e-04, + 1.281289866889366677e-04, + 1.280698233646027041e-04, + 1.280062451529876257e-04, + 1.279382602755736839e-04, + 1.278658770988078184e-04, + 1.277891041336076130e-04, + 1.277079500348651917e-04, + 1.276224236009459653e-04, + 1.275325337731827698e-04, + 1.274382896353649084e-04, + 1.273397004132248639e-04, + 1.272367754739175559e-04, + 1.271295243254984600e-04, + 1.270179566163950056e-04, + 1.269020821348746655e-04, + 1.267819108085093880e-04, + 1.266574527036339287e-04, + 1.265287180248019611e-04, + 1.263957171142360064e-04, + 1.262584604512751135e-04, + 1.261169586518176339e-04, + 1.259712224677588725e-04, + 1.258212627864269779e-04, + 1.256670906300113503e-04, + 1.255087171549896141e-04, + 1.253461536515512828e-04, + 1.251794115430136995e-04, + 1.250085023852383836e-04, + 1.248334378660397612e-04, + 1.246542298045934076e-04, + 1.244708901508351825e-04, + 1.242834309848641326e-04, + 1.240918645163340103e-04, + 1.238962030838462291e-04, + 1.236964591543354729e-04, + 1.234926453224550894e-04, + 1.232847743099538902e-04, + 1.230728589650547408e-04, + 1.228569122618265632e-04, + 1.226369472995509724e-04, + 1.224129773020896984e-04, + 1.221850156172453407e-04, + 1.219530757161173793e-04, + 1.217171711924584841e-04, + 1.214773157620262429e-04, + 1.212335232619264738e-04, + 1.209858076499619996e-04, + 1.207341830039695355e-04, + 1.204786635211565782e-04, + 1.202192635174392153e-04, + 1.199559974267663017e-04, + 1.196888798004520926e-04, + 1.194179253064969905e-04, + 1.191431487289076695e-04, + 1.188645649670141090e-04, + 1.185821890347872241e-04, + 1.182960360601446778e-04, + 1.180061212842623588e-04, + 1.177124600608760467e-04, + 1.174150678555863162e-04, + 1.171139602451523425e-04, + 1.168091529167905303e-04, + 1.165006616674679399e-04, + 1.161885024031892341e-04, + 1.158726911382824601e-04, + 1.155532439946868644e-04, + 1.152301772012276424e-04, + 1.149035070928978856e-04, + 1.145732501101350112e-04, + 1.142394227980874630e-04, + 1.139020418058898806e-04, + 1.135611238859260056e-04, + 1.132166858930924123e-04, + 1.128687447840643682e-04, + 1.125173176165511903e-04, + 1.121624215485506521e-04, + 1.118040738376078509e-04, + 1.114422918400608334e-04, + 1.110770930102897308e-04, + 1.107084948999681993e-04, + 1.103365151572992199e-04, + 1.099611715262632718e-04, + 1.095824818458501212e-04, + 1.092004640493029560e-04, + 1.088151361633424768e-04, + 1.084265163074088901e-04, + 1.080346226928835464e-04, + 1.076394736223217042e-04, + 1.072410874886718234e-04, + 1.068394827745053479e-04, + 1.064346780512280842e-04, + 1.060266919783064195e-04, + 1.056155433024818857e-04, + 1.052012508569847866e-04, + 1.047838335607436663e-04, + 1.043633104176028129e-04, + 1.039397005155208437e-04, + 1.035130230257845225e-04, + 1.030832972022132136e-04, + 1.026505423803556361e-04, + 1.022147779766975569e-04, + 1.017760234878557670e-04, + 1.013342984897746207e-04, + 1.008896226369277094e-04, + 1.004420156615070016e-04, + 9.999149737261256313e-05, + 9.953808765544943542e-05, + 9.908180647051075636e-05, + 9.862267385276454106e-05, + 9.816070991084661532e-05, + 9.769593482623487371e-05, + 9.722836885244083062e-05, + 9.675803231418238757e-05, + 9.628494560657163031e-05, + 9.580912919428301528e-05, + 9.533060361074271170e-05, + 9.484938945729212603e-05, + 9.436550740237209403e-05, + 9.387897818068666276e-05, + 9.338982259238482961e-05, + 9.289806150221876775e-05, + 9.240371583872346458e-05, + 9.190680659338318706e-05, + 9.140735481979174004e-05, + 9.090538163282673790e-05, + 9.040090820781176019e-05, + 8.989395577967375036e-05, + 8.938454564211442785e-05, + 8.887269914677176606e-05, + 8.835843770237281037e-05, + 8.784178277390430412e-05, + 8.732275588176149504e-05, + 8.680137860091756863e-05, + 8.627767256006760278e-05, + 8.575165944079697112e-05, + 8.522336097673384936e-05, + 8.469279895270370013e-05, + 8.415999520388011237e-05, + 8.362497161494898983e-05, + 8.308775011924755902e-05, + 8.254835269792869332e-05, + 8.200680137911156250e-05, + 8.146311823702630565e-05, + 8.091732539117420817e-05, + 8.036944500547171062e-05, + 7.981949928739913382e-05, + 7.926751048716019175e-05, + 7.871350089682433349e-05, + 7.815749284947355732e-05, + 7.759950871835902351e-05, + 7.703957091604317928e-05, + 7.647770189354594962e-05, + 7.591392413950464322e-05, + 7.534826017930776982e-05, + 7.478073257425246604e-05, + 7.421136392068941221e-05, + 7.364017684916770860e-05, + 7.306719402358060537e-05, + 7.249243814032418887e-05, + 7.191593192743057548e-05, + 7.133769814372726192e-05, + 7.075775957797366669e-05, + 7.017613904802144252e-05, + 6.959285939994649126e-05, + 6.900794350720966942e-05, + 6.842141426980163726e-05, + 6.783329461339003888e-05, + 6.724360748846380928e-05, + 6.665237586949324285e-05, + 6.605962275406314669e-05, + 6.546537116203540285e-05, + 6.486964413469693445e-05, + 6.427246473390174945e-05, + 6.367385604123233735e-05, + 6.307384115714270224e-05, + 6.247244320010872777e-05, + 6.186968530579037349e-05, + 6.126559062617670010e-05, + 6.066018232873614631e-05, + 6.005348359557971457e-05, + 5.944551762260716853e-05, + 5.883630761866076592e-05, + 5.822587680469341111e-05, + 5.761424841290975024e-05, + 5.700144568593581458e-05, + 5.638749187596620071e-05, + 5.577241024393500140e-05, + 5.515622405865875061e-05, + 5.453895659601687505e-05, + 5.392063113809588597e-05, + 5.330127097236401671e-05, + 5.268089939082399323e-05, + 5.205953968918941317e-05, + 5.143721516603453481e-05, + 5.081394912197322435e-05, + 5.018976485882552967e-05, + 4.956468567877652244e-05, + 4.893873488355664800e-05, + 4.831193577360924787e-05, + 4.768431164725405710e-05, + 4.705588579987165387e-05, + 4.642668152307624028e-05, + 4.579672210388313099e-05, + 4.516603082389661800e-05, + 4.453463095847968187e-05, + 4.390254577593236975e-05, + 4.326979853668558263e-05, + 4.263641249246714773e-05, + 4.200241088549816715e-05, + 4.136781694767275794e-05, + 4.073265389974401959e-05, + 4.009694495050920865e-05, + 3.946071329601255194e-05, + 3.882398211872058891e-05, + 3.818677458672821028e-05, + 3.754911385294185409e-05, + 3.691102305428816007e-05, + 3.627252531089499038e-05, + 3.563364372531120389e-05, + 3.499440138169012998e-05, + 3.435482134500644248e-05, + 3.371492666024863239e-05, + 3.307474035163948005e-05, + 3.243428542182762658e-05, + 3.179358485111165100e-05, + 3.115266159665085920e-05, + 3.051153859167018086e-05, + 2.987023874468685547e-05, + 2.922878493872556820e-05, + 2.858720003052916093e-05, + 2.794550684979286022e-05, + 2.730372819838677219e-05, + 2.666188684957304119e-05, + 2.602000554724588161e-05, + 2.537810700515306993e-05, + 2.473621390612689978e-05, + 2.409434890133213189e-05, + 2.345253460948628331e-05, + 2.281079361611086382e-05, + 2.216914847276788082e-05, + 2.152762169630188368e-05, + 2.088623576808264857e-05, + 2.024501313326714172e-05, + 1.960397620003284614e-05, + 1.896314733884459027e-05, + 1.832254888169719884e-05, + 1.768220312138699715e-05, + 1.704213231075473977e-05, + 1.640235866196212581e-05, + 1.576290434575326077e-05, + 1.512379149072065329e-05, + 1.448504218257062422e-05, + 1.384667846340775344e-05, + 1.320872233099333137e-05, + 1.257119573803645674e-05, + 1.193412059147283715e-05, + 1.129751875173838041e-05, + 1.066141203206686703e-05, + 1.002582219776904043e-05, + 9.390770965521807415e-06, + 8.756280002674018430e-06, + 8.122370926533653768e-06, + 7.489065303663868882e-06, + 6.856384649195353557e-06, + 6.224350426121986744e-06, + 5.592984044606705769e-06, + 4.962306861305528297e-06, + 4.332340178664007615e-06, + 3.703105244246982238e-06, + 3.074623250045389130e-06, + 2.446915331811808288e-06, + 1.820002568367166485e-06, + 1.193905980949734002e-06, + 5.686465325277691493e-07, +-5.575487285304644198e-08, +-6.792773907448401563e-07, +-1.301900236944085969e-06, +-1.923602688165210920e-06, +-2.544364082680986205e-06, +-3.164163820976385644e-06, +-3.782981366397813248e-06, +-4.400796245802158099e-06, +-5.017588050186235963e-06, +-5.633336435341474612e-06, +-6.248021122475436530e-06, +-6.861621898845164503e-06, +-7.474118618394712831e-06, +-8.085491202368466090e-06, +-8.695719639942215106e-06, +-9.304783988843304504e-06, +-9.912664375954183488e-06, +-1.051934099793345803e-05, +-1.112479412182761974e-05, +-1.172900408566606791e-05, +-1.233195129907195915e-05, +-1.293361624386246407e-05, +-1.353397947463050106e-05, +-1.413302161935288219e-05, +-1.473072337996534868e-05, +-1.532706553295916325e-05, +-1.592202892994946760e-05, +-1.651559449827052120e-05, +-1.710774324152980488e-05, +-1.769845624019637497e-05, +-1.828771465215499564e-05, +-1.887549971328155552e-05, +-1.946179273799034581e-05, +-2.004657511980633609e-05, +-2.062982833190547631e-05, +-2.121153392766515300e-05, +-2.179167354121897552e-05, +-2.237022888798842138e-05, +-2.294718176522451720e-05, +-2.352251405255091217e-05, +-2.409620771248360396e-05, +-2.466824479095987345e-05, +-2.523860741787020118e-05, +-2.580727780756699865e-05, +-2.637423825938933511e-05, +-2.693947115817652075e-05, +-2.750295897476430872e-05, +-2.806468426650501405e-05, +-2.862462967775755948e-05, +-2.918277794038877664e-05, +-2.973911187426810042e-05, +-3.029361438776029481e-05, +-3.084626847819818535e-05, +-3.139705723238017584e-05, +-3.194596382703590294e-05, +-3.249297152931071537e-05, +-3.303806369722434559e-05, +-3.358122378015165860e-05, +-3.412243531927313121e-05, +-3.466168194803569889e-05, +-3.519894739260904230e-05, +-3.573421547233996282e-05, +-3.626747010018807605e-05, +-3.679869528318357541e-05, +-3.732787512285343890e-05, +-3.785499381565763066e-05, +-3.838003565342774887e-05, +-3.890298502378413190e-05, +-3.942382641056034373e-05, +-3.994254439423548607e-05, +-4.045912365232555468e-05, +-4.097354895980823651e-05, +-4.148580518953054268e-05, +-4.199587731260208921e-05, +-4.250375039880140181e-05, +-4.300940961697082297e-05, +-4.351284023539532541e-05, +-4.401402762220268434e-05, +-4.451295724573500642e-05, +-4.500961467493005047e-05, +-4.550398557969644270e-05, +-4.599605573128578848e-05, +-4.648581100264606125e-05, +-4.697323736879700751e-05, +-4.745832090717593281e-05, +-4.794104779800016403e-05, +-4.842140432460515111e-05, +-4.889937687380196914e-05, +-4.937495193620665830e-05, +-4.984811610657907774e-05, +-5.031885608415570142e-05, +-5.078715867298121454e-05, +-5.125301078222226135e-05, +-5.171639942649958372e-05, +-5.217731172619310883e-05, +-5.263573490775318294e-05, +-5.309165630401457673e-05, +-5.354506335448944344e-05, +-5.399594360567233208e-05, +-5.444428471133557152e-05, +-5.489007443280881170e-05, +-5.533330063927232743e-05, +-5.577395130803952081e-05, +-5.621201452482593887e-05, +-5.664747848402928239e-05, +-5.708033148899782042e-05, +-5.751056195228484579e-05, +-5.793815839592066753e-05, +-5.836310945165795229e-05, +-5.878540386123149239e-05, +-5.920503047659557156e-05, +-5.962197826017918615e-05, +-6.003623628510942461e-05, +-6.044779373545825906e-05, +-6.085663990646246214e-05, +-6.126276420475775398e-05, +-6.166615614858962538e-05, +-6.206680536804276170e-05, +-6.246470160524302299e-05, +-6.285983471456668822e-05, +-6.325219466285137327e-05, +-6.364177152958735192e-05, +-6.402855550711508399e-05, +-6.441253690082210642e-05, +-6.479370612932165555e-05, +-6.517205372463561277e-05, +-6.554757033237868327e-05, +-6.592024671192342521e-05, +-6.629007373657662232e-05, +-6.665704239374386575e-05, +-6.702114378508195228e-05, +-6.738236912666610893e-05, +-6.774070974913359551e-05, +-6.809615709783453077e-05, +-6.844870273297710766e-05, +-6.879833832976684556e-05, +-6.914505567853355039e-05, +-6.948884668487257256e-05, +-6.982970336976173818e-05, +-7.016761786969062664e-05, +-7.050258243676985818e-05, +-7.083458943885569581e-05, +-7.116363135964506208e-05, +-7.148970079879194176e-05, +-7.181279047199880716e-05, +-7.213289321111999682e-05, +-7.245000196424561921e-05, +-7.276410979579796539e-05, +-7.307520988660740318e-05, +-7.338329553399098183e-05, +-7.368836015183327279e-05, +-7.399039727064959232e-05, +-7.428940053765422486e-05, +-7.458536371682649162e-05, +-7.487828068896246702e-05, +-7.516814545172741341e-05, +-7.545495211971084502e-05, +-7.573869492446410907e-05, +-7.601936821454512269e-05, +-7.629696645555583212e-05, +-7.657148423016670209e-05, +-7.684291623815294175e-05, +-7.711125729641124201e-05, +-7.737650233898160873e-05, +-7.763864641706328686e-05, +-7.789768469902625303e-05, +-7.815361247041097159e-05, +-7.840642513393934504e-05, +-7.865611820950585073e-05, +-7.890268733417691736e-05, +-7.914612826217439097e-05, +-7.938643686486866378e-05, +-7.962360913075390014e-05, +-7.985764116542591888e-05, +-8.008852919155679581e-05, +-8.031626954886464159e-05, +-8.054085869407389287e-05, +-8.076229320088036028e-05, +-8.098056975990718272e-05, +-8.119568517865204029e-05, +-8.140763638144178041e-05, +-8.161642040937130949e-05, +-8.182203442024758031e-05, +-8.202447568852058257e-05, +-8.222374160522193641e-05, +-8.241982967788378048e-05, +-8.261273753047048080e-05, +-8.280246290329136604e-05, +-8.298900365292210927e-05, +-8.317235775211005006e-05, +-8.335252328968763443e-05, +-8.352949847047152988e-05, +-8.370328161516191656e-05, +-8.387387116023904080e-05, +-8.404126565785606886e-05, +-8.420546377572122058e-05, +-8.436646429698789907e-05, +-8.452426612012838112e-05, +-8.467886825881031304e-05, +-8.483026984177053666e-05, +-8.497847011267900834e-05, +-8.512346843000541505e-05, +-8.526526426687825518e-05, +-8.540385721093718375e-05, +-8.553924696418820366e-05, +-8.567143334285144370e-05, +-8.580041627720267532e-05, +-8.592619581141530368e-05, +-8.604877210339833367e-05, +-8.616814542462326344e-05, +-8.628431615995866232e-05, +-8.639728480749045067e-05, +-8.650705197834629987e-05, +-8.661361839650910882e-05, +-8.671698489863530527e-05, +-8.681715243385848318e-05, +-8.691412206360001980e-05, +-8.700789496136810514e-05, +-8.709847241255837084e-05, +-8.718585581424549290e-05, +-8.727004667497822326e-05, +-8.735104661456318637e-05, +-8.742885736384824202e-05, +-8.750348076450507569e-05, +-8.757491876880262743e-05, +-8.764317343938039871e-05, +-8.770824694901854736e-05, +-8.777014158040174834e-05, +-8.782885972588042533e-05, +-8.788440388723046438e-05, +-8.793677667540564995e-05, +-8.798598081029018216e-05, +-8.803201912044573247e-05, +-8.807489454285378301e-05, +-8.811461012265841316e-05, +-8.815116901290020925e-05, +-8.818457447425140751e-05, +-8.821482987474516880e-05, +-8.824193868950264423e-05, +-8.826590450045338659e-05, +-8.828673099605780807e-05, +-8.830442197102115424e-05, +-8.831898132600694937e-05, +-8.833041306734530542e-05, +-8.833872130674032296e-05, +-8.834391026097091913e-05, +-8.834598425159074760e-05, +-8.834494770462315827e-05, +-8.834080515025570979e-05, +-8.833356122252653691e-05, +-8.832322065901227653e-05, +-8.830978830050965098e-05, +-8.829326909071538449e-05, +-8.827366807590174215e-05, +-8.825099040459032053e-05, +-8.822524132722051222e-05, +-8.819642619581737411e-05, +-8.816455046365366793e-05, +-8.812961968491066765e-05, +-8.809163951433589040e-05, +-8.805061570689537930e-05, +-8.800655411742644701e-05, +-8.795946070028372440e-05, +-8.790934150898470779e-05, +-8.785620269585141652e-05, +-8.780005051164863539e-05, +-8.774089130521977177e-05, +-8.767873152311891807e-05, +-8.761357770924130142e-05, +-8.754543650444930169e-05, +-8.747431464619596225e-05, +-8.740021896814629176e-05, +-8.732315639979467629e-05, +-8.724313396607997399e-05, +-8.716015878699776378e-05, +-8.707423807720901607e-05, +-8.698537914564708309e-05, +-8.689358939512097568e-05, +-8.679887632191602461e-05, +-8.670124751539183127e-05, +-8.660071065757758918e-05, +-8.649727352276470865e-05, +-8.639094397709622933e-05, +-8.628172997815373925e-05, +-8.616963957454220669e-05, +-8.605468090547117995e-05, +-8.593686220033350709e-05, +-8.581619177828221244e-05, +-8.569267804780515056e-05, +-8.556632950629352089e-05, +-8.543715473961318771e-05, +-8.530516242166929174e-05, +-8.517036131396897775e-05, +-8.503276026518465092e-05, +-8.489236821071021279e-05, +-8.474919417221874753e-05, +-8.460324725721427204e-05, +-8.445453665858462453e-05, +-8.430307165414772594e-05, +-8.414886160620121589e-05, +-8.399191596106253413e-05, +-8.383224424861417904e-05, +-8.366985608183923539e-05, +-8.350476115636145584e-05, +-8.333696924997654673e-05, +-8.316649022218722156e-05, +-8.299333401373212870e-05, +-8.281751064611290883e-05, +-8.263903022112106269e-05, +-8.245790292036086144e-05, +-8.227413900476843525e-05, +-8.208774881413384344e-05, +-8.189874276661666648e-05, +-8.170713135825959225e-05, +-8.151292516250347950e-05, +-8.131613482969531981e-05, +-8.111677108659741929e-05, +-8.091484473589571284e-05, +-8.071036665570124804e-05, +-8.050334779905507065e-05, +-8.029379919342759426e-05, +-8.008173194021726523e-05, +-7.986715721424518890e-05, +-7.965008626325439088e-05, +-7.943053040739763988e-05, +-7.920850103873197916e-05, +-7.898400962070459784e-05, +-7.875706768764412322e-05, +-7.852768684424013600e-05, +-7.829587876503348682e-05, +-7.806165519389264020e-05, +-7.782502794349749938e-05, +-7.758600889481486937e-05, +-7.734460999657814828e-05, +-7.710084326475896851e-05, +-7.685472078204253778e-05, +-7.660625469730052714e-05, +-7.635545722505783321e-05, +-7.610234064496386702e-05, +-7.584691730125947887e-05, +-7.558919960223839450e-05, +-7.532920001971573915e-05, +-7.506693108848959569e-05, +-7.480240540579838847e-05, +-7.453563563078505715e-05, +-7.426663448395130990e-05, +-7.399541474661395027e-05, +-7.372198926036468698e-05, +-7.344637092651743479e-05, +-7.316857270556582037e-05, +-7.288860761663183837e-05, +-7.260648873691578149e-05, +-7.232222920114266039e-05, +-7.203584220101474933e-05, +-7.174734098465177195e-05, +-7.145673885603995041e-05, +-7.116404917447121531e-05, +-7.086928535399056078e-05, +-7.057246086283091766e-05, +-7.027358922285829943e-05, +-6.997268400900919622e-05, +-6.966975884872874118e-05, +-6.936482742140422846e-05, +-6.905790345780647797e-05, +-6.874900073951732248e-05, +-6.843813309836921063e-05, +-6.812531441587643438e-05, +-6.781055862266379525e-05, +-6.749387969790195173e-05, +-6.717529166873340203e-05, +-6.685480860970044546e-05, +-6.653244464217917468e-05, +-6.620821393380185347e-05, +-6.588213069788209978e-05, +-6.555420919284555767e-05, +-6.522446372164990335e-05, +-6.489290863120848328e-05, +-6.455955831181954953e-05, +-6.422442719658088542e-05, +-6.388752976081866141e-05, +-6.354888052150154580e-05, +-6.320849403666927596e-05, +-6.286638490484205272e-05, +-6.252256776445088706e-05, +-6.217705729324737396e-05, +-6.182986820772794039e-05, +-6.148101526254557076e-05, +-6.113051324993372968e-05, +-6.077837699911396740e-05, +-6.042462137571917851e-05, +-6.006926128120685201e-05, +-5.971231165227442887e-05, +-5.935378746027074288e-05, +-5.899370371061640614e-05, +-5.863207544221014065e-05, +-5.826891772684785598e-05, +-5.790424566863610945e-05, +-5.753807440339950833e-05, +-5.717041909810034999e-05, +-5.680129495024546841e-05, +-5.643071718729775638e-05, +-5.605870106609462652e-05, +-5.568526187225433609e-05, +-5.531041491958633684e-05, +-5.493417554950761510e-05, +-5.455655913044964677e-05, +-5.417758105726791366e-05, +-5.379725675066096769e-05, +-5.341560165657167344e-05, +-5.303263124560543882e-05, +-5.264836101243477800e-05, +-5.226280647521728461e-05, +-5.187598317499646092e-05, +-5.148790667512404820e-05, +-5.109859256066130311e-05, +-5.070805643779714711e-05, +-5.031631393325230924e-05, +-4.992338069369868845e-05, +-4.952927238516060290e-05, +-4.913400469243442339e-05, +-4.873759331849922808e-05, +-4.834005398392349326e-05, +-4.794140242628299191e-05, +-4.754165439957169250e-05, +-4.714082567360894431e-05, +-4.673893203345903628e-05, +-4.633598927884416250e-05, +-4.593201322355216999e-05, +-4.552701969485745245e-05, +-4.512102453292990423e-05, +-4.471404359024867863e-05, +-4.430609273102518233e-05, +-4.389718783060873604e-05, +-4.348734477490947403e-05, +-4.307657945981225835e-05, +-4.266490779059236833e-05, +-4.225234568133118344e-05, +-4.183890905434221337e-05, +-4.142461383957948286e-05, +-4.100947597406484250e-05, +-4.059351140130022952e-05, +-4.017673607069634071e-05, +-3.975916593698287384e-05, +-3.934081695963874555e-05, +-3.892170510231242943e-05, +-3.850184633224354772e-05, +-3.808125661968411740e-05, +-3.765995193733019788e-05, +-3.723794825973633372e-05, +-3.681526156275023129e-05, +-3.639190782293836202e-05, +-3.596790301700766249e-05, +-3.554326312124045508e-05, +-3.511800411092171135e-05, +-3.469214195976345590e-05, +-3.426569263934300057e-05, +-3.383867211853393482e-05, +-3.341109636293315872e-05, +-3.298298133430213266e-05, +-3.255434298999571280e-05, +-3.212519728239682096e-05, +-3.169556015836203790e-05, +-3.126544755864805352e-05, +-3.083487541735845951e-05, +-3.040385966138062153e-05, +-2.997241620982529574e-05, +-2.954056097346664857e-05, +-2.910830985419444997e-05, +-2.867567874444683585e-05, +-2.824268352666494753e-05, +-2.780934007273126764e-05, +-2.737566424342652630e-05, +-2.694167188786718311e-05, +-2.650737884296492533e-05, +-2.607280093287594054e-05, +-2.563795396845234767e-05, +-2.520285374669323152e-05, +-2.476751605020780685e-05, +-2.433195664666105564e-05, +-2.389619128824027250e-05, +-2.346023571111360736e-05, +-2.302410563488442377e-05, +-2.258781676206124937e-05, +-2.215138477751522086e-05, +-2.171482534794368170e-05, +-2.127815412134465237e-05, +-2.084138672647828009e-05, +-2.040453877233409233e-05, +-1.996762584760853335e-05, +-1.953066352017126907e-05, +-1.909366733653743809e-05, +-1.865665282135244225e-05, +-1.821963547685721466e-05, +-1.778263078237570386e-05, +-1.734565419378691814e-05, +-1.690872114301532339e-05, +-1.647184703750179317e-05, +-1.603504725970282581e-05, +-1.559833716656460479e-05, +-1.516173208902037270e-05, +-1.472524733147193533e-05, +-1.428889817128959880e-05, +-1.385269985829893536e-05, +-1.341666761427490312e-05, +-1.298081663244770738e-05, +-1.254516207699006446e-05, +-1.210971908252558378e-05, +-1.167450275362782243e-05, +-1.123952816432302429e-05, +-1.080481035759382310e-05, +-1.037036434489603729e-05, +-9.936205105656713152e-06, +-9.502347586794675395e-06, +-9.068806702225443175e-06, +-8.635597332385602451e-06, +-8.202734323737344228e-06, +-7.770232488301851052e-06, +-7.338106603167762090e-06, +-6.906371410023311096e-06, +-6.475041614672838314e-06, +-6.044131886572840882e-06, +-5.613656858349518961e-06, +-5.183631125338718259e-06, +-4.754069245117851155e-06, +-4.324985737034575381e-06, +-3.896395081750927663e-06, +-3.468311720780319843e-06, +-3.040750056022464431e-06, +-2.613724449314812633e-06, +-2.187249221976859945e-06, +-1.761338654351428049e-06, +-1.336006985362486935e-06, +-9.112684120607396110e-07, +-4.871370891765281596e-07, +-6.362712868514867777e-08, + 3.592474006461222205e-07, + 7.814724736893390697e-07, + 1.203034109396238965e-06, + 1.623918371234312678e-06, + 2.044111367621653878e-06, + 2.463599252348319692e-06, + 2.882368225015842866e-06, + 3.300404531454056893e-06, + 3.717694464152948560e-06, + 4.134224362674899989e-06, + 4.549980614084981797e-06, + 4.964949653358522058e-06, + 5.379117963797626287e-06, + 5.792472077444214839e-06, + 6.204998575492761743e-06, + 6.616684088689541133e-06, + 7.027515297748717792e-06, + 7.437478933745757524e-06, + 7.846561778518595522e-06, + 8.254750665071460160e-06, + 8.662032477962061081e-06, + 9.068394153700423124e-06, + 9.473822681140410366e-06, + 9.878305101859544168e-06, + 1.028182851055056278e-05, + 1.068438005540629619e-05, + 1.108594693849336179e-05, + 1.148651641613593131e-05, + 1.188607579929227252e-05, + 1.228461245391885483e-05, + 1.268211380135157338e-05, + 1.307856731866475892e-05, + 1.347396053904449399e-05, + 1.386828105214237114e-05, + 1.426151650444757083e-05, + 1.465365459963077372e-05, + 1.504468309891088697e-05, + 1.543458982139872109e-05, + 1.582336264445461402e-05, + 1.621098950402690211e-05, + 1.659745839500719795e-05, + 1.698275737156351991e-05, + 1.736687454748169388e-05, + 1.774979809650293318e-05, + 1.813151625266070014e-05, + 1.851201731060441504e-05, + 1.889128962593864870e-05, + 1.926932161554044816e-05, + 1.964610175788376385e-05, + 2.002161859336546579e-05, + 2.039586072461596413e-05, + 2.076881681681987549e-05, + 2.114047559802952679e-05, + 2.151082585946703093e-05, + 2.187985645583708248e-05, + 2.224755630563299749e-05, + 2.261391439143162324e-05, + 2.297891976019795501e-05, + 2.334256152358166536e-05, + 2.370482885820233404e-05, + 2.406571100594982616e-05, + 2.442519727426381985e-05, + 2.478327703642591747e-05, + 2.513993973183369459e-05, + 2.549517486629057164e-05, + 2.584897201226992895e-05, + 2.620132080919957088e-05, + 2.655221096372413665e-05, + 2.690163224998076214e-05, + 2.724957450985603916e-05, + 2.759602765325790965e-05, + 2.794098165836768173e-05, + 2.828442657189735149e-05, + 2.862635250934865617e-05, + 2.896674965525785993e-05, + 2.930560826344599446e-05, + 2.964291865726884550e-05, + 2.997867122985263473e-05, + 3.031285644433437716e-05, + 3.064546483410373956e-05, + 3.097648700302972342e-05, + 3.130591362569682453e-05, + 3.163373544763383008e-05, + 3.195994328553100134e-05, + 3.228452802747200481e-05, + 3.260748063314599575e-05, + 3.292879213406703354e-05, + 3.324845363378757469e-05, + 3.356645630811147790e-05, + 3.388279140529373439e-05, + 3.419745024625429973e-05, + 3.451042422477251835e-05, + 3.482170480769270187e-05, + 3.513128353511246852e-05, + 3.543915202058470291e-05, + 3.574530195130046776e-05, + 3.604972508827759402e-05, + 3.635241326654588978e-05, + 3.665335839533057365e-05, + 3.695255245822428350e-05, + 3.724998751337124848e-05, + 3.754565569363236562e-05, + 3.783954920675574479e-05, + 3.813166033554747734e-05, + 3.842198143803048527e-05, + 3.871050494760574210e-05, + 3.899722337321544528e-05, + 3.928212929949080650e-05, + 3.956521538690510039e-05, + 3.984647437192675388e-05, + 4.012589906715901172e-05, + 4.040348236148758455e-05, + 4.067921722022118178e-05, + 4.095309668522154132e-05, + 4.122511387504577859e-05, + 4.149526198507145596e-05, + 4.176353428762668028e-05, + 4.202992413211622267e-05, + 4.229442494514452125e-05, + 4.255703023062904806e-05, + 4.281773356992375225e-05, + 4.307652862192619278e-05, + 4.333340912319348030e-05, + 4.358836888804293856e-05, + 4.384140180866454294e-05, + 4.409250185521558485e-05, + 4.434166307592094690e-05, + 4.458887959716879048e-05, + 4.483414562360520664e-05, + 4.507745543821877030e-05, + 4.531880340243355122e-05, + 4.555818395618758997e-05, + 4.579559161801409104e-05, + 4.603102098512264998e-05, + 4.626446673346891334e-05, + 4.649592361783085910e-05, + 4.672538647187733180e-05, + 4.695285020822945578e-05, + 4.717830981852738143e-05, + 4.740176037349154935e-05, + 4.762319702297518608e-05, + 4.784261499602224113e-05, + 4.806000960091929999e-05, + 4.827537622523838295e-05, + 4.848871033588886487e-05, + 4.870000747915456842e-05, + 4.890926328073801310e-05, + 4.911647344579150474e-05, + 4.932163375895805057e-05, + 4.952474008439376155e-05, + 4.972578836580294662e-05, + 4.992477462645732346e-05, + 5.012169496922321156e-05, + 5.031654557657491543e-05, + 5.050932271061777057e-05, + 5.070002271309582108e-05, + 5.088864200540324436e-05, + 5.107517708859487469e-05, + 5.125962454338732130e-05, + 5.144198103016188217e-05, + 5.162224328896624487e-05, + 5.180040813950653798e-05, + 5.197647248114103599e-05, + 5.215043329287366759e-05, + 5.232228763333718346e-05, + 5.249203264078074215e-05, + 5.265966553305267126e-05, + 5.282518360757452113e-05, + 5.298858424132104098e-05, + 5.314986489079369728e-05, + 5.330902309198812732e-05, + 5.346605646036413400e-05, + 5.362096269081196025e-05, + 5.377373955760846025e-05, + 5.392438491438283861e-05, + 5.407289669406800355e-05, + 5.421927290885821530e-05, + 5.436351165015556035e-05, + 5.450561108852343243e-05, + 5.464556947362574264e-05, + 5.478338513417402392e-05, + 5.491905647786407980e-05, + 5.505258199131555363e-05, + 5.518396024000298016e-05, + 5.531318986819138388e-05, + 5.544026959886113703e-05, + 5.556519823363515549e-05, + 5.568797465270359408e-05, + 5.580859781474214521e-05, + 5.592706675683065592e-05, + 5.604338059437037617e-05, + 5.615753852099311622e-05, + 5.626953980847224725e-05, + 5.637938380663098454e-05, + 5.648706994324421981e-05, + 5.659259772394273873e-05, + 5.669596673211207836e-05, + 5.679717662878609242e-05, + 5.689622715254450774e-05, + 5.699311811940129208e-05, + 5.708784942269410614e-05, + 5.718042103297065213e-05, + 5.727083299787233883e-05, + 5.735908544201247147e-05, + 5.744517856685724702e-05, + 5.752911265059880089e-05, + 5.761088804803107252e-05, + 5.769050519041601488e-05, + 5.776796458535618712e-05, + 5.784326681665611226e-05, + 5.791641254418643340e-05, + 5.798740250374357730e-05, + 5.805623750690911306e-05, + 5.812291844090194823e-05, + 5.818744626843379790e-05, + 5.824982202755745061e-05, + 5.831004683151426172e-05, + 5.836812186858104381e-05, + 5.842404840191012645e-05, + 5.847782776937210630e-05, + 5.852946138339276948e-05, + 5.857895073078676825e-05, + 5.862629737259223946e-05, + 5.867150294390146577e-05, + 5.871456915368717289e-05, + 5.875549778462953155e-05, + 5.879429069294002212e-05, + 5.883094980817970198e-05, + 5.886547713308034604e-05, + 5.889787474335898040e-05, + 5.892814478753169097e-05, + 5.895628948672607003e-05, + 5.898231113449013918e-05, + 5.900621209659740298e-05, + 5.902799481085329854e-05, + 5.904766178689603437e-05, + 5.906521560599746311e-05, + 5.908065892085935988e-05, + 5.909399445541035808e-05, + 5.910522500459784349e-05, + 5.911435343417868293e-05, + 5.912138268050813014e-05, + 5.912631575032668515e-05, + 5.912915572054258976e-05, + 5.912990573801620009e-05, + 5.912856901933723723e-05, + 5.912514885060392848e-05, + 5.911964858719771689e-05, + 5.911207165355637170e-05, + 5.910242154294564172e-05, + 5.909070181722801538e-05, + 5.907691610662864828e-05, + 5.906106810950152106e-05, + 5.904316159209094207e-05, + 5.902320038829237233e-05, + 5.900118839941093985e-05, + 5.897712959391811758e-05, + 5.895102800720508770e-05, + 5.892288774133601110e-05, + 5.889271296479792227e-05, + 5.886050791224880141e-05, + 5.882627688426410144e-05, + 5.879002424708054431e-05, + 5.875175443233900921e-05, + 5.871147193682424952e-05, + 5.866918132220346453e-05, + 5.862488721476300099e-05, + 5.857859430514220176e-05, + 5.853030734806640751e-05, + 5.848003116207734951e-05, + 5.842777062926228200e-05, + 5.837353069498028222e-05, + 5.831731636758804205e-05, + 5.825913271816212253e-05, + 5.819898488022093736e-05, + 5.813687804944393773e-05, + 5.807281748338935382e-05, + 5.800680850121014065e-05, + 5.793885648336808070e-05, + 5.786896687134602992e-05, + 5.779714516735814434e-05, + 5.772339693405923258e-05, + 5.764772779425156725e-05, + 5.757014343059021913e-05, + 5.749064958528656856e-05, + 5.740925205981056993e-05, + 5.732595671459043448e-05, + 5.724076946871207587e-05, + 5.715369629961506608e-05, + 5.706474324278856407e-05, + 5.697391639146483894e-05, + 5.688122189631100419e-05, + 5.678666596512036563e-05, + 5.669025486249976462e-05, + 5.659199490955803258e-05, + 5.649189248359164008e-05, + 5.638995401776813018e-05, + 5.628618600080973465e-05, + 5.618059497667358856e-05, + 5.607318754423160605e-05, + 5.596397035694954288e-05, + 5.585295012256154609e-05, + 5.574013360274778005e-05, + 5.562552761280663819e-05, + 5.550913902132734791e-05, + 5.539097474986008846e-05, + 5.527104177258780295e-05, + 5.514934711599149162e-05, + 5.502589785851900837e-05, + 5.490070113024868705e-05, + 5.477376411255516323e-05, + 5.464509403776987665e-05, + 5.451469818884427057e-05, + 5.438258389900918965e-05, + 5.424875855143335628e-05, + 5.411322957888049166e-05, + 5.397600446336713476e-05, + 5.383709073581504040e-05, + 5.369649597570647743e-05, + 5.355422781073782619e-05, + 5.341029391646770746e-05, + 5.326470201597022745e-05, + 5.311745987948206330e-05, + 5.296857532404957553e-05, + 5.281805621317798736e-05, + 5.266591045647481094e-05, + 5.251214600929433743e-05, + 5.235677087238186966e-05, + 5.219979309151482407e-05, + 5.204122075714320925e-05, + 5.188106200403242205e-05, + 5.171932501089898269e-05, + 5.155601800005105400e-05, + 5.139114923702278070e-05, + 5.122472703021336524e-05, + 5.105675973051784956e-05, + 5.088725573096577760e-05, + 5.071622346635020162e-05, + 5.054367141286250940e-05, + 5.036960808772141700e-05, + 5.019404204880568852e-05, + 5.001698189427992368e-05, + 4.983843626222595624e-05, + 4.965841383027034921e-05, + 4.947692331520852228e-05, + 4.929397347263366332e-05, + 4.910957309656069993e-05, + 4.892373101904846179e-05, + 4.873645610982596971e-05, + 4.854775727591486222e-05, + 4.835764346124900325e-05, + 4.816612364629839949e-05, + 4.797320684768808976e-05, + 4.777890211781632971e-05, + 4.758321854447769599e-05, + 4.738616525047842490e-05, + 4.718775139325350604e-05, + 4.698798616448652041e-05, + 4.678687878972309519e-05, + 4.658443852798705554e-05, + 4.638067467139804002e-05, + 4.617559654478235336e-05, + 4.596921350529023628e-05, + 4.576153494200597965e-05, + 4.555257027556411012e-05, + 4.534232895775703090e-05, + 4.513082047115256947e-05, + 4.491805432869964645e-05, + 4.470404007334332285e-05, + 4.448878727763113983e-05, + 4.427230554332725111e-05, + 4.405460450101624198e-05, + 4.383569380971692292e-05, + 4.361558315648929952e-05, + 4.339428225604044471e-05, + 4.317180085033535142e-05, + 4.294814870820305556e-05, + 4.272333562494094283e-05, + 4.249737142192482221e-05, + 4.227026594621511663e-05, + 4.204202907015930634e-05, + 4.181267069100180587e-05, + 4.158220073048627871e-05, + 4.135062913446013386e-05, + 4.111796587248371161e-05, + 4.088422093742937949e-05, + 4.064940434509025724e-05, + 4.041352613378188094e-05, + 4.017659636394659115e-05, + 3.993862511775557656e-05, + 3.969962249871726015e-05, + 3.945959863127493816e-05, + 3.921856366041492919e-05, + 3.897652775126532443e-05, + 3.873350108870356754e-05, + 3.848949387695388354e-05, + 3.824451633919472314e-05, + 3.799857871716051492e-05, + 3.775169127074362086e-05, + 3.750386427759596654e-05, + 3.725510803273531315e-05, + 3.700543284814239507e-05, + 3.675484905236826925e-05, + 3.650336699013658924e-05, + 3.625099702194274170e-05, + 3.599774952366119590e-05, + 3.574363488614524327e-05, + 3.548866351482874972e-05, + 3.523284582933404707e-05, + 3.497619226307146270e-05, + 3.471871326284139698e-05, + 3.446041928844178792e-05, + 3.420132081226799988e-05, + 3.394142831891605979e-05, + 3.368075230479130081e-05, + 3.341930327770664514e-05, + 3.315709175649080720e-05, + 3.289412827059142141e-05, + 3.263042335967892221e-05, + 3.236598757325051881e-05, + 3.210083147024035683e-05, + 3.183496561861872255e-05, + 3.156840059500297028e-05, + 3.130114698425890855e-05, + 3.103321537911246609e-05, + 3.076461637974981769e-05, + 3.049536059343004621e-05, + 3.022545863409091988e-05, + 2.995492112195628916e-05, + 2.968375868314240956e-05, + 2.941198194927150143e-05, + 2.913960155707353612e-05, + 2.886662814800181173e-05, + 2.859307236784160359e-05, + 2.831894486631692071e-05, + 2.804425629670637636e-05, + 2.776901731545046635e-05, + 2.749323858176280455e-05, + 2.721693075724719292e-05, + 2.694010450550694279e-05, + 2.666277049175654073e-05, + 2.638493938244008732e-05, + 2.610662184484173655e-05, + 2.582782854670034661e-05, + 2.554857015583039543e-05, + 2.526885733973121385e-05, + 2.498870076520983574e-05, + 2.470811109799267406e-05, + 2.442709900234972620e-05, + 2.414567514070556229e-05, + 2.386385017326736924e-05, + 2.358163475763749761e-05, + 2.329903954843998102e-05, + 2.301607519693657955e-05, + 2.273275235065494579e-05, + 2.244908165300413285e-05, + 2.216507374290424453e-05, + 2.188073925440996636e-05, + 2.159608881633185044e-05, + 2.131113305186678545e-05, + 2.102588257822330653e-05, + 2.074034800624520434e-05, + 2.045453994004501729e-05, + 2.016846897663246871e-05, + 1.988214570554065083e-05, + 1.959558070846185144e-05, + 1.930878455887556080e-05, + 1.902176782168012064e-05, + 1.873454105283225751e-05, + 1.844711479897403585e-05, + 1.815949959707348230e-05, + 1.787170597405879276e-05, + 1.758374444645473511e-05, + 1.729562552001940752e-05, + 1.700735968938912502e-05, + 1.671895743771121377e-05, + 1.643042923629095753e-05, + 1.614178554422816638e-05, + 1.585303680806613569e-05, + 1.556419346142845879e-05, + 1.527526592466975800e-05, + 1.498626460452061686e-05, + 1.469719989373398455e-05, + 1.440808217073114155e-05, + 1.411892179925660315e-05, + 1.382972912802073083e-05, + 1.354051449035746828e-05, + 1.325128820387594320e-05, + 1.296206057011024967e-05, + 1.267284187417882569e-05, + 1.238364238443892984e-05, + 1.209447235213986258e-05, + 1.180534201108638582e-05, + 1.151626157729743988e-05, + 1.122724124866271219e-05, + 1.093829120460977544e-05, + 1.064942160576292805e-05, + 1.036064259360675446e-05, + 1.007196429015752710e-05, + 9.783396797622446745e-06, + 9.494950198072855542e-06, + 9.206634553111385210e-06, + 8.918459903541568469e-06, + 8.630436269038206003e-06, + 8.342573647826393487e-06, + 8.054882016348239532e-06, + 7.767371328944549014e-06, + 7.480051517526239506e-06, + 7.192932491258548766e-06, + 6.906024136233123714e-06, + 6.619336315154956213e-06, + 6.332878867023199875e-06, + 6.046661606814069725e-06, + 5.760694325163667328e-06, + 5.474986788059783613e-06, + 5.189548736522045681e-06, + 4.904389886297172988e-06, + 4.619519927548758298e-06, + 4.334948524545081837e-06, + 4.050685315357956351e-06, + 3.766739911553316981e-06, + 3.483121897886810749e-06, + 3.199840832006893728e-06, + 2.916906244149839882e-06, + 2.634327636839011763e-06, + 2.352114484591655819e-06, + 2.070276233618403059e-06, + 1.788822301527623846e-06, + 1.507762077038085314e-06, + 1.227104919679563336e-06, + 9.468601595085163266e-07, + 6.670370968137836451e-07, + 3.876450018353160248e-07, + 1.086931144702606842e-07, +-1.698093560018521464e-07, +-4.478532312098952914e-07, +-7.254293639662186061e-07, +-1.002528638551576897e-06, +-1.279141970987068832e-06, +-1.555260309317894086e-06, +-1.830874633882091118e-06, +-2.105975957585071664e-06, +-2.380555326171853736e-06, +-2.654603818498988850e-06, +-2.928112546797570409e-06, +-3.201072656947214984e-06, +-3.473475328735126493e-06, +-3.745311776120159143e-06, +-4.016573247498492282e-06, +-4.287251025958453486e-06, +-4.557336429542851009e-06, +-4.826820811506356610e-06, +-5.095695560565298952e-06, +-5.363952101154910054e-06, +-5.631581893682354355e-06, +-5.898576434772019296e-06, +-6.164927257517767660e-06, +-6.430625931730005223e-06, +-6.695664064174694817e-06, +-6.960033298823574099e-06, +-7.223725317089608687e-06, +-7.486731838071820257e-06, +-7.749044618787265151e-06, +-8.010655454414945982e-06, +-8.271556178521036852e-06, +-8.531738663299270450e-06, +-8.791194819795910008e-06, +-9.049916598143935273e-06, +-9.307895987784455227e-06, +-9.565125017699310108e-06, +-9.821595756628929982e-06, +-1.007730031329480286e-05, +-1.033223083662351661e-05, +-1.058637951596039761e-05, +-1.083973858128730663e-05, +-1.109230030344108184e-05, +-1.134405699432125504e-05, +-1.159500100710169298e-05, +-1.184512473644348723e-05, +-1.209442061869731206e-05, +-1.234288113211256028e-05, +-1.259049879704165429e-05, +-1.283726617613612245e-05, +-1.308317587455350712e-05, +-1.332822054015033236e-05, +-1.357239286368014872e-05, +-1.381568557898861505e-05, +-1.405809146320699640e-05, +-1.429960333693731871e-05, +-1.454021406444781480e-05, +-1.477991655385414374e-05, +-1.501870375730928207e-05, +-1.525656867118111272e-05, +-1.549350433624004282e-05, +-1.572950383783306894e-05, +-1.596456030606204708e-05, +-1.619866691595988565e-05, +-1.643181688766585420e-05, +-1.666400348659236082e-05, +-1.689522002360119936e-05, +-1.712545985516603068e-05, +-1.735471638353872976e-05, +-1.758298305691688817e-05, +-1.781025336960175180e-05, +-1.803652086215882174e-05, +-1.826177912158235482e-05, +-1.848602178144122946e-05, +-1.870924252203938389e-05, +-1.893143507056892585e-05, +-1.915259320125619488e-05, +-1.937271073551397421e-05, +-1.959178154208821037e-05, +-1.980979953719763816e-05, +-2.002675868468247212e-05, +-2.024265299614053497e-05, +-2.045747653106753637e-05, +-2.067122339699562723e-05, +-2.088388774962347680e-05, +-2.109546379295527087e-05, +-2.130594577942659772e-05, +-2.151532801003356647e-05, +-2.172360483446336875e-05, +-2.193077065121439473e-05, +-2.213681990772286456e-05, +-2.234174710048388628e-05, +-2.254554677516660156e-05, +-2.274821352673400010e-05, +-2.294974199955927154e-05, +-2.315012688753498800e-05, +-2.334936293418761612e-05, +-2.354744493278682161e-05, +-2.374436772644813301e-05, +-2.394012620824371670e-05, +-2.413471532130090033e-05, +-2.432813005890737773e-05, +-2.452036546460598175e-05, +-2.471141663229792397e-05, +-2.490127870633087603e-05, +-2.508994688159829603e-05, +-2.527741640362635113e-05, +-2.546368256866695555e-05, +-2.564874072378069521e-05, +-2.583258626692767361e-05, +-2.601521464704629273e-05, +-2.619662136413498490e-05, +-2.637680196933493406e-05, +-2.655575206500357787e-05, +-2.673346730479126760e-05, +-2.690994339371744688e-05, +-2.708517608823830930e-05, +-2.725916119631662440e-05, +-2.743189457749224474e-05, +-2.760337214294374274e-05, +-2.777358985555466902e-05, +-2.794254372997564330e-05, +-2.811022983267956398e-05, +-2.827664428202468163e-05, +-2.844178324830592242e-05, +-2.860564295381045683e-05, +-2.876821967286956520e-05, +-2.892950973190916493e-05, +-2.908950950949363258e-05, +-2.924821543637630398e-05, +-2.940562399553942028e-05, +-2.956173172223929517e-05, +-2.971653520404256448e-05, +-2.987003108086840568e-05, +-3.002221604502082681e-05, +-3.017308684122346594e-05, +-3.032264026665203936e-05, +-3.047087317096562752e-05, +-3.061778245633137120e-05, +-3.076336507745541863e-05, +-3.090761804160300363e-05, +-3.105053840862156278e-05, +-3.119212329096316148e-05, +-3.133236985370020135e-05, +-3.147127531454255059e-05, +-3.160883694385442367e-05, +-3.174505206466401042e-05, +-3.187991805267412828e-05, +-3.201343233627337604e-05, +-3.214559239654001666e-05, +-3.227639576724888225e-05, +-3.240584003487468093e-05, +-3.253392283858986904e-05, +-3.266064187026751752e-05, +-3.278599487447570116e-05, +-3.290997964847389363e-05, +-3.303259404220663167e-05, +-3.315383595829574272e-05, +-3.327370335202652811e-05, +-3.339219423133970611e-05, +-3.350930665681366486e-05, +-3.362503874165126221e-05, +-3.373938865165871770e-05, +-3.385235460522961374e-05, +-3.396393487331991838e-05, +-3.407412777942495948e-05, +-3.418293169955479983e-05, +-3.429034506220716598e-05, +-3.439636634833599953e-05, +-3.450099409132391848e-05, +-3.460422687694624200e-05, +-3.470606334333660767e-05, +-3.480650218095256843e-05, +-3.490554213253399979e-05, +-3.500318199306509865e-05, +-3.509942060973237038e-05, +-3.519425688187838763e-05, +-3.528768976095758878e-05, +-3.537971825048960301e-05, +-3.547034140600743222e-05, +-3.555955833500824180e-05, +-3.564736819690044481e-05, +-3.573377020294620535e-05, +-3.581876361620835332e-05, +-3.590234775148909316e-05, +-3.598452197527195830e-05, +-3.606528570565787039e-05, +-3.614463841230403774e-05, +-3.622257961635504066e-05, +-3.629910889037861287e-05, +-3.637422585829442294e-05, +-3.644793019530503096e-05, +-3.652022162782147835e-05, +-3.659109993339133078e-05, +-3.666056494062071720e-05, +-3.672861652909671453e-05, +-3.679525462930946132e-05, +-3.686047922256895196e-05, +-3.692429034092315913e-05, +-3.698668806707444858e-05, +-3.704767253429120305e-05, +-3.710724392632068638e-05, +-3.716540247730001689e-05, +-3.722214847166347492e-05, +-3.727748224405059632e-05, +-3.733140417921138613e-05, +-3.738391471190890972e-05, +-3.743501432682177566e-05, +-3.748470355844503958e-05, +-3.753298299098769289e-05, +-3.757985325827048348e-05, +-3.762531504362167647e-05, +-3.766936907976918965e-05, +-3.771201614873441617e-05, +-3.775325708172118876e-05, +-3.779309275900654628e-05, +-3.783152410982569314e-05, +-3.786855211226036034e-05, +-3.790417779312012600e-05, +-3.793840222782755768e-05, +-3.797122654029673434e-05, +-3.800265190281483106e-05, +-3.803267953591799152e-05, +-3.806131070826953818e-05, +-3.808854673653297153e-05, +-3.811438898524590452e-05, +-3.813883886669212670e-05, +-3.816189784077084939e-05, +-3.818356741486556472e-05, +-3.820384914371198975e-05, +-3.822274462926269708e-05, +-3.824025552055112202e-05, +-3.825638351355523093e-05, +-3.827113035105732030e-05, +-3.828449782250458166e-05, +-3.829648776386752499e-05, +-3.830710205749539369e-05, +-3.831634263197275167e-05, +-3.832421146197270950e-05, +-3.833071056810936450e-05, +-3.833584201678908208e-05, +-3.833960792005982552e-05, +-3.834201043545896109e-05, +-3.834305176586069047e-05, +-3.834273415932072524e-05, +-3.834105990892075808e-05, +-3.833803135261071136e-05, +-3.833365087305009124e-05, +-3.832792089744784425e-05, +-3.832084389740051978e-05, +-3.831242238872969395e-05, +-3.830265893131780110e-05, +-3.829155612894236604e-05, +-3.827911662910946382e-05, +-3.826534312288503819e-05, +-3.825023834472583386e-05, +-3.823380507230846520e-05, +-3.821604612635725852e-05, +-3.819696437047086105e-05, +-3.817656271094812479e-05, +-3.815484409661135454e-05, +-3.813181151862972515e-05, +-3.810746801034077449e-05, +-3.808181664707048681e-05, +-3.805486054595296966e-05, +-3.802660286574763022e-05, +-3.799704680665662282e-05, +-3.796619561013968752e-05, +-3.793405255872869054e-05, +-3.790062097584093143e-05, +-3.786590422559055289e-05, +-3.782990571259976082e-05, +-3.779262888180826225e-05, +-3.775407721828165293e-05, +-3.771425424701849036e-05, +-3.767316353275689238e-05, +-3.763080867977940119e-05, +-3.758719333171660039e-05, +-3.754232117135019681e-05, +-3.749619592041501803e-05, +-3.744882133939888907e-05, +-3.740020122734271897e-05, +-3.735033942163888671e-05, +-3.729923979782845465e-05, +-3.724690626939756901e-05, +-3.719334278757299283e-05, +-3.713855334111611434e-05, +-3.708254195611651491e-05, +-3.702531269578359209e-05, +-3.696686966023811507e-05, +-3.690721698630285158e-05, +-3.684635884729119598e-05, +-3.678429945279568881e-05, +-3.672104304847539121e-05, +-3.665659391584187696e-05, +-3.659095637204473660e-05, +-3.652413476965642435e-05, +-3.645613349645506526e-05, +-3.638695697520760123e-05, +-3.631660966345107356e-05, +-3.624509605327396649e-05, +-3.617242067109475209e-05, +-3.609858807744277304e-05, +-3.602360286673441585e-05, +-3.594746966705206914e-05, +-3.587019313991897553e-05, +-3.579177798007636706e-05, +-3.571222891525629778e-05, +-3.563155070595697669e-05, +-3.554974814521563421e-05, +-3.546682605837993843e-05, +-3.538278930288024491e-05, +-3.529764276800040991e-05, +-3.521139137464642839e-05, +-3.512404007511674581e-05, +-3.503559385287060478e-05, +-3.494605772229446723e-05, +-3.485543672847070667e-05, +-3.476373594694198395e-05, +-3.467096048347729001e-05, +-3.457711547383739901e-05, +-3.448220608353755686e-05, +-3.438623750761184340e-05, +-3.428921497037548140e-05, +-3.419114372518656283e-05, +-3.409202905420671121e-05, +-3.399187626816404113e-05, +-3.389069070611016823e-05, +-3.378847773518211839e-05, +-3.368524275035904633e-05, +-3.358099117422232198e-05, +-3.347572845671053468e-05, +-3.336946007487949148e-05, +-3.326219153265589994e-05, +-3.315392836059495411e-05, +-3.304467611563422739e-05, +-3.293444038084974735e-05, +-3.282322676520823526e-05, +-3.271104090332221188e-05, +-3.259788845520339570e-05, +-3.248377510601324831e-05, +-3.236870656581705707e-05, +-3.225268856933483964e-05, +-3.213572687569119819e-05, +-3.201782726816760635e-05, +-3.189899555395216851e-05, +-3.177923756388845768e-05, +-3.165855915222595245e-05, +-3.153696619636775668e-05, +-3.141446459661879356e-05, +-3.129106027593559207e-05, +-3.116675917967164181e-05, +-3.104156727532612231e-05, +-3.091549055229013876e-05, +-3.078853502159270702e-05, +-3.066070671564654205e-05, +-3.053201168799575733e-05, +-3.040245601305837357e-05, +-3.027204578587398763e-05, +-3.014078712184599669e-05, +-3.000868615648847427e-05, +-2.987574904516730344e-05, +-2.974198196284626682e-05, +-2.960739110383007712e-05, +-2.947198268150718746e-05, +-2.933576292809198839e-05, +-2.919873809436979338e-05, +-2.906091444943594593e-05, +-2.892229828044059155e-05, +-2.878289589233058349e-05, +-2.864271360758929790e-05, +-2.850175776598046733e-05, +-2.836003472428799259e-05, +-2.821755085605663884e-05, +-2.807431255133525922e-05, +-2.793032621641609167e-05, +-2.778559827357468599e-05, +-2.764013516081242268e-05, +-2.749394333159515250e-05, +-2.734702925459331322e-05, +-2.719939941342441463e-05, +-2.705106030638993318e-05, +-2.690201844621788852e-05, +-2.675228035980021583e-05, +-2.660185258793539654e-05, +-2.645074168506421461e-05, +-2.629895421901388473e-05, +-2.614649677073380520e-05, +-2.599337593403773126e-05, +-2.583959831534102207e-05, +-2.568517053340283436e-05, +-2.553009921906197017e-05, +-2.537439101497928053e-05, +-2.521805257537656250e-05, +-2.506109056577553071e-05, +-2.490351166273647719e-05, +-2.474532255360027873e-05, +-2.458652993622448846e-05, +-2.442714051872582094e-05, +-2.426716101921969968e-05, +-2.410659816555775484e-05, +-2.394545869507050818e-05, +-2.378374935430530447e-05, +-2.362147689876585899e-05, +-2.345864809265536265e-05, +-2.329526970861445738e-05, +-2.313134852746119027e-05, +-2.296689133793368832e-05, +-2.280190493642827624e-05, +-2.263639612674341831e-05, +-2.247037171981685025e-05, +-2.230383853346973454e-05, +-2.213680339214814605e-05, +-2.196927312666208077e-05, +-2.180125457392975358e-05, +-2.163275457671906679e-05, +-2.146377998338756430e-05, +-2.129433764762761697e-05, +-2.112443442820884665e-05, +-2.095407718871895107e-05, +-2.078327279730956347e-05, +-2.061202812643770082e-05, +-2.044035005260891300e-05, +-2.026824545612481953e-05, +-2.009572122082317884e-05, +-1.992278423382543863e-05, +-1.974944138528079296e-05, +-1.957569956811059514e-05, +-1.940156567775348217e-05, +-1.922704661191454792e-05, +-1.905214927030744870e-05, +-1.887688055440437271e-05, +-1.870124736718004635e-05, +-1.852525661286237785e-05, +-1.834891519667597237e-05, +-1.817223002459377170e-05, +-1.799520800308471643e-05, +-1.781785603886230928e-05, +-1.764018103863261602e-05, +-1.746218990884743327e-05, +-1.728388955544989407e-05, +-1.710528688362864870e-05, +-1.692638879756865405e-05, +-1.674720220020020457e-05, +-1.656773399295423456e-05, +-1.638799107551217919e-05, +-1.620798034555883405e-05, +-1.602770869853862304e-05, +-1.584718302740742118e-05, +-1.566641022238606117e-05, +-1.548539717071813624e-05, +-1.530415075642301549e-05, +-1.512267786005164933e-05, +-1.494098535844642385e-05, +-1.475908012449409821e-05, +-1.457696902688660254e-05, +-1.439465892987799030e-05, +-1.421215669304296277e-05, +-1.402946917103519525e-05, +-1.384660321335127581e-05, +-1.366356566408647518e-05, +-1.348036336169977977e-05, +-1.329700313877223832e-05, +-1.311349182177320447e-05, +-1.292983623081866644e-05, +-1.274604317943864158e-05, +-1.256211947434076103e-05, +-1.237807191517469630e-05, +-1.219390729429639614e-05, +-1.200963239653789849e-05, +-1.182525399896950913e-05, +-1.164077887067119590e-05, +-1.145621377250057962e-05, +-1.127156545685922414e-05, +-1.108684066746581107e-05, +-1.090204613912394776e-05, +-1.071718859749296523e-05, +-1.053227475886297502e-05, +-1.034731132992496245e-05, +-1.016230500754335315e-05, +-9.977262478532865684e-06, +-9.792190419430813771e-06, +-9.607095496272283466e-06, +-9.421984364370238302e-06, +-9.236863668087909684e-06, +-9.051740040620555463e-06, +-8.866620103770735315e-06, +-8.681510467731490640e-06, +-8.496417730861525073e-06, +-8.311348479472294284e-06, +-8.126309287604658639e-06, +-7.941306716815481714e-06, +-7.756347315957696500e-06, +-7.571437620968535307e-06, +-7.386584154649924615e-06, +-7.201793426458470873e-06, +-7.017071932291848962e-06, +-6.832426154274008185e-06, +-6.647862560546742027e-06, +-6.463387605058422042e-06, +-6.279007727351578086e-06, +-6.094729352357750321e-06, +-5.910558890189114880e-06, +-5.726502735928916053e-06, +-5.542567269428886503e-06, +-5.358758855101453138e-06, +-5.175083841715077019e-06, +-4.991548562194799960e-06, +-4.808159333415089077e-06, +-4.624922456001809798e-06, +-4.441844214130421960e-06, +-4.258930875325916552e-06, +-4.076188690263356400e-06, +-3.893623892574035218e-06, +-3.711242698644000656e-06, +-3.529051307422225055e-06, +-3.347055900222299362e-06, +-3.165262640532555452e-06, +-2.983677673818009492e-06, +-2.802307127334631336e-06, +-2.621157109933241574e-06, +-2.440233711873597538e-06, +-2.259543004632077439e-06, +-2.079091040717726835e-06, +-1.898883853480690478e-06, +-1.718927456930304158e-06, +-1.539227845549882901e-06, +-1.359790994110375839e-06, +-1.180622857490685532e-06, +-1.001729370495117759e-06, +-8.231164476701934886e-07, +-6.447899831284926051e-07, +-4.667558503697162356e-07, +-2.890199021006317412e-07, +-1.115879700621159867e-07, + 6.553413514875661085e-08, + 2.423406242533919959e-07, + 4.188257294610106690e-07, + 5.949837046454449168e-07, + 7.708088255127391433e-07, + 9.462953897723443870e-07, + 1.121437717306370856e-06, + 1.296230150338159768e-06, + 1.470667053595075139e-06, + 1.644742814478691551e-06, + 1.818451843225367247e-06, + 1.991788573072934707e-06, + 2.164747460419015343e-06, + 2.337322984986742554e-06, + 2.509509649980827757e-06, + 2.681301982247215299e-06, + 2.852694532431100262e-06, + 3.023681875134739602e-06, + 3.194258609069374275e-06, + 3.364419357214090274e-06, + 3.534158766965082771e-06, + 3.703471510287963654e-06, + 3.872352283871004184e-06, + 4.040795809271372273e-06, + 4.208796833066042412e-06, + 4.376350126999426738e-06, + 4.543450488126117025e-06, + 4.710092738958259105e-06, + 4.876271727610091408e-06, + 5.041982327937555483e-06, + 5.207219439682118796e-06, + 5.371977988611340702e-06, + 5.536252926654062284e-06, + 5.700039232042755331e-06, + 5.863331909446321847e-06, + 6.026125990108750813e-06, + 6.188416531979610384e-06, + 6.350198619851843206e-06, + 6.511467365487804081e-06, + 6.672217907754643773e-06, + 6.832445412749991763e-06, + 6.992145073933239581e-06, + 7.151312112248778165e-06, + 7.309941776256052997e-06, + 7.468029342250372178e-06, + 7.625570114386874781e-06, + 7.782559424802884760e-06, + 7.938992633739787977e-06, + 8.094865129659387432e-06, + 8.250172329366438427e-06, + 8.404909678122115412e-06, + 8.559072649760172391e-06, + 8.712656746803802967e-06, + 8.865657500575736000e-06, + 9.018070471312618930e-06, + 9.169891248276180689e-06, + 9.321115449859551278e-06, + 9.471738723698001157e-06, + 9.621756746776539843e-06, + 9.771165225533018454e-06, + 9.919959895964938868e-06, + 1.006813652373300689e-05, + 1.021569090425964897e-05, + 1.036261886283389517e-05, + 1.050891625470748699e-05, + 1.065457896519577753e-05, + 1.079960290977150490e-05, + 1.094398403416473696e-05, + 1.108771831445203512e-05, + 1.123080175715398342e-05, + 1.137323039932354420e-05, + 1.151500030863975353e-05, + 1.165610758349336807e-05, + 1.179654835307897482e-05, + 1.193631877747840527e-05, + 1.207541504774645677e-05, + 1.221383338599714935e-05, + 1.235157004548413281e-05, + 1.248862131068278115e-05, + 1.262498349737275632e-05, + 1.276065295271404631e-05, + 1.289562605532508193e-05, + 1.302989921536115174e-05, + 1.316346887458679457e-05, + 1.329633150645173602e-05, + 1.342848361616370449e-05, + 1.355992174075666306e-05, + 1.369064244916441500e-05, + 1.382064234228673668e-05, + 1.394991805305760607e-05, + 1.407846624651175076e-05, + 1.420628361985013882e-05, + 1.433336690250032485e-05, + 1.445971285618254562e-05, + 1.458531827496751316e-05, + 1.471017998533879870e-05, + 1.483429484624811347e-05, + 1.495765974917623744e-05, + 1.508027161818546932e-05, + 1.520212740997507670e-05, + 1.532322411393468456e-05, + 1.544355875219714365e-05, + 1.556312837968662168e-05, + 1.568193008417141068e-05, + 1.579996098630915354e-05, + 1.591721823969386105e-05, + 1.603369903090322721e-05, + 1.614940057954072339e-05, + 1.626432013827868174e-05, + 1.637845499290346924e-05, + 1.649180246234997204e-05, + 1.660435989874440793e-05, + 1.671612468744200912e-05, + 1.682709424706155409e-05, + 1.693726602952234906e-05, + 1.704663752007838710e-05, + 1.715520623734827555e-05, + 1.726296973334999818e-05, + 1.736992559352839641e-05, + 1.747607143678500853e-05, + 1.758140491550580156e-05, + 1.768592371558803578e-05, + 1.778962555646259588e-05, + 1.789250819112083514e-05, + 1.799456940613454507e-05, + 1.809580702167926238e-05, + 1.819621889155157555e-05, + 1.829580290319101214e-05, + 1.839455697769471623e-05, + 1.849247906983420608e-05, + 1.858956716807035983e-05, + 1.868581929456809631e-05, + 1.878123350520603119e-05, + 1.887580788959099173e-05, + 1.896954057106507090e-05, + 1.906242970671462284e-05, + 1.915447348737898733e-05, + 1.924567013765472831e-05, + 1.933601791590164784e-05, + 1.942551511424682134e-05, + 1.951416005858473652e-05, + 1.960195110858001407e-05, + 1.968888665766764816e-05, + 1.977496513304982504e-05, + 1.986018499569497774e-05, + 1.994454474033385580e-05, + 2.002804289545245090e-05, + 2.011067802328814113e-05, + 2.019244871982018053e-05, + 2.027335361476271614e-05, + 2.035339137155255004e-05, + 2.043256068734108244e-05, + 2.051086029297814682e-05, + 2.058828895300142888e-05, + 2.066484546561956308e-05, + 2.074052866269771617e-05, + 2.081533740973832904e-05, + 2.088927060586533822e-05, + 2.096232718380204116e-05, + 2.103450610985089963e-05, + 2.110580638387247568e-05, + 2.117622703926080668e-05, + 2.124576714291940722e-05, + 2.131442579523668481e-05, + 2.138220213005790986e-05, + 2.144909531465678587e-05, + 2.151510454970810720e-05, + 2.158022906925539564e-05, + 2.164446814068080027e-05, + 2.170782106467260186e-05, + 2.177028717518956293e-05, + 2.183186583942755131e-05, + 2.189255645778323967e-05, + 2.195235846381582643e-05, + 2.201127132420952569e-05, + 2.206929453873427514e-05, + 2.212642764020308623e-05, + 2.218267019443251483e-05, + 2.223802180019767021e-05, + 2.229248208918961272e-05, + 2.234605072596852976e-05, + 2.239872740791926320e-05, + 2.245051186520152415e-05, + 2.250140386070312656e-05, + 2.255140318998893491e-05, + 2.260050968125086208e-05, + 2.264872319525502813e-05, + 2.269604362528977273e-05, + 2.274247089711057437e-05, + 2.278800496888460351e-05, + 2.283264583113537075e-05, + 2.287639350668438991e-05, + 2.291924805059266165e-05, + 2.296120955010145907e-05, + 2.300227812457197152e-05, + 2.304245392542205500e-05, + 2.308173713606504921e-05, + 2.312012797184468145e-05, + 2.315762667997103085e-05, + 2.319423353945349424e-05, + 2.322994886103497169e-05, + 2.326477298712278585e-05, + 2.329870629171963863e-05, + 2.333174918035359882e-05, + 2.336390209000734102e-05, + 2.339516548904475523e-05, + 2.342553987713908125e-05, + 2.345502578519764131e-05, + 2.348362377528641687e-05, + 2.351133444055462541e-05, + 2.353815840515641395e-05, + 2.356409632417335551e-05, + 2.358914888353495678e-05, + 2.361331679993769532e-05, + 2.363660082076426343e-05, + 2.365900172400159230e-05, + 2.368052031815677216e-05, + 2.370115744217360932e-05, + 2.372091396534726224e-05, + 2.373979078723741724e-05, + 2.375778883758215541e-05, + 2.377490907620903449e-05, + 2.379115249294684158e-05, + 2.380652010753467942e-05, + 2.382101296953253661e-05, + 2.383463215822764647e-05, + 2.384737878254324464e-05, + 2.385925398094386737e-05, + 2.387025892134153081e-05, + 2.388039480099941658e-05, + 2.388966284643639080e-05, + 2.389806431332901934e-05, + 2.390560048641332216e-05, + 2.391227267938589069e-05, + 2.391808223480409038e-05, + 2.392303052398456927e-05, + 2.392711894690223060e-05, + 2.393034893208719301e-05, + 2.393272193652108318e-05, + 2.393423944553323704e-05, + 2.393490297269499682e-05, + 2.393471405971395730e-05, + 2.393367427632713126e-05, + 2.393178522019268506e-05, + 2.392904851678197929e-05, + 2.392546581926992873e-05, + 2.392103880842453919e-05, + 2.391576919249628153e-05, + 2.390965870710606991e-05, + 2.390270911513241666e-05, + 2.389492220659819414e-05, + 2.388629979855643099e-05, + 2.387684373497507835e-05, + 2.386655588662116968e-05, + 2.385543815094455018e-05, + 2.384349245196004780e-05, + 2.383072074012966785e-05, + 2.381712499224361877e-05, + 2.380270721130055183e-05, + 2.378746942638718082e-05, + 2.377141369255730878e-05, + 2.375454209070969943e-05, + 2.373685672746560633e-05, + 2.371835973504540429e-05, + 2.369905327114455319e-05, + 2.367893951880875551e-05, + 2.365802068630852432e-05, + 2.363629900701291774e-05, + 2.361377673926277882e-05, + 2.359045616624309098e-05, + 2.356633959585465260e-05, + 2.354142936058544993e-05, + 2.351572781738052575e-05, + 2.348923734751219022e-05, + 2.346196035644875104e-05, + 2.343389927372313195e-05, + 2.340505655280062031e-05, + 2.337543467094591349e-05, + 2.334503612908945364e-05, + 2.331386345169361344e-05, + 2.328191918661771969e-05, + 2.324920590498261278e-05, + 2.321572620103479949e-05, + 2.318148269200976565e-05, + 2.314647801799475337e-05, + 2.311071484179094541e-05, + 2.307419584877514469e-05, + 2.303692374676077957e-05, + 2.299890126585827898e-05, + 2.296013115833513572e-05, + 2.292061619847485522e-05, + 2.288035918243628368e-05, + 2.283936292811136409e-05, + 2.279763027498289574e-05, + 2.275516408398186671e-05, + 2.271196723734400383e-05, + 2.266804263846520441e-05, + 2.262339321175831994e-05, + 2.257802190250726655e-05, + 2.253193167672166395e-05, + 2.248512552099131857e-05, + 2.243760644233930063e-05, + 2.238937746807496357e-05, + 2.234044164564716006e-05, + 2.229080204249561135e-05, + 2.224046174590296461e-05, + 2.218942386284580311e-05, + 2.213769151984532456e-05, + 2.208526786281750771e-05, + 2.203215605692341117e-05, + 2.197835928641778824e-05, + 2.192388075449905373e-05, + 2.186872368315656386e-05, + 2.181289131301998672e-05, + 2.175638690320576908e-05, + 2.169921373116537181e-05, + 2.164137509253184169e-05, + 2.158287430096642056e-05, + 2.152371468800409729e-05, + 2.146389960290039312e-05, + 2.140343241247542622e-05, + 2.134231650095986697e-05, + 2.128055526983953444e-05, + 2.121815213769892913e-05, + 2.115511054006619882e-05, + 2.109143392925587503e-05, + 2.102712577421207707e-05, + 2.096218956035237677e-05, + 2.089662878940965742e-05, + 2.083044697927429798e-05, + 2.076364766383668933e-05, + 2.069623439282864257e-05, + 2.062821073166416720e-05, + 2.055958026128188910e-05, + 2.049034657798457502e-05, + 2.042051329328059515e-05, + 2.035008403372327824e-05, + 2.027906244075206241e-05, + 2.020745217053060346e-05, + 2.013525689378813913e-05, + 2.006248029565710272e-05, + 1.998912607551331849e-05, + 1.991519794681377112e-05, + 1.984069963693618104e-05, + 1.976563488701615391e-05, + 1.969000745178610203e-05, + 1.961382109941329843e-05, + 1.953707961133661634e-05, + 1.945978678210504747e-05, + 1.938194641921472605e-05, + 1.930356234294522112e-05, + 1.922463838619768546e-05, + 1.914517839433135788e-05, + 1.906518622499943537e-05, + 1.898466574798666977e-05, + 1.890362084504488413e-05, + 1.882205540972878047e-05, + 1.873997334723369567e-05, + 1.865737857422948481e-05, + 1.857427501869769764e-05, + 1.849066661976682060e-05, + 1.840655732754759662e-05, + 1.832195110296811456e-05, + 1.823685191761068768e-05, + 1.815126375354541159e-05, + 1.806519060316660224e-05, + 1.797863646902665206e-05, + 1.789160536367261702e-05, + 1.780410130947906311e-05, + 1.771612833848529712e-05, + 1.762769049222837241e-05, + 1.753879182157905923e-05, + 1.744943638657549433e-05, + 1.735962825625933078e-05, + 1.726937150850846940e-05, + 1.717867022987333740e-05, + 1.708752851541130361e-05, + 1.699595046852034154e-05, + 1.690394020077466434e-05, + 1.681150183175921455e-05, + 1.671863948890303918e-05, + 1.662535730731544304e-05, + 1.653165942962043442e-05, + 1.643755000579026287e-05, + 1.634303319298180624e-05, + 1.624811315536986783e-05, + 1.615279406398197791e-05, + 1.605708009653492309e-05, + 1.596097543726745393e-05, + 1.586448427677683131e-05, + 1.576761081185333992e-05, + 1.567035924531503887e-05, + 1.557273378584253949e-05, + 1.547473864781619878e-05, + 1.537637805114907099e-05, + 1.527765622112435182e-05, + 1.517857738822912957e-05, + 1.507914578799205467e-05, + 1.497936566081667068e-05, + 1.487924125181926680e-05, + 1.477877681066443828e-05, + 1.467797659140105846e-05, + 1.457684485229793409e-05, + 1.447538585568187123e-05, + 1.437360386777206001e-05, + 1.427150315851847425e-05, + 1.416908800143883124e-05, + 1.406636267345419953e-05, + 1.396333145472803049e-05, + 1.385999862850220665e-05, + 1.375636848093454683e-05, + 1.365244530093824097e-05, + 1.354823338001849465e-05, + 1.344373701211039183e-05, + 1.333896049341878351e-05, + 1.323390812225551688e-05, + 1.312858419887807208e-05, + 1.302299302533071648e-05, + 1.291713890528113739e-05, + 1.281102614386189446e-05, + 1.270465904750942413e-05, + 1.259804192380390124e-05, + 1.249117908130890082e-05, + 1.238407482941406677e-05, + 1.227673347817340312e-05, + 1.216915933814824091e-05, + 1.206135672024679995e-05, + 1.195332993556785368e-05, + 1.184508329524003682e-05, + 1.173662111026608621e-05, + 1.162794769136494878e-05, + 1.151906734881412497e-05, + 1.140998439229219518e-05, + 1.130070313072396858e-05, + 1.119122787212162884e-05, + 1.108156292343087231e-05, + 1.097171259037500992e-05, + 1.086168117729825251e-05, + 1.075147298701251645e-05, + 1.064109232064147473e-05, + 1.053054347746589551e-05, + 1.041983075477171152e-05, + 1.030895844769490121e-05, + 1.019793084906782850e-05, + 1.008675224926811519e-05, + 9.975426936064558852e-06, + 9.863959194464877006e-06, + 9.752353306566170191e-06, + 9.640613551400839916e-06, + 9.528744204787876777e-06, + 9.416749539180357251e-06, + 9.304633823517478907e-06, + 9.192401323071813253e-06, + 9.080056299303519514e-06, + 8.967603009708400468e-06, + 8.855045707671638493e-06, + 8.742388642317743683e-06, + 8.629636058365221623e-06, + 8.516792195976455440e-06, + 8.403861290613386632e-06, + 8.290847572890793716e-06, + 8.177755268428994891e-06, + 8.064588597710186171e-06, + 7.951351775932936368e-06, + 7.838049012866245011e-06, + 7.724684512707476287e-06, + 7.611262473938566723e-06, + 7.497787089181416341e-06, + 7.384262545057384519e-06, + 7.270693022043545966e-06, + 7.157082694330919421e-06, + 7.043435729685557647e-06, + 6.929756289305138815e-06, + 6.816048527680886589e-06, + 6.702316592457180339e-06, + 6.588564624292186883e-06, + 6.474796756718737017e-06, + 6.361017116008632536e-06, + 6.247229821032179367e-06, + 6.133438983123528816e-06, + 6.019648705942142784e-06, + 5.905863085339135362e-06, + 5.792086209219025189e-06, + 5.678322157407190049e-06, + 5.564575001515090371e-06, + 5.450848804806159351e-06, + 5.337147622061865870e-06, + 5.223475499451135892e-06, + 5.109836474395393010e-06, + 4.996234575439402866e-06, + 4.882673822120103317e-06, + 4.769158224834579108e-06, + 4.655691784712203944e-06, + 4.542278493484839462e-06, + 4.428922333356677609e-06, + 4.315627276878344444e-06, + 4.202397286819125215e-06, + 4.089236316038654115e-06, + 3.976148307362718922e-06, + 3.863137193456065452e-06, + 3.750206896697139170e-06, + 3.637361329056045534e-06, + 3.524604391967867745e-06, + 3.411939976211584235e-06, + 3.299371961786785985e-06, + 3.186904217791437391e-06, + 3.074540602300088594e-06, + 2.962284962245597495e-06, + 2.850141133296198591e-06, + 2.738112939738512482e-06, + 2.626204194356701368e-06, + 2.514418698316729628e-06, + 2.402760241046049136e-06, + 2.291232600119179089e-06, + 2.179839541141053054e-06, + 2.068584817631273606e-06, + 1.957472170908511394e-06, + 1.846505329978235789e-06, + 1.735688011417616450e-06, + 1.625023919262481062e-06, + 1.514516744897550025e-06, + 1.404170166942085317e-06, + 1.293987851141493778e-06, + 1.183973450255115155e-06, + 1.074130603949209010e-06, + 9.644629386850627366e-07, + 8.549740676146555146e-07, + 7.456675904701764205e-07, + 6.365470934597509637e-07, + 5.276161491594079634e-07, + 4.188783164102114739e-07, + 3.103371402108453072e-07, + 2.019961516161545790e-07, + 9.385886763377096312e-08, +-1.407120887985109076e-08, +-1.217905893192894663e-07, +-2.292957994316432546e-07, +-3.365833794183395030e-07, +-4.436498840325718396e-07, +-5.504918826783609991e-07, +-6.571059595101858821e-07, +-7.634887135282474450e-07, +-8.696367586766381244e-07, +-9.755467239394675300e-07, +-1.081215253433690268e-06, +-1.186639006506335581e-06, +-1.291814657826114387e-06, +-1.396738897477108534e-06, +-1.501408431051205810e-06, +-1.605819979740030973e-06, +-1.709970280423336600e-06, +-1.813856085761725033e-06, +-1.917474164283543585e-06, +-2.020821300475335795e-06, +-2.123894294867226167e-06, +-2.226689964122856429e-06, +-2.329205141121998989e-06, +-2.431436675048983361e-06, +-2.533381431475018453e-06, +-2.635036292444089751e-06, +-2.736398156553769653e-06, +-2.837463939040303621e-06, +-2.938230571857904324e-06, +-3.038695003759765681e-06, +-3.138854200379595289e-06, +-3.238705144309056523e-06, +-3.338244835176744624e-06, +-3.437470289727350393e-06, +-3.536378541896539602e-06, +-3.634966642887346467e-06, +-3.733231661246981753e-06, +-3.831170682939380721e-06, +-3.928780811420458191e-06, +-4.026059167711330735e-06, +-4.123002890468281591e-06, +-4.219609136056849793e-06, +-4.315875078620500825e-06, +-4.411797910151173452e-06, +-4.507374840558520431e-06, +-4.602603097738638457e-06, +-4.697479927639311723e-06, +-4.792002594329335637e-06, +-4.886168380062160338e-06, +-4.979974585342869825e-06, +-5.073418528990297424e-06, +-5.166497548203035915e-06, +-5.259208998619991913e-06, +-5.351550254382690228e-06, +-5.443518708196553308e-06, +-5.535111771391841871e-06, +-5.626326873981242137e-06, +-5.717161464721026685e-06, +-5.807613011166785836e-06, +-5.897678999730726042e-06, +-5.987356935739235094e-06, +-6.076644343486445941e-06, +-6.165538766290217101e-06, +-6.254037766546213173e-06, +-6.342138925778936028e-06, +-6.429839844695381809e-06, +-6.517138143236806501e-06, +-6.604031460627693751e-06, +-6.690517455426898720e-06, +-6.776593805576725172e-06, +-6.862258208449132812e-06, +-6.947508380895431866e-06, +-7.032342059290811599e-06, +-7.116756999581770778e-06, +-7.200750977329073245e-06, +-7.284321787754370315e-06, +-7.367467245780485652e-06, +-7.450185186076384258e-06, +-7.532473463096870360e-06, +-7.614329951125164369e-06, +-7.695752544310966849e-06, +-7.776739156711943648e-06, +-7.857287722330266052e-06, +-7.937396195150590896e-06, +-8.017062549176968330e-06, +-8.096284778469479382e-06, +-8.175060897177658186e-06, +-8.253388939577119380e-06, +-8.331266960101213416e-06, +-8.408693033373872814e-06, +-8.485665254242844642e-06, +-8.562181737809004641e-06, +-8.638240619457924441e-06, +-8.713840054889521110e-06, +-8.788978220145060558e-06, +-8.863653311636210771e-06, +-8.937863546172551744e-06, +-9.011607160986285131e-06, +-9.084882413758905612e-06, +-9.157687582645996941e-06, +-9.230020966299256493e-06, +-9.301880883891684333e-06, +-9.373265675137930637e-06, +-9.444173700317411228e-06, +-9.514603340292949069e-06, +-9.584552996532990249e-06, +-9.654021091127875485e-06, +-9.723006066810289187e-06, +-9.791506386970971927e-06, +-9.859520535676753763e-06, +-9.927047017684755597e-06, +-9.994084358459280707e-06, +-1.006063110418440504e-05, +-1.012668582177755855e-05, +-1.019224709890322000e-05, +-1.025731354398342191e-05, +-1.032188378620919052e-05, +-1.038595647555174365e-05, +-1.044953028277051031e-05, +-1.051260389942204836e-05, +-1.057517603786881968e-05, +-1.063724543128492975e-05, +-1.069881083366342730e-05, +-1.075987101982201509e-05, +-1.082042478540611778e-05, +-1.088047094689476888e-05, +-1.094000834160236573e-05, +-1.099903582768154611e-05, +-1.105755228412500252e-05, +-1.111555661076649184e-05, +-1.117304772827958517e-05, +-1.123002457817852496e-05, +-1.128648612281541798e-05, +-1.134243134537914943e-05, +-1.139785924989093937e-05, +-1.145276886120225397e-05, +-1.150715922498889320e-05, +-1.156102940774580530e-05, +-1.161437849678122871e-05, +-1.166720560021030543e-05, +-1.171950984694617531e-05, +-1.177129038669325742e-05, +-1.182254638993682810e-05, +-1.187327704793321745e-05, +-1.192348157270005147e-05, +-1.197315919700379226e-05, +-1.202230917434799809e-05, +-1.207093077896118712e-05, +-1.211902330578208720e-05, +-1.216658607044537520e-05, +-1.221361840926753156e-05, +-1.226011967922964383e-05, +-1.230608925796179077e-05, +-1.235152654372581371e-05, +-1.239643095539603636e-05, +-1.244080193244185154e-05, +-1.248463893490737035e-05, +-1.252794144339125599e-05, +-1.257070895902612057e-05, +-1.261294100345693590e-05, +-1.265463711881757241e-05, +-1.269579686770896936e-05, +-1.273641983317414234e-05, +-1.277650561867479497e-05, +-1.281605384806466109e-05, +-1.285506416556505429e-05, +-1.289353623573698530e-05, +-1.293146974345408062e-05, +-1.296886439387451869e-05, +-1.300571991241262201e-05, +-1.304203604470853344e-05, +-1.307781255659910363e-05, +-1.311304923408608326e-05, +-1.314774588330464220e-05, +-1.318190233049179721e-05, +-1.321551842195254927e-05, +-1.324859402402703222e-05, +-1.328112902305609955e-05, +-1.331312332534562531e-05, +-1.334457685713147085e-05, +-1.337548956454335208e-05, +-1.340586141356709231e-05, +-1.343569239000753911e-05, +-1.346498249945053765e-05, +-1.349373176722269493e-05, +-1.352194023835308710e-05, +-1.354960797753199712e-05, +-1.357673506907069084e-05, +-1.360332161685897898e-05, +-1.362936774432406993e-05, +-1.365487359438648678e-05, +-1.367983932941739552e-05, +-1.370426513119377833e-05, +-1.372815120085429130e-05, +-1.375149775885301479e-05, +-1.377430504491427092e-05, +-1.379657331798531854e-05, +-1.381830285618886176e-05, +-1.383949395677576688e-05, +-1.386014693607583452e-05, +-1.388026212944881572e-05, +-1.389983989123508241e-05, +-1.391888059470451411e-05, +-1.393738463200573347e-05, +-1.395535241411474396e-05, +-1.397278437078218169e-05, +-1.398968095048100947e-05, +-1.400604262035310797e-05, +-1.402186986615466410e-05, +-1.403716319220204736e-05, +-1.405192312131688646e-05, +-1.406615019476963834e-05, +-1.407984497222373819e-05, +-1.409300803167881434e-05, +-1.410563996941250900e-05, +-1.411774139992320523e-05, +-1.412931295587089054e-05, +-1.414035528801840156e-05, +-1.415086906517111360e-05, +-1.416085497411741291e-05, +-1.417031371956709024e-05, +-1.417924602409053067e-05, +-1.418765262805631776e-05, +-1.419553428956931038e-05, +-1.420289178440689160e-05, +-1.420972590595620357e-05, +-1.421603746514952904e-05, +-1.422182729039972548e-05, +-1.422709622753539819e-05, +-1.423184513973487583e-05, +-1.423607490746025704e-05, +-1.423978642839077772e-05, +-1.424298061735542787e-05, +-1.424565840626517376e-05, +-1.424782074404510710e-05, +-1.424946859656528662e-05, +-1.425060294657195887e-05, +-1.425122479361761711e-05, +-1.425133515399070262e-05, +-1.425093506064518407e-05, +-1.425002556312921193e-05, +-1.424860772751354593e-05, +-1.424668263631940810e-05, +-1.424425138844613944e-05, +-1.424131509909761647e-05, +-1.423787489970923020e-05, +-1.423393193787361318e-05, +-1.422948737726639709e-05, +-1.422454239757111650e-05, +-1.421909819440407533e-05, +-1.421315597923849167e-05, +-1.420671697932810048e-05, +-1.419978243763070550e-05, +-1.419235361273099253e-05, +-1.418443177876293609e-05, +-1.417601822533197406e-05, +-1.416711425743653347e-05, +-1.415772119538917681e-05, +-1.414784037473747391e-05, +-1.413747314618428425e-05, +-1.412662087550782251e-05, +-1.411528494348110063e-05, +-1.410346674579111407e-05, +-1.409116769295767407e-05, +-1.407838921025161135e-05, +-1.406513273761285447e-05, +-1.405139972956804403e-05, +-1.403719165514760814e-05, +-1.402250999780270406e-05, +-1.400735625532159062e-05, +-1.399173193974581604e-05, +-1.397563857728580431e-05, +-1.395907770823627044e-05, +-1.394205088689116148e-05, +-1.392455968145840768e-05, +-1.390660567397405201e-05, +-1.388819046021641012e-05, +-1.386931564961937658e-05, +-1.384998286518592241e-05, +-1.383019374340087954e-05, +-1.380994993414360828e-05, +-1.378925310060021937e-05, +-1.376810491917553667e-05, +-1.374650707940470257e-05, +-1.372446128386453932e-05, +-1.370196924808432435e-05, +-1.367903270045676872e-05, +-1.365565338214827402e-05, +-1.363183304700889787e-05, +-1.360757346148231764e-05, +-1.358287640451533523e-05, +-1.355774366746677182e-05, +-1.353217705401681000e-05, +-1.350617838007536168e-05, +-1.347974947369049711e-05, +-1.345289217495659091e-05, +-1.342560833592212761e-05, +-1.339789982049708368e-05, +-1.336976850436059588e-05, +-1.334121627486762158e-05, +-1.331224503095604129e-05, +-1.328285668305292771e-05, +-1.325305315298112811e-05, +-1.322283637386502855e-05, +-1.319220829003668233e-05, +-1.316117085694107270e-05, +-1.312972604104185165e-05, +-1.309787581972607754e-05, +-1.306562218120952524e-05, +-1.303296712444106292e-05, +-1.299991265900727274e-05, +-1.296646080503685131e-05, +-1.293261359310445963e-05, +-1.289837306413482705e-05, +-1.286374126930631323e-05, +-1.282872026995437853e-05, +-1.279331213747478681e-05, +-1.275751895322715208e-05, +-1.272134280843730102e-05, +-1.268478580410057060e-05, +-1.264785005088391142e-05, +-1.261053766902879739e-05, +-1.257285078825291402e-05, +-1.253479154765280043e-05, +-1.249636209560553257e-05, +-1.245756458967060968e-05, +-1.241840119649132239e-05, +-1.237887409169679334e-05, +-1.233898545980259995e-05, +-1.229873749411257273e-05, +-1.225813239661997538e-05, +-1.221717237790777851e-05, +-1.217585965705020052e-05, +-1.213419646151322699e-05, +-1.209218502705475563e-05, +-1.204982759762563915e-05, +-1.200712642527018427e-05, +-1.196408377002568176e-05, +-1.192070189982339000e-05, +-1.187698309038812767e-05, +-1.183292962513814941e-05, +-1.178854379508574814e-05, +-1.174382789873619391e-05, +-1.169878424198821092e-05, +-1.165341513803322800e-05, +-1.160772290725499846e-05, +-1.156170987712889123e-05, +-1.151537838212213414e-05, +-1.146873076359224955e-05, +-1.142176936968711971e-05, +-1.137449655524374262e-05, +-1.132691468168799417e-05, +-1.127902611693305020e-05, +-1.123083323527922830e-05, +-1.118233841731293334e-05, +-1.113354404980563021e-05, +-1.108445252561270464e-05, +-1.103506624357308139e-05, +-1.098538760840726005e-05, +-1.093541903061713819e-05, +-1.088516292638489428e-05, +-1.083462171747128606e-05, +-1.078379783111546018e-05, +-1.073269369993332514e-05, +-1.068131176181627158e-05, +-1.062965445983099705e-05, +-1.057772424211785364e-05, +-1.052552356178963427e-05, +-1.047305487683121116e-05, +-1.042032064999794779e-05, +-1.036732334871471394e-05, +-1.031406544497572062e-05, +-1.026054941524253227e-05, +-1.020677774034415921e-05, +-1.015275290537532894e-05, +-1.009847739959664136e-05, +-1.004395371633261642e-05, +-9.989184352872384638e-06, +-9.934171810367785647e-06, +-9.878918593733770646e-06, +-9.823427211546985468e-06, +-9.767700175946281480e-06, +-9.711740002531117362e-06, +-9.655549210262264826e-06, +-9.599130321361358981e-06, +-9.542485861210113265e-06, +-9.485618358251031944e-06, +-9.428530343887141734e-06, +-9.371224352381416804e-06, +-9.313702920757855496e-06, +-9.255968588701730333e-06, +-9.198023898459097724e-06, +-9.139871394738386293e-06, +-9.081513624610204732e-06, +-9.022953137407908612e-06, +-8.964192484629383517e-06, +-8.905234219837349270e-06, +-8.846080898560023298e-06, +-8.786735078193281547e-06, +-8.727199317901135502e-06, +-8.667476178517132467e-06, +-8.607568222447024706e-06, +-8.547478013569068580e-06, +-8.487208117137132451e-06, +-8.426761099681565024e-06, +-8.366139528912553975e-06, +-8.305345973620928226e-06, +-8.244383003582358516e-06, +-8.183253189458508661e-06, +-8.121959102700900701e-06, +-8.060503315452955536e-06, +-7.998888400454152848e-06, +-7.937116930942007362e-06, +-7.875191480556620091e-06, +-7.813114623244291074e-06, +-7.750888933160513767e-06, +-7.688516984574959975e-06, +-7.626001351775381423e-06, +-7.563344608971258059e-06, +-7.500549330199428426e-06, +-7.437618089228823014e-06, +-7.374553459464549639e-06, +-7.311358013854282751e-06, +-7.248034324792887525e-06, +-7.184584964027791029e-06, +-7.121012502566128785e-06, +-7.057319510579317183e-06, +-6.993508557310410953e-06, +-6.929582210980173986e-06, +-6.865543038693727828e-06, +-6.801393606347233218e-06, +-6.737136478536295334e-06, +-6.672774218461890616e-06, +-6.608309387839307337e-06, +-6.543744546804962664e-06, +-6.479082253825755730e-06, +-6.414325065606069349e-06, +-6.349475536997549143e-06, +-6.284536220907820503e-06, +-6.219509668209529949e-06, +-6.154398427649328057e-06, +-6.089205045758714153e-06, +-6.023932066762442414e-06, +-5.958582032490061125e-06, +-5.893157482286228840e-06, +-5.827660952920657831e-06, +-5.762094978500356398e-06, +-5.696462090380049205e-06, +-5.630764817073703838e-06, +-5.565005684167559159e-06, +-5.499187214231509565e-06, +-5.433311926731222782e-06, +-5.367382337942021172e-06, +-5.301400960861037644e-06, +-5.235370305120476093e-06, +-5.169292876902587077e-06, +-5.103171178852093930e-06, +-5.037007709991598732e-06, +-4.970804965635773639e-06, +-4.904565437306151908e-06, +-4.838291612646055295e-06, +-4.771985975337445917e-06, +-4.705651005015213287e-06, +-4.639289177184708887e-06, +-4.572902963137025930e-06, +-4.506494829867235268e-06, +-4.440067239989918422e-06, +-4.373622651658005732e-06, +-4.307163518480360894e-06, +-4.240692289439770390e-06, +-4.174211408811092995e-06, +-4.107723316081253280e-06, +-4.041230445866843946e-06, +-3.974735227835052750e-06, +-3.908240086623402752e-06, +-3.841747441759117315e-06, +-3.775259707580980045e-06, +-3.708779293159354132e-06, +-3.642308602217397696e-06, +-3.575850033053969811e-06, +-3.509405978464784870e-06, +-3.442978825664532561e-06, +-3.376570956210725373e-06, +-3.310184745925999836e-06, +-3.243822564821433787e-06, +-3.177486777021876599e-06, +-3.111179740688543924e-06, +-3.044903807945070447e-06, +-2.978661324801340447e-06, +-2.912454631080273234e-06, +-2.846286060341835399e-06, +-2.780157939811371242e-06, +-2.714072590304354054e-06, +-2.648032326154760168e-06, +-2.582039455141228437e-06, +-2.516096278416180939e-06, +-2.450205090432364896e-06, +-2.384368178872734856e-06, +-2.318587824579320990e-06, +-2.252866301481645491e-06, +-2.187205876527602984e-06, +-2.121608809613320700e-06, +-2.056077353512826362e-06, +-1.990613753810302492e-06, +-1.925220248831316651e-06, +-1.859899069573744208e-06, +-1.794652439641236446e-06, +-1.729482575174964525e-06, +-1.664391684786535112e-06, +-1.599381969492874299e-06, +-1.534455622648481904e-06, +-1.469614829880963588e-06, +-1.404861769025376054e-06, +-1.340198610059256238e-06, +-1.275627515037949703e-06, +-1.211150638032036296e-06, +-1.146770125062153075e-06, +-1.082488114037271026e-06, +-1.018306734690843806e-06, +-9.542281085199710878e-07, +-8.902543487218015255e-07, +-8.263875601343361630e-07, +-7.626298391737098795e-07, +-6.989832737751242877e-07, +-6.354499433316156165e-07, +-5.720319186358712767e-07, +-5.087312618194472000e-07, +-4.455500262954725190e-07, +-3.824902567002777208e-07, +-3.195539888347248571e-07, +-2.567432496079552391e-07, +-1.940600569802213045e-07, +-1.315064199055783535e-07, +-6.908433827714173601e-08, +-6.795802871439582754e-09, + 5.535720470752680232e-08, + 1.173727120816574063e-07, + 1.792487561537736774e-07, + 2.409833831614232718e-07, + 3.025746487287260703e-07, + 3.640206179207551096e-07, + 4.253193652946031667e-07, + 4.864689749516357177e-07, + 5.474675405889767777e-07, + 6.083131655506686842e-07, + 6.690039628767349458e-07, + 7.295380553547482429e-07, + 7.899135755679503698e-07, + 8.501286659454289839e-07, + 9.101814788092998822e-07, + 9.700701764243819894e-07, + 1.029792931044428099e-06, + 1.089347924959520071e-06, + 1.148733350542840724e-06, + 1.207947410297249631e-06, + 1.266988316899775013e-06, + 1.325854293248425644e-06, + 1.384543572505563178e-06, + 1.443054398142295566e-06, + 1.501385023983092615e-06, + 1.559533714247895589e-06, + 1.617498743595774353e-06, + 1.675278397167371552e-06, + 1.732870970625587304e-06, + 1.790274770197762918e-06, + 1.847488112716836534e-06, + 1.904509325660705590e-06, + 1.961336747192977998e-06, + 2.017968726202504238e-06, + 2.074403622341018644e-06, + 2.130639806063139699e-06, + 2.186675658663011402e-06, + 2.242509572312909764e-06, + 2.298139950098927877e-06, + 2.353565206059147038e-06, + 2.408783765217655280e-06, + 2.463794063621745248e-06, + 2.518594548375641360e-06, + 2.573183677676146341e-06, + 2.627559920845437063e-06, + 2.681721758366097413e-06, + 2.735667681912958676e-06, + 2.789396194385899199e-06, + 2.842905809942093048e-06, + 2.896195054027954587e-06, + 2.949262463409156057e-06, + 3.002106586202714027e-06, + 3.054725981905856279e-06, + 3.107119221425796288e-06, + 3.159284887109610613e-06, + 3.211221572771865301e-06, + 3.262927883723475145e-06, + 3.314402436799513898e-06, + 3.365643860385298645e-06, + 3.416650794443830289e-06, + 3.467421890542230295e-06, + 3.517955811876505811e-06, + 3.568251233297473966e-06, + 3.618306841335610423e-06, + 3.668121334224060723e-06, + 3.717693421923770064e-06, + 3.767021826145546808e-06, + 3.816105280373762891e-06, + 3.864942529887502117e-06, + 3.913532331783751496e-06, + 3.961873454996910956e-06, + 4.009964680321029224e-06, + 4.057804800428972187e-06, + 4.105392619893167571e-06, + 4.152726955203748390e-06, + 4.199806634788781787e-06, + 4.246630499031346909e-06, + 4.293197400287546220e-06, + 4.339506202904529509e-06, + 4.385555783236483340e-06, + 4.431345029661199007e-06, + 4.476872842596713348e-06, + 4.522138134515610052e-06, + 4.567139829960088368e-06, + 4.611876865557067402e-06, + 4.656348190031120309e-06, + 4.700552764218612118e-06, + 4.744489561080753360e-06, + 4.788157565715010445e-06, + 4.831555775368315145e-06, + 4.874683199447634714e-06, + 4.917538859531329756e-06, + 4.960121789379774322e-06, + 5.002431034945596540e-06, + 5.044465654382218400e-06, + 5.086224718054219202e-06, + 5.127707308544807235e-06, + 5.168912520664920298e-06, + 5.209839461459900318e-06, + 5.250487250217348738e-06, + 5.290855018473898540e-06, + 5.330941910020542934e-06, + 5.370747080908983020e-06, + 5.410269699457119104e-06, + 5.449508946253051232e-06, + 5.488464014160028408e-06, + 5.527134108320382212e-06, + 5.565518446157890022e-06, + 5.603616257381895830e-06, + 5.641426783988786620e-06, + 5.678949280264292063e-06, + 5.716183012785083714e-06, + 5.753127260419931215e-06, + 5.789781314329349924e-06, + 5.826144477966822343e-06, + 5.862216067077408131e-06, + 5.897995409697789000e-06, + 5.933481846153965632e-06, + 5.968674729060630875e-06, + 6.003573423318008614e-06, + 6.038177306109331310e-06, + 6.072485766897830489e-06, + 6.106498207423363857e-06, + 6.140214041697550793e-06, + 6.173632696000366427e-06, + 6.206753608874221726e-06, + 6.239576231118649210e-06, + 6.272100025784989517e-06, + 6.304324468169304273e-06, + 6.336249045806109748e-06, + 6.367873258461242293e-06, + 6.399196618123435446e-06, + 6.430218648996748306e-06, + 6.460938887492114683e-06, + 6.491356882217805509e-06, + 6.521472193970363887e-06, + 6.551284395724859137e-06, + 6.580793072623731366e-06, + 6.609997821966972667e-06, + 6.638898253200128043e-06, + 6.667493987903296694e-06, + 6.695784659778339270e-06, + 6.723769914637296393e-06, + 6.751449410388255067e-06, + 6.778822817023021803e-06, + 6.805889816602504527e-06, + 6.832650103243157514e-06, + 6.859103383101530656e-06, + 6.885249374360169753e-06, + 6.911087807211246755e-06, + 6.936618423840737185e-06, + 6.961840978412596719e-06, + 6.986755237051362281e-06, + 7.011360977825115667e-06, + 7.035657990728420070e-06, + 7.059646077663543051e-06, + 7.083325052422180111e-06, + 7.106694740667073228e-06, + 7.129754979912064077e-06, + 7.152505619502967182e-06, + 7.174946520597496080e-06, + 7.197077556144200998e-06, + 7.218898610862311168e-06, + 7.240409581219900854e-06, + 7.261610375412445021e-06, + 7.282500913340772762e-06, + 7.303081126588752214e-06, + 7.323350958399773533e-06, + 7.343310363654294057e-06, + 7.362959308845503041e-06, + 7.382297772055809725e-06, + 7.401325742931882959e-06, + 7.420043222660490441e-06, + 7.438450223942713340e-06, + 7.456546770968550549e-06, + 7.474332899390909697e-06, + 7.491808656299555800e-06, + 7.508974100193796991e-06, + 7.525829300956125702e-06, + 7.542374339824161545e-06, + 7.558609309362868630e-06, + 7.574534313436769495e-06, + 7.590149467180819882e-06, + 7.605454896971666366e-06, + 7.620450740398671051e-06, + 7.635137146233752115e-06, + 7.649514274401409010e-06, + 7.663582295948651098e-06, + 7.677341393013908149e-06, + 7.690791758796076377e-06, + 7.703933597523239201e-06, + 7.716767124420317365e-06, + 7.729292565677532207e-06, + 7.741510158417430666e-06, + 7.753420150662288069e-06, + 7.765022801300834975e-06, + 7.776318380054873924e-06, + 7.787307167445022026e-06, + 7.797989454756927905e-06, + 7.808365544006380714e-06, + 7.818435747904722396e-06, + 7.828200389823384105e-06, + 7.837659803758624226e-06, + 7.846814334295414278e-06, + 7.855664336571285852e-06, + 7.864210176239872622e-06, + 7.872452229434189771e-06, + 7.880390882729137536e-06, + 7.888026533104565492e-06, + 7.895359587906979881e-06, + 7.902390464811627035e-06, + 7.909119591784222731e-06, + 7.915547407041981898e-06, + 7.921674359014805876e-06, + 7.927500906306058010e-06, + 7.933027517652515938e-06, + 7.938254671884784655e-06, + 7.943182857887076001e-06, + 7.947812574556493482e-06, + 7.952144330762393325e-06, + 7.956178645305289824e-06, + 7.959916046875313458e-06, + 7.963357074010679173e-06, + 7.966502275055610863e-06, + 7.969352208118250615e-06, + 7.971907441027914032e-06, + 7.974168551292653886e-06, + 7.976136126055693827e-06, + 7.977810762052583757e-06, + 7.979193065567171062e-06, + 7.980283652388002130e-06, + 7.981083147763917498e-06, + 7.981592186359951925e-06, + 7.981811412212350170e-06, + 7.981741478683835179e-06, + 7.981383048418229145e-06, + 7.980736793295216863e-06, + 7.979803394384428077e-06, + 7.978583541899702779e-06, + 7.977077935152724632e-06, + 7.975287282506547654e-06, + 7.973212301329141546e-06, + 7.970853717946159439e-06, + 7.968212267593958062e-06, + 7.965288694372211329e-06, + 7.962083751196088549e-06, + 7.958598199748532598e-06, + 7.954832810432112863e-06, + 7.950788362320739290e-06, + 7.946465643111005417e-06, + 7.941865449073526336e-06, + 7.936988585003824332e-06, + 7.931835864173229769e-06, + 7.926408108279326282e-06, + 7.920706147396478961e-06, + 7.914730819925778099e-06, + 7.908482972545120151e-06, + 7.901963460158860093e-06, + 7.895173145847394328e-06, + 7.888112900816436968e-06, + 7.880783604346182605e-06, + 7.873186143740221760e-06, + 7.865321414274280138e-06, + 7.857190319144737663e-06, + 7.848793769417027229e-06, + 7.840132683973769179e-06, + 7.831207989462741459e-06, + 7.822020620244714249e-06, + 7.812571518341108405e-06, + 7.802861633381318483e-06, + 7.792891922550071335e-06, + 7.782663350534515349e-06, + 7.772176889471106399e-06, + 7.761433518892400628e-06, + 7.750434225673647319e-06, + 7.739180003979200518e-06, + 7.727671855208759539e-06, + 7.715910787943553576e-06, + 7.703897817892231545e-06, + 7.691633967836682467e-06, + 7.679120267577649179e-06, + 7.666357753880381000e-06, + 7.653347470419756169e-06, + 7.640090467725670236e-06, + 7.626587803128003486e-06, + 7.612840540701673069e-06, + 7.598849751211248895e-06, + 7.584616512055740648e-06, + 7.570141907213180649e-06, + 7.555427027184871301e-06, + 7.540472968939712158e-06, + 7.525280835858423649e-06, + 7.509851737677451477e-06, + 7.494186790432926914e-06, + 7.478287116404581368e-06, + 7.462153844059151025e-06, + 7.445788107994190615e-06, + 7.429191048881450104e-06, + 7.412363813410005752e-06, + 7.395307554229899386e-06, + 7.378023429894975533e-06, + 7.360512604806010785e-06, + 7.342776249153693231e-06, + 7.324815538861361338e-06, + 7.306631655527773321e-06, + 7.288225786369923953e-06, + 7.269599124165388720e-06, + 7.250752867194972919e-06, + 7.231688219185107488e-06, + 7.212406389250042391e-06, + 7.192908591834103542e-06, + 7.173196046654075077e-06, + 7.153269978641006499e-06, + 7.133131617882447572e-06, + 7.112782199564273251e-06, + 7.092222963912678018e-06, + 7.071455156135774655e-06, + 7.050480026365592816e-06, + 7.029298829599727774e-06, + 7.007912825642927336e-06, + 6.986323279048588970e-06, + 6.964531459060604215e-06, + 6.942538639554406041e-06, + 6.920346098978726856e-06, + 6.897955120296966047e-06, + 6.875366990928347438e-06, + 6.852583002689468096e-06, + 6.829604451735377868e-06, + 6.806432638500796990e-06, + 6.783068867641536980e-06, + 6.759514447975525126e-06, + 6.735770692423790005e-06, + 6.711838917951935737e-06, + 6.687720445510890343e-06, + 6.663416599978057283e-06, + 6.638928710098572867e-06, + 6.614258108426013958e-06, + 6.589406131263696043e-06, + 6.564374118605419042e-06, + 6.539163414076766233e-06, + 6.513775364875601883e-06, + 6.488211321713700508e-06, + 6.462472638757092042e-06, + 6.436560673567515766e-06, + 6.410476787043006872e-06, + 6.384222343359264847e-06, + 6.357798709910185828e-06, + 6.331207257249174231e-06, + 6.304449359030219754e-06, + 6.277526391948508502e-06, + 6.250439735681843043e-06, + 6.223190772831578795e-06, + 6.195780888863405414e-06, + 6.168211472048783785e-06, + 6.140483913406089933e-06, + 6.112599606641336272e-06, + 6.084559948089802566e-06, + 6.056366336656928272e-06, + 6.028020173759440364e-06, + 5.999522863267125751e-06, + 5.970875811443499998e-06, + 5.942080426887649208e-06, + 5.913138120475334963e-06, + 5.884050305300427087e-06, + 5.854818396616257621e-06, + 5.825443811777592291e-06, + 5.795927970181632121e-06, + 5.766272293210054361e-06, + 5.736478204170354601e-06, + 5.706547128237925818e-06, + 5.676480492397269202e-06, + 5.646279725384609373e-06, + 5.615946257629076408e-06, + 5.585481521195239741e-06, + 5.554886949724689146e-06, + 5.524163978378601671e-06, + 5.493314043779334476e-06, + 5.462338583953167105e-06, + 5.431239038272593975e-06, + 5.400016847398361065e-06, + 5.368673453222341168e-06, + 5.337210298810053389e-06, + 5.305628828342853989e-06, + 5.273930487061187725e-06, + 5.242116721207376697e-06, + 5.210188977968122910e-06, + 5.178148705418016255e-06, + 5.145997352462253910e-06, + 5.113736368779790870e-06, + 5.081367204767137624e-06, + 5.048891311481110042e-06, + 5.016310140582780355e-06, + 4.983625144280901290e-06, + 4.950837775275528399e-06, + 4.917949486701720319e-06, + 4.884961732073997981e-06, + 4.851875965229655230e-06, + 4.818693640273513643e-06, + 4.785416211521631263e-06, + 4.752045133446260703e-06, + 4.718581860619609545e-06, + 4.685027847659085591e-06, + 4.651384549171832295e-06, + 4.617653419699547115e-06, + 4.583835913663273590e-06, + 4.549933485309034540e-06, + 4.515947588652335305e-06, + 4.481879677424123050e-06, + 4.447731205016297133e-06, + 4.413503624426844239e-06, + 4.379198388206215267e-06, + 4.344816948402852639e-06, + 4.310360756509111484e-06, + 4.275831263408076131e-06, + 4.241229919319490609e-06, + 4.206558173746063535e-06, + 4.171817475420622575e-06, + 4.137009272252486246e-06, + 4.102135011274343091e-06, + 4.067196138589956718e-06, + 4.032194099320640083e-06, + 3.997130337553349324e-06, + 3.962006296287599347e-06, + 3.926823417383733838e-06, + 3.891583141510677728e-06, + 3.856286908093506697e-06, + 3.820936155262290624e-06, + 3.785532319800362317e-06, + 3.750076837092473592e-06, + 3.714571141074038096e-06, + 3.679016664179635512e-06, + 3.643414837291965966e-06, + 3.607767089691693822e-06, + 3.572074849006406319e-06, + 3.536339541160087212e-06, + 3.500562590323376452e-06, + 3.464745418863073052e-06, + 3.428889447292212655e-06, + 3.392996094221053551e-06, + 3.357066776306756140e-06, + 3.321102908204742918e-06, + 3.285105902519000086e-06, + 3.249077169753801753e-06, + 3.213018118264044585e-06, + 3.176930154207820734e-06, + 3.140814681497106125e-06, + 3.104673101750311783e-06, + 3.068506814243705649e-06, + 3.032317215864359476e-06, + 2.996105701061722684e-06, + 2.959873661800952965e-06, + 2.923622487515715790e-06, + 2.887353565060751842e-06, + 2.851068278665655691e-06, + 2.814768009888235623e-06, + 2.778454137567654932e-06, + 2.742128037778975468e-06, + 2.705791083787162907e-06, + 2.669444646000909474e-06, + 2.633090091927805150e-06, + 2.596728786128565284e-06, + 2.560362090171934556e-06, + 2.523991362590539620e-06, + 2.487617958835407249e-06, + 2.451243231232216775e-06, + 2.414868528936883375e-06, + 2.378495197891515323e-06, + 2.342124580780538110e-06, + 2.305758016987929438e-06, + 2.269396842553025282e-06, + 2.233042390128217790e-06, + 2.196695988935488520e-06, + 2.160358964724540870e-06, + 2.124032639729546340e-06, + 2.087718332627769516e-06, + 2.051417358497473918e-06, + 2.015131028776209865e-06, + 1.978860651219132405e-06, + 1.942607529858466978e-06, + 1.906372964961660906e-06, + 1.870158252991403437e-06, + 1.833964686565078070e-06, + 1.797793554414028945e-06, + 1.761646141344148619e-06, + 1.725523728196039985e-06, + 1.689427591804621271e-06, + 1.653359004961335031e-06, + 1.617319236374228328e-06, + 1.581309550629114583e-06, + 1.545331208151615267e-06, + 1.509385465168393120e-06, + 1.473473573669061282e-06, + 1.437596781369137890e-06, + 1.401756331671624870e-06, + 1.365953463630407435e-06, + 1.330189411912970872e-06, + 1.294465406763569214e-06, + 1.258782673966552110e-06, + 1.223142434810857409e-06, + 1.187545906053100431e-06, + 1.151994299882583884e-06, + 1.116488823885169156e-06, + 1.081030681008778353e-06, + 1.045621069527533895e-06, + 1.010261183007808795e-06, + 9.749522102736120252e-07, + 9.396953353723328094e-07, + 9.044917375405781964e-07, + 8.693425911711894910e-07, + 8.342490657789357258e-07, + 7.992123259681408026e-07, + 7.642335313997488404e-07, + 7.293138367582319742e-07, + 6.944543917199337690e-07, + 6.596563409205194381e-07, + 6.249208239231025223e-07, + 5.902489751873889621e-07, + 5.556419240379346442e-07, + 5.211007946330052933e-07, + 4.866267059344408404e-07, + 4.522207716767289791e-07, + 4.178841003367633894e-07, + 3.836177951046833050e-07, + 3.494229538533585163e-07, + 3.153006691097809385e-07, + 2.812520280253407956e-07, + 2.472781123477650550e-07, + 2.133799983916186570e-07, + 1.795587570112023733e-07, + 1.458154535716042906e-07, + 1.121511479217408562e-07, + 7.856689436629406833e-08, + 4.506374163930164988e-08, + 1.164273287640902035e-08, +-2.169509441098402914e-08, +-5.494870836210749564e-08, +-8.811708279332675757e-08, +-1.211991972233221677e-07, +-1.541940368987142480e-07, +-1.871005928197270184e-07, +-2.199178617644482106e-07, +-2.526448463135336599e-07, +-2.852805548750229612e-07, +-3.178240017077620741e-07, +-3.502742069456566824e-07, +-3.826301966212441940e-07, +-4.148910026881930011e-07, +-4.470556630450987587e-07, +-4.791232215575047535e-07, +-5.110927280804921136e-07, +-5.429632384808429018e-07, +-5.747338146589899689e-07, +-6.064035245698203474e-07, +-6.379714422447647063e-07, +-6.694366478120401676e-07, +-7.007982275179241745e-07, +-7.320552737464307487e-07, +-7.632068850403326841e-07, +-7.942521661198764212e-07, +-8.251902279032251881e-07, +-8.560201875250045748e-07, +-8.867411683558652886e-07, +-9.173523000204439582e-07, +-9.478527184165916287e-07, +-9.782415657327725596e-07, +-1.008517990465944349e-06, +-1.038681147439538114e-06, +-1.068730197820151922e-06, +-1.098664309134666572e-06, +-1.128482655287342322e-06, +-1.158184416575597630e-06, +-1.187768779706177104e-06, +-1.217234937811407552e-06, +-1.246582090464109145e-06, +-1.275809443693296022e-06, +-1.304916209999166868e-06, +-1.333901608367123094e-06, +-1.362764864282952332e-06, +-1.391505209746321877e-06, +-1.420121883284817199e-06, +-1.448614129967521156e-06, +-1.476981201418413627e-06, +-1.505222355828639092e-06, +-1.533336857969997116e-06, +-1.561323979206647705e-06, +-1.589182997507807699e-06, +-1.616913197458892217e-06, +-1.644513870273843008e-06, +-1.671984313805741992e-06, +-1.699323832557871387e-06, +-1.726531737694502791e-06, +-1.753607347051480018e-06, +-1.780549985145770232e-06, +-1.807358983186058644e-06, +-1.834033679081681105e-06, +-1.860573417451919868e-06, +-1.886977549635434247e-06, +-1.913245433698379631e-06, +-1.939376434443257715e-06, +-1.965369923417109637e-06, +-1.991225278918809772e-06, +-2.016941886007084815e-06, +-2.042519136507907522e-06, +-2.067956429021045552e-06, +-2.093253168927218047e-06, +-2.118408768394592793e-06, +-2.143422646384379186e-06, +-2.168294228657441437e-06, +-2.193022947779355785e-06, +-2.217608243126233845e-06, +-2.242049560889237298e-06, +-2.266346354080133576e-06, +-2.290498082534893213e-06, +-2.314504212918714869e-06, +-2.338364218729418542e-06, +-2.362077580301612546e-06, +-2.385643784809561144e-06, +-2.409062326271012712e-06, +-2.432332705549490537e-06, +-2.455454430357022809e-06, +-2.478427015256509651e-06, +-2.501249981664000792e-06, +-2.523922857849917411e-06, +-2.546445178941280258e-06, +-2.568816486922377118e-06, +-2.591036330635799574e-06, +-2.613104265783507732e-06, +-2.635019854926753987e-06, +-2.656782667486659005e-06, +-2.678392279744109655e-06, +-2.699848274838937812e-06, +-2.721150242769640409e-06, +-2.742297780392589162e-06, +-2.763290491420448306e-06, +-2.784127986421131477e-06, +-2.804809882816106797e-06, +-2.825335804877958695e-06, +-2.845705383728794205e-06, +-2.865918257337238551e-06, +-2.885974070516173984e-06, +-2.905872474919186484e-06, +-2.925613129038060233e-06, +-2.945195698198377281e-06, +-2.964619854556483474e-06, +-2.983885277094919557e-06, +-3.002991651618601905e-06, +-3.021938670749757261e-06, +-3.040726033923742634e-06, +-3.059353447383513323e-06, +-3.077820624174338705e-06, +-3.096127284138582815e-06, +-3.114273153909536676e-06, +-3.132257966905441637e-06, +-3.150081463323503814e-06, +-3.167743390132937404e-06, +-3.185243501068165559e-06, +-3.202581556622106797e-06, +-3.219757324038456415e-06, +-3.236770577304444784e-06, +-3.253621097143098854e-06, +-3.270308671004735824e-06, +-3.286833093059280555e-06, +-3.303194164187289564e-06, +-3.319391691971370151e-06, +-3.335425490687220490e-06, +-3.351295381294486329e-06, +-3.367001191426838424e-06, +-3.382542755382780959e-06, +-3.397919914115302500e-06, +-3.413132515222005517e-06, +-3.428180412934294436e-06, +-3.443063468107225638e-06, +-3.457781548208192798e-06, +-3.472334527305886231e-06, +-3.486722286059021002e-06, +-3.500944711704833794e-06, +-3.515001698046942812e-06, +-3.528893145443792553e-06, +-3.542618960795974152e-06, +-3.556179057533785431e-06, +-3.569573355604762150e-06, +-3.582801781460468103e-06, +-3.595864268043344513e-06, +-3.608760754773636919e-06, +-3.621491187535421679e-06, +-3.634055518662814576e-06, +-3.646453706926192559e-06, +-3.658685717517570987e-06, +-3.670751522036407362e-06, +-3.682651098474895134e-06, +-3.694384431202714153e-06, +-3.705951510952344381e-06, +-3.717352334803400871e-06, +-3.728586906167205056e-06, +-3.739655234771104900e-06, +-3.750557336642507061e-06, +-3.761293234092410141e-06, +-3.771862955699422448e-06, +-3.782266536292831923e-06, +-3.792504016936138129e-06, +-3.802575444909667742e-06, +-3.812480873693865985e-06, +-3.822220362951472506e-06, +-3.831793978510052178e-06, +-3.841201792344222650e-06, +-3.850443882557765432e-06, +-3.859520333365148303e-06, +-3.868431235073516535e-06, +-3.877176684063824391e-06, +-3.885756782772063181e-06, +-3.894171639670522351e-06, +-3.902421369248349229e-06, +-3.910506091992418790e-06, +-3.918425934367810389e-06, +-3.926181028797873689e-06, +-3.933771513644461453e-06, +-3.941197533187918394e-06, +-3.948459237606612617e-06, +-3.955556782956647492e-06, +-3.962490331151247412e-06, +-3.969260049939681915e-06, +-3.975866112886626037e-06, +-3.982308699350665157e-06, +-3.988587994463233517e-06, +-3.994704189106805672e-06, +-4.000657479893558878e-06, +-4.006448069143105445e-06, +-4.012076164860785823e-06, +-4.017541980715251876e-06, +-4.022845736016246665e-06, +-4.027987655691876015e-06, +-4.032967970266160446e-06, +-4.037786915835942513e-06, +-4.042444734047876313e-06, +-4.046941672075414444e-06, +-4.051277982595210511e-06, +-4.055453923763708838e-06, +-4.059469759193600331e-06, +-4.063325757929795548e-06, +-4.067022194425480766e-06, +-4.070559348518076651e-06, +-4.073937505404852174e-06, +-4.077156955618562255e-06, +-4.080217995002712699e-06, +-4.083120924687068248e-06, +-4.085866051062458423e-06, +-4.088453685756021301e-06, +-4.090884145605789132e-06, +-4.093157752635610239e-06, +-4.095274834029422082e-06, +-4.097235722105901260e-06, +-4.099040754292550230e-06, +-4.100690273099827226e-06, +-4.102184626095227053e-06, +-4.103524165877049322e-06, +-4.104709250048095536e-06, +-4.105740241189356860e-06, +-4.106617506833363074e-06, +-4.107341419437490873e-06, +-4.107912356357268775e-06, +-4.108330699819289855e-06, +-4.108596836894308286e-06, +-4.108711159469973344e-06, +-4.108674064223463474e-06, +-4.108485952594177941e-06, +-4.108147230756098998e-06, +-4.107658309590143879e-06, +-4.107019604656399062e-06, +-4.106231536166276601e-06, +-4.105294528954315550e-06, +-4.104209012450240891e-06, +-4.102975420650602327e-06, +-4.101594192090507948e-06, +-4.100065769815052958e-06, +-4.098390601350927137e-06, +-4.096569138677556423e-06, +-4.094601838198403745e-06, +-4.092489160712084351e-06, +-4.090231571383399822e-06, +-4.087829539714188283e-06, +-4.085283539514210181e-06, +-4.082594048871844340e-06, +-4.079761550124650172e-06, +-4.076786529829977331e-06, +-4.073669478735326335e-06, +-4.070410891748737143e-06, +-4.067011267909015096e-06, +-4.063471110355881481e-06, +-4.059790926300069875e-06, +-4.055971226993279349e-06, +-4.052012527698073455e-06, +-4.047915347657714845e-06, +-4.043680210065899087e-06, +-4.039307642036353807e-06, +-4.034798174572495426e-06, +-4.030152342536833486e-06, +-4.025370684620433415e-06, +-4.020453743312244618e-06, +-4.015402064868365888e-06, +-4.010216199281237122e-06, +-4.004896700248742947e-06, +-3.999444125143327358e-06, +-3.993859034980878811e-06, +-3.988141994389724580e-06, +-3.982293571579427760e-06, +-3.976314338309608828e-06, +-3.970204869858647776e-06, +-3.963965744992346437e-06, +-3.957597545932555227e-06, +-3.951100858325662673e-06, +-3.944476271211105274e-06, +-3.937724376989811280e-06, +-3.930845771392550467e-06, +-3.923841053448249171e-06, +-3.916710825452307871e-06, +-3.909455692934759520e-06, +-3.902076264628437208e-06, +-3.894573152437140117e-06, +-3.886946971403699534e-06, +-3.879198339677958465e-06, +-3.871327878484807999e-06, +-3.863336212092142355e-06, +-3.855223967778669942e-06, +-3.846991775801908213e-06, +-3.838640269365885454e-06, +-3.830170084589036544e-06, +-3.821581860471858149e-06, +-3.812876238864704958e-06, +-3.804053864435430906e-06, +-3.795115384637082487e-06, +-3.786061449675465866e-06, +-3.776892712476813935e-06, +-3.767609828655295827e-06, +-3.758213456480615359e-06, +-3.748704256845488784e-06, +-3.739082893233138626e-06, +-3.729350031684836229e-06, +-3.719506340767251175e-06, +-3.709552491539975620e-06, +-3.699489157522938933e-06, +-3.689317014663700367e-06, +-3.679036741304984408e-06, +-3.668649018151976825e-06, +-3.658154528239666051e-06, +-3.647553956900269258e-06, +-3.636847991730502154e-06, +-3.626037322558885636e-06, +-3.615122641413206163e-06, +-3.604104642487703403e-06, +-3.592984022110450563e-06, +-3.581761478710651300e-06, +-3.570437712785945513e-06, +-3.559013426869655011e-06, +-3.547489325498259558e-06, +-3.535866115178559951e-06, +-3.524144504355078260e-06, +-3.512325203377294172e-06, +-3.500408924467105798e-06, +-3.488396381685989356e-06, +-3.476288290902484117e-06, +-3.464085369759508796e-06, +-3.451788337641755436e-06, +-3.439397915642939731e-06, +-3.426914826533382109e-06, +-3.414339794727210191e-06, +-3.401673546249939033e-06, +-3.388916808705897197e-06, +-3.376070311245557120e-06, +-3.363134784533203014e-06, +-3.350110960714313751e-06, +-3.336999573383019428e-06, +-3.323801357549799342e-06, +-3.310517049609024117e-06, +-3.297147387306433020e-06, +-3.283693109706965349e-06, +-3.270154957162217423e-06, +-3.256533671278162159e-06, +-3.242829994883037630e-06, +-3.229044671994862502e-06, +-3.215178447789392355e-06, +-3.201232068567857892e-06, +-3.187206281724854770e-06, +-3.173101835716092391e-06, +-3.158919480026606032e-06, +-3.144659965138442111e-06, +-3.130324042498882593e-06, +-3.115912464488310257e-06, +-3.101425984388505097e-06, +-3.086865356350565068e-06, +-3.072231335363243145e-06, +-3.057524677221170464e-06, +-3.042746138493111637e-06, +-3.027896476490210342e-06, +-3.012976449234560583e-06, +-2.997986815427398910e-06, +-2.982928334417757002e-06, +-2.967801766171014298e-06, +-2.952607871237327806e-06, +-2.937347410720479505e-06, +-2.922021146246434056e-06, +-2.906629839932048135e-06, +-2.891174254354167709e-06, +-2.875655152518266637e-06, +-2.860073297827402068e-06, +-2.844429454051371428e-06, +-2.828724385295646222e-06, +-2.812958855970459557e-06, +-2.797133630760250285e-06, +-2.781249474592670910e-06, +-2.765307152608114304e-06, +-2.749307430128918138e-06, +-2.733251072629106740e-06, +-2.717138845703576465e-06, +-2.700971515038112421e-06, +-2.684749846378775849e-06, +-2.668474605501863680e-06, +-2.652146558183563577e-06, +-2.635766470170120165e-06, +-2.619335107147504898e-06, +-2.602853234711754237e-06, +-2.586321618339091833e-06, +-2.569741023356006239e-06, +-2.553112214909729275e-06, +-2.536435957938605962e-06, +-2.519713017142377650e-06, +-2.502944156952997066e-06, +-2.486130141505246865e-06, +-2.469271734607292949e-06, +-2.452369699711744741e-06, +-2.435424799886390622e-06, +-2.418437797785154436e-06, +-2.401409455619453501e-06, +-2.384340535129185187e-06, +-2.367231797553921440e-06, +-2.350084003604543773e-06, +-2.332897913434455572e-06, +-2.315674286611129420e-06, +-2.298413882088063103e-06, +-2.281117458176151167e-06, +-2.263785772515834051e-06, +-2.246419582048767803e-06, +-2.229019642990194706e-06, +-2.211586710800637137e-06, +-2.194121540158659525e-06, +-2.176624884932774387e-06, +-2.159097498154223769e-06, +-2.141540131989234688e-06, +-2.123953537712024183e-06, +-2.106338465677124217e-06, +-2.088695665292612462e-06, +-2.071025884993028851e-06, +-2.053329872212256970e-06, +-2.035608373356963218e-06, +-2.017862133779817441e-06, +-2.000091897752724998e-06, +-1.982298408440581863e-06, +-1.964482407874919200e-06, +-1.946644636927417487e-06, +-1.928785835284053380e-06, +-1.910906741418868367e-06, +-1.893008092568010602e-06, +-1.875090624704293209e-06, +-1.857155072511081739e-06, +-1.839202169357048566e-06, +-1.821232647270617898e-06, +-1.803247236914603078e-06, +-1.785246667560922219e-06, +-1.767231667065877552e-06, +-1.749202961844742955e-06, +-1.731161276847284484e-06, +-1.713107335532735218e-06, +-1.695041859845541729e-06, +-1.676965570190475725e-06, +-1.658879185408613455e-06, +-1.640783422753074155e-06, +-1.622678997864840210e-06, +-1.604566624748703761e-06, +-1.586447015749716848e-06, +-1.568320881529058390e-06, +-1.550188931040788845e-06, +-1.532051871508355421e-06, +-1.513910408401046257e-06, +-1.495765245411073946e-06, +-1.477617084430297796e-06, +-1.459466625527239170e-06, +-1.441314566924590222e-06, +-1.423161604976310333e-06, +-1.405008434145023465e-06, +-1.386855746979858294e-06, +-1.368704234093967956e-06, +-1.350554584142346890e-06, +-1.332407483800186605e-06, +-1.314263617740582408e-06, +-1.296123668613115753e-06, +-1.277988317022164265e-06, +-1.259858241505384357e-06, +-1.241734118512338464e-06, +-1.223616622383669684e-06, +-1.205506425329633937e-06, +-1.187404197409560689e-06, +-1.169310606510773263e-06, +-1.151226318328355978e-06, +-1.133151996344209143e-06, +-1.115088301807099095e-06, +-1.097035893712385744e-06, +-1.078995428781933911e-06, +-1.060967561444086931e-06, +-1.042952943814242065e-06, +-1.024952225674773075e-06, +-1.006966054455933857e-06, +-9.889950752164876488e-07, +-9.710399306242885899e-07, +-9.531012609375619718e-07, +-9.351797039857770714e-07, +-9.172758951508739360e-07, +-8.993904673489714949e-07, +-8.815240510116896362e-07, +-8.636772740677657326e-07, +-8.458507619251851054e-07, +-8.280451374529334993e-07, +-8.102610209630994881e-07, +-7.924990301935440748e-07, +-7.747597802898812302e-07, +-7.570438837884476603e-07, +-7.393519505987189316e-07, +-7.216845879865676533e-07, +-7.040424005568230687e-07, +-6.864259902370403160e-07, +-6.688359562603469520e-07, +-6.512728951493209510e-07, +-6.337374006993094491e-07, +-6.162300639626009810e-07, +-5.987514732319360781e-07, +-5.813022140249769187e-07, +-5.638828690685370577e-07, +-5.464940182827447683e-07, +-5.291362387658998937e-07, +-5.118101047791142805e-07, +-4.945161877309505189e-07, +-4.772550561627735661e-07, +-4.600272757338931010e-07, +-4.428334092066732137e-07, +-4.256740164323354455e-07, +-4.085496543363808753e-07, +-3.914608769043499073e-07, +-3.744082351681478245e-07, +-3.573922771917193967e-07, +-3.404135480576487662e-07, +-3.234725898534596961e-07, +-3.065699416581685512e-07, +-2.897061395289459117e-07, +-2.728817164883716921e-07, +-2.560972025110559375e-07, +-2.393531245112056513e-07, +-2.226500063296816017e-07, +-2.059883687218756926e-07, +-1.893687293449629056e-07, +-1.727916027460974194e-07, +-1.562575003503315910e-07, +-1.397669304487320300e-07, +-1.233203981865752686e-07, +-1.069184055521343685e-07, +-9.056145136487337267e-08, +-7.425003126458912411e-08, +-5.798463770031509434e-08, +-4.176575991918963677e-08, +-2.559388395598939245e-08, +-9.469492622430668399e-09, + 6.606934503293871912e-09, + 2.263492108685763881e-08, + 3.861399404755873835e-08, + 5.454368356869616396e-08, + 7.042352310701285809e-08, + 8.625304940263784327e-08, + 1.020318024882154903e-07, + 1.177593256986449280e-07, + 1.334351656798934611e-07, + 1.490588723980747774e-07, + 1.646299991483308832e-07, + 1.801481025636315311e-07, + 1.956127426229954159e-07, + 2.110234826602816885e-07, + 2.263798893720542066e-07, + 2.416815328256779525e-07, + 2.569279864674402257e-07, + 2.721188271299872220e-07, + 2.872536350401322477e-07, + 3.023319938263174973e-07, + 3.173534905255769825e-07, + 3.323177155908737430e-07, + 3.472242628981247673e-07, + 3.620727297527363281e-07, + 3.768627168964648437e-07, + 3.915938285139325198e-07, + 4.062656722386272016e-07, + 4.208778591594652912e-07, + 4.354300038264820086e-07, + 4.499217242569753454e-07, + 4.643526419408784774e-07, + 4.787223818467419344e-07, + 4.930305724266091220e-07, + 5.072768456216916540e-07, + 5.214608368671119962e-07, + 5.355821850971194946e-07, + 5.496405327495329579e-07, + 5.636355257707482100e-07, + 5.775668136198690699e-07, + 5.914340492730585601e-07, + 6.052368892278866205e-07, + 6.189749935070865937e-07, + 6.326480256624668235e-07, + 6.462556527788077471e-07, + 6.597975454771181019e-07, + 6.732733779180476212e-07, + 6.866828278053389050e-07, + 7.000255763886074880e-07, + 7.133013084664883557e-07, + 7.265097123894373994e-07, + 7.396504800620788626e-07, + 7.527233069458815414e-07, + 7.657278920615414879e-07, + 7.786639379909242574e-07, + 7.915311508792689934e-07, + 8.043292404371007108e-07, + 8.170579199416379583e-07, + 8.297169062387358067e-07, + 8.423059197439962027e-07, + 8.548246844443194158e-07, + 8.672729278987031082e-07, + 8.796503812396296684e-07, + 8.919567791734229186e-07, + 9.041918599813188698e-07, + 9.163553655197047967e-07, + 9.284470412207550423e-07, + 9.404666360923930070e-07, + 9.524139027187146650e-07, + 9.642885972596556806e-07, + 9.760904794508198837e-07, + 9.878193126033280750e-07, + 9.994748636031009058e-07, + 1.011056902910284379e-06, + 1.022565204558676830e-06, + 1.033999546154531647e-06, + 1.045359708875537655e-06, + 1.056645477469797381e-06, + 1.067856640254224891e-06, + 1.078992989113237127e-06, + 1.090054319497168894e-06, + 1.101040430420195088e-06, + 1.111951124458769404e-06, + 1.122786207749324007e-06, + 1.133545489986163592e-06, + 1.144228784419161036e-06, + 1.154835907851344410e-06, + 1.165366680636030409e-06, + 1.175820926674377908e-06, + 1.186198473412256058e-06, + 1.196499151837448019e-06, + 1.206722796476234031e-06, + 1.216869245390409851e-06, + 1.226938340173595605e-06, + 1.236929925947745792e-06, + 1.246843851359446908e-06, + 1.256679968576194735e-06, + 1.266438133282188186e-06, + 1.276118204674541799e-06, + 1.285720045458798578e-06, + 1.295243521844606738e-06, + 1.304688503541367438e-06, + 1.314054863753402669e-06, + 1.323342479175359467e-06, + 1.332551229987350482e-06, + 1.341680999849717200e-06, + 1.350731675898045361e-06, + 1.359703148737965878e-06, + 1.368595312439533497e-06, + 1.377408064531886890e-06, + 1.386141305997600219e-06, + 1.394794941266679788e-06, + 1.403368878210943344e-06, + 1.411863028137770879e-06, + 1.420277305784052158e-06, + 1.428611629309903215e-06, + 1.436865920292337114e-06, + 1.445040103718500175e-06, + 1.453134107979307583e-06, + 1.461147864862448800e-06, + 1.469081309545711042e-06, + 1.476934380589726345e-06, + 1.484707019931127752e-06, + 1.492399172875076366e-06, + 1.500010788087952086e-06, + 1.507541817589890617e-06, + 1.514992216747244665e-06, + 1.522361944264712453e-06, + 1.529650962177716973e-06, + 1.536859235844277645e-06, + 1.543986733936964134e-06, + 1.551033428434859284e-06, + 1.557999294615083915e-06, + 1.564884311044529570e-06, + 1.571688459571383315e-06, + 1.578411725316291705e-06, + 1.585054096663782879e-06, + 1.591615565253449794e-06, + 1.598096125970853516e-06, + 1.604495776938571776e-06, + 1.610814519507071553e-06, + 1.617052358245204730e-06, + 1.623209300931077081e-06, + 1.629285358542355880e-06, + 1.635280545246839252e-06, + 1.641194878392567062e-06, + 1.647028378498249652e-06, + 1.652781069243097523e-06, + 1.658452977457013110e-06, + 1.664044133110312463e-06, + 1.669554569303669062e-06, + 1.674984322257609125e-06, + 1.680333431302315870e-06, + 1.685601938866915823e-06, + 1.690789890468927749e-06, + 1.695897334703604861e-06, + 1.700924323233021224e-06, + 1.705870910775203687e-06, + 1.710737155093222733e-06, + 1.715523116983951931e-06, + 1.720228860266907850e-06, + 1.724854451773039368e-06, + 1.729399961333226234e-06, + 1.733865461766904901e-06, + 1.738251028870519226e-06, + 1.742556741405715379e-06, + 1.746782681087769249e-06, + 1.750928932573648788e-06, + 1.754995583450096047e-06, + 1.758982724221663890e-06, + 1.762890448298634134e-06, + 1.766718851984692578e-06, + 1.770468034464832742e-06, + 1.774138097792847941e-06, + 1.777729146879045919e-06, + 1.781241289477537427e-06, + 1.784674636173838201e-06, + 1.788029300372015870e-06, + 1.791305398281974727e-06, + 1.794503048906588655e-06, + 1.797622374028855880e-06, + 1.800663498198728450e-06, + 1.803626548720206846e-06, + 1.806511655638036901e-06, + 1.809318951724489949e-06, + 1.812048572466118616e-06, + 1.814700656050261467e-06, + 1.817275343351633842e-06, + 1.819772777918817677e-06, + 1.822193105960568159e-06, + 1.824536476332133298e-06, + 1.826803040521572015e-06, + 1.828992952635823200e-06, + 1.831106369386872188e-06, + 1.833143450077816848e-06, + 1.835104356588684232e-06, + 1.836989253362483545e-06, + 1.838798307390927067e-06, + 1.840531688200234525e-06, + 1.842189567836822466e-06, + 1.843772120852997025e-06, + 1.845279524292365900e-06, + 1.846711957675503166e-06, + 1.848069602985278878e-06, + 1.849352644652328219e-06, + 1.850561269540274585e-06, + 1.851695666931093707e-06, + 1.852756028510253302e-06, + 1.853742548351831129e-06, + 1.854655422903636853e-06, + 1.855494850972260857e-06, + 1.856261033707967834e-06, + 1.856954174589718065e-06, + 1.857574479409932049e-06, + 1.858122156259344499e-06, + 1.858597415511761980e-06, + 1.859000469808722935e-06, + 1.859331534044194970e-06, + 1.859590825349184058e-06, + 1.859778563076203977e-06, + 1.859894968783864971e-06, + 1.859940266221290034e-06, + 1.859914681312496259e-06, + 1.859818442140791858e-06, + 1.859651778933095039e-06, + 1.859414924044130277e-06, + 1.859108111940732161e-06, + 1.858731579185979827e-06, + 1.858285564423347280e-06, + 1.857770308360766894e-06, + 1.857186053754750718e-06, + 1.856533045394311251e-06, + 1.855811530085010328e-06, + 1.855021756632828017e-06, + 1.854163975828136325e-06, + 1.853238440429458194e-06, + 1.852245405147374932e-06, + 1.851185126628259792e-06, + 1.850057863438030609e-06, + 1.848863876045888253e-06, + 1.847603426807989428e-06, + 1.846276779951066965e-06, + 1.844884201556096273e-06, + 1.843425959541840666e-06, + 1.841902323648411720e-06, + 1.840313565420814182e-06, + 1.838659958192409762e-06, + 1.836941777068429433e-06, + 1.835159298909378355e-06, + 1.833312802314450549e-06, + 1.831402567604927263e-06, + 1.829428876807545267e-06, + 1.827392013637822165e-06, + 1.825292263483368362e-06, + 1.823129913387220843e-06, + 1.820905252031041216e-06, + 1.818618569718422388e-06, + 1.816270158358087878e-06, + 1.813860311447118657e-06, + 1.811389324054116464e-06, + 1.808857492802424507e-06, + 1.806265115853215178e-06, + 1.803612492888676027e-06, + 1.800899925095107009e-06, + 1.798127715146042289e-06, + 1.795296167185323141e-06, + 1.792405586810187567e-06, + 1.789456281054346580e-06, + 1.786448558371005430e-06, + 1.783382728615927176e-06, + 1.780259103030455397e-06, + 1.777077994224539015e-06, + 1.773839716159736579e-06, + 1.770544584132213137e-06, + 1.767192914755772896e-06, + 1.763785025944788119e-06, + 1.760321236897220350e-06, + 1.756801868077587220e-06, + 1.753227241199924585e-06, + 1.749597679210760532e-06, + 1.745913506272093195e-06, + 1.742175047744322612e-06, + 1.738382630169228121e-06, + 1.734536581252920761e-06, + 1.730637229848794615e-06, + 1.726684905940503992e-06, + 1.722679940624890628e-06, + 1.718622666094993477e-06, + 1.714513415622949023e-06, + 1.710352523543003818e-06, + 1.706140325234456090e-06, + 1.701877157104647321e-06, + 1.697563356571941752e-06, + 1.693199262048693400e-06, + 1.688785212924266224e-06, + 1.684321549548012362e-06, + 1.679808613212269424e-06, + 1.675246746135400994e-06, + 1.670636291444820386e-06, + 1.665977593160000232e-06, + 1.661270996175566966e-06, + 1.656516846244315702e-06, + 1.651715489960264064e-06, + 1.646867274741803649e-06, + 1.641972548814752373e-06, + 1.637031661195450873e-06, + 1.632044961673928574e-06, + 1.627012800797031641e-06, + 1.621935529851539068e-06, + 1.616813500847410698e-06, + 1.611647066500915598e-06, + 1.606436580217884097e-06, + 1.601182396076924254e-06, + 1.595884868812653995e-06, + 1.590544353798986395e-06, + 1.585161207032436781e-06, + 1.579735785115390021e-06, + 1.574268445239487023e-06, + 1.568759545168931633e-06, + 1.563209443223917578e-06, + 1.557618498263994651e-06, + 1.551987069671508369e-06, + 1.546315517335077958e-06, + 1.540604201633058671e-06, + 1.534853483417025704e-06, + 1.529063723995368018e-06, + 1.523235285116787496e-06, + 1.517368528953922624e-06, + 1.511463818086986567e-06, + 1.505521515487367128e-06, + 1.499541984501366256e-06, + 1.493525588833851676e-06, + 1.487472692532070088e-06, + 1.481383659969318915e-06, + 1.475258855828897779e-06, + 1.469098645087807142e-06, + 1.462903393000733666e-06, + 1.456673465083877811e-06, + 1.450409227098982183e-06, + 1.444111045037209321e-06, + 1.437779285103261100e-06, + 1.431414313699396487e-06, + 1.425016497409481491e-06, + 1.418586202983189668e-06, + 1.412123797320145874e-06, + 1.405629647454077433e-06, + 1.399104120537141064e-06, + 1.392547583824214865e-06, + 1.385960404657140959e-06, + 1.379342950449197264e-06, + 1.372695588669447288e-06, + 1.366018686827180133e-06, + 1.359312612456507625e-06, + 1.352577733100782509e-06, + 1.345814416297297854e-06, + 1.339023029561846706e-06, + 1.332203940373416410e-06, + 1.325357516158880610e-06, + 1.318484124277866368e-06, + 1.311584132007448916e-06, + 1.304657906527129102e-06, + 1.297705814903630207e-06, + 1.290728224075977460e-06, + 1.283725500840376806e-06, + 1.276698011835373408e-06, + 1.269646123526945346e-06, + 1.262570202193635226e-06, + 1.255470613911754846e-06, + 1.248347724540703357e-06, + 1.241201899708171931e-06, + 1.234033504795612699e-06, + 1.226842904923644581e-06, + 1.219630464937454044e-06, + 1.212396549392398077e-06, + 1.205141522539582188e-06, + 1.197865748311391811e-06, + 1.190569590307297301e-06, + 1.183253411779588210e-06, + 1.175917575619095695e-06, + 1.168562444341149138e-06, + 1.161188380071437472e-06, + 1.153795744531934032e-06, + 1.146384899027068323e-06, + 1.138956204429668021e-06, + 1.131510021167209937e-06, + 1.124046709207991782e-06, + 1.116566628047375501e-06, + 1.109070136694115953e-06, + 1.101557593656832310e-06, + 1.094029356930335888e-06, + 1.086485783982252532e-06, + 1.078927231739488299e-06, + 1.071354056574987581e-06, + 1.063766614294275447e-06, + 1.056165260122355734e-06, + 1.048550348690486747e-06, + 1.040922234023065379e-06, + 1.033281269524540025e-06, + 1.025627807966532718e-06, + 1.017962201474750990e-06, + 1.010284801516361359e-06, + 1.002595958886949474e-06, + 9.948960236980155736e-07, + 9.871853453641984810e-07, + 9.794642725907486194e-07, + 9.717331533608866814e-07, + 9.639923349235500270e-07, + 9.562421637807930679e-07, + 9.484829856756430390e-07, + 9.407151455797571401e-07, + 9.329389876812929181e-07, + 9.251548553727073925e-07, + 9.173630912387782102e-07, + 9.095640370446830324e-07, + 9.017580337240286304e-07, + 8.939454213670242934e-07, + 8.861265392087654574e-07, + 8.783017256174526414e-07, + 8.704713180828340007e-07, + 8.626356532047146893e-07, + 8.547950666814085188e-07, + 8.469498932983733174e-07, + 8.391004669168073252e-07, + 8.312471204624477132e-07, + 8.233901859144520046e-07, + 8.155299942941949002e-07, + 8.076668756542601319e-07, + 7.998011590675244315e-07, + 7.919331726161567964e-07, + 7.840632433808785349e-07, + 7.761916974302901224e-07, + 7.683188598101073175e-07, + 7.604450545326436607e-07, + 7.525706045661643284e-07, + 7.446958318246865861e-07, + 7.368210571573467716e-07, + 7.289466003383487673e-07, + 7.210727800566312566e-07, + 7.131999139057978788e-07, + 7.053283183739326108e-07, + 6.974583088338631233e-07, + 6.895901995329825153e-07, + 6.817243035836685244e-07, + 6.738609329534398396e-07, + 6.660003984551939400e-07, + 6.581430097378136062e-07, + 6.502890752765583893e-07, + 6.424389023635504203e-07, + 6.345927970985985012e-07, + 6.267510643798419914e-07, + 6.189140078944566326e-07, + 6.110819301097352919e-07, + 6.032551322639600172e-07, + 5.954339143573428078e-07, + 5.876185751433930787e-07, + 5.798094121198454076e-07, + 5.720067215201856060e-07, + 5.642107983048827636e-07, + 5.564219361529011306e-07, + 5.486404274530960637e-07, + 5.408665632960587920e-07, + 5.331006334655316329e-07, + 5.253429264304156008e-07, + 5.175937293364890715e-07, + 5.098533279984055447e-07, + 5.021220068916115732e-07, + 4.944000491445033434e-07, + 4.866877365306805596e-07, + 4.789853494610943419e-07, + 4.712931669764286420e-07, + 4.636114667395562497e-07, + 4.559405250279441367e-07, + 4.482806167263071933e-07, + 4.406320153193431731e-07, + 4.329949928843925707e-07, + 4.253698200843288388e-07, + 4.177567661603849720e-07, + 4.101560989252162009e-07, + 4.025680847560502489e-07, + 3.949929885877513494e-07, + 3.874310739061089395e-07, + 3.798826027411924746e-07, + 3.723478356606713030e-07, + 3.648270317633791743e-07, + 3.573204486729592691e-07, + 3.498283425314283362e-07, + 3.423509679929888528e-07, + 3.348885782177328695e-07, + 3.274414248657766778e-07, + 3.200097580909998072e-07, + 3.125938265353537580e-07, + 3.051938773228941246e-07, + 2.978101560540912871e-07, + 2.904429068000295061e-07, + 2.830923720970535687e-07, + 2.757587929409955704e-07, + 2.684424087819899625e-07, + 2.611434575190375053e-07, + 2.538621754946526033e-07, + 2.465987974898900564e-07, + 2.393535567191647124e-07, + 2.321266848251428529e-07, + 2.249184118740239281e-07, + 2.177289663506049490e-07, + 2.105585751534286032e-07, + 2.034074635903109209e-07, + 1.962758553736544302e-07, + 1.891639726158516527e-07, + 1.820720358250875531e-07, + 1.750002639007453113e-07, + 1.679488741293799782e-07, + 1.609180821804174272e-07, + 1.539081021021311335e-07, + 1.469191463175073560e-07, + 1.399514256205530000e-07, + 1.330051491721930136e-07, + 1.260805244967435535e-07, + 1.191777574781080271e-07, + 1.122970523562509863e-07, + 1.054386117235922952e-07, + 9.860263652164807549e-08, + 9.178932603774776547e-08, + 8.499887790167887698e-08, + 7.823148808253934152e-08, + 7.148735088567252159e-08, + 6.476665894955666743e-08, + 5.806960324293555326e-08, + 5.139637306203214909e-08, + 4.474715602768161280e-08, + 3.812213808267680792e-08, + 3.152150348919307871e-08, + 2.494543482616859222e-08, + 1.839411298692410962e-08, + 1.186771717686317095e-08, + 5.366424911096248732e-09, +-1.109587987697465870e-09, +-7.560147391483507433e-09, +-1.398508086884859499e-08, +-2.038421768689729432e-08, +-2.675738881322390898e-08, +-3.310442691767998166e-08, +-3.942516637406091046e-08, +-4.571944326183737194e-08, +-5.198709536765164785e-08, +-5.822796218673526705e-08, +-6.444188492440100781e-08, +-7.062870649730131077e-08, +-7.678827153479307405e-08, +-8.292042637988419269e-08, +-8.902501909056209675e-08, +-9.510189944058539628e-08, +-1.011509189205320183e-07, +-1.071719307385870668e-07, +-1.131647898214326041e-07, +-1.191293528147321140e-07, +-1.250654780839818629e-07, +-1.309730257148403556e-07, +-1.368518575136786286e-07, +-1.427018370080512539e-07, +-1.485228294468237773e-07, +-1.543147018004943529e-07, +-1.600773227614306211e-07, +-1.658105627437721939e-07, +-1.715142938835196199e-07, +-1.771883900385460574e-07, +-1.828327267882717492e-07, +-1.884471814335248707e-07, +-1.940316329963300631e-07, +-1.995859622193245628e-07, +-2.051100515655417583e-07, +-2.106037852176833236e-07, +-2.160670490776346633e-07, +-2.214997307657343459e-07, +-2.269017196201388560e-07, +-2.322729066958079014e-07, +-2.376131847638299107e-07, +-2.429224483102614389e-07, +-2.482005935351996664e-07, +-2.534475183516132026e-07, +-2.586631223842403076e-07, +-2.638473069682806232e-07, +-2.689999751480047688e-07, +-2.741210316754420219e-07, +-2.792103830088809119e-07, +-2.842679373112990321e-07, +-2.892936044488330865e-07, +-2.942872959890387138e-07, +-2.992489251990896425e-07, +-3.041784070440271379e-07, +-3.090756581848196620e-07, +-3.139405969764790721e-07, +-3.187731434659757547e-07, +-3.235732193900873212e-07, +-3.283407481733080241e-07, +-3.330756549255922618e-07, +-3.377778664400150202e-07, +-3.424473111904856254e-07, +-3.470839193292531253e-07, +-3.516876226843515323e-07, +-3.562583547571017122e-07, +-3.607960507194287238e-07, +-3.653006474112486703e-07, +-3.697720833375272181e-07, +-3.742102986656445303e-07, +-3.786152352223178902e-07, +-3.829868364907365592e-07, +-3.873250476074805891e-07, +-3.916298153595313773e-07, +-3.959010881809312345e-07, +-4.001388161497651409e-07, +-4.043429509847021521e-07, +-4.085134460417228874e-07, +-4.126502563107798375e-07, +-4.167533384121798987e-07, +-4.208226505931294843e-07, +-4.248581527241984797e-07, +-4.288598062955290288e-07, +-4.328275744131875218e-07, +-4.367614217954549615e-07, +-4.406613147688479203e-07, +-4.445272212642985275e-07, +-4.483591108132524530e-07, +-4.521569545435005522e-07, +-4.559207251752838384e-07, +-4.596503970169999255e-07, +-4.633459459611019058e-07, +-4.670073494798025173e-07, +-4.706345866208637541e-07, +-4.742276380030641816e-07, +-4.777864858119639833e-07, +-4.813111137952719557e-07, +-4.848015072584004906e-07, +-4.882576530598332052e-07, +-4.916795396065432352e-07, +-4.950671568492623433e-07, +-4.984204962776691377e-07, +-5.017395509156569100e-07, +-5.050243153164489027e-07, +-5.082747855576638123e-07, +-5.114909592364076574e-07, +-5.146728354642226033e-07, +-5.178204148619590246e-07, +-5.209336995547240125e-07, +-5.240126931666630166e-07, +-5.270574008157925203e-07, +-5.300678291086838502e-07, +-5.330439861350935170e-07, +-5.359858814626552831e-07, +-5.388935261314193413e-07, +-5.417669326483655531e-07, +-5.446061149819549094e-07, +-5.474110885564199985e-07, +-5.501818702462988915e-07, +-5.529184783706282014e-07, +-5.556209326873165612e-07, +-5.582892543873255075e-07, +-5.609234660889470316e-07, +-5.635235918318139980e-07, +-5.660896570711497438e-07, +-5.686216886716872285e-07, +-5.711197149017479566e-07, +-5.735837654272402198e-07, +-5.760138713054845441e-07, +-5.784100649791428990e-07, +-5.807723802701020609e-07, +-5.831008523731615234e-07, +-5.853955178498308869e-07, +-5.876564146220990842e-07, +-5.898835819659789306e-07, +-5.920770605051929170e-07, +-5.942368922048047924e-07, +-5.963631203646429885e-07, +-5.984557896129335790e-07, +-6.005149458996603880e-07, +-6.025406364900334136e-07, +-6.045329099578567711e-07, +-6.064918161789325301e-07, +-6.084174063242608401e-07, +-6.103097328534343434e-07, +-6.121688495077601625e-07, +-6.139948113035335048e-07, +-6.157876745251456738e-07, +-6.175474967182699005e-07, +-6.192743366829144026e-07, +-6.209682544664493978e-07, +-6.226293113566702211e-07, +-6.242575698747648345e-07, +-6.258530937682646064e-07, +-6.274159480039851392e-07, +-6.289461987608961579e-07, +-6.304439134229436470e-07, +-6.319091605719112681e-07, +-6.333420099801796053e-07, +-6.347425326035377139e-07, +-6.361108005738603086e-07, +-6.374468871917945875e-07, +-6.387508669194587016e-07, +-6.400228153730692861e-07, +-6.412628093155326752e-07, +-6.424709266490605745e-07, +-6.436472464077067479e-07, +-6.447918487498438828e-07, +-6.459048149507109705e-07, +-6.469862273948525844e-07, +-6.480361695686054861e-07, +-6.490547260524330827e-07, +-6.500419825134038805e-07, +-6.509980256974859205e-07, +-6.519229434219116229e-07, +-6.528168245674840814e-07, +-6.536797590709065443e-07, +-6.545118379169698064e-07, +-6.553131531308810549e-07, +-6.560837977704204503e-07, +-6.568238659181500113e-07, +-6.575334526736343586e-07, +-6.582126541455283681e-07, +-6.588615674437405283e-07, +-6.594802906715733211e-07, +-6.600689229177529599e-07, +-6.606275642485439360e-07, +-6.611563156998070262e-07, +-6.616552792689896432e-07, +-6.621245579071653142e-07, +-6.625642555110557949e-07, +-6.629744769149445524e-07, +-6.633553278827069259e-07, +-6.637069150997037036e-07, +-6.640293461647228753e-07, +-6.643227295818859147e-07, +-6.645871747525740728e-07, +-6.648227919672475223e-07, +-6.650296923973737689e-07, +-6.652079880872329250e-07, +-6.653577919457653352e-07, +-6.654792177383913559e-07, +-6.655723800788414043e-07, +-6.656373944209342340e-07, +-6.656743770503450444e-07, +-6.656834450763978377e-07, +-6.656647164238303531e-07, +-6.656183098245145309e-07, +-6.655443448092293880e-07, +-6.654429416993693059e-07, +-6.653142215986493552e-07, +-6.651583063848331716e-07, +-6.649753187014127628e-07, +-6.647653819493347970e-07, +-6.645286202786437755e-07, +-6.642651585801598285e-07, +-6.639751224771590509e-07, +-6.636586383170249347e-07, +-6.633158331628918589e-07, +-6.629468347853220381e-07, +-6.625517716539106850e-07, +-6.621307729289247362e-07, +-6.616839684529443312e-07, +-6.612114887424754921e-07, +-6.607134649795909672e-07, +-6.601900290035069119e-07, +-6.596413133022496726e-07, +-6.590674510042068450e-07, +-6.584685758697704467e-07, +-6.578448222829255629e-07, +-6.571963252428704370e-07, +-6.565232203555872231e-07, +-6.558256438254704409e-07, +-6.551037324469107509e-07, +-6.543576235958847644e-07, +-6.535874552215767226e-07, +-6.527933658379521071e-07, +-6.519754945153670375e-07, +-6.511339808721749161e-07, +-6.502689650663230137e-07, +-6.493805877869431270e-07, +-6.484689902459815160e-07, +-6.475343141697855383e-07, +-6.465767017907242689e-07, +-6.455962958388107099e-07, +-6.445932395333010231e-07, +-6.435676765743410912e-07, +-6.425197511345766565e-07, +-6.414496078507878116e-07, +-6.403573918155294198e-07, +-6.392432485687807464e-07, +-6.381073240895785732e-07, +-6.369497647876883236e-07, +-6.357707174952635407e-07, +-6.345703294585043072e-07, +-6.333487483293439343e-07, +-6.321061221571345924e-07, +-6.308425993803343179e-07, +-6.295583288182100079e-07, +-6.282534596625593672e-07, +-6.269281414694096676e-07, +-6.255825241507612945e-07, +-6.242167579663261053e-07, +-6.228309935152735161e-07, +-6.214253817279935308e-07, +-6.200000738578615685e-07, +-6.185552214730401376e-07, +-6.170909764482480049e-07, +-6.156074909565835750e-07, +-6.141049174613392696e-07, +-6.125834087078333771e-07, +-6.110431177152567248e-07, +-6.094841977685253875e-07, +-6.079068024101687580e-07, +-6.063110854321931608e-07, +-6.046972008679991460e-07, +-6.030653029842919010e-07, +-6.014155462730126265e-07, +-5.997480854432827240e-07, +-5.980630754133756172e-07, +-5.963606713026772446e-07, +-5.946410284236963157e-07, +-5.929043022740692727e-07, +-5.911506485285904517e-07, +-5.893802230312536785e-07, +-5.875931817873216054e-07, +-5.857896809554094467e-07, +-5.839698768395748561e-07, +-5.821339258814451787e-07, +-5.802819846523548677e-07, +-5.784142098454930654e-07, +-5.765307582680966067e-07, +-5.746317868336248108e-07, +-5.727174525540065886e-07, +-5.707879125318483750e-07, +-5.688433239527013537e-07, +-5.668838440773494331e-07, +-5.649096302341043178e-07, +-5.629208398111154021e-07, +-5.609176302487439321e-07, +-5.589001590319020166e-07, +-5.568685836824453180e-07, +-5.548230617516006840e-07, +-5.527637508123920844e-07, +-5.506908084520898423e-07, +-5.486043922647121685e-07, +-5.465046598435188619e-07, +-5.443917687735453489e-07, +-5.422658766241581112e-07, +-5.401271409416394416e-07, +-5.379757192417755879e-07, +-5.358117690025170011e-07, +-5.336354476565977132e-07, +-5.314469125842605953e-07, +-5.292463211059292518e-07, +-5.270338304749645121e-07, +-5.248095978704105467e-07, +-5.225737803897913811e-07, +-5.203265350419327153e-07, +-5.180680187398060833e-07, +-5.157983882933832835e-07, +-5.135178004025555005e-07, +-5.112264116500417339e-07, +-5.089243784943540835e-07, +-5.066118572627940576e-07, +-5.042890041444465515e-07, +-5.019559751832464596e-07, +-4.996129262710179701e-07, +-4.972600131405970812e-07, +-4.948973913589726458e-07, +-4.925252163204334515e-07, +-4.901436432397649579e-07, +-4.877528271454765269e-07, +-4.853529228730506761e-07, +-4.829440850582201782e-07, +-4.805264681303101704e-07, +-4.781002263055659699e-07, +-4.756655135805432525e-07, +-4.732224837254955305e-07, +-4.707712902778706874e-07, +-4.683120865357223318e-07, +-4.658450255512726115e-07, +-4.633702601244278591e-07, +-4.608879427963659167e-07, +-4.583982258431194385e-07, +-4.559012612692587716e-07, +-4.533972008015285152e-07, +-4.508861958825846646e-07, +-4.483683976647296916e-07, +-4.458439570036682165e-07, +-4.433130244523581853e-07, +-4.407757502548381162e-07, +-4.382322843400862702e-07, +-4.356827763159874467e-07, +-4.331273754632487990e-07, +-4.305662307293776418e-07, +-4.279994907227414739e-07, +-4.254273037066071954e-07, +-4.228498175932105538e-07, +-4.202671799379471918e-07, +-4.176795379334659692e-07, +-4.150870384039331731e-07, +-4.124898277992400835e-07, +-4.098880521892947120e-07, +-4.072818572583052825e-07, +-4.046713882991790140e-07, +-4.020567902078620350e-07, +-3.994382074777995756e-07, +-3.968157841943798026e-07, +-3.941896640294461046e-07, +-3.915599902358122358e-07, +-3.889269056418540110e-07, +-3.862905526461347224e-07, +-3.836510732120467033e-07, +-3.810086088624933911e-07, +-3.783633006746363987e-07, +-3.757152892746383522e-07, +-3.730647148324842901e-07, +-3.704117170568417085e-07, +-3.677564351899312473e-07, +-3.650990080024438572e-07, +-3.624395737885219175e-07, +-3.597782703607358018e-07, +-3.571152350451418639e-07, +-3.544506046763816642e-07, +-3.517845155927761135e-07, +-3.491171036315140613e-07, +-3.464485041238147316e-07, +-3.437788518901955621e-07, +-3.411082812357694237e-07, +-3.384369259455416292e-07, +-3.357649192797817984e-07, +-3.330923939694333626e-07, +-3.304194822115422868e-07, +-3.277463156647441843e-07, +-3.250730254448178699e-07, +-3.223997421202230842e-07, +-3.197265957077266280e-07, +-3.170537156680142013e-07, +-3.143812309014500513e-07, +-3.117092697437258165e-07, +-3.090379599617033952e-07, +-3.063674287491919569e-07, +-3.036978027228219386e-07, +-3.010292079179068657e-07, +-2.983617697844422327e-07, +-2.956956131830241813e-07, +-2.930308623809219670e-07, +-2.903676410481240094e-07, +-2.877060722534160239e-07, +-2.850462784605828731e-07, +-2.823883815245724602e-07, +-2.797325026877001216e-07, +-2.770787625759848387e-07, +-2.744272811954280105e-07, +-2.717781779283535302e-07, +-2.691315715298622639e-07, +-2.664875801242488895e-07, +-2.638463212014596053e-07, +-2.612079116136922450e-07, +-2.585724675718838971e-07, +-2.559401046423967298e-07, +-2.533109377436360530e-07, +-2.506850811427683831e-07, +-2.480626484524263263e-07, +-2.454437526275566631e-07, +-2.428285059621801822e-07, +-2.402170200863171102e-07, +-2.376094059628691832e-07, +-2.350057738845927478e-07, +-2.324062334710691629e-07, +-2.298108936657649861e-07, +-2.272198627331329775e-07, +-2.246332482557178142e-07, +-2.220511571313259416e-07, +-2.194736955702534463e-07, +-2.169009690925126849e-07, +-2.143330825251493867e-07, +-2.117701399996011547e-07, +-2.092122449490600172e-07, +-2.066595001059089350e-07, +-2.041120074991606654e-07, +-2.015698684520349831e-07, +-1.990331835794390744e-07, +-1.965020527856323478e-07, +-1.939765752618286413e-07, +-1.914568494839053434e-07, +-1.889429732100841105e-07, +-1.864350434787728651e-07, +-1.839331566063013332e-07, +-1.814374081848429011e-07, +-1.789478930802844076e-07, +-1.764647054301375457e-07, +-1.739879386415844932e-07, +-1.715176853894679824e-07, +-1.690540376143371427e-07, +-1.665970865206143887e-07, +-1.641469225747214126e-07, +-1.617036355032457818e-07, +-1.592673142912421610e-07, +-1.568380471804777895e-07, +-1.544159216677330419e-07, +-1.520010245032329083e-07, +-1.495934416889795042e-07, +-1.471932584772696570e-07, +-1.448005593691486737e-07, +-1.424154281129690348e-07, +-1.400379477029233071e-07, +-1.376682003777339423e-07, +-1.353062676192383351e-07, +-1.329522301511576340e-07, +-1.306061679378048843e-07, +-1.282681601828891757e-07, +-1.259382853283204531e-07, +-1.236166210530928087e-07, +-1.213032442722190741e-07, +-1.189982311356551542e-07, +-1.167016570273045652e-07, +-1.144135965640631401e-07, +-1.121341235948722840e-07, +-1.098633111998510967e-07, +-1.076012316894790513e-07, +-1.053479566037679408e-07, +-1.031035567115224578e-07, +-1.008681020095959434e-07, +-9.864166172223154154e-08, +-9.642430430044873533e-08, +-9.421609742141590724e-08, +-9.201710798790867487e-08, +-8.982740212780445048e-08, +-8.764704519358142102e-08, +-8.547610176190389902e-08, +-8.331463563324712669e-08, +-8.116270983151930072e-08, +-7.902038660375401991e-08, +-7.688772741984876373e-08, +-7.476479297230374149e-08, +-7.265164317604658298e-08, +-7.054833716829560884e-08, +-6.845493330842018921e-08, +-6.637148917788015443e-08, +-6.429806158015576924e-08, +-6.223470654081328515e-08, +-6.018147930747472525e-08, +-5.813843434996179371e-08, +-5.610562536037877258e-08, +-5.408310525329052440e-08, +-5.207092616588070870e-08, +-5.006913945825099641e-08, +-4.807779571362271658e-08, +-4.609694473871045755e-08, +-4.412663556404464086e-08, +-4.216691644433219185e-08, +-4.021783485893574861e-08, +-3.827943751230757436e-08, +-3.635177033446494818e-08, +-3.443487848157963368e-08, +-3.252880633652612113e-08, +-3.063359750946706619e-08, +-2.874929483855499710e-08, +-2.687594039058986707e-08, +-2.501357546171638738e-08, +-2.316224057824240677e-08, +-2.132197549736501061e-08, +-1.949281920806151351e-08, +-1.767480993192207946e-08, +-1.586798512407024487e-08, +-1.407238147406689458e-08, +-1.228803490694432861e-08, +-1.051498058414832826e-08, +-8.753252904642081593e-09, +-7.002885505952706649e-09, +-5.263911265302983461e-09, +-3.536362300736567822e-09, + 0.0 /* Need a final zero coefficient */ +} +} ; /* mid_qual_coeffs */ + +#ifdef _MSC_VER +#pragma warning (pop) +#endif diff --git a/source/engine/thirdparty/libsamplerate/src/samplerate.c b/source/engine/thirdparty/libsamplerate/src/samplerate.c new file mode 100644 index 0000000..bb8788d --- /dev/null +++ b/source/engine/thirdparty/libsamplerate/src/samplerate.c @@ -0,0 +1,528 @@ +/* +** Copyright (c) 2002-2016, Erik de Castro Lopo +** All rights reserved. +** +** This code is released under 2-clause BSD license. Please see the +** file at : https://github.com/libsndfile/libsamplerate/blob/master/COPYING +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include + +#include "samplerate.h" +#include "common.h" + +static SRC_STATE *psrc_set_converter (int converter_type, int channels, int *error) ; + + +SRC_STATE * +src_new (int converter_type, int channels, int *error) +{ + return psrc_set_converter (converter_type, channels, error) ; +} /* src_new */ + +SRC_STATE* +src_clone (SRC_STATE* orig, int *error) +{ + if (!orig) + { + if (error) + *error = SRC_ERR_BAD_STATE ; + return NULL ; + } + if (error) + *error = SRC_ERR_NO_ERROR ; + + SRC_STATE *state = orig->vt->copy (orig) ; + if (!state) + if (error) + *error = SRC_ERR_MALLOC_FAILED ; + + return state ; +} + +SRC_STATE* +src_callback_new (src_callback_t func, int converter_type, int channels, int *error, void* cb_data) +{ SRC_STATE *state ; + + if (func == NULL) + { if (error) + *error = SRC_ERR_BAD_CALLBACK ; + return NULL ; + } ; + + if (error != NULL) + *error = 0 ; + + if ((state = src_new (converter_type, channels, error)) == NULL) + return NULL ; + + src_reset (state) ; + + state->mode = SRC_MODE_CALLBACK ; + state->callback_func = func ; + state->user_callback_data = cb_data ; + + return state ; +} /* src_callback_new */ + +SRC_STATE * +src_delete (SRC_STATE *state) +{ + if (state) + state->vt->close (state) ; + + return NULL ; +} /* src_state */ + +int +src_process (SRC_STATE *state, SRC_DATA *data) +{ + int error ; + + if (state == NULL) + return SRC_ERR_BAD_STATE ; + + if (state->mode != SRC_MODE_PROCESS) + return SRC_ERR_BAD_MODE ; + + /* Check for valid SRC_DATA first. */ + if (data == NULL) + return SRC_ERR_BAD_DATA ; + + /* And that data_in and data_out are valid. */ + if ((data->data_in == NULL && data->input_frames > 0) + || (data->data_out == NULL && data->output_frames > 0)) + return SRC_ERR_BAD_DATA_PTR ; + + /* Check src_ratio is in range. */ + if (is_bad_src_ratio (data->src_ratio)) + return SRC_ERR_BAD_SRC_RATIO ; + + if (data->input_frames < 0) + data->input_frames = 0 ; + if (data->output_frames < 0) + data->output_frames = 0 ; + + if (data->data_in < data->data_out) + { if (data->data_in + data->input_frames * state->channels > data->data_out) + { /*-printf ("\n\ndata_in: %p data_out: %p\n", + (void*) (data->data_in + data->input_frames * psrc->channels), (void*) data->data_out) ;-*/ + return SRC_ERR_DATA_OVERLAP ; + } ; + } + else if (data->data_out + data->output_frames * state->channels > data->data_in) + { /*-printf ("\n\ndata_in : %p ouput frames: %ld data_out: %p\n", (void*) data->data_in, data->output_frames, (void*) data->data_out) ; + + printf ("data_out: %p (%p) data_in: %p\n", (void*) data->data_out, + (void*) (data->data_out + data->input_frames * psrc->channels), (void*) data->data_in) ;-*/ + return SRC_ERR_DATA_OVERLAP ; + } ; + + /* Set the input and output counts to zero. */ + data->input_frames_used = 0 ; + data->output_frames_gen = 0 ; + + /* Special case for when last_ratio has not been set. */ + if (state->last_ratio < (1.0 / SRC_MAX_RATIO)) + state->last_ratio = data->src_ratio ; + + /* Now process. */ + if (fabs (state->last_ratio - data->src_ratio) < 1e-15) + error = state->vt->const_process (state, data) ; + else + error = state->vt->vari_process (state, data) ; + + return error ; +} /* src_process */ + +long +src_callback_read (SRC_STATE *state, double src_ratio, long frames, float *data) +{ + SRC_DATA src_data ; + + long output_frames_gen ; + int error = 0 ; + + if (state == NULL) + return 0 ; + + if (frames <= 0) + return 0 ; + + if (state->mode != SRC_MODE_CALLBACK) + { state->error = SRC_ERR_BAD_MODE ; + return 0 ; + } ; + + if (state->callback_func == NULL) + { state->error = SRC_ERR_NULL_CALLBACK ; + return 0 ; + } ; + + memset (&src_data, 0, sizeof (src_data)) ; + + /* Check src_ratio is in range. */ + if (is_bad_src_ratio (src_ratio)) + { state->error = SRC_ERR_BAD_SRC_RATIO ; + return 0 ; + } ; + + /* Switch modes temporarily. */ + src_data.src_ratio = src_ratio ; + src_data.data_out = data ; + src_data.output_frames = frames ; + + src_data.data_in = state->saved_data ; + src_data.input_frames = state->saved_frames ; + + output_frames_gen = 0 ; + while (output_frames_gen < frames) + { /* Use a dummy array for the case where the callback function + ** returns without setting the ptr. + */ + float dummy [1] ; + + if (src_data.input_frames == 0) + { float *ptr = dummy ; + + src_data.input_frames = state->callback_func (state->user_callback_data, &ptr) ; + src_data.data_in = ptr ; + + if (src_data.input_frames == 0) + src_data.end_of_input = 1 ; + } ; + + /* + ** Now call process function. However, we need to set the mode + ** to SRC_MODE_PROCESS first and when we return set it back to + ** SRC_MODE_CALLBACK. + */ + state->mode = SRC_MODE_PROCESS ; + error = src_process (state, &src_data) ; + state->mode = SRC_MODE_CALLBACK ; + + if (error != 0) + break ; + + src_data.data_in += src_data.input_frames_used * state->channels ; + src_data.input_frames -= src_data.input_frames_used ; + + src_data.data_out += src_data.output_frames_gen * state->channels ; + src_data.output_frames -= src_data.output_frames_gen ; + + output_frames_gen += src_data.output_frames_gen ; + + if (src_data.end_of_input == SRC_TRUE && src_data.output_frames_gen == 0) + break ; + } ; + + state->saved_data = src_data.data_in ; + state->saved_frames = src_data.input_frames ; + + if (error != 0) + { state->error = (SRC_ERROR) error ; + return 0 ; + } ; + + return output_frames_gen ; +} /* src_callback_read */ + +/*========================================================================== +*/ + +int +src_set_ratio (SRC_STATE *state, double new_ratio) +{ + if (state == NULL) + return SRC_ERR_BAD_STATE ; + + if (is_bad_src_ratio (new_ratio)) + return SRC_ERR_BAD_SRC_RATIO ; + + state->last_ratio = new_ratio ; + + return SRC_ERR_NO_ERROR ; +} /* src_set_ratio */ + +int +src_get_channels (SRC_STATE *state) +{ + if (state == NULL) + return -SRC_ERR_BAD_STATE ; + + return state->channels ; +} /* src_get_channels */ + +int +src_reset (SRC_STATE *state) +{ + if (state == NULL) + return SRC_ERR_BAD_STATE ; + + state->vt->reset (state) ; + + state->last_position = 0.0 ; + state->last_ratio = 0.0 ; + + state->saved_data = NULL ; + state->saved_frames = 0 ; + + state->error = SRC_ERR_NO_ERROR ; + + return SRC_ERR_NO_ERROR ; +} /* src_reset */ + +/*============================================================================== +** Control functions. +*/ + +const char * +src_get_name (int converter_type) +{ const char *desc ; + + if ((desc = sinc_get_name (converter_type)) != NULL) + return desc ; + + if ((desc = zoh_get_name (converter_type)) != NULL) + return desc ; + + if ((desc = linear_get_name (converter_type)) != NULL) + return desc ; + + return NULL ; +} /* src_get_name */ + +const char * +src_get_description (int converter_type) +{ const char *desc ; + + if ((desc = sinc_get_description (converter_type)) != NULL) + return desc ; + + if ((desc = zoh_get_description (converter_type)) != NULL) + return desc ; + + if ((desc = linear_get_description (converter_type)) != NULL) + return desc ; + + return NULL ; +} /* src_get_description */ + +const char * +src_get_version (void) +{ return "VERSION";//PACKAGE "-" VERSION " (c) 2002-2008 Erik de Castro Lopo" ; +} /* src_get_version */ + +int +src_is_valid_ratio (double ratio) +{ + if (is_bad_src_ratio (ratio)) + return SRC_FALSE ; + + return SRC_TRUE ; +} /* src_is_valid_ratio */ + +/*============================================================================== +** Error reporting functions. +*/ + +int +src_error (SRC_STATE *state) +{ if (state) + return state->error ; + return SRC_ERR_NO_ERROR ; +} /* src_error */ + +const char* +src_strerror (int error) +{ + switch (error) + { case SRC_ERR_NO_ERROR : + return "No error." ; + case SRC_ERR_MALLOC_FAILED : + return "Malloc failed." ; + case SRC_ERR_BAD_STATE : + return "SRC_STATE pointer is NULL." ; + case SRC_ERR_BAD_DATA : + return "SRC_DATA pointer is NULL." ; + case SRC_ERR_BAD_DATA_PTR : + return "SRC_DATA->data_out or SRC_DATA->data_in is NULL." ; + case SRC_ERR_NO_PRIVATE : + return "Internal error. No private data." ; + + case SRC_ERR_BAD_SRC_RATIO : + return "SRC ratio outside [1/" SRC_MAX_RATIO_STR ", " SRC_MAX_RATIO_STR "] range." ; + + case SRC_ERR_BAD_SINC_STATE : + return "src_process() called without reset after end_of_input." ; + case SRC_ERR_BAD_PROC_PTR : + return "Internal error. No process pointer." ; + case SRC_ERR_SHIFT_BITS : + return "Internal error. SHIFT_BITS too large." ; + case SRC_ERR_FILTER_LEN : + return "Internal error. Filter length too large." ; + case SRC_ERR_BAD_CONVERTER : + return "Bad converter number." ; + case SRC_ERR_BAD_CHANNEL_COUNT : + return "Channel count must be >= 1." ; + case SRC_ERR_SINC_BAD_BUFFER_LEN : + return "Internal error. Bad buffer length. Please report this." ; + case SRC_ERR_SIZE_INCOMPATIBILITY : + return "Internal error. Input data / internal buffer size difference. Please report this." ; + case SRC_ERR_BAD_PRIV_PTR : + return "Internal error. Private pointer is NULL. Please report this." ; + case SRC_ERR_DATA_OVERLAP : + return "Input and output data arrays overlap." ; + case SRC_ERR_BAD_CALLBACK : + return "Supplied callback function pointer is NULL." ; + case SRC_ERR_BAD_MODE : + return "Calling mode differs from initialisation mode (ie process v callback)." ; + case SRC_ERR_NULL_CALLBACK : + return "Callback function pointer is NULL in src_callback_read ()." ; + case SRC_ERR_NO_VARIABLE_RATIO : + return "This converter only allows constant conversion ratios." ; + case SRC_ERR_SINC_PREPARE_DATA_BAD_LEN : + return "Internal error : Bad length in prepare_data ()." ; + case SRC_ERR_BAD_INTERNAL_STATE : + return "Error : Someone is trampling on my internal state." ; + + case SRC_ERR_MAX_ERROR : + return "Placeholder. No error defined for this error number." ; + + default : break ; + } + + return NULL ; +} /* src_strerror */ + +/*============================================================================== +** Simple interface for performing a single conversion from input buffer to +** output buffer at a fixed conversion ratio. +*/ + +int +src_simple (SRC_DATA *src_data, int converter, int channels) +{ SRC_STATE *src_state ; + int error ; + + if ((src_state = src_new (converter, channels, &error)) == NULL) + return error ; + + src_data->end_of_input = 1 ; /* Only one buffer worth of input. */ + + error = src_process (src_state, src_data) ; + + src_delete (src_state) ; + + return error ; +} /* src_simple */ + +void +src_short_to_float_array (const short *in, float *out, int len) +{ + for (int i = 0 ; i < len ; i++) + { out [i] = (float) (in [i] / (1.0 * 0x8000)) ; + } ; + + return ; +} /* src_short_to_float_array */ + +void +src_float_to_short_array (const float *in, short *out, int len) +{ + for (int i = 0 ; i < len ; i++) + { float scaled_value ; + scaled_value = in [i] * 32768.f ; + if (scaled_value >= 32767.f) + out [i] = 32767 ; + else if (scaled_value <= -32768.f) + out [i] = -32768 ; + else + out [i] = (short) (psf_lrintf (scaled_value)) ; + } +} /* src_float_to_short_array */ + +void +src_int_to_float_array (const int *in, float *out, int len) +{ + for (int i = 0 ; i < len ; i++) + { out [i] = (float) (in [i] / (8.0 * 0x10000000)) ; + } ; + + return ; +} /* src_int_to_float_array */ + +void +src_float_to_int_array (const float *in, int *out, int len) +{ double scaled_value ; + + for (int i = 0 ; i < len ; i++) + { scaled_value = in [i] * (8.0 * 0x10000000) ; +#if CPU_CLIPS_POSITIVE == 0 + if (scaled_value >= (1.0 * 0x7FFFFFFF)) + { out [i] = 0x7fffffff ; + continue ; + } ; +#endif +#if CPU_CLIPS_NEGATIVE == 0 + if (scaled_value <= (-8.0 * 0x10000000)) + { out [i] = -1 - 0x7fffffff ; + continue ; + } ; +#endif + out [i] = (int) psf_lrint (scaled_value) ; + } ; + +} /* src_float_to_int_array */ + +/*============================================================================== +** Private functions. +*/ + +static SRC_STATE * +psrc_set_converter (int converter_type, int channels, int *error) +{ + SRC_ERROR temp_error; + SRC_STATE *state ; + switch (converter_type) + { +#ifdef ENABLE_SINC_BEST_CONVERTER + case SRC_SINC_BEST_QUALITY : + state = sinc_state_new (converter_type, channels, &temp_error) ; + break ; +#endif +#ifdef ENABLE_SINC_MEDIUM_CONVERTER + case SRC_SINC_MEDIUM_QUALITY : + state = sinc_state_new (converter_type, channels, &temp_error) ; + break ; +#endif +#ifdef ENABLE_SINC_FAST_CONVERTER + case SRC_SINC_FASTEST : + state = sinc_state_new (converter_type, channels, &temp_error) ; + break ; +#endif + case SRC_ZERO_ORDER_HOLD : + state = zoh_state_new (channels, &temp_error) ; + break ; + case SRC_LINEAR : + state = linear_state_new (channels, &temp_error) ; + break ; + default : + temp_error = SRC_ERR_BAD_CONVERTER ; + state = NULL ; + break ; + } + + if (error) + *error = (int) temp_error ; + + return state ; +} /* psrc_set_converter */ + diff --git a/source/engine/thirdparty/libsamplerate/src/src_linear.c b/source/engine/thirdparty/libsamplerate/src/src_linear.c new file mode 100644 index 0000000..4ddd7b4 --- /dev/null +++ b/source/engine/thirdparty/libsamplerate/src/src_linear.c @@ -0,0 +1,301 @@ +/* +** Copyright (c) 2002-2021, Erik de Castro Lopo +** All rights reserved. +** +** This code is released under 2-clause BSD license. Please see the +** file at : https://github.com/libsndfile/libsamplerate/blob/master/COPYING +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include + +#include "common.h" + +static SRC_ERROR linear_vari_process (SRC_STATE *state, SRC_DATA *data) ; +static void linear_reset (SRC_STATE *state) ; +static SRC_STATE *linear_copy (SRC_STATE *state) ; +static void linear_close (SRC_STATE *state) ; + +/*======================================================================================== +*/ + +#define LINEAR_MAGIC_MARKER MAKE_MAGIC ('l', 'i', 'n', 'e', 'a', 'r') + +#define SRC_DEBUG 0 + +typedef struct +{ int linear_magic_marker ; + int dirty ; + long in_count, in_used ; + long out_count, out_gen ; + float *last_value ; +} LINEAR_DATA ; + +static SRC_STATE_VT linear_state_vt = +{ + linear_vari_process, + linear_vari_process, + linear_reset, + linear_copy, + linear_close +} ; + +/*---------------------------------------------------------------------------------------- +*/ + +static SRC_ERROR +linear_vari_process (SRC_STATE *state, SRC_DATA *data) +{ LINEAR_DATA *priv ; + double src_ratio, input_index, rem ; + int ch ; + + if (data->input_frames <= 0) + return SRC_ERR_NO_ERROR ; + + if (state->private_data == NULL) + return SRC_ERR_NO_PRIVATE ; + + priv = (LINEAR_DATA*) state->private_data ; + + if (!priv->dirty) + { /* If we have just been reset, set the last_value data. */ + for (ch = 0 ; ch < state->channels ; ch++) + priv->last_value [ch] = data->data_in [ch] ; + priv->dirty = 1 ; + } ; + + priv->in_count = data->input_frames * state->channels ; + priv->out_count = data->output_frames * state->channels ; + priv->in_used = priv->out_gen = 0 ; + + src_ratio = state->last_ratio ; + + if (is_bad_src_ratio (src_ratio)) + return SRC_ERR_BAD_INTERNAL_STATE ; + + input_index = state->last_position ; + + /* Calculate samples before first sample in input array. */ + while (input_index < 1.0 && priv->out_gen < priv->out_count) + { + if (priv->in_used + state->channels * (1.0 + input_index) >= priv->in_count) + break ; + + if (priv->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF) + src_ratio = state->last_ratio + priv->out_gen * (data->src_ratio - state->last_ratio) / priv->out_count ; + + for (ch = 0 ; ch < state->channels ; ch++) + { data->data_out [priv->out_gen] = (float) (priv->last_value [ch] + input_index * + ((double) data->data_in [ch] - priv->last_value [ch])) ; + priv->out_gen ++ ; + } ; + + /* Figure out the next index. */ + input_index += 1.0 / src_ratio ; + } ; + + rem = fmod_one (input_index) ; + priv->in_used += state->channels * psf_lrint (input_index - rem) ; + input_index = rem ; + + /* Main processing loop. */ + while (priv->out_gen < priv->out_count && priv->in_used + state->channels * input_index < priv->in_count) + { + if (priv->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF) + src_ratio = state->last_ratio + priv->out_gen * (data->src_ratio - state->last_ratio) / priv->out_count ; + +#if SRC_DEBUG + if (priv->in_used < state->channels && input_index < 1.0) + { printf ("Whoops!!!! in_used : %ld channels : %d input_index : %f\n", priv->in_used, state->channels, input_index) ; + exit (1) ; + } ; +#endif + + for (ch = 0 ; ch < state->channels ; ch++) + { data->data_out [priv->out_gen] = (float) (data->data_in [priv->in_used - state->channels + ch] + input_index * + ((double) data->data_in [priv->in_used + ch] - data->data_in [priv->in_used - state->channels + ch])) ; + priv->out_gen ++ ; + } ; + + /* Figure out the next index. */ + input_index += 1.0 / src_ratio ; + rem = fmod_one (input_index) ; + + priv->in_used += state->channels * psf_lrint (input_index - rem) ; + input_index = rem ; + } ; + + if (priv->in_used > priv->in_count) + { input_index += (priv->in_used - priv->in_count) / state->channels ; + priv->in_used = priv->in_count ; + } ; + + state->last_position = input_index ; + + if (priv->in_used > 0) + for (ch = 0 ; ch < state->channels ; ch++) + priv->last_value [ch] = data->data_in [priv->in_used - state->channels + ch] ; + + /* Save current ratio rather then target ratio. */ + state->last_ratio = src_ratio ; + + data->input_frames_used = priv->in_used / state->channels ; + data->output_frames_gen = priv->out_gen / state->channels ; + + return SRC_ERR_NO_ERROR ; +} /* linear_vari_process */ + +/*------------------------------------------------------------------------------ +*/ + +LIBSAMPLERATE_DLL_PRIVATE const char* +linear_get_name (int src_enum) +{ + if (src_enum == SRC_LINEAR) + return "Linear Interpolator" ; + + return NULL ; +} /* linear_get_name */ + +LIBSAMPLERATE_DLL_PRIVATE const char* +linear_get_description (int src_enum) +{ + if (src_enum == SRC_LINEAR) + return "Linear interpolator, very fast, poor quality." ; + + return NULL ; +} /* linear_get_descrition */ + +static LINEAR_DATA * +linear_data_new (int channels) +{ + assert (channels > 0) ; + + LINEAR_DATA *priv = (LINEAR_DATA *) calloc (1, sizeof (LINEAR_DATA)) ; + if (priv) + { + priv->linear_magic_marker = LINEAR_MAGIC_MARKER ; + priv->last_value = (float *) calloc (channels, sizeof (float)) ; + if (!priv->last_value) + { + free (priv) ; + priv = NULL ; + } + } + + return priv ; +} + +LIBSAMPLERATE_DLL_PRIVATE SRC_STATE * +linear_state_new (int channels, SRC_ERROR *error) +{ + assert (channels > 0) ; + assert (error != NULL) ; + + SRC_STATE *state = (SRC_STATE *) calloc (1, sizeof (SRC_STATE)) ; + if (!state) + { + *error = SRC_ERR_MALLOC_FAILED ; + return NULL ; + } + + state->channels = channels ; + state->mode = SRC_MODE_PROCESS ; + + state->private_data = linear_data_new (state->channels) ; + if (!state->private_data) + { + free (state) ; + *error = SRC_ERR_MALLOC_FAILED ; + return NULL ; + } + + state->vt = &linear_state_vt ; + + linear_reset (state) ; + + *error = SRC_ERR_NO_ERROR ; + + return state ; +} + +/*=================================================================================== +*/ + +static void +linear_reset (SRC_STATE *state) +{ LINEAR_DATA *priv = NULL ; + + priv = (LINEAR_DATA*) state->private_data ; + if (priv == NULL) + return ; + + priv->dirty = 0 ; + memset (priv->last_value, 0, sizeof (priv->last_value [0]) * state->channels) ; + + return ; +} /* linear_reset */ + +SRC_STATE * +linear_copy (SRC_STATE *state) +{ + assert (state != NULL) ; + + if (state->private_data == NULL) + return NULL ; + + SRC_STATE *to = (SRC_STATE *) calloc (1, sizeof (SRC_STATE)) ; + if (!to) + return NULL ; + memcpy (to, state, sizeof (SRC_STATE)) ; + + LINEAR_DATA* from_priv = (LINEAR_DATA*) state->private_data ; + LINEAR_DATA *to_priv = (LINEAR_DATA *) calloc (1, sizeof (LINEAR_DATA)) ; + if (!to_priv) + { + free (to) ; + return NULL ; + } + + memcpy (to_priv, from_priv, sizeof (LINEAR_DATA)) ; + to_priv->last_value = (float *) malloc (sizeof (float) * state->channels) ; + if (!to_priv->last_value) + { + free (to) ; + free (to_priv) ; + return NULL ; + } + memcpy (to_priv->last_value, from_priv->last_value, sizeof (float) * state->channels) ; + + to->private_data = to_priv ; + + return to ; +} /* linear_copy */ + +static void +linear_close (SRC_STATE *state) +{ + if (state) + { + LINEAR_DATA *linear = (LINEAR_DATA *) state->private_data ; + if (linear) + { + if (linear->last_value) + { + free (linear->last_value) ; + linear->last_value = NULL ; + } + free (linear) ; + linear = NULL ; + } + free (state) ; + state = NULL ; + } +} /* linear_close */ diff --git a/source/engine/thirdparty/libsamplerate/src/src_sinc.c b/source/engine/thirdparty/libsamplerate/src/src_sinc.c new file mode 100644 index 0000000..716c4a4 --- /dev/null +++ b/source/engine/thirdparty/libsamplerate/src/src_sinc.c @@ -0,0 +1,1252 @@ +/* +** Copyright (c) 2002-2021, Erik de Castro Lopo +** All rights reserved. +** +** This code is released under 2-clause BSD license. Please see the +** file at : https://github.com/libsndfile/libsamplerate/blob/master/COPYING +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include + +#include "common.h" + +#define SINC_MAGIC_MARKER MAKE_MAGIC (' ', 's', 'i', 'n', 'c', ' ') + +/*======================================================================================== +*/ + +#define MAKE_INCREMENT_T(x) ((increment_t) (x)) + +#define SHIFT_BITS 12 +#define FP_ONE ((double) (((increment_t) 1) << SHIFT_BITS)) +#define INV_FP_ONE (1.0 / FP_ONE) + +/* Customixe max channls from Kconfig. */ +#ifndef CONFIG_CHAN_NR +#define MAX_CHANNELS 128 +#else +#define MAX_CHANNELS CONFIG_CHAN_NR +#endif + +/*======================================================================================== +*/ + +typedef int32_t increment_t ; +typedef float coeff_t ; +typedef int _CHECK_SHIFT_BITS[2 * (SHIFT_BITS < sizeof (increment_t) * 8 - 1) - 1]; /* sanity check. */ + +#ifdef ENABLE_SINC_FAST_CONVERTER + #include "fastest_coeffs.h" +#endif +#ifdef ENABLE_SINC_MEDIUM_CONVERTER + #include "mid_qual_coeffs.h" +#endif +#ifdef ENABLE_SINC_BEST_CONVERTER + #include "high_qual_coeffs.h" +#endif + +typedef struct +{ int sinc_magic_marker ; + + long in_count, in_used ; + long out_count, out_gen ; + + int coeff_half_len, index_inc ; + + double src_ratio, input_index ; + + coeff_t const *coeffs ; + + int b_current, b_end, b_real_end, b_len ; + + /* Sure hope noone does more than 128 channels at once. */ + double left_calc [MAX_CHANNELS], right_calc [MAX_CHANNELS] ; + + float *buffer ; +} SINC_FILTER ; + +static SRC_ERROR sinc_multichan_vari_process (SRC_STATE *state, SRC_DATA *data) ; +static SRC_ERROR sinc_hex_vari_process (SRC_STATE *state, SRC_DATA *data) ; +static SRC_ERROR sinc_quad_vari_process (SRC_STATE *state, SRC_DATA *data) ; +static SRC_ERROR sinc_stereo_vari_process (SRC_STATE *state, SRC_DATA *data) ; +static SRC_ERROR sinc_mono_vari_process (SRC_STATE *state, SRC_DATA *data) ; + +static SRC_ERROR prepare_data (SINC_FILTER *filter, int channels, SRC_DATA *data, int half_filter_chan_len) WARN_UNUSED ; + +static void sinc_reset (SRC_STATE *state) ; +static SRC_STATE *sinc_copy (SRC_STATE *state) ; +static void sinc_close (SRC_STATE *state) ; + +static SRC_STATE_VT sinc_multichan_state_vt = +{ + sinc_multichan_vari_process, + sinc_multichan_vari_process, + sinc_reset, + sinc_copy, + sinc_close +} ; + +static SRC_STATE_VT sinc_hex_state_vt = +{ + sinc_hex_vari_process, + sinc_hex_vari_process, + sinc_reset, + sinc_copy, + sinc_close +} ; + +static SRC_STATE_VT sinc_quad_state_vt = +{ + sinc_quad_vari_process, + sinc_quad_vari_process, + sinc_reset, + sinc_copy, + sinc_close +} ; + +static SRC_STATE_VT sinc_stereo_state_vt = +{ + sinc_stereo_vari_process, + sinc_stereo_vari_process, + sinc_reset, + sinc_copy, + sinc_close +} ; + +static SRC_STATE_VT sinc_mono_state_vt = +{ + sinc_mono_vari_process, + sinc_mono_vari_process, + sinc_reset, + sinc_copy, + sinc_close +} ; + +static inline increment_t +double_to_fp (double x) +{ return (increment_t) (psf_lrint ((x) * FP_ONE)) ; +} /* double_to_fp */ + +static inline increment_t +int_to_fp (int x) +{ return (((increment_t) (x)) << SHIFT_BITS) ; +} /* int_to_fp */ + +static inline int +fp_to_int (increment_t x) +{ return (((x) >> SHIFT_BITS)) ; +} /* fp_to_int */ + +static inline increment_t +fp_fraction_part (increment_t x) +{ return ((x) & ((((increment_t) 1) << SHIFT_BITS) - 1)) ; +} /* fp_fraction_part */ + +static inline double +fp_to_double (increment_t x) +{ return fp_fraction_part (x) * INV_FP_ONE ; +} /* fp_to_double */ + +static inline int +int_div_ceil (int divident, int divisor) /* == (int) ceil ((float) divident / divisor) */ +{ assert (divident >= 0 && divisor > 0) ; /* For positive numbers only */ + return (divident + (divisor - 1)) / divisor ; +} + +/*---------------------------------------------------------------------------------------- +*/ + +LIBSAMPLERATE_DLL_PRIVATE const char* +sinc_get_name (int src_enum) +{ + switch (src_enum) + { case SRC_SINC_BEST_QUALITY : + return "Best Sinc Interpolator" ; + + case SRC_SINC_MEDIUM_QUALITY : + return "Medium Sinc Interpolator" ; + + case SRC_SINC_FASTEST : + return "Fastest Sinc Interpolator" ; + + default: break ; + } ; + + return NULL ; +} /* sinc_get_descrition */ + +LIBSAMPLERATE_DLL_PRIVATE const char* +sinc_get_description (int src_enum) +{ + switch (src_enum) + { case SRC_SINC_FASTEST : + return "Band limited sinc interpolation, fastest, 97dB SNR, 80% BW." ; + + case SRC_SINC_MEDIUM_QUALITY : + return "Band limited sinc interpolation, medium quality, 121dB SNR, 90% BW." ; + + case SRC_SINC_BEST_QUALITY : + return "Band limited sinc interpolation, best quality, 144dB SNR, 96% BW." ; + + default : + break ; + } ; + + return NULL ; +} /* sinc_get_descrition */ + +static SINC_FILTER * +sinc_filter_new (int converter_type, int channels) +{ + assert (converter_type == SRC_SINC_FASTEST || + converter_type == SRC_SINC_MEDIUM_QUALITY || + converter_type == SRC_SINC_BEST_QUALITY) ; + assert (channels > 0 && channels <= MAX_CHANNELS) ; + + SINC_FILTER *priv = (SINC_FILTER *) calloc (1, sizeof (SINC_FILTER)) ; + if (priv) + { + priv->sinc_magic_marker = SINC_MAGIC_MARKER ; + switch (converter_type) + { +#ifdef ENABLE_SINC_FAST_CONVERTER + case SRC_SINC_FASTEST : + priv->coeffs = fastest_coeffs.coeffs ; + priv->coeff_half_len = ARRAY_LEN (fastest_coeffs.coeffs) - 2 ; + priv->index_inc = fastest_coeffs.increment ; + break ; +#endif +#ifdef ENABLE_SINC_MEDIUM_CONVERTER + case SRC_SINC_MEDIUM_QUALITY : + priv->coeffs = slow_mid_qual_coeffs.coeffs ; + priv->coeff_half_len = ARRAY_LEN (slow_mid_qual_coeffs.coeffs) - 2 ; + priv->index_inc = slow_mid_qual_coeffs.increment ; + break ; +#endif +#ifdef ENABLE_SINC_BEST_CONVERTER + case SRC_SINC_BEST_QUALITY : + priv->coeffs = slow_high_qual_coeffs.coeffs ; + priv->coeff_half_len = ARRAY_LEN (slow_high_qual_coeffs.coeffs) - 2 ; + priv->index_inc = slow_high_qual_coeffs.increment ; + break ; +#endif + } + + priv->b_len = 3 * (int) psf_lrint ((priv->coeff_half_len + 2.0) / priv->index_inc * SRC_MAX_RATIO + 1) ; + priv->b_len = MAX (priv->b_len, 4096) ; + priv->b_len *= channels ; + priv->b_len += 1 ; // There is a <= check against samples_in_hand requiring a buffer bigger than the calculation above + + + priv->buffer = (float *) calloc (priv->b_len + channels, sizeof (float)) ; + if (!priv->buffer) + { + free (priv) ; + priv = NULL ; + } + } + + return priv ; +} + +LIBSAMPLERATE_DLL_PRIVATE SRC_STATE * +sinc_state_new (int converter_type, int channels, SRC_ERROR *error) +{ + assert (converter_type == SRC_SINC_FASTEST || + converter_type == SRC_SINC_MEDIUM_QUALITY || + converter_type == SRC_SINC_BEST_QUALITY) ; + assert (channels > 0) ; + assert (error != NULL) ; + + if (channels > MAX_CHANNELS) + { + *error = SRC_ERR_BAD_CHANNEL_COUNT ; + return NULL ; + } + + SRC_STATE *state = (SRC_STATE *) calloc (1, sizeof (SRC_STATE)) ; + if (!state) + { + *error = SRC_ERR_MALLOC_FAILED ; + return NULL ; + } + + state->channels = channels ; + state->mode = SRC_MODE_PROCESS ; + + if (state->channels == 1) + state->vt = &sinc_mono_state_vt ; + else if (state->channels == 2) + state->vt = &sinc_stereo_state_vt ; + else if (state->channels == 4) + state->vt = &sinc_quad_state_vt ; + else if (state->channels == 6) + state->vt = &sinc_hex_state_vt ; + else + state->vt = &sinc_multichan_state_vt ; + + state->private_data = sinc_filter_new (converter_type, state->channels) ; + if (!state->private_data) + { + free (state) ; + *error = SRC_ERR_MALLOC_FAILED ; + return NULL ; + } + + sinc_reset (state) ; + + *error = SRC_ERR_NO_ERROR ; + + return state ; +} + +static void +sinc_reset (SRC_STATE *state) +{ SINC_FILTER *filter ; + + filter = (SINC_FILTER*) state->private_data ; + if (filter == NULL) + return ; + + filter->b_current = filter->b_end = 0 ; + filter->b_real_end = -1 ; + + filter->src_ratio = filter->input_index = 0.0 ; + + memset (filter->buffer, 0, filter->b_len * sizeof (filter->buffer [0])) ; + + /* Set this for a sanity check */ + memset (filter->buffer + filter->b_len, 0xAA, state->channels * sizeof (filter->buffer [0])) ; +} /* sinc_reset */ + +static SRC_STATE * +sinc_copy (SRC_STATE *state) +{ + assert (state != NULL) ; + + if (state->private_data == NULL) + return NULL ; + + SRC_STATE *to = (SRC_STATE *) calloc (1, sizeof (SRC_STATE)) ; + if (!to) + return NULL ; + memcpy (to, state, sizeof (SRC_STATE)) ; + + + SINC_FILTER* from_filter = (SINC_FILTER*) state->private_data ; + SINC_FILTER *to_filter = (SINC_FILTER *) calloc (1, sizeof (SINC_FILTER)) ; + if (!to_filter) + { + free (to) ; + return NULL ; + } + memcpy (to_filter, from_filter, sizeof (SINC_FILTER)) ; + to_filter->buffer = (float *) malloc (sizeof (float) * (from_filter->b_len + state->channels)) ; + if (!to_filter->buffer) + { + free (to) ; + free (to_filter) ; + return NULL ; + } + memcpy (to_filter->buffer, from_filter->buffer, sizeof (float) * (from_filter->b_len + state->channels)) ; + + to->private_data = to_filter ; + + return to ; +} /* sinc_copy */ + +/*======================================================================================== +** Beware all ye who dare pass this point. There be dragons here. +*/ + +static inline double +calc_output_single (SINC_FILTER *filter, increment_t increment, increment_t start_filter_index) +{ double fraction, left, right, icoeff ; + increment_t filter_index, max_filter_index ; + int data_index, coeff_count, indx ; + + /* Convert input parameters into fixed point. */ + max_filter_index = int_to_fp (filter->coeff_half_len) ; + + /* First apply the left half of the filter. */ + filter_index = start_filter_index ; + coeff_count = (max_filter_index - filter_index) / increment ; + filter_index = filter_index + coeff_count * increment ; + data_index = filter->b_current - coeff_count ; + + if (data_index < 0) /* Avoid underflow access to filter->buffer. */ + { int steps = -data_index ; + /* If the assert triggers we would have to take care not to underflow/overflow */ + assert (steps <= int_div_ceil (filter_index, increment)) ; + filter_index -= increment * steps ; + data_index += steps ; + } + left = 0.0 ; + while (filter_index >= MAKE_INCREMENT_T (0)) + { fraction = fp_to_double (filter_index) ; + indx = fp_to_int (filter_index) ; + assert (indx >= 0 && indx + 1 < filter->coeff_half_len + 2) ; + icoeff = filter->coeffs [indx] + fraction * (filter->coeffs [indx + 1] - filter->coeffs [indx]) ; + assert (data_index >= 0 && data_index < filter->b_len) ; + assert (data_index < filter->b_end) ; + left += icoeff * filter->buffer [data_index] ; + + filter_index -= increment ; + data_index = data_index + 1 ; + } ; + + /* Now apply the right half of the filter. */ + filter_index = increment - start_filter_index ; + coeff_count = (max_filter_index - filter_index) / increment ; + filter_index = filter_index + coeff_count * increment ; + data_index = filter->b_current + 1 + coeff_count ; + + right = 0.0 ; + do + { fraction = fp_to_double (filter_index) ; + indx = fp_to_int (filter_index) ; + assert (indx < filter->coeff_half_len + 2) ; + icoeff = filter->coeffs [indx] + fraction * (filter->coeffs [indx + 1] - filter->coeffs [indx]) ; + assert (data_index >= 0 && data_index < filter->b_len) ; + assert (data_index < filter->b_end) ; + right += icoeff * filter->buffer [data_index] ; + + filter_index -= increment ; + data_index = data_index - 1 ; + } + while (filter_index > MAKE_INCREMENT_T (0)) ; + + return (left + right) ; +} /* calc_output_single */ + +static SRC_ERROR +sinc_mono_vari_process (SRC_STATE *state, SRC_DATA *data) +{ SINC_FILTER *filter ; + double input_index, src_ratio, count, float_increment, terminate, rem ; + increment_t increment, start_filter_index ; + int half_filter_chan_len, samples_in_hand ; + + if (state->private_data == NULL) + return SRC_ERR_NO_PRIVATE ; + + filter = (SINC_FILTER*) state->private_data ; + + /* If there is not a problem, this will be optimised out. */ + if (sizeof (filter->buffer [0]) != sizeof (data->data_in [0])) + return SRC_ERR_SIZE_INCOMPATIBILITY ; + + filter->in_count = data->input_frames * state->channels ; + filter->out_count = data->output_frames * state->channels ; + filter->in_used = filter->out_gen = 0 ; + + src_ratio = state->last_ratio ; + + if (is_bad_src_ratio (src_ratio)) + return SRC_ERR_BAD_INTERNAL_STATE ; + + /* Check the sample rate ratio wrt the buffer len. */ + count = (filter->coeff_half_len + 2.0) / filter->index_inc ; + if (MIN (state->last_ratio, data->src_ratio) < 1.0) + count /= MIN (state->last_ratio, data->src_ratio) ; + + /* Maximum coefficientson either side of center point. */ + half_filter_chan_len = state->channels * (int) (psf_lrint (count) + 1) ; + + input_index = state->last_position ; + + rem = fmod_one (input_index) ; + filter->b_current = (filter->b_current + state->channels * psf_lrint (input_index - rem)) % filter->b_len ; + input_index = rem ; + + terminate = 1.0 / src_ratio + 1e-20 ; + + /* Main processing loop. */ + while (filter->out_gen < filter->out_count) + { + /* Need to reload buffer? */ + samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ; + + if (samples_in_hand <= half_filter_chan_len) + { if ((state->error = prepare_data (filter, state->channels, data, half_filter_chan_len)) != 0) + return state->error ; + + samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ; + if (samples_in_hand <= half_filter_chan_len) + break ; + } ; + + /* This is the termination condition. */ + if (filter->b_real_end >= 0) + { if (filter->b_current + input_index + terminate > filter->b_real_end) + break ; + } ; + + if (filter->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > 1e-10) + src_ratio = state->last_ratio + filter->out_gen * (data->src_ratio - state->last_ratio) / filter->out_count ; + + float_increment = filter->index_inc * (src_ratio < 1.0 ? src_ratio : 1.0) ; + increment = double_to_fp (float_increment) ; + + start_filter_index = double_to_fp (input_index * float_increment) ; + + data->data_out [filter->out_gen] = (float) ((float_increment / filter->index_inc) * + calc_output_single (filter, increment, start_filter_index)) ; + filter->out_gen ++ ; + + /* Figure out the next index. */ + input_index += 1.0 / src_ratio ; + rem = fmod_one (input_index) ; + + filter->b_current = (filter->b_current + state->channels * psf_lrint (input_index - rem)) % filter->b_len ; + input_index = rem ; + } ; + + state->last_position = input_index ; + + /* Save current ratio rather then target ratio. */ + state->last_ratio = src_ratio ; + + data->input_frames_used = filter->in_used / state->channels ; + data->output_frames_gen = filter->out_gen / state->channels ; + + return SRC_ERR_NO_ERROR ; +} /* sinc_mono_vari_process */ + +static inline void +calc_output_stereo (SINC_FILTER *filter, int channels, increment_t increment, increment_t start_filter_index, double scale, float * output) +{ double fraction, left [2], right [2], icoeff ; + increment_t filter_index, max_filter_index ; + int data_index, coeff_count, indx ; + + /* Convert input parameters into fixed point. */ + max_filter_index = int_to_fp (filter->coeff_half_len) ; + + /* First apply the left half of the filter. */ + filter_index = start_filter_index ; + coeff_count = (max_filter_index - filter_index) / increment ; + filter_index = filter_index + coeff_count * increment ; + data_index = filter->b_current - channels * coeff_count ; + + if (data_index < 0) /* Avoid underflow access to filter->buffer. */ + { int steps = int_div_ceil (-data_index, 2) ; + /* If the assert triggers we would have to take care not to underflow/overflow */ + assert (steps <= int_div_ceil (filter_index, increment)) ; + filter_index -= increment * steps ; + data_index += steps * 2; + } + left [0] = left [1] = 0.0 ; + while (filter_index >= MAKE_INCREMENT_T (0)) + { fraction = fp_to_double (filter_index) ; + indx = fp_to_int (filter_index) ; + assert (indx >= 0 && indx + 1 < filter->coeff_half_len + 2) ; + icoeff = filter->coeffs [indx] + fraction * (filter->coeffs [indx + 1] - filter->coeffs [indx]) ; + assert (data_index >= 0 && data_index + 1 < filter->b_len) ; + assert (data_index + 1 < filter->b_end) ; + for (int ch = 0; ch < 2; ch++) + left [ch] += icoeff * filter->buffer [data_index + ch] ; + + filter_index -= increment ; + data_index = data_index + 2 ; + } ; + + /* Now apply the right half of the filter. */ + filter_index = increment - start_filter_index ; + coeff_count = (max_filter_index - filter_index) / increment ; + filter_index = filter_index + coeff_count * increment ; + data_index = filter->b_current + channels * (1 + coeff_count) ; + + right [0] = right [1] = 0.0 ; + do + { fraction = fp_to_double (filter_index) ; + indx = fp_to_int (filter_index) ; + assert (indx >= 0 && indx + 1 < filter->coeff_half_len + 2) ; + icoeff = filter->coeffs [indx] + fraction * (filter->coeffs [indx + 1] - filter->coeffs [indx]) ; + assert (data_index >= 0 && data_index + 1 < filter->b_len) ; + assert (data_index + 1 < filter->b_end) ; + for (int ch = 0; ch < 2; ch++) + right [ch] += icoeff * filter->buffer [data_index + ch] ; + + filter_index -= increment ; + data_index = data_index - 2 ; + } + while (filter_index > MAKE_INCREMENT_T (0)) ; + + for (int ch = 0; ch < 2; ch++) + output [ch] = (float) (scale * (left [ch] + right [ch])) ; +} /* calc_output_stereo */ + +SRC_ERROR +sinc_stereo_vari_process (SRC_STATE *state, SRC_DATA *data) +{ SINC_FILTER *filter ; + double input_index, src_ratio, count, float_increment, terminate, rem ; + increment_t increment, start_filter_index ; + int half_filter_chan_len, samples_in_hand ; + + if (state->private_data == NULL) + return SRC_ERR_NO_PRIVATE ; + + filter = (SINC_FILTER*) state->private_data ; + + /* If there is not a problem, this will be optimised out. */ + if (sizeof (filter->buffer [0]) != sizeof (data->data_in [0])) + return SRC_ERR_SIZE_INCOMPATIBILITY ; + + filter->in_count = data->input_frames * state->channels ; + filter->out_count = data->output_frames * state->channels ; + filter->in_used = filter->out_gen = 0 ; + + src_ratio = state->last_ratio ; + + if (is_bad_src_ratio (src_ratio)) + return SRC_ERR_BAD_INTERNAL_STATE ; + + /* Check the sample rate ratio wrt the buffer len. */ + count = (filter->coeff_half_len + 2.0) / filter->index_inc ; + if (MIN (state->last_ratio, data->src_ratio) < 1.0) + count /= MIN (state->last_ratio, data->src_ratio) ; + + /* Maximum coefficientson either side of center point. */ + half_filter_chan_len = state->channels * (int) (psf_lrint (count) + 1) ; + + input_index = state->last_position ; + + rem = fmod_one (input_index) ; + filter->b_current = (filter->b_current + state->channels * psf_lrint (input_index - rem)) % filter->b_len ; + input_index = rem ; + + terminate = 1.0 / src_ratio + 1e-20 ; + + /* Main processing loop. */ + while (filter->out_gen < filter->out_count) + { + /* Need to reload buffer? */ + samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ; + + if (samples_in_hand <= half_filter_chan_len) + { if ((state->error = prepare_data (filter, state->channels, data, half_filter_chan_len)) != 0) + return state->error ; + + samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ; + if (samples_in_hand <= half_filter_chan_len) + break ; + } ; + + /* This is the termination condition. */ + if (filter->b_real_end >= 0) + { if (filter->b_current + input_index + terminate >= filter->b_real_end) + break ; + } ; + + if (filter->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > 1e-10) + src_ratio = state->last_ratio + filter->out_gen * (data->src_ratio - state->last_ratio) / filter->out_count ; + + float_increment = filter->index_inc * (src_ratio < 1.0 ? src_ratio : 1.0) ; + increment = double_to_fp (float_increment) ; + + start_filter_index = double_to_fp (input_index * float_increment) ; + + calc_output_stereo (filter, state->channels, increment, start_filter_index, float_increment / filter->index_inc, data->data_out + filter->out_gen) ; + filter->out_gen += 2 ; + + /* Figure out the next index. */ + input_index += 1.0 / src_ratio ; + rem = fmod_one (input_index) ; + + filter->b_current = (filter->b_current + state->channels * psf_lrint (input_index - rem)) % filter->b_len ; + input_index = rem ; + } ; + + state->last_position = input_index ; + + /* Save current ratio rather then target ratio. */ + state->last_ratio = src_ratio ; + + data->input_frames_used = filter->in_used / state->channels ; + data->output_frames_gen = filter->out_gen / state->channels ; + + return SRC_ERR_NO_ERROR ; +} /* sinc_stereo_vari_process */ + +static inline void +calc_output_quad (SINC_FILTER *filter, int channels, increment_t increment, increment_t start_filter_index, double scale, float * output) +{ double fraction, left [4], right [4], icoeff ; + increment_t filter_index, max_filter_index ; + int data_index, coeff_count, indx ; + + /* Convert input parameters into fixed point. */ + max_filter_index = int_to_fp (filter->coeff_half_len) ; + + /* First apply the left half of the filter. */ + filter_index = start_filter_index ; + coeff_count = (max_filter_index - filter_index) / increment ; + filter_index = filter_index + coeff_count * increment ; + data_index = filter->b_current - channels * coeff_count ; + + if (data_index < 0) /* Avoid underflow access to filter->buffer. */ + { int steps = int_div_ceil (-data_index, 4) ; + /* If the assert triggers we would have to take care not to underflow/overflow */ + assert (steps <= int_div_ceil (filter_index, increment)) ; + filter_index -= increment * steps ; + data_index += steps * 4; + } + left [0] = left [1] = left [2] = left [3] = 0.0 ; + while (filter_index >= MAKE_INCREMENT_T (0)) + { fraction = fp_to_double (filter_index) ; + indx = fp_to_int (filter_index) ; + assert (indx >= 0 && indx + 1 < filter->coeff_half_len + 2) ; + icoeff = filter->coeffs [indx] + fraction * (filter->coeffs [indx + 1] - filter->coeffs [indx]) ; + assert (data_index >= 0 && data_index + 3 < filter->b_len) ; + assert (data_index + 3 < filter->b_end) ; + for (int ch = 0; ch < 4; ch++) + left [ch] += icoeff * filter->buffer [data_index + ch] ; + + filter_index -= increment ; + data_index = data_index + 4 ; + } ; + + /* Now apply the right half of the filter. */ + filter_index = increment - start_filter_index ; + coeff_count = (max_filter_index - filter_index) / increment ; + filter_index = filter_index + coeff_count * increment ; + data_index = filter->b_current + channels * (1 + coeff_count) ; + + right [0] = right [1] = right [2] = right [3] = 0.0 ; + do + { fraction = fp_to_double (filter_index) ; + indx = fp_to_int (filter_index) ; + assert (indx >= 0 && indx + 1 < filter->coeff_half_len + 2) ; + icoeff = filter->coeffs [indx] + fraction * (filter->coeffs [indx + 1] - filter->coeffs [indx]) ; + assert (data_index >= 0 && data_index + 3 < filter->b_len) ; + assert (data_index + 3 < filter->b_end) ; + for (int ch = 0; ch < 4; ch++) + right [ch] += icoeff * filter->buffer [data_index + ch] ; + + + filter_index -= increment ; + data_index = data_index - 4 ; + } + while (filter_index > MAKE_INCREMENT_T (0)) ; + + for (int ch = 0; ch < 4; ch++) + output [ch] = (float) (scale * (left [ch] + right [ch])) ; +} /* calc_output_quad */ + +SRC_ERROR +sinc_quad_vari_process (SRC_STATE *state, SRC_DATA *data) +{ SINC_FILTER *filter ; + double input_index, src_ratio, count, float_increment, terminate, rem ; + increment_t increment, start_filter_index ; + int half_filter_chan_len, samples_in_hand ; + + if (state->private_data == NULL) + return SRC_ERR_NO_PRIVATE ; + + filter = (SINC_FILTER*) state->private_data ; + + /* If there is not a problem, this will be optimised out. */ + if (sizeof (filter->buffer [0]) != sizeof (data->data_in [0])) + return SRC_ERR_SIZE_INCOMPATIBILITY ; + + filter->in_count = data->input_frames * state->channels ; + filter->out_count = data->output_frames * state->channels ; + filter->in_used = filter->out_gen = 0 ; + + src_ratio = state->last_ratio ; + + if (is_bad_src_ratio (src_ratio)) + return SRC_ERR_BAD_INTERNAL_STATE ; + + /* Check the sample rate ratio wrt the buffer len. */ + count = (filter->coeff_half_len + 2.0) / filter->index_inc ; + if (MIN (state->last_ratio, data->src_ratio) < 1.0) + count /= MIN (state->last_ratio, data->src_ratio) ; + + /* Maximum coefficientson either side of center point. */ + half_filter_chan_len = state->channels * (int) (psf_lrint (count) + 1) ; + + input_index = state->last_position ; + + rem = fmod_one (input_index) ; + filter->b_current = (filter->b_current + state->channels * psf_lrint (input_index - rem)) % filter->b_len ; + input_index = rem ; + + terminate = 1.0 / src_ratio + 1e-20 ; + + /* Main processing loop. */ + while (filter->out_gen < filter->out_count) + { + /* Need to reload buffer? */ + samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ; + + if (samples_in_hand <= half_filter_chan_len) + { if ((state->error = prepare_data (filter, state->channels, data, half_filter_chan_len)) != 0) + return state->error ; + + samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ; + if (samples_in_hand <= half_filter_chan_len) + break ; + } ; + + /* This is the termination condition. */ + if (filter->b_real_end >= 0) + { if (filter->b_current + input_index + terminate >= filter->b_real_end) + break ; + } ; + + if (filter->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > 1e-10) + src_ratio = state->last_ratio + filter->out_gen * (data->src_ratio - state->last_ratio) / filter->out_count ; + + float_increment = filter->index_inc * (src_ratio < 1.0 ? src_ratio : 1.0) ; + increment = double_to_fp (float_increment) ; + + start_filter_index = double_to_fp (input_index * float_increment) ; + + calc_output_quad (filter, state->channels, increment, start_filter_index, float_increment / filter->index_inc, data->data_out + filter->out_gen) ; + filter->out_gen += 4 ; + + /* Figure out the next index. */ + input_index += 1.0 / src_ratio ; + rem = fmod_one (input_index) ; + + filter->b_current = (filter->b_current + state->channels * psf_lrint (input_index - rem)) % filter->b_len ; + input_index = rem ; + } ; + + state->last_position = input_index ; + + /* Save current ratio rather then target ratio. */ + state->last_ratio = src_ratio ; + + data->input_frames_used = filter->in_used / state->channels ; + data->output_frames_gen = filter->out_gen / state->channels ; + + return SRC_ERR_NO_ERROR ; +} /* sinc_quad_vari_process */ + +static inline void +calc_output_hex (SINC_FILTER *filter, int channels, increment_t increment, increment_t start_filter_index, double scale, float * output) +{ double fraction, left [6], right [6], icoeff ; + increment_t filter_index, max_filter_index ; + int data_index, coeff_count, indx ; + + /* Convert input parameters into fixed point. */ + max_filter_index = int_to_fp (filter->coeff_half_len) ; + + /* First apply the left half of the filter. */ + filter_index = start_filter_index ; + coeff_count = (max_filter_index - filter_index) / increment ; + filter_index = filter_index + coeff_count * increment ; + data_index = filter->b_current - channels * coeff_count ; + + if (data_index < 0) /* Avoid underflow access to filter->buffer. */ + { int steps = int_div_ceil (-data_index, 6) ; + /* If the assert triggers we would have to take care not to underflow/overflow */ + assert (steps <= int_div_ceil (filter_index, increment)) ; + filter_index -= increment * steps ; + data_index += steps * 6; + } + left [0] = left [1] = left [2] = left [3] = left [4] = left [5] = 0.0 ; + while (filter_index >= MAKE_INCREMENT_T (0)) + { fraction = fp_to_double (filter_index) ; + indx = fp_to_int (filter_index) ; + assert (indx >= 0 && indx + 1 < filter->coeff_half_len + 2) ; + icoeff = filter->coeffs [indx] + fraction * (filter->coeffs [indx + 1] - filter->coeffs [indx]) ; + assert (data_index >= 0 && data_index + 5 < filter->b_len) ; + assert (data_index + 5 < filter->b_end) ; + for (int ch = 0; ch < 6; ch++) + left [ch] += icoeff * filter->buffer [data_index + ch] ; + + filter_index -= increment ; + data_index = data_index + 6 ; + } ; + + /* Now apply the right half of the filter. */ + filter_index = increment - start_filter_index ; + coeff_count = (max_filter_index - filter_index) / increment ; + filter_index = filter_index + coeff_count * increment ; + data_index = filter->b_current + channels * (1 + coeff_count) ; + + right [0] = right [1] = right [2] = right [3] = right [4] = right [5] = 0.0 ; + do + { fraction = fp_to_double (filter_index) ; + indx = fp_to_int (filter_index) ; + assert (indx >= 0 && indx + 1 < filter->coeff_half_len + 2) ; + icoeff = filter->coeffs [indx] + fraction * (filter->coeffs [indx + 1] - filter->coeffs [indx]) ; + assert (data_index >= 0 && data_index + 5 < filter->b_len) ; + assert (data_index + 5 < filter->b_end) ; + for (int ch = 0; ch < 6; ch++) + right [ch] += icoeff * filter->buffer [data_index + ch] ; + + filter_index -= increment ; + data_index = data_index - 6 ; + } + while (filter_index > MAKE_INCREMENT_T (0)) ; + + for (int ch = 0; ch < 6; ch++) + output [ch] = (float) (scale * (left [ch] + right [ch])) ; +} /* calc_output_hex */ + +SRC_ERROR +sinc_hex_vari_process (SRC_STATE *state, SRC_DATA *data) +{ SINC_FILTER *filter ; + double input_index, src_ratio, count, float_increment, terminate, rem ; + increment_t increment, start_filter_index ; + int half_filter_chan_len, samples_in_hand ; + + if (state->private_data == NULL) + return SRC_ERR_NO_PRIVATE ; + + filter = (SINC_FILTER*) state->private_data ; + + /* If there is not a problem, this will be optimised out. */ + if (sizeof (filter->buffer [0]) != sizeof (data->data_in [0])) + return SRC_ERR_SIZE_INCOMPATIBILITY ; + + filter->in_count = data->input_frames * state->channels ; + filter->out_count = data->output_frames * state->channels ; + filter->in_used = filter->out_gen = 0 ; + + src_ratio = state->last_ratio ; + + if (is_bad_src_ratio (src_ratio)) + return SRC_ERR_BAD_INTERNAL_STATE ; + + /* Check the sample rate ratio wrt the buffer len. */ + count = (filter->coeff_half_len + 2.0) / filter->index_inc ; + if (MIN (state->last_ratio, data->src_ratio) < 1.0) + count /= MIN (state->last_ratio, data->src_ratio) ; + + /* Maximum coefficientson either side of center point. */ + half_filter_chan_len = state->channels * (int) (psf_lrint (count) + 1) ; + + input_index = state->last_position ; + + rem = fmod_one (input_index) ; + filter->b_current = (filter->b_current + state->channels * psf_lrint (input_index - rem)) % filter->b_len ; + input_index = rem ; + + terminate = 1.0 / src_ratio + 1e-20 ; + + /* Main processing loop. */ + while (filter->out_gen < filter->out_count) + { + /* Need to reload buffer? */ + samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ; + + if (samples_in_hand <= half_filter_chan_len) + { if ((state->error = prepare_data (filter, state->channels, data, half_filter_chan_len)) != 0) + return state->error ; + + samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ; + if (samples_in_hand <= half_filter_chan_len) + break ; + } ; + + /* This is the termination condition. */ + if (filter->b_real_end >= 0) + { if (filter->b_current + input_index + terminate >= filter->b_real_end) + break ; + } ; + + if (filter->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > 1e-10) + src_ratio = state->last_ratio + filter->out_gen * (data->src_ratio - state->last_ratio) / filter->out_count ; + + float_increment = filter->index_inc * (src_ratio < 1.0 ? src_ratio : 1.0) ; + increment = double_to_fp (float_increment) ; + + start_filter_index = double_to_fp (input_index * float_increment) ; + + calc_output_hex (filter, state->channels, increment, start_filter_index, float_increment / filter->index_inc, data->data_out + filter->out_gen) ; + filter->out_gen += 6 ; + + /* Figure out the next index. */ + input_index += 1.0 / src_ratio ; + rem = fmod_one (input_index) ; + + filter->b_current = (filter->b_current + state->channels * psf_lrint (input_index - rem)) % filter->b_len ; + input_index = rem ; + } ; + + state->last_position = input_index ; + + /* Save current ratio rather then target ratio. */ + state->last_ratio = src_ratio ; + + data->input_frames_used = filter->in_used / state->channels ; + data->output_frames_gen = filter->out_gen / state->channels ; + + return SRC_ERR_NO_ERROR ; +} /* sinc_hex_vari_process */ + +static inline void +calc_output_multi (SINC_FILTER *filter, increment_t increment, increment_t start_filter_index, int channels, double scale, float * output) +{ double fraction, icoeff ; + /* The following line is 1999 ISO Standard C. If your compiler complains, get a better compiler. */ + double *left, *right ; + increment_t filter_index, max_filter_index ; + int data_index, coeff_count, indx ; + + left = filter->left_calc ; + right = filter->right_calc ; + + /* Convert input parameters into fixed point. */ + max_filter_index = int_to_fp (filter->coeff_half_len) ; + + /* First apply the left half of the filter. */ + filter_index = start_filter_index ; + coeff_count = (max_filter_index - filter_index) / increment ; + filter_index = filter_index + coeff_count * increment ; + data_index = filter->b_current - channels * coeff_count ; + + if (data_index < 0) /* Avoid underflow access to filter->buffer. */ + { int steps = int_div_ceil (-data_index, channels) ; + /* If the assert triggers we would have to take care not to underflow/overflow */ + assert (steps <= int_div_ceil (filter_index, increment)) ; + filter_index -= increment * steps ; + data_index += steps * channels ; + } + + memset (left, 0, sizeof (left [0]) * channels) ; + + while (filter_index >= MAKE_INCREMENT_T (0)) + { fraction = fp_to_double (filter_index) ; + indx = fp_to_int (filter_index) ; + assert (indx >= 0 && indx + 1 < filter->coeff_half_len + 2) ; + icoeff = filter->coeffs [indx] + fraction * (filter->coeffs [indx + 1] - filter->coeffs [indx]) ; + + assert (data_index >= 0 && data_index + channels - 1 < filter->b_len) ; + assert (data_index + channels - 1 < filter->b_end) ; + for (int ch = 0; ch < channels; ch++) + left [ch] += icoeff * filter->buffer [data_index + ch] ; + + filter_index -= increment ; + data_index = data_index + channels ; + } ; + + /* Now apply the right half of the filter. */ + filter_index = increment - start_filter_index ; + coeff_count = (max_filter_index - filter_index) / increment ; + filter_index = filter_index + coeff_count * increment ; + data_index = filter->b_current + channels * (1 + coeff_count) ; + + memset (right, 0, sizeof (right [0]) * channels) ; + do + { fraction = fp_to_double (filter_index) ; + indx = fp_to_int (filter_index) ; + assert (indx >= 0 && indx + 1 < filter->coeff_half_len + 2) ; + icoeff = filter->coeffs [indx] + fraction * (filter->coeffs [indx + 1] - filter->coeffs [indx]) ; + assert (data_index >= 0 && data_index + channels - 1 < filter->b_len) ; + assert (data_index + channels - 1 < filter->b_end) ; + for (int ch = 0; ch < channels; ch++) + right [ch] += icoeff * filter->buffer [data_index + ch] ; + + filter_index -= increment ; + data_index = data_index - channels ; + } + while (filter_index > MAKE_INCREMENT_T (0)) ; + + for(int ch = 0; ch < channels; ch++) + output [ch] = (float) (scale * (left [ch] + right [ch])) ; + + return ; +} /* calc_output_multi */ + +static SRC_ERROR +sinc_multichan_vari_process (SRC_STATE *state, SRC_DATA *data) +{ SINC_FILTER *filter ; + double input_index, src_ratio, count, float_increment, terminate, rem ; + increment_t increment, start_filter_index ; + int half_filter_chan_len, samples_in_hand ; + + if (state->private_data == NULL) + return SRC_ERR_NO_PRIVATE ; + + filter = (SINC_FILTER*) state->private_data ; + + /* If there is not a problem, this will be optimised out. */ + if (sizeof (filter->buffer [0]) != sizeof (data->data_in [0])) + return SRC_ERR_SIZE_INCOMPATIBILITY ; + + filter->in_count = data->input_frames * state->channels ; + filter->out_count = data->output_frames * state->channels ; + filter->in_used = filter->out_gen = 0 ; + + src_ratio = state->last_ratio ; + + if (is_bad_src_ratio (src_ratio)) + return SRC_ERR_BAD_INTERNAL_STATE ; + + /* Check the sample rate ratio wrt the buffer len. */ + count = (filter->coeff_half_len + 2.0) / filter->index_inc ; + if (MIN (state->last_ratio, data->src_ratio) < 1.0) + count /= MIN (state->last_ratio, data->src_ratio) ; + + /* Maximum coefficientson either side of center point. */ + half_filter_chan_len = state->channels * (int) (psf_lrint (count) + 1) ; + + input_index = state->last_position ; + + rem = fmod_one (input_index) ; + filter->b_current = (filter->b_current + state->channels * psf_lrint (input_index - rem)) % filter->b_len ; + input_index = rem ; + + terminate = 1.0 / src_ratio + 1e-20 ; + + /* Main processing loop. */ + while (filter->out_gen < filter->out_count) + { + /* Need to reload buffer? */ + samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ; + + if (samples_in_hand <= half_filter_chan_len) + { if ((state->error = prepare_data (filter, state->channels, data, half_filter_chan_len)) != 0) + return state->error ; + + samples_in_hand = (filter->b_end - filter->b_current + filter->b_len) % filter->b_len ; + if (samples_in_hand <= half_filter_chan_len) + break ; + } ; + + /* This is the termination condition. */ + if (filter->b_real_end >= 0) + { if (filter->b_current + input_index + terminate >= filter->b_real_end) + break ; + } ; + + if (filter->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > 1e-10) + src_ratio = state->last_ratio + filter->out_gen * (data->src_ratio - state->last_ratio) / filter->out_count ; + + float_increment = filter->index_inc * (src_ratio < 1.0 ? src_ratio : 1.0) ; + increment = double_to_fp (float_increment) ; + + start_filter_index = double_to_fp (input_index * float_increment) ; + + calc_output_multi (filter, increment, start_filter_index, state->channels, float_increment / filter->index_inc, data->data_out + filter->out_gen) ; + filter->out_gen += state->channels ; + + /* Figure out the next index. */ + input_index += 1.0 / src_ratio ; + rem = fmod_one (input_index) ; + + filter->b_current = (filter->b_current + state->channels * psf_lrint (input_index - rem)) % filter->b_len ; + input_index = rem ; + } ; + + state->last_position = input_index ; + + /* Save current ratio rather then target ratio. */ + state->last_ratio = src_ratio ; + + data->input_frames_used = filter->in_used / state->channels ; + data->output_frames_gen = filter->out_gen / state->channels ; + + return SRC_ERR_NO_ERROR ; +} /* sinc_multichan_vari_process */ + +/*---------------------------------------------------------------------------------------- +*/ + +static SRC_ERROR +prepare_data (SINC_FILTER *filter, int channels, SRC_DATA *data, int half_filter_chan_len) +{ int len = 0 ; + + if (filter->b_real_end >= 0) + return SRC_ERR_NO_ERROR ; /* Should be terminating. Just return. */ + + if (data->data_in == NULL) + return SRC_ERR_NO_ERROR ; + + if (filter->b_current == 0) + { /* Initial state. Set up zeros at the start of the buffer and + ** then load new data after that. + */ + len = filter->b_len - 2 * half_filter_chan_len ; + + filter->b_current = filter->b_end = half_filter_chan_len ; + } + else if (filter->b_end + half_filter_chan_len + channels < filter->b_len) + { /* Load data at current end position. */ + len = MAX (filter->b_len - filter->b_current - half_filter_chan_len, 0) ; + } + else + { /* Move data at end of buffer back to the start of the buffer. */ + len = filter->b_end - filter->b_current ; + memmove (filter->buffer, filter->buffer + filter->b_current - half_filter_chan_len, + (half_filter_chan_len + len) * sizeof (filter->buffer [0])) ; + + filter->b_current = half_filter_chan_len ; + filter->b_end = filter->b_current + len ; + + /* Now load data at current end of buffer. */ + len = MAX (filter->b_len - filter->b_current - half_filter_chan_len, 0) ; + } ; + + len = MIN ((int) (filter->in_count - filter->in_used), len) ; + len -= (len % channels) ; + + if (len < 0 || filter->b_end + len > filter->b_len) + return SRC_ERR_SINC_PREPARE_DATA_BAD_LEN ; + + memcpy (filter->buffer + filter->b_end, data->data_in + filter->in_used, + len * sizeof (filter->buffer [0])) ; + + filter->b_end += len ; + filter->in_used += len ; + + if (filter->in_used == filter->in_count && + filter->b_end - filter->b_current < 2 * half_filter_chan_len && data->end_of_input) + { /* Handle the case where all data in the current buffer has been + ** consumed and this is the last buffer. + */ + + if (filter->b_len - filter->b_end < half_filter_chan_len + 5) + { /* If necessary, move data down to the start of the buffer. */ + len = filter->b_end - filter->b_current ; + memmove (filter->buffer, filter->buffer + filter->b_current - half_filter_chan_len, + (half_filter_chan_len + len) * sizeof (filter->buffer [0])) ; + + filter->b_current = half_filter_chan_len ; + filter->b_end = filter->b_current + len ; + } ; + + filter->b_real_end = filter->b_end ; + len = half_filter_chan_len + 5 ; + + if (len < 0 || filter->b_end + len > filter->b_len) + len = filter->b_len - filter->b_end ; + + memset (filter->buffer + filter->b_end, 0, len * sizeof (filter->buffer [0])) ; + filter->b_end += len ; + } ; + + return SRC_ERR_NO_ERROR ; +} /* prepare_data */ + +static void +sinc_close (SRC_STATE *state) +{ + if (state) + { + SINC_FILTER *sinc = (SINC_FILTER *) state->private_data ; + if (sinc) + { + if (sinc->buffer) + { + free (sinc->buffer) ; + sinc->buffer = NULL ; + } + free (sinc) ; + sinc = NULL ; + } + free (state) ; + state = NULL ; + } +} /* sinc_close */ diff --git a/source/engine/thirdparty/libsamplerate/src/src_zoh.c b/source/engine/thirdparty/libsamplerate/src/src_zoh.c new file mode 100644 index 0000000..dc975bc --- /dev/null +++ b/source/engine/thirdparty/libsamplerate/src/src_zoh.c @@ -0,0 +1,290 @@ +/* +** Copyright (c) 2002-2021, Erik de Castro Lopo +** All rights reserved. +** +** This code is released under 2-clause BSD license. Please see the +** file at : https://github.com/libsndfile/libsamplerate/blob/master/COPYING +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include + +#include "common.h" + +static SRC_ERROR zoh_vari_process (SRC_STATE *state, SRC_DATA *data) ; +static void zoh_reset (SRC_STATE *state) ; +static SRC_STATE *zoh_copy (SRC_STATE *state) ; +static void zoh_close (SRC_STATE *state) ; + +/*======================================================================================== +*/ + +#define ZOH_MAGIC_MARKER MAKE_MAGIC ('s', 'r', 'c', 'z', 'o', 'h') + +typedef struct +{ int zoh_magic_marker ; + int dirty ; + long in_count, in_used ; + long out_count, out_gen ; + float *last_value ; +} ZOH_DATA ; + +static SRC_STATE_VT zoh_state_vt = +{ + zoh_vari_process, + zoh_vari_process, + zoh_reset, + zoh_copy, + zoh_close +} ; + +/*---------------------------------------------------------------------------------------- +*/ + +static SRC_ERROR +zoh_vari_process (SRC_STATE *state, SRC_DATA *data) +{ ZOH_DATA *priv ; + double src_ratio, input_index, rem ; + int ch ; + + if (data->input_frames <= 0) + return SRC_ERR_NO_ERROR ; + + if (state->private_data == NULL) + return SRC_ERR_NO_PRIVATE ; + + priv = (ZOH_DATA*) state->private_data ; + + if (!priv->dirty) + { /* If we have just been reset, set the last_value data. */ + for (ch = 0 ; ch < state->channels ; ch++) + priv->last_value [ch] = data->data_in [ch] ; + priv->dirty = 1 ; + } ; + + priv->in_count = data->input_frames * state->channels ; + priv->out_count = data->output_frames * state->channels ; + priv->in_used = priv->out_gen = 0 ; + + src_ratio = state->last_ratio ; + + if (is_bad_src_ratio (src_ratio)) + return SRC_ERR_BAD_INTERNAL_STATE ; + + input_index = state->last_position ; + + /* Calculate samples before first sample in input array. */ + while (input_index < 1.0 && priv->out_gen < priv->out_count) + { + if (priv->in_used + state->channels * input_index >= priv->in_count) + break ; + + if (priv->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF) + src_ratio = state->last_ratio + priv->out_gen * (data->src_ratio - state->last_ratio) / priv->out_count ; + + for (ch = 0 ; ch < state->channels ; ch++) + { data->data_out [priv->out_gen] = priv->last_value [ch] ; + priv->out_gen ++ ; + } ; + + /* Figure out the next index. */ + input_index += 1.0 / src_ratio ; + } ; + + rem = fmod_one (input_index) ; + priv->in_used += state->channels * psf_lrint (input_index - rem) ; + input_index = rem ; + + /* Main processing loop. */ + while (priv->out_gen < priv->out_count && priv->in_used + state->channels * input_index <= priv->in_count) + { + if (priv->out_count > 0 && fabs (state->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF) + src_ratio = state->last_ratio + priv->out_gen * (data->src_ratio - state->last_ratio) / priv->out_count ; + + for (ch = 0 ; ch < state->channels ; ch++) + { data->data_out [priv->out_gen] = data->data_in [priv->in_used - state->channels + ch] ; + priv->out_gen ++ ; + } ; + + /* Figure out the next index. */ + input_index += 1.0 / src_ratio ; + rem = fmod_one (input_index) ; + + priv->in_used += state->channels * psf_lrint (input_index - rem) ; + input_index = rem ; + } ; + + if (priv->in_used > priv->in_count) + { input_index += (priv->in_used - priv->in_count) / state->channels ; + priv->in_used = priv->in_count ; + } ; + + state->last_position = input_index ; + + if (priv->in_used > 0) + for (ch = 0 ; ch < state->channels ; ch++) + priv->last_value [ch] = data->data_in [priv->in_used - state->channels + ch] ; + + /* Save current ratio rather then target ratio. */ + state->last_ratio = src_ratio ; + + data->input_frames_used = priv->in_used / state->channels ; + data->output_frames_gen = priv->out_gen / state->channels ; + + return SRC_ERR_NO_ERROR ; +} /* zoh_vari_process */ + +/*------------------------------------------------------------------------------ +*/ + +LIBSAMPLERATE_DLL_PRIVATE const char* +zoh_get_name (int src_enum) +{ + if (src_enum == SRC_ZERO_ORDER_HOLD) + return "ZOH Interpolator" ; + + return NULL ; +} /* zoh_get_name */ + +LIBSAMPLERATE_DLL_PRIVATE const char* +zoh_get_description (int src_enum) +{ + if (src_enum == SRC_ZERO_ORDER_HOLD) + return "Zero order hold interpolator, very fast, poor quality." ; + + return NULL ; +} /* zoh_get_descrition */ + +static ZOH_DATA * +zoh_data_new (int channels) +{ + assert (channels > 0) ; + + ZOH_DATA *priv = (ZOH_DATA *) calloc (1, sizeof (ZOH_DATA)) ; + if (priv) + { + priv->zoh_magic_marker = ZOH_MAGIC_MARKER ; + priv->last_value = (float *) calloc (channels, sizeof (float)) ; + if (!priv->last_value) + { + free (priv) ; + priv = NULL ; + } + } + + return priv ; +} + +LIBSAMPLERATE_DLL_PRIVATE SRC_STATE * +zoh_state_new (int channels, SRC_ERROR *error) +{ + assert (channels > 0) ; + assert (error != NULL) ; + + SRC_STATE *state = (SRC_STATE *) calloc (1, sizeof (SRC_STATE)) ; + if (!state) + { + *error = SRC_ERR_MALLOC_FAILED ; + return NULL ; + } + + state->channels = channels ; + state->mode = SRC_MODE_PROCESS ; + + state->private_data = zoh_data_new (state->channels) ; + if (!state->private_data) + { + free (state) ; + *error = SRC_ERR_MALLOC_FAILED ; + return NULL ; + } + + state->vt = &zoh_state_vt ; + + zoh_reset (state) ; + + *error = SRC_ERR_NO_ERROR ; + + return state ; +} + +/*=================================================================================== +*/ + +static void +zoh_reset (SRC_STATE *state) +{ ZOH_DATA *priv ; + + priv = (ZOH_DATA*) state->private_data ; + if (priv == NULL) + return ; + + priv->dirty = 0 ; + memset (priv->last_value, 0, sizeof (float) * state->channels) ; + + return ; +} /* zoh_reset */ + +static SRC_STATE * +zoh_copy (SRC_STATE *state) +{ + assert (state != NULL) ; + + if (state->private_data == NULL) + return NULL ; + + SRC_STATE *to = (SRC_STATE *) calloc (1, sizeof (SRC_STATE)) ; + if (!to) + return NULL ; + memcpy (to, state, sizeof (SRC_STATE)) ; + + ZOH_DATA* from_priv = (ZOH_DATA*) state->private_data ; + ZOH_DATA *to_priv = (ZOH_DATA *) calloc (1, sizeof (ZOH_DATA)) ; + if (!to_priv) + { + free (to) ; + return NULL ; + } + + memcpy (to_priv, from_priv, sizeof (ZOH_DATA)) ; + to_priv->last_value = (float *) malloc (sizeof (float) * state->channels) ; + if (!to_priv->last_value) + { + free (to) ; + free (to_priv) ; + return NULL ; + } + memcpy (to_priv->last_value, from_priv->last_value, sizeof (float) * state->channels) ; + + to->private_data = to_priv ; + + return to ; +} /* zoh_copy */ + +static void +zoh_close (SRC_STATE *state) +{ + if (state) + { + ZOH_DATA *zoh = (ZOH_DATA *) state->private_data ; + if (zoh) + { + if (zoh->last_value) + { + free (zoh->last_value) ; + zoh->last_value = NULL ; + } + free (zoh) ; + zoh = NULL ; + } + free (state) ; + state = NULL ; + } +} /* zoh_close */ diff --git a/source/engine/thirdparty/par/par_bluenoise.h b/source/engine/thirdparty/par/par_bluenoise.h new file mode 100644 index 0000000..7f81008 --- /dev/null +++ b/source/engine/thirdparty/par/par_bluenoise.h @@ -0,0 +1,563 @@ +// BLUENOISE :: https://github.com/prideout/par +// Generator for infinite 2D point sequences using Recursive Wang Tiles. +// +// In addition to this source code, you'll need to download one of the following +// tilesets, the first being 2 MB while the other is 257 KB. The latter cheats +// by referencing the point sequence from the first tile for all 8 tiles. This +// obviously produces poor results, but in many contexts, it isn't noticeable. +// +// https://prideout.net/assets/bluenoise.bin +// https://prideout.net/assets/bluenoise.trimmed.bin +// +// The code herein is an implementation of the algorithm described in: +// +// Recursive Wang Tiles for Real-Time Blue Noise +// Johannes Kopf, Daniel Cohen-Or, Oliver Deussen, Dani Lischinski +// ACM Transactions on Graphics 25, 3 (Proc. SIGGRAPH 2006) +// +// If you use this software for research purposes, please cite the above paper +// in any resulting publication. +// +// EXAMPLE +// +// Generate point samples whose density is guided by a 512x512 grayscale image: +// +// int npoints; +// float* points; +// int maxpoints = 1e6; +// float density = 30000; +// par_bluenoise_context* ctx; +// ctx = par_bluenoise_from_file("bluenoise.bin", maxpoints); +// par_bluenoise_density_from_gray(ctx, source_pixels, 512, 512, 1); +// points = par_bluenoise_generate(ctx, density, &npoints); +// ... Draw points here. Each point is a three-tuple of (X Y RANK). +// par_bluenoise_free(ctx); +// +// Distributed under the MIT License, see bottom of file. + +#ifndef PAR_BLUENOISE_H +#define PAR_BLUENOISE_H + +#ifdef __cplusplus +extern "C" { +#endif + +// ----------------------------------------------------------------------------- +// BEGIN PUBLIC API +// ----------------------------------------------------------------------------- + +typedef unsigned char par_byte; + +// Encapsulates a tile set and an optional density function. +typedef struct par_bluenoise_context_s par_bluenoise_context; + +// Creates a bluenoise context using the given tileset. The first argument is +// the file path the bin file. The second argument is the maximum number of +// points that you expect to ever be generated. +par_bluenoise_context* par_bluenoise_from_file(char const* path, int maxpts); + +// Creates a bluenoise context using the given tileset. The first and second +// arguments describe a memory buffer containing the contents of the bin file. +// The third argument is the maximum number of points that you expect to ever +// be generated. +par_bluenoise_context* par_bluenoise_from_buffer( + par_byte const* buffer, int nbytes, int maxpts); + +// Sets up a scissoring rectangle using the given lower-left and upper-right +// coordinates. By default the scissor encompasses [-0.5, -0.5] - [0.5, 0.5], +// which is the entire sampling domain for the two "generate" methods. +void par_bluenoise_set_viewport( + par_bluenoise_context*, float left, float bottom, float right, float top); + +// Sets up a reference window size. The only purpose of this is to ensure +// that apparent density remains constant when the window gets resized. +// Clients should call this *before* calling par_bluenoise_set_viewport. +void par_bluenoise_set_window(par_bluenoise_context*, int width, int height); + +// Frees all memory associated with the given bluenoise context. +void par_bluenoise_free(par_bluenoise_context* ctx); + +// Copies a grayscale image into the bluenoise context to guide point density. +// Darker regions generate a higher number of points. The given bytes-per-pixel +// value is the stride between pixels. +void par_bluenoise_density_from_gray(par_bluenoise_context* ctx, + const unsigned char* pixels, int width, int height, int bpp); + +// Creates a binary mask to guide point density. The given bytes-per-pixel +// value is the stride between pixels, which must be 4 or less. +void par_bluenoise_density_from_color(par_bluenoise_context* ctx, + const unsigned char* pixels, int width, int height, int bpp, + unsigned int background_color, int invert); + +// Generates samples using Recursive Wang Tiles. This is really fast! +// The returned pointer is a list of three-tuples, where XY are in [-0.5, +0.5] +// and Z is a rank value that can be used to create a progressive ordering. +// The caller should not free the returned pointer. +float* par_bluenoise_generate( + par_bluenoise_context* ctx, float density, int* npts); + +// Generates an ordered sequence of tuples with the specified sequence length. +// This is slower than the other "generate" method because it uses a dumb +// backtracking method to determine a reasonable density value, and it +// automatically sorts the output by rank. The dims argument must be 2 or more; +// it represents the desired stride (in floats) between consecutive verts in the +// returned data buffer. +float* par_bluenoise_generate_exact( + par_bluenoise_context* ctx, int npts, int dims); + +// Performs an in-place sort of 3-tuples, based on the 3rd component, then +// replaces the 3rd component with an index. +void par_bluenoise_sort_by_rank(float* pts, int npts); + +#ifndef PAR_PI +#define PAR_PI (3.14159265359) +#define PAR_MIN(a, b) (a > b ? b : a) +#define PAR_MAX(a, b) (a > b ? a : b) +#define PAR_CLAMP(v, lo, hi) PAR_MAX(lo, PAR_MIN(hi, v)) +#define PAR_SWAP(T, A, B) { T tmp = B; B = A; A = tmp; } +#define PAR_SQR(a) ((a) * (a)) +#endif + +#ifndef PAR_MALLOC +#define PAR_MALLOC(T, N) ((T*) malloc(N * sizeof(T))) +#define PAR_CALLOC(T, N) ((T*) calloc(N * sizeof(T), 1)) +#define PAR_REALLOC(T, BUF, N) ((T*) realloc(BUF, sizeof(T) * (N))) +#define PAR_FREE(BUF) free(BUF) +#endif + +#ifdef __cplusplus +} +#endif + +// ----------------------------------------------------------------------------- +// END PUBLIC API +// ----------------------------------------------------------------------------- + +#ifdef PAR_BLUENOISE_IMPLEMENTATION +#include +#include +#include +#include +#include + +#define PAR_MINI(a, b) ((a < b) ? a : b) +#define PAR_MAXI(a, b) ((a > b) ? a : b) + +typedef struct { + float x; + float y; +} par_vec2; + +typedef struct { + float x; + float y; + float rank; +} par_vec3; + +typedef struct { + int n, e, s, w; + int nsubtiles, nsubdivs, npoints, nsubpts; + int** subdivs; + par_vec2* points; + par_vec2* subpts; +} par_tile; + +struct par_bluenoise_context_s { + par_vec3* points; + par_tile* tiles; + float global_density; + float left, bottom, right, top; + int ntiles, nsubtiles, nsubdivs; + int npoints; + int maxpoints; + int density_width; + int density_height; + unsigned char* density; + float mag; + int window_width; + int window_height; + int abridged; +}; + +static float sample_density(par_bluenoise_context* ctx, float x, float y) +{ + unsigned char* density = ctx->density; + if (!density) { + return 1; + } + int width = ctx->density_width; + int height = ctx->density_height; + y = 1 - y; + x -= 0.5; + y -= 0.5; + float tx = x * PAR_MAXI(width, height); + float ty = y * PAR_MAXI(width, height); + x += 0.5; + y += 0.5; + tx += width / 2; + ty += height / 2; + int ix = PAR_CLAMP((int) tx, 0, width - 2); + int iy = PAR_CLAMP((int) ty, 0, height - 2); + return density[iy * width + ix] / 255.0f; +} + +static void recurse_tile( + par_bluenoise_context* ctx, par_tile* tile, float x, float y, int level) +{ + float left = ctx->left, right = ctx->right; + float top = ctx->top, bottom = ctx->bottom; + float mag = ctx->mag; + float tileSize = 1.f / powf(ctx->nsubtiles, level); + if (x + tileSize < left || x > right || y + tileSize < bottom || y > top) { + return; + } + float depth = powf(ctx->nsubtiles, 2 * level); + float threshold = mag / depth * ctx->global_density - tile->npoints; + int ntests = PAR_MINI(tile->nsubpts, threshold); + float factor = 1.f / mag * depth / ctx->global_density; + for (int i = 0; i < ntests; i++) { + float px = x + tile->subpts[i].x * tileSize; + float py = y + tile->subpts[i].y * tileSize; + if (px < left || px > right || py < bottom || py > top) { + continue; + } + if (sample_density(ctx, px, py) < (i + tile->npoints) * factor) { + continue; + } + ctx->points[ctx->npoints].x = px - 0.5; + ctx->points[ctx->npoints].y = py - 0.5; + ctx->points[ctx->npoints].rank = (level + 1) + i * factor; + ctx->npoints++; + if (ctx->npoints >= ctx->maxpoints) { + return; + } + } + const float scale = tileSize / ctx->nsubtiles; + if (threshold <= tile->nsubpts) { + return; + } + level++; + for (int ty = 0; ty < ctx->nsubtiles; ty++) { + for (int tx = 0; tx < ctx->nsubtiles; tx++) { + int tileIndex = tile->subdivs[0][ty * ctx->nsubtiles + tx]; + par_tile* subtile = &ctx->tiles[tileIndex]; + recurse_tile(ctx, subtile, x + tx * scale, y + ty * scale, level); + } + } +} + +void par_bluenoise_set_window(par_bluenoise_context* ctx, int width, int height) +{ + ctx->window_width = width; + ctx->window_height = height; +} + +void par_bluenoise_set_viewport(par_bluenoise_context* ctx, float left, + float bottom, float right, float top) +{ + // Transform [-.5, +.5] to [0, 1] + left = ctx->left = left + 0.5; + right = ctx->right = right + 0.5; + bottom = ctx->bottom = bottom + 0.5; + top = ctx->top = top + 0.5; + + // Determine magnification factor BEFORE clamping. + float scale = 1000 * (top - bottom) / ctx->window_height; + ctx->mag = powf(scale, -2); + + // The density function is only sampled in [0, +1]. + ctx->left = PAR_CLAMP(left, 0, 1); + ctx->right = PAR_CLAMP(right, 0, 1); + ctx->bottom = PAR_CLAMP(bottom, 0, 1); + ctx->top = PAR_CLAMP(top, 0, 1); +} + +float* par_bluenoise_generate( + par_bluenoise_context* ctx, float density, int* npts) +{ + ctx->global_density = density; + ctx->npoints = 0; + float left = ctx->left; + float right = ctx->right; + float bottom = ctx->bottom; + float top = ctx->top; + float mag = ctx->mag; + + int ntests = PAR_MINI(ctx->tiles[0].npoints, mag * ctx->global_density); + float factor = 1.f / mag / ctx->global_density; + for (int i = 0; i < ntests; i++) { + float px = ctx->tiles[0].points[i].x; + float py = ctx->tiles[0].points[i].y; + if (px < left || px > right || py < bottom || py > top) { + continue; + } + if (sample_density(ctx, px, py) < (i + 1) * factor) { + continue; + } + ctx->points[ctx->npoints].x = px - 0.5; + ctx->points[ctx->npoints].y = py - 0.5; + ctx->points[ctx->npoints].rank = i * factor; + ctx->npoints++; + if (ctx->npoints >= ctx->maxpoints) { + break; + } + } + recurse_tile(ctx, &ctx->tiles[0], 0, 0, 0); + *npts = ctx->npoints; + return &ctx->points->x; +} + +#define freadi() \ + *((int*) ptr); \ + ptr += sizeof(int) + +#define freadf() \ + *((float*) ptr); \ + ptr += sizeof(float) + +static par_bluenoise_context* par_bluenoise_create( + char const* filepath, int nbytes, int maxpts) +{ + par_bluenoise_context* ctx = PAR_MALLOC(par_bluenoise_context, 1); + ctx->maxpoints = maxpts; + ctx->points = PAR_MALLOC(par_vec3, maxpts); + ctx->density = 0; + ctx->abridged = 0; + par_bluenoise_set_window(ctx, 1024, 768); + par_bluenoise_set_viewport(ctx, -.5, -.5, .5, .5); + + char* buf = 0; + if (nbytes == 0) { + FILE* fin = fopen(filepath, "rb"); + assert(fin); + fseek(fin, 0, SEEK_END); + nbytes = (int) ftell(fin); + fseek(fin, 0, SEEK_SET); + buf = PAR_MALLOC(char, nbytes); + int consumed = (int) fread(buf, nbytes, 1, fin); + assert(consumed == 1); + fclose(fin); + } + + char const* ptr = buf ? buf : filepath; + int ntiles = ctx->ntiles = freadi(); + int nsubtiles = ctx->nsubtiles = freadi(); + int nsubdivs = ctx->nsubdivs = freadi(); + par_tile* tiles = ctx->tiles = PAR_MALLOC(par_tile, ntiles); + for (int i = 0; i < ntiles; i++) { + tiles[i].n = freadi(); + tiles[i].e = freadi(); + tiles[i].s = freadi(); + tiles[i].w = freadi(); + tiles[i].subdivs = PAR_MALLOC(int*, nsubdivs); + for (int j = 0; j < nsubdivs; j++) { + int* subdiv = PAR_MALLOC(int, PAR_SQR(nsubtiles)); + for (int k = 0; k < PAR_SQR(nsubtiles); k++) { + subdiv[k] = freadi(); + } + tiles[i].subdivs[j] = subdiv; + } + tiles[i].npoints = freadi(); + tiles[i].points = PAR_MALLOC(par_vec2, tiles[i].npoints); + for (int j = 0; j < tiles[i].npoints; j++) { + tiles[i].points[j].x = freadf(); + tiles[i].points[j].y = freadf(); + } + tiles[i].nsubpts = freadi(); + tiles[i].subpts = PAR_MALLOC(par_vec2, tiles[i].nsubpts); + for (int j = 0; j < tiles[i].nsubpts; j++) { + tiles[i].subpts[j].x = freadf(); + tiles[i].subpts[j].y = freadf(); + } + + // The following hack allows for an optimization whereby + // the first tile's point set is re-used for every other tile. + // This goes against the entire purpose of Recursive Wang Tiles, + // but in many applications the qualatitive loss is not + // observable, and the footprint savings are huge (10x). + + if (tiles[i].npoints == 0) { + ctx->abridged = 1; + tiles[i].npoints = tiles[0].npoints; + tiles[i].points = tiles[0].points; + tiles[i].nsubpts = tiles[0].nsubpts; + tiles[i].subpts = tiles[0].subpts; + } + } + free(buf); + return ctx; +} + +par_bluenoise_context* par_bluenoise_from_file(char const* path, int maxpts) +{ + return par_bluenoise_create(path, 0, maxpts); +} + +par_bluenoise_context* par_bluenoise_from_buffer( + par_byte const* buffer, int nbytes, int maxpts) +{ + return par_bluenoise_create((char const*) buffer, nbytes, maxpts); +} + +void par_bluenoise_density_from_gray(par_bluenoise_context* ctx, + const unsigned char* pixels, int width, int height, int bpp) +{ + ctx->density_width = width; + ctx->density_height = height; + ctx->density = PAR_MALLOC(unsigned char, width * height); + unsigned char* dst = ctx->density; + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + *dst++ = 255 - (*pixels); + pixels += bpp; + } + } +} + +void par_bluenoise_density_from_color(par_bluenoise_context* ctx, + const unsigned char* pixels, int width, int height, int bpp, + unsigned int background_color, int invert) +{ + unsigned int bkgd = background_color; + ctx->density_width = width; + ctx->density_height = height; + ctx->density = PAR_MALLOC(unsigned char, width * height); + unsigned char* dst = ctx->density; + unsigned int mask = 0x000000ffu; + if (bpp > 1) { + mask |= 0x0000ff00u; + } + if (bpp > 2) { + mask |= 0x00ff0000u; + } + if (bpp > 3) { + mask |= 0xff000000u; + } + assert(bpp <= 4); + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + unsigned int val = (*((unsigned int*) pixels)) & mask; + val = invert ? (val == bkgd) : (val != bkgd); + *dst++ = val ? 255 : 0; + pixels += bpp; + } + } +} + +void par_bluenoise_free(par_bluenoise_context* ctx) +{ + free(ctx->points); + for (int t = 0; t < ctx->ntiles; t++) { + for (int s = 0; s < ctx->nsubdivs; s++) { + free(ctx->tiles[t].subdivs[s]); + } + free(ctx->tiles[t].subdivs); + if (t == 0 || !ctx->abridged) { + free(ctx->tiles[t].points); + free(ctx->tiles[t].subpts); + } + } + free(ctx->tiles); + free(ctx->density); +} + +int cmp(const void* a, const void* b) +{ + const par_vec3* v1 = (const par_vec3*) a; + const par_vec3* v2 = (const par_vec3*) b; + if (v1->rank < v2->rank) { + return -1; + } + if (v1->rank > v2->rank) { + return 1; + } + return 0; +} + +void par_bluenoise_sort_by_rank(float* floats, int npts) +{ + par_vec3* vecs = (par_vec3*) floats; + qsort(vecs, npts, sizeof(vecs[0]), cmp); + for (int i = 0; i < npts; i++) { + vecs[i].rank = i; + } +} + +float* par_bluenoise_generate_exact( + par_bluenoise_context* ctx, int npts, int stride) +{ + assert(stride >= 2); + int maxpoints = npts * 2; + if (ctx->maxpoints < maxpoints) { + free(ctx->points); + ctx->maxpoints = maxpoints; + ctx->points = PAR_MALLOC(par_vec3, maxpoints); + } + int ngenerated = 0; + int nprevious = 0; + int ndesired = npts; + float density = 2048; + while (ngenerated < ndesired) { + par_bluenoise_generate(ctx, density, &ngenerated); + + // Might be paranoid, but break if something fishy is going on: + if (ngenerated == nprevious) { + return 0; + } + + // Perform crazy heuristic to approach a nice density: + if (ndesired / ngenerated >= 2) { + density *= 2; + } else { + density += density / 10; + } + + nprevious = ngenerated; + } + par_bluenoise_sort_by_rank(&ctx->points->x, ngenerated); + if (stride != 3) { + int nbytes = sizeof(float) * stride * ndesired; + float* pts = PAR_MALLOC(float, stride * ndesired); + float* dst = pts; + const float* src = &ctx->points->x; + for (int i = 0; i < ndesired; i++, src++) { + *dst++ = *src++; + *dst++ = *src++; + if (stride > 3) { + *dst++ = *src; + dst += stride - 3; + } + } + memcpy(ctx->points, pts, nbytes); + free(pts); + } + return &ctx->points->x; +} + +#undef PAR_MINI +#undef PAR_MAXI + +#endif // PAR_BLUENOISE_IMPLEMENTATION +#endif // PAR_BLUENOISE_H + +// par_bluenoise is distributed under the MIT license: +// +// Copyright (c) 2019 Philip Rideout +// +// 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. diff --git a/source/engine/thirdparty/par/par_bubbles.h b/source/engine/thirdparty/par/par_bubbles.h new file mode 100644 index 0000000..ddd929e --- /dev/null +++ b/source/engine/thirdparty/par/par_bubbles.h @@ -0,0 +1,1451 @@ +// BUBBLES :: https://github.com/prideout/par +// Simple C library for packing circles into hierarchical (or flat) diagrams. +// +// Implements "Visualization of Large Hierarchical Data by Circle Packing" from +// Wang et al (2006). +// +// Also contains an implementation of Emo Welzl's "Smallest enclosing disks" +// algorithm (1991) for enclosing points with circles, and a related method +// from Mike Bostock for enclosing circles with the smallest possible circle. +// +// The API is divided into four sections: +// +// - Enclosing. Compute the smallest bounding circle for points or circles. +// - Packing. Pack circles together, or into other circles. +// - Queries. Given a touch point, pick a circle from a hierarchy, etc. +// - Deep Zoom. Uses relative coordinate systems to support arbitrary depth. +// +// In addition to the comment block above each function declaration, the API +// has informal documentation here: +// +// https://prideout.net/bubbles +// +// Distributed under the MIT License, see bottom of file. + +#ifndef PAR_BUBBLES_H +#define PAR_BUBBLES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +// This can be any signed integer type. +#ifndef PAR_BUBBLES_INT +#define PAR_BUBBLES_INT int32_t +#endif + +// This must be "float" or "double" or "long double". Note that you should not +// need high precision if you use the relative coordinate systems API. +#ifndef PAR_BUBBLES_FLT +#define PAR_BUBBLES_FLT double +#endif + +// Enclosing / Touching -------------------------------------------------------- + +// Read an array of (x,y) coordinates, write a single 3-tuple (x,y,radius). +void par_bubbles_enclose_points(PAR_BUBBLES_FLT const* xy, PAR_BUBBLES_INT npts, + PAR_BUBBLES_FLT* result); + +// Read an array of 3-tuples (x,y,radius), write a 3-tuple (x,y,radius). +void par_bubbles_enclose_disks(PAR_BUBBLES_FLT const* xyr, + PAR_BUBBLES_INT ndisks, PAR_BUBBLES_FLT* result); + +// Find the circle (x,y,radius) that is tangent to 3 points (x,y). +void par_bubbles_touch_three_points(PAR_BUBBLES_FLT const* xy, + PAR_BUBBLES_FLT* result); + +// Find a position for disk "c" that makes it tangent to "a" and "b". +// Note that the ordering of a and b can affect where c will land. +// All three arguments are pointers to three-tuples (x,y,radius). +void par_bubbles_touch_two_disks(PAR_BUBBLES_FLT* c, PAR_BUBBLES_FLT const* a, + PAR_BUBBLES_FLT const* b); + +// Returns the smallest circle that intersects the three specified circles. +// This is the problem of Problem of Apollonius! +void par_bubbles_touch_three_disks(PAR_BUBBLES_FLT const* xyr1, + PAR_BUBBLES_FLT const* xyr2, PAR_BUBBLES_FLT const* xyr3, + PAR_BUBBLES_FLT* result); + +// Packing --------------------------------------------------------------------- + +// Tiny POD structure returned by all packing functions. Private data is +// attached after the public fields, so clients should call the provided +// free function rather than freeing the memory manually. +typedef struct { + PAR_BUBBLES_FLT* xyr; // array of 3-tuples (x y radius) in input order + PAR_BUBBLES_INT count; // number of 3-tuples in "xyr" + PAR_BUBBLES_INT* ids; // populated by par_bubbles_cull +} par_bubbles_t; + +void par_bubbles_free_result(par_bubbles_t*); + +// Entry point for unbounded non-hierarchical packing. Takes a list of radii. +par_bubbles_t* par_bubbles_pack(PAR_BUBBLES_FLT const* radiuses, + PAR_BUBBLES_INT nradiuses); + +// Consume a hierarchy defined by a list of integers. Each integer is an index +// to its parent. The root node is its own parent, and it must be the first node +// in the list. Clients do not have control over individual radiuses, only the +// radius of the outermost enclosing disk. +par_bubbles_t* par_bubbles_hpack_circle(PAR_BUBBLES_INT* nodes, + PAR_BUBBLES_INT nnodes, PAR_BUBBLES_FLT radius); + +// Queries --------------------------------------------------------------------- + +// Find the node at the given position. Children are on top of their parents. +// If the result is -1, there is no node at the given pick coordinate. +PAR_BUBBLES_INT par_bubbles_pick(par_bubbles_t const*, PAR_BUBBLES_FLT x, + PAR_BUBBLES_FLT y); + +// Get bounding box; take a pointer to 4 floats and set them to min xy, max xy. +void par_bubbles_compute_aabb(par_bubbles_t const*, PAR_BUBBLES_FLT* aabb); + +// Check if the given circle (3-tuple) intersects the given aabb (4-tuple). +bool par_bubbles_check_aabb(PAR_BUBBLES_FLT const* disk, + PAR_BUBBLES_FLT const* aabb); + +// Clip the bubble diagram to the given AABB (4-tuple of left,bottom,right,top) +// and return the result. Circles smaller than the given world-space +// "minradius" are removed. Optionally, an existing diagram (dst) can be passed +// in to receive the culled dataset, which reduces the number of memory allocs +// when calling this function frequently. Pass null to "dst" to create a new +// culled diagram. +par_bubbles_t* par_bubbles_cull(par_bubbles_t const* src, + PAR_BUBBLES_FLT const* aabb, PAR_BUBBLES_FLT minradius, par_bubbles_t* dst); + +// Dump out a SVG file for diagnostic purposes. +void par_bubbles_export(par_bubbles_t const* bubbles, char const* filename); + +// Returns a pointer to a list of children nodes. +void par_bubbles_get_children(par_bubbles_t const* bubbles, PAR_BUBBLES_INT idx, + PAR_BUBBLES_INT** pchildren, PAR_BUBBLES_INT* nchildren); + +// Returns the given node's parent, or 0 if it's the root. +PAR_BUBBLES_INT par_bubbles_get_parent(par_bubbles_t const* bubbles, + PAR_BUBBLES_INT idx); + +// Finds the height of the tree and returns one of its deepest leaves. +void par_bubbles_get_maxdepth(par_bubbles_t const* bubbles, + PAR_BUBBLES_INT* maxdepth, PAR_BUBBLES_INT* leaf); + +// Finds the height of the tree at a certain node. +PAR_BUBBLES_INT par_bubbles_get_depth(par_bubbles_t const* bubbles, + PAR_BUBBLES_INT node); + +// Returns a 4-tuple (min xy, max xy) for the given node. +void par_bubbles_compute_aabb_for_node(par_bubbles_t const* bubbles, + PAR_BUBBLES_INT node, PAR_BUBBLES_FLT* aabb); + +// Find the deepest node that is an ancestor of both A and B. Classic! +PAR_BUBBLES_INT par_bubbles_lowest_common_ancestor(par_bubbles_t const* bubbles, + PAR_BUBBLES_INT node_a, PAR_BUBBLES_INT node_b); + +// Deep Zoom ------------------------------------------------------------------- + +// Similar to hpack, but maintains precision by storing disk positions within +// the local coordinate system of their parent. After calling this function, +// clients can use cull_local to flatten the coordinate systems. +par_bubbles_t* par_bubbles_hpack_local(PAR_BUBBLES_INT* nodes, + PAR_BUBBLES_INT nnodes); + +// Similar to par_bubbles_cull, but takes a root node rather than an AABB, +// and returns a result within the local coordinate system of the new root. +// In other words, the new root will have radius 1, centered at (0,0). The +// minradius is also expressed in this coordinate system. +par_bubbles_t* par_bubbles_cull_local(par_bubbles_t const* src, + PAR_BUBBLES_FLT const* aabb, PAR_BUBBLES_FLT minradius, + PAR_BUBBLES_INT root, par_bubbles_t* dst); + +// Finds the smallest node in the given bubble diagram that completely encloses +// the given axis-aligned bounding box (min xy, max xy). The AABB coordinates +// are expressed in the local coordinate system of the given root node. +PAR_BUBBLES_INT par_bubbles_find_local(par_bubbles_t const* src, + PAR_BUBBLES_FLT const* aabb, PAR_BUBBLES_INT root); + +// Similar to pick, but expects (x,y) to be in the coordinate system of the +// given root node. +PAR_BUBBLES_INT par_bubbles_pick_local(par_bubbles_t const*, PAR_BUBBLES_FLT x, + PAR_BUBBLES_FLT y, PAR_BUBBLES_INT root, PAR_BUBBLES_FLT minradius); + +// Obtains the scale and translation (which should be applied in that order) +// that can move a point from the node0 coord system to the node1 coord system. +// The "xform" argument should point to three floats, which will be populated +// with: x translation, y translation, and scale. +bool par_bubbles_transform_local(par_bubbles_t const* bubbles, + PAR_BUBBLES_FLT* xform, PAR_BUBBLES_INT node0, PAR_BUBBLES_INT node1); + +// Dump out a SVG file for diagnostic purposes. +void par_bubbles_export_local(par_bubbles_t const* bubbles, + PAR_BUBBLES_INT idx, char const* filename); + +typedef enum { + PAR_BUBBLES_FILTER_DEFAULT, + PAR_BUBBLES_FILTER_DISCARD_LAST_CHILD, + PAR_BUBBLES_FILTER_KEEP_ONLY_LAST_CHILD +} par_bubbles_filter; + +// Special-case function that affects the behavior of subsequent calls to +// cull_local. Allows clients to filter the children list of each non-leaf +// node, which is especially useful when using placeholder bubbles for labels. +void par_bubbles_set_filter(par_bubbles_t* src, par_bubbles_filter f); + +typedef enum { + PAR_BUBBLES_HORIZONTAL, + PAR_BUBBLES_VERTICAL +} par_bubbles_orientation; + +// Sets some global state that affect subsequent calls to hpack. The first two +// children can either be placed horizontally (default) or vertically. The +// effect of this is subtle, since overall layout is obviously circular. +void par_bubbles_set_orientation(par_bubbles_orientation ); + +#ifndef PAR_PI +#define PAR_PI (3.14159265359) +#define PAR_MIN(a, b) (a > b ? b : a) +#define PAR_MAX(a, b) (a > b ? a : b) +#define PAR_CLAMP(v, lo, hi) PAR_MAX(lo, PAR_MIN(hi, v)) +#define PAR_SWAP(T, A, B) { T tmp = B; B = A; A = tmp; } +#define PAR_SQR(a) ((a) * (a)) +#endif + +#ifndef PAR_MALLOC +#define PAR_MALLOC(T, N) ((T*) malloc(N * sizeof(T))) +#define PAR_CALLOC(T, N) ((T*) calloc(N * sizeof(T), 1)) +#define PAR_REALLOC(T, BUF, N) ((T*) realloc(BUF, sizeof(T) * (N))) +#define PAR_FREE(BUF) free(BUF) +#endif + +#ifdef __cplusplus +} +#endif + +// ----------------------------------------------------------------------------- +// END PUBLIC API +// ----------------------------------------------------------------------------- + +#ifdef PAR_BUBBLES_IMPLEMENTATION +#define PARINT PAR_BUBBLES_INT +#define PARFLT PAR_BUBBLES_FLT + +#include +#include +#include +#include +#include + +static par_bubbles_orientation par_bubbles__ostate = PAR_BUBBLES_HORIZONTAL; + +typedef struct { + PARINT prev; + PARINT next; +} par_bubbles__node; + +typedef struct { + PARFLT* xyr; // results array + PARINT count; // client-provided count + PARINT* ids; // populated by par_bubbles_cull + PARFLT const* radiuses; // client-provided radius list + par_bubbles__node* chain; // counterclockwise enveloping chain + PARINT const* graph_parents; // client-provided parent indices + PARINT* graph_children; // flat list of children indices + PARINT* graph_heads; // list of "pointers" to first child + PARINT* graph_tails; // list of "pointers" to one-past-last child + PARINT npacked; + PARINT maxwidth; + PARINT capacity; + par_bubbles_filter filter; +} par_bubbles__t; + +static PARFLT par_bubbles__len2(PARFLT const* a) +{ + return a[0] * a[0] + a[1] * a[1]; +} + +static void par_bubbles__initgraph(par_bubbles__t* bubbles) +{ + PARINT const* parents = bubbles->graph_parents; + PARINT* nchildren = PAR_CALLOC(PARINT, bubbles->count); + for (PARINT i = 0; i < bubbles->count; i++) { + nchildren[parents[i]]++; + } + PARINT c = 0; + bubbles->graph_heads = PAR_CALLOC(PARINT, bubbles->count * 2); + bubbles->graph_tails = bubbles->graph_heads + bubbles->count; + for (PARINT i = 0; i < bubbles->count; i++) { + bubbles->maxwidth = PAR_MAX(bubbles->maxwidth, nchildren[i]); + bubbles->graph_heads[i] = bubbles->graph_tails[i] = c; + c += nchildren[i]; + } + bubbles->graph_heads[0] = bubbles->graph_tails[0] = 1; + bubbles->graph_children = PAR_MALLOC(PARINT, c); + for (PARINT i = 1; i < bubbles->count; i++) { + PARINT parent = parents[i]; + bubbles->graph_children[bubbles->graph_tails[parent]++] = i; + } + PAR_FREE(nchildren); +} + +static void par_bubbles__initflat(par_bubbles__t* bubbles) +{ + PARFLT* xyr = bubbles->xyr; + PARFLT const* radii = bubbles->radiuses; + par_bubbles__node* chain = bubbles->chain; + PARFLT x0, y0, x1, y1; + if (par_bubbles__ostate == PAR_BUBBLES_HORIZONTAL) { + x0 = -radii[0]; + y0 = 0; + x1 = radii[1]; + y1 = 0; + } else { + x0 = 0; + y0 = -radii[0]; + x1 = 0; + y1 = radii[1]; + } + *xyr++ = x0; + *xyr++ = y0; + *xyr++ = *radii++; + if (bubbles->count == ++bubbles->npacked) { + return; + } + *xyr++ = x1; + *xyr++ = y1; + *xyr++ = *radii++; + if (bubbles->count == ++bubbles->npacked) { + return; + } + xyr[2] = *radii; + par_bubbles_touch_two_disks(xyr, xyr - 6, xyr - 3); + if (bubbles->count == ++bubbles->npacked) { + return; + } + chain[0].prev = 2; + chain[0].next = 1; + chain[1].prev = 0; + chain[1].next = 2; + chain[2].prev = 1; + chain[2].next = 0; +} + +// March forward or backward along the enveloping chain, starting with the +// node at "cn" and testing for collision against the node at "ci". +static PARINT par_bubbles__collide(par_bubbles__t* bubbles, PARINT ci, + PARINT cn, PARINT* cj, PARINT direction) +{ + PARFLT const* ci_xyr = bubbles->xyr + ci * 3; + par_bubbles__node* chain = bubbles->chain; + PARINT nsteps = 1; + if (direction > 0) { + for (PARINT i = chain[cn].next; i != cn; i = chain[i].next, ++nsteps) { + PARFLT const* i_xyr = bubbles->xyr + i * 3; + PARFLT dx = i_xyr[0] - ci_xyr[0]; + PARFLT dy = i_xyr[1] - ci_xyr[1]; + PARFLT dr = i_xyr[2] + ci_xyr[2]; + if (0.999 * dr * dr > dx * dx + dy * dy) { + *cj = i; + return nsteps; + } + } + return 0; + } + for (PARINT i = chain[cn].prev; i != cn; i = chain[i].prev, ++nsteps) { + PARFLT const* i_xyr = bubbles->xyr + i * 3; + PARFLT dx = i_xyr[0] - ci_xyr[0]; + PARFLT dy = i_xyr[1] - ci_xyr[1]; + PARFLT dr = i_xyr[2] + ci_xyr[2]; + if (0.999 * dr * dr > dx * dx + dy * dy) { + *cj = i; + return nsteps; + } + } + return 0; +} + +static void par_bubbles__packflat(par_bubbles__t* bubbles) +{ + PARFLT const* radii = bubbles->radiuses; + PARFLT* xyr = bubbles->xyr; + par_bubbles__node* chain = bubbles->chain; + + // Find the circle closest to the origin, known as "Cm" in the paper. + PARINT cm = 0; + PARFLT mindist = par_bubbles__len2(xyr + 0); + PARFLT dist = par_bubbles__len2(xyr + 3); + if (dist > mindist) { + cm = 1; + } + dist = par_bubbles__len2(xyr + 6); + if (dist > mindist) { + cm = 2; + } + + // In the paper, "Cn" is always the node that follows "Cm". + PARINT ci, cn = chain[cm].next; + + for (ci = bubbles->npacked; ci < bubbles->count; ) { + PARFLT* ci_xyr = xyr + ci * 3; + ci_xyr[2] = radii[ci]; + PARFLT* cm_xyr = xyr + cm * 3; + PARFLT* cn_xyr = xyr + cn * 3; + par_bubbles_touch_two_disks(ci_xyr, cn_xyr, cm_xyr); + + // Check for a collision. In the paper, "Cj" is the intersecting node. + PARINT cj_f; + PARINT nfsteps = par_bubbles__collide(bubbles, ci, cn, &cj_f, +1); + if (!nfsteps) { + chain[cm].next = ci; + chain[ci].prev = cm; + chain[ci].next = cn; + chain[cn].prev = ci; + cm = ci++; + continue; + } + + // Search backwards for a collision, in case it is closer. + PARINT cj_b; + PARINT nbsteps = par_bubbles__collide(bubbles, ci, cm, &cj_b, -1); + + // Intersection occurred after Cn. + if (nfsteps <= nbsteps) { + cn = cj_f; + chain[cm].next = cn; + chain[cn].prev = cm; + continue; + } + + // Intersection occurred before Cm. + cm = cj_b; + chain[cm].next = cn; + chain[cn].prev = cm; + } + + bubbles->npacked = bubbles->count; +} + +static void par__disk_from_two_points(PARFLT const* xy1, PARFLT const* xy2, + PARFLT* result) +{ + PARFLT dx = xy1[0] - xy2[0]; + PARFLT dy = xy1[1] - xy2[1]; + result[0] = 0.5 * (xy1[0] + xy2[0]); + result[1] = 0.5 * (xy1[1] + xy2[1]); + result[2] = sqrt(dx * dx + dy * dy) / 2.0; +} + +static PARINT par__disk_contains_point(PARFLT const* xyr, PARFLT const* xy) +{ + PARFLT dx = xyr[0] - xy[0]; + PARFLT dy = xyr[1] - xy[1]; + return dx * dx + dy * dy <= PAR_SQR(xyr[2]); +} + +static void par__easydisk_from_points(PARFLT* disk, PARFLT const* edgepts, + PARINT nedgepts) +{ + if (nedgepts == 0) { + disk[0] = 0; + disk[1] = 0; + disk[2] = 0; + return; + } + if (nedgepts == 1) { + disk[0] = edgepts[0]; + disk[1] = edgepts[1]; + disk[2] = 0; + return; + } + par__disk_from_two_points(edgepts, edgepts + 2, disk); + if (nedgepts == 2 || par__disk_contains_point(disk, edgepts + 4)) { + return; + } + par__disk_from_two_points(edgepts, edgepts + 4, disk); + if (par__disk_contains_point(disk, edgepts + 2)) { + return; + } + par__disk_from_two_points(edgepts + 2, edgepts + 4, disk); + if (par__disk_contains_point(disk, edgepts)) { + return; + } + par_bubbles_touch_three_points(edgepts, disk); +} + +static void par__minidisk_points(PARFLT* disk, PARFLT const* pts, PARINT npts, + PARFLT const* edgepts, PARINT nedgepts) +{ + if (npts == 0 || nedgepts == 3) { + par__easydisk_from_points(disk, edgepts, nedgepts); + return; + } + PARFLT const* pt = pts + (--npts) * 2; + par__minidisk_points(disk, pts, npts, edgepts, nedgepts); + if (!par__disk_contains_point(disk, pt)) { + PARFLT edgepts1[6]; + for (PARINT i = 0; i < nedgepts * 2; i += 2) { + edgepts1[i] = edgepts[i]; + edgepts1[i + 1] = edgepts[i + 1]; + } + edgepts1[2 * nedgepts] = pt[0]; + edgepts1[2 * nedgepts + 1] = pt[1]; + par__minidisk_points(disk, pts, npts, edgepts1, ++nedgepts); + } +} + +// Returns true if the specified circle1 contains the specified circle2. +static bool par__disk_contains_disk(PARFLT const* xyr1, PARFLT const* xyr2) +{ + PARFLT xc0 = xyr1[0] - xyr2[0]; + PARFLT yc0 = xyr1[1] - xyr2[1]; + return sqrt(xc0 * xc0 + yc0 * yc0) < xyr1[2] - xyr2[2] + 1e-6; +} + +// Returns the smallest circle that intersects the two specified circles. +static void par__disk_from_two_disks(PARFLT const* xyr1, PARFLT const* xyr2, + PARFLT* result) +{ + PARFLT x1 = xyr1[0], y1 = xyr1[1], r1 = xyr1[2]; + PARFLT x2 = xyr2[0], y2 = xyr2[1], r2 = xyr2[2]; + PARFLT x12 = x2 - x1, y12 = y2 - y1, r12 = r2 - r1; + PARFLT l = sqrt(x12 * x12 + y12 * y12); + result[0] = (x1 + x2 + x12 / l * r12) / 2; + result[1] = (y1 + y2 + y12 / l * r12) / 2; + result[2] = (l + r1 + r2) / 2; +} + +static void par__easydisk_from_disks(PARFLT* disk, PARFLT const* edgedisks, + PARINT nedgedisks) +{ + assert(nedgedisks <= 3); + if (nedgedisks == 0) { + disk[0] = 0; + disk[1] = 0; + disk[2] = 0; + return; + } + if (nedgedisks == 1) { + disk[0] = edgedisks[0]; + disk[1] = edgedisks[1]; + disk[2] = edgedisks[2]; + return; + } + if (nedgedisks == 2) { + par__disk_from_two_disks(edgedisks, edgedisks + 3, disk); + return; + } + par_bubbles_touch_three_disks(edgedisks, edgedisks + 3, edgedisks + 6, + disk); +} + +static void par__minidisk_disks(PARFLT* result, PARFLT const* disks, + PARINT ndisks, PARFLT const* edgedisks, PARINT nedgedisks) +{ + if (ndisks == 0 || nedgedisks == 3) { + par__easydisk_from_disks(result, edgedisks, nedgedisks); + return; + } + PARFLT const* disk = disks + (--ndisks) * 3; + par__minidisk_disks(result, disks, ndisks, edgedisks, nedgedisks); + if (!par__disk_contains_disk(result, disk)) { + PARFLT edgedisks1[9]; + for (PARINT i = 0; i < nedgedisks * 3; i += 3) { + edgedisks1[i] = edgedisks[i]; + edgedisks1[i + 1] = edgedisks[i + 1]; + edgedisks1[i + 2] = edgedisks[i + 2]; + } + edgedisks1[3 * nedgedisks] = disk[0]; + edgedisks1[3 * nedgedisks + 1] = disk[1]; + edgedisks1[3 * nedgedisks + 2] = disk[2]; + par__minidisk_disks(result, disks, ndisks, edgedisks1, ++nedgedisks); + } +} + +static void par_bubbles__copy_disk(par_bubbles__t const* src, + par_bubbles__t* dst, PARINT parent) +{ + PARINT i = dst->count++; + if (dst->capacity < dst->count) { + dst->capacity = PAR_MAX(16, dst->capacity) * 2; + dst->xyr = PAR_REALLOC(PARFLT, dst->xyr, 3 * dst->capacity); + dst->ids = PAR_REALLOC(PARINT, dst->ids, dst->capacity); + } + PARFLT const* xyr = src->xyr + parent * 3; + dst->xyr[i * 3] = xyr[0]; + dst->xyr[i * 3 + 1] = xyr[1]; + dst->xyr[i * 3 + 2] = xyr[2]; + dst->ids[i] = parent; +} + +void par_bubbles_enclose_points(PARFLT const* xy, PARINT npts, PARFLT* result) +{ + par__minidisk_points(result, xy, npts, 0, 0); +} + +void par_bubbles_enclose_disks(PARFLT const* xyr, PARINT ndisks, PARFLT* result) +{ + par__minidisk_disks(result, xyr, ndisks, 0, 0); +} + +void par_bubbles_touch_three_points(PARFLT const* xy, PARFLT* xyr) +{ + // Many thanks to Stephen Schmitts: + // http://www.abecedarical.com/zenosamples/zs_circle3pts.html + PARFLT p1x = xy[0], p1y = xy[1]; + PARFLT p2x = xy[2], p2y = xy[3]; + PARFLT p3x = xy[4], p3y = xy[5]; + PARFLT a = p2x - p1x, b = p2y - p1y; + PARFLT c = p3x - p1x, d = p3y - p1y; + PARFLT e = a * (p2x + p1x) * 0.5 + b * (p2y + p1y) * 0.5; + PARFLT f = c * (p3x + p1x) * 0.5 + d * (p3y + p1y) * 0.5; + PARFLT det = a*d - b*c; + PARFLT cx = xyr[0] = (d*e - b*f) / det; + PARFLT cy = xyr[1] = (-c*e + a*f) / det; + xyr[2] = sqrt((p1x - cx)*(p1x - cx) + (p1y - cy)*(p1y - cy)); +} + +void par_bubbles_touch_two_disks(PARFLT* c, PARFLT const* a, PARFLT const* b) +{ + PARFLT db = a[2] + c[2], dx = b[0] - a[0], dy = b[1] - a[1]; + if (db && (dx || dy)) { + PARFLT da = b[2] + c[2], dc = dx * dx + dy * dy; + da *= da; + db *= db; + PARFLT x = 0.5 + (db - da) / (2 * dc); + PARFLT db1 = db - dc; + PARFLT y0 = PAR_MAX(0, 2 * da * (db + dc) - db1 * db1 - da * da); + PARFLT y = sqrt(y0) / (2 * dc); + c[0] = a[0] + x * dx + y * dy; + c[1] = a[1] + x * dy - y * dx; + } else { + c[0] = a[0] + db; + c[1] = a[1]; + } +} + +void par_bubbles_touch_three_disks(PARFLT const* xyr1, PARFLT const* xyr2, + PARFLT const* xyr3, PARFLT* result) +{ + PARFLT x1 = xyr1[0], y1 = xyr1[1], r1 = xyr1[2], + x2 = xyr2[0], y2 = xyr2[1], r2 = xyr2[2], + x3 = xyr3[0], y3 = xyr3[1], r3 = xyr3[2], + a2 = 2 * (x1 - x2), + b2 = 2 * (y1 - y2), + c2 = 2 * (r2 - r1), + d2 = x1 * x1 + y1 * y1 - r1 * r1 - x2 * x2 - y2 * y2 + r2 * r2, + a3 = 2 * (x1 - x3), + b3 = 2 * (y1 - y3), + c3 = 2 * (r3 - r1), + d3 = x1 * x1 + y1 * y1 - r1 * r1 - x3 * x3 - y3 * y3 + r3 * r3, + ab = a3 * b2 - a2 * b3, + xa = (b2 * d3 - b3 * d2) / ab - x1, + xb = (b3 * c2 - b2 * c3) / ab, + ya = (a3 * d2 - a2 * d3) / ab - y1, + yb = (a2 * c3 - a3 * c2) / ab, + A = xb * xb + yb * yb - 1, + B = 2 * (xa * xb + ya * yb + r1), + C = xa * xa + ya * ya - r1 * r1, + r = (-B - sqrt(B * B - 4 * A * C)) / (2 * A); + result[0] = xa + xb * r + x1; + result[1] = ya + yb * r + y1; + result[2] = r; +} + +void par_bubbles_free_result(par_bubbles_t* pubbub) +{ + par_bubbles__t* bubbles = (par_bubbles__t*) pubbub; + PAR_FREE(bubbles->graph_children); + PAR_FREE(bubbles->graph_heads); + PAR_FREE(bubbles->chain); + PAR_FREE(bubbles->xyr); + PAR_FREE(bubbles->ids); + PAR_FREE(bubbles); +} + +par_bubbles_t* par_bubbles_pack(PARFLT const* radiuses, PARINT nradiuses) +{ + par_bubbles__t* bubbles = PAR_CALLOC(par_bubbles__t, 1); + if (nradiuses > 0) { + bubbles->radiuses = radiuses; + bubbles->count = nradiuses; + bubbles->chain = PAR_MALLOC(par_bubbles__node, nradiuses); + bubbles->xyr = PAR_MALLOC(PARFLT, 3 * nradiuses); + par_bubbles__initflat(bubbles); + par_bubbles__packflat(bubbles); + } + return (par_bubbles_t*) bubbles; +} + +// Assigns a radius to every node according to its number of descendants. +void par_bubbles__generate_radii(par_bubbles__t* bubbles, + par_bubbles__t* worker, PARINT parent) +{ + PARINT head = bubbles->graph_heads[parent]; + PARINT tail = bubbles->graph_tails[parent]; + PARINT nchildren = tail - head; + PARINT pr = parent * 3 + 2; + bubbles->xyr[pr] = 1; + if (nchildren == 0) { + return; + } + for (PARINT cindex = head; cindex != tail; cindex++) { + PARINT child = bubbles->graph_children[cindex]; + par_bubbles__generate_radii(bubbles, worker, child); + bubbles->xyr[pr] += bubbles->xyr[child * 3 + 2]; + } + // The following square root seems to produce a nicer, more space-filling, + // distribution of radiuses in randomly-generated trees. + bubbles->xyr[pr] = sqrtf(bubbles->xyr[pr]); +} + +void par_bubbles__hpack(par_bubbles__t* bubbles, par_bubbles__t* worker, + PARINT parent, bool local) +{ + PARINT head = bubbles->graph_heads[parent]; + PARINT tail = bubbles->graph_tails[parent]; + PARINT nchildren = tail - head; + if (nchildren == 0) { + return; + } + + // Cast away const because we're using the worker as a cache to avoid + // a kazillion malloc / free calls. + PARFLT* radiuses = (PARFLT*) worker->radiuses; + + // We perform flat layout twice: once without padding (to determine scale) + // and then again with scaled padding. + PARFLT enclosure[3]; + PARFLT px = bubbles->xyr[parent * 3 + 0]; + PARFLT py = bubbles->xyr[parent * 3 + 1]; + PARFLT pr = bubbles->xyr[parent * 3 + 2]; + const PARFLT PAR_HPACK_PADDING1 = 0.15; + const PARFLT PAR_HPACK_PADDING2 = 0.025; + PARFLT scaled_padding = 0.0; + while (1) { + worker->npacked = 0; + worker->count = nchildren; + PARINT c = 0; + for (PARINT cindex = head; cindex != tail; cindex++) { + PARINT child = bubbles->graph_children[cindex]; + radiuses[c++] = bubbles->xyr[child * 3 + 2] + scaled_padding; + } + par_bubbles__initflat(worker); + par_bubbles__packflat(worker); + + // Using Welzl's algorithm instead of a simple AABB enclosure is + // slightly slower and doesn't yield much aesthetic improvement. + + #if PAR_BUBBLES_HPACK_WELZL + par_bubbles_enclose_disks(worker->xyr, nchildren, enclosure); + #else + PARFLT aabb[6]; + par_bubbles_compute_aabb((par_bubbles_t const*) worker, aabb); + enclosure[0] = 0.5 * (aabb[0] + aabb[2]); + enclosure[1] = 0.5 * (aabb[1] + aabb[3]); + enclosure[2] = 0; + for (PARINT c = 0; c < nchildren; c++) { + PARFLT x = worker->xyr[c * 3 + 0] - enclosure[0]; + PARFLT y = worker->xyr[c * 3 + 1] - enclosure[1]; + PARFLT r = worker->xyr[c * 3 + 2]; + enclosure[2] = PAR_MAX(enclosure[2], r + sqrtf(x * x + y * y)); + } + #endif + + if (scaled_padding || !PAR_HPACK_PADDING1) { + break; + } else { + scaled_padding = PAR_HPACK_PADDING1 / enclosure[2]; + } + } + PARFLT cx = enclosure[0], cy = enclosure[1], cr = enclosure[2]; + scaled_padding *= cr; + cr += PAR_HPACK_PADDING2 * cr; + + // Transform the children to fit nicely into either (a) the unit circle, + // or (b) their parent. The former is used if "local" is true. + PARFLT scale, tx, ty; + if (local) { + scale = 1.0 / cr; + tx = 0; + ty = 0; + } else { + scale = pr / cr; + tx = px; + ty = py; + } + PARFLT const* src = worker->xyr; + for (PARINT cindex = head; cindex != tail; cindex++, src += 3) { + PARFLT* dst = bubbles->xyr + 3 * bubbles->graph_children[cindex]; + dst[0] = tx + scale * (src[0] - cx); + dst[1] = ty + scale * (src[1] - cy); + dst[2] = scale * (src[2] - scaled_padding); + } + + // Recursion. TODO: It might be better to use our own stack here. + for (PARINT cindex = head; cindex != tail; cindex++) { + par_bubbles__hpack(bubbles, worker, bubbles->graph_children[cindex], + local); + } +} + +par_bubbles_t* par_bubbles_hpack_circle(PARINT* nodes, PARINT nnodes, + PARFLT radius) +{ + par_bubbles__t* bubbles = PAR_CALLOC(par_bubbles__t, 1); + if (nnodes > 0) { + bubbles->graph_parents = nodes; + bubbles->count = nnodes; + bubbles->chain = PAR_MALLOC(par_bubbles__node, nnodes); + bubbles->xyr = PAR_MALLOC(PARFLT, 3 * nnodes); + par_bubbles__initgraph(bubbles); + par_bubbles__t* worker = PAR_CALLOC(par_bubbles__t, 1); + worker->radiuses = PAR_MALLOC(PARFLT, bubbles->maxwidth); + worker->chain = PAR_MALLOC(par_bubbles__node, bubbles->maxwidth); + worker->xyr = PAR_MALLOC(PARFLT, 3 * bubbles->maxwidth); + par_bubbles__generate_radii(bubbles, worker, 0); + bubbles->xyr[0] = 0; + bubbles->xyr[1] = 0; + bubbles->xyr[2] = radius; + par_bubbles__hpack(bubbles, worker, 0, false); + par_bubbles_free_result((par_bubbles_t*) worker); + } + return (par_bubbles_t*) bubbles; +} + +// TODO: use a stack instead of recursion +static PARINT par_bubbles__pick(par_bubbles__t const* bubbles, PARINT parent, + PARFLT x, PARFLT y) +{ + PARFLT const* xyr = bubbles->xyr + parent * 3; + PARFLT d2 = PAR_SQR(x - xyr[0]) + PAR_SQR(y - xyr[1]); + if (d2 > PAR_SQR(xyr[2])) { + return -1; + } + PARINT head = bubbles->graph_heads[parent]; + PARINT tail = bubbles->graph_tails[parent]; + for (PARINT cindex = head; cindex != tail; cindex++) { + PARINT child = bubbles->graph_children[cindex]; + PARINT result = par_bubbles__pick(bubbles, child, x, y); + if (result > -1) { + return result; + } + } + return parent; +} + +PARINT par_bubbles_pick(par_bubbles_t const* cbubbles, PARFLT x, PARFLT y) +{ + par_bubbles__t const* bubbles = (par_bubbles__t const*) cbubbles; + if (bubbles->count == 0) { + return -1; + } + return par_bubbles__pick(bubbles, 0, x, y); +} + +void par_bubbles_compute_aabb(par_bubbles_t const* bubbles, PARFLT* aabb) +{ + if (bubbles->count == 0) { + return; + } + PARFLT const* xyr = bubbles->xyr; + aabb[0] = aabb[2] = xyr[0]; + aabb[1] = aabb[3] = xyr[1]; + for (PARINT i = 0; i < bubbles->count; i++, xyr += 3) { + aabb[0] = PAR_MIN(xyr[0] - xyr[2], aabb[0]); + aabb[1] = PAR_MIN(xyr[1] - xyr[2], aabb[1]); + aabb[2] = PAR_MAX(xyr[0] + xyr[2], aabb[2]); + aabb[3] = PAR_MAX(xyr[1] + xyr[2], aabb[3]); + } +} + +bool par_bubbles_check_aabb(PARFLT const* disk, PARFLT const* aabb) +{ + PARFLT cx = PAR_CLAMP(disk[0], aabb[0], aabb[2]); + PARFLT cy = PAR_CLAMP(disk[1], aabb[1], aabb[3]); + PARFLT dx = disk[0] - cx; + PARFLT dy = disk[1] - cy; + PARFLT d2 = dx * dx + dy * dy; + return d2 < (disk[2] * disk[2]); +} + +static void par_bubbles__cull(par_bubbles__t const* src, PARFLT const* aabb, + PARFLT minradius, par_bubbles__t* dst, PARINT parent) +{ + PARFLT const* xyr = src->xyr + parent * 3; + if (xyr[2] < minradius || !par_bubbles_check_aabb(xyr, aabb)) { + return; + } + par_bubbles__copy_disk(src, dst, parent); + PARINT head = src->graph_heads[parent]; + PARINT tail = src->graph_tails[parent]; + for (PARINT cindex = head; cindex != tail; cindex++) { + PARINT child = src->graph_children[cindex]; + par_bubbles__cull(src, aabb, minradius, dst, child); + } +} + +par_bubbles_t* par_bubbles_cull(par_bubbles_t const* psrc, + PARFLT const* aabb, PARFLT minradius, par_bubbles_t* pdst) +{ + par_bubbles__t const* src = (par_bubbles__t const*) psrc; + par_bubbles__t* dst = (par_bubbles__t*) pdst; + if (!dst) { + dst = PAR_CALLOC(par_bubbles__t, 1); + pdst = (par_bubbles_t*) dst; + } else { + dst->count = 0; + } + if (src->count == 0) { + return pdst; + } + par_bubbles__cull(src, aabb, minradius, dst, 0); + return pdst; +} + +void par_bubbles_export(par_bubbles_t const* bubbles, char const* filename) +{ + PARFLT aabb[4]; + par_bubbles_compute_aabb(bubbles, aabb); + PARFLT maxextent = PAR_MAX(aabb[2] - aabb[0], aabb[3] - aabb[1]); + PARFLT padding = 0.05 * maxextent; + FILE* svgfile = fopen(filename, "wt"); + if (!svgfile) { + fprintf(stderr, "Unable to open %s for writing.\n", filename); + return; + } + fprintf(svgfile, + "\n" + "\n" + "\n", + aabb[0] - padding, aabb[1] - padding, + aabb[2] - aabb[0] + 2 * padding, aabb[3] - aabb[1] + 2 * padding, + aabb[0] - padding, aabb[1] - padding); + PARFLT const* xyr = bubbles->xyr; + for (PARINT i = 0; i < bubbles->count; i++, xyr += 3) { + fprintf(svgfile, "\n", + xyr[2] * 0.01, xyr[0], xyr[1], xyr[2]); + fprintf(svgfile, "%d\n", + xyr[0], xyr[1] + xyr[2] * 0.125, xyr[2] * 0.5, (int) i); + } + fputs("\n", svgfile); + fclose(svgfile); +} + +void par_bubbles_get_children(par_bubbles_t const* pbubbles, PARINT node, + PARINT** pchildren, PARINT* nchildren) +{ + par_bubbles__t const* bubbles = (par_bubbles__t const*) pbubbles; + *pchildren = bubbles->graph_children + bubbles->graph_heads[node]; + *nchildren = bubbles->graph_tails[node] - bubbles->graph_heads[node]; +} + +PARINT par_bubbles_get_parent(par_bubbles_t const* pbubbles, PARINT node) +{ + par_bubbles__t const* bubbles = (par_bubbles__t const*) pbubbles; + return bubbles->graph_parents[node]; +} + +void par_bubbles__get_maxdepth(par_bubbles__t const* bubbles, PARINT* maxdepth, + PARINT* leaf, PARINT parent, PARINT depth) +{ + if (depth > *maxdepth) { + *leaf = parent; + *maxdepth = depth; + } + PARINT* children; + PARINT nchildren; + par_bubbles_t const* pbubbles = (par_bubbles_t const*) bubbles; + par_bubbles_get_children(pbubbles, parent, &children, &nchildren); + for (PARINT c = 0; c < nchildren; c++) { + par_bubbles__get_maxdepth(bubbles, maxdepth, leaf, children[c], + depth + 1); + } +} + +void par_bubbles_get_maxdepth(par_bubbles_t const* pbubbles, PARINT* maxdepth, + PARINT* leaf) +{ + par_bubbles__t const* bubbles = (par_bubbles__t const*) pbubbles; + *maxdepth = -1; + *leaf = -1; + return par_bubbles__get_maxdepth(bubbles, maxdepth, leaf, 0, 0); +} + +PARINT par_bubbles_get_depth(par_bubbles_t const* pbubbles, PARINT node) +{ + par_bubbles__t const* bubbles = (par_bubbles__t const*) pbubbles; + PARINT const* parents = bubbles->graph_parents; + PARINT depth = 0; + while (node) { + node = parents[node]; + depth++; + } + return depth; +} + +void par_bubbles_compute_aabb_for_node(par_bubbles_t const* bubbles, + PAR_BUBBLES_INT node, PAR_BUBBLES_FLT* aabb) +{ + PARFLT const* xyr = bubbles->xyr + 3 * node; + aabb[0] = aabb[2] = xyr[0]; + aabb[1] = aabb[3] = xyr[1]; + aabb[0] = PAR_MIN(xyr[0] - xyr[2], aabb[0]); + aabb[1] = PAR_MIN(xyr[1] - xyr[2], aabb[1]); + aabb[2] = PAR_MAX(xyr[0] + xyr[2], aabb[2]); + aabb[3] = PAR_MAX(xyr[1] + xyr[2], aabb[3]); +} + +PARINT par_bubbles_lowest_common_ancestor(par_bubbles_t const* bubbles, + PARINT node_a, PARINT node_b) +{ + if (node_a == node_b) { + return node_a; + } + par_bubbles__t const* src = (par_bubbles__t const*) bubbles; + PARINT depth_a = par_bubbles_get_depth(bubbles, node_a); + PARINT* chain_a = PAR_MALLOC(PARINT, depth_a); + for (PARINT i = depth_a - 1; i >= 0; i--) { + chain_a[i] = node_a; + node_a = src->graph_parents[node_a]; + } + PARINT depth_b = par_bubbles_get_depth(bubbles, node_b); + PARINT* chain_b = PAR_MALLOC(PARINT, depth_b); + for (PARINT i = depth_b - 1; i >= 0; i--) { + chain_b[i] = node_b; + node_b = src->graph_parents[node_b]; + } + PARINT lca = 0; + for (PARINT i = 1; i < PAR_MIN(depth_a, depth_b); i++) { + if (chain_a[i] != chain_b[i]) { + break; + } + lca = chain_a[i]; + } + PAR_FREE(chain_a); + PAR_FREE(chain_b); + return lca; +} + +void par_bubbles_export_local(par_bubbles_t const* bubbles, + PAR_BUBBLES_INT root, char const* filename) +{ + par_bubbles_t* clone = par_bubbles_cull_local(bubbles, 0, 0, root, 0); + FILE* svgfile = fopen(filename, "wt"); + fprintf(svgfile, + "\n" + "\n" + "\n", + -1.0, -1.0, 2.0, 2.0, -1.0, -1.0); + PARFLT const* xyr = clone->xyr; + for (PARINT i = 0; i < clone->count; i++, xyr += 3) { + fprintf(svgfile, "\n", + xyr[2] * 0.01, xyr[0], xyr[1], xyr[2]); + } + fputs("\n", svgfile); + fclose(svgfile); + par_bubbles_free_result(clone); +} + +void par_bubbles_set_filter(par_bubbles_t* bubbles, par_bubbles_filter f) +{ + par_bubbles__t* src = (par_bubbles__t*) bubbles; + src->filter = f; +} + +static void par_bubbles__copy_disk_local(par_bubbles__t const* src, + par_bubbles__t* dst, PARINT parent, PARFLT const* xform) +{ + PARINT i = dst->count++; + if (dst->capacity < dst->count) { + dst->capacity = PAR_MAX(16, dst->capacity) * 2; + dst->xyr = PAR_REALLOC(PARFLT, dst->xyr, 3 * dst->capacity); + dst->ids = PAR_REALLOC(PARINT, dst->ids, dst->capacity); + } + PARFLT const* xyr = src->xyr + parent * 3; + dst->xyr[i * 3] = xyr[0] * xform[2] + xform[0]; + dst->xyr[i * 3 + 1] = xyr[1] * xform[2] + xform[1]; + dst->xyr[i * 3 + 2] = xyr[2] * xform[2]; + dst->ids[i] = parent; +} + +static void par_bubbles__cull_local(par_bubbles__t const* src, + PARFLT const* aabb, PARFLT const* xform, PARFLT minradius, + par_bubbles__t* dst, PARINT parent) +{ + PARFLT const* xyr = src->xyr + parent * 3; + PARFLT child_xform[3] = { + xform[0] + xform[2] * xyr[0], + xform[1] + xform[2] * xyr[1], + xform[2] * xyr[2] + }; + if (aabb && !par_bubbles_check_aabb(child_xform, aabb)) { + return; + } + if (child_xform[2] < minradius) { + return; + } + par_bubbles__copy_disk_local(src, dst, parent, xform); + xform = child_xform; + PARINT head = src->graph_heads[parent]; + PARINT tail = src->graph_tails[parent]; + if (src->filter == PAR_BUBBLES_FILTER_DISCARD_LAST_CHILD) { + tail--; + } else if (src->filter == PAR_BUBBLES_FILTER_KEEP_ONLY_LAST_CHILD) { + head = PAR_MAX(head, tail - 1); + } + for (PARINT cindex = head; cindex < tail; cindex++) { + PARINT child = src->graph_children[cindex]; + par_bubbles__cull_local(src, aabb, xform, minradius, dst, child); + } +} + +par_bubbles_t* par_bubbles_cull_local(par_bubbles_t const* psrc, + PAR_BUBBLES_FLT const* aabb, PAR_BUBBLES_FLT minradius, + PAR_BUBBLES_INT root, par_bubbles_t* pdst) +{ + par_bubbles__t const* src = (par_bubbles__t const*) psrc; + par_bubbles__t* dst = (par_bubbles__t*) pdst; + if (!dst) { + dst = PAR_CALLOC(par_bubbles__t, 1); + pdst = (par_bubbles_t*) dst; + } else { + dst->count = 0; + } + if (src->count == 0) { + return pdst; + } + PARFLT xform[3] = {0, 0, 1}; + par_bubbles__copy_disk_local(src, dst, root, xform); + dst->xyr[0] = dst->xyr[1] = 0; + dst->xyr[2] = 1; + PARINT head = src->graph_heads[root]; + PARINT tail = src->graph_tails[root]; + if (src->filter == PAR_BUBBLES_FILTER_DISCARD_LAST_CHILD) { + tail--; + } else if (src->filter == PAR_BUBBLES_FILTER_KEEP_ONLY_LAST_CHILD) { + head = PAR_MAX(head, tail - 1); + } + for (PARINT cindex = head; cindex < tail; cindex++) { + PARINT child = src->graph_children[cindex]; + par_bubbles__cull_local(src, aabb, xform, minradius, dst, child); + } + return pdst; +} + +par_bubbles_t* par_bubbles_hpack_local(PARINT* nodes, PARINT nnodes) +{ + par_bubbles__t* bubbles = PAR_CALLOC(par_bubbles__t, 1); + if (nnodes > 0) { + bubbles->graph_parents = nodes; + bubbles->count = nnodes; + bubbles->chain = PAR_MALLOC(par_bubbles__node, nnodes); + bubbles->xyr = PAR_MALLOC(PARFLT, 3 * nnodes); + par_bubbles__initgraph(bubbles); + par_bubbles__t* worker = PAR_CALLOC(par_bubbles__t, 1); + worker->radiuses = PAR_MALLOC(PARFLT, bubbles->maxwidth); + worker->chain = PAR_MALLOC(par_bubbles__node, bubbles->maxwidth); + worker->xyr = PAR_MALLOC(PARFLT, 3 * bubbles->maxwidth); + par_bubbles__generate_radii(bubbles, worker, 0); + bubbles->xyr[0] = 0; + bubbles->xyr[1] = 0; + bubbles->xyr[2] = 1; + par_bubbles__hpack(bubbles, worker, 0, true); + par_bubbles_free_result((par_bubbles_t*) worker); + } + return (par_bubbles_t*) bubbles; +} + +static bool par_bubbles__disk_encloses_aabb(PAR_BUBBLES_FLT cx, + PAR_BUBBLES_FLT cy, PAR_BUBBLES_FLT r, PAR_BUBBLES_FLT const* aabb) +{ + PAR_BUBBLES_FLT x, y; + PAR_BUBBLES_FLT r2 = r * r; + x = aabb[0]; y = aabb[1]; + if (PAR_SQR(x - cx) + PAR_SQR(y - cy) > r2) { + return false; + } + x = aabb[2]; y = aabb[1]; + if (PAR_SQR(x - cx) + PAR_SQR(y - cy) > r2) { + return false; + } + x = aabb[0]; y = aabb[3]; + if (PAR_SQR(x - cx) + PAR_SQR(y - cy) > r2) { + return false; + } + x = aabb[2]; y = aabb[3]; + return PAR_SQR(x - cx) + PAR_SQR(y - cy) <= r2; +} + +static bool par_bubbles__get_local(par_bubbles__t const* src, PARFLT* xform, + PARINT parent, PARINT node); + +static bool par_bubbles_transform_parent(par_bubbles__t const* src, + PARFLT* xform, PARINT node0) +{ + PARINT node1 = src->graph_parents[node0]; + xform[0] = 0; + xform[1] = 0; + xform[2] = 1; + + PARINT head = src->graph_heads[node1]; + PARINT tail = src->graph_tails[node1]; + for (PARINT cindex = head; cindex != tail; cindex++) { + PARINT child = src->graph_children[cindex]; + if (par_bubbles__get_local(src, xform, child, node0)) { + return true; + } + } + return false; +} + +PARINT par_bubbles__find_local(par_bubbles__t const* src, + PARFLT const* xform, PARFLT const* aabb, PARINT parent) +{ + PARFLT const* xyr = src->xyr + parent * 3; + PARFLT child_xform[3] = { + xform[2] * xyr[0] + xform[0], + xform[2] * xyr[1] + xform[1], + xform[2] * xyr[2] + }; + xform = child_xform; + if (!par_bubbles__disk_encloses_aabb(xform[0], xform[1], xform[2], aabb)) { + return -1; + } + PARFLT maxrad = 0; + PARINT head = src->graph_heads[parent]; + PARINT tail = src->graph_tails[parent]; + for (PARINT cindex = head; cindex != tail; cindex++) { + PARINT child = src->graph_children[cindex]; + PARFLT const* xyr = src->xyr + child * 3; + maxrad = PAR_MAX(maxrad, xyr[2]); + } + PARFLT maxext = PAR_MAX(aabb[2] - aabb[0], aabb[3] - aabb[1]); + if (2 * maxrad < maxext) { + return parent; + } + for (PARINT cindex = head; cindex != tail; cindex++) { + PARINT child = src->graph_children[cindex]; + PARINT cresult = par_bubbles__find_local(src, xform, aabb, child); + if (cresult > -1) { + return cresult; + } + } + return parent; +} + +// This finds the deepest node that completely encloses the box. +PARINT par_bubbles_find_local(par_bubbles_t const* bubbles, PARFLT const* aabb, + PARINT root) +{ + par_bubbles__t const* src = (par_bubbles__t const*) bubbles; + + // Since the aabb is expressed in the coordinate system of the given root, + // we can do a trivial rejection right away, using the unit circle. + if (!par_bubbles__disk_encloses_aabb(0, 0, 1, aabb)) { + if (root == 0) { + return -1; + } + PARFLT xform[3]; + par_bubbles_transform_parent(src, xform, root); + PARFLT width = aabb[2] - aabb[0]; + PARFLT height = aabb[3] - aabb[1]; + PARFLT cx = 0.5 * (aabb[0] + aabb[2]); + PARFLT cy = 0.5 * (aabb[1] + aabb[3]); + width *= xform[2]; + height *= xform[2]; + cx = cx * xform[2] + xform[0]; + cy = cy * xform[2] + xform[1]; + PARFLT new_aabb[4] = { + cx - width * 0.5, + cy - height * 0.5, + cx + width * 0.5, + cy + height * 0.5 + }; + PARINT parent = src->graph_parents[root]; + return par_bubbles_find_local(bubbles, new_aabb, parent); + } + + PARFLT maxrad = 0; + PARINT head = src->graph_heads[root]; + PARINT tail = src->graph_tails[root]; + for (PARINT cindex = head; cindex != tail; cindex++) { + PARINT child = src->graph_children[cindex]; + PARFLT const* xyr = src->xyr + child * 3; + maxrad = PAR_MAX(maxrad, xyr[2]); + } + PARFLT maxext = PAR_MAX(aabb[2] - aabb[0], aabb[3] - aabb[1]); + if (2 * maxrad < maxext) { + return root; + } + + PARFLT xform[3] = {0, 0, 1}; + for (PARINT cindex = head; cindex != tail; cindex++) { + PARINT child = src->graph_children[cindex]; + PARINT cresult = par_bubbles__find_local(src, xform, aabb, child); + if (cresult > -1) { + return cresult; + } + } + return root; +} + +// This could be implemented much more efficiently, but for now it simply +// calls find_local with a zero-size AABB, then ensures that the result +// has a radius that is greater than or equal to minradius. +PARINT par_bubbles_pick_local(par_bubbles_t const* bubbles, PARFLT x, PARFLT y, + PARINT root, PARFLT minradius) +{ + par_bubbles__t const* src = (par_bubbles__t const*) bubbles; + PARFLT aabb[] = { x, y, x, y }; + PARINT result = par_bubbles_find_local(bubbles, aabb, root); + if (result == -1) { + return result; + } + PARINT depth = par_bubbles_get_depth(bubbles, result); + PARINT* chain = PAR_MALLOC(PARINT, depth); + PARINT node = result; + for (PARINT i = depth - 1; i >= 0; i--) { + chain[i] = node; + node = src->graph_parents[node]; + } + PARFLT radius = 1; + for (PARINT i = 1; i < depth; i++) { + PARINT node = chain[i]; + radius *= src->xyr[node * 3 + 2]; + if (radius < minradius) { + result = chain[i - 1]; + break; + } + } + PAR_FREE(chain); + return result; +} + +static bool par_bubbles__get_local(par_bubbles__t const* src, PARFLT* xform, + PARINT parent, PARINT node) +{ + PARFLT const* xyr = src->xyr + parent * 3; + PARFLT child_xform[3] = { + xform[2] * xyr[0] + xform[0], + xform[2] * xyr[1] + xform[1], + xform[2] * xyr[2] + }; + if (parent == node) { + xform[0] = child_xform[0]; + xform[1] = child_xform[1]; + xform[2] = child_xform[2]; + return true; + } + PARINT head = src->graph_heads[parent]; + PARINT tail = src->graph_tails[parent]; + for (PARINT cindex = head; cindex != tail; cindex++) { + PARINT child = src->graph_children[cindex]; + if (par_bubbles__get_local(src, child_xform, child, node)) { + xform[0] = child_xform[0]; + xform[1] = child_xform[1]; + xform[2] = child_xform[2]; + return true; + } + } + return false; +} + +// Obtains the scale and translation (which should be applied in that order) +// that can move a point from the node0 coord system to the node1 coord system. +// The "xform" argument should point to three floats, which will be populated +// with: x translation, y translation, and scale. +bool par_bubbles_transform_local(par_bubbles_t const* bubbles, PARFLT* xform, + PARINT node0, PARINT node1) +{ + par_bubbles__t const* src = (par_bubbles__t const*) bubbles; + xform[0] = 0; + xform[1] = 0; + xform[2] = 1; + if (node0 == node1) { + return true; + } + if (node1 == src->graph_parents[node0]) { + return par_bubbles_transform_parent(src, xform, node0); + } + + // First try the case where node1 is a descendant of node0 + PARINT head = src->graph_heads[node0]; + PARINT tail = src->graph_tails[node0]; + for (PARINT cindex = head; cindex != tail; cindex++) { + PARINT child = src->graph_children[cindex]; + if (par_bubbles__get_local(src, xform, child, node1)) { + float tx = xform[0]; + float ty = xform[1]; + float s = xform[2]; + xform[0] = -tx / s; + xform[1] = -ty / s; + xform[2] = 1.0 / s; + return true; + } + } + + // Next, try the case where node0 is a descendant of node1 + head = src->graph_heads[node1]; + tail = src->graph_tails[node1]; + for (PARINT cindex = head; cindex != tail; cindex++) { + PARINT child = src->graph_children[cindex]; + if (par_bubbles__get_local(src, xform, child, node0)) { + return true; + } + } + + // If we reach here, then node0 is neither an ancestor nor a descendant, so + // do something hacky and return false. It would be best to find the lowest + // common ancestor, but let's just assume the lowest common ancestor is 0. + PARFLT xform2[3] = {0, 0, 1}; + par_bubbles_transform_local(bubbles, xform, node0, 0); + par_bubbles_transform_local(bubbles, xform2, 0, node1); + xform[0] *= xform2[2]; + xform[1] *= xform2[2]; + xform[2] *= xform2[2]; + xform[0] += xform2[0]; + xform[1] += xform2[1]; + + return false; +} + +void par_bubbles_set_orientation(par_bubbles_orientation ostate) +{ + par_bubbles__ostate = ostate; +} + +#undef PARINT +#undef PARFLT +#endif // PAR_BUBBLES_IMPLEMENTATION +#endif // PAR_BUBBLES_H + +// par_bubbles is distributed under the MIT license: +// +// Copyright (c) 2019 Philip Rideout +// +// 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. diff --git a/source/engine/thirdparty/par/par_camera_control.h b/source/engine/thirdparty/par/par_camera_control.h new file mode 100644 index 0000000..0ffc8eb --- /dev/null +++ b/source/engine/thirdparty/par/par_camera_control.h @@ -0,0 +1,1095 @@ +// CAMERA CONTROL :: https://github.com/prideout/par +// Enables orbit controls (a.k.a. tumble, arcball, trackball) or pan-and-zoom like Google Maps. +// +// This simple library controls a camera that orbits or pans over a 3D object or terrain. No +// assumptions are made about the renderer or platform. In a sense, this is just a math library. +// Clients notify the controller of generic input events (e.g. grab_begin, grab_move, grab_end) +// and retrieve the look-at vectors (position, target, up) or 4x4 matrices for the camera. +// +// In map mode, users can control their viewing position by grabbing and dragging locations in the +// scene. Sometimes this is known as "through-the-lens" camera control. In this mode the controller +// takes an optional raycast callback to support precise grabbing behavior. If this is not required +// for your use case (e.g. a top-down terrain with an orthgraphic projection), provide NULL for the +// callback and the library will simply raycast against the ground plane. +// +// When the controller is in orbit mode, the orientation of the camera is defined by a Y-axis +// rotation followed by an X-axis rotation. Additionally, the camera can fly forward or backward +// along the viewing direction. +// +// For a complex usage example, go to: +// https://github.com/prideout/camera_demo +// +// Distributed under the MIT License, see bottom of file. + +#ifndef PAR_CAMERA_CONTROL_H +#define PAR_CAMERA_CONTROL_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef PARCC_USE_DOUBLE +typedef double parcc_float; +#else +typedef float parcc_float; +#endif + +// Opaque handle to a camera controller. +typedef struct parcc_context_s parcc_context; + +// The camera controller can be configured using either a VERTICAL or HORIZONTAL field of view. +// This specifies which of the two FOV angles should be held constant. For example, if you use a +// horizontal FOV, shrinking the viewport width will change the height of the frustum, but will +// leave the frustum width intact. +typedef enum { + PARCC_VERTICAL, + PARCC_HORIZONTAL, +} parcc_fov; + +// The controller can be configured in orbit mode or pan-and-zoom mode. +typedef enum { + PARCC_ORBIT, // aka tumble, trackball, or arcball + PARCC_MAP, // pan and zoom like Google Maps +} parcc_mode; + +// Pan and zoom constraints for MAP mode. +typedef enum { + // No constraints except that map_min_distance is enforced. + PARCC_CONSTRAIN_NONE, + + // Constrains pan and zoom to limit the viewport's extent along the FOV axis so that it always + // lies within the map_extent. With this constraint, it is possible to see the entire map at + // once, but some portion of the map must always be visible. + PARCC_CONSTRAIN_AXIS, + + // Constrains pan and zoom to limit the viewport's extent into the map_extent. With this + // constraint, it may be impossible to see the entire map at once, but users can never see any + // of the empty void that lies outside the map extent. + PARCC_CONSTRAIN_FULL, +} parcc_constraint; + +// Optional user-provided ray casting function to enable precise panning behavior. +typedef bool (*parcc_raycast_fn)(const parcc_float origin[3], const parcc_float dir[3], + parcc_float* t, void* userdata); + +// The parcc_properties structure holds all user-controlled state in the library. +// Many fields are swapped with fallback values values if they are zero-filled. + +typedef struct { + // REQUIRED PROPERTIES + parcc_mode mode; // must be PARCC_ORBIT or PARCC_MAP + int viewport_width; // horizontal extent in pixels + int viewport_height; // vertical extent in pixels + parcc_float near_plane; // distance between camera and near clipping plane + parcc_float far_plane; // distance between camera and far clipping plane + + // PROPERTIES WITH DEFAULT VALUES + parcc_fov fov_orientation; // defaults to PARCC_VERTICAL + parcc_float fov_degrees; // full field-of-view angle (not half-angle), defaults to 33. + parcc_float zoom_speed; // defaults to 0.01 + parcc_float home_target[3]; // world-space coordinate, defaults to (0,0,0) + parcc_float home_upward[3]; // unit-length vector, defaults to (0,1,0) + + // MAP-MODE PROPERTIES + parcc_float map_extent[2]; // (required) size of quad centered at home_target + parcc_float map_plane[4]; // plane equation with normalized XYZ, defaults to (0,0,1,0) + parcc_constraint map_constraint; // defaults to PARCC_CONSTRAIN_NONE + parcc_float map_min_distance; // constrains zoom using distance between camera and plane + parcc_raycast_fn raycast_function; // defaults to a simple plane intersector + void* raycast_userdata; // arbitrary data for the raycast callback + + // ORBIT-MODE PROPERTIES + parcc_float home_vector[3]; // non-unitized vector from home_target to initial eye position + parcc_float orbit_speed[2]; // rotational speed (defaults to 0.01) + parcc_float orbit_zoom_speed; // zoom speed (defaults to 0.01) + parcc_float orbit_strafe_speed[2]; // strafe speed (defaults to 0.001) + +} parcc_properties; + +// The parcc_frame structure holds captured camera state for Van Wijk animation and bookmarks. +// From the user's perspective, this should be treated as an opaque structure. +// clang-format off + +typedef struct { + parcc_mode mode; + union { + struct { parcc_float extent, center[2]; }; + struct { parcc_float phi, theta, pivot_distance, pivot[3]; }; + }; +} parcc_frame; + +// clang-format on +// CONTROLLER CONSTRUCTOR AND DESTRUCTOR + +// The constructor is the only function in the library that performs heap allocation. It +// does not retain the given properties pointer, it simply copies values out of it. + +parcc_context* parcc_create_context(const parcc_properties* props); +void parcc_destroy_context(parcc_context* ctx); + +// PROPERTY SETTERS AND GETTERS + +// The client owns its own instance of the property struct and these functions simply copy values in +// or out of the given struct. Changing some properties might cause a small amount of work to be +// performed. + +void parcc_set_properties(parcc_context* context, const parcc_properties* props); +void parcc_get_properties(const parcc_context* context, parcc_properties* out); + +// CAMERA RETRIEVAL FUNCTIONS + +void parcc_get_look_at(const parcc_context* ctx, parcc_float eyepos[3], parcc_float target[3], + parcc_float upward[3]); +void parcc_get_matrices(const parcc_context* ctx, parcc_float projection[16], parcc_float view[16]); + +// SCREEN-SPACE FUNCTIONS FOR USER INTERACTION + +// Each of these functions take winx / winy coords. +// - The winx coord should be in [0, viewport_width) where 0 is the left-most column. +// - The winy coord should be in [0, viewport_height) where 0 is the top-most row. +// +// The scrolldelta argument is used for zooming. Positive values indicate "zoom in" in MAP mode or +// "move forward" in ORBIT mode. This gets scaled by zoom_speed. In MAP mode, the zoom speed is also +// scaled by distance-to-ground. To prevent zooming in too far, use a non-zero value for +// map_min_distance. +// +// The strafe argument exists only for ORBIT mode and is typically associated with the right mouse +// button or two-finger dragging. This is used to pan the view. Note that orbit mode maintains a +// "pivot point" which is initially set to home_target. When flying forward or backward, the pivot +// does not move. However strafing will cause it to move around. This matches sketchfab behavior. +// When flying past the orbit point, the controller enters a "flipped" state to prevent the flight +// direction from suddenly changing. + +void parcc_grab_begin(parcc_context* context, int winx, int winy, bool strafe); +void parcc_grab_update(parcc_context* context, int winx, int winy); +void parcc_grab_end(parcc_context* context); +void parcc_zoom(parcc_context* context, int winx, int winy, parcc_float scrolldelta); +bool parcc_raycast(parcc_context* context, int winx, int winy, parcc_float result[3]); + +// BOOKMARKING AND VAN WIJK INTERPOLATION FUNCTIONS + +parcc_frame parcc_get_current_frame(const parcc_context* context); +parcc_frame parcc_get_home_frame(const parcc_context* context); +void parcc_goto_frame(parcc_context* context, parcc_frame state); +parcc_frame parcc_interpolate_frames(parcc_frame a, parcc_frame b, double t); +double parcc_get_interpolation_duration(parcc_frame a, parcc_frame b); + +#ifdef __cplusplus +} +#endif + +// ----------------------------------------------------------------------------- +// END PUBLIC API +// ----------------------------------------------------------------------------- +#ifdef PAR_CAMERA_CONTROL_IMPLEMENTATION + +#include +#include +#include +#include + +#define PARCC_PI (3.14159265359) +#define PARCC_MIN(a, b) (a > b ? b : a) +#define PARCC_MAX(a, b) (a > b ? a : b) +#define PARCC_CLAMP(v, lo, hi) PARCC_MAX(lo, PARCC_MIN(hi, v)) +#define PARCC_CALLOC(T, N) ((T*)calloc(N * sizeof(T), 1)) +#define PARCC_FREE(BUF) free(BUF) +#define PARCC_SWAP(T, A, B) \ + { \ + T tmp = B; \ + B = A; \ + A = tmp; \ + } + +static void parcc_float4_set(parcc_float dst[4], parcc_float x, parcc_float y, parcc_float z, + parcc_float w) { + dst[0] = x; + dst[1] = y; + dst[2] = z; + dst[3] = w; +} + +static parcc_float parcc_float4_dot(const parcc_float a[4], const parcc_float b[4]) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; +} + +static void parcc_float3_set(parcc_float dst[3], parcc_float x, parcc_float y, parcc_float z) { + dst[0] = x; + dst[1] = y; + dst[2] = z; +} + +static void parcc_float3_add(parcc_float dst[3], const parcc_float a[3], const parcc_float b[3]) { + dst[0] = a[0] + b[0]; + dst[1] = a[1] + b[1]; + dst[2] = a[2] + b[2]; +} + +static void parcc_float3_subtract(parcc_float dst[3], const parcc_float a[3], + const parcc_float b[3]) { + dst[0] = a[0] - b[0]; + dst[1] = a[1] - b[1]; + dst[2] = a[2] - b[2]; +} + +static parcc_float parcc_float3_dot(const parcc_float a[3], const parcc_float b[3]) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; +} + +static void parcc_float3_cross(parcc_float dst[3], const parcc_float a[3], const parcc_float b[3]) { + dst[0] = a[1] * b[2] - a[2] * b[1]; + dst[1] = a[2] * b[0] - a[0] * b[2]; + dst[2] = a[0] * b[1] - a[1] * b[0]; +} + +static void parcc_float3_scale(parcc_float dst[3], parcc_float v) { + dst[0] *= v; + dst[1] *= v; + dst[2] *= v; +} + +static void parcc_float3_lerp(parcc_float dst[3], const parcc_float a[3], const parcc_float b[3], + parcc_float t) { + dst[0] = a[0] * (1 - t) + b[0] * t; + dst[1] = a[1] * (1 - t) + b[1] * t; + dst[2] = a[2] * (1 - t) + b[2] * t; +} + +static parcc_float parcc_float_lerp(const parcc_float a, const parcc_float b, parcc_float t) { + return a * (1 - t) + b * t; +} + +static parcc_float parcc_float3_length(const parcc_float dst[3]) { + return sqrtf(parcc_float3_dot(dst, dst)); +} + +static void parcc_float3_normalize(parcc_float dst[3]) { + parcc_float3_scale(dst, 1.0f / parcc_float3_length(dst)); +} + +static void parcc_float3_copy(parcc_float dst[3], const parcc_float src[3]) { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; +} + +static void parcc_float16_look_at(float dst[16], const float eye[3], const float target[3], + const float up[3]) { + parcc_float v3X[3]; + parcc_float v3Y[3]; + parcc_float v3Z[3]; + + parcc_float3_copy(v3Y, up); + parcc_float3_normalize(v3Y); + + parcc_float3_subtract(v3Z, eye, target); + parcc_float3_normalize(v3Z); + + parcc_float3_cross(v3X, v3Y, v3Z); + parcc_float3_normalize(v3X); + + parcc_float3_cross(v3Y, v3Z, v3X); + + parcc_float4_set(dst + 0, v3X[0], v3Y[0], v3Z[0], 0); + parcc_float4_set(dst + 4, v3X[1], v3Y[1], v3Z[1], 0); + parcc_float4_set(dst + 8, v3X[2], v3Y[2], v3Z[2], 0); + parcc_float4_set(dst + 12, // + -parcc_float3_dot(v3X, eye), // + -parcc_float3_dot(v3Y, eye), // + -parcc_float3_dot(v3Z, eye), 1.0); +} + +static void parcc_float16_perspective_y(float dst[16], float fovy_degrees, float aspect_ratio, + float near, float far) { + const parcc_float fovy_radians = fovy_degrees * PARCC_PI / 180; + const parcc_float f = tan(PARCC_PI / 2.0 - 0.5 * fovy_radians); + const parcc_float rangeinv = 1.0f / (near - far); + dst[0] = f / aspect_ratio; + dst[1] = 0; + dst[2] = 0; + dst[3] = 0; + dst[4] = 0; + dst[5] = f; + dst[6] = 0; + dst[7] = 0; + dst[8] = 0; + dst[9] = 0; + dst[10] = (near + far) * rangeinv; + dst[11] = -1; + dst[12] = 0; + dst[13] = 0; + dst[14] = ((near * far) * rangeinv) * 2.0f; + dst[15] = 0; +} + +static void parcc_float16_perspective_x(float dst[16], float fovy_degrees, float aspect_ratio, + float near, float far) { + const parcc_float fovy_radians = fovy_degrees * PARCC_PI / 180; + const parcc_float f = tan(PARCC_PI / 2.0 - 0.5 * fovy_radians); + const parcc_float rangeinv = 1.0 / (near - far); + dst[0] = f; + dst[1] = 0; + dst[2] = 0; + dst[3] = 0; + dst[4] = 0; + dst[5] = f * aspect_ratio; + dst[6] = 0; + dst[7] = 0; + dst[8] = 0; + dst[9] = 0; + dst[10] = (near + far) * rangeinv; + dst[11] = -1; + dst[12] = 0; + dst[13] = 0; + dst[14] = ((near * far) * rangeinv) * 2.0; + dst[15] = 0; +} + +// Implementation note about the "parcc_frame" POD. This is an abbreviated camera state +// used for animation and bookmarking. +// +// MAP mode: +// - zoom level is represented with the extent of the rectangle formed by the intersection of +// the frustum with the viewing plane at home_target. It is either a width or a height, depending +// on fov_orientation. +// - the pan offset is stored as a 2D vector from home_target that gets projected to map_plane. +// +// ORBIT mode: +// - phi = X-axis rotation in [-pi/2, +pi/2] (applies first) +// - theta = Y-axis rotation in [-pi, +pi] (applies second) +// - pivot is initialized to home_center but might be changed via strafe +// - pivot_distance is the distance between eye and pivot (negative distance = orbit_flipped) + +typedef enum { PARCC_GRAB_NONE, PARCC_GRAB, PARCC_GRAB_STRAFE } parcc_grab_state; + +static const parcc_float PARCC_MAX_PHI = PARCC_PI / 2.0 - 0.001; + +struct parcc_context_s { + parcc_properties props; + parcc_float eyepos[3]; + parcc_float target[3]; + parcc_grab_state grabbing; + parcc_float grab_point_pivot[3]; + parcc_float grab_point_far[3]; + parcc_float grab_point_world[3]; + parcc_float grab_point_eyepos[3]; + parcc_float grab_point_target[3]; + parcc_frame grab_frame; + int grab_winx; + int grab_winy; + parcc_float orbit_pivot[3]; + bool orbit_flipped; +}; + +static bool parcc_raycast_plane(const parcc_float origin[3], const parcc_float dir[3], + parcc_float* t, void* userdata); + +static void parcc_get_ray_far(parcc_context* context, int winx, int winy, parcc_float result[3]); + +static void parcc_move_with_constraints(parcc_context* context, const parcc_float eyepos[3], + const parcc_float target[3]); + +parcc_context* parcc_create_context(const parcc_properties* props) { + parcc_context* context = PARCC_CALLOC(parcc_context, 1); + parcc_set_properties(context, props); + parcc_goto_frame(context, parcc_get_home_frame(context)); + return context; +} + +void parcc_get_properties(const parcc_context* context, parcc_properties* props) { + *props = context->props; +} + +void parcc_set_properties(parcc_context* context, const parcc_properties* pprops) { + parcc_properties props = *pprops; + if (props.fov_degrees == 0) { + props.fov_degrees = 33; + } + if (props.zoom_speed == 0) { + props.zoom_speed = 0.01; + } + if (parcc_float3_dot(props.home_upward, props.home_upward) == 0) { + props.home_upward[1] = 1; + } + if (parcc_float4_dot(props.map_plane, props.map_plane) == 0) { + props.map_plane[2] = 1; + } + if (props.orbit_speed[0] == 0) { + props.orbit_speed[0] = 0.01; + } + if (props.orbit_speed[1] == 0) { + props.orbit_speed[1] = 0.01; + } + if (props.orbit_zoom_speed == 0) { + props.orbit_zoom_speed = 0.01; + } + if (props.orbit_strafe_speed[0] == 0) { + props.orbit_strafe_speed[0] = 0.001; + } + if (props.orbit_strafe_speed[1] == 0) { + props.orbit_strafe_speed[1] = 0.001; + } + + if (parcc_float3_dot(props.home_vector, props.home_vector) == 0) { + const parcc_float extent = props.fov_orientation == PARCC_VERTICAL ? props.map_extent[1] : + props.map_extent[0]; + const parcc_float fov = props.fov_degrees * PARCC_PI / 180.0; + props.home_vector[0] = 0; + props.home_vector[1] = 0; + props.home_vector[2] = 0.5 * extent / tan(fov / 2.0); + } + + const bool more_constrained = (int)props.map_constraint > (int)context->props.map_constraint; + const bool orientation_changed = props.fov_orientation != context->props.fov_orientation; + const bool viewport_resized = props.viewport_height != context->props.viewport_height || + props.viewport_width != context->props.viewport_width; + + context->props = props; + + if (props.mode == PARCC_MAP && (more_constrained || orientation_changed || + (viewport_resized && context->props.map_constraint == PARCC_CONSTRAIN_FULL))) { + parcc_move_with_constraints(context, context->eyepos, context->target); + } +} + +void parcc_destroy_context(parcc_context* context) { PARCC_FREE(context); } + +void parcc_get_matrices(const parcc_context* context, parcc_float projection[16], + parcc_float view[16]) { + parcc_float gaze[3]; + parcc_float3_subtract(gaze, context->target, context->eyepos); + parcc_float3_normalize(gaze); + + parcc_float right[3]; + parcc_float3_cross(right, gaze, context->props.home_upward); + parcc_float3_normalize(right); + + parcc_float upward[3]; + parcc_float3_cross(upward, right, gaze); + parcc_float3_normalize(upward); + + parcc_float16_look_at(view, context->eyepos, context->target, upward); + const parcc_properties props = context->props; + const parcc_float aspect = (parcc_float)props.viewport_width / props.viewport_height; + const parcc_float fov = props.fov_degrees; + if (context->props.fov_orientation == PARCC_HORIZONTAL) { + parcc_float16_perspective_x(projection, fov, aspect, props.near_plane, props.far_plane); + } else { + parcc_float16_perspective_y(projection, fov, aspect, props.near_plane, props.far_plane); + } +} + +void parcc_get_look_at(const parcc_context* ctx, parcc_float eyepos[3], parcc_float target[3], + parcc_float upward[3]) { + parcc_float3_copy(eyepos, ctx->eyepos); + parcc_float3_copy(target, ctx->target); + if (upward) { + parcc_float gaze[3]; + parcc_float3_subtract(gaze, ctx->target, ctx->eyepos); + parcc_float3_normalize(gaze); + + parcc_float right[3]; + parcc_float3_cross(right, gaze, ctx->props.home_upward); + parcc_float3_normalize(right); + + parcc_float3_cross(upward, right, gaze); + parcc_float3_normalize(upward); + } +} + +void parcc_grab_begin(parcc_context* context, int winx, int winy, bool strafe) { + context->grabbing = strafe ? PARCC_GRAB_STRAFE : PARCC_GRAB; + + if (context->props.mode == PARCC_MAP) { + if (!parcc_raycast(context, winx, winy, context->grab_point_world)) { + return; + } + parcc_get_ray_far(context, winx, winy, context->grab_point_far); + } + + if (context->props.mode == PARCC_ORBIT) { + context->grab_frame = parcc_get_current_frame(context); + context->grab_winx = winx; + context->grab_winy = winy; + parcc_float3_copy(context->grab_point_pivot, context->orbit_pivot); + } + + parcc_float3_copy(context->grab_point_eyepos, context->eyepos); + parcc_float3_copy(context->grab_point_target, context->target); +} + +void parcc_grab_update(parcc_context* context, int winx, int winy) { + if (context->props.mode == PARCC_MAP && context->grabbing == PARCC_GRAB) { + parcc_float u_vec[3]; + parcc_float3_subtract(u_vec, context->grab_point_world, context->grab_point_eyepos); + const parcc_float u_len = parcc_float3_length(u_vec); + + parcc_float v_vec[3]; + parcc_float3_subtract(v_vec, context->grab_point_far, context->grab_point_world); + const parcc_float v_len = parcc_float3_length(v_vec); + + parcc_float far_point[3]; + parcc_get_ray_far(context, winx, winy, far_point); + + parcc_float translation[3]; + parcc_float3_subtract(translation, far_point, context->grab_point_far); + parcc_float3_scale(translation, -u_len / v_len); + + parcc_float eyepos[3]; + parcc_float3_add(eyepos, context->grab_point_eyepos, translation); + + parcc_float target[3]; + parcc_float3_add(target, context->grab_point_target, translation); + + parcc_move_with_constraints(context, eyepos, target); + } + + if (context->props.mode == PARCC_ORBIT && context->grabbing == PARCC_GRAB) { + parcc_frame frame = parcc_get_current_frame(context); + + const int delx = context->grab_winx - winx; + const int dely = context->grab_winy - winy; + + const parcc_float phi = dely * context->props.orbit_speed[1]; + const parcc_float theta = delx * context->props.orbit_speed[0]; + + frame.phi = context->grab_frame.phi + phi; + frame.theta = context->grab_frame.theta + theta; + frame.phi = PARCC_CLAMP(frame.phi, -PARCC_MAX_PHI, PARCC_MAX_PHI); + + parcc_goto_frame(context, frame); + } + + if (context->props.mode == PARCC_ORBIT && context->grabbing == PARCC_GRAB_STRAFE) { + parcc_float upward[3]; + + parcc_float gaze[3]; + parcc_float3_subtract(gaze, context->target, context->eyepos); + parcc_float3_normalize(gaze); + + parcc_float right[3]; + parcc_float3_cross(right, gaze, context->props.home_upward); + parcc_float3_normalize(right); + + parcc_float3_cross(upward, right, gaze); + parcc_float3_normalize(upward); + + const int delx = context->grab_winx - winx; + const int dely = context->grab_winy - winy; + + const parcc_float dx = delx * context->props.orbit_strafe_speed[0]; + const parcc_float dy = dely * context->props.orbit_strafe_speed[1]; + + parcc_float3_scale(right, dx); + parcc_float3_scale(upward, dy); + + parcc_float movement[3]; + parcc_float3_add(movement, upward, right); + + parcc_float3_add(context->orbit_pivot, context->grab_point_pivot, movement); + parcc_float3_add(context->eyepos, context->grab_point_eyepos, movement); + parcc_float3_add(context->target, context->grab_point_target, movement); + } +} + +void parcc_zoom(parcc_context* context, int winx, int winy, parcc_float scrolldelta) { + if (context->props.mode == PARCC_MAP) { + parcc_float grab_point_world[3]; + if (!parcc_raycast(context, winx, winy, grab_point_world)) { + return; + } + + // We intentionally avoid normalizing this vector since you usually + // want to slow down when approaching the surface. + parcc_float u_vec[3]; + parcc_float3_subtract(u_vec, grab_point_world, context->eyepos); + + // Prevent getting stuck; this needs to be done regardless + // of the user's min_distance setting, which is enforced in + // parcc_move_with_constraints. + const parcc_float zoom_speed = context->props.zoom_speed; + if (scrolldelta > 0.0) { + const parcc_float distance_to_surface = parcc_float3_length(u_vec); + if (distance_to_surface < zoom_speed) { + return; + } + } + + parcc_float3_scale(u_vec, scrolldelta * zoom_speed); + + parcc_float eyepos[3]; + parcc_float3_add(eyepos, context->eyepos, u_vec); + + parcc_float target[3]; + parcc_float3_add(target, context->target, u_vec); + + parcc_move_with_constraints(context, eyepos, target); + } + + if (context->props.mode == PARCC_ORBIT) { + parcc_float gaze[3]; + parcc_float3_subtract(gaze, context->target, context->eyepos); + parcc_float3_normalize(gaze); + parcc_float3_scale(gaze, context->props.orbit_zoom_speed * scrolldelta); + + parcc_float v0[3]; + parcc_float3_subtract(v0, context->orbit_pivot, context->eyepos); + + parcc_float3_add(context->eyepos, context->eyepos, gaze); + parcc_float3_add(context->target, context->target, gaze); + + parcc_float v1[3]; + parcc_float3_subtract(v1, context->orbit_pivot, context->eyepos); + + if (parcc_float3_dot(v0, v1) < 0) { + context->orbit_flipped = !context->orbit_flipped; + } + } +} + +void parcc_grab_end(parcc_context* context) { context->grabbing = PARCC_GRAB_NONE; } + +bool parcc_raycast(parcc_context* context, int winx, int winy, parcc_float result[3]) { + const parcc_float width = context->props.viewport_width; + const parcc_float height = context->props.viewport_height; + const parcc_float fov = context->props.fov_degrees * PARCC_PI / 180.0; + const bool vertical_fov = context->props.fov_orientation == PARCC_VERTICAL; + const parcc_float* origin = context->eyepos; + + parcc_float gaze[3]; + parcc_float3_subtract(gaze, context->target, origin); + parcc_float3_normalize(gaze); + + parcc_float right[3]; + parcc_float3_cross(right, gaze, context->props.home_upward); + parcc_float3_normalize(right); + + parcc_float upward[3]; + parcc_float3_cross(upward, right, gaze); + parcc_float3_normalize(upward); + + // Remap the grid coordinate into [-1, +1] and shift it to the pixel center. + const parcc_float u = 2.0 * (winx + 0.5) / width - 1.0; + const parcc_float v = 2.0 * (winy + 0.5) / height - 1.0; + + // Compute the tangent of the field-of-view angle as well as the aspect ratio. + const parcc_float tangent = tan(fov / 2.0); + const parcc_float aspect = width / height; + + // Adjust the gaze so it goes through the pixel of interest rather than the grid center. + if (vertical_fov) { + parcc_float3_scale(right, tangent * u * aspect); + parcc_float3_scale(upward, tangent * v); + } else { + parcc_float3_scale(right, tangent * u); + parcc_float3_scale(upward, tangent * v / aspect); + } + parcc_float3_add(gaze, gaze, right); + parcc_float3_add(gaze, gaze, upward); + parcc_float3_normalize(gaze); + + // Invoke the user's callback or fallback function. + parcc_raycast_fn callback = context->props.raycast_function; + parcc_raycast_fn fallback = parcc_raycast_plane; + void* userdata = context->props.raycast_userdata; + if (!callback) { + callback = fallback; + userdata = context; + } + + // If the ray misses, then try the fallback function. + parcc_float t; + if (!callback(origin, gaze, &t, userdata)) { + if (callback == fallback) { + return false; + } + if (!fallback(origin, gaze, &t, context)) { + return false; + } + } + + parcc_float3_scale(gaze, t); + parcc_float3_add(result, origin, gaze); + return true; +} + +parcc_frame parcc_get_current_frame(const parcc_context* context) { + parcc_frame frame; + frame.mode = context->props.mode; + + if (context->props.mode == PARCC_MAP) { + const parcc_float* origin = context->eyepos; + const parcc_float* upward = context->props.home_upward; + + parcc_float direction[3]; + parcc_float3_subtract(direction, context->target, origin); + parcc_float3_normalize(direction); + + parcc_float distance; + parcc_raycast_plane(origin, direction, &distance, (void*)context); + + const parcc_float fov = context->props.fov_degrees * PARCC_PI / 180.0; + const parcc_float half_extent = distance * tan(fov / 2); + + parcc_float target[3]; + parcc_float3_scale(direction, distance); + parcc_float3_add(target, origin, direction); + + // Compute the tangent frame defined by the map_plane normal and the home_upward vector. + parcc_float uvec[3]; + parcc_float vvec[3]; + parcc_float target_to_eye[3]; + + parcc_float3_copy(target_to_eye, context->props.map_plane); + parcc_float3_cross(uvec, upward, target_to_eye); + parcc_float3_cross(vvec, target_to_eye, uvec); + + parcc_float3_subtract(target, target, context->props.home_target); + + frame.extent = half_extent * 2; + frame.center[0] = parcc_float3_dot(uvec, target); + frame.center[1] = parcc_float3_dot(vvec, target); + } + + if (context->props.mode == PARCC_ORBIT) { + parcc_float pivot_to_eye[3]; + parcc_float3_subtract(pivot_to_eye, context->eyepos, context->orbit_pivot); + const parcc_float d = parcc_float3_length(pivot_to_eye); + const parcc_float x = pivot_to_eye[0] / d; + const parcc_float y = pivot_to_eye[1] / d; + const parcc_float z = pivot_to_eye[2] / d; + frame.phi = asin(y); + frame.theta = atan2(x, z); + frame.pivot_distance = context->orbit_flipped ? -d : d; + parcc_float3_copy(frame.pivot, context->orbit_pivot); + } + + return frame; +} + +parcc_frame parcc_get_home_frame(const parcc_context* context) { + const parcc_float width = context->props.viewport_width; + const parcc_float height = context->props.viewport_height; + const parcc_float aspect = width / height; + + parcc_frame frame; + frame.mode = context->props.mode; + + if (frame.mode == PARCC_MAP) { + const parcc_float map_width = context->props.map_extent[0] / 2; + const parcc_float map_height = context->props.map_extent[1] / 2; + const bool horiz = context->props.fov_orientation == PARCC_HORIZONTAL; + frame.extent = horiz ? context->props.map_extent[0] : context->props.map_extent[1]; + frame.center[0] = 0; + frame.center[1] = 0; + if (context->props.map_constraint != PARCC_CONSTRAIN_FULL) { + return frame; + } + if (horiz) { + parcc_float vp_width = frame.extent / 2; + parcc_float vp_height = vp_width / aspect; + if (map_height < vp_height) { + frame.extent = 2 * map_height * aspect; + } + } else { + parcc_float vp_height = frame.extent / 2; + parcc_float vp_width = vp_height * aspect; + if (map_width < vp_width) { + frame.extent = 2 * map_width / aspect; + } + } + } + + if (frame.mode == PARCC_ORBIT) { + frame.theta = frame.phi = 0; + parcc_float3_copy(frame.pivot, context->props.home_target); + frame.pivot_distance = parcc_float3_length(context->props.home_vector); + } + + return frame; +} + +void parcc_goto_frame(parcc_context* context, parcc_frame frame) { + if (context->props.mode == PARCC_MAP) { + const parcc_float* upward = context->props.home_upward; + const parcc_float half_extent = frame.extent / 2.0; + const parcc_float fov = context->props.fov_degrees * PARCC_PI / 180.0; + const parcc_float distance = half_extent / tan(fov / 2); + + // Compute the tangent frame defined by the map_plane normal and the home_upward vector. + parcc_float uvec[3]; + parcc_float vvec[3]; + parcc_float target_to_eye[3]; + + parcc_float3_copy(target_to_eye, context->props.map_plane); + parcc_float3_cross(uvec, upward, target_to_eye); + parcc_float3_cross(vvec, target_to_eye, uvec); + + // Scale the U and V components by the frame coordinate. + parcc_float3_scale(uvec, frame.center[0]); + parcc_float3_scale(vvec, frame.center[1]); + + // Obtain the new target position by adding U and V to home_target. + parcc_float3_copy(context->target, context->props.home_target); + parcc_float3_add(context->target, context->target, uvec); + parcc_float3_add(context->target, context->target, vvec); + + // Obtain the new eye position by adding the scaled plane normal to the new target + // position. + parcc_float3_scale(target_to_eye, distance); + parcc_float3_add(context->eyepos, context->target, target_to_eye); + } + + if (context->props.mode == PARCC_ORBIT) { + parcc_float3_copy(context->orbit_pivot, frame.pivot); + const parcc_float x = sin(frame.theta) * cos(frame.phi); + const parcc_float y = sin(frame.phi); + const parcc_float z = cos(frame.theta) * cos(frame.phi); + parcc_float3_set(context->eyepos, x, y, z); + parcc_float3_scale(context->eyepos, fabs(frame.pivot_distance)); + parcc_float3_add(context->eyepos, context->eyepos, context->orbit_pivot); + + context->orbit_flipped = frame.pivot_distance < 0; + + parcc_float3_set(context->target, x, y, z); + parcc_float3_scale(context->target, context->orbit_flipped ? 1.0 : -1.0); + parcc_float3_add(context->target, context->target, context->eyepos); + } +} + +parcc_frame parcc_interpolate_frames(parcc_frame a, parcc_frame b, double t) { + parcc_frame frame; + if (a.mode == PARCC_MAP && b.mode == PARCC_MAP) { + const double rho = sqrt(2.0); + const double rho2 = 2, rho4 = 4; + const double ux0 = a.center[0], uy0 = a.center[1], w0 = a.extent; + const double ux1 = b.center[0], uy1 = b.center[1], w1 = b.extent; + const double dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, d1 = sqrt(d2); + const double b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2.0 * w0 * rho2 * d1); + const double b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2.0 * w1 * rho2 * d1); + const double r0 = log(sqrt(b0 * b0 + 1.0) - b0); + const double r1 = log(sqrt(b1 * b1 + 1) - b1); + const double dr = r1 - r0; + const int valid_dr = (dr == dr) && dr != 0; + const double S = (valid_dr ? dr : log(w1 / w0)) / rho; + const double s = t * S; + if (valid_dr) { + const double coshr0 = cosh(r0); + const double u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0)); + frame.center[0] = ux0 + u * dx; + frame.center[1] = uy0 + u * dy; + frame.extent = w0 * coshr0 / cosh(rho * s + r0); + return frame; + } + frame.center[0] = ux0 + t * dx; + frame.center[1] = uy0 + t * dy; + frame.extent = w0 * exp(rho * s); + } else if (a.mode == PARCC_ORBIT && b.mode == PARCC_ORBIT) { + frame.phi = parcc_float_lerp(a.phi, b.phi, t); + frame.theta = parcc_float_lerp(a.theta, b.theta, t); + frame.pivot_distance = parcc_float_lerp(a.pivot_distance, b.pivot_distance, t); + parcc_float3_lerp(frame.pivot, a.pivot, b.pivot, t); + } else { + // Cross-mode interpolation is not implemented. + frame = b; + } + return frame; +} + +double parcc_get_interpolation_duration(parcc_frame a, parcc_frame b) { + if (a.mode == PARCC_MAP && b.mode == PARCC_MAP) { + const double rho = sqrt(2.0); + const double rho2 = 2, rho4 = 4; + const double ux0 = a.center[0], uy0 = a.center[1], w0 = a.extent; + const double ux1 = b.center[0], uy1 = b.center[1], w1 = b.extent; + const double dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, d1 = sqrt(d2); + const double b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2.0 * w0 * rho2 * d1); + const double b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2.0 * w1 * rho2 * d1); + const double r0 = log(sqrt(b0 * b0 + 1.0) - b0); + const double r1 = log(sqrt(b1 * b1 + 1) - b1); + const double dr = r1 - r0; + const int valid_dr = (dr == dr) && dr != 0; + const double S = (valid_dr ? dr : log(w1 / w0)) / rho; + return fabs(S); + } else if (a.mode == PARCC_ORBIT && b.mode == PARCC_ORBIT) { + return 1; + } else { + // Cross-mode interpolation is not implemented. + } + return 0; +} + +static bool parcc_raycast_plane(const parcc_float origin[3], const parcc_float dir[3], + parcc_float* t, void* userdata) { + parcc_context* context = (parcc_context*)userdata; + const parcc_float* plane = context->props.map_plane; + parcc_float n[3] = {plane[0], plane[1], plane[2]}; + parcc_float p0[3] = {plane[0], plane[1], plane[2]}; + parcc_float3_scale(p0, plane[3]); + const parcc_float denom = -parcc_float3_dot(n, dir); + if (denom > 1e-6 || denom < -1e-6) { + parcc_float p0l0[3]; + parcc_float3_subtract(p0l0, p0, origin); + *t = parcc_float3_dot(p0l0, n) / -denom; + return *t >= 0; + } + return false; +} + +// Finds the point on the frustum's far plane that a pick ray intersects. +static void parcc_get_ray_far(parcc_context* context, int winx, int winy, parcc_float result[3]) { + const parcc_float width = context->props.viewport_width; + const parcc_float height = context->props.viewport_height; + const parcc_float fov = context->props.fov_degrees * PARCC_PI / 180.0; + const bool vertical_fov = context->props.fov_orientation == PARCC_VERTICAL; + const parcc_float* origin = context->eyepos; + + parcc_float gaze[3]; + parcc_float3_subtract(gaze, context->target, origin); + parcc_float3_normalize(gaze); + + parcc_float right[3]; + parcc_float3_cross(right, gaze, context->props.home_upward); + parcc_float3_normalize(right); + + parcc_float upward[3]; + parcc_float3_cross(upward, right, gaze); + parcc_float3_normalize(upward); + + // Remap the grid coordinate into [-1, +1] and shift it to the pixel center. + const parcc_float u = 2.0 * (winx + 0.5) / width - 1.0; + const parcc_float v = 2.0 * (winy + 0.5) / height - 1.0; + + // Compute the tangent of the field-of-view angle as well as the aspect ratio. + const parcc_float tangent = tan(fov / 2.0); + const parcc_float aspect = width / height; + + // Adjust the gaze so it goes through the pixel of interest rather than the grid center. + if (vertical_fov) { + parcc_float3_scale(right, tangent * u * aspect); + parcc_float3_scale(upward, tangent * v); + } else { + parcc_float3_scale(right, tangent * u); + parcc_float3_scale(upward, tangent * v / aspect); + } + parcc_float3_add(gaze, gaze, right); + parcc_float3_add(gaze, gaze, upward); + parcc_float3_scale(gaze, context->props.far_plane); + parcc_float3_add(result, origin, gaze); +} + +static void parcc_move_with_constraints(parcc_context* context, const parcc_float eyepos[3], + const parcc_float target[3]) { + const parcc_constraint constraint = context->props.map_constraint; + const parcc_float width = context->props.viewport_width; + const parcc_float height = context->props.viewport_height; + const parcc_float aspect = width / height; + const parcc_float map_width = context->props.map_extent[0] / 2; + const parcc_float map_height = context->props.map_extent[1] / 2; + const parcc_frame home = parcc_get_home_frame(context); + const parcc_frame previous_frame = parcc_get_current_frame(context); + const parcc_float fov = context->props.fov_degrees * PARCC_PI / 180.0; + const parcc_float min_extent = 2.0 * context->props.map_min_distance * tan(fov / 2); + + parcc_float3_copy(context->eyepos, eyepos); + parcc_float3_copy(context->target, target); + + parcc_frame frame = parcc_get_current_frame(context); + + if (frame.extent < min_extent) { + frame.extent = min_extent; + frame.center[0] = previous_frame.center[0]; + frame.center[1] = previous_frame.center[1]; + } + + if (constraint == PARCC_CONSTRAIN_NONE) { + parcc_goto_frame(context, frame); + return; + } + + parcc_float x = frame.center[0]; + parcc_float y = frame.center[1]; + + if (context->props.fov_orientation == PARCC_HORIZONTAL) { + parcc_float vp_width = frame.extent / 2; + parcc_float vp_height = vp_width / aspect; + if (map_width < vp_width) { + frame.extent = home.extent; + vp_width = frame.extent / 2; + vp_height = vp_width / aspect; + x = 0; + y = previous_frame.center[1]; + } + x = PARCC_CLAMP(x, -map_width + vp_width, map_width - vp_width); + if (map_height < vp_height) { + if (context->props.map_constraint == PARCC_CONSTRAIN_FULL) { + frame.extent = 2 * map_height * aspect; + vp_width = frame.extent / 2; + vp_height = vp_width / aspect; + x = previous_frame.center[0]; + x = PARCC_CLAMP(x, -map_width + vp_width, map_width - vp_width); + y = PARCC_CLAMP(y, -map_height + vp_height, map_height - vp_height); + } else { + y = PARCC_CLAMP(y, -vp_height + map_height, vp_height - map_height); + } + } else { + y = PARCC_CLAMP(y, -map_height + vp_height, map_height - vp_height); + } + } else { + parcc_float vp_height = frame.extent / 2; + parcc_float vp_width = vp_height * aspect; + if (map_height < vp_height) { + frame.extent = home.extent; + vp_height = frame.extent / 2; + vp_width = vp_height * aspect; + y = 0; + x = previous_frame.center[0]; + } + y = PARCC_CLAMP(y, -map_height + vp_height, map_height - vp_height); + if (map_width < vp_width) { + if (context->props.map_constraint == PARCC_CONSTRAIN_FULL) { + frame.extent = 2 * map_width / aspect; + vp_height = frame.extent / 2; + vp_width = vp_height * aspect; + y = previous_frame.center[1]; + y = PARCC_CLAMP(y, -map_height + vp_height, map_height - vp_height); + x = PARCC_CLAMP(x, -map_width + vp_width, map_width - vp_width); + } else { + x = PARCC_CLAMP(x, -vp_width + map_width, vp_width - map_width); + } + } else { + x = PARCC_CLAMP(x, -map_width + vp_width, map_width - vp_width); + } + } + + frame.center[0] = x; + frame.center[1] = y; + parcc_goto_frame(context, frame); +} + +#endif // PAR_CAMERA_CONTROL_IMPLEMENTATION +#endif // PAR_CAMERA_CONTROL_H + +// par_camera_control is distributed under the MIT license: +// +// Copyright (c) 2019 Philip Rideout +// +// 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. diff --git a/source/engine/thirdparty/par/par_easings.h b/source/engine/thirdparty/par/par_easings.h new file mode 100644 index 0000000..2f8c4f9 --- /dev/null +++ b/source/engine/thirdparty/par/par_easings.h @@ -0,0 +1,429 @@ +// EASINGS :: https://github.com/prideout/par +// Robert Penner's easing functions. +// +// Distributed under the MIT License, see bottom of file. + +// ----------------------------------------------------------------------------- +// BEGIN PUBLIC API +// ----------------------------------------------------------------------------- + +#ifndef PAR_EASINGS_H +#define PAR_EASINGS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef PAR_EASINGS_FLOAT +#define PAR_EASINGS_FLOAT float +#endif + +PAR_EASINGS_FLOAT par_easings_linear(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_in_cubic(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_out_cubic(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_in_out_cubic(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_in_quad(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_out_quad(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_in_out_quad(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_in_elastic(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_out_elastic(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_in_out_elastic(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_in_bounce(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_out_bounce(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_in_out_bounce(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_in_back(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_out_back(PAR_EASINGS_FLOAT t); +PAR_EASINGS_FLOAT par_easings_in_out_back(PAR_EASINGS_FLOAT t); + +#ifndef PAR_PI +#define PAR_PI (3.14159265359) +#define PAR_MIN(a, b) (a > b ? b : a) +#define PAR_MAX(a, b) (a > b ? a : b) +#define PAR_CLAMP(v, lo, hi) PAR_MAX(lo, PAR_MIN(hi, v)) +#define PAR_SWAP(T, A, B) { T tmp = B; B = A; A = tmp; } +#define PAR_SQR(a) ((a) * (a)) +#endif + +#ifdef __cplusplus +} +#endif + +// ----------------------------------------------------------------------------- +// END PUBLIC API +// ----------------------------------------------------------------------------- + +#ifdef PAR_EASINGS_IMPLEMENTATION + +#define PARFLT PAR_EASINGS_FLOAT + +PARFLT par_easings__linear(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + return c * t / d + b; +} + +PARFLT par_easings__in_cubic(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t /= d; + return c * t * t * t + b; +} + +PARFLT par_easings__out_cubic(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t = t / d - 1; + return c * (t * t * t + 1) + b; +} + +PARFLT par_easings__in_out_cubic(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t /= d / 2; + if (t < 1) { + return c / 2 * t * t * t + b; + } + t -= 2; + return c / 2 * (t * t * t + 2) + b; +} + +PARFLT par_easings__in_quad(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t /= d; + return c * t * t + b; +} + +PARFLT par_easings__out_quad(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t /= d; + return -c * t * (t - 2) + b; +} + +PARFLT par_easings__in_out_quad(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t /= d / 2; + if (t < 1) { + return c / 2 * t * t + b; + } + --t; + return -c / 2 * (t * (t - 2) - 1) + b; +} + +PARFLT par_easings__in_quart(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t /= d; + return c * t * t * t * t + b; +} + +PARFLT par_easings__out_quart(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t = t / d - 1; + return -c * (t * t * t * t - 1) + b; +} + +PARFLT par_easings__in_out_quart(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t /= d / 2; + if (t < 1) { + return c / 2 * t * t * t * t + b; + } + t -= 2; + return -c / 2 * (t * t * t * t - 2) + b; +} + +PARFLT par_easings__in_quint(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t /= d; + return c * t * t * t * t * t + b; +} + +PARFLT par_easings__out_quint(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t = t / d - 1; + return c * (t * t * t * t * t + 1) + b; +} + +PARFLT par_easings__in_out_quint(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t /= d / 2; + if (t < 1) { + return c / 2 * t * t * t * t * t + b; + } + t -= 2; + return c / 2 * (t * t * t * t * t + 2) + b; +} + +PARFLT par_easings__in_sine(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + return -c * cos(t / d * (PAR_PI / 2)) + c + b; +} + +PARFLT par_easings__out_sine(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + return c * sin(t / d * (PAR_PI / 2)) + b; +} + +PARFLT par_easings__in_out_sine(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + return -c / 2 * (cos(PAR_PI * t / d) - 1) + b; +} + +PARFLT par_easings__in_out_expo(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t /= d / 2; + if (t < 1) { + return c / 2 * pow(2, 10 * (t - 1)) + b; + } + return c / 2 * (-pow(2, -10 * --t) + 2) + b; +} + +PARFLT par_easings__in_circ(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t /= d; + return -c * (sqrt(1 - t * t) - 1) + b; +} + +PARFLT par_easings__out_circ(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t = t / d - 1; + return c * sqrt(1 - t * t) + b; +} + +PARFLT par_easings__in_out_circ(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t /= d / 2; + if (t < 1) { + return -c / 2 * (sqrt(1 - t * t) - 1) + b; + } + t -= 2; + return c / 2 * (sqrt(1 - t * t) + 1) + b; +} + +PARFLT par_easings__in_elastic(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + PARFLT a, p, s; + s = 1.70158; + p = 0; + a = c; + if (!p) { + p = d * 0.3; + } + if (a < fabsf(c)) { + a = c; + s = p / 4; + } else { + s = p / (2 * PAR_PI) * asin(c / a); + } + t -= 1; + return -(a * pow(2, 10 * t) * + sin((t * d - s) * (2 * PAR_PI) / p)) + b; +} + +PARFLT par_easings__out_elastic(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + PARFLT a, p, s; + s = 1.70158; + p = 0; + a = c; + if (!p) { + p = d * 0.3; + } + if (a < fabsf(c)) { + a = c; + s = p / 4; + } else { + s = p / (2 * PAR_PI) * asin(c / a); + } + return a * pow(2, -10 * t) * + sin((t * d - s) * (2 * PAR_PI) / p) + c + b; +} + +PARFLT par_easings__in_out_elastic(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + PARFLT a, p, s; + s = 1.70158; + p = 0; + a = c; + if (!p) { + p = d * (0.3 * 1.5); + } + if (a < fabsf(c)) { + a = c; + s = p / 4; + } else { + s = p / (2 * PAR_PI) * asin(c / a); + } + if (t < 1) { + t -= 1; + return -0.5 * (a * pow(2, 10 * t) * + sin((t * d - s) * (2 * PAR_PI) / p)) + b; + } + t -= 1; + return a * pow(2, -10 * t) * + sin((t * d - s) * (2 * PAR_PI) / p) * 0.5 + c + b; +} + +PARFLT par_easings__in_back(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + PARFLT s = 1.70158; + t/=d; + return c*t*t*((s+1)*t - s) + b; +} + +PARFLT par_easings__out_back(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + PARFLT s = 1.70158; + t=t/d-1; + return c*(t*t*((s+1)*t + s) + 1) + b; +} + +PARFLT par_easings__in_out_back(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + PARFLT s = 1.70158; + t/=d/2; + s*=1.525; + if (t < 1) { return c/2*(t*t*((s+1)*t - s)) + b; } + s*=1.525; + t-=2; + return (c/2*(t*t*(s+1)*t + s) + 2) + b; +} + +PARFLT par_easings__out_bounce(PARFLT t, PARFLT b, PARFLT c, PARFLT d); + +PARFLT par_easings__in_bounce(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + PARFLT v = par_easings__out_bounce(d - t, 0, c, d); + return c - v + b; +} + +PARFLT par_easings__out_bounce(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + t /= d; + if (t < 1.0 / 2.75) { + return c * (7.5625 * t * t) + b; + } + if (t < 2.0 / 2.75) { + t -= 1.5 / 2.75; + return c * (7.5625 * t * t + 0.75) + b; + } + if (t < 2.5 / 2.75) { + t -= 2.25 / 2.75; + return c * (7.5625 * t * t + 0.9375) + b; + } + t -= 2.625 / 2.75; + return c * (7.5625 * t * t + 0.984375) + b; +} + +PARFLT par_easings__in_out_bounce(PARFLT t, PARFLT b, PARFLT c, PARFLT d) +{ + PARFLT v; + if (t < d / 2) { + v = par_easings__in_bounce(t * 2, 0, c, d); + return v * 0.5 + b; + } + v = par_easings__out_bounce(t * 2 - d, 0, c, d); + return v * 0.5 + c * 0.5 + b; +} + +PARFLT par_easings_linear(PARFLT t) +{ + return par_easings__linear(t, 0, 1, 1); +} + +PARFLT par_easings_in_cubic(PARFLT t) +{ + return par_easings__in_cubic(t, 0, 1, 1); +} + +PARFLT par_easings_out_cubic(PARFLT t) +{ + return par_easings__out_cubic(t, 0, 1, 1); +} + +PARFLT par_easings_in_out_cubic(PARFLT t) +{ + return par_easings__in_out_cubic(t, 0, 1, 1); +} + +PARFLT par_easings_in_quad(PARFLT t) +{ + return par_easings__in_quad(t, 0, 1, 1); +} + +PARFLT par_easings_out_quad(PARFLT t) +{ + return par_easings__out_quad(t, 0, 1, 1); +} + +PARFLT par_easings_in_out_quad(PARFLT t) +{ + return par_easings__in_out_quad(t, 0, 1, 1); +} + +PARFLT par_easings_in_elastic(PARFLT t) +{ + return par_easings__in_elastic(t, 0, 1, 1); +} + +PARFLT par_easings_out_elastic(PARFLT t) +{ + return par_easings__out_elastic(t, 0, 1, 1); +} + +PARFLT par_easings_in_out_elastic(PARFLT t) +{ + return par_easings__in_out_elastic(t, 0, 1, 1); +} + +PARFLT par_easings_in_bounce(PARFLT t) +{ + return par_easings__in_bounce(t, 0, 1, 1); +} + +PARFLT par_easings_out_bounce(PARFLT t) +{ + return par_easings__out_bounce(t, 0, 1, 1); +} + +PARFLT par_easings_in_out_bounce(PARFLT t) +{ + return par_easings__in_out_bounce(t, 0, 1, 1); +} + +PARFLT par_easings_in_back(PARFLT t) +{ + return par_easings__in_back(t, 0, 1, 1); +} + +PARFLT par_easings_out_back(PARFLT t) +{ + return par_easings__out_back(t, 0, 1, 1); +} + +PARFLT par_easings_in_out_back(PARFLT t) +{ + return par_easings__in_out_back(t, 0, 1, 1); +} + +#undef PARFLT + +#endif // PAR_EASINGS_IMPLEMENTATION +#endif // PAR_EASINGS_H + +// par_easings is distributed under the MIT license: +// +// Copyright (c) 2019 Philip Rideout +// +// 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. diff --git a/source/engine/thirdparty/par/par_easycurl.h b/source/engine/thirdparty/par/par_easycurl.h new file mode 100644 index 0000000..d9106e1 --- /dev/null +++ b/source/engine/thirdparty/par/par_easycurl.h @@ -0,0 +1,228 @@ +// EASYCURL :: https://github.com/prideout/par +// Wrapper around libcurl for performing simple synchronous HTTP requests. +// +// Distributed under the MIT License, see bottom of file. + +// ----------------------------------------------------------------------------- +// BEGIN PUBLIC API +// ----------------------------------------------------------------------------- + +#ifndef PAR_EASYCURL_H +#define PAR_EASYCURL_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef unsigned char par_byte; + +// Call this before calling any other easycurl function. The flags are +// currently unused, so you can just pass 0. +void par_easycurl_init(unsigned int flags); + +// Allocates a memory buffer and downloads a data blob into it. +// Returns 1 for success and 0 otherwise. The byte count should be +// pre-allocated. The caller is responsible for freeing the returned data. +// This does not do any caching! +int par_easycurl_to_memory(char const* url, par_byte** data, int* nbytes); + +// Downloads a file from the given URL and saves it to disk. Returns 1 for +// success and 0 otherwise. +int par_easycurl_to_file(char const* srcurl, char const* dstpath); + +#ifdef __cplusplus +} +#endif + +// ----------------------------------------------------------------------------- +// END PUBLIC API +// ----------------------------------------------------------------------------- + +#ifdef PAR_EASYCURL_IMPLEMENTATION + +#include +#include +#include +#include + +#ifdef _MSC_VER +#define strncasecmp _strnicmp +#define strcasecmp _stricmp +#else +#include +#endif + +static int _ready = 0; + +void par_easycurl_init(unsigned int flags) +{ + if (!_ready) { + curl_global_init(CURL_GLOBAL_DEFAULT); + _ready = 1; + } +} + +void par_easycurl_shutdown() +{ + if (_ready) { + curl_global_cleanup(); + } +} + +static size_t onheader(void* v, size_t size, size_t nmemb) +{ + size_t n = size * nmemb; + char* h = (char*) v; + if (n > 14 && !strncasecmp("Last-Modified:", h, 14)) { + char const* s = h + 14; + time_t r = curl_getdate(s, 0); + if (r != -1) { + // TODO handle last-modified + } + } else if (n > 5 && !strncasecmp("ETag:", h, 5)) { + // TODO handle etag + } + return n; +} + +typedef struct { + par_byte* data; + int nbytes; +} par_easycurl_buffer; + +static size_t onwrite(char* contents, size_t size, size_t nmemb, void* udata) +{ + size_t realsize = size * nmemb; + par_easycurl_buffer* mem = (par_easycurl_buffer*) udata; + mem->data = (par_byte*) realloc(mem->data, mem->nbytes + realsize + 1); + if (!mem->data) { + return 0; + } + memcpy(mem->data + mem->nbytes, contents, realsize); + mem->nbytes += realsize; + mem->data[mem->nbytes] = 0; + return realsize; +} + +#if IOS_EXAMPLE +bool curlToMemory(char const* url, uint8_t** data, int* nbytes) +{ + NSString* nsurl = + [NSString stringWithCString:url encoding:NSASCIIStringEncoding]; + NSMutableURLRequest* request = + [NSMutableURLRequest requestWithURL:[NSURL URLWithString:nsurl]]; + [request setTimeoutInterval: TIMEOUT_SECONDS]; + NSURLResponse* response = nil; + NSError* error = nil; + // Use the simple non-async API because we're in a secondary thread anyway. + NSData* nsdata = [NSURLConnection sendSynchronousRequest:request + returningResponse:&response + error:&error]; + if (error == nil) { + *nbytes = (int) [nsdata length]; + *data = (uint8_t*) malloc([nsdata length]); + memcpy(*data, [nsdata bytes], [nsdata length]); + return true; + } + BLAZE_ERROR("%s\n", [[error localizedDescription] UTF8String]); + return false; +} + +#endif + +int par_easycurl_to_memory(char const* url, par_byte** data, int* nbytes) +{ + char errbuf[CURL_ERROR_SIZE] = {0}; + par_easycurl_buffer buffer = {(par_byte*) malloc(1), 0}; + long code = 0; + long status = 0; + CURL* handle = curl_easy_init(); + curl_easy_setopt(handle, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(handle, CURLOPT_ENCODING, "gzip, deflate"); + curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1); + curl_easy_setopt(handle, CURLOPT_MAXREDIRS, 8); + curl_easy_setopt(handle, CURLOPT_FAILONERROR, 1); + curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, onwrite); + curl_easy_setopt(handle, CURLOPT_WRITEDATA, &buffer); + curl_easy_setopt(handle, CURLOPT_HEADERFUNCTION, onheader); + curl_easy_setopt(handle, CURLOPT_URL, url); + curl_easy_setopt(handle, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE); + curl_easy_setopt(handle, CURLOPT_TIMEVALUE, 0); + curl_easy_setopt(handle, CURLOPT_HTTPHEADER, 0); + curl_easy_setopt(handle, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, errbuf); + curl_easy_setopt(handle, CURLOPT_SSL_VERIFYHOST, 0); + CURLcode res = curl_easy_perform(handle); + if (res != CURLE_OK) { + printf("CURL Error: %s\n", errbuf); + return 0; + } + curl_easy_getinfo(handle, CURLINFO_CONDITION_UNMET, &code); + curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &status); + if (status == 304 || status >= 400) { + return 0; + } + *data = buffer.data; + *nbytes = buffer.nbytes; + curl_easy_cleanup(handle); + return 1; +} + +int par_easycurl_to_file(char const* srcurl, char const* dstpath) +{ + long code = 0; + long status = 0; + FILE* filehandle = fopen(dstpath, "wb"); + if (!filehandle) { + printf("Unable to open %s for writing.\n", dstpath); + return 0; + } + CURL* handle = curl_easy_init(); + curl_easy_setopt(handle, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(handle, CURLOPT_ENCODING, "gzip, deflate"); + curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1); + curl_easy_setopt(handle, CURLOPT_MAXREDIRS, 8); + curl_easy_setopt(handle, CURLOPT_FAILONERROR, 1); + curl_easy_setopt(handle, CURLOPT_WRITEDATA, filehandle); + curl_easy_setopt(handle, CURLOPT_HEADERFUNCTION, onheader); + curl_easy_setopt(handle, CURLOPT_URL, srcurl); + curl_easy_setopt(handle, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE); + curl_easy_setopt(handle, CURLOPT_TIMEVALUE, 0); + curl_easy_setopt(handle, CURLOPT_HTTPHEADER, 0); + curl_easy_setopt(handle, CURLOPT_TIMEOUT, 60); + curl_easy_perform(handle); + curl_easy_getinfo(handle, CURLINFO_CONDITION_UNMET, &code); + curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &status); + fclose(filehandle); + if (status == 304 || status >= 400) { + remove(dstpath); + return 0; + } + curl_easy_cleanup(handle); + return 1; +} + +#endif // PAR_EASYCURL_IMPLEMENTATION +#endif // PAR_EASYCURL_H + +// par_easycurl is distributed under the MIT license: +// +// Copyright (c) 2019 Philip Rideout +// +// 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. diff --git a/source/engine/thirdparty/par/par_filecache.h b/source/engine/thirdparty/par/par_filecache.h new file mode 100644 index 0000000..e022bb5 --- /dev/null +++ b/source/engine/thirdparty/par/par_filecache.h @@ -0,0 +1,458 @@ +// FILECACHE :: https://github.com/prideout/par +// Simple file-based LRU cache for blobs with content-addressable names. +// +// Each cached item is stored on disk as "{PREFIX}{NAME}", where {PREFIX} +// is passed in when initializing the cache. You'll probably want to specify +// a folder path for your prefix, including the trailing slash. +// +// Each item is divided into a payload (arbitrary size) and an optional header +// (fixed size). The structure of the payload and header are completely up to +// you. The list of items is stored in a text file at "{PREFIX}table", which +// contains a list of names, timestamps, and byte counts. This table is loaded +// only once, but is saved every time the client fetches a blob from the cache, +// so that the most-recently-accessed timestamps are always up to date, even +// when your application doesn't close gracefully. +// +// Distributed under the MIT License, see bottom of file. + +// ----------------------------------------------------------------------------- +// BEGIN PUBLIC API +// ----------------------------------------------------------------------------- + +#ifndef PAR_FILECACHE_H +#define PAR_FILECACHE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +// Initialize the filecache using the given prefix (usually a folder path with +// a trailing slash) and the given maximum byte count. If items already exist +// in the cache when this is called, they are not evicted. Cached items are +// meant to persist from run to run. +void par_filecache_init(char const* prefix, int maxsize); + +// Save a blob to the cache using the given unique name. If adding the blob +// would cause the cache to exceed maxsize, the least-recently-used item is +// evicted at this time. +void par_filecache_save(char const* name, uint8_t const* payload, + int payloadsize, uint8_t const* header, int headersize); + +// Check if the given blob is in the cache; if not, return 0. If so, return 1 +// and allocate new memory for payload. The caller should free the payload. +// The header is preallocated so the caller needs to know its size beforehand. +bool par_filecache_load(char const* name, uint8_t** payload, int* payloadsize, + uint8_t* header, int headersize); + +// Remove all items from the cache. +void par_filecache_evict_all(); + +// Set this to zero if you wish to avoid LZ4 compression. I recommend using +// it though, because it's very fast and it's a two-file library. +#ifndef ENABLE_LZ4 +#define ENABLE_LZ4 0 +#endif + +#ifndef PAR_FILECACHE_VERBOSE +#define PAR_FILECACHE_VERBOSE 0 +#endif + +#ifndef PAR_PI +#define PAR_PI (3.14159265359) +#define PAR_MIN(a, b) (a > b ? b : a) +#define PAR_MAX(a, b) (a > b ? a : b) +#define PAR_CLAMP(v, lo, hi) PAR_MAX(lo, PAR_MIN(hi, v)) +#define PAR_SWAP(T, A, B) { T tmp = B; B = A; A = tmp; } +#define PAR_SQR(a) ((a) * (a)) +#endif + +#ifndef PAR_MALLOC +#define PAR_MALLOC(T, N) ((T*) malloc(N * sizeof(T))) +#define PAR_CALLOC(T, N) ((T*) calloc(N * sizeof(T), 1)) +#define PAR_REALLOC(T, BUF, N) ((T*) realloc(BUF, sizeof(T) * (N))) +#define PAR_FREE(BUF) free(BUF) +#endif + +#ifdef __cplusplus +} +#endif + +// ----------------------------------------------------------------------------- +// END PUBLIC API +// ----------------------------------------------------------------------------- + +#ifdef PAR_FILECACHE_IMPLEMENTATION +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef PATH_MAX +#define PATH_MAX 4096 +#endif + +#if ENABLE_LZ4 +#include "lz4.h" +#endif + +static char * _par_strdup(char const* s) +{ + if (s) { + size_t l = strlen(s); + char *s2 = (char*) malloc(l + 1); + if (s2) { + strcpy(s2, s); + } + return s2; + } + return 0; +} + +#define PAR_MAX_ENTRIES 64 + +typedef struct { + time_t last_used_timestamp; + uint64_t hashed_name; + char const* name; + int nbytes; +} filecache_entry_t; + +typedef struct { + filecache_entry_t entries[PAR_MAX_ENTRIES]; + int nentries; + int totalbytes; +} filecache_table_t; + +static void _update_table(char const* item_name, int item_size); +static void _append_table(char const* item_name, int item_size); +static void _read_or_create_tablefile(); +static void _save_tablefile(); +static void _evict_lru(); +static uint64_t _hash(char const* name); + +static char _fileprefix[PATH_MAX] = "./_cache."; +static char _tablepath[PATH_MAX] = "./_cache.table"; +static int _maxtotalbytes = 1024 * 1024 * 16; +static filecache_table_t* _table = 0; + +void par_filecache_init(char const* prefix, int maxsize) +{ + size_t len = strlen(prefix); + assert(len + 1 < PATH_MAX && "Cache prefix is too long"); + strncpy(_fileprefix, prefix, len + 1); + strcpy(_tablepath, _fileprefix); + strcat(_tablepath, "table"); + _maxtotalbytes = maxsize; +} + +#if IOS_EXAMPLE +NSString* getPrefix() +{ + NSString* cachesFolder = [NSSearchPathForDirectoriesInDomains( + NSCachesDirectory, NSUserDomainMask, YES) firstObject]; + NSError* error = nil; + if (![[NSFileManager defaultManager] createDirectoryAtPath : cachesFolder + withIntermediateDirectories : YES + attributes : nil + error : &error]) { + NSLog(@"MGMPlatformGetCachesFolder error: %@", error); + return nil; + } + return [cachesFolder stringByAppendingString : @"/_cache."]; +} + +#endif + +static bool par_filecache__read(void* dest, int nbytes, FILE* file) +{ + int consumed = (int) fread(dest, nbytes, 1, file); + return consumed == 1; +} + +bool par_filecache_load(char const* name, uint8_t** payload, int* payloadsize, + uint8_t* header, int headersize) +{ + char qualified[PATH_MAX]; + size_t len = strlen(name); + if (len == 0) { + return false; + } + assert(len + strlen(_fileprefix) < PATH_MAX); + strcpy(qualified, _fileprefix); + strcat(qualified, name); + if (access(qualified, F_OK) == -1) { + return false; + } + FILE* cachefile = fopen(qualified, "rb"); + assert(cachefile && "Unable to open cache file for reading"); + fseek(cachefile, 0, SEEK_END); + long fsize = ftell(cachefile); + fseek(cachefile, 0, SEEK_SET); + if (headersize > 0 && !par_filecache__read(header, headersize, cachefile)) { + return false; + } + int32_t dnbytes; +#if ENABLE_LZ4 + long cnbytes = fsize - headersize - sizeof(dnbytes); + if (!par_filecache__read(&dnbytes, sizeof(dnbytes), cachefile)) { + return false; + } +#else + long cnbytes = fsize - headersize; + dnbytes = (int32_t) cnbytes; +#endif + char* cbuff = (char*) malloc(cnbytes); + if (!par_filecache__read(cbuff, (int) cnbytes, cachefile)) { + return false; + } +#if ENABLE_LZ4 + char* dbuff = (char*) malloc(dnbytes); + LZ4_decompress_safe(cbuff, dbuff, (int) cnbytes, dnbytes); + free(cbuff); +#else + char* dbuff = cbuff; +#endif + fclose(cachefile); + *payload = (uint8_t*) dbuff; + *payloadsize = dnbytes; + _update_table(name, (int) cnbytes); + return true; +} + +void par_filecache_save(char const* name, uint8_t const* payload, + int payloadsize, uint8_t const* header, int headersize) +{ + char qualified[PATH_MAX]; + size_t len = strlen(name); + if (len == 0) { + return; + } + assert(len + strlen(_fileprefix) < PATH_MAX); + strcpy(qualified, _fileprefix); + strcat(qualified, name); + FILE* cachefile = fopen(qualified, "wb"); + assert(cachefile && "Unable to open cache file for writing"); + if (headersize > 0) { + fwrite(header, 1, headersize, cachefile); + } + int csize = 0; + if (payloadsize > 0) { +#if ENABLE_LZ4 + int32_t nbytes = payloadsize; + fwrite(&nbytes, 1, sizeof(nbytes), cachefile); + int maxsize = LZ4_compressBound(nbytes); + char* dst = (char*) malloc(maxsize); + char const* src = (char const*) payload; + assert(nbytes < LZ4_MAX_INPUT_SIZE); + csize = LZ4_compress_default(src, dst, nbytes, maxsize); + fwrite(dst, 1, csize, cachefile); + free(dst); +#else + csize = payloadsize; + int actual = (int) fwrite(payload, 1, csize, cachefile); + if (actual < csize) { + fclose(cachefile); + remove(qualified); + printf("Unable to save %s to cache (%d bytes)\n", name, csize); + return; + } +#endif + } + fclose(cachefile); + _update_table(name, csize + headersize); +} + +void par_filecache_evict_all() +{ + #if PAR_FILECACHE_VERBOSE + printf("Evicting all.\n"); + #endif + char qualified[PATH_MAX]; + if (!_table) { + _read_or_create_tablefile(); + } + filecache_entry_t* entry = _table->entries; + for (int i = 0; i < _table->nentries; i++, entry++) { + strcpy(qualified, _fileprefix); + strcat(qualified, entry->name); + #if PAR_FILECACHE_VERBOSE + printf("Evicting %s\n", qualified); + #endif + remove(qualified); + } + _table->nentries = 0; + _table->totalbytes = 0; + remove(_tablepath); +} + +// Adds the given item to the table and evicts the LRU items if the total cache +// size exceeds the specified maxsize. +static void _append_table(char const* item_name, int item_size) +{ + time_t now = time(0); + if (!_table) { + _read_or_create_tablefile(); + } + uint64_t hashed_name = _hash(item_name); + int total = _table->totalbytes + item_size; + while (_table->nentries >= PAR_MAX_ENTRIES || total > _maxtotalbytes) { + assert(_table->nentries > 0 && "Cache size is too small."); + _evict_lru(); + total = _table->totalbytes + item_size; + } + _table->totalbytes = total; + filecache_entry_t* entry = &_table->entries[_table->nentries++]; + entry->last_used_timestamp = now; + entry->hashed_name = hashed_name; + entry->name = _par_strdup(item_name); + entry->nbytes = item_size; + _save_tablefile(); +} + +// Updates the timestamp associated with the given item. +static void _update_table(char const* item_name, int item_size) +{ + time_t now = time(0); + if (!_table) { + _read_or_create_tablefile(); + } + uint64_t hashed_name = _hash(item_name); + filecache_entry_t* entry = _table->entries; + int i; + for (i = 0; i < _table->nentries; i++, entry++) { + if (entry->hashed_name == hashed_name) { + break; + } + } + if (i >= _table->nentries) { + _append_table(item_name, item_size); + return; + } + entry->last_used_timestamp = now; + _save_tablefile(); +} + +static void _read_or_create_tablefile() +{ + _table = (filecache_table_t*) calloc(sizeof(filecache_table_t), 1); + FILE* fhandle = fopen(_tablepath, "r"); + if (!fhandle) { + fhandle = fopen(_tablepath, "w"); + if (!fhandle) { + mkdir(dirname(_tablepath), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + fhandle = fopen(_tablepath, "w"); + } + assert(fhandle && "Unable to create filecache info file."); + } else { + filecache_entry_t entry; + char name[PATH_MAX]; + while (1) { + int nargs = fscanf(fhandle, "%ld %d %s", &entry.last_used_timestamp, + &entry.nbytes, name); + if (nargs != 3) { + break; + } + entry.name = _par_strdup(name); + entry.hashed_name = _hash(entry.name); + _table->entries[_table->nentries++] = entry; + _table->totalbytes += entry.nbytes; + } + } + fclose(fhandle); +} + +static void _save_tablefile() +{ + FILE* fhandle = fopen(_tablepath, "w"); + assert(fhandle && "Unable to create filecache info file."); + filecache_entry_t* entry = _table->entries; + for (int i = 0; i < _table->nentries; i++, entry++) { + fprintf(fhandle, "%ld %d %s\n", entry->last_used_timestamp, + entry->nbytes, entry->name); + } + fclose(fhandle); +} + +static void _evict_lru() +{ + const uint64_t never_evict = _hash("version"); + int oldest_index = -1; + time_t oldest_time = LONG_MAX; + filecache_entry_t* entry = _table->entries; + for (int i = 0; i < _table->nentries; i++, entry++) { + if (entry->hashed_name == never_evict) { + continue; + } + if (entry->last_used_timestamp < oldest_time) { + oldest_time = entry->last_used_timestamp; + oldest_index = i; + } + } + if (oldest_index > -1) { + entry = _table->entries + oldest_index; + char qualified[PATH_MAX]; + size_t len = strlen(entry->name); + assert(len + strlen(_fileprefix) < PATH_MAX); + strcpy(qualified, _fileprefix); + strcat(qualified, entry->name); + #if PAR_FILECACHE_VERBOSE + printf("Evicting %s\n", entry->name); + #endif + remove(qualified); + _table->totalbytes -= entry->nbytes; + if (_table->nentries-- > 1) { + *entry = _table->entries[_table->nentries]; + } + } +} + +// https://en.wikipedia.org/wiki/Fowler–Noll–Vo_hash_function + +static uint64_t _hash(char const* name) +{ + const uint64_t OFFSET = 14695981039346656037ull; + const uint64_t PRIME = 1099511628211ull; + const unsigned char* str = (const unsigned char*) name; + uint64_t hval = OFFSET; + while (*str) { + hval *= PRIME; + hval ^= (uint64_t) *(str++); + } + return hval; +} + +#undef PAR_MAX_ENTRIES +#endif // PAR_FILECACHE_IMPLEMENTATION +#endif // PAR_FILECACHE_H + +// par_filecache is distributed under the MIT license: +// +// Copyright (c) 2019 Philip Rideout +// +// 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. diff --git a/source/engine/thirdparty/par/par_msquares.h b/source/engine/thirdparty/par/par_msquares.h new file mode 100644 index 0000000..63de86f --- /dev/null +++ b/source/engine/thirdparty/par/par_msquares.h @@ -0,0 +1,2156 @@ +// MSQUARES :: https://github.com/prideout/par +// Converts fp32 grayscale images, or 8-bit color images, into triangles. +// +// THIS IS EXPERIMENTAL CODE, DO NOT USE IN PRODUCTION +// +// Note that a potentially more interesting project for converting bitmaps +// into vectors can be found at https://github.com/BlockoS/blob, which is an +// implementation of "A linear-time component-labeling algorithm using contour +// tracing technique" by Fu Chang, Chun-Jen Chen, and Chi-Jen Lu. I recommend +// using that in combination with a simple ear-clipping algorithm for triangle +// tessellation. (see https://prideout.net/polygon.js) +// +// For grayscale images, a threshold is specified to determine insideness. +// For color images, an exact color is specified to determine insideness. +// Color images can be r8, rg16, rgb24, or rgba32. For a visual overview of +// the API and all the flags, see: +// +// https://prideout.net/marching-squares +// +// Distributed under the MIT License, see bottom of file. + +#ifndef PAR_MSQUARES_H +#define PAR_MSQUARES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +// ----------------------------------------------------------------------------- +// BEGIN PUBLIC API +// ----------------------------------------------------------------------------- +#ifndef PAR_MSQUARES_T +#define PAR_MSQUARES_T uint16_t +#endif + +typedef uint8_t par_byte; + +typedef struct par_msquares_meshlist_s par_msquares_meshlist; + +// Results of a marching squares operation. Triangles are counter-clockwise. +typedef struct { + float* points; // pointer to XY (or XYZ) vertex coordinates + int npoints; // number of vertex coordinates + PAR_MSQUARES_T* triangles; // pointer to 3-tuples of vertex indices + int ntriangles; // number of 3-tuples + int dim; // number of floats per point (either 2 or 3) + uint32_t color; // used only with par_msquares_color_multi +} par_msquares_mesh; + +// Polyline boundary extracted from a mesh, composed of one or more chains. +// Counterclockwise chains are solid, clockwise chains are holes. So, when +// serializing to SVG, all chains can be aggregated in a single , +// provided they each terminate with a "Z" and use the default fill rule. +typedef struct { + float* points; // list of XY vertex coordinates + int npoints; // number of vertex coordinates + float** chains; // list of pointers to the start of each chain + PAR_MSQUARES_T* lengths; // list of chain lengths + int nchains; // number of chains +} par_msquares_boundary; + +// Reverses the "insideness" test. +#define PAR_MSQUARES_INVERT (1 << 0) + +// Returns a meshlist with two meshes: one for the inside, one for the outside. +#define PAR_MSQUARES_DUAL (1 << 1) + +// Requests that returned meshes have 3-tuple coordinates instead of 2-tuples. +// When using a color-based function, the Z coordinate represents the alpha +// value of the nearest pixel. +#define PAR_MSQUARES_HEIGHTS (1 << 2) + +// Applies a step function to the Z coordinates. Requires HEIGHTS and DUAL. +#define PAR_MSQUARES_SNAP (1 << 3) + +// Adds extrusion triangles to each mesh other than the lowest mesh. Requires +// the PAR_MSQUARES_HEIGHTS flag to be present. +#define PAR_MSQUARES_CONNECT (1 << 4) + +// Enables quick & dirty (not best) simpification of the returned mesh. +#define PAR_MSQUARES_SIMPLIFY (1 << 5) + +// Indicates that the "color" argument is ABGR instead of ARGB. +#define PAR_MSQUARES_SWIZZLE (1 << 6) + +// Ensures there are no T-junction vertices. (par_msquares_color_multi only) +// Requires the PAR_MSQUARES_SIMPLIFY flag to be disabled. +#define PAR_MSQUARES_CLEAN (1 << 7) + +par_msquares_meshlist* par_msquares_grayscale(float const* data, int width, + int height, int cellsize, float threshold, int flags); + +par_msquares_meshlist* par_msquares_color(par_byte const* data, int width, + int height, int cellsize, uint32_t color, int bpp, int flags); + +par_msquares_mesh const* par_msquares_get_mesh(par_msquares_meshlist*, int n); + +int par_msquares_get_count(par_msquares_meshlist*); + +void par_msquares_free(par_msquares_meshlist*); + +void par_msquares_free_boundary(par_msquares_boundary*); + +typedef int (*par_msquares_inside_fn)(int, void*); +typedef float (*par_msquares_height_fn)(float, float, void*); + +par_msquares_meshlist* par_msquares_function(int width, int height, + int cellsize, int flags, void* context, par_msquares_inside_fn insidefn, + par_msquares_height_fn heightfn); + +par_msquares_meshlist* par_msquares_grayscale_multi(float const* data, + int width, int height, int cellsize, float const* thresholds, + int nthresholds, int flags); + +par_msquares_meshlist* par_msquares_color_multi(par_byte const* data, int width, + int height, int cellsize, int bpp, int flags); + +par_msquares_boundary* par_msquares_extract_boundary(par_msquares_mesh const* ); + +#ifndef PAR_PI +#define PAR_PI (3.14159265359) +#define PAR_MIN(a, b) (a > b ? b : a) +#define PAR_MAX(a, b) (a > b ? a : b) +#define PAR_CLAMP(v, lo, hi) PAR_MAX(lo, PAR_MIN(hi, v)) +#define PAR_SWAP(T, A, B) { T tmp = B; B = A; A = tmp; } +#define PAR_SQR(a) ((a) * (a)) +#endif + +#ifndef PAR_MALLOC +#define PAR_MALLOC(T, N) ((T*) malloc(N * sizeof(T))) +#define PAR_CALLOC(T, N) ((T*) calloc(N * sizeof(T), 1)) +#define PAR_REALLOC(T, BUF, N) ((T*) realloc(BUF, sizeof(T) * (N))) +#define PAR_FREE(BUF) free(BUF) +#endif + +#ifdef __cplusplus +} +#endif + +// ----------------------------------------------------------------------------- +// END PUBLIC API +// ----------------------------------------------------------------------------- + +#ifdef PAR_MSQUARES_IMPLEMENTATION +#include +#include +#include +#include + +typedef struct { + PAR_MSQUARES_T* values; + size_t count; + size_t capacity; +} par__uint16list; + +typedef struct { + float* points; + int npoints; + PAR_MSQUARES_T* triangles; + int ntriangles; + int dim; + uint32_t color; + int nconntriangles; + PAR_MSQUARES_T* conntri; + par__uint16list* tjunctions; +} par_msquares__mesh; + +struct par_msquares_meshlist_s { + int nmeshes; + par_msquares__mesh** meshes; +}; + +static int** par_msquares_binary_point_table = 0; +static int** par_msquares_binary_triangle_table = 0; +static int* par_msquares_quaternary_triangle_table[64][4]; +static int* par_msquares_quaternary_boundary_table[64][4]; + +static par_msquares_meshlist* par_msquares__merge(par_msquares_meshlist** lists, + int count, int snap); + +static void par_init_tables() +{ + char const* BINARY_TABLE = + "0" + "1017" + "1123" + "2023370" + "1756" + "2015560" + "2123756" + "3023035056" + "1345" + "4013034045057" + "2124451" + "3024045057" + "2734467" + "3013034046" + "3124146167" + "2024460"; + char const* binary_token = BINARY_TABLE; + + par_msquares_binary_point_table = PAR_CALLOC(int*, 16); + par_msquares_binary_triangle_table = PAR_CALLOC(int*, 16); + for (int i = 0; i < 16; i++) { + int ntris = *binary_token - '0'; + binary_token++; + par_msquares_binary_triangle_table[i] = + PAR_CALLOC(int, (ntris + 1) * 3); + int* sqrtris = par_msquares_binary_triangle_table[i]; + sqrtris[0] = ntris; + int mask = 0; + int* sqrpts = par_msquares_binary_point_table[i] = PAR_CALLOC(int, 7); + sqrpts[0] = 0; + for (int j = 0; j < ntris * 3; j++, binary_token++) { + int midp = *binary_token - '0'; + int bit = 1 << midp; + if (!(mask & bit)) { + mask |= bit; + sqrpts[++sqrpts[0]] = midp; + } + sqrtris[j + 1] = midp; + } + } + + char const* QUATERNARY_TABLE = + "2024046000" + "3346360301112300" + "3346360301112300" + "3346360301112300" + "3560502523013450" + "2015056212414500" + "4018087785756212313828348450" + "4018087785756212313828348450" + "3560502523013450" + "4018087785756212313828348450" + "2015056212414500" + "4018087785756212313828348450" + "3560502523013450" + "4018087785756212313828348450" + "4018087785756212313828348450" + "2015056212414500" + "3702724745001756" + "2018087212313828348452785756" + "4013034045057112301756" + "4013034045057112301756" + "2023037027347460" + "1701312414616700" + "2018087212313847857568348450" + "2018087212313847857568348450" + "4018087123138028348452785756" + "1701467161262363513450" + "2018087412313883484502785756" + "2018087212313828348452785756" + "4018087123138028348452785756" + "1701467161262363513450" + "2018087212313828348452785756" + "2018087412313883484502785756" + "3702724745001756" + "4013034045057112301756" + "2018087212313828348452785756" + "4013034045057112301756" + "4018087123138028348452785756" + "2018087412313883484502785756" + "1701467161262363513450" + "2018087212313828348452785756" + "2023037027347460" + "2018087212313847857568348450" + "1701312414616700" + "2018087212313847857568348450" + "4018087123138028348452785756" + "2018087212313828348452785756" + "1701467161262363513450" + "2018087412313883484502785756" + "3702724745001756" + "4013034045057112301756" + "4013034045057112301756" + "2018087212313828348452785756" + "4018087123138028348452785756" + "2018087412313883484502785756" + "2018087212313828348452785756" + "1701467161262363513450" + "4018087123138028348452785756" + "2018087212313828348452785756" + "2018087412313883484502785756" + "1701467161262363513450" + "2023037027347460" + "2018087212313847857568348450" + "2018087212313847857568348450" + "1701312414616700"; + char const* quaternary_token = QUATERNARY_TABLE; + + int* quaternary_values = PAR_CALLOC(int, strlen(QUATERNARY_TABLE)); + int* vals = quaternary_values; + for (int i = 0; i < 64; i++) { + int ntris = *quaternary_token++ - '0'; + *vals = ntris; + par_msquares_quaternary_triangle_table[i][0] = vals++; + for (int j = 0; j < ntris * 3; j++) { + int pt = *quaternary_token++ - '0'; + assert(pt >= 0 && pt < 9); + *vals++ = pt; + } + ntris = *quaternary_token++ - '0'; + *vals = ntris; + par_msquares_quaternary_triangle_table[i][1] = vals++; + for (int j = 0; j < ntris * 3; j++) { + int pt = *quaternary_token++ - '0'; + assert(pt >= 0 && pt < 9); + *vals++ = pt; + } + ntris = *quaternary_token++ - '0'; + *vals = ntris; + par_msquares_quaternary_triangle_table[i][2] = vals++; + for (int j = 0; j < ntris * 3; j++) { + int pt = *quaternary_token++ - '0'; + assert(pt >= 0 && pt < 9); + *vals++ = pt; + } + ntris = *quaternary_token++ - '0'; + *vals = ntris; + par_msquares_quaternary_triangle_table[i][3] = vals++; + for (int j = 0; j < ntris * 3; j++) { + int pt = *quaternary_token++ - '0'; + assert(pt >= 0 && pt < 9); + *vals++ = pt; + } + } + assert(vals == quaternary_values + strlen(QUATERNARY_TABLE)); + + char const* QUATERNARY_EDGES = + "0000" + "11313100113131001131310013501530" + "115151002188523881258830218852388125883013501530" + "218852388125883011515100218852388125883013501530" + "218852388125883021885238812588301151510015700175" + "2188723881258832788521357131017521357131017513701730" + "11717100218872388127883021887238812788302388702588327885" + "1172713515302188725881027885218872388125883278852388702588327885" + "11727135153021887238812588327885218872588102788515700175" + "213571310175218872388125883278852135713101752388702588327885" + "21887258810278851172713515302188723881258832788513701730" + "21887238812788301171710021887238812788302388702588327885" + "21887238812588327885117271351530218872588102788515700175" + "213571310175213571310175218872388125883278852388702588327885" + "2188725881027885218872388125883278851172713515302388702588327885" + "21887238812588327885218872588102788511727135153013701730" + "2188723881278830218872388127883011717100"; + quaternary_token = QUATERNARY_EDGES; + + quaternary_values = PAR_CALLOC(int, strlen(QUATERNARY_EDGES)); + vals = quaternary_values; + for (int i = 0; i < 64; i++) { + int nedges = *quaternary_token++ - '0'; + *vals = nedges; + par_msquares_quaternary_boundary_table[i][0] = vals++; + for (int j = 0; j < nedges * 2; j++) { + int pt = *quaternary_token++ - '0'; + assert(pt >= 0 && pt < 9); + *vals++ = pt; + } + nedges = *quaternary_token++ - '0'; + *vals = nedges; + par_msquares_quaternary_boundary_table[i][1] = vals++; + for (int j = 0; j < nedges * 2; j++) { + int pt = *quaternary_token++ - '0'; + assert(pt >= 0 && pt < 9); + *vals++ = pt; + } + nedges = *quaternary_token++ - '0'; + *vals = nedges; + par_msquares_quaternary_boundary_table[i][2] = vals++; + for (int j = 0; j < nedges * 2; j++) { + int pt = *quaternary_token++ - '0'; + assert(pt >= 0 && pt < 9); + *vals++ = pt; + } + nedges = *quaternary_token++ - '0'; + *vals = nedges; + par_msquares_quaternary_boundary_table[i][3] = vals++; + for (int j = 0; j < nedges * 2; j++) { + int pt = *quaternary_token++ - '0'; + assert(pt >= 0 && pt < 9); + *vals++ = pt; + } + } + assert(vals == quaternary_values + strlen(QUATERNARY_EDGES)); +} + +typedef struct { + float const* data; + float threshold; + float lower_bound; + float upper_bound; + int width; + int height; +} par_gray_context; + +static int gray_inside(int location, void* contextptr) +{ + par_gray_context* context = (par_gray_context*) contextptr; + return context->data[location] > context->threshold; +} + +static int gray_multi_inside(int location, void* contextptr) +{ + par_gray_context* context = (par_gray_context*) contextptr; + float val = context->data[location]; + float upper = context->upper_bound; + float lower = context->lower_bound; + return val >= lower && val < upper; +} + +static float gray_height(float x, float y, void* contextptr) +{ + par_gray_context* context = (par_gray_context*) contextptr; + int i = PAR_CLAMP(context->width * x, 0, context->width - 1); + int j = PAR_CLAMP(context->height * y, 0, context->height - 1); + return context->data[i + j * context->width]; +} + +typedef struct { + par_byte const* data; + par_byte color[4]; + int bpp; + int width; + int height; +} par_color_context; + +static int color_inside(int location, void* contextptr) +{ + par_color_context* context = (par_color_context*) contextptr; + par_byte const* data = context->data + location * context->bpp; + for (int i = 0; i < context->bpp; i++) { + if (data[i] != context->color[i]) { + return 0; + } + } + return 1; +} + +static float color_height(float x, float y, void* contextptr) +{ + par_color_context* context = (par_color_context*) contextptr; + assert(context->bpp == 4); + int i = PAR_CLAMP(context->width * x, 0, context->width - 1); + int j = PAR_CLAMP(context->height * y, 0, context->height - 1); + int k = i + j * context->width; + return context->data[k * 4 + 3] / 255.0; +} + +par_msquares_meshlist* par_msquares_color(par_byte const* data, int width, + int height, int cellsize, uint32_t color, int bpp, int flags) +{ + par_color_context context; + context.bpp = bpp; + if (flags & PAR_MSQUARES_SWIZZLE) { + context.color[0] = (color >> 0) & 0xff; + context.color[1] = (color >> 8) & 0xff; + context.color[2] = (color >> 16) & 0xff; + context.color[3] = (color >> 24) & 0xff; + } else { + context.color[0] = (color >> 16) & 0xff; + context.color[1] = (color >> 8) & 0xff; + context.color[2] = (color >> 0) & 0xff; + context.color[3] = (color >> 24) & 0xff; + } + context.data = data; + context.width = width; + context.height = height; + return par_msquares_function( + width, height, cellsize, flags, &context, color_inside, color_height); +} + +par_msquares_meshlist* par_msquares_grayscale(float const* data, int width, + int height, int cellsize, float threshold, int flags) +{ + par_gray_context context; + context.width = width; + context.height = height; + context.data = data; + context.threshold = threshold; + return par_msquares_function( + width, height, cellsize, flags, &context, gray_inside, gray_height); +} + +par_msquares_meshlist* par_msquares_grayscale_multi(float const* data, + int width, int height, int cellsize, float const* thresholds, + int nthresholds, int flags) +{ + par_msquares_meshlist* mlists[2]; + mlists[0] = PAR_CALLOC(par_msquares_meshlist, 1); + int connect = flags & PAR_MSQUARES_CONNECT; + int snap = flags & PAR_MSQUARES_SNAP; + int heights = flags & PAR_MSQUARES_HEIGHTS; + if (!heights) { + snap = connect = 0; + } + flags &= ~PAR_MSQUARES_INVERT; + flags &= ~PAR_MSQUARES_DUAL; + flags &= ~PAR_MSQUARES_CONNECT; + flags &= ~PAR_MSQUARES_SNAP; + par_gray_context context; + context.width = width; + context.height = height; + context.data = data; + context.lower_bound = -FLT_MAX; + for (int i = 0; i <= nthresholds; i++) { + int mergeconf = i > 0 ? connect : 0; + if (i == nthresholds) { + context.upper_bound = FLT_MAX; + mergeconf |= snap; + } else { + context.upper_bound = thresholds[i]; + } + mlists[1] = par_msquares_function(width, height, cellsize, flags, + &context, gray_multi_inside, gray_height); + mlists[0] = par_msquares__merge(mlists, 2, mergeconf); + context.lower_bound = context.upper_bound; + flags |= connect; + } + return mlists[0]; +} + +par_msquares_mesh const* par_msquares_get_mesh( + par_msquares_meshlist* mlist, int mindex) +{ + assert(mlist && mindex < mlist->nmeshes); + return (par_msquares_mesh const*) mlist->meshes[mindex]; +} + +int par_msquares_get_count(par_msquares_meshlist* mlist) +{ + assert(mlist); + return mlist->nmeshes; +} + +void par_msquares_free(par_msquares_meshlist* mlist) +{ + if (!mlist) { + return; + } + par_msquares__mesh** meshes = mlist->meshes; + for (int i = 0; i < mlist->nmeshes; i++) { + free(meshes[i]->points); + free(meshes[i]->triangles); + free(meshes[i]); + } + free(meshes); + free(mlist); +} + +// Combine multiple meshlists by moving mesh pointers, and optionally applying +// a snap operation that assigns a single Z value across all verts in each +// mesh. The Z value determined by the mesh's position in the final mesh list. +static par_msquares_meshlist* par_msquares__merge(par_msquares_meshlist** lists, + int count, int snap) +{ + par_msquares_meshlist* merged = PAR_CALLOC(par_msquares_meshlist, 1); + merged->nmeshes = 0; + for (int i = 0; i < count; i++) { + merged->nmeshes += lists[i]->nmeshes; + } + merged->meshes = PAR_CALLOC(par_msquares__mesh*, merged->nmeshes); + par_msquares__mesh** pmesh = merged->meshes; + for (int i = 0; i < count; i++) { + par_msquares_meshlist* meshlist = lists[i]; + for (int j = 0; j < meshlist->nmeshes; j++) { + *pmesh++ = meshlist->meshes[j]; + } + free(meshlist); + } + if (!snap) { + return merged; + } + pmesh = merged->meshes; + float zmin = FLT_MAX; + float zmax = -zmin; + for (int i = 0; i < merged->nmeshes; i++, pmesh++) { + float* pzed = (*pmesh)->points + 2; + for (int j = 0; j < (*pmesh)->npoints; j++, pzed += 3) { + zmin = PAR_MIN(*pzed, zmin); + zmax = PAR_MAX(*pzed, zmax); + } + } + float zextent = zmax - zmin; + pmesh = merged->meshes; + for (int i = 0; i < merged->nmeshes; i++, pmesh++) { + float* pzed = (*pmesh)->points + 2; + float zed = zmin + zextent * i / (merged->nmeshes - 1); + for (int j = 0; j < (*pmesh)->npoints; j++, pzed += 3) { + *pzed = zed; + } + } + if (!(snap & PAR_MSQUARES_CONNECT)) { + return merged; + } + for (int i = 1; i < merged->nmeshes; i++) { + par_msquares__mesh* mesh = merged->meshes[i]; + + // Find all extrusion points. This is tightly coupled to the + // tessellation code, which generates two "connector" triangles for each + // extruded edge. The first two verts of the second triangle are the + // verts that need to be displaced. + char* markers = PAR_CALLOC(char, mesh->npoints); + int tri = mesh->ntriangles - mesh->nconntriangles; + while (tri < mesh->ntriangles) { + markers[mesh->triangles[tri * 3 + 3]] = 1; + markers[mesh->triangles[tri * 3 + 4]] = 1; + tri += 2; + } + + // Displace all extrusion points down to the previous level. + float zed = zmin + zextent * (i - 1) / (merged->nmeshes - 1); + float* pzed = mesh->points + 2; + for (int j = 0; j < mesh->npoints; j++, pzed += 3) { + if (markers[j]) { + *pzed = zed; + } + } + free(markers); + } + return merged; +} + +static void par_remove_unreferenced_verts(par_msquares__mesh* mesh) +{ + if (mesh->npoints == 0) { + return; + } + char* markers = PAR_CALLOC(char, mesh->npoints); + PAR_MSQUARES_T const* ptris = mesh->triangles; + int newnpts = 0; + for (int i = 0; i < mesh->ntriangles * 3; i++, ptris++) { + if (!markers[*ptris]) { + newnpts++; + markers[*ptris] = 1; + } + } + float* newpts = PAR_CALLOC(float, newnpts * mesh->dim); + PAR_MSQUARES_T* mapping = PAR_CALLOC(PAR_MSQUARES_T, mesh->npoints); + float const* ppts = mesh->points; + float* pnewpts = newpts; + int j = 0; + if (mesh->dim == 3) { + for (int i = 0; i < mesh->npoints; i++, ppts += 3) { + if (markers[i]) { + *pnewpts++ = ppts[0]; + *pnewpts++ = ppts[1]; + *pnewpts++ = ppts[2]; + mapping[i] = j++; + } + } + } else { + for (int i = 0; i < mesh->npoints; i++, ppts += 2) { + if (markers[i]) { + *pnewpts++ = ppts[0]; + *pnewpts++ = ppts[1]; + mapping[i] = j++; + } + } + } + free(mesh->points); + free(markers); + mesh->points = newpts; + mesh->npoints = newnpts; + for (int i = 0; i < mesh->ntriangles * 3; i++) { + mesh->triangles[i] = mapping[mesh->triangles[i]]; + } + free(mapping); +} + +par_msquares_meshlist* par_msquares_function(int width, int height, + int cellsize, int flags, void* context, par_msquares_inside_fn insidefn, + par_msquares_height_fn heightfn) +{ + assert(width > 0 && width % cellsize == 0); + assert(height > 0 && height % cellsize == 0); + + if (flags & PAR_MSQUARES_DUAL) { + int connect = flags & PAR_MSQUARES_CONNECT; + int snap = flags & PAR_MSQUARES_SNAP; + int heights = flags & PAR_MSQUARES_HEIGHTS; + if (!heights) { + snap = connect = 0; + } + flags ^= PAR_MSQUARES_INVERT; + flags &= ~PAR_MSQUARES_DUAL; + flags &= ~PAR_MSQUARES_CONNECT; + par_msquares_meshlist* m[2]; + m[0] = par_msquares_function(width, height, cellsize, flags, + context, insidefn, heightfn); + flags ^= PAR_MSQUARES_INVERT; + if (connect) { + flags |= PAR_MSQUARES_CONNECT; + } + m[1] = par_msquares_function(width, height, cellsize, flags, + context, insidefn, heightfn); + return par_msquares__merge(m, 2, snap | connect); + } + + int invert = flags & PAR_MSQUARES_INVERT; + + // Create the two code tables if we haven't already. These are tables of + // fixed constants, so it's embarassing that we use dynamic memory + // allocation for them. However it's easy and it's one-time-only. + if (!par_msquares_binary_point_table) { + par_init_tables(); + } + + // Allocate the meshlist and the first mesh. + par_msquares_meshlist* mlist = PAR_CALLOC(par_msquares_meshlist, 1); + mlist->nmeshes = 1; + mlist->meshes = PAR_CALLOC(par_msquares__mesh*, 1); + mlist->meshes[0] = PAR_CALLOC(par_msquares__mesh, 1); + par_msquares__mesh* mesh = mlist->meshes[0]; + mesh->dim = (flags & PAR_MSQUARES_HEIGHTS) ? 3 : 2; + int ncols = width / cellsize; + int nrows = height / cellsize; + + // Worst case is four triangles and six verts per cell, so allocate that + // much. + int maxtris = ncols * nrows * 4; + int maxpts = ncols * nrows * 6; + int maxedges = ncols * nrows * 2; + + // However, if we include extrusion triangles for boundary edges, + // we need space for another 4 triangles and 4 points per cell. + PAR_MSQUARES_T* conntris = 0; + int nconntris = 0; + PAR_MSQUARES_T* edgemap = 0; + if (flags & PAR_MSQUARES_CONNECT) { + conntris = PAR_CALLOC(PAR_MSQUARES_T, maxedges * 6); + maxtris += maxedges * 2; + maxpts += maxedges * 2; + edgemap = PAR_CALLOC(PAR_MSQUARES_T, maxpts); + for (int i = 0; i < maxpts; i++) { + edgemap[i] = 0xffff; + } + } + PAR_MSQUARES_T* tris = PAR_CALLOC(PAR_MSQUARES_T, maxtris * 3); + int ntris = 0; + float* pts = PAR_CALLOC(float, maxpts * mesh->dim); + int npts = 0; + + // The "verts" x/y/z arrays are the 4 corners and 4 midpoints around the + // square, in counter-clockwise order. The origin of "triangle space" is at + // the lower-left, although we expect the image data to be in raster order + // (starts at top-left). + float vertsx[8], vertsy[8]; + float normalization = 1.0f / PAR_MAX(width, height); + float normalized_cellsize = cellsize * normalization; + int maxrow = (height - 1) * width; + PAR_MSQUARES_T* ptris = tris; + PAR_MSQUARES_T* pconntris = conntris; + float* ppts = pts; + uint8_t* prevrowmasks = PAR_CALLOC(uint8_t, ncols); + int* prevrowinds = PAR_CALLOC(int, ncols * 3); + + // If simplification is enabled, we need to track all 'F' cells and their + // respective triangle indices. + uint8_t* simplification_codes = 0; + PAR_MSQUARES_T* simplification_tris = 0; + uint8_t* simplification_ntris = 0; + if (flags & PAR_MSQUARES_SIMPLIFY) { + simplification_codes = PAR_CALLOC(uint8_t, nrows * ncols); + simplification_tris = PAR_CALLOC(PAR_MSQUARES_T, nrows * ncols); + simplification_ntris = PAR_CALLOC(uint8_t, nrows * ncols); + } + + // Do the march! + for (int row = 0; row < nrows; row++) { + vertsx[0] = vertsx[6] = vertsx[7] = 0; + vertsx[1] = vertsx[5] = 0.5 * normalized_cellsize; + vertsx[2] = vertsx[3] = vertsx[4] = normalized_cellsize; + vertsy[0] = vertsy[1] = vertsy[2] = normalized_cellsize * (row + 1); + vertsy[4] = vertsy[5] = vertsy[6] = normalized_cellsize * row; + vertsy[3] = vertsy[7] = normalized_cellsize * (row + 0.5); + + int northi = row * cellsize * width; + int southi = PAR_MIN(northi + cellsize * width, maxrow); + int northwest = invert ^ insidefn(northi, context); + int southwest = invert ^ insidefn(southi, context); + int previnds[8] = {0}; + uint8_t prevmask = 0; + + for (int col = 0; col < ncols; col++) { + northi += cellsize; + southi += cellsize; + if (col == ncols - 1) { + northi--; + southi--; + } + + int northeast = invert ^ insidefn(northi, context); + int southeast = invert ^ insidefn(southi, context); + int code = southwest | (southeast << 1) | (northwest << 2) | + (northeast << 3); + + int const* pointspec = par_msquares_binary_point_table[code]; + int ptspeclength = *pointspec++; + int currinds[8] = {0}; + uint8_t mask = 0; + uint8_t prevrowmask = prevrowmasks[col]; + while (ptspeclength--) { + int midp = *pointspec++; + int bit = 1 << midp; + mask |= bit; + + // The following six conditionals perform welding to reduce the + // number of vertices. The first three perform welding with the + // cell to the west; the latter three perform welding with the + // cell to the north. + if (bit == 1 && (prevmask & 4)) { + currinds[midp] = previnds[2]; + continue; + } + if (bit == 128 && (prevmask & 8)) { + currinds[midp] = previnds[3]; + continue; + } + if (bit == 64 && (prevmask & 16)) { + currinds[midp] = previnds[4]; + continue; + } + if (bit == 16 && (prevrowmask & 4)) { + currinds[midp] = prevrowinds[col * 3 + 2]; + continue; + } + if (bit == 32 && (prevrowmask & 2)) { + currinds[midp] = prevrowinds[col * 3 + 1]; + continue; + } + if (bit == 64 && (prevrowmask & 1)) { + currinds[midp] = prevrowinds[col * 3 + 0]; + continue; + } + + ppts[0] = vertsx[midp]; + ppts[1] = vertsy[midp]; + + // Adjust the midpoints to a more exact crossing point. + if (midp == 1) { + int begin = southi - cellsize / 2; + int previous = 0; + for (int i = 0; i < cellsize; i++) { + int offset = begin + i / 2 * ((i % 2) ? -1 : 1); + int inside = insidefn(offset, context); + if (i > 0 && inside != previous) { + ppts[0] = normalization * + (col * cellsize + offset - southi + cellsize); + break; + } + previous = inside; + } + } else if (midp == 5) { + int begin = northi - cellsize / 2; + int previous = 0; + for (int i = 0; i < cellsize; i++) { + int offset = begin + i / 2 * ((i % 2) ? -1 : 1); + int inside = insidefn(offset, context); + if (i > 0 && inside != previous) { + ppts[0] = normalization * + (col * cellsize + offset - northi + cellsize); + break; + } + previous = inside; + } + } else if (midp == 3) { + int begin = northi + width * cellsize / 2; + int previous = 0; + for (int i = 0; i < cellsize; i++) { + int offset = begin + + width * (i / 2 * ((i % 2) ? -1 : 1)); + int inside = insidefn(offset, context); + if (i > 0 && inside != previous) { + ppts[1] = normalization * + (row * cellsize + + (offset - northi) / (float) width); + break; + } + previous = inside; + } + } else if (midp == 7) { + int begin = northi + width * cellsize / 2 - cellsize; + int previous = 0; + for (int i = 0; i < cellsize; i++) { + int offset = begin + + width * (i / 2 * ((i % 2) ? -1 : 1)); + int inside = insidefn(offset, context); + if (i > 0 && inside != previous) { + ppts[1] = normalization * + (row * cellsize + + (offset - northi - cellsize) / (float) width); + break; + } + previous = inside; + } + } + + if (mesh->dim == 3) { + if (width > height) { + ppts[2] = heightfn(ppts[0], ppts[1] * width / height, + context); + } else { + ppts[2] = heightfn(ppts[0] * height / width, ppts[1], + context); + } + } + + ppts += mesh->dim; + currinds[midp] = npts++; + } + + int const* trianglespec = par_msquares_binary_triangle_table[code]; + int trispeclength = *trianglespec++; + + if (flags & PAR_MSQUARES_SIMPLIFY) { + simplification_codes[ncols * row + col] = code; + simplification_tris[ncols * row + col] = ntris; + simplification_ntris[ncols * row + col] = trispeclength; + } + + // Add triangles. + while (trispeclength--) { + int a = *trianglespec++; + int b = *trianglespec++; + int c = *trianglespec++; + *ptris++ = currinds[c]; + *ptris++ = currinds[b]; + *ptris++ = currinds[a]; + ntris++; + } + + // Create two extrusion triangles for each boundary edge. + if (flags & PAR_MSQUARES_CONNECT) { + trianglespec = par_msquares_binary_triangle_table[code]; + trispeclength = *trianglespec++; + while (trispeclength--) { + int a = *trianglespec++; + int b = *trianglespec++; + int c = *trianglespec++; + int i = currinds[a]; + int j = currinds[b]; + int k = currinds[c]; + int u = 0, v = 0, w = 0; + if ((a % 2) && (b % 2)) { + u = v = 1; + } else if ((a % 2) && (c % 2)) { + u = w = 1; + } else if ((b % 2) && (c % 2)) { + v = w = 1; + } else { + continue; + } + if (u && edgemap[i] == 0xffff) { + for (int d = 0; d < mesh->dim; d++) { + *ppts++ = pts[i * mesh->dim + d]; + } + edgemap[i] = npts++; + } + if (v && edgemap[j] == 0xffff) { + for (int d = 0; d < mesh->dim; d++) { + *ppts++ = pts[j * mesh->dim + d]; + } + edgemap[j] = npts++; + } + if (w && edgemap[k] == 0xffff) { + for (int d = 0; d < mesh->dim; d++) { + *ppts++ = pts[k * mesh->dim + d]; + } + edgemap[k] = npts++; + } + if ((a % 2) && (b % 2)) { + *pconntris++ = i; + *pconntris++ = j; + *pconntris++ = edgemap[j]; + *pconntris++ = edgemap[j]; + *pconntris++ = edgemap[i]; + *pconntris++ = i; + } else if ((a % 2) && (c % 2)) { + *pconntris++ = edgemap[k]; + *pconntris++ = k; + *pconntris++ = i; + *pconntris++ = edgemap[i]; + *pconntris++ = edgemap[k]; + *pconntris++ = i; + } else if ((b % 2) && (c % 2)) { + *pconntris++ = j; + *pconntris++ = k; + *pconntris++ = edgemap[k]; + *pconntris++ = edgemap[k]; + *pconntris++ = edgemap[j]; + *pconntris++ = j; + } + nconntris += 2; + } + } + + // Prepare for the next cell. + prevrowmasks[col] = mask; + prevrowinds[col * 3 + 0] = currinds[0]; + prevrowinds[col * 3 + 1] = currinds[1]; + prevrowinds[col * 3 + 2] = currinds[2]; + prevmask = mask; + northwest = northeast; + southwest = southeast; + for (int i = 0; i < 8; i++) { + previnds[i] = currinds[i]; + vertsx[i] += normalized_cellsize; + } + } + } + free(edgemap); + free(prevrowmasks); + free(prevrowinds); + + // Perform quick-n-dirty simplification by iterating two rows at a time. + // In no way does this create the simplest possible mesh, but at least it's + // fast and easy. + if (flags & PAR_MSQUARES_SIMPLIFY) { + int in_run = 0, start_run; + + // First figure out how many triangles we can eliminate. + int neliminated_triangles = 0; + for (int row = 0; row < nrows - 1; row += 2) { + for (int col = 0; col < ncols; col++) { + int a = simplification_codes[ncols * row + col] == 0xf; + int b = simplification_codes[ncols * row + col + ncols] == 0xf; + if (a && b) { + if (!in_run) { + in_run = 1; + start_run = col; + } + continue; + } + if (in_run) { + in_run = 0; + int run_width = col - start_run; + neliminated_triangles += run_width * 4 - 2; + } + } + if (in_run) { + in_run = 0; + int run_width = ncols - start_run; + neliminated_triangles += run_width * 4 - 2; + } + } + + // Build a new index array cell-by-cell. If any given cell is 'F' and + // its neighbor to the south is also 'F', then it's part of a run. + int nnewtris = ntris + nconntris - neliminated_triangles; + PAR_MSQUARES_T* newtris = PAR_CALLOC(PAR_MSQUARES_T, nnewtris * 3); + PAR_MSQUARES_T* pnewtris = newtris; + in_run = 0; + for (int row = 0; row < nrows - 1; row += 2) { + for (int col = 0; col < ncols; col++) { + int cell = ncols * row + col; + int south = cell + ncols; + int a = simplification_codes[cell] == 0xf; + int b = simplification_codes[south] == 0xf; + if (a && b) { + if (!in_run) { + in_run = 1; + start_run = col; + } + continue; + } + if (in_run) { + in_run = 0; + int nw_cell = ncols * row + start_run; + int ne_cell = ncols * row + col - 1; + int sw_cell = nw_cell + ncols; + int se_cell = ne_cell + ncols; + int nw_tri = simplification_tris[nw_cell]; + int ne_tri = simplification_tris[ne_cell]; + int sw_tri = simplification_tris[sw_cell]; + int se_tri = simplification_tris[se_cell]; + int nw_corner = nw_tri * 3 + 4; + int ne_corner = ne_tri * 3 + 0; + int sw_corner = sw_tri * 3 + 2; + int se_corner = se_tri * 3 + 1; + *pnewtris++ = tris[se_corner]; + *pnewtris++ = tris[sw_corner]; + *pnewtris++ = tris[nw_corner]; + *pnewtris++ = tris[nw_corner]; + *pnewtris++ = tris[ne_corner]; + *pnewtris++ = tris[se_corner]; + } + int ncelltris = simplification_ntris[cell]; + int celltri = simplification_tris[cell]; + for (int t = 0; t < ncelltris; t++, celltri++) { + *pnewtris++ = tris[celltri * 3]; + *pnewtris++ = tris[celltri * 3 + 1]; + *pnewtris++ = tris[celltri * 3 + 2]; + } + ncelltris = simplification_ntris[south]; + celltri = simplification_tris[south]; + for (int t = 0; t < ncelltris; t++, celltri++) { + *pnewtris++ = tris[celltri * 3]; + *pnewtris++ = tris[celltri * 3 + 1]; + *pnewtris++ = tris[celltri * 3 + 2]; + } + } + if (in_run) { + in_run = 0; + int nw_cell = ncols * row + start_run; + int ne_cell = ncols * row + ncols - 1; + int sw_cell = nw_cell + ncols; + int se_cell = ne_cell + ncols; + int nw_tri = simplification_tris[nw_cell]; + int ne_tri = simplification_tris[ne_cell]; + int sw_tri = simplification_tris[sw_cell]; + int se_tri = simplification_tris[se_cell]; + int nw_corner = nw_tri * 3 + 4; + int ne_corner = ne_tri * 3 + 0; + int sw_corner = sw_tri * 3 + 2; + int se_corner = se_tri * 3 + 1; + *pnewtris++ = tris[se_corner]; + *pnewtris++ = tris[sw_corner]; + *pnewtris++ = tris[nw_corner]; + *pnewtris++ = tris[nw_corner]; + *pnewtris++ = tris[ne_corner]; + *pnewtris++ = tris[se_corner]; + } + } + ptris = pnewtris; + ntris -= neliminated_triangles; + free(tris); + tris = newtris; + free(simplification_codes); + free(simplification_tris); + free(simplification_ntris); + + // Remove unreferenced points. + char* markers = PAR_CALLOC(char, npts); + ptris = tris; + int newnpts = 0; + for (int i = 0; i < ntris * 3; i++, ptris++) { + if (!markers[*ptris]) { + newnpts++; + markers[*ptris] = 1; + } + } + for (int i = 0; i < nconntris * 3; i++) { + if (!markers[conntris[i]]) { + newnpts++; + markers[conntris[i]] = 1; + } + } + float* newpts = PAR_CALLOC(float, newnpts * mesh->dim); + PAR_MSQUARES_T* mapping = PAR_CALLOC(PAR_MSQUARES_T, npts); + ppts = pts; + float* pnewpts = newpts; + int j = 0; + if (mesh->dim == 3) { + for (int i = 0; i < npts; i++, ppts += 3) { + if (markers[i]) { + *pnewpts++ = ppts[0]; + *pnewpts++ = ppts[1]; + *pnewpts++ = ppts[2]; + mapping[i] = j++; + } + } + } else { + for (int i = 0; i < npts; i++, ppts += 2) { + if (markers[i]) { + *pnewpts++ = ppts[0]; + *pnewpts++ = ppts[1]; + mapping[i] = j++; + } + } + } + free(pts); + free(markers); + pts = newpts; + npts = newnpts; + for (int i = 0; i < ntris * 3; i++) { + tris[i] = mapping[tris[i]]; + } + for (int i = 0; i < nconntris * 3; i++) { + conntris[i] = mapping[conntris[i]]; + } + free(mapping); + } + + // Append all extrusion triangles to the main triangle array. + // We need them to be last so that they form a contiguous sequence. + pconntris = conntris; + for (int i = 0; i < nconntris; i++) { + *ptris++ = *pconntris++; + *ptris++ = *pconntris++; + *ptris++ = *pconntris++; + ntris++; + } + free(conntris); + + // Final cleanup and return. + assert(npts <= maxpts); + assert(ntris <= maxtris); + mesh->npoints = npts; + mesh->points = pts; + mesh->ntriangles = ntris; + mesh->triangles = tris; + mesh->nconntriangles = nconntris; + return mlist; +} + +typedef struct { + PAR_MSQUARES_T outera; + PAR_MSQUARES_T outerb; + PAR_MSQUARES_T innera; + PAR_MSQUARES_T innerb; + char i; + char j; + par_msquares__mesh* mesh; + int mesh_index; +} par_connector; + +static par_connector* par_conn_find(par_connector* conns, int nconns, + char i, char j) +{ + for (int c = 0; c < nconns; c++) { + if (conns[c].i == i && conns[c].j == j) { + return conns + c; + } + } + return 0; +} + +static int par_msquares_cmp(const void *a, const void *b) +{ + uint32_t arg1 = *((uint32_t const*) a); + uint32_t arg2 = *((uint32_t const*) b); + if (arg1 < arg2) return -1; + if (arg1 > arg2) return 1; + return 0; +} + +typedef int (*par_msquares_code_fn)(int, int, int, int, void*); + +static int par_msquares_multi_code(int sw, int se, int ne, int nw) +{ + int code[4]; + int ncols = 0; + code[0] = ncols++; + if (se == sw) { + code[1] = code[0]; + } else { + code[1] = ncols++; + } + if (ne == se) { + code[2] = code[1]; + } else if (ne == sw) { + code[2] = code[0]; + } else { + code[2] = ncols++; + } + if (nw == ne) { + code[3] = code[2]; + } else if (nw == se) { + code[3] = code[1]; + } else if (nw == sw) { + code[3] = code[0]; + } else { + code[3] = ncols++; + } + return code[0] | (code[1] << 2) | (code[2] << 4) | (code[3] << 6); +} + +static uint32_t par_msquares_argb(par_byte const* pdata, int bpp) +{ + uint32_t color = 0; + if (bpp == 4) { + color |= pdata[2]; + color |= pdata[1] << 8; + color |= pdata[0] << 16; + color |= pdata[3] << 24; + return color; + } + for (int j = 0; j < bpp; j++) { + color <<= 8; + color |= pdata[j]; + } + return color; +} + +// Merge connective triangles into the primary triangle list. +static void par_msquares__finalize(par_msquares_meshlist* mlist) +{ + if (mlist->nmeshes < 2 || mlist->meshes[1]->nconntriangles == 0) { + return; + } + for (int m = 1; m < mlist->nmeshes; m++) { + par_msquares__mesh* mesh = mlist->meshes[m]; + int ntris = mesh->ntriangles + mesh->nconntriangles; + PAR_MSQUARES_T* triangles = PAR_CALLOC(PAR_MSQUARES_T, ntris * 3); + PAR_MSQUARES_T* dst = triangles; + PAR_MSQUARES_T const* src = mesh->triangles; + for (int t = 0; t < mesh->ntriangles; t++) { + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + } + src = mesh->conntri; + for (int t = 0; t < mesh->nconntriangles; t++) { + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + } + free(mesh->triangles); + free(mesh->conntri); + mesh->triangles = triangles; + mesh->ntriangles = ntris; + mesh->conntri = 0; + mesh->nconntriangles = 0; + } +} + +static par__uint16list* par__uint16list_create() +{ + par__uint16list* list = PAR_CALLOC(par__uint16list, 1); + list->count = 0; + list->capacity = 32; + list->values = PAR_CALLOC(PAR_MSQUARES_T, list->capacity); + return list; +} + +static void par__uint16list_add3(par__uint16list* list, + PAR_MSQUARES_T a, PAR_MSQUARES_T b, PAR_MSQUARES_T c) +{ + if (list->count + 3 > list->capacity) { + list->capacity *= 2; + list->values = PAR_REALLOC(PAR_MSQUARES_T, list->values, list->capacity); + } + list->values[list->count++] = a; + list->values[list->count++] = b; + list->values[list->count++] = c; +} + +static void par__uint16list_free(par__uint16list* list) +{ + if (list) { + PAR_FREE(list->values); + PAR_FREE(list); + } +} + +static void par_msquares__repair_tjunctions(par_msquares_meshlist* mlist) +{ + for (int m = 0; m < mlist->nmeshes; m++) { + par_msquares__mesh* mesh = mlist->meshes[m]; + par__uint16list* tjunctions = mesh->tjunctions; + int njunctions = (int) tjunctions->count / 3; + if (njunctions == 0) { + continue; + } + int ntriangles = mesh->ntriangles + njunctions; + mesh->triangles = PAR_REALLOC(PAR_MSQUARES_T, mesh->triangles, + ntriangles * 3); + PAR_MSQUARES_T const* jun = tjunctions->values; + PAR_MSQUARES_T* new_triangles = mesh->triangles + mesh->ntriangles * 3; + int ncreated = 0; + for (int j = 0; j < njunctions; j++, jun += 3) { + PAR_MSQUARES_T* tri = mesh->triangles; + int t; + for (t = 0; t < mesh->ntriangles; t++, tri += 3) { + int i = -1; + if (tri[0] == jun[0] && tri[1] == jun[1]) { + i = 0; + } else if (tri[1] == jun[0] && tri[2] == jun[1]) { + i = 1; + } else if (tri[2] == jun[0] && tri[0] == jun[1]) { + i = 2; + } else { + continue; + } + new_triangles[0] = tri[(i + 0) % 3]; + new_triangles[1] = jun[2]; + new_triangles[2] = tri[(i + 2) % 3]; + tri[(i + 0) % 3] = jun[2]; + new_triangles += 3; + ncreated++; + break; + } + // TODO: Need to investigate the "msquares_multi_diagram.obj" test. + assert(t != mesh->ntriangles && + "Error with T-Junction repair; please disable the CLEAN flag."); + } + mesh->ntriangles += ncreated; + } +} + +par_msquares_meshlist* par_msquares_color_multi(par_byte const* data, int width, + int height, int cellsize, int bpp, int flags) +{ + if (!par_msquares_binary_point_table) { + par_init_tables(); + } + const int ncols = width / cellsize; + const int nrows = height / cellsize; + const int maxrow = (height - 1) * width; + const int ncells = ncols * nrows; + const int dim = (flags & PAR_MSQUARES_HEIGHTS) ? 3 : 2; + const int west_to_east[9] = { 2, -1, -1, -1, -1, -1, 4, 3, -1 }; + const int north_to_south[9] = { -1, -1, -1, -1, 2, 1, 0, -1, -1 }; + assert(!(flags & PAR_MSQUARES_HEIGHTS) || bpp == 4); + assert(bpp > 0 && bpp <= 4 && "Bytes per pixel must be 1, 2, 3, or 4."); + assert(!(flags & PAR_MSQUARES_CLEAN) || !(flags & PAR_MSQUARES_SIMPLIFY)); + assert(!(flags & PAR_MSQUARES_SNAP) && + "SNAP is not supported with color_multi"); + assert(!(flags & PAR_MSQUARES_INVERT) && + "INVERT is not supported with color_multi"); + assert(!(flags & PAR_MSQUARES_DUAL) && + "DUAL is not supported with color_multi"); + + // Find all unique colors and ensure there are no more than 256 colors. + uint32_t colors[256]; + int ncolors = 0; + par_byte const* pdata = data; + for (int i = 0; i < width * height; i++, pdata += bpp) { + uint32_t color = par_msquares_argb(pdata, bpp); + if (0 == bsearch(&color, colors, ncolors, 4, par_msquares_cmp)) { + assert(ncolors < 256); + colors[ncolors++] = color; + qsort(colors, ncolors, sizeof(uint32_t), par_msquares_cmp); + } + } + + // Convert the color image to grayscale using the mapping table. + par_byte* pixels = PAR_CALLOC(par_byte, width * height); + pdata = data; + for (int i = 0; i < width * height; i++, pdata += bpp) { + uint32_t color = par_msquares_argb(pdata, bpp); + void* result = bsearch(&color, colors, ncolors, 4, par_msquares_cmp); + pixels[i] = (uint32_t*) result - &colors[0]; + } + + // Allocate 1 mesh for each color. + par_msquares_meshlist* mlist = PAR_CALLOC(par_msquares_meshlist, 1); + mlist->nmeshes = ncolors; + mlist->meshes = PAR_CALLOC(par_msquares__mesh*, ncolors); + par_msquares__mesh* mesh; + int maxtris_per_cell = 6; + int maxpts_per_cell = 9; + if (flags & PAR_MSQUARES_CONNECT) { + maxpts_per_cell += 6; + } + for (int i = 0; i < ncolors; i++) { + mesh = mlist->meshes[i] = PAR_CALLOC(par_msquares__mesh, 1); + mesh->color = colors[i]; + mesh->points = PAR_CALLOC(float, ncells * maxpts_per_cell * dim); + mesh->triangles = PAR_CALLOC(PAR_MSQUARES_T, ncells * maxtris_per_cell * 3); + mesh->dim = dim; + mesh->tjunctions = par__uint16list_create(); + if (flags & PAR_MSQUARES_CONNECT) { + mesh->conntri = PAR_CALLOC(PAR_MSQUARES_T, ncells * 8 * 3); + } + } + + // The "verts" x/y/z arrays are the 4 corners and 4 midpoints around the + // square, in counter-clockwise order, starting at the lower-left. The + // ninth vert is the center point. + + float vertsx[9], vertsy[9]; + float normalization = 1.0f / PAR_MAX(width, height); + float normalized_cellsize = cellsize * normalization; + uint8_t cella[256]; + uint8_t cellb[256]; + uint8_t* currcell = cella; + uint8_t* prevcell = cellb; + PAR_MSQUARES_T inds0[256 * 9]; + PAR_MSQUARES_T inds1[256 * 9]; + PAR_MSQUARES_T* currinds = inds0; + PAR_MSQUARES_T* previnds = inds1; + PAR_MSQUARES_T* rowindsa = PAR_CALLOC(PAR_MSQUARES_T, ncols * 3 * 256); + uint8_t* rowcellsa = PAR_CALLOC(uint8_t, ncols * 256); + PAR_MSQUARES_T* rowindsb = PAR_CALLOC(PAR_MSQUARES_T, ncols * 3 * 256); + uint8_t* rowcellsb = PAR_CALLOC(uint8_t, ncols * 256); + PAR_MSQUARES_T* prevrowinds = rowindsa; + PAR_MSQUARES_T* currrowinds = rowindsb; + uint8_t* prevrowcells = rowcellsa; + uint8_t* currrowcells = rowcellsb; + uint32_t* simplification_words = 0; + if (flags & PAR_MSQUARES_SIMPLIFY) { + simplification_words = PAR_CALLOC(uint32_t, 2 * nrows * ncols); + } + + // Do the march! + for (int row = 0; row < nrows; row++) { + vertsx[0] = vertsx[6] = vertsx[7] = 0; + vertsx[1] = vertsx[5] = vertsx[8] = 0.5 * normalized_cellsize; + vertsx[2] = vertsx[3] = vertsx[4] = normalized_cellsize; + vertsy[0] = vertsy[1] = vertsy[2] = normalized_cellsize * (row + 1); + vertsy[4] = vertsy[5] = vertsy[6] = normalized_cellsize * row; + vertsy[3] = vertsy[7] = vertsy[8] = normalized_cellsize * (row + 0.5); + int northi = row * cellsize * width; + int southi = PAR_MIN(northi + cellsize * width, maxrow); + int nwval = pixels[northi]; + int swval = pixels[southi]; + memset(currrowcells, 0, ncols * 256); + + for (int col = 0; col < ncols; col++) { + northi += cellsize; + southi += cellsize; + if (col == ncols - 1) { + northi--; + southi--; + } + + // Obtain 8-bit code and grab the four corresponding triangle lists. + int neval = pixels[northi]; + int seval = pixels[southi]; + int code = par_msquares_multi_code(swval, seval, neval, nwval) >> 2; + int const* trispecs[4] = { + par_msquares_quaternary_triangle_table[code][0], + par_msquares_quaternary_triangle_table[code][1], + par_msquares_quaternary_triangle_table[code][2], + par_msquares_quaternary_triangle_table[code][3] + }; + int ntris[4] = { + *trispecs[0]++, + *trispecs[1]++, + *trispecs[2]++, + *trispecs[3]++ + }; + int const* edgespecs[4] = { + par_msquares_quaternary_boundary_table[code][0], + par_msquares_quaternary_boundary_table[code][1], + par_msquares_quaternary_boundary_table[code][2], + par_msquares_quaternary_boundary_table[code][3] + }; + int nedges[4] = { + *edgespecs[0]++, + *edgespecs[1]++, + *edgespecs[2]++, + *edgespecs[3]++ + }; + int vals[4] = { swval, seval, neval, nwval }; + + // Gather topology information. + par_connector edges[16]; + int ncedges = 0; + for (int c = 0; c < 4; c++) { + int color = vals[c]; + par_msquares__mesh* mesh = mlist->meshes[color]; + par_connector edge; + for (int e = 0; e < nedges[c]; e++) { + char previndex = edgespecs[c][e * 2]; + char currindex = edgespecs[c][e * 2 + 1]; + edge.i = previndex; + edge.j = currindex; + edge.mesh_index = color; + edge.mesh = mesh; + edges[ncedges++] = edge; + } + } + assert(ncedges < 16); + + // Push triangles and points into the four affected meshes. + for (int m = 0; m < ncolors; m++) { + currcell[m] = 0; + } + uint32_t colors = 0; + uint32_t counts = 0; + PAR_MSQUARES_T* conntris_start[4]; + for (int c = 0; c < 4; c++) { + int color = vals[c]; + colors |= color << (8 * c); + counts |= ntris[c] << (8 * c); + par_msquares__mesh* mesh = mlist->meshes[color]; + float height = (mesh->color >> 24) / 255.0; + conntris_start[c] = mesh->conntri + mesh->nconntriangles * 3; + int usedpts[9] = {0}; + PAR_MSQUARES_T* pcurrinds = currinds + 9 * color; + PAR_MSQUARES_T const* pprevinds = previnds + 9 * color; + PAR_MSQUARES_T const* pprevrowinds = + prevrowinds + ncols * 3 * color + col * 3; + uint8_t prevrowcell = prevrowcells[color * ncols + col]; + float* pdst = mesh->points + mesh->npoints * mesh->dim; + int previndex, prevflag; + for (int t = 0; t < ntris[c] * 3; t++) { + PAR_MSQUARES_T index = trispecs[c][t]; + if (usedpts[index]) { + continue; + } + usedpts[index] = 1; + if (index < 8) { + currcell[color] |= 1 << index; + } + + // Vertical welding. + previndex = north_to_south[index]; + prevflag = (previndex > -1) ? (1 << previndex) : 0; + if (row > 0 && (prevrowcell & prevflag)) { + pcurrinds[index] = pprevrowinds[previndex]; + continue; + } + + // Horizontal welding. + previndex = west_to_east[index]; + prevflag = (previndex > -1) ? (1 << previndex) : 0; + if (col > 0 && (prevcell[color] & prevflag)) { + pcurrinds[index] = pprevinds[previndex]; + continue; + } + + // Insert brand new point. + float* vertex = pdst; + *pdst++ = vertsx[index]; + *pdst++ = 1 - vertsy[index]; + if (mesh->dim == 3) { + *pdst++ = height; + } + pcurrinds[index] = mesh->npoints++; + + // If this is a midpoint, nudge it to the intersection. + if (index == 1) { + int begin = southi - cellsize; + for (int i = 1; i < cellsize + 1; i++) { + int val = pixels[begin + i]; + if (val != pixels[begin]) { + vertex[0] = vertsx[0] + normalized_cellsize * + (float) i / cellsize; + break; + } + } + } else if (index == 3) { + int begin = northi; + for (int i = 1; i < cellsize + 1; i++) { + int val = pixels[begin + i * width]; + if (val != pixels[begin]) { + vertex[1] = (1 - vertsy[4]) - + normalized_cellsize * (float) i / cellsize; + break; + } + } + } + } + + // Look for T junctions and note them for later repairs. + uint8_t prc = prevrowcell; + if (usedpts[4] && !usedpts[5] && usedpts[6] && (prc & 2)) { + // Above cell had a middle vert, current cell straddles it. + par__uint16list_add3(mesh->tjunctions, + pcurrinds[4], pcurrinds[6], pprevrowinds[1]); + } else if ((prc & 1) && !(prc & 2) && (prc & 4) && usedpts[5]) { + // Current cell has a middle vert, above cell straddles it. + par__uint16list_add3(mesh->tjunctions, + pprevrowinds[0], pprevrowinds[2], pcurrinds[5]); + } + uint8_t pcc = col > 0 ? prevcell[color] : 0; + if (usedpts[0] && !usedpts[7] && usedpts[6] && (pcc & 8)) { + // Left cell had a middle vert, current cell straddles it. + par__uint16list_add3(mesh->tjunctions, + pcurrinds[6], pcurrinds[0], pprevinds[3]); + } + if ((pcc & 4) && !(pcc & 8) && (pcc & 16) && usedpts[7]) { + // Current cell has a middle vert, left cell straddles it. + par__uint16list_add3(mesh->tjunctions, + pprevinds[2], pprevinds[4], pcurrinds[7]); + } + + // Stamp out the cell's triangle indices for this color. + PAR_MSQUARES_T* tdst = mesh->triangles + mesh->ntriangles * 3; + mesh->ntriangles += ntris[c]; + for (int t = 0; t < ntris[c] * 3; t++) { + PAR_MSQUARES_T index = trispecs[c][t]; + *tdst++ = pcurrinds[index]; + } + + // Add extrusion points and connective triangles if requested. + if (!(flags & PAR_MSQUARES_CONNECT)) { + continue; + } + for (int e = 0; e < nedges[c]; e++) { + int previndex = edgespecs[c][e * 2]; + int currindex = edgespecs[c][e * 2 + 1]; + par_connector* thisedge = par_conn_find(edges, + ncedges, previndex, currindex); + thisedge->innera = pcurrinds[previndex]; + thisedge->innerb = pcurrinds[currindex]; + thisedge->outera = mesh->npoints; + thisedge->outerb = mesh->npoints + 1; + par_connector* oppedge = par_conn_find(edges, + ncedges, currindex, previndex); + if (oppedge->mesh_index > color) continue; + *pdst++ = vertsx[previndex]; + *pdst++ = 1 - vertsy[previndex]; + if (mesh->dim == 3) { + *pdst++ = height; + } + mesh->npoints++; + *pdst++ = vertsx[currindex]; + *pdst++ = 1 - vertsy[currindex]; + if (mesh->dim == 3) { + *pdst++ = height; + } + mesh->npoints++; + PAR_MSQUARES_T i0 = mesh->npoints - 1; + PAR_MSQUARES_T i1 = mesh->npoints - 2; + PAR_MSQUARES_T i2 = pcurrinds[previndex]; + PAR_MSQUARES_T i3 = pcurrinds[currindex]; + PAR_MSQUARES_T* ptr = mesh->conntri + + mesh->nconntriangles * 3; + *ptr++ = i2; *ptr++ = i1; *ptr++ = i0; + *ptr++ = i0; *ptr++ = i3; *ptr++ = i2; + mesh->nconntriangles += 2; + } + } + + // Adjust the positions of the extrusion verts. + if (flags & PAR_MSQUARES_CONNECT) { + for (int c = 0; c < 4; c++) { + int color = vals[c]; + PAR_MSQUARES_T* pconninds = conntris_start[c]; + par_msquares__mesh* mesh = mlist->meshes[color]; + for (int e = 0; e < nedges[c]; e++) { + int previndex = edgespecs[c][e * 2]; + int currindex = edgespecs[c][e * 2 + 1]; + PAR_MSQUARES_T i1 = pconninds[1]; + PAR_MSQUARES_T i0 = pconninds[2]; + par_connector const* oppedge = par_conn_find(edges, + ncedges, currindex, previndex); + if (oppedge->mesh_index > color) continue; + int d = mesh->dim; + float* dst = mesh->points; + float const* src = oppedge->mesh->points; + dst[i0 * d + 0] = src[oppedge->innera * d + 0]; + dst[i0 * d + 1] = src[oppedge->innera * d + 1]; + dst[i1 * d + 0] = src[oppedge->innerb * d + 0]; + dst[i1 * d + 1] = src[oppedge->innerb * d + 1]; + if (d == 3) { + dst[i0 * d + 2] = src[oppedge->innera * d + 2]; + dst[i1 * d + 2] = src[oppedge->innerb * d + 2]; + } + pconninds += 6; + } + } + } + + // Stash the bottom indices for each mesh in this cell to enable + // vertical as-you-go welding. + uint8_t* pcurrrowcells = currrowcells; + PAR_MSQUARES_T* pcurrrowinds = currrowinds; + PAR_MSQUARES_T const* pcurrinds = currinds; + for (int color = 0; color < ncolors; color++) { + pcurrrowcells[col] = currcell[color]; + pcurrrowcells += ncols; + pcurrrowinds[col * 3 + 0] = pcurrinds[0]; + pcurrrowinds[col * 3 + 1] = pcurrinds[1]; + pcurrrowinds[col * 3 + 2] = pcurrinds[2]; + pcurrrowinds += ncols * 3; + pcurrinds += 9; + } + + // Stash some information later used by simplification. + if (flags & PAR_MSQUARES_SIMPLIFY) { + int cell = col + row * ncols; + simplification_words[cell * 2] = colors; + simplification_words[cell * 2 + 1] = counts; + } + + // Advance the cursor. + nwval = neval; + swval = seval; + for (int i = 0; i < 9; i++) { + vertsx[i] += normalized_cellsize; + } + PAR_SWAP(uint8_t*, prevcell, currcell); + PAR_SWAP(PAR_MSQUARES_T*, previnds, currinds); + } + PAR_SWAP(uint8_t*, prevrowcells, currrowcells); + PAR_SWAP(PAR_MSQUARES_T*, prevrowinds, currrowinds); + } + free(prevrowinds); + free(prevrowcells); + free(pixels); + + if (flags & PAR_MSQUARES_CLEAN) { + par_msquares__repair_tjunctions(mlist); + } + for (int m = 0; m < mlist->nmeshes; m++) { + par_msquares__mesh* mesh = mlist->meshes[m]; + par__uint16list_free(mesh->tjunctions); + } + if (!(flags & PAR_MSQUARES_SIMPLIFY)) { + par_msquares__finalize(mlist); + return mlist; + } + + uint8_t* simplification_blocks = PAR_CALLOC(uint8_t, nrows * ncols); + uint32_t* simplification_tris = PAR_CALLOC(uint32_t, nrows * ncols); + uint8_t* simplification_ntris = PAR_CALLOC(uint8_t, nrows * ncols); + + // Perform quick-n-dirty simplification by iterating two rows at a time. + // In no way does this create the simplest possible mesh, but at least it's + // fast and easy. + for (uint32_t color = 0; color < (uint32_t) ncolors; color++) { + par_msquares__mesh* mesh = mlist->meshes[color]; + + // Populate the per-mesh info grids. + int ntris = 0; + for (int row = 0; row < nrows; row++) { + for (int col = 0; col < ncols; col++) { + int cell = ncols * row + col; + uint32_t colors = simplification_words[cell * 2]; + uint32_t counts = simplification_words[cell * 2 + 1]; + int ncelltris = 0; + int ncorners = 0; + if ((colors & 0xff) == color) { + ncelltris = counts & 0xff; + ncorners++; + } + if (((colors >> 8) & 0xff) == color) { + ncelltris += (counts >> 8) & 0xff; + ncorners++; + } + if (((colors >> 16) & 0xff) == color) { + ncelltris += (counts >> 16) & 0xff; + ncorners++; + } + if (((colors >> 24) & 0xff) == color) { + ncelltris += (counts >> 24) & 0xff; + ncorners++; + } + simplification_ntris[cell] = ncelltris; + simplification_tris[cell] = ntris; + simplification_blocks[cell] = ncorners == 4; + ntris += ncelltris; + } + } + + // First figure out how many triangles we can eliminate. + int in_run = 0, start_run; + int neliminated_triangles = 0; + for (int row = 0; row < nrows - 1; row += 2) { + for (int col = 0; col < ncols; col++) { + int cell = ncols * row + col; + int a = simplification_blocks[cell]; + int b = simplification_blocks[cell + ncols]; + if (a && b) { + if (!in_run) { + in_run = 1; + start_run = col; + } + continue; + } + if (in_run) { + in_run = 0; + int run_width = col - start_run; + neliminated_triangles += run_width * 4 - 2; + } + } + if (in_run) { + in_run = 0; + int run_width = ncols - start_run; + neliminated_triangles += run_width * 4 - 2; + } + } + if (neliminated_triangles == 0) { + continue; + } + + // Build a new index array cell-by-cell. If any given cell is 'F' and + // its neighbor to the south is also 'F', then it's part of a run. + int nnewtris = mesh->ntriangles - neliminated_triangles; + PAR_MSQUARES_T* newtris = PAR_CALLOC(PAR_MSQUARES_T, nnewtris * 3); + PAR_MSQUARES_T* pnewtris = newtris; + in_run = 0; + PAR_MSQUARES_T* tris = mesh->triangles; + for (int row = 0; row < nrows - 1; row += 2) { + for (int col = 0; col < ncols; col++) { + int cell = ncols * row + col; + int south = cell + ncols; + int a = simplification_blocks[cell]; + int b = simplification_blocks[south]; + if (a && b) { + if (!in_run) { + in_run = 1; + start_run = col; + } + continue; + } + if (in_run) { + in_run = 0; + int nw_cell = ncols * row + start_run; + int ne_cell = ncols * row + col - 1; + int sw_cell = nw_cell + ncols; + int se_cell = ne_cell + ncols; + int nw_tri = simplification_tris[nw_cell]; + int ne_tri = simplification_tris[ne_cell]; + int sw_tri = simplification_tris[sw_cell]; + int se_tri = simplification_tris[se_cell]; + int nw_corner = nw_tri * 3 + 5; + int ne_corner = ne_tri * 3 + 2; + int sw_corner = sw_tri * 3 + 0; + int se_corner = se_tri * 3 + 1; + *pnewtris++ = tris[nw_corner]; + *pnewtris++ = tris[sw_corner]; + *pnewtris++ = tris[se_corner]; + *pnewtris++ = tris[se_corner]; + *pnewtris++ = tris[ne_corner]; + *pnewtris++ = tris[nw_corner]; + } + int ncelltris = simplification_ntris[cell]; + int celltri = simplification_tris[cell]; + for (int t = 0; t < ncelltris; t++, celltri++) { + *pnewtris++ = tris[celltri * 3]; + *pnewtris++ = tris[celltri * 3 + 1]; + *pnewtris++ = tris[celltri * 3 + 2]; + } + ncelltris = simplification_ntris[south]; + celltri = simplification_tris[south]; + for (int t = 0; t < ncelltris; t++, celltri++) { + *pnewtris++ = tris[celltri * 3]; + *pnewtris++ = tris[celltri * 3 + 1]; + *pnewtris++ = tris[celltri * 3 + 2]; + } + } + if (in_run) { + in_run = 0; + int nw_cell = ncols * row + start_run; + int ne_cell = ncols * row + ncols - 1; + int sw_cell = nw_cell + ncols; + int se_cell = ne_cell + ncols; + int nw_tri = simplification_tris[nw_cell]; + int ne_tri = simplification_tris[ne_cell]; + int sw_tri = simplification_tris[sw_cell]; + int se_tri = simplification_tris[se_cell]; + int nw_corner = nw_tri * 3 + 5; + int ne_corner = ne_tri * 3 + 2; + int sw_corner = sw_tri * 3 + 0; + int se_corner = se_tri * 3 + 1; + *pnewtris++ = tris[nw_corner]; + *pnewtris++ = tris[sw_corner]; + *pnewtris++ = tris[se_corner]; + *pnewtris++ = tris[se_corner]; + *pnewtris++ = tris[ne_corner]; + *pnewtris++ = tris[nw_corner]; + } + } + mesh->ntriangles -= neliminated_triangles; + free(mesh->triangles); + mesh->triangles = newtris; + } + + free(simplification_blocks); + free(simplification_ntris); + free(simplification_tris); + free(simplification_words); + + par_msquares__finalize(mlist); + for (int i = 0; i < mlist->nmeshes; i++) { + par_remove_unreferenced_verts(mlist->meshes[i]); + } + return mlist; +} + +void par_msquares_free_boundary(par_msquares_boundary* polygon) +{ + free(polygon->points); + free(polygon->chains); + free(polygon->lengths); + free(polygon); +} + +typedef struct par__hedge_s { + uint32_t key; + struct par__hvert_s* endvert; + struct par__hedge_s* opposite; + struct par__hedge_s* next; + struct par__hedge_s* prev; +} par__hedge; + +typedef struct par__hvert_s { + par__hedge* incoming; +} par__hvert; + +typedef struct { + par_msquares_mesh const* mesh; + par__hvert* verts; + par__hedge* edges; + par__hedge** sorted_edges; +} par__hemesh; + +static int par__hedge_cmp(const void *arg0, const void *arg1) +{ + par__hedge* he0 = *((par__hedge**) arg0); + par__hedge* he1 = *((par__hedge**) arg1); + if (he0->key < he1->key) return -1; + if (he0->key > he1->key) return 1; + return 0; +} + +static par__hedge* par__hedge_find(par__hemesh* hemesh, uint32_t key) +{ + par__hedge target = {0}; + target.key = key; + par__hedge* ptarget = ⌖ + int nedges = hemesh->mesh->ntriangles * 3; + par__hedge** result = (par__hedge**) bsearch(&ptarget, hemesh->sorted_edges, + nedges, sizeof(par__hedge*), par__hedge_cmp); + return result ? *result : 0; +} + +static uint32_t par__hedge_key(par__hvert* a, par__hvert* b, par__hvert* s) +{ + uint32_t ai = a - s; + uint32_t bi = b - s; + return (ai << 16) | bi; +} + +par_msquares_boundary* par_msquares_extract_boundary( + par_msquares_mesh const* mesh) +{ + par_msquares_boundary* result = PAR_CALLOC(par_msquares_boundary, 1); + par__hemesh hemesh = {0}; + hemesh.mesh = mesh; + int nedges = mesh->ntriangles * 3; + + // Populate all fields of verts and edges, except opposite. + hemesh.edges = PAR_CALLOC(par__hedge, nedges); + par__hvert* hverts = hemesh.verts = PAR_CALLOC(par__hvert, mesh->npoints); + par__hedge* edge = hemesh.edges; + PAR_MSQUARES_T const* tri = mesh->triangles; + for (int n = 0; n < mesh->ntriangles; n++, edge += 3, tri += 3) { + edge[0].endvert = hverts + tri[1]; + edge[1].endvert = hverts + tri[2]; + edge[2].endvert = hverts + tri[0]; + hverts[tri[1]].incoming = edge + 0; + hverts[tri[2]].incoming = edge + 1; + hverts[tri[0]].incoming = edge + 2; + edge[0].next = edge + 1; + edge[1].next = edge + 2; + edge[2].next = edge + 0; + edge[0].prev = edge + 2; + edge[1].prev = edge + 0; + edge[2].prev = edge + 1; + edge[0].key = par__hedge_key(edge[2].endvert, edge[0].endvert, hverts); + edge[1].key = par__hedge_key(edge[0].endvert, edge[1].endvert, hverts); + edge[2].key = par__hedge_key(edge[1].endvert, edge[2].endvert, hverts); + } + + // Sort the edges according to their key. + hemesh.sorted_edges = PAR_CALLOC(par__hedge*, mesh->ntriangles * 3); + for (int n = 0; n < nedges; n++) { + hemesh.sorted_edges[n] = hemesh.edges + n; + } + qsort(hemesh.sorted_edges, nedges, sizeof(par__hedge*), par__hedge_cmp); + + // Populate the "opposite" field in each edge. + for (int n = 0; n < nedges; n++) { + par__hedge* edge = hemesh.edges + n; + par__hedge* prev = edge->prev; + par__hvert* start = edge->endvert; + par__hvert* end = prev->endvert; + uint32_t key = par__hedge_key(start, end, hverts); + edge->opposite = par__hedge_find(&hemesh, key); + } + + // Re-use the sorted_edges array, filling it with boundary edges only. + // Also create a mapping table to consolidate all boundary verts. + int nborders = 0; + for (int n = 0; n < nedges; n++) { + par__hedge* edge = hemesh.edges + n; + if (!edge->opposite) { + hemesh.sorted_edges[nborders++] = edge; + } + } + + // Allocate for the worst case (all separate triangles). + // We'll adjust the lengths later. + result->nchains = nborders / 3; + result->npoints = nborders + result->nchains; + result->points = PAR_CALLOC(float, 2 * result->npoints); + result->chains = PAR_CALLOC(float*, result->nchains); + result->lengths = PAR_CALLOC(PAR_MSQUARES_T, result->nchains); + + // Iterate over each polyline. + edge = hemesh.sorted_edges[0]; + int pt = 0; + int nwritten = 0; + int nchains = 0; + while (1) { + float* points = result->points; + par__hedge* orig = edge; + PAR_MSQUARES_T index = edge->prev->endvert - hverts; + result->chains[nchains] = points + pt; + result->lengths[nchains]++; + points[pt++] = mesh->points[index * mesh->dim]; + points[pt++] = mesh->points[index * mesh->dim + 1]; + while (1) { + index = edge->endvert - hverts; + edge->key = 0; + nwritten++; + result->lengths[nchains]++; + points[pt++] = mesh->points[index * mesh->dim]; + points[pt++] = mesh->points[index * mesh->dim + 1]; + par__hedge* next = edge->next; + while (next != edge) { + if (!next->opposite) { + break; + } + next = next->opposite->next; + } + edge = next; + if (edge == orig) { + break; + } + } + nchains++; + if (nwritten >= nborders) { + break; + } + for (int i = 0; i < nborders; i++) { + edge = hemesh.sorted_edges[i]; + if (edge->key) { + break; + } + } + } + + result->npoints = pt / 2; + result->nchains = nchains; + free(hemesh.verts); + free(hemesh.edges); + free(hemesh.sorted_edges); + return result; +} + +#endif // PAR_MSQUARES_IMPLEMENTATION +#endif // PAR_MSQUARES_H + +// par_msquares is distributed under the MIT license: +// +// Copyright (c) 2019 Philip Rideout +// +// 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. diff --git a/source/engine/thirdparty/par/par_octasphere.h b/source/engine/thirdparty/par/par_octasphere.h new file mode 100644 index 0000000..6f26e4b --- /dev/null +++ b/source/engine/thirdparty/par/par_octasphere.h @@ -0,0 +1,577 @@ +// OCTASPHERE :: https://prideout.net/blog/octasphere +// Tiny malloc-free library that generates triangle meshes for spheres, rounded boxes, and capsules. +// +// This library proffers the following functions: +// +// - par_octasphere_get_counts +// - par_octasphere_populate +// +// Usage example: +// +// /* Specify a 100x100x20 rounded box. */ +// const par_octasphere_config cfg = { +// .corner_radius = 5, +// .width = 100, +// .height = 100, +// .depth = 20, +// .num_subdivisions = 3, +// }; +// +// /* Allocate memory for the mesh and opt-out of normals. */ +// uint32_t num_indices; +// uint32_t num_vertices; +// par_octasphere_get_counts(&cfg, &num_indices, &num_vertices); +// par_octasphere_mesh mesh = { +// .positions = malloc(sizeof(float) * 3 * num_vertices), +// .normals = NULL, +// .texcoords = malloc(sizeof(float) * 2 * num_vertices), +// .indices = malloc(sizeof(uint16_t) * num_indices), +// }; +// +// /* Generate vertex coordinates, UV's, and triangle indices. */ +// par_octasphere_populate(&cfg, &mesh); +// +// To generate a sphere: set width, height, and depth to 0 in your configuration. +// To generate a capsule shape: set only two of these dimensions to 0. +// +// Distributed under the MIT License, see bottom of file. + +#ifndef PAR_OCTASPHERE_H +#define PAR_OCTASPHERE_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define PAR_OCTASPHERE_MAX_SUBDIVISIONS 5 + +typedef enum { + PAR_OCTASPHERE_UV_LATLONG, +} par_octasphere_uv_mode; + +typedef enum { + PAR_OCTASPHERE_NORMALS_SMOOTH, +} par_octasphere_normals_mode; + +typedef struct { + float corner_radius; + float width; + float height; + float depth; + int num_subdivisions; + par_octasphere_uv_mode uv_mode; + par_octasphere_normals_mode normals_mode; +} par_octasphere_config; + +typedef struct { + float* positions; + float* normals; + float* texcoords; + uint16_t* indices; + uint32_t num_indices; + uint32_t num_vertices; +} par_octasphere_mesh; + +// Computes the maximum possible number of indices and vertices for the given octasphere config. +void par_octasphere_get_counts(const par_octasphere_config* config, uint32_t* num_indices, + uint32_t* num_vertices); + +// Populates a pre-allocated mesh structure with indices and vertices. +void par_octasphere_populate(const par_octasphere_config* config, par_octasphere_mesh* mesh); + +#ifdef __cplusplus +} +#endif + +// ----------------------------------------------------------------------------- +// END PUBLIC API +// ----------------------------------------------------------------------------- +#ifdef PAR_OCTASPHERE_IMPLEMENTATION + +#include +#include +#include // for memcpy + +#define PARO_PI (3.14159265359) +#define PARO_MIN(a, b) (a > b ? b : a) +#define PARO_MAX(a, b) (a > b ? a : b) +#define PARO_CLAMP(v, lo, hi) PARO_MAX(lo, PARO_MIN(hi, v)) +#define PARO_MAX_BOUNDARY_LENGTH ((1 << PAR_OCTASPHERE_MAX_SUBDIVISIONS) + 1) + +#ifndef PARO_CONSTANT_TOPOLOGY +#define PARO_CONSTANT_TOPOLOGY 1 +#endif + +static uint16_t* paro_write_quad(uint16_t* dst, uint16_t a, uint16_t b, uint16_t c, uint16_t d) { + *dst++ = a; + *dst++ = b; + *dst++ = c; + *dst++ = c; + *dst++ = d; + *dst++ = a; + return dst; +} + +static void paro_write_ui3(uint16_t* dst, int index, uint16_t a, uint16_t b, uint16_t c) { + dst[index * 3 + 0] = a; + dst[index * 3 + 1] = b; + dst[index * 3 + 2] = c; +} + +static float* paro_write_f3(float* dst, const float src[3]) { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + return dst + 3; +} + +static void paro_copy(float dst[3], const float src[3]) { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; +} + +static float paro_dot(const float a[3], const float b[3]) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; +} + +static void paro_add(float result[3], float const a[3], float const b[3]) { + result[0] = a[0] + b[0]; + result[1] = a[1] + b[1]; + result[2] = a[2] + b[2]; +} + +static void paro_normalize(float v[3]) { + float lsqr = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); + if (lsqr > 0) { + v[0] /= lsqr; + v[1] /= lsqr; + v[2] /= lsqr; + } +} + +static void paro_cross(float result[3], float const a[3], float const b[3]) { + float x = (a[1] * b[2]) - (a[2] * b[1]); + float y = (a[2] * b[0]) - (a[0] * b[2]); + float z = (a[0] * b[1]) - (a[1] * b[0]); + result[0] = x; + result[1] = y; + result[2] = z; +} + +static void paro_scale(float dst[3], float v) { + dst[0] *= v; + dst[1] *= v; + dst[2] *= v; +} + +static void paro_scaled(float dst[3], const float src[3], float v) { + dst[0] = src[0] * v; + dst[1] = src[1] * v; + dst[2] = src[2] * v; +} + +static void paro_quat_from_rotation(float quat[4], const float axis[3], float radians) { + paro_copy(quat, axis); + paro_normalize(quat); + paro_scale(quat, sin(0.5 * radians)); + quat[3] = cos(0.5 * radians); +} + +static void paro_quat_from_eulers(float quat[4], const float eulers[3]) { + const float roll = eulers[0]; + const float pitch = eulers[1]; + const float yaw = eulers[2]; + const float halfRoll = roll * 0.5; + const float sR = sin(halfRoll); + const float cR = cos(halfRoll); + const float halfPitch = pitch * 0.5; + const float sP = sin(halfPitch); + const float cP = cos(halfPitch); + const float halfYaw = yaw * 0.5; + const float sY = sin(halfYaw); + const float cY = cos(halfYaw); + quat[0] = (sR * cP * cY) + (cR * sP * sY); + quat[1] = (cR * sP * cY) - (sR * cP * sY); + quat[2] = (cR * cP * sY) + (sR * sP * cY); + quat[3] = (cR * cP * cY) - (sR * sP * sY); +} + +static void paro_quat_rotate_vector(float dst[3], const float quat[4], const float src[3]) { + float t[3]; + paro_cross(t, quat, src); + paro_scale(t, 2.0); + + float p[3]; + paro_cross(p, quat, t); + + paro_scaled(dst, t, quat[3]); + paro_add(dst, dst, src); + paro_add(dst, dst, p); +} + +static float* paro_write_geodesic(float* dst, const float point_a[3], const float point_b[3], + int num_segments) { + dst = paro_write_f3(dst, point_a); + if (num_segments == 0) { + return dst; + } + const float angle_between_endpoints = acos(paro_dot(point_a, point_b)); + const float dtheta = angle_between_endpoints / num_segments; + float rotation_axis[3], quat[4]; + paro_cross(rotation_axis, point_a, point_b); + paro_normalize(rotation_axis); + for (int point_index = 1; point_index < num_segments; point_index++, dst += 3) { + paro_quat_from_rotation(quat, rotation_axis, dtheta * point_index); + paro_quat_rotate_vector(dst, quat, point_a); + } + return paro_write_f3(dst, point_b); +} + +void paro_add_quads(const par_octasphere_config* config, par_octasphere_mesh* mesh) { + const int ndivisions = PARO_CLAMP(config->num_subdivisions, 0, PAR_OCTASPHERE_MAX_SUBDIVISIONS); + const int n = (1 << ndivisions) + 1; + const int verts_per_patch = n * (n + 1) / 2; + const float r2 = config->corner_radius * 2; + const float w = PARO_MAX(config->width, r2); + const float h = PARO_MAX(config->height, r2); + const float d = PARO_MAX(config->depth, r2); + const float tx = (w - r2) / 2, ty = (h - r2) / 2, tz = (d - r2) / 2; + + // Find the vertex indices along each of the patch's 3 edges. + uint16_t boundaries[3][PARO_MAX_BOUNDARY_LENGTH]; + int a = 0, b = 0, c = 0, row; + uint16_t j0 = 0; + for (int col_index = 0; col_index < n - 1; col_index++) { + int col_height = n - 1 - col_index; + uint16_t j1 = j0 + 1; + boundaries[0][a++] = j0; + for (row = 0; row < col_height - 1; row++) { + if (col_height == n - 1) { + boundaries[2][c++] = j0 + row; + } + } + if (col_height == n - 1) { + boundaries[2][c++] = j0 + row; + boundaries[2][c++] = j1 + row; + } + boundaries[1][b++] = j1 + row; + j0 += col_height + 1; + } + boundaries[0][a] = boundaries[1][b] = j0 + row; + + // If there is no rounding (i.e. this is a plain box), then clobber the existing indices. + if (!PARO_CONSTANT_TOPOLOGY && config->corner_radius == 0) { + mesh->num_indices = 0; + } + uint16_t* write_ptr = mesh->indices + mesh->num_indices; + const uint16_t* begin_ptr = write_ptr; + + if (PARO_CONSTANT_TOPOLOGY || config->corner_radius > 0) { + // Go around the top half. + for (int patch = 0; patch < 4; patch++) { + if (!PARO_CONSTANT_TOPOLOGY && (patch % 2) == 0 && tz == 0) continue; + if (!PARO_CONSTANT_TOPOLOGY && (patch % 2) == 1 && tx == 0) continue; + const int next_patch = (patch + 1) % 4; + const uint16_t* boundary_a = boundaries[1]; + const uint16_t* boundary_b = boundaries[0]; + const uint16_t offset_a = verts_per_patch * patch; + const uint16_t offset_b = verts_per_patch * next_patch; + for (int i = 0; i < n - 1; i++) { + const uint16_t a = boundary_a[i] + offset_a; + const uint16_t b = boundary_b[i] + offset_b; + const uint16_t c = boundary_a[i + 1] + offset_a; + const uint16_t d = boundary_b[i + 1] + offset_b; + write_ptr = paro_write_quad(write_ptr, a, b, d, c); + } + } + // Go around the bottom half. + for (int patch = 4; patch < 8; patch++) { + if (!PARO_CONSTANT_TOPOLOGY && (patch % 2) == 0 && tx == 0) continue; + if (!PARO_CONSTANT_TOPOLOGY && (patch % 2) == 1 && tz == 0) continue; + const int next_patch = 4 + (patch + 1) % 4; + const uint16_t* boundary_a = boundaries[0]; + const uint16_t* boundary_b = boundaries[2]; + const uint16_t offset_a = verts_per_patch * patch; + const uint16_t offset_b = verts_per_patch * next_patch; + for (int i = 0; i < n - 1; i++) { + const uint16_t a = boundary_a[i] + offset_a; + const uint16_t b = boundary_b[i] + offset_b; + const uint16_t c = boundary_a[i + 1] + offset_a; + const uint16_t d = boundary_b[i + 1] + offset_b; + write_ptr = paro_write_quad(write_ptr, d, b, a, c); + } + } + // Connect the top and bottom halves. + if (PARO_CONSTANT_TOPOLOGY || ty > 0) { + for (int patch = 0; patch < 4; patch++) { + const int next_patch = 4 + (4 - patch) % 4; + const uint16_t* boundary_a = boundaries[2]; + const uint16_t* boundary_b = boundaries[1]; + const uint16_t offset_a = verts_per_patch * patch; + const uint16_t offset_b = verts_per_patch * next_patch; + for (int i = 0; i < n - 1; i++) { + const uint16_t a = boundary_a[i] + offset_a; + const uint16_t b = boundary_b[n - 1 - i] + offset_b; + const uint16_t c = boundary_a[i + 1] + offset_a; + const uint16_t d = boundary_b[n - 1 - i - 1] + offset_b; + write_ptr = paro_write_quad(write_ptr, a, b, d, c); + } + } + } + } + + // Fill in the top and bottom holes. + if (PARO_CONSTANT_TOPOLOGY || tx > 0 || ty > 0) { + uint16_t a, b, c, d; + a = boundaries[0][n - 1]; + b = a + verts_per_patch; + c = b + verts_per_patch; + d = c + verts_per_patch; + write_ptr = paro_write_quad(write_ptr, a, b, c, d); + a = boundaries[2][0] + verts_per_patch * 4; + b = a + verts_per_patch; + c = b + verts_per_patch; + d = c + verts_per_patch; + write_ptr = paro_write_quad(write_ptr, a, b, c, d); + } + + // Fill in the side holes. + if (PARO_CONSTANT_TOPOLOGY || ty > 0) { + const int sides[4][2] = {{7, 0}, {1, 2}, {3, 4}, {5, 6}}; + for (int side = 0; side < 4; side++) { + int patch_index, patch, next_patch; + uint16_t *boundary_a, *boundary_b; + uint16_t offset_a, offset_b; + + uint16_t a, b; + patch_index = sides[side][0]; + patch = patch_index / 2; + next_patch = 4 + (4 - patch) % 4; + offset_a = verts_per_patch * patch; + offset_b = verts_per_patch * next_patch; + boundary_a = boundaries[2]; + boundary_b = boundaries[1]; + if (patch_index % 2 == 0) { + a = boundary_a[0] + offset_a; + b = boundary_b[n - 1] + offset_b; + } else { + a = boundary_a[n - 1] + offset_a; + b = boundary_b[0] + offset_b; + } + + uint16_t c, d; + patch_index = sides[side][1]; + patch = patch_index / 2; + next_patch = 4 + (4 - patch) % 4; + offset_a = verts_per_patch * patch; + offset_b = verts_per_patch * next_patch; + boundary_a = boundaries[2]; + boundary_b = boundaries[1]; + if (patch_index % 2 == 0) { + c = boundary_a[0] + offset_a; + d = boundary_b[n - 1] + offset_b; + } else { + c = boundary_a[n - 1] + offset_a; + d = boundary_b[0] + offset_b; + } + write_ptr = paro_write_quad(write_ptr, a, b, d, c); + } + } + + mesh->num_indices += write_ptr - begin_ptr; + +#ifndef NDEBUG + uint32_t expected_indices; + uint32_t expected_vertices; + par_octasphere_get_counts(config, &expected_indices, &expected_vertices); + assert(mesh->num_indices <= expected_indices); +#endif +} + +void par_octasphere_get_counts(const par_octasphere_config* config, uint32_t* num_indices, + uint32_t* num_vertices) { + const int ndivisions = PARO_CLAMP(config->num_subdivisions, 0, PAR_OCTASPHERE_MAX_SUBDIVISIONS); + const int n = (1 << ndivisions) + 1; + const int verts_per_patch = n * (n + 1) / 2; + const float r2 = config->corner_radius * 2; + const float w = PARO_MAX(config->width, r2); + const float h = PARO_MAX(config->height, r2); + const float d = PARO_MAX(config->depth, r2); + const float tx = (w - r2) / 2, ty = (h - r2) / 2, tz = (d - r2) / 2; + const int triangles_per_patch = (n - 2) * (n - 1) + n - 1; + + // If this is a sphere, return early. + if (tx == 0 && ty == 0 && tz == 0) { + *num_indices = triangles_per_patch * 8 * 3; + *num_vertices = verts_per_patch * 8; + return; + } + + // This is a cuboid, so account for the maximum number of possible quads. + // - 4*(n-1) quads between the 4 top patches. + // - 4*(n-1) quads between the 4 bottom patches. + // - 4*(n-1) quads between the top and bottom patches. + // - 6 quads to fill "holes" in each cuboid face. + const int num_connection_quads = (4 + 4 + 4) * (n - 1) + 6; + + *num_indices = (triangles_per_patch * 8 + num_connection_quads * 2) * 3; + *num_vertices = verts_per_patch * 8; +} + +void par_octasphere_populate(const par_octasphere_config* config, par_octasphere_mesh* mesh) { + const int ndivisions = PARO_CLAMP(config->num_subdivisions, 0, PAR_OCTASPHERE_MAX_SUBDIVISIONS); + const int n = (1 << ndivisions) + 1; + const int verts_per_patch = n * (n + 1) / 2; + const float r2 = config->corner_radius * 2; + const float w = PARO_MAX(config->width, r2); + const float h = PARO_MAX(config->height, r2); + const float d = PARO_MAX(config->depth, r2); + const float tx = (w - r2) / 2, ty = (h - r2) / 2, tz = (d - r2) / 2; + const int triangles_per_patch = (n - 2) * (n - 1) + n - 1; + const int total_vertices = verts_per_patch * 8; + + // START TESSELLATION OF SINGLE PATCH (one-eighth of the octasphere) + float* write_ptr = mesh->positions; + for (int i = 0; i < n; i++) { + const float theta = PARO_PI * 0.5 * i / (n - 1); + const float point_a[] = {0, sinf(theta), cosf(theta)}; + const float point_b[] = {cosf(theta), sinf(theta), 0}; + const int num_segments = n - 1 - i; + write_ptr = paro_write_geodesic(write_ptr, point_a, point_b, num_segments); + } + int f = 0, j0 = 0; + uint16_t* faces = mesh->indices; + for (int col_index = 0; col_index < n - 1; col_index++) { + const int col_height = n - 1 - col_index; + const int j1 = j0 + 1; + const int j2 = j0 + col_height + 1; + const int j3 = j0 + col_height + 2; + for (int row = 0; row < col_height - 1; row++) { + paro_write_ui3(faces, f++, j0 + row, j1 + row, j2 + row); + paro_write_ui3(faces, f++, j2 + row, j1 + row, j3 + row); + } + const int row = col_height - 1; + paro_write_ui3(faces, f++, j0 + row, j1 + row, j2 + row); + j0 = j2; + } + // END TESSELLATION OF SINGLE PATCH + + // START 8-WAY CLONE OF PATCH + // clang-format off + float euler_angles[8][3] = { + {0, 0, 0}, {0, 1, 0}, {0, 2, 0}, {0, 3, 0}, + {1, 0, 0}, {1, 0, 1}, {1, 0, 2}, {1, 0, 3}, + }; + // clang-format on + for (int octant = 1; octant < 8; octant++) { + paro_scale(euler_angles[octant], PARO_PI * 0.5); + float quat[4]; + paro_quat_from_eulers(quat, euler_angles[octant]); + float* dst = mesh->positions + octant * verts_per_patch * 3; + const float* src = mesh->positions; + for (int vindex = 0; vindex < verts_per_patch; vindex++, dst += 3, src += 3) { + paro_quat_rotate_vector(dst, quat, src); + } + } + for (int octant = 1; octant < 8; octant++) { + const int indices_per_patch = triangles_per_patch * 3; + uint16_t* dst = mesh->indices + octant * indices_per_patch; + const uint16_t* src = mesh->indices; + const uint16_t offset = verts_per_patch * octant; + for (int iindex = 0; iindex < indices_per_patch; ++iindex) { + dst[iindex] = src[iindex] + offset; + } + } + // END 8-WAY CLONE OF PATCH + + if (mesh->texcoords && config->uv_mode == PAR_OCTASPHERE_UV_LATLONG) { + for (int i = 0; i < total_vertices; i++) { + const int octant = i / verts_per_patch; + const int relative_index = i % verts_per_patch; + float* uv = mesh->texcoords + i * 2; + const float* xyz = mesh->positions + i * 3; + const float x = xyz[0], y = xyz[1], z = xyz[2]; + const float phi = -atan2(z, x); + const float theta = acos(y); + uv[0] = 0.5 * (phi / PARO_PI + 1.0); + uv[1] = theta / PARO_PI; + // Special case for the north pole. + if (octant < 4 && relative_index == verts_per_patch - 1) { + uv[0] = fmod(0.375 + 0.25 * octant, 1.0); + uv[1] = 0; + } + // Special case for the south pole. + if (octant >= 4 && relative_index == 0) { + uv[0] = 0.375 - 0.25 * (octant - 4); + uv[0] = uv[0] + uv[0] < 0 ? 1.0 : 0.0; + uv[1] = 1.0; + } + // Adjust the prime meridian for proper wrapping. + if ((octant == 2 || octant == 6) && uv[0] < 0.5) { + uv[0] += 1.0; + } + } + } + + if (mesh->normals && config->normals_mode == PAR_OCTASPHERE_NORMALS_SMOOTH) { + memcpy(mesh->normals, mesh->positions, sizeof(float) * 3 * total_vertices); + } + + if (config->corner_radius != 1.0) { + for (int i = 0; i < total_vertices; i++) { + float* xyz = mesh->positions + i * 3; + xyz[0] *= config->corner_radius; + xyz[1] *= config->corner_radius; + xyz[2] *= config->corner_radius; + } + } + + mesh->num_indices = triangles_per_patch * 8 * 3; + mesh->num_vertices = total_vertices; + + if (tx == 0 && ty == 0 && tz == 0) { + return; + } + + for (int i = 0; i < total_vertices; i++) { + float* xyz = mesh->positions + i * 3; + const int octant = i / verts_per_patch; + const float sx = (octant < 2 || octant == 4 || octant == 7) ? +1 : -1; + const float sy = octant < 4 ? +1 : -1; + const float sz = (octant == 0 || octant == 3 || octant == 4 || octant == 5) ? +1 : -1; + xyz[0] += tx * sx; + xyz[1] += ty * sy; + xyz[2] += tz * sz; + } + + paro_add_quads(config, mesh); +} + +#endif // PAR_OCTASPHERE_IMPLEMENTATION +#endif // PAR_OCTASPHERE_H + +// par_octasphere is distributed under the MIT license: +// +// Copyright (c) 2019 Philip Rideout +// +// 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. diff --git a/source/engine/thirdparty/par/par_shapes.h b/source/engine/thirdparty/par/par_shapes.h new file mode 100644 index 0000000..beae160 --- /dev/null +++ b/source/engine/thirdparty/par/par_shapes.h @@ -0,0 +1,2153 @@ +// SHAPES :: https://github.com/prideout/par +// Simple C library for creation and manipulation of triangle meshes. +// +// The API is divided into three sections: +// +// - Generators. Create parametric surfaces, platonic solids, etc. +// - Queries. Ask a mesh for its axis-aligned bounding box, etc. +// - Transforms. Rotate a mesh, merge it with another, add normals, etc. +// +// In addition to the comment block above each function declaration, the API +// has informal documentation here: +// +// https://prideout.net/shapes +// +// For our purposes, a "mesh" is a list of points and a list of triangles; the +// former is a flattened list of three-tuples (32-bit floats) and the latter is +// also a flattened list of three-tuples (16-bit uints). Triangles are always +// oriented such that their front face winds counter-clockwise. +// +// Optionally, meshes can contain 3D normals (one per vertex), and 2D texture +// coordinates (one per vertex). That's it! If you need something fancier, +// look elsewhere. +// +// Distributed under the MIT License, see bottom of file. + +#ifndef PAR_SHAPES_H +#define PAR_SHAPES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#if !defined(_MSC_VER) +# include +#else // MSVC +# if _MSC_VER >= 1800 +# include +# else // stdbool.h missing prior to MSVC++ 12.0 (VS2013) +# define bool int +# define true 1 +# define false 0 +# endif +#endif + +#ifndef PAR_SHAPES_T +#define PAR_SHAPES_T uint16_t +#endif + +typedef struct par_shapes_mesh_s { + float* points; // Flat list of 3-tuples (X Y Z X Y Z...) + int npoints; // Number of points + PAR_SHAPES_T* triangles; // Flat list of 3-tuples (I J K I J K...) + int ntriangles; // Number of triangles + float* normals; // Optional list of 3-tuples (X Y Z X Y Z...) + float* tcoords; // Optional list of 2-tuples (U V U V U V...) +} par_shapes_mesh; + +void par_shapes_free_mesh(par_shapes_mesh*); + +// Generators ------------------------------------------------------------------ + +// Instance a cylinder that sits on the Z=0 plane using the given tessellation +// levels across the UV domain. Think of "slices" like a number of pizza +// slices, and "stacks" like a number of stacked rings. Height and radius are +// both 1.0, but they can easily be changed with par_shapes_scale. +par_shapes_mesh* par_shapes_create_cylinder(int slices, int stacks); + +// Cone is similar to cylinder but the radius diminishes to zero as Z increases. +// Again, height and radius are 1.0, but can be changed with par_shapes_scale. +par_shapes_mesh* par_shapes_create_cone(int slices, int stacks); + +// Create a disk of radius 1.0 with texture coordinates and normals by squashing +// a cone flat on the Z=0 plane. +par_shapes_mesh* par_shapes_create_parametric_disk(int slices, int stacks); + +// Create a donut that sits on the Z=0 plane with the specified inner radius. +// The outer radius can be controlled with par_shapes_scale. +par_shapes_mesh* par_shapes_create_torus(int slices, int stacks, float radius); + +// Create a sphere with texture coordinates and small triangles near the poles. +par_shapes_mesh* par_shapes_create_parametric_sphere(int slices, int stacks); + +// Approximate a sphere with a subdivided icosahedron, which produces a nice +// distribution of triangles, but no texture coordinates. Each subdivision +// level scales the number of triangles by four, so use a very low number. +par_shapes_mesh* par_shapes_create_subdivided_sphere(int nsubdivisions); + +// More parametric surfaces. +par_shapes_mesh* par_shapes_create_klein_bottle(int slices, int stacks); +par_shapes_mesh* par_shapes_create_trefoil_knot(int slices, int stacks, + float radius); +par_shapes_mesh* par_shapes_create_hemisphere(int slices, int stacks); +par_shapes_mesh* par_shapes_create_plane(int slices, int stacks); + +// Create a parametric surface from a callback function that consumes a 2D +// point in [0,1] and produces a 3D point. +typedef void (*par_shapes_fn)(float const*, float*, void*); +par_shapes_mesh* par_shapes_create_parametric(par_shapes_fn, int slices, + int stacks, void* userdata); + +// Generate points for a 20-sided polyhedron that fits in the unit sphere. +// Texture coordinates and normals are not generated. +par_shapes_mesh* par_shapes_create_icosahedron(); + +// Generate points for a 12-sided polyhedron that fits in the unit sphere. +// Again, texture coordinates and normals are not generated. +par_shapes_mesh* par_shapes_create_dodecahedron(); + +// More platonic solids. +par_shapes_mesh* par_shapes_create_octahedron(); +par_shapes_mesh* par_shapes_create_tetrahedron(); +par_shapes_mesh* par_shapes_create_cube(); + +// Generate an orientable disk shape in 3-space. Does not include normals or +// texture coordinates. +par_shapes_mesh* par_shapes_create_disk(float radius, int slices, + float const* center, float const* normal); + +// Create an empty shape. Useful for building scenes with merge_and_free. +par_shapes_mesh* par_shapes_create_empty(); + +// Generate a rock shape that sits on the Y=0 plane, and sinks into it a bit. +// This includes smooth normals but no texture coordinates. Each subdivision +// level scales the number of triangles by four, so use a very low number. +par_shapes_mesh* par_shapes_create_rock(int seed, int nsubdivisions); + +// Create trees or vegetation by executing a recursive turtle graphics program. +// The program is a list of command-argument pairs. See the unit test for +// an example. Texture coordinates and normals are not generated. +par_shapes_mesh* par_shapes_create_lsystem(char const* program, int slices, + int maxdepth); + +// Queries --------------------------------------------------------------------- + +// Dump out a text file conforming to the venerable OBJ format. +void par_shapes_export(par_shapes_mesh const*, char const* objfile); + +// Take a pointer to 6 floats and set them to min xyz, max xyz. +void par_shapes_compute_aabb(par_shapes_mesh const* mesh, float* aabb); + +// Make a deep copy of a mesh. To make a brand new copy, pass null to "target". +// To avoid memory churn, pass an existing mesh to "target". +par_shapes_mesh* par_shapes_clone(par_shapes_mesh const* mesh, + par_shapes_mesh* target); + +// Transformations ------------------------------------------------------------- + +void par_shapes_merge(par_shapes_mesh* dst, par_shapes_mesh const* src); +void par_shapes_translate(par_shapes_mesh*, float x, float y, float z); +void par_shapes_rotate(par_shapes_mesh*, float radians, float const* axis); +void par_shapes_scale(par_shapes_mesh*, float x, float y, float z); +void par_shapes_merge_and_free(par_shapes_mesh* dst, par_shapes_mesh* src); + +// Reverse the winding of a run of faces. Useful when drawing the inside of +// a Cornell Box. Pass 0 for nfaces to reverse every face in the mesh. +void par_shapes_invert(par_shapes_mesh*, int startface, int nfaces); + +// Remove all triangles whose area is less than minarea. +void par_shapes_remove_degenerate(par_shapes_mesh*, float minarea); + +// Dereference the entire index buffer and replace the point list. +// This creates an inefficient structure, but is useful for drawing facets. +// If create_indices is true, a trivial "0 1 2 3..." index buffer is generated. +void par_shapes_unweld(par_shapes_mesh* mesh, bool create_indices); + +// Merge colocated verts, build a new index buffer, and return the +// optimized mesh. Epsilon is the maximum distance to consider when +// welding vertices. The mapping argument can be null, or a pointer to +// npoints integers, which gets filled with the mapping from old vertex +// indices to new indices. +par_shapes_mesh* par_shapes_weld(par_shapes_mesh const*, float epsilon, + PAR_SHAPES_T* mapping); + +// Compute smooth normals by averaging adjacent facet normals. +void par_shapes_compute_normals(par_shapes_mesh* m); + +// Global Config --------------------------------------------------------------- + +void par_shapes_set_epsilon_welded_normals(float epsilon); +void par_shapes_set_epsilon_degenerate_sphere(float epsilon); + +// Advanced -------------------------------------------------------------------- + +void par_shapes__compute_welded_normals(par_shapes_mesh* m); +void par_shapes__connect(par_shapes_mesh* scene, par_shapes_mesh* cylinder, + int slices); + +#ifndef PAR_PI +#define PAR_PI (3.14159265359) +#define PAR_MIN(a, b) (a > b ? b : a) +#define PAR_MAX(a, b) (a > b ? a : b) +#define PAR_CLAMP(v, lo, hi) PAR_MAX(lo, PAR_MIN(hi, v)) +#define PAR_SWAP(T, A, B) { T tmp = B; B = A; A = tmp; } +#define PAR_SQR(a) ((a) * (a)) +#endif + +#ifndef PAR_MALLOC +#define PAR_MALLOC(T, N) ((T*) malloc(N * sizeof(T))) +#define PAR_CALLOC(T, N) ((T*) calloc(N * sizeof(T), 1)) +#define PAR_REALLOC(T, BUF, N) ((T*) realloc(BUF, sizeof(T) * (N))) +#define PAR_FREE(BUF) free(BUF) +#endif + +#ifdef __cplusplus +} +#endif + +// ----------------------------------------------------------------------------- +// END PUBLIC API +// ----------------------------------------------------------------------------- + +#ifdef PAR_SHAPES_IMPLEMENTATION +#include +#include +#include +#include +#include +#include +#include + +static float par_shapes__epsilon_welded_normals = 0.001; +static float par_shapes__epsilon_degenerate_sphere = 0.0001; + +static void par_shapes__sphere(float const* uv, float* xyz, void*); +static void par_shapes__hemisphere(float const* uv, float* xyz, void*); +static void par_shapes__plane(float const* uv, float* xyz, void*); +static void par_shapes__klein(float const* uv, float* xyz, void*); +static void par_shapes__cylinder(float const* uv, float* xyz, void*); +static void par_shapes__cone(float const* uv, float* xyz, void*); +static void par_shapes__torus(float const* uv, float* xyz, void*); +static void par_shapes__trefoil(float const* uv, float* xyz, void*); + +struct osn_context; +static int par__simplex_noise(int64_t seed, struct osn_context** ctx); +static void par__simplex_noise_free(struct osn_context* ctx); +static double par__simplex_noise2(struct osn_context* ctx, double x, double y); + +static void par_shapes__copy3(float* result, float const* a) +{ + result[0] = a[0]; + result[1] = a[1]; + result[2] = a[2]; +} + +static float par_shapes__dot3(float const* a, float const* b) +{ + return b[0] * a[0] + b[1] * a[1] + b[2] * a[2]; +} + +static void par_shapes__transform3(float* p, float const* x, float const* y, + float const* z) +{ + float px = par_shapes__dot3(p, x); + float py = par_shapes__dot3(p, y); + float pz = par_shapes__dot3(p, z); + p[0] = px; + p[1] = py; + p[2] = pz; +} + +static void par_shapes__cross3(float* result, float const* a, float const* b) +{ + float x = (a[1] * b[2]) - (a[2] * b[1]); + float y = (a[2] * b[0]) - (a[0] * b[2]); + float z = (a[0] * b[1]) - (a[1] * b[0]); + result[0] = x; + result[1] = y; + result[2] = z; +} + +static void par_shapes__mix3(float* d, float const* a, float const* b, float t) +{ + float x = b[0] * t + a[0] * (1 - t); + float y = b[1] * t + a[1] * (1 - t); + float z = b[2] * t + a[2] * (1 - t); + d[0] = x; + d[1] = y; + d[2] = z; +} + +static void par_shapes__scale3(float* result, float a) +{ + result[0] *= a; + result[1] *= a; + result[2] *= a; +} + +static void par_shapes__normalize3(float* v) +{ + float lsqr = sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); + if (lsqr > 0) { + par_shapes__scale3(v, 1.0f / lsqr); + } +} + +static void par_shapes__subtract3(float* result, float const* a) +{ + result[0] -= a[0]; + result[1] -= a[1]; + result[2] -= a[2]; +} + +static void par_shapes__add3(float* result, float const* a) +{ + result[0] += a[0]; + result[1] += a[1]; + result[2] += a[2]; +} + +static float par_shapes__sqrdist3(float const* a, float const* b) +{ + float dx = a[0] - b[0]; + float dy = a[1] - b[1]; + float dz = a[2] - b[2]; + return dx * dx + dy * dy + dz * dz; +} + +void par_shapes__compute_welded_normals(par_shapes_mesh* m) +{ + const float epsilon = par_shapes__epsilon_welded_normals; + m->normals = PAR_MALLOC(float, m->npoints * 3); + PAR_SHAPES_T* weldmap = PAR_MALLOC(PAR_SHAPES_T, m->npoints); + par_shapes_mesh* welded = par_shapes_weld(m, epsilon, weldmap); + par_shapes_compute_normals(welded); + float* pdst = m->normals; + for (int i = 0; i < m->npoints; i++, pdst += 3) { + int d = weldmap[i]; + float const* pnormal = welded->normals + d * 3; + pdst[0] = pnormal[0]; + pdst[1] = pnormal[1]; + pdst[2] = pnormal[2]; + } + PAR_FREE(weldmap); + par_shapes_free_mesh(welded); +} + +par_shapes_mesh* par_shapes_create_cylinder(int slices, int stacks) +{ + if (slices < 3 || stacks < 1) { + return 0; + } + return par_shapes_create_parametric(par_shapes__cylinder, slices, + stacks, 0); +} + +par_shapes_mesh* par_shapes_create_cone(int slices, int stacks) +{ + if (slices < 3 || stacks < 1) { + return 0; + } + return par_shapes_create_parametric(par_shapes__cone, slices, + stacks, 0); +} + +par_shapes_mesh* par_shapes_create_parametric_disk(int slices, int stacks) +{ + par_shapes_mesh* m = par_shapes_create_cone(slices, stacks); + if (m) { + par_shapes_scale(m, 1.0f, 1.0f, 0.0f); + } + return m; +} + +par_shapes_mesh* par_shapes_create_parametric_sphere(int slices, int stacks) +{ + if (slices < 3 || stacks < 3) { + return 0; + } + par_shapes_mesh* m = par_shapes_create_parametric(par_shapes__sphere, + slices, stacks, 0); + par_shapes_remove_degenerate(m, par_shapes__epsilon_degenerate_sphere); + return m; +} + +par_shapes_mesh* par_shapes_create_hemisphere(int slices, int stacks) +{ + if (slices < 3 || stacks < 3) { + return 0; + } + par_shapes_mesh* m = par_shapes_create_parametric(par_shapes__hemisphere, + slices, stacks, 0); + par_shapes_remove_degenerate(m, par_shapes__epsilon_degenerate_sphere); + return m; +} + +par_shapes_mesh* par_shapes_create_torus(int slices, int stacks, float radius) +{ + if (slices < 3 || stacks < 3) { + return 0; + } + assert(radius <= 1.0 && "Use smaller radius to avoid self-intersection."); + assert(radius >= 0.1 && "Use larger radius to avoid self-intersection."); + void* userdata = (void*) &radius; + return par_shapes_create_parametric(par_shapes__torus, slices, + stacks, userdata); +} + +par_shapes_mesh* par_shapes_create_klein_bottle(int slices, int stacks) +{ + if (slices < 3 || stacks < 3) { + return 0; + } + par_shapes_mesh* mesh = par_shapes_create_parametric( + par_shapes__klein, slices, stacks, 0); + int face = 0; + for (int stack = 0; stack < stacks; stack++) { + for (int slice = 0; slice < slices; slice++, face += 2) { + if (stack < 27 * stacks / 32) { + par_shapes_invert(mesh, face, 2); + } + } + } + par_shapes__compute_welded_normals(mesh); + return mesh; +} + +par_shapes_mesh* par_shapes_create_trefoil_knot(int slices, int stacks, + float radius) +{ + if (slices < 3 || stacks < 3) { + return 0; + } + assert(radius <= 3.0 && "Use smaller radius to avoid self-intersection."); + assert(radius >= 0.5 && "Use larger radius to avoid self-intersection."); + void* userdata = (void*) &radius; + return par_shapes_create_parametric(par_shapes__trefoil, slices, + stacks, userdata); +} + +par_shapes_mesh* par_shapes_create_plane(int slices, int stacks) +{ + if (slices < 1 || stacks < 1) { + return 0; + } + return par_shapes_create_parametric(par_shapes__plane, slices, + stacks, 0); +} + +par_shapes_mesh* par_shapes_create_parametric(par_shapes_fn fn, + int slices, int stacks, void* userdata) +{ + par_shapes_mesh* mesh = PAR_CALLOC(par_shapes_mesh, 1); + + // Generate verts. + mesh->npoints = (slices + 1) * (stacks + 1); + mesh->points = PAR_CALLOC(float, 3 * mesh->npoints); + float uv[2]; + float xyz[3]; + float* points = mesh->points; + for (int stack = 0; stack < stacks + 1; stack++) { + uv[0] = (float) stack / stacks; + for (int slice = 0; slice < slices + 1; slice++) { + uv[1] = (float) slice / slices; + fn(uv, xyz, userdata); + *points++ = xyz[0]; + *points++ = xyz[1]; + *points++ = xyz[2]; + } + } + + // Generate texture coordinates. + mesh->tcoords = PAR_CALLOC(float, 2 * mesh->npoints); + float* uvs = mesh->tcoords; + for (int stack = 0; stack < stacks + 1; stack++) { + uv[0] = (float) stack / stacks; + for (int slice = 0; slice < slices + 1; slice++) { + uv[1] = (float) slice / slices; + *uvs++ = uv[0]; + *uvs++ = uv[1]; + } + } + + // Generate faces. + mesh->ntriangles = 2 * slices * stacks; + mesh->triangles = PAR_CALLOC(PAR_SHAPES_T, 3 * mesh->ntriangles); + int v = 0; + PAR_SHAPES_T* face = mesh->triangles; + for (int stack = 0; stack < stacks; stack++) { + for (int slice = 0; slice < slices; slice++) { + int next = slice + 1; + *face++ = v + slice + slices + 1; + *face++ = v + next; + *face++ = v + slice; + *face++ = v + slice + slices + 1; + *face++ = v + next + slices + 1; + *face++ = v + next; + } + v += slices + 1; + } + + par_shapes__compute_welded_normals(mesh); + return mesh; +} + +void par_shapes_free_mesh(par_shapes_mesh* mesh) +{ + PAR_FREE(mesh->points); + PAR_FREE(mesh->triangles); + PAR_FREE(mesh->normals); + PAR_FREE(mesh->tcoords); + PAR_FREE(mesh); +} + +void par_shapes_export(par_shapes_mesh const* mesh, char const* filename) +{ + FILE* objfile = fopen(filename, "wt"); + float const* points = mesh->points; + float const* tcoords = mesh->tcoords; + float const* norms = mesh->normals; + PAR_SHAPES_T const* indices = mesh->triangles; + if (tcoords && norms) { + for (int nvert = 0; nvert < mesh->npoints; nvert++) { + fprintf(objfile, "v %f %f %f\n", points[0], points[1], points[2]); + fprintf(objfile, "vt %f %f\n", tcoords[0], tcoords[1]); + fprintf(objfile, "vn %f %f %f\n", norms[0], norms[1], norms[2]); + points += 3; + norms += 3; + tcoords += 2; + } + for (int nface = 0; nface < mesh->ntriangles; nface++) { + int a = 1 + *indices++; + int b = 1 + *indices++; + int c = 1 + *indices++; + fprintf(objfile, "f %d/%d/%d %d/%d/%d %d/%d/%d\n", + a, a, a, b, b, b, c, c, c); + } + } else if (norms) { + for (int nvert = 0; nvert < mesh->npoints; nvert++) { + fprintf(objfile, "v %f %f %f\n", points[0], points[1], points[2]); + fprintf(objfile, "vn %f %f %f\n", norms[0], norms[1], norms[2]); + points += 3; + norms += 3; + } + for (int nface = 0; nface < mesh->ntriangles; nface++) { + int a = 1 + *indices++; + int b = 1 + *indices++; + int c = 1 + *indices++; + fprintf(objfile, "f %d//%d %d//%d %d//%d\n", a, a, b, b, c, c); + } + } else if (tcoords) { + for (int nvert = 0; nvert < mesh->npoints; nvert++) { + fprintf(objfile, "v %f %f %f\n", points[0], points[1], points[2]); + fprintf(objfile, "vt %f %f\n", tcoords[0], tcoords[1]); + points += 3; + tcoords += 2; + } + for (int nface = 0; nface < mesh->ntriangles; nface++) { + int a = 1 + *indices++; + int b = 1 + *indices++; + int c = 1 + *indices++; + fprintf(objfile, "f %d/%d %d/%d %d/%d\n", a, a, b, b, c, c); + } + } else { + for (int nvert = 0; nvert < mesh->npoints; nvert++) { + fprintf(objfile, "v %f %f %f\n", points[0], points[1], points[2]); + points += 3; + } + for (int nface = 0; nface < mesh->ntriangles; nface++) { + int a = 1 + *indices++; + int b = 1 + *indices++; + int c = 1 + *indices++; + fprintf(objfile, "f %d %d %d\n", a, b, c); + } + } + fclose(objfile); +} + +static void par_shapes__sphere(float const* uv, float* xyz, void* userdata) +{ + float phi = uv[0] * PAR_PI; + float theta = uv[1] * 2 * PAR_PI; + xyz[0] = cosf(theta) * sinf(phi); + xyz[1] = sinf(theta) * sinf(phi); + xyz[2] = cosf(phi); +} + +static void par_shapes__hemisphere(float const* uv, float* xyz, void* userdata) +{ + float phi = uv[0] * PAR_PI; + float theta = uv[1] * PAR_PI; + xyz[0] = cosf(theta) * sinf(phi); + xyz[1] = sinf(theta) * sinf(phi); + xyz[2] = cosf(phi); +} + +static void par_shapes__plane(float const* uv, float* xyz, void* userdata) +{ + xyz[0] = uv[0]; + xyz[1] = uv[1]; + xyz[2] = 0; +} + +static void par_shapes__klein(float const* uv, float* xyz, void* userdata) +{ + float u = uv[0] * PAR_PI; + float v = uv[1] * 2 * PAR_PI; + u = u * 2; + if (u < PAR_PI) { + xyz[0] = 3 * cosf(u) * (1 + sinf(u)) + (2 * (1 - cosf(u) / 2)) * + cosf(u) * cosf(v); + xyz[2] = -8 * sinf(u) - 2 * (1 - cosf(u) / 2) * sinf(u) * cosf(v); + } else { + xyz[0] = 3 * cosf(u) * (1 + sinf(u)) + (2 * (1 - cosf(u) / 2)) * + cosf(v + PAR_PI); + xyz[2] = -8 * sinf(u); + } + xyz[1] = -2 * (1 - cosf(u) / 2) * sinf(v); +} + +static void par_shapes__cylinder(float const* uv, float* xyz, void* userdata) +{ + float theta = uv[1] * 2 * PAR_PI; + xyz[0] = sinf(theta); + xyz[1] = cosf(theta); + xyz[2] = uv[0]; +} + +static void par_shapes__cone(float const* uv, float* xyz, void* userdata) +{ + float r = 1.0f - uv[0]; + float theta = uv[1] * 2 * PAR_PI; + xyz[0] = r * sinf(theta); + xyz[1] = r * cosf(theta); + xyz[2] = uv[0]; +} + +static void par_shapes__torus(float const* uv, float* xyz, void* userdata) +{ + float major = 1; + float minor = *((float*) userdata); + float theta = uv[0] * 2 * PAR_PI; + float phi = uv[1] * 2 * PAR_PI; + float beta = major + minor * cosf(phi); + xyz[0] = cosf(theta) * beta; + xyz[1] = sinf(theta) * beta; + xyz[2] = sinf(phi) * minor; +} + +static void par_shapes__trefoil(float const* uv, float* xyz, void* userdata) +{ + float minor = *((float*) userdata); + const float a = 0.5f; + const float b = 0.3f; + const float c = 0.5f; + const float d = minor * 0.1f; + const float u = (1 - uv[0]) * 4 * PAR_PI; + const float v = uv[1] * 2 * PAR_PI; + const float r = a + b * cos(1.5f * u); + const float x = r * cos(u); + const float y = r * sin(u); + const float z = c * sin(1.5f * u); + float q[3]; + q[0] = + -1.5f * b * sin(1.5f * u) * cos(u) - (a + b * cos(1.5f * u)) * sin(u); + q[1] = + -1.5f * b * sin(1.5f * u) * sin(u) + (a + b * cos(1.5f * u)) * cos(u); + q[2] = 1.5f * c * cos(1.5f * u); + par_shapes__normalize3(q); + float qvn[3] = {q[1], -q[0], 0}; + par_shapes__normalize3(qvn); + float ww[3]; + par_shapes__cross3(ww, q, qvn); + xyz[0] = x + d * (qvn[0] * cos(v) + ww[0] * sin(v)); + xyz[1] = y + d * (qvn[1] * cos(v) + ww[1] * sin(v)); + xyz[2] = z + d * ww[2] * sin(v); +} + +void par_shapes_set_epsilon_welded_normals(float epsilon) { + par_shapes__epsilon_welded_normals = epsilon; +} + +void par_shapes_set_epsilon_degenerate_sphere(float epsilon) { + par_shapes__epsilon_degenerate_sphere = epsilon; +} + +void par_shapes_merge(par_shapes_mesh* dst, par_shapes_mesh const* src) +{ + PAR_SHAPES_T offset = dst->npoints; + int npoints = dst->npoints + src->npoints; + int vecsize = sizeof(float) * 3; + dst->points = PAR_REALLOC(float, dst->points, 3 * npoints); + memcpy(dst->points + 3 * dst->npoints, src->points, vecsize * src->npoints); + dst->npoints = npoints; + if (src->normals || dst->normals) { + dst->normals = PAR_REALLOC(float, dst->normals, 3 * npoints); + if (src->normals) { + memcpy(dst->normals + 3 * offset, src->normals, + vecsize * src->npoints); + } + } + if (src->tcoords || dst->tcoords) { + int uvsize = sizeof(float) * 2; + dst->tcoords = PAR_REALLOC(float, dst->tcoords, 2 * npoints); + if (src->tcoords) { + memcpy(dst->tcoords + 2 * offset, src->tcoords, + uvsize * src->npoints); + } + } + int ntriangles = dst->ntriangles + src->ntriangles; + dst->triangles = PAR_REALLOC(PAR_SHAPES_T, dst->triangles, 3 * ntriangles); + PAR_SHAPES_T* ptriangles = dst->triangles + 3 * dst->ntriangles; + PAR_SHAPES_T const* striangles = src->triangles; + for (int i = 0; i < src->ntriangles; i++) { + *ptriangles++ = offset + *striangles++; + *ptriangles++ = offset + *striangles++; + *ptriangles++ = offset + *striangles++; + } + dst->ntriangles = ntriangles; +} + +par_shapes_mesh* par_shapes_create_disk(float radius, int slices, + float const* center, float const* normal) +{ + par_shapes_mesh* mesh = PAR_CALLOC(par_shapes_mesh, 1); + mesh->npoints = slices + 1; + mesh->points = PAR_MALLOC(float, 3 * mesh->npoints); + float* points = mesh->points; + *points++ = 0; + *points++ = 0; + *points++ = 0; + for (int i = 0; i < slices; i++) { + float theta = i * PAR_PI * 2 / slices; + *points++ = radius * cos(theta); + *points++ = radius * sin(theta); + *points++ = 0; + } + float nnormal[3] = {normal[0], normal[1], normal[2]}; + par_shapes__normalize3(nnormal); + mesh->normals = PAR_MALLOC(float, 3 * mesh->npoints); + float* norms = mesh->normals; + for (int i = 0; i < mesh->npoints; i++) { + *norms++ = nnormal[0]; + *norms++ = nnormal[1]; + *norms++ = nnormal[2]; + } + mesh->ntriangles = slices; + mesh->triangles = PAR_MALLOC(PAR_SHAPES_T, 3 * mesh->ntriangles); + PAR_SHAPES_T* triangles = mesh->triangles; + for (int i = 0; i < slices; i++) { + *triangles++ = 0; + *triangles++ = 1 + i; + *triangles++ = 1 + (i + 1) % slices; + } + float k[3] = {0, 0, -1}; + float axis[3]; + par_shapes__cross3(axis, nnormal, k); + par_shapes__normalize3(axis); + par_shapes_rotate(mesh, acos(nnormal[2]), axis); + par_shapes_translate(mesh, center[0], center[1], center[2]); + return mesh; +} + +par_shapes_mesh* par_shapes_create_empty() +{ + return PAR_CALLOC(par_shapes_mesh, 1); +} + +void par_shapes_translate(par_shapes_mesh* m, float x, float y, float z) +{ + float* points = m->points; + for (int i = 0; i < m->npoints; i++) { + *points++ += x; + *points++ += y; + *points++ += z; + } +} + +void par_shapes_rotate(par_shapes_mesh* mesh, float radians, float const* axis) +{ + float s = sinf(radians); + float c = cosf(radians); + float x = axis[0]; + float y = axis[1]; + float z = axis[2]; + float xy = x * y; + float yz = y * z; + float zx = z * x; + float oneMinusC = 1.0f - c; + float col0[3] = { + (((x * x) * oneMinusC) + c), + ((xy * oneMinusC) + (z * s)), ((zx * oneMinusC) - (y * s)) + }; + float col1[3] = { + ((xy * oneMinusC) - (z * s)), + (((y * y) * oneMinusC) + c), ((yz * oneMinusC) + (x * s)) + }; + float col2[3] = { + ((zx * oneMinusC) + (y * s)), + ((yz * oneMinusC) - (x * s)), (((z * z) * oneMinusC) + c) + }; + float* p = mesh->points; + for (int i = 0; i < mesh->npoints; i++, p += 3) { + float x = col0[0] * p[0] + col1[0] * p[1] + col2[0] * p[2]; + float y = col0[1] * p[0] + col1[1] * p[1] + col2[1] * p[2]; + float z = col0[2] * p[0] + col1[2] * p[1] + col2[2] * p[2]; + p[0] = x; + p[1] = y; + p[2] = z; + } + float* n = mesh->normals; + if (n) { + for (int i = 0; i < mesh->npoints; i++, n += 3) { + float x = col0[0] * n[0] + col1[0] * n[1] + col2[0] * n[2]; + float y = col0[1] * n[0] + col1[1] * n[1] + col2[1] * n[2]; + float z = col0[2] * n[0] + col1[2] * n[1] + col2[2] * n[2]; + n[0] = x; + n[1] = y; + n[2] = z; + } + } +} + +void par_shapes_scale(par_shapes_mesh* m, float x, float y, float z) +{ + float* points = m->points; + for (int i = 0; i < m->npoints; i++) { + *points++ *= x; + *points++ *= y; + *points++ *= z; + } + float* n = m->normals; + if (n && !(x == y && y == z)) { + bool x_zero = x == 0; + bool y_zero = y == 0; + bool z_zero = z == 0; + if (!x_zero && !y_zero && !z_zero) { + x = 1.0f / x; + y = 1.0f / y; + z = 1.0f / z; + } else { + x = x_zero && !y_zero && !z_zero; + y = y_zero && !x_zero && !z_zero; + z = z_zero && !x_zero && !y_zero; + } + for (int i = 0; i < m->npoints; i++, n += 3) { + n[0] *= x; + n[1] *= y; + n[2] *= z; + par_shapes__normalize3(n); + } + } +} + +void par_shapes_merge_and_free(par_shapes_mesh* dst, par_shapes_mesh* src) +{ + par_shapes_merge(dst, src); + par_shapes_free_mesh(src); +} + +void par_shapes_compute_aabb(par_shapes_mesh const* m, float* aabb) +{ + float* points = m->points; + aabb[0] = aabb[3] = points[0]; + aabb[1] = aabb[4] = points[1]; + aabb[2] = aabb[5] = points[2]; + points += 3; + for (int i = 1; i < m->npoints; i++, points += 3) { + aabb[0] = PAR_MIN(points[0], aabb[0]); + aabb[1] = PAR_MIN(points[1], aabb[1]); + aabb[2] = PAR_MIN(points[2], aabb[2]); + aabb[3] = PAR_MAX(points[0], aabb[3]); + aabb[4] = PAR_MAX(points[1], aabb[4]); + aabb[5] = PAR_MAX(points[2], aabb[5]); + } +} + +void par_shapes_invert(par_shapes_mesh* m, int face, int nfaces) +{ + nfaces = nfaces ? nfaces : m->ntriangles; + PAR_SHAPES_T* tri = m->triangles + face * 3; + for (int i = 0; i < nfaces; i++) { + PAR_SWAP(PAR_SHAPES_T, tri[0], tri[2]); + tri += 3; + } +} + +par_shapes_mesh* par_shapes_create_icosahedron() +{ + static float verts[] = { + 0.000, 0.000, 1.000, + 0.894, 0.000, 0.447, + 0.276, 0.851, 0.447, + -0.724, 0.526, 0.447, + -0.724, -0.526, 0.447, + 0.276, -0.851, 0.447, + 0.724, 0.526, -0.447, + -0.276, 0.851, -0.447, + -0.894, 0.000, -0.447, + -0.276, -0.851, -0.447, + 0.724, -0.526, -0.447, + 0.000, 0.000, -1.000 + }; + static PAR_SHAPES_T faces[] = { + 0,1,2, + 0,2,3, + 0,3,4, + 0,4,5, + 0,5,1, + 7,6,11, + 8,7,11, + 9,8,11, + 10,9,11, + 6,10,11, + 6,2,1, + 7,3,2, + 8,4,3, + 9,5,4, + 10,1,5, + 6,7,2, + 7,8,3, + 8,9,4, + 9,10,5, + 10,6,1 + }; + par_shapes_mesh* mesh = PAR_CALLOC(par_shapes_mesh, 1); + mesh->npoints = sizeof(verts) / sizeof(verts[0]) / 3; + mesh->points = PAR_MALLOC(float, sizeof(verts) / 4); + memcpy(mesh->points, verts, sizeof(verts)); + mesh->ntriangles = sizeof(faces) / sizeof(faces[0]) / 3; + mesh->triangles = PAR_MALLOC(PAR_SHAPES_T, sizeof(faces) / 2); + memcpy(mesh->triangles, faces, sizeof(faces)); + return mesh; +} + +par_shapes_mesh* par_shapes_create_dodecahedron() +{ + static float verts[20 * 3] = { + 0.607, 0.000, 0.795, + 0.188, 0.577, 0.795, + -0.491, 0.357, 0.795, + -0.491, -0.357, 0.795, + 0.188, -0.577, 0.795, + 0.982, 0.000, 0.188, + 0.304, 0.934, 0.188, + -0.795, 0.577, 0.188, + -0.795, -0.577, 0.188, + 0.304, -0.934, 0.188, + 0.795, 0.577, -0.188, + -0.304, 0.934, -0.188, + -0.982, 0.000, -0.188, + -0.304, -0.934, -0.188, + 0.795, -0.577, -0.188, + 0.491, 0.357, -0.795, + -0.188, 0.577, -0.795, + -0.607, 0.000, -0.795, + -0.188, -0.577, -0.795, + 0.491, -0.357, -0.795, + }; + static PAR_SHAPES_T pentagons[12 * 5] = { + 0,1,2,3,4, + 5,10,6,1,0, + 6,11,7,2,1, + 7,12,8,3,2, + 8,13,9,4,3, + 9,14,5,0,4, + 15,16,11,6,10, + 16,17,12,7,11, + 17,18,13,8,12, + 18,19,14,9,13, + 19,15,10,5,14, + 19,18,17,16,15 + }; + int npentagons = sizeof(pentagons) / sizeof(pentagons[0]) / 5; + par_shapes_mesh* mesh = PAR_CALLOC(par_shapes_mesh, 1); + int ncorners = sizeof(verts) / sizeof(verts[0]) / 3; + mesh->npoints = ncorners; + mesh->points = PAR_MALLOC(float, mesh->npoints * 3); + memcpy(mesh->points, verts, sizeof(verts)); + PAR_SHAPES_T const* pentagon = pentagons; + mesh->ntriangles = npentagons * 3; + mesh->triangles = PAR_MALLOC(PAR_SHAPES_T, mesh->ntriangles * 3); + PAR_SHAPES_T* tris = mesh->triangles; + for (int p = 0; p < npentagons; p++, pentagon += 5) { + *tris++ = pentagon[0]; + *tris++ = pentagon[1]; + *tris++ = pentagon[2]; + *tris++ = pentagon[0]; + *tris++ = pentagon[2]; + *tris++ = pentagon[3]; + *tris++ = pentagon[0]; + *tris++ = pentagon[3]; + *tris++ = pentagon[4]; + } + return mesh; +} + +par_shapes_mesh* par_shapes_create_octahedron() +{ + static float verts[6 * 3] = { + 0.000, 0.000, 1.000, + 1.000, 0.000, 0.000, + 0.000, 1.000, 0.000, + -1.000, 0.000, 0.000, + 0.000, -1.000, 0.000, + 0.000, 0.000, -1.000 + }; + static PAR_SHAPES_T triangles[8 * 3] = { + 0,1,2, + 0,2,3, + 0,3,4, + 0,4,1, + 2,1,5, + 3,2,5, + 4,3,5, + 1,4,5, + }; + int ntris = sizeof(triangles) / sizeof(triangles[0]) / 3; + par_shapes_mesh* mesh = PAR_CALLOC(par_shapes_mesh, 1); + int ncorners = sizeof(verts) / sizeof(verts[0]) / 3; + mesh->npoints = ncorners; + mesh->points = PAR_MALLOC(float, mesh->npoints * 3); + memcpy(mesh->points, verts, sizeof(verts)); + PAR_SHAPES_T const* triangle = triangles; + mesh->ntriangles = ntris; + mesh->triangles = PAR_MALLOC(PAR_SHAPES_T, mesh->ntriangles * 3); + PAR_SHAPES_T* tris = mesh->triangles; + for (int p = 0; p < ntris; p++) { + *tris++ = *triangle++; + *tris++ = *triangle++; + *tris++ = *triangle++; + } + return mesh; +} + +par_shapes_mesh* par_shapes_create_tetrahedron() +{ + static float verts[4 * 3] = { + 0.000, 1.333, 0, + 0.943, 0, 0, + -0.471, 0, 0.816, + -0.471, 0, -0.816, + }; + static PAR_SHAPES_T triangles[4 * 3] = { + 2,1,0, + 3,2,0, + 1,3,0, + 1,2,3, + }; + int ntris = sizeof(triangles) / sizeof(triangles[0]) / 3; + par_shapes_mesh* mesh = PAR_CALLOC(par_shapes_mesh, 1); + int ncorners = sizeof(verts) / sizeof(verts[0]) / 3; + mesh->npoints = ncorners; + mesh->points = PAR_MALLOC(float, mesh->npoints * 3); + memcpy(mesh->points, verts, sizeof(verts)); + PAR_SHAPES_T const* triangle = triangles; + mesh->ntriangles = ntris; + mesh->triangles = PAR_MALLOC(PAR_SHAPES_T, mesh->ntriangles * 3); + PAR_SHAPES_T* tris = mesh->triangles; + for (int p = 0; p < ntris; p++) { + *tris++ = *triangle++; + *tris++ = *triangle++; + *tris++ = *triangle++; + } + return mesh; +} + +par_shapes_mesh* par_shapes_create_cube() +{ + static float verts[8 * 3] = { + 0, 0, 0, // 0 + 0, 1, 0, // 1 + 1, 1, 0, // 2 + 1, 0, 0, // 3 + 0, 0, 1, // 4 + 0, 1, 1, // 5 + 1, 1, 1, // 6 + 1, 0, 1, // 7 + }; + static PAR_SHAPES_T quads[6 * 4] = { + 7,6,5,4, // front + 0,1,2,3, // back + 6,7,3,2, // right + 5,6,2,1, // top + 4,5,1,0, // left + 7,4,0,3, // bottom + }; + int nquads = sizeof(quads) / sizeof(quads[0]) / 4; + par_shapes_mesh* mesh = PAR_CALLOC(par_shapes_mesh, 1); + int ncorners = sizeof(verts) / sizeof(verts[0]) / 3; + mesh->npoints = ncorners; + mesh->points = PAR_MALLOC(float, mesh->npoints * 3); + memcpy(mesh->points, verts, sizeof(verts)); + PAR_SHAPES_T const* quad = quads; + mesh->ntriangles = nquads * 2; + mesh->triangles = PAR_MALLOC(PAR_SHAPES_T, mesh->ntriangles * 3); + PAR_SHAPES_T* tris = mesh->triangles; + for (int p = 0; p < nquads; p++, quad += 4) { + *tris++ = quad[0]; + *tris++ = quad[1]; + *tris++ = quad[2]; + *tris++ = quad[2]; + *tris++ = quad[3]; + *tris++ = quad[0]; + } + return mesh; +} + +typedef struct { + char* cmd; + char* arg; +} par_shapes__command; + +typedef struct { + char const* name; + int weight; + int ncommands; + par_shapes__command* commands; +} par_shapes__rule; + +typedef struct { + int pc; + float position[3]; + float scale[3]; + par_shapes_mesh* orientation; + par_shapes__rule* rule; +} par_shapes__stackframe; + +static par_shapes__rule* par_shapes__pick_rule(const char* name, + par_shapes__rule* rules, int nrules) +{ + par_shapes__rule* rule = 0; + int total = 0; + for (int i = 0; i < nrules; i++) { + rule = rules + i; + if (!strcmp(rule->name, name)) { + total += rule->weight; + } + } + float r = (float) rand() / RAND_MAX; + float t = 0; + for (int i = 0; i < nrules; i++) { + rule = rules + i; + if (!strcmp(rule->name, name)) { + t += (float) rule->weight / total; + if (t >= r) { + return rule; + } + } + } + return rule; +} + +static par_shapes_mesh* par_shapes__create_turtle() +{ + const float xaxis[] = {1, 0, 0}; + const float yaxis[] = {0, 1, 0}; + const float zaxis[] = {0, 0, 1}; + par_shapes_mesh* turtle = PAR_CALLOC(par_shapes_mesh, 1); + turtle->npoints = 3; + turtle->points = PAR_CALLOC(float, turtle->npoints * 3); + par_shapes__copy3(turtle->points + 0, xaxis); + par_shapes__copy3(turtle->points + 3, yaxis); + par_shapes__copy3(turtle->points + 6, zaxis); + return turtle; +} + +static par_shapes_mesh* par_shapes__apply_turtle(par_shapes_mesh* mesh, + par_shapes_mesh* turtle, float const* pos, float const* scale) +{ + par_shapes_mesh* m = par_shapes_clone(mesh, 0); + for (int p = 0; p < m->npoints; p++) { + float* pt = m->points + p * 3; + pt[0] *= scale[0]; + pt[1] *= scale[1]; + pt[2] *= scale[2]; + par_shapes__transform3(pt, + turtle->points + 0, turtle->points + 3, turtle->points + 6); + pt[0] += pos[0]; + pt[1] += pos[1]; + pt[2] += pos[2]; + } + return m; +} + +void par_shapes__connect(par_shapes_mesh* scene, par_shapes_mesh* cylinder, + int slices) +{ + int stacks = 1; + int npoints = (slices + 1) * (stacks + 1); + assert(scene->npoints >= npoints && "Cannot connect to empty scene."); + + // Create the new point list. + npoints = scene->npoints + (slices + 1); + float* points = PAR_MALLOC(float, npoints * 3); + memcpy(points, scene->points, sizeof(float) * scene->npoints * 3); + float* newpts = points + scene->npoints * 3; + memcpy(newpts, cylinder->points + (slices + 1) * 3, + sizeof(float) * (slices + 1) * 3); + PAR_FREE(scene->points); + scene->points = points; + + // Create the new triangle list. + int ntriangles = scene->ntriangles + 2 * slices * stacks; + PAR_SHAPES_T* triangles = PAR_MALLOC(PAR_SHAPES_T, ntriangles * 3); + memcpy(triangles, scene->triangles, + sizeof(PAR_SHAPES_T) * scene->ntriangles * 3); + int v = scene->npoints - (slices + 1); + PAR_SHAPES_T* face = triangles + scene->ntriangles * 3; + for (int stack = 0; stack < stacks; stack++) { + for (int slice = 0; slice < slices; slice++) { + int next = slice + 1; + *face++ = v + slice + slices + 1; + *face++ = v + next; + *face++ = v + slice; + *face++ = v + slice + slices + 1; + *face++ = v + next + slices + 1; + *face++ = v + next; + } + v += slices + 1; + } + PAR_FREE(scene->triangles); + scene->triangles = triangles; + + scene->npoints = npoints; + scene->ntriangles = ntriangles; +} + +par_shapes_mesh* par_shapes_create_lsystem(char const* text, int slices, + int maxdepth) +{ + char* program; + program = PAR_MALLOC(char, strlen(text) + 1); + + // The first pass counts the number of rules and commands. + strcpy(program, text); + char *cmd = strtok(program, " "); + int nrules = 1; + int ncommands = 0; + while (cmd) { + char *arg = strtok(0, " "); + if (!arg) { + puts("lsystem error: unexpected end of program."); + break; + } + if (!strcmp(cmd, "rule")) { + nrules++; + } else { + ncommands++; + } + cmd = strtok(0, " "); + } + + // Allocate space. + par_shapes__rule* rules = PAR_MALLOC(par_shapes__rule, nrules); + par_shapes__command* commands = PAR_MALLOC(par_shapes__command, ncommands); + + // Initialize the entry rule. + par_shapes__rule* current_rule = &rules[0]; + par_shapes__command* current_command = &commands[0]; + current_rule->name = "entry"; + current_rule->weight = 1; + current_rule->ncommands = 0; + current_rule->commands = current_command; + + // The second pass fills in the structures. + strcpy(program, text); + cmd = strtok(program, " "); + while (cmd) { + char *arg = strtok(0, " "); + if (!strcmp(cmd, "rule")) { + current_rule++; + + // Split the argument into a rule name and weight. + char* dot = strchr(arg, '.'); + if (dot) { + current_rule->weight = atoi(dot + 1); + *dot = 0; + } else { + current_rule->weight = 1; + } + + current_rule->name = arg; + current_rule->ncommands = 0; + current_rule->commands = current_command; + } else { + current_rule->ncommands++; + current_command->cmd = cmd; + current_command->arg = arg; + current_command++; + } + cmd = strtok(0, " "); + } + + // For testing purposes, dump out the parsed program. + #ifdef TEST_PARSE + for (int i = 0; i < nrules; i++) { + par_shapes__rule rule = rules[i]; + printf("rule %s.%d\n", rule.name, rule.weight); + for (int c = 0; c < rule.ncommands; c++) { + par_shapes__command cmd = rule.commands[c]; + printf("\t%s %s\n", cmd.cmd, cmd.arg); + } + } + #endif + + // Instantiate the aggregated shape and the template shapes. + par_shapes_mesh* scene = PAR_CALLOC(par_shapes_mesh, 1); + par_shapes_mesh* tube = par_shapes_create_cylinder(slices, 1); + par_shapes_mesh* turtle = par_shapes__create_turtle(); + + // We're not attempting to support texture coordinates and normals + // with L-systems, so remove them from the template shape. + PAR_FREE(tube->normals); + PAR_FREE(tube->tcoords); + tube->normals = 0; + tube->tcoords = 0; + + const float xaxis[] = {1, 0, 0}; + const float yaxis[] = {0, 1, 0}; + const float zaxis[] = {0, 0, 1}; + const float units[] = {1, 1, 1}; + + // Execute the L-system program until the stack size is 0. + par_shapes__stackframe* stack = + PAR_CALLOC(par_shapes__stackframe, maxdepth); + int stackptr = 0; + stack[0].orientation = turtle; + stack[0].rule = &rules[0]; + par_shapes__copy3(stack[0].scale, units); + while (stackptr >= 0) { + par_shapes__stackframe* frame = &stack[stackptr]; + par_shapes__rule* rule = frame->rule; + par_shapes_mesh* turtle = frame->orientation; + float* position = frame->position; + float* scale = frame->scale; + if (frame->pc >= rule->ncommands) { + par_shapes_free_mesh(turtle); + stackptr--; + continue; + } + + par_shapes__command* cmd = rule->commands + (frame->pc++); + #ifdef DUMP_TRACE + printf("%5s %5s %5s:%d %03d\n", cmd->cmd, cmd->arg, rule->name, + frame->pc - 1, stackptr); + #endif + + float value; + if (!strcmp(cmd->cmd, "shape")) { + par_shapes_mesh* m = par_shapes__apply_turtle(tube, turtle, + position, scale); + if (!strcmp(cmd->arg, "connect")) { + par_shapes__connect(scene, m, slices); + } else { + par_shapes_merge(scene, m); + } + par_shapes_free_mesh(m); + } else if (!strcmp(cmd->cmd, "call") && stackptr < maxdepth - 1) { + rule = par_shapes__pick_rule(cmd->arg, rules, nrules); + frame = &stack[++stackptr]; + frame->rule = rule; + frame->orientation = par_shapes_clone(turtle, 0); + frame->pc = 0; + par_shapes__copy3(frame->scale, scale); + par_shapes__copy3(frame->position, position); + continue; + } else { + value = atof(cmd->arg); + if (!strcmp(cmd->cmd, "rx")) { + par_shapes_rotate(turtle, value * PAR_PI / 180.0, xaxis); + } else if (!strcmp(cmd->cmd, "ry")) { + par_shapes_rotate(turtle, value * PAR_PI / 180.0, yaxis); + } else if (!strcmp(cmd->cmd, "rz")) { + par_shapes_rotate(turtle, value * PAR_PI / 180.0, zaxis); + } else if (!strcmp(cmd->cmd, "tx")) { + float vec[3] = {value, 0, 0}; + float t[3] = { + par_shapes__dot3(turtle->points + 0, vec), + par_shapes__dot3(turtle->points + 3, vec), + par_shapes__dot3(turtle->points + 6, vec) + }; + par_shapes__add3(position, t); + } else if (!strcmp(cmd->cmd, "ty")) { + float vec[3] = {0, value, 0}; + float t[3] = { + par_shapes__dot3(turtle->points + 0, vec), + par_shapes__dot3(turtle->points + 3, vec), + par_shapes__dot3(turtle->points + 6, vec) + }; + par_shapes__add3(position, t); + } else if (!strcmp(cmd->cmd, "tz")) { + float vec[3] = {0, 0, value}; + float t[3] = { + par_shapes__dot3(turtle->points + 0, vec), + par_shapes__dot3(turtle->points + 3, vec), + par_shapes__dot3(turtle->points + 6, vec) + }; + par_shapes__add3(position, t); + } else if (!strcmp(cmd->cmd, "sx")) { + scale[0] *= value; + } else if (!strcmp(cmd->cmd, "sy")) { + scale[1] *= value; + } else if (!strcmp(cmd->cmd, "sz")) { + scale[2] *= value; + } else if (!strcmp(cmd->cmd, "sa")) { + scale[0] *= value; + scale[1] *= value; + scale[2] *= value; + } + } + } + par_shapes_free_mesh(tube); + PAR_FREE(stack); + PAR_FREE(program); + PAR_FREE(rules); + PAR_FREE(commands); + return scene; +} + +void par_shapes_unweld(par_shapes_mesh* mesh, bool create_indices) +{ + int npoints = mesh->ntriangles * 3; + float* points = PAR_MALLOC(float, 3 * npoints); + float* dst = points; + PAR_SHAPES_T const* index = mesh->triangles; + for (int i = 0; i < npoints; i++) { + float const* src = mesh->points + 3 * (*index++); + *dst++ = src[0]; + *dst++ = src[1]; + *dst++ = src[2]; + } + PAR_FREE(mesh->points); + mesh->points = points; + mesh->npoints = npoints; + if (create_indices) { + PAR_SHAPES_T* tris = PAR_MALLOC(PAR_SHAPES_T, 3 * mesh->ntriangles); + PAR_SHAPES_T* index = tris; + for (int i = 0; i < mesh->ntriangles * 3; i++) { + *index++ = i; + } + PAR_FREE(mesh->triangles); + mesh->triangles = tris; + } +} + +void par_shapes_compute_normals(par_shapes_mesh* m) +{ + PAR_FREE(m->normals); + m->normals = PAR_CALLOC(float, m->npoints * 3); + PAR_SHAPES_T const* triangle = m->triangles; + float next[3], prev[3], cp[3]; + for (int f = 0; f < m->ntriangles; f++, triangle += 3) { + float const* pa = m->points + 3 * triangle[0]; + float const* pb = m->points + 3 * triangle[1]; + float const* pc = m->points + 3 * triangle[2]; + par_shapes__copy3(next, pb); + par_shapes__subtract3(next, pa); + par_shapes__copy3(prev, pc); + par_shapes__subtract3(prev, pa); + par_shapes__cross3(cp, next, prev); + par_shapes__add3(m->normals + 3 * triangle[0], cp); + par_shapes__copy3(next, pc); + par_shapes__subtract3(next, pb); + par_shapes__copy3(prev, pa); + par_shapes__subtract3(prev, pb); + par_shapes__cross3(cp, next, prev); + par_shapes__add3(m->normals + 3 * triangle[1], cp); + par_shapes__copy3(next, pa); + par_shapes__subtract3(next, pc); + par_shapes__copy3(prev, pb); + par_shapes__subtract3(prev, pc); + par_shapes__cross3(cp, next, prev); + par_shapes__add3(m->normals + 3 * triangle[2], cp); + } + float* normal = m->normals; + for (int p = 0; p < m->npoints; p++, normal += 3) { + par_shapes__normalize3(normal); + } +} + +static void par_shapes__subdivide(par_shapes_mesh* mesh) +{ + assert(mesh->npoints == mesh->ntriangles * 3 && "Must be unwelded."); + int ntriangles = mesh->ntriangles * 4; + int npoints = ntriangles * 3; + float* points = PAR_CALLOC(float, npoints * 3); + float* dpoint = points; + float const* spoint = mesh->points; + for (int t = 0; t < mesh->ntriangles; t++, spoint += 9, dpoint += 3) { + float const* a = spoint; + float const* b = spoint + 3; + float const* c = spoint + 6; + float const* p0 = dpoint; + float const* p1 = dpoint + 3; + float const* p2 = dpoint + 6; + par_shapes__mix3(dpoint, a, b, 0.5); + par_shapes__mix3(dpoint += 3, b, c, 0.5); + par_shapes__mix3(dpoint += 3, a, c, 0.5); + par_shapes__add3(dpoint += 3, a); + par_shapes__add3(dpoint += 3, p0); + par_shapes__add3(dpoint += 3, p2); + par_shapes__add3(dpoint += 3, p0); + par_shapes__add3(dpoint += 3, b); + par_shapes__add3(dpoint += 3, p1); + par_shapes__add3(dpoint += 3, p2); + par_shapes__add3(dpoint += 3, p1); + par_shapes__add3(dpoint += 3, c); + } + PAR_FREE(mesh->points); + mesh->points = points; + mesh->npoints = npoints; + mesh->ntriangles = ntriangles; +} + +par_shapes_mesh* par_shapes_create_subdivided_sphere(int nsubd) +{ + par_shapes_mesh* mesh = par_shapes_create_icosahedron(); + par_shapes_unweld(mesh, false); + PAR_FREE(mesh->triangles); + mesh->triangles = 0; + while (nsubd--) { + par_shapes__subdivide(mesh); + } + for (int i = 0; i < mesh->npoints; i++) { + par_shapes__normalize3(mesh->points + i * 3); + } + mesh->triangles = PAR_MALLOC(PAR_SHAPES_T, 3 * mesh->ntriangles); + for (int i = 0; i < mesh->ntriangles * 3; i++) { + mesh->triangles[i] = i; + } + par_shapes_mesh* tmp = mesh; + mesh = par_shapes_weld(mesh, 0.01, 0); + par_shapes_free_mesh(tmp); + par_shapes_compute_normals(mesh); + return mesh; +} + +par_shapes_mesh* par_shapes_create_rock(int seed, int subd) +{ + par_shapes_mesh* mesh = par_shapes_create_subdivided_sphere(subd); + struct osn_context* ctx; + par__simplex_noise(seed, &ctx); + for (int p = 0; p < mesh->npoints; p++) { + float* pt = mesh->points + p * 3; + float a = 0.25, f = 1.0; + double n = a * par__simplex_noise2(ctx, f * pt[0], f * pt[2]); + a *= 0.5; f *= 2; + n += a * par__simplex_noise2(ctx, f * pt[0], f * pt[2]); + pt[0] *= 1 + 2 * n; + pt[1] *= 1 + n; + pt[2] *= 1 + 2 * n; + if (pt[1] < 0) { + pt[1] = -pow(-pt[1], 0.5) / 2; + } + } + par__simplex_noise_free(ctx); + par_shapes_compute_normals(mesh); + return mesh; +} + +par_shapes_mesh* par_shapes_clone(par_shapes_mesh const* mesh, + par_shapes_mesh* clone) +{ + if (!clone) { + clone = PAR_CALLOC(par_shapes_mesh, 1); + } + clone->npoints = mesh->npoints; + clone->points = PAR_REALLOC(float, clone->points, 3 * clone->npoints); + memcpy(clone->points, mesh->points, sizeof(float) * 3 * clone->npoints); + clone->ntriangles = mesh->ntriangles; + clone->triangles = PAR_REALLOC(PAR_SHAPES_T, clone->triangles, 3 * + clone->ntriangles); + memcpy(clone->triangles, mesh->triangles, + sizeof(PAR_SHAPES_T) * 3 * clone->ntriangles); + if (mesh->normals) { + clone->normals = PAR_REALLOC(float, clone->normals, 3 * clone->npoints); + memcpy(clone->normals, mesh->normals, + sizeof(float) * 3 * clone->npoints); + } + if (mesh->tcoords) { + clone->tcoords = PAR_REALLOC(float, clone->tcoords, 2 * clone->npoints); + memcpy(clone->tcoords, mesh->tcoords, + sizeof(float) * 2 * clone->npoints); + } + return clone; +} + +static struct { + float const* points; + int gridsize; +} par_shapes__sort_context; + +static int par_shapes__cmp1(const void *arg0, const void *arg1) +{ + const int g = par_shapes__sort_context.gridsize; + + // Convert arg0 into a flattened grid index. + PAR_SHAPES_T d0 = *(const PAR_SHAPES_T*) arg0; + float const* p0 = par_shapes__sort_context.points + d0 * 3; + int i0 = (int) p0[0]; + int j0 = (int) p0[1]; + int k0 = (int) p0[2]; + int index0 = i0 + g * j0 + g * g * k0; + + // Convert arg1 into a flattened grid index. + PAR_SHAPES_T d1 = *(const PAR_SHAPES_T*) arg1; + float const* p1 = par_shapes__sort_context.points + d1 * 3; + int i1 = (int) p1[0]; + int j1 = (int) p1[1]; + int k1 = (int) p1[2]; + int index1 = i1 + g * j1 + g * g * k1; + + // Return the ordering. + if (index0 < index1) return -1; + if (index0 > index1) return 1; + return 0; +} + +static void par_shapes__sort_points(par_shapes_mesh* mesh, int gridsize, + PAR_SHAPES_T* sortmap) +{ + // Run qsort over a list of consecutive integers that get deferenced + // within the comparator function; this creates a reorder mapping. + for (int i = 0; i < mesh->npoints; i++) { + sortmap[i] = i; + } + par_shapes__sort_context.gridsize = gridsize; + par_shapes__sort_context.points = mesh->points; + qsort(sortmap, mesh->npoints, sizeof(PAR_SHAPES_T), par_shapes__cmp1); + + // Apply the reorder mapping to the XYZ coordinate data. + float* newpts = PAR_MALLOC(float, mesh->npoints * 3); + PAR_SHAPES_T* invmap = PAR_MALLOC(PAR_SHAPES_T, mesh->npoints); + float* dstpt = newpts; + for (int i = 0; i < mesh->npoints; i++) { + invmap[sortmap[i]] = i; + float const* srcpt = mesh->points + 3 * sortmap[i]; + *dstpt++ = *srcpt++; + *dstpt++ = *srcpt++; + *dstpt++ = *srcpt++; + } + PAR_FREE(mesh->points); + mesh->points = newpts; + + // Apply the inverse reorder mapping to the triangle indices. + PAR_SHAPES_T* newinds = PAR_MALLOC(PAR_SHAPES_T, mesh->ntriangles * 3); + PAR_SHAPES_T* dstind = newinds; + PAR_SHAPES_T const* srcind = mesh->triangles; + for (int i = 0; i < mesh->ntriangles * 3; i++) { + *dstind++ = invmap[*srcind++]; + } + PAR_FREE(mesh->triangles); + mesh->triangles = newinds; + + // Cleanup. + memcpy(sortmap, invmap, sizeof(PAR_SHAPES_T) * mesh->npoints); + PAR_FREE(invmap); +} + +static void par_shapes__weld_points(par_shapes_mesh* mesh, int gridsize, + float epsilon, PAR_SHAPES_T* weldmap) +{ + // Each bin contains a "pointer" (really an index) to its first point. + // We add 1 because 0 is reserved to mean that the bin is empty. + // Since the points are spatially sorted, there's no need to store + // a point count in each bin. + PAR_SHAPES_T* bins = PAR_CALLOC(PAR_SHAPES_T, + gridsize * gridsize * gridsize); + int prev_binindex = -1; + for (int p = 0; p < mesh->npoints; p++) { + float const* pt = mesh->points + p * 3; + int i = (int) pt[0]; + int j = (int) pt[1]; + int k = (int) pt[2]; + int this_binindex = i + gridsize * j + gridsize * gridsize * k; + if (this_binindex != prev_binindex) { + bins[this_binindex] = 1 + p; + } + prev_binindex = this_binindex; + } + + // Examine all bins that intersect the epsilon-sized cube centered at each + // point, and check for colocated points within those bins. + float const* pt = mesh->points; + int nremoved = 0; + for (int p = 0; p < mesh->npoints; p++, pt += 3) { + + // Skip if this point has already been welded. + if (weldmap[p] != p) { + continue; + } + + // Build a list of bins that intersect the epsilon-sized cube. + int nearby[8]; + int nbins = 0; + int minp[3], maxp[3]; + for (int c = 0; c < 3; c++) { + minp[c] = (int) (pt[c] - epsilon); + maxp[c] = (int) (pt[c] + epsilon); + } + for (int i = minp[0]; i <= maxp[0]; i++) { + for (int j = minp[1]; j <= maxp[1]; j++) { + for (int k = minp[2]; k <= maxp[2]; k++) { + int binindex = i + gridsize * j + gridsize * gridsize * k; + PAR_SHAPES_T binvalue = *(bins + binindex); + if (binvalue > 0) { + if (nbins == 8) { + printf("Epsilon value is too large.\n"); + break; + } + nearby[nbins++] = binindex; + } + } + } + } + + // Check for colocated points in each nearby bin. + for (int b = 0; b < nbins; b++) { + int binindex = nearby[b]; + PAR_SHAPES_T binvalue = bins[binindex]; + PAR_SHAPES_T nindex = binvalue - 1; + assert(nindex < mesh->npoints); + while (true) { + + // If this isn't "self" and it's colocated, then weld it! + if (nindex != p && weldmap[nindex] == nindex) { + float const* thatpt = mesh->points + nindex * 3; + float dist2 = par_shapes__sqrdist3(thatpt, pt); + if (dist2 < epsilon) { + weldmap[nindex] = p; + nremoved++; + } + } + + // Advance to the next point if possible. + if (++nindex >= mesh->npoints) { + break; + } + + // If the next point is outside the bin, then we're done. + float const* nextpt = mesh->points + nindex * 3; + int i = (int) nextpt[0]; + int j = (int) nextpt[1]; + int k = (int) nextpt[2]; + int nextbinindex = i + gridsize * j + gridsize * gridsize * k; + if (nextbinindex != binindex) { + break; + } + } + } + } + PAR_FREE(bins); + + // Apply the weldmap to the vertices. + int npoints = mesh->npoints - nremoved; + float* newpts = PAR_MALLOC(float, 3 * npoints); + float* dst = newpts; + PAR_SHAPES_T* condensed_map = PAR_MALLOC(PAR_SHAPES_T, mesh->npoints); + PAR_SHAPES_T* cmap = condensed_map; + float const* src = mesh->points; + int ci = 0; + for (int p = 0; p < mesh->npoints; p++, src += 3) { + if (weldmap[p] == p) { + *dst++ = src[0]; + *dst++ = src[1]; + *dst++ = src[2]; + *cmap++ = ci++; + } else { + *cmap++ = condensed_map[weldmap[p]]; + } + } + assert(ci == npoints); + PAR_FREE(mesh->points); + memcpy(weldmap, condensed_map, mesh->npoints * sizeof(PAR_SHAPES_T)); + PAR_FREE(condensed_map); + mesh->points = newpts; + mesh->npoints = npoints; + + // Apply the weldmap to the triangle indices and skip the degenerates. + PAR_SHAPES_T const* tsrc = mesh->triangles; + PAR_SHAPES_T* tdst = mesh->triangles; + int ntriangles = 0; + for (int i = 0; i < mesh->ntriangles; i++, tsrc += 3) { + PAR_SHAPES_T a = weldmap[tsrc[0]]; + PAR_SHAPES_T b = weldmap[tsrc[1]]; + PAR_SHAPES_T c = weldmap[tsrc[2]]; + if (a != b && a != c && b != c) { + assert(a < mesh->npoints); + assert(b < mesh->npoints); + assert(c < mesh->npoints); + *tdst++ = a; + *tdst++ = b; + *tdst++ = c; + ntriangles++; + } + } + mesh->ntriangles = ntriangles; +} + +par_shapes_mesh* par_shapes_weld(par_shapes_mesh const* mesh, float epsilon, + PAR_SHAPES_T* weldmap) +{ + par_shapes_mesh* clone = par_shapes_clone(mesh, 0); + float aabb[6]; + int gridsize = 20; + float maxcell = gridsize - 1; + par_shapes_compute_aabb(clone, aabb); + float scale[3] = { + aabb[3] == aabb[0] ? 1.0f : maxcell / (aabb[3] - aabb[0]), + aabb[4] == aabb[1] ? 1.0f : maxcell / (aabb[4] - aabb[1]), + aabb[5] == aabb[2] ? 1.0f : maxcell / (aabb[5] - aabb[2]), + }; + par_shapes_translate(clone, -aabb[0], -aabb[1], -aabb[2]); + par_shapes_scale(clone, scale[0], scale[1], scale[2]); + PAR_SHAPES_T* sortmap = PAR_MALLOC(PAR_SHAPES_T, mesh->npoints); + par_shapes__sort_points(clone, gridsize, sortmap); + bool owner = false; + if (!weldmap) { + owner = true; + weldmap = PAR_MALLOC(PAR_SHAPES_T, mesh->npoints); + } + for (int i = 0; i < mesh->npoints; i++) { + weldmap[i] = i; + } + par_shapes__weld_points(clone, gridsize, epsilon, weldmap); + if (owner) { + PAR_FREE(weldmap); + } else { + PAR_SHAPES_T* newmap = PAR_MALLOC(PAR_SHAPES_T, mesh->npoints); + for (int i = 0; i < mesh->npoints; i++) { + newmap[i] = weldmap[sortmap[i]]; + } + memcpy(weldmap, newmap, sizeof(PAR_SHAPES_T) * mesh->npoints); + PAR_FREE(newmap); + } + PAR_FREE(sortmap); + par_shapes_scale(clone, 1.0 / scale[0], 1.0 / scale[1], 1.0 / scale[2]); + par_shapes_translate(clone, aabb[0], aabb[1], aabb[2]); + return clone; +} + +// ----------------------------------------------------------------------------- +// BEGIN OPEN SIMPLEX NOISE +// ----------------------------------------------------------------------------- + +#define STRETCH_CONSTANT_2D (-0.211324865405187) // (1 / sqrt(2 + 1) - 1 ) / 2; +#define SQUISH_CONSTANT_2D (0.366025403784439) // (sqrt(2 + 1) -1) / 2; +#define STRETCH_CONSTANT_3D (-1.0 / 6.0) // (1 / sqrt(3 + 1) - 1) / 3; +#define SQUISH_CONSTANT_3D (1.0 / 3.0) // (sqrt(3+1)-1)/3; +#define STRETCH_CONSTANT_4D (-0.138196601125011) // (1 / sqrt(4 + 1) - 1) / 4; +#define SQUISH_CONSTANT_4D (0.309016994374947) // (sqrt(4 + 1) - 1) / 4; + +#define NORM_CONSTANT_2D (47.0) +#define NORM_CONSTANT_3D (103.0) +#define NORM_CONSTANT_4D (30.0) + +#define DEFAULT_SEED (0LL) + +struct osn_context { + int16_t* perm; + int16_t* permGradIndex3D; +}; + +#define ARRAYSIZE(x) (sizeof((x)) / sizeof((x)[0])) + +/* + * Gradients for 2D. They approximate the directions to the + * vertices of an octagon from the center. + */ +static const int8_t gradients2D[] = { + 5, 2, 2, 5, -5, 2, -2, 5, 5, -2, 2, -5, -5, -2, -2, -5, +}; + +/* + * Gradients for 3D. They approximate the directions to the + * vertices of a rhombicuboctahedron from the center, skewed so + * that the triangular and square facets can be inscribed inside + * circles of the same radius. + */ +static const signed char gradients3D[] = { + -11, 4, 4, -4, 11, 4, -4, 4, 11, 11, 4, 4, 4, 11, 4, 4, 4, 11, -11, -4, 4, + -4, -11, 4, -4, -4, 11, 11, -4, 4, 4, -11, 4, 4, -4, 11, -11, 4, -4, -4, 11, + -4, -4, 4, -11, 11, 4, -4, 4, 11, -4, 4, 4, -11, -11, -4, -4, -4, -11, -4, + -4, -4, -11, 11, -4, -4, 4, -11, -4, 4, -4, -11, +}; + +/* + * Gradients for 4D. They approximate the directions to the + * vertices of a disprismatotesseractihexadecachoron from the center, + * skewed so that the tetrahedral and cubic facets can be inscribed inside + * spheres of the same radius. + */ +static const signed char gradients4D[] = { + 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, -3, 1, 1, 1, -1, 3, 1, 1, + -1, 1, 3, 1, -1, 1, 1, 3, 3, -1, 1, 1, 1, -3, 1, 1, 1, -1, 3, 1, 1, -1, 1, + 3, -3, -1, 1, 1, -1, -3, 1, 1, -1, -1, 3, 1, -1, -1, 1, 3, 3, 1, -1, 1, 1, + 3, -1, 1, 1, 1, -3, 1, 1, 1, -1, 3, -3, 1, -1, 1, -1, 3, -1, 1, -1, 1, -3, + 1, -1, 1, -1, 3, 3, -1, -1, 1, 1, -3, -1, 1, 1, -1, -3, 1, 1, -1, -1, 3, -3, + -1, -1, 1, -1, -3, -1, 1, -1, -1, -3, 1, -1, -1, -1, 3, 3, 1, 1, -1, 1, 3, + 1, -1, 1, 1, 3, -1, 1, 1, 1, -3, -3, 1, 1, -1, -1, 3, 1, -1, -1, 1, 3, -1, + -1, 1, 1, -3, 3, -1, 1, -1, 1, -3, 1, -1, 1, -1, 3, -1, 1, -1, 1, -3, -3, + -1, 1, -1, -1, -3, 1, -1, -1, -1, 3, -1, -1, -1, 1, -3, 3, 1, -1, -1, 1, 3, + -1, -1, 1, 1, -3, -1, 1, 1, -1, -3, -3, 1, -1, -1, -1, 3, -1, -1, -1, 1, -3, + -1, -1, 1, -1, -3, 3, -1, -1, -1, 1, -3, -1, -1, 1, -1, -3, -1, 1, -1, -1, + -3, -3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3, +}; + +static double extrapolate2( + struct osn_context* ctx, int xsb, int ysb, double dx, double dy) +{ + int16_t* perm = ctx->perm; + int index = perm[(perm[xsb & 0xFF] + ysb) & 0xFF] & 0x0E; + return gradients2D[index] * dx + gradients2D[index + 1] * dy; +} + +static inline int fastFloor(double x) +{ + int xi = (int) x; + return x < xi ? xi - 1 : xi; +} + +static int allocate_perm(struct osn_context* ctx, int nperm, int ngrad) +{ + PAR_FREE(ctx->perm); + PAR_FREE(ctx->permGradIndex3D); + ctx->perm = PAR_MALLOC(int16_t, nperm); + if (!ctx->perm) { + return -ENOMEM; + } + ctx->permGradIndex3D = PAR_MALLOC(int16_t, ngrad); + if (!ctx->permGradIndex3D) { + PAR_FREE(ctx->perm); + return -ENOMEM; + } + return 0; +} + +static int par__simplex_noise(int64_t seed, struct osn_context** ctx) +{ + int rc; + int16_t source[256]; + int i; + int16_t* perm; + int16_t* permGradIndex3D; + *ctx = PAR_MALLOC(struct osn_context, 1); + if (!(*ctx)) { + return -ENOMEM; + } + (*ctx)->perm = NULL; + (*ctx)->permGradIndex3D = NULL; + rc = allocate_perm(*ctx, 256, 256); + if (rc) { + PAR_FREE(*ctx); + return rc; + } + perm = (*ctx)->perm; + permGradIndex3D = (*ctx)->permGradIndex3D; + for (i = 0; i < 256; i++) { + source[i] = (int16_t) i; + } + seed = seed * 6364136223846793005LL + 1442695040888963407LL; + seed = seed * 6364136223846793005LL + 1442695040888963407LL; + seed = seed * 6364136223846793005LL + 1442695040888963407LL; + for (i = 255; i >= 0; i--) { + seed = seed * 6364136223846793005LL + 1442695040888963407LL; + int r = (int) ((seed + 31) % (i + 1)); + if (r < 0) + r += (i + 1); + perm[i] = source[r]; + permGradIndex3D[i] = + (short) ((perm[i] % (ARRAYSIZE(gradients3D) / 3)) * 3); + source[r] = source[i]; + } + return 0; +} + +static void par__simplex_noise_free(struct osn_context* ctx) +{ + if (!ctx) + return; + if (ctx->perm) { + PAR_FREE(ctx->perm); + ctx->perm = NULL; + } + if (ctx->permGradIndex3D) { + PAR_FREE(ctx->permGradIndex3D); + ctx->permGradIndex3D = NULL; + } + PAR_FREE(ctx); +} + +static double par__simplex_noise2(struct osn_context* ctx, double x, double y) +{ + // Place input coordinates onto grid. + double stretchOffset = (x + y) * STRETCH_CONSTANT_2D; + double xs = x + stretchOffset; + double ys = y + stretchOffset; + + // Floor to get grid coordinates of rhombus (stretched square) super-cell + // origin. + int xsb = fastFloor(xs); + int ysb = fastFloor(ys); + + // Skew out to get actual coordinates of rhombus origin. We'll need these + // later. + double squishOffset = (xsb + ysb) * SQUISH_CONSTANT_2D; + double xb = xsb + squishOffset; + double yb = ysb + squishOffset; + + // Compute grid coordinates relative to rhombus origin. + double xins = xs - xsb; + double yins = ys - ysb; + + // Sum those together to get a value that determines which region we're in. + double inSum = xins + yins; + + // Positions relative to origin point. + double dx0 = x - xb; + double dy0 = y - yb; + + // We'll be defining these inside the next block and using them afterwards. + double dx_ext, dy_ext; + int xsv_ext, ysv_ext; + + double value = 0; + + // Contribution (1,0) + double dx1 = dx0 - 1 - SQUISH_CONSTANT_2D; + double dy1 = dy0 - 0 - SQUISH_CONSTANT_2D; + double attn1 = 2 - dx1 * dx1 - dy1 * dy1; + if (attn1 > 0) { + attn1 *= attn1; + value += attn1 * attn1 * extrapolate2(ctx, xsb + 1, ysb + 0, dx1, dy1); + } + + // Contribution (0,1) + double dx2 = dx0 - 0 - SQUISH_CONSTANT_2D; + double dy2 = dy0 - 1 - SQUISH_CONSTANT_2D; + double attn2 = 2 - dx2 * dx2 - dy2 * dy2; + if (attn2 > 0) { + attn2 *= attn2; + value += attn2 * attn2 * extrapolate2(ctx, xsb + 0, ysb + 1, dx2, dy2); + } + + if (inSum <= 1) { // We're inside the triangle (2-Simplex) at (0,0) + double zins = 1 - inSum; + if (zins > xins || zins > yins) { + if (xins > yins) { + xsv_ext = xsb + 1; + ysv_ext = ysb - 1; + dx_ext = dx0 - 1; + dy_ext = dy0 + 1; + } else { + xsv_ext = xsb - 1; + ysv_ext = ysb + 1; + dx_ext = dx0 + 1; + dy_ext = dy0 - 1; + } + } else { //(1,0) and (0,1) are the closest two vertices. + xsv_ext = xsb + 1; + ysv_ext = ysb + 1; + dx_ext = dx0 - 1 - 2 * SQUISH_CONSTANT_2D; + dy_ext = dy0 - 1 - 2 * SQUISH_CONSTANT_2D; + } + } else { // We're inside the triangle (2-Simplex) at (1,1) + double zins = 2 - inSum; + if (zins < xins || zins < yins) { + if (xins > yins) { + xsv_ext = xsb + 2; + ysv_ext = ysb + 0; + dx_ext = dx0 - 2 - 2 * SQUISH_CONSTANT_2D; + dy_ext = dy0 + 0 - 2 * SQUISH_CONSTANT_2D; + } else { + xsv_ext = xsb + 0; + ysv_ext = ysb + 2; + dx_ext = dx0 + 0 - 2 * SQUISH_CONSTANT_2D; + dy_ext = dy0 - 2 - 2 * SQUISH_CONSTANT_2D; + } + } else { //(1,0) and (0,1) are the closest two vertices. + dx_ext = dx0; + dy_ext = dy0; + xsv_ext = xsb; + ysv_ext = ysb; + } + xsb += 1; + ysb += 1; + dx0 = dx0 - 1 - 2 * SQUISH_CONSTANT_2D; + dy0 = dy0 - 1 - 2 * SQUISH_CONSTANT_2D; + } + + // Contribution (0,0) or (1,1) + double attn0 = 2 - dx0 * dx0 - dy0 * dy0; + if (attn0 > 0) { + attn0 *= attn0; + value += attn0 * attn0 * extrapolate2(ctx, xsb, ysb, dx0, dy0); + } + + // Extra Vertex + double attn_ext = 2 - dx_ext * dx_ext - dy_ext * dy_ext; + if (attn_ext > 0) { + attn_ext *= attn_ext; + value += attn_ext * attn_ext * + extrapolate2(ctx, xsv_ext, ysv_ext, dx_ext, dy_ext); + } + + return value / NORM_CONSTANT_2D; +} + +void par_shapes_remove_degenerate(par_shapes_mesh* mesh, float mintriarea) +{ + int ntriangles = 0; + PAR_SHAPES_T* triangles = PAR_MALLOC(PAR_SHAPES_T, mesh->ntriangles * 3); + PAR_SHAPES_T* dst = triangles; + PAR_SHAPES_T const* src = mesh->triangles; + float next[3], prev[3], cp[3]; + float mincplen2 = (mintriarea * 2) * (mintriarea * 2); + for (int f = 0; f < mesh->ntriangles; f++, src += 3) { + float const* pa = mesh->points + 3 * src[0]; + float const* pb = mesh->points + 3 * src[1]; + float const* pc = mesh->points + 3 * src[2]; + par_shapes__copy3(next, pb); + par_shapes__subtract3(next, pa); + par_shapes__copy3(prev, pc); + par_shapes__subtract3(prev, pa); + par_shapes__cross3(cp, next, prev); + float cplen2 = par_shapes__dot3(cp, cp); + if (cplen2 >= mincplen2) { + *dst++ = src[0]; + *dst++ = src[1]; + *dst++ = src[2]; + ntriangles++; + } + } + mesh->ntriangles = ntriangles; + PAR_FREE(mesh->triangles); + mesh->triangles = triangles; +} + +#endif // PAR_SHAPES_IMPLEMENTATION +#endif // PAR_SHAPES_H + +// par_shapes is distributed under the MIT license: +// +// Copyright (c) 2019 Philip Rideout +// +// 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. diff --git a/source/engine/thirdparty/par/par_sprune.h b/source/engine/thirdparty/par/par_sprune.h new file mode 100644 index 0000000..b274600 --- /dev/null +++ b/source/engine/thirdparty/par/par_sprune.h @@ -0,0 +1,476 @@ +// SPRUNE :: https://github.com/prideout/par +// Sweep and Prune library for detecting axis-aligned box collisions in 2D. +// +// For an emscripten demo of this library, take a look at the following link. +// +// https://prideout.net/d3cpp +// +// The axis-aligned bounding boxes are specified by (minx, miny, maxx, maxy). +// Simple usage example: +// +// float boxes[] = { +// 0.10, 0.10, 0.30, 0.30, // box 0 +// 0.20, 0.20, 0.40, 0.40, // box 1 +// 0.60, 0.15, 0.70, 0.25, // box 2 +// }; +// int nboxes = 3; +// par_sprune_context* ctx = par_sprune_overlap(boxes, nboxes, 0); +// int const* pairs = ctx->collision_pairs; +// for (int i = 0; i < ctx->ncollision_pairs * 2; i += 2) { +// printf("box %d overlaps box %d\n", pairs[i], pairs[i + 1]); +// } +// par_sprune_free_context(ctx); +// +// Distributed under the MIT License, see bottom of file. + +#ifndef PAR_SPRUNE_H +#define PAR_SPRUNE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#ifndef PAR_SPRUNE_INT +#define PAR_SPRUNE_INT int32_t +#endif + +#ifndef PAR_SPRUNE_FLT +#define PAR_SPRUNE_FLT float +#endif + +// ----------------------------------------------------------------------------- +// BEGIN PUBLIC API +// ----------------------------------------------------------------------------- + +typedef struct { + PAR_SPRUNE_INT const* const collision_pairs; // list of two-tuples + PAR_SPRUNE_INT const ncollision_pairs; // number of two-tuples + PAR_SPRUNE_INT const* const culled; // filled by par_sprune_cull + PAR_SPRUNE_INT const nculled; // set by par_sprune_cull +} par_sprune_context; + +void par_sprune_free_context(par_sprune_context* context); + +// Takes an array of 4-tuples (minx miny maxx maxy) and performs SaP. Populates +// "collision_pairs" and "ncollision_pairs". Optionally takes an existing +// context to avoid memory churn; pass NULL for initial construction. +par_sprune_context* par_sprune_overlap(PAR_SPRUNE_FLT const* aabbs, + PAR_SPRUNE_INT naabbs, par_sprune_context* previous); + +// Reads new aabb data from the same pointer that was passed to the overlap +// function and refreshes the two relevant fields. This function should +// only be used when the number of aabbs remains constant. If this returns +// false, no changes to the collision set were detected. +bool par_sprune_update(par_sprune_context* ctx); + +// Examines all collision groups and creates a culling set such that no boxes +// would overlap if the culled boxes are removed. When two boxes collide, the +// box that occurs earlier in the list is more likely to be culled. Populates +// the "culled" and "nculled" fields in par_sprune_context. This is useful for +// hiding labels in GIS applications. +void par_sprune_cull(par_sprune_context* context); + +// ----------------------------------------------------------------------------- +// END PUBLIC API +// ----------------------------------------------------------------------------- + +#ifdef __cplusplus +} +#endif + +#ifdef PAR_SPRUNE_IMPLEMENTATION +#define PARINT PAR_SPRUNE_INT +#define PARFLT PAR_SPRUNE_FLT + +#include +#include + +#ifndef PAR_PI +#define PAR_PI (3.14159265359) +#define PAR_MIN(a, b) (a > b ? b : a) +#define PAR_MAX(a, b) (a > b ? a : b) +#define PAR_CLAMP(v, lo, hi) PAR_MAX(lo, PAR_MIN(hi, v)) +#define PAR_SWAP(T, A, B) { T tmp = B; B = A; A = tmp; } +#define PAR_SQR(a) ((a) * (a)) +#endif + +#ifndef PAR_MALLOC +#define PAR_MALLOC(T, N) ((T*) malloc(N * sizeof(T))) +#define PAR_CALLOC(T, N) ((T*) calloc(N * sizeof(T), 1)) +#define PAR_REALLOC(T, BUF, N) ((T*) realloc(BUF, sizeof(T) * (N))) +#define PAR_FREE(BUF) free(BUF) +#endif + +#ifndef PAR_ARRAY +#define PAR_ARRAY +#define pa_free(a) ((a) ? PAR_FREE(pa___raw(a)), 0 : 0) +#define pa_push(a, v) (pa___maybegrow(a, (int) 1), (a)[pa___n(a)++] = (v)) +#define pa_count(a) ((a) ? pa___n(a) : 0) +#define pa_add(a, n) (pa___maybegrow(a, (int) n), pa___n(a) += (n)) +#define pa_last(a) ((a)[pa___n(a) - 1]) +#define pa_end(a) (a + pa_count(a)) +#define pa_clear(arr) if (arr) pa___n(arr) = 0 +#define pa___raw(a) ((int*) (a) -2) +#define pa___m(a) pa___raw(a)[0] +#define pa___n(a) pa___raw(a)[1] +#define pa___needgrow(a, n) ((a) == 0 || pa___n(a) + ((int) n) >= pa___m(a)) +#define pa___maybegrow(a, n) (pa___needgrow(a, (n)) ? pa___grow(a, n) : 0) +#define pa___grow(a, n) (*((void**)& (a)) = pa___growf((void*) (a), (n), \ + sizeof(*(a)))) + +// ptr[-2] is capacity, ptr[-1] is size. +static void* pa___growf(void* arr, int increment, int itemsize) +{ + int dbl_cur = arr ? 2 * pa___m(arr) : 0; + int min_needed = pa_count(arr) + increment; + int m = dbl_cur > min_needed ? dbl_cur : min_needed; + int* p = (int *) PAR_REALLOC(uint8_t, arr ? pa___raw(arr) : 0, + itemsize * m + sizeof(int) * 2); + if (p) { + if (!arr) { + p[1] = 0; + } + p[0] = m; + return p + 2; + } + return (void*) (2 * sizeof(int)); +} + +#endif + +typedef struct { + + // Public: + PARINT* collision_pairs; + PARINT ncollision_pairs; + PARINT* culled; + PARINT nculled; + + // Private: + PARFLT const* aabbs; + PARINT naabbs; + PARINT* sorted_indices[2]; + PARINT* pairs[2]; + +} par_sprune__context; + +static inline int par_qsort_cmpswap(char *__restrict a, char *__restrict b, + size_t w, + int (*compar)(const void *_a, const void *_b, + void *_arg), + void *arg) +{ + char tmp, *end = a+w; + if (compar(a, b, arg) > 0) { + for(; a < end; a++, b++) { tmp = *a; *a = *b; *b = tmp; } + return 1; + } + return 0; +} + +// qsort doesn't take a context, so we have our own portable implementation. +// Parameters: +// base is the array to be sorted +// nel is the number of elements in the array +// w is the size in bytes of each element of the array +// compar is the comparison function +// arg is a pointer to be passed to the comparison function +// +static inline void par_qsort( + void *base, + size_t nel, + size_t w, + int (*compar)(const void *_a, const void *_b, void *_arg), + void *arg) +{ + char *b = (char*) base, *end = (char*) (b + nel * w); + if (nel < 7) { + char *pi, *pj; + for (pi = b+w; pi < end; pi += w) { + for (pj = pi; pj > b && par_qsort_cmpswap(pj-w, pj, w, compar, arg); + pj -= w) {} + } + return; + } + char *x, *y, *xend, ch; + char *pl, *pr; + char *last = b+w*(nel-1), *tmp; + char *l[3]; + l[0] = b; + l[1] = b+w*(nel/2); + l[2] = last; + if (compar(l[0],l[1],arg) > 0) { + tmp=l[0]; l[0]=l[1]; l[1]=tmp; + } + if (compar(l[1],l[2],arg) > 0) { + tmp=l[1]; l[1]=l[2]; l[2]=tmp; + if (compar(l[0],l[1],arg) > 0) { + tmp=l[0]; l[0]=l[1]; l[1]=tmp; + } + } + for(x = l[1], y = last, xend = x+w; xsorted_indices[0]); + pa_free(ctx->sorted_indices[1]); + pa_free(ctx->pairs[0]); + pa_free(ctx->pairs[1]); + pa_free(ctx->collision_pairs); + PAR_FREE(ctx); +} + +static void par_sprune__remove(PARINT* arr, PARINT val) +{ + int i = pa_count(arr) - 1; + for (; i >= 0; i--) { + if (arr[i] == val) { + break; + } + } + assert(i >= 0); + for (++i; i < pa_count(arr); i++) { + PAR_SWAP(PARINT, arr[i - 1], arr[i]); + } + pa___n(arr)--; +} + +typedef struct { + PARFLT const* aabbs; +} par__sprune_sorter; + +static int par__cmpinds(const void* pa, const void* pb, void* psorter) +{ + PARINT a = *((const PARINT*) pa); + PARINT b = *((const PARINT*) pb); + par__sprune_sorter* sorter = (par__sprune_sorter*) psorter; + PARFLT const* aabbs = sorter->aabbs; + PARFLT vala = aabbs[a]; + PARFLT valb = aabbs[b]; + if (vala > valb) return 1; + if (vala < valb) return -1; + if (a > b) return 1; + if (a < b) return -1; + return 0; +} + +static int par__cmppairs(const void* pa, const void* pb, void* unused) +{ + PARINT a = *((const PARINT*) pa); + PARINT b = *((const PARINT*) pb); + if (a > b) return 1; + if (a < b) return -1; + a = *(1 + (const PARINT*) pa); + b = *(1 + (const PARINT*) pb); + if (a > b) return 1; + if (a < b) return -1; + return 0; +} + +static int par__cmpfind(const void* pa, const void* pb) +{ + PARINT a = *((const PARINT*) pa); + PARINT b = *((const PARINT*) pb); + if (a > b) return 1; + if (a < b) return -1; + a = *(1 + (const PARINT*) pa); + b = *(1 + (const PARINT*) pb); + if (a > b) return 1; + if (a < b) return -1; + return 0; +} + +par_sprune_context* par_sprune_overlap(PARFLT const* aabbs, PARINT naabbs, + par_sprune_context* previous) +{ + par_sprune__context* ctx = (par_sprune__context*) previous; + if (!ctx) { + ctx = PAR_CALLOC(par_sprune__context, 1); + } + ctx->aabbs = aabbs; + ctx->naabbs = naabbs; + for (int axis = 0; axis < 2; axis++) { + pa_clear(ctx->sorted_indices[axis]); + pa_add(ctx->sorted_indices[axis], naabbs * 2); + pa_clear(ctx->pairs[axis]); + } + for (PARINT i = 0; i < naabbs; i++) { + ctx->sorted_indices[0][i * 2 + 0] = i * 4 + 0; + ctx->sorted_indices[1][i * 2 + 0] = i * 4 + 1; + ctx->sorted_indices[0][i * 2 + 1] = i * 4 + 2; + ctx->sorted_indices[1][i * 2 + 1] = i * 4 + 3; + } + par__sprune_sorter sorter; + sorter.aabbs = ctx->aabbs; + PARINT* active = 0; + + // Sweep a plane first across the X-axis, then down through the Y-axis. + + for (int axis = 0; axis < 2; axis++) { + PARINT** pairs = &ctx->pairs[axis]; + PARINT* indices = ctx->sorted_indices[axis]; + par_qsort(indices, naabbs * 2, sizeof(PARINT), par__cmpinds, &sorter); + pa_clear(active); + for (PARINT i = 0; i < naabbs * 2; i++) { + PARINT fltindex = indices[i]; + PARINT boxindex = fltindex / 4; + bool ismin = ((fltindex - axis) % 4) == 0; + if (ismin) { + for (int j = 0; j < pa_count(active); j++) { + pa_push(*pairs, active[j]); + pa_push(*pairs, boxindex); + pa_push(*pairs, boxindex); + pa_push(*pairs, active[j]); + } + pa_push(active, boxindex); + } else { + par_sprune__remove(active, boxindex); + } + } + } + + // Sort the Y-axis collision pairs to make it easier to intersect it + // with the set of X-axis collision pairs. We also sort the X-axis + // pairs because it's required for subsequent calls to par_sprune_update. + + PARINT* xpairs = ctx->pairs[0]; + PARINT* ypairs = ctx->pairs[1]; + int nxpairs = pa_count(xpairs) / 2; + int nypairs = pa_count(ypairs) / 2; + int pairsize = 2 * sizeof(PARINT); + pa_free(active); + par_qsort(xpairs, nxpairs, pairsize, par__cmppairs, 0); + par_qsort(ypairs, nypairs, pairsize, par__cmppairs, 0); + pa_clear(ctx->collision_pairs); + + // Find the intersection of X-axis overlaps and Y-axis overlaps. + + for (int i = 0; i < pa_count(xpairs); i += 2) { + PARINT* key = xpairs + i; + if (key[1] < key[0]) { + continue; + } + void* found = bsearch(key, ypairs, nypairs, pairsize, par__cmpfind); + if (found) { + pa_push(ctx->collision_pairs, key[0]); + pa_push(ctx->collision_pairs, key[1]); + } + } + ctx->ncollision_pairs = pa_count(ctx->collision_pairs) / 2; + return (par_sprune_context*) ctx; +} + +bool par_sprune_update(par_sprune_context* context) +{ + par_sprune__context* ctx = (par_sprune__context*) context; + PARINT* collision_pairs = ctx->collision_pairs; + PARINT ncollision_pairs = ctx->ncollision_pairs; + ctx->collision_pairs = 0; + par_sprune_overlap(ctx->aabbs, ctx->naabbs, context); + bool dirty = ncollision_pairs != ctx->ncollision_pairs; + if (!dirty) { + int pairsize = 2 * sizeof(PARINT); + for (int i = 0; i < ctx->ncollision_pairs; i += 2) { + PARINT* key = ctx->collision_pairs + i; + if (!bsearch(key, collision_pairs, ncollision_pairs, + pairsize, par__cmpfind)) { + dirty = true; + break; + } + } + } + pa_free(collision_pairs); + return dirty; +} + +bool par_sprune__is_culled(par_sprune__context* ctx, PARINT key) +{ + for (int i = 0; i < pa_count(ctx->culled); i++) { + if (key == ctx->culled[i]) { + return true; + } + } + return false; +} + +static int par__cmpfindsingle(const void* pa, const void* pb) +{ + PARINT a = *((const PARINT*) pa); + PARINT b = *((const PARINT*) pb); + if (a > b) return 1; + if (a < b) return -1; + return 0; +} + +void par_sprune_cull(par_sprune_context* context) +{ + par_sprune__context* ctx = (par_sprune__context*) context; + pa_clear(ctx->culled); + PARINT* collision_pairs = ctx->collision_pairs; + PARINT ncollision_pairs = ctx->ncollision_pairs; + int pairsize = 2 * sizeof(PARINT); + for (int i = 0; i < ctx->naabbs; i++) { + PARINT* found = (PARINT*) bsearch(&i, collision_pairs, ncollision_pairs, + pairsize, par__cmpfindsingle); + if (!found) { + continue; + } + if (!par_sprune__is_culled(ctx, found[0]) && + !par_sprune__is_culled(ctx, found[1])) { + pa_push(ctx->culled, found[0]); + } + } + ctx->nculled = pa_count(ctx->culled); +} + +#undef PARINT +#undef PARFLT +#endif // PAR_SPRUNE_IMPLEMENTATION +#endif // PAR_SPRUNE_H + +// par_sprune is distributed under the MIT license: +// +// Copyright (c) 2019 Philip Rideout +// +// 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. diff --git a/source/engine/thirdparty/par/par_streamlines.h b/source/engine/thirdparty/par/par_streamlines.h new file mode 100644 index 0000000..1f1c694 --- /dev/null +++ b/source/engine/thirdparty/par/par_streamlines.h @@ -0,0 +1,1259 @@ +// STREAMLINES :: https://prideout.net/blog/par_streamlines/ +// Simple C library for triangulating wide lines, curves, and streamlines. +// +// Usage example: +// +// #define PAR_STREAMLINES_IMPLEMENTATION +// #include "par_streamlines.h" +// +// parsl_context* ctx = parsl_create_context({ .thickness = 3 }); +// parsl_position vertices[] = { {0, 0}, {2, 1}, {4, 0} }; +// uint16_t spine_lengths[] = { 3 }; +// parsl_mesh* mesh = parsl_mesh_from_lines(ctx, { +// .num_vertices = sizeof(vertices) / sizeof(parsl_position), +// .num_spines = sizeof(spine_lengths) / sizeof(uint16_t), +// .vertices = vertices, +// .spine_lengths = spine_lengths +// }); +// ... +// parsl_destroy_context(ctx); +// +// Distributed under the MIT License, see bottom of file. + +#ifndef PAR_STREAMLINES_H +#define PAR_STREAMLINES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +// Configures how the library assigns UV coordinates. +typedef enum { + PAR_U_MODE_NORMALIZED_DISTANCE, // this is the default + PAR_U_MODE_DISTANCE, // non-normalized distance along the curve + PAR_U_MODE_SEGMENT_INDEX, // starts at zero for each curve, counts up + PAR_U_MODE_SEGMENT_FRACTION, // 0.0, 1.0 / COUNT, 2.0 / COUNT, etc... +} parsl_u_mode; + +// Layout for generated vertex attributes. +typedef struct { + float u_along_curve; // longitudinal coordinate (see parsl_u_mode) + float v_across_curve; // either + or - depending on the side + float spine_to_edge_x; // normalized vector from spine to edge + float spine_to_edge_y; // normalized vector from spine to edge +} parsl_annotation; + +// Simple two-tuple math type used for mesh and spine vertices. +typedef struct { + float x; + float y; +} parsl_position; + +// Triangle mesh generated by the library. The vertex data is owned by +// streamlines context and becomes invalid on any subsequent call to the API. +// The annotations, spine_lengths, and random_offsets fields are null unless +// their corresponding flags have been set in parsl_config. +typedef struct { + uint32_t num_vertices; + uint32_t num_triangles; + uint32_t* triangle_indices; + parsl_position* positions; + parsl_annotation* annotations; + float* spine_lengths; + float* random_offsets; +} parsl_mesh; + +// Viewport for streamline seed placement. +typedef struct { + float left; + float top; + float right; + float bottom; +} parsl_viewport; + +#define PARSL_FLAG_WIREFRAME (1 << 0) // enables 4 indices per triangle +#define PARSL_FLAG_ANNOTATIONS (1 << 1) // populates mesh.annotations +#define PARSL_FLAG_SPINE_LENGTHS (1 << 2) // populates mesh.lengths +#define PARSL_FLAG_RANDOM_OFFSETS (1 << 3) // populates mesh.random_offsets +#define PARSL_FLAG_CURVE_GUIDES (1 << 4) // draws control points + +// Immutable configuration for a streamlines context. +typedef struct { + float thickness; + uint32_t flags; + parsl_u_mode u_mode; + float curves_max_flatness; + float streamlines_seed_spacing; + parsl_viewport streamlines_seed_viewport; + float miter_limit; +} parsl_config; + +// Client-owned list of line strips that will be tessellated. +typedef struct { + uint32_t num_vertices; + uint16_t num_spines; + parsl_position* vertices; + uint16_t* spine_lengths; + bool closed; +} parsl_spine_list; + +// Opaque handle to a streamlines context and its memory arena. +typedef struct parsl_context_s parsl_context; + +// Client function that moves a streamline particle by a single time step. +typedef void (*parsl_advection_callback)(parsl_position* point, void* userdata); + +parsl_context* parsl_create_context(parsl_config config); + +void parsl_destroy_context(parsl_context* ctx); + +// Low-level function that simply generates two triangles for each line segment. +parsl_mesh* parsl_mesh_from_lines(parsl_context* ctx, parsl_spine_list spines); + +// High-level function that can be used to visualize a vector field. +parsl_mesh* parsl_mesh_from_streamlines(parsl_context* context, + parsl_advection_callback advect, uint32_t first_tick, uint32_t num_ticks, + void* userdata); + +// High-level function that tessellates a series of curves into triangles, +// where each spine is a series of chained cubic Bézier curves. +// +// The first curve of each spine is defined by an endpoint, followed by two +// control points, followed by an endpoint. Every subsequent curve in the spine +// is defined by a single control point followed by an endpoint. Only one +// control point is required because the first control point is computed via +// reflection over the endpoint. +// +// The number of vertices in each spine should be 4+(n-1)*2 where n is the +// number of piecewise curves. +// +// Each spine is equivalent to an SVG path that looks like M C S S S. +parsl_mesh* parsl_mesh_from_curves_cubic(parsl_context* context, + parsl_spine_list spines); + +// High-level function that tessellates a series of curves into triangles, +// where each spine is a series of chained quadratic Bézier curves. +// +// The first curve of each spine is defined by an endpoint, followed by one +// control point, followed by an endpoint. Every subsequent curve in the spine +// is defined by a single control point followed by an endpoint. +// +// The number of vertices in each spine should be 3+(n-1)*2 where n is the +// number of piecewise curves. +// +// Each spine is equivalent to an SVG path that looks like M Q M Q M Q. +parsl_mesh* parsl_mesh_from_curves_quadratic(parsl_context* context, + parsl_spine_list spines); + +#ifdef __cplusplus +} +#endif + +// ----------------------------------------------------------------------------- +// END PUBLIC API +// ----------------------------------------------------------------------------- +#ifdef PAR_STREAMLINES_IMPLEMENTATION + +#include +#include +#include +#include +#include + +static float parsl__dot(parsl_position a, parsl_position b) { + return a.x * b.x + a.y * b.y; +} + +static parsl_position parsl__sub(parsl_position a, parsl_position b) { + return (parsl_position) { a.x - b.x, a.y - b.y }; +} + +static parsl_position parsl__add(parsl_position a, parsl_position b) { + return (parsl_position) { a.x + b.x, a.y + b.y }; +} + +static parsl_position parsl_mul(parsl_position v, float s) { + return (parsl_position) { v.x * s, v.y * s }; +} + +#define PARSL_MAX_RECURSION 16 + +#ifndef PAR_PI +#define PAR_PI (3.14159265359) +#define PAR_MIN(a, b) (a > b ? b : a) +#define PAR_MAX(a, b) (a > b ? a : b) +#define PAR_CLAMP(v, lo, hi) PAR_MAX(lo, PAR_MIN(hi, v)) +#define PAR_SWAP(T, A, B) { T tmp = B; B = A; A = tmp; } +#define PAR_SQR(a) ((a) * (a)) +#endif + +#ifndef PAR_MALLOC +#define PAR_MALLOC(T, N) ((T*) malloc(N * sizeof(T))) +#define PAR_CALLOC(T, N) ((T*) calloc(N * sizeof(T), 1)) +#define PAR_REALLOC(T, BUF, N) ((T*) realloc(BUF, sizeof(T) * (N))) +#define PAR_FREE(BUF) free(BUF) +#endif + +#ifndef PAR_ARRAY +#define PAR_ARRAY +#define pa_free(a) ((a) ? PAR_FREE(pa___raw(a)), 0 : 0) +#define pa_push(a, v) (pa___maybegrow(a, (int) 1), (a)[pa___n(a)++] = (v)) +#define pa_count(a) ((a) ? pa___n(a) : 0) +#define pa_add(a, n) (pa___maybegrow(a, (int) n), pa___n(a) += (n)) +#define pa_last(a) ((a)[pa___n(a) - 1]) +#define pa_end(a) (a + pa_count(a)) +#define pa_clear(arr) if (arr) pa___n(arr) = 0 + +#define pa___raw(a) ((int*) (a) -2) +#define pa___m(a) pa___raw(a)[0] +#define pa___n(a) pa___raw(a)[1] +#define pa___needgrow(a, n) ((a) == 0 || pa___n(a) + ((int) n) >= pa___m(a)) +#define pa___maybegrow(a, n) (pa___needgrow(a, (n)) ? pa___grow(a, n) : 0) +#define pa___grow(a, n) (*((void**)& (a)) = pa___growf((void*) (a), (n), \ + sizeof(*(a)))) + +// ptr[-2] is capacity, ptr[-1] is size. +static void* pa___growf(void* arr, int increment, int itemsize) +{ + int dbl_cur = arr ? 2 * pa___m(arr) : 0; + int min_needed = pa_count(arr) + increment; + int m = dbl_cur > min_needed ? dbl_cur : min_needed; + int* p = (int *) PAR_REALLOC(uint8_t, arr ? pa___raw(arr) : 0, + itemsize * m + sizeof(int) * 2); + if (p) { + if (!arr) { + p[1] = 0; + } + p[0] = m; + return p + 2; + } + return (void*) (2 * sizeof(int)); +} + +#endif + +struct parsl_context_s { + parsl_config config; + parsl_mesh result; + parsl_position* streamline_seeds; + parsl_position* streamline_points; + parsl_spine_list streamline_spines; + parsl_spine_list curve_spines; + uint16_t guideline_start; +}; + +parsl_context* parsl_create_context(parsl_config config) +{ + parsl_context* context = PAR_CALLOC(parsl_context, 1); + context->config = config; + return context; +} + +void parsl_destroy_context(parsl_context* context) +{ + pa_free(context->result.triangle_indices); + pa_free(context->result.spine_lengths); + pa_free(context->result.annotations); + pa_free(context->result.positions); + pa_free(context->result.random_offsets); + pa_free(context->streamline_seeds); + pa_free(context->streamline_points); + pa_free(context->streamline_spines.spine_lengths); + pa_free(context->streamline_spines.vertices); + pa_free(context->curve_spines.spine_lengths); + pa_free(context->curve_spines.vertices); + PAR_FREE(context); +} + +parsl_mesh* parsl_mesh_from_lines(parsl_context* context, + parsl_spine_list spines) +{ + typedef parsl_position Position; + typedef parsl_annotation Annotation; + + parsl_mesh* mesh = &context->result; + const bool closed = spines.closed; + const bool wireframe = context->config.flags & PARSL_FLAG_WIREFRAME; + const bool has_annotations = context->config.flags & PARSL_FLAG_ANNOTATIONS; + const bool has_lengths = context->config.flags & PARSL_FLAG_SPINE_LENGTHS; + const float miter_limit = context->config.miter_limit ? + context->config.miter_limit : (context->config.thickness * 2); + const float miter_acos_max = +1.0; + const float miter_acos_min = -1.0; + const uint32_t ind_per_tri = wireframe ? 4 : 3; + + mesh->num_vertices = 0; + mesh->num_triangles = 0; + + for (uint32_t spine = 0; spine < spines.num_spines; spine++) { + assert(spines.spine_lengths[spine] > 1); + mesh->num_vertices += 2 * spines.spine_lengths[spine]; + mesh->num_triangles += 2 * (spines.spine_lengths[spine] - 1); + if (closed) { + mesh->num_vertices += 2; + mesh->num_triangles += 2; + } + } + + pa_clear(mesh->spine_lengths); + pa_clear(mesh->annotations); + pa_clear(mesh->positions); + pa_clear(mesh->triangle_indices); + + if (has_lengths) { + pa_add(mesh->spine_lengths, mesh->num_vertices); + } + if (has_annotations) { + pa_add(mesh->annotations, mesh->num_vertices); + } + + pa_add(mesh->positions, mesh->num_vertices); + pa_add(mesh->triangle_indices, ind_per_tri * mesh->num_triangles); + + float* dst_lengths = mesh->spine_lengths; + Annotation* dst_annotations = mesh->annotations; + Position* dst_positions = mesh->positions; + uint32_t* dst_indices = mesh->triangle_indices; + + const Position* src_position = spines.vertices; + uint32_t base_index = 0; + + for (uint16_t spine = 0; spine < spines.num_spines; spine++) { + const bool thin = context->guideline_start > 0 && + spine >= context->guideline_start; + const float thickness = thin ? 1.0f : context->config.thickness; + const uint16_t spine_length = spines.spine_lengths[spine]; + float dx = src_position[1].x - src_position[0].x; + float dy = src_position[1].y - src_position[0].y; + float segment_length = sqrtf(dx * dx + dy * dy); + float invlen = segment_length ? 1.0f / segment_length : 0.0f; + const float nx = -dy * invlen; + const float ny = dx * invlen; + + const Position first_src_position = src_position[0]; + const Position last_src_position = src_position[spine_length - 1]; + + float ex = nx * thickness / 2; + float ey = ny * thickness / 2; + + if (closed) { + const float dx = src_position[0].x - last_src_position.x; + const float dy = src_position[0].y - last_src_position.y; + const float segment_length = sqrtf(dx * dx + dy * dy); + float invlen = segment_length ? 1.0f / segment_length : 0.0f; + const float pnx = -dy * invlen; + const float pny = dx * invlen; + + // NOTE: sin(pi / 2 - acos(X) / 2) == sqrt(1 + X) / sqrt(2) + float extent = 0.5 * thickness; + const float dotp = (pnx * nx + pny * ny); + if (dotp < miter_acos_max && dotp > miter_acos_min) { + const float phi = acos(dotp) / 2; + const float theta = PAR_PI / 2 - phi; + extent = PAR_CLAMP(extent / sin(theta), -miter_limit, + miter_limit); + } + + ex = pnx + nx; + ey = pny + ny; + const float len = sqrtf(ex * ex + ey * ey); + invlen = len == 0.0 ? 0.0 : (1.0f / len); + ex *= invlen * extent; + ey *= invlen * extent; + } + + dst_positions[0].x = src_position[0].x + ex; + dst_positions[0].y = src_position[0].y + ey; + dst_positions[1].x = src_position[0].x - ex; + dst_positions[1].y = src_position[0].y - ey; + + float pnx = nx; + float pny = ny; + + const Position first_dst_positions[2] = { + dst_positions[0], + dst_positions[1] + }; + + src_position++; + dst_positions += 2; + + if (has_annotations) { + dst_annotations[0].u_along_curve = 0; + dst_annotations[1].u_along_curve = 0; + dst_annotations[0].v_across_curve = 1; + dst_annotations[1].v_across_curve = -1; + dst_annotations[0].spine_to_edge_x = ex; + dst_annotations[1].spine_to_edge_x = -ex; + dst_annotations[0].spine_to_edge_y = ey; + dst_annotations[1].spine_to_edge_y = -ey; + dst_annotations += 2; + } + + float distance_along_spine = segment_length; + + uint16_t segment_index = 1; + for (; segment_index < spine_length - 1; segment_index++) { + + const float dx = src_position[1].x - src_position[0].x; + const float dy = src_position[1].y - src_position[0].y; + const float segment_length = sqrtf(dx * dx + dy * dy); + float invlen = segment_length ? 1.0f / segment_length : 0.0f; + const float nx = -dy * invlen; + const float ny = dx * invlen; + + // NOTE: sin(pi / 2 - acos(X) / 2) == sqrt(1 + X) / sqrt(2) + float extent = 0.5 * thickness; + const float dotp = (pnx * nx + pny * ny); + if (dotp < miter_acos_max && dotp > miter_acos_min) { + const float phi = acos(dotp) / 2; + const float theta = PAR_PI / 2 - phi; + extent = PAR_CLAMP(extent / sin(theta), -miter_limit, + miter_limit); + } + + float ex = pnx + nx; + float ey = pny + ny; + const float len = sqrtf(ex * ex + ey * ey); + invlen = len == 0.0 ? 0.0 : (1.0f / len); + ex *= invlen * extent; + ey *= invlen * extent; + + dst_positions[0].x = src_position[0].x + ex; + dst_positions[0].y = src_position[0].y + ey; + dst_positions[1].x = src_position[0].x - ex; + dst_positions[1].y = src_position[0].y - ey; + src_position++; + dst_positions += 2; + + pnx = nx; + pny = ny; + + if (has_annotations) { + dst_annotations[0].u_along_curve = distance_along_spine; + dst_annotations[1].u_along_curve = distance_along_spine; + dst_annotations[0].v_across_curve = 1; + dst_annotations[1].v_across_curve = -1; + dst_annotations[0].spine_to_edge_x = ex; + dst_annotations[1].spine_to_edge_x = -ex; + dst_annotations[0].spine_to_edge_y = ey; + dst_annotations[1].spine_to_edge_y = -ey; + dst_annotations += 2; + } + distance_along_spine += segment_length; + + if (wireframe) { + dst_indices[0] = base_index + (segment_index - 1) * 2; + dst_indices[1] = base_index + (segment_index - 1) * 2 + 1; + dst_indices[2] = base_index + (segment_index - 0) * 2; + dst_indices[3] = base_index + (segment_index - 1) * 2; + + dst_indices[4] = base_index + (segment_index - 0) * 2; + dst_indices[5] = base_index + (segment_index - 1) * 2 + 1; + dst_indices[6] = base_index + (segment_index - 0) * 2 + 1; + dst_indices[7] = base_index + (segment_index - 0) * 2; + dst_indices += 8; + } else { + dst_indices[0] = base_index + (segment_index - 1) * 2; + dst_indices[1] = base_index + (segment_index - 1) * 2 + 1; + dst_indices[2] = base_index + (segment_index - 0) * 2; + + dst_indices[3] = base_index + (segment_index - 0) * 2; + dst_indices[4] = base_index + (segment_index - 1) * 2 + 1; + dst_indices[5] = base_index + (segment_index - 0) * 2 + 1; + dst_indices += 6; + } + } + + ex = pnx * thickness / 2; + ey = pny * thickness / 2; + + if (closed) { + const float dx = first_src_position.x - src_position[0].x; + const float dy = first_src_position.y - src_position[0].y; + segment_length = sqrtf(dx * dx + dy * dy); + float invlen = segment_length ? 1.0f / segment_length : 0.0f; + const float nx = -dy * invlen; + const float ny = dx * invlen; + + // NOTE: sin(pi / 2 - acos(X) / 2) == sqrt(1 + X) / sqrt(2) + float extent = 0.5 * thickness; + const float dotp = (pnx * nx + pny * ny); + if (dotp < miter_acos_max && dotp > miter_acos_min) { + const float phi = acos(dotp) / 2; + const float theta = PAR_PI / 2 - phi; + extent = PAR_CLAMP(extent / sin(theta), -miter_limit, + miter_limit); + } + + ex = pnx + nx; + ey = pny + ny; + const float len = sqrtf(ex * ex + ey * ey); + invlen = len == 0.0 ? 0.0 : (1.0f / len); + ex *= invlen * extent; + ey *= invlen * extent; + } + + dst_positions[0].x = src_position[0].x + ex; + dst_positions[0].y = src_position[0].y + ey; + dst_positions[1].x = src_position[0].x - ex; + dst_positions[1].y = src_position[0].y - ey; + src_position++; + dst_positions += 2; + + pnx = nx; + pny = ny; + + if (has_annotations) { + dst_annotations[0].u_along_curve = distance_along_spine; + dst_annotations[1].u_along_curve = distance_along_spine; + dst_annotations[0].v_across_curve = 1; + dst_annotations[1].v_across_curve = -1; + dst_annotations[0].spine_to_edge_x = ex; + dst_annotations[1].spine_to_edge_x = -ex; + dst_annotations[0].spine_to_edge_y = ey; + dst_annotations[1].spine_to_edge_y = -ey; + dst_annotations += 2; + } + + if (wireframe) { + dst_indices[0] = base_index + (segment_index - 1) * 2; + dst_indices[1] = base_index + (segment_index - 1) * 2 + 1; + dst_indices[2] = base_index + (segment_index - 0) * 2; + dst_indices[3] = base_index + (segment_index - 1) * 2; + + dst_indices[4] = base_index + (segment_index - 0) * 2; + dst_indices[5] = base_index + (segment_index - 1) * 2 + 1; + dst_indices[6] = base_index + (segment_index - 0) * 2 + 1; + dst_indices[7] = base_index + (segment_index - 0) * 2; + dst_indices += 8; + } else { + dst_indices[0] = base_index + (segment_index - 1) * 2; + dst_indices[1] = base_index + (segment_index - 1) * 2 + 1; + dst_indices[2] = base_index + (segment_index - 0) * 2; + + dst_indices[3] = base_index + (segment_index - 0) * 2; + dst_indices[4] = base_index + (segment_index - 1) * 2 + 1; + dst_indices[5] = base_index + (segment_index - 0) * 2 + 1; + dst_indices += 6; + } + + if (closed) { + segment_index++; + distance_along_spine += segment_length; + + dst_positions[0] = first_dst_positions[0]; + dst_positions[1] = first_dst_positions[1]; + dst_positions += 2; + + if (has_annotations) { + dst_annotations[0].u_along_curve = distance_along_spine; + dst_annotations[1].u_along_curve = distance_along_spine; + dst_annotations[0].v_across_curve = 1; + dst_annotations[1].v_across_curve = -1; + dst_annotations[0].spine_to_edge_x = ex; + dst_annotations[1].spine_to_edge_x = -ex; + dst_annotations[0].spine_to_edge_y = ey; + dst_annotations[1].spine_to_edge_y = -ey; + dst_annotations += 2; + } + + if (wireframe) { + dst_indices[0] = base_index + (segment_index - 1) * 2; + dst_indices[1] = base_index + (segment_index - 1) * 2 + 1; + dst_indices[2] = base_index + (segment_index - 0) * 2; + dst_indices[3] = base_index + (segment_index - 1) * 2; + + dst_indices[4] = base_index + (segment_index - 0) * 2; + dst_indices[5] = base_index + (segment_index - 1) * 2 + 1; + dst_indices[6] = base_index + (segment_index - 0) * 2 + 1; + dst_indices[7] = base_index + (segment_index - 0) * 2; + dst_indices += 8; + } else { + dst_indices[0] = base_index + (segment_index - 1) * 2; + dst_indices[1] = base_index + (segment_index - 1) * 2 + 1; + dst_indices[2] = base_index + (segment_index - 0) * 2; + + dst_indices[3] = base_index + (segment_index - 0) * 2; + dst_indices[4] = base_index + (segment_index - 1) * 2 + 1; + dst_indices[5] = base_index + (segment_index - 0) * 2 + 1; + dst_indices += 6; + } + } + + base_index += spine_length * 2 + (closed ? 2 : 0); + + const uint16_t nverts = spine_length + (closed ? 1 : 0); + + if (has_lengths) { + for (uint16_t i = 0; i < nverts; i++) { + dst_lengths[0] = distance_along_spine; + dst_lengths[1] = distance_along_spine; + dst_lengths += 2; + } + } + + // Go back through the curve and fix up the U coordinates. + if (has_annotations) { + const float invlength = 1.0f / distance_along_spine; + const float invcount = 1.0f / spine_length; + switch (context->config.u_mode) { + case PAR_U_MODE_DISTANCE: + break; + case PAR_U_MODE_NORMALIZED_DISTANCE: + dst_annotations -= nverts * 2; + for (uint16_t i = 0; i < nverts; i++) { + dst_annotations[0].u_along_curve *= invlength; + dst_annotations[1].u_along_curve *= invlength; + dst_annotations += 2; + } + break; + case PAR_U_MODE_SEGMENT_INDEX: + dst_annotations -= nverts * 2; + for (uint16_t i = 0; i < nverts; i++) { + dst_annotations[0].u_along_curve = i; + dst_annotations[1].u_along_curve = i; + dst_annotations += 2; + } + break; + case PAR_U_MODE_SEGMENT_FRACTION: + dst_annotations -= nverts * 2; + for (uint16_t i = 0; i < nverts; i++) { + dst_annotations[0].u_along_curve = invcount * i; + dst_annotations[1].u_along_curve = invcount * i; + dst_annotations += 2; + } + break; + } + } + } + + assert(src_position - spines.vertices == spines.num_vertices); + assert(dst_positions - mesh->positions == mesh->num_vertices); + assert(dst_indices - mesh->triangle_indices == + mesh->num_triangles * ind_per_tri); + + if (context->config.flags & PARSL_FLAG_RANDOM_OFFSETS) { + pa_clear(mesh->random_offsets); + pa_add(mesh->random_offsets, mesh->num_vertices); + float* pvertex = mesh->random_offsets; + for (uint16_t spine = 0; spine < spines.num_spines; spine++) { + const uint16_t num_segments = spines.spine_lengths[spine]; + const float r = (float) rand() / RAND_MAX; + for (uint16_t segment = 0; segment < num_segments; segment++) { + *pvertex++ = r; + } + } + } + + return mesh; +} + +// This function is designed to be called in two passes. In the first pass, the +// points pointer is null, so this simply determines the number of required +// points to fulfill the flatness criterion. On the second pass, points is +// non-null it actually writes out the point positions. +static void parsl__tesselate_cubic( + parsl_position* points, uint32_t* num_points, + float x0, float y0, float x1, float y1, + float x2, float y2, float x3, float y3, + float max_flatness_squared, int recursion_depth) +{ + float dx0 = x1-x0; + float dy0 = y1-y0; + float dx1 = x2-x1; + float dy1 = y2-y1; + float dx2 = x3-x2; + float dy2 = y3-y2; + float dx = x3-x0; + float dy = y3-y0; + float longlen = (float) (sqrt(dx0*dx0 + dy0*dy0) + sqrt(dx1*dx1 + dy1*dy1) + + sqrt(dx2*dx2 + dy2*dy2)); + float shortlen = (float) sqrt(dx*dx+dy*dy); + float flatness_squared = longlen*longlen - shortlen*shortlen; + + if (recursion_depth > PARSL_MAX_RECURSION) { + return; + } + + if (flatness_squared > max_flatness_squared) { + const float x01 = (x0+x1) / 2; + const float y01 = (y0+y1) / 2; + const float x12 = (x1+x2) / 2; + const float y12 = (y1+y2) / 2; + const float x23 = (x2+x3) / 2; + const float y23 = (y2+y3) / 2; + const float xa = (x01+x12) / 2; + const float ya = (y01+y12) / 2; + const float xb = (x12+x23) / 2; + const float yb = (y12+y23) / 2; + const float mx = (xa+xb) / 2; + const float my = (ya+yb) / 2; + parsl__tesselate_cubic(points, num_points, x0,y0, x01,y01, xa,ya, mx,my, + max_flatness_squared, recursion_depth + 1); + parsl__tesselate_cubic(points, num_points, mx,my, xb,yb, x23,y23, x3,y3, + max_flatness_squared, recursion_depth + 1); + return; + } + + int n = *num_points; + if (points) { + points[n].x = x3; + points[n].y = y3; + } + *num_points = n + 1; +} + +// This function is designed to be called in two passes. In the first pass, the +// points pointer is null, so this simply determines the number of required +// points to fulfill the flatness criterion. On the second pass, points is +// non-null it actually writes out the point positions. +static void parsl__tesselate_quadratic( + parsl_position* points, uint32_t* num_points, + float x0, float y0, float x1, float y1, float x2, float y2, + float max_flatness_squared, int recursion_depth) +{ + const float mx = (x0 + 2 * x1 + x2) / 4; + const float my = (y0 + 2 * y1 + y2) / 4; + const float dx = (x0 + x2) / 2 - mx; + const float dy = (y0 + y2) / 2 - my; + const float flatness_squared = dx * dx + dy * dy; + + if (recursion_depth++ > PARSL_MAX_RECURSION) { + return; + } + + if (flatness_squared > max_flatness_squared) { + parsl__tesselate_quadratic(points, num_points, x0,y0, + (x0 + x1) / 2.0f, (y0 + y1) / 2.0f, + mx, my, + max_flatness_squared, recursion_depth); + parsl__tesselate_quadratic(points, num_points, mx,my, + (x1 + x2) / 2.0f, (y1 + y2) / 2.0f, + x2, y2, + max_flatness_squared, recursion_depth); + return; + } + + int n = *num_points; + if (points) { + points[n].x = x2; + points[n].y = y2; + } + *num_points = n + 1; +} + +parsl_mesh* parsl_mesh_from_curves_cubic(parsl_context* context, + parsl_spine_list source_spines) +{ + float max_flatness = context->config.curves_max_flatness; + if (max_flatness == 0) { + max_flatness = 1.0f; + } + const float max_flatness_squared = max_flatness * max_flatness; + parsl_spine_list* target_spines = &context->curve_spines; + const bool has_guides = context->config.flags & PARSL_FLAG_CURVE_GUIDES; + + // Determine the number of spines in the target list. + target_spines->num_spines = source_spines.num_spines; + if (has_guides) { + for (uint32_t spine = 0; spine < source_spines.num_spines; spine++) { + uint32_t spine_length = source_spines.spine_lengths[spine]; + uint32_t num_piecewise = 1 + (spine_length - 4) / 2; + target_spines->num_spines += num_piecewise * 2; + } + } + pa_clear(target_spines->spine_lengths); + pa_add(target_spines->spine_lengths, target_spines->num_spines); + + // First pass: determine the number of required vertices. + uint32_t total_required_spine_points = 0; + const parsl_position* psource = source_spines.vertices; + for (uint32_t spine = 0; spine < source_spines.num_spines; spine++) { + + // Source vertices look like: P1 C1 C2 P2 [C2 P2]* + uint32_t spine_length = source_spines.spine_lengths[spine]; + assert(spine_length >= 4); + assert((spine_length % 2) == 0); + uint32_t num_piecewise = 1 + (spine_length - 4) / 2; + + // First piecewise curve. + uint32_t num_required_spine_points = 1; + parsl__tesselate_cubic(NULL, &num_required_spine_points, + psource[0].x, psource[0].y, psource[1].x, psource[1].y, + psource[2].x, psource[2].y, psource[3].x, psource[3].y, + max_flatness_squared, 0); + psource += 4; + + // Subsequent piecewise curves. + for (uint32_t piecewise = 1; piecewise < num_piecewise; piecewise++) { + parsl_position p1 = psource[-1]; + parsl_position previous_c2 = psource[-2]; + parsl_position c1 = parsl__sub(p1, parsl__sub(previous_c2, p1)); + parsl_position c2 = psource[0]; + parsl_position p2 = psource[1]; + parsl__tesselate_cubic(NULL, &num_required_spine_points, + p1.x, p1.y, c1.x, c1.y, c2.x, c2.y, p2.x, p2.y, + max_flatness_squared, 0); + psource += 2; + } + + target_spines->spine_lengths[spine] = num_required_spine_points; + total_required_spine_points += num_required_spine_points; + } + + if (has_guides) { + uint32_t nsrcspines = source_spines.num_spines; + uint16_t* guide_lengths = &target_spines->spine_lengths[nsrcspines]; + for (uint32_t spine = 0; spine < nsrcspines; spine++) { + uint32_t spine_length = source_spines.spine_lengths[spine]; + uint32_t num_piecewise = 1 + (spine_length - 4) / 2; + for (uint32_t pw = 0; pw < num_piecewise; pw++) { + guide_lengths[0] = 2; + guide_lengths[1] = 2; + guide_lengths += 2; + total_required_spine_points += 4; + } + } + } + + // Allocate memory. + target_spines->num_vertices = total_required_spine_points; + pa_clear(target_spines->vertices); + pa_add(target_spines->vertices, total_required_spine_points); + + // Second pass: write out the data. + psource = source_spines.vertices; + parsl_position* ptarget = target_spines->vertices; + for (uint32_t spine = 0; spine < source_spines.num_spines; spine++) { + + // Source vertices look like: P1 C1 C2 P2 [C2 P2]* + uint32_t spine_length = source_spines.spine_lengths[spine]; + uint32_t num_piecewise = 1 + (spine_length - 4) / 2; + + __attribute__((unused)) + parsl_position* target_spine_start = ptarget; + + // First piecewise curve. + ptarget[0].x = psource[0].x; + ptarget[0].y = psource[0].y; + ptarget++; + uint32_t num_written_points = 0; + parsl__tesselate_cubic(ptarget, &num_written_points, + psource[0].x, psource[0].y, psource[1].x, psource[1].y, + psource[2].x, psource[2].y, psource[3].x, psource[3].y, + max_flatness_squared, 0); + psource += 4; + ptarget += num_written_points; + + // Subsequent piecewise curves. + for (uint32_t piecewise = 1; piecewise < num_piecewise; piecewise++) { + parsl_position p1 = psource[-1]; + parsl_position previous_c2 = psource[-2]; + parsl_position c1 = parsl__sub(p1, parsl__sub(previous_c2, p1)); + parsl_position c2 = psource[0]; + parsl_position p2 = psource[1]; + num_written_points = 0; + parsl__tesselate_cubic(ptarget, &num_written_points, + p1.x, p1.y, c1.x, c1.y, c2.x, c2.y, p2.x, p2.y, + max_flatness_squared, 0); + psource += 2; + ptarget += num_written_points; + } + + __attribute__((unused)) + uint32_t num_written = ptarget - target_spine_start; + assert(num_written == (uint32_t) target_spines->spine_lengths[spine]); + } + + // Source vertices look like: P1 C1 C2 P2 [C2 P2]* + if (has_guides) { + uint32_t nsrcspines = source_spines.num_spines; + context->guideline_start = nsrcspines; + psource = source_spines.vertices; + for (uint32_t spine = 0; spine < nsrcspines; spine++) { + uint32_t spine_length = source_spines.spine_lengths[spine]; + uint32_t num_piecewise = 1 + (spine_length - 4) / 2; + *ptarget++ = psource[0]; + *ptarget++ = psource[1]; + *ptarget++ = psource[2]; + *ptarget++ = psource[3]; + psource += 4; + for (uint32_t pw = 1; pw < num_piecewise; pw++) { + parsl_position p1 = psource[-1]; + parsl_position previous_c2 = psource[-2]; + parsl_position c1 = parsl__sub(p1, parsl__sub(previous_c2, p1)); + parsl_position c2 = psource[0]; + parsl_position p2 = psource[1]; + *ptarget++ = p1; + *ptarget++ = c1; + *ptarget++ = p2; + *ptarget++ = c2; + psource += 2; + } + } + } + + assert(ptarget - target_spines->vertices == total_required_spine_points); + parsl_mesh_from_lines(context, context->curve_spines); + context->guideline_start = 0; + return &context->result; +} + +parsl_mesh* parsl_mesh_from_curves_quadratic(parsl_context* context, + parsl_spine_list source_spines) +{ + float max_flatness = context->config.curves_max_flatness; + if (max_flatness == 0) { + max_flatness = 1.0f; + } + const float max_flatness_squared = max_flatness * max_flatness; + parsl_spine_list* target_spines = &context->curve_spines; + const bool has_guides = context->config.flags & PARSL_FLAG_CURVE_GUIDES; + + // Determine the number of spines in the target list. + target_spines->num_spines = source_spines.num_spines; + if (has_guides) { + target_spines->num_spines += source_spines.num_spines; + } + pa_clear(target_spines->spine_lengths); + pa_add(target_spines->spine_lengths, target_spines->num_spines); + + // First pass: determine the number of required vertices. + uint32_t total_required_spine_points = 0; + const parsl_position* psource = source_spines.vertices; + for (uint32_t spine = 0; spine < source_spines.num_spines; spine++) { + + // Source vertices look like: PT C PT [C PT]* + uint32_t spine_length = source_spines.spine_lengths[spine]; + assert(spine_length >= 3); + assert((spine_length % 2) == 1); + uint32_t num_piecewise = 1 + (spine_length - 3) / 2; + + // First piecewise curve. + uint32_t num_required_spine_points = 1; + parsl__tesselate_quadratic(NULL, &num_required_spine_points, + psource[0].x, psource[0].y, psource[1].x, psource[1].y, + psource[2].x, psource[2].y, max_flatness_squared, 0); + psource += 3; + + // Subsequent piecewise curves. + for (uint32_t piecewise = 1; piecewise < num_piecewise; piecewise++) { + parsl_position p1 = psource[-1]; + parsl_position c1 = psource[0]; + parsl_position p2 = psource[1]; + parsl__tesselate_quadratic(NULL, &num_required_spine_points, + p1.x, p1.y, c1.x, c1.y, p2.x, p2.y, max_flatness_squared, 0); + psource += 2; + } + + target_spines->spine_lengths[spine] = num_required_spine_points; + total_required_spine_points += num_required_spine_points; + } + + if (has_guides) { + uint32_t nsrcspines = source_spines.num_spines; + uint16_t* guide_lengths = &target_spines->spine_lengths[nsrcspines]; + for (uint32_t spine = 0; spine < nsrcspines; spine++) { + uint32_t spine_length = source_spines.spine_lengths[spine]; + uint32_t num_piecewise = 1 + (spine_length - 3) / 2; + guide_lengths[0] = 3 + (num_piecewise - 1) * 2; + total_required_spine_points += guide_lengths[0]; + guide_lengths++; + } + } + + // Allocate memory. + target_spines->num_vertices = total_required_spine_points; + pa_clear(target_spines->vertices); + pa_add(target_spines->vertices, total_required_spine_points); + + // Second pass: write out the data. + psource = source_spines.vertices; + parsl_position* ptarget = target_spines->vertices; + for (uint32_t spine = 0; spine < source_spines.num_spines; spine++) { + + // Source vertices look like: PT C PT [C PT]* + uint32_t spine_length = source_spines.spine_lengths[spine]; + uint32_t num_piecewise = 1 + (spine_length - 3) / 2; + + __attribute__((unused)) + parsl_position* target_spine_start = ptarget; + + // First piecewise curve. + ptarget[0].x = psource[0].x; + ptarget[0].y = psource[0].y; + ptarget++; + uint32_t num_written_points = 0; + parsl__tesselate_quadratic(ptarget, &num_written_points, + psource[0].x, psource[0].y, psource[1].x, psource[1].y, + psource[2].x, psource[2].y, max_flatness_squared, 0); + psource += 3; + ptarget += num_written_points; + + // Subsequent piecewise curves. + for (uint32_t piecewise = 1; piecewise < num_piecewise; piecewise++) { + parsl_position p1 = psource[-1]; + parsl_position c1 = psource[0]; + parsl_position p2 = psource[1]; + num_written_points = 0; + parsl__tesselate_quadratic(ptarget, &num_written_points, + p1.x, p1.y, c1.x, c1.y, p2.x, p2.y, max_flatness_squared, 0); + psource += 2; + ptarget += num_written_points; + } + + __attribute__((unused)) + uint32_t num_written = ptarget - target_spine_start; + assert(num_written == (uint32_t) target_spines->spine_lengths[spine]); + } + + // Source vertices look like: PT C PT [C PT]* + if (has_guides) { + uint32_t nsrcspines = source_spines.num_spines; + context->guideline_start = nsrcspines; + psource = source_spines.vertices; + for (uint32_t spine = 0; spine < nsrcspines; spine++) { + uint32_t spine_length = source_spines.spine_lengths[spine]; + uint32_t num_piecewise = 1 + (spine_length - 3) / 2; + *ptarget++ = psource[0]; + *ptarget++ = psource[1]; + *ptarget++ = psource[2]; + psource += 3; + for (uint32_t pw = 1; pw < num_piecewise; pw++) { + *ptarget++ = psource[0]; + *ptarget++ = psource[1]; + psource += 2; + } + } + } + + assert(ptarget - target_spines->vertices == total_required_spine_points); + parsl_mesh_from_lines(context, context->curve_spines); + context->guideline_start = 0; + return &context->result; +} + +static unsigned int par__randhash(unsigned int seed) { + unsigned int i = (seed ^ 12345391u) * 2654435769u; + i ^= (i << 6) ^ (i >> 26); + i *= 2654435769u; + i += (i << 5) ^ (i >> 12); + return i; +} + +static float par__randhashf(unsigned int seed, float a, float b) { + return (b - a) * par__randhash(seed) / (float) UINT_MAX + a; +} + +static parsl_position par__sample_annulus(float radius, parsl_position center, + int* seedptr) { + unsigned int seed = *seedptr; + parsl_position r; + float rscale = 1.0f / UINT_MAX; + while (1) { + r.x = 4 * rscale * par__randhash(seed++) - 2; + r.y = 4 * rscale * par__randhash(seed++) - 2; + float r2 = parsl__dot(r, r); + if (r2 > 1 && r2 <= 4) { + break; + } + } + *seedptr = seed; + return (parsl_position) { + r.x * radius + center.x, + r.y * radius + center.y + }; +} + +#define GRIDF(vec) \ + grid [(int) (vec.x * invcell) + ncols * (int) (vec.y * invcell)] + +#define GRIDI(vec) grid [(int) vec.y * ncols + (int) vec.x] + +static parsl_position* par__generate_pts(float width, float height, + float radius, int seed, parsl_position* result) { + + int maxattempts = 30; + float rscale = 1.0f / UINT_MAX; + parsl_position rvec; + rvec.x = rvec.y = radius; + float r2 = radius * radius; + + // Acceleration grid. + float cellsize = radius / sqrtf(2); + float invcell = 1.0f / cellsize; + int ncols = ceil(width * invcell); + int nrows = ceil(height * invcell); + int maxcol = ncols - 1; + int maxrow = nrows - 1; + int ncells = ncols * nrows; + int* grid = (int*) PAR_MALLOC(int, ncells); + for (int i = 0; i < ncells; i++) { + grid[i] = -1; + } + + // Active list and resulting sample list. + int* actives = (int*) PAR_MALLOC(int, ncells); + int nactives = 0; + + pa_clear(result); + pa_add(result, ncells); + + parsl_position* samples = result; + int nsamples = 0; + + // First sample. + parsl_position pt; + pt.x = width * par__randhash(seed++) * rscale; + pt.y = height * par__randhash(seed++) * rscale; + GRIDF(pt) = actives[nactives++] = nsamples; + samples[nsamples++] = pt; + + while (nsamples < ncells) { + int aindex = PAR_MIN(par__randhashf(seed++, 0, nactives), + nactives - 1.0f); + int sindex = actives[aindex]; + int found = 0; + parsl_position j, minj, maxj, delta; + int attempt; + for (attempt = 0; attempt < maxattempts && !found; attempt++) { + pt = par__sample_annulus(radius, samples[sindex], &seed); + + // Check that this sample is within bounds. + if (pt.x < 0 || pt.x >= width || pt.y < 0 || pt.y >= height) { + continue; + } + + // Test proximity to nearby samples. + maxj = parsl_mul(parsl__add(pt, rvec), invcell); + minj = parsl_mul(parsl__sub(pt, rvec), invcell); + + minj.x = PAR_CLAMP((int) minj.x, 0, maxcol); + minj.y = PAR_CLAMP((int) minj.y, 0, maxrow); + maxj.x = PAR_CLAMP((int) maxj.x, 0, maxcol); + maxj.y = PAR_CLAMP((int) maxj.y, 0, maxrow); + int reject = 0; + for (j.y = minj.y; j.y <= maxj.y && !reject; j.y++) { + for (j.x = minj.x; j.x <= maxj.x && !reject; j.x++) { + int entry = GRIDI(j); + if (entry > -1 && entry != sindex) { + delta = parsl__sub(samples[entry], pt); + if (parsl__dot(delta, delta) < r2) { + reject = 1; + } + } + } + } + if (reject) { + continue; + } + found = 1; + } + if (found) { + GRIDF(pt) = actives[nactives++] = nsamples; + samples[nsamples++] = pt; + } else { + if (--nactives <= 0) { + break; + } + actives[aindex] = actives[nactives]; + } + } + + pa___n(result) = nsamples * 2; + + PAR_FREE(grid); + PAR_FREE(actives); + return result; +} + +#undef GRIDF +#undef GRIDI + +parsl_mesh* parsl_mesh_from_streamlines(parsl_context* context, + parsl_advection_callback advect, uint32_t first_tick, uint32_t num_ticks, + void* userdata) +{ + const int seed = 42; + const parsl_viewport vp = context->config.streamlines_seed_viewport; + const float radius = context->config.streamlines_seed_spacing; + float width = vp.right - vp.left; + float height = vp.bottom - vp.top; + + if (context->streamline_seeds == NULL) { + context->streamline_seeds = par__generate_pts(width, height, radius, + seed, context->streamline_seeds); + uint32_t num_points = pa_count(context->streamline_seeds); + for (uint32_t p = 0; p < num_points; ++p) { + context->streamline_seeds[p].x += vp.left; + context->streamline_seeds[p].y += vp.top; + } + } + + uint32_t num_points = pa_count(context->streamline_seeds); + pa_clear(context->streamline_points); + pa_add(context->streamline_points, num_points); + + parsl_position* points = context->streamline_points; + memcpy(points, context->streamline_seeds, + num_points * sizeof(parsl_position)); + + context->streamline_spines.num_spines = num_points; + pa_clear(context->streamline_spines.spine_lengths); + pa_add(context->streamline_spines.spine_lengths, num_points); + uint16_t* lengths = context->streamline_spines.spine_lengths; + for (uint32_t i = 0; i < num_points; i++) { + lengths[i] = num_ticks; + } + + context->streamline_spines.num_vertices = num_points * num_ticks; + pa_clear(context->streamline_spines.vertices); + pa_add(context->streamline_spines.vertices, num_points * num_ticks); + parsl_position* vertices = context->streamline_spines.vertices; + + for (uint32_t tick = 0; tick < first_tick; tick++) { + for (uint32_t i = 0; i < num_points; i++) { + advect(&points[i], userdata); + } + } + + parsl_position* pvertices = vertices; + for (uint32_t i = 0; i < num_points; i++) { + for (uint32_t tick = 0; tick < num_ticks; ++tick) { + advect(&points[i], userdata); + *pvertices++ = points[i]; + } + } + + parsl_mesh_from_lines(context, context->streamline_spines); + return &context->result; +} + +#endif // PAR_STREAMLINES_IMPLEMENTATION +#endif // PAR_STREAMLINES_H + +// par_streamlines is distributed under the MIT license: +// +// Copyright (c) 2019 Philip Rideout +// +// 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. diff --git a/source/engine/thirdparty/par/par_string_blocks.h b/source/engine/thirdparty/par/par_string_blocks.h new file mode 100644 index 0000000..52a4b6d --- /dev/null +++ b/source/engine/thirdparty/par/par_string_blocks.h @@ -0,0 +1,468 @@ +// STRING_BLOCKS :: https://github.com/prideout/par +// String extraction and concatenation, especially useful for snippets of GLSL or Lua. +// +// This little library extracts blocks of text from a memory blob or file, then lets you retrieve +// them by name. It also makes it easy to glue together a sequence of blocks. +// +// Each block of text is assigned a name using a prefix line that starts with three dash characters, +// such as "--- the_name" or "--- my.block". +// +// For example, suppose you have a file called "shaders.glsl" that looks like this: +// +// --- my_shader +// void main() { ... } +// --- common +// uniform vec4 resolution; +// uniform vec4 color; +// +// You can use this library to read in the file and extract one of the blocks: +// +// parsb_context* blocks = parsb_create_context((parsb_options){}); +// parsb_add_blocks_from_file(blocks, "shaders.glsl"); +// const char* single = parsb_get_blocks(blocks, "my_shader"); +// +// You can also concatenate blocks using a space-delimited list of names: +// +// const char* concatenated = parsb_get_blocks(blocks, "common my_shader"); +// +// You can also add or replace blocks on the fly: +// +// parsb_add_block(blocks, "prefix", "#version 330\n"); +// const char* concatenated = parsb_get_blocks(blocks, "prefix common my_shader"); +// +// The "blocks" context in the above examples holds a cache of generated strings, so be sure to +// destroy it when you're done: +// +// parsb_destroy_context(blocks); +// +// Distributed under the MIT License, see bottom of file. + +#ifndef PAR_STRING_BLOCKS_H +#define PAR_STRING_BLOCKS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +// OPTIONS +// ------- +// line_directives ... adds #line annotations into concatenated strings for better error messages. +typedef struct parsb_options { + bool line_directives; +} parsb_options; + +// CONTEXT CREATION AND DESTRUCTION +// -------------------------------- +// A context is an opaque handle to a memory arena. All generated strings are owned by the context +// and freed when the context is destroyed. +typedef struct parsb_context_s parsb_context; +parsb_context* parsb_create_context(parsb_options); +void parsb_destroy_context(parsb_context*); + +// ADDING AND REPLACING BLOCKS +// --------------------------- +// When using the plural form (add_blocks), the submitted buffer may contain multiple blocks, each +// with a name defined by its closest preceding triple-dash line. If a block with the specified name +// already exists, it gets replaced. +// +// The singular form (add_block) adds a single block whose name is explicitly specified as an +// argument. Again, if a block with the given name already exists, it gets replaced. +// +// These functions do not retain the passed-in strings so clients can free them after pushing them. +void parsb_add_blocks(parsb_context*, const char* buffer, int buffer_size); +void parsb_add_block(parsb_context*, const char* name, const char* body); +#ifndef PARSB_NO_STDIO +void parsb_add_blocks_from_file(parsb_context* context, const char* filename); +#endif + +// EXTRACTING AND CONCATENATING BLOCKS +// ----------------------------------- +// The block_names string is a space-separated list of block names that are being requested. The +// returned string is owned by the context, so please make a copy if you need it to outlive the +// context. If the returned string is null, then one or more of the block names could not be found. +const char* parsb_get_blocks(parsb_context*, const char* block_names); + +// GETTING BLOCKS BY INDEX +// ----------------------- +int parsb_get_num_blocks(const parsb_context*); +void parsb_get_block(const parsb_context*, int index, const char** name, const char** body); + +// SAVING THE BLOCK LIST +// --------------------- +// These functions export the entire "database" of atomic blocks. +typedef void (*parsb_write_line)(const char* line, void* userdata); +void parsb_write_blocks(parsb_context*, parsb_write_line writefn, void* user); +#ifndef PARSB_NO_STDIO +void parsb_write_blocks_to_file(parsb_context*, const char* filename); +#endif + +#ifndef PARSB_MAX_NUM_BLOCKS +#define PARSB_MAX_NUM_BLOCKS 128 +#endif + +#ifndef PARSB_MAX_NAME_LENGTH +#define PARSB_MAX_NAME_LENGTH 256 +#endif + +#ifndef PARSB_MAX_LINE_LENGTH +#define PARSB_MAX_LINE_LENGTH 256 +#endif + +#ifdef __cplusplus +} +#endif + +// ----------------------------------------------------------------------------- +// END PUBLIC API +// ----------------------------------------------------------------------------- + +#ifdef PAR_STRING_BLOCKS_IMPLEMENTATION + +#include +#include +#include +#include + +#ifndef PARSB_NO_STDIO +#include +#endif + +#define PARSB_MIN(a, b) (a > b ? b : a) + +typedef struct { + int count; + char* values[PARSB_MAX_NUM_BLOCKS]; + char* names[PARSB_MAX_NUM_BLOCKS]; +} parsb__list; + +struct parsb_context_s { + parsb_options options; + parsb__list blocks; + parsb__list results; +}; + +static char* parsb__add_or_replace(parsb_context*, const char* id, const char* value, + int value_size, int line_number); +static char* parsb__list_add(parsb__list*, const char* id, const char* value, int value_size, + int line_number); +static char* parsb__list_get(parsb__list*, const char* id, int idlen); +static void parsb__list_free(parsb__list* ); + +parsb_context* parsb_create_context(parsb_options options) { + parsb_context* context = (parsb_context*) calloc(1, sizeof(parsb_context)); + context->options = options; + return context; +} + +void parsb_destroy_context(parsb_context* context) { + parsb__list_free(&context->blocks); + parsb__list_free(&context->results); + free(context); +} + +void parsb_add_blocks(parsb_context* context, const char* blob, int buffer_size) { + const char* previous_block = 0; + char previous_name[PARSB_MAX_NAME_LENGTH]; + int line_number = 0; + int block_line_number = 0; + for (int i = 0; i < buffer_size - 4; i++) { + if (blob[i] != '-' || blob[i + 1] != '-' || blob[i + 2] != '-' || blob[i + 3] != ' ') { + if (blob[i] == '\n') { + line_number++; + } + continue; + } + if (previous_block) { + parsb__add_or_replace(context, previous_name, previous_block, + i - (previous_block - blob), block_line_number); + } + i += 4; + const char* name = blob + i; + const char* block_start = 0; + for (; i < buffer_size; i++) { + if (blob[i] == '\n') { + line_number++; + int name_length = i - (name - blob); + memcpy(previous_name, name, name_length); + block_line_number = line_number + 2; + previous_name[name_length] = 0; + block_start = blob + i + 1; + break; + } + if (isspace(blob[i])) { + int name_length = i - (name - blob); + memcpy(previous_name, name, name_length); + block_line_number = line_number + 2; + previous_name[name_length] = 0; + for (i++; i < buffer_size; i++) { + if (blob[i] == '\n') { + line_number++; + block_start = blob + i + 1; + break; + } + } + break; + } + } + if (block_start == 0) { + return; + } + previous_block = block_start; + } + if (previous_block) { + parsb__add_or_replace(context, previous_name, previous_block, + buffer_size - (previous_block - blob), block_line_number); + } +} + +void parsb_add_block(parsb_context* context, const char* name, const char* body) { + char* dup = strdup(body); + parsb__add_or_replace(context, name, dup, 1 + strlen(body), 0); +} + +const char* parsb_get_blocks(parsb_context* context, const char* block_names) { + int len = strlen(block_names); + const char* name = block_names; + int name_length = 0; + int result_length = 0; + + // First pass determines the amount of required memory. + int num_names = 0; + for (int i = 0; i < len; i++) { + char c = block_names[i]; + if (isspace(c) || !c) { + const char* block = parsb__list_get(&context->blocks, name, name_length); + if (block) { + result_length += strlen(block); + num_names++; + } else { + return NULL; + } + name_length = 0; + name = block_names + i + 1; + } else { + name_length++; + } + } + const char* block = parsb__list_get(&context->blocks, name, name_length); + if (block) { + result_length += strlen(block); + num_names++; + } + + // If no concatenation is required, return early. + if (num_names == 1) { + return parsb__list_get(&context->blocks, name, name_length); + } + + // Allocate storage for the result. + char* result = parsb__list_add(&context->results, 0, 0, result_length, 0); + char* cursor = result; + + // Second pass populates the result. + name = block_names; + name_length = 0; + for (int i = 0; i < len; i++) { + char c = block_names[i]; + if (isspace(c) || !c) { + const char* block = parsb__list_get(&context->blocks, name, name_length); + if (block) { + memcpy(cursor, block, strlen(block)); + cursor += strlen(block); + } + name_length = 0; + name = block_names + i + 1; + } else { + name_length++; + } + } + block = parsb__list_get(&context->blocks, name, name_length); + if (block) { + memcpy(cursor, block, strlen(block)); + cursor += strlen(block); + } + return result; +} + +int parsb_get_num_blocks(const parsb_context* context) { + return context->blocks.count; +} + +void parsb_get_block(const parsb_context* context, int index, const char** name, + const char** body) { + if (index < 0 || index >= context->blocks.count) { + return; + } + *name = context->blocks.names[index]; + *body = context->blocks.values[index]; +} + +void parsb_write_blocks(parsb_context* context, parsb_write_line writefn, void* userdata) { + char line[PARSB_MAX_LINE_LENGTH + 1] = {0}; + for (int i = 0; i < context->blocks.count; i++) { + + sprintf(line, "--- %s", context->blocks.names[i]); + writefn(line, userdata); + + const char* cursor = context->blocks.values[i]; + const int blocklen = strlen(cursor); + int previous = 0; + for (int i = 0; i < blocklen; i++) { + if (cursor[i] == '\n') { + int line_length = PARSB_MIN(i - previous, PARSB_MAX_LINE_LENGTH); + memcpy(line, cursor + previous, line_length); + line[line_length] = 0; + writefn(line, userdata); + previous = i + 1; + } else if (i == blocklen - 1) { + int line_length = PARSB_MIN(1 + i - previous, PARSB_MAX_LINE_LENGTH); + memcpy(line, cursor + previous, line_length); + line[line_length] = 0; + writefn(line, userdata); + previous = i + 1; + } + } + } +} + +static char* parsb__add_or_replace(parsb_context* context, const char* id, const char* value, + int value_size, int line_number) { + line_number = context->options.line_directives ? line_number : 0; + const size_t idlen = strlen(id); + for (int i = 0; i < context->blocks.count; i++) { + if (strncmp(id, context->blocks.names[i], idlen) == 0) { + free(context->blocks.values[i]); + context->blocks.values[i] = strndup(value, value_size); + return context->blocks.values[i]; + } + } + return parsb__list_add(&context->blocks, id, value, value_size, line_number); +} + +static char* parsb__list_add(parsb__list* list, const char* name, + const char* value, int value_size, int line_number) { + if (value_size == 0) { + return NULL; + } + + if (list->count == PARSB_MAX_NUM_BLOCKS) { + assert(false && "Please increase PARSB_MAX_NUM_BLOCKS."); + return NULL; + } + + char* storage; + char* cursor; + + if (line_number > 0) { + char line_directive[16] = {0}; + int prefix_length = snprintf(line_directive, 16, "\n#line %d\n", line_number); + storage = (char*) calloc(1, prefix_length + value_size + 1); + memcpy(storage, line_directive, prefix_length); + cursor = storage + prefix_length; + } else { + storage = cursor = (char*) calloc(1, value_size + 1); + } + + if (value) { + memcpy(cursor, value, value_size); + } + + #if PARSB_ENABLE_TRIM + value_size--; + while (isspace(cursor[value_size])) { + cursor[value_size] = 0; + value_size--; + if (value_size == 0) { + break; + } + } + #endif + + if (name) { + list->names[list->count] = strdup(name); + } else { + list->names[list->count] = 0; + } + + list->values[list->count] = storage; + list->count++; + return storage; +} + +static char* parsb__list_get(parsb__list* list, const char* name, int idlen) { + for (int i = 0; i < list->count; i++) { + if (strncmp(name, list->names[i], idlen) == 0) { + return list->values[i]; + } + } + return NULL; +} + +static void parsb__list_free(parsb__list* list) { + for (int i = 0; i < list->count; i++) { + free(list->names[i]); + free(list->values[i]); + } + list->count = 0; +} + +#ifndef PARSB_NO_STDIO + +void parsb_add_blocks_from_file(parsb_context* context, const char* filename) { + FILE* f = fopen(filename, "r"); + if (!f) { + fprintf(stderr, "Unable to open %s\n", filename); + return; + } + fseek(f, 0, SEEK_END); + int length = ftell(f); + fseek(f, 0, SEEK_SET); + char* buffer = (char*) malloc(length); + fread(buffer, 1, length, f); + fclose(f); + parsb_add_blocks(context, buffer, length); + free(buffer); +} + +static void writefn(const char* line, void* userdata) { + fprintf((FILE*) userdata, "%s\n", line); +} + +void parsb_write_blocks_to_file(parsb_context* context, const char* filename) { + FILE* f = fopen(filename, "w"); + if (!f) { + fprintf(stderr, "Unable to open %s\n", filename); + return; + } + parsb_write_blocks(context, writefn, f); + fclose(f); +} + +#endif + +#endif // PAR_STRING_BLOCKS_IMPLEMENTATION +#endif // PAR_STRING_BLOCKS_H + +// par_string_blocks is distributed under the MIT license: +// +// Copyright (c) 2020 Philip Rideout +// +// 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. diff --git a/source/engine/thirdparty/sokol/sokol_app.h b/source/engine/thirdparty/sokol/sokol_app.h new file mode 100644 index 0000000..602df0d --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_app.h @@ -0,0 +1,11473 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_APP_IMPL) +#define SOKOL_APP_IMPL +#endif +#ifndef SOKOL_APP_INCLUDED +/* + sokol_app.h -- cross-platform application wrapper + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_APP_IMPL + before you include this file in *one* C or C++ file to create the + implementation. + + In the same place define one of the following to select the 3D-API + which should be initialized by sokol_app.h (this must also match + the backend selected for sokol_gfx.h if both are used in the same + project): + + #define SOKOL_GLCORE33 + #define SOKOL_GLES3 + #define SOKOL_D3D11 + #define SOKOL_METAL + #define SOKOL_WGPU + + Optionally provide the following defines with your own implementations: + + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_UNREACHABLE() - a guard macro for unreachable code (default: assert(false)) + SOKOL_WIN32_FORCE_MAIN - define this on Win32 to use a main() entry point instead of WinMain + SOKOL_NO_ENTRY - define this if sokol_app.h shouldn't "hijack" the main() function + SOKOL_APP_API_DECL - public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_APP_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + + Optionally define the following to force debug checks and validations + even in release mode: + + SOKOL_DEBUG - by default this is defined if _DEBUG is defined + + If sokol_app.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_APP_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + On Linux, SOKOL_GLCORE33 can use either GLX or EGL. + GLX is default, set SOKOL_FORCE_EGL to override. + + For example code, see https://github.com/floooh/sokol-samples/tree/master/sapp + + Portions of the Windows and Linux GL initialization, event-, icon- etc... code + have been taken from GLFW (http://www.glfw.org/) + + iOS onscreen keyboard support 'inspired' by libgdx. + + Link with the following system libraries: + + - on macOS with Metal: Cocoa, QuartzCore, Metal, MetalKit + - on macOS with GL: Cocoa, QuartzCore, OpenGL + - on iOS with Metal: Foundation, UIKit, Metal, MetalKit + - on iOS with GL: Foundation, UIKit, OpenGLES, GLKit + - on Linux with EGL: X11, Xi, Xcursor, EGL, GL (or GLESv2), dl, pthread, m(?) + - on Linux with GLX: X11, Xi, Xcursor, GL, dl, pthread, m(?) + - on Android: GLESv3, EGL, log, android + - on Windows with the MSVC or Clang toolchains: no action needed, libs are defined in-source via pragma-comment-lib + - on Windows with MINGW/MSYS2 gcc: compile with '-mwin32' so that _WIN32 is defined + - link with the following libs: -lkernel32 -luser32 -lshell32 + - additionally with the GL backend: -lgdi32 + - additionally with the D3D11 backend: -ld3d11 -ldxgi + + On Linux, you also need to use the -pthread compiler and linker option, otherwise weird + things will happen, see here for details: https://github.com/floooh/sokol/issues/376 + + On macOS and iOS, the implementation must be compiled as Objective-C. + + FEATURE OVERVIEW + ================ + sokol_app.h provides a minimalistic cross-platform API which + implements the 'application-wrapper' parts of a 3D application: + + - a common application entry function + - creates a window and 3D-API context/device with a 'default framebuffer' + - makes the rendered frame visible + - provides keyboard-, mouse- and low-level touch-events + - platforms: MacOS, iOS, HTML5, Win32, Linux/RaspberryPi, Android + - 3D-APIs: Metal, D3D11, GL3.2, GLES3, WebGL, WebGL2 + + FEATURE/PLATFORM MATRIX + ======================= + | Windows | macOS | Linux | iOS | Android | HTML5 + --------------------+---------+-------+-------+-------+---------+-------- + gl 3.x | YES | YES | YES | --- | --- | --- + gles3/webgl2 | --- | --- | YES(2)| YES | YES | YES + metal | --- | YES | --- | YES | --- | --- + d3d11 | YES | --- | --- | --- | --- | --- + KEY_DOWN | YES | YES | YES | SOME | TODO | YES + KEY_UP | YES | YES | YES | SOME | TODO | YES + CHAR | YES | YES | YES | YES | TODO | YES + MOUSE_DOWN | YES | YES | YES | --- | --- | YES + MOUSE_UP | YES | YES | YES | --- | --- | YES + MOUSE_SCROLL | YES | YES | YES | --- | --- | YES + MOUSE_MOVE | YES | YES | YES | --- | --- | YES + MOUSE_ENTER | YES | YES | YES | --- | --- | YES + MOUSE_LEAVE | YES | YES | YES | --- | --- | YES + TOUCHES_BEGAN | --- | --- | --- | YES | YES | YES + TOUCHES_MOVED | --- | --- | --- | YES | YES | YES + TOUCHES_ENDED | --- | --- | --- | YES | YES | YES + TOUCHES_CANCELLED | --- | --- | --- | YES | YES | YES + RESIZED | YES | YES | YES | YES | YES | YES + ICONIFIED | YES | YES | YES | --- | --- | --- + RESTORED | YES | YES | YES | --- | --- | --- + FOCUSED | YES | YES | YES | --- | --- | YES + UNFOCUSED | YES | YES | YES | --- | --- | YES + SUSPENDED | --- | --- | --- | YES | YES | TODO + RESUMED | --- | --- | --- | YES | YES | TODO + QUIT_REQUESTED | YES | YES | YES | --- | --- | YES + IME | TODO | TODO? | TODO | ??? | TODO | ??? + key repeat flag | YES | YES | YES | --- | --- | YES + windowed | YES | YES | YES | --- | --- | YES + fullscreen | YES | YES | YES | YES | YES | --- + mouse hide | YES | YES | YES | --- | --- | YES + mouse lock | YES | YES | YES | --- | --- | YES + set cursor type | YES | YES | YES | --- | --- | YES + screen keyboard | --- | --- | --- | YES | TODO | YES + swap interval | YES | YES | YES | YES | TODO | YES + high-dpi | YES | YES | TODO | YES | YES | YES + clipboard | YES | YES | TODO | --- | --- | YES + MSAA | YES | YES | YES | YES | YES | YES + drag'n'drop | YES | YES | YES | --- | --- | YES + window icon | YES | YES(1)| YES | --- | --- | YES + + (1) macOS has no regular window icons, instead the dock icon is changed + (2) supported with EGL only (not GLX) + + STEP BY STEP + ============ + --- Add a sokol_main() function to your code which returns a sapp_desc structure + with initialization parameters and callback function pointers. This + function is called very early, usually at the start of the + platform's entry function (e.g. main or WinMain). You should do as + little as possible here, since the rest of your code might be called + from another thread (this depends on the platform): + + sapp_desc sokol_main(int argc, char* argv[]) { + return (sapp_desc) { + .width = 640, + .height = 480, + .init_cb = my_init_func, + .frame_cb = my_frame_func, + .cleanup_cb = my_cleanup_func, + .event_cb = my_event_func, + ... + }; + } + + To get any logging output in case of errors you need to provide a log + callback. The easiest way is via sokol_log.h: + + #include "sokol_log.h" + + sapp_desc sokol_main(int argc, char* argv[]) { + return (sapp_desc) { + ... + .logger.func = slog_func, + }; + } + + There are many more setup parameters, but these are the most important. + For a complete list search for the sapp_desc structure declaration + below. + + DO NOT call any sokol-app function from inside sokol_main(), since + sokol-app will not be initialized at this point. + + The .width and .height parameters are the preferred size of the 3D + rendering canvas. The actual size may differ from this depending on + platform and other circumstances. Also the canvas size may change at + any time (for instance when the user resizes the application window, + or rotates the mobile device). You can just keep .width and .height + zero-initialized to open a default-sized window (what "default-size" + exactly means is platform-specific, but usually it's a size that covers + most of, but not all, of the display). + + All provided function callbacks will be called from the same thread, + but this may be different from the thread where sokol_main() was called. + + .init_cb (void (*)(void)) + This function is called once after the application window, + 3D rendering context and swap chain have been created. The + function takes no arguments and has no return value. + .frame_cb (void (*)(void)) + This is the per-frame callback, which is usually called 60 + times per second. This is where your application would update + most of its state and perform all rendering. + .cleanup_cb (void (*)(void)) + The cleanup callback is called once right before the application + quits. + .event_cb (void (*)(const sapp_event* event)) + The event callback is mainly for input handling, but is also + used to communicate other types of events to the application. Keep the + event_cb struct member zero-initialized if your application doesn't require + event handling. + + As you can see, those 'standard callbacks' don't have a user_data + argument, so any data that needs to be preserved between callbacks + must live in global variables. If keeping state in global variables + is not an option, there's an alternative set of callbacks with + an additional user_data pointer argument: + + .user_data (void*) + The user-data argument for the callbacks below + .init_userdata_cb (void (*)(void* user_data)) + .frame_userdata_cb (void (*)(void* user_data)) + .cleanup_userdata_cb (void (*)(void* user_data)) + .event_userdata_cb (void(*)(const sapp_event* event, void* user_data)) + + The function sapp_userdata() can be used to query the user_data + pointer provided in the sapp_desc struct. + + You can also call sapp_query_desc() to get a copy of the + original sapp_desc structure. + + NOTE that there's also an alternative compile mode where sokol_app.h + doesn't "hijack" the main() function. Search below for SOKOL_NO_ENTRY. + + --- Implement the initialization callback function (init_cb), this is called + once after the rendering surface, 3D API and swap chain have been + initialized by sokol_app. All sokol-app functions can be called + from inside the initialization callback, the most useful functions + at this point are: + + int sapp_width(void) + int sapp_height(void) + Returns the current width and height of the default framebuffer in pixels, + this may change from one frame to the next, and it may be different + from the initial size provided in the sapp_desc struct. + + float sapp_widthf(void) + float sapp_heightf(void) + These are alternatives to sapp_width() and sapp_height() which return + the default framebuffer size as float values instead of integer. This + may help to prevent casting back and forth between int and float + in more strongly typed languages than C and C++. + + double sapp_frame_duration(void) + Returns the frame duration in seconds averaged over a number of + frames to smooth out any jittering spikes. + + int sapp_color_format(void) + int sapp_depth_format(void) + The color and depth-stencil pixelformats of the default framebuffer, + as integer values which are compatible with sokol-gfx's + sg_pixel_format enum (so that they can be plugged directly in places + where sg_pixel_format is expected). Possible values are: + + 23 == SG_PIXELFORMAT_RGBA8 + 28 == SG_PIXELFORMAT_BGRA8 + 42 == SG_PIXELFORMAT_DEPTH + 43 == SG_PIXELFORMAT_DEPTH_STENCIL + + int sapp_sample_count(void) + Return the MSAA sample count of the default framebuffer. + + const void* sapp_metal_get_device(void) + const void* sapp_metal_get_renderpass_descriptor(void) + const void* sapp_metal_get_drawable(void) + If the Metal backend has been selected, these functions return pointers + to various Metal API objects required for rendering, otherwise + they return a null pointer. These void pointers are actually + Objective-C ids converted with a (ARC) __bridge cast so that + the ids can be tunnel through C code. Also note that the returned + pointers to the renderpass-descriptor and drawable may change from one + frame to the next, only the Metal device object is guaranteed to + stay the same. + + const void* sapp_macos_get_window(void) + On macOS, get the NSWindow object pointer, otherwise a null pointer. + Before being used as Objective-C object, the void* must be converted + back with a (ARC) __bridge cast. + + const void* sapp_ios_get_window(void) + On iOS, get the UIWindow object pointer, otherwise a null pointer. + Before being used as Objective-C object, the void* must be converted + back with a (ARC) __bridge cast. + + const void* sapp_win32_get_hwnd(void) + On Windows, get the window's HWND, otherwise a null pointer. The + HWND has been cast to a void pointer in order to be tunneled + through code which doesn't include Windows.h. + + const void* sapp_d3d11_get_device(void) + const void* sapp_d3d11_get_device_context(void) + const void* sapp_d3d11_get_render_target_view(void) + const void* sapp_d3d11_get_depth_stencil_view(void) + Similar to the sapp_metal_* functions, the sapp_d3d11_* functions + return pointers to D3D11 API objects required for rendering, + only if the D3D11 backend has been selected. Otherwise they + return a null pointer. Note that the returned pointers to the + render-target-view and depth-stencil-view may change from one + frame to the next! + + const void* sapp_wgpu_get_device(void) + const void* sapp_wgpu_get_render_view(void) + const void* sapp_wgpu_get_resolve_view(void) + const void* sapp_wgpu_get_depth_stencil_view(void) + These are the WebGPU-specific functions to get the WebGPU + objects and values required for rendering. If sokol_app.h + is not compiled with SOKOL_WGPU, these functions return null. + + const void* sapp_android_get_native_activity(void); + On Android, get the native activity ANativeActivity pointer, otherwise + a null pointer. + + --- Implement the frame-callback function, this function will be called + on the same thread as the init callback, but might be on a different + thread than the sokol_main() function. Note that the size of + the rendering framebuffer might have changed since the frame callback + was called last. Call the functions sapp_width() and sapp_height() + each frame to get the current size. + + --- Optionally implement the event-callback to handle input events. + sokol-app provides the following type of input events: + - a 'virtual key' was pressed down or released + - a single text character was entered (provided as UTF-32 code point) + - a mouse button was pressed down or released (left, right, middle) + - mouse-wheel or 2D scrolling events + - the mouse was moved + - the mouse has entered or left the application window boundaries + - low-level, portable multi-touch events (began, moved, ended, cancelled) + - the application window was resized, iconified or restored + - the application was suspended or restored (on mobile platforms) + - the user or application code has asked to quit the application + - a string was pasted to the system clipboard + - one or more files have been dropped onto the application window + + To explicitly 'consume' an event and prevent that the event is + forwarded for further handling to the operating system, call + sapp_consume_event() from inside the event handler (NOTE that + this behaviour is currently only implemented for some HTML5 + events, support for other platforms and event types will + be added as needed, please open a github ticket and/or provide + a PR if needed). + + NOTE: Do *not* call any 3D API rendering functions in the event + callback function, since the 3D API context may not be active when the + event callback is called (it may work on some platforms and 3D APIs, + but not others, and the exact behaviour may change between + sokol-app versions). + + --- Implement the cleanup-callback function, this is called once + after the user quits the application (see the section + "APPLICATION QUIT" for detailed information on quitting + behaviour, and how to intercept a pending quit - for instance to show a + "Really Quit?" dialog box). Note that the cleanup-callback isn't + guaranteed to be called on the web and mobile platforms. + + MOUSE CURSOR TYPE AND VISIBILITY + ================================ + You can show and hide the mouse cursor with + + void sapp_show_mouse(bool show) + + And to get the current shown status: + + bool sapp_mouse_shown(void) + + NOTE that hiding the mouse cursor is different and independent from + the MOUSE/POINTER LOCK feature which will also hide the mouse pointer when + active (MOUSE LOCK is described below). + + To change the mouse cursor to one of several predefined types, call + the function: + + void sapp_set_mouse_cursor(sapp_mouse_cursor cursor) + + Setting the default mouse cursor SAPP_MOUSECURSOR_DEFAULT will restore + the standard look. + + To get the currently active mouse cursor type, call: + + sapp_mouse_cursor sapp_get_mouse_cursor(void) + + MOUSE LOCK (AKA POINTER LOCK, AKA MOUSE CAPTURE) + ================================================ + In normal mouse mode, no mouse movement events are reported when the + mouse leaves the windows client area or hits the screen border (whether + it's one or the other depends on the platform), and the mouse move events + (SAPP_EVENTTYPE_MOUSE_MOVE) contain absolute mouse positions in + framebuffer pixels in the sapp_event items mouse_x and mouse_y, and + relative movement in framebuffer pixels in the sapp_event items mouse_dx + and mouse_dy. + + To get continuous mouse movement (also when the mouse leaves the window + client area or hits the screen border), activate mouse-lock mode + by calling: + + sapp_lock_mouse(true) + + When mouse lock is activated, the mouse pointer is hidden, the + reported absolute mouse position (sapp_event.mouse_x/y) appears + frozen, and the relative mouse movement in sapp_event.mouse_dx/dy + no longer has a direct relation to framebuffer pixels but instead + uses "raw mouse input" (what "raw mouse input" exactly means also + differs by platform). + + To deactivate mouse lock and return to normal mouse mode, call + + sapp_lock_mouse(false) + + And finally, to check if mouse lock is currently active, call + + if (sapp_mouse_locked()) { ... } + + On native platforms, the sapp_lock_mouse() and sapp_mouse_locked() + functions work as expected (mouse lock is activated or deactivated + immediately when sapp_lock_mouse() is called, and sapp_mouse_locked() + also immediately returns the new state after sapp_lock_mouse() + is called. + + On the web platform, sapp_lock_mouse() and sapp_mouse_locked() behave + differently, as dictated by the limitations of the HTML5 Pointer Lock API: + + - sapp_lock_mouse(true) can be called at any time, but it will + only take effect in a 'short-lived input event handler of a specific + type', meaning when one of the following events happens: + - SAPP_EVENTTYPE_MOUSE_DOWN + - SAPP_EVENTTYPE_MOUSE_UP + - SAPP_EVENTTYPE_MOUSE_SCROLL + - SAPP_EVENTTYPE_KEY_UP + - SAPP_EVENTTYPE_KEY_DOWN + - The mouse lock/unlock action on the web platform is asynchronous, + this means that sapp_mouse_locked() won't immediately return + the new status after calling sapp_lock_mouse(), instead the + reported status will only change when the pointer lock has actually + been activated or deactivated in the browser. + - On the web, mouse lock can be deactivated by the user at any time + by pressing the Esc key. When this happens, sokol_app.h behaves + the same as if sapp_lock_mouse(false) is called. + + For things like camera manipulation it's most straightforward to lock + and unlock the mouse right from the sokol_app.h event handler, for + instance the following code enters and leaves mouse lock when the + left mouse button is pressed and released, and then uses the relative + movement information to manipulate a camera (taken from the + cgltf-sapp.c sample in the sokol-samples repository + at https://github.com/floooh/sokol-samples): + + static void input(const sapp_event* ev) { + switch (ev->type) { + case SAPP_EVENTTYPE_MOUSE_DOWN: + if (ev->mouse_button == SAPP_MOUSEBUTTON_LEFT) { + sapp_lock_mouse(true); + } + break; + + case SAPP_EVENTTYPE_MOUSE_UP: + if (ev->mouse_button == SAPP_MOUSEBUTTON_LEFT) { + sapp_lock_mouse(false); + } + break; + + case SAPP_EVENTTYPE_MOUSE_MOVE: + if (sapp_mouse_locked()) { + cam_orbit(&state.camera, ev->mouse_dx * 0.25f, ev->mouse_dy * 0.25f); + } + break; + + default: + break; + } + } + + CLIPBOARD SUPPORT + ================= + Applications can send and receive UTF-8 encoded text data from and to the + system clipboard. By default, clipboard support is disabled and + must be enabled at startup via the following sapp_desc struct + members: + + sapp_desc.enable_clipboard - set to true to enable clipboard support + sapp_desc.clipboard_size - size of the internal clipboard buffer in bytes + + Enabling the clipboard will dynamically allocate a clipboard buffer + for UTF-8 encoded text data of the requested size in bytes, the default + size is 8 KBytes. Strings that don't fit into the clipboard buffer + (including the terminating zero) will be silently clipped, so it's + important that you provide a big enough clipboard size for your + use case. + + To send data to the clipboard, call sapp_set_clipboard_string() with + a pointer to an UTF-8 encoded, null-terminated C-string. + + NOTE that on the HTML5 platform, sapp_set_clipboard_string() must be + called from inside a 'short-lived event handler', and there are a few + other HTML5-specific caveats to workaround. You'll basically have to + tinker until it works in all browsers :/ (maybe the situation will + improve when all browsers agree on and implement the new + HTML5 navigator.clipboard API). + + To get data from the clipboard, check for the SAPP_EVENTTYPE_CLIPBOARD_PASTED + event in your event handler function, and then call sapp_get_clipboard_string() + to obtain the pasted UTF-8 encoded text. + + NOTE that behaviour of sapp_get_clipboard_string() is slightly different + depending on platform: + + - on the HTML5 platform, the internal clipboard buffer will only be updated + right before the SAPP_EVENTTYPE_CLIPBOARD_PASTED event is sent, + and sapp_get_clipboard_string() will simply return the current content + of the clipboard buffer + - on 'native' platforms, the call to sapp_get_clipboard_string() will + update the internal clipboard buffer with the most recent data + from the system clipboard + + Portable code should check for the SAPP_EVENTTYPE_CLIPBOARD_PASTED event, + and then call sapp_get_clipboard_string() right in the event handler. + + The SAPP_EVENTTYPE_CLIPBOARD_PASTED event will be generated by sokol-app + as follows: + + - on macOS: when the Cmd+V key is pressed down + - on HTML5: when the browser sends a 'paste' event to the global 'window' object + - on all other platforms: when the Ctrl+V key is pressed down + + DRAG AND DROP SUPPORT + ===================== + PLEASE NOTE: the drag'n'drop feature works differently on WASM/HTML5 + and on the native desktop platforms (Win32, Linux and macOS) because + of security-related restrictions in the HTML5 drag'n'drop API. The + WASM/HTML5 specifics are described at the end of this documentation + section: + + Like clipboard support, drag'n'drop support must be explicitly enabled + at startup in the sapp_desc struct. + + sapp_desc sokol_main() { + return (sapp_desc) { + .enable_dragndrop = true, // default is false + ... + }; + } + + You can also adjust the maximum number of files that are accepted + in a drop operation, and the maximum path length in bytes if needed: + + sapp_desc sokol_main() { + return (sapp_desc) { + .enable_dragndrop = true, // default is false + .max_dropped_files = 8, // default is 1 + .max_dropped_file_path_length = 8192, // in bytes, default is 2048 + ... + }; + } + + When drag'n'drop is enabled, the event callback will be invoked with an + event of type SAPP_EVENTTYPE_FILES_DROPPED whenever the user drops files on + the application window. + + After the SAPP_EVENTTYPE_FILES_DROPPED is received, you can query the + number of dropped files, and their absolute paths by calling separate + functions: + + void on_event(const sapp_event* ev) { + if (ev->type == SAPP_EVENTTYPE_FILES_DROPPED) { + + // the mouse position where the drop happened + float x = ev->mouse_x; + float y = ev->mouse_y; + + // get the number of files and their paths like this: + const int num_dropped_files = sapp_get_num_dropped_files(); + for (int i = 0; i < num_dropped_files; i++) { + const char* path = sapp_get_dropped_file_path(i); + ... + } + } + } + + The returned file paths are UTF-8 encoded strings. + + You can call sapp_get_num_dropped_files() and sapp_get_dropped_file_path() + anywhere, also outside the event handler callback, but be aware that the + file path strings will be overwritten with the next drop operation. + + In any case, sapp_get_dropped_file_path() will never return a null pointer, + instead an empty string "" will be returned if the drag'n'drop feature + hasn't been enabled, the last drop-operation failed, or the file path index + is out of range. + + Drag'n'drop caveats: + + - if more files are dropped in a single drop-action + than sapp_desc.max_dropped_files, the additional + files will be silently ignored + - if any of the file paths is longer than + sapp_desc.max_dropped_file_path_length (in number of bytes, after UTF-8 + encoding) the entire drop operation will be silently ignored (this + needs some sort of error feedback in the future) + - no mouse positions are reported while the drag is in + process, this may change in the future + + Drag'n'drop on HTML5/WASM: + + The HTML5 drag'n'drop API doesn't return file paths, but instead + black-box 'file objects' which must be used to load the content + of dropped files. This is the reason why sokol_app.h adds two + HTML5-specific functions to the drag'n'drop API: + + uint32_t sapp_html5_get_dropped_file_size(int index) + Returns the size in bytes of a dropped file. + + void sapp_html5_fetch_dropped_file(const sapp_html5_fetch_request* request) + Asynchronously loads the content of a dropped file into a + provided memory buffer (which must be big enough to hold + the file content) + + To start loading the first dropped file after an SAPP_EVENTTYPE_FILES_DROPPED + event is received: + + sapp_html5_fetch_dropped_file(&(sapp_html5_fetch_request){ + .dropped_file_index = 0, + .callback = fetch_cb + .buffer = { + .ptr = buf, + .size = sizeof(buf) + }, + .user_data = ... + }); + + Make sure that the memory pointed to by 'buf' stays valid until the + callback function is called! + + As result of the asynchronous loading operation (no matter if succeeded or + failed) the 'fetch_cb' function will be called: + + void fetch_cb(const sapp_html5_fetch_response* response) { + // IMPORTANT: check if the loading operation actually succeeded: + if (response->succeeded) { + // the size of the loaded file: + const size_t num_bytes = response->data.size; + // and the pointer to the data (same as 'buf' in the fetch-call): + const void* ptr = response->data.ptr; + } + else { + // on error check the error code: + switch (response->error_code) { + case SAPP_HTML5_FETCH_ERROR_BUFFER_TOO_SMALL: + ... + break; + case SAPP_HTML5_FETCH_ERROR_OTHER: + ... + break; + } + } + } + + Check the droptest-sapp example for a real-world example which works + both on native platforms and the web: + + https://github.com/floooh/sokol-samples/blob/master/sapp/droptest-sapp.c + + HIGH-DPI RENDERING + ================== + You can set the sapp_desc.high_dpi flag during initialization to request + a full-resolution framebuffer on HighDPI displays. The default behaviour + is sapp_desc.high_dpi=false, this means that the application will + render to a lower-resolution framebuffer on HighDPI displays and the + rendered content will be upscaled by the window system composer. + + In a HighDPI scenario, you still request the same window size during + sokol_main(), but the framebuffer sizes returned by sapp_width() + and sapp_height() will be scaled up according to the DPI scaling + ratio. + + Note that on some platforms the DPI scaling factor may change at any + time (for instance when a window is moved from a high-dpi display + to a low-dpi display). + + To query the current DPI scaling factor, call the function: + + float sapp_dpi_scale(void); + + For instance on a Retina Mac, returning the following sapp_desc + struct from sokol_main(): + + sapp_desc sokol_main() { + return (sapp_desc) { + .width = 640, + .height = 480, + .high_dpi = true, + ... + }; + } + + ...the functions the functions sapp_width(), sapp_height() + and sapp_dpi_scale() will return the following values: + + sapp_width: 1280 + sapp_height: 960 + sapp_dpi_scale: 2.0 + + If the high_dpi flag is false, or you're not running on a Retina display, + the values would be: + + sapp_width: 640 + sapp_height: 480 + sapp_dpi_scale: 1.0 + + If the window is moved from the Retina display to a low-dpi external display, + the values would change as follows: + + sapp_width: 1280 => 640 + sapp_height: 960 => 480 + sapp_dpi_scale: 2.0 => 1.0 + + Currently there is no event associated with a DPI change, but an + SAPP_EVENTTYPE_RESIZED will be sent as a side effect of the + framebuffer size changing. + + Per-monitor DPI is currently supported on macOS and Windows. + + APPLICATION QUIT + ================ + Without special quit handling, a sokol_app.h application will quit + 'gracefully' when the user clicks the window close-button unless a + platform's application model prevents this (e.g. on web or mobile). + 'Graceful exit' means that the application-provided cleanup callback will + be called before the application quits. + + On native desktop platforms sokol_app.h provides more control over the + application-quit-process. It's possible to initiate a 'programmatic quit' + from the application code, and a quit initiated by the application user can + be intercepted (for instance to show a custom dialog box). + + This 'programmatic quit protocol' is implemented through 3 functions + and 1 event: + + - sapp_quit(): This function simply quits the application without + giving the user a chance to intervene. Usually this might + be called when the user clicks the 'Ok' button in a 'Really Quit?' + dialog box + - sapp_request_quit(): Calling sapp_request_quit() will send the + event SAPP_EVENTTYPE_QUIT_REQUESTED to the applications event handler + callback, giving the user code a chance to intervene and cancel the + pending quit process (for instance to show a 'Really Quit?' dialog + box). If the event handler callback does nothing, the application + will be quit as usual. To prevent this, call the function + sapp_cancel_quit() from inside the event handler. + - sapp_cancel_quit(): Cancels a pending quit request, either initiated + by the user clicking the window close button, or programmatically + by calling sapp_request_quit(). The only place where calling this + function makes sense is from inside the event handler callback when + the SAPP_EVENTTYPE_QUIT_REQUESTED event has been received. + - SAPP_EVENTTYPE_QUIT_REQUESTED: this event is sent when the user + clicks the window's close button or application code calls the + sapp_request_quit() function. The event handler callback code can handle + this event by calling sapp_cancel_quit() to cancel the quit. + If the event is ignored, the application will quit as usual. + + On the web platform, the quit behaviour differs from native platforms, + because of web-specific restrictions: + + A `programmatic quit` initiated by calling sapp_quit() or + sapp_request_quit() will work as described above: the cleanup callback is + called, platform-specific cleanup is performed (on the web + this means that JS event handlers are unregisters), and then + the request-animation-loop will be exited. However that's all. The + web page itself will continue to exist (e.g. it's not possible to + programmatically close the browser tab). + + On the web it's also not possible to run custom code when the user + closes a browser tab, so it's not possible to prevent this with a + fancy custom dialog box. + + Instead the standard "Leave Site?" dialog box can be activated (or + deactivated) with the following function: + + sapp_html5_ask_leave_site(bool ask); + + The initial state of the associated internal flag can be provided + at startup via sapp_desc.html5_ask_leave_site. + + This feature should only be used sparingly in critical situations - for + instance when the user would loose data - since popping up modal dialog + boxes is considered quite rude in the web world. Note that there's no way + to customize the content of this dialog box or run any code as a result + of the user's decision. Also note that the user must have interacted with + the site before the dialog box will appear. These are all security measures + to prevent fishing. + + The Dear ImGui HighDPI sample contains example code of how to + implement a 'Really Quit?' dialog box with Dear ImGui (native desktop + platforms only), and for showing the hardwired "Leave Site?" dialog box + when running on the web platform: + + https://floooh.github.io/sokol-html5/wasm/imgui-highdpi-sapp.html + + FULLSCREEN + ========== + If the sapp_desc.fullscreen flag is true, sokol-app will try to create + a fullscreen window on platforms with a 'proper' window system + (mobile devices will always use fullscreen). The implementation details + depend on the target platform, in general sokol-app will use a + 'soft approach' which doesn't interfere too much with the platform's + window system (for instance borderless fullscreen window instead of + a 'real' fullscreen mode). Such details might change over time + as sokol-app is adapted for different needs. + + The most important effect of fullscreen mode to keep in mind is that + the requested canvas width and height will be ignored for the initial + window size, calling sapp_width() and sapp_height() will instead return + the resolution of the fullscreen canvas (however the provided size + might still be used for the non-fullscreen window, in case the user can + switch back from fullscreen- to windowed-mode). + + To toggle fullscreen mode programmatically, call sapp_toggle_fullscreen(). + + To check if the application window is currently in fullscreen mode, + call sapp_is_fullscreen(). + + WINDOW ICON SUPPORT + =================== + Some sokol_app.h backends allow to change the window icon programmatically: + + - on Win32: the small icon in the window's title bar, and the + bigger icon in the task bar + - on Linux: highly dependent on the used window manager, but usually + the window's title bar icon and/or the task bar icon + - on HTML5: the favicon shown in the page's browser tab + + NOTE that it is not possible to set the actual application icon which is + displayed by the operating system on the desktop or 'home screen'. Those + icons must be provided 'traditionally' through operating-system-specific + resources which are associated with the application (sokol_app.h might + later support setting the window icon from platform specific resource data + though). + + There are two ways to set the window icon: + + - at application start in the sokol_main() function by initializing + the sapp_desc.icon nested struct + - or later by calling the function sapp_set_icon() + + As a convenient shortcut, sokol_app.h comes with a builtin default-icon + (a rainbow-colored 'S', which at least looks a bit better than the Windows + default icon for applications), which can be activated like this: + + At startup in sokol_main(): + + sapp_desc sokol_main(...) { + return (sapp_desc){ + ... + icon.sokol_default = true + }; + } + + Or later by calling: + + sapp_set_icon(&(sapp_icon_desc){ .sokol_default = true }); + + NOTE that a completely zero-initialized sapp_icon_desc struct will not + update the window icon in any way. This is an 'escape hatch' so that you + can handle the window icon update yourself (or if you do this already, + sokol_app.h won't get in your way, in this case just leave the + sapp_desc.icon struct zero-initialized). + + Providing your own icon images works exactly like in GLFW (down to the + data format): + + You provide one or more 'candidate images' in different sizes, and the + sokol_app.h platform backends pick the best match for the specific backend + and icon type. + + For each candidate image, you need to provide: + + - the width in pixels + - the height in pixels + - and the actual pixel data in RGBA8 pixel format (e.g. 0xFFCC8844 + on a little-endian CPU means: alpha=0xFF, blue=0xCC, green=0x88, red=0x44) + + For instance, if you have 3 candidate images (small, medium, big) of + sizes 16x16, 32x32 and 64x64 the corresponding sapp_icon_desc struct is setup + like this: + + // the actual pixel data (RGBA8, origin top-left) + const uint32_t small[16][16] = { ... }; + const uint32_t medium[32][32] = { ... }; + const uint32_t big[64][64] = { ... }; + + const sapp_icon_desc icon_desc = { + .images = { + { .width = 16, .height = 16, .pixels = SAPP_RANGE(small) }, + { .width = 32, .height = 32, .pixels = SAPP_RANGE(medium) }, + // ...or without the SAPP_RANGE helper macro: + { .width = 64, .height = 64, .pixels = { .ptr=big, .size=sizeof(big) } } + } + }; + + An sapp_icon_desc struct initialized like this can then either be applied + at application start in sokol_main: + + sapp_desc sokol_main(...) { + return (sapp_desc){ + ... + icon = icon_desc + }; + } + + ...or later by calling sapp_set_icon(): + + sapp_set_icon(&icon_desc); + + Some window icon caveats: + + - once the window icon has been updated, there's no way to go back to + the platform's default icon, this is because some platforms (Linux + and HTML5) don't switch the icon visual back to the default even if + the custom icon is deleted or removed + - on HTML5, if the sokol_app.h icon doesn't show up in the browser + tab, check that there's no traditional favicon 'link' element + is defined in the page's index.html, sokol_app.h will only + append a new favicon link element, but not delete any manually + defined favicon in the page + + For an example and test of the window icon feature, check out the the + 'icon-sapp' sample on the sokol-samples git repository. + + ONSCREEN KEYBOARD + ================= + On some platforms which don't provide a physical keyboard, sokol-app + can display the platform's integrated onscreen keyboard for text + input. To request that the onscreen keyboard is shown, call + + sapp_show_keyboard(true); + + Likewise, to hide the keyboard call: + + sapp_show_keyboard(false); + + Note that on the web platform, the keyboard can only be shown from + inside an input handler. On such platforms, sapp_show_keyboard() + will only work as expected when it is called from inside the + sokol-app event callback function. When called from other places, + an internal flag will be set, and the onscreen keyboard will be + called at the next 'legal' opportunity (when the next input event + is handled). + + OPTIONAL: DON'T HIJACK main() (#define SOKOL_NO_ENTRY) + ====================================================== + In its default configuration, sokol_app.h "hijacks" the platform's + standard main() function. This was done because different platforms + have different main functions which are not compatible with + C's main() (for instance WinMain on Windows has completely different + arguments). However, this "main hijacking" posed a problem for + usage scenarios like integrating sokol_app.h with other languages than + C or C++, so an alternative SOKOL_NO_ENTRY mode has been added + in which the user code provides the platform's main function: + + - define SOKOL_NO_ENTRY before including the sokol_app.h implementation + - do *not* provide a sokol_main() function + - instead provide the standard main() function of the platform + - from the main function, call the function ```sapp_run()``` which + takes a pointer to an ```sapp_desc``` structure. + - ```sapp_run()``` takes over control and calls the provided init-, frame-, + shutdown- and event-callbacks just like in the default model, it + will only return when the application quits (or not at all on some + platforms, like emscripten) + + NOTE: SOKOL_NO_ENTRY is currently not supported on Android. + + WINDOWS CONSOLE OUTPUT + ====================== + On Windows, regular windowed applications don't show any stdout/stderr text + output, which can be a bit of a hassle for printf() debugging or generally + logging text to the console. Also, console output by default uses a local + codepage setting and thus international UTF-8 encoded text is printed + as garbage. + + To help with these issues, sokol_app.h can be configured at startup + via the following Windows-specific sapp_desc flags: + + sapp_desc.win32_console_utf8 (default: false) + When set to true, the output console codepage will be switched + to UTF-8 (and restored to the original codepage on exit) + + sapp_desc.win32_console_attach (default: false) + When set to true, stdout and stderr will be attached to the + console of the parent process (if the parent process actually + has a console). This means that if the application was started + in a command line window, stdout and stderr output will be printed + to the terminal, just like a regular command line program. But if + the application is started via double-click, it will behave like + a regular UI application, and stdout/stderr will not be visible. + + sapp_desc.win32_console_create (default: false) + When set to true, a new console window will be created and + stdout/stderr will be redirected to that console window. It + doesn't matter if the application is started from the command + line or via double-click. + + MEMORY ALLOCATION OVERRIDE + ========================== + You can override the memory allocation functions at initialization time + like this: + + void* my_alloc(size_t size, void* user_data) { + return malloc(size); + } + + void my_free(void* ptr, void* user_data) { + free(ptr); + } + + sapp_desc sokol_main(int argc, char* argv[]) { + return (sapp_desc){ + // ... + .allocator = { + .alloc = my_alloc, + .free = my_free, + .user_data = ..., + } + }; + } + + If no overrides are provided, malloc and free will be used. + + This only affects memory allocation calls done by sokol_app.h + itself though, not any allocations in OS libraries. + + + ERROR REPORTING AND LOGGING + =========================== + To get any logging information at all you need to provide a logging callback in the setup call + the easiest way is to use sokol_log.h: + + #include "sokol_log.h" + + sapp_desc sokol_main(int argc, char* argv[]) { + return (sapp_desc) { + ... + .logger.func = slog_func, + }; + } + + To override logging with your own callback, first write a logging function like this: + + void my_log(const char* tag, // e.g. 'sapp' + uint32_t log_level, // 0=panic, 1=error, 2=warn, 3=info + uint32_t log_item_id, // SAPP_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_app.h + const char* filename_or_null, // source filename, may be nullptr in release mode + void* user_data) + { + ... + } + + ...and then setup sokol-app like this: + + sapp_desc sokol_main(int argc, char* argv[]) { + return (sapp_desc) { + ... + .logger = { + .func = my_log, + .user_data = my_user_data, + } + }; + } + + The provided logging function must be reentrant (e.g. be callable from + different threads). + + If you don't want to provide your own custom logger it is highly recommended to use + the standard logger in sokol_log.h instead, otherwise you won't see any warnings or + errors. + + + TEMP NOTE DUMP + ============== + - onscreen keyboard support on Android requires Java :(, should we even bother? + - sapp_desc needs a bool whether to initialize depth-stencil surface + - GL context initialization needs more control (at least what GL version to initialize) + - application icon + - the Android implementation calls cleanup_cb() and destroys the egl context in onDestroy + at the latest but should do it earlier, in onStop, as an app is "killable" after onStop + on Android Honeycomb and later (it can't be done at the moment as the app may be started + again after onStop and the sokol lifecycle does not yet handle context teardown/bringup) + + + LICENSE + ======= + zlib/libpng license + + Copyright (c) 2018 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_APP_INCLUDED (1) +#include // size_t +#include +#include + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_APP_API_DECL) +#define SOKOL_APP_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_APP_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_APP_IMPL) +#define SOKOL_APP_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_APP_API_DECL __declspec(dllimport) +#else +#define SOKOL_APP_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* misc constants */ +enum { + SAPP_MAX_TOUCHPOINTS = 8, + SAPP_MAX_MOUSEBUTTONS = 3, + SAPP_MAX_KEYCODES = 512, + SAPP_MAX_ICONIMAGES = 8, +}; + +/* + sapp_event_type + + The type of event that's passed to the event handler callback + in the sapp_event.type field. These are not just "traditional" + input events, but also notify the application about state changes + or other user-invoked actions. +*/ +typedef enum sapp_event_type { + SAPP_EVENTTYPE_INVALID, + SAPP_EVENTTYPE_KEY_DOWN, + SAPP_EVENTTYPE_KEY_UP, + SAPP_EVENTTYPE_CHAR, + SAPP_EVENTTYPE_MOUSE_DOWN, + SAPP_EVENTTYPE_MOUSE_UP, + SAPP_EVENTTYPE_MOUSE_SCROLL, + SAPP_EVENTTYPE_MOUSE_MOVE, + SAPP_EVENTTYPE_MOUSE_ENTER, + SAPP_EVENTTYPE_MOUSE_LEAVE, + SAPP_EVENTTYPE_TOUCHES_BEGAN, + SAPP_EVENTTYPE_TOUCHES_MOVED, + SAPP_EVENTTYPE_TOUCHES_ENDED, + SAPP_EVENTTYPE_TOUCHES_CANCELLED, + SAPP_EVENTTYPE_RESIZED, + SAPP_EVENTTYPE_ICONIFIED, + SAPP_EVENTTYPE_RESTORED, + SAPP_EVENTTYPE_FOCUSED, + SAPP_EVENTTYPE_UNFOCUSED, + SAPP_EVENTTYPE_SUSPENDED, + SAPP_EVENTTYPE_RESUMED, + SAPP_EVENTTYPE_QUIT_REQUESTED, + SAPP_EVENTTYPE_CLIPBOARD_PASTED, + SAPP_EVENTTYPE_FILES_DROPPED, + _SAPP_EVENTTYPE_NUM, + _SAPP_EVENTTYPE_FORCE_U32 = 0x7FFFFFFF +} sapp_event_type; + +/* + sapp_keycode + + The 'virtual keycode' of a KEY_DOWN or KEY_UP event in the + struct field sapp_event.key_code. + + Note that the keycode values are identical with GLFW. +*/ +typedef enum sapp_keycode { + SAPP_KEYCODE_INVALID = 0, + SAPP_KEYCODE_SPACE = 32, + SAPP_KEYCODE_APOSTROPHE = 39, /* ' */ + SAPP_KEYCODE_COMMA = 44, /* , */ + SAPP_KEYCODE_MINUS = 45, /* - */ + SAPP_KEYCODE_PERIOD = 46, /* . */ + SAPP_KEYCODE_SLASH = 47, /* / */ + SAPP_KEYCODE_0 = 48, + SAPP_KEYCODE_1 = 49, + SAPP_KEYCODE_2 = 50, + SAPP_KEYCODE_3 = 51, + SAPP_KEYCODE_4 = 52, + SAPP_KEYCODE_5 = 53, + SAPP_KEYCODE_6 = 54, + SAPP_KEYCODE_7 = 55, + SAPP_KEYCODE_8 = 56, + SAPP_KEYCODE_9 = 57, + SAPP_KEYCODE_SEMICOLON = 59, /* ; */ + SAPP_KEYCODE_EQUAL = 61, /* = */ + SAPP_KEYCODE_A = 65, + SAPP_KEYCODE_B = 66, + SAPP_KEYCODE_C = 67, + SAPP_KEYCODE_D = 68, + SAPP_KEYCODE_E = 69, + SAPP_KEYCODE_F = 70, + SAPP_KEYCODE_G = 71, + SAPP_KEYCODE_H = 72, + SAPP_KEYCODE_I = 73, + SAPP_KEYCODE_J = 74, + SAPP_KEYCODE_K = 75, + SAPP_KEYCODE_L = 76, + SAPP_KEYCODE_M = 77, + SAPP_KEYCODE_N = 78, + SAPP_KEYCODE_O = 79, + SAPP_KEYCODE_P = 80, + SAPP_KEYCODE_Q = 81, + SAPP_KEYCODE_R = 82, + SAPP_KEYCODE_S = 83, + SAPP_KEYCODE_T = 84, + SAPP_KEYCODE_U = 85, + SAPP_KEYCODE_V = 86, + SAPP_KEYCODE_W = 87, + SAPP_KEYCODE_X = 88, + SAPP_KEYCODE_Y = 89, + SAPP_KEYCODE_Z = 90, + SAPP_KEYCODE_LEFT_BRACKET = 91, /* [ */ + SAPP_KEYCODE_BACKSLASH = 92, /* \ */ + SAPP_KEYCODE_RIGHT_BRACKET = 93, /* ] */ + SAPP_KEYCODE_GRAVE_ACCENT = 96, /* ` */ + SAPP_KEYCODE_WORLD_1 = 161, /* non-US #1 */ + SAPP_KEYCODE_WORLD_2 = 162, /* non-US #2 */ + SAPP_KEYCODE_ESCAPE = 256, + SAPP_KEYCODE_ENTER = 257, + SAPP_KEYCODE_TAB = 258, + SAPP_KEYCODE_BACKSPACE = 259, + SAPP_KEYCODE_INSERT = 260, + SAPP_KEYCODE_DELETE = 261, + SAPP_KEYCODE_RIGHT = 262, + SAPP_KEYCODE_LEFT = 263, + SAPP_KEYCODE_DOWN = 264, + SAPP_KEYCODE_UP = 265, + SAPP_KEYCODE_PAGE_UP = 266, + SAPP_KEYCODE_PAGE_DOWN = 267, + SAPP_KEYCODE_HOME = 268, + SAPP_KEYCODE_END = 269, + SAPP_KEYCODE_CAPS_LOCK = 280, + SAPP_KEYCODE_SCROLL_LOCK = 281, + SAPP_KEYCODE_NUM_LOCK = 282, + SAPP_KEYCODE_PRINT_SCREEN = 283, + SAPP_KEYCODE_PAUSE = 284, + SAPP_KEYCODE_F1 = 290, + SAPP_KEYCODE_F2 = 291, + SAPP_KEYCODE_F3 = 292, + SAPP_KEYCODE_F4 = 293, + SAPP_KEYCODE_F5 = 294, + SAPP_KEYCODE_F6 = 295, + SAPP_KEYCODE_F7 = 296, + SAPP_KEYCODE_F8 = 297, + SAPP_KEYCODE_F9 = 298, + SAPP_KEYCODE_F10 = 299, + SAPP_KEYCODE_F11 = 300, + SAPP_KEYCODE_F12 = 301, + SAPP_KEYCODE_F13 = 302, + SAPP_KEYCODE_F14 = 303, + SAPP_KEYCODE_F15 = 304, + SAPP_KEYCODE_F16 = 305, + SAPP_KEYCODE_F17 = 306, + SAPP_KEYCODE_F18 = 307, + SAPP_KEYCODE_F19 = 308, + SAPP_KEYCODE_F20 = 309, + SAPP_KEYCODE_F21 = 310, + SAPP_KEYCODE_F22 = 311, + SAPP_KEYCODE_F23 = 312, + SAPP_KEYCODE_F24 = 313, + SAPP_KEYCODE_F25 = 314, + SAPP_KEYCODE_KP_0 = 320, + SAPP_KEYCODE_KP_1 = 321, + SAPP_KEYCODE_KP_2 = 322, + SAPP_KEYCODE_KP_3 = 323, + SAPP_KEYCODE_KP_4 = 324, + SAPP_KEYCODE_KP_5 = 325, + SAPP_KEYCODE_KP_6 = 326, + SAPP_KEYCODE_KP_7 = 327, + SAPP_KEYCODE_KP_8 = 328, + SAPP_KEYCODE_KP_9 = 329, + SAPP_KEYCODE_KP_DECIMAL = 330, + SAPP_KEYCODE_KP_DIVIDE = 331, + SAPP_KEYCODE_KP_MULTIPLY = 332, + SAPP_KEYCODE_KP_SUBTRACT = 333, + SAPP_KEYCODE_KP_ADD = 334, + SAPP_KEYCODE_KP_ENTER = 335, + SAPP_KEYCODE_KP_EQUAL = 336, + SAPP_KEYCODE_LEFT_SHIFT = 340, + SAPP_KEYCODE_LEFT_CONTROL = 341, + SAPP_KEYCODE_LEFT_ALT = 342, + SAPP_KEYCODE_LEFT_SUPER = 343, + SAPP_KEYCODE_RIGHT_SHIFT = 344, + SAPP_KEYCODE_RIGHT_CONTROL = 345, + SAPP_KEYCODE_RIGHT_ALT = 346, + SAPP_KEYCODE_RIGHT_SUPER = 347, + SAPP_KEYCODE_MENU = 348, +} sapp_keycode; + +/* + Android specific 'tool type' enum for touch events. This lets the + application check what type of input device was used for + touch events. + + NOTE: the values must remain in sync with the corresponding + Android SDK type, so don't change those. + + See https://developer.android.com/reference/android/view/MotionEvent#TOOL_TYPE_UNKNOWN +*/ +typedef enum sapp_android_tooltype { + SAPP_ANDROIDTOOLTYPE_UNKNOWN = 0, // TOOL_TYPE_UNKNOWN + SAPP_ANDROIDTOOLTYPE_FINGER = 1, // TOOL_TYPE_FINGER + SAPP_ANDROIDTOOLTYPE_STYLUS = 2, // TOOL_TYPE_STYLUS + SAPP_ANDROIDTOOLTYPE_MOUSE = 3, // TOOL_TYPE_MOUSE +} sapp_android_tooltype; + +/* + sapp_touchpoint + + Describes a single touchpoint in a multitouch event (TOUCHES_BEGAN, + TOUCHES_MOVED, TOUCHES_ENDED). + + Touch points are stored in the nested array sapp_event.touches[], + and the number of touches is stored in sapp_event.num_touches. +*/ +typedef struct sapp_touchpoint { + uintptr_t identifier; + float pos_x; + float pos_y; + sapp_android_tooltype android_tooltype; // only valid on Android + bool changed; +} sapp_touchpoint; + +/* + sapp_mousebutton + + The currently pressed mouse button in the events MOUSE_DOWN + and MOUSE_UP, stored in the struct field sapp_event.mouse_button. +*/ +typedef enum sapp_mousebutton { + SAPP_MOUSEBUTTON_LEFT = 0x0, + SAPP_MOUSEBUTTON_RIGHT = 0x1, + SAPP_MOUSEBUTTON_MIDDLE = 0x2, + SAPP_MOUSEBUTTON_INVALID = 0x100, +} sapp_mousebutton; + +/* + These are currently pressed modifier keys (and mouse buttons) which are + passed in the event struct field sapp_event.modifiers. +*/ +enum { + SAPP_MODIFIER_SHIFT = 0x1, // left or right shift key + SAPP_MODIFIER_CTRL = 0x2, // left or right control key + SAPP_MODIFIER_ALT = 0x4, // left or right alt key + SAPP_MODIFIER_SUPER = 0x8, // left or right 'super' key + SAPP_MODIFIER_LMB = 0x100, // left mouse button + SAPP_MODIFIER_RMB = 0x200, // right mouse button + SAPP_MODIFIER_MMB = 0x400, // middle mouse button +}; + +/* + sapp_event + + This is an all-in-one event struct passed to the event handler + user callback function. Note that it depends on the event + type what struct fields actually contain useful values, so you + should first check the event type before reading other struct + fields. +*/ +typedef struct sapp_event { + uint64_t frame_count; // current frame counter, always valid, useful for checking if two events were issued in the same frame + sapp_event_type type; // the event type, always valid + sapp_keycode key_code; // the virtual key code, only valid in KEY_UP, KEY_DOWN + uint32_t char_code; // the UTF-32 character code, only valid in CHAR events + bool key_repeat; // true if this is a key-repeat event, valid in KEY_UP, KEY_DOWN and CHAR + uint32_t modifiers; // current modifier keys, valid in all key-, char- and mouse-events + sapp_mousebutton mouse_button; // mouse button that was pressed or released, valid in MOUSE_DOWN, MOUSE_UP + float mouse_x; // current horizontal mouse position in pixels, always valid except during mouse lock + float mouse_y; // current vertical mouse position in pixels, always valid except during mouse lock + float mouse_dx; // relative horizontal mouse movement since last frame, always valid + float mouse_dy; // relative vertical mouse movement since last frame, always valid + float scroll_x; // horizontal mouse wheel scroll distance, valid in MOUSE_SCROLL events + float scroll_y; // vertical mouse wheel scroll distance, valid in MOUSE_SCROLL events + int num_touches; // number of valid items in the touches[] array + sapp_touchpoint touches[SAPP_MAX_TOUCHPOINTS]; // current touch points, valid in TOUCHES_BEGIN, TOUCHES_MOVED, TOUCHES_ENDED + int window_width; // current window- and framebuffer sizes in pixels, always valid + int window_height; + int framebuffer_width; // = window_width * dpi_scale + int framebuffer_height; // = window_height * dpi_scale +} sapp_event; + +/* + sg_range + + A general pointer/size-pair struct and constructor macros for passing binary blobs + into sokol_app.h. +*/ +typedef struct sapp_range { + const void* ptr; + size_t size; +} sapp_range; +// disabling this for every includer isn't great, but the warnings are also quite pointless +#if defined(_MSC_VER) +#pragma warning(disable:4221) /* /W4 only: nonstandard extension used: 'x': cannot be initialized using address of automatic variable 'y' */ +#pragma warning(disable:4204) /* VS2015: nonstandard extension used: non-constant aggregate initializer */ +#endif +#if defined(__cplusplus) +#define SAPP_RANGE(x) sapp_range{ &x, sizeof(x) } +#else +#define SAPP_RANGE(x) (sapp_range){ &x, sizeof(x) } +#endif + +/* + sapp_image_desc + + This is used to describe image data to sokol_app.h (at first, window + icons, later maybe cursor images). + + Note that the actual image pixel format depends on the use case: + + - window icon pixels are RGBA8 + - cursor images are ??? (FIXME) +*/ +typedef struct sapp_image_desc { + int width; + int height; + sapp_range pixels; +} sapp_image_desc; + +/* + sapp_icon_desc + + An icon description structure for use in sapp_desc.icon and + sapp_set_icon(). + + When setting a custom image, the application can provide a number of + candidates differing in size, and sokol_app.h will pick the image(s) + closest to the size expected by the platform's window system. + + To set sokol-app's default icon, set .sokol_default to true. + + Otherwise provide candidate images of different sizes in the + images[] array. + + If both the sokol_default flag is set to true, any image candidates + will be ignored and the sokol_app.h default icon will be set. +*/ +typedef struct sapp_icon_desc { + bool sokol_default; + sapp_image_desc images[SAPP_MAX_ICONIMAGES]; +} sapp_icon_desc; + +/* + sapp_allocator + + Used in sapp_desc to provide custom memory-alloc and -free functions + to sokol_app.h. If memory management should be overridden, both the + alloc and free function must be provided (e.g. it's not valid to + override one function but not the other). +*/ +typedef struct sapp_allocator { + void* (*alloc)(size_t size, void* user_data); + void (*free)(void* ptr, void* user_data); + void* user_data; +} sapp_allocator; + +/* + sapp_log_item + + Log items are defined via X-Macros and expanded to an enum + 'sapp_log_item', and in debug mode to corresponding + human readable error messages. +*/ +#define _SAPP_LOG_ITEMS \ + _SAPP_LOGITEM_XMACRO(OK, "Ok") \ + _SAPP_LOGITEM_XMACRO(MALLOC_FAILED, "memory allocation failed") \ + _SAPP_LOGITEM_XMACRO(MACOS_INVALID_NSOPENGL_PROFILE, "macos: invalid NSOpenGLProfile (valid choices are 1.0, 3.2 and 4.1)") \ + _SAPP_LOGITEM_XMACRO(WIN32_LOAD_OPENGL32_DLL_FAILED, "failed loading opengl32.dll") \ + _SAPP_LOGITEM_XMACRO(WIN32_CREATE_HELPER_WINDOW_FAILED, "failed to create helper window") \ + _SAPP_LOGITEM_XMACRO(WIN32_HELPER_WINDOW_GETDC_FAILED, "failed to get helper window DC") \ + _SAPP_LOGITEM_XMACRO(WIN32_DUMMY_CONTEXT_SET_PIXELFORMAT_FAILED, "failed to set pixel format for dummy GL context") \ + _SAPP_LOGITEM_XMACRO(WIN32_CREATE_DUMMY_CONTEXT_FAILED, "failed to create dummy GL context") \ + _SAPP_LOGITEM_XMACRO(WIN32_DUMMY_CONTEXT_MAKE_CURRENT_FAILED, "failed to make dummy GL context current") \ + _SAPP_LOGITEM_XMACRO(WIN32_GET_PIXELFORMAT_ATTRIB_FAILED, "failed to get WGL pixel format attribute") \ + _SAPP_LOGITEM_XMACRO(WIN32_WGL_FIND_PIXELFORMAT_FAILED, "failed to find matching WGL pixel format") \ + _SAPP_LOGITEM_XMACRO(WIN32_WGL_DESCRIBE_PIXELFORMAT_FAILED, "failed to get pixel format descriptor") \ + _SAPP_LOGITEM_XMACRO(WIN32_WGL_SET_PIXELFORMAT_FAILED, "failed to set selected pixel format") \ + _SAPP_LOGITEM_XMACRO(WIN32_WGL_ARB_CREATE_CONTEXT_REQUIRED, "ARB_create_context required") \ + _SAPP_LOGITEM_XMACRO(WIN32_WGL_ARB_CREATE_CONTEXT_PROFILE_REQUIRED, "ARB_create_context_profile required") \ + _SAPP_LOGITEM_XMACRO(WIN32_WGL_OPENGL_3_2_NOT_SUPPORTED, "OpenGL 3.2 not supported by GL driver (ERROR_INVALID_VERSION_ARB)") \ + _SAPP_LOGITEM_XMACRO(WIN32_WGL_OPENGL_PROFILE_NOT_SUPPORTED, "requested OpenGL profile not support by GL driver (ERROR_INVALID_PROFILE_ARB)") \ + _SAPP_LOGITEM_XMACRO(WIN32_WGL_INCOMPATIBLE_DEVICE_CONTEXT, "CreateContextAttribsARB failed with ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB") \ + _SAPP_LOGITEM_XMACRO(WIN32_WGL_CREATE_CONTEXT_ATTRIBS_FAILED_OTHER, "CreateContextAttribsARB failed for other reason") \ + _SAPP_LOGITEM_XMACRO(WIN32_D3D11_CREATE_DEVICE_AND_SWAPCHAIN_WITH_DEBUG_FAILED, "D3D11CreateDeviceAndSwapChain() with D3D11_CREATE_DEVICE_DEBUG failed, retrying without debug flag.") \ + _SAPP_LOGITEM_XMACRO(WIN32_D3D11_GET_IDXGIFACTORY_FAILED, "could not obtain IDXGIFactory object") \ + _SAPP_LOGITEM_XMACRO(WIN32_D3D11_GET_IDXGIADAPTER_FAILED, "could not obtain IDXGIAdapter object") \ + _SAPP_LOGITEM_XMACRO(WIN32_D3D11_QUERY_INTERFACE_IDXGIDEVICE1_FAILED, "could not obtain IDXGIDevice1 interface") \ + _SAPP_LOGITEM_XMACRO(WIN32_REGISTER_RAW_INPUT_DEVICES_FAILED_MOUSE_LOCK, "RegisterRawInputDevices() failed (on mouse lock)") \ + _SAPP_LOGITEM_XMACRO(WIN32_REGISTER_RAW_INPUT_DEVICES_FAILED_MOUSE_UNLOCK, "RegisterRawInputDevices() failed (on mouse unlock)") \ + _SAPP_LOGITEM_XMACRO(WIN32_GET_RAW_INPUT_DATA_FAILED, "GetRawInputData() failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_GLX_LOAD_LIBGL_FAILED, "failed to load libGL") \ + _SAPP_LOGITEM_XMACRO(LINUX_GLX_LOAD_ENTRY_POINTS_FAILED, "failed to load GLX entry points") \ + _SAPP_LOGITEM_XMACRO(LINUX_GLX_EXTENSION_NOT_FOUND, "GLX extension not found") \ + _SAPP_LOGITEM_XMACRO(LINUX_GLX_QUERY_VERSION_FAILED, "failed to query GLX version") \ + _SAPP_LOGITEM_XMACRO(LINUX_GLX_VERSION_TOO_LOW, "GLX version too low (need at least 1.3)") \ + _SAPP_LOGITEM_XMACRO(LINUX_GLX_NO_GLXFBCONFIGS, "glXGetFBConfigs() returned no configs") \ + _SAPP_LOGITEM_XMACRO(LINUX_GLX_NO_SUITABLE_GLXFBCONFIG, "failed to find a suitable GLXFBConfig") \ + _SAPP_LOGITEM_XMACRO(LINUX_GLX_GET_VISUAL_FROM_FBCONFIG_FAILED, "glXGetVisualFromFBConfig failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_GLX_REQUIRED_EXTENSIONS_MISSING, "GLX extensions ARB_create_context and ARB_create_context_profile missing") \ + _SAPP_LOGITEM_XMACRO(LINUX_GLX_CREATE_CONTEXT_FAILED, "Failed to create GL context via glXCreateContextAttribsARB") \ + _SAPP_LOGITEM_XMACRO(LINUX_GLX_CREATE_WINDOW_FAILED, "glXCreateWindow() failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_X11_CREATE_WINDOW_FAILED, "XCreateWindow() failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_EGL_BIND_OPENGL_API_FAILED, "eglBindAPI(EGL_OPENGL_API) failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_EGL_BIND_OPENGL_ES_API_FAILED, "eglBindAPI(EGL_OPENGL_ES_API) failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_EGL_GET_DISPLAY_FAILED, "eglGetDisplay() failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_EGL_INITIALIZE_FAILED, "eglInitialize() failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_EGL_NO_CONFIGS, "eglChooseConfig() returned no configs") \ + _SAPP_LOGITEM_XMACRO(LINUX_EGL_NO_NATIVE_VISUAL, "eglGetConfigAttrib() for EGL_NATIVE_VISUAL_ID failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_EGL_GET_VISUAL_INFO_FAILED, "XGetVisualInfo() failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_EGL_CREATE_WINDOW_SURFACE_FAILED, "eglCreateWindowSurface() failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_EGL_CREATE_CONTEXT_FAILED, "eglCreateContext() failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_EGL_MAKE_CURRENT_FAILED, "eglMakeCurrent() failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_X11_OPEN_DISPLAY_FAILED, "XOpenDisplay() failed") \ + _SAPP_LOGITEM_XMACRO(LINUX_X11_QUERY_SYSTEM_DPI_FAILED, "failed to query system dpi value, assuming default 96.0") \ + _SAPP_LOGITEM_XMACRO(LINUX_X11_DROPPED_FILE_URI_WRONG_SCHEME, "dropped file URL doesn't start with 'file://'") \ + _SAPP_LOGITEM_XMACRO(ANDROID_UNSUPPORTED_INPUT_EVENT_INPUT_CB, "unsupported input event encountered in _sapp_android_input_cb()") \ + _SAPP_LOGITEM_XMACRO(ANDROID_UNSUPPORTED_INPUT_EVENT_MAIN_CB, "unsupported input event encountered in _sapp_android_main_cb()") \ + _SAPP_LOGITEM_XMACRO(ANDROID_READ_MSG_FAILED, "failed to read message in _sapp_android_main_cb()") \ + _SAPP_LOGITEM_XMACRO(ANDROID_WRITE_MSG_FAILED, "failed to write message in _sapp_android_msg") \ + _SAPP_LOGITEM_XMACRO(ANDROID_MSG_CREATE, "MSG_CREATE") \ + _SAPP_LOGITEM_XMACRO(ANDROID_MSG_RESUME, "MSG_RESUME") \ + _SAPP_LOGITEM_XMACRO(ANDROID_MSG_PAUSE, "MSG_PAUSE") \ + _SAPP_LOGITEM_XMACRO(ANDROID_MSG_FOCUS, "MSG_FOCUS") \ + _SAPP_LOGITEM_XMACRO(ANDROID_MSG_NO_FOCUS, "MSG_NO_FOCUS") \ + _SAPP_LOGITEM_XMACRO(ANDROID_MSG_SET_NATIVE_WINDOW, "MSG_SET_NATIVE_WINDOW") \ + _SAPP_LOGITEM_XMACRO(ANDROID_MSG_SET_INPUT_QUEUE, "MSG_SET_INPUT_QUEUE") \ + _SAPP_LOGITEM_XMACRO(ANDROID_MSG_DESTROY, "MSG_DESTROY") \ + _SAPP_LOGITEM_XMACRO(ANDROID_UNKNOWN_MSG, "unknown msg type received") \ + _SAPP_LOGITEM_XMACRO(ANDROID_LOOP_THREAD_STARTED, "loop thread started") \ + _SAPP_LOGITEM_XMACRO(ANDROID_LOOP_THREAD_DONE, "loop thread done") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONSTART, "NativeActivity onStart()") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONRESUME, "NativeActivity onResume") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONSAVEINSTANCESTATE, "NativeActivity onSaveInstanceState") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONWINDOWFOCUSCHANGED, "NativeActivity onWindowFocusChanged") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONPAUSE, "NativeActivity onPause") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONSTOP, "NativeActivity onStop()") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONNATIVEWINDOWCREATED, "NativeActivity onNativeWindowCreated") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONNATIVEWINDOWDESTROYED, "NativeActivity onNativeWindowDestroyed") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONINPUTQUEUECREATED, "NativeActivity onInputQueueCreated") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONINPUTQUEUEDESTROYED, "NativeActivity onInputQueueDestroyed") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONCONFIGURATIONCHANGED, "NativeActivity onConfigurationChanged") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONLOWMEMORY, "NativeActivity onLowMemory") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONDESTROY, "NativeActivity onDestroy") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_DONE, "NativeActivity done") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_ONCREATE, "NativeActivity onCreate") \ + _SAPP_LOGITEM_XMACRO(ANDROID_CREATE_THREAD_PIPE_FAILED, "failed to create thread pipe") \ + _SAPP_LOGITEM_XMACRO(ANDROID_NATIVE_ACTIVITY_CREATE_SUCCESS, "NativeActivity sucessfully created") \ + _SAPP_LOGITEM_XMACRO(IMAGE_DATA_SIZE_MISMATCH, "image data size mismatch (must be width*height*4 bytes)") \ + _SAPP_LOGITEM_XMACRO(DROPPED_FILE_PATH_TOO_LONG, "dropped file path too long (sapp_desc.max_dropped_filed_path_length)") \ + _SAPP_LOGITEM_XMACRO(CLIPBOARD_STRING_TOO_BIG, "clipboard string didn't fit into clipboard buffer") \ + +#define _SAPP_LOGITEM_XMACRO(item,msg) SAPP_LOGITEM_##item, +typedef enum sapp_log_item { + _SAPP_LOG_ITEMS +} sapp_log_item; +#undef _SAPP_LOGITEM_XMACRO + +/* + sapp_logger + + Used in sapp_desc to provide a logging function. Please be aware that + without logging function, sokol-app will be completely silent, e.g. it will + not report errors or warnings. For maximum error verbosity, compile in + debug mode (e.g. NDEBUG *not* defined) and install a logger (for instance + the standard logging function from sokol_log.h). +*/ +typedef struct sapp_logger { + void (*func)( + const char* tag, // always "sapp" + uint32_t log_level, // 0=panic, 1=error, 2=warning, 3=info + uint32_t log_item_id, // SAPP_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_app.h + const char* filename_or_null, // source filename, may be nullptr in release mode + void* user_data); + void* user_data; +} sapp_logger; + +typedef struct sapp_desc { + void (*init_cb)(void); // these are the user-provided callbacks without user data + void (*frame_cb)(void); + void (*cleanup_cb)(void); + void (*event_cb)(const sapp_event*); + + void* user_data; // these are the user-provided callbacks with user data + void (*init_userdata_cb)(void*); + void (*frame_userdata_cb)(void*); + void (*cleanup_userdata_cb)(void*); + void (*event_userdata_cb)(const sapp_event*, void*); + + int width; // the preferred width of the window / canvas + int height; // the preferred height of the window / canvas + int sample_count; // MSAA sample count + int swap_interval; // the preferred swap interval (ignored on some platforms) + bool high_dpi; // whether the rendering canvas is full-resolution on HighDPI displays + bool fullscreen; // whether the window should be created in fullscreen mode + bool alpha; // whether the framebuffer should have an alpha channel (ignored on some platforms) + const char* window_title; // the window title as UTF-8 encoded string + bool enable_clipboard; // enable clipboard access, default is false + int clipboard_size; // max size of clipboard content in bytes + bool enable_dragndrop; // enable file dropping (drag'n'drop), default is false + int max_dropped_files; // max number of dropped files to process (default: 1) + int max_dropped_file_path_length; // max length in bytes of a dropped UTF-8 file path (default: 2048) + sapp_icon_desc icon; // the initial window icon to set + sapp_allocator allocator; // optional memory allocation overrides (default: malloc/free) + sapp_logger logger; // logging callback override (default: NO LOGGING!) + + /* backend-specific options */ + int gl_major_version; // override GL major and minor version (the default GL version is 3.2) + int gl_minor_version; + bool win32_console_utf8; // if true, set the output console codepage to UTF-8 + bool win32_console_create; // if true, attach stdout/stderr to a new console window + bool win32_console_attach; // if true, attach stdout/stderr to parent process + const char* html5_canvas_name; // the name (id) of the HTML5 canvas element, default is "canvas" + bool html5_canvas_resize; // if true, the HTML5 canvas size is set to sapp_desc.width/height, otherwise canvas size is tracked + bool html5_preserve_drawing_buffer; // HTML5 only: whether to preserve default framebuffer content between frames + bool html5_premultiplied_alpha; // HTML5 only: whether the rendered pixels use premultiplied alpha convention + bool html5_ask_leave_site; // initial state of the internal html5_ask_leave_site flag (see sapp_html5_ask_leave_site()) + bool ios_keyboard_resizes_canvas; // if true, showing the iOS keyboard shrinks the canvas +} sapp_desc; + +/* HTML5 specific: request and response structs for + asynchronously loading dropped-file content. +*/ +typedef enum sapp_html5_fetch_error { + SAPP_HTML5_FETCH_ERROR_NO_ERROR, + SAPP_HTML5_FETCH_ERROR_BUFFER_TOO_SMALL, + SAPP_HTML5_FETCH_ERROR_OTHER, +} sapp_html5_fetch_error; + +typedef struct sapp_html5_fetch_response { + bool succeeded; // true if the loading operation has succeeded + sapp_html5_fetch_error error_code; + int file_index; // index of the dropped file (0..sapp_get_num_dropped_filed()-1) + sapp_range data; // pointer and size of the fetched data (data.ptr == buffer.ptr, data.size <= buffer.size) + sapp_range buffer; // the user-provided buffer ptr/size pair (buffer.ptr == data.ptr, buffer.size >= data.size) + void* user_data; // user-provided user data pointer +} sapp_html5_fetch_response; + +typedef struct sapp_html5_fetch_request { + int dropped_file_index; // 0..sapp_get_num_dropped_files()-1 + void (*callback)(const sapp_html5_fetch_response*); // response callback function pointer (required) + sapp_range buffer; // ptr/size of a memory buffer to load the data into + void* user_data; // optional userdata pointer +} sapp_html5_fetch_request; + +/* + sapp_mouse_cursor + + Predefined cursor image definitions, set with sapp_set_mouse_cursor(sapp_mouse_cursor cursor) +*/ +typedef enum sapp_mouse_cursor { + SAPP_MOUSECURSOR_DEFAULT = 0, // equivalent with system default cursor + SAPP_MOUSECURSOR_ARROW, + SAPP_MOUSECURSOR_IBEAM, + SAPP_MOUSECURSOR_CROSSHAIR, + SAPP_MOUSECURSOR_POINTING_HAND, + SAPP_MOUSECURSOR_RESIZE_EW, + SAPP_MOUSECURSOR_RESIZE_NS, + SAPP_MOUSECURSOR_RESIZE_NWSE, + SAPP_MOUSECURSOR_RESIZE_NESW, + SAPP_MOUSECURSOR_RESIZE_ALL, + SAPP_MOUSECURSOR_NOT_ALLOWED, + _SAPP_MOUSECURSOR_NUM, +} sapp_mouse_cursor; + +/* user-provided functions */ +extern sapp_desc sokol_main(int argc, char* argv[]); + +/* returns true after sokol-app has been initialized */ +SOKOL_APP_API_DECL bool sapp_isvalid(void); +/* returns the current framebuffer width in pixels */ +SOKOL_APP_API_DECL int sapp_width(void); +/* same as sapp_width(), but returns float */ +SOKOL_APP_API_DECL float sapp_widthf(void); +/* returns the current framebuffer height in pixels */ +SOKOL_APP_API_DECL int sapp_height(void); +/* same as sapp_height(), but returns float */ +SOKOL_APP_API_DECL float sapp_heightf(void); +/* get default framebuffer color pixel format */ +SOKOL_APP_API_DECL int sapp_color_format(void); +/* get default framebuffer depth pixel format */ +SOKOL_APP_API_DECL int sapp_depth_format(void); +/* get default framebuffer sample count */ +SOKOL_APP_API_DECL int sapp_sample_count(void); +/* returns true when high_dpi was requested and actually running in a high-dpi scenario */ +SOKOL_APP_API_DECL bool sapp_high_dpi(void); +/* returns the dpi scaling factor (window pixels to framebuffer pixels) */ +SOKOL_APP_API_DECL float sapp_dpi_scale(void); +/* show or hide the mobile device onscreen keyboard */ +SOKOL_APP_API_DECL void sapp_show_keyboard(bool show); +/* return true if the mobile device onscreen keyboard is currently shown */ +SOKOL_APP_API_DECL bool sapp_keyboard_shown(void); +/* query fullscreen mode */ +SOKOL_APP_API_DECL bool sapp_is_fullscreen(void); +/* toggle fullscreen mode */ +SOKOL_APP_API_DECL void sapp_toggle_fullscreen(void); +/* show or hide the mouse cursor */ +SOKOL_APP_API_DECL void sapp_show_mouse(bool show); +/* show or hide the mouse cursor */ +SOKOL_APP_API_DECL bool sapp_mouse_shown(void); +/* enable/disable mouse-pointer-lock mode */ +SOKOL_APP_API_DECL void sapp_lock_mouse(bool lock); +/* return true if in mouse-pointer-lock mode (this may toggle a few frames later) */ +SOKOL_APP_API_DECL bool sapp_mouse_locked(void); +/* set mouse cursor type */ +SOKOL_APP_API_DECL void sapp_set_mouse_cursor(sapp_mouse_cursor cursor); +/* get current mouse cursor type */ +SOKOL_APP_API_DECL sapp_mouse_cursor sapp_get_mouse_cursor(void); +/* return the userdata pointer optionally provided in sapp_desc */ +SOKOL_APP_API_DECL void* sapp_userdata(void); +/* return a copy of the sapp_desc structure */ +SOKOL_APP_API_DECL sapp_desc sapp_query_desc(void); +/* initiate a "soft quit" (sends SAPP_EVENTTYPE_QUIT_REQUESTED) */ +SOKOL_APP_API_DECL void sapp_request_quit(void); +/* cancel a pending quit (when SAPP_EVENTTYPE_QUIT_REQUESTED has been received) */ +SOKOL_APP_API_DECL void sapp_cancel_quit(void); +/* initiate a "hard quit" (quit application without sending SAPP_EVENTTYPE_QUIT_REQUSTED) */ +SOKOL_APP_API_DECL void sapp_quit(void); +/* call from inside event callback to consume the current event (don't forward to platform) */ +SOKOL_APP_API_DECL void sapp_consume_event(void); +/* get the current frame counter (for comparison with sapp_event.frame_count) */ +SOKOL_APP_API_DECL uint64_t sapp_frame_count(void); +/* get an averaged/smoothed frame duration in seconds */ +SOKOL_APP_API_DECL double sapp_frame_duration(void); +/* write string into clipboard */ +SOKOL_APP_API_DECL void sapp_set_clipboard_string(const char* str); +/* read string from clipboard (usually during SAPP_EVENTTYPE_CLIPBOARD_PASTED) */ +SOKOL_APP_API_DECL const char* sapp_get_clipboard_string(void); +/* set the window title (only on desktop platforms) */ +SOKOL_APP_API_DECL void sapp_set_window_title(const char* str); +/* set the window icon (only on Windows and Linux) */ +SOKOL_APP_API_DECL void sapp_set_icon(const sapp_icon_desc* icon_desc); +/* gets the total number of dropped files (after an SAPP_EVENTTYPE_FILES_DROPPED event) */ +SOKOL_APP_API_DECL int sapp_get_num_dropped_files(void); +/* gets the dropped file paths */ +SOKOL_APP_API_DECL const char* sapp_get_dropped_file_path(int index); + +/* special run-function for SOKOL_NO_ENTRY (in standard mode this is an empty stub) */ +SOKOL_APP_API_DECL void sapp_run(const sapp_desc* desc); + +/* EGL: get EGLDisplay object */ +SOKOL_APP_API_DECL const void* sapp_egl_get_display(void); +/* EGL: get EGLContext object */ +SOKOL_APP_API_DECL const void* sapp_egl_get_context(void); + +/* HTML5: enable or disable the hardwired "Leave Site?" dialog box */ +SOKOL_APP_API_DECL void sapp_html5_ask_leave_site(bool ask); +/* HTML5: get byte size of a dropped file */ +SOKOL_APP_API_DECL uint32_t sapp_html5_get_dropped_file_size(int index); +/* HTML5: asynchronously load the content of a dropped file */ +SOKOL_APP_API_DECL void sapp_html5_fetch_dropped_file(const sapp_html5_fetch_request* request); + +/* Metal: get bridged pointer to Metal device object */ +SOKOL_APP_API_DECL const void* sapp_metal_get_device(void); +/* Metal: get bridged pointer to this frame's renderpass descriptor */ +SOKOL_APP_API_DECL const void* sapp_metal_get_renderpass_descriptor(void); +/* Metal: get bridged pointer to current drawable */ +SOKOL_APP_API_DECL const void* sapp_metal_get_drawable(void); +/* macOS: get bridged pointer to macOS NSWindow */ +SOKOL_APP_API_DECL const void* sapp_macos_get_window(void); +/* iOS: get bridged pointer to iOS UIWindow */ +SOKOL_APP_API_DECL const void* sapp_ios_get_window(void); + +/* D3D11: get pointer to ID3D11Device object */ +SOKOL_APP_API_DECL const void* sapp_d3d11_get_device(void); +/* D3D11: get pointer to ID3D11DeviceContext object */ +SOKOL_APP_API_DECL const void* sapp_d3d11_get_device_context(void); +/* D3D11: get pointer to IDXGISwapChain object */ +SOKOL_APP_API_DECL const void* sapp_d3d11_get_swap_chain(void); +/* D3D11: get pointer to ID3D11RenderTargetView object */ +SOKOL_APP_API_DECL const void* sapp_d3d11_get_render_target_view(void); +/* D3D11: get pointer to ID3D11DepthStencilView */ +SOKOL_APP_API_DECL const void* sapp_d3d11_get_depth_stencil_view(void); +/* Win32: get the HWND window handle */ +SOKOL_APP_API_DECL const void* sapp_win32_get_hwnd(void); + +/* WebGPU: get WGPUDevice handle */ +SOKOL_APP_API_DECL const void* sapp_wgpu_get_device(void); +/* WebGPU: get swapchain's WGPUTextureView handle for rendering */ +SOKOL_APP_API_DECL const void* sapp_wgpu_get_render_view(void); +/* WebGPU: get swapchain's MSAA-resolve WGPUTextureView (may return null) */ +SOKOL_APP_API_DECL const void* sapp_wgpu_get_resolve_view(void); +/* WebGPU: get swapchain's WGPUTextureView for the depth-stencil surface */ +SOKOL_APP_API_DECL const void* sapp_wgpu_get_depth_stencil_view(void); + +/* Android: get native activity handle */ +SOKOL_APP_API_DECL const void* sapp_android_get_native_activity(void); + +#ifdef __cplusplus +} /* extern "C" */ + +/* reference-based equivalents for C++ */ +inline void sapp_run(const sapp_desc& desc) { return sapp_run(&desc); } + +#endif + +// this WinRT specific hack is required when wWinMain is in a static library +#if defined(_MSC_VER) && defined(UNICODE) +#include +#if defined(WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +#pragma comment(linker, "/include:wWinMain") +#endif +#endif + +#endif // SOKOL_APP_INCLUDED + +// ██ ███ ███ ██████ ██ ███████ ███ ███ ███████ ███ ██ ████████ █████ ████████ ██ ██████ ███ ██ +// ██ ████ ████ ██ ██ ██ ██ ████ ████ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ +// ██ ██ ████ ██ ██████ ██ █████ ██ ████ ██ █████ ██ ██ ██ ██ ███████ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ███████ ███████ ██ ██ ███████ ██ ████ ██ ██ ██ ██ ██ ██████ ██ ████ +// +// >>implementation +#ifdef SOKOL_APP_IMPL +#define SOKOL_APP_IMPL_INCLUDED (1) + +#if defined(SOKOL_MALLOC) || defined(SOKOL_CALLOC) || defined(SOKOL_FREE) +#error "SOKOL_MALLOC/CALLOC/FREE macros are no longer supported, please use sapp_desc.allocator to override memory allocation functions" +#endif + +#include // malloc, free +#include // memset +#include // size_t +#include // roundf + +/* check if the config defines are alright */ +#if defined(__APPLE__) + // see https://clang.llvm.org/docs/LanguageExtensions.html#automatic-reference-counting + #if !defined(__cplusplus) + #if __has_feature(objc_arc) && !__has_feature(objc_arc_fields) + #error "sokol_app.h requires __has_feature(objc_arc_field) if ARC is enabled (use a more recent compiler version)" + #endif + #endif + #define _SAPP_APPLE (1) + #include + #if defined(TARGET_OS_IPHONE) && !TARGET_OS_IPHONE + /* MacOS */ + #define _SAPP_MACOS (1) + #if !defined(SOKOL_METAL) && !defined(SOKOL_GLCORE33) + #error("sokol_app.h: unknown 3D API selected for MacOS, must be SOKOL_METAL or SOKOL_GLCORE33") + #endif + #else + /* iOS or iOS Simulator */ + #define _SAPP_IOS (1) + #if !defined(SOKOL_METAL) && !defined(SOKOL_GLES3) + #error("sokol_app.h: unknown 3D API selected for iOS, must be SOKOL_METAL or SOKOL_GLES3") + #endif + #endif +#elif defined(__EMSCRIPTEN__) + /* emscripten (asm.js or wasm) */ + #define _SAPP_EMSCRIPTEN (1) + #if !defined(SOKOL_GLES3) && !defined(SOKOL_WGPU) + #error("sokol_app.h: unknown 3D API selected for emscripten, must be SOKOL_GLES3 or SOKOL_WGPU") + #endif +#elif defined(_WIN32) + /* Windows (D3D11 or GL) */ + #define _SAPP_WIN32 (1) + #if !defined(SOKOL_D3D11) && !defined(SOKOL_GLCORE33) + #error("sokol_app.h: unknown 3D API selected for Win32, must be SOKOL_D3D11 or SOKOL_GLCORE33") + #endif +#elif defined(__ANDROID__) + /* Android */ + #define _SAPP_ANDROID (1) + #if !defined(SOKOL_GLES3) + #error("sokol_app.h: unknown 3D API selected for Android, must be SOKOL_GLES3") + #endif + #if defined(SOKOL_NO_ENTRY) + #error("sokol_app.h: SOKOL_NO_ENTRY is not supported on Android") + #endif +#elif defined(__linux__) || defined(__unix__) + /* Linux */ + #define _SAPP_LINUX (1) + #if defined(SOKOL_GLCORE33) + #if !defined(SOKOL_FORCE_EGL) + #define _SAPP_GLX (1) + #endif + #elif !defined(SOKOL_GLES3) + #error("sokol_app.h: unknown 3D API selected for Linux, must be SOKOL_GLCORE33, SOKOL_GLES3") + #endif +#else +#error "sokol_app.h: Unknown platform" +#endif + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_DEBUG + #ifndef NDEBUG + #define SOKOL_DEBUG + #endif +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif +#ifndef SOKOL_UNREACHABLE + #define SOKOL_UNREACHABLE SOKOL_ASSERT(false) +#endif + +#ifndef _SOKOL_PRIVATE + #if defined(__GNUC__) || defined(__clang__) + #define _SOKOL_PRIVATE __attribute__((unused)) static + #else + #define _SOKOL_PRIVATE static + #endif +#endif +#ifndef _SOKOL_UNUSED + #define _SOKOL_UNUSED(x) (void)(x) +#endif + +#if defined(_SAPP_APPLE) + #if defined(SOKOL_METAL) + #import + #import + #endif + #if defined(_SAPP_MACOS) + #if !defined(SOKOL_METAL) + #ifndef GL_SILENCE_DEPRECATION + #define GL_SILENCE_DEPRECATION + #endif + #include + #endif + #elif defined(_SAPP_IOS) + #import + #if !defined(SOKOL_METAL) + #import + #endif + #endif + #include + #include +#elif defined(_SAPP_EMSCRIPTEN) + #if defined(SOKOL_WGPU) + #include + #endif + #include + #include +#elif defined(_SAPP_WIN32) + #ifdef _MSC_VER + #pragma warning(push) + #pragma warning(disable:4201) /* nonstandard extension used: nameless struct/union */ + #pragma warning(disable:4204) /* nonstandard extension used: non-constant aggregate initializer */ + #pragma warning(disable:4054) /* 'type cast': from function pointer */ + #pragma warning(disable:4055) /* 'type cast': from data pointer */ + #pragma warning(disable:4505) /* unreferenced local function has been removed */ + #pragma warning(disable:4115) /* /W4: 'ID3D11ModuleInstance': named type definition in parentheses (in d3d11.h) */ + #endif + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif + #ifndef NOMINMAX + #define NOMINMAX + #endif + #include + #include + #include + #if !defined(SOKOL_NO_ENTRY) // if SOKOL_NO_ENTRY is defined, it's the applications' responsibility to use the right subsystem + #if defined(SOKOL_WIN32_FORCE_MAIN) + #pragma comment (linker, "/subsystem:console") + #else + #pragma comment (linker, "/subsystem:windows") + #endif + #endif + #include /* freopen_s() */ + #include /* wcslen() */ + + #pragma comment (lib, "kernel32") + #pragma comment (lib, "user32") + #pragma comment (lib, "shell32") /* CommandLineToArgvW, DragQueryFileW, DragFinished */ + #pragma comment (lib, "gdi32") + #if defined(SOKOL_D3D11) + #pragma comment (lib, "dxgi") + #pragma comment (lib, "d3d11") + #endif + + #if defined(SOKOL_D3D11) + #ifndef D3D11_NO_HELPERS + #define D3D11_NO_HELPERS + #endif + #include + #include + // DXGI_SWAP_EFFECT_FLIP_DISCARD is only defined in newer Windows SDKs, so don't depend on it + #define _SAPP_DXGI_SWAP_EFFECT_FLIP_DISCARD (4) + #endif + #ifndef WM_MOUSEHWHEEL /* see https://github.com/floooh/sokol/issues/138 */ + #define WM_MOUSEHWHEEL (0x020E) + #endif + #ifndef WM_DPICHANGED + #define WM_DPICHANGED (0x02E0) + #endif +#elif defined(_SAPP_ANDROID) + #include + #include + #include + #include + #include + #include +#elif defined(_SAPP_LINUX) + #define GL_GLEXT_PROTOTYPES + #include + #include + #include + #include + #include + #include + #include + #include + #include /* XC_* font cursors */ + #include /* CARD32 */ + #if !defined(_SAPP_GLX) + #include + #endif + #include /* dlopen, dlsym, dlclose */ + #include /* LONG_MAX */ + #include /* only used a linker-guard, search for _sapp_linux_run() and see first comment */ + #include +#endif + +// ███████ ██████ █████ ███ ███ ███████ ████████ ██ ███ ███ ██ ███ ██ ██████ +// ██ ██ ██ ██ ██ ████ ████ ██ ██ ██ ████ ████ ██ ████ ██ ██ +// █████ ██████ ███████ ██ ████ ██ █████ ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ███ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ███████ ██ ██ ██ ██ ██ ██ ████ ██████ +// +// >>frame timing +#define _SAPP_RING_NUM_SLOTS (256) +typedef struct { + int head; + int tail; + double buf[_SAPP_RING_NUM_SLOTS]; +} _sapp_ring_t; + +_SOKOL_PRIVATE int _sapp_ring_idx(int i) { + return i % _SAPP_RING_NUM_SLOTS; +} + +_SOKOL_PRIVATE void _sapp_ring_init(_sapp_ring_t* ring) { + ring->head = 0; + ring->tail = 0; +} + +_SOKOL_PRIVATE bool _sapp_ring_full(_sapp_ring_t* ring) { + return _sapp_ring_idx(ring->head + 1) == ring->tail; +} + +_SOKOL_PRIVATE bool _sapp_ring_empty(_sapp_ring_t* ring) { + return ring->head == ring->tail; +} + +_SOKOL_PRIVATE int _sapp_ring_count(_sapp_ring_t* ring) { + int count; + if (ring->head >= ring->tail) { + count = ring->head - ring->tail; + } + else { + count = (ring->head + _SAPP_RING_NUM_SLOTS) - ring->tail; + } + SOKOL_ASSERT((count >= 0) && (count < _SAPP_RING_NUM_SLOTS)); + return count; +} + +_SOKOL_PRIVATE void _sapp_ring_enqueue(_sapp_ring_t* ring, double val) { + SOKOL_ASSERT(!_sapp_ring_full(ring)); + ring->buf[ring->head] = val; + ring->head = _sapp_ring_idx(ring->head + 1); +} + +_SOKOL_PRIVATE double _sapp_ring_dequeue(_sapp_ring_t* ring) { + SOKOL_ASSERT(!_sapp_ring_empty(ring)); + double val = ring->buf[ring->tail]; + ring->tail = _sapp_ring_idx(ring->tail + 1); + return val; +} + +/* + NOTE: + + Q: Why not use CAMetalDrawable.presentedTime on macOS and iOS? + A: The value appears to be highly unstable during the first few + seconds, sometimes several frames are dropped in sequence, or + switch between 120 and 60 Hz for a few frames. Simply measuring + and averaging the frame time yielded a more stable frame duration. + Maybe switching to CVDisplayLink would yield better results. + Until then just measure the time. +*/ +typedef struct { + #if defined(_SAPP_APPLE) + struct { + mach_timebase_info_data_t timebase; + uint64_t start; + } mach; + #elif defined(_SAPP_EMSCRIPTEN) + // empty + #elif defined(_SAPP_WIN32) + struct { + LARGE_INTEGER freq; + LARGE_INTEGER start; + } win; + #else // Linux, Android, ... + #ifdef CLOCK_MONOTONIC + #define _SAPP_CLOCK_MONOTONIC CLOCK_MONOTONIC + #else + // on some embedded platforms, CLOCK_MONOTONIC isn't defined + #define _SAPP_CLOCK_MONOTONIC (1) + #endif + struct { + uint64_t start; + } posix; + #endif +} _sapp_timestamp_t; + +_SOKOL_PRIVATE int64_t _sapp_int64_muldiv(int64_t value, int64_t numer, int64_t denom) { + int64_t q = value / denom; + int64_t r = value % denom; + return q * numer + r * numer / denom; +} + +_SOKOL_PRIVATE void _sapp_timestamp_init(_sapp_timestamp_t* ts) { + #if defined(_SAPP_APPLE) + mach_timebase_info(&ts->mach.timebase); + ts->mach.start = mach_absolute_time(); + #elif defined(_SAPP_EMSCRIPTEN) + (void)ts; + #elif defined(_SAPP_WIN32) + QueryPerformanceFrequency(&ts->win.freq); + QueryPerformanceCounter(&ts->win.start); + #else + struct timespec tspec; + clock_gettime(_SAPP_CLOCK_MONOTONIC, &tspec); + ts->posix.start = (uint64_t)tspec.tv_sec*1000000000 + (uint64_t)tspec.tv_nsec; + #endif +} + +_SOKOL_PRIVATE double _sapp_timestamp_now(_sapp_timestamp_t* ts) { + #if defined(_SAPP_APPLE) + const uint64_t traw = mach_absolute_time() - ts->mach.start; + const uint64_t now = (uint64_t) _sapp_int64_muldiv((int64_t)traw, (int64_t)ts->mach.timebase.numer, (int64_t)ts->mach.timebase.denom); + return (double)now / 1000000000.0; + #elif defined(_SAPP_EMSCRIPTEN) + (void)ts; + SOKOL_ASSERT(false); + return 0.0; + #elif defined(_SAPP_WIN32) + LARGE_INTEGER qpc; + QueryPerformanceCounter(&qpc); + const uint64_t now = (uint64_t)_sapp_int64_muldiv(qpc.QuadPart - ts->win.start.QuadPart, 1000000000, ts->win.freq.QuadPart); + return (double)now / 1000000000.0; + #else + struct timespec tspec; + clock_gettime(_SAPP_CLOCK_MONOTONIC, &tspec); + const uint64_t now = ((uint64_t)tspec.tv_sec*1000000000 + (uint64_t)tspec.tv_nsec) - ts->posix.start; + return (double)now / 1000000000.0; + #endif +} + +typedef struct { + double last; + double accum; + double avg; + int spike_count; + int num; + _sapp_timestamp_t timestamp; + _sapp_ring_t ring; +} _sapp_timing_t; + +_SOKOL_PRIVATE void _sapp_timing_reset(_sapp_timing_t* t) { + t->last = 0.0; + t->accum = 0.0; + t->spike_count = 0; + t->num = 0; + _sapp_ring_init(&t->ring); +} + +_SOKOL_PRIVATE void _sapp_timing_init(_sapp_timing_t* t) { + t->avg = 1.0 / 60.0; // dummy value until first actual value is available + _sapp_timing_reset(t); + _sapp_timestamp_init(&t->timestamp); +} + +_SOKOL_PRIVATE void _sapp_timing_put(_sapp_timing_t* t, double dur) { + // arbitrary upper limit to ignore outliers (e.g. during window resizing, or debugging) + double min_dur = 0.0; + double max_dur = 0.1; + // if we have enough samples for a useful average, use a much tighter 'valid window' + if (_sapp_ring_full(&t->ring)) { + min_dur = t->avg * 0.8; + max_dur = t->avg * 1.2; + } + if ((dur < min_dur) || (dur > max_dur)) { + t->spike_count++; + // if there have been many spikes in a row, the display refresh rate + // might have changed, so a timing reset is needed + if (t->spike_count > 20) { + _sapp_timing_reset(t); + } + return; + } + if (_sapp_ring_full(&t->ring)) { + double old_val = _sapp_ring_dequeue(&t->ring); + t->accum -= old_val; + t->num -= 1; + } + _sapp_ring_enqueue(&t->ring, dur); + t->accum += dur; + t->num += 1; + SOKOL_ASSERT(t->num > 0); + t->avg = t->accum / t->num; + t->spike_count = 0; +} + +_SOKOL_PRIVATE void _sapp_timing_discontinuity(_sapp_timing_t* t) { + t->last = 0.0; +} + +_SOKOL_PRIVATE void _sapp_timing_measure(_sapp_timing_t* t) { + const double now = _sapp_timestamp_now(&t->timestamp); + if (t->last > 0.0) { + double dur = now - t->last; + _sapp_timing_put(t, dur); + } + t->last = now; +} + +_SOKOL_PRIVATE void _sapp_timing_external(_sapp_timing_t* t, double now) { + if (t->last > 0.0) { + double dur = now - t->last; + _sapp_timing_put(t, dur); + } + t->last = now; +} + +_SOKOL_PRIVATE double _sapp_timing_get_avg(_sapp_timing_t* t) { + return t->avg; +} + +// ███████ ████████ ██████ ██ ██ ██████ ████████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██████ ██ ██ ██ ██ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██ ██ ██████ ██████ ██ ███████ +// +// >> structs +#if defined(_SAPP_MACOS) +@interface _sapp_macos_app_delegate : NSObject +@end +@interface _sapp_macos_window : NSWindow +@end +@interface _sapp_macos_window_delegate : NSObject +@end +#if defined(SOKOL_METAL) + @interface _sapp_macos_view : MTKView + @end +#elif defined(SOKOL_GLCORE33) + @interface _sapp_macos_view : NSOpenGLView + - (void)timerFired:(id)sender; + @end +#endif // SOKOL_GLCORE33 + +typedef struct { + uint32_t flags_changed_store; + uint8_t mouse_buttons; + NSWindow* window; + NSTrackingArea* tracking_area; + id keyup_monitor; + _sapp_macos_app_delegate* app_dlg; + _sapp_macos_window_delegate* win_dlg; + _sapp_macos_view* view; + NSCursor* cursors[_SAPP_MOUSECURSOR_NUM]; + #if defined(SOKOL_METAL) + id mtl_device; + #endif +} _sapp_macos_t; + +#endif // _SAPP_MACOS + +#if defined(_SAPP_IOS) + +@interface _sapp_app_delegate : NSObject +@end +@interface _sapp_textfield_dlg : NSObject +- (void)keyboardWasShown:(NSNotification*)notif; +- (void)keyboardWillBeHidden:(NSNotification*)notif; +- (void)keyboardDidChangeFrame:(NSNotification*)notif; +@end +#if defined(SOKOL_METAL) + @interface _sapp_ios_view : MTKView; + @end +#else + @interface _sapp_ios_view : GLKView + @end +#endif + +typedef struct { + UIWindow* window; + _sapp_ios_view* view; + UITextField* textfield; + _sapp_textfield_dlg* textfield_dlg; + #if defined(SOKOL_METAL) + UIViewController* view_ctrl; + id mtl_device; + #else + GLKViewController* view_ctrl; + EAGLContext* eagl_ctx; + #endif + bool suspended; +} _sapp_ios_t; + +#endif // _SAPP_IOS + +#if defined(_SAPP_EMSCRIPTEN) + +#if defined(SOKOL_WGPU) +typedef struct { + int state; + WGPUDevice device; + WGPUSwapChain swapchain; + WGPUTextureFormat render_format; + WGPUTexture msaa_tex; + WGPUTexture depth_stencil_tex; + WGPUTextureView swapchain_view; + WGPUTextureView msaa_view; + WGPUTextureView depth_stencil_view; +} _sapp_wgpu_t; +#endif + +typedef struct { + bool textfield_created; + bool wants_show_keyboard; + bool wants_hide_keyboard; + bool mouse_lock_requested; + uint16_t mouse_buttons; + #if defined(SOKOL_WGPU) + _sapp_wgpu_t wgpu; + #endif +} _sapp_emsc_t; +#endif // _SAPP_EMSCRIPTEN + +#if defined(SOKOL_D3D11) && defined(_SAPP_WIN32) +typedef struct { + ID3D11Device* device; + ID3D11DeviceContext* device_context; + ID3D11Texture2D* rt; + ID3D11RenderTargetView* rtv; + ID3D11Texture2D* msaa_rt; + ID3D11RenderTargetView* msaa_rtv; + ID3D11Texture2D* ds; + ID3D11DepthStencilView* dsv; + DXGI_SWAP_CHAIN_DESC swap_chain_desc; + IDXGISwapChain* swap_chain; + IDXGIDevice1* dxgi_device; + bool use_dxgi_frame_stats; + UINT sync_refresh_count; +} _sapp_d3d11_t; +#endif + +#if defined(_SAPP_WIN32) + +#ifndef DPI_ENUMS_DECLARED +typedef enum PROCESS_DPI_AWARENESS +{ + PROCESS_DPI_UNAWARE = 0, + PROCESS_SYSTEM_DPI_AWARE = 1, + PROCESS_PER_MONITOR_DPI_AWARE = 2 +} PROCESS_DPI_AWARENESS; +typedef enum MONITOR_DPI_TYPE { + MDT_EFFECTIVE_DPI = 0, + MDT_ANGULAR_DPI = 1, + MDT_RAW_DPI = 2, + MDT_DEFAULT = MDT_EFFECTIVE_DPI +} MONITOR_DPI_TYPE; +#endif /*DPI_ENUMS_DECLARED*/ + +typedef struct { + bool aware; + float content_scale; + float window_scale; + float mouse_scale; +} _sapp_win32_dpi_t; + +typedef struct { + HWND hwnd; + HMONITOR hmonitor; + HDC dc; + HICON big_icon; + HICON small_icon; + HCURSOR cursors[_SAPP_MOUSECURSOR_NUM]; + UINT orig_codepage; + LONG mouse_locked_x, mouse_locked_y; + RECT stored_window_rect; // used to restore window pos/size when toggling fullscreen => windowed + bool is_win10_or_greater; + bool in_create_window; + bool iconified; + bool mouse_tracked; + uint8_t mouse_capture_mask; + _sapp_win32_dpi_t dpi; + bool raw_input_mousepos_valid; + LONG raw_input_mousepos_x; + LONG raw_input_mousepos_y; + uint8_t raw_input_data[256]; +} _sapp_win32_t; + +#if defined(SOKOL_GLCORE33) +#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 +#define WGL_SUPPORT_OPENGL_ARB 0x2010 +#define WGL_DRAW_TO_WINDOW_ARB 0x2001 +#define WGL_PIXEL_TYPE_ARB 0x2013 +#define WGL_TYPE_RGBA_ARB 0x202b +#define WGL_ACCELERATION_ARB 0x2003 +#define WGL_NO_ACCELERATION_ARB 0x2025 +#define WGL_RED_BITS_ARB 0x2015 +#define WGL_GREEN_BITS_ARB 0x2017 +#define WGL_BLUE_BITS_ARB 0x2019 +#define WGL_ALPHA_BITS_ARB 0x201b +#define WGL_DEPTH_BITS_ARB 0x2022 +#define WGL_STENCIL_BITS_ARB 0x2023 +#define WGL_DOUBLE_BUFFER_ARB 0x2011 +#define WGL_SAMPLES_ARB 0x2042 +#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 +#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 +#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define WGL_CONTEXT_FLAGS_ARB 0x2094 +#define ERROR_INVALID_VERSION_ARB 0x2095 +#define ERROR_INVALID_PROFILE_ARB 0x2096 +#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 +typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC)(int); +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC)(HDC,int,int,UINT,const int*,int*); +typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC)(void); +typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC); +typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC)(HDC,HGLRC,const int*); +typedef HGLRC (WINAPI * PFN_wglCreateContext)(HDC); +typedef BOOL (WINAPI * PFN_wglDeleteContext)(HGLRC); +typedef PROC (WINAPI * PFN_wglGetProcAddress)(LPCSTR); +typedef HDC (WINAPI * PFN_wglGetCurrentDC)(void); +typedef BOOL (WINAPI * PFN_wglMakeCurrent)(HDC,HGLRC); + +typedef struct { + HINSTANCE opengl32; + HGLRC gl_ctx; + PFN_wglCreateContext CreateContext; + PFN_wglDeleteContext DeleteContext; + PFN_wglGetProcAddress GetProcAddress; + PFN_wglGetCurrentDC GetCurrentDC; + PFN_wglMakeCurrent MakeCurrent; + PFNWGLSWAPINTERVALEXTPROC SwapIntervalEXT; + PFNWGLGETPIXELFORMATATTRIBIVARBPROC GetPixelFormatAttribivARB; + PFNWGLGETEXTENSIONSSTRINGEXTPROC GetExtensionsStringEXT; + PFNWGLGETEXTENSIONSSTRINGARBPROC GetExtensionsStringARB; + PFNWGLCREATECONTEXTATTRIBSARBPROC CreateContextAttribsARB; + bool ext_swap_control; + bool arb_multisample; + bool arb_pixel_format; + bool arb_create_context; + bool arb_create_context_profile; + HWND msg_hwnd; + HDC msg_dc; +} _sapp_wgl_t; +#endif // SOKOL_GLCORE33 + +#endif // _SAPP_WIN32 + +#if defined(_SAPP_ANDROID) +typedef enum { + _SOKOL_ANDROID_MSG_CREATE, + _SOKOL_ANDROID_MSG_RESUME, + _SOKOL_ANDROID_MSG_PAUSE, + _SOKOL_ANDROID_MSG_FOCUS, + _SOKOL_ANDROID_MSG_NO_FOCUS, + _SOKOL_ANDROID_MSG_SET_NATIVE_WINDOW, + _SOKOL_ANDROID_MSG_SET_INPUT_QUEUE, + _SOKOL_ANDROID_MSG_DESTROY, +} _sapp_android_msg_t; + +typedef struct { + pthread_t thread; + pthread_mutex_t mutex; + pthread_cond_t cond; + int read_from_main_fd; + int write_from_main_fd; +} _sapp_android_pt_t; + +typedef struct { + ANativeWindow* window; + AInputQueue* input; +} _sapp_android_resources_t; + +typedef struct { + ANativeActivity* activity; + _sapp_android_pt_t pt; + _sapp_android_resources_t pending; + _sapp_android_resources_t current; + ALooper* looper; + bool is_thread_started; + bool is_thread_stopping; + bool is_thread_stopped; + bool has_created; + bool has_resumed; + bool has_focus; + EGLConfig config; + EGLDisplay display; + EGLContext context; + EGLSurface surface; +} _sapp_android_t; + +#endif // _SAPP_ANDROID + +#if defined(_SAPP_LINUX) + +#define _SAPP_X11_XDND_VERSION (5) + +#define GLX_VENDOR 1 +#define GLX_RGBA_BIT 0x00000001 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_DRAWABLE_TYPE 0x8010 +#define GLX_RENDER_TYPE 0x8011 +#define GLX_DOUBLEBUFFER 5 +#define GLX_RED_SIZE 8 +#define GLX_GREEN_SIZE 9 +#define GLX_BLUE_SIZE 10 +#define GLX_ALPHA_SIZE 11 +#define GLX_DEPTH_SIZE 12 +#define GLX_STENCIL_SIZE 13 +#define GLX_SAMPLES 0x186a1 +#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 +#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 +#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define GLX_CONTEXT_FLAGS_ARB 0x2094 + +typedef XID GLXWindow; +typedef XID GLXDrawable; +typedef struct __GLXFBConfig* GLXFBConfig; +typedef struct __GLXcontext* GLXContext; +typedef void (*__GLXextproc)(void); + +typedef int (*PFNGLXGETFBCONFIGATTRIBPROC)(Display*,GLXFBConfig,int,int*); +typedef const char* (*PFNGLXGETCLIENTSTRINGPROC)(Display*,int); +typedef Bool (*PFNGLXQUERYEXTENSIONPROC)(Display*,int*,int*); +typedef Bool (*PFNGLXQUERYVERSIONPROC)(Display*,int*,int*); +typedef void (*PFNGLXDESTROYCONTEXTPROC)(Display*,GLXContext); +typedef Bool (*PFNGLXMAKECURRENTPROC)(Display*,GLXDrawable,GLXContext); +typedef void (*PFNGLXSWAPBUFFERSPROC)(Display*,GLXDrawable); +typedef const char* (*PFNGLXQUERYEXTENSIONSSTRINGPROC)(Display*,int); +typedef GLXFBConfig* (*PFNGLXGETFBCONFIGSPROC)(Display*,int,int*); +typedef __GLXextproc (* PFNGLXGETPROCADDRESSPROC)(const char *procName); +typedef void (*PFNGLXSWAPINTERVALEXTPROC)(Display*,GLXDrawable,int); +typedef XVisualInfo* (*PFNGLXGETVISUALFROMFBCONFIGPROC)(Display*,GLXFBConfig); +typedef GLXWindow (*PFNGLXCREATEWINDOWPROC)(Display*,GLXFBConfig,Window,const int*); +typedef void (*PFNGLXDESTROYWINDOWPROC)(Display*,GLXWindow); + +typedef int (*PFNGLXSWAPINTERVALMESAPROC)(int); +typedef GLXContext (*PFNGLXCREATECONTEXTATTRIBSARBPROC)(Display*,GLXFBConfig,GLXContext,Bool,const int*); + +typedef struct { + bool available; + int major_opcode; + int event_base; + int error_base; + int major; + int minor; +} _sapp_xi_t; + +typedef struct { + int version; + Window source; + Atom format; + Atom XdndAware; + Atom XdndEnter; + Atom XdndPosition; + Atom XdndStatus; + Atom XdndActionCopy; + Atom XdndDrop; + Atom XdndFinished; + Atom XdndSelection; + Atom XdndTypeList; + Atom text_uri_list; +} _sapp_xdnd_t; + +typedef struct { + uint8_t mouse_buttons; + Display* display; + int screen; + Window root; + Colormap colormap; + Window window; + Cursor hidden_cursor; + Cursor cursors[_SAPP_MOUSECURSOR_NUM]; + int window_state; + float dpi; + unsigned char error_code; + Atom UTF8_STRING; + Atom WM_PROTOCOLS; + Atom WM_DELETE_WINDOW; + Atom WM_STATE; + Atom NET_WM_NAME; + Atom NET_WM_ICON_NAME; + Atom NET_WM_ICON; + Atom NET_WM_STATE; + Atom NET_WM_STATE_FULLSCREEN; + _sapp_xi_t xi; + _sapp_xdnd_t xdnd; +} _sapp_x11_t; + +#if defined(_SAPP_GLX) + +typedef struct { + void* libgl; + int major; + int minor; + int event_base; + int error_base; + GLXContext ctx; + GLXWindow window; + + // GLX 1.3 functions + PFNGLXGETFBCONFIGSPROC GetFBConfigs; + PFNGLXGETFBCONFIGATTRIBPROC GetFBConfigAttrib; + PFNGLXGETCLIENTSTRINGPROC GetClientString; + PFNGLXQUERYEXTENSIONPROC QueryExtension; + PFNGLXQUERYVERSIONPROC QueryVersion; + PFNGLXDESTROYCONTEXTPROC DestroyContext; + PFNGLXMAKECURRENTPROC MakeCurrent; + PFNGLXSWAPBUFFERSPROC SwapBuffers; + PFNGLXQUERYEXTENSIONSSTRINGPROC QueryExtensionsString; + PFNGLXGETVISUALFROMFBCONFIGPROC GetVisualFromFBConfig; + PFNGLXCREATEWINDOWPROC CreateWindow; + PFNGLXDESTROYWINDOWPROC DestroyWindow; + + // GLX 1.4 and extension functions + PFNGLXGETPROCADDRESSPROC GetProcAddress; + PFNGLXGETPROCADDRESSPROC GetProcAddressARB; + PFNGLXSWAPINTERVALEXTPROC SwapIntervalEXT; + PFNGLXSWAPINTERVALMESAPROC SwapIntervalMESA; + PFNGLXCREATECONTEXTATTRIBSARBPROC CreateContextAttribsARB; + + // extension availability + bool EXT_swap_control; + bool MESA_swap_control; + bool ARB_multisample; + bool ARB_create_context; + bool ARB_create_context_profile; +} _sapp_glx_t; + +#else + +typedef struct { + EGLDisplay display; + EGLContext context; + EGLSurface surface; +} _sapp_egl_t; + +#endif // _SAPP_GLX + +#endif // _SAPP_LINUX + +/* helper macros */ +#define _sapp_def(val, def) (((val) == 0) ? (def) : (val)) +#define _sapp_absf(a) (((a)<0.0f)?-(a):(a)) + +#define _SAPP_MAX_TITLE_LENGTH (128) +#define _SAPP_FALLBACK_DEFAULT_WINDOW_WIDTH (640) +#define _SAPP_FALLBACK_DEFAULT_WINDOW_HEIGHT (480) +/* NOTE: the pixel format values *must* be compatible with sg_pixel_format */ +#define _SAPP_PIXELFORMAT_RGBA8 (23) +#define _SAPP_PIXELFORMAT_BGRA8 (28) +#define _SAPP_PIXELFORMAT_DEPTH (42) +#define _SAPP_PIXELFORMAT_DEPTH_STENCIL (43) + +#if defined(_SAPP_MACOS) || defined(_SAPP_IOS) + // this is ARC compatible + #if defined(__cplusplus) + #define _SAPP_CLEAR_ARC_STRUCT(type, item) { item = type(); } + #else + #define _SAPP_CLEAR_ARC_STRUCT(type, item) { item = (type) { 0 }; } + #endif +#else + #define _SAPP_CLEAR_ARC_STRUCT(type, item) { _sapp_clear(&item, sizeof(item)); } +#endif + +typedef struct { + bool enabled; + int buf_size; + char* buffer; +} _sapp_clipboard_t; + +typedef struct { + bool enabled; + int max_files; + int max_path_length; + int num_files; + int buf_size; + char* buffer; +} _sapp_drop_t; + +typedef struct { + float x, y; + float dx, dy; + bool shown; + bool locked; + bool pos_valid; + sapp_mouse_cursor current_cursor; +} _sapp_mouse_t; + +typedef struct { + sapp_desc desc; + bool valid; + bool fullscreen; + bool first_frame; + bool init_called; + bool cleanup_called; + bool quit_requested; + bool quit_ordered; + bool event_consumed; + bool html5_ask_leave_site; + bool onscreen_keyboard_shown; + int window_width; + int window_height; + int framebuffer_width; + int framebuffer_height; + int sample_count; + int swap_interval; + float dpi_scale; + uint64_t frame_count; + _sapp_timing_t timing; + sapp_event event; + _sapp_mouse_t mouse; + _sapp_clipboard_t clipboard; + _sapp_drop_t drop; + sapp_icon_desc default_icon_desc; + uint32_t* default_icon_pixels; + #if defined(_SAPP_MACOS) + _sapp_macos_t macos; + #elif defined(_SAPP_IOS) + _sapp_ios_t ios; + #elif defined(_SAPP_EMSCRIPTEN) + _sapp_emsc_t emsc; + #elif defined(_SAPP_WIN32) + _sapp_win32_t win32; + #if defined(SOKOL_D3D11) + _sapp_d3d11_t d3d11; + #elif defined(SOKOL_GLCORE33) + _sapp_wgl_t wgl; + #endif + #elif defined(_SAPP_ANDROID) + _sapp_android_t android; + #elif defined(_SAPP_LINUX) + _sapp_x11_t x11; + #if defined(_SAPP_GLX) + _sapp_glx_t glx; + #else + _sapp_egl_t egl; + #endif + #endif + char html5_canvas_selector[_SAPP_MAX_TITLE_LENGTH]; + char window_title[_SAPP_MAX_TITLE_LENGTH]; /* UTF-8 */ + wchar_t window_title_wide[_SAPP_MAX_TITLE_LENGTH]; /* UTF-32 or UCS-2 */ + sapp_keycode keycodes[SAPP_MAX_KEYCODES]; +} _sapp_t; +static _sapp_t _sapp; + +// ██ ██████ ██████ ██████ ██ ███ ██ ██████ +// ██ ██ ██ ██ ██ ██ ████ ██ ██ +// ██ ██ ██ ██ ███ ██ ███ ██ ██ ██ ██ ██ ███ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██████ ██████ ██████ ██ ██ ████ ██████ +// +// >>logging +#if defined(SOKOL_DEBUG) +#define _SAPP_LOGITEM_XMACRO(item,msg) #item ": " msg, +static const char* _sapp_log_messages[] = { + _SAPP_LOG_ITEMS +}; +#undef _SAPP_LOGITEM_XMACRO +#endif // SOKOL_DEBUG + +#define _SAPP_PANIC(code) _sapp_log(SAPP_LOGITEM_ ##code, 0, 0, __LINE__) +#define _SAPP_ERROR(code) _sapp_log(SAPP_LOGITEM_ ##code, 1, 0, __LINE__) +#define _SAPP_WARN(code) _sapp_log(SAPP_LOGITEM_ ##code, 2, 0, __LINE__) +#define _SAPP_INFO(code) _sapp_log(SAPP_LOGITEM_ ##code, 3, 0, __LINE__) + +static void _sapp_log(sapp_log_item log_item, uint32_t log_level, const char* msg, uint32_t line_nr) { + if (_sapp.desc.logger.func) { + const char* filename = 0; + #if defined(SOKOL_DEBUG) + filename = __FILE__; + if (0 == msg) { + msg = _sapp_log_messages[log_item]; + } + #endif + _sapp.desc.logger.func("sapp", log_level, log_item, msg, line_nr, filename, _sapp.desc.logger.user_data); + } + else { + // for log level PANIC it would be 'undefined behaviour' to continue + if (log_level == 0) { + abort(); + } + } +} + +// ███ ███ ███████ ███ ███ ██████ ██████ ██ ██ +// ████ ████ ██ ████ ████ ██ ██ ██ ██ ██ ██ +// ██ ████ ██ █████ ██ ████ ██ ██ ██ ██████ ████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ██ ██ ██████ ██ ██ ██ +// +// >>memory +_SOKOL_PRIVATE void _sapp_clear(void* ptr, size_t size) { + SOKOL_ASSERT(ptr && (size > 0)); + memset(ptr, 0, size); +} + +_SOKOL_PRIVATE void* _sapp_malloc(size_t size) { + SOKOL_ASSERT(size > 0); + void* ptr; + if (_sapp.desc.allocator.alloc) { + ptr = _sapp.desc.allocator.alloc(size, _sapp.desc.allocator.user_data); + } + else { + ptr = malloc(size); + } + if (0 == ptr) { + _SAPP_PANIC(MALLOC_FAILED); + } + return ptr; +} + +_SOKOL_PRIVATE void* _sapp_malloc_clear(size_t size) { + void* ptr = _sapp_malloc(size); + _sapp_clear(ptr, size); + return ptr; +} + +_SOKOL_PRIVATE void _sapp_free(void* ptr) { + if (_sapp.desc.allocator.free) { + _sapp.desc.allocator.free(ptr, _sapp.desc.allocator.user_data); + } + else { + free(ptr); + } +} + +// ██ ██ ███████ ██ ██████ ███████ ██████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ █████ ██ ██████ █████ ██████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ███████ ██ ███████ ██ ██ ███████ +// +// >>helpers +_SOKOL_PRIVATE void _sapp_call_init(void) { + if (_sapp.desc.init_cb) { + _sapp.desc.init_cb(); + } + else if (_sapp.desc.init_userdata_cb) { + _sapp.desc.init_userdata_cb(_sapp.desc.user_data); + } + _sapp.init_called = true; +} + +_SOKOL_PRIVATE void _sapp_call_frame(void) { + if (_sapp.init_called && !_sapp.cleanup_called) { + if (_sapp.desc.frame_cb) { + _sapp.desc.frame_cb(); + } + else if (_sapp.desc.frame_userdata_cb) { + _sapp.desc.frame_userdata_cb(_sapp.desc.user_data); + } + } +} + +_SOKOL_PRIVATE void _sapp_call_cleanup(void) { + if (!_sapp.cleanup_called) { + if (_sapp.desc.cleanup_cb) { + _sapp.desc.cleanup_cb(); + } + else if (_sapp.desc.cleanup_userdata_cb) { + _sapp.desc.cleanup_userdata_cb(_sapp.desc.user_data); + } + _sapp.cleanup_called = true; + } +} + +_SOKOL_PRIVATE bool _sapp_call_event(const sapp_event* e) { + if (!_sapp.cleanup_called) { + if (_sapp.desc.event_cb) { + _sapp.desc.event_cb(e); + } + else if (_sapp.desc.event_userdata_cb) { + _sapp.desc.event_userdata_cb(e, _sapp.desc.user_data); + } + } + if (_sapp.event_consumed) { + _sapp.event_consumed = false; + return true; + } + else { + return false; + } +} + +_SOKOL_PRIVATE char* _sapp_dropped_file_path_ptr(int index) { + SOKOL_ASSERT(_sapp.drop.buffer); + SOKOL_ASSERT((index >= 0) && (index <= _sapp.drop.max_files)); + int offset = index * _sapp.drop.max_path_length; + SOKOL_ASSERT(offset < _sapp.drop.buf_size); + return &_sapp.drop.buffer[offset]; +} + +/* Copy a string into a fixed size buffer with guaranteed zero- + termination. + + Return false if the string didn't fit into the buffer and had to be clamped. + + FIXME: Currently UTF-8 strings might become invalid if the string + is clamped, because the last zero-byte might be written into + the middle of a multi-byte sequence. +*/ +_SOKOL_PRIVATE bool _sapp_strcpy(const char* src, char* dst, int max_len) { + SOKOL_ASSERT(src && dst && (max_len > 0)); + char* const end = &(dst[max_len-1]); + char c = 0; + for (int i = 0; i < max_len; i++) { + c = *src; + if (c != 0) { + src++; + } + *dst++ = c; + } + /* truncated? */ + if (c != 0) { + *end = 0; + return false; + } + else { + return true; + } +} + +_SOKOL_PRIVATE sapp_desc _sapp_desc_defaults(const sapp_desc* desc) { + SOKOL_ASSERT((desc->allocator.alloc && desc->allocator.free) || (!desc->allocator.alloc && !desc->allocator.free)); + sapp_desc res = *desc; + res.sample_count = _sapp_def(res.sample_count, 1); + res.swap_interval = _sapp_def(res.swap_interval, 1); + // NOTE: can't patch the default for gl_major_version and gl_minor_version + // independently, because a desired version 4.0 would be patched to 4.2 + // (or expressed differently: zero is a valid value for gl_minor_version + // and can't be used to indicate 'default') + if (0 == res.gl_major_version) { + res.gl_major_version = 3; + res.gl_minor_version = 2; + } + res.html5_canvas_name = _sapp_def(res.html5_canvas_name, "canvas"); + res.clipboard_size = _sapp_def(res.clipboard_size, 8192); + res.max_dropped_files = _sapp_def(res.max_dropped_files, 1); + res.max_dropped_file_path_length = _sapp_def(res.max_dropped_file_path_length, 2048); + res.window_title = _sapp_def(res.window_title, "sokol_app"); + return res; +} + +_SOKOL_PRIVATE void _sapp_init_state(const sapp_desc* desc) { + SOKOL_ASSERT(desc); + SOKOL_ASSERT(desc->width >= 0); + SOKOL_ASSERT(desc->height >= 0); + SOKOL_ASSERT(desc->sample_count >= 0); + SOKOL_ASSERT(desc->swap_interval >= 0); + SOKOL_ASSERT(desc->clipboard_size >= 0); + SOKOL_ASSERT(desc->max_dropped_files >= 0); + SOKOL_ASSERT(desc->max_dropped_file_path_length >= 0); + _SAPP_CLEAR_ARC_STRUCT(_sapp_t, _sapp); + _sapp.desc = _sapp_desc_defaults(desc); + _sapp.first_frame = true; + // NOTE: _sapp.desc.width/height may be 0! Platform backends need to deal with this + _sapp.window_width = _sapp.desc.width; + _sapp.window_height = _sapp.desc.height; + _sapp.framebuffer_width = _sapp.window_width; + _sapp.framebuffer_height = _sapp.window_height; + _sapp.sample_count = _sapp.desc.sample_count; + _sapp.swap_interval = _sapp.desc.swap_interval; + _sapp.html5_canvas_selector[0] = '#'; + _sapp_strcpy(_sapp.desc.html5_canvas_name, &_sapp.html5_canvas_selector[1], sizeof(_sapp.html5_canvas_selector) - 1); + _sapp.desc.html5_canvas_name = &_sapp.html5_canvas_selector[1]; + _sapp.html5_ask_leave_site = _sapp.desc.html5_ask_leave_site; + _sapp.clipboard.enabled = _sapp.desc.enable_clipboard; + if (_sapp.clipboard.enabled) { + _sapp.clipboard.buf_size = _sapp.desc.clipboard_size; + _sapp.clipboard.buffer = (char*) _sapp_malloc_clear((size_t)_sapp.clipboard.buf_size); + } + _sapp.drop.enabled = _sapp.desc.enable_dragndrop; + if (_sapp.drop.enabled) { + _sapp.drop.max_files = _sapp.desc.max_dropped_files; + _sapp.drop.max_path_length = _sapp.desc.max_dropped_file_path_length; + _sapp.drop.buf_size = _sapp.drop.max_files * _sapp.drop.max_path_length; + _sapp.drop.buffer = (char*) _sapp_malloc_clear((size_t)_sapp.drop.buf_size); + } + _sapp_strcpy(_sapp.desc.window_title, _sapp.window_title, sizeof(_sapp.window_title)); + _sapp.desc.window_title = _sapp.window_title; + _sapp.dpi_scale = 1.0f; + _sapp.fullscreen = _sapp.desc.fullscreen; + _sapp.mouse.shown = true; + _sapp_timing_init(&_sapp.timing); +} + +_SOKOL_PRIVATE void _sapp_discard_state(void) { + if (_sapp.clipboard.enabled) { + SOKOL_ASSERT(_sapp.clipboard.buffer); + _sapp_free((void*)_sapp.clipboard.buffer); + } + if (_sapp.drop.enabled) { + SOKOL_ASSERT(_sapp.drop.buffer); + _sapp_free((void*)_sapp.drop.buffer); + } + if (_sapp.default_icon_pixels) { + _sapp_free((void*)_sapp.default_icon_pixels); + } + _SAPP_CLEAR_ARC_STRUCT(_sapp_t, _sapp); +} + +_SOKOL_PRIVATE void _sapp_init_event(sapp_event_type type) { + _sapp_clear(&_sapp.event, sizeof(_sapp.event)); + _sapp.event.type = type; + _sapp.event.frame_count = _sapp.frame_count; + _sapp.event.mouse_button = SAPP_MOUSEBUTTON_INVALID; + _sapp.event.window_width = _sapp.window_width; + _sapp.event.window_height = _sapp.window_height; + _sapp.event.framebuffer_width = _sapp.framebuffer_width; + _sapp.event.framebuffer_height = _sapp.framebuffer_height; + _sapp.event.mouse_x = _sapp.mouse.x; + _sapp.event.mouse_y = _sapp.mouse.y; + _sapp.event.mouse_dx = _sapp.mouse.dx; + _sapp.event.mouse_dy = _sapp.mouse.dy; +} + +_SOKOL_PRIVATE bool _sapp_events_enabled(void) { + /* only send events when an event callback is set, and the init function was called */ + return (_sapp.desc.event_cb || _sapp.desc.event_userdata_cb) && _sapp.init_called; +} + +_SOKOL_PRIVATE sapp_keycode _sapp_translate_key(int scan_code) { + if ((scan_code >= 0) && (scan_code < SAPP_MAX_KEYCODES)) { + return _sapp.keycodes[scan_code]; + } + else { + return SAPP_KEYCODE_INVALID; + } +} + +_SOKOL_PRIVATE void _sapp_clear_drop_buffer(void) { + if (_sapp.drop.enabled) { + SOKOL_ASSERT(_sapp.drop.buffer); + _sapp_clear(_sapp.drop.buffer, (size_t)_sapp.drop.buf_size); + } +} + +_SOKOL_PRIVATE void _sapp_frame(void) { + if (_sapp.first_frame) { + _sapp.first_frame = false; + _sapp_call_init(); + } + _sapp_call_frame(); + _sapp.frame_count++; +} + +_SOKOL_PRIVATE bool _sapp_image_validate(const sapp_image_desc* desc) { + SOKOL_ASSERT(desc->width > 0); + SOKOL_ASSERT(desc->height > 0); + SOKOL_ASSERT(desc->pixels.ptr != 0); + SOKOL_ASSERT(desc->pixels.size > 0); + const size_t wh_size = (size_t)(desc->width * desc->height) * sizeof(uint32_t); + if (wh_size != desc->pixels.size) { + _SAPP_ERROR(IMAGE_DATA_SIZE_MISMATCH); + return false; + } + return true; +} + +_SOKOL_PRIVATE int _sapp_image_bestmatch(const sapp_image_desc image_descs[], int num_images, int width, int height) { + int least_diff = 0x7FFFFFFF; + int least_index = 0; + for (int i = 0; i < num_images; i++) { + int diff = (image_descs[i].width * image_descs[i].height) - (width * height); + if (diff < 0) { + diff = -diff; + } + if (diff < least_diff) { + least_diff = diff; + least_index = i; + } + } + return least_index; +} + +_SOKOL_PRIVATE int _sapp_icon_num_images(const sapp_icon_desc* desc) { + int index = 0; + for (; index < SAPP_MAX_ICONIMAGES; index++) { + if (0 == desc->images[index].pixels.ptr) { + break; + } + } + return index; +} + +_SOKOL_PRIVATE bool _sapp_validate_icon_desc(const sapp_icon_desc* desc, int num_images) { + SOKOL_ASSERT(num_images <= SAPP_MAX_ICONIMAGES); + for (int i = 0; i < num_images; i++) { + const sapp_image_desc* img_desc = &desc->images[i]; + if (!_sapp_image_validate(img_desc)) { + return false; + } + } + return true; +} + +_SOKOL_PRIVATE void _sapp_setup_default_icon(void) { + SOKOL_ASSERT(0 == _sapp.default_icon_pixels); + + const int num_icons = 3; + const int icon_sizes[3] = { 16, 32, 64 }; // must be multiple of 8! + + // allocate a pixel buffer for all icon pixels + int all_num_pixels = 0; + for (int i = 0; i < num_icons; i++) { + all_num_pixels += icon_sizes[i] * icon_sizes[i]; + } + _sapp.default_icon_pixels = (uint32_t*) _sapp_malloc_clear((size_t)all_num_pixels * sizeof(uint32_t)); + + // initialize default_icon_desc struct + uint32_t* dst = _sapp.default_icon_pixels; + const uint32_t* dst_end = dst + all_num_pixels; + (void)dst_end; // silence unused warning in release mode + for (int i = 0; i < num_icons; i++) { + const int dim = (int) icon_sizes[i]; + const int num_pixels = dim * dim; + sapp_image_desc* img_desc = &_sapp.default_icon_desc.images[i]; + img_desc->width = dim; + img_desc->height = dim; + img_desc->pixels.ptr = dst; + img_desc->pixels.size = (size_t)num_pixels * sizeof(uint32_t); + dst += num_pixels; + } + SOKOL_ASSERT(dst == dst_end); + + // Amstrad CPC font 'S' + const uint8_t tile[8] = { + 0x3C, + 0x66, + 0x60, + 0x3C, + 0x06, + 0x66, + 0x3C, + 0x00, + }; + // rainbow colors + const uint32_t colors[8] = { + 0xFF4370FF, + 0xFF26A7FF, + 0xFF58EEFF, + 0xFF57E1D4, + 0xFF65CC9C, + 0xFF6ABB66, + 0xFFF5A542, + 0xFFC2577E, + }; + dst = _sapp.default_icon_pixels; + const uint32_t blank = 0x00FFFFFF; + const uint32_t shadow = 0xFF000000; + for (int i = 0; i < num_icons; i++) { + const int dim = icon_sizes[i]; + SOKOL_ASSERT((dim % 8) == 0); + const int scale = dim / 8; + for (int ty = 0, y = 0; ty < 8; ty++) { + const uint32_t color = colors[ty]; + for (int sy = 0; sy < scale; sy++, y++) { + uint8_t bits = tile[ty]; + for (int tx = 0, x = 0; tx < 8; tx++, bits<<=1) { + uint32_t pixel = (0 == (bits & 0x80)) ? blank : color; + for (int sx = 0; sx < scale; sx++, x++) { + SOKOL_ASSERT(dst < dst_end); + *dst++ = pixel; + } + } + } + } + } + SOKOL_ASSERT(dst == dst_end); + + // right shadow + dst = _sapp.default_icon_pixels; + for (int i = 0; i < num_icons; i++) { + const int dim = icon_sizes[i]; + for (int y = 0; y < dim; y++) { + uint32_t prev_color = blank; + for (int x = 0; x < dim; x++) { + const int dst_index = y * dim + x; + const uint32_t cur_color = dst[dst_index]; + if ((cur_color == blank) && (prev_color != blank)) { + dst[dst_index] = shadow; + } + prev_color = cur_color; + } + } + dst += dim * dim; + } + SOKOL_ASSERT(dst == dst_end); + + // bottom shadow + dst = _sapp.default_icon_pixels; + for (int i = 0; i < num_icons; i++) { + const int dim = icon_sizes[i]; + for (int x = 0; x < dim; x++) { + uint32_t prev_color = blank; + for (int y = 0; y < dim; y++) { + const int dst_index = y * dim + x; + const uint32_t cur_color = dst[dst_index]; + if ((cur_color == blank) && (prev_color != blank)) { + dst[dst_index] = shadow; + } + prev_color = cur_color; + } + } + dst += dim * dim; + } + SOKOL_ASSERT(dst == dst_end); +} + +// █████ ██████ ██████ ██ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██████ ██████ ██ █████ +// ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ███████ ███████ +// +// >>apple +#if defined(_SAPP_APPLE) + +#if __has_feature(objc_arc) +#define _SAPP_OBJC_RELEASE(obj) { obj = nil; } +#else +#define _SAPP_OBJC_RELEASE(obj) { [obj release]; obj = nil; } +#endif + +// ███ ███ █████ ██████ ██████ ███████ +// ████ ████ ██ ██ ██ ██ ██ ██ +// ██ ████ ██ ███████ ██ ██ ██ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██████ ██████ ███████ +// +// >>macos +#if defined(_SAPP_MACOS) + +_SOKOL_PRIVATE void _sapp_macos_init_keytable(void) { + _sapp.keycodes[0x1D] = SAPP_KEYCODE_0; + _sapp.keycodes[0x12] = SAPP_KEYCODE_1; + _sapp.keycodes[0x13] = SAPP_KEYCODE_2; + _sapp.keycodes[0x14] = SAPP_KEYCODE_3; + _sapp.keycodes[0x15] = SAPP_KEYCODE_4; + _sapp.keycodes[0x17] = SAPP_KEYCODE_5; + _sapp.keycodes[0x16] = SAPP_KEYCODE_6; + _sapp.keycodes[0x1A] = SAPP_KEYCODE_7; + _sapp.keycodes[0x1C] = SAPP_KEYCODE_8; + _sapp.keycodes[0x19] = SAPP_KEYCODE_9; + _sapp.keycodes[0x00] = SAPP_KEYCODE_A; + _sapp.keycodes[0x0B] = SAPP_KEYCODE_B; + _sapp.keycodes[0x08] = SAPP_KEYCODE_C; + _sapp.keycodes[0x02] = SAPP_KEYCODE_D; + _sapp.keycodes[0x0E] = SAPP_KEYCODE_E; + _sapp.keycodes[0x03] = SAPP_KEYCODE_F; + _sapp.keycodes[0x05] = SAPP_KEYCODE_G; + _sapp.keycodes[0x04] = SAPP_KEYCODE_H; + _sapp.keycodes[0x22] = SAPP_KEYCODE_I; + _sapp.keycodes[0x26] = SAPP_KEYCODE_J; + _sapp.keycodes[0x28] = SAPP_KEYCODE_K; + _sapp.keycodes[0x25] = SAPP_KEYCODE_L; + _sapp.keycodes[0x2E] = SAPP_KEYCODE_M; + _sapp.keycodes[0x2D] = SAPP_KEYCODE_N; + _sapp.keycodes[0x1F] = SAPP_KEYCODE_O; + _sapp.keycodes[0x23] = SAPP_KEYCODE_P; + _sapp.keycodes[0x0C] = SAPP_KEYCODE_Q; + _sapp.keycodes[0x0F] = SAPP_KEYCODE_R; + _sapp.keycodes[0x01] = SAPP_KEYCODE_S; + _sapp.keycodes[0x11] = SAPP_KEYCODE_T; + _sapp.keycodes[0x20] = SAPP_KEYCODE_U; + _sapp.keycodes[0x09] = SAPP_KEYCODE_V; + _sapp.keycodes[0x0D] = SAPP_KEYCODE_W; + _sapp.keycodes[0x07] = SAPP_KEYCODE_X; + _sapp.keycodes[0x10] = SAPP_KEYCODE_Y; + _sapp.keycodes[0x06] = SAPP_KEYCODE_Z; + _sapp.keycodes[0x27] = SAPP_KEYCODE_APOSTROPHE; + _sapp.keycodes[0x2A] = SAPP_KEYCODE_BACKSLASH; + _sapp.keycodes[0x2B] = SAPP_KEYCODE_COMMA; + _sapp.keycodes[0x18] = SAPP_KEYCODE_EQUAL; + _sapp.keycodes[0x32] = SAPP_KEYCODE_GRAVE_ACCENT; + _sapp.keycodes[0x21] = SAPP_KEYCODE_LEFT_BRACKET; + _sapp.keycodes[0x1B] = SAPP_KEYCODE_MINUS; + _sapp.keycodes[0x2F] = SAPP_KEYCODE_PERIOD; + _sapp.keycodes[0x1E] = SAPP_KEYCODE_RIGHT_BRACKET; + _sapp.keycodes[0x29] = SAPP_KEYCODE_SEMICOLON; + _sapp.keycodes[0x2C] = SAPP_KEYCODE_SLASH; + _sapp.keycodes[0x0A] = SAPP_KEYCODE_WORLD_1; + _sapp.keycodes[0x33] = SAPP_KEYCODE_BACKSPACE; + _sapp.keycodes[0x39] = SAPP_KEYCODE_CAPS_LOCK; + _sapp.keycodes[0x75] = SAPP_KEYCODE_DELETE; + _sapp.keycodes[0x7D] = SAPP_KEYCODE_DOWN; + _sapp.keycodes[0x77] = SAPP_KEYCODE_END; + _sapp.keycodes[0x24] = SAPP_KEYCODE_ENTER; + _sapp.keycodes[0x35] = SAPP_KEYCODE_ESCAPE; + _sapp.keycodes[0x7A] = SAPP_KEYCODE_F1; + _sapp.keycodes[0x78] = SAPP_KEYCODE_F2; + _sapp.keycodes[0x63] = SAPP_KEYCODE_F3; + _sapp.keycodes[0x76] = SAPP_KEYCODE_F4; + _sapp.keycodes[0x60] = SAPP_KEYCODE_F5; + _sapp.keycodes[0x61] = SAPP_KEYCODE_F6; + _sapp.keycodes[0x62] = SAPP_KEYCODE_F7; + _sapp.keycodes[0x64] = SAPP_KEYCODE_F8; + _sapp.keycodes[0x65] = SAPP_KEYCODE_F9; + _sapp.keycodes[0x6D] = SAPP_KEYCODE_F10; + _sapp.keycodes[0x67] = SAPP_KEYCODE_F11; + _sapp.keycodes[0x6F] = SAPP_KEYCODE_F12; + _sapp.keycodes[0x69] = SAPP_KEYCODE_F13; + _sapp.keycodes[0x6B] = SAPP_KEYCODE_F14; + _sapp.keycodes[0x71] = SAPP_KEYCODE_F15; + _sapp.keycodes[0x6A] = SAPP_KEYCODE_F16; + _sapp.keycodes[0x40] = SAPP_KEYCODE_F17; + _sapp.keycodes[0x4F] = SAPP_KEYCODE_F18; + _sapp.keycodes[0x50] = SAPP_KEYCODE_F19; + _sapp.keycodes[0x5A] = SAPP_KEYCODE_F20; + _sapp.keycodes[0x73] = SAPP_KEYCODE_HOME; + _sapp.keycodes[0x72] = SAPP_KEYCODE_INSERT; + _sapp.keycodes[0x7B] = SAPP_KEYCODE_LEFT; + _sapp.keycodes[0x3A] = SAPP_KEYCODE_LEFT_ALT; + _sapp.keycodes[0x3B] = SAPP_KEYCODE_LEFT_CONTROL; + _sapp.keycodes[0x38] = SAPP_KEYCODE_LEFT_SHIFT; + _sapp.keycodes[0x37] = SAPP_KEYCODE_LEFT_SUPER; + _sapp.keycodes[0x6E] = SAPP_KEYCODE_MENU; + _sapp.keycodes[0x47] = SAPP_KEYCODE_NUM_LOCK; + _sapp.keycodes[0x79] = SAPP_KEYCODE_PAGE_DOWN; + _sapp.keycodes[0x74] = SAPP_KEYCODE_PAGE_UP; + _sapp.keycodes[0x7C] = SAPP_KEYCODE_RIGHT; + _sapp.keycodes[0x3D] = SAPP_KEYCODE_RIGHT_ALT; + _sapp.keycodes[0x3E] = SAPP_KEYCODE_RIGHT_CONTROL; + _sapp.keycodes[0x3C] = SAPP_KEYCODE_RIGHT_SHIFT; + _sapp.keycodes[0x36] = SAPP_KEYCODE_RIGHT_SUPER; + _sapp.keycodes[0x31] = SAPP_KEYCODE_SPACE; + _sapp.keycodes[0x30] = SAPP_KEYCODE_TAB; + _sapp.keycodes[0x7E] = SAPP_KEYCODE_UP; + _sapp.keycodes[0x52] = SAPP_KEYCODE_KP_0; + _sapp.keycodes[0x53] = SAPP_KEYCODE_KP_1; + _sapp.keycodes[0x54] = SAPP_KEYCODE_KP_2; + _sapp.keycodes[0x55] = SAPP_KEYCODE_KP_3; + _sapp.keycodes[0x56] = SAPP_KEYCODE_KP_4; + _sapp.keycodes[0x57] = SAPP_KEYCODE_KP_5; + _sapp.keycodes[0x58] = SAPP_KEYCODE_KP_6; + _sapp.keycodes[0x59] = SAPP_KEYCODE_KP_7; + _sapp.keycodes[0x5B] = SAPP_KEYCODE_KP_8; + _sapp.keycodes[0x5C] = SAPP_KEYCODE_KP_9; + _sapp.keycodes[0x45] = SAPP_KEYCODE_KP_ADD; + _sapp.keycodes[0x41] = SAPP_KEYCODE_KP_DECIMAL; + _sapp.keycodes[0x4B] = SAPP_KEYCODE_KP_DIVIDE; + _sapp.keycodes[0x4C] = SAPP_KEYCODE_KP_ENTER; + _sapp.keycodes[0x51] = SAPP_KEYCODE_KP_EQUAL; + _sapp.keycodes[0x43] = SAPP_KEYCODE_KP_MULTIPLY; + _sapp.keycodes[0x4E] = SAPP_KEYCODE_KP_SUBTRACT; +} + +_SOKOL_PRIVATE void _sapp_macos_discard_state(void) { + // NOTE: it's safe to call [release] on a nil object + if (_sapp.macos.keyup_monitor != nil) { + [NSEvent removeMonitor:_sapp.macos.keyup_monitor]; + // NOTE: removeMonitor also releases the object + _sapp.macos.keyup_monitor = nil; + } + _SAPP_OBJC_RELEASE(_sapp.macos.tracking_area); + _SAPP_OBJC_RELEASE(_sapp.macos.app_dlg); + _SAPP_OBJC_RELEASE(_sapp.macos.win_dlg); + _SAPP_OBJC_RELEASE(_sapp.macos.view); + #if defined(SOKOL_METAL) + _SAPP_OBJC_RELEASE(_sapp.macos.mtl_device); + #endif + _SAPP_OBJC_RELEASE(_sapp.macos.window); +} + +// undocumented methods for creating cursors (see GLFW 3.4 and imgui_impl_osx.mm) +@interface NSCursor() ++ (id)_windowResizeNorthWestSouthEastCursor; ++ (id)_windowResizeNorthEastSouthWestCursor; ++ (id)_windowResizeNorthSouthCursor; ++ (id)_windowResizeEastWestCursor; +@end + +_SOKOL_PRIVATE void _sapp_macos_init_cursors(void) { + _sapp.macos.cursors[SAPP_MOUSECURSOR_DEFAULT] = nil; // not a bug + _sapp.macos.cursors[SAPP_MOUSECURSOR_ARROW] = [NSCursor arrowCursor]; + _sapp.macos.cursors[SAPP_MOUSECURSOR_IBEAM] = [NSCursor IBeamCursor]; + _sapp.macos.cursors[SAPP_MOUSECURSOR_CROSSHAIR] = [NSCursor crosshairCursor]; + _sapp.macos.cursors[SAPP_MOUSECURSOR_POINTING_HAND] = [NSCursor pointingHandCursor]; + _sapp.macos.cursors[SAPP_MOUSECURSOR_RESIZE_EW] = [NSCursor respondsToSelector:@selector(_windowResizeEastWestCursor)] ? [NSCursor _windowResizeEastWestCursor] : [NSCursor resizeLeftRightCursor]; + _sapp.macos.cursors[SAPP_MOUSECURSOR_RESIZE_NS] = [NSCursor respondsToSelector:@selector(_windowResizeNorthSouthCursor)] ? [NSCursor _windowResizeNorthSouthCursor] : [NSCursor resizeUpDownCursor]; + _sapp.macos.cursors[SAPP_MOUSECURSOR_RESIZE_NWSE] = [NSCursor respondsToSelector:@selector(_windowResizeNorthWestSouthEastCursor)] ? [NSCursor _windowResizeNorthWestSouthEastCursor] : [NSCursor closedHandCursor]; + _sapp.macos.cursors[SAPP_MOUSECURSOR_RESIZE_NESW] = [NSCursor respondsToSelector:@selector(_windowResizeNorthEastSouthWestCursor)] ? [NSCursor _windowResizeNorthEastSouthWestCursor] : [NSCursor closedHandCursor]; + _sapp.macos.cursors[SAPP_MOUSECURSOR_RESIZE_ALL] = [NSCursor closedHandCursor]; + _sapp.macos.cursors[SAPP_MOUSECURSOR_NOT_ALLOWED] = [NSCursor operationNotAllowedCursor]; +} + +_SOKOL_PRIVATE void _sapp_macos_run(const sapp_desc* desc) { + _sapp_init_state(desc); + _sapp_macos_init_keytable(); + [NSApplication sharedApplication]; + + // set the application dock icon as early as possible, otherwise + // the dummy icon will be visible for a short time + sapp_set_icon(&_sapp.desc.icon); + _sapp.macos.app_dlg = [[_sapp_macos_app_delegate alloc] init]; + NSApp.delegate = _sapp.macos.app_dlg; + + // workaround for "no key-up sent while Cmd is pressed" taken from GLFW: + NSEvent* (^keyup_monitor)(NSEvent*) = ^NSEvent* (NSEvent* event) { + if ([event modifierFlags] & NSEventModifierFlagCommand) { + [[NSApp keyWindow] sendEvent:event]; + } + return event; + }; + _sapp.macos.keyup_monitor = [NSEvent addLocalMonitorForEventsMatchingMask:NSEventMaskKeyUp handler:keyup_monitor]; + + [NSApp run]; + // NOTE: [NSApp run] never returns, instead cleanup code + // must be put into applicationWillTerminate +} + +/* MacOS entry function */ +#if !defined(SOKOL_NO_ENTRY) +int main(int argc, char* argv[]) { + sapp_desc desc = sokol_main(argc, argv); + _sapp_macos_run(&desc); + return 0; +} +#endif /* SOKOL_NO_ENTRY */ + +_SOKOL_PRIVATE uint32_t _sapp_macos_mods(NSEvent* ev) { + const NSEventModifierFlags f = ev.modifierFlags; + const NSUInteger b = NSEvent.pressedMouseButtons; + uint32_t m = 0; + if (f & NSEventModifierFlagShift) { + m |= SAPP_MODIFIER_SHIFT; + } + if (f & NSEventModifierFlagControl) { + m |= SAPP_MODIFIER_CTRL; + } + if (f & NSEventModifierFlagOption) { + m |= SAPP_MODIFIER_ALT; + } + if (f & NSEventModifierFlagCommand) { + m |= SAPP_MODIFIER_SUPER; + } + if (0 != (b & (1<<0))) { + m |= SAPP_MODIFIER_LMB; + } + if (0 != (b & (1<<1))) { + m |= SAPP_MODIFIER_RMB; + } + if (0 != (b & (1<<2))) { + m |= SAPP_MODIFIER_MMB; + } + return m; +} + +_SOKOL_PRIVATE void _sapp_macos_mouse_event(sapp_event_type type, sapp_mousebutton btn, uint32_t mod) { + if (_sapp_events_enabled()) { + _sapp_init_event(type); + _sapp.event.mouse_button = btn; + _sapp.event.modifiers = mod; + _sapp_call_event(&_sapp.event); + } +} + +_SOKOL_PRIVATE void _sapp_macos_key_event(sapp_event_type type, sapp_keycode key, bool repeat, uint32_t mod) { + if (_sapp_events_enabled()) { + _sapp_init_event(type); + _sapp.event.key_code = key; + _sapp.event.key_repeat = repeat; + _sapp.event.modifiers = mod; + _sapp_call_event(&_sapp.event); + } +} + +_SOKOL_PRIVATE void _sapp_macos_app_event(sapp_event_type type) { + if (_sapp_events_enabled()) { + _sapp_init_event(type); + _sapp_call_event(&_sapp.event); + } +} + +/* NOTE: unlike the iOS version of this function, the macOS version + can dynamically update the DPI scaling factor when a window is moved + between HighDPI / LowDPI screens. +*/ +_SOKOL_PRIVATE void _sapp_macos_update_dimensions(void) { + if (_sapp.desc.high_dpi) { + _sapp.dpi_scale = [_sapp.macos.window screen].backingScaleFactor; + } + else { + _sapp.dpi_scale = 1.0f; + } + const NSRect bounds = [_sapp.macos.view bounds]; + _sapp.window_width = (int)roundf(bounds.size.width); + _sapp.window_height = (int)roundf(bounds.size.height); + #if defined(SOKOL_METAL) + _sapp.framebuffer_width = (int)roundf(bounds.size.width * _sapp.dpi_scale); + _sapp.framebuffer_height = (int)roundf(bounds.size.height * _sapp.dpi_scale); + const CGSize fb_size = _sapp.macos.view.drawableSize; + const int cur_fb_width = (int)roundf(fb_size.width); + const int cur_fb_height = (int)roundf(fb_size.height); + const bool dim_changed = (_sapp.framebuffer_width != cur_fb_width) || + (_sapp.framebuffer_height != cur_fb_height); + #elif defined(SOKOL_GLCORE33) + const int cur_fb_width = (int)roundf(bounds.size.width * _sapp.dpi_scale); + const int cur_fb_height = (int)roundf(bounds.size.height * _sapp.dpi_scale); + const bool dim_changed = (_sapp.framebuffer_width != cur_fb_width) || + (_sapp.framebuffer_height != cur_fb_height); + _sapp.framebuffer_width = cur_fb_width; + _sapp.framebuffer_height = cur_fb_height; + #endif + if (_sapp.framebuffer_width == 0) { + _sapp.framebuffer_width = 1; + } + if (_sapp.framebuffer_height == 0) { + _sapp.framebuffer_height = 1; + } + if (_sapp.window_width == 0) { + _sapp.window_width = 1; + } + if (_sapp.window_height == 0) { + _sapp.window_height = 1; + } + if (dim_changed) { + #if defined(SOKOL_METAL) + CGSize drawable_size = { (CGFloat) _sapp.framebuffer_width, (CGFloat) _sapp.framebuffer_height }; + _sapp.macos.view.drawableSize = drawable_size; + #else + // nothing to do for GL? + #endif + if (!_sapp.first_frame) { + _sapp_macos_app_event(SAPP_EVENTTYPE_RESIZED); + } + } +} + +_SOKOL_PRIVATE void _sapp_macos_toggle_fullscreen(void) { + /* NOTE: the _sapp.fullscreen flag is also notified by the + windowDidEnterFullscreen / windowDidExitFullscreen + event handlers + */ + _sapp.fullscreen = !_sapp.fullscreen; + [_sapp.macos.window toggleFullScreen:nil]; +} + +_SOKOL_PRIVATE void _sapp_macos_set_clipboard_string(const char* str) { + @autoreleasepool { + NSPasteboard* pasteboard = [NSPasteboard generalPasteboard]; + [pasteboard declareTypes:@[NSPasteboardTypeString] owner:nil]; + [pasteboard setString:@(str) forType:NSPasteboardTypeString]; + } +} + +_SOKOL_PRIVATE const char* _sapp_macos_get_clipboard_string(void) { + SOKOL_ASSERT(_sapp.clipboard.buffer); + @autoreleasepool { + _sapp.clipboard.buffer[0] = 0; + NSPasteboard* pasteboard = [NSPasteboard generalPasteboard]; + if (![[pasteboard types] containsObject:NSPasteboardTypeString]) { + return _sapp.clipboard.buffer; + } + NSString* str = [pasteboard stringForType:NSPasteboardTypeString]; + if (!str) { + return _sapp.clipboard.buffer; + } + _sapp_strcpy([str UTF8String], _sapp.clipboard.buffer, _sapp.clipboard.buf_size); + } + return _sapp.clipboard.buffer; +} + +_SOKOL_PRIVATE void _sapp_macos_update_window_title(void) { + [_sapp.macos.window setTitle: [NSString stringWithUTF8String:_sapp.window_title]]; +} + +_SOKOL_PRIVATE void _sapp_macos_mouse_update(NSEvent* event) { + if (!_sapp.mouse.locked) { + const NSPoint mouse_pos = event.locationInWindow; + float new_x = mouse_pos.x * _sapp.dpi_scale; + float new_y = _sapp.framebuffer_height - (mouse_pos.y * _sapp.dpi_scale) - 1; + if (_sapp.mouse.pos_valid) { + // don't update dx/dy in the very first update + _sapp.mouse.dx = new_x - _sapp.mouse.x; + _sapp.mouse.dy = new_y - _sapp.mouse.y; + } + _sapp.mouse.x = new_x; + _sapp.mouse.y = new_y; + _sapp.mouse.pos_valid = true; + } +} + +_SOKOL_PRIVATE void _sapp_macos_show_mouse(bool visible) { + /* NOTE: this function is only called when the mouse visibility actually changes */ + if (visible) { + CGDisplayShowCursor(kCGDirectMainDisplay); + } + else { + CGDisplayHideCursor(kCGDirectMainDisplay); + } +} + +_SOKOL_PRIVATE void _sapp_macos_lock_mouse(bool lock) { + if (lock == _sapp.mouse.locked) { + return; + } + _sapp.mouse.dx = 0.0f; + _sapp.mouse.dy = 0.0f; + _sapp.mouse.locked = lock; + /* + NOTE that this code doesn't warp the mouse cursor to the window + center as everybody else does it. This lead to a spike in the + *second* mouse-moved event after the warp happened. The + mouse centering doesn't seem to be required (mouse-moved events + are reported correctly even when the cursor is at an edge of the screen). + + NOTE also that the hide/show of the mouse cursor should properly + stack with calls to sapp_show_mouse() + */ + if (_sapp.mouse.locked) { + CGAssociateMouseAndMouseCursorPosition(NO); + [NSCursor hide]; + } + else { + [NSCursor unhide]; + CGAssociateMouseAndMouseCursorPosition(YES); + } +} + +_SOKOL_PRIVATE void _sapp_macos_update_cursor(sapp_mouse_cursor cursor, bool shown) { + // show/hide cursor only if visibility status has changed (required because show/hide stacks) + if (shown != _sapp.mouse.shown) { + if (shown) { + [NSCursor unhide]; + } + else { + [NSCursor hide]; + } + } + // update cursor type + SOKOL_ASSERT((cursor >= 0) && (cursor < _SAPP_MOUSECURSOR_NUM)); + if (_sapp.macos.cursors[cursor]) { + [_sapp.macos.cursors[cursor] set]; + } + else { + [[NSCursor arrowCursor] set]; + } +} + +_SOKOL_PRIVATE void _sapp_macos_set_icon(const sapp_icon_desc* icon_desc, int num_images) { + NSDockTile* dock_tile = NSApp.dockTile; + const int wanted_width = (int) dock_tile.size.width; + const int wanted_height = (int) dock_tile.size.height; + const int img_index = _sapp_image_bestmatch(icon_desc->images, num_images, wanted_width, wanted_height); + const sapp_image_desc* img_desc = &icon_desc->images[img_index]; + + CGColorSpaceRef cg_color_space = CGColorSpaceCreateDeviceRGB(); + CFDataRef cf_data = CFDataCreate(kCFAllocatorDefault, (const UInt8*)img_desc->pixels.ptr, (CFIndex)img_desc->pixels.size); + CGDataProviderRef cg_data_provider = CGDataProviderCreateWithCFData(cf_data); + CGImageRef cg_img = CGImageCreate( + (size_t)img_desc->width, // width + (size_t)img_desc->height, // height + 8, // bitsPerComponent + 32, // bitsPerPixel + (size_t)img_desc->width * 4,// bytesPerRow + cg_color_space, // space + kCGImageAlphaLast | kCGImageByteOrderDefault, // bitmapInfo + cg_data_provider, // provider + NULL, // decode + false, // shouldInterpolate + kCGRenderingIntentDefault); + CFRelease(cf_data); + CGDataProviderRelease(cg_data_provider); + CGColorSpaceRelease(cg_color_space); + + NSImage* ns_image = [[NSImage alloc] initWithCGImage:cg_img size:dock_tile.size]; + dock_tile.contentView = [NSImageView imageViewWithImage:ns_image]; + [dock_tile display]; + _SAPP_OBJC_RELEASE(ns_image); + CGImageRelease(cg_img); +} + +_SOKOL_PRIVATE void _sapp_macos_frame(void) { + _sapp_frame(); + if (_sapp.quit_requested || _sapp.quit_ordered) { + [_sapp.macos.window performClose:nil]; + } +} + +@implementation _sapp_macos_app_delegate +- (void)applicationDidFinishLaunching:(NSNotification*)aNotification { + _SOKOL_UNUSED(aNotification); + _sapp_macos_init_cursors(); + if ((_sapp.window_width == 0) || (_sapp.window_height == 0)) { + // use 4/5 of screen size as default size + NSRect screen_rect = NSScreen.mainScreen.frame; + if (_sapp.window_width == 0) { + _sapp.window_width = (int)roundf((screen_rect.size.width * 4.0f) / 5.0f); + } + if (_sapp.window_height == 0) { + _sapp.window_height = (int)roundf((screen_rect.size.height * 4.0f) / 5.0f); + } + } + const NSUInteger style = + NSWindowStyleMaskTitled | + NSWindowStyleMaskClosable | + NSWindowStyleMaskMiniaturizable | + NSWindowStyleMaskResizable; + NSRect window_rect = NSMakeRect(0, 0, _sapp.window_width, _sapp.window_height); + _sapp.macos.window = [[_sapp_macos_window alloc] + initWithContentRect:window_rect + styleMask:style + backing:NSBackingStoreBuffered + defer:NO]; + _sapp.macos.window.releasedWhenClosed = NO; // this is necessary for proper cleanup in applicationWillTerminate + _sapp.macos.window.title = [NSString stringWithUTF8String:_sapp.window_title]; + _sapp.macos.window.acceptsMouseMovedEvents = YES; + _sapp.macos.window.restorable = YES; + + _sapp.macos.win_dlg = [[_sapp_macos_window_delegate alloc] init]; + _sapp.macos.window.delegate = _sapp.macos.win_dlg; + #if defined(SOKOL_METAL) + NSInteger max_fps = 60; + #if (__MAC_OS_X_VERSION_MAX_ALLOWED >= 120000) + if (@available(macOS 12.0, *)) { + max_fps = [NSScreen.mainScreen maximumFramesPerSecond]; + } + #endif + _sapp.macos.mtl_device = MTLCreateSystemDefaultDevice(); + _sapp.macos.view = [[_sapp_macos_view alloc] init]; + [_sapp.macos.view updateTrackingAreas]; + _sapp.macos.view.preferredFramesPerSecond = max_fps / _sapp.swap_interval; + _sapp.macos.view.device = _sapp.macos.mtl_device; + _sapp.macos.view.colorPixelFormat = MTLPixelFormatBGRA8Unorm; + _sapp.macos.view.depthStencilPixelFormat = MTLPixelFormatDepth32Float_Stencil8; + _sapp.macos.view.sampleCount = (NSUInteger) _sapp.sample_count; + _sapp.macos.view.autoResizeDrawable = false; + _sapp.macos.window.contentView = _sapp.macos.view; + [_sapp.macos.window makeFirstResponder:_sapp.macos.view]; + _sapp.macos.view.layer.magnificationFilter = kCAFilterNearest; + #elif defined(SOKOL_GLCORE33) + NSOpenGLPixelFormatAttribute attrs[32]; + int i = 0; + attrs[i++] = NSOpenGLPFAAccelerated; + attrs[i++] = NSOpenGLPFADoubleBuffer; + attrs[i++] = NSOpenGLPFAOpenGLProfile; + const int glVersion = _sapp.desc.gl_major_version * 10 + _sapp.desc.gl_minor_version; + switch(glVersion) { + case 10: attrs[i++] = NSOpenGLProfileVersionLegacy; break; + case 32: attrs[i++] = NSOpenGLProfileVersion3_2Core; break; + case 41: attrs[i++] = NSOpenGLProfileVersion4_1Core; break; + default: + _SAPP_PANIC(MACOS_INVALID_NSOPENGL_PROFILE); + } + attrs[i++] = NSOpenGLPFAColorSize; attrs[i++] = 24; + attrs[i++] = NSOpenGLPFAAlphaSize; attrs[i++] = 8; + attrs[i++] = NSOpenGLPFADepthSize; attrs[i++] = 24; + attrs[i++] = NSOpenGLPFAStencilSize; attrs[i++] = 8; + if (_sapp.sample_count > 1) { + attrs[i++] = NSOpenGLPFAMultisample; + attrs[i++] = NSOpenGLPFASampleBuffers; attrs[i++] = 1; + attrs[i++] = NSOpenGLPFASamples; attrs[i++] = (NSOpenGLPixelFormatAttribute)_sapp.sample_count; + } + else { + attrs[i++] = NSOpenGLPFASampleBuffers; attrs[i++] = 0; + } + attrs[i++] = 0; + NSOpenGLPixelFormat* glpixelformat_obj = [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs]; + SOKOL_ASSERT(glpixelformat_obj != nil); + + _sapp.macos.view = [[_sapp_macos_view alloc] + initWithFrame:window_rect + pixelFormat:glpixelformat_obj]; + _SAPP_OBJC_RELEASE(glpixelformat_obj); + [_sapp.macos.view updateTrackingAreas]; + if (_sapp.desc.high_dpi) { + [_sapp.macos.view setWantsBestResolutionOpenGLSurface:YES]; + } + else { + [_sapp.macos.view setWantsBestResolutionOpenGLSurface:NO]; + } + + _sapp.macos.window.contentView = _sapp.macos.view; + [_sapp.macos.window makeFirstResponder:_sapp.macos.view]; + + NSTimer* timer_obj = [NSTimer timerWithTimeInterval:0.001 + target:_sapp.macos.view + selector:@selector(timerFired:) + userInfo:nil + repeats:YES]; + [[NSRunLoop currentRunLoop] addTimer:timer_obj forMode:NSDefaultRunLoopMode]; + timer_obj = nil; + #endif + [_sapp.macos.window center]; + _sapp.valid = true; + if (_sapp.fullscreen) { + /* ^^^ on GL, this already toggles a rendered frame, so set the valid flag before */ + [_sapp.macos.window toggleFullScreen:self]; + } + NSApp.activationPolicy = NSApplicationActivationPolicyRegular; + [NSApp activateIgnoringOtherApps:YES]; + [_sapp.macos.window makeKeyAndOrderFront:nil]; + _sapp_macos_update_dimensions(); + [NSEvent setMouseCoalescingEnabled:NO]; +} + +- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication*)sender { + _SOKOL_UNUSED(sender); + return YES; +} + +- (void)applicationWillTerminate:(NSNotification*)notification { + _SOKOL_UNUSED(notification); + _sapp_call_cleanup(); + _sapp_macos_discard_state(); + _sapp_discard_state(); +} +@end + +@implementation _sapp_macos_window_delegate +- (BOOL)windowShouldClose:(id)sender { + _SOKOL_UNUSED(sender); + /* only give user-code a chance to intervene when sapp_quit() wasn't already called */ + if (!_sapp.quit_ordered) { + /* if window should be closed and event handling is enabled, give user code + a chance to intervene via sapp_cancel_quit() + */ + _sapp.quit_requested = true; + _sapp_macos_app_event(SAPP_EVENTTYPE_QUIT_REQUESTED); + /* user code hasn't intervened, quit the app */ + if (_sapp.quit_requested) { + _sapp.quit_ordered = true; + } + } + if (_sapp.quit_ordered) { + return YES; + } + else { + return NO; + } +} + +- (void)windowDidResize:(NSNotification*)notification { + _SOKOL_UNUSED(notification); + _sapp_macos_update_dimensions(); +} + +- (void)windowDidChangeScreen:(NSNotification*)notification { + _SOKOL_UNUSED(notification); + _sapp_timing_reset(&_sapp.timing); + _sapp_macos_update_dimensions(); +} + +- (void)windowDidMiniaturize:(NSNotification*)notification { + _SOKOL_UNUSED(notification); + _sapp_macos_app_event(SAPP_EVENTTYPE_ICONIFIED); +} + +- (void)windowDidDeminiaturize:(NSNotification*)notification { + _SOKOL_UNUSED(notification); + _sapp_macos_app_event(SAPP_EVENTTYPE_RESTORED); +} + +- (void)windowDidBecomeKey:(NSNotification*)notification { + _SOKOL_UNUSED(notification); + _sapp_macos_app_event(SAPP_EVENTTYPE_FOCUSED); +} + +- (void)windowDidResignKey:(NSNotification*)notification { + _SOKOL_UNUSED(notification); + _sapp_macos_app_event(SAPP_EVENTTYPE_UNFOCUSED); +} + +- (void)windowDidEnterFullScreen:(NSNotification*)notification { + _SOKOL_UNUSED(notification); + _sapp.fullscreen = true; +} + +- (void)windowDidExitFullScreen:(NSNotification*)notification { + _SOKOL_UNUSED(notification); + _sapp.fullscreen = false; +} +@end + +@implementation _sapp_macos_window +- (instancetype)initWithContentRect:(NSRect)contentRect + styleMask:(NSWindowStyleMask)style + backing:(NSBackingStoreType)backingStoreType + defer:(BOOL)flag { + if (self = [super initWithContentRect:contentRect styleMask:style backing:backingStoreType defer:flag]) { + #if __MAC_OS_X_VERSION_MAX_ALLOWED >= 101300 + [self registerForDraggedTypes:[NSArray arrayWithObject:NSPasteboardTypeFileURL]]; + #endif + } + return self; +} + +- (NSDragOperation)draggingEntered:(id)sender { + return NSDragOperationCopy; +} + +- (NSDragOperation)draggingUpdated:(id)sender { + return NSDragOperationCopy; +} + +- (BOOL)performDragOperation:(id)sender { + #if __MAC_OS_X_VERSION_MAX_ALLOWED >= 101300 + NSPasteboard *pboard = [sender draggingPasteboard]; + if ([pboard.types containsObject:NSPasteboardTypeFileURL]) { + _sapp_clear_drop_buffer(); + _sapp.drop.num_files = ((int)pboard.pasteboardItems.count > _sapp.drop.max_files) ? _sapp.drop.max_files : (int)pboard.pasteboardItems.count; + bool drop_failed = false; + for (int i = 0; i < _sapp.drop.num_files; i++) { + NSURL *fileUrl = [NSURL fileURLWithPath:[pboard.pasteboardItems[(NSUInteger)i] stringForType:NSPasteboardTypeFileURL]]; + if (!_sapp_strcpy(fileUrl.standardizedURL.path.UTF8String, _sapp_dropped_file_path_ptr(i), _sapp.drop.max_path_length)) { + _SAPP_ERROR(DROPPED_FILE_PATH_TOO_LONG); + drop_failed = true; + break; + } + } + if (!drop_failed) { + if (_sapp_events_enabled()) { + _sapp_init_event(SAPP_EVENTTYPE_FILES_DROPPED); + _sapp_call_event(&_sapp.event); + } + } + else { + _sapp_clear_drop_buffer(); + _sapp.drop.num_files = 0; + } + return YES; + } + #endif + return NO; +} +@end + +@implementation _sapp_macos_view +#if defined(SOKOL_GLCORE33) +/* NOTE: this is a hack/fix when the initial window size has been clipped by + macOS because it didn't fit on the screen, in that case the + frame size of the window is reported wrong if low-dpi rendering + was requested (instead the high-dpi dimensions are returned) + until the window is resized for the first time. + + Hooking into reshape and getting the frame dimensions seems to report + the correct dimensions. +*/ +- (void)reshape { + _sapp_macos_update_dimensions(); + [super reshape]; +} +- (void)timerFired:(id)sender { + _SOKOL_UNUSED(sender); + [self setNeedsDisplay:YES]; +} +- (void)prepareOpenGL { + [super prepareOpenGL]; + GLint swapInt = 1; + NSOpenGLContext* ctx = [_sapp.macos.view openGLContext]; + [ctx setValues:&swapInt forParameter:NSOpenGLContextParameterSwapInterval]; + [ctx makeCurrentContext]; +} +#endif + +_SOKOL_PRIVATE void _sapp_macos_poll_input_events() { + /* + + NOTE: late event polling temporarily out-commented to check if this + causes infrequent and almost impossible to reproduce problems with the + window close events, see: + https://github.com/floooh/sokol/pull/483#issuecomment-805148815 + + + const NSEventMask mask = NSEventMaskLeftMouseDown | + NSEventMaskLeftMouseUp| + NSEventMaskRightMouseDown | + NSEventMaskRightMouseUp | + NSEventMaskMouseMoved | + NSEventMaskLeftMouseDragged | + NSEventMaskRightMouseDragged | + NSEventMaskMouseEntered | + NSEventMaskMouseExited | + NSEventMaskKeyDown | + NSEventMaskKeyUp | + NSEventMaskCursorUpdate | + NSEventMaskScrollWheel | + NSEventMaskTabletPoint | + NSEventMaskTabletProximity | + NSEventMaskOtherMouseDown | + NSEventMaskOtherMouseUp | + NSEventMaskOtherMouseDragged | + NSEventMaskPressure | + NSEventMaskDirectTouch; + @autoreleasepool { + for (;;) { + // NOTE: using NSDefaultRunLoopMode here causes stuttering in the GL backend, + // see: https://github.com/floooh/sokol/issues/486 + NSEvent* event = [NSApp nextEventMatchingMask:mask untilDate:nil inMode:NSEventTrackingRunLoopMode dequeue:YES]; + if (event == nil) { + break; + } + [NSApp sendEvent:event]; + } + } + */ +} + +- (void)drawRect:(NSRect)rect { + _SOKOL_UNUSED(rect); + _sapp_timing_measure(&_sapp.timing); + /* Catch any last-moment input events */ + _sapp_macos_poll_input_events(); + @autoreleasepool { + _sapp_macos_frame(); + } + #if !defined(SOKOL_METAL) + [[_sapp.macos.view openGLContext] flushBuffer]; + #endif +} + +- (BOOL)isOpaque { + return YES; +} +- (BOOL)canBecomeKeyView { + return YES; +} +- (BOOL)acceptsFirstResponder { + return YES; +} +- (void)updateTrackingAreas { + if (_sapp.macos.tracking_area != nil) { + [self removeTrackingArea:_sapp.macos.tracking_area]; + _SAPP_OBJC_RELEASE(_sapp.macos.tracking_area); + } + const NSTrackingAreaOptions options = NSTrackingMouseEnteredAndExited | + NSTrackingActiveInKeyWindow | + NSTrackingEnabledDuringMouseDrag | + NSTrackingCursorUpdate | + NSTrackingInVisibleRect | + NSTrackingAssumeInside; + _sapp.macos.tracking_area = [[NSTrackingArea alloc] initWithRect:[self bounds] options:options owner:self userInfo:nil]; + [self addTrackingArea:_sapp.macos.tracking_area]; + [super updateTrackingAreas]; +} +- (void)mouseEntered:(NSEvent*)event { + _sapp_macos_mouse_update(event); + /* don't send mouse enter/leave while dragging (so that it behaves the same as + on Windows while SetCapture is active + */ + if (0 == _sapp.macos.mouse_buttons) { + _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_ENTER, SAPP_MOUSEBUTTON_INVALID, _sapp_macos_mods(event)); + } +} +- (void)mouseExited:(NSEvent*)event { + _sapp_macos_mouse_update(event); + if (0 == _sapp.macos.mouse_buttons) { + _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_LEAVE, SAPP_MOUSEBUTTON_INVALID, _sapp_macos_mods(event)); + } +} +- (void)mouseDown:(NSEvent*)event { + _sapp_macos_mouse_update(event); + _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_DOWN, SAPP_MOUSEBUTTON_LEFT, _sapp_macos_mods(event)); + _sapp.macos.mouse_buttons |= (1< 0.0f) || (_sapp_absf(dy) > 0.0f)) { + _sapp_init_event(SAPP_EVENTTYPE_MOUSE_SCROLL); + _sapp.event.modifiers = _sapp_macos_mods(event); + _sapp.event.scroll_x = dx; + _sapp.event.scroll_y = dy; + _sapp_call_event(&_sapp.event); + } + } +} +- (void)keyDown:(NSEvent*)event { + if (_sapp_events_enabled()) { + const uint32_t mods = _sapp_macos_mods(event); + const sapp_keycode key_code = _sapp_translate_key(event.keyCode); + _sapp_macos_key_event(SAPP_EVENTTYPE_KEY_DOWN, key_code, event.isARepeat, mods); + const NSString* chars = event.characters; + const NSUInteger len = chars.length; + if (len > 0) { + _sapp_init_event(SAPP_EVENTTYPE_CHAR); + _sapp.event.modifiers = mods; + for (NSUInteger i = 0; i < len; i++) { + const unichar codepoint = [chars characterAtIndex:i]; + if ((codepoint & 0xFF00) == 0xF700) { + continue; + } + _sapp.event.char_code = codepoint; + _sapp.event.key_repeat = event.isARepeat; + _sapp_call_event(&_sapp.event); + } + } + /* if this is a Cmd+V (paste), also send a CLIPBOARD_PASTE event */ + if (_sapp.clipboard.enabled && (mods == SAPP_MODIFIER_SUPER) && (key_code == SAPP_KEYCODE_V)) { + _sapp_init_event(SAPP_EVENTTYPE_CLIPBOARD_PASTED); + _sapp_call_event(&_sapp.event); + } + } +} +- (void)keyUp:(NSEvent*)event { + _sapp_macos_key_event(SAPP_EVENTTYPE_KEY_UP, + _sapp_translate_key(event.keyCode), + event.isARepeat, + _sapp_macos_mods(event)); +} +- (void)flagsChanged:(NSEvent*)event { + const uint32_t old_f = _sapp.macos.flags_changed_store; + const uint32_t new_f = (uint32_t)event.modifierFlags; + _sapp.macos.flags_changed_store = new_f; + sapp_keycode key_code = SAPP_KEYCODE_INVALID; + bool down = false; + if ((new_f ^ old_f) & NSEventModifierFlagShift) { + key_code = SAPP_KEYCODE_LEFT_SHIFT; + down = 0 != (new_f & NSEventModifierFlagShift); + } + if ((new_f ^ old_f) & NSEventModifierFlagControl) { + key_code = SAPP_KEYCODE_LEFT_CONTROL; + down = 0 != (new_f & NSEventModifierFlagControl); + } + if ((new_f ^ old_f) & NSEventModifierFlagOption) { + key_code = SAPP_KEYCODE_LEFT_ALT; + down = 0 != (new_f & NSEventModifierFlagOption); + } + if ((new_f ^ old_f) & NSEventModifierFlagCommand) { + key_code = SAPP_KEYCODE_LEFT_SUPER; + down = 0 != (new_f & NSEventModifierFlagCommand); + } + if (key_code != SAPP_KEYCODE_INVALID) { + _sapp_macos_key_event(down ? SAPP_EVENTTYPE_KEY_DOWN : SAPP_EVENTTYPE_KEY_UP, + key_code, + false, + _sapp_macos_mods(event)); + } +} +@end + +#endif // macOS + +// ██ ██████ ███████ +// ██ ██ ██ ██ +// ██ ██ ██ ███████ +// ██ ██ ██ ██ +// ██ ██████ ███████ +// +// >>ios +#if defined(_SAPP_IOS) + +_SOKOL_PRIVATE void _sapp_ios_discard_state(void) { + // NOTE: it's safe to call [release] on a nil object + _SAPP_OBJC_RELEASE(_sapp.ios.textfield_dlg); + _SAPP_OBJC_RELEASE(_sapp.ios.textfield); + #if defined(SOKOL_METAL) + _SAPP_OBJC_RELEASE(_sapp.ios.view_ctrl); + _SAPP_OBJC_RELEASE(_sapp.ios.mtl_device); + #else + _SAPP_OBJC_RELEASE(_sapp.ios.view_ctrl); + _SAPP_OBJC_RELEASE(_sapp.ios.eagl_ctx); + #endif + _SAPP_OBJC_RELEASE(_sapp.ios.view); + _SAPP_OBJC_RELEASE(_sapp.ios.window); +} + +_SOKOL_PRIVATE void _sapp_ios_run(const sapp_desc* desc) { + _sapp_init_state(desc); + static int argc = 1; + static char* argv[] = { (char*)"sokol_app" }; + UIApplicationMain(argc, argv, nil, NSStringFromClass([_sapp_app_delegate class])); +} + +/* iOS entry function */ +#if !defined(SOKOL_NO_ENTRY) +int main(int argc, char* argv[]) { + sapp_desc desc = sokol_main(argc, argv); + _sapp_ios_run(&desc); + return 0; +} +#endif /* SOKOL_NO_ENTRY */ + +_SOKOL_PRIVATE void _sapp_ios_app_event(sapp_event_type type) { + if (_sapp_events_enabled()) { + _sapp_init_event(type); + _sapp_call_event(&_sapp.event); + } +} + +_SOKOL_PRIVATE void _sapp_ios_touch_event(sapp_event_type type, NSSet* touches, UIEvent* event) { + if (_sapp_events_enabled()) { + _sapp_init_event(type); + NSEnumerator* enumerator = event.allTouches.objectEnumerator; + UITouch* ios_touch; + while ((ios_touch = [enumerator nextObject])) { + if ((_sapp.event.num_touches + 1) < SAPP_MAX_TOUCHPOINTS) { + CGPoint ios_pos = [ios_touch locationInView:_sapp.ios.view]; + sapp_touchpoint* cur_point = &_sapp.event.touches[_sapp.event.num_touches++]; + cur_point->identifier = (uintptr_t) ios_touch; + cur_point->pos_x = ios_pos.x * _sapp.dpi_scale; + cur_point->pos_y = ios_pos.y * _sapp.dpi_scale; + cur_point->changed = [touches containsObject:ios_touch]; + } + } + if (_sapp.event.num_touches > 0) { + _sapp_call_event(&_sapp.event); + } + } +} + +_SOKOL_PRIVATE void _sapp_ios_update_dimensions(void) { + CGRect screen_rect = UIScreen.mainScreen.bounds; + _sapp.framebuffer_width = (int)roundf(screen_rect.size.width * _sapp.dpi_scale); + _sapp.framebuffer_height = (int)roundf(screen_rect.size.height * _sapp.dpi_scale); + _sapp.window_width = (int)roundf(screen_rect.size.width); + _sapp.window_height = (int)roundf(screen_rect.size.height); + int cur_fb_width, cur_fb_height; + #if defined(SOKOL_METAL) + const CGSize fb_size = _sapp.ios.view.drawableSize; + cur_fb_width = (int)roundf(fb_size.width); + cur_fb_height = (int)roundf(fb_size.height); + #else + cur_fb_width = (int)roundf(_sapp.ios.view.drawableWidth); + cur_fb_height = (int)roundf(_sapp.ios.view.drawableHeight); + #endif + const bool dim_changed = (_sapp.framebuffer_width != cur_fb_width) || + (_sapp.framebuffer_height != cur_fb_height); + if (dim_changed) { + #if defined(SOKOL_METAL) + const CGSize drawable_size = { (CGFloat) _sapp.framebuffer_width, (CGFloat) _sapp.framebuffer_height }; + _sapp.ios.view.drawableSize = drawable_size; + #else + // nothing to do here, GLKView correctly respects the view's contentScaleFactor + #endif + if (!_sapp.first_frame) { + _sapp_ios_app_event(SAPP_EVENTTYPE_RESIZED); + } + } +} + +_SOKOL_PRIVATE void _sapp_ios_frame(void) { + _sapp_ios_update_dimensions(); + _sapp_frame(); +} + +_SOKOL_PRIVATE void _sapp_ios_show_keyboard(bool shown) { + /* if not happened yet, create an invisible text field */ + if (nil == _sapp.ios.textfield) { + _sapp.ios.textfield_dlg = [[_sapp_textfield_dlg alloc] init]; + _sapp.ios.textfield = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 100, 50)]; + _sapp.ios.textfield.keyboardType = UIKeyboardTypeDefault; + _sapp.ios.textfield.returnKeyType = UIReturnKeyDefault; + _sapp.ios.textfield.autocapitalizationType = UITextAutocapitalizationTypeNone; + _sapp.ios.textfield.autocorrectionType = UITextAutocorrectionTypeNo; + _sapp.ios.textfield.spellCheckingType = UITextSpellCheckingTypeNo; + _sapp.ios.textfield.hidden = YES; + _sapp.ios.textfield.text = @"x"; + _sapp.ios.textfield.delegate = _sapp.ios.textfield_dlg; + [_sapp.ios.view_ctrl.view addSubview:_sapp.ios.textfield]; + + [[NSNotificationCenter defaultCenter] addObserver:_sapp.ios.textfield_dlg + selector:@selector(keyboardWasShown:) + name:UIKeyboardDidShowNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:_sapp.ios.textfield_dlg + selector:@selector(keyboardWillBeHidden:) + name:UIKeyboardWillHideNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:_sapp.ios.textfield_dlg + selector:@selector(keyboardDidChangeFrame:) + name:UIKeyboardDidChangeFrameNotification object:nil]; + } + if (shown) { + /* setting the text field as first responder brings up the onscreen keyboard */ + [_sapp.ios.textfield becomeFirstResponder]; + } + else { + [_sapp.ios.textfield resignFirstResponder]; + } +} + +@implementation _sapp_app_delegate +- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { + CGRect screen_rect = UIScreen.mainScreen.bounds; + _sapp.ios.window = [[UIWindow alloc] initWithFrame:screen_rect]; + _sapp.window_width = (int)roundf(screen_rect.size.width); + _sapp.window_height = (int)roundf(screen_rect.size.height); + if (_sapp.desc.high_dpi) { + _sapp.dpi_scale = (float) UIScreen.mainScreen.nativeScale; + } + else { + _sapp.dpi_scale = 1.0f; + } + _sapp.framebuffer_width = (int)roundf(_sapp.window_width * _sapp.dpi_scale); + _sapp.framebuffer_height = (int)roundf(_sapp.window_height * _sapp.dpi_scale); + NSInteger max_fps = UIScreen.mainScreen.maximumFramesPerSecond; + #if defined(SOKOL_METAL) + _sapp.ios.mtl_device = MTLCreateSystemDefaultDevice(); + _sapp.ios.view = [[_sapp_ios_view alloc] init]; + _sapp.ios.view.preferredFramesPerSecond = max_fps / _sapp.swap_interval; + _sapp.ios.view.device = _sapp.ios.mtl_device; + _sapp.ios.view.colorPixelFormat = MTLPixelFormatBGRA8Unorm; + _sapp.ios.view.depthStencilPixelFormat = MTLPixelFormatDepth32Float_Stencil8; + _sapp.ios.view.sampleCount = (NSUInteger)_sapp.sample_count; + /* NOTE: iOS MTKView seems to ignore thew view's contentScaleFactor + and automatically renders at Retina resolution. We'll disable + autoResize and instead do the resizing in _sapp_ios_update_dimensions() + */ + _sapp.ios.view.autoResizeDrawable = false; + _sapp.ios.view.userInteractionEnabled = YES; + _sapp.ios.view.multipleTouchEnabled = YES; + _sapp.ios.view_ctrl = [[UIViewController alloc] init]; + _sapp.ios.view_ctrl.modalPresentationStyle = UIModalPresentationFullScreen; + _sapp.ios.view_ctrl.view = _sapp.ios.view; + _sapp.ios.window.rootViewController = _sapp.ios.view_ctrl; + #else + _sapp.ios.eagl_ctx = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; + _sapp.ios.view = [[_sapp_ios_view alloc] initWithFrame:screen_rect]; + _sapp.ios.view.drawableColorFormat = GLKViewDrawableColorFormatRGBA8888; + _sapp.ios.view.drawableDepthFormat = GLKViewDrawableDepthFormat24; + _sapp.ios.view.drawableStencilFormat = GLKViewDrawableStencilFormatNone; + GLKViewDrawableMultisample msaa = _sapp.sample_count > 1 ? GLKViewDrawableMultisample4X : GLKViewDrawableMultisampleNone; + _sapp.ios.view.drawableMultisample = msaa; + _sapp.ios.view.context = _sapp.ios.eagl_ctx; + _sapp.ios.view.enableSetNeedsDisplay = NO; + _sapp.ios.view.userInteractionEnabled = YES; + _sapp.ios.view.multipleTouchEnabled = YES; + // on GLKView, contentScaleFactor appears to work just fine! + if (_sapp.desc.high_dpi) { + _sapp.ios.view.contentScaleFactor = _sapp.dpi_scale; + } + else { + _sapp.ios.view.contentScaleFactor = 1.0; + } + _sapp.ios.view_ctrl = [[GLKViewController alloc] init]; + _sapp.ios.view_ctrl.view = _sapp.ios.view; + _sapp.ios.view_ctrl.preferredFramesPerSecond = max_fps / _sapp.swap_interval; + _sapp.ios.window.rootViewController = _sapp.ios.view_ctrl; + #endif + [_sapp.ios.window makeKeyAndVisible]; + + _sapp.valid = true; + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application { + if (!_sapp.ios.suspended) { + _sapp.ios.suspended = true; + _sapp_ios_app_event(SAPP_EVENTTYPE_SUSPENDED); + } +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + if (_sapp.ios.suspended) { + _sapp.ios.suspended = false; + _sapp_ios_app_event(SAPP_EVENTTYPE_RESUMED); + } +} + +/* NOTE: this method will rarely ever be called, iOS application + which are terminated by the user are usually killed via signal 9 + by the operating system. +*/ +- (void)applicationWillTerminate:(UIApplication *)application { + _SOKOL_UNUSED(application); + _sapp_call_cleanup(); + _sapp_ios_discard_state(); + _sapp_discard_state(); +} +@end + +@implementation _sapp_textfield_dlg +- (void)keyboardWasShown:(NSNotification*)notif { + _sapp.onscreen_keyboard_shown = true; + /* query the keyboard's size, and modify the content view's size */ + if (_sapp.desc.ios_keyboard_resizes_canvas) { + NSDictionary* info = notif.userInfo; + CGFloat kbd_h = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height; + CGRect view_frame = UIScreen.mainScreen.bounds; + view_frame.size.height -= kbd_h; + _sapp.ios.view.frame = view_frame; + } +} +- (void)keyboardWillBeHidden:(NSNotification*)notif { + _sapp.onscreen_keyboard_shown = false; + if (_sapp.desc.ios_keyboard_resizes_canvas) { + _sapp.ios.view.frame = UIScreen.mainScreen.bounds; + } +} +- (void)keyboardDidChangeFrame:(NSNotification*)notif { + /* this is for the case when the screen rotation changes while the keyboard is open */ + if (_sapp.onscreen_keyboard_shown && _sapp.desc.ios_keyboard_resizes_canvas) { + NSDictionary* info = notif.userInfo; + CGFloat kbd_h = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height; + CGRect view_frame = UIScreen.mainScreen.bounds; + view_frame.size.height -= kbd_h; + _sapp.ios.view.frame = view_frame; + } +} +- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string { + if (_sapp_events_enabled()) { + const NSUInteger len = string.length; + if (len > 0) { + for (NSUInteger i = 0; i < len; i++) { + unichar c = [string characterAtIndex:i]; + if (c >= 32) { + /* ignore surrogates for now */ + if ((c < 0xD800) || (c > 0xDFFF)) { + _sapp_init_event(SAPP_EVENTTYPE_CHAR); + _sapp.event.char_code = c; + _sapp_call_event(&_sapp.event); + } + } + if (c <= 32) { + sapp_keycode k = SAPP_KEYCODE_INVALID; + switch (c) { + case 10: k = SAPP_KEYCODE_ENTER; break; + case 32: k = SAPP_KEYCODE_SPACE; break; + default: break; + } + if (k != SAPP_KEYCODE_INVALID) { + _sapp_init_event(SAPP_EVENTTYPE_KEY_DOWN); + _sapp.event.key_code = k; + _sapp_call_event(&_sapp.event); + _sapp_init_event(SAPP_EVENTTYPE_KEY_UP); + _sapp.event.key_code = k; + _sapp_call_event(&_sapp.event); + } + } + } + } + else { + /* this was a backspace */ + _sapp_init_event(SAPP_EVENTTYPE_KEY_DOWN); + _sapp.event.key_code = SAPP_KEYCODE_BACKSPACE; + _sapp_call_event(&_sapp.event); + _sapp_init_event(SAPP_EVENTTYPE_KEY_UP); + _sapp.event.key_code = SAPP_KEYCODE_BACKSPACE; + _sapp_call_event(&_sapp.event); + } + } + return NO; +} +@end + +@implementation _sapp_ios_view +- (void)drawRect:(CGRect)rect { + _SOKOL_UNUSED(rect); + _sapp_timing_measure(&_sapp.timing); + @autoreleasepool { + _sapp_ios_frame(); + } +} +- (BOOL)isOpaque { + return YES; +} +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event { + _sapp_ios_touch_event(SAPP_EVENTTYPE_TOUCHES_BEGAN, touches, event); +} +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent*)event { + _sapp_ios_touch_event(SAPP_EVENTTYPE_TOUCHES_MOVED, touches, event); +} +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event { + _sapp_ios_touch_event(SAPP_EVENTTYPE_TOUCHES_ENDED, touches, event); +} +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent*)event { + _sapp_ios_touch_event(SAPP_EVENTTYPE_TOUCHES_CANCELLED, touches, event); +} +@end +#endif /* TARGET_OS_IPHONE */ + +#endif /* _SAPP_APPLE */ + +// ███████ ███ ███ ███████ ██████ ██████ ██ ██████ ████████ ███████ ███ ██ +// ██ ████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ +// █████ ██ ████ ██ ███████ ██ ██████ ██ ██████ ██ █████ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██ ███████ ██████ ██ ██ ██ ██ ██ ███████ ██ ████ +// +// >>emscripten +#if defined(_SAPP_EMSCRIPTEN) + +#if defined(EM_JS_DEPS) +EM_JS_DEPS(sokol_app, "$withStackSave,$allocateUTF8OnStack"); +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*_sapp_html5_fetch_callback) (const sapp_html5_fetch_response*); + +/* this function is called from a JS event handler when the user hides + the onscreen keyboard pressing the 'dismiss keyboard key' +*/ +EMSCRIPTEN_KEEPALIVE void _sapp_emsc_notify_keyboard_hidden(void) { + _sapp.onscreen_keyboard_shown = false; +} + +EMSCRIPTEN_KEEPALIVE void _sapp_emsc_onpaste(const char* str) { + if (_sapp.clipboard.enabled) { + _sapp_strcpy(str, _sapp.clipboard.buffer, _sapp.clipboard.buf_size); + if (_sapp_events_enabled()) { + _sapp_init_event(SAPP_EVENTTYPE_CLIPBOARD_PASTED); + _sapp_call_event(&_sapp.event); + } + } +} + +/* https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload */ +EMSCRIPTEN_KEEPALIVE int _sapp_html5_get_ask_leave_site(void) { + return _sapp.html5_ask_leave_site ? 1 : 0; +} + +EMSCRIPTEN_KEEPALIVE void _sapp_emsc_begin_drop(int num) { + if (!_sapp.drop.enabled) { + return; + } + if (num < 0) { + num = 0; + } + if (num > _sapp.drop.max_files) { + num = _sapp.drop.max_files; + } + _sapp.drop.num_files = num; + _sapp_clear_drop_buffer(); +} + +EMSCRIPTEN_KEEPALIVE void _sapp_emsc_drop(int i, const char* name) { + /* NOTE: name is only the filename part, not a path */ + if (!_sapp.drop.enabled) { + return; + } + if (0 == name) { + return; + } + SOKOL_ASSERT(_sapp.drop.num_files <= _sapp.drop.max_files); + if ((i < 0) || (i >= _sapp.drop.num_files)) { + return; + } + if (!_sapp_strcpy(name, _sapp_dropped_file_path_ptr(i), _sapp.drop.max_path_length)) { + _SAPP_ERROR(DROPPED_FILE_PATH_TOO_LONG); + _sapp.drop.num_files = 0; + } +} + +EMSCRIPTEN_KEEPALIVE void _sapp_emsc_end_drop(int x, int y) { + if (!_sapp.drop.enabled) { + return; + } + if (0 == _sapp.drop.num_files) { + /* there was an error copying the filenames */ + _sapp_clear_drop_buffer(); + return; + + } + if (_sapp_events_enabled()) { + _sapp.mouse.x = (float)x * _sapp.dpi_scale; + _sapp.mouse.y = (float)y * _sapp.dpi_scale; + _sapp.mouse.dx = 0.0f; + _sapp.mouse.dy = 0.0f; + _sapp_init_event(SAPP_EVENTTYPE_FILES_DROPPED); + _sapp_call_event(&_sapp.event); + } +} + +EMSCRIPTEN_KEEPALIVE void _sapp_emsc_invoke_fetch_cb(int index, int success, int error_code, _sapp_html5_fetch_callback callback, uint32_t fetched_size, void* buf_ptr, uint32_t buf_size, void* user_data) { + sapp_html5_fetch_response response; + _sapp_clear(&response, sizeof(response)); + response.succeeded = (0 != success); + response.error_code = (sapp_html5_fetch_error) error_code; + response.file_index = index; + response.data.ptr = buf_ptr; + response.data.size = fetched_size; + response.buffer.ptr = buf_ptr; + response.buffer.size = buf_size; + response.user_data = user_data; + callback(&response); +} + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +/* Javascript helper functions for mobile virtual keyboard input */ +EM_JS(void, sapp_js_create_textfield, (void), { + const _sapp_inp = document.createElement("input"); + _sapp_inp.type = "text"; + _sapp_inp.id = "_sokol_app_input_element"; + _sapp_inp.autocapitalize = "none"; + _sapp_inp.addEventListener("focusout", function(_sapp_event) { + __sapp_emsc_notify_keyboard_hidden() + + }); + document.body.append(_sapp_inp); +}); + +EM_JS(void, sapp_js_focus_textfield, (void), { + document.getElementById("_sokol_app_input_element").focus(); +}); + +EM_JS(void, sapp_js_unfocus_textfield, (void), { + document.getElementById("_sokol_app_input_element").blur(); +}); + +EM_JS(void, sapp_js_add_beforeunload_listener, (void), { + Module.sokol_beforeunload = (event) => { + if (__sapp_html5_get_ask_leave_site() != 0) { + event.preventDefault(); + event.returnValue = ' '; + } + }; + window.addEventListener('beforeunload', Module.sokol_beforeunload); +}); + +EM_JS(void, sapp_js_remove_beforeunload_listener, (void), { + window.removeEventListener('beforeunload', Module.sokol_beforeunload); +}); + +EM_JS(void, sapp_js_add_clipboard_listener, (void), { + Module.sokol_paste = (event) => { + const pasted_str = event.clipboardData.getData('text'); + withStackSave(() => { + const cstr = allocateUTF8OnStack(pasted_str); + __sapp_emsc_onpaste(cstr); + }); + }; + window.addEventListener('paste', Module.sokol_paste); +}); + +EM_JS(void, sapp_js_remove_clipboard_listener, (void), { + window.removeEventListener('paste', Module.sokol_paste); +}); + +EM_JS(void, sapp_js_write_clipboard, (const char* c_str), { + const str = UTF8ToString(c_str); + const ta = document.createElement('textarea'); + ta.setAttribute('autocomplete', 'off'); + ta.setAttribute('autocorrect', 'off'); + ta.setAttribute('autocapitalize', 'off'); + ta.setAttribute('spellcheck', 'false'); + ta.style.left = -100 + 'px'; + ta.style.top = -100 + 'px'; + ta.style.height = 1; + ta.style.width = 1; + ta.value = str; + document.body.appendChild(ta); + ta.select(); + document.execCommand('copy'); + document.body.removeChild(ta); +}); + +_SOKOL_PRIVATE void _sapp_emsc_set_clipboard_string(const char* str) { + sapp_js_write_clipboard(str); +} + +EM_JS(void, sapp_js_add_dragndrop_listeners, (const char* canvas_name_cstr), { + Module.sokol_drop_files = []; + const canvas_name = UTF8ToString(canvas_name_cstr); + const canvas = document.getElementById(canvas_name); + Module.sokol_dragenter = (event) => { + event.stopPropagation(); + event.preventDefault(); + }; + Module.sokol_dragleave = (event) => { + event.stopPropagation(); + event.preventDefault(); + }; + Module.sokol_dragover = (event) => { + event.stopPropagation(); + event.preventDefault(); + }; + Module.sokol_drop = (event) => { + event.stopPropagation(); + event.preventDefault(); + const files = event.dataTransfer.files; + Module.sokol_dropped_files = files; + __sapp_emsc_begin_drop(files.length); + for (let i = 0; i < files.length; i++) { + withStackSave(() => { + const cstr = allocateUTF8OnStack(files[i].name); + __sapp_emsc_drop(i, cstr); + }); + } + // FIXME? see computation of targetX/targetY in emscripten via getClientBoundingRect + __sapp_emsc_end_drop(event.clientX, event.clientY); + }; + canvas.addEventListener('dragenter', Module.sokol_dragenter, false); + canvas.addEventListener('dragleave', Module.sokol_dragleave, false); + canvas.addEventListener('dragover', Module.sokol_dragover, false); + canvas.addEventListener('drop', Module.sokol_drop, false); +}); + +EM_JS(uint32_t, sapp_js_dropped_file_size, (int index), { + \x2F\x2A\x2A @suppress {missingProperties} \x2A\x2F + const files = Module.sokol_dropped_files; + if ((index < 0) || (index >= files.length)) { + return 0; + } + else { + return files[index].size; + } +}); + +EM_JS(void, sapp_js_fetch_dropped_file, (int index, _sapp_html5_fetch_callback callback, void* buf_ptr, uint32_t buf_size, void* user_data), { + const reader = new FileReader(); + reader.onload = (loadEvent) => { + const content = loadEvent.target.result; + if (content.byteLength > buf_size) { + // SAPP_HTML5_FETCH_ERROR_BUFFER_TOO_SMALL + __sapp_emsc_invoke_fetch_cb(index, 0, 1, callback, 0, buf_ptr, buf_size, user_data); + } + else { + HEAPU8.set(new Uint8Array(content), buf_ptr); + __sapp_emsc_invoke_fetch_cb(index, 1, 0, callback, content.byteLength, buf_ptr, buf_size, user_data); + } + }; + reader.onerror = () => { + // SAPP_HTML5_FETCH_ERROR_OTHER + __sapp_emsc_invoke_fetch_cb(index, 0, 2, callback, 0, buf_ptr, buf_size, user_data); + }; + \x2F\x2A\x2A @suppress {missingProperties} \x2A\x2F + const files = Module.sokol_dropped_files; + reader.readAsArrayBuffer(files[index]); +}); + +EM_JS(void, sapp_js_remove_dragndrop_listeners, (const char* canvas_name_cstr), { + const canvas_name = UTF8ToString(canvas_name_cstr); + const canvas = document.getElementById(canvas_name); + canvas.removeEventListener('dragenter', Module.sokol_dragenter); + canvas.removeEventListener('dragleave', Module.sokol_dragleave); + canvas.removeEventListener('dragover', Module.sokol_dragover); + canvas.removeEventListener('drop', Module.sokol_drop); +}); + +/* called from the emscripten event handler to update the keyboard visibility + state, this must happen from an JS input event handler, otherwise + the request will be ignored by the browser +*/ +_SOKOL_PRIVATE void _sapp_emsc_update_keyboard_state(void) { + if (_sapp.emsc.wants_show_keyboard) { + /* create input text field on demand */ + if (!_sapp.emsc.textfield_created) { + _sapp.emsc.textfield_created = true; + sapp_js_create_textfield(); + } + /* focus the text input field, this will bring up the keyboard */ + _sapp.onscreen_keyboard_shown = true; + _sapp.emsc.wants_show_keyboard = false; + sapp_js_focus_textfield(); + } + if (_sapp.emsc.wants_hide_keyboard) { + /* unfocus the text input field */ + if (_sapp.emsc.textfield_created) { + _sapp.onscreen_keyboard_shown = false; + _sapp.emsc.wants_hide_keyboard = false; + sapp_js_unfocus_textfield(); + } + } +} + +/* actually showing the onscreen keyboard must be initiated from a JS + input event handler, so we'll just keep track of the desired + state, and the actual state change will happen with the next input event +*/ +_SOKOL_PRIVATE void _sapp_emsc_show_keyboard(bool show) { + if (show) { + _sapp.emsc.wants_show_keyboard = true; + } + else { + _sapp.emsc.wants_hide_keyboard = true; + } +} + +EM_JS(void, sapp_js_init, (const char* c_str_target), { + // lookup and store canvas object by name + const target_str = UTF8ToString(c_str_target); + Module.sapp_emsc_target = document.getElementById(target_str); + if (!Module.sapp_emsc_target) { + console.log("sokol_app.h: invalid target:" + target_str); + } + if (!Module.sapp_emsc_target.requestPointerLock) { + console.log("sokol_app.h: target doesn't support requestPointerLock:" + target_str); + } +}); + +_SOKOL_PRIVATE EM_BOOL _sapp_emsc_pointerlockchange_cb(int emsc_type, const EmscriptenPointerlockChangeEvent* emsc_event, void* user_data) { + _SOKOL_UNUSED(emsc_type); + _SOKOL_UNUSED(user_data); + _sapp.mouse.locked = emsc_event->isActive; + return EM_TRUE; +} + +_SOKOL_PRIVATE EM_BOOL _sapp_emsc_pointerlockerror_cb(int emsc_type, const void* reserved, void* user_data) { + _SOKOL_UNUSED(emsc_type); + _SOKOL_UNUSED(reserved); + _SOKOL_UNUSED(user_data); + _sapp.mouse.locked = false; + _sapp.emsc.mouse_lock_requested = false; + return true; +} + +EM_JS(void, sapp_js_request_pointerlock, (void), { + if (Module.sapp_emsc_target) { + if (Module.sapp_emsc_target.requestPointerLock) { + Module.sapp_emsc_target.requestPointerLock(); + } + } +}); + +EM_JS(void, sapp_js_exit_pointerlock, (void), { + if (document.exitPointerLock) { + document.exitPointerLock(); + } +}); + +_SOKOL_PRIVATE void _sapp_emsc_lock_mouse(bool lock) { + if (lock) { + /* request mouse-lock during event handler invocation (see _sapp_emsc_update_mouse_lock_state) */ + _sapp.emsc.mouse_lock_requested = true; + } + else { + /* NOTE: the _sapp.mouse_locked state will be set in the pointerlockchange callback */ + _sapp.emsc.mouse_lock_requested = false; + sapp_js_exit_pointerlock(); + } +} + +/* called from inside event handlers to check if mouse lock had been requested, + and if yes, actually enter mouse lock. +*/ +_SOKOL_PRIVATE void _sapp_emsc_update_mouse_lock_state(void) { + if (_sapp.emsc.mouse_lock_requested) { + _sapp.emsc.mouse_lock_requested = false; + sapp_js_request_pointerlock(); + } +} + +// set mouse cursor type +EM_JS(void, sapp_js_set_cursor, (int cursor_type, int shown), { + if (Module.sapp_emsc_target) { + let cursor; + if (shown === 0) { + cursor = "none"; + } + else switch (cursor_type) { + case 0: cursor = "auto"; break; // SAPP_MOUSECURSOR_DEFAULT + case 1: cursor = "default"; break; // SAPP_MOUSECURSOR_ARROW + case 2: cursor = "text"; break; // SAPP_MOUSECURSOR_IBEAM + case 3: cursor = "crosshair"; break; // SAPP_MOUSECURSOR_CROSSHAIR + case 4: cursor = "pointer"; break; // SAPP_MOUSECURSOR_POINTING_HAND + case 5: cursor = "ew-resize"; break; // SAPP_MOUSECURSOR_RESIZE_EW + case 6: cursor = "ns-resize"; break; // SAPP_MOUSECURSOR_RESIZE_NS + case 7: cursor = "nwse-resize"; break; // SAPP_MOUSECURSOR_RESIZE_NWSE + case 8: cursor = "nesw-resize"; break; // SAPP_MOUSECURSOR_RESIZE_NESW + case 9: cursor = "all-scroll"; break; // SAPP_MOUSECURSOR_RESIZE_ALL + case 10: cursor = "not-allowed"; break; // SAPP_MOUSECURSOR_NOT_ALLOWED + default: cursor = "auto"; break; + } + Module.sapp_emsc_target.style.cursor = cursor; + } +}); + +_SOKOL_PRIVATE void _sapp_emsc_update_cursor(sapp_mouse_cursor cursor, bool shown) { + SOKOL_ASSERT((cursor >= 0) && (cursor < _SAPP_MOUSECURSOR_NUM)); + sapp_js_set_cursor((int)cursor, shown ? 1 : 0); +} + +/* JS helper functions to update browser tab favicon */ +EM_JS(void, sapp_js_clear_favicon, (void), { + const link = document.getElementById('sokol-app-favicon'); + if (link) { + document.head.removeChild(link); + } +}); + +EM_JS(void, sapp_js_set_favicon, (int w, int h, const uint8_t* pixels), { + const canvas = document.createElement('canvas'); + canvas.width = w; + canvas.height = h; + const ctx = canvas.getContext('2d'); + const img_data = ctx.createImageData(w, h); + img_data.data.set(HEAPU8.subarray(pixels, pixels + w*h*4)); + ctx.putImageData(img_data, 0, 0); + const new_link = document.createElement('link'); + new_link.id = 'sokol-app-favicon'; + new_link.rel = 'shortcut icon'; + new_link.href = canvas.toDataURL(); + document.head.appendChild(new_link); +}); + +_SOKOL_PRIVATE void _sapp_emsc_set_icon(const sapp_icon_desc* icon_desc, int num_images) { + SOKOL_ASSERT((num_images > 0) && (num_images <= SAPP_MAX_ICONIMAGES)); + sapp_js_clear_favicon(); + // find the best matching image candidate for 16x16 pixels + int img_index = _sapp_image_bestmatch(icon_desc->images, num_images, 16, 16); + const sapp_image_desc* img_desc = &icon_desc->images[img_index]; + sapp_js_set_favicon(img_desc->width, img_desc->height, (const uint8_t*) img_desc->pixels.ptr); +} + +#if defined(SOKOL_WGPU) +_SOKOL_PRIVATE void _sapp_emsc_wgpu_surfaces_create(void); +_SOKOL_PRIVATE void _sapp_emsc_wgpu_surfaces_discard(void); +#endif + +_SOKOL_PRIVATE uint32_t _sapp_emsc_mouse_button_mods(uint16_t buttons) { + uint32_t m = 0; + if (0 != (buttons & (1<<0))) { m |= SAPP_MODIFIER_LMB; } + if (0 != (buttons & (1<<1))) { m |= SAPP_MODIFIER_RMB; } // not a bug + if (0 != (buttons & (1<<2))) { m |= SAPP_MODIFIER_MMB; } // not a bug + return m; +} + +_SOKOL_PRIVATE uint32_t _sapp_emsc_mouse_event_mods(const EmscriptenMouseEvent* ev) { + uint32_t m = 0; + if (ev->ctrlKey) { m |= SAPP_MODIFIER_CTRL; } + if (ev->shiftKey) { m |= SAPP_MODIFIER_SHIFT; } + if (ev->altKey) { m |= SAPP_MODIFIER_ALT; } + if (ev->metaKey) { m |= SAPP_MODIFIER_SUPER; } + m |= _sapp_emsc_mouse_button_mods(_sapp.emsc.mouse_buttons); + return m; +} + +_SOKOL_PRIVATE uint32_t _sapp_emsc_key_event_mods(const EmscriptenKeyboardEvent* ev) { + uint32_t m = 0; + if (ev->ctrlKey) { m |= SAPP_MODIFIER_CTRL; } + if (ev->shiftKey) { m |= SAPP_MODIFIER_SHIFT; } + if (ev->altKey) { m |= SAPP_MODIFIER_ALT; } + if (ev->metaKey) { m |= SAPP_MODIFIER_SUPER; } + m |= _sapp_emsc_mouse_button_mods(_sapp.emsc.mouse_buttons); + return m; +} + +_SOKOL_PRIVATE uint32_t _sapp_emsc_touch_event_mods(const EmscriptenTouchEvent* ev) { + uint32_t m = 0; + if (ev->ctrlKey) { m |= SAPP_MODIFIER_CTRL; } + if (ev->shiftKey) { m |= SAPP_MODIFIER_SHIFT; } + if (ev->altKey) { m |= SAPP_MODIFIER_ALT; } + if (ev->metaKey) { m |= SAPP_MODIFIER_SUPER; } + m |= _sapp_emsc_mouse_button_mods(_sapp.emsc.mouse_buttons); + return m; +} + +_SOKOL_PRIVATE EM_BOOL _sapp_emsc_size_changed(int event_type, const EmscriptenUiEvent* ui_event, void* user_data) { + _SOKOL_UNUSED(event_type); + _SOKOL_UNUSED(user_data); + double w, h; + emscripten_get_element_css_size(_sapp.html5_canvas_selector, &w, &h); + /* The above method might report zero when toggling HTML5 fullscreen, + in that case use the window's inner width reported by the + emscripten event. This works ok when toggling *into* fullscreen + but doesn't properly restore the previous canvas size when switching + back from fullscreen. + + In general, due to the HTML5's fullscreen API's flaky nature it is + recommended to use 'soft fullscreen' (stretching the WebGL canvas + over the browser windows client rect) with a CSS definition like this: + + position: absolute; + top: 0px; + left: 0px; + margin: 0px; + border: 0; + width: 100%; + height: 100%; + overflow: hidden; + display: block; + */ + if (w < 1.0) { + w = ui_event->windowInnerWidth; + } + else { + _sapp.window_width = (int)roundf(w); + } + if (h < 1.0) { + h = ui_event->windowInnerHeight; + } + else { + _sapp.window_height = (int)roundf(h); + } + if (_sapp.desc.high_dpi) { + _sapp.dpi_scale = emscripten_get_device_pixel_ratio(); + } + _sapp.framebuffer_width = (int)roundf(w * _sapp.dpi_scale); + _sapp.framebuffer_height = (int)roundf(h * _sapp.dpi_scale); + SOKOL_ASSERT((_sapp.framebuffer_width > 0) && (_sapp.framebuffer_height > 0)); + emscripten_set_canvas_element_size(_sapp.html5_canvas_selector, _sapp.framebuffer_width, _sapp.framebuffer_height); + #if defined(SOKOL_WGPU) + /* on WebGPU: recreate size-dependent rendering surfaces */ + _sapp_emsc_wgpu_surfaces_discard(); + _sapp_emsc_wgpu_surfaces_create(); + #endif + if (_sapp_events_enabled()) { + _sapp_init_event(SAPP_EVENTTYPE_RESIZED); + _sapp_call_event(&_sapp.event); + } + return true; +} + +_SOKOL_PRIVATE EM_BOOL _sapp_emsc_mouse_cb(int emsc_type, const EmscriptenMouseEvent* emsc_event, void* user_data) { + _SOKOL_UNUSED(user_data); + _sapp.emsc.mouse_buttons = emsc_event->buttons; + if (_sapp.mouse.locked) { + _sapp.mouse.dx = (float) emsc_event->movementX; + _sapp.mouse.dy = (float) emsc_event->movementY; + } + else { + float new_x = emsc_event->targetX * _sapp.dpi_scale; + float new_y = emsc_event->targetY * _sapp.dpi_scale; + if (_sapp.mouse.pos_valid) { + _sapp.mouse.dx = new_x - _sapp.mouse.x; + _sapp.mouse.dy = new_y - _sapp.mouse.y; + } + _sapp.mouse.x = new_x; + _sapp.mouse.y = new_y; + _sapp.mouse.pos_valid = true; + } + if (_sapp_events_enabled() && (emsc_event->button >= 0) && (emsc_event->button < SAPP_MAX_MOUSEBUTTONS)) { + sapp_event_type type; + bool is_button_event = false; + switch (emsc_type) { + case EMSCRIPTEN_EVENT_MOUSEDOWN: + type = SAPP_EVENTTYPE_MOUSE_DOWN; + is_button_event = true; + break; + case EMSCRIPTEN_EVENT_MOUSEUP: + type = SAPP_EVENTTYPE_MOUSE_UP; + is_button_event = true; + break; + case EMSCRIPTEN_EVENT_MOUSEMOVE: + type = SAPP_EVENTTYPE_MOUSE_MOVE; + break; + case EMSCRIPTEN_EVENT_MOUSEENTER: + type = SAPP_EVENTTYPE_MOUSE_ENTER; + break; + case EMSCRIPTEN_EVENT_MOUSELEAVE: + type = SAPP_EVENTTYPE_MOUSE_LEAVE; + break; + default: + type = SAPP_EVENTTYPE_INVALID; + break; + } + if (type != SAPP_EVENTTYPE_INVALID) { + _sapp_init_event(type); + _sapp.event.modifiers = _sapp_emsc_mouse_event_mods(emsc_event); + if (is_button_event) { + switch (emsc_event->button) { + case 0: _sapp.event.mouse_button = SAPP_MOUSEBUTTON_LEFT; break; + case 1: _sapp.event.mouse_button = SAPP_MOUSEBUTTON_MIDDLE; break; + case 2: _sapp.event.mouse_button = SAPP_MOUSEBUTTON_RIGHT; break; + default: _sapp.event.mouse_button = (sapp_mousebutton)emsc_event->button; break; + } + } + else { + _sapp.event.mouse_button = SAPP_MOUSEBUTTON_INVALID; + } + _sapp_call_event(&_sapp.event); + } + /* mouse lock can only be activated in mouse button events (not in move, enter or leave) */ + if (is_button_event) { + _sapp_emsc_update_mouse_lock_state(); + } + } + _sapp_emsc_update_keyboard_state(); + return true; +} + +_SOKOL_PRIVATE EM_BOOL _sapp_emsc_wheel_cb(int emsc_type, const EmscriptenWheelEvent* emsc_event, void* user_data) { + _SOKOL_UNUSED(emsc_type); + _SOKOL_UNUSED(user_data); + _sapp.emsc.mouse_buttons = emsc_event->mouse.buttons; + if (_sapp_events_enabled()) { + _sapp_init_event(SAPP_EVENTTYPE_MOUSE_SCROLL); + _sapp.event.modifiers = _sapp_emsc_mouse_event_mods(&emsc_event->mouse); + /* see https://github.com/floooh/sokol/issues/339 */ + float scale; + switch (emsc_event->deltaMode) { + case DOM_DELTA_PIXEL: scale = -0.04f; break; + case DOM_DELTA_LINE: scale = -1.33f; break; + case DOM_DELTA_PAGE: scale = -10.0f; break; // FIXME: this is a guess + default: scale = -0.1f; break; // shouldn't happen + } + _sapp.event.scroll_x = scale * (float)emsc_event->deltaX; + _sapp.event.scroll_y = scale * (float)emsc_event->deltaY; + _sapp_call_event(&_sapp.event); + } + _sapp_emsc_update_keyboard_state(); + _sapp_emsc_update_mouse_lock_state(); + return true; +} + +static struct { + const char* str; + sapp_keycode code; +} _sapp_emsc_keymap[] = { + { "Backspace", SAPP_KEYCODE_BACKSPACE }, + { "Tab", SAPP_KEYCODE_TAB }, + { "Enter", SAPP_KEYCODE_ENTER }, + { "ShiftLeft", SAPP_KEYCODE_LEFT_SHIFT }, + { "ShiftRight", SAPP_KEYCODE_RIGHT_SHIFT }, + { "ControlLeft", SAPP_KEYCODE_LEFT_CONTROL }, + { "ControlRight", SAPP_KEYCODE_RIGHT_CONTROL }, + { "AltLeft", SAPP_KEYCODE_LEFT_ALT }, + { "AltRight", SAPP_KEYCODE_RIGHT_ALT }, + { "Pause", SAPP_KEYCODE_PAUSE }, + { "CapsLock", SAPP_KEYCODE_CAPS_LOCK }, + { "Escape", SAPP_KEYCODE_ESCAPE }, + { "Space", SAPP_KEYCODE_SPACE }, + { "PageUp", SAPP_KEYCODE_PAGE_UP }, + { "PageDown", SAPP_KEYCODE_PAGE_DOWN }, + { "End", SAPP_KEYCODE_END }, + { "Home", SAPP_KEYCODE_HOME }, + { "ArrowLeft", SAPP_KEYCODE_LEFT }, + { "ArrowUp", SAPP_KEYCODE_UP }, + { "ArrowRight", SAPP_KEYCODE_RIGHT }, + { "ArrowDown", SAPP_KEYCODE_DOWN }, + { "PrintScreen", SAPP_KEYCODE_PRINT_SCREEN }, + { "Insert", SAPP_KEYCODE_INSERT }, + { "Delete", SAPP_KEYCODE_DELETE }, + { "Digit0", SAPP_KEYCODE_0 }, + { "Digit1", SAPP_KEYCODE_1 }, + { "Digit2", SAPP_KEYCODE_2 }, + { "Digit3", SAPP_KEYCODE_3 }, + { "Digit4", SAPP_KEYCODE_4 }, + { "Digit5", SAPP_KEYCODE_5 }, + { "Digit6", SAPP_KEYCODE_6 }, + { "Digit7", SAPP_KEYCODE_7 }, + { "Digit8", SAPP_KEYCODE_8 }, + { "Digit9", SAPP_KEYCODE_9 }, + { "KeyA", SAPP_KEYCODE_A }, + { "KeyB", SAPP_KEYCODE_B }, + { "KeyC", SAPP_KEYCODE_C }, + { "KeyD", SAPP_KEYCODE_D }, + { "KeyE", SAPP_KEYCODE_E }, + { "KeyF", SAPP_KEYCODE_F }, + { "KeyG", SAPP_KEYCODE_G }, + { "KeyH", SAPP_KEYCODE_H }, + { "KeyI", SAPP_KEYCODE_I }, + { "KeyJ", SAPP_KEYCODE_J }, + { "KeyK", SAPP_KEYCODE_K }, + { "KeyL", SAPP_KEYCODE_L }, + { "KeyM", SAPP_KEYCODE_M }, + { "KeyN", SAPP_KEYCODE_N }, + { "KeyO", SAPP_KEYCODE_O }, + { "KeyP", SAPP_KEYCODE_P }, + { "KeyQ", SAPP_KEYCODE_Q }, + { "KeyR", SAPP_KEYCODE_R }, + { "KeyS", SAPP_KEYCODE_S }, + { "KeyT", SAPP_KEYCODE_T }, + { "KeyU", SAPP_KEYCODE_U }, + { "KeyV", SAPP_KEYCODE_V }, + { "KeyW", SAPP_KEYCODE_W }, + { "KeyX", SAPP_KEYCODE_X }, + { "KeyY", SAPP_KEYCODE_Y }, + { "KeyZ", SAPP_KEYCODE_Z }, + { "MetaLeft", SAPP_KEYCODE_LEFT_SUPER }, + { "MetaRight", SAPP_KEYCODE_RIGHT_SUPER }, + { "Numpad0", SAPP_KEYCODE_KP_0 }, + { "Numpad1", SAPP_KEYCODE_KP_1 }, + { "Numpad2", SAPP_KEYCODE_KP_2 }, + { "Numpad3", SAPP_KEYCODE_KP_3 }, + { "Numpad4", SAPP_KEYCODE_KP_4 }, + { "Numpad5", SAPP_KEYCODE_KP_5 }, + { "Numpad6", SAPP_KEYCODE_KP_6 }, + { "Numpad7", SAPP_KEYCODE_KP_7 }, + { "Numpad8", SAPP_KEYCODE_KP_8 }, + { "Numpad9", SAPP_KEYCODE_KP_9 }, + { "NumpadMultiply", SAPP_KEYCODE_KP_MULTIPLY }, + { "NumpadAdd", SAPP_KEYCODE_KP_ADD }, + { "NumpadSubtract", SAPP_KEYCODE_KP_SUBTRACT }, + { "NumpadDecimal", SAPP_KEYCODE_KP_DECIMAL }, + { "NumpadDivide", SAPP_KEYCODE_KP_DIVIDE }, + { "F1", SAPP_KEYCODE_F1 }, + { "F2", SAPP_KEYCODE_F2 }, + { "F3", SAPP_KEYCODE_F3 }, + { "F4", SAPP_KEYCODE_F4 }, + { "F5", SAPP_KEYCODE_F5 }, + { "F6", SAPP_KEYCODE_F6 }, + { "F7", SAPP_KEYCODE_F7 }, + { "F8", SAPP_KEYCODE_F8 }, + { "F9", SAPP_KEYCODE_F9 }, + { "F10", SAPP_KEYCODE_F10 }, + { "F11", SAPP_KEYCODE_F11 }, + { "F12", SAPP_KEYCODE_F12 }, + { "NumLock", SAPP_KEYCODE_NUM_LOCK }, + { "ScrollLock", SAPP_KEYCODE_SCROLL_LOCK }, + { "Semicolon", SAPP_KEYCODE_SEMICOLON }, + { "Equal", SAPP_KEYCODE_EQUAL }, + { "Comma", SAPP_KEYCODE_COMMA }, + { "Minus", SAPP_KEYCODE_MINUS }, + { "Period", SAPP_KEYCODE_PERIOD }, + { "Slash", SAPP_KEYCODE_SLASH }, + { "Backquote", SAPP_KEYCODE_GRAVE_ACCENT }, + { "BracketLeft", SAPP_KEYCODE_LEFT_BRACKET }, + { "Backslash", SAPP_KEYCODE_BACKSLASH }, + { "BracketRight", SAPP_KEYCODE_RIGHT_BRACKET }, + { "Quote", SAPP_KEYCODE_GRAVE_ACCENT }, // FIXME: ??? + { 0, SAPP_KEYCODE_INVALID }, +}; + +_SOKOL_PRIVATE sapp_keycode _sapp_emsc_translate_key(const char* str) { + int i = 0; + const char* keystr; + while (( keystr = _sapp_emsc_keymap[i].str )) { + if (0 == strcmp(str, keystr)) { + return _sapp_emsc_keymap[i].code; + } + i += 1; + } + return SAPP_KEYCODE_INVALID; +} + +_SOKOL_PRIVATE EM_BOOL _sapp_emsc_key_cb(int emsc_type, const EmscriptenKeyboardEvent* emsc_event, void* user_data) { + _SOKOL_UNUSED(user_data); + bool retval = true; + if (_sapp_events_enabled()) { + sapp_event_type type; + switch (emsc_type) { + case EMSCRIPTEN_EVENT_KEYDOWN: + type = SAPP_EVENTTYPE_KEY_DOWN; + break; + case EMSCRIPTEN_EVENT_KEYUP: + type = SAPP_EVENTTYPE_KEY_UP; + break; + case EMSCRIPTEN_EVENT_KEYPRESS: + type = SAPP_EVENTTYPE_CHAR; + break; + default: + type = SAPP_EVENTTYPE_INVALID; + break; + } + if (type != SAPP_EVENTTYPE_INVALID) { + bool send_keyup_followup = false; + _sapp_init_event(type); + _sapp.event.key_repeat = emsc_event->repeat; + _sapp.event.modifiers = _sapp_emsc_key_event_mods(emsc_event); + if (type == SAPP_EVENTTYPE_CHAR) { + // FIXME: this doesn't appear to work on Android Chrome + _sapp.event.char_code = emsc_event->charCode; + /* workaround to make Cmd+V work on Safari */ + if ((emsc_event->metaKey) && (emsc_event->charCode == 118)) { + retval = false; + } + } + else { + if (0 != emsc_event->code[0]) { + // This code path is for desktop browsers which send untranslated 'physical' key code strings + // (which is what we actually want for key events) + _sapp.event.key_code = _sapp_emsc_translate_key(emsc_event->code); + } else { + // This code path is for mobile browsers which only send localized key code + // strings. Note that the translation will only work for a small subset + // of localization-agnostic keys (like Enter, arrow keys, etc...), but + // regular alpha-numeric keys will all result in an SAPP_KEYCODE_INVALID) + _sapp.event.key_code = _sapp_emsc_translate_key(emsc_event->key); + } + + /* Special hack for macOS: if the Super key is pressed, macOS doesn't + send keyUp events. As a workaround, to prevent keys from + "sticking", we'll send a keyup event following a keydown + when the SUPER key is pressed + */ + if ((type == SAPP_EVENTTYPE_KEY_DOWN) && + (_sapp.event.key_code != SAPP_KEYCODE_LEFT_SUPER) && + (_sapp.event.key_code != SAPP_KEYCODE_RIGHT_SUPER) && + (_sapp.event.modifiers & SAPP_MODIFIER_SUPER)) + { + send_keyup_followup = true; + } + // only forward keys to the browser (can further be suppressed by sapp_consume_event()) + switch (_sapp.event.key_code) { + case SAPP_KEYCODE_WORLD_1: + case SAPP_KEYCODE_WORLD_2: + case SAPP_KEYCODE_ESCAPE: + case SAPP_KEYCODE_ENTER: + case SAPP_KEYCODE_TAB: + case SAPP_KEYCODE_BACKSPACE: + case SAPP_KEYCODE_INSERT: + case SAPP_KEYCODE_DELETE: + case SAPP_KEYCODE_RIGHT: + case SAPP_KEYCODE_LEFT: + case SAPP_KEYCODE_DOWN: + case SAPP_KEYCODE_UP: + case SAPP_KEYCODE_PAGE_UP: + case SAPP_KEYCODE_PAGE_DOWN: + case SAPP_KEYCODE_HOME: + case SAPP_KEYCODE_END: + case SAPP_KEYCODE_CAPS_LOCK: + case SAPP_KEYCODE_SCROLL_LOCK: + case SAPP_KEYCODE_NUM_LOCK: + case SAPP_KEYCODE_PRINT_SCREEN: + case SAPP_KEYCODE_PAUSE: + case SAPP_KEYCODE_F1: + case SAPP_KEYCODE_F2: + case SAPP_KEYCODE_F3: + case SAPP_KEYCODE_F4: + case SAPP_KEYCODE_F5: + case SAPP_KEYCODE_F6: + case SAPP_KEYCODE_F7: + case SAPP_KEYCODE_F8: + case SAPP_KEYCODE_F9: + case SAPP_KEYCODE_F10: + case SAPP_KEYCODE_F11: + case SAPP_KEYCODE_F12: + case SAPP_KEYCODE_F13: + case SAPP_KEYCODE_F14: + case SAPP_KEYCODE_F15: + case SAPP_KEYCODE_F16: + case SAPP_KEYCODE_F17: + case SAPP_KEYCODE_F18: + case SAPP_KEYCODE_F19: + case SAPP_KEYCODE_F20: + case SAPP_KEYCODE_F21: + case SAPP_KEYCODE_F22: + case SAPP_KEYCODE_F23: + case SAPP_KEYCODE_F24: + case SAPP_KEYCODE_F25: + case SAPP_KEYCODE_LEFT_SHIFT: + case SAPP_KEYCODE_LEFT_CONTROL: + case SAPP_KEYCODE_LEFT_ALT: + case SAPP_KEYCODE_LEFT_SUPER: + case SAPP_KEYCODE_RIGHT_SHIFT: + case SAPP_KEYCODE_RIGHT_CONTROL: + case SAPP_KEYCODE_RIGHT_ALT: + case SAPP_KEYCODE_RIGHT_SUPER: + case SAPP_KEYCODE_MENU: + /* consume the event */ + break; + default: + /* forward key to browser */ + retval = false; + break; + } + } + if (_sapp_call_event(&_sapp.event)) { + // event was consumed via sapp_consume_event() + retval = true; + } + if (send_keyup_followup) { + _sapp.event.type = SAPP_EVENTTYPE_KEY_UP; + if (_sapp_call_event(&_sapp.event)) { + retval = true; + } + } + } + } + _sapp_emsc_update_keyboard_state(); + _sapp_emsc_update_mouse_lock_state(); + return retval; +} + +_SOKOL_PRIVATE EM_BOOL _sapp_emsc_touch_cb(int emsc_type, const EmscriptenTouchEvent* emsc_event, void* user_data) { + _SOKOL_UNUSED(user_data); + bool retval = true; + if (_sapp_events_enabled()) { + sapp_event_type type; + switch (emsc_type) { + case EMSCRIPTEN_EVENT_TOUCHSTART: + type = SAPP_EVENTTYPE_TOUCHES_BEGAN; + break; + case EMSCRIPTEN_EVENT_TOUCHMOVE: + type = SAPP_EVENTTYPE_TOUCHES_MOVED; + break; + case EMSCRIPTEN_EVENT_TOUCHEND: + type = SAPP_EVENTTYPE_TOUCHES_ENDED; + break; + case EMSCRIPTEN_EVENT_TOUCHCANCEL: + type = SAPP_EVENTTYPE_TOUCHES_CANCELLED; + break; + default: + type = SAPP_EVENTTYPE_INVALID; + retval = false; + break; + } + if (type != SAPP_EVENTTYPE_INVALID) { + _sapp_init_event(type); + _sapp.event.modifiers = _sapp_emsc_touch_event_mods(emsc_event); + _sapp.event.num_touches = emsc_event->numTouches; + if (_sapp.event.num_touches > SAPP_MAX_TOUCHPOINTS) { + _sapp.event.num_touches = SAPP_MAX_TOUCHPOINTS; + } + for (int i = 0; i < _sapp.event.num_touches; i++) { + const EmscriptenTouchPoint* src = &emsc_event->touches[i]; + sapp_touchpoint* dst = &_sapp.event.touches[i]; + dst->identifier = (uintptr_t)src->identifier; + dst->pos_x = src->targetX * _sapp.dpi_scale; + dst->pos_y = src->targetY * _sapp.dpi_scale; + dst->changed = src->isChanged; + } + _sapp_call_event(&_sapp.event); + } + } + _sapp_emsc_update_keyboard_state(); + return retval; +} + +_SOKOL_PRIVATE EM_BOOL _sapp_emsc_focus_cb(int emsc_type, const EmscriptenFocusEvent* emsc_event, void* user_data) { + _SOKOL_UNUSED(emsc_type); + _SOKOL_UNUSED(emsc_event); + _SOKOL_UNUSED(user_data); + if (_sapp_events_enabled()) { + _sapp_init_event(SAPP_EVENTTYPE_FOCUSED); + _sapp_call_event(&_sapp.event); + } + return true; +} + +_SOKOL_PRIVATE EM_BOOL _sapp_emsc_blur_cb(int emsc_type, const EmscriptenFocusEvent* emsc_event, void* user_data) { + _SOKOL_UNUSED(emsc_type); + _SOKOL_UNUSED(emsc_event); + _SOKOL_UNUSED(user_data); + if (_sapp_events_enabled()) { + _sapp_init_event(SAPP_EVENTTYPE_UNFOCUSED); + _sapp_call_event(&_sapp.event); + } + return true; +} + +#if defined(SOKOL_GLES3) +_SOKOL_PRIVATE EM_BOOL _sapp_emsc_webgl_context_cb(int emsc_type, const void* reserved, void* user_data) { + _SOKOL_UNUSED(reserved); + _SOKOL_UNUSED(user_data); + sapp_event_type type; + switch (emsc_type) { + case EMSCRIPTEN_EVENT_WEBGLCONTEXTLOST: type = SAPP_EVENTTYPE_SUSPENDED; break; + case EMSCRIPTEN_EVENT_WEBGLCONTEXTRESTORED: type = SAPP_EVENTTYPE_RESUMED; break; + default: type = SAPP_EVENTTYPE_INVALID; break; + } + if (_sapp_events_enabled() && (SAPP_EVENTTYPE_INVALID != type)) { + _sapp_init_event(type); + _sapp_call_event(&_sapp.event); + } + return true; +} + +_SOKOL_PRIVATE void _sapp_emsc_webgl_init(void) { + EmscriptenWebGLContextAttributes attrs; + emscripten_webgl_init_context_attributes(&attrs); + attrs.alpha = _sapp.desc.alpha; + attrs.depth = true; + attrs.stencil = true; + attrs.antialias = _sapp.sample_count > 1; + attrs.premultipliedAlpha = _sapp.desc.html5_premultiplied_alpha; + attrs.preserveDrawingBuffer = _sapp.desc.html5_preserve_drawing_buffer; + attrs.enableExtensionsByDefault = true; + attrs.majorVersion = 2; + EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_create_context(_sapp.html5_canvas_selector, &attrs); + // FIXME: error message? + emscripten_webgl_make_context_current(ctx); + + /* some WebGL extension are not enabled automatically by emscripten */ + emscripten_webgl_enable_extension(ctx, "WEBKIT_WEBGL_compressed_texture_pvrtc"); +} +#endif + +#if defined(SOKOL_WGPU) +#define _SAPP_EMSC_WGPU_STATE_INITIAL (0) +#define _SAPP_EMSC_WGPU_STATE_READY (1) +#define _SAPP_EMSC_WGPU_STATE_RUNNING (2) + +#if defined(__cplusplus) +extern "C" { +#endif +/* called when the asynchronous WebGPU device + swapchain init code in JS has finished */ +EMSCRIPTEN_KEEPALIVE void _sapp_emsc_wgpu_ready(int device_id, int swapchain_id, int swapchain_fmt) { + SOKOL_ASSERT(0 == _sapp.emsc.wgpu.device); + _sapp.emsc.wgpu.device = (WGPUDevice) device_id; + _sapp.emsc.wgpu.swapchain = (WGPUSwapChain) swapchain_id; + _sapp.emsc.wgpu.render_format = (WGPUTextureFormat) swapchain_fmt; + _sapp.emsc.wgpu.state = _SAPP_EMSC_WGPU_STATE_READY; +} +#if defined(__cplusplus) +} // extern "C" +#endif + +/* embedded JS function to handle all the asynchronous WebGPU setup */ +EM_JS(void, sapp_js_wgpu_init, (), { + WebGPU.initManagers(); + // FIXME: the extension activation must be more clever here + navigator.gpu.requestAdapter().then((adapter) => { + console.log("wgpu adapter extensions: " + adapter.extensions); + adapter.requestDevice({ extensions: ["textureCompressionBC"]}).then((device) => { + var gpuContext = document.getElementById("canvas").getContext("gpupresent"); + console.log("wgpu device extensions: " + adapter.extensions); + gpuContext.getSwapChainPreferredFormat(device).then((fmt) => { + const swapChainDescriptor = { device: device, format: fmt }; + const swapChain = gpuContext.configureSwapChain(swapChainDescriptor); + const deviceId = WebGPU.mgrDevice.create(device); + const swapChainId = WebGPU.mgrSwapChain.create(swapChain); + const fmtId = WebGPU.TextureFormat.findIndex(function(elm) { return elm==fmt; }); + console.log("wgpu device: " + device); + console.log("wgpu swap chain: " + swapChain); + console.log("wgpu preferred format: " + fmt + " (" + fmtId + ")"); + __sapp_emsc_wgpu_ready(deviceId, swapChainId, fmtId); + }); + }); + }); +}); + +_SOKOL_PRIVATE void _sapp_emsc_wgpu_surfaces_create(void) { + SOKOL_ASSERT(_sapp.emsc.wgpu.device); + SOKOL_ASSERT(_sapp.emsc.wgpu.swapchain); + SOKOL_ASSERT(0 == _sapp.emsc.wgpu.depth_stencil_tex); + SOKOL_ASSERT(0 == _sapp.emsc.wgpu.depth_stencil_view); + SOKOL_ASSERT(0 == _sapp.emsc.wgpu.msaa_tex); + SOKOL_ASSERT(0 == _sapp.emsc.wgpu.msaa_view); + + WGPUTextureDescriptor ds_desc; + _sapp_clear(&ds_desc, sizeof(ds_desc)); + ds_desc.usage = WGPUTextureUsage_OutputAttachment; + ds_desc.dimension = WGPUTextureDimension_2D; + ds_desc.size.width = (uint32_t) _sapp.framebuffer_width; + ds_desc.size.height = (uint32_t) _sapp.framebuffer_height; + ds_desc.size.depth = 1; + ds_desc.arrayLayerCount = 1; + ds_desc.format = WGPUTextureFormat_Depth24PlusStencil8; + ds_desc.mipLevelCount = 1; + ds_desc.sampleCount = _sapp.sample_count; + _sapp.emsc.wgpu.depth_stencil_tex = wgpuDeviceCreateTexture(_sapp.emsc.wgpu.device, &ds_desc); + _sapp.emsc.wgpu.depth_stencil_view = wgpuTextureCreateView(_sapp.emsc.wgpu.depth_stencil_tex, 0); + + if (_sapp.sample_count > 1) { + WGPUTextureDescriptor msaa_desc; + _sapp_clear(&msaa_desc, sizeof(msaa_desc)); + msaa_desc.usage = WGPUTextureUsage_OutputAttachment; + msaa_desc.dimension = WGPUTextureDimension_2D; + msaa_desc.size.width = (uint32_t) _sapp.framebuffer_width; + msaa_desc.size.height = (uint32_t) _sapp.framebuffer_height; + msaa_desc.size.depth = 1; + msaa_desc.arrayLayerCount = 1; + msaa_desc.format = _sapp.emsc.wgpu.render_format; + msaa_desc.mipLevelCount = 1; + msaa_desc.sampleCount = _sapp.sample_count; + _sapp.emsc.wgpu.msaa_tex = wgpuDeviceCreateTexture(_sapp.emsc.wgpu.device, &msaa_desc); + _sapp.emsc.wgpu.msaa_view = wgpuTextureCreateView(_sapp.emsc.wgpu.msaa_tex, 0); + } +} + +_SOKOL_PRIVATE void _sapp_emsc_wgpu_surfaces_discard(void) { + if (_sapp.emsc.wgpu.msaa_tex) { + wgpuTextureRelease(_sapp.emsc.wgpu.msaa_tex); + _sapp.emsc.wgpu.msaa_tex = 0; + } + if (_sapp.emsc.wgpu.msaa_view) { + wgpuTextureViewRelease(_sapp.emsc.wgpu.msaa_view); + _sapp.emsc.wgpu.msaa_view = 0; + } + if (_sapp.emsc.wgpu.depth_stencil_tex) { + wgpuTextureRelease(_sapp.emsc.wgpu.depth_stencil_tex); + _sapp.emsc.wgpu.depth_stencil_tex = 0; + } + if (_sapp.emsc.wgpu.depth_stencil_view) { + wgpuTextureViewRelease(_sapp.emsc.wgpu.depth_stencil_view); + _sapp.emsc.wgpu.depth_stencil_view = 0; + } +} + +_SOKOL_PRIVATE void _sapp_emsc_wgpu_next_frame(void) { + if (_sapp.emsc.wgpu.swapchain_view) { + wgpuTextureViewRelease(_sapp.emsc.wgpu.swapchain_view); + } + _sapp.emsc.wgpu.swapchain_view = wgpuSwapChainGetCurrentTextureView(_sapp.emsc.wgpu.swapchain); +} +#endif + +_SOKOL_PRIVATE void _sapp_emsc_register_eventhandlers(void) { + emscripten_set_mousedown_callback(_sapp.html5_canvas_selector, 0, true, _sapp_emsc_mouse_cb); + emscripten_set_mouseup_callback(_sapp.html5_canvas_selector, 0, true, _sapp_emsc_mouse_cb); + emscripten_set_mousemove_callback(_sapp.html5_canvas_selector, 0, true, _sapp_emsc_mouse_cb); + emscripten_set_mouseenter_callback(_sapp.html5_canvas_selector, 0, true, _sapp_emsc_mouse_cb); + emscripten_set_mouseleave_callback(_sapp.html5_canvas_selector, 0, true, _sapp_emsc_mouse_cb); + emscripten_set_wheel_callback(_sapp.html5_canvas_selector, 0, true, _sapp_emsc_wheel_cb); + emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, true, _sapp_emsc_key_cb); + emscripten_set_keyup_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, true, _sapp_emsc_key_cb); + emscripten_set_keypress_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, true, _sapp_emsc_key_cb); + emscripten_set_touchstart_callback(_sapp.html5_canvas_selector, 0, true, _sapp_emsc_touch_cb); + emscripten_set_touchmove_callback(_sapp.html5_canvas_selector, 0, true, _sapp_emsc_touch_cb); + emscripten_set_touchend_callback(_sapp.html5_canvas_selector, 0, true, _sapp_emsc_touch_cb); + emscripten_set_touchcancel_callback(_sapp.html5_canvas_selector, 0, true, _sapp_emsc_touch_cb); + emscripten_set_pointerlockchange_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, 0, true, _sapp_emsc_pointerlockchange_cb); + emscripten_set_pointerlockerror_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, 0, true, _sapp_emsc_pointerlockerror_cb); + emscripten_set_focus_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, true, _sapp_emsc_focus_cb); + emscripten_set_blur_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, true, _sapp_emsc_blur_cb); + sapp_js_add_beforeunload_listener(); + if (_sapp.clipboard.enabled) { + sapp_js_add_clipboard_listener(); + } + if (_sapp.drop.enabled) { + sapp_js_add_dragndrop_listeners(&_sapp.html5_canvas_selector[1]); + } + #if defined(SOKOL_GLES3) + emscripten_set_webglcontextlost_callback(_sapp.html5_canvas_selector, 0, true, _sapp_emsc_webgl_context_cb); + emscripten_set_webglcontextrestored_callback(_sapp.html5_canvas_selector, 0, true, _sapp_emsc_webgl_context_cb); + #endif +} + +_SOKOL_PRIVATE void _sapp_emsc_unregister_eventhandlers() { + emscripten_set_mousedown_callback(_sapp.html5_canvas_selector, 0, true, 0); + emscripten_set_mouseup_callback(_sapp.html5_canvas_selector, 0, true, 0); + emscripten_set_mousemove_callback(_sapp.html5_canvas_selector, 0, true, 0); + emscripten_set_mouseenter_callback(_sapp.html5_canvas_selector, 0, true, 0); + emscripten_set_mouseleave_callback(_sapp.html5_canvas_selector, 0, true, 0); + emscripten_set_wheel_callback(_sapp.html5_canvas_selector, 0, true, 0); + emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, true, 0); + emscripten_set_keyup_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, true, 0); + emscripten_set_keypress_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, true, 0); + emscripten_set_touchstart_callback(_sapp.html5_canvas_selector, 0, true, 0); + emscripten_set_touchmove_callback(_sapp.html5_canvas_selector, 0, true, 0); + emscripten_set_touchend_callback(_sapp.html5_canvas_selector, 0, true, 0); + emscripten_set_touchcancel_callback(_sapp.html5_canvas_selector, 0, true, 0); + emscripten_set_pointerlockchange_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, 0, true, 0); + emscripten_set_pointerlockerror_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, 0, true, 0); + emscripten_set_focus_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, true, 0); + emscripten_set_blur_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, true, 0); + sapp_js_remove_beforeunload_listener(); + if (_sapp.clipboard.enabled) { + sapp_js_remove_clipboard_listener(); + } + if (_sapp.drop.enabled) { + sapp_js_remove_dragndrop_listeners(&_sapp.html5_canvas_selector[1]); + } + #if defined(SOKOL_GLES3) + emscripten_set_webglcontextlost_callback(_sapp.html5_canvas_selector, 0, true, 0); + emscripten_set_webglcontextrestored_callback(_sapp.html5_canvas_selector, 0, true, 0); + #endif +} + +_SOKOL_PRIVATE EM_BOOL _sapp_emsc_frame(double time, void* userData) { + _SOKOL_UNUSED(userData); + _sapp_timing_external(&_sapp.timing, time / 1000.0); + + #if defined(SOKOL_WGPU) + /* + on WebGPU, the emscripten frame callback will already be called while + the asynchronous WebGPU device and swapchain initialization is still + in progress + */ + switch (_sapp.emsc.wgpu.state) { + case _SAPP_EMSC_WGPU_STATE_INITIAL: + /* async JS init hasn't finished yet */ + break; + case _SAPP_EMSC_WGPU_STATE_READY: + /* perform post-async init stuff */ + _sapp_emsc_wgpu_surfaces_create(); + _sapp.emsc.wgpu.state = _SAPP_EMSC_WGPU_STATE_RUNNING; + break; + case _SAPP_EMSC_WGPU_STATE_RUNNING: + /* a regular frame */ + _sapp_emsc_wgpu_next_frame(); + _sapp_frame(); + break; + } + #else + /* WebGL code path */ + _sapp_frame(); + #endif + + /* quit-handling */ + if (_sapp.quit_requested) { + _sapp_init_event(SAPP_EVENTTYPE_QUIT_REQUESTED); + _sapp_call_event(&_sapp.event); + if (_sapp.quit_requested) { + _sapp.quit_ordered = true; + } + } + if (_sapp.quit_ordered) { + _sapp_emsc_unregister_eventhandlers(); + _sapp_call_cleanup(); + _sapp_discard_state(); + return EM_FALSE; + } + return EM_TRUE; +} + +_SOKOL_PRIVATE void _sapp_emsc_run(const sapp_desc* desc) { + _sapp_init_state(desc); + sapp_js_init(&_sapp.html5_canvas_selector[1]); + double w, h; + if (_sapp.desc.html5_canvas_resize) { + w = (double) _sapp_def(_sapp.desc.width, _SAPP_FALLBACK_DEFAULT_WINDOW_WIDTH); + h = (double) _sapp_def(_sapp.desc.height, _SAPP_FALLBACK_DEFAULT_WINDOW_HEIGHT); + } + else { + emscripten_get_element_css_size(_sapp.html5_canvas_selector, &w, &h); + emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, 0, false, _sapp_emsc_size_changed); + } + if (_sapp.desc.high_dpi) { + _sapp.dpi_scale = emscripten_get_device_pixel_ratio(); + } + _sapp.window_width = (int)roundf(w); + _sapp.window_height = (int)roundf(h); + _sapp.framebuffer_width = (int)roundf(w * _sapp.dpi_scale); + _sapp.framebuffer_height = (int)roundf(h * _sapp.dpi_scale); + emscripten_set_canvas_element_size(_sapp.html5_canvas_selector, _sapp.framebuffer_width, _sapp.framebuffer_height); + #if defined(SOKOL_GLES3) + _sapp_emsc_webgl_init(); + #elif defined(SOKOL_WGPU) + sapp_js_wgpu_init(); + #endif + _sapp.valid = true; + _sapp_emsc_register_eventhandlers(); + sapp_set_icon(&desc->icon); + + /* start the frame loop */ + emscripten_request_animation_frame_loop(_sapp_emsc_frame, 0); + + /* NOT A BUG: do not call _sapp_discard_state() here, instead this is + called in _sapp_emsc_frame() when the application is ordered to quit + */ +} + +#if !defined(SOKOL_NO_ENTRY) +int main(int argc, char* argv[]) { + sapp_desc desc = sokol_main(argc, argv); + _sapp_emsc_run(&desc); + return 0; +} +#endif /* SOKOL_NO_ENTRY */ +#endif /* _SAPP_EMSCRIPTEN */ + +// ██████ ██ ██ ██ ███████ ██ ██████ ███████ ██████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ███ ██ ███████ █████ ██ ██████ █████ ██████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ███████ ██ ██ ███████ ███████ ██ ███████ ██ ██ ███████ +// +// >>gl helpers +#if defined(SOKOL_GLCORE33) +typedef struct { + int red_bits; + int green_bits; + int blue_bits; + int alpha_bits; + int depth_bits; + int stencil_bits; + int samples; + bool doublebuffer; + uintptr_t handle; +} _sapp_gl_fbconfig; + +_SOKOL_PRIVATE void _sapp_gl_init_fbconfig(_sapp_gl_fbconfig* fbconfig) { + _sapp_clear(fbconfig, sizeof(_sapp_gl_fbconfig)); + /* -1 means "don't care" */ + fbconfig->red_bits = -1; + fbconfig->green_bits = -1; + fbconfig->blue_bits = -1; + fbconfig->alpha_bits = -1; + fbconfig->depth_bits = -1; + fbconfig->stencil_bits = -1; + fbconfig->samples = -1; +} + +_SOKOL_PRIVATE const _sapp_gl_fbconfig* _sapp_gl_choose_fbconfig(const _sapp_gl_fbconfig* desired, const _sapp_gl_fbconfig* alternatives, int count) { + int missing, least_missing = 1000000; + int color_diff, least_color_diff = 10000000; + int extra_diff, least_extra_diff = 10000000; + const _sapp_gl_fbconfig* current; + const _sapp_gl_fbconfig* closest = 0; + for (int i = 0; i < count; i++) { + current = alternatives + i; + if (desired->doublebuffer != current->doublebuffer) { + continue; + } + missing = 0; + if (desired->alpha_bits > 0 && current->alpha_bits == 0) { + missing++; + } + if (desired->depth_bits > 0 && current->depth_bits == 0) { + missing++; + } + if (desired->stencil_bits > 0 && current->stencil_bits == 0) { + missing++; + } + if (desired->samples > 0 && current->samples == 0) { + /* Technically, several multisampling buffers could be + involved, but that's a lower level implementation detail and + not important to us here, so we count them as one + */ + missing++; + } + + /* These polynomials make many small channel size differences matter + less than one large channel size difference + Calculate color channel size difference value + */ + color_diff = 0; + if (desired->red_bits != -1) { + color_diff += (desired->red_bits - current->red_bits) * (desired->red_bits - current->red_bits); + } + if (desired->green_bits != -1) { + color_diff += (desired->green_bits - current->green_bits) * (desired->green_bits - current->green_bits); + } + if (desired->blue_bits != -1) { + color_diff += (desired->blue_bits - current->blue_bits) * (desired->blue_bits - current->blue_bits); + } + + /* Calculate non-color channel size difference value */ + extra_diff = 0; + if (desired->alpha_bits != -1) { + extra_diff += (desired->alpha_bits - current->alpha_bits) * (desired->alpha_bits - current->alpha_bits); + } + if (desired->depth_bits != -1) { + extra_diff += (desired->depth_bits - current->depth_bits) * (desired->depth_bits - current->depth_bits); + } + if (desired->stencil_bits != -1) { + extra_diff += (desired->stencil_bits - current->stencil_bits) * (desired->stencil_bits - current->stencil_bits); + } + if (desired->samples != -1) { + extra_diff += (desired->samples - current->samples) * (desired->samples - current->samples); + } + + /* Figure out if the current one is better than the best one found so far + Least number of missing buffers is the most important heuristic, + then color buffer size match and lastly size match for other buffers + */ + if (missing < least_missing) { + closest = current; + } + else if (missing == least_missing) { + if ((color_diff < least_color_diff) || + (color_diff == least_color_diff && extra_diff < least_extra_diff)) + { + closest = current; + } + } + if (current == closest) { + least_missing = missing; + least_color_diff = color_diff; + least_extra_diff = extra_diff; + } + } + return closest; +} +#endif + +// ██ ██ ██ ███ ██ ██████ ██████ ██ ██ ███████ +// ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ █ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ █ ██ ███████ +// ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ███ ██ ██ +// ███ ███ ██ ██ ████ ██████ ██████ ███ ███ ███████ +// +// >>windows +#if defined(_SAPP_WIN32) +_SOKOL_PRIVATE bool _sapp_win32_utf8_to_wide(const char* src, wchar_t* dst, int dst_num_bytes) { + SOKOL_ASSERT(src && dst && (dst_num_bytes > 1)); + _sapp_clear(dst, (size_t)dst_num_bytes); + const int dst_chars = dst_num_bytes / (int)sizeof(wchar_t); + const int dst_needed = MultiByteToWideChar(CP_UTF8, 0, src, -1, 0, 0); + if ((dst_needed > 0) && (dst_needed < dst_chars)) { + MultiByteToWideChar(CP_UTF8, 0, src, -1, dst, dst_chars); + return true; + } + else { + /* input string doesn't fit into destination buffer */ + return false; + } +} + +_SOKOL_PRIVATE void _sapp_win32_app_event(sapp_event_type type) { + if (_sapp_events_enabled()) { + _sapp_init_event(type); + _sapp_call_event(&_sapp.event); + } +} + +_SOKOL_PRIVATE void _sapp_win32_init_keytable(void) { + /* same as GLFW */ + _sapp.keycodes[0x00B] = SAPP_KEYCODE_0; + _sapp.keycodes[0x002] = SAPP_KEYCODE_1; + _sapp.keycodes[0x003] = SAPP_KEYCODE_2; + _sapp.keycodes[0x004] = SAPP_KEYCODE_3; + _sapp.keycodes[0x005] = SAPP_KEYCODE_4; + _sapp.keycodes[0x006] = SAPP_KEYCODE_5; + _sapp.keycodes[0x007] = SAPP_KEYCODE_6; + _sapp.keycodes[0x008] = SAPP_KEYCODE_7; + _sapp.keycodes[0x009] = SAPP_KEYCODE_8; + _sapp.keycodes[0x00A] = SAPP_KEYCODE_9; + _sapp.keycodes[0x01E] = SAPP_KEYCODE_A; + _sapp.keycodes[0x030] = SAPP_KEYCODE_B; + _sapp.keycodes[0x02E] = SAPP_KEYCODE_C; + _sapp.keycodes[0x020] = SAPP_KEYCODE_D; + _sapp.keycodes[0x012] = SAPP_KEYCODE_E; + _sapp.keycodes[0x021] = SAPP_KEYCODE_F; + _sapp.keycodes[0x022] = SAPP_KEYCODE_G; + _sapp.keycodes[0x023] = SAPP_KEYCODE_H; + _sapp.keycodes[0x017] = SAPP_KEYCODE_I; + _sapp.keycodes[0x024] = SAPP_KEYCODE_J; + _sapp.keycodes[0x025] = SAPP_KEYCODE_K; + _sapp.keycodes[0x026] = SAPP_KEYCODE_L; + _sapp.keycodes[0x032] = SAPP_KEYCODE_M; + _sapp.keycodes[0x031] = SAPP_KEYCODE_N; + _sapp.keycodes[0x018] = SAPP_KEYCODE_O; + _sapp.keycodes[0x019] = SAPP_KEYCODE_P; + _sapp.keycodes[0x010] = SAPP_KEYCODE_Q; + _sapp.keycodes[0x013] = SAPP_KEYCODE_R; + _sapp.keycodes[0x01F] = SAPP_KEYCODE_S; + _sapp.keycodes[0x014] = SAPP_KEYCODE_T; + _sapp.keycodes[0x016] = SAPP_KEYCODE_U; + _sapp.keycodes[0x02F] = SAPP_KEYCODE_V; + _sapp.keycodes[0x011] = SAPP_KEYCODE_W; + _sapp.keycodes[0x02D] = SAPP_KEYCODE_X; + _sapp.keycodes[0x015] = SAPP_KEYCODE_Y; + _sapp.keycodes[0x02C] = SAPP_KEYCODE_Z; + _sapp.keycodes[0x028] = SAPP_KEYCODE_APOSTROPHE; + _sapp.keycodes[0x02B] = SAPP_KEYCODE_BACKSLASH; + _sapp.keycodes[0x033] = SAPP_KEYCODE_COMMA; + _sapp.keycodes[0x00D] = SAPP_KEYCODE_EQUAL; + _sapp.keycodes[0x029] = SAPP_KEYCODE_GRAVE_ACCENT; + _sapp.keycodes[0x01A] = SAPP_KEYCODE_LEFT_BRACKET; + _sapp.keycodes[0x00C] = SAPP_KEYCODE_MINUS; + _sapp.keycodes[0x034] = SAPP_KEYCODE_PERIOD; + _sapp.keycodes[0x01B] = SAPP_KEYCODE_RIGHT_BRACKET; + _sapp.keycodes[0x027] = SAPP_KEYCODE_SEMICOLON; + _sapp.keycodes[0x035] = SAPP_KEYCODE_SLASH; + _sapp.keycodes[0x056] = SAPP_KEYCODE_WORLD_2; + _sapp.keycodes[0x00E] = SAPP_KEYCODE_BACKSPACE; + _sapp.keycodes[0x153] = SAPP_KEYCODE_DELETE; + _sapp.keycodes[0x14F] = SAPP_KEYCODE_END; + _sapp.keycodes[0x01C] = SAPP_KEYCODE_ENTER; + _sapp.keycodes[0x001] = SAPP_KEYCODE_ESCAPE; + _sapp.keycodes[0x147] = SAPP_KEYCODE_HOME; + _sapp.keycodes[0x152] = SAPP_KEYCODE_INSERT; + _sapp.keycodes[0x15D] = SAPP_KEYCODE_MENU; + _sapp.keycodes[0x151] = SAPP_KEYCODE_PAGE_DOWN; + _sapp.keycodes[0x149] = SAPP_KEYCODE_PAGE_UP; + _sapp.keycodes[0x045] = SAPP_KEYCODE_PAUSE; + _sapp.keycodes[0x146] = SAPP_KEYCODE_PAUSE; + _sapp.keycodes[0x039] = SAPP_KEYCODE_SPACE; + _sapp.keycodes[0x00F] = SAPP_KEYCODE_TAB; + _sapp.keycodes[0x03A] = SAPP_KEYCODE_CAPS_LOCK; + _sapp.keycodes[0x145] = SAPP_KEYCODE_NUM_LOCK; + _sapp.keycodes[0x046] = SAPP_KEYCODE_SCROLL_LOCK; + _sapp.keycodes[0x03B] = SAPP_KEYCODE_F1; + _sapp.keycodes[0x03C] = SAPP_KEYCODE_F2; + _sapp.keycodes[0x03D] = SAPP_KEYCODE_F3; + _sapp.keycodes[0x03E] = SAPP_KEYCODE_F4; + _sapp.keycodes[0x03F] = SAPP_KEYCODE_F5; + _sapp.keycodes[0x040] = SAPP_KEYCODE_F6; + _sapp.keycodes[0x041] = SAPP_KEYCODE_F7; + _sapp.keycodes[0x042] = SAPP_KEYCODE_F8; + _sapp.keycodes[0x043] = SAPP_KEYCODE_F9; + _sapp.keycodes[0x044] = SAPP_KEYCODE_F10; + _sapp.keycodes[0x057] = SAPP_KEYCODE_F11; + _sapp.keycodes[0x058] = SAPP_KEYCODE_F12; + _sapp.keycodes[0x064] = SAPP_KEYCODE_F13; + _sapp.keycodes[0x065] = SAPP_KEYCODE_F14; + _sapp.keycodes[0x066] = SAPP_KEYCODE_F15; + _sapp.keycodes[0x067] = SAPP_KEYCODE_F16; + _sapp.keycodes[0x068] = SAPP_KEYCODE_F17; + _sapp.keycodes[0x069] = SAPP_KEYCODE_F18; + _sapp.keycodes[0x06A] = SAPP_KEYCODE_F19; + _sapp.keycodes[0x06B] = SAPP_KEYCODE_F20; + _sapp.keycodes[0x06C] = SAPP_KEYCODE_F21; + _sapp.keycodes[0x06D] = SAPP_KEYCODE_F22; + _sapp.keycodes[0x06E] = SAPP_KEYCODE_F23; + _sapp.keycodes[0x076] = SAPP_KEYCODE_F24; + _sapp.keycodes[0x038] = SAPP_KEYCODE_LEFT_ALT; + _sapp.keycodes[0x01D] = SAPP_KEYCODE_LEFT_CONTROL; + _sapp.keycodes[0x02A] = SAPP_KEYCODE_LEFT_SHIFT; + _sapp.keycodes[0x15B] = SAPP_KEYCODE_LEFT_SUPER; + _sapp.keycodes[0x137] = SAPP_KEYCODE_PRINT_SCREEN; + _sapp.keycodes[0x138] = SAPP_KEYCODE_RIGHT_ALT; + _sapp.keycodes[0x11D] = SAPP_KEYCODE_RIGHT_CONTROL; + _sapp.keycodes[0x036] = SAPP_KEYCODE_RIGHT_SHIFT; + _sapp.keycodes[0x15C] = SAPP_KEYCODE_RIGHT_SUPER; + _sapp.keycodes[0x150] = SAPP_KEYCODE_DOWN; + _sapp.keycodes[0x14B] = SAPP_KEYCODE_LEFT; + _sapp.keycodes[0x14D] = SAPP_KEYCODE_RIGHT; + _sapp.keycodes[0x148] = SAPP_KEYCODE_UP; + _sapp.keycodes[0x052] = SAPP_KEYCODE_KP_0; + _sapp.keycodes[0x04F] = SAPP_KEYCODE_KP_1; + _sapp.keycodes[0x050] = SAPP_KEYCODE_KP_2; + _sapp.keycodes[0x051] = SAPP_KEYCODE_KP_3; + _sapp.keycodes[0x04B] = SAPP_KEYCODE_KP_4; + _sapp.keycodes[0x04C] = SAPP_KEYCODE_KP_5; + _sapp.keycodes[0x04D] = SAPP_KEYCODE_KP_6; + _sapp.keycodes[0x047] = SAPP_KEYCODE_KP_7; + _sapp.keycodes[0x048] = SAPP_KEYCODE_KP_8; + _sapp.keycodes[0x049] = SAPP_KEYCODE_KP_9; + _sapp.keycodes[0x04E] = SAPP_KEYCODE_KP_ADD; + _sapp.keycodes[0x053] = SAPP_KEYCODE_KP_DECIMAL; + _sapp.keycodes[0x135] = SAPP_KEYCODE_KP_DIVIDE; + _sapp.keycodes[0x11C] = SAPP_KEYCODE_KP_ENTER; + _sapp.keycodes[0x037] = SAPP_KEYCODE_KP_MULTIPLY; + _sapp.keycodes[0x04A] = SAPP_KEYCODE_KP_SUBTRACT; +} +#endif // _SAPP_WIN32 + +#if defined(_SAPP_WIN32) + +#if defined(SOKOL_D3D11) + +#if defined(__cplusplus) +#define _sapp_d3d11_Release(self) (self)->Release() +#define _sapp_win32_refiid(iid) iid +#else +#define _sapp_d3d11_Release(self) (self)->lpVtbl->Release(self) +#define _sapp_win32_refiid(iid) &iid +#endif + +#define _SAPP_SAFE_RELEASE(obj) if (obj) { _sapp_d3d11_Release(obj); obj=0; } + + +static const IID _sapp_IID_ID3D11Texture2D = { 0x6f15aaf2,0xd208,0x4e89, {0x9a,0xb4,0x48,0x95,0x35,0xd3,0x4f,0x9c} }; +static const IID _sapp_IID_IDXGIDevice1 = { 0x77db970f,0x6276,0x48ba, {0xba,0x28,0x07,0x01,0x43,0xb4,0x39,0x2c} }; +static const IID _sapp_IID_IDXGIFactory = { 0x7b7166ec,0x21c7,0x44ae, {0xb2,0x1a,0xc9,0xae,0x32,0x1a,0xe3,0x69} }; + +static inline HRESULT _sapp_dxgi_GetBuffer(IDXGISwapChain* self, UINT Buffer, REFIID riid, void** ppSurface) { + #if defined(__cplusplus) + return self->GetBuffer(Buffer, riid, ppSurface); + #else + return self->lpVtbl->GetBuffer(self, Buffer, riid, ppSurface); + #endif +} + +static inline HRESULT _sapp_d3d11_QueryInterface(ID3D11Device* self, REFIID riid, void** ppvObject) { + #if defined(__cplusplus) + return self->QueryInterface(riid, ppvObject); + #else + return self->lpVtbl->QueryInterface(self, riid, ppvObject); + #endif +} + +static inline HRESULT _sapp_d3d11_CreateRenderTargetView(ID3D11Device* self, ID3D11Resource *pResource, const D3D11_RENDER_TARGET_VIEW_DESC* pDesc, ID3D11RenderTargetView** ppRTView) { + #if defined(__cplusplus) + return self->CreateRenderTargetView(pResource, pDesc, ppRTView); + #else + return self->lpVtbl->CreateRenderTargetView(self, pResource, pDesc, ppRTView); + #endif +} + +static inline HRESULT _sapp_d3d11_CreateTexture2D(ID3D11Device* self, const D3D11_TEXTURE2D_DESC* pDesc, const D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Texture2D** ppTexture2D) { + #if defined(__cplusplus) + return self->CreateTexture2D(pDesc, pInitialData, ppTexture2D); + #else + return self->lpVtbl->CreateTexture2D(self, pDesc, pInitialData, ppTexture2D); + #endif +} + +static inline HRESULT _sapp_d3d11_CreateDepthStencilView(ID3D11Device* self, ID3D11Resource* pResource, const D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc, ID3D11DepthStencilView** ppDepthStencilView) { + #if defined(__cplusplus) + return self->CreateDepthStencilView(pResource, pDesc, ppDepthStencilView); + #else + return self->lpVtbl->CreateDepthStencilView(self, pResource, pDesc, ppDepthStencilView); + #endif +} + +static inline void _sapp_d3d11_ResolveSubresource(ID3D11DeviceContext* self, ID3D11Resource* pDstResource, UINT DstSubresource, ID3D11Resource* pSrcResource, UINT SrcSubresource, DXGI_FORMAT Format) { + #if defined(__cplusplus) + self->ResolveSubresource(pDstResource, DstSubresource, pSrcResource, SrcSubresource, Format); + #else + self->lpVtbl->ResolveSubresource(self, pDstResource, DstSubresource, pSrcResource, SrcSubresource, Format); + #endif +} + +static inline HRESULT _sapp_dxgi_ResizeBuffers(IDXGISwapChain* self, UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags) { + #if defined(__cplusplus) + return self->ResizeBuffers(BufferCount, Width, Height, NewFormat, SwapChainFlags); + #else + return self->lpVtbl->ResizeBuffers(self, BufferCount, Width, Height, NewFormat, SwapChainFlags); + #endif +} + +static inline HRESULT _sapp_dxgi_Present(IDXGISwapChain* self, UINT SyncInterval, UINT Flags) { + #if defined(__cplusplus) + return self->Present(SyncInterval, Flags); + #else + return self->lpVtbl->Present(self, SyncInterval, Flags); + #endif +} + +static inline HRESULT _sapp_dxgi_GetFrameStatistics(IDXGISwapChain* self, DXGI_FRAME_STATISTICS* pStats) { + #if defined(__cplusplus) + return self->GetFrameStatistics(pStats); + #else + return self->lpVtbl->GetFrameStatistics(self, pStats); + #endif +} + +static inline HRESULT _sapp_dxgi_SetMaximumFrameLatency(IDXGIDevice1* self, UINT MaxLatency) { + #if defined(__cplusplus) + return self->SetMaximumFrameLatency(MaxLatency); + #else + return self->lpVtbl->SetMaximumFrameLatency(self, MaxLatency); + #endif +} + +static inline HRESULT _sapp_dxgi_GetAdapter(IDXGIDevice1* self, IDXGIAdapter** pAdapter) { + #if defined(__cplusplus) + return self->GetAdapter(pAdapter); + #else + return self->lpVtbl->GetAdapter(self, pAdapter); + #endif +} + +static inline HRESULT _sapp_dxgi_GetParent(IDXGIObject* self, REFIID riid, void** ppParent) { + #if defined(__cplusplus) + return self->GetParent(riid, ppParent); + #else + return self->lpVtbl->GetParent(self, riid, ppParent); + #endif +} + +static inline HRESULT _sapp_dxgi_MakeWindowAssociation(IDXGIFactory* self, HWND WindowHandle, UINT Flags) { + #if defined(__cplusplus) + return self->MakeWindowAssociation(WindowHandle, Flags); + #else + return self->lpVtbl->MakeWindowAssociation(self, WindowHandle, Flags); + #endif +} + +_SOKOL_PRIVATE void _sapp_d3d11_create_device_and_swapchain(void) { + DXGI_SWAP_CHAIN_DESC* sc_desc = &_sapp.d3d11.swap_chain_desc; + sc_desc->BufferDesc.Width = (UINT)_sapp.framebuffer_width; + sc_desc->BufferDesc.Height = (UINT)_sapp.framebuffer_height; + sc_desc->BufferDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM; + sc_desc->BufferDesc.RefreshRate.Numerator = 60; + sc_desc->BufferDesc.RefreshRate.Denominator = 1; + sc_desc->OutputWindow = _sapp.win32.hwnd; + sc_desc->Windowed = true; + if (_sapp.win32.is_win10_or_greater) { + sc_desc->BufferCount = 2; + sc_desc->SwapEffect = (DXGI_SWAP_EFFECT) _SAPP_DXGI_SWAP_EFFECT_FLIP_DISCARD; + _sapp.d3d11.use_dxgi_frame_stats = true; + } + else { + sc_desc->BufferCount = 1; + sc_desc->SwapEffect = DXGI_SWAP_EFFECT_DISCARD; + _sapp.d3d11.use_dxgi_frame_stats = false; + } + sc_desc->SampleDesc.Count = 1; + sc_desc->SampleDesc.Quality = 0; + sc_desc->BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + UINT create_flags = D3D11_CREATE_DEVICE_SINGLETHREADED | D3D11_CREATE_DEVICE_BGRA_SUPPORT; + #if defined(SOKOL_DEBUG) + create_flags |= D3D11_CREATE_DEVICE_DEBUG; + #endif + D3D_FEATURE_LEVEL feature_level; + HRESULT hr = D3D11CreateDeviceAndSwapChain( + NULL, /* pAdapter (use default) */ + D3D_DRIVER_TYPE_HARDWARE, /* DriverType */ + NULL, /* Software */ + create_flags, /* Flags */ + NULL, /* pFeatureLevels */ + 0, /* FeatureLevels */ + D3D11_SDK_VERSION, /* SDKVersion */ + sc_desc, /* pSwapChainDesc */ + &_sapp.d3d11.swap_chain, /* ppSwapChain */ + &_sapp.d3d11.device, /* ppDevice */ + &feature_level, /* pFeatureLevel */ + &_sapp.d3d11.device_context); /* ppImmediateContext */ + _SOKOL_UNUSED(hr); + #if defined(SOKOL_DEBUG) + if (!SUCCEEDED(hr)) { + // if initialization with D3D11_CREATE_DEVICE_DEBUG fails, this could be because the + // 'D3D11 debug layer' stopped working, indicated by the error message: + // === + // D3D11CreateDevice: Flags (0x2) were specified which require the D3D11 SDK Layers for Windows 10, but they are not present on the system. + // These flags must be removed, or the Windows 10 SDK must be installed. + // Flags include: D3D11_CREATE_DEVICE_DEBUG + // === + // + // ...just retry with the DEBUG flag switched off + _SAPP_ERROR(WIN32_D3D11_CREATE_DEVICE_AND_SWAPCHAIN_WITH_DEBUG_FAILED); + create_flags &= ~D3D11_CREATE_DEVICE_DEBUG; + hr = D3D11CreateDeviceAndSwapChain( + NULL, /* pAdapter (use default) */ + D3D_DRIVER_TYPE_HARDWARE, /* DriverType */ + NULL, /* Software */ + create_flags, /* Flags */ + NULL, /* pFeatureLevels */ + 0, /* FeatureLevels */ + D3D11_SDK_VERSION, /* SDKVersion */ + sc_desc, /* pSwapChainDesc */ + &_sapp.d3d11.swap_chain, /* ppSwapChain */ + &_sapp.d3d11.device, /* ppDevice */ + &feature_level, /* pFeatureLevel */ + &_sapp.d3d11.device_context); /* ppImmediateContext */ + } + #endif + SOKOL_ASSERT(SUCCEEDED(hr) && _sapp.d3d11.swap_chain && _sapp.d3d11.device && _sapp.d3d11.device_context); + + // minimize frame latency, disable Alt-Enter + hr = _sapp_d3d11_QueryInterface(_sapp.d3d11.device, _sapp_win32_refiid(_sapp_IID_IDXGIDevice1), (void**)&_sapp.d3d11.dxgi_device); + if (SUCCEEDED(hr) && _sapp.d3d11.dxgi_device) { + _sapp_dxgi_SetMaximumFrameLatency(_sapp.d3d11.dxgi_device, 1); + IDXGIAdapter* dxgi_adapter = 0; + hr = _sapp_dxgi_GetAdapter(_sapp.d3d11.dxgi_device, &dxgi_adapter); + if (SUCCEEDED(hr) && dxgi_adapter) { + IDXGIFactory* dxgi_factory = 0; + hr = _sapp_dxgi_GetParent((IDXGIObject*)dxgi_adapter, _sapp_win32_refiid(_sapp_IID_IDXGIFactory), (void**)&dxgi_factory); + if (SUCCEEDED(hr)) { + _sapp_dxgi_MakeWindowAssociation(dxgi_factory, _sapp.win32.hwnd, DXGI_MWA_NO_ALT_ENTER|DXGI_MWA_NO_PRINT_SCREEN); + _SAPP_SAFE_RELEASE(dxgi_factory); + } + else { + _SAPP_ERROR(WIN32_D3D11_GET_IDXGIFACTORY_FAILED); + } + _SAPP_SAFE_RELEASE(dxgi_adapter); + } + else { + _SAPP_ERROR(WIN32_D3D11_GET_IDXGIADAPTER_FAILED); + } + } + else { + _SAPP_PANIC(WIN32_D3D11_QUERY_INTERFACE_IDXGIDEVICE1_FAILED); + } +} + +_SOKOL_PRIVATE void _sapp_d3d11_destroy_device_and_swapchain(void) { + _SAPP_SAFE_RELEASE(_sapp.d3d11.swap_chain); + _SAPP_SAFE_RELEASE(_sapp.d3d11.dxgi_device); + _SAPP_SAFE_RELEASE(_sapp.d3d11.device_context); + _SAPP_SAFE_RELEASE(_sapp.d3d11.device); +} + +_SOKOL_PRIVATE void _sapp_d3d11_create_default_render_target(void) { + SOKOL_ASSERT(0 == _sapp.d3d11.rt); + SOKOL_ASSERT(0 == _sapp.d3d11.rtv); + SOKOL_ASSERT(0 == _sapp.d3d11.msaa_rt); + SOKOL_ASSERT(0 == _sapp.d3d11.msaa_rtv); + SOKOL_ASSERT(0 == _sapp.d3d11.ds); + SOKOL_ASSERT(0 == _sapp.d3d11.dsv); + + HRESULT hr; + + /* view for the swapchain-created framebuffer */ + hr = _sapp_dxgi_GetBuffer(_sapp.d3d11.swap_chain, 0, _sapp_win32_refiid(_sapp_IID_ID3D11Texture2D), (void**)&_sapp.d3d11.rt); + SOKOL_ASSERT(SUCCEEDED(hr) && _sapp.d3d11.rt); + hr = _sapp_d3d11_CreateRenderTargetView(_sapp.d3d11.device, (ID3D11Resource*)_sapp.d3d11.rt, NULL, &_sapp.d3d11.rtv); + SOKOL_ASSERT(SUCCEEDED(hr) && _sapp.d3d11.rtv); + + /* common desc for MSAA and depth-stencil texture */ + D3D11_TEXTURE2D_DESC tex_desc; + _sapp_clear(&tex_desc, sizeof(tex_desc)); + tex_desc.Width = (UINT)_sapp.framebuffer_width; + tex_desc.Height = (UINT)_sapp.framebuffer_height; + tex_desc.MipLevels = 1; + tex_desc.ArraySize = 1; + tex_desc.Usage = D3D11_USAGE_DEFAULT; + tex_desc.BindFlags = D3D11_BIND_RENDER_TARGET; + tex_desc.SampleDesc.Count = (UINT) _sapp.sample_count; + tex_desc.SampleDesc.Quality = (UINT) (_sapp.sample_count > 1 ? D3D11_STANDARD_MULTISAMPLE_PATTERN : 0); + + /* create MSAA texture and view if antialiasing requested */ + if (_sapp.sample_count > 1) { + tex_desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM; + hr = _sapp_d3d11_CreateTexture2D(_sapp.d3d11.device, &tex_desc, NULL, &_sapp.d3d11.msaa_rt); + SOKOL_ASSERT(SUCCEEDED(hr) && _sapp.d3d11.msaa_rt); + hr = _sapp_d3d11_CreateRenderTargetView(_sapp.d3d11.device, (ID3D11Resource*)_sapp.d3d11.msaa_rt, NULL, &_sapp.d3d11.msaa_rtv); + SOKOL_ASSERT(SUCCEEDED(hr) && _sapp.d3d11.msaa_rtv); + } + + /* texture and view for the depth-stencil-surface */ + tex_desc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; + tex_desc.BindFlags = D3D11_BIND_DEPTH_STENCIL; + hr = _sapp_d3d11_CreateTexture2D(_sapp.d3d11.device, &tex_desc, NULL, &_sapp.d3d11.ds); + SOKOL_ASSERT(SUCCEEDED(hr) && _sapp.d3d11.ds); + hr = _sapp_d3d11_CreateDepthStencilView(_sapp.d3d11.device, (ID3D11Resource*)_sapp.d3d11.ds, NULL, &_sapp.d3d11.dsv); + SOKOL_ASSERT(SUCCEEDED(hr) && _sapp.d3d11.dsv); +} + +_SOKOL_PRIVATE void _sapp_d3d11_destroy_default_render_target(void) { + _SAPP_SAFE_RELEASE(_sapp.d3d11.rt); + _SAPP_SAFE_RELEASE(_sapp.d3d11.rtv); + _SAPP_SAFE_RELEASE(_sapp.d3d11.msaa_rt); + _SAPP_SAFE_RELEASE(_sapp.d3d11.msaa_rtv); + _SAPP_SAFE_RELEASE(_sapp.d3d11.ds); + _SAPP_SAFE_RELEASE(_sapp.d3d11.dsv); +} + +_SOKOL_PRIVATE void _sapp_d3d11_resize_default_render_target(void) { + if (_sapp.d3d11.swap_chain) { + _sapp_d3d11_destroy_default_render_target(); + _sapp_dxgi_ResizeBuffers(_sapp.d3d11.swap_chain, _sapp.d3d11.swap_chain_desc.BufferCount, (UINT)_sapp.framebuffer_width, (UINT)_sapp.framebuffer_height, DXGI_FORMAT_B8G8R8A8_UNORM, 0); + _sapp_d3d11_create_default_render_target(); + } +} + +_SOKOL_PRIVATE void _sapp_d3d11_present(bool do_not_wait) { + /* do MSAA resolve if needed */ + if (_sapp.sample_count > 1) { + SOKOL_ASSERT(_sapp.d3d11.rt); + SOKOL_ASSERT(_sapp.d3d11.msaa_rt); + _sapp_d3d11_ResolveSubresource(_sapp.d3d11.device_context, (ID3D11Resource*)_sapp.d3d11.rt, 0, (ID3D11Resource*)_sapp.d3d11.msaa_rt, 0, DXGI_FORMAT_B8G8R8A8_UNORM); + } + UINT flags = 0; + if (_sapp.win32.is_win10_or_greater && do_not_wait) { + /* this hack/workaround somewhat improves window-movement and -sizing + responsiveness when rendering is controlled via WM_TIMER during window + move and resize on NVIDIA cards on Win10 with recent drivers. + */ + flags = DXGI_PRESENT_DO_NOT_WAIT; + } + _sapp_dxgi_Present(_sapp.d3d11.swap_chain, (UINT)_sapp.swap_interval, flags); +} + +#endif /* SOKOL_D3D11 */ + +#if defined(SOKOL_GLCORE33) +_SOKOL_PRIVATE void _sapp_wgl_init(void) { + _sapp.wgl.opengl32 = LoadLibraryA("opengl32.dll"); + if (!_sapp.wgl.opengl32) { + _SAPP_PANIC(WIN32_LOAD_OPENGL32_DLL_FAILED); + } + SOKOL_ASSERT(_sapp.wgl.opengl32); + _sapp.wgl.CreateContext = (PFN_wglCreateContext)(void*) GetProcAddress(_sapp.wgl.opengl32, "wglCreateContext"); + SOKOL_ASSERT(_sapp.wgl.CreateContext); + _sapp.wgl.DeleteContext = (PFN_wglDeleteContext)(void*) GetProcAddress(_sapp.wgl.opengl32, "wglDeleteContext"); + SOKOL_ASSERT(_sapp.wgl.DeleteContext); + _sapp.wgl.GetProcAddress = (PFN_wglGetProcAddress)(void*) GetProcAddress(_sapp.wgl.opengl32, "wglGetProcAddress"); + SOKOL_ASSERT(_sapp.wgl.GetProcAddress); + _sapp.wgl.GetCurrentDC = (PFN_wglGetCurrentDC)(void*) GetProcAddress(_sapp.wgl.opengl32, "wglGetCurrentDC"); + SOKOL_ASSERT(_sapp.wgl.GetCurrentDC); + _sapp.wgl.MakeCurrent = (PFN_wglMakeCurrent)(void*) GetProcAddress(_sapp.wgl.opengl32, "wglMakeCurrent"); + SOKOL_ASSERT(_sapp.wgl.MakeCurrent); + + _sapp.wgl.msg_hwnd = CreateWindowExW(WS_EX_OVERLAPPEDWINDOW, + L"SOKOLAPP", + L"sokol-app message window", + WS_CLIPSIBLINGS|WS_CLIPCHILDREN, + 0, 0, 1, 1, + NULL, NULL, + GetModuleHandleW(NULL), + NULL); + if (!_sapp.wgl.msg_hwnd) { + _SAPP_PANIC(WIN32_CREATE_HELPER_WINDOW_FAILED); + } + SOKOL_ASSERT(_sapp.wgl.msg_hwnd); + ShowWindow(_sapp.wgl.msg_hwnd, SW_HIDE); + MSG msg; + while (PeekMessageW(&msg, _sapp.wgl.msg_hwnd, 0, 0, PM_REMOVE)) { + TranslateMessage(&msg); + DispatchMessageW(&msg); + } + _sapp.wgl.msg_dc = GetDC(_sapp.wgl.msg_hwnd); + if (!_sapp.wgl.msg_dc) { + _SAPP_PANIC(WIN32_HELPER_WINDOW_GETDC_FAILED); + } +} + +_SOKOL_PRIVATE void _sapp_wgl_shutdown(void) { + SOKOL_ASSERT(_sapp.wgl.opengl32 && _sapp.wgl.msg_hwnd); + DestroyWindow(_sapp.wgl.msg_hwnd); _sapp.wgl.msg_hwnd = 0; + FreeLibrary(_sapp.wgl.opengl32); _sapp.wgl.opengl32 = 0; +} + +_SOKOL_PRIVATE bool _sapp_wgl_has_ext(const char* ext, const char* extensions) { + SOKOL_ASSERT(ext && extensions); + const char* start = extensions; + while (true) { + const char* where = strstr(start, ext); + if (!where) { + return false; + } + const char* terminator = where + strlen(ext); + if ((where == start) || (*(where - 1) == ' ')) { + if (*terminator == ' ' || *terminator == '\0') { + break; + } + } + start = terminator; + } + return true; +} + +_SOKOL_PRIVATE bool _sapp_wgl_ext_supported(const char* ext) { + SOKOL_ASSERT(ext); + if (_sapp.wgl.GetExtensionsStringEXT) { + const char* extensions = _sapp.wgl.GetExtensionsStringEXT(); + if (extensions) { + if (_sapp_wgl_has_ext(ext, extensions)) { + return true; + } + } + } + if (_sapp.wgl.GetExtensionsStringARB) { + const char* extensions = _sapp.wgl.GetExtensionsStringARB(_sapp.wgl.GetCurrentDC()); + if (extensions) { + if (_sapp_wgl_has_ext(ext, extensions)) { + return true; + } + } + } + return false; +} + +_SOKOL_PRIVATE void _sapp_wgl_load_extensions(void) { + SOKOL_ASSERT(_sapp.wgl.msg_dc); + PIXELFORMATDESCRIPTOR pfd; + _sapp_clear(&pfd, sizeof(pfd)); + pfd.nSize = sizeof(pfd); + pfd.nVersion = 1; + pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; + pfd.iPixelType = PFD_TYPE_RGBA; + pfd.cColorBits = 24; + if (!SetPixelFormat(_sapp.wgl.msg_dc, ChoosePixelFormat(_sapp.wgl.msg_dc, &pfd), &pfd)) { + _SAPP_PANIC(WIN32_DUMMY_CONTEXT_SET_PIXELFORMAT_FAILED); + } + HGLRC rc = _sapp.wgl.CreateContext(_sapp.wgl.msg_dc); + if (!rc) { + _SAPP_PANIC(WIN32_CREATE_DUMMY_CONTEXT_FAILED); + } + if (!_sapp.wgl.MakeCurrent(_sapp.wgl.msg_dc, rc)) { + _SAPP_PANIC(WIN32_DUMMY_CONTEXT_MAKE_CURRENT_FAILED); + } + _sapp.wgl.GetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)(void*) _sapp.wgl.GetProcAddress("wglGetExtensionsStringEXT"); + _sapp.wgl.GetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)(void*) _sapp.wgl.GetProcAddress("wglGetExtensionsStringARB"); + _sapp.wgl.CreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)(void*) _sapp.wgl.GetProcAddress("wglCreateContextAttribsARB"); + _sapp.wgl.SwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)(void*) _sapp.wgl.GetProcAddress("wglSwapIntervalEXT"); + _sapp.wgl.GetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC)(void*) _sapp.wgl.GetProcAddress("wglGetPixelFormatAttribivARB"); + _sapp.wgl.arb_multisample = _sapp_wgl_ext_supported("WGL_ARB_multisample"); + _sapp.wgl.arb_create_context = _sapp_wgl_ext_supported("WGL_ARB_create_context"); + _sapp.wgl.arb_create_context_profile = _sapp_wgl_ext_supported("WGL_ARB_create_context_profile"); + _sapp.wgl.ext_swap_control = _sapp_wgl_ext_supported("WGL_EXT_swap_control"); + _sapp.wgl.arb_pixel_format = _sapp_wgl_ext_supported("WGL_ARB_pixel_format"); + _sapp.wgl.MakeCurrent(_sapp.wgl.msg_dc, 0); + _sapp.wgl.DeleteContext(rc); +} + +_SOKOL_PRIVATE int _sapp_wgl_attrib(int pixel_format, int attrib) { + SOKOL_ASSERT(_sapp.wgl.arb_pixel_format); + int value = 0; + if (!_sapp.wgl.GetPixelFormatAttribivARB(_sapp.win32.dc, pixel_format, 0, 1, &attrib, &value)) { + _SAPP_PANIC(WIN32_GET_PIXELFORMAT_ATTRIB_FAILED); + } + return value; +} + +_SOKOL_PRIVATE int _sapp_wgl_find_pixel_format(void) { + SOKOL_ASSERT(_sapp.win32.dc); + SOKOL_ASSERT(_sapp.wgl.arb_pixel_format); + const _sapp_gl_fbconfig* closest; + + int native_count = _sapp_wgl_attrib(1, WGL_NUMBER_PIXEL_FORMATS_ARB); + _sapp_gl_fbconfig* usable_configs = (_sapp_gl_fbconfig*) _sapp_malloc_clear((size_t)native_count * sizeof(_sapp_gl_fbconfig)); + SOKOL_ASSERT(usable_configs); + int usable_count = 0; + for (int i = 0; i < native_count; i++) { + const int n = i + 1; + _sapp_gl_fbconfig* u = usable_configs + usable_count; + _sapp_gl_init_fbconfig(u); + if (!_sapp_wgl_attrib(n, WGL_SUPPORT_OPENGL_ARB) || !_sapp_wgl_attrib(n, WGL_DRAW_TO_WINDOW_ARB)) { + continue; + } + if (_sapp_wgl_attrib(n, WGL_PIXEL_TYPE_ARB) != WGL_TYPE_RGBA_ARB) { + continue; + } + if (_sapp_wgl_attrib(n, WGL_ACCELERATION_ARB) == WGL_NO_ACCELERATION_ARB) { + continue; + } + u->red_bits = _sapp_wgl_attrib(n, WGL_RED_BITS_ARB); + u->green_bits = _sapp_wgl_attrib(n, WGL_GREEN_BITS_ARB); + u->blue_bits = _sapp_wgl_attrib(n, WGL_BLUE_BITS_ARB); + u->alpha_bits = _sapp_wgl_attrib(n, WGL_ALPHA_BITS_ARB); + u->depth_bits = _sapp_wgl_attrib(n, WGL_DEPTH_BITS_ARB); + u->stencil_bits = _sapp_wgl_attrib(n, WGL_STENCIL_BITS_ARB); + if (_sapp_wgl_attrib(n, WGL_DOUBLE_BUFFER_ARB)) { + u->doublebuffer = true; + } + if (_sapp.wgl.arb_multisample) { + u->samples = _sapp_wgl_attrib(n, WGL_SAMPLES_ARB); + } + u->handle = (uintptr_t)n; + usable_count++; + } + SOKOL_ASSERT(usable_count > 0); + _sapp_gl_fbconfig desired; + _sapp_gl_init_fbconfig(&desired); + desired.red_bits = 8; + desired.green_bits = 8; + desired.blue_bits = 8; + desired.alpha_bits = 8; + desired.depth_bits = 24; + desired.stencil_bits = 8; + desired.doublebuffer = true; + desired.samples = _sapp.sample_count > 1 ? _sapp.sample_count : 0; + closest = _sapp_gl_choose_fbconfig(&desired, usable_configs, usable_count); + int pixel_format = 0; + if (closest) { + pixel_format = (int) closest->handle; + } + _sapp_free(usable_configs); + return pixel_format; +} + +_SOKOL_PRIVATE void _sapp_wgl_create_context(void) { + int pixel_format = _sapp_wgl_find_pixel_format(); + if (0 == pixel_format) { + _SAPP_PANIC(WIN32_WGL_FIND_PIXELFORMAT_FAILED); + } + PIXELFORMATDESCRIPTOR pfd; + if (!DescribePixelFormat(_sapp.win32.dc, pixel_format, sizeof(pfd), &pfd)) { + _SAPP_PANIC(WIN32_WGL_DESCRIBE_PIXELFORMAT_FAILED); + } + if (!SetPixelFormat(_sapp.win32.dc, pixel_format, &pfd)) { + _SAPP_PANIC(WIN32_WGL_SET_PIXELFORMAT_FAILED); + } + if (!_sapp.wgl.arb_create_context) { + _SAPP_PANIC(WIN32_WGL_ARB_CREATE_CONTEXT_REQUIRED); + } + if (!_sapp.wgl.arb_create_context_profile) { + _SAPP_PANIC(WIN32_WGL_ARB_CREATE_CONTEXT_PROFILE_REQUIRED); + } + const int attrs[] = { + WGL_CONTEXT_MAJOR_VERSION_ARB, _sapp.desc.gl_major_version, + WGL_CONTEXT_MINOR_VERSION_ARB, _sapp.desc.gl_minor_version, + WGL_CONTEXT_FLAGS_ARB, WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB, + WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_CORE_PROFILE_BIT_ARB, + 0, 0 + }; + _sapp.wgl.gl_ctx = _sapp.wgl.CreateContextAttribsARB(_sapp.win32.dc, 0, attrs); + if (!_sapp.wgl.gl_ctx) { + const DWORD err = GetLastError(); + if (err == (0xc0070000 | ERROR_INVALID_VERSION_ARB)) { + _SAPP_PANIC(WIN32_WGL_OPENGL_3_2_NOT_SUPPORTED); + } + else if (err == (0xc0070000 | ERROR_INVALID_PROFILE_ARB)) { + _SAPP_PANIC(WIN32_WGL_OPENGL_PROFILE_NOT_SUPPORTED); + } + else if (err == (0xc0070000 | ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB)) { + _SAPP_PANIC(WIN32_WGL_INCOMPATIBLE_DEVICE_CONTEXT); + } + else { + _SAPP_PANIC(WIN32_WGL_CREATE_CONTEXT_ATTRIBS_FAILED_OTHER); + } + } + _sapp.wgl.MakeCurrent(_sapp.win32.dc, _sapp.wgl.gl_ctx); + if (_sapp.wgl.ext_swap_control) { + /* FIXME: DwmIsCompositionEnabled() (see GLFW) */ + _sapp.wgl.SwapIntervalEXT(_sapp.swap_interval); + } +} + +_SOKOL_PRIVATE void _sapp_wgl_destroy_context(void) { + SOKOL_ASSERT(_sapp.wgl.gl_ctx); + _sapp.wgl.DeleteContext(_sapp.wgl.gl_ctx); + _sapp.wgl.gl_ctx = 0; +} + +_SOKOL_PRIVATE void _sapp_wgl_swap_buffers(void) { + SOKOL_ASSERT(_sapp.win32.dc); + /* FIXME: DwmIsCompositionEnabled? (see GLFW) */ + SwapBuffers(_sapp.win32.dc); +} +#endif /* SOKOL_GLCORE33 */ + +_SOKOL_PRIVATE bool _sapp_win32_wide_to_utf8(const wchar_t* src, char* dst, int dst_num_bytes) { + SOKOL_ASSERT(src && dst && (dst_num_bytes > 1)); + _sapp_clear(dst, (size_t)dst_num_bytes); + const int bytes_needed = WideCharToMultiByte(CP_UTF8, 0, src, -1, NULL, 0, NULL, NULL); + if (bytes_needed <= dst_num_bytes) { + WideCharToMultiByte(CP_UTF8, 0, src, -1, dst, dst_num_bytes, NULL, NULL); + return true; + } + else { + return false; + } +} + +/* updates current window and framebuffer size from the window's client rect, returns true if size has changed */ +_SOKOL_PRIVATE bool _sapp_win32_update_dimensions(void) { + RECT rect; + if (GetClientRect(_sapp.win32.hwnd, &rect)) { + float window_width = (float)(rect.right - rect.left) / _sapp.win32.dpi.window_scale; + float window_height = (float)(rect.bottom - rect.top) / _sapp.win32.dpi.window_scale; + _sapp.window_width = (int)roundf(window_width); + _sapp.window_height = (int)roundf(window_height); + int fb_width = (int)roundf(window_width * _sapp.win32.dpi.content_scale); + int fb_height = (int)roundf(window_height * _sapp.win32.dpi.content_scale); + /* prevent a framebuffer size of 0 when window is minimized */ + if (0 == fb_width) { + fb_width = 1; + } + if (0 == fb_height) { + fb_height = 1; + } + if ((fb_width != _sapp.framebuffer_width) || (fb_height != _sapp.framebuffer_height)) { + _sapp.framebuffer_width = fb_width; + _sapp.framebuffer_height = fb_height; + return true; + } + } + else { + _sapp.window_width = _sapp.window_height = 1; + _sapp.framebuffer_width = _sapp.framebuffer_height = 1; + } + return false; +} + +_SOKOL_PRIVATE void _sapp_win32_set_fullscreen(bool fullscreen, UINT swp_flags) { + HMONITOR monitor = MonitorFromWindow(_sapp.win32.hwnd, MONITOR_DEFAULTTONEAREST); + MONITORINFO minfo; + _sapp_clear(&minfo, sizeof(minfo)); + minfo.cbSize = sizeof(MONITORINFO); + GetMonitorInfo(monitor, &minfo); + const RECT mr = minfo.rcMonitor; + const int monitor_w = mr.right - mr.left; + const int monitor_h = mr.bottom - mr.top; + + const DWORD win_ex_style = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; + DWORD win_style; + RECT rect = { 0, 0, 0, 0 }; + + _sapp.fullscreen = fullscreen; + if (!_sapp.fullscreen) { + win_style = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SIZEBOX; + rect = _sapp.win32.stored_window_rect; + } + else { + GetWindowRect(_sapp.win32.hwnd, &_sapp.win32.stored_window_rect); + win_style = WS_POPUP | WS_SYSMENU | WS_VISIBLE; + rect.left = mr.left; + rect.top = mr.top; + rect.right = rect.left + monitor_w; + rect.bottom = rect.top + monitor_h; + AdjustWindowRectEx(&rect, win_style, FALSE, win_ex_style); + } + const int win_w = rect.right - rect.left; + const int win_h = rect.bottom - rect.top; + const int win_x = rect.left; + const int win_y = rect.top; + SetWindowLongPtr(_sapp.win32.hwnd, GWL_STYLE, win_style); + SetWindowPos(_sapp.win32.hwnd, HWND_TOP, win_x, win_y, win_w, win_h, swp_flags | SWP_FRAMECHANGED); +} + +_SOKOL_PRIVATE void _sapp_win32_toggle_fullscreen(void) { + _sapp_win32_set_fullscreen(!_sapp.fullscreen, SWP_SHOWWINDOW); +} + +_SOKOL_PRIVATE void _sapp_win32_init_cursor(sapp_mouse_cursor cursor) { + SOKOL_ASSERT((cursor >= 0) && (cursor < _SAPP_MOUSECURSOR_NUM)); + // NOTE: the OCR_* constants are only defined if OEMRESOURCE is defined + // before windows.h is included, but we can't guarantee that because + // the sokol_app.h implementation may be included with other implementations + // in the same compilation unit + int id = 0; + switch (cursor) { + case SAPP_MOUSECURSOR_ARROW: id = 32512; break; // OCR_NORMAL + case SAPP_MOUSECURSOR_IBEAM: id = 32513; break; // OCR_IBEAM + case SAPP_MOUSECURSOR_CROSSHAIR: id = 32515; break; // OCR_CROSS + case SAPP_MOUSECURSOR_POINTING_HAND: id = 32649; break; // OCR_HAND + case SAPP_MOUSECURSOR_RESIZE_EW: id = 32644; break; // OCR_SIZEWE + case SAPP_MOUSECURSOR_RESIZE_NS: id = 32645; break; // OCR_SIZENS + case SAPP_MOUSECURSOR_RESIZE_NWSE: id = 32642; break; // OCR_SIZENWSE + case SAPP_MOUSECURSOR_RESIZE_NESW: id = 32643; break; // OCR_SIZENESW + case SAPP_MOUSECURSOR_RESIZE_ALL: id = 32646; break; // OCR_SIZEALL + case SAPP_MOUSECURSOR_NOT_ALLOWED: id = 32648; break; // OCR_NO + default: break; + } + if (id != 0) { + _sapp.win32.cursors[cursor] = (HCURSOR)LoadImageW(NULL, MAKEINTRESOURCEW(id), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE|LR_SHARED); + } + // fallback: default cursor + if (0 == _sapp.win32.cursors[cursor]) { + // 32512 => IDC_ARROW + _sapp.win32.cursors[cursor] = LoadCursorW(NULL, MAKEINTRESOURCEW(32512)); + } + SOKOL_ASSERT(0 != _sapp.win32.cursors[cursor]); +} + +_SOKOL_PRIVATE void _sapp_win32_init_cursors(void) { + for (int i = 0; i < _SAPP_MOUSECURSOR_NUM; i++) { + _sapp_win32_init_cursor((sapp_mouse_cursor)i); + } +} + +_SOKOL_PRIVATE bool _sapp_win32_cursor_in_content_area(void) { + POINT pos; + if (!GetCursorPos(&pos)) { + return false; + } + if (WindowFromPoint(pos) != _sapp.win32.hwnd) { + return false; + } + RECT area; + GetClientRect(_sapp.win32.hwnd, &area); + ClientToScreen(_sapp.win32.hwnd, (POINT*)&area.left); + ClientToScreen(_sapp.win32.hwnd, (POINT*)&area.right); + return PtInRect(&area, pos) == TRUE; +} + +_SOKOL_PRIVATE void _sapp_win32_update_cursor(sapp_mouse_cursor cursor, bool shown, bool skip_area_test) { + // NOTE: when called from WM_SETCURSOR, the area test would be redundant + if (!skip_area_test) { + if (!_sapp_win32_cursor_in_content_area()) { + return; + } + } + if (!shown) { + SetCursor(NULL); + } + else { + SOKOL_ASSERT((cursor >= 0) && (cursor < _SAPP_MOUSECURSOR_NUM)); + SOKOL_ASSERT(0 != _sapp.win32.cursors[cursor]); + SetCursor(_sapp.win32.cursors[cursor]); + } +} + +_SOKOL_PRIVATE void _sapp_win32_capture_mouse(uint8_t btn_mask) { + if (0 == _sapp.win32.mouse_capture_mask) { + SetCapture(_sapp.win32.hwnd); + } + _sapp.win32.mouse_capture_mask |= btn_mask; +} + +_SOKOL_PRIVATE void _sapp_win32_release_mouse(uint8_t btn_mask) { + if (0 != _sapp.win32.mouse_capture_mask) { + _sapp.win32.mouse_capture_mask &= ~btn_mask; + if (0 == _sapp.win32.mouse_capture_mask) { + ReleaseCapture(); + } + } +} + +_SOKOL_PRIVATE void _sapp_win32_lock_mouse(bool lock) { + if (lock == _sapp.mouse.locked) { + return; + } + _sapp.mouse.dx = 0.0f; + _sapp.mouse.dy = 0.0f; + _sapp.mouse.locked = lock; + _sapp_win32_release_mouse(0xFF); + if (_sapp.mouse.locked) { + /* store the current mouse position, so it can be restored when unlocked */ + POINT pos; + BOOL res = GetCursorPos(&pos); + SOKOL_ASSERT(res); _SOKOL_UNUSED(res); + _sapp.win32.mouse_locked_x = pos.x; + _sapp.win32.mouse_locked_y = pos.y; + + /* while the mouse is locked, make the mouse cursor invisible and + confine the mouse movement to a small rectangle inside our window + (so that we don't miss any mouse up events) + */ + RECT client_rect = { + _sapp.win32.mouse_locked_x, + _sapp.win32.mouse_locked_y, + _sapp.win32.mouse_locked_x, + _sapp.win32.mouse_locked_y + }; + ClipCursor(&client_rect); + + /* make the mouse cursor invisible, this will stack with sapp_show_mouse() */ + ShowCursor(FALSE); + + /* enable raw input for mouse, starts sending WM_INPUT messages to WinProc (see GLFW) */ + const RAWINPUTDEVICE rid = { + 0x01, // usUsagePage: HID_USAGE_PAGE_GENERIC + 0x02, // usUsage: HID_USAGE_GENERIC_MOUSE + 0, // dwFlags + _sapp.win32.hwnd // hwndTarget + }; + if (!RegisterRawInputDevices(&rid, 1, sizeof(rid))) { + _SAPP_ERROR(WIN32_REGISTER_RAW_INPUT_DEVICES_FAILED_MOUSE_LOCK); + } + /* in case the raw mouse device only supports absolute position reporting, + we need to skip the dx/dy compution for the first WM_INPUT event + */ + _sapp.win32.raw_input_mousepos_valid = false; + } + else { + /* disable raw input for mouse */ + const RAWINPUTDEVICE rid = { 0x01, 0x02, RIDEV_REMOVE, NULL }; + if (!RegisterRawInputDevices(&rid, 1, sizeof(rid))) { + _SAPP_ERROR(WIN32_REGISTER_RAW_INPUT_DEVICES_FAILED_MOUSE_UNLOCK); + } + + /* let the mouse roam freely again */ + ClipCursor(NULL); + ShowCursor(TRUE); + + /* restore the 'pre-locked' mouse position */ + BOOL res = SetCursorPos(_sapp.win32.mouse_locked_x, _sapp.win32.mouse_locked_y); + SOKOL_ASSERT(res); _SOKOL_UNUSED(res); + } +} + +_SOKOL_PRIVATE bool _sapp_win32_update_monitor(void) { + const HMONITOR cur_monitor = MonitorFromWindow(_sapp.win32.hwnd, MONITOR_DEFAULTTONULL); + if (cur_monitor != _sapp.win32.hmonitor) { + _sapp.win32.hmonitor = cur_monitor; + return true; + } + else { + return false; + } +} + +_SOKOL_PRIVATE uint32_t _sapp_win32_mods(void) { + uint32_t mods = 0; + if (GetKeyState(VK_SHIFT) & (1<<15)) { + mods |= SAPP_MODIFIER_SHIFT; + } + if (GetKeyState(VK_CONTROL) & (1<<15)) { + mods |= SAPP_MODIFIER_CTRL; + } + if (GetKeyState(VK_MENU) & (1<<15)) { + mods |= SAPP_MODIFIER_ALT; + } + if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & (1<<15)) { + mods |= SAPP_MODIFIER_SUPER; + } + const bool swapped = (TRUE == GetSystemMetrics(SM_SWAPBUTTON)); + if (GetAsyncKeyState(VK_LBUTTON)) { + mods |= swapped ? SAPP_MODIFIER_RMB : SAPP_MODIFIER_LMB; + } + if (GetAsyncKeyState(VK_RBUTTON)) { + mods |= swapped ? SAPP_MODIFIER_LMB : SAPP_MODIFIER_RMB; + } + if (GetAsyncKeyState(VK_MBUTTON)) { + mods |= SAPP_MODIFIER_MMB; + } + return mods; +} + +_SOKOL_PRIVATE void _sapp_win32_mouse_update(LPARAM lParam) { + if (!_sapp.mouse.locked) { + const float new_x = (float)GET_X_LPARAM(lParam) * _sapp.win32.dpi.mouse_scale; + const float new_y = (float)GET_Y_LPARAM(lParam) * _sapp.win32.dpi.mouse_scale; + if (_sapp.mouse.pos_valid) { + // don't update dx/dy in the very first event + _sapp.mouse.dx = new_x - _sapp.mouse.x; + _sapp.mouse.dy = new_y - _sapp.mouse.y; + } + _sapp.mouse.x = new_x; + _sapp.mouse.y = new_y; + _sapp.mouse.pos_valid = true; + } +} + +_SOKOL_PRIVATE void _sapp_win32_mouse_event(sapp_event_type type, sapp_mousebutton btn) { + if (_sapp_events_enabled()) { + _sapp_init_event(type); + _sapp.event.modifiers = _sapp_win32_mods(); + _sapp.event.mouse_button = btn; + _sapp_call_event(&_sapp.event); + } +} + +_SOKOL_PRIVATE void _sapp_win32_scroll_event(float x, float y) { + if (_sapp_events_enabled()) { + _sapp_init_event(SAPP_EVENTTYPE_MOUSE_SCROLL); + _sapp.event.modifiers = _sapp_win32_mods(); + _sapp.event.scroll_x = -x / 30.0f; + _sapp.event.scroll_y = y / 30.0f; + _sapp_call_event(&_sapp.event); + } +} + +_SOKOL_PRIVATE void _sapp_win32_key_event(sapp_event_type type, int vk, bool repeat) { + if (_sapp_events_enabled() && (vk < SAPP_MAX_KEYCODES)) { + _sapp_init_event(type); + _sapp.event.modifiers = _sapp_win32_mods(); + _sapp.event.key_code = _sapp.keycodes[vk]; + _sapp.event.key_repeat = repeat; + _sapp_call_event(&_sapp.event); + /* check if a CLIPBOARD_PASTED event must be sent too */ + if (_sapp.clipboard.enabled && + (type == SAPP_EVENTTYPE_KEY_DOWN) && + (_sapp.event.modifiers == SAPP_MODIFIER_CTRL) && + (_sapp.event.key_code == SAPP_KEYCODE_V)) + { + _sapp_init_event(SAPP_EVENTTYPE_CLIPBOARD_PASTED); + _sapp_call_event(&_sapp.event); + } + } +} + +_SOKOL_PRIVATE void _sapp_win32_char_event(uint32_t c, bool repeat) { + if (_sapp_events_enabled() && (c >= 32)) { + _sapp_init_event(SAPP_EVENTTYPE_CHAR); + _sapp.event.modifiers = _sapp_win32_mods(); + _sapp.event.char_code = c; + _sapp.event.key_repeat = repeat; + _sapp_call_event(&_sapp.event); + } +} + +_SOKOL_PRIVATE void _sapp_win32_dpi_changed(HWND hWnd, LPRECT proposed_win_rect) { + /* called on WM_DPICHANGED, which will only be sent to the application + if sapp_desc.high_dpi is true and the Windows version is recent enough + to support DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 + */ + SOKOL_ASSERT(_sapp.desc.high_dpi); + HINSTANCE user32 = LoadLibraryA("user32.dll"); + if (!user32) { + return; + } + typedef UINT(WINAPI * GETDPIFORWINDOW_T)(HWND hwnd); + GETDPIFORWINDOW_T fn_getdpiforwindow = (GETDPIFORWINDOW_T)(void*)GetProcAddress(user32, "GetDpiForWindow"); + if (fn_getdpiforwindow) { + UINT dpix = fn_getdpiforwindow(_sapp.win32.hwnd); + // NOTE: for high-dpi apps, mouse_scale remains one + _sapp.win32.dpi.window_scale = (float)dpix / 96.0f; + _sapp.win32.dpi.content_scale = _sapp.win32.dpi.window_scale; + _sapp.dpi_scale = _sapp.win32.dpi.window_scale; + SetWindowPos(hWnd, 0, + proposed_win_rect->left, + proposed_win_rect->top, + proposed_win_rect->right - proposed_win_rect->left, + proposed_win_rect->bottom - proposed_win_rect->top, + SWP_NOZORDER | SWP_NOACTIVATE); + } + FreeLibrary(user32); +} + +_SOKOL_PRIVATE void _sapp_win32_files_dropped(HDROP hdrop) { + if (!_sapp.drop.enabled) { + return; + } + _sapp_clear_drop_buffer(); + bool drop_failed = false; + const int count = (int) DragQueryFileW(hdrop, 0xffffffff, NULL, 0); + _sapp.drop.num_files = (count > _sapp.drop.max_files) ? _sapp.drop.max_files : count; + for (UINT i = 0; i < (UINT)_sapp.drop.num_files; i++) { + const UINT num_chars = DragQueryFileW(hdrop, i, NULL, 0) + 1; + WCHAR* buffer = (WCHAR*) _sapp_malloc_clear(num_chars * sizeof(WCHAR)); + DragQueryFileW(hdrop, i, buffer, num_chars); + if (!_sapp_win32_wide_to_utf8(buffer, _sapp_dropped_file_path_ptr((int)i), _sapp.drop.max_path_length)) { + _SAPP_ERROR(DROPPED_FILE_PATH_TOO_LONG); + drop_failed = true; + } + _sapp_free(buffer); + } + DragFinish(hdrop); + if (!drop_failed) { + if (_sapp_events_enabled()) { + _sapp_init_event(SAPP_EVENTTYPE_FILES_DROPPED); + _sapp_call_event(&_sapp.event); + } + } + else { + _sapp_clear_drop_buffer(); + _sapp.drop.num_files = 0; + } +} + +_SOKOL_PRIVATE void _sapp_win32_timing_measure(void) { + #if defined(SOKOL_D3D11) + // on D3D11, use the more precise DXGI timestamp + if (_sapp.d3d11.use_dxgi_frame_stats) { + DXGI_FRAME_STATISTICS dxgi_stats; + _sapp_clear(&dxgi_stats, sizeof(dxgi_stats)); + HRESULT hr = _sapp_dxgi_GetFrameStatistics(_sapp.d3d11.swap_chain, &dxgi_stats); + if (SUCCEEDED(hr)) { + if (dxgi_stats.SyncRefreshCount != _sapp.d3d11.sync_refresh_count) { + if ((_sapp.d3d11.sync_refresh_count + 1) != dxgi_stats.SyncRefreshCount) { + _sapp_timing_discontinuity(&_sapp.timing); + } + _sapp.d3d11.sync_refresh_count = dxgi_stats.SyncRefreshCount; + LARGE_INTEGER qpc = dxgi_stats.SyncQPCTime; + const uint64_t now = (uint64_t)_sapp_int64_muldiv(qpc.QuadPart - _sapp.timing.timestamp.win.start.QuadPart, 1000000000, _sapp.timing.timestamp.win.freq.QuadPart); + _sapp_timing_external(&_sapp.timing, (double)now / 1000000000.0); + } + return; + } + } + // fallback if swap model isn't "flip-discard" or GetFrameStatistics failed for another reason + _sapp_timing_measure(&_sapp.timing); + #endif + #if defined(SOKOL_GLCORE33) + _sapp_timing_measure(&_sapp.timing); + #endif +} + +_SOKOL_PRIVATE LRESULT CALLBACK _sapp_win32_wndproc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { + if (!_sapp.win32.in_create_window) { + switch (uMsg) { + case WM_CLOSE: + /* only give user a chance to intervene when sapp_quit() wasn't already called */ + if (!_sapp.quit_ordered) { + /* if window should be closed and event handling is enabled, give user code + a change to intervene via sapp_cancel_quit() + */ + _sapp.quit_requested = true; + _sapp_win32_app_event(SAPP_EVENTTYPE_QUIT_REQUESTED); + /* if user code hasn't intervened, quit the app */ + if (_sapp.quit_requested) { + _sapp.quit_ordered = true; + } + } + if (_sapp.quit_ordered) { + PostQuitMessage(0); + } + return 0; + case WM_SYSCOMMAND: + switch (wParam & 0xFFF0) { + case SC_SCREENSAVE: + case SC_MONITORPOWER: + if (_sapp.fullscreen) { + /* disable screen saver and blanking in fullscreen mode */ + return 0; + } + break; + case SC_KEYMENU: + /* user trying to access menu via ALT */ + return 0; + } + break; + case WM_ERASEBKGND: + return 1; + case WM_SIZE: + { + const bool iconified = wParam == SIZE_MINIMIZED; + if (iconified != _sapp.win32.iconified) { + _sapp.win32.iconified = iconified; + if (iconified) { + _sapp_win32_app_event(SAPP_EVENTTYPE_ICONIFIED); + } + else { + _sapp_win32_app_event(SAPP_EVENTTYPE_RESTORED); + } + } + } + break; + case WM_SETFOCUS: + _sapp_win32_app_event(SAPP_EVENTTYPE_FOCUSED); + break; + case WM_KILLFOCUS: + /* if focus is lost for any reason, and we're in mouse locked mode, disable mouse lock */ + if (_sapp.mouse.locked) { + _sapp_win32_lock_mouse(false); + } + _sapp_win32_app_event(SAPP_EVENTTYPE_UNFOCUSED); + break; + case WM_SETCURSOR: + if (LOWORD(lParam) == HTCLIENT) { + _sapp_win32_update_cursor(_sapp.mouse.current_cursor, _sapp.mouse.shown, true); + return TRUE; + } + break; + case WM_DPICHANGED: + { + /* Update window's DPI and size if its moved to another monitor with a different DPI + Only sent if DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 is used. + */ + _sapp_win32_dpi_changed(hWnd, (LPRECT)lParam); + break; + } + case WM_LBUTTONDOWN: + _sapp_win32_mouse_update(lParam); + _sapp_win32_mouse_event(SAPP_EVENTTYPE_MOUSE_DOWN, SAPP_MOUSEBUTTON_LEFT); + _sapp_win32_capture_mouse(1<data.mouse.usFlags & MOUSE_MOVE_ABSOLUTE) { + /* mouse only reports absolute position + NOTE: This code is untested and will most likely behave wrong in Remote Desktop sessions. + (such remote desktop sessions are setting the MOUSE_MOVE_ABSOLUTE flag). + See: https://github.com/floooh/sokol/issues/806 and + https://github.com/microsoft/DirectXTK/commit/ef56b63f3739381e451f7a5a5bd2c9779d2a7555) + */ + LONG new_x = raw_mouse_data->data.mouse.lLastX; + LONG new_y = raw_mouse_data->data.mouse.lLastY; + if (_sapp.win32.raw_input_mousepos_valid) { + _sapp.mouse.dx = (float) (new_x - _sapp.win32.raw_input_mousepos_x); + _sapp.mouse.dy = (float) (new_y - _sapp.win32.raw_input_mousepos_y); + } + _sapp.win32.raw_input_mousepos_x = new_x; + _sapp.win32.raw_input_mousepos_y = new_y; + _sapp.win32.raw_input_mousepos_valid = true; + } + else { + /* mouse reports movement delta (this seems to be the common case) */ + _sapp.mouse.dx = (float) raw_mouse_data->data.mouse.lLastX; + _sapp.mouse.dy = (float) raw_mouse_data->data.mouse.lLastY; + } + _sapp_win32_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID); + } + break; + + case WM_MOUSELEAVE: + if (!_sapp.mouse.locked) { + _sapp.win32.mouse_tracked = false; + _sapp_win32_mouse_event(SAPP_EVENTTYPE_MOUSE_LEAVE, SAPP_MOUSEBUTTON_INVALID); + } + break; + case WM_MOUSEWHEEL: + _sapp_win32_mouse_update(lParam); + _sapp_win32_scroll_event(0.0f, (float)((SHORT)HIWORD(wParam))); + break; + case WM_MOUSEHWHEEL: + _sapp_win32_mouse_update(lParam); + _sapp_win32_scroll_event((float)((SHORT)HIWORD(wParam)), 0.0f); + break; + case WM_CHAR: + _sapp_win32_char_event((uint32_t)wParam, !!(lParam&0x40000000)); + break; + case WM_KEYDOWN: + case WM_SYSKEYDOWN: + _sapp_win32_key_event(SAPP_EVENTTYPE_KEY_DOWN, (int)(HIWORD(lParam)&0x1FF), !!(lParam&0x40000000)); + break; + case WM_KEYUP: + case WM_SYSKEYUP: + _sapp_win32_key_event(SAPP_EVENTTYPE_KEY_UP, (int)(HIWORD(lParam)&0x1FF), false); + break; + case WM_ENTERSIZEMOVE: + SetTimer(_sapp.win32.hwnd, 1, USER_TIMER_MINIMUM, NULL); + break; + case WM_EXITSIZEMOVE: + KillTimer(_sapp.win32.hwnd, 1); + break; + case WM_TIMER: + _sapp_win32_timing_measure(); + _sapp_frame(); + #if defined(SOKOL_D3D11) + // present with DXGI_PRESENT_DO_NOT_WAIT + _sapp_d3d11_present(true); + #endif + #if defined(SOKOL_GLCORE33) + _sapp_wgl_swap_buffers(); + #endif + /* NOTE: resizing the swap-chain during resize leads to a substantial + memory spike (hundreds of megabytes for a few seconds). + + if (_sapp_win32_update_dimensions()) { + #if defined(SOKOL_D3D11) + _sapp_d3d11_resize_default_render_target(); + #endif + _sapp_win32_app_event(SAPP_EVENTTYPE_RESIZED); + } + */ + break; + case WM_NCLBUTTONDOWN: + /* workaround for half-second pause when starting to move window + see: https://gamedev.net/forums/topic/672094-keeping-things-moving-during-win32-moveresize-events/5254386/ + */ + if (SendMessage(_sapp.win32.hwnd, WM_NCHITTEST, wParam, lParam) == HTCAPTION) { + POINT point; + GetCursorPos(&point); + ScreenToClient(_sapp.win32.hwnd, &point); + PostMessage(_sapp.win32.hwnd, WM_MOUSEMOVE, 0, ((uint32_t)point.x)|(((uint32_t)point.y) << 16)); + } + break; + case WM_DROPFILES: + _sapp_win32_files_dropped((HDROP)wParam); + break; + case WM_DISPLAYCHANGE: + // refresh rate might have changed + _sapp_timing_reset(&_sapp.timing); + break; + + default: + break; + } + } + return DefWindowProcW(hWnd, uMsg, wParam, lParam); +} + +_SOKOL_PRIVATE void _sapp_win32_create_window(void) { + WNDCLASSW wndclassw; + _sapp_clear(&wndclassw, sizeof(wndclassw)); + wndclassw.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + wndclassw.lpfnWndProc = (WNDPROC) _sapp_win32_wndproc; + wndclassw.hInstance = GetModuleHandleW(NULL); + wndclassw.hCursor = LoadCursor(NULL, IDC_ARROW); + wndclassw.hIcon = LoadIcon(NULL, IDI_WINLOGO); + wndclassw.lpszClassName = L"SOKOLAPP"; + RegisterClassW(&wndclassw); + + /* NOTE: regardless whether fullscreen is requested or not, a regular + windowed-mode window will always be created first (however in hidden + mode, so that no windowed-mode window pops up before the fullscreen window) + */ + const DWORD win_ex_style = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; + RECT rect = { 0, 0, 0, 0 }; + DWORD win_style = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SIZEBOX; + rect.right = (int) ((float)_sapp.window_width * _sapp.win32.dpi.window_scale); + rect.bottom = (int) ((float)_sapp.window_height * _sapp.win32.dpi.window_scale); + const bool use_default_width = 0 == _sapp.window_width; + const bool use_default_height = 0 == _sapp.window_height; + AdjustWindowRectEx(&rect, win_style, FALSE, win_ex_style); + const int win_width = rect.right - rect.left; + const int win_height = rect.bottom - rect.top; + _sapp.win32.in_create_window = true; + _sapp.win32.hwnd = CreateWindowExW( + win_ex_style, // dwExStyle + L"SOKOLAPP", // lpClassName + _sapp.window_title_wide, // lpWindowName + win_style, // dwStyle + CW_USEDEFAULT, // X + SW_HIDE, // Y (NOTE: CW_USEDEFAULT is not used for position here, but internally calls ShowWindow! + use_default_width ? CW_USEDEFAULT : win_width, // nWidth + use_default_height ? CW_USEDEFAULT : win_height, // nHeight (NOTE: if width is CW_USEDEFAULT, height is actually ignored) + NULL, // hWndParent + NULL, // hMenu + GetModuleHandle(NULL), // hInstance + NULL); // lParam + _sapp.win32.in_create_window = false; + _sapp.win32.dc = GetDC(_sapp.win32.hwnd); + _sapp.win32.hmonitor = MonitorFromWindow(_sapp.win32.hwnd, MONITOR_DEFAULTTONULL); + SOKOL_ASSERT(_sapp.win32.dc); + + /* this will get the actual windowed-mode window size, if fullscreen + is requested, the set_fullscreen function will then capture the + current window rectangle, which then might be used later to + restore the window position when switching back to windowed + */ + _sapp_win32_update_dimensions(); + if (_sapp.fullscreen) { + _sapp_win32_set_fullscreen(_sapp.fullscreen, SWP_HIDEWINDOW); + _sapp_win32_update_dimensions(); + } + ShowWindow(_sapp.win32.hwnd, SW_SHOW); + DragAcceptFiles(_sapp.win32.hwnd, 1); +} + +_SOKOL_PRIVATE void _sapp_win32_destroy_window(void) { + DestroyWindow(_sapp.win32.hwnd); _sapp.win32.hwnd = 0; + UnregisterClassW(L"SOKOLAPP", GetModuleHandleW(NULL)); +} + +_SOKOL_PRIVATE void _sapp_win32_destroy_icons(void) { + if (_sapp.win32.big_icon) { + DestroyIcon(_sapp.win32.big_icon); + _sapp.win32.big_icon = 0; + } + if (_sapp.win32.small_icon) { + DestroyIcon(_sapp.win32.small_icon); + _sapp.win32.small_icon = 0; + } +} + +_SOKOL_PRIVATE void _sapp_win32_init_console(void) { + if (_sapp.desc.win32_console_create || _sapp.desc.win32_console_attach) { + BOOL con_valid = FALSE; + if (_sapp.desc.win32_console_create) { + con_valid = AllocConsole(); + } + else if (_sapp.desc.win32_console_attach) { + con_valid = AttachConsole(ATTACH_PARENT_PROCESS); + } + if (con_valid) { + FILE* res_fp = 0; + errno_t err; + err = freopen_s(&res_fp, "CON", "w", stdout); + (void)err; + err = freopen_s(&res_fp, "CON", "w", stderr); + (void)err; + } + } + if (_sapp.desc.win32_console_utf8) { + _sapp.win32.orig_codepage = GetConsoleOutputCP(); + SetConsoleOutputCP(CP_UTF8); + } +} + +_SOKOL_PRIVATE void _sapp_win32_restore_console(void) { + if (_sapp.desc.win32_console_utf8) { + SetConsoleOutputCP(_sapp.win32.orig_codepage); + } +} + +_SOKOL_PRIVATE void _sapp_win32_init_dpi(void) { + + DECLARE_HANDLE(DPI_AWARENESS_CONTEXT_T); + typedef BOOL(WINAPI * SETPROCESSDPIAWARE_T)(void); + typedef bool (WINAPI * SETPROCESSDPIAWARENESSCONTEXT_T)(DPI_AWARENESS_CONTEXT_T); // since Windows 10, version 1703 + typedef HRESULT(WINAPI * SETPROCESSDPIAWARENESS_T)(PROCESS_DPI_AWARENESS); + typedef HRESULT(WINAPI * GETDPIFORMONITOR_T)(HMONITOR, MONITOR_DPI_TYPE, UINT*, UINT*); + + SETPROCESSDPIAWARE_T fn_setprocessdpiaware = 0; + SETPROCESSDPIAWARENESS_T fn_setprocessdpiawareness = 0; + GETDPIFORMONITOR_T fn_getdpiformonitor = 0; + SETPROCESSDPIAWARENESSCONTEXT_T fn_setprocessdpiawarenesscontext =0; + + HINSTANCE user32 = LoadLibraryA("user32.dll"); + if (user32) { + fn_setprocessdpiaware = (SETPROCESSDPIAWARE_T)(void*) GetProcAddress(user32, "SetProcessDPIAware"); + fn_setprocessdpiawarenesscontext = (SETPROCESSDPIAWARENESSCONTEXT_T)(void*) GetProcAddress(user32, "SetProcessDpiAwarenessContext"); + } + HINSTANCE shcore = LoadLibraryA("shcore.dll"); + if (shcore) { + fn_setprocessdpiawareness = (SETPROCESSDPIAWARENESS_T)(void*) GetProcAddress(shcore, "SetProcessDpiAwareness"); + fn_getdpiformonitor = (GETDPIFORMONITOR_T)(void*) GetProcAddress(shcore, "GetDpiForMonitor"); + } + /* + NOTE on SetProcessDpiAware() vs SetProcessDpiAwareness() vs SetProcessDpiAwarenessContext(): + + These are different attempts to get DPI handling on Windows right, from oldest + to newest. SetProcessDpiAwarenessContext() is required for the new + DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 method. + */ + if (fn_setprocessdpiawareness) { + if (_sapp.desc.high_dpi) { + /* app requests HighDPI rendering, first try the Win10 Creator Update per-monitor-dpi awareness, + if that fails, fall back to system-dpi-awareness + */ + _sapp.win32.dpi.aware = true; + DPI_AWARENESS_CONTEXT_T per_monitor_aware_v2 = (DPI_AWARENESS_CONTEXT_T)-4; + if (!(fn_setprocessdpiawarenesscontext && fn_setprocessdpiawarenesscontext(per_monitor_aware_v2))) { + // fallback to system-dpi-aware + fn_setprocessdpiawareness(PROCESS_SYSTEM_DPI_AWARE); + } + } + else { + /* if the app didn't request HighDPI rendering, let Windows do the upscaling */ + _sapp.win32.dpi.aware = false; + fn_setprocessdpiawareness(PROCESS_DPI_UNAWARE); + } + } + else if (fn_setprocessdpiaware) { + // fallback for Windows 7 + _sapp.win32.dpi.aware = true; + fn_setprocessdpiaware(); + } + /* get dpi scale factor for main monitor */ + if (fn_getdpiformonitor && _sapp.win32.dpi.aware) { + POINT pt = { 1, 1 }; + HMONITOR hm = MonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST); + UINT dpix, dpiy; + HRESULT hr = fn_getdpiformonitor(hm, MDT_EFFECTIVE_DPI, &dpix, &dpiy); + _SOKOL_UNUSED(hr); + SOKOL_ASSERT(SUCCEEDED(hr)); + /* clamp window scale to an integer factor */ + _sapp.win32.dpi.window_scale = (float)dpix / 96.0f; + } + else { + _sapp.win32.dpi.window_scale = 1.0f; + } + if (_sapp.desc.high_dpi) { + _sapp.win32.dpi.content_scale = _sapp.win32.dpi.window_scale; + _sapp.win32.dpi.mouse_scale = 1.0f; + } + else { + _sapp.win32.dpi.content_scale = 1.0f; + _sapp.win32.dpi.mouse_scale = 1.0f / _sapp.win32.dpi.window_scale; + } + _sapp.dpi_scale = _sapp.win32.dpi.content_scale; + if (user32) { + FreeLibrary(user32); + } + if (shcore) { + FreeLibrary(shcore); + } +} + +_SOKOL_PRIVATE bool _sapp_win32_set_clipboard_string(const char* str) { + SOKOL_ASSERT(str); + SOKOL_ASSERT(_sapp.win32.hwnd); + SOKOL_ASSERT(_sapp.clipboard.enabled && (_sapp.clipboard.buf_size > 0)); + + if (!OpenClipboard(_sapp.win32.hwnd)) { + return false; + } + + HANDLE object = 0; + wchar_t* wchar_buf = 0; + + const SIZE_T wchar_buf_size = (SIZE_T)_sapp.clipboard.buf_size * sizeof(wchar_t); + object = GlobalAlloc(GMEM_MOVEABLE, wchar_buf_size); + if (NULL == object) { + goto error; + } + wchar_buf = (wchar_t*) GlobalLock(object); + if (NULL == wchar_buf) { + goto error; + } + if (!_sapp_win32_utf8_to_wide(str, wchar_buf, (int)wchar_buf_size)) { + goto error; + } + GlobalUnlock(object); + wchar_buf = 0; + EmptyClipboard(); + // NOTE: when successful, SetClipboardData() takes ownership of memory object! + if (NULL == SetClipboardData(CF_UNICODETEXT, object)) { + goto error; + } + CloseClipboard(); + return true; + +error: + if (wchar_buf) { + GlobalUnlock(object); + } + if (object) { + GlobalFree(object); + } + CloseClipboard(); + return false; +} + +_SOKOL_PRIVATE const char* _sapp_win32_get_clipboard_string(void) { + SOKOL_ASSERT(_sapp.clipboard.enabled && _sapp.clipboard.buffer); + SOKOL_ASSERT(_sapp.win32.hwnd); + if (!OpenClipboard(_sapp.win32.hwnd)) { + /* silently ignore any errors and just return the current + content of the local clipboard buffer + */ + return _sapp.clipboard.buffer; + } + HANDLE object = GetClipboardData(CF_UNICODETEXT); + if (!object) { + CloseClipboard(); + return _sapp.clipboard.buffer; + } + const wchar_t* wchar_buf = (const wchar_t*) GlobalLock(object); + if (!wchar_buf) { + CloseClipboard(); + return _sapp.clipboard.buffer; + } + if (!_sapp_win32_wide_to_utf8(wchar_buf, _sapp.clipboard.buffer, _sapp.clipboard.buf_size)) { + _SAPP_ERROR(CLIPBOARD_STRING_TOO_BIG); + } + GlobalUnlock(object); + CloseClipboard(); + return _sapp.clipboard.buffer; +} + +_SOKOL_PRIVATE void _sapp_win32_update_window_title(void) { + _sapp_win32_utf8_to_wide(_sapp.window_title, _sapp.window_title_wide, sizeof(_sapp.window_title_wide)); + SetWindowTextW(_sapp.win32.hwnd, _sapp.window_title_wide); +} + +_SOKOL_PRIVATE HICON _sapp_win32_create_icon_from_image(const sapp_image_desc* desc) { + BITMAPV5HEADER bi; + _sapp_clear(&bi, sizeof(bi)); + bi.bV5Size = sizeof(bi); + bi.bV5Width = desc->width; + bi.bV5Height = -desc->height; // NOTE the '-' here to indicate that origin is top-left + bi.bV5Planes = 1; + bi.bV5BitCount = 32; + bi.bV5Compression = BI_BITFIELDS; + bi.bV5RedMask = 0x00FF0000; + bi.bV5GreenMask = 0x0000FF00; + bi.bV5BlueMask = 0x000000FF; + bi.bV5AlphaMask = 0xFF000000; + + uint8_t* target = 0; + const uint8_t* source = (const uint8_t*)desc->pixels.ptr; + + HDC dc = GetDC(NULL); + HBITMAP color = CreateDIBSection(dc, (BITMAPINFO*)&bi, DIB_RGB_COLORS, (void**)&target, NULL, (DWORD)0); + ReleaseDC(NULL, dc); + if (0 == color) { + return NULL; + } + SOKOL_ASSERT(target); + + HBITMAP mask = CreateBitmap(desc->width, desc->height, 1, 1, NULL); + if (0 == mask) { + DeleteObject(color); + return NULL; + } + + for (int i = 0; i < (desc->width*desc->height); i++) { + target[0] = source[2]; + target[1] = source[1]; + target[2] = source[0]; + target[3] = source[3]; + target += 4; + source += 4; + } + + ICONINFO icon_info; + _sapp_clear(&icon_info, sizeof(icon_info)); + icon_info.fIcon = true; + icon_info.xHotspot = 0; + icon_info.yHotspot = 0; + icon_info.hbmMask = mask; + icon_info.hbmColor = color; + HICON icon_handle = CreateIconIndirect(&icon_info); + DeleteObject(color); + DeleteObject(mask); + + return icon_handle; +} + +_SOKOL_PRIVATE void _sapp_win32_set_icon(const sapp_icon_desc* icon_desc, int num_images) { + SOKOL_ASSERT((num_images > 0) && (num_images <= SAPP_MAX_ICONIMAGES)); + + int big_img_index = _sapp_image_bestmatch(icon_desc->images, num_images, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON)); + int sml_img_index = _sapp_image_bestmatch(icon_desc->images, num_images, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON)); + HICON big_icon = _sapp_win32_create_icon_from_image(&icon_desc->images[big_img_index]); + HICON sml_icon = _sapp_win32_create_icon_from_image(&icon_desc->images[sml_img_index]); + + // if icon creation or lookup has failed for some reason, leave the currently set icon untouched + if (0 != big_icon) { + SendMessage(_sapp.win32.hwnd, WM_SETICON, ICON_BIG, (LPARAM) big_icon); + if (0 != _sapp.win32.big_icon) { + DestroyIcon(_sapp.win32.big_icon); + } + _sapp.win32.big_icon = big_icon; + } + if (0 != sml_icon) { + SendMessage(_sapp.win32.hwnd, WM_SETICON, ICON_SMALL, (LPARAM) sml_icon); + if (0 != _sapp.win32.small_icon) { + DestroyIcon(_sapp.win32.small_icon); + } + _sapp.win32.small_icon = sml_icon; + } +} + +/* don't laugh, but this seems to be the easiest and most robust + way to check if we're running on Win10 + + From: https://github.com/videolan/vlc/blob/232fb13b0d6110c4d1b683cde24cf9a7f2c5c2ea/modules/video_output/win32/d3d11_swapchain.c#L263 +*/ +_SOKOL_PRIVATE bool _sapp_win32_is_win10_or_greater(void) { + HMODULE h = GetModuleHandleW(L"kernel32.dll"); + if (NULL != h) { + return (NULL != GetProcAddress(h, "GetSystemCpuSetInformation")); + } + else { + return false; + } +} + +_SOKOL_PRIVATE void _sapp_win32_run(const sapp_desc* desc) { + _sapp_init_state(desc); + _sapp_win32_init_console(); + _sapp.win32.is_win10_or_greater = _sapp_win32_is_win10_or_greater(); + _sapp_win32_init_keytable(); + _sapp_win32_utf8_to_wide(_sapp.window_title, _sapp.window_title_wide, sizeof(_sapp.window_title_wide)); + _sapp_win32_init_dpi(); + _sapp_win32_init_cursors(); + _sapp_win32_create_window(); + sapp_set_icon(&desc->icon); + #if defined(SOKOL_D3D11) + _sapp_d3d11_create_device_and_swapchain(); + _sapp_d3d11_create_default_render_target(); + #endif + #if defined(SOKOL_GLCORE33) + _sapp_wgl_init(); + _sapp_wgl_load_extensions(); + _sapp_wgl_create_context(); + #endif + _sapp.valid = true; + + bool done = false; + while (!(done || _sapp.quit_ordered)) { + _sapp_win32_timing_measure(); + MSG msg; + while (PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE)) { + if (WM_QUIT == msg.message) { + done = true; + continue; + } + else { + TranslateMessage(&msg); + DispatchMessageW(&msg); + } + } + _sapp_frame(); + #if defined(SOKOL_D3D11) + _sapp_d3d11_present(false); + if (IsIconic(_sapp.win32.hwnd)) { + Sleep((DWORD)(16 * _sapp.swap_interval)); + } + #endif + #if defined(SOKOL_GLCORE33) + _sapp_wgl_swap_buffers(); + #endif + /* check for window resized, this cannot happen in WM_SIZE as it explodes memory usage */ + if (_sapp_win32_update_dimensions()) { + #if defined(SOKOL_D3D11) + _sapp_d3d11_resize_default_render_target(); + #endif + _sapp_win32_app_event(SAPP_EVENTTYPE_RESIZED); + } + /* check if the window monitor has changed, need to reset timing because + the new monitor might have a different refresh rate + */ + if (_sapp_win32_update_monitor()) { + _sapp_timing_reset(&_sapp.timing); + } + if (_sapp.quit_requested) { + PostMessage(_sapp.win32.hwnd, WM_CLOSE, 0, 0); + } + } + _sapp_call_cleanup(); + + #if defined(SOKOL_D3D11) + _sapp_d3d11_destroy_default_render_target(); + _sapp_d3d11_destroy_device_and_swapchain(); + #else + _sapp_wgl_destroy_context(); + _sapp_wgl_shutdown(); + #endif + _sapp_win32_destroy_window(); + _sapp_win32_destroy_icons(); + _sapp_win32_restore_console(); + _sapp_discard_state(); +} + +_SOKOL_PRIVATE char** _sapp_win32_command_line_to_utf8_argv(LPWSTR w_command_line, int* o_argc) { + int argc = 0; + char** argv = 0; + char* args; + + LPWSTR* w_argv = CommandLineToArgvW(w_command_line, &argc); + if (w_argv == NULL) { + // FIXME: chicken egg problem, can't report errors before sokol_main() is called! + } else { + size_t size = wcslen(w_command_line) * 4; + argv = (char**) _sapp_malloc_clear(((size_t)argc + 1) * sizeof(char*) + size); + SOKOL_ASSERT(argv); + args = (char*) &argv[argc + 1]; + int n; + for (int i = 0; i < argc; ++i) { + n = WideCharToMultiByte(CP_UTF8, 0, w_argv[i], -1, args, (int)size, NULL, NULL); + if (n == 0) { + // FIXME: chicken egg problem, can't report errors before sokol_main() is called! + break; + } + argv[i] = args; + size -= (size_t)n; + args += n; + } + LocalFree(w_argv); + } + *o_argc = argc; + return argv; +} + +#if !defined(SOKOL_NO_ENTRY) +#if defined(SOKOL_WIN32_FORCE_MAIN) +int main(int argc, char* argv[]) { + sapp_desc desc = sokol_main(argc, argv); + _sapp_win32_run(&desc); + return 0; +} +#else +int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow) { + _SOKOL_UNUSED(hInstance); + _SOKOL_UNUSED(hPrevInstance); + _SOKOL_UNUSED(lpCmdLine); + _SOKOL_UNUSED(nCmdShow); + int argc_utf8 = 0; + char** argv_utf8 = _sapp_win32_command_line_to_utf8_argv(GetCommandLineW(), &argc_utf8); + sapp_desc desc = sokol_main(argc_utf8, argv_utf8); + _sapp_win32_run(&desc); + _sapp_free(argv_utf8); + return 0; +} +#endif /* SOKOL_WIN32_FORCE_MAIN */ +#endif /* SOKOL_NO_ENTRY */ + +#ifdef _MSC_VER + #pragma warning(pop) +#endif + +#endif /* _SAPP_WIN32 */ + +// █████ ███ ██ ██████ ██████ ██████ ██ ██████ +// ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██ ██ ██ ██ ██████ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ████ ██████ ██ ██ ██████ ██ ██████ +// +// >>android +#if defined(_SAPP_ANDROID) + +/* android loop thread */ +_SOKOL_PRIVATE bool _sapp_android_init_egl(void) { + SOKOL_ASSERT(_sapp.android.display == EGL_NO_DISPLAY); + SOKOL_ASSERT(_sapp.android.context == EGL_NO_CONTEXT); + + EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY); + if (display == EGL_NO_DISPLAY) { + return false; + } + if (eglInitialize(display, NULL, NULL) == EGL_FALSE) { + return false; + } + EGLint alpha_size = _sapp.desc.alpha ? 8 : 0; + const EGLint cfg_attributes[] = { + EGL_SURFACE_TYPE, EGL_WINDOW_BIT, + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES3_BIT, + EGL_RED_SIZE, 8, + EGL_GREEN_SIZE, 8, + EGL_BLUE_SIZE, 8, + EGL_ALPHA_SIZE, alpha_size, + EGL_DEPTH_SIZE, 16, + EGL_STENCIL_SIZE, 0, + EGL_NONE, + }; + EGLConfig available_cfgs[32]; + EGLint cfg_count; + eglChooseConfig(display, cfg_attributes, available_cfgs, 32, &cfg_count); + SOKOL_ASSERT(cfg_count > 0); + SOKOL_ASSERT(cfg_count <= 32); + + /* find config with 8-bit rgb buffer if available, ndk sample does not trust egl spec */ + EGLConfig config; + bool exact_cfg_found = false; + for (int i = 0; i < cfg_count; ++i) { + EGLConfig c = available_cfgs[i]; + EGLint r, g, b, a, d; + if (eglGetConfigAttrib(display, c, EGL_RED_SIZE, &r) == EGL_TRUE && + eglGetConfigAttrib(display, c, EGL_GREEN_SIZE, &g) == EGL_TRUE && + eglGetConfigAttrib(display, c, EGL_BLUE_SIZE, &b) == EGL_TRUE && + eglGetConfigAttrib(display, c, EGL_ALPHA_SIZE, &a) == EGL_TRUE && + eglGetConfigAttrib(display, c, EGL_DEPTH_SIZE, &d) == EGL_TRUE && + r == 8 && g == 8 && b == 8 && (alpha_size == 0 || a == alpha_size) && d == 16) { + exact_cfg_found = true; + config = c; + break; + } + } + if (!exact_cfg_found) { + config = available_cfgs[0]; + } + + EGLint ctx_attributes[] = { + EGL_CONTEXT_CLIENT_VERSION, 3, + EGL_NONE, + }; + EGLContext context = eglCreateContext(display, config, EGL_NO_CONTEXT, ctx_attributes); + if (context == EGL_NO_CONTEXT) { + return false; + } + + _sapp.android.config = config; + _sapp.android.display = display; + _sapp.android.context = context; + return true; +} + +_SOKOL_PRIVATE void _sapp_android_cleanup_egl(void) { + if (_sapp.android.display != EGL_NO_DISPLAY) { + eglMakeCurrent(_sapp.android.display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + if (_sapp.android.surface != EGL_NO_SURFACE) { + eglDestroySurface(_sapp.android.display, _sapp.android.surface); + _sapp.android.surface = EGL_NO_SURFACE; + } + if (_sapp.android.context != EGL_NO_CONTEXT) { + eglDestroyContext(_sapp.android.display, _sapp.android.context); + _sapp.android.context = EGL_NO_CONTEXT; + } + eglTerminate(_sapp.android.display); + _sapp.android.display = EGL_NO_DISPLAY; + } +} + +_SOKOL_PRIVATE bool _sapp_android_init_egl_surface(ANativeWindow* window) { + SOKOL_ASSERT(_sapp.android.display != EGL_NO_DISPLAY); + SOKOL_ASSERT(_sapp.android.context != EGL_NO_CONTEXT); + SOKOL_ASSERT(_sapp.android.surface == EGL_NO_SURFACE); + SOKOL_ASSERT(window); + + /* TODO: set window flags */ + /* ANativeActivity_setWindowFlags(activity, AWINDOW_FLAG_KEEP_SCREEN_ON, 0); */ + + /* create egl surface and make it current */ + EGLSurface surface = eglCreateWindowSurface(_sapp.android.display, _sapp.android.config, window, NULL); + if (surface == EGL_NO_SURFACE) { + return false; + } + if (eglMakeCurrent(_sapp.android.display, surface, surface, _sapp.android.context) == EGL_FALSE) { + return false; + } + _sapp.android.surface = surface; + return true; +} + +_SOKOL_PRIVATE void _sapp_android_cleanup_egl_surface(void) { + if (_sapp.android.display == EGL_NO_DISPLAY) { + return; + } + eglMakeCurrent(_sapp.android.display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + if (_sapp.android.surface != EGL_NO_SURFACE) { + eglDestroySurface(_sapp.android.display, _sapp.android.surface); + _sapp.android.surface = EGL_NO_SURFACE; + } +} + +_SOKOL_PRIVATE void _sapp_android_app_event(sapp_event_type type) { + if (_sapp_events_enabled()) { + _sapp_init_event(type); + _sapp_call_event(&_sapp.event); + } +} + +_SOKOL_PRIVATE void _sapp_android_update_dimensions(ANativeWindow* window, bool force_update) { + SOKOL_ASSERT(_sapp.android.display != EGL_NO_DISPLAY); + SOKOL_ASSERT(_sapp.android.context != EGL_NO_CONTEXT); + SOKOL_ASSERT(_sapp.android.surface != EGL_NO_SURFACE); + SOKOL_ASSERT(window); + + const int32_t win_w = ANativeWindow_getWidth(window); + const int32_t win_h = ANativeWindow_getHeight(window); + SOKOL_ASSERT(win_w >= 0 && win_h >= 0); + const bool win_changed = (win_w != _sapp.window_width) || (win_h != _sapp.window_height); + _sapp.window_width = win_w; + _sapp.window_height = win_h; + if (win_changed || force_update) { + if (!_sapp.desc.high_dpi) { + const int32_t buf_w = win_w / 2; + const int32_t buf_h = win_h / 2; + EGLint format; + EGLBoolean egl_result = eglGetConfigAttrib(_sapp.android.display, _sapp.android.config, EGL_NATIVE_VISUAL_ID, &format); + SOKOL_ASSERT(egl_result == EGL_TRUE); _SOKOL_UNUSED(egl_result); + /* NOTE: calling ANativeWindow_setBuffersGeometry() with the same dimensions + as the ANativeWindow size results in weird display artefacts, that's + why it's only called when the buffer geometry is different from + the window size + */ + int32_t result = ANativeWindow_setBuffersGeometry(window, buf_w, buf_h, format); + SOKOL_ASSERT(result == 0); _SOKOL_UNUSED(result); + } + } + + /* query surface size */ + EGLint fb_w, fb_h; + EGLBoolean egl_result_w = eglQuerySurface(_sapp.android.display, _sapp.android.surface, EGL_WIDTH, &fb_w); + EGLBoolean egl_result_h = eglQuerySurface(_sapp.android.display, _sapp.android.surface, EGL_HEIGHT, &fb_h); + SOKOL_ASSERT(egl_result_w == EGL_TRUE); _SOKOL_UNUSED(egl_result_w); + SOKOL_ASSERT(egl_result_h == EGL_TRUE); _SOKOL_UNUSED(egl_result_h); + const bool fb_changed = (fb_w != _sapp.framebuffer_width) || (fb_h != _sapp.framebuffer_height); + _sapp.framebuffer_width = fb_w; + _sapp.framebuffer_height = fb_h; + _sapp.dpi_scale = (float)_sapp.framebuffer_width / (float)_sapp.window_width; + if (win_changed || fb_changed || force_update) { + if (!_sapp.first_frame) { + _sapp_android_app_event(SAPP_EVENTTYPE_RESIZED); + } + } +} + +_SOKOL_PRIVATE void _sapp_android_cleanup(void) { + if (_sapp.android.surface != EGL_NO_SURFACE) { + /* egl context is bound, cleanup gracefully */ + if (_sapp.init_called && !_sapp.cleanup_called) { + _sapp_call_cleanup(); + } + } + /* always try to cleanup by destroying egl context */ + _sapp_android_cleanup_egl(); +} + +_SOKOL_PRIVATE void _sapp_android_shutdown(void) { + /* try to cleanup while we still have a surface and can call cleanup_cb() */ + _sapp_android_cleanup(); + /* request exit */ + ANativeActivity_finish(_sapp.android.activity); +} + +_SOKOL_PRIVATE void _sapp_android_frame(void) { + SOKOL_ASSERT(_sapp.android.display != EGL_NO_DISPLAY); + SOKOL_ASSERT(_sapp.android.context != EGL_NO_CONTEXT); + SOKOL_ASSERT(_sapp.android.surface != EGL_NO_SURFACE); + _sapp_timing_measure(&_sapp.timing); + _sapp_android_update_dimensions(_sapp.android.current.window, false); + _sapp_frame(); + eglSwapBuffers(_sapp.android.display, _sapp.android.surface); +} + +_SOKOL_PRIVATE bool _sapp_android_touch_event(const AInputEvent* e) { + if (AInputEvent_getType(e) != AINPUT_EVENT_TYPE_MOTION) { + return false; + } + if (!_sapp_events_enabled()) { + return false; + } + int32_t action_idx = AMotionEvent_getAction(e); + int32_t action = action_idx & AMOTION_EVENT_ACTION_MASK; + sapp_event_type type = SAPP_EVENTTYPE_INVALID; + switch (action) { + case AMOTION_EVENT_ACTION_DOWN: + case AMOTION_EVENT_ACTION_POINTER_DOWN: + type = SAPP_EVENTTYPE_TOUCHES_BEGAN; + break; + case AMOTION_EVENT_ACTION_MOVE: + type = SAPP_EVENTTYPE_TOUCHES_MOVED; + break; + case AMOTION_EVENT_ACTION_UP: + case AMOTION_EVENT_ACTION_POINTER_UP: + type = SAPP_EVENTTYPE_TOUCHES_ENDED; + break; + case AMOTION_EVENT_ACTION_CANCEL: + type = SAPP_EVENTTYPE_TOUCHES_CANCELLED; + break; + default: + break; + } + if (type == SAPP_EVENTTYPE_INVALID) { + return false; + } + int32_t idx = action_idx >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; + _sapp_init_event(type); + _sapp.event.num_touches = (int)AMotionEvent_getPointerCount(e); + if (_sapp.event.num_touches > SAPP_MAX_TOUCHPOINTS) { + _sapp.event.num_touches = SAPP_MAX_TOUCHPOINTS; + } + for (int32_t i = 0; i < _sapp.event.num_touches; i++) { + sapp_touchpoint* dst = &_sapp.event.touches[i]; + dst->identifier = (uintptr_t)AMotionEvent_getPointerId(e, (size_t)i); + dst->pos_x = (AMotionEvent_getRawX(e, (size_t)i) / _sapp.window_width) * _sapp.framebuffer_width; + dst->pos_y = (AMotionEvent_getRawY(e, (size_t)i) / _sapp.window_height) * _sapp.framebuffer_height; + dst->android_tooltype = (sapp_android_tooltype) AMotionEvent_getToolType(e, (size_t)i); + if (action == AMOTION_EVENT_ACTION_POINTER_DOWN || + action == AMOTION_EVENT_ACTION_POINTER_UP) { + dst->changed = (i == idx); + } else { + dst->changed = true; + } + } + _sapp_call_event(&_sapp.event); + return true; +} + +_SOKOL_PRIVATE bool _sapp_android_key_event(const AInputEvent* e) { + if (AInputEvent_getType(e) != AINPUT_EVENT_TYPE_KEY) { + return false; + } + if (AKeyEvent_getKeyCode(e) == AKEYCODE_BACK) { + /* FIXME: this should be hooked into a "really quit?" mechanism + so the app can ask the user for confirmation, this is currently + generally missing in sokol_app.h + */ + _sapp_android_shutdown(); + return true; + } + return false; +} + +_SOKOL_PRIVATE int _sapp_android_input_cb(int fd, int events, void* data) { + _SOKOL_UNUSED(fd); + _SOKOL_UNUSED(data); + if ((events & ALOOPER_EVENT_INPUT) == 0) { + _SAPP_ERROR(ANDROID_UNSUPPORTED_INPUT_EVENT_INPUT_CB); + return 1; + } + SOKOL_ASSERT(_sapp.android.current.input); + AInputEvent* event = NULL; + while (AInputQueue_getEvent(_sapp.android.current.input, &event) >= 0) { + if (AInputQueue_preDispatchEvent(_sapp.android.current.input, event) != 0) { + continue; + } + int32_t handled = 0; + if (_sapp_android_touch_event(event) || _sapp_android_key_event(event)) { + handled = 1; + } + AInputQueue_finishEvent(_sapp.android.current.input, event, handled); + } + return 1; +} + +_SOKOL_PRIVATE int _sapp_android_main_cb(int fd, int events, void* data) { + _SOKOL_UNUSED(data); + if ((events & ALOOPER_EVENT_INPUT) == 0) { + _SAPP_ERROR(ANDROID_UNSUPPORTED_INPUT_EVENT_MAIN_CB); + return 1; + } + + _sapp_android_msg_t msg; + if (read(fd, &msg, sizeof(msg)) != sizeof(msg)) { + _SAPP_ERROR(ANDROID_READ_MSG_FAILED); + return 1; + } + + pthread_mutex_lock(&_sapp.android.pt.mutex); + switch (msg) { + case _SOKOL_ANDROID_MSG_CREATE: + { + _SAPP_INFO(ANDROID_MSG_CREATE); + SOKOL_ASSERT(!_sapp.valid); + bool result = _sapp_android_init_egl(); + SOKOL_ASSERT(result); _SOKOL_UNUSED(result); + _sapp.valid = true; + _sapp.android.has_created = true; + } + break; + case _SOKOL_ANDROID_MSG_RESUME: + _SAPP_INFO(ANDROID_MSG_RESUME); + _sapp.android.has_resumed = true; + _sapp_android_app_event(SAPP_EVENTTYPE_RESUMED); + break; + case _SOKOL_ANDROID_MSG_PAUSE: + _SAPP_INFO(ANDROID_MSG_PAUSE); + _sapp.android.has_resumed = false; + _sapp_android_app_event(SAPP_EVENTTYPE_SUSPENDED); + break; + case _SOKOL_ANDROID_MSG_FOCUS: + _SAPP_INFO(ANDROID_MSG_FOCUS); + _sapp.android.has_focus = true; + break; + case _SOKOL_ANDROID_MSG_NO_FOCUS: + _SAPP_INFO(ANDROID_MSG_NO_FOCUS); + _sapp.android.has_focus = false; + break; + case _SOKOL_ANDROID_MSG_SET_NATIVE_WINDOW: + _SAPP_INFO(ANDROID_MSG_SET_NATIVE_WINDOW); + if (_sapp.android.current.window != _sapp.android.pending.window) { + if (_sapp.android.current.window != NULL) { + _sapp_android_cleanup_egl_surface(); + } + if (_sapp.android.pending.window != NULL) { + if (_sapp_android_init_egl_surface(_sapp.android.pending.window)) { + _sapp_android_update_dimensions(_sapp.android.pending.window, true); + } else { + _sapp_android_shutdown(); + } + } + } + _sapp.android.current.window = _sapp.android.pending.window; + break; + case _SOKOL_ANDROID_MSG_SET_INPUT_QUEUE: + _SAPP_INFO(ANDROID_MSG_SET_INPUT_QUEUE); + if (_sapp.android.current.input != _sapp.android.pending.input) { + if (_sapp.android.current.input != NULL) { + AInputQueue_detachLooper(_sapp.android.current.input); + } + if (_sapp.android.pending.input != NULL) { + AInputQueue_attachLooper( + _sapp.android.pending.input, + _sapp.android.looper, + ALOOPER_POLL_CALLBACK, + _sapp_android_input_cb, + NULL); /* data */ + } + } + _sapp.android.current.input = _sapp.android.pending.input; + break; + case _SOKOL_ANDROID_MSG_DESTROY: + _SAPP_INFO(ANDROID_MSG_DESTROY); + _sapp_android_cleanup(); + _sapp.valid = false; + _sapp.android.is_thread_stopping = true; + break; + default: + _SAPP_WARN(ANDROID_UNKNOWN_MSG); + break; + } + pthread_cond_broadcast(&_sapp.android.pt.cond); /* signal "received" */ + pthread_mutex_unlock(&_sapp.android.pt.mutex); + return 1; +} + +_SOKOL_PRIVATE bool _sapp_android_should_update(void) { + bool is_in_front = _sapp.android.has_resumed && _sapp.android.has_focus; + bool has_surface = _sapp.android.surface != EGL_NO_SURFACE; + return is_in_front && has_surface; +} + +_SOKOL_PRIVATE void _sapp_android_show_keyboard(bool shown) { + SOKOL_ASSERT(_sapp.valid); + /* This seems to be broken in the NDK, but there is (a very cumbersome) workaround... */ + if (shown) { + ANativeActivity_showSoftInput(_sapp.android.activity, ANATIVEACTIVITY_SHOW_SOFT_INPUT_FORCED); + } else { + ANativeActivity_hideSoftInput(_sapp.android.activity, ANATIVEACTIVITY_HIDE_SOFT_INPUT_NOT_ALWAYS); + } +} + +_SOKOL_PRIVATE void* _sapp_android_loop(void* arg) { + _SOKOL_UNUSED(arg); + _SAPP_INFO(ANDROID_LOOP_THREAD_STARTED); + + _sapp.android.looper = ALooper_prepare(0 /* or ALOOPER_PREPARE_ALLOW_NON_CALLBACKS*/); + ALooper_addFd(_sapp.android.looper, + _sapp.android.pt.read_from_main_fd, + ALOOPER_POLL_CALLBACK, + ALOOPER_EVENT_INPUT, + _sapp_android_main_cb, + NULL); /* data */ + + /* signal start to main thread */ + pthread_mutex_lock(&_sapp.android.pt.mutex); + _sapp.android.is_thread_started = true; + pthread_cond_broadcast(&_sapp.android.pt.cond); + pthread_mutex_unlock(&_sapp.android.pt.mutex); + + /* main loop */ + while (!_sapp.android.is_thread_stopping) { + /* sokol frame */ + if (_sapp_android_should_update()) { + _sapp_android_frame(); + } + + /* process all events (or stop early if app is requested to quit) */ + bool process_events = true; + while (process_events && !_sapp.android.is_thread_stopping) { + bool block_until_event = !_sapp.android.is_thread_stopping && !_sapp_android_should_update(); + process_events = ALooper_pollOnce(block_until_event ? -1 : 0, NULL, NULL, NULL) == ALOOPER_POLL_CALLBACK; + } + } + + /* cleanup thread */ + if (_sapp.android.current.input != NULL) { + AInputQueue_detachLooper(_sapp.android.current.input); + } + + /* the following causes heap corruption on exit, why?? + ALooper_removeFd(_sapp.android.looper, _sapp.android.pt.read_from_main_fd); + ALooper_release(_sapp.android.looper);*/ + + /* signal "destroyed" */ + pthread_mutex_lock(&_sapp.android.pt.mutex); + _sapp.android.is_thread_stopped = true; + pthread_cond_broadcast(&_sapp.android.pt.cond); + pthread_mutex_unlock(&_sapp.android.pt.mutex); + + _SAPP_INFO(ANDROID_LOOP_THREAD_DONE); + return NULL; +} + +/* android main/ui thread */ +_SOKOL_PRIVATE void _sapp_android_msg(_sapp_android_msg_t msg) { + if (write(_sapp.android.pt.write_from_main_fd, &msg, sizeof(msg)) != sizeof(msg)) { + _SAPP_ERROR(ANDROID_WRITE_MSG_FAILED); + } +} + +_SOKOL_PRIVATE void _sapp_android_on_start(ANativeActivity* activity) { + _SOKOL_UNUSED(activity); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONSTART); +} + +_SOKOL_PRIVATE void _sapp_android_on_resume(ANativeActivity* activity) { + _SOKOL_UNUSED(activity); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONRESUME); + _sapp_android_msg(_SOKOL_ANDROID_MSG_RESUME); +} + +_SOKOL_PRIVATE void* _sapp_android_on_save_instance_state(ANativeActivity* activity, size_t* out_size) { + _SOKOL_UNUSED(activity); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONSAVEINSTANCESTATE); + *out_size = 0; + return NULL; +} + +_SOKOL_PRIVATE void _sapp_android_on_window_focus_changed(ANativeActivity* activity, int has_focus) { + _SOKOL_UNUSED(activity); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONWINDOWFOCUSCHANGED); + if (has_focus) { + _sapp_android_msg(_SOKOL_ANDROID_MSG_FOCUS); + } else { + _sapp_android_msg(_SOKOL_ANDROID_MSG_NO_FOCUS); + } +} + +_SOKOL_PRIVATE void _sapp_android_on_pause(ANativeActivity* activity) { + _SOKOL_UNUSED(activity); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONPAUSE); + _sapp_android_msg(_SOKOL_ANDROID_MSG_PAUSE); +} + +_SOKOL_PRIVATE void _sapp_android_on_stop(ANativeActivity* activity) { + _SOKOL_UNUSED(activity); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONSTOP); +} + +_SOKOL_PRIVATE void _sapp_android_msg_set_native_window(ANativeWindow* window) { + pthread_mutex_lock(&_sapp.android.pt.mutex); + _sapp.android.pending.window = window; + _sapp_android_msg(_SOKOL_ANDROID_MSG_SET_NATIVE_WINDOW); + while (_sapp.android.current.window != window) { + pthread_cond_wait(&_sapp.android.pt.cond, &_sapp.android.pt.mutex); + } + pthread_mutex_unlock(&_sapp.android.pt.mutex); +} + +_SOKOL_PRIVATE void _sapp_android_on_native_window_created(ANativeActivity* activity, ANativeWindow* window) { + _SOKOL_UNUSED(activity); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONNATIVEWINDOWCREATED); + _sapp_android_msg_set_native_window(window); +} + +_SOKOL_PRIVATE void _sapp_android_on_native_window_destroyed(ANativeActivity* activity, ANativeWindow* window) { + _SOKOL_UNUSED(activity); + _SOKOL_UNUSED(window); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONNATIVEWINDOWDESTROYED); + _sapp_android_msg_set_native_window(NULL); +} + +_SOKOL_PRIVATE void _sapp_android_msg_set_input_queue(AInputQueue* input) { + pthread_mutex_lock(&_sapp.android.pt.mutex); + _sapp.android.pending.input = input; + _sapp_android_msg(_SOKOL_ANDROID_MSG_SET_INPUT_QUEUE); + while (_sapp.android.current.input != input) { + pthread_cond_wait(&_sapp.android.pt.cond, &_sapp.android.pt.mutex); + } + pthread_mutex_unlock(&_sapp.android.pt.mutex); +} + +_SOKOL_PRIVATE void _sapp_android_on_input_queue_created(ANativeActivity* activity, AInputQueue* queue) { + _SOKOL_UNUSED(activity); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONINPUTQUEUECREATED); + _sapp_android_msg_set_input_queue(queue); +} + +_SOKOL_PRIVATE void _sapp_android_on_input_queue_destroyed(ANativeActivity* activity, AInputQueue* queue) { + _SOKOL_UNUSED(activity); + _SOKOL_UNUSED(queue); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONINPUTQUEUEDESTROYED); + _sapp_android_msg_set_input_queue(NULL); +} + +_SOKOL_PRIVATE void _sapp_android_on_config_changed(ANativeActivity* activity) { + _SOKOL_UNUSED(activity); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONCONFIGURATIONCHANGED); + /* see android:configChanges in manifest */ +} + +_SOKOL_PRIVATE void _sapp_android_on_low_memory(ANativeActivity* activity) { + _SOKOL_UNUSED(activity); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONLOWMEMORY); +} + +_SOKOL_PRIVATE void _sapp_android_on_destroy(ANativeActivity* activity) { + /* + * For some reason even an empty app using nativeactivity.h will crash (WIN DEATH) + * on my device (Moto X 2nd gen) when the app is removed from the task view + * (TaskStackView: onTaskViewDismissed). + * + * However, if ANativeActivity_finish() is explicitly called from for example + * _sapp_android_on_stop(), the crash disappears. Is this a bug in NativeActivity? + */ + _SOKOL_UNUSED(activity); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONDESTROY); + + /* send destroy msg */ + pthread_mutex_lock(&_sapp.android.pt.mutex); + _sapp_android_msg(_SOKOL_ANDROID_MSG_DESTROY); + while (!_sapp.android.is_thread_stopped) { + pthread_cond_wait(&_sapp.android.pt.cond, &_sapp.android.pt.mutex); + } + pthread_mutex_unlock(&_sapp.android.pt.mutex); + + /* clean up main thread */ + pthread_cond_destroy(&_sapp.android.pt.cond); + pthread_mutex_destroy(&_sapp.android.pt.mutex); + + close(_sapp.android.pt.read_from_main_fd); + close(_sapp.android.pt.write_from_main_fd); + + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_DONE); + + /* this is a bit naughty, but causes a clean restart of the app (static globals are reset) */ + exit(0); +} + +JNIEXPORT +void ANativeActivity_onCreate(ANativeActivity* activity, void* saved_state, size_t saved_state_size) { + _SOKOL_UNUSED(saved_state); + _SOKOL_UNUSED(saved_state_size); + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_ONCREATE); + + // the NativeActity pointer needs to be available inside sokol_main() + // (see https://github.com/floooh/sokol/issues/708), however _sapp_init_state() + // will clear the global _sapp_t struct, so we need to initialize the native + // activity pointer twice, once before sokol_main() and once after _sapp_init_state() + _sapp_clear(&_sapp, sizeof(_sapp)); + _sapp.android.activity = activity; + sapp_desc desc = sokol_main(0, NULL); + _sapp_init_state(&desc); + _sapp.android.activity = activity; + + int pipe_fd[2]; + if (pipe(pipe_fd) != 0) { + _SAPP_ERROR(ANDROID_CREATE_THREAD_PIPE_FAILED); + return; + } + _sapp.android.pt.read_from_main_fd = pipe_fd[0]; + _sapp.android.pt.write_from_main_fd = pipe_fd[1]; + + pthread_mutex_init(&_sapp.android.pt.mutex, NULL); + pthread_cond_init(&_sapp.android.pt.cond, NULL); + + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + pthread_create(&_sapp.android.pt.thread, &attr, _sapp_android_loop, 0); + pthread_attr_destroy(&attr); + + /* wait until main loop has started */ + pthread_mutex_lock(&_sapp.android.pt.mutex); + while (!_sapp.android.is_thread_started) { + pthread_cond_wait(&_sapp.android.pt.cond, &_sapp.android.pt.mutex); + } + pthread_mutex_unlock(&_sapp.android.pt.mutex); + + /* send create msg */ + pthread_mutex_lock(&_sapp.android.pt.mutex); + _sapp_android_msg(_SOKOL_ANDROID_MSG_CREATE); + while (!_sapp.android.has_created) { + pthread_cond_wait(&_sapp.android.pt.cond, &_sapp.android.pt.mutex); + } + pthread_mutex_unlock(&_sapp.android.pt.mutex); + + /* register for callbacks */ + activity->callbacks->onStart = _sapp_android_on_start; + activity->callbacks->onResume = _sapp_android_on_resume; + activity->callbacks->onSaveInstanceState = _sapp_android_on_save_instance_state; + activity->callbacks->onWindowFocusChanged = _sapp_android_on_window_focus_changed; + activity->callbacks->onPause = _sapp_android_on_pause; + activity->callbacks->onStop = _sapp_android_on_stop; + activity->callbacks->onDestroy = _sapp_android_on_destroy; + activity->callbacks->onNativeWindowCreated = _sapp_android_on_native_window_created; + /* activity->callbacks->onNativeWindowResized = _sapp_android_on_native_window_resized; */ + /* activity->callbacks->onNativeWindowRedrawNeeded = _sapp_android_on_native_window_redraw_needed; */ + activity->callbacks->onNativeWindowDestroyed = _sapp_android_on_native_window_destroyed; + activity->callbacks->onInputQueueCreated = _sapp_android_on_input_queue_created; + activity->callbacks->onInputQueueDestroyed = _sapp_android_on_input_queue_destroyed; + /* activity->callbacks->onContentRectChanged = _sapp_android_on_content_rect_changed; */ + activity->callbacks->onConfigurationChanged = _sapp_android_on_config_changed; + activity->callbacks->onLowMemory = _sapp_android_on_low_memory; + + _SAPP_INFO(ANDROID_NATIVE_ACTIVITY_CREATE_SUCCESS); + + /* NOT A BUG: do NOT call sapp_discard_state() */ +} + +#endif /* _SAPP_ANDROID */ + +// ██ ██ ███ ██ ██ ██ ██ ██ +// ██ ██ ████ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ███ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██ ████ ██████ ██ ██ +// +// >>linux +#if defined(_SAPP_LINUX) + +/* see GLFW's xkb_unicode.c */ +static const struct _sapp_x11_codepair { + uint16_t keysym; + uint16_t ucs; +} _sapp_x11_keysymtab[] = { + { 0x01a1, 0x0104 }, + { 0x01a2, 0x02d8 }, + { 0x01a3, 0x0141 }, + { 0x01a5, 0x013d }, + { 0x01a6, 0x015a }, + { 0x01a9, 0x0160 }, + { 0x01aa, 0x015e }, + { 0x01ab, 0x0164 }, + { 0x01ac, 0x0179 }, + { 0x01ae, 0x017d }, + { 0x01af, 0x017b }, + { 0x01b1, 0x0105 }, + { 0x01b2, 0x02db }, + { 0x01b3, 0x0142 }, + { 0x01b5, 0x013e }, + { 0x01b6, 0x015b }, + { 0x01b7, 0x02c7 }, + { 0x01b9, 0x0161 }, + { 0x01ba, 0x015f }, + { 0x01bb, 0x0165 }, + { 0x01bc, 0x017a }, + { 0x01bd, 0x02dd }, + { 0x01be, 0x017e }, + { 0x01bf, 0x017c }, + { 0x01c0, 0x0154 }, + { 0x01c3, 0x0102 }, + { 0x01c5, 0x0139 }, + { 0x01c6, 0x0106 }, + { 0x01c8, 0x010c }, + { 0x01ca, 0x0118 }, + { 0x01cc, 0x011a }, + { 0x01cf, 0x010e }, + { 0x01d0, 0x0110 }, + { 0x01d1, 0x0143 }, + { 0x01d2, 0x0147 }, + { 0x01d5, 0x0150 }, + { 0x01d8, 0x0158 }, + { 0x01d9, 0x016e }, + { 0x01db, 0x0170 }, + { 0x01de, 0x0162 }, + { 0x01e0, 0x0155 }, + { 0x01e3, 0x0103 }, + { 0x01e5, 0x013a }, + { 0x01e6, 0x0107 }, + { 0x01e8, 0x010d }, + { 0x01ea, 0x0119 }, + { 0x01ec, 0x011b }, + { 0x01ef, 0x010f }, + { 0x01f0, 0x0111 }, + { 0x01f1, 0x0144 }, + { 0x01f2, 0x0148 }, + { 0x01f5, 0x0151 }, + { 0x01f8, 0x0159 }, + { 0x01f9, 0x016f }, + { 0x01fb, 0x0171 }, + { 0x01fe, 0x0163 }, + { 0x01ff, 0x02d9 }, + { 0x02a1, 0x0126 }, + { 0x02a6, 0x0124 }, + { 0x02a9, 0x0130 }, + { 0x02ab, 0x011e }, + { 0x02ac, 0x0134 }, + { 0x02b1, 0x0127 }, + { 0x02b6, 0x0125 }, + { 0x02b9, 0x0131 }, + { 0x02bb, 0x011f }, + { 0x02bc, 0x0135 }, + { 0x02c5, 0x010a }, + { 0x02c6, 0x0108 }, + { 0x02d5, 0x0120 }, + { 0x02d8, 0x011c }, + { 0x02dd, 0x016c }, + { 0x02de, 0x015c }, + { 0x02e5, 0x010b }, + { 0x02e6, 0x0109 }, + { 0x02f5, 0x0121 }, + { 0x02f8, 0x011d }, + { 0x02fd, 0x016d }, + { 0x02fe, 0x015d }, + { 0x03a2, 0x0138 }, + { 0x03a3, 0x0156 }, + { 0x03a5, 0x0128 }, + { 0x03a6, 0x013b }, + { 0x03aa, 0x0112 }, + { 0x03ab, 0x0122 }, + { 0x03ac, 0x0166 }, + { 0x03b3, 0x0157 }, + { 0x03b5, 0x0129 }, + { 0x03b6, 0x013c }, + { 0x03ba, 0x0113 }, + { 0x03bb, 0x0123 }, + { 0x03bc, 0x0167 }, + { 0x03bd, 0x014a }, + { 0x03bf, 0x014b }, + { 0x03c0, 0x0100 }, + { 0x03c7, 0x012e }, + { 0x03cc, 0x0116 }, + { 0x03cf, 0x012a }, + { 0x03d1, 0x0145 }, + { 0x03d2, 0x014c }, + { 0x03d3, 0x0136 }, + { 0x03d9, 0x0172 }, + { 0x03dd, 0x0168 }, + { 0x03de, 0x016a }, + { 0x03e0, 0x0101 }, + { 0x03e7, 0x012f }, + { 0x03ec, 0x0117 }, + { 0x03ef, 0x012b }, + { 0x03f1, 0x0146 }, + { 0x03f2, 0x014d }, + { 0x03f3, 0x0137 }, + { 0x03f9, 0x0173 }, + { 0x03fd, 0x0169 }, + { 0x03fe, 0x016b }, + { 0x047e, 0x203e }, + { 0x04a1, 0x3002 }, + { 0x04a2, 0x300c }, + { 0x04a3, 0x300d }, + { 0x04a4, 0x3001 }, + { 0x04a5, 0x30fb }, + { 0x04a6, 0x30f2 }, + { 0x04a7, 0x30a1 }, + { 0x04a8, 0x30a3 }, + { 0x04a9, 0x30a5 }, + { 0x04aa, 0x30a7 }, + { 0x04ab, 0x30a9 }, + { 0x04ac, 0x30e3 }, + { 0x04ad, 0x30e5 }, + { 0x04ae, 0x30e7 }, + { 0x04af, 0x30c3 }, + { 0x04b0, 0x30fc }, + { 0x04b1, 0x30a2 }, + { 0x04b2, 0x30a4 }, + { 0x04b3, 0x30a6 }, + { 0x04b4, 0x30a8 }, + { 0x04b5, 0x30aa }, + { 0x04b6, 0x30ab }, + { 0x04b7, 0x30ad }, + { 0x04b8, 0x30af }, + { 0x04b9, 0x30b1 }, + { 0x04ba, 0x30b3 }, + { 0x04bb, 0x30b5 }, + { 0x04bc, 0x30b7 }, + { 0x04bd, 0x30b9 }, + { 0x04be, 0x30bb }, + { 0x04bf, 0x30bd }, + { 0x04c0, 0x30bf }, + { 0x04c1, 0x30c1 }, + { 0x04c2, 0x30c4 }, + { 0x04c3, 0x30c6 }, + { 0x04c4, 0x30c8 }, + { 0x04c5, 0x30ca }, + { 0x04c6, 0x30cb }, + { 0x04c7, 0x30cc }, + { 0x04c8, 0x30cd }, + { 0x04c9, 0x30ce }, + { 0x04ca, 0x30cf }, + { 0x04cb, 0x30d2 }, + { 0x04cc, 0x30d5 }, + { 0x04cd, 0x30d8 }, + { 0x04ce, 0x30db }, + { 0x04cf, 0x30de }, + { 0x04d0, 0x30df }, + { 0x04d1, 0x30e0 }, + { 0x04d2, 0x30e1 }, + { 0x04d3, 0x30e2 }, + { 0x04d4, 0x30e4 }, + { 0x04d5, 0x30e6 }, + { 0x04d6, 0x30e8 }, + { 0x04d7, 0x30e9 }, + { 0x04d8, 0x30ea }, + { 0x04d9, 0x30eb }, + { 0x04da, 0x30ec }, + { 0x04db, 0x30ed }, + { 0x04dc, 0x30ef }, + { 0x04dd, 0x30f3 }, + { 0x04de, 0x309b }, + { 0x04df, 0x309c }, + { 0x05ac, 0x060c }, + { 0x05bb, 0x061b }, + { 0x05bf, 0x061f }, + { 0x05c1, 0x0621 }, + { 0x05c2, 0x0622 }, + { 0x05c3, 0x0623 }, + { 0x05c4, 0x0624 }, + { 0x05c5, 0x0625 }, + { 0x05c6, 0x0626 }, + { 0x05c7, 0x0627 }, + { 0x05c8, 0x0628 }, + { 0x05c9, 0x0629 }, + { 0x05ca, 0x062a }, + { 0x05cb, 0x062b }, + { 0x05cc, 0x062c }, + { 0x05cd, 0x062d }, + { 0x05ce, 0x062e }, + { 0x05cf, 0x062f }, + { 0x05d0, 0x0630 }, + { 0x05d1, 0x0631 }, + { 0x05d2, 0x0632 }, + { 0x05d3, 0x0633 }, + { 0x05d4, 0x0634 }, + { 0x05d5, 0x0635 }, + { 0x05d6, 0x0636 }, + { 0x05d7, 0x0637 }, + { 0x05d8, 0x0638 }, + { 0x05d9, 0x0639 }, + { 0x05da, 0x063a }, + { 0x05e0, 0x0640 }, + { 0x05e1, 0x0641 }, + { 0x05e2, 0x0642 }, + { 0x05e3, 0x0643 }, + { 0x05e4, 0x0644 }, + { 0x05e5, 0x0645 }, + { 0x05e6, 0x0646 }, + { 0x05e7, 0x0647 }, + { 0x05e8, 0x0648 }, + { 0x05e9, 0x0649 }, + { 0x05ea, 0x064a }, + { 0x05eb, 0x064b }, + { 0x05ec, 0x064c }, + { 0x05ed, 0x064d }, + { 0x05ee, 0x064e }, + { 0x05ef, 0x064f }, + { 0x05f0, 0x0650 }, + { 0x05f1, 0x0651 }, + { 0x05f2, 0x0652 }, + { 0x06a1, 0x0452 }, + { 0x06a2, 0x0453 }, + { 0x06a3, 0x0451 }, + { 0x06a4, 0x0454 }, + { 0x06a5, 0x0455 }, + { 0x06a6, 0x0456 }, + { 0x06a7, 0x0457 }, + { 0x06a8, 0x0458 }, + { 0x06a9, 0x0459 }, + { 0x06aa, 0x045a }, + { 0x06ab, 0x045b }, + { 0x06ac, 0x045c }, + { 0x06ae, 0x045e }, + { 0x06af, 0x045f }, + { 0x06b0, 0x2116 }, + { 0x06b1, 0x0402 }, + { 0x06b2, 0x0403 }, + { 0x06b3, 0x0401 }, + { 0x06b4, 0x0404 }, + { 0x06b5, 0x0405 }, + { 0x06b6, 0x0406 }, + { 0x06b7, 0x0407 }, + { 0x06b8, 0x0408 }, + { 0x06b9, 0x0409 }, + { 0x06ba, 0x040a }, + { 0x06bb, 0x040b }, + { 0x06bc, 0x040c }, + { 0x06be, 0x040e }, + { 0x06bf, 0x040f }, + { 0x06c0, 0x044e }, + { 0x06c1, 0x0430 }, + { 0x06c2, 0x0431 }, + { 0x06c3, 0x0446 }, + { 0x06c4, 0x0434 }, + { 0x06c5, 0x0435 }, + { 0x06c6, 0x0444 }, + { 0x06c7, 0x0433 }, + { 0x06c8, 0x0445 }, + { 0x06c9, 0x0438 }, + { 0x06ca, 0x0439 }, + { 0x06cb, 0x043a }, + { 0x06cc, 0x043b }, + { 0x06cd, 0x043c }, + { 0x06ce, 0x043d }, + { 0x06cf, 0x043e }, + { 0x06d0, 0x043f }, + { 0x06d1, 0x044f }, + { 0x06d2, 0x0440 }, + { 0x06d3, 0x0441 }, + { 0x06d4, 0x0442 }, + { 0x06d5, 0x0443 }, + { 0x06d6, 0x0436 }, + { 0x06d7, 0x0432 }, + { 0x06d8, 0x044c }, + { 0x06d9, 0x044b }, + { 0x06da, 0x0437 }, + { 0x06db, 0x0448 }, + { 0x06dc, 0x044d }, + { 0x06dd, 0x0449 }, + { 0x06de, 0x0447 }, + { 0x06df, 0x044a }, + { 0x06e0, 0x042e }, + { 0x06e1, 0x0410 }, + { 0x06e2, 0x0411 }, + { 0x06e3, 0x0426 }, + { 0x06e4, 0x0414 }, + { 0x06e5, 0x0415 }, + { 0x06e6, 0x0424 }, + { 0x06e7, 0x0413 }, + { 0x06e8, 0x0425 }, + { 0x06e9, 0x0418 }, + { 0x06ea, 0x0419 }, + { 0x06eb, 0x041a }, + { 0x06ec, 0x041b }, + { 0x06ed, 0x041c }, + { 0x06ee, 0x041d }, + { 0x06ef, 0x041e }, + { 0x06f0, 0x041f }, + { 0x06f1, 0x042f }, + { 0x06f2, 0x0420 }, + { 0x06f3, 0x0421 }, + { 0x06f4, 0x0422 }, + { 0x06f5, 0x0423 }, + { 0x06f6, 0x0416 }, + { 0x06f7, 0x0412 }, + { 0x06f8, 0x042c }, + { 0x06f9, 0x042b }, + { 0x06fa, 0x0417 }, + { 0x06fb, 0x0428 }, + { 0x06fc, 0x042d }, + { 0x06fd, 0x0429 }, + { 0x06fe, 0x0427 }, + { 0x06ff, 0x042a }, + { 0x07a1, 0x0386 }, + { 0x07a2, 0x0388 }, + { 0x07a3, 0x0389 }, + { 0x07a4, 0x038a }, + { 0x07a5, 0x03aa }, + { 0x07a7, 0x038c }, + { 0x07a8, 0x038e }, + { 0x07a9, 0x03ab }, + { 0x07ab, 0x038f }, + { 0x07ae, 0x0385 }, + { 0x07af, 0x2015 }, + { 0x07b1, 0x03ac }, + { 0x07b2, 0x03ad }, + { 0x07b3, 0x03ae }, + { 0x07b4, 0x03af }, + { 0x07b5, 0x03ca }, + { 0x07b6, 0x0390 }, + { 0x07b7, 0x03cc }, + { 0x07b8, 0x03cd }, + { 0x07b9, 0x03cb }, + { 0x07ba, 0x03b0 }, + { 0x07bb, 0x03ce }, + { 0x07c1, 0x0391 }, + { 0x07c2, 0x0392 }, + { 0x07c3, 0x0393 }, + { 0x07c4, 0x0394 }, + { 0x07c5, 0x0395 }, + { 0x07c6, 0x0396 }, + { 0x07c7, 0x0397 }, + { 0x07c8, 0x0398 }, + { 0x07c9, 0x0399 }, + { 0x07ca, 0x039a }, + { 0x07cb, 0x039b }, + { 0x07cc, 0x039c }, + { 0x07cd, 0x039d }, + { 0x07ce, 0x039e }, + { 0x07cf, 0x039f }, + { 0x07d0, 0x03a0 }, + { 0x07d1, 0x03a1 }, + { 0x07d2, 0x03a3 }, + { 0x07d4, 0x03a4 }, + { 0x07d5, 0x03a5 }, + { 0x07d6, 0x03a6 }, + { 0x07d7, 0x03a7 }, + { 0x07d8, 0x03a8 }, + { 0x07d9, 0x03a9 }, + { 0x07e1, 0x03b1 }, + { 0x07e2, 0x03b2 }, + { 0x07e3, 0x03b3 }, + { 0x07e4, 0x03b4 }, + { 0x07e5, 0x03b5 }, + { 0x07e6, 0x03b6 }, + { 0x07e7, 0x03b7 }, + { 0x07e8, 0x03b8 }, + { 0x07e9, 0x03b9 }, + { 0x07ea, 0x03ba }, + { 0x07eb, 0x03bb }, + { 0x07ec, 0x03bc }, + { 0x07ed, 0x03bd }, + { 0x07ee, 0x03be }, + { 0x07ef, 0x03bf }, + { 0x07f0, 0x03c0 }, + { 0x07f1, 0x03c1 }, + { 0x07f2, 0x03c3 }, + { 0x07f3, 0x03c2 }, + { 0x07f4, 0x03c4 }, + { 0x07f5, 0x03c5 }, + { 0x07f6, 0x03c6 }, + { 0x07f7, 0x03c7 }, + { 0x07f8, 0x03c8 }, + { 0x07f9, 0x03c9 }, + { 0x08a1, 0x23b7 }, + { 0x08a2, 0x250c }, + { 0x08a3, 0x2500 }, + { 0x08a4, 0x2320 }, + { 0x08a5, 0x2321 }, + { 0x08a6, 0x2502 }, + { 0x08a7, 0x23a1 }, + { 0x08a8, 0x23a3 }, + { 0x08a9, 0x23a4 }, + { 0x08aa, 0x23a6 }, + { 0x08ab, 0x239b }, + { 0x08ac, 0x239d }, + { 0x08ad, 0x239e }, + { 0x08ae, 0x23a0 }, + { 0x08af, 0x23a8 }, + { 0x08b0, 0x23ac }, + { 0x08bc, 0x2264 }, + { 0x08bd, 0x2260 }, + { 0x08be, 0x2265 }, + { 0x08bf, 0x222b }, + { 0x08c0, 0x2234 }, + { 0x08c1, 0x221d }, + { 0x08c2, 0x221e }, + { 0x08c5, 0x2207 }, + { 0x08c8, 0x223c }, + { 0x08c9, 0x2243 }, + { 0x08cd, 0x21d4 }, + { 0x08ce, 0x21d2 }, + { 0x08cf, 0x2261 }, + { 0x08d6, 0x221a }, + { 0x08da, 0x2282 }, + { 0x08db, 0x2283 }, + { 0x08dc, 0x2229 }, + { 0x08dd, 0x222a }, + { 0x08de, 0x2227 }, + { 0x08df, 0x2228 }, + { 0x08ef, 0x2202 }, + { 0x08f6, 0x0192 }, + { 0x08fb, 0x2190 }, + { 0x08fc, 0x2191 }, + { 0x08fd, 0x2192 }, + { 0x08fe, 0x2193 }, + { 0x09e0, 0x25c6 }, + { 0x09e1, 0x2592 }, + { 0x09e2, 0x2409 }, + { 0x09e3, 0x240c }, + { 0x09e4, 0x240d }, + { 0x09e5, 0x240a }, + { 0x09e8, 0x2424 }, + { 0x09e9, 0x240b }, + { 0x09ea, 0x2518 }, + { 0x09eb, 0x2510 }, + { 0x09ec, 0x250c }, + { 0x09ed, 0x2514 }, + { 0x09ee, 0x253c }, + { 0x09ef, 0x23ba }, + { 0x09f0, 0x23bb }, + { 0x09f1, 0x2500 }, + { 0x09f2, 0x23bc }, + { 0x09f3, 0x23bd }, + { 0x09f4, 0x251c }, + { 0x09f5, 0x2524 }, + { 0x09f6, 0x2534 }, + { 0x09f7, 0x252c }, + { 0x09f8, 0x2502 }, + { 0x0aa1, 0x2003 }, + { 0x0aa2, 0x2002 }, + { 0x0aa3, 0x2004 }, + { 0x0aa4, 0x2005 }, + { 0x0aa5, 0x2007 }, + { 0x0aa6, 0x2008 }, + { 0x0aa7, 0x2009 }, + { 0x0aa8, 0x200a }, + { 0x0aa9, 0x2014 }, + { 0x0aaa, 0x2013 }, + { 0x0aae, 0x2026 }, + { 0x0aaf, 0x2025 }, + { 0x0ab0, 0x2153 }, + { 0x0ab1, 0x2154 }, + { 0x0ab2, 0x2155 }, + { 0x0ab3, 0x2156 }, + { 0x0ab4, 0x2157 }, + { 0x0ab5, 0x2158 }, + { 0x0ab6, 0x2159 }, + { 0x0ab7, 0x215a }, + { 0x0ab8, 0x2105 }, + { 0x0abb, 0x2012 }, + { 0x0abc, 0x2329 }, + { 0x0abe, 0x232a }, + { 0x0ac3, 0x215b }, + { 0x0ac4, 0x215c }, + { 0x0ac5, 0x215d }, + { 0x0ac6, 0x215e }, + { 0x0ac9, 0x2122 }, + { 0x0aca, 0x2613 }, + { 0x0acc, 0x25c1 }, + { 0x0acd, 0x25b7 }, + { 0x0ace, 0x25cb }, + { 0x0acf, 0x25af }, + { 0x0ad0, 0x2018 }, + { 0x0ad1, 0x2019 }, + { 0x0ad2, 0x201c }, + { 0x0ad3, 0x201d }, + { 0x0ad4, 0x211e }, + { 0x0ad6, 0x2032 }, + { 0x0ad7, 0x2033 }, + { 0x0ad9, 0x271d }, + { 0x0adb, 0x25ac }, + { 0x0adc, 0x25c0 }, + { 0x0add, 0x25b6 }, + { 0x0ade, 0x25cf }, + { 0x0adf, 0x25ae }, + { 0x0ae0, 0x25e6 }, + { 0x0ae1, 0x25ab }, + { 0x0ae2, 0x25ad }, + { 0x0ae3, 0x25b3 }, + { 0x0ae4, 0x25bd }, + { 0x0ae5, 0x2606 }, + { 0x0ae6, 0x2022 }, + { 0x0ae7, 0x25aa }, + { 0x0ae8, 0x25b2 }, + { 0x0ae9, 0x25bc }, + { 0x0aea, 0x261c }, + { 0x0aeb, 0x261e }, + { 0x0aec, 0x2663 }, + { 0x0aed, 0x2666 }, + { 0x0aee, 0x2665 }, + { 0x0af0, 0x2720 }, + { 0x0af1, 0x2020 }, + { 0x0af2, 0x2021 }, + { 0x0af3, 0x2713 }, + { 0x0af4, 0x2717 }, + { 0x0af5, 0x266f }, + { 0x0af6, 0x266d }, + { 0x0af7, 0x2642 }, + { 0x0af8, 0x2640 }, + { 0x0af9, 0x260e }, + { 0x0afa, 0x2315 }, + { 0x0afb, 0x2117 }, + { 0x0afc, 0x2038 }, + { 0x0afd, 0x201a }, + { 0x0afe, 0x201e }, + { 0x0ba3, 0x003c }, + { 0x0ba6, 0x003e }, + { 0x0ba8, 0x2228 }, + { 0x0ba9, 0x2227 }, + { 0x0bc0, 0x00af }, + { 0x0bc2, 0x22a5 }, + { 0x0bc3, 0x2229 }, + { 0x0bc4, 0x230a }, + { 0x0bc6, 0x005f }, + { 0x0bca, 0x2218 }, + { 0x0bcc, 0x2395 }, + { 0x0bce, 0x22a4 }, + { 0x0bcf, 0x25cb }, + { 0x0bd3, 0x2308 }, + { 0x0bd6, 0x222a }, + { 0x0bd8, 0x2283 }, + { 0x0bda, 0x2282 }, + { 0x0bdc, 0x22a2 }, + { 0x0bfc, 0x22a3 }, + { 0x0cdf, 0x2017 }, + { 0x0ce0, 0x05d0 }, + { 0x0ce1, 0x05d1 }, + { 0x0ce2, 0x05d2 }, + { 0x0ce3, 0x05d3 }, + { 0x0ce4, 0x05d4 }, + { 0x0ce5, 0x05d5 }, + { 0x0ce6, 0x05d6 }, + { 0x0ce7, 0x05d7 }, + { 0x0ce8, 0x05d8 }, + { 0x0ce9, 0x05d9 }, + { 0x0cea, 0x05da }, + { 0x0ceb, 0x05db }, + { 0x0cec, 0x05dc }, + { 0x0ced, 0x05dd }, + { 0x0cee, 0x05de }, + { 0x0cef, 0x05df }, + { 0x0cf0, 0x05e0 }, + { 0x0cf1, 0x05e1 }, + { 0x0cf2, 0x05e2 }, + { 0x0cf3, 0x05e3 }, + { 0x0cf4, 0x05e4 }, + { 0x0cf5, 0x05e5 }, + { 0x0cf6, 0x05e6 }, + { 0x0cf7, 0x05e7 }, + { 0x0cf8, 0x05e8 }, + { 0x0cf9, 0x05e9 }, + { 0x0cfa, 0x05ea }, + { 0x0da1, 0x0e01 }, + { 0x0da2, 0x0e02 }, + { 0x0da3, 0x0e03 }, + { 0x0da4, 0x0e04 }, + { 0x0da5, 0x0e05 }, + { 0x0da6, 0x0e06 }, + { 0x0da7, 0x0e07 }, + { 0x0da8, 0x0e08 }, + { 0x0da9, 0x0e09 }, + { 0x0daa, 0x0e0a }, + { 0x0dab, 0x0e0b }, + { 0x0dac, 0x0e0c }, + { 0x0dad, 0x0e0d }, + { 0x0dae, 0x0e0e }, + { 0x0daf, 0x0e0f }, + { 0x0db0, 0x0e10 }, + { 0x0db1, 0x0e11 }, + { 0x0db2, 0x0e12 }, + { 0x0db3, 0x0e13 }, + { 0x0db4, 0x0e14 }, + { 0x0db5, 0x0e15 }, + { 0x0db6, 0x0e16 }, + { 0x0db7, 0x0e17 }, + { 0x0db8, 0x0e18 }, + { 0x0db9, 0x0e19 }, + { 0x0dba, 0x0e1a }, + { 0x0dbb, 0x0e1b }, + { 0x0dbc, 0x0e1c }, + { 0x0dbd, 0x0e1d }, + { 0x0dbe, 0x0e1e }, + { 0x0dbf, 0x0e1f }, + { 0x0dc0, 0x0e20 }, + { 0x0dc1, 0x0e21 }, + { 0x0dc2, 0x0e22 }, + { 0x0dc3, 0x0e23 }, + { 0x0dc4, 0x0e24 }, + { 0x0dc5, 0x0e25 }, + { 0x0dc6, 0x0e26 }, + { 0x0dc7, 0x0e27 }, + { 0x0dc8, 0x0e28 }, + { 0x0dc9, 0x0e29 }, + { 0x0dca, 0x0e2a }, + { 0x0dcb, 0x0e2b }, + { 0x0dcc, 0x0e2c }, + { 0x0dcd, 0x0e2d }, + { 0x0dce, 0x0e2e }, + { 0x0dcf, 0x0e2f }, + { 0x0dd0, 0x0e30 }, + { 0x0dd1, 0x0e31 }, + { 0x0dd2, 0x0e32 }, + { 0x0dd3, 0x0e33 }, + { 0x0dd4, 0x0e34 }, + { 0x0dd5, 0x0e35 }, + { 0x0dd6, 0x0e36 }, + { 0x0dd7, 0x0e37 }, + { 0x0dd8, 0x0e38 }, + { 0x0dd9, 0x0e39 }, + { 0x0dda, 0x0e3a }, + { 0x0ddf, 0x0e3f }, + { 0x0de0, 0x0e40 }, + { 0x0de1, 0x0e41 }, + { 0x0de2, 0x0e42 }, + { 0x0de3, 0x0e43 }, + { 0x0de4, 0x0e44 }, + { 0x0de5, 0x0e45 }, + { 0x0de6, 0x0e46 }, + { 0x0de7, 0x0e47 }, + { 0x0de8, 0x0e48 }, + { 0x0de9, 0x0e49 }, + { 0x0dea, 0x0e4a }, + { 0x0deb, 0x0e4b }, + { 0x0dec, 0x0e4c }, + { 0x0ded, 0x0e4d }, + { 0x0df0, 0x0e50 }, + { 0x0df1, 0x0e51 }, + { 0x0df2, 0x0e52 }, + { 0x0df3, 0x0e53 }, + { 0x0df4, 0x0e54 }, + { 0x0df5, 0x0e55 }, + { 0x0df6, 0x0e56 }, + { 0x0df7, 0x0e57 }, + { 0x0df8, 0x0e58 }, + { 0x0df9, 0x0e59 }, + { 0x0ea1, 0x3131 }, + { 0x0ea2, 0x3132 }, + { 0x0ea3, 0x3133 }, + { 0x0ea4, 0x3134 }, + { 0x0ea5, 0x3135 }, + { 0x0ea6, 0x3136 }, + { 0x0ea7, 0x3137 }, + { 0x0ea8, 0x3138 }, + { 0x0ea9, 0x3139 }, + { 0x0eaa, 0x313a }, + { 0x0eab, 0x313b }, + { 0x0eac, 0x313c }, + { 0x0ead, 0x313d }, + { 0x0eae, 0x313e }, + { 0x0eaf, 0x313f }, + { 0x0eb0, 0x3140 }, + { 0x0eb1, 0x3141 }, + { 0x0eb2, 0x3142 }, + { 0x0eb3, 0x3143 }, + { 0x0eb4, 0x3144 }, + { 0x0eb5, 0x3145 }, + { 0x0eb6, 0x3146 }, + { 0x0eb7, 0x3147 }, + { 0x0eb8, 0x3148 }, + { 0x0eb9, 0x3149 }, + { 0x0eba, 0x314a }, + { 0x0ebb, 0x314b }, + { 0x0ebc, 0x314c }, + { 0x0ebd, 0x314d }, + { 0x0ebe, 0x314e }, + { 0x0ebf, 0x314f }, + { 0x0ec0, 0x3150 }, + { 0x0ec1, 0x3151 }, + { 0x0ec2, 0x3152 }, + { 0x0ec3, 0x3153 }, + { 0x0ec4, 0x3154 }, + { 0x0ec5, 0x3155 }, + { 0x0ec6, 0x3156 }, + { 0x0ec7, 0x3157 }, + { 0x0ec8, 0x3158 }, + { 0x0ec9, 0x3159 }, + { 0x0eca, 0x315a }, + { 0x0ecb, 0x315b }, + { 0x0ecc, 0x315c }, + { 0x0ecd, 0x315d }, + { 0x0ece, 0x315e }, + { 0x0ecf, 0x315f }, + { 0x0ed0, 0x3160 }, + { 0x0ed1, 0x3161 }, + { 0x0ed2, 0x3162 }, + { 0x0ed3, 0x3163 }, + { 0x0ed4, 0x11a8 }, + { 0x0ed5, 0x11a9 }, + { 0x0ed6, 0x11aa }, + { 0x0ed7, 0x11ab }, + { 0x0ed8, 0x11ac }, + { 0x0ed9, 0x11ad }, + { 0x0eda, 0x11ae }, + { 0x0edb, 0x11af }, + { 0x0edc, 0x11b0 }, + { 0x0edd, 0x11b1 }, + { 0x0ede, 0x11b2 }, + { 0x0edf, 0x11b3 }, + { 0x0ee0, 0x11b4 }, + { 0x0ee1, 0x11b5 }, + { 0x0ee2, 0x11b6 }, + { 0x0ee3, 0x11b7 }, + { 0x0ee4, 0x11b8 }, + { 0x0ee5, 0x11b9 }, + { 0x0ee6, 0x11ba }, + { 0x0ee7, 0x11bb }, + { 0x0ee8, 0x11bc }, + { 0x0ee9, 0x11bd }, + { 0x0eea, 0x11be }, + { 0x0eeb, 0x11bf }, + { 0x0eec, 0x11c0 }, + { 0x0eed, 0x11c1 }, + { 0x0eee, 0x11c2 }, + { 0x0eef, 0x316d }, + { 0x0ef0, 0x3171 }, + { 0x0ef1, 0x3178 }, + { 0x0ef2, 0x317f }, + { 0x0ef3, 0x3181 }, + { 0x0ef4, 0x3184 }, + { 0x0ef5, 0x3186 }, + { 0x0ef6, 0x318d }, + { 0x0ef7, 0x318e }, + { 0x0ef8, 0x11eb }, + { 0x0ef9, 0x11f0 }, + { 0x0efa, 0x11f9 }, + { 0x0eff, 0x20a9 }, + { 0x13a4, 0x20ac }, + { 0x13bc, 0x0152 }, + { 0x13bd, 0x0153 }, + { 0x13be, 0x0178 }, + { 0x20ac, 0x20ac }, + { 0xfe50, '`' }, + { 0xfe51, 0x00b4 }, + { 0xfe52, '^' }, + { 0xfe53, '~' }, + { 0xfe54, 0x00af }, + { 0xfe55, 0x02d8 }, + { 0xfe56, 0x02d9 }, + { 0xfe57, 0x00a8 }, + { 0xfe58, 0x02da }, + { 0xfe59, 0x02dd }, + { 0xfe5a, 0x02c7 }, + { 0xfe5b, 0x00b8 }, + { 0xfe5c, 0x02db }, + { 0xfe5d, 0x037a }, + { 0xfe5e, 0x309b }, + { 0xfe5f, 0x309c }, + { 0xfe63, '/' }, + { 0xfe64, 0x02bc }, + { 0xfe65, 0x02bd }, + { 0xfe66, 0x02f5 }, + { 0xfe67, 0x02f3 }, + { 0xfe68, 0x02cd }, + { 0xfe69, 0xa788 }, + { 0xfe6a, 0x02f7 }, + { 0xfe6e, ',' }, + { 0xfe6f, 0x00a4 }, + { 0xfe80, 'a' }, /* XK_dead_a */ + { 0xfe81, 'A' }, /* XK_dead_A */ + { 0xfe82, 'e' }, /* XK_dead_e */ + { 0xfe83, 'E' }, /* XK_dead_E */ + { 0xfe84, 'i' }, /* XK_dead_i */ + { 0xfe85, 'I' }, /* XK_dead_I */ + { 0xfe86, 'o' }, /* XK_dead_o */ + { 0xfe87, 'O' }, /* XK_dead_O */ + { 0xfe88, 'u' }, /* XK_dead_u */ + { 0xfe89, 'U' }, /* XK_dead_U */ + { 0xfe8a, 0x0259 }, + { 0xfe8b, 0x018f }, + { 0xfe8c, 0x00b5 }, + { 0xfe90, '_' }, + { 0xfe91, 0x02c8 }, + { 0xfe92, 0x02cc }, + { 0xff80 /*XKB_KEY_KP_Space*/, ' ' }, + { 0xff95 /*XKB_KEY_KP_7*/, 0x0037 }, + { 0xff96 /*XKB_KEY_KP_4*/, 0x0034 }, + { 0xff97 /*XKB_KEY_KP_8*/, 0x0038 }, + { 0xff98 /*XKB_KEY_KP_6*/, 0x0036 }, + { 0xff99 /*XKB_KEY_KP_2*/, 0x0032 }, + { 0xff9a /*XKB_KEY_KP_9*/, 0x0039 }, + { 0xff9b /*XKB_KEY_KP_3*/, 0x0033 }, + { 0xff9c /*XKB_KEY_KP_1*/, 0x0031 }, + { 0xff9d /*XKB_KEY_KP_5*/, 0x0035 }, + { 0xff9e /*XKB_KEY_KP_0*/, 0x0030 }, + { 0xffaa /*XKB_KEY_KP_Multiply*/, '*' }, + { 0xffab /*XKB_KEY_KP_Add*/, '+' }, + { 0xffac /*XKB_KEY_KP_Separator*/, ',' }, + { 0xffad /*XKB_KEY_KP_Subtract*/, '-' }, + { 0xffae /*XKB_KEY_KP_Decimal*/, '.' }, + { 0xffaf /*XKB_KEY_KP_Divide*/, '/' }, + { 0xffb0 /*XKB_KEY_KP_0*/, 0x0030 }, + { 0xffb1 /*XKB_KEY_KP_1*/, 0x0031 }, + { 0xffb2 /*XKB_KEY_KP_2*/, 0x0032 }, + { 0xffb3 /*XKB_KEY_KP_3*/, 0x0033 }, + { 0xffb4 /*XKB_KEY_KP_4*/, 0x0034 }, + { 0xffb5 /*XKB_KEY_KP_5*/, 0x0035 }, + { 0xffb6 /*XKB_KEY_KP_6*/, 0x0036 }, + { 0xffb7 /*XKB_KEY_KP_7*/, 0x0037 }, + { 0xffb8 /*XKB_KEY_KP_8*/, 0x0038 }, + { 0xffb9 /*XKB_KEY_KP_9*/, 0x0039 }, + { 0xffbd /*XKB_KEY_KP_Equal*/, '=' } +}; + +_SOKOL_PRIVATE int _sapp_x11_error_handler(Display* display, XErrorEvent* event) { + _SOKOL_UNUSED(display); + _sapp.x11.error_code = event->error_code; + return 0; +} + +_SOKOL_PRIVATE void _sapp_x11_grab_error_handler(void) { + _sapp.x11.error_code = Success; + XSetErrorHandler(_sapp_x11_error_handler); +} + +_SOKOL_PRIVATE void _sapp_x11_release_error_handler(void) { + XSync(_sapp.x11.display, False); + XSetErrorHandler(NULL); +} + +_SOKOL_PRIVATE void _sapp_x11_init_extensions(void) { + _sapp.x11.UTF8_STRING = XInternAtom(_sapp.x11.display, "UTF8_STRING", False); + _sapp.x11.WM_PROTOCOLS = XInternAtom(_sapp.x11.display, "WM_PROTOCOLS", False); + _sapp.x11.WM_DELETE_WINDOW = XInternAtom(_sapp.x11.display, "WM_DELETE_WINDOW", False); + _sapp.x11.WM_STATE = XInternAtom(_sapp.x11.display, "WM_STATE", False); + _sapp.x11.NET_WM_NAME = XInternAtom(_sapp.x11.display, "_NET_WM_NAME", False); + _sapp.x11.NET_WM_ICON_NAME = XInternAtom(_sapp.x11.display, "_NET_WM_ICON_NAME", False); + _sapp.x11.NET_WM_ICON = XInternAtom(_sapp.x11.display, "_NET_WM_ICON", False); + _sapp.x11.NET_WM_STATE = XInternAtom(_sapp.x11.display, "_NET_WM_STATE", False); + _sapp.x11.NET_WM_STATE_FULLSCREEN = XInternAtom(_sapp.x11.display, "_NET_WM_STATE_FULLSCREEN", False); + if (_sapp.drop.enabled) { + _sapp.x11.xdnd.XdndAware = XInternAtom(_sapp.x11.display, "XdndAware", False); + _sapp.x11.xdnd.XdndEnter = XInternAtom(_sapp.x11.display, "XdndEnter", False); + _sapp.x11.xdnd.XdndPosition = XInternAtom(_sapp.x11.display, "XdndPosition", False); + _sapp.x11.xdnd.XdndStatus = XInternAtom(_sapp.x11.display, "XdndStatus", False); + _sapp.x11.xdnd.XdndActionCopy = XInternAtom(_sapp.x11.display, "XdndActionCopy", False); + _sapp.x11.xdnd.XdndDrop = XInternAtom(_sapp.x11.display, "XdndDrop", False); + _sapp.x11.xdnd.XdndFinished = XInternAtom(_sapp.x11.display, "XdndFinished", False); + _sapp.x11.xdnd.XdndSelection = XInternAtom(_sapp.x11.display, "XdndSelection", False); + _sapp.x11.xdnd.XdndTypeList = XInternAtom(_sapp.x11.display, "XdndTypeList", False); + _sapp.x11.xdnd.text_uri_list = XInternAtom(_sapp.x11.display, "text/uri-list", False); + } + + /* check Xi extension for raw mouse input */ + if (XQueryExtension(_sapp.x11.display, "XInputExtension", &_sapp.x11.xi.major_opcode, &_sapp.x11.xi.event_base, &_sapp.x11.xi.error_base)) { + _sapp.x11.xi.major = 2; + _sapp.x11.xi.minor = 0; + if (XIQueryVersion(_sapp.x11.display, &_sapp.x11.xi.major, &_sapp.x11.xi.minor) == Success) { + _sapp.x11.xi.available = true; + } + } +} + +_SOKOL_PRIVATE void _sapp_x11_query_system_dpi(void) { + /* from GLFW: + + NOTE: Default to the display-wide DPI as we don't currently have a policy + for which monitor a window is considered to be on + + _sapp.x11.dpi = DisplayWidth(_sapp.x11.display, _sapp.x11.screen) * + 25.4f / DisplayWidthMM(_sapp.x11.display, _sapp.x11.screen); + + NOTE: Basing the scale on Xft.dpi where available should provide the most + consistent user experience (matches Qt, Gtk, etc), although not + always the most accurate one + */ + bool dpi_ok = false; + char* rms = XResourceManagerString(_sapp.x11.display); + if (rms) { + XrmDatabase db = XrmGetStringDatabase(rms); + if (db) { + XrmValue value; + char* type = NULL; + if (XrmGetResource(db, "Xft.dpi", "Xft.Dpi", &type, &value)) { + if (type && strcmp(type, "String") == 0) { + _sapp.x11.dpi = atof(value.addr); + dpi_ok = true; + } + } + XrmDestroyDatabase(db); + } + } + // fallback if querying DPI had failed: assume the standard DPI 96.0f + if (!dpi_ok) { + _sapp.x11.dpi = 96.0f; + _SAPP_WARN(LINUX_X11_QUERY_SYSTEM_DPI_FAILED); + } +} + +#if defined(_SAPP_GLX) + +_SOKOL_PRIVATE bool _sapp_glx_has_ext(const char* ext, const char* extensions) { + SOKOL_ASSERT(ext); + const char* start = extensions; + while (true) { + const char* where = strstr(start, ext); + if (!where) { + return false; + } + const char* terminator = where + strlen(ext); + if ((where == start) || (*(where - 1) == ' ')) { + if (*terminator == ' ' || *terminator == '\0') { + break; + } + } + start = terminator; + } + return true; +} + +_SOKOL_PRIVATE bool _sapp_glx_extsupported(const char* ext, const char* extensions) { + if (extensions) { + return _sapp_glx_has_ext(ext, extensions); + } + else { + return false; + } +} + +_SOKOL_PRIVATE void* _sapp_glx_getprocaddr(const char* procname) +{ + if (_sapp.glx.GetProcAddress) { + return (void*) _sapp.glx.GetProcAddress(procname); + } + else if (_sapp.glx.GetProcAddressARB) { + return (void*) _sapp.glx.GetProcAddressARB(procname); + } + else { + return dlsym(_sapp.glx.libgl, procname); + } +} + +_SOKOL_PRIVATE void _sapp_glx_init() { + const char* sonames[] = { "libGL.so.1", "libGL.so", 0 }; + for (int i = 0; sonames[i]; i++) { + _sapp.glx.libgl = dlopen(sonames[i], RTLD_LAZY|RTLD_GLOBAL); + if (_sapp.glx.libgl) { + break; + } + } + if (!_sapp.glx.libgl) { + _SAPP_PANIC(LINUX_GLX_LOAD_LIBGL_FAILED); + } + _sapp.glx.GetFBConfigs = (PFNGLXGETFBCONFIGSPROC) dlsym(_sapp.glx.libgl, "glXGetFBConfigs"); + _sapp.glx.GetFBConfigAttrib = (PFNGLXGETFBCONFIGATTRIBPROC) dlsym(_sapp.glx.libgl, "glXGetFBConfigAttrib"); + _sapp.glx.GetClientString = (PFNGLXGETCLIENTSTRINGPROC) dlsym(_sapp.glx.libgl, "glXGetClientString"); + _sapp.glx.QueryExtension = (PFNGLXQUERYEXTENSIONPROC) dlsym(_sapp.glx.libgl, "glXQueryExtension"); + _sapp.glx.QueryVersion = (PFNGLXQUERYVERSIONPROC) dlsym(_sapp.glx.libgl, "glXQueryVersion"); + _sapp.glx.DestroyContext = (PFNGLXDESTROYCONTEXTPROC) dlsym(_sapp.glx.libgl, "glXDestroyContext"); + _sapp.glx.MakeCurrent = (PFNGLXMAKECURRENTPROC) dlsym(_sapp.glx.libgl, "glXMakeCurrent"); + _sapp.glx.SwapBuffers = (PFNGLXSWAPBUFFERSPROC) dlsym(_sapp.glx.libgl, "glXSwapBuffers"); + _sapp.glx.QueryExtensionsString = (PFNGLXQUERYEXTENSIONSSTRINGPROC) dlsym(_sapp.glx.libgl, "glXQueryExtensionsString"); + _sapp.glx.CreateWindow = (PFNGLXCREATEWINDOWPROC) dlsym(_sapp.glx.libgl, "glXCreateWindow"); + _sapp.glx.DestroyWindow = (PFNGLXDESTROYWINDOWPROC) dlsym(_sapp.glx.libgl, "glXDestroyWindow"); + _sapp.glx.GetProcAddress = (PFNGLXGETPROCADDRESSPROC) dlsym(_sapp.glx.libgl, "glXGetProcAddress"); + _sapp.glx.GetProcAddressARB = (PFNGLXGETPROCADDRESSPROC) dlsym(_sapp.glx.libgl, "glXGetProcAddressARB"); + _sapp.glx.GetVisualFromFBConfig = (PFNGLXGETVISUALFROMFBCONFIGPROC) dlsym(_sapp.glx.libgl, "glXGetVisualFromFBConfig"); + if (!_sapp.glx.GetFBConfigs || + !_sapp.glx.GetFBConfigAttrib || + !_sapp.glx.GetClientString || + !_sapp.glx.QueryExtension || + !_sapp.glx.QueryVersion || + !_sapp.glx.DestroyContext || + !_sapp.glx.MakeCurrent || + !_sapp.glx.SwapBuffers || + !_sapp.glx.QueryExtensionsString || + !_sapp.glx.CreateWindow || + !_sapp.glx.DestroyWindow || + !_sapp.glx.GetProcAddress || + !_sapp.glx.GetProcAddressARB || + !_sapp.glx.GetVisualFromFBConfig) + { + _SAPP_PANIC(LINUX_GLX_LOAD_ENTRY_POINTS_FAILED); + } + + if (!_sapp.glx.QueryExtension(_sapp.x11.display, &_sapp.glx.error_base, &_sapp.glx.event_base)) { + _SAPP_PANIC(LINUX_GLX_EXTENSION_NOT_FOUND); + } + if (!_sapp.glx.QueryVersion(_sapp.x11.display, &_sapp.glx.major, &_sapp.glx.minor)) { + _SAPP_PANIC(LINUX_GLX_QUERY_VERSION_FAILED); + } + if (_sapp.glx.major == 1 && _sapp.glx.minor < 3) { + _SAPP_PANIC(LINUX_GLX_VERSION_TOO_LOW); + } + const char* exts = _sapp.glx.QueryExtensionsString(_sapp.x11.display, _sapp.x11.screen); + if (_sapp_glx_extsupported("GLX_EXT_swap_control", exts)) { + _sapp.glx.SwapIntervalEXT = (PFNGLXSWAPINTERVALEXTPROC) _sapp_glx_getprocaddr("glXSwapIntervalEXT"); + _sapp.glx.EXT_swap_control = 0 != _sapp.glx.SwapIntervalEXT; + } + if (_sapp_glx_extsupported("GLX_MESA_swap_control", exts)) { + _sapp.glx.SwapIntervalMESA = (PFNGLXSWAPINTERVALMESAPROC) _sapp_glx_getprocaddr("glXSwapIntervalMESA"); + _sapp.glx.MESA_swap_control = 0 != _sapp.glx.SwapIntervalMESA; + } + _sapp.glx.ARB_multisample = _sapp_glx_extsupported("GLX_ARB_multisample", exts); + if (_sapp_glx_extsupported("GLX_ARB_create_context", exts)) { + _sapp.glx.CreateContextAttribsARB = (PFNGLXCREATECONTEXTATTRIBSARBPROC) _sapp_glx_getprocaddr("glXCreateContextAttribsARB"); + _sapp.glx.ARB_create_context = 0 != _sapp.glx.CreateContextAttribsARB; + } + _sapp.glx.ARB_create_context_profile = _sapp_glx_extsupported("GLX_ARB_create_context_profile", exts); +} + +_SOKOL_PRIVATE int _sapp_glx_attrib(GLXFBConfig fbconfig, int attrib) { + int value; + _sapp.glx.GetFBConfigAttrib(_sapp.x11.display, fbconfig, attrib, &value); + return value; +} + +_SOKOL_PRIVATE GLXFBConfig _sapp_glx_choosefbconfig() { + GLXFBConfig* native_configs; + _sapp_gl_fbconfig* usable_configs; + const _sapp_gl_fbconfig* closest; + int i, native_count, usable_count; + const char* vendor; + bool trust_window_bit = true; + + /* HACK: This is a (hopefully temporary) workaround for Chromium + (VirtualBox GL) not setting the window bit on any GLXFBConfigs + */ + vendor = _sapp.glx.GetClientString(_sapp.x11.display, GLX_VENDOR); + if (vendor && strcmp(vendor, "Chromium") == 0) { + trust_window_bit = false; + } + + native_configs = _sapp.glx.GetFBConfigs(_sapp.x11.display, _sapp.x11.screen, &native_count); + if (!native_configs || !native_count) { + _SAPP_PANIC(LINUX_GLX_NO_GLXFBCONFIGS); + } + + usable_configs = (_sapp_gl_fbconfig*) _sapp_malloc_clear((size_t)native_count * sizeof(_sapp_gl_fbconfig)); + usable_count = 0; + for (i = 0; i < native_count; i++) { + const GLXFBConfig n = native_configs[i]; + _sapp_gl_fbconfig* u = usable_configs + usable_count; + _sapp_gl_init_fbconfig(u); + + /* Only consider RGBA GLXFBConfigs */ + if (0 == (_sapp_glx_attrib(n, GLX_RENDER_TYPE) & GLX_RGBA_BIT)) { + continue; + } + /* Only consider window GLXFBConfigs */ + if (0 == (_sapp_glx_attrib(n, GLX_DRAWABLE_TYPE) & GLX_WINDOW_BIT)) { + if (trust_window_bit) { + continue; + } + } + u->red_bits = _sapp_glx_attrib(n, GLX_RED_SIZE); + u->green_bits = _sapp_glx_attrib(n, GLX_GREEN_SIZE); + u->blue_bits = _sapp_glx_attrib(n, GLX_BLUE_SIZE); + u->alpha_bits = _sapp_glx_attrib(n, GLX_ALPHA_SIZE); + u->depth_bits = _sapp_glx_attrib(n, GLX_DEPTH_SIZE); + u->stencil_bits = _sapp_glx_attrib(n, GLX_STENCIL_SIZE); + if (_sapp_glx_attrib(n, GLX_DOUBLEBUFFER)) { + u->doublebuffer = true; + } + if (_sapp.glx.ARB_multisample) { + u->samples = _sapp_glx_attrib(n, GLX_SAMPLES); + } + u->handle = (uintptr_t) n; + usable_count++; + } + _sapp_gl_fbconfig desired; + _sapp_gl_init_fbconfig(&desired); + desired.red_bits = 8; + desired.green_bits = 8; + desired.blue_bits = 8; + desired.alpha_bits = 8; + desired.depth_bits = 24; + desired.stencil_bits = 8; + desired.doublebuffer = true; + desired.samples = _sapp.sample_count > 1 ? _sapp.sample_count : 0; + closest = _sapp_gl_choose_fbconfig(&desired, usable_configs, usable_count); + GLXFBConfig result = 0; + if (closest) { + result = (GLXFBConfig) closest->handle; + } + XFree(native_configs); + _sapp_free(usable_configs); + return result; +} + +_SOKOL_PRIVATE void _sapp_glx_choose_visual(Visual** visual, int* depth) { + GLXFBConfig native = _sapp_glx_choosefbconfig(); + if (0 == native) { + _SAPP_PANIC(LINUX_GLX_NO_SUITABLE_GLXFBCONFIG); + } + XVisualInfo* result = _sapp.glx.GetVisualFromFBConfig(_sapp.x11.display, native); + if (!result) { + _SAPP_PANIC(LINUX_GLX_GET_VISUAL_FROM_FBCONFIG_FAILED); + } + *visual = result->visual; + *depth = result->depth; + XFree(result); +} + +_SOKOL_PRIVATE void _sapp_glx_create_context(void) { + GLXFBConfig native = _sapp_glx_choosefbconfig(); + if (0 == native){ + _SAPP_PANIC(LINUX_GLX_NO_SUITABLE_GLXFBCONFIG); + } + if (!(_sapp.glx.ARB_create_context && _sapp.glx.ARB_create_context_profile)) { + _SAPP_PANIC(LINUX_GLX_REQUIRED_EXTENSIONS_MISSING); + } + _sapp_x11_grab_error_handler(); + const int attribs[] = { + GLX_CONTEXT_MAJOR_VERSION_ARB, _sapp.desc.gl_major_version, + GLX_CONTEXT_MINOR_VERSION_ARB, _sapp.desc.gl_minor_version, + GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB, + GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB, + 0, 0 + }; + _sapp.glx.ctx = _sapp.glx.CreateContextAttribsARB(_sapp.x11.display, native, NULL, True, attribs); + if (!_sapp.glx.ctx) { + _SAPP_PANIC(LINUX_GLX_CREATE_CONTEXT_FAILED); + } + _sapp_x11_release_error_handler(); + _sapp.glx.window = _sapp.glx.CreateWindow(_sapp.x11.display, native, _sapp.x11.window, NULL); + if (!_sapp.glx.window) { + _SAPP_PANIC(LINUX_GLX_CREATE_WINDOW_FAILED); + } +} + +_SOKOL_PRIVATE void _sapp_glx_destroy_context(void) { + if (_sapp.glx.window) { + _sapp.glx.DestroyWindow(_sapp.x11.display, _sapp.glx.window); + _sapp.glx.window = 0; + } + if (_sapp.glx.ctx) { + _sapp.glx.DestroyContext(_sapp.x11.display, _sapp.glx.ctx); + _sapp.glx.ctx = 0; + } +} + +_SOKOL_PRIVATE void _sapp_glx_make_current(void) { + _sapp.glx.MakeCurrent(_sapp.x11.display, _sapp.glx.window, _sapp.glx.ctx); +} + +_SOKOL_PRIVATE void _sapp_glx_swap_buffers(void) { + _sapp.glx.SwapBuffers(_sapp.x11.display, _sapp.glx.window); +} + +_SOKOL_PRIVATE void _sapp_glx_swapinterval(int interval) { + _sapp_glx_make_current(); + if (_sapp.glx.EXT_swap_control) { + _sapp.glx.SwapIntervalEXT(_sapp.x11.display, _sapp.glx.window, interval); + } + else if (_sapp.glx.MESA_swap_control) { + _sapp.glx.SwapIntervalMESA(interval); + } +} + +#endif /* _SAPP_GLX */ + +_SOKOL_PRIVATE void _sapp_x11_send_event(Atom type, int a, int b, int c, int d, int e) { + XEvent event; + _sapp_clear(&event, sizeof(event)); + + event.type = ClientMessage; + event.xclient.window = _sapp.x11.window; + event.xclient.format = 32; + event.xclient.message_type = type; + event.xclient.data.l[0] = a; + event.xclient.data.l[1] = b; + event.xclient.data.l[2] = c; + event.xclient.data.l[3] = d; + event.xclient.data.l[4] = e; + + XSendEvent(_sapp.x11.display, _sapp.x11.root, + False, + SubstructureNotifyMask | SubstructureRedirectMask, + &event); +} + +_SOKOL_PRIVATE void _sapp_x11_query_window_size(void) { + XWindowAttributes attribs; + XGetWindowAttributes(_sapp.x11.display, _sapp.x11.window, &attribs); + _sapp.window_width = attribs.width; + _sapp.window_height = attribs.height; + _sapp.framebuffer_width = _sapp.window_width; + _sapp.framebuffer_height = _sapp.window_height; +} + +_SOKOL_PRIVATE void _sapp_x11_set_fullscreen(bool enable) { + /* NOTE: this function must be called after XMapWindow (which happens in _sapp_x11_show_window()) */ + if (_sapp.x11.NET_WM_STATE && _sapp.x11.NET_WM_STATE_FULLSCREEN) { + if (enable) { + const int _NET_WM_STATE_ADD = 1; + _sapp_x11_send_event(_sapp.x11.NET_WM_STATE, + _NET_WM_STATE_ADD, + _sapp.x11.NET_WM_STATE_FULLSCREEN, + 0, 1, 0); + } + else { + const int _NET_WM_STATE_REMOVE = 0; + _sapp_x11_send_event(_sapp.x11.NET_WM_STATE, + _NET_WM_STATE_REMOVE, + _sapp.x11.NET_WM_STATE_FULLSCREEN, + 0, 1, 0); + } + } + XFlush(_sapp.x11.display); +} + +_SOKOL_PRIVATE void _sapp_x11_create_hidden_cursor(void) { + SOKOL_ASSERT(0 == _sapp.x11.hidden_cursor); + const int w = 16; + const int h = 16; + XcursorImage* img = XcursorImageCreate(w, h); + SOKOL_ASSERT(img && (img->width == 16) && (img->height == 16) && img->pixels); + img->xhot = 0; + img->yhot = 0; + const size_t num_bytes = (size_t)(w * h) * sizeof(XcursorPixel); + _sapp_clear(img->pixels, num_bytes); + _sapp.x11.hidden_cursor = XcursorImageLoadCursor(_sapp.x11.display, img); + XcursorImageDestroy(img); +} + + _SOKOL_PRIVATE void _sapp_x11_create_standard_cursor(sapp_mouse_cursor cursor, const char* name, const char* theme, int size, uint32_t fallback_native) { + SOKOL_ASSERT((cursor >= 0) && (cursor < _SAPP_MOUSECURSOR_NUM)); + SOKOL_ASSERT(_sapp.x11.display); + if (theme) { + XcursorImage* img = XcursorLibraryLoadImage(name, theme, size); + if (img) { + _sapp.x11.cursors[cursor] = XcursorImageLoadCursor(_sapp.x11.display, img); + XcursorImageDestroy(img); + } + } + if (0 == _sapp.x11.cursors[cursor]) { + _sapp.x11.cursors[cursor] = XCreateFontCursor(_sapp.x11.display, fallback_native); + } +} + +_SOKOL_PRIVATE void _sapp_x11_create_cursors(void) { + SOKOL_ASSERT(_sapp.x11.display); + const char* cursor_theme = XcursorGetTheme(_sapp.x11.display); + const int size = XcursorGetDefaultSize(_sapp.x11.display); + _sapp_x11_create_standard_cursor(SAPP_MOUSECURSOR_ARROW, "default", cursor_theme, size, XC_left_ptr); + _sapp_x11_create_standard_cursor(SAPP_MOUSECURSOR_IBEAM, "text", cursor_theme, size, XC_xterm); + _sapp_x11_create_standard_cursor(SAPP_MOUSECURSOR_CROSSHAIR, "crosshair", cursor_theme, size, XC_crosshair); + _sapp_x11_create_standard_cursor(SAPP_MOUSECURSOR_POINTING_HAND, "pointer", cursor_theme, size, XC_hand2); + _sapp_x11_create_standard_cursor(SAPP_MOUSECURSOR_RESIZE_EW, "ew-resize", cursor_theme, size, XC_sb_h_double_arrow); + _sapp_x11_create_standard_cursor(SAPP_MOUSECURSOR_RESIZE_NS, "ns-resize", cursor_theme, size, XC_sb_v_double_arrow); + _sapp_x11_create_standard_cursor(SAPP_MOUSECURSOR_RESIZE_NWSE, "nwse-resize", cursor_theme, size, 0); + _sapp_x11_create_standard_cursor(SAPP_MOUSECURSOR_RESIZE_NESW, "nesw-resize", cursor_theme, size, 0); + _sapp_x11_create_standard_cursor(SAPP_MOUSECURSOR_RESIZE_ALL, "all-scroll", cursor_theme, size, XC_fleur); + _sapp_x11_create_standard_cursor(SAPP_MOUSECURSOR_NOT_ALLOWED, "no-allowed", cursor_theme, size, 0); + _sapp_x11_create_hidden_cursor(); +} + +_SOKOL_PRIVATE void _sapp_x11_destroy_cursors(void) { + SOKOL_ASSERT(_sapp.x11.display); + if (_sapp.x11.hidden_cursor) { + XFreeCursor(_sapp.x11.display, _sapp.x11.hidden_cursor); + _sapp.x11.hidden_cursor = 0; + } + for (int i = 0; i < _SAPP_MOUSECURSOR_NUM; i++) { + if (_sapp.x11.cursors[i]) { + XFreeCursor(_sapp.x11.display, _sapp.x11.cursors[i]); + _sapp.x11.cursors[i] = 0; + } + } +} + +_SOKOL_PRIVATE void _sapp_x11_toggle_fullscreen(void) { + _sapp.fullscreen = !_sapp.fullscreen; + _sapp_x11_set_fullscreen(_sapp.fullscreen); + _sapp_x11_query_window_size(); +} + +_SOKOL_PRIVATE void _sapp_x11_update_cursor(sapp_mouse_cursor cursor, bool shown) { + SOKOL_ASSERT((cursor >= 0) && (cursor < _SAPP_MOUSECURSOR_NUM)); + if (shown) { + if (_sapp.x11.cursors[cursor]) { + XDefineCursor(_sapp.x11.display, _sapp.x11.window, _sapp.x11.cursors[cursor]); + } + else { + XUndefineCursor(_sapp.x11.display, _sapp.x11.window); + } + } + else { + XDefineCursor(_sapp.x11.display, _sapp.x11.window, _sapp.x11.hidden_cursor); + } + XFlush(_sapp.x11.display); +} + +_SOKOL_PRIVATE void _sapp_x11_lock_mouse(bool lock) { + if (lock == _sapp.mouse.locked) { + return; + } + _sapp.mouse.dx = 0.0f; + _sapp.mouse.dy = 0.0f; + _sapp.mouse.locked = lock; + if (_sapp.mouse.locked) { + if (_sapp.x11.xi.available) { + XIEventMask em; + unsigned char mask[XIMaskLen(XI_RawMotion)] = { 0 }; // XIMaskLen is a macro + em.deviceid = XIAllMasterDevices; + em.mask_len = sizeof(mask); + em.mask = mask; + XISetMask(mask, XI_RawMotion); + XISelectEvents(_sapp.x11.display, _sapp.x11.root, &em, 1); + } + XGrabPointer(_sapp.x11.display, // display + _sapp.x11.window, // grab_window + True, // owner_events + ButtonPressMask | ButtonReleaseMask | PointerMotionMask, // event_mask + GrabModeAsync, // pointer_mode + GrabModeAsync, // keyboard_mode + _sapp.x11.window, // confine_to + _sapp.x11.hidden_cursor, // cursor + CurrentTime); // time + } + else { + if (_sapp.x11.xi.available) { + XIEventMask em; + unsigned char mask[] = { 0 }; + em.deviceid = XIAllMasterDevices; + em.mask_len = sizeof(mask); + em.mask = mask; + XISelectEvents(_sapp.x11.display, _sapp.x11.root, &em, 1); + } + XWarpPointer(_sapp.x11.display, None, _sapp.x11.window, 0, 0, 0, 0, (int) _sapp.mouse.x, _sapp.mouse.y); + XUngrabPointer(_sapp.x11.display, CurrentTime); + } + XFlush(_sapp.x11.display); +} + +_SOKOL_PRIVATE void _sapp_x11_update_window_title(void) { + Xutf8SetWMProperties(_sapp.x11.display, + _sapp.x11.window, + _sapp.window_title, _sapp.window_title, + NULL, 0, NULL, NULL, NULL); + XChangeProperty(_sapp.x11.display, _sapp.x11.window, + _sapp.x11.NET_WM_NAME, _sapp.x11.UTF8_STRING, 8, + PropModeReplace, + (unsigned char*)_sapp.window_title, + strlen(_sapp.window_title)); + XChangeProperty(_sapp.x11.display, _sapp.x11.window, + _sapp.x11.NET_WM_ICON_NAME, _sapp.x11.UTF8_STRING, 8, + PropModeReplace, + (unsigned char*)_sapp.window_title, + strlen(_sapp.window_title)); + XFlush(_sapp.x11.display); +} + +_SOKOL_PRIVATE void _sapp_x11_set_icon(const sapp_icon_desc* icon_desc, int num_images) { + SOKOL_ASSERT((num_images > 0) && (num_images <= SAPP_MAX_ICONIMAGES)); + int long_count = 0; + for (int i = 0; i < num_images; i++) { + const sapp_image_desc* img_desc = &icon_desc->images[i]; + long_count += 2 + (img_desc->width * img_desc->height); + } + long* icon_data = (long*) _sapp_malloc_clear((size_t)long_count * sizeof(long)); + SOKOL_ASSERT(icon_data); + long* dst = icon_data; + for (int img_index = 0; img_index < num_images; img_index++) { + const sapp_image_desc* img_desc = &icon_desc->images[img_index]; + const uint8_t* src = (const uint8_t*) img_desc->pixels.ptr; + *dst++ = img_desc->width; + *dst++ = img_desc->height; + const int num_pixels = img_desc->width * img_desc->height; + for (int pixel_index = 0; pixel_index < num_pixels; pixel_index++) { + *dst++ = ((long)(src[pixel_index * 4 + 0]) << 16) | + ((long)(src[pixel_index * 4 + 1]) << 8) | + ((long)(src[pixel_index * 4 + 2]) << 0) | + ((long)(src[pixel_index * 4 + 3]) << 24); + } + } + XChangeProperty(_sapp.x11.display, _sapp.x11.window, + _sapp.x11.NET_WM_ICON, + XA_CARDINAL, 32, + PropModeReplace, + (unsigned char*)icon_data, + long_count); + _sapp_free(icon_data); + XFlush(_sapp.x11.display); +} + +_SOKOL_PRIVATE void _sapp_x11_create_window(Visual* visual, int depth) { + _sapp.x11.colormap = XCreateColormap(_sapp.x11.display, _sapp.x11.root, visual, AllocNone); + XSetWindowAttributes wa; + _sapp_clear(&wa, sizeof(wa)); + const uint32_t wamask = CWBorderPixel | CWColormap | CWEventMask; + wa.colormap = _sapp.x11.colormap; + wa.border_pixel = 0; + wa.event_mask = StructureNotifyMask | KeyPressMask | KeyReleaseMask | + PointerMotionMask | ButtonPressMask | ButtonReleaseMask | + ExposureMask | FocusChangeMask | VisibilityChangeMask | + EnterWindowMask | LeaveWindowMask | PropertyChangeMask; + + int display_width = DisplayWidth(_sapp.x11.display, _sapp.x11.screen); + int display_height = DisplayHeight(_sapp.x11.display, _sapp.x11.screen); + int window_width = _sapp.window_width; + int window_height = _sapp.window_height; + if (0 == window_width) { + window_width = (display_width * 4) / 5; + } + if (0 == window_height) { + window_height = (display_height * 4) / 5; + } + int window_xpos = (display_width - window_width) / 2; + int window_ypos = (display_height - window_height) / 2; + if (window_xpos < 0) { + window_xpos = 0; + } + if (window_ypos < 0) { + window_ypos = 0; + } + _sapp_x11_grab_error_handler(); + _sapp.x11.window = XCreateWindow(_sapp.x11.display, + _sapp.x11.root, + window_xpos, + window_ypos, + (uint32_t)window_width, + (uint32_t)window_height, + 0, /* border width */ + depth, /* color depth */ + InputOutput, + visual, + wamask, + &wa); + _sapp_x11_release_error_handler(); + if (!_sapp.x11.window) { + _SAPP_PANIC(LINUX_X11_CREATE_WINDOW_FAILED); + } + Atom protocols[] = { + _sapp.x11.WM_DELETE_WINDOW + }; + XSetWMProtocols(_sapp.x11.display, _sapp.x11.window, protocols, 1); + + XSizeHints* hints = XAllocSizeHints(); + hints->flags = (PWinGravity | PPosition | PSize); + hints->win_gravity = StaticGravity; + hints->x = window_xpos; + hints->y = window_ypos; + hints->width = window_width; + hints->height = window_height; + XSetWMNormalHints(_sapp.x11.display, _sapp.x11.window, hints); + XFree(hints); + + /* announce support for drag'n'drop */ + if (_sapp.drop.enabled) { + const Atom version = _SAPP_X11_XDND_VERSION; + XChangeProperty(_sapp.x11.display, _sapp.x11.window, _sapp.x11.xdnd.XdndAware, XA_ATOM, 32, PropModeReplace, (unsigned char*) &version, 1); + } + _sapp_x11_update_window_title(); + _sapp_x11_query_window_size(); +} + +_SOKOL_PRIVATE void _sapp_x11_destroy_window(void) { + if (_sapp.x11.window) { + XUnmapWindow(_sapp.x11.display, _sapp.x11.window); + XDestroyWindow(_sapp.x11.display, _sapp.x11.window); + _sapp.x11.window = 0; + } + if (_sapp.x11.colormap) { + XFreeColormap(_sapp.x11.display, _sapp.x11.colormap); + _sapp.x11.colormap = 0; + } + XFlush(_sapp.x11.display); +} + +_SOKOL_PRIVATE bool _sapp_x11_window_visible(void) { + XWindowAttributes wa; + XGetWindowAttributes(_sapp.x11.display, _sapp.x11.window, &wa); + return wa.map_state == IsViewable; +} + +_SOKOL_PRIVATE void _sapp_x11_show_window(void) { + if (!_sapp_x11_window_visible()) { + XMapWindow(_sapp.x11.display, _sapp.x11.window); + XRaiseWindow(_sapp.x11.display, _sapp.x11.window); + XFlush(_sapp.x11.display); + } +} + +_SOKOL_PRIVATE void _sapp_x11_hide_window(void) { + XUnmapWindow(_sapp.x11.display, _sapp.x11.window); + XFlush(_sapp.x11.display); +} + +_SOKOL_PRIVATE unsigned long _sapp_x11_get_window_property(Window window, Atom property, Atom type, unsigned char** value) { + Atom actualType; + int actualFormat; + unsigned long itemCount, bytesAfter; + XGetWindowProperty(_sapp.x11.display, + window, + property, + 0, + LONG_MAX, + False, + type, + &actualType, + &actualFormat, + &itemCount, + &bytesAfter, + value); + return itemCount; +} + +_SOKOL_PRIVATE int _sapp_x11_get_window_state(void) { + int result = WithdrawnState; + struct { + CARD32 state; + Window icon; + } *state = NULL; + + if (_sapp_x11_get_window_property(_sapp.x11.window, _sapp.x11.WM_STATE, _sapp.x11.WM_STATE, (unsigned char**)&state) >= 2) { + result = (int)state->state; + } + if (state) { + XFree(state); + } + return result; +} + +_SOKOL_PRIVATE uint32_t _sapp_x11_key_modifier_bit(sapp_keycode key) { + switch (key) { + case SAPP_KEYCODE_LEFT_SHIFT: + case SAPP_KEYCODE_RIGHT_SHIFT: + return SAPP_MODIFIER_SHIFT; + case SAPP_KEYCODE_LEFT_CONTROL: + case SAPP_KEYCODE_RIGHT_CONTROL: + return SAPP_MODIFIER_CTRL; + case SAPP_KEYCODE_LEFT_ALT: + case SAPP_KEYCODE_RIGHT_ALT: + return SAPP_MODIFIER_ALT; + case SAPP_KEYCODE_LEFT_SUPER: + case SAPP_KEYCODE_RIGHT_SUPER: + return SAPP_MODIFIER_SUPER; + default: + return 0; + } +} + +_SOKOL_PRIVATE uint32_t _sapp_x11_button_modifier_bit(sapp_mousebutton btn) { + switch (btn) { + case SAPP_MOUSEBUTTON_LEFT: return SAPP_MODIFIER_LMB; + case SAPP_MOUSEBUTTON_RIGHT: return SAPP_MODIFIER_RMB; + case SAPP_MOUSEBUTTON_MIDDLE: return SAPP_MODIFIER_MMB; + default: return 0; + } +} + +_SOKOL_PRIVATE uint32_t _sapp_x11_mods(uint32_t x11_mods) { + uint32_t mods = 0; + if (x11_mods & ShiftMask) { + mods |= SAPP_MODIFIER_SHIFT; + } + if (x11_mods & ControlMask) { + mods |= SAPP_MODIFIER_CTRL; + } + if (x11_mods & Mod1Mask) { + mods |= SAPP_MODIFIER_ALT; + } + if (x11_mods & Mod4Mask) { + mods |= SAPP_MODIFIER_SUPER; + } + if (x11_mods & Button1Mask) { + mods |= SAPP_MODIFIER_LMB; + } + if (x11_mods & Button2Mask) { + mods |= SAPP_MODIFIER_MMB; + } + if (x11_mods & Button3Mask) { + mods |= SAPP_MODIFIER_RMB; + } + return mods; +} + +_SOKOL_PRIVATE void _sapp_x11_app_event(sapp_event_type type) { + if (_sapp_events_enabled()) { + _sapp_init_event(type); + _sapp_call_event(&_sapp.event); + } +} + +_SOKOL_PRIVATE sapp_mousebutton _sapp_x11_translate_button(const XEvent* event) { + switch (event->xbutton.button) { + case Button1: return SAPP_MOUSEBUTTON_LEFT; + case Button2: return SAPP_MOUSEBUTTON_MIDDLE; + case Button3: return SAPP_MOUSEBUTTON_RIGHT; + default: return SAPP_MOUSEBUTTON_INVALID; + } +} + +_SOKOL_PRIVATE void _sapp_x11_mouse_update(int x, int y) { + if (!_sapp.mouse.locked) { + const float new_x = (float) x; + const float new_y = (float) y; + if (_sapp.mouse.pos_valid) { + _sapp.mouse.dx = new_x - _sapp.mouse.x; + _sapp.mouse.dy = new_y - _sapp.mouse.y; + } + _sapp.mouse.x = new_x; + _sapp.mouse.y = new_y; + _sapp.mouse.pos_valid = true; + } +} + +_SOKOL_PRIVATE void _sapp_x11_mouse_event(sapp_event_type type, sapp_mousebutton btn, uint32_t mods) { + if (_sapp_events_enabled()) { + _sapp_init_event(type); + _sapp.event.mouse_button = btn; + _sapp.event.modifiers = mods; + _sapp_call_event(&_sapp.event); + } +} + +_SOKOL_PRIVATE void _sapp_x11_scroll_event(float x, float y, uint32_t mods) { + if (_sapp_events_enabled()) { + _sapp_init_event(SAPP_EVENTTYPE_MOUSE_SCROLL); + _sapp.event.modifiers = mods; + _sapp.event.scroll_x = x; + _sapp.event.scroll_y = y; + _sapp_call_event(&_sapp.event); + } +} + +_SOKOL_PRIVATE void _sapp_x11_key_event(sapp_event_type type, sapp_keycode key, bool repeat, uint32_t mods) { + if (_sapp_events_enabled()) { + _sapp_init_event(type); + _sapp.event.key_code = key; + _sapp.event.key_repeat = repeat; + _sapp.event.modifiers = mods; + _sapp_call_event(&_sapp.event); + /* check if a CLIPBOARD_PASTED event must be sent too */ + if (_sapp.clipboard.enabled && + (type == SAPP_EVENTTYPE_KEY_DOWN) && + (_sapp.event.modifiers == SAPP_MODIFIER_CTRL) && + (_sapp.event.key_code == SAPP_KEYCODE_V)) + { + _sapp_init_event(SAPP_EVENTTYPE_CLIPBOARD_PASTED); + _sapp_call_event(&_sapp.event); + } + } +} + +_SOKOL_PRIVATE void _sapp_x11_char_event(uint32_t chr, bool repeat, uint32_t mods) { + if (_sapp_events_enabled()) { + _sapp_init_event(SAPP_EVENTTYPE_CHAR); + _sapp.event.char_code = chr; + _sapp.event.key_repeat = repeat; + _sapp.event.modifiers = mods; + _sapp_call_event(&_sapp.event); + } +} + +_SOKOL_PRIVATE sapp_keycode _sapp_x11_translate_key(int scancode) { + int dummy; + KeySym* keysyms = XGetKeyboardMapping(_sapp.x11.display, scancode, 1, &dummy); + SOKOL_ASSERT(keysyms); + KeySym keysym = keysyms[0]; + XFree(keysyms); + switch (keysym) { + case XK_Escape: return SAPP_KEYCODE_ESCAPE; + case XK_Tab: return SAPP_KEYCODE_TAB; + case XK_Shift_L: return SAPP_KEYCODE_LEFT_SHIFT; + case XK_Shift_R: return SAPP_KEYCODE_RIGHT_SHIFT; + case XK_Control_L: return SAPP_KEYCODE_LEFT_CONTROL; + case XK_Control_R: return SAPP_KEYCODE_RIGHT_CONTROL; + case XK_Meta_L: + case XK_Alt_L: return SAPP_KEYCODE_LEFT_ALT; + case XK_Mode_switch: /* Mapped to Alt_R on many keyboards */ + case XK_ISO_Level3_Shift: /* AltGr on at least some machines */ + case XK_Meta_R: + case XK_Alt_R: return SAPP_KEYCODE_RIGHT_ALT; + case XK_Super_L: return SAPP_KEYCODE_LEFT_SUPER; + case XK_Super_R: return SAPP_KEYCODE_RIGHT_SUPER; + case XK_Menu: return SAPP_KEYCODE_MENU; + case XK_Num_Lock: return SAPP_KEYCODE_NUM_LOCK; + case XK_Caps_Lock: return SAPP_KEYCODE_CAPS_LOCK; + case XK_Print: return SAPP_KEYCODE_PRINT_SCREEN; + case XK_Scroll_Lock: return SAPP_KEYCODE_SCROLL_LOCK; + case XK_Pause: return SAPP_KEYCODE_PAUSE; + case XK_Delete: return SAPP_KEYCODE_DELETE; + case XK_BackSpace: return SAPP_KEYCODE_BACKSPACE; + case XK_Return: return SAPP_KEYCODE_ENTER; + case XK_Home: return SAPP_KEYCODE_HOME; + case XK_End: return SAPP_KEYCODE_END; + case XK_Page_Up: return SAPP_KEYCODE_PAGE_UP; + case XK_Page_Down: return SAPP_KEYCODE_PAGE_DOWN; + case XK_Insert: return SAPP_KEYCODE_INSERT; + case XK_Left: return SAPP_KEYCODE_LEFT; + case XK_Right: return SAPP_KEYCODE_RIGHT; + case XK_Down: return SAPP_KEYCODE_DOWN; + case XK_Up: return SAPP_KEYCODE_UP; + case XK_F1: return SAPP_KEYCODE_F1; + case XK_F2: return SAPP_KEYCODE_F2; + case XK_F3: return SAPP_KEYCODE_F3; + case XK_F4: return SAPP_KEYCODE_F4; + case XK_F5: return SAPP_KEYCODE_F5; + case XK_F6: return SAPP_KEYCODE_F6; + case XK_F7: return SAPP_KEYCODE_F7; + case XK_F8: return SAPP_KEYCODE_F8; + case XK_F9: return SAPP_KEYCODE_F9; + case XK_F10: return SAPP_KEYCODE_F10; + case XK_F11: return SAPP_KEYCODE_F11; + case XK_F12: return SAPP_KEYCODE_F12; + case XK_F13: return SAPP_KEYCODE_F13; + case XK_F14: return SAPP_KEYCODE_F14; + case XK_F15: return SAPP_KEYCODE_F15; + case XK_F16: return SAPP_KEYCODE_F16; + case XK_F17: return SAPP_KEYCODE_F17; + case XK_F18: return SAPP_KEYCODE_F18; + case XK_F19: return SAPP_KEYCODE_F19; + case XK_F20: return SAPP_KEYCODE_F20; + case XK_F21: return SAPP_KEYCODE_F21; + case XK_F22: return SAPP_KEYCODE_F22; + case XK_F23: return SAPP_KEYCODE_F23; + case XK_F24: return SAPP_KEYCODE_F24; + case XK_F25: return SAPP_KEYCODE_F25; + + case XK_KP_Divide: return SAPP_KEYCODE_KP_DIVIDE; + case XK_KP_Multiply: return SAPP_KEYCODE_KP_MULTIPLY; + case XK_KP_Subtract: return SAPP_KEYCODE_KP_SUBTRACT; + case XK_KP_Add: return SAPP_KEYCODE_KP_ADD; + + case XK_KP_Insert: return SAPP_KEYCODE_KP_0; + case XK_KP_End: return SAPP_KEYCODE_KP_1; + case XK_KP_Down: return SAPP_KEYCODE_KP_2; + case XK_KP_Page_Down: return SAPP_KEYCODE_KP_3; + case XK_KP_Left: return SAPP_KEYCODE_KP_4; + case XK_KP_Begin: return SAPP_KEYCODE_KP_5; + case XK_KP_Right: return SAPP_KEYCODE_KP_6; + case XK_KP_Home: return SAPP_KEYCODE_KP_7; + case XK_KP_Up: return SAPP_KEYCODE_KP_8; + case XK_KP_Page_Up: return SAPP_KEYCODE_KP_9; + case XK_KP_Delete: return SAPP_KEYCODE_KP_DECIMAL; + case XK_KP_Equal: return SAPP_KEYCODE_KP_EQUAL; + case XK_KP_Enter: return SAPP_KEYCODE_KP_ENTER; + + case XK_a: return SAPP_KEYCODE_A; + case XK_b: return SAPP_KEYCODE_B; + case XK_c: return SAPP_KEYCODE_C; + case XK_d: return SAPP_KEYCODE_D; + case XK_e: return SAPP_KEYCODE_E; + case XK_f: return SAPP_KEYCODE_F; + case XK_g: return SAPP_KEYCODE_G; + case XK_h: return SAPP_KEYCODE_H; + case XK_i: return SAPP_KEYCODE_I; + case XK_j: return SAPP_KEYCODE_J; + case XK_k: return SAPP_KEYCODE_K; + case XK_l: return SAPP_KEYCODE_L; + case XK_m: return SAPP_KEYCODE_M; + case XK_n: return SAPP_KEYCODE_N; + case XK_o: return SAPP_KEYCODE_O; + case XK_p: return SAPP_KEYCODE_P; + case XK_q: return SAPP_KEYCODE_Q; + case XK_r: return SAPP_KEYCODE_R; + case XK_s: return SAPP_KEYCODE_S; + case XK_t: return SAPP_KEYCODE_T; + case XK_u: return SAPP_KEYCODE_U; + case XK_v: return SAPP_KEYCODE_V; + case XK_w: return SAPP_KEYCODE_W; + case XK_x: return SAPP_KEYCODE_X; + case XK_y: return SAPP_KEYCODE_Y; + case XK_z: return SAPP_KEYCODE_Z; + case XK_1: return SAPP_KEYCODE_1; + case XK_2: return SAPP_KEYCODE_2; + case XK_3: return SAPP_KEYCODE_3; + case XK_4: return SAPP_KEYCODE_4; + case XK_5: return SAPP_KEYCODE_5; + case XK_6: return SAPP_KEYCODE_6; + case XK_7: return SAPP_KEYCODE_7; + case XK_8: return SAPP_KEYCODE_8; + case XK_9: return SAPP_KEYCODE_9; + case XK_0: return SAPP_KEYCODE_0; + case XK_space: return SAPP_KEYCODE_SPACE; + case XK_minus: return SAPP_KEYCODE_MINUS; + case XK_equal: return SAPP_KEYCODE_EQUAL; + case XK_bracketleft: return SAPP_KEYCODE_LEFT_BRACKET; + case XK_bracketright: return SAPP_KEYCODE_RIGHT_BRACKET; + case XK_backslash: return SAPP_KEYCODE_BACKSLASH; + case XK_semicolon: return SAPP_KEYCODE_SEMICOLON; + case XK_apostrophe: return SAPP_KEYCODE_APOSTROPHE; + case XK_grave: return SAPP_KEYCODE_GRAVE_ACCENT; + case XK_comma: return SAPP_KEYCODE_COMMA; + case XK_period: return SAPP_KEYCODE_PERIOD; + case XK_slash: return SAPP_KEYCODE_SLASH; + case XK_less: return SAPP_KEYCODE_WORLD_1; /* At least in some layouts... */ + default: return SAPP_KEYCODE_INVALID; + } +} + +_SOKOL_PRIVATE int32_t _sapp_x11_keysym_to_unicode(KeySym keysym) { + int min = 0; + int max = sizeof(_sapp_x11_keysymtab) / sizeof(struct _sapp_x11_codepair) - 1; + int mid; + + /* First check for Latin-1 characters (1:1 mapping) */ + if ((keysym >= 0x0020 && keysym <= 0x007e) || + (keysym >= 0x00a0 && keysym <= 0x00ff)) + { + return keysym; + } + + /* Also check for directly encoded 24-bit UCS characters */ + if ((keysym & 0xff000000) == 0x01000000) { + return keysym & 0x00ffffff; + } + + /* Binary search in table */ + while (max >= min) { + mid = (min + max) / 2; + if (_sapp_x11_keysymtab[mid].keysym < keysym) { + min = mid + 1; + } + else if (_sapp_x11_keysymtab[mid].keysym > keysym) { + max = mid - 1; + } + else { + return _sapp_x11_keysymtab[mid].ucs; + } + } + + /* No matching Unicode value found */ + return -1; +} + +_SOKOL_PRIVATE bool _sapp_x11_parse_dropped_files_list(const char* src) { + SOKOL_ASSERT(src); + SOKOL_ASSERT(_sapp.drop.buffer); + + _sapp_clear_drop_buffer(); + _sapp.drop.num_files = 0; + + /* + src is (potentially percent-encoded) string made of one or multiple paths + separated by \r\n, each path starting with 'file://' + */ + bool err = false; + int src_count = 0; + char src_chr = 0; + char* dst_ptr = _sapp.drop.buffer; + const char* dst_end_ptr = dst_ptr + (_sapp.drop.max_path_length - 1); // room for terminating 0 + while (0 != (src_chr = *src++)) { + src_count++; + char dst_chr = 0; + /* check leading 'file://' */ + if (src_count <= 7) { + if (((src_count == 1) && (src_chr != 'f')) || + ((src_count == 2) && (src_chr != 'i')) || + ((src_count == 3) && (src_chr != 'l')) || + ((src_count == 4) && (src_chr != 'e')) || + ((src_count == 5) && (src_chr != ':')) || + ((src_count == 6) && (src_chr != '/')) || + ((src_count == 7) && (src_chr != '/'))) + { + _SAPP_ERROR(LINUX_X11_DROPPED_FILE_URI_WRONG_SCHEME); + err = true; + break; + } + } + else if (src_chr == '\r') { + // skip + } + else if (src_chr == '\n') { + src_count = 0; + _sapp.drop.num_files++; + // too many files is not an error + if (_sapp.drop.num_files >= _sapp.drop.max_files) { + break; + } + dst_ptr = _sapp.drop.buffer + _sapp.drop.num_files * _sapp.drop.max_path_length; + dst_end_ptr = dst_ptr + (_sapp.drop.max_path_length - 1); + } + else if ((src_chr == '%') && src[0] && src[1]) { + // a percent-encoded byte (most likely UTF-8 multibyte sequence) + const char digits[3] = { src[0], src[1], 0 }; + src += 2; + dst_chr = (char) strtol(digits, 0, 16); + } + else { + dst_chr = src_chr; + } + if (dst_chr) { + // dst_end_ptr already has adjustment for terminating zero + if (dst_ptr < dst_end_ptr) { + *dst_ptr++ = dst_chr; + } + else { + _SAPP_ERROR(DROPPED_FILE_PATH_TOO_LONG); + err = true; + break; + } + } + } + if (err) { + _sapp_clear_drop_buffer(); + _sapp.drop.num_files = 0; + return false; + } + else { + return true; + } +} + +// XLib manual says keycodes are in the range [8, 255] inclusive. +// https://tronche.com/gui/x/xlib/input/keyboard-encoding.html +static bool _sapp_x11_keycodes[256]; + +_SOKOL_PRIVATE void _sapp_x11_process_event(XEvent* event) { + Bool filtered = XFilterEvent(event, None); + switch (event->type) { + case GenericEvent: + if (_sapp.mouse.locked && _sapp.x11.xi.available) { + if (event->xcookie.extension == _sapp.x11.xi.major_opcode) { + if (XGetEventData(_sapp.x11.display, &event->xcookie)) { + if (event->xcookie.evtype == XI_RawMotion) { + XIRawEvent* re = (XIRawEvent*) event->xcookie.data; + if (re->valuators.mask_len) { + const double* values = re->raw_values; + if (XIMaskIsSet(re->valuators.mask, 0)) { + _sapp.mouse.dx = (float) *values; + values++; + } + if (XIMaskIsSet(re->valuators.mask, 1)) { + _sapp.mouse.dy = (float) *values; + } + _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID, _sapp_x11_mods(event->xmotion.state)); + } + } + XFreeEventData(_sapp.x11.display, &event->xcookie); + } + } + } + break; + case FocusIn: + // NOTE: ignoring NotifyGrab and NotifyUngrab is same behaviour as GLFW + if ((event->xfocus.mode != NotifyGrab) && (event->xfocus.mode != NotifyUngrab)) { + _sapp_x11_app_event(SAPP_EVENTTYPE_FOCUSED); + } + break; + case FocusOut: + /* if focus is lost for any reason, and we're in mouse locked mode, disable mouse lock */ + if (_sapp.mouse.locked) { + _sapp_x11_lock_mouse(false); + } + // NOTE: ignoring NotifyGrab and NotifyUngrab is same behaviour as GLFW + if ((event->xfocus.mode != NotifyGrab) && (event->xfocus.mode != NotifyUngrab)) { + _sapp_x11_app_event(SAPP_EVENTTYPE_UNFOCUSED); + } + break; + case KeyPress: + { + int keycode = (int)event->xkey.keycode; + const sapp_keycode key = _sapp_x11_translate_key(keycode); + bool repeat = _sapp_x11_keycodes[keycode & 0xFF]; + _sapp_x11_keycodes[keycode & 0xFF] = true; + uint32_t mods = _sapp_x11_mods(event->xkey.state); + // X11 doesn't set modifier bit on key down, so emulate that + mods |= _sapp_x11_key_modifier_bit(key); + if (key != SAPP_KEYCODE_INVALID) { + _sapp_x11_key_event(SAPP_EVENTTYPE_KEY_DOWN, key, repeat, mods); + } + KeySym keysym; + XLookupString(&event->xkey, NULL, 0, &keysym, NULL); + int32_t chr = _sapp_x11_keysym_to_unicode(keysym); + if (chr > 0) { + _sapp_x11_char_event((uint32_t)chr, repeat, mods); + } + } + break; + case KeyRelease: + { + int keycode = (int)event->xkey.keycode; + const sapp_keycode key = _sapp_x11_translate_key(keycode); + _sapp_x11_keycodes[keycode & 0xFF] = false; + if (key != SAPP_KEYCODE_INVALID) { + uint32_t mods = _sapp_x11_mods(event->xkey.state); + // X11 doesn't clear modifier bit on key up, so emulate that + mods &= ~_sapp_x11_key_modifier_bit(key); + _sapp_x11_key_event(SAPP_EVENTTYPE_KEY_UP, key, false, mods); + } + } + break; + case ButtonPress: + { + _sapp_x11_mouse_update(event->xbutton.x, event->xbutton.y); + const sapp_mousebutton btn = _sapp_x11_translate_button(event); + uint32_t mods = _sapp_x11_mods(event->xbutton.state); + // X11 doesn't set modifier bit on button down, so emulate that + mods |= _sapp_x11_button_modifier_bit(btn); + if (btn != SAPP_MOUSEBUTTON_INVALID) { + _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_DOWN, btn, mods); + _sapp.x11.mouse_buttons |= (1 << btn); + } + else { + /* might be a scroll event */ + switch (event->xbutton.button) { + case 4: _sapp_x11_scroll_event(0.0f, 1.0f, mods); break; + case 5: _sapp_x11_scroll_event(0.0f, -1.0f, mods); break; + case 6: _sapp_x11_scroll_event(1.0f, 0.0f, mods); break; + case 7: _sapp_x11_scroll_event(-1.0f, 0.0f, mods); break; + } + } + } + break; + case ButtonRelease: + { + _sapp_x11_mouse_update(event->xbutton.x, event->xbutton.y); + const sapp_mousebutton btn = _sapp_x11_translate_button(event); + if (btn != SAPP_MOUSEBUTTON_INVALID) { + uint32_t mods = _sapp_x11_mods(event->xbutton.state); + // X11 doesn't clear modifier bit on button up, so emulate that + mods &= ~_sapp_x11_button_modifier_bit(btn); + _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_UP, btn, mods); + _sapp.x11.mouse_buttons &= ~(1 << btn); + } + } + break; + case EnterNotify: + /* don't send enter/leave events while mouse button held down */ + if (0 == _sapp.x11.mouse_buttons) { + _sapp_x11_mouse_update(event->xcrossing.x, event->xcrossing.y); + _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_ENTER, SAPP_MOUSEBUTTON_INVALID, _sapp_x11_mods(event->xcrossing.state)); + } + break; + case LeaveNotify: + if (0 == _sapp.x11.mouse_buttons) { + _sapp_x11_mouse_update(event->xcrossing.x, event->xcrossing.y); + _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_LEAVE, SAPP_MOUSEBUTTON_INVALID, _sapp_x11_mods(event->xcrossing.state)); + } + break; + case MotionNotify: + if (!_sapp.mouse.locked) { + _sapp_x11_mouse_update(event->xmotion.x, event->xmotion.y); + _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID, _sapp_x11_mods(event->xmotion.state)); + } + break; + case ConfigureNotify: + if ((event->xconfigure.width != _sapp.window_width) || (event->xconfigure.height != _sapp.window_height)) { + _sapp.window_width = event->xconfigure.width; + _sapp.window_height = event->xconfigure.height; + _sapp.framebuffer_width = _sapp.window_width; + _sapp.framebuffer_height = _sapp.window_height; + _sapp_x11_app_event(SAPP_EVENTTYPE_RESIZED); + } + break; + case PropertyNotify: + if (event->xproperty.state == PropertyNewValue) { + if (event->xproperty.atom == _sapp.x11.WM_STATE) { + const int state = _sapp_x11_get_window_state(); + if (state != _sapp.x11.window_state) { + _sapp.x11.window_state = state; + if (state == IconicState) { + _sapp_x11_app_event(SAPP_EVENTTYPE_ICONIFIED); + } + else if (state == NormalState) { + _sapp_x11_app_event(SAPP_EVENTTYPE_RESTORED); + } + } + } + } + break; + case ClientMessage: + if (filtered) { + return; + } + if (event->xclient.message_type == _sapp.x11.WM_PROTOCOLS) { + const Atom protocol = (Atom)event->xclient.data.l[0]; + if (protocol == _sapp.x11.WM_DELETE_WINDOW) { + _sapp.quit_requested = true; + } + } + else if (event->xclient.message_type == _sapp.x11.xdnd.XdndEnter) { + const bool is_list = 0 != (event->xclient.data.l[1] & 1); + _sapp.x11.xdnd.source = (Window)event->xclient.data.l[0]; + _sapp.x11.xdnd.version = event->xclient.data.l[1] >> 24; + _sapp.x11.xdnd.format = None; + if (_sapp.x11.xdnd.version > _SAPP_X11_XDND_VERSION) { + return; + } + uint32_t count = 0; + Atom* formats = 0; + if (is_list) { + count = _sapp_x11_get_window_property(_sapp.x11.xdnd.source, _sapp.x11.xdnd.XdndTypeList, XA_ATOM, (unsigned char**)&formats); + } + else { + count = 3; + formats = (Atom*) event->xclient.data.l + 2; + } + for (uint32_t i = 0; i < count; i++) { + if (formats[i] == _sapp.x11.xdnd.text_uri_list) { + _sapp.x11.xdnd.format = _sapp.x11.xdnd.text_uri_list; + break; + } + } + if (is_list && formats) { + XFree(formats); + } + } + else if (event->xclient.message_type == _sapp.x11.xdnd.XdndDrop) { + if (_sapp.x11.xdnd.version > _SAPP_X11_XDND_VERSION) { + return; + } + Time time = CurrentTime; + if (_sapp.x11.xdnd.format) { + if (_sapp.x11.xdnd.version >= 1) { + time = (Time)event->xclient.data.l[2]; + } + XConvertSelection(_sapp.x11.display, + _sapp.x11.xdnd.XdndSelection, + _sapp.x11.xdnd.format, + _sapp.x11.xdnd.XdndSelection, + _sapp.x11.window, + time); + } + else if (_sapp.x11.xdnd.version >= 2) { + XEvent reply; + _sapp_clear(&reply, sizeof(reply)); + reply.type = ClientMessage; + reply.xclient.window = _sapp.x11.xdnd.source; + reply.xclient.message_type = _sapp.x11.xdnd.XdndFinished; + reply.xclient.format = 32; + reply.xclient.data.l[0] = (long)_sapp.x11.window; + reply.xclient.data.l[1] = 0; // drag was rejected + reply.xclient.data.l[2] = None; + XSendEvent(_sapp.x11.display, _sapp.x11.xdnd.source, False, NoEventMask, &reply); + XFlush(_sapp.x11.display); + } + } + else if (event->xclient.message_type == _sapp.x11.xdnd.XdndPosition) { + /* drag operation has moved over the window + FIXME: we could track the mouse position here, but + this isn't implemented on other platforms either so far + */ + if (_sapp.x11.xdnd.version > _SAPP_X11_XDND_VERSION) { + return; + } + XEvent reply; + _sapp_clear(&reply, sizeof(reply)); + reply.type = ClientMessage; + reply.xclient.window = _sapp.x11.xdnd.source; + reply.xclient.message_type = _sapp.x11.xdnd.XdndStatus; + reply.xclient.format = 32; + reply.xclient.data.l[0] = (long)_sapp.x11.window; + if (_sapp.x11.xdnd.format) { + /* reply that we are ready to copy the dragged data */ + reply.xclient.data.l[1] = 1; // accept with no rectangle + if (_sapp.x11.xdnd.version >= 2) { + reply.xclient.data.l[4] = (long)_sapp.x11.xdnd.XdndActionCopy; + } + } + XSendEvent(_sapp.x11.display, _sapp.x11.xdnd.source, False, NoEventMask, &reply); + XFlush(_sapp.x11.display); + } + break; + case SelectionNotify: + if (event->xselection.property == _sapp.x11.xdnd.XdndSelection) { + char* data = 0; + uint32_t result = _sapp_x11_get_window_property(event->xselection.requestor, + event->xselection.property, + event->xselection.target, + (unsigned char**) &data); + if (_sapp.drop.enabled && result) { + if (_sapp_x11_parse_dropped_files_list(data)) { + if (_sapp_events_enabled()) { + _sapp_init_event(SAPP_EVENTTYPE_FILES_DROPPED); + _sapp_call_event(&_sapp.event); + } + } + } + if (_sapp.x11.xdnd.version >= 2) { + XEvent reply; + _sapp_clear(&reply, sizeof(reply)); + reply.type = ClientMessage; + reply.xclient.window = _sapp.x11.xdnd.source; + reply.xclient.message_type = _sapp.x11.xdnd.XdndFinished; + reply.xclient.format = 32; + reply.xclient.data.l[0] = (long)_sapp.x11.window; + reply.xclient.data.l[1] = result; + reply.xclient.data.l[2] = (long)_sapp.x11.xdnd.XdndActionCopy; + XSendEvent(_sapp.x11.display, _sapp.x11.xdnd.source, False, NoEventMask, &reply); + XFlush(_sapp.x11.display); + } + } + break; + case DestroyNotify: + break; + } +} + +#if !defined(_SAPP_GLX) + +_SOKOL_PRIVATE void _sapp_egl_init(void) { +#if defined(SOKOL_GLCORE33) + if (!eglBindAPI(EGL_OPENGL_API)) { + _SAPP_PANIC(LINUX_EGL_BIND_OPENGL_API_FAILED); + } +#else + if (!eglBindAPI(EGL_OPENGL_ES_API)) { + _SAPP_PANIC(LINUX_EGL_BIND_OPENGL_ES_API_FAILED); + } +#endif + + _sapp.egl.display = eglGetDisplay((EGLNativeDisplayType)_sapp.x11.display); + if (EGL_NO_DISPLAY == _sapp.egl.display) { + _SAPP_PANIC(LINUX_EGL_GET_DISPLAY_FAILED); + } + + EGLint major, minor; + if (!eglInitialize(_sapp.egl.display, &major, &minor)) { + _SAPP_PANIC(LINUX_EGL_INITIALIZE_FAILED); + } + + EGLint sample_count = _sapp.desc.sample_count > 1 ? _sapp.desc.sample_count : 0; + EGLint alpha_size = _sapp.desc.alpha ? 8 : 0; + const EGLint config_attrs[] = { + EGL_SURFACE_TYPE, EGL_WINDOW_BIT, + #if defined(SOKOL_GLCORE33) + EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, + #elif defined(SOKOL_GLES3) + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES3_BIT, + #endif + EGL_RED_SIZE, 8, + EGL_GREEN_SIZE, 8, + EGL_BLUE_SIZE, 8, + EGL_ALPHA_SIZE, alpha_size, + EGL_DEPTH_SIZE, 24, + EGL_STENCIL_SIZE, 8, + EGL_SAMPLE_BUFFERS, _sapp.desc.sample_count > 1 ? 1 : 0, + EGL_SAMPLES, sample_count, + EGL_NONE, + }; + + EGLConfig egl_configs[32]; + EGLint config_count; + if (!eglChooseConfig(_sapp.egl.display, config_attrs, egl_configs, 32, &config_count) || config_count == 0) { + _SAPP_PANIC(LINUX_EGL_NO_CONFIGS); + } + + EGLConfig config = egl_configs[0]; + for (int i = 0; i < config_count; ++i) { + EGLConfig c = egl_configs[i]; + EGLint r, g, b, a, d, s, n; + if (eglGetConfigAttrib(_sapp.egl.display, c, EGL_RED_SIZE, &r) && + eglGetConfigAttrib(_sapp.egl.display, c, EGL_GREEN_SIZE, &g) && + eglGetConfigAttrib(_sapp.egl.display, c, EGL_BLUE_SIZE, &b) && + eglGetConfigAttrib(_sapp.egl.display, c, EGL_ALPHA_SIZE, &a) && + eglGetConfigAttrib(_sapp.egl.display, c, EGL_DEPTH_SIZE, &d) && + eglGetConfigAttrib(_sapp.egl.display, c, EGL_STENCIL_SIZE, &s) && + eglGetConfigAttrib(_sapp.egl.display, c, EGL_SAMPLES, &n) && + (r == 8) && (g == 8) && (b == 8) && (a == alpha_size) && (d == 24) && (s == 8) && (n == sample_count)) { + config = c; + break; + } + } + + EGLint visual_id; + if (!eglGetConfigAttrib(_sapp.egl.display, config, EGL_NATIVE_VISUAL_ID, &visual_id)) { + _SAPP_PANIC(LINUX_EGL_NO_NATIVE_VISUAL); + } + + XVisualInfo visual_info_template; + _sapp_clear(&visual_info_template, sizeof(visual_info_template)); + visual_info_template.visualid = (VisualID)visual_id; + + int num_visuals; + XVisualInfo* visual_info = XGetVisualInfo(_sapp.x11.display, VisualIDMask, &visual_info_template, &num_visuals); + if (!visual_info) { + _SAPP_PANIC(LINUX_EGL_GET_VISUAL_INFO_FAILED); + } + + _sapp_x11_create_window(visual_info->visual, visual_info->depth); + XFree(visual_info); + + _sapp.egl.surface = eglCreateWindowSurface(_sapp.egl.display, config, (EGLNativeWindowType)_sapp.x11.window, NULL); + if (EGL_NO_SURFACE == _sapp.egl.surface) { + _SAPP_PANIC(LINUX_EGL_CREATE_WINDOW_SURFACE_FAILED); + } + + EGLint ctx_attrs[] = { + #if defined(SOKOL_GLCORE33) + EGL_CONTEXT_MAJOR_VERSION, _sapp.desc.gl_major_version, + EGL_CONTEXT_MINOR_VERSION, _sapp.desc.gl_minor_version, + EGL_CONTEXT_OPENGL_PROFILE_MASK, EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT, + #elif defined(SOKOL_GLES3) + EGL_CONTEXT_CLIENT_VERSION, 3, + #endif + EGL_NONE, + }; + + _sapp.egl.context = eglCreateContext(_sapp.egl.display, config, EGL_NO_CONTEXT, ctx_attrs); + if (EGL_NO_CONTEXT == _sapp.egl.context) { + _SAPP_PANIC(LINUX_EGL_CREATE_CONTEXT_FAILED); + } + + if (!eglMakeCurrent(_sapp.egl.display, _sapp.egl.surface, _sapp.egl.surface, _sapp.egl.context)) { + _SAPP_PANIC(LINUX_EGL_MAKE_CURRENT_FAILED); + } + + eglSwapInterval(_sapp.egl.display, _sapp.swap_interval); +} + +_SOKOL_PRIVATE void _sapp_egl_destroy(void) { + if (_sapp.egl.display != EGL_NO_DISPLAY) { + eglMakeCurrent(_sapp.egl.display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + + if (_sapp.egl.context != EGL_NO_CONTEXT) { + eglDestroyContext(_sapp.egl.display, _sapp.egl.context); + _sapp.egl.context = EGL_NO_CONTEXT; + } + + if (_sapp.egl.surface != EGL_NO_SURFACE) { + eglDestroySurface(_sapp.egl.display, _sapp.egl.surface); + _sapp.egl.surface = EGL_NO_SURFACE; + } + + eglTerminate(_sapp.egl.display); + _sapp.egl.display = EGL_NO_DISPLAY; + } +} + +#endif /* _SAPP_GLX */ + +_SOKOL_PRIVATE void _sapp_linux_run(const sapp_desc* desc) { + /* The following lines are here to trigger a linker error instead of an + obscure runtime error if the user has forgotten to add -pthread to + the compiler or linker options. They have no other purpose. + */ + pthread_attr_t pthread_attr; + pthread_attr_init(&pthread_attr); + pthread_attr_destroy(&pthread_attr); + + _sapp_init_state(desc); + _sapp.x11.window_state = NormalState; + + XInitThreads(); + XrmInitialize(); + _sapp.x11.display = XOpenDisplay(NULL); + if (!_sapp.x11.display) { + _SAPP_PANIC(LINUX_X11_OPEN_DISPLAY_FAILED); + } + _sapp.x11.screen = DefaultScreen(_sapp.x11.display); + _sapp.x11.root = DefaultRootWindow(_sapp.x11.display); + XkbSetDetectableAutoRepeat(_sapp.x11.display, true, NULL); + _sapp_x11_query_system_dpi(); + _sapp.dpi_scale = _sapp.x11.dpi / 96.0f; + _sapp_x11_init_extensions(); + _sapp_x11_create_cursors(); +#if defined(_SAPP_GLX) + _sapp_glx_init(); + Visual* visual = 0; + int depth = 0; + _sapp_glx_choose_visual(&visual, &depth); + _sapp_x11_create_window(visual, depth); + _sapp_glx_create_context(); + _sapp_glx_swapinterval(_sapp.swap_interval); +#else + _sapp_egl_init(); +#endif + sapp_set_icon(&desc->icon); + _sapp.valid = true; + _sapp_x11_show_window(); + if (_sapp.fullscreen) { + _sapp_x11_set_fullscreen(true); + } + + XFlush(_sapp.x11.display); + while (!_sapp.quit_ordered) { + _sapp_timing_measure(&_sapp.timing); + int count = XPending(_sapp.x11.display); + while (count--) { + XEvent event; + XNextEvent(_sapp.x11.display, &event); + _sapp_x11_process_event(&event); + } + _sapp_frame(); +#if defined(_SAPP_GLX) + _sapp_glx_swap_buffers(); +#else + eglSwapBuffers(_sapp.egl.display, _sapp.egl.surface); +#endif + XFlush(_sapp.x11.display); + /* handle quit-requested, either from window or from sapp_request_quit() */ + if (_sapp.quit_requested && !_sapp.quit_ordered) { + /* give user code a chance to intervene */ + _sapp_x11_app_event(SAPP_EVENTTYPE_QUIT_REQUESTED); + /* if user code hasn't intervened, quit the app */ + if (_sapp.quit_requested) { + _sapp.quit_ordered = true; + } + } + } + _sapp_call_cleanup(); +#if defined(_SAPP_GLX) + _sapp_glx_destroy_context(); +#else + _sapp_egl_destroy(); +#endif + _sapp_x11_destroy_window(); + _sapp_x11_destroy_cursors(); + XCloseDisplay(_sapp.x11.display); + _sapp_discard_state(); +} + +#if !defined(SOKOL_NO_ENTRY) +int main(int argc, char* argv[]) { + sapp_desc desc = sokol_main(argc, argv); + _sapp_linux_run(&desc); + return 0; +} +#endif /* SOKOL_NO_ENTRY */ +#endif /* _SAPP_LINUX */ + +// ██████ ██ ██ ██████ ██ ██ ██████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ██ ██████ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██████ ██████ ███████ ██ ██████ +// +// >>public +#if defined(SOKOL_NO_ENTRY) +SOKOL_API_IMPL void sapp_run(const sapp_desc* desc) { + SOKOL_ASSERT(desc); + #if defined(_SAPP_MACOS) + _sapp_macos_run(desc); + #elif defined(_SAPP_IOS) + _sapp_ios_run(desc); + #elif defined(_SAPP_EMSCRIPTEN) + _sapp_emsc_run(desc); + #elif defined(_SAPP_WIN32) + _sapp_win32_run(desc); + #elif defined(_SAPP_LINUX) + _sapp_linux_run(desc); + #else + #error "sapp_run() not supported on this platform" + #endif +} + +/* this is just a stub so the linker doesn't complain */ +sapp_desc sokol_main(int argc, char* argv[]) { + _SOKOL_UNUSED(argc); + _SOKOL_UNUSED(argv); + sapp_desc desc; + _sapp_clear(&desc, sizeof(desc)); + return desc; +} +#else +/* likewise, in normal mode, sapp_run() is just an empty stub */ +SOKOL_API_IMPL void sapp_run(const sapp_desc* desc) { + _SOKOL_UNUSED(desc); +} +#endif + +SOKOL_API_IMPL bool sapp_isvalid(void) { + return _sapp.valid; +} + +SOKOL_API_IMPL void* sapp_userdata(void) { + return _sapp.desc.user_data; +} + +SOKOL_API_IMPL sapp_desc sapp_query_desc(void) { + return _sapp.desc; +} + +SOKOL_API_IMPL uint64_t sapp_frame_count(void) { + return _sapp.frame_count; +} + +SOKOL_API_IMPL double sapp_frame_duration(void) { + return _sapp_timing_get_avg(&_sapp.timing); +} + +SOKOL_API_IMPL int sapp_width(void) { + return (_sapp.framebuffer_width > 0) ? _sapp.framebuffer_width : 1; +} + +SOKOL_API_IMPL float sapp_widthf(void) { + return (float)sapp_width(); +} + +SOKOL_API_IMPL int sapp_height(void) { + return (_sapp.framebuffer_height > 0) ? _sapp.framebuffer_height : 1; +} + +SOKOL_API_IMPL float sapp_heightf(void) { + return (float)sapp_height(); +} + +SOKOL_API_IMPL int sapp_color_format(void) { + #if defined(_SAPP_EMSCRIPTEN) && defined(SOKOL_WGPU) + switch (_sapp.emsc.wgpu.render_format) { + case WGPUTextureFormat_RGBA8Unorm: + return _SAPP_PIXELFORMAT_RGBA8; + case WGPUTextureFormat_BGRA8Unorm: + return _SAPP_PIXELFORMAT_BGRA8; + default: + SOKOL_UNREACHABLE; + return 0; + } + #elif defined(SOKOL_METAL) || defined(SOKOL_D3D11) + return _SAPP_PIXELFORMAT_BGRA8; + #else + return _SAPP_PIXELFORMAT_RGBA8; + #endif +} + +SOKOL_API_IMPL int sapp_depth_format(void) { + return _SAPP_PIXELFORMAT_DEPTH_STENCIL; +} + +SOKOL_API_IMPL int sapp_sample_count(void) { + return _sapp.sample_count; +} + +SOKOL_API_IMPL bool sapp_high_dpi(void) { + return _sapp.desc.high_dpi && (_sapp.dpi_scale >= 1.5f); +} + +SOKOL_API_IMPL float sapp_dpi_scale(void) { + return _sapp.dpi_scale; +} + +SOKOL_APP_IMPL const void* sapp_egl_get_display(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(_SAPP_ANDROID) + return _sapp.android.display; + #elif defined(_SAPP_LINUX) && !defined(_SAPP_GLX) + return _sapp.egl.display; + #else + return 0; + #endif +} + +SOKOL_APP_IMPL const void* sapp_egl_get_context(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(_SAPP_ANDROID) + return _sapp.android.context; + #elif defined(_SAPP_LINUX) && !defined(_SAPP_GLX) + return _sapp.egl.context; + #else + return 0; + #endif +} + +SOKOL_API_IMPL void sapp_show_keyboard(bool show) { + #if defined(_SAPP_IOS) + _sapp_ios_show_keyboard(show); + #elif defined(_SAPP_EMSCRIPTEN) + _sapp_emsc_show_keyboard(show); + #elif defined(_SAPP_ANDROID) + _sapp_android_show_keyboard(show); + #else + _SOKOL_UNUSED(show); + #endif +} + +SOKOL_API_IMPL bool sapp_keyboard_shown(void) { + return _sapp.onscreen_keyboard_shown; +} + +SOKOL_API_IMPL bool sapp_is_fullscreen(void) { + return _sapp.fullscreen; +} + +SOKOL_API_IMPL void sapp_toggle_fullscreen(void) { + #if defined(_SAPP_MACOS) + _sapp_macos_toggle_fullscreen(); + #elif defined(_SAPP_WIN32) + _sapp_win32_toggle_fullscreen(); + #elif defined(_SAPP_LINUX) + _sapp_x11_toggle_fullscreen(); + #endif +} + +/* NOTE that sapp_show_mouse() does not "stack" like the Win32 or macOS API functions! */ +SOKOL_API_IMPL void sapp_show_mouse(bool show) { + if (_sapp.mouse.shown != show) { + #if defined(_SAPP_MACOS) + _sapp_macos_update_cursor(_sapp.mouse.current_cursor, show); + #elif defined(_SAPP_WIN32) + _sapp_win32_update_cursor(_sapp.mouse.current_cursor, show, false); + #elif defined(_SAPP_LINUX) + _sapp_x11_update_cursor(_sapp.mouse.current_cursor, show); + #elif defined(_SAPP_EMSCRIPTEN) + _sapp_emsc_update_cursor(_sapp.mouse.current_cursor, show); + #endif + _sapp.mouse.shown = show; + } +} + +SOKOL_API_IMPL bool sapp_mouse_shown(void) { + return _sapp.mouse.shown; +} + +SOKOL_API_IMPL void sapp_lock_mouse(bool lock) { + #if defined(_SAPP_MACOS) + _sapp_macos_lock_mouse(lock); + #elif defined(_SAPP_EMSCRIPTEN) + _sapp_emsc_lock_mouse(lock); + #elif defined(_SAPP_WIN32) + _sapp_win32_lock_mouse(lock); + #elif defined(_SAPP_LINUX) + _sapp_x11_lock_mouse(lock); + #else + _sapp.mouse.locked = lock; + #endif +} + +SOKOL_API_IMPL bool sapp_mouse_locked(void) { + return _sapp.mouse.locked; +} + +SOKOL_API_IMPL void sapp_set_mouse_cursor(sapp_mouse_cursor cursor) { + SOKOL_ASSERT((cursor >= 0) && (cursor < _SAPP_MOUSECURSOR_NUM)); + if (_sapp.mouse.current_cursor != cursor) { + #if defined(_SAPP_MACOS) + _sapp_macos_update_cursor(cursor, _sapp.mouse.shown); + #elif defined(_SAPP_WIN32) + _sapp_win32_update_cursor(cursor, _sapp.mouse.shown, false); + #elif defined(_SAPP_LINUX) + _sapp_x11_update_cursor(cursor, _sapp.mouse.shown); + #elif defined(_SAPP_EMSCRIPTEN) + _sapp_emsc_update_cursor(cursor, _sapp.mouse.shown); + #endif + _sapp.mouse.current_cursor = cursor; + } +} + +SOKOL_API_IMPL sapp_mouse_cursor sapp_get_mouse_cursor(void) { + return _sapp.mouse.current_cursor; +} + +SOKOL_API_IMPL void sapp_request_quit(void) { + _sapp.quit_requested = true; +} + +SOKOL_API_IMPL void sapp_cancel_quit(void) { + _sapp.quit_requested = false; +} + +SOKOL_API_IMPL void sapp_quit(void) { + _sapp.quit_ordered = true; +} + +SOKOL_API_IMPL void sapp_consume_event(void) { + _sapp.event_consumed = true; +} + +/* NOTE: on HTML5, sapp_set_clipboard_string() must be called from within event handler! */ +SOKOL_API_IMPL void sapp_set_clipboard_string(const char* str) { + if (!_sapp.clipboard.enabled) { + return; + } + SOKOL_ASSERT(str); + #if defined(_SAPP_MACOS) + _sapp_macos_set_clipboard_string(str); + #elif defined(_SAPP_EMSCRIPTEN) + _sapp_emsc_set_clipboard_string(str); + #elif defined(_SAPP_WIN32) + _sapp_win32_set_clipboard_string(str); + #else + /* not implemented */ + #endif + _sapp_strcpy(str, _sapp.clipboard.buffer, _sapp.clipboard.buf_size); +} + +SOKOL_API_IMPL const char* sapp_get_clipboard_string(void) { + if (!_sapp.clipboard.enabled) { + return ""; + } + #if defined(_SAPP_MACOS) + return _sapp_macos_get_clipboard_string(); + #elif defined(_SAPP_EMSCRIPTEN) + return _sapp.clipboard.buffer; + #elif defined(_SAPP_WIN32) + return _sapp_win32_get_clipboard_string(); + #else + /* not implemented */ + return _sapp.clipboard.buffer; + #endif +} + +SOKOL_API_IMPL void sapp_set_window_title(const char* title) { + SOKOL_ASSERT(title); + _sapp_strcpy(title, _sapp.window_title, sizeof(_sapp.window_title)); + #if defined(_SAPP_MACOS) + _sapp_macos_update_window_title(); + #elif defined(_SAPP_WIN32) + _sapp_win32_update_window_title(); + #elif defined(_SAPP_LINUX) + _sapp_x11_update_window_title(); + #endif +} + +SOKOL_API_IMPL void sapp_set_icon(const sapp_icon_desc* desc) { + SOKOL_ASSERT(desc); + if (desc->sokol_default) { + if (0 == _sapp.default_icon_pixels) { + _sapp_setup_default_icon(); + } + SOKOL_ASSERT(0 != _sapp.default_icon_pixels); + desc = &_sapp.default_icon_desc; + } + const int num_images = _sapp_icon_num_images(desc); + if (num_images == 0) { + return; + } + SOKOL_ASSERT((num_images > 0) && (num_images <= SAPP_MAX_ICONIMAGES)); + if (!_sapp_validate_icon_desc(desc, num_images)) { + return; + } + #if defined(_SAPP_MACOS) + _sapp_macos_set_icon(desc, num_images); + #elif defined(_SAPP_WIN32) + _sapp_win32_set_icon(desc, num_images); + #elif defined(_SAPP_LINUX) + _sapp_x11_set_icon(desc, num_images); + #elif defined(_SAPP_EMSCRIPTEN) + _sapp_emsc_set_icon(desc, num_images); + #endif +} + +SOKOL_API_IMPL int sapp_get_num_dropped_files(void) { + SOKOL_ASSERT(_sapp.drop.enabled); + return _sapp.drop.num_files; +} + +SOKOL_API_IMPL const char* sapp_get_dropped_file_path(int index) { + SOKOL_ASSERT(_sapp.drop.enabled); + SOKOL_ASSERT((index >= 0) && (index < _sapp.drop.num_files)); + SOKOL_ASSERT(_sapp.drop.buffer); + if (!_sapp.drop.enabled) { + return ""; + } + if ((index < 0) || (index >= _sapp.drop.max_files)) { + return ""; + } + return (const char*) _sapp_dropped_file_path_ptr(index); +} + +SOKOL_API_IMPL uint32_t sapp_html5_get_dropped_file_size(int index) { + SOKOL_ASSERT(_sapp.drop.enabled); + SOKOL_ASSERT((index >= 0) && (index < _sapp.drop.num_files)); + #if defined(_SAPP_EMSCRIPTEN) + if (!_sapp.drop.enabled) { + return 0; + } + return sapp_js_dropped_file_size(index); + #else + (void)index; + return 0; + #endif +} + +SOKOL_API_IMPL void sapp_html5_fetch_dropped_file(const sapp_html5_fetch_request* request) { + SOKOL_ASSERT(_sapp.drop.enabled); + SOKOL_ASSERT(request); + SOKOL_ASSERT(request->callback); + SOKOL_ASSERT(request->buffer.ptr); + SOKOL_ASSERT(request->buffer.size > 0); + #if defined(_SAPP_EMSCRIPTEN) + const int index = request->dropped_file_index; + sapp_html5_fetch_error error_code = SAPP_HTML5_FETCH_ERROR_NO_ERROR; + if ((index < 0) || (index >= _sapp.drop.num_files)) { + error_code = SAPP_HTML5_FETCH_ERROR_OTHER; + } + if (sapp_html5_get_dropped_file_size(index) > request->buffer.size) { + error_code = SAPP_HTML5_FETCH_ERROR_BUFFER_TOO_SMALL; + } + if (SAPP_HTML5_FETCH_ERROR_NO_ERROR != error_code) { + _sapp_emsc_invoke_fetch_cb(index, + false, // success + (int)error_code, + request->callback, + 0, // fetched_size + (void*)request->buffer.ptr, + request->buffer.size, + request->user_data); + } + else { + sapp_js_fetch_dropped_file(index, + request->callback, + (void*)request->buffer.ptr, + request->buffer.size, + request->user_data); + } + #else + (void)request; + #endif +} + +SOKOL_API_IMPL const void* sapp_metal_get_device(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(SOKOL_METAL) + #if defined(_SAPP_MACOS) + const void* obj = (__bridge const void*) _sapp.macos.mtl_device; + #else + const void* obj = (__bridge const void*) _sapp.ios.mtl_device; + #endif + SOKOL_ASSERT(obj); + return obj; + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_metal_get_renderpass_descriptor(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(SOKOL_METAL) + #if defined(_SAPP_MACOS) + const void* obj = (__bridge const void*) [_sapp.macos.view currentRenderPassDescriptor]; + #else + const void* obj = (__bridge const void*) [_sapp.ios.view currentRenderPassDescriptor]; + #endif + SOKOL_ASSERT(obj); + return obj; + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_metal_get_drawable(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(SOKOL_METAL) + #if defined(_SAPP_MACOS) + const void* obj = (__bridge const void*) [_sapp.macos.view currentDrawable]; + #else + const void* obj = (__bridge const void*) [_sapp.ios.view currentDrawable]; + #endif + SOKOL_ASSERT(obj); + return obj; + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_macos_get_window(void) { + #if defined(_SAPP_MACOS) + const void* obj = (__bridge const void*) _sapp.macos.window; + SOKOL_ASSERT(obj); + return obj; + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_ios_get_window(void) { + #if defined(_SAPP_IOS) + const void* obj = (__bridge const void*) _sapp.ios.window; + SOKOL_ASSERT(obj); + return obj; + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_d3d11_get_device(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(SOKOL_D3D11) + return _sapp.d3d11.device; + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_d3d11_get_device_context(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(SOKOL_D3D11) + return _sapp.d3d11.device_context; + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_d3d11_get_swap_chain(void) { + SOKOL_ASSERT(_sapp.valid); +#if defined(SOKOL_D3D11) + return _sapp.d3d11.swap_chain; +#else + return 0; +#endif +} + +SOKOL_API_IMPL const void* sapp_d3d11_get_render_target_view(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(SOKOL_D3D11) + if (_sapp.d3d11.msaa_rtv) { + return _sapp.d3d11.msaa_rtv; + } + else { + return _sapp.d3d11.rtv; + } + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_d3d11_get_depth_stencil_view(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(SOKOL_D3D11) + return _sapp.d3d11.dsv; + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_win32_get_hwnd(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(_SAPP_WIN32) + return _sapp.win32.hwnd; + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_wgpu_get_device(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(_SAPP_EMSCRIPTEN) && defined(SOKOL_WGPU) + return (const void*) _sapp.emsc.wgpu.device; + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_wgpu_get_render_view(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(_SAPP_EMSCRIPTEN) && defined(SOKOL_WGPU) + if (_sapp.sample_count > 1) { + return (const void*) _sapp.emsc.wgpu.msaa_view; + } + else { + return (const void*) _sapp.emsc.wgpu.swapchain_view; + } + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_wgpu_get_resolve_view(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(_SAPP_EMSCRIPTEN) && defined(SOKOL_WGPU) + if (_sapp.sample_count > 1) { + return (const void*) _sapp.emsc.wgpu.swapchain_view; + } + else { + return 0; + } + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_wgpu_get_depth_stencil_view(void) { + SOKOL_ASSERT(_sapp.valid); + #if defined(_SAPP_EMSCRIPTEN) && defined(SOKOL_WGPU) + return (const void*) _sapp.emsc.wgpu.depth_stencil_view; + #else + return 0; + #endif +} + +SOKOL_API_IMPL const void* sapp_android_get_native_activity(void) { + // NOTE: _sapp.valid is not asserted here because sapp_android_get_native_activity() + // needs to be callable from within sokol_main() (see: https://github.com/floooh/sokol/issues/708) + #if defined(_SAPP_ANDROID) + return (void*)_sapp.android.activity; + #else + return 0; + #endif +} + +SOKOL_API_IMPL void sapp_html5_ask_leave_site(bool ask) { + _sapp.html5_ask_leave_site = ask; +} + +#endif /* SOKOL_APP_IMPL */ diff --git a/source/engine/thirdparty/sokol/sokol_args.h b/source/engine/thirdparty/sokol/sokol_args.h new file mode 100644 index 0000000..4d37907 --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_args.h @@ -0,0 +1,845 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_ARGS_IMPL) +#define SOKOL_ARGS_IMPL +#endif +#ifndef SOKOL_ARGS_INCLUDED +/* + sokol_args.h -- cross-platform key/value arg-parsing for web and native + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_ARGS_IMPL + before you include this file in *one* C or C++ file to create the + implementation. + + Optionally provide the following defines with your own implementations: + + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_ARGS_API_DECL - public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_ARGS_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + + If sokol_args.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_ARGS_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + OVERVIEW + ======== + sokol_args.h provides a simple unified argument parsing API for WebAssembly and + native apps. + + When running as WebAssembly app, arguments are taken from the page URL: + + https://floooh.github.io/tiny8bit/kc85.html?type=kc85_3&mod=m022&snapshot=kc85/jungle.kcc + + The same arguments provided to a command line app: + + kc85 type=kc85_3 mod=m022 snapshot=kc85/jungle.kcc + + ARGUMENT FORMATTING + =================== + On the web platform, arguments must be formatted as a valid URL query string + with 'percent encoding' used for special characters. + + Strings are expected to be UTF-8 encoded (although sokol_args.h doesn't + contain any special UTF-8 handling). See below on how to obtain + UTF-8 encoded argc/argv values on Windows when using WinMain() as + entry point. + + On native platforms the following rules must be followed: + + Arguments have the general form + + key=value + + Key/value pairs are separated by 'whitespace', valid whitespace + characters are space and tab. + + Whitespace characters in front and after the separating '=' character + are ignored: + + key = value + + ...is the same as + + key=value + + The 'key' string must be a simple string without escape sequences or whitespace. + + Currently 'single keys' without values are not allowed, but may be + in the future. + + The 'value' string can be quoted, and quoted value strings can contain + whitespace: + + key = 'single-quoted value' + key = "double-quoted value" + + Single-quoted value strings can contain double quotes, and vice-versa: + + key = 'single-quoted value "can contain double-quotes"' + key = "double-quoted value 'can contain single-quotes'" + + Note that correct quoting can be tricky on some shells, since command + shells may remove quotes, unless they're escaped. + + Value strings can contain a small selection of escape sequences: + + \n - newline + \r - carriage return + \t - tab + \\ - escaped backslash + + (more escape codes may be added in the future). + + CODE EXAMPLE + ============ + + int main(int argc, char* argv[]) { + // initialize sokol_args with default parameters + sargs_setup(&(sargs_desc){ + .argc = argc, + .argv = argv + }); + + // check if a key exists... + if (sargs_exists("bla")) { + ... + } + + // get value string for key, if not found, return empty string "" + const char* val0 = sargs_value("bla"); + + // get value string for key, or default string if key not found + const char* val1 = sargs_value_def("bla", "default_value"); + + // check if a key matches expected value + if (sargs_equals("type", "kc85_4")) { + ... + } + + // check if a key's value is "true", "yes" or "on" + if (sargs_boolean("joystick_enabled")) { + ... + } + + // iterate over keys and values + for (int i = 0; i < sargs_num_args(); i++) { + printf("key: %s, value: %s\n", sargs_key_at(i), sargs_value_at(i)); + } + + // lookup argument index by key string, will return -1 if key + // is not found, sargs_key_at() and sargs_value_at() will return + // an empty string for invalid indices + int index = sargs_find("bla"); + printf("key: %s, value: %s\n", sargs_key_at(index), sargs_value_at(index)); + + // shutdown sokol-args + sargs_shutdown(); + } + + WINMAIN AND ARGC / ARGV + ======================= + On Windows with WinMain() based apps, getting UTF8-encoded command line + arguments is a bit more complicated: + + First call GetCommandLineW(), this returns the entire command line + as UTF-16 string. Then call CommandLineToArgvW(), this parses the + command line string into the usual argc/argv format (but in UTF-16). + Finally convert the UTF-16 strings in argv[] into UTF-8 via + WideCharToMultiByte(). + + See the function _sapp_win32_command_line_to_utf8_argv() in sokol_app.h + for example code how to do this (if you're using sokol_app.h, it will + already convert the command line arguments to UTF-8 for you of course, + so you can plug them directly into sokol_app.h). + + API DOCUMENTATION + ================= + void sargs_setup(const sargs_desc* desc) + Initialize sokol_args, desc contains the following configuration + parameters: + int argc - the main function's argc parameter + char** argv - the main function's argv parameter + int max_args - max number of key/value pairs, default is 16 + int buf_size - size of the internal string buffer, default is 16384 + + Note that on the web, argc and argv will be ignored and the arguments + will be taken from the page URL instead. + + sargs_setup() will allocate 2 memory chunks: one for keeping track + of the key/value args of size 'max_args*8', and a string buffer + of size 'buf_size'. + + void sargs_shutdown(void) + Shutdown sokol-args and free any allocated memory. + + bool sargs_isvalid(void) + Return true between sargs_setup() and sargs_shutdown() + + bool sargs_exists(const char* key) + Test if a key arg exists. + + const char* sargs_value(const char* key) + Return value associated with key. Returns an empty + string ("") if the key doesn't exist. + + const char* sargs_value_def(const char* key, const char* default) + Return value associated with key, or the provided default + value if the value doesn't exist. + + bool sargs_equals(const char* key, const char* val); + Return true if the value associated with key matches + the 'val' argument. + + bool sargs_boolean(const char* key) + Return true if the value string of 'key' is one + of 'true', 'yes', 'on'. + + int sargs_find(const char* key) + Find argument by key name and return its index, or -1 if not found. + + int sargs_num_args(void) + Return number of key/value pairs. + + const char* sargs_key_at(int index) + Return the key name of argument at index. Returns empty string if + is index is outside range. + + const char* sargs_value_at(int index) + Return the value of argument at index. Returns empty string + if index is outside range. + + + MEMORY ALLOCATION OVERRIDE + ========================== + You can override the memory allocation functions at initialization time + like this: + + void* my_alloc(size_t size, void* user_data) { + return malloc(size); + } + + void my_free(void* ptr, void* user_data) { + free(ptr); + } + + ... + sargs_setup(&(sargs_desc){ + // ... + .allocator = { + .alloc = my_alloc, + .free = my_free, + .user_data = ..., + } + }); + ... + + If no overrides are provided, malloc and free will be used. + + This only affects memory allocation calls done by sokol_args.h + itself though, not any allocations in OS libraries. + + TODO + ==== + - parsing errors? + + LICENSE + ======= + + zlib/libpng license + + Copyright (c) 2018 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_ARGS_INCLUDED (1) +#include +#include +#include // size_t + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_ARGS_API_DECL) +#define SOKOL_ARGS_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_ARGS_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_ARGS_IMPL) +#define SOKOL_ARGS_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_ARGS_API_DECL __declspec(dllimport) +#else +#define SOKOL_ARGS_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + sargs_allocator + + Used in sargs_desc to provide custom memory-alloc and -free functions + to sokol_args.h. If memory management should be overridden, both the + alloc and free function must be provided (e.g. it's not valid to + override one function but not the other). +*/ +typedef struct sargs_allocator { + void* (*alloc)(size_t size, void* user_data); + void (*free)(void* ptr, void* user_data); + void* user_data; +} sargs_allocator; + +typedef struct sargs_desc { + int argc; + char** argv; + int max_args; + int buf_size; + sargs_allocator allocator; +} sargs_desc; + +/* setup sokol-args */ +SOKOL_ARGS_API_DECL void sargs_setup(const sargs_desc* desc); +/* shutdown sokol-args */ +SOKOL_ARGS_API_DECL void sargs_shutdown(void); +/* true between sargs_setup() and sargs_shutdown() */ +SOKOL_ARGS_API_DECL bool sargs_isvalid(void); +/* test if an argument exists by key name */ +SOKOL_ARGS_API_DECL bool sargs_exists(const char* key); +/* get value by key name, return empty string if key doesn't exist */ +SOKOL_ARGS_API_DECL const char* sargs_value(const char* key); +/* get value by key name, return provided default if key doesn't exist */ +SOKOL_ARGS_API_DECL const char* sargs_value_def(const char* key, const char* def); +/* return true if val arg matches the value associated with key */ +SOKOL_ARGS_API_DECL bool sargs_equals(const char* key, const char* val); +/* return true if key's value is "true", "yes" or "on" */ +SOKOL_ARGS_API_DECL bool sargs_boolean(const char* key); +/* get index of arg by key name, return -1 if not exists */ +SOKOL_ARGS_API_DECL int sargs_find(const char* key); +/* get number of parsed arguments */ +SOKOL_ARGS_API_DECL int sargs_num_args(void); +/* get key name of argument at index, or empty string */ +SOKOL_ARGS_API_DECL const char* sargs_key_at(int index); +/* get value string of argument at index, or empty string */ +SOKOL_ARGS_API_DECL const char* sargs_value_at(int index); + +#ifdef __cplusplus +} /* extern "C" */ + +/* reference-based equivalents for c++ */ +inline void sargs_setup(const sargs_desc& desc) { return sargs_setup(&desc); } + +#endif +#endif // SOKOL_ARGS_INCLUDED + +/*--- IMPLEMENTATION ---------------------------------------------------------*/ +#ifdef SOKOL_ARGS_IMPL +#define SOKOL_ARGS_IMPL_INCLUDED (1) + +#if defined(SOKOL_MALLOC) || defined(SOKOL_CALLOC) || defined(SOKOL_FREE) +#error "SOKOL_MALLOC/CALLOC/FREE macros are no longer supported, please use sargs_desc.allocator to override memory allocation functions" +#endif + +#include // memset, strcmp +#include // malloc, free + +#if defined(__EMSCRIPTEN__) +#include +#endif + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_DEBUG + #ifndef NDEBUG + #define SOKOL_DEBUG + #endif +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif + +#ifndef _SOKOL_PRIVATE + #if defined(__GNUC__) || defined(__clang__) + #define _SOKOL_PRIVATE __attribute__((unused)) static + #else + #define _SOKOL_PRIVATE static + #endif +#endif + +#define _sargs_def(val, def) (((val) == 0) ? (def) : (val)) + +#define _SARGS_MAX_ARGS_DEF (16) +#define _SARGS_BUF_SIZE_DEF (16*1024) + +/* parser state */ +#define _SARGS_EXPECT_KEY (1<<0) +#define _SARGS_EXPECT_SEP (1<<1) +#define _SARGS_EXPECT_VAL (1<<2) +#define _SARGS_PARSING_KEY (1<<3) +#define _SARGS_PARSING_VAL (1<<4) +#define _SARGS_ERROR (1<<5) + +/* a key/value pair struct */ +typedef struct { + int key; /* index to start of key string in buf */ + int val; /* index to start of value string in buf */ +} _sargs_kvp_t; + +/* sokol-args state */ +typedef struct { + int max_args; /* number of key/value pairs in args array */ + int num_args; /* number of valid items in args array */ + _sargs_kvp_t* args; /* key/value pair array */ + int buf_size; /* size of buffer in bytes */ + int buf_pos; /* current buffer position */ + char* buf; /* character buffer, first char is reserved and zero for 'empty string' */ + bool valid; + uint32_t parse_state; + char quote; /* current quote char, 0 if not in a quote */ + bool in_escape; /* currently in an escape sequence */ + sargs_allocator allocator; +} _sargs_state_t; +static _sargs_state_t _sargs; + +/*== PRIVATE IMPLEMENTATION FUNCTIONS ========================================*/ +_SOKOL_PRIVATE void _sargs_clear(void* ptr, size_t size) { + SOKOL_ASSERT(ptr && (size > 0)); + memset(ptr, 0, size); +} + +_SOKOL_PRIVATE void* _sargs_malloc(size_t size) { + SOKOL_ASSERT(size > 0); + void* ptr; + if (_sargs.allocator.alloc) { + ptr = _sargs.allocator.alloc(size, _sargs.allocator.user_data); + } + else { + ptr = malloc(size); + } + SOKOL_ASSERT(ptr); + return ptr; +} + +_SOKOL_PRIVATE void* _sargs_malloc_clear(size_t size) { + void* ptr = _sargs_malloc(size); + _sargs_clear(ptr, size); + return ptr; +} + +_SOKOL_PRIVATE void _sargs_free(void* ptr) { + if (_sargs.allocator.free) { + _sargs.allocator.free(ptr, _sargs.allocator.user_data); + } + else { + free(ptr); + } +} + +_SOKOL_PRIVATE void _sargs_putc(char c) { + if ((_sargs.buf_pos+2) < _sargs.buf_size) { + _sargs.buf[_sargs.buf_pos++] = c; + } +} + +_SOKOL_PRIVATE const char* _sargs_str(int index) { + SOKOL_ASSERT((index >= 0) && (index < _sargs.buf_size)); + return &_sargs.buf[index]; +} + +/*-- argument parser functions ------------------*/ +_SOKOL_PRIVATE void _sargs_expect_key(void) { + _sargs.parse_state = _SARGS_EXPECT_KEY; +} + +_SOKOL_PRIVATE bool _sargs_key_expected(void) { + return 0 != (_sargs.parse_state & _SARGS_EXPECT_KEY); +} + +_SOKOL_PRIVATE void _sargs_expect_val(void) { + _sargs.parse_state = _SARGS_EXPECT_VAL; +} + +_SOKOL_PRIVATE bool _sargs_val_expected(void) { + return 0 != (_sargs.parse_state & _SARGS_EXPECT_VAL); +} + +_SOKOL_PRIVATE void _sargs_expect_sep(void) { + _sargs.parse_state = _SARGS_EXPECT_SEP; +} + +_SOKOL_PRIVATE bool _sargs_any_expected(void) { + return 0 != (_sargs.parse_state & (_SARGS_EXPECT_KEY | _SARGS_EXPECT_VAL | _SARGS_EXPECT_SEP)); +} + +_SOKOL_PRIVATE bool _sargs_is_separator(char c) { + return c == '='; +} + +_SOKOL_PRIVATE bool _sargs_is_quote(char c) { + if (0 == _sargs.quote) { + return (c == '\'') || (c == '"'); + } + else { + return c == _sargs.quote; + } +} + +_SOKOL_PRIVATE void _sargs_begin_quote(char c) { + _sargs.quote = c; +} + +_SOKOL_PRIVATE void _sargs_end_quote(void) { + _sargs.quote = 0; +} + +_SOKOL_PRIVATE bool _sargs_in_quotes(void) { + return 0 != _sargs.quote; +} + +_SOKOL_PRIVATE bool _sargs_is_whitespace(char c) { + return !_sargs_in_quotes() && ((c == ' ') || (c == '\t')); +} + +_SOKOL_PRIVATE void _sargs_start_key(void) { + SOKOL_ASSERT(_sargs.num_args < _sargs.max_args); + _sargs.parse_state = _SARGS_PARSING_KEY; + _sargs.args[_sargs.num_args].key = _sargs.buf_pos; +} + +_SOKOL_PRIVATE void _sargs_end_key(void) { + SOKOL_ASSERT(_sargs.num_args < _sargs.max_args); + _sargs_putc(0); + _sargs.parse_state = 0; +} + +_SOKOL_PRIVATE bool _sargs_parsing_key(void) { + return 0 != (_sargs.parse_state & _SARGS_PARSING_KEY); +} + +_SOKOL_PRIVATE void _sargs_start_val(void) { + SOKOL_ASSERT(_sargs.num_args < _sargs.max_args); + _sargs.parse_state = _SARGS_PARSING_VAL; + _sargs.args[_sargs.num_args].val = _sargs.buf_pos; +} + +_SOKOL_PRIVATE void _sargs_end_val(void) { + SOKOL_ASSERT(_sargs.num_args < _sargs.max_args); + _sargs_putc(0); + _sargs.num_args++; + _sargs.parse_state = 0; +} + +_SOKOL_PRIVATE bool _sargs_is_escape(char c) { + return '\\' == c; +} + +_SOKOL_PRIVATE void _sargs_start_escape(void) { + _sargs.in_escape = true; +} + +_SOKOL_PRIVATE bool _sargs_in_escape(void) { + return _sargs.in_escape; +} + +_SOKOL_PRIVATE char _sargs_escape(char c) { + switch (c) { + case 'n': return '\n'; + case 't': return '\t'; + case 'r': return '\r'; + case '\\': return '\\'; + default: return c; + } +} + +_SOKOL_PRIVATE void _sargs_end_escape(void) { + _sargs.in_escape = false; +} + +_SOKOL_PRIVATE bool _sargs_parsing_val(void) { + return 0 != (_sargs.parse_state & _SARGS_PARSING_VAL); +} + +_SOKOL_PRIVATE bool _sargs_parse_carg(const char* src) { + char c; + while (0 != (c = *src++)) { + if (_sargs_in_escape()) { + c = _sargs_escape(c); + _sargs_end_escape(); + } + else if (_sargs_is_escape(c)) { + _sargs_start_escape(); + continue; + } + if (_sargs_any_expected()) { + if (!_sargs_is_whitespace(c)) { + /* start of key, value or separator */ + if (_sargs_key_expected()) { + /* start of new key */ + _sargs_start_key(); + } + else if (_sargs_val_expected()) { + /* start of value */ + if (_sargs_is_quote(c)) { + _sargs_begin_quote(c); + continue; + } + _sargs_start_val(); + } + else { + /* separator */ + if (_sargs_is_separator(c)) { + _sargs_expect_val(); + continue; + } + } + } + else { + /* skip white space */ + continue; + } + } + else if (_sargs_parsing_key()) { + if (_sargs_is_whitespace(c) || _sargs_is_separator(c)) { + /* end of key string */ + _sargs_end_key(); + if (_sargs_is_separator(c)) { + _sargs_expect_val(); + } + else { + _sargs_expect_sep(); + } + continue; + } + } + else if (_sargs_parsing_val()) { + if (_sargs_in_quotes()) { + /* when in quotes, whitespace is a normal character + and a matching quote ends the value string + */ + if (_sargs_is_quote(c)) { + _sargs_end_quote(); + _sargs_end_val(); + _sargs_expect_key(); + continue; + } + } + else if (_sargs_is_whitespace(c)) { + /* end of value string (no quotes) */ + _sargs_end_val(); + _sargs_expect_key(); + continue; + } + } + _sargs_putc(c); + } + if (_sargs_parsing_key()) { + _sargs_end_key(); + _sargs_expect_sep(); + } + else if (_sargs_parsing_val() && !_sargs_in_quotes()) { + _sargs_end_val(); + _sargs_expect_key(); + } + return true; +} + +_SOKOL_PRIVATE bool _sargs_parse_cargs(int argc, const char** argv) { + _sargs_expect_key(); + bool retval = true; + for (int i = 1; i < argc; i++) { + retval &= _sargs_parse_carg(argv[i]); + } + _sargs.parse_state = 0; + return retval; +} + +/*-- EMSCRIPTEN IMPLEMENTATION -----------------------------------------------*/ +#if defined(__EMSCRIPTEN__) + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(EM_JS_DEPS) +EM_JS_DEPS(sokol_audio, "$withStackSave,$allocateUTF8OnStack"); +#endif + +EMSCRIPTEN_KEEPALIVE void _sargs_add_kvp(const char* key, const char* val) { + SOKOL_ASSERT(_sargs.valid && key && val); + if (_sargs.num_args >= _sargs.max_args) { + return; + } + + /* copy key string */ + char c; + _sargs.args[_sargs.num_args].key = _sargs.buf_pos; + const char* ptr = key; + while (0 != (c = *ptr++)) { + _sargs_putc(c); + } + _sargs_putc(0); + + /* copy value string */ + _sargs.args[_sargs.num_args].val = _sargs.buf_pos; + ptr = val; + while (0 != (c = *ptr++)) { + _sargs_putc(c); + } + _sargs_putc(0); + + _sargs.num_args++; +} +#ifdef __cplusplus +} /* extern "C" */ +#endif + +/* JS function to extract arguments from the page URL */ +EM_JS(void, sargs_js_parse_url, (void), { + const params = new URLSearchParams(window.location.search).entries(); + for (let p = params.next(); !p.done; p = params.next()) { + const key = p.value[0]; + const val = p.value[1]; + withStackSave(() => { + const key_cstr = allocateUTF8OnStack(key); + const val_cstr = allocateUTF8OnStack(val); + __sargs_add_kvp(key_cstr, val_cstr) + }); + } +}); + +#endif /* EMSCRIPTEN */ + +/*== PUBLIC IMPLEMENTATION FUNCTIONS =========================================*/ +SOKOL_API_IMPL void sargs_setup(const sargs_desc* desc) { + SOKOL_ASSERT(desc); + _sargs_clear(&_sargs, sizeof(_sargs)); + _sargs.max_args = _sargs_def(desc->max_args, _SARGS_MAX_ARGS_DEF); + _sargs.buf_size = _sargs_def(desc->buf_size, _SARGS_BUF_SIZE_DEF); + SOKOL_ASSERT(_sargs.buf_size > 8); + _sargs.args = (_sargs_kvp_t*) _sargs_malloc_clear((size_t)_sargs.max_args * sizeof(_sargs_kvp_t)); + _sargs.buf = (char*) _sargs_malloc_clear((size_t)_sargs.buf_size * sizeof(char)); + /* the first character in buf is reserved and always zero, this is the 'empty string' */ + _sargs.buf_pos = 1; + _sargs.allocator = desc->allocator; + _sargs.valid = true; + + /* parse argc/argv */ + _sargs_parse_cargs(desc->argc, (const char**) desc->argv); + + #if defined(__EMSCRIPTEN__) + /* on emscripten, also parse the page URL*/ + sargs_js_parse_url(); + #endif +} + +SOKOL_API_IMPL void sargs_shutdown(void) { + SOKOL_ASSERT(_sargs.valid); + if (_sargs.args) { + _sargs_free(_sargs.args); + _sargs.args = 0; + } + if (_sargs.buf) { + _sargs_free(_sargs.buf); + _sargs.buf = 0; + } + _sargs.valid = false; +} + +SOKOL_API_IMPL bool sargs_isvalid(void) { + return _sargs.valid; +} + +SOKOL_API_IMPL int sargs_find(const char* key) { + SOKOL_ASSERT(_sargs.valid && key); + for (int i = 0; i < _sargs.num_args; i++) { + if (0 == strcmp(_sargs_str(_sargs.args[i].key), key)) { + return i; + } + } + return -1; +} + +SOKOL_API_IMPL int sargs_num_args(void) { + SOKOL_ASSERT(_sargs.valid); + return _sargs.num_args; +} + +SOKOL_API_IMPL const char* sargs_key_at(int index) { + SOKOL_ASSERT(_sargs.valid); + if ((index >= 0) && (index < _sargs.num_args)) { + return _sargs_str(_sargs.args[index].key); + } + else { + /* index 0 is always the empty string */ + return _sargs_str(0); + } +} + +SOKOL_API_IMPL const char* sargs_value_at(int index) { + SOKOL_ASSERT(_sargs.valid); + if ((index >= 0) && (index < _sargs.num_args)) { + return _sargs_str(_sargs.args[index].val); + } + else { + /* index 0 is always the empty string */ + return _sargs_str(0); + } +} + +SOKOL_API_IMPL bool sargs_exists(const char* key) { + SOKOL_ASSERT(_sargs.valid && key); + return -1 != sargs_find(key); +} + +SOKOL_API_IMPL const char* sargs_value(const char* key) { + SOKOL_ASSERT(_sargs.valid && key); + return sargs_value_at(sargs_find(key)); +} + +SOKOL_API_IMPL const char* sargs_value_def(const char* key, const char* def) { + SOKOL_ASSERT(_sargs.valid && key && def); + int arg_index = sargs_find(key); + if (-1 != arg_index) { + return sargs_value_at(arg_index); + } + else { + return def; + } +} + +SOKOL_API_IMPL bool sargs_equals(const char* key, const char* val) { + SOKOL_ASSERT(_sargs.valid && key && val); + return 0 == strcmp(sargs_value(key), val); +} + +SOKOL_API_IMPL bool sargs_boolean(const char* key) { + const char* val = sargs_value(key); + return (0 == strcmp("true", val)) || + (0 == strcmp("yes", val)) || + (0 == strcmp("on", val)); +} + +#endif /* SOKOL_ARGS_IMPL */ diff --git a/source/engine/thirdparty/sokol/sokol_audio.h b/source/engine/thirdparty/sokol/sokol_audio.h new file mode 100644 index 0000000..bdd6953 --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_audio.h @@ -0,0 +1,2596 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_AUDIO_IMPL) +#define SOKOL_AUDIO_IMPL +#endif +#ifndef SOKOL_AUDIO_INCLUDED +/* + sokol_audio.h -- cross-platform audio-streaming API + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_AUDIO_IMPL + before you include this file in *one* C or C++ file to create the + implementation. + + Optionally provide the following defines with your own implementations: + + SOKOL_DUMMY_BACKEND - use a dummy backend + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_AUDIO_API_DECL- public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_AUDIO_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + + SAUDIO_RING_MAX_SLOTS - max number of slots in the push-audio ring buffer (default 1024) + SAUDIO_OSX_USE_SYSTEM_HEADERS - define this to force inclusion of system headers on + macOS instead of using embedded CoreAudio declarations + SAUDIO_ANDROID_AAUDIO - on Android, select the AAudio backend (default) + SAUDIO_ANDROID_SLES - on Android, select the OpenSLES backend + + If sokol_audio.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_AUDIO_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + Link with the following libraries: + + - on macOS: AudioToolbox + - on iOS: AudioToolbox, AVFoundation + - on Linux: asound + - on Android: link with OpenSLES or aaudio + - on Windows with MSVC or Clang toolchain: no action needed, libs are defined in-source via pragma-comment-lib + - on Windows with MINGW/MSYS2 gcc: compile with '-mwin32' and link with -lole32 + + FEATURE OVERVIEW + ================ + You provide a mono- or stereo-stream of 32-bit float samples, which + Sokol Audio feeds into platform-specific audio backends: + + - Windows: WASAPI + - Linux: ALSA + - macOS: CoreAudio + - iOS: CoreAudio+AVAudioSession + - emscripten: WebAudio with ScriptProcessorNode + - Android: AAudio (default) or OpenSLES, select at build time + + Sokol Audio will not do any buffer mixing or volume control, if you have + multiple independent input streams of sample data you need to perform the + mixing yourself before forwarding the data to Sokol Audio. + + There are two mutually exclusive ways to provide the sample data: + + 1. Callback model: You provide a callback function, which will be called + when Sokol Audio needs new samples. On all platforms except emscripten, + this function is called from a separate thread. + 2. Push model: Your code pushes small blocks of sample data from your + main loop or a thread you created. The pushed data is stored in + a ring buffer where it is pulled by the backend code when + needed. + + The callback model is preferred because it is the most direct way to + feed sample data into the audio backends and also has less moving parts + (there is no ring buffer between your code and the audio backend). + + Sometimes it is not possible to generate the audio stream directly in a + callback function running in a separate thread, for such cases Sokol Audio + provides the push-model as a convenience. + + SOKOL AUDIO, SOLOUD AND MINIAUDIO + ================================= + The WASAPI, ALSA, OpenSLES and CoreAudio backend code has been taken from the + SoLoud library (with some modifications, so any bugs in there are most + likely my fault). If you need a more fully-featured audio solution, check + out SoLoud, it's excellent: + + https://github.com/jarikomppa/soloud + + Another alternative which feature-wise is somewhere inbetween SoLoud and + sokol-audio might be MiniAudio: + + https://github.com/mackron/miniaudio + + GLOSSARY + ======== + - stream buffer: + The internal audio data buffer, usually provided by the backend API. The + size of the stream buffer defines the base latency, smaller buffers have + lower latency but may cause audio glitches. Bigger buffers reduce or + eliminate glitches, but have a higher base latency. + + - stream callback: + Optional callback function which is called by Sokol Audio when it + needs new samples. On Windows, macOS/iOS and Linux, this is called in + a separate thread, on WebAudio, this is called per-frame in the + browser thread. + + - channel: + A discrete track of audio data, currently 1-channel (mono) and + 2-channel (stereo) is supported and tested. + + - sample: + The magnitude of an audio signal on one channel at a given time. In + Sokol Audio, samples are 32-bit float numbers in the range -1.0 to + +1.0. + + - frame: + The tightly packed set of samples for all channels at a given time. + For mono 1 frame is 1 sample. For stereo, 1 frame is 2 samples. + + - packet: + In Sokol Audio, a small chunk of audio data that is moved from the + main thread to the audio streaming thread in order to decouple the + rate at which the main thread provides new audio data, and the + streaming thread consuming audio data. + + WORKING WITH SOKOL AUDIO + ======================== + First call saudio_setup() with your preferred audio playback options. + In most cases you can stick with the default values, these provide + a good balance between low-latency and glitch-free playback + on all audio backends. + + You should always provide a logging callback to be aware of any + warnings and errors. The easiest way is to use sokol_log.h for this: + + #include "sokol_log.h" + // ... + saudio_setup(&(saudio_desc){ + .logger = { + .func = slog_func, + } + }); + + If you want to use the callback-model, you need to provide a stream + callback function either in saudio_desc.stream_cb or saudio_desc.stream_userdata_cb, + otherwise keep both function pointers zero-initialized. + + Use push model and default playback parameters: + + saudio_setup(&(saudio_desc){ .logger.func = slog_func }); + + Use stream callback model and default playback parameters: + + saudio_setup(&(saudio_desc){ + .stream_cb = my_stream_callback + .logger.func = slog_func, + }); + + The standard stream callback doesn't have a user data argument, if you want + that, use the alternative stream_userdata_cb and also set the user_data pointer: + + saudio_setup(&(saudio_desc){ + .stream_userdata_cb = my_stream_callback, + .user_data = &my_data + .logger.func = slog_func, + }); + + The following playback parameters can be provided through the + saudio_desc struct: + + General parameters (both for stream-callback and push-model): + + int sample_rate -- the sample rate in Hz, default: 44100 + int num_channels -- number of channels, default: 1 (mono) + int buffer_frames -- number of frames in streaming buffer, default: 2048 + + The stream callback prototype (either with or without userdata): + + void (*stream_cb)(float* buffer, int num_frames, int num_channels) + void (*stream_userdata_cb)(float* buffer, int num_frames, int num_channels, void* user_data) + Function pointer to the user-provide stream callback. + + Push-model parameters: + + int packet_frames -- number of frames in a packet, default: 128 + int num_packets -- number of packets in ring buffer, default: 64 + + The sample_rate and num_channels parameters are only hints for the audio + backend, it isn't guaranteed that those are the values used for actual + playback. + + To get the actual parameters, call the following functions after + saudio_setup(): + + int saudio_sample_rate(void) + int saudio_channels(void); + + It's unlikely that the number of channels will be different than requested, + but a different sample rate isn't uncommon. + + (NOTE: there's an yet unsolved issue when an audio backend might switch + to a different sample rate when switching output devices, for instance + plugging in a bluetooth headset, this case is currently not handled in + Sokol Audio). + + You can check if audio initialization was successful with + saudio_isvalid(). If backend initialization failed for some reason + (for instance when there's no audio device in the machine), this + will return false. Not checking for success won't do any harm, all + Sokol Audio function will silently fail when called after initialization + has failed, so apart from missing audio output, nothing bad will happen. + + Before your application exits, you should call + + saudio_shutdown(); + + This stops the audio thread (on Linux, Windows and macOS/iOS) and + properly shuts down the audio backend. + + THE STREAM CALLBACK MODEL + ========================= + To use Sokol Audio in stream-callback-mode, provide a callback function + like this in the saudio_desc struct when calling saudio_setup(): + + void stream_cb(float* buffer, int num_frames, int num_channels) { + ... + } + + Or the alternative version with a user-data argument: + + void stream_userdata_cb(float* buffer, int num_frames, int num_channels, void* user_data) { + my_data_t* my_data = (my_data_t*) user_data; + ... + } + + The job of the callback function is to fill the *buffer* with 32-bit + float sample values. + + To output silence, fill the buffer with zeros: + + void stream_cb(float* buffer, int num_frames, int num_channels) { + const int num_samples = num_frames * num_channels; + for (int i = 0; i < num_samples; i++) { + buffer[i] = 0.0f; + } + } + + For stereo output (num_channels == 2), the samples for the left + and right channel are interleaved: + + void stream_cb(float* buffer, int num_frames, int num_channels) { + assert(2 == num_channels); + for (int i = 0; i < num_frames; i++) { + buffer[2*i + 0] = ...; // left channel + buffer[2*i + 1] = ...; // right channel + } + } + + Please keep in mind that the stream callback function is running in a + separate thread, if you need to share data with the main thread you need + to take care yourself to make the access to the shared data thread-safe! + + THE PUSH MODEL + ============== + To use the push-model for providing audio data, simply don't set (keep + zero-initialized) the stream_cb field in the saudio_desc struct when + calling saudio_setup(). + + To provide sample data with the push model, call the saudio_push() + function at regular intervals (for instance once per frame). You can + call the saudio_expect() function to ask Sokol Audio how much room is + in the ring buffer, but if you provide a continuous stream of data + at the right sample rate, saudio_expect() isn't required (it's a simple + way to sync/throttle your sample generation code with the playback + rate though). + + With saudio_push() you may need to maintain your own intermediate sample + buffer, since pushing individual sample values isn't very efficient. + The following example is from the MOD player sample in + sokol-samples (https://github.com/floooh/sokol-samples): + + const int num_frames = saudio_expect(); + if (num_frames > 0) { + const int num_samples = num_frames * saudio_channels(); + read_samples(flt_buf, num_samples); + saudio_push(flt_buf, num_frames); + } + + Another option is to ignore saudio_expect(), and just push samples as they + are generated in small batches. In this case you *need* to generate the + samples at the right sample rate: + + The following example is taken from the Tiny Emulators project + (https://github.com/floooh/chips-test), this is for mono playback, + so (num_samples == num_frames): + + // tick the sound generator + if (ay38910_tick(&sys->psg)) { + // new sample is ready + sys->sample_buffer[sys->sample_pos++] = sys->psg.sample; + if (sys->sample_pos == sys->num_samples) { + // new sample packet is ready + saudio_push(sys->sample_buffer, sys->num_samples); + sys->sample_pos = 0; + } + } + + THE WEBAUDIO BACKEND + ==================== + The WebAudio backend is currently using a ScriptProcessorNode callback to + feed the sample data into WebAudio. ScriptProcessorNode has been + deprecated for a while because it is running from the main thread, with + the default initialization parameters it works 'pretty well' though. + Ultimately Sokol Audio will use Audio Worklets, but this requires a few + more things to fall into place (Audio Worklets implemented everywhere, + SharedArrayBuffers enabled again, and I need to figure out a 'low-cost' + solution in terms of implementation effort, since Audio Worklets are + a lot more complex than ScriptProcessorNode if the audio data needs to come + from the main thread). + + The WebAudio backend is automatically selected when compiling for + emscripten (__EMSCRIPTEN__ define exists). + + https://developers.google.com/web/updates/2017/12/audio-worklet + https://developers.google.com/web/updates/2018/06/audio-worklet-design-pattern + + "Blob URLs": https://www.html5rocks.com/en/tutorials/workers/basics/ + + Also see: https://blog.paul.cx/post/a-wait-free-spsc-ringbuffer-for-the-web/ + + THE COREAUDIO BACKEND + ===================== + The CoreAudio backend is selected on macOS and iOS (__APPLE__ is defined). + Since the CoreAudio API is implemented in C (not Objective-C) on macOS the + implementation part of Sokol Audio can be included into a C source file. + + However on iOS, Sokol Audio must be compiled as Objective-C due to it's + reliance on the AVAudioSession object. The iOS code path support both + being compiled with or without ARC (Automatic Reference Counting). + + For thread synchronisation, the CoreAudio backend will use the + pthread_mutex_* functions. + + The incoming floating point samples will be directly forwarded to + CoreAudio without further conversion. + + macOS and iOS applications that use Sokol Audio need to link with + the AudioToolbox framework. + + THE WASAPI BACKEND + ================== + The WASAPI backend is automatically selected when compiling on Windows + (_WIN32 is defined). + + For thread synchronisation a Win32 critical section is used. + + WASAPI may use a different size for its own streaming buffer then requested, + so the base latency may be slightly bigger. The current backend implementation + converts the incoming floating point sample values to signed 16-bit + integers. + + The required Windows system DLLs are linked with #pragma comment(lib, ...), + so you shouldn't need to add additional linker libs in the build process + (otherwise this is a bug which should be fixed in sokol_audio.h). + + THE ALSA BACKEND + ================ + The ALSA backend is automatically selected when compiling on Linux + ('linux' is defined). + + For thread synchronisation, the pthread_mutex_* functions are used. + + Samples are directly forwarded to ALSA in 32-bit float format, no + further conversion is taking place. + + You need to link with the 'asound' library, and the + header must be present (usually both are installed with some sort + of ALSA development package). + + + MEMORY ALLOCATION OVERRIDE + ========================== + You can override the memory allocation functions at initialization time + like this: + + void* my_alloc(size_t size, void* user_data) { + return malloc(size); + } + + void my_free(void* ptr, void* user_data) { + free(ptr); + } + + ... + saudio_setup(&(saudio_desc){ + // ... + .allocator = { + .alloc = my_alloc, + .free = my_free, + .user_data = ..., + } + }); + ... + + If no overrides are provided, malloc and free will be used. + + This only affects memory allocation calls done by sokol_audio.h + itself though, not any allocations in OS libraries. + + Memory allocation will only happen on the same thread where saudio_setup() + was called, so you don't need to worry about thread-safety. + + + ERROR REPORTING AND LOGGING + =========================== + To get any logging information at all you need to provide a logging callback in the setup call + the easiest way is to use sokol_log.h: + + #include "sokol_log.h" + + saudio_setup(&(saudio_desc){ .logger.func = slog_func }); + + To override logging with your own callback, first write a logging function like this: + + void my_log(const char* tag, // e.g. 'saudio' + uint32_t log_level, // 0=panic, 1=error, 2=warn, 3=info + uint32_t log_item_id, // SAUDIO_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_audio.h + const char* filename_or_null, // source filename, may be nullptr in release mode + void* user_data) + { + ... + } + + ...and then setup sokol-audio like this: + + saudio_setup(&(saudio_desc){ + .logger = { + .func = my_log, + .user_data = my_user_data, + } + }); + + The provided logging function must be reentrant (e.g. be callable from + different threads). + + If you don't want to provide your own custom logger it is highly recommended to use + the standard logger in sokol_log.h instead, otherwise you won't see any warnings or + errors. + + LICENSE + ======= + + zlib/libpng license + + Copyright (c) 2018 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_AUDIO_INCLUDED (1) +#include // size_t +#include +#include + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_AUDIO_API_DECL) +#define SOKOL_AUDIO_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_AUDIO_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_AUDIO_IMPL) +#define SOKOL_AUDIO_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_AUDIO_API_DECL __declspec(dllimport) +#else +#define SOKOL_AUDIO_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + saudio_log_item + + Log items are defined via X-Macros, and expanded to an + enum 'saudio_log_item', and in debug mode only, + corresponding strings. + + Used as parameter in the logging callback. +*/ +#define _SAUDIO_LOG_ITEMS \ + _SAUDIO_LOGITEM_XMACRO(OK, "Ok") \ + _SAUDIO_LOGITEM_XMACRO(MALLOC_FAILED, "memory allocation failed") \ + _SAUDIO_LOGITEM_XMACRO(ALSA_SND_PCM_OPEN_FAILED, "snd_pcm_open() failed") \ + _SAUDIO_LOGITEM_XMACRO(ALSA_FLOAT_SAMPLES_NOT_SUPPORTED, "floating point sample format not supported") \ + _SAUDIO_LOGITEM_XMACRO(ALSA_REQUESTED_BUFFER_SIZE_NOT_SUPPORTED, "requested buffer size not supported") \ + _SAUDIO_LOGITEM_XMACRO(ALSA_REQUESTED_CHANNEL_COUNT_NOT_SUPPORTED, "requested channel count not supported") \ + _SAUDIO_LOGITEM_XMACRO(ALSA_SND_PCM_HW_PARAMS_SET_RATE_NEAR_FAILED, "snd_pcm_hw_params_set_rate_near() failed") \ + _SAUDIO_LOGITEM_XMACRO(ALSA_SND_PCM_HW_PARAMS_FAILED, "snd_pcm_hw_params() failed") \ + _SAUDIO_LOGITEM_XMACRO(ALSA_PTHREAD_CREATE_FAILED, "pthread_create() failed") \ + _SAUDIO_LOGITEM_XMACRO(WASAPI_CREATE_EVENT_FAILED, "CreateEvent() failed") \ + _SAUDIO_LOGITEM_XMACRO(WASAPI_CREATE_DEVICE_ENUMERATOR_FAILED, "CoCreateInstance() for IMMDeviceEnumerator failed") \ + _SAUDIO_LOGITEM_XMACRO(WASAPI_GET_DEFAULT_AUDIO_ENDPOINT_FAILED, "IMMDeviceEnumerator.GetDefaultAudioEndpoint() failed") \ + _SAUDIO_LOGITEM_XMACRO(WASAPI_DEVICE_ACTIVATE_FAILED, "IMMDevice.Activate() failed") \ + _SAUDIO_LOGITEM_XMACRO(WASAPI_AUDIO_CLIENT_INITIALIZE_FAILED, "IAudioClient.Initialize() failed") \ + _SAUDIO_LOGITEM_XMACRO(WASAPI_AUDIO_CLIENT_GET_BUFFER_SIZE_FAILED, "IAudioClient.GetBufferSize() failed") \ + _SAUDIO_LOGITEM_XMACRO(WASAPI_AUDIO_CLIENT_GET_SERVICE_FAILED, "IAudioClient.GetService() failed") \ + _SAUDIO_LOGITEM_XMACRO(WASAPI_AUDIO_CLIENT_SET_EVENT_HANDLE_FAILED, "IAudioClient.SetEventHandle() failed") \ + _SAUDIO_LOGITEM_XMACRO(WASAPI_CREATE_THREAD_FAILED, "CreateThread() failed") \ + _SAUDIO_LOGITEM_XMACRO(AAUDIO_STREAMBUILDER_OPEN_STREAM_FAILED, "AAudioStreamBuilder_openStream() failed") \ + _SAUDIO_LOGITEM_XMACRO(AAUDIO_PTHREAD_CREATE_FAILED, "pthread_create() failed after AAUDIO_ERROR_DISCONNECTED") \ + _SAUDIO_LOGITEM_XMACRO(AAUDIO_RESTARTING_STREAM_AFTER_ERROR, "restarting AAudio stream after error") \ + _SAUDIO_LOGITEM_XMACRO(USING_AAUDIO_BACKEND, "using AAudio backend") \ + _SAUDIO_LOGITEM_XMACRO(AAUDIO_CREATE_STREAMBUILDER_FAILED, "AAudio_createStreamBuilder() failed") \ + _SAUDIO_LOGITEM_XMACRO(USING_SLES_BACKEND, "using OpenSLES backend") \ + _SAUDIO_LOGITEM_XMACRO(SLES_CREATE_ENGINE_FAILED, "slCreateEngine() failed") \ + _SAUDIO_LOGITEM_XMACRO(SLES_ENGINE_GET_ENGINE_INTERFACE_FAILED, "GetInterface() for SL_IID_ENGINE failed") \ + _SAUDIO_LOGITEM_XMACRO(SLES_CREATE_OUTPUT_MIX_FAILED, "CreateOutputMix() failed") \ + _SAUDIO_LOGITEM_XMACRO(SLES_MIXER_GET_VOLUME_INTERFACE_FAILED, "GetInterface() for SL_IID_VOLUME failed") \ + _SAUDIO_LOGITEM_XMACRO(SLES_ENGINE_CREATE_AUDIO_PLAYER_FAILED, "CreateAudioPlayer() failed") \ + _SAUDIO_LOGITEM_XMACRO(SLES_PLAYER_GET_PLAY_INTERFACE_FAILED, "GetInterface() for SL_IID_PLAY failed") \ + _SAUDIO_LOGITEM_XMACRO(SLES_PLAYER_GET_VOLUME_INTERFACE_FAILED, "GetInterface() for SL_IID_VOLUME failed") \ + _SAUDIO_LOGITEM_XMACRO(SLES_PLAYER_GET_BUFFERQUEUE_INTERFACE_FAILED, "GetInterface() for SL_IID_ANDROIDSIMPLEBUFFERQUEUE failed") \ + _SAUDIO_LOGITEM_XMACRO(COREAUDIO_NEW_OUTPUT_FAILED, "AudioQueueNewOutput() failed") \ + _SAUDIO_LOGITEM_XMACRO(COREAUDIO_ALLOCATE_BUFFER_FAILED, "AudioQueueAllocateBuffer() failed") \ + _SAUDIO_LOGITEM_XMACRO(COREAUDIO_START_FAILED, "AudioQueueStart() failed") \ + _SAUDIO_LOGITEM_XMACRO(BACKEND_BUFFER_SIZE_ISNT_MULTIPLE_OF_PACKET_SIZE, "backend buffer size isn't multiple of packet size") \ + +#define _SAUDIO_LOGITEM_XMACRO(item,msg) SAUDIO_LOGITEM_##item, +typedef enum saudio_log_item { + _SAUDIO_LOG_ITEMS +} saudio_log_item; +#undef _SAUDIO_LOGITEM_XMACRO + +/* + saudio_logger + + Used in saudio_desc to provide a custom logging and error reporting + callback to sokol-audio. +*/ +typedef struct saudio_logger { + void (*func)( + const char* tag, // always "saudio" + uint32_t log_level, // 0=panic, 1=error, 2=warning, 3=info + uint32_t log_item_id, // SAUDIO_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_audio.h + const char* filename_or_null, // source filename, may be nullptr in release mode + void* user_data); + void* user_data; +} saudio_logger; + +/* + saudio_allocator + + Used in saudio_desc to provide custom memory-alloc and -free functions + to sokol_audio.h. If memory management should be overridden, both the + alloc and free function must be provided (e.g. it's not valid to + override one function but not the other). +*/ +typedef struct saudio_allocator { + void* (*alloc)(size_t size, void* user_data); + void (*free)(void* ptr, void* user_data); + void* user_data; +} saudio_allocator; + +typedef struct saudio_desc { + int sample_rate; // requested sample rate + int num_channels; // number of channels, default: 1 (mono) + int buffer_frames; // number of frames in streaming buffer + int packet_frames; // number of frames in a packet + int num_packets; // number of packets in packet queue + void (*stream_cb)(float* buffer, int num_frames, int num_channels); // optional streaming callback (no user data) + void (*stream_userdata_cb)(float* buffer, int num_frames, int num_channels, void* user_data); //... and with user data + void* user_data; // optional user data argument for stream_userdata_cb + saudio_allocator allocator; // optional allocation override functions + saudio_logger logger; // optional logging function (default: NO LOGGING!) +} saudio_desc; + +/* setup sokol-audio */ +SOKOL_AUDIO_API_DECL void saudio_setup(const saudio_desc* desc); +/* shutdown sokol-audio */ +SOKOL_AUDIO_API_DECL void saudio_shutdown(void); +/* true after setup if audio backend was successfully initialized */ +SOKOL_AUDIO_API_DECL bool saudio_isvalid(void); +/* return the saudio_desc.user_data pointer */ +SOKOL_AUDIO_API_DECL void* saudio_userdata(void); +/* return a copy of the original saudio_desc struct */ +SOKOL_AUDIO_API_DECL saudio_desc saudio_query_desc(void); +/* actual sample rate */ +SOKOL_AUDIO_API_DECL int saudio_sample_rate(void); +/* return actual backend buffer size in number of frames */ +SOKOL_AUDIO_API_DECL int saudio_buffer_frames(void); +/* actual number of channels */ +SOKOL_AUDIO_API_DECL int saudio_channels(void); +/* return true if audio context is currently suspended (only in WebAudio backend, all other backends return false) */ +SOKOL_AUDIO_API_DECL bool saudio_suspended(void); +/* get current number of frames to fill packet queue */ +SOKOL_AUDIO_API_DECL int saudio_expect(void); +/* push sample frames from main thread, returns number of frames actually pushed */ +SOKOL_AUDIO_API_DECL int saudio_push(const float* frames, int num_frames); + +#ifdef __cplusplus +} /* extern "C" */ + +/* reference-based equivalents for c++ */ +inline void saudio_setup(const saudio_desc& desc) { return saudio_setup(&desc); } + +#endif +#endif // SOKOL_AUDIO_INCLUDED + +// ██ ███ ███ ██████ ██ ███████ ███ ███ ███████ ███ ██ ████████ █████ ████████ ██ ██████ ███ ██ +// ██ ████ ████ ██ ██ ██ ██ ████ ████ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ +// ██ ██ ████ ██ ██████ ██ █████ ██ ████ ██ █████ ██ ██ ██ ██ ███████ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ███████ ███████ ██ ██ ███████ ██ ████ ██ ██ ██ ██ ██ ██████ ██ ████ +// +// >>implementation +#ifdef SOKOL_AUDIO_IMPL +#define SOKOL_AUDIO_IMPL_INCLUDED (1) + +#if defined(SOKOL_MALLOC) || defined(SOKOL_CALLOC) || defined(SOKOL_FREE) +#error "SOKOL_MALLOC/CALLOC/FREE macros are no longer supported, please use saudio_desc.allocator to override memory allocation functions" +#endif + +#include // alloc, free +#include // memset, memcpy +#include // size_t + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_DEBUG + #ifndef NDEBUG + #define SOKOL_DEBUG + #endif +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif + +#ifndef _SOKOL_PRIVATE + #if defined(__GNUC__) || defined(__clang__) + #define _SOKOL_PRIVATE __attribute__((unused)) static + #else + #define _SOKOL_PRIVATE static + #endif +#endif + +#ifndef _SOKOL_UNUSED + #define _SOKOL_UNUSED(x) (void)(x) +#endif + +// platform detection defines +#if defined(SOKOL_DUMMY_BACKEND) + // nothing +#elif defined(__APPLE__) + #define _SAUDIO_APPLE (1) + #include + #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE + #define _SAUDIO_IOS (1) + #else + #define _SAUDIO_MACOS (1) + #endif +#elif defined(__EMSCRIPTEN__) + #define _SAUDIO_EMSCRIPTEN (1) +#elif defined(_WIN32) + #define _SAUDIO_WINDOWS (1) + #include + #if (defined(WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)) + #error "sokol_audio.h no longer supports UWP" + #endif +#elif defined(__ANDROID__) + #define _SAUDIO_ANDROID (1) + #if !defined(SAUDIO_ANDROID_SLES) && !defined(SAUDIO_ANDROID_AAUDIO) + #define SAUDIO_ANDROID_AAUDIO (1) + #endif +#elif defined(__linux__) || defined(__unix__) + #define _SAUDIO_LINUX (1) +#else +#error "sokol_audio.h: Unknown platform" +#endif + +// platform-specific headers and definitions +#if defined(SOKOL_DUMMY_BACKEND) + #define _SAUDIO_NOTHREADS (1) +#elif defined(_SAUDIO_WINDOWS) + #define _SAUDIO_WINTHREADS (1) + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif + #ifndef NOMINMAX + #define NOMINMAX + #endif + #include + #include + #pragma comment (lib, "kernel32") + #pragma comment (lib, "ole32") + #ifndef CINTERFACE + #define CINTERFACE + #endif + #ifndef COBJMACROS + #define COBJMACROS + #endif + #ifndef CONST_VTABLE + #define CONST_VTABLE + #endif + #include + #include + static const IID _saudio_IID_IAudioClient = { 0x1cb9ad4c, 0xdbfa, 0x4c32, {0xb1, 0x78, 0xc2, 0xf5, 0x68, 0xa7, 0x03, 0xb2} }; + static const IID _saudio_IID_IMMDeviceEnumerator = { 0xa95664d2, 0x9614, 0x4f35, {0xa7, 0x46, 0xde, 0x8d, 0xb6, 0x36, 0x17, 0xe6} }; + static const CLSID _saudio_CLSID_IMMDeviceEnumerator = { 0xbcde0395, 0xe52f, 0x467c, {0x8e, 0x3d, 0xc4, 0x57, 0x92, 0x91, 0x69, 0x2e} }; + static const IID _saudio_IID_IAudioRenderClient = { 0xf294acfc, 0x3146, 0x4483, {0xa7, 0xbf, 0xad, 0xdc, 0xa7, 0xc2, 0x60, 0xe2} }; + static const IID _saudio_IID_Devinterface_Audio_Render = { 0xe6327cad, 0xdcec, 0x4949, {0xae, 0x8a, 0x99, 0x1e, 0x97, 0x6a, 0x79, 0xd2} }; + static const IID _saudio_IID_IActivateAudioInterface_Completion_Handler = { 0x94ea2b94, 0xe9cc, 0x49e0, {0xc0, 0xff, 0xee, 0x64, 0xca, 0x8f, 0x5b, 0x90} }; + static const GUID _saudio_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT = { 0x00000003, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} }; + #if defined(__cplusplus) + #define _SOKOL_AUDIO_WIN32COM_ID(x) (x) + #else + #define _SOKOL_AUDIO_WIN32COM_ID(x) (&x) + #endif + /* fix for Visual Studio 2015 SDKs */ + #ifndef AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM + #define AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM 0x80000000 + #endif + #ifndef AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY + #define AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY 0x08000000 + #endif + #ifdef _MSC_VER + #pragma warning(push) + #pragma warning(disable:4505) /* unreferenced local function has been removed */ + #endif +#elif defined(_SAUDIO_APPLE) + #define _SAUDIO_PTHREADS (1) + #include + #if defined(_SAUDIO_IOS) + // always use system headers on iOS (for now at least) + #if !defined(SAUDIO_OSX_USE_SYSTEM_HEADERS) + #define SAUDIO_OSX_USE_SYSTEM_HEADERS (1) + #endif + #if !defined(__cplusplus) + #if __has_feature(objc_arc) && !__has_feature(objc_arc_fields) + #error "sokol_audio.h on iOS requires __has_feature(objc_arc_field) if ARC is enabled (use a more recent compiler version)" + #endif + #endif + #include + #include + #else + #if defined(SAUDIO_OSX_USE_SYSTEM_HEADERS) + #include + #endif + #endif +#elif defined(_SAUDIO_ANDROID) + #define _SAUDIO_PTHREADS (1) + #include + #if defined(SAUDIO_ANDROID_SLES) + #include "SLES/OpenSLES_Android.h" + #elif defined(SAUDIO_ANDROID_AAUDIO) + #include "aaudio/AAudio.h" + #endif +#elif defined(_SAUDIO_LINUX) + #include + #define _SAUDIO_PTHREADS (1) + #include + #define ALSA_PCM_NEW_HW_PARAMS_API + #include +#elif defined(__EMSCRIPTEN__) + #define _SAUDIO_NOTHREADS (1) + #include +#endif + +#define _saudio_def(val, def) (((val) == 0) ? (def) : (val)) +#define _saudio_def_flt(val, def) (((val) == 0.0f) ? (def) : (val)) + +#define _SAUDIO_DEFAULT_SAMPLE_RATE (44100) +#define _SAUDIO_DEFAULT_BUFFER_FRAMES (2048) +#define _SAUDIO_DEFAULT_PACKET_FRAMES (128) +#define _SAUDIO_DEFAULT_NUM_PACKETS ((_SAUDIO_DEFAULT_BUFFER_FRAMES/_SAUDIO_DEFAULT_PACKET_FRAMES)*4) + +#ifndef SAUDIO_RING_MAX_SLOTS +#define SAUDIO_RING_MAX_SLOTS (1024) +#endif + +// ███████ ████████ ██████ ██ ██ ██████ ████████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██████ ██ ██ ██ ██ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██ ██ ██████ ██████ ██ ███████ +// +// >>structs +#if defined(_SAUDIO_PTHREADS) + +typedef struct { + pthread_mutex_t mutex; +} _saudio_mutex_t; + +#elif defined(_SAUDIO_WINTHREADS) + +typedef struct { + CRITICAL_SECTION critsec; +} _saudio_mutex_t; + +#elif defined(_SAUDIO_NOTHREADS) + +typedef struct { + int dummy_mutex; +} _saudio_mutex_t; + +#endif + +#if defined(SOKOL_DUMMY_BACKEND) + +typedef struct { + int dummy; +} _saudio_dummy_backend_t; + +#elif defined(_SAUDIO_APPLE) + +#if defined(SAUDIO_OSX_USE_SYSTEM_HEADERS) + +typedef AudioQueueRef _saudio_AudioQueueRef; +typedef AudioQueueBufferRef _saudio_AudioQueueBufferRef; +typedef AudioStreamBasicDescription _saudio_AudioStreamBasicDescription; +typedef OSStatus _saudio_OSStatus; + +#define _saudio_kAudioFormatLinearPCM (kAudioFormatLinearPCM) +#define _saudio_kLinearPCMFormatFlagIsFloat (kLinearPCMFormatFlagIsFloat) +#define _saudio_kAudioFormatFlagIsPacked (kAudioFormatFlagIsPacked) + +#else +#ifdef __cplusplus +extern "C" { +#endif + +// embedded AudioToolbox declarations +typedef uint32_t _saudio_AudioFormatID; +typedef uint32_t _saudio_AudioFormatFlags; +typedef int32_t _saudio_OSStatus; +typedef uint32_t _saudio_SMPTETimeType; +typedef uint32_t _saudio_SMPTETimeFlags; +typedef uint32_t _saudio_AudioTimeStampFlags; +typedef void* _saudio_CFRunLoopRef; +typedef void* _saudio_CFStringRef; +typedef void* _saudio_AudioQueueRef; + +#define _saudio_kAudioFormatLinearPCM ('lpcm') +#define _saudio_kLinearPCMFormatFlagIsFloat (1U << 0) +#define _saudio_kAudioFormatFlagIsPacked (1U << 3) + +typedef struct _saudio_AudioStreamBasicDescription { + double mSampleRate; + _saudio_AudioFormatID mFormatID; + _saudio_AudioFormatFlags mFormatFlags; + uint32_t mBytesPerPacket; + uint32_t mFramesPerPacket; + uint32_t mBytesPerFrame; + uint32_t mChannelsPerFrame; + uint32_t mBitsPerChannel; + uint32_t mReserved; +} _saudio_AudioStreamBasicDescription; + +typedef struct _saudio_AudioStreamPacketDescription { + int64_t mStartOffset; + uint32_t mVariableFramesInPacket; + uint32_t mDataByteSize; +} _saudio_AudioStreamPacketDescription; + +typedef struct _saudio_SMPTETime { + int16_t mSubframes; + int16_t mSubframeDivisor; + uint32_t mCounter; + _saudio_SMPTETimeType mType; + _saudio_SMPTETimeFlags mFlags; + int16_t mHours; + int16_t mMinutes; + int16_t mSeconds; + int16_t mFrames; +} _saudio_SMPTETime; + +typedef struct _saudio_AudioTimeStamp { + double mSampleTime; + uint64_t mHostTime; + double mRateScalar; + uint64_t mWordClockTime; + _saudio_SMPTETime mSMPTETime; + _saudio_AudioTimeStampFlags mFlags; + uint32_t mReserved; +} _saudio_AudioTimeStamp; + +typedef struct _saudio_AudioQueueBuffer { + const uint32_t mAudioDataBytesCapacity; + void* const mAudioData; + uint32_t mAudioDataByteSize; + void * mUserData; + const uint32_t mPacketDescriptionCapacity; + _saudio_AudioStreamPacketDescription* const mPacketDescriptions; + uint32_t mPacketDescriptionCount; +} _saudio_AudioQueueBuffer; +typedef _saudio_AudioQueueBuffer* _saudio_AudioQueueBufferRef; + +typedef void (*_saudio_AudioQueueOutputCallback)(void* user_data, _saudio_AudioQueueRef inAQ, _saudio_AudioQueueBufferRef inBuffer); + +extern _saudio_OSStatus AudioQueueNewOutput(const _saudio_AudioStreamBasicDescription* inFormat, _saudio_AudioQueueOutputCallback inCallbackProc, void* inUserData, _saudio_CFRunLoopRef inCallbackRunLoop, _saudio_CFStringRef inCallbackRunLoopMode, uint32_t inFlags, _saudio_AudioQueueRef* outAQ); +extern _saudio_OSStatus AudioQueueDispose(_saudio_AudioQueueRef inAQ, bool inImmediate); +extern _saudio_OSStatus AudioQueueAllocateBuffer(_saudio_AudioQueueRef inAQ, uint32_t inBufferByteSize, _saudio_AudioQueueBufferRef* outBuffer); +extern _saudio_OSStatus AudioQueueEnqueueBuffer(_saudio_AudioQueueRef inAQ, _saudio_AudioQueueBufferRef inBuffer, uint32_t inNumPacketDescs, const _saudio_AudioStreamPacketDescription* inPacketDescs); +extern _saudio_OSStatus AudioQueueStart(_saudio_AudioQueueRef inAQ, const _saudio_AudioTimeStamp * inStartTime); +extern _saudio_OSStatus AudioQueueStop(_saudio_AudioQueueRef inAQ, bool inImmediate); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // SAUDIO_OSX_USE_SYSTEM_HEADERS + +typedef struct { + _saudio_AudioQueueRef ca_audio_queue; + #if defined(_SAUDIO_IOS) + id ca_interruption_handler; + #endif +} _saudio_apple_backend_t; + +#elif defined(_SAUDIO_LINUX) + +typedef struct { + snd_pcm_t* device; + float* buffer; + int buffer_byte_size; + int buffer_frames; + pthread_t thread; + bool thread_stop; +} _saudio_alsa_backend_t; + +#elif defined(SAUDIO_ANDROID_SLES) + +#define SAUDIO_SLES_NUM_BUFFERS (2) + +typedef struct { + pthread_mutex_t mutex; + pthread_cond_t cond; + int count; +} _saudio_sles_semaphore_t; + +typedef struct { + SLObjectItf engine_obj; + SLEngineItf engine; + SLObjectItf output_mix_obj; + SLVolumeItf output_mix_vol; + SLDataLocator_OutputMix out_locator; + SLDataSink dst_data_sink; + SLObjectItf player_obj; + SLPlayItf player; + SLVolumeItf player_vol; + SLAndroidSimpleBufferQueueItf player_buffer_queue; + + int16_t* output_buffers[SAUDIO_SLES_NUM_BUFFERS]; + float* src_buffer; + int active_buffer; + _saudio_sles_semaphore_t buffer_sem; + pthread_t thread; + volatile int thread_stop; + SLDataLocator_AndroidSimpleBufferQueue in_locator; +} _saudio_sles_backend_t; + +#elif defined(SAUDIO_ANDROID_AAUDIO) + +typedef struct { + AAudioStreamBuilder* builder; + AAudioStream* stream; + pthread_t thread; + pthread_mutex_t mutex; +} _saudio_aaudio_backend_t; + +#elif defined(_SAUDIO_WINDOWS) + +typedef struct { + HANDLE thread_handle; + HANDLE buffer_end_event; + bool stop; + UINT32 dst_buffer_frames; + int src_buffer_frames; + int src_buffer_byte_size; + int src_buffer_pos; + float* src_buffer; +} _saudio_wasapi_thread_data_t; + +typedef struct { + IMMDeviceEnumerator* device_enumerator; + IMMDevice* device; + IAudioClient* audio_client; + IAudioRenderClient* render_client; + _saudio_wasapi_thread_data_t thread; +} _saudio_wasapi_backend_t; + +#elif defined(_SAUDIO_EMSCRIPTEN) + +typedef struct { + uint8_t* buffer; +} _saudio_web_backend_t; + +#else +#error "unknown platform" +#endif + +#if defined(SOKOL_DUMMY_BACKEND) +typedef _saudio_dummy_backend_t _saudio_backend_t; +#elif defined(_SAUDIO_APPLE) +typedef _saudio_apple_backend_t _saudio_backend_t; +#elif defined(_SAUDIO_EMSCRIPTEN) +typedef _saudio_web_backend_t _saudio_backend_t; +#elif defined(_SAUDIO_WINDOWS) +typedef _saudio_wasapi_backend_t _saudio_backend_t; +#elif defined(SAUDIO_ANDROID_SLES) +typedef _saudio_sles_backend_t _saudio_backend_t; +#elif defined(SAUDIO_ANDROID_AAUDIO) +typedef _saudio_aaudio_backend_t _saudio_backend_t; +#elif defined(_SAUDIO_LINUX) +typedef _saudio_alsa_backend_t _saudio_backend_t; +#endif + +/* a ringbuffer structure */ +typedef struct { + int head; // next slot to write to + int tail; // next slot to read from + int num; // number of slots in queue + int queue[SAUDIO_RING_MAX_SLOTS]; +} _saudio_ring_t; + +/* a packet FIFO structure */ +typedef struct { + bool valid; + int packet_size; /* size of a single packets in bytes(!) */ + int num_packets; /* number of packet in fifo */ + uint8_t* base_ptr; /* packet memory chunk base pointer (dynamically allocated) */ + int cur_packet; /* current write-packet */ + int cur_offset; /* current byte-offset into current write packet */ + _saudio_mutex_t mutex; /* mutex for thread-safe access */ + _saudio_ring_t read_queue; /* buffers with data, ready to be streamed */ + _saudio_ring_t write_queue; /* empty buffers, ready to be pushed to */ +} _saudio_fifo_t; + +/* sokol-audio state */ +typedef struct { + bool valid; + void (*stream_cb)(float* buffer, int num_frames, int num_channels); + void (*stream_userdata_cb)(float* buffer, int num_frames, int num_channels, void* user_data); + void* user_data; + int sample_rate; /* sample rate */ + int buffer_frames; /* number of frames in streaming buffer */ + int bytes_per_frame; /* filled by backend */ + int packet_frames; /* number of frames in a packet */ + int num_packets; /* number of packets in packet queue */ + int num_channels; /* actual number of channels */ + saudio_desc desc; + _saudio_fifo_t fifo; + _saudio_backend_t backend; +} _saudio_state_t; + +_SOKOL_PRIVATE _saudio_state_t _saudio; + +_SOKOL_PRIVATE bool _saudio_has_callback(void) { + return (_saudio.stream_cb || _saudio.stream_userdata_cb); +} + +_SOKOL_PRIVATE void _saudio_stream_callback(float* buffer, int num_frames, int num_channels) { + if (_saudio.stream_cb) { + _saudio.stream_cb(buffer, num_frames, num_channels); + } + else if (_saudio.stream_userdata_cb) { + _saudio.stream_userdata_cb(buffer, num_frames, num_channels, _saudio.user_data); + } +} + +// ██ ██████ ██████ ██████ ██ ███ ██ ██████ +// ██ ██ ██ ██ ██ ██ ████ ██ ██ +// ██ ██ ██ ██ ███ ██ ███ ██ ██ ██ ██ ██ ███ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██████ ██████ ██████ ██ ██ ████ ██████ +// +// >>logging +#if defined(SOKOL_DEBUG) +#define _SAUDIO_LOGITEM_XMACRO(item,msg) #item ": " msg, +static const char* _saudio_log_messages[] = { + _SAUDIO_LOG_ITEMS +}; +#undef _SAUDIO_LOGITEM_XMACRO +#endif // SOKOL_DEBUG + +#define _SAUDIO_PANIC(code) _saudio_log(SAUDIO_LOGITEM_ ##code, 0, __LINE__) +#define _SAUDIO_ERROR(code) _saudio_log(SAUDIO_LOGITEM_ ##code, 1, __LINE__) +#define _SAUDIO_WARN(code) _saudio_log(SAUDIO_LOGITEM_ ##code, 2, __LINE__) +#define _SAUDIO_INFO(code) _saudio_log(SAUDIO_LOGITEM_ ##code, 3, __LINE__) + +static void _saudio_log(saudio_log_item log_item, uint32_t log_level, uint32_t line_nr) { + if (_saudio.desc.logger.func) { + #if defined(SOKOL_DEBUG) + const char* filename = __FILE__; + const char* message = _saudio_log_messages[log_item]; + #else + const char* filename = 0; + const char* message = 0; + #endif + _saudio.desc.logger.func("saudio", log_level, log_item, message, line_nr, filename, _saudio.desc.logger.user_data); + } + else { + // for log level PANIC it would be 'undefined behaviour' to continue + if (log_level == 0) { + abort(); + } + } +} + +// ███ ███ ███████ ███ ███ ██████ ██████ ██ ██ +// ████ ████ ██ ████ ████ ██ ██ ██ ██ ██ ██ +// ██ ████ ██ █████ ██ ████ ██ ██ ██ ██████ ████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ██ ██ ██████ ██ ██ ██ +// +// >>memory +_SOKOL_PRIVATE void _saudio_clear(void* ptr, size_t size) { + SOKOL_ASSERT(ptr && (size > 0)); + memset(ptr, 0, size); +} + +_SOKOL_PRIVATE void* _saudio_malloc(size_t size) { + SOKOL_ASSERT(size > 0); + void* ptr; + if (_saudio.desc.allocator.alloc) { + ptr = _saudio.desc.allocator.alloc(size, _saudio.desc.allocator.user_data); + } + else { + ptr = malloc(size); + } + if (0 == ptr) { + _SAUDIO_PANIC(MALLOC_FAILED); + } + return ptr; +} + +_SOKOL_PRIVATE void* _saudio_malloc_clear(size_t size) { + void* ptr = _saudio_malloc(size); + _saudio_clear(ptr, size); + return ptr; +} + +_SOKOL_PRIVATE void _saudio_free(void* ptr) { + if (_saudio.desc.allocator.free) { + _saudio.desc.allocator.free(ptr, _saudio.desc.allocator.user_data); + } + else { + free(ptr); + } +} + +// ███ ███ ██ ██ ████████ ███████ ██ ██ +// ████ ████ ██ ██ ██ ██ ██ ██ +// ██ ████ ██ ██ ██ ██ █████ ███ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██████ ██ ███████ ██ ██ +// +// >>mutex +#if defined(_SAUDIO_NOTHREADS) + +_SOKOL_PRIVATE void _saudio_mutex_init(_saudio_mutex_t* m) { (void)m; } +_SOKOL_PRIVATE void _saudio_mutex_destroy(_saudio_mutex_t* m) { (void)m; } +_SOKOL_PRIVATE void _saudio_mutex_lock(_saudio_mutex_t* m) { (void)m; } +_SOKOL_PRIVATE void _saudio_mutex_unlock(_saudio_mutex_t* m) { (void)m; } + +#elif defined(_SAUDIO_PTHREADS) + +_SOKOL_PRIVATE void _saudio_mutex_init(_saudio_mutex_t* m) { + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutex_init(&m->mutex, &attr); +} + +_SOKOL_PRIVATE void _saudio_mutex_destroy(_saudio_mutex_t* m) { + pthread_mutex_destroy(&m->mutex); +} + +_SOKOL_PRIVATE void _saudio_mutex_lock(_saudio_mutex_t* m) { + pthread_mutex_lock(&m->mutex); +} + +_SOKOL_PRIVATE void _saudio_mutex_unlock(_saudio_mutex_t* m) { + pthread_mutex_unlock(&m->mutex); +} + +#elif defined(_SAUDIO_WINTHREADS) + +_SOKOL_PRIVATE void _saudio_mutex_init(_saudio_mutex_t* m) { + InitializeCriticalSection(&m->critsec); +} + +_SOKOL_PRIVATE void _saudio_mutex_destroy(_saudio_mutex_t* m) { + DeleteCriticalSection(&m->critsec); +} + +_SOKOL_PRIVATE void _saudio_mutex_lock(_saudio_mutex_t* m) { + EnterCriticalSection(&m->critsec); +} + +_SOKOL_PRIVATE void _saudio_mutex_unlock(_saudio_mutex_t* m) { + LeaveCriticalSection(&m->critsec); +} +#else +#error "sokol_audio.h: unknown platform!" +#endif + +// ██████ ██ ███ ██ ██████ ██████ ██ ██ ███████ ███████ ███████ ██████ +// ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ██ ██ ██ ██ ███ ██████ ██ ██ █████ █████ █████ ██████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ████ ██████ ██████ ██████ ██ ██ ███████ ██ ██ +// +// >>ringbuffer +_SOKOL_PRIVATE int _saudio_ring_idx(_saudio_ring_t* ring, int i) { + return (i % ring->num); +} + +_SOKOL_PRIVATE void _saudio_ring_init(_saudio_ring_t* ring, int num_slots) { + SOKOL_ASSERT((num_slots + 1) <= SAUDIO_RING_MAX_SLOTS); + ring->head = 0; + ring->tail = 0; + /* one slot reserved to detect 'full' vs 'empty' */ + ring->num = num_slots + 1; +} + +_SOKOL_PRIVATE bool _saudio_ring_full(_saudio_ring_t* ring) { + return _saudio_ring_idx(ring, ring->head + 1) == ring->tail; +} + +_SOKOL_PRIVATE bool _saudio_ring_empty(_saudio_ring_t* ring) { + return ring->head == ring->tail; +} + +_SOKOL_PRIVATE int _saudio_ring_count(_saudio_ring_t* ring) { + int count; + if (ring->head >= ring->tail) { + count = ring->head - ring->tail; + } + else { + count = (ring->head + ring->num) - ring->tail; + } + SOKOL_ASSERT(count < ring->num); + return count; +} + +_SOKOL_PRIVATE void _saudio_ring_enqueue(_saudio_ring_t* ring, int val) { + SOKOL_ASSERT(!_saudio_ring_full(ring)); + ring->queue[ring->head] = val; + ring->head = _saudio_ring_idx(ring, ring->head + 1); +} + +_SOKOL_PRIVATE int _saudio_ring_dequeue(_saudio_ring_t* ring) { + SOKOL_ASSERT(!_saudio_ring_empty(ring)); + int val = ring->queue[ring->tail]; + ring->tail = _saudio_ring_idx(ring, ring->tail + 1); + return val; +} + +// ███████ ██ ███████ ██████ +// ██ ██ ██ ██ ██ +// █████ ██ █████ ██ ██ +// ██ ██ ██ ██ ██ +// ██ ██ ██ ██████ +// +// >>fifo +_SOKOL_PRIVATE void _saudio_fifo_init_mutex(_saudio_fifo_t* fifo) { + /* this must be called before initializing both the backend and the fifo itself! */ + _saudio_mutex_init(&fifo->mutex); +} + +_SOKOL_PRIVATE void _saudio_fifo_destroy_mutex(_saudio_fifo_t* fifo) { + _saudio_mutex_destroy(&fifo->mutex); +} + +_SOKOL_PRIVATE void _saudio_fifo_init(_saudio_fifo_t* fifo, int packet_size, int num_packets) { + /* NOTE: there's a chicken-egg situation during the init phase where the + streaming thread must be started before the fifo is actually initialized, + thus the fifo init must already be protected from access by the fifo_read() func. + */ + _saudio_mutex_lock(&fifo->mutex); + SOKOL_ASSERT((packet_size > 0) && (num_packets > 0)); + fifo->packet_size = packet_size; + fifo->num_packets = num_packets; + fifo->base_ptr = (uint8_t*) _saudio_malloc((size_t)(packet_size * num_packets)); + fifo->cur_packet = -1; + fifo->cur_offset = 0; + _saudio_ring_init(&fifo->read_queue, num_packets); + _saudio_ring_init(&fifo->write_queue, num_packets); + for (int i = 0; i < num_packets; i++) { + _saudio_ring_enqueue(&fifo->write_queue, i); + } + SOKOL_ASSERT(_saudio_ring_full(&fifo->write_queue)); + SOKOL_ASSERT(_saudio_ring_count(&fifo->write_queue) == num_packets); + SOKOL_ASSERT(_saudio_ring_empty(&fifo->read_queue)); + SOKOL_ASSERT(_saudio_ring_count(&fifo->read_queue) == 0); + fifo->valid = true; + _saudio_mutex_unlock(&fifo->mutex); +} + +_SOKOL_PRIVATE void _saudio_fifo_shutdown(_saudio_fifo_t* fifo) { + SOKOL_ASSERT(fifo->base_ptr); + _saudio_free(fifo->base_ptr); + fifo->base_ptr = 0; + fifo->valid = false; +} + +_SOKOL_PRIVATE int _saudio_fifo_writable_bytes(_saudio_fifo_t* fifo) { + _saudio_mutex_lock(&fifo->mutex); + int num_bytes = (_saudio_ring_count(&fifo->write_queue) * fifo->packet_size); + if (fifo->cur_packet != -1) { + num_bytes += fifo->packet_size - fifo->cur_offset; + } + _saudio_mutex_unlock(&fifo->mutex); + SOKOL_ASSERT((num_bytes >= 0) && (num_bytes <= (fifo->num_packets * fifo->packet_size))); + return num_bytes; +} + +/* write new data to the write queue, this is called from main thread */ +_SOKOL_PRIVATE int _saudio_fifo_write(_saudio_fifo_t* fifo, const uint8_t* ptr, int num_bytes) { + /* returns the number of bytes written, this will be smaller then requested + if the write queue runs full + */ + int all_to_copy = num_bytes; + while (all_to_copy > 0) { + /* need to grab a new packet? */ + if (fifo->cur_packet == -1) { + _saudio_mutex_lock(&fifo->mutex); + if (!_saudio_ring_empty(&fifo->write_queue)) { + fifo->cur_packet = _saudio_ring_dequeue(&fifo->write_queue); + } + _saudio_mutex_unlock(&fifo->mutex); + SOKOL_ASSERT(fifo->cur_offset == 0); + } + /* append data to current write packet */ + if (fifo->cur_packet != -1) { + int to_copy = all_to_copy; + const int max_copy = fifo->packet_size - fifo->cur_offset; + if (to_copy > max_copy) { + to_copy = max_copy; + } + uint8_t* dst = fifo->base_ptr + fifo->cur_packet * fifo->packet_size + fifo->cur_offset; + memcpy(dst, ptr, (size_t)to_copy); + ptr += to_copy; + fifo->cur_offset += to_copy; + all_to_copy -= to_copy; + SOKOL_ASSERT(fifo->cur_offset <= fifo->packet_size); + SOKOL_ASSERT(all_to_copy >= 0); + } + else { + /* early out if we're starving */ + int bytes_copied = num_bytes - all_to_copy; + SOKOL_ASSERT((bytes_copied >= 0) && (bytes_copied < num_bytes)); + return bytes_copied; + } + /* if write packet is full, push to read queue */ + if (fifo->cur_offset == fifo->packet_size) { + _saudio_mutex_lock(&fifo->mutex); + _saudio_ring_enqueue(&fifo->read_queue, fifo->cur_packet); + _saudio_mutex_unlock(&fifo->mutex); + fifo->cur_packet = -1; + fifo->cur_offset = 0; + } + } + SOKOL_ASSERT(all_to_copy == 0); + return num_bytes; +} + +/* read queued data, this is called form the stream callback (maybe separate thread) */ +_SOKOL_PRIVATE int _saudio_fifo_read(_saudio_fifo_t* fifo, uint8_t* ptr, int num_bytes) { + /* NOTE: fifo_read might be called before the fifo is properly initialized */ + _saudio_mutex_lock(&fifo->mutex); + int num_bytes_copied = 0; + if (fifo->valid) { + SOKOL_ASSERT(0 == (num_bytes % fifo->packet_size)); + SOKOL_ASSERT(num_bytes <= (fifo->packet_size * fifo->num_packets)); + const int num_packets_needed = num_bytes / fifo->packet_size; + uint8_t* dst = ptr; + /* either pull a full buffer worth of data, or nothing */ + if (_saudio_ring_count(&fifo->read_queue) >= num_packets_needed) { + for (int i = 0; i < num_packets_needed; i++) { + int packet_index = _saudio_ring_dequeue(&fifo->read_queue); + _saudio_ring_enqueue(&fifo->write_queue, packet_index); + const uint8_t* src = fifo->base_ptr + packet_index * fifo->packet_size; + memcpy(dst, src, (size_t)fifo->packet_size); + dst += fifo->packet_size; + num_bytes_copied += fifo->packet_size; + } + SOKOL_ASSERT(num_bytes == num_bytes_copied); + } + } + _saudio_mutex_unlock(&fifo->mutex); + return num_bytes_copied; +} + +// ██████ ██ ██ ███ ███ ███ ███ ██ ██ +// ██ ██ ██ ██ ████ ████ ████ ████ ██ ██ +// ██ ██ ██ ██ ██ ████ ██ ██ ████ ██ ████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██████ ██ ██ ██ ██ ██ +// +// >>dummy +#if defined(SOKOL_DUMMY_BACKEND) +_SOKOL_PRIVATE bool _saudio_dummy_backend_init(void) { + _saudio.bytes_per_frame = _saudio.num_channels * (int)sizeof(float); + return true; +}; +_SOKOL_PRIVATE void _saudio_dummy_backend_shutdown(void) { }; + +// █████ ██ ███████ █████ +// ██ ██ ██ ██ ██ ██ +// ███████ ██ ███████ ███████ +// ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ███████ ██ ██ +// +// >>alsa +#elif defined(_SAUDIO_LINUX) + +/* the streaming callback runs in a separate thread */ +_SOKOL_PRIVATE void* _saudio_alsa_cb(void* param) { + _SOKOL_UNUSED(param); + while (!_saudio.backend.thread_stop) { + /* snd_pcm_writei() will be blocking until it needs data */ + int write_res = snd_pcm_writei(_saudio.backend.device, _saudio.backend.buffer, (snd_pcm_uframes_t)_saudio.backend.buffer_frames); + if (write_res < 0) { + /* underrun occurred */ + snd_pcm_prepare(_saudio.backend.device); + } + else { + /* fill the streaming buffer with new data */ + if (_saudio_has_callback()) { + _saudio_stream_callback(_saudio.backend.buffer, _saudio.backend.buffer_frames, _saudio.num_channels); + } + else { + if (0 == _saudio_fifo_read(&_saudio.fifo, (uint8_t*)_saudio.backend.buffer, _saudio.backend.buffer_byte_size)) { + /* not enough read data available, fill the entire buffer with silence */ + _saudio_clear(_saudio.backend.buffer, (size_t)_saudio.backend.buffer_byte_size); + } + } + } + } + return 0; +} + +_SOKOL_PRIVATE bool _saudio_alsa_backend_init(void) { + int dir; uint32_t rate; + int rc = snd_pcm_open(&_saudio.backend.device, "default", SND_PCM_STREAM_PLAYBACK, 0); + if (rc < 0) { + _SAUDIO_ERROR(ALSA_SND_PCM_OPEN_FAILED); + return false; + } + + /* configuration works by restricting the 'configuration space' step + by step, we require all parameters except the sample rate to + match perfectly + */ + snd_pcm_hw_params_t* params = 0; + snd_pcm_hw_params_alloca(¶ms); + snd_pcm_hw_params_any(_saudio.backend.device, params); + snd_pcm_hw_params_set_access(_saudio.backend.device, params, SND_PCM_ACCESS_RW_INTERLEAVED); + if (0 > snd_pcm_hw_params_set_format(_saudio.backend.device, params, SND_PCM_FORMAT_FLOAT_LE)) { + _SAUDIO_ERROR(ALSA_FLOAT_SAMPLES_NOT_SUPPORTED); + goto error; + } + if (0 > snd_pcm_hw_params_set_buffer_size(_saudio.backend.device, params, (snd_pcm_uframes_t)_saudio.buffer_frames)) { + _SAUDIO_ERROR(ALSA_REQUESTED_BUFFER_SIZE_NOT_SUPPORTED); + goto error; + } + if (0 > snd_pcm_hw_params_set_channels(_saudio.backend.device, params, (uint32_t)_saudio.num_channels)) { + _SAUDIO_ERROR(ALSA_REQUESTED_CHANNEL_COUNT_NOT_SUPPORTED); + goto error; + } + /* let ALSA pick a nearby sampling rate */ + rate = (uint32_t) _saudio.sample_rate; + dir = 0; + if (0 > snd_pcm_hw_params_set_rate_near(_saudio.backend.device, params, &rate, &dir)) { + _SAUDIO_ERROR(ALSA_SND_PCM_HW_PARAMS_SET_RATE_NEAR_FAILED); + goto error; + } + if (0 > snd_pcm_hw_params(_saudio.backend.device, params)) { + _SAUDIO_ERROR(ALSA_SND_PCM_HW_PARAMS_FAILED); + goto error; + } + + /* read back actual sample rate and channels */ + _saudio.sample_rate = (int)rate; + _saudio.bytes_per_frame = _saudio.num_channels * (int)sizeof(float); + + /* allocate the streaming buffer */ + _saudio.backend.buffer_byte_size = _saudio.buffer_frames * _saudio.bytes_per_frame; + _saudio.backend.buffer_frames = _saudio.buffer_frames; + _saudio.backend.buffer = (float*) _saudio_malloc_clear((size_t)_saudio.backend.buffer_byte_size); + + /* create the buffer-streaming start thread */ + if (0 != pthread_create(&_saudio.backend.thread, 0, _saudio_alsa_cb, 0)) { + _SAUDIO_ERROR(ALSA_PTHREAD_CREATE_FAILED); + goto error; + } + + return true; +error: + if (_saudio.backend.device) { + snd_pcm_close(_saudio.backend.device); + _saudio.backend.device = 0; + } + return false; +}; + +_SOKOL_PRIVATE void _saudio_alsa_backend_shutdown(void) { + SOKOL_ASSERT(_saudio.backend.device); + _saudio.backend.thread_stop = true; + pthread_join(_saudio.backend.thread, 0); + snd_pcm_drain(_saudio.backend.device); + snd_pcm_close(_saudio.backend.device); + _saudio_free(_saudio.backend.buffer); +}; + +// ██ ██ █████ ███████ █████ ██████ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ █ ██ ███████ ███████ ███████ ██████ ██ +// ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ +// ███ ███ ██ ██ ███████ ██ ██ ██ ██ +// +// >>wasapi +#elif defined(_SAUDIO_WINDOWS) + +/* fill intermediate buffer with new data and reset buffer_pos */ +_SOKOL_PRIVATE void _saudio_wasapi_fill_buffer(void) { + if (_saudio_has_callback()) { + _saudio_stream_callback(_saudio.backend.thread.src_buffer, _saudio.backend.thread.src_buffer_frames, _saudio.num_channels); + } + else { + if (0 == _saudio_fifo_read(&_saudio.fifo, (uint8_t*)_saudio.backend.thread.src_buffer, _saudio.backend.thread.src_buffer_byte_size)) { + /* not enough read data available, fill the entire buffer with silence */ + _saudio_clear(_saudio.backend.thread.src_buffer, (size_t)_saudio.backend.thread.src_buffer_byte_size); + } + } +} + +_SOKOL_PRIVATE int _saudio_wasapi_min(int a, int b) { + return (a < b) ? a : b; +} + +_SOKOL_PRIVATE void _saudio_wasapi_submit_buffer(int num_frames) { + BYTE* wasapi_buffer = 0; + if (FAILED(IAudioRenderClient_GetBuffer(_saudio.backend.render_client, num_frames, &wasapi_buffer))) { + return; + } + SOKOL_ASSERT(wasapi_buffer); + + /* copy samples to WASAPI buffer, refill source buffer if needed */ + int num_remaining_samples = num_frames * _saudio.num_channels; + int buffer_pos = _saudio.backend.thread.src_buffer_pos; + const int buffer_size_in_samples = _saudio.backend.thread.src_buffer_byte_size / (int)sizeof(float); + float* dst = (float*)wasapi_buffer; + const float* dst_end = dst + num_remaining_samples; + _SOKOL_UNUSED(dst_end); // suppress unused warning in release mode + const float* src = _saudio.backend.thread.src_buffer; + + while (num_remaining_samples > 0) { + if (0 == buffer_pos) { + _saudio_wasapi_fill_buffer(); + } + const int samples_to_copy = _saudio_wasapi_min(num_remaining_samples, buffer_size_in_samples - buffer_pos); + SOKOL_ASSERT((buffer_pos + samples_to_copy) <= buffer_size_in_samples); + SOKOL_ASSERT((dst + samples_to_copy) <= dst_end); + memcpy(dst, &src[buffer_pos], (size_t)samples_to_copy * sizeof(float)); + num_remaining_samples -= samples_to_copy; + SOKOL_ASSERT(num_remaining_samples >= 0); + buffer_pos += samples_to_copy; + dst += samples_to_copy; + + SOKOL_ASSERT(buffer_pos <= buffer_size_in_samples); + if (buffer_pos == buffer_size_in_samples) { + buffer_pos = 0; + } + } + _saudio.backend.thread.src_buffer_pos = buffer_pos; + IAudioRenderClient_ReleaseBuffer(_saudio.backend.render_client, num_frames, 0); +} + +_SOKOL_PRIVATE DWORD WINAPI _saudio_wasapi_thread_fn(LPVOID param) { + (void)param; + _saudio_wasapi_submit_buffer(_saudio.backend.thread.src_buffer_frames); + IAudioClient_Start(_saudio.backend.audio_client); + while (!_saudio.backend.thread.stop) { + WaitForSingleObject(_saudio.backend.thread.buffer_end_event, INFINITE); + UINT32 padding = 0; + if (FAILED(IAudioClient_GetCurrentPadding(_saudio.backend.audio_client, &padding))) { + continue; + } + SOKOL_ASSERT(_saudio.backend.thread.dst_buffer_frames >= padding); + int num_frames = (int)_saudio.backend.thread.dst_buffer_frames - (int)padding; + if (num_frames > 0) { + _saudio_wasapi_submit_buffer(num_frames); + } + } + return 0; +} + +_SOKOL_PRIVATE void _saudio_wasapi_release(void) { + if (_saudio.backend.thread.src_buffer) { + _saudio_free(_saudio.backend.thread.src_buffer); + _saudio.backend.thread.src_buffer = 0; + } + if (_saudio.backend.render_client) { + IAudioRenderClient_Release(_saudio.backend.render_client); + _saudio.backend.render_client = 0; + } + if (_saudio.backend.audio_client) { + IAudioClient_Release(_saudio.backend.audio_client); + _saudio.backend.audio_client = 0; + } + if (_saudio.backend.device) { + IMMDevice_Release(_saudio.backend.device); + _saudio.backend.device = 0; + } + if (_saudio.backend.device_enumerator) { + IMMDeviceEnumerator_Release(_saudio.backend.device_enumerator); + _saudio.backend.device_enumerator = 0; + } + if (0 != _saudio.backend.thread.buffer_end_event) { + CloseHandle(_saudio.backend.thread.buffer_end_event); + _saudio.backend.thread.buffer_end_event = 0; + } +} + +_SOKOL_PRIVATE bool _saudio_wasapi_backend_init(void) { + REFERENCE_TIME dur; + /* CoInitializeEx could have been called elsewhere already, in which + case the function returns with S_FALSE (thus it does not make much + sense to check the result) + */ + HRESULT hr = CoInitializeEx(0, COINIT_MULTITHREADED); + _SOKOL_UNUSED(hr); + _saudio.backend.thread.buffer_end_event = CreateEvent(0, FALSE, FALSE, 0); + if (0 == _saudio.backend.thread.buffer_end_event) { + _SAUDIO_ERROR(WASAPI_CREATE_EVENT_FAILED); + goto error; + } + if (FAILED(CoCreateInstance(_SOKOL_AUDIO_WIN32COM_ID(_saudio_CLSID_IMMDeviceEnumerator), + 0, CLSCTX_ALL, + _SOKOL_AUDIO_WIN32COM_ID(_saudio_IID_IMMDeviceEnumerator), + (void**)&_saudio.backend.device_enumerator))) + { + _SAUDIO_ERROR(WASAPI_CREATE_DEVICE_ENUMERATOR_FAILED); + goto error; + } + if (FAILED(IMMDeviceEnumerator_GetDefaultAudioEndpoint(_saudio.backend.device_enumerator, + eRender, eConsole, + &_saudio.backend.device))) + { + _SAUDIO_ERROR(WASAPI_GET_DEFAULT_AUDIO_ENDPOINT_FAILED); + goto error; + } + if (FAILED(IMMDevice_Activate(_saudio.backend.device, + _SOKOL_AUDIO_WIN32COM_ID(_saudio_IID_IAudioClient), + CLSCTX_ALL, 0, + (void**)&_saudio.backend.audio_client))) + { + _SAUDIO_ERROR(WASAPI_DEVICE_ACTIVATE_FAILED); + goto error; + } + + WAVEFORMATEXTENSIBLE fmtex; + _saudio_clear(&fmtex, sizeof(fmtex)); + fmtex.Format.nChannels = (WORD)_saudio.num_channels; + fmtex.Format.nSamplesPerSec = (DWORD)_saudio.sample_rate; + fmtex.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE; + fmtex.Format.wBitsPerSample = 32; + fmtex.Format.nBlockAlign = (fmtex.Format.nChannels * fmtex.Format.wBitsPerSample) / 8; + fmtex.Format.nAvgBytesPerSec = fmtex.Format.nSamplesPerSec * fmtex.Format.nBlockAlign; + fmtex.Format.cbSize = 22; /* WORD + DWORD + GUID */ + fmtex.Samples.wValidBitsPerSample = 32; + if (_saudio.num_channels == 1) { + fmtex.dwChannelMask = SPEAKER_FRONT_CENTER; + } + else { + fmtex.dwChannelMask = SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT; + } + fmtex.SubFormat = _saudio_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT; + dur = (REFERENCE_TIME) + (((double)_saudio.buffer_frames) / (((double)_saudio.sample_rate) * (1.0/10000000.0))); + if (FAILED(IAudioClient_Initialize(_saudio.backend.audio_client, + AUDCLNT_SHAREMODE_SHARED, + AUDCLNT_STREAMFLAGS_EVENTCALLBACK|AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM|AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY, + dur, 0, (WAVEFORMATEX*)&fmtex, 0))) + { + _SAUDIO_ERROR(WASAPI_AUDIO_CLIENT_INITIALIZE_FAILED); + goto error; + } + if (FAILED(IAudioClient_GetBufferSize(_saudio.backend.audio_client, &_saudio.backend.thread.dst_buffer_frames))) { + _SAUDIO_ERROR(WASAPI_AUDIO_CLIENT_GET_BUFFER_SIZE_FAILED); + goto error; + } + if (FAILED(IAudioClient_GetService(_saudio.backend.audio_client, + _SOKOL_AUDIO_WIN32COM_ID(_saudio_IID_IAudioRenderClient), + (void**)&_saudio.backend.render_client))) + { + _SAUDIO_ERROR(WASAPI_AUDIO_CLIENT_GET_SERVICE_FAILED); + goto error; + } + if (FAILED(IAudioClient_SetEventHandle(_saudio.backend.audio_client, _saudio.backend.thread.buffer_end_event))) { + _SAUDIO_ERROR(WASAPI_AUDIO_CLIENT_SET_EVENT_HANDLE_FAILED); + goto error; + } + _saudio.bytes_per_frame = _saudio.num_channels * (int)sizeof(float); + _saudio.backend.thread.src_buffer_frames = _saudio.buffer_frames; + _saudio.backend.thread.src_buffer_byte_size = _saudio.backend.thread.src_buffer_frames * _saudio.bytes_per_frame; + + /* allocate an intermediate buffer for sample format conversion */ + _saudio.backend.thread.src_buffer = (float*) _saudio_malloc((size_t)_saudio.backend.thread.src_buffer_byte_size); + + /* create streaming thread */ + _saudio.backend.thread.thread_handle = CreateThread(NULL, 0, _saudio_wasapi_thread_fn, 0, 0, 0); + if (0 == _saudio.backend.thread.thread_handle) { + _SAUDIO_ERROR(WASAPI_CREATE_THREAD_FAILED); + goto error; + } + return true; +error: + _saudio_wasapi_release(); + return false; +} + +_SOKOL_PRIVATE void _saudio_wasapi_backend_shutdown(void) { + if (_saudio.backend.thread.thread_handle) { + _saudio.backend.thread.stop = true; + SetEvent(_saudio.backend.thread.buffer_end_event); + WaitForSingleObject(_saudio.backend.thread.thread_handle, INFINITE); + CloseHandle(_saudio.backend.thread.thread_handle); + _saudio.backend.thread.thread_handle = 0; + } + if (_saudio.backend.audio_client) { + IAudioClient_Stop(_saudio.backend.audio_client); + } + _saudio_wasapi_release(); + CoUninitialize(); +} + +// ██ ██ ███████ ██████ █████ ██ ██ ██████ ██ ██████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ █ ██ █████ ██████ ███████ ██ ██ ██ ██ ██ ██ ██ +// ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███ ███ ███████ ██████ ██ ██ ██████ ██████ ██ ██████ +// +// >>webaudio +#elif defined(_SAUDIO_EMSCRIPTEN) + +#ifdef __cplusplus +extern "C" { +#endif + +EMSCRIPTEN_KEEPALIVE int _saudio_emsc_pull(int num_frames) { + SOKOL_ASSERT(_saudio.backend.buffer); + if (num_frames == _saudio.buffer_frames) { + if (_saudio_has_callback()) { + _saudio_stream_callback((float*)_saudio.backend.buffer, num_frames, _saudio.num_channels); + } + else { + const int num_bytes = num_frames * _saudio.bytes_per_frame; + if (0 == _saudio_fifo_read(&_saudio.fifo, _saudio.backend.buffer, num_bytes)) { + /* not enough read data available, fill the entire buffer with silence */ + _saudio_clear(_saudio.backend.buffer, (size_t)num_bytes); + } + } + int res = (int) _saudio.backend.buffer; + return res; + } + else { + return 0; + } +} + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +/* setup the WebAudio context and attach a ScriptProcessorNode */ +EM_JS(int, saudio_js_init, (int sample_rate, int num_channels, int buffer_size), { + Module._saudio_context = null; + Module._saudio_node = null; + if (typeof AudioContext !== 'undefined') { + Module._saudio_context = new AudioContext({ + sampleRate: sample_rate, + latencyHint: 'interactive', + }); + } + else { + Module._saudio_context = null; + console.log('sokol_audio.h: no WebAudio support'); + } + if (Module._saudio_context) { + console.log('sokol_audio.h: sample rate ', Module._saudio_context.sampleRate); + Module._saudio_node = Module._saudio_context.createScriptProcessor(buffer_size, 0, num_channels); + Module._saudio_node.onaudioprocess = (event) => { + const num_frames = event.outputBuffer.length; + const ptr = __saudio_emsc_pull(num_frames); + if (ptr) { + const num_channels = event.outputBuffer.numberOfChannels; + for (let chn = 0; chn < num_channels; chn++) { + const chan = event.outputBuffer.getChannelData(chn); + for (let i = 0; i < num_frames; i++) { + chan[i] = HEAPF32[(ptr>>2) + ((num_channels*i)+chn)] + } + } + } + }; + Module._saudio_node.connect(Module._saudio_context.destination); + + // in some browsers, WebAudio needs to be activated on a user action + const resume_webaudio = () => { + if (Module._saudio_context) { + if (Module._saudio_context.state === 'suspended') { + Module._saudio_context.resume(); + } + } + }; + document.addEventListener('click', resume_webaudio, {once:true}); + document.addEventListener('touchend', resume_webaudio, {once:true}); + document.addEventListener('keydown', resume_webaudio, {once:true}); + return 1; + } + else { + return 0; + } +}); + +/* shutdown the WebAudioContext and ScriptProcessorNode */ +EM_JS(void, saudio_js_shutdown, (void), { + \x2F\x2A\x2A @suppress {missingProperties} \x2A\x2F + const ctx = Module._saudio_context; + if (ctx !== null) { + if (Module._saudio_node) { + Module._saudio_node.disconnect(); + } + ctx.close(); + Module._saudio_context = null; + Module._saudio_node = null; + } +}); + +/* get the actual sample rate back from the WebAudio context */ +EM_JS(int, saudio_js_sample_rate, (void), { + if (Module._saudio_context) { + return Module._saudio_context.sampleRate; + } + else { + return 0; + } +}); + +/* get the actual buffer size in number of frames */ +EM_JS(int, saudio_js_buffer_frames, (void), { + if (Module._saudio_node) { + return Module._saudio_node.bufferSize; + } + else { + return 0; + } +}); + +/* return 1 if the WebAudio context is currently suspended, else 0 */ +EM_JS(int, saudio_js_suspended, (void), { + if (Module._saudio_context) { + if (Module._saudio_context.state === 'suspended') { + return 1; + } + else { + return 0; + } + } +}); + +_SOKOL_PRIVATE bool _saudio_webaudio_backend_init(void) { + if (saudio_js_init(_saudio.sample_rate, _saudio.num_channels, _saudio.buffer_frames)) { + _saudio.bytes_per_frame = (int)sizeof(float) * _saudio.num_channels; + _saudio.sample_rate = saudio_js_sample_rate(); + _saudio.buffer_frames = saudio_js_buffer_frames(); + const size_t buf_size = (size_t) (_saudio.buffer_frames * _saudio.bytes_per_frame); + _saudio.backend.buffer = (uint8_t*) _saudio_malloc(buf_size); + return true; + } + else { + return false; + } +} + +_SOKOL_PRIVATE void _saudio_webaudio_backend_shutdown(void) { + saudio_js_shutdown(); + if (_saudio.backend.buffer) { + _saudio_free(_saudio.backend.buffer); + _saudio.backend.buffer = 0; + } +} + +// █████ █████ ██ ██ ██████ ██ ██████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ███████ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██████ ██████ ██ ██████ +// +// >>aaudio +#elif defined(SAUDIO_ANDROID_AAUDIO) + +_SOKOL_PRIVATE aaudio_data_callback_result_t _saudio_aaudio_data_callback(AAudioStream* stream, void* user_data, void* audio_data, int32_t num_frames) { + _SOKOL_UNUSED(user_data); + _SOKOL_UNUSED(stream); + if (_saudio_has_callback()) { + _saudio_stream_callback((float*)audio_data, (int)num_frames, _saudio.num_channels); + } + else { + uint8_t* ptr = (uint8_t*)audio_data; + int num_bytes = _saudio.bytes_per_frame * num_frames; + if (0 == _saudio_fifo_read(&_saudio.fifo, ptr, num_bytes)) { + // not enough read data available, fill the entire buffer with silence + memset(ptr, 0, (size_t)num_bytes); + } + } + return AAUDIO_CALLBACK_RESULT_CONTINUE; +} + +_SOKOL_PRIVATE bool _saudio_aaudio_start_stream(void) { + if (AAudioStreamBuilder_openStream(_saudio.backend.builder, &_saudio.backend.stream) != AAUDIO_OK) { + _SAUDIO_ERROR(AAUDIO_STREAMBUILDER_OPEN_STREAM_FAILED); + return false; + } + AAudioStream_requestStart(_saudio.backend.stream); + return true; +} + +_SOKOL_PRIVATE void _saudio_aaudio_stop_stream(void) { + if (_saudio.backend.stream) { + AAudioStream_requestStop(_saudio.backend.stream); + AAudioStream_close(_saudio.backend.stream); + _saudio.backend.stream = 0; + } +} + +_SOKOL_PRIVATE void* _saudio_aaudio_restart_stream_thread_fn(void* param) { + _SOKOL_UNUSED(param); + _SAUDIO_WARN(AAUDIO_RESTARTING_STREAM_AFTER_ERROR); + pthread_mutex_lock(&_saudio.backend.mutex); + _saudio_aaudio_stop_stream(); + _saudio_aaudio_start_stream(); + pthread_mutex_unlock(&_saudio.backend.mutex); + return 0; +} + +_SOKOL_PRIVATE void _saudio_aaudio_error_callback(AAudioStream* stream, void* user_data, aaudio_result_t error) { + _SOKOL_UNUSED(stream); + _SOKOL_UNUSED(user_data); + if (error == AAUDIO_ERROR_DISCONNECTED) { + if (0 != pthread_create(&_saudio.backend.thread, 0, _saudio_aaudio_restart_stream_thread_fn, 0)) { + _SAUDIO_ERROR(AAUDIO_PTHREAD_CREATE_FAILED); + } + } +} + +_SOKOL_PRIVATE void _saudio_aaudio_backend_shutdown(void) { + pthread_mutex_lock(&_saudio.backend.mutex); + _saudio_aaudio_stop_stream(); + pthread_mutex_unlock(&_saudio.backend.mutex); + if (_saudio.backend.builder) { + AAudioStreamBuilder_delete(_saudio.backend.builder); + _saudio.backend.builder = 0; + } + pthread_mutex_destroy(&_saudio.backend.mutex); +} + +_SOKOL_PRIVATE bool _saudio_aaudio_backend_init(void) { + _SAUDIO_INFO(USING_AAUDIO_BACKEND); + + _saudio.bytes_per_frame = _saudio.num_channels * (int)sizeof(float); + + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutex_init(&_saudio.backend.mutex, &attr); + + if (AAudio_createStreamBuilder(&_saudio.backend.builder) != AAUDIO_OK) { + _SAUDIO_ERROR(AAUDIO_CREATE_STREAMBUILDER_FAILED); + _saudio_aaudio_backend_shutdown(); + return false; + } + + AAudioStreamBuilder_setFormat(_saudio.backend.builder, AAUDIO_FORMAT_PCM_FLOAT); + AAudioStreamBuilder_setSampleRate(_saudio.backend.builder, _saudio.sample_rate); + AAudioStreamBuilder_setChannelCount(_saudio.backend.builder, _saudio.num_channels); + AAudioStreamBuilder_setBufferCapacityInFrames(_saudio.backend.builder, _saudio.buffer_frames * 2); + AAudioStreamBuilder_setFramesPerDataCallback(_saudio.backend.builder, _saudio.buffer_frames); + AAudioStreamBuilder_setDataCallback(_saudio.backend.builder, _saudio_aaudio_data_callback, 0); + AAudioStreamBuilder_setErrorCallback(_saudio.backend.builder, _saudio_aaudio_error_callback, 0); + + if (!_saudio_aaudio_start_stream()) { + _saudio_aaudio_backend_shutdown(); + return false; + } + + return true; +} + +// ██████ ██████ ███████ ███ ██ ███████ ██ ███████ ███████ +// ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ ██ +// ██ ██ ██████ █████ ██ ██ ██ ███████ ██ █████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ███████ ██ ████ ███████ ███████ ███████ ███████ +// +// >>opensles +// >>sles +#elif defined(SAUDIO_ANDROID_SLES) + +_SOKOL_PRIVATE void _saudio_sles_semaphore_init(_saudio_sles_semaphore_t* sem) { + sem->count = 0; + int r = pthread_mutex_init(&sem->mutex, NULL); + SOKOL_ASSERT(r == 0); + r = pthread_cond_init(&sem->cond, NULL); + SOKOL_ASSERT(r == 0); + (void)(r); +} + +_SOKOL_PRIVATE void _saudio_sles_semaphore_destroy(_saudio_sles_semaphore_t* sem) { + pthread_cond_destroy(&sem->cond); + pthread_mutex_destroy(&sem->mutex); +} + +_SOKOL_PRIVATE void _saudio_sles_semaphore_post(_saudio_sles_semaphore_t* sem, int count) { + int r = pthread_mutex_lock(&sem->mutex); + SOKOL_ASSERT(r == 0); + for (int ii = 0; ii < count; ii++) { + r = pthread_cond_signal(&sem->cond); + SOKOL_ASSERT(r == 0); + } + sem->count += count; + r = pthread_mutex_unlock(&sem->mutex); + SOKOL_ASSERT(r == 0); + (void)(r); +} + +_SOKOL_PRIVATE bool _saudio_sles_semaphore_wait(_saudio_sles_semaphore_t* sem) { + int r = pthread_mutex_lock(&sem->mutex); + SOKOL_ASSERT(r == 0); + while (r == 0 && sem->count <= 0) { + r = pthread_cond_wait(&sem->cond, &sem->mutex); + } + bool ok = (r == 0); + if (ok) { + --sem->count; + } + r = pthread_mutex_unlock(&sem->mutex); + (void)(r); + return ok; +} + +/* fill intermediate buffer with new data and reset buffer_pos */ +_SOKOL_PRIVATE void _saudio_sles_fill_buffer(void) { + int src_buffer_frames = _saudio.buffer_frames; + if (_saudio_has_callback()) { + _saudio_stream_callback(_saudio.backend.src_buffer, src_buffer_frames, _saudio.num_channels); + } + else { + const int src_buffer_byte_size = src_buffer_frames * _saudio.num_channels * (int)sizeof(float); + if (0 == _saudio_fifo_read(&_saudio.fifo, (uint8_t*)_saudio.backend.src_buffer, src_buffer_byte_size)) { + /* not enough read data available, fill the entire buffer with silence */ + _saudio_clear(_saudio.backend.src_buffer, (size_t)src_buffer_byte_size); + } + } +} + +_SOKOL_PRIVATE void SLAPIENTRY _saudio_sles_play_cb(SLPlayItf player, void *context, SLuint32 event) { + _SOKOL_UNUSED(context); + _SOKOL_UNUSED(player); + if (event & SL_PLAYEVENT_HEADATEND) { + _saudio_sles_semaphore_post(&_saudio.backend.buffer_sem, 1); + } +} + +_SOKOL_PRIVATE void* _saudio_sles_thread_fn(void* param) { + _SOKOL_UNUSED(param); + while (!_saudio.backend.thread_stop) { + /* get next output buffer, advance, next buffer. */ + int16_t* out_buffer = _saudio.backend.output_buffers[_saudio.backend.active_buffer]; + _saudio.backend.active_buffer = (_saudio.backend.active_buffer + 1) % SAUDIO_SLES_NUM_BUFFERS; + int16_t* next_buffer = _saudio.backend.output_buffers[_saudio.backend.active_buffer]; + + /* queue this buffer */ + const int buffer_size_bytes = _saudio.buffer_frames * _saudio.num_channels * (int)sizeof(short); + (*_saudio.backend.player_buffer_queue)->Enqueue(_saudio.backend.player_buffer_queue, out_buffer, (SLuint32)buffer_size_bytes); + + /* fill the next buffer */ + _saudio_sles_fill_buffer(); + const int num_samples = _saudio.num_channels * _saudio.buffer_frames; + for (int i = 0; i < num_samples; ++i) { + next_buffer[i] = (int16_t) (_saudio.backend.src_buffer[i] * 0x7FFF); + } + + _saudio_sles_semaphore_wait(&_saudio.backend.buffer_sem); + } + + return 0; +} + +_SOKOL_PRIVATE void _saudio_sles_backend_shutdown(void) { + _saudio.backend.thread_stop = 1; + pthread_join(_saudio.backend.thread, 0); + + if (_saudio.backend.player_obj) { + (*_saudio.backend.player_obj)->Destroy(_saudio.backend.player_obj); + } + + if (_saudio.backend.output_mix_obj) { + (*_saudio.backend.output_mix_obj)->Destroy(_saudio.backend.output_mix_obj); + } + + if (_saudio.backend.engine_obj) { + (*_saudio.backend.engine_obj)->Destroy(_saudio.backend.engine_obj); + } + + for (int i = 0; i < SAUDIO_SLES_NUM_BUFFERS; i++) { + _saudio_free(_saudio.backend.output_buffers[i]); + } + _saudio_free(_saudio.backend.src_buffer); +} + +_SOKOL_PRIVATE bool _saudio_sles_backend_init(void) { + _SAUDIO_INFO(USING_SLES_BACKEND); + + _saudio.bytes_per_frame = (int)sizeof(float) * _saudio.num_channels; + + for (int i = 0; i < SAUDIO_SLES_NUM_BUFFERS; ++i) { + const int buffer_size_bytes = (int)sizeof(int16_t) * _saudio.num_channels * _saudio.buffer_frames; + _saudio.backend.output_buffers[i] = (int16_t*) _saudio_malloc_clear((size_t)buffer_size_bytes); + } + + { + const int buffer_size_bytes = _saudio.bytes_per_frame * _saudio.buffer_frames; + _saudio.backend.src_buffer = (float*) _saudio_malloc_clear((size_t)buffer_size_bytes); + } + + /* Create engine */ + const SLEngineOption opts[] = { { SL_ENGINEOPTION_THREADSAFE, SL_BOOLEAN_TRUE } }; + if (slCreateEngine(&_saudio.backend.engine_obj, 1, opts, 0, NULL, NULL ) != SL_RESULT_SUCCESS) { + _SAUDIO_ERROR(SLES_CREATE_ENGINE_FAILED); + _saudio_sles_backend_shutdown(); + return false; + } + + (*_saudio.backend.engine_obj)->Realize(_saudio.backend.engine_obj, SL_BOOLEAN_FALSE); + if ((*_saudio.backend.engine_obj)->GetInterface(_saudio.backend.engine_obj, SL_IID_ENGINE, &_saudio.backend.engine) != SL_RESULT_SUCCESS) { + _SAUDIO_ERROR(SLES_ENGINE_GET_ENGINE_INTERFACE_FAILED); + _saudio_sles_backend_shutdown(); + return false; + } + + /* Create output mix. */ + { + const SLInterfaceID ids[] = { SL_IID_VOLUME }; + const SLboolean req[] = { SL_BOOLEAN_FALSE }; + + if ((*_saudio.backend.engine)->CreateOutputMix(_saudio.backend.engine, &_saudio.backend.output_mix_obj, 1, ids, req) != SL_RESULT_SUCCESS) { + _SAUDIO_ERROR(SLES_CREATE_OUTPUT_MIX_FAILED); + _saudio_sles_backend_shutdown(); + return false; + } + (*_saudio.backend.output_mix_obj)->Realize(_saudio.backend.output_mix_obj, SL_BOOLEAN_FALSE); + + if ((*_saudio.backend.output_mix_obj)->GetInterface(_saudio.backend.output_mix_obj, SL_IID_VOLUME, &_saudio.backend.output_mix_vol) != SL_RESULT_SUCCESS) { + _SAUDIO_WARN(SLES_MIXER_GET_VOLUME_INTERFACE_FAILED); + } + } + + /* android buffer queue */ + _saudio.backend.in_locator.locatorType = SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE; + _saudio.backend.in_locator.numBuffers = SAUDIO_SLES_NUM_BUFFERS; + + /* data format */ + SLDataFormat_PCM format; + format.formatType = SL_DATAFORMAT_PCM; + format.numChannels = (SLuint32)_saudio.num_channels; + format.samplesPerSec = (SLuint32) (_saudio.sample_rate * 1000); + format.bitsPerSample = SL_PCMSAMPLEFORMAT_FIXED_16; + format.containerSize = 16; + format.endianness = SL_BYTEORDER_LITTLEENDIAN; + + if (_saudio.num_channels == 2) { + format.channelMask = SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT; + } else { + format.channelMask = SL_SPEAKER_FRONT_CENTER; + } + + SLDataSource src; + src.pLocator = &_saudio.backend.in_locator; + src.pFormat = &format; + + /* Output mix. */ + _saudio.backend.out_locator.locatorType = SL_DATALOCATOR_OUTPUTMIX; + _saudio.backend.out_locator.outputMix = _saudio.backend.output_mix_obj; + + _saudio.backend.dst_data_sink.pLocator = &_saudio.backend.out_locator; + _saudio.backend.dst_data_sink.pFormat = NULL; + + /* setup player */ + { + const SLInterfaceID ids[] = { SL_IID_VOLUME, SL_IID_ANDROIDSIMPLEBUFFERQUEUE }; + const SLboolean req[] = { SL_BOOLEAN_FALSE, SL_BOOLEAN_TRUE }; + + if ((*_saudio.backend.engine)->CreateAudioPlayer(_saudio.backend.engine, &_saudio.backend.player_obj, &src, &_saudio.backend.dst_data_sink, sizeof(ids) / sizeof(ids[0]), ids, req) != SL_RESULT_SUCCESS) + { + _SAUDIO_ERROR(SLES_ENGINE_CREATE_AUDIO_PLAYER_FAILED); + _saudio_sles_backend_shutdown(); + return false; + } + (*_saudio.backend.player_obj)->Realize(_saudio.backend.player_obj, SL_BOOLEAN_FALSE); + + if ((*_saudio.backend.player_obj)->GetInterface(_saudio.backend.player_obj, SL_IID_PLAY, &_saudio.backend.player) != SL_RESULT_SUCCESS) { + _SAUDIO_ERROR(SLES_PLAYER_GET_PLAY_INTERFACE_FAILED); + _saudio_sles_backend_shutdown(); + return false; + } + if ((*_saudio.backend.player_obj)->GetInterface(_saudio.backend.player_obj, SL_IID_VOLUME, &_saudio.backend.player_vol) != SL_RESULT_SUCCESS) { + _SAUDIO_ERROR(SLES_PLAYER_GET_VOLUME_INTERFACE_FAILED); + } + if ((*_saudio.backend.player_obj)->GetInterface(_saudio.backend.player_obj, SL_IID_ANDROIDSIMPLEBUFFERQUEUE, &_saudio.backend.player_buffer_queue) != SL_RESULT_SUCCESS) { + _SAUDIO_ERROR(SLES_PLAYER_GET_BUFFERQUEUE_INTERFACE_FAILED); + _saudio_sles_backend_shutdown(); + return false; + } + } + + /* begin */ + { + const int buffer_size_bytes = (int)sizeof(int16_t) * _saudio.num_channels * _saudio.buffer_frames; + (*_saudio.backend.player_buffer_queue)->Enqueue(_saudio.backend.player_buffer_queue, _saudio.backend.output_buffers[0], (SLuint32)buffer_size_bytes); + _saudio.backend.active_buffer = (_saudio.backend.active_buffer + 1) % SAUDIO_SLES_NUM_BUFFERS; + + (*_saudio.backend.player)->RegisterCallback(_saudio.backend.player, _saudio_sles_play_cb, NULL); + (*_saudio.backend.player)->SetCallbackEventsMask(_saudio.backend.player, SL_PLAYEVENT_HEADATEND); + (*_saudio.backend.player)->SetPlayState(_saudio.backend.player, SL_PLAYSTATE_PLAYING); + } + + /* create the buffer-streaming start thread */ + if (0 != pthread_create(&_saudio.backend.thread, 0, _saudio_sles_thread_fn, 0)) { + _saudio_sles_backend_shutdown(); + return false; + } + + return true; +} + +// ██████ ██████ ██████ ███████ █████ ██ ██ ██████ ██ ██████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██████ █████ ███████ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██████ ██ ██ ███████ ██ ██ ██████ ██████ ██ ██████ +// +// >>coreaudio +#elif defined(_SAUDIO_APPLE) + +#if defined(_SAUDIO_IOS) +#if __has_feature(objc_arc) +#define _SAUDIO_OBJC_RELEASE(obj) { obj = nil; } +#else +#define _SAUDIO_OBJC_RELEASE(obj) { [obj release]; obj = nil; } +#endif + +@interface _saudio_interruption_handler : NSObject { } +@end + +@implementation _saudio_interruption_handler +-(id)init { + self = [super init]; + AVAudioSession* session = [AVAudioSession sharedInstance]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handle_interruption:) name:AVAudioSessionInterruptionNotification object:session]; + return self; +} + +-(void)dealloc { + [self remove_handler]; + #if !__has_feature(objc_arc) + [super dealloc]; + #endif +} + +-(void)remove_handler { + [[NSNotificationCenter defaultCenter] removeObserver:self name:@"AVAudioSessionInterruptionNotification" object:nil]; +} + +-(void)handle_interruption:(NSNotification*)notification { + AVAudioSession* session = [AVAudioSession sharedInstance]; + SOKOL_ASSERT(session); + NSDictionary* dict = notification.userInfo; + SOKOL_ASSERT(dict); + NSInteger type = [[dict valueForKey:AVAudioSessionInterruptionTypeKey] integerValue]; + switch (type) { + case AVAudioSessionInterruptionTypeBegan: + if (_saudio.backend.ca_audio_queue) { + AudioQueuePause(_saudio.backend.ca_audio_queue); + } + [session setActive:false error:nil]; + break; + case AVAudioSessionInterruptionTypeEnded: + [session setActive:true error:nil]; + if (_saudio.backend.ca_audio_queue) { + AudioQueueStart(_saudio.backend.ca_audio_queue, NULL); + } + break; + default: + break; + } +} +@end +#endif // _SAUDIO_IOS + +/* NOTE: the buffer data callback is called on a separate thread! */ +_SOKOL_PRIVATE void _saudio_coreaudio_callback(void* user_data, _saudio_AudioQueueRef queue, _saudio_AudioQueueBufferRef buffer) { + _SOKOL_UNUSED(user_data); + if (_saudio_has_callback()) { + const int num_frames = (int)buffer->mAudioDataByteSize / _saudio.bytes_per_frame; + const int num_channels = _saudio.num_channels; + _saudio_stream_callback((float*)buffer->mAudioData, num_frames, num_channels); + } + else { + uint8_t* ptr = (uint8_t*)buffer->mAudioData; + int num_bytes = (int) buffer->mAudioDataByteSize; + if (0 == _saudio_fifo_read(&_saudio.fifo, ptr, num_bytes)) { + /* not enough read data available, fill the entire buffer with silence */ + _saudio_clear(ptr, (size_t)num_bytes); + } + } + AudioQueueEnqueueBuffer(queue, buffer, 0, NULL); +} + +_SOKOL_PRIVATE void _saudio_coreaudio_backend_shutdown(void) { + if (_saudio.backend.ca_audio_queue) { + AudioQueueStop(_saudio.backend.ca_audio_queue, true); + AudioQueueDispose(_saudio.backend.ca_audio_queue, false); + _saudio.backend.ca_audio_queue = 0; + } + #if defined(_SAUDIO_IOS) + /* remove interruption handler */ + if (_saudio.backend.ca_interruption_handler != nil) { + [_saudio.backend.ca_interruption_handler remove_handler]; + _SAUDIO_OBJC_RELEASE(_saudio.backend.ca_interruption_handler); + } + /* deactivate audio session */ + AVAudioSession* session = [AVAudioSession sharedInstance]; + SOKOL_ASSERT(session); + [session setActive:false error:nil];; + #endif // _SAUDIO_IOS +} + +_SOKOL_PRIVATE bool _saudio_coreaudio_backend_init(void) { + SOKOL_ASSERT(0 == _saudio.backend.ca_audio_queue); + + #if defined(_SAUDIO_IOS) + /* activate audio session */ + AVAudioSession* session = [AVAudioSession sharedInstance]; + SOKOL_ASSERT(session != nil); + [session setCategory: AVAudioSessionCategoryPlayback error:nil]; + [session setActive:true error:nil]; + + /* create interruption handler */ + _saudio.backend.ca_interruption_handler = [[_saudio_interruption_handler alloc] init]; + #endif + + /* create an audio queue with fp32 samples */ + _saudio_AudioStreamBasicDescription fmt; + _saudio_clear(&fmt, sizeof(fmt)); + fmt.mSampleRate = (double) _saudio.sample_rate; + fmt.mFormatID = _saudio_kAudioFormatLinearPCM; + fmt.mFormatFlags = _saudio_kLinearPCMFormatFlagIsFloat | _saudio_kAudioFormatFlagIsPacked; + fmt.mFramesPerPacket = 1; + fmt.mChannelsPerFrame = (uint32_t) _saudio.num_channels; + fmt.mBytesPerFrame = (uint32_t)sizeof(float) * (uint32_t)_saudio.num_channels; + fmt.mBytesPerPacket = fmt.mBytesPerFrame; + fmt.mBitsPerChannel = 32; + _saudio_OSStatus res = AudioQueueNewOutput(&fmt, _saudio_coreaudio_callback, 0, NULL, NULL, 0, &_saudio.backend.ca_audio_queue); + if (0 != res) { + _SAUDIO_ERROR(COREAUDIO_NEW_OUTPUT_FAILED); + return false; + } + SOKOL_ASSERT(_saudio.backend.ca_audio_queue); + + /* create 2 audio buffers */ + for (int i = 0; i < 2; i++) { + _saudio_AudioQueueBufferRef buf = NULL; + const uint32_t buf_byte_size = (uint32_t)_saudio.buffer_frames * fmt.mBytesPerFrame; + res = AudioQueueAllocateBuffer(_saudio.backend.ca_audio_queue, buf_byte_size, &buf); + if (0 != res) { + _SAUDIO_ERROR(COREAUDIO_ALLOCATE_BUFFER_FAILED); + _saudio_coreaudio_backend_shutdown(); + return false; + } + buf->mAudioDataByteSize = buf_byte_size; + _saudio_clear(buf->mAudioData, buf->mAudioDataByteSize); + AudioQueueEnqueueBuffer(_saudio.backend.ca_audio_queue, buf, 0, NULL); + } + + /* init or modify actual playback parameters */ + _saudio.bytes_per_frame = (int)fmt.mBytesPerFrame; + + /* ...and start playback */ + res = AudioQueueStart(_saudio.backend.ca_audio_queue, NULL); + if (0 != res) { + _SAUDIO_ERROR(COREAUDIO_START_FAILED); + _saudio_coreaudio_backend_shutdown(); + return false; + } + return true; +} + +#else +#error "unsupported platform" +#endif + +bool _saudio_backend_init(void) { + #if defined(SOKOL_DUMMY_BACKEND) + return _saudio_dummy_backend_init(); + #elif defined(_SAUDIO_LINUX) + return _saudio_alsa_backend_init(); + #elif defined(_SAUDIO_WINDOWS) + return _saudio_wasapi_backend_init(); + #elif defined(_SAUDIO_EMSCRIPTEN) + return _saudio_webaudio_backend_init(); + #elif defined(SAUDIO_ANDROID_AAUDIO) + return _saudio_aaudio_backend_init(); + #elif defined(SAUDIO_ANDROID_SLES) + return _saudio_sles_backend_init(); + #elif defined(_SAUDIO_APPLE) + return _saudio_coreaudio_backend_init(); + #else + #error "unknown platform" + #endif +} + +void _saudio_backend_shutdown(void) { + #if defined(SOKOL_DUMMY_BACKEND) + _saudio_dummy_backend_shutdown(); + #elif defined(_SAUDIO_LINUX) + _saudio_alsa_backend_shutdown(); + #elif defined(_SAUDIO_WINDOWS) + _saudio_wasapi_backend_shutdown(); + #elif defined(_SAUDIO_EMSCRIPTEN) + _saudio_webaudio_backend_shutdown(); + #elif defined(SAUDIO_ANDROID_AAUDIO) + _saudio_aaudio_backend_shutdown(); + #elif defined(SAUDIO_ANDROID_SLES) + _saudio_sles_backend_shutdown(); + #elif defined(_SAUDIO_APPLE) + return _saudio_coreaudio_backend_shutdown(); + #else + #error "unknown platform" + #endif +} + +// ██████ ██ ██ ██████ ██ ██ ██████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ██ ██████ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██████ ██████ ███████ ██ ██████ +// +// >>public +SOKOL_API_IMPL void saudio_setup(const saudio_desc* desc) { + SOKOL_ASSERT(!_saudio.valid); + SOKOL_ASSERT(desc); + SOKOL_ASSERT((desc->allocator.alloc && desc->allocator.free) || (!desc->allocator.alloc && !desc->allocator.free)); + _saudio_clear(&_saudio, sizeof(_saudio)); + _saudio.desc = *desc; + _saudio.stream_cb = desc->stream_cb; + _saudio.stream_userdata_cb = desc->stream_userdata_cb; + _saudio.user_data = desc->user_data; + _saudio.sample_rate = _saudio_def(_saudio.desc.sample_rate, _SAUDIO_DEFAULT_SAMPLE_RATE); + _saudio.buffer_frames = _saudio_def(_saudio.desc.buffer_frames, _SAUDIO_DEFAULT_BUFFER_FRAMES); + _saudio.packet_frames = _saudio_def(_saudio.desc.packet_frames, _SAUDIO_DEFAULT_PACKET_FRAMES); + _saudio.num_packets = _saudio_def(_saudio.desc.num_packets, _SAUDIO_DEFAULT_NUM_PACKETS); + _saudio.num_channels = _saudio_def(_saudio.desc.num_channels, 1); + _saudio_fifo_init_mutex(&_saudio.fifo); + if (_saudio_backend_init()) { + /* the backend might not support the requested exact buffer size, + make sure the actual buffer size is still a multiple of + the requested packet size + */ + if (0 != (_saudio.buffer_frames % _saudio.packet_frames)) { + _SAUDIO_ERROR(BACKEND_BUFFER_SIZE_ISNT_MULTIPLE_OF_PACKET_SIZE); + _saudio_backend_shutdown(); + return; + } + SOKOL_ASSERT(_saudio.bytes_per_frame > 0); + _saudio_fifo_init(&_saudio.fifo, _saudio.packet_frames * _saudio.bytes_per_frame, _saudio.num_packets); + _saudio.valid = true; + } + else { + _saudio_fifo_destroy_mutex(&_saudio.fifo); + } +} + +SOKOL_API_IMPL void saudio_shutdown(void) { + if (_saudio.valid) { + _saudio_backend_shutdown(); + _saudio_fifo_shutdown(&_saudio.fifo); + _saudio_fifo_destroy_mutex(&_saudio.fifo); + _saudio.valid = false; + } +} + +SOKOL_API_IMPL bool saudio_isvalid(void) { + return _saudio.valid; +} + +SOKOL_API_IMPL void* saudio_userdata(void) { + return _saudio.desc.user_data; +} + +SOKOL_API_IMPL saudio_desc saudio_query_desc(void) { + return _saudio.desc; +} + +SOKOL_API_IMPL int saudio_sample_rate(void) { + return _saudio.sample_rate; +} + +SOKOL_API_IMPL int saudio_buffer_frames(void) { + return _saudio.buffer_frames; +} + +SOKOL_API_IMPL int saudio_channels(void) { + return _saudio.num_channels; +} + +SOKOL_API_IMPL bool saudio_suspended(void) { + #if defined(_SAUDIO_EMSCRIPTEN) + if (_saudio.valid) { + return 1 == saudio_js_suspended(); + } + else { + return false; + } + #else + return false; + #endif +} + +SOKOL_API_IMPL int saudio_expect(void) { + if (_saudio.valid) { + const int num_frames = _saudio_fifo_writable_bytes(&_saudio.fifo) / _saudio.bytes_per_frame; + return num_frames; + } + else { + return 0; + } +} + +SOKOL_API_IMPL int saudio_push(const float* frames, int num_frames) { + SOKOL_ASSERT(frames && (num_frames > 0)); + if (_saudio.valid) { + const int num_bytes = num_frames * _saudio.bytes_per_frame; + const int num_written = _saudio_fifo_write(&_saudio.fifo, (const uint8_t*)frames, num_bytes); + return num_written / _saudio.bytes_per_frame; + } + else { + return 0; + } +} + +#undef _saudio_def +#undef _saudio_def_flt + +#if defined(_SAUDIO_WINDOWS) +#ifdef _MSC_VER +#pragma warning(pop) +#endif +#endif + +#endif /* SOKOL_AUDIO_IMPL */ diff --git a/source/engine/thirdparty/sokol/sokol_color.h b/source/engine/thirdparty/sokol/sokol_color.h new file mode 100644 index 0000000..cc31b44 --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_color.h @@ -0,0 +1,1148 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_COLOR_IMPL) +#define SOKOL_COLOR_IMPL +#endif +#ifndef SOKOL_COLOR_INCLUDED +/* + sokol_color.h -- sg_color utilities + + This header was generated by gen_sokol_color.py. Do not modify it. + + Project URL: https://github.com/floooh/sokol + + Include the following headers before including sokol_color.h: + + sokol_gfx.h + + FEATURE OVERVIEW + ================ + sokol_color.h defines preset colors based on the X11 color names, + alongside utility functions to create and modify sg_color objects. + + The predefined colors are based on the X11 color names: + + https://en.wikipedia.org/wiki/X11_color_names + + This palette is useful for prototyping - lots of programmers are familiar with + these colours due to their use in X11, web development and XNA / MonoGame. They + are also handy when you want to reference a familiar color, but don't want to + write it out by hand. + + COLORS + ====== + The palette is defined using static const (or constexpr if you are using a + C++ compiler) objects. These objects use lowercase names: + + static SOKOL_COLOR_CONSTEXPR sg_color sg_red = SG_RED; + static SOKOL_COLOR_CONSTEXPR sg_color sg_green = SG_GREEN; + static SOKOL_COLOR_CONSTEXPR sg_color sg_blue = SG_BLUE; + + An sg_color preset object like sg_red can be used to initialize + an sg_pass_action: + + sg_pass_action pass_action = { + .colors[0] = { .action=SG_ACTION_CLEAR, .value = sg_red } + }; + + Initializing an object with static storage duration is more complicated + because of C language rules. Technically, a static const is not a + compile-time constant in C. To work around this, the palette is also + defined as a series of brace-enclosed list macro definitions. These + definitions use uppercase names: + + #define SG_RED { 1.0f, 0.0f, 0.0f, 1.0f } + #define SG_GREEN { 0.0f, 1.0f, 0.0f, 1.0f } + #define SG_BLUE { 0.0f, 0.0f, 1.0f, 1.0f } + + A preset macro like SG_RED can be used to initialize objects with static + storage duration: + + static struct { + sg_pass_action pass_action; + } state = { + .pass_action = { + .colors[0] = { .action = SG_ACTION_CLEAR, .value = SG_RED } + } + }; + + A second set of macro definitions exists for colors packed as 32 bit integer + values. These definitions are also uppercase, but use the _RGBA32 suffix: + + #define SG_RED_RGBA32 0xFF0000FF + #define SG_GREEN_RGBA32 0x00FF00FF + #define SG_BLUE_RGBA32 0x0000FFFF + + This is useful if your code makes use of packed colors, as sokol_gl.h does for its + internal vertex format: + + sgl_begin_triangles(); + sgl_v2f_c1i( 0.0f, 0.5f, SG_RED_RGBA32); + sgl_v2f_c1i( 0.5f, -0.5f, SG_GREEN_RGBA32); + sgl_v2f_c1i(-0.5f, -0.5f, SG_BLUE_RGBA32); + sgl_end(); + + UTILITY FUNCTIONS + ================= + + Utility functions for creating colours are provided: + + - sg_make_color_4b(uint8_t r, uint8_t g, uint8_t b, uint8_t a) + Create a sg_color object from separate R, G, B, A bytes. + + - sg_make_color_1i(uint32_t rgba) + Create a sg_color object from RGBA bytes packed into a 32-bit unsigned integer. + + - sg_color_lerp(const sg_color* color_a, const sg_color* color_b, float amount) + Linearly interpolate a color. + + - sg_color_lerp_precise(const sg_color* color_a, const sg_color* color_b, float amount) + Linearly interpolate a color. Less efficient but more precise than sg_color_lerp. + + - sg_color_multiply(const sg_color* color, float scale) + Multiply each color component by the scale factor. + + LICENSE + ======= + + zlib/libpng license + + Copyright (c) 2020 Stuart Adams + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_COLOR_INCLUDED (1) + +#if !defined(SOKOL_GFX_INCLUDED) +#error "Please include sokol_gfx.h before sokol_color.h" +#endif + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_GL_API_DECL) +#define SOKOL_COLOR_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_COLOR_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_COLOR_IMPL) +#define SOKOL_COLOR_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_COLOR_API_DECL __declspec(dllimport) +#else +#define SOKOL_COLOR_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +#define SOKOL_COLOR_CONSTEXPR constexpr +extern "C" { +#else +#define SOKOL_COLOR_CONSTEXPR const +#endif + +SOKOL_COLOR_API_DECL sg_color sg_make_color_4b(uint8_t r, uint8_t g, uint8_t b, uint8_t a); +SOKOL_COLOR_API_DECL sg_color sg_make_color_1i(uint32_t rgba); +SOKOL_COLOR_API_DECL sg_color sg_color_lerp(const sg_color* color_a, const sg_color* color_b, float amount); +SOKOL_COLOR_API_DECL sg_color sg_color_lerp_precise(const sg_color* color_a, const sg_color* color_b, float amount); +SOKOL_COLOR_API_DECL sg_color sg_color_multiply(const sg_color* color, float scale); + +/* Alice Blue color { R:240, G:248, B:255, A:255 } */ +#define SG_ALICE_BLUE { 0.941176471f, 0.97254902f, 1.0f, 1.0f } +/* Antique White color { R:250, G:235, B:215, A:255 } */ +#define SG_ANTIQUE_WHITE { 0.980392157f, 0.921568627f, 0.843137255f, 1.0f } +/* Aqua color { R:0, G:255, B:255, A:255 } */ +#define SG_AQUA { 0.0f, 1.0f, 1.0f, 1.0f } +/* Aquamarine color { R:127, G:255, B:212, A:255 } */ +#define SG_AQUAMARINE { 0.498039216f, 1.0f, 0.831372549f, 1.0f } +/* Azure color { R:240, G:255, B:255, A:255 } */ +#define SG_AZURE { 0.941176471f, 1.0f, 1.0f, 1.0f } +/* Beige color { R:245, G:245, B:220, A:255 } */ +#define SG_BEIGE { 0.960784314f, 0.960784314f, 0.862745098f, 1.0f } +/* Bisque color { R:255, G:228, B:196, A:255 } */ +#define SG_BISQUE { 1.0f, 0.894117647f, 0.768627451f, 1.0f } +/* Black color { R:0, G:0, B:0, A:255 } */ +#define SG_BLACK { 0.0f, 0.0f, 0.0f, 1.0f } +/* Blanched Almond color { R:255, G:235, B:205, A:255 } */ +#define SG_BLANCHED_ALMOND { 1.0f, 0.921568627f, 0.803921569f, 1.0f } +/* Blue color { R:0, G:0, B:255, A:255 } */ +#define SG_BLUE { 0.0f, 0.0f, 1.0f, 1.0f } +/* Blue Violet color { R:138, G:43, B:226, A:255 } */ +#define SG_BLUE_VIOLET { 0.541176471f, 0.168627451f, 0.88627451f, 1.0f } +/* Brown color { R:165, G:42, B:42, A:255 } */ +#define SG_BROWN { 0.647058824f, 0.164705882f, 0.164705882f, 1.0f } +/* Burlywood color { R:222, G:184, B:135, A:255 } */ +#define SG_BURLYWOOD { 0.870588235f, 0.721568627f, 0.529411765f, 1.0f } +/* Cadet Blue color { R:95, G:158, B:160, A:255 } */ +#define SG_CADET_BLUE { 0.37254902f, 0.619607843f, 0.62745098f, 1.0f } +/* Chartreuse color { R:127, G:255, B:0, A:255 } */ +#define SG_CHARTREUSE { 0.498039216f, 1.0f, 0.0f, 1.0f } +/* Chocolate color { R:210, G:105, B:30, A:255 } */ +#define SG_CHOCOLATE { 0.823529412f, 0.411764706f, 0.117647059f, 1.0f } +/* Coral color { R:255, G:127, B:80, A:255 } */ +#define SG_CORAL { 1.0f, 0.498039216f, 0.31372549f, 1.0f } +/* Cornflower Blue color { R:100, G:149, B:237, A:255 } */ +#define SG_CORNFLOWER_BLUE { 0.392156863f, 0.584313725f, 0.929411765f, 1.0f } +/* Cornsilk color { R:255, G:248, B:220, A:255 } */ +#define SG_CORNSILK { 1.0f, 0.97254902f, 0.862745098f, 1.0f } +/* Crimson color { R:220, G:20, B:60, A:255 } */ +#define SG_CRIMSON { 0.862745098f, 0.0784313725f, 0.235294118f, 1.0f } +/* Cyan color { R:0, G:255, B:255, A:255 } */ +#define SG_CYAN { 0.0f, 1.0f, 1.0f, 1.0f } +/* Dark Blue color { R:0, G:0, B:139, A:255 } */ +#define SG_DARK_BLUE { 0.0f, 0.0f, 0.545098039f, 1.0f } +/* Dark Cyan color { R:0, G:139, B:139, A:255 } */ +#define SG_DARK_CYAN { 0.0f, 0.545098039f, 0.545098039f, 1.0f } +/* Dark Goldenrod color { R:184, G:134, B:11, A:255 } */ +#define SG_DARK_GOLDENROD { 0.721568627f, 0.525490196f, 0.0431372549f, 1.0f } +/* Dark Gray color { R:169, G:169, B:169, A:255 } */ +#define SG_DARK_GRAY { 0.662745098f, 0.662745098f, 0.662745098f, 1.0f } +/* Dark Green color { R:0, G:100, B:0, A:255 } */ +#define SG_DARK_GREEN { 0.0f, 0.392156863f, 0.0f, 1.0f } +/* Dark Khaki color { R:189, G:183, B:107, A:255 } */ +#define SG_DARK_KHAKI { 0.741176471f, 0.717647059f, 0.419607843f, 1.0f } +/* Dark Magenta color { R:139, G:0, B:139, A:255 } */ +#define SG_DARK_MAGENTA { 0.545098039f, 0.0f, 0.545098039f, 1.0f } +/* Dark Olive Green color { R:85, G:107, B:47, A:255 } */ +#define SG_DARK_OLIVE_GREEN { 0.333333333f, 0.419607843f, 0.184313725f, 1.0f } +/* Dark Orange color { R:255, G:140, B:0, A:255 } */ +#define SG_DARK_ORANGE { 1.0f, 0.549019608f, 0.0f, 1.0f } +/* Dark Orchid color { R:153, G:50, B:204, A:255 } */ +#define SG_DARK_ORCHID { 0.6f, 0.196078431f, 0.8f, 1.0f } +/* Dark Red color { R:139, G:0, B:0, A:255 } */ +#define SG_DARK_RED { 0.545098039f, 0.0f, 0.0f, 1.0f } +/* Dark Salmon color { R:233, G:150, B:122, A:255 } */ +#define SG_DARK_SALMON { 0.91372549f, 0.588235294f, 0.478431373f, 1.0f } +/* Dark Sea Green color { R:143, G:188, B:143, A:255 } */ +#define SG_DARK_SEA_GREEN { 0.560784314f, 0.737254902f, 0.560784314f, 1.0f } +/* Dark Slate Blue color { R:72, G:61, B:139, A:255 } */ +#define SG_DARK_SLATE_BLUE { 0.282352941f, 0.239215686f, 0.545098039f, 1.0f } +/* Dark Slate Gray color { R:47, G:79, B:79, A:255 } */ +#define SG_DARK_SLATE_GRAY { 0.184313725f, 0.309803922f, 0.309803922f, 1.0f } +/* Dark Turquoise color { R:0, G:206, B:209, A:255 } */ +#define SG_DARK_TURQUOISE { 0.0f, 0.807843137f, 0.819607843f, 1.0f } +/* Dark Violet color { R:148, G:0, B:211, A:255 } */ +#define SG_DARK_VIOLET { 0.580392157f, 0.0f, 0.82745098f, 1.0f } +/* Deep Pink color { R:255, G:20, B:147, A:255 } */ +#define SG_DEEP_PINK { 1.0f, 0.0784313725f, 0.576470588f, 1.0f } +/* Deep Sky Blue color { R:0, G:191, B:255, A:255 } */ +#define SG_DEEP_SKY_BLUE { 0.0f, 0.749019608f, 1.0f, 1.0f } +/* Dim Gray color { R:105, G:105, B:105, A:255 } */ +#define SG_DIM_GRAY { 0.411764706f, 0.411764706f, 0.411764706f, 1.0f } +/* Dodger Blue color { R:30, G:144, B:255, A:255 } */ +#define SG_DODGER_BLUE { 0.117647059f, 0.564705882f, 1.0f, 1.0f } +/* Firebrick color { R:178, G:34, B:34, A:255 } */ +#define SG_FIREBRICK { 0.698039216f, 0.133333333f, 0.133333333f, 1.0f } +/* Floral White color { R:255, G:250, B:240, A:255 } */ +#define SG_FLORAL_WHITE { 1.0f, 0.980392157f, 0.941176471f, 1.0f } +/* Forest Green color { R:34, G:139, B:34, A:255 } */ +#define SG_FOREST_GREEN { 0.133333333f, 0.545098039f, 0.133333333f, 1.0f } +/* Fuchsia color { R:255, G:0, B:255, A:255 } */ +#define SG_FUCHSIA { 1.0f, 0.0f, 1.0f, 1.0f } +/* Gainsboro color { R:220, G:220, B:220, A:255 } */ +#define SG_GAINSBORO { 0.862745098f, 0.862745098f, 0.862745098f, 1.0f } +/* Ghost White color { R:248, G:248, B:255, A:255 } */ +#define SG_GHOST_WHITE { 0.97254902f, 0.97254902f, 1.0f, 1.0f } +/* Gold color { R:255, G:215, B:0, A:255 } */ +#define SG_GOLD { 1.0f, 0.843137255f, 0.0f, 1.0f } +/* Goldenrod color { R:218, G:165, B:32, A:255 } */ +#define SG_GOLDENROD { 0.854901961f, 0.647058824f, 0.125490196f, 1.0f } +/* Gray color { R:190, G:190, B:190, A:255 } */ +#define SG_GRAY { 0.745098039f, 0.745098039f, 0.745098039f, 1.0f } +/* Web Gray color { R:128, G:128, B:128, A:255 } */ +#define SG_WEB_GRAY { 0.501960784f, 0.501960784f, 0.501960784f, 1.0f } +/* Green color { R:0, G:255, B:0, A:255 } */ +#define SG_GREEN { 0.0f, 1.0f, 0.0f, 1.0f } +/* Web Green color { R:0, G:128, B:0, A:255 } */ +#define SG_WEB_GREEN { 0.0f, 0.501960784f, 0.0f, 1.0f } +/* Green Yellow color { R:173, G:255, B:47, A:255 } */ +#define SG_GREEN_YELLOW { 0.678431373f, 1.0f, 0.184313725f, 1.0f } +/* Honeydew color { R:240, G:255, B:240, A:255 } */ +#define SG_HONEYDEW { 0.941176471f, 1.0f, 0.941176471f, 1.0f } +/* Hot Pink color { R:255, G:105, B:180, A:255 } */ +#define SG_HOT_PINK { 1.0f, 0.411764706f, 0.705882353f, 1.0f } +/* Indian Red color { R:205, G:92, B:92, A:255 } */ +#define SG_INDIAN_RED { 0.803921569f, 0.360784314f, 0.360784314f, 1.0f } +/* Indigo color { R:75, G:0, B:130, A:255 } */ +#define SG_INDIGO { 0.294117647f, 0.0f, 0.509803922f, 1.0f } +/* Ivory color { R:255, G:255, B:240, A:255 } */ +#define SG_IVORY { 1.0f, 1.0f, 0.941176471f, 1.0f } +/* Khaki color { R:240, G:230, B:140, A:255 } */ +#define SG_KHAKI { 0.941176471f, 0.901960784f, 0.549019608f, 1.0f } +/* Lavender color { R:230, G:230, B:250, A:255 } */ +#define SG_LAVENDER { 0.901960784f, 0.901960784f, 0.980392157f, 1.0f } +/* Lavender Blush color { R:255, G:240, B:245, A:255 } */ +#define SG_LAVENDER_BLUSH { 1.0f, 0.941176471f, 0.960784314f, 1.0f } +/* Lawn Green color { R:124, G:252, B:0, A:255 } */ +#define SG_LAWN_GREEN { 0.48627451f, 0.988235294f, 0.0f, 1.0f } +/* Lemon Chiffon color { R:255, G:250, B:205, A:255 } */ +#define SG_LEMON_CHIFFON { 1.0f, 0.980392157f, 0.803921569f, 1.0f } +/* Light Blue color { R:173, G:216, B:230, A:255 } */ +#define SG_LIGHT_BLUE { 0.678431373f, 0.847058824f, 0.901960784f, 1.0f } +/* Light Coral color { R:240, G:128, B:128, A:255 } */ +#define SG_LIGHT_CORAL { 0.941176471f, 0.501960784f, 0.501960784f, 1.0f } +/* Light Cyan color { R:224, G:255, B:255, A:255 } */ +#define SG_LIGHT_CYAN { 0.878431373f, 1.0f, 1.0f, 1.0f } +/* Light Goldenrod color { R:250, G:250, B:210, A:255 } */ +#define SG_LIGHT_GOLDENROD { 0.980392157f, 0.980392157f, 0.823529412f, 1.0f } +/* Light Gray color { R:211, G:211, B:211, A:255 } */ +#define SG_LIGHT_GRAY { 0.82745098f, 0.82745098f, 0.82745098f, 1.0f } +/* Light Green color { R:144, G:238, B:144, A:255 } */ +#define SG_LIGHT_GREEN { 0.564705882f, 0.933333333f, 0.564705882f, 1.0f } +/* Light Pink color { R:255, G:182, B:193, A:255 } */ +#define SG_LIGHT_PINK { 1.0f, 0.71372549f, 0.756862745f, 1.0f } +/* Light Salmon color { R:255, G:160, B:122, A:255 } */ +#define SG_LIGHT_SALMON { 1.0f, 0.62745098f, 0.478431373f, 1.0f } +/* Light Sea Green color { R:32, G:178, B:170, A:255 } */ +#define SG_LIGHT_SEA_GREEN { 0.125490196f, 0.698039216f, 0.666666667f, 1.0f } +/* Light Sky Blue color { R:135, G:206, B:250, A:255 } */ +#define SG_LIGHT_SKY_BLUE { 0.529411765f, 0.807843137f, 0.980392157f, 1.0f } +/* Light Slate Gray color { R:119, G:136, B:153, A:255 } */ +#define SG_LIGHT_SLATE_GRAY { 0.466666667f, 0.533333333f, 0.6f, 1.0f } +/* Light Steel Blue color { R:176, G:196, B:222, A:255 } */ +#define SG_LIGHT_STEEL_BLUE { 0.690196078f, 0.768627451f, 0.870588235f, 1.0f } +/* Light Yellow color { R:255, G:255, B:224, A:255 } */ +#define SG_LIGHT_YELLOW { 1.0f, 1.0f, 0.878431373f, 1.0f } +/* Lime color { R:0, G:255, B:0, A:255 } */ +#define SG_LIME { 0.0f, 1.0f, 0.0f, 1.0f } +/* Lime Green color { R:50, G:205, B:50, A:255 } */ +#define SG_LIME_GREEN { 0.196078431f, 0.803921569f, 0.196078431f, 1.0f } +/* Linen color { R:250, G:240, B:230, A:255 } */ +#define SG_LINEN { 0.980392157f, 0.941176471f, 0.901960784f, 1.0f } +/* Magenta color { R:255, G:0, B:255, A:255 } */ +#define SG_MAGENTA { 1.0f, 0.0f, 1.0f, 1.0f } +/* Maroon color { R:176, G:48, B:96, A:255 } */ +#define SG_MAROON { 0.690196078f, 0.188235294f, 0.376470588f, 1.0f } +/* Web Maroon color { R:128, G:0, B:0, A:255 } */ +#define SG_WEB_MAROON { 0.501960784f, 0.0f, 0.0f, 1.0f } +/* Medium Aquamarine color { R:102, G:205, B:170, A:255 } */ +#define SG_MEDIUM_AQUAMARINE { 0.4f, 0.803921569f, 0.666666667f, 1.0f } +/* Medium Blue color { R:0, G:0, B:205, A:255 } */ +#define SG_MEDIUM_BLUE { 0.0f, 0.0f, 0.803921569f, 1.0f } +/* Medium Orchid color { R:186, G:85, B:211, A:255 } */ +#define SG_MEDIUM_ORCHID { 0.729411765f, 0.333333333f, 0.82745098f, 1.0f } +/* Medium Purple color { R:147, G:112, B:219, A:255 } */ +#define SG_MEDIUM_PURPLE { 0.576470588f, 0.439215686f, 0.858823529f, 1.0f } +/* Medium Sea Green color { R:60, G:179, B:113, A:255 } */ +#define SG_MEDIUM_SEA_GREEN { 0.235294118f, 0.701960784f, 0.443137255f, 1.0f } +/* Medium Slate Blue color { R:123, G:104, B:238, A:255 } */ +#define SG_MEDIUM_SLATE_BLUE { 0.482352941f, 0.407843137f, 0.933333333f, 1.0f } +/* Medium Spring Green color { R:0, G:250, B:154, A:255 } */ +#define SG_MEDIUM_SPRING_GREEN { 0.0f, 0.980392157f, 0.603921569f, 1.0f } +/* Medium Turquoise color { R:72, G:209, B:204, A:255 } */ +#define SG_MEDIUM_TURQUOISE { 0.282352941f, 0.819607843f, 0.8f, 1.0f } +/* Medium Violet Red color { R:199, G:21, B:133, A:255 } */ +#define SG_MEDIUM_VIOLET_RED { 0.780392157f, 0.0823529412f, 0.521568627f, 1.0f } +/* Midnight Blue color { R:25, G:25, B:112, A:255 } */ +#define SG_MIDNIGHT_BLUE { 0.0980392157f, 0.0980392157f, 0.439215686f, 1.0f } +/* Mint Cream color { R:245, G:255, B:250, A:255 } */ +#define SG_MINT_CREAM { 0.960784314f, 1.0f, 0.980392157f, 1.0f } +/* Misty Rose color { R:255, G:228, B:225, A:255 } */ +#define SG_MISTY_ROSE { 1.0f, 0.894117647f, 0.882352941f, 1.0f } +/* Moccasin color { R:255, G:228, B:181, A:255 } */ +#define SG_MOCCASIN { 1.0f, 0.894117647f, 0.709803922f, 1.0f } +/* Navajo White color { R:255, G:222, B:173, A:255 } */ +#define SG_NAVAJO_WHITE { 1.0f, 0.870588235f, 0.678431373f, 1.0f } +/* Navy Blue color { R:0, G:0, B:128, A:255 } */ +#define SG_NAVY_BLUE { 0.0f, 0.0f, 0.501960784f, 1.0f } +/* Old Lace color { R:253, G:245, B:230, A:255 } */ +#define SG_OLD_LACE { 0.992156863f, 0.960784314f, 0.901960784f, 1.0f } +/* Olive color { R:128, G:128, B:0, A:255 } */ +#define SG_OLIVE { 0.501960784f, 0.501960784f, 0.0f, 1.0f } +/* Olive Drab color { R:107, G:142, B:35, A:255 } */ +#define SG_OLIVE_DRAB { 0.419607843f, 0.556862745f, 0.137254902f, 1.0f } +/* Orange color { R:255, G:165, B:0, A:255 } */ +#define SG_ORANGE { 1.0f, 0.647058824f, 0.0f, 1.0f } +/* Orange Red color { R:255, G:69, B:0, A:255 } */ +#define SG_ORANGE_RED { 1.0f, 0.270588235f, 0.0f, 1.0f } +/* Orchid color { R:218, G:112, B:214, A:255 } */ +#define SG_ORCHID { 0.854901961f, 0.439215686f, 0.839215686f, 1.0f } +/* Pale Goldenrod color { R:238, G:232, B:170, A:255 } */ +#define SG_PALE_GOLDENROD { 0.933333333f, 0.909803922f, 0.666666667f, 1.0f } +/* Pale Green color { R:152, G:251, B:152, A:255 } */ +#define SG_PALE_GREEN { 0.596078431f, 0.984313725f, 0.596078431f, 1.0f } +/* Pale Turquoise color { R:175, G:238, B:238, A:255 } */ +#define SG_PALE_TURQUOISE { 0.68627451f, 0.933333333f, 0.933333333f, 1.0f } +/* Pale Violet Red color { R:219, G:112, B:147, A:255 } */ +#define SG_PALE_VIOLET_RED { 0.858823529f, 0.439215686f, 0.576470588f, 1.0f } +/* Papaya Whip color { R:255, G:239, B:213, A:255 } */ +#define SG_PAPAYA_WHIP { 1.0f, 0.937254902f, 0.835294118f, 1.0f } +/* Peach Puff color { R:255, G:218, B:185, A:255 } */ +#define SG_PEACH_PUFF { 1.0f, 0.854901961f, 0.725490196f, 1.0f } +/* Peru color { R:205, G:133, B:63, A:255 } */ +#define SG_PERU { 0.803921569f, 0.521568627f, 0.247058824f, 1.0f } +/* Pink color { R:255, G:192, B:203, A:255 } */ +#define SG_PINK { 1.0f, 0.752941176f, 0.796078431f, 1.0f } +/* Plum color { R:221, G:160, B:221, A:255 } */ +#define SG_PLUM { 0.866666667f, 0.62745098f, 0.866666667f, 1.0f } +/* Powder Blue color { R:176, G:224, B:230, A:255 } */ +#define SG_POWDER_BLUE { 0.690196078f, 0.878431373f, 0.901960784f, 1.0f } +/* Purple color { R:160, G:32, B:240, A:255 } */ +#define SG_PURPLE { 0.62745098f, 0.125490196f, 0.941176471f, 1.0f } +/* Web Purple color { R:128, G:0, B:128, A:255 } */ +#define SG_WEB_PURPLE { 0.501960784f, 0.0f, 0.501960784f, 1.0f } +/* Rebecca Purple color { R:102, G:51, B:153, A:255 } */ +#define SG_REBECCA_PURPLE { 0.4f, 0.2f, 0.6f, 1.0f } +/* Red color { R:255, G:0, B:0, A:255 } */ +#define SG_RED { 1.0f, 0.0f, 0.0f, 1.0f } +/* Rosy Brown color { R:188, G:143, B:143, A:255 } */ +#define SG_ROSY_BROWN { 0.737254902f, 0.560784314f, 0.560784314f, 1.0f } +/* Royal Blue color { R:65, G:105, B:225, A:255 } */ +#define SG_ROYAL_BLUE { 0.254901961f, 0.411764706f, 0.882352941f, 1.0f } +/* Saddle Brown color { R:139, G:69, B:19, A:255 } */ +#define SG_SADDLE_BROWN { 0.545098039f, 0.270588235f, 0.0745098039f, 1.0f } +/* Salmon color { R:250, G:128, B:114, A:255 } */ +#define SG_SALMON { 0.980392157f, 0.501960784f, 0.447058824f, 1.0f } +/* Sandy Brown color { R:244, G:164, B:96, A:255 } */ +#define SG_SANDY_BROWN { 0.956862745f, 0.643137255f, 0.376470588f, 1.0f } +/* Sea Green color { R:46, G:139, B:87, A:255 } */ +#define SG_SEA_GREEN { 0.180392157f, 0.545098039f, 0.341176471f, 1.0f } +/* Seashell color { R:255, G:245, B:238, A:255 } */ +#define SG_SEASHELL { 1.0f, 0.960784314f, 0.933333333f, 1.0f } +/* Sienna color { R:160, G:82, B:45, A:255 } */ +#define SG_SIENNA { 0.62745098f, 0.321568627f, 0.176470588f, 1.0f } +/* Silver color { R:192, G:192, B:192, A:255 } */ +#define SG_SILVER { 0.752941176f, 0.752941176f, 0.752941176f, 1.0f } +/* Sky Blue color { R:135, G:206, B:235, A:255 } */ +#define SG_SKY_BLUE { 0.529411765f, 0.807843137f, 0.921568627f, 1.0f } +/* Slate Blue color { R:106, G:90, B:205, A:255 } */ +#define SG_SLATE_BLUE { 0.415686275f, 0.352941176f, 0.803921569f, 1.0f } +/* Slate Gray color { R:112, G:128, B:144, A:255 } */ +#define SG_SLATE_GRAY { 0.439215686f, 0.501960784f, 0.564705882f, 1.0f } +/* Snow color { R:255, G:250, B:250, A:255 } */ +#define SG_SNOW { 1.0f, 0.980392157f, 0.980392157f, 1.0f } +/* Spring Green color { R:0, G:255, B:127, A:255 } */ +#define SG_SPRING_GREEN { 0.0f, 1.0f, 0.498039216f, 1.0f } +/* Steel Blue color { R:70, G:130, B:180, A:255 } */ +#define SG_STEEL_BLUE { 0.274509804f, 0.509803922f, 0.705882353f, 1.0f } +/* Tan color { R:210, G:180, B:140, A:255 } */ +#define SG_TAN { 0.823529412f, 0.705882353f, 0.549019608f, 1.0f } +/* Teal color { R:0, G:128, B:128, A:255 } */ +#define SG_TEAL { 0.0f, 0.501960784f, 0.501960784f, 1.0f } +/* Thistle color { R:216, G:191, B:216, A:255 } */ +#define SG_THISTLE { 0.847058824f, 0.749019608f, 0.847058824f, 1.0f } +/* Tomato color { R:255, G:99, B:71, A:255 } */ +#define SG_TOMATO { 1.0f, 0.388235294f, 0.278431373f, 1.0f } +/* Transparent color { R:0, G:0, B:0, A:0 } */ +#define SG_TRANSPARENT { 0.0f, 0.0f, 0.0f, 0.0f } +/* Turquoise color { R:64, G:224, B:208, A:255 } */ +#define SG_TURQUOISE { 0.250980392f, 0.878431373f, 0.815686275f, 1.0f } +/* Violet color { R:238, G:130, B:238, A:255 } */ +#define SG_VIOLET { 0.933333333f, 0.509803922f, 0.933333333f, 1.0f } +/* Wheat color { R:245, G:222, B:179, A:255 } */ +#define SG_WHEAT { 0.960784314f, 0.870588235f, 0.701960784f, 1.0f } +/* White color { R:255, G:255, B:255, A:255 } */ +#define SG_WHITE { 1.0f, 1.0f, 1.0f, 1.0f } +/* White Smoke color { R:245, G:245, B:245, A:255 } */ +#define SG_WHITE_SMOKE { 0.960784314f, 0.960784314f, 0.960784314f, 1.0f } +/* Yellow color { R:255, G:255, B:0, A:255 } */ +#define SG_YELLOW { 1.0f, 1.0f, 0.0f, 1.0f } +/* Yellow Green color { R:154, G:205, B:50, A:255 } */ +#define SG_YELLOW_GREEN { 0.603921569f, 0.803921569f, 0.196078431f, 1.0f } + +/* Alice Blue color { R:240, G:248, B:255, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_alice_blue = SG_ALICE_BLUE; +/* Antique White color { R:250, G:235, B:215, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_antique_white = SG_ANTIQUE_WHITE; +/* Aqua color { R:0, G:255, B:255, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_aqua = SG_AQUA; +/* Aquamarine color { R:127, G:255, B:212, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_aquamarine = SG_AQUAMARINE; +/* Azure color { R:240, G:255, B:255, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_azure = SG_AZURE; +/* Beige color { R:245, G:245, B:220, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_beige = SG_BEIGE; +/* Bisque color { R:255, G:228, B:196, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_bisque = SG_BISQUE; +/* Black color { R:0, G:0, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_black = SG_BLACK; +/* Blanched Almond color { R:255, G:235, B:205, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_blanched_almond = SG_BLANCHED_ALMOND; +/* Blue color { R:0, G:0, B:255, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_blue = SG_BLUE; +/* Blue Violet color { R:138, G:43, B:226, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_blue_violet = SG_BLUE_VIOLET; +/* Brown color { R:165, G:42, B:42, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_brown = SG_BROWN; +/* Burlywood color { R:222, G:184, B:135, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_burlywood = SG_BURLYWOOD; +/* Cadet Blue color { R:95, G:158, B:160, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_cadet_blue = SG_CADET_BLUE; +/* Chartreuse color { R:127, G:255, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_chartreuse = SG_CHARTREUSE; +/* Chocolate color { R:210, G:105, B:30, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_chocolate = SG_CHOCOLATE; +/* Coral color { R:255, G:127, B:80, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_coral = SG_CORAL; +/* Cornflower Blue color { R:100, G:149, B:237, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_cornflower_blue = SG_CORNFLOWER_BLUE; +/* Cornsilk color { R:255, G:248, B:220, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_cornsilk = SG_CORNSILK; +/* Crimson color { R:220, G:20, B:60, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_crimson = SG_CRIMSON; +/* Cyan color { R:0, G:255, B:255, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_cyan = SG_CYAN; +/* Dark Blue color { R:0, G:0, B:139, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_blue = SG_DARK_BLUE; +/* Dark Cyan color { R:0, G:139, B:139, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_cyan = SG_DARK_CYAN; +/* Dark Goldenrod color { R:184, G:134, B:11, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_goldenrod = SG_DARK_GOLDENROD; +/* Dark Gray color { R:169, G:169, B:169, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_gray = SG_DARK_GRAY; +/* Dark Green color { R:0, G:100, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_green = SG_DARK_GREEN; +/* Dark Khaki color { R:189, G:183, B:107, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_khaki = SG_DARK_KHAKI; +/* Dark Magenta color { R:139, G:0, B:139, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_magenta = SG_DARK_MAGENTA; +/* Dark Olive Green color { R:85, G:107, B:47, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_olive_green = SG_DARK_OLIVE_GREEN; +/* Dark Orange color { R:255, G:140, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_orange = SG_DARK_ORANGE; +/* Dark Orchid color { R:153, G:50, B:204, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_orchid = SG_DARK_ORCHID; +/* Dark Red color { R:139, G:0, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_red = SG_DARK_RED; +/* Dark Salmon color { R:233, G:150, B:122, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_salmon = SG_DARK_SALMON; +/* Dark Sea Green color { R:143, G:188, B:143, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_sea_green = SG_DARK_SEA_GREEN; +/* Dark Slate Blue color { R:72, G:61, B:139, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_slate_blue = SG_DARK_SLATE_BLUE; +/* Dark Slate Gray color { R:47, G:79, B:79, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_slate_gray = SG_DARK_SLATE_GRAY; +/* Dark Turquoise color { R:0, G:206, B:209, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_turquoise = SG_DARK_TURQUOISE; +/* Dark Violet color { R:148, G:0, B:211, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dark_violet = SG_DARK_VIOLET; +/* Deep Pink color { R:255, G:20, B:147, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_deep_pink = SG_DEEP_PINK; +/* Deep Sky Blue color { R:0, G:191, B:255, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_deep_sky_blue = SG_DEEP_SKY_BLUE; +/* Dim Gray color { R:105, G:105, B:105, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dim_gray = SG_DIM_GRAY; +/* Dodger Blue color { R:30, G:144, B:255, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_dodger_blue = SG_DODGER_BLUE; +/* Firebrick color { R:178, G:34, B:34, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_firebrick = SG_FIREBRICK; +/* Floral White color { R:255, G:250, B:240, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_floral_white = SG_FLORAL_WHITE; +/* Forest Green color { R:34, G:139, B:34, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_forest_green = SG_FOREST_GREEN; +/* Fuchsia color { R:255, G:0, B:255, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_fuchsia = SG_FUCHSIA; +/* Gainsboro color { R:220, G:220, B:220, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_gainsboro = SG_GAINSBORO; +/* Ghost White color { R:248, G:248, B:255, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_ghost_white = SG_GHOST_WHITE; +/* Gold color { R:255, G:215, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_gold = SG_GOLD; +/* Goldenrod color { R:218, G:165, B:32, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_goldenrod = SG_GOLDENROD; +/* Gray color { R:190, G:190, B:190, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_gray = SG_GRAY; +/* Web Gray color { R:128, G:128, B:128, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_web_gray = SG_WEB_GRAY; +/* Green color { R:0, G:255, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_green = SG_GREEN; +/* Web Green color { R:0, G:128, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_web_green = SG_WEB_GREEN; +/* Green Yellow color { R:173, G:255, B:47, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_green_yellow = SG_GREEN_YELLOW; +/* Honeydew color { R:240, G:255, B:240, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_honeydew = SG_HONEYDEW; +/* Hot Pink color { R:255, G:105, B:180, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_hot_pink = SG_HOT_PINK; +/* Indian Red color { R:205, G:92, B:92, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_indian_red = SG_INDIAN_RED; +/* Indigo color { R:75, G:0, B:130, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_indigo = SG_INDIGO; +/* Ivory color { R:255, G:255, B:240, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_ivory = SG_IVORY; +/* Khaki color { R:240, G:230, B:140, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_khaki = SG_KHAKI; +/* Lavender color { R:230, G:230, B:250, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_lavender = SG_LAVENDER; +/* Lavender Blush color { R:255, G:240, B:245, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_lavender_blush = SG_LAVENDER_BLUSH; +/* Lawn Green color { R:124, G:252, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_lawn_green = SG_LAWN_GREEN; +/* Lemon Chiffon color { R:255, G:250, B:205, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_lemon_chiffon = SG_LEMON_CHIFFON; +/* Light Blue color { R:173, G:216, B:230, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_light_blue = SG_LIGHT_BLUE; +/* Light Coral color { R:240, G:128, B:128, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_light_coral = SG_LIGHT_CORAL; +/* Light Cyan color { R:224, G:255, B:255, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_light_cyan = SG_LIGHT_CYAN; +/* Light Goldenrod color { R:250, G:250, B:210, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_light_goldenrod = SG_LIGHT_GOLDENROD; +/* Light Gray color { R:211, G:211, B:211, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_light_gray = SG_LIGHT_GRAY; +/* Light Green color { R:144, G:238, B:144, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_light_green = SG_LIGHT_GREEN; +/* Light Pink color { R:255, G:182, B:193, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_light_pink = SG_LIGHT_PINK; +/* Light Salmon color { R:255, G:160, B:122, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_light_salmon = SG_LIGHT_SALMON; +/* Light Sea Green color { R:32, G:178, B:170, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_light_sea_green = SG_LIGHT_SEA_GREEN; +/* Light Sky Blue color { R:135, G:206, B:250, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_light_sky_blue = SG_LIGHT_SKY_BLUE; +/* Light Slate Gray color { R:119, G:136, B:153, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_light_slate_gray = SG_LIGHT_SLATE_GRAY; +/* Light Steel Blue color { R:176, G:196, B:222, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_light_steel_blue = SG_LIGHT_STEEL_BLUE; +/* Light Yellow color { R:255, G:255, B:224, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_light_yellow = SG_LIGHT_YELLOW; +/* Lime color { R:0, G:255, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_lime = SG_LIME; +/* Lime Green color { R:50, G:205, B:50, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_lime_green = SG_LIME_GREEN; +/* Linen color { R:250, G:240, B:230, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_linen = SG_LINEN; +/* Magenta color { R:255, G:0, B:255, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_magenta = SG_MAGENTA; +/* Maroon color { R:176, G:48, B:96, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_maroon = SG_MAROON; +/* Web Maroon color { R:128, G:0, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_web_maroon = SG_WEB_MAROON; +/* Medium Aquamarine color { R:102, G:205, B:170, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_medium_aquamarine = SG_MEDIUM_AQUAMARINE; +/* Medium Blue color { R:0, G:0, B:205, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_medium_blue = SG_MEDIUM_BLUE; +/* Medium Orchid color { R:186, G:85, B:211, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_medium_orchid = SG_MEDIUM_ORCHID; +/* Medium Purple color { R:147, G:112, B:219, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_medium_purple = SG_MEDIUM_PURPLE; +/* Medium Sea Green color { R:60, G:179, B:113, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_medium_sea_green = SG_MEDIUM_SEA_GREEN; +/* Medium Slate Blue color { R:123, G:104, B:238, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_medium_slate_blue = SG_MEDIUM_SLATE_BLUE; +/* Medium Spring Green color { R:0, G:250, B:154, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_medium_spring_green = SG_MEDIUM_SPRING_GREEN; +/* Medium Turquoise color { R:72, G:209, B:204, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_medium_turquoise = SG_MEDIUM_TURQUOISE; +/* Medium Violet Red color { R:199, G:21, B:133, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_medium_violet_red = SG_MEDIUM_VIOLET_RED; +/* Midnight Blue color { R:25, G:25, B:112, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_midnight_blue = SG_MIDNIGHT_BLUE; +/* Mint Cream color { R:245, G:255, B:250, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_mint_cream = SG_MINT_CREAM; +/* Misty Rose color { R:255, G:228, B:225, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_misty_rose = SG_MISTY_ROSE; +/* Moccasin color { R:255, G:228, B:181, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_moccasin = SG_MOCCASIN; +/* Navajo White color { R:255, G:222, B:173, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_navajo_white = SG_NAVAJO_WHITE; +/* Navy Blue color { R:0, G:0, B:128, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_navy_blue = SG_NAVY_BLUE; +/* Old Lace color { R:253, G:245, B:230, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_old_lace = SG_OLD_LACE; +/* Olive color { R:128, G:128, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_olive = SG_OLIVE; +/* Olive Drab color { R:107, G:142, B:35, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_olive_drab = SG_OLIVE_DRAB; +/* Orange color { R:255, G:165, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_orange = SG_ORANGE; +/* Orange Red color { R:255, G:69, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_orange_red = SG_ORANGE_RED; +/* Orchid color { R:218, G:112, B:214, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_orchid = SG_ORCHID; +/* Pale Goldenrod color { R:238, G:232, B:170, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_pale_goldenrod = SG_PALE_GOLDENROD; +/* Pale Green color { R:152, G:251, B:152, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_pale_green = SG_PALE_GREEN; +/* Pale Turquoise color { R:175, G:238, B:238, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_pale_turquoise = SG_PALE_TURQUOISE; +/* Pale Violet Red color { R:219, G:112, B:147, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_pale_violet_red = SG_PALE_VIOLET_RED; +/* Papaya Whip color { R:255, G:239, B:213, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_papaya_whip = SG_PAPAYA_WHIP; +/* Peach Puff color { R:255, G:218, B:185, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_peach_puff = SG_PEACH_PUFF; +/* Peru color { R:205, G:133, B:63, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_peru = SG_PERU; +/* Pink color { R:255, G:192, B:203, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_pink = SG_PINK; +/* Plum color { R:221, G:160, B:221, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_plum = SG_PLUM; +/* Powder Blue color { R:176, G:224, B:230, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_powder_blue = SG_POWDER_BLUE; +/* Purple color { R:160, G:32, B:240, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_purple = SG_PURPLE; +/* Web Purple color { R:128, G:0, B:128, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_web_purple = SG_WEB_PURPLE; +/* Rebecca Purple color { R:102, G:51, B:153, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_rebecca_purple = SG_REBECCA_PURPLE; +/* Red color { R:255, G:0, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_red = SG_RED; +/* Rosy Brown color { R:188, G:143, B:143, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_rosy_brown = SG_ROSY_BROWN; +/* Royal Blue color { R:65, G:105, B:225, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_royal_blue = SG_ROYAL_BLUE; +/* Saddle Brown color { R:139, G:69, B:19, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_saddle_brown = SG_SADDLE_BROWN; +/* Salmon color { R:250, G:128, B:114, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_salmon = SG_SALMON; +/* Sandy Brown color { R:244, G:164, B:96, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_sandy_brown = SG_SANDY_BROWN; +/* Sea Green color { R:46, G:139, B:87, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_sea_green = SG_SEA_GREEN; +/* Seashell color { R:255, G:245, B:238, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_seashell = SG_SEASHELL; +/* Sienna color { R:160, G:82, B:45, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_sienna = SG_SIENNA; +/* Silver color { R:192, G:192, B:192, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_silver = SG_SILVER; +/* Sky Blue color { R:135, G:206, B:235, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_sky_blue = SG_SKY_BLUE; +/* Slate Blue color { R:106, G:90, B:205, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_slate_blue = SG_SLATE_BLUE; +/* Slate Gray color { R:112, G:128, B:144, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_slate_gray = SG_SLATE_GRAY; +/* Snow color { R:255, G:250, B:250, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_snow = SG_SNOW; +/* Spring Green color { R:0, G:255, B:127, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_spring_green = SG_SPRING_GREEN; +/* Steel Blue color { R:70, G:130, B:180, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_steel_blue = SG_STEEL_BLUE; +/* Tan color { R:210, G:180, B:140, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_tan = SG_TAN; +/* Teal color { R:0, G:128, B:128, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_teal = SG_TEAL; +/* Thistle color { R:216, G:191, B:216, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_thistle = SG_THISTLE; +/* Tomato color { R:255, G:99, B:71, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_tomato = SG_TOMATO; +/* Transparent color { R:0, G:0, B:0, A:0 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_transparent = SG_TRANSPARENT; +/* Turquoise color { R:64, G:224, B:208, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_turquoise = SG_TURQUOISE; +/* Violet color { R:238, G:130, B:238, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_violet = SG_VIOLET; +/* Wheat color { R:245, G:222, B:179, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_wheat = SG_WHEAT; +/* White color { R:255, G:255, B:255, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_white = SG_WHITE; +/* White Smoke color { R:245, G:245, B:245, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_white_smoke = SG_WHITE_SMOKE; +/* Yellow color { R:255, G:255, B:0, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_yellow = SG_YELLOW; +/* Yellow Green color { R:154, G:205, B:50, A:255 } */ +static SOKOL_COLOR_CONSTEXPR sg_color sg_yellow_green = SG_YELLOW_GREEN; + +/* Alice Blue color { R:240, G:248, B:255, A:255 } */ +#define SG_ALICE_BLUE_RGBA32 0xF0F8FFFF +/* Antique White color { R:250, G:235, B:215, A:255 } */ +#define SG_ANTIQUE_WHITE_RGBA32 0xFAEBD7FF +/* Aqua color { R:0, G:255, B:255, A:255 } */ +#define SG_AQUA_RGBA32 0x00FFFFFF +/* Aquamarine color { R:127, G:255, B:212, A:255 } */ +#define SG_AQUAMARINE_RGBA32 0x7FFFD4FF +/* Azure color { R:240, G:255, B:255, A:255 } */ +#define SG_AZURE_RGBA32 0xF0FFFFFF +/* Beige color { R:245, G:245, B:220, A:255 } */ +#define SG_BEIGE_RGBA32 0xF5F5DCFF +/* Bisque color { R:255, G:228, B:196, A:255 } */ +#define SG_BISQUE_RGBA32 0xFFE4C4FF +/* Black color { R:0, G:0, B:0, A:255 } */ +#define SG_BLACK_RGBA32 0x000000FF +/* Blanched Almond color { R:255, G:235, B:205, A:255 } */ +#define SG_BLANCHED_ALMOND_RGBA32 0xFFEBCDFF +/* Blue color { R:0, G:0, B:255, A:255 } */ +#define SG_BLUE_RGBA32 0x0000FFFF +/* Blue Violet color { R:138, G:43, B:226, A:255 } */ +#define SG_BLUE_VIOLET_RGBA32 0x8A2BE2FF +/* Brown color { R:165, G:42, B:42, A:255 } */ +#define SG_BROWN_RGBA32 0xA52A2AFF +/* Burlywood color { R:222, G:184, B:135, A:255 } */ +#define SG_BURLYWOOD_RGBA32 0xDEB887FF +/* Cadet Blue color { R:95, G:158, B:160, A:255 } */ +#define SG_CADET_BLUE_RGBA32 0x5F9EA0FF +/* Chartreuse color { R:127, G:255, B:0, A:255 } */ +#define SG_CHARTREUSE_RGBA32 0x7FFF00FF +/* Chocolate color { R:210, G:105, B:30, A:255 } */ +#define SG_CHOCOLATE_RGBA32 0xD2691EFF +/* Coral color { R:255, G:127, B:80, A:255 } */ +#define SG_CORAL_RGBA32 0xFF7F50FF +/* Cornflower Blue color { R:100, G:149, B:237, A:255 } */ +#define SG_CORNFLOWER_BLUE_RGBA32 0x6495EDFF +/* Cornsilk color { R:255, G:248, B:220, A:255 } */ +#define SG_CORNSILK_RGBA32 0xFFF8DCFF +/* Crimson color { R:220, G:20, B:60, A:255 } */ +#define SG_CRIMSON_RGBA32 0xDC143CFF +/* Cyan color { R:0, G:255, B:255, A:255 } */ +#define SG_CYAN_RGBA32 0x00FFFFFF +/* Dark Blue color { R:0, G:0, B:139, A:255 } */ +#define SG_DARK_BLUE_RGBA32 0x00008BFF +/* Dark Cyan color { R:0, G:139, B:139, A:255 } */ +#define SG_DARK_CYAN_RGBA32 0x008B8BFF +/* Dark Goldenrod color { R:184, G:134, B:11, A:255 } */ +#define SG_DARK_GOLDENROD_RGBA32 0xB8860BFF +/* Dark Gray color { R:169, G:169, B:169, A:255 } */ +#define SG_DARK_GRAY_RGBA32 0xA9A9A9FF +/* Dark Green color { R:0, G:100, B:0, A:255 } */ +#define SG_DARK_GREEN_RGBA32 0x006400FF +/* Dark Khaki color { R:189, G:183, B:107, A:255 } */ +#define SG_DARK_KHAKI_RGBA32 0xBDB76BFF +/* Dark Magenta color { R:139, G:0, B:139, A:255 } */ +#define SG_DARK_MAGENTA_RGBA32 0x8B008BFF +/* Dark Olive Green color { R:85, G:107, B:47, A:255 } */ +#define SG_DARK_OLIVE_GREEN_RGBA32 0x556B2FFF +/* Dark Orange color { R:255, G:140, B:0, A:255 } */ +#define SG_DARK_ORANGE_RGBA32 0xFF8C00FF +/* Dark Orchid color { R:153, G:50, B:204, A:255 } */ +#define SG_DARK_ORCHID_RGBA32 0x9932CCFF +/* Dark Red color { R:139, G:0, B:0, A:255 } */ +#define SG_DARK_RED_RGBA32 0x8B0000FF +/* Dark Salmon color { R:233, G:150, B:122, A:255 } */ +#define SG_DARK_SALMON_RGBA32 0xE9967AFF +/* Dark Sea Green color { R:143, G:188, B:143, A:255 } */ +#define SG_DARK_SEA_GREEN_RGBA32 0x8FBC8FFF +/* Dark Slate Blue color { R:72, G:61, B:139, A:255 } */ +#define SG_DARK_SLATE_BLUE_RGBA32 0x483D8BFF +/* Dark Slate Gray color { R:47, G:79, B:79, A:255 } */ +#define SG_DARK_SLATE_GRAY_RGBA32 0x2F4F4FFF +/* Dark Turquoise color { R:0, G:206, B:209, A:255 } */ +#define SG_DARK_TURQUOISE_RGBA32 0x00CED1FF +/* Dark Violet color { R:148, G:0, B:211, A:255 } */ +#define SG_DARK_VIOLET_RGBA32 0x9400D3FF +/* Deep Pink color { R:255, G:20, B:147, A:255 } */ +#define SG_DEEP_PINK_RGBA32 0xFF1493FF +/* Deep Sky Blue color { R:0, G:191, B:255, A:255 } */ +#define SG_DEEP_SKY_BLUE_RGBA32 0x00BFFFFF +/* Dim Gray color { R:105, G:105, B:105, A:255 } */ +#define SG_DIM_GRAY_RGBA32 0x696969FF +/* Dodger Blue color { R:30, G:144, B:255, A:255 } */ +#define SG_DODGER_BLUE_RGBA32 0x1E90FFFF +/* Firebrick color { R:178, G:34, B:34, A:255 } */ +#define SG_FIREBRICK_RGBA32 0xB22222FF +/* Floral White color { R:255, G:250, B:240, A:255 } */ +#define SG_FLORAL_WHITE_RGBA32 0xFFFAF0FF +/* Forest Green color { R:34, G:139, B:34, A:255 } */ +#define SG_FOREST_GREEN_RGBA32 0x228B22FF +/* Fuchsia color { R:255, G:0, B:255, A:255 } */ +#define SG_FUCHSIA_RGBA32 0xFF00FFFF +/* Gainsboro color { R:220, G:220, B:220, A:255 } */ +#define SG_GAINSBORO_RGBA32 0xDCDCDCFF +/* Ghost White color { R:248, G:248, B:255, A:255 } */ +#define SG_GHOST_WHITE_RGBA32 0xF8F8FFFF +/* Gold color { R:255, G:215, B:0, A:255 } */ +#define SG_GOLD_RGBA32 0xFFD700FF +/* Goldenrod color { R:218, G:165, B:32, A:255 } */ +#define SG_GOLDENROD_RGBA32 0xDAA520FF +/* Gray color { R:190, G:190, B:190, A:255 } */ +#define SG_GRAY_RGBA32 0xBEBEBEFF +/* Web Gray color { R:128, G:128, B:128, A:255 } */ +#define SG_WEB_GRAY_RGBA32 0x808080FF +/* Green color { R:0, G:255, B:0, A:255 } */ +#define SG_GREEN_RGBA32 0x00FF00FF +/* Web Green color { R:0, G:128, B:0, A:255 } */ +#define SG_WEB_GREEN_RGBA32 0x008000FF +/* Green Yellow color { R:173, G:255, B:47, A:255 } */ +#define SG_GREEN_YELLOW_RGBA32 0xADFF2FFF +/* Honeydew color { R:240, G:255, B:240, A:255 } */ +#define SG_HONEYDEW_RGBA32 0xF0FFF0FF +/* Hot Pink color { R:255, G:105, B:180, A:255 } */ +#define SG_HOT_PINK_RGBA32 0xFF69B4FF +/* Indian Red color { R:205, G:92, B:92, A:255 } */ +#define SG_INDIAN_RED_RGBA32 0xCD5C5CFF +/* Indigo color { R:75, G:0, B:130, A:255 } */ +#define SG_INDIGO_RGBA32 0x4B0082FF +/* Ivory color { R:255, G:255, B:240, A:255 } */ +#define SG_IVORY_RGBA32 0xFFFFF0FF +/* Khaki color { R:240, G:230, B:140, A:255 } */ +#define SG_KHAKI_RGBA32 0xF0E68CFF +/* Lavender color { R:230, G:230, B:250, A:255 } */ +#define SG_LAVENDER_RGBA32 0xE6E6FAFF +/* Lavender Blush color { R:255, G:240, B:245, A:255 } */ +#define SG_LAVENDER_BLUSH_RGBA32 0xFFF0F5FF +/* Lawn Green color { R:124, G:252, B:0, A:255 } */ +#define SG_LAWN_GREEN_RGBA32 0x7CFC00FF +/* Lemon Chiffon color { R:255, G:250, B:205, A:255 } */ +#define SG_LEMON_CHIFFON_RGBA32 0xFFFACDFF +/* Light Blue color { R:173, G:216, B:230, A:255 } */ +#define SG_LIGHT_BLUE_RGBA32 0xADD8E6FF +/* Light Coral color { R:240, G:128, B:128, A:255 } */ +#define SG_LIGHT_CORAL_RGBA32 0xF08080FF +/* Light Cyan color { R:224, G:255, B:255, A:255 } */ +#define SG_LIGHT_CYAN_RGBA32 0xE0FFFFFF +/* Light Goldenrod color { R:250, G:250, B:210, A:255 } */ +#define SG_LIGHT_GOLDENROD_RGBA32 0xFAFAD2FF +/* Light Gray color { R:211, G:211, B:211, A:255 } */ +#define SG_LIGHT_GRAY_RGBA32 0xD3D3D3FF +/* Light Green color { R:144, G:238, B:144, A:255 } */ +#define SG_LIGHT_GREEN_RGBA32 0x90EE90FF +/* Light Pink color { R:255, G:182, B:193, A:255 } */ +#define SG_LIGHT_PINK_RGBA32 0xFFB6C1FF +/* Light Salmon color { R:255, G:160, B:122, A:255 } */ +#define SG_LIGHT_SALMON_RGBA32 0xFFA07AFF +/* Light Sea Green color { R:32, G:178, B:170, A:255 } */ +#define SG_LIGHT_SEA_GREEN_RGBA32 0x20B2AAFF +/* Light Sky Blue color { R:135, G:206, B:250, A:255 } */ +#define SG_LIGHT_SKY_BLUE_RGBA32 0x87CEFAFF +/* Light Slate Gray color { R:119, G:136, B:153, A:255 } */ +#define SG_LIGHT_SLATE_GRAY_RGBA32 0x778899FF +/* Light Steel Blue color { R:176, G:196, B:222, A:255 } */ +#define SG_LIGHT_STEEL_BLUE_RGBA32 0xB0C4DEFF +/* Light Yellow color { R:255, G:255, B:224, A:255 } */ +#define SG_LIGHT_YELLOW_RGBA32 0xFFFFE0FF +/* Lime color { R:0, G:255, B:0, A:255 } */ +#define SG_LIME_RGBA32 0x00FF00FF +/* Lime Green color { R:50, G:205, B:50, A:255 } */ +#define SG_LIME_GREEN_RGBA32 0x32CD32FF +/* Linen color { R:250, G:240, B:230, A:255 } */ +#define SG_LINEN_RGBA32 0xFAF0E6FF +/* Magenta color { R:255, G:0, B:255, A:255 } */ +#define SG_MAGENTA_RGBA32 0xFF00FFFF +/* Maroon color { R:176, G:48, B:96, A:255 } */ +#define SG_MAROON_RGBA32 0xB03060FF +/* Web Maroon color { R:128, G:0, B:0, A:255 } */ +#define SG_WEB_MAROON_RGBA32 0x800000FF +/* Medium Aquamarine color { R:102, G:205, B:170, A:255 } */ +#define SG_MEDIUM_AQUAMARINE_RGBA32 0x66CDAAFF +/* Medium Blue color { R:0, G:0, B:205, A:255 } */ +#define SG_MEDIUM_BLUE_RGBA32 0x0000CDFF +/* Medium Orchid color { R:186, G:85, B:211, A:255 } */ +#define SG_MEDIUM_ORCHID_RGBA32 0xBA55D3FF +/* Medium Purple color { R:147, G:112, B:219, A:255 } */ +#define SG_MEDIUM_PURPLE_RGBA32 0x9370DBFF +/* Medium Sea Green color { R:60, G:179, B:113, A:255 } */ +#define SG_MEDIUM_SEA_GREEN_RGBA32 0x3CB371FF +/* Medium Slate Blue color { R:123, G:104, B:238, A:255 } */ +#define SG_MEDIUM_SLATE_BLUE_RGBA32 0x7B68EEFF +/* Medium Spring Green color { R:0, G:250, B:154, A:255 } */ +#define SG_MEDIUM_SPRING_GREEN_RGBA32 0x00FA9AFF +/* Medium Turquoise color { R:72, G:209, B:204, A:255 } */ +#define SG_MEDIUM_TURQUOISE_RGBA32 0x48D1CCFF +/* Medium Violet Red color { R:199, G:21, B:133, A:255 } */ +#define SG_MEDIUM_VIOLET_RED_RGBA32 0xC71585FF +/* Midnight Blue color { R:25, G:25, B:112, A:255 } */ +#define SG_MIDNIGHT_BLUE_RGBA32 0x191970FF +/* Mint Cream color { R:245, G:255, B:250, A:255 } */ +#define SG_MINT_CREAM_RGBA32 0xF5FFFAFF +/* Misty Rose color { R:255, G:228, B:225, A:255 } */ +#define SG_MISTY_ROSE_RGBA32 0xFFE4E1FF +/* Moccasin color { R:255, G:228, B:181, A:255 } */ +#define SG_MOCCASIN_RGBA32 0xFFE4B5FF +/* Navajo White color { R:255, G:222, B:173, A:255 } */ +#define SG_NAVAJO_WHITE_RGBA32 0xFFDEADFF +/* Navy Blue color { R:0, G:0, B:128, A:255 } */ +#define SG_NAVY_BLUE_RGBA32 0x000080FF +/* Old Lace color { R:253, G:245, B:230, A:255 } */ +#define SG_OLD_LACE_RGBA32 0xFDF5E6FF +/* Olive color { R:128, G:128, B:0, A:255 } */ +#define SG_OLIVE_RGBA32 0x808000FF +/* Olive Drab color { R:107, G:142, B:35, A:255 } */ +#define SG_OLIVE_DRAB_RGBA32 0x6B8E23FF +/* Orange color { R:255, G:165, B:0, A:255 } */ +#define SG_ORANGE_RGBA32 0xFFA500FF +/* Orange Red color { R:255, G:69, B:0, A:255 } */ +#define SG_ORANGE_RED_RGBA32 0xFF4500FF +/* Orchid color { R:218, G:112, B:214, A:255 } */ +#define SG_ORCHID_RGBA32 0xDA70D6FF +/* Pale Goldenrod color { R:238, G:232, B:170, A:255 } */ +#define SG_PALE_GOLDENROD_RGBA32 0xEEE8AAFF +/* Pale Green color { R:152, G:251, B:152, A:255 } */ +#define SG_PALE_GREEN_RGBA32 0x98FB98FF +/* Pale Turquoise color { R:175, G:238, B:238, A:255 } */ +#define SG_PALE_TURQUOISE_RGBA32 0xAFEEEEFF +/* Pale Violet Red color { R:219, G:112, B:147, A:255 } */ +#define SG_PALE_VIOLET_RED_RGBA32 0xDB7093FF +/* Papaya Whip color { R:255, G:239, B:213, A:255 } */ +#define SG_PAPAYA_WHIP_RGBA32 0xFFEFD5FF +/* Peach Puff color { R:255, G:218, B:185, A:255 } */ +#define SG_PEACH_PUFF_RGBA32 0xFFDAB9FF +/* Peru color { R:205, G:133, B:63, A:255 } */ +#define SG_PERU_RGBA32 0xCD853FFF +/* Pink color { R:255, G:192, B:203, A:255 } */ +#define SG_PINK_RGBA32 0xFFC0CBFF +/* Plum color { R:221, G:160, B:221, A:255 } */ +#define SG_PLUM_RGBA32 0xDDA0DDFF +/* Powder Blue color { R:176, G:224, B:230, A:255 } */ +#define SG_POWDER_BLUE_RGBA32 0xB0E0E6FF +/* Purple color { R:160, G:32, B:240, A:255 } */ +#define SG_PURPLE_RGBA32 0xA020F0FF +/* Web Purple color { R:128, G:0, B:128, A:255 } */ +#define SG_WEB_PURPLE_RGBA32 0x800080FF +/* Rebecca Purple color { R:102, G:51, B:153, A:255 } */ +#define SG_REBECCA_PURPLE_RGBA32 0x663399FF +/* Red color { R:255, G:0, B:0, A:255 } */ +#define SG_RED_RGBA32 0xFF0000FF +/* Rosy Brown color { R:188, G:143, B:143, A:255 } */ +#define SG_ROSY_BROWN_RGBA32 0xBC8F8FFF +/* Royal Blue color { R:65, G:105, B:225, A:255 } */ +#define SG_ROYAL_BLUE_RGBA32 0x4169E1FF +/* Saddle Brown color { R:139, G:69, B:19, A:255 } */ +#define SG_SADDLE_BROWN_RGBA32 0x8B4513FF +/* Salmon color { R:250, G:128, B:114, A:255 } */ +#define SG_SALMON_RGBA32 0xFA8072FF +/* Sandy Brown color { R:244, G:164, B:96, A:255 } */ +#define SG_SANDY_BROWN_RGBA32 0xF4A460FF +/* Sea Green color { R:46, G:139, B:87, A:255 } */ +#define SG_SEA_GREEN_RGBA32 0x2E8B57FF +/* Seashell color { R:255, G:245, B:238, A:255 } */ +#define SG_SEASHELL_RGBA32 0xFFF5EEFF +/* Sienna color { R:160, G:82, B:45, A:255 } */ +#define SG_SIENNA_RGBA32 0xA0522DFF +/* Silver color { R:192, G:192, B:192, A:255 } */ +#define SG_SILVER_RGBA32 0xC0C0C0FF +/* Sky Blue color { R:135, G:206, B:235, A:255 } */ +#define SG_SKY_BLUE_RGBA32 0x87CEEBFF +/* Slate Blue color { R:106, G:90, B:205, A:255 } */ +#define SG_SLATE_BLUE_RGBA32 0x6A5ACDFF +/* Slate Gray color { R:112, G:128, B:144, A:255 } */ +#define SG_SLATE_GRAY_RGBA32 0x708090FF +/* Snow color { R:255, G:250, B:250, A:255 } */ +#define SG_SNOW_RGBA32 0xFFFAFAFF +/* Spring Green color { R:0, G:255, B:127, A:255 } */ +#define SG_SPRING_GREEN_RGBA32 0x00FF7FFF +/* Steel Blue color { R:70, G:130, B:180, A:255 } */ +#define SG_STEEL_BLUE_RGBA32 0x4682B4FF +/* Tan color { R:210, G:180, B:140, A:255 } */ +#define SG_TAN_RGBA32 0xD2B48CFF +/* Teal color { R:0, G:128, B:128, A:255 } */ +#define SG_TEAL_RGBA32 0x008080FF +/* Thistle color { R:216, G:191, B:216, A:255 } */ +#define SG_THISTLE_RGBA32 0xD8BFD8FF +/* Tomato color { R:255, G:99, B:71, A:255 } */ +#define SG_TOMATO_RGBA32 0xFF6347FF +/* Transparent color { R:0, G:0, B:0, A:0 } */ +#define SG_TRANSPARENT_RGBA32 0x00000000 +/* Turquoise color { R:64, G:224, B:208, A:255 } */ +#define SG_TURQUOISE_RGBA32 0x40E0D0FF +/* Violet color { R:238, G:130, B:238, A:255 } */ +#define SG_VIOLET_RGBA32 0xEE82EEFF +/* Wheat color { R:245, G:222, B:179, A:255 } */ +#define SG_WHEAT_RGBA32 0xF5DEB3FF +/* White color { R:255, G:255, B:255, A:255 } */ +#define SG_WHITE_RGBA32 0xFFFFFFFF +/* White Smoke color { R:245, G:245, B:245, A:255 } */ +#define SG_WHITE_SMOKE_RGBA32 0xF5F5F5FF +/* Yellow color { R:255, G:255, B:0, A:255 } */ +#define SG_YELLOW_RGBA32 0xFFFF00FF +/* Yellow Green color { R:154, G:205, B:50, A:255 } */ +#define SG_YELLOW_GREEN_RGBA32 0x9ACD32FF + +#ifdef __cplusplus +} /* extern "C" */ + +inline sg_color sg_make_color(uint8_t r, uint8_t g, uint8_t b, uint8_t a) { + return sg_make_color_4b(r, g, b, a); +} + +inline sg_color sg_make_color(uint32_t rgba) { + return sg_make_color_1i(rgba); +} + +inline sg_color sg_color_lerp(const sg_color& color_a, const sg_color& color_b, float amount) { + return sg_color_lerp(&color_a, &color_b, amount); +} + +inline sg_color sg_color_lerp_precise(const sg_color& color_a, const sg_color& color_b, float amount) { + return sg_color_lerp_precise(&color_a, &color_b, amount); +} + +inline sg_color sg_color_multiply(const sg_color& color, float scale) { + return sg_color_multiply(&color, scale); +} + +#endif /* __cplusplus */ + +#endif /* SOKOL_COLOR_INCLUDED */ + +/*-- IMPLEMENTATION ----------------------------------------------------------*/ +#ifdef SOKOL_COLOR_IMPL +#define SOKOL_COLOR_IMPL_INCLUDED (1) + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif + +static inline float _sg_color_clamp(float v, float low, float high) { + if (v < low) { + return low; + } else if (v > high) { + return high; + } + return v; +} + +static inline float _sg_color_lerp(float a, float b, float amount) { + return a + (b - a) * amount; +} + +static inline float _sg_color_lerp_precise(float a, float b, float amount) { + return ((1.0f - amount) * a) + (b * amount); +} + +SOKOL_API_IMPL sg_color sg_make_color_4b(uint8_t r, uint8_t g, uint8_t b, uint8_t a) { + sg_color result; + result.r = r / 255.0f; + result.g = g / 255.0f; + result.b = b / 255.0f; + result.a = a / 255.0f; + return result; +} + +SOKOL_API_IMPL sg_color sg_make_color_1i(uint32_t rgba) { + return sg_make_color_4b( + (uint8_t)(rgba >> 24), + (uint8_t)(rgba >> 16), + (uint8_t)(rgba >> 8), + (uint8_t)(rgba >> 0) + ); +} + +SOKOL_API_IMPL sg_color sg_color_lerp(const sg_color* color_a, const sg_color* color_b, float amount) { + SOKOL_ASSERT(color_a); + SOKOL_ASSERT(color_b); + amount = _sg_color_clamp(amount, 0.0f, 1.0f); + sg_color result; + result.r = _sg_color_lerp(color_a->r, color_b->r, amount); + result.g = _sg_color_lerp(color_a->g, color_b->g, amount); + result.b = _sg_color_lerp(color_a->b, color_b->b, amount); + result.a = _sg_color_lerp(color_a->a, color_b->a, amount); + return result; +} + +SOKOL_API_IMPL sg_color sg_color_lerp_precise(const sg_color* color_a, const sg_color* color_b, float amount) { + SOKOL_ASSERT(color_a); + SOKOL_ASSERT(color_b); + amount = _sg_color_clamp(amount, 0.0f, 1.0f); + sg_color result; + result.r = _sg_color_lerp_precise(color_a->r, color_b->r, amount); + result.g = _sg_color_lerp_precise(color_a->g, color_b->g, amount); + result.b = _sg_color_lerp_precise(color_a->b, color_b->b, amount); + result.a = _sg_color_lerp_precise(color_a->a, color_b->a, amount); + return result; +} + +SOKOL_API_IMPL sg_color sg_color_multiply(const sg_color* color, float scale) { + SOKOL_ASSERT(color); + sg_color result; + result.r = color->r * scale; + result.g = color->g * scale; + result.b = color->b * scale; + result.a = color->a * scale; + return result; +} + +#endif /* SOKOL_COLOR_IMPL */ diff --git a/source/engine/thirdparty/sokol/sokol_debugtext.h b/source/engine/thirdparty/sokol/sokol_debugtext.h new file mode 100644 index 0000000..eed0436 --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_debugtext.h @@ -0,0 +1,4644 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_DEBUGTEXT_IMPL) +#define SOKOL_DEBUGTEXT_IMPL +#endif +#ifndef SOKOL_DEBUGTEXT_INCLUDED +/* + sokol_debugtext.h - simple ASCII debug text rendering on top of sokol_gfx.h + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_DEBUGTEXT_IMPL + before you include this file in *one* C or C++ file to create the + implementation. + + The following defines are used by the implementation to select the + platform-specific embedded shader code (these are the same defines as + used by sokol_gfx.h and sokol_app.h): + + SOKOL_GLCORE33 + SOKOL_GLES3 + SOKOL_D3D11 + SOKOL_METAL + SOKOL_WGPU + + ...optionally provide the following macros to override defaults: + + SOKOL_VSNPRINTF - the function name of an alternative vsnprintf() function (default: vsnprintf) + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_DEBUGTEXT_API_DECL - public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_DEBUGTEXT_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + SOKOL_UNREACHABLE() - a guard macro for unreachable code (default: assert(false)) + + If sokol_debugtext.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_DEBUGTEXT_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + Include the following headers before including sokol_debugtext.h: + + sokol_gfx.h + + FEATURES AND CONCEPTS + ===================== + - renders 8-bit ASCII text as fixed-size 8x8 pixel characters + - comes with 6 embedded 8-bit home computer fonts (each taking up 2 KBytes) + - easily plug in your own fonts + - create multiple contexts for rendering text in different layers or render passes + + STEP BY STEP + ============ + + --- to initialize sokol-debugtext, call sdtx_setup() *after* initializing + sokol-gfx: + + sdtx_setup(&(sdtx_desc_t){ ... }); + + To see any warnings and errors, you should always install a logging callback. + The easiest way is via sokol_log.h: + + #include "sokol_log.h" + + sdtx_setup(&(sdtx_desc_t){ + .logger.func = slog_func, + }); + + --- configure sokol-debugtext by populating the sdtx_desc_t struct: + + .context_pool_size (default: 8) + The max number of text contexts that can be created. + + .printf_buf_size (default: 4096) + The size of the internal text formatting buffer used by + sdtx_printf() and sdtx_vprintf(). + + .fonts (default: none) + An array of sdtx_font_desc_t structs used to configure the + fonts that can be used for rendering. To use all builtin + fonts call sdtx_setup() like this (in C99): + + sdtx_setup(&sdtx_desc_t){ + .fonts = { + [0] = sdtx_font_kc853(), + [1] = sdtx_font_kc854(), + [2] = sdtx_font_z1013(), + [3] = sdtx_font_cpc(), + [4] = sdtx_font_c64(), + [5] = sdtx_font_oric() + } + }); + + For documentation on how to use you own font data, search + below for "USING YOUR OWN FONT DATA". + + .context + The setup parameters for the default text context. This will + be active right after sdtx_setup(), or when calling + sdtx_set_context(SDTX_DEFAULT_CONTEXT): + + .max_commands (default: 4096) + The max number of render commands that can be recorded + into the internal command buffer. This directly translates + to the number of render layer changes in a single frame. + + .char_buf_size (default: 4096) + The number of characters that can be rendered per frame in this + context, defines the size of an internal fixed-size vertex + buffer. Any additional characters will be silently ignored. + + .canvas_width (default: 640) + .canvas_height (default: 480) + The 'virtual canvas size' in pixels. This defines how big + characters will be rendered relative to the default framebuffer + dimensions. Each character occupies a grid of 8x8 'virtual canvas + pixels' (so a virtual canvas size of 640x480 means that 80x60 characters + fit on the screen). For rendering in a resizeable window, you + should dynamically update the canvas size in each frame by + calling sdtx_canvas(w, h). + + .tab_width (default: 4) + The width of a tab character in number of character cells. + + .color_format (default: 0) + .depth_format (default: 0) + .sample_count (default: 0) + The pixel format description for the default context needed + for creating the context's sg_pipeline object. When + rendering to the default framebuffer you can leave those + zero-initialized, in this case the proper values will be + filled in by sokol-gfx. You only need to provide non-default + values here when rendering to render targets with different + pixel format attributes than the default framebuffer. + + --- Before starting to render text, optionally call sdtx_canvas() to + dynamically resize the virtual canvas. This is recommended when + rendering to a resizeable window. The virtual canvas size can + also be used to scale text in relation to the display resolution. + + Examples when using sokol-app: + + - to render characters at 8x8 'physical pixels': + + sdtx_canvas(sapp_width(), sapp_height()); + + - to render characters at 16x16 physical pixels: + + sdtx_canvas(sapp_width()/2.0f, sapp_heigth()/2.0f); + + Do *not* use integer math here, since this will not look nice + when the render target size isn't divisible by 2. + + --- Optionally define the origin for the character grid with: + + sdtx_origin(x, y); + + The provided coordinates are in character grid cells, not in + virtual canvas pixels. E.g. to set the origin to 2 character tiles + from the left and top border: + + sdtx_origin(2, 2); + + You can define fractions, e.g. to start rendering half + a character tile from the top-left corner: + + sdtx_origin(0.5f, 0.5f); + + --- Optionally set a different font by calling: + + sdtx_font(font_index) + + sokol-debugtext provides 8 font slots which can be populated + with the builtin fonts or with user-provided font data, so + 'font_index' must be a number from 0 to 7. + + --- Position the text cursor with one of the following calls. All arguments + are in character grid cells as floats and relative to the + origin defined with sdtx_origin(): + + sdtx_pos(x, y) - sets absolute cursor position + sdtx_pos_x(x) - only set absolute x cursor position + sdtx_pos_y(y) - only set absolute y cursor position + + sdtx_move(x, y) - move cursor relative in x and y direction + sdtx_move_x(x) - move cursor relative only in x direction + sdtx_move_y(y) - move cursor relative only in y direction + + sdtx_crlf() - set cursor to beginning of next line + (same as sdtx_pos_x(0) + sdtx_move_y(1)) + sdtx_home() - resets the cursor to the origin + (same as sdtx_pos(0, 0)) + + --- Set a new text color with any of the following functions: + + sdtx_color3b(r, g, b) - RGB 0..255, A=255 + sdtx_color3f(r, g, b) - RGB 0.0f..1.0f, A=1.0f + sdtx_color4b(r, g, b, a) - RGBA 0..255 + sdtx_color4f(r, g, b, a) - RGBA 0.0f..1.0f + sdtx_color1i(uint32_t rgba) - ABGR (0xAABBGGRR) + + --- Output 8-bit ASCII text with the following functions: + + sdtx_putc(c) - output a single character + + sdtx_puts(str) - output a null-terminated C string, note that + this will *not* append a newline (so it behaves + differently than the CRT's puts() function) + + sdtx_putr(str, len) - 'put range' output the first 'len' characters of + a C string or until the zero character is encountered + + sdtx_printf(fmt, ...) - output with printf-formatting, note that you + can inject your own printf-compatible function + by overriding the SOKOL_VSNPRINTF define before + including the implementation + + sdtx_vprintf(fmt, args) - same as sdtx_printf() but with the arguments + provided in a va_list + + - Note that the text will not yet be rendered, only recorded for rendering + at a later time, the actual rendering happens when sdtx_draw() is called + inside a sokol-gfx render pass. + - This means also you can output text anywhere in the frame, it doesn't + have to be inside a render pass. + - Note that character codes <32 are reserved as control characters + and won't render anything. Currently only the following control + characters are implemented: + + \r - carriage return (same as sdtx_pos_x(0)) + \n - carriage return + line feed (same as stdx_crlf()) + \t - a tab character + + --- You can 'record' text into render layers, this allows to mix/interleave + sokol-debugtext rendering with other rendering operations inside + sokol-gfx render passes. To start recording text into a different render + layer, call: + + sdtx_layer(int layer_id) + + ...outside a sokol-gfx render pass. + + --- finally, from within a sokol-gfx render pass, call: + + sdtx_draw() + + ...for non-layered rendering, or to draw a specific layer: + + sdtx_draw_layer(int layer_id) + + NOTE that sdtx_draw() is equivalent to: + + sdtx_draw_layer(0) + + ...so sdtx_draw() will *NOT* render all text layers, instead it will + only render the 'default layer' 0. + + --- at the end of a frame (defined by the call to sg_commit()), sokol-debugtext + will rewind all contexts: + + - the internal vertex index is set to 0 + - the internal command index is set to 0 + - the current layer id is set to 0 + - the current font is set to 0 + - the cursor position is reset + + + RENDERING WITH MULTIPLE CONTEXTS + ================================ + Use multiple text contexts if you need to render debug text in different + sokol-gfx render passes, or want to render text to different layers + in the same render pass, each with its own set of parameters. + + To create a new text context call: + + sdtx_context ctx = sdtx_make_context(&(sdtx_context_desc_t){ ... }); + + The creation parameters in the sdtx_context_desc_t struct are the same + as already described above in the sdtx_setup() function: + + .char_buf_size -- max number of characters rendered in one frame, default: 4096 + .canvas_width -- the initial virtual canvas width, default: 640 + .canvas_height -- the initial virtual canvas height, default: 400 + .tab_width -- tab width in number of characters, default: 4 + .color_format -- color pixel format of target render pass + .depth_format -- depth pixel format of target render pass + .sample_count -- MSAA sample count of target render pass + + To make a new context the active context, call: + + sdtx_set_context(ctx) + + ...and after that call the text output functions as described above, and + finally, inside a sokol-gfx render pass, call sdtx_draw() to actually + render the text for this context. + + A context keeps track of the following parameters: + + - the active font + - the virtual canvas size + - the origin position + - the current cursor position + - the current tab width + - the current color + - and the current layer-id + + You can get the currently active context with: + + sdtx_get_context() + + To make the default context current, call sdtx_set_context() with the + special SDTX_DEFAULT_CONTEXT handle: + + sdtx_set_context(SDTX_DEFAULT_CONTEXT) + + Alternatively, use the function sdtx_default_context() to get the default + context handle: + + sdtx_set_context(sdtx_default_context()); + + To destroy a context, call: + + sdtx_destroy_context(ctx) + + If a context is set as active that no longer exists, all sokol-debugtext + functions that require an active context will silently fail. + + You can directly draw the recorded text in a specific context without + setting the active context: + + sdtx_context_draw(ctx) + sdtx_context_draw_layer(ctx, layer_id) + + USING YOUR OWN FONT DATA + ======================== + + Instead of the built-in fonts you can also plug your own font data + into sokol-debugtext by providing one or several sdtx_font_desc_t + structures in the sdtx_setup call. + + For instance to use a built-in font at slot 0, and a user-font at + font slot 1, the sdtx_setup() call might look like this: + + sdtx_setup(&sdtx_desc_t){ + .fonts = { + [0] = sdtx_font_kc853(), + [1] = { + .data = { + .ptr = my_font_data, + .size = sizeof(my_font_data) + }, + .first_char = ..., + .last_char = ... + } + } + }); + + Where 'my_font_data' is a byte array where every character is described + by 8 bytes arranged like this: + + bits + 7 6 5 4 3 2 1 0 + . . . X X . . . byte 0: 0x18 + . . X X X X . . byte 1: 0x3C + . X X . . X X . byte 2: 0x66 + . X X . . X X . byte 3: 0x66 + . X X X X X X . byte 4: 0x7E + . X X . . X X . byte 5: 0x66 + . X X . . X X . byte 6: 0x66 + . . . . . . . . byte 7: 0x00 + + A complete font consists of 256 characters, resulting in 2048 bytes for + the font data array (but note that the character codes 0..31 will never + be rendered). + + If you provide such a complete font data array, you can drop the .first_char + and .last_char initialization parameters since those default to 0 and 255, + note that you can also use the SDTX_RANGE() helper macro to build the + .data item: + + sdtx_setup(&sdtx_desc_t){ + .fonts = { + [0] = sdtx_font_kc853(), + [1] = { + .data = SDTX_RANGE(my_font_data) + } + } + }); + + If the font doesn't define all 256 character tiles, or you don't need an + entire 256-character font and want to save a couple of bytes, use the + .first_char and .last_char initialization parameters to define a sub-range. + For instance if the font only contains the characters between the Space + (ASCII code 32) and uppercase character 'Z' (ASCII code 90): + + sdtx_setup(&sdtx_desc_t){ + .fonts = { + [0] = sdtx_font_kc853(), + [1] = { + .data = SDTX_RANGE(my_font_data), + .first_char = 32, // could also write ' ' + .last_char = 90 // could also write 'Z' + } + } + }); + + Character tiles that haven't been defined in the font will be rendered + as a solid 8x8 quad. + + + MEMORY ALLOCATION OVERRIDE + ========================== + You can override the memory allocation functions at initialization time + like this: + + void* my_alloc(size_t size, void* user_data) { + return malloc(size); + } + + void my_free(void* ptr, void* user_data) { + free(ptr); + } + + ... + sdtx_setup(&(sdtx_desc_t){ + // ... + .allocator = { + .alloc = my_alloc, + .free = my_free, + .user_data = ...; + } + }); + ... + + If no overrides are provided, malloc and free will be used. + + + ERROR REPORTING AND LOGGING + =========================== + To get any logging information at all you need to provide a logging callback in the setup call, + the easiest way is to use sokol_log.h: + + #include "sokol_log.h" + + sdtx_setup(&(sdtx_desc_t){ + // ... + .logger.func = slog_func + }); + + To override logging with your own callback, first write a logging function like this: + + void my_log(const char* tag, // e.g. 'sdtx' + uint32_t log_level, // 0=panic, 1=error, 2=warn, 3=info + uint32_t log_item_id, // SDTX_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_debugtext.h + const char* filename_or_null, // source filename, may be nullptr in release mode + void* user_data) + { + ... + } + + ...and then setup sokol-debugtext like this: + + sdtx_setup(&(sdtx_desc_t){ + .logger = { + .func = my_log, + .user_data = my_user_data, + } + }); + + The provided logging function must be reentrant (e.g. be callable from + different threads). + + If you don't want to provide your own custom logger it is highly recommended to use + the standard logger in sokol_log.h instead, otherwise you won't see any warnings or + errors. + + + LICENSE + ======= + zlib/libpng license + + Copyright (c) 2020 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_DEBUGTEXT_INCLUDED (1) +#include +#include +#include // size_t +#include // va_list + +#if !defined(SOKOL_GFX_INCLUDED) +#error "Please include sokol_gfx.h before sokol_debugtext.h" +#endif + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_DEBUGTEXT_API_DECL) +#define SOKOL_DEBUGTEXT_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_DEBUGTEXT_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_DEBUGTEXT_IMPL) +#define SOKOL_DEBUGTEXT_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_DEBUGTEXT_API_DECL __declspec(dllimport) +#else +#define SOKOL_DEBUGTEXT_API_DECL extern +#endif +#endif + +#if defined(__GNUC__) +#define SOKOL_DEBUGTEXT_PRINTF_ATTR __attribute__((format(printf, 1, 2))) +#else +#define SOKOL_DEBUGTEXT_PRINTF_ATTR +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + sdtx_log_item_t + + Log items are defined via X-Macros, and expanded to an + enum 'sdtx_log_item' - and in debug mode only - corresponding strings. + + Used as parameter in the logging callback. +*/ +#define _SDTX_LOG_ITEMS \ + _SDTX_LOGITEM_XMACRO(OK, "Ok") \ + _SDTX_LOGITEM_XMACRO(MALLOC_FAILED, "memory allocation failed") \ + _SDTX_LOGITEM_XMACRO(ADD_COMMIT_LISTENER_FAILED, "sg_add_commit_listener() failed") \ + _SDTX_LOGITEM_XMACRO(COMMAND_BUFFER_FULL, "command buffer full (adjust via sdtx_context_desc_t.max_commands)") \ + _SDTX_LOGITEM_XMACRO(CONTEXT_POOL_EXHAUSTED, "context pool exhausted (adjust via sdtx_desc_t.context_pool_size)") \ + _SDTX_LOGITEM_XMACRO(CANNOT_DESTROY_DEFAULT_CONTEXT, "cannot destroy default context") \ + +#define _SDTX_LOGITEM_XMACRO(item,msg) SDTX_LOGITEM_##item, +typedef enum sdtx_log_item_t { + _SDTX_LOG_ITEMS +} sdtx_log_item_t; +#undef _SDTX_LOGITEM_XMACRO + +/* + sdtx_logger_t + + Used in sdtx_desc_t to provide a custom logging and error reporting + callback to sokol-debugtext. +*/ +typedef struct sdtx_logger_t { + void (*func)( + const char* tag, // always "sdtx" + uint32_t log_level, // 0=panic, 1=error, 2=warning, 3=info + uint32_t log_item_id, // SDTX_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_debugtext.h + const char* filename_or_null, // source filename, may be nullptr in release mode + void* user_data); + void* user_data; +} sdtx_logger_t; + +/* a rendering context handle */ +typedef struct sdtx_context { uint32_t id; } sdtx_context; + +/* the default context handle */ +static const sdtx_context SDTX_DEFAULT_CONTEXT = { 0x00010001 }; + +/* + sdtx_range is a pointer-size-pair struct used to pass memory + blobs into sokol-debugtext. When initialized from a value type + (array or struct), use the SDTX_RANGE() macro to build + an sdtx_range struct. +*/ +typedef struct sdtx_range { + const void* ptr; + size_t size; +} sdtx_range; + +// disabling this for every includer isn't great, but the warning is also quite pointless +#if defined(_MSC_VER) +#pragma warning(disable:4221) /* /W4 only: nonstandard extension used: 'x': cannot be initialized using address of automatic variable 'y' */ +#pragma warning(disable:4204) /* VS2015: nonstandard extension used: non-constant aggregate initializer */ +#endif +#if defined(__cplusplus) +#define SDTX_RANGE(x) sdtx_range{ &x, sizeof(x) } +#else +#define SDTX_RANGE(x) (sdtx_range){ &x, sizeof(x) } +#endif + +/* + sdtx_font_desc_t + + Describes the pixel data of a font. A font consists of up to + 256 8x8 character tiles, where each character tile is described + by 8 consecutive bytes, each byte describing 8 pixels. + + For instance the character 'A' could look like this (this is also + how most home computers used to describe their fonts in ROM): + + bits + 7 6 5 4 3 2 1 0 + . . . X X . . . byte 0: 0x18 + . . X X X X . . byte 1: 0x3C + . X X . . X X . byte 2: 0x66 + . X X . . X X . byte 3: 0x66 + . X X X X X X . byte 4: 0x7E + . X X . . X X . byte 5: 0x66 + . X X . . X X . byte 6: 0x66 + . . . . . . . . byte 7: 0x00 + */ +#define SDTX_MAX_FONTS (8) + +typedef struct sdtx_font_desc_t { + sdtx_range data; // pointer to and size of font pixel data + uint8_t first_char; // first character index in font pixel data + uint8_t last_char; // last character index in font pixel data, inclusive (default: 255) +} sdtx_font_desc_t; + +/* + sdtx_context_desc_t + + Describes the initialization parameters of a rendering context. Creating + additional rendering contexts is useful if you want to render in + different sokol-gfx rendering passes, or when rendering several layers + of text. +*/ +typedef struct sdtx_context_desc_t { + int max_commands; // max number of draw commands, each layer transition counts as a command, default: 4096 + int char_buf_size; // max number of characters rendered in one frame, default: 4096 + float canvas_width; // the initial virtual canvas width, default: 640 + float canvas_height; // the initial virtual canvas height, default: 400 + int tab_width; // tab width in number of characters, default: 4 + sg_pixel_format color_format; // color pixel format of target render pass + sg_pixel_format depth_format; // depth pixel format of target render pass + int sample_count; // MSAA sample count of target render pass +} sdtx_context_desc_t; + +/* + sdtx_allocator_t + + Used in sdtx_desc_t to provide custom memory-alloc and -free functions + to sokol_debugtext.h. If memory management should be overridden, both the + alloc and free function must be provided (e.g. it's not valid to + override one function but not the other). +*/ +typedef struct sdtx_allocator_t { + void* (*alloc)(size_t size, void* user_data); + void (*free)(void* ptr, void* user_data); + void* user_data; +} sdtx_allocator_t; + +/* + sdtx_desc_t + + Describes the sokol-debugtext API initialization parameters. Passed + to the sdtx_setup() function. + + NOTE: to populate the fonts item array with builtin fonts, use any + of the following functions: + + sdtx_font_kc853() + sdtx_font_kc854() + sdtx_font_z1013() + sdtx_font_cpc() + sdtx_font_c64() + sdtx_font_oric() +*/ +typedef struct sdtx_desc_t { + int context_pool_size; // max number of rendering contexts that can be created, default: 8 + int printf_buf_size; // size of internal buffer for snprintf(), default: 4096 + sdtx_font_desc_t fonts[SDTX_MAX_FONTS]; // up to 8 fonts descriptions + sdtx_context_desc_t context; // the default context creation parameters + sdtx_allocator_t allocator; // optional memory allocation overrides (default: malloc/free) + sdtx_logger_t logger; // optional log override function (default: NO LOGGING) +} sdtx_desc_t; + +/* initialization/shutdown */ +SOKOL_DEBUGTEXT_API_DECL void sdtx_setup(const sdtx_desc_t* desc); +SOKOL_DEBUGTEXT_API_DECL void sdtx_shutdown(void); + +/* builtin font data (use to populate sdtx_desc.font[]) */ +SOKOL_DEBUGTEXT_API_DECL sdtx_font_desc_t sdtx_font_kc853(void); +SOKOL_DEBUGTEXT_API_DECL sdtx_font_desc_t sdtx_font_kc854(void); +SOKOL_DEBUGTEXT_API_DECL sdtx_font_desc_t sdtx_font_z1013(void); +SOKOL_DEBUGTEXT_API_DECL sdtx_font_desc_t sdtx_font_cpc(void); +SOKOL_DEBUGTEXT_API_DECL sdtx_font_desc_t sdtx_font_c64(void); +SOKOL_DEBUGTEXT_API_DECL sdtx_font_desc_t sdtx_font_oric(void); + +/* context functions */ +SOKOL_DEBUGTEXT_API_DECL sdtx_context sdtx_make_context(const sdtx_context_desc_t* desc); +SOKOL_DEBUGTEXT_API_DECL void sdtx_destroy_context(sdtx_context ctx); +SOKOL_DEBUGTEXT_API_DECL void sdtx_set_context(sdtx_context ctx); +SOKOL_DEBUGTEXT_API_DECL sdtx_context sdtx_get_context(void); +SOKOL_DEBUGTEXT_API_DECL sdtx_context sdtx_default_context(void); + +/* drawing functions (call inside sokol-gfx render pass) */ +SOKOL_DEBUGTEXT_API_DECL void sdtx_draw(void); +SOKOL_DEBUGTEXT_API_DECL void sdtx_context_draw(sdtx_context ctx); +SOKOL_DEBUGTEXT_API_DECL void sdtx_draw_layer(int layer_id); +SOKOL_DEBUGTEXT_API_DECL void sdtx_context_draw_layer(sdtx_context ctx, int layer_id); + +/* switch render layer */ +SOKOL_DEBUGTEXT_API_DECL void sdtx_layer(int layer_id); + +/* switch to a different font */ +SOKOL_DEBUGTEXT_API_DECL void sdtx_font(int font_index); + +/* set a new virtual canvas size in screen pixels */ +SOKOL_DEBUGTEXT_API_DECL void sdtx_canvas(float w, float h); + +/* set a new origin in character grid coordinates */ +SOKOL_DEBUGTEXT_API_DECL void sdtx_origin(float x, float y); + +/* cursor movement functions (relative to origin in character grid coordinates) */ +SOKOL_DEBUGTEXT_API_DECL void sdtx_home(void); +SOKOL_DEBUGTEXT_API_DECL void sdtx_pos(float x, float y); +SOKOL_DEBUGTEXT_API_DECL void sdtx_pos_x(float x); +SOKOL_DEBUGTEXT_API_DECL void sdtx_pos_y(float y); +SOKOL_DEBUGTEXT_API_DECL void sdtx_move(float dx, float dy); +SOKOL_DEBUGTEXT_API_DECL void sdtx_move_x(float dx); +SOKOL_DEBUGTEXT_API_DECL void sdtx_move_y(float dy); +SOKOL_DEBUGTEXT_API_DECL void sdtx_crlf(void); + +/* set the current text color */ +SOKOL_DEBUGTEXT_API_DECL void sdtx_color3b(uint8_t r, uint8_t g, uint8_t b); // RGB 0..255, A=255 +SOKOL_DEBUGTEXT_API_DECL void sdtx_color3f(float r, float g, float b); // RGB 0.0f..1.0f, A=1.0f +SOKOL_DEBUGTEXT_API_DECL void sdtx_color4b(uint8_t r, uint8_t g, uint8_t b, uint8_t a); // RGBA 0..255 +SOKOL_DEBUGTEXT_API_DECL void sdtx_color4f(float r, float g, float b, float a); // RGBA 0.0f..1.0f +SOKOL_DEBUGTEXT_API_DECL void sdtx_color1i(uint32_t rgba); // ABGR 0xAABBGGRR + +/* text rendering */ +SOKOL_DEBUGTEXT_API_DECL void sdtx_putc(char c); +SOKOL_DEBUGTEXT_API_DECL void sdtx_puts(const char* str); // does NOT append newline! +SOKOL_DEBUGTEXT_API_DECL void sdtx_putr(const char* str, int len); // 'put range', also stops at zero-char +SOKOL_DEBUGTEXT_API_DECL int sdtx_printf(const char* fmt, ...) SOKOL_DEBUGTEXT_PRINTF_ATTR; +SOKOL_DEBUGTEXT_API_DECL int sdtx_vprintf(const char* fmt, va_list args); + +#ifdef __cplusplus +} /* extern "C" */ +/* C++ const-ref wrappers */ +inline void sdtx_setup(const sdtx_desc_t& desc) { return sdtx_setup(&desc); } +inline sdtx_context sdtx_make_context(const sdtx_context_desc_t& desc) { return sdtx_make_context(&desc); } +#endif +#endif /* SOKOL_DEBUGTEXT_INCLUDED */ + +// ██ ███ ███ ██████ ██ ███████ ███ ███ ███████ ███ ██ ████████ █████ ████████ ██ ██████ ███ ██ +// ██ ████ ████ ██ ██ ██ ██ ████ ████ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ +// ██ ██ ████ ██ ██████ ██ █████ ██ ████ ██ █████ ██ ██ ██ ██ ███████ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ███████ ███████ ██ ██ ███████ ██ ████ ██ ██ ██ ██ ██ ██████ ██ ████ +// +// >>implementation +#ifdef SOKOL_DEBUGTEXT_IMPL +#define SOKOL_DEBUGTEXT_IMPL_INCLUDED (1) + +#if defined(SOKOL_MALLOC) || defined(SOKOL_CALLOC) || defined(SOKOL_FREE) +#error "SOKOL_MALLOC/CALLOC/FREE macros are no longer supported, please use sdtx_desc_t.allocator to override memory allocation functions" +#endif + +#include // memset +#include // fmodf +#include // for vsnprintf +#include // malloc/free + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_DEBUG + #ifndef NDEBUG + #define SOKOL_DEBUG + #endif +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif + +#ifndef SOKOL_UNREACHABLE + #define SOKOL_UNREACHABLE SOKOL_ASSERT(false) +#endif +#ifndef _SOKOL_UNUSED + #define _SOKOL_UNUSED(x) (void)(x) +#endif + +#ifndef SOKOL_VSNPRINTF +#include +#define SOKOL_VSNPRINTF vsnprintf +#endif + +#define _sdtx_def(val, def) (((val) == 0) ? (def) : (val)) +#define _SDTX_INIT_COOKIE (0xACBAABCA) + +#define _SDTX_DEFAULT_MAX_COMMANDS (4096) +#define _SDTX_DEFAULT_CONTEXT_POOL_SIZE (8) +#define _SDTX_DEFAULT_CHAR_BUF_SIZE (4096) +#define _SDTX_DEFAULT_PRINTF_BUF_SIZE (4096) +#define _SDTX_DEFAULT_CANVAS_WIDTH (640) +#define _SDTX_DEFAULT_CANVAS_HEIGHT (480) +#define _SDTX_DEFAULT_TAB_WIDTH (4) +#define _SDTX_DEFAULT_COLOR (0xFF00FFFF) +#define _SDTX_INVALID_SLOT_INDEX (0) +#define _SDTX_SLOT_SHIFT (16) +#define _SDTX_MAX_POOL_SIZE (1<<_SDTX_SLOT_SHIFT) +#define _SDTX_SLOT_MASK (_SDTX_MAX_POOL_SIZE-1) + +/* embedded font data */ +static const uint8_t _sdtx_font_kc853[2048] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, // 00 + 0x00, 0x00, 0x22, 0x72, 0x22, 0x3E, 0x00, 0x00, // 01 + 0x00, 0x00, 0x12, 0x32, 0x7E, 0x32, 0x12, 0x00, // 02 + 0x7E, 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0xB9, 0x81, // 03 + 0x55, 0xFF, 0x55, 0xFF, 0x55, 0xFF, 0x55, 0xFF, // 04 + 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, // 05 + 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, // 06 + 0x00, 0x00, 0x3C, 0x42, 0x42, 0x7E, 0x00, 0x00, // 07 + 0x00, 0x10, 0x30, 0x7E, 0x30, 0x10, 0x00, 0x00, // 08 + 0x00, 0x08, 0x0C, 0x7E, 0x0C, 0x08, 0x00, 0x00, // 09 + 0x00, 0x10, 0x10, 0x10, 0x7C, 0x38, 0x10, 0x00, // 0A + 0x08, 0x1C, 0x3E, 0x08, 0x08, 0x08, 0x08, 0x00, // 0B + 0x38, 0x30, 0x28, 0x08, 0x08, 0x08, 0x3E, 0x00, // 0C + 0x00, 0x00, 0x12, 0x32, 0x7E, 0x30, 0x10, 0x00, // 0D + 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, // 0E + 0x3E, 0x7C, 0x7C, 0x3E, 0x3E, 0x7C, 0xF8, 0xF8, // 0F + 0x38, 0x30, 0x28, 0x04, 0x04, 0x04, 0x04, 0x00, // 10 + 0x7F, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x08, 0x00, // 11 + 0x00, 0x08, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x7F, // 12 + 0x7E, 0x81, 0x9D, 0xA1, 0xB9, 0x85, 0x85, 0xB9, // 13 + 0x00, 0x3C, 0x42, 0x5A, 0x5A, 0x42, 0x3C, 0x00, // 14 + 0x88, 0x44, 0x22, 0x11, 0x88, 0x44, 0x22, 0x11, // 15 + 0x00, 0x7F, 0x22, 0x72, 0x27, 0x22, 0x7F, 0x00, // 16 + 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, // 17 + 0x00, 0x01, 0x09, 0x0D, 0x7F, 0x0D, 0x09, 0x01, // 18 + 0x00, 0x90, 0xB0, 0xFE, 0xB0, 0x90, 0x00, 0x00, // 19 + 0x00, 0x08, 0x7C, 0x06, 0x7C, 0x08, 0x00, 0x00, // 1A + 0xCC, 0xCC, 0x33, 0x33, 0xCC, 0xCC, 0x33, 0x33, // 1B + 0x7E, 0x81, 0xA1, 0xA1, 0xA1, 0xA1, 0xBD, 0x81, // 1C + 0x7E, 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0xA5, 0x81, // 1D + 0x7E, 0x81, 0x99, 0xA1, 0xA1, 0xA1, 0x99, 0x81, // 1E + 0x00, 0x10, 0x3E, 0x60, 0x3E, 0x10, 0x00, 0x00, // 1F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 20 + 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x00, // 21 + 0x00, 0x66, 0x66, 0xCC, 0x00, 0x00, 0x00, 0x00, // 22 + 0x00, 0x36, 0x7F, 0x36, 0x36, 0x7F, 0x36, 0x00, // 23 + 0x18, 0x3E, 0x6C, 0x3E, 0x1B, 0x1B, 0x7E, 0x18, // 24 + 0x00, 0x63, 0x66, 0x0C, 0x18, 0x36, 0x66, 0x00, // 25 + 0x18, 0x24, 0x28, 0x11, 0x2A, 0x44, 0x4A, 0x31, // 26 + 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, // 27 + 0x00, 0x18, 0x30, 0x30, 0x30, 0x30, 0x18, 0x00, // 28 + 0x00, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x18, 0x00, // 29 + 0x00, 0x00, 0x24, 0x18, 0x7E, 0x18, 0x24, 0x00, // 2A + 0x00, 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, // 2B + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, // 2C + 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, // 2D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, // 2E + 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x00, 0x00, // 2F + 0x00, 0x3C, 0x6E, 0x6E, 0x76, 0x76, 0x3C, 0x00, // 30 + 0x00, 0x1C, 0x3C, 0x0C, 0x0C, 0x0C, 0x3E, 0x00, // 31 + 0x00, 0x3C, 0x66, 0x06, 0x3C, 0x60, 0x7E, 0x00, // 32 + 0x00, 0x3C, 0x66, 0x0C, 0x06, 0x66, 0x3C, 0x00, // 33 + 0x00, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x0C, 0x00, // 34 + 0x00, 0x7E, 0x60, 0x7C, 0x06, 0x66, 0x3C, 0x00, // 35 + 0x00, 0x3C, 0x60, 0x7C, 0x66, 0x66, 0x3C, 0x00, // 36 + 0x00, 0x7E, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x00, // 37 + 0x00, 0x3C, 0x66, 0x3C, 0x66, 0x66, 0x3C, 0x00, // 38 + 0x00, 0x3C, 0x66, 0x66, 0x3E, 0x06, 0x3C, 0x00, // 39 + 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, // 3A + 0x00, 0x00, 0x18, 0x00, 0x18, 0x18, 0x30, 0x00, // 3B + 0x00, 0x00, 0x18, 0x30, 0x60, 0x30, 0x18, 0x00, // 3C + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x00, // 3D + 0x00, 0x00, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x00, // 3E + 0x00, 0x3C, 0x66, 0x06, 0x1C, 0x18, 0x00, 0x18, // 3F + 0x3C, 0x42, 0x81, 0x35, 0x49, 0x49, 0x49, 0x36, // 40 + 0x00, 0x3C, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x00, // 41 + 0x00, 0x7C, 0x66, 0x7C, 0x66, 0x66, 0x7C, 0x00, // 42 + 0x00, 0x3C, 0x66, 0x60, 0x60, 0x66, 0x3C, 0x00, // 43 + 0x00, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x00, // 44 + 0x00, 0x7E, 0x60, 0x7C, 0x60, 0x60, 0x7E, 0x00, // 45 + 0x00, 0x7E, 0x60, 0x7C, 0x60, 0x60, 0x60, 0x00, // 46 + 0x00, 0x3C, 0x66, 0x60, 0x6E, 0x66, 0x3C, 0x00, // 47 + 0x00, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00, // 48 + 0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, // 49 + 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x6C, 0x38, 0x00, // 4A + 0x00, 0x66, 0x6C, 0x78, 0x6C, 0x66, 0x63, 0x00, // 4B + 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7E, 0x00, // 4C + 0x00, 0x63, 0x77, 0x6B, 0x63, 0x63, 0x63, 0x00, // 4D + 0x00, 0x63, 0x73, 0x6B, 0x67, 0x63, 0x63, 0x00, // 4E + 0x00, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, // 4F + 0x00, 0x7C, 0x66, 0x7C, 0x60, 0x60, 0x60, 0x00, // 50 + 0x00, 0x3C, 0x66, 0x66, 0x6E, 0x66, 0x3A, 0x01, // 51 + 0x00, 0x7C, 0x66, 0x7C, 0x6C, 0x66, 0x63, 0x00, // 52 + 0x00, 0x3C, 0x60, 0x3C, 0x06, 0x66, 0x3C, 0x00, // 53 + 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, // 54 + 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, // 55 + 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00, // 56 + 0x00, 0x63, 0x63, 0x6B, 0x6B, 0x7F, 0x36, 0x00, // 57 + 0x00, 0x66, 0x3C, 0x18, 0x18, 0x3C, 0x66, 0x00, // 58 + 0x00, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x00, // 59 + 0x00, 0x7E, 0x0C, 0x18, 0x30, 0x60, 0x7E, 0x00, // 5A + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 5B + 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, // 5C + 0x00, 0x7E, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, // 5D + 0x00, 0x00, 0x00, 0x08, 0x1C, 0x36, 0x00, 0x00, // 5E + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 5F + 0x7E, 0x81, 0x99, 0xA1, 0xA1, 0x99, 0x81, 0x7E, // 60 + 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3B, 0x00, // 61 + 0x00, 0x60, 0x60, 0x78, 0x6C, 0x6C, 0x78, 0x00, // 62 + 0x00, 0x00, 0x3C, 0x66, 0x60, 0x66, 0x3C, 0x00, // 63 + 0x00, 0x06, 0x06, 0x1E, 0x36, 0x36, 0x1E, 0x00, // 64 + 0x00, 0x00, 0x38, 0x6C, 0x7C, 0x60, 0x38, 0x00, // 65 + 0x00, 0x1E, 0x18, 0x7E, 0x18, 0x18, 0x18, 0x00, // 66 + 0x00, 0x00, 0x3C, 0x66, 0x66, 0x3F, 0x06, 0x3C, // 67 + 0x00, 0x60, 0x60, 0x6C, 0x76, 0x66, 0x66, 0x00, // 68 + 0x00, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, // 69 + 0x00, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x30, // 6A + 0x00, 0x60, 0x66, 0x6C, 0x78, 0x6C, 0x66, 0x00, // 6B + 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x00, // 6C + 0x00, 0x00, 0x36, 0x7F, 0x6B, 0x63, 0x63, 0x00, // 6D + 0x00, 0x00, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x00, // 6E + 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, // 6F + 0x00, 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, // 70 + 0x00, 0x00, 0x3C, 0x66, 0x66, 0x3E, 0x06, 0x06, // 71 + 0x00, 0x00, 0x36, 0x38, 0x30, 0x30, 0x30, 0x00, // 72 + 0x00, 0x00, 0x1C, 0x30, 0x1C, 0x06, 0x3C, 0x00, // 73 + 0x00, 0x18, 0x18, 0x3C, 0x18, 0x18, 0x0C, 0x00, // 74 + 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, // 75 + 0x00, 0x00, 0x66, 0x66, 0x3C, 0x3C, 0x18, 0x00, // 76 + 0x00, 0x00, 0x63, 0x63, 0x6B, 0x7F, 0x36, 0x00, // 77 + 0x00, 0x00, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x00, // 78 + 0x00, 0x00, 0x66, 0x3C, 0x18, 0x30, 0x60, 0x00, // 79 + 0x00, 0x00, 0x7E, 0x0C, 0x18, 0x30, 0x7E, 0x00, // 7A + 0x66, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3B, 0x00, // 7B + 0x66, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, // 7C + 0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, // 7D + 0x00, 0x38, 0x6C, 0x78, 0x6C, 0x78, 0x60, 0x60, // 7E + 0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF, // 7F + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, // 80 + 0xFF, 0xFF, 0xDD, 0x8D, 0xDD, 0xC1, 0xFF, 0xFF, // 81 + 0xFF, 0xFF, 0xED, 0xCD, 0x81, 0xCD, 0xED, 0xFF, // 82 + 0x81, 0x7E, 0x46, 0x5A, 0x46, 0x5A, 0x46, 0x7E, // 83 + 0xAA, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0xAA, 0x00, // 84 + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, // 85 + 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, // 86 + 0xFF, 0xFF, 0xC3, 0xBD, 0xBD, 0x81, 0xFF, 0xFF, // 87 + 0xFF, 0xEF, 0xCF, 0x81, 0xCF, 0xEF, 0xFF, 0xFF, // 88 + 0xFF, 0xF7, 0xF3, 0x81, 0xF3, 0xF7, 0xFF, 0xFF, // 89 + 0xFF, 0xEF, 0xEF, 0xEF, 0x83, 0xC7, 0xEF, 0xFF, // 8A + 0xF7, 0xE3, 0xC1, 0xF7, 0xF7, 0xF7, 0xF7, 0xFF, // 8B + 0xC7, 0xCF, 0xD7, 0xF7, 0xF7, 0xF7, 0xC1, 0xFF, // 8C + 0xFF, 0xFF, 0xED, 0xCD, 0x81, 0xCF, 0xEF, 0xFF, // 8D + 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, // 8E + 0xC1, 0x83, 0x83, 0xC1, 0xC1, 0x83, 0x07, 0x07, // 8F + 0xC7, 0xCF, 0xD7, 0xFB, 0xFB, 0xFB, 0xFB, 0xFF, // 90 + 0x80, 0xF7, 0xE3, 0xD5, 0xF7, 0xF7, 0xF7, 0xFF, // 91 + 0xFF, 0xF7, 0xF7, 0xF7, 0xD5, 0xE3, 0xF7, 0x80, // 92 + 0x81, 0x7E, 0x62, 0x5E, 0x46, 0x7A, 0x7A, 0x46, // 93 + 0xFF, 0xC3, 0xBD, 0xA5, 0xA5, 0xBD, 0xC3, 0xFF, // 94 + 0x77, 0xBB, 0xDD, 0xEE, 0x77, 0xBB, 0xDD, 0xEE, // 95 + 0xFF, 0x80, 0xDD, 0x8D, 0xD8, 0xDD, 0x80, 0xFF, // 96 + 0xEE, 0xDD, 0xBB, 0x77, 0xEE, 0xDD, 0xBB, 0x77, // 97 + 0xFF, 0xFE, 0xF6, 0xF2, 0x80, 0xF2, 0xF6, 0xFE, // 98 + 0xFF, 0x6F, 0x4F, 0x01, 0x4F, 0x6F, 0xFF, 0xFF, // 99 + 0xFF, 0xF7, 0x83, 0xF9, 0x83, 0xF7, 0xFF, 0xFF, // 9A + 0x33, 0x33, 0xCC, 0xCC, 0x33, 0x33, 0xCC, 0xCC, // 9B + 0x81, 0x7E, 0x5E, 0x5E, 0x5E, 0x5E, 0x42, 0x7E, // 9C + 0x81, 0x7E, 0x46, 0x5A, 0x46, 0x5A, 0x5A, 0x7E, // 9D + 0x81, 0x7E, 0x66, 0x5E, 0x5E, 0x5E, 0x66, 0x7E, // 9E + 0xFF, 0xEF, 0xC1, 0x9F, 0xC1, 0xEF, 0xFF, 0xFF, // 9F + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // A0 + 0xFF, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, 0xE7, 0xFF, // A1 + 0xFF, 0x99, 0x99, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, // A2 + 0xFF, 0xC9, 0x80, 0xC9, 0xC9, 0x80, 0xC9, 0xFF, // A3 + 0xE7, 0xC1, 0x93, 0xC1, 0xE4, 0xE4, 0x81, 0xE7, // A4 + 0xFF, 0x9C, 0x99, 0xF3, 0xE7, 0xC9, 0x99, 0xFF, // A5 + 0xE7, 0xDB, 0xD7, 0xEE, 0xD5, 0xBB, 0xB5, 0xCE, // A6 + 0xFF, 0xE7, 0xE7, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, // A7 + 0xFF, 0xE7, 0xCF, 0xCF, 0xCF, 0xCF, 0xE7, 0xFF, // A8 + 0xFF, 0xE7, 0xF3, 0xF3, 0xF3, 0xF3, 0xE7, 0xFF, // A9 + 0xFF, 0xFF, 0xDB, 0xE7, 0x81, 0xE7, 0xDB, 0xFF, // AA + 0xFF, 0xFF, 0xE7, 0xE7, 0x81, 0xE7, 0xE7, 0xFF, // AB + 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xE7, 0xCF, 0xFF, // AC + 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, // AD + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xE7, 0xFF, // AE + 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3F, 0xFF, 0xFF, // AF + 0xFF, 0xC3, 0x91, 0x91, 0x89, 0x89, 0xC3, 0xFF, // B0 + 0xFF, 0xE3, 0xC3, 0xF3, 0xF3, 0xF3, 0xC1, 0xFF, // B1 + 0xFF, 0xC3, 0x99, 0xF9, 0xC3, 0x9F, 0x81, 0xFF, // B2 + 0xFF, 0xC3, 0x99, 0xF3, 0xF9, 0x99, 0xC3, 0xFF, // B3 + 0xFF, 0xC3, 0x93, 0x33, 0x01, 0xF3, 0xF3, 0xFF, // B4 + 0xFF, 0x81, 0x9F, 0x83, 0xF9, 0x99, 0xC3, 0xFF, // B5 + 0xFF, 0xC3, 0x9F, 0x83, 0x99, 0x99, 0xC3, 0xFF, // B6 + 0xFF, 0x81, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0xFF, // B7 + 0xFF, 0xC3, 0x99, 0xC3, 0x99, 0x99, 0xC3, 0xFF, // B8 + 0xFF, 0xC3, 0x99, 0x99, 0xC1, 0xF9, 0xC3, 0xFF, // B9 + 0xFF, 0xFF, 0xE7, 0xE7, 0xFF, 0xE7, 0xE7, 0xFF, // BA + 0xFF, 0xFF, 0xE7, 0xFF, 0xE7, 0xE7, 0xCF, 0xFF, // BB + 0xFF, 0xFF, 0xE7, 0xCF, 0x9F, 0xCF, 0xE7, 0xFF, // BC + 0xFF, 0xFF, 0xFF, 0xC1, 0xFF, 0xC1, 0xFF, 0xFF, // BD + 0xFF, 0xFF, 0xCF, 0xE7, 0xF3, 0xE7, 0xCF, 0xFF, // BE + 0xFF, 0xC3, 0x99, 0xF9, 0xE3, 0xE7, 0xFF, 0xE7, // BF + 0xC3, 0xBD, 0x7E, 0xCA, 0xB6, 0xB6, 0xB6, 0xC9, // C0 + 0xFF, 0xC3, 0x99, 0x99, 0x81, 0x99, 0x99, 0xFF, // C1 + 0xFF, 0x83, 0x99, 0x83, 0x99, 0x99, 0x83, 0xFF, // C2 + 0xFF, 0xC3, 0x99, 0x9F, 0x9F, 0x99, 0xC3, 0xFF, // C3 + 0xFF, 0x83, 0x99, 0x99, 0x99, 0x99, 0x83, 0xFF, // C4 + 0xFF, 0x81, 0x9F, 0x83, 0x9F, 0x9F, 0x81, 0xFF, // C5 + 0xFF, 0x81, 0x9F, 0x83, 0x9F, 0x9F, 0x9F, 0xFF, // C6 + 0xFF, 0xC3, 0x99, 0x9F, 0x91, 0x99, 0xC3, 0xFF, // C7 + 0xFF, 0x99, 0x99, 0x81, 0x99, 0x99, 0x99, 0xFF, // C8 + 0xFF, 0xC3, 0xE7, 0xE7, 0xE7, 0xE7, 0xC3, 0xFF, // C9 + 0xFF, 0xE1, 0xF3, 0xF3, 0xF3, 0x93, 0xC7, 0xFF, // CA + 0xFF, 0x99, 0x93, 0x87, 0x93, 0x99, 0x9C, 0xFF, // CB + 0xFF, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x81, 0xFF, // CC + 0xFF, 0x9C, 0x88, 0x94, 0x9C, 0x9C, 0x9C, 0xFF, // CD + 0xFF, 0x9C, 0x8C, 0x94, 0x98, 0x9C, 0x9C, 0xFF, // CE + 0xFF, 0xC3, 0x99, 0x99, 0x99, 0x99, 0xC3, 0xFF, // CF + 0xFF, 0x83, 0x99, 0x83, 0x9F, 0x9F, 0x9F, 0xFF, // D0 + 0xFF, 0xC3, 0x99, 0x99, 0x91, 0x99, 0xC5, 0xFE, // D1 + 0xFF, 0x83, 0x99, 0x83, 0x93, 0x99, 0x9C, 0xFF, // D2 + 0xFF, 0xC3, 0x9F, 0xC3, 0xF9, 0x99, 0xC3, 0xFF, // D3 + 0xFF, 0x81, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, // D4 + 0xFF, 0x99, 0x99, 0x99, 0x99, 0x99, 0xC3, 0xFF, // D5 + 0xFF, 0x99, 0x99, 0x99, 0x99, 0xC3, 0xE7, 0xFF, // D6 + 0xFF, 0x9C, 0x9C, 0x94, 0x94, 0x80, 0xC9, 0xFF, // D7 + 0xFF, 0x99, 0xC3, 0xE7, 0xE7, 0xC3, 0x99, 0xFF, // D8 + 0xFF, 0x99, 0xC3, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, // D9 + 0xFF, 0x81, 0xF3, 0xE7, 0xCF, 0x9F, 0x81, 0xFF, // DA + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // DB + 0xFF, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, // DC + 0xFF, 0x81, 0xF9, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, // DD + 0xFF, 0xFF, 0xFF, 0xF7, 0xE3, 0xC9, 0xFF, 0xFF, // DE + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // DF + 0x81, 0x7E, 0x66, 0x5E, 0x5E, 0x66, 0x7E, 0x81, // E0 + 0xFF, 0xFF, 0xC3, 0x99, 0x99, 0x99, 0xC4, 0xFF, // E1 + 0xFF, 0x9F, 0x9F, 0x87, 0x93, 0x93, 0x87, 0xFF, // E2 + 0xFF, 0xFF, 0xC3, 0x99, 0x9F, 0x99, 0xC3, 0xFF, // E3 + 0xFF, 0xF9, 0xF9, 0xE1, 0xC9, 0xC9, 0xE1, 0xFF, // E4 + 0xFF, 0xFF, 0xC7, 0x93, 0x83, 0x9F, 0xC7, 0xFF, // E5 + 0xFF, 0xE1, 0xE7, 0x81, 0xE7, 0xE7, 0xE7, 0xFF, // E6 + 0xFF, 0xFF, 0xC3, 0x99, 0x99, 0xC0, 0xF9, 0xC3, // E7 + 0xFF, 0x9F, 0x9F, 0x93, 0x89, 0x99, 0x99, 0xFF, // E8 + 0xFF, 0xE7, 0xFF, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, // E9 + 0xFF, 0xE7, 0xFF, 0xC7, 0xE7, 0xE7, 0xE7, 0xCF, // EA + 0xFF, 0x9F, 0x99, 0x93, 0x87, 0x93, 0x99, 0xFF, // EB + 0xFF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xE7, 0xFF, // EC + 0xFF, 0xFF, 0xC9, 0x80, 0x94, 0x9C, 0x9C, 0xFF, // ED + 0xFF, 0xFF, 0x83, 0x99, 0x99, 0x99, 0x99, 0xFF, // EE + 0xFF, 0xFF, 0xC3, 0x99, 0x99, 0x99, 0xC3, 0xFF, // EF + 0xFF, 0xFF, 0x83, 0x99, 0x99, 0x83, 0x9F, 0x9F, // F0 + 0xFF, 0xFF, 0xC3, 0x99, 0x99, 0xC1, 0xF9, 0xF9, // F1 + 0xFF, 0xFF, 0xC9, 0xC7, 0xCF, 0xCF, 0xCF, 0xFF, // F2 + 0xFF, 0xFF, 0xE3, 0xCF, 0xE3, 0xF9, 0xC3, 0xFF, // F3 + 0xFF, 0xE7, 0xE7, 0xC3, 0xE7, 0xE7, 0xF3, 0xFF, // F4 + 0xFF, 0xFF, 0x99, 0x99, 0x99, 0x99, 0xC3, 0xFF, // F5 + 0xFF, 0xFF, 0x99, 0x99, 0xC3, 0xC3, 0xE7, 0xFF, // F6 + 0xFF, 0xFF, 0x9C, 0x9C, 0x94, 0x80, 0xC9, 0xFF, // F7 + 0xFF, 0xFF, 0x99, 0xC3, 0xE7, 0xC3, 0x99, 0xFF, // F8 + 0xFF, 0xFF, 0x99, 0xC3, 0xE7, 0xCF, 0x9F, 0xFF, // F9 + 0xFF, 0xFF, 0x81, 0xF3, 0xE7, 0xCF, 0x81, 0xFF, // FA + 0x99, 0xFF, 0xC3, 0x99, 0x99, 0x99, 0xC4, 0xFF, // FB + 0x99, 0xFF, 0xC3, 0x99, 0x99, 0x99, 0xC3, 0xFF, // FC + 0x99, 0xFF, 0x99, 0x99, 0x99, 0x99, 0xC3, 0xFF, // FD + 0xFF, 0xC7, 0x93, 0x87, 0x93, 0x87, 0x9F, 0x9F, // FE + 0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, // FF +}; +static const uint8_t _sdtx_font_kc854[2048] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, // 00 + 0x00, 0x00, 0x22, 0x72, 0x22, 0x3E, 0x00, 0x00, // 01 + 0x00, 0x00, 0x12, 0x32, 0x7E, 0x32, 0x12, 0x00, // 02 + 0x7E, 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0xB9, 0x81, // 03 + 0x55, 0xFF, 0x55, 0xFF, 0x55, 0xFF, 0x55, 0xFF, // 04 + 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, // 05 + 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, // 06 + 0x00, 0x00, 0x3C, 0x42, 0x42, 0x7E, 0x00, 0x00, // 07 + 0x00, 0x10, 0x30, 0x7E, 0x30, 0x10, 0x00, 0x00, // 08 + 0x00, 0x08, 0x0C, 0x7E, 0x0C, 0x08, 0x00, 0x00, // 09 + 0x00, 0x10, 0x10, 0x10, 0x7C, 0x38, 0x10, 0x00, // 0A + 0x08, 0x1C, 0x3E, 0x08, 0x08, 0x08, 0x08, 0x00, // 0B + 0x38, 0x30, 0x28, 0x08, 0x08, 0x08, 0x3E, 0x00, // 0C + 0x00, 0x00, 0x12, 0x32, 0x7E, 0x30, 0x10, 0x00, // 0D + 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, // 0E + 0x3E, 0x7C, 0x7C, 0x3E, 0x3E, 0x7C, 0xF8, 0xF8, // 0F + 0x38, 0x30, 0x28, 0x04, 0x04, 0x04, 0x04, 0x00, // 10 + 0x7F, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x08, 0x00, // 11 + 0x00, 0x08, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x7F, // 12 + 0x7E, 0x81, 0x9D, 0xA1, 0xB9, 0x85, 0x85, 0xB9, // 13 + 0x00, 0x3C, 0x42, 0x5A, 0x5A, 0x42, 0x3C, 0x00, // 14 + 0x88, 0x44, 0x22, 0x11, 0x88, 0x44, 0x22, 0x11, // 15 + 0x00, 0x7F, 0x22, 0x72, 0x27, 0x22, 0x7F, 0x00, // 16 + 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, // 17 + 0x00, 0x01, 0x09, 0x0D, 0x7F, 0x0D, 0x09, 0x01, // 18 + 0x00, 0x90, 0xB0, 0xFE, 0xB0, 0x90, 0x00, 0x00, // 19 + 0x00, 0x08, 0x7C, 0x06, 0x7C, 0x08, 0x00, 0x00, // 1A + 0xCC, 0xCC, 0x33, 0x33, 0xCC, 0xCC, 0x33, 0x33, // 1B + 0x7E, 0x81, 0xA1, 0xA1, 0xA1, 0xA1, 0xBD, 0x81, // 1C + 0x7E, 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0xA5, 0x81, // 1D + 0x7E, 0x81, 0x99, 0xA1, 0xA1, 0xA1, 0x99, 0x81, // 1E + 0x00, 0x10, 0x3E, 0x60, 0x3E, 0x10, 0x00, 0x00, // 1F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 20 + 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x30, 0x00, // 21 + 0x77, 0x33, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, // 22 + 0x36, 0x36, 0xFE, 0x6C, 0xFE, 0xD8, 0xD8, 0x00, // 23 + 0x18, 0x3E, 0x6C, 0x3E, 0x1B, 0x1B, 0x7E, 0x18, // 24 + 0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00, // 25 + 0x38, 0x6C, 0x38, 0x76, 0xDC, 0xCC, 0x76, 0x00, // 26 + 0x1C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, // 27 + 0x18, 0x30, 0x60, 0x60, 0x60, 0x30, 0x18, 0x00, // 28 + 0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, 0x00, // 29 + 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00, // 2A + 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x00, 0x00, // 2B + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0C, 0x18, // 2C + 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, // 2D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, // 2E + 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, // 2F + 0x7C, 0xC6, 0xCE, 0xDE, 0xF6, 0xE6, 0x7C, 0x00, // 30 + 0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0xFC, 0x00, // 31 + 0x78, 0xCC, 0x0C, 0x38, 0x60, 0xCC, 0xFC, 0x00, // 32 + 0xFC, 0x18, 0x30, 0x78, 0x0C, 0xCC, 0x78, 0x00, // 33 + 0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x1E, 0x00, // 34 + 0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, 0x78, 0x00, // 35 + 0x38, 0x60, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00, // 36 + 0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00, // 37 + 0x78, 0xCC, 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00, // 38 + 0x78, 0xCC, 0xCC, 0x7C, 0x0C, 0x18, 0x70, 0x00, // 39 + 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, // 3A + 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, // 3B + 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00, // 3C + 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, // 3D + 0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60, 0x00, // 3E + 0x78, 0xCC, 0x0C, 0x18, 0x30, 0x00, 0x30, 0x00, // 3F + 0x7C, 0xC6, 0xDE, 0xDE, 0xDE, 0xC0, 0x78, 0x00, // 40 + 0x30, 0x78, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0x00, // 41 + 0xFC, 0x66, 0x66, 0x7C, 0x66, 0x66, 0xFC, 0x00, // 42 + 0x3C, 0x66, 0xC0, 0xC0, 0xC0, 0x66, 0x3C, 0x00, // 43 + 0xF8, 0x6C, 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00, // 44 + 0xFE, 0x62, 0x68, 0x78, 0x68, 0x62, 0xFE, 0x00, // 45 + 0xFE, 0x62, 0x68, 0x78, 0x68, 0x60, 0xF0, 0x00, // 46 + 0x3C, 0x66, 0xC0, 0xC0, 0xCE, 0x66, 0x3C, 0x00, // 47 + 0xCC, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0xCC, 0x00, // 48 + 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00, // 49 + 0x1E, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00, // 4A + 0xE6, 0x66, 0x6C, 0x70, 0x6C, 0x66, 0xE6, 0x00, // 4B + 0xF0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00, // 4C + 0xC6, 0xEE, 0xFE, 0xD6, 0xC6, 0xC6, 0xC6, 0x00, // 4D + 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00, // 4E + 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x00, // 4F + 0xFC, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00, // 50 + 0x78, 0xCC, 0xCC, 0xCC, 0xDC, 0x78, 0x1C, 0x00, // 51 + 0xFC, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0xE6, 0x00, // 52 + 0x7C, 0xC6, 0xF0, 0x3C, 0x0E, 0xC6, 0x7C, 0x00, // 53 + 0xFC, 0xB4, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00, // 54 + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00, // 55 + 0xCC, 0xCC, 0xCC, 0x78, 0x78, 0x30, 0x30, 0x00, // 56 + 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00, // 57 + 0xC6, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0xC6, 0x00, // 58 + 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x78, 0x00, // 59 + 0xFE, 0xC6, 0x8C, 0x18, 0x32, 0x66, 0xFE, 0x00, // 5A + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 5B + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, // 5C + 0x00, 0xFE, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, // 5D + 0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00, // 5E + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 5F + 0x3C, 0x42, 0x99, 0xA1, 0xA1, 0x99, 0x42, 0x3C, // 60 + 0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00, // 61 + 0xE0, 0x60, 0x7C, 0x66, 0x66, 0x66, 0xDC, 0x00, // 62 + 0x00, 0x00, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x00, // 63 + 0x1C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, // 64 + 0x00, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00, // 65 + 0x38, 0x6C, 0x60, 0xF0, 0x60, 0x60, 0xF0, 0x00, // 66 + 0x00, 0x00, 0x76, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8, // 67 + 0xE0, 0x60, 0x6C, 0x76, 0x66, 0x66, 0xE6, 0x00, // 68 + 0x30, 0x00, 0x70, 0x30, 0x30, 0x30, 0xFC, 0x00, // 69 + 0x0C, 0x00, 0x1C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, // 6A + 0xE0, 0x60, 0x66, 0x6C, 0x78, 0x6C, 0xE6, 0x00, // 6B + 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFC, 0x00, // 6C + 0x00, 0x00, 0xCC, 0xFE, 0xFE, 0xD6, 0xC6, 0x00, // 6D + 0x00, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, // 6E + 0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00, // 6F + 0x00, 0x00, 0xDC, 0x66, 0x66, 0x7C, 0x60, 0xF0, // 70 + 0x00, 0x00, 0x76, 0xCC, 0xCC, 0x7C, 0x0C, 0x1E, // 71 + 0x00, 0x00, 0xDC, 0x76, 0x66, 0x60, 0xF0, 0x00, // 72 + 0x00, 0x00, 0x7C, 0xC0, 0x78, 0x0C, 0xF8, 0x00, // 73 + 0x10, 0x30, 0x7C, 0x30, 0x30, 0x34, 0x18, 0x00, // 74 + 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, // 75 + 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00, // 76 + 0x00, 0x00, 0xC6, 0xD6, 0xFE, 0xFE, 0x6C, 0x00, // 77 + 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00, // 78 + 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8, // 79 + 0x00, 0x00, 0xFC, 0x98, 0x30, 0x64, 0xFC, 0x00, // 7A + 0x6C, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00, // 7B + 0xCC, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00, // 7C + 0xCC, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, // 7D + 0x3C, 0x66, 0x66, 0x6C, 0x66, 0x66, 0x6C, 0xF0, // 7E + 0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF, // 7F + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, // 80 + 0xFF, 0xFF, 0xDD, 0x8D, 0xDD, 0xC1, 0xFF, 0xFF, // 81 + 0xFF, 0xFF, 0xED, 0xCD, 0x81, 0xCD, 0xED, 0xFF, // 82 + 0x81, 0x7E, 0x46, 0x5A, 0x46, 0x5A, 0x46, 0x7E, // 83 + 0xAA, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0xAA, 0x00, // 84 + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, // 85 + 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, // 86 + 0xFF, 0xFF, 0xC3, 0xBD, 0xBD, 0x81, 0xFF, 0xFF, // 87 + 0xFF, 0xEF, 0xCF, 0x81, 0xCF, 0xEF, 0xFF, 0xFF, // 88 + 0xFF, 0xF7, 0xF3, 0x81, 0xF3, 0xF7, 0xFF, 0xFF, // 89 + 0xFF, 0xEF, 0xEF, 0xEF, 0x83, 0xC7, 0xEF, 0xFF, // 8A + 0xF7, 0xE3, 0xC1, 0xF7, 0xF7, 0xF7, 0xF7, 0xFF, // 8B + 0xC7, 0xCF, 0xD7, 0xF7, 0xF7, 0xF7, 0xC1, 0xFF, // 8C + 0xFF, 0xFF, 0xED, 0xCD, 0x81, 0xCF, 0xEF, 0xFF, // 8D + 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, // 8E + 0xC1, 0x83, 0x83, 0xC1, 0xC1, 0x83, 0x07, 0x07, // 8F + 0xC7, 0xCF, 0xD7, 0xFB, 0xFB, 0xFB, 0xFB, 0xFF, // 90 + 0x80, 0xF7, 0xE3, 0xD5, 0xF7, 0xF7, 0xF7, 0xFF, // 91 + 0xFF, 0xF7, 0xF7, 0xF7, 0xD5, 0xE3, 0xF7, 0x80, // 92 + 0x81, 0x7E, 0x62, 0x5E, 0x46, 0x7A, 0x7A, 0x46, // 93 + 0xFF, 0xC3, 0xBD, 0xA5, 0xA5, 0xBD, 0xC3, 0xFF, // 94 + 0x77, 0xBB, 0xDD, 0xEE, 0x77, 0xBB, 0xDD, 0xEE, // 95 + 0xFF, 0x80, 0xDD, 0x8D, 0xD8, 0xDD, 0x80, 0xFF, // 96 + 0xEE, 0xDD, 0xBB, 0x77, 0xEE, 0xDD, 0xBB, 0x77, // 97 + 0xFF, 0xFE, 0xF6, 0xF2, 0x80, 0xF2, 0xF6, 0xFE, // 98 + 0xFF, 0x6F, 0x4F, 0x01, 0x4F, 0x6F, 0xFF, 0xFF, // 99 + 0xFF, 0xF7, 0x83, 0xF9, 0x83, 0xF7, 0xFF, 0xFF, // 9A + 0x33, 0x33, 0xCC, 0xCC, 0x33, 0x33, 0xCC, 0xCC, // 9B + 0x81, 0x7E, 0x5E, 0x5E, 0x5E, 0x5E, 0x42, 0x7E, // 9C + 0x81, 0x7E, 0x46, 0x5A, 0x46, 0x5A, 0x5A, 0x7E, // 9D + 0x81, 0x7E, 0x66, 0x5E, 0x5E, 0x5E, 0x66, 0x7E, // 9E + 0xFF, 0xEF, 0xC1, 0x9F, 0xC1, 0xEF, 0xFF, 0xFF, // 9F + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // A0 + 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xFF, 0xCF, 0xFF, // A1 + 0x88, 0xCC, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // A2 + 0xC9, 0xC9, 0x01, 0x93, 0x01, 0x27, 0x27, 0xFF, // A3 + 0xE7, 0xC1, 0x93, 0xC1, 0xE4, 0xE4, 0x81, 0xE7, // A4 + 0xFF, 0x39, 0x33, 0xE7, 0xCF, 0x99, 0x39, 0xFF, // A5 + 0xC7, 0x93, 0xC7, 0x89, 0x23, 0x33, 0x89, 0xFF, // A6 + 0xE3, 0xF3, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // A7 + 0xE7, 0xCF, 0x9F, 0x9F, 0x9F, 0xCF, 0xE7, 0xFF, // A8 + 0x9F, 0xCF, 0xE7, 0xE7, 0xE7, 0xCF, 0x9F, 0xFF, // A9 + 0xFF, 0x99, 0xC3, 0x00, 0xC3, 0x99, 0xFF, 0xFF, // AA + 0xFF, 0xCF, 0xCF, 0x03, 0xCF, 0xCF, 0xFF, 0xFF, // AB + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xF3, 0xE7, // AC + 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, // AD + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xCF, 0xFF, // AE + 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3F, 0x7F, 0xFF, // AF + 0x83, 0x39, 0x31, 0x21, 0x09, 0x19, 0x83, 0xFF, // B0 + 0xCF, 0x8F, 0xCF, 0xCF, 0xCF, 0xCF, 0x03, 0xFF, // B1 + 0x87, 0x33, 0xF3, 0xC7, 0x9F, 0x33, 0x03, 0xFF, // B2 + 0x03, 0xE7, 0xCF, 0x87, 0xF3, 0x33, 0x87, 0xFF, // B3 + 0xE3, 0xC3, 0x93, 0x33, 0x01, 0xF3, 0xE1, 0xFF, // B4 + 0x03, 0x3F, 0x07, 0xF3, 0xF3, 0x33, 0x87, 0xFF, // B5 + 0xC7, 0x9F, 0x3F, 0x07, 0x33, 0x33, 0x87, 0xFF, // B6 + 0x03, 0x33, 0xF3, 0xE7, 0xCF, 0xCF, 0xCF, 0xFF, // B7 + 0x87, 0x33, 0x33, 0x87, 0x33, 0x33, 0x87, 0xFF, // B8 + 0x87, 0x33, 0x33, 0x83, 0xF3, 0xE7, 0x8F, 0xFF, // B9 + 0xFF, 0xFF, 0xCF, 0xCF, 0xFF, 0xCF, 0xCF, 0xFF, // BA + 0xFF, 0xFF, 0xCF, 0xCF, 0xFF, 0xCF, 0xCF, 0x9F, // BB + 0xE7, 0xCF, 0x9F, 0x3F, 0x9F, 0xCF, 0xE7, 0xFF, // BC + 0xFF, 0xFF, 0x03, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, // BD + 0x9F, 0xCF, 0xE7, 0xF3, 0xE7, 0xCF, 0x9F, 0xFF, // BE + 0x87, 0x33, 0xF3, 0xE7, 0xCF, 0xFF, 0xCF, 0xFF, // BF + 0x83, 0x39, 0x21, 0x21, 0x21, 0x3F, 0x87, 0xFF, // C0 + 0xCF, 0x87, 0x33, 0x33, 0x03, 0x33, 0x33, 0xFF, // C1 + 0x03, 0x99, 0x99, 0x83, 0x99, 0x99, 0x03, 0xFF, // C2 + 0xC3, 0x99, 0x3F, 0x3F, 0x3F, 0x99, 0xC3, 0xFF, // C3 + 0x07, 0x93, 0x99, 0x99, 0x99, 0x93, 0x07, 0xFF, // C4 + 0x01, 0x9D, 0x97, 0x87, 0x97, 0x9D, 0x01, 0xFF, // C5 + 0x01, 0x9D, 0x97, 0x87, 0x97, 0x9F, 0x0F, 0xFF, // C6 + 0xC3, 0x99, 0x3F, 0x3F, 0x31, 0x99, 0xC3, 0xFF, // C7 + 0x33, 0x33, 0x33, 0x03, 0x33, 0x33, 0x33, 0xFF, // C8 + 0x87, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0x87, 0xFF, // C9 + 0xE1, 0xF3, 0xF3, 0xF3, 0x33, 0x33, 0x87, 0xFF, // CA + 0x19, 0x99, 0x93, 0x8F, 0x93, 0x99, 0x19, 0xFF, // CB + 0x0F, 0x9F, 0x9F, 0x9F, 0x9D, 0x99, 0x01, 0xFF, // CC + 0x39, 0x11, 0x01, 0x29, 0x39, 0x39, 0x39, 0xFF, // CD + 0x39, 0x19, 0x09, 0x21, 0x31, 0x39, 0x39, 0xFF, // CE + 0xC7, 0x93, 0x39, 0x39, 0x39, 0x93, 0xC7, 0xFF, // CF + 0x03, 0x99, 0x99, 0x83, 0x9F, 0x9F, 0x0F, 0xFF, // D0 + 0x87, 0x33, 0x33, 0x33, 0x23, 0x87, 0xE3, 0xFF, // D1 + 0x03, 0x99, 0x99, 0x83, 0x93, 0x99, 0x19, 0xFF, // D2 + 0x83, 0x39, 0x0F, 0xC3, 0xF1, 0x39, 0x83, 0xFF, // D3 + 0x03, 0x4B, 0xCF, 0xCF, 0xCF, 0xCF, 0x87, 0xFF, // D4 + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x87, 0xFF, // D5 + 0x33, 0x33, 0x33, 0x87, 0x87, 0xCF, 0xCF, 0xFF, // D6 + 0x39, 0x39, 0x39, 0x29, 0x01, 0x11, 0x39, 0xFF, // D7 + 0x39, 0x39, 0x93, 0xC7, 0x93, 0x39, 0x39, 0xFF, // D8 + 0x33, 0x33, 0x33, 0x87, 0xCF, 0xCF, 0x87, 0xFF, // D9 + 0x01, 0x39, 0x73, 0xE7, 0xCD, 0x99, 0x01, 0xFF, // DA + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // DB + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, // DC + 0xFF, 0x01, 0xF9, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, // DD + 0xEF, 0xC7, 0x93, 0x39, 0xFF, 0xFF, 0xFF, 0xFF, // DE + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // DF + 0xC3, 0xBD, 0x66, 0x5E, 0x5E, 0x66, 0xBD, 0xC3, // E0 + 0xFF, 0xFF, 0x87, 0xF3, 0x83, 0x33, 0x89, 0xFF, // E1 + 0x1F, 0x9F, 0x83, 0x99, 0x99, 0x99, 0x23, 0xFF, // E2 + 0xFF, 0xFF, 0x87, 0x33, 0x3F, 0x33, 0x87, 0xFF, // E3 + 0xE3, 0xF3, 0x83, 0x33, 0x33, 0x33, 0x89, 0xFF, // E4 + 0xFF, 0xFF, 0x87, 0x33, 0x03, 0x3F, 0x87, 0xFF, // E5 + 0xC7, 0x93, 0x9F, 0x0F, 0x9F, 0x9F, 0x0F, 0xFF, // E6 + 0xFF, 0xFF, 0x89, 0x33, 0x33, 0x83, 0xF3, 0x07, // E7 + 0x1F, 0x9F, 0x93, 0x89, 0x99, 0x99, 0x19, 0xFF, // E8 + 0xCF, 0xFF, 0x8F, 0xCF, 0xCF, 0xCF, 0x03, 0xFF, // E9 + 0xF3, 0xFF, 0xE3, 0xF3, 0xF3, 0x33, 0x33, 0x87, // EA + 0x1F, 0x9F, 0x99, 0x93, 0x87, 0x93, 0x19, 0xFF, // EB + 0x8F, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0x03, 0xFF, // EC + 0xFF, 0xFF, 0x33, 0x01, 0x01, 0x29, 0x39, 0xFF, // ED + 0xFF, 0xFF, 0x07, 0x33, 0x33, 0x33, 0x33, 0xFF, // EE + 0xFF, 0xFF, 0x87, 0x33, 0x33, 0x33, 0x87, 0xFF, // EF + 0xFF, 0xFF, 0x23, 0x99, 0x99, 0x83, 0x9F, 0x0F, // F0 + 0xFF, 0xFF, 0x89, 0x33, 0x33, 0x83, 0xF3, 0xE1, // F1 + 0xFF, 0xFF, 0x23, 0x89, 0x99, 0x9F, 0x0F, 0xFF, // F2 + 0xFF, 0xFF, 0x83, 0x3F, 0x87, 0xF3, 0x07, 0xFF, // F3 + 0xEF, 0xCF, 0x83, 0xCF, 0xCF, 0xCB, 0xE7, 0xFF, // F4 + 0xFF, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x89, 0xFF, // F5 + 0xFF, 0xFF, 0x33, 0x33, 0x33, 0x87, 0xCF, 0xFF, // F6 + 0xFF, 0xFF, 0x39, 0x29, 0x01, 0x01, 0x93, 0xFF, // F7 + 0xFF, 0xFF, 0x39, 0x93, 0xC7, 0x93, 0x39, 0xFF, // F8 + 0xFF, 0xFF, 0x33, 0x33, 0x33, 0x83, 0xF3, 0x07, // F9 + 0xFF, 0xFF, 0x03, 0x67, 0xCF, 0x9B, 0x03, 0xFF, // FA + 0x93, 0xFF, 0x87, 0xF3, 0x83, 0x33, 0x89, 0xFF, // FB + 0x33, 0xFF, 0x87, 0x33, 0x33, 0x33, 0x87, 0xFF, // FC + 0x33, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x89, 0xFF, // FD + 0xC3, 0x99, 0x99, 0x93, 0x99, 0x99, 0x93, 0x0F, // FE + 0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, // FF +}; +static const uint8_t _sdtx_font_z1013[2048] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 00 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 01 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 02 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 03 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 04 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 05 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 06 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 07 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 08 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 09 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0A + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0B + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0C + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0D + 0x00, 0x00, 0x18, 0x24, 0x24, 0x18, 0x24, 0x42, // 0E + 0xDB, 0xA5, 0x81, 0xFF, 0x24, 0x24, 0x24, 0x42, // 0F + 0x08, 0x34, 0x42, 0x81, 0x91, 0x69, 0x09, 0x31, // 10 + 0x42, 0x7E, 0x81, 0xFF, 0x00, 0x00, 0x00, 0x00, // 11 + 0x18, 0x24, 0x42, 0x99, 0xBD, 0x99, 0x42, 0x24, // 12 + 0x7E, 0x42, 0x99, 0xE7, 0x00, 0x00, 0x00, 0x00, // 13 + 0x18, 0xDB, 0xC3, 0x18, 0x99, 0xE7, 0x81, 0x42, // 14 + 0x18, 0x24, 0x18, 0xC3, 0xBD, 0x81, 0x81, 0x42, // 15 + 0x24, 0x7E, 0x81, 0xFF, 0x00, 0x00, 0x00, 0x00, // 16 + 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x3C, 0x7E, // 17 + 0xDB, 0xFF, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C, 0x7E, // 18 + 0x08, 0x3C, 0x7E, 0xFF, 0xFF, 0x6F, 0x0F, 0x3F, // 19 + 0x7E, 0x7E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, // 1A + 0x18, 0x3C, 0x7E, 0xE7, 0xC3, 0xE7, 0x7E, 0x3C, // 1B + 0x7E, 0x7E, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, // 1C + 0x18, 0xDB, 0xC3, 0x18, 0x99, 0xFF, 0xFF, 0x7E, // 1D + 0x18, 0x3C, 0x18, 0xC3, 0xFF, 0xFF, 0xFF, 0x7E, // 1E + 0x3C, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, // 1F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 20 + 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, // 21 + 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, // 22 + 0x24, 0x7E, 0x24, 0x24, 0x24, 0x7E, 0x24, 0x00, // 23 + 0x10, 0x3C, 0x50, 0x38, 0x14, 0x78, 0x10, 0x00, // 24 + 0x60, 0x64, 0x08, 0x10, 0x20, 0x4C, 0x0C, 0x00, // 25 + 0x10, 0x28, 0x28, 0x30, 0x54, 0x48, 0x34, 0x00, // 26 + 0x10, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 27 + 0x08, 0x10, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00, // 28 + 0x20, 0x10, 0x08, 0x08, 0x08, 0x10, 0x20, 0x00, // 29 + 0x00, 0x10, 0x54, 0x38, 0x54, 0x10, 0x00, 0x00, // 2A + 0x00, 0x10, 0x10, 0x7C, 0x10, 0x10, 0x00, 0x00, // 2B + 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x20, 0x00, // 2C + 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, // 2D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, // 2E + 0x00, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, // 2F + 0x38, 0x44, 0x44, 0x54, 0x44, 0x44, 0x38, 0x00, // 30 + 0x10, 0x30, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00, // 31 + 0x38, 0x44, 0x04, 0x08, 0x10, 0x20, 0x7C, 0x00, // 32 + 0x7C, 0x08, 0x10, 0x08, 0x04, 0x44, 0x38, 0x00, // 33 + 0x08, 0x18, 0x28, 0x48, 0x7C, 0x08, 0x08, 0x00, // 34 + 0x7C, 0x40, 0x78, 0x04, 0x04, 0x44, 0x38, 0x00, // 35 + 0x18, 0x20, 0x40, 0x78, 0x44, 0x44, 0x38, 0x00, // 36 + 0x7C, 0x04, 0x08, 0x10, 0x20, 0x20, 0x20, 0x00, // 37 + 0x38, 0x44, 0x44, 0x38, 0x44, 0x44, 0x38, 0x00, // 38 + 0x38, 0x44, 0x44, 0x3C, 0x04, 0x08, 0x30, 0x00, // 39 + 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x00, // 3A + 0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x20, 0x00, // 3B + 0x08, 0x10, 0x20, 0x40, 0x20, 0x10, 0x08, 0x00, // 3C + 0x00, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x00, 0x00, // 3D + 0x20, 0x10, 0x08, 0x04, 0x08, 0x10, 0x20, 0x00, // 3E + 0x38, 0x44, 0x04, 0x08, 0x10, 0x00, 0x10, 0x00, // 3F + 0x38, 0x44, 0x5C, 0x54, 0x5C, 0x40, 0x3C, 0x00, // 40 + 0x38, 0x44, 0x44, 0x7C, 0x44, 0x44, 0x44, 0x00, // 41 + 0x78, 0x24, 0x24, 0x38, 0x24, 0x24, 0x78, 0x00, // 42 + 0x38, 0x44, 0x40, 0x40, 0x40, 0x44, 0x38, 0x00, // 43 + 0x78, 0x24, 0x24, 0x24, 0x24, 0x24, 0x78, 0x00, // 44 + 0x7C, 0x40, 0x40, 0x78, 0x40, 0x40, 0x7C, 0x00, // 45 + 0x7C, 0x40, 0x40, 0x78, 0x40, 0x40, 0x40, 0x00, // 46 + 0x38, 0x44, 0x40, 0x40, 0x4C, 0x44, 0x3C, 0x00, // 47 + 0x44, 0x44, 0x44, 0x7C, 0x44, 0x44, 0x44, 0x00, // 48 + 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00, // 49 + 0x1C, 0x08, 0x08, 0x08, 0x08, 0x48, 0x30, 0x00, // 4A + 0x44, 0x48, 0x50, 0x60, 0x50, 0x48, 0x44, 0x00, // 4B + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7C, 0x00, // 4C + 0x44, 0x6C, 0x54, 0x54, 0x44, 0x44, 0x44, 0x00, // 4D + 0x44, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x44, 0x00, // 4E + 0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00, // 4F + 0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x40, 0x00, // 50 + 0x38, 0x44, 0x44, 0x44, 0x54, 0x48, 0x34, 0x00, // 51 + 0x78, 0x44, 0x44, 0x78, 0x50, 0x48, 0x44, 0x00, // 52 + 0x3C, 0x40, 0x40, 0x38, 0x04, 0x04, 0x78, 0x00, // 53 + 0x7C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, // 54 + 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00, // 55 + 0x44, 0x44, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00, // 56 + 0x44, 0x44, 0x44, 0x54, 0x54, 0x6C, 0x44, 0x00, // 57 + 0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x44, 0x00, // 58 + 0x44, 0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x00, // 59 + 0x7C, 0x04, 0x08, 0x10, 0x20, 0x40, 0x7C, 0x00, // 5A + 0x38, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38, 0x00, // 5B + 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, // 5C + 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x38, 0x00, // 5D + 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, // 5E + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, // 5F + 0x00, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, // 60 + 0x00, 0x00, 0x34, 0x4C, 0x44, 0x44, 0x3A, 0x00, // 61 + 0x40, 0x40, 0x58, 0x64, 0x44, 0x44, 0x78, 0x00, // 62 + 0x00, 0x00, 0x38, 0x44, 0x40, 0x44, 0x38, 0x00, // 63 + 0x04, 0x04, 0x34, 0x4C, 0x44, 0x44, 0x3A, 0x00, // 64 + 0x00, 0x00, 0x38, 0x44, 0x7C, 0x40, 0x38, 0x00, // 65 + 0x08, 0x10, 0x38, 0x10, 0x10, 0x10, 0x10, 0x00, // 66 + 0x00, 0x00, 0x34, 0x4C, 0x44, 0x3C, 0x04, 0x38, // 67 + 0x40, 0x40, 0x58, 0x64, 0x44, 0x44, 0x44, 0x00, // 68 + 0x10, 0x00, 0x10, 0x10, 0x10, 0x10, 0x08, 0x00, // 69 + 0x10, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x20, // 6A + 0x40, 0x40, 0x48, 0x50, 0x70, 0x48, 0x44, 0x00, // 6B + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x00, // 6C + 0x00, 0x00, 0x68, 0x54, 0x54, 0x54, 0x54, 0x00, // 6D + 0x00, 0x00, 0x58, 0x64, 0x44, 0x44, 0x44, 0x00, // 6E + 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, // 6F + 0x00, 0x00, 0x58, 0x64, 0x44, 0x78, 0x40, 0x40, // 70 + 0x00, 0x00, 0x34, 0x4C, 0x44, 0x3C, 0x04, 0x04, // 71 + 0x00, 0x00, 0x58, 0x64, 0x40, 0x40, 0x40, 0x00, // 72 + 0x00, 0x00, 0x38, 0x40, 0x38, 0x04, 0x78, 0x00, // 73 + 0x10, 0x10, 0x38, 0x10, 0x10, 0x10, 0x08, 0x00, // 74 + 0x00, 0x00, 0x44, 0x44, 0x44, 0x4C, 0x34, 0x00, // 75 + 0x00, 0x00, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00, // 76 + 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, 0x28, 0x00, // 77 + 0x00, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, // 78 + 0x00, 0x00, 0x44, 0x44, 0x44, 0x3C, 0x04, 0x38, // 79 + 0x00, 0x00, 0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00, // 7A + 0x08, 0x10, 0x10, 0x20, 0x10, 0x10, 0x08, 0x00, // 7B + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, // 7C + 0x20, 0x10, 0x10, 0x08, 0x10, 0x10, 0x20, 0x00, // 7D + 0x00, 0x00, 0x00, 0x32, 0x4C, 0x00, 0x00, 0x00, // 7E + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 7F + 0xC0, 0x20, 0x10, 0x10, 0x10, 0x10, 0x20, 0xC0, // 80 + 0x03, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x03, // 81 + 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // 82 + 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x81, 0x81, // 83 + 0x10, 0x10, 0x20, 0xC0, 0x00, 0x00, 0x00, 0x00, // 84 + 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, // 85 + 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x08, // 86 + 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20, 0x10, 0x10, // 87 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, // 88 + 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 89 + 0x00, 0x10, 0x28, 0x44, 0x82, 0x44, 0x28, 0x10, // 8A + 0xFF, 0xEF, 0xC7, 0x83, 0x01, 0x83, 0xC7, 0xEF, // 8B + 0x3C, 0x42, 0x81, 0x81, 0x81, 0x81, 0x42, 0x3C, // 8C + 0xC3, 0x81, 0x00, 0x00, 0x00, 0x00, 0x81, 0xC3, // 8D + 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, // 8E + 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, // 8F + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, // 90 + 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, // 91 + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0C, 0x30, 0xC0, // 92 + 0x03, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00, // 93 + 0x03, 0x0C, 0x30, 0xC0, 0xC0, 0x30, 0x0C, 0x03, // 94 + 0x00, 0x00, 0x00, 0x00, 0xC0, 0x30, 0x0C, 0x03, // 95 + 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, // 96 + 0xC0, 0x30, 0x0C, 0x03, 0x03, 0x0C, 0x30, 0xC0, // 97 + 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, // 98 + 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, // 99 + 0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, // 9A + 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, // 9B + 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, // 9C + 0x18, 0x18, 0x24, 0x24, 0x42, 0x42, 0x81, 0x81, // 9D + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 9E + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 9F + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, // A0 + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // A1 + 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x00, 0x00, 0x00, // A2 + 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x18, 0x18, 0x18, // A3 + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x18, 0x18, // A4 + 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x18, 0x18, 0x18, // A5 + 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, // A6 + 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x00, 0x00, 0x00, // A7 + 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x18, 0x18, 0x18, // A8 + 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x18, 0x18, 0x18, // A9 + 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x00, 0x00, 0x00, // AA + 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x18, 0x07, // AB + 0x01, 0x01, 0x01, 0x02, 0x02, 0x04, 0x18, 0xE0, // AC + 0xE0, 0x18, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, // AD + 0x07, 0x18, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, // AE + 0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, // AF + 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, // B0 + 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, // B1 + 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, // B2 + 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, // B3 + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, // B4 + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // B5 + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, // B6 + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, // B7 + 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, // B8 + 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, // B9 + 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, // BA + 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, // BB + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, // BC + 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, // BD + 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // BE + 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // BF + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // C0 + 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // C1 + 0xFF, 0x80, 0x80, 0x9C, 0x9C, 0x9C, 0x80, 0x80, // C2 + 0xFF, 0xFF, 0xFF, 0xE3, 0xE3, 0xE3, 0xFF, 0xFF, // C3 + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x3C, 0x7E, 0xFF, // C4 + 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, // C5 + 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, // C6 + 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, // C7 + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, // C8 + 0x00, 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, // C9 + 0x38, 0x10, 0x92, 0xFE, 0x92, 0x10, 0x38, 0x7C, // CA + 0x00, 0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, // CB + 0x10, 0x38, 0x7C, 0xFE, 0xFE, 0x7C, 0x10, 0x7C, // CC + 0xE7, 0xE7, 0x42, 0xFF, 0xFF, 0x42, 0xE7, 0xE7, // CD + 0xDB, 0xFF, 0xDB, 0x18, 0x18, 0xDB, 0xFF, 0xDB, // CE + 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, // CF + 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // D0 + 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // D1 + 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // D2 + 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // D3 + 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, // D4 + 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, // D5 + 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, // D6 + 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, // D7 + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, // D8 + 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, // D9 + 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x00, // DA + 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, // DB + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, // DC + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, // DD + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, // DE + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, // DF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, // E0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, // E1 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, // E2 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, // E3 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, // E4 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, // E5 + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, // E6 + 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // E7 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // E8 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, // E9 + 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, // EA + 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // EB + 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // EC + 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ED + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // EE + 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // EF + 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // F0 + 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // F1 + 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, // F2 + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, // F3 + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // F4 + 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // F5 + 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, // F6 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, // F7 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // F8 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, // F9 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, // FA + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, // FB + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // FC + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // FD + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // FE + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // FF +}; +static const uint8_t _sdtx_font_cpc[2048] = { + 0xFF, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, // 00 + 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // 01 + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, // 02 + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, // 03 + 0x0C, 0x18, 0x30, 0x7E, 0x0C, 0x18, 0x30, 0x00, // 04 + 0xFF, 0xC3, 0xE7, 0xDB, 0xDB, 0xE7, 0xC3, 0xFF, // 05 + 0x00, 0x01, 0x03, 0x06, 0xCC, 0x78, 0x30, 0x00, // 06 + 0x3C, 0x66, 0xC3, 0xC3, 0xFF, 0x24, 0xE7, 0x00, // 07 + 0x00, 0x00, 0x30, 0x60, 0xFF, 0x60, 0x30, 0x00, // 08 + 0x00, 0x00, 0x0C, 0x06, 0xFF, 0x06, 0x0C, 0x00, // 09 + 0x18, 0x18, 0x18, 0x18, 0xDB, 0x7E, 0x3C, 0x18, // 0A + 0x18, 0x3C, 0x7E, 0xDB, 0x18, 0x18, 0x18, 0x18, // 0B + 0x18, 0x5A, 0x3C, 0x99, 0xDB, 0x7E, 0x3C, 0x18, // 0C + 0x00, 0x03, 0x33, 0x63, 0xFE, 0x60, 0x30, 0x00, // 0D + 0x3C, 0x66, 0xFF, 0xDB, 0xDB, 0xFF, 0x66, 0x3C, // 0E + 0x3C, 0x66, 0xC3, 0xDB, 0xDB, 0xC3, 0x66, 0x3C, // 0F + 0xFF, 0xC3, 0xC3, 0xFF, 0xC3, 0xC3, 0xC3, 0xFF, // 10 + 0x3C, 0x7E, 0xDB, 0xDB, 0xDF, 0xC3, 0x66, 0x3C, // 11 + 0x3C, 0x66, 0xC3, 0xDF, 0xDB, 0xDB, 0x7E, 0x3C, // 12 + 0x3C, 0x66, 0xC3, 0xFB, 0xDB, 0xDB, 0x7E, 0x3C, // 13 + 0x3C, 0x7E, 0xDB, 0xDB, 0xFB, 0xC3, 0x66, 0x3C, // 14 + 0x00, 0x01, 0x33, 0x1E, 0xCE, 0x7B, 0x31, 0x00, // 15 + 0x7E, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xE7, // 16 + 0x03, 0x03, 0x03, 0xFF, 0x03, 0x03, 0x03, 0x00, // 17 + 0xFF, 0x66, 0x3C, 0x18, 0x18, 0x3C, 0x66, 0xFF, // 18 + 0x18, 0x18, 0x3C, 0x3C, 0x3C, 0x3C, 0x18, 0x18, // 19 + 0x3C, 0x66, 0x66, 0x30, 0x18, 0x00, 0x18, 0x00, // 1A + 0x3C, 0x66, 0xC3, 0xFF, 0xC3, 0xC3, 0x66, 0x3C, // 1B + 0xFF, 0xDB, 0xDB, 0xDB, 0xFB, 0xC3, 0xC3, 0xFF, // 1C + 0xFF, 0xC3, 0xC3, 0xFB, 0xDB, 0xDB, 0xDB, 0xFF, // 1D + 0xFF, 0xC3, 0xC3, 0xDF, 0xDB, 0xDB, 0xDB, 0xFF, // 1E + 0xFF, 0xDB, 0xDB, 0xDB, 0xDF, 0xC3, 0xC3, 0xFF, // 1F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 20 + 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x00, // 21 + 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, // 22 + 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00, // 23 + 0x18, 0x3E, 0x58, 0x3C, 0x1A, 0x7C, 0x18, 0x00, // 24 + 0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00, // 25 + 0x38, 0x6C, 0x38, 0x76, 0xDC, 0xCC, 0x76, 0x00, // 26 + 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, // 27 + 0x0C, 0x18, 0x30, 0x30, 0x30, 0x18, 0x0C, 0x00, // 28 + 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x18, 0x30, 0x00, // 29 + 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00, // 2A + 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, // 2B + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, // 2C + 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, // 2D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, // 2E + 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, // 2F + 0x7C, 0xC6, 0xCE, 0xD6, 0xE6, 0xC6, 0x7C, 0x00, // 30 + 0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, // 31 + 0x3C, 0x66, 0x06, 0x3C, 0x60, 0x66, 0x7E, 0x00, // 32 + 0x3C, 0x66, 0x06, 0x1C, 0x06, 0x66, 0x3C, 0x00, // 33 + 0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x1E, 0x00, // 34 + 0x7E, 0x62, 0x60, 0x7C, 0x06, 0x66, 0x3C, 0x00, // 35 + 0x3C, 0x66, 0x60, 0x7C, 0x66, 0x66, 0x3C, 0x00, // 36 + 0x7E, 0x66, 0x06, 0x0C, 0x18, 0x18, 0x18, 0x00, // 37 + 0x3C, 0x66, 0x66, 0x3C, 0x66, 0x66, 0x3C, 0x00, // 38 + 0x3C, 0x66, 0x66, 0x3E, 0x06, 0x66, 0x3C, 0x00, // 39 + 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, // 3A + 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x30, // 3B + 0x0C, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0C, 0x00, // 3C + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, // 3D + 0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60, 0x00, // 3E + 0x3C, 0x66, 0x66, 0x0C, 0x18, 0x00, 0x18, 0x00, // 3F + 0x7C, 0xC6, 0xDE, 0xDE, 0xDE, 0xC0, 0x7C, 0x00, // 40 + 0x18, 0x3C, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x00, // 41 + 0xFC, 0x66, 0x66, 0x7C, 0x66, 0x66, 0xFC, 0x00, // 42 + 0x3C, 0x66, 0xC0, 0xC0, 0xC0, 0x66, 0x3C, 0x00, // 43 + 0xF8, 0x6C, 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00, // 44 + 0xFE, 0x62, 0x68, 0x78, 0x68, 0x62, 0xFE, 0x00, // 45 + 0xFE, 0x62, 0x68, 0x78, 0x68, 0x60, 0xF0, 0x00, // 46 + 0x3C, 0x66, 0xC0, 0xC0, 0xCE, 0x66, 0x3E, 0x00, // 47 + 0x66, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00, // 48 + 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, // 49 + 0x1E, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00, // 4A + 0xE6, 0x66, 0x6C, 0x78, 0x6C, 0x66, 0xE6, 0x00, // 4B + 0xF0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00, // 4C + 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00, // 4D + 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00, // 4E + 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x00, // 4F + 0xFC, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00, // 50 + 0x38, 0x6C, 0xC6, 0xC6, 0xDA, 0xCC, 0x76, 0x00, // 51 + 0xFC, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0xE6, 0x00, // 52 + 0x3C, 0x66, 0x60, 0x3C, 0x06, 0x66, 0x3C, 0x00, // 53 + 0x7E, 0x5A, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, // 54 + 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, // 55 + 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00, // 56 + 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00, // 57 + 0xC6, 0x6C, 0x38, 0x38, 0x6C, 0xC6, 0xC6, 0x00, // 58 + 0x66, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x3C, 0x00, // 59 + 0xFE, 0xC6, 0x8C, 0x18, 0x32, 0x66, 0xFE, 0x00, // 5A + 0x3C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3C, 0x00, // 5B + 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00, // 5C + 0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0x00, // 5D + 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x00, // 5E + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 5F + 0x30, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00, // 61 + 0xE0, 0x60, 0x7C, 0x66, 0x66, 0x66, 0xDC, 0x00, // 62 + 0x00, 0x00, 0x3C, 0x66, 0x60, 0x66, 0x3C, 0x00, // 63 + 0x1C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, // 64 + 0x00, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, // 65 + 0x1C, 0x36, 0x30, 0x78, 0x30, 0x30, 0x78, 0x00, // 66 + 0x00, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x7C, // 67 + 0xE0, 0x60, 0x6C, 0x76, 0x66, 0x66, 0xE6, 0x00, // 68 + 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3C, 0x00, // 69 + 0x06, 0x00, 0x0E, 0x06, 0x06, 0x66, 0x66, 0x3C, // 6A + 0xE0, 0x60, 0x66, 0x6C, 0x78, 0x6C, 0xE6, 0x00, // 6B + 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, // 6C + 0x00, 0x00, 0x6C, 0xFE, 0xD6, 0xD6, 0xC6, 0x00, // 6D + 0x00, 0x00, 0xDC, 0x66, 0x66, 0x66, 0x66, 0x00, // 6E + 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, // 6F + 0x00, 0x00, 0xDC, 0x66, 0x66, 0x7C, 0x60, 0xF0, // 70 + 0x00, 0x00, 0x76, 0xCC, 0xCC, 0x7C, 0x0C, 0x1E, // 71 + 0x00, 0x00, 0xDC, 0x76, 0x60, 0x60, 0xF0, 0x00, // 72 + 0x00, 0x00, 0x3C, 0x60, 0x3C, 0x06, 0x7C, 0x00, // 73 + 0x30, 0x30, 0x7C, 0x30, 0x30, 0x36, 0x1C, 0x00, // 74 + 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, // 75 + 0x00, 0x00, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00, // 76 + 0x00, 0x00, 0xC6, 0xD6, 0xD6, 0xFE, 0x6C, 0x00, // 77 + 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00, // 78 + 0x00, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x06, 0x7C, // 79 + 0x00, 0x00, 0x7E, 0x4C, 0x18, 0x32, 0x7E, 0x00, // 7A + 0x0E, 0x18, 0x18, 0x70, 0x18, 0x18, 0x0E, 0x00, // 7B + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, // 7C + 0x70, 0x18, 0x18, 0x0E, 0x18, 0x18, 0x70, 0x00, // 7D + 0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 7E + 0xCC, 0x33, 0xCC, 0x33, 0xCC, 0x33, 0xCC, 0x33, // 7F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, // 81 + 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, // 82 + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, // 83 + 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, // 84 + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, // 85 + 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, // 86 + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, // 87 + 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, // 88 + 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, // 89 + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // 8A + 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, // 8B + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, // 8C + 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, // 8D + 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, // 8E + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 8F + 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, // 90 + 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, // 91 + 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00, // 92 + 0x18, 0x18, 0x18, 0x1F, 0x0F, 0x00, 0x00, 0x00, // 93 + 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, // 94 + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // 95 + 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x18, 0x18, 0x18, // 96 + 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x18, 0x18, 0x18, // 97 + 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, // 98 + 0x18, 0x18, 0x18, 0xF8, 0xF0, 0x00, 0x00, 0x00, // 99 + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, // 9A + 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x00, 0x00, 0x00, // 9B + 0x00, 0x00, 0x00, 0xF0, 0xF8, 0x18, 0x18, 0x18, // 9C + 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x18, 0x18, 0x18, // 9D + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x18, 0x18, // 9E + 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, // 9F + 0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00, // A0 + 0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, // A1 + 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // A2 + 0x3C, 0x66, 0x60, 0xF8, 0x60, 0x66, 0xFE, 0x00, // A3 + 0x38, 0x44, 0xBA, 0xA2, 0xBA, 0x44, 0x38, 0x00, // A4 + 0x7E, 0xF4, 0xF4, 0x74, 0x34, 0x34, 0x34, 0x00, // A5 + 0x1E, 0x30, 0x38, 0x6C, 0x38, 0x18, 0xF0, 0x00, // A6 + 0x18, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, // A7 + 0x40, 0xC0, 0x44, 0x4C, 0x54, 0x1E, 0x04, 0x00, // A8 + 0x40, 0xC0, 0x4C, 0x52, 0x44, 0x08, 0x1E, 0x00, // A9 + 0xE0, 0x10, 0x62, 0x16, 0xEA, 0x0F, 0x02, 0x00, // AA + 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x7E, 0x00, // AB + 0x18, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x18, 0x00, // AC + 0x00, 0x00, 0x00, 0x7E, 0x06, 0x06, 0x00, 0x00, // AD + 0x18, 0x00, 0x18, 0x30, 0x66, 0x66, 0x3C, 0x00, // AE + 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, // AF + 0x00, 0x00, 0x73, 0xDE, 0xCC, 0xDE, 0x73, 0x00, // B0 + 0x7C, 0xC6, 0xC6, 0xFC, 0xC6, 0xC6, 0xF8, 0xC0, // B1 + 0x00, 0x66, 0x66, 0x3C, 0x66, 0x66, 0x3C, 0x00, // B2 + 0x3C, 0x60, 0x60, 0x3C, 0x66, 0x66, 0x3C, 0x00, // B3 + 0x00, 0x00, 0x1E, 0x30, 0x7C, 0x30, 0x1E, 0x00, // B4 + 0x38, 0x6C, 0xC6, 0xFE, 0xC6, 0x6C, 0x38, 0x00, // B5 + 0x00, 0xC0, 0x60, 0x30, 0x38, 0x6C, 0xC6, 0x00, // B6 + 0x00, 0x00, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, // B7 + 0x00, 0x00, 0x00, 0xFE, 0x6C, 0x6C, 0x6C, 0x00, // B8 + 0x00, 0x00, 0x00, 0x7E, 0xD8, 0xD8, 0x70, 0x00, // B9 + 0x03, 0x06, 0x0C, 0x3C, 0x66, 0x3C, 0x60, 0xC0, // BA + 0x03, 0x06, 0x0C, 0x66, 0x66, 0x3C, 0x60, 0xC0, // BB + 0x00, 0xE6, 0x3C, 0x18, 0x38, 0x6C, 0xC7, 0x00, // BC + 0x00, 0x00, 0x66, 0xC3, 0xDB, 0xDB, 0x7E, 0x00, // BD + 0xFE, 0xC6, 0x60, 0x30, 0x60, 0xC6, 0xFE, 0x00, // BE + 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0x6C, 0xEE, 0x00, // BF + 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, // C0 + 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, // C1 + 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x18, // C2 + 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, // C3 + 0x18, 0x3C, 0x66, 0xC3, 0x81, 0x00, 0x00, 0x00, // C4 + 0x18, 0x0C, 0x06, 0x03, 0x03, 0x06, 0x0C, 0x18, // C5 + 0x00, 0x00, 0x00, 0x81, 0xC3, 0x66, 0x3C, 0x18, // C6 + 0x18, 0x30, 0x60, 0xC0, 0xC0, 0x60, 0x30, 0x18, // C7 + 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, // C8 + 0x18, 0x0C, 0x06, 0x83, 0xC1, 0x60, 0x30, 0x18, // C9 + 0x18, 0x3C, 0x66, 0xC3, 0xC3, 0x66, 0x3C, 0x18, // CA + 0xC3, 0xE7, 0x7E, 0x3C, 0x3C, 0x7E, 0xE7, 0xC3, // CB + 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, // CC + 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, // CD + 0xCC, 0xCC, 0x33, 0x33, 0xCC, 0xCC, 0x33, 0x33, // CE + 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, // CF + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // D0 + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // D1 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, // D2 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // D3 + 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, // D4 + 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // D5 + 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // D6 + 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, // D7 + 0xAA, 0x55, 0xAA, 0x55, 0x00, 0x00, 0x00, 0x00, // D8 + 0x0A, 0x05, 0x0A, 0x05, 0x0A, 0x05, 0x0A, 0x05, // D9 + 0x00, 0x00, 0x00, 0x00, 0xAA, 0x55, 0xAA, 0x55, // DA + 0xA0, 0x50, 0xA0, 0x50, 0xA0, 0x50, 0xA0, 0x50, // DB + 0xAA, 0x54, 0xA8, 0x50, 0xA0, 0x40, 0x80, 0x00, // DC + 0xAA, 0x55, 0x2A, 0x15, 0x0A, 0x05, 0x02, 0x01, // DD + 0x01, 0x02, 0x05, 0x0A, 0x15, 0x2A, 0x55, 0xAA, // DE + 0x00, 0x80, 0x40, 0xA0, 0x50, 0xA8, 0x54, 0xAA, // DF + 0x7E, 0xFF, 0x99, 0xFF, 0xBD, 0xC3, 0xFF, 0x7E, // E0 + 0x7E, 0xFF, 0x99, 0xFF, 0xC3, 0xBD, 0xFF, 0x7E, // E1 + 0x38, 0x38, 0xFE, 0xFE, 0xFE, 0x10, 0x38, 0x00, // E2 + 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00, // E3 + 0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, // E4 + 0x10, 0x38, 0x7C, 0xFE, 0xFE, 0x10, 0x38, 0x00, // E5 + 0x00, 0x3C, 0x66, 0xC3, 0xC3, 0x66, 0x3C, 0x00, // E6 + 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0x7E, 0x3C, 0x00, // E7 + 0x00, 0x7E, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x00, // E8 + 0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, // E9 + 0x0F, 0x07, 0x0D, 0x78, 0xCC, 0xCC, 0xCC, 0x78, // EA + 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18, // EB + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0x7C, 0x38, // EC + 0x18, 0x1C, 0x1E, 0x1B, 0x18, 0x78, 0xF8, 0x70, // ED + 0x99, 0x5A, 0x24, 0xC3, 0xC3, 0x24, 0x5A, 0x99, // EE + 0x10, 0x38, 0x38, 0x38, 0x38, 0x38, 0x7C, 0xD6, // EF + 0x18, 0x3C, 0x7E, 0xFF, 0x18, 0x18, 0x18, 0x18, // F0 + 0x18, 0x18, 0x18, 0x18, 0xFF, 0x7E, 0x3C, 0x18, // F1 + 0x10, 0x30, 0x70, 0xFF, 0xFF, 0x70, 0x30, 0x10, // F2 + 0x08, 0x0C, 0x0E, 0xFF, 0xFF, 0x0E, 0x0C, 0x08, // F3 + 0x00, 0x00, 0x18, 0x3C, 0x7E, 0xFF, 0xFF, 0x00, // F4 + 0x00, 0x00, 0xFF, 0xFF, 0x7E, 0x3C, 0x18, 0x00, // F5 + 0x80, 0xE0, 0xF8, 0xFE, 0xF8, 0xE0, 0x80, 0x00, // F6 + 0x02, 0x0E, 0x3E, 0xFE, 0x3E, 0x0E, 0x02, 0x00, // F7 + 0x38, 0x38, 0x92, 0x7C, 0x10, 0x28, 0x28, 0x28, // F8 + 0x38, 0x38, 0x10, 0xFE, 0x10, 0x28, 0x44, 0x82, // F9 + 0x38, 0x38, 0x12, 0x7C, 0x90, 0x28, 0x24, 0x22, // FA + 0x38, 0x38, 0x90, 0x7C, 0x12, 0x28, 0x48, 0x88, // FB + 0x00, 0x3C, 0x18, 0x3C, 0x3C, 0x3C, 0x18, 0x00, // FC + 0x3C, 0xFF, 0xFF, 0x18, 0x0C, 0x18, 0x30, 0x18, // FD + 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x7E, 0x3C, 0x18, // FE + 0x00, 0x24, 0x66, 0xFF, 0x66, 0x24, 0x00, 0x00, // FF +}; +static const uint8_t _sdtx_font_c64[2048] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 00 + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, // 01 + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, // 02 + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 03 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 04 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // 05 + 0xCC, 0xCC, 0x33, 0x33, 0xCC, 0xCC, 0x33, 0x33, // 06 + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // 07 + 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0x33, 0x33, // 08 + 0xCC, 0x99, 0x33, 0x66, 0xCC, 0x99, 0x33, 0x66, // 09 + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // 0A + 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x18, 0x18, 0x18, // 0B + 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, // 0C + 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x00, 0x00, 0x00, // 0D + 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x18, 0x18, 0x18, // 0E + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, // 0F + 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x18, 0x18, 0x18, // 10 + 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x00, 0x00, 0x00, // 11 + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x18, 0x18, // 12 + 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x18, 0x18, 0x18, // 13 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // 14 + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, // 15 + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, // 16 + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 17 + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, // 18 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, // 19 + 0x01, 0x03, 0x06, 0x6C, 0x78, 0x70, 0x60, 0x00, // 1A + 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, // 1B + 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, // 1C + 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x00, 0x00, 0x00, // 1D + 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, // 1E + 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, // 1F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 20 + 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x00, // 21 + 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, // 22 + 0x66, 0x66, 0xFF, 0x66, 0xFF, 0x66, 0x66, 0x00, // 23 + 0x18, 0x3E, 0x60, 0x3C, 0x06, 0x7C, 0x18, 0x00, // 24 + 0x62, 0x66, 0x0C, 0x18, 0x30, 0x66, 0x46, 0x00, // 25 + 0x3C, 0x66, 0x3C, 0x38, 0x67, 0x66, 0x3F, 0x00, // 26 + 0x06, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, // 27 + 0x0C, 0x18, 0x30, 0x30, 0x30, 0x18, 0x0C, 0x00, // 28 + 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x18, 0x30, 0x00, // 29 + 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00, // 2A + 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, // 2B + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, // 2C + 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, // 2D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, // 2E + 0x00, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x00, // 2F + 0x3C, 0x66, 0x6E, 0x76, 0x66, 0x66, 0x3C, 0x00, // 30 + 0x18, 0x18, 0x38, 0x18, 0x18, 0x18, 0x7E, 0x00, // 31 + 0x3C, 0x66, 0x06, 0x0C, 0x30, 0x60, 0x7E, 0x00, // 32 + 0x3C, 0x66, 0x06, 0x1C, 0x06, 0x66, 0x3C, 0x00, // 33 + 0x06, 0x0E, 0x1E, 0x66, 0x7F, 0x06, 0x06, 0x00, // 34 + 0x7E, 0x60, 0x7C, 0x06, 0x06, 0x66, 0x3C, 0x00, // 35 + 0x3C, 0x66, 0x60, 0x7C, 0x66, 0x66, 0x3C, 0x00, // 36 + 0x7E, 0x66, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x00, // 37 + 0x3C, 0x66, 0x66, 0x3C, 0x66, 0x66, 0x3C, 0x00, // 38 + 0x3C, 0x66, 0x66, 0x3E, 0x06, 0x66, 0x3C, 0x00, // 39 + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, // 3A + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30, // 3B + 0x0E, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0E, 0x00, // 3C + 0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00, // 3D + 0x70, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x70, 0x00, // 3E + 0x3C, 0x66, 0x06, 0x0C, 0x18, 0x00, 0x18, 0x00, // 3F + 0x3C, 0x66, 0x6E, 0x6E, 0x60, 0x62, 0x3C, 0x00, // 40 + 0x18, 0x3C, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00, // 41 + 0x7C, 0x66, 0x66, 0x7C, 0x66, 0x66, 0x7C, 0x00, // 42 + 0x3C, 0x66, 0x60, 0x60, 0x60, 0x66, 0x3C, 0x00, // 43 + 0x78, 0x6C, 0x66, 0x66, 0x66, 0x6C, 0x78, 0x00, // 44 + 0x7E, 0x60, 0x60, 0x78, 0x60, 0x60, 0x7E, 0x00, // 45 + 0x7E, 0x60, 0x60, 0x78, 0x60, 0x60, 0x60, 0x00, // 46 + 0x3C, 0x66, 0x60, 0x6E, 0x66, 0x66, 0x3C, 0x00, // 47 + 0x66, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00, // 48 + 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, // 49 + 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x6C, 0x38, 0x00, // 4A + 0x66, 0x6C, 0x78, 0x70, 0x78, 0x6C, 0x66, 0x00, // 4B + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7E, 0x00, // 4C + 0x63, 0x77, 0x7F, 0x6B, 0x63, 0x63, 0x63, 0x00, // 4D + 0x66, 0x76, 0x7E, 0x7E, 0x6E, 0x66, 0x66, 0x00, // 4E + 0x3C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, // 4F + 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x60, 0x00, // 50 + 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x0E, 0x00, // 51 + 0x7C, 0x66, 0x66, 0x7C, 0x78, 0x6C, 0x66, 0x00, // 52 + 0x3C, 0x66, 0x60, 0x3C, 0x06, 0x66, 0x3C, 0x00, // 53 + 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, // 54 + 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, // 55 + 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00, // 56 + 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00, // 57 + 0x66, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x66, 0x00, // 58 + 0x66, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x00, // 59 + 0x7E, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x7E, 0x00, // 5A + 0x3C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3C, 0x00, // 5B + 0x0C, 0x12, 0x30, 0x7C, 0x30, 0x62, 0xFC, 0x00, // 5C + 0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0x00, // 5D + 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18, // 5E + 0x00, 0x10, 0x30, 0x7F, 0x7F, 0x30, 0x10, 0x00, // 5F + 0x3C, 0x66, 0x6E, 0x6E, 0x60, 0x62, 0x3C, 0x00, // 60 + 0x00, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, // 61 + 0x00, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x00, // 62 + 0x00, 0x00, 0x3C, 0x60, 0x60, 0x60, 0x3C, 0x00, // 63 + 0x00, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3E, 0x00, // 64 + 0x00, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, // 65 + 0x00, 0x0E, 0x18, 0x3E, 0x18, 0x18, 0x18, 0x00, // 66 + 0x00, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x7C, // 67 + 0x00, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x00, // 68 + 0x00, 0x18, 0x00, 0x38, 0x18, 0x18, 0x3C, 0x00, // 69 + 0x00, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x3C, // 6A + 0x00, 0x60, 0x60, 0x6C, 0x78, 0x6C, 0x66, 0x00, // 6B + 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, // 6C + 0x00, 0x00, 0x66, 0x7F, 0x7F, 0x6B, 0x63, 0x00, // 6D + 0x00, 0x00, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x00, // 6E + 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, // 6F + 0x00, 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, // 70 + 0x00, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x06, // 71 + 0x00, 0x00, 0x7C, 0x66, 0x60, 0x60, 0x60, 0x00, // 72 + 0x00, 0x00, 0x3E, 0x60, 0x3C, 0x06, 0x7C, 0x00, // 73 + 0x00, 0x18, 0x7E, 0x18, 0x18, 0x18, 0x0E, 0x00, // 74 + 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, // 75 + 0x00, 0x00, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00, // 76 + 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x3E, 0x36, 0x00, // 77 + 0x00, 0x00, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x00, // 78 + 0x00, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x0C, 0x78, // 79 + 0x00, 0x00, 0x7E, 0x0C, 0x18, 0x30, 0x7E, 0x00, // 7A + 0x3C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3C, 0x00, // 7B + 0x0C, 0x12, 0x30, 0x7C, 0x30, 0x62, 0xFC, 0x00, // 7C + 0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0x00, // 7D + 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18, // 7E + 0x00, 0x10, 0x30, 0x7F, 0x7F, 0x30, 0x10, 0x00, // 7F + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, // 80 + 0x08, 0x1C, 0x3E, 0x7F, 0x7F, 0x1C, 0x3E, 0x00, // 81 + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // 82 + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, // 83 + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, // 84 + 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, // 86 + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, // 87 + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, // 88 + 0x00, 0x00, 0x00, 0xE0, 0xF0, 0x38, 0x18, 0x18, // 89 + 0x18, 0x18, 0x1C, 0x0F, 0x07, 0x00, 0x00, 0x00, // 8A + 0x18, 0x18, 0x38, 0xF0, 0xE0, 0x00, 0x00, 0x00, // 8B + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, // 8C + 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, // 8D + 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, // 8E + 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // 8F + 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // 90 + 0x00, 0x3C, 0x7E, 0x7E, 0x7E, 0x7E, 0x3C, 0x00, // 91 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, // 92 + 0x36, 0x7F, 0x7F, 0x7F, 0x3E, 0x1C, 0x08, 0x00, // 93 + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, // 94 + 0x00, 0x00, 0x00, 0x07, 0x0F, 0x1C, 0x18, 0x18, // 95 + 0xC3, 0xE7, 0x7E, 0x3C, 0x3C, 0x7E, 0xE7, 0xC3, // 96 + 0x00, 0x3C, 0x7E, 0x66, 0x66, 0x7E, 0x3C, 0x00, // 97 + 0x18, 0x18, 0x66, 0x66, 0x18, 0x18, 0x3C, 0x00, // 98 + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // 99 + 0x08, 0x1C, 0x3E, 0x7F, 0x3E, 0x1C, 0x08, 0x00, // 9A + 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, // 9B + 0xC0, 0xC0, 0x30, 0x30, 0xC0, 0xC0, 0x30, 0x30, // 9C + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // 9D + 0x00, 0x00, 0x03, 0x3E, 0x76, 0x36, 0x36, 0x00, // 9E + 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // 9F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // A0 + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, // A1 + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, // A2 + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // A3 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // A4 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // A5 + 0xCC, 0xCC, 0x33, 0x33, 0xCC, 0xCC, 0x33, 0x33, // A6 + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // A7 + 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0x33, 0x33, // A8 + 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, // A9 + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // AA + 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x18, 0x18, 0x18, // AB + 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, // AC + 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x00, 0x00, 0x00, // AD + 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x18, 0x18, 0x18, // AE + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, // AF + 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x18, 0x18, 0x18, // B0 + 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x00, 0x00, 0x00, // B1 + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x18, 0x18, // B2 + 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x18, 0x18, 0x18, // B3 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // B4 + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, // B5 + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, // B6 + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // B7 + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, // B8 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, // B9 + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, // BA + 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, // BB + 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, // BC + 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x00, 0x00, 0x00, // BD + 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, // BE + 0xF0, 0xF0, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x0F, // BF + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, // C0 + 0xF7, 0xE3, 0xC1, 0x80, 0x80, 0xE3, 0xC1, 0xFF, // C1 + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, // C2 + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, // C3 + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, // C4 + 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // C5 + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, // C6 + 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, // C7 + 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, // C8 + 0xFF, 0xFF, 0xFF, 0x1F, 0x0F, 0xC7, 0xE7, 0xE7, // C9 + 0xE7, 0xE7, 0xE3, 0xF0, 0xF8, 0xFF, 0xFF, 0xFF, // CA + 0xE7, 0xE7, 0xC7, 0x0F, 0x1F, 0xFF, 0xFF, 0xFF, // CB + 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x00, 0x00, // CC + 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, // CD + 0xFC, 0xF8, 0xF1, 0xE3, 0xC7, 0x8F, 0x1F, 0x3F, // CE + 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, // CF + 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, // D0 + 0xFF, 0xC3, 0x81, 0x81, 0x81, 0x81, 0xC3, 0xFF, // D1 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, // D2 + 0xC9, 0x80, 0x80, 0x80, 0xC1, 0xE3, 0xF7, 0xFF, // D3 + 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, // D4 + 0xFF, 0xFF, 0xFF, 0xF8, 0xF0, 0xE3, 0xE7, 0xE7, // D5 + 0x3C, 0x18, 0x81, 0xC3, 0xC3, 0x81, 0x18, 0x3C, // D6 + 0xFF, 0xC3, 0x81, 0x99, 0x99, 0x81, 0xC3, 0xFF, // D7 + 0xE7, 0xE7, 0x99, 0x99, 0xE7, 0xE7, 0xC3, 0xFF, // D8 + 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, // D9 + 0xF7, 0xE3, 0xC1, 0x80, 0xC1, 0xE3, 0xF7, 0xFF, // DA + 0xE7, 0xE7, 0xE7, 0x00, 0x00, 0xE7, 0xE7, 0xE7, // DB + 0x3F, 0x3F, 0xCF, 0xCF, 0x3F, 0x3F, 0xCF, 0xCF, // DC + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, // DD + 0xFF, 0xFF, 0xFC, 0xC1, 0x89, 0xC9, 0xC9, 0xFF, // DE + 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, // DF + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // E0 + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // E1 + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, // E2 + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // E3 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, // E4 + 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, // E5 + 0x33, 0x33, 0xCC, 0xCC, 0x33, 0x33, 0xCC, 0xCC, // E6 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, // E7 + 0xFF, 0xFF, 0xFF, 0xFF, 0x33, 0x33, 0xCC, 0xCC, // E8 + 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, // E9 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, // EA + 0xE7, 0xE7, 0xE7, 0xE0, 0xE0, 0xE7, 0xE7, 0xE7, // EB + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, // EC + 0xE7, 0xE7, 0xE7, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, // ED + 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0xE7, 0xE7, 0xE7, // EE + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, // EF + 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE7, 0xE7, 0xE7, // F0 + 0xE7, 0xE7, 0xE7, 0x00, 0x00, 0xFF, 0xFF, 0xFF, // F1 + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xE7, 0xE7, 0xE7, // F2 + 0xE7, 0xE7, 0xE7, 0x07, 0x07, 0xE7, 0xE7, 0xE7, // F3 + 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, // F4 + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, // F5 + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, // F6 + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // F7 + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // F8 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, // F9 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, // FA + 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, // FB + 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, // FC + 0xE7, 0xE7, 0xE7, 0x07, 0x07, 0xFF, 0xFF, 0xFF, // FD + 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, // FE + 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, // FF +}; +static const uint8_t _sdtx_font_oric[2048] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 00 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 01 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 02 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 03 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 04 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 05 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 06 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 07 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 08 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 09 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0A + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0B + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0C + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0E + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 10 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 11 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 12 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 13 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 14 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 15 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 16 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 17 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 18 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 19 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 1A + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 1B + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 1C + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 1D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 1E + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 1F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 20 + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, 0x00, // 21 + 0x14, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, // 22 + 0x14, 0x14, 0x3E, 0x14, 0x3E, 0x14, 0x14, 0x00, // 23 + 0x08, 0x1E, 0x28, 0x1C, 0x0A, 0x3C, 0x08, 0x00, // 24 + 0x30, 0x32, 0x04, 0x08, 0x10, 0x26, 0x06, 0x00, // 25 + 0x10, 0x28, 0x28, 0x10, 0x2A, 0x24, 0x1A, 0x00, // 26 + 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // 27 + 0x08, 0x10, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00, // 28 + 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08, 0x00, // 29 + 0x08, 0x2A, 0x1C, 0x08, 0x1C, 0x2A, 0x08, 0x00, // 2A + 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x00, // 2B + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, // 2C + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, // 2D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // 2E + 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, // 2F + 0x1C, 0x22, 0x26, 0x2A, 0x32, 0x22, 0x1C, 0x00, // 30 + 0x08, 0x18, 0x08, 0x08, 0x08, 0x08, 0x1C, 0x00, // 31 + 0x1C, 0x22, 0x02, 0x04, 0x08, 0x10, 0x3E, 0x00, // 32 + 0x3E, 0x02, 0x04, 0x0C, 0x02, 0x22, 0x1C, 0x00, // 33 + 0x04, 0x0C, 0x14, 0x24, 0x3E, 0x04, 0x04, 0x00, // 34 + 0x3E, 0x20, 0x3C, 0x02, 0x02, 0x22, 0x1C, 0x00, // 35 + 0x0C, 0x10, 0x20, 0x3C, 0x22, 0x22, 0x1C, 0x00, // 36 + 0x3E, 0x02, 0x04, 0x08, 0x10, 0x10, 0x10, 0x00, // 37 + 0x1C, 0x22, 0x22, 0x1C, 0x22, 0x22, 0x1C, 0x00, // 38 + 0x1C, 0x22, 0x22, 0x1E, 0x02, 0x04, 0x18, 0x00, // 39 + 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, // 3A + 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x08, 0x10, // 3B + 0x04, 0x08, 0x10, 0x20, 0x10, 0x08, 0x04, 0x00, // 3C + 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x00, 0x00, // 3D + 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x00, // 3E + 0x1C, 0x22, 0x04, 0x08, 0x08, 0x00, 0x08, 0x00, // 3F + 0x1C, 0x22, 0x2A, 0x2E, 0x2C, 0x20, 0x1E, 0x00, // 40 + 0x08, 0x14, 0x22, 0x22, 0x3E, 0x22, 0x22, 0x00, // 41 + 0x3C, 0x22, 0x22, 0x3C, 0x22, 0x22, 0x3C, 0x00, // 42 + 0x1C, 0x22, 0x20, 0x20, 0x20, 0x22, 0x1C, 0x00, // 43 + 0x3C, 0x22, 0x22, 0x22, 0x22, 0x22, 0x3C, 0x00, // 44 + 0x3E, 0x20, 0x20, 0x3C, 0x20, 0x20, 0x3E, 0x00, // 45 + 0x3E, 0x20, 0x20, 0x3C, 0x20, 0x20, 0x20, 0x00, // 46 + 0x1E, 0x20, 0x20, 0x20, 0x26, 0x22, 0x1E, 0x00, // 47 + 0x22, 0x22, 0x22, 0x3E, 0x22, 0x22, 0x22, 0x00, // 48 + 0x1C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x1C, 0x00, // 49 + 0x02, 0x02, 0x02, 0x02, 0x02, 0x22, 0x1C, 0x00, // 4A + 0x22, 0x24, 0x28, 0x30, 0x28, 0x24, 0x22, 0x00, // 4B + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3E, 0x00, // 4C + 0x22, 0x36, 0x2A, 0x2A, 0x22, 0x22, 0x22, 0x00, // 4D + 0x22, 0x22, 0x32, 0x2A, 0x26, 0x22, 0x22, 0x00, // 4E + 0x1C, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1C, 0x00, // 4F + 0x3C, 0x22, 0x22, 0x3C, 0x20, 0x20, 0x20, 0x00, // 50 + 0x1C, 0x22, 0x22, 0x22, 0x2A, 0x24, 0x1A, 0x00, // 51 + 0x3C, 0x22, 0x22, 0x3C, 0x28, 0x24, 0x22, 0x00, // 52 + 0x1C, 0x22, 0x20, 0x1C, 0x02, 0x22, 0x1C, 0x00, // 53 + 0x3E, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // 54 + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1C, 0x00, // 55 + 0x22, 0x22, 0x22, 0x22, 0x22, 0x14, 0x08, 0x00, // 56 + 0x22, 0x22, 0x22, 0x2A, 0x2A, 0x36, 0x22, 0x00, // 57 + 0x22, 0x22, 0x14, 0x08, 0x14, 0x22, 0x22, 0x00, // 58 + 0x22, 0x22, 0x14, 0x08, 0x08, 0x08, 0x08, 0x00, // 59 + 0x3E, 0x02, 0x04, 0x08, 0x10, 0x20, 0x3E, 0x00, // 5A + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1E, 0x00, // 5B + 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x00, // 5C + 0x3C, 0x04, 0x04, 0x04, 0x04, 0x04, 0x3C, 0x00, // 5D + 0x08, 0x14, 0x2A, 0x08, 0x08, 0x08, 0x08, 0x00, // 5E + 0x0E, 0x11, 0x3C, 0x10, 0x3C, 0x11, 0x0E, 0x00, // 5F + 0x0C, 0x12, 0x2D, 0x29, 0x29, 0x2D, 0x12, 0x0C, // 60 + 0x00, 0x00, 0x1C, 0x02, 0x1E, 0x22, 0x1E, 0x00, // 61 + 0x20, 0x20, 0x3C, 0x22, 0x22, 0x22, 0x3C, 0x00, // 62 + 0x00, 0x00, 0x1E, 0x20, 0x20, 0x20, 0x1E, 0x00, // 63 + 0x02, 0x02, 0x1E, 0x22, 0x22, 0x22, 0x1E, 0x00, // 64 + 0x00, 0x00, 0x1C, 0x22, 0x3E, 0x20, 0x1E, 0x00, // 65 + 0x0C, 0x12, 0x10, 0x3C, 0x10, 0x10, 0x10, 0x00, // 66 + 0x00, 0x00, 0x1C, 0x22, 0x22, 0x1E, 0x02, 0x1C, // 67 + 0x20, 0x20, 0x3C, 0x22, 0x22, 0x22, 0x22, 0x00, // 68 + 0x08, 0x00, 0x18, 0x08, 0x08, 0x08, 0x1C, 0x00, // 69 + 0x04, 0x00, 0x0C, 0x04, 0x04, 0x04, 0x24, 0x18, // 6A + 0x20, 0x20, 0x22, 0x24, 0x38, 0x24, 0x22, 0x00, // 6B + 0x18, 0x08, 0x08, 0x08, 0x08, 0x08, 0x1C, 0x00, // 6C + 0x00, 0x00, 0x36, 0x2A, 0x2A, 0x2A, 0x22, 0x00, // 6D + 0x00, 0x00, 0x3C, 0x22, 0x22, 0x22, 0x22, 0x00, // 6E + 0x00, 0x00, 0x1C, 0x22, 0x22, 0x22, 0x1C, 0x00, // 6F + 0x00, 0x00, 0x3C, 0x22, 0x22, 0x3C, 0x20, 0x20, // 70 + 0x00, 0x00, 0x1E, 0x22, 0x22, 0x1E, 0x02, 0x02, // 71 + 0x00, 0x00, 0x2E, 0x30, 0x20, 0x20, 0x20, 0x00, // 72 + 0x00, 0x00, 0x1E, 0x20, 0x1C, 0x02, 0x3C, 0x00, // 73 + 0x10, 0x10, 0x3C, 0x10, 0x10, 0x12, 0x0C, 0x00, // 74 + 0x00, 0x00, 0x22, 0x22, 0x22, 0x26, 0x1A, 0x00, // 75 + 0x00, 0x00, 0x22, 0x22, 0x22, 0x14, 0x08, 0x00, // 76 + 0x00, 0x00, 0x22, 0x22, 0x2A, 0x2A, 0x36, 0x00, // 77 + 0x00, 0x00, 0x22, 0x14, 0x08, 0x14, 0x22, 0x00, // 78 + 0x00, 0x00, 0x22, 0x22, 0x22, 0x1E, 0x02, 0x1C, // 79 + 0x00, 0x00, 0x3E, 0x04, 0x08, 0x10, 0x3E, 0x00, // 7A + 0x0E, 0x18, 0x18, 0x30, 0x18, 0x18, 0x0E, 0x00, // 7B + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, // 7C + 0x38, 0x0C, 0x0C, 0x06, 0x0C, 0x0C, 0x38, 0x00, // 7D + 0x2A, 0x15, 0x2A, 0x15, 0x2A, 0x15, 0x2A, 0x15, // 7E + 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, // 7F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 81 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 8A + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 8B + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 8C + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 8D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 8E + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 8F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 91 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 93 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 95 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 9A + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 9B + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 9C + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 9D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 9E + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 9F + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // A0 + 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xFF, 0xF7, 0xFF, // A1 + 0xEB, 0xEB, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // A2 + 0xEB, 0xEB, 0xC1, 0xEB, 0xC1, 0xEB, 0xEB, 0xFF, // A3 + 0xF7, 0xE1, 0xD7, 0xE3, 0xF5, 0xC3, 0xF7, 0xFF, // A4 + 0xCF, 0xCD, 0xFB, 0xF7, 0xEF, 0xD9, 0xF9, 0xFF, // A5 + 0xEF, 0xD7, 0xD7, 0xEF, 0xD5, 0xDB, 0xE5, 0xFF, // A6 + 0xF7, 0xF7, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // A7 + 0xF7, 0xEF, 0xDF, 0xDF, 0xDF, 0xEF, 0xF7, 0xFF, // A8 + 0xF7, 0xFB, 0xFD, 0xFD, 0xFD, 0xFB, 0xF7, 0xFF, // A9 + 0xF7, 0xD5, 0xE3, 0xF7, 0xE3, 0xD5, 0xF7, 0xFF, // AA + 0xFF, 0xF7, 0xF7, 0xC1, 0xF7, 0xF7, 0xFF, 0xFF, // AB + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xF7, 0xEF, // AC + 0xFF, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, // AD + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, // AE + 0xFF, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xFF, 0xFF, // AF + 0xE3, 0xDD, 0xD9, 0xD5, 0xCD, 0xDD, 0xE3, 0xFF, // B0 + 0xF7, 0xE7, 0xF7, 0xF7, 0xF7, 0xF7, 0xE3, 0xFF, // B1 + 0xE3, 0xDD, 0xFD, 0xFB, 0xF7, 0xEF, 0xC1, 0xFF, // B2 + 0xC1, 0xFD, 0xFB, 0xF3, 0xFD, 0xDD, 0xE3, 0xFF, // B3 + 0xFB, 0xF3, 0xEB, 0xDB, 0xC1, 0xFB, 0xFB, 0xFF, // B4 + 0xC1, 0xDF, 0xC3, 0xFD, 0xFD, 0xDD, 0xE3, 0xFF, // B5 + 0xF3, 0xEF, 0xDF, 0xC3, 0xDD, 0xDD, 0xE3, 0xFF, // B6 + 0xC1, 0xFD, 0xFB, 0xF7, 0xEF, 0xEF, 0xEF, 0xFF, // B7 + 0xE3, 0xDD, 0xDD, 0xE3, 0xDD, 0xDD, 0xE3, 0xFF, // B8 + 0xE3, 0xDD, 0xDD, 0xE1, 0xFD, 0xFB, 0xE7, 0xFF, // B9 + 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, // BA + 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xF7, 0xF7, 0xEF, // BB + 0xFB, 0xF7, 0xEF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFF, // BC + 0xFF, 0xFF, 0xC1, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, // BD + 0xEF, 0xF7, 0xFB, 0xFD, 0xFB, 0xF7, 0xEF, 0xFF, // BE + 0xE3, 0xDD, 0xFB, 0xF7, 0xF7, 0xFF, 0xF7, 0xFF, // BF + 0xE3, 0xDD, 0xD5, 0xD1, 0xD3, 0xDF, 0xE1, 0xFF, // C0 + 0xF7, 0xEB, 0xDD, 0xDD, 0xC1, 0xDD, 0xDD, 0xFF, // C1 + 0xC3, 0xDD, 0xDD, 0xC3, 0xDD, 0xDD, 0xC3, 0xFF, // C2 + 0xE3, 0xDD, 0xDF, 0xDF, 0xDF, 0xDD, 0xE3, 0xFF, // C3 + 0xC3, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xC3, 0xFF, // C4 + 0xC1, 0xDF, 0xDF, 0xC3, 0xDF, 0xDF, 0xC1, 0xFF, // C5 + 0xC1, 0xDF, 0xDF, 0xC3, 0xDF, 0xDF, 0xDF, 0xFF, // C6 + 0xE1, 0xDF, 0xDF, 0xDF, 0xD9, 0xDD, 0xE1, 0xFF, // C7 + 0xDD, 0xDD, 0xDD, 0xC1, 0xDD, 0xDD, 0xDD, 0xFF, // C8 + 0xE3, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xE3, 0xFF, // C9 + 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xDD, 0xE3, 0xFF, // CA + 0xDD, 0xDB, 0xD7, 0xCF, 0xD7, 0xDB, 0xDD, 0xFF, // CB + 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xC1, 0xFF, // CC + 0xDD, 0xC9, 0xD5, 0xD5, 0xDD, 0xDD, 0xDD, 0xFF, // CD + 0xDD, 0xDD, 0xCD, 0xD5, 0xD9, 0xDD, 0xDD, 0xFF, // CE + 0xE3, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xE3, 0xFF, // CF + 0xC3, 0xDD, 0xDD, 0xC3, 0xDF, 0xDF, 0xDF, 0xFF, // D0 + 0xE3, 0xDD, 0xDD, 0xDD, 0xD5, 0xDB, 0xE5, 0xFF, // D1 + 0xC3, 0xDD, 0xDD, 0xC3, 0xD7, 0xDB, 0xDD, 0xFF, // D2 + 0xE3, 0xDD, 0xDF, 0xE3, 0xFD, 0xDD, 0xE3, 0xFF, // D3 + 0xC1, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xFF, // D4 + 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xE3, 0xFF, // D5 + 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xEB, 0xF7, 0xFF, // D6 + 0xDD, 0xDD, 0xDD, 0xD5, 0xD5, 0xC9, 0xDD, 0xFF, // D7 + 0xDD, 0xDD, 0xEB, 0xF7, 0xEB, 0xDD, 0xDD, 0xFF, // D8 + 0xDD, 0xDD, 0xEB, 0xF7, 0xF7, 0xF7, 0xF7, 0xFF, // D9 + 0xC1, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xC1, 0xFF, // DA + 0xE1, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xE1, 0xFF, // DB + 0xFF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFF, 0xFF, // DC + 0xC3, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xC3, 0xFF, // DD + 0xF7, 0xEB, 0xD5, 0xF7, 0xF7, 0xF7, 0xF7, 0xFF, // DE + 0xF1, 0xEE, 0xC3, 0xEF, 0xC3, 0xEE, 0xF1, 0xFF, // DF + 0xF3, 0xED, 0xD2, 0xD6, 0xD6, 0xD2, 0xED, 0xF3, // E0 + 0xFF, 0xFF, 0xE3, 0xFD, 0xE1, 0xDD, 0xE1, 0xFF, // E1 + 0xDF, 0xDF, 0xC3, 0xDD, 0xDD, 0xDD, 0xC3, 0xFF, // E2 + 0xFF, 0xFF, 0xE1, 0xDF, 0xDF, 0xDF, 0xE1, 0xFF, // E3 + 0xFD, 0xFD, 0xE1, 0xDD, 0xDD, 0xDD, 0xE1, 0xFF, // E4 + 0xFF, 0xFF, 0xE3, 0xDD, 0xC1, 0xDF, 0xE1, 0xFF, // E5 + 0xF3, 0xED, 0xEF, 0xC3, 0xEF, 0xEF, 0xEF, 0xFF, // E6 + 0xFF, 0xFF, 0xE3, 0xDD, 0xDD, 0xE1, 0xFD, 0xE3, // E7 + 0xDF, 0xDF, 0xC3, 0xDD, 0xDD, 0xDD, 0xDD, 0xFF, // E8 + 0xF7, 0xFF, 0xE7, 0xF7, 0xF7, 0xF7, 0xE3, 0xFF, // E9 + 0xFB, 0xFF, 0xF3, 0xFB, 0xFB, 0xFB, 0xDB, 0xE7, // EA + 0xDF, 0xDF, 0xDD, 0xDB, 0xC7, 0xDB, 0xDD, 0xFF, // EB + 0xE7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xE3, 0xFF, // EC + 0xFF, 0xFF, 0xC9, 0xD5, 0xD5, 0xD5, 0xDD, 0xFF, // ED + 0xFF, 0xFF, 0xC3, 0xDD, 0xDD, 0xDD, 0xDD, 0xFF, // EE + 0xFF, 0xFF, 0xE3, 0xDD, 0xDD, 0xDD, 0xE3, 0xFF, // EF + 0xFF, 0xFF, 0xC3, 0xDD, 0xDD, 0xC3, 0xDF, 0xDF, // F0 + 0xFF, 0xFF, 0xE1, 0xDD, 0xDD, 0xE1, 0xFD, 0xFD, // F1 + 0xFF, 0xFF, 0xD1, 0xCF, 0xDF, 0xDF, 0xDF, 0xFF, // F2 + 0xFF, 0xFF, 0xE1, 0xDF, 0xE3, 0xFD, 0xC3, 0xFF, // F3 + 0xEF, 0xEF, 0xC3, 0xEF, 0xEF, 0xED, 0xF3, 0xFF, // F4 + 0xFF, 0xFF, 0xDD, 0xDD, 0xDD, 0xD9, 0xE5, 0xFF, // F5 + 0xFF, 0xFF, 0xDD, 0xDD, 0xDD, 0xEB, 0xF7, 0xFF, // F6 + 0xFF, 0xFF, 0xDD, 0xDD, 0xD5, 0xD5, 0xC9, 0xFF, // F7 + 0xFF, 0xFF, 0xDD, 0xEB, 0xF7, 0xEB, 0xDD, 0xFF, // F8 + 0xFF, 0xFF, 0xDD, 0xDD, 0xDD, 0xE1, 0xFD, 0xE3, // F9 + 0xFF, 0xFF, 0xC1, 0xFB, 0xF7, 0xEF, 0xC1, 0xFF, // FA + 0xF1, 0xE7, 0xE7, 0xCF, 0xE7, 0xE7, 0xF1, 0xFF, // FB + 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, // FC + 0xC7, 0xF3, 0xF3, 0xF9, 0xF3, 0xF3, 0xC7, 0xFF, // FD + 0xD5, 0xEA, 0xD5, 0xEA, 0xD5, 0xEA, 0xD5, 0xEA, // FE + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // FF +}; + +/* + Embedded source code compiled with: + + sokol-shdc -i debugtext.glsl -o debugtext.h -l glsl330:glsl300es:hlsl4:metal_macos:metal_ios:metal_sim:wgpu -b + + (not that for Metal and D3D11 byte code, sokol-shdc must be run + on macOS and Windows) + + @vs vs + in vec2 position; + in vec2 texcoord0; + in vec4 color0; + out vec2 uv; + out vec4 color; + void main() { + gl_Position = vec4(position * vec2(2.0, -2.0) + vec2(-1.0, +1.0), 0.0, 1.0); + uv = texcoord0; + color = color0; + } + @end + + @fs fs + uniform sampler2D tex; + in vec2 uv; + in vec4 color; + out vec4 frag_color; + void main() { + frag_color = texture(tex, uv).xxxx * color; + } + @end + + @program debugtext vs fs +*/ +#if defined(SOKOL_GLCORE33) +static const char _sdtx_vs_src_glsl330[300] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x6c,0x61, + 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, + 0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74, + 0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76, + 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, + 0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74, + 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65, + 0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, + 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69, + 0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x0a, + 0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20, + 0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, + 0x76,0x65,0x63,0x34,0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x2a, + 0x20,0x76,0x65,0x63,0x32,0x28,0x32,0x2e,0x30,0x2c,0x20,0x2d,0x32,0x2e,0x30,0x29, + 0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x2d,0x31,0x2e,0x30,0x2c,0x20,0x31, + 0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72, + 0x64,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; + +static const char _sdtx_fs_src_glsl330[174] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e, + 0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20, + 0x74,0x65,0x78,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, + 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76, + 0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a, + 0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x69,0x6e,0x20,0x76, + 0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64, + 0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, + 0x72,0x65,0x28,0x74,0x65,0x78,0x2c,0x20,0x75,0x76,0x29,0x2e,0x78,0x78,0x78,0x78, + 0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_GLES3) +static const char _sdtx_vs_src_glsl300es[303] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, + 0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e, + 0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f, + 0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32, + 0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, + 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63, + 0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74, + 0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79, + 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32, + 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30, + 0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, + 0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x28,0x32,0x2e,0x30,0x2c,0x20,0x2d,0x32, + 0x2e,0x30,0x29,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x2d,0x31,0x2e,0x30, + 0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, + 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x74,0x65,0x78,0x63, + 0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72, + 0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +static const char _sdtx_fs_src_glsl300es[247] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, + 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, + 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, + 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, + 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d, + 0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x3b,0x0a,0x0a,0x6c,0x61,0x79, + 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, + 0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34, + 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20, + 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x69, + 0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c, + 0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29, + 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, + 0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x2c, + 0x20,0x75,0x76,0x29,0x2e,0x78,0x78,0x78,0x78,0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_METAL) +static const uint8_t _sdtx_vs_bytecode_metal_macos[2896] = { + 0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x50,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x40,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0xdd,0xe8,0xa4,0x37,0x8a,0xdc,0xe6, + 0x75,0xeb,0x1f,0xc8,0x20,0x45,0xac,0xb2,0xcb,0x1e,0xd3,0x65,0x26,0x17,0x6c,0x41, + 0xce,0xd8,0x5c,0x1b,0x0b,0xf5,0x82,0x6a,0x2a,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x37,0x00,0x00, + 0x00,0x56,0x41,0x54,0x54,0x22,0x00,0x03,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x00,0x00,0x80,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x02,0x80,0x56,0x41,0x54,0x59,0x05,0x00,0x03, + 0x00,0x04,0x04,0x06,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54, + 0xde,0xc0,0x17,0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x2c,0x0a,0x00,0x00, + 0xff,0xff,0xff,0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0x88,0x02,0x00,0x00, + 0x0b,0x82,0x20,0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91, + 0x41,0xc8,0x04,0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19, + 0x1e,0x04,0x8b,0x62,0x80,0x10,0x45,0x02,0x42,0x92,0x0b,0x42,0x84,0x10,0x32,0x14, + 0x38,0x08,0x18,0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80, + 0x0c,0x19,0x21,0x72,0x24,0x07,0xc8,0x08,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0, + 0x01,0x00,0x00,0x00,0x51,0x18,0x00,0x00,0x80,0x00,0x00,0x00,0x1b,0xc8,0x25,0xf8, + 0xff,0xff,0xff,0xff,0x01,0x90,0x00,0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87, + 0x71,0xa0,0x07,0x76,0xc8,0x87,0x36,0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72, + 0x20,0x87,0x36,0x20,0x87,0x74,0xb0,0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88, + 0x07,0x79,0xa0,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07, + 0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41, + 0x1c,0xd8,0xa1,0x1c,0xda,0x80,0x1e,0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c, + 0xd8,0x81,0x1d,0xe6,0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87, + 0x72,0x98,0x87,0x79,0x68,0x03,0x78,0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72, + 0x68,0x03,0x73,0x80,0x87,0x76,0x08,0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e, + 0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda, + 0x00,0x1e,0xde,0x21,0x1d,0xdc,0x81,0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21, + 0x1d,0xda,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30, + 0x07,0x79,0x08,0x87,0x76,0x28,0x87,0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87, + 0x72,0x90,0x87,0x36,0x28,0x07,0x76,0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77, + 0x68,0x03,0x76,0x28,0x87,0x70,0x30,0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70, + 0x07,0x73,0x98,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07, + 0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1, + 0x1d,0xe0,0xa1,0x0d,0xe8,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08, + 0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87, + 0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41, + 0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d, + 0xca,0x81,0x1c,0xda,0x40,0x1f,0xca,0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0, + 0xa1,0x0d,0xda,0x21,0x1c,0xe8,0x01,0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80, + 0x70,0x87,0x77,0x68,0x03,0x7a,0x90,0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38, + 0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00, + 0x62,0x1e,0xe8,0x21,0x1c,0xc6,0x61,0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1, + 0x1c,0xc6,0x81,0x1e,0xde,0x41,0x1e,0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c, + 0xe4,0xa1,0x0d,0xe6,0x21,0x1d,0xf4,0xa1,0x1c,0x00,0x3c,0x00,0x88,0x7a,0x70,0x87, + 0x79,0x08,0x07,0x73,0x28,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a, + 0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xea,0x61,0x1e,0xca,0xa1,0x0d, + 0xe6,0xe1,0x1d,0xcc,0x81,0x1e,0xda,0xc0,0x1c,0xd8,0xe1,0x1d,0xc2,0x81,0x1e,0x00, + 0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x00,0x00,0x00,0x00,0x49,0x18,0x00,0x00, + 0x01,0x00,0x00,0x00,0x13,0x82,0x00,0x00,0x89,0x20,0x00,0x00,0x14,0x00,0x00,0x00, + 0x32,0x22,0x08,0x09,0x20,0x64,0x85,0x04,0x13,0x22,0xa4,0x84,0x04,0x13,0x22,0xe3, + 0x84,0xa1,0x90,0x14,0x12,0x4c,0x88,0x8c,0x0b,0x84,0x84,0x4c,0x10,0x2c,0x33,0x00, + 0xc3,0x08,0x02,0x30,0x8c,0x40,0x00,0x77,0x49,0x53,0x44,0x09,0x93,0xcf,0x00,0x48, + 0x43,0xff,0x0e,0x35,0xf9,0x0f,0x20,0x28,0xc4,0x80,0x87,0x10,0x29,0xc4,0x44,0x08, + 0xd1,0x40,0xc0,0x1c,0x01,0x18,0xa4,0xc0,0x0d,0x23,0x10,0xc7,0x08,0x00,0x00,0x00, + 0x13,0xb2,0x70,0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60, + 0x87,0x72,0x68,0x83,0x76,0x08,0x87,0x71,0x78,0x87,0x79,0xc0,0x87,0x38,0x80,0x03, + 0x37,0x88,0x83,0x38,0x70,0x03,0x38,0xd8,0x70,0x1b,0xe5,0xd0,0x06,0xf0,0xa0,0x07, + 0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x90,0x0e,0x71, + 0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9,0x80,0x07,0x7a,0x80,0x07,0x7a,0x80, + 0x07,0x6d,0x90,0x0e,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07, + 0x6d,0x90,0x0e,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d, + 0x90,0x0e,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60, + 0x0e,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0e, + 0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x71, + 0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x60,0x0f,0x72,0x40, + 0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x73,0x20,0x07, + 0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x74,0x80,0x07,0x7a, + 0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x76,0x40,0x07,0x7a,0x60, + 0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x79,0x60,0x07,0x7a,0x10,0x07, + 0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x20,0x07,0x78, + 0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10, + 0x07,0x79,0x20,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07, + 0x6d,0x60,0x0f,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72, + 0x50,0x07,0x76,0xd0,0x06,0xf6,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20, + 0x07,0x7a,0x50,0x07,0x71,0x20,0x07,0x6d,0x60,0x0f,0x71,0x00,0x07,0x72,0x40,0x07, + 0x7a,0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x6d, + 0xe0,0x0e,0x78,0xa0,0x07,0x71,0x60,0x07,0x7a,0x30,0x07,0x72,0x30,0x84,0x29,0x00, + 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0xc8,0x02,0x01,0x00,0x00,0x08,0x00,0x00,0x00, + 0x32,0x1e,0x98,0x0c,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0xba, + 0x12,0x18,0x01,0x28,0x82,0x42,0x28,0x08,0xc2,0xb1,0x04,0xe5,0x01,0x00,0x00,0x00, + 0x79,0x18,0x00,0x00,0xdd,0x00,0x00,0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25, + 0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x31,0x18,0x00,0x62,0x50,0xb9, + 0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62,0x1c,0x81,0x21,0x1c,0x04, + 0xd9,0x20,0x08,0x0e,0x8e,0xad,0x0c,0x84,0x89,0xc9,0xaa,0x09,0xc4,0xae,0x4c,0x6e, + 0x2e,0xed,0xcd,0x0d,0x24,0x07,0x46,0xc6,0x25,0x26,0x06,0x04,0xa5,0xad,0x8c,0x2e, + 0x8c,0xcd,0xac,0xac,0x25,0x07,0x46,0xc6,0x25,0x26,0xc6,0x25,0x26,0x65,0x88,0x60, + 0x10,0x43,0x8c,0x23,0x38,0x8a,0x43,0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x31, + 0x8e,0x23,0x38,0x82,0x43,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6, + 0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6, + 0x56,0x36,0x44,0x30,0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c, + 0x65,0x2e,0x66,0x61,0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62, + 0x6c,0x65,0x43,0x04,0x63,0x61,0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5, + 0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99, + 0x95,0xd1,0x8d,0xa1,0x7d,0x91,0xa5,0xcd,0x85,0x89,0xb1,0x95,0x0d,0x11,0x8c,0x86, + 0x61,0x10,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0xe2,0x16,0x46, + 0x97,0x66,0x57,0xf6,0x45,0xf6,0x56,0x27,0xc6,0x56,0xf6,0x45,0x96,0x36,0x17,0x26, + 0xc6,0x56,0x36,0x44,0x30,0x1e,0x92,0x41,0x58,0x9a,0x9c,0xcb,0xd8,0x5b,0x1b,0x5c, + 0x1a,0x5b,0x99,0x8b,0x5b,0x18,0x5d,0x9a,0x5d,0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17, + 0xdb,0x9b,0xdb,0xd9,0x17,0x59,0xda,0x5c,0x98,0x18,0x5b,0xd9,0x10,0xc1,0x88,0x78, + 0x06,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x6e,0x61,0x74, + 0x69,0x76,0x65,0x5f,0x77,0x69,0x64,0x65,0x5f,0x76,0x65,0x63,0x74,0x6f,0x72,0x73, + 0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x43,0x04,0x63,0x62,0x14,0x96,0x26,0xe7, + 0x62,0x57,0x26,0x47,0x57,0x86,0xf7,0xf5,0x56,0x47,0x07,0x57,0x47,0xc7,0xa5,0x6e, + 0xae,0x4c,0x0e,0x85,0xed,0x6d,0xcc,0x0d,0x26,0x85,0x51,0x58,0x9a,0x9c,0x4b,0x98, + 0xdc,0xd9,0x17,0x5d,0x1e,0x5c,0xd9,0x97,0x5b,0x58,0x5b,0x19,0x0d,0x33,0xb6,0xb7, + 0x30,0x3a,0x19,0x32,0x61,0x69,0x72,0x2e,0x61,0x72,0x67,0x5f,0x6e,0x61,0x6d,0x65, + 0x14,0xea,0xec,0x86,0x30,0x46,0x65,0x58,0xc6,0x65,0x60,0x46,0x66,0x68,0x5c,0xea, + 0xe6,0xca,0xe4,0x50,0xd8,0xde,0xc6,0xdc,0x62,0x52,0x68,0x98,0xb1,0xbd,0x85,0xd1, + 0xd1,0xb0,0x18,0x7b,0x63,0x7b,0x93,0x1b,0xc2,0x18,0x95,0xc1,0x19,0x97,0xd1,0x19, + 0x99,0xe1,0x91,0x09,0x4b,0x93,0x73,0x81,0x7b,0x9b,0x4b,0xa3,0x4b,0x7b,0x73,0xe3, + 0x72,0xc6,0xf6,0x05,0xf5,0x36,0x97,0x46,0x97,0xf6,0xe6,0x36,0x44,0x31,0xc0,0xc0, + 0xb8,0x8c,0xce,0xc8,0x8c,0x30,0x18,0x62,0x18,0x9b,0xf1,0x19,0x62,0x40,0x28,0x2c, + 0x4d,0xce,0xc5,0xae,0x4c,0x8e,0xae,0x0c,0xef,0x2b,0xcd,0x0d,0xae,0x8e,0x8e,0x52, + 0x58,0x9a,0x9c,0x0b,0xdb,0xdb,0x58,0x18,0x5d,0xda,0x9b,0xdb,0x57,0x9a,0x1b,0x59, + 0x19,0x1e,0xb3,0xb3,0x32,0xb7,0x32,0xb9,0x30,0xba,0x32,0x32,0x14,0x1c,0xb8,0xb7, + 0xb9,0x34,0xba,0xb4,0x37,0x37,0x22,0x3b,0x99,0x2f,0xb3,0x14,0x22,0x70,0x6f,0x73, + 0x69,0x74,0x69,0x6f,0x6e,0x43,0xa8,0x43,0x30,0xc8,0xc0,0x28,0x83,0x43,0x38,0x02, + 0xc3,0x0c,0x8c,0xcb,0xc0,0x8c,0xcc,0x38,0x03,0x6a,0x67,0x65,0x6e,0x65,0x72,0x61, + 0x74,0x65,0x64,0x28,0x39,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x44,0x76, + 0x32,0x5f,0x66,0x29,0x4c,0xe8,0xca,0xf0,0xc6,0xde,0xde,0xe4,0xc8,0x60,0x86,0x50, + 0x47,0x60,0x90,0x81,0x51,0x06,0x47,0x70,0x04,0x46,0x1a,0x18,0x97,0x81,0x19,0x99, + 0xa1,0x06,0xbc,0xce,0xca,0xdc,0xca,0xe4,0xc2,0xe8,0xca,0xc8,0x50,0x6c,0xc6,0xde, + 0xd8,0xde,0xe4,0x60,0x88,0xec,0x68,0xbe,0xcc,0x52,0x68,0x8c,0xbd,0xb1,0xbd,0xc9, + 0xc1,0x0c,0xa1,0x8e,0xc1,0x20,0x03,0xa3,0x0c,0x8e,0xe1,0x08,0x0c,0x36,0x30,0x2e, + 0xa3,0x33,0x32,0xa3,0x0d,0x86,0x18,0x06,0x1a,0x18,0x6b,0x60,0xb8,0xc1,0x10,0xa3, + 0x00,0x8c,0x31,0x30,0xde,0x60,0x44,0xc4,0x0e,0xec,0x60,0x0f,0xed,0xe0,0x06,0xed, + 0xf0,0x0e,0xe4,0x50,0x0f,0xec,0x50,0x0e,0x6e,0x60,0x0e,0xec,0x10,0x0e,0xe7,0x30, + 0x0f,0x53,0x84,0x60,0x18,0xa1,0xb0,0x03,0x3b,0xd8,0x43,0x3b,0xb8,0x41,0x3a,0x90, + 0x43,0x39,0xb8,0x03,0x3d,0x4c,0x09,0x8a,0x11,0x4b,0x38,0xa4,0x83,0x3c,0xb8,0x81, + 0x3d,0x94,0x83,0x3c,0xcc,0x43,0x3a,0xbc,0x83,0x3b,0x4c,0x09,0x8c,0x11,0x54,0x38, + 0xa4,0x83,0x3c,0xb8,0x01,0x3b,0x84,0x83,0x3b,0x9c,0x43,0x3d,0x84,0xc3,0x39,0x94, + 0xc3,0x2f,0xd8,0x43,0x39,0xc8,0xc3,0x3c,0xa4,0xc3,0x3b,0xb8,0xc3,0x94,0x00,0x19, + 0x31,0x85,0x43,0x3a,0xc8,0x83,0x1b,0x8c,0xc3,0x3b,0xb4,0x03,0x3c,0xa4,0x03,0x3b, + 0x94,0xc3,0x2f,0xbc,0x03,0x3c,0xd0,0x43,0x3a,0xbc,0x83,0x3b,0xcc,0xc3,0x14,0x43, + 0x61,0x1c,0x48,0xa2,0x46,0x28,0xe1,0x90,0x0e,0xf2,0xe0,0x06,0xf6,0x50,0x0e,0xf2, + 0x40,0x0f,0xe5,0x80,0x0f,0x53,0x02,0x38,0x00,0x00,0x00,0x00,0x79,0x18,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88, + 0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6, + 0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce, + 0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8, + 0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48, + 0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11, + 0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e, + 0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89, + 0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b, + 0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37, + 0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78, + 0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81, + 0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1, + 0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c, + 0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39, + 0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc, + 0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58, + 0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87, + 0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f, + 0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e, + 0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66, + 0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b, + 0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0, + 0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e, + 0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc, + 0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3, + 0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07, + 0x7a,0x28,0x07,0x72,0x00,0x00,0x00,0x00,0x71,0x20,0x00,0x00,0x02,0x00,0x00,0x00, + 0x06,0x50,0x30,0x00,0xd2,0xd0,0x00,0x00,0x61,0x20,0x00,0x00,0x1b,0x00,0x00,0x00, + 0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x94,0x63,0x11,0x40, + 0x60,0x1c,0x73,0x10,0x42,0xc0,0x30,0x74,0x33,0x00,0x14,0x63,0x09,0x20,0x08,0x82, + 0x20,0x18,0x80,0x20,0x08,0x82,0xe0,0x30,0x96,0x00,0x82,0x20,0x88,0xff,0x02,0x08, + 0x82,0x20,0xfe,0xcd,0x00,0x90,0xcc,0x41,0x50,0xd4,0x24,0xd1,0xcc,0x00,0x10,0x8c, + 0x11,0x80,0x20,0x08,0xe2,0xdf,0x08,0xc0,0x0c,0x00,0x00,0x00,0xe6,0x20,0xf2,0xb1, + 0x00,0x81,0xcf,0x20,0x43,0x80,0x30,0x83,0x0c,0x01,0xe2,0xcc,0x36,0x20,0x11,0x30, + 0xdb,0x10,0x44,0xc1,0x6c,0x43,0x30,0x08,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _sdtx_fs_bytecode_metal_macos[2925] = { + 0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd5,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x90,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0xea,0x91,0xf4,0xf5,0xea,0xea,0x43, + 0x77,0xcf,0xab,0x49,0x97,0x29,0xd8,0x26,0x5d,0xff,0x05,0x61,0xc6,0x93,0xc7,0x6c, + 0xb2,0x20,0x78,0x63,0x91,0x45,0x5c,0xbe,0x1c,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x04,0x00,0x00, + 0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17, + 0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x70,0x0a,0x00,0x00,0xff,0xff,0xff, + 0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0x99,0x02,0x00,0x00,0x0b,0x82,0x20, + 0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04, + 0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b, + 0x62,0x80,0x14,0x45,0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18, + 0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21, + 0x72,0x24,0x07,0xc8,0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00, + 0x00,0x51,0x18,0x00,0x00,0x89,0x00,0x00,0x00,0x1b,0xcc,0x25,0xf8,0xff,0xff,0xff, + 0xff,0x01,0x60,0x00,0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07, + 0x7a,0x60,0x87,0x7c,0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72, + 0x68,0x03,0x72,0x48,0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90, + 0x07,0x7a,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc, + 0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81, + 0x1d,0xca,0xa1,0x0d,0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d, + 0xd8,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87, + 0x79,0x98,0x87,0x36,0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36, + 0x30,0x07,0x78,0x68,0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c, + 0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0, + 0xe1,0x1d,0xd2,0xc1,0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90, + 0x87,0x70,0x68,0x87,0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07, + 0x79,0x68,0x83,0x72,0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36, + 0x60,0x87,0x72,0x08,0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30, + 0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8, + 0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01, + 0x1e,0xda,0x80,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60, + 0x87,0x79,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1, + 0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c, + 0xc8,0xa1,0x0d,0xf4,0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda, + 0xa0,0x1d,0xc2,0x81,0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77, + 0x78,0x87,0x36,0xa0,0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68, + 0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6, + 0x81,0x1e,0xc2,0x61,0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61, + 0x1c,0xe8,0xe1,0x1d,0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e, + 0xda,0x60,0x1e,0xd2,0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa8,0x07,0x77,0x98,0x87, + 0x70,0x30,0x87,0x72,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74, + 0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0xa2,0x1e,0xe6,0xa1,0x1c,0xda,0x60,0x1e, + 0xde,0xc1,0x1c,0xe8,0xa1,0x0d,0xcc,0x81,0x1d,0xde,0x21,0x1c,0xe8,0x01,0x30,0x87, + 0x70,0x60,0x87,0x79,0x28,0x07,0x60,0x83,0x21,0x0c,0xc0,0x02,0x54,0x1b,0x8c,0x81, + 0x00,0x16,0xa0,0xda,0x80,0x10,0xff,0xff,0xff,0xff,0x3f,0x00,0x0c,0x20,0x01,0xd5, + 0x06,0xa3,0x08,0x80,0x05,0xa8,0x36,0x18,0x86,0x00,0x2c,0x40,0x05,0x49,0x18,0x00, + 0x00,0x03,0x00,0x00,0x00,0x13,0x86,0x40,0x18,0x26,0x0c,0x44,0x61,0x00,0x00,0x00, + 0x00,0x89,0x20,0x00,0x00,0x21,0x00,0x00,0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85, + 0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a, + 0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x4c,0x33,0x00,0xc3,0x08,0x04,0x70,0x90,0x34,0x45, + 0x94,0x30,0xf9,0x0c,0x80,0x34,0xf4,0xef,0x50,0x13,0x0a,0xc2,0x30,0x82,0x00,0x1c, + 0x25,0x4d,0x11,0x25,0x4c,0xfe,0x3f,0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0xff,0x34, + 0x46,0x00,0x0c,0x22,0x10,0xc1,0x45,0xd2,0x14,0x51,0xc2,0xe4,0xff,0x12,0xc0,0x3c, + 0x0b,0x11,0xfd,0xd3,0x18,0x01,0x30,0x88,0x60,0x08,0xa5,0x10,0x23,0x94,0x43,0x68, + 0x8e,0x20,0x98,0x23,0x00,0x83,0x61,0x04,0x61,0x29,0x48,0x28,0x67,0x28,0xa6,0x00, + 0xb5,0x81,0x80,0x14,0x58,0xc3,0x08,0xc4,0x32,0x02,0x00,0x00,0x00,0x13,0xb2,0x70, + 0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68, + 0x83,0x76,0x08,0x87,0x71,0x78,0x87,0x79,0xc0,0x87,0x38,0x80,0x03,0x37,0x88,0x83, + 0x38,0x70,0x03,0x38,0xd8,0x70,0x1b,0xe5,0xd0,0x06,0xf0,0xa0,0x07,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x90,0x0e,0x71,0xa0,0x07,0x78, + 0xa0,0x07,0x78,0xd0,0x06,0xe9,0x80,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90, + 0x0e,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x90,0x0e, + 0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x90,0x0e,0x76, + 0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0e,0x73,0x20, + 0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0e,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x71,0x60,0x07,0x7a, + 0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x60,0x0f,0x72,0x40,0x07,0x7a,0x30, + 0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x73,0x20,0x07,0x7a,0x30,0x07, + 0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x74,0x80,0x07,0x7a,0x60,0x07,0x74, + 0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0, + 0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x79,0x60,0x07,0x7a,0x10,0x07,0x72,0x80,0x07, + 0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x20,0x07,0x78,0xa0,0x07,0x71, + 0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x79,0x20, + 0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f, + 0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76, + 0xd0,0x06,0xf6,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07,0x7a,0x50, + 0x07,0x71,0x20,0x07,0x6d,0x60,0x0f,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07, + 0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x6d,0xe0,0x0e,0x78, + 0xa0,0x07,0x71,0x60,0x07,0x7a,0x30,0x07,0x72,0x30,0x84,0x49,0x00,0x00,0x08,0x00, + 0x00,0x00,0x00,0x00,0x18,0xc2,0x38,0x40,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x64, + 0x81,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c, + 0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0x5a,0x25,0x30,0x02,0x50,0x04,0x85,0x50, + 0x10,0x65,0x40,0x70,0x2c,0x41,0x79,0x00,0x00,0x79,0x18,0x00,0x00,0xd9,0x00,0x00, + 0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37, + 0xb7,0x21,0xc6,0x42,0x3c,0x00,0x84,0x50,0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b, + 0xd3,0x2b,0x1b,0x62,0x2c,0xc2,0x23,0x2c,0x05,0xd9,0x20,0x08,0x0e,0x8e,0xad,0x0c, + 0x84,0x89,0xc9,0xaa,0x09,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x24,0x07,0x46, + 0xc6,0x25,0x26,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac,0x25,0x07,0x46, + 0xc6,0x25,0x26,0xc6,0x25,0x26,0x65,0x88,0xf0,0x10,0x43,0x8c,0x45,0x58,0x8c,0x65, + 0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x79,0x8e,0x45,0x58,0x84,0x65,0xe0,0x16, + 0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26, + 0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x78,0x12,0x72,0x61, + 0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61,0x73,0x74,0x5f, + 0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x84,0x67,0x61,0x19, + 0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5, + 0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1,0x7d,0x91,0xa5, + 0xcd,0x85,0x89,0xb1,0x95,0x0d,0x11,0x9e,0x86,0x61,0x10,0x96,0x26,0xe7,0x32,0xf6, + 0xd6,0x06,0x97,0xc6,0x56,0xe6,0xe2,0x16,0x46,0x97,0x66,0x57,0xf6,0x45,0xf6,0x56, + 0x27,0xc6,0x56,0xf6,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x78,0x1e,0x92, + 0x41,0x58,0x9a,0x9c,0xcb,0xd8,0x5b,0x1b,0x5c,0x1a,0x5b,0x99,0x8b,0x5b,0x18,0x5d, + 0x9a,0x5d,0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0x59,0xda, + 0x5c,0x98,0x18,0x5b,0xd9,0x10,0xe1,0x89,0x78,0x06,0x61,0x69,0x72,0x2e,0x63,0x6f, + 0x6d,0x70,0x69,0x6c,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x5f,0x77,0x69,0x64, + 0x65,0x5f,0x76,0x65,0x63,0x74,0x6f,0x72,0x73,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c, + 0x65,0x43,0x84,0x67,0x62,0x14,0x96,0x26,0xe7,0x22,0x57,0xe6,0x46,0x56,0x26,0xf7, + 0x45,0x17,0x26,0x77,0x56,0x46,0xc7,0x28,0x2c,0x4d,0xce,0x25,0x4c,0xee,0xec,0x8b, + 0x2e,0x0f,0xae,0xec,0xcb,0x2d,0xac,0xad,0x8c,0x86,0x19,0xdb,0x5b,0x18,0x1d,0x0d, + 0x99,0xb0,0x34,0x39,0x97,0x30,0xb9,0xb3,0x2f,0xb7,0xb0,0xb6,0x32,0x2a,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x43,0x98,0xa7,0x5a,0x86,0xc7,0x7a,0xae, + 0x07,0x7b,0xb2,0x21,0xc2,0xa3,0x51,0x0a,0x4b,0x93,0x73,0x31,0x93,0x0b,0x3b,0x6b, + 0x2b,0x73,0xa3,0xfb,0x4a,0x73,0x83,0xab,0xa3,0xe3,0x52,0x37,0x57,0x26,0x87,0xc2, + 0xf6,0x36,0xe6,0x06,0x93,0x42,0x25,0x2c,0x4d,0xce,0x65,0xac,0xcc,0x8d,0xae,0x4c, + 0x8e,0x4f,0x58,0x9a,0x9c,0x0b,0x5c,0x99,0xdc,0x1c,0x5c,0xd9,0x18,0x5d,0x9a,0x5d, + 0x19,0x0d,0x33,0xb6,0xb7,0x30,0x3a,0x19,0x0a,0x75,0x76,0x43,0xa4,0x65,0x78,0xb8, + 0xa7,0x7b,0xbc,0xe7,0x7b,0xac,0x07,0x0c,0x1e,0xec,0x09,0x03,0x2e,0x75,0x73,0x65, + 0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x2c,0xc6,0xde,0xd8,0xde,0xe4,0x86,0x48, + 0x8b,0xf0,0x70,0xcf,0x18,0x3c,0xde,0xf3,0x3d,0xd6,0x73,0x3d,0xd8,0x43,0x06,0x5c, + 0xc2,0xd2,0xe4,0x5c,0xe8,0xca,0xf0,0xe8,0xea,0xe4,0xca,0x28,0x85,0xa5,0xc9,0xb9, + 0xb0,0xbd,0x8d,0x85,0xd1,0xa5,0xbd,0xb9,0x7d,0xa5,0xb9,0x91,0x95,0xe1,0x51,0x09, + 0x4b,0x93,0x73,0x99,0x0b,0x6b,0x83,0x63,0x2b,0x23,0x46,0x57,0x86,0x47,0x57,0x27, + 0x57,0x26,0x43,0xc6,0x63,0xc6,0xf6,0x16,0x46,0xc7,0x02,0x32,0x17,0xd6,0x06,0xc7, + 0x56,0xe6,0xc3,0x81,0xae,0x0c,0x6f,0x08,0xb5,0x10,0x8f,0x19,0x3c,0x67,0xb0,0x0c, + 0x8b,0xf0,0xa0,0xc1,0x63,0x3d,0x69,0xf0,0x60,0x8f,0x1a,0x70,0x09,0x4b,0x93,0x73, + 0x99,0x0b,0x6b,0x83,0x63,0x2b,0x93,0xe3,0x31,0x17,0xd6,0x06,0xc7,0x56,0x26,0x47, + 0x84,0xae,0x0c,0x6f,0xaa,0x0d,0x8e,0x4d,0x6e,0x88,0xb4,0x1c,0x0f,0x1b,0x3c,0x67, + 0xb0,0x0c,0x8b,0xf0,0x58,0x4f,0x1b,0x3c,0xd8,0xe3,0x06,0x43,0x90,0x47,0x0c,0x9e, + 0x32,0x78,0xd6,0xe0,0x79,0x83,0x21,0x46,0x02,0x3c,0xdb,0x03,0x07,0x23,0x22,0x76, + 0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x77,0x20,0x87,0x7a,0x60,0x87,0x72,0x70, + 0x03,0x73,0x60,0x87,0x70,0x38,0x87,0x79,0x98,0x22,0x04,0xc3,0x08,0x85,0x1d,0xd8, + 0xc1,0x1e,0xda,0xc1,0x0d,0xd2,0x81,0x1c,0xca,0xc1,0x1d,0xe8,0x61,0x4a,0x50,0x8c, + 0x58,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xec,0xa1,0x1c,0xe4,0x61,0x1e,0xd2,0xe1,0x1d, + 0xdc,0x61,0x4a,0x60,0x8c,0xa0,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xd8,0x21,0x1c,0xdc, + 0xe1,0x1c,0xea,0x21,0x1c,0xce,0xa1,0x1c,0x7e,0xc1,0x1e,0xca,0x41,0x1e,0xe6,0x21, + 0x1d,0xde,0xc1,0x1d,0xa6,0x04,0xc8,0x88,0x29,0x1c,0xd2,0x41,0x1e,0xdc,0x60,0x1c, + 0xde,0xa1,0x1d,0xe0,0x21,0x1d,0xd8,0xa1,0x1c,0x7e,0xe1,0x1d,0xe0,0x81,0x1e,0xd2, + 0xe1,0x1d,0xdc,0x61,0x1e,0xa6,0x18,0x0a,0xe3,0x40,0x12,0x35,0x82,0x09,0x87,0x74, + 0x90,0x07,0x37,0x30,0x07,0x79,0x08,0x87,0x73,0x68,0x87,0x72,0x70,0x07,0x7a,0x98, + 0x12,0xc4,0x01,0x00,0x00,0x79,0x18,0x00,0x00,0x6d,0x00,0x00,0x00,0x33,0x08,0x80, + 0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80, + 0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80, + 0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88, + 0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78, + 0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03, + 0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f, + 0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c, + 0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39, + 0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b, + 0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60, + 0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87, + 0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e, + 0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c, + 0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6, + 0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94, + 0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03, + 0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07, + 0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f, + 0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33, + 0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc, + 0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c, + 0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78, + 0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca, + 0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21, + 0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43, + 0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87, + 0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x00,0x00,0x00, + 0x00,0x71,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x16,0xb0,0x01,0x48,0xe4,0x4b,0x00, + 0xf3,0x2c,0xc4,0x3f,0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0x7e,0x85,0x17,0xb7,0x6d, + 0x00,0x05,0x03,0x20,0x0d,0x0d,0x00,0x00,0x00,0x61,0x20,0x00,0x00,0x0f,0x00,0x00, + 0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x14,0x47,0x00, + 0x88,0x8d,0x00,0x90,0x1a,0x01,0xa8,0x01,0x12,0x33,0x00,0x14,0x66,0x00,0x08,0x8c, + 0x00,0x00,0x00,0x00,0x00,0x23,0x06,0x8a,0x10,0x4c,0x09,0xb2,0x10,0x46,0x11,0x0c, + 0x32,0x04,0x03,0x62,0x01,0x23,0x9f,0xd9,0x06,0x23,0x00,0x32,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _sdtx_vs_bytecode_metal_ios[2896] = { + 0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x50,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x40,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0xa2,0x1f,0xa0,0x5e,0xa1,0x48,0x8e, + 0x9f,0xa4,0xc2,0x68,0xf5,0x56,0xca,0xed,0xf9,0xdd,0x8a,0x35,0x42,0xe2,0x79,0x40, + 0xd7,0xab,0x99,0x96,0x7f,0x41,0x4c,0xde,0xb0,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x37,0x00,0x00, + 0x00,0x56,0x41,0x54,0x54,0x22,0x00,0x03,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x00,0x00,0x80,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x02,0x80,0x56,0x41,0x54,0x59,0x05,0x00,0x03, + 0x00,0x04,0x04,0x06,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54, + 0xde,0xc0,0x17,0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x20,0x0a,0x00,0x00, + 0xff,0xff,0xff,0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0x85,0x02,0x00,0x00, + 0x0b,0x82,0x20,0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91, + 0x41,0xc8,0x04,0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19, + 0x1e,0x04,0x8b,0x62,0x80,0x10,0x45,0x02,0x42,0x92,0x0b,0x42,0x84,0x10,0x32,0x14, + 0x38,0x08,0x18,0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80, + 0x0c,0x19,0x21,0x72,0x24,0x07,0xc8,0x08,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0, + 0x01,0x00,0x00,0x00,0x51,0x18,0x00,0x00,0x80,0x00,0x00,0x00,0x1b,0xc8,0x25,0xf8, + 0xff,0xff,0xff,0xff,0x01,0x90,0x00,0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87, + 0x71,0xa0,0x07,0x76,0xc8,0x87,0x36,0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72, + 0x20,0x87,0x36,0x20,0x87,0x74,0xb0,0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88, + 0x07,0x79,0xa0,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07, + 0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41, + 0x1c,0xd8,0xa1,0x1c,0xda,0x80,0x1e,0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c, + 0xd8,0x81,0x1d,0xe6,0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87, + 0x72,0x98,0x87,0x79,0x68,0x03,0x78,0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72, + 0x68,0x03,0x73,0x80,0x87,0x76,0x08,0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e, + 0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda, + 0x00,0x1e,0xde,0x21,0x1d,0xdc,0x81,0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21, + 0x1d,0xda,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30, + 0x07,0x79,0x08,0x87,0x76,0x28,0x87,0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87, + 0x72,0x90,0x87,0x36,0x28,0x07,0x76,0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77, + 0x68,0x03,0x76,0x28,0x87,0x70,0x30,0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70, + 0x07,0x73,0x98,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07, + 0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1, + 0x1d,0xe0,0xa1,0x0d,0xe8,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08, + 0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87, + 0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41, + 0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d, + 0xca,0x81,0x1c,0xda,0x40,0x1f,0xca,0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0, + 0xa1,0x0d,0xda,0x21,0x1c,0xe8,0x01,0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80, + 0x70,0x87,0x77,0x68,0x03,0x7a,0x90,0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38, + 0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00, + 0x62,0x1e,0xe8,0x21,0x1c,0xc6,0x61,0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1, + 0x1c,0xc6,0x81,0x1e,0xde,0x41,0x1e,0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c, + 0xe4,0xa1,0x0d,0xe6,0x21,0x1d,0xf4,0xa1,0x1c,0x00,0x3c,0x00,0x88,0x7a,0x70,0x87, + 0x79,0x08,0x07,0x73,0x28,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a, + 0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xea,0x61,0x1e,0xca,0xa1,0x0d, + 0xe6,0xe1,0x1d,0xcc,0x81,0x1e,0xda,0xc0,0x1c,0xd8,0xe1,0x1d,0xc2,0x81,0x1e,0x00, + 0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x00,0x00,0x00,0x00,0x49,0x18,0x00,0x00, + 0x01,0x00,0x00,0x00,0x13,0x82,0x00,0x00,0x89,0x20,0x00,0x00,0x14,0x00,0x00,0x00, + 0x32,0x22,0x08,0x09,0x20,0x64,0x85,0x04,0x13,0x22,0xa4,0x84,0x04,0x13,0x22,0xe3, + 0x84,0xa1,0x90,0x14,0x12,0x4c,0x88,0x8c,0x0b,0x84,0x84,0x4c,0x10,0x2c,0x33,0x00, + 0xc3,0x08,0x02,0x30,0x8c,0x40,0x00,0x77,0x49,0x53,0x44,0x09,0x93,0xcf,0x00,0x48, + 0x43,0xff,0x0e,0x35,0xf9,0x0f,0x20,0x28,0xc4,0x80,0x87,0x10,0x29,0xc4,0x44,0x08, + 0xd1,0x40,0xc0,0x1c,0x01,0x18,0xa4,0xc0,0x0d,0x23,0x10,0xc7,0x08,0x00,0x00,0x00, + 0x13,0xa8,0x70,0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60, + 0x87,0x72,0x68,0x83,0x74,0x78,0x87,0x79,0xc8,0x03,0x37,0x80,0x03,0x37,0x80,0x83, + 0x0d,0xb7,0x51,0x0e,0x6d,0x00,0x0f,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xd0,0x06,0xe9,0x10,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d, + 0x90,0x0e,0x78,0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9,0x10,0x07,0x76,0xa0, + 0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xe9,0x30,0x07,0x72,0xa0,0x07, + 0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe9,0x60,0x07,0x74,0xa0,0x07,0x76, + 0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20, + 0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a, + 0x10,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x74,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30, + 0x07,0x72,0xd0,0x06,0xf6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07, + 0x72,0xd0,0x06,0xf6,0x40,0x07,0x78,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74, + 0xd0,0x06,0xf6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0, + 0x06,0xf6,0x90,0x07,0x76,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07, + 0x78,0xd0,0x06,0xf6,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a, + 0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x90,0x07,0x72,0xa0,0x07,0x72,0x50, + 0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x75,0x60,0x07, + 0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x75, + 0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xd0, + 0x06,0xf6,0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07, + 0x7a,0x10,0x07,0x70,0x20,0x07,0x74,0xd0,0x06,0xee,0x80,0x07,0x7a,0x10,0x07,0x76, + 0xa0,0x07,0x73,0x20,0x07,0x43,0x98,0x02,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80, + 0x2c,0x10,0x00,0x00,0x08,0x00,0x00,0x00,0x32,0x1e,0x98,0x0c,0x19,0x11,0x4c,0x90, + 0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0xba,0x12,0x18,0x01,0x28,0x82,0x42,0x28,0x08, + 0xc2,0xb1,0x84,0x46,0x00,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0xdc,0x00,0x00,0x00, + 0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7, + 0x21,0xc6,0x31,0x18,0x00,0x62,0x50,0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3, + 0x2b,0x1b,0x62,0x1c,0x81,0x21,0x1c,0x04,0xd7,0x20,0x08,0x0e,0x8e,0xad,0x0c,0x84, + 0x89,0xc9,0xaa,0x09,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x24,0x07,0x46,0xc6, + 0x25,0x07,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac,0x25,0x07,0x46,0xc6,0x25, + 0xc7,0xc5,0x26,0x26,0x65,0x88,0x60,0x10,0x43,0x8c,0x23,0x38,0x8a,0x43,0x60,0xd1, + 0x54,0x46,0x17,0xc6,0x36,0x04,0x31,0x8e,0x23,0x38,0x84,0x43,0xe0,0x16,0x96,0x26, + 0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26,0xd7,0x36, + 0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x30,0x12,0x72,0x61,0x69,0x72, + 0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61,0x73,0x74,0x5f,0x6d,0x61, + 0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x04,0x63,0x21,0x19,0x84,0xa5, + 0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5,0x95,0x89, + 0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1,0x7d,0x95,0xb9,0x85,0x89, + 0xb1,0x95,0x0d,0x11,0x8c,0x86,0x61,0x10,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97, + 0xc6,0x56,0xe6,0xe2,0x16,0x46,0x97,0x66,0x57,0xf6,0x45,0xf6,0x56,0x27,0xc6,0x56, + 0xf6,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x30,0x1e,0x92,0x41,0x58,0x9a, + 0x9c,0xcb,0xd8,0x5b,0x1b,0x5c,0x1a,0x5b,0x99,0x8b,0x5b,0x18,0x5d,0x9a,0x5d,0xd9, + 0x17,0xdb,0x9b,0xdb,0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0x59,0xda,0x5c,0x98,0x18, + 0x5b,0xd9,0x10,0xc1,0x88,0x78,0x06,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69, + 0x6c,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x5f,0x77,0x69,0x64,0x65,0x5f,0x76, + 0x65,0x63,0x74,0x6f,0x72,0x73,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x43,0x04, + 0x63,0x62,0x14,0x96,0x26,0xe7,0x62,0x57,0x26,0x47,0x57,0x86,0xf7,0xf5,0x56,0x47, + 0x07,0x57,0x47,0xc7,0xa5,0x6e,0xae,0x4c,0x0e,0x85,0xed,0x6d,0xcc,0x0d,0x26,0x85, + 0x51,0x58,0x9a,0x9c,0x4b,0x98,0xdc,0xd9,0x17,0x5d,0x1e,0x5c,0xd9,0x97,0x5b,0x58, + 0x5b,0x19,0x0d,0x33,0xb6,0xb7,0x30,0x3a,0x19,0x32,0x61,0x69,0x72,0x2e,0x61,0x72, + 0x67,0x5f,0x6e,0x61,0x6d,0x65,0x14,0xea,0xec,0x86,0x30,0x46,0x65,0x58,0xc6,0x65, + 0x60,0x46,0x66,0x68,0x5c,0xea,0xe6,0xca,0xe4,0x50,0xd8,0xde,0xc6,0xdc,0x62,0x52, + 0x68,0x98,0xb1,0xbd,0x85,0xd1,0xd1,0xb0,0x18,0x7b,0x63,0x7b,0x93,0x1b,0xc2,0x18, + 0x95,0xc1,0x19,0x97,0xd1,0x19,0x99,0xe1,0x91,0x09,0x4b,0x93,0x73,0x81,0x7b,0x9b, + 0x4b,0xa3,0x4b,0x7b,0x73,0xe3,0x72,0xc6,0xf6,0x05,0xf5,0x36,0x97,0x46,0x97,0xf6, + 0xe6,0x36,0x44,0x31,0xc0,0xc0,0xb8,0x8c,0xce,0xc8,0x8c,0x30,0x18,0x62,0x18,0x9b, + 0xf1,0x19,0x62,0x40,0x28,0x2c,0x4d,0xce,0xc5,0xae,0x4c,0x8e,0xae,0x0c,0xef,0x2b, + 0xcd,0x0d,0xae,0x8e,0x8e,0x52,0x58,0x9a,0x9c,0x0b,0xdb,0xdb,0x58,0x18,0x5d,0xda, + 0x9b,0xdb,0x57,0x9a,0x1b,0x59,0x19,0x1e,0xb3,0xb3,0x32,0xb7,0x32,0xb9,0x30,0xba, + 0x32,0x32,0x14,0x1c,0xb8,0xb7,0xb9,0x34,0xba,0xb4,0x37,0x37,0x22,0x3b,0x99,0x2f, + 0xb3,0x14,0x22,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x43,0xa8,0x43,0x30,0xc8, + 0xc0,0x28,0x83,0x43,0x38,0x02,0xc3,0x0c,0x8c,0xcb,0xc0,0x8c,0xcc,0x38,0x03,0x6a, + 0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x64,0x28,0x39,0x74,0x65,0x78,0x63,0x6f, + 0x6f,0x72,0x64,0x30,0x44,0x76,0x32,0x5f,0x66,0x29,0x4c,0xe8,0xca,0xf0,0xc6,0xde, + 0xde,0xe4,0xc8,0x60,0x86,0x50,0x47,0x60,0x90,0x81,0x51,0x06,0x47,0x70,0x04,0x46, + 0x1a,0x18,0x97,0x81,0x19,0x99,0xa1,0x06,0xbc,0xce,0xca,0xdc,0xca,0xe4,0xc2,0xe8, + 0xca,0xc8,0x50,0x6c,0xc6,0xde,0xd8,0xde,0xe4,0x60,0x88,0xec,0x68,0xbe,0xcc,0x52, + 0x68,0x8c,0xbd,0xb1,0xbd,0xc9,0xc1,0x0c,0xa1,0x8e,0xc1,0x20,0x03,0xa3,0x0c,0x8e, + 0xe1,0x08,0x0c,0x36,0x30,0x2e,0xa3,0x33,0x32,0xa3,0x0d,0x86,0x18,0x06,0x1a,0x18, + 0x6b,0x60,0xb8,0xc1,0x10,0xa3,0x00,0x8c,0x31,0x30,0xde,0x60,0x44,0xc4,0x0e,0xec, + 0x60,0x0f,0xed,0xe0,0x06,0xed,0xf0,0x0e,0xe4,0x50,0x0f,0xec,0x50,0x0e,0x6e,0x60, + 0x0e,0xec,0x10,0x0e,0xe7,0x30,0x0f,0x53,0x84,0x60,0x18,0xa1,0xb0,0x03,0x3b,0xd8, + 0x43,0x3b,0xb8,0x41,0x3a,0x90,0x43,0x39,0xb8,0x03,0x3d,0x4c,0x09,0x8a,0x11,0x4b, + 0x38,0xa4,0x83,0x3c,0xb8,0x81,0x3d,0x94,0x83,0x3c,0xcc,0x43,0x3a,0xbc,0x83,0x3b, + 0x4c,0x09,0x8c,0x11,0x54,0x38,0xa4,0x83,0x3c,0xb8,0x01,0x3b,0x84,0x83,0x3b,0x9c, + 0x43,0x3d,0x84,0xc3,0x39,0x94,0xc3,0x2f,0xd8,0x43,0x39,0xc8,0xc3,0x3c,0xa4,0xc3, + 0x3b,0xb8,0xc3,0x94,0x00,0x19,0x31,0x85,0x43,0x3a,0xc8,0x83,0x1b,0x8c,0xc3,0x3b, + 0xb4,0x03,0x3c,0xa4,0x03,0x3b,0x94,0xc3,0x2f,0xbc,0x03,0x3c,0xd0,0x43,0x3a,0xbc, + 0x83,0x3b,0xcc,0xc3,0x14,0x43,0x61,0x1c,0x48,0xa2,0x46,0x28,0xe1,0x90,0x0e,0xf2, + 0xe0,0x06,0xf6,0x50,0x0e,0xf2,0x40,0x0f,0xe5,0x80,0x0f,0x53,0x02,0x38,0x00,0x00, + 0x79,0x18,0x00,0x00,0x6d,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66, + 0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73, + 0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e, + 0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b, + 0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b, + 0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20, + 0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0, + 0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61, + 0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83, + 0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87, + 0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76, + 0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98, + 0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30, + 0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61, + 0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43, + 0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b, + 0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7, + 0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18, + 0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90, + 0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1, + 0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d, + 0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24, + 0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c, + 0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d, + 0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54, + 0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4, + 0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18, + 0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x00,0x00,0x00,0x00,0x71,0x20,0x00,0x00, + 0x02,0x00,0x00,0x00,0x06,0x50,0x30,0x00,0xd2,0xd0,0x00,0x00,0x61,0x20,0x00,0x00, + 0x1b,0x00,0x00,0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x94,0x63,0x11,0x40,0x60,0x1c,0x73,0x10,0x42,0xc0,0x30,0x74,0x33,0x00,0x14,0x63, + 0x09,0x20,0x08,0x82,0x20,0x18,0x80,0x20,0x08,0x82,0xe0,0x30,0x96,0x00,0x82,0x20, + 0x88,0xff,0x02,0x08,0x82,0x20,0xfe,0xcd,0x00,0x90,0xcc,0x41,0x50,0xd4,0x24,0xd1, + 0xcc,0x00,0x10,0x8c,0x11,0x80,0x20,0x08,0xe2,0xdf,0x08,0xc0,0x0c,0x00,0x00,0x00, + 0xe6,0x20,0xf2,0xb1,0x00,0x81,0xcf,0x20,0x43,0x80,0x30,0x83,0x0c,0x01,0xe2,0xcc, + 0x36,0x20,0x11,0x30,0xdb,0x10,0x44,0xc1,0x6c,0x43,0x30,0x08,0x19,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _sdtx_fs_bytecode_metal_ios[2909] = { + 0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x5d,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd5,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0x2e,0x61,0xb5,0x48,0xc0,0xda,0xe2, + 0xd5,0xd0,0xc4,0x03,0x62,0x19,0xb0,0xc7,0xd7,0x9e,0x78,0x2c,0x20,0x75,0xa7,0xa5, + 0x35,0x9c,0xa0,0x5a,0x3e,0x5d,0xbc,0x8f,0xc9,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x04,0x00,0x00, + 0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17, + 0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x68,0x0a,0x00,0x00,0xff,0xff,0xff, + 0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0x97,0x02,0x00,0x00,0x0b,0x82,0x20, + 0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04, + 0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b, + 0x62,0x80,0x14,0x45,0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18, + 0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21, + 0x72,0x24,0x07,0xc8,0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00, + 0x00,0x51,0x18,0x00,0x00,0x89,0x00,0x00,0x00,0x1b,0xcc,0x25,0xf8,0xff,0xff,0xff, + 0xff,0x01,0x60,0x00,0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07, + 0x7a,0x60,0x87,0x7c,0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72, + 0x68,0x03,0x72,0x48,0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90, + 0x07,0x7a,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc, + 0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81, + 0x1d,0xca,0xa1,0x0d,0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d, + 0xd8,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87, + 0x79,0x98,0x87,0x36,0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36, + 0x30,0x07,0x78,0x68,0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c, + 0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0, + 0xe1,0x1d,0xd2,0xc1,0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90, + 0x87,0x70,0x68,0x87,0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07, + 0x79,0x68,0x83,0x72,0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36, + 0x60,0x87,0x72,0x08,0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30, + 0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8, + 0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01, + 0x1e,0xda,0x80,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60, + 0x87,0x79,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1, + 0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c, + 0xc8,0xa1,0x0d,0xf4,0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda, + 0xa0,0x1d,0xc2,0x81,0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77, + 0x78,0x87,0x36,0xa0,0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68, + 0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6, + 0x81,0x1e,0xc2,0x61,0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61, + 0x1c,0xe8,0xe1,0x1d,0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e, + 0xda,0x60,0x1e,0xd2,0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa8,0x07,0x77,0x98,0x87, + 0x70,0x30,0x87,0x72,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74, + 0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0xa2,0x1e,0xe6,0xa1,0x1c,0xda,0x60,0x1e, + 0xde,0xc1,0x1c,0xe8,0xa1,0x0d,0xcc,0x81,0x1d,0xde,0x21,0x1c,0xe8,0x01,0x30,0x87, + 0x70,0x60,0x87,0x79,0x28,0x07,0x60,0x83,0x21,0x0c,0xc0,0x02,0x54,0x1b,0x8c,0x81, + 0x00,0x16,0xa0,0xda,0x80,0x10,0xff,0xff,0xff,0xff,0x3f,0x00,0x0c,0x20,0x01,0xd5, + 0x06,0xa3,0x08,0x80,0x05,0xa8,0x36,0x18,0x86,0x00,0x2c,0x40,0x05,0x49,0x18,0x00, + 0x00,0x03,0x00,0x00,0x00,0x13,0x86,0x40,0x18,0x26,0x0c,0x44,0x61,0x00,0x00,0x00, + 0x00,0x89,0x20,0x00,0x00,0x21,0x00,0x00,0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85, + 0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a, + 0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x4c,0x33,0x00,0xc3,0x08,0x04,0x70,0x90,0x34,0x45, + 0x94,0x30,0xf9,0x0c,0x80,0x34,0xf4,0xef,0x50,0x13,0x0a,0xc2,0x30,0x82,0x00,0x1c, + 0x25,0x4d,0x11,0x25,0x4c,0xfe,0x3f,0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0xff,0x34, + 0x46,0x00,0x0c,0x22,0x10,0xc1,0x45,0xd2,0x14,0x51,0xc2,0xe4,0xff,0x12,0xc0,0x3c, + 0x0b,0x11,0xfd,0xd3,0x18,0x01,0x30,0x88,0x60,0x08,0xa5,0x10,0x23,0x94,0x43,0x68, + 0x8e,0x20,0x98,0x23,0x00,0x83,0x61,0x04,0x61,0x29,0x48,0x28,0x67,0x28,0xa6,0x00, + 0xb5,0x81,0x80,0x14,0x58,0xc3,0x08,0xc4,0x32,0x02,0x00,0x00,0x00,0x13,0xa8,0x70, + 0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68, + 0x83,0x74,0x78,0x87,0x79,0xc8,0x03,0x37,0x80,0x03,0x37,0x80,0x83,0x0d,0xb7,0x51, + 0x0e,0x6d,0x00,0x0f,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07, + 0x74,0xd0,0x06,0xe9,0x10,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e,0x78, + 0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9,0x10,0x07,0x76,0xa0,0x07,0x71,0x60, + 0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xe9,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07, + 0x7a,0x30,0x07,0x72,0xd0,0x06,0xe9,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a, + 0x60,0x07,0x74,0xd0,0x06,0xe6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30, + 0x07,0x72,0xd0,0x06,0xe6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07, + 0x74,0xd0,0x06,0xf6,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76, + 0xd0,0x06,0xf6,0x20,0x07,0x74,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0, + 0x06,0xf6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06, + 0xf6,0x40,0x07,0x78,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6, + 0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x90, + 0x07,0x76,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06, + 0xf6,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72, + 0x80,0x07,0x6d,0x60,0x0f,0x71,0x90,0x07,0x72,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0, + 0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07, + 0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x75,0x10,0x07,0x72, + 0xa0,0x07,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xd0,0x06,0xf6,0x10, + 0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07, + 0x70,0x20,0x07,0x74,0xd0,0x06,0xee,0x80,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x73, + 0x20,0x07,0x43,0x98,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x21,0x8c,0x03, + 0x04,0x80,0x00,0x00,0x00,0x00,0x00,0x40,0x16,0x08,0x00,0x00,0x00,0x08,0x00,0x00, + 0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43, + 0x5a,0x23,0x00,0x25,0x50,0x04,0x85,0x50,0x10,0x65,0x40,0x70,0x2c,0xa1,0x11,0x00, + 0x00,0x79,0x18,0x00,0x00,0xd9,0x00,0x00,0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2, + 0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x42,0x3c,0x00,0x84,0x50, + 0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62,0x2c,0xc3,0x23,0x2c, + 0x05,0xd7,0x20,0x08,0x0e,0x8e,0xad,0x0c,0x84,0x89,0xc9,0xaa,0x09,0xc4,0xae,0x4c, + 0x6e,0x2e,0xed,0xcd,0x0d,0x24,0x07,0x46,0xc6,0x25,0x07,0x04,0xa5,0xad,0x8c,0x2e, + 0x8c,0xcd,0xac,0xac,0x25,0x07,0x46,0xc6,0x25,0xc7,0xc5,0x26,0x26,0x65,0x88,0xf0, + 0x10,0x43,0x8c,0x65,0x58,0x8c,0x45,0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x79, + 0x8e,0x65,0x58,0x84,0x45,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6, + 0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6, + 0x56,0x36,0x44,0x78,0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c, + 0x65,0x2e,0x66,0x61,0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62, + 0x6c,0x65,0x43,0x84,0x67,0x21,0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5, + 0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99, + 0x95,0xd1,0x8d,0xa1,0x7d,0x95,0xb9,0x85,0x89,0xb1,0x95,0x0d,0x11,0x9e,0x86,0x61, + 0x10,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0xe2,0x16,0x46,0x97, + 0x66,0x57,0xf6,0x45,0xf6,0x56,0x27,0xc6,0x56,0xf6,0x45,0x96,0x36,0x17,0x26,0xc6, + 0x56,0x36,0x44,0x78,0x1e,0x92,0x41,0x58,0x9a,0x9c,0xcb,0xd8,0x5b,0x1b,0x5c,0x1a, + 0x5b,0x99,0x8b,0x5b,0x18,0x5d,0x9a,0x5d,0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0xdb, + 0x9b,0xdb,0xd9,0x17,0x59,0xda,0x5c,0x98,0x18,0x5b,0xd9,0x10,0xe1,0x89,0x78,0x06, + 0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x6e,0x61,0x74,0x69, + 0x76,0x65,0x5f,0x77,0x69,0x64,0x65,0x5f,0x76,0x65,0x63,0x74,0x6f,0x72,0x73,0x5f, + 0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x43,0x84,0x67,0x62,0x14,0x96,0x26,0xe7,0x22, + 0x57,0xe6,0x46,0x56,0x26,0xf7,0x45,0x17,0x26,0x77,0x56,0x46,0xc7,0x28,0x2c,0x4d, + 0xce,0x25,0x4c,0xee,0xec,0x8b,0x2e,0x0f,0xae,0xec,0xcb,0x2d,0xac,0xad,0x8c,0x86, + 0x19,0xdb,0x5b,0x18,0x1d,0x0d,0x99,0xb0,0x34,0x39,0x97,0x30,0xb9,0xb3,0x2f,0xb7, + 0xb0,0xb6,0x32,0x2a,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x43,0x98, + 0xa7,0x5a,0x84,0xc7,0x7a,0xae,0x07,0x7b,0xb2,0x21,0xc2,0xa3,0x51,0x0a,0x4b,0x93, + 0x73,0x31,0x93,0x0b,0x3b,0x6b,0x2b,0x73,0xa3,0xfb,0x4a,0x73,0x83,0xab,0xa3,0xe3, + 0x52,0x37,0x57,0x26,0x87,0xc2,0xf6,0x36,0xe6,0x06,0x93,0x42,0x25,0x2c,0x4d,0xce, + 0x65,0xac,0xcc,0x8d,0xae,0x4c,0x8e,0x4f,0x58,0x9a,0x9c,0x0b,0x5c,0x99,0xdc,0x1c, + 0x5c,0xd9,0x18,0x5d,0x9a,0x5d,0x19,0x0d,0x33,0xb6,0xb7,0x30,0x3a,0x19,0x0a,0x75, + 0x76,0x43,0xa4,0x45,0x78,0xb8,0xa7,0x7b,0xbc,0xe7,0x7b,0xac,0x07,0x0c,0x1e,0xec, + 0x09,0x03,0x2e,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x2c,0xc6, + 0xde,0xd8,0xde,0xe4,0x86,0x48,0xcb,0xf0,0x70,0xcf,0x18,0x3c,0xde,0xf3,0x3d,0xd6, + 0x73,0x3d,0xd8,0x43,0x06,0x5c,0xc2,0xd2,0xe4,0x5c,0xe8,0xca,0xf0,0xe8,0xea,0xe4, + 0xca,0x28,0x85,0xa5,0xc9,0xb9,0xb0,0xbd,0x8d,0x85,0xd1,0xa5,0xbd,0xb9,0x7d,0xa5, + 0xb9,0x91,0x95,0xe1,0x51,0x09,0x4b,0x93,0x73,0x99,0x0b,0x6b,0x83,0x63,0x2b,0x23, + 0x46,0x57,0x86,0x47,0x57,0x27,0x57,0x26,0x43,0xc6,0x63,0xc6,0xf6,0x16,0x46,0xc7, + 0x02,0x32,0x17,0xd6,0x06,0xc7,0x56,0xe6,0xc3,0x81,0xae,0x0c,0x6f,0x08,0xb5,0x10, + 0x8f,0x19,0x3c,0x67,0xb0,0x08,0xcb,0xf0,0xa0,0xc1,0x63,0x3d,0x69,0xf0,0x60,0x8f, + 0x1a,0x70,0x09,0x4b,0x93,0x73,0x99,0x0b,0x6b,0x83,0x63,0x2b,0x93,0xe3,0x31,0x17, + 0xd6,0x06,0xc7,0x56,0x26,0x47,0x84,0xae,0x0c,0x6f,0xaa,0x0d,0x8e,0x4d,0x6e,0x88, + 0xb4,0x1c,0x0f,0x1b,0x3c,0x67,0xb0,0x08,0xcb,0xf0,0x58,0x4f,0x1b,0x3c,0xd8,0xe3, + 0x06,0x43,0x90,0x47,0x0c,0x9e,0x32,0x78,0xd6,0xe0,0x79,0x83,0x21,0x46,0x02,0x3c, + 0xdb,0x03,0x07,0x23,0x22,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x77,0x20, + 0x87,0x7a,0x60,0x87,0x72,0x70,0x03,0x73,0x60,0x87,0x70,0x38,0x87,0x79,0x98,0x22, + 0x04,0xc3,0x08,0x85,0x1d,0xd8,0xc1,0x1e,0xda,0xc1,0x0d,0xd2,0x81,0x1c,0xca,0xc1, + 0x1d,0xe8,0x61,0x4a,0x50,0x8c,0x58,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xec,0xa1,0x1c, + 0xe4,0x61,0x1e,0xd2,0xe1,0x1d,0xdc,0x61,0x4a,0x60,0x8c,0xa0,0xc2,0x21,0x1d,0xe4, + 0xc1,0x0d,0xd8,0x21,0x1c,0xdc,0xe1,0x1c,0xea,0x21,0x1c,0xce,0xa1,0x1c,0x7e,0xc1, + 0x1e,0xca,0x41,0x1e,0xe6,0x21,0x1d,0xde,0xc1,0x1d,0xa6,0x04,0xc8,0x88,0x29,0x1c, + 0xd2,0x41,0x1e,0xdc,0x60,0x1c,0xde,0xa1,0x1d,0xe0,0x21,0x1d,0xd8,0xa1,0x1c,0x7e, + 0xe1,0x1d,0xe0,0x81,0x1e,0xd2,0xe1,0x1d,0xdc,0x61,0x1e,0xa6,0x18,0x0a,0xe3,0x40, + 0x12,0x35,0x82,0x09,0x87,0x74,0x90,0x07,0x37,0x30,0x07,0x79,0x08,0x87,0x73,0x68, + 0x87,0x72,0x70,0x07,0x7a,0x98,0x12,0xc4,0x01,0x00,0x00,0x00,0x00,0x79,0x18,0x00, + 0x00,0x6d,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d, + 0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c, + 0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d, + 0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d, + 0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79, + 0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc, + 0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50, + 0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30, + 0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03, + 0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07, + 0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76, + 0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98, + 0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8, + 0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21, + 0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43, + 0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f, + 0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70, + 0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0, + 0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40, + 0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41, + 0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e, + 0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07, + 0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f, + 0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d, + 0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38, + 0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88, + 0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08, + 0x07,0x7a,0x28,0x07,0x72,0x00,0x00,0x00,0x00,0x71,0x20,0x00,0x00,0x08,0x00,0x00, + 0x00,0x16,0xb0,0x01,0x48,0xe4,0x4b,0x00,0xf3,0x2c,0xc4,0x3f,0x11,0xd7,0x44,0x45, + 0xc4,0x6f,0x0f,0x7e,0x85,0x17,0xb7,0x6d,0x00,0x05,0x03,0x20,0x0d,0x0d,0x00,0x00, + 0x00,0x61,0x20,0x00,0x00,0x0f,0x00,0x00,0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00, + 0x00,0x06,0x00,0x00,0x00,0x14,0x47,0x00,0x88,0x8d,0x00,0x90,0x1a,0x01,0xa8,0x01, + 0x12,0x33,0x00,0x14,0x66,0x00,0x08,0x8c,0x00,0x00,0x00,0x00,0x00,0x23,0x06,0x8a, + 0x10,0x4c,0x09,0xb2,0x10,0x46,0x11,0x0c,0x32,0x04,0x03,0x62,0x01,0x23,0x9f,0xd9, + 0x06,0x23,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const char _sdtx_vs_src_metal_sim[624] = { + 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, + 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, + 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, + 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, + 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28, + 0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65, + 0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69, + 0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b, + 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e, + 0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74, + 0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64, + 0x30,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29, + 0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63, + 0x6f,0x6c,0x6f,0x72,0x30,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74, + 0x65,0x28,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x23,0x6c,0x69,0x6e, + 0x65,0x20,0x31,0x32,0x20,0x22,0x22,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61, + 0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b, + 0x7d,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x32,0x20,0x22,0x22,0x0a,0x20, + 0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69, + 0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x69,0x6e,0x2e, + 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x32,0x28,0x32,0x2e,0x30,0x2c,0x20,0x2d,0x32,0x2e,0x30,0x29,0x29,0x20,0x2b,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x2d,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, + 0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x23,0x6c, + 0x69,0x6e,0x65,0x20,0x31,0x33,0x20,0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75, + 0x74,0x2e,0x75,0x76,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f, + 0x72,0x64,0x30,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x34,0x20,0x22,0x22, + 0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, + 0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +static const char _sdtx_fs_src_metal_sim[475] = { + 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, + 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, + 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, + 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, + 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d, + 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, + 0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20, + 0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29, + 0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63, + 0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, + 0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20, + 0x31,0x31,0x20,0x22,0x22,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61, + 0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, + 0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x74,0x65,0x78,0x20,0x5b,0x5b, + 0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61, + 0x6d,0x70,0x6c,0x65,0x72,0x20,0x74,0x65,0x78,0x53,0x6d,0x70,0x6c,0x72,0x20,0x5b, + 0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f, + 0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31, + 0x31,0x20,0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61, + 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x2e,0x73,0x61, + 0x6d,0x70,0x6c,0x65,0x28,0x74,0x65,0x78,0x53,0x6d,0x70,0x6c,0x72,0x2c,0x20,0x69, + 0x6e,0x2e,0x75,0x76,0x29,0x2e,0x78,0x78,0x78,0x78,0x20,0x2a,0x20,0x69,0x6e,0x2e, + 0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_D3D11) +static const uint8_t _sdtx_vs_bytecode_d3d11[692] = { + 0x44,0x58,0x42,0x43,0x07,0x05,0xa0,0xb3,0x53,0xc1,0x0a,0x0d,0x1e,0xf4,0xe4,0xa6, + 0x91,0xaf,0x4c,0xca,0x01,0x00,0x00,0x00,0xb4,0x02,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0xe4,0x00,0x00,0x00,0x54,0x01,0x00,0x00, + 0x38,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff, + 0x10,0x81,0x00,0x00,0x1c,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66, + 0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65, + 0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x31,0x00, + 0x49,0x53,0x47,0x4e,0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x03,0x00,0x00, + 0x50,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44, + 0x00,0xab,0xab,0xab,0x4f,0x53,0x47,0x4e,0x68,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,0x50,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x00,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x54,0x45,0x58,0x43, + 0x4f,0x4f,0x52,0x44,0x00,0x53,0x56,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, + 0x00,0xab,0xab,0xab,0x53,0x48,0x44,0x52,0xdc,0x00,0x00,0x00,0x40,0x00,0x01,0x00, + 0x37,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00, + 0x5f,0x00,0x00,0x03,0x32,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x5f,0x00,0x00,0x03, + 0xf2,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0x32,0x20,0x10,0x00, + 0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00, + 0x67,0x00,0x00,0x04,0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x36,0x00,0x00,0x05,0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00, + 0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00, + 0x46,0x1e,0x10,0x00,0x02,0x00,0x00,0x00,0x32,0x00,0x00,0x0f,0x32,0x20,0x10,0x00, + 0x02,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x00,0x00, + 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x02,0x40,0x00,0x00,0x00,0x00,0x80,0xbf,0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x08,0xc2,0x20,0x10,0x00,0x02,0x00,0x00,0x00, + 0x02,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x80,0x3f,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00, +}; +static const uint8_t _sdtx_fs_bytecode_d3d11[620] = { + 0x44,0x58,0x42,0x43,0xcf,0x30,0x5f,0x26,0xe7,0xba,0x36,0x97,0xf8,0x97,0x06,0x8d, + 0x92,0xcc,0x4b,0x8a,0x01,0x00,0x00,0x00,0x6c,0x02,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0xd4,0x00,0x00,0x00,0x20,0x01,0x00,0x00,0x54,0x01,0x00,0x00, + 0xf0,0x01,0x00,0x00,0x52,0x44,0x45,0x46,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff, + 0x10,0x81,0x00,0x00,0x6d,0x00,0x00,0x00,0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x69,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x5f,0x74,0x65,0x78,0x5f,0x73,0x61,0x6d, + 0x70,0x6c,0x65,0x72,0x00,0x74,0x65,0x78,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f, + 0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64, + 0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x31, + 0x00,0xab,0xab,0xab,0x49,0x53,0x47,0x4e,0x44,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x38,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab, + 0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x61,0x72,0x67,0x65, + 0x74,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x94,0x00,0x00,0x00,0x40,0x00,0x00,0x00, + 0x25,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00, + 0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00, + 0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03, + 0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00, + 0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x45,0x00,0x00,0x09, + 0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00, + 0x38,0x00,0x00,0x07,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01, + 0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,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, + 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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +#elif defined(SOKOL_WGPU) +static const uint8_t _sdtx_vs_bytecode_wgpu[1648] = { + 0x03,0x02,0x23,0x07,0x00,0x00,0x01,0x00,0x08,0x00,0x08,0x00,0x2e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x11,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x0b,0x00,0x06,0x00, + 0x02,0x00,0x00,0x00,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30, + 0x00,0x00,0x00,0x00,0x0e,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, + 0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x24,0x00,0x00,0x00, + 0x25,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x2c,0x00,0x00,0x00, + 0x2d,0x00,0x00,0x00,0x07,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x37,0x00,0x02,0x00,0x00,0x00,0xc2,0x01,0x00,0x00,0x01,0x00,0x00,0x00, + 0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65, + 0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x76,0x75,0x6c,0x6b, + 0x61,0x6e,0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c, + 0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e, + 0x74,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c,0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f, + 0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64, + 0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x2d,0x65,0x6e,0x76,0x20,0x76,0x75,0x6c,0x6b, + 0x61,0x6e,0x31,0x2e,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c, + 0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x74,0x61,0x72,0x67,0x65, + 0x74,0x2d,0x65,0x6e,0x76,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c,0x0a,0x2f,0x2f,0x20, + 0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65, + 0x64,0x20,0x65,0x6e,0x74,0x72,0x79,0x2d,0x70,0x6f,0x69,0x6e,0x74,0x20,0x6d,0x61, + 0x69,0x6e,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x0a,0x00,0x05,0x00,0x04,0x00, + 0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x00,0x05,0x00,0x06,0x00, + 0x0c,0x00,0x00,0x00,0x67,0x6c,0x5f,0x50,0x65,0x72,0x56,0x65,0x72,0x74,0x65,0x78, + 0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x06,0x00,0x07,0x00, + 0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x67,0x6c,0x5f,0x50,0x6f,0x69,0x6e,0x74, + 0x53,0x69,0x7a,0x65,0x00,0x00,0x00,0x00,0x06,0x00,0x07,0x00,0x0c,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x67,0x6c,0x5f,0x43,0x6c,0x69,0x70,0x44,0x69,0x73,0x74,0x61, + 0x6e,0x63,0x65,0x00,0x06,0x00,0x07,0x00,0x0c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x67,0x6c,0x5f,0x43,0x75,0x6c,0x6c,0x44,0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x00, + 0x05,0x00,0x03,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x05,0x00, + 0x13,0x00,0x00,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x00,0x00,0x00, + 0x05,0x00,0x03,0x00,0x24,0x00,0x00,0x00,0x75,0x76,0x00,0x00,0x05,0x00,0x05,0x00, + 0x25,0x00,0x00,0x00,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x00,0x00, + 0x05,0x00,0x04,0x00,0x27,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x00, + 0x05,0x00,0x04,0x00,0x29,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x00, + 0x05,0x00,0x05,0x00,0x2c,0x00,0x00,0x00,0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65, + 0x78,0x49,0x44,0x00,0x05,0x00,0x06,0x00,0x2d,0x00,0x00,0x00,0x67,0x6c,0x5f,0x49, + 0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x00,0x00,0x00,0x48,0x00,0x05,0x00, + 0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x48,0x00,0x05,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x0b,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x0c,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x47,0x00,0x03,0x00, + 0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x13,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x24,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x25,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x27,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x29,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x2c,0x00,0x00,0x00, + 0x0b,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x2d,0x00,0x00,0x00, + 0x0b,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x13,0x00,0x02,0x00,0x03,0x00,0x00,0x00, + 0x21,0x00,0x03,0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x16,0x00,0x03,0x00, + 0x07,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x17,0x00,0x04,0x00,0x08,0x00,0x00,0x00, + 0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x15,0x00,0x04,0x00,0x09,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x09,0x00,0x00,0x00, + 0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x04,0x00,0x0b,0x00,0x00,0x00, + 0x07,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x0c,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x0d,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0c,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x0d,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x15,0x00,0x04,0x00,0x0f,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x2b,0x00,0x04,0x00,0x0f,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x17,0x00,0x04,0x00,0x11,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x11,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x2b,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x40, + 0x2b,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, + 0x2c,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x15,0x00,0x00,0x00, + 0x16,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x19,0x00,0x00,0x00, + 0x00,0x00,0x80,0xbf,0x2b,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x1a,0x00,0x00,0x00, + 0x00,0x00,0x80,0x3f,0x2c,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x1b,0x00,0x00,0x00, + 0x19,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x07,0x00,0x00,0x00, + 0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x21,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x23,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x23,0x00,0x00,0x00, + 0x24,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x12,0x00,0x00,0x00, + 0x25,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x21,0x00,0x00,0x00, + 0x27,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x28,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x28,0x00,0x00,0x00, + 0x29,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x2b,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x2b,0x00,0x00,0x00, + 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x2b,0x00,0x00,0x00, + 0x2d,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x36,0x00,0x05,0x00,0x03,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xf8,0x00,0x02,0x00, + 0x06,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x01,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00,0x11,0x00,0x00,0x00,0x14,0x00,0x00,0x00, + 0x13,0x00,0x00,0x00,0x85,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x18,0x00,0x00,0x00, + 0x14,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x81,0x00,0x05,0x00,0x11,0x00,0x00,0x00, + 0x1c,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x51,0x00,0x05,0x00, + 0x07,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x51,0x00,0x05,0x00,0x07,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x1c,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x50,0x00,0x07,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0x1a,0x00,0x00,0x00, + 0x41,0x00,0x05,0x00,0x21,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x0e,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x3e,0x00,0x03,0x00,0x22,0x00,0x00,0x00,0x20,0x00,0x00,0x00, + 0x08,0x00,0x04,0x00,0x01,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3d,0x00,0x04,0x00,0x11,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x25,0x00,0x00,0x00, + 0x3e,0x00,0x03,0x00,0x24,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x08,0x00,0x04,0x00, + 0x01,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00, + 0x08,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x3e,0x00,0x03,0x00, + 0x27,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0xfd,0x00,0x01,0x00,0x38,0x00,0x01,0x00, +}; +static const uint8_t _sdtx_fs_bytecode_wgpu[940] = { + 0x03,0x02,0x23,0x07,0x00,0x00,0x01,0x00,0x08,0x00,0x08,0x00,0x1a,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x11,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x0b,0x00,0x06,0x00, + 0x02,0x00,0x00,0x00,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30, + 0x00,0x00,0x00,0x00,0x0e,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x00,0x08,0x00,0x04,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, + 0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x17,0x00,0x00,0x00, + 0x10,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x03,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x37,0x00,0x02,0x00,0x00,0x00, + 0xc2,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64, + 0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69, + 0x65,0x6e,0x74,0x20,0x76,0x75,0x6c,0x6b,0x61,0x6e,0x31,0x30,0x30,0x0a,0x2f,0x2f, + 0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73, + 0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c, + 0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50, + 0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x2d, + 0x65,0x6e,0x76,0x20,0x76,0x75,0x6c,0x6b,0x61,0x6e,0x31,0x2e,0x30,0x0a,0x2f,0x2f, + 0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73, + 0x65,0x64,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x2d,0x65,0x6e,0x76,0x20,0x6f,0x70, + 0x65,0x6e,0x67,0x6c,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65, + 0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x65,0x6e,0x74,0x72,0x79,0x2d, + 0x70,0x6f,0x69,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x0a,0x23,0x6c,0x69,0x6e,0x65, + 0x20,0x31,0x0a,0x00,0x05,0x00,0x04,0x00,0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, + 0x00,0x00,0x00,0x00,0x05,0x00,0x05,0x00,0x0a,0x00,0x00,0x00,0x66,0x72,0x61,0x67, + 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x05,0x00,0x03,0x00,0x0e,0x00,0x00,0x00, + 0x74,0x65,0x78,0x00,0x05,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x75,0x76,0x00,0x00, + 0x05,0x00,0x04,0x00,0x17,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x0a,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x17,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x13,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x21,0x00,0x03,0x00,0x04,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x16,0x00,0x03,0x00,0x07,0x00,0x00,0x00,0x20,0x00,0x00,0x00, + 0x17,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x19,0x00,0x09,0x00,0x0b,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x1b,0x00,0x03,0x00,0x0c,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x0d,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x17,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x11,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x11,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x16,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x16,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x36,0x00,0x05,0x00,0x03,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0xf8,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x08,0x00,0x04,0x00, + 0x01,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00, + 0x0c,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x3d,0x00,0x04,0x00, + 0x10,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x57,0x00,0x05,0x00, + 0x08,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x13,0x00,0x00,0x00, + 0x4f,0x00,0x09,0x00,0x08,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x14,0x00,0x00,0x00, + 0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x00, + 0x17,0x00,0x00,0x00,0x85,0x00,0x05,0x00,0x08,0x00,0x00,0x00,0x19,0x00,0x00,0x00, + 0x15,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x3e,0x00,0x03,0x00,0x0a,0x00,0x00,0x00, + 0x19,0x00,0x00,0x00,0xfd,0x00,0x01,0x00,0x38,0x00,0x01,0x00, +}; +#elif defined(SOKOL_DUMMY_BACKEND) +static const char* _sdtx_vs_src_dummy = ""; +static const char* _sdtx_fs_src_dummy = ""; +#else +#error "Please define one of SOKOL_GLCORE33, SOKOL_GLES3, SOKOL_D3D11, SOKOL_METAL, SOKOL_WGPU or SOKOL_DUMMY_BACKEND!" +#endif + +// ███████ ████████ ██████ ██ ██ ██████ ████████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██████ ██ ██ ██ ██ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██ ██ ██████ ██████ ██ ███████ +// +// >>structs +typedef struct { + uint32_t id; + sg_resource_state state; +} _sdtx_slot_t; + +typedef struct { + int size; + int queue_top; + uint32_t* gen_ctrs; + int* free_queue; +} _sdtx_pool_t; + +typedef struct { + float x, y; +} _sdtx_float2_t; + +typedef struct { + float x, y; + uint16_t u, v; + uint32_t color; +} _sdtx_vertex_t; + +typedef struct { + int layer_id; + int first_vertex; + int num_vertices; +} _sdtx_command_t; + +typedef struct { + _sdtx_slot_t slot; + sdtx_context_desc_t desc; + uint32_t frame_id; + uint32_t update_frame_id; + struct { + int cap; + int next; + _sdtx_vertex_t* ptr; + } vertices; + struct { + int cap; + int next; + _sdtx_command_t* ptr; + } commands; + sg_buffer vbuf; + sg_pipeline pip; + int cur_font; + int cur_layer_id; + _sdtx_float2_t canvas_size; + _sdtx_float2_t glyph_size; + _sdtx_float2_t origin; + _sdtx_float2_t pos; + float tab_width; + uint32_t color; +} _sdtx_context_t; + +typedef struct { + _sdtx_pool_t pool; + _sdtx_context_t* contexts; +} _sdtx_context_pool_t; + +typedef struct { + uint32_t init_cookie; + sdtx_desc_t desc; + sg_image font_img; + sg_shader shader; + uint32_t fmt_buf_size; + char* fmt_buf; + sdtx_context def_ctx_id; + sdtx_context cur_ctx_id; + _sdtx_context_t* cur_ctx; // may be 0! + _sdtx_context_pool_t context_pool; + uint8_t font_pixels[SDTX_MAX_FONTS * 256 * 8 * 8]; +} _sdtx_t; +static _sdtx_t _sdtx; + +// ██ ██████ ██████ ██████ ██ ███ ██ ██████ +// ██ ██ ██ ██ ██ ██ ████ ██ ██ +// ██ ██ ██ ██ ███ ██ ███ ██ ██ ██ ██ ██ ███ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██████ ██████ ██████ ██ ██ ████ ██████ +// +// >>logging +#if defined(SOKOL_DEBUG) +#define _SDTX_LOGITEM_XMACRO(item,msg) #item ": " msg, +static const char* _sdtx_log_messages[] = { + _SDTX_LOG_ITEMS +}; +#undef _SDTX_LOGITEM_XMACRO +#endif // SOKOL_DEBUG + +#define _SDTX_PANIC(code) _sdtx_log(SDTX_LOGITEM_ ##code, 0, __LINE__) +#define _SDTX_ERROR(code) _sdtx_log(SDTX_LOGITEM_ ##code, 1, __LINE__) +#define _SDTX_WARN(code) _sdtx_log(SDTX_LOGITEM_ ##code, 2, __LINE__) +#define _SDTX_INFO(code) _sdtx_log(SDTX_LOGITEM_ ##code, 3, __LINE__) + +static void _sdtx_log(sdtx_log_item_t log_item, uint32_t log_level, uint32_t line_nr) { + if (_sdtx.desc.logger.func) { + #if defined(SOKOL_DEBUG) + const char* filename = __FILE__; + const char* message = _sdtx_log_messages[log_item]; + #else + const char* filename = 0; + const char* message = 0; + #endif + _sdtx.desc.logger.func("sdtx", log_level, log_item, message, line_nr, filename, _sdtx.desc.logger.user_data); + } + else { + // for log level PANIC it would be 'undefined behaviour' to continue + if (log_level == 0) { + abort(); + } + } +} + +// ███ ███ ███████ ███ ███ ██████ ██████ ██ ██ +// ████ ████ ██ ████ ████ ██ ██ ██ ██ ██ ██ +// ██ ████ ██ █████ ██ ████ ██ ██ ██ ██████ ████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ██ ██ ██████ ██ ██ ██ +// +// >>memory +static void _sdtx_clear(void* ptr, size_t size) { + SOKOL_ASSERT(ptr && (size > 0)); + memset(ptr, 0, size); +} + +static void* _sdtx_malloc(size_t size) { + SOKOL_ASSERT(size > 0); + void* ptr; + if (_sdtx.desc.allocator.alloc) { + ptr = _sdtx.desc.allocator.alloc(size, _sdtx.desc.allocator.user_data); + } + else { + ptr = malloc(size); + } + if (0 == ptr) { + _SDTX_PANIC(MALLOC_FAILED); + } + return ptr; +} + +static void* _sdtx_malloc_clear(size_t size) { + void* ptr = _sdtx_malloc(size); + _sdtx_clear(ptr, size); + return ptr; +} + +static void _sdtx_free(void* ptr) { + if (_sdtx.desc.allocator.free) { + _sdtx.desc.allocator.free(ptr, _sdtx.desc.allocator.user_data); + } + else { + free(ptr); + } +} + +// ██████ ██████ ███ ██ ████████ ███████ ██ ██ ████████ ██████ ██████ ██████ ██ +// ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ █████ ███ ██ ██████ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██████ ██ ████ ██ ███████ ██ ██ ██ ██ ██████ ██████ ███████ +// +// >>context pool +static void _sdtx_init_pool(_sdtx_pool_t* pool, int num) { + SOKOL_ASSERT(pool && (num >= 1)); + /* slot 0 is reserved for the 'invalid id', so bump the pool size by 1 */ + pool->size = num + 1; + pool->queue_top = 0; + /* generation counters indexable by pool slot index, slot 0 is reserved */ + size_t gen_ctrs_size = sizeof(uint32_t) * (size_t)pool->size; + pool->gen_ctrs = (uint32_t*) _sdtx_malloc_clear(gen_ctrs_size); + /* it's not a bug to only reserve 'num' here */ + pool->free_queue = (int*) _sdtx_malloc_clear(sizeof(int) * (size_t)num); + /* never allocate the zero-th pool item since the invalid id is 0 */ + for (int i = pool->size-1; i >= 1; i--) { + pool->free_queue[pool->queue_top++] = i; + } +} + +static void _sdtx_discard_pool(_sdtx_pool_t* pool) { + SOKOL_ASSERT(pool); + SOKOL_ASSERT(pool->free_queue); + _sdtx_free(pool->free_queue); + pool->free_queue = 0; + SOKOL_ASSERT(pool->gen_ctrs); + _sdtx_free(pool->gen_ctrs); + pool->gen_ctrs = 0; + pool->size = 0; + pool->queue_top = 0; +} + +static int _sdtx_pool_alloc_index(_sdtx_pool_t* pool) { + SOKOL_ASSERT(pool); + SOKOL_ASSERT(pool->free_queue); + if (pool->queue_top > 0) { + int slot_index = pool->free_queue[--pool->queue_top]; + SOKOL_ASSERT((slot_index > 0) && (slot_index < pool->size)); + return slot_index; + } + else { + /* pool exhausted */ + return _SDTX_INVALID_SLOT_INDEX; + } +} + +static void _sdtx_pool_free_index(_sdtx_pool_t* pool, int slot_index) { + SOKOL_ASSERT((slot_index > _SDTX_INVALID_SLOT_INDEX) && (slot_index < pool->size)); + SOKOL_ASSERT(pool); + SOKOL_ASSERT(pool->free_queue); + SOKOL_ASSERT(pool->queue_top < pool->size); + #ifdef SOKOL_DEBUG + /* debug check against double-free */ + for (int i = 0; i < pool->queue_top; i++) { + SOKOL_ASSERT(pool->free_queue[i] != slot_index); + } + #endif + pool->free_queue[pool->queue_top++] = slot_index; + SOKOL_ASSERT(pool->queue_top <= (pool->size-1)); +} + +static void _sdtx_setup_context_pool(const sdtx_desc_t* desc) { + SOKOL_ASSERT(desc); + /* note: the pool will have an additional item, since slot 0 is reserved */ + SOKOL_ASSERT((desc->context_pool_size > 0) && (desc->context_pool_size < _SDTX_MAX_POOL_SIZE)); + _sdtx_init_pool(&_sdtx.context_pool.pool, desc->context_pool_size); + size_t pool_byte_size = sizeof(_sdtx_context_t) * (size_t)_sdtx.context_pool.pool.size; + _sdtx.context_pool.contexts = (_sdtx_context_t*) _sdtx_malloc_clear(pool_byte_size); +} + +static void _sdtx_discard_context_pool(void) { + SOKOL_ASSERT(_sdtx.context_pool.contexts); + _sdtx_free(_sdtx.context_pool.contexts); + _sdtx.context_pool.contexts = 0; + _sdtx_discard_pool(&_sdtx.context_pool.pool); +} + +/* allocate the slot at slot_index: + - bump the slot's generation counter + - create a resource id from the generation counter and slot index + - set the slot's id to this id + - set the slot's state to ALLOC + - return the resource id +*/ +static uint32_t _sdtx_slot_alloc(_sdtx_pool_t* pool, _sdtx_slot_t* slot, int slot_index) { + /* FIXME: add handling for an overflowing generation counter, + for now, just overflow (another option is to disable + the slot) + */ + SOKOL_ASSERT(pool && pool->gen_ctrs); + SOKOL_ASSERT((slot_index > _SDTX_INVALID_SLOT_INDEX) && (slot_index < pool->size)); + SOKOL_ASSERT((slot->state == SG_RESOURCESTATE_INITIAL) && (slot->id == SG_INVALID_ID)); + uint32_t ctr = ++pool->gen_ctrs[slot_index]; + slot->id = (ctr<<_SDTX_SLOT_SHIFT)|(slot_index & _SDTX_SLOT_MASK); + slot->state = SG_RESOURCESTATE_ALLOC; + return slot->id; +} + +/* extract slot index from id */ +static int _sdtx_slot_index(uint32_t id) { + int slot_index = (int) (id & _SDTX_SLOT_MASK); + SOKOL_ASSERT(_SDTX_INVALID_SLOT_INDEX != slot_index); + return slot_index; +} + +/* get context pointer without id-check */ +static _sdtx_context_t* _sdtx_context_at(uint32_t ctx_id) { + SOKOL_ASSERT(SG_INVALID_ID != ctx_id); + int slot_index = _sdtx_slot_index(ctx_id); + SOKOL_ASSERT((slot_index > _SDTX_INVALID_SLOT_INDEX) && (slot_index < _sdtx.context_pool.pool.size)); + return &_sdtx.context_pool.contexts[slot_index]; +} + +/* get context pointer with id-check, returns 0 if no match */ +static _sdtx_context_t* _sdtx_lookup_context(uint32_t ctx_id) { + if (SG_INVALID_ID != ctx_id) { + _sdtx_context_t* ctx = _sdtx_context_at(ctx_id); + if (ctx->slot.id == ctx_id) { + return ctx; + } + } + return 0; +} + +/* make context handle from raw uint32_t id */ +static sdtx_context _sdtx_make_ctx_id(uint32_t ctx_id) { + sdtx_context ctx; + ctx.id = ctx_id; + return ctx; +} + +static sdtx_context _sdtx_alloc_context(void) { + sdtx_context ctx_id; + int slot_index = _sdtx_pool_alloc_index(&_sdtx.context_pool.pool); + if (_SDTX_INVALID_SLOT_INDEX != slot_index) { + ctx_id = _sdtx_make_ctx_id(_sdtx_slot_alloc(&_sdtx.context_pool.pool, &_sdtx.context_pool.contexts[slot_index].slot, slot_index)); + } + else { + /* pool is exhausted */ + ctx_id = _sdtx_make_ctx_id(SG_INVALID_ID); + } + return ctx_id; +} + +static sdtx_context_desc_t _sdtx_context_desc_defaults(const sdtx_context_desc_t* desc) { + sdtx_context_desc_t res = *desc; + res.max_commands = _sdtx_def(res.max_commands, _SDTX_DEFAULT_MAX_COMMANDS); + res.char_buf_size = _sdtx_def(res.char_buf_size, _SDTX_DEFAULT_CHAR_BUF_SIZE); + res.canvas_width = _sdtx_def(res.canvas_width, _SDTX_DEFAULT_CANVAS_WIDTH); + res.canvas_height = _sdtx_def(res.canvas_height, _SDTX_DEFAULT_CANVAS_HEIGHT); + res.tab_width = _sdtx_def(res.tab_width, _SDTX_DEFAULT_TAB_WIDTH); + /* keep pixel format attrs are passed as is into pipeline creation */ + SOKOL_ASSERT(res.char_buf_size > 0); + SOKOL_ASSERT(res.canvas_width > 0.0f); + SOKOL_ASSERT(res.canvas_height > 0.0f); + return res; +} + +static void _sdtx_set_layer(_sdtx_context_t* ctx, int layer_id); +static void _sdtx_rewind(_sdtx_context_t* ctx) { + SOKOL_ASSERT(ctx); + ctx->frame_id++; + ctx->vertices.next = 0; + ctx->commands.next = 0; + _sdtx_set_layer(ctx, 0); + ctx->cur_font = 0; + ctx->pos.x = 0.0f; + ctx->pos.y = 0.0f; +} + +static void _sdtx_commit_listener(void* userdata) { + _sdtx_context_t* ctx = _sdtx_lookup_context((uint32_t)(uintptr_t)userdata); + if (ctx) { + _sdtx_rewind(ctx); + } +} + +static sg_commit_listener _sdtx_make_commit_listener(_sdtx_context_t* ctx) { + sg_commit_listener listener = { _sdtx_commit_listener, (void*)(uintptr_t)(ctx->slot.id) }; + return listener; +} + +static void _sdtx_init_context(sdtx_context ctx_id, const sdtx_context_desc_t* in_desc) { + sg_push_debug_group("sokol-debugtext"); + + SOKOL_ASSERT((ctx_id.id != SG_INVALID_ID) && in_desc); + _sdtx_context_t* ctx = _sdtx_lookup_context(ctx_id.id); + SOKOL_ASSERT(ctx); + ctx->desc = _sdtx_context_desc_defaults(in_desc); + // NOTE: frame_id must be non-zero, so that updates trigger in first frame + ctx->frame_id = 1; + + ctx->vertices.cap = 6 * ctx->desc.char_buf_size; + const size_t vbuf_size = (size_t)ctx->vertices.cap * sizeof(_sdtx_vertex_t); + ctx->vertices.ptr = (_sdtx_vertex_t*) _sdtx_malloc(vbuf_size); + + ctx->commands.cap = ctx->desc.max_commands; + ctx->commands.ptr = (_sdtx_command_t*) _sdtx_malloc((size_t)ctx->commands.cap * sizeof(_sdtx_command_t)); + _sdtx_set_layer(ctx, 0); + + sg_buffer_desc vbuf_desc; + _sdtx_clear(&vbuf_desc, sizeof(vbuf_desc)); + vbuf_desc.size = vbuf_size; + vbuf_desc.type = SG_BUFFERTYPE_VERTEXBUFFER; + vbuf_desc.usage = SG_USAGE_STREAM; + vbuf_desc.label = "sdtx-vbuf"; + ctx->vbuf = sg_make_buffer(&vbuf_desc); + SOKOL_ASSERT(SG_INVALID_ID != ctx->vbuf.id); + + sg_pipeline_desc pip_desc; + _sdtx_clear(&pip_desc, sizeof(pip_desc)); + pip_desc.layout.buffers[0].stride = sizeof(_sdtx_vertex_t); + pip_desc.layout.attrs[0].format = SG_VERTEXFORMAT_FLOAT2; + pip_desc.layout.attrs[1].format = SG_VERTEXFORMAT_USHORT2N; + pip_desc.layout.attrs[2].format = SG_VERTEXFORMAT_UBYTE4N; + pip_desc.shader = _sdtx.shader; + pip_desc.index_type = SG_INDEXTYPE_NONE; + pip_desc.sample_count = ctx->desc.sample_count; + pip_desc.depth.pixel_format = ctx->desc.depth_format; + pip_desc.colors[0].pixel_format = ctx->desc.color_format; + pip_desc.colors[0].blend.enabled = true; + pip_desc.colors[0].blend.src_factor_rgb = SG_BLENDFACTOR_SRC_ALPHA; + pip_desc.colors[0].blend.dst_factor_rgb = SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA; + pip_desc.colors[0].blend.src_factor_alpha = SG_BLENDFACTOR_ZERO; + pip_desc.colors[0].blend.dst_factor_alpha = SG_BLENDFACTOR_ONE; + pip_desc.label = "sdtx-pipeline"; + ctx->pip = sg_make_pipeline(&pip_desc); + SOKOL_ASSERT(SG_INVALID_ID != ctx->pip.id); + + ctx->canvas_size.x = ctx->desc.canvas_width; + ctx->canvas_size.y = ctx->desc.canvas_height; + ctx->glyph_size.x = 8.0f / ctx->canvas_size.x; + ctx->glyph_size.y = 8.0f / ctx->canvas_size.y; + ctx->tab_width = (float) ctx->desc.tab_width; + ctx->color = _SDTX_DEFAULT_COLOR; + + if (!sg_add_commit_listener(_sdtx_make_commit_listener(ctx))) { + _SDTX_ERROR(ADD_COMMIT_LISTENER_FAILED); + } + sg_pop_debug_group(); +} + +static void _sdtx_destroy_context(sdtx_context ctx_id) { + _sdtx_context_t* ctx = _sdtx_lookup_context(ctx_id.id); + if (ctx) { + if (ctx->vertices.ptr) { + _sdtx_free(ctx->vertices.ptr); + ctx->vertices.ptr = 0; + ctx->vertices.cap = 0; + ctx->vertices.next = 0; + } + if (ctx->commands.ptr) { + _sdtx_free(ctx->commands.ptr); + ctx->commands.ptr = 0; + ctx->commands.cap = 0; + ctx->commands.next = 0; + } + sg_push_debug_group("sokol_debugtext"); + sg_destroy_buffer(ctx->vbuf); + sg_destroy_pipeline(ctx->pip); + sg_remove_commit_listener(_sdtx_make_commit_listener(ctx)); + sg_pop_debug_group(); + _sdtx_clear(ctx, sizeof(*ctx)); + _sdtx_pool_free_index(&_sdtx.context_pool.pool, _sdtx_slot_index(ctx_id.id)); + } +} + +static bool _sdtx_is_default_context(sdtx_context ctx_id) { + return ctx_id.id == SDTX_DEFAULT_CONTEXT.id; +} + +// ███ ███ ██ ███████ ██████ +// ████ ████ ██ ██ ██ +// ██ ████ ██ ██ ███████ ██ +// ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ███████ ██████ +// +// >>misc + +/* unpack linear 8x8 bits-per-pixel font data into 2D byte-per-pixel texture data */ +static void _sdtx_unpack_font(const sdtx_font_desc_t* font_desc, uint8_t* out_pixels) { + SOKOL_ASSERT(font_desc->data.ptr); + SOKOL_ASSERT((font_desc->data.size > 0) && ((font_desc->data.size % 8) == 0)); + SOKOL_ASSERT(font_desc->first_char <= font_desc->last_char); + SOKOL_ASSERT((size_t)(((font_desc->last_char - font_desc->first_char) + 1) * 8) == font_desc->data.size); + const uint8_t* ptr = (const uint8_t*) font_desc->data.ptr; + for (int chr = font_desc->first_char; chr <= font_desc->last_char; chr++) { + for (int line = 0; line < 8; line++) { + uint8_t bits = *ptr++; + for (int x = 0; x < 8; x++) { + out_pixels[line*256*8 + chr*8 + x] = ((bits>>(7-x)) & 1) ? 0xFF : 0x00; + } + } + } +} + +static void _sdtx_setup_common(void) { + + /* common printf formatting buffer */ + _sdtx.fmt_buf_size = (uint32_t) _sdtx.desc.printf_buf_size + 1; + _sdtx.fmt_buf = (char*) _sdtx_malloc_clear(_sdtx.fmt_buf_size); + + sg_push_debug_group("sokol-debugtext"); + + /* common shader for all contexts */ + sg_shader_desc shd_desc; + _sdtx_clear(&shd_desc, sizeof(shd_desc)); + shd_desc.label = "sokol-debugtext-shader"; + shd_desc.attrs[0].name = "position"; + shd_desc.attrs[1].name = "texcoord0"; + shd_desc.attrs[2].name = "color0"; + shd_desc.attrs[0].sem_name = "TEXCOORD"; + shd_desc.attrs[0].sem_index = 0; + shd_desc.attrs[1].sem_name = "TEXCOORD"; + shd_desc.attrs[1].sem_index = 1; + shd_desc.attrs[2].sem_name = "TEXCOORD"; + shd_desc.attrs[2].sem_index = 2; + shd_desc.fs.images[0].name = "tex"; + shd_desc.fs.images[0].image_type = SG_IMAGETYPE_2D; + shd_desc.fs.images[0].sampler_type = SG_SAMPLERTYPE_FLOAT; + #if defined(SOKOL_GLCORE33) + shd_desc.vs.source = _sdtx_vs_src_glsl330; + shd_desc.fs.source = _sdtx_fs_src_glsl330; + #elif defined(SOKOL_GLES3) + shd_desc.vs.source = _sdtx_vs_src_glsl300es; + shd_desc.fs.source = _sdtx_fs_src_glsl300es; + #elif defined(SOKOL_METAL) + shd_desc.vs.entry = "main0"; + shd_desc.fs.entry = "main0"; + switch (sg_query_backend()) { + case SG_BACKEND_METAL_MACOS: + shd_desc.vs.bytecode = SG_RANGE(_sdtx_vs_bytecode_metal_macos); + shd_desc.fs.bytecode = SG_RANGE(_sdtx_fs_bytecode_metal_macos); + break; + case SG_BACKEND_METAL_IOS: + shd_desc.vs.bytecode = SG_RANGE(_sdtx_vs_bytecode_metal_ios); + shd_desc.fs.bytecode = SG_RANGE(_sdtx_fs_bytecode_metal_ios); + break; + default: + shd_desc.vs.source = _sdtx_vs_src_metal_sim; + shd_desc.fs.source = _sdtx_fs_src_metal_sim; + break; + } + #elif defined(SOKOL_D3D11) + shd_desc.vs.bytecode = SG_RANGE(_sdtx_vs_bytecode_d3d11); + shd_desc.fs.bytecode = SG_RANGE(_sdtx_fs_bytecode_d3d11); + #elif defined(SOKOL_WGPU) + shd_desc.vs.bytecode = SG_RANGE(_sdtx_vs_bytecode_wgpu); + shd_desc.fs.bytecode = SG_RANGE(_sdtx_fs_bytecode_wgpu); + #else + shd_desc.vs.source = _sdtx_vs_src_dummy; + shd_desc.fs.source = _sdtx_fs_src_dummy; + #endif + _sdtx.shader = sg_make_shader(&shd_desc); + SOKOL_ASSERT(SG_INVALID_ID != _sdtx.shader.id); + + /* unpack font data */ + memset(_sdtx.font_pixels, 0xFF, sizeof(_sdtx.font_pixels)); + const int unpacked_font_size = (int) (sizeof(_sdtx.font_pixels) / SDTX_MAX_FONTS); + for (int i = 0; i < SDTX_MAX_FONTS; i++) { + if (_sdtx.desc.fonts[i].data.ptr) { + _sdtx_unpack_font(&_sdtx.desc.fonts[i], &_sdtx.font_pixels[i * unpacked_font_size]); + } + } + + /* create font texture */ + sg_image_desc img_desc; + _sdtx_clear(&img_desc, sizeof(img_desc)); + img_desc.width = 256 * 8; + img_desc.height = SDTX_MAX_FONTS * 8; + img_desc.pixel_format = SG_PIXELFORMAT_R8; + img_desc.min_filter = SG_FILTER_NEAREST; + img_desc.mag_filter = SG_FILTER_NEAREST; + img_desc.wrap_u = SG_WRAP_CLAMP_TO_EDGE; + img_desc.wrap_v = SG_WRAP_CLAMP_TO_EDGE; + img_desc.data.subimage[0][0] = SG_RANGE(_sdtx.font_pixels); + img_desc.label = "sdtx-font-texture"; + _sdtx.font_img = sg_make_image(&img_desc); + SOKOL_ASSERT(SG_INVALID_ID != _sdtx.font_img.id); + + sg_pop_debug_group(); +} + +static void _sdtx_discard_common(void) { + sg_push_debug_group("sokol-debugtext"); + sg_destroy_image(_sdtx.font_img); + sg_destroy_shader(_sdtx.shader); + if (_sdtx.fmt_buf) { + _sdtx_free(_sdtx.fmt_buf); + _sdtx.fmt_buf = 0; + } + sg_pop_debug_group(); +} + +static uint32_t _sdtx_pack_rgbab(uint8_t r, uint8_t g, uint8_t b, uint8_t a) { + return (uint32_t)(((uint32_t)a<<24)|((uint32_t)b<<16)|((uint32_t)g<<8)|r); +} + +static float _sdtx_clamp(float v, float lo, float hi) { + if (v < lo) return lo; + else if (v > hi) return hi; + else return v; +} + +static uint32_t _sdtx_pack_rgbaf(float r, float g, float b, float a) { + uint8_t r_u8 = (uint8_t) (_sdtx_clamp(r, 0.0f, 1.0f) * 255.0f); + uint8_t g_u8 = (uint8_t) (_sdtx_clamp(g, 0.0f, 1.0f) * 255.0f); + uint8_t b_u8 = (uint8_t) (_sdtx_clamp(b, 0.0f, 1.0f) * 255.0f); + uint8_t a_u8 = (uint8_t) (_sdtx_clamp(a, 0.0f, 1.0f) * 255.0f); + return _sdtx_pack_rgbab(r_u8, g_u8, b_u8, a_u8); +} + +static void _sdtx_ctrl_char(_sdtx_context_t* ctx, uint8_t c) { + switch (c) { + case '\r': + ctx->pos.x = 0.0f; + break; + case '\n': + ctx->pos.x = 0.0f; + ctx->pos.y += 1.0f; + break; + case '\t': + ctx->pos.x = (ctx->pos.x - fmodf(ctx->pos.x, ctx->tab_width)) + ctx->tab_width; + break; + case ' ': + ctx->pos.x += 1.0f; + break; + } +} + +static _sdtx_vertex_t* _sdtx_next_vertex(_sdtx_context_t* ctx) { + if ((ctx->vertices.next + 6) <= ctx->vertices.cap) { + _sdtx_vertex_t* vx = &ctx->vertices.ptr[ctx->vertices.next]; + ctx->vertices.next += 6; + return vx; + } + else { + return 0; + } +} + +static _sdtx_command_t* _sdtx_cur_command(_sdtx_context_t* ctx) { + if (ctx->commands.next > 0) { + return &ctx->commands.ptr[ctx->commands.next - 1]; + } + else { + return 0; + } +} + +static _sdtx_command_t* _sdtx_next_command(_sdtx_context_t* ctx) { + if (ctx->commands.next < ctx->commands.cap) { + return &ctx->commands.ptr[ctx->commands.next++]; + } + else { + _SDTX_ERROR(COMMAND_BUFFER_FULL); + return 0; + } +} + +static void _sdtx_set_layer(_sdtx_context_t* ctx, int layer_id) { + ctx->cur_layer_id = layer_id; + _sdtx_command_t* cur_cmd = _sdtx_cur_command(ctx); + if (cur_cmd) { + if ((cur_cmd->num_vertices == 0) || (cur_cmd->layer_id == layer_id)) { + // no vertices recorded in current draw command, or layer hasn't changed, can just reuse this + cur_cmd->layer_id = layer_id; + } + else { + // layer has changed, need to start a new draw command + _sdtx_command_t* next_cmd = _sdtx_next_command(ctx); + if (next_cmd) { + next_cmd->layer_id = layer_id; + next_cmd->first_vertex = cur_cmd->first_vertex + cur_cmd->num_vertices; + next_cmd->num_vertices = 0; + } + } + } + else { + // first draw command in frame + _sdtx_command_t* next_cmd = _sdtx_next_command(ctx); + if (next_cmd) { + next_cmd->layer_id = layer_id; + next_cmd->first_vertex = 0; + next_cmd->num_vertices = 0; + } + } +} + +static void _sdtx_render_char(_sdtx_context_t* ctx, uint8_t c) { + _sdtx_vertex_t* vx = _sdtx_next_vertex(ctx); + _sdtx_command_t* cmd = _sdtx_cur_command(ctx); + if (vx && cmd) { + // update vertex count in current draw command + cmd->num_vertices += 6; + + const float x0 = (ctx->origin.x + ctx->pos.x) * ctx->glyph_size.x; + const float y0 = (ctx->origin.y + ctx->pos.y) * ctx->glyph_size.y; + const float x1 = x0 + ctx->glyph_size.x; + const float y1 = y0 + ctx->glyph_size.y; + + // glyph width and heigth in font texture space + // NOTE: the '+1' and '-2' fixes texture bleeding into the neighboring font texture cell + const uint16_t uvw = 0x10000 / 0x100; + const uint16_t uvh = 0x10000 / SDTX_MAX_FONTS; + const uint16_t u0 = (((uint16_t)c) * uvw) + 1; + const uint16_t v0 = (((uint16_t)ctx->cur_font) * uvh) + 1; + uint16_t u1 = (u0 + uvw) - 2; + uint16_t v1 = (v0 + uvh) - 2; + const uint32_t color = ctx->color; + + // write 6 vertices + vx->x=x0; vx->y=y0; vx->u = u0; vx->v = v0; vx->color = color; vx++; + vx->x=x1; vx->y=y0; vx->u = u1; vx->v = v0; vx->color = color; vx++; + vx->x=x1; vx->y=y1; vx->u = u1; vx->v = v1; vx->color = color; vx++; + + vx->x=x0; vx->y=y0; vx->u = u0; vx->v = v0; vx->color = color; vx++; + vx->x=x1; vx->y=y1; vx->u = u1; vx->v = v1; vx->color = color; vx++; + vx->x=x0; vx->y=y1; vx->u = u0; vx->v = v1; vx->color = color; vx++; + } + ctx->pos.x += 1.0f; +} + +static void _sdtx_put_char(_sdtx_context_t* ctx, char c) { + uint8_t c_u8 = (uint8_t)c; + if (c_u8 <= 32) { + _sdtx_ctrl_char(ctx, c_u8); + } + else { + _sdtx_render_char(ctx, c_u8); + } +} + +SOKOL_API_IMPL void _sdtx_draw_layer(_sdtx_context_t* ctx, int layer_id) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + SOKOL_ASSERT(ctx); + if ((ctx->vertices.next > 0) && (ctx->commands.next > 0)) { + sg_push_debug_group("sokol-debugtext"); + + if (ctx->update_frame_id != ctx->frame_id) { + ctx->update_frame_id = ctx->frame_id; + const sg_range range = { ctx->vertices.ptr, (size_t)ctx->vertices.next * sizeof(_sdtx_vertex_t) }; + sg_update_buffer(ctx->vbuf, &range); + } + + sg_apply_pipeline(ctx->pip); + sg_bindings bindings; + _sdtx_clear(&bindings, sizeof(bindings)); + bindings.vertex_buffers[0] = ctx->vbuf; + bindings.fs_images[0] = _sdtx.font_img; + sg_apply_bindings(&bindings); + for (int cmd_index = 0; cmd_index < ctx->commands.next; cmd_index++) { + const _sdtx_command_t* cmd = &ctx->commands.ptr[cmd_index]; + if (cmd->layer_id != layer_id) { + continue; + } + SOKOL_ASSERT((cmd->num_vertices % 6) == 0); + sg_draw(cmd->first_vertex, cmd->num_vertices, 1); + } + sg_pop_debug_group(); + } +} + + +static sdtx_desc_t _sdtx_desc_defaults(const sdtx_desc_t* desc) { + SOKOL_ASSERT((desc->allocator.alloc && desc->allocator.free) || (!desc->allocator.alloc && !desc->allocator.free)); + sdtx_desc_t res = *desc; + res.context_pool_size = _sdtx_def(res.context_pool_size, _SDTX_DEFAULT_CONTEXT_POOL_SIZE); + res.printf_buf_size = _sdtx_def(res.printf_buf_size, _SDTX_DEFAULT_PRINTF_BUF_SIZE); + for (int i = 0; i < SDTX_MAX_FONTS; i++) { + if (res.fonts[i].data.ptr) { + res.fonts[i].last_char = _sdtx_def(res.fonts[i].last_char, 255); + } + } + res.context = _sdtx_context_desc_defaults(&res.context); + SOKOL_ASSERT(res.context_pool_size > 0); + SOKOL_ASSERT(res.printf_buf_size > 0); + SOKOL_ASSERT(res.context.char_buf_size > 0); + return res; +} + +// ██████ ██ ██ ██████ ██ ██ ██████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ██ ██████ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██████ ██████ ███████ ██ ██████ +// +// >>public +SOKOL_API_IMPL void sdtx_setup(const sdtx_desc_t* desc) { + SOKOL_ASSERT(desc); + _sdtx_clear(&_sdtx, sizeof(_sdtx)); + _sdtx.init_cookie = _SDTX_INIT_COOKIE; + _sdtx.desc = _sdtx_desc_defaults(desc); + _sdtx_setup_context_pool(&_sdtx.desc); + _sdtx_setup_common(); + _sdtx.def_ctx_id = sdtx_make_context(&_sdtx.desc.context); + SOKOL_ASSERT(SDTX_DEFAULT_CONTEXT.id == _sdtx.def_ctx_id.id); + sdtx_set_context(_sdtx.def_ctx_id); +} + +SOKOL_API_IMPL void sdtx_shutdown(void) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + for (int i = 0; i < _sdtx.context_pool.pool.size; i++) { + _sdtx_context_t* ctx = &_sdtx.context_pool.contexts[i]; + _sdtx_destroy_context(_sdtx_make_ctx_id(ctx->slot.id)); + } + _sdtx_discard_common(); + _sdtx_discard_context_pool(); + _sdtx.init_cookie = 0; +} + +SOKOL_API_IMPL sdtx_font_desc_t sdtx_font_kc853(void) { + sdtx_font_desc_t desc = { { _sdtx_font_kc853, sizeof(_sdtx_font_kc853) }, 0, 255 }; + return desc; +} + +SOKOL_API_IMPL sdtx_font_desc_t sdtx_font_kc854(void) { + sdtx_font_desc_t desc = { { _sdtx_font_kc854, sizeof(_sdtx_font_kc854) }, 0, 255 }; + return desc; +} + +SOKOL_API_IMPL sdtx_font_desc_t sdtx_font_z1013(void) { + sdtx_font_desc_t desc = { { _sdtx_font_z1013, sizeof(_sdtx_font_z1013) }, 0, 255 }; + return desc; +} + +SOKOL_API_IMPL sdtx_font_desc_t sdtx_font_cpc(void) { + sdtx_font_desc_t desc = { { _sdtx_font_cpc, sizeof(_sdtx_font_cpc) }, 0, 255 }; + return desc; +} + +SOKOL_API_IMPL sdtx_font_desc_t sdtx_font_c64(void) { + sdtx_font_desc_t desc = { { _sdtx_font_c64, sizeof(_sdtx_font_c64) }, 0, 255 }; + return desc; +} + +SOKOL_API_IMPL sdtx_font_desc_t sdtx_font_oric(void) { + sdtx_font_desc_t desc = { { _sdtx_font_oric, sizeof(_sdtx_font_oric) }, 0, 255 }; + return desc; +} + +SOKOL_API_IMPL sdtx_context sdtx_make_context(const sdtx_context_desc_t* desc) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + SOKOL_ASSERT(desc); + sdtx_context ctx_id = _sdtx_alloc_context(); + if (ctx_id.id != SG_INVALID_ID) { + _sdtx_init_context(ctx_id, desc); + } + else { + _SDTX_ERROR(CONTEXT_POOL_EXHAUSTED); + } + return ctx_id; +} + +SOKOL_API_IMPL void sdtx_destroy_context(sdtx_context ctx_id) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + if (_sdtx_is_default_context(ctx_id)) { + _SDTX_ERROR(CANNOT_DESTROY_DEFAULT_CONTEXT); + return; + } + _sdtx_destroy_context(ctx_id); + // re-validate the current context pointer (this will return a nullptr + // if we just destroyed the current context) + _sdtx.cur_ctx = _sdtx_lookup_context(_sdtx.cur_ctx_id.id); +} + +SOKOL_API_IMPL void sdtx_set_context(sdtx_context ctx_id) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + if (_sdtx_is_default_context(ctx_id)) { + _sdtx.cur_ctx_id = _sdtx.def_ctx_id; + } + else { + _sdtx.cur_ctx_id = ctx_id; + } + // this may return a nullptr if the ctx_id handle is invalid + _sdtx.cur_ctx = _sdtx_lookup_context(_sdtx.cur_ctx_id.id); +} + +SOKOL_API_IMPL sdtx_context sdtx_get_context(void) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + return _sdtx.cur_ctx_id; +} + +SOKOL_API_IMPL sdtx_context sdtx_default_context(void) { + return SDTX_DEFAULT_CONTEXT; +} + +SOKOL_API_IMPL void sdtx_layer(int layer_id) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + _sdtx_set_layer(ctx, layer_id); + } +} + +SOKOL_API_IMPL void sdtx_font(int font_index) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + SOKOL_ASSERT((font_index >= 0) && (font_index < SDTX_MAX_FONTS)); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->cur_font = font_index; + } +} + +SOKOL_API_IMPL void sdtx_canvas(float w, float h) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + SOKOL_ASSERT((w > 0.0f) && (h > 0.0f)); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->canvas_size.x = w; + ctx->canvas_size.y = h; + ctx->glyph_size.x = (8.0f / ctx->canvas_size.x); + ctx->glyph_size.y = (8.0f / ctx->canvas_size.y); + ctx->origin.x = 0.0f; + ctx->origin.y = 0.0f; + ctx->pos.x = 0.0f; + ctx->pos.y = 0.0f; + } +} + +SOKOL_API_IMPL void sdtx_origin(float x, float y) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->origin.x = x; + ctx->origin.y = y; + } +} + +SOKOL_API_IMPL void sdtx_home(void) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->pos.x = 0.0f; + ctx->pos.y = 0.0f; + } +} + +SOKOL_API_IMPL void sdtx_pos(float x, float y) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->pos.x = x; + ctx->pos.y = y; + } +} + +SOKOL_API_IMPL void sdtx_pos_x(float x) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->pos.x = x; + } +} + +SOKOL_API_IMPL void sdtx_pos_y(float y) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->pos.y = y; + } +} + +SOKOL_API_IMPL void sdtx_move(float dx, float dy) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->pos.x += dx; + ctx->pos.y += dy; + } +} + +SOKOL_API_IMPL void sdtx_move_x(float dx) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->pos.x += dx; + } +} + +SOKOL_API_IMPL void sdtx_move_y(float dy) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->pos.y += dy; + } +} + +SOKOL_API_IMPL void sdtx_crlf(void) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->pos.x = 0.0f; + ctx->pos.y += 1.0f; + } +} + +SOKOL_API_IMPL void sdtx_color3b(uint8_t r, uint8_t g, uint8_t b) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->color = _sdtx_pack_rgbab(r, g, b, 255); + } +} + +SOKOL_API_IMPL void sdtx_color3f(float r, float g, float b) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->color = _sdtx_pack_rgbaf(r, g, b, 1.0f); + } +} + +SOKOL_API_IMPL void sdtx_color4b(uint8_t r, uint8_t g, uint8_t b, uint8_t a) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->color = _sdtx_pack_rgbab(r, g, b, a); + } +} + +SOKOL_API_IMPL void sdtx_color4f(float r, float g, float b, float a) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->color = _sdtx_pack_rgbaf(r, g, b, a); + } +} + +SOKOL_API_IMPL void sdtx_color1i(uint32_t rgba) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + ctx->color = rgba; + } +} + +SOKOL_DEBUGTEXT_API_DECL void sdtx_putc(char chr) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + _sdtx_put_char(ctx, chr); + } +} + +SOKOL_DEBUGTEXT_API_DECL void sdtx_puts(const char* str) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + char chr; + while (0 != (chr = *str++)) { + _sdtx_put_char(ctx, chr); + } + } +} + +SOKOL_DEBUGTEXT_API_DECL void sdtx_putr(const char* str, int len) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + for (int i = 0; i < len; i++) { + char chr = str[i]; + if (0 == chr) { + break; + } + _sdtx_put_char(ctx, chr); + } + } +} + +SOKOL_DEBUGTEXT_API_DECL int sdtx_vprintf(const char* fmt, va_list args) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + SOKOL_ASSERT(_sdtx.fmt_buf && (_sdtx.fmt_buf_size >= 2)); + int res = SOKOL_VSNPRINTF(_sdtx.fmt_buf, _sdtx.fmt_buf_size, fmt, args); + // make sure we're 0-terminated in case we're on an old MSVC + _sdtx.fmt_buf[_sdtx.fmt_buf_size-1] = 0; + sdtx_puts(_sdtx.fmt_buf); + return res; +} + +SOKOL_DEBUGTEXT_API_DECL int sdtx_printf(const char* fmt, ...) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + SOKOL_ASSERT(_sdtx.fmt_buf && (_sdtx.fmt_buf_size >= 2)); + va_list args; + va_start(args, fmt); + int res = SOKOL_VSNPRINTF(_sdtx.fmt_buf, _sdtx.fmt_buf_size, fmt, args); + va_end(args); + // make sure we're 0-terminated in case we're on an old MSVC + _sdtx.fmt_buf[_sdtx.fmt_buf_size-1] = 0; + sdtx_puts(_sdtx.fmt_buf); + return res; +} + +SOKOL_API_IMPL void sdtx_draw(void) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + _sdtx_draw_layer(ctx, 0); + } +} + +SOKOL_API_IMPL void sdtx_context_draw(sdtx_context ctx_id) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx_lookup_context(ctx_id.id); + if (ctx) { + _sdtx_draw_layer(ctx, 0); + } +} + +SOKOL_API_IMPL void sdtx_draw_layer(int layer_id) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx.cur_ctx; + if (ctx) { + _sdtx_draw_layer(ctx, layer_id); + } +} + +SOKOL_API_IMPL void sdtx_context_draw_layer(sdtx_context ctx_id, int layer_id) { + SOKOL_ASSERT(_SDTX_INIT_COOKIE == _sdtx.init_cookie); + _sdtx_context_t* ctx = _sdtx_lookup_context(ctx_id.id); + if (ctx) { + _sdtx_draw_layer(ctx, layer_id); + } +} +#endif /* SOKOL_DEBUGTEXT_IMPL */ diff --git a/source/engine/thirdparty/sokol/sokol_fetch.h b/source/engine/thirdparty/sokol/sokol_fetch.h new file mode 100644 index 0000000..21e9b5d --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_fetch.h @@ -0,0 +1,2802 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_FETCH_IMPL) +#define SOKOL_FETCH_IMPL +#endif +#ifndef SOKOL_FETCH_INCLUDED +/* + sokol_fetch.h -- asynchronous data loading/streaming + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_FETCH_IMPL + before you include this file in *one* C or C++ file to create the + implementation. + + Optionally provide the following defines with your own implementations: + + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_UNREACHABLE() - a guard macro for unreachable code (default: assert(false)) + SOKOL_FETCH_API_DECL - public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_FETCH_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + SFETCH_MAX_PATH - max length of UTF-8 filesystem path / URL (default: 1024 bytes) + SFETCH_MAX_USERDATA_UINT64 - max size of embedded userdata in number of uint64_t, userdata + will be copied into an 8-byte aligned memory region associated + with each in-flight request, default value is 16 (== 128 bytes) + SFETCH_MAX_CHANNELS - max number of IO channels (default is 16, also see sfetch_desc_t.num_channels) + + If sokol_fetch.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_FETCH_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + NOTE: The following documentation talks a lot about "IO threads". Actual + threads are only used on platforms where threads are available. The web + version (emscripten/wasm) doesn't use POSIX-style threads, but instead + asynchronous Javascript calls chained together by callbacks. The actual + source code differences between the two approaches have been kept to + a minimum though. + + FEATURE OVERVIEW + ================ + + - Asynchronously load complete files, or stream files incrementally via + HTTP (on web platform), or the local file system (on native platforms) + + - Request / response-callback model, user code sends a request + to initiate a file-load, sokol_fetch.h calls the response callback + on the same thread when data is ready or user-code needs + to respond otherwise + + - Not limited to the main-thread or a single thread: A sokol-fetch + "context" can live on any thread, and multiple contexts + can operate side-by-side on different threads. + + - Memory management for data buffers is under full control of user code. + sokol_fetch.h won't allocate memory after it has been setup. + + - Automatic rate-limiting guarantees that only a maximum number of + requests is processed at any one time, allowing a zero-allocation + model, where all data is streamed into fixed-size, pre-allocated + buffers. + + - Active Requests can be paused, continued and cancelled from anywhere + in the user-thread which sent this request. + + + TL;DR EXAMPLE CODE + ================== + This is the most-simple example code to load a single data file with a + known maximum size: + + (1) initialize sokol-fetch with default parameters (but NOTE that the + default setup parameters provide a safe-but-slow "serialized" + operation). In order to see any logging output in case or errors + you should always provide a logging function + (such as 'slog_func' from sokol_log.h): + + sfetch_setup(&(sfetch_desc_t){ .logger.func = slog_func }); + + (2) send a fetch-request to load a file from the current directory + into a buffer big enough to hold the entire file content: + + static uint8_t buf[MAX_FILE_SIZE]; + + sfetch_send(&(sfetch_request_t){ + .path = "my_file.txt", + .callback = response_callback, + .buffer = { + .ptr = buf, + .size = sizeof(buf) + } + }); + + If 'buf' is a value (e.g. an array or struct item), the .buffer item can + be initialized with the SFETCH_RANGE() helper macro: + + sfetch_send(&(sfetch_request_t){ + .path = "my_file.txt", + .callback = response_callback, + .buffer = SFETCH_RANGE(buf) + }); + + (3) write a 'response-callback' function, this will be called whenever + the user-code must respond to state changes of the request + (most importantly when data has been loaded): + + void response_callback(const sfetch_response_t* response) { + if (response->fetched) { + // data has been loaded, and is available via the + // sfetch_range_t struct item 'data': + const void* ptr = response->data.ptr; + size_t num_bytes = response->data.size; + } + if (response->finished) { + // the 'finished'-flag is the catch-all flag for when the request + // is finished, no matter if loading was successful or failed, + // so any cleanup-work should happen here... + ... + if (response->failed) { + // 'failed' is true in (addition to 'finished') if something + // went wrong (file doesn't exist, or less bytes could be + // read from the file than expected) + } + } + } + + (4) pump the sokol-fetch message queues, and invoke response callbacks + by calling: + + sfetch_dowork(); + + In an event-driven app this should be called in the event loop. If you + use sokol-app this would be in your frame_cb function. + + (5) finally, call sfetch_shutdown() at the end of the application: + + There's many other loading-scenarios, for instance one doesn't have to + provide a buffer upfront, this can also happen in the response callback. + + Or it's possible to stream huge files into small fixed-size buffer, + complete with pausing and continuing the download. + + It's also possible to improve the 'pipeline throughput' by fetching + multiple files in parallel, but at the same time limit the maximum + number of requests that can be 'in-flight'. + + For how this all works, please read the following documentation sections :) + + + API DOCUMENTATION + ================= + + void sfetch_setup(const sfetch_desc_t* desc) + -------------------------------------------- + First call sfetch_setup(const sfetch_desc_t*) on any thread before calling + any other sokol-fetch functions on the same thread. + + sfetch_setup() takes a pointer to an sfetch_desc_t struct with setup + parameters. Parameters which should use their default values must + be zero-initialized: + + - max_requests (uint32_t): + The maximum number of requests that can be alive at any time, the + default is 128. + + - num_channels (uint32_t): + The number of "IO channels" used to parallelize and prioritize + requests, the default is 1. + + - num_lanes (uint32_t): + The number of "lanes" on a single channel. Each request which is + currently 'inflight' on a channel occupies one lane until the + request is finished. This is used for automatic rate-limiting + (search below for CHANNELS AND LANES for more details). The + default number of lanes is 1. + + For example, to setup sokol-fetch for max 1024 active requests, 4 channels, + and 8 lanes per channel in C99: + + sfetch_setup(&(sfetch_desc_t){ + .max_requests = 1024, + .num_channels = 4, + .num_lanes = 8 + }); + + sfetch_setup() is the only place where sokol-fetch will allocate memory. + + NOTE that the default setup parameters of 1 channel and 1 lane per channel + has a very poor 'pipeline throughput' since this essentially serializes + IO requests (a new request will only be processed when the last one has + finished), and since each request needs at least one roundtrip between + the user- and IO-thread the throughput will be at most one request per + frame. Search for LATENCY AND THROUGHPUT below for more information on + how to increase throughput. + + NOTE that you can call sfetch_setup() on multiple threads, each thread + will get its own thread-local sokol-fetch instance, which will work + independently from sokol-fetch instances on other threads. + + void sfetch_shutdown(void) + -------------------------- + Call sfetch_shutdown() at the end of the application to stop any + IO threads and free all memory that was allocated in sfetch_setup(). + + sfetch_handle_t sfetch_send(const sfetch_request_t* request) + ------------------------------------------------------------ + Call sfetch_send() to start loading data, the function takes a pointer to an + sfetch_request_t struct with request parameters and returns a + sfetch_handle_t identifying the request for later calls. At least + a path/URL and callback must be provided: + + sfetch_handle_t h = sfetch_send(&(sfetch_request_t){ + .path = "my_file.txt", + .callback = my_response_callback + }); + + sfetch_send() will return an invalid handle if no request can be allocated + from the internal pool because all available request items are 'in-flight'. + + The sfetch_request_t struct contains the following parameters (optional + parameters that are not provided must be zero-initialized): + + - path (const char*, required) + Pointer to an UTF-8 encoded C string describing the filesystem + path or HTTP URL. The string will be copied into an internal data + structure, and passed "as is" (apart from any required + encoding-conversions) to fopen(), CreateFileW() or + XMLHttpRequest. The maximum length of the string is defined by + the SFETCH_MAX_PATH configuration define, the default is 1024 bytes + including the 0-terminator byte. + + - callback (sfetch_callback_t, required) + Pointer to a response-callback function which is called when the + request needs "user code attention". Search below for REQUEST + STATES AND THE RESPONSE CALLBACK for detailed information about + handling responses in the response callback. + + - channel (uint32_t, optional) + Index of the IO channel where the request should be processed. + Channels are used to parallelize and prioritize requests relative + to each other. Search below for CHANNELS AND LANES for more + information. The default channel is 0. + + - chunk_size (uint32_t, optional) + The chunk_size member is used for streaming data incrementally + in small chunks. After 'chunk_size' bytes have been loaded into + to the streaming buffer, the response callback will be called + with the buffer containing the fetched data for the current chunk. + If chunk_size is 0 (the default), than the whole file will be loaded. + Please search below for CHUNK SIZE AND HTTP COMPRESSION for + important information how streaming works if the web server + is serving compressed data. + + - buffer (sfetch_range_t) + This is a optional pointer/size pair describing a chunk of memory where + data will be loaded into (if no buffer is provided upfront, this + must happen in the response callback). If a buffer is provided, + it must be big enough to either hold the entire file (if chunk_size + is zero), or the *uncompressed* data for one downloaded chunk + (if chunk_size is > 0). + + - user_data (sfetch_range_t) + The user_data ptr/size range struct describe an optional POD blob + (plain-old-data) associated with the request which will be copied(!) + into an internal memory block. The maximum default size of this + memory block is 128 bytes (but can be overridden by defining + SFETCH_MAX_USERDATA_UINT64 before including the notification, note + that this define is in "number of uint64_t", not number of bytes). + The user-data block is 8-byte aligned, and will be copied via + memcpy() (so don't put any C++ "smart members" in there). + + NOTE that request handles are strictly thread-local and only unique + within the thread the handle was created on, and all function calls + involving a request handle must happen on that same thread. + + bool sfetch_handle_valid(sfetch_handle_t request) + ------------------------------------------------- + This checks if the provided request handle is valid, and is associated with + a currently active request. It will return false if: + + - sfetch_send() returned an invalid handle because it couldn't allocate + a new request from the internal request pool (because they're all + in flight) + - the request associated with the handle is no longer alive (because + it either finished successfully, or the request failed for some + reason) + + void sfetch_dowork(void) + ------------------------ + Call sfetch_dowork(void) in regular intervals (for instance once per frame) + on the same thread as sfetch_setup() to "turn the gears". If you are sending + requests but never hear back from them in the response callback function, then + the most likely reason is that you forgot to add the call to sfetch_dowork() + in the per-frame function. + + sfetch_dowork() roughly performs the following work: + + - any new requests that have been sent with sfetch_send() since the + last call to sfetch_dowork() will be dispatched to their IO channels + and assigned a free lane. If all lanes on that channel are occupied + by requests 'in flight', incoming requests must wait until + a lane becomes available + + - for all new requests which have been enqueued on a channel which + don't already have a buffer assigned the response callback will be + called with (response->dispatched == true) so that the response + callback can inspect the dynamically assigned lane and bind a buffer + to the request (search below for CHANNELS AND LANE for more info) + + - a state transition from "user side" to "IO thread side" happens for + each new request that has been dispatched to a channel. + + - requests dispatched to a channel are either forwarded into that + channel's worker thread (on native platforms), or cause an HTTP + request to be sent via an asynchronous XMLHttpRequest (on the web + platform) + + - for all requests which have finished their current IO operation a + state transition from "IO thread side" to "user side" happens, + and the response callback is called so that the fetched data + can be processed. + + - requests which are completely finished (either because the entire + file content has been loaded, or they are in the FAILED state) are + freed (this just changes their state in the 'request pool', no actual + memory is freed) + + - requests which are not yet finished are fed back into the + 'incoming' queue of their channel, and the cycle starts again, this + only happens for requests which perform data streaming (not load + the entire file at once). + + void sfetch_cancel(sfetch_handle_t request) + ------------------------------------------- + This cancels a request in the next sfetch_dowork() call and invokes the + response callback with (response.failed == true) and (response.finished + == true) to give user-code a chance to do any cleanup work for the + request. If sfetch_cancel() is called for a request that is no longer + alive, nothing bad will happen (the call will simply do nothing). + + void sfetch_pause(sfetch_handle_t request) + ------------------------------------------ + This pauses an active request in the next sfetch_dowork() call and puts + it into the PAUSED state. For all requests in PAUSED state, the response + callback will be called in each call to sfetch_dowork() to give user-code + a chance to CONTINUE the request (by calling sfetch_continue()). Pausing + a request makes sense for dynamic rate-limiting in streaming scenarios + (like video/audio streaming with a fixed number of streaming buffers. As + soon as all available buffers are filled with download data, downloading + more data must be prevented to allow video/audio playback to catch up and + free up empty buffers for new download data. + + void sfetch_continue(sfetch_handle_t request) + --------------------------------------------- + Continues a paused request, counterpart to the sfetch_pause() function. + + void sfetch_bind_buffer(sfetch_handle_t request, sfetch_range_t buffer) + ---------------------------------------------------------------------------------------- + This "binds" a new buffer (as pointer/size pair) to an active request. The + function *must* be called from inside the response-callback, and there + must not already be another buffer bound. + + void* sfetch_unbind_buffer(sfetch_handle_t request) + --------------------------------------------------- + This removes the current buffer binding from the request and returns + a pointer to the previous buffer (useful if the buffer was dynamically + allocated and it must be freed). + + sfetch_unbind_buffer() *must* be called from inside the response callback. + + The usual code sequence to bind a different buffer in the response + callback might look like this: + + void response_callback(const sfetch_response_t* response) { + if (response.fetched) { + ... + // switch to a different buffer (in the FETCHED state it is + // guaranteed that the request has a buffer, otherwise it + // would have gone into the FAILED state + void* old_buf_ptr = sfetch_unbind_buffer(response.handle); + free(old_buf_ptr); + void* new_buf_ptr = malloc(new_buf_size); + sfetch_bind_buffer(response.handle, new_buf_ptr, new_buf_size); + } + if (response.finished) { + // unbind and free the currently associated buffer, + // the buffer pointer could be null if the request has failed + // NOTE that it is legal to call free() with a nullptr, + // this happens if the request failed to open its file + // and never goes into the OPENED state + void* buf_ptr = sfetch_unbind_buffer(response.handle); + free(buf_ptr); + } + } + + sfetch_desc_t sfetch_desc(void) + ------------------------------- + sfetch_desc() returns a copy of the sfetch_desc_t struct passed to + sfetch_setup(), with zero-initialized values replaced with + their default values. + + int sfetch_max_userdata_bytes(void) + ----------------------------------- + This returns the value of the SFETCH_MAX_USERDATA_UINT64 config + define, but in number of bytes (so SFETCH_MAX_USERDATA_UINT64*8). + + int sfetch_max_path(void) + ------------------------- + Returns the value of the SFETCH_MAX_PATH config define. + + + REQUEST STATES AND THE RESPONSE CALLBACK + ======================================== + A request goes through a number of states during its lifetime. Depending + on the current state of a request, it will be 'owned' either by the + "user-thread" (where the request was sent) or an IO thread. + + You can think of a request as "ping-ponging" between the IO thread and + user thread, any actual IO work is done on the IO thread, while + invocations of the response-callback happen on the user-thread. + + All state transitions and callback invocations happen inside the + sfetch_dowork() function. + + An active request goes through the following states: + + ALLOCATED (user-thread) + + The request has been allocated in sfetch_send() and is + waiting to be dispatched into its IO channel. When this + happens, the request will transition into the DISPATCHED state. + + DISPATCHED (IO thread) + + The request has been dispatched into its IO channel, and a + lane has been assigned to the request. + + If a buffer was provided in sfetch_send() the request will + immediately transition into the FETCHING state and start loading + data into the buffer. + + If no buffer was provided in sfetch_send(), the response + callback will be called with (response->dispatched == true), + so that the response callback can bind a buffer to the + request. Binding the buffer in the response callback makes + sense if the buffer isn't dynamically allocated, but instead + a pre-allocated buffer must be selected from the request's + channel and lane. + + Note that it isn't possible to get a file size in the response callback + which would help with allocating a buffer of the right size, this is + because it isn't possible in HTTP to query the file size before the + entire file is downloaded (...when the web server serves files compressed). + + If opening the file failed, the request will transition into + the FAILED state with the error code SFETCH_ERROR_FILE_NOT_FOUND. + + FETCHING (IO thread) + + While a request is in the FETCHING state, data will be loaded into + the user-provided buffer. + + If no buffer was provided, the request will go into the FAILED + state with the error code SFETCH_ERROR_NO_BUFFER. + + If a buffer was provided, but it is too small to contain the + fetched data, the request will go into the FAILED state with + error code SFETCH_ERROR_BUFFER_TOO_SMALL. + + If less data can be read from the file than expected, the request + will go into the FAILED state with error code SFETCH_ERROR_UNEXPECTED_EOF. + + If loading data into the provided buffer works as expected, the + request will go into the FETCHED state. + + FETCHED (user thread) + + The request goes into the FETCHED state either when the entire file + has been loaded into the provided buffer (when request.chunk_size == 0), + or a chunk has been loaded (and optionally decompressed) into the + buffer (when request.chunk_size > 0). + + The response callback will be called so that the user-code can + process the loaded data using the following sfetch_response_t struct members: + + - data.ptr: pointer to the start of fetched data + - data.size: the number of bytes in the provided buffer + - data_offset: the byte offset of the loaded data chunk in the + overall file (this is only set to a non-zero value in a streaming + scenario) + + Once all file data has been loaded, the 'finished' flag will be set + in the response callback's sfetch_response_t argument. + + After the user callback returns, and all file data has been loaded + (response.finished flag is set) the request has reached its end-of-life + and will recycled. + + Otherwise, if there's still data to load (because streaming was + requested by providing a non-zero request.chunk_size), the request + will switch back to the FETCHING state to load the next chunk of data. + + Note that it is ok to associate a different buffer or buffer-size + with the request by calling sfetch_bind_buffer() in the response-callback. + + To check in the response callback for the FETCHED state, and + independently whether the request is finished: + + void response_callback(const sfetch_response_t* response) { + if (response->fetched) { + // request is in FETCHED state, the loaded data is available + // in .data.ptr, and the number of bytes that have been + // loaded in .data.size: + const void* data = response->data.ptr; + size_t num_bytes = response->data.size; + } + if (response->finished) { + // the finished flag is set either when all data + // has been loaded, the request has been cancelled, + // or the file operation has failed, this is where + // any required per-request cleanup work should happen + } + } + + + FAILED (user thread) + + A request will transition into the FAILED state in the following situations: + + - if the file doesn't exist or couldn't be opened for other + reasons (SFETCH_ERROR_FILE_NOT_FOUND) + - if no buffer is associated with the request in the FETCHING state + (SFETCH_ERROR_NO_BUFFER) + - if the provided buffer is too small to hold the entire file + (if request.chunk_size == 0), or the (potentially decompressed) + partial data chunk (SFETCH_ERROR_BUFFER_TOO_SMALL) + - if less bytes could be read from the file then expected + (SFETCH_ERROR_UNEXPECTED_EOF) + - if a request has been cancelled via sfetch_cancel() + (SFETCH_ERROR_CANCELLED) + + The response callback will be called once after a request goes into + the FAILED state, with the 'response->finished' and + 'response->failed' flags set to true. + + This gives the user-code a chance to cleanup any resources associated + with the request. + + To check for the failed state in the response callback: + + void response_callback(const sfetch_response_t* response) { + if (response->failed) { + // specifically check for the failed state... + } + // or you can do a catch-all check via the finished-flag: + if (response->finished) { + if (response->failed) { + // if more detailed error handling is needed: + switch (response->error_code) { + ... + } + } + } + } + + PAUSED (user thread) + + A request will transition into the PAUSED state after user-code + calls the function sfetch_pause() on the request's handle. Usually + this happens from within the response-callback in streaming scenarios + when the data streaming needs to wait for a data decoder (like + a video/audio player) to catch up. + + While a request is in PAUSED state, the response-callback will be + called in each sfetch_dowork(), so that the user-code can either + continue the request by calling sfetch_continue(), or cancel + the request by calling sfetch_cancel(). + + When calling sfetch_continue() on a paused request, the request will + transition into the FETCHING state. Otherwise if sfetch_cancel() is + called, the request will switch into the FAILED state. + + To check for the PAUSED state in the response callback: + + void response_callback(const sfetch_response_t* response) { + if (response->paused) { + // we can check here whether the request should + // continue to load data: + if (should_continue(response->handle)) { + sfetch_continue(response->handle); + } + } + } + + + CHUNK SIZE AND HTTP COMPRESSION + =============================== + TL;DR: for streaming scenarios, the provided chunk-size must be smaller + than the provided buffer-size because the web server may decide to + serve the data compressed and the chunk-size must be given in 'compressed + bytes' while the buffer receives 'uncompressed bytes'. It's not possible + in HTTP to query the uncompressed size for a compressed download until + that download has finished. + + With vanilla HTTP, it is not possible to query the actual size of a file + without downloading the entire file first (the Content-Length response + header only provides the compressed size). Furthermore, for HTTP + range-requests, the range is given on the compressed data, not the + uncompressed data. So if the web server decides to server the data + compressed, the content-length and range-request parameters don't + correspond to the uncompressed data that's arriving in the sokol-fetch + buffers, and there's no way from JS or WASM to either force uncompressed + downloads (e.g. by setting the Accept-Encoding field), or access the + compressed data. + + This has some implications for sokol_fetch.h, most notably that buffers + can't be provided in the exactly right size, because that size can't + be queried from HTTP before the data is actually downloaded. + + When downloading whole files at once, it is basically expected that you + know the maximum files size upfront through other means (for instance + through a separate meta-data-file which contains the file sizes and + other meta-data for each file that needs to be loaded). + + For streaming downloads the situation is a bit more complicated. These + use HTTP range-requests, and those ranges are defined on the (potentially) + compressed data which the JS/WASM side doesn't have access to. However, + the JS/WASM side only ever sees the uncompressed data, and it's not possible + to query the uncompressed size of a range request before that range request + has finished. + + If the provided buffer is too small to contain the uncompressed data, + the request will fail with error code SFETCH_ERROR_BUFFER_TOO_SMALL. + + + CHANNELS AND LANES + ================== + Channels and lanes are (somewhat artificial) concepts to manage + parallelization, prioritization and rate-limiting. + + Channels can be used to parallelize message processing for better 'pipeline + throughput', and to prioritize requests: user-code could reserve one + channel for streaming downloads which need to run in parallel to other + requests, another channel for "regular" downloads and yet another + high-priority channel which would only be used for small files which need + to start loading immediately. + + Each channel comes with its own IO thread and message queues for pumping + messages in and out of the thread. The channel where a request is + processed is selected manually when sending a message: + + sfetch_send(&(sfetch_request_t){ + .path = "my_file.txt", + .callback = my_response_callback, + .channel = 2 + }); + + The number of channels is configured at startup in sfetch_setup() and + cannot be changed afterwards. + + Channels are completely separate from each other, and a request will + never "hop" from one channel to another. + + Each channel consists of a fixed number of "lanes" for automatic rate + limiting: + + When a request is sent to a channel via sfetch_send(), a "free lane" will + be picked and assigned to the request. The request will occupy this lane + for its entire life time (also while it is paused). If all lanes of a + channel are currently occupied, new requests will need to wait until a + lane becomes unoccupied. + + Since the number of channels and lanes is known upfront, it is guaranteed + that there will never be more than "num_channels * num_lanes" requests + in flight at any one time. + + This guarantee eliminates unexpected load- and memory-spikes when + many requests are sent in very short time, and it allows to pre-allocate + a fixed number of memory buffers which can be reused for the entire + "lifetime" of a sokol-fetch context. + + In the most simple scenario - when a maximum file size is known - buffers + can be statically allocated like this: + + uint8_t buffer[NUM_CHANNELS][NUM_LANES][MAX_FILE_SIZE]; + + Then in the user callback pick a buffer by channel and lane, + and associate it with the request like this: + + void response_callback(const sfetch_response_t* response) { + if (response->dispatched) { + void* ptr = buffer[response->channel][response->lane]; + sfetch_bind_buffer(response->handle, ptr, MAX_FILE_SIZE); + } + ... + } + + + NOTES ON OPTIMIZING PIPELINE LATENCY AND THROUGHPUT + =================================================== + With the default configuration of 1 channel and 1 lane per channel, + sokol_fetch.h will appear to have a shockingly bad loading performance + if several files are loaded. + + This has two reasons: + + (1) all parallelization when loading data has been disabled. A new + request will only be processed, when the last request has finished. + + (2) every invocation of the response-callback adds one frame of latency + to the request, because callbacks will only be called from within + sfetch_dowork() + + sokol-fetch takes a few shortcuts to improve step (2) and reduce + the 'inherent latency' of a request: + + - if a buffer is provided upfront, the response-callback won't be + called in the DISPATCHED state, but start right with the FETCHED state + where data has already been loaded into the buffer + + - there is no separate CLOSED state where the callback is invoked + separately when loading has finished (or the request has failed), + instead the finished and failed flags will be set as part of + the last FETCHED invocation + + This means providing a big-enough buffer to fit the entire file is the + best case, the response callback will only be called once, ideally in + the next frame (or two calls to sfetch_dowork()). + + If no buffer is provided upfront, one frame of latency is added because + the response callback needs to be invoked in the DISPATCHED state so that + the user code can bind a buffer. + + This means the best case for a request without an upfront-provided + buffer is 2 frames (or 3 calls to sfetch_dowork()). + + That's about what can be done to improve the latency for a single request, + but the really important step is to improve overall throughput. If you + need to load thousands of files you don't want that to be completely + serialized. + + The most important action to increase throughput is to increase the + number of lanes per channel. This defines how many requests can be + 'in flight' on a single channel at the same time. The guiding decision + factor for how many lanes you can "afford" is the memory size you want + to set aside for buffers. Each lane needs its own buffer so that + the data loaded for one request doesn't scribble over the data + loaded for another request. + + Here's a simple example of sending 4 requests without upfront buffer + on a channel with 1, 2 and 4 lanes, each line is one frame: + + 1 LANE (8 frames): + Lane 0: + ------------- + REQ 0 DISPATCHED + REQ 0 FETCHED + REQ 1 DISPATCHED + REQ 1 FETCHED + REQ 2 DISPATCHED + REQ 2 FETCHED + REQ 3 DISPATCHED + REQ 3 FETCHED + + Note how the request don't overlap, so they can all use the same buffer. + + 2 LANES (4 frames): + Lane 0: Lane 1: + ------------------------------------ + REQ 0 DISPATCHED REQ 1 DISPATCHED + REQ 0 FETCHED REQ 1 FETCHED + REQ 2 DISPATCHED REQ 3 DISPATCHED + REQ 2 FETCHED REQ 3 FETCHED + + This reduces the overall time to 4 frames, but now you need 2 buffers so + that requests don't scribble over each other. + + 4 LANES (2 frames): + Lane 0: Lane 1: Lane 2: Lane 3: + ---------------------------------------------------------------------------- + REQ 0 DISPATCHED REQ 1 DISPATCHED REQ 2 DISPATCHED REQ 3 DISPATCHED + REQ 0 FETCHED REQ 1 FETCHED REQ 2 FETCHED REQ 3 FETCHED + + Now we're down to the same 'best-case' latency as sending a single + request. + + Apart from the memory requirements for the streaming buffers (which is + under your control), you can be generous with the number of lanes, + they don't add any processing overhead. + + The last option for tweaking latency and throughput is channels. Each + channel works independently from other channels, so while one + channel is busy working through a large number of requests (or one + very long streaming download), you can set aside a high-priority channel + for requests that need to start as soon as possible. + + On platforms with threading support, each channel runs on its own + thread, but this is mainly an implementation detail to work around + the blocking traditional file IO functions, not for performance reasons. + + + MEMORY ALLOCATION OVERRIDE + ========================== + You can override the memory allocation functions at initialization time + like this: + + void* my_alloc(size_t size, void* user_data) { + return malloc(size); + } + + void my_free(void* ptr, void* user_data) { + free(ptr); + } + + ... + sfetch_setup(&(sfetch_desc_t){ + // ... + .allocator = { + .alloc = my_alloc, + .free = my_free, + .user_data = ..., + } + }); + ... + + If no overrides are provided, malloc and free will be used. + + This only affects memory allocation calls done by sokol_fetch.h + itself though, not any allocations in OS libraries. + + Memory allocation will only happen on the same thread where sfetch_setup() + was called, so you don't need to worry about thread-safety. + + + ERROR REPORTING AND LOGGING + =========================== + To get any logging information at all you need to provide a logging callback in the setup call, + the easiest way is to use sokol_log.h: + + #include "sokol_log.h" + + sfetch_setup(&(sfetch_desc_t){ + // ... + .logger.func = slog_func + }); + + To override logging with your own callback, first write a logging function like this: + + void my_log(const char* tag, // e.g. 'sfetch' + uint32_t log_level, // 0=panic, 1=error, 2=warn, 3=info + uint32_t log_item_id, // SFETCH_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_fetch.h + const char* filename_or_null, // source filename, may be nullptr in release mode + void* user_data) + { + ... + } + + ...and then setup sokol-fetch like this: + + sfetch_setup(&(sfetch_desc_t){ + .logger = { + .func = my_log, + .user_data = my_user_data, + } + }); + + The provided logging function must be reentrant (e.g. be callable from + different threads). + + If you don't want to provide your own custom logger it is highly recommended to use + the standard logger in sokol_log.h instead, otherwise you won't see any warnings or + errors. + + + FUTURE PLANS / V2.0 IDEA DUMP + ============================= + - An optional polling API (as alternative to callback API) + - Move buffer-management into the API? The "manual management" + can be quite tricky especially for dynamic allocation scenarios, + API support for buffer management would simplify cases like + preventing that requests scribble over each other's buffers, or + an automatic garbage collection for dynamically allocated buffers, + or automatically falling back to dynamic allocation if static + buffers aren't big enough. + - Pluggable request handlers to load data from other "sources" + (especially HTTP downloads on native platforms via e.g. libcurl + would be useful) + - I'm currently not happy how the user-data block is handled, this + should getting and updating the user-data should be wrapped by + API functions (similar to bind/unbind buffer) + + + LICENSE + ======= + zlib/libpng license + + Copyright (c) 2019 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_FETCH_INCLUDED (1) +#include // size_t +#include +#include + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_FETCH_API_DECL) +#define SOKOL_FETCH_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_FETCH_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_FETCH_IMPL) +#define SOKOL_FETCH_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_FETCH_API_DECL __declspec(dllimport) +#else +#define SOKOL_FETCH_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + sfetch_log_item_t + + Log items are defined via X-Macros, and expanded to an + enum 'sfetch_log_item', and in debug mode only, + corresponding strings. + + Used as parameter in the logging callback. +*/ +#define _SFETCH_LOG_ITEMS \ + _SFETCH_LOGITEM_XMACRO(OK, "Ok") \ + _SFETCH_LOGITEM_XMACRO(MALLOC_FAILED, "memory allocation failed") \ + _SFETCH_LOGITEM_XMACRO(FILE_PATH_UTF8_DECODING_FAILED, "failed converting file path from UTF8 to wide") \ + _SFETCH_LOGITEM_XMACRO(SEND_QUEUE_FULL, "send queue full (adjust via sfetch_desc_t.max_requests)") \ + _SFETCH_LOGITEM_XMACRO(REQUEST_CHANNEL_INDEX_TOO_BIG, "channel index too big (adjust via sfetch_desc_t.num_channels)") \ + _SFETCH_LOGITEM_XMACRO(REQUEST_PATH_IS_NULL, "file path is nullptr (sfetch_request_t.path)") \ + _SFETCH_LOGITEM_XMACRO(REQUEST_PATH_TOO_LONG, "file path is too long (SFETCH_MAX_PATH)") \ + _SFETCH_LOGITEM_XMACRO(REQUEST_CALLBACK_MISSING, "no callback provided (sfetch_request_t.callback)") \ + _SFETCH_LOGITEM_XMACRO(REQUEST_CHUNK_SIZE_GREATER_BUFFER_SIZE, "chunk size is greater buffer size (sfetch_request_t.chunk_size vs .buffer.size)") \ + _SFETCH_LOGITEM_XMACRO(REQUEST_USERDATA_PTR_IS_SET_BUT_USERDATA_SIZE_IS_NULL, "user data ptr is set but user data size is null (sfetch_request_t.user_data.ptr vs .size)") \ + _SFETCH_LOGITEM_XMACRO(REQUEST_USERDATA_PTR_IS_NULL_BUT_USERDATA_SIZE_IS_NOT, "user data ptr is null but size is not (sfetch_request_t.user_data.ptr vs .size)") \ + _SFETCH_LOGITEM_XMACRO(REQUEST_USERDATA_SIZE_TOO_BIG, "user data size too big (see SFETCH_MAX_USERDATA_UINT64)") \ + _SFETCH_LOGITEM_XMACRO(CLAMPING_NUM_CHANNELS_TO_MAX_CHANNELS, "clamping num channels to SFETCH_MAX_CHANNELS") \ + _SFETCH_LOGITEM_XMACRO(REQUEST_POOL_EXHAUSTED, "request pool exhausted (tweak via sfetch_desc_t.max_requests)") \ + +#define _SFETCH_LOGITEM_XMACRO(item,msg) SFETCH_LOGITEM_##item, +typedef enum sfetch_log_item_t { + _SFETCH_LOG_ITEMS +} sfetch_log_item_t; +#undef _SFETCH_LOGITEM_XMACRO + +/* + sfetch_logger_t + + Used in sfetch_desc_t to provide a custom logging and error reporting + callback to sokol-fetch. +*/ +typedef struct sfetch_logger_t { + void (*func)( + const char* tag, // always "sfetch" + uint32_t log_level, // 0=panic, 1=error, 2=warning, 3=info + uint32_t log_item_id, // SFETCH_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_fetch.h + const char* filename_or_null, // source filename, may be nullptr in release mode + void* user_data); + void* user_data; +} sfetch_logger_t; + +/* + sfetch_range_t + + A pointer-size pair struct to pass memory ranges into and out of sokol-fetch. + When initialized from a value type (array or struct) you can use the + SFETCH_RANGE() helper macro to build an sfetch_range_t struct. +*/ +typedef struct sfetch_range_t { + const void* ptr; + size_t size; +} sfetch_range_t; + +// disabling this for every includer isn't great, but the warnings are also quite pointless +#if defined(_MSC_VER) +#pragma warning(disable:4221) // /W4 only: nonstandard extension used: 'x': cannot be initialized using address of automatic variable 'y' +#pragma warning(disable:4204) // VS2015: nonstandard extension used: non-constant aggregate initializer +#endif +#if defined(__cplusplus) +#define SFETCH_RANGE(x) sfetch_range_t{ &x, sizeof(x) } +#else +#define SFETCH_RANGE(x) (sfetch_range_t){ &x, sizeof(x) } +#endif + +/* + sfetch_allocator_t + + Used in sfetch_desc_t to provide custom memory-alloc and -free functions + to sokol_fetch.h. If memory management should be overridden, both the + alloc and free function must be provided (e.g. it's not valid to + override one function but not the other). +*/ +typedef struct sfetch_allocator_t { + void* (*alloc)(size_t size, void* user_data); + void (*free)(void* ptr, void* user_data); + void* user_data; +} sfetch_allocator_t; + +/* configuration values for sfetch_setup() */ +typedef struct sfetch_desc_t { + uint32_t max_requests; // max number of active requests across all channels (default: 128) + uint32_t num_channels; // number of channels to fetch requests in parallel (default: 1) + uint32_t num_lanes; // max number of requests active on the same channel (default: 1) + sfetch_allocator_t allocator; // optional memory allocation overrides (default: malloc/free) + sfetch_logger_t logger; // optional log function overrides (default: NO LOGGING!) +} sfetch_desc_t; + +/* a request handle to identify an active fetch request, returned by sfetch_send() */ +typedef struct sfetch_handle_t { uint32_t id; } sfetch_handle_t; + +/* error codes */ +typedef enum sfetch_error_t { + SFETCH_ERROR_NO_ERROR, + SFETCH_ERROR_FILE_NOT_FOUND, + SFETCH_ERROR_NO_BUFFER, + SFETCH_ERROR_BUFFER_TOO_SMALL, + SFETCH_ERROR_UNEXPECTED_EOF, + SFETCH_ERROR_INVALID_HTTP_STATUS, + SFETCH_ERROR_CANCELLED +} sfetch_error_t; + +/* the response struct passed to the response callback */ +typedef struct sfetch_response_t { + sfetch_handle_t handle; // request handle this response belongs to + bool dispatched; // true when request is in DISPATCHED state (lane has been assigned) + bool fetched; // true when request is in FETCHED state (fetched data is available) + bool paused; // request is currently in paused state + bool finished; // this is the last response for this request + bool failed; // request has failed (always set together with 'finished') + bool cancelled; // request was cancelled (always set together with 'finished') + sfetch_error_t error_code; // more detailed error code when failed is true + uint32_t channel; // the channel which processes this request + uint32_t lane; // the lane this request occupies on its channel + const char* path; // the original filesystem path of the request + void* user_data; // pointer to read/write user-data area + uint32_t data_offset; // current offset of fetched data chunk in the overall file data + sfetch_range_t data; // the fetched data as ptr/size pair (data.ptr == buffer.ptr, data.size <= buffer.size) + sfetch_range_t buffer; // the user-provided buffer which holds the fetched data +} sfetch_response_t; + +/* response callback function signature */ +typedef void(*sfetch_callback_t)(const sfetch_response_t*); + +/* request parameters passed to sfetch_send() */ +typedef struct sfetch_request_t { + uint32_t channel; // index of channel this request is assigned to (default: 0) + const char* path; // filesystem path or HTTP URL (required) + sfetch_callback_t callback; // response callback function pointer (required) + uint32_t chunk_size; // number of bytes to load per stream-block (optional) + sfetch_range_t buffer; // a memory buffer where the data will be loaded into (optional) + sfetch_range_t user_data; // ptr/size of a POD user data block which will be memcpy'd (optional) +} sfetch_request_t; + +/* setup sokol-fetch (can be called on multiple threads) */ +SOKOL_FETCH_API_DECL void sfetch_setup(const sfetch_desc_t* desc); +/* discard a sokol-fetch context */ +SOKOL_FETCH_API_DECL void sfetch_shutdown(void); +/* return true if sokol-fetch has been setup */ +SOKOL_FETCH_API_DECL bool sfetch_valid(void); +/* get the desc struct that was passed to sfetch_setup() */ +SOKOL_FETCH_API_DECL sfetch_desc_t sfetch_desc(void); +/* return the max userdata size in number of bytes (SFETCH_MAX_USERDATA_UINT64 * sizeof(uint64_t)) */ +SOKOL_FETCH_API_DECL int sfetch_max_userdata_bytes(void); +/* return the value of the SFETCH_MAX_PATH implementation config value */ +SOKOL_FETCH_API_DECL int sfetch_max_path(void); + +/* send a fetch-request, get handle to request back */ +SOKOL_FETCH_API_DECL sfetch_handle_t sfetch_send(const sfetch_request_t* request); +/* return true if a handle is valid *and* the request is alive */ +SOKOL_FETCH_API_DECL bool sfetch_handle_valid(sfetch_handle_t h); +/* do per-frame work, moves requests into and out of IO threads, and invokes response-callbacks */ +SOKOL_FETCH_API_DECL void sfetch_dowork(void); + +/* bind a data buffer to a request (request must not currently have a buffer bound, must be called from response callback */ +SOKOL_FETCH_API_DECL void sfetch_bind_buffer(sfetch_handle_t h, sfetch_range_t buffer); +/* clear the 'buffer binding' of a request, returns previous buffer pointer (can be 0), must be called from response callback */ +SOKOL_FETCH_API_DECL void* sfetch_unbind_buffer(sfetch_handle_t h); +/* cancel a request that's in flight (will call response callback with .cancelled + .finished) */ +SOKOL_FETCH_API_DECL void sfetch_cancel(sfetch_handle_t h); +/* pause a request (will call response callback each frame with .paused) */ +SOKOL_FETCH_API_DECL void sfetch_pause(sfetch_handle_t h); +/* continue a paused request */ +SOKOL_FETCH_API_DECL void sfetch_continue(sfetch_handle_t h); + +#ifdef __cplusplus +} /* extern "C" */ + +/* reference-based equivalents for c++ */ +inline void sfetch_setup(const sfetch_desc_t& desc) { return sfetch_setup(&desc); } +inline sfetch_handle_t sfetch_send(const sfetch_request_t& request) { return sfetch_send(&request); } + +#endif +#endif // SOKOL_FETCH_INCLUDED + +// ██ ███ ███ ██████ ██ ███████ ███ ███ ███████ ███ ██ ████████ █████ ████████ ██ ██████ ███ ██ +// ██ ████ ████ ██ ██ ██ ██ ████ ████ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ +// ██ ██ ████ ██ ██████ ██ █████ ██ ████ ██ █████ ██ ██ ██ ██ ███████ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ███████ ███████ ██ ██ ███████ ██ ████ ██ ██ ██ ██ ██ ██████ ██ ████ +// +// >>implementation +#ifdef SOKOL_FETCH_IMPL +#define SOKOL_FETCH_IMPL_INCLUDED (1) + +#if defined(SOKOL_MALLOC) || defined(SOKOL_CALLOC) || defined(SOKOL_FREE) +#error "SOKOL_MALLOC/CALLOC/FREE macros are no longer supported, please use sfetch_desc_t.allocator to override memory allocation functions" +#endif + +#include /* malloc, free */ +#include /* memset, memcpy */ + +#ifndef SFETCH_MAX_PATH +#define SFETCH_MAX_PATH (1024) +#endif +#ifndef SFETCH_MAX_USERDATA_UINT64 +#define SFETCH_MAX_USERDATA_UINT64 (16) +#endif +#ifndef SFETCH_MAX_CHANNELS +#define SFETCH_MAX_CHANNELS (16) +#endif + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_DEBUG + #ifndef NDEBUG + #define SOKOL_DEBUG + #endif +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif + +#ifndef _SOKOL_PRIVATE + #if defined(__GNUC__) || defined(__clang__) + #define _SOKOL_PRIVATE __attribute__((unused)) static + #else + #define _SOKOL_PRIVATE static + #endif +#endif + +#ifndef _SOKOL_UNUSED + #define _SOKOL_UNUSED(x) (void)(x) +#endif + +#if defined(__EMSCRIPTEN__) + #include + #define _SFETCH_PLATFORM_EMSCRIPTEN (1) + #define _SFETCH_PLATFORM_WINDOWS (0) + #define _SFETCH_PLATFORM_POSIX (0) + #define _SFETCH_HAS_THREADS (0) +#elif defined(_WIN32) + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif + #ifndef NOMINMAX + #define NOMINMAX + #endif + #include + #define _SFETCH_PLATFORM_WINDOWS (1) + #define _SFETCH_PLATFORM_EMSCRIPTEN (0) + #define _SFETCH_PLATFORM_POSIX (0) + #define _SFETCH_HAS_THREADS (1) +#else + #include + #include /* fopen, fread, fseek, fclose */ + #define _SFETCH_PLATFORM_POSIX (1) + #define _SFETCH_PLATFORM_EMSCRIPTEN (0) + #define _SFETCH_PLATFORM_WINDOWS (0) + #define _SFETCH_HAS_THREADS (1) +#endif + +// ███████ ████████ ██████ ██ ██ ██████ ████████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██████ ██ ██ ██ ██ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██ ██ ██████ ██████ ██ ███████ +// +// >>structs +typedef struct _sfetch_path_t { + char buf[SFETCH_MAX_PATH]; +} _sfetch_path_t; + +/* a thread with incoming and outgoing message queue syncing */ +#if _SFETCH_PLATFORM_POSIX +typedef struct { + pthread_t thread; + pthread_cond_t incoming_cond; + pthread_mutex_t incoming_mutex; + pthread_mutex_t outgoing_mutex; + pthread_mutex_t running_mutex; + pthread_mutex_t stop_mutex; + bool stop_requested; + bool valid; +} _sfetch_thread_t; +#elif _SFETCH_PLATFORM_WINDOWS +typedef struct { + HANDLE thread; + HANDLE incoming_event; + CRITICAL_SECTION incoming_critsec; + CRITICAL_SECTION outgoing_critsec; + CRITICAL_SECTION running_critsec; + CRITICAL_SECTION stop_critsec; + bool stop_requested; + bool valid; +} _sfetch_thread_t; +#endif + +/* file handle abstraction */ +#if _SFETCH_PLATFORM_POSIX +typedef FILE* _sfetch_file_handle_t; +#define _SFETCH_INVALID_FILE_HANDLE (0) +typedef void*(*_sfetch_thread_func_t)(void*); +#elif _SFETCH_PLATFORM_WINDOWS +typedef HANDLE _sfetch_file_handle_t; +#define _SFETCH_INVALID_FILE_HANDLE (INVALID_HANDLE_VALUE) +typedef LPTHREAD_START_ROUTINE _sfetch_thread_func_t; +#endif + +/* user-side per-request state */ +typedef struct { + bool pause; /* switch item to PAUSED state if true */ + bool cont; /* switch item back to FETCHING if true */ + bool cancel; /* cancel the request, switch into FAILED state */ + /* transfer IO => user thread */ + uint32_t fetched_offset; /* number of bytes fetched so far */ + uint32_t fetched_size; /* size of last fetched chunk */ + sfetch_error_t error_code; + bool finished; + /* user thread only */ + size_t user_data_size; + uint64_t user_data[SFETCH_MAX_USERDATA_UINT64]; +} _sfetch_item_user_t; + +/* thread-side per-request state */ +typedef struct { + /* transfer IO => user thread */ + uint32_t fetched_offset; + uint32_t fetched_size; + sfetch_error_t error_code; + bool failed; + bool finished; + /* IO thread only */ + #if _SFETCH_PLATFORM_EMSCRIPTEN + uint32_t http_range_offset; + #else + _sfetch_file_handle_t file_handle; + #endif + uint32_t content_size; +} _sfetch_item_thread_t; + +/* a request goes through the following states, ping-ponging between IO and user thread */ +typedef enum _sfetch_state_t { + _SFETCH_STATE_INITIAL, /* internal: request has just been initialized */ + _SFETCH_STATE_ALLOCATED, /* internal: request has been allocated from internal pool */ + _SFETCH_STATE_DISPATCHED, /* user thread: request has been dispatched to its IO channel */ + _SFETCH_STATE_FETCHING, /* IO thread: waiting for data to be fetched */ + _SFETCH_STATE_FETCHED, /* user thread: fetched data available */ + _SFETCH_STATE_PAUSED, /* user thread: request has been paused via sfetch_pause() */ + _SFETCH_STATE_FAILED, /* user thread: follow state or FETCHING if something went wrong */ +} _sfetch_state_t; + +/* an internal request item */ +#define _SFETCH_INVALID_LANE (0xFFFFFFFF) +typedef struct { + sfetch_handle_t handle; + _sfetch_state_t state; + uint32_t channel; + uint32_t lane; + uint32_t chunk_size; + sfetch_callback_t callback; + sfetch_range_t buffer; + + /* updated by IO-thread, off-limits to user thread */ + _sfetch_item_thread_t thread; + + /* accessible by user-thread, off-limits to IO thread */ + _sfetch_item_user_t user; + + /* big stuff at the end */ + _sfetch_path_t path; +} _sfetch_item_t; + +/* a pool of internal per-request items */ +typedef struct { + uint32_t size; + uint32_t free_top; + _sfetch_item_t* items; + uint32_t* free_slots; + uint32_t* gen_ctrs; + bool valid; +} _sfetch_pool_t; + +/* a ringbuffer for pool-slot ids */ +typedef struct { + uint32_t head; + uint32_t tail; + uint32_t num; + uint32_t* buf; +} _sfetch_ring_t; + +/* an IO channel with its own IO thread */ +struct _sfetch_t; +typedef struct { + struct _sfetch_t* ctx; // back-pointer to thread-local _sfetch state pointer, since this isn't accessible from the IO threads + _sfetch_ring_t free_lanes; + _sfetch_ring_t user_sent; + _sfetch_ring_t user_incoming; + _sfetch_ring_t user_outgoing; + #if _SFETCH_HAS_THREADS + _sfetch_ring_t thread_incoming; + _sfetch_ring_t thread_outgoing; + _sfetch_thread_t thread; + #endif + void (*request_handler)(struct _sfetch_t* ctx, uint32_t slot_id); + bool valid; +} _sfetch_channel_t; + +/* the sfetch global state */ +typedef struct _sfetch_t { + bool setup; + bool valid; + bool in_callback; + sfetch_desc_t desc; + _sfetch_pool_t pool; + _sfetch_channel_t chn[SFETCH_MAX_CHANNELS]; +} _sfetch_t; +#if _SFETCH_HAS_THREADS +#if defined(_MSC_VER) +static __declspec(thread) _sfetch_t* _sfetch; +#else +static __thread _sfetch_t* _sfetch; +#endif +#else +static _sfetch_t* _sfetch; +#endif +#define _sfetch_def(val, def) (((val) == 0) ? (def) : (val)) + +// ██ ██████ ██████ ██████ ██ ███ ██ ██████ +// ██ ██ ██ ██ ██ ██ ████ ██ ██ +// ██ ██ ██ ██ ███ ██ ███ ██ ██ ██ ██ ██ ███ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██████ ██████ ██████ ██ ██ ████ ██████ +// +// >>logging +#if defined(SOKOL_DEBUG) +#define _SFETCH_LOGITEM_XMACRO(item,msg) #item ": " msg, +static const char* _sfetch_log_messages[] = { + _SFETCH_LOG_ITEMS +}; +#undef _SFETCH_LOGITEM_XMACRO +#endif // SOKOL_DEBUG + +#define _SFETCH_PANIC(code) _sfetch_log(SFETCH_LOGITEM_ ##code, 0, __LINE__) +#define _SFETCH_ERROR(code) _sfetch_log(SFETCH_LOGITEM_ ##code, 1, __LINE__) +#define _SFETCH_WARN(code) _sfetch_log(SFETCH_LOGITEM_ ##code, 2, __LINE__) +#define _SFETCH_INFO(code) _sfetch_log(SFETCH_LOGITEM_ ##code, 3, __LINE__) + +static void _sfetch_log(sfetch_log_item_t log_item, uint32_t log_level, uint32_t line_nr) { + if (_sfetch->desc.logger.func) { + #if defined(SOKOL_DEBUG) + const char* filename = __FILE__; + const char* message = _sfetch_log_messages[log_item]; + #else + const char* filename = 0; + const char* message = 0; + #endif + _sfetch->desc.logger.func("sfetch", log_level, log_item, message, line_nr, filename, _sfetch->desc.logger.user_data); + } + else { + // for log level PANIC it would be 'undefined behaviour' to continue + if (log_level == 0) { + abort(); + } + } +} + +// ███ ███ ███████ ███ ███ ██████ ██████ ██ ██ +// ████ ████ ██ ████ ████ ██ ██ ██ ██ ██ ██ +// ██ ████ ██ █████ ██ ████ ██ ██ ██ ██████ ████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ██ ██ ██████ ██ ██ ██ +// +// >>memory +_SOKOL_PRIVATE void _sfetch_clear(void* ptr, size_t size) { + SOKOL_ASSERT(ptr && (size > 0)); + memset(ptr, 0, size); +} + +_SOKOL_PRIVATE void* _sfetch_malloc_with_allocator(const sfetch_allocator_t* allocator, size_t size) { + SOKOL_ASSERT(size > 0); + void* ptr; + if (allocator->alloc) { + ptr = allocator->alloc(size, allocator->user_data); + } + else { + ptr = malloc(size); + } + if (0 == ptr) { + _SFETCH_PANIC(MALLOC_FAILED); + } + return ptr; +} + +_SOKOL_PRIVATE void* _sfetch_malloc(size_t size) { + return _sfetch_malloc_with_allocator(&_sfetch->desc.allocator, size); +} + +_SOKOL_PRIVATE void* _sfetch_malloc_clear(size_t size) { + void* ptr = _sfetch_malloc(size); + _sfetch_clear(ptr, size); + return ptr; +} + +_SOKOL_PRIVATE void _sfetch_free(void* ptr) { + if (_sfetch->desc.allocator.free) { + _sfetch->desc.allocator.free(ptr, _sfetch->desc.allocator.user_data); + } + else { + free(ptr); + } +} + +_SOKOL_PRIVATE _sfetch_t* _sfetch_ctx(void) { + return _sfetch; +} + +_SOKOL_PRIVATE void _sfetch_path_copy(_sfetch_path_t* dst, const char* src) { + SOKOL_ASSERT(dst); + if (src && (strlen(src) < SFETCH_MAX_PATH)) { + #if defined(_MSC_VER) + strncpy_s(dst->buf, SFETCH_MAX_PATH, src, (SFETCH_MAX_PATH-1)); + #else + strncpy(dst->buf, src, SFETCH_MAX_PATH); + #endif + dst->buf[SFETCH_MAX_PATH-1] = 0; + } + else { + _sfetch_clear(dst->buf, SFETCH_MAX_PATH); + } +} + +_SOKOL_PRIVATE _sfetch_path_t _sfetch_path_make(const char* str) { + _sfetch_path_t res; + _sfetch_path_copy(&res, str); + return res; +} + +// ███ ███ ███████ ███████ ███████ █████ ██████ ███████ ██████ ██ ██ ███████ ██ ██ ███████ +// ████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ████ ██ █████ ███████ ███████ ███████ ██ ███ █████ ██ ██ ██ ██ █████ ██ ██ █████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ▄▄ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ███████ ███████ ██ ██ ██████ ███████ ██████ ██████ ███████ ██████ ███████ +// ▀▀ +// >>message queue +_SOKOL_PRIVATE uint32_t _sfetch_ring_wrap(const _sfetch_ring_t* rb, uint32_t i) { + return i % rb->num; +} + +_SOKOL_PRIVATE void _sfetch_ring_discard(_sfetch_ring_t* rb) { + SOKOL_ASSERT(rb); + if (rb->buf) { + _sfetch_free(rb->buf); + rb->buf = 0; + } + rb->head = 0; + rb->tail = 0; + rb->num = 0; +} + +_SOKOL_PRIVATE bool _sfetch_ring_init(_sfetch_ring_t* rb, uint32_t num_slots) { + SOKOL_ASSERT(rb && (num_slots > 0)); + SOKOL_ASSERT(0 == rb->buf); + rb->head = 0; + rb->tail = 0; + /* one slot reserved to detect full vs empty */ + rb->num = num_slots + 1; + const size_t queue_size = rb->num * sizeof(sfetch_handle_t); + rb->buf = (uint32_t*) _sfetch_malloc_clear(queue_size); + if (rb->buf) { + return true; + } + else { + _sfetch_ring_discard(rb); + return false; + } +} + +_SOKOL_PRIVATE bool _sfetch_ring_full(const _sfetch_ring_t* rb) { + SOKOL_ASSERT(rb && rb->buf); + return _sfetch_ring_wrap(rb, rb->head + 1) == rb->tail; +} + +_SOKOL_PRIVATE bool _sfetch_ring_empty(const _sfetch_ring_t* rb) { + SOKOL_ASSERT(rb && rb->buf); + return rb->head == rb->tail; +} + +_SOKOL_PRIVATE uint32_t _sfetch_ring_count(const _sfetch_ring_t* rb) { + SOKOL_ASSERT(rb && rb->buf); + uint32_t count; + if (rb->head >= rb->tail) { + count = rb->head - rb->tail; + } + else { + count = (rb->head + rb->num) - rb->tail; + } + SOKOL_ASSERT(count < rb->num); + return count; +} + +_SOKOL_PRIVATE void _sfetch_ring_enqueue(_sfetch_ring_t* rb, uint32_t slot_id) { + SOKOL_ASSERT(rb && rb->buf); + SOKOL_ASSERT(!_sfetch_ring_full(rb)); + SOKOL_ASSERT(rb->head < rb->num); + rb->buf[rb->head] = slot_id; + rb->head = _sfetch_ring_wrap(rb, rb->head + 1); +} + +_SOKOL_PRIVATE uint32_t _sfetch_ring_dequeue(_sfetch_ring_t* rb) { + SOKOL_ASSERT(rb && rb->buf); + SOKOL_ASSERT(!_sfetch_ring_empty(rb)); + SOKOL_ASSERT(rb->tail < rb->num); + uint32_t slot_id = rb->buf[rb->tail]; + rb->tail = _sfetch_ring_wrap(rb, rb->tail + 1); + return slot_id; +} + +_SOKOL_PRIVATE uint32_t _sfetch_ring_peek(const _sfetch_ring_t* rb, uint32_t index) { + SOKOL_ASSERT(rb && rb->buf); + SOKOL_ASSERT(!_sfetch_ring_empty(rb)); + SOKOL_ASSERT(index < _sfetch_ring_count(rb)); + uint32_t rb_index = _sfetch_ring_wrap(rb, rb->tail + index); + return rb->buf[rb_index]; +} + +// ██████ ███████ ██████ ██ ██ ███████ ███████ ████████ ██████ ██████ ██████ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ █████ ██ ██ ██ ██ █████ ███████ ██ ██████ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ▄▄ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ██████ ██████ ███████ ███████ ██ ██ ██████ ██████ ███████ +// ▀▀ +// >>request pool +_SOKOL_PRIVATE uint32_t _sfetch_make_id(uint32_t index, uint32_t gen_ctr) { + return (gen_ctr<<16) | (index & 0xFFFF); +} + +_SOKOL_PRIVATE sfetch_handle_t _sfetch_make_handle(uint32_t slot_id) { + sfetch_handle_t h; + h.id = slot_id; + return h; +} + +_SOKOL_PRIVATE uint32_t _sfetch_slot_index(uint32_t slot_id) { + return slot_id & 0xFFFF; +} + +_SOKOL_PRIVATE void _sfetch_item_init(_sfetch_item_t* item, uint32_t slot_id, const sfetch_request_t* request) { + SOKOL_ASSERT(item && (0 == item->handle.id)); + SOKOL_ASSERT(request && request->path); + _sfetch_clear(item, sizeof(_sfetch_item_t)); + item->handle.id = slot_id; + item->state = _SFETCH_STATE_INITIAL; + item->channel = request->channel; + item->chunk_size = request->chunk_size; + item->lane = _SFETCH_INVALID_LANE; + item->callback = request->callback; + item->buffer = request->buffer; + item->path = _sfetch_path_make(request->path); + #if !_SFETCH_PLATFORM_EMSCRIPTEN + item->thread.file_handle = _SFETCH_INVALID_FILE_HANDLE; + #endif + if (request->user_data.ptr && + (request->user_data.size > 0) && + (request->user_data.size <= (SFETCH_MAX_USERDATA_UINT64*8))) + { + item->user.user_data_size = request->user_data.size; + memcpy(item->user.user_data, request->user_data.ptr, request->user_data.size); + } +} + +_SOKOL_PRIVATE void _sfetch_item_discard(_sfetch_item_t* item) { + SOKOL_ASSERT(item && (0 != item->handle.id)); + _sfetch_clear(item, sizeof(_sfetch_item_t)); +} + +_SOKOL_PRIVATE void _sfetch_pool_discard(_sfetch_pool_t* pool) { + SOKOL_ASSERT(pool); + if (pool->free_slots) { + _sfetch_free(pool->free_slots); + pool->free_slots = 0; + } + if (pool->gen_ctrs) { + _sfetch_free(pool->gen_ctrs); + pool->gen_ctrs = 0; + } + if (pool->items) { + _sfetch_free(pool->items); + pool->items = 0; + } + pool->size = 0; + pool->free_top = 0; + pool->valid = false; +} + +_SOKOL_PRIVATE bool _sfetch_pool_init(_sfetch_pool_t* pool, uint32_t num_items) { + SOKOL_ASSERT(pool && (num_items > 0) && (num_items < ((1<<16)-1))); + SOKOL_ASSERT(0 == pool->items); + /* NOTE: item slot 0 is reserved for the special "invalid" item index 0*/ + pool->size = num_items + 1; + pool->free_top = 0; + const size_t items_size = pool->size * sizeof(_sfetch_item_t); + pool->items = (_sfetch_item_t*) _sfetch_malloc_clear(items_size); + /* generation counters indexable by pool slot index, slot 0 is reserved */ + const size_t gen_ctrs_size = sizeof(uint32_t) * pool->size; + pool->gen_ctrs = (uint32_t*) _sfetch_malloc_clear(gen_ctrs_size); + SOKOL_ASSERT(pool->gen_ctrs); + /* NOTE: it's not a bug to only reserve num_items here */ + const size_t free_slots_size = num_items * sizeof(int); + pool->free_slots = (uint32_t*) _sfetch_malloc_clear(free_slots_size); + if (pool->items && pool->free_slots) { + /* never allocate the 0-th item, this is the reserved 'invalid item' */ + for (uint32_t i = pool->size - 1; i >= 1; i--) { + pool->free_slots[pool->free_top++] = i; + } + pool->valid = true; + } + else { + /* allocation error */ + _sfetch_pool_discard(pool); + } + return pool->valid; +} + +_SOKOL_PRIVATE uint32_t _sfetch_pool_item_alloc(_sfetch_pool_t* pool, const sfetch_request_t* request) { + SOKOL_ASSERT(pool && pool->valid); + if (pool->free_top > 0) { + uint32_t slot_index = pool->free_slots[--pool->free_top]; + SOKOL_ASSERT((slot_index > 0) && (slot_index < pool->size)); + uint32_t slot_id = _sfetch_make_id(slot_index, ++pool->gen_ctrs[slot_index]); + _sfetch_item_init(&pool->items[slot_index], slot_id, request); + pool->items[slot_index].state = _SFETCH_STATE_ALLOCATED; + return slot_id; + } + else { + /* pool exhausted, return the 'invalid handle' */ + return _sfetch_make_id(0, 0); + } +} + +_SOKOL_PRIVATE void _sfetch_pool_item_free(_sfetch_pool_t* pool, uint32_t slot_id) { + SOKOL_ASSERT(pool && pool->valid); + uint32_t slot_index = _sfetch_slot_index(slot_id); + SOKOL_ASSERT((slot_index > 0) && (slot_index < pool->size)); + SOKOL_ASSERT(pool->items[slot_index].handle.id == slot_id); + #if defined(SOKOL_DEBUG) + /* debug check against double-free */ + for (uint32_t i = 0; i < pool->free_top; i++) { + SOKOL_ASSERT(pool->free_slots[i] != slot_index); + } + #endif + _sfetch_item_discard(&pool->items[slot_index]); + pool->free_slots[pool->free_top++] = slot_index; + SOKOL_ASSERT(pool->free_top <= (pool->size - 1)); +} + +/* return pointer to item by handle without matching id check */ +_SOKOL_PRIVATE _sfetch_item_t* _sfetch_pool_item_at(_sfetch_pool_t* pool, uint32_t slot_id) { + SOKOL_ASSERT(pool && pool->valid); + uint32_t slot_index = _sfetch_slot_index(slot_id); + SOKOL_ASSERT((slot_index > 0) && (slot_index < pool->size)); + return &pool->items[slot_index]; +} + +/* return pointer to item by handle with matching id check */ +_SOKOL_PRIVATE _sfetch_item_t* _sfetch_pool_item_lookup(_sfetch_pool_t* pool, uint32_t slot_id) { + SOKOL_ASSERT(pool && pool->valid); + if (0 != slot_id) { + _sfetch_item_t* item = _sfetch_pool_item_at(pool, slot_id); + if (item->handle.id == slot_id) { + return item; + } + } + return 0; +} + +// ██████ ██████ ███████ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ██ ███████ ██ ███ +// ██ ██ ██ ██ ██ ██ ██ +// ██ ██████ ███████ ██ ██ ██ +// +// >>posix +#if _SFETCH_PLATFORM_POSIX +_SOKOL_PRIVATE _sfetch_file_handle_t _sfetch_file_open(const _sfetch_path_t* path) { + return fopen(path->buf, "rb"); +} + +_SOKOL_PRIVATE void _sfetch_file_close(_sfetch_file_handle_t h) { + fclose(h); +} + +_SOKOL_PRIVATE bool _sfetch_file_handle_valid(_sfetch_file_handle_t h) { + return h != _SFETCH_INVALID_FILE_HANDLE; +} + +_SOKOL_PRIVATE uint32_t _sfetch_file_size(_sfetch_file_handle_t h) { + fseek(h, 0, SEEK_END); + return (uint32_t) ftell(h); +} + +_SOKOL_PRIVATE bool _sfetch_file_read(_sfetch_file_handle_t h, uint32_t offset, uint32_t num_bytes, void* ptr) { + fseek(h, (long)offset, SEEK_SET); + return num_bytes == fread(ptr, 1, num_bytes, h); +} + +_SOKOL_PRIVATE bool _sfetch_thread_init(_sfetch_thread_t* thread, _sfetch_thread_func_t thread_func, void* thread_arg) { + SOKOL_ASSERT(thread && !thread->valid && !thread->stop_requested); + + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutex_init(&thread->incoming_mutex, &attr); + pthread_mutexattr_destroy(&attr); + + pthread_mutexattr_init(&attr); + pthread_mutex_init(&thread->outgoing_mutex, &attr); + pthread_mutexattr_destroy(&attr); + + pthread_mutexattr_init(&attr); + pthread_mutex_init(&thread->running_mutex, &attr); + pthread_mutexattr_destroy(&attr); + + pthread_mutexattr_init(&attr); + pthread_mutex_init(&thread->stop_mutex, &attr); + pthread_mutexattr_destroy(&attr); + + pthread_condattr_t cond_attr; + pthread_condattr_init(&cond_attr); + pthread_cond_init(&thread->incoming_cond, &cond_attr); + pthread_condattr_destroy(&cond_attr); + + /* FIXME: in debug mode, the threads should be named */ + pthread_mutex_lock(&thread->running_mutex); + int res = pthread_create(&thread->thread, 0, thread_func, thread_arg); + thread->valid = (0 == res); + pthread_mutex_unlock(&thread->running_mutex); + return thread->valid; +} + +_SOKOL_PRIVATE void _sfetch_thread_request_stop(_sfetch_thread_t* thread) { + pthread_mutex_lock(&thread->stop_mutex); + thread->stop_requested = true; + pthread_mutex_unlock(&thread->stop_mutex); +} + +_SOKOL_PRIVATE bool _sfetch_thread_stop_requested(_sfetch_thread_t* thread) { + pthread_mutex_lock(&thread->stop_mutex); + bool stop_requested = thread->stop_requested; + pthread_mutex_unlock(&thread->stop_mutex); + return stop_requested; +} + +_SOKOL_PRIVATE void _sfetch_thread_join(_sfetch_thread_t* thread) { + SOKOL_ASSERT(thread); + if (thread->valid) { + pthread_mutex_lock(&thread->incoming_mutex); + _sfetch_thread_request_stop(thread); + pthread_cond_signal(&thread->incoming_cond); + pthread_mutex_unlock(&thread->incoming_mutex); + pthread_join(thread->thread, 0); + thread->valid = false; + } + pthread_mutex_destroy(&thread->stop_mutex); + pthread_mutex_destroy(&thread->running_mutex); + pthread_mutex_destroy(&thread->incoming_mutex); + pthread_mutex_destroy(&thread->outgoing_mutex); + pthread_cond_destroy(&thread->incoming_cond); +} + +/* called when the thread-func is entered, this blocks the thread func until + the _sfetch_thread_t object is fully initialized +*/ +_SOKOL_PRIVATE void _sfetch_thread_entered(_sfetch_thread_t* thread) { + pthread_mutex_lock(&thread->running_mutex); +} + +/* called by the thread-func right before it is left */ +_SOKOL_PRIVATE void _sfetch_thread_leaving(_sfetch_thread_t* thread) { + pthread_mutex_unlock(&thread->running_mutex); +} + +_SOKOL_PRIVATE void _sfetch_thread_enqueue_incoming(_sfetch_thread_t* thread, _sfetch_ring_t* incoming, _sfetch_ring_t* src) { + /* called from user thread */ + SOKOL_ASSERT(thread && thread->valid); + SOKOL_ASSERT(incoming && incoming->buf); + SOKOL_ASSERT(src && src->buf); + if (!_sfetch_ring_empty(src)) { + pthread_mutex_lock(&thread->incoming_mutex); + while (!_sfetch_ring_full(incoming) && !_sfetch_ring_empty(src)) { + _sfetch_ring_enqueue(incoming, _sfetch_ring_dequeue(src)); + } + pthread_cond_signal(&thread->incoming_cond); + pthread_mutex_unlock(&thread->incoming_mutex); + } +} + +_SOKOL_PRIVATE uint32_t _sfetch_thread_dequeue_incoming(_sfetch_thread_t* thread, _sfetch_ring_t* incoming) { + /* called from thread function */ + SOKOL_ASSERT(thread && thread->valid); + SOKOL_ASSERT(incoming && incoming->buf); + pthread_mutex_lock(&thread->incoming_mutex); + while (_sfetch_ring_empty(incoming) && !thread->stop_requested) { + pthread_cond_wait(&thread->incoming_cond, &thread->incoming_mutex); + } + uint32_t item = 0; + if (!thread->stop_requested) { + item = _sfetch_ring_dequeue(incoming); + } + pthread_mutex_unlock(&thread->incoming_mutex); + return item; +} + +_SOKOL_PRIVATE bool _sfetch_thread_enqueue_outgoing(_sfetch_thread_t* thread, _sfetch_ring_t* outgoing, uint32_t item) { + /* called from thread function */ + SOKOL_ASSERT(thread && thread->valid); + SOKOL_ASSERT(outgoing && outgoing->buf); + SOKOL_ASSERT(0 != item); + pthread_mutex_lock(&thread->outgoing_mutex); + bool result = false; + if (!_sfetch_ring_full(outgoing)) { + _sfetch_ring_enqueue(outgoing, item); + } + pthread_mutex_unlock(&thread->outgoing_mutex); + return result; +} + +_SOKOL_PRIVATE void _sfetch_thread_dequeue_outgoing(_sfetch_thread_t* thread, _sfetch_ring_t* outgoing, _sfetch_ring_t* dst) { + /* called from user thread */ + SOKOL_ASSERT(thread && thread->valid); + SOKOL_ASSERT(outgoing && outgoing->buf); + SOKOL_ASSERT(dst && dst->buf); + pthread_mutex_lock(&thread->outgoing_mutex); + while (!_sfetch_ring_full(dst) && !_sfetch_ring_empty(outgoing)) { + _sfetch_ring_enqueue(dst, _sfetch_ring_dequeue(outgoing)); + } + pthread_mutex_unlock(&thread->outgoing_mutex); +} +#endif /* _SFETCH_PLATFORM_POSIX */ + +// ██ ██ ██ ███ ██ ██████ ██████ ██ ██ ███████ +// ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ █ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ █ ██ ███████ +// ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ███ ██ ██ +// ███ ███ ██ ██ ████ ██████ ██████ ███ ███ ███████ +// +// >>windows +#if _SFETCH_PLATFORM_WINDOWS +_SOKOL_PRIVATE bool _sfetch_win32_utf8_to_wide(const char* src, wchar_t* dst, int dst_num_bytes) { + SOKOL_ASSERT(src && dst && (dst_num_bytes > 1)); + _sfetch_clear(dst, (size_t)dst_num_bytes); + const int dst_chars = dst_num_bytes / (int)sizeof(wchar_t); + const int dst_needed = MultiByteToWideChar(CP_UTF8, 0, src, -1, 0, 0); + if ((dst_needed > 0) && (dst_needed < dst_chars)) { + MultiByteToWideChar(CP_UTF8, 0, src, -1, dst, dst_chars); + return true; + } + else { + /* input string doesn't fit into destination buffer */ + return false; + } +} + +_SOKOL_PRIVATE _sfetch_file_handle_t _sfetch_file_open(const _sfetch_path_t* path) { + wchar_t w_path[SFETCH_MAX_PATH]; + if (!_sfetch_win32_utf8_to_wide(path->buf, w_path, sizeof(w_path))) { + _SFETCH_ERROR(FILE_PATH_UTF8_DECODING_FAILED); + return 0; + } + _sfetch_file_handle_t h = CreateFileW( + w_path, /* lpFileName */ + GENERIC_READ, /* dwDesiredAccess */ + FILE_SHARE_READ, /* dwShareMode */ + NULL, /* lpSecurityAttributes */ + OPEN_EXISTING, /* dwCreationDisposition */ + FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN, /* dwFlagsAndAttributes */ + NULL); /* hTemplateFile */ + return h; +} + +_SOKOL_PRIVATE void _sfetch_file_close(_sfetch_file_handle_t h) { + CloseHandle(h); +} + +_SOKOL_PRIVATE bool _sfetch_file_handle_valid(_sfetch_file_handle_t h) { + return h != _SFETCH_INVALID_FILE_HANDLE; +} + +_SOKOL_PRIVATE uint32_t _sfetch_file_size(_sfetch_file_handle_t h) { + return GetFileSize(h, NULL); +} + +_SOKOL_PRIVATE bool _sfetch_file_read(_sfetch_file_handle_t h, uint32_t offset, uint32_t num_bytes, void* ptr) { + LARGE_INTEGER offset_li; + offset_li.QuadPart = offset; + BOOL seek_res = SetFilePointerEx(h, offset_li, NULL, FILE_BEGIN); + if (seek_res) { + DWORD bytes_read = 0; + BOOL read_res = ReadFile(h, ptr, (DWORD)num_bytes, &bytes_read, NULL); + return read_res && (bytes_read == num_bytes); + } + else { + return false; + } +} + +_SOKOL_PRIVATE bool _sfetch_thread_init(_sfetch_thread_t* thread, _sfetch_thread_func_t thread_func, void* thread_arg) { + SOKOL_ASSERT(thread && !thread->valid && !thread->stop_requested); + + thread->incoming_event = CreateEventA(NULL, FALSE, FALSE, NULL); + SOKOL_ASSERT(NULL != thread->incoming_event); + InitializeCriticalSection(&thread->incoming_critsec); + InitializeCriticalSection(&thread->outgoing_critsec); + InitializeCriticalSection(&thread->running_critsec); + InitializeCriticalSection(&thread->stop_critsec); + + EnterCriticalSection(&thread->running_critsec); + const SIZE_T stack_size = 512 * 1024; + thread->thread = CreateThread(NULL, stack_size, thread_func, thread_arg, 0, NULL); + thread->valid = (NULL != thread->thread); + LeaveCriticalSection(&thread->running_critsec); + return thread->valid; +} + +_SOKOL_PRIVATE void _sfetch_thread_request_stop(_sfetch_thread_t* thread) { + EnterCriticalSection(&thread->stop_critsec); + thread->stop_requested = true; + LeaveCriticalSection(&thread->stop_critsec); +} + +_SOKOL_PRIVATE bool _sfetch_thread_stop_requested(_sfetch_thread_t* thread) { + EnterCriticalSection(&thread->stop_critsec); + bool stop_requested = thread->stop_requested; + LeaveCriticalSection(&thread->stop_critsec); + return stop_requested; +} + +_SOKOL_PRIVATE void _sfetch_thread_join(_sfetch_thread_t* thread) { + if (thread->valid) { + EnterCriticalSection(&thread->incoming_critsec); + _sfetch_thread_request_stop(thread); + BOOL set_event_res = SetEvent(thread->incoming_event); + _SOKOL_UNUSED(set_event_res); + SOKOL_ASSERT(set_event_res); + LeaveCriticalSection(&thread->incoming_critsec); + WaitForSingleObject(thread->thread, INFINITE); + CloseHandle(thread->thread); + thread->valid = false; + } + CloseHandle(thread->incoming_event); + DeleteCriticalSection(&thread->stop_critsec); + DeleteCriticalSection(&thread->running_critsec); + DeleteCriticalSection(&thread->outgoing_critsec); + DeleteCriticalSection(&thread->incoming_critsec); +} + +_SOKOL_PRIVATE void _sfetch_thread_entered(_sfetch_thread_t* thread) { + EnterCriticalSection(&thread->running_critsec); +} + +/* called by the thread-func right before it is left */ +_SOKOL_PRIVATE void _sfetch_thread_leaving(_sfetch_thread_t* thread) { + LeaveCriticalSection(&thread->running_critsec); +} + +_SOKOL_PRIVATE void _sfetch_thread_enqueue_incoming(_sfetch_thread_t* thread, _sfetch_ring_t* incoming, _sfetch_ring_t* src) { + /* called from user thread */ + SOKOL_ASSERT(thread && thread->valid); + SOKOL_ASSERT(incoming && incoming->buf); + SOKOL_ASSERT(src && src->buf); + if (!_sfetch_ring_empty(src)) { + EnterCriticalSection(&thread->incoming_critsec); + while (!_sfetch_ring_full(incoming) && !_sfetch_ring_empty(src)) { + _sfetch_ring_enqueue(incoming, _sfetch_ring_dequeue(src)); + } + LeaveCriticalSection(&thread->incoming_critsec); + BOOL set_event_res = SetEvent(thread->incoming_event); + _SOKOL_UNUSED(set_event_res); + SOKOL_ASSERT(set_event_res); + } +} + +_SOKOL_PRIVATE uint32_t _sfetch_thread_dequeue_incoming(_sfetch_thread_t* thread, _sfetch_ring_t* incoming) { + /* called from thread function */ + SOKOL_ASSERT(thread && thread->valid); + SOKOL_ASSERT(incoming && incoming->buf); + EnterCriticalSection(&thread->incoming_critsec); + while (_sfetch_ring_empty(incoming) && !thread->stop_requested) { + LeaveCriticalSection(&thread->incoming_critsec); + WaitForSingleObject(thread->incoming_event, INFINITE); + EnterCriticalSection(&thread->incoming_critsec); + } + uint32_t item = 0; + if (!thread->stop_requested) { + item = _sfetch_ring_dequeue(incoming); + } + LeaveCriticalSection(&thread->incoming_critsec); + return item; +} + +_SOKOL_PRIVATE bool _sfetch_thread_enqueue_outgoing(_sfetch_thread_t* thread, _sfetch_ring_t* outgoing, uint32_t item) { + /* called from thread function */ + SOKOL_ASSERT(thread && thread->valid); + SOKOL_ASSERT(outgoing && outgoing->buf); + EnterCriticalSection(&thread->outgoing_critsec); + bool result = false; + if (!_sfetch_ring_full(outgoing)) { + _sfetch_ring_enqueue(outgoing, item); + } + LeaveCriticalSection(&thread->outgoing_critsec); + return result; +} + +_SOKOL_PRIVATE void _sfetch_thread_dequeue_outgoing(_sfetch_thread_t* thread, _sfetch_ring_t* outgoing, _sfetch_ring_t* dst) { + /* called from user thread */ + SOKOL_ASSERT(thread && thread->valid); + SOKOL_ASSERT(outgoing && outgoing->buf); + SOKOL_ASSERT(dst && dst->buf); + EnterCriticalSection(&thread->outgoing_critsec); + while (!_sfetch_ring_full(dst) && !_sfetch_ring_empty(outgoing)) { + _sfetch_ring_enqueue(dst, _sfetch_ring_dequeue(outgoing)); + } + LeaveCriticalSection(&thread->outgoing_critsec); +} +#endif /* _SFETCH_PLATFORM_WINDOWS */ + +// ██████ ██ ██ █████ ███ ██ ███ ██ ███████ ██ ███████ +// ██ ██ ██ ██ ██ ████ ██ ████ ██ ██ ██ ██ +// ██ ███████ ███████ ██ ██ ██ ██ ██ ██ █████ ██ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ██ ██ ██ ██ ████ ██ ████ ███████ ███████ ███████ +// +// >>channels + +/* per-channel request handler for native platforms accessing the local filesystem */ +#if _SFETCH_HAS_THREADS +_SOKOL_PRIVATE void _sfetch_request_handler(_sfetch_t* ctx, uint32_t slot_id) { + _sfetch_state_t state; + _sfetch_path_t* path; + _sfetch_item_thread_t* thread; + sfetch_range_t* buffer; + uint32_t chunk_size; + { + _sfetch_item_t* item = _sfetch_pool_item_lookup(&ctx->pool, slot_id); + if (!item) { + return; + } + state = item->state; + SOKOL_ASSERT((state == _SFETCH_STATE_FETCHING) || + (state == _SFETCH_STATE_PAUSED) || + (state == _SFETCH_STATE_FAILED)); + path = &item->path; + thread = &item->thread; + buffer = &item->buffer; + chunk_size = item->chunk_size; + } + if (thread->failed) { + return; + } + if (state == _SFETCH_STATE_FETCHING) { + if ((buffer->ptr == 0) || (buffer->size == 0)) { + thread->error_code = SFETCH_ERROR_NO_BUFFER; + thread->failed = true; + } + else { + /* open file if not happened yet */ + if (!_sfetch_file_handle_valid(thread->file_handle)) { + SOKOL_ASSERT(path->buf[0]); + SOKOL_ASSERT(thread->fetched_offset == 0); + SOKOL_ASSERT(thread->fetched_size == 0); + thread->file_handle = _sfetch_file_open(path); + if (_sfetch_file_handle_valid(thread->file_handle)) { + thread->content_size = _sfetch_file_size(thread->file_handle); + } + else { + thread->error_code = SFETCH_ERROR_FILE_NOT_FOUND; + thread->failed = true; + } + } + if (!thread->failed) { + uint32_t read_offset = 0; + uint32_t bytes_to_read = 0; + if (chunk_size == 0) { + /* load entire file */ + if (thread->content_size <= buffer->size) { + bytes_to_read = thread->content_size; + read_offset = 0; + } + else { + /* provided buffer to small to fit entire file */ + thread->error_code = SFETCH_ERROR_BUFFER_TOO_SMALL; + thread->failed = true; + } + } + else { + if (chunk_size <= buffer->size) { + bytes_to_read = chunk_size; + read_offset = thread->fetched_offset; + if ((read_offset + bytes_to_read) > thread->content_size) { + bytes_to_read = thread->content_size - read_offset; + } + } + else { + /* provided buffer to small to fit next chunk */ + thread->error_code = SFETCH_ERROR_BUFFER_TOO_SMALL; + thread->failed = true; + } + } + if (!thread->failed) { + if (_sfetch_file_read(thread->file_handle, read_offset, bytes_to_read, (void*)buffer->ptr)) { + thread->fetched_size = bytes_to_read; + thread->fetched_offset += bytes_to_read; + } + else { + thread->error_code = SFETCH_ERROR_UNEXPECTED_EOF; + thread->failed = true; + } + } + } + } + SOKOL_ASSERT(thread->fetched_offset <= thread->content_size); + if (thread->failed || (thread->fetched_offset == thread->content_size)) { + if (_sfetch_file_handle_valid(thread->file_handle)) { + _sfetch_file_close(thread->file_handle); + thread->file_handle = _SFETCH_INVALID_FILE_HANDLE; + } + thread->finished = true; + } + } + /* ignore items in PAUSED or FAILED state */ +} + +#if _SFETCH_PLATFORM_WINDOWS +_SOKOL_PRIVATE DWORD WINAPI _sfetch_channel_thread_func(LPVOID arg) { +#else +_SOKOL_PRIVATE void* _sfetch_channel_thread_func(void* arg) { +#endif + _sfetch_channel_t* chn = (_sfetch_channel_t*) arg; + _sfetch_thread_entered(&chn->thread); + while (!_sfetch_thread_stop_requested(&chn->thread)) { + /* block until work arrives */ + uint32_t slot_id = _sfetch_thread_dequeue_incoming(&chn->thread, &chn->thread_incoming); + /* slot_id will be invalid if the thread was woken up to join */ + if (!_sfetch_thread_stop_requested(&chn->thread)) { + SOKOL_ASSERT(0 != slot_id); + chn->request_handler(chn->ctx, slot_id); + SOKOL_ASSERT(!_sfetch_ring_full(&chn->thread_outgoing)); + _sfetch_thread_enqueue_outgoing(&chn->thread, &chn->thread_outgoing, slot_id); + } + } + _sfetch_thread_leaving(&chn->thread); + return 0; +} +#endif /* _SFETCH_HAS_THREADS */ + +#if _SFETCH_PLATFORM_EMSCRIPTEN +EM_JS(void, sfetch_js_send_head_request, (uint32_t slot_id, const char* path_cstr), { + const path_str = UTF8ToString(path_cstr); + const req = new XMLHttpRequest(); + req.open('HEAD', path_str); + req.onreadystatechange = function() { + if (req.readyState == XMLHttpRequest.DONE) { + if (req.status == 200) { + const content_length = req.getResponseHeader('Content-Length'); + __sfetch_emsc_head_response(slot_id, content_length); + } + else { + __sfetch_emsc_failed_http_status(slot_id, req.status); + } + } + }; + req.send(); +}); + +/* if bytes_to_read != 0, a range-request will be sent, otherwise a normal request */ +EM_JS(void, sfetch_js_send_get_request, (uint32_t slot_id, const char* path_cstr, uint32_t offset, uint32_t bytes_to_read, void* buf_ptr, uint32_t buf_size), { + const path_str = UTF8ToString(path_cstr); + const req = new XMLHttpRequest(); + req.open('GET', path_str); + req.responseType = 'arraybuffer'; + const need_range_request = (bytes_to_read > 0); + if (need_range_request) { + req.setRequestHeader('Range', 'bytes='+offset+'-'+(offset+bytes_to_read-1)); + } + req.onreadystatechange = function() { + if (req.readyState == XMLHttpRequest.DONE) { + if ((req.status == 206) || ((req.status == 200) && !need_range_request)) { + const u8_array = new Uint8Array(\x2F\x2A\x2A @type {!ArrayBuffer} \x2A\x2F (req.response)); + const content_fetched_size = u8_array.length; + if (content_fetched_size <= buf_size) { + HEAPU8.set(u8_array, buf_ptr); + __sfetch_emsc_get_response(slot_id, bytes_to_read, content_fetched_size); + } + else { + __sfetch_emsc_failed_buffer_too_small(slot_id); + } + } + else { + __sfetch_emsc_failed_http_status(slot_id, req.status); + } + } + }; + req.send(); +}); + +/*=== emscripten specific C helper functions =================================*/ +#ifdef __cplusplus +extern "C" { +#endif +void _sfetch_emsc_send_get_request(uint32_t slot_id, _sfetch_item_t* item) { + if ((item->buffer.ptr == 0) || (item->buffer.size == 0)) { + item->thread.error_code = SFETCH_ERROR_NO_BUFFER; + item->thread.failed = true; + } + else { + uint32_t offset = 0; + uint32_t bytes_to_read = 0; + if (item->chunk_size > 0) { + /* send HTTP range request */ + SOKOL_ASSERT(item->thread.content_size > 0); + SOKOL_ASSERT(item->thread.http_range_offset < item->thread.content_size); + bytes_to_read = item->thread.content_size - item->thread.http_range_offset; + if (bytes_to_read > item->chunk_size) { + bytes_to_read = item->chunk_size; + } + SOKOL_ASSERT(bytes_to_read > 0); + offset = item->thread.http_range_offset; + } + sfetch_js_send_get_request(slot_id, item->path.buf, offset, bytes_to_read, (void*)item->buffer.ptr, item->buffer.size); + } +} + +/* called by JS when an initial HEAD request finished successfully (only when streaming chunks) */ +EMSCRIPTEN_KEEPALIVE void _sfetch_emsc_head_response(uint32_t slot_id, uint32_t content_length) { + _sfetch_t* ctx = _sfetch_ctx(); + if (ctx && ctx->valid) { + _sfetch_item_t* item = _sfetch_pool_item_lookup(&ctx->pool, slot_id); + if (item) { + SOKOL_ASSERT(item->buffer.ptr && (item->buffer.size > 0)); + item->thread.content_size = content_length; + _sfetch_emsc_send_get_request(slot_id, item); + } + } +} + +/* called by JS when a followup GET request finished successfully */ +EMSCRIPTEN_KEEPALIVE void _sfetch_emsc_get_response(uint32_t slot_id, uint32_t range_fetched_size, uint32_t content_fetched_size) { + _sfetch_t* ctx = _sfetch_ctx(); + if (ctx && ctx->valid) { + _sfetch_item_t* item = _sfetch_pool_item_lookup(&ctx->pool, slot_id); + if (item) { + item->thread.fetched_size = content_fetched_size; + item->thread.fetched_offset += content_fetched_size; + item->thread.http_range_offset += range_fetched_size; + if (item->chunk_size == 0) { + item->thread.finished = true; + } + else if (item->thread.http_range_offset >= item->thread.content_size) { + item->thread.finished = true; + } + _sfetch_ring_enqueue(&ctx->chn[item->channel].user_outgoing, slot_id); + } + } +} + +/* called by JS when an error occurred */ +EMSCRIPTEN_KEEPALIVE void _sfetch_emsc_failed_http_status(uint32_t slot_id, uint32_t http_status) { + _sfetch_t* ctx = _sfetch_ctx(); + if (ctx && ctx->valid) { + _sfetch_item_t* item = _sfetch_pool_item_lookup(&ctx->pool, slot_id); + if (item) { + if (http_status == 404) { + item->thread.error_code = SFETCH_ERROR_FILE_NOT_FOUND; + } + else { + item->thread.error_code = SFETCH_ERROR_INVALID_HTTP_STATUS; + } + item->thread.failed = true; + item->thread.finished = true; + _sfetch_ring_enqueue(&ctx->chn[item->channel].user_outgoing, slot_id); + } + } +} + +EMSCRIPTEN_KEEPALIVE void _sfetch_emsc_failed_buffer_too_small(uint32_t slot_id) { + _sfetch_t* ctx = _sfetch_ctx(); + if (ctx && ctx->valid) { + _sfetch_item_t* item = _sfetch_pool_item_lookup(&ctx->pool, slot_id); + if (item) { + item->thread.error_code = SFETCH_ERROR_BUFFER_TOO_SMALL; + item->thread.failed = true; + item->thread.finished = true; + _sfetch_ring_enqueue(&ctx->chn[item->channel].user_outgoing, slot_id); + } + } +} + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +_SOKOL_PRIVATE void _sfetch_request_handler(_sfetch_t* ctx, uint32_t slot_id) { + _sfetch_item_t* item = _sfetch_pool_item_lookup(&ctx->pool, slot_id); + if (!item) { + return; + } + if (item->state == _SFETCH_STATE_FETCHING) { + if ((item->chunk_size > 0) && (item->thread.content_size == 0)) { + /* if streaming download is requested, and the content-length isn't known + yet, need to send a HEAD request first + */ + sfetch_js_send_head_request(slot_id, item->path.buf); + } + else { + /* otherwise, this is either a request to load the entire file, or + to load the next streaming chunk + */ + _sfetch_emsc_send_get_request(slot_id, item); + } + } + else { + /* just move all other items (e.g. paused or cancelled) + into the outgoing queue, so they won't get lost + */ + _sfetch_ring_enqueue(&ctx->chn[item->channel].user_outgoing, slot_id); + } + if (item->thread.failed) { + item->thread.finished = true; + } +} +#endif /* _SFETCH_PLATFORM_EMSCRIPTEN */ + +_SOKOL_PRIVATE void _sfetch_channel_discard(_sfetch_channel_t* chn) { + SOKOL_ASSERT(chn); + #if _SFETCH_HAS_THREADS + if (chn->valid) { + _sfetch_thread_join(&chn->thread); + } + _sfetch_ring_discard(&chn->thread_incoming); + _sfetch_ring_discard(&chn->thread_outgoing); + #endif + _sfetch_ring_discard(&chn->free_lanes); + _sfetch_ring_discard(&chn->user_sent); + _sfetch_ring_discard(&chn->user_incoming); + _sfetch_ring_discard(&chn->user_outgoing); + _sfetch_ring_discard(&chn->free_lanes); + chn->valid = false; +} + +_SOKOL_PRIVATE bool _sfetch_channel_init(_sfetch_channel_t* chn, _sfetch_t* ctx, uint32_t num_items, uint32_t num_lanes, void (*request_handler)(_sfetch_t* ctx, uint32_t)) { + SOKOL_ASSERT(chn && (num_items > 0) && request_handler); + SOKOL_ASSERT(!chn->valid); + bool valid = true; + chn->request_handler = request_handler; + chn->ctx = ctx; + valid &= _sfetch_ring_init(&chn->free_lanes, num_lanes); + for (uint32_t lane = 0; lane < num_lanes; lane++) { + _sfetch_ring_enqueue(&chn->free_lanes, lane); + } + valid &= _sfetch_ring_init(&chn->user_sent, num_items); + valid &= _sfetch_ring_init(&chn->user_incoming, num_lanes); + valid &= _sfetch_ring_init(&chn->user_outgoing, num_lanes); + #if _SFETCH_HAS_THREADS + valid &= _sfetch_ring_init(&chn->thread_incoming, num_lanes); + valid &= _sfetch_ring_init(&chn->thread_outgoing, num_lanes); + #endif + if (valid) { + chn->valid = true; + #if _SFETCH_HAS_THREADS + _sfetch_thread_init(&chn->thread, _sfetch_channel_thread_func, chn); + #endif + return true; + } + else { + _sfetch_channel_discard(chn); + return false; + } +} + +/* put a request into the channels sent-queue, this is where all new requests + are stored until a lane becomes free. +*/ +_SOKOL_PRIVATE bool _sfetch_channel_send(_sfetch_channel_t* chn, uint32_t slot_id) { + SOKOL_ASSERT(chn && chn->valid); + if (!_sfetch_ring_full(&chn->user_sent)) { + _sfetch_ring_enqueue(&chn->user_sent, slot_id); + return true; + } + else { + _SFETCH_ERROR(SEND_QUEUE_FULL); + return false; + } +} + +_SOKOL_PRIVATE void _sfetch_invoke_response_callback(_sfetch_item_t* item) { + sfetch_response_t response; + _sfetch_clear(&response, sizeof(response)); + response.handle = item->handle; + response.dispatched = (item->state == _SFETCH_STATE_DISPATCHED); + response.fetched = (item->state == _SFETCH_STATE_FETCHED); + response.paused = (item->state == _SFETCH_STATE_PAUSED); + response.finished = item->user.finished; + response.failed = (item->state == _SFETCH_STATE_FAILED); + response.cancelled = item->user.cancel; + response.error_code = item->user.error_code; + response.channel = item->channel; + response.lane = item->lane; + response.path = item->path.buf; + response.user_data = item->user.user_data; + response.data_offset = item->user.fetched_offset - item->user.fetched_size; + response.data.ptr = item->buffer.ptr; + response.data.size = item->user.fetched_size; + response.buffer = item->buffer; + item->callback(&response); +} + +/* per-frame channel stuff: move requests in and out of the IO threads, call response callbacks */ +_SOKOL_PRIVATE void _sfetch_channel_dowork(_sfetch_channel_t* chn, _sfetch_pool_t* pool) { + + /* move items from sent- to incoming-queue permitting free lanes */ + const uint32_t num_sent = _sfetch_ring_count(&chn->user_sent); + const uint32_t avail_lanes = _sfetch_ring_count(&chn->free_lanes); + const uint32_t num_move = (num_sent < avail_lanes) ? num_sent : avail_lanes; + for (uint32_t i = 0; i < num_move; i++) { + const uint32_t slot_id = _sfetch_ring_dequeue(&chn->user_sent); + _sfetch_item_t* item = _sfetch_pool_item_lookup(pool, slot_id); + SOKOL_ASSERT(item); + SOKOL_ASSERT(item->state == _SFETCH_STATE_ALLOCATED); + item->state = _SFETCH_STATE_DISPATCHED; + item->lane = _sfetch_ring_dequeue(&chn->free_lanes); + /* if no buffer provided yet, invoke response callback to do so */ + if (0 == item->buffer.ptr) { + _sfetch_invoke_response_callback(item); + } + _sfetch_ring_enqueue(&chn->user_incoming, slot_id); + } + + /* prepare incoming items for being moved into the IO thread */ + const uint32_t num_incoming = _sfetch_ring_count(&chn->user_incoming); + for (uint32_t i = 0; i < num_incoming; i++) { + const uint32_t slot_id = _sfetch_ring_peek(&chn->user_incoming, i); + _sfetch_item_t* item = _sfetch_pool_item_lookup(pool, slot_id); + SOKOL_ASSERT(item); + SOKOL_ASSERT(item->state != _SFETCH_STATE_INITIAL); + SOKOL_ASSERT(item->state != _SFETCH_STATE_FETCHING); + /* transfer input params from user- to thread-data */ + if (item->user.pause) { + item->state = _SFETCH_STATE_PAUSED; + item->user.pause = false; + } + if (item->user.cont) { + if (item->state == _SFETCH_STATE_PAUSED) { + item->state = _SFETCH_STATE_FETCHED; + } + item->user.cont = false; + } + if (item->user.cancel) { + item->state = _SFETCH_STATE_FAILED; + item->user.finished = true; + } + switch (item->state) { + case _SFETCH_STATE_DISPATCHED: + case _SFETCH_STATE_FETCHED: + item->state = _SFETCH_STATE_FETCHING; + break; + default: break; + } + } + + #if _SFETCH_HAS_THREADS + /* move new items into the IO threads and processed items out of IO threads */ + _sfetch_thread_enqueue_incoming(&chn->thread, &chn->thread_incoming, &chn->user_incoming); + _sfetch_thread_dequeue_outgoing(&chn->thread, &chn->thread_outgoing, &chn->user_outgoing); + #else + /* without threading just directly dequeue items from the user_incoming queue and + call the request handler, the user_outgoing queue will be filled as the + asynchronous HTTP requests sent by the request handler are completed + */ + while (!_sfetch_ring_empty(&chn->user_incoming)) { + uint32_t slot_id = _sfetch_ring_dequeue(&chn->user_incoming); + _sfetch_request_handler(chn->ctx, slot_id); + } + #endif + + /* drain the outgoing queue, prepare items for invoking the response + callback, and finally call the response callback, free finished items + */ + while (!_sfetch_ring_empty(&chn->user_outgoing)) { + const uint32_t slot_id = _sfetch_ring_dequeue(&chn->user_outgoing); + SOKOL_ASSERT(slot_id); + _sfetch_item_t* item = _sfetch_pool_item_lookup(pool, slot_id); + SOKOL_ASSERT(item && item->callback); + SOKOL_ASSERT(item->state != _SFETCH_STATE_INITIAL); + SOKOL_ASSERT(item->state != _SFETCH_STATE_ALLOCATED); + SOKOL_ASSERT(item->state != _SFETCH_STATE_DISPATCHED); + SOKOL_ASSERT(item->state != _SFETCH_STATE_FETCHED); + /* transfer output params from thread- to user-data */ + item->user.fetched_offset = item->thread.fetched_offset; + item->user.fetched_size = item->thread.fetched_size; + if (item->user.cancel) { + item->user.error_code = SFETCH_ERROR_CANCELLED; + } + else { + item->user.error_code = item->thread.error_code; + } + if (item->thread.finished) { + item->user.finished = true; + } + /* state transition */ + if (item->thread.failed) { + item->state = _SFETCH_STATE_FAILED; + } + else if (item->state == _SFETCH_STATE_FETCHING) { + item->state = _SFETCH_STATE_FETCHED; + } + _sfetch_invoke_response_callback(item); + + /* when the request is finish, free the lane for another request, + otherwise feed it back into the incoming queue + */ + if (item->user.finished) { + _sfetch_ring_enqueue(&chn->free_lanes, item->lane); + _sfetch_pool_item_free(pool, slot_id); + } + else { + _sfetch_ring_enqueue(&chn->user_incoming, slot_id); + } + } +} + +_SOKOL_PRIVATE bool _sfetch_validate_request(_sfetch_t* ctx, const sfetch_request_t* req) { + if (req->channel >= ctx->desc.num_channels) { + _SFETCH_ERROR(REQUEST_CHANNEL_INDEX_TOO_BIG); + return false; + } + if (!req->path) { + _SFETCH_ERROR(REQUEST_PATH_IS_NULL); + return false; + } + if (strlen(req->path) >= (SFETCH_MAX_PATH-1)) { + _SFETCH_ERROR(REQUEST_PATH_TOO_LONG); + return false; + } + if (!req->callback) { + _SFETCH_ERROR(REQUEST_CALLBACK_MISSING); + return false; + } + if (req->chunk_size > req->buffer.size) { + _SFETCH_ERROR(REQUEST_CHUNK_SIZE_GREATER_BUFFER_SIZE); + return false; + } + if (req->user_data.ptr && (req->user_data.size == 0)) { + _SFETCH_ERROR(REQUEST_USERDATA_PTR_IS_SET_BUT_USERDATA_SIZE_IS_NULL); + return false; + } + if (!req->user_data.ptr && (req->user_data.size > 0)) { + _SFETCH_ERROR(REQUEST_USERDATA_PTR_IS_NULL_BUT_USERDATA_SIZE_IS_NOT); + return false; + } + if (req->user_data.size > SFETCH_MAX_USERDATA_UINT64 * sizeof(uint64_t)) { + _SFETCH_ERROR(REQUEST_USERDATA_SIZE_TOO_BIG); + return false; + } + return true; +} + +_SOKOL_PRIVATE sfetch_desc_t _sfetch_desc_defaults(const sfetch_desc_t* desc) { + SOKOL_ASSERT((desc->allocator.alloc && desc->allocator.free) || (!desc->allocator.alloc && !desc->allocator.free)); + sfetch_desc_t res = *desc; + res.max_requests = _sfetch_def(desc->max_requests, 128); + res.num_channels = _sfetch_def(desc->num_channels, 1); + res.num_lanes = _sfetch_def(desc->num_lanes, 1); + return res; +} + +// ██████ ██ ██ ██████ ██ ██ ██████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ██ ██████ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██████ ██████ ███████ ██ ██████ +// +// >>public +SOKOL_API_IMPL void sfetch_setup(const sfetch_desc_t* desc_) { + SOKOL_ASSERT(desc_); + SOKOL_ASSERT(0 == _sfetch); + + sfetch_desc_t desc = _sfetch_desc_defaults(desc_); + _sfetch = (_sfetch_t*) _sfetch_malloc_with_allocator(&desc.allocator, sizeof(_sfetch_t)); + SOKOL_ASSERT(_sfetch); + _sfetch_t* ctx = _sfetch_ctx(); + _sfetch_clear(ctx, sizeof(_sfetch_t)); + ctx->desc = desc; + ctx->setup = true; + ctx->valid = true; + + /* replace zero-init items with default values */ + if (ctx->desc.num_channels > SFETCH_MAX_CHANNELS) { + ctx->desc.num_channels = SFETCH_MAX_CHANNELS; + _SFETCH_WARN(CLAMPING_NUM_CHANNELS_TO_MAX_CHANNELS); + } + + /* setup the global request item pool */ + ctx->valid &= _sfetch_pool_init(&ctx->pool, ctx->desc.max_requests); + + /* setup IO channels (one thread per channel) */ + for (uint32_t i = 0; i < ctx->desc.num_channels; i++) { + ctx->valid &= _sfetch_channel_init(&ctx->chn[i], ctx, ctx->desc.max_requests, ctx->desc.num_lanes, _sfetch_request_handler); + } +} + +SOKOL_API_IMPL void sfetch_shutdown(void) { + _sfetch_t* ctx = _sfetch_ctx(); + SOKOL_ASSERT(ctx && ctx->setup); + ctx->valid = false; + /* IO threads must be shutdown first */ + for (uint32_t i = 0; i < ctx->desc.num_channels; i++) { + if (ctx->chn[i].valid) { + _sfetch_channel_discard(&ctx->chn[i]); + } + } + _sfetch_pool_discard(&ctx->pool); + ctx->setup = false; + _sfetch_free(ctx); + _sfetch = 0; +} + +SOKOL_API_IMPL bool sfetch_valid(void) { + _sfetch_t* ctx = _sfetch_ctx(); + return ctx && ctx->valid; +} + +SOKOL_API_IMPL sfetch_desc_t sfetch_desc(void) { + _sfetch_t* ctx = _sfetch_ctx(); + SOKOL_ASSERT(ctx && ctx->valid); + return ctx->desc; +} + +SOKOL_API_IMPL int sfetch_max_userdata_bytes(void) { + return SFETCH_MAX_USERDATA_UINT64 * 8; +} + +SOKOL_API_IMPL int sfetch_max_path(void) { + return SFETCH_MAX_PATH; +} + +SOKOL_API_IMPL bool sfetch_handle_valid(sfetch_handle_t h) { + _sfetch_t* ctx = _sfetch_ctx(); + SOKOL_ASSERT(ctx && ctx->valid); + /* shortcut invalid handle */ + if (h.id == 0) { + return false; + } + return 0 != _sfetch_pool_item_lookup(&ctx->pool, h.id); +} + +SOKOL_API_IMPL sfetch_handle_t sfetch_send(const sfetch_request_t* request) { + _sfetch_t* ctx = _sfetch_ctx(); + SOKOL_ASSERT(ctx && ctx->setup); + + const sfetch_handle_t invalid_handle = _sfetch_make_handle(0); + if (!ctx->valid) { + return invalid_handle; + } + if (!_sfetch_validate_request(ctx, request)) { + return invalid_handle; + } + SOKOL_ASSERT(request->channel < ctx->desc.num_channels); + + uint32_t slot_id = _sfetch_pool_item_alloc(&ctx->pool, request); + if (0 == slot_id) { + _SFETCH_WARN(REQUEST_POOL_EXHAUSTED); + return invalid_handle; + } + if (!_sfetch_channel_send(&ctx->chn[request->channel], slot_id)) { + /* send failed because the channels sent-queue overflowed */ + _sfetch_pool_item_free(&ctx->pool, slot_id); + return invalid_handle; + } + return _sfetch_make_handle(slot_id); +} + +SOKOL_API_IMPL void sfetch_dowork(void) { + _sfetch_t* ctx = _sfetch_ctx(); + SOKOL_ASSERT(ctx && ctx->setup); + if (!ctx->valid) { + return; + } + /* we're pumping each channel 2x so that unfinished request items coming out the + IO threads can be moved back into the IO-thread immediately without + having to wait a frame + */ + ctx->in_callback = true; + for (int pass = 0; pass < 2; pass++) { + for (uint32_t chn_index = 0; chn_index < ctx->desc.num_channels; chn_index++) { + _sfetch_channel_dowork(&ctx->chn[chn_index], &ctx->pool); + } + } + ctx->in_callback = false; +} + +SOKOL_API_IMPL void sfetch_bind_buffer(sfetch_handle_t h, sfetch_range_t buffer) { + _sfetch_t* ctx = _sfetch_ctx(); + SOKOL_ASSERT(ctx && ctx->valid); + SOKOL_ASSERT(ctx->in_callback); + SOKOL_ASSERT(buffer.ptr && (buffer.size > 0)); + _sfetch_item_t* item = _sfetch_pool_item_lookup(&ctx->pool, h.id); + if (item) { + SOKOL_ASSERT((0 == item->buffer.ptr) && (0 == item->buffer.size)); + item->buffer = buffer; + } +} + +SOKOL_API_IMPL void* sfetch_unbind_buffer(sfetch_handle_t h) { + _sfetch_t* ctx = _sfetch_ctx(); + SOKOL_ASSERT(ctx && ctx->valid); + SOKOL_ASSERT(ctx->in_callback); + _sfetch_item_t* item = _sfetch_pool_item_lookup(&ctx->pool, h.id); + if (item) { + void* prev_buf_ptr = (void*)item->buffer.ptr; + item->buffer.ptr = 0; + item->buffer.size = 0; + return prev_buf_ptr; + } + else { + return 0; + } +} + +SOKOL_API_IMPL void sfetch_pause(sfetch_handle_t h) { + _sfetch_t* ctx = _sfetch_ctx(); + SOKOL_ASSERT(ctx && ctx->valid); + _sfetch_item_t* item = _sfetch_pool_item_lookup(&ctx->pool, h.id); + if (item) { + item->user.pause = true; + item->user.cont = false; + } +} + +SOKOL_API_IMPL void sfetch_continue(sfetch_handle_t h) { + _sfetch_t* ctx = _sfetch_ctx(); + SOKOL_ASSERT(ctx && ctx->valid); + _sfetch_item_t* item = _sfetch_pool_item_lookup(&ctx->pool, h.id); + if (item) { + item->user.cont = true; + item->user.pause = false; + } +} + +SOKOL_API_IMPL void sfetch_cancel(sfetch_handle_t h) { + _sfetch_t* ctx = _sfetch_ctx(); + SOKOL_ASSERT(ctx && ctx->valid); + _sfetch_item_t* item = _sfetch_pool_item_lookup(&ctx->pool, h.id); + if (item) { + item->user.cont = false; + item->user.pause = false; + item->user.cancel = true; + } +} +#endif /* SOKOL_FETCH_IMPL */ diff --git a/source/engine/thirdparty/sokol/sokol_fontstash.h b/source/engine/thirdparty/sokol/sokol_fontstash.h new file mode 100644 index 0000000..9bf406f --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_fontstash.h @@ -0,0 +1,1904 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_FONTSTASH_IMPL) +#define SOKOL_FONTSTASH_IMPL +#endif +#ifndef SOKOL_FONTSTASH_INCLUDED +/* + sokol_fontstash.h -- renderer for https://github.com/memononen/fontstash + on top of sokol_gl.h + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_FONTSTASH_IMPL + + before you include this file in *one* C or C++ file to create the + implementation. + + The following defines are used by the implementation to select the + platform-specific embedded shader code (these are the same defines as + used by sokol_gfx.h and sokol_app.h): + + SOKOL_GLCORE33 + SOKOL_GLES3 + SOKOL_D3D11 + SOKOL_METAL + + ...optionally provide the following macros to override defaults: + + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_FONTSTASH_API_DECL - public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_FONTSTASH_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + SOKOL_UNREACHABLE() - a guard macro for unreachable code (default: assert(false)) + + Include the following headers before including sokol_fontstash.h: + + sokol_gfx.h + + Additionally include the following headers for including the sokol_fontstash.h + implementation: + + sokol_gl.h + + HOW TO + ====== + --- First initialize sokol-gfx and sokol-gl as usual: + + sg_setup(&(sg_desc){...}); + sgl_setup(&(sgl_desc){...}); + + --- Create at least one fontstash context with sfons_create() (this replaces + glfonsCreate() from fontstash.h's example GL renderer: + + FONScontext* ctx = sfons_create(&(sfons_desc_t){ + .width = atlas_width, + .height = atlas_height, + }); + + Each FONScontext manages one font atlas texture which can hold rasterized + glyphs for multiple fonts. + + --- From here on, use fontstash.h's functions "as usual" to add TTF + font data and draw text. Note that (just like with sokol-gl), text + rendering can happen anywhere in the frame, not only inside + a sokol-gfx rendering pass. + + --- You can use the helper function + + uint32_t sfons_rgba(uint8_t r, uint8_t g, uint8_t b, uint8_t a) + + To convert a 0..255 RGBA color into a packed uint32_t color value + expected by fontstash.h. + + --- Once per frame before calling sgl_draw(), call: + + sfons_flush(FONScontext* ctx) + + ...this will update the dynamic sokol-gfx texture with the latest font + atlas content. + + --- To actually render the text (and any other sokol-gl draw commands), + call sgl_draw() inside a sokol-gfx frame. + + --- NOTE that you can mix fontstash.h calls with sokol-gl calls to mix + text rendering with sokol-gl rendering. You can also use + sokol-gl's matrix stack to position fontstash.h text in 3D. + + --- finally on application shutdown, call: + + sfons_destroy(FONScontext* ctx) + + before sgl_shutdown() and sg_shutdown() + + + WHAT HAPPENS UNDER THE HOOD: + ============================ + + FONScontext* sfons_create(const sfons_desc_t* desc) + - creates a sokol-gfx shader compatible with sokol-gl + - creates an sgl_pipeline object with alpha-blending using + this shader + - creates a 1-byte-per-pixel font atlas texture via sokol-gfx + (pixel format SG_PIXELFORMAT_R8) + + fonsDrawText(): + - this will call the following sequence of sokol-gl functions: + + sgl_enable_texture(); + sgl_texture(...); + sgl_push_pipeline(); + sgl_load_pipeline(...); + sgl_begin_triangles(); + for each vertex: + sgl_v2f_t2f_c1i(...); + sgl_end(); + sgl_pop_pipeline(); + sgl_disable_texture(); + + - note that sokol-gl will merge several sgl_*_begin/sgl_end pairs + into a single draw call if no relevant state has changed, typically + all calls to fonsDrawText() will be merged into a single draw call + as long as all calls use the same FONScontext + + sfons_flush(FONScontext* ctx): + - this will call sg_update_image() on the font atlas texture + if fontstash.h has added any rasterized glyphs since the last + frame + + sfons_destroy(FONScontext* ctx): + - destroy the font atlas texture, sgl_pipeline and sg_shader objects + + + MEMORY ALLOCATION OVERRIDE + ========================== + You can override the memory allocation functions at initialization time + like this: + + void* my_alloc(size_t size, void* user_data) { + return malloc(size); + } + + void my_free(void* ptr, void* user_data) { + free(ptr); + } + + ... + FONScontext* fons_context = sfons_create(&(sfons_desc_t){ + ... + .allocator = { + .alloc = my_alloc, + .free = my_free, + .user_data = ..., + } + }); + ... + + If no overrides are provided, malloc and free will be used. Please + note that this doesn't affect any memory allocation performed + in fontstash.h (unfortunately those are hardwired to malloc/free). + + LICENSE + ======= + zlib/libpng license + + Copyright (c) 2018 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_FONTSTASH_INCLUDED (1) +#include +#include +#include // size_t + +#if !defined(SOKOL_GFX_INCLUDED) +#error "Please include sokol_gfx.h before sokol_fontstash.h" +#endif + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_FONTSTASH_API_DECL) +#define SOKOL_FONTSTASH_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_FONTSTASH_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_FONTSTASH_IMPL) +#define SOKOL_FONTSTASH_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_FONTSTASH_API_DECL __declspec(dllimport) +#else +#define SOKOL_FONTSTASH_API_DECL extern +#endif +#endif +#ifdef __cplusplus +extern "C" { +#endif + +/* + sfonst_allocator_t + + Used in sfons_desc_t to provide custom memory-alloc and -free functions + to sokol_fontstash.h. If memory management should be overridden, both the + alloc and free function must be provided (e.g. it's not valid to + override one function but not the other). + + NOTE that this does not affect memory allocation calls inside + fontstash.h +*/ +typedef struct sfons_allocator_t { + void* (*alloc)(size_t size, void* user_data); + void (*free)(void* ptr, void* user_data); + void* user_data; +} sfons_allocator_t; + +typedef struct sfons_desc_t { + int width; // initial width of font atlas texture (default: 512, must be power of 2) + int height; // initial height of font atlas texture (default: 512, must be power of 2) + sfons_allocator_t allocator; // optional memory allocation overrides +} sfons_desc_t; + +SOKOL_FONTSTASH_API_DECL FONScontext* sfons_create(const sfons_desc_t* desc); +SOKOL_FONTSTASH_API_DECL void sfons_destroy(FONScontext* ctx); +SOKOL_FONTSTASH_API_DECL void sfons_flush(FONScontext* ctx); +SOKOL_FONTSTASH_API_DECL uint32_t sfons_rgba(uint8_t r, uint8_t g, uint8_t b, uint8_t a); + +#ifdef __cplusplus +} /* extern "C" */ +#endif +#endif /* SOKOL_FONTSTASH_INCLUDED */ + +/*-- IMPLEMENTATION ----------------------------------------------------------*/ +#ifdef SOKOL_FONTSTASH_IMPL +#define SOKOL_FONTSTASH_IMPL_INCLUDED (1) + +#if defined(SOKOL_MALLOC) || defined(SOKOL_CALLOC) || defined(SOKOL_FREE) +#error "SOKOL_MALLOC/CALLOC/FREE macros are no longer supported, please use sfons_desc_t.allocator to override memory allocation functions" +#endif + +#include // memset, memcpy +#include // malloc, free + +#if !defined(SOKOL_GL_INCLUDED) +#error "Please include sokol_gl.h before sokol_fontstash.h" +#endif +#if !defined(FONS_H) +#error "Please include fontstash.h before sokol_fontstash.h" +#endif + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_DEBUG + #ifndef NDEBUG + #define SOKOL_DEBUG + #endif +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif +#ifndef SOKOL_UNREACHABLE + #define SOKOL_UNREACHABLE SOKOL_ASSERT(false) +#endif +#ifndef _SOKOL_UNUSED + #define _SOKOL_UNUSED(x) (void)(x) +#endif + +#if defined(SOKOL_GLCORE33) +/* + Embedded source code compiled with: + + sokol-shdc -i sfons.glsl -o sfons.h -l glsl330:glsl300es:hlsl4:metal_macos:metal_ios:metal_sim:wgpu -b + + (not that for Metal and D3D11 byte code, sokol-shdc must be run + on macOS and Windows) + + @vs vs + uniform vs_params { + uniform mat4 mvp; + uniform mat4 tm; + }; + in vec4 position; + in vec2 texcoord0; + in vec4 color0; + in float psize; + out vec4 uv; + out vec4 color; + void main() { + gl_Position = mvp * position; + gl_PointSize = psize; + uv = tm * vec4(texcoord0, 0.0, 1.0); + color = color0; + } + @end + + @fs fs + uniform sampler2D tex; + in vec4 uv; + in vec4 color; + out vec4 frag_color; + void main() { + frag_color = vec4(1.0, 1.0, 1.0, texture(tex, uv.xy).r) * color; + } + @end + + @program sfontstash vs fs +*/ +static const char _sfons_vs_source_glsl330[478] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e, + 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61, + 0x72,0x61,0x6d,0x73,0x5b,0x38,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, + 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e, + 0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a, + 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, + 0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x73, + 0x69,0x7a,0x65,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x75,0x76, + 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, + 0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74, + 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65, + 0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, + 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69, + 0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x0a, + 0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20, + 0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, + 0x6d,0x61,0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30, + 0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c, + 0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x76, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x70, + 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f, + 0x50,0x6f,0x69,0x6e,0x74,0x53,0x69,0x7a,0x65,0x20,0x3d,0x20,0x70,0x73,0x69,0x7a, + 0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34, + 0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2c,0x20,0x76, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d,0x2c,0x20,0x76,0x73,0x5f, + 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61, + 0x72,0x61,0x6d,0x73,0x5b,0x37,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28, + 0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, + 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20, + 0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +static const char _sfons_fs_source_glsl330[195] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e, + 0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20, + 0x74,0x65,0x78,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, + 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76, + 0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a, + 0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x75,0x76,0x3b,0x0a,0x69,0x6e,0x20,0x76, + 0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64, + 0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, + 0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x74, + 0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x2c,0x20,0x75,0x76,0x2e,0x78, + 0x79,0x29,0x2e,0x78,0x29,0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x7d, + 0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_GLES3) +static const char _sfons_vs_source_glsl300es[481] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, + 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73, + 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x38,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f, + 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29, + 0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, + 0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x70,0x73,0x69,0x7a,0x65,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34, + 0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, + 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63, + 0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74, + 0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79, + 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32, + 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30, + 0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, + 0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, + 0x73,0x5b,0x30,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b, + 0x31,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d, + 0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20, + 0x2a,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x67,0x6c,0x5f,0x50,0x6f,0x69,0x6e,0x74,0x53,0x69,0x7a,0x65,0x20,0x3d,0x20,0x70, + 0x73,0x69,0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x6d, + 0x61,0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d, + 0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d,0x2c,0x20, + 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d,0x2c,0x20,0x76,0x73, + 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x37,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65, + 0x63,0x34,0x28,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x2c,0x20,0x30,0x2e, + 0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c, + 0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x7d,0x0a,0x0a, + 0x00, +}; +static const char _sfons_fs_source_glsl300es[268] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, + 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, + 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, + 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, + 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d, + 0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x3b,0x0a,0x0a,0x6c,0x61,0x79, + 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, + 0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34, + 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20, + 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x75,0x76,0x3b,0x0a,0x69, + 0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c, + 0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29, + 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, + 0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e, + 0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, + 0x74,0x65,0x78,0x2c,0x20,0x75,0x76,0x2e,0x78,0x79,0x29,0x2e,0x78,0x29,0x20,0x2a, + 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_METAL) +static const uint8_t _sfons_vs_bytecode_metal_macos[3417] = { + 0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x59,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x40,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0x0a,0x16,0x9b,0x1c,0x17,0xd6,0x38, + 0xd5,0x49,0x10,0x98,0x04,0x66,0x15,0xf9,0x7e,0x49,0x87,0x6c,0x57,0x88,0x31,0x1d, + 0xab,0xb6,0x09,0x92,0x56,0xe2,0x6f,0x4d,0x48,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x40,0x00,0x00, + 0x00,0x56,0x41,0x54,0x54,0x2a,0x00,0x04,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x00,0x00,0x80,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x02,0x80,0x70,0x73,0x69,0x7a,0x65,0x00,0x03, + 0x80,0x56,0x41,0x54,0x59,0x06,0x00,0x04,0x00,0x06,0x04,0x06,0x03,0x45,0x4e,0x44, + 0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17,0x0b,0x00,0x00,0x00, + 0x00,0x14,0x00,0x00,0x00,0x24,0x0c,0x00,0x00,0xff,0xff,0xff,0xff,0x42,0x43,0xc0, + 0xde,0x21,0x0c,0x00,0x00,0x06,0x03,0x00,0x00,0x0b,0x82,0x20,0x00,0x02,0x00,0x00, + 0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04,0x49,0x06,0x10,0x32, + 0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b,0x62,0x80,0x14,0x45, + 0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18,0x49,0x0a,0x32,0x44, + 0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21,0x72,0x24,0x07,0xc8, + 0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00,0x00,0x51,0x18,0x00, + 0x00,0x89,0x00,0x00,0x00,0x1b,0xf6,0x25,0xf8,0xff,0xff,0xff,0xff,0x01,0x90,0x80, + 0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87,0x71,0xa0,0x07,0x76,0xc8,0x87,0x36, + 0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72,0x20,0x87,0x36,0x20,0x87,0x74,0xb0, + 0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88,0x07,0x79,0xa0,0x87,0x36,0x30,0x07, + 0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1, + 0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xda,0x80,0x1e, + 0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c,0xd8,0x81,0x1d,0xe6,0x01,0x30,0x87, + 0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87,0x72,0x98,0x87,0x79,0x68,0x03,0x78, + 0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72,0x68,0x03,0x73,0x80,0x87,0x76,0x08, + 0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda, + 0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda,0x00,0x1e,0xde,0x21,0x1d,0xdc,0x81, + 0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21,0x1d,0xda,0x01,0xa0,0x07,0x79,0xa8, + 0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30,0x07,0x79,0x08,0x87,0x76,0x28,0x87, + 0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87,0x72,0x90,0x87,0x36,0x28,0x07,0x76, + 0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77,0x68,0x03,0x76,0x28,0x87,0x70,0x30, + 0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70,0x07,0x73,0x98,0x87,0x36,0x30,0x07, + 0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01, + 0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1,0x1d,0xe0,0xa1,0x0d,0xe8,0x21,0x1c, + 0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08, + 0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36, + 0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d, + 0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d,0xca,0x81,0x1c,0xda,0x40,0x1f,0xca, + 0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0,0xa1,0x0d,0xda,0x21,0x1c,0xe8,0x01, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x7a,0x90, + 0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38,0x87,0x36,0x68,0x87,0x70,0xa0,0x07, + 0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0x62,0x1e,0xe8,0x21,0x1c,0xc6,0x61, + 0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1,0x1c,0xc6,0x81,0x1e,0xde,0x41,0x1e, + 0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x0d,0xe6,0x21,0x1d,0xf4, + 0xa1,0x1c,0x00,0x3c,0x00,0x08,0x7a,0x08,0x07,0x79,0x38,0x87,0x72,0xa0,0x87,0x36, + 0x30,0x87,0x72,0x08,0x07,0x7a,0xa8,0x07,0x79,0x28,0x87,0x79,0x00,0xda,0xc0,0x1c, + 0xe0,0x21,0x0e,0xec,0x00,0x20,0xea,0xc1,0x1d,0xe6,0x21,0x1c,0xcc,0xa1,0x1c,0xda, + 0xc0,0x1c,0xe0,0xa1,0x0d,0xda,0x21,0x1c,0xe8,0x01,0x1d,0x00,0x7a,0x90,0x87,0x7a, + 0x28,0x07,0x80,0xa8,0x87,0x79,0x28,0x87,0x36,0x98,0x87,0x77,0x30,0x07,0x7a,0x68, + 0x03,0x73,0x60,0x87,0x77,0x08,0x07,0x7a,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e,0xca, + 0x01,0xd8,0x60,0x08,0x05,0xb0,0x00,0x15,0x00,0x49,0x18,0x00,0x00,0x01,0x00,0x00, + 0x00,0x13,0x84,0x40,0x00,0x89,0x20,0x00,0x00,0x24,0x00,0x00,0x00,0x32,0x22,0x48, + 0x09,0x20,0x64,0x85,0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90, + 0x14,0x12,0x4c,0x8a,0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x40,0x33,0x00,0xc3,0x08,0x04, + 0x70,0x97,0x34,0x45,0x94,0x30,0xf9,0x0c,0x80,0x34,0xf4,0xef,0x50,0x93,0xff,0x00, + 0x82,0x42,0x0c,0x98,0x08,0x21,0x80,0x61,0x04,0x01,0x48,0x82,0x30,0x13,0x35,0x0f, + 0xf4,0x20,0x0f,0xf5,0x30,0x0e,0xf4,0xe0,0x06,0xed,0x50,0x0e,0xf4,0x10,0x0e,0xec, + 0xa0,0x07,0x7a,0xd0,0x0e,0xe1,0x40,0x0f,0xf2,0x90,0x0e,0xf8,0x80,0x02,0x72,0x90, + 0x34,0x45,0x94,0x30,0xf9,0x95,0xf4,0x3f,0x40,0x04,0x30,0x12,0x12,0x4a,0x19,0x44, + 0x30,0x84,0x62,0x88,0x30,0x02,0x38,0x84,0x06,0x02,0xe6,0x08,0xc0,0x60,0x8e,0x00, + 0x14,0x06,0x11,0x02,0x61,0x18,0x81,0x58,0x46,0x00,0x00,0x00,0x00,0x13,0xb2,0x70, + 0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68, + 0x83,0x76,0x08,0x87,0x71,0x78,0x87,0x79,0xc0,0x87,0x38,0x80,0x03,0x37,0x88,0x83, + 0x38,0x70,0x03,0x38,0xd8,0xf0,0x1e,0xe5,0xd0,0x06,0xf0,0xa0,0x07,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x90,0x0e,0x71,0xa0,0x07,0x78, + 0xa0,0x07,0x78,0xd0,0x06,0xe9,0x80,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90, + 0x0e,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x90,0x0e, + 0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x90,0x0e,0x76, + 0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0e,0x73,0x20, + 0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0e,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0e,0x78,0x00,0x07,0x7a, + 0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x60, + 0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x60,0x0f,0x72,0x40,0x07, + 0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x73,0x20,0x07,0x7a, + 0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x74,0x80,0x07,0x7a,0x60, + 0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x76,0x40,0x07,0x7a,0x60,0x07, + 0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x79,0x60,0x07,0x7a,0x10,0x07,0x72, + 0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x20,0x07,0x78,0xa0, + 0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07, + 0x79,0x20,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d, + 0x60,0x0f,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50, + 0x07,0x76,0xd0,0x06,0xf6,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07, + 0x7a,0x50,0x07,0x71,0x20,0x07,0x6d,0x60,0x0f,0x71,0x00,0x07,0x72,0x40,0x07,0x7a, + 0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x6d,0x60, + 0x0e,0x78,0x00,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07, + 0x6d,0xe0,0x0e,0x78,0xa0,0x07,0x71,0x60,0x07,0x7a,0x30,0x07,0x72,0x30,0x84,0x49, + 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0xc8,0x02,0x01,0x00,0x00,0x09,0x00,0x00, + 0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43, + 0x5a,0x25,0x30,0x02,0x50,0x80,0x01,0x85,0x50,0x04,0x65,0x50,0x80,0x02,0x05,0x51, + 0x20,0xc4,0x46,0x00,0x00,0x79,0x18,0x00,0x00,0x15,0x01,0x00,0x00,0x1a,0x03,0x4c, + 0x10,0x95,0xbb,0x31,0xb4,0x30,0xb9,0xaf,0xb9,0x34,0xbd,0xb2,0x21,0xc6,0x12,0x28, + 0xc0,0x42,0x70,0x0d,0x82,0xe0,0xe0,0xd8,0xca,0x40,0x98,0x98,0xac,0x9a,0x40,0xec, + 0xca,0xe4,0xe6,0xd2,0xde,0xdc,0x40,0x72,0x60,0x64,0x5c,0x62,0x40,0x50,0xda,0xca, + 0xe8,0xc2,0xd8,0xcc,0xca,0x5a,0x72,0x60,0x64,0x5c,0x62,0x5c,0x68,0x72,0x52,0x86, + 0x08,0x8a,0x30,0xc4,0x58,0x82,0x05,0x59,0x04,0x16,0x4d,0x65,0x74,0x61,0x6c,0x43, + 0x10,0xa5,0x58,0x82,0x25,0x58,0x04,0x6e,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70, + 0x69,0x6c,0x65,0x2e,0x64,0x65,0x6e,0x6f,0x72,0x6d,0x73,0x5f,0x64,0x69,0x73,0x61, + 0x62,0x6c,0x65,0x43,0x04,0xe5,0x20,0x17,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97, + 0xc6,0x56,0xe6,0x62,0x16,0x36,0x47,0xf7,0xd5,0x16,0x46,0x87,0xf6,0x55,0xe6,0x16, + 0x26,0xc6,0x56,0x36,0x44,0x50,0x12,0x96,0x41,0x58,0x9a,0x9c,0xcb,0xd8,0x5b,0x1b, + 0x5c,0x1a,0x5b,0x99,0x8b,0x99,0x5c,0x58,0x5b,0x99,0x58,0x9d,0x99,0x59,0x99,0xdc, + 0x97,0x59,0x19,0xdd,0x18,0xda,0x17,0x59,0xda,0x5c,0x98,0x18,0x5b,0xd9,0x10,0x41, + 0x59,0x18,0x06,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x6e, + 0x61,0x74,0x69,0x76,0x65,0x5f,0x64,0x6f,0x75,0x62,0x6c,0x65,0x5f,0x64,0x69,0x73, + 0x61,0x62,0x6c,0x65,0x43,0x04,0xa5,0x61,0x14,0x96,0x26,0xe7,0x62,0x57,0x26,0x47, + 0x57,0x86,0xf7,0xf5,0x56,0x47,0x07,0x57,0x47,0xc7,0xa5,0x6e,0xae,0x4c,0x0e,0x85, + 0xed,0x6d,0xcc,0x0d,0x26,0x85,0x51,0x58,0x9a,0x9c,0x4b,0x98,0xdc,0xd9,0x17,0x5d, + 0x1e,0x5c,0xd9,0x97,0x5b,0x58,0x5b,0x19,0x0d,0x33,0xb6,0xb7,0x30,0x3a,0x1a,0x32, + 0x61,0x69,0x72,0x2e,0x61,0x72,0x67,0x5f,0x6e,0x61,0x6d,0x65,0x14,0xea,0xec,0x86, + 0x30,0xca,0xa3,0x40,0x4a,0xa4,0x48,0xca,0xa4,0x50,0x5c,0xea,0xe6,0xca,0xe4,0x50, + 0xd8,0xde,0xc6,0xdc,0x62,0x52,0x58,0x8c,0xbd,0xb1,0xbd,0xc9,0x0d,0x61,0x94,0x47, + 0xb1,0x94,0x48,0x91,0x94,0x49,0xb9,0xc8,0x84,0xa5,0xc9,0xb9,0xc0,0xbd,0xcd,0xa5, + 0xd1,0xa5,0xbd,0xb9,0x71,0x39,0x63,0xfb,0x82,0x7a,0x9b,0x4b,0xa3,0x4b,0x7b,0x73, + 0x1b,0xa2,0x28,0x99,0x12,0x29,0x92,0x32,0x29,0x1a,0x9d,0xb0,0x34,0x39,0x17,0xb8, + 0xb7,0x34,0x37,0xba,0xaf,0xb9,0x34,0xbd,0x32,0x16,0x66,0x6c,0x6f,0x61,0x74,0x64, + 0xce,0xd8,0xbe,0xa0,0xde,0xd2,0xdc,0xe8,0xa6,0xd2,0xf4,0xca,0x86,0x28,0x0a,0xa7, + 0x44,0x4a,0xa7,0x4c,0x8a,0x37,0x04,0x51,0x2a,0x05,0x53,0x36,0xe5,0x23,0x14,0x96, + 0x26,0xe7,0x62,0x57,0x26,0x47,0x57,0x86,0xf7,0x95,0xe6,0x06,0x57,0x47,0x47,0x29, + 0x2c,0x4d,0xce,0x85,0xed,0x6d,0x2c,0x8c,0x2e,0xed,0xcd,0xed,0x2b,0xcd,0x8d,0xac, + 0x0c,0x8f,0xd9,0x59,0x99,0x5b,0x99,0x5c,0x18,0x5d,0x19,0x19,0x0a,0x0e,0xdc,0xdb, + 0x5c,0x1a,0x5d,0xda,0x9b,0x1b,0x91,0x1d,0xcd,0x97,0x59,0x0a,0x11,0xb8,0xb7,0xb9, + 0x34,0xba,0xb4,0x37,0xb7,0x21,0xd4,0x22,0x28,0x61,0xa0,0x88,0xc1,0x22,0x2c,0x81, + 0x32,0x06,0x4a,0xa4,0x48,0xca,0xa4,0x90,0x01,0xb5,0xb3,0x32,0xb7,0x32,0xb9,0x30, + 0xba,0x32,0x32,0x94,0x1c,0xba,0x32,0xbc,0xb1,0xb7,0x37,0x39,0x32,0x18,0x22,0x3b, + 0x99,0x2f,0xb3,0x14,0x1a,0x66,0x6c,0x6f,0x61,0x74,0x32,0x4c,0xe8,0xca,0xf0,0xc6, + 0xde,0xde,0xe4,0xc8,0x60,0x86,0x50,0x4b,0xa0,0x84,0x81,0x22,0x06,0x4b,0xb0,0x04, + 0x8a,0x19,0x28,0x91,0x72,0x06,0xca,0xa4,0xa0,0x01,0xaf,0xb3,0x32,0xb7,0x32,0xb9, + 0x30,0xba,0x32,0x32,0x14,0x9b,0xb1,0x37,0xb6,0x37,0x39,0x18,0x22,0x3b,0x9a,0x2f, + 0xb3,0x14,0x1a,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x43,0xa8,0xa5,0x50,0xc2,0x40,0x11, + 0x83,0xa5,0x58,0x02,0x45,0x0d,0x94,0x48,0x91,0x94,0x49,0x59,0x03,0x4a,0x67,0x65, + 0x6e,0x65,0x72,0x61,0x74,0x65,0x64,0x28,0x35,0x70,0x73,0x69,0x7a,0x65,0x66,0x29, + 0x2c,0xe0,0xe6,0xd2,0xf4,0xca,0x86,0x50,0x8b,0xa1,0x84,0x81,0x22,0x06,0x8b,0xb1, + 0x04,0x4a,0x1b,0x28,0x91,0xd2,0x29,0x93,0xe2,0x06,0x54,0xc2,0xd2,0xe4,0x5c,0xc4, + 0xea,0xcc,0xcc,0xca,0xe4,0xf8,0x84,0xa5,0xc9,0xb9,0x88,0xd5,0x99,0x99,0x95,0xc9, + 0x7d,0xcd,0xa5,0xe9,0x95,0x11,0x09,0x4b,0x93,0x73,0x91,0x2b,0x0b,0x23,0x23,0x15, + 0x96,0x26,0xe7,0x32,0x47,0x27,0x57,0x37,0x46,0xf7,0x45,0x97,0x07,0x57,0xf6,0x95, + 0xe6,0x66,0xf6,0x46,0xc4,0x8c,0xed,0x2d,0x8c,0x8e,0x06,0x8f,0x86,0x43,0x9b,0x1d, + 0x1c,0x05,0xba,0xb6,0x21,0xd4,0x22,0x2c,0xc3,0x22,0x28,0x74,0xa0,0xd4,0xc1,0x32, + 0x2c,0xc3,0x22,0x28,0x74,0xa0,0xd8,0x01,0xa3,0xb0,0x34,0x39,0x97,0x30,0xb9,0xb3, + 0x2f,0xba,0x3c,0xb8,0xb2,0xaf,0xb9,0x34,0xbd,0x32,0x5e,0x61,0x69,0x72,0x2e,0x61, + 0x72,0x67,0x5f,0x74,0x79,0x70,0x65,0x5f,0x61,0x6c,0x69,0x67,0x6e,0x5f,0x73,0x69, + 0x7a,0x65,0x4c,0xec,0xe6,0xbe,0xe0,0xc2,0xe4,0xc2,0xda,0xe6,0x38,0x7c,0xc9,0xc4, + 0x0c,0x21,0x83,0x85,0x50,0xe0,0x40,0x89,0x83,0xe5,0x50,0xc4,0x60,0x11,0x96,0x40, + 0x91,0x03,0x65,0x0e,0x94,0x3b,0x50,0xf0,0x60,0x39,0x94,0x3c,0x58,0x12,0x25,0x52, + 0xf4,0x40,0x99,0x94,0x3d,0x18,0xa2,0x28,0x65,0xa0,0xa4,0x81,0xc2,0x06,0xca,0x1b, + 0x28,0x7c,0x30,0xc4,0x48,0x00,0x05,0x0c,0x94,0x3e,0xe0,0xf3,0xd6,0xe6,0x96,0x06, + 0xf7,0x46,0x57,0xe6,0x46,0x07,0x32,0x86,0x16,0x26,0xc7,0x67,0x2a,0xad,0x0d,0x8e, + 0xad,0x0c,0x64,0x68,0x65,0x05,0x84,0x4a,0x28,0x28,0x68,0x88,0xa0,0x80,0xc2,0x10, + 0x43,0xf9,0x03,0x25,0x14,0x18,0x65,0x88,0xa1,0x88,0x82,0x22,0x0a,0x8c,0x32,0x22, + 0x62,0x07,0x76,0xb0,0x87,0x76,0x70,0x83,0x76,0x78,0x07,0x72,0xa8,0x07,0x76,0x28, + 0x07,0x37,0x30,0x07,0x76,0x08,0x87,0x73,0x98,0x87,0x29,0x41,0x30,0x42,0x61,0x07, + 0x76,0xb0,0x87,0x76,0x70,0x83,0x74,0x20,0x87,0x72,0x70,0x07,0x7a,0x98,0x12,0x0c, + 0x23,0x96,0x70,0x48,0x07,0x79,0x70,0x03,0x7b,0x28,0x07,0x79,0x98,0x87,0x74,0x78, + 0x07,0x77,0x98,0x12,0x10,0x23,0xa8,0x70,0x48,0x07,0x79,0x70,0x03,0x76,0x08,0x07, + 0x77,0x38,0x87,0x7a,0x08,0x87,0x73,0x28,0x87,0x5f,0xb0,0x87,0x72,0x90,0x87,0x79, + 0x48,0x87,0x77,0x70,0x87,0x29,0x81,0x31,0x62,0x0a,0x87,0x74,0x90,0x07,0x37,0x18, + 0x87,0x77,0x68,0x07,0x78,0x48,0x07,0x76,0x28,0x87,0x5f,0x78,0x07,0x78,0xa0,0x87, + 0x74,0x78,0x07,0x77,0x98,0x87,0x29,0x04,0xa2,0x30,0xce,0x08,0x25,0x1c,0xd2,0x41, + 0x1e,0xdc,0xc0,0x1e,0xca,0x41,0x1e,0xe8,0xa1,0x1c,0xf0,0x61,0x4a,0xe0,0x07,0x00, + 0x00,0x79,0x18,0x00,0x00,0x6d,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c, + 0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07, + 0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42, + 0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83, + 0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07, + 0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70, + 0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3, + 0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2, + 0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc, + 0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68, + 0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07, + 0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72, + 0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec, + 0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc, + 0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8, + 0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03, + 0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c, + 0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74, + 0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4, + 0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc, + 0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1, + 0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50, + 0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51, + 0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21, + 0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06, + 0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c, + 0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77, + 0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x00,0x00,0x00,0x00,0x71,0x20,0x00, + 0x00,0x02,0x00,0x00,0x00,0x06,0x50,0x30,0x00,0xd2,0xd0,0x00,0x00,0x61,0x20,0x00, + 0x00,0x3e,0x00,0x00,0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x09,0x00,0x00, + 0x00,0xe4,0xc6,0x22,0x86,0x61,0x18,0xc6,0x22,0x04,0x41,0x10,0xc6,0x22,0x82,0x20, + 0x08,0x88,0x95,0x40,0x19,0x14,0x01,0xb9,0x11,0x00,0x1a,0x33,0x00,0x24,0x66,0x00, + 0x28,0xcc,0x00,0x00,0x00,0xe3,0x15,0x0b,0x84,0x61,0x10,0x05,0x65,0x90,0x21,0x1a, + 0x0c,0x13,0x02,0xf9,0x8c,0x57,0x3c,0x14,0xc7,0x2d,0x14,0x94,0x41,0x86,0xea,0x70, + 0x4c,0x08,0xe4,0x63,0x41,0x01,0x9f,0xf1,0x0a,0x2a,0x0b,0x83,0x30,0x70,0x28,0x28, + 0x83,0x0c,0x1a,0x43,0x99,0x10,0xc8,0xc7,0x8a,0x00,0x3e,0xe3,0x15,0x99,0x67,0x06, + 0x66,0x40,0x51,0x50,0x06,0x19,0xbe,0x48,0x33,0x21,0x90,0x8f,0x15,0x01,0x7c,0xc6, + 0x2b,0xbc,0x31,0x60,0x83,0x35,0x18,0x03,0x0a,0xca,0x20,0xc3,0x18,0x60,0x99,0x09, + 0x81,0x7c,0xc6,0x2b,0xc4,0xe0,0x0c,0xe0,0xe0,0x0d,0x3c,0x0a,0xca,0x20,0xc3,0x19, + 0x70,0x61,0x60,0x42,0x20,0x1f,0x0b,0x0a,0xf8,0x8c,0x57,0x9c,0x01,0x1b,0xd4,0x01, + 0x1d,0x88,0x01,0x05,0xc5,0x86,0x00,0x3e,0xb3,0x0d,0x61,0x10,0x00,0xb3,0x0d,0x41, + 0x1b,0x04,0xb3,0x0d,0xc1,0x23,0xcc,0x36,0x04,0x6e,0x30,0x64,0x10,0x10,0x03,0x00, + 0x00,0x09,0x00,0x00,0x00,0x5b,0x86,0x20,0x18,0x85,0x2d,0x43,0x11,0x8c,0xc2,0x96, + 0x41,0x09,0x46,0x61,0xcb,0xf0,0x04,0xa3,0xb0,0x65,0xa0,0x82,0x51,0xd8,0x32,0x60, + 0xc1,0x28,0x6c,0x19,0xba,0x60,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _sfons_fs_bytecode_metal_macos[2893] = { + 0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x4d,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd5,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x70,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0xb6,0x8b,0xa9,0x7e,0x5a,0xee,0x89, + 0x6e,0x6c,0x22,0x2c,0x4b,0xad,0x03,0xda,0xe6,0xd7,0x2e,0x88,0x05,0x1f,0x44,0x92, + 0x88,0x08,0xa6,0x2c,0x57,0xb7,0x10,0x8a,0x6e,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x04,0x00,0x00, + 0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17, + 0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x54,0x0a,0x00,0x00,0xff,0xff,0xff, + 0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0x92,0x02,0x00,0x00,0x0b,0x82,0x20, + 0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04, + 0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b, + 0x62,0x80,0x14,0x45,0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18, + 0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21, + 0x72,0x24,0x07,0xc8,0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00, + 0x00,0x51,0x18,0x00,0x00,0x92,0x00,0x00,0x00,0x1b,0xfa,0x25,0xf8,0xff,0xff,0xff, + 0xff,0x01,0x60,0x00,0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07, + 0x7a,0x60,0x87,0x7c,0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72, + 0x68,0x03,0x72,0x48,0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90, + 0x07,0x7a,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc, + 0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81, + 0x1d,0xca,0xa1,0x0d,0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d, + 0xd8,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87, + 0x79,0x98,0x87,0x36,0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36, + 0x30,0x07,0x78,0x68,0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c, + 0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0, + 0xe1,0x1d,0xd2,0xc1,0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90, + 0x87,0x70,0x68,0x87,0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07, + 0x79,0x68,0x83,0x72,0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36, + 0x60,0x87,0x72,0x08,0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30, + 0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8, + 0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01, + 0x1e,0xda,0x80,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60, + 0x87,0x79,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1, + 0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c, + 0xc8,0xa1,0x0d,0xf4,0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda, + 0xa0,0x1d,0xc2,0x81,0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77, + 0x78,0x87,0x36,0xa0,0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68, + 0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6, + 0x81,0x1e,0xc2,0x61,0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61, + 0x1c,0xe8,0xe1,0x1d,0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e, + 0xda,0x60,0x1e,0xd2,0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa0,0x87,0x70,0x90,0x87, + 0x73,0x28,0x07,0x7a,0x68,0x03,0x73,0x28,0x87,0x70,0xa0,0x87,0x7a,0x90,0x87,0x72, + 0x98,0x07,0xa0,0x0d,0xcc,0x01,0x1e,0xe2,0xc0,0x0e,0x00,0xa2,0x1e,0xdc,0x61,0x1e, + 0xc2,0xc1,0x1c,0xca,0xa1,0x0d,0xcc,0x01,0x1e,0xda,0xa0,0x1d,0xc2,0x81,0x1e,0xd0, + 0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x88,0x7a,0x98,0x87,0x72,0x68,0x83,0x79, + 0x78,0x07,0x73,0xa0,0x87,0x36,0x30,0x07,0x76,0x78,0x87,0x70,0xa0,0x07,0xc0,0x1c, + 0xc2,0x81,0x1d,0xe6,0xa1,0x1c,0x80,0x0d,0x86,0x30,0x00,0x0b,0x50,0x6d,0x30,0x06, + 0x02,0x58,0x80,0x6a,0x03,0x42,0xfc,0xff,0xff,0xff,0xff,0x00,0x30,0x80,0x04,0x54, + 0x1b,0x8c,0x22,0x00,0x16,0xa0,0xda,0x60,0x18,0x02,0xb0,0x00,0x15,0x00,0x00,0x00, + 0x00,0x49,0x18,0x00,0x00,0x03,0x00,0x00,0x00,0x13,0x86,0x40,0x18,0x26,0x0c,0x44, + 0x61,0x00,0x00,0x00,0x00,0x89,0x20,0x00,0x00,0x20,0x00,0x00,0x00,0x32,0x22,0x48, + 0x09,0x20,0x64,0x85,0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90, + 0x14,0x12,0x4c,0x8a,0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x48,0x33,0x00,0xc3,0x08,0x04, + 0x70,0x90,0x34,0x45,0x94,0x30,0xf9,0x0c,0x80,0x34,0xf4,0xef,0x50,0x13,0x0a,0xc2, + 0x51,0xd2,0x14,0x51,0xc2,0xe4,0xff,0x13,0x71,0x4d,0x54,0x44,0xfc,0xf6,0xf0,0x4f, + 0x63,0x04,0xc0,0x20,0xc2,0x10,0x5c,0x24,0x4d,0x11,0x25,0x4c,0xfe,0x2f,0x01,0xcc, + 0xb3,0x10,0xd1,0x3f,0x8d,0x11,0x00,0x83,0x08,0x85,0x50,0x0a,0x11,0x02,0x31,0x74, + 0x86,0x11,0x04,0x60,0x8e,0x20,0x98,0x23,0x00,0x83,0x61,0x04,0x61,0x29,0x48,0x20, + 0x26,0x29,0xa6,0x00,0xb5,0x81,0x80,0x61,0x04,0x62,0x19,0x01,0x00,0x13,0xb2,0x70, + 0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68, + 0x83,0x76,0x08,0x87,0x71,0x78,0x87,0x79,0xc0,0x87,0x38,0x80,0x03,0x37,0x88,0x83, + 0x38,0x70,0x03,0x38,0xd8,0xf0,0x1e,0xe5,0xd0,0x06,0xf0,0xa0,0x07,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x90,0x0e,0x71,0xa0,0x07,0x78, + 0xa0,0x07,0x78,0xd0,0x06,0xe9,0x80,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90, + 0x0e,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x90,0x0e, + 0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x90,0x0e,0x76, + 0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0e,0x73,0x20, + 0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0e,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0e,0x78,0x00,0x07,0x7a, + 0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x60, + 0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x60,0x0f,0x72,0x40,0x07, + 0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x73,0x20,0x07,0x7a, + 0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x74,0x80,0x07,0x7a,0x60, + 0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x76,0x40,0x07,0x7a,0x60,0x07, + 0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x79,0x60,0x07,0x7a,0x10,0x07,0x72, + 0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x20,0x07,0x78,0xa0, + 0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07, + 0x79,0x20,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d, + 0x60,0x0f,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50, + 0x07,0x76,0xd0,0x06,0xf6,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07, + 0x7a,0x50,0x07,0x71,0x20,0x07,0x6d,0x60,0x0f,0x71,0x00,0x07,0x72,0x40,0x07,0x7a, + 0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x6d,0x60, + 0x0e,0x78,0x00,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07, + 0x6d,0xe0,0x0e,0x78,0xa0,0x07,0x71,0x60,0x07,0x7a,0x30,0x07,0x72,0x30,0x84,0x41, + 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x18,0xc2,0x38,0x40,0x00,0x08,0x00,0x00, + 0x00,0x00,0x00,0x64,0x81,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x32,0x1e,0x98, + 0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0x5a,0x25,0x30,0x02, + 0x50,0x08,0x05,0x51,0x04,0x65,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0xbb,0x00,0x00, + 0x00,0x1a,0x03,0x4c,0x10,0x95,0xbb,0x31,0xb4,0x30,0xb9,0xaf,0xb9,0x34,0xbd,0xb2, + 0x21,0xc6,0x22,0x3c,0xc0,0x42,0x70,0x0d,0x82,0xe0,0xe0,0xd8,0xca,0x40,0x98,0x98, + 0xac,0x9a,0x40,0xec,0xca,0xe4,0xe6,0xd2,0xde,0xdc,0x40,0x72,0x60,0x64,0x5c,0x62, + 0x40,0x50,0xda,0xca,0xe8,0xc2,0xd8,0xcc,0xca,0x5a,0x72,0x60,0x64,0x5c,0x62,0x5c, + 0x68,0x72,0x52,0x86,0x08,0x8f,0x30,0xc4,0x58,0x84,0xa5,0x58,0x06,0x16,0x4d,0x65, + 0x74,0x61,0x6c,0x43,0x90,0xa7,0x58,0x84,0x45,0x58,0x06,0x6e,0x61,0x69,0x72,0x2e, + 0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x64,0x65,0x6e,0x6f,0x72,0x6d,0x73,0x5f, + 0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x43,0x84,0xe7,0x20,0x17,0x96,0x26,0xe7,0x32, + 0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x62,0x16,0x36,0x47,0xf7,0xd5,0x16,0x46,0x87, + 0xf6,0x55,0xe6,0x16,0x26,0xc6,0x56,0x36,0x44,0x78,0x12,0x96,0x41,0x58,0x9a,0x9c, + 0xcb,0xd8,0x5b,0x1b,0x5c,0x1a,0x5b,0x99,0x8b,0x99,0x5c,0x58,0x5b,0x99,0x58,0x9d, + 0x99,0x59,0x99,0xdc,0x97,0x59,0x19,0xdd,0x18,0xda,0x17,0x59,0xda,0x5c,0x98,0x18, + 0x5b,0xd9,0x10,0xe1,0x59,0x18,0x06,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69, + 0x6c,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x5f,0x64,0x6f,0x75,0x62,0x6c,0x65, + 0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x43,0x84,0xa7,0x61,0x14,0x96,0x26,0xe7, + 0x22,0x57,0xe6,0x46,0x56,0x26,0xf7,0x45,0x17,0x26,0x77,0x56,0x46,0xc7,0x28,0x2c, + 0x4d,0xce,0x25,0x4c,0xee,0xec,0x8b,0x2e,0x0f,0xae,0xec,0xcb,0x2d,0xac,0xad,0x8c, + 0x86,0x19,0xdb,0x5b,0x18,0x1d,0x0d,0x99,0xb0,0x34,0x39,0x97,0x30,0xb9,0xb3,0x2f, + 0xb7,0xb0,0xb6,0x32,0x2a,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x43, + 0x98,0xe7,0x59,0x86,0x07,0x7a,0xa2,0x47,0x7a,0xa6,0x21,0xc2,0x43,0x51,0x0a,0x4b, + 0x93,0x73,0x31,0x93,0x0b,0x3b,0x6b,0x2b,0x73,0xa3,0xfb,0x4a,0x73,0x83,0xab,0xa3, + 0xe3,0x52,0x37,0x57,0x26,0x87,0xc2,0xf6,0x36,0xe6,0x06,0x93,0x42,0x25,0x2c,0x4d, + 0xce,0x65,0xac,0xcc,0x8d,0xae,0x4c,0x8e,0x4f,0x58,0x9a,0x9c,0x0b,0x5c,0x99,0xdc, + 0x1c,0x5c,0xd9,0x18,0x5d,0x9a,0x5d,0x19,0x85,0x3a,0xbb,0x21,0xd2,0x32,0x3c,0xd6, + 0x73,0x3d,0xd8,0x93,0x3d,0xd0,0x13,0x3d,0xd2,0xa3,0x71,0xa9,0x9b,0x2b,0x93,0x43, + 0x61,0x7b,0x1b,0x73,0x8b,0x49,0x61,0x31,0xf6,0xc6,0xf6,0x26,0x37,0x44,0x5a,0x84, + 0xc7,0x7a,0xb8,0x07,0x7b,0xb2,0x07,0x7a,0xa2,0x47,0x7a,0x3a,0x2e,0x61,0x69,0x72, + 0x2e,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x94,0xc2,0xd2,0xe4,0x5c,0xd8,0xde,0xc6, + 0xc2,0xe8,0xd2,0xde,0xdc,0xbe,0xd2,0xdc,0xc8,0xca,0xf0,0xa8,0x84,0xa5,0xc9,0xb9, + 0xcc,0x85,0xb5,0xc1,0xb1,0x95,0x11,0xa3,0x2b,0xc3,0xa3,0xab,0x93,0x2b,0x93,0x21, + 0xe3,0x31,0x63,0x7b,0x0b,0xa3,0x63,0x01,0x99,0x0b,0x6b,0x83,0x63,0x2b,0xf3,0xe1, + 0x40,0x57,0x86,0x37,0x84,0x5a,0x8c,0xe7,0x7b,0xc0,0x60,0x19,0x16,0xe1,0x09,0x83, + 0x07,0x7a,0xc4,0xe0,0x91,0x9e,0x31,0xe0,0x12,0x96,0x26,0xe7,0x32,0x17,0xd6,0x06, + 0xc7,0x56,0x26,0xc7,0x63,0x2e,0xac,0x0d,0x8e,0xad,0x4c,0x8e,0x08,0x5d,0x19,0xde, + 0x54,0x1b,0x1c,0x9b,0xdc,0x10,0x69,0x39,0x9e,0x32,0x78,0xc0,0x60,0x19,0x16,0xe1, + 0x81,0x1e,0x33,0x78,0xa4,0xe7,0x0c,0x86,0x20,0xcf,0xf6,0x78,0x0f,0x19,0x3c,0x68, + 0x30,0xc4,0x40,0x80,0xa7,0x7a,0xd2,0x60,0x44,0xc4,0x0e,0xec,0x60,0x0f,0xed,0xe0, + 0x06,0xed,0xf0,0x0e,0xe4,0x50,0x0f,0xec,0x50,0x0e,0x6e,0x60,0x0e,0xec,0x10,0x0e, + 0xe7,0x30,0x0f,0x53,0x82,0x60,0x84,0xc2,0x0e,0xec,0x60,0x0f,0xed,0xe0,0x06,0xe9, + 0x40,0x0e,0xe5,0xe0,0x0e,0xf4,0x30,0x25,0x18,0x46,0x2c,0xe1,0x90,0x0e,0xf2,0xe0, + 0x06,0xf6,0x50,0x0e,0xf2,0x30,0x0f,0xe9,0xf0,0x0e,0xee,0x30,0x25,0x20,0x46,0x50, + 0xe1,0x90,0x0e,0xf2,0xe0,0x06,0xec,0x10,0x0e,0xee,0x70,0x0e,0xf5,0x10,0x0e,0xe7, + 0x50,0x0e,0xbf,0x60,0x0f,0xe5,0x20,0x0f,0xf3,0x90,0x0e,0xef,0xe0,0x0e,0x53,0x02, + 0x63,0xc4,0x14,0x0e,0xe9,0x20,0x0f,0x6e,0x30,0x0e,0xef,0xd0,0x0e,0xf0,0x90,0x0e, + 0xec,0x50,0x0e,0xbf,0xf0,0x0e,0xf0,0x40,0x0f,0xe9,0xf0,0x0e,0xee,0x30,0x0f,0x53, + 0x08,0x44,0x61,0x9c,0x11,0x4c,0x38,0xa4,0x83,0x3c,0xb8,0x81,0x39,0xc8,0x43,0x38, + 0x9c,0x43,0x3b,0x94,0x83,0x3b,0xd0,0xc3,0x94,0x40,0x0d,0x00,0x00,0x79,0x18,0x00, + 0x00,0x6d,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d, + 0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c, + 0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d, + 0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d, + 0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79, + 0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc, + 0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50, + 0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30, + 0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03, + 0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07, + 0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76, + 0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98, + 0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8, + 0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21, + 0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43, + 0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f, + 0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70, + 0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0, + 0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40, + 0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41, + 0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e, + 0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07, + 0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f, + 0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d, + 0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38, + 0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88, + 0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08, + 0x07,0x7a,0x28,0x07,0x72,0x00,0x00,0x00,0x00,0x71,0x20,0x00,0x00,0x08,0x00,0x00, + 0x00,0x16,0xb0,0x01,0x48,0xe4,0x4b,0x00,0xf3,0x2c,0xc4,0x3f,0x11,0xd7,0x44,0x45, + 0xc4,0x6f,0x0f,0x7e,0x85,0x17,0xb7,0x6d,0x00,0x05,0x03,0x20,0x0d,0x0d,0x00,0x00, + 0x00,0x61,0x20,0x00,0x00,0x16,0x00,0x00,0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00, + 0x00,0x0b,0x00,0x00,0x00,0x04,0xc7,0x22,0x80,0x40,0x20,0x88,0x8d,0x00,0x8c,0x25, + 0x00,0x01,0xa9,0x11,0x80,0x1a,0x20,0x31,0x03,0x40,0x61,0x0e,0xc2,0xb2,0x2c,0x6a, + 0x06,0x80,0xc0,0x0c,0xc0,0x08,0xc0,0x18,0x01,0x08,0x82,0x20,0xfe,0x01,0x00,0x00, + 0x00,0x83,0x0c,0x0f,0x91,0x8c,0x18,0x28,0x42,0x70,0x39,0x4d,0x80,0x2c,0xc9,0x30, + 0xc8,0x70,0x04,0x8d,0x05,0x91,0x7c,0x66,0x1b,0x94,0x00,0xc8,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _sfons_vs_bytecode_metal_ios[3417] = { + 0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x59,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x40,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0x53,0xd2,0x06,0xf6,0xae,0x63,0x48, + 0x79,0x19,0x71,0xbe,0x11,0x2a,0xc0,0x72,0x90,0x9c,0xd4,0x1c,0xf2,0xfa,0xd7,0x02, + 0x09,0x76,0xb9,0xee,0x24,0x42,0xd7,0xbd,0x99,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x40,0x00,0x00, + 0x00,0x56,0x41,0x54,0x54,0x2a,0x00,0x04,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x00,0x00,0x80,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x02,0x80,0x70,0x73,0x69,0x7a,0x65,0x00,0x03, + 0x80,0x56,0x41,0x54,0x59,0x06,0x00,0x04,0x00,0x06,0x04,0x06,0x03,0x45,0x4e,0x44, + 0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17,0x0b,0x00,0x00,0x00, + 0x00,0x14,0x00,0x00,0x00,0x20,0x0c,0x00,0x00,0xff,0xff,0xff,0xff,0x42,0x43,0xc0, + 0xde,0x21,0x0c,0x00,0x00,0x05,0x03,0x00,0x00,0x0b,0x82,0x20,0x00,0x02,0x00,0x00, + 0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04,0x49,0x06,0x10,0x32, + 0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b,0x62,0x80,0x14,0x45, + 0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18,0x49,0x0a,0x32,0x44, + 0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21,0x72,0x24,0x07,0xc8, + 0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00,0x00,0x51,0x18,0x00, + 0x00,0x8a,0x00,0x00,0x00,0x1b,0xf6,0x25,0xf8,0xff,0xff,0xff,0xff,0x01,0x90,0x80, + 0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87,0x71,0xa0,0x07,0x76,0xc8,0x87,0x36, + 0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72,0x20,0x87,0x36,0x20,0x87,0x74,0xb0, + 0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88,0x07,0x79,0xa0,0x87,0x36,0x30,0x07, + 0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1, + 0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xda,0x80,0x1e, + 0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c,0xd8,0x81,0x1d,0xe6,0x01,0x30,0x87, + 0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87,0x72,0x98,0x87,0x79,0x68,0x03,0x78, + 0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72,0x68,0x03,0x73,0x80,0x87,0x76,0x08, + 0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda, + 0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda,0x00,0x1e,0xde,0x21,0x1d,0xdc,0x81, + 0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21,0x1d,0xda,0x01,0xa0,0x07,0x79,0xa8, + 0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30,0x07,0x79,0x08,0x87,0x76,0x28,0x87, + 0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87,0x72,0x90,0x87,0x36,0x28,0x07,0x76, + 0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77,0x68,0x03,0x76,0x28,0x87,0x70,0x30, + 0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70,0x07,0x73,0x98,0x87,0x36,0x30,0x07, + 0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01, + 0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1,0x1d,0xe0,0xa1,0x0d,0xe8,0x21,0x1c, + 0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08, + 0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36, + 0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d, + 0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d,0xca,0x81,0x1c,0xda,0x40,0x1f,0xca, + 0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0,0xa1,0x0d,0xda,0x21,0x1c,0xe8,0x01, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x7a,0x90, + 0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38,0x87,0x36,0x68,0x87,0x70,0xa0,0x07, + 0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0x62,0x1e,0xe8,0x21,0x1c,0xc6,0x61, + 0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1,0x1c,0xc6,0x81,0x1e,0xde,0x41,0x1e, + 0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x0d,0xe6,0x21,0x1d,0xf4, + 0xa1,0x1c,0x00,0x3c,0x00,0x08,0x7a,0x08,0x07,0x79,0x38,0x87,0x72,0xa0,0x87,0x36, + 0x30,0x87,0x72,0x08,0x07,0x7a,0xa8,0x07,0x79,0x28,0x87,0x79,0x00,0xda,0xc0,0x1c, + 0xe0,0x21,0x0e,0xec,0x00,0x20,0xea,0xc1,0x1d,0xe6,0x21,0x1c,0xcc,0xa1,0x1c,0xda, + 0xc0,0x1c,0xe0,0xa1,0x0d,0xda,0x21,0x1c,0xe8,0x01,0x1d,0x00,0x7a,0x90,0x87,0x7a, + 0x28,0x07,0x80,0xa8,0x87,0x79,0x28,0x87,0x36,0x98,0x87,0x77,0x30,0x07,0x7a,0x68, + 0x03,0x73,0x60,0x87,0x77,0x08,0x07,0x7a,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e,0xca, + 0x01,0xd8,0x80,0x08,0x05,0x90,0x00,0x0b,0x50,0x01,0x00,0x00,0x00,0x49,0x18,0x00, + 0x00,0x01,0x00,0x00,0x00,0x13,0x84,0x40,0x00,0x89,0x20,0x00,0x00,0x24,0x00,0x00, + 0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85,0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22, + 0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a,0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x40,0x33, + 0x00,0xc3,0x08,0x04,0x70,0x97,0x34,0x45,0x94,0x30,0xf9,0x0c,0x80,0x34,0xf4,0xef, + 0x50,0x93,0xff,0x00,0x82,0x42,0x0c,0x98,0x08,0x21,0x80,0x61,0x04,0x01,0x48,0x82, + 0x30,0x13,0x35,0x0f,0xf4,0x20,0x0f,0xf5,0x30,0x0e,0xf4,0xe0,0x06,0xed,0x50,0x0e, + 0xf4,0x10,0x0e,0xec,0xa0,0x07,0x7a,0xd0,0x0e,0xe1,0x40,0x0f,0xf2,0x90,0x0e,0xf8, + 0x80,0x02,0x72,0x90,0x34,0x45,0x94,0x30,0xf9,0x95,0xf4,0x3f,0x40,0x04,0x30,0x12, + 0x12,0x4a,0x19,0x44,0x30,0x84,0x62,0x88,0x30,0x02,0x38,0x84,0x06,0x02,0xe6,0x08, + 0xc0,0x60,0x8e,0x00,0x14,0x06,0x11,0x02,0x61,0x18,0x81,0x58,0x46,0x00,0x00,0x00, + 0x00,0x13,0xa8,0x70,0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78, + 0x60,0x87,0x72,0x68,0x83,0x74,0x78,0x87,0x79,0xc8,0x03,0x37,0x80,0x03,0x37,0x80, + 0x83,0x0d,0xef,0x51,0x0e,0x6d,0x00,0x0f,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40, + 0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe9,0x10,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07, + 0x6d,0x90,0x0e,0x78,0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9,0x10,0x07,0x76, + 0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xe9,0x30,0x07,0x72,0xa0, + 0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe9,0x60,0x07,0x74,0xa0,0x07, + 0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe6,0x30,0x07,0x72,0xa0,0x07,0x73, + 0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40, + 0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe6,0x80,0x07,0x70,0xa0,0x07,0x71,0x20,0x07, + 0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x76,0xa0,0x07,0x71, + 0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x74,0xa0,0x07,0x73,0x20, + 0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07, + 0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x40,0x07,0x78,0xa0,0x07,0x76,0x40,0x07,0x7a, + 0x60,0x07,0x74,0xd0,0x06,0xf6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60, + 0x07,0x74,0xd0,0x06,0xf6,0x90,0x07,0x76,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07, + 0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72, + 0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x90,0x07,0x72,0xa0, + 0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07, + 0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d, + 0x60,0x0f,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10, + 0x07,0x72,0xd0,0x06,0xf6,0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07, + 0x72,0x40,0x07,0x7a,0x10,0x07,0x70,0x20,0x07,0x74,0xd0,0x06,0xe6,0x80,0x07,0x70, + 0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xee,0x80, + 0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x73,0x20,0x07,0x43,0x98,0x04,0x00,0x80,0x00, + 0x00,0x00,0x00,0x00,0x80,0x2c,0x10,0x00,0x00,0x09,0x00,0x00,0x00,0x32,0x1e,0x98, + 0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0x5a,0x25,0x30,0x02, + 0x50,0x80,0x01,0x85,0x50,0x04,0x65,0x50,0x80,0x02,0x05,0x51,0x20,0xc4,0x46,0x00, + 0x00,0x79,0x18,0x00,0x00,0x15,0x01,0x00,0x00,0x1a,0x03,0x4c,0x10,0x95,0xbb,0x31, + 0xb4,0x30,0xb9,0xaf,0xb9,0x34,0xbd,0xb2,0x21,0xc6,0x12,0x28,0xc0,0x42,0x70,0x0d, + 0x82,0xe0,0xe0,0xd8,0xca,0x40,0x98,0x98,0xac,0x9a,0x40,0xec,0xca,0xe4,0xe6,0xd2, + 0xde,0xdc,0x40,0x72,0x60,0x64,0x5c,0x62,0x40,0x50,0xda,0xca,0xe8,0xc2,0xd8,0xcc, + 0xca,0x5a,0x72,0x60,0x64,0x5c,0x62,0x5c,0x6a,0x60,0x52,0x86,0x08,0x8a,0x30,0xc4, + 0x58,0x82,0x05,0x59,0x04,0x16,0x4d,0x65,0x74,0x61,0x6c,0x43,0x10,0xa5,0x58,0x82, + 0x45,0x58,0x04,0x6e,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e, + 0x64,0x65,0x6e,0x6f,0x72,0x6d,0x73,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x43, + 0x04,0xe5,0x20,0x17,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x62, + 0x16,0x36,0x47,0xf7,0xd5,0x16,0x46,0x87,0xf6,0x55,0xe6,0x16,0x26,0xc6,0x56,0x36, + 0x44,0x50,0x12,0x92,0x41,0x58,0x9a,0x9c,0xcb,0xd8,0x5b,0x1b,0x5c,0x1a,0x5b,0x99, + 0x8b,0x99,0x5c,0x58,0x5b,0x99,0x58,0x9d,0x99,0x59,0x99,0xdc,0x97,0x59,0x19,0xdd, + 0x18,0xda,0x57,0x99,0x5b,0x98,0x18,0x5b,0xd9,0x10,0x41,0x59,0x18,0x06,0x61,0x69, + 0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65, + 0x5f,0x64,0x6f,0x75,0x62,0x6c,0x65,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x43, + 0x04,0xa5,0x61,0x14,0x96,0x26,0xe7,0x62,0x57,0x26,0x47,0x57,0x86,0xf7,0xf5,0x56, + 0x47,0x07,0x57,0x47,0xc7,0xa5,0x6e,0xae,0x4c,0x0e,0x85,0xed,0x6d,0xcc,0x0d,0x26, + 0x85,0x51,0x58,0x9a,0x9c,0x4b,0x98,0xdc,0xd9,0x17,0x5d,0x1e,0x5c,0xd9,0x97,0x5b, + 0x58,0x5b,0x19,0x0d,0x33,0xb6,0xb7,0x30,0x3a,0x1a,0x32,0x61,0x69,0x72,0x2e,0x61, + 0x72,0x67,0x5f,0x6e,0x61,0x6d,0x65,0x14,0xea,0xec,0x86,0x30,0xca,0xa3,0x40,0x4a, + 0xa4,0x48,0xca,0xa4,0x50,0x5c,0xea,0xe6,0xca,0xe4,0x50,0xd8,0xde,0xc6,0xdc,0x62, + 0x52,0x58,0x8c,0xbd,0xb1,0xbd,0xc9,0x0d,0x61,0x94,0x47,0xb1,0x94,0x48,0x91,0x94, + 0x49,0xb9,0xc8,0x84,0xa5,0xc9,0xb9,0xc0,0xbd,0xcd,0xa5,0xd1,0xa5,0xbd,0xb9,0x71, + 0x39,0x63,0xfb,0x82,0x7a,0x9b,0x4b,0xa3,0x4b,0x7b,0x73,0x1b,0xa2,0x28,0x99,0x12, + 0x29,0x92,0x32,0x29,0x1a,0x9d,0xb0,0x34,0x39,0x17,0xb8,0xb7,0x34,0x37,0xba,0xaf, + 0xb9,0x34,0xbd,0x32,0x16,0x66,0x6c,0x6f,0x61,0x74,0x64,0xce,0xd8,0xbe,0xa0,0xde, + 0xd2,0xdc,0xe8,0xa6,0xd2,0xf4,0xca,0x86,0x28,0x0a,0xa7,0x44,0x4a,0xa7,0x4c,0x8a, + 0x37,0x04,0x51,0x2a,0x05,0x53,0x36,0xe5,0x23,0x14,0x96,0x26,0xe7,0x62,0x57,0x26, + 0x47,0x57,0x86,0xf7,0x95,0xe6,0x06,0x57,0x47,0x47,0x29,0x2c,0x4d,0xce,0x85,0xed, + 0x6d,0x2c,0x8c,0x2e,0xed,0xcd,0xed,0x2b,0xcd,0x8d,0xac,0x0c,0x8f,0xd9,0x59,0x99, + 0x5b,0x99,0x5c,0x18,0x5d,0x19,0x19,0x0a,0x0e,0xdc,0xdb,0x5c,0x1a,0x5d,0xda,0x9b, + 0x1b,0x91,0x1d,0xcd,0x97,0x59,0x0a,0x11,0xb8,0xb7,0xb9,0x34,0xba,0xb4,0x37,0xb7, + 0x21,0xd4,0x22,0x28,0x61,0xa0,0x88,0xc1,0x22,0x2c,0x81,0x32,0x06,0x4a,0xa4,0x48, + 0xca,0xa4,0x90,0x01,0xb5,0xb3,0x32,0xb7,0x32,0xb9,0x30,0xba,0x32,0x32,0x94,0x1c, + 0xba,0x32,0xbc,0xb1,0xb7,0x37,0x39,0x32,0x18,0x22,0x3b,0x99,0x2f,0xb3,0x14,0x1a, + 0x66,0x6c,0x6f,0x61,0x74,0x32,0x4c,0xe8,0xca,0xf0,0xc6,0xde,0xde,0xe4,0xc8,0x60, + 0x86,0x50,0x4b,0xa0,0x84,0x81,0x22,0x06,0x4b,0xb0,0x04,0x8a,0x19,0x28,0x91,0x72, + 0x06,0xca,0xa4,0xa0,0x01,0xaf,0xb3,0x32,0xb7,0x32,0xb9,0x30,0xba,0x32,0x32,0x14, + 0x9b,0xb1,0x37,0xb6,0x37,0x39,0x18,0x22,0x3b,0x9a,0x2f,0xb3,0x14,0x1a,0x63,0x6f, + 0x6c,0x6f,0x72,0x30,0x43,0xa8,0xa5,0x50,0xc2,0x40,0x11,0x83,0xa5,0x58,0x02,0x45, + 0x0d,0x94,0x48,0x91,0x94,0x49,0x59,0x03,0x4a,0x67,0x65,0x6e,0x65,0x72,0x61,0x74, + 0x65,0x64,0x28,0x35,0x70,0x73,0x69,0x7a,0x65,0x66,0x29,0x2c,0xe0,0xe6,0xd2,0xf4, + 0xca,0x86,0x50,0x8b,0xa1,0x84,0x81,0x22,0x06,0x8b,0xb1,0x04,0x4a,0x1b,0x28,0x91, + 0xd2,0x29,0x93,0xe2,0x06,0x54,0xc2,0xd2,0xe4,0x5c,0xc4,0xea,0xcc,0xcc,0xca,0xe4, + 0xf8,0x84,0xa5,0xc9,0xb9,0x88,0xd5,0x99,0x99,0x95,0xc9,0x7d,0xcd,0xa5,0xe9,0x95, + 0x11,0x09,0x4b,0x93,0x73,0x91,0x2b,0x0b,0x23,0x23,0x15,0x96,0x26,0xe7,0x32,0x47, + 0x27,0x57,0x37,0x46,0xf7,0x45,0x97,0x07,0x57,0xf6,0x95,0xe6,0x66,0xf6,0x46,0xc4, + 0x8c,0xed,0x2d,0x8c,0x8e,0x06,0x8f,0x86,0x43,0x9b,0x1d,0x1c,0x05,0xba,0xb6,0x21, + 0xd4,0x22,0x2c,0xc3,0x22,0x28,0x74,0xa0,0xd4,0xc1,0x32,0x2c,0xc3,0x22,0x28,0x74, + 0xa0,0xd8,0x01,0xa3,0xb0,0x34,0x39,0x97,0x30,0xb9,0xb3,0x2f,0xba,0x3c,0xb8,0xb2, + 0xaf,0xb9,0x34,0xbd,0x32,0x5e,0x61,0x69,0x72,0x2e,0x61,0x72,0x67,0x5f,0x74,0x79, + 0x70,0x65,0x5f,0x61,0x6c,0x69,0x67,0x6e,0x5f,0x73,0x69,0x7a,0x65,0x4c,0xec,0xe6, + 0xbe,0xe0,0xc2,0xe4,0xc2,0xda,0xe6,0x38,0x7c,0xc9,0xc4,0x0c,0x21,0x83,0x85,0x50, + 0xe0,0x40,0x89,0x83,0xe5,0x50,0xc4,0x60,0x11,0x96,0x40,0x91,0x03,0x65,0x0e,0x94, + 0x3b,0x50,0xf0,0x60,0x39,0x94,0x3c,0x58,0x12,0x25,0x52,0xf4,0x40,0x99,0x94,0x3d, + 0x18,0xa2,0x28,0x65,0xa0,0xa4,0x81,0xc2,0x06,0xca,0x1b,0x28,0x7c,0x30,0xc4,0x48, + 0x00,0x05,0x0c,0x94,0x3e,0xe0,0xf3,0xd6,0xe6,0x96,0x06,0xf7,0x46,0x57,0xe6,0x46, + 0x07,0x32,0x86,0x16,0x26,0xc7,0x67,0x2a,0xad,0x0d,0x8e,0xad,0x0c,0x64,0x68,0x65, + 0x05,0x84,0x4a,0x28,0x28,0x68,0x88,0xa0,0x80,0xc2,0x10,0x43,0xf9,0x03,0x25,0x14, + 0x18,0x65,0x88,0xa1,0x88,0x82,0x22,0x0a,0x8c,0x32,0x22,0x62,0x07,0x76,0xb0,0x87, + 0x76,0x70,0x83,0x76,0x78,0x07,0x72,0xa8,0x07,0x76,0x28,0x07,0x37,0x30,0x07,0x76, + 0x08,0x87,0x73,0x98,0x87,0x29,0x41,0x30,0x42,0x61,0x07,0x76,0xb0,0x87,0x76,0x70, + 0x83,0x74,0x20,0x87,0x72,0x70,0x07,0x7a,0x98,0x12,0x0c,0x23,0x96,0x70,0x48,0x07, + 0x79,0x70,0x03,0x7b,0x28,0x07,0x79,0x98,0x87,0x74,0x78,0x07,0x77,0x98,0x12,0x10, + 0x23,0xa8,0x70,0x48,0x07,0x79,0x70,0x03,0x76,0x08,0x07,0x77,0x38,0x87,0x7a,0x08, + 0x87,0x73,0x28,0x87,0x5f,0xb0,0x87,0x72,0x90,0x87,0x79,0x48,0x87,0x77,0x70,0x87, + 0x29,0x81,0x31,0x62,0x0a,0x87,0x74,0x90,0x07,0x37,0x18,0x87,0x77,0x68,0x07,0x78, + 0x48,0x07,0x76,0x28,0x87,0x5f,0x78,0x07,0x78,0xa0,0x87,0x74,0x78,0x07,0x77,0x98, + 0x87,0x29,0x04,0xa2,0x30,0xce,0x08,0x25,0x1c,0xd2,0x41,0x1e,0xdc,0xc0,0x1e,0xca, + 0x41,0x1e,0xe8,0xa1,0x1c,0xf0,0x61,0x4a,0xe0,0x07,0x00,0x00,0x00,0x79,0x18,0x00, + 0x00,0x6d,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d, + 0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c, + 0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d, + 0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d, + 0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79, + 0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc, + 0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50, + 0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30, + 0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03, + 0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07, + 0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76, + 0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98, + 0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8, + 0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21, + 0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43, + 0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f, + 0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70, + 0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0, + 0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40, + 0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41, + 0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e, + 0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07, + 0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f, + 0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d, + 0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38, + 0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88, + 0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08, + 0x07,0x7a,0x28,0x07,0x72,0x00,0x00,0x00,0x00,0x71,0x20,0x00,0x00,0x02,0x00,0x00, + 0x00,0x06,0x50,0x30,0x00,0xd2,0xd0,0x00,0x00,0x61,0x20,0x00,0x00,0x3e,0x00,0x00, + 0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0xe4,0xc6,0x22, + 0x86,0x61,0x18,0xc6,0x22,0x04,0x41,0x10,0xc6,0x22,0x82,0x20,0x08,0x88,0x95,0x40, + 0x19,0x14,0x01,0xb9,0x11,0x00,0x1a,0x33,0x00,0x24,0x66,0x00,0x28,0xcc,0x00,0x00, + 0x00,0xe3,0x15,0x0b,0x84,0x61,0x10,0x05,0x65,0x90,0x21,0x1a,0x0c,0x13,0x02,0xf9, + 0x8c,0x57,0x3c,0x14,0xc7,0x2d,0x14,0x94,0x41,0x86,0xea,0x70,0x4c,0x08,0xe4,0x63, + 0x41,0x01,0x9f,0xf1,0x0a,0x2a,0x0b,0x83,0x30,0x70,0x28,0x28,0x83,0x0c,0x1a,0x43, + 0x99,0x10,0xc8,0xc7,0x8a,0x00,0x3e,0xe3,0x15,0x99,0x67,0x06,0x66,0x40,0x51,0x50, + 0x06,0x19,0xbe,0x48,0x33,0x21,0x90,0x8f,0x15,0x01,0x7c,0xc6,0x2b,0xbc,0x31,0x60, + 0x83,0x35,0x18,0x03,0x0a,0xca,0x20,0xc3,0x18,0x60,0x99,0x09,0x81,0x7c,0xc6,0x2b, + 0xc4,0xe0,0x0c,0xe0,0xe0,0x0d,0x3c,0x0a,0xca,0x20,0xc3,0x19,0x70,0x61,0x60,0x42, + 0x20,0x1f,0x0b,0x0a,0xf8,0x8c,0x57,0x9c,0x01,0x1b,0xd4,0x01,0x1d,0x88,0x01,0x05, + 0xc5,0x86,0x00,0x3e,0xb3,0x0d,0x61,0x10,0x00,0xb3,0x0d,0x41,0x1b,0x04,0xb3,0x0d, + 0xc1,0x23,0xcc,0x36,0x04,0x6e,0x30,0x64,0x10,0x10,0x03,0x00,0x00,0x09,0x00,0x00, + 0x00,0x5b,0x86,0x20,0x18,0x85,0x2d,0x43,0x11,0x8c,0xc2,0x96,0x41,0x09,0x46,0x61, + 0xcb,0xf0,0x04,0xa3,0xb0,0x65,0xa0,0x82,0x51,0xd8,0x32,0x60,0xc1,0x28,0x6c,0x19, + 0xba,0x60,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _sfons_fs_bytecode_metal_ios[2877] = { + 0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3d,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd5,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x60,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0x54,0xcb,0x23,0xc1,0x79,0xec,0x33, + 0x7a,0x1d,0x12,0x8c,0x7c,0xe5,0x11,0xa5,0xdb,0xc5,0x1c,0x52,0xd5,0x69,0x04,0xe6, + 0x72,0x3d,0xdb,0xf1,0xf1,0xf4,0x44,0xa4,0xb5,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x04,0x00,0x00, + 0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17, + 0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x4c,0x0a,0x00,0x00,0xff,0xff,0xff, + 0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0x90,0x02,0x00,0x00,0x0b,0x82,0x20, + 0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04, + 0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b, + 0x62,0x80,0x14,0x45,0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18, + 0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21, + 0x72,0x24,0x07,0xc8,0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00, + 0x00,0x51,0x18,0x00,0x00,0x92,0x00,0x00,0x00,0x1b,0xfa,0x25,0xf8,0xff,0xff,0xff, + 0xff,0x01,0x60,0x00,0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07, + 0x7a,0x60,0x87,0x7c,0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72, + 0x68,0x03,0x72,0x48,0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90, + 0x07,0x7a,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc, + 0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81, + 0x1d,0xca,0xa1,0x0d,0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d, + 0xd8,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87, + 0x79,0x98,0x87,0x36,0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36, + 0x30,0x07,0x78,0x68,0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c, + 0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0, + 0xe1,0x1d,0xd2,0xc1,0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90, + 0x87,0x70,0x68,0x87,0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07, + 0x79,0x68,0x83,0x72,0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36, + 0x60,0x87,0x72,0x08,0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30, + 0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8, + 0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01, + 0x1e,0xda,0x80,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60, + 0x87,0x79,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1, + 0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c, + 0xc8,0xa1,0x0d,0xf4,0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda, + 0xa0,0x1d,0xc2,0x81,0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77, + 0x78,0x87,0x36,0xa0,0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68, + 0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6, + 0x81,0x1e,0xc2,0x61,0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61, + 0x1c,0xe8,0xe1,0x1d,0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e, + 0xda,0x60,0x1e,0xd2,0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa0,0x87,0x70,0x90,0x87, + 0x73,0x28,0x07,0x7a,0x68,0x03,0x73,0x28,0x87,0x70,0xa0,0x87,0x7a,0x90,0x87,0x72, + 0x98,0x07,0xa0,0x0d,0xcc,0x01,0x1e,0xe2,0xc0,0x0e,0x00,0xa2,0x1e,0xdc,0x61,0x1e, + 0xc2,0xc1,0x1c,0xca,0xa1,0x0d,0xcc,0x01,0x1e,0xda,0xa0,0x1d,0xc2,0x81,0x1e,0xd0, + 0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x88,0x7a,0x98,0x87,0x72,0x68,0x83,0x79, + 0x78,0x07,0x73,0xa0,0x87,0x36,0x30,0x07,0x76,0x78,0x87,0x70,0xa0,0x07,0xc0,0x1c, + 0xc2,0x81,0x1d,0xe6,0xa1,0x1c,0x80,0x0d,0x86,0x30,0x00,0x0b,0x50,0x6d,0x30,0x06, + 0x02,0x58,0x80,0x6a,0x03,0x42,0xfc,0xff,0xff,0xff,0xff,0x00,0x30,0x80,0x04,0x54, + 0x1b,0x8c,0x22,0x00,0x16,0xa0,0xda,0x60,0x18,0x02,0xb0,0x00,0x15,0x00,0x00,0x00, + 0x00,0x49,0x18,0x00,0x00,0x03,0x00,0x00,0x00,0x13,0x86,0x40,0x18,0x26,0x0c,0x44, + 0x61,0x00,0x00,0x00,0x00,0x89,0x20,0x00,0x00,0x20,0x00,0x00,0x00,0x32,0x22,0x48, + 0x09,0x20,0x64,0x85,0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90, + 0x14,0x12,0x4c,0x8a,0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x48,0x33,0x00,0xc3,0x08,0x04, + 0x70,0x90,0x34,0x45,0x94,0x30,0xf9,0x0c,0x80,0x34,0xf4,0xef,0x50,0x13,0x0a,0xc2, + 0x51,0xd2,0x14,0x51,0xc2,0xe4,0xff,0x13,0x71,0x4d,0x54,0x44,0xfc,0xf6,0xf0,0x4f, + 0x63,0x04,0xc0,0x20,0xc2,0x10,0x5c,0x24,0x4d,0x11,0x25,0x4c,0xfe,0x2f,0x01,0xcc, + 0xb3,0x10,0xd1,0x3f,0x8d,0x11,0x00,0x83,0x08,0x85,0x50,0x0a,0x11,0x02,0x31,0x74, + 0x86,0x11,0x04,0x60,0x8e,0x20,0x98,0x23,0x00,0x83,0x61,0x04,0x61,0x29,0x48,0x20, + 0x26,0x29,0xa6,0x00,0xb5,0x81,0x80,0x61,0x04,0x62,0x19,0x01,0x00,0x13,0xa8,0x70, + 0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68, + 0x83,0x74,0x78,0x87,0x79,0xc8,0x03,0x37,0x80,0x03,0x37,0x80,0x83,0x0d,0xef,0x51, + 0x0e,0x6d,0x00,0x0f,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07, + 0x74,0xd0,0x06,0xe9,0x10,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e,0x78, + 0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9,0x10,0x07,0x76,0xa0,0x07,0x71,0x60, + 0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xe9,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07, + 0x7a,0x30,0x07,0x72,0xd0,0x06,0xe9,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a, + 0x60,0x07,0x74,0xd0,0x06,0xe6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30, + 0x07,0x72,0xd0,0x06,0xe6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07, + 0x74,0xd0,0x06,0xe6,0x80,0x07,0x70,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71, + 0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a,0x10, + 0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x74,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07, + 0x72,0xd0,0x06,0xf6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72, + 0xd0,0x06,0xf6,0x40,0x07,0x78,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0, + 0x06,0xf6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06, + 0xf6,0x90,0x07,0x76,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78, + 0xd0,0x06,0xf6,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10, + 0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x90,0x07,0x72,0xa0,0x07,0x72,0x50,0x07, + 0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x75,0x60,0x07,0x7a, + 0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x75,0x10, + 0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xd0,0x06, + 0xf6,0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x7a, + 0x10,0x07,0x70,0x20,0x07,0x74,0xd0,0x06,0xe6,0x80,0x07,0x70,0xa0,0x07,0x71,0x20, + 0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xee,0x80,0x07,0x7a,0x10,0x07, + 0x76,0xa0,0x07,0x73,0x20,0x07,0x43,0x18,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x21,0x8c,0x03,0x04,0x80,0x00,0x00,0x00,0x00,0x00,0x40,0x16,0x08,0x00,0x00, + 0x00,0x07,0x00,0x00,0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26, + 0x47,0xc6,0x04,0x43,0x5a,0x23,0x00,0x25,0x50,0x08,0x05,0x51,0x04,0x65,0x00,0x00, + 0x00,0x79,0x18,0x00,0x00,0xbb,0x00,0x00,0x00,0x1a,0x03,0x4c,0x10,0x95,0xbb,0x31, + 0xb4,0x30,0xb9,0xaf,0xb9,0x34,0xbd,0xb2,0x21,0xc6,0x32,0x3c,0xc0,0x42,0x70,0x0d, + 0x82,0xe0,0xe0,0xd8,0xca,0x40,0x98,0x98,0xac,0x9a,0x40,0xec,0xca,0xe4,0xe6,0xd2, + 0xde,0xdc,0x40,0x72,0x60,0x64,0x5c,0x62,0x40,0x50,0xda,0xca,0xe8,0xc2,0xd8,0xcc, + 0xca,0x5a,0x72,0x60,0x64,0x5c,0x62,0x5c,0x6a,0x60,0x52,0x86,0x08,0x8f,0x30,0xc4, + 0x58,0x86,0xa5,0x58,0x04,0x16,0x4d,0x65,0x74,0x61,0x6c,0x43,0x90,0xa7,0x58,0x86, + 0x45,0x58,0x04,0x6e,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e, + 0x64,0x65,0x6e,0x6f,0x72,0x6d,0x73,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x43, + 0x84,0xe7,0x20,0x17,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x62, + 0x16,0x36,0x47,0xf7,0xd5,0x16,0x46,0x87,0xf6,0x55,0xe6,0x16,0x26,0xc6,0x56,0x36, + 0x44,0x78,0x12,0x92,0x41,0x58,0x9a,0x9c,0xcb,0xd8,0x5b,0x1b,0x5c,0x1a,0x5b,0x99, + 0x8b,0x99,0x5c,0x58,0x5b,0x99,0x58,0x9d,0x99,0x59,0x99,0xdc,0x97,0x59,0x19,0xdd, + 0x18,0xda,0x57,0x99,0x5b,0x98,0x18,0x5b,0xd9,0x10,0xe1,0x59,0x18,0x06,0x61,0x69, + 0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65, + 0x5f,0x64,0x6f,0x75,0x62,0x6c,0x65,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x43, + 0x84,0xa7,0x61,0x14,0x96,0x26,0xe7,0x22,0x57,0xe6,0x46,0x56,0x26,0xf7,0x45,0x17, + 0x26,0x77,0x56,0x46,0xc7,0x28,0x2c,0x4d,0xce,0x25,0x4c,0xee,0xec,0x8b,0x2e,0x0f, + 0xae,0xec,0xcb,0x2d,0xac,0xad,0x8c,0x86,0x19,0xdb,0x5b,0x18,0x1d,0x0d,0x99,0xb0, + 0x34,0x39,0x97,0x30,0xb9,0xb3,0x2f,0xb7,0xb0,0xb6,0x32,0x2a,0x66,0x72,0x61,0x67, + 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x43,0x98,0xe7,0x59,0x84,0x07,0x7a,0xa2,0x47,0x7a, + 0xa6,0x21,0xc2,0x43,0x51,0x0a,0x4b,0x93,0x73,0x31,0x93,0x0b,0x3b,0x6b,0x2b,0x73, + 0xa3,0xfb,0x4a,0x73,0x83,0xab,0xa3,0xe3,0x52,0x37,0x57,0x26,0x87,0xc2,0xf6,0x36, + 0xe6,0x06,0x93,0x42,0x25,0x2c,0x4d,0xce,0x65,0xac,0xcc,0x8d,0xae,0x4c,0x8e,0x4f, + 0x58,0x9a,0x9c,0x0b,0x5c,0x99,0xdc,0x1c,0x5c,0xd9,0x18,0x5d,0x9a,0x5d,0x19,0x85, + 0x3a,0xbb,0x21,0xd2,0x22,0x3c,0xd6,0x73,0x3d,0xd8,0x93,0x3d,0xd0,0x13,0x3d,0xd2, + 0xa3,0x71,0xa9,0x9b,0x2b,0x93,0x43,0x61,0x7b,0x1b,0x73,0x8b,0x49,0x61,0x31,0xf6, + 0xc6,0xf6,0x26,0x37,0x44,0x5a,0x86,0xc7,0x7a,0xb8,0x07,0x7b,0xb2,0x07,0x7a,0xa2, + 0x47,0x7a,0x3a,0x2e,0x61,0x69,0x72,0x2e,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x94, + 0xc2,0xd2,0xe4,0x5c,0xd8,0xde,0xc6,0xc2,0xe8,0xd2,0xde,0xdc,0xbe,0xd2,0xdc,0xc8, + 0xca,0xf0,0xa8,0x84,0xa5,0xc9,0xb9,0xcc,0x85,0xb5,0xc1,0xb1,0x95,0x11,0xa3,0x2b, + 0xc3,0xa3,0xab,0x93,0x2b,0x93,0x21,0xe3,0x31,0x63,0x7b,0x0b,0xa3,0x63,0x01,0x99, + 0x0b,0x6b,0x83,0x63,0x2b,0xf3,0xe1,0x40,0x57,0x86,0x37,0x84,0x5a,0x8c,0xe7,0x7b, + 0xc0,0x60,0x11,0x96,0xe1,0x09,0x83,0x07,0x7a,0xc4,0xe0,0x91,0x9e,0x31,0xe0,0x12, + 0x96,0x26,0xe7,0x32,0x17,0xd6,0x06,0xc7,0x56,0x26,0xc7,0x63,0x2e,0xac,0x0d,0x8e, + 0xad,0x4c,0x8e,0x08,0x5d,0x19,0xde,0x54,0x1b,0x1c,0x9b,0xdc,0x10,0x69,0x39,0x9e, + 0x32,0x78,0xc0,0x60,0x11,0x96,0xe1,0x81,0x1e,0x33,0x78,0xa4,0xe7,0x0c,0x86,0x20, + 0xcf,0xf6,0x78,0x0f,0x19,0x3c,0x68,0x30,0xc4,0x40,0x80,0xa7,0x7a,0xd2,0x60,0x44, + 0xc4,0x0e,0xec,0x60,0x0f,0xed,0xe0,0x06,0xed,0xf0,0x0e,0xe4,0x50,0x0f,0xec,0x50, + 0x0e,0x6e,0x60,0x0e,0xec,0x10,0x0e,0xe7,0x30,0x0f,0x53,0x82,0x60,0x84,0xc2,0x0e, + 0xec,0x60,0x0f,0xed,0xe0,0x06,0xe9,0x40,0x0e,0xe5,0xe0,0x0e,0xf4,0x30,0x25,0x18, + 0x46,0x2c,0xe1,0x90,0x0e,0xf2,0xe0,0x06,0xf6,0x50,0x0e,0xf2,0x30,0x0f,0xe9,0xf0, + 0x0e,0xee,0x30,0x25,0x20,0x46,0x50,0xe1,0x90,0x0e,0xf2,0xe0,0x06,0xec,0x10,0x0e, + 0xee,0x70,0x0e,0xf5,0x10,0x0e,0xe7,0x50,0x0e,0xbf,0x60,0x0f,0xe5,0x20,0x0f,0xf3, + 0x90,0x0e,0xef,0xe0,0x0e,0x53,0x02,0x63,0xc4,0x14,0x0e,0xe9,0x20,0x0f,0x6e,0x30, + 0x0e,0xef,0xd0,0x0e,0xf0,0x90,0x0e,0xec,0x50,0x0e,0xbf,0xf0,0x0e,0xf0,0x40,0x0f, + 0xe9,0xf0,0x0e,0xee,0x30,0x0f,0x53,0x08,0x44,0x61,0x9c,0x11,0x4c,0x38,0xa4,0x83, + 0x3c,0xb8,0x81,0x39,0xc8,0x43,0x38,0x9c,0x43,0x3b,0x94,0x83,0x3b,0xd0,0xc3,0x94, + 0x40,0x0d,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0x6d,0x00,0x00,0x00,0x33,0x08,0x80, + 0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80, + 0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80, + 0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88, + 0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78, + 0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03, + 0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f, + 0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c, + 0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39, + 0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b, + 0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60, + 0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87, + 0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e, + 0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c, + 0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6, + 0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94, + 0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03, + 0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07, + 0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f, + 0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33, + 0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc, + 0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c, + 0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78, + 0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca, + 0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21, + 0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43, + 0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87, + 0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x00,0x00,0x00, + 0x00,0x71,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x16,0xb0,0x01,0x48,0xe4,0x4b,0x00, + 0xf3,0x2c,0xc4,0x3f,0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0x7e,0x85,0x17,0xb7,0x6d, + 0x00,0x05,0x03,0x20,0x0d,0x0d,0x00,0x00,0x00,0x61,0x20,0x00,0x00,0x16,0x00,0x00, + 0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x04,0xc7,0x22, + 0x80,0x40,0x20,0x88,0x8d,0x00,0x8c,0x25,0x00,0x01,0xa9,0x11,0x80,0x1a,0x20,0x31, + 0x03,0x40,0x61,0x0e,0xc2,0xb2,0x2c,0x6a,0x06,0x80,0xc0,0x0c,0xc0,0x08,0xc0,0x18, + 0x01,0x08,0x82,0x20,0xfe,0x01,0x00,0x00,0x00,0x83,0x0c,0x0f,0x91,0x8c,0x18,0x28, + 0x42,0x70,0x39,0x4d,0x80,0x2c,0xc9,0x30,0xc8,0x70,0x04,0x8d,0x05,0x91,0x7c,0x66, + 0x1b,0x94,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const char _sfons_vs_source_metal_sim[866] = { + 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, + 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, + 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, + 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, + 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x76, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x74,0x6d,0x3b,0x0a,0x7d,0x3b, + 0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f, + 0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, + 0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29, + 0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63, + 0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, + 0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, + 0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70, + 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x69,0x6e,0x74,0x53,0x69,0x7a, + 0x65,0x20,0x5b,0x5b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x73,0x69,0x7a,0x65,0x5d,0x5d, + 0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69, + 0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74, + 0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72, + 0x64,0x30,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31, + 0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75, + 0x74,0x65,0x28,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x70,0x73,0x69,0x7a,0x65,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69, + 0x62,0x75,0x74,0x65,0x28,0x33,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x23, + 0x6c,0x69,0x6e,0x65,0x20,0x31,0x37,0x20,0x22,0x73,0x66,0x6f,0x6e,0x73,0x2e,0x67, + 0x6c,0x73,0x6c,0x22,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e, + 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e, + 0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f, + 0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x76, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x32,0x31,0x20,0x5b,0x5b, + 0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74, + 0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x37,0x20, + 0x22,0x73,0x66,0x6f,0x6e,0x73,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20, + 0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, + 0x20,0x3d,0x20,0x5f,0x32,0x31,0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x69,0x6e,0x2e, + 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20, + 0x31,0x38,0x20,0x22,0x73,0x66,0x6f,0x6e,0x73,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a, + 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x69,0x6e,0x74, + 0x53,0x69,0x7a,0x65,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x73,0x69,0x7a,0x65,0x3b, + 0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x39,0x20,0x22,0x73,0x66,0x6f,0x6e,0x73, + 0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x75, + 0x76,0x20,0x3d,0x20,0x5f,0x32,0x31,0x2e,0x74,0x6d,0x20,0x2a,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x34,0x28,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30, + 0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x23,0x6c,0x69, + 0x6e,0x65,0x20,0x32,0x30,0x20,0x22,0x73,0x66,0x6f,0x6e,0x73,0x2e,0x67,0x6c,0x73, + 0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x6f,0x6c,0x6f,0x72, + 0x20,0x3d,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a, + 0x0a,0x00, +}; +static const char _sfons_fs_source_metal_sim[518] = { + 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, + 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, + 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, + 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, + 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d, + 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, + 0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, + 0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29, + 0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63, + 0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, + 0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20, + 0x31,0x31,0x20,0x22,0x73,0x66,0x6f,0x6e,0x73,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a, + 0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f, + 0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69, + 0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d, + 0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f, + 0x61,0x74,0x3e,0x20,0x74,0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72, + 0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20, + 0x74,0x65,0x78,0x53,0x6d,0x70,0x6c,0x72,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c, + 0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b, + 0x7d,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x31,0x20,0x22,0x73,0x66,0x6f, + 0x6e,0x73,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74, + 0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x34,0x28,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x31, + 0x2e,0x30,0x2c,0x20,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x74, + 0x65,0x78,0x53,0x6d,0x70,0x6c,0x72,0x2c,0x20,0x69,0x6e,0x2e,0x75,0x76,0x2e,0x78, + 0x79,0x29,0x2e,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74, + 0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_D3D11) +static const uint8_t _sfons_vs_bytecode_hlsl4[1032] = { + 0x44,0x58,0x42,0x43,0x09,0x96,0xbb,0xbb,0xfc,0x44,0x44,0xa8,0xa4,0x1c,0x9e,0x45, + 0x50,0x97,0xf1,0xde,0x01,0x00,0x00,0x00,0x08,0x04,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x14,0x01,0x00,0x00,0x90,0x01,0x00,0x00,0x00,0x02,0x00,0x00, + 0x8c,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0xd8,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff, + 0x10,0x81,0x00,0x00,0xaf,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, + 0x73,0x00,0xab,0xab,0x3c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x98,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xa8,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x32,0x31,0x5f, + 0x6d,0x76,0x70,0x00,0x02,0x00,0x03,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x5f,0x32,0x31,0x5f,0x74,0x6d,0x00,0x4d,0x69,0x63,0x72,0x6f, + 0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68, + 0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30, + 0x2e,0x31,0x00,0xab,0x49,0x53,0x47,0x4e,0x74,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x68,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x03,0x03,0x00,0x00,0x68,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x68,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab, + 0x4f,0x53,0x47,0x4e,0x68,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00, + 0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44, + 0x00,0x53,0x56,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0xab,0xab,0xab, + 0x53,0x48,0x44,0x52,0x84,0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x61,0x00,0x00,0x00, + 0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03, + 0x32,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00, + 0x02,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x67,0x00,0x00,0x04, + 0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02, + 0x01,0x00,0x00,0x00,0x38,0x00,0x00,0x08,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x56,0x15,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x06,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, + 0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x36,0x00,0x00,0x05, + 0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x02,0x00,0x00,0x00, + 0x38,0x00,0x00,0x08,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x56,0x15,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x10,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00, + 0x00,0x00,0x00,0x00,0xa6,0x1a,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00, + 0x32,0x00,0x00,0x0a,0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0xf6,0x1f,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54, + 0x74,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x06,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 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,0x00, +}; +static const uint8_t _sfons_fs_bytecode_hlsl4[640] = { + 0x44,0x58,0x42,0x43,0x5e,0xbc,0x77,0xd9,0xc9,0xdf,0x7d,0x8e,0x0c,0x24,0x18,0x66, + 0x36,0xd3,0xf4,0x78,0x01,0x00,0x00,0x00,0x80,0x02,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0xd4,0x00,0x00,0x00,0x20,0x01,0x00,0x00,0x54,0x01,0x00,0x00, + 0x04,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff, + 0x10,0x81,0x00,0x00,0x6d,0x00,0x00,0x00,0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x69,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x5f,0x74,0x65,0x78,0x5f,0x73,0x61,0x6d, + 0x70,0x6c,0x65,0x72,0x00,0x74,0x65,0x78,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f, + 0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64, + 0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x31, + 0x00,0xab,0xab,0xab,0x49,0x53,0x47,0x4e,0x44,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x03,0x00,0x00,0x38,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab, + 0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x61,0x72,0x67,0x65, + 0x74,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0xa8,0x00,0x00,0x00,0x40,0x00,0x00,0x00, + 0x2a,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00, + 0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00, + 0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03, + 0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00, + 0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x45,0x00,0x00,0x09, + 0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00, + 0x96,0x73,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00, + 0x36,0x00,0x00,0x05,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00, + 0x00,0x00,0x80,0x3f,0x38,0x00,0x00,0x07,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x06,0x0c,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00, + 0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00, +}; +#elif defined(SOKOL_WGPU) +/* + WebGPU shader blobs: + + Vertex shader source: + + #version 450 + + layout(set = 0, binding = 0, std140) uniform vs_params + { + mat4 mvp; + mat4 tm; + } _21; + + layout(location = 0) in vec4 position; + layout(location = 3) in float psize; + layout(location = 0) out vec4 uv; + layout(location = 1) in vec2 texcoord0; + layout(location = 1) out vec4 color; + layout(location = 2) in vec4 color0; + + void main() + { + gl_Position = _21.mvp * position; + gl_PointSize = psize; + uv = _21.tm * vec4(texcoord0, 0.0, 1.0); + color = color0; + } + + Fragment shader source: + + #version 450 + + layout(location = 0, set = 2, binding = 0) uniform sampler2D tex; + + layout(location = 0) out vec4 frag_color; + layout(location = 0) in vec4 uv; + layout(location = 1) in vec4 color; + + void main() + { + frag_color = vec4(1.0, 1.0, 1.0, texture(tex, uv.xy).x) * color; + } +*/ +static const uint8_t _sfons_vs_bytecode_wgpu[1968] = { + 0x03,0x02,0x23,0x07,0x00,0x00,0x01,0x00,0x08,0x00,0x08,0x00,0x35,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x11,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x0b,0x00,0x06,0x00, + 0x02,0x00,0x00,0x00,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30, + 0x00,0x00,0x00,0x00,0x0e,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, + 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x21,0x00,0x00,0x00, + 0x25,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x33,0x00,0x00,0x00, + 0x07,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x05,0x00, + 0x07,0x00,0x00,0x00,0x73,0x66,0x6f,0x6e,0x73,0x2e,0x67,0x6c,0x73,0x6c,0x00,0x00, + 0x03,0x00,0x37,0x00,0x02,0x00,0x00,0x00,0xc2,0x01,0x00,0x00,0x01,0x00,0x00,0x00, + 0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65, + 0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x76,0x75,0x6c,0x6b, + 0x61,0x6e,0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c, + 0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e, + 0x74,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c,0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f, + 0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64, + 0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x2d,0x65,0x6e,0x76,0x20,0x76,0x75,0x6c,0x6b, + 0x61,0x6e,0x31,0x2e,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c, + 0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x74,0x61,0x72,0x67,0x65, + 0x74,0x2d,0x65,0x6e,0x76,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c,0x0a,0x2f,0x2f,0x20, + 0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65, + 0x64,0x20,0x65,0x6e,0x74,0x72,0x79,0x2d,0x70,0x6f,0x69,0x6e,0x74,0x20,0x6d,0x61, + 0x69,0x6e,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x0a,0x00,0x05,0x00,0x04,0x00, + 0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x00,0x05,0x00,0x06,0x00, + 0x0d,0x00,0x00,0x00,0x67,0x6c,0x5f,0x50,0x65,0x72,0x56,0x65,0x72,0x74,0x65,0x78, + 0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x06,0x00,0x07,0x00, + 0x0d,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x67,0x6c,0x5f,0x50,0x6f,0x69,0x6e,0x74, + 0x53,0x69,0x7a,0x65,0x00,0x00,0x00,0x00,0x06,0x00,0x07,0x00,0x0d,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x67,0x6c,0x5f,0x43,0x6c,0x69,0x70,0x44,0x69,0x73,0x74,0x61, + 0x6e,0x63,0x65,0x00,0x06,0x00,0x07,0x00,0x0d,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x67,0x6c,0x5f,0x43,0x75,0x6c,0x6c,0x44,0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x00, + 0x05,0x00,0x03,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x05,0x00, + 0x13,0x00,0x00,0x00,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x00,0x00,0x00, + 0x06,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6d,0x76,0x70,0x00, + 0x06,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x74,0x6d,0x00,0x00, + 0x05,0x00,0x03,0x00,0x15,0x00,0x00,0x00,0x5f,0x32,0x31,0x00,0x05,0x00,0x05,0x00, + 0x1a,0x00,0x00,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x00,0x00,0x00, + 0x05,0x00,0x04,0x00,0x21,0x00,0x00,0x00,0x70,0x73,0x69,0x7a,0x65,0x00,0x00,0x00, + 0x05,0x00,0x03,0x00,0x25,0x00,0x00,0x00,0x75,0x76,0x00,0x00,0x05,0x00,0x05,0x00, + 0x2a,0x00,0x00,0x00,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x00,0x00, + 0x05,0x00,0x04,0x00,0x32,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x00, + 0x05,0x00,0x04,0x00,0x33,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x00, + 0x48,0x00,0x05,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x0d,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0b,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x0d,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x48,0x00,0x05,0x00, + 0x0d,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x47,0x00,0x03,0x00,0x0d,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x48,0x00,0x04,0x00, + 0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x48,0x00,0x05,0x00, + 0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x48,0x00,0x05,0x00,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x48,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x13,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x23,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x13,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x47,0x00,0x03,0x00, + 0x13,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x15,0x00,0x00,0x00, + 0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x15,0x00,0x00,0x00, + 0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x1a,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x21,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x25,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x2a,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x32,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x33,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x13,0x00,0x02,0x00,0x03,0x00,0x00,0x00, + 0x21,0x00,0x03,0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x16,0x00,0x03,0x00, + 0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x17,0x00,0x04,0x00,0x09,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x15,0x00,0x04,0x00,0x0a,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x0a,0x00,0x00,0x00, + 0x0b,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x04,0x00,0x0c,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x0d,0x00,0x00,0x00, + 0x09,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0d,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x15,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x2b,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x18,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x1e,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x12,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x14,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x13,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x14,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x16,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x19,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x09,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x19,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x1d,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x09,0x00,0x00,0x00, + 0x2b,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x20,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x23,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x17,0x00,0x04,0x00,0x28,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x29,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x28,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x29,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x2b,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x2b,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x00,0x00,0x80,0x3f, + 0x3b,0x00,0x04,0x00,0x1d,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x19,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x36,0x00,0x05,0x00,0x03,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0xf8,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x08,0x00,0x04,0x00, + 0x07,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x05,0x00, + 0x16,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x11,0x00,0x00,0x00, + 0x3d,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x17,0x00,0x00,0x00, + 0x3d,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1a,0x00,0x00,0x00, + 0x91,0x00,0x05,0x00,0x09,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x18,0x00,0x00,0x00, + 0x1b,0x00,0x00,0x00,0x41,0x00,0x05,0x00,0x1d,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, + 0x0f,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x3e,0x00,0x03,0x00,0x1e,0x00,0x00,0x00, + 0x1c,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x13,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x22,0x00,0x00,0x00, + 0x21,0x00,0x00,0x00,0x41,0x00,0x05,0x00,0x23,0x00,0x00,0x00,0x24,0x00,0x00,0x00, + 0x0f,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x3e,0x00,0x03,0x00,0x24,0x00,0x00,0x00, + 0x22,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x14,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x41,0x00,0x05,0x00,0x16,0x00,0x00,0x00,0x26,0x00,0x00,0x00, + 0x15,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x3d,0x00,0x04,0x00,0x12,0x00,0x00,0x00, + 0x27,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x3d,0x00,0x04,0x00,0x28,0x00,0x00,0x00, + 0x2b,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x51,0x00,0x05,0x00,0x08,0x00,0x00,0x00, + 0x2e,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x51,0x00,0x05,0x00, + 0x08,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x50,0x00,0x07,0x00,0x09,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x2e,0x00,0x00,0x00, + 0x2f,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x91,0x00,0x05,0x00, + 0x09,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x30,0x00,0x00,0x00, + 0x3e,0x00,0x03,0x00,0x25,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x08,0x00,0x04,0x00, + 0x07,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00, + 0x09,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x3e,0x00,0x03,0x00, + 0x32,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0xfd,0x00,0x01,0x00,0x38,0x00,0x01,0x00, +}; +static const uint8_t fs_bytecode_wgpu[1000] = { + 0x03,0x02,0x23,0x07,0x00,0x00,0x01,0x00,0x08,0x00,0x08,0x00,0x1f,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x11,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x0b,0x00,0x06,0x00, + 0x02,0x00,0x00,0x00,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30, + 0x00,0x00,0x00,0x00,0x0e,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x00,0x08,0x00,0x04,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, + 0x00,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x1c,0x00,0x00,0x00, + 0x10,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x03,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x05,0x00,0x07,0x00,0x00,0x00, + 0x73,0x66,0x6f,0x6e,0x73,0x2e,0x67,0x6c,0x73,0x6c,0x00,0x00,0x03,0x00,0x37,0x00, + 0x02,0x00,0x00,0x00,0xc2,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x2f,0x2f,0x20,0x4f, + 0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64, + 0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x76,0x75,0x6c,0x6b,0x61,0x6e,0x31,0x30, + 0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f, + 0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x6f,0x70, + 0x65,0x6e,0x67,0x6c,0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64, + 0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x74,0x61,0x72, + 0x67,0x65,0x74,0x2d,0x65,0x6e,0x76,0x20,0x76,0x75,0x6c,0x6b,0x61,0x6e,0x31,0x2e, + 0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f, + 0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x2d,0x65,0x6e, + 0x76,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f, + 0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x65,0x6e, + 0x74,0x72,0x79,0x2d,0x70,0x6f,0x69,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x0a,0x23, + 0x6c,0x69,0x6e,0x65,0x20,0x31,0x0a,0x00,0x05,0x00,0x04,0x00,0x05,0x00,0x00,0x00, + 0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x00,0x05,0x00,0x05,0x00,0x0b,0x00,0x00,0x00, + 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x05,0x00,0x03,0x00, + 0x10,0x00,0x00,0x00,0x74,0x65,0x78,0x00,0x05,0x00,0x03,0x00,0x13,0x00,0x00,0x00, + 0x75,0x76,0x00,0x00,0x05,0x00,0x04,0x00,0x1c,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f, + 0x72,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x0b,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x22,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x21,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x1c,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x13,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x21,0x00,0x03,0x00, + 0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x16,0x00,0x03,0x00,0x08,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x17,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x0a,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x09,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x0a,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x0c,0x00,0x00,0x00, + 0x00,0x00,0x80,0x3f,0x19,0x00,0x09,0x00,0x0d,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1b,0x00,0x03,0x00,0x0e,0x00,0x00,0x00, + 0x0d,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0e,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x0f,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x09,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x13,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x17,0x00,0x04,0x00,0x14,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x1c,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x36,0x00,0x05,0x00,0x03,0x00,0x00,0x00,0x05,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xf8,0x00,0x02,0x00,0x06,0x00,0x00,0x00, + 0x08,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3d,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x3d,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x13,0x00,0x00,0x00, + 0x4f,0x00,0x07,0x00,0x14,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x15,0x00,0x00,0x00, + 0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x57,0x00,0x05,0x00, + 0x09,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x16,0x00,0x00,0x00, + 0x51,0x00,0x05,0x00,0x08,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x17,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x50,0x00,0x07,0x00,0x09,0x00,0x00,0x00,0x1b,0x00,0x00,0x00, + 0x0c,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x1a,0x00,0x00,0x00, + 0x3d,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0x1c,0x00,0x00,0x00, + 0x85,0x00,0x05,0x00,0x09,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1b,0x00,0x00,0x00, + 0x1d,0x00,0x00,0x00,0x3e,0x00,0x03,0x00,0x0b,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, + 0xfd,0x00,0x01,0x00,0x38,0x00,0x01,0x00, +}; +#elif defined(SOKOL_DUMMY_BACKEND) +static const char* _sfons_vs_source_dummy = ""; +static const char* _sfons_fs_source_dummy = ""; +#else +#error "Please define one of SOKOL_GLCORE33, SOKOL_GLES3, SOKOL_D3D11, SOKOL_METAL, SOKOL_WGPU or SOKOL_DUMMY_BACKEND!" +#endif + +typedef struct _sfons_t { + sfons_desc_t desc; + sg_shader shd; + sgl_pipeline pip; + sg_image img; + int cur_width, cur_height; + bool img_dirty; +} _sfons_t; + +static void _sfons_clear(void* ptr, size_t size) { + SOKOL_ASSERT(ptr && (size > 0)); + memset(ptr, 0, size); +} + +static void* _sfons_malloc(const sfons_allocator_t* allocator, size_t size) { + SOKOL_ASSERT(allocator && (size > 0)); + void* ptr; + if (allocator->alloc) { + ptr = allocator->alloc(size, allocator->user_data); + } + else { + ptr = malloc(size); + } + SOKOL_ASSERT(ptr); + return ptr; +} + +static void* _sfons_malloc_clear(const sfons_allocator_t* allocator, size_t size) { + void* ptr = _sfons_malloc(allocator, size); + _sfons_clear(ptr, size); + return ptr; +} + +static void _sfons_free(const sfons_allocator_t* allocator, void* ptr) { + SOKOL_ASSERT(allocator); + if (allocator->free) { + allocator->free(ptr, allocator->user_data); + } + else { + free(ptr); + } +} + +static int _sfons_render_create(void* user_ptr, int width, int height) { + SOKOL_ASSERT(user_ptr && (width > 8) && (height > 8)); + _sfons_t* sfons = (_sfons_t*) user_ptr; + + /* sokol-gl compatible shader which treats RED channel as alpha */ + if (sfons->shd.id == SG_INVALID_ID) { + sg_shader_desc shd_desc; + _sfons_clear(&shd_desc, sizeof(shd_desc)); + shd_desc.attrs[0].name = "position"; + shd_desc.attrs[1].name = "texcoord0"; + shd_desc.attrs[2].name = "color0"; + shd_desc.attrs[3].name = "psize"; + shd_desc.attrs[0].sem_name = "TEXCOORD"; + shd_desc.attrs[0].sem_index = 0; + shd_desc.attrs[1].sem_name = "TEXCOORD"; + shd_desc.attrs[1].sem_index = 1; + shd_desc.attrs[2].sem_name = "TEXCOORD"; + shd_desc.attrs[2].sem_index = 2; + shd_desc.attrs[3].sem_name = "TEXCOORD"; + shd_desc.attrs[3].sem_index = 3; + sg_shader_uniform_block_desc* ub = &shd_desc.vs.uniform_blocks[0]; + ub->size = 128; + ub->uniforms[0].name = "vs_params"; + ub->uniforms[0].type = SG_UNIFORMTYPE_FLOAT4; + ub->uniforms[0].array_count = 8; + shd_desc.fs.images[0].name = "tex"; + shd_desc.fs.images[0].image_type = SG_IMAGETYPE_2D; + shd_desc.fs.images[0].sampler_type = SG_SAMPLERTYPE_FLOAT; + shd_desc.label = "sokol-fontstash-shader"; + #if defined(SOKOL_GLCORE33) + shd_desc.vs.source = _sfons_vs_source_glsl330; + shd_desc.fs.source = _sfons_fs_source_glsl330; + #elif defined(SOKOL_GLES3) + shd_desc.vs.source = _sfons_vs_source_glsl300es; + shd_desc.fs.source = _sfons_fs_source_glsl300es; + #elif defined(SOKOL_METAL) + shd_desc.vs.entry = "main0"; + shd_desc.fs.entry = "main0"; + switch (sg_query_backend()) { + case SG_BACKEND_METAL_MACOS: + shd_desc.vs.bytecode = SG_RANGE(_sfons_vs_bytecode_metal_macos); + shd_desc.fs.bytecode = SG_RANGE(_sfons_fs_bytecode_metal_macos); + break; + case SG_BACKEND_METAL_IOS: + shd_desc.vs.bytecode = SG_RANGE(_sfons_vs_bytecode_metal_ios); + shd_desc.fs.bytecode = SG_RANGE(_sfons_fs_bytecode_metal_ios); + break; + default: + shd_desc.vs.source = _sfons_vs_source_metal_sim; + shd_desc.fs.source = _sfons_fs_source_metal_sim; + break; + } + #elif defined(SOKOL_D3D11) + shd_desc.vs.bytecode = SG_RANGE(_sfons_vs_bytecode_hlsl4); + shd_desc.fs.bytecode = SG_RANGE(_sfons_fs_bytecode_hlsl4); + #elif defined(SOKOL_WGPU) + shd_desc.vs.byte_code = _sfons_vs_bytecode_wgpu; + shd_desc.vs.byte_code_size = sizeof(_sfons_vs_bytecode_wgpu); + shd_desc.fs.byte_code = _sfons_fs_bytecode_wgpu; + shd_desc.fs.byte_code_size = sizeof(_sfons_fs_bytecode_wgpu); + #else + shd_desc.vs.source = _sfons_vs_source_dummy; + shd_desc.fs.source = _sfons_fs_source_dummy; + #endif + shd_desc.label = "sfons-shader"; + sfons->shd = sg_make_shader(&shd_desc); + } + + /* sokol-gl pipeline object */ + if (sfons->pip.id == SG_INVALID_ID) { + sg_pipeline_desc pip_desc; + _sfons_clear(&pip_desc, sizeof(pip_desc)); + pip_desc.shader = sfons->shd; + pip_desc.colors[0].blend.enabled = true; + pip_desc.colors[0].blend.src_factor_rgb = SG_BLENDFACTOR_SRC_ALPHA; + pip_desc.colors[0].blend.dst_factor_rgb = SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA; + sfons->pip = sgl_make_pipeline(&pip_desc); + } + + /* create or re-create font atlas texture */ + if (sfons->img.id != SG_INVALID_ID) { + sg_destroy_image(sfons->img); + sfons->img.id = SG_INVALID_ID; + } + sfons->cur_width = width; + sfons->cur_height = height; + + SOKOL_ASSERT(sfons->img.id == SG_INVALID_ID); + sg_image_desc img_desc; + _sfons_clear(&img_desc, sizeof(img_desc)); + img_desc.width = sfons->cur_width; + img_desc.height = sfons->cur_height; + img_desc.min_filter = SG_FILTER_LINEAR; + img_desc.mag_filter = SG_FILTER_LINEAR; + img_desc.usage = SG_USAGE_DYNAMIC; + img_desc.pixel_format = SG_PIXELFORMAT_R8; + sfons->img = sg_make_image(&img_desc); + return 1; +} + +static int _sfons_render_resize(void* user_ptr, int width, int height) { + return _sfons_render_create(user_ptr, width, height); +} + +static void _sfons_render_update(void* user_ptr, int* rect, const unsigned char* data) { + SOKOL_ASSERT(user_ptr && rect && data); + _SOKOL_UNUSED(rect); + _SOKOL_UNUSED(data); + _sfons_t* sfons = (_sfons_t*) user_ptr; + sfons->img_dirty = true; +} + +static void _sfons_render_draw(void* user_ptr, const float* verts, const float* tcoords, const unsigned int* colors, int nverts) { + SOKOL_ASSERT(user_ptr && verts && tcoords && colors && (nverts > 0)); + _sfons_t* sfons = (_sfons_t*) user_ptr; + sgl_enable_texture(); + sgl_texture(sfons->img); + sgl_push_pipeline(); + sgl_load_pipeline(sfons->pip); + sgl_begin_triangles(); + for (int i = 0; i < nverts; i++) { + sgl_v2f_t2f_c1i(verts[2*i+0], verts[2*i+1], tcoords[2*i+0], tcoords[2*i+1], colors[i]); + } + sgl_end(); + sgl_pop_pipeline(); + sgl_disable_texture(); +} + +static void _sfons_render_delete(void* user_ptr) { + SOKOL_ASSERT(user_ptr); + _sfons_t* sfons = (_sfons_t*) user_ptr; + if (sfons->img.id != SG_INVALID_ID) { + sg_destroy_image(sfons->img); + sfons->img.id = SG_INVALID_ID; + } + if (sfons->pip.id != SG_INVALID_ID) { + sgl_destroy_pipeline(sfons->pip); + sfons->pip.id = SG_INVALID_ID; + } + if (sfons->shd.id != SG_INVALID_ID) { + sg_destroy_shader(sfons->shd); + sfons->shd.id = SG_INVALID_ID; + } +} + +#define _sfons_def(val, def) (((val) == 0) ? (def) : (val)) + +static sfons_desc_t _sfons_desc_defaults(const sfons_desc_t* desc) { + SOKOL_ASSERT(desc); + sfons_desc_t res = *desc; + res.width = _sfons_def(res.width, 512); + res.height = _sfons_def(res.height, 512); + return res; +} + +SOKOL_API_IMPL FONScontext* sfons_create(const sfons_desc_t* desc) { + SOKOL_ASSERT(desc); + SOKOL_ASSERT((desc->allocator.alloc && desc->allocator.free) || (!desc->allocator.alloc && !desc->allocator.free)); + _sfons_t* sfons = (_sfons_t*) _sfons_malloc_clear(&desc->allocator, sizeof(_sfons_t)); + sfons->desc = _sfons_desc_defaults(desc); + FONSparams params; + _sfons_clear(¶ms, sizeof(params)); + params.width = sfons->desc.width; + params.height = sfons->desc.height; + params.flags = FONS_ZERO_TOPLEFT; + params.renderCreate = _sfons_render_create; + params.renderResize = _sfons_render_resize; + params.renderUpdate = _sfons_render_update; + params.renderDraw = _sfons_render_draw; + params.renderDelete = _sfons_render_delete; + params.userPtr = sfons; + return fonsCreateInternal(¶ms); +} + +SOKOL_API_IMPL void sfons_destroy(FONScontext* ctx) { + SOKOL_ASSERT(ctx); + _sfons_t* sfons = (_sfons_t*) ctx->params.userPtr; + fonsDeleteInternal(ctx); + const sfons_allocator_t allocator = sfons->desc.allocator; + _sfons_free(&allocator, sfons); +} + +SOKOL_API_IMPL void sfons_flush(FONScontext* ctx) { + SOKOL_ASSERT(ctx && ctx->params.userPtr); + _sfons_t* sfons = (_sfons_t*) ctx->params.userPtr; + if (sfons->img_dirty) { + sfons->img_dirty = false; + sg_image_data data; + _sfons_clear(&data, sizeof(data)); + data.subimage[0][0].ptr = ctx->texData; + data.subimage[0][0].size = (size_t) (sfons->cur_width * sfons->cur_height); + sg_update_image(sfons->img, &data); + } +} + +SOKOL_API_IMPL uint32_t sfons_rgba(uint8_t r, uint8_t g, uint8_t b, uint8_t a) { + return ((uint32_t)r) | ((uint32_t)g<<8) | ((uint32_t)b<<16) | ((uint32_t)a<<24); +} + +#endif /* SOKOL_FONTSTASH_IMPL */ diff --git a/source/engine/thirdparty/sokol/sokol_gfx.h b/source/engine/thirdparty/sokol/sokol_gfx.h new file mode 100644 index 0000000..f9daaab --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_gfx.h @@ -0,0 +1,16535 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_GFX_IMPL) +#define SOKOL_GFX_IMPL +#endif +#ifndef SOKOL_GFX_INCLUDED +/* + sokol_gfx.h -- simple 3D API wrapper + + Project URL: https://github.com/floooh/sokol + + Example code: https://github.com/floooh/sokol-samples + + Do this: + #define SOKOL_IMPL or + #define SOKOL_GFX_IMPL + before you include this file in *one* C or C++ file to create the + implementation. + + In the same place define one of the following to select the rendering + backend: + #define SOKOL_GLCORE33 + #define SOKOL_GLES3 + #define SOKOL_D3D11 + #define SOKOL_METAL + #define SOKOL_WGPU + #define SOKOL_DUMMY_BACKEND + + I.e. for the GL 3.3 Core Profile it should look like this: + + #include ... + #include ... + #define SOKOL_IMPL + #define SOKOL_GLCORE33 + #include "sokol_gfx.h" + + The dummy backend replaces the platform-specific backend code with empty + stub functions. This is useful for writing tests that need to run on the + command line. + + Optionally provide the following defines with your own implementations: + + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_UNREACHABLE() - a guard macro for unreachable code (default: assert(false)) + SOKOL_GFX_API_DECL - public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_GFX_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + SOKOL_TRACE_HOOKS - enable trace hook callbacks (search below for TRACE HOOKS) + SOKOL_EXTERNAL_GL_LOADER - indicates that you're using your own GL loader, in this case + sokol_gfx.h will not include any platform GL headers and disable + the integrated Win32 GL loader + + If sokol_gfx.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_GFX_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + If you want to compile without deprecated structs and functions, + define: + + SOKOL_NO_DEPRECATED + + Optionally define the following to force debug checks and validations + even in release mode: + + SOKOL_DEBUG - by default this is defined if _DEBUG is defined + + sokol_gfx DOES NOT: + =================== + - create a window or the 3D-API context/device, you must do this + before sokol_gfx is initialized, and pass any required information + (like 3D device pointers) to the sokol_gfx initialization call + + - present the rendered frame, how this is done exactly usually depends + on how the window and 3D-API context/device was created + + - provide a unified shader language, instead 3D-API-specific shader + source-code or shader-bytecode must be provided (for the "official" + offline shader cross-compiler, see here: + https://github.com/floooh/sokol-tools/blob/master/docs/sokol-shdc.md) + + + STEP BY STEP + ============ + --- to initialize sokol_gfx, after creating a window and a 3D-API + context/device, call: + + sg_setup(const sg_desc*) + + Depending on the selected 3D backend, sokol-gfx requires some + information, like a device pointer framebuffer pixel formats + and so on. If you are using sokol_app.h for the window system + glue, you can use a helper function provided in the sokol_glue.h + header: + + #include "sokol_gfx.h" + #include "sokol_app.h" + #include "sokol_glue.h" + //... + sg_setup(&(sg_desc){ + .context = sapp_sgcontext(), + }); + + To get any logging output for errors and from the validation layer, you + need to provide a logging callback. Easiest way is through sokol_log.h: + + #include "sokol_log.h" + //... + sg_setup(&(sg_desc){ + //... + .logger.func = slog_func, + }); + + --- create resource objects (at least buffers, shaders and pipelines, + and optionally images and passes): + + sg_buffer sg_make_buffer(const sg_buffer_desc*) + sg_image sg_make_image(const sg_image_desc*) + sg_shader sg_make_shader(const sg_shader_desc*) + sg_pipeline sg_make_pipeline(const sg_pipeline_desc*) + sg_pass sg_make_pass(const sg_pass_desc*) + + --- start rendering to the default frame buffer with: + + sg_begin_default_pass(const sg_pass_action* action, int width, int height) + + ...or alternatively with: + + sg_begin_default_passf(const sg_pass_action* action, float width, float height) + + ...which takes the framebuffer width and height as float values. + + --- or start rendering to an offscreen framebuffer with: + + sg_begin_pass(sg_pass pass, const sg_pass_action* action) + + --- set the pipeline state for the next draw call with: + + sg_apply_pipeline(sg_pipeline pip) + + --- fill an sg_bindings struct with the resource bindings for the next + draw call (1..N vertex buffers, 0 or 1 index buffer, 0..N image objects + to use as textures each on the vertex-shader- and fragment-shader-stage + and then call + + sg_apply_bindings(const sg_bindings* bindings) + + to update the resource bindings + + --- optionally update shader uniform data with: + + sg_apply_uniforms(sg_shader_stage stage, int ub_index, const sg_range* data) + + Read the section 'UNIFORM DATA LAYOUT' to learn about the expected memory layout + of the uniform data passed into sg_apply_uniforms(). + + --- kick off a draw call with: + + sg_draw(int base_element, int num_elements, int num_instances) + + The sg_draw() function unifies all the different ways to render primitives + in a single call (indexed vs non-indexed rendering, and instanced vs non-instanced + rendering). In case of indexed rendering, base_element and num_element specify + indices in the currently bound index buffer. In case of non-indexed rendering + base_element and num_elements specify vertices in the currently bound + vertex-buffer(s). To perform instanced rendering, the rendering pipeline + must be setup for instancing (see sg_pipeline_desc below), a separate vertex buffer + containing per-instance data must be bound, and the num_instances parameter + must be > 1. + + --- finish the current rendering pass with: + + sg_end_pass() + + --- when done with the current frame, call + + sg_commit() + + --- at the end of your program, shutdown sokol_gfx with: + + sg_shutdown() + + --- if you need to destroy resources before sg_shutdown(), call: + + sg_destroy_buffer(sg_buffer buf) + sg_destroy_image(sg_image img) + sg_destroy_shader(sg_shader shd) + sg_destroy_pipeline(sg_pipeline pip) + sg_destroy_pass(sg_pass pass) + + --- to set a new viewport rectangle, call + + sg_apply_viewport(int x, int y, int width, int height, bool origin_top_left) + + ...or if you want to specify the viewport rectangle with float values: + + sg_apply_viewportf(float x, float y, float width, float height, bool origin_top_left) + + --- to set a new scissor rect, call: + + sg_apply_scissor_rect(int x, int y, int width, int height, bool origin_top_left) + + ...or with float values: + + sg_apply_scissor_rectf(float x, float y, float width, float height, bool origin_top_left) + + Both sg_apply_viewport() and sg_apply_scissor_rect() must be called + inside a rendering pass + + Note that sg_begin_default_pass() and sg_begin_pass() will reset both the + viewport and scissor rectangles to cover the entire framebuffer. + + --- to update (overwrite) the content of buffer and image resources, call: + + sg_update_buffer(sg_buffer buf, const sg_range* data) + sg_update_image(sg_image img, const sg_image_data* data) + + Buffers and images to be updated must have been created with + SG_USAGE_DYNAMIC or SG_USAGE_STREAM + + Only one update per frame is allowed for buffer and image resources when + using the sg_update_*() functions. The rationale is to have a simple + countermeasure to avoid the CPU scribbling over data the GPU is currently + using, or the CPU having to wait for the GPU + + Buffer and image updates can be partial, as long as a rendering + operation only references the valid (updated) data in the + buffer or image. + + --- to append a chunk of data to a buffer resource, call: + + int sg_append_buffer(sg_buffer buf, const sg_range* data) + + The difference to sg_update_buffer() is that sg_append_buffer() + can be called multiple times per frame to append new data to the + buffer piece by piece, optionally interleaved with draw calls referencing + the previously written data. + + sg_append_buffer() returns a byte offset to the start of the + written data, this offset can be assigned to + sg_bindings.vertex_buffer_offsets[n] or + sg_bindings.index_buffer_offset + + Code example: + + for (...) { + const void* data = ...; + const int num_bytes = ...; + int offset = sg_append_buffer(buf, &(sg_range) { .ptr=data, .size=num_bytes }); + bindings.vertex_buffer_offsets[0] = offset; + sg_apply_pipeline(pip); + sg_apply_bindings(&bindings); + sg_apply_uniforms(...); + sg_draw(...); + } + + A buffer to be used with sg_append_buffer() must have been created + with SG_USAGE_DYNAMIC or SG_USAGE_STREAM. + + If the application appends more data to the buffer then fits into + the buffer, the buffer will go into the "overflow" state for the + rest of the frame. + + Any draw calls attempting to render an overflown buffer will be + silently dropped (in debug mode this will also result in a + validation error). + + You can also check manually if a buffer is in overflow-state by calling + + bool sg_query_buffer_overflow(sg_buffer buf) + + You can manually check to see if an overflow would occur before adding + any data to a buffer by calling + + bool sg_query_buffer_will_overflow(sg_buffer buf, size_t size) + + NOTE: Due to restrictions in underlying 3D-APIs, appended chunks of + data will be 4-byte aligned in the destination buffer. This means + that there will be gaps in index buffers containing 16-bit indices + when the number of indices in a call to sg_append_buffer() is + odd. This isn't a problem when each call to sg_append_buffer() + is associated with one draw call, but will be problematic when + a single indexed draw call spans several appended chunks of indices. + + --- to check at runtime for optional features, limits and pixelformat support, + call: + + sg_features sg_query_features() + sg_limits sg_query_limits() + sg_pixelformat_info sg_query_pixelformat(sg_pixel_format fmt) + + --- if you need to call into the underlying 3D-API directly, you must call: + + sg_reset_state_cache() + + ...before calling sokol_gfx functions again + + --- you can inspect the original sg_desc structure handed to sg_setup() + by calling sg_query_desc(). This will return an sg_desc struct with + the default values patched in instead of any zero-initialized values + + --- you can get a desc struct matching the creation attributes of a + specific resource object via: + + sg_buffer_desc sg_query_buffer_desc(sg_buffer buf) + sg_image_desc sg_query_image_desc(sg_image img) + sg_shader_desc sq_query_shader_desc(sg_shader shd) + sg_pipeline_desc sg_query_pipeline_desc(sg_pipeline pip) + sg_pass_desc sg_query_pass_desc(sg_pass pass) + + ...but NOTE that the returned desc structs may be incomplete, only + creation attributes that are kept around internally after resource + creation will be filled in, and in some cases (like shaders) that's + very little. Any missing attributes will be set to zero. The returned + desc structs might still be useful as partial blueprint for creating + similar resources if filled up with the missing attributes. + + Calling the query-desc functions on an invalid resource will return + completely zeroed structs (it makes sense to check the resource state + with sg_query_*_state() first) + + --- you can query the default resource creation parameters through the functions + + sg_buffer_desc sg_query_buffer_defaults(const sg_buffer_desc* desc) + sg_image_desc sg_query_image_defaults(const sg_image_desc* desc) + sg_shader_desc sg_query_shader_defaults(const sg_shader_desc* desc) + sg_pipeline_desc sg_query_pipeline_defaults(const sg_pipeline_desc* desc) + sg_pass_desc sg_query_pass_defaults(const sg_pass_desc* desc) + + These functions take a pointer to a desc structure which may contain + zero-initialized items for default values. These zero-init values + will be replaced with their concrete values in the returned desc + struct. + + --- you can inspect various internal resource runtime values via: + + sg_buffer_info sg_query_buffer_info(sg_buffer buf) + sg_image_info sg_query_image_info(sg_image img) + sg_shader_info sg_query_shader_info(sg_shader shd) + sg_pipeline_info sg_query_pipeline_info(sg_pipeline pip) + sg_pass_info sg_query_pass_info(sg_pass pass) + + ...please note that the returned info-structs are tied quite closely + to sokol_gfx.h internals, and may change more often than other + public API functions and structs. + + --- you can ask at runtime what backend sokol_gfx.h has been compiled for: + + sg_backend sg_query_backend(void) + + + ON INITIALIZATION: + ================== + When calling sg_setup(), a pointer to an sg_desc struct must be provided + which contains initialization options. These options provide two types + of information to sokol-gfx: + + (1) upper bounds and limits needed to allocate various internal + data structures: + - the max number of resources of each type that can + be alive at the same time, this is used for allocating + internal pools + - the max overall size of uniform data that can be + updated per frame, including a worst-case alignment + per uniform update (this worst-case alignment is 256 bytes) + - the max size of all dynamic resource updates (sg_update_buffer, + sg_append_buffer and sg_update_image) per frame + - the max number of entries in the texture sampler cache + (how many unique texture sampler can exist at the same time) + Not all of those limit values are used by all backends, but it is + good practice to provide them none-the-less. + + (2) 3D-API "context information" (sometimes also called "bindings"): + sokol_gfx.h doesn't create or initialize 3D API objects which are + closely related to the presentation layer (this includes the "rendering + device", the swapchain, and any objects which depend on the + swapchain). These API objects (or callback functions to obtain + them, if those objects might change between frames), must + be provided in a nested sg_context_desc struct inside the + sg_desc struct. If sokol_gfx.h is used together with + sokol_app.h, have a look at the sokol_glue.h header which provides + a convenience function to get a sg_context_desc struct filled out + with context information provided by sokol_app.h + + See the documentation block of the sg_desc struct below for more information. + + + UNIFORM DATA LAYOUT: + ==================== + NOTE: if you use the sokol-shdc shader compiler tool, you don't need to worry + about the following details. + + The data that's passed into the sg_apply_uniforms() function must adhere to + specific layout rules so that the GPU shader finds the uniform block + items at the right offset. + + For the D3D11 and Metal backends, sokol-gfx only cares about the size of uniform + blocks, but not about the internal layout. The data will just be copied into + a uniform/constant buffer in a single operation and it's up you to arrange the + CPU-side layout so that it matches the GPU side layout. This also means that with + the D3D11 and Metal backends you are not limited to a 'cross-platform' subset + of uniform variable types. + + If you ever only use one of the D3D11, Metal *or* WebGPU backend, you can stop reading here. + + For the GL backends, the internal layout of uniform blocks matters though, + and you are limited to a small number of uniform variable types. This is + because sokol-gfx must be able to locate the uniform block members in order + to upload them to the GPU with glUniformXXX() calls. + + To describe the uniform block layout to sokol-gfx, the following information + must be passed to the sg_make_shader() call in the sg_shader_desc struct: + + - a hint about the used packing rule (either SG_UNIFORMLAYOUT_NATIVE or + SG_UNIFORMLAYOUT_STD140) + - a list of the uniform block members types in the correct order they + appear on the CPU side + + For example if the GLSL shader has the following uniform declarations: + + uniform mat4 mvp; + uniform vec2 offset0; + uniform vec2 offset1; + uniform vec2 offset2; + + ...and on the CPU side, there's a similar C struct: + + typedef struct { + float mvp[16]; + float offset0[2]; + float offset1[2]; + float offset2[2]; + } params_t; + + ...the uniform block description in the sg_shader_desc must look like this: + + sg_shader_desc desc = { + .vs.uniform_blocks[0] = { + .size = sizeof(params_t), + .layout = SG_UNIFORMLAYOUT_NATIVE, // this is the default and can be omitted + .uniforms = { + // order must be the same as in 'params_t': + [0] = { .name = "mvp", .type = SG_UNIFORMTYPE_MAT4 }, + [1] = { .name = "offset0", .type = SG_UNIFORMTYPE_VEC2 }, + [2] = { .name = "offset1", .type = SG_UNIFORMTYPE_VEC2 }, + [3] = { .name = "offset2", .type = SG_UNIFORMTYPE_VEC2 }, + } + } + }; + + With this information sokol-gfx can now compute the correct offsets of the data items + within the uniform block struct. + + The SG_UNIFORMLAYOUT_NATIVE packing rule works fine if only the GL backends are used, + but for proper D3D11/Metal/GL a subset of the std140 layout must be used which is + described in the next section: + + + CROSS-BACKEND COMMON UNIFORM DATA LAYOUT + ======================================== + For cross-platform / cross-3D-backend code it is important that the same uniform block + layout on the CPU side can be used for all sokol-gfx backends. To achieve this, + a common subset of the std140 layout must be used: + + - The uniform block layout hint in sg_shader_desc must be explicitly set to + SG_UNIFORMLAYOUT_STD140. + - Only the following GLSL uniform types can be used (with their associated sokol-gfx enums): + - float => SG_UNIFORMTYPE_FLOAT + - vec2 => SG_UNIFORMTYPE_FLOAT2 + - vec3 => SG_UNIFORMTYPE_FLOAT3 + - vec4 => SG_UNIFORMTYPE_FLOAT4 + - int => SG_UNIFORMTYPE_INT + - ivec2 => SG_UNIFORMTYPE_INT2 + - ivec3 => SG_UNIFORMTYPE_INT3 + - ivec4 => SG_UNIFORMTYPE_INT4 + - mat4 => SG_UNIFORMTYPE_MAT4 + - Alignment for those types must be as follows (in bytes): + - float => 4 + - vec2 => 8 + - vec3 => 16 + - vec4 => 16 + - int => 4 + - ivec2 => 8 + - ivec3 => 16 + - ivec4 => 16 + - mat4 => 16 + - Arrays are only allowed for the following types: vec4, int4, mat4. + + Note that the HLSL cbuffer layout rules are slightly different from the + std140 layout rules, this means that the cbuffer declarations in HLSL code + must be tweaked so that the layout is compatible with std140. + + The by far easiest way to tacke the common uniform block layout problem is + to use the sokol-shdc shader cross-compiler tool! + + + BACKEND-SPECIFIC TOPICS: + ======================== + --- The GL backends need to know about the internal structure of uniform + blocks, and the texture sampler-name and -type. The uniform layout details + are described in the UNIFORM DATA LAYOUT section above. + + // uniform block structure and texture image definition in sg_shader_desc: + sg_shader_desc desc = { + // uniform block description (size and internal structure) + .vs.uniform_blocks[0] = { + ... + }, + // one texture on the fragment-shader-stage (name is optional) + .fs.images[0] = { .name="tex", .type=SG_IMAGETYPE_ARRAY } + ... + }; + + --- the Metal and D3D11 backends only need to know the size of uniform blocks, + not their internal member structure, and they only need to know + the type of a texture sampler, not its name: + + sg_shader_desc desc = { + .vs.uniform_blocks[0].size = sizeof(params_t), + .fs.images[0].type = SG_IMAGETYPE_ARRAY, + ... + }; + + --- when creating a shader object, vertex attribute names may be provided + for the GL backends: + + sg_shader_desc desc = { + .attrs = { + [0] = { .name="position" }, + [1] = { .name="color1" } + } + }; + + The vertex attribute names provided when creating a shader will be + used later in sg_create_pipeline() for matching the vertex layout + to vertex shader inputs. + + --- on D3D11 you need to provide a semantic name and semantic index in the + shader description struct instead (see the D3D11 documentation on + D3D11_INPUT_ELEMENT_DESC for details): + + sg_shader_desc desc = { + .attrs = { + [0] = { .sem_name="POSITION", .sem_index=0 } + [1] = { .sem_name="COLOR", .sem_index=1 } + } + }; + + The provided semantic information will be used later in sg_create_pipeline() + to match the vertex layout to vertex shader inputs. + + --- on D3D11, and when passing HLSL source code (instead of byte code) to shader + creation, you can optionally define the shader model targets on the vertex + stage: + + sg_shader_Desc desc = { + .vs = { + ... + .d3d11_target = "vs_5_0" + }, + .fs = { + ... + .d3d11_target = "ps_5_0" + } + }; + + The default targets are "ps_4_0" and "fs_4_0". Note that those target names + are only used when compiling shaders from source. They are ignored when + creating a shader from bytecode. + + --- on Metal, GL 3.3 or GLES3/WebGL2, you don't need to provide an attribute + name or semantic name, since vertex attributes can be bound by their slot index + (this is mandatory in Metal, and optional in GL): + + sg_pipeline_desc desc = { + .layout = { + .attrs = { + [0] = { .format=SG_VERTEXFORMAT_FLOAT3 }, + [1] = { .format=SG_VERTEXFORMAT_FLOAT4 } + } + } + }; + + + WORKING WITH CONTEXTS + ===================== + sokol-gfx allows to switch between different rendering contexts and + associate resource objects with contexts. This is useful to + create GL applications that render into multiple windows. + + A rendering context keeps track of all resources created while + the context is active. When the context is destroyed, all resources + "belonging to the context" are destroyed as well. + + A default context will be created and activated implicitly in + sg_setup(), and destroyed in sg_shutdown(). So for a typical application + which *doesn't* use multiple contexts, nothing changes, and calling + the context functions isn't necessary. + + Three functions have been added to work with contexts: + + --- sg_context sg_setup_context(): + This must be called once after a GL context has been created and + made active. + + --- void sg_activate_context(sg_context ctx) + This must be called after making a different GL context active. + Apart from 3D-API-specific actions, the call to sg_activate_context() + will internally call sg_reset_state_cache(). + + --- void sg_discard_context(sg_context ctx) + This must be called right before a GL context is destroyed and + will destroy all resources associated with the context (that + have been created while the context was active) The GL context must be + active at the time sg_discard_context(sg_context ctx) is called. + + Also note that resources (buffers, images, shaders and pipelines) must + only be used or destroyed while the same GL context is active that + was also active while the resource was created (an exception is + resource sharing on GL, such resources can be used while + another context is active, but must still be destroyed under + the same context that was active during creation). + + For more information, check out the multiwindow-glfw sample: + + https://github.com/floooh/sokol-samples/blob/master/glfw/multiwindow-glfw.c + + + TRACE HOOKS: + ============ + sokol_gfx.h optionally allows to install "trace hook" callbacks for + each public API functions. When a public API function is called, and + a trace hook callback has been installed for this function, the + callback will be invoked with the parameters and result of the function. + This is useful for things like debugging- and profiling-tools, or + keeping track of resource creation and destruction. + + To use the trace hook feature: + + --- Define SOKOL_TRACE_HOOKS before including the implementation. + + --- Setup an sg_trace_hooks structure with your callback function + pointers (keep all function pointers you're not interested + in zero-initialized), optionally set the user_data member + in the sg_trace_hooks struct. + + --- Install the trace hooks by calling sg_install_trace_hooks(), + the return value of this function is another sg_trace_hooks + struct which contains the previously set of trace hooks. + You should keep this struct around, and call those previous + functions pointers from your own trace callbacks for proper + chaining. + + As an example of how trace hooks are used, have a look at the + imgui/sokol_gfx_imgui.h header which implements a realtime + debugging UI for sokol_gfx.h on top of Dear ImGui. + + + A NOTE ON PORTABLE PACKED VERTEX FORMATS: + ========================================= + There are two things to consider when using packed + vertex formats like UBYTE4, SHORT2, etc which need to work + across all backends: + + - D3D11 can only convert *normalized* vertex formats to + floating point during vertex fetch, normalized formats + have a trailing 'N', and are "normalized" to a range + -1.0..+1.0 (for the signed formats) or 0.0..1.0 (for the + unsigned formats): + + - SG_VERTEXFORMAT_BYTE4N + - SG_VERTEXFORMAT_UBYTE4N + - SG_VERTEXFORMAT_SHORT2N + - SG_VERTEXFORMAT_USHORT2N + - SG_VERTEXFORMAT_SHORT4N + - SG_VERTEXFORMAT_USHORT4N + + D3D11 will not convert *non-normalized* vertex formats to floating point + vertex shader inputs, those can only be uses with the *ivecn* vertex shader + input types when D3D11 is used as backend (GL and Metal can use both formats) + + - SG_VERTEXFORMAT_BYTE4, + - SG_VERTEXFORMAT_UBYTE4 + - SG_VERTEXFORMAT_SHORT2 + - SG_VERTEXFORMAT_SHORT4 + + For a vertex input layout which works on all platforms, only use the following + vertex formats, and if needed "expand" the normalized vertex shader + inputs in the vertex shader by multiplying with 127.0, 255.0, 32767.0 or + 65535.0: + + - SG_VERTEXFORMAT_FLOAT, + - SG_VERTEXFORMAT_FLOAT2, + - SG_VERTEXFORMAT_FLOAT3, + - SG_VERTEXFORMAT_FLOAT4, + - SG_VERTEXFORMAT_BYTE4N, + - SG_VERTEXFORMAT_UBYTE4N, + - SG_VERTEXFORMAT_SHORT2N, + - SG_VERTEXFORMAT_USHORT2N + - SG_VERTEXFORMAT_SHORT4N, + - SG_VERTEXFORMAT_USHORT4N + - SG_VERTEXFORMAT_UINT10_N2 + - SG_VERTEXFORMAT_HALF2 + - SG_VERTEXFORMAT_HALF4 + + MEMORY ALLOCATION OVERRIDE + ========================== + You can override the memory allocation functions at initialization time + like this: + + void* my_alloc(size_t size, void* user_data) { + return malloc(size); + } + + void my_free(void* ptr, void* user_data) { + free(ptr); + } + + ... + sg_setup(&(sg_desc){ + // ... + .allocator = { + .alloc = my_alloc, + .free = my_free, + .user_data = ..., + } + }); + ... + + If no overrides are provided, malloc and free will be used. + + This only affects memory allocation calls done by sokol_gfx.h + itself though, not any allocations in OS libraries. + + ERROR REPORTING AND LOGGING + =========================== + To get any logging information at all you need to provide a logging callback in the setup call + the easiest way is to use sokol_log.h: + + #include "sokol_log.h" + + sg_setup(&(sg_desc){ .logger.func = slog_func }); + + To override logging with your own callback, first write a logging function like this: + + void my_log(const char* tag, // e.g. 'sg' + uint32_t log_level, // 0=panic, 1=error, 2=warn, 3=info + uint32_t log_item_id, // SG_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_gfx.h + const char* filename_or_null, // source filename, may be nullptr in release mode + void* user_data) + { + ... + } + + ...and then setup sokol-gfx like this: + + sg_setup(&(sg_desc){ + .logger = { + .func = my_log, + .user_data = my_user_data, + } + }); + + The provided logging function must be reentrant (e.g. be callable from + different threads). + + If you don't want to provide your own custom logger it is highly recommended to use + the standard logger in sokol_log.h instead, otherwise you won't see any warnings or + errors. + + + COMMIT LISTENERS + ================ + It's possible to hook callback functions into sokol-gfx which are called from + inside sg_commit() in unspecified order. This is mainly useful for libraries + that build on top of sokol_gfx.h to be notified about the end/start of a frame. + + To add a commit listener, call: + + static void my_commit_listener(void* user_data) { + ... + } + + bool success = sg_add_commit_listener((sg_commit_listener){ + .func = my_commit_listener, + .user_data = ..., + }); + + The function returns false if the internal array of commit listeners is full, + or the same commit listener had already been added. + + If the function returns true, my_commit_listener() will be called each frame + from inside sg_commit(). + + By default, 1024 distinct commit listeners can be added, but this number + can be tweaked in the sg_setup() call: + + sg_setup(&(sg_desc){ + .max_commit_listeners = 2048, + }); + + An sg_commit_listener item is equal to another if both the function + pointer and user_data field are equal. + + To remove a commit listener: + + bool success = sg_remove_commit_listener((sg_commit_listener){ + .func = my_commit_listener, + .user_data = ..., + }); + + ...where the .func and .user_data field are equal to a previous + sg_add_commit_listener() call. The function returns true if the commit + listener item was found and removed, and false otherwise. + + + RESOURCE CREATION AND DESTRUCTION IN DETAIL + =========================================== + The 'vanilla' way to create resource objects is with the 'make functions': + + sg_buffer sg_make_buffer(const sg_buffer_desc* desc) + sg_image sg_make_image(const sg_image_desc* desc) + sg_shader sg_make_shader(const sg_shader_desc* desc) + sg_pipeline sg_make_pipeline(const sg_pipeline_desc* desc) + sg_pass sg_make_pass(const sg_pass_desc* desc) + + This will result in one of three cases: + + 1. The returned handle is invalid. This happens when there are no more + free slots in the resource pool for this resource type. An invalid + handle is associated with the INVALID resource state, for instance: + + sg_buffer buf = sg_make_buffer(...) + if (sg_query_buffer_state(buf) == SG_RESOURCESTATE_INVALID) { + // buffer pool is exhausted + } + + 2. The returned handle is valid, but creating the underlying resource + has failed for some reason. This results in a resource object in the + FAILED state. The reason *why* resource creation has failed differ + by resource type. Look for log messages with more details. A failed + resource state can be checked with: + + sg_buffer buf = sg_make_buffer(...) + if (sg_query_buffer_state(buf) == SG_RESOURCESTATE_FAILED) { + // creating the resource has failed + } + + 3. And finally, if everything goes right, the returned resource is + in resource state VALID and ready to use. This can be checked + with: + + sg_buffer buf = sg_make_buffer(...) + if (sg_query_buffer_state(buf) == SG_RESOURCESTATE_VALID) { + // creating the resource has failed + } + + When calling the 'make functions', the created resource goes through a number + of states: + + - INITIAL: the resource slot associated with the new resource is currently + free (technically, there is no resource yet, just an empty pool slot) + - ALLOC: a handle for the new resource has been allocated, this just means + a pool slot has been reserved. + - VALID or FAILED: in VALID state any 3D API backend resource objects have + been successfully created, otherwise if anything went wrong, the resource + will be in FAILED state. + + Sometimes it makes sense to first grab a handle, but initialize the + underlying resource at a later time. For instance when loading data + asynchronously from a slow data source, you may know what buffers and + textures are needed at an early stage of the loading process, but actually + loading the buffer or texture content can only be completed at a later time. + + For such situations, sokol-gfx resource objects can be created in two steps. + You can allocate a handle upfront with one of the 'alloc functions': + + sg_buffer sg_alloc_buffer(void) + sg_image sg_alloc_image(void) + sg_shader sg_alloc_shader(void) + sg_pipeline sg_alloc_pipeline(void) + sg_pass sg_alloc_pass(void) + + This will return a handle with the underlying resource object in the + ALLOC state: + + sg_image img = sg_alloc_image(); + if (sg_query_image_state(img) == SG_RESOURCESTATE_ALLOC) { + // allocating an image handle has succeeded, otherwise + // the image pool is full + } + + Such an 'incomplete' handle can be used in most sokol-gfx rendering functions + without doing any harm, sokol-gfx will simply skip any rendering operation + that involve resources which are not in VALID state. + + At a later time (for instance once the texture has completed loading + asynchronously), the resource creation can be completed by calling one of + the 'init functions', those functions take an existing resource handle and + 'desc struct': + + void sg_init_buffer(sg_buffer buf, const sg_buffer_desc* desc) + void sg_init_image(sg_image img, const sg_image_desc* desc) + void sg_init_shader(sg_shader shd, const sg_shader_desc* desc) + void sg_init_pipeline(sg_pipeline pip, const sg_pipeline_desc* desc) + void sg_init_pass(sg_pass pass, const sg_pass_desc* desc) + + The init functions expect a resource in ALLOC state, and after the function + returns, the resource will be either in VALID or FAILED state. Calling + an 'alloc function' followed by the matching 'init function' is fully + equivalent with calling the 'make function' alone. + + Destruction can also happen as a two-step process. The 'uninit functions' + will put a resource object from the VALID or FAILED state back into the + ALLOC state: + + void sg_uninit_buffer(sg_buffer buf) + void sg_uninit_image(sg_image img) + void sg_uninit_shader(sg_shader shd) + void sg_uninit_pipeline(sg_pipeline pip) + void sg_uninit_pass(sg_pass pass) + + Calling the 'uninit functions' with a resource that is not in the VALID or + FAILED state is a no-op. + + To finally free the pool slot for recycling call the 'dealloc functions': + + void sg_dealloc_buffer(sg_buffer buf) + void sg_dealloc_image(sg_image img) + void sg_dealloc_shader(sg_shader shd) + void sg_dealloc_pipeline(sg_pipeline pip) + void sg_dealloc_pass(sg_pass pass) + + Calling the 'dealloc functions' on a resource that's not in ALLOC state is + a no-op, but will generate a warning log message. + + Calling an 'uninit function' and 'dealloc function' in sequence is equivalent + with calling the associated 'destroy function': + + void sg_destroy_buffer(sg_buffer buf) + void sg_destroy_image(sg_image img) + void sg_destroy_shader(sg_shader shd) + void sg_destroy_pipeline(sg_pipeline pip) + void sg_destroy_pass(sg_pass pass) + + The 'destroy functions' can be called on resources in any state and generally + do the right thing (for instance if the resource is in ALLOC state, the destroy + function will be equivalent to the 'dealloc function' and skip the 'uninit part'). + + And finally to close the circle, the 'fail functions' can be called to manually + put a resource in ALLOC state into the FAILED state: + + sg_fail_buffer(sg_buffer buf) + sg_fail_image(sg_image img) + sg_fail_shader(sg_shader shd) + sg_fail_pipeline(sg_pipeline pip) + sg_fail_pass(sg_pass pass) + + This is recommended if anything went wrong outside of sokol-gfx during asynchronous + resource creation (for instance the file loading operation failed). In this case, + the 'fail function' should be called instead of the 'init function'. + + Calling a 'fail function' on a resource that's not in ALLOC state is a no-op, + but will generate a warning log message. + + NOTE: that two-step resource creation usually only makes sense for buffers + and images, but not for shaders, pipelines or passes. Most notably, trying + to create a pipeline object with a shader that's not in VALID state will + trigger a validation layer error, or if the validation layer is disabled, + result in a pipeline object in FAILED state. Same when trying to create + a pass object with image invalid image objects. + + LICENSE + ======= + zlib/libpng license + + Copyright (c) 2018 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_GFX_INCLUDED (1) +#include // size_t +#include +#include + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_GFX_API_DECL) +#define SOKOL_GFX_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_GFX_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_GFX_IMPL) +#define SOKOL_GFX_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_GFX_API_DECL __declspec(dllimport) +#else +#define SOKOL_GFX_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + Resource id typedefs: + + sg_buffer: vertex- and index-buffers + sg_image: textures and render targets + sg_shader: vertex- and fragment-shaders, uniform blocks + sg_pipeline: associated shader and vertex-layouts, and render states + sg_pass: a bundle of render targets and actions on them + sg_context: a 'context handle' for switching between 3D-API contexts + + Instead of pointers, resource creation functions return a 32-bit + number which uniquely identifies the resource object. + + The 32-bit resource id is split into a 16-bit pool index in the lower bits, + and a 16-bit 'unique counter' in the upper bits. The index allows fast + pool lookups, and combined with the unique-mask it allows to detect + 'dangling accesses' (trying to use an object which no longer exists, and + its pool slot has been reused for a new object) + + The resource ids are wrapped into a struct so that the compiler + can complain when the wrong resource type is used. +*/ +typedef struct sg_buffer { uint32_t id; } sg_buffer; +typedef struct sg_image { uint32_t id; } sg_image; +typedef struct sg_shader { uint32_t id; } sg_shader; +typedef struct sg_pipeline { uint32_t id; } sg_pipeline; +typedef struct sg_pass { uint32_t id; } sg_pass; +typedef struct sg_context { uint32_t id; } sg_context; + +/* + sg_range is a pointer-size-pair struct used to pass memory blobs into + sokol-gfx. When initialized from a value type (array or struct), you can + use the SG_RANGE() macro to build an sg_range struct. For functions which + take either a sg_range pointer, or a (C++) sg_range reference, use the + SG_RANGE_REF macro as a solution which compiles both in C and C++. +*/ +typedef struct sg_range { + const void* ptr; + size_t size; +} sg_range; + +// disabling this for every includer isn't great, but the warnings are also quite pointless +#if defined(_MSC_VER) +#pragma warning(disable:4221) /* /W4 only: nonstandard extension used: 'x': cannot be initialized using address of automatic variable 'y' */ +#pragma warning(disable:4204) /* VS2015: nonstandard extension used: non-constant aggregate initializer */ +#endif +#if defined(__cplusplus) +#define SG_RANGE(x) sg_range{ &x, sizeof(x) } +#define SG_RANGE_REF(x) sg_range{ &x, sizeof(x) } +#else +#define SG_RANGE(x) (sg_range){ &x, sizeof(x) } +#define SG_RANGE_REF(x) &(sg_range){ &x, sizeof(x) } +#endif + +// various compile-time constants +enum { + SG_INVALID_ID = 0, + SG_NUM_SHADER_STAGES = 2, + SG_NUM_INFLIGHT_FRAMES = 2, + SG_MAX_COLOR_ATTACHMENTS = 4, + SG_MAX_SHADERSTAGE_BUFFERS = 8, + SG_MAX_SHADERSTAGE_IMAGES = 12, + SG_MAX_SHADERSTAGE_UBS = 4, + SG_MAX_UB_MEMBERS = 16, + SG_MAX_VERTEX_ATTRIBUTES = 16, + SG_MAX_MIPMAPS = 16, + SG_MAX_TEXTUREARRAY_LAYERS = 128 +}; + +/* + sg_color + + An RGBA color value. +*/ +typedef struct sg_color { float r, g, b, a; } sg_color; + +/* + sg_backend + + The active 3D-API backend, use the function sg_query_backend() + to get the currently active backend. +*/ +typedef enum sg_backend { + SG_BACKEND_GLCORE33, + SG_BACKEND_GLES3, + SG_BACKEND_D3D11, + SG_BACKEND_METAL_IOS, + SG_BACKEND_METAL_MACOS, + SG_BACKEND_METAL_SIMULATOR, + SG_BACKEND_WGPU, + SG_BACKEND_DUMMY, +} sg_backend; + +/* + sg_pixel_format + + sokol_gfx.h basically uses the same pixel formats as WebGPU, since these + are supported on most newer GPUs. smaller subset of actually available + pixel formCall sg_query_pixelformat() to check at runtime if a pixel format + supports the desired features. + + A pixelformat name consist of three parts: + + - components (R, RG, RGB or RGBA) + - bit width per component (8, 16 or 32) + - component data type: + - unsigned normalized (no postfix) + - signed normalized (SN postfix) + - unsigned integer (UI postfix) + - signed integer (SI postfix) + - float (F postfix) + + Not all pixel formats can be used for everything, call sg_query_pixelformat() + to inspect the capabilities of a given pixelformat. The function returns + an sg_pixelformat_info struct with the following bool members: + + - sample: the pixelformat can be sampled as texture at least with + nearest filtering + - filter: the pixelformat can be samples as texture with linear + filtering + - render: the pixelformat can be used for render targets + - blend: blending is supported when using the pixelformat for + render targets + - msaa: multisample-antialiasing is supported when using the + pixelformat for render targets + - depth: the pixelformat can be used for depth-stencil attachments + + The default pixel format for texture images is SG_PIXELFORMAT_RGBA8. + + The default pixel format for render target images is platform-dependent: + - for Metal and D3D11 it is SG_PIXELFORMAT_BGRA8 + - for GL backends it is SG_PIXELFORMAT_RGBA8 + + This is mainly because of the default framebuffer which is setup outside + of sokol_gfx.h. On some backends, using BGRA for the default frame buffer + allows more efficient frame flips. For your own offscreen-render-targets, + use whatever renderable pixel format is convenient for you. +*/ +typedef enum sg_pixel_format { + _SG_PIXELFORMAT_DEFAULT, /* value 0 reserved for default-init */ + SG_PIXELFORMAT_NONE, + + SG_PIXELFORMAT_R8, + SG_PIXELFORMAT_R8SN, + SG_PIXELFORMAT_R8UI, + SG_PIXELFORMAT_R8SI, + + SG_PIXELFORMAT_R16, + SG_PIXELFORMAT_R16SN, + SG_PIXELFORMAT_R16UI, + SG_PIXELFORMAT_R16SI, + SG_PIXELFORMAT_R16F, + SG_PIXELFORMAT_RG8, + SG_PIXELFORMAT_RG8SN, + SG_PIXELFORMAT_RG8UI, + SG_PIXELFORMAT_RG8SI, + + SG_PIXELFORMAT_R32UI, + SG_PIXELFORMAT_R32SI, + SG_PIXELFORMAT_R32F, + SG_PIXELFORMAT_RG16, + SG_PIXELFORMAT_RG16SN, + SG_PIXELFORMAT_RG16UI, + SG_PIXELFORMAT_RG16SI, + SG_PIXELFORMAT_RG16F, + SG_PIXELFORMAT_RGBA8, + SG_PIXELFORMAT_SRGB8A8, + SG_PIXELFORMAT_RGBA8SN, + SG_PIXELFORMAT_RGBA8UI, + SG_PIXELFORMAT_RGBA8SI, + SG_PIXELFORMAT_BGRA8, + SG_PIXELFORMAT_RGB10A2, + SG_PIXELFORMAT_RG11B10F, + + SG_PIXELFORMAT_RG32UI, + SG_PIXELFORMAT_RG32SI, + SG_PIXELFORMAT_RG32F, + SG_PIXELFORMAT_RGBA16, + SG_PIXELFORMAT_RGBA16SN, + SG_PIXELFORMAT_RGBA16UI, + SG_PIXELFORMAT_RGBA16SI, + SG_PIXELFORMAT_RGBA16F, + + SG_PIXELFORMAT_RGBA32UI, + SG_PIXELFORMAT_RGBA32SI, + SG_PIXELFORMAT_RGBA32F, + + SG_PIXELFORMAT_DEPTH, + SG_PIXELFORMAT_DEPTH_STENCIL, + + SG_PIXELFORMAT_BC1_RGBA, + SG_PIXELFORMAT_BC2_RGBA, + SG_PIXELFORMAT_BC3_RGBA, + SG_PIXELFORMAT_BC4_R, + SG_PIXELFORMAT_BC4_RSN, + SG_PIXELFORMAT_BC5_RG, + SG_PIXELFORMAT_BC5_RGSN, + SG_PIXELFORMAT_BC6H_RGBF, + SG_PIXELFORMAT_BC6H_RGBUF, + SG_PIXELFORMAT_BC7_RGBA, + SG_PIXELFORMAT_PVRTC_RGB_2BPP, + SG_PIXELFORMAT_PVRTC_RGB_4BPP, + SG_PIXELFORMAT_PVRTC_RGBA_2BPP, + SG_PIXELFORMAT_PVRTC_RGBA_4BPP, + SG_PIXELFORMAT_ETC2_RGB8, + SG_PIXELFORMAT_ETC2_RGB8A1, + SG_PIXELFORMAT_ETC2_RGBA8, + SG_PIXELFORMAT_ETC2_RG11, + SG_PIXELFORMAT_ETC2_RG11SN, + + SG_PIXELFORMAT_RGB9E5, + + _SG_PIXELFORMAT_NUM, + _SG_PIXELFORMAT_FORCE_U32 = 0x7FFFFFFF +} sg_pixel_format; + +/* + Runtime information about a pixel format, returned + by sg_query_pixelformat(). +*/ +typedef struct sg_pixelformat_info { + bool sample; // pixel format can be sampled in shaders + bool filter; // pixel format can be sampled with filtering + bool render; // pixel format can be used as render target + bool blend; // alpha-blending is supported + bool msaa; // pixel format can be used as MSAA render target + bool depth; // pixel format is a depth format + #if defined(SOKOL_ZIG_BINDINGS) + uint32_t __pad[3]; + #endif +} sg_pixelformat_info; + +/* + Runtime information about available optional features, + returned by sg_query_features() +*/ +typedef struct sg_features { + bool origin_top_left; // framebuffer and texture origin is in top left corner + bool image_clamp_to_border; // border color and clamp-to-border UV-wrap mode is supported + bool mrt_independent_blend_state; // multiple-render-target rendering can use per-render-target blend state + bool mrt_independent_write_mask; // multiple-render-target rendering can use per-render-target color write masks + #if defined(SOKOL_ZIG_BINDINGS) + uint32_t __pad[3]; + #endif +} sg_features; + +/* + Runtime information about resource limits, returned by sg_query_limit() +*/ +typedef struct sg_limits { + int max_image_size_2d; // max width/height of SG_IMAGETYPE_2D images + int max_image_size_cube; // max width/height of SG_IMAGETYPE_CUBE images + int max_image_size_3d; // max width/height/depth of SG_IMAGETYPE_3D images + int max_image_size_array; // max width/height of SG_IMAGETYPE_ARRAY images + int max_image_array_layers; // max number of layers in SG_IMAGETYPE_ARRAY images + int max_vertex_attrs; // max number of vertex attributes, clamped to SG_MAX_VERTEX_ATTRIBUTES + int gl_max_vertex_uniform_vectors; // <= GL_MAX_VERTEX_UNIFORM_VECTORS (only on GL backends) + int gl_max_combined_texture_image_units; // <= GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS (only on GL backends) +} sg_limits; + +/* + sg_resource_state + + The current state of a resource in its resource pool. + Resources start in the INITIAL state, which means the + pool slot is unoccupied and can be allocated. When a resource is + created, first an id is allocated, and the resource pool slot + is set to state ALLOC. After allocation, the resource is + initialized, which may result in the VALID or FAILED state. The + reason why allocation and initialization are separate is because + some resource types (e.g. buffers and images) might be asynchronously + initialized by the user application. If a resource which is not + in the VALID state is attempted to be used for rendering, rendering + operations will silently be dropped. + + The special INVALID state is returned in sg_query_xxx_state() if no + resource object exists for the provided resource id. +*/ +typedef enum sg_resource_state { + SG_RESOURCESTATE_INITIAL, + SG_RESOURCESTATE_ALLOC, + SG_RESOURCESTATE_VALID, + SG_RESOURCESTATE_FAILED, + SG_RESOURCESTATE_INVALID, + _SG_RESOURCESTATE_FORCE_U32 = 0x7FFFFFFF +} sg_resource_state; + +/* + sg_usage + + A resource usage hint describing the update strategy of + buffers and images. This is used in the sg_buffer_desc.usage + and sg_image_desc.usage members when creating buffers + and images: + + SG_USAGE_IMMUTABLE: the resource will never be updated with + new data, instead the content of the + resource must be provided on creation + SG_USAGE_DYNAMIC: the resource will be updated infrequently + with new data (this could range from "once + after creation", to "quite often but not + every frame") + SG_USAGE_STREAM: the resource will be updated each frame + with new content + + The rendering backends use this hint to prevent that the + CPU needs to wait for the GPU when attempting to update + a resource that might be currently accessed by the GPU. + + Resource content is updated with the functions sg_update_buffer() or + sg_append_buffer() for buffer objects, and sg_update_image() for image + objects. For the sg_update_*() functions, only one update is allowed per + frame and resource object, while sg_append_buffer() can be called + multiple times per frame on the same buffer. The application must update + all data required for rendering (this means that the update data can be + smaller than the resource size, if only a part of the overall resource + size is used for rendering, you only need to make sure that the data that + *is* used is valid). + + The default usage is SG_USAGE_IMMUTABLE. +*/ +typedef enum sg_usage { + _SG_USAGE_DEFAULT, /* value 0 reserved for default-init */ + SG_USAGE_IMMUTABLE, + SG_USAGE_DYNAMIC, + SG_USAGE_STREAM, + _SG_USAGE_NUM, + _SG_USAGE_FORCE_U32 = 0x7FFFFFFF +} sg_usage; + +/* + sg_buffer_type + + This indicates whether a buffer contains vertex- or index-data, + used in the sg_buffer_desc.type member when creating a buffer. + + The default value is SG_BUFFERTYPE_VERTEXBUFFER. +*/ +typedef enum sg_buffer_type { + _SG_BUFFERTYPE_DEFAULT, /* value 0 reserved for default-init */ + SG_BUFFERTYPE_VERTEXBUFFER, + SG_BUFFERTYPE_INDEXBUFFER, + _SG_BUFFERTYPE_NUM, + _SG_BUFFERTYPE_FORCE_U32 = 0x7FFFFFFF +} sg_buffer_type; + +/* + sg_index_type + + Indicates whether indexed rendering (fetching vertex-indices from an + index buffer) is used, and if yes, the index data type (16- or 32-bits). + This is used in the sg_pipeline_desc.index_type member when creating a + pipeline object. + + The default index type is SG_INDEXTYPE_NONE. +*/ +typedef enum sg_index_type { + _SG_INDEXTYPE_DEFAULT, /* value 0 reserved for default-init */ + SG_INDEXTYPE_NONE, + SG_INDEXTYPE_UINT16, + SG_INDEXTYPE_UINT32, + _SG_INDEXTYPE_NUM, + _SG_INDEXTYPE_FORCE_U32 = 0x7FFFFFFF +} sg_index_type; + +/* + sg_image_type + + Indicates the basic type of an image object (2D-texture, cubemap, + 3D-texture or 2D-array-texture). Used in the sg_image_desc.type member when + creating an image, and in sg_shader_image_desc when describing a shader's + texture sampler binding. + + The default image type when creating an image is SG_IMAGETYPE_2D. +*/ +typedef enum sg_image_type { + _SG_IMAGETYPE_DEFAULT, /* value 0 reserved for default-init */ + SG_IMAGETYPE_2D, + SG_IMAGETYPE_CUBE, + SG_IMAGETYPE_3D, + SG_IMAGETYPE_ARRAY, + _SG_IMAGETYPE_NUM, + _SG_IMAGETYPE_FORCE_U32 = 0x7FFFFFFF +} sg_image_type; + +/* + sg_sampler_type + + Indicates the basic data type of a shader's texture sampler which + can be float , unsigned integer or signed integer. The sampler + type is used in the sg_shader_image_desc to describe the + sampler type of a shader's texture sampler binding. + + The default sampler type is SG_SAMPLERTYPE_FLOAT. +*/ +typedef enum sg_sampler_type { + _SG_SAMPLERTYPE_DEFAULT, /* value 0 reserved for default-init */ + SG_SAMPLERTYPE_FLOAT, + SG_SAMPLERTYPE_SINT, + SG_SAMPLERTYPE_UINT, +} sg_sampler_type; + +/* + sg_cube_face + + The cubemap faces. Use these as indices in the sg_image_desc.content + array. +*/ +typedef enum sg_cube_face { + SG_CUBEFACE_POS_X, + SG_CUBEFACE_NEG_X, + SG_CUBEFACE_POS_Y, + SG_CUBEFACE_NEG_Y, + SG_CUBEFACE_POS_Z, + SG_CUBEFACE_NEG_Z, + SG_CUBEFACE_NUM, + _SG_CUBEFACE_FORCE_U32 = 0x7FFFFFFF +} sg_cube_face; + +/* + sg_shader_stage + + There are 2 shader stages: vertex- and fragment-shader-stage. + Each shader stage consists of: + + - one slot for a shader function (provided as source- or byte-code) + - SG_MAX_SHADERSTAGE_UBS slots for uniform blocks + - SG_MAX_SHADERSTAGE_IMAGES slots for images used as textures by + the shader function +*/ +typedef enum sg_shader_stage { + SG_SHADERSTAGE_VS, + SG_SHADERSTAGE_FS, + _SG_SHADERSTAGE_FORCE_U32 = 0x7FFFFFFF +} sg_shader_stage; + +/* + sg_primitive_type + + This is the common subset of 3D primitive types supported across all 3D + APIs. This is used in the sg_pipeline_desc.primitive_type member when + creating a pipeline object. + + The default primitive type is SG_PRIMITIVETYPE_TRIANGLES. +*/ +typedef enum sg_primitive_type { + _SG_PRIMITIVETYPE_DEFAULT, /* value 0 reserved for default-init */ + SG_PRIMITIVETYPE_POINTS, + SG_PRIMITIVETYPE_LINES, + SG_PRIMITIVETYPE_LINE_STRIP, + SG_PRIMITIVETYPE_TRIANGLES, + SG_PRIMITIVETYPE_TRIANGLE_STRIP, + _SG_PRIMITIVETYPE_NUM, + _SG_PRIMITIVETYPE_FORCE_U32 = 0x7FFFFFFF +} sg_primitive_type; + +/* + sg_filter + + The filtering mode when sampling a texture image. This is + used in the sg_image_desc.min_filter and sg_image_desc.mag_filter + members when creating an image object. + + The default filter mode is SG_FILTER_NEAREST. +*/ +typedef enum sg_filter { + _SG_FILTER_DEFAULT, /* value 0 reserved for default-init */ + SG_FILTER_NEAREST, + SG_FILTER_LINEAR, + SG_FILTER_NEAREST_MIPMAP_NEAREST, + SG_FILTER_NEAREST_MIPMAP_LINEAR, + SG_FILTER_LINEAR_MIPMAP_NEAREST, + SG_FILTER_LINEAR_MIPMAP_LINEAR, + _SG_FILTER_NUM, + _SG_FILTER_FORCE_U32 = 0x7FFFFFFF +} sg_filter; + +/* + sg_wrap + + The texture coordinates wrapping mode when sampling a texture + image. This is used in the sg_image_desc.wrap_u, .wrap_v + and .wrap_w members when creating an image. + + The default wrap mode is SG_WRAP_REPEAT. + + NOTE: SG_WRAP_CLAMP_TO_BORDER is not supported on all backends + and platforms. To check for support, call sg_query_features() + and check the "clamp_to_border" boolean in the returned + sg_features struct. + + Platforms which don't support SG_WRAP_CLAMP_TO_BORDER will silently fall back + to SG_WRAP_CLAMP_TO_EDGE without a validation error. + + Platforms which support clamp-to-border are: + + - all desktop GL platforms + - Metal on macOS + - D3D11 + + Platforms which do not support clamp-to-border: + + - GLES3 and WebGL2 + - Metal on iOS +*/ +typedef enum sg_wrap { + _SG_WRAP_DEFAULT, /* value 0 reserved for default-init */ + SG_WRAP_REPEAT, + SG_WRAP_CLAMP_TO_EDGE, + SG_WRAP_CLAMP_TO_BORDER, + SG_WRAP_MIRRORED_REPEAT, + _SG_WRAP_NUM, + _SG_WRAP_FORCE_U32 = 0x7FFFFFFF +} sg_wrap; + +/* + sg_border_color + + The border color to use when sampling a texture, and the UV wrap + mode is SG_WRAP_CLAMP_TO_BORDER. + + The default border color is SG_BORDERCOLOR_OPAQUE_BLACK +*/ +typedef enum sg_border_color { + _SG_BORDERCOLOR_DEFAULT, /* value 0 reserved for default-init */ + SG_BORDERCOLOR_TRANSPARENT_BLACK, + SG_BORDERCOLOR_OPAQUE_BLACK, + SG_BORDERCOLOR_OPAQUE_WHITE, + _SG_BORDERCOLOR_NUM, + _SG_BORDERCOLOR_FORCE_U32 = 0x7FFFFFFF +} sg_border_color; + +/* + sg_vertex_format + + The data type of a vertex component. This is used to describe + the layout of vertex data when creating a pipeline object. +*/ +typedef enum sg_vertex_format { + SG_VERTEXFORMAT_INVALID, + SG_VERTEXFORMAT_FLOAT, + SG_VERTEXFORMAT_FLOAT2, + SG_VERTEXFORMAT_FLOAT3, + SG_VERTEXFORMAT_FLOAT4, + SG_VERTEXFORMAT_BYTE4, + SG_VERTEXFORMAT_BYTE4N, + SG_VERTEXFORMAT_UBYTE4, + SG_VERTEXFORMAT_UBYTE4N, + SG_VERTEXFORMAT_SHORT2, + SG_VERTEXFORMAT_SHORT2N, + SG_VERTEXFORMAT_USHORT2N, + SG_VERTEXFORMAT_SHORT4, + SG_VERTEXFORMAT_SHORT4N, + SG_VERTEXFORMAT_USHORT4N, + SG_VERTEXFORMAT_UINT10_N2, + SG_VERTEXFORMAT_HALF2, + SG_VERTEXFORMAT_HALF4, + _SG_VERTEXFORMAT_NUM, + _SG_VERTEXFORMAT_FORCE_U32 = 0x7FFFFFFF +} sg_vertex_format; + +/* + sg_vertex_step + + Defines whether the input pointer of a vertex input stream is advanced + 'per vertex' or 'per instance'. The default step-func is + SG_VERTEXSTEP_PER_VERTEX. SG_VERTEXSTEP_PER_INSTANCE is used with + instanced-rendering. + + The vertex-step is part of the vertex-layout definition + when creating pipeline objects. +*/ +typedef enum sg_vertex_step { + _SG_VERTEXSTEP_DEFAULT, /* value 0 reserved for default-init */ + SG_VERTEXSTEP_PER_VERTEX, + SG_VERTEXSTEP_PER_INSTANCE, + _SG_VERTEXSTEP_NUM, + _SG_VERTEXSTEP_FORCE_U32 = 0x7FFFFFFF +} sg_vertex_step; + +/* + sg_uniform_type + + The data type of a uniform block member. This is used to + describe the internal layout of uniform blocks when creating + a shader object. +*/ +typedef enum sg_uniform_type { + SG_UNIFORMTYPE_INVALID, + SG_UNIFORMTYPE_FLOAT, + SG_UNIFORMTYPE_FLOAT2, + SG_UNIFORMTYPE_FLOAT3, + SG_UNIFORMTYPE_FLOAT4, + SG_UNIFORMTYPE_INT, + SG_UNIFORMTYPE_INT2, + SG_UNIFORMTYPE_INT3, + SG_UNIFORMTYPE_INT4, + SG_UNIFORMTYPE_MAT4, + _SG_UNIFORMTYPE_NUM, + _SG_UNIFORMTYPE_FORCE_U32 = 0x7FFFFFFF +} sg_uniform_type; + +/* + sg_uniform_layout + + A hint for the interior memory layout of uniform blocks. This is + only really relevant for the GL backend where the internal layout + of uniform blocks must be known to sokol-gfx. For all other backends the + internal memory layout of uniform blocks doesn't matter, sokol-gfx + will just pass uniform data as a single memory blob to the + 3D backend. + + SG_UNIFORMLAYOUT_NATIVE (default) + Native layout means that a 'backend-native' memory layout + is used. For the GL backend this means that uniforms + are packed tightly in memory (e.g. there are no padding + bytes). + + SG_UNIFORMLAYOUT_STD140 + The memory layout is a subset of std140. Arrays are only + allowed for the FLOAT4, INT4 and MAT4. Alignment is as + is as follows: + + FLOAT, INT: 4 byte alignment + FLOAT2, INT2: 8 byte alignment + FLOAT3, INT3: 16 byte alignment(!) + FLOAT4, INT4: 16 byte alignment + MAT4: 16 byte alignment + FLOAT4[], INT4[]: 16 byte alignment + + The overall size of the uniform block must be a multiple + of 16. + + For more information search for 'UNIFORM DATA LAYOUT' in the documentation block + at the start of the header. +*/ +typedef enum sg_uniform_layout { + _SG_UNIFORMLAYOUT_DEFAULT, /* value 0 reserved for default-init */ + SG_UNIFORMLAYOUT_NATIVE, /* default: layout depends on currently active backend */ + SG_UNIFORMLAYOUT_STD140, /* std140: memory layout according to std140 */ + _SG_UNIFORMLAYOUT_NUM, + _SG_UNIFORMLAYOUT_FORCE_U32 = 0x7FFFFFFF +} sg_uniform_layout; + +/* + sg_cull_mode + + The face-culling mode, this is used in the + sg_pipeline_desc.cull_mode member when creating a + pipeline object. + + The default cull mode is SG_CULLMODE_NONE +*/ +typedef enum sg_cull_mode { + _SG_CULLMODE_DEFAULT, /* value 0 reserved for default-init */ + SG_CULLMODE_NONE, + SG_CULLMODE_FRONT, + SG_CULLMODE_BACK, + _SG_CULLMODE_NUM, + _SG_CULLMODE_FORCE_U32 = 0x7FFFFFFF +} sg_cull_mode; + +/* + sg_face_winding + + The vertex-winding rule that determines a front-facing primitive. This + is used in the member sg_pipeline_desc.face_winding + when creating a pipeline object. + + The default winding is SG_FACEWINDING_CW (clockwise) +*/ +typedef enum sg_face_winding { + _SG_FACEWINDING_DEFAULT, /* value 0 reserved for default-init */ + SG_FACEWINDING_CCW, + SG_FACEWINDING_CW, + _SG_FACEWINDING_NUM, + _SG_FACEWINDING_FORCE_U32 = 0x7FFFFFFF +} sg_face_winding; + +/* + sg_compare_func + + The compare-function for depth- and stencil-ref tests. + This is used when creating pipeline objects in the members: + + sg_pipeline_desc + .depth + .compare + .stencil + .front.compare + .back.compar + + The default compare func for depth- and stencil-tests is + SG_COMPAREFUNC_ALWAYS. +*/ +typedef enum sg_compare_func { + _SG_COMPAREFUNC_DEFAULT, /* value 0 reserved for default-init */ + SG_COMPAREFUNC_NEVER, + SG_COMPAREFUNC_LESS, + SG_COMPAREFUNC_EQUAL, + SG_COMPAREFUNC_LESS_EQUAL, + SG_COMPAREFUNC_GREATER, + SG_COMPAREFUNC_NOT_EQUAL, + SG_COMPAREFUNC_GREATER_EQUAL, + SG_COMPAREFUNC_ALWAYS, + _SG_COMPAREFUNC_NUM, + _SG_COMPAREFUNC_FORCE_U32 = 0x7FFFFFFF +} sg_compare_func; + +/* + sg_stencil_op + + The operation performed on a currently stored stencil-value when a + comparison test passes or fails. This is used when creating a pipeline + object in the members: + + sg_pipeline_desc + .stencil + .front + .fail_op + .depth_fail_op + .pass_op + .back + .fail_op + .depth_fail_op + .pass_op + + The default value is SG_STENCILOP_KEEP. +*/ +typedef enum sg_stencil_op { + _SG_STENCILOP_DEFAULT, /* value 0 reserved for default-init */ + SG_STENCILOP_KEEP, + SG_STENCILOP_ZERO, + SG_STENCILOP_REPLACE, + SG_STENCILOP_INCR_CLAMP, + SG_STENCILOP_DECR_CLAMP, + SG_STENCILOP_INVERT, + SG_STENCILOP_INCR_WRAP, + SG_STENCILOP_DECR_WRAP, + _SG_STENCILOP_NUM, + _SG_STENCILOP_FORCE_U32 = 0x7FFFFFFF +} sg_stencil_op; + +/* + sg_blend_factor + + The source and destination factors in blending operations. + This is used in the following members when creating a pipeline object: + + sg_pipeline_desc + .colors[i] + .blend + .src_factor_rgb + .dst_factor_rgb + .src_factor_alpha + .dst_factor_alpha + + The default value is SG_BLENDFACTOR_ONE for source + factors, and SG_BLENDFACTOR_ZERO for destination factors. +*/ +typedef enum sg_blend_factor { + _SG_BLENDFACTOR_DEFAULT, /* value 0 reserved for default-init */ + SG_BLENDFACTOR_ZERO, + SG_BLENDFACTOR_ONE, + SG_BLENDFACTOR_SRC_COLOR, + SG_BLENDFACTOR_ONE_MINUS_SRC_COLOR, + SG_BLENDFACTOR_SRC_ALPHA, + SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA, + SG_BLENDFACTOR_DST_COLOR, + SG_BLENDFACTOR_ONE_MINUS_DST_COLOR, + SG_BLENDFACTOR_DST_ALPHA, + SG_BLENDFACTOR_ONE_MINUS_DST_ALPHA, + SG_BLENDFACTOR_SRC_ALPHA_SATURATED, + SG_BLENDFACTOR_BLEND_COLOR, + SG_BLENDFACTOR_ONE_MINUS_BLEND_COLOR, + SG_BLENDFACTOR_BLEND_ALPHA, + SG_BLENDFACTOR_ONE_MINUS_BLEND_ALPHA, + _SG_BLENDFACTOR_NUM, + _SG_BLENDFACTOR_FORCE_U32 = 0x7FFFFFFF +} sg_blend_factor; + +/* + sg_blend_op + + Describes how the source and destination values are combined in the + fragment blending operation. It is used in the following members when + creating a pipeline object: + + sg_pipeline_desc + .colors[i] + .blend + .op_rgb + .op_alpha + + The default value is SG_BLENDOP_ADD. +*/ +typedef enum sg_blend_op { + _SG_BLENDOP_DEFAULT, /* value 0 reserved for default-init */ + SG_BLENDOP_ADD, + SG_BLENDOP_SUBTRACT, + SG_BLENDOP_REVERSE_SUBTRACT, + _SG_BLENDOP_NUM, + _SG_BLENDOP_FORCE_U32 = 0x7FFFFFFF +} sg_blend_op; + +/* + sg_color_mask + + Selects the active color channels when writing a fragment color to the + framebuffer. This is used in the members + sg_pipeline_desc.colors[i].write_mask when creating a pipeline object. + + The default colormask is SG_COLORMASK_RGBA (write all colors channels) + + NOTE: since the color mask value 0 is reserved for the default value + (SG_COLORMASK_RGBA), use SG_COLORMASK_NONE if all color channels + should be disabled. +*/ +typedef enum sg_color_mask { + _SG_COLORMASK_DEFAULT = 0, /* value 0 reserved for default-init */ + SG_COLORMASK_NONE = 0x10, /* special value for 'all channels disabled */ + SG_COLORMASK_R = 0x1, + SG_COLORMASK_G = 0x2, + SG_COLORMASK_RG = 0x3, + SG_COLORMASK_B = 0x4, + SG_COLORMASK_RB = 0x5, + SG_COLORMASK_GB = 0x6, + SG_COLORMASK_RGB = 0x7, + SG_COLORMASK_A = 0x8, + SG_COLORMASK_RA = 0x9, + SG_COLORMASK_GA = 0xA, + SG_COLORMASK_RGA = 0xB, + SG_COLORMASK_BA = 0xC, + SG_COLORMASK_RBA = 0xD, + SG_COLORMASK_GBA = 0xE, + SG_COLORMASK_RGBA = 0xF, + _SG_COLORMASK_FORCE_U32 = 0x7FFFFFFF +} sg_color_mask; + +/* + sg_action + + Defines what action should be performed at the start of a render pass: + + SG_ACTION_CLEAR: clear the render target image + SG_ACTION_LOAD: load the previous content of the render target image + SG_ACTION_DONTCARE: leave the render target image content undefined + + This is used in the sg_pass_action structure. + + The default action for all pass attachments is SG_ACTION_CLEAR, with the + clear color rgba = {0.5f, 0.5f, 0.5f, 1.0f], depth=1.0 and stencil=0. + + If you want to override the default behaviour, it is important to not + only set the clear color, but the 'action' field as well (as long as this + is in its _SG_ACTION_DEFAULT, the value fields will be ignored). +*/ +typedef enum sg_action { + _SG_ACTION_DEFAULT, + SG_ACTION_CLEAR, + SG_ACTION_LOAD, + SG_ACTION_DONTCARE, + _SG_ACTION_NUM, + _SG_ACTION_FORCE_U32 = 0x7FFFFFFF +} sg_action; + +/* + sg_pass_action + + The sg_pass_action struct defines the actions to be performed + at the start of a rendering pass in the functions sg_begin_pass() + and sg_begin_default_pass(). + + A separate action and clear values can be defined for each + color attachment, and for the depth-stencil attachment. + + The default clear values are defined by the macros: + + - SG_DEFAULT_CLEAR_RED: 0.5f + - SG_DEFAULT_CLEAR_GREEN: 0.5f + - SG_DEFAULT_CLEAR_BLUE: 0.5f + - SG_DEFAULT_CLEAR_ALPHA: 1.0f + - SG_DEFAULT_CLEAR_DEPTH: 1.0f + - SG_DEFAULT_CLEAR_STENCIL: 0 +*/ +typedef struct sg_color_attachment_action { + sg_action action; + sg_color value; +} sg_color_attachment_action; + +typedef struct sg_depth_attachment_action { + sg_action action; + float value; +} sg_depth_attachment_action; + +typedef struct sg_stencil_attachment_action { + sg_action action; + uint8_t value; +} sg_stencil_attachment_action; + +typedef struct sg_pass_action { + uint32_t _start_canary; + sg_color_attachment_action colors[SG_MAX_COLOR_ATTACHMENTS]; + sg_depth_attachment_action depth; + sg_stencil_attachment_action stencil; + uint32_t _end_canary; +} sg_pass_action; + +/* + sg_bindings + + The sg_bindings structure defines the resource binding slots + of the sokol_gfx render pipeline, used as argument to the + sg_apply_bindings() function. + + A resource binding struct contains: + + - 1..N vertex buffers + - 0..N vertex buffer offsets + - 0..1 index buffers + - 0..1 index buffer offsets + - 0..N vertex shader stage images + - 0..N fragment shader stage images + + The max number of vertex buffer and shader stage images + are defined by the SG_MAX_SHADERSTAGE_BUFFERS and + SG_MAX_SHADERSTAGE_IMAGES configuration constants. + + The optional buffer offsets can be used to put different unrelated + chunks of vertex- and/or index-data into the same buffer objects. +*/ +typedef struct sg_bindings { + uint32_t _start_canary; + sg_buffer vertex_buffers[SG_MAX_SHADERSTAGE_BUFFERS]; + int vertex_buffer_offsets[SG_MAX_SHADERSTAGE_BUFFERS]; + sg_buffer index_buffer; + int index_buffer_offset; + sg_image vs_images[SG_MAX_SHADERSTAGE_IMAGES]; + sg_image fs_images[SG_MAX_SHADERSTAGE_IMAGES]; + uint32_t _end_canary; +} sg_bindings; + +/* + sg_buffer_desc + + Creation parameters for sg_buffer objects, used in the + sg_make_buffer() call. + + The default configuration is: + + .size: 0 (*must* be >0 for buffers without data) + .type: SG_BUFFERTYPE_VERTEXBUFFER + .usage: SG_USAGE_IMMUTABLE + .data.ptr 0 (*must* be valid for immutable buffers) + .data.size 0 (*must* be > 0 for immutable buffers) + .label 0 (optional string label for trace hooks) + + The label will be ignored by sokol_gfx.h, it is only useful + when hooking into sg_make_buffer() or sg_init_buffer() via + the sg_install_trace_hooks() function. + + For immutable buffers which are initialized with initial data, + keep the .size item zero-initialized, and set the size together with the + pointer to the initial data in the .data item. + + For mutable buffers without initial data, keep the .data item + zero-initialized, and set the buffer size in the .size item instead. + + You can also set both size values, but currently both size values must + be identical (this may change in the future when the dynamic resource + management may become more flexible). + + ADVANCED TOPIC: Injecting native 3D-API buffers: + + The following struct members allow to inject your own GL, Metal + or D3D11 buffers into sokol_gfx: + + .gl_buffers[SG_NUM_INFLIGHT_FRAMES] + .mtl_buffers[SG_NUM_INFLIGHT_FRAMES] + .d3d11_buffer + + You must still provide all other struct items except the .data item, and + these must match the creation parameters of the native buffers you + provide. For SG_USAGE_IMMUTABLE, only provide a single native 3D-API + buffer, otherwise you need to provide SG_NUM_INFLIGHT_FRAMES buffers + (only for GL and Metal, not D3D11). Providing multiple buffers for GL and + Metal is necessary because sokol_gfx will rotate through them when + calling sg_update_buffer() to prevent lock-stalls. + + Note that it is expected that immutable injected buffer have already been + initialized with content, and the .content member must be 0! + + Also you need to call sg_reset_state_cache() after calling native 3D-API + functions, and before calling any sokol_gfx function. +*/ +typedef struct sg_buffer_desc { + uint32_t _start_canary; + size_t size; + sg_buffer_type type; + sg_usage usage; + sg_range data; + const char* label; + /* GL specific */ + uint32_t gl_buffers[SG_NUM_INFLIGHT_FRAMES]; + /* Metal specific */ + const void* mtl_buffers[SG_NUM_INFLIGHT_FRAMES]; + /* D3D11 specific */ + const void* d3d11_buffer; + /* WebGPU specific */ + const void* wgpu_buffer; + uint32_t _end_canary; +} sg_buffer_desc; + +/* + sg_image_data + + Defines the content of an image through a 2D array of sg_range structs. + The first array dimension is the cubemap face, and the second array + dimension the mipmap level. +*/ +typedef struct sg_image_data { + sg_range subimage[SG_CUBEFACE_NUM][SG_MAX_MIPMAPS]; +} sg_image_data; + +/* + sg_image_desc + + Creation parameters for sg_image objects, used in the sg_make_image() + call. + + The default configuration is: + + .type: SG_IMAGETYPE_2D + .render_target: false + .width 0 (must be set to >0) + .height 0 (must be set to >0) + .num_slices 1 (3D textures: depth; array textures: number of layers) + .num_mipmaps: 1 + .usage: SG_USAGE_IMMUTABLE + .pixel_format: SG_PIXELFORMAT_RGBA8 for textures, or sg_desc.context.color_format for render targets + .sample_count: 1 for textures, or sg_desc.context.sample_count for render targets + .min_filter: SG_FILTER_NEAREST + .mag_filter: SG_FILTER_NEAREST + .wrap_u: SG_WRAP_REPEAT + .wrap_v: SG_WRAP_REPEAT + .wrap_w: SG_WRAP_REPEAT (only SG_IMAGETYPE_3D) + .border_color SG_BORDERCOLOR_OPAQUE_BLACK + .max_anisotropy 1 (must be 1..16) + .min_lod 0.0f + .max_lod FLT_MAX + .data an sg_image_data struct to define the initial content + .label 0 (optional string label for trace hooks) + + Q: Why is the default sample_count for render targets identical with the + "default sample count" from sg_desc.context.sample_count? + + A: So that it matches the default sample count in pipeline objects. Even + though it is a bit strange/confusing that offscreen render targets by default + get the same sample count as the default framebuffer, but it's better that + an offscreen render target created with default parameters matches + a pipeline object created with default parameters. + + NOTE: + + Images with usage SG_USAGE_IMMUTABLE must be fully initialized by + providing a valid .data member which points to initialization data. + + ADVANCED TOPIC: Injecting native 3D-API textures: + + The following struct members allow to inject your own GL, Metal or D3D11 + textures into sokol_gfx: + + .gl_textures[SG_NUM_INFLIGHT_FRAMES] + .mtl_textures[SG_NUM_INFLIGHT_FRAMES] + .d3d11_texture + .d3d11_shader_resource_view + + For GL, you can also specify the texture target or leave it empty to use + the default texture target for the image type (GL_TEXTURE_2D for + SG_IMAGETYPE_2D etc) + + For D3D11, you can provide either a D3D11 texture, or a + shader-resource-view, or both. If only a texture is provided, a matching + shader-resource-view will be created. If only a shader-resource-view is + provided, the texture will be looked up from the shader-resource-view. + + The same rules apply as for injecting native buffers (see sg_buffer_desc + documentation for more details). +*/ +typedef struct sg_image_desc { + uint32_t _start_canary; + sg_image_type type; + bool render_target; + int width; + int height; + int num_slices; + int num_mipmaps; + sg_usage usage; + sg_pixel_format pixel_format; + int sample_count; + sg_filter min_filter; + sg_filter mag_filter; + sg_wrap wrap_u; + sg_wrap wrap_v; + sg_wrap wrap_w; + sg_border_color border_color; + uint32_t max_anisotropy; + float min_lod; + float max_lod; + sg_image_data data; + const char* label; + /* GL specific */ + uint32_t gl_textures[SG_NUM_INFLIGHT_FRAMES]; + uint32_t gl_texture_target; + /* Metal specific */ + const void* mtl_textures[SG_NUM_INFLIGHT_FRAMES]; + /* D3D11 specific */ + const void* d3d11_texture; + const void* d3d11_shader_resource_view; + /* WebGPU specific */ + const void* wgpu_texture; + uint32_t _end_canary; +} sg_image_desc; + +/* + sg_shader_desc + + The structure sg_shader_desc defines all creation parameters for shader + programs, used as input to the sg_make_shader() function: + + - reflection information for vertex attributes (vertex shader inputs): + - vertex attribute name (only optionally used by GLES3 and GL) + - a semantic name and index (required for D3D11) + - for each shader-stage (vertex and fragment): + - the shader source or bytecode + - an optional entry function name + - an optional compile target (only for D3D11 when source is provided, + defaults are "vs_4_0" and "ps_4_0") + - reflection info for each uniform block used by the shader stage: + - the size of the uniform block in bytes + - a memory layout hint (native vs std140, only required for GL backends) + - reflection info for each uniform block member (only required for GL backends): + - member name + - member type (SG_UNIFORMTYPE_xxx) + - if the member is an array, the number of array items + - reflection info for the texture images used by the shader stage: + - the image type (SG_IMAGETYPE_xxx) + - the sampler type (SG_SAMPLERTYPE_xxx, default is SG_SAMPLERTYPE_FLOAT) + - the name of the texture sampler (optional) + + For all GL backends, shader source-code must be provided. For D3D11 and Metal, + either shader source-code or byte-code can be provided. + + For D3D11, if source code is provided, the d3dcompiler_47.dll will be loaded + on demand. If this fails, shader creation will fail. When compiling HLSL + source code, you can provide an optional target string via + sg_shader_stage_desc.d3d11_target, the default target is "vs_4_0" for the + vertex shader stage and "ps_4_0" for the pixel shader stage. +*/ +typedef struct sg_shader_attr_desc { + const char* name; // GLSL vertex attribute name (optional) + const char* sem_name; // HLSL semantic name + int sem_index; // HLSL semantic index +} sg_shader_attr_desc; + +typedef struct sg_shader_uniform_desc { + const char* name; + sg_uniform_type type; + int array_count; +} sg_shader_uniform_desc; + +typedef struct sg_shader_uniform_block_desc { + size_t size; + sg_uniform_layout layout; + sg_shader_uniform_desc uniforms[SG_MAX_UB_MEMBERS]; +} sg_shader_uniform_block_desc; + +typedef struct sg_shader_image_desc { + const char* name; + sg_image_type image_type; + sg_sampler_type sampler_type; +} sg_shader_image_desc; + +typedef struct sg_shader_stage_desc { + const char* source; + sg_range bytecode; + const char* entry; + const char* d3d11_target; + sg_shader_uniform_block_desc uniform_blocks[SG_MAX_SHADERSTAGE_UBS]; + sg_shader_image_desc images[SG_MAX_SHADERSTAGE_IMAGES]; +} sg_shader_stage_desc; + +typedef struct sg_shader_desc { + uint32_t _start_canary; + sg_shader_attr_desc attrs[SG_MAX_VERTEX_ATTRIBUTES]; + sg_shader_stage_desc vs; + sg_shader_stage_desc fs; + const char* label; + uint32_t _end_canary; +} sg_shader_desc; + +/* + sg_pipeline_desc + + The sg_pipeline_desc struct defines all creation parameters for an + sg_pipeline object, used as argument to the sg_make_pipeline() function: + + - the vertex layout for all input vertex buffers + - a shader object + - the 3D primitive type (points, lines, triangles, ...) + - the index type (none, 16- or 32-bit) + - all the fixed-function-pipeline state (depth-, stencil-, blend-state, etc...) + + If the vertex data has no gaps between vertex components, you can omit + the .layout.buffers[].stride and layout.attrs[].offset items (leave them + default-initialized to 0), sokol-gfx will then compute the offsets and + strides from the vertex component formats (.layout.attrs[].format). + Please note that ALL vertex attribute offsets must be 0 in order for the + automatic offset computation to kick in. + + The default configuration is as follows: + + .shader: 0 (must be initialized with a valid sg_shader id!) + .layout: + .buffers[]: vertex buffer layouts + .stride: 0 (if no stride is given it will be computed) + .step_func SG_VERTEXSTEP_PER_VERTEX + .step_rate 1 + .attrs[]: vertex attribute declarations + .buffer_index 0 the vertex buffer bind slot + .offset 0 (offsets can be omitted if the vertex layout has no gaps) + .format SG_VERTEXFORMAT_INVALID (must be initialized!) + .depth: + .pixel_format: sg_desc.context.depth_format + .compare: SG_COMPAREFUNC_ALWAYS + .write_enabled: false + .bias: 0.0f + .bias_slope_scale: 0.0f + .bias_clamp: 0.0f + .stencil: + .enabled: false + .front/back: + .compare: SG_COMPAREFUNC_ALWAYS + .fail_op: SG_STENCILOP_KEEP + .depth_fail_op: SG_STENCILOP_KEEP + .pass_op: SG_STENCILOP_KEEP + .read_mask: 0 + .write_mask: 0 + .ref: 0 + .color_count 1 + .colors[0..color_count] + .pixel_format sg_desc.context.color_format + .write_mask: SG_COLORMASK_RGBA + .blend: + .enabled: false + .src_factor_rgb: SG_BLENDFACTOR_ONE + .dst_factor_rgb: SG_BLENDFACTOR_ZERO + .op_rgb: SG_BLENDOP_ADD + .src_factor_alpha: SG_BLENDFACTOR_ONE + .dst_factor_alpha: SG_BLENDFACTOR_ZERO + .op_alpha: SG_BLENDOP_ADD + .primitive_type: SG_PRIMITIVETYPE_TRIANGLES + .index_type: SG_INDEXTYPE_NONE + .cull_mode: SG_CULLMODE_NONE + .face_winding: SG_FACEWINDING_CW + .sample_count: sg_desc.context.sample_count + .blend_color: (sg_color) { 0.0f, 0.0f, 0.0f, 0.0f } + .alpha_to_coverage_enabled: false + .label 0 (optional string label for trace hooks) +*/ +typedef struct sg_buffer_layout_desc { + int stride; + sg_vertex_step step_func; + int step_rate; + #if defined(SOKOL_ZIG_BINDINGS) + uint32_t __pad[2]; + #endif +} sg_buffer_layout_desc; + +typedef struct sg_vertex_attr_desc { + int buffer_index; + int offset; + sg_vertex_format format; + #if defined(SOKOL_ZIG_BINDINGS) + uint32_t __pad[2]; + #endif +} sg_vertex_attr_desc; + +typedef struct sg_layout_desc { + sg_buffer_layout_desc buffers[SG_MAX_SHADERSTAGE_BUFFERS]; + sg_vertex_attr_desc attrs[SG_MAX_VERTEX_ATTRIBUTES]; +} sg_layout_desc; + +typedef struct sg_stencil_face_state { + sg_compare_func compare; + sg_stencil_op fail_op; + sg_stencil_op depth_fail_op; + sg_stencil_op pass_op; +} sg_stencil_face_state; + +typedef struct sg_stencil_state { + bool enabled; + sg_stencil_face_state front; + sg_stencil_face_state back; + uint8_t read_mask; + uint8_t write_mask; + uint8_t ref; +} sg_stencil_state; + +typedef struct sg_depth_state { + sg_pixel_format pixel_format; + sg_compare_func compare; + bool write_enabled; + float bias; + float bias_slope_scale; + float bias_clamp; +} sg_depth_state; + +typedef struct sg_blend_state { + bool enabled; + sg_blend_factor src_factor_rgb; + sg_blend_factor dst_factor_rgb; + sg_blend_op op_rgb; + sg_blend_factor src_factor_alpha; + sg_blend_factor dst_factor_alpha; + sg_blend_op op_alpha; +} sg_blend_state; + +typedef struct sg_color_state { + sg_pixel_format pixel_format; + sg_color_mask write_mask; + sg_blend_state blend; +} sg_color_state; + +typedef struct sg_pipeline_desc { + uint32_t _start_canary; + sg_shader shader; + sg_layout_desc layout; + sg_depth_state depth; + sg_stencil_state stencil; + int color_count; + sg_color_state colors[SG_MAX_COLOR_ATTACHMENTS]; + sg_primitive_type primitive_type; + sg_index_type index_type; + sg_cull_mode cull_mode; + sg_face_winding face_winding; + int sample_count; + sg_color blend_color; + bool alpha_to_coverage_enabled; + const char* label; + uint32_t _end_canary; +} sg_pipeline_desc; + +/* + sg_pass_desc + + Creation parameters for an sg_pass object, used as argument + to the sg_make_pass() function. + + A pass object contains 1..4 color-attachments and none, or one, + depth-stencil-attachment. Each attachment consists of + an image, and two additional indices describing + which subimage the pass will render to: one mipmap index, and + if the image is a cubemap, array-texture or 3D-texture, the + face-index, array-layer or depth-slice. + + Pass images must fulfill the following requirements: + + All images must have: + - been created as render target (sg_image_desc.render_target = true) + - the same size + - the same sample count + + In addition, all color-attachment images must have the same pixel format. +*/ +typedef struct sg_pass_attachment_desc { + sg_image image; + int mip_level; + int slice; /* cube texture: face; array texture: layer; 3D texture: slice */ +} sg_pass_attachment_desc; + +typedef struct sg_pass_desc { + uint32_t _start_canary; + sg_pass_attachment_desc color_attachments[SG_MAX_COLOR_ATTACHMENTS]; + sg_pass_attachment_desc depth_stencil_attachment; + const char* label; + uint32_t _end_canary; +} sg_pass_desc; + +/* + sg_trace_hooks + + Installable callback functions to keep track of the sokol-gfx calls, + this is useful for debugging, or keeping track of resource creation + and destruction. + + Trace hooks are installed with sg_install_trace_hooks(), this returns + another sg_trace_hooks struct with the previous set of + trace hook function pointers. These should be invoked by the + new trace hooks to form a proper call chain. +*/ +typedef struct sg_trace_hooks { + void* user_data; + void (*reset_state_cache)(void* user_data); + void (*make_buffer)(const sg_buffer_desc* desc, sg_buffer result, void* user_data); + void (*make_image)(const sg_image_desc* desc, sg_image result, void* user_data); + void (*make_shader)(const sg_shader_desc* desc, sg_shader result, void* user_data); + void (*make_pipeline)(const sg_pipeline_desc* desc, sg_pipeline result, void* user_data); + void (*make_pass)(const sg_pass_desc* desc, sg_pass result, void* user_data); + void (*destroy_buffer)(sg_buffer buf, void* user_data); + void (*destroy_image)(sg_image img, void* user_data); + void (*destroy_shader)(sg_shader shd, void* user_data); + void (*destroy_pipeline)(sg_pipeline pip, void* user_data); + void (*destroy_pass)(sg_pass pass, void* user_data); + void (*update_buffer)(sg_buffer buf, const sg_range* data, void* user_data); + void (*update_image)(sg_image img, const sg_image_data* data, void* user_data); + void (*append_buffer)(sg_buffer buf, const sg_range* data, int result, void* user_data); + void (*begin_default_pass)(const sg_pass_action* pass_action, int width, int height, void* user_data); + void (*begin_pass)(sg_pass pass, const sg_pass_action* pass_action, void* user_data); + void (*apply_viewport)(int x, int y, int width, int height, bool origin_top_left, void* user_data); + void (*apply_scissor_rect)(int x, int y, int width, int height, bool origin_top_left, void* user_data); + void (*apply_pipeline)(sg_pipeline pip, void* user_data); + void (*apply_bindings)(const sg_bindings* bindings, void* user_data); + void (*apply_uniforms)(sg_shader_stage stage, int ub_index, const sg_range* data, void* user_data); + void (*draw)(int base_element, int num_elements, int num_instances, void* user_data); + void (*end_pass)(void* user_data); + void (*commit)(void* user_data); + void (*alloc_buffer)(sg_buffer result, void* user_data); + void (*alloc_image)(sg_image result, void* user_data); + void (*alloc_shader)(sg_shader result, void* user_data); + void (*alloc_pipeline)(sg_pipeline result, void* user_data); + void (*alloc_pass)(sg_pass result, void* user_data); + void (*dealloc_buffer)(sg_buffer buf_id, void* user_data); + void (*dealloc_image)(sg_image img_id, void* user_data); + void (*dealloc_shader)(sg_shader shd_id, void* user_data); + void (*dealloc_pipeline)(sg_pipeline pip_id, void* user_data); + void (*dealloc_pass)(sg_pass pass_id, void* user_data); + void (*init_buffer)(sg_buffer buf_id, const sg_buffer_desc* desc, void* user_data); + void (*init_image)(sg_image img_id, const sg_image_desc* desc, void* user_data); + void (*init_shader)(sg_shader shd_id, const sg_shader_desc* desc, void* user_data); + void (*init_pipeline)(sg_pipeline pip_id, const sg_pipeline_desc* desc, void* user_data); + void (*init_pass)(sg_pass pass_id, const sg_pass_desc* desc, void* user_data); + void (*uninit_buffer)(sg_buffer buf_id, void* user_data); + void (*uninit_image)(sg_image img_id, void* user_data); + void (*uninit_shader)(sg_shader shd_id, void* user_data); + void (*uninit_pipeline)(sg_pipeline pip_id, void* user_data); + void (*uninit_pass)(sg_pass pass_id, void* user_data); + void (*fail_buffer)(sg_buffer buf_id, void* user_data); + void (*fail_image)(sg_image img_id, void* user_data); + void (*fail_shader)(sg_shader shd_id, void* user_data); + void (*fail_pipeline)(sg_pipeline pip_id, void* user_data); + void (*fail_pass)(sg_pass pass_id, void* user_data); + void (*push_debug_group)(const char* name, void* user_data); + void (*pop_debug_group)(void* user_data); + void (*err_buffer_pool_exhausted)(void* user_data); + void (*err_image_pool_exhausted)(void* user_data); + void (*err_shader_pool_exhausted)(void* user_data); + void (*err_pipeline_pool_exhausted)(void* user_data); + void (*err_pass_pool_exhausted)(void* user_data); + void (*err_context_mismatch)(void* user_data); + void (*err_pass_invalid)(void* user_data); + void (*err_draw_invalid)(void* user_data); + void (*err_bindings_invalid)(void* user_data); +} sg_trace_hooks; + +/* + sg_buffer_info + sg_image_info + sg_shader_info + sg_pipeline_info + sg_pass_info + + These structs contain various internal resource attributes which + might be useful for debug-inspection. Please don't rely on the + actual content of those structs too much, as they are quite closely + tied to sokol_gfx.h internals and may change more frequently than + the other public API elements. + + The *_info structs are used as the return values of the following functions: + + sg_query_buffer_info() + sg_query_image_info() + sg_query_shader_info() + sg_query_pipeline_info() + sg_query_pass_info() +*/ +typedef struct sg_slot_info { + sg_resource_state state; /* the current state of this resource slot */ + uint32_t res_id; /* type-neutral resource if (e.g. sg_buffer.id) */ + uint32_t ctx_id; /* the context this resource belongs to */ +} sg_slot_info; + +typedef struct sg_buffer_info { + sg_slot_info slot; /* resource pool slot info */ + uint32_t update_frame_index; /* frame index of last sg_update_buffer() */ + uint32_t append_frame_index; /* frame index of last sg_append_buffer() */ + int append_pos; /* current position in buffer for sg_append_buffer() */ + bool append_overflow; /* is buffer in overflow state (due to sg_append_buffer) */ + int num_slots; /* number of renaming-slots for dynamically updated buffers */ + int active_slot; /* currently active write-slot for dynamically updated buffers */ +} sg_buffer_info; + +typedef struct sg_image_info { + sg_slot_info slot; /* resource pool slot info */ + uint32_t upd_frame_index; /* frame index of last sg_update_image() */ + int num_slots; /* number of renaming-slots for dynamically updated images */ + int active_slot; /* currently active write-slot for dynamically updated images */ +} sg_image_info; + +typedef struct sg_shader_info { + sg_slot_info slot; /* resource pool slot info */ +} sg_shader_info; + +typedef struct sg_pipeline_info { + sg_slot_info slot; /* resource pool slot info */ +} sg_pipeline_info; + +typedef struct sg_pass_info { + sg_slot_info slot; /* resource pool slot info */ +} sg_pass_info; + +/* + sg_log_item + + An enum with a unique item for each log message, warning, error + and validation layer message. +*/ +#define _SG_LOG_ITEMS \ + _SG_LOGITEM_XMACRO(OK, "Ok") \ + _SG_LOGITEM_XMACRO(MALLOC_FAILED, "memory allocation failed") \ + _SG_LOGITEM_XMACRO(GL_TEXTURE_FORMAT_NOT_SUPPORTED, "pixel format not supported for texture (gl)") \ + _SG_LOGITEM_XMACRO(GL_3D_TEXTURES_NOT_SUPPORTED, "3d textures not supported (gl)") \ + _SG_LOGITEM_XMACRO(GL_ARRAY_TEXTURES_NOT_SUPPORTED, "array textures not supported (gl)") \ + _SG_LOGITEM_XMACRO(GL_SHADER_COMPILATION_FAILED, "shader compilation failed (gl)") \ + _SG_LOGITEM_XMACRO(GL_SHADER_LINKING_FAILED, "shader linking failed (gl)") \ + _SG_LOGITEM_XMACRO(GL_VERTEX_ATTRIBUTE_NOT_FOUND_IN_SHADER, "vertex attribute not found in shader (gl)") \ + _SG_LOGITEM_XMACRO(GL_FRAMEBUFFER_INCOMPLETE, "framebuffer completeness check failed (gl)") \ + _SG_LOGITEM_XMACRO(GL_MSAA_FRAMEBUFFER_INCOMPLETE, "completeness check failed for msaa resolve framebuffer (gl)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_BUFFER_FAILED, "CreateBuffer() failed (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_DEPTH_TEXTURE_UNSUPPORTED_PIXEL_FORMAT, "pixel format not supported for depth-stencil texture (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_DEPTH_TEXTURE_FAILED, "CreateTexture2D() failed for depth-stencil texture (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_2D_TEXTURE_UNSUPPORTED_PIXEL_FORMAT, "pixel format not supported for 2d-, cube- or array-texture (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_2D_TEXTURE_FAILED, "CreateTexture2D() failed for 2d-, cube- or array-texture (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_2D_SRV_FAILED, "CreateShaderResourceView() failed for 2d-, cube- or array-texture (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_3D_TEXTURE_UNSUPPORTED_PIXEL_FORMAT, "pixel format not supported for 3D texture (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_3D_TEXTURE_FAILED, "CreateTexture3D() failed (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_3D_SRV_FAILED, "CreateShaderResourceView() failed for 3d texture (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_MSAA_TEXTURE_FAILED, "CreateTexture2D() failed for MSAA render target texture (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_SAMPLER_STATE_FAILED, "CreateSamplerState() failed (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_LOAD_D3DCOMPILER_47_DLL_FAILED, "loading d3dcompiler_47.dll failed (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_SHADER_COMPILATION_FAILED, "shader compilation failed (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_SHADER_COMPILATION_OUTPUT, "") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_CONSTANT_BUFFER_FAILED, "CreateBuffer() failed for uniform constant buffer (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_INPUT_LAYOUT_FAILED, "CreateInputLayout() failed (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_RASTERIZER_STATE_FAILED, "CreateRasterizerState() failed (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_DEPTH_STENCIL_STATE_FAILED, "CreateDepthStencilState() failed (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_BLEND_STATE_FAILED, "CreateBlendState() failed (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_RTV_FAILED, "CreateRenderTargetView() failed (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_CREATE_DSV_FAILED, "CreateDepthStencilView() failed (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_MAP_FOR_UPDATE_BUFFER_FAILED, "Map() failed when updating buffer (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_MAP_FOR_APPEND_BUFFER_FAILED, "Map() failed when appending to buffer (d3d11)") \ + _SG_LOGITEM_XMACRO(D3D11_MAP_FOR_UPDATE_IMAGE_FAILED, "Map() failed when updating image (d3d11)") \ + _SG_LOGITEM_XMACRO(METAL_TEXTURE_FORMAT_NOT_SUPPORTED, "pixel format not supported for texture (metal)") \ + _SG_LOGITEM_XMACRO(METAL_SHADER_COMPILATION_FAILED, "shader compilation failed (metal)") \ + _SG_LOGITEM_XMACRO(METAL_SHADER_CREATION_FAILED, "shader creation failed (metal)") \ + _SG_LOGITEM_XMACRO(METAL_SHADER_COMPILATION_OUTPUT, "") \ + _SG_LOGITEM_XMACRO(METAL_VERTEX_SHADER_ENTRY_NOT_FOUND, "vertex shader entry function not found (metal)") \ + _SG_LOGITEM_XMACRO(METAL_FRAGMENT_SHADER_ENTRY_NOT_FOUND, "fragment shader entry not found (metal)") \ + _SG_LOGITEM_XMACRO(METAL_CREATE_RPS_FAILED, "failed to create render pipeline state (metal)") \ + _SG_LOGITEM_XMACRO(METAL_CREATE_RPS_OUTPUT, "") \ + _SG_LOGITEM_XMACRO(WGPU_MAP_UNIFORM_BUFFER_FAILED, "mapping uniform buffer failed (wgpu)") \ + _SG_LOGITEM_XMACRO(WGPU_STAGING_BUFFER_FULL_COPY_TO_BUFFER, "per frame staging buffer full when copying to buffer (wgpu)") \ + _SG_LOGITEM_XMACRO(WGPU_STAGING_BUFFER_FULL_COPY_TO_TEXTURE, "per frame staging buffer full when copying to texture (wgpu)") \ + _SG_LOGITEM_XMACRO(WGPU_RESET_STATE_CACHE_FIXME, "_sg_wgpu_reset_state_cache: fixme") \ + _SG_LOGITEM_XMACRO(WGPU_ACTIVATE_CONTEXT_FIXME, "_sg_wgpu_activate_context: fixme") \ + _SG_LOGITEM_XMACRO(UNINIT_BUFFER_ACTIVE_CONTEXT_MISMATCH, "active context mismatch in buffer uninit (must be same as for creation)") \ + _SG_LOGITEM_XMACRO(UNINIT_IMAGE_ACTIVE_CONTEXT_MISMATCH, "active context mismatch in image uninit (must be same as for creation)") \ + _SG_LOGITEM_XMACRO(UNINIT_SHADER_ACTIVE_CONTEXT_MISMATCH, "active context mismatch in shader uninit (must be same as for creation)") \ + _SG_LOGITEM_XMACRO(UNINIT_PIPELINE_ACTIVE_CONTEXT_MISMATCH, "active context mismatch in pipeline uninit (must be same as for creation)") \ + _SG_LOGITEM_XMACRO(UNINIT_PASS_ACTIVE_CONTEXT_MISMATCH, "active context mismatch in pass uninit (must be same as for creation)") \ + _SG_LOGITEM_XMACRO(IDENTICAL_COMMIT_LISTENER, "attempting to add identical commit listener") \ + _SG_LOGITEM_XMACRO(COMMIT_LISTENER_ARRAY_FULL, "commit listener array full") \ + _SG_LOGITEM_XMACRO(TRACE_HOOKS_NOT_ENABLED, "sg_install_trace_hooks() called, but SG_TRACE_HOOKS is not defined") \ + _SG_LOGITEM_XMACRO(DEALLOC_BUFFER_INVALID_STATE, "sg_dealloc_buffer(): buffer must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(DEALLOC_IMAGE_INVALID_STATE, "sg_dealloc_image(): image must be in alloc state") \ + _SG_LOGITEM_XMACRO(DEALLOC_SHADER_INVALID_STATE, "sg_dealloc_shader(): shader must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(DEALLOC_PIPELINE_INVALID_STATE, "sg_dealloc_pipeline(): pipeline must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(DEALLOC_PASS_INVALID_STATE, "sg_dealloc_pass(): pass must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(INIT_BUFFER_INVALID_STATE, "sg_init_buffer(): buffer must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(INIT_IMAGE_INVALID_STATE, "sg_init_image(): image must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(INIT_SHADER_INVALID_STATE, "sg_init_shader(): shader must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(INIT_PIPELINE_INVALID_STATE, "sg_init_pipeline(): pipeline must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(INIT_PASS_INVALID_STATE, "sg_init_pass(): pass must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(UNINIT_BUFFER_INVALID_STATE, "sg_uninit_buffer(): buffer must be in VALID or FAILED state") \ + _SG_LOGITEM_XMACRO(UNINIT_IMAGE_INVALID_STATE, "sg_uninit_image(): image must be in VALID or FAILED state") \ + _SG_LOGITEM_XMACRO(UNINIT_SHADER_INVALID_STATE, "sg_uninit_shader(): shader must be in VALID or FAILED state") \ + _SG_LOGITEM_XMACRO(UNINIT_PIPELINE_INVALID_STATE, "sg_uninit_pipeline(): pipeline must be in VALID or FAILED state") \ + _SG_LOGITEM_XMACRO(UNINIT_PASS_INVALID_STATE, "sg_uninit_pass(): pass must be in VALID or FAILED state") \ + _SG_LOGITEM_XMACRO(FAIL_BUFFER_INVALID_STATE, "sg_fail_buffer(): buffer must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(FAIL_IMAGE_INVALID_STATE, "sg_fail_image(): image must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(FAIL_SHADER_INVALID_STATE, "sg_fail_shader(): shader must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(FAIL_PIPELINE_INVALID_STATE, "sg_fail_pipeline(): pipeline must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(FAIL_PASS_INVALID_STATE, "sg_fail_pass(): pass must be in ALLOC state") \ + _SG_LOGITEM_XMACRO(BUFFER_POOL_EXHAUSTED, "buffer pool exhausted") \ + _SG_LOGITEM_XMACRO(IMAGE_POOL_EXHAUSTED, "image pool exhausted") \ + _SG_LOGITEM_XMACRO(SHADER_POOL_EXHAUSTED, "shader pool exhausted") \ + _SG_LOGITEM_XMACRO(PIPELINE_POOL_EXHAUSTED, "pipeline pool exhausted") \ + _SG_LOGITEM_XMACRO(PASS_POOL_EXHAUSTED, "pass pool exhausted") \ + _SG_LOGITEM_XMACRO(DRAW_WITHOUT_BINDINGS, "attempting to draw without resource bindings") \ + _SG_LOGITEM_XMACRO(VALIDATE_BUFFERDESC_CANARY, "sg_buffer_desc not initialized") \ + _SG_LOGITEM_XMACRO(VALIDATE_BUFFERDESC_SIZE, "sg_buffer_desc.size cannot be 0") \ + _SG_LOGITEM_XMACRO(VALIDATE_BUFFERDESC_DATA, "immutable buffers must be initialized with data (sg_buffer_desc.data.ptr and sg_buffer_desc.data.size)") \ + _SG_LOGITEM_XMACRO(VALIDATE_BUFFERDESC_DATA_SIZE, "immutable buffer data size differs from buffer size") \ + _SG_LOGITEM_XMACRO(VALIDATE_BUFFERDESC_NO_DATA, "dynamic/stream usage buffers cannot be initialized with data") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDATA_NODATA, "sg_image_data: no data (.ptr and/or .size is zero)") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDATA_DATA_SIZE, "sg_image_data: data size doesn't match expected surface size") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_CANARY, "sg_image_desc not initialized") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_WIDTH, "sg_image_desc.width must be > 0") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_HEIGHT, "sg_image_desc.height must be > 0") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_RT_PIXELFORMAT, "invalid pixel format for render-target image") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_NONRT_PIXELFORMAT, "invalid pixel format for non-render-target image") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_MSAA_BUT_NO_RT, "non-render-target images cannot be multisampled") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_NO_MSAA_RT_SUPPORT, "MSAA not supported for this pixel format") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_RT_IMMUTABLE, "render target images must be SG_USAGE_IMMUTABLE") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_RT_NO_DATA, "render target images cannot be initialized with data") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_INJECTED_NO_DATA, "images with injected textures cannot be initialized with data") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_DYNAMIC_NO_DATA, "dynamic/stream images cannot be initialized with data") \ + _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_COMPRESSED_IMMUTABLE, "compressed images must be immutable") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_CANARY, "sg_shader_desc not initialized") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_SOURCE, "shader source code required") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_BYTECODE, "shader byte code required") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_SOURCE_OR_BYTECODE, "shader source or byte code required") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_NO_BYTECODE_SIZE, "shader byte code length (in bytes) required") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_NO_CONT_UBS, "shader uniform blocks must occupy continuous slots") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_NO_CONT_UB_MEMBERS, "uniform block members must occupy continuous slots") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_NO_UB_MEMBERS, "GL backend requires uniform block member declarations") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_UB_MEMBER_NAME, "uniform block member name missing") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_UB_SIZE_MISMATCH, "size of uniform block members doesn't match uniform block size") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_UB_ARRAY_COUNT, "uniform array count must be >= 1") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_UB_STD140_ARRAY_TYPE, "uniform arrays only allowed for FLOAT4, INT4, MAT4 in std140 layout") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_NO_CONT_IMGS, "shader images must occupy continuous slots") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_IMG_NAME, "GL backend requires uniform block member names") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_ATTR_SEMANTICS, "D3D11 backend requires vertex attribute semantics") \ + _SG_LOGITEM_XMACRO(VALIDATE_SHADERDESC_ATTR_STRING_TOO_LONG, "vertex attribute name/semantic string too long (max len 16)") \ + _SG_LOGITEM_XMACRO(VALIDATE_PIPELINEDESC_CANARY, "sg_pipeline_desc not initialized") \ + _SG_LOGITEM_XMACRO(VALIDATE_PIPELINEDESC_SHADER, "sg_pipeline_desc.shader missing or invalid") \ + _SG_LOGITEM_XMACRO(VALIDATE_PIPELINEDESC_NO_ATTRS, "sg_pipeline_desc.layout.attrs is empty or not continuous") \ + _SG_LOGITEM_XMACRO(VALIDATE_PIPELINEDESC_LAYOUT_STRIDE4, "sg_pipeline_desc.layout.buffers[].stride must be multiple of 4") \ + _SG_LOGITEM_XMACRO(VALIDATE_PIPELINEDESC_ATTR_SEMANTICS, "D3D11 missing vertex attribute semantics in shader") \ + _SG_LOGITEM_XMACRO(VALIDATE_PASSDESC_CANARY, "sg_pass_desc not initialized") \ + _SG_LOGITEM_XMACRO(VALIDATE_PASSDESC_NO_COLOR_ATTS, "sg_pass_desc.color_attachments[0] must be valid") \ + _SG_LOGITEM_XMACRO(VALIDATE_PASSDESC_NO_CONT_COLOR_ATTS, "color attachments must occupy continuous slots") \ + _SG_LOGITEM_XMACRO(VALIDATE_PASSDESC_IMAGE, "pass attachment image is not valid") \ + _SG_LOGITEM_XMACRO(VALIDATE_PASSDESC_MIPLEVEL, "pass attachment mip level is bigger than image has mipmaps") \ + _SG_LOGITEM_XMACRO(VALIDATE_PASSDESC_FACE, "pass attachment image is cubemap, but face index is too big") \ + _SG_LOGITEM_XMACRO(VALIDATE_PASSDESC_LAYER, "pass attachment image is array texture, but layer index is too big") \ + _SG_LOGITEM_XMACRO(VALIDATE_PASSDESC_SLICE, "pass attachment image is 3d texture, but slice value is too big") \ + _SG_LOGITEM_XMACRO(VALIDATE_PASSDESC_IMAGE_NO_RT, "pass attachment image must be render targets") \ + _SG_LOGITEM_XMACRO(VALIDATE_PASSDESC_COLOR_INV_PIXELFORMAT, "pass color-attachment images must have a renderable pixel format") \ + _SG_LOGITEM_XMACRO(VALIDATE_PASSDESC_DEPTH_INV_PIXELFORMAT, "pass depth-attachment image must have depth pixel format") \ + _SG_LOGITEM_XMACRO(VALIDATE_PASSDESC_IMAGE_SIZES, "all pass attachments must have the same size") \ + _SG_LOGITEM_XMACRO(VALIDATE_PASSDESC_IMAGE_SAMPLE_COUNTS, "all pass attachments must have the same sample count") \ + _SG_LOGITEM_XMACRO(VALIDATE_BEGINPASS_PASS, "sg_begin_pass: pass must be valid") \ + _SG_LOGITEM_XMACRO(VALIDATE_BEGINPASS_IMAGE, "sg_begin_pass: one or more attachment images are not valid") \ + _SG_LOGITEM_XMACRO(VALIDATE_APIP_PIPELINE_VALID_ID, "sg_apply_pipeline: invalid pipeline id provided") \ + _SG_LOGITEM_XMACRO(VALIDATE_APIP_PIPELINE_EXISTS, "sg_apply_pipeline: pipeline object no longer alive") \ + _SG_LOGITEM_XMACRO(VALIDATE_APIP_PIPELINE_VALID, "sg_apply_pipeline: pipeline object not in valid state") \ + _SG_LOGITEM_XMACRO(VALIDATE_APIP_SHADER_EXISTS, "sg_apply_pipeline: shader object no longer alive") \ + _SG_LOGITEM_XMACRO(VALIDATE_APIP_SHADER_VALID, "sg_apply_pipeline: shader object not in valid state") \ + _SG_LOGITEM_XMACRO(VALIDATE_APIP_ATT_COUNT, "sg_apply_pipeline: number of pipeline color attachments doesn't match number of pass color attachments") \ + _SG_LOGITEM_XMACRO(VALIDATE_APIP_COLOR_FORMAT, "sg_apply_pipeline: pipeline color attachment pixel format doesn't match pass color attachment pixel format") \ + _SG_LOGITEM_XMACRO(VALIDATE_APIP_DEPTH_FORMAT, "sg_apply_pipeline: pipeline depth pixel_format doesn't match pass depth attachment pixel format") \ + _SG_LOGITEM_XMACRO(VALIDATE_APIP_SAMPLE_COUNT, "sg_apply_pipeline: pipeline MSAA sample count doesn't match render pass attachment sample count") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_PIPELINE, "sg_apply_bindings: must be called after sg_apply_pipeline") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_PIPELINE_EXISTS, "sg_apply_bindings: currently applied pipeline object no longer alive") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_PIPELINE_VALID, "sg_apply_bindings: currently applied pipeline object not in valid state") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_VBS, "sg_apply_bindings: number of vertex buffers doesn't match number of pipeline vertex layouts") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_VB_EXISTS, "sg_apply_bindings: vertex buffer no longer alive") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_VB_TYPE, "sg_apply_bindings: buffer in vertex buffer slot is not a SG_BUFFERTYPE_VERTEXBUFFER") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_VB_OVERFLOW, "sg_apply_bindings: buffer in vertex buffer slot is overflown") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_NO_IB, "sg_apply_bindings: pipeline object defines indexed rendering, but no index buffer provided") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_IB, "sg_apply_bindings: pipeline object defines non-indexed rendering, but index buffer provided") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_IB_EXISTS, "sg_apply_bindings: index buffer no longer alive") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_IB_TYPE, "sg_apply_bindings: buffer in index buffer slot is not a SG_BUFFERTYPE_INDEXBUFFER") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_IB_OVERFLOW, "sg_apply_bindings: buffer in index buffer slot is overflown") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_VS_IMGS, "sg_apply_bindings: vertex shader image count doesn't match sg_shader_desc") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_VS_IMG_EXISTS, "sg_apply_bindings: vertex shader image no longer alive") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_VS_IMG_TYPES, "sg_apply_bindings: one or more vertex shader image types don't match sg_shader_desc") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_FS_IMGS, "sg_apply_bindings: fragment shader image count doesn't match sg_shader_desc") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_FS_IMG_EXISTS, "sg_apply_bindings: fragment shader image no longer alive") \ + _SG_LOGITEM_XMACRO(VALIDATE_ABND_FS_IMG_TYPES, "sg_apply_bindings: one or more fragment shader image types don't match sg_shader_desc") \ + _SG_LOGITEM_XMACRO(VALIDATE_AUB_NO_PIPELINE, "sg_apply_uniforms: must be called after sg_apply_pipeline()") \ + _SG_LOGITEM_XMACRO(VALIDATE_AUB_NO_UB_AT_SLOT, "sg_apply_uniforms: no uniform block declaration at this shader stage UB slot") \ + _SG_LOGITEM_XMACRO(VALIDATE_AUB_SIZE, "sg_apply_uniforms: data size exceeds declared uniform block size") \ + _SG_LOGITEM_XMACRO(VALIDATE_UPDATEBUF_USAGE, "sg_update_buffer: cannot update immutable buffer") \ + _SG_LOGITEM_XMACRO(VALIDATE_UPDATEBUF_SIZE, "sg_update_buffer: update size is bigger than buffer size") \ + _SG_LOGITEM_XMACRO(VALIDATE_UPDATEBUF_ONCE, "sg_update_buffer: only one update allowed per buffer and frame") \ + _SG_LOGITEM_XMACRO(VALIDATE_UPDATEBUF_APPEND, "sg_update_buffer: cannot call sg_update_buffer and sg_append_buffer in same frame") \ + _SG_LOGITEM_XMACRO(VALIDATE_APPENDBUF_USAGE, "sg_append_buffer: cannot append to immutable buffer") \ + _SG_LOGITEM_XMACRO(VALIDATE_APPENDBUF_SIZE, "sg_append_buffer: overall appended size is bigger than buffer size") \ + _SG_LOGITEM_XMACRO(VALIDATE_APPENDBUF_UPDATE, "sg_append_buffer: cannot call sg_append_buffer and sg_update_buffer in same frame") \ + _SG_LOGITEM_XMACRO(VALIDATE_UPDIMG_USAGE, "sg_update_image: cannot update immutable image") \ + _SG_LOGITEM_XMACRO(VALIDATE_UPDIMG_ONCE, "sg_update_image: only one update allowed per image and frame") \ + _SG_LOGITEM_XMACRO(VALIDATION_FAILED, "validation layer checks failed") \ + +#define _SG_LOGITEM_XMACRO(item,msg) SG_LOGITEM_##item, +typedef enum sg_log_item { + _SG_LOG_ITEMS +} sg_log_item; +#undef _SG_LOGITEM_XMACRO + +/* + sg_desc + + The sg_desc struct contains configuration values for sokol_gfx, + it is used as parameter to the sg_setup() call. + + NOTE that all callback function pointers come in two versions, one without + a userdata pointer, and one with a userdata pointer. You would + either initialize one or the other depending on whether you pass data + to your callbacks. + + FIXME: explain the various configuration options + + The default configuration is: + + .buffer_pool_size 128 + .image_pool_size 128 + .shader_pool_size 32 + .pipeline_pool_size 64 + .pass_pool_size 16 + .context_pool_size 16 + .uniform_buffer_size 4 MB (4*1024*1024) + .staging_buffer_size 8 MB (8*1024*1024) + .sampler_cache_size 64 + .max_commit_listeners 1024 + .disable_validation false + + .allocator.alloc 0 (in this case, malloc() will be called) + .allocator.free 0 (in this case, free() will be called) + .allocator.user_data 0 + + .context.color_format: default value depends on selected backend: + all GL backends: SG_PIXELFORMAT_RGBA8 + Metal and D3D11: SG_PIXELFORMAT_BGRA8 + WGPU: *no default* (must be queried from WGPU swapchain) + .context.depth_format SG_PIXELFORMAT_DEPTH_STENCIL + .context.sample_count 1 + + Metal specific: + (NOTE: All Objective-C object references are transferred through + a bridged (const void*) to sokol_gfx, which will use a unretained + bridged cast (__bridged id) to retrieve the Objective-C + references back. Since the bridge cast is unretained, the caller + must hold a strong reference to the Objective-C object for the + duration of the sokol_gfx call! + + .context.metal.device + a pointer to the MTLDevice object + .context.metal.renderpass_descriptor_cb + .context.metal_renderpass_descriptor_userdata_cb + A C callback function to obtain the MTLRenderPassDescriptor for the + current frame when rendering to the default framebuffer, will be called + in sg_begin_default_pass(). + .context.metal.drawable_cb + .context.metal.drawable_userdata_cb + a C callback function to obtain a MTLDrawable for the current + frame when rendering to the default framebuffer, will be called in + sg_end_pass() of the default pass + .context.metal.user_data + optional user data pointer passed to the userdata versions of + callback functions + + D3D11 specific: + .context.d3d11.device + a pointer to the ID3D11Device object, this must have been created + before sg_setup() is called + .context.d3d11.device_context + a pointer to the ID3D11DeviceContext object + .context.d3d11.render_target_view_cb + .context.d3d11.render_target_view_userdata_cb + a C callback function to obtain a pointer to the current + ID3D11RenderTargetView object of the default framebuffer, + this function will be called in sg_begin_pass() when rendering + to the default framebuffer + .context.d3d11.depth_stencil_view_cb + .context.d3d11.depth_stencil_view_userdata_cb + a C callback function to obtain a pointer to the current + ID3D11DepthStencilView object of the default framebuffer, + this function will be called in sg_begin_pass() when rendering + to the default framebuffer + .context.d3d11.user_data + optional user data pointer passed to the userdata versions of + callback functions + + WebGPU specific: + .context.wgpu.device + a WGPUDevice handle + .context.wgpu.render_format + WGPUTextureFormat of the swap chain surface + .context.wgpu.render_view_cb + .context.wgpu.render_view_userdata_cb + callback to get the current WGPUTextureView of the swapchain's + rendering attachment (may be an MSAA surface) + .context.wgpu.resolve_view_cb + .context.wgpu.resolve_view_userdata_cb + callback to get the current WGPUTextureView of the swapchain's + MSAA-resolve-target surface, must return 0 if not MSAA rendering + .context.wgpu.depth_stencil_view_cb + .context.wgpu.depth_stencil_view_userdata_cb + callback to get current default-pass depth-stencil-surface WGPUTextureView + the pixel format of the default WGPUTextureView must be WGPUTextureFormat_Depth24Plus8 + .context.wgpu.user_data + optional user data pointer passed to the userdata versions of + callback functions + + When using sokol_gfx.h and sokol_app.h together, consider using the + helper function sapp_sgcontext() in the sokol_glue.h header to + initialize the sg_desc.context nested struct. sapp_sgcontext() returns + a completely initialized sg_context_desc struct with information + provided by sokol_app.h. +*/ +typedef struct sg_metal_context_desc { + const void* device; + const void* (*renderpass_descriptor_cb)(void); + const void* (*renderpass_descriptor_userdata_cb)(void*); + const void* (*drawable_cb)(void); + const void* (*drawable_userdata_cb)(void*); + void* user_data; +} sg_metal_context_desc; + +typedef struct sg_d3d11_context_desc { + const void* device; + const void* device_context; + const void* (*render_target_view_cb)(void); + const void* (*render_target_view_userdata_cb)(void*); + const void* (*depth_stencil_view_cb)(void); + const void* (*depth_stencil_view_userdata_cb)(void*); + void* user_data; +} sg_d3d11_context_desc; + +typedef struct sg_wgpu_context_desc { + const void* device; /* WGPUDevice */ + const void* (*render_view_cb)(void); /* returns WGPUTextureView */ + const void* (*render_view_userdata_cb)(void*); + const void* (*resolve_view_cb)(void); /* returns WGPUTextureView */ + const void* (*resolve_view_userdata_cb)(void*); + const void* (*depth_stencil_view_cb)(void); /* returns WGPUTextureView, must be WGPUTextureFormat_Depth24Plus8 */ + const void* (*depth_stencil_view_userdata_cb)(void*); + void* user_data; +} sg_wgpu_context_desc; + +typedef struct sg_context_desc { + sg_pixel_format color_format; + sg_pixel_format depth_format; + int sample_count; + sg_metal_context_desc metal; + sg_d3d11_context_desc d3d11; + sg_wgpu_context_desc wgpu; +} sg_context_desc; + +/* + sg_commit_listener + + Used with function sg_add_commit_listener() to add a callback + which will be called in sg_commit(). This is useful for libraries + building on top of sokol-gfx to be notified about when a frame + ends (instead of having to guess, or add a manual 'new-frame' + function. +*/ +typedef struct sg_commit_listener { + void (*func)(void* user_data); + void* user_data; +} sg_commit_listener; + +/* + sg_allocator + + Used in sg_desc to provide custom memory-alloc and -free functions + to sokol_gfx.h. If memory management should be overridden, both the + alloc and free function must be provided (e.g. it's not valid to + override one function but not the other). +*/ +typedef struct sg_allocator { + void* (*alloc)(size_t size, void* user_data); + void (*free)(void* ptr, void* user_data); + void* user_data; +} sg_allocator; + +/* + sg_logger + + Used in sg_desc to provide a logging function. Please be aware + that without logging function, sokol-gfx will be completely + silent, e.g. it will not report errors, warnings and + validation layer messages. For maximum error verbosity, + compile in debug mode (e.g. NDEBUG *not* defined) and install + a logger (for instance the standard logging function from sokol_log.h). +*/ +typedef struct sg_logger { + void (*func)( + const char* tag, // always "sg" + uint32_t log_level, // 0=panic, 1=error, 2=warning, 3=info + uint32_t log_item_id, // SG_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_gfx.h + const char* filename_or_null, // source filename, may be nullptr in release mode + void* user_data); + void* user_data; +} sg_logger; + +typedef struct sg_desc { + uint32_t _start_canary; + int buffer_pool_size; + int image_pool_size; + int shader_pool_size; + int pipeline_pool_size; + int pass_pool_size; + int context_pool_size; + int uniform_buffer_size; + int staging_buffer_size; + int sampler_cache_size; + int max_commit_listeners; + bool disable_validation; // disable validation layer even in debug mode, useful for tests + sg_allocator allocator; + sg_logger logger; // optional log function override + sg_context_desc context; + uint32_t _end_canary; +} sg_desc; + +/* setup and misc functions */ +SOKOL_GFX_API_DECL void sg_setup(const sg_desc* desc); +SOKOL_GFX_API_DECL void sg_shutdown(void); +SOKOL_GFX_API_DECL bool sg_isvalid(void); +SOKOL_GFX_API_DECL void sg_reset_state_cache(void); +SOKOL_GFX_API_DECL sg_trace_hooks sg_install_trace_hooks(const sg_trace_hooks* trace_hooks); +SOKOL_GFX_API_DECL void sg_push_debug_group(const char* name); +SOKOL_GFX_API_DECL void sg_pop_debug_group(void); +SOKOL_GFX_API_DECL bool sg_add_commit_listener(sg_commit_listener listener); +SOKOL_GFX_API_DECL bool sg_remove_commit_listener(sg_commit_listener listener); + +/* resource creation, destruction and updating */ +SOKOL_GFX_API_DECL sg_buffer sg_make_buffer(const sg_buffer_desc* desc); +SOKOL_GFX_API_DECL sg_image sg_make_image(const sg_image_desc* desc); +SOKOL_GFX_API_DECL sg_shader sg_make_shader(const sg_shader_desc* desc); +SOKOL_GFX_API_DECL sg_pipeline sg_make_pipeline(const sg_pipeline_desc* desc); +SOKOL_GFX_API_DECL sg_pass sg_make_pass(const sg_pass_desc* desc); +SOKOL_GFX_API_DECL void sg_destroy_buffer(sg_buffer buf); +SOKOL_GFX_API_DECL void sg_destroy_image(sg_image img); +SOKOL_GFX_API_DECL void sg_destroy_shader(sg_shader shd); +SOKOL_GFX_API_DECL void sg_destroy_pipeline(sg_pipeline pip); +SOKOL_GFX_API_DECL void sg_destroy_pass(sg_pass pass); +SOKOL_GFX_API_DECL void sg_update_buffer(sg_buffer buf, const sg_range* data); +SOKOL_GFX_API_DECL void sg_update_image(sg_image img, const sg_image_data* data); +SOKOL_GFX_API_DECL int sg_append_buffer(sg_buffer buf, const sg_range* data); +SOKOL_GFX_API_DECL bool sg_query_buffer_overflow(sg_buffer buf); +SOKOL_GFX_API_DECL bool sg_query_buffer_will_overflow(sg_buffer buf, size_t size); + +/* rendering functions */ +SOKOL_GFX_API_DECL void sg_begin_default_pass(const sg_pass_action* pass_action, int width, int height); +SOKOL_GFX_API_DECL void sg_begin_default_passf(const sg_pass_action* pass_action, float width, float height); +SOKOL_GFX_API_DECL void sg_begin_pass(sg_pass pass, const sg_pass_action* pass_action); +SOKOL_GFX_API_DECL void sg_apply_viewport(int x, int y, int width, int height, bool origin_top_left); +SOKOL_GFX_API_DECL void sg_apply_viewportf(float x, float y, float width, float height, bool origin_top_left); +SOKOL_GFX_API_DECL void sg_apply_scissor_rect(int x, int y, int width, int height, bool origin_top_left); +SOKOL_GFX_API_DECL void sg_apply_scissor_rectf(float x, float y, float width, float height, bool origin_top_left); +SOKOL_GFX_API_DECL void sg_apply_pipeline(sg_pipeline pip); +SOKOL_GFX_API_DECL void sg_apply_bindings(const sg_bindings* bindings); +SOKOL_GFX_API_DECL void sg_apply_uniforms(sg_shader_stage stage, int ub_index, const sg_range* data); +SOKOL_GFX_API_DECL void sg_draw(int base_element, int num_elements, int num_instances); +SOKOL_GFX_API_DECL void sg_end_pass(void); +SOKOL_GFX_API_DECL void sg_commit(void); + +/* getting information */ +SOKOL_GFX_API_DECL sg_desc sg_query_desc(void); +SOKOL_GFX_API_DECL sg_backend sg_query_backend(void); +SOKOL_GFX_API_DECL sg_features sg_query_features(void); +SOKOL_GFX_API_DECL sg_limits sg_query_limits(void); +SOKOL_GFX_API_DECL sg_pixelformat_info sg_query_pixelformat(sg_pixel_format fmt); +/* get current state of a resource (INITIAL, ALLOC, VALID, FAILED, INVALID) */ +SOKOL_GFX_API_DECL sg_resource_state sg_query_buffer_state(sg_buffer buf); +SOKOL_GFX_API_DECL sg_resource_state sg_query_image_state(sg_image img); +SOKOL_GFX_API_DECL sg_resource_state sg_query_shader_state(sg_shader shd); +SOKOL_GFX_API_DECL sg_resource_state sg_query_pipeline_state(sg_pipeline pip); +SOKOL_GFX_API_DECL sg_resource_state sg_query_pass_state(sg_pass pass); +/* get runtime information about a resource */ +SOKOL_GFX_API_DECL sg_buffer_info sg_query_buffer_info(sg_buffer buf); +SOKOL_GFX_API_DECL sg_image_info sg_query_image_info(sg_image img); +SOKOL_GFX_API_DECL sg_shader_info sg_query_shader_info(sg_shader shd); +SOKOL_GFX_API_DECL sg_pipeline_info sg_query_pipeline_info(sg_pipeline pip); +SOKOL_GFX_API_DECL sg_pass_info sg_query_pass_info(sg_pass pass); +/* get desc structs matching a specific resource (NOTE that not all creation attributes may be provided) */ +SOKOL_GFX_API_DECL sg_buffer_desc sg_query_buffer_desc(sg_buffer buf); +SOKOL_GFX_API_DECL sg_image_desc sg_query_image_desc(sg_image img); +SOKOL_GFX_API_DECL sg_shader_desc sg_query_shader_desc(sg_shader shd); +SOKOL_GFX_API_DECL sg_pipeline_desc sg_query_pipeline_desc(sg_pipeline pip); +SOKOL_GFX_API_DECL sg_pass_desc sg_query_pass_desc(sg_pass pass); +/* get resource creation desc struct with their default values replaced */ +SOKOL_GFX_API_DECL sg_buffer_desc sg_query_buffer_defaults(const sg_buffer_desc* desc); +SOKOL_GFX_API_DECL sg_image_desc sg_query_image_defaults(const sg_image_desc* desc); +SOKOL_GFX_API_DECL sg_shader_desc sg_query_shader_defaults(const sg_shader_desc* desc); +SOKOL_GFX_API_DECL sg_pipeline_desc sg_query_pipeline_defaults(const sg_pipeline_desc* desc); +SOKOL_GFX_API_DECL sg_pass_desc sg_query_pass_defaults(const sg_pass_desc* desc); + +/* separate resource allocation and initialization (for async setup) */ +SOKOL_GFX_API_DECL sg_buffer sg_alloc_buffer(void); +SOKOL_GFX_API_DECL sg_image sg_alloc_image(void); +SOKOL_GFX_API_DECL sg_shader sg_alloc_shader(void); +SOKOL_GFX_API_DECL sg_pipeline sg_alloc_pipeline(void); +SOKOL_GFX_API_DECL sg_pass sg_alloc_pass(void); +SOKOL_GFX_API_DECL void sg_dealloc_buffer(sg_buffer buf); +SOKOL_GFX_API_DECL void sg_dealloc_image(sg_image img); +SOKOL_GFX_API_DECL void sg_dealloc_shader(sg_shader shd); +SOKOL_GFX_API_DECL void sg_dealloc_pipeline(sg_pipeline pip); +SOKOL_GFX_API_DECL void sg_dealloc_pass(sg_pass pass); +SOKOL_GFX_API_DECL void sg_init_buffer(sg_buffer buf, const sg_buffer_desc* desc); +SOKOL_GFX_API_DECL void sg_init_image(sg_image img, const sg_image_desc* desc); +SOKOL_GFX_API_DECL void sg_init_shader(sg_shader shd, const sg_shader_desc* desc); +SOKOL_GFX_API_DECL void sg_init_pipeline(sg_pipeline pip, const sg_pipeline_desc* desc); +SOKOL_GFX_API_DECL void sg_init_pass(sg_pass pass, const sg_pass_desc* desc); +SOKOL_GFX_API_DECL void sg_uninit_buffer(sg_buffer buf); +SOKOL_GFX_API_DECL void sg_uninit_image(sg_image img); +SOKOL_GFX_API_DECL void sg_uninit_shader(sg_shader shd); +SOKOL_GFX_API_DECL void sg_uninit_pipeline(sg_pipeline pip); +SOKOL_GFX_API_DECL void sg_uninit_pass(sg_pass pass); +SOKOL_GFX_API_DECL void sg_fail_buffer(sg_buffer buf); +SOKOL_GFX_API_DECL void sg_fail_image(sg_image img); +SOKOL_GFX_API_DECL void sg_fail_shader(sg_shader shd); +SOKOL_GFX_API_DECL void sg_fail_pipeline(sg_pipeline pip); +SOKOL_GFX_API_DECL void sg_fail_pass(sg_pass pass); + +/* rendering contexts (optional) */ +SOKOL_GFX_API_DECL sg_context sg_setup_context(void); +SOKOL_GFX_API_DECL void sg_activate_context(sg_context ctx_id); +SOKOL_GFX_API_DECL void sg_discard_context(sg_context ctx_id); + +/* Backend-specific helper functions, these may come in handy for mixing + sokol-gfx rendering with 'native backend' rendering functions. + + This group of functions will be expanded as needed. +*/ + +/* D3D11: return ID3D11Device */ +SOKOL_GFX_API_DECL const void* sg_d3d11_device(void); + +/* Metal: return __bridge-casted MTLDevice */ +SOKOL_GFX_API_DECL const void* sg_mtl_device(void); + +/* Metal: return __bridge-casted MTLRenderCommandEncoder in current pass (or zero if outside pass) */ +SOKOL_GFX_API_DECL const void* sg_mtl_render_command_encoder(void); + +#ifdef __cplusplus +} /* extern "C" */ + +/* reference-based equivalents for c++ */ +inline void sg_setup(const sg_desc& desc) { return sg_setup(&desc); } + +inline sg_buffer sg_make_buffer(const sg_buffer_desc& desc) { return sg_make_buffer(&desc); } +inline sg_image sg_make_image(const sg_image_desc& desc) { return sg_make_image(&desc); } +inline sg_shader sg_make_shader(const sg_shader_desc& desc) { return sg_make_shader(&desc); } +inline sg_pipeline sg_make_pipeline(const sg_pipeline_desc& desc) { return sg_make_pipeline(&desc); } +inline sg_pass sg_make_pass(const sg_pass_desc& desc) { return sg_make_pass(&desc); } +inline void sg_update_image(sg_image img, const sg_image_data& data) { return sg_update_image(img, &data); } + +inline void sg_begin_default_pass(const sg_pass_action& pass_action, int width, int height) { return sg_begin_default_pass(&pass_action, width, height); } +inline void sg_begin_default_passf(const sg_pass_action& pass_action, float width, float height) { return sg_begin_default_passf(&pass_action, width, height); } +inline void sg_begin_pass(sg_pass pass, const sg_pass_action& pass_action) { return sg_begin_pass(pass, &pass_action); } +inline void sg_apply_bindings(const sg_bindings& bindings) { return sg_apply_bindings(&bindings); } +inline void sg_apply_uniforms(sg_shader_stage stage, int ub_index, const sg_range& data) { return sg_apply_uniforms(stage, ub_index, &data); } + +inline sg_buffer_desc sg_query_buffer_defaults(const sg_buffer_desc& desc) { return sg_query_buffer_defaults(&desc); } +inline sg_image_desc sg_query_image_defaults(const sg_image_desc& desc) { return sg_query_image_defaults(&desc); } +inline sg_shader_desc sg_query_shader_defaults(const sg_shader_desc& desc) { return sg_query_shader_defaults(&desc); } +inline sg_pipeline_desc sg_query_pipeline_defaults(const sg_pipeline_desc& desc) { return sg_query_pipeline_defaults(&desc); } +inline sg_pass_desc sg_query_pass_defaults(const sg_pass_desc& desc) { return sg_query_pass_defaults(&desc); } + +inline void sg_init_buffer(sg_buffer buf_id, const sg_buffer_desc& desc) { return sg_init_buffer(buf_id, &desc); } +inline void sg_init_image(sg_image img_id, const sg_image_desc& desc) { return sg_init_image(img_id, &desc); } +inline void sg_init_shader(sg_shader shd_id, const sg_shader_desc& desc) { return sg_init_shader(shd_id, &desc); } +inline void sg_init_pipeline(sg_pipeline pip_id, const sg_pipeline_desc& desc) { return sg_init_pipeline(pip_id, &desc); } +inline void sg_init_pass(sg_pass pass_id, const sg_pass_desc& desc) { return sg_init_pass(pass_id, &desc); } + +inline void sg_update_buffer(sg_buffer buf_id, const sg_range& data) { return sg_update_buffer(buf_id, &data); } +inline int sg_append_buffer(sg_buffer buf_id, const sg_range& data) { return sg_append_buffer(buf_id, &data); } +#endif +#endif // SOKOL_GFX_INCLUDED + +// ██ ███ ███ ██████ ██ ███████ ███ ███ ███████ ███ ██ ████████ █████ ████████ ██ ██████ ███ ██ +// ██ ████ ████ ██ ██ ██ ██ ████ ████ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ +// ██ ██ ████ ██ ██████ ██ █████ ██ ████ ██ █████ ██ ██ ██ ██ ███████ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ███████ ███████ ██ ██ ███████ ██ ████ ██ ██ ██ ██ ██ ██████ ██ ████ +// +// >>implementation +#ifdef SOKOL_GFX_IMPL +#define SOKOL_GFX_IMPL_INCLUDED (1) + +#if !(defined(SOKOL_GLCORE33)||defined(SOKOL_GLES3)||defined(SOKOL_D3D11)||defined(SOKOL_METAL)||defined(SOKOL_WGPU)||defined(SOKOL_DUMMY_BACKEND)) +#error "Please select a backend with SOKOL_GLCORE33, SOKOL_GLES3, SOKOL_D3D11, SOKOL_METAL, SOKOL_WGPU or SOKOL_DUMMY_BACKEND" +#endif +#if defined(SOKOL_MALLOC) || defined(SOKOL_CALLOC) || defined(SOKOL_FREE) +#error "SOKOL_MALLOC/CALLOC/FREE macros are no longer supported, please use sg_desc.allocator to override memory allocation functions" +#endif + +#include // malloc, free +#include // memset +#include // FLT_MAX + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_DEBUG + #ifndef NDEBUG + #define SOKOL_DEBUG + #endif +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif +#ifndef SOKOL_UNREACHABLE + #define SOKOL_UNREACHABLE SOKOL_ASSERT(false) +#endif + +#ifndef _SOKOL_PRIVATE + #if defined(__GNUC__) || defined(__clang__) + #define _SOKOL_PRIVATE __attribute__((unused)) static + #else + #define _SOKOL_PRIVATE static + #endif +#endif + +#ifndef _SOKOL_UNUSED + #define _SOKOL_UNUSED(x) (void)(x) +#endif + +#if defined(SOKOL_TRACE_HOOKS) +#define _SG_TRACE_ARGS(fn, ...) if (_sg.hooks.fn) { _sg.hooks.fn(__VA_ARGS__, _sg.hooks.user_data); } +#define _SG_TRACE_NOARGS(fn) if (_sg.hooks.fn) { _sg.hooks.fn(_sg.hooks.user_data); } +#else +#define _SG_TRACE_ARGS(fn, ...) +#define _SG_TRACE_NOARGS(fn) +#endif + +/* default clear values */ +#ifndef SG_DEFAULT_CLEAR_RED +#define SG_DEFAULT_CLEAR_RED (0.5f) +#endif +#ifndef SG_DEFAULT_CLEAR_GREEN +#define SG_DEFAULT_CLEAR_GREEN (0.5f) +#endif +#ifndef SG_DEFAULT_CLEAR_BLUE +#define SG_DEFAULT_CLEAR_BLUE (0.5f) +#endif +#ifndef SG_DEFAULT_CLEAR_ALPHA +#define SG_DEFAULT_CLEAR_ALPHA (1.0f) +#endif +#ifndef SG_DEFAULT_CLEAR_DEPTH +#define SG_DEFAULT_CLEAR_DEPTH (1.0f) +#endif +#ifndef SG_DEFAULT_CLEAR_STENCIL +#define SG_DEFAULT_CLEAR_STENCIL (0) +#endif + +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable:4115) /* named type definition in parentheses */ +#pragma warning(disable:4505) /* unreferenced local function has been removed */ +#pragma warning(disable:4201) /* nonstandard extension used: nameless struct/union (needed by d3d11.h) */ +#pragma warning(disable:4054) /* 'type cast': from function pointer */ +#pragma warning(disable:4055) /* 'type cast': from data pointer */ +#endif + +#if defined(SOKOL_D3D11) + #ifndef D3D11_NO_HELPERS + #define D3D11_NO_HELPERS + #endif + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif + #ifndef NOMINMAX + #define NOMINMAX + #endif + #include + #include + #ifdef _MSC_VER + #if (defined(WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)) + #pragma comment (lib, "WindowsApp") + #else + #pragma comment (lib, "kernel32") + #pragma comment (lib, "user32") + #pragma comment (lib, "dxgi") + #pragma comment (lib, "d3d11") + #endif + #endif +#elif defined(SOKOL_METAL) + // see https://clang.llvm.org/docs/LanguageExtensions.html#automatic-reference-counting + #if !defined(__cplusplus) + #if __has_feature(objc_arc) && !__has_feature(objc_arc_fields) + #error "sokol_gfx.h requires __has_feature(objc_arc_field) if ARC is enabled (use a more recent compiler version)" + #endif + #endif + #include + #if defined(TARGET_OS_IPHONE) && !TARGET_OS_IPHONE + #define _SG_TARGET_MACOS (1) + #else + #define _SG_TARGET_IOS (1) + #if defined(TARGET_IPHONE_SIMULATOR) && TARGET_IPHONE_SIMULATOR + #define _SG_TARGET_IOS_SIMULATOR (1) + #endif + #endif + #import +#elif defined(SOKOL_WGPU) + #if defined(__EMSCRIPTEN__) + #include + #else + #include + #endif +#elif defined(SOKOL_GLCORE33) || defined(SOKOL_GLES3) + #define _SOKOL_ANY_GL (1) + + // include platform specific GL headers (or on Win32: use an embedded GL loader) + #if !defined(SOKOL_EXTERNAL_GL_LOADER) + #if defined(_WIN32) + #if defined(SOKOL_GLCORE33) && !defined(SOKOL_EXTERNAL_GL_LOADER) + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif + #ifndef NOMINMAX + #define NOMINMAX + #endif + #include + #define _SOKOL_USE_WIN32_GL_LOADER (1) + #pragma comment (lib, "kernel32") // GetProcAddress() + #endif + #elif defined(__APPLE__) + #include + #ifndef GL_SILENCE_DEPRECATION + #define GL_SILENCE_DEPRECATION + #endif + #if defined(TARGET_OS_IPHONE) && !TARGET_OS_IPHONE + #include + #else + #include + #include + #endif + #elif defined(__EMSCRIPTEN__) || defined(__ANDROID__) + #if defined(SOKOL_GLES3) + #include + #endif + #elif defined(__linux__) || defined(__unix__) + #define GL_GLEXT_PROTOTYPES + #include + #endif + #endif + + // optional GL loader definitions (only on Win32) + #if defined(_SOKOL_USE_WIN32_GL_LOADER) + #define __gl_h_ 1 + #define __gl32_h_ 1 + #define __gl31_h_ 1 + #define __GL_H__ 1 + #define __glext_h_ 1 + #define __GLEXT_H_ 1 + #define __gltypes_h_ 1 + #define __glcorearb_h_ 1 + #define __gl_glcorearb_h_ 1 + #define GL_APIENTRY APIENTRY + + typedef unsigned int GLenum; + typedef unsigned int GLuint; + typedef int GLsizei; + typedef char GLchar; + typedef ptrdiff_t GLintptr; + typedef ptrdiff_t GLsizeiptr; + typedef double GLclampd; + typedef unsigned short GLushort; + typedef unsigned char GLubyte; + typedef unsigned char GLboolean; + typedef uint64_t GLuint64; + typedef double GLdouble; + typedef unsigned short GLhalf; + typedef float GLclampf; + typedef unsigned int GLbitfield; + typedef signed char GLbyte; + typedef short GLshort; + typedef void GLvoid; + typedef int64_t GLint64; + typedef float GLfloat; + typedef int GLint; + #define GL_INT_2_10_10_10_REV 0x8D9F + #define GL_R32F 0x822E + #define GL_PROGRAM_POINT_SIZE 0x8642 + #define GL_DEPTH_ATTACHMENT 0x8D00 + #define GL_DEPTH_STENCIL_ATTACHMENT 0x821A + #define GL_COLOR_ATTACHMENT2 0x8CE2 + #define GL_COLOR_ATTACHMENT0 0x8CE0 + #define GL_R16F 0x822D + #define GL_COLOR_ATTACHMENT22 0x8CF6 + #define GL_DRAW_FRAMEBUFFER 0x8CA9 + #define GL_FRAMEBUFFER_COMPLETE 0x8CD5 + #define GL_NUM_EXTENSIONS 0x821D + #define GL_INFO_LOG_LENGTH 0x8B84 + #define GL_VERTEX_SHADER 0x8B31 + #define GL_INCR 0x1E02 + #define GL_DYNAMIC_DRAW 0x88E8 + #define GL_STATIC_DRAW 0x88E4 + #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 + #define GL_TEXTURE_CUBE_MAP 0x8513 + #define GL_FUNC_SUBTRACT 0x800A + #define GL_FUNC_REVERSE_SUBTRACT 0x800B + #define GL_CONSTANT_COLOR 0x8001 + #define GL_DECR_WRAP 0x8508 + #define GL_R8 0x8229 + #define GL_LINEAR_MIPMAP_LINEAR 0x2703 + #define GL_ELEMENT_ARRAY_BUFFER 0x8893 + #define GL_SHORT 0x1402 + #define GL_DEPTH_TEST 0x0B71 + #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 + #define GL_LINK_STATUS 0x8B82 + #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 + #define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E + #define GL_RGBA16F 0x881A + #define GL_CONSTANT_ALPHA 0x8003 + #define GL_READ_FRAMEBUFFER 0x8CA8 + #define GL_TEXTURE0 0x84C0 + #define GL_TEXTURE_MIN_LOD 0x813A + #define GL_CLAMP_TO_EDGE 0x812F + #define GL_UNSIGNED_SHORT_5_6_5 0x8363 + #define GL_TEXTURE_WRAP_R 0x8072 + #define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 + #define GL_NEAREST_MIPMAP_NEAREST 0x2700 + #define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 + #define GL_SRC_ALPHA_SATURATE 0x0308 + #define GL_STREAM_DRAW 0x88E0 + #define GL_ONE 1 + #define GL_NEAREST_MIPMAP_LINEAR 0x2702 + #define GL_RGB10_A2 0x8059 + #define GL_RGBA8 0x8058 + #define GL_SRGB8_ALPHA8 0x8C43 + #define GL_COLOR_ATTACHMENT1 0x8CE1 + #define GL_RGBA4 0x8056 + #define GL_RGB8 0x8051 + #define GL_ARRAY_BUFFER 0x8892 + #define GL_STENCIL 0x1802 + #define GL_TEXTURE_2D 0x0DE1 + #define GL_DEPTH 0x1801 + #define GL_FRONT 0x0404 + #define GL_STENCIL_BUFFER_BIT 0x00000400 + #define GL_REPEAT 0x2901 + #define GL_RGBA 0x1908 + #define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 + #define GL_DECR 0x1E03 + #define GL_FRAGMENT_SHADER 0x8B30 + #define GL_FLOAT 0x1406 + #define GL_TEXTURE_MAX_LOD 0x813B + #define GL_DEPTH_COMPONENT 0x1902 + #define GL_ONE_MINUS_DST_ALPHA 0x0305 + #define GL_COLOR 0x1800 + #define GL_TEXTURE_2D_ARRAY 0x8C1A + #define GL_TRIANGLES 0x0004 + #define GL_UNSIGNED_BYTE 0x1401 + #define GL_TEXTURE_MAG_FILTER 0x2800 + #define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 + #define GL_NONE 0 + #define GL_SRC_COLOR 0x0300 + #define GL_BYTE 0x1400 + #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A + #define GL_LINE_STRIP 0x0003 + #define GL_TEXTURE_3D 0x806F + #define GL_CW 0x0900 + #define GL_LINEAR 0x2601 + #define GL_RENDERBUFFER 0x8D41 + #define GL_GEQUAL 0x0206 + #define GL_COLOR_BUFFER_BIT 0x00004000 + #define GL_RGBA32F 0x8814 + #define GL_BLEND 0x0BE2 + #define GL_ONE_MINUS_SRC_ALPHA 0x0303 + #define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 + #define GL_TEXTURE_WRAP_T 0x2803 + #define GL_TEXTURE_WRAP_S 0x2802 + #define GL_TEXTURE_MIN_FILTER 0x2801 + #define GL_LINEAR_MIPMAP_NEAREST 0x2701 + #define GL_EXTENSIONS 0x1F03 + #define GL_NO_ERROR 0 + #define GL_REPLACE 0x1E01 + #define GL_KEEP 0x1E00 + #define GL_CCW 0x0901 + #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 + #define GL_RGB 0x1907 + #define GL_TRIANGLE_STRIP 0x0005 + #define GL_FALSE 0 + #define GL_ZERO 0 + #define GL_CULL_FACE 0x0B44 + #define GL_INVERT 0x150A + #define GL_INT 0x1404 + #define GL_UNSIGNED_INT 0x1405 + #define GL_UNSIGNED_SHORT 0x1403 + #define GL_NEAREST 0x2600 + #define GL_SCISSOR_TEST 0x0C11 + #define GL_LEQUAL 0x0203 + #define GL_STENCIL_TEST 0x0B90 + #define GL_DITHER 0x0BD0 + #define GL_DEPTH_COMPONENT32F 0x8CAC + #define GL_EQUAL 0x0202 + #define GL_FRAMEBUFFER 0x8D40 + #define GL_RGB5 0x8050 + #define GL_LINES 0x0001 + #define GL_DEPTH_BUFFER_BIT 0x00000100 + #define GL_SRC_ALPHA 0x0302 + #define GL_INCR_WRAP 0x8507 + #define GL_LESS 0x0201 + #define GL_MULTISAMPLE 0x809D + #define GL_FRAMEBUFFER_BINDING 0x8CA6 + #define GL_BACK 0x0405 + #define GL_ALWAYS 0x0207 + #define GL_FUNC_ADD 0x8006 + #define GL_ONE_MINUS_DST_COLOR 0x0307 + #define GL_NOTEQUAL 0x0205 + #define GL_DST_COLOR 0x0306 + #define GL_COMPILE_STATUS 0x8B81 + #define GL_RED 0x1903 + #define GL_COLOR_ATTACHMENT3 0x8CE3 + #define GL_DST_ALPHA 0x0304 + #define GL_RGB5_A1 0x8057 + #define GL_GREATER 0x0204 + #define GL_POLYGON_OFFSET_FILL 0x8037 + #define GL_TRUE 1 + #define GL_NEVER 0x0200 + #define GL_POINTS 0x0000 + #define GL_ONE_MINUS_SRC_COLOR 0x0301 + #define GL_MIRRORED_REPEAT 0x8370 + #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D + #define GL_R11F_G11F_B10F 0x8C3A + #define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B + #define GL_RGB9_E5 0x8C3D + #define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E + #define GL_RGBA32UI 0x8D70 + #define GL_RGB32UI 0x8D71 + #define GL_RGBA16UI 0x8D76 + #define GL_RGB16UI 0x8D77 + #define GL_RGBA8UI 0x8D7C + #define GL_RGB8UI 0x8D7D + #define GL_RGBA32I 0x8D82 + #define GL_RGB32I 0x8D83 + #define GL_RGBA16I 0x8D88 + #define GL_RGB16I 0x8D89 + #define GL_RGBA8I 0x8D8E + #define GL_RGB8I 0x8D8F + #define GL_RED_INTEGER 0x8D94 + #define GL_RG 0x8227 + #define GL_RG_INTEGER 0x8228 + #define GL_R8 0x8229 + #define GL_R16 0x822A + #define GL_RG8 0x822B + #define GL_RG16 0x822C + #define GL_R16F 0x822D + #define GL_R32F 0x822E + #define GL_RG16F 0x822F + #define GL_RG32F 0x8230 + #define GL_R8I 0x8231 + #define GL_R8UI 0x8232 + #define GL_R16I 0x8233 + #define GL_R16UI 0x8234 + #define GL_R32I 0x8235 + #define GL_R32UI 0x8236 + #define GL_RG8I 0x8237 + #define GL_RG8UI 0x8238 + #define GL_RG16I 0x8239 + #define GL_RG16UI 0x823A + #define GL_RG32I 0x823B + #define GL_RG32UI 0x823C + #define GL_RGBA_INTEGER 0x8D99 + #define GL_R8_SNORM 0x8F94 + #define GL_RG8_SNORM 0x8F95 + #define GL_RGB8_SNORM 0x8F96 + #define GL_RGBA8_SNORM 0x8F97 + #define GL_R16_SNORM 0x8F98 + #define GL_RG16_SNORM 0x8F99 + #define GL_RGB16_SNORM 0x8F9A + #define GL_RGBA16_SNORM 0x8F9B + #define GL_RGBA16 0x805B + #define GL_MAX_TEXTURE_SIZE 0x0D33 + #define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C + #define GL_MAX_3D_TEXTURE_SIZE 0x8073 + #define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF + #define GL_MAX_VERTEX_ATTRIBS 0x8869 + #define GL_CLAMP_TO_BORDER 0x812D + #define GL_TEXTURE_BORDER_COLOR 0x1004 + #define GL_CURRENT_PROGRAM 0x8B8D + #define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB + #define GL_UNPACK_ALIGNMENT 0x0CF5 + #define GL_FRAMEBUFFER_SRGB 0x8DB9 + #endif + + #ifndef GL_UNSIGNED_INT_2_10_10_10_REV + #define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 + #endif + #ifndef GL_UNSIGNED_INT_24_8 + #define GL_UNSIGNED_INT_24_8 0x84FA + #endif + #ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT + #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE + #endif + #ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT + #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF + #endif + #ifndef GL_COMPRESSED_RGBA_S3TC_DXT1_EXT + #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 + #endif + #ifndef GL_COMPRESSED_RGBA_S3TC_DXT3_EXT + #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 + #endif + #ifndef GL_COMPRESSED_RGBA_S3TC_DXT5_EXT + #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 + #endif + #ifndef GL_COMPRESSED_RED_RGTC1 + #define GL_COMPRESSED_RED_RGTC1 0x8DBB + #endif + #ifndef GL_COMPRESSED_SIGNED_RED_RGTC1 + #define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC + #endif + #ifndef GL_COMPRESSED_RED_GREEN_RGTC2 + #define GL_COMPRESSED_RED_GREEN_RGTC2 0x8DBD + #endif + #ifndef GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2 + #define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2 0x8DBE + #endif + #ifndef GL_COMPRESSED_RGBA_BPTC_UNORM_ARB + #define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C + #endif + #ifndef GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB + #define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D + #endif + #ifndef GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB + #define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E + #endif + #ifndef GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB + #define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F + #endif + #ifndef GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG + #define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 + #endif + #ifndef GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG + #define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 + #endif + #ifndef GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG + #define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 + #endif + #ifndef GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG + #define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 + #endif + #ifndef GL_COMPRESSED_RGB8_ETC2 + #define GL_COMPRESSED_RGB8_ETC2 0x9274 + #endif + #ifndef GL_COMPRESSED_RGBA8_ETC2_EAC + #define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 + #endif + #ifndef GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 + #define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 + #endif + #ifndef GL_COMPRESSED_RG11_EAC + #define GL_COMPRESSED_RG11_EAC 0x9272 + #endif + #ifndef GL_COMPRESSED_SIGNED_RG11_EAC + #define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 + #endif + #ifndef GL_DEPTH24_STENCIL8 + #define GL_DEPTH24_STENCIL8 0x88F0 + #endif + #ifndef GL_HALF_FLOAT + #define GL_HALF_FLOAT 0x140B + #endif + #ifndef GL_DEPTH_STENCIL + #define GL_DEPTH_STENCIL 0x84F9 + #endif + #ifndef GL_LUMINANCE + #define GL_LUMINANCE 0x1909 + #endif + #define _SG_GL_CHECK_ERROR() { SOKOL_ASSERT(glGetError() == GL_NO_ERROR); } +#endif + +// ███████ ████████ ██████ ██ ██ ██████ ████████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██████ ██ ██ ██ ██ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██ ██ ██████ ██████ ██ ███████ +// +// >>structs +/* resource pool slots */ +typedef struct { + uint32_t id; + uint32_t ctx_id; + sg_resource_state state; +} _sg_slot_t; + +/* constants */ +enum { + _SG_STRING_SIZE = 16, + _SG_SLOT_SHIFT = 16, + _SG_SLOT_MASK = (1<<_SG_SLOT_SHIFT)-1, + _SG_MAX_POOL_SIZE = (1<<_SG_SLOT_SHIFT), + _SG_DEFAULT_BUFFER_POOL_SIZE = 128, + _SG_DEFAULT_IMAGE_POOL_SIZE = 128, + _SG_DEFAULT_SHADER_POOL_SIZE = 32, + _SG_DEFAULT_PIPELINE_POOL_SIZE = 64, + _SG_DEFAULT_PASS_POOL_SIZE = 16, + _SG_DEFAULT_CONTEXT_POOL_SIZE = 16, + _SG_DEFAULT_SAMPLER_CACHE_CAPACITY = 64, + _SG_DEFAULT_UB_SIZE = 4 * 1024 * 1024, + _SG_DEFAULT_STAGING_SIZE = 8 * 1024 * 1024, + _SG_DEFAULT_MAX_COMMIT_LISTENERS = 1024, +}; + +/* fixed-size string */ +typedef struct { + char buf[_SG_STRING_SIZE]; +} _sg_str_t; + +/* helper macros */ +#define _sg_def(val, def) (((val) == 0) ? (def) : (val)) +#define _sg_def_flt(val, def) (((val) == 0.0f) ? (def) : (val)) +#define _sg_min(a,b) (((a)<(b))?(a):(b)) +#define _sg_max(a,b) (((a)>(b))?(a):(b)) +#define _sg_clamp(v,v0,v1) (((v)<(v0))?(v0):(((v)>(v1))?(v1):(v))) +#define _sg_fequal(val,cmp,delta) ((((val)-(cmp))> -(delta))&&(((val)-(cmp))<(delta))) + +_SOKOL_PRIVATE void* _sg_malloc_clear(size_t size); +_SOKOL_PRIVATE void _sg_free(void* ptr); +_SOKOL_PRIVATE void _sg_clear(void* ptr, size_t size); + +typedef struct { + sg_filter min_filter; + sg_filter mag_filter; + sg_wrap wrap_u; + sg_wrap wrap_v; + sg_wrap wrap_w; + sg_border_color border_color; + uint32_t max_anisotropy; + int min_lod; /* orig min/max_lod is float, this is int(min/max_lod*1000.0) */ + int max_lod; + uintptr_t sampler_handle; +} _sg_sampler_cache_item_t; + +typedef struct { + int capacity; + int num_items; + _sg_sampler_cache_item_t* items; +} _sg_sampler_cache_t; + +typedef struct { + int size; + int append_pos; + bool append_overflow; + uint32_t update_frame_index; + uint32_t append_frame_index; + int num_slots; + int active_slot; + sg_buffer_type type; + sg_usage usage; +} _sg_buffer_common_t; + +_SOKOL_PRIVATE void _sg_buffer_common_init(_sg_buffer_common_t* cmn, const sg_buffer_desc* desc) { + cmn->size = (int)desc->size; + cmn->append_pos = 0; + cmn->append_overflow = false; + cmn->update_frame_index = 0; + cmn->append_frame_index = 0; + cmn->num_slots = (desc->usage == SG_USAGE_IMMUTABLE) ? 1 : SG_NUM_INFLIGHT_FRAMES; + cmn->active_slot = 0; + cmn->type = desc->type; + cmn->usage = desc->usage; +} + +typedef struct { + uint32_t upd_frame_index; + int num_slots; + int active_slot; + sg_image_type type; + bool render_target; + int width; + int height; + int num_slices; + int num_mipmaps; + sg_usage usage; + sg_pixel_format pixel_format; + int sample_count; + sg_filter min_filter; + sg_filter mag_filter; + sg_wrap wrap_u; + sg_wrap wrap_v; + sg_wrap wrap_w; + sg_border_color border_color; + uint32_t max_anisotropy; + float min_lod; + float max_lod; +} _sg_image_common_t; + +_SOKOL_PRIVATE void _sg_image_common_init(_sg_image_common_t* cmn, const sg_image_desc* desc) { + cmn->upd_frame_index = 0; + cmn->num_slots = (desc->usage == SG_USAGE_IMMUTABLE) ? 1 : SG_NUM_INFLIGHT_FRAMES; + cmn->active_slot = 0; + cmn->type = desc->type; + cmn->render_target = desc->render_target; + cmn->width = desc->width; + cmn->height = desc->height; + cmn->num_slices = desc->num_slices; + cmn->num_mipmaps = desc->num_mipmaps; + cmn->usage = desc->usage; + cmn->pixel_format = desc->pixel_format; + cmn->sample_count = desc->sample_count; + cmn->min_filter = desc->min_filter; + cmn->mag_filter = desc->mag_filter; + cmn->wrap_u = desc->wrap_u; + cmn->wrap_v = desc->wrap_v; + cmn->wrap_w = desc->wrap_w; + cmn->border_color = desc->border_color; + cmn->max_anisotropy = desc->max_anisotropy; + cmn->min_lod = desc->min_lod; + cmn->max_lod = desc->max_lod; +} + +typedef struct { + size_t size; +} _sg_shader_uniform_block_t; + +typedef struct { + sg_image_type image_type; + sg_sampler_type sampler_type; +} _sg_shader_image_t; + +typedef struct { + int num_uniform_blocks; + int num_images; + _sg_shader_uniform_block_t uniform_blocks[SG_MAX_SHADERSTAGE_UBS]; + _sg_shader_image_t images[SG_MAX_SHADERSTAGE_IMAGES]; +} _sg_shader_stage_t; + +typedef struct { + _sg_shader_stage_t stage[SG_NUM_SHADER_STAGES]; +} _sg_shader_common_t; + +_SOKOL_PRIVATE void _sg_shader_common_init(_sg_shader_common_t* cmn, const sg_shader_desc* desc) { + for (int stage_index = 0; stage_index < SG_NUM_SHADER_STAGES; stage_index++) { + const sg_shader_stage_desc* stage_desc = (stage_index == SG_SHADERSTAGE_VS) ? &desc->vs : &desc->fs; + _sg_shader_stage_t* stage = &cmn->stage[stage_index]; + SOKOL_ASSERT(stage->num_uniform_blocks == 0); + for (int ub_index = 0; ub_index < SG_MAX_SHADERSTAGE_UBS; ub_index++) { + const sg_shader_uniform_block_desc* ub_desc = &stage_desc->uniform_blocks[ub_index]; + if (0 == ub_desc->size) { + break; + } + stage->uniform_blocks[ub_index].size = ub_desc->size; + stage->num_uniform_blocks++; + } + SOKOL_ASSERT(stage->num_images == 0); + for (int img_index = 0; img_index < SG_MAX_SHADERSTAGE_IMAGES; img_index++) { + const sg_shader_image_desc* img_desc = &stage_desc->images[img_index]; + if (img_desc->image_type == _SG_IMAGETYPE_DEFAULT) { + break; + } + stage->images[img_index].image_type = img_desc->image_type; + stage->images[img_index].sampler_type = img_desc->sampler_type; + stage->num_images++; + } + } +} + +typedef struct { + bool vertex_layout_valid[SG_MAX_SHADERSTAGE_BUFFERS]; + bool use_instanced_draw; + sg_shader shader_id; + sg_layout_desc layout; + sg_depth_state depth; + sg_stencil_state stencil; + int color_count; + sg_color_state colors[SG_MAX_COLOR_ATTACHMENTS]; + sg_primitive_type primitive_type; + sg_index_type index_type; + sg_cull_mode cull_mode; + sg_face_winding face_winding; + int sample_count; + sg_color blend_color; + bool alpha_to_coverage_enabled; +} _sg_pipeline_common_t; + +_SOKOL_PRIVATE void _sg_pipeline_common_init(_sg_pipeline_common_t* cmn, const sg_pipeline_desc* desc) { + SOKOL_ASSERT((desc->color_count >= 1) && (desc->color_count <= SG_MAX_COLOR_ATTACHMENTS)); + for (int i = 0; i < SG_MAX_SHADERSTAGE_BUFFERS; i++) { + cmn->vertex_layout_valid[i] = false; + } + cmn->use_instanced_draw = false; + cmn->shader_id = desc->shader; + cmn->layout = desc->layout; + cmn->depth = desc->depth; + cmn->stencil = desc->stencil; + cmn->color_count = desc->color_count; + for (int i = 0; i < desc->color_count; i++) { + cmn->colors[i] = desc->colors[i]; + } + cmn->primitive_type = desc->primitive_type; + cmn->index_type = desc->index_type; + cmn->cull_mode = desc->cull_mode; + cmn->face_winding = desc->face_winding; + cmn->sample_count = desc->sample_count; + cmn->blend_color = desc->blend_color; + cmn->alpha_to_coverage_enabled = desc->alpha_to_coverage_enabled; +} + +typedef struct { + sg_image image_id; + int mip_level; + int slice; +} _sg_pass_attachment_common_t; + +typedef struct { + int num_color_atts; + _sg_pass_attachment_common_t color_atts[SG_MAX_COLOR_ATTACHMENTS]; + _sg_pass_attachment_common_t ds_att; +} _sg_pass_common_t; + +_SOKOL_PRIVATE void _sg_pass_common_init(_sg_pass_common_t* cmn, const sg_pass_desc* desc) { + const sg_pass_attachment_desc* att_desc; + _sg_pass_attachment_common_t* att; + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + att_desc = &desc->color_attachments[i]; + if (att_desc->image.id != SG_INVALID_ID) { + cmn->num_color_atts++; + att = &cmn->color_atts[i]; + att->image_id = att_desc->image; + att->mip_level = att_desc->mip_level; + att->slice = att_desc->slice; + } + } + att_desc = &desc->depth_stencil_attachment; + if (att_desc->image.id != SG_INVALID_ID) { + att = &cmn->ds_att; + att->image_id = att_desc->image; + att->mip_level = att_desc->mip_level; + att->slice = att_desc->slice; + } +} + +#if defined(SOKOL_DUMMY_BACKEND) +typedef struct { + _sg_slot_t slot; + _sg_buffer_common_t cmn; +} _sg_dummy_buffer_t; +typedef _sg_dummy_buffer_t _sg_buffer_t; + +typedef struct { + _sg_slot_t slot; + _sg_image_common_t cmn; +} _sg_dummy_image_t; +typedef _sg_dummy_image_t _sg_image_t; + +typedef struct { + _sg_slot_t slot; + _sg_shader_common_t cmn; +} _sg_dummy_shader_t; +typedef _sg_dummy_shader_t _sg_shader_t; + +typedef struct { + _sg_slot_t slot; + _sg_shader_t* shader; + _sg_pipeline_common_t cmn; +} _sg_dummy_pipeline_t; +typedef _sg_dummy_pipeline_t _sg_pipeline_t; + +typedef struct { + _sg_image_t* image; +} _sg_dummy_attachment_t; + +typedef struct { + _sg_slot_t slot; + _sg_pass_common_t cmn; + struct { + _sg_dummy_attachment_t color_atts[SG_MAX_COLOR_ATTACHMENTS]; + _sg_dummy_attachment_t ds_att; + } dmy; +} _sg_dummy_pass_t; +typedef _sg_dummy_pass_t _sg_pass_t; +typedef _sg_pass_attachment_common_t _sg_pass_attachment_t; + +typedef struct { + _sg_slot_t slot; +} _sg_dummy_context_t; +typedef _sg_dummy_context_t _sg_context_t; + +#elif defined(_SOKOL_ANY_GL) +typedef struct { + _sg_slot_t slot; + _sg_buffer_common_t cmn; + struct { + GLuint buf[SG_NUM_INFLIGHT_FRAMES]; + bool ext_buffers; /* if true, external buffers were injected with sg_buffer_desc.gl_buffers */ + } gl; +} _sg_gl_buffer_t; +typedef _sg_gl_buffer_t _sg_buffer_t; + +typedef struct { + _sg_slot_t slot; + _sg_image_common_t cmn; + struct { + GLenum target; + GLuint msaa_render_buffer; + GLuint tex[SG_NUM_INFLIGHT_FRAMES]; + bool ext_textures; /* if true, external textures were injected with sg_image_desc.gl_textures */ + } gl; +} _sg_gl_image_t; +typedef _sg_gl_image_t _sg_image_t; + +typedef struct { + GLint gl_loc; + sg_uniform_type type; + uint16_t count; + uint16_t offset; +} _sg_gl_uniform_t; + +typedef struct { + int num_uniforms; + _sg_gl_uniform_t uniforms[SG_MAX_UB_MEMBERS]; +} _sg_gl_uniform_block_t; + +typedef struct { + int gl_tex_slot; +} _sg_gl_shader_image_t; + +typedef struct { + _sg_str_t name; +} _sg_gl_shader_attr_t; + +typedef struct { + _sg_gl_uniform_block_t uniform_blocks[SG_MAX_SHADERSTAGE_UBS]; + _sg_gl_shader_image_t images[SG_MAX_SHADERSTAGE_IMAGES]; +} _sg_gl_shader_stage_t; + +typedef struct { + _sg_slot_t slot; + _sg_shader_common_t cmn; + struct { + GLuint prog; + _sg_gl_shader_attr_t attrs[SG_MAX_VERTEX_ATTRIBUTES]; + _sg_gl_shader_stage_t stage[SG_NUM_SHADER_STAGES]; + } gl; +} _sg_gl_shader_t; +typedef _sg_gl_shader_t _sg_shader_t; + +typedef struct { + int8_t vb_index; /* -1 if attr is not enabled */ + int8_t divisor; /* -1 if not initialized */ + uint8_t stride; + uint8_t size; + uint8_t normalized; + int offset; + GLenum type; +} _sg_gl_attr_t; + +typedef struct { + _sg_slot_t slot; + _sg_pipeline_common_t cmn; + _sg_shader_t* shader; + struct { + _sg_gl_attr_t attrs[SG_MAX_VERTEX_ATTRIBUTES]; + sg_depth_state depth; + sg_stencil_state stencil; + sg_primitive_type primitive_type; + sg_blend_state blend; + sg_color_mask color_write_mask[SG_MAX_COLOR_ATTACHMENTS]; + sg_cull_mode cull_mode; + sg_face_winding face_winding; + int sample_count; + bool alpha_to_coverage_enabled; + } gl; +} _sg_gl_pipeline_t; +typedef _sg_gl_pipeline_t _sg_pipeline_t; + +typedef struct { + _sg_image_t* image; + GLuint gl_msaa_resolve_buffer; +} _sg_gl_attachment_t; + +typedef struct { + _sg_slot_t slot; + _sg_pass_common_t cmn; + struct { + GLuint fb; + _sg_gl_attachment_t color_atts[SG_MAX_COLOR_ATTACHMENTS]; + _sg_gl_attachment_t ds_att; + } gl; +} _sg_gl_pass_t; +typedef _sg_gl_pass_t _sg_pass_t; +typedef _sg_pass_attachment_common_t _sg_pass_attachment_t; + +typedef struct { + _sg_slot_t slot; + GLuint vao; + GLuint default_framebuffer; +} _sg_gl_context_t; +typedef _sg_gl_context_t _sg_context_t; + +typedef struct { + _sg_gl_attr_t gl_attr; + GLuint gl_vbuf; +} _sg_gl_cache_attr_t; + +typedef struct { + GLenum target; + GLuint texture; +} _sg_gl_texture_bind_slot; + +#define _SG_GL_IMAGE_CACHE_SIZE (SG_MAX_SHADERSTAGE_IMAGES * SG_NUM_SHADER_STAGES) + +typedef struct { + sg_depth_state depth; + sg_stencil_state stencil; + sg_blend_state blend; + sg_color_mask color_write_mask[SG_MAX_COLOR_ATTACHMENTS]; + sg_cull_mode cull_mode; + sg_face_winding face_winding; + bool polygon_offset_enabled; + int sample_count; + sg_color blend_color; + bool alpha_to_coverage_enabled; + _sg_gl_cache_attr_t attrs[SG_MAX_VERTEX_ATTRIBUTES]; + GLuint vertex_buffer; + GLuint index_buffer; + GLuint stored_vertex_buffer; + GLuint stored_index_buffer; + GLuint prog; + _sg_gl_texture_bind_slot textures[_SG_GL_IMAGE_CACHE_SIZE]; + _sg_gl_texture_bind_slot stored_texture; + int cur_ib_offset; + GLenum cur_primitive_type; + GLenum cur_index_type; + GLenum cur_active_texture; + _sg_pipeline_t* cur_pipeline; + sg_pipeline cur_pipeline_id; +} _sg_gl_state_cache_t; + +typedef struct { + bool valid; + bool in_pass; + int cur_pass_width; + int cur_pass_height; + _sg_context_t* cur_context; + _sg_pass_t* cur_pass; + sg_pass cur_pass_id; + _sg_gl_state_cache_t cache; + bool ext_anisotropic; + GLint max_anisotropy; + #if _SOKOL_USE_WIN32_GL_LOADER + HINSTANCE opengl32_dll; + #endif +} _sg_gl_backend_t; + +#elif defined(SOKOL_D3D11) + +typedef struct { + _sg_slot_t slot; + _sg_buffer_common_t cmn; + struct { + ID3D11Buffer* buf; + } d3d11; +} _sg_d3d11_buffer_t; +typedef _sg_d3d11_buffer_t _sg_buffer_t; + +typedef struct { + _sg_slot_t slot; + _sg_image_common_t cmn; + struct { + DXGI_FORMAT format; + ID3D11Texture2D* tex2d; + ID3D11Texture3D* tex3d; + ID3D11Texture2D* texds; + ID3D11Texture2D* texmsaa; + ID3D11ShaderResourceView* srv; + ID3D11SamplerState* smp; + } d3d11; +} _sg_d3d11_image_t; +typedef _sg_d3d11_image_t _sg_image_t; + +typedef struct { + _sg_str_t sem_name; + int sem_index; +} _sg_d3d11_shader_attr_t; + +typedef struct { + ID3D11Buffer* cbufs[SG_MAX_SHADERSTAGE_UBS]; +} _sg_d3d11_shader_stage_t; + +typedef struct { + _sg_slot_t slot; + _sg_shader_common_t cmn; + struct { + _sg_d3d11_shader_attr_t attrs[SG_MAX_VERTEX_ATTRIBUTES]; + _sg_d3d11_shader_stage_t stage[SG_NUM_SHADER_STAGES]; + ID3D11VertexShader* vs; + ID3D11PixelShader* fs; + void* vs_blob; + size_t vs_blob_length; + } d3d11; +} _sg_d3d11_shader_t; +typedef _sg_d3d11_shader_t _sg_shader_t; + +typedef struct { + _sg_slot_t slot; + _sg_pipeline_common_t cmn; + _sg_shader_t* shader; + struct { + UINT stencil_ref; + UINT vb_strides[SG_MAX_SHADERSTAGE_BUFFERS]; + D3D_PRIMITIVE_TOPOLOGY topology; + DXGI_FORMAT index_format; + ID3D11InputLayout* il; + ID3D11RasterizerState* rs; + ID3D11DepthStencilState* dss; + ID3D11BlendState* bs; + } d3d11; +} _sg_d3d11_pipeline_t; +typedef _sg_d3d11_pipeline_t _sg_pipeline_t; + +typedef struct { + _sg_image_t* image; + ID3D11RenderTargetView* rtv; +} _sg_d3d11_color_attachment_t; + +typedef struct { + _sg_image_t* image; + ID3D11DepthStencilView* dsv; +} _sg_d3d11_ds_attachment_t; + +typedef struct { + _sg_slot_t slot; + _sg_pass_common_t cmn; + struct { + _sg_d3d11_color_attachment_t color_atts[SG_MAX_COLOR_ATTACHMENTS]; + _sg_d3d11_ds_attachment_t ds_att; + } d3d11; +} _sg_d3d11_pass_t; +typedef _sg_d3d11_pass_t _sg_pass_t; +typedef _sg_pass_attachment_common_t _sg_pass_attachment_t; + +typedef struct { + _sg_slot_t slot; +} _sg_d3d11_context_t; +typedef _sg_d3d11_context_t _sg_context_t; + +typedef struct { + bool valid; + ID3D11Device* dev; + ID3D11DeviceContext* ctx; + const void* (*rtv_cb)(void); + const void* (*rtv_userdata_cb)(void*); + const void* (*dsv_cb)(void); + const void* (*dsv_userdata_cb)(void*); + void* user_data; + bool in_pass; + bool use_indexed_draw; + bool use_instanced_draw; + int cur_width; + int cur_height; + int num_rtvs; + _sg_pass_t* cur_pass; + sg_pass cur_pass_id; + _sg_pipeline_t* cur_pipeline; + sg_pipeline cur_pipeline_id; + ID3D11RenderTargetView* cur_rtvs[SG_MAX_COLOR_ATTACHMENTS]; + ID3D11DepthStencilView* cur_dsv; + /* on-demand loaded d3dcompiler_47.dll handles */ + HINSTANCE d3dcompiler_dll; + bool d3dcompiler_dll_load_failed; + pD3DCompile D3DCompile_func; + /* global subresourcedata array for texture updates */ + D3D11_SUBRESOURCE_DATA subres_data[SG_MAX_MIPMAPS * SG_MAX_TEXTUREARRAY_LAYERS]; +} _sg_d3d11_backend_t; + +#elif defined(SOKOL_METAL) + +#if defined(_SG_TARGET_MACOS) || defined(_SG_TARGET_IOS_SIMULATOR) +#define _SG_MTL_UB_ALIGN (256) +#else +#define _SG_MTL_UB_ALIGN (16) +#endif +#define _SG_MTL_INVALID_SLOT_INDEX (0) + +typedef struct { + uint32_t frame_index; /* frame index at which it is safe to release this resource */ + int slot_index; +} _sg_mtl_release_item_t; + +typedef struct { + NSMutableArray* pool; + int num_slots; + int free_queue_top; + int* free_queue; + int release_queue_front; + int release_queue_back; + _sg_mtl_release_item_t* release_queue; +} _sg_mtl_idpool_t; + +typedef struct { + _sg_slot_t slot; + _sg_buffer_common_t cmn; + struct { + int buf[SG_NUM_INFLIGHT_FRAMES]; /* index into _sg_mtl_pool */ + } mtl; +} _sg_mtl_buffer_t; +typedef _sg_mtl_buffer_t _sg_buffer_t; + +typedef struct { + _sg_slot_t slot; + _sg_image_common_t cmn; + struct { + int tex[SG_NUM_INFLIGHT_FRAMES]; + int depth_tex; + int msaa_tex; + int sampler_state; + } mtl; +} _sg_mtl_image_t; +typedef _sg_mtl_image_t _sg_image_t; + +typedef struct { + int mtl_lib; + int mtl_func; +} _sg_mtl_shader_stage_t; + +typedef struct { + _sg_slot_t slot; + _sg_shader_common_t cmn; + struct { + _sg_mtl_shader_stage_t stage[SG_NUM_SHADER_STAGES]; + } mtl; +} _sg_mtl_shader_t; +typedef _sg_mtl_shader_t _sg_shader_t; + +typedef struct { + _sg_slot_t slot; + _sg_pipeline_common_t cmn; + _sg_shader_t* shader; + struct { + MTLPrimitiveType prim_type; + int index_size; + MTLIndexType index_type; + MTLCullMode cull_mode; + MTLWinding winding; + uint32_t stencil_ref; + int rps; + int dss; + } mtl; +} _sg_mtl_pipeline_t; +typedef _sg_mtl_pipeline_t _sg_pipeline_t; + +typedef struct { + _sg_image_t* image; +} _sg_mtl_attachment_t; + +typedef struct { + _sg_slot_t slot; + _sg_pass_common_t cmn; + struct { + _sg_mtl_attachment_t color_atts[SG_MAX_COLOR_ATTACHMENTS]; + _sg_mtl_attachment_t ds_att; + } mtl; +} _sg_mtl_pass_t; +typedef _sg_mtl_pass_t _sg_pass_t; +typedef _sg_pass_attachment_common_t _sg_pass_attachment_t; + +typedef struct { + _sg_slot_t slot; +} _sg_mtl_context_t; +typedef _sg_mtl_context_t _sg_context_t; + +/* resouce binding state cache */ +typedef struct { + const _sg_pipeline_t* cur_pipeline; + sg_pipeline cur_pipeline_id; + const _sg_buffer_t* cur_indexbuffer; + int cur_indexbuffer_offset; + sg_buffer cur_indexbuffer_id; + const _sg_buffer_t* cur_vertexbuffers[SG_MAX_SHADERSTAGE_BUFFERS]; + int cur_vertexbuffer_offsets[SG_MAX_SHADERSTAGE_BUFFERS]; + sg_buffer cur_vertexbuffer_ids[SG_MAX_SHADERSTAGE_BUFFERS]; + const _sg_image_t* cur_vs_images[SG_MAX_SHADERSTAGE_IMAGES]; + sg_image cur_vs_image_ids[SG_MAX_SHADERSTAGE_IMAGES]; + const _sg_image_t* cur_fs_images[SG_MAX_SHADERSTAGE_IMAGES]; + sg_image cur_fs_image_ids[SG_MAX_SHADERSTAGE_IMAGES]; +} _sg_mtl_state_cache_t; + +typedef struct { + bool valid; + const void*(*renderpass_descriptor_cb)(void); + const void*(*renderpass_descriptor_userdata_cb)(void*); + const void*(*drawable_cb)(void); + const void*(*drawable_userdata_cb)(void*); + void* user_data; + uint32_t frame_index; + uint32_t cur_frame_rotate_index; + int ub_size; + int cur_ub_offset; + uint8_t* cur_ub_base_ptr; + bool in_pass; + bool pass_valid; + int cur_width; + int cur_height; + _sg_mtl_state_cache_t state_cache; + _sg_sampler_cache_t sampler_cache; + _sg_mtl_idpool_t idpool; + dispatch_semaphore_t sem; + id device; + id cmd_queue; + id cmd_buffer; + id present_cmd_buffer; + id cmd_encoder; + id uniform_buffers[SG_NUM_INFLIGHT_FRAMES]; +} _sg_mtl_backend_t; + +#elif defined(SOKOL_WGPU) + +#define _SG_WGPU_STAGING_ALIGN (256) +#define _SG_WGPU_STAGING_PIPELINE_SIZE (8) +#define _SG_WGPU_ROWPITCH_ALIGN (256) +#define _SG_WGPU_MAX_SHADERSTAGE_IMAGES (8) +#define _SG_WGPU_MAX_UNIFORM_UPDATE_SIZE (1<<16) + +typedef struct { + _sg_slot_t slot; + _sg_buffer_common_t cmn; + struct { + WGPUBuffer buf; + } wgpu; +} _sg_wgpu_buffer_t; +typedef _sg_wgpu_buffer_t _sg_buffer_t; + +typedef struct { + _sg_slot_t slot; + _sg_image_common_t cmn; + struct { + WGPUTexture tex; + WGPUTextureView tex_view; + WGPUTexture msaa_tex; + WGPUSampler sampler; + } wgpu; +} _sg_wgpu_image_t; +typedef _sg_wgpu_image_t _sg_image_t; + +typedef struct { + WGPUShaderModule module; + WGPUBindGroupLayout bind_group_layout; + _sg_str_t entry; +} _sg_wgpu_shader_stage_t; + +typedef struct { + _sg_slot_t slot; + _sg_shader_common_t cmn; + struct { + _sg_wgpu_shader_stage_t stage[SG_NUM_SHADER_STAGES]; + } wgpu; +} _sg_wgpu_shader_t; +typedef _sg_wgpu_shader_t _sg_shader_t; + +typedef struct { + _sg_slot_t slot; + _sg_pipeline_common_t cmn; + _sg_shader_t* shader; + struct { + WGPURenderPipeline pip; + uint32_t stencil_ref; + } wgpu; +} _sg_wgpu_pipeline_t; +typedef _sg_wgpu_pipeline_t _sg_pipeline_t; + +typedef struct { + _sg_image_t* image; + WGPUTextureView render_tex_view; + WGPUTextureView resolve_tex_view; +} _sg_wgpu_attachment_t; + +typedef struct { + _sg_slot_t slot; + _sg_pass_common_t cmn; + struct { + _sg_wgpu_attachment_t color_atts[SG_MAX_COLOR_ATTACHMENTS]; + _sg_wgpu_attachment_t ds_att; + } wgpu; +} _sg_wgpu_pass_t; +typedef _sg_wgpu_pass_t _sg_pass_t; +typedef _sg_pass_attachment_common_t _sg_pass_attachment_t; + +typedef struct { + _sg_slot_t slot; +} _sg_wgpu_context_t; +typedef _sg_wgpu_context_t _sg_context_t; + +/* a pool of per-frame uniform buffers */ +typedef struct { + WGPUBindGroupLayout bindgroup_layout; + uint32_t num_bytes; + uint32_t offset; /* current offset into current frame's mapped uniform buffer */ + uint32_t bind_offsets[SG_NUM_SHADER_STAGES][SG_MAX_SHADERSTAGE_UBS]; + WGPUBuffer buf; /* the GPU-side uniform buffer */ + WGPUBindGroup bindgroup; + struct { + int num; + int cur; + WGPUBuffer buf[_SG_WGPU_STAGING_PIPELINE_SIZE]; /* CPU-side staging buffers */ + uint8_t* ptr[_SG_WGPU_STAGING_PIPELINE_SIZE]; /* if != 0, staging buffer currently mapped */ + } stage; +} _sg_wgpu_ubpool_t; + +/* ...a similar pool (like uniform buffer pool) of dynamic-resource staging buffers */ +typedef struct { + uint32_t num_bytes; + uint32_t offset; /* current offset into current frame's staging buffer */ + int num; /* number of staging buffers */ + int cur; /* this frame's staging buffer */ + WGPUBuffer buf[_SG_WGPU_STAGING_PIPELINE_SIZE]; /* CPU-side staging buffers */ + uint8_t* ptr[_SG_WGPU_STAGING_PIPELINE_SIZE]; /* if != 0, staging buffer currently mapped */ +} _sg_wgpu_stagingpool_t; + +/* the WGPU backend state */ +typedef struct { + bool valid; + bool in_pass; + bool draw_indexed; + int cur_width; + int cur_height; + WGPUDevice dev; + WGPUTextureView (*render_view_cb)(void); + WGPUTextureView (*render_view_userdata_cb)(void*); + WGPUTextureView (*resolve_view_cb)(void); + WGPUTextureView (*resolve_view_userdata_cb)(void*); + WGPUTextureView (*depth_stencil_view_cb)(void); + WGPUTextureView (*depth_stencil_view_userdata_cb)(void*); + void* user_data; + WGPUQueue queue; + WGPUCommandEncoder render_cmd_enc; + WGPUCommandEncoder staging_cmd_enc; + WGPURenderPassEncoder pass_enc; + WGPUBindGroup empty_bind_group; + const _sg_pipeline_t* cur_pipeline; + sg_pipeline cur_pipeline_id; + _sg_sampler_cache_t sampler_cache; + _sg_wgpu_ubpool_t ub; + _sg_wgpu_stagingpool_t staging; +} _sg_wgpu_backend_t; +#endif + +// POOL STRUCTS + + +/* this *MUST* remain 0 */ +#define _SG_INVALID_SLOT_INDEX (0) + +typedef struct { + int size; + int queue_top; + uint32_t* gen_ctrs; + int* free_queue; +} _sg_pool_t; + +typedef struct { + _sg_pool_t buffer_pool; + _sg_pool_t image_pool; + _sg_pool_t shader_pool; + _sg_pool_t pipeline_pool; + _sg_pool_t pass_pool; + _sg_pool_t context_pool; + _sg_buffer_t* buffers; + _sg_image_t* images; + _sg_shader_t* shaders; + _sg_pipeline_t* pipelines; + _sg_pass_t* passes; + _sg_context_t* contexts; +} _sg_pools_t; + +typedef struct { + int num; // number of allocated commit listener items + int upper; // the current upper index (no valid items past this point) + sg_commit_listener* items; +} _sg_commit_listeners_t; + +typedef struct { + bool valid; + sg_desc desc; /* original desc with default values patched in */ + uint32_t frame_index; + sg_context active_context; + sg_pass cur_pass; + sg_pipeline cur_pipeline; + bool pass_valid; + bool bindings_valid; + bool next_draw_valid; + #if defined(SOKOL_DEBUG) + sg_log_item validate_error; + #endif + _sg_pools_t pools; + sg_backend backend; + sg_features features; + sg_limits limits; + sg_pixelformat_info formats[_SG_PIXELFORMAT_NUM]; + #if defined(_SOKOL_ANY_GL) + _sg_gl_backend_t gl; + #elif defined(SOKOL_METAL) + _sg_mtl_backend_t mtl; + #elif defined(SOKOL_D3D11) + _sg_d3d11_backend_t d3d11; + #elif defined(SOKOL_WGPU) + _sg_wgpu_backend_t wgpu; + #endif + #if defined(SOKOL_TRACE_HOOKS) + sg_trace_hooks hooks; + #endif + _sg_commit_listeners_t commit_listeners; +} _sg_state_t; +static _sg_state_t _sg; + +// ███████ █████ ███ ███ ██████ ██ ███████ ██████ ██████ █████ ██████ ██ ██ ███████ +// ██ ██ ██ ████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ███████ ██ ████ ██ ██████ ██ █████ ██████ ██ ███████ ██ ███████ █████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██ ██ ██ ██ ███████ ███████ ██ ██ ██████ ██ ██ ██████ ██ ██ ███████ +// +// >>sampler cache +/* + this is used by the Metal and WGPU backends to reduce the + number of sampler state objects created through the backend API +*/ +_SOKOL_PRIVATE void _sg_smpcache_init(_sg_sampler_cache_t* cache, int capacity) { + SOKOL_ASSERT(cache && (capacity > 0)); + _sg_clear(cache, sizeof(_sg_sampler_cache_t)); + cache->capacity = capacity; + const size_t size = (size_t)cache->capacity * sizeof(_sg_sampler_cache_item_t); + cache->items = (_sg_sampler_cache_item_t*) _sg_malloc_clear(size); +} + +_SOKOL_PRIVATE void _sg_smpcache_discard(_sg_sampler_cache_t* cache) { + SOKOL_ASSERT(cache && cache->items); + _sg_free(cache->items); + cache->items = 0; + cache->num_items = 0; + cache->capacity = 0; +} + +_SOKOL_PRIVATE int _sg_smpcache_minlod_int(float min_lod) { + return (int) (min_lod * 1000.0f); +} + +_SOKOL_PRIVATE int _sg_smpcache_maxlod_int(float max_lod) { + return (int) (_sg_clamp(max_lod, 0.0f, 1000.0f) * 1000.0f); +} + +_SOKOL_PRIVATE int _sg_smpcache_find_item(const _sg_sampler_cache_t* cache, const sg_image_desc* img_desc) { + /* return matching sampler cache item index or -1 */ + SOKOL_ASSERT(cache && cache->items); + SOKOL_ASSERT(img_desc); + const int min_lod = _sg_smpcache_minlod_int(img_desc->min_lod); + const int max_lod = _sg_smpcache_maxlod_int(img_desc->max_lod); + for (int i = 0; i < cache->num_items; i++) { + const _sg_sampler_cache_item_t* item = &cache->items[i]; + if ((img_desc->min_filter == item->min_filter) && + (img_desc->mag_filter == item->mag_filter) && + (img_desc->wrap_u == item->wrap_u) && + (img_desc->wrap_v == item->wrap_v) && + (img_desc->wrap_w == item->wrap_w) && + (img_desc->max_anisotropy == item->max_anisotropy) && + (img_desc->border_color == item->border_color) && + (min_lod == item->min_lod) && + (max_lod == item->max_lod)) + { + return i; + } + } + /* fallthrough: no matching cache item found */ + return -1; +} + +_SOKOL_PRIVATE void _sg_smpcache_add_item(_sg_sampler_cache_t* cache, const sg_image_desc* img_desc, uintptr_t sampler_handle) { + SOKOL_ASSERT(cache && cache->items); + SOKOL_ASSERT(img_desc); + SOKOL_ASSERT(cache->num_items < cache->capacity); + const int item_index = cache->num_items++; + _sg_sampler_cache_item_t* item = &cache->items[item_index]; + item->min_filter = img_desc->min_filter; + item->mag_filter = img_desc->mag_filter; + item->wrap_u = img_desc->wrap_u; + item->wrap_v = img_desc->wrap_v; + item->wrap_w = img_desc->wrap_w; + item->border_color = img_desc->border_color; + item->max_anisotropy = img_desc->max_anisotropy; + item->min_lod = _sg_smpcache_minlod_int(img_desc->min_lod); + item->max_lod = _sg_smpcache_maxlod_int(img_desc->max_lod); + item->sampler_handle = sampler_handle; +} + +_SOKOL_PRIVATE uintptr_t _sg_smpcache_sampler(_sg_sampler_cache_t* cache, int item_index) { + SOKOL_ASSERT(cache && cache->items); + SOKOL_ASSERT(item_index < cache->num_items); + return cache->items[item_index].sampler_handle; +} + +// ██ ██████ ██████ ██████ ██ ███ ██ ██████ +// ██ ██ ██ ██ ██ ██ ████ ██ ██ +// ██ ██ ██ ██ ███ ██ ███ ██ ██ ██ ██ ██ ███ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██████ ██████ ██████ ██ ██ ████ ██████ +// +// >>logging +#if defined(SOKOL_DEBUG) +#define _SG_LOGITEM_XMACRO(item,msg) #item ": " msg, +static const char* _sg_log_messages[] = { + _SG_LOG_ITEMS +}; +#undef _SG_LOGITEM_XMACRO +#endif // SOKOL_DEBUG + +#define _SG_PANIC(code) _sg_log(SG_LOGITEM_ ##code, 0, 0, __LINE__) +#define _SG_ERROR(code) _sg_log(SG_LOGITEM_ ##code, 1, 0, __LINE__) +#define _SG_WARN(code) _sg_log(SG_LOGITEM_ ##code, 2, 0, __LINE__) +#define _SG_INFO(code) _sg_log(SG_LOGITEM_ ##code, 3, 0, __LINE__) +#define _SG_LOGMSG(code,msg) _sg_log(SG_LOGITEM_ ##code, 3, msg, __LINE__) +#define _SG_VALIDATE(cond,code) if (!(cond)){ _sg.validate_error = SG_LOGITEM_ ##code; _sg_log(SG_LOGITEM_ ##code, 1, 0, __LINE__); } + +static void _sg_log(sg_log_item log_item, uint32_t log_level, const char* msg, uint32_t line_nr) { + if (_sg.desc.logger.func) { + const char* filename = 0; + #if defined(SOKOL_DEBUG) + filename = __FILE__; + if (0 == msg) { + msg = _sg_log_messages[log_item]; + } + #endif + _sg.desc.logger.func("sg", log_level, log_item, msg, line_nr, filename, _sg.desc.logger.user_data); + } + else { + // for log level PANIC it would be 'undefined behaviour' to continue + if (log_level == 0) { + abort(); + } + } +} + +// ███ ███ ███████ ███ ███ ██████ ██████ ██ ██ +// ████ ████ ██ ████ ████ ██ ██ ██ ██ ██ ██ +// ██ ████ ██ █████ ██ ████ ██ ██ ██ ██████ ████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ██ ██ ██████ ██ ██ ██ +// +// >>memory + +// a helper macro to clear a struct with potentially ARC'ed ObjC references +#if defined(SOKOL_METAL) + #if defined(__cplusplus) + #define _SG_CLEAR_ARC_STRUCT(type, item) { item = type(); } + #else + #define _SG_CLEAR_ARC_STRUCT(type, item) { item = (type) { 0 }; } + #endif +#else + #define _SG_CLEAR_ARC_STRUCT(type, item) { _sg_clear(&item, sizeof(item)); } +#endif + +_SOKOL_PRIVATE void _sg_clear(void* ptr, size_t size) { + SOKOL_ASSERT(ptr && (size > 0)); + memset(ptr, 0, size); +} + +_SOKOL_PRIVATE void* _sg_malloc(size_t size) { + SOKOL_ASSERT(size > 0); + void* ptr; + if (_sg.desc.allocator.alloc) { + ptr = _sg.desc.allocator.alloc(size, _sg.desc.allocator.user_data); + } + else { + ptr = malloc(size); + } + if (0 == ptr) { + _SG_PANIC(MALLOC_FAILED); + } + return ptr; +} + +_SOKOL_PRIVATE void* _sg_malloc_clear(size_t size) { + void* ptr = _sg_malloc(size); + _sg_clear(ptr, size); + return ptr; +} + +_SOKOL_PRIVATE void _sg_free(void* ptr) { + if (_sg.desc.allocator.free) { + _sg.desc.allocator.free(ptr, _sg.desc.allocator.user_data); + } + else { + free(ptr); + } +} + +_SOKOL_PRIVATE bool _sg_strempty(const _sg_str_t* str) { + return 0 == str->buf[0]; +} + +_SOKOL_PRIVATE const char* _sg_strptr(const _sg_str_t* str) { + return &str->buf[0]; +} + +_SOKOL_PRIVATE void _sg_strcpy(_sg_str_t* dst, const char* src) { + SOKOL_ASSERT(dst); + if (src) { + #if defined(_MSC_VER) + strncpy_s(dst->buf, _SG_STRING_SIZE, src, (_SG_STRING_SIZE-1)); + #else + strncpy(dst->buf, src, _SG_STRING_SIZE); + #endif + dst->buf[_SG_STRING_SIZE-1] = 0; + } + else { + _sg_clear(dst->buf, _SG_STRING_SIZE); + } +} + +// ██ ██ ███████ ██ ██████ ███████ ██████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ █████ ██ ██████ █████ ██████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ███████ ██ ███████ ██ ██ ███████ +// +// >>helpers +_SOKOL_PRIVATE uint32_t _sg_align_u32(uint32_t val, uint32_t align) { + SOKOL_ASSERT((align > 0) && ((align & (align - 1)) == 0)); + return (val + (align - 1)) & ~(align - 1); +} + +/* return byte size of a vertex format */ +_SOKOL_PRIVATE int _sg_vertexformat_bytesize(sg_vertex_format fmt) { + switch (fmt) { + case SG_VERTEXFORMAT_FLOAT: return 4; + case SG_VERTEXFORMAT_FLOAT2: return 8; + case SG_VERTEXFORMAT_FLOAT3: return 12; + case SG_VERTEXFORMAT_FLOAT4: return 16; + case SG_VERTEXFORMAT_BYTE4: return 4; + case SG_VERTEXFORMAT_BYTE4N: return 4; + case SG_VERTEXFORMAT_UBYTE4: return 4; + case SG_VERTEXFORMAT_UBYTE4N: return 4; + case SG_VERTEXFORMAT_SHORT2: return 4; + case SG_VERTEXFORMAT_SHORT2N: return 4; + case SG_VERTEXFORMAT_USHORT2N: return 4; + case SG_VERTEXFORMAT_SHORT4: return 8; + case SG_VERTEXFORMAT_SHORT4N: return 8; + case SG_VERTEXFORMAT_USHORT4N: return 8; + case SG_VERTEXFORMAT_UINT10_N2: return 4; + case SG_VERTEXFORMAT_HALF2: return 4; + case SG_VERTEXFORMAT_HALF4: return 8; + case SG_VERTEXFORMAT_INVALID: return 0; + default: + SOKOL_UNREACHABLE; + return -1; + } +} + +_SOKOL_PRIVATE uint32_t _sg_uniform_alignment(sg_uniform_type type, int array_count, sg_uniform_layout ub_layout) { + if (ub_layout == SG_UNIFORMLAYOUT_NATIVE) { + return 1; + } + else { + SOKOL_ASSERT(array_count > 0); + if (array_count == 1) { + switch (type) { + case SG_UNIFORMTYPE_FLOAT: + case SG_UNIFORMTYPE_INT: + return 4; + case SG_UNIFORMTYPE_FLOAT2: + case SG_UNIFORMTYPE_INT2: + return 8; + case SG_UNIFORMTYPE_FLOAT3: + case SG_UNIFORMTYPE_FLOAT4: + case SG_UNIFORMTYPE_INT3: + case SG_UNIFORMTYPE_INT4: + return 16; + case SG_UNIFORMTYPE_MAT4: + return 16; + default: + SOKOL_UNREACHABLE; + return 1; + } + } + else { + return 16; + } + } +} + +_SOKOL_PRIVATE uint32_t _sg_uniform_size(sg_uniform_type type, int array_count, sg_uniform_layout ub_layout) { + SOKOL_ASSERT(array_count > 0); + if (array_count == 1) { + switch (type) { + case SG_UNIFORMTYPE_FLOAT: + case SG_UNIFORMTYPE_INT: + return 4; + case SG_UNIFORMTYPE_FLOAT2: + case SG_UNIFORMTYPE_INT2: + return 8; + case SG_UNIFORMTYPE_FLOAT3: + case SG_UNIFORMTYPE_INT3: + return 12; + case SG_UNIFORMTYPE_FLOAT4: + case SG_UNIFORMTYPE_INT4: + return 16; + case SG_UNIFORMTYPE_MAT4: + return 64; + default: + SOKOL_UNREACHABLE; + return 0; + } + } + else { + if (ub_layout == SG_UNIFORMLAYOUT_NATIVE) { + switch (type) { + case SG_UNIFORMTYPE_FLOAT: + case SG_UNIFORMTYPE_INT: + return 4 * (uint32_t)array_count; + case SG_UNIFORMTYPE_FLOAT2: + case SG_UNIFORMTYPE_INT2: + return 8 * (uint32_t)array_count; + case SG_UNIFORMTYPE_FLOAT3: + case SG_UNIFORMTYPE_INT3: + return 12 * (uint32_t)array_count; + case SG_UNIFORMTYPE_FLOAT4: + case SG_UNIFORMTYPE_INT4: + return 16 * (uint32_t)array_count; + case SG_UNIFORMTYPE_MAT4: + return 64 * (uint32_t)array_count; + default: + SOKOL_UNREACHABLE; + return 0; + } + } + else { + switch (type) { + case SG_UNIFORMTYPE_FLOAT: + case SG_UNIFORMTYPE_FLOAT2: + case SG_UNIFORMTYPE_FLOAT3: + case SG_UNIFORMTYPE_FLOAT4: + case SG_UNIFORMTYPE_INT: + case SG_UNIFORMTYPE_INT2: + case SG_UNIFORMTYPE_INT3: + case SG_UNIFORMTYPE_INT4: + return 16 * (uint32_t)array_count; + case SG_UNIFORMTYPE_MAT4: + return 64 * (uint32_t)array_count; + default: + SOKOL_UNREACHABLE; + return 0; + } + } + } +} + +/* return true if pixel format is a compressed format */ +_SOKOL_PRIVATE bool _sg_is_compressed_pixel_format(sg_pixel_format fmt) { + switch (fmt) { + case SG_PIXELFORMAT_BC1_RGBA: + case SG_PIXELFORMAT_BC2_RGBA: + case SG_PIXELFORMAT_BC3_RGBA: + case SG_PIXELFORMAT_BC4_R: + case SG_PIXELFORMAT_BC4_RSN: + case SG_PIXELFORMAT_BC5_RG: + case SG_PIXELFORMAT_BC5_RGSN: + case SG_PIXELFORMAT_BC6H_RGBF: + case SG_PIXELFORMAT_BC6H_RGBUF: + case SG_PIXELFORMAT_BC7_RGBA: + case SG_PIXELFORMAT_PVRTC_RGB_2BPP: + case SG_PIXELFORMAT_PVRTC_RGB_4BPP: + case SG_PIXELFORMAT_PVRTC_RGBA_2BPP: + case SG_PIXELFORMAT_PVRTC_RGBA_4BPP: + case SG_PIXELFORMAT_ETC2_RGB8: + case SG_PIXELFORMAT_ETC2_RGB8A1: + case SG_PIXELFORMAT_ETC2_RGBA8: + case SG_PIXELFORMAT_ETC2_RG11: + case SG_PIXELFORMAT_ETC2_RG11SN: + return true; + default: + return false; + } +} + +/* return true if pixel format is a valid render target format */ +_SOKOL_PRIVATE bool _sg_is_valid_rendertarget_color_format(sg_pixel_format fmt) { + const int fmt_index = (int) fmt; + SOKOL_ASSERT((fmt_index >= 0) && (fmt_index < _SG_PIXELFORMAT_NUM)); + return _sg.formats[fmt_index].render && !_sg.formats[fmt_index].depth; +} + +/* return true if pixel format is a valid depth format */ +_SOKOL_PRIVATE bool _sg_is_valid_rendertarget_depth_format(sg_pixel_format fmt) { + const int fmt_index = (int) fmt; + SOKOL_ASSERT((fmt_index >= 0) && (fmt_index < _SG_PIXELFORMAT_NUM)); + return _sg.formats[fmt_index].render && _sg.formats[fmt_index].depth; +} + +/* return true if pixel format is a depth-stencil format */ +_SOKOL_PRIVATE bool _sg_is_depth_stencil_format(sg_pixel_format fmt) { + return (SG_PIXELFORMAT_DEPTH_STENCIL == fmt); +} + +/* return the bytes-per-pixel for a pixel format */ +_SOKOL_PRIVATE int _sg_pixelformat_bytesize(sg_pixel_format fmt) { + switch (fmt) { + case SG_PIXELFORMAT_R8: + case SG_PIXELFORMAT_R8SN: + case SG_PIXELFORMAT_R8UI: + case SG_PIXELFORMAT_R8SI: + return 1; + + case SG_PIXELFORMAT_R16: + case SG_PIXELFORMAT_R16SN: + case SG_PIXELFORMAT_R16UI: + case SG_PIXELFORMAT_R16SI: + case SG_PIXELFORMAT_R16F: + case SG_PIXELFORMAT_RG8: + case SG_PIXELFORMAT_RG8SN: + case SG_PIXELFORMAT_RG8UI: + case SG_PIXELFORMAT_RG8SI: + return 2; + + case SG_PIXELFORMAT_R32UI: + case SG_PIXELFORMAT_R32SI: + case SG_PIXELFORMAT_R32F: + case SG_PIXELFORMAT_RG16: + case SG_PIXELFORMAT_RG16SN: + case SG_PIXELFORMAT_RG16UI: + case SG_PIXELFORMAT_RG16SI: + case SG_PIXELFORMAT_RG16F: + case SG_PIXELFORMAT_RGBA8: + case SG_PIXELFORMAT_SRGB8A8: + case SG_PIXELFORMAT_RGBA8SN: + case SG_PIXELFORMAT_RGBA8UI: + case SG_PIXELFORMAT_RGBA8SI: + case SG_PIXELFORMAT_BGRA8: + case SG_PIXELFORMAT_RGB10A2: + case SG_PIXELFORMAT_RG11B10F: + case SG_PIXELFORMAT_RGB9E5: + return 4; + + case SG_PIXELFORMAT_RG32UI: + case SG_PIXELFORMAT_RG32SI: + case SG_PIXELFORMAT_RG32F: + case SG_PIXELFORMAT_RGBA16: + case SG_PIXELFORMAT_RGBA16SN: + case SG_PIXELFORMAT_RGBA16UI: + case SG_PIXELFORMAT_RGBA16SI: + case SG_PIXELFORMAT_RGBA16F: + return 8; + + case SG_PIXELFORMAT_RGBA32UI: + case SG_PIXELFORMAT_RGBA32SI: + case SG_PIXELFORMAT_RGBA32F: + return 16; + + default: + SOKOL_UNREACHABLE; + return 0; + } +} + +_SOKOL_PRIVATE int _sg_roundup(int val, int round_to) { + return (val+(round_to-1)) & ~(round_to-1); +} + +/* return row pitch for an image + + see ComputePitch in https://github.com/microsoft/DirectXTex/blob/master/DirectXTex/DirectXTexUtil.cpp + + For the special PVRTC pitch computation, see: + GL extension requirement (https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_compression_pvrtc.txt) + + Quote: + + 6) How is the imageSize argument calculated for the CompressedTexImage2D + and CompressedTexSubImage2D functions. + + Resolution: For PVRTC 4BPP formats the imageSize is calculated as: + ( max(width, 8) * max(height, 8) * 4 + 7) / 8 + For PVRTC 2BPP formats the imageSize is calculated as: + ( max(width, 16) * max(height, 8) * 2 + 7) / 8 +*/ +_SOKOL_PRIVATE int _sg_row_pitch(sg_pixel_format fmt, int width, int row_align) { + int pitch; + switch (fmt) { + case SG_PIXELFORMAT_BC1_RGBA: + case SG_PIXELFORMAT_BC4_R: + case SG_PIXELFORMAT_BC4_RSN: + case SG_PIXELFORMAT_ETC2_RGB8: + case SG_PIXELFORMAT_ETC2_RGB8A1: + pitch = ((width + 3) / 4) * 8; + pitch = pitch < 8 ? 8 : pitch; + break; + case SG_PIXELFORMAT_BC2_RGBA: + case SG_PIXELFORMAT_BC3_RGBA: + case SG_PIXELFORMAT_BC5_RG: + case SG_PIXELFORMAT_BC5_RGSN: + case SG_PIXELFORMAT_BC6H_RGBF: + case SG_PIXELFORMAT_BC6H_RGBUF: + case SG_PIXELFORMAT_BC7_RGBA: + case SG_PIXELFORMAT_ETC2_RGBA8: + case SG_PIXELFORMAT_ETC2_RG11: + case SG_PIXELFORMAT_ETC2_RG11SN: + pitch = ((width + 3) / 4) * 16; + pitch = pitch < 16 ? 16 : pitch; + break; + case SG_PIXELFORMAT_PVRTC_RGB_4BPP: + case SG_PIXELFORMAT_PVRTC_RGBA_4BPP: + pitch = (_sg_max(width, 8) * 4 + 7) / 8; + break; + case SG_PIXELFORMAT_PVRTC_RGB_2BPP: + case SG_PIXELFORMAT_PVRTC_RGBA_2BPP: + pitch = (_sg_max(width, 16) * 2 + 7) / 8; + break; + default: + pitch = width * _sg_pixelformat_bytesize(fmt); + break; + } + pitch = _sg_roundup(pitch, row_align); + return pitch; +} + +/* compute the number of rows in a surface depending on pixel format */ +_SOKOL_PRIVATE int _sg_num_rows(sg_pixel_format fmt, int height) { + int num_rows; + switch (fmt) { + case SG_PIXELFORMAT_BC1_RGBA: + case SG_PIXELFORMAT_BC4_R: + case SG_PIXELFORMAT_BC4_RSN: + case SG_PIXELFORMAT_ETC2_RGB8: + case SG_PIXELFORMAT_ETC2_RGB8A1: + case SG_PIXELFORMAT_ETC2_RGBA8: + case SG_PIXELFORMAT_ETC2_RG11: + case SG_PIXELFORMAT_ETC2_RG11SN: + case SG_PIXELFORMAT_BC2_RGBA: + case SG_PIXELFORMAT_BC3_RGBA: + case SG_PIXELFORMAT_BC5_RG: + case SG_PIXELFORMAT_BC5_RGSN: + case SG_PIXELFORMAT_BC6H_RGBF: + case SG_PIXELFORMAT_BC6H_RGBUF: + case SG_PIXELFORMAT_BC7_RGBA: + num_rows = ((height + 3) / 4); + break; + case SG_PIXELFORMAT_PVRTC_RGB_4BPP: + case SG_PIXELFORMAT_PVRTC_RGBA_4BPP: + case SG_PIXELFORMAT_PVRTC_RGB_2BPP: + case SG_PIXELFORMAT_PVRTC_RGBA_2BPP: + /* NOTE: this is most likely not correct because it ignores any + PVCRTC block size, but multiplied with _sg_row_pitch() + it gives the correct surface pitch. + + See: https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_compression_pvrtc.txt + */ + num_rows = ((_sg_max(height, 8) + 7) / 8) * 8; + break; + default: + num_rows = height; + break; + } + if (num_rows < 1) { + num_rows = 1; + } + return num_rows; +} + +/* return pitch of a 2D subimage / texture slice + see ComputePitch in https://github.com/microsoft/DirectXTex/blob/master/DirectXTex/DirectXTexUtil.cpp +*/ +_SOKOL_PRIVATE int _sg_surface_pitch(sg_pixel_format fmt, int width, int height, int row_align) { + int num_rows = _sg_num_rows(fmt, height); + return num_rows * _sg_row_pitch(fmt, width, row_align); +} + +/* capability table pixel format helper functions */ +_SOKOL_PRIVATE void _sg_pixelformat_all(sg_pixelformat_info* pfi) { + pfi->sample = true; + pfi->filter = true; + pfi->blend = true; + pfi->render = true; + pfi->msaa = true; +} + +_SOKOL_PRIVATE void _sg_pixelformat_s(sg_pixelformat_info* pfi) { + pfi->sample = true; +} + +_SOKOL_PRIVATE void _sg_pixelformat_sf(sg_pixelformat_info* pfi) { + pfi->sample = true; + pfi->filter = true; +} + +_SOKOL_PRIVATE void _sg_pixelformat_sr(sg_pixelformat_info* pfi) { + pfi->sample = true; + pfi->render = true; +} + +_SOKOL_PRIVATE void _sg_pixelformat_srmd(sg_pixelformat_info* pfi) { + pfi->sample = true; + pfi->render = true; + pfi->msaa = true; + pfi->depth = true; +} + +_SOKOL_PRIVATE void _sg_pixelformat_srm(sg_pixelformat_info* pfi) { + pfi->sample = true; + pfi->render = true; + pfi->msaa = true; +} + +_SOKOL_PRIVATE void _sg_pixelformat_sfrm(sg_pixelformat_info* pfi) { + pfi->sample = true; + pfi->filter = true; + pfi->render = true; + pfi->msaa = true; +} +_SOKOL_PRIVATE void _sg_pixelformat_sbrm(sg_pixelformat_info* pfi) { + pfi->sample = true; + pfi->blend = true; + pfi->render = true; + pfi->msaa = true; +} + +_SOKOL_PRIVATE void _sg_pixelformat_sbr(sg_pixelformat_info* pfi) { + pfi->sample = true; + pfi->blend = true; + pfi->render = true; +} + +_SOKOL_PRIVATE void _sg_pixelformat_sfbr(sg_pixelformat_info* pfi) { + pfi->sample = true; + pfi->filter = true; + pfi->blend = true; + pfi->render = true; +} + +/* resolve pass action defaults into a new pass action struct */ +_SOKOL_PRIVATE void _sg_resolve_default_pass_action(const sg_pass_action* from, sg_pass_action* to) { + SOKOL_ASSERT(from && to); + *to = *from; + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + if (to->colors[i].action == _SG_ACTION_DEFAULT) { + to->colors[i].action = SG_ACTION_CLEAR; + to->colors[i].value.r = SG_DEFAULT_CLEAR_RED; + to->colors[i].value.g = SG_DEFAULT_CLEAR_GREEN; + to->colors[i].value.b = SG_DEFAULT_CLEAR_BLUE; + to->colors[i].value.a = SG_DEFAULT_CLEAR_ALPHA; + } + } + if (to->depth.action == _SG_ACTION_DEFAULT) { + to->depth.action = SG_ACTION_CLEAR; + to->depth.value = SG_DEFAULT_CLEAR_DEPTH; + } + if (to->stencil.action == _SG_ACTION_DEFAULT) { + to->stencil.action = SG_ACTION_CLEAR; + to->stencil.value = SG_DEFAULT_CLEAR_STENCIL; + } +} + +// ██████ ██ ██ ███ ███ ███ ███ ██ ██ ██████ █████ ██████ ██ ██ ███████ ███ ██ ██████ +// ██ ██ ██ ██ ████ ████ ████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ +// ██ ██ ██ ██ ██ ████ ██ ██ ████ ██ ████ ██████ ███████ ██ █████ █████ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██████ ██ ██ ██ ██ ██ ██████ ██ ██ ██████ ██ ██ ███████ ██ ████ ██████ +// +// >>dummy backend +#if defined(SOKOL_DUMMY_BACKEND) + +_SOKOL_PRIVATE void _sg_dummy_setup_backend(const sg_desc* desc) { + SOKOL_ASSERT(desc); + _SOKOL_UNUSED(desc); + _sg.backend = SG_BACKEND_DUMMY; + for (int i = SG_PIXELFORMAT_R8; i < SG_PIXELFORMAT_BC1_RGBA; i++) { + _sg.formats[i].sample = true; + _sg.formats[i].filter = true; + _sg.formats[i].render = true; + _sg.formats[i].blend = true; + _sg.formats[i].msaa = true; + } + _sg.formats[SG_PIXELFORMAT_DEPTH].depth = true; + _sg.formats[SG_PIXELFORMAT_DEPTH_STENCIL].depth = true; +} + +_SOKOL_PRIVATE void _sg_dummy_discard_backend(void) { + /* empty */ +} + +_SOKOL_PRIVATE void _sg_dummy_reset_state_cache(void) { + /* empty*/ +} + +_SOKOL_PRIVATE sg_resource_state _sg_dummy_create_context(_sg_context_t* ctx) { + SOKOL_ASSERT(ctx); + _SOKOL_UNUSED(ctx); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_dummy_discard_context(_sg_context_t* ctx) { + SOKOL_ASSERT(ctx); + _SOKOL_UNUSED(ctx); +} + +_SOKOL_PRIVATE void _sg_dummy_activate_context(_sg_context_t* ctx) { + SOKOL_ASSERT(ctx); + _SOKOL_UNUSED(ctx); +} + +_SOKOL_PRIVATE sg_resource_state _sg_dummy_create_buffer(_sg_buffer_t* buf, const sg_buffer_desc* desc) { + SOKOL_ASSERT(buf && desc); + _sg_buffer_common_init(&buf->cmn, desc); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_dummy_discard_buffer(_sg_buffer_t* buf) { + SOKOL_ASSERT(buf); + _SOKOL_UNUSED(buf); +} + +_SOKOL_PRIVATE sg_resource_state _sg_dummy_create_image(_sg_image_t* img, const sg_image_desc* desc) { + SOKOL_ASSERT(img && desc); + _sg_image_common_init(&img->cmn, desc); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_dummy_discard_image(_sg_image_t* img) { + SOKOL_ASSERT(img); + _SOKOL_UNUSED(img); +} + +_SOKOL_PRIVATE sg_resource_state _sg_dummy_create_shader(_sg_shader_t* shd, const sg_shader_desc* desc) { + SOKOL_ASSERT(shd && desc); + _sg_shader_common_init(&shd->cmn, desc); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_dummy_discard_shader(_sg_shader_t* shd) { + SOKOL_ASSERT(shd); + _SOKOL_UNUSED(shd); +} + +_SOKOL_PRIVATE sg_resource_state _sg_dummy_create_pipeline(_sg_pipeline_t* pip, _sg_shader_t* shd, const sg_pipeline_desc* desc) { + SOKOL_ASSERT(pip && desc); + pip->shader = shd; + _sg_pipeline_common_init(&pip->cmn, desc); + for (int attr_index = 0; attr_index < SG_MAX_VERTEX_ATTRIBUTES; attr_index++) { + const sg_vertex_attr_desc* a_desc = &desc->layout.attrs[attr_index]; + if (a_desc->format == SG_VERTEXFORMAT_INVALID) { + break; + } + SOKOL_ASSERT(a_desc->buffer_index < SG_MAX_SHADERSTAGE_BUFFERS); + pip->cmn.vertex_layout_valid[a_desc->buffer_index] = true; + } + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_dummy_discard_pipeline(_sg_pipeline_t* pip) { + SOKOL_ASSERT(pip); + _SOKOL_UNUSED(pip); +} + +_SOKOL_PRIVATE sg_resource_state _sg_dummy_create_pass(_sg_pass_t* pass, _sg_image_t** att_images, const sg_pass_desc* desc) { + SOKOL_ASSERT(pass && desc); + SOKOL_ASSERT(att_images && att_images[0]); + + _sg_pass_common_init(&pass->cmn, desc); + + const sg_pass_attachment_desc* att_desc; + for (int i = 0; i < pass->cmn.num_color_atts; i++) { + att_desc = &desc->color_attachments[i]; + SOKOL_ASSERT(att_desc->image.id != SG_INVALID_ID); + SOKOL_ASSERT(0 == pass->dmy.color_atts[i].image); + SOKOL_ASSERT(att_images[i] && (att_images[i]->slot.id == att_desc->image.id)); + SOKOL_ASSERT(_sg_is_valid_rendertarget_color_format(att_images[i]->cmn.pixel_format)); + pass->dmy.color_atts[i].image = att_images[i]; + } + + SOKOL_ASSERT(0 == pass->dmy.ds_att.image); + att_desc = &desc->depth_stencil_attachment; + if (att_desc->image.id != SG_INVALID_ID) { + const int ds_img_index = SG_MAX_COLOR_ATTACHMENTS; + SOKOL_ASSERT(att_images[ds_img_index] && (att_images[ds_img_index]->slot.id == att_desc->image.id)); + SOKOL_ASSERT(_sg_is_valid_rendertarget_depth_format(att_images[ds_img_index]->cmn.pixel_format)); + pass->dmy.ds_att.image = att_images[ds_img_index]; + } + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_dummy_discard_pass(_sg_pass_t* pass) { + SOKOL_ASSERT(pass); + _SOKOL_UNUSED(pass); +} + +_SOKOL_PRIVATE _sg_image_t* _sg_dummy_pass_color_image(const _sg_pass_t* pass, int index) { + SOKOL_ASSERT(pass && (index >= 0) && (index < SG_MAX_COLOR_ATTACHMENTS)); + /* NOTE: may return null */ + return pass->dmy.color_atts[index].image; +} + +_SOKOL_PRIVATE _sg_image_t* _sg_dummy_pass_ds_image(const _sg_pass_t* pass) { + /* NOTE: may return null */ + SOKOL_ASSERT(pass); + return pass->dmy.ds_att.image; +} + +_SOKOL_PRIVATE void _sg_dummy_begin_pass(_sg_pass_t* pass, const sg_pass_action* action, int w, int h) { + SOKOL_ASSERT(action); + _SOKOL_UNUSED(pass); + _SOKOL_UNUSED(action); + _SOKOL_UNUSED(w); + _SOKOL_UNUSED(h); +} + +_SOKOL_PRIVATE void _sg_dummy_end_pass(void) { + /* empty */ +} + +_SOKOL_PRIVATE void _sg_dummy_commit(void) { + /* empty */ +} + +_SOKOL_PRIVATE void _sg_dummy_apply_viewport(int x, int y, int w, int h, bool origin_top_left) { + _SOKOL_UNUSED(x); + _SOKOL_UNUSED(y); + _SOKOL_UNUSED(w); + _SOKOL_UNUSED(h); + _SOKOL_UNUSED(origin_top_left); +} + +_SOKOL_PRIVATE void _sg_dummy_apply_scissor_rect(int x, int y, int w, int h, bool origin_top_left) { + _SOKOL_UNUSED(x); + _SOKOL_UNUSED(y); + _SOKOL_UNUSED(w); + _SOKOL_UNUSED(h); + _SOKOL_UNUSED(origin_top_left); +} + +_SOKOL_PRIVATE void _sg_dummy_apply_pipeline(_sg_pipeline_t* pip) { + SOKOL_ASSERT(pip); + _SOKOL_UNUSED(pip); +} + +_SOKOL_PRIVATE void _sg_dummy_apply_bindings( + _sg_pipeline_t* pip, + _sg_buffer_t** vbs, const int* vb_offsets, int num_vbs, + _sg_buffer_t* ib, int ib_offset, + _sg_image_t** vs_imgs, int num_vs_imgs, + _sg_image_t** fs_imgs, int num_fs_imgs) +{ + SOKOL_ASSERT(pip); + SOKOL_ASSERT(vbs && vb_offsets); + SOKOL_ASSERT(vs_imgs); + SOKOL_ASSERT(fs_imgs); + _SOKOL_UNUSED(pip); + _SOKOL_UNUSED(vbs); _SOKOL_UNUSED(vb_offsets); _SOKOL_UNUSED(num_vbs); + _SOKOL_UNUSED(ib); _SOKOL_UNUSED(ib_offset); + _SOKOL_UNUSED(vs_imgs); _SOKOL_UNUSED(num_vs_imgs); + _SOKOL_UNUSED(fs_imgs); _SOKOL_UNUSED(num_fs_imgs); +} + +_SOKOL_PRIVATE void _sg_dummy_apply_uniforms(sg_shader_stage stage_index, int ub_index, const sg_range* data) { + _SOKOL_UNUSED(stage_index); + _SOKOL_UNUSED(ub_index); + _SOKOL_UNUSED(data); +} + +_SOKOL_PRIVATE void _sg_dummy_draw(int base_element, int num_elements, int num_instances) { + _SOKOL_UNUSED(base_element); + _SOKOL_UNUSED(num_elements); + _SOKOL_UNUSED(num_instances); +} + +_SOKOL_PRIVATE void _sg_dummy_update_buffer(_sg_buffer_t* buf, const sg_range* data) { + SOKOL_ASSERT(buf && data && data->ptr && (data->size > 0)); + _SOKOL_UNUSED(data); + if (++buf->cmn.active_slot >= buf->cmn.num_slots) { + buf->cmn.active_slot = 0; + } +} + +_SOKOL_PRIVATE int _sg_dummy_append_buffer(_sg_buffer_t* buf, const sg_range* data, bool new_frame) { + SOKOL_ASSERT(buf && data && data->ptr && (data->size > 0)); + _SOKOL_UNUSED(data); + if (new_frame) { + if (++buf->cmn.active_slot >= buf->cmn.num_slots) { + buf->cmn.active_slot = 0; + } + } + /* NOTE: this is a requirement from WebGPU, but we want identical behaviour across all backend */ + return _sg_roundup((int)data->size, 4); +} + +_SOKOL_PRIVATE void _sg_dummy_update_image(_sg_image_t* img, const sg_image_data* data) { + SOKOL_ASSERT(img && data); + _SOKOL_UNUSED(data); + if (++img->cmn.active_slot >= img->cmn.num_slots) { + img->cmn.active_slot = 0; + } +} + +// ██████ ██████ ███████ ███ ██ ██████ ██ ██████ █████ ██████ ██ ██ ███████ ███ ██ ██████ +// ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ +// ██ ██ ██████ █████ ██ ██ ██ ██ ███ ██ ██████ ███████ ██ █████ █████ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ███████ ██ ████ ██████ ███████ ██████ ██ ██ ██████ ██ ██ ███████ ██ ████ ██████ +// +// >>opengl backend +#elif defined(_SOKOL_ANY_GL) + +// optional GL loader for win32 +#if defined(_SOKOL_USE_WIN32_GL_LOADER) + +// X Macro list of GL function names and signatures +#define _SG_GL_FUNCS \ + _SG_XMACRO(glBindVertexArray, void, (GLuint array)) \ + _SG_XMACRO(glFramebufferTextureLayer, void, (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) \ + _SG_XMACRO(glGenFramebuffers, void, (GLsizei n, GLuint * framebuffers)) \ + _SG_XMACRO(glBindFramebuffer, void, (GLenum target, GLuint framebuffer)) \ + _SG_XMACRO(glBindRenderbuffer, void, (GLenum target, GLuint renderbuffer)) \ + _SG_XMACRO(glGetStringi, const GLubyte *, (GLenum name, GLuint index)) \ + _SG_XMACRO(glClearBufferfi, void, (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)) \ + _SG_XMACRO(glClearBufferfv, void, (GLenum buffer, GLint drawbuffer, const GLfloat * value)) \ + _SG_XMACRO(glClearBufferuiv, void, (GLenum buffer, GLint drawbuffer, const GLuint * value)) \ + _SG_XMACRO(glClearBufferiv, void, (GLenum buffer, GLint drawbuffer, const GLint * value)) \ + _SG_XMACRO(glDeleteRenderbuffers, void, (GLsizei n, const GLuint * renderbuffers)) \ + _SG_XMACRO(glUniform1fv, void, (GLint location, GLsizei count, const GLfloat * value)) \ + _SG_XMACRO(glUniform2fv, void, (GLint location, GLsizei count, const GLfloat * value)) \ + _SG_XMACRO(glUniform3fv, void, (GLint location, GLsizei count, const GLfloat * value)) \ + _SG_XMACRO(glUniform4fv, void, (GLint location, GLsizei count, const GLfloat * value)) \ + _SG_XMACRO(glUniform1iv, void, (GLint location, GLsizei count, const GLint * value)) \ + _SG_XMACRO(glUniform2iv, void, (GLint location, GLsizei count, const GLint * value)) \ + _SG_XMACRO(glUniform3iv, void, (GLint location, GLsizei count, const GLint * value)) \ + _SG_XMACRO(glUniform4iv, void, (GLint location, GLsizei count, const GLint * value)) \ + _SG_XMACRO(glUniformMatrix4fv, void, (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)) \ + _SG_XMACRO(glUseProgram, void, (GLuint program)) \ + _SG_XMACRO(glShaderSource, void, (GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length)) \ + _SG_XMACRO(glLinkProgram, void, (GLuint program)) \ + _SG_XMACRO(glGetUniformLocation, GLint, (GLuint program, const GLchar * name)) \ + _SG_XMACRO(glGetShaderiv, void, (GLuint shader, GLenum pname, GLint * params)) \ + _SG_XMACRO(glGetProgramInfoLog, void, (GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog)) \ + _SG_XMACRO(glGetAttribLocation, GLint, (GLuint program, const GLchar * name)) \ + _SG_XMACRO(glDisableVertexAttribArray, void, (GLuint index)) \ + _SG_XMACRO(glDeleteShader, void, (GLuint shader)) \ + _SG_XMACRO(glDeleteProgram, void, (GLuint program)) \ + _SG_XMACRO(glCompileShader, void, (GLuint shader)) \ + _SG_XMACRO(glStencilFuncSeparate, void, (GLenum face, GLenum func, GLint ref, GLuint mask)) \ + _SG_XMACRO(glStencilOpSeparate, void, (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)) \ + _SG_XMACRO(glRenderbufferStorageMultisample, void, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \ + _SG_XMACRO(glDrawBuffers, void, (GLsizei n, const GLenum * bufs)) \ + _SG_XMACRO(glVertexAttribDivisor, void, (GLuint index, GLuint divisor)) \ + _SG_XMACRO(glBufferSubData, void, (GLenum target, GLintptr offset, GLsizeiptr size, const void * data)) \ + _SG_XMACRO(glGenBuffers, void, (GLsizei n, GLuint * buffers)) \ + _SG_XMACRO(glCheckFramebufferStatus, GLenum, (GLenum target)) \ + _SG_XMACRO(glFramebufferRenderbuffer, void, (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) \ + _SG_XMACRO(glCompressedTexImage2D, void, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data)) \ + _SG_XMACRO(glCompressedTexImage3D, void, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data)) \ + _SG_XMACRO(glActiveTexture, void, (GLenum texture)) \ + _SG_XMACRO(glTexSubImage3D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels)) \ + _SG_XMACRO(glRenderbufferStorage, void, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)) \ + _SG_XMACRO(glGenTextures, void, (GLsizei n, GLuint * textures)) \ + _SG_XMACRO(glPolygonOffset, void, (GLfloat factor, GLfloat units)) \ + _SG_XMACRO(glDrawElements, void, (GLenum mode, GLsizei count, GLenum type, const void * indices)) \ + _SG_XMACRO(glDeleteFramebuffers, void, (GLsizei n, const GLuint * framebuffers)) \ + _SG_XMACRO(glBlendEquationSeparate, void, (GLenum modeRGB, GLenum modeAlpha)) \ + _SG_XMACRO(glDeleteTextures, void, (GLsizei n, const GLuint * textures)) \ + _SG_XMACRO(glGetProgramiv, void, (GLuint program, GLenum pname, GLint * params)) \ + _SG_XMACRO(glBindTexture, void, (GLenum target, GLuint texture)) \ + _SG_XMACRO(glTexImage3D, void, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels)) \ + _SG_XMACRO(glCreateShader, GLuint, (GLenum type)) \ + _SG_XMACRO(glTexSubImage2D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels)) \ + _SG_XMACRO(glFramebufferTexture2D, void, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) \ + _SG_XMACRO(glCreateProgram, GLuint, (void)) \ + _SG_XMACRO(glViewport, void, (GLint x, GLint y, GLsizei width, GLsizei height)) \ + _SG_XMACRO(glDeleteBuffers, void, (GLsizei n, const GLuint * buffers)) \ + _SG_XMACRO(glDrawArrays, void, (GLenum mode, GLint first, GLsizei count)) \ + _SG_XMACRO(glDrawElementsInstanced, void, (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount)) \ + _SG_XMACRO(glVertexAttribPointer, void, (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer)) \ + _SG_XMACRO(glUniform1i, void, (GLint location, GLint v0)) \ + _SG_XMACRO(glDisable, void, (GLenum cap)) \ + _SG_XMACRO(glColorMask, void, (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)) \ + _SG_XMACRO(glColorMaski, void, (GLuint buf, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)) \ + _SG_XMACRO(glBindBuffer, void, (GLenum target, GLuint buffer)) \ + _SG_XMACRO(glDeleteVertexArrays, void, (GLsizei n, const GLuint * arrays)) \ + _SG_XMACRO(glDepthMask, void, (GLboolean flag)) \ + _SG_XMACRO(glDrawArraysInstanced, void, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount)) \ + _SG_XMACRO(glScissor, void, (GLint x, GLint y, GLsizei width, GLsizei height)) \ + _SG_XMACRO(glGenRenderbuffers, void, (GLsizei n, GLuint * renderbuffers)) \ + _SG_XMACRO(glBufferData, void, (GLenum target, GLsizeiptr size, const void * data, GLenum usage)) \ + _SG_XMACRO(glBlendFuncSeparate, void, (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)) \ + _SG_XMACRO(glTexParameteri, void, (GLenum target, GLenum pname, GLint param)) \ + _SG_XMACRO(glGetIntegerv, void, (GLenum pname, GLint * data)) \ + _SG_XMACRO(glEnable, void, (GLenum cap)) \ + _SG_XMACRO(glBlitFramebuffer, void, (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) \ + _SG_XMACRO(glStencilMask, void, (GLuint mask)) \ + _SG_XMACRO(glAttachShader, void, (GLuint program, GLuint shader)) \ + _SG_XMACRO(glGetError, GLenum, (void)) \ + _SG_XMACRO(glBlendColor, void, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) \ + _SG_XMACRO(glTexParameterf, void, (GLenum target, GLenum pname, GLfloat param)) \ + _SG_XMACRO(glTexParameterfv, void, (GLenum target, GLenum pname, const GLfloat* params)) \ + _SG_XMACRO(glGetShaderInfoLog, void, (GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog)) \ + _SG_XMACRO(glDepthFunc, void, (GLenum func)) \ + _SG_XMACRO(glStencilOp , void, (GLenum fail, GLenum zfail, GLenum zpass)) \ + _SG_XMACRO(glStencilFunc, void, (GLenum func, GLint ref, GLuint mask)) \ + _SG_XMACRO(glEnableVertexAttribArray, void, (GLuint index)) \ + _SG_XMACRO(glBlendFunc, void, (GLenum sfactor, GLenum dfactor)) \ + _SG_XMACRO(glReadBuffer, void, (GLenum src)) \ + _SG_XMACRO(glTexImage2D, void, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels)) \ + _SG_XMACRO(glGenVertexArrays, void, (GLsizei n, GLuint * arrays)) \ + _SG_XMACRO(glFrontFace, void, (GLenum mode)) \ + _SG_XMACRO(glCullFace, void, (GLenum mode)) \ + _SG_XMACRO(glPixelStorei, void, (GLenum pname, GLint param)) + +// generate GL function pointer typedefs +#define _SG_XMACRO(name, ret, args) typedef ret (GL_APIENTRY* PFN_ ## name) args; +_SG_GL_FUNCS +#undef _SG_XMACRO + +// generate GL function pointers +#define _SG_XMACRO(name, ret, args) static PFN_ ## name name; +_SG_GL_FUNCS +#undef _SG_XMACRO + +// helper function to lookup GL functions in GL DLL +typedef PROC (WINAPI * _sg_wglGetProcAddress)(LPCSTR); +_SOKOL_PRIVATE void* _sg_gl_getprocaddr(const char* name, _sg_wglGetProcAddress wgl_getprocaddress) { + void* proc_addr = (void*) wgl_getprocaddress(name); + if (0 == proc_addr) { + proc_addr = (void*) GetProcAddress(_sg.gl.opengl32_dll, name); + } + SOKOL_ASSERT(proc_addr); + return proc_addr; +} + +// populate GL function pointers +_SOKOL_PRIVATE void _sg_gl_load_opengl(void) { + SOKOL_ASSERT(0 == _sg.gl.opengl32_dll); + _sg.gl.opengl32_dll = LoadLibraryA("opengl32.dll"); + SOKOL_ASSERT(_sg.gl.opengl32_dll); + _sg_wglGetProcAddress wgl_getprocaddress = (_sg_wglGetProcAddress) GetProcAddress(_sg.gl.opengl32_dll, "wglGetProcAddress"); + SOKOL_ASSERT(wgl_getprocaddress); + #define _SG_XMACRO(name, ret, args) name = (PFN_ ## name) _sg_gl_getprocaddr(#name, wgl_getprocaddress); + _SG_GL_FUNCS + #undef _SG_XMACRO +} + +_SOKOL_PRIVATE void _sg_gl_unload_opengl(void) { + SOKOL_ASSERT(_sg.gl.opengl32_dll); + FreeLibrary(_sg.gl.opengl32_dll); + _sg.gl.opengl32_dll = 0; +} +#endif // _SOKOL_USE_WIN32_GL_LOADER + +/*-- type translation --------------------------------------------------------*/ +_SOKOL_PRIVATE GLenum _sg_gl_buffer_target(sg_buffer_type t) { + switch (t) { + case SG_BUFFERTYPE_VERTEXBUFFER: return GL_ARRAY_BUFFER; + case SG_BUFFERTYPE_INDEXBUFFER: return GL_ELEMENT_ARRAY_BUFFER; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_texture_target(sg_image_type t) { + switch (t) { + case SG_IMAGETYPE_2D: return GL_TEXTURE_2D; + case SG_IMAGETYPE_CUBE: return GL_TEXTURE_CUBE_MAP; + case SG_IMAGETYPE_3D: return GL_TEXTURE_3D; + case SG_IMAGETYPE_ARRAY: return GL_TEXTURE_2D_ARRAY; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_usage(sg_usage u) { + switch (u) { + case SG_USAGE_IMMUTABLE: return GL_STATIC_DRAW; + case SG_USAGE_DYNAMIC: return GL_DYNAMIC_DRAW; + case SG_USAGE_STREAM: return GL_STREAM_DRAW; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_shader_stage(sg_shader_stage stage) { + switch (stage) { + case SG_SHADERSTAGE_VS: return GL_VERTEX_SHADER; + case SG_SHADERSTAGE_FS: return GL_FRAGMENT_SHADER; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLint _sg_gl_vertexformat_size(sg_vertex_format fmt) { + switch (fmt) { + case SG_VERTEXFORMAT_FLOAT: return 1; + case SG_VERTEXFORMAT_FLOAT2: return 2; + case SG_VERTEXFORMAT_FLOAT3: return 3; + case SG_VERTEXFORMAT_FLOAT4: return 4; + case SG_VERTEXFORMAT_BYTE4: return 4; + case SG_VERTEXFORMAT_BYTE4N: return 4; + case SG_VERTEXFORMAT_UBYTE4: return 4; + case SG_VERTEXFORMAT_UBYTE4N: return 4; + case SG_VERTEXFORMAT_SHORT2: return 2; + case SG_VERTEXFORMAT_SHORT2N: return 2; + case SG_VERTEXFORMAT_USHORT2N: return 2; + case SG_VERTEXFORMAT_SHORT4: return 4; + case SG_VERTEXFORMAT_SHORT4N: return 4; + case SG_VERTEXFORMAT_USHORT4N: return 4; + case SG_VERTEXFORMAT_UINT10_N2: return 4; + case SG_VERTEXFORMAT_HALF2: return 2; + case SG_VERTEXFORMAT_HALF4: return 4; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_vertexformat_type(sg_vertex_format fmt) { + switch (fmt) { + case SG_VERTEXFORMAT_FLOAT: + case SG_VERTEXFORMAT_FLOAT2: + case SG_VERTEXFORMAT_FLOAT3: + case SG_VERTEXFORMAT_FLOAT4: + return GL_FLOAT; + case SG_VERTEXFORMAT_BYTE4: + case SG_VERTEXFORMAT_BYTE4N: + return GL_BYTE; + case SG_VERTEXFORMAT_UBYTE4: + case SG_VERTEXFORMAT_UBYTE4N: + return GL_UNSIGNED_BYTE; + case SG_VERTEXFORMAT_SHORT2: + case SG_VERTEXFORMAT_SHORT2N: + case SG_VERTEXFORMAT_SHORT4: + case SG_VERTEXFORMAT_SHORT4N: + return GL_SHORT; + case SG_VERTEXFORMAT_USHORT2N: + case SG_VERTEXFORMAT_USHORT4N: + return GL_UNSIGNED_SHORT; + case SG_VERTEXFORMAT_UINT10_N2: + return GL_UNSIGNED_INT_2_10_10_10_REV; + case SG_VERTEXFORMAT_HALF2: + case SG_VERTEXFORMAT_HALF4: + return GL_HALF_FLOAT; + default: + SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLboolean _sg_gl_vertexformat_normalized(sg_vertex_format fmt) { + switch (fmt) { + case SG_VERTEXFORMAT_BYTE4N: + case SG_VERTEXFORMAT_UBYTE4N: + case SG_VERTEXFORMAT_SHORT2N: + case SG_VERTEXFORMAT_USHORT2N: + case SG_VERTEXFORMAT_SHORT4N: + case SG_VERTEXFORMAT_USHORT4N: + case SG_VERTEXFORMAT_UINT10_N2: + return GL_TRUE; + default: + return GL_FALSE; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_primitive_type(sg_primitive_type t) { + switch (t) { + case SG_PRIMITIVETYPE_POINTS: return GL_POINTS; + case SG_PRIMITIVETYPE_LINES: return GL_LINES; + case SG_PRIMITIVETYPE_LINE_STRIP: return GL_LINE_STRIP; + case SG_PRIMITIVETYPE_TRIANGLES: return GL_TRIANGLES; + case SG_PRIMITIVETYPE_TRIANGLE_STRIP: return GL_TRIANGLE_STRIP; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_index_type(sg_index_type t) { + switch (t) { + case SG_INDEXTYPE_NONE: return 0; + case SG_INDEXTYPE_UINT16: return GL_UNSIGNED_SHORT; + case SG_INDEXTYPE_UINT32: return GL_UNSIGNED_INT; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_compare_func(sg_compare_func cmp) { + switch (cmp) { + case SG_COMPAREFUNC_NEVER: return GL_NEVER; + case SG_COMPAREFUNC_LESS: return GL_LESS; + case SG_COMPAREFUNC_EQUAL: return GL_EQUAL; + case SG_COMPAREFUNC_LESS_EQUAL: return GL_LEQUAL; + case SG_COMPAREFUNC_GREATER: return GL_GREATER; + case SG_COMPAREFUNC_NOT_EQUAL: return GL_NOTEQUAL; + case SG_COMPAREFUNC_GREATER_EQUAL: return GL_GEQUAL; + case SG_COMPAREFUNC_ALWAYS: return GL_ALWAYS; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_stencil_op(sg_stencil_op op) { + switch (op) { + case SG_STENCILOP_KEEP: return GL_KEEP; + case SG_STENCILOP_ZERO: return GL_ZERO; + case SG_STENCILOP_REPLACE: return GL_REPLACE; + case SG_STENCILOP_INCR_CLAMP: return GL_INCR; + case SG_STENCILOP_DECR_CLAMP: return GL_DECR; + case SG_STENCILOP_INVERT: return GL_INVERT; + case SG_STENCILOP_INCR_WRAP: return GL_INCR_WRAP; + case SG_STENCILOP_DECR_WRAP: return GL_DECR_WRAP; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_blend_factor(sg_blend_factor f) { + switch (f) { + case SG_BLENDFACTOR_ZERO: return GL_ZERO; + case SG_BLENDFACTOR_ONE: return GL_ONE; + case SG_BLENDFACTOR_SRC_COLOR: return GL_SRC_COLOR; + case SG_BLENDFACTOR_ONE_MINUS_SRC_COLOR: return GL_ONE_MINUS_SRC_COLOR; + case SG_BLENDFACTOR_SRC_ALPHA: return GL_SRC_ALPHA; + case SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA: return GL_ONE_MINUS_SRC_ALPHA; + case SG_BLENDFACTOR_DST_COLOR: return GL_DST_COLOR; + case SG_BLENDFACTOR_ONE_MINUS_DST_COLOR: return GL_ONE_MINUS_DST_COLOR; + case SG_BLENDFACTOR_DST_ALPHA: return GL_DST_ALPHA; + case SG_BLENDFACTOR_ONE_MINUS_DST_ALPHA: return GL_ONE_MINUS_DST_ALPHA; + case SG_BLENDFACTOR_SRC_ALPHA_SATURATED: return GL_SRC_ALPHA_SATURATE; + case SG_BLENDFACTOR_BLEND_COLOR: return GL_CONSTANT_COLOR; + case SG_BLENDFACTOR_ONE_MINUS_BLEND_COLOR: return GL_ONE_MINUS_CONSTANT_COLOR; + case SG_BLENDFACTOR_BLEND_ALPHA: return GL_CONSTANT_ALPHA; + case SG_BLENDFACTOR_ONE_MINUS_BLEND_ALPHA: return GL_ONE_MINUS_CONSTANT_ALPHA; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_blend_op(sg_blend_op op) { + switch (op) { + case SG_BLENDOP_ADD: return GL_FUNC_ADD; + case SG_BLENDOP_SUBTRACT: return GL_FUNC_SUBTRACT; + case SG_BLENDOP_REVERSE_SUBTRACT: return GL_FUNC_REVERSE_SUBTRACT; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_filter(sg_filter f) { + switch (f) { + case SG_FILTER_NEAREST: return GL_NEAREST; + case SG_FILTER_LINEAR: return GL_LINEAR; + case SG_FILTER_NEAREST_MIPMAP_NEAREST: return GL_NEAREST_MIPMAP_NEAREST; + case SG_FILTER_NEAREST_MIPMAP_LINEAR: return GL_NEAREST_MIPMAP_LINEAR; + case SG_FILTER_LINEAR_MIPMAP_NEAREST: return GL_LINEAR_MIPMAP_NEAREST; + case SG_FILTER_LINEAR_MIPMAP_LINEAR: return GL_LINEAR_MIPMAP_LINEAR; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_wrap(sg_wrap w) { + switch (w) { + case SG_WRAP_CLAMP_TO_EDGE: return GL_CLAMP_TO_EDGE; + #if defined(SOKOL_GLCORE33) + case SG_WRAP_CLAMP_TO_BORDER: return GL_CLAMP_TO_BORDER; + #else + case SG_WRAP_CLAMP_TO_BORDER: return GL_CLAMP_TO_EDGE; + #endif + case SG_WRAP_REPEAT: return GL_REPEAT; + case SG_WRAP_MIRRORED_REPEAT: return GL_MIRRORED_REPEAT; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_teximage_type(sg_pixel_format fmt) { + switch (fmt) { + case SG_PIXELFORMAT_R8: + case SG_PIXELFORMAT_R8UI: + case SG_PIXELFORMAT_RG8: + case SG_PIXELFORMAT_RG8UI: + case SG_PIXELFORMAT_RGBA8: + case SG_PIXELFORMAT_SRGB8A8: + case SG_PIXELFORMAT_RGBA8UI: + case SG_PIXELFORMAT_BGRA8: + return GL_UNSIGNED_BYTE; + case SG_PIXELFORMAT_R8SN: + case SG_PIXELFORMAT_R8SI: + case SG_PIXELFORMAT_RG8SN: + case SG_PIXELFORMAT_RG8SI: + case SG_PIXELFORMAT_RGBA8SN: + case SG_PIXELFORMAT_RGBA8SI: + return GL_BYTE; + case SG_PIXELFORMAT_R16: + case SG_PIXELFORMAT_R16UI: + case SG_PIXELFORMAT_RG16: + case SG_PIXELFORMAT_RG16UI: + case SG_PIXELFORMAT_RGBA16: + case SG_PIXELFORMAT_RGBA16UI: + return GL_UNSIGNED_SHORT; + case SG_PIXELFORMAT_R16SN: + case SG_PIXELFORMAT_R16SI: + case SG_PIXELFORMAT_RG16SN: + case SG_PIXELFORMAT_RG16SI: + case SG_PIXELFORMAT_RGBA16SN: + case SG_PIXELFORMAT_RGBA16SI: + return GL_SHORT; + case SG_PIXELFORMAT_R16F: + case SG_PIXELFORMAT_RG16F: + case SG_PIXELFORMAT_RGBA16F: + return GL_HALF_FLOAT; + case SG_PIXELFORMAT_R32UI: + case SG_PIXELFORMAT_RG32UI: + case SG_PIXELFORMAT_RGBA32UI: + return GL_UNSIGNED_INT; + case SG_PIXELFORMAT_R32SI: + case SG_PIXELFORMAT_RG32SI: + case SG_PIXELFORMAT_RGBA32SI: + return GL_INT; + case SG_PIXELFORMAT_R32F: + case SG_PIXELFORMAT_RG32F: + case SG_PIXELFORMAT_RGBA32F: + return GL_FLOAT; + case SG_PIXELFORMAT_RGB10A2: + return GL_UNSIGNED_INT_2_10_10_10_REV; + case SG_PIXELFORMAT_RG11B10F: + return GL_UNSIGNED_INT_10F_11F_11F_REV; + case SG_PIXELFORMAT_RGB9E5: + return GL_UNSIGNED_INT_5_9_9_9_REV; + case SG_PIXELFORMAT_DEPTH: + return GL_FLOAT; + case SG_PIXELFORMAT_DEPTH_STENCIL: + return GL_UNSIGNED_INT_24_8; + default: + SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_teximage_format(sg_pixel_format fmt) { + switch (fmt) { + case SG_PIXELFORMAT_R8: + case SG_PIXELFORMAT_R8SN: + case SG_PIXELFORMAT_R16: + case SG_PIXELFORMAT_R16SN: + case SG_PIXELFORMAT_R16F: + case SG_PIXELFORMAT_R32F: + return GL_RED; + case SG_PIXELFORMAT_R8UI: + case SG_PIXELFORMAT_R8SI: + case SG_PIXELFORMAT_R16UI: + case SG_PIXELFORMAT_R16SI: + case SG_PIXELFORMAT_R32UI: + case SG_PIXELFORMAT_R32SI: + return GL_RED_INTEGER; + case SG_PIXELFORMAT_RG8: + case SG_PIXELFORMAT_RG8SN: + case SG_PIXELFORMAT_RG16: + case SG_PIXELFORMAT_RG16SN: + case SG_PIXELFORMAT_RG16F: + case SG_PIXELFORMAT_RG32F: + return GL_RG; + case SG_PIXELFORMAT_RG8UI: + case SG_PIXELFORMAT_RG8SI: + case SG_PIXELFORMAT_RG16UI: + case SG_PIXELFORMAT_RG16SI: + case SG_PIXELFORMAT_RG32UI: + case SG_PIXELFORMAT_RG32SI: + return GL_RG_INTEGER; + case SG_PIXELFORMAT_RGBA8: + case SG_PIXELFORMAT_SRGB8A8: + case SG_PIXELFORMAT_RGBA8SN: + case SG_PIXELFORMAT_RGBA16: + case SG_PIXELFORMAT_RGBA16SN: + case SG_PIXELFORMAT_RGBA16F: + case SG_PIXELFORMAT_RGBA32F: + case SG_PIXELFORMAT_RGB10A2: + return GL_RGBA; + case SG_PIXELFORMAT_RGBA8UI: + case SG_PIXELFORMAT_RGBA8SI: + case SG_PIXELFORMAT_RGBA16UI: + case SG_PIXELFORMAT_RGBA16SI: + case SG_PIXELFORMAT_RGBA32UI: + case SG_PIXELFORMAT_RGBA32SI: + return GL_RGBA_INTEGER; + case SG_PIXELFORMAT_RG11B10F: + case SG_PIXELFORMAT_RGB9E5: + return GL_RGB; + case SG_PIXELFORMAT_DEPTH: + return GL_DEPTH_COMPONENT; + case SG_PIXELFORMAT_DEPTH_STENCIL: + return GL_DEPTH_STENCIL; + case SG_PIXELFORMAT_BC1_RGBA: + return GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; + case SG_PIXELFORMAT_BC2_RGBA: + return GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; + case SG_PIXELFORMAT_BC3_RGBA: + return GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; + case SG_PIXELFORMAT_BC4_R: + return GL_COMPRESSED_RED_RGTC1; + case SG_PIXELFORMAT_BC4_RSN: + return GL_COMPRESSED_SIGNED_RED_RGTC1; + case SG_PIXELFORMAT_BC5_RG: + return GL_COMPRESSED_RED_GREEN_RGTC2; + case SG_PIXELFORMAT_BC5_RGSN: + return GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2; + case SG_PIXELFORMAT_BC6H_RGBF: + return GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB; + case SG_PIXELFORMAT_BC6H_RGBUF: + return GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB; + case SG_PIXELFORMAT_BC7_RGBA: + return GL_COMPRESSED_RGBA_BPTC_UNORM_ARB; + case SG_PIXELFORMAT_PVRTC_RGB_2BPP: + return GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + case SG_PIXELFORMAT_PVRTC_RGB_4BPP: + return GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + case SG_PIXELFORMAT_PVRTC_RGBA_2BPP: + return GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + case SG_PIXELFORMAT_PVRTC_RGBA_4BPP: + return GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + case SG_PIXELFORMAT_ETC2_RGB8: + return GL_COMPRESSED_RGB8_ETC2; + case SG_PIXELFORMAT_ETC2_RGB8A1: + return GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2; + case SG_PIXELFORMAT_ETC2_RGBA8: + return GL_COMPRESSED_RGBA8_ETC2_EAC; + case SG_PIXELFORMAT_ETC2_RG11: + return GL_COMPRESSED_RG11_EAC; + case SG_PIXELFORMAT_ETC2_RG11SN: + return GL_COMPRESSED_SIGNED_RG11_EAC; + default: + SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_teximage_internal_format(sg_pixel_format fmt) { + switch (fmt) { + case SG_PIXELFORMAT_R8: return GL_R8; + case SG_PIXELFORMAT_R8SN: return GL_R8_SNORM; + case SG_PIXELFORMAT_R8UI: return GL_R8UI; + case SG_PIXELFORMAT_R8SI: return GL_R8I; + #if !defined(SOKOL_GLES3) + case SG_PIXELFORMAT_R16: return GL_R16; + case SG_PIXELFORMAT_R16SN: return GL_R16_SNORM; + #endif + case SG_PIXELFORMAT_R16UI: return GL_R16UI; + case SG_PIXELFORMAT_R16SI: return GL_R16I; + case SG_PIXELFORMAT_R16F: return GL_R16F; + case SG_PIXELFORMAT_RG8: return GL_RG8; + case SG_PIXELFORMAT_RG8SN: return GL_RG8_SNORM; + case SG_PIXELFORMAT_RG8UI: return GL_RG8UI; + case SG_PIXELFORMAT_RG8SI: return GL_RG8I; + case SG_PIXELFORMAT_R32UI: return GL_R32UI; + case SG_PIXELFORMAT_R32SI: return GL_R32I; + case SG_PIXELFORMAT_R32F: return GL_R32F; + #if !defined(SOKOL_GLES3) + case SG_PIXELFORMAT_RG16: return GL_RG16; + case SG_PIXELFORMAT_RG16SN: return GL_RG16_SNORM; + #endif + case SG_PIXELFORMAT_RG16UI: return GL_RG16UI; + case SG_PIXELFORMAT_RG16SI: return GL_RG16I; + case SG_PIXELFORMAT_RG16F: return GL_RG16F; + case SG_PIXELFORMAT_RGBA8: return GL_RGBA8; + case SG_PIXELFORMAT_SRGB8A8: return GL_SRGB8_ALPHA8; + case SG_PIXELFORMAT_RGBA8SN: return GL_RGBA8_SNORM; + case SG_PIXELFORMAT_RGBA8UI: return GL_RGBA8UI; + case SG_PIXELFORMAT_RGBA8SI: return GL_RGBA8I; + case SG_PIXELFORMAT_RGB10A2: return GL_RGB10_A2; + case SG_PIXELFORMAT_RG11B10F: return GL_R11F_G11F_B10F; + case SG_PIXELFORMAT_RGB9E5: return GL_RGB9_E5; + case SG_PIXELFORMAT_RG32UI: return GL_RG32UI; + case SG_PIXELFORMAT_RG32SI: return GL_RG32I; + case SG_PIXELFORMAT_RG32F: return GL_RG32F; + #if !defined(SOKOL_GLES3) + case SG_PIXELFORMAT_RGBA16: return GL_RGBA16; + case SG_PIXELFORMAT_RGBA16SN: return GL_RGBA16_SNORM; + #endif + case SG_PIXELFORMAT_RGBA16UI: return GL_RGBA16UI; + case SG_PIXELFORMAT_RGBA16SI: return GL_RGBA16I; + case SG_PIXELFORMAT_RGBA16F: return GL_RGBA16F; + case SG_PIXELFORMAT_RGBA32UI: return GL_RGBA32UI; + case SG_PIXELFORMAT_RGBA32SI: return GL_RGBA32I; + case SG_PIXELFORMAT_RGBA32F: return GL_RGBA32F; + case SG_PIXELFORMAT_DEPTH: return GL_DEPTH_COMPONENT32F; + case SG_PIXELFORMAT_DEPTH_STENCIL: return GL_DEPTH24_STENCIL8; + case SG_PIXELFORMAT_BC1_RGBA: return GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; + case SG_PIXELFORMAT_BC2_RGBA: return GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; + case SG_PIXELFORMAT_BC3_RGBA: return GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; + case SG_PIXELFORMAT_BC4_R: return GL_COMPRESSED_RED_RGTC1; + case SG_PIXELFORMAT_BC4_RSN: return GL_COMPRESSED_SIGNED_RED_RGTC1; + case SG_PIXELFORMAT_BC5_RG: return GL_COMPRESSED_RED_GREEN_RGTC2; + case SG_PIXELFORMAT_BC5_RGSN: return GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2; + case SG_PIXELFORMAT_BC6H_RGBF: return GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB; + case SG_PIXELFORMAT_BC6H_RGBUF: return GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB; + case SG_PIXELFORMAT_BC7_RGBA: return GL_COMPRESSED_RGBA_BPTC_UNORM_ARB; + case SG_PIXELFORMAT_PVRTC_RGB_2BPP: return GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + case SG_PIXELFORMAT_PVRTC_RGB_4BPP: return GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + case SG_PIXELFORMAT_PVRTC_RGBA_2BPP: return GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + case SG_PIXELFORMAT_PVRTC_RGBA_4BPP: return GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + case SG_PIXELFORMAT_ETC2_RGB8: return GL_COMPRESSED_RGB8_ETC2; + case SG_PIXELFORMAT_ETC2_RGB8A1: return GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2; + case SG_PIXELFORMAT_ETC2_RGBA8: return GL_COMPRESSED_RGBA8_ETC2_EAC; + case SG_PIXELFORMAT_ETC2_RG11: return GL_COMPRESSED_RG11_EAC; + case SG_PIXELFORMAT_ETC2_RG11SN: return GL_COMPRESSED_SIGNED_RG11_EAC; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_cubeface_target(int face_index) { + switch (face_index) { + case 0: return GL_TEXTURE_CUBE_MAP_POSITIVE_X; + case 1: return GL_TEXTURE_CUBE_MAP_NEGATIVE_X; + case 2: return GL_TEXTURE_CUBE_MAP_POSITIVE_Y; + case 3: return GL_TEXTURE_CUBE_MAP_NEGATIVE_Y; + case 4: return GL_TEXTURE_CUBE_MAP_POSITIVE_Z; + case 5: return GL_TEXTURE_CUBE_MAP_NEGATIVE_Z; + default: SOKOL_UNREACHABLE; return 0; + } +} + +/* see: https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml */ +_SOKOL_PRIVATE void _sg_gl_init_pixelformats(bool has_bgra) { + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_R8]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_R8SN]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_R8UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_R8SI]); + #if !defined(SOKOL_GLES3) + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_R16]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_R16SN]); + #endif + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_R16UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_R16SI]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG8]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RG8SN]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG8UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG8SI]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_R32UI]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_R32SI]); + #if !defined(SOKOL_GLES3) + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG16]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG16SN]); + #endif + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG16UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG16SI]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGBA8]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_SRGB8A8]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RGBA8SN]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA8UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA8SI]); + if (has_bgra) { + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_BGRA8]); + } + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGB10A2]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RG11B10F]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RGB9E5]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG32UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG32SI]); + #if !defined(SOKOL_GLES3) + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGBA16]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGBA16SN]); + #endif + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA16UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA16SI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA32UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA32SI]); + _sg_pixelformat_srmd(&_sg.formats[SG_PIXELFORMAT_DEPTH]); + _sg_pixelformat_srmd(&_sg.formats[SG_PIXELFORMAT_DEPTH_STENCIL]); +} + +/* FIXME: OES_half_float_blend */ +_SOKOL_PRIVATE void _sg_gl_init_pixelformats_half_float(bool has_colorbuffer_half_float) { + if (has_colorbuffer_half_float) { + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_R16F]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG16F]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGBA16F]); + } else { + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_R16F]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RG16F]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RGBA16F]); + } +} + +_SOKOL_PRIVATE void _sg_gl_init_pixelformats_float(bool has_colorbuffer_float, bool has_texture_float_linear, bool has_float_blend) { + if (has_texture_float_linear) { + if (has_colorbuffer_float) { + if (has_float_blend) { + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_R32F]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG32F]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGBA32F]); + } else { + _sg_pixelformat_sfrm(&_sg.formats[SG_PIXELFORMAT_R32F]); + _sg_pixelformat_sfrm(&_sg.formats[SG_PIXELFORMAT_RG32F]); + _sg_pixelformat_sfrm(&_sg.formats[SG_PIXELFORMAT_RGBA32F]); + } + } else { + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_R32F]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RG32F]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RGBA32F]); + } + } else { + if (has_colorbuffer_float) { + _sg_pixelformat_sbrm(&_sg.formats[SG_PIXELFORMAT_R32F]); + _sg_pixelformat_sbrm(&_sg.formats[SG_PIXELFORMAT_RG32F]); + _sg_pixelformat_sbrm(&_sg.formats[SG_PIXELFORMAT_RGBA32F]); + } else { + _sg_pixelformat_s(&_sg.formats[SG_PIXELFORMAT_R32F]); + _sg_pixelformat_s(&_sg.formats[SG_PIXELFORMAT_RG32F]); + _sg_pixelformat_s(&_sg.formats[SG_PIXELFORMAT_RGBA32F]); + } + } +} + +_SOKOL_PRIVATE void _sg_gl_init_pixelformats_s3tc(void) { + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC1_RGBA]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC2_RGBA]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC3_RGBA]); +} + +_SOKOL_PRIVATE void _sg_gl_init_pixelformats_rgtc(void) { + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC4_R]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC4_RSN]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC5_RG]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC5_RGSN]); +} + +_SOKOL_PRIVATE void _sg_gl_init_pixelformats_bptc(void) { + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC6H_RGBF]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC6H_RGBUF]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC7_RGBA]); +} + +_SOKOL_PRIVATE void _sg_gl_init_pixelformats_pvrtc(void) { + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_PVRTC_RGB_2BPP]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_PVRTC_RGB_4BPP]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_PVRTC_RGBA_2BPP]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_PVRTC_RGBA_4BPP]); +} + +_SOKOL_PRIVATE void _sg_gl_init_pixelformats_etc2(void) { + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_ETC2_RGB8]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_ETC2_RGB8A1]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_ETC2_RGBA8]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_ETC2_RG11]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_ETC2_RG11SN]); +} + +_SOKOL_PRIVATE void _sg_gl_init_limits(void) { + _SG_GL_CHECK_ERROR(); + GLint gl_int; + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &gl_int); + _SG_GL_CHECK_ERROR(); + _sg.limits.max_image_size_2d = gl_int; + _sg.limits.max_image_size_array = gl_int; + glGetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, &gl_int); + _SG_GL_CHECK_ERROR(); + _sg.limits.max_image_size_cube = gl_int; + glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &gl_int); + _SG_GL_CHECK_ERROR(); + if (gl_int > SG_MAX_VERTEX_ATTRIBUTES) { + gl_int = SG_MAX_VERTEX_ATTRIBUTES; + } + _sg.limits.max_vertex_attrs = gl_int; + glGetIntegerv(GL_MAX_VERTEX_UNIFORM_VECTORS, &gl_int); + _SG_GL_CHECK_ERROR(); + _sg.limits.gl_max_vertex_uniform_vectors = gl_int; + glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE, &gl_int); + _SG_GL_CHECK_ERROR(); + _sg.limits.max_image_size_3d = gl_int; + glGetIntegerv(GL_MAX_ARRAY_TEXTURE_LAYERS, &gl_int); + _SG_GL_CHECK_ERROR(); + _sg.limits.max_image_array_layers = gl_int; + if (_sg.gl.ext_anisotropic) { + glGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &gl_int); + _SG_GL_CHECK_ERROR(); + _sg.gl.max_anisotropy = gl_int; + } else { + _sg.gl.max_anisotropy = 1; + } + glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &gl_int); + _SG_GL_CHECK_ERROR(); + _sg.limits.gl_max_combined_texture_image_units = gl_int; +} + +#if defined(SOKOL_GLCORE33) +_SOKOL_PRIVATE void _sg_gl_init_caps_glcore33(void) { + _sg.backend = SG_BACKEND_GLCORE33; + + _sg.features.origin_top_left = false; + _sg.features.image_clamp_to_border = true; + _sg.features.mrt_independent_blend_state = false; + _sg.features.mrt_independent_write_mask = true; + + /* scan extensions */ + bool has_s3tc = false; /* BC1..BC3 */ + bool has_rgtc = false; /* BC4 and BC5 */ + bool has_bptc = false; /* BC6H and BC7 */ + bool has_pvrtc = false; + bool has_etc2 = false; + GLint num_ext = 0; + glGetIntegerv(GL_NUM_EXTENSIONS, &num_ext); + for (int i = 0; i < num_ext; i++) { + const char* ext = (const char*) glGetStringi(GL_EXTENSIONS, (GLuint)i); + if (ext) { + if (strstr(ext, "_texture_compression_s3tc")) { + has_s3tc = true; + } else if (strstr(ext, "_texture_compression_rgtc")) { + has_rgtc = true; + } else if (strstr(ext, "_texture_compression_bptc")) { + has_bptc = true; + } else if (strstr(ext, "_texture_compression_pvrtc")) { + has_pvrtc = true; + } else if (strstr(ext, "_ES3_compatibility")) { + has_etc2 = true; + } else if (strstr(ext, "_texture_filter_anisotropic")) { + _sg.gl.ext_anisotropic = true; + } + } + } + + /* limits */ + _sg_gl_init_limits(); + + /* pixel formats */ + const bool has_bgra = false; /* not a bug */ + const bool has_colorbuffer_float = true; + const bool has_colorbuffer_half_float = true; + const bool has_texture_float_linear = true; /* FIXME??? */ + const bool has_float_blend = true; + _sg_gl_init_pixelformats(has_bgra); + _sg_gl_init_pixelformats_float(has_colorbuffer_float, has_texture_float_linear, has_float_blend); + _sg_gl_init_pixelformats_half_float(has_colorbuffer_half_float); + if (has_s3tc) { + _sg_gl_init_pixelformats_s3tc(); + } + if (has_rgtc) { + _sg_gl_init_pixelformats_rgtc(); + } + if (has_bptc) { + _sg_gl_init_pixelformats_bptc(); + } + if (has_pvrtc) { + _sg_gl_init_pixelformats_pvrtc(); + } + if (has_etc2) { + _sg_gl_init_pixelformats_etc2(); + } +} +#endif + +#if defined(SOKOL_GLES3) +_SOKOL_PRIVATE void _sg_gl_init_caps_gles3(void) { + _sg.backend = SG_BACKEND_GLES3; + + _sg.features.origin_top_left = false; + _sg.features.image_clamp_to_border = false; + _sg.features.mrt_independent_blend_state = false; + _sg.features.mrt_independent_write_mask = false; + + bool has_s3tc = false; /* BC1..BC3 */ + bool has_rgtc = false; /* BC4 and BC5 */ + bool has_bptc = false; /* BC6H and BC7 */ + bool has_pvrtc = false; + #if defined(__EMSCRIPTEN__) + bool has_etc2 = false; + #else + bool has_etc2 = true; + #endif + bool has_colorbuffer_float = false; + bool has_colorbuffer_half_float = false; + bool has_texture_float_linear = false; + bool has_float_blend = false; + GLint num_ext = 0; + glGetIntegerv(GL_NUM_EXTENSIONS, &num_ext); + for (int i = 0; i < num_ext; i++) { + const char* ext = (const char*) glGetStringi(GL_EXTENSIONS, (GLuint)i); + if (ext) { + if (strstr(ext, "_texture_compression_s3tc")) { + has_s3tc = true; + } else if (strstr(ext, "_compressed_texture_s3tc")) { + has_s3tc = true; + } else if (strstr(ext, "_texture_compression_rgtc")) { + has_rgtc = true; + } else if (strstr(ext, "_texture_compression_bptc")) { + has_bptc = true; + } else if (strstr(ext, "_texture_compression_pvrtc")) { + has_pvrtc = true; + } else if (strstr(ext, "_compressed_texture_pvrtc")) { + has_pvrtc = true; + } else if (strstr(ext, "_compressed_texture_etc")) { + has_etc2 = true; + } else if (strstr(ext, "_color_buffer_float")) { + has_colorbuffer_float = true; + } else if (strstr(ext, "_color_buffer_half_float")) { + has_colorbuffer_half_float = true; + } else if (strstr(ext, "_texture_float_linear")) { + has_texture_float_linear = true; + } else if (strstr(ext, "_float_blend")) { + has_float_blend = true; + } else if (strstr(ext, "_texture_filter_anisotropic")) { + _sg.gl.ext_anisotropic = true; + } + } + } + + /* on WebGL2, color_buffer_float also includes 16-bit formats + see: https://developer.mozilla.org/en-US/docs/Web/API/EXT_color_buffer_float + */ + #if defined(__EMSCRIPTEN__) + if (!has_colorbuffer_half_float && has_colorbuffer_float) { + has_colorbuffer_half_float = has_colorbuffer_float; + } + #endif + + /* limits */ + _sg_gl_init_limits(); + + /* pixel formats */ + const bool has_bgra = false; /* not a bug */ + _sg_gl_init_pixelformats(has_bgra); + _sg_gl_init_pixelformats_float(has_colorbuffer_float, has_texture_float_linear, has_float_blend); + _sg_gl_init_pixelformats_half_float(has_colorbuffer_half_float); + if (has_s3tc) { + _sg_gl_init_pixelformats_s3tc(); + } + if (has_rgtc) { + _sg_gl_init_pixelformats_rgtc(); + } + if (has_bptc) { + _sg_gl_init_pixelformats_bptc(); + } + if (has_pvrtc) { + _sg_gl_init_pixelformats_pvrtc(); + } + if (has_etc2) { + _sg_gl_init_pixelformats_etc2(); + } +} +#endif + +/*-- state cache implementation ----------------------------------------------*/ +_SOKOL_PRIVATE void _sg_gl_cache_clear_buffer_bindings(bool force) { + if (force || (_sg.gl.cache.vertex_buffer != 0)) { + glBindBuffer(GL_ARRAY_BUFFER, 0); + _sg.gl.cache.vertex_buffer = 0; + } + if (force || (_sg.gl.cache.index_buffer != 0)) { + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + _sg.gl.cache.index_buffer = 0; + } +} + +_SOKOL_PRIVATE void _sg_gl_cache_bind_buffer(GLenum target, GLuint buffer) { + SOKOL_ASSERT((GL_ARRAY_BUFFER == target) || (GL_ELEMENT_ARRAY_BUFFER == target)); + if (target == GL_ARRAY_BUFFER) { + if (_sg.gl.cache.vertex_buffer != buffer) { + _sg.gl.cache.vertex_buffer = buffer; + glBindBuffer(target, buffer); + } + } else { + if (_sg.gl.cache.index_buffer != buffer) { + _sg.gl.cache.index_buffer = buffer; + glBindBuffer(target, buffer); + } + } +} + +_SOKOL_PRIVATE void _sg_gl_cache_store_buffer_binding(GLenum target) { + if (target == GL_ARRAY_BUFFER) { + _sg.gl.cache.stored_vertex_buffer = _sg.gl.cache.vertex_buffer; + } else { + _sg.gl.cache.stored_index_buffer = _sg.gl.cache.index_buffer; + } +} + +_SOKOL_PRIVATE void _sg_gl_cache_restore_buffer_binding(GLenum target) { + if (target == GL_ARRAY_BUFFER) { + if (_sg.gl.cache.stored_vertex_buffer != 0) { + /* we only care restoring valid ids */ + _sg_gl_cache_bind_buffer(target, _sg.gl.cache.stored_vertex_buffer); + _sg.gl.cache.stored_vertex_buffer = 0; + } + } else { + if (_sg.gl.cache.stored_index_buffer != 0) { + /* we only care restoring valid ids */ + _sg_gl_cache_bind_buffer(target, _sg.gl.cache.stored_index_buffer); + _sg.gl.cache.stored_index_buffer = 0; + } + } +} + +/* called when _sg_gl_deinit_buffer() */ +_SOKOL_PRIVATE void _sg_gl_cache_invalidate_buffer(GLuint buf) { + if (buf == _sg.gl.cache.vertex_buffer) { + _sg.gl.cache.vertex_buffer = 0; + glBindBuffer(GL_ARRAY_BUFFER, 0); + } + if (buf == _sg.gl.cache.index_buffer) { + _sg.gl.cache.index_buffer = 0; + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + } + if (buf == _sg.gl.cache.stored_vertex_buffer) { + _sg.gl.cache.stored_vertex_buffer = 0; + } + if (buf == _sg.gl.cache.stored_index_buffer) { + _sg.gl.cache.stored_index_buffer = 0; + } + for (int i = 0; i < SG_MAX_VERTEX_ATTRIBUTES; i++) { + if (buf == _sg.gl.cache.attrs[i].gl_vbuf) { + _sg.gl.cache.attrs[i].gl_vbuf = 0; + } + } +} + +_SOKOL_PRIVATE void _sg_gl_cache_active_texture(GLenum texture) { + if (_sg.gl.cache.cur_active_texture != texture) { + _sg.gl.cache.cur_active_texture = texture; + glActiveTexture(texture); + } +} + +_SOKOL_PRIVATE void _sg_gl_cache_clear_texture_bindings(bool force) { + for (int i = 0; (i < _SG_GL_IMAGE_CACHE_SIZE) && (i < _sg.limits.gl_max_combined_texture_image_units); i++) { + if (force || (_sg.gl.cache.textures[i].texture != 0)) { + GLenum gl_texture_slot = (GLenum) (GL_TEXTURE0 + i); + glActiveTexture(gl_texture_slot); + glBindTexture(GL_TEXTURE_2D, 0); + glBindTexture(GL_TEXTURE_CUBE_MAP, 0); + glBindTexture(GL_TEXTURE_3D, 0); + glBindTexture(GL_TEXTURE_2D_ARRAY, 0); + _sg.gl.cache.textures[i].target = 0; + _sg.gl.cache.textures[i].texture = 0; + _sg.gl.cache.cur_active_texture = gl_texture_slot; + } + } +} + +_SOKOL_PRIVATE void _sg_gl_cache_bind_texture(int slot_index, GLenum target, GLuint texture) { + /* it's valid to call this function with target=0 and/or texture=0 + target=0 will unbind the previous binding, texture=0 will clear + the new binding + */ + SOKOL_ASSERT((slot_index >= 0) && (slot_index < _SG_GL_IMAGE_CACHE_SIZE)); + if (slot_index >= _sg.limits.gl_max_combined_texture_image_units) { + return; + } + _sg_gl_texture_bind_slot* slot = &_sg.gl.cache.textures[slot_index]; + if ((slot->target != target) || (slot->texture != texture)) { + _sg_gl_cache_active_texture((GLenum)(GL_TEXTURE0 + slot_index)); + /* if the target has changed, clear the previous binding on that target */ + if ((target != slot->target) && (slot->target != 0)) { + glBindTexture(slot->target, 0); + } + /* apply new binding (texture can be 0 to unbind) */ + if (target != 0) { + glBindTexture(target, texture); + } + slot->target = target; + slot->texture = texture; + } +} + +_SOKOL_PRIVATE void _sg_gl_cache_store_texture_binding(int slot_index) { + SOKOL_ASSERT((slot_index >= 0) && (slot_index < _SG_GL_IMAGE_CACHE_SIZE)); + _sg.gl.cache.stored_texture = _sg.gl.cache.textures[slot_index]; +} + +_SOKOL_PRIVATE void _sg_gl_cache_restore_texture_binding(int slot_index) { + SOKOL_ASSERT((slot_index >= 0) && (slot_index < _SG_GL_IMAGE_CACHE_SIZE)); + _sg_gl_texture_bind_slot* slot = &_sg.gl.cache.stored_texture; + if (slot->texture != 0) { + /* we only care restoring valid ids */ + SOKOL_ASSERT(slot->target != 0); + _sg_gl_cache_bind_texture(slot_index, slot->target, slot->texture); + slot->target = 0; + slot->texture = 0; + } +} + +/* called from _sg_gl_destroy_texture() */ +_SOKOL_PRIVATE void _sg_gl_cache_invalidate_texture(GLuint tex) { + for (int i = 0; i < _SG_GL_IMAGE_CACHE_SIZE; i++) { + _sg_gl_texture_bind_slot* slot = &_sg.gl.cache.textures[i]; + if (tex == slot->texture) { + _sg_gl_cache_active_texture((GLenum)(GL_TEXTURE0 + i)); + glBindTexture(slot->target, 0); + slot->target = 0; + slot->texture = 0; + } + } + if (tex == _sg.gl.cache.stored_texture.texture) { + _sg.gl.cache.stored_texture.target = 0; + _sg.gl.cache.stored_texture.texture = 0; + } +} + +/* called from _sg_gl_discard_shader() */ +_SOKOL_PRIVATE void _sg_gl_cache_invalidate_program(GLuint prog) { + if (prog == _sg.gl.cache.prog) { + _sg.gl.cache.prog = 0; + glUseProgram(0); + } +} + +/* called from _sg_gl_discard_pipeline() */ +_SOKOL_PRIVATE void _sg_gl_cache_invalidate_pipeline(_sg_pipeline_t* pip) { + if (pip == _sg.gl.cache.cur_pipeline) { + _sg.gl.cache.cur_pipeline = 0; + _sg.gl.cache.cur_pipeline_id.id = SG_INVALID_ID; + } +} + +_SOKOL_PRIVATE void _sg_gl_reset_state_cache(void) { + if (_sg.gl.cur_context) { + _SG_GL_CHECK_ERROR(); + glBindVertexArray(_sg.gl.cur_context->vao); + _SG_GL_CHECK_ERROR(); + _sg_clear(&_sg.gl.cache, sizeof(_sg.gl.cache)); + _sg_gl_cache_clear_buffer_bindings(true); + _SG_GL_CHECK_ERROR(); + _sg_gl_cache_clear_texture_bindings(true); + _SG_GL_CHECK_ERROR(); + for (int i = 0; i < _sg.limits.max_vertex_attrs; i++) { + _sg_gl_attr_t* attr = &_sg.gl.cache.attrs[i].gl_attr; + attr->vb_index = -1; + attr->divisor = -1; + glDisableVertexAttribArray((GLuint)i); + _SG_GL_CHECK_ERROR(); + } + _sg.gl.cache.cur_primitive_type = GL_TRIANGLES; + + /* shader program */ + glGetIntegerv(GL_CURRENT_PROGRAM, (GLint*)&_sg.gl.cache.prog); + _SG_GL_CHECK_ERROR(); + + /* depth and stencil state */ + _sg.gl.cache.depth.compare = SG_COMPAREFUNC_ALWAYS; + _sg.gl.cache.stencil.front.compare = SG_COMPAREFUNC_ALWAYS; + _sg.gl.cache.stencil.front.fail_op = SG_STENCILOP_KEEP; + _sg.gl.cache.stencil.front.depth_fail_op = SG_STENCILOP_KEEP; + _sg.gl.cache.stencil.front.pass_op = SG_STENCILOP_KEEP; + _sg.gl.cache.stencil.back.compare = SG_COMPAREFUNC_ALWAYS; + _sg.gl.cache.stencil.back.fail_op = SG_STENCILOP_KEEP; + _sg.gl.cache.stencil.back.depth_fail_op = SG_STENCILOP_KEEP; + _sg.gl.cache.stencil.back.pass_op = SG_STENCILOP_KEEP; + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_ALWAYS); + glDepthMask(GL_FALSE); + glDisable(GL_STENCIL_TEST); + glStencilFunc(GL_ALWAYS, 0, 0); + glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); + glStencilMask(0); + + /* blend state */ + _sg.gl.cache.blend.src_factor_rgb = SG_BLENDFACTOR_ONE; + _sg.gl.cache.blend.dst_factor_rgb = SG_BLENDFACTOR_ZERO; + _sg.gl.cache.blend.op_rgb = SG_BLENDOP_ADD; + _sg.gl.cache.blend.src_factor_alpha = SG_BLENDFACTOR_ONE; + _sg.gl.cache.blend.dst_factor_alpha = SG_BLENDFACTOR_ZERO; + _sg.gl.cache.blend.op_alpha = SG_BLENDOP_ADD; + glDisable(GL_BLEND); + glBlendFuncSeparate(GL_ONE, GL_ZERO, GL_ONE, GL_ZERO); + glBlendEquationSeparate(GL_FUNC_ADD, GL_FUNC_ADD); + glBlendColor(0.0f, 0.0f, 0.0f, 0.0f); + + /* standalone state */ + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + _sg.gl.cache.color_write_mask[i] = SG_COLORMASK_RGBA; + } + _sg.gl.cache.cull_mode = SG_CULLMODE_NONE; + _sg.gl.cache.face_winding = SG_FACEWINDING_CW; + _sg.gl.cache.sample_count = 1; + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + glPolygonOffset(0.0f, 0.0f); + glDisable(GL_POLYGON_OFFSET_FILL); + glDisable(GL_CULL_FACE); + glFrontFace(GL_CW); + glCullFace(GL_BACK); + glEnable(GL_SCISSOR_TEST); + glDisable(GL_SAMPLE_ALPHA_TO_COVERAGE); + glEnable(GL_DITHER); + glDisable(GL_POLYGON_OFFSET_FILL); + #if defined(SOKOL_GLCORE33) + glEnable(GL_MULTISAMPLE); + glEnable(GL_PROGRAM_POINT_SIZE); + #endif + } +} + +_SOKOL_PRIVATE void _sg_gl_setup_backend(const sg_desc* desc) { + _SOKOL_UNUSED(desc); + /* assumes that _sg.gl is already zero-initialized */ + _sg.gl.valid = true; + + #if defined(_SOKOL_USE_WIN32_GL_LOADER) + _sg_gl_load_opengl(); + #endif + + /* clear initial GL error state */ + #if defined(SOKOL_DEBUG) + while (glGetError() != GL_NO_ERROR); + #endif + #if defined(SOKOL_GLCORE33) + _sg_gl_init_caps_glcore33(); + #elif defined(SOKOL_GLES3) + _sg_gl_init_caps_gles3(); + #endif +} + +_SOKOL_PRIVATE void _sg_gl_discard_backend(void) { + SOKOL_ASSERT(_sg.gl.valid); + _sg.gl.valid = false; + #if defined(_SOKOL_USE_WIN32_GL_LOADER) + _sg_gl_unload_opengl(); + #endif +} + +_SOKOL_PRIVATE void _sg_gl_activate_context(_sg_context_t* ctx) { + SOKOL_ASSERT(_sg.gl.valid); + /* NOTE: ctx can be 0 to unset the current context */ + _sg.gl.cur_context = ctx; + _sg_gl_reset_state_cache(); +} + +/*-- GL backend resource creation and destruction ----------------------------*/ +_SOKOL_PRIVATE sg_resource_state _sg_gl_create_context(_sg_context_t* ctx) { + SOKOL_ASSERT(ctx); + SOKOL_ASSERT(0 == ctx->default_framebuffer); + _SG_GL_CHECK_ERROR(); + glGetIntegerv(GL_FRAMEBUFFER_BINDING, (GLint*)&ctx->default_framebuffer); + _SG_GL_CHECK_ERROR(); + SOKOL_ASSERT(0 == ctx->vao); + glGenVertexArrays(1, &ctx->vao); + glBindVertexArray(ctx->vao); + _SG_GL_CHECK_ERROR(); + // incoming texture data is generally expected to be packed tightly + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_gl_discard_context(_sg_context_t* ctx) { + SOKOL_ASSERT(ctx); + if (ctx->vao) { + glDeleteVertexArrays(1, &ctx->vao); + } + _SG_GL_CHECK_ERROR(); +} + +_SOKOL_PRIVATE sg_resource_state _sg_gl_create_buffer(_sg_buffer_t* buf, const sg_buffer_desc* desc) { + SOKOL_ASSERT(buf && desc); + _SG_GL_CHECK_ERROR(); + _sg_buffer_common_init(&buf->cmn, desc); + buf->gl.ext_buffers = (0 != desc->gl_buffers[0]); + const GLenum gl_target = _sg_gl_buffer_target(buf->cmn.type); + const GLenum gl_usage = _sg_gl_usage(buf->cmn.usage); + for (int slot = 0; slot < buf->cmn.num_slots; slot++) { + GLuint gl_buf = 0; + if (buf->gl.ext_buffers) { + SOKOL_ASSERT(desc->gl_buffers[slot]); + gl_buf = desc->gl_buffers[slot]; + } else { + glGenBuffers(1, &gl_buf); + SOKOL_ASSERT(gl_buf); + _sg_gl_cache_store_buffer_binding(gl_target); + _sg_gl_cache_bind_buffer(gl_target, gl_buf); + glBufferData(gl_target, buf->cmn.size, 0, gl_usage); + if (buf->cmn.usage == SG_USAGE_IMMUTABLE) { + SOKOL_ASSERT(desc->data.ptr); + glBufferSubData(gl_target, 0, buf->cmn.size, desc->data.ptr); + } + _sg_gl_cache_restore_buffer_binding(gl_target); + } + buf->gl.buf[slot] = gl_buf; + } + _SG_GL_CHECK_ERROR(); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_gl_discard_buffer(_sg_buffer_t* buf) { + SOKOL_ASSERT(buf); + _SG_GL_CHECK_ERROR(); + for (int slot = 0; slot < buf->cmn.num_slots; slot++) { + if (buf->gl.buf[slot]) { + _sg_gl_cache_invalidate_buffer(buf->gl.buf[slot]); + if (!buf->gl.ext_buffers) { + glDeleteBuffers(1, &buf->gl.buf[slot]); + } + } + } + _SG_GL_CHECK_ERROR(); +} + +_SOKOL_PRIVATE bool _sg_gl_supported_texture_format(sg_pixel_format fmt) { + const int fmt_index = (int) fmt; + SOKOL_ASSERT((fmt_index > SG_PIXELFORMAT_NONE) && (fmt_index < _SG_PIXELFORMAT_NUM)); + return _sg.formats[fmt_index].sample; +} + +_SOKOL_PRIVATE sg_resource_state _sg_gl_create_image(_sg_image_t* img, const sg_image_desc* desc) { + SOKOL_ASSERT(img && desc); + _SG_GL_CHECK_ERROR(); + _sg_image_common_init(&img->cmn, desc); + img->gl.ext_textures = (0 != desc->gl_textures[0]); + + // check if texture format is support + if (!_sg_gl_supported_texture_format(img->cmn.pixel_format)) { + _SG_ERROR(GL_TEXTURE_FORMAT_NOT_SUPPORTED); + return SG_RESOURCESTATE_FAILED; + } + + img->gl.target = _sg_gl_texture_target(img->cmn.type); + const GLenum gl_internal_format = _sg_gl_teximage_internal_format(img->cmn.pixel_format); + + // if this is a MSAA render target, need to create a separate render buffer + const bool msaa = (img->cmn.sample_count > 1); + if (img->cmn.render_target && msaa) { + glGenRenderbuffers(1, &img->gl.msaa_render_buffer); + glBindRenderbuffer(GL_RENDERBUFFER, img->gl.msaa_render_buffer); + glRenderbufferStorageMultisample(GL_RENDERBUFFER, img->cmn.sample_count, gl_internal_format, img->cmn.width, img->cmn.height); + } + + if (img->gl.ext_textures) { + // inject externally GL textures + for (int slot = 0; slot < img->cmn.num_slots; slot++) { + SOKOL_ASSERT(desc->gl_textures[slot]); + img->gl.tex[slot] = desc->gl_textures[slot]; + } + if (desc->gl_texture_target) { + img->gl.target = (GLenum)desc->gl_texture_target; + } + } else { + // create our own GL texture(s) + const GLenum gl_format = _sg_gl_teximage_format(img->cmn.pixel_format); + const bool is_compressed = _sg_is_compressed_pixel_format(img->cmn.pixel_format); + for (int slot = 0; slot < img->cmn.num_slots; slot++) { + glGenTextures(1, &img->gl.tex[slot]); + SOKOL_ASSERT(img->gl.tex[slot]); + _sg_gl_cache_store_texture_binding(0); + _sg_gl_cache_bind_texture(0, img->gl.target, img->gl.tex[slot]); + const GLenum gl_min_filter = _sg_gl_filter(img->cmn.min_filter); + const GLenum gl_mag_filter = _sg_gl_filter(img->cmn.mag_filter); + glTexParameteri(img->gl.target, GL_TEXTURE_MIN_FILTER, (GLint)gl_min_filter); + glTexParameteri(img->gl.target, GL_TEXTURE_MAG_FILTER, (GLint)gl_mag_filter); + if (_sg.gl.ext_anisotropic && (img->cmn.max_anisotropy > 1)) { + GLint max_aniso = (GLint) img->cmn.max_anisotropy; + if (max_aniso > _sg.gl.max_anisotropy) { + max_aniso = _sg.gl.max_anisotropy; + } + glTexParameteri(img->gl.target, GL_TEXTURE_MAX_ANISOTROPY_EXT, max_aniso); + } + if (img->cmn.type == SG_IMAGETYPE_CUBE) { + glTexParameteri(img->gl.target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(img->gl.target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + } else { + glTexParameteri(img->gl.target, GL_TEXTURE_WRAP_S, (GLint)_sg_gl_wrap(img->cmn.wrap_u)); + glTexParameteri(img->gl.target, GL_TEXTURE_WRAP_T, (GLint)_sg_gl_wrap(img->cmn.wrap_v)); + if (img->cmn.type == SG_IMAGETYPE_3D) { + glTexParameteri(img->gl.target, GL_TEXTURE_WRAP_R, (GLint)_sg_gl_wrap(img->cmn.wrap_w)); + } + #if defined(SOKOL_GLCORE33) + float border[4]; + switch (img->cmn.border_color) { + case SG_BORDERCOLOR_TRANSPARENT_BLACK: + border[0] = 0.0f; border[1] = 0.0f; border[2] = 0.0f; border[3] = 0.0f; + break; + case SG_BORDERCOLOR_OPAQUE_WHITE: + border[0] = 1.0f; border[1] = 1.0f; border[2] = 1.0f; border[3] = 1.0f; + break; + default: + border[0] = 0.0f; border[1] = 0.0f; border[2] = 0.0f; border[3] = 1.0f; + break; + } + glTexParameterfv(img->gl.target, GL_TEXTURE_BORDER_COLOR, border); + #endif + } + /* GL spec has strange defaults for mipmap min/max lod: -1000 to +1000 */ + const float min_lod = _sg_clamp(desc->min_lod, 0.0f, 1000.0f); + const float max_lod = _sg_clamp(desc->max_lod, 0.0f, 1000.0f); + glTexParameterf(img->gl.target, GL_TEXTURE_MIN_LOD, min_lod); + glTexParameterf(img->gl.target, GL_TEXTURE_MAX_LOD, max_lod); + const int num_faces = img->cmn.type == SG_IMAGETYPE_CUBE ? 6 : 1; + int data_index = 0; + for (int face_index = 0; face_index < num_faces; face_index++) { + for (int mip_index = 0; mip_index < img->cmn.num_mipmaps; mip_index++, data_index++) { + GLenum gl_img_target = img->gl.target; + if (SG_IMAGETYPE_CUBE == img->cmn.type) { + gl_img_target = _sg_gl_cubeface_target(face_index); + } + const GLvoid* data_ptr = desc->data.subimage[face_index][mip_index].ptr; + int mip_width = img->cmn.width >> mip_index; + if (mip_width == 0) { + mip_width = 1; + } + int mip_height = img->cmn.height >> mip_index; + if (mip_height == 0) { + mip_height = 1; + } + if ((SG_IMAGETYPE_2D == img->cmn.type) || (SG_IMAGETYPE_CUBE == img->cmn.type)) { + if (is_compressed) { + const GLsizei data_size = (GLsizei) desc->data.subimage[face_index][mip_index].size; + glCompressedTexImage2D(gl_img_target, mip_index, gl_internal_format, + mip_width, mip_height, 0, data_size, data_ptr); + } else { + const GLenum gl_type = _sg_gl_teximage_type(img->cmn.pixel_format); + glTexImage2D(gl_img_target, mip_index, (GLint)gl_internal_format, + mip_width, mip_height, 0, gl_format, gl_type, data_ptr); + } + } else if ((SG_IMAGETYPE_3D == img->cmn.type) || (SG_IMAGETYPE_ARRAY == img->cmn.type)) { + int mip_depth = img->cmn.num_slices; + if (SG_IMAGETYPE_3D == img->cmn.type) { + mip_depth >>= mip_index; + } + if (mip_depth == 0) { + mip_depth = 1; + } + if (is_compressed) { + const GLsizei data_size = (GLsizei) desc->data.subimage[face_index][mip_index].size; + glCompressedTexImage3D(gl_img_target, mip_index, gl_internal_format, + mip_width, mip_height, mip_depth, 0, data_size, data_ptr); + } else { + const GLenum gl_type = _sg_gl_teximage_type(img->cmn.pixel_format); + glTexImage3D(gl_img_target, mip_index, (GLint)gl_internal_format, + mip_width, mip_height, mip_depth, 0, gl_format, gl_type, data_ptr); + } + } + } + } + _sg_gl_cache_restore_texture_binding(0); + } + } + _SG_GL_CHECK_ERROR(); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_gl_discard_image(_sg_image_t* img) { + SOKOL_ASSERT(img); + _SG_GL_CHECK_ERROR(); + for (int slot = 0; slot < img->cmn.num_slots; slot++) { + if (img->gl.tex[slot]) { + _sg_gl_cache_invalidate_texture(img->gl.tex[slot]); + if (!img->gl.ext_textures) { + glDeleteTextures(1, &img->gl.tex[slot]); + } + } + } + if (img->gl.msaa_render_buffer) { + glDeleteRenderbuffers(1, &img->gl.msaa_render_buffer); + } + _SG_GL_CHECK_ERROR(); +} + +_SOKOL_PRIVATE GLuint _sg_gl_compile_shader(sg_shader_stage stage, const char* src) { + SOKOL_ASSERT(src); + _SG_GL_CHECK_ERROR(); + GLuint gl_shd = glCreateShader(_sg_gl_shader_stage(stage)); + glShaderSource(gl_shd, 1, &src, 0); + glCompileShader(gl_shd); + GLint compile_status = 0; + glGetShaderiv(gl_shd, GL_COMPILE_STATUS, &compile_status); + if (!compile_status) { + /* compilation failed, log error and delete shader */ + GLint log_len = 0; + glGetShaderiv(gl_shd, GL_INFO_LOG_LENGTH, &log_len); + if (log_len > 0) { + GLchar* log_buf = (GLchar*) _sg_malloc((size_t)log_len); + glGetShaderInfoLog(gl_shd, log_len, &log_len, log_buf); + _SG_ERROR(GL_SHADER_COMPILATION_FAILED); + _SG_LOGMSG(GL_SHADER_COMPILATION_FAILED, log_buf); + _sg_free(log_buf); + } + glDeleteShader(gl_shd); + gl_shd = 0; + } + _SG_GL_CHECK_ERROR(); + return gl_shd; +} + +_SOKOL_PRIVATE sg_resource_state _sg_gl_create_shader(_sg_shader_t* shd, const sg_shader_desc* desc) { + SOKOL_ASSERT(shd && desc); + SOKOL_ASSERT(!shd->gl.prog); + _SG_GL_CHECK_ERROR(); + + _sg_shader_common_init(&shd->cmn, desc); + + /* copy vertex attribute names over, these are used by, but optional on GLES3 and GL3.x */ + for (int i = 0; i < SG_MAX_VERTEX_ATTRIBUTES; i++) { + _sg_strcpy(&shd->gl.attrs[i].name, desc->attrs[i].name); + } + + GLuint gl_vs = _sg_gl_compile_shader(SG_SHADERSTAGE_VS, desc->vs.source); + GLuint gl_fs = _sg_gl_compile_shader(SG_SHADERSTAGE_FS, desc->fs.source); + if (!(gl_vs && gl_fs)) { + return SG_RESOURCESTATE_FAILED; + } + GLuint gl_prog = glCreateProgram(); + glAttachShader(gl_prog, gl_vs); + glAttachShader(gl_prog, gl_fs); + glLinkProgram(gl_prog); + glDeleteShader(gl_vs); + glDeleteShader(gl_fs); + _SG_GL_CHECK_ERROR(); + + GLint link_status; + glGetProgramiv(gl_prog, GL_LINK_STATUS, &link_status); + if (!link_status) { + GLint log_len = 0; + glGetProgramiv(gl_prog, GL_INFO_LOG_LENGTH, &log_len); + if (log_len > 0) { + GLchar* log_buf = (GLchar*) _sg_malloc((size_t)log_len); + glGetProgramInfoLog(gl_prog, log_len, &log_len, log_buf); + _SG_ERROR(GL_SHADER_LINKING_FAILED); + _SG_LOGMSG(GL_SHADER_LINKING_FAILED, log_buf); + _sg_free(log_buf); + } + glDeleteProgram(gl_prog); + return SG_RESOURCESTATE_FAILED; + } + shd->gl.prog = gl_prog; + + /* resolve uniforms */ + _SG_GL_CHECK_ERROR(); + for (int stage_index = 0; stage_index < SG_NUM_SHADER_STAGES; stage_index++) { + const sg_shader_stage_desc* stage_desc = (stage_index == SG_SHADERSTAGE_VS)? &desc->vs : &desc->fs; + _sg_gl_shader_stage_t* gl_stage = &shd->gl.stage[stage_index]; + for (int ub_index = 0; ub_index < shd->cmn.stage[stage_index].num_uniform_blocks; ub_index++) { + const sg_shader_uniform_block_desc* ub_desc = &stage_desc->uniform_blocks[ub_index]; + SOKOL_ASSERT(ub_desc->size > 0); + _sg_gl_uniform_block_t* ub = &gl_stage->uniform_blocks[ub_index]; + SOKOL_ASSERT(ub->num_uniforms == 0); + uint32_t cur_uniform_offset = 0; + for (int u_index = 0; u_index < SG_MAX_UB_MEMBERS; u_index++) { + const sg_shader_uniform_desc* u_desc = &ub_desc->uniforms[u_index]; + if (u_desc->type == SG_UNIFORMTYPE_INVALID) { + break; + } + const uint32_t u_align = _sg_uniform_alignment(u_desc->type, u_desc->array_count, ub_desc->layout); + const uint32_t u_size = _sg_uniform_size(u_desc->type, u_desc->array_count, ub_desc->layout); + cur_uniform_offset = _sg_align_u32(cur_uniform_offset, u_align); + _sg_gl_uniform_t* u = &ub->uniforms[u_index]; + u->type = u_desc->type; + u->count = (uint16_t) u_desc->array_count; + u->offset = (uint16_t) cur_uniform_offset; + cur_uniform_offset += u_size; + if (u_desc->name) { + u->gl_loc = glGetUniformLocation(gl_prog, u_desc->name); + } + else { + u->gl_loc = u_index; + } + ub->num_uniforms++; + } + if (ub_desc->layout == SG_UNIFORMLAYOUT_STD140) { + cur_uniform_offset = _sg_align_u32(cur_uniform_offset, 16); + } + SOKOL_ASSERT(ub_desc->size == (size_t)cur_uniform_offset); + _SOKOL_UNUSED(cur_uniform_offset); + } + } + + /* resolve image locations */ + _SG_GL_CHECK_ERROR(); + GLuint cur_prog = 0; + glGetIntegerv(GL_CURRENT_PROGRAM, (GLint*)&cur_prog); + glUseProgram(gl_prog); + int gl_tex_slot = 0; + for (int stage_index = 0; stage_index < SG_NUM_SHADER_STAGES; stage_index++) { + const sg_shader_stage_desc* stage_desc = (stage_index == SG_SHADERSTAGE_VS)? &desc->vs : &desc->fs; + _sg_gl_shader_stage_t* gl_stage = &shd->gl.stage[stage_index]; + for (int img_index = 0; img_index < shd->cmn.stage[stage_index].num_images; img_index++) { + const sg_shader_image_desc* img_desc = &stage_desc->images[img_index]; + SOKOL_ASSERT(img_desc->image_type != _SG_IMAGETYPE_DEFAULT); + _sg_gl_shader_image_t* gl_img = &gl_stage->images[img_index]; + GLint gl_loc = img_index; + if (img_desc->name) { + gl_loc = glGetUniformLocation(gl_prog, img_desc->name); + } + if (gl_loc != -1) { + gl_img->gl_tex_slot = gl_tex_slot++; + glUniform1i(gl_loc, gl_img->gl_tex_slot); + } else { + gl_img->gl_tex_slot = -1; + } + } + } + /* it's legal to call glUseProgram with 0 */ + glUseProgram(cur_prog); + _SG_GL_CHECK_ERROR(); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_gl_discard_shader(_sg_shader_t* shd) { + SOKOL_ASSERT(shd); + _SG_GL_CHECK_ERROR(); + if (shd->gl.prog) { + _sg_gl_cache_invalidate_program(shd->gl.prog); + glDeleteProgram(shd->gl.prog); + } + _SG_GL_CHECK_ERROR(); +} + +_SOKOL_PRIVATE sg_resource_state _sg_gl_create_pipeline(_sg_pipeline_t* pip, _sg_shader_t* shd, const sg_pipeline_desc* desc) { + SOKOL_ASSERT(pip && shd && desc); + SOKOL_ASSERT(!pip->shader && pip->cmn.shader_id.id == SG_INVALID_ID); + SOKOL_ASSERT(desc->shader.id == shd->slot.id); + SOKOL_ASSERT(shd->gl.prog); + pip->shader = shd; + _sg_pipeline_common_init(&pip->cmn, desc); + pip->gl.primitive_type = desc->primitive_type; + pip->gl.depth = desc->depth; + pip->gl.stencil = desc->stencil; + // FIXME: blend color and write mask per draw-buffer-attachment (requires GL4) + pip->gl.blend = desc->colors[0].blend; + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + pip->gl.color_write_mask[i] = desc->colors[i].write_mask; + } + pip->gl.cull_mode = desc->cull_mode; + pip->gl.face_winding = desc->face_winding; + pip->gl.sample_count = desc->sample_count; + pip->gl.alpha_to_coverage_enabled = desc->alpha_to_coverage_enabled; + + /* resolve vertex attributes */ + for (int attr_index = 0; attr_index < SG_MAX_VERTEX_ATTRIBUTES; attr_index++) { + pip->gl.attrs[attr_index].vb_index = -1; + } + for (int attr_index = 0; attr_index < _sg.limits.max_vertex_attrs; attr_index++) { + const sg_vertex_attr_desc* a_desc = &desc->layout.attrs[attr_index]; + if (a_desc->format == SG_VERTEXFORMAT_INVALID) { + break; + } + SOKOL_ASSERT(a_desc->buffer_index < SG_MAX_SHADERSTAGE_BUFFERS); + const sg_buffer_layout_desc* l_desc = &desc->layout.buffers[a_desc->buffer_index]; + const sg_vertex_step step_func = l_desc->step_func; + const int step_rate = l_desc->step_rate; + GLint attr_loc = attr_index; + if (!_sg_strempty(&shd->gl.attrs[attr_index].name)) { + attr_loc = glGetAttribLocation(pip->shader->gl.prog, _sg_strptr(&shd->gl.attrs[attr_index].name)); + } + SOKOL_ASSERT(attr_loc < (GLint)_sg.limits.max_vertex_attrs); + if (attr_loc != -1) { + _sg_gl_attr_t* gl_attr = &pip->gl.attrs[attr_loc]; + SOKOL_ASSERT(gl_attr->vb_index == -1); + gl_attr->vb_index = (int8_t) a_desc->buffer_index; + if (step_func == SG_VERTEXSTEP_PER_VERTEX) { + gl_attr->divisor = 0; + } else { + gl_attr->divisor = (int8_t) step_rate; + pip->cmn.use_instanced_draw = true; + } + SOKOL_ASSERT(l_desc->stride > 0); + gl_attr->stride = (uint8_t) l_desc->stride; + gl_attr->offset = a_desc->offset; + gl_attr->size = (uint8_t) _sg_gl_vertexformat_size(a_desc->format); + gl_attr->type = _sg_gl_vertexformat_type(a_desc->format); + gl_attr->normalized = _sg_gl_vertexformat_normalized(a_desc->format); + pip->cmn.vertex_layout_valid[a_desc->buffer_index] = true; + } + else { + _SG_ERROR(GL_VERTEX_ATTRIBUTE_NOT_FOUND_IN_SHADER); + _SG_LOGMSG(GL_VERTEX_ATTRIBUTE_NOT_FOUND_IN_SHADER, _sg_strptr(&shd->gl.attrs[attr_index].name)); + } + } + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_gl_discard_pipeline(_sg_pipeline_t* pip) { + SOKOL_ASSERT(pip); + _sg_gl_cache_invalidate_pipeline(pip); +} + +_SOKOL_PRIVATE void _sg_gl_fb_attach_texture(const _sg_gl_attachment_t* gl_att, const _sg_pass_attachment_common_t* cmn_att, GLenum gl_att_type) { + const _sg_image_t* img = gl_att->image; + SOKOL_ASSERT(img); + const GLuint gl_tex = img->gl.tex[0]; + SOKOL_ASSERT(gl_tex); + const int mip_level = cmn_att->mip_level; + const int slice = cmn_att->slice; + switch (img->cmn.type) { + case SG_IMAGETYPE_2D: + glFramebufferTexture2D(GL_FRAMEBUFFER, gl_att_type, GL_TEXTURE_2D, gl_tex, mip_level); + break; + case SG_IMAGETYPE_CUBE: + glFramebufferTexture2D(GL_FRAMEBUFFER, gl_att_type, _sg_gl_cubeface_target(slice), gl_tex, mip_level); + break; + default: + glFramebufferTextureLayer(GL_FRAMEBUFFER, gl_att_type, gl_tex, mip_level, slice); + break; + } +} + +_SOKOL_PRIVATE GLenum _sg_gl_depth_stencil_attachment_type(const _sg_gl_attachment_t* ds_att) { + const _sg_image_t* img = ds_att->image; + SOKOL_ASSERT(img); + if (_sg_is_depth_stencil_format(img->cmn.pixel_format)) { + return GL_DEPTH_STENCIL_ATTACHMENT; + } else { + return GL_DEPTH_ATTACHMENT; + } +} + +/* + _sg_gl_create_pass + + att_imgs must point to a _sg_image* att_imgs[SG_MAX_COLOR_ATTACHMENTS+1] array, + first entries are the color attachment images (or nullptr), last entry + is the depth-stencil image (or nullptr). +*/ +_SOKOL_PRIVATE sg_resource_state _sg_gl_create_pass(_sg_pass_t* pass, _sg_image_t** att_images, const sg_pass_desc* desc) { + SOKOL_ASSERT(pass && att_images && desc); + SOKOL_ASSERT(att_images && att_images[0]); + _SG_GL_CHECK_ERROR(); + + _sg_pass_common_init(&pass->cmn, desc); + + // copy image pointers + const sg_pass_attachment_desc* att_desc; + for (int i = 0; i < pass->cmn.num_color_atts; i++) { + att_desc = &desc->color_attachments[i]; + SOKOL_ASSERT(att_desc->image.id != SG_INVALID_ID); + SOKOL_ASSERT(0 == pass->gl.color_atts[i].image); + SOKOL_ASSERT(att_images[i] && (att_images[i]->slot.id == att_desc->image.id)); + SOKOL_ASSERT(_sg_is_valid_rendertarget_color_format(att_images[i]->cmn.pixel_format)); + pass->gl.color_atts[i].image = att_images[i]; + } + SOKOL_ASSERT(0 == pass->gl.ds_att.image); + att_desc = &desc->depth_stencil_attachment; + if (att_desc->image.id != SG_INVALID_ID) { + const int ds_img_index = SG_MAX_COLOR_ATTACHMENTS; + SOKOL_ASSERT(att_images[ds_img_index] && (att_images[ds_img_index]->slot.id == att_desc->image.id)); + SOKOL_ASSERT(_sg_is_valid_rendertarget_depth_format(att_images[ds_img_index]->cmn.pixel_format)); + pass->gl.ds_att.image = att_images[ds_img_index]; + } + + // store current framebuffer binding (restored at end of function) + GLuint gl_orig_fb; + glGetIntegerv(GL_FRAMEBUFFER_BINDING, (GLint*)&gl_orig_fb); + + // create a framebuffer object + glGenFramebuffers(1, &pass->gl.fb); + glBindFramebuffer(GL_FRAMEBUFFER, pass->gl.fb); + + // attach msaa render buffer or textures + const bool is_msaa = (0 != att_images[0]->gl.msaa_render_buffer); + if (is_msaa) { + for (int i = 0; i < pass->cmn.num_color_atts; i++) { + const _sg_image_t* att_img = pass->gl.color_atts[i].image; + SOKOL_ASSERT(att_img); + const GLuint gl_render_buffer = att_img->gl.msaa_render_buffer; + SOKOL_ASSERT(gl_render_buffer); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, (GLenum)(GL_COLOR_ATTACHMENT0+i), GL_RENDERBUFFER, gl_render_buffer); + } + if (pass->gl.ds_att.image) { + const GLenum gl_att = _sg_gl_depth_stencil_attachment_type(&pass->gl.ds_att); + const _sg_image_t* att_img = pass->gl.ds_att.image; + const GLuint gl_render_buffer = att_img->gl.msaa_render_buffer; + SOKOL_ASSERT(gl_render_buffer); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, gl_att, GL_RENDERBUFFER, gl_render_buffer); + } + } else { + for (int i = 0; i < pass->cmn.num_color_atts; i++) { + const GLenum gl_att_type = (GLenum)(GL_COLOR_ATTACHMENT0 + i); + _sg_gl_fb_attach_texture(&pass->gl.color_atts[i], &pass->cmn.color_atts[i], gl_att_type); + } + if (pass->gl.ds_att.image) { + const GLenum gl_att_type = _sg_gl_depth_stencil_attachment_type(&pass->gl.ds_att); + _sg_gl_fb_attach_texture(&pass->gl.ds_att, &pass->cmn.ds_att, gl_att_type); + } + } + + // check if framebuffer is complete + if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { + _SG_ERROR(GL_FRAMEBUFFER_INCOMPLETE); + return SG_RESOURCESTATE_FAILED; + } + + // setup color attachments for the framebuffer + const GLenum att[SG_MAX_COLOR_ATTACHMENTS] = { + GL_COLOR_ATTACHMENT0, + GL_COLOR_ATTACHMENT1, + GL_COLOR_ATTACHMENT2, + GL_COLOR_ATTACHMENT3 + }; + glDrawBuffers(pass->cmn.num_color_atts, att); + + // create MSAA resolve framebuffers if necessary + if (is_msaa) { + for (int i = 0; i < pass->cmn.num_color_atts; i++) { + _sg_gl_attachment_t* gl_att = &pass->gl.color_atts[i]; + SOKOL_ASSERT(gl_att->image); + _sg_pass_attachment_t* cmn_att = &pass->cmn.color_atts[i]; + SOKOL_ASSERT(0 == gl_att->gl_msaa_resolve_buffer); + glGenFramebuffers(1, &gl_att->gl_msaa_resolve_buffer); + glBindFramebuffer(GL_FRAMEBUFFER, gl_att->gl_msaa_resolve_buffer); + _sg_gl_fb_attach_texture(gl_att, cmn_att, GL_COLOR_ATTACHMENT0); + // check if framebuffer is complete + if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { + _SG_ERROR(GL_MSAA_FRAMEBUFFER_INCOMPLETE); + return SG_RESOURCESTATE_FAILED; + } + // setup color attachments for the framebuffer + const GLenum gl_draw_bufs = GL_COLOR_ATTACHMENT0; + glDrawBuffers(1, &gl_draw_bufs); + } + } + + // restore original framebuffer binding + glBindFramebuffer(GL_FRAMEBUFFER, gl_orig_fb); + _SG_GL_CHECK_ERROR(); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_gl_discard_pass(_sg_pass_t* pass) { + SOKOL_ASSERT(pass); + SOKOL_ASSERT(pass != _sg.gl.cur_pass); + _SG_GL_CHECK_ERROR(); + if (0 != pass->gl.fb) { + glDeleteFramebuffers(1, &pass->gl.fb); + } + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + if (pass->gl.color_atts[i].gl_msaa_resolve_buffer) { + glDeleteFramebuffers(1, &pass->gl.color_atts[i].gl_msaa_resolve_buffer); + } + } + if (pass->gl.ds_att.gl_msaa_resolve_buffer) { + glDeleteFramebuffers(1, &pass->gl.ds_att.gl_msaa_resolve_buffer); + } + _SG_GL_CHECK_ERROR(); +} + +_SOKOL_PRIVATE _sg_image_t* _sg_gl_pass_color_image(const _sg_pass_t* pass, int index) { + SOKOL_ASSERT(pass && (index >= 0) && (index < SG_MAX_COLOR_ATTACHMENTS)); + /* NOTE: may return null */ + return pass->gl.color_atts[index].image; +} + +_SOKOL_PRIVATE _sg_image_t* _sg_gl_pass_ds_image(const _sg_pass_t* pass) { + /* NOTE: may return null */ + SOKOL_ASSERT(pass); + return pass->gl.ds_att.image; +} + +_SOKOL_PRIVATE void _sg_gl_begin_pass(_sg_pass_t* pass, const sg_pass_action* action, int w, int h) { + // FIXME: what if a texture used as render target is still bound, should we + // unbind all currently bound textures in begin pass? + SOKOL_ASSERT(action); + SOKOL_ASSERT(!_sg.gl.in_pass); + _SG_GL_CHECK_ERROR(); + _sg.gl.in_pass = true; + _sg.gl.cur_pass = pass; // can be 0 + if (pass) { + _sg.gl.cur_pass_id.id = pass->slot.id; + } else { + _sg.gl.cur_pass_id.id = SG_INVALID_ID; + } + _sg.gl.cur_pass_width = w; + _sg.gl.cur_pass_height = h; + + // bind the render pass framebuffer + // + // FIXME: Disabling SRGB conversion for the default framebuffer is + // a crude hack to make behaviour for sRGB render target textures + // identical with the Metal and D3D11 swapchains created by sokol-app. + // + // This will need a cleaner solution (e.g. allowing to configure + // sokol_app.h with an sRGB or RGB framebuffer. + if (pass) { + // offscreen pass + SOKOL_ASSERT(pass->gl.fb); + #if defined(SOKOL_GLCORE33) + glEnable(GL_FRAMEBUFFER_SRGB); + #endif + glBindFramebuffer(GL_FRAMEBUFFER, pass->gl.fb); + + } else { + // default pass + SOKOL_ASSERT(_sg.gl.cur_context); + #if defined(SOKOL_GLCORE33) + glDisable(GL_FRAMEBUFFER_SRGB); + #endif + glBindFramebuffer(GL_FRAMEBUFFER, _sg.gl.cur_context->default_framebuffer); + } + glViewport(0, 0, w, h); + glScissor(0, 0, w, h); + + // number of color attachments + const int num_color_atts = pass ? pass->cmn.num_color_atts : 1; + + // clear color and depth-stencil attachments if needed + bool clear_any_color = false; + for (int i = 0; i < num_color_atts; i++) { + if (SG_ACTION_CLEAR == action->colors[i].action) { + clear_any_color = true; + break; + } + } + const bool clear_depth = (action->depth.action == SG_ACTION_CLEAR); + const bool clear_stencil = (action->stencil.action == SG_ACTION_CLEAR); + + bool need_pip_cache_flush = false; + if (clear_any_color) { + bool need_color_mask_flush = false; + // NOTE: not a bug to iterate over all possible color attachments + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + if (SG_COLORMASK_RGBA != _sg.gl.cache.color_write_mask[i]) { + need_pip_cache_flush = true; + need_color_mask_flush = true; + _sg.gl.cache.color_write_mask[i] = SG_COLORMASK_RGBA; + } + } + if (need_color_mask_flush) { + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + } + } + if (clear_depth) { + if (!_sg.gl.cache.depth.write_enabled) { + need_pip_cache_flush = true; + _sg.gl.cache.depth.write_enabled = true; + glDepthMask(GL_TRUE); + } + if (_sg.gl.cache.depth.compare != SG_COMPAREFUNC_ALWAYS) { + need_pip_cache_flush = true; + _sg.gl.cache.depth.compare = SG_COMPAREFUNC_ALWAYS; + glDepthFunc(GL_ALWAYS); + } + } + if (clear_stencil) { + if (_sg.gl.cache.stencil.write_mask != 0xFF) { + need_pip_cache_flush = true; + _sg.gl.cache.stencil.write_mask = 0xFF; + glStencilMask(0xFF); + } + } + if (need_pip_cache_flush) { + // we messed with the state cache directly, need to clear cached + // pipeline to force re-evaluation in next sg_apply_pipeline() + _sg.gl.cache.cur_pipeline = 0; + _sg.gl.cache.cur_pipeline_id.id = SG_INVALID_ID; + } + for (int i = 0; i < num_color_atts; i++) { + if (action->colors[i].action == SG_ACTION_CLEAR) { + glClearBufferfv(GL_COLOR, i, &action->colors[i].value.r); + } + } + if ((pass == 0) || (pass->gl.ds_att.image)) { + if (clear_depth && clear_stencil) { + glClearBufferfi(GL_DEPTH_STENCIL, 0, action->depth.value, action->stencil.value); + } else if (clear_depth) { + glClearBufferfv(GL_DEPTH, 0, &action->depth.value); + } else if (clear_stencil) { + GLint val = (GLint) action->stencil.value; + glClearBufferiv(GL_STENCIL, 0, &val); + } + } + _SG_GL_CHECK_ERROR(); +} + +_SOKOL_PRIVATE void _sg_gl_end_pass(void) { + SOKOL_ASSERT(_sg.gl.in_pass); + _SG_GL_CHECK_ERROR(); + + /* if this was an offscreen pass, and MSAA rendering was used, need + to resolve into the pass images */ + if (_sg.gl.cur_pass) { + /* check if the pass object is still valid */ + const _sg_pass_t* pass = _sg.gl.cur_pass; + SOKOL_ASSERT(pass->slot.id == _sg.gl.cur_pass_id.id); + bool is_msaa = (0 != _sg.gl.cur_pass->gl.color_atts[0].gl_msaa_resolve_buffer); + if (is_msaa) { + SOKOL_ASSERT(pass->gl.fb); + glBindFramebuffer(GL_READ_FRAMEBUFFER, pass->gl.fb); + SOKOL_ASSERT(pass->gl.color_atts[0].image); + const int w = pass->gl.color_atts[0].image->cmn.width; + const int h = pass->gl.color_atts[0].image->cmn.height; + const int num_atts = pass->cmn.num_color_atts; + for (int att_index = 0; att_index < num_atts; att_index++) { + const _sg_gl_attachment_t* gl_att = &pass->gl.color_atts[att_index]; + SOKOL_ASSERT(gl_att->gl_msaa_resolve_buffer); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, gl_att->gl_msaa_resolve_buffer); + glReadBuffer((GLenum)(GL_COLOR_ATTACHMENT0 + att_index)); + glBlitFramebuffer(0, 0, w, h, 0, 0, w, h, GL_COLOR_BUFFER_BIT, GL_NEAREST); + } + #if defined(SOKOL_GLES3) + const GLenum color_att[SG_MAX_COLOR_ATTACHMENTS] = { + GL_COLOR_ATTACHMENT0, + GL_COLOR_ATTACHMENT1, + GL_COLOR_ATTACHMENT2, + GL_COLOR_ATTACHMENT3 + }; + glInvalidateFramebuffer(GL_READ_FRAMEBUFFER, num_atts, color_att); + #endif + } + } + _sg.gl.cur_pass = 0; + _sg.gl.cur_pass_id.id = SG_INVALID_ID; + _sg.gl.cur_pass_width = 0; + _sg.gl.cur_pass_height = 0; + + SOKOL_ASSERT(_sg.gl.cur_context); + glBindFramebuffer(GL_FRAMEBUFFER, _sg.gl.cur_context->default_framebuffer); + _sg.gl.in_pass = false; + _SG_GL_CHECK_ERROR(); +} + +_SOKOL_PRIVATE void _sg_gl_apply_viewport(int x, int y, int w, int h, bool origin_top_left) { + SOKOL_ASSERT(_sg.gl.in_pass); + y = origin_top_left ? (_sg.gl.cur_pass_height - (y+h)) : y; + glViewport(x, y, w, h); +} + +_SOKOL_PRIVATE void _sg_gl_apply_scissor_rect(int x, int y, int w, int h, bool origin_top_left) { + SOKOL_ASSERT(_sg.gl.in_pass); + y = origin_top_left ? (_sg.gl.cur_pass_height - (y+h)) : y; + glScissor(x, y, w, h); +} + +_SOKOL_PRIVATE void _sg_gl_apply_pipeline(_sg_pipeline_t* pip) { + SOKOL_ASSERT(pip); + SOKOL_ASSERT(pip->shader && (pip->cmn.shader_id.id == pip->shader->slot.id)); + _SG_GL_CHECK_ERROR(); + if ((_sg.gl.cache.cur_pipeline != pip) || (_sg.gl.cache.cur_pipeline_id.id != pip->slot.id)) { + _sg.gl.cache.cur_pipeline = pip; + _sg.gl.cache.cur_pipeline_id.id = pip->slot.id; + _sg.gl.cache.cur_primitive_type = _sg_gl_primitive_type(pip->gl.primitive_type); + _sg.gl.cache.cur_index_type = _sg_gl_index_type(pip->cmn.index_type); + + /* update depth state */ + { + const sg_depth_state* state_ds = &pip->gl.depth; + sg_depth_state* cache_ds = &_sg.gl.cache.depth; + if (state_ds->compare != cache_ds->compare) { + cache_ds->compare = state_ds->compare; + glDepthFunc(_sg_gl_compare_func(state_ds->compare)); + } + if (state_ds->write_enabled != cache_ds->write_enabled) { + cache_ds->write_enabled = state_ds->write_enabled; + glDepthMask(state_ds->write_enabled); + } + if (!_sg_fequal(state_ds->bias, cache_ds->bias, 0.000001f) || + !_sg_fequal(state_ds->bias_slope_scale, cache_ds->bias_slope_scale, 0.000001f)) + { + /* according to ANGLE's D3D11 backend: + D3D11 SlopeScaledDepthBias ==> GL polygonOffsetFactor + D3D11 DepthBias ==> GL polygonOffsetUnits + DepthBiasClamp has no meaning on GL + */ + cache_ds->bias = state_ds->bias; + cache_ds->bias_slope_scale = state_ds->bias_slope_scale; + glPolygonOffset(state_ds->bias_slope_scale, state_ds->bias); + bool po_enabled = true; + if (_sg_fequal(state_ds->bias, 0.0f, 0.000001f) && + _sg_fequal(state_ds->bias_slope_scale, 0.0f, 0.000001f)) + { + po_enabled = false; + } + if (po_enabled != _sg.gl.cache.polygon_offset_enabled) { + _sg.gl.cache.polygon_offset_enabled = po_enabled; + if (po_enabled) { + glEnable(GL_POLYGON_OFFSET_FILL); + } else { + glDisable(GL_POLYGON_OFFSET_FILL); + } + } + } + } + + /* update stencil state */ + { + const sg_stencil_state* state_ss = &pip->gl.stencil; + sg_stencil_state* cache_ss = &_sg.gl.cache.stencil; + if (state_ss->enabled != cache_ss->enabled) { + cache_ss->enabled = state_ss->enabled; + if (state_ss->enabled) { + glEnable(GL_STENCIL_TEST); + } else { + glDisable(GL_STENCIL_TEST); + } + } + if (state_ss->write_mask != cache_ss->write_mask) { + cache_ss->write_mask = state_ss->write_mask; + glStencilMask(state_ss->write_mask); + } + for (int i = 0; i < 2; i++) { + const sg_stencil_face_state* state_sfs = (i==0)? &state_ss->front : &state_ss->back; + sg_stencil_face_state* cache_sfs = (i==0)? &cache_ss->front : &cache_ss->back; + GLenum gl_face = (i==0)? GL_FRONT : GL_BACK; + if ((state_sfs->compare != cache_sfs->compare) || + (state_ss->read_mask != cache_ss->read_mask) || + (state_ss->ref != cache_ss->ref)) + { + cache_sfs->compare = state_sfs->compare; + glStencilFuncSeparate(gl_face, + _sg_gl_compare_func(state_sfs->compare), + state_ss->ref, + state_ss->read_mask); + } + if ((state_sfs->fail_op != cache_sfs->fail_op) || + (state_sfs->depth_fail_op != cache_sfs->depth_fail_op) || + (state_sfs->pass_op != cache_sfs->pass_op)) + { + cache_sfs->fail_op = state_sfs->fail_op; + cache_sfs->depth_fail_op = state_sfs->depth_fail_op; + cache_sfs->pass_op = state_sfs->pass_op; + glStencilOpSeparate(gl_face, + _sg_gl_stencil_op(state_sfs->fail_op), + _sg_gl_stencil_op(state_sfs->depth_fail_op), + _sg_gl_stencil_op(state_sfs->pass_op)); + } + } + cache_ss->read_mask = state_ss->read_mask; + cache_ss->ref = state_ss->ref; + } + + /* update blend state + FIXME: separate blend state per color attachment not support, needs GL4 + */ + { + const sg_blend_state* state_bs = &pip->gl.blend; + sg_blend_state* cache_bs = &_sg.gl.cache.blend; + if (state_bs->enabled != cache_bs->enabled) { + cache_bs->enabled = state_bs->enabled; + if (state_bs->enabled) { + glEnable(GL_BLEND); + } else { + glDisable(GL_BLEND); + } + } + if ((state_bs->src_factor_rgb != cache_bs->src_factor_rgb) || + (state_bs->dst_factor_rgb != cache_bs->dst_factor_rgb) || + (state_bs->src_factor_alpha != cache_bs->src_factor_alpha) || + (state_bs->dst_factor_alpha != cache_bs->dst_factor_alpha)) + { + cache_bs->src_factor_rgb = state_bs->src_factor_rgb; + cache_bs->dst_factor_rgb = state_bs->dst_factor_rgb; + cache_bs->src_factor_alpha = state_bs->src_factor_alpha; + cache_bs->dst_factor_alpha = state_bs->dst_factor_alpha; + glBlendFuncSeparate(_sg_gl_blend_factor(state_bs->src_factor_rgb), + _sg_gl_blend_factor(state_bs->dst_factor_rgb), + _sg_gl_blend_factor(state_bs->src_factor_alpha), + _sg_gl_blend_factor(state_bs->dst_factor_alpha)); + } + if ((state_bs->op_rgb != cache_bs->op_rgb) || (state_bs->op_alpha != cache_bs->op_alpha)) { + cache_bs->op_rgb = state_bs->op_rgb; + cache_bs->op_alpha = state_bs->op_alpha; + glBlendEquationSeparate(_sg_gl_blend_op(state_bs->op_rgb), _sg_gl_blend_op(state_bs->op_alpha)); + } + } + + /* standalone state */ + for (GLuint i = 0; i < (GLuint)pip->cmn.color_count; i++) { + if (pip->gl.color_write_mask[i] != _sg.gl.cache.color_write_mask[i]) { + const sg_color_mask cm = pip->gl.color_write_mask[i]; + _sg.gl.cache.color_write_mask[i] = cm; + #ifdef SOKOL_GLCORE33 + glColorMaski(i, + (cm & SG_COLORMASK_R) != 0, + (cm & SG_COLORMASK_G) != 0, + (cm & SG_COLORMASK_B) != 0, + (cm & SG_COLORMASK_A) != 0); + #else + if (0 == i) { + glColorMask((cm & SG_COLORMASK_R) != 0, + (cm & SG_COLORMASK_G) != 0, + (cm & SG_COLORMASK_B) != 0, + (cm & SG_COLORMASK_A) != 0); + } + #endif + } + } + + if (!_sg_fequal(pip->cmn.blend_color.r, _sg.gl.cache.blend_color.r, 0.0001f) || + !_sg_fequal(pip->cmn.blend_color.g, _sg.gl.cache.blend_color.g, 0.0001f) || + !_sg_fequal(pip->cmn.blend_color.b, _sg.gl.cache.blend_color.b, 0.0001f) || + !_sg_fequal(pip->cmn.blend_color.a, _sg.gl.cache.blend_color.a, 0.0001f)) + { + sg_color c = pip->cmn.blend_color; + _sg.gl.cache.blend_color = c; + glBlendColor(c.r, c.g, c.b, c.a); + } + if (pip->gl.cull_mode != _sg.gl.cache.cull_mode) { + _sg.gl.cache.cull_mode = pip->gl.cull_mode; + if (SG_CULLMODE_NONE == pip->gl.cull_mode) { + glDisable(GL_CULL_FACE); + } else { + glEnable(GL_CULL_FACE); + GLenum gl_mode = (SG_CULLMODE_FRONT == pip->gl.cull_mode) ? GL_FRONT : GL_BACK; + glCullFace(gl_mode); + } + } + if (pip->gl.face_winding != _sg.gl.cache.face_winding) { + _sg.gl.cache.face_winding = pip->gl.face_winding; + GLenum gl_winding = (SG_FACEWINDING_CW == pip->gl.face_winding) ? GL_CW : GL_CCW; + glFrontFace(gl_winding); + } + if (pip->gl.alpha_to_coverage_enabled != _sg.gl.cache.alpha_to_coverage_enabled) { + _sg.gl.cache.alpha_to_coverage_enabled = pip->gl.alpha_to_coverage_enabled; + if (pip->gl.alpha_to_coverage_enabled) { + glEnable(GL_SAMPLE_ALPHA_TO_COVERAGE); + } else { + glDisable(GL_SAMPLE_ALPHA_TO_COVERAGE); + } + } + #ifdef SOKOL_GLCORE33 + if (pip->gl.sample_count != _sg.gl.cache.sample_count) { + _sg.gl.cache.sample_count = pip->gl.sample_count; + if (pip->gl.sample_count > 1) { + glEnable(GL_MULTISAMPLE); + } else { + glDisable(GL_MULTISAMPLE); + } + } + #endif + + /* bind shader program */ + if (pip->shader->gl.prog != _sg.gl.cache.prog) { + _sg.gl.cache.prog = pip->shader->gl.prog; + glUseProgram(pip->shader->gl.prog); + } + } + _SG_GL_CHECK_ERROR(); +} + +_SOKOL_PRIVATE void _sg_gl_apply_bindings( + _sg_pipeline_t* pip, + _sg_buffer_t** vbs, const int* vb_offsets, int num_vbs, + _sg_buffer_t* ib, int ib_offset, + _sg_image_t** vs_imgs, int num_vs_imgs, + _sg_image_t** fs_imgs, int num_fs_imgs) +{ + SOKOL_ASSERT(pip); + _SOKOL_UNUSED(num_fs_imgs); + _SOKOL_UNUSED(num_vs_imgs); + _SOKOL_UNUSED(num_vbs); + _SG_GL_CHECK_ERROR(); + + /* bind textures */ + _SG_GL_CHECK_ERROR(); + for (int stage_index = 0; stage_index < SG_NUM_SHADER_STAGES; stage_index++) { + const _sg_shader_stage_t* stage = &pip->shader->cmn.stage[stage_index]; + const _sg_gl_shader_stage_t* gl_stage = &pip->shader->gl.stage[stage_index]; + _sg_image_t** imgs = (stage_index == SG_SHADERSTAGE_VS)? vs_imgs : fs_imgs; + SOKOL_ASSERT(((stage_index == SG_SHADERSTAGE_VS)? num_vs_imgs : num_fs_imgs) == stage->num_images); + for (int img_index = 0; img_index < stage->num_images; img_index++) { + const _sg_gl_shader_image_t* gl_shd_img = &gl_stage->images[img_index]; + if (gl_shd_img->gl_tex_slot != -1) { + _sg_image_t* img = imgs[img_index]; + const GLuint gl_tex = img->gl.tex[img->cmn.active_slot]; + SOKOL_ASSERT(img && img->gl.target); + SOKOL_ASSERT((gl_shd_img->gl_tex_slot != -1) && gl_tex); + _sg_gl_cache_bind_texture(gl_shd_img->gl_tex_slot, img->gl.target, gl_tex); + } + } + } + _SG_GL_CHECK_ERROR(); + + /* index buffer (can be 0) */ + const GLuint gl_ib = ib ? ib->gl.buf[ib->cmn.active_slot] : 0; + _sg_gl_cache_bind_buffer(GL_ELEMENT_ARRAY_BUFFER, gl_ib); + _sg.gl.cache.cur_ib_offset = ib_offset; + + /* vertex attributes */ + for (GLuint attr_index = 0; attr_index < (GLuint)_sg.limits.max_vertex_attrs; attr_index++) { + _sg_gl_attr_t* attr = &pip->gl.attrs[attr_index]; + _sg_gl_cache_attr_t* cache_attr = &_sg.gl.cache.attrs[attr_index]; + bool cache_attr_dirty = false; + int vb_offset = 0; + GLuint gl_vb = 0; + if (attr->vb_index >= 0) { + /* attribute is enabled */ + SOKOL_ASSERT(attr->vb_index < num_vbs); + _sg_buffer_t* vb = vbs[attr->vb_index]; + SOKOL_ASSERT(vb); + gl_vb = vb->gl.buf[vb->cmn.active_slot]; + vb_offset = vb_offsets[attr->vb_index] + attr->offset; + if ((gl_vb != cache_attr->gl_vbuf) || + (attr->size != cache_attr->gl_attr.size) || + (attr->type != cache_attr->gl_attr.type) || + (attr->normalized != cache_attr->gl_attr.normalized) || + (attr->stride != cache_attr->gl_attr.stride) || + (vb_offset != cache_attr->gl_attr.offset) || + (cache_attr->gl_attr.divisor != attr->divisor)) + { + _sg_gl_cache_bind_buffer(GL_ARRAY_BUFFER, gl_vb); + glVertexAttribPointer(attr_index, attr->size, attr->type, + attr->normalized, attr->stride, + (const GLvoid*)(GLintptr)vb_offset); + glVertexAttribDivisor(attr_index, (GLuint)attr->divisor); + cache_attr_dirty = true; + } + if (cache_attr->gl_attr.vb_index == -1) { + glEnableVertexAttribArray(attr_index); + cache_attr_dirty = true; + } + } else { + /* attribute is disabled */ + if (cache_attr->gl_attr.vb_index != -1) { + glDisableVertexAttribArray(attr_index); + cache_attr_dirty = true; + } + } + if (cache_attr_dirty) { + cache_attr->gl_attr = *attr; + cache_attr->gl_attr.offset = vb_offset; + cache_attr->gl_vbuf = gl_vb; + } + } + _SG_GL_CHECK_ERROR(); +} + +_SOKOL_PRIVATE void _sg_gl_apply_uniforms(sg_shader_stage stage_index, int ub_index, const sg_range* data) { + SOKOL_ASSERT(_sg.gl.cache.cur_pipeline); + SOKOL_ASSERT(_sg.gl.cache.cur_pipeline->slot.id == _sg.gl.cache.cur_pipeline_id.id); + SOKOL_ASSERT(_sg.gl.cache.cur_pipeline->shader->slot.id == _sg.gl.cache.cur_pipeline->cmn.shader_id.id); + SOKOL_ASSERT(_sg.gl.cache.cur_pipeline->shader->cmn.stage[stage_index].num_uniform_blocks > ub_index); + SOKOL_ASSERT(_sg.gl.cache.cur_pipeline->shader->cmn.stage[stage_index].uniform_blocks[ub_index].size == data->size); + const _sg_gl_shader_stage_t* gl_stage = &_sg.gl.cache.cur_pipeline->shader->gl.stage[stage_index]; + const _sg_gl_uniform_block_t* gl_ub = &gl_stage->uniform_blocks[ub_index]; + for (int u_index = 0; u_index < gl_ub->num_uniforms; u_index++) { + const _sg_gl_uniform_t* u = &gl_ub->uniforms[u_index]; + SOKOL_ASSERT(u->type != SG_UNIFORMTYPE_INVALID); + if (u->gl_loc == -1) { + continue; + } + GLfloat* fptr = (GLfloat*) (((uint8_t*)data->ptr) + u->offset); + GLint* iptr = (GLint*) (((uint8_t*)data->ptr) + u->offset); + switch (u->type) { + case SG_UNIFORMTYPE_INVALID: + break; + case SG_UNIFORMTYPE_FLOAT: + glUniform1fv(u->gl_loc, u->count, fptr); + break; + case SG_UNIFORMTYPE_FLOAT2: + glUniform2fv(u->gl_loc, u->count, fptr); + break; + case SG_UNIFORMTYPE_FLOAT3: + glUniform3fv(u->gl_loc, u->count, fptr); + break; + case SG_UNIFORMTYPE_FLOAT4: + glUniform4fv(u->gl_loc, u->count, fptr); + break; + case SG_UNIFORMTYPE_INT: + glUniform1iv(u->gl_loc, u->count, iptr); + break; + case SG_UNIFORMTYPE_INT2: + glUniform2iv(u->gl_loc, u->count, iptr); + break; + case SG_UNIFORMTYPE_INT3: + glUniform3iv(u->gl_loc, u->count, iptr); + break; + case SG_UNIFORMTYPE_INT4: + glUniform4iv(u->gl_loc, u->count, iptr); + break; + case SG_UNIFORMTYPE_MAT4: + glUniformMatrix4fv(u->gl_loc, u->count, GL_FALSE, fptr); + break; + default: + SOKOL_UNREACHABLE; + break; + } + } +} + +_SOKOL_PRIVATE void _sg_gl_draw(int base_element, int num_elements, int num_instances) { + SOKOL_ASSERT(_sg.gl.cache.cur_pipeline); + const GLenum i_type = _sg.gl.cache.cur_index_type; + const GLenum p_type = _sg.gl.cache.cur_primitive_type; + if (0 != i_type) { + /* indexed rendering */ + const int i_size = (i_type == GL_UNSIGNED_SHORT) ? 2 : 4; + const int ib_offset = _sg.gl.cache.cur_ib_offset; + const GLvoid* indices = (const GLvoid*)(GLintptr)(base_element*i_size+ib_offset); + if (_sg.gl.cache.cur_pipeline->cmn.use_instanced_draw) { + glDrawElementsInstanced(p_type, num_elements, i_type, indices, num_instances); + } else { + glDrawElements(p_type, num_elements, i_type, indices); + } + } else { + /* non-indexed rendering */ + if (_sg.gl.cache.cur_pipeline->cmn.use_instanced_draw) { + glDrawArraysInstanced(p_type, base_element, num_elements, num_instances); + } else { + glDrawArrays(p_type, base_element, num_elements); + } + } +} + +_SOKOL_PRIVATE void _sg_gl_commit(void) { + SOKOL_ASSERT(!_sg.gl.in_pass); + /* "soft" clear bindings (only those that are actually bound) */ + _sg_gl_cache_clear_buffer_bindings(false); + _sg_gl_cache_clear_texture_bindings(false); +} + +_SOKOL_PRIVATE void _sg_gl_update_buffer(_sg_buffer_t* buf, const sg_range* data) { + SOKOL_ASSERT(buf && data && data->ptr && (data->size > 0)); + /* only one update per buffer per frame allowed */ + if (++buf->cmn.active_slot >= buf->cmn.num_slots) { + buf->cmn.active_slot = 0; + } + GLenum gl_tgt = _sg_gl_buffer_target(buf->cmn.type); + SOKOL_ASSERT(buf->cmn.active_slot < SG_NUM_INFLIGHT_FRAMES); + GLuint gl_buf = buf->gl.buf[buf->cmn.active_slot]; + SOKOL_ASSERT(gl_buf); + _SG_GL_CHECK_ERROR(); + _sg_gl_cache_store_buffer_binding(gl_tgt); + _sg_gl_cache_bind_buffer(gl_tgt, gl_buf); + glBufferSubData(gl_tgt, 0, (GLsizeiptr)data->size, data->ptr); + _sg_gl_cache_restore_buffer_binding(gl_tgt); + _SG_GL_CHECK_ERROR(); +} + +_SOKOL_PRIVATE int _sg_gl_append_buffer(_sg_buffer_t* buf, const sg_range* data, bool new_frame) { + SOKOL_ASSERT(buf && data && data->ptr && (data->size > 0)); + if (new_frame) { + if (++buf->cmn.active_slot >= buf->cmn.num_slots) { + buf->cmn.active_slot = 0; + } + } + GLenum gl_tgt = _sg_gl_buffer_target(buf->cmn.type); + SOKOL_ASSERT(buf->cmn.active_slot < SG_NUM_INFLIGHT_FRAMES); + GLuint gl_buf = buf->gl.buf[buf->cmn.active_slot]; + SOKOL_ASSERT(gl_buf); + _SG_GL_CHECK_ERROR(); + _sg_gl_cache_store_buffer_binding(gl_tgt); + _sg_gl_cache_bind_buffer(gl_tgt, gl_buf); + glBufferSubData(gl_tgt, buf->cmn.append_pos, (GLsizeiptr)data->size, data->ptr); + _sg_gl_cache_restore_buffer_binding(gl_tgt); + _SG_GL_CHECK_ERROR(); + /* NOTE: this is a requirement from WebGPU, but we want identical behaviour across all backend */ + return _sg_roundup((int)data->size, 4); +} + +_SOKOL_PRIVATE void _sg_gl_update_image(_sg_image_t* img, const sg_image_data* data) { + SOKOL_ASSERT(img && data); + /* only one update per image per frame allowed */ + if (++img->cmn.active_slot >= img->cmn.num_slots) { + img->cmn.active_slot = 0; + } + SOKOL_ASSERT(img->cmn.active_slot < SG_NUM_INFLIGHT_FRAMES); + SOKOL_ASSERT(0 != img->gl.tex[img->cmn.active_slot]); + _sg_gl_cache_store_texture_binding(0); + _sg_gl_cache_bind_texture(0, img->gl.target, img->gl.tex[img->cmn.active_slot]); + const GLenum gl_img_format = _sg_gl_teximage_format(img->cmn.pixel_format); + const GLenum gl_img_type = _sg_gl_teximage_type(img->cmn.pixel_format); + const int num_faces = img->cmn.type == SG_IMAGETYPE_CUBE ? 6 : 1; + const int num_mips = img->cmn.num_mipmaps; + for (int face_index = 0; face_index < num_faces; face_index++) { + for (int mip_index = 0; mip_index < num_mips; mip_index++) { + GLenum gl_img_target = img->gl.target; + if (SG_IMAGETYPE_CUBE == img->cmn.type) { + gl_img_target = _sg_gl_cubeface_target(face_index); + } + const GLvoid* data_ptr = data->subimage[face_index][mip_index].ptr; + int mip_width = img->cmn.width >> mip_index; + if (mip_width == 0) { + mip_width = 1; + } + int mip_height = img->cmn.height >> mip_index; + if (mip_height == 0) { + mip_height = 1; + } + if ((SG_IMAGETYPE_2D == img->cmn.type) || (SG_IMAGETYPE_CUBE == img->cmn.type)) { + glTexSubImage2D(gl_img_target, mip_index, + 0, 0, + mip_width, mip_height, + gl_img_format, gl_img_type, + data_ptr); + } else if ((SG_IMAGETYPE_3D == img->cmn.type) || (SG_IMAGETYPE_ARRAY == img->cmn.type)) { + int mip_depth = img->cmn.num_slices >> mip_index; + if (mip_depth == 0) { + mip_depth = 1; + } + glTexSubImage3D(gl_img_target, mip_index, + 0, 0, 0, + mip_width, mip_height, mip_depth, + gl_img_format, gl_img_type, + data_ptr); + + } + } + } + _sg_gl_cache_restore_texture_binding(0); +} + +// ██████ ██████ ██████ ██ ██ ██████ █████ ██████ ██ ██ ███████ ███ ██ ██████ +// ██ ██ ██ ██ ██ ███ ███ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ +// ██ ██ █████ ██ ██ ██ ██ ██████ ███████ ██ █████ █████ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██████ ██████ ██ ██ ██████ ██ ██ ██████ ██ ██ ███████ ██ ████ ██████ +// +// >>d3d11 backend +#elif defined(SOKOL_D3D11) + +#if defined(__cplusplus) +#define _sg_d3d11_AddRef(self) (self)->AddRef() +#else +#define _sg_d3d11_AddRef(self) (self)->lpVtbl->AddRef(self) +#endif + +#if defined(__cplusplus) +#define _sg_d3d11_Release(self) (self)->Release() +#else +#define _sg_d3d11_Release(self) (self)->lpVtbl->Release(self) +#endif + +/*-- D3D11 C/C++ wrappers ----------------------------------------------------*/ +static inline HRESULT _sg_d3d11_CheckFormatSupport(ID3D11Device* self, DXGI_FORMAT Format, UINT* pFormatSupport) { + #if defined(__cplusplus) + return self->CheckFormatSupport(Format, pFormatSupport); + #else + return self->lpVtbl->CheckFormatSupport(self, Format, pFormatSupport); + #endif +} + +static inline void _sg_d3d11_OMSetRenderTargets(ID3D11DeviceContext* self, UINT NumViews, ID3D11RenderTargetView* const* ppRenderTargetViews, ID3D11DepthStencilView *pDepthStencilView) { + #if defined(__cplusplus) + self->OMSetRenderTargets(NumViews, ppRenderTargetViews, pDepthStencilView); + #else + self->lpVtbl->OMSetRenderTargets(self, NumViews, ppRenderTargetViews, pDepthStencilView); + #endif +} + +static inline void _sg_d3d11_RSSetState(ID3D11DeviceContext* self, ID3D11RasterizerState* pRasterizerState) { + #if defined(__cplusplus) + self->RSSetState(pRasterizerState); + #else + self->lpVtbl->RSSetState(self, pRasterizerState); + #endif +} + +static inline void _sg_d3d11_OMSetDepthStencilState(ID3D11DeviceContext* self, ID3D11DepthStencilState* pDepthStencilState, UINT StencilRef) { + #if defined(__cplusplus) + self->OMSetDepthStencilState(pDepthStencilState, StencilRef); + #else + self->lpVtbl->OMSetDepthStencilState(self, pDepthStencilState, StencilRef); + #endif +} + +static inline void _sg_d3d11_OMSetBlendState(ID3D11DeviceContext* self, ID3D11BlendState* pBlendState, const FLOAT BlendFactor[4], UINT SampleMask) { + #if defined(__cplusplus) + self->OMSetBlendState(pBlendState, BlendFactor, SampleMask); + #else + self->lpVtbl->OMSetBlendState(self, pBlendState, BlendFactor, SampleMask); + #endif +} + +static inline void _sg_d3d11_IASetVertexBuffers(ID3D11DeviceContext* self, UINT StartSlot, UINT NumBuffers, ID3D11Buffer* const* ppVertexBuffers, const UINT* pStrides, const UINT* pOffsets) { + #if defined(__cplusplus) + self->IASetVertexBuffers(StartSlot, NumBuffers, ppVertexBuffers, pStrides, pOffsets); + #else + self->lpVtbl->IASetVertexBuffers(self, StartSlot, NumBuffers, ppVertexBuffers, pStrides, pOffsets); + #endif +} + +static inline void _sg_d3d11_IASetIndexBuffer(ID3D11DeviceContext* self, ID3D11Buffer* pIndexBuffer, DXGI_FORMAT Format, UINT Offset) { + #if defined(__cplusplus) + self->IASetIndexBuffer(pIndexBuffer, Format, Offset); + #else + self->lpVtbl->IASetIndexBuffer(self, pIndexBuffer, Format, Offset); + #endif +} + +static inline void _sg_d3d11_IASetInputLayout(ID3D11DeviceContext* self, ID3D11InputLayout* pInputLayout) { + #if defined(__cplusplus) + self->IASetInputLayout(pInputLayout); + #else + self->lpVtbl->IASetInputLayout(self, pInputLayout); + #endif +} + +static inline void _sg_d3d11_VSSetShader(ID3D11DeviceContext* self, ID3D11VertexShader* pVertexShader, ID3D11ClassInstance* const* ppClassInstances, UINT NumClassInstances) { + #if defined(__cplusplus) + self->VSSetShader(pVertexShader, ppClassInstances, NumClassInstances); + #else + self->lpVtbl->VSSetShader(self, pVertexShader, ppClassInstances, NumClassInstances); + #endif +} + +static inline void _sg_d3d11_PSSetShader(ID3D11DeviceContext* self, ID3D11PixelShader* pPixelShader, ID3D11ClassInstance* const* ppClassInstances, UINT NumClassInstances) { + #if defined(__cplusplus) + self->PSSetShader(pPixelShader, ppClassInstances, NumClassInstances); + #else + self->lpVtbl->PSSetShader(self, pPixelShader, ppClassInstances, NumClassInstances); + #endif +} + +static inline void _sg_d3d11_VSSetConstantBuffers(ID3D11DeviceContext* self, UINT StartSlot, UINT NumBuffers, ID3D11Buffer* const* ppConstantBuffers) { + #if defined(__cplusplus) + self->VSSetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); + #else + self->lpVtbl->VSSetConstantBuffers(self, StartSlot, NumBuffers, ppConstantBuffers); + #endif +} + +static inline void _sg_d3d11_PSSetConstantBuffers(ID3D11DeviceContext* self, UINT StartSlot, UINT NumBuffers, ID3D11Buffer* const* ppConstantBuffers) { + #if defined(__cplusplus) + self->PSSetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); + #else + self->lpVtbl->PSSetConstantBuffers(self, StartSlot, NumBuffers, ppConstantBuffers); + #endif +} + +static inline void _sg_d3d11_VSSetShaderResources(ID3D11DeviceContext* self, UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) { + #if defined(__cplusplus) + self->VSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews); + #else + self->lpVtbl->VSSetShaderResources(self, StartSlot, NumViews, ppShaderResourceViews); + #endif +} + +static inline void _sg_d3d11_PSSetShaderResources(ID3D11DeviceContext* self, UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) { + #if defined(__cplusplus) + self->PSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews); + #else + self->lpVtbl->PSSetShaderResources(self, StartSlot, NumViews, ppShaderResourceViews); + #endif +} + +static inline void _sg_d3d11_VSSetSamplers(ID3D11DeviceContext* self, UINT StartSlot, UINT NumSamplers, ID3D11SamplerState* const* ppSamplers) { + #if defined(__cplusplus) + self->VSSetSamplers(StartSlot, NumSamplers, ppSamplers); + #else + self->lpVtbl->VSSetSamplers(self, StartSlot, NumSamplers, ppSamplers); + #endif +} + +static inline void _sg_d3d11_PSSetSamplers(ID3D11DeviceContext* self, UINT StartSlot, UINT NumSamplers, ID3D11SamplerState* const* ppSamplers) { + #if defined(__cplusplus) + self->PSSetSamplers(StartSlot, NumSamplers, ppSamplers); + #else + self->lpVtbl->PSSetSamplers(self, StartSlot, NumSamplers, ppSamplers); + #endif +} + +static inline HRESULT _sg_d3d11_CreateBuffer(ID3D11Device* self, const D3D11_BUFFER_DESC* pDesc, const D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Buffer** ppBuffer) { + #if defined(__cplusplus) + return self->CreateBuffer(pDesc, pInitialData, ppBuffer); + #else + return self->lpVtbl->CreateBuffer(self, pDesc, pInitialData, ppBuffer); + #endif +} + +static inline HRESULT _sg_d3d11_CreateTexture2D(ID3D11Device* self, const D3D11_TEXTURE2D_DESC* pDesc, const D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Texture2D** ppTexture2D) { + #if defined(__cplusplus) + return self->CreateTexture2D(pDesc, pInitialData, ppTexture2D); + #else + return self->lpVtbl->CreateTexture2D(self, pDesc, pInitialData, ppTexture2D); + #endif +} + +static inline HRESULT _sg_d3d11_CreateShaderResourceView(ID3D11Device* self, ID3D11Resource* pResource, const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc, ID3D11ShaderResourceView** ppSRView) { + #if defined(__cplusplus) + return self->CreateShaderResourceView(pResource, pDesc, ppSRView); + #else + return self->lpVtbl->CreateShaderResourceView(self, pResource, pDesc, ppSRView); + #endif +} + +static inline void _sg_d3d11_GetResource(ID3D11View* self, ID3D11Resource** ppResource) { + #if defined(__cplusplus) + self->GetResource(ppResource); + #else + self->lpVtbl->GetResource(self, ppResource); + #endif +} + +static inline HRESULT _sg_d3d11_CreateTexture3D(ID3D11Device* self, const D3D11_TEXTURE3D_DESC* pDesc, const D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Texture3D** ppTexture3D) { + #if defined(__cplusplus) + return self->CreateTexture3D(pDesc, pInitialData, ppTexture3D); + #else + return self->lpVtbl->CreateTexture3D(self, pDesc, pInitialData, ppTexture3D); + #endif +} + +static inline HRESULT _sg_d3d11_CreateSamplerState(ID3D11Device* self, const D3D11_SAMPLER_DESC* pSamplerDesc, ID3D11SamplerState** ppSamplerState) { + #if defined(__cplusplus) + return self->CreateSamplerState(pSamplerDesc, ppSamplerState); + #else + return self->lpVtbl->CreateSamplerState(self, pSamplerDesc, ppSamplerState); + #endif +} + +static inline LPVOID _sg_d3d11_GetBufferPointer(ID3D10Blob* self) { + #if defined(__cplusplus) + return self->GetBufferPointer(); + #else + return self->lpVtbl->GetBufferPointer(self); + #endif +} + +static inline SIZE_T _sg_d3d11_GetBufferSize(ID3D10Blob* self) { + #if defined(__cplusplus) + return self->GetBufferSize(); + #else + return self->lpVtbl->GetBufferSize(self); + #endif +} + +static inline HRESULT _sg_d3d11_CreateVertexShader(ID3D11Device* self, const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11VertexShader** ppVertexShader) { + #if defined(__cplusplus) + return self->CreateVertexShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppVertexShader); + #else + return self->lpVtbl->CreateVertexShader(self, pShaderBytecode, BytecodeLength, pClassLinkage, ppVertexShader); + #endif +} + +static inline HRESULT _sg_d3d11_CreatePixelShader(ID3D11Device* self, const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11PixelShader** ppPixelShader) { + #if defined(__cplusplus) + return self->CreatePixelShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppPixelShader); + #else + return self->lpVtbl->CreatePixelShader(self, pShaderBytecode, BytecodeLength, pClassLinkage, ppPixelShader); + #endif +} + +static inline HRESULT _sg_d3d11_CreateInputLayout(ID3D11Device* self, const D3D11_INPUT_ELEMENT_DESC* pInputElementDescs, UINT NumElements, const void* pShaderBytecodeWithInputSignature, SIZE_T BytecodeLength, ID3D11InputLayout **ppInputLayout) { + #if defined(__cplusplus) + return self->CreateInputLayout(pInputElementDescs, NumElements, pShaderBytecodeWithInputSignature, BytecodeLength, ppInputLayout); + #else + return self->lpVtbl->CreateInputLayout(self, pInputElementDescs, NumElements, pShaderBytecodeWithInputSignature, BytecodeLength, ppInputLayout); + #endif +} + +static inline HRESULT _sg_d3d11_CreateRasterizerState(ID3D11Device* self, const D3D11_RASTERIZER_DESC* pRasterizerDesc, ID3D11RasterizerState** ppRasterizerState) { + #if defined(__cplusplus) + return self->CreateRasterizerState(pRasterizerDesc, ppRasterizerState); + #else + return self->lpVtbl->CreateRasterizerState(self, pRasterizerDesc, ppRasterizerState); + #endif +} + +static inline HRESULT _sg_d3d11_CreateDepthStencilState(ID3D11Device* self, const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc, ID3D11DepthStencilState** ppDepthStencilState) { + #if defined(__cplusplus) + return self->CreateDepthStencilState(pDepthStencilDesc, ppDepthStencilState); + #else + return self->lpVtbl->CreateDepthStencilState(self, pDepthStencilDesc, ppDepthStencilState); + #endif +} + +static inline HRESULT _sg_d3d11_CreateBlendState(ID3D11Device* self, const D3D11_BLEND_DESC* pBlendStateDesc, ID3D11BlendState** ppBlendState) { + #if defined(__cplusplus) + return self->CreateBlendState(pBlendStateDesc, ppBlendState); + #else + return self->lpVtbl->CreateBlendState(self, pBlendStateDesc, ppBlendState); + #endif +} + +static inline HRESULT _sg_d3d11_CreateRenderTargetView(ID3D11Device* self, ID3D11Resource *pResource, const D3D11_RENDER_TARGET_VIEW_DESC* pDesc, ID3D11RenderTargetView** ppRTView) { + #if defined(__cplusplus) + return self->CreateRenderTargetView(pResource, pDesc, ppRTView); + #else + return self->lpVtbl->CreateRenderTargetView(self, pResource, pDesc, ppRTView); + #endif +} + +static inline HRESULT _sg_d3d11_CreateDepthStencilView(ID3D11Device* self, ID3D11Resource* pResource, const D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc, ID3D11DepthStencilView** ppDepthStencilView) { + #if defined(__cplusplus) + return self->CreateDepthStencilView(pResource, pDesc, ppDepthStencilView); + #else + return self->lpVtbl->CreateDepthStencilView(self, pResource, pDesc, ppDepthStencilView); + #endif +} + +static inline void _sg_d3d11_RSSetViewports(ID3D11DeviceContext* self, UINT NumViewports, const D3D11_VIEWPORT* pViewports) { + #if defined(__cplusplus) + self->RSSetViewports(NumViewports, pViewports); + #else + self->lpVtbl->RSSetViewports(self, NumViewports, pViewports); + #endif +} + +static inline void _sg_d3d11_RSSetScissorRects(ID3D11DeviceContext* self, UINT NumRects, const D3D11_RECT* pRects) { + #if defined(__cplusplus) + self->RSSetScissorRects(NumRects, pRects); + #else + self->lpVtbl->RSSetScissorRects(self, NumRects, pRects); + #endif +} + +static inline void _sg_d3d11_ClearRenderTargetView(ID3D11DeviceContext* self, ID3D11RenderTargetView* pRenderTargetView, const FLOAT ColorRGBA[4]) { + #if defined(__cplusplus) + self->ClearRenderTargetView(pRenderTargetView, ColorRGBA); + #else + self->lpVtbl->ClearRenderTargetView(self, pRenderTargetView, ColorRGBA); + #endif +} + +static inline void _sg_d3d11_ClearDepthStencilView(ID3D11DeviceContext* self, ID3D11DepthStencilView* pDepthStencilView, UINT ClearFlags, FLOAT Depth, UINT8 Stencil) { + #if defined(__cplusplus) + self->ClearDepthStencilView(pDepthStencilView, ClearFlags, Depth, Stencil); + #else + self->lpVtbl->ClearDepthStencilView(self, pDepthStencilView, ClearFlags, Depth, Stencil); + #endif +} + +static inline void _sg_d3d11_ResolveSubresource(ID3D11DeviceContext* self, ID3D11Resource* pDstResource, UINT DstSubresource, ID3D11Resource* pSrcResource, UINT SrcSubresource, DXGI_FORMAT Format) { + #if defined(__cplusplus) + self->ResolveSubresource(pDstResource, DstSubresource, pSrcResource, SrcSubresource, Format); + #else + self->lpVtbl->ResolveSubresource(self, pDstResource, DstSubresource, pSrcResource, SrcSubresource, Format); + #endif +} + +static inline void _sg_d3d11_IASetPrimitiveTopology(ID3D11DeviceContext* self, D3D11_PRIMITIVE_TOPOLOGY Topology) { + #if defined(__cplusplus) + self->IASetPrimitiveTopology(Topology); + #else + self->lpVtbl->IASetPrimitiveTopology(self, Topology); + #endif +} + +static inline void _sg_d3d11_UpdateSubresource(ID3D11DeviceContext* self, ID3D11Resource* pDstResource, UINT DstSubresource, const D3D11_BOX* pDstBox, const void* pSrcData, UINT SrcRowPitch, UINT SrcDepthPitch) { + #if defined(__cplusplus) + self->UpdateSubresource(pDstResource, DstSubresource, pDstBox, pSrcData, SrcRowPitch, SrcDepthPitch); + #else + self->lpVtbl->UpdateSubresource(self, pDstResource, DstSubresource, pDstBox, pSrcData, SrcRowPitch, SrcDepthPitch); + #endif +} + +static inline void _sg_d3d11_DrawIndexed(ID3D11DeviceContext* self, UINT IndexCount, UINT StartIndexLocation, INT BaseVertexLocation) { + #if defined(__cplusplus) + self->DrawIndexed(IndexCount, StartIndexLocation, BaseVertexLocation); + #else + self->lpVtbl->DrawIndexed(self, IndexCount, StartIndexLocation, BaseVertexLocation); + #endif +} + +static inline void _sg_d3d11_DrawIndexedInstanced(ID3D11DeviceContext* self, UINT IndexCountPerInstance, UINT InstanceCount, UINT StartIndexLocation, INT BaseVertexLocation, UINT StartInstanceLocation) { + #if defined(__cplusplus) + self->DrawIndexedInstanced(IndexCountPerInstance, InstanceCount, StartIndexLocation, BaseVertexLocation, StartInstanceLocation); + #else + self->lpVtbl->DrawIndexedInstanced(self, IndexCountPerInstance, InstanceCount, StartIndexLocation, BaseVertexLocation, StartInstanceLocation); + #endif +} + +static inline void _sg_d3d11_Draw(ID3D11DeviceContext* self, UINT VertexCount, UINT StartVertexLocation) { + #if defined(__cplusplus) + self->Draw(VertexCount, StartVertexLocation); + #else + self->lpVtbl->Draw(self, VertexCount, StartVertexLocation); + #endif +} + +static inline void _sg_d3d11_DrawInstanced(ID3D11DeviceContext* self, UINT VertexCountPerInstance, UINT InstanceCount, UINT StartVertexLocation, UINT StartInstanceLocation) { + #if defined(__cplusplus) + self->DrawInstanced(VertexCountPerInstance, InstanceCount, StartVertexLocation, StartInstanceLocation); + #else + self->lpVtbl->DrawInstanced(self, VertexCountPerInstance, InstanceCount, StartVertexLocation, StartInstanceLocation); + #endif +} + +static inline HRESULT _sg_d3d11_Map(ID3D11DeviceContext* self, ID3D11Resource* pResource, UINT Subresource, D3D11_MAP MapType, UINT MapFlags, D3D11_MAPPED_SUBRESOURCE* pMappedResource) { + #if defined(__cplusplus) + return self->Map(pResource, Subresource, MapType, MapFlags, pMappedResource); + #else + return self->lpVtbl->Map(self, pResource, Subresource, MapType, MapFlags, pMappedResource); + #endif +} + +static inline void _sg_d3d11_Unmap(ID3D11DeviceContext* self, ID3D11Resource* pResource, UINT Subresource) { + #if defined(__cplusplus) + self->Unmap(pResource, Subresource); + #else + self->lpVtbl->Unmap(self, pResource, Subresource); + #endif +} + +static inline void _sg_d3d11_ClearState(ID3D11DeviceContext* self) { + #if defined(__cplusplus) + self->ClearState(); + #else + self->lpVtbl->ClearState(self); + #endif +} + +/*-- enum translation functions ----------------------------------------------*/ +_SOKOL_PRIVATE D3D11_USAGE _sg_d3d11_usage(sg_usage usg) { + switch (usg) { + case SG_USAGE_IMMUTABLE: + return D3D11_USAGE_IMMUTABLE; + case SG_USAGE_DYNAMIC: + case SG_USAGE_STREAM: + return D3D11_USAGE_DYNAMIC; + default: + SOKOL_UNREACHABLE; + return (D3D11_USAGE) 0; + } +} + +_SOKOL_PRIVATE UINT _sg_d3d11_cpu_access_flags(sg_usage usg) { + switch (usg) { + case SG_USAGE_IMMUTABLE: + return 0; + case SG_USAGE_DYNAMIC: + case SG_USAGE_STREAM: + return D3D11_CPU_ACCESS_WRITE; + default: + SOKOL_UNREACHABLE; + return 0; + } +} + +_SOKOL_PRIVATE DXGI_FORMAT _sg_d3d11_pixel_format(sg_pixel_format fmt) { + switch (fmt) { + case SG_PIXELFORMAT_R8: return DXGI_FORMAT_R8_UNORM; + case SG_PIXELFORMAT_R8SN: return DXGI_FORMAT_R8_SNORM; + case SG_PIXELFORMAT_R8UI: return DXGI_FORMAT_R8_UINT; + case SG_PIXELFORMAT_R8SI: return DXGI_FORMAT_R8_SINT; + case SG_PIXELFORMAT_R16: return DXGI_FORMAT_R16_UNORM; + case SG_PIXELFORMAT_R16SN: return DXGI_FORMAT_R16_SNORM; + case SG_PIXELFORMAT_R16UI: return DXGI_FORMAT_R16_UINT; + case SG_PIXELFORMAT_R16SI: return DXGI_FORMAT_R16_SINT; + case SG_PIXELFORMAT_R16F: return DXGI_FORMAT_R16_FLOAT; + case SG_PIXELFORMAT_RG8: return DXGI_FORMAT_R8G8_UNORM; + case SG_PIXELFORMAT_RG8SN: return DXGI_FORMAT_R8G8_SNORM; + case SG_PIXELFORMAT_RG8UI: return DXGI_FORMAT_R8G8_UINT; + case SG_PIXELFORMAT_RG8SI: return DXGI_FORMAT_R8G8_SINT; + case SG_PIXELFORMAT_R32UI: return DXGI_FORMAT_R32_UINT; + case SG_PIXELFORMAT_R32SI: return DXGI_FORMAT_R32_SINT; + case SG_PIXELFORMAT_R32F: return DXGI_FORMAT_R32_FLOAT; + case SG_PIXELFORMAT_RG16: return DXGI_FORMAT_R16G16_UNORM; + case SG_PIXELFORMAT_RG16SN: return DXGI_FORMAT_R16G16_SNORM; + case SG_PIXELFORMAT_RG16UI: return DXGI_FORMAT_R16G16_UINT; + case SG_PIXELFORMAT_RG16SI: return DXGI_FORMAT_R16G16_SINT; + case SG_PIXELFORMAT_RG16F: return DXGI_FORMAT_R16G16_FLOAT; + case SG_PIXELFORMAT_RGBA8: return DXGI_FORMAT_R8G8B8A8_UNORM; + case SG_PIXELFORMAT_SRGB8A8: return DXGI_FORMAT_R8G8B8A8_UNORM_SRGB; + case SG_PIXELFORMAT_RGBA8SN: return DXGI_FORMAT_R8G8B8A8_SNORM; + case SG_PIXELFORMAT_RGBA8UI: return DXGI_FORMAT_R8G8B8A8_UINT; + case SG_PIXELFORMAT_RGBA8SI: return DXGI_FORMAT_R8G8B8A8_SINT; + case SG_PIXELFORMAT_BGRA8: return DXGI_FORMAT_B8G8R8A8_UNORM; + case SG_PIXELFORMAT_RGB10A2: return DXGI_FORMAT_R10G10B10A2_UNORM; + case SG_PIXELFORMAT_RG11B10F: return DXGI_FORMAT_R11G11B10_FLOAT; + case SG_PIXELFORMAT_RGB9E5: return DXGI_FORMAT_R9G9B9E5_SHAREDEXP; + case SG_PIXELFORMAT_RG32UI: return DXGI_FORMAT_R32G32_UINT; + case SG_PIXELFORMAT_RG32SI: return DXGI_FORMAT_R32G32_SINT; + case SG_PIXELFORMAT_RG32F: return DXGI_FORMAT_R32G32_FLOAT; + case SG_PIXELFORMAT_RGBA16: return DXGI_FORMAT_R16G16B16A16_UNORM; + case SG_PIXELFORMAT_RGBA16SN: return DXGI_FORMAT_R16G16B16A16_SNORM; + case SG_PIXELFORMAT_RGBA16UI: return DXGI_FORMAT_R16G16B16A16_UINT; + case SG_PIXELFORMAT_RGBA16SI: return DXGI_FORMAT_R16G16B16A16_SINT; + case SG_PIXELFORMAT_RGBA16F: return DXGI_FORMAT_R16G16B16A16_FLOAT; + case SG_PIXELFORMAT_RGBA32UI: return DXGI_FORMAT_R32G32B32A32_UINT; + case SG_PIXELFORMAT_RGBA32SI: return DXGI_FORMAT_R32G32B32A32_SINT; + case SG_PIXELFORMAT_RGBA32F: return DXGI_FORMAT_R32G32B32A32_FLOAT; + case SG_PIXELFORMAT_DEPTH: return DXGI_FORMAT_D32_FLOAT; + case SG_PIXELFORMAT_DEPTH_STENCIL: return DXGI_FORMAT_D24_UNORM_S8_UINT; + case SG_PIXELFORMAT_BC1_RGBA: return DXGI_FORMAT_BC1_UNORM; + case SG_PIXELFORMAT_BC2_RGBA: return DXGI_FORMAT_BC2_UNORM; + case SG_PIXELFORMAT_BC3_RGBA: return DXGI_FORMAT_BC3_UNORM; + case SG_PIXELFORMAT_BC4_R: return DXGI_FORMAT_BC4_UNORM; + case SG_PIXELFORMAT_BC4_RSN: return DXGI_FORMAT_BC4_SNORM; + case SG_PIXELFORMAT_BC5_RG: return DXGI_FORMAT_BC5_UNORM; + case SG_PIXELFORMAT_BC5_RGSN: return DXGI_FORMAT_BC5_SNORM; + case SG_PIXELFORMAT_BC6H_RGBF: return DXGI_FORMAT_BC6H_SF16; + case SG_PIXELFORMAT_BC6H_RGBUF: return DXGI_FORMAT_BC6H_UF16; + case SG_PIXELFORMAT_BC7_RGBA: return DXGI_FORMAT_BC7_UNORM; + default: return DXGI_FORMAT_UNKNOWN; + }; +} + +_SOKOL_PRIVATE D3D11_PRIMITIVE_TOPOLOGY _sg_d3d11_primitive_topology(sg_primitive_type prim_type) { + switch (prim_type) { + case SG_PRIMITIVETYPE_POINTS: return D3D11_PRIMITIVE_TOPOLOGY_POINTLIST; + case SG_PRIMITIVETYPE_LINES: return D3D11_PRIMITIVE_TOPOLOGY_LINELIST; + case SG_PRIMITIVETYPE_LINE_STRIP: return D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP; + case SG_PRIMITIVETYPE_TRIANGLES: return D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST; + case SG_PRIMITIVETYPE_TRIANGLE_STRIP: return D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP; + default: SOKOL_UNREACHABLE; return (D3D11_PRIMITIVE_TOPOLOGY) 0; + } +} + +_SOKOL_PRIVATE DXGI_FORMAT _sg_d3d11_index_format(sg_index_type index_type) { + switch (index_type) { + case SG_INDEXTYPE_NONE: return DXGI_FORMAT_UNKNOWN; + case SG_INDEXTYPE_UINT16: return DXGI_FORMAT_R16_UINT; + case SG_INDEXTYPE_UINT32: return DXGI_FORMAT_R32_UINT; + default: SOKOL_UNREACHABLE; return (DXGI_FORMAT) 0; + } +} + +_SOKOL_PRIVATE D3D11_FILTER _sg_d3d11_filter(sg_filter min_f, sg_filter mag_f, uint32_t max_anisotropy) { + if (max_anisotropy > 1) { + return D3D11_FILTER_ANISOTROPIC; + } + else if (mag_f == SG_FILTER_NEAREST) { + switch (min_f) { + case SG_FILTER_NEAREST: + case SG_FILTER_NEAREST_MIPMAP_NEAREST: + return D3D11_FILTER_MIN_MAG_MIP_POINT; + case SG_FILTER_LINEAR: + case SG_FILTER_LINEAR_MIPMAP_NEAREST: + return D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT; + case SG_FILTER_NEAREST_MIPMAP_LINEAR: + return D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR; + case SG_FILTER_LINEAR_MIPMAP_LINEAR: + return D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR; + default: + SOKOL_UNREACHABLE; break; + } + } + else if (mag_f == SG_FILTER_LINEAR) { + switch (min_f) { + case SG_FILTER_NEAREST: + case SG_FILTER_NEAREST_MIPMAP_NEAREST: + return D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT; + case SG_FILTER_LINEAR: + case SG_FILTER_LINEAR_MIPMAP_NEAREST: + return D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT; + case SG_FILTER_NEAREST_MIPMAP_LINEAR: + return D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR; + case SG_FILTER_LINEAR_MIPMAP_LINEAR: + return D3D11_FILTER_MIN_MAG_MIP_LINEAR; + default: + SOKOL_UNREACHABLE; break; + } + } + /* invalid value for mag filter */ + SOKOL_UNREACHABLE; + return D3D11_FILTER_MIN_MAG_MIP_POINT; +} + +_SOKOL_PRIVATE D3D11_TEXTURE_ADDRESS_MODE _sg_d3d11_address_mode(sg_wrap m) { + switch (m) { + case SG_WRAP_REPEAT: return D3D11_TEXTURE_ADDRESS_WRAP; + case SG_WRAP_CLAMP_TO_EDGE: return D3D11_TEXTURE_ADDRESS_CLAMP; + case SG_WRAP_CLAMP_TO_BORDER: return D3D11_TEXTURE_ADDRESS_BORDER; + case SG_WRAP_MIRRORED_REPEAT: return D3D11_TEXTURE_ADDRESS_MIRROR; + default: SOKOL_UNREACHABLE; return (D3D11_TEXTURE_ADDRESS_MODE) 0; + } +} + +_SOKOL_PRIVATE DXGI_FORMAT _sg_d3d11_vertex_format(sg_vertex_format fmt) { + switch (fmt) { + case SG_VERTEXFORMAT_FLOAT: return DXGI_FORMAT_R32_FLOAT; + case SG_VERTEXFORMAT_FLOAT2: return DXGI_FORMAT_R32G32_FLOAT; + case SG_VERTEXFORMAT_FLOAT3: return DXGI_FORMAT_R32G32B32_FLOAT; + case SG_VERTEXFORMAT_FLOAT4: return DXGI_FORMAT_R32G32B32A32_FLOAT; + case SG_VERTEXFORMAT_BYTE4: return DXGI_FORMAT_R8G8B8A8_SINT; + case SG_VERTEXFORMAT_BYTE4N: return DXGI_FORMAT_R8G8B8A8_SNORM; + case SG_VERTEXFORMAT_UBYTE4: return DXGI_FORMAT_R8G8B8A8_UINT; + case SG_VERTEXFORMAT_UBYTE4N: return DXGI_FORMAT_R8G8B8A8_UNORM; + case SG_VERTEXFORMAT_SHORT2: return DXGI_FORMAT_R16G16_SINT; + case SG_VERTEXFORMAT_SHORT2N: return DXGI_FORMAT_R16G16_SNORM; + case SG_VERTEXFORMAT_USHORT2N: return DXGI_FORMAT_R16G16_UNORM; + case SG_VERTEXFORMAT_SHORT4: return DXGI_FORMAT_R16G16B16A16_SINT; + case SG_VERTEXFORMAT_SHORT4N: return DXGI_FORMAT_R16G16B16A16_SNORM; + case SG_VERTEXFORMAT_USHORT4N: return DXGI_FORMAT_R16G16B16A16_UNORM; + case SG_VERTEXFORMAT_UINT10_N2: return DXGI_FORMAT_R10G10B10A2_UNORM; + case SG_VERTEXFORMAT_HALF2: return DXGI_FORMAT_R16G16_FLOAT; + case SG_VERTEXFORMAT_HALF4: return DXGI_FORMAT_R16G16B16A16_FLOAT; + default: SOKOL_UNREACHABLE; return (DXGI_FORMAT) 0; + } +} + +_SOKOL_PRIVATE D3D11_INPUT_CLASSIFICATION _sg_d3d11_input_classification(sg_vertex_step step) { + switch (step) { + case SG_VERTEXSTEP_PER_VERTEX: return D3D11_INPUT_PER_VERTEX_DATA; + case SG_VERTEXSTEP_PER_INSTANCE: return D3D11_INPUT_PER_INSTANCE_DATA; + default: SOKOL_UNREACHABLE; return (D3D11_INPUT_CLASSIFICATION) 0; + } +} + +_SOKOL_PRIVATE D3D11_CULL_MODE _sg_d3d11_cull_mode(sg_cull_mode m) { + switch (m) { + case SG_CULLMODE_NONE: return D3D11_CULL_NONE; + case SG_CULLMODE_FRONT: return D3D11_CULL_FRONT; + case SG_CULLMODE_BACK: return D3D11_CULL_BACK; + default: SOKOL_UNREACHABLE; return (D3D11_CULL_MODE) 0; + } +} + +_SOKOL_PRIVATE D3D11_COMPARISON_FUNC _sg_d3d11_compare_func(sg_compare_func f) { + switch (f) { + case SG_COMPAREFUNC_NEVER: return D3D11_COMPARISON_NEVER; + case SG_COMPAREFUNC_LESS: return D3D11_COMPARISON_LESS; + case SG_COMPAREFUNC_EQUAL: return D3D11_COMPARISON_EQUAL; + case SG_COMPAREFUNC_LESS_EQUAL: return D3D11_COMPARISON_LESS_EQUAL; + case SG_COMPAREFUNC_GREATER: return D3D11_COMPARISON_GREATER; + case SG_COMPAREFUNC_NOT_EQUAL: return D3D11_COMPARISON_NOT_EQUAL; + case SG_COMPAREFUNC_GREATER_EQUAL: return D3D11_COMPARISON_GREATER_EQUAL; + case SG_COMPAREFUNC_ALWAYS: return D3D11_COMPARISON_ALWAYS; + default: SOKOL_UNREACHABLE; return (D3D11_COMPARISON_FUNC) 0; + } +} + +_SOKOL_PRIVATE D3D11_STENCIL_OP _sg_d3d11_stencil_op(sg_stencil_op op) { + switch (op) { + case SG_STENCILOP_KEEP: return D3D11_STENCIL_OP_KEEP; + case SG_STENCILOP_ZERO: return D3D11_STENCIL_OP_ZERO; + case SG_STENCILOP_REPLACE: return D3D11_STENCIL_OP_REPLACE; + case SG_STENCILOP_INCR_CLAMP: return D3D11_STENCIL_OP_INCR_SAT; + case SG_STENCILOP_DECR_CLAMP: return D3D11_STENCIL_OP_DECR_SAT; + case SG_STENCILOP_INVERT: return D3D11_STENCIL_OP_INVERT; + case SG_STENCILOP_INCR_WRAP: return D3D11_STENCIL_OP_INCR; + case SG_STENCILOP_DECR_WRAP: return D3D11_STENCIL_OP_DECR; + default: SOKOL_UNREACHABLE; return (D3D11_STENCIL_OP) 0; + } +} + +_SOKOL_PRIVATE D3D11_BLEND _sg_d3d11_blend_factor(sg_blend_factor f) { + switch (f) { + case SG_BLENDFACTOR_ZERO: return D3D11_BLEND_ZERO; + case SG_BLENDFACTOR_ONE: return D3D11_BLEND_ONE; + case SG_BLENDFACTOR_SRC_COLOR: return D3D11_BLEND_SRC_COLOR; + case SG_BLENDFACTOR_ONE_MINUS_SRC_COLOR: return D3D11_BLEND_INV_SRC_COLOR; + case SG_BLENDFACTOR_SRC_ALPHA: return D3D11_BLEND_SRC_ALPHA; + case SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA: return D3D11_BLEND_INV_SRC_ALPHA; + case SG_BLENDFACTOR_DST_COLOR: return D3D11_BLEND_DEST_COLOR; + case SG_BLENDFACTOR_ONE_MINUS_DST_COLOR: return D3D11_BLEND_INV_DEST_COLOR; + case SG_BLENDFACTOR_DST_ALPHA: return D3D11_BLEND_DEST_ALPHA; + case SG_BLENDFACTOR_ONE_MINUS_DST_ALPHA: return D3D11_BLEND_INV_DEST_ALPHA; + case SG_BLENDFACTOR_SRC_ALPHA_SATURATED: return D3D11_BLEND_SRC_ALPHA_SAT; + case SG_BLENDFACTOR_BLEND_COLOR: return D3D11_BLEND_BLEND_FACTOR; + case SG_BLENDFACTOR_ONE_MINUS_BLEND_COLOR: return D3D11_BLEND_INV_BLEND_FACTOR; + case SG_BLENDFACTOR_BLEND_ALPHA: return D3D11_BLEND_BLEND_FACTOR; + case SG_BLENDFACTOR_ONE_MINUS_BLEND_ALPHA: return D3D11_BLEND_INV_BLEND_FACTOR; + default: SOKOL_UNREACHABLE; return (D3D11_BLEND) 0; + } +} + +_SOKOL_PRIVATE D3D11_BLEND_OP _sg_d3d11_blend_op(sg_blend_op op) { + switch (op) { + case SG_BLENDOP_ADD: return D3D11_BLEND_OP_ADD; + case SG_BLENDOP_SUBTRACT: return D3D11_BLEND_OP_SUBTRACT; + case SG_BLENDOP_REVERSE_SUBTRACT: return D3D11_BLEND_OP_REV_SUBTRACT; + default: SOKOL_UNREACHABLE; return (D3D11_BLEND_OP) 0; + } +} + +_SOKOL_PRIVATE UINT8 _sg_d3d11_color_write_mask(sg_color_mask m) { + UINT8 res = 0; + if (m & SG_COLORMASK_R) { + res |= D3D11_COLOR_WRITE_ENABLE_RED; + } + if (m & SG_COLORMASK_G) { + res |= D3D11_COLOR_WRITE_ENABLE_GREEN; + } + if (m & SG_COLORMASK_B) { + res |= D3D11_COLOR_WRITE_ENABLE_BLUE; + } + if (m & SG_COLORMASK_A) { + res |= D3D11_COLOR_WRITE_ENABLE_ALPHA; + } + return res; +} + +/* see: https://docs.microsoft.com/en-us/windows/win32/direct3d11/overviews-direct3d-11-resources-limits#resource-limits-for-feature-level-11-hardware */ +_SOKOL_PRIVATE void _sg_d3d11_init_caps(void) { + _sg.backend = SG_BACKEND_D3D11; + + _sg.features.origin_top_left = true; + _sg.features.image_clamp_to_border = true; + _sg.features.mrt_independent_blend_state = true; + _sg.features.mrt_independent_write_mask = true; + + _sg.limits.max_image_size_2d = 16 * 1024; + _sg.limits.max_image_size_cube = 16 * 1024; + _sg.limits.max_image_size_3d = 2 * 1024; + _sg.limits.max_image_size_array = 16 * 1024; + _sg.limits.max_image_array_layers = 2 * 1024; + _sg.limits.max_vertex_attrs = SG_MAX_VERTEX_ATTRIBUTES; + + /* see: https://docs.microsoft.com/en-us/windows/win32/api/d3d11/ne-d3d11-d3d11_format_support */ + for (int fmt = (SG_PIXELFORMAT_NONE+1); fmt < _SG_PIXELFORMAT_NUM; fmt++) { + UINT dxgi_fmt_caps = 0; + const DXGI_FORMAT dxgi_fmt = _sg_d3d11_pixel_format((sg_pixel_format)fmt); + if (dxgi_fmt != DXGI_FORMAT_UNKNOWN) { + HRESULT hr = _sg_d3d11_CheckFormatSupport(_sg.d3d11.dev, dxgi_fmt, &dxgi_fmt_caps); + SOKOL_ASSERT(SUCCEEDED(hr) || (E_FAIL == hr)); + if (!SUCCEEDED(hr)) { + dxgi_fmt_caps = 0; + } + } + sg_pixelformat_info* info = &_sg.formats[fmt]; + info->sample = 0 != (dxgi_fmt_caps & D3D11_FORMAT_SUPPORT_TEXTURE2D); + info->filter = 0 != (dxgi_fmt_caps & D3D11_FORMAT_SUPPORT_SHADER_SAMPLE); + info->render = 0 != (dxgi_fmt_caps & D3D11_FORMAT_SUPPORT_RENDER_TARGET); + info->blend = 0 != (dxgi_fmt_caps & D3D11_FORMAT_SUPPORT_BLENDABLE); + info->msaa = 0 != (dxgi_fmt_caps & D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET); + info->depth = 0 != (dxgi_fmt_caps & D3D11_FORMAT_SUPPORT_DEPTH_STENCIL); + if (info->depth) { + info->render = true; + } + } +} + +_SOKOL_PRIVATE void _sg_d3d11_setup_backend(const sg_desc* desc) { + /* assume _sg.d3d11 already is zero-initialized */ + SOKOL_ASSERT(desc); + SOKOL_ASSERT(desc->context.d3d11.device); + SOKOL_ASSERT(desc->context.d3d11.device_context); + SOKOL_ASSERT(desc->context.d3d11.render_target_view_cb || desc->context.d3d11.render_target_view_userdata_cb); + SOKOL_ASSERT(desc->context.d3d11.depth_stencil_view_cb || desc->context.d3d11.depth_stencil_view_userdata_cb); + _sg.d3d11.valid = true; + _sg.d3d11.dev = (ID3D11Device*) desc->context.d3d11.device; + _sg.d3d11.ctx = (ID3D11DeviceContext*) desc->context.d3d11.device_context; + _sg.d3d11.rtv_cb = desc->context.d3d11.render_target_view_cb; + _sg.d3d11.rtv_userdata_cb = desc->context.d3d11.render_target_view_userdata_cb; + _sg.d3d11.dsv_cb = desc->context.d3d11.depth_stencil_view_cb; + _sg.d3d11.dsv_userdata_cb = desc->context.d3d11.depth_stencil_view_userdata_cb; + _sg.d3d11.user_data = desc->context.d3d11.user_data; + _sg_d3d11_init_caps(); +} + +_SOKOL_PRIVATE void _sg_d3d11_discard_backend(void) { + SOKOL_ASSERT(_sg.d3d11.valid); + _sg.d3d11.valid = false; +} + +_SOKOL_PRIVATE void _sg_d3d11_clear_state(void) { + /* clear all the device context state, so that resource refs don't keep stuck in the d3d device context */ + _sg_d3d11_ClearState(_sg.d3d11.ctx); +} + +_SOKOL_PRIVATE void _sg_d3d11_reset_state_cache(void) { + /* just clear the d3d11 device context state */ + _sg_d3d11_clear_state(); +} + +_SOKOL_PRIVATE void _sg_d3d11_activate_context(_sg_context_t* ctx) { + _SOKOL_UNUSED(ctx); + _sg_d3d11_clear_state(); +} + +_SOKOL_PRIVATE sg_resource_state _sg_d3d11_create_context(_sg_context_t* ctx) { + SOKOL_ASSERT(ctx); + _SOKOL_UNUSED(ctx); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_d3d11_discard_context(_sg_context_t* ctx) { + SOKOL_ASSERT(ctx); + _SOKOL_UNUSED(ctx); + /* empty */ +} + +_SOKOL_PRIVATE sg_resource_state _sg_d3d11_create_buffer(_sg_buffer_t* buf, const sg_buffer_desc* desc) { + SOKOL_ASSERT(buf && desc); + SOKOL_ASSERT(!buf->d3d11.buf); + _sg_buffer_common_init(&buf->cmn, desc); + const bool injected = (0 != desc->d3d11_buffer); + if (injected) { + buf->d3d11.buf = (ID3D11Buffer*) desc->d3d11_buffer; + _sg_d3d11_AddRef(buf->d3d11.buf); + } + else { + D3D11_BUFFER_DESC d3d11_desc; + _sg_clear(&d3d11_desc, sizeof(d3d11_desc)); + d3d11_desc.ByteWidth = (UINT)buf->cmn.size; + d3d11_desc.Usage = _sg_d3d11_usage(buf->cmn.usage); + d3d11_desc.BindFlags = buf->cmn.type == SG_BUFFERTYPE_VERTEXBUFFER ? D3D11_BIND_VERTEX_BUFFER : D3D11_BIND_INDEX_BUFFER; + d3d11_desc.CPUAccessFlags = _sg_d3d11_cpu_access_flags(buf->cmn.usage); + D3D11_SUBRESOURCE_DATA* init_data_ptr = 0; + D3D11_SUBRESOURCE_DATA init_data; + _sg_clear(&init_data, sizeof(init_data)); + if (buf->cmn.usage == SG_USAGE_IMMUTABLE) { + SOKOL_ASSERT(desc->data.ptr); + init_data.pSysMem = desc->data.ptr; + init_data_ptr = &init_data; + } + HRESULT hr = _sg_d3d11_CreateBuffer(_sg.d3d11.dev, &d3d11_desc, init_data_ptr, &buf->d3d11.buf); + if (!(SUCCEEDED(hr) && buf->d3d11.buf)) { + _SG_ERROR(D3D11_CREATE_BUFFER_FAILED); + return SG_RESOURCESTATE_FAILED; + } + } + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_d3d11_discard_buffer(_sg_buffer_t* buf) { + SOKOL_ASSERT(buf); + if (buf->d3d11.buf) { + _sg_d3d11_Release(buf->d3d11.buf); + } +} + +_SOKOL_PRIVATE void _sg_d3d11_fill_subres_data(const _sg_image_t* img, const sg_image_data* data) { + const int num_faces = (img->cmn.type == SG_IMAGETYPE_CUBE) ? 6:1; + const int num_slices = (img->cmn.type == SG_IMAGETYPE_ARRAY) ? img->cmn.num_slices:1; + int subres_index = 0; + for (int face_index = 0; face_index < num_faces; face_index++) { + for (int slice_index = 0; slice_index < num_slices; slice_index++) { + for (int mip_index = 0; mip_index < img->cmn.num_mipmaps; mip_index++, subres_index++) { + SOKOL_ASSERT(subres_index < (SG_MAX_MIPMAPS * SG_MAX_TEXTUREARRAY_LAYERS)); + D3D11_SUBRESOURCE_DATA* subres_data = &_sg.d3d11.subres_data[subres_index]; + const int mip_width = ((img->cmn.width>>mip_index)>0) ? img->cmn.width>>mip_index : 1; + const int mip_height = ((img->cmn.height>>mip_index)>0) ? img->cmn.height>>mip_index : 1; + const sg_range* subimg_data = &(data->subimage[face_index][mip_index]); + const size_t slice_size = subimg_data->size / (size_t)num_slices; + const size_t slice_offset = slice_size * (size_t)slice_index; + const uint8_t* ptr = (const uint8_t*) subimg_data->ptr; + subres_data->pSysMem = ptr + slice_offset; + subres_data->SysMemPitch = (UINT)_sg_row_pitch(img->cmn.pixel_format, mip_width, 1); + if (img->cmn.type == SG_IMAGETYPE_3D) { + /* FIXME? const int mip_depth = ((img->depth>>mip_index)>0) ? img->depth>>mip_index : 1; */ + subres_data->SysMemSlicePitch = (UINT)_sg_surface_pitch(img->cmn.pixel_format, mip_width, mip_height, 1); + } + else { + subres_data->SysMemSlicePitch = 0; + } + } + } + } +} + +_SOKOL_PRIVATE sg_resource_state _sg_d3d11_create_image(_sg_image_t* img, const sg_image_desc* desc) { + SOKOL_ASSERT(img && desc); + SOKOL_ASSERT(!img->d3d11.tex2d && !img->d3d11.tex3d && !img->d3d11.texds && !img->d3d11.texmsaa); + SOKOL_ASSERT(!img->d3d11.srv && !img->d3d11.smp); + HRESULT hr; + + _sg_image_common_init(&img->cmn, desc); + const bool injected = (0 != desc->d3d11_texture) || (0 != desc->d3d11_shader_resource_view); + const bool msaa = (img->cmn.sample_count > 1); + img->d3d11.format = _sg_d3d11_pixel_format(img->cmn.pixel_format); + + /* special case depth-stencil buffer? */ + if (_sg_is_valid_rendertarget_depth_format(img->cmn.pixel_format)) { + /* create only a depth-texture */ + SOKOL_ASSERT(!injected); + if (img->d3d11.format == DXGI_FORMAT_UNKNOWN) { + _SG_ERROR(D3D11_CREATE_DEPTH_TEXTURE_UNSUPPORTED_PIXEL_FORMAT); + return SG_RESOURCESTATE_FAILED; + } + D3D11_TEXTURE2D_DESC d3d11_desc; + _sg_clear(&d3d11_desc, sizeof(d3d11_desc)); + d3d11_desc.Width = (UINT)img->cmn.width; + d3d11_desc.Height = (UINT)img->cmn.height; + d3d11_desc.MipLevels = 1; + d3d11_desc.ArraySize = 1; + d3d11_desc.Format = img->d3d11.format; + d3d11_desc.Usage = D3D11_USAGE_DEFAULT; + d3d11_desc.BindFlags = D3D11_BIND_DEPTH_STENCIL; + d3d11_desc.SampleDesc.Count = (UINT)img->cmn.sample_count; + d3d11_desc.SampleDesc.Quality = (UINT) (msaa ? D3D11_STANDARD_MULTISAMPLE_PATTERN : 0); + hr = _sg_d3d11_CreateTexture2D(_sg.d3d11.dev, &d3d11_desc, NULL, &img->d3d11.texds); + if (!(SUCCEEDED(hr) && img->d3d11.texds)) { + _SG_ERROR(D3D11_CREATE_DEPTH_TEXTURE_FAILED); + return SG_RESOURCESTATE_FAILED; + } + } + else { + /* create (or inject) color texture and shader-resource-view */ + + /* prepare initial content pointers */ + D3D11_SUBRESOURCE_DATA* init_data = 0; + if (!injected && (img->cmn.usage == SG_USAGE_IMMUTABLE) && !img->cmn.render_target) { + _sg_d3d11_fill_subres_data(img, &desc->data); + init_data = _sg.d3d11.subres_data; + } + if (img->cmn.type != SG_IMAGETYPE_3D) { + /* 2D-, cube- or array-texture */ + /* if this is an MSAA render target, the following texture will be the 'resolve-texture' */ + + /* first check for injected texture and/or resource view */ + if (injected) { + img->d3d11.tex2d = (ID3D11Texture2D*) desc->d3d11_texture; + img->d3d11.srv = (ID3D11ShaderResourceView*) desc->d3d11_shader_resource_view; + if (img->d3d11.tex2d) { + _sg_d3d11_AddRef(img->d3d11.tex2d); + } + else { + /* if only a shader-resource-view was provided, but no texture, lookup + the texture from the shader-resource-view, this also bumps the refcount + */ + SOKOL_ASSERT(img->d3d11.srv); + _sg_d3d11_GetResource((ID3D11View*)img->d3d11.srv, (ID3D11Resource**)&img->d3d11.tex2d); + SOKOL_ASSERT(img->d3d11.tex2d); + } + if (img->d3d11.srv) { + _sg_d3d11_AddRef(img->d3d11.srv); + } + } + + /* if not injected, create texture */ + if (0 == img->d3d11.tex2d) { + D3D11_TEXTURE2D_DESC d3d11_tex_desc; + _sg_clear(&d3d11_tex_desc, sizeof(d3d11_tex_desc)); + d3d11_tex_desc.Width = (UINT)img->cmn.width; + d3d11_tex_desc.Height = (UINT)img->cmn.height; + d3d11_tex_desc.MipLevels = (UINT)img->cmn.num_mipmaps; + switch (img->cmn.type) { + case SG_IMAGETYPE_ARRAY: d3d11_tex_desc.ArraySize = (UINT)img->cmn.num_slices; break; + case SG_IMAGETYPE_CUBE: d3d11_tex_desc.ArraySize = 6; break; + default: d3d11_tex_desc.ArraySize = 1; break; + } + d3d11_tex_desc.BindFlags = D3D11_BIND_SHADER_RESOURCE; + d3d11_tex_desc.Format = img->d3d11.format; + if (img->cmn.render_target) { + d3d11_tex_desc.Usage = D3D11_USAGE_DEFAULT; + if (!msaa) { + d3d11_tex_desc.BindFlags |= D3D11_BIND_RENDER_TARGET; + } + d3d11_tex_desc.CPUAccessFlags = 0; + } + else { + d3d11_tex_desc.Usage = _sg_d3d11_usage(img->cmn.usage); + d3d11_tex_desc.CPUAccessFlags = _sg_d3d11_cpu_access_flags(img->cmn.usage); + } + if (img->d3d11.format == DXGI_FORMAT_UNKNOWN) { + _SG_ERROR(D3D11_CREATE_2D_TEXTURE_UNSUPPORTED_PIXEL_FORMAT); + return SG_RESOURCESTATE_FAILED; + } + d3d11_tex_desc.SampleDesc.Count = 1; + d3d11_tex_desc.SampleDesc.Quality = 0; + d3d11_tex_desc.MiscFlags = (img->cmn.type == SG_IMAGETYPE_CUBE) ? D3D11_RESOURCE_MISC_TEXTURECUBE : 0; + + hr = _sg_d3d11_CreateTexture2D(_sg.d3d11.dev, &d3d11_tex_desc, init_data, &img->d3d11.tex2d); + if (!(SUCCEEDED(hr) && img->d3d11.tex2d)) { + _SG_ERROR(D3D11_CREATE_2D_TEXTURE_FAILED); + return SG_RESOURCESTATE_FAILED; + } + } + + /* ...and similar, if not injected, create shader-resource-view */ + if (0 == img->d3d11.srv) { + D3D11_SHADER_RESOURCE_VIEW_DESC d3d11_srv_desc; + _sg_clear(&d3d11_srv_desc, sizeof(d3d11_srv_desc)); + d3d11_srv_desc.Format = img->d3d11.format; + switch (img->cmn.type) { + case SG_IMAGETYPE_2D: + d3d11_srv_desc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; + d3d11_srv_desc.Texture2D.MipLevels = (UINT)img->cmn.num_mipmaps; + break; + case SG_IMAGETYPE_CUBE: + d3d11_srv_desc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURECUBE; + d3d11_srv_desc.TextureCube.MipLevels = (UINT)img->cmn.num_mipmaps; + break; + case SG_IMAGETYPE_ARRAY: + d3d11_srv_desc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DARRAY; + d3d11_srv_desc.Texture2DArray.MipLevels = (UINT)img->cmn.num_mipmaps; + d3d11_srv_desc.Texture2DArray.ArraySize = (UINT)img->cmn.num_slices; + break; + default: + SOKOL_UNREACHABLE; break; + } + hr = _sg_d3d11_CreateShaderResourceView(_sg.d3d11.dev, (ID3D11Resource*)img->d3d11.tex2d, &d3d11_srv_desc, &img->d3d11.srv); + if (!(SUCCEEDED(hr) && img->d3d11.srv)) { + _SG_ERROR(D3D11_CREATE_2D_SRV_FAILED); + return SG_RESOURCESTATE_FAILED; + } + } + } + else { + /* 3D texture - same procedure, first check if injected, than create non-injected */ + if (injected) { + img->d3d11.tex3d = (ID3D11Texture3D*) desc->d3d11_texture; + img->d3d11.srv = (ID3D11ShaderResourceView*) desc->d3d11_shader_resource_view; + if (img->d3d11.tex3d) { + _sg_d3d11_AddRef(img->d3d11.tex3d); + } + else { + SOKOL_ASSERT(img->d3d11.srv); + _sg_d3d11_GetResource((ID3D11View*)img->d3d11.srv, (ID3D11Resource**)&img->d3d11.tex3d); + SOKOL_ASSERT(img->d3d11.tex3d); + } + if (img->d3d11.srv) { + _sg_d3d11_AddRef(img->d3d11.srv); + } + } + + if (0 == img->d3d11.tex3d) { + D3D11_TEXTURE3D_DESC d3d11_tex_desc; + _sg_clear(&d3d11_tex_desc, sizeof(d3d11_tex_desc)); + d3d11_tex_desc.Width = (UINT)img->cmn.width; + d3d11_tex_desc.Height = (UINT)img->cmn.height; + d3d11_tex_desc.Depth = (UINT)img->cmn.num_slices; + d3d11_tex_desc.MipLevels = (UINT)img->cmn.num_mipmaps; + d3d11_tex_desc.BindFlags = D3D11_BIND_SHADER_RESOURCE; + d3d11_tex_desc.Format = img->d3d11.format; + if (img->cmn.render_target) { + d3d11_tex_desc.Usage = D3D11_USAGE_DEFAULT; + if (!msaa) { + d3d11_tex_desc.BindFlags |= D3D11_BIND_RENDER_TARGET; + } + d3d11_tex_desc.CPUAccessFlags = 0; + } + else { + d3d11_tex_desc.Usage = _sg_d3d11_usage(img->cmn.usage); + d3d11_tex_desc.CPUAccessFlags = _sg_d3d11_cpu_access_flags(img->cmn.usage); + } + if (img->d3d11.format == DXGI_FORMAT_UNKNOWN) { + _SG_ERROR(D3D11_CREATE_3D_TEXTURE_UNSUPPORTED_PIXEL_FORMAT); + return SG_RESOURCESTATE_FAILED; + } + hr = _sg_d3d11_CreateTexture3D(_sg.d3d11.dev, &d3d11_tex_desc, init_data, &img->d3d11.tex3d); + if (!(SUCCEEDED(hr) && img->d3d11.tex3d)) { + _SG_ERROR(D3D11_CREATE_3D_TEXTURE_FAILED); + return SG_RESOURCESTATE_FAILED; + } + } + + if (0 == img->d3d11.srv) { + D3D11_SHADER_RESOURCE_VIEW_DESC d3d11_srv_desc; + _sg_clear(&d3d11_srv_desc, sizeof(d3d11_srv_desc)); + d3d11_srv_desc.Format = img->d3d11.format; + d3d11_srv_desc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE3D; + d3d11_srv_desc.Texture3D.MipLevels = (UINT)img->cmn.num_mipmaps; + hr = _sg_d3d11_CreateShaderResourceView(_sg.d3d11.dev, (ID3D11Resource*)img->d3d11.tex3d, &d3d11_srv_desc, &img->d3d11.srv); + if (!(SUCCEEDED(hr) && img->d3d11.srv)) { + _SG_ERROR(D3D11_CREATE_3D_SRV_FAILED); + return SG_RESOURCESTATE_FAILED; + } + } + } + + /* also need to create a separate MSAA render target texture? */ + if (msaa) { + D3D11_TEXTURE2D_DESC d3d11_tex_desc; + _sg_clear(&d3d11_tex_desc, sizeof(d3d11_tex_desc)); + d3d11_tex_desc.Width = (UINT)img->cmn.width; + d3d11_tex_desc.Height = (UINT)img->cmn.height; + d3d11_tex_desc.MipLevels = 1; + d3d11_tex_desc.ArraySize = 1; + d3d11_tex_desc.Format = img->d3d11.format; + d3d11_tex_desc.Usage = D3D11_USAGE_DEFAULT; + d3d11_tex_desc.BindFlags = D3D11_BIND_RENDER_TARGET; + d3d11_tex_desc.CPUAccessFlags = 0; + d3d11_tex_desc.SampleDesc.Count = (UINT)img->cmn.sample_count; + d3d11_tex_desc.SampleDesc.Quality = (UINT)D3D11_STANDARD_MULTISAMPLE_PATTERN; + hr = _sg_d3d11_CreateTexture2D(_sg.d3d11.dev, &d3d11_tex_desc, NULL, &img->d3d11.texmsaa); + if (!(SUCCEEDED(hr) && img->d3d11.texmsaa)) { + _SG_ERROR(D3D11_CREATE_MSAA_TEXTURE_FAILED); + return SG_RESOURCESTATE_FAILED; + } + } + + /* sampler state object, note D3D11 implements an internal shared-pool for sampler objects */ + D3D11_SAMPLER_DESC d3d11_smp_desc; + _sg_clear(&d3d11_smp_desc, sizeof(d3d11_smp_desc)); + d3d11_smp_desc.Filter = _sg_d3d11_filter(img->cmn.min_filter, img->cmn.mag_filter, img->cmn.max_anisotropy); + d3d11_smp_desc.AddressU = _sg_d3d11_address_mode(img->cmn.wrap_u); + d3d11_smp_desc.AddressV = _sg_d3d11_address_mode(img->cmn.wrap_v); + d3d11_smp_desc.AddressW = _sg_d3d11_address_mode(img->cmn.wrap_w); + switch (img->cmn.border_color) { + case SG_BORDERCOLOR_TRANSPARENT_BLACK: + /* all 0.0f */ + break; + case SG_BORDERCOLOR_OPAQUE_WHITE: + for (int i = 0; i < 4; i++) { + d3d11_smp_desc.BorderColor[i] = 1.0f; + } + break; + default: + /* opaque black */ + d3d11_smp_desc.BorderColor[3] = 1.0f; + break; + } + d3d11_smp_desc.MaxAnisotropy = img->cmn.max_anisotropy; + d3d11_smp_desc.ComparisonFunc = D3D11_COMPARISON_NEVER; + d3d11_smp_desc.MinLOD = desc->min_lod; + d3d11_smp_desc.MaxLOD = desc->max_lod; + hr = _sg_d3d11_CreateSamplerState(_sg.d3d11.dev, &d3d11_smp_desc, &img->d3d11.smp); + if (!(SUCCEEDED(hr) && img->d3d11.smp)) { + _SG_ERROR(D3D11_CREATE_SAMPLER_STATE_FAILED); + return SG_RESOURCESTATE_FAILED; + } + } + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_d3d11_discard_image(_sg_image_t* img) { + SOKOL_ASSERT(img); + if (img->d3d11.tex2d) { + _sg_d3d11_Release(img->d3d11.tex2d); + } + if (img->d3d11.tex3d) { + _sg_d3d11_Release(img->d3d11.tex3d); + } + if (img->d3d11.texds) { + _sg_d3d11_Release(img->d3d11.texds); + } + if (img->d3d11.texmsaa) { + _sg_d3d11_Release(img->d3d11.texmsaa); + } + if (img->d3d11.srv) { + _sg_d3d11_Release(img->d3d11.srv); + } + if (img->d3d11.smp) { + _sg_d3d11_Release(img->d3d11.smp); + } +} + +_SOKOL_PRIVATE bool _sg_d3d11_load_d3dcompiler_dll(void) { + /* on UWP, don't do anything (not tested) */ + #if (defined(WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)) + return true; + #else + /* load DLL on demand */ + if ((0 == _sg.d3d11.d3dcompiler_dll) && !_sg.d3d11.d3dcompiler_dll_load_failed) { + _sg.d3d11.d3dcompiler_dll = LoadLibraryA("d3dcompiler_47.dll"); + if (0 == _sg.d3d11.d3dcompiler_dll) { + /* don't attempt to load missing DLL in the future */ + _SG_ERROR(D3D11_LOAD_D3DCOMPILER_47_DLL_FAILED); + _sg.d3d11.d3dcompiler_dll_load_failed = true; + return false; + } + /* look up function pointers */ + _sg.d3d11.D3DCompile_func = (pD3DCompile)(void*) GetProcAddress(_sg.d3d11.d3dcompiler_dll, "D3DCompile"); + SOKOL_ASSERT(_sg.d3d11.D3DCompile_func); + } + return 0 != _sg.d3d11.d3dcompiler_dll; + #endif +} + +#if (defined(WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)) +#define _sg_d3d11_D3DCompile D3DCompile +#else +#define _sg_d3d11_D3DCompile _sg.d3d11.D3DCompile_func +#endif + +_SOKOL_PRIVATE ID3DBlob* _sg_d3d11_compile_shader(const sg_shader_stage_desc* stage_desc) { + if (!_sg_d3d11_load_d3dcompiler_dll()) { + return NULL; + } + SOKOL_ASSERT(stage_desc->d3d11_target); + ID3DBlob* output = NULL; + ID3DBlob* errors_or_warnings = NULL; + HRESULT hr = _sg_d3d11_D3DCompile( + stage_desc->source, /* pSrcData */ + strlen(stage_desc->source), /* SrcDataSize */ + NULL, /* pSourceName */ + NULL, /* pDefines */ + NULL, /* pInclude */ + stage_desc->entry ? stage_desc->entry : "main", /* pEntryPoint */ + stage_desc->d3d11_target, /* pTarget (vs_5_0 or ps_5_0) */ + D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR | D3DCOMPILE_OPTIMIZATION_LEVEL3, /* Flags1 */ + 0, /* Flags2 */ + &output, /* ppCode */ + &errors_or_warnings); /* ppErrorMsgs */ + if (FAILED(hr)) { + _SG_ERROR(D3D11_SHADER_COMPILATION_FAILED); + } + if (errors_or_warnings) { + _SG_WARN(D3D11_SHADER_COMPILATION_OUTPUT); + _SG_LOGMSG(D3D11_SHADER_COMPILATION_OUTPUT, (LPCSTR)_sg_d3d11_GetBufferPointer(errors_or_warnings)); + _sg_d3d11_Release(errors_or_warnings); errors_or_warnings = NULL; + } + if (FAILED(hr)) { + /* just in case, usually output is NULL here */ + if (output) { + _sg_d3d11_Release(output); + output = NULL; + } + } + return output; +} + +_SOKOL_PRIVATE sg_resource_state _sg_d3d11_create_shader(_sg_shader_t* shd, const sg_shader_desc* desc) { + SOKOL_ASSERT(shd && desc); + SOKOL_ASSERT(!shd->d3d11.vs && !shd->d3d11.fs && !shd->d3d11.vs_blob); + HRESULT hr; + + _sg_shader_common_init(&shd->cmn, desc); + + /* copy vertex attribute semantic names and indices */ + for (int i = 0; i < SG_MAX_VERTEX_ATTRIBUTES; i++) { + _sg_strcpy(&shd->d3d11.attrs[i].sem_name, desc->attrs[i].sem_name); + shd->d3d11.attrs[i].sem_index = desc->attrs[i].sem_index; + } + + /* shader stage uniform blocks and image slots */ + for (int stage_index = 0; stage_index < SG_NUM_SHADER_STAGES; stage_index++) { + _sg_shader_stage_t* cmn_stage = &shd->cmn.stage[stage_index]; + _sg_d3d11_shader_stage_t* d3d11_stage = &shd->d3d11.stage[stage_index]; + for (int ub_index = 0; ub_index < cmn_stage->num_uniform_blocks; ub_index++) { + const _sg_shader_uniform_block_t* ub = &cmn_stage->uniform_blocks[ub_index]; + + /* create a D3D constant buffer for each uniform block */ + SOKOL_ASSERT(0 == d3d11_stage->cbufs[ub_index]); + D3D11_BUFFER_DESC cb_desc; + _sg_clear(&cb_desc, sizeof(cb_desc)); + cb_desc.ByteWidth = (UINT)_sg_roundup((int)ub->size, 16); + cb_desc.Usage = D3D11_USAGE_DEFAULT; + cb_desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER; + hr = _sg_d3d11_CreateBuffer(_sg.d3d11.dev, &cb_desc, NULL, &d3d11_stage->cbufs[ub_index]); + if (!(SUCCEEDED(hr) && d3d11_stage->cbufs[ub_index])) { + _SG_ERROR(D3D11_CREATE_CONSTANT_BUFFER_FAILED); + return SG_RESOURCESTATE_FAILED; + } + } + } + + const void* vs_ptr = 0, *fs_ptr = 0; + SIZE_T vs_length = 0, fs_length = 0; + ID3DBlob* vs_blob = 0, *fs_blob = 0; + if (desc->vs.bytecode.ptr && desc->fs.bytecode.ptr) { + /* create from shader byte code */ + vs_ptr = desc->vs.bytecode.ptr; + fs_ptr = desc->fs.bytecode.ptr; + vs_length = desc->vs.bytecode.size; + fs_length = desc->fs.bytecode.size; + } + else { + /* compile from shader source code */ + vs_blob = _sg_d3d11_compile_shader(&desc->vs); + fs_blob = _sg_d3d11_compile_shader(&desc->fs); + if (vs_blob && fs_blob) { + vs_ptr = _sg_d3d11_GetBufferPointer(vs_blob); + vs_length = _sg_d3d11_GetBufferSize(vs_blob); + fs_ptr = _sg_d3d11_GetBufferPointer(fs_blob); + fs_length = _sg_d3d11_GetBufferSize(fs_blob); + } + } + sg_resource_state result = SG_RESOURCESTATE_FAILED; + if (vs_ptr && fs_ptr && (vs_length > 0) && (fs_length > 0)) { + /* create the D3D vertex- and pixel-shader objects */ + hr = _sg_d3d11_CreateVertexShader(_sg.d3d11.dev, vs_ptr, vs_length, NULL, &shd->d3d11.vs); + bool vs_succeeded = SUCCEEDED(hr) && shd->d3d11.vs; + hr = _sg_d3d11_CreatePixelShader(_sg.d3d11.dev, fs_ptr, fs_length, NULL, &shd->d3d11.fs); + bool fs_succeeded = SUCCEEDED(hr) && shd->d3d11.fs; + + /* need to store the vertex shader byte code, this is needed later in sg_create_pipeline */ + if (vs_succeeded && fs_succeeded) { + shd->d3d11.vs_blob_length = vs_length; + shd->d3d11.vs_blob = _sg_malloc((size_t)vs_length); + SOKOL_ASSERT(shd->d3d11.vs_blob); + memcpy(shd->d3d11.vs_blob, vs_ptr, vs_length); + result = SG_RESOURCESTATE_VALID; + } + } + if (vs_blob) { + _sg_d3d11_Release(vs_blob); vs_blob = 0; + } + if (fs_blob) { + _sg_d3d11_Release(fs_blob); fs_blob = 0; + } + return result; +} + +_SOKOL_PRIVATE void _sg_d3d11_discard_shader(_sg_shader_t* shd) { + SOKOL_ASSERT(shd); + if (shd->d3d11.vs) { + _sg_d3d11_Release(shd->d3d11.vs); + } + if (shd->d3d11.fs) { + _sg_d3d11_Release(shd->d3d11.fs); + } + if (shd->d3d11.vs_blob) { + _sg_free(shd->d3d11.vs_blob); + } + for (int stage_index = 0; stage_index < SG_NUM_SHADER_STAGES; stage_index++) { + _sg_shader_stage_t* cmn_stage = &shd->cmn.stage[stage_index]; + _sg_d3d11_shader_stage_t* d3d11_stage = &shd->d3d11.stage[stage_index]; + for (int ub_index = 0; ub_index < cmn_stage->num_uniform_blocks; ub_index++) { + if (d3d11_stage->cbufs[ub_index]) { + _sg_d3d11_Release(d3d11_stage->cbufs[ub_index]); + } + } + } +} + +_SOKOL_PRIVATE sg_resource_state _sg_d3d11_create_pipeline(_sg_pipeline_t* pip, _sg_shader_t* shd, const sg_pipeline_desc* desc) { + SOKOL_ASSERT(pip && shd && desc); + SOKOL_ASSERT(desc->shader.id == shd->slot.id); + SOKOL_ASSERT(shd->slot.state == SG_RESOURCESTATE_VALID); + SOKOL_ASSERT(shd->d3d11.vs_blob && shd->d3d11.vs_blob_length > 0); + SOKOL_ASSERT(!pip->d3d11.il && !pip->d3d11.rs && !pip->d3d11.dss && !pip->d3d11.bs); + + pip->shader = shd; + _sg_pipeline_common_init(&pip->cmn, desc); + pip->d3d11.index_format = _sg_d3d11_index_format(pip->cmn.index_type); + pip->d3d11.topology = _sg_d3d11_primitive_topology(desc->primitive_type); + pip->d3d11.stencil_ref = desc->stencil.ref; + + /* create input layout object */ + HRESULT hr; + D3D11_INPUT_ELEMENT_DESC d3d11_comps[SG_MAX_VERTEX_ATTRIBUTES]; + _sg_clear(d3d11_comps, sizeof(d3d11_comps)); + int attr_index = 0; + for (; attr_index < SG_MAX_VERTEX_ATTRIBUTES; attr_index++) { + const sg_vertex_attr_desc* a_desc = &desc->layout.attrs[attr_index]; + if (a_desc->format == SG_VERTEXFORMAT_INVALID) { + break; + } + SOKOL_ASSERT(a_desc->buffer_index < SG_MAX_SHADERSTAGE_BUFFERS); + const sg_buffer_layout_desc* l_desc = &desc->layout.buffers[a_desc->buffer_index]; + const sg_vertex_step step_func = l_desc->step_func; + const int step_rate = l_desc->step_rate; + D3D11_INPUT_ELEMENT_DESC* d3d11_comp = &d3d11_comps[attr_index]; + d3d11_comp->SemanticName = _sg_strptr(&shd->d3d11.attrs[attr_index].sem_name); + d3d11_comp->SemanticIndex = (UINT)shd->d3d11.attrs[attr_index].sem_index; + d3d11_comp->Format = _sg_d3d11_vertex_format(a_desc->format); + d3d11_comp->InputSlot = (UINT)a_desc->buffer_index; + d3d11_comp->AlignedByteOffset = (UINT)a_desc->offset; + d3d11_comp->InputSlotClass = _sg_d3d11_input_classification(step_func); + if (SG_VERTEXSTEP_PER_INSTANCE == step_func) { + d3d11_comp->InstanceDataStepRate = (UINT)step_rate; + pip->cmn.use_instanced_draw = true; + } + pip->cmn.vertex_layout_valid[a_desc->buffer_index] = true; + } + for (int layout_index = 0; layout_index < SG_MAX_SHADERSTAGE_BUFFERS; layout_index++) { + if (pip->cmn.vertex_layout_valid[layout_index]) { + const sg_buffer_layout_desc* l_desc = &desc->layout.buffers[layout_index]; + SOKOL_ASSERT(l_desc->stride > 0); + pip->d3d11.vb_strides[layout_index] = (UINT)l_desc->stride; + } + else { + pip->d3d11.vb_strides[layout_index] = 0; + } + } + hr = _sg_d3d11_CreateInputLayout(_sg.d3d11.dev, + d3d11_comps, /* pInputElementDesc */ + (UINT)attr_index, /* NumElements */ + shd->d3d11.vs_blob, /* pShaderByteCodeWithInputSignature */ + shd->d3d11.vs_blob_length, /* BytecodeLength */ + &pip->d3d11.il); + if (!(SUCCEEDED(hr) && pip->d3d11.il)) { + _SG_ERROR(D3D11_CREATE_INPUT_LAYOUT_FAILED); + return SG_RESOURCESTATE_FAILED; + } + + /* create rasterizer state */ + D3D11_RASTERIZER_DESC rs_desc; + _sg_clear(&rs_desc, sizeof(rs_desc)); + rs_desc.FillMode = D3D11_FILL_SOLID; + rs_desc.CullMode = _sg_d3d11_cull_mode(desc->cull_mode); + rs_desc.FrontCounterClockwise = desc->face_winding == SG_FACEWINDING_CCW; + rs_desc.DepthBias = (INT) pip->cmn.depth.bias; + rs_desc.DepthBiasClamp = pip->cmn.depth.bias_clamp; + rs_desc.SlopeScaledDepthBias = pip->cmn.depth.bias_slope_scale; + rs_desc.DepthClipEnable = TRUE; + rs_desc.ScissorEnable = TRUE; + rs_desc.MultisampleEnable = desc->sample_count > 1; + rs_desc.AntialiasedLineEnable = FALSE; + hr = _sg_d3d11_CreateRasterizerState(_sg.d3d11.dev, &rs_desc, &pip->d3d11.rs); + if (!(SUCCEEDED(hr) && pip->d3d11.rs)) { + _SG_ERROR(D3D11_CREATE_RASTERIZER_STATE_FAILED); + return SG_RESOURCESTATE_FAILED; + } + + /* create depth-stencil state */ + D3D11_DEPTH_STENCIL_DESC dss_desc; + _sg_clear(&dss_desc, sizeof(dss_desc)); + dss_desc.DepthEnable = TRUE; + dss_desc.DepthWriteMask = desc->depth.write_enabled ? D3D11_DEPTH_WRITE_MASK_ALL : D3D11_DEPTH_WRITE_MASK_ZERO; + dss_desc.DepthFunc = _sg_d3d11_compare_func(desc->depth.compare); + dss_desc.StencilEnable = desc->stencil.enabled; + dss_desc.StencilReadMask = desc->stencil.read_mask; + dss_desc.StencilWriteMask = desc->stencil.write_mask; + const sg_stencil_face_state* sf = &desc->stencil.front; + dss_desc.FrontFace.StencilFailOp = _sg_d3d11_stencil_op(sf->fail_op); + dss_desc.FrontFace.StencilDepthFailOp = _sg_d3d11_stencil_op(sf->depth_fail_op); + dss_desc.FrontFace.StencilPassOp = _sg_d3d11_stencil_op(sf->pass_op); + dss_desc.FrontFace.StencilFunc = _sg_d3d11_compare_func(sf->compare); + const sg_stencil_face_state* sb = &desc->stencil.back; + dss_desc.BackFace.StencilFailOp = _sg_d3d11_stencil_op(sb->fail_op); + dss_desc.BackFace.StencilDepthFailOp = _sg_d3d11_stencil_op(sb->depth_fail_op); + dss_desc.BackFace.StencilPassOp = _sg_d3d11_stencil_op(sb->pass_op); + dss_desc.BackFace.StencilFunc = _sg_d3d11_compare_func(sb->compare); + hr = _sg_d3d11_CreateDepthStencilState(_sg.d3d11.dev, &dss_desc, &pip->d3d11.dss); + if (!(SUCCEEDED(hr) && pip->d3d11.dss)) { + _SG_ERROR(D3D11_CREATE_DEPTH_STENCIL_STATE_FAILED); + return SG_RESOURCESTATE_FAILED; + } + + /* create blend state */ + D3D11_BLEND_DESC bs_desc; + _sg_clear(&bs_desc, sizeof(bs_desc)); + bs_desc.AlphaToCoverageEnable = desc->alpha_to_coverage_enabled; + bs_desc.IndependentBlendEnable = TRUE; + { + int i = 0; + for (i = 0; i < desc->color_count; i++) { + const sg_blend_state* src = &desc->colors[i].blend; + D3D11_RENDER_TARGET_BLEND_DESC* dst = &bs_desc.RenderTarget[i]; + dst->BlendEnable = src->enabled; + dst->SrcBlend = _sg_d3d11_blend_factor(src->src_factor_rgb); + dst->DestBlend = _sg_d3d11_blend_factor(src->dst_factor_rgb); + dst->BlendOp = _sg_d3d11_blend_op(src->op_rgb); + dst->SrcBlendAlpha = _sg_d3d11_blend_factor(src->src_factor_alpha); + dst->DestBlendAlpha = _sg_d3d11_blend_factor(src->dst_factor_alpha); + dst->BlendOpAlpha = _sg_d3d11_blend_op(src->op_alpha); + dst->RenderTargetWriteMask = _sg_d3d11_color_write_mask(desc->colors[i].write_mask); + } + for (; i < 8; i++) { + D3D11_RENDER_TARGET_BLEND_DESC* dst = &bs_desc.RenderTarget[i]; + dst->BlendEnable = FALSE; + dst->SrcBlend = dst->SrcBlendAlpha = D3D11_BLEND_ONE; + dst->DestBlend = dst->DestBlendAlpha = D3D11_BLEND_ZERO; + dst->BlendOp = dst->BlendOpAlpha = D3D11_BLEND_OP_ADD; + dst->RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL; + } + } + hr = _sg_d3d11_CreateBlendState(_sg.d3d11.dev, &bs_desc, &pip->d3d11.bs); + if (!(SUCCEEDED(hr) && pip->d3d11.bs)) { + _SG_ERROR(D3D11_CREATE_BLEND_STATE_FAILED); + return SG_RESOURCESTATE_FAILED; + } + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_d3d11_discard_pipeline(_sg_pipeline_t* pip) { + SOKOL_ASSERT(pip); + if (pip == _sg.d3d11.cur_pipeline) { + _sg.d3d11.cur_pipeline = 0; + _sg.d3d11.cur_pipeline_id.id = SG_INVALID_ID; + } + if (pip->d3d11.il) { + _sg_d3d11_Release(pip->d3d11.il); + } + if (pip->d3d11.rs) { + _sg_d3d11_Release(pip->d3d11.rs); + } + if (pip->d3d11.dss) { + _sg_d3d11_Release(pip->d3d11.dss); + } + if (pip->d3d11.bs) { + _sg_d3d11_Release(pip->d3d11.bs); + } +} + +_SOKOL_PRIVATE sg_resource_state _sg_d3d11_create_pass(_sg_pass_t* pass, _sg_image_t** att_images, const sg_pass_desc* desc) { + SOKOL_ASSERT(pass && desc); + SOKOL_ASSERT(att_images && att_images[0]); + SOKOL_ASSERT(_sg.d3d11.dev); + + _sg_pass_common_init(&pass->cmn, desc); + + for (int i = 0; i < pass->cmn.num_color_atts; i++) { + const sg_pass_attachment_desc* att_desc = &desc->color_attachments[i]; + _SOKOL_UNUSED(att_desc); + SOKOL_ASSERT(att_desc->image.id != SG_INVALID_ID); + _sg_image_t* att_img = att_images[i]; + SOKOL_ASSERT(att_img && (att_img->slot.id == att_desc->image.id)); + SOKOL_ASSERT(_sg_is_valid_rendertarget_color_format(att_img->cmn.pixel_format)); + SOKOL_ASSERT(0 == pass->d3d11.color_atts[i].image); + pass->d3d11.color_atts[i].image = att_img; + + /* create D3D11 render-target-view */ + const _sg_pass_attachment_t* cmn_att = &pass->cmn.color_atts[i]; + SOKOL_ASSERT(0 == pass->d3d11.color_atts[i].rtv); + ID3D11Resource* d3d11_res = 0; + const bool is_msaa = att_img->cmn.sample_count > 1; + D3D11_RENDER_TARGET_VIEW_DESC d3d11_rtv_desc; + _sg_clear(&d3d11_rtv_desc, sizeof(d3d11_rtv_desc)); + d3d11_rtv_desc.Format = att_img->d3d11.format; + if ((att_img->cmn.type == SG_IMAGETYPE_2D) || is_msaa) { + if (is_msaa) { + d3d11_res = (ID3D11Resource*) att_img->d3d11.texmsaa; + d3d11_rtv_desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DMS; + } + else { + d3d11_res = (ID3D11Resource*) att_img->d3d11.tex2d; + d3d11_rtv_desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; + d3d11_rtv_desc.Texture2D.MipSlice = (UINT)cmn_att->mip_level; + } + } + else if ((att_img->cmn.type == SG_IMAGETYPE_CUBE) || (att_img->cmn.type == SG_IMAGETYPE_ARRAY)) { + d3d11_res = (ID3D11Resource*) att_img->d3d11.tex2d; + d3d11_rtv_desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY; + d3d11_rtv_desc.Texture2DArray.MipSlice = (UINT)cmn_att->mip_level; + d3d11_rtv_desc.Texture2DArray.FirstArraySlice = (UINT)cmn_att->slice; + d3d11_rtv_desc.Texture2DArray.ArraySize = 1; + } + else { + SOKOL_ASSERT(att_img->cmn.type == SG_IMAGETYPE_3D); + d3d11_res = (ID3D11Resource*) att_img->d3d11.tex3d; + d3d11_rtv_desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE3D; + d3d11_rtv_desc.Texture3D.MipSlice = (UINT)cmn_att->mip_level; + d3d11_rtv_desc.Texture3D.FirstWSlice = (UINT)cmn_att->slice; + d3d11_rtv_desc.Texture3D.WSize = 1; + } + SOKOL_ASSERT(d3d11_res); + HRESULT hr = _sg_d3d11_CreateRenderTargetView(_sg.d3d11.dev, d3d11_res, &d3d11_rtv_desc, &pass->d3d11.color_atts[i].rtv); + if (!(SUCCEEDED(hr) && pass->d3d11.color_atts[i].rtv)) { + _SG_ERROR(D3D11_CREATE_RTV_FAILED); + return SG_RESOURCESTATE_FAILED; + } + } + + /* optional depth-stencil image */ + SOKOL_ASSERT(0 == pass->d3d11.ds_att.image); + SOKOL_ASSERT(0 == pass->d3d11.ds_att.dsv); + if (desc->depth_stencil_attachment.image.id != SG_INVALID_ID) { + const int ds_img_index = SG_MAX_COLOR_ATTACHMENTS; + const sg_pass_attachment_desc* att_desc = &desc->depth_stencil_attachment; + _SOKOL_UNUSED(att_desc); + _sg_image_t* att_img = att_images[ds_img_index]; + SOKOL_ASSERT(att_img && (att_img->slot.id == att_desc->image.id)); + SOKOL_ASSERT(_sg_is_valid_rendertarget_depth_format(att_img->cmn.pixel_format)); + SOKOL_ASSERT(0 == pass->d3d11.ds_att.image); + pass->d3d11.ds_att.image = att_img; + + /* create D3D11 depth-stencil-view */ + D3D11_DEPTH_STENCIL_VIEW_DESC d3d11_dsv_desc; + _sg_clear(&d3d11_dsv_desc, sizeof(d3d11_dsv_desc)); + d3d11_dsv_desc.Format = att_img->d3d11.format; + const bool is_msaa = att_img->cmn.sample_count > 1; + if (is_msaa) { + d3d11_dsv_desc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DMS; + } + else { + d3d11_dsv_desc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D; + } + ID3D11Resource* d3d11_res = (ID3D11Resource*) att_img->d3d11.texds; + SOKOL_ASSERT(d3d11_res); + HRESULT hr = _sg_d3d11_CreateDepthStencilView(_sg.d3d11.dev, d3d11_res, &d3d11_dsv_desc, &pass->d3d11.ds_att.dsv); + if (!(SUCCEEDED(hr) && pass->d3d11.ds_att.dsv)) { + _SG_ERROR(D3D11_CREATE_DSV_FAILED); + return SG_RESOURCESTATE_FAILED; + } + } + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_d3d11_discard_pass(_sg_pass_t* pass) { + SOKOL_ASSERT(pass); + SOKOL_ASSERT(pass != _sg.d3d11.cur_pass); + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + if (pass->d3d11.color_atts[i].rtv) { + _sg_d3d11_Release(pass->d3d11.color_atts[i].rtv); + } + } + if (pass->d3d11.ds_att.dsv) { + _sg_d3d11_Release(pass->d3d11.ds_att.dsv); + } +} + +_SOKOL_PRIVATE _sg_image_t* _sg_d3d11_pass_color_image(const _sg_pass_t* pass, int index) { + SOKOL_ASSERT(pass && (index >= 0) && (index < SG_MAX_COLOR_ATTACHMENTS)); + /* NOTE: may return null */ + return pass->d3d11.color_atts[index].image; +} + +_SOKOL_PRIVATE _sg_image_t* _sg_d3d11_pass_ds_image(const _sg_pass_t* pass) { + /* NOTE: may return null */ + SOKOL_ASSERT(pass); + return pass->d3d11.ds_att.image; +} + +_SOKOL_PRIVATE void _sg_d3d11_begin_pass(_sg_pass_t* pass, const sg_pass_action* action, int w, int h) { + SOKOL_ASSERT(action); + SOKOL_ASSERT(!_sg.d3d11.in_pass); + SOKOL_ASSERT(_sg.d3d11.rtv_cb || _sg.d3d11.rtv_userdata_cb); + SOKOL_ASSERT(_sg.d3d11.dsv_cb || _sg.d3d11.dsv_userdata_cb); + _sg.d3d11.in_pass = true; + _sg.d3d11.cur_width = w; + _sg.d3d11.cur_height = h; + if (pass) { + _sg.d3d11.cur_pass = pass; + _sg.d3d11.cur_pass_id.id = pass->slot.id; + _sg.d3d11.num_rtvs = 0; + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + _sg.d3d11.cur_rtvs[i] = pass->d3d11.color_atts[i].rtv; + if (_sg.d3d11.cur_rtvs[i]) { + _sg.d3d11.num_rtvs++; + } + } + _sg.d3d11.cur_dsv = pass->d3d11.ds_att.dsv; + } + else { + /* render to default frame buffer */ + _sg.d3d11.cur_pass = 0; + _sg.d3d11.cur_pass_id.id = SG_INVALID_ID; + _sg.d3d11.num_rtvs = 1; + if (_sg.d3d11.rtv_cb) { + _sg.d3d11.cur_rtvs[0] = (ID3D11RenderTargetView*) _sg.d3d11.rtv_cb(); + } + else { + _sg.d3d11.cur_rtvs[0] = (ID3D11RenderTargetView*) _sg.d3d11.rtv_userdata_cb(_sg.d3d11.user_data); + } + for (int i = 1; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + _sg.d3d11.cur_rtvs[i] = 0; + } + if (_sg.d3d11.dsv_cb) { + _sg.d3d11.cur_dsv = (ID3D11DepthStencilView*) _sg.d3d11.dsv_cb(); + } + else { + _sg.d3d11.cur_dsv = (ID3D11DepthStencilView*) _sg.d3d11.dsv_userdata_cb(_sg.d3d11.user_data); + } + SOKOL_ASSERT(_sg.d3d11.cur_rtvs[0] && _sg.d3d11.cur_dsv); + } + /* apply the render-target- and depth-stencil-views */ + _sg_d3d11_OMSetRenderTargets(_sg.d3d11.ctx, SG_MAX_COLOR_ATTACHMENTS, _sg.d3d11.cur_rtvs, _sg.d3d11.cur_dsv); + + /* set viewport and scissor rect to cover whole screen */ + D3D11_VIEWPORT vp; + _sg_clear(&vp, sizeof(vp)); + vp.Width = (FLOAT) w; + vp.Height = (FLOAT) h; + vp.MaxDepth = 1.0f; + _sg_d3d11_RSSetViewports(_sg.d3d11.ctx, 1, &vp); + D3D11_RECT rect; + rect.left = 0; + rect.top = 0; + rect.right = w; + rect.bottom = h; + _sg_d3d11_RSSetScissorRects(_sg.d3d11.ctx, 1, &rect); + + /* perform clear action */ + for (int i = 0; i < _sg.d3d11.num_rtvs; i++) { + if (action->colors[i].action == SG_ACTION_CLEAR) { + _sg_d3d11_ClearRenderTargetView(_sg.d3d11.ctx, _sg.d3d11.cur_rtvs[i], &action->colors[i].value.r); + } + } + UINT ds_flags = 0; + if (action->depth.action == SG_ACTION_CLEAR) { + ds_flags |= D3D11_CLEAR_DEPTH; + } + if (action->stencil.action == SG_ACTION_CLEAR) { + ds_flags |= D3D11_CLEAR_STENCIL; + } + if ((0 != ds_flags) && _sg.d3d11.cur_dsv) { + _sg_d3d11_ClearDepthStencilView(_sg.d3d11.ctx, _sg.d3d11.cur_dsv, ds_flags, action->depth.value, action->stencil.value); + } +} + +/* D3D11CalcSubresource only exists for C++ */ +_SOKOL_PRIVATE UINT _sg_d3d11_calcsubresource(UINT mip_slice, UINT array_slice, UINT mip_levels) { + return mip_slice + array_slice * mip_levels; +} + +_SOKOL_PRIVATE void _sg_d3d11_end_pass(void) { + SOKOL_ASSERT(_sg.d3d11.in_pass && _sg.d3d11.ctx); + _sg.d3d11.in_pass = false; + + /* need to resolve MSAA render target into texture? */ + if (_sg.d3d11.cur_pass) { + SOKOL_ASSERT(_sg.d3d11.cur_pass->slot.id == _sg.d3d11.cur_pass_id.id); + for (int i = 0; i < _sg.d3d11.num_rtvs; i++) { + _sg_pass_attachment_t* cmn_att = &_sg.d3d11.cur_pass->cmn.color_atts[i]; + _sg_image_t* att_img = _sg.d3d11.cur_pass->d3d11.color_atts[i].image; + SOKOL_ASSERT(att_img && (att_img->slot.id == cmn_att->image_id.id)); + if (att_img->cmn.sample_count > 1) { + /* FIXME: support MSAA resolve into 3D texture */ + SOKOL_ASSERT(att_img->d3d11.tex2d && att_img->d3d11.texmsaa && !att_img->d3d11.tex3d); + SOKOL_ASSERT(DXGI_FORMAT_UNKNOWN != att_img->d3d11.format); + UINT dst_subres = _sg_d3d11_calcsubresource((UINT)cmn_att->mip_level, (UINT)cmn_att->slice, (UINT)att_img->cmn.num_mipmaps); + _sg_d3d11_ResolveSubresource(_sg.d3d11.ctx, + (ID3D11Resource*) att_img->d3d11.tex2d, /* pDstResource */ + dst_subres, /* DstSubresource */ + (ID3D11Resource*) att_img->d3d11.texmsaa, /* pSrcResource */ + 0, /* SrcSubresource */ + att_img->d3d11.format); + } + } + } + _sg.d3d11.cur_pass = 0; + _sg.d3d11.cur_pass_id.id = SG_INVALID_ID; + _sg.d3d11.cur_pipeline = 0; + _sg.d3d11.cur_pipeline_id.id = SG_INVALID_ID; + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + _sg.d3d11.cur_rtvs[i] = 0; + } + _sg.d3d11.cur_dsv = 0; + _sg_d3d11_clear_state(); +} + +_SOKOL_PRIVATE void _sg_d3d11_apply_viewport(int x, int y, int w, int h, bool origin_top_left) { + SOKOL_ASSERT(_sg.d3d11.ctx); + SOKOL_ASSERT(_sg.d3d11.in_pass); + D3D11_VIEWPORT vp; + vp.TopLeftX = (FLOAT) x; + vp.TopLeftY = (FLOAT) (origin_top_left ? y : (_sg.d3d11.cur_height - (y + h))); + vp.Width = (FLOAT) w; + vp.Height = (FLOAT) h; + vp.MinDepth = 0.0f; + vp.MaxDepth = 1.0f; + _sg_d3d11_RSSetViewports(_sg.d3d11.ctx, 1, &vp); +} + +_SOKOL_PRIVATE void _sg_d3d11_apply_scissor_rect(int x, int y, int w, int h, bool origin_top_left) { + SOKOL_ASSERT(_sg.d3d11.ctx); + SOKOL_ASSERT(_sg.d3d11.in_pass); + D3D11_RECT rect; + rect.left = x; + rect.top = (origin_top_left ? y : (_sg.d3d11.cur_height - (y + h))); + rect.right = x + w; + rect.bottom = origin_top_left ? (y + h) : (_sg.d3d11.cur_height - y); + _sg_d3d11_RSSetScissorRects(_sg.d3d11.ctx, 1, &rect); +} + +_SOKOL_PRIVATE void _sg_d3d11_apply_pipeline(_sg_pipeline_t* pip) { + SOKOL_ASSERT(pip); + SOKOL_ASSERT(pip->shader && (pip->cmn.shader_id.id == pip->shader->slot.id)); + SOKOL_ASSERT(_sg.d3d11.ctx); + SOKOL_ASSERT(_sg.d3d11.in_pass); + SOKOL_ASSERT(pip->d3d11.rs && pip->d3d11.bs && pip->d3d11.dss && pip->d3d11.il); + + _sg.d3d11.cur_pipeline = pip; + _sg.d3d11.cur_pipeline_id.id = pip->slot.id; + _sg.d3d11.use_indexed_draw = (pip->d3d11.index_format != DXGI_FORMAT_UNKNOWN); + _sg.d3d11.use_instanced_draw = pip->cmn.use_instanced_draw; + + _sg_d3d11_RSSetState(_sg.d3d11.ctx, pip->d3d11.rs); + _sg_d3d11_OMSetDepthStencilState(_sg.d3d11.ctx, pip->d3d11.dss, pip->d3d11.stencil_ref); + _sg_d3d11_OMSetBlendState(_sg.d3d11.ctx, pip->d3d11.bs, &pip->cmn.blend_color.r, 0xFFFFFFFF); + _sg_d3d11_IASetPrimitiveTopology(_sg.d3d11.ctx, pip->d3d11.topology); + _sg_d3d11_IASetInputLayout(_sg.d3d11.ctx, pip->d3d11.il); + _sg_d3d11_VSSetShader(_sg.d3d11.ctx, pip->shader->d3d11.vs, NULL, 0); + _sg_d3d11_VSSetConstantBuffers(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_UBS, pip->shader->d3d11.stage[SG_SHADERSTAGE_VS].cbufs); + _sg_d3d11_PSSetShader(_sg.d3d11.ctx, pip->shader->d3d11.fs, NULL, 0); + _sg_d3d11_PSSetConstantBuffers(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_UBS, pip->shader->d3d11.stage[SG_SHADERSTAGE_FS].cbufs); +} + +_SOKOL_PRIVATE void _sg_d3d11_apply_bindings( + _sg_pipeline_t* pip, + _sg_buffer_t** vbs, const int* vb_offsets, int num_vbs, + _sg_buffer_t* ib, int ib_offset, + _sg_image_t** vs_imgs, int num_vs_imgs, + _sg_image_t** fs_imgs, int num_fs_imgs) +{ + SOKOL_ASSERT(pip); + SOKOL_ASSERT(_sg.d3d11.ctx); + SOKOL_ASSERT(_sg.d3d11.in_pass); + + /* gather all the D3D11 resources into arrays */ + ID3D11Buffer* d3d11_ib = ib ? ib->d3d11.buf : 0; + ID3D11Buffer* d3d11_vbs[SG_MAX_SHADERSTAGE_BUFFERS]; + UINT d3d11_vb_offsets[SG_MAX_SHADERSTAGE_BUFFERS]; + ID3D11ShaderResourceView* d3d11_vs_srvs[SG_MAX_SHADERSTAGE_IMAGES]; + ID3D11SamplerState* d3d11_vs_smps[SG_MAX_SHADERSTAGE_IMAGES]; + ID3D11ShaderResourceView* d3d11_fs_srvs[SG_MAX_SHADERSTAGE_IMAGES]; + ID3D11SamplerState* d3d11_fs_smps[SG_MAX_SHADERSTAGE_IMAGES]; + int i; + for (i = 0; i < num_vbs; i++) { + SOKOL_ASSERT(vbs[i]->d3d11.buf); + d3d11_vbs[i] = vbs[i]->d3d11.buf; + d3d11_vb_offsets[i] = (UINT)vb_offsets[i]; + } + for (; i < SG_MAX_SHADERSTAGE_BUFFERS; i++) { + d3d11_vbs[i] = 0; + d3d11_vb_offsets[i] = 0; + } + for (i = 0; i < num_vs_imgs; i++) { + SOKOL_ASSERT(vs_imgs[i]->d3d11.srv); + SOKOL_ASSERT(vs_imgs[i]->d3d11.smp); + d3d11_vs_srvs[i] = vs_imgs[i]->d3d11.srv; + d3d11_vs_smps[i] = vs_imgs[i]->d3d11.smp; + } + for (; i < SG_MAX_SHADERSTAGE_IMAGES; i++) { + d3d11_vs_srvs[i] = 0; + d3d11_vs_smps[i] = 0; + } + for (i = 0; i < num_fs_imgs; i++) { + SOKOL_ASSERT(fs_imgs[i]->d3d11.srv); + SOKOL_ASSERT(fs_imgs[i]->d3d11.smp); + d3d11_fs_srvs[i] = fs_imgs[i]->d3d11.srv; + d3d11_fs_smps[i] = fs_imgs[i]->d3d11.smp; + } + for (; i < SG_MAX_SHADERSTAGE_IMAGES; i++) { + d3d11_fs_srvs[i] = 0; + d3d11_fs_smps[i] = 0; + } + + _sg_d3d11_IASetVertexBuffers(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_BUFFERS, d3d11_vbs, pip->d3d11.vb_strides, d3d11_vb_offsets); + _sg_d3d11_IASetIndexBuffer(_sg.d3d11.ctx, d3d11_ib, pip->d3d11.index_format, (UINT)ib_offset); + _sg_d3d11_VSSetShaderResources(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_IMAGES, d3d11_vs_srvs); + _sg_d3d11_VSSetSamplers(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_IMAGES, d3d11_vs_smps); + _sg_d3d11_PSSetShaderResources(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_IMAGES, d3d11_fs_srvs); + _sg_d3d11_PSSetSamplers(_sg.d3d11.ctx, 0, SG_MAX_SHADERSTAGE_IMAGES, d3d11_fs_smps); +} + +_SOKOL_PRIVATE void _sg_d3d11_apply_uniforms(sg_shader_stage stage_index, int ub_index, const sg_range* data) { + SOKOL_ASSERT(_sg.d3d11.ctx && _sg.d3d11.in_pass); + SOKOL_ASSERT(_sg.d3d11.cur_pipeline && _sg.d3d11.cur_pipeline->slot.id == _sg.d3d11.cur_pipeline_id.id); + SOKOL_ASSERT(_sg.d3d11.cur_pipeline->shader && _sg.d3d11.cur_pipeline->shader->slot.id == _sg.d3d11.cur_pipeline->cmn.shader_id.id); + SOKOL_ASSERT(ub_index < _sg.d3d11.cur_pipeline->shader->cmn.stage[stage_index].num_uniform_blocks); + SOKOL_ASSERT(data->size == _sg.d3d11.cur_pipeline->shader->cmn.stage[stage_index].uniform_blocks[ub_index].size); + ID3D11Buffer* cb = _sg.d3d11.cur_pipeline->shader->d3d11.stage[stage_index].cbufs[ub_index]; + SOKOL_ASSERT(cb); + _sg_d3d11_UpdateSubresource(_sg.d3d11.ctx, (ID3D11Resource*)cb, 0, NULL, data->ptr, 0, 0); +} + +_SOKOL_PRIVATE void _sg_d3d11_draw(int base_element, int num_elements, int num_instances) { + SOKOL_ASSERT(_sg.d3d11.in_pass); + if (_sg.d3d11.use_indexed_draw) { + if (_sg.d3d11.use_instanced_draw) { + _sg_d3d11_DrawIndexedInstanced(_sg.d3d11.ctx, (UINT)num_elements, (UINT)num_instances, (UINT)base_element, 0, 0); + } + else { + _sg_d3d11_DrawIndexed(_sg.d3d11.ctx, (UINT)num_elements, (UINT)base_element, 0); + } + } + else { + if (_sg.d3d11.use_instanced_draw) { + _sg_d3d11_DrawInstanced(_sg.d3d11.ctx, (UINT)num_elements, (UINT)num_instances, (UINT)base_element, 0); + } + else { + _sg_d3d11_Draw(_sg.d3d11.ctx, (UINT)num_elements, (UINT)base_element); + } + } +} + +_SOKOL_PRIVATE void _sg_d3d11_commit(void) { + SOKOL_ASSERT(!_sg.d3d11.in_pass); +} + +_SOKOL_PRIVATE void _sg_d3d11_update_buffer(_sg_buffer_t* buf, const sg_range* data) { + SOKOL_ASSERT(buf && data && data->ptr && (data->size > 0)); + SOKOL_ASSERT(_sg.d3d11.ctx); + SOKOL_ASSERT(buf->d3d11.buf); + D3D11_MAPPED_SUBRESOURCE d3d11_msr; + HRESULT hr = _sg_d3d11_Map(_sg.d3d11.ctx, (ID3D11Resource*)buf->d3d11.buf, 0, D3D11_MAP_WRITE_DISCARD, 0, &d3d11_msr); + if (SUCCEEDED(hr)) { + memcpy(d3d11_msr.pData, data->ptr, data->size); + _sg_d3d11_Unmap(_sg.d3d11.ctx, (ID3D11Resource*)buf->d3d11.buf, 0); + } + else { + _SG_ERROR(D3D11_MAP_FOR_UPDATE_BUFFER_FAILED); + } +} + +_SOKOL_PRIVATE int _sg_d3d11_append_buffer(_sg_buffer_t* buf, const sg_range* data, bool new_frame) { + SOKOL_ASSERT(buf && data && data->ptr && (data->size > 0)); + SOKOL_ASSERT(_sg.d3d11.ctx); + SOKOL_ASSERT(buf->d3d11.buf); + D3D11_MAP map_type = new_frame ? D3D11_MAP_WRITE_DISCARD : D3D11_MAP_WRITE_NO_OVERWRITE; + D3D11_MAPPED_SUBRESOURCE d3d11_msr; + HRESULT hr = _sg_d3d11_Map(_sg.d3d11.ctx, (ID3D11Resource*)buf->d3d11.buf, 0, map_type, 0, &d3d11_msr); + if (SUCCEEDED(hr)) { + uint8_t* dst_ptr = (uint8_t*)d3d11_msr.pData + buf->cmn.append_pos; + memcpy(dst_ptr, data->ptr, data->size); + _sg_d3d11_Unmap(_sg.d3d11.ctx, (ID3D11Resource*)buf->d3d11.buf, 0); + } + else { + _SG_ERROR(D3D11_MAP_FOR_APPEND_BUFFER_FAILED); + } + /* NOTE: this alignment is a requirement from WebGPU, but we want identical behaviour across all backend */ + return _sg_roundup((int)data->size, 4); +} + +_SOKOL_PRIVATE void _sg_d3d11_update_image(_sg_image_t* img, const sg_image_data* data) { + SOKOL_ASSERT(img && data); + SOKOL_ASSERT(_sg.d3d11.ctx); + SOKOL_ASSERT(img->d3d11.tex2d || img->d3d11.tex3d); + ID3D11Resource* d3d11_res = 0; + if (img->d3d11.tex3d) { + d3d11_res = (ID3D11Resource*) img->d3d11.tex3d; + } + else { + d3d11_res = (ID3D11Resource*) img->d3d11.tex2d; + } + SOKOL_ASSERT(d3d11_res); + const int num_faces = (img->cmn.type == SG_IMAGETYPE_CUBE) ? 6:1; + const int num_slices = (img->cmn.type == SG_IMAGETYPE_ARRAY) ? img->cmn.num_slices:1; + UINT subres_index = 0; + HRESULT hr; + D3D11_MAPPED_SUBRESOURCE d3d11_msr; + for (int face_index = 0; face_index < num_faces; face_index++) { + for (int slice_index = 0; slice_index < num_slices; slice_index++) { + for (int mip_index = 0; mip_index < img->cmn.num_mipmaps; mip_index++, subres_index++) { + SOKOL_ASSERT(subres_index < (SG_MAX_MIPMAPS * SG_MAX_TEXTUREARRAY_LAYERS)); + const int mip_width = ((img->cmn.width>>mip_index)>0) ? img->cmn.width>>mip_index : 1; + const int mip_height = ((img->cmn.height>>mip_index)>0) ? img->cmn.height>>mip_index : 1; + const int src_pitch = _sg_row_pitch(img->cmn.pixel_format, mip_width, 1); + const sg_range* subimg_data = &(data->subimage[face_index][mip_index]); + const size_t slice_size = subimg_data->size / (size_t)num_slices; + const size_t slice_offset = slice_size * (size_t)slice_index; + const uint8_t* slice_ptr = ((const uint8_t*)subimg_data->ptr) + slice_offset; + hr = _sg_d3d11_Map(_sg.d3d11.ctx, d3d11_res, subres_index, D3D11_MAP_WRITE_DISCARD, 0, &d3d11_msr); + if (SUCCEEDED(hr)) { + /* FIXME: need to handle difference in depth-pitch for 3D textures as well! */ + if (src_pitch == (int)d3d11_msr.RowPitch) { + memcpy(d3d11_msr.pData, slice_ptr, slice_size); + } + else { + SOKOL_ASSERT(src_pitch < (int)d3d11_msr.RowPitch); + const uint8_t* src_ptr = slice_ptr; + uint8_t* dst_ptr = (uint8_t*) d3d11_msr.pData; + for (int row_index = 0; row_index < mip_height; row_index++) { + memcpy(dst_ptr, src_ptr, (size_t)src_pitch); + src_ptr += src_pitch; + dst_ptr += d3d11_msr.RowPitch; + } + } + _sg_d3d11_Unmap(_sg.d3d11.ctx, d3d11_res, subres_index); + } + else { + _SG_ERROR(D3D11_MAP_FOR_UPDATE_IMAGE_FAILED); + } + } + } + } +} + +// ███ ███ ███████ ████████ █████ ██ ██████ █████ ██████ ██ ██ ███████ ███ ██ ██████ +// ████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ +// ██ ████ ██ █████ ██ ███████ ██ ██████ ███████ ██ █████ █████ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ██ ██ ██ ███████ ██████ ██ ██ ██████ ██ ██ ███████ ██ ████ ██████ +// +// >>metal backend +#elif defined(SOKOL_METAL) + +#if __has_feature(objc_arc) +#define _SG_OBJC_RETAIN(obj) { } +#define _SG_OBJC_RELEASE(obj) { obj = nil; } +#else +#define _SG_OBJC_RETAIN(obj) { [obj retain]; } +#define _SG_OBJC_RELEASE(obj) { [obj release]; obj = nil; } +#endif + +/*-- enum translation functions ----------------------------------------------*/ +_SOKOL_PRIVATE MTLLoadAction _sg_mtl_load_action(sg_action a) { + switch (a) { + case SG_ACTION_CLEAR: return MTLLoadActionClear; + case SG_ACTION_LOAD: return MTLLoadActionLoad; + case SG_ACTION_DONTCARE: return MTLLoadActionDontCare; + default: SOKOL_UNREACHABLE; return (MTLLoadAction)0; + } +} + +_SOKOL_PRIVATE MTLResourceOptions _sg_mtl_buffer_resource_options(sg_usage usg) { + switch (usg) { + case SG_USAGE_IMMUTABLE: + #if defined(_SG_TARGET_MACOS) + return MTLResourceStorageModeManaged; + #else + return MTLResourceStorageModeShared; + #endif + case SG_USAGE_DYNAMIC: + case SG_USAGE_STREAM: + #if defined(_SG_TARGET_MACOS) + return MTLResourceCPUCacheModeWriteCombined|MTLResourceStorageModeManaged; + #else + return MTLResourceCPUCacheModeWriteCombined|MTLResourceStorageModeShared; + #endif + default: + SOKOL_UNREACHABLE; + return 0; + } +} + +_SOKOL_PRIVATE MTLVertexStepFunction _sg_mtl_step_function(sg_vertex_step step) { + switch (step) { + case SG_VERTEXSTEP_PER_VERTEX: return MTLVertexStepFunctionPerVertex; + case SG_VERTEXSTEP_PER_INSTANCE: return MTLVertexStepFunctionPerInstance; + default: SOKOL_UNREACHABLE; return (MTLVertexStepFunction)0; + } +} + +_SOKOL_PRIVATE MTLVertexFormat _sg_mtl_vertex_format(sg_vertex_format fmt) { + switch (fmt) { + case SG_VERTEXFORMAT_FLOAT: return MTLVertexFormatFloat; + case SG_VERTEXFORMAT_FLOAT2: return MTLVertexFormatFloat2; + case SG_VERTEXFORMAT_FLOAT3: return MTLVertexFormatFloat3; + case SG_VERTEXFORMAT_FLOAT4: return MTLVertexFormatFloat4; + case SG_VERTEXFORMAT_BYTE4: return MTLVertexFormatChar4; + case SG_VERTEXFORMAT_BYTE4N: return MTLVertexFormatChar4Normalized; + case SG_VERTEXFORMAT_UBYTE4: return MTLVertexFormatUChar4; + case SG_VERTEXFORMAT_UBYTE4N: return MTLVertexFormatUChar4Normalized; + case SG_VERTEXFORMAT_SHORT2: return MTLVertexFormatShort2; + case SG_VERTEXFORMAT_SHORT2N: return MTLVertexFormatShort2Normalized; + case SG_VERTEXFORMAT_USHORT2N: return MTLVertexFormatUShort2Normalized; + case SG_VERTEXFORMAT_SHORT4: return MTLVertexFormatShort4; + case SG_VERTEXFORMAT_SHORT4N: return MTLVertexFormatShort4Normalized; + case SG_VERTEXFORMAT_USHORT4N: return MTLVertexFormatUShort4Normalized; + case SG_VERTEXFORMAT_UINT10_N2: return MTLVertexFormatUInt1010102Normalized; + case SG_VERTEXFORMAT_HALF2: return MTLVertexFormatHalf2; + case SG_VERTEXFORMAT_HALF4: return MTLVertexFormatHalf4; + default: SOKOL_UNREACHABLE; return (MTLVertexFormat)0; + } +} + +_SOKOL_PRIVATE MTLPrimitiveType _sg_mtl_primitive_type(sg_primitive_type t) { + switch (t) { + case SG_PRIMITIVETYPE_POINTS: return MTLPrimitiveTypePoint; + case SG_PRIMITIVETYPE_LINES: return MTLPrimitiveTypeLine; + case SG_PRIMITIVETYPE_LINE_STRIP: return MTLPrimitiveTypeLineStrip; + case SG_PRIMITIVETYPE_TRIANGLES: return MTLPrimitiveTypeTriangle; + case SG_PRIMITIVETYPE_TRIANGLE_STRIP: return MTLPrimitiveTypeTriangleStrip; + default: SOKOL_UNREACHABLE; return (MTLPrimitiveType)0; + } +} + +_SOKOL_PRIVATE MTLPixelFormat _sg_mtl_pixel_format(sg_pixel_format fmt) { + switch (fmt) { + case SG_PIXELFORMAT_R8: return MTLPixelFormatR8Unorm; + case SG_PIXELFORMAT_R8SN: return MTLPixelFormatR8Snorm; + case SG_PIXELFORMAT_R8UI: return MTLPixelFormatR8Uint; + case SG_PIXELFORMAT_R8SI: return MTLPixelFormatR8Sint; + case SG_PIXELFORMAT_R16: return MTLPixelFormatR16Unorm; + case SG_PIXELFORMAT_R16SN: return MTLPixelFormatR16Snorm; + case SG_PIXELFORMAT_R16UI: return MTLPixelFormatR16Uint; + case SG_PIXELFORMAT_R16SI: return MTLPixelFormatR16Sint; + case SG_PIXELFORMAT_R16F: return MTLPixelFormatR16Float; + case SG_PIXELFORMAT_RG8: return MTLPixelFormatRG8Unorm; + case SG_PIXELFORMAT_RG8SN: return MTLPixelFormatRG8Snorm; + case SG_PIXELFORMAT_RG8UI: return MTLPixelFormatRG8Uint; + case SG_PIXELFORMAT_RG8SI: return MTLPixelFormatRG8Sint; + case SG_PIXELFORMAT_R32UI: return MTLPixelFormatR32Uint; + case SG_PIXELFORMAT_R32SI: return MTLPixelFormatR32Sint; + case SG_PIXELFORMAT_R32F: return MTLPixelFormatR32Float; + case SG_PIXELFORMAT_RG16: return MTLPixelFormatRG16Unorm; + case SG_PIXELFORMAT_RG16SN: return MTLPixelFormatRG16Snorm; + case SG_PIXELFORMAT_RG16UI: return MTLPixelFormatRG16Uint; + case SG_PIXELFORMAT_RG16SI: return MTLPixelFormatRG16Sint; + case SG_PIXELFORMAT_RG16F: return MTLPixelFormatRG16Float; + case SG_PIXELFORMAT_RGBA8: return MTLPixelFormatRGBA8Unorm; + case SG_PIXELFORMAT_SRGB8A8: return MTLPixelFormatRGBA8Unorm_sRGB; + case SG_PIXELFORMAT_RGBA8SN: return MTLPixelFormatRGBA8Snorm; + case SG_PIXELFORMAT_RGBA8UI: return MTLPixelFormatRGBA8Uint; + case SG_PIXELFORMAT_RGBA8SI: return MTLPixelFormatRGBA8Sint; + case SG_PIXELFORMAT_BGRA8: return MTLPixelFormatBGRA8Unorm; + case SG_PIXELFORMAT_RGB10A2: return MTLPixelFormatRGB10A2Unorm; + case SG_PIXELFORMAT_RG11B10F: return MTLPixelFormatRG11B10Float; + case SG_PIXELFORMAT_RGB9E5: return MTLPixelFormatRGB9E5Float; + case SG_PIXELFORMAT_RG32UI: return MTLPixelFormatRG32Uint; + case SG_PIXELFORMAT_RG32SI: return MTLPixelFormatRG32Sint; + case SG_PIXELFORMAT_RG32F: return MTLPixelFormatRG32Float; + case SG_PIXELFORMAT_RGBA16: return MTLPixelFormatRGBA16Unorm; + case SG_PIXELFORMAT_RGBA16SN: return MTLPixelFormatRGBA16Snorm; + case SG_PIXELFORMAT_RGBA16UI: return MTLPixelFormatRGBA16Uint; + case SG_PIXELFORMAT_RGBA16SI: return MTLPixelFormatRGBA16Sint; + case SG_PIXELFORMAT_RGBA16F: return MTLPixelFormatRGBA16Float; + case SG_PIXELFORMAT_RGBA32UI: return MTLPixelFormatRGBA32Uint; + case SG_PIXELFORMAT_RGBA32SI: return MTLPixelFormatRGBA32Sint; + case SG_PIXELFORMAT_RGBA32F: return MTLPixelFormatRGBA32Float; + case SG_PIXELFORMAT_DEPTH: return MTLPixelFormatDepth32Float; + case SG_PIXELFORMAT_DEPTH_STENCIL: return MTLPixelFormatDepth32Float_Stencil8; + #if defined(_SG_TARGET_MACOS) + case SG_PIXELFORMAT_BC1_RGBA: return MTLPixelFormatBC1_RGBA; + case SG_PIXELFORMAT_BC2_RGBA: return MTLPixelFormatBC2_RGBA; + case SG_PIXELFORMAT_BC3_RGBA: return MTLPixelFormatBC3_RGBA; + case SG_PIXELFORMAT_BC4_R: return MTLPixelFormatBC4_RUnorm; + case SG_PIXELFORMAT_BC4_RSN: return MTLPixelFormatBC4_RSnorm; + case SG_PIXELFORMAT_BC5_RG: return MTLPixelFormatBC5_RGUnorm; + case SG_PIXELFORMAT_BC5_RGSN: return MTLPixelFormatBC5_RGSnorm; + case SG_PIXELFORMAT_BC6H_RGBF: return MTLPixelFormatBC6H_RGBFloat; + case SG_PIXELFORMAT_BC6H_RGBUF: return MTLPixelFormatBC6H_RGBUfloat; + case SG_PIXELFORMAT_BC7_RGBA: return MTLPixelFormatBC7_RGBAUnorm; + #else + case SG_PIXELFORMAT_PVRTC_RGB_2BPP: return MTLPixelFormatPVRTC_RGB_2BPP; + case SG_PIXELFORMAT_PVRTC_RGB_4BPP: return MTLPixelFormatPVRTC_RGB_4BPP; + case SG_PIXELFORMAT_PVRTC_RGBA_2BPP: return MTLPixelFormatPVRTC_RGBA_2BPP; + case SG_PIXELFORMAT_PVRTC_RGBA_4BPP: return MTLPixelFormatPVRTC_RGBA_4BPP; + case SG_PIXELFORMAT_ETC2_RGB8: return MTLPixelFormatETC2_RGB8; + case SG_PIXELFORMAT_ETC2_RGB8A1: return MTLPixelFormatETC2_RGB8A1; + case SG_PIXELFORMAT_ETC2_RGBA8: return MTLPixelFormatEAC_RGBA8; + case SG_PIXELFORMAT_ETC2_RG11: return MTLPixelFormatEAC_RG11Unorm; + case SG_PIXELFORMAT_ETC2_RG11SN: return MTLPixelFormatEAC_RG11Snorm; + #endif + default: return MTLPixelFormatInvalid; + } +} + +_SOKOL_PRIVATE MTLColorWriteMask _sg_mtl_color_write_mask(sg_color_mask m) { + MTLColorWriteMask mtl_mask = MTLColorWriteMaskNone; + if (m & SG_COLORMASK_R) { + mtl_mask |= MTLColorWriteMaskRed; + } + if (m & SG_COLORMASK_G) { + mtl_mask |= MTLColorWriteMaskGreen; + } + if (m & SG_COLORMASK_B) { + mtl_mask |= MTLColorWriteMaskBlue; + } + if (m & SG_COLORMASK_A) { + mtl_mask |= MTLColorWriteMaskAlpha; + } + return mtl_mask; +} + +_SOKOL_PRIVATE MTLBlendOperation _sg_mtl_blend_op(sg_blend_op op) { + switch (op) { + case SG_BLENDOP_ADD: return MTLBlendOperationAdd; + case SG_BLENDOP_SUBTRACT: return MTLBlendOperationSubtract; + case SG_BLENDOP_REVERSE_SUBTRACT: return MTLBlendOperationReverseSubtract; + default: SOKOL_UNREACHABLE; return (MTLBlendOperation)0; + } +} + +_SOKOL_PRIVATE MTLBlendFactor _sg_mtl_blend_factor(sg_blend_factor f) { + switch (f) { + case SG_BLENDFACTOR_ZERO: return MTLBlendFactorZero; + case SG_BLENDFACTOR_ONE: return MTLBlendFactorOne; + case SG_BLENDFACTOR_SRC_COLOR: return MTLBlendFactorSourceColor; + case SG_BLENDFACTOR_ONE_MINUS_SRC_COLOR: return MTLBlendFactorOneMinusSourceColor; + case SG_BLENDFACTOR_SRC_ALPHA: return MTLBlendFactorSourceAlpha; + case SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA: return MTLBlendFactorOneMinusSourceAlpha; + case SG_BLENDFACTOR_DST_COLOR: return MTLBlendFactorDestinationColor; + case SG_BLENDFACTOR_ONE_MINUS_DST_COLOR: return MTLBlendFactorOneMinusDestinationColor; + case SG_BLENDFACTOR_DST_ALPHA: return MTLBlendFactorDestinationAlpha; + case SG_BLENDFACTOR_ONE_MINUS_DST_ALPHA: return MTLBlendFactorOneMinusDestinationAlpha; + case SG_BLENDFACTOR_SRC_ALPHA_SATURATED: return MTLBlendFactorSourceAlphaSaturated; + case SG_BLENDFACTOR_BLEND_COLOR: return MTLBlendFactorBlendColor; + case SG_BLENDFACTOR_ONE_MINUS_BLEND_COLOR: return MTLBlendFactorOneMinusBlendColor; + case SG_BLENDFACTOR_BLEND_ALPHA: return MTLBlendFactorBlendAlpha; + case SG_BLENDFACTOR_ONE_MINUS_BLEND_ALPHA: return MTLBlendFactorOneMinusBlendAlpha; + default: SOKOL_UNREACHABLE; return (MTLBlendFactor)0; + } +} + +_SOKOL_PRIVATE MTLCompareFunction _sg_mtl_compare_func(sg_compare_func f) { + switch (f) { + case SG_COMPAREFUNC_NEVER: return MTLCompareFunctionNever; + case SG_COMPAREFUNC_LESS: return MTLCompareFunctionLess; + case SG_COMPAREFUNC_EQUAL: return MTLCompareFunctionEqual; + case SG_COMPAREFUNC_LESS_EQUAL: return MTLCompareFunctionLessEqual; + case SG_COMPAREFUNC_GREATER: return MTLCompareFunctionGreater; + case SG_COMPAREFUNC_NOT_EQUAL: return MTLCompareFunctionNotEqual; + case SG_COMPAREFUNC_GREATER_EQUAL: return MTLCompareFunctionGreaterEqual; + case SG_COMPAREFUNC_ALWAYS: return MTLCompareFunctionAlways; + default: SOKOL_UNREACHABLE; return (MTLCompareFunction)0; + } +} + +_SOKOL_PRIVATE MTLStencilOperation _sg_mtl_stencil_op(sg_stencil_op op) { + switch (op) { + case SG_STENCILOP_KEEP: return MTLStencilOperationKeep; + case SG_STENCILOP_ZERO: return MTLStencilOperationZero; + case SG_STENCILOP_REPLACE: return MTLStencilOperationReplace; + case SG_STENCILOP_INCR_CLAMP: return MTLStencilOperationIncrementClamp; + case SG_STENCILOP_DECR_CLAMP: return MTLStencilOperationDecrementClamp; + case SG_STENCILOP_INVERT: return MTLStencilOperationInvert; + case SG_STENCILOP_INCR_WRAP: return MTLStencilOperationIncrementWrap; + case SG_STENCILOP_DECR_WRAP: return MTLStencilOperationDecrementWrap; + default: SOKOL_UNREACHABLE; return (MTLStencilOperation)0; + } +} + +_SOKOL_PRIVATE MTLCullMode _sg_mtl_cull_mode(sg_cull_mode m) { + switch (m) { + case SG_CULLMODE_NONE: return MTLCullModeNone; + case SG_CULLMODE_FRONT: return MTLCullModeFront; + case SG_CULLMODE_BACK: return MTLCullModeBack; + default: SOKOL_UNREACHABLE; return (MTLCullMode)0; + } +} + +_SOKOL_PRIVATE MTLWinding _sg_mtl_winding(sg_face_winding w) { + switch (w) { + case SG_FACEWINDING_CW: return MTLWindingClockwise; + case SG_FACEWINDING_CCW: return MTLWindingCounterClockwise; + default: SOKOL_UNREACHABLE; return (MTLWinding)0; + } +} + +_SOKOL_PRIVATE MTLIndexType _sg_mtl_index_type(sg_index_type t) { + switch (t) { + case SG_INDEXTYPE_UINT16: return MTLIndexTypeUInt16; + case SG_INDEXTYPE_UINT32: return MTLIndexTypeUInt32; + default: SOKOL_UNREACHABLE; return (MTLIndexType)0; + } +} + +_SOKOL_PRIVATE int _sg_mtl_index_size(sg_index_type t) { + switch (t) { + case SG_INDEXTYPE_NONE: return 0; + case SG_INDEXTYPE_UINT16: return 2; + case SG_INDEXTYPE_UINT32: return 4; + default: SOKOL_UNREACHABLE; return 0; + } +} + +_SOKOL_PRIVATE MTLTextureType _sg_mtl_texture_type(sg_image_type t) { + switch (t) { + case SG_IMAGETYPE_2D: return MTLTextureType2D; + case SG_IMAGETYPE_CUBE: return MTLTextureTypeCube; + case SG_IMAGETYPE_3D: return MTLTextureType3D; + case SG_IMAGETYPE_ARRAY: return MTLTextureType2DArray; + default: SOKOL_UNREACHABLE; return (MTLTextureType)0; + } +} + +_SOKOL_PRIVATE bool _sg_mtl_is_pvrtc(sg_pixel_format fmt) { + switch (fmt) { + case SG_PIXELFORMAT_PVRTC_RGB_2BPP: + case SG_PIXELFORMAT_PVRTC_RGB_4BPP: + case SG_PIXELFORMAT_PVRTC_RGBA_2BPP: + case SG_PIXELFORMAT_PVRTC_RGBA_4BPP: + return true; + default: + return false; + } +} + +_SOKOL_PRIVATE MTLSamplerAddressMode _sg_mtl_address_mode(sg_wrap w) { + switch (w) { + case SG_WRAP_REPEAT: return MTLSamplerAddressModeRepeat; + case SG_WRAP_CLAMP_TO_EDGE: return MTLSamplerAddressModeClampToEdge; + #if defined(_SG_TARGET_MACOS) + case SG_WRAP_CLAMP_TO_BORDER: return MTLSamplerAddressModeClampToBorderColor; + #else + /* clamp-to-border not supported on iOS, fall back to clamp-to-edge */ + case SG_WRAP_CLAMP_TO_BORDER: return MTLSamplerAddressModeClampToEdge; + #endif + case SG_WRAP_MIRRORED_REPEAT: return MTLSamplerAddressModeMirrorRepeat; + default: SOKOL_UNREACHABLE; return (MTLSamplerAddressMode)0; + } +} + +#if defined(_SG_TARGET_MACOS) +_SOKOL_PRIVATE MTLSamplerBorderColor _sg_mtl_border_color(sg_border_color c) { + switch (c) { + case SG_BORDERCOLOR_TRANSPARENT_BLACK: return MTLSamplerBorderColorTransparentBlack; + case SG_BORDERCOLOR_OPAQUE_BLACK: return MTLSamplerBorderColorOpaqueBlack; + case SG_BORDERCOLOR_OPAQUE_WHITE: return MTLSamplerBorderColorOpaqueWhite; + default: SOKOL_UNREACHABLE; return (MTLSamplerBorderColor)0; + } +} +#endif + +_SOKOL_PRIVATE MTLSamplerMinMagFilter _sg_mtl_minmag_filter(sg_filter f) { + switch (f) { + case SG_FILTER_NEAREST: + case SG_FILTER_NEAREST_MIPMAP_NEAREST: + case SG_FILTER_NEAREST_MIPMAP_LINEAR: + return MTLSamplerMinMagFilterNearest; + case SG_FILTER_LINEAR: + case SG_FILTER_LINEAR_MIPMAP_NEAREST: + case SG_FILTER_LINEAR_MIPMAP_LINEAR: + return MTLSamplerMinMagFilterLinear; + default: + SOKOL_UNREACHABLE; return (MTLSamplerMinMagFilter)0; + } +} + +_SOKOL_PRIVATE MTLSamplerMipFilter _sg_mtl_mip_filter(sg_filter f) { + switch (f) { + case SG_FILTER_NEAREST: + case SG_FILTER_LINEAR: + return MTLSamplerMipFilterNotMipmapped; + case SG_FILTER_NEAREST_MIPMAP_NEAREST: + case SG_FILTER_LINEAR_MIPMAP_NEAREST: + return MTLSamplerMipFilterNearest; + case SG_FILTER_NEAREST_MIPMAP_LINEAR: + case SG_FILTER_LINEAR_MIPMAP_LINEAR: + return MTLSamplerMipFilterLinear; + default: + SOKOL_UNREACHABLE; return (MTLSamplerMipFilter)0; + } +} + +/*-- a pool for all Metal resource objects, with deferred release queue -------*/ + +_SOKOL_PRIVATE void _sg_mtl_init_pool(const sg_desc* desc) { + _sg.mtl.idpool.num_slots = 2 * + ( + 2 * desc->buffer_pool_size + + 5 * desc->image_pool_size + + 4 * desc->shader_pool_size + + 2 * desc->pipeline_pool_size + + desc->pass_pool_size + ); + _sg.mtl.idpool.pool = [NSMutableArray arrayWithCapacity:(NSUInteger)_sg.mtl.idpool.num_slots]; + _SG_OBJC_RETAIN(_sg.mtl.idpool.pool); + NSNull* null = [NSNull null]; + for (int i = 0; i < _sg.mtl.idpool.num_slots; i++) { + [_sg.mtl.idpool.pool addObject:null]; + } + SOKOL_ASSERT([_sg.mtl.idpool.pool count] == (NSUInteger)_sg.mtl.idpool.num_slots); + /* a queue of currently free slot indices */ + _sg.mtl.idpool.free_queue_top = 0; + _sg.mtl.idpool.free_queue = (int*)_sg_malloc_clear((size_t)_sg.mtl.idpool.num_slots * sizeof(int)); + /* pool slot 0 is reserved! */ + for (int i = _sg.mtl.idpool.num_slots-1; i >= 1; i--) { + _sg.mtl.idpool.free_queue[_sg.mtl.idpool.free_queue_top++] = i; + } + /* a circular queue which holds release items (frame index + when a resource is to be released, and the resource's + pool index + */ + _sg.mtl.idpool.release_queue_front = 0; + _sg.mtl.idpool.release_queue_back = 0; + _sg.mtl.idpool.release_queue = (_sg_mtl_release_item_t*)_sg_malloc_clear((size_t)_sg.mtl.idpool.num_slots * sizeof(_sg_mtl_release_item_t)); + for (int i = 0; i < _sg.mtl.idpool.num_slots; i++) { + _sg.mtl.idpool.release_queue[i].frame_index = 0; + _sg.mtl.idpool.release_queue[i].slot_index = _SG_MTL_INVALID_SLOT_INDEX; + } +} + +_SOKOL_PRIVATE void _sg_mtl_destroy_pool(void) { + _sg_free(_sg.mtl.idpool.release_queue); _sg.mtl.idpool.release_queue = 0; + _sg_free(_sg.mtl.idpool.free_queue); _sg.mtl.idpool.free_queue = 0; + _SG_OBJC_RELEASE(_sg.mtl.idpool.pool); +} + +/* get a new free resource pool slot */ +_SOKOL_PRIVATE int _sg_mtl_alloc_pool_slot(void) { + SOKOL_ASSERT(_sg.mtl.idpool.free_queue_top > 0); + const int slot_index = _sg.mtl.idpool.free_queue[--_sg.mtl.idpool.free_queue_top]; + SOKOL_ASSERT((slot_index > 0) && (slot_index < _sg.mtl.idpool.num_slots)); + return slot_index; +} + +/* put a free resource pool slot back into the free-queue */ +_SOKOL_PRIVATE void _sg_mtl_free_pool_slot(int slot_index) { + SOKOL_ASSERT(_sg.mtl.idpool.free_queue_top < _sg.mtl.idpool.num_slots); + SOKOL_ASSERT((slot_index > 0) && (slot_index < _sg.mtl.idpool.num_slots)); + _sg.mtl.idpool.free_queue[_sg.mtl.idpool.free_queue_top++] = slot_index; +} + +/* add an MTLResource to the pool, return pool index or 0 if input was 'nil' */ +_SOKOL_PRIVATE int _sg_mtl_add_resource(id res) { + if (nil == res) { + return _SG_MTL_INVALID_SLOT_INDEX; + } + const int slot_index = _sg_mtl_alloc_pool_slot(); + // NOTE: the NSMutableArray will take ownership of its items + SOKOL_ASSERT([NSNull null] == _sg.mtl.idpool.pool[(NSUInteger)slot_index]); + _sg.mtl.idpool.pool[(NSUInteger)slot_index] = res; + return slot_index; +} + +/* mark an MTLResource for release, this will put the resource into the + deferred-release queue, and the resource will then be released N frames later, + the special pool index 0 will be ignored (this means that a nil + value was provided to _sg_mtl_add_resource() +*/ +_SOKOL_PRIVATE void _sg_mtl_release_resource(uint32_t frame_index, int slot_index) { + if (slot_index == _SG_MTL_INVALID_SLOT_INDEX) { + return; + } + SOKOL_ASSERT((slot_index > 0) && (slot_index < _sg.mtl.idpool.num_slots)); + SOKOL_ASSERT([NSNull null] != _sg.mtl.idpool.pool[(NSUInteger)slot_index]); + int release_index = _sg.mtl.idpool.release_queue_front++; + if (_sg.mtl.idpool.release_queue_front >= _sg.mtl.idpool.num_slots) { + /* wrap-around */ + _sg.mtl.idpool.release_queue_front = 0; + } + /* release queue full? */ + SOKOL_ASSERT(_sg.mtl.idpool.release_queue_front != _sg.mtl.idpool.release_queue_back); + SOKOL_ASSERT(0 == _sg.mtl.idpool.release_queue[release_index].frame_index); + const uint32_t safe_to_release_frame_index = frame_index + SG_NUM_INFLIGHT_FRAMES + 1; + _sg.mtl.idpool.release_queue[release_index].frame_index = safe_to_release_frame_index; + _sg.mtl.idpool.release_queue[release_index].slot_index = slot_index; +} + +/* run garbage-collection pass on all resources in the release-queue */ +_SOKOL_PRIVATE void _sg_mtl_garbage_collect(uint32_t frame_index) { + while (_sg.mtl.idpool.release_queue_back != _sg.mtl.idpool.release_queue_front) { + if (frame_index < _sg.mtl.idpool.release_queue[_sg.mtl.idpool.release_queue_back].frame_index) { + /* don't need to check further, release-items past this are too young */ + break; + } + /* safe to release this resource */ + const int slot_index = _sg.mtl.idpool.release_queue[_sg.mtl.idpool.release_queue_back].slot_index; + SOKOL_ASSERT((slot_index > 0) && (slot_index < _sg.mtl.idpool.num_slots)); + /* note: the NSMutableArray takes ownership of its items, assigning an NSNull object will + release the object, no matter if using ARC or not + */ + SOKOL_ASSERT(_sg.mtl.idpool.pool[(NSUInteger)slot_index] != [NSNull null]); + _sg.mtl.idpool.pool[(NSUInteger)slot_index] = [NSNull null]; + /* put the now free pool index back on the free queue */ + _sg_mtl_free_pool_slot(slot_index); + /* reset the release queue slot and advance the back index */ + _sg.mtl.idpool.release_queue[_sg.mtl.idpool.release_queue_back].frame_index = 0; + _sg.mtl.idpool.release_queue[_sg.mtl.idpool.release_queue_back].slot_index = _SG_MTL_INVALID_SLOT_INDEX; + _sg.mtl.idpool.release_queue_back++; + if (_sg.mtl.idpool.release_queue_back >= _sg.mtl.idpool.num_slots) { + /* wrap-around */ + _sg.mtl.idpool.release_queue_back = 0; + } + } +} + +_SOKOL_PRIVATE id _sg_mtl_id(int slot_index) { + return _sg.mtl.idpool.pool[(NSUInteger)slot_index]; +} + +_SOKOL_PRIVATE void _sg_mtl_init_sampler_cache(const sg_desc* desc) { + SOKOL_ASSERT(desc->sampler_cache_size > 0); + _sg_smpcache_init(&_sg.mtl.sampler_cache, desc->sampler_cache_size); +} + +/* destroy the sampler cache, and release all sampler objects */ +_SOKOL_PRIVATE void _sg_mtl_destroy_sampler_cache(uint32_t frame_index) { + SOKOL_ASSERT(_sg.mtl.sampler_cache.items); + SOKOL_ASSERT(_sg.mtl.sampler_cache.num_items <= _sg.mtl.sampler_cache.capacity); + for (int i = 0; i < _sg.mtl.sampler_cache.num_items; i++) { + _sg_mtl_release_resource(frame_index, (int)_sg_smpcache_sampler(&_sg.mtl.sampler_cache, i)); + } + _sg_smpcache_discard(&_sg.mtl.sampler_cache); +} + +/* + create and add an MTLSamplerStateObject and return its resource pool index, + reuse identical sampler state if one exists +*/ +_SOKOL_PRIVATE int _sg_mtl_create_sampler(id mtl_device, const sg_image_desc* img_desc) { + SOKOL_ASSERT(img_desc); + int index = _sg_smpcache_find_item(&_sg.mtl.sampler_cache, img_desc); + if (index >= 0) { + /* reuse existing sampler */ + return (int)_sg_smpcache_sampler(&_sg.mtl.sampler_cache, index); + } + else { + /* create a new Metal sampler state object and add to sampler cache */ + MTLSamplerDescriptor* mtl_desc = [[MTLSamplerDescriptor alloc] init]; + mtl_desc.sAddressMode = _sg_mtl_address_mode(img_desc->wrap_u); + mtl_desc.tAddressMode = _sg_mtl_address_mode(img_desc->wrap_v); + if (SG_IMAGETYPE_3D == img_desc->type) { + mtl_desc.rAddressMode = _sg_mtl_address_mode(img_desc->wrap_w); + } + #if defined(_SG_TARGET_MACOS) + mtl_desc.borderColor = _sg_mtl_border_color(img_desc->border_color); + #endif + mtl_desc.minFilter = _sg_mtl_minmag_filter(img_desc->min_filter); + mtl_desc.magFilter = _sg_mtl_minmag_filter(img_desc->mag_filter); + mtl_desc.mipFilter = _sg_mtl_mip_filter(img_desc->min_filter); + mtl_desc.lodMinClamp = img_desc->min_lod; + mtl_desc.lodMaxClamp = img_desc->max_lod; + mtl_desc.maxAnisotropy = img_desc->max_anisotropy; + mtl_desc.normalizedCoordinates = YES; + id mtl_sampler = [mtl_device newSamplerStateWithDescriptor:mtl_desc]; + _SG_OBJC_RELEASE(mtl_desc); + int sampler_handle = _sg_mtl_add_resource(mtl_sampler); + _SG_OBJC_RELEASE(mtl_sampler); + _sg_smpcache_add_item(&_sg.mtl.sampler_cache, img_desc, (uintptr_t)sampler_handle); + return sampler_handle; + } +} + +_SOKOL_PRIVATE void _sg_mtl_clear_state_cache(void) { + _sg_clear(&_sg.mtl.state_cache, sizeof(_sg.mtl.state_cache)); +} + +/* https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf */ +_SOKOL_PRIVATE void _sg_mtl_init_caps(void) { + #if defined(_SG_TARGET_MACOS) + _sg.backend = SG_BACKEND_METAL_MACOS; + #elif defined(_SG_TARGET_IOS) + #if defined(_SG_TARGET_IOS_SIMULATOR) + _sg.backend = SG_BACKEND_METAL_SIMULATOR; + #else + _sg.backend = SG_BACKEND_METAL_IOS; + #endif + #endif + _sg.features.origin_top_left = true; + #if defined(_SG_TARGET_MACOS) + _sg.features.image_clamp_to_border = true; + #else + _sg.features.image_clamp_to_border = false; + #endif + _sg.features.mrt_independent_blend_state = true; + _sg.features.mrt_independent_write_mask = true; + + #if defined(_SG_TARGET_MACOS) + _sg.limits.max_image_size_2d = 16 * 1024; + _sg.limits.max_image_size_cube = 16 * 1024; + _sg.limits.max_image_size_3d = 2 * 1024; + _sg.limits.max_image_size_array = 16 * 1024; + _sg.limits.max_image_array_layers = 2 * 1024; + #else + /* newer iOS devices support 16k textures */ + _sg.limits.max_image_size_2d = 8 * 1024; + _sg.limits.max_image_size_cube = 8 * 1024; + _sg.limits.max_image_size_3d = 2 * 1024; + _sg.limits.max_image_size_array = 8 * 1024; + _sg.limits.max_image_array_layers = 2 * 1024; + #endif + _sg.limits.max_vertex_attrs = SG_MAX_VERTEX_ATTRIBUTES; + + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_R8]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_R8SN]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_R8UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_R8SI]); + #if defined(_SG_TARGET_MACOS) + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_R16]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_R16SN]); + #else + _sg_pixelformat_sfbr(&_sg.formats[SG_PIXELFORMAT_R16]); + _sg_pixelformat_sfbr(&_sg.formats[SG_PIXELFORMAT_R16SN]); + #endif + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_R16UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_R16SI]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_R16F]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG8]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG8SN]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG8UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG8SI]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_R32UI]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_R32SI]); + #if defined(_SG_TARGET_MACOS) + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_R32F]); + #else + _sg_pixelformat_sbr(&_sg.formats[SG_PIXELFORMAT_R32F]); + #endif + #if defined(_SG_TARGET_MACOS) + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG16]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG16SN]); + #else + _sg_pixelformat_sfbr(&_sg.formats[SG_PIXELFORMAT_RG16]); + _sg_pixelformat_sfbr(&_sg.formats[SG_PIXELFORMAT_RG16SN]); + #endif + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG16UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG16SI]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG16F]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGBA8]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_SRGB8A8]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGBA8SN]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA8UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA8SI]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_BGRA8]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGB10A2]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG11B10F]); + #if defined(_SG_TARGET_MACOS) + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RGB9E5]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG32UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG32SI]); + #else + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGB9E5]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_RG32UI]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_RG32SI]); + #endif + #if defined(_SG_TARGET_MACOS) + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG32F]); + #else + _sg_pixelformat_sbr(&_sg.formats[SG_PIXELFORMAT_RG32F]); + #endif + #if defined(_SG_TARGET_MACOS) + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGBA16]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGBA16SN]); + #else + _sg_pixelformat_sfbr(&_sg.formats[SG_PIXELFORMAT_RGBA16]); + _sg_pixelformat_sfbr(&_sg.formats[SG_PIXELFORMAT_RGBA16SN]); + #endif + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA16UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA16SI]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGBA16F]); + #if defined(_SG_TARGET_MACOS) + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA32UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA32SI]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGBA32F]); + #else + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_RGBA32UI]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_RGBA32SI]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_RGBA32F]); + #endif + _sg_pixelformat_srmd(&_sg.formats[SG_PIXELFORMAT_DEPTH]); + _sg_pixelformat_srmd(&_sg.formats[SG_PIXELFORMAT_DEPTH_STENCIL]); + #if defined(_SG_TARGET_MACOS) + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC1_RGBA]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC2_RGBA]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC3_RGBA]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC4_R]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC4_RSN]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC5_RG]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC5_RGSN]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC6H_RGBF]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC6H_RGBUF]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC7_RGBA]); + #else + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_PVRTC_RGB_2BPP]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_PVRTC_RGB_4BPP]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_PVRTC_RGBA_2BPP]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_PVRTC_RGBA_4BPP]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_ETC2_RGB8]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_ETC2_RGB8A1]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_ETC2_RGBA8]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_ETC2_RG11]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_ETC2_RG11SN]); + #endif +} + +/*-- main Metal backend state and functions ----------------------------------*/ +_SOKOL_PRIVATE void _sg_mtl_setup_backend(const sg_desc* desc) { + /* assume already zero-initialized */ + SOKOL_ASSERT(desc); + SOKOL_ASSERT(desc->context.metal.device); + SOKOL_ASSERT(desc->context.metal.renderpass_descriptor_cb || desc->context.metal.renderpass_descriptor_userdata_cb); + SOKOL_ASSERT(desc->context.metal.drawable_cb || desc->context.metal.drawable_userdata_cb); + SOKOL_ASSERT(desc->uniform_buffer_size > 0); + _sg_mtl_init_pool(desc); + _sg_mtl_init_sampler_cache(desc); + _sg_mtl_clear_state_cache(); + _sg.mtl.valid = true; + _sg.mtl.renderpass_descriptor_cb = desc->context.metal.renderpass_descriptor_cb; + _sg.mtl.renderpass_descriptor_userdata_cb = desc->context.metal.renderpass_descriptor_userdata_cb; + _sg.mtl.drawable_cb = desc->context.metal.drawable_cb; + _sg.mtl.drawable_userdata_cb = desc->context.metal.drawable_userdata_cb; + _sg.mtl.user_data = desc->context.metal.user_data; + _sg.mtl.frame_index = 1; + _sg.mtl.ub_size = desc->uniform_buffer_size; + _sg.mtl.sem = dispatch_semaphore_create(SG_NUM_INFLIGHT_FRAMES); + _sg.mtl.device = (__bridge id) desc->context.metal.device; + _sg.mtl.cmd_queue = [_sg.mtl.device newCommandQueue]; + for (int i = 0; i < SG_NUM_INFLIGHT_FRAMES; i++) { + _sg.mtl.uniform_buffers[i] = [_sg.mtl.device + newBufferWithLength:(NSUInteger)_sg.mtl.ub_size + options:MTLResourceCPUCacheModeWriteCombined|MTLResourceStorageModeShared + ]; + } + _sg_mtl_init_caps(); +} + +_SOKOL_PRIVATE void _sg_mtl_discard_backend(void) { + SOKOL_ASSERT(_sg.mtl.valid); + /* wait for the last frame to finish */ + for (int i = 0; i < SG_NUM_INFLIGHT_FRAMES; i++) { + dispatch_semaphore_wait(_sg.mtl.sem, DISPATCH_TIME_FOREVER); + } + /* semaphore must be "relinquished" before destruction */ + for (int i = 0; i < SG_NUM_INFLIGHT_FRAMES; i++) { + dispatch_semaphore_signal(_sg.mtl.sem); + } + _sg_mtl_destroy_sampler_cache(_sg.mtl.frame_index); + _sg_mtl_garbage_collect(_sg.mtl.frame_index + SG_NUM_INFLIGHT_FRAMES + 2); + _sg_mtl_destroy_pool(); + _sg.mtl.valid = false; + + _SG_OBJC_RELEASE(_sg.mtl.sem); + _SG_OBJC_RELEASE(_sg.mtl.device); + _SG_OBJC_RELEASE(_sg.mtl.cmd_queue); + for (int i = 0; i < SG_NUM_INFLIGHT_FRAMES; i++) { + _SG_OBJC_RELEASE(_sg.mtl.uniform_buffers[i]); + } + /* NOTE: MTLCommandBuffer and MTLRenderCommandEncoder are auto-released */ + _sg.mtl.cmd_buffer = nil; + _sg.mtl.present_cmd_buffer = nil; + _sg.mtl.cmd_encoder = nil; +} + +_SOKOL_PRIVATE void _sg_mtl_bind_uniform_buffers(void) { + SOKOL_ASSERT(nil != _sg.mtl.cmd_encoder); + for (int slot = 0; slot < SG_MAX_SHADERSTAGE_UBS; slot++) { + [_sg.mtl.cmd_encoder + setVertexBuffer:_sg.mtl.uniform_buffers[_sg.mtl.cur_frame_rotate_index] + offset:0 + atIndex:(NSUInteger)slot]; + [_sg.mtl.cmd_encoder + setFragmentBuffer:_sg.mtl.uniform_buffers[_sg.mtl.cur_frame_rotate_index] + offset:0 + atIndex:(NSUInteger)slot]; + } +} + +_SOKOL_PRIVATE void _sg_mtl_reset_state_cache(void) { + _sg_mtl_clear_state_cache(); + + /* need to restore the uniform buffer binding (normally happens in + _sg_mtl_begin_pass() + */ + if (nil != _sg.mtl.cmd_encoder) { + _sg_mtl_bind_uniform_buffers(); + } +} + +_SOKOL_PRIVATE sg_resource_state _sg_mtl_create_context(_sg_context_t* ctx) { + SOKOL_ASSERT(ctx); + _SOKOL_UNUSED(ctx); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_mtl_discard_context(_sg_context_t* ctx) { + SOKOL_ASSERT(ctx); + _SOKOL_UNUSED(ctx); + /* empty */ +} + +_SOKOL_PRIVATE void _sg_mtl_activate_context(_sg_context_t* ctx) { + _SOKOL_UNUSED(ctx); + _sg_mtl_clear_state_cache(); +} + +_SOKOL_PRIVATE sg_resource_state _sg_mtl_create_buffer(_sg_buffer_t* buf, const sg_buffer_desc* desc) { + SOKOL_ASSERT(buf && desc); + _sg_buffer_common_init(&buf->cmn, desc); + const bool injected = (0 != desc->mtl_buffers[0]); + MTLResourceOptions mtl_options = _sg_mtl_buffer_resource_options(buf->cmn.usage); + for (int slot = 0; slot < buf->cmn.num_slots; slot++) { + id mtl_buf; + if (injected) { + SOKOL_ASSERT(desc->mtl_buffers[slot]); + mtl_buf = (__bridge id) desc->mtl_buffers[slot]; + } + else { + if (buf->cmn.usage == SG_USAGE_IMMUTABLE) { + SOKOL_ASSERT(desc->data.ptr); + mtl_buf = [_sg.mtl.device newBufferWithBytes:desc->data.ptr length:(NSUInteger)buf->cmn.size options:mtl_options]; + } + else { + mtl_buf = [_sg.mtl.device newBufferWithLength:(NSUInteger)buf->cmn.size options:mtl_options]; + } + } + buf->mtl.buf[slot] = _sg_mtl_add_resource(mtl_buf); + _SG_OBJC_RELEASE(mtl_buf); + } + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_mtl_discard_buffer(_sg_buffer_t* buf) { + SOKOL_ASSERT(buf); + for (int slot = 0; slot < buf->cmn.num_slots; slot++) { + /* it's valid to call release resource with '0' */ + _sg_mtl_release_resource(_sg.mtl.frame_index, buf->mtl.buf[slot]); + } +} + +_SOKOL_PRIVATE void _sg_mtl_copy_image_data(const _sg_image_t* img, __unsafe_unretained id mtl_tex, const sg_image_data* data) { + const int num_faces = (img->cmn.type == SG_IMAGETYPE_CUBE) ? 6:1; + const int num_slices = (img->cmn.type == SG_IMAGETYPE_ARRAY) ? img->cmn.num_slices : 1; + for (int face_index = 0; face_index < num_faces; face_index++) { + for (int mip_index = 0; mip_index < img->cmn.num_mipmaps; mip_index++) { + SOKOL_ASSERT(data->subimage[face_index][mip_index].ptr); + SOKOL_ASSERT(data->subimage[face_index][mip_index].size > 0); + const uint8_t* data_ptr = (const uint8_t*)data->subimage[face_index][mip_index].ptr; + const int mip_width = _sg_max(img->cmn.width >> mip_index, 1); + const int mip_height = _sg_max(img->cmn.height >> mip_index, 1); + /* special case PVRTC formats: bytePerRow and bytesPerImage must be 0 */ + int bytes_per_row = 0; + int bytes_per_slice = 0; + if (!_sg_mtl_is_pvrtc(img->cmn.pixel_format)) { + bytes_per_row = _sg_row_pitch(img->cmn.pixel_format, mip_width, 1); + bytes_per_slice = _sg_surface_pitch(img->cmn.pixel_format, mip_width, mip_height, 1); + } + /* bytesPerImage special case: https://developer.apple.com/documentation/metal/mtltexture/1515679-replaceregion + + "Supply a nonzero value only when you copy data to a MTLTextureType3D type texture" + */ + MTLRegion region; + int bytes_per_image; + if (img->cmn.type == SG_IMAGETYPE_3D) { + const int mip_depth = _sg_max(img->cmn.num_slices >> mip_index, 1); + region = MTLRegionMake3D(0, 0, 0, (NSUInteger)mip_width, (NSUInteger)mip_height, (NSUInteger)mip_depth); + bytes_per_image = bytes_per_slice; + /* FIXME: apparently the minimal bytes_per_image size for 3D texture + is 4 KByte... somehow need to handle this */ + } + else { + region = MTLRegionMake2D(0, 0, (NSUInteger)mip_width, (NSUInteger)mip_height); + bytes_per_image = 0; + } + + for (int slice_index = 0; slice_index < num_slices; slice_index++) { + const int mtl_slice_index = (img->cmn.type == SG_IMAGETYPE_CUBE) ? face_index : slice_index; + const int slice_offset = slice_index * bytes_per_slice; + SOKOL_ASSERT((slice_offset + bytes_per_slice) <= (int)data->subimage[face_index][mip_index].size); + [mtl_tex replaceRegion:region + mipmapLevel:(NSUInteger)mip_index + slice:(NSUInteger)mtl_slice_index + withBytes:data_ptr + slice_offset + bytesPerRow:(NSUInteger)bytes_per_row + bytesPerImage:(NSUInteger)bytes_per_image]; + } + } + } +} + +/* + FIXME: METAL RESOURCE STORAGE MODE FOR macOS AND iOS + + For immutable textures on macOS, the recommended procedure is to create + a MTLStorageModeManaged texture with the immutable content first, + and then use the GPU to blit the content into a MTLStorageModePrivate + texture before the first use. + + On iOS use the same one-time-blit procedure, but from a + MTLStorageModeShared to a MTLStorageModePrivate texture. + + It probably makes sense to handle this in a separate 'resource manager' + with a recycable pool of blit-source-textures? +*/ + +/* initialize MTLTextureDescritor with common attributes */ +_SOKOL_PRIVATE bool _sg_mtl_init_texdesc_common(MTLTextureDescriptor* mtl_desc, _sg_image_t* img) { + mtl_desc.textureType = _sg_mtl_texture_type(img->cmn.type); + mtl_desc.pixelFormat = _sg_mtl_pixel_format(img->cmn.pixel_format); + if (MTLPixelFormatInvalid == mtl_desc.pixelFormat) { + _SG_ERROR(METAL_TEXTURE_FORMAT_NOT_SUPPORTED); + return false; + } + mtl_desc.width = (NSUInteger)img->cmn.width; + mtl_desc.height = (NSUInteger)img->cmn.height; + if (SG_IMAGETYPE_3D == img->cmn.type) { + mtl_desc.depth = (NSUInteger)img->cmn.num_slices; + } + else { + mtl_desc.depth = 1; + } + mtl_desc.mipmapLevelCount = (NSUInteger)img->cmn.num_mipmaps; + if (SG_IMAGETYPE_ARRAY == img->cmn.type) { + mtl_desc.arrayLength = (NSUInteger)img->cmn.num_slices; + } + else { + mtl_desc.arrayLength = 1; + } + mtl_desc.usage = MTLTextureUsageShaderRead; + if (img->cmn.render_target) { + mtl_desc.usage |= MTLTextureUsageRenderTarget; + } + MTLResourceOptions res_options = 0; + if (img->cmn.usage != SG_USAGE_IMMUTABLE) { + res_options |= MTLResourceCPUCacheModeWriteCombined; + } + #if defined(_SG_TARGET_MACOS) + /* macOS: use managed textures */ + res_options |= MTLResourceStorageModeManaged; + #else + /* iOS: use CPU/GPU shared memory */ + res_options |= MTLResourceStorageModeShared; + #endif + mtl_desc.resourceOptions = res_options; + return true; +} + +/* initialize MTLTextureDescritor with rendertarget attributes */ +_SOKOL_PRIVATE void _sg_mtl_init_texdesc_rt(MTLTextureDescriptor* mtl_desc, _sg_image_t* img) { + SOKOL_ASSERT(img->cmn.render_target); + _SOKOL_UNUSED(img); + /* render targets are only visible to the GPU */ + mtl_desc.resourceOptions = MTLResourceStorageModePrivate; + /* non-MSAA render targets are shader-readable */ + mtl_desc.usage = MTLTextureUsageShaderRead | MTLTextureUsageRenderTarget; +} + +/* initialize MTLTextureDescritor with MSAA attributes */ +_SOKOL_PRIVATE void _sg_mtl_init_texdesc_rt_msaa(MTLTextureDescriptor* mtl_desc, _sg_image_t* img) { + SOKOL_ASSERT(img->cmn.sample_count > 1); + /* render targets are only visible to the GPU */ + mtl_desc.resourceOptions = MTLResourceStorageModePrivate; + /* MSAA render targets are not shader-readable (instead they are resolved) */ + mtl_desc.usage = MTLTextureUsageRenderTarget; + mtl_desc.textureType = MTLTextureType2DMultisample; + mtl_desc.depth = 1; + mtl_desc.arrayLength = 1; + mtl_desc.mipmapLevelCount = 1; + mtl_desc.sampleCount = (NSUInteger)img->cmn.sample_count; +} + +_SOKOL_PRIVATE sg_resource_state _sg_mtl_create_image(_sg_image_t* img, const sg_image_desc* desc) { + SOKOL_ASSERT(img && desc); + _sg_image_common_init(&img->cmn, desc); + const bool injected = (0 != desc->mtl_textures[0]); + const bool msaa = (img->cmn.sample_count > 1); + + /* first initialize all Metal resource pool slots to 'empty' */ + for (int i = 0; i < SG_NUM_INFLIGHT_FRAMES; i++) { + img->mtl.tex[i] = _sg_mtl_add_resource(nil); + } + img->mtl.sampler_state = _sg_mtl_add_resource(nil); + img->mtl.depth_tex = _sg_mtl_add_resource(nil); + img->mtl.msaa_tex = _sg_mtl_add_resource(nil); + + /* initialize a Metal texture descriptor with common attributes */ + MTLTextureDescriptor* mtl_desc = [[MTLTextureDescriptor alloc] init]; + if (!_sg_mtl_init_texdesc_common(mtl_desc, img)) { + _SG_OBJC_RELEASE(mtl_desc); + return SG_RESOURCESTATE_FAILED; + } + + /* special case depth-stencil-buffer? */ + if (_sg_is_valid_rendertarget_depth_format(img->cmn.pixel_format)) { + /* depth-stencil buffer texture must always be a render target */ + SOKOL_ASSERT(img->cmn.render_target); + SOKOL_ASSERT(img->cmn.type == SG_IMAGETYPE_2D); + SOKOL_ASSERT(img->cmn.num_mipmaps == 1); + SOKOL_ASSERT(!injected); + if (msaa) { + _sg_mtl_init_texdesc_rt_msaa(mtl_desc, img); + } + else { + _sg_mtl_init_texdesc_rt(mtl_desc, img); + } + id tex = [_sg.mtl.device newTextureWithDescriptor:mtl_desc]; + SOKOL_ASSERT(nil != tex); + img->mtl.depth_tex = _sg_mtl_add_resource(tex); + _SG_OBJC_RELEASE(tex); + } + else { + /* create the color texture + In case this is a render target without MSAA, add the relevant + render-target descriptor attributes. + In case this is a render target *with* MSAA, the color texture + will serve as MSAA-resolve target (not as render target), and rendering + will go into a separate render target texture of type + MTLTextureType2DMultisample. + */ + if (img->cmn.render_target && !msaa) { + _sg_mtl_init_texdesc_rt(mtl_desc, img); + } + for (int slot = 0; slot < img->cmn.num_slots; slot++) { + id tex; + if (injected) { + SOKOL_ASSERT(desc->mtl_textures[slot]); + tex = (__bridge id) desc->mtl_textures[slot]; + } + else { + tex = [_sg.mtl.device newTextureWithDescriptor:mtl_desc]; + if ((img->cmn.usage == SG_USAGE_IMMUTABLE) && !img->cmn.render_target) { + _sg_mtl_copy_image_data(img, tex, &desc->data); + } + } + img->mtl.tex[slot] = _sg_mtl_add_resource(tex); + _SG_OBJC_RELEASE(tex); + } + + /* if MSAA color render target, create an additional MSAA render-surface texture */ + if (img->cmn.render_target && msaa) { + _sg_mtl_init_texdesc_rt_msaa(mtl_desc, img); + id tex = [_sg.mtl.device newTextureWithDescriptor:mtl_desc]; + img->mtl.msaa_tex = _sg_mtl_add_resource(tex); + _SG_OBJC_RELEASE(tex); + } + + /* create (possibly shared) sampler state */ + img->mtl.sampler_state = _sg_mtl_create_sampler(_sg.mtl.device, desc); + } + _SG_OBJC_RELEASE(mtl_desc); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_mtl_discard_image(_sg_image_t* img) { + SOKOL_ASSERT(img); + /* it's valid to call release resource with a 'null resource' */ + for (int slot = 0; slot < img->cmn.num_slots; slot++) { + _sg_mtl_release_resource(_sg.mtl.frame_index, img->mtl.tex[slot]); + } + _sg_mtl_release_resource(_sg.mtl.frame_index, img->mtl.depth_tex); + _sg_mtl_release_resource(_sg.mtl.frame_index, img->mtl.msaa_tex); + /* NOTE: sampler state objects are shared and not released until shutdown */ +} + +_SOKOL_PRIVATE id _sg_mtl_compile_library(const char* src) { + NSError* err = NULL; + id lib = [_sg.mtl.device + newLibraryWithSource:[NSString stringWithUTF8String:src] + options:nil + error:&err + ]; + if (err) { + _SG_ERROR(METAL_SHADER_COMPILATION_FAILED); + _SG_LOGMSG(METAL_SHADER_COMPILATION_OUTPUT, [err.localizedDescription UTF8String]); + } + return lib; +} + +_SOKOL_PRIVATE id _sg_mtl_library_from_bytecode(const void* ptr, size_t num_bytes) { + NSError* err = NULL; + dispatch_data_t lib_data = dispatch_data_create(ptr, num_bytes, NULL, DISPATCH_DATA_DESTRUCTOR_DEFAULT); + id lib = [_sg.mtl.device newLibraryWithData:lib_data error:&err]; + if (err) { + _SG_ERROR(METAL_SHADER_CREATION_FAILED); + _SG_LOGMSG(METAL_SHADER_COMPILATION_OUTPUT, [err.localizedDescription UTF8String]); + } + _SG_OBJC_RELEASE(lib_data); + return lib; +} + +_SOKOL_PRIVATE sg_resource_state _sg_mtl_create_shader(_sg_shader_t* shd, const sg_shader_desc* desc) { + SOKOL_ASSERT(shd && desc); + + _sg_shader_common_init(&shd->cmn, desc); + + /* create metal library objects and lookup entry functions */ + id vs_lib = nil; + id fs_lib = nil; + id vs_func = nil; + id fs_func = nil; + const char* vs_entry = desc->vs.entry; + const char* fs_entry = desc->fs.entry; + if (desc->vs.bytecode.ptr && desc->fs.bytecode.ptr) { + /* separate byte code provided */ + vs_lib = _sg_mtl_library_from_bytecode(desc->vs.bytecode.ptr, desc->vs.bytecode.size); + fs_lib = _sg_mtl_library_from_bytecode(desc->fs.bytecode.ptr, desc->fs.bytecode.size); + if ((nil == vs_lib) || (nil == fs_lib)) { + goto failed; + } + vs_func = [vs_lib newFunctionWithName:[NSString stringWithUTF8String:vs_entry]]; + fs_func = [fs_lib newFunctionWithName:[NSString stringWithUTF8String:fs_entry]]; + } + else if (desc->vs.source && desc->fs.source) { + /* separate sources provided */ + vs_lib = _sg_mtl_compile_library(desc->vs.source); + fs_lib = _sg_mtl_compile_library(desc->fs.source); + if ((nil == vs_lib) || (nil == fs_lib)) { + goto failed; + } + vs_func = [vs_lib newFunctionWithName:[NSString stringWithUTF8String:vs_entry]]; + fs_func = [fs_lib newFunctionWithName:[NSString stringWithUTF8String:fs_entry]]; + } + else { + goto failed; + } + if (nil == vs_func) { + _SG_ERROR(METAL_VERTEX_SHADER_ENTRY_NOT_FOUND); + goto failed; + } + if (nil == fs_func) { + _SG_ERROR(METAL_FRAGMENT_SHADER_ENTRY_NOT_FOUND); + goto failed; + } + /* it is legal to call _sg_mtl_add_resource with a nil value, this will return a special 0xFFFFFFFF index */ + shd->mtl.stage[SG_SHADERSTAGE_VS].mtl_lib = _sg_mtl_add_resource(vs_lib); + _SG_OBJC_RELEASE(vs_lib); + shd->mtl.stage[SG_SHADERSTAGE_FS].mtl_lib = _sg_mtl_add_resource(fs_lib); + _SG_OBJC_RELEASE(fs_lib); + shd->mtl.stage[SG_SHADERSTAGE_VS].mtl_func = _sg_mtl_add_resource(vs_func); + _SG_OBJC_RELEASE(vs_func); + shd->mtl.stage[SG_SHADERSTAGE_FS].mtl_func = _sg_mtl_add_resource(fs_func); + _SG_OBJC_RELEASE(fs_func); + return SG_RESOURCESTATE_VALID; +failed: + if (vs_lib != nil) { + _SG_OBJC_RELEASE(vs_lib); + } + if (fs_lib != nil) { + _SG_OBJC_RELEASE(fs_lib); + } + if (vs_func != nil) { + _SG_OBJC_RELEASE(vs_func); + } + if (fs_func != nil) { + _SG_OBJC_RELEASE(fs_func); + } + return SG_RESOURCESTATE_FAILED; +} + +_SOKOL_PRIVATE void _sg_mtl_discard_shader(_sg_shader_t* shd) { + SOKOL_ASSERT(shd); + /* it is valid to call _sg_mtl_release_resource with a 'null resource' */ + _sg_mtl_release_resource(_sg.mtl.frame_index, shd->mtl.stage[SG_SHADERSTAGE_VS].mtl_func); + _sg_mtl_release_resource(_sg.mtl.frame_index, shd->mtl.stage[SG_SHADERSTAGE_VS].mtl_lib); + _sg_mtl_release_resource(_sg.mtl.frame_index, shd->mtl.stage[SG_SHADERSTAGE_FS].mtl_func); + _sg_mtl_release_resource(_sg.mtl.frame_index, shd->mtl.stage[SG_SHADERSTAGE_FS].mtl_lib); +} + +_SOKOL_PRIVATE sg_resource_state _sg_mtl_create_pipeline(_sg_pipeline_t* pip, _sg_shader_t* shd, const sg_pipeline_desc* desc) { + SOKOL_ASSERT(pip && shd && desc); + SOKOL_ASSERT(desc->shader.id == shd->slot.id); + + pip->shader = shd; + _sg_pipeline_common_init(&pip->cmn, desc); + + sg_primitive_type prim_type = desc->primitive_type; + pip->mtl.prim_type = _sg_mtl_primitive_type(prim_type); + pip->mtl.index_size = _sg_mtl_index_size(pip->cmn.index_type); + if (SG_INDEXTYPE_NONE != pip->cmn.index_type) { + pip->mtl.index_type = _sg_mtl_index_type(pip->cmn.index_type); + } + pip->mtl.cull_mode = _sg_mtl_cull_mode(desc->cull_mode); + pip->mtl.winding = _sg_mtl_winding(desc->face_winding); + pip->mtl.stencil_ref = desc->stencil.ref; + + /* create vertex-descriptor */ + MTLVertexDescriptor* vtx_desc = [MTLVertexDescriptor vertexDescriptor]; + for (NSUInteger attr_index = 0; attr_index < SG_MAX_VERTEX_ATTRIBUTES; attr_index++) { + const sg_vertex_attr_desc* a_desc = &desc->layout.attrs[attr_index]; + if (a_desc->format == SG_VERTEXFORMAT_INVALID) { + break; + } + SOKOL_ASSERT(a_desc->buffer_index < SG_MAX_SHADERSTAGE_BUFFERS); + vtx_desc.attributes[attr_index].format = _sg_mtl_vertex_format(a_desc->format); + vtx_desc.attributes[attr_index].offset = (NSUInteger)a_desc->offset; + vtx_desc.attributes[attr_index].bufferIndex = (NSUInteger)(a_desc->buffer_index + SG_MAX_SHADERSTAGE_UBS); + pip->cmn.vertex_layout_valid[a_desc->buffer_index] = true; + } + for (NSUInteger layout_index = 0; layout_index < SG_MAX_SHADERSTAGE_BUFFERS; layout_index++) { + if (pip->cmn.vertex_layout_valid[layout_index]) { + const sg_buffer_layout_desc* l_desc = &desc->layout.buffers[layout_index]; + const NSUInteger mtl_vb_slot = layout_index + SG_MAX_SHADERSTAGE_UBS; + SOKOL_ASSERT(l_desc->stride > 0); + vtx_desc.layouts[mtl_vb_slot].stride = (NSUInteger)l_desc->stride; + vtx_desc.layouts[mtl_vb_slot].stepFunction = _sg_mtl_step_function(l_desc->step_func); + vtx_desc.layouts[mtl_vb_slot].stepRate = (NSUInteger)l_desc->step_rate; + if (SG_VERTEXSTEP_PER_INSTANCE == l_desc->step_func) { + // NOTE: not actually used in _sg_mtl_draw() + pip->cmn.use_instanced_draw = true; + } + } + } + + /* render-pipeline descriptor */ + MTLRenderPipelineDescriptor* rp_desc = [[MTLRenderPipelineDescriptor alloc] init]; + rp_desc.vertexDescriptor = vtx_desc; + SOKOL_ASSERT(shd->mtl.stage[SG_SHADERSTAGE_VS].mtl_func != _SG_MTL_INVALID_SLOT_INDEX); + rp_desc.vertexFunction = _sg_mtl_id(shd->mtl.stage[SG_SHADERSTAGE_VS].mtl_func); + SOKOL_ASSERT(shd->mtl.stage[SG_SHADERSTAGE_FS].mtl_func != _SG_MTL_INVALID_SLOT_INDEX); + rp_desc.fragmentFunction = _sg_mtl_id(shd->mtl.stage[SG_SHADERSTAGE_FS].mtl_func); + rp_desc.rasterSampleCount = (NSUInteger)desc->sample_count; + rp_desc.alphaToCoverageEnabled = desc->alpha_to_coverage_enabled; + rp_desc.alphaToOneEnabled = NO; + rp_desc.rasterizationEnabled = YES; + rp_desc.depthAttachmentPixelFormat = _sg_mtl_pixel_format(desc->depth.pixel_format); + if (desc->depth.pixel_format == SG_PIXELFORMAT_DEPTH_STENCIL) { + rp_desc.stencilAttachmentPixelFormat = _sg_mtl_pixel_format(desc->depth.pixel_format); + } + /* FIXME: this only works on macOS 10.13! + for (int i = 0; i < (SG_MAX_SHADERSTAGE_UBS+SG_MAX_SHADERSTAGE_BUFFERS); i++) { + rp_desc.vertexBuffers[i].mutability = MTLMutabilityImmutable; + } + for (int i = 0; i < SG_MAX_SHADERSTAGE_UBS; i++) { + rp_desc.fragmentBuffers[i].mutability = MTLMutabilityImmutable; + } + */ + for (NSUInteger i = 0; i < (NSUInteger)desc->color_count; i++) { + SOKOL_ASSERT(i < SG_MAX_COLOR_ATTACHMENTS); + const sg_color_state* cs = &desc->colors[i]; + rp_desc.colorAttachments[i].pixelFormat = _sg_mtl_pixel_format(cs->pixel_format); + rp_desc.colorAttachments[i].writeMask = _sg_mtl_color_write_mask(cs->write_mask); + rp_desc.colorAttachments[i].blendingEnabled = cs->blend.enabled; + rp_desc.colorAttachments[i].alphaBlendOperation = _sg_mtl_blend_op(cs->blend.op_alpha); + rp_desc.colorAttachments[i].rgbBlendOperation = _sg_mtl_blend_op(cs->blend.op_rgb); + rp_desc.colorAttachments[i].destinationAlphaBlendFactor = _sg_mtl_blend_factor(cs->blend.dst_factor_alpha); + rp_desc.colorAttachments[i].destinationRGBBlendFactor = _sg_mtl_blend_factor(cs->blend.dst_factor_rgb); + rp_desc.colorAttachments[i].sourceAlphaBlendFactor = _sg_mtl_blend_factor(cs->blend.src_factor_alpha); + rp_desc.colorAttachments[i].sourceRGBBlendFactor = _sg_mtl_blend_factor(cs->blend.src_factor_rgb); + } + NSError* err = NULL; + id mtl_rps = [_sg.mtl.device newRenderPipelineStateWithDescriptor:rp_desc error:&err]; + _SG_OBJC_RELEASE(rp_desc); + if (nil == mtl_rps) { + SOKOL_ASSERT(err); + _SG_ERROR(METAL_CREATE_RPS_FAILED); + _SG_LOGMSG(METAL_CREATE_RPS_OUTPUT, [err.localizedDescription UTF8String]); + return SG_RESOURCESTATE_FAILED; + } + + /* depth-stencil-state */ + MTLDepthStencilDescriptor* ds_desc = [[MTLDepthStencilDescriptor alloc] init]; + ds_desc.depthCompareFunction = _sg_mtl_compare_func(desc->depth.compare); + ds_desc.depthWriteEnabled = desc->depth.write_enabled; + if (desc->stencil.enabled) { + const sg_stencil_face_state* sb = &desc->stencil.back; + ds_desc.backFaceStencil = [[MTLStencilDescriptor alloc] init]; + ds_desc.backFaceStencil.stencilFailureOperation = _sg_mtl_stencil_op(sb->fail_op); + ds_desc.backFaceStencil.depthFailureOperation = _sg_mtl_stencil_op(sb->depth_fail_op); + ds_desc.backFaceStencil.depthStencilPassOperation = _sg_mtl_stencil_op(sb->pass_op); + ds_desc.backFaceStencil.stencilCompareFunction = _sg_mtl_compare_func(sb->compare); + ds_desc.backFaceStencil.readMask = desc->stencil.read_mask; + ds_desc.backFaceStencil.writeMask = desc->stencil.write_mask; + const sg_stencil_face_state* sf = &desc->stencil.front; + ds_desc.frontFaceStencil = [[MTLStencilDescriptor alloc] init]; + ds_desc.frontFaceStencil.stencilFailureOperation = _sg_mtl_stencil_op(sf->fail_op); + ds_desc.frontFaceStencil.depthFailureOperation = _sg_mtl_stencil_op(sf->depth_fail_op); + ds_desc.frontFaceStencil.depthStencilPassOperation = _sg_mtl_stencil_op(sf->pass_op); + ds_desc.frontFaceStencil.stencilCompareFunction = _sg_mtl_compare_func(sf->compare); + ds_desc.frontFaceStencil.readMask = desc->stencil.read_mask; + ds_desc.frontFaceStencil.writeMask = desc->stencil.write_mask; + } + // FIXME: can this actually fail? + id mtl_dss = [_sg.mtl.device newDepthStencilStateWithDescriptor:ds_desc]; + _SG_OBJC_RELEASE(ds_desc); + pip->mtl.rps = _sg_mtl_add_resource(mtl_rps); + _SG_OBJC_RELEASE(mtl_rps); + pip->mtl.dss = _sg_mtl_add_resource(mtl_dss); + _SG_OBJC_RELEASE(mtl_dss); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_mtl_discard_pipeline(_sg_pipeline_t* pip) { + SOKOL_ASSERT(pip); + /* it's valid to call release resource with a 'null resource' */ + _sg_mtl_release_resource(_sg.mtl.frame_index, pip->mtl.rps); + _sg_mtl_release_resource(_sg.mtl.frame_index, pip->mtl.dss); +} + +_SOKOL_PRIVATE sg_resource_state _sg_mtl_create_pass(_sg_pass_t* pass, _sg_image_t** att_images, const sg_pass_desc* desc) { + SOKOL_ASSERT(pass && desc); + SOKOL_ASSERT(att_images && att_images[0]); + + _sg_pass_common_init(&pass->cmn, desc); + + /* copy image pointers */ + const sg_pass_attachment_desc* att_desc; + for (int i = 0; i < pass->cmn.num_color_atts; i++) { + att_desc = &desc->color_attachments[i]; + if (att_desc->image.id != SG_INVALID_ID) { + SOKOL_ASSERT(att_desc->image.id != SG_INVALID_ID); + SOKOL_ASSERT(0 == pass->mtl.color_atts[i].image); + SOKOL_ASSERT(att_images[i] && (att_images[i]->slot.id == att_desc->image.id)); + SOKOL_ASSERT(_sg_is_valid_rendertarget_color_format(att_images[i]->cmn.pixel_format)); + pass->mtl.color_atts[i].image = att_images[i]; + } + } + SOKOL_ASSERT(0 == pass->mtl.ds_att.image); + att_desc = &desc->depth_stencil_attachment; + if (att_desc->image.id != SG_INVALID_ID) { + const int ds_img_index = SG_MAX_COLOR_ATTACHMENTS; + SOKOL_ASSERT(att_images[ds_img_index] && (att_images[ds_img_index]->slot.id == att_desc->image.id)); + SOKOL_ASSERT(_sg_is_valid_rendertarget_depth_format(att_images[ds_img_index]->cmn.pixel_format)); + pass->mtl.ds_att.image = att_images[ds_img_index]; + } + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_mtl_discard_pass(_sg_pass_t* pass) { + SOKOL_ASSERT(pass); + _SOKOL_UNUSED(pass); +} + +_SOKOL_PRIVATE _sg_image_t* _sg_mtl_pass_color_image(const _sg_pass_t* pass, int index) { + SOKOL_ASSERT(pass && (index >= 0) && (index < SG_MAX_COLOR_ATTACHMENTS)); + /* NOTE: may return null */ + return pass->mtl.color_atts[index].image; +} + +_SOKOL_PRIVATE _sg_image_t* _sg_mtl_pass_ds_image(const _sg_pass_t* pass) { + /* NOTE: may return null */ + SOKOL_ASSERT(pass); + return pass->mtl.ds_att.image; +} + +_SOKOL_PRIVATE void _sg_mtl_begin_pass(_sg_pass_t* pass, const sg_pass_action* action, int w, int h) { + SOKOL_ASSERT(action); + SOKOL_ASSERT(!_sg.mtl.in_pass); + SOKOL_ASSERT(_sg.mtl.cmd_queue); + SOKOL_ASSERT(nil == _sg.mtl.cmd_encoder); + SOKOL_ASSERT(_sg.mtl.renderpass_descriptor_cb || _sg.mtl.renderpass_descriptor_userdata_cb); + _sg.mtl.in_pass = true; + _sg.mtl.cur_width = w; + _sg.mtl.cur_height = h; + _sg_mtl_clear_state_cache(); + + /* + if this is the first pass in the frame, create command buffers + + NOTE: we're creating two command buffers here, one with unretained references + for storing the regular commands, and one with retained references for + storing the presentDrawable call (this needs to hold on the drawable until + presentation has happened - and the easiest way to do this is to let the + command buffer manage the lifetime of the drawable). + + Also see: https://github.com/floooh/sokol/issues/762 + */ + if (nil == _sg.mtl.cmd_buffer) { + SOKOL_ASSERT(nil == _sg.mtl.present_cmd_buffer); + /* block until the oldest frame in flight has finished */ + dispatch_semaphore_wait(_sg.mtl.sem, DISPATCH_TIME_FOREVER); + _sg.mtl.cmd_buffer = [_sg.mtl.cmd_queue commandBufferWithUnretainedReferences]; + _sg.mtl.present_cmd_buffer = [_sg.mtl.cmd_queue commandBuffer]; + [_sg.mtl.cmd_buffer enqueue]; + [_sg.mtl.present_cmd_buffer enqueue]; + [_sg.mtl.present_cmd_buffer addCompletedHandler:^(id cmd_buf) { + // NOTE: this code is called on a different thread! + _SOKOL_UNUSED(cmd_buf); + dispatch_semaphore_signal(_sg.mtl.sem); + }]; + } + + /* if this is first pass in frame, get uniform buffer base pointer */ + if (0 == _sg.mtl.cur_ub_base_ptr) { + _sg.mtl.cur_ub_base_ptr = (uint8_t*)[_sg.mtl.uniform_buffers[_sg.mtl.cur_frame_rotate_index] contents]; + } + + /* initialize a render pass descriptor */ + MTLRenderPassDescriptor* pass_desc = nil; + if (pass) { + /* offscreen render pass */ + pass_desc = [MTLRenderPassDescriptor renderPassDescriptor]; + } + else { + /* default render pass, call user-provided callback to provide render pass descriptor */ + if (_sg.mtl.renderpass_descriptor_cb) { + pass_desc = (__bridge MTLRenderPassDescriptor*) _sg.mtl.renderpass_descriptor_cb(); + } + else { + pass_desc = (__bridge MTLRenderPassDescriptor*) _sg.mtl.renderpass_descriptor_userdata_cb(_sg.mtl.user_data); + } + + } + if (pass_desc) { + _sg.mtl.pass_valid = true; + } + else { + /* default pass descriptor will not be valid if window is minimized, + don't do any rendering in this case */ + _sg.mtl.pass_valid = false; + return; + } + if (pass) { + /* setup pass descriptor for offscreen rendering */ + SOKOL_ASSERT(pass->slot.state == SG_RESOURCESTATE_VALID); + for (NSUInteger i = 0; i < (NSUInteger)pass->cmn.num_color_atts; i++) { + const _sg_pass_attachment_t* cmn_att = &pass->cmn.color_atts[i]; + const _sg_mtl_attachment_t* mtl_att = &pass->mtl.color_atts[i]; + const _sg_image_t* att_img = mtl_att->image; + SOKOL_ASSERT(att_img->slot.state == SG_RESOURCESTATE_VALID); + SOKOL_ASSERT(att_img->slot.id == cmn_att->image_id.id); + const bool is_msaa = (att_img->cmn.sample_count > 1); + pass_desc.colorAttachments[i].loadAction = _sg_mtl_load_action(action->colors[i].action); + pass_desc.colorAttachments[i].storeAction = is_msaa ? MTLStoreActionMultisampleResolve : MTLStoreActionStore; + sg_color c = action->colors[i].value; + pass_desc.colorAttachments[i].clearColor = MTLClearColorMake(c.r, c.g, c.b, c.a); + if (is_msaa) { + SOKOL_ASSERT(att_img->mtl.msaa_tex != _SG_MTL_INVALID_SLOT_INDEX); + SOKOL_ASSERT(att_img->mtl.tex[mtl_att->image->cmn.active_slot] != _SG_MTL_INVALID_SLOT_INDEX); + pass_desc.colorAttachments[i].texture = _sg_mtl_id(att_img->mtl.msaa_tex); + pass_desc.colorAttachments[i].resolveTexture = _sg_mtl_id(att_img->mtl.tex[att_img->cmn.active_slot]); + pass_desc.colorAttachments[i].resolveLevel = (NSUInteger)cmn_att->mip_level; + switch (att_img->cmn.type) { + case SG_IMAGETYPE_CUBE: + case SG_IMAGETYPE_ARRAY: + pass_desc.colorAttachments[i].resolveSlice = (NSUInteger)cmn_att->slice; + break; + case SG_IMAGETYPE_3D: + pass_desc.colorAttachments[i].resolveDepthPlane = (NSUInteger)cmn_att->slice; + break; + default: break; + } + } + else { + SOKOL_ASSERT(att_img->mtl.tex[att_img->cmn.active_slot] != _SG_MTL_INVALID_SLOT_INDEX); + pass_desc.colorAttachments[i].texture = _sg_mtl_id(att_img->mtl.tex[att_img->cmn.active_slot]); + pass_desc.colorAttachments[i].level = (NSUInteger)cmn_att->mip_level; + switch (att_img->cmn.type) { + case SG_IMAGETYPE_CUBE: + case SG_IMAGETYPE_ARRAY: + pass_desc.colorAttachments[i].slice = (NSUInteger)cmn_att->slice; + break; + case SG_IMAGETYPE_3D: + pass_desc.colorAttachments[i].depthPlane = (NSUInteger)cmn_att->slice; + break; + default: break; + } + } + } + const _sg_image_t* ds_att_img = pass->mtl.ds_att.image; + if (0 != ds_att_img) { + SOKOL_ASSERT(ds_att_img->slot.state == SG_RESOURCESTATE_VALID); + SOKOL_ASSERT(ds_att_img->slot.id == pass->cmn.ds_att.image_id.id); + SOKOL_ASSERT(ds_att_img->mtl.depth_tex != _SG_MTL_INVALID_SLOT_INDEX); + pass_desc.depthAttachment.texture = _sg_mtl_id(ds_att_img->mtl.depth_tex); + pass_desc.depthAttachment.loadAction = _sg_mtl_load_action(action->depth.action); + pass_desc.depthAttachment.storeAction = MTLStoreActionStore; + pass_desc.depthAttachment.clearDepth = action->depth.value; + if (_sg_is_depth_stencil_format(ds_att_img->cmn.pixel_format)) { + pass_desc.stencilAttachment.texture = _sg_mtl_id(ds_att_img->mtl.depth_tex); + pass_desc.stencilAttachment.loadAction = _sg_mtl_load_action(action->stencil.action); + pass_desc.stencilAttachment.storeAction = MTLStoreActionStore; + pass_desc.stencilAttachment.clearStencil = action->stencil.value; + } + } + } + else { + /* setup pass descriptor for default rendering */ + pass_desc.colorAttachments[0].loadAction = _sg_mtl_load_action(action->colors[0].action); + sg_color c = action->colors[0].value; + pass_desc.colorAttachments[0].clearColor = MTLClearColorMake(c.r, c.g, c.b, c.a); + pass_desc.depthAttachment.loadAction = _sg_mtl_load_action(action->depth.action); + pass_desc.depthAttachment.clearDepth = action->depth.value; + pass_desc.stencilAttachment.loadAction = _sg_mtl_load_action(action->stencil.action); + pass_desc.stencilAttachment.clearStencil = action->stencil.value; + } + + /* create a render command encoder, this might return nil if window is minimized */ + _sg.mtl.cmd_encoder = [_sg.mtl.cmd_buffer renderCommandEncoderWithDescriptor:pass_desc]; + if (nil == _sg.mtl.cmd_encoder) { + _sg.mtl.pass_valid = false; + return; + } + + /* bind the global uniform buffer, this only happens once per pass */ + _sg_mtl_bind_uniform_buffers(); +} + +_SOKOL_PRIVATE void _sg_mtl_end_pass(void) { + SOKOL_ASSERT(_sg.mtl.in_pass); + _sg.mtl.in_pass = false; + _sg.mtl.pass_valid = false; + if (nil != _sg.mtl.cmd_encoder) { + [_sg.mtl.cmd_encoder endEncoding]; + /* NOTE: MTLRenderCommandEncoder is autoreleased */ + _sg.mtl.cmd_encoder = nil; + } +} + +_SOKOL_PRIVATE void _sg_mtl_commit(void) { + SOKOL_ASSERT(!_sg.mtl.in_pass); + SOKOL_ASSERT(!_sg.mtl.pass_valid); + SOKOL_ASSERT(_sg.mtl.drawable_cb || _sg.mtl.drawable_userdata_cb); + SOKOL_ASSERT(nil == _sg.mtl.cmd_encoder); + SOKOL_ASSERT(nil != _sg.mtl.cmd_buffer); + SOKOL_ASSERT(nil != _sg.mtl.present_cmd_buffer); + + /* present, commit and signal semaphore when done */ + id cur_drawable = nil; + if (_sg.mtl.drawable_cb) { + cur_drawable = (__bridge id) _sg.mtl.drawable_cb(); + } + else { + cur_drawable = (__bridge id) _sg.mtl.drawable_userdata_cb(_sg.mtl.user_data); + } + if (nil != cur_drawable) { + [_sg.mtl.present_cmd_buffer presentDrawable:cur_drawable]; + } + [_sg.mtl.cmd_buffer commit]; + [_sg.mtl.present_cmd_buffer commit]; + + /* garbage-collect resources pending for release */ + _sg_mtl_garbage_collect(_sg.mtl.frame_index); + + /* rotate uniform buffer slot */ + if (++_sg.mtl.cur_frame_rotate_index >= SG_NUM_INFLIGHT_FRAMES) { + _sg.mtl.cur_frame_rotate_index = 0; + } + _sg.mtl.frame_index++; + _sg.mtl.cur_ub_offset = 0; + _sg.mtl.cur_ub_base_ptr = 0; + /* NOTE: MTLCommandBuffer is autoreleased */ + _sg.mtl.cmd_buffer = nil; + _sg.mtl.present_cmd_buffer = nil; +} + +_SOKOL_PRIVATE void _sg_mtl_apply_viewport(int x, int y, int w, int h, bool origin_top_left) { + SOKOL_ASSERT(_sg.mtl.in_pass); + if (!_sg.mtl.pass_valid) { + return; + } + SOKOL_ASSERT(nil != _sg.mtl.cmd_encoder); + MTLViewport vp; + vp.originX = (double) x; + vp.originY = (double) (origin_top_left ? y : (_sg.mtl.cur_height - (y + h))); + vp.width = (double) w; + vp.height = (double) h; + vp.znear = 0.0; + vp.zfar = 1.0; + [_sg.mtl.cmd_encoder setViewport:vp]; +} + +_SOKOL_PRIVATE void _sg_mtl_apply_scissor_rect(int x, int y, int w, int h, bool origin_top_left) { + SOKOL_ASSERT(_sg.mtl.in_pass); + if (!_sg.mtl.pass_valid) { + return; + } + SOKOL_ASSERT(nil != _sg.mtl.cmd_encoder); + /* clip against framebuffer rect */ + x = _sg_min(_sg_max(0, x), _sg.mtl.cur_width-1); + y = _sg_min(_sg_max(0, y), _sg.mtl.cur_height-1); + if ((x + w) > _sg.mtl.cur_width) { + w = _sg.mtl.cur_width - x; + } + if ((y + h) > _sg.mtl.cur_height) { + h = _sg.mtl.cur_height - y; + } + w = _sg_max(w, 1); + h = _sg_max(h, 1); + + MTLScissorRect r; + r.x = (NSUInteger)x; + r.y = (NSUInteger) (origin_top_left ? y : (_sg.mtl.cur_height - (y + h))); + r.width = (NSUInteger)w; + r.height = (NSUInteger)h; + [_sg.mtl.cmd_encoder setScissorRect:r]; +} + +_SOKOL_PRIVATE void _sg_mtl_apply_pipeline(_sg_pipeline_t* pip) { + SOKOL_ASSERT(pip); + SOKOL_ASSERT(pip->shader && (pip->cmn.shader_id.id == pip->shader->slot.id)); + SOKOL_ASSERT(_sg.mtl.in_pass); + if (!_sg.mtl.pass_valid) { + return; + } + SOKOL_ASSERT(nil != _sg.mtl.cmd_encoder); + + if ((_sg.mtl.state_cache.cur_pipeline != pip) || (_sg.mtl.state_cache.cur_pipeline_id.id != pip->slot.id)) { + _sg.mtl.state_cache.cur_pipeline = pip; + _sg.mtl.state_cache.cur_pipeline_id.id = pip->slot.id; + sg_color c = pip->cmn.blend_color; + [_sg.mtl.cmd_encoder setBlendColorRed:c.r green:c.g blue:c.b alpha:c.a]; + [_sg.mtl.cmd_encoder setCullMode:pip->mtl.cull_mode]; + [_sg.mtl.cmd_encoder setFrontFacingWinding:pip->mtl.winding]; + [_sg.mtl.cmd_encoder setStencilReferenceValue:pip->mtl.stencil_ref]; + [_sg.mtl.cmd_encoder setDepthBias:pip->cmn.depth.bias slopeScale:pip->cmn.depth.bias_slope_scale clamp:pip->cmn.depth.bias_clamp]; + SOKOL_ASSERT(pip->mtl.rps != _SG_MTL_INVALID_SLOT_INDEX); + [_sg.mtl.cmd_encoder setRenderPipelineState:_sg_mtl_id(pip->mtl.rps)]; + SOKOL_ASSERT(pip->mtl.dss != _SG_MTL_INVALID_SLOT_INDEX); + [_sg.mtl.cmd_encoder setDepthStencilState:_sg_mtl_id(pip->mtl.dss)]; + } +} + +_SOKOL_PRIVATE void _sg_mtl_apply_bindings( + _sg_pipeline_t* pip, + _sg_buffer_t** vbs, const int* vb_offsets, int num_vbs, + _sg_buffer_t* ib, int ib_offset, + _sg_image_t** vs_imgs, int num_vs_imgs, + _sg_image_t** fs_imgs, int num_fs_imgs) +{ + _SOKOL_UNUSED(pip); + SOKOL_ASSERT(_sg.mtl.in_pass); + if (!_sg.mtl.pass_valid) { + return; + } + SOKOL_ASSERT(nil != _sg.mtl.cmd_encoder); + + /* store index buffer binding, this will be needed later in sg_draw() */ + _sg.mtl.state_cache.cur_indexbuffer = ib; + _sg.mtl.state_cache.cur_indexbuffer_offset = ib_offset; + if (ib) { + SOKOL_ASSERT(pip->cmn.index_type != SG_INDEXTYPE_NONE); + _sg.mtl.state_cache.cur_indexbuffer_id.id = ib->slot.id; + } + else { + SOKOL_ASSERT(pip->cmn.index_type == SG_INDEXTYPE_NONE); + _sg.mtl.state_cache.cur_indexbuffer_id.id = SG_INVALID_ID; + } + + /* apply vertex buffers */ + NSUInteger slot; + for (slot = 0; slot < (NSUInteger)num_vbs; slot++) { + const _sg_buffer_t* vb = vbs[slot]; + if ((_sg.mtl.state_cache.cur_vertexbuffers[slot] != vb) || + (_sg.mtl.state_cache.cur_vertexbuffer_offsets[slot] != vb_offsets[slot]) || + (_sg.mtl.state_cache.cur_vertexbuffer_ids[slot].id != vb->slot.id)) + { + _sg.mtl.state_cache.cur_vertexbuffers[slot] = vb; + _sg.mtl.state_cache.cur_vertexbuffer_offsets[slot] = vb_offsets[slot]; + _sg.mtl.state_cache.cur_vertexbuffer_ids[slot].id = vb->slot.id; + const NSUInteger mtl_slot = SG_MAX_SHADERSTAGE_UBS + slot; + SOKOL_ASSERT(vb->mtl.buf[vb->cmn.active_slot] != _SG_MTL_INVALID_SLOT_INDEX); + [_sg.mtl.cmd_encoder setVertexBuffer:_sg_mtl_id(vb->mtl.buf[vb->cmn.active_slot]) + offset:(NSUInteger)vb_offsets[slot] + atIndex:mtl_slot]; + } + } + + /* apply vertex shader images */ + for (slot = 0; slot < (NSUInteger)num_vs_imgs; slot++) { + const _sg_image_t* img = vs_imgs[slot]; + if ((_sg.mtl.state_cache.cur_vs_images[slot] != img) || (_sg.mtl.state_cache.cur_vs_image_ids[slot].id != img->slot.id)) { + _sg.mtl.state_cache.cur_vs_images[slot] = img; + _sg.mtl.state_cache.cur_vs_image_ids[slot].id = img->slot.id; + SOKOL_ASSERT(img->mtl.tex[img->cmn.active_slot] != _SG_MTL_INVALID_SLOT_INDEX); + [_sg.mtl.cmd_encoder setVertexTexture:_sg_mtl_id(img->mtl.tex[img->cmn.active_slot]) atIndex:slot]; + SOKOL_ASSERT(img->mtl.sampler_state != _SG_MTL_INVALID_SLOT_INDEX); + [_sg.mtl.cmd_encoder setVertexSamplerState:_sg_mtl_id(img->mtl.sampler_state) atIndex:slot]; + } + } + + /* apply fragment shader images */ + for (slot = 0; slot < (NSUInteger)num_fs_imgs; slot++) { + const _sg_image_t* img = fs_imgs[slot]; + if ((_sg.mtl.state_cache.cur_fs_images[slot] != img) || (_sg.mtl.state_cache.cur_fs_image_ids[slot].id != img->slot.id)) { + _sg.mtl.state_cache.cur_fs_images[slot] = img; + _sg.mtl.state_cache.cur_fs_image_ids[slot].id = img->slot.id; + SOKOL_ASSERT(img->mtl.tex[img->cmn.active_slot] != _SG_MTL_INVALID_SLOT_INDEX); + [_sg.mtl.cmd_encoder setFragmentTexture:_sg_mtl_id(img->mtl.tex[img->cmn.active_slot]) atIndex:slot]; + SOKOL_ASSERT(img->mtl.sampler_state != _SG_MTL_INVALID_SLOT_INDEX); + [_sg.mtl.cmd_encoder setFragmentSamplerState:_sg_mtl_id(img->mtl.sampler_state) atIndex:slot]; + } + } +} + +_SOKOL_PRIVATE void _sg_mtl_apply_uniforms(sg_shader_stage stage_index, int ub_index, const sg_range* data) { + SOKOL_ASSERT(_sg.mtl.in_pass); + if (!_sg.mtl.pass_valid) { + return; + } + SOKOL_ASSERT(nil != _sg.mtl.cmd_encoder); + SOKOL_ASSERT(((size_t)_sg.mtl.cur_ub_offset + data->size) <= (size_t)_sg.mtl.ub_size); + SOKOL_ASSERT((_sg.mtl.cur_ub_offset & (_SG_MTL_UB_ALIGN-1)) == 0); + SOKOL_ASSERT(_sg.mtl.state_cache.cur_pipeline && _sg.mtl.state_cache.cur_pipeline->shader); + SOKOL_ASSERT(_sg.mtl.state_cache.cur_pipeline->slot.id == _sg.mtl.state_cache.cur_pipeline_id.id); + SOKOL_ASSERT(_sg.mtl.state_cache.cur_pipeline->shader->slot.id == _sg.mtl.state_cache.cur_pipeline->cmn.shader_id.id); + SOKOL_ASSERT(ub_index < _sg.mtl.state_cache.cur_pipeline->shader->cmn.stage[stage_index].num_uniform_blocks); + SOKOL_ASSERT(data->size == _sg.mtl.state_cache.cur_pipeline->shader->cmn.stage[stage_index].uniform_blocks[ub_index].size); + + /* copy to global uniform buffer, record offset into cmd encoder, and advance offset */ + uint8_t* dst = &_sg.mtl.cur_ub_base_ptr[_sg.mtl.cur_ub_offset]; + memcpy(dst, data->ptr, data->size); + if (stage_index == SG_SHADERSTAGE_VS) { + [_sg.mtl.cmd_encoder setVertexBufferOffset:(NSUInteger)_sg.mtl.cur_ub_offset atIndex:(NSUInteger)ub_index]; + } + else { + [_sg.mtl.cmd_encoder setFragmentBufferOffset:(NSUInteger)_sg.mtl.cur_ub_offset atIndex:(NSUInteger)ub_index]; + } + _sg.mtl.cur_ub_offset = _sg_roundup(_sg.mtl.cur_ub_offset + (int)data->size, _SG_MTL_UB_ALIGN); +} + +_SOKOL_PRIVATE void _sg_mtl_draw(int base_element, int num_elements, int num_instances) { + SOKOL_ASSERT(_sg.mtl.in_pass); + if (!_sg.mtl.pass_valid) { + return; + } + SOKOL_ASSERT(nil != _sg.mtl.cmd_encoder); + SOKOL_ASSERT(_sg.mtl.state_cache.cur_pipeline && (_sg.mtl.state_cache.cur_pipeline->slot.id == _sg.mtl.state_cache.cur_pipeline_id.id)); + if (SG_INDEXTYPE_NONE != _sg.mtl.state_cache.cur_pipeline->cmn.index_type) { + /* indexed rendering */ + SOKOL_ASSERT(_sg.mtl.state_cache.cur_indexbuffer && (_sg.mtl.state_cache.cur_indexbuffer->slot.id == _sg.mtl.state_cache.cur_indexbuffer_id.id)); + const _sg_buffer_t* ib = _sg.mtl.state_cache.cur_indexbuffer; + SOKOL_ASSERT(ib->mtl.buf[ib->cmn.active_slot] != _SG_MTL_INVALID_SLOT_INDEX); + const NSUInteger index_buffer_offset = (NSUInteger) (_sg.mtl.state_cache.cur_indexbuffer_offset + base_element * _sg.mtl.state_cache.cur_pipeline->mtl.index_size); + [_sg.mtl.cmd_encoder drawIndexedPrimitives:_sg.mtl.state_cache.cur_pipeline->mtl.prim_type + indexCount:(NSUInteger)num_elements + indexType:_sg.mtl.state_cache.cur_pipeline->mtl.index_type + indexBuffer:_sg_mtl_id(ib->mtl.buf[ib->cmn.active_slot]) + indexBufferOffset:index_buffer_offset + instanceCount:(NSUInteger)num_instances]; + } + else { + /* non-indexed rendering */ + [_sg.mtl.cmd_encoder drawPrimitives:_sg.mtl.state_cache.cur_pipeline->mtl.prim_type + vertexStart:(NSUInteger)base_element + vertexCount:(NSUInteger)num_elements + instanceCount:(NSUInteger)num_instances]; + } +} + +_SOKOL_PRIVATE void _sg_mtl_update_buffer(_sg_buffer_t* buf, const sg_range* data) { + SOKOL_ASSERT(buf && data && data->ptr && (data->size > 0)); + if (++buf->cmn.active_slot >= buf->cmn.num_slots) { + buf->cmn.active_slot = 0; + } + __unsafe_unretained id mtl_buf = _sg_mtl_id(buf->mtl.buf[buf->cmn.active_slot]); + void* dst_ptr = [mtl_buf contents]; + memcpy(dst_ptr, data->ptr, data->size); + #if defined(_SG_TARGET_MACOS) + [mtl_buf didModifyRange:NSMakeRange(0, data->size)]; + #endif +} + +_SOKOL_PRIVATE int _sg_mtl_append_buffer(_sg_buffer_t* buf, const sg_range* data, bool new_frame) { + SOKOL_ASSERT(buf && data && data->ptr && (data->size > 0)); + if (new_frame) { + if (++buf->cmn.active_slot >= buf->cmn.num_slots) { + buf->cmn.active_slot = 0; + } + } + __unsafe_unretained id mtl_buf = _sg_mtl_id(buf->mtl.buf[buf->cmn.active_slot]); + uint8_t* dst_ptr = (uint8_t*) [mtl_buf contents]; + dst_ptr += buf->cmn.append_pos; + memcpy(dst_ptr, data->ptr, data->size); + #if defined(_SG_TARGET_MACOS) + [mtl_buf didModifyRange:NSMakeRange((NSUInteger)buf->cmn.append_pos, (NSUInteger)data->size)]; + #endif + /* NOTE: this is a requirement from WebGPU, but we want identical behaviour across all backends */ + return _sg_roundup((int)data->size, 4); +} + +_SOKOL_PRIVATE void _sg_mtl_update_image(_sg_image_t* img, const sg_image_data* data) { + SOKOL_ASSERT(img && data); + if (++img->cmn.active_slot >= img->cmn.num_slots) { + img->cmn.active_slot = 0; + } + __unsafe_unretained id mtl_tex = _sg_mtl_id(img->mtl.tex[img->cmn.active_slot]); + _sg_mtl_copy_image_data(img, mtl_tex, data); +} + +// ██ ██ ███████ ██████ ██████ ██████ ██ ██ ██████ █████ ██████ ██ ██ ███████ ███ ██ ██████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ +// ██ █ ██ █████ ██████ ██ ███ ██████ ██ ██ ██████ ███████ ██ █████ █████ ██ ██ ██ ██ ██ +// ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███ ███ ███████ ██████ ██████ ██ ██████ ██████ ██ ██ ██████ ██ ██ ███████ ██ ████ ██████ +// +// >>webgpu backend +#elif defined(SOKOL_WGPU) + +_SOKOL_PRIVATE WGPUBufferUsageFlags _sg_wgpu_buffer_usage(sg_buffer_type t, sg_usage u) { + WGPUBufferUsageFlags res = 0; + if (SG_BUFFERTYPE_VERTEXBUFFER == t) { + res |= WGPUBufferUsage_Vertex; + } + else { + res |= WGPUBufferUsage_Index; + } + if (SG_USAGE_IMMUTABLE != u) { + res |= WGPUBufferUsage_CopyDst; + } + return res; +} + +_SOKOL_PRIVATE WGPULoadOp _sg_wgpu_load_op(sg_action a) { + switch (a) { + case SG_ACTION_CLEAR: + case SG_ACTION_DONTCARE: + return WGPULoadOp_Clear; + case SG_ACTION_LOAD: + return WGPULoadOp_Load; + default: + SOKOL_UNREACHABLE; + return (WGPULoadOp)0; + } +} + +_SOKOL_PRIVATE WGPUTextureViewDimension _sg_wgpu_tex_viewdim(sg_image_type t) { + switch (t) { + case SG_IMAGETYPE_2D: return WGPUTextureViewDimension_2D; + case SG_IMAGETYPE_CUBE: return WGPUTextureViewDimension_Cube; + case SG_IMAGETYPE_3D: return WGPUTextureViewDimension_3D; + case SG_IMAGETYPE_ARRAY: return WGPUTextureViewDimension_2DArray; + default: SOKOL_UNREACHABLE; return WGPUTextureViewDimension_Force32; + } +} + +_SOKOL_PRIVATE WGPUTextureComponentType _sg_wgpu_tex_comptype(sg_sampler_type t) { + switch (t) { + case SG_SAMPLERTYPE_FLOAT: return WGPUTextureComponentType_Float; + case SG_SAMPLERTYPE_SINT: return WGPUTextureComponentType_Sint; + case SG_SAMPLERTYPE_UINT: return WGPUTextureComponentType_Uint; + default: SOKOL_UNREACHABLE; return WGPUTextureComponentType_Force32; + } +} + +_SOKOL_PRIVATE WGPUTextureDimension _sg_wgpu_tex_dim(sg_image_type t) { + if (SG_IMAGETYPE_3D == t) { + return WGPUTextureDimension_3D; + } + else { + return WGPUTextureDimension_2D; + } +} + +_SOKOL_PRIVATE WGPUAddressMode _sg_wgpu_sampler_addrmode(sg_wrap m) { + switch (m) { + case SG_WRAP_REPEAT: + return WGPUAddressMode_Repeat; + case SG_WRAP_CLAMP_TO_EDGE: + case SG_WRAP_CLAMP_TO_BORDER: + return WGPUAddressMode_ClampToEdge; + case SG_WRAP_MIRRORED_REPEAT: + return WGPUAddressMode_MirrorRepeat; + default: + SOKOL_UNREACHABLE; + return WGPUAddressMode_Force32; + } +} + +_SOKOL_PRIVATE WGPUFilterMode _sg_wgpu_sampler_minmagfilter(sg_filter f) { + switch (f) { + case SG_FILTER_NEAREST: + case SG_FILTER_NEAREST_MIPMAP_NEAREST: + case SG_FILTER_NEAREST_MIPMAP_LINEAR: + return WGPUFilterMode_Nearest; + case SG_FILTER_LINEAR: + case SG_FILTER_LINEAR_MIPMAP_NEAREST: + case SG_FILTER_LINEAR_MIPMAP_LINEAR: + return WGPUFilterMode_Linear; + default: + SOKOL_UNREACHABLE; + return WGPUFilterMode_Force32; + } +} + +_SOKOL_PRIVATE WGPUFilterMode _sg_wgpu_sampler_mipfilter(sg_filter f) { + switch (f) { + case SG_FILTER_NEAREST: + case SG_FILTER_LINEAR: + case SG_FILTER_NEAREST_MIPMAP_NEAREST: + case SG_FILTER_LINEAR_MIPMAP_NEAREST: + return WGPUFilterMode_Nearest; + case SG_FILTER_NEAREST_MIPMAP_LINEAR: + case SG_FILTER_LINEAR_MIPMAP_LINEAR: + return WGPUFilterMode_Linear; + default: + SOKOL_UNREACHABLE; + return WGPUFilterMode_Force32; + } +} + +_SOKOL_PRIVATE WGPUIndexFormat _sg_wgpu_indexformat(sg_index_type t) { + /* NOTE: there's no WGPUIndexFormat_None */ + return (t == SG_INDEXTYPE_UINT16) ? WGPUIndexFormat_Uint16 : WGPUIndexFormat_Uint32; +} + +_SOKOL_PRIVATE WGPUInputStepMode _sg_wgpu_stepmode(sg_vertex_step s) { + return (s == SG_VERTEXSTEP_PER_VERTEX) ? WGPUInputStepMode_Vertex : WGPUInputStepMode_Instance; +} + +_SOKOL_PRIVATE WGPUVertexFormat _sg_wgpu_vertexformat(sg_vertex_format f) { + switch (f) { + case SG_VERTEXFORMAT_FLOAT: return WGPUVertexFormat_Float; + case SG_VERTEXFORMAT_FLOAT2: return WGPUVertexFormat_Float2; + case SG_VERTEXFORMAT_FLOAT3: return WGPUVertexFormat_Float3; + case SG_VERTEXFORMAT_FLOAT4: return WGPUVertexFormat_Float4; + case SG_VERTEXFORMAT_BYTE4: return WGPUVertexFormat_Char4; + case SG_VERTEXFORMAT_BYTE4N: return WGPUVertexFormat_Char4Norm; + case SG_VERTEXFORMAT_UBYTE4: return WGPUVertexFormat_UChar4; + case SG_VERTEXFORMAT_UBYTE4N: return WGPUVertexFormat_UChar4Norm; + case SG_VERTEXFORMAT_SHORT2: return WGPUVertexFormat_Short2; + case SG_VERTEXFORMAT_SHORT2N: return WGPUVertexFormat_Short2Norm; + case SG_VERTEXFORMAT_USHORT2N: return WGPUVertexFormat_UShort2Norm; + case SG_VERTEXFORMAT_SHORT4: return WGPUVertexFormat_Short4; + case SG_VERTEXFORMAT_SHORT4N: return WGPUVertexFormat_Short4Norm; + case SG_VERTEXFORMAT_USHORT4N: return WGPUVertexFormat_UShort4Norm; + case SG_VERTEXFORMAT_HALF2: return WGPUVertexFormat_Half2; + case SG_VERTEXFORMAT_HALF3: return WGPUVertexFormat_Half4; + /* FIXME! UINT10_N2 */ + case SG_VERTEXFORMAT_UINT10_N2: + default: + SOKOL_UNREACHABLE; + return WGPUVertexFormat_Force32; + } +} + +_SOKOL_PRIVATE WGPUPrimitiveTopology _sg_wgpu_topology(sg_primitive_type t) { + switch (t) { + case SG_PRIMITIVETYPE_POINTS: return WGPUPrimitiveTopology_PointList; + case SG_PRIMITIVETYPE_LINES: return WGPUPrimitiveTopology_LineList; + case SG_PRIMITIVETYPE_LINE_STRIP: return WGPUPrimitiveTopology_LineStrip; + case SG_PRIMITIVETYPE_TRIANGLES: return WGPUPrimitiveTopology_TriangleList; + case SG_PRIMITIVETYPE_TRIANGLE_STRIP: return WGPUPrimitiveTopology_TriangleStrip; + default: SOKOL_UNREACHABLE; return WGPUPrimitiveTopology_Force32; + } +} + +_SOKOL_PRIVATE WGPUFrontFace _sg_wgpu_frontface(sg_face_winding fw) { + return (fw == SG_FACEWINDING_CCW) ? WGPUFrontFace_CCW : WGPUFrontFace_CW; +} + +_SOKOL_PRIVATE WGPUCullMode _sg_wgpu_cullmode(sg_cull_mode cm) { + switch (cm) { + case SG_CULLMODE_NONE: return WGPUCullMode_None; + case SG_CULLMODE_FRONT: return WGPUCullMode_Front; + case SG_CULLMODE_BACK: return WGPUCullMode_Back; + default: SOKOL_UNREACHABLE; return WGPUCullMode_Force32; + } +} + +_SOKOL_PRIVATE WGPUTextureFormat _sg_wgpu_textureformat(sg_pixel_format p) { + switch (p) { + case SG_PIXELFORMAT_NONE: return WGPUTextureFormat_Undefined; + case SG_PIXELFORMAT_R8: return WGPUTextureFormat_R8Unorm; + case SG_PIXELFORMAT_R8SN: return WGPUTextureFormat_R8Snorm; + case SG_PIXELFORMAT_R8UI: return WGPUTextureFormat_R8Uint; + case SG_PIXELFORMAT_R8SI: return WGPUTextureFormat_R8Sint; + case SG_PIXELFORMAT_R16UI: return WGPUTextureFormat_R16Uint; + case SG_PIXELFORMAT_R16SI: return WGPUTextureFormat_R16Sint; + case SG_PIXELFORMAT_R16F: return WGPUTextureFormat_R16Float; + case SG_PIXELFORMAT_RG8: return WGPUTextureFormat_RG8Unorm; + case SG_PIXELFORMAT_RG8SN: return WGPUTextureFormat_RG8Snorm; + case SG_PIXELFORMAT_RG8UI: return WGPUTextureFormat_RG8Uint; + case SG_PIXELFORMAT_RG8SI: return WGPUTextureFormat_RG8Sint; + case SG_PIXELFORMAT_R32UI: return WGPUTextureFormat_R32Uint; + case SG_PIXELFORMAT_R32SI: return WGPUTextureFormat_R32Sint; + case SG_PIXELFORMAT_R32F: return WGPUTextureFormat_R32Float; + case SG_PIXELFORMAT_RG16UI: return WGPUTextureFormat_RG16Uint; + case SG_PIXELFORMAT_RG16SI: return WGPUTextureFormat_RG16Sint; + case SG_PIXELFORMAT_RG16F: return WGPUTextureFormat_RG16Float; + case SG_PIXELFORMAT_RGBA8: return WGPUTextureFormat_RGBA8Unorm; + case SG_PIXELFORMAT_RGBA8SN: return WGPUTextureFormat_RGBA8Snorm; + case SG_PIXELFORMAT_RGBA8UI: return WGPUTextureFormat_RGBA8Uint; + case SG_PIXELFORMAT_RGBA8SI: return WGPUTextureFormat_RGBA8Sint; + case SG_PIXELFORMAT_BGRA8: return WGPUTextureFormat_BGRA8Unorm; + case SG_PIXELFORMAT_RGB10A2: return WGPUTextureFormat_RGB10A2Unorm; + case SG_PIXELFORMAT_RG11B10F: return WGPUTextureFormat_RG11B10Float; + case SG_PIXELFORMAT_RG32UI: return WGPUTextureFormat_RG32Uint; + case SG_PIXELFORMAT_RG32SI: return WGPUTextureFormat_RG32Sint; + case SG_PIXELFORMAT_RG32F: return WGPUTextureFormat_RG32Float; + case SG_PIXELFORMAT_RGBA16UI: return WGPUTextureFormat_RGBA16Uint; + case SG_PIXELFORMAT_RGBA16SI: return WGPUTextureFormat_RGBA16Sint; + case SG_PIXELFORMAT_RGBA16F: return WGPUTextureFormat_RGBA16Float; + case SG_PIXELFORMAT_RGBA32UI: return WGPUTextureFormat_RGBA32Uint; + case SG_PIXELFORMAT_RGBA32SI: return WGPUTextureFormat_RGBA32Sint; + case SG_PIXELFORMAT_RGBA32F: return WGPUTextureFormat_RGBA32Float; + case SG_PIXELFORMAT_DEPTH: return WGPUTextureFormat_Depth32Float; + case SG_PIXELFORMAT_DEPTH_STENCIL: return WGPUTextureFormat_Depth24PlusStencil8; + case SG_PIXELFORMAT_BC1_RGBA: return WGPUTextureFormat_BC1RGBAUnorm; + case SG_PIXELFORMAT_BC2_RGBA: return WGPUTextureFormat_BC2RGBAUnorm; + case SG_PIXELFORMAT_BC3_RGBA: return WGPUTextureFormat_BC3RGBAUnorm; + case SG_PIXELFORMAT_BC4_R: return WGPUTextureFormat_BC4RUnorm; + case SG_PIXELFORMAT_BC4_RSN: return WGPUTextureFormat_BC4RSnorm; + case SG_PIXELFORMAT_BC5_RG: return WGPUTextureFormat_BC5RGUnorm; + case SG_PIXELFORMAT_BC5_RGSN: return WGPUTextureFormat_BC5RGSnorm; + case SG_PIXELFORMAT_BC6H_RGBF: return WGPUTextureFormat_BC6HRGBSfloat; + case SG_PIXELFORMAT_BC6H_RGBUF: return WGPUTextureFormat_BC6HRGBUfloat; + case SG_PIXELFORMAT_BC7_RGBA: return WGPUTextureFormat_BC7RGBAUnorm; + + /* NOT SUPPORTED */ + case SG_PIXELFORMAT_R16: + case SG_PIXELFORMAT_R16SN: + case SG_PIXELFORMAT_RG16: + case SG_PIXELFORMAT_RG16SN: + case SG_PIXELFORMAT_RGBA16: + case SG_PIXELFORMAT_RGBA16SN: + case SG_PIXELFORMAT_SRGB8A8: + case SG_PIXELFORMAT_RGB9E5: + case SG_PIXELFORMAT_PVRTC_RGB_2BPP: + case SG_PIXELFORMAT_PVRTC_RGB_4BPP: + case SG_PIXELFORMAT_PVRTC_RGBA_2BPP: + case SG_PIXELFORMAT_PVRTC_RGBA_4BPP: + case SG_PIXELFORMAT_ETC2_RGB8: + case SG_PIXELFORMAT_ETC2_RGB8A1: + case SG_PIXELFORMAT_ETC2_RGBA8: + case SG_PIXELFORMAT_ETC2_RG11: + case SG_PIXELFORMAT_ETC2_RG11SN: + default: + SOKOL_UNREACHABLE; + return WGPUTextureFormat_Force32; + } +} + +/* +FIXME ??? this isn't needed anywhere? +_SOKOL_PRIVATE WGPUTextureAspect _sg_wgpu_texture_aspect(sg_pixel_format fmt) { + if (_sg_is_valid_rendertarget_depth_format(fmt)) { + if (!_sg_is_depth_stencil_format(fmt)) { + return WGPUTextureAspect_DepthOnly; + } + } + return WGPUTextureAspect_All; +} +*/ + +_SOKOL_PRIVATE WGPUCompareFunction _sg_wgpu_comparefunc(sg_compare_func f) { + switch (f) { + case SG_COMPAREFUNC_NEVER: return WGPUCompareFunction_Never; + case SG_COMPAREFUNC_LESS: return WGPUCompareFunction_Less; + case SG_COMPAREFUNC_EQUAL: return WGPUCompareFunction_Equal; + case SG_COMPAREFUNC_LESS_EQUAL: return WGPUCompareFunction_LessEqual; + case SG_COMPAREFUNC_GREATER: return WGPUCompareFunction_Greater; + case SG_COMPAREFUNC_NOT_EQUAL: return WGPUCompareFunction_NotEqual; + case SG_COMPAREFUNC_GREATER_EQUAL: return WGPUCompareFunction_GreaterEqual; + case SG_COMPAREFUNC_ALWAYS: return WGPUCompareFunction_Always; + default: SOKOL_UNREACHABLE; return WGPUCompareFunction_Force32; + } +} + +_SOKOL_PRIVATE WGPUStencilOperation _sg_wgpu_stencilop(sg_stencil_op op) { + switch (op) { + case SG_STENCILOP_KEEP: return WGPUStencilOperation_Keep; + case SG_STENCILOP_ZERO: return WGPUStencilOperation_Zero; + case SG_STENCILOP_REPLACE: return WGPUStencilOperation_Replace; + case SG_STENCILOP_INCR_CLAMP: return WGPUStencilOperation_IncrementClamp; + case SG_STENCILOP_DECR_CLAMP: return WGPUStencilOperation_DecrementClamp; + case SG_STENCILOP_INVERT: return WGPUStencilOperation_Invert; + case SG_STENCILOP_INCR_WRAP: return WGPUStencilOperation_IncrementWrap; + case SG_STENCILOP_DECR_WRAP: return WGPUStencilOperation_DecrementWrap; + default: SOKOL_UNREACHABLE; return WGPUStencilOperation_Force32; + } +} + +_SOKOL_PRIVATE WGPUBlendOperation _sg_wgpu_blendop(sg_blend_op op) { + switch (op) { + case SG_BLENDOP_ADD: return WGPUBlendOperation_Add; + case SG_BLENDOP_SUBTRACT: return WGPUBlendOperation_Subtract; + case SG_BLENDOP_REVERSE_SUBTRACT: return WGPUBlendOperation_ReverseSubtract; + default: SOKOL_UNREACHABLE; return WGPUBlendOperation_Force32; + } +} + +_SOKOL_PRIVATE WGPUBlendFactor _sg_wgpu_blendfactor(sg_blend_factor f) { + switch (f) { + case SG_BLENDFACTOR_ZERO: return WGPUBlendFactor_Zero; + case SG_BLENDFACTOR_ONE: return WGPUBlendFactor_One; + case SG_BLENDFACTOR_SRC_COLOR: return WGPUBlendFactor_SrcColor; + case SG_BLENDFACTOR_ONE_MINUS_SRC_COLOR: return WGPUBlendFactor_OneMinusSrcColor; + case SG_BLENDFACTOR_SRC_ALPHA: return WGPUBlendFactor_SrcAlpha; + case SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA: return WGPUBlendFactor_OneMinusSrcAlpha; + case SG_BLENDFACTOR_DST_COLOR: return WGPUBlendFactor_DstColor; + case SG_BLENDFACTOR_ONE_MINUS_DST_COLOR: return WGPUBlendFactor_OneMinusDstColor; + case SG_BLENDFACTOR_DST_ALPHA: return WGPUBlendFactor_DstAlpha; + case SG_BLENDFACTOR_ONE_MINUS_DST_ALPHA: return WGPUBlendFactor_OneMinusDstAlpha; + case SG_BLENDFACTOR_SRC_ALPHA_SATURATED: return WGPUBlendFactor_SrcAlphaSaturated; + case SG_BLENDFACTOR_BLEND_COLOR: return WGPUBlendFactor_BlendColor; + case SG_BLENDFACTOR_ONE_MINUS_BLEND_COLOR: return WGPUBlendFactor_OneMinusBlendColor; + /* FIXME: separate blend alpha value not supported? */ + case SG_BLENDFACTOR_BLEND_ALPHA: return WGPUBlendFactor_BlendColor; + case SG_BLENDFACTOR_ONE_MINUS_BLEND_ALPHA: return WGPUBlendFactor_OneMinusBlendColor; + default: + SOKOL_UNREACHABLE; return WGPUBlendFactor_Force32; + } +} + +_SOKOL_PRIVATE WGPUColorWriteMaskFlags _sg_wgpu_colorwritemask(uint8_t m) { + WGPUColorWriteMaskFlags res = 0; + if (0 != (m & SG_COLORMASK_R)) { + res |= WGPUColorWriteMask_Red; + } + if (0 != (m & SG_COLORMASK_G)) { + res |= WGPUColorWriteMask_Green; + } + if (0 != (m & SG_COLORMASK_B)) { + res |= WGPUColorWriteMask_Blue; + } + if (0 != (m & SG_COLORMASK_A)) { + res |= WGPUColorWriteMask_Alpha; + } + return res; +} + +_SOKOL_PRIVATE void _sg_wgpu_init_caps(void) { + _sg.backend = SG_BACKEND_WGPU; + _sg.features.origin_top_left = true; + _sg.features.image_clamp_to_border = false; + _sg.features.mrt_independent_blend_state = true; + _sg.features.mrt_independent_write_mask = true; + + /* FIXME: max images size??? */ + _sg.limits.max_image_size_2d = 8 * 1024; + _sg.limits.max_image_size_cube = 8 * 1024; + _sg.limits.max_image_size_3d = 2 * 1024; + _sg.limits.max_image_size_array = 8 * 1024; + _sg.limits.max_image_array_layers = 2 * 1024; + _sg.limits.max_vertex_attrs = SG_MAX_VERTEX_ATTRIBUTES; + + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_R8]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_R8SN]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_R8UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_R8SI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_R16UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_R16SI]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_R16F]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG8]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RG8SN]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG8UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG8SI]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_R32UI]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_R32SI]); + _sg_pixelformat_sbr(&_sg.formats[SG_PIXELFORMAT_R32F]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG16UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RG16SI]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RG16F]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGBA8]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_RGBA8SN]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA8UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA8SI]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_BGRA8]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGB10A2]); + /* FIXME: missing SG_PIXELFORMAT_RG11B10F */ + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_RG32UI]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_RG32SI]); + _sg_pixelformat_sbr(&_sg.formats[SG_PIXELFORMAT_RG32F]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA16UI]); + _sg_pixelformat_srm(&_sg.formats[SG_PIXELFORMAT_RGBA16SI]); + _sg_pixelformat_all(&_sg.formats[SG_PIXELFORMAT_RGBA16F]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_RGBA32UI]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_RGBA32SI]); + _sg_pixelformat_sr(&_sg.formats[SG_PIXELFORMAT_RGBA32F]); + _sg_pixelformat_srmd(&_sg.formats[SG_PIXELFORMAT_DEPTH]); + _sg_pixelformat_srmd(&_sg.formats[SG_PIXELFORMAT_DEPTH_STENCIL]); + + /* FIXME FIXME FIXME: need to check if BC texture compression is + actually supported, currently the WebGPU C-API doesn't allow this + */ + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC1_RGBA]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC2_RGBA]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC3_RGBA]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC4_R]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC4_RSN]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC5_RG]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC5_RGSN]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC6H_RGBF]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC6H_RGBUF]); + _sg_pixelformat_sf(&_sg.formats[SG_PIXELFORMAT_BC7_RGBA]); +} + +/* + WGPU uniform buffer pool implementation: + + At start of frame, a mapped buffer is grabbed from the pool, + or a new buffer is created if there is no mapped buffer available. + + At end of frame, the current buffer is unmapped before queue submit, + and async-mapped immediately again. + + UNIFORM BUFFER FIXME: + + - As per WebGPU spec, it should be possible to create a Uniform|MapWrite + buffer, but this isn't currently allowed in Dawn. +*/ +_SOKOL_PRIVATE void _sg_wgpu_ubpool_init(const sg_desc* desc) { + + /* Add the max-uniform-update size (64 KB) to the requested buffer size, + this is to prevent validation errors in the WebGPU implementation + if the entire buffer size is used per frame. 64 KB is the allowed + max uniform update size on NVIDIA + */ + _sg.wgpu.ub.num_bytes = desc->uniform_buffer_size + _SG_WGPU_MAX_UNIFORM_UPDATE_SIZE; + + WGPUBufferDescriptor ub_desc; + _sg_clear(&ub_desc, sizeof(ub_desc)); + ub_desc.size = _sg.wgpu.ub.num_bytes; + ub_desc.usage = WGPUBufferUsage_Uniform|WGPUBufferUsage_CopyDst; + _sg.wgpu.ub.buf = wgpuDeviceCreateBuffer(_sg.wgpu.dev, &ub_desc); + SOKOL_ASSERT(_sg.wgpu.ub.buf); + + WGPUBindGroupLayoutBinding ub_bglb_desc[SG_NUM_SHADER_STAGES][SG_MAX_SHADERSTAGE_UBS]; + _sg_clear(ub_bglb_desc, sizeof(ub_bglb_desc)); + for (int stage_index = 0; stage_index < SG_NUM_SHADER_STAGES; stage_index++) { + WGPUShaderStage vis = (stage_index == SG_SHADERSTAGE_VS) ? WGPUShaderStage_Vertex : WGPUShaderStage_Fragment; + for (int ub_index = 0; ub_index < SG_MAX_SHADERSTAGE_UBS; ub_index++) { + int bind_index = stage_index * SG_MAX_SHADERSTAGE_UBS + ub_index; + ub_bglb_desc[stage_index][ub_index].binding = bind_index; + ub_bglb_desc[stage_index][ub_index].visibility = vis; + ub_bglb_desc[stage_index][ub_index].type = WGPUBindingType_UniformBuffer; + ub_bglb_desc[stage_index][ub_index].hasDynamicOffset = true; + } + } + + WGPUBindGroupLayoutDescriptor ub_bgl_desc; + _sg_clear(&ub_bgl_desc, sizeof(ub_bgl_desc)); + ub_bgl_desc.bindingCount = SG_NUM_SHADER_STAGES * SG_MAX_SHADERSTAGE_UBS; + ub_bgl_desc.bindings = &ub_bglb_desc[0][0]; + _sg.wgpu.ub.bindgroup_layout = wgpuDeviceCreateBindGroupLayout(_sg.wgpu.dev, &ub_bgl_desc); + SOKOL_ASSERT(_sg.wgpu.ub.bindgroup_layout); + + WGPUBindGroupBinding ub_bgb[SG_NUM_SHADER_STAGES][SG_MAX_SHADERSTAGE_UBS]; + _sg_clear(ub_bgb, sizeof(ub_bgb)); + for (int stage_index = 0; stage_index < SG_NUM_SHADER_STAGES; stage_index++) { + for (int ub_index = 0; ub_index < SG_MAX_SHADERSTAGE_UBS; ub_index++) { + int bind_index = stage_index * SG_MAX_SHADERSTAGE_UBS + ub_index; + ub_bgb[stage_index][ub_index].binding = bind_index; + ub_bgb[stage_index][ub_index].buffer = _sg.wgpu.ub.buf; + // FIXME FIXME FIXME FIXME: HACK FOR VALIDATION BUG IN DAWN + ub_bgb[stage_index][ub_index].size = (1<<16); + } + } + WGPUBindGroupDescriptor bg_desc; + _sg_clear(&bg_desc, sizeof(bg_desc)); + bg_desc.layout = _sg.wgpu.ub.bindgroup_layout; + bg_desc.bindingCount = SG_NUM_SHADER_STAGES * SG_MAX_SHADERSTAGE_UBS; + bg_desc.bindings = &ub_bgb[0][0]; + _sg.wgpu.ub.bindgroup = wgpuDeviceCreateBindGroup(_sg.wgpu.dev, &bg_desc); + SOKOL_ASSERT(_sg.wgpu.ub.bindgroup); +} + +_SOKOL_PRIVATE void _sg_wgpu_ubpool_discard(void) { + if (_sg.wgpu.ub.buf) { + wgpuBufferRelease(_sg.wgpu.ub.buf); + _sg.wgpu.ub.buf = 0; + } + if (_sg.wgpu.ub.bindgroup) { + wgpuBindGroupRelease(_sg.wgpu.ub.bindgroup); + _sg.wgpu.ub.bindgroup = 0; + } + if (_sg.wgpu.ub.bindgroup_layout) { + wgpuBindGroupLayoutRelease(_sg.wgpu.ub.bindgroup_layout); + _sg.wgpu.ub.bindgroup_layout = 0; + } + for (int i = 0; i < _sg.wgpu.ub.stage.num; i++) { + if (_sg.wgpu.ub.stage.buf[i]) { + wgpuBufferRelease(_sg.wgpu.ub.stage.buf[i]); + _sg.wgpu.ub.stage.buf[i] = 0; + _sg.wgpu.ub.stage.ptr[i] = 0; + } + } +} + +_SOKOL_PRIVATE void _sg_wgpu_ubpool_mapped_callback(WGPUBufferMapAsyncStatus status, void* data, uint64_t data_len, void* user_data) { + if (!_sg.wgpu.valid) { + return; + } + /* FIXME: better handling for this */ + if (WGPUBufferMapAsyncStatus_Success != status) { + _SG_ERROR(WGPU_MAP_UNIFORM_BUFFER_FAILED); + SOKOL_ASSERT(false); + } + SOKOL_ASSERT(data && (data_len == _sg.wgpu.ub.num_bytes)); + int index = (int)(intptr_t) user_data; + SOKOL_ASSERT(index < _sg.wgpu.ub.stage.num); + SOKOL_ASSERT(0 == _sg.wgpu.ub.stage.ptr[index]); + _sg.wgpu.ub.stage.ptr[index] = (uint8_t*) data; +} + +_SOKOL_PRIVATE void _sg_wgpu_ubpool_next_frame(bool first_frame) { + + /* immediately request a new mapping for the last frame's current staging buffer */ + if (!first_frame) { + WGPUBuffer ub_src = _sg.wgpu.ub.stage.buf[_sg.wgpu.ub.stage.cur]; + wgpuBufferMapWriteAsync(ub_src, _sg_wgpu_ubpool_mapped_callback, (void*)(intptr_t)_sg.wgpu.ub.stage.cur); + } + + /* rewind per-frame offsets */ + _sg.wgpu.ub.offset = 0; + _sg_clear(&_sg.wgpu.ub.bind_offsets, sizeof(_sg.wgpu.ub.bind_offsets)); + + /* check if a mapped staging buffer is available, otherwise create one */ + for (int i = 0; i < _sg.wgpu.ub.stage.num; i++) { + if (_sg.wgpu.ub.stage.ptr[i]) { + _sg.wgpu.ub.stage.cur = i; + return; + } + } + + /* no mapped uniform buffer available, create one */ + SOKOL_ASSERT(_sg.wgpu.ub.stage.num < _SG_WGPU_STAGING_PIPELINE_SIZE); + _sg.wgpu.ub.stage.cur = _sg.wgpu.ub.stage.num++; + const int cur = _sg.wgpu.ub.stage.cur; + + WGPUBufferDescriptor desc; + _sg_clear(&desc, sizeof(desc)); + desc.size = _sg.wgpu.ub.num_bytes; + desc.usage = WGPUBufferUsage_CopySrc|WGPUBufferUsage_MapWrite; + WGPUCreateBufferMappedResult res = wgpuDeviceCreateBufferMapped(_sg.wgpu.dev, &desc); + _sg.wgpu.ub.stage.buf[cur] = res.buffer; + _sg.wgpu.ub.stage.ptr[cur] = (uint8_t*) res.data; + SOKOL_ASSERT(_sg.wgpu.ub.stage.buf[cur]); + SOKOL_ASSERT(_sg.wgpu.ub.stage.ptr[cur]); + SOKOL_ASSERT(res.dataLength == _sg.wgpu.ub.num_bytes); +} + +_SOKOL_PRIVATE void _sg_wgpu_ubpool_flush(void) { + /* unmap staging buffer and copy to uniform buffer */ + const int cur = _sg.wgpu.ub.stage.cur; + SOKOL_ASSERT(_sg.wgpu.ub.stage.ptr[cur]); + _sg.wgpu.ub.stage.ptr[cur] = 0; + WGPUBuffer src_buf = _sg.wgpu.ub.stage.buf[cur]; + wgpuBufferUnmap(src_buf); + if (_sg.wgpu.ub.offset > 0) { + WGPUBuffer dst_buf = _sg.wgpu.ub.buf; + wgpuCommandEncoderCopyBufferToBuffer(_sg.wgpu.render_cmd_enc, src_buf, 0, dst_buf, 0, _sg.wgpu.ub.offset); + } +} + +/* helper function to compute number of bytes needed in staging buffer to copy image data */ +_SOKOL_PRIVATE uint32_t _sg_wgpu_image_data_buffer_size(const _sg_image_t* img) { + uint32_t num_bytes = 0; + const uint32_t num_faces = (img->cmn.type == SG_IMAGETYPE_CUBE) ? 6:1; + const uint32_t num_slices = (img->cmn.type == SG_IMAGETYPE_ARRAY) ? img->cmn.num_slices : 1; + for (int mip_index = 0; mip_index < img->cmn.num_mipmaps; mip_index++) { + const uint32_t mip_width = _sg_max(img->cmn.width >> mip_index, 1); + const uint32_t mip_height = _sg_max(img->cmn.height >> mip_index, 1); + /* row-pitch must be 256-aligend */ + const uint32_t bytes_per_slice = _sg_surface_pitch(img->cmn.pixel_format, mip_width, mip_height, _SG_WGPU_ROWPITCH_ALIGN); + num_bytes += bytes_per_slice * num_slices * num_faces; + } + return num_bytes; +} + +/* helper function to copy image data into a texture via a staging buffer, returns number of + bytes copied +*/ +_SOKOL_PRIVATE uint32_t _sg_wgpu_copy_image_data(WGPUBuffer stg_buf, uint8_t* stg_base_ptr, uint32_t stg_base_offset, _sg_image_t* img, const sg_image_data* data) { + SOKOL_ASSERT(_sg.wgpu.staging_cmd_enc); + SOKOL_ASSERT(stg_buf && stg_base_ptr); + SOKOL_ASSERT(img); + SOKOL_ASSERT(data); + uint32_t stg_offset = stg_base_offset; + const uint32_t num_faces = (img->cmn.type == SG_IMAGETYPE_CUBE) ? 6:1; + const uint32_t num_slices = (img->cmn.type == SG_IMAGETYPE_ARRAY) ? img->cmn.num_slices : 1; + const sg_pixel_format fmt = img->cmn.pixel_format; + WGPUBufferCopyView src_view; + _sg_clear(&src_view, sizeof(src_view)); + src_view.buffer = stg_buf; + WGPUTextureCopyView dst_view; + _sg_clear(&dst_view, sizeof(dst_view)); + dst_view.texture = img->wgpu.tex; + WGPUExtent3D extent; + _sg_clear(&extent, sizeof(extent)); + + for (uint32_t face_index = 0; face_index < num_faces; face_index++) { + for (uint32_t mip_index = 0; mip_index < (uint32_t)img->cmn.num_mipmaps; mip_index++) { + SOKOL_ASSERT(data->subimage[face_index][mip_index].ptr); + SOKOL_ASSERT(data->subimage[face_index][mip_index].size > 0); + const uint8_t* src_base_ptr = (const uint8_t*)data->subimage[face_index][mip_index].ptr; + SOKOL_ASSERT(src_base_ptr); + uint8_t* dst_base_ptr = stg_base_ptr + stg_offset; + + const uint32_t mip_width = _sg_max(img->cmn.width >> mip_index, 1); + const uint32_t mip_height = _sg_max(img->cmn.height >> mip_index, 1); + const uint32_t mip_depth = (img->cmn.type == SG_IMAGETYPE_3D) ? _sg_max(img->cmn.num_slices >> mip_index, 1) : 1; + const uint32_t num_rows = _sg_num_rows(fmt, mip_height); + const uint32_t src_bytes_per_row = _sg_row_pitch(fmt, mip_width, 1); + const uint32_t dst_bytes_per_row = _sg_row_pitch(fmt, mip_width, _SG_WGPU_ROWPITCH_ALIGN); + const uint32_t src_bytes_per_slice = _sg_surface_pitch(fmt, mip_width, mip_height, 1); + const uint32_t dst_bytes_per_slice = _sg_surface_pitch(fmt, mip_width, mip_height, _SG_WGPU_ROWPITCH_ALIGN); + SOKOL_ASSERT((uint32_t)data->subimage[face_index][mip_index].size == (src_bytes_per_slice * num_slices)); + SOKOL_ASSERT(src_bytes_per_row <= dst_bytes_per_row); + SOKOL_ASSERT(src_bytes_per_slice == (src_bytes_per_row * num_rows)); + SOKOL_ASSERT(dst_bytes_per_slice == (dst_bytes_per_row * num_rows)); + _SOKOL_UNUSED(src_bytes_per_slice); + + /* copy data into mapped staging buffer */ + if (src_bytes_per_row == dst_bytes_per_row) { + /* can do a single memcpy */ + uint32_t num_bytes = data->subimage[face_index][mip_index].size; + memcpy(dst_base_ptr, src_base_ptr, num_bytes); + } + else { + /* src/dst pitch doesn't match, need to copy row by row */ + uint8_t* dst_ptr = dst_base_ptr; + const uint8_t* src_ptr = src_base_ptr; + for (uint32_t slice_index = 0; slice_index < num_slices; slice_index++) { + SOKOL_ASSERT(dst_ptr == dst_base_ptr + slice_index * dst_bytes_per_slice); + for (uint32_t row_index = 0; row_index < num_rows; row_index++) { + memcpy(dst_ptr, src_ptr, src_bytes_per_row); + src_ptr += src_bytes_per_row; + dst_ptr += dst_bytes_per_row; + } + } + } + + /* record the staging copy operation into command encoder */ + src_view.imageHeight = mip_height; + src_view.rowPitch = dst_bytes_per_row; + dst_view.mipLevel = mip_index; + extent.width = mip_width; + extent.height = mip_height; + extent.depth = mip_depth; + SOKOL_ASSERT((img->cmn.type != SG_IMAGETYPE_CUBE) || (num_slices == 1)); + for (uint32_t slice_index = 0; slice_index < num_slices; slice_index++) { + const uint32_t layer_index = (img->cmn.type == SG_IMAGETYPE_ARRAY) ? slice_index : face_index; + src_view.offset = stg_offset; + dst_view.arrayLayer = layer_index; + wgpuCommandEncoderCopyBufferToTexture(_sg.wgpu.staging_cmd_enc, &src_view, &dst_view, &extent); + stg_offset += dst_bytes_per_slice; + SOKOL_ASSERT(stg_offset <= _sg.wgpu.staging.num_bytes); + } + } + } + SOKOL_ASSERT(stg_offset >= stg_base_offset); + return (stg_offset - stg_base_offset); +} + +/* + The WGPU staging buffer implementation: + + Very similar to the uniform buffer pool, there's a pool of big + per-frame staging buffers, each must be big enough to hold + all data uploaded to dynamic resources for one frame. + + Staging buffers are created on demand and reused, because the + 'frame pipeline depth' of WGPU isn't predictable. + + The difference to the uniform buffer system is that there isn't + a 1:1 relationship for source- and destination for the + data-copy operation. There's always one staging buffer as copy-source + per frame, but many copy-destinations (regular vertex/index buffers + or images). Instead of one big copy-operation at the end of the frame, + multiple copy-operations will be written throughout the frame. +*/ +_SOKOL_PRIVATE void _sg_wgpu_staging_init(const sg_desc* desc) { + SOKOL_ASSERT(desc && (desc->staging_buffer_size > 0)); + _sg.wgpu.staging.num_bytes = desc->staging_buffer_size; + /* there's actually nothing more to do here */ +} + +_SOKOL_PRIVATE void _sg_wgpu_staging_discard(void) { + for (int i = 0; i < _sg.wgpu.staging.num; i++) { + if (_sg.wgpu.staging.buf[i]) { + wgpuBufferRelease(_sg.wgpu.staging.buf[i]); + _sg.wgpu.staging.buf[i] = 0; + _sg.wgpu.staging.ptr[i] = 0; + } + } +} + +_SOKOL_PRIVATE void _sg_wgpu_staging_mapped_callback(WGPUBufferMapAsyncStatus status, void* data, uint64_t data_len, void* user_data) { + if (!_sg.wgpu.valid) { + return; + } + /* FIXME: better handling for this */ + if (WGPUBufferMapAsyncStatus_Success != status) { + SOKOL_ASSERT("Mapping staging buffer failed!\n"); + SOKOL_ASSERT(false); + } + SOKOL_ASSERT(data && (data_len == _sg.wgpu.staging.num_bytes)); + int index = (int)(intptr_t) user_data; + SOKOL_ASSERT(index < _sg.wgpu.staging.num); + SOKOL_ASSERT(0 == _sg.wgpu.staging.ptr[index]); + _sg.wgpu.staging.ptr[index] = (uint8_t*) data; +} + +_SOKOL_PRIVATE void _sg_wgpu_staging_next_frame(bool first_frame) { + + /* immediately request a new mapping for the last frame's current staging buffer */ + if (!first_frame) { + WGPUBuffer cur_buf = _sg.wgpu.staging.buf[_sg.wgpu.staging.cur]; + wgpuBufferMapWriteAsync(cur_buf, _sg_wgpu_staging_mapped_callback, (void*)(intptr_t)_sg.wgpu.staging.cur); + } + + /* rewind staging-buffer offset */ + _sg.wgpu.staging.offset = 0; + + /* check if mapped staging buffer is available, otherwise create one */ + for (int i = 0; i < _sg.wgpu.staging.num; i++) { + if (_sg.wgpu.staging.ptr[i]) { + _sg.wgpu.staging.cur = i; + return; + } + } + + /* no mapped buffer available, create one */ + SOKOL_ASSERT(_sg.wgpu.staging.num < _SG_WGPU_STAGING_PIPELINE_SIZE); + _sg.wgpu.staging.cur = _sg.wgpu.staging.num++; + const int cur = _sg.wgpu.staging.cur; + + WGPUBufferDescriptor desc; + _sg_clear(&desc, sizeof(desc)); + desc.size = _sg.wgpu.staging.num_bytes; + desc.usage = WGPUBufferUsage_CopySrc|WGPUBufferUsage_MapWrite; + WGPUCreateBufferMappedResult res = wgpuDeviceCreateBufferMapped(_sg.wgpu.dev, &desc); + _sg.wgpu.staging.buf[cur] = res.buffer; + _sg.wgpu.staging.ptr[cur] = (uint8_t*) res.data; + SOKOL_ASSERT(_sg.wgpu.staging.buf[cur]); + SOKOL_ASSERT(_sg.wgpu.staging.ptr[cur]); + SOKOL_ASSERT(res.dataLength == _sg.wgpu.staging.num_bytes); +} + +_SOKOL_PRIVATE uint32_t _sg_wgpu_staging_copy_to_buffer(WGPUBuffer dst_buf, uint32_t dst_buf_offset, const void* data, uint32_t data_num_bytes) { + /* Copy a chunk of data into the staging buffer, and record a blit-operation into + the command encoder, bump the offset for the next data chunk, return 0 if there + was not enough room in the staging buffer, return the number of actually + copied bytes on success. + + NOTE: that the number of staging bytes to be copied must be a multiple of 4. + + */ + SOKOL_ASSERT(_sg.wgpu.staging_cmd_enc); + SOKOL_ASSERT((dst_buf_offset & 3) == 0); + SOKOL_ASSERT(data_num_bytes > 0); + uint32_t copy_num_bytes = _sg_roundup(data_num_bytes, 4); + if ((_sg.wgpu.staging.offset + copy_num_bytes) >= _sg.wgpu.staging.num_bytes) { + _SG_ERROR(WGPU_STAGING_BUFFER_FULL_COPY_TO_BUFFER); + return false; + } + const int cur = _sg.wgpu.staging.cur; + SOKOL_ASSERT(_sg.wgpu.staging.ptr[cur]); + uint32_t stg_buf_offset = _sg.wgpu.staging.offset; + uint8_t* stg_ptr = _sg.wgpu.staging.ptr[cur] + stg_buf_offset; + memcpy(stg_ptr, data, data_num_bytes); + WGPUBuffer stg_buf = _sg.wgpu.staging.buf[cur]; + wgpuCommandEncoderCopyBufferToBuffer(_sg.wgpu.staging_cmd_enc, stg_buf, stg_buf_offset, dst_buf, dst_buf_offset, copy_num_bytes); + _sg.wgpu.staging.offset = stg_buf_offset + copy_num_bytes; + return copy_num_bytes; +} + +_SOKOL_PRIVATE bool _sg_wgpu_staging_copy_to_texture(_sg_image_t* img, const sg_image_data* data) { + /* similar to _sg_wgpu_staging_copy_to_buffer(), but with image data instead */ + SOKOL_ASSERT(_sg.wgpu.staging_cmd_enc); + uint32_t num_bytes = _sg_wgpu_image_data_buffer_size(img); + if ((_sg.wgpu.staging.offset + num_bytes) >= _sg.wgpu.staging.num_bytes) { + _SG_ERROR(WGPU_STAGING_BUFFER_FULL_COPY_TO_TEXTURE); + return false; + } + const int cur = _sg.wgpu.staging.cur; + SOKOL_ASSERT(_sg.wgpu.staging.ptr[cur]); + uint32_t stg_offset = _sg.wgpu.staging.offset; + uint8_t* stg_ptr = _sg.wgpu.staging.ptr[cur]; + WGPUBuffer stg_buf = _sg.wgpu.staging.buf[cur]; + uint32_t bytes_copied = _sg_wgpu_copy_image_data(stg_buf, stg_ptr, stg_offset, img, data); + _SOKOL_UNUSED(bytes_copied); + SOKOL_ASSERT(bytes_copied == num_bytes); + _sg.wgpu.staging.offset = _sg_roundup(stg_offset + num_bytes, _SG_WGPU_STAGING_ALIGN); + return true; +} + +_SOKOL_PRIVATE void _sg_wgpu_staging_unmap(void) { + /* called at end of frame before queue-submit */ + const int cur = _sg.wgpu.staging.cur; + SOKOL_ASSERT(_sg.wgpu.staging.ptr[cur]); + _sg.wgpu.staging.ptr[cur] = 0; + wgpuBufferUnmap(_sg.wgpu.staging.buf[cur]); +} + +/*--- WGPU sampler cache functions ---*/ +_SOKOL_PRIVATE void _sg_wgpu_init_sampler_cache(const sg_desc* desc) { + SOKOL_ASSERT(desc->sampler_cache_size > 0); + _sg_smpcache_init(&_sg.wgpu.sampler_cache, desc->sampler_cache_size); +} + +_SOKOL_PRIVATE void _sg_wgpu_destroy_sampler_cache(void) { + SOKOL_ASSERT(_sg.wgpu.sampler_cache.items); + SOKOL_ASSERT(_sg.wgpu.sampler_cache.num_items <= _sg.wgpu.sampler_cache.capacity); + for (int i = 0; i < _sg.wgpu.sampler_cache.num_items; i++) { + wgpuSamplerRelease((WGPUSampler)_sg_smpcache_sampler(&_sg.wgpu.sampler_cache, i)); + } + _sg_smpcache_discard(&_sg.wgpu.sampler_cache); +} + +_SOKOL_PRIVATE WGPUSampler _sg_wgpu_create_sampler(const sg_image_desc* img_desc) { + SOKOL_ASSERT(img_desc); + int index = _sg_smpcache_find_item(&_sg.wgpu.sampler_cache, img_desc); + if (index >= 0) { + /* reuse existing sampler */ + return (WGPUSampler) _sg_smpcache_sampler(&_sg.wgpu.sampler_cache, index); + } + else { + /* create a new WGPU sampler and add to sampler cache */ + /* FIXME: anisotropic filtering not supported? */ + WGPUSamplerDescriptor smp_desc; + _sg_clear(&smp_desc, sizeof(smp_desc)); + smp_desc.addressModeU = _sg_wgpu_sampler_addrmode(img_desc->wrap_u); + smp_desc.addressModeV = _sg_wgpu_sampler_addrmode(img_desc->wrap_v); + smp_desc.addressModeW = _sg_wgpu_sampler_addrmode(img_desc->wrap_w); + smp_desc.magFilter = _sg_wgpu_sampler_minmagfilter(img_desc->mag_filter); + smp_desc.minFilter = _sg_wgpu_sampler_minmagfilter(img_desc->min_filter); + smp_desc.mipmapFilter = _sg_wgpu_sampler_mipfilter(img_desc->min_filter); + smp_desc.lodMinClamp = img_desc->min_lod; + smp_desc.lodMaxClamp = img_desc->max_lod; + WGPUSampler smp = wgpuDeviceCreateSampler(_sg.wgpu.dev, &smp_desc); + SOKOL_ASSERT(smp); + _sg_smpcache_add_item(&_sg.wgpu.sampler_cache, img_desc, (uintptr_t)smp); + return smp; + } +} + +/*--- WGPU backend API functions ---*/ +_SOKOL_PRIVATE void _sg_wgpu_setup_backend(const sg_desc* desc) { + SOKOL_ASSERT(desc); + SOKOL_ASSERT(desc->context.wgpu.device); + SOKOL_ASSERT(desc->context.wgpu.render_view_cb || desc->context.wgpu.render_view_userdata_cb); + SOKOL_ASSERT(desc->context.wgpu.resolve_view_cb || desc->context.wgpu.resolve_view_userdata_cb); + SOKOL_ASSERT(desc->context.wgpu.depth_stencil_view_cb || desc->context.wgpu.depth_stencil_view_userdata_cb); + SOKOL_ASSERT(desc->uniform_buffer_size > 0); + SOKOL_ASSERT(desc->staging_buffer_size > 0); + _sg.backend = SG_BACKEND_WGPU; + _sg.wgpu.valid = true; + _sg.wgpu.dev = (WGPUDevice) desc->context.wgpu.device; + _sg.wgpu.render_view_cb = (WGPUTextureView(*)(void)) desc->context.wgpu.render_view_cb; + _sg.wgpu.render_view_userdata_cb = (WGPUTextureView(*)(void*)) desc->context.wgpu.render_view_userdata_cb; + _sg.wgpu.resolve_view_cb = (WGPUTextureView(*)(void)) desc->context.wgpu.resolve_view_cb; + _sg.wgpu.resolve_view_userdata_cb = (WGPUTextureView(*)(void*)) desc->context.wgpu.resolve_view_userdata_cb; + _sg.wgpu.depth_stencil_view_cb = (WGPUTextureView(*)(void)) desc->context.wgpu.depth_stencil_view_cb; + _sg.wgpu.depth_stencil_view_userdata_cb = (WGPUTextureView(*)(void*)) desc->context.wgpu.depth_stencil_view_userdata_cb; + _sg.wgpu.user_data = desc->context.wgpu.user_data; + _sg.wgpu.queue = wgpuDeviceCreateQueue(_sg.wgpu.dev); + SOKOL_ASSERT(_sg.wgpu.queue); + + /* setup WebGPU features and limits */ + _sg_wgpu_init_caps(); + + /* setup the sampler cache, uniform and staging buffer pools */ + _sg_wgpu_init_sampler_cache(&_sg.desc); + _sg_wgpu_ubpool_init(desc); + _sg_wgpu_ubpool_next_frame(true); + _sg_wgpu_staging_init(desc); + _sg_wgpu_staging_next_frame(true); + + /* create an empty bind group for shader stages without bound images */ + WGPUBindGroupLayoutDescriptor bgl_desc; + _sg_clear(&bgl_desc, sizeof(bgl_desc)); + WGPUBindGroupLayout empty_bgl = wgpuDeviceCreateBindGroupLayout(_sg.wgpu.dev, &bgl_desc); + SOKOL_ASSERT(empty_bgl); + WGPUBindGroupDescriptor bg_desc; + _sg_clear(&bg_desc, sizeof(bg_desc)); + bg_desc.layout = empty_bgl; + _sg.wgpu.empty_bind_group = wgpuDeviceCreateBindGroup(_sg.wgpu.dev, &bg_desc); + SOKOL_ASSERT(_sg.wgpu.empty_bind_group); + wgpuBindGroupLayoutRelease(empty_bgl); + + /* create initial per-frame command encoders */ + WGPUCommandEncoderDescriptor cmd_enc_desc; + _sg_clear(&cmd_enc_desc, sizeof(cmd_enc_desc)); + _sg.wgpu.render_cmd_enc = wgpuDeviceCreateCommandEncoder(_sg.wgpu.dev, &cmd_enc_desc); + SOKOL_ASSERT(_sg.wgpu.render_cmd_enc); + _sg.wgpu.staging_cmd_enc = wgpuDeviceCreateCommandEncoder(_sg.wgpu.dev, &cmd_enc_desc); + SOKOL_ASSERT(_sg.wgpu.staging_cmd_enc); +} + +_SOKOL_PRIVATE void _sg_wgpu_discard_backend(void) { + SOKOL_ASSERT(_sg.wgpu.valid); + SOKOL_ASSERT(_sg.wgpu.render_cmd_enc); + SOKOL_ASSERT(_sg.wgpu.staging_cmd_enc); + _sg.wgpu.valid = false; + _sg_wgpu_ubpool_discard(); + _sg_wgpu_staging_discard(); + _sg_wgpu_destroy_sampler_cache(); + wgpuBindGroupRelease(_sg.wgpu.empty_bind_group); + wgpuCommandEncoderRelease(_sg.wgpu.render_cmd_enc); + _sg.wgpu.render_cmd_enc = 0; + wgpuCommandEncoderRelease(_sg.wgpu.staging_cmd_enc); + _sg.wgpu.staging_cmd_enc = 0; + if (_sg.wgpu.queue) { + wgpuQueueRelease(_sg.wgpu.queue); + _sg.wgpu.queue = 0; + } +} + +_SOKOL_PRIVATE void _sg_wgpu_reset_state_cache(void) { + _SG_WARN(WGPU_RESET_STATE_CACHE_FIXME); +} + +_SOKOL_PRIVATE sg_resource_state _sg_wgpu_create_context(_sg_context_t* ctx) { + SOKOL_ASSERT(ctx); + _SOKOL_UNUSED(ctx); + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_wgpu_discard_context(_sg_context_t* ctx) { + SOKOL_ASSERT(ctx); + _SOKOL_UNUSED(ctx); +} + +_SOKOL_PRIVATE void _sg_wgpu_activate_context(_sg_context_t* ctx) { + (void)ctx; + _SG_WARN(WGPU_ACTIVATE_CONTEXT_FIXME); +} + +_SOKOL_PRIVATE sg_resource_state _sg_wgpu_create_buffer(_sg_buffer_t* buf, const sg_buffer_desc* desc) { + SOKOL_ASSERT(buf && desc); + const bool injected = (0 != desc->wgpu_buffer); + _sg_buffer_common_init(&buf->cmn, desc); + if (injected) { + buf->wgpu.buf = (WGPUBuffer) desc->wgpu_buffer; + wgpuBufferReference(buf->wgpu.buf); + } + else { + WGPUBufferDescriptor wgpu_buf_desc; + _sg_clear(&wgpu_buf_desc, sizeof(wgpu_buf_desc)); + wgpu_buf_desc.usage = _sg_wgpu_buffer_usage(buf->cmn.type, buf->cmn.usage); + wgpu_buf_desc.size = buf->cmn.size; + if (SG_USAGE_IMMUTABLE == buf->cmn.usage) { + SOKOL_ASSERT(desc->data.ptr); + WGPUCreateBufferMappedResult res = wgpuDeviceCreateBufferMapped(_sg.wgpu.dev, &wgpu_buf_desc); + buf->wgpu.buf = res.buffer; + SOKOL_ASSERT(res.data && (res.dataLength == buf->cmn.size)); + memcpy(res.data, desc->data.ptr, buf->cmn.size); + wgpuBufferUnmap(res.buffer); + } + else { + buf->wgpu.buf = wgpuDeviceCreateBuffer(_sg.wgpu.dev, &wgpu_buf_desc); + } + } + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_wgpu_discard_buffer(_sg_buffer_t* buf) { + SOKOL_ASSERT(buf); + WGPUBuffer wgpu_buf = buf->wgpu.buf; + if (0 != wgpu_buf) { + wgpuBufferRelease(wgpu_buf); + } +} + +_SOKOL_PRIVATE void _sg_wgpu_init_texdesc_common(WGPUTextureDescriptor* wgpu_tex_desc, const sg_image_desc* desc) { + wgpu_tex_desc->usage = WGPUTextureUsage_Sampled|WGPUTextureUsage_CopyDst; + wgpu_tex_desc->dimension = _sg_wgpu_tex_dim(desc->type); + wgpu_tex_desc->size.width = desc->width; + wgpu_tex_desc->size.height = desc->height; + if (desc->type == SG_IMAGETYPE_3D) { + wgpu_tex_desc->size.depth = desc->num_slices; + wgpu_tex_desc->arrayLayerCount = 1; + } + else if (desc->type == SG_IMAGETYPE_CUBE) { + wgpu_tex_desc->size.depth = 1; + wgpu_tex_desc->arrayLayerCount = 6; + } + else { + wgpu_tex_desc->size.depth = 1; + wgpu_tex_desc->arrayLayerCount = desc->num_slices; + } + wgpu_tex_desc->format = _sg_wgpu_textureformat(desc->pixel_format); + wgpu_tex_desc->mipLevelCount = desc->num_mipmaps; + wgpu_tex_desc->sampleCount = 1; +} + +_SOKOL_PRIVATE sg_resource_state _sg_wgpu_create_image(_sg_image_t* img, const sg_image_desc* desc) { + SOKOL_ASSERT(img && desc); + SOKOL_ASSERT(_sg.wgpu.dev); + SOKOL_ASSERT(_sg.wgpu.staging_cmd_enc); + + _sg_image_common_init(&img->cmn, desc); + + const bool injected = (0 != desc->wgpu_texture); + const bool is_msaa = desc->sample_count > 1; + WGPUTextureDescriptor wgpu_tex_desc; + _sg_clear(&wgpu_tex_desc, sizeof(wgpu_tex_desc)); + _sg_wgpu_init_texdesc_common(&wgpu_tex_desc, desc); + if (_sg_is_valid_rendertarget_depth_format(img->cmn.pixel_format)) { + SOKOL_ASSERT(img->cmn.render_target); + SOKOL_ASSERT(img->cmn.type == SG_IMAGETYPE_2D); + SOKOL_ASSERT(img->cmn.num_mipmaps == 1); + SOKOL_ASSERT(!injected); + /* NOTE: a depth-stencil texture will never be MSAA-resolved, so there + won't be a separate MSAA- and resolve-texture + */ + wgpu_tex_desc.usage = WGPUTextureUsage_OutputAttachment; + wgpu_tex_desc.sampleCount = desc->sample_count; + img->wgpu.tex = wgpuDeviceCreateTexture(_sg.wgpu.dev, &wgpu_tex_desc); + SOKOL_ASSERT(img->wgpu.tex); + } + else { + if (injected) { + img->wgpu.tex = (WGPUTexture) desc->wgpu_texture; + wgpuTextureReference(img->wgpu.tex); + } + else { + /* NOTE: in the MSAA-rendertarget case, both the MSAA texture *and* + the resolve texture need OutputAttachment usage + */ + if (img->cmn.render_target) { + wgpu_tex_desc.usage = WGPUTextureUsage_Sampled|WGPUTextureUsage_OutputAttachment; + } + img->wgpu.tex = wgpuDeviceCreateTexture(_sg.wgpu.dev, &wgpu_tex_desc); + SOKOL_ASSERT(img->wgpu.tex); + + /* copy content into texture via a throw-away staging buffer */ + if (desc->usage == SG_USAGE_IMMUTABLE && !desc->render_target) { + WGPUBufferDescriptor wgpu_buf_desc; + _sg_clear(&wgpu_buf_desc, sizeof(wgpu_buf_desc)); + wgpu_buf_desc.size = _sg_wgpu_image_data_buffer_size(img); + wgpu_buf_desc.usage = WGPUBufferUsage_CopySrc|WGPUBufferUsage_CopyDst; + WGPUCreateBufferMappedResult map = wgpuDeviceCreateBufferMapped(_sg.wgpu.dev, &wgpu_buf_desc); + SOKOL_ASSERT(map.buffer && map.data); + uint32_t num_bytes = _sg_wgpu_copy_image_data(map.buffer, (uint8_t*)map.data, 0, img, &desc->data); + _SOKOL_UNUSED(num_bytes); + SOKOL_ASSERT(num_bytes == wgpu_buf_desc.size); + wgpuBufferUnmap(map.buffer); + wgpuBufferRelease(map.buffer); + } + } + + /* create texture view object */ + WGPUTextureViewDescriptor wgpu_view_desc; + _sg_clear(&wgpu_view_desc, sizeof(wgpu_view_desc)); + wgpu_view_desc.dimension = _sg_wgpu_tex_viewdim(desc->type); + img->wgpu.tex_view = wgpuTextureCreateView(img->wgpu.tex, &wgpu_view_desc); + + /* if render target and MSAA, then a separate texture in MSAA format is needed + which will be resolved into the regular texture at the end of the + offscreen-render pass + */ + if (desc->render_target && is_msaa) { + wgpu_tex_desc.dimension = WGPUTextureDimension_2D; + wgpu_tex_desc.size.depth = 1; + wgpu_tex_desc.arrayLayerCount = 1; + wgpu_tex_desc.mipLevelCount = 1; + wgpu_tex_desc.usage = WGPUTextureUsage_OutputAttachment; + wgpu_tex_desc.sampleCount = desc->sample_count; + img->wgpu.msaa_tex = wgpuDeviceCreateTexture(_sg.wgpu.dev, &wgpu_tex_desc); + SOKOL_ASSERT(img->wgpu.msaa_tex); + } + + /* create sampler via shared-sampler-cache */ + img->wgpu.sampler = _sg_wgpu_create_sampler(desc); + SOKOL_ASSERT(img->wgpu.sampler); + } + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_wgpu_discard_image(_sg_image_t* img) { + SOKOL_ASSERT(img); + if (img->wgpu.tex) { + wgpuTextureRelease(img->wgpu.tex); + img->wgpu.tex = 0; + } + if (img->wgpu.tex_view) { + wgpuTextureViewRelease(img->wgpu.tex_view); + img->wgpu.tex_view = 0; + } + if (img->wgpu.msaa_tex) { + wgpuTextureRelease(img->wgpu.msaa_tex); + img->wgpu.msaa_tex = 0; + } + /* NOTE: do *not* destroy the sampler from the shared-sampler-cache */ + img->wgpu.sampler = 0; +} + +/* + How BindGroups work in WebGPU: + + - up to 4 bind groups can be bound simultaneously + - up to 16 bindings per bind group + - 'binding' slots are local per bind group + - in the shader: + layout(set=0, binding=1) corresponds to bind group 0, binding 1 + + Now how to map this to sokol-gfx's bind model: + + Reduce SG_MAX_SHADERSTAGE_IMAGES to 8, then: + + 1 bind group for all 8 uniform buffers + 1 bind group for vertex shader textures + samplers + 1 bind group for fragment shader textures + samples + + Alternatively: + + 1 bind group for 8 uniform buffer slots + 1 bind group for 8 vs images + 8 vs samplers + 1 bind group for 12 fs images + 1 bind group for 12 fs samplers + + I guess this means that we need to create BindGroups on the + fly during sg_apply_bindings() :/ +*/ +_SOKOL_PRIVATE sg_resource_state _sg_wgpu_create_shader(_sg_shader_t* shd, const sg_shader_desc* desc) { + SOKOL_ASSERT(shd && desc); + SOKOL_ASSERT(desc->vs.bytecode.ptr && desc->fs.bytecode.ptr); + _sg_shader_common_init(&shd->cmn, desc); + + bool success = true; + for (int stage_index = 0; stage_index < SG_NUM_SHADER_STAGES; stage_index++) { + const sg_shader_stage_desc* stage_desc = (stage_index == SG_SHADERSTAGE_VS) ? &desc->vs : &desc->fs; + SOKOL_ASSERT((stage_desc->bytecode.size & 3) == 0); + + _sg_shader_stage_t* cmn_stage = &shd->cmn.stage[stage_index]; + _sg_wgpu_shader_stage_t* wgpu_stage = &shd->wgpu.stage[stage_index]; + + _sg_strcpy(&wgpu_stage->entry, stage_desc->entry); + WGPUShaderModuleDescriptor wgpu_shdmod_desc; + _sg_clear(&wgpu_shdmod_desc, sizeof(wgpu_shdmod_desc)); + wgpu_shdmod_desc.codeSize = stage_desc->bytecode.size >> 2; + wgpu_shdmod_desc.code = (const uint32_t*) stage_desc->bytecode.ptr; + wgpu_stage->module = wgpuDeviceCreateShaderModule(_sg.wgpu.dev, &wgpu_shdmod_desc); + if (0 == wgpu_stage->module) { + success = false; + } + + /* create image/sampler bind group for the shader stage */ + WGPUShaderStage vis = (stage_index == SG_SHADERSTAGE_VS) ? WGPUShaderStage_Vertex : WGPUShaderStage_Fragment; + int num_imgs = cmn_stage->num_images; + if (num_imgs > _SG_WGPU_MAX_SHADERSTAGE_IMAGES) { + num_imgs = _SG_WGPU_MAX_SHADERSTAGE_IMAGES; + } + WGPUBindGroupLayoutBinding bglb_desc[_SG_WGPU_MAX_SHADERSTAGE_IMAGES * 2]; + _sg_clear(bglb_desc, sizeof(bglb_desc)); + for (int img_index = 0; img_index < num_imgs; img_index++) { + /* texture- and sampler-bindings */ + WGPUBindGroupLayoutBinding* tex_desc = &bglb_desc[img_index*2 + 0]; + WGPUBindGroupLayoutBinding* smp_desc = &bglb_desc[img_index*2 + 1]; + + tex_desc->binding = img_index; + tex_desc->visibility = vis; + tex_desc->type = WGPUBindingType_SampledTexture; + tex_desc->textureDimension = _sg_wgpu_tex_viewdim(cmn_stage->images[img_index].image_type); + tex_desc->textureComponentType = _sg_wgpu_tex_comptype(cmn_stage->images[img_index].sampler_type); + + smp_desc->binding = img_index + _SG_WGPU_MAX_SHADERSTAGE_IMAGES; + smp_desc->visibility = vis; + smp_desc->type = WGPUBindingType_Sampler; + } + WGPUBindGroupLayoutDescriptor img_bgl_desc; + _sg_clear(&img_bgl_desc, sizeof(img_bgl_desc)); + img_bgl_desc.bindingCount = num_imgs * 2; + img_bgl_desc.bindings = &bglb_desc[0]; + wgpu_stage->bind_group_layout = wgpuDeviceCreateBindGroupLayout(_sg.wgpu.dev, &img_bgl_desc); + SOKOL_ASSERT(wgpu_stage->bind_group_layout); + } + return success ? SG_RESOURCESTATE_VALID : SG_RESOURCESTATE_FAILED; +} + +_SOKOL_PRIVATE void _sg_wgpu_discard_shader(_sg_shader_t* shd) { + SOKOL_ASSERT(shd); + for (int stage_index = 0; stage_index < SG_NUM_SHADER_STAGES; stage_index++) { + _sg_wgpu_shader_stage_t* wgpu_stage = &shd->wgpu.stage[stage_index]; + if (wgpu_stage->module) { + wgpuShaderModuleRelease(wgpu_stage->module); + wgpu_stage->module = 0; + } + if (wgpu_stage->bind_group_layout) { + wgpuBindGroupLayoutRelease(wgpu_stage->bind_group_layout); + wgpu_stage->bind_group_layout = 0; + } + } +} + +_SOKOL_PRIVATE sg_resource_state _sg_wgpu_create_pipeline(_sg_pipeline_t* pip, _sg_shader_t* shd, const sg_pipeline_desc* desc) { + SOKOL_ASSERT(pip && shd && desc); + SOKOL_ASSERT(desc->shader.id == shd->slot.id); + SOKOL_ASSERT(shd->wgpu.stage[SG_SHADERSTAGE_VS].bind_group_layout); + SOKOL_ASSERT(shd->wgpu.stage[SG_SHADERSTAGE_FS].bind_group_layout); + pip->shader = shd; + _sg_pipeline_common_init(&pip->cmn, desc); + pip->wgpu.stencil_ref = (uint32_t) desc->stencil.ref; + + WGPUBindGroupLayout pip_bgl[3] = { + _sg.wgpu.ub.bindgroup_layout, + shd->wgpu.stage[SG_SHADERSTAGE_VS].bind_group_layout, + shd->wgpu.stage[SG_SHADERSTAGE_FS].bind_group_layout + }; + WGPUPipelineLayoutDescriptor pl_desc; + _sg_clear(&pl_desc, sizeof(pl_desc)); + pl_desc.bindGroupLayoutCount = 3; + pl_desc.bindGroupLayouts = &pip_bgl[0]; + WGPUPipelineLayout pip_layout = wgpuDeviceCreatePipelineLayout(_sg.wgpu.dev, &pl_desc); + + WGPUVertexBufferLayoutDescriptor vb_desc[SG_MAX_SHADERSTAGE_BUFFERS]; + _sg_clear(&vb_desc, sizeof(vb_desc)); + WGPUVertexAttributeDescriptor va_desc[SG_MAX_SHADERSTAGE_BUFFERS][SG_MAX_VERTEX_ATTRIBUTES]; + _sg_clear(&va_desc, sizeof(va_desc)); + int vb_idx = 0; + for (; vb_idx < SG_MAX_SHADERSTAGE_BUFFERS; vb_idx++) { + const sg_buffer_layout_desc* src_vb_desc = &desc->layout.buffers[vb_idx]; + if (0 == src_vb_desc->stride) { + break; + } + vb_desc[vb_idx].arrayStride = src_vb_desc->stride; + vb_desc[vb_idx].stepMode = _sg_wgpu_stepmode(src_vb_desc->step_func); + /* NOTE: WebGPU has no support for vertex step rate (because that's + not supported by Core Vulkan + */ + int va_idx = 0; + for (int va_loc = 0; va_loc < SG_MAX_VERTEX_ATTRIBUTES; va_loc++) { + const sg_vertex_attr_desc* src_va_desc = &desc->layout.attrs[va_loc]; + if (SG_VERTEXFORMAT_INVALID == src_va_desc->format) { + break; + } + pip->cmn.vertex_layout_valid[src_va_desc->buffer_index] = true; + if (vb_idx == src_va_desc->buffer_index) { + va_desc[vb_idx][va_idx].format = _sg_wgpu_vertexformat(src_va_desc->format); + va_desc[vb_idx][va_idx].offset = src_va_desc->offset; + va_desc[vb_idx][va_idx].shaderLocation = va_loc; + va_idx++; + } + } + vb_desc[vb_idx].attributeCount = va_idx; + vb_desc[vb_idx].attributes = &va_desc[vb_idx][0]; + } + WGPUVertexStateDescriptor vx_state_desc; + _sg_clear(&vx_state_desc, sizeof(vx_state_desc)); + vx_state_desc.indexFormat = _sg_wgpu_indexformat(desc->index_type); + vx_state_desc.vertexBufferCount = vb_idx; + vx_state_desc.vertexBuffers = vb_desc; + + WGPURasterizationStateDescriptor rs_desc; + _sg_clear(&rs_desc, sizeof(rs_desc)); + rs_desc.frontFace = _sg_wgpu_frontface(desc->face_winding); + rs_desc.cullMode = _sg_wgpu_cullmode(desc->cull_mode); + rs_desc.depthBias = (int32_t) desc->depth.bias; + rs_desc.depthBiasClamp = desc->depth.bias_clamp; + rs_desc.depthBiasSlopeScale = desc->depth.bias_slope_scale; + + WGPUDepthStencilStateDescriptor ds_desc; + _sg_clear(&ds_desc, sizeof(ds_desc)); + ds_desc.format = _sg_wgpu_textureformat(desc->depth.pixel_format); + ds_desc.depthWriteEnabled = desc->depth.write_enabled; + ds_desc.depthCompare = _sg_wgpu_comparefunc(desc->depth.compare); + ds_desc.stencilReadMask = desc->stencil.read_mask; + ds_desc.stencilWriteMask = desc->stencil.write_mask; + ds_desc.stencilFront.compare = _sg_wgpu_comparefunc(desc->stencil.front.compare); + ds_desc.stencilFront.failOp = _sg_wgpu_stencilop(desc->stencil.front.fail_op); + ds_desc.stencilFront.depthFailOp = _sg_wgpu_stencilop(desc->stencil.front.depth_fail_op); + ds_desc.stencilFront.passOp = _sg_wgpu_stencilop(desc->stencil.front.pass_op); + ds_desc.stencilBack.compare = _sg_wgpu_comparefunc(desc->stencil.back.compare); + ds_desc.stencilBack.failOp = _sg_wgpu_stencilop(desc->stencil.back.fail_op); + ds_desc.stencilBack.depthFailOp = _sg_wgpu_stencilop(desc->stencil.back.depth_fail_op); + ds_desc.stencilBack.passOp = _sg_wgpu_stencilop(desc->stencil.back.pass_op); + + WGPUProgrammableStageDescriptor fs_desc; + _sg_clear(&fs_desc, sizeof(fs_desc)); + fs_desc.module = shd->wgpu.stage[SG_SHADERSTAGE_FS].module; + fs_desc.entryPoint = shd->wgpu.stage[SG_SHADERSTAGE_VS].entry.buf; + + WGPUColorStateDescriptor cs_desc[SG_MAX_COLOR_ATTACHMENTS]; + _sg_clear(cs_desc, sizeof(cs_desc)); + for (uint32_t i = 0; i < desc->color_count; i++) { + SOKOL_ASSERT(i < SG_MAX_COLOR_ATTACHMENTS); + cs_desc[i].format = _sg_wgpu_textureformat(desc->colors[i].pixel_format); + cs_desc[i].colorBlend.operation = _sg_wgpu_blendop(desc->colors[i].blend.op_rgb); + cs_desc[i].colorBlend.srcFactor = _sg_wgpu_blendfactor(desc->colors[i].blend.src_factor_rgb); + cs_desc[i].colorBlend.dstFactor = _sg_wgpu_blendfactor(desc->colors[i].blend.dst_factor_rgb); + cs_desc[i].alphaBlend.operation = _sg_wgpu_blendop(desc->colors[i].blend.op_alpha); + cs_desc[i].alphaBlend.srcFactor = _sg_wgpu_blendfactor(desc->colors[i].blend.src_factor_alpha); + cs_desc[i].alphaBlend.dstFactor = _sg_wgpu_blendfactor(desc->colors[i].blend.dst_factor_alpha); + cs_desc[i].writeMask = _sg_wgpu_colorwritemask(desc->colors[i].write_mask); + } + + WGPURenderPipelineDescriptor pip_desc; + _sg_clear(&pip_desc, sizeof(pip_desc)); + pip_desc.layout = pip_layout; + pip_desc.vertexStage.module = shd->wgpu.stage[SG_SHADERSTAGE_VS].module; + pip_desc.vertexStage.entryPoint = shd->wgpu.stage[SG_SHADERSTAGE_VS].entry.buf; + pip_desc.fragmentStage = &fs_desc; + pip_desc.vertexState = &vx_state_desc; + pip_desc.primitiveTopology = _sg_wgpu_topology(desc->primitive_type); + pip_desc.rasterizationState = &rs_desc; + pip_desc.sampleCount = desc->sample_count; + if (SG_PIXELFORMAT_NONE != desc->depth.pixel_format) { + pip_desc.depthStencilState = &ds_desc; + } + pip_desc.colorStateCount = desc->color_count; + pip_desc.colorStates = cs_desc; + pip_desc.sampleMask = 0xFFFFFFFF; /* FIXME: ??? */ + pip->wgpu.pip = wgpuDeviceCreateRenderPipeline(_sg.wgpu.dev, &pip_desc); + SOKOL_ASSERT(0 != pip->wgpu.pip); + wgpuPipelineLayoutRelease(pip_layout); + + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_wgpu_discard_pipeline(_sg_pipeline_t* pip) { + SOKOL_ASSERT(pip); + if (pip == _sg.wgpu.cur_pipeline) { + _sg.wgpu.cur_pipeline = 0; + _Sg.wgpu.cur_pipeline_id.id = SG_INVALID_ID; + } + if (pip->wgpu.pip) { + wgpuRenderPipelineRelease(pip->wgpu.pip); + pip->wgpu.pip = 0; + } +} + +_SOKOL_PRIVATE sg_resource_state _sg_wgpu_create_pass(_sg_pass_t* pass, _sg_image_t** att_images, const sg_pass_desc* desc) { + SOKOL_ASSERT(pass && desc); + SOKOL_ASSERT(att_images && att_images[0]); + _sg_pass_common_init(&pass->cmn, desc); + + /* copy image pointers and create render-texture views */ + const sg_pass_attachment_desc* att_desc; + for (uint32_t i = 0; i < pass->cmn.num_color_atts; i++) { + att_desc = &desc->color_attachments[i]; + if (att_desc->image.id != SG_INVALID_ID) { + SOKOL_ASSERT(att_desc->image.id != SG_INVALID_ID); + SOKOL_ASSERT(0 == pass->wgpu.color_atts[i].image); + _sg_image_t* img = att_images[i]; + SOKOL_ASSERT(img && (img->slot.id == att_desc->image.id)); + SOKOL_ASSERT(_sg_is_valid_rendertarget_color_format(img->cmn.pixel_format)); + pass->wgpu.color_atts[i].image = img; + /* create a render-texture-view to render into the right sub-surface */ + const bool is_msaa = img->cmn.sample_count > 1; + WGPUTextureViewDescriptor view_desc; + _sg_clear(&view_desc, sizeof(view_desc)); + view_desc.baseMipLevel = is_msaa ? 0 : att_desc->mip_level; + view_desc.mipLevelCount = 1; + view_desc.baseArrayLayer = is_msaa ? 0 : att_desc->slice; + view_desc.arrayLayerCount = 1; + WGPUTexture wgpu_tex = is_msaa ? img->wgpu.msaa_tex : img->wgpu.tex; + SOKOL_ASSERT(wgpu_tex); + pass->wgpu.color_atts[i].render_tex_view = wgpuTextureCreateView(wgpu_tex, &view_desc); + SOKOL_ASSERT(pass->wgpu.color_atts[i].render_tex_view); + /* ... and if needed a separate resolve texture view */ + if (is_msaa) { + view_desc.baseMipLevel = att_desc->mip_level; + view_desc.baseArrayLayer = att_desc->slice; + WGPUTexture wgpu_tex = img->wgpu.tex; + pass->wgpu.color_atts[i].resolve_tex_view = wgpuTextureCreateView(wgpu_tex, &view_desc); + SOKOL_ASSERT(pass->wgpu.color_atts[i].resolve_tex_view); + } + } + } + SOKOL_ASSERT(0 == pass->wgpu.ds_att.image); + att_desc = &desc->depth_stencil_attachment; + if (att_desc->image.id != SG_INVALID_ID) { + const int ds_img_index = SG_MAX_COLOR_ATTACHMENTS; + SOKOL_ASSERT(att_images[ds_img_index] && (att_images[ds_img_index]->slot.id == att_desc->image.id)); + SOKOL_ASSERT(_sg_is_valid_rendertarget_depth_format(att_images[ds_img_index]->cmn.pixel_format)); + _sg_image_t* ds_img = att_images[ds_img_index]; + pass->wgpu.ds_att.image = ds_img; + /* create a render-texture view */ + SOKOL_ASSERT(0 == att_desc->mip_level); + SOKOL_ASSERT(0 == att_desc->slice); + WGPUTextureViewDescriptor view_desc; + _sg_clear(&view_desc, sizeof(view_desc)); + WGPUTexture wgpu_tex = ds_img->wgpu.tex; + SOKOL_ASSERT(wgpu_tex); + pass->wgpu.ds_att.render_tex_view = wgpuTextureCreateView(wgpu_tex, &view_desc); + SOKOL_ASSERT(pass->wgpu.ds_att.render_tex_view); + } + return SG_RESOURCESTATE_VALID; +} + +_SOKOL_PRIVATE void _sg_wgpu_discard_pass(_sg_pass_t* pass) { + SOKOL_ASSERT(pass); + for (uint32_t i = 0; i < pass->cmn.num_color_atts; i++) { + if (pass->wgpu.color_atts[i].render_tex_view) { + wgpuTextureViewRelease(pass->wgpu.color_atts[i].render_tex_view); + pass->wgpu.color_atts[i].render_tex_view = 0; + } + if (pass->wgpu.color_atts[i].resolve_tex_view) { + wgpuTextureViewRelease(pass->wgpu.color_atts[i].resolve_tex_view); + pass->wgpu.color_atts[i].resolve_tex_view = 0; + } + } + if (pass->wgpu.ds_att.render_tex_view) { + wgpuTextureViewRelease(pass->wgpu.ds_att.render_tex_view); + pass->wgpu.ds_att.render_tex_view = 0; + } +} + +_SOKOL_PRIVATE _sg_image_t* _sg_wgpu_pass_color_image(const _sg_pass_t* pass, int index) { + SOKOL_ASSERT(pass && (index >= 0) && (index < SG_MAX_COLOR_ATTACHMENTS)); + /* NOTE: may return null */ + return pass->wgpu.color_atts[index].image; +} + +_SOKOL_PRIVATE _sg_image_t* _sg_wgpu_pass_ds_image(const _sg_pass_t* pass) { + /* NOTE: may return null */ + SOKOL_ASSERT(pass); + return pass->wgpu.ds_att.image; +} + +_SOKOL_PRIVATE void _sg_wgpu_begin_pass(_sg_pass_t* pass, const sg_pass_action* action, int w, int h) { + SOKOL_ASSERT(action); + SOKOL_ASSERT(!_sg.wgpu.in_pass); + SOKOL_ASSERT(_sg.wgpu.render_cmd_enc); + SOKOL_ASSERT(_sg.wgpu.dev); + SOKOL_ASSERT(_sg.wgpu.render_view_cb || _sg.wgpu.render_view_userdata_cb); + SOKOL_ASSERT(_sg.wgpu.resolve_view_cb || _sg.wgpu.resolve_view_userdata_cb); + SOKOL_ASSERT(_sg.wgpu.depth_stencil_view_cb || _sg.wgpu.depth_stencil_view_userdata_cb); + _sg.wgpu.in_pass = true; + _sg.wgpu.cur_width = w; + _sg.wgpu.cur_height = h; + _sg.wgpu.cur_pipeline = 0; + _sg.wgpu.cur_pipeline_id.id = SG_INVALID_ID; + + SOKOL_ASSERT(_sg.wgpu.render_cmd_enc); + if (pass) { + WGPURenderPassDescriptor wgpu_pass_desc; + _sg_clear(&wgpu_pass_desc, sizeof(wgpu_pass_desc)); + WGPURenderPassColorAttachmentDescriptor wgpu_color_att_desc[SG_MAX_COLOR_ATTACHMENTS]; + _sg_clear(&wgpu_color_att_desc, sizeof(wgpu_color_att_desc)); + SOKOL_ASSERT(pass->slot.state == SG_RESOURCESTATE_VALID); + for (uint32_t i = 0; i < pass->cmn.num_color_atts; i++) { + const _sg_wgpu_attachment_t* wgpu_att = &pass->wgpu.color_atts[i]; + wgpu_color_att_desc[i].loadOp = _sg_wgpu_load_op(action->colors[i].action); + wgpu_color_att_desc[i].storeOp = WGPUStoreOp_Store; + wgpu_color_att_desc[i].clearColor.r = action->colors[i].value.r; + wgpu_color_att_desc[i].clearColor.g = action->colors[i].value.g; + wgpu_color_att_desc[i].clearColor.b = action->colors[i].value.b; + wgpu_color_att_desc[i].clearColor.a = action->colors[i].value.a; + wgpu_color_att_desc[i].attachment = wgpu_att->render_tex_view; + if (wgpu_att->image->cmn.sample_count > 1) { + wgpu_color_att_desc[i].resolveTarget = wgpu_att->resolve_tex_view; + } + } + wgpu_pass_desc.colorAttachmentCount = pass->cmn.num_color_atts; + wgpu_pass_desc.colorAttachments = &wgpu_color_att_desc[0]; + if (pass->wgpu.ds_att.image) { + WGPURenderPassDepthStencilAttachmentDescriptor wgpu_ds_att_desc; + _sg_clear(&wgpu_ds_att_desc, sizeof(wgpu_ds_att_desc)); + wgpu_ds_att_desc.depthLoadOp = _sg_wgpu_load_op(action->depth.action); + wgpu_ds_att_desc.clearDepth = action->depth.value; + wgpu_ds_att_desc.stencilLoadOp = _sg_wgpu_load_op(action->stencil.action); + wgpu_ds_att_desc.clearStencil = action->stencil.value; + wgpu_ds_att_desc.attachment = pass->wgpu.ds_att.render_tex_view; + wgpu_pass_desc.depthStencilAttachment = &wgpu_ds_att_desc; + _sg.wgpu.pass_enc = wgpuCommandEncoderBeginRenderPass(_sg.wgpu.render_cmd_enc, &wgpu_pass_desc); + } + } + else { + /* default render pass */ + WGPUTextureView wgpu_render_view = _sg.wgpu.render_view_cb ? _sg.wgpu.render_view_cb() : _sg.wgpu.render_view_userdata_cb(_sg.wgpu.user_data); + WGPUTextureView wgpu_resolve_view = _sg.wgpu.resolve_view_cb ? _sg.wgpu.resolve_view_cb() : _sg.wgpu.resolve_view_userdata_cb(_sg.wgpu.user_data); + WGPUTextureView wgpu_depth_stencil_view = _sg.wgpu.depth_stencil_view_cb ? _sg.wgpu.depth_stencil_view_cb() : _sg.wgpu.depth_stencil_view_userdata_cb(_sg.wgpu.user_data); + + WGPURenderPassDescriptor pass_desc; + _sg_clear(&pass_desc, sizeof(pass_desc)); + WGPURenderPassColorAttachmentDescriptor color_att_desc; + _sg_clear(&color_att_desc, sizeof(color_att_desc)); + color_att_desc.loadOp = _sg_wgpu_load_op(action->colors[0].action); + color_att_desc.clearColor.r = action->colors[0].value.r; + color_att_desc.clearColor.g = action->colors[0].value.g; + color_att_desc.clearColor.b = action->colors[0].value.b; + color_att_desc.clearColor.a = action->colors[0].value.a; + color_att_desc.attachment = wgpu_render_view; + color_att_desc.resolveTarget = wgpu_resolve_view; /* null if no MSAA rendering */ + pass_desc.colorAttachmentCount = 1; + pass_desc.colorAttachments = &color_att_desc; + WGPURenderPassDepthStencilAttachmentDescriptor ds_att_desc; + _sg_clear(&ds_att_desc, sizeof(ds_att_desc)); + ds_att_desc.attachment = wgpu_depth_stencil_view; + SOKOL_ASSERT(0 != ds_att_desc.attachment); + ds_att_desc.depthLoadOp = _sg_wgpu_load_op(action->depth.action); + ds_att_desc.clearDepth = action->depth.value; + ds_att_desc.stencilLoadOp = _sg_wgpu_load_op(action->stencil.action); + ds_att_desc.clearStencil = action->stencil.value; + pass_desc.depthStencilAttachment = &ds_att_desc; + _sg.wgpu.pass_enc = wgpuCommandEncoderBeginRenderPass(_sg.wgpu.render_cmd_enc, &pass_desc); + } + SOKOL_ASSERT(_sg.wgpu.pass_enc); + + /* initial uniform buffer binding (required even if no uniforms are set in the frame) */ + wgpuRenderPassEncoderSetBindGroup(_sg.wgpu.pass_enc, + 0, /* groupIndex 0 is reserved for uniform buffers */ + _sg.wgpu.ub.bindgroup, + SG_NUM_SHADER_STAGES * SG_MAX_SHADERSTAGE_UBS, + &_sg.wgpu.ub.bind_offsets[0][0]); +} + +_SOKOL_PRIVATE void _sg_wgpu_end_pass(void) { + SOKOL_ASSERT(_sg.wgpu.in_pass); + SOKOL_ASSERT(_sg.wgpu.pass_enc); + _sg.wgpu.in_pass = false; + wgpuRenderPassEncoderEndPass(_sg.wgpu.pass_enc); + wgpuRenderPassEncoderRelease(_sg.wgpu.pass_enc); + _sg.wgpu.pass_enc = 0; +} + +_SOKOL_PRIVATE void _sg_wgpu_commit(void) { + SOKOL_ASSERT(!_sg.wgpu.in_pass); + SOKOL_ASSERT(_sg.wgpu.queue); + SOKOL_ASSERT(_sg.wgpu.render_cmd_enc); + SOKOL_ASSERT(_sg.wgpu.staging_cmd_enc); + + /* finish and submit this frame's work */ + _sg_wgpu_ubpool_flush(); + _sg_wgpu_staging_unmap(); + + WGPUCommandBuffer cmd_bufs[2]; + + WGPUCommandBufferDescriptor cmd_buf_desc; + _sg_clear(&cmd_buf_desc, sizeof(cmd_buf_desc)); + cmd_bufs[0] = wgpuCommandEncoderFinish(_sg.wgpu.staging_cmd_enc, &cmd_buf_desc); + SOKOL_ASSERT(cmd_bufs[0]); + wgpuCommandEncoderRelease(_sg.wgpu.staging_cmd_enc); + _sg.wgpu.staging_cmd_enc = 0; + + cmd_bufs[1] = wgpuCommandEncoderFinish(_sg.wgpu.render_cmd_enc, &cmd_buf_desc); + SOKOL_ASSERT(cmd_bufs[1]); + wgpuCommandEncoderRelease(_sg.wgpu.render_cmd_enc); + _sg.wgpu.render_cmd_enc = 0; + + wgpuQueueSubmit(_sg.wgpu.queue, 2, &cmd_bufs[0]); + + wgpuCommandBufferRelease(cmd_bufs[0]); + wgpuCommandBufferRelease(cmd_bufs[1]); + + /* create a new render- and staging-command-encoders for next frame */ + WGPUCommandEncoderDescriptor cmd_enc_desc; + _sg_clear(&cmd_enc_desc, sizeof(cmd_enc_desc)); + _sg.wgpu.staging_cmd_enc = wgpuDeviceCreateCommandEncoder(_sg.wgpu.dev, &cmd_enc_desc); + _sg.wgpu.render_cmd_enc = wgpuDeviceCreateCommandEncoder(_sg.wgpu.dev, &cmd_enc_desc); + + /* grab new staging buffers for uniform- and vertex/image-updates */ + _sg_wgpu_ubpool_next_frame(false); + _sg_wgpu_staging_next_frame(false); +} + +_SOKOL_PRIVATE void _sg_wgpu_apply_viewport(int x, int y, int w, int h, bool origin_top_left) { + SOKOL_ASSERT(_sg.wgpu.in_pass); + SOKOL_ASSERT(_sg.wgpu.pass_enc); + float xf = (float) x; + float yf = (float) (origin_top_left ? y : (_sg.wgpu.cur_height - (y + h))); + float wf = (float) w; + float hf = (float) h; + wgpuRenderPassEncoderSetViewport(_sg.wgpu.pass_enc, xf, yf, wf, hf, 0.0f, 1.0f); +} + +_SOKOL_PRIVATE void _sg_wgpu_apply_scissor_rect(int x, int y, int w, int h, bool origin_top_left) { + SOKOL_ASSERT(_sg.wgpu.in_pass); + SOKOL_ASSERT(_sg.wgpu.pass_enc); + SOKOL_ASSERT(_sg.wgpu.in_pass); + SOKOL_ASSERT(_sg.wgpu.pass_enc); + + /* clip against framebuffer rect */ + x = _sg_min(_sg_max(0, x), _sg.wgpu.cur_width-1); + y = _sg_min(_sg_max(0, y), _sg.wgpu.cur_height-1); + if ((x + w) > _sg.wgpu.cur_width) { + w = _sg.wgpu.cur_width - x; + } + if ((y + h) > _sg.wgpu.cur_height) { + h = _sg.wgpu.cur_height - y; + } + w = _sg_max(w, 1); + h = _sg_max(h, 1); + + uint32_t sx = (uint32_t) x; + uint32_t sy = origin_top_left ? y : (_sg.wgpu.cur_height - (y + h)); + uint32_t sw = w; + uint32_t sh = h; + wgpuRenderPassEncoderSetScissorRect(_sg.wgpu.pass_enc, sx, sy, sw, sh); +} + +_SOKOL_PRIVATE void _sg_wgpu_apply_pipeline(_sg_pipeline_t* pip) { + SOKOL_ASSERT(pip); + SOKOL_ASSERT(pip->wgpu.pip); + SOKOL_ASSERT(_sg.wgpu.in_pass); + SOKOL_ASSERT(_sg.wgpu.pass_enc); + _sg.wgpu.draw_indexed = (pip->cmn.index_type != SG_INDEXTYPE_NONE); + _sg.wgpu.cur_pipeline = pip; + _sg.wgpu.cur_pipeline_id.id = pip->slot.id; + wgpuRenderPassEncoderSetPipeline(_sg.wgpu.pass_enc, pip->wgpu.pip); + wgpuRenderPassEncoderSetBlendColor(_sg.wgpu.pass_enc, (WGPUColor*)&pip->cmn.blend_color); + wgpuRenderPassEncoderSetStencilReference(_sg.wgpu.pass_enc, pip->wgpu.stencil_ref); +} + +_SOKOL_PRIVATE WGPUBindGroup _sg_wgpu_create_images_bindgroup(WGPUBindGroupLayout bgl, _sg_image_t** imgs, int num_imgs) { + SOKOL_ASSERT(_sg.wgpu.dev); + SOKOL_ASSERT(num_imgs <= _SG_WGPU_MAX_SHADERSTAGE_IMAGES); + WGPUBindGroupBinding img_bgb[_SG_WGPU_MAX_SHADERSTAGE_IMAGES * 2]; + _sg_clear(&img_bgb, sizeof(img_bgb)); + for (int img_index = 0; img_index < num_imgs; img_index++) { + WGPUBindGroupBinding* tex_bdg = &img_bgb[img_index*2 + 0]; + WGPUBindGroupBinding* smp_bdg = &img_bgb[img_index*2 + 1]; + tex_bdg->binding = img_index; + tex_bdg->textureView = imgs[img_index]->wgpu.tex_view; + smp_bdg->binding = img_index + _SG_WGPU_MAX_SHADERSTAGE_IMAGES; + smp_bdg->sampler = imgs[img_index]->wgpu.sampler; + } + WGPUBindGroupDescriptor bg_desc; + _sg_clear(&bg_desc, sizeof(bg_desc)); + bg_desc.layout = bgl; + bg_desc.bindingCount = 2 * num_imgs; + bg_desc.bindings = &img_bgb[0]; + WGPUBindGroup bg = wgpuDeviceCreateBindGroup(_sg.wgpu.dev, &bg_desc); + SOKOL_ASSERT(bg); + return bg; +} + +_SOKOL_PRIVATE void _sg_wgpu_apply_bindings( + _sg_pipeline_t* pip, + _sg_buffer_t** vbs, const int* vb_offsets, int num_vbs, + _sg_buffer_t* ib, int ib_offset, + _sg_image_t** vs_imgs, int num_vs_imgs, + _sg_image_t** fs_imgs, int num_fs_imgs) +{ + SOKOL_ASSERT(_sg.wgpu.in_pass); + SOKOL_ASSERT(_sg.wgpu.pass_enc); + SOKOL_ASSERT(pip->shader && (pip->cmn.shader_id.id == pip->shader->slot.id)); + + /* index buffer */ + if (ib) { + wgpuRenderPassEncoderSetIndexBuffer(_sg.wgpu.pass_enc, ib->wgpu.buf, ib_offset); + } + + /* vertex buffers */ + for (uint32_t slot = 0; slot < (uint32_t)num_vbs; slot++) { + wgpuRenderPassEncoderSetVertexBuffer(_sg.wgpu.pass_enc, slot, vbs[slot]->wgpu.buf, (uint64_t)vb_offsets[slot]); + } + + /* need to create throw-away bind groups for images */ + if (num_vs_imgs > 0) { + if (num_vs_imgs > _SG_WGPU_MAX_SHADERSTAGE_IMAGES) { + num_vs_imgs = _SG_WGPU_MAX_SHADERSTAGE_IMAGES; + } + WGPUBindGroupLayout vs_bgl = pip->shader->wgpu.stage[SG_SHADERSTAGE_VS].bind_group_layout; + SOKOL_ASSERT(vs_bgl); + WGPUBindGroup vs_img_bg = _sg_wgpu_create_images_bindgroup(vs_bgl, vs_imgs, num_vs_imgs); + wgpuRenderPassEncoderSetBindGroup(_sg.wgpu.pass_enc, 1, vs_img_bg, 0, 0); + wgpuBindGroupRelease(vs_img_bg); + } + else { + wgpuRenderPassEncoderSetBindGroup(_sg.wgpu.pass_enc, 1, _sg.wgpu.empty_bind_group, 0, 0); + } + if (num_fs_imgs > 0) { + if (num_fs_imgs > _SG_WGPU_MAX_SHADERSTAGE_IMAGES) { + num_fs_imgs = _SG_WGPU_MAX_SHADERSTAGE_IMAGES; + } + WGPUBindGroupLayout fs_bgl = pip->shader->wgpu.stage[SG_SHADERSTAGE_FS].bind_group_layout; + SOKOL_ASSERT(fs_bgl); + WGPUBindGroup fs_img_bg = _sg_wgpu_create_images_bindgroup(fs_bgl, fs_imgs, num_fs_imgs); + wgpuRenderPassEncoderSetBindGroup(_sg.wgpu.pass_enc, 2, fs_img_bg, 0, 0); + wgpuBindGroupRelease(fs_img_bg); + } + else { + wgpuRenderPassEncoderSetBindGroup(_sg.wgpu.pass_enc, 2, _sg.wgpu.empty_bind_group, 0, 0); + } +} + +_SOKOL_PRIVATE void _sg_wgpu_apply_uniforms(sg_shader_stage stage_index, int ub_index, const sg_range* data) { + SOKOL_ASSERT(_sg.wgpu.in_pass); + SOKOL_ASSERT(_sg.wgpu.pass_enc); + SOKOL_ASSERT((_sg.wgpu.ub.offset + data->size) <= _sg.wgpu.ub.num_bytes); + SOKOL_ASSERT((_sg.wgpu.ub.offset & (_SG_WGPU_STAGING_ALIGN-1)) == 0); + SOKOL_ASSERT(_sg.wgpu.cur_pipeline && _sg.wgpu.cur_pipeline->shader); + SOKOL_ASSERT(_sg.wgpu.cur_pipeline->slot.id == _sg.wgpu.cur_pipeline_id.id); + SOKOL_ASSERT(_sg.wgpu.cur_pipeline->shader->slot.id == _sg.wgpu.cur_pipeline->cmn.shader_id.id); + SOKOL_ASSERT(ub_index < _sg.wgpu.cur_pipeline->shader->cmn.stage[stage_index].num_uniform_blocks); + SOKOL_ASSERT(data->size <= _sg.wgpu.cur_pipeline->shader->cmn.stage[stage_index].uniform_blocks[ub_index].size); + SOKOL_ASSERT(data->size <= _SG_WGPU_MAX_UNIFORM_UPDATE_SIZE); + SOKOL_ASSERT(0 != _sg.wgpu.ub.stage.ptr[_sg.wgpu.ub.stage.cur]); + + uint8_t* dst_ptr = _sg.wgpu.ub.stage.ptr[_sg.wgpu.ub.stage.cur] + _sg.wgpu.ub.offset; + memcpy(dst_ptr, data->ptr, data->size); + _sg.wgpu.ub.bind_offsets[stage_index][ub_index] = _sg.wgpu.ub.offset; + wgpuRenderPassEncoderSetBindGroup(_sg.wgpu.pass_enc, + 0, /* groupIndex 0 is reserved for uniform buffers */ + _sg.wgpu.ub.bindgroup, + SG_NUM_SHADER_STAGES * SG_MAX_SHADERSTAGE_UBS, + &_sg.wgpu.ub.bind_offsets[0][0]); + _sg.wgpu.ub.offset = _sg_roundup(_sg.wgpu.ub.offset + data->size, _SG_WGPU_STAGING_ALIGN); +} + +_SOKOL_PRIVATE void _sg_wgpu_draw(int base_element, int num_elements, int num_instances) { + SOKOL_ASSERT(_sg.wgpu.in_pass); + SOKOL_ASSERT(_sg.wgpu.pass_enc); + if (_sg.wgpu.draw_indexed) { + wgpuRenderPassEncoderDrawIndexed(_sg.wgpu.pass_enc, num_elements, num_instances, base_element, 0, 0); + } + else { + wgpuRenderPassEncoderDraw(_sg.wgpu.pass_enc, num_elements, num_instances, base_element, 0); + } +} + +_SOKOL_PRIVATE void _sg_wgpu_update_buffer(_sg_buffer_t* buf, const sg_range* data) { + SOKOL_ASSERT(buf && data && data->ptr && (data->size > 0)); + uint32_t copied_num_bytes = _sg_wgpu_staging_copy_to_buffer(buf->wgpu.buf, 0, data->ptr, data->size); + SOKOL_ASSERT(copied_num_bytes > 0); _SOKOL_UNUSED(copied_num_bytes); +} + +_SOKOL_PRIVATE int _sg_wgpu_append_buffer(_sg_buffer_t* buf, const sg_range* data, bool new_frame) { + SOKOL_ASSERT(buf && data && data->ptr && (data->size > 0)); + _SOKOL_UNUSED(new_frame); + uint32_t copied_num_bytes = _sg_wgpu_staging_copy_to_buffer(buf->wgpu.buf, buf->cmn.append_pos, data->ptr, data->size); + SOKOL_ASSERT(copied_num_bytes > 0); _SOKOL_UNUSED(copied_num_bytes); + return (int)copied_num_bytes; +} + +_SOKOL_PRIVATE void _sg_wgpu_update_image(_sg_image_t* img, const sg_image_data* data) { + SOKOL_ASSERT(img && data); + bool success = _sg_wgpu_staging_copy_to_texture(img, data); + SOKOL_ASSERT(success); + _SOKOL_UNUSED(success); +} +#endif + +// ██████ ███████ ███ ██ ███████ ██████ ██ ██████ ██████ █████ ██████ ██ ██ ███████ ███ ██ ██████ +// ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ +// ██ ███ █████ ██ ██ ██ █████ ██████ ██ ██ ██████ ███████ ██ █████ █████ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ███████ ██ ████ ███████ ██ ██ ██ ██████ ██████ ██ ██ ██████ ██ ██ ███████ ██ ████ ██████ +// +// >>generic backend +static inline void _sg_setup_backend(const sg_desc* desc) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_setup_backend(desc); + #elif defined(SOKOL_METAL) + _sg_mtl_setup_backend(desc); + #elif defined(SOKOL_D3D11) + _sg_d3d11_setup_backend(desc); + #elif defined(SOKOL_WGPU) + _sg_wgpu_setup_backend(desc); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_setup_backend(desc); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_discard_backend(void) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_discard_backend(); + #elif defined(SOKOL_METAL) + _sg_mtl_discard_backend(); + #elif defined(SOKOL_D3D11) + _sg_d3d11_discard_backend(); + #elif defined(SOKOL_WGPU) + _sg_wgpu_discard_backend(); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_discard_backend(); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_reset_state_cache(void) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_reset_state_cache(); + #elif defined(SOKOL_METAL) + _sg_mtl_reset_state_cache(); + #elif defined(SOKOL_D3D11) + _sg_d3d11_reset_state_cache(); + #elif defined(SOKOL_WGPU) + _sg_wgpu_reset_state_cache(); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_reset_state_cache(); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_activate_context(_sg_context_t* ctx) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_activate_context(ctx); + #elif defined(SOKOL_METAL) + _sg_mtl_activate_context(ctx); + #elif defined(SOKOL_D3D11) + _sg_d3d11_activate_context(ctx); + #elif defined(SOKOL_WGPU) + _sg_wgpu_activate_context(ctx); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_activate_context(ctx); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline sg_resource_state _sg_create_context(_sg_context_t* ctx) { + #if defined(_SOKOL_ANY_GL) + return _sg_gl_create_context(ctx); + #elif defined(SOKOL_METAL) + return _sg_mtl_create_context(ctx); + #elif defined(SOKOL_D3D11) + return _sg_d3d11_create_context(ctx); + #elif defined(SOKOL_WGPU) + return _sg_wgpu_create_context(ctx); + #elif defined(SOKOL_DUMMY_BACKEND) + return _sg_dummy_create_context(ctx); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_discard_context(_sg_context_t* ctx) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_discard_context(ctx); + #elif defined(SOKOL_METAL) + _sg_mtl_discard_context(ctx); + #elif defined(SOKOL_D3D11) + _sg_d3d11_discard_context(ctx); + #elif defined(SOKOL_WGPU) + _sg_wgpu_discard_context(ctx); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_discard_context(ctx); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline sg_resource_state _sg_create_buffer(_sg_buffer_t* buf, const sg_buffer_desc* desc) { + #if defined(_SOKOL_ANY_GL) + return _sg_gl_create_buffer(buf, desc); + #elif defined(SOKOL_METAL) + return _sg_mtl_create_buffer(buf, desc); + #elif defined(SOKOL_D3D11) + return _sg_d3d11_create_buffer(buf, desc); + #elif defined(SOKOL_WGPU) + return _sg_wgpu_create_buffer(buf, desc); + #elif defined(SOKOL_DUMMY_BACKEND) + return _sg_dummy_create_buffer(buf, desc); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_discard_buffer(_sg_buffer_t* buf) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_discard_buffer(buf); + #elif defined(SOKOL_METAL) + _sg_mtl_discard_buffer(buf); + #elif defined(SOKOL_D3D11) + _sg_d3d11_discard_buffer(buf); + #elif defined(SOKOL_WGPU) + _sg_wgpu_discard_buffer(buf); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_discard_buffer(buf); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline sg_resource_state _sg_create_image(_sg_image_t* img, const sg_image_desc* desc) { + #if defined(_SOKOL_ANY_GL) + return _sg_gl_create_image(img, desc); + #elif defined(SOKOL_METAL) + return _sg_mtl_create_image(img, desc); + #elif defined(SOKOL_D3D11) + return _sg_d3d11_create_image(img, desc); + #elif defined(SOKOL_WGPU) + return _sg_wgpu_create_image(img, desc); + #elif defined(SOKOL_DUMMY_BACKEND) + return _sg_dummy_create_image(img, desc); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_discard_image(_sg_image_t* img) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_discard_image(img); + #elif defined(SOKOL_METAL) + _sg_mtl_discard_image(img); + #elif defined(SOKOL_D3D11) + _sg_d3d11_discard_image(img); + #elif defined(SOKOL_WGPU) + _sg_wgpu_discard_image(img); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_discard_image(img); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline sg_resource_state _sg_create_shader(_sg_shader_t* shd, const sg_shader_desc* desc) { + #if defined(_SOKOL_ANY_GL) + return _sg_gl_create_shader(shd, desc); + #elif defined(SOKOL_METAL) + return _sg_mtl_create_shader(shd, desc); + #elif defined(SOKOL_D3D11) + return _sg_d3d11_create_shader(shd, desc); + #elif defined(SOKOL_WGPU) + return _sg_wgpu_create_shader(shd, desc); + #elif defined(SOKOL_DUMMY_BACKEND) + return _sg_dummy_create_shader(shd, desc); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_discard_shader(_sg_shader_t* shd) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_discard_shader(shd); + #elif defined(SOKOL_METAL) + _sg_mtl_discard_shader(shd); + #elif defined(SOKOL_D3D11) + _sg_d3d11_discard_shader(shd); + #elif defined(SOKOL_WGPU) + _sg_wgpu_discard_shader(shd); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_discard_shader(shd); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline sg_resource_state _sg_create_pipeline(_sg_pipeline_t* pip, _sg_shader_t* shd, const sg_pipeline_desc* desc) { + #if defined(_SOKOL_ANY_GL) + return _sg_gl_create_pipeline(pip, shd, desc); + #elif defined(SOKOL_METAL) + return _sg_mtl_create_pipeline(pip, shd, desc); + #elif defined(SOKOL_D3D11) + return _sg_d3d11_create_pipeline(pip, shd, desc); + #elif defined(SOKOL_WGPU) + return _sg_wgpu_create_pipeline(pip, shd, desc); + #elif defined(SOKOL_DUMMY_BACKEND) + return _sg_dummy_create_pipeline(pip, shd, desc); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_discard_pipeline(_sg_pipeline_t* pip) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_discard_pipeline(pip); + #elif defined(SOKOL_METAL) + _sg_mtl_discard_pipeline(pip); + #elif defined(SOKOL_D3D11) + _sg_d3d11_discard_pipeline(pip); + #elif defined(SOKOL_WGPU) + _sg_wgpu_discard_pipeline(pip); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_discard_pipeline(pip); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline sg_resource_state _sg_create_pass(_sg_pass_t* pass, _sg_image_t** att_images, const sg_pass_desc* desc) { + #if defined(_SOKOL_ANY_GL) + return _sg_gl_create_pass(pass, att_images, desc); + #elif defined(SOKOL_METAL) + return _sg_mtl_create_pass(pass, att_images, desc); + #elif defined(SOKOL_D3D11) + return _sg_d3d11_create_pass(pass, att_images, desc); + #elif defined(SOKOL_WGPU) + return _sg_wgpu_create_pass(pass, att_images, desc); + #elif defined(SOKOL_DUMMY_BACKEND) + return _sg_dummy_create_pass(pass, att_images, desc); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_discard_pass(_sg_pass_t* pass) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_discard_pass(pass); + #elif defined(SOKOL_METAL) + _sg_mtl_discard_pass(pass); + #elif defined(SOKOL_D3D11) + _sg_d3d11_discard_pass(pass); + #elif defined(SOKOL_WGPU) + return _sg_wgpu_discard_pass(pass); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_discard_pass(pass); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline _sg_image_t* _sg_pass_color_image(const _sg_pass_t* pass, int index) { + #if defined(_SOKOL_ANY_GL) + return _sg_gl_pass_color_image(pass, index); + #elif defined(SOKOL_METAL) + return _sg_mtl_pass_color_image(pass, index); + #elif defined(SOKOL_D3D11) + return _sg_d3d11_pass_color_image(pass, index); + #elif defined(SOKOL_WGPU) + return _sg_wgpu_pass_color_image(pass, index); + #elif defined(SOKOL_DUMMY_BACKEND) + return _sg_dummy_pass_color_image(pass, index); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline _sg_image_t* _sg_pass_ds_image(const _sg_pass_t* pass) { + #if defined(_SOKOL_ANY_GL) + return _sg_gl_pass_ds_image(pass); + #elif defined(SOKOL_METAL) + return _sg_mtl_pass_ds_image(pass); + #elif defined(SOKOL_D3D11) + return _sg_d3d11_pass_ds_image(pass); + #elif defined(SOKOL_WGPU) + return _sg_wgpu_pass_ds_image(pass); + #elif defined(SOKOL_DUMMY_BACKEND) + return _sg_dummy_pass_ds_image(pass); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_begin_pass(_sg_pass_t* pass, const sg_pass_action* action, int w, int h) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_begin_pass(pass, action, w, h); + #elif defined(SOKOL_METAL) + _sg_mtl_begin_pass(pass, action, w, h); + #elif defined(SOKOL_D3D11) + _sg_d3d11_begin_pass(pass, action, w, h); + #elif defined(SOKOL_WGPU) + _sg_wgpu_begin_pass(pass, action, w, h); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_begin_pass(pass, action, w, h); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_end_pass(void) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_end_pass(); + #elif defined(SOKOL_METAL) + _sg_mtl_end_pass(); + #elif defined(SOKOL_D3D11) + _sg_d3d11_end_pass(); + #elif defined(SOKOL_WGPU) + _sg_wgpu_end_pass(); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_end_pass(); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_apply_viewport(int x, int y, int w, int h, bool origin_top_left) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_apply_viewport(x, y, w, h, origin_top_left); + #elif defined(SOKOL_METAL) + _sg_mtl_apply_viewport(x, y, w, h, origin_top_left); + #elif defined(SOKOL_D3D11) + _sg_d3d11_apply_viewport(x, y, w, h, origin_top_left); + #elif defined(SOKOL_WGPU) + _sg_wgpu_apply_viewport(x, y, w, h, origin_top_left); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_apply_viewport(x, y, w, h, origin_top_left); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_apply_scissor_rect(int x, int y, int w, int h, bool origin_top_left) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_apply_scissor_rect(x, y, w, h, origin_top_left); + #elif defined(SOKOL_METAL) + _sg_mtl_apply_scissor_rect(x, y, w, h, origin_top_left); + #elif defined(SOKOL_D3D11) + _sg_d3d11_apply_scissor_rect(x, y, w, h, origin_top_left); + #elif defined(SOKOL_WGPU) + _sg_wgpu_apply_scissor_rect(x, y, w, h, origin_top_left); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_apply_scissor_rect(x, y, w, h, origin_top_left); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_apply_pipeline(_sg_pipeline_t* pip) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_apply_pipeline(pip); + #elif defined(SOKOL_METAL) + _sg_mtl_apply_pipeline(pip); + #elif defined(SOKOL_D3D11) + _sg_d3d11_apply_pipeline(pip); + #elif defined(SOKOL_WGPU) + _sg_wgpu_apply_pipeline(pip); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_apply_pipeline(pip); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_apply_bindings( + _sg_pipeline_t* pip, + _sg_buffer_t** vbs, const int* vb_offsets, int num_vbs, + _sg_buffer_t* ib, int ib_offset, + _sg_image_t** vs_imgs, int num_vs_imgs, + _sg_image_t** fs_imgs, int num_fs_imgs) +{ + #if defined(_SOKOL_ANY_GL) + _sg_gl_apply_bindings(pip, vbs, vb_offsets, num_vbs, ib, ib_offset, vs_imgs, num_vs_imgs, fs_imgs, num_fs_imgs); + #elif defined(SOKOL_METAL) + _sg_mtl_apply_bindings(pip, vbs, vb_offsets, num_vbs, ib, ib_offset, vs_imgs, num_vs_imgs, fs_imgs, num_fs_imgs); + #elif defined(SOKOL_D3D11) + _sg_d3d11_apply_bindings(pip, vbs, vb_offsets, num_vbs, ib, ib_offset, vs_imgs, num_vs_imgs, fs_imgs, num_fs_imgs); + #elif defined(SOKOL_WGPU) + _sg_wgpu_apply_bindings(pip, vbs, vb_offsets, num_vbs, ib, ib_offset, vs_imgs, num_vs_imgs, fs_imgs, num_fs_imgs); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_apply_bindings(pip, vbs, vb_offsets, num_vbs, ib, ib_offset, vs_imgs, num_vs_imgs, fs_imgs, num_fs_imgs); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_apply_uniforms(sg_shader_stage stage_index, int ub_index, const sg_range* data) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_apply_uniforms(stage_index, ub_index, data); + #elif defined(SOKOL_METAL) + _sg_mtl_apply_uniforms(stage_index, ub_index, data); + #elif defined(SOKOL_D3D11) + _sg_d3d11_apply_uniforms(stage_index, ub_index, data); + #elif defined(SOKOL_WGPU) + _sg_wgpu_apply_uniforms(stage_index, ub_index, data); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_apply_uniforms(stage_index, ub_index, data); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_draw(int base_element, int num_elements, int num_instances) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_draw(base_element, num_elements, num_instances); + #elif defined(SOKOL_METAL) + _sg_mtl_draw(base_element, num_elements, num_instances); + #elif defined(SOKOL_D3D11) + _sg_d3d11_draw(base_element, num_elements, num_instances); + #elif defined(SOKOL_WGPU) + _sg_wgpu_draw(base_element, num_elements, num_instances); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_draw(base_element, num_elements, num_instances); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_commit(void) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_commit(); + #elif defined(SOKOL_METAL) + _sg_mtl_commit(); + #elif defined(SOKOL_D3D11) + _sg_d3d11_commit(); + #elif defined(SOKOL_WGPU) + _sg_wgpu_commit(); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_commit(); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_update_buffer(_sg_buffer_t* buf, const sg_range* data) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_update_buffer(buf, data); + #elif defined(SOKOL_METAL) + _sg_mtl_update_buffer(buf, data); + #elif defined(SOKOL_D3D11) + _sg_d3d11_update_buffer(buf, data); + #elif defined(SOKOL_WGPU) + _sg_wgpu_update_buffer(buf, data); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_update_buffer(buf, data); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline int _sg_append_buffer(_sg_buffer_t* buf, const sg_range* data, bool new_frame) { + #if defined(_SOKOL_ANY_GL) + return _sg_gl_append_buffer(buf, data, new_frame); + #elif defined(SOKOL_METAL) + return _sg_mtl_append_buffer(buf, data, new_frame); + #elif defined(SOKOL_D3D11) + return _sg_d3d11_append_buffer(buf, data, new_frame); + #elif defined(SOKOL_WGPU) + return _sg_wgpu_append_buffer(buf, data, new_frame); + #elif defined(SOKOL_DUMMY_BACKEND) + return _sg_dummy_append_buffer(buf, data, new_frame); + #else + #error("INVALID BACKEND"); + #endif +} + +static inline void _sg_update_image(_sg_image_t* img, const sg_image_data* data) { + #if defined(_SOKOL_ANY_GL) + _sg_gl_update_image(img, data); + #elif defined(SOKOL_METAL) + _sg_mtl_update_image(img, data); + #elif defined(SOKOL_D3D11) + _sg_d3d11_update_image(img, data); + #elif defined(SOKOL_WGPU) + _sg_wgpu_update_image(img, data); + #elif defined(SOKOL_DUMMY_BACKEND) + _sg_dummy_update_image(img, data); + #else + #error("INVALID BACKEND"); + #endif +} + +// ██████ ██████ ██████ ██ +// ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ +// ██ ██████ ██████ ███████ +// +// >>pool +_SOKOL_PRIVATE void _sg_init_pool(_sg_pool_t* pool, int num) { + SOKOL_ASSERT(pool && (num >= 1)); + /* slot 0 is reserved for the 'invalid id', so bump the pool size by 1 */ + pool->size = num + 1; + pool->queue_top = 0; + /* generation counters indexable by pool slot index, slot 0 is reserved */ + size_t gen_ctrs_size = sizeof(uint32_t) * (size_t)pool->size; + pool->gen_ctrs = (uint32_t*)_sg_malloc_clear(gen_ctrs_size); + /* it's not a bug to only reserve 'num' here */ + pool->free_queue = (int*) _sg_malloc_clear(sizeof(int) * (size_t)num); + /* never allocate the zero-th pool item since the invalid id is 0 */ + for (int i = pool->size-1; i >= 1; i--) { + pool->free_queue[pool->queue_top++] = i; + } +} + +_SOKOL_PRIVATE void _sg_discard_pool(_sg_pool_t* pool) { + SOKOL_ASSERT(pool); + SOKOL_ASSERT(pool->free_queue); + _sg_free(pool->free_queue); + pool->free_queue = 0; + SOKOL_ASSERT(pool->gen_ctrs); + _sg_free(pool->gen_ctrs); + pool->gen_ctrs = 0; + pool->size = 0; + pool->queue_top = 0; +} + +_SOKOL_PRIVATE int _sg_pool_alloc_index(_sg_pool_t* pool) { + SOKOL_ASSERT(pool); + SOKOL_ASSERT(pool->free_queue); + if (pool->queue_top > 0) { + int slot_index = pool->free_queue[--pool->queue_top]; + SOKOL_ASSERT((slot_index > 0) && (slot_index < pool->size)); + return slot_index; + } + else { + /* pool exhausted */ + return _SG_INVALID_SLOT_INDEX; + } +} + +_SOKOL_PRIVATE void _sg_pool_free_index(_sg_pool_t* pool, int slot_index) { + SOKOL_ASSERT((slot_index > _SG_INVALID_SLOT_INDEX) && (slot_index < pool->size)); + SOKOL_ASSERT(pool); + SOKOL_ASSERT(pool->free_queue); + SOKOL_ASSERT(pool->queue_top < pool->size); + #ifdef SOKOL_DEBUG + /* debug check against double-free */ + for (int i = 0; i < pool->queue_top; i++) { + SOKOL_ASSERT(pool->free_queue[i] != slot_index); + } + #endif + pool->free_queue[pool->queue_top++] = slot_index; + SOKOL_ASSERT(pool->queue_top <= (pool->size-1)); +} + +_SOKOL_PRIVATE void _sg_reset_slot(_sg_slot_t* slot) { + SOKOL_ASSERT(slot); + _sg_clear(slot, sizeof(_sg_slot_t)); +} + +_SOKOL_PRIVATE void _sg_reset_buffer_to_alloc_state(_sg_buffer_t* buf) { + SOKOL_ASSERT(buf); + _sg_slot_t slot = buf->slot; + _sg_clear(buf, sizeof(_sg_buffer_t)); + buf->slot = slot; + buf->slot.state = SG_RESOURCESTATE_ALLOC; +} + +_SOKOL_PRIVATE void _sg_reset_image_to_alloc_state(_sg_image_t* img) { + SOKOL_ASSERT(img); + _sg_slot_t slot = img->slot; + _sg_clear(img, sizeof(_sg_image_t)); + img->slot = slot; + img->slot.state = SG_RESOURCESTATE_ALLOC; +} + +_SOKOL_PRIVATE void _sg_reset_shader_to_alloc_state(_sg_shader_t* shd) { + SOKOL_ASSERT(shd); + _sg_slot_t slot = shd->slot; + _sg_clear(shd, sizeof(_sg_shader_t)); + shd->slot = slot; + shd->slot.state = SG_RESOURCESTATE_ALLOC; +} + +_SOKOL_PRIVATE void _sg_reset_pipeline_to_alloc_state(_sg_pipeline_t* pip) { + SOKOL_ASSERT(pip); + _sg_slot_t slot = pip->slot; + _sg_clear(pip, sizeof(_sg_pipeline_t)); + pip->slot = slot; + pip->slot.state = SG_RESOURCESTATE_ALLOC; +} + +_SOKOL_PRIVATE void _sg_reset_pass_to_alloc_state(_sg_pass_t* pass) { + SOKOL_ASSERT(pass); + _sg_slot_t slot = pass->slot; + _sg_clear(pass, sizeof(_sg_pass_t)); + pass->slot = slot; + pass->slot.state = SG_RESOURCESTATE_ALLOC; +} + +_SOKOL_PRIVATE void _sg_reset_context_to_alloc_state(_sg_context_t* ctx) { + SOKOL_ASSERT(ctx); + _sg_slot_t slot = ctx->slot; + _sg_clear(ctx, sizeof(_sg_context_t)); + ctx->slot = slot; + ctx->slot.state = SG_RESOURCESTATE_ALLOC; +} + +_SOKOL_PRIVATE void _sg_setup_pools(_sg_pools_t* p, const sg_desc* desc) { + SOKOL_ASSERT(p); + SOKOL_ASSERT(desc); + /* note: the pools here will have an additional item, since slot 0 is reserved */ + SOKOL_ASSERT((desc->buffer_pool_size > 0) && (desc->buffer_pool_size < _SG_MAX_POOL_SIZE)); + _sg_init_pool(&p->buffer_pool, desc->buffer_pool_size); + size_t buffer_pool_byte_size = sizeof(_sg_buffer_t) * (size_t)p->buffer_pool.size; + p->buffers = (_sg_buffer_t*) _sg_malloc_clear(buffer_pool_byte_size); + + SOKOL_ASSERT((desc->image_pool_size > 0) && (desc->image_pool_size < _SG_MAX_POOL_SIZE)); + _sg_init_pool(&p->image_pool, desc->image_pool_size); + size_t image_pool_byte_size = sizeof(_sg_image_t) * (size_t)p->image_pool.size; + p->images = (_sg_image_t*) _sg_malloc_clear(image_pool_byte_size); + + SOKOL_ASSERT((desc->shader_pool_size > 0) && (desc->shader_pool_size < _SG_MAX_POOL_SIZE)); + _sg_init_pool(&p->shader_pool, desc->shader_pool_size); + size_t shader_pool_byte_size = sizeof(_sg_shader_t) * (size_t)p->shader_pool.size; + p->shaders = (_sg_shader_t*) _sg_malloc_clear(shader_pool_byte_size); + + SOKOL_ASSERT((desc->pipeline_pool_size > 0) && (desc->pipeline_pool_size < _SG_MAX_POOL_SIZE)); + _sg_init_pool(&p->pipeline_pool, desc->pipeline_pool_size); + size_t pipeline_pool_byte_size = sizeof(_sg_pipeline_t) * (size_t)p->pipeline_pool.size; + p->pipelines = (_sg_pipeline_t*) _sg_malloc_clear(pipeline_pool_byte_size); + + SOKOL_ASSERT((desc->pass_pool_size > 0) && (desc->pass_pool_size < _SG_MAX_POOL_SIZE)); + _sg_init_pool(&p->pass_pool, desc->pass_pool_size); + size_t pass_pool_byte_size = sizeof(_sg_pass_t) * (size_t)p->pass_pool.size; + p->passes = (_sg_pass_t*) _sg_malloc_clear(pass_pool_byte_size); + + SOKOL_ASSERT((desc->context_pool_size > 0) && (desc->context_pool_size < _SG_MAX_POOL_SIZE)); + _sg_init_pool(&p->context_pool, desc->context_pool_size); + size_t context_pool_byte_size = sizeof(_sg_context_t) * (size_t)p->context_pool.size; + p->contexts = (_sg_context_t*) _sg_malloc_clear(context_pool_byte_size); +} + +_SOKOL_PRIVATE void _sg_discard_pools(_sg_pools_t* p) { + SOKOL_ASSERT(p); + _sg_free(p->contexts); p->contexts = 0; + _sg_free(p->passes); p->passes = 0; + _sg_free(p->pipelines); p->pipelines = 0; + _sg_free(p->shaders); p->shaders = 0; + _sg_free(p->images); p->images = 0; + _sg_free(p->buffers); p->buffers = 0; + _sg_discard_pool(&p->context_pool); + _sg_discard_pool(&p->pass_pool); + _sg_discard_pool(&p->pipeline_pool); + _sg_discard_pool(&p->shader_pool); + _sg_discard_pool(&p->image_pool); + _sg_discard_pool(&p->buffer_pool); +} + +/* allocate the slot at slot_index: + - bump the slot's generation counter + - create a resource id from the generation counter and slot index + - set the slot's id to this id + - set the slot's state to ALLOC + - return the resource id +*/ +_SOKOL_PRIVATE uint32_t _sg_slot_alloc(_sg_pool_t* pool, _sg_slot_t* slot, int slot_index) { + /* FIXME: add handling for an overflowing generation counter, + for now, just overflow (another option is to disable + the slot) + */ + SOKOL_ASSERT(pool && pool->gen_ctrs); + SOKOL_ASSERT((slot_index > _SG_INVALID_SLOT_INDEX) && (slot_index < pool->size)); + SOKOL_ASSERT((slot->state == SG_RESOURCESTATE_INITIAL) && (slot->id == SG_INVALID_ID)); + uint32_t ctr = ++pool->gen_ctrs[slot_index]; + slot->id = (ctr<<_SG_SLOT_SHIFT)|(slot_index & _SG_SLOT_MASK); + slot->state = SG_RESOURCESTATE_ALLOC; + return slot->id; +} + +/* extract slot index from id */ +_SOKOL_PRIVATE int _sg_slot_index(uint32_t id) { + int slot_index = (int) (id & _SG_SLOT_MASK); + SOKOL_ASSERT(_SG_INVALID_SLOT_INDEX != slot_index); + return slot_index; +} + +/* returns pointer to resource by id without matching id check */ +_SOKOL_PRIVATE _sg_buffer_t* _sg_buffer_at(const _sg_pools_t* p, uint32_t buf_id) { + SOKOL_ASSERT(p && (SG_INVALID_ID != buf_id)); + int slot_index = _sg_slot_index(buf_id); + SOKOL_ASSERT((slot_index > _SG_INVALID_SLOT_INDEX) && (slot_index < p->buffer_pool.size)); + return &p->buffers[slot_index]; +} + +_SOKOL_PRIVATE _sg_image_t* _sg_image_at(const _sg_pools_t* p, uint32_t img_id) { + SOKOL_ASSERT(p && (SG_INVALID_ID != img_id)); + int slot_index = _sg_slot_index(img_id); + SOKOL_ASSERT((slot_index > _SG_INVALID_SLOT_INDEX) && (slot_index < p->image_pool.size)); + return &p->images[slot_index]; +} + +_SOKOL_PRIVATE _sg_shader_t* _sg_shader_at(const _sg_pools_t* p, uint32_t shd_id) { + SOKOL_ASSERT(p && (SG_INVALID_ID != shd_id)); + int slot_index = _sg_slot_index(shd_id); + SOKOL_ASSERT((slot_index > _SG_INVALID_SLOT_INDEX) && (slot_index < p->shader_pool.size)); + return &p->shaders[slot_index]; +} + +_SOKOL_PRIVATE _sg_pipeline_t* _sg_pipeline_at(const _sg_pools_t* p, uint32_t pip_id) { + SOKOL_ASSERT(p && (SG_INVALID_ID != pip_id)); + int slot_index = _sg_slot_index(pip_id); + SOKOL_ASSERT((slot_index > _SG_INVALID_SLOT_INDEX) && (slot_index < p->pipeline_pool.size)); + return &p->pipelines[slot_index]; +} + +_SOKOL_PRIVATE _sg_pass_t* _sg_pass_at(const _sg_pools_t* p, uint32_t pass_id) { + SOKOL_ASSERT(p && (SG_INVALID_ID != pass_id)); + int slot_index = _sg_slot_index(pass_id); + SOKOL_ASSERT((slot_index > _SG_INVALID_SLOT_INDEX) && (slot_index < p->pass_pool.size)); + return &p->passes[slot_index]; +} + +_SOKOL_PRIVATE _sg_context_t* _sg_context_at(const _sg_pools_t* p, uint32_t context_id) { + SOKOL_ASSERT(p && (SG_INVALID_ID != context_id)); + int slot_index = _sg_slot_index(context_id); + SOKOL_ASSERT((slot_index > _SG_INVALID_SLOT_INDEX) && (slot_index < p->context_pool.size)); + return &p->contexts[slot_index]; +} + +/* returns pointer to resource with matching id check, may return 0 */ +_SOKOL_PRIVATE _sg_buffer_t* _sg_lookup_buffer(const _sg_pools_t* p, uint32_t buf_id) { + if (SG_INVALID_ID != buf_id) { + _sg_buffer_t* buf = _sg_buffer_at(p, buf_id); + if (buf->slot.id == buf_id) { + return buf; + } + } + return 0; +} + +_SOKOL_PRIVATE _sg_image_t* _sg_lookup_image(const _sg_pools_t* p, uint32_t img_id) { + if (SG_INVALID_ID != img_id) { + _sg_image_t* img = _sg_image_at(p, img_id); + if (img->slot.id == img_id) { + return img; + } + } + return 0; +} + +_SOKOL_PRIVATE _sg_shader_t* _sg_lookup_shader(const _sg_pools_t* p, uint32_t shd_id) { + SOKOL_ASSERT(p); + if (SG_INVALID_ID != shd_id) { + _sg_shader_t* shd = _sg_shader_at(p, shd_id); + if (shd->slot.id == shd_id) { + return shd; + } + } + return 0; +} + +_SOKOL_PRIVATE _sg_pipeline_t* _sg_lookup_pipeline(const _sg_pools_t* p, uint32_t pip_id) { + SOKOL_ASSERT(p); + if (SG_INVALID_ID != pip_id) { + _sg_pipeline_t* pip = _sg_pipeline_at(p, pip_id); + if (pip->slot.id == pip_id) { + return pip; + } + } + return 0; +} + +_SOKOL_PRIVATE _sg_pass_t* _sg_lookup_pass(const _sg_pools_t* p, uint32_t pass_id) { + SOKOL_ASSERT(p); + if (SG_INVALID_ID != pass_id) { + _sg_pass_t* pass = _sg_pass_at(p, pass_id); + if (pass->slot.id == pass_id) { + return pass; + } + } + return 0; +} + +_SOKOL_PRIVATE _sg_context_t* _sg_lookup_context(const _sg_pools_t* p, uint32_t ctx_id) { + SOKOL_ASSERT(p); + if (SG_INVALID_ID != ctx_id) { + _sg_context_t* ctx = _sg_context_at(p, ctx_id); + if (ctx->slot.id == ctx_id) { + return ctx; + } + } + return 0; +} + +_SOKOL_PRIVATE void _sg_discard_all_resources(_sg_pools_t* p, uint32_t ctx_id) { + /* this is a bit dumb since it loops over all pool slots to + find the occupied slots, on the other hand it is only ever + executed at shutdown + NOTE: ONLY EXECUTE THIS AT SHUTDOWN + ...because the free queues will not be reset + and the resource slots not be cleared! + */ + for (int i = 1; i < p->buffer_pool.size; i++) { + if (p->buffers[i].slot.ctx_id == ctx_id) { + sg_resource_state state = p->buffers[i].slot.state; + if ((state == SG_RESOURCESTATE_VALID) || (state == SG_RESOURCESTATE_FAILED)) { + _sg_discard_buffer(&p->buffers[i]); + } + } + } + for (int i = 1; i < p->image_pool.size; i++) { + if (p->images[i].slot.ctx_id == ctx_id) { + sg_resource_state state = p->images[i].slot.state; + if ((state == SG_RESOURCESTATE_VALID) || (state == SG_RESOURCESTATE_FAILED)) { + _sg_discard_image(&p->images[i]); + } + } + } + for (int i = 1; i < p->shader_pool.size; i++) { + if (p->shaders[i].slot.ctx_id == ctx_id) { + sg_resource_state state = p->shaders[i].slot.state; + if ((state == SG_RESOURCESTATE_VALID) || (state == SG_RESOURCESTATE_FAILED)) { + _sg_discard_shader(&p->shaders[i]); + } + } + } + for (int i = 1; i < p->pipeline_pool.size; i++) { + if (p->pipelines[i].slot.ctx_id == ctx_id) { + sg_resource_state state = p->pipelines[i].slot.state; + if ((state == SG_RESOURCESTATE_VALID) || (state == SG_RESOURCESTATE_FAILED)) { + _sg_discard_pipeline(&p->pipelines[i]); + } + } + } + for (int i = 1; i < p->pass_pool.size; i++) { + if (p->passes[i].slot.ctx_id == ctx_id) { + sg_resource_state state = p->passes[i].slot.state; + if ((state == SG_RESOURCESTATE_VALID) || (state == SG_RESOURCESTATE_FAILED)) { + _sg_discard_pass(&p->passes[i]); + } + } + } +} + +// ██ ██ █████ ██ ██ ██████ █████ ████████ ██ ██████ ███ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ +// ██ ██ ███████ ██ ██ ██ ██ ███████ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ████ ██ ██ ███████ ██ ██████ ██ ██ ██ ██ ██████ ██ ████ +// +// >>validation +#if defined(SOKOL_DEBUG) +_SOKOL_PRIVATE void _sg_validate_begin(void) { + _sg.validate_error = SG_LOGITEM_OK; +} + +_SOKOL_PRIVATE bool _sg_validate_end(void) { + if (_sg.validate_error != SG_LOGITEM_OK) { + #if !defined(SOKOL_VALIDATE_NON_FATAL) + _SG_PANIC(VALIDATION_FAILED); + return false; + #else + return false; + #endif + } + else { + return true; + } +} +#endif + +_SOKOL_PRIVATE bool _sg_validate_buffer_desc(const sg_buffer_desc* desc) { + #if !defined(SOKOL_DEBUG) + _SOKOL_UNUSED(desc); + return true; + #else + if (_sg.desc.disable_validation) { + return true; + } + SOKOL_ASSERT(desc); + _sg_validate_begin(); + _SG_VALIDATE(desc->_start_canary == 0, VALIDATE_BUFFERDESC_CANARY); + _SG_VALIDATE(desc->_end_canary == 0, VALIDATE_BUFFERDESC_CANARY); + _SG_VALIDATE(desc->size > 0, VALIDATE_BUFFERDESC_SIZE); + bool injected = (0 != desc->gl_buffers[0]) || + (0 != desc->mtl_buffers[0]) || + (0 != desc->d3d11_buffer) || + (0 != desc->wgpu_buffer); + if (!injected && (desc->usage == SG_USAGE_IMMUTABLE)) { + _SG_VALIDATE((0 != desc->data.ptr) && (desc->data.size > 0), VALIDATE_BUFFERDESC_DATA); + _SG_VALIDATE(desc->size == desc->data.size, VALIDATE_BUFFERDESC_DATA_SIZE); + } + else { + _SG_VALIDATE(0 == desc->data.ptr, VALIDATE_BUFFERDESC_NO_DATA); + } + return _sg_validate_end(); + #endif +} + +_SOKOL_PRIVATE void _sg_validate_image_data(const sg_image_data* data, sg_pixel_format fmt, int width, int height, int num_faces, int num_mips, int num_slices) { + #if !defined(SOKOL_DEBUG) + _SOKOL_UNUSED(data); + _SOKOL_UNUSED(fmt); + _SOKOL_UNUSED(width); + _SOKOL_UNUSED(height); + _SOKOL_UNUSED(num_faces); + _SOKOL_UNUSED(num_mips); + _SOKOL_UNUSED(num_slices); + #else + for (int face_index = 0; face_index < num_faces; face_index++) { + for (int mip_index = 0; mip_index < num_mips; mip_index++) { + const bool has_data = data->subimage[face_index][mip_index].ptr != 0; + const bool has_size = data->subimage[face_index][mip_index].size > 0; + _SG_VALIDATE(has_data && has_size, VALIDATE_IMAGEDATA_NODATA); + const int mip_width = _sg_max(width >> mip_index, 1); + const int mip_height = _sg_max(height >> mip_index, 1); + const int bytes_per_slice = _sg_surface_pitch(fmt, mip_width, mip_height, 1); + const int expected_size = bytes_per_slice * num_slices; + _SG_VALIDATE(expected_size == (int)data->subimage[face_index][mip_index].size, VALIDATE_IMAGEDATA_DATA_SIZE); + } + } + #endif +} + +_SOKOL_PRIVATE bool _sg_validate_image_desc(const sg_image_desc* desc) { + #if !defined(SOKOL_DEBUG) + _SOKOL_UNUSED(desc); + return true; + #else + if (_sg.desc.disable_validation) { + return true; + } + SOKOL_ASSERT(desc); + _sg_validate_begin(); + _SG_VALIDATE(desc->_start_canary == 0, VALIDATE_IMAGEDESC_CANARY); + _SG_VALIDATE(desc->_end_canary == 0, VALIDATE_IMAGEDESC_CANARY); + _SG_VALIDATE(desc->width > 0, VALIDATE_IMAGEDESC_WIDTH); + _SG_VALIDATE(desc->height > 0, VALIDATE_IMAGEDESC_HEIGHT); + const sg_pixel_format fmt = desc->pixel_format; + const sg_usage usage = desc->usage; + const bool injected = (0 != desc->gl_textures[0]) || + (0 != desc->mtl_textures[0]) || + (0 != desc->d3d11_texture) || + (0 != desc->wgpu_texture); + if (desc->render_target) { + SOKOL_ASSERT(((int)fmt >= 0) && ((int)fmt < _SG_PIXELFORMAT_NUM)); + _SG_VALIDATE(_sg.formats[fmt].render, VALIDATE_IMAGEDESC_RT_PIXELFORMAT); + if (desc->sample_count > 1) { + _SG_VALIDATE(_sg.formats[fmt].msaa, VALIDATE_IMAGEDESC_NO_MSAA_RT_SUPPORT); + } + _SG_VALIDATE(usage == SG_USAGE_IMMUTABLE, VALIDATE_IMAGEDESC_RT_IMMUTABLE); + _SG_VALIDATE(desc->data.subimage[0][0].ptr==0, VALIDATE_IMAGEDESC_RT_NO_DATA); + } + else { + _SG_VALIDATE(desc->sample_count <= 1, VALIDATE_IMAGEDESC_MSAA_BUT_NO_RT); + const bool valid_nonrt_fmt = !_sg_is_valid_rendertarget_depth_format(fmt); + _SG_VALIDATE(valid_nonrt_fmt, VALIDATE_IMAGEDESC_NONRT_PIXELFORMAT); + const bool is_compressed = _sg_is_compressed_pixel_format(desc->pixel_format); + const bool is_immutable = (usage == SG_USAGE_IMMUTABLE); + if (is_compressed) { + _SG_VALIDATE(is_immutable, VALIDATE_IMAGEDESC_COMPRESSED_IMMUTABLE); + } + if (!injected && is_immutable) { + // image desc must have valid data + _sg_validate_image_data(&desc->data, + desc->pixel_format, + desc->width, + desc->height, + (desc->type == SG_IMAGETYPE_CUBE) ? 6 : 1, + desc->num_mipmaps, + desc->num_slices); + } + else { + // image desc must not have data + for (int face_index = 0; face_index < SG_CUBEFACE_NUM; face_index++) { + for (int mip_index = 0; mip_index < SG_MAX_MIPMAPS; mip_index++) { + const bool no_data = 0 == desc->data.subimage[face_index][mip_index].ptr; + const bool no_size = 0 == desc->data.subimage[face_index][mip_index].size; + if (injected) { + _SG_VALIDATE(no_data && no_size, VALIDATE_IMAGEDESC_INJECTED_NO_DATA); + } + if (!is_immutable) { + _SG_VALIDATE(no_data && no_size, VALIDATE_IMAGEDESC_DYNAMIC_NO_DATA); + } + } + } + } + } + return _sg_validate_end(); + #endif +} + +_SOKOL_PRIVATE bool _sg_validate_shader_desc(const sg_shader_desc* desc) { + #if !defined(SOKOL_DEBUG) + _SOKOL_UNUSED(desc); + return true; + #else + if (_sg.desc.disable_validation) { + return true; + } + SOKOL_ASSERT(desc); + _sg_validate_begin(); + _SG_VALIDATE(desc->_start_canary == 0, VALIDATE_SHADERDESC_CANARY); + _SG_VALIDATE(desc->_end_canary == 0, VALIDATE_SHADERDESC_CANARY); + #if defined(SOKOL_D3D11) + _SG_VALIDATE(0 != desc->attrs[0].sem_name, VALIDATE_SHADERDESC_ATTR_SEMANTICS); + #endif + #if defined(SOKOL_GLCORE33) || defined(SOKOL_GLES3) + /* on GL, must provide shader source code */ + _SG_VALIDATE(0 != desc->vs.source, VALIDATE_SHADERDESC_SOURCE); + _SG_VALIDATE(0 != desc->fs.source, VALIDATE_SHADERDESC_SOURCE); + #elif defined(SOKOL_METAL) || defined(SOKOL_D3D11) + /* on Metal or D3D11, must provide shader source code or byte code */ + _SG_VALIDATE((0 != desc->vs.source)||(0 != desc->vs.bytecode.ptr), VALIDATE_SHADERDESC_SOURCE_OR_BYTECODE); + _SG_VALIDATE((0 != desc->fs.source)||(0 != desc->fs.bytecode.ptr), VALIDATE_SHADERDESC_SOURCE_OR_BYTECODE); + #elif defined(SOKOL_WGPU) + /* on WGPU byte code must be provided */ + _SG_VALIDATE((0 != desc->vs.bytecode.ptr), VALIDATE_SHADERDESC_BYTECODE); + _SG_VALIDATE((0 != desc->fs.bytecode.ptr), VALIDATE_SHADERDESC_BYTECODE); + #else + /* Dummy Backend, don't require source or bytecode */ + #endif + for (int i = 0; i < SG_MAX_VERTEX_ATTRIBUTES; i++) { + if (desc->attrs[i].name) { + _SG_VALIDATE(strlen(desc->attrs[i].name) < _SG_STRING_SIZE, VALIDATE_SHADERDESC_ATTR_STRING_TOO_LONG); + } + if (desc->attrs[i].sem_name) { + _SG_VALIDATE(strlen(desc->attrs[i].sem_name) < _SG_STRING_SIZE, VALIDATE_SHADERDESC_ATTR_STRING_TOO_LONG); + } + } + /* if shader byte code, the size must also be provided */ + if (0 != desc->vs.bytecode.ptr) { + _SG_VALIDATE(desc->vs.bytecode.size > 0, VALIDATE_SHADERDESC_NO_BYTECODE_SIZE); + } + if (0 != desc->fs.bytecode.ptr) { + _SG_VALIDATE(desc->fs.bytecode.size > 0, VALIDATE_SHADERDESC_NO_BYTECODE_SIZE); + } + for (int stage_index = 0; stage_index < SG_NUM_SHADER_STAGES; stage_index++) { + const sg_shader_stage_desc* stage_desc = (stage_index == 0)? &desc->vs : &desc->fs; + bool uniform_blocks_continuous = true; + for (int ub_index = 0; ub_index < SG_MAX_SHADERSTAGE_UBS; ub_index++) { + const sg_shader_uniform_block_desc* ub_desc = &stage_desc->uniform_blocks[ub_index]; + if (ub_desc->size > 0) { + _SG_VALIDATE(uniform_blocks_continuous, VALIDATE_SHADERDESC_NO_CONT_UBS); + #if defined(_SOKOL_ANY_GL) + bool uniforms_continuous = true; + uint32_t uniform_offset = 0; + int num_uniforms = 0; + for (int u_index = 0; u_index < SG_MAX_UB_MEMBERS; u_index++) { + const sg_shader_uniform_desc* u_desc = &ub_desc->uniforms[u_index]; + if (u_desc->type != SG_UNIFORMTYPE_INVALID) { + _SG_VALIDATE(uniforms_continuous, VALIDATE_SHADERDESC_NO_CONT_UB_MEMBERS); + #if defined(SOKOL_GLES3) + _SG_VALIDATE(0 != u_desc->name, VALIDATE_SHADERDESC_UB_MEMBER_NAME); + #endif + const int array_count = u_desc->array_count; + _SG_VALIDATE(array_count > 0, VALIDATE_SHADERDESC_UB_ARRAY_COUNT); + const uint32_t u_align = _sg_uniform_alignment(u_desc->type, array_count, ub_desc->layout); + const uint32_t u_size = _sg_uniform_size(u_desc->type, array_count, ub_desc->layout); + uniform_offset = _sg_align_u32(uniform_offset, u_align); + uniform_offset += u_size; + num_uniforms++; + // with std140, arrays are only allowed for FLOAT4, INT4, MAT4 + if (ub_desc->layout == SG_UNIFORMLAYOUT_STD140) { + if (array_count > 1) { + _SG_VALIDATE((u_desc->type == SG_UNIFORMTYPE_FLOAT4) || (u_desc->type == SG_UNIFORMTYPE_INT4) || (u_desc->type == SG_UNIFORMTYPE_MAT4), VALIDATE_SHADERDESC_UB_STD140_ARRAY_TYPE); + } + } + } + else { + uniforms_continuous = false; + } + } + if (ub_desc->layout == SG_UNIFORMLAYOUT_STD140) { + uniform_offset = _sg_align_u32(uniform_offset, 16); + } + _SG_VALIDATE((size_t)uniform_offset == ub_desc->size, VALIDATE_SHADERDESC_UB_SIZE_MISMATCH); + _SG_VALIDATE(num_uniforms > 0, VALIDATE_SHADERDESC_NO_UB_MEMBERS); + #endif + } + else { + uniform_blocks_continuous = false; + } + } + bool images_continuous = true; + for (int img_index = 0; img_index < SG_MAX_SHADERSTAGE_IMAGES; img_index++) { + const sg_shader_image_desc* img_desc = &stage_desc->images[img_index]; + if (img_desc->image_type != _SG_IMAGETYPE_DEFAULT) { + _SG_VALIDATE(images_continuous, VALIDATE_SHADERDESC_NO_CONT_IMGS); + } + else { + images_continuous = false; + } + } + } + return _sg_validate_end(); + #endif +} + +_SOKOL_PRIVATE bool _sg_validate_pipeline_desc(const sg_pipeline_desc* desc) { + #if !defined(SOKOL_DEBUG) + _SOKOL_UNUSED(desc); + return true; + #else + if (_sg.desc.disable_validation) { + return true; + } + SOKOL_ASSERT(desc); + _sg_validate_begin(); + _SG_VALIDATE(desc->_start_canary == 0, VALIDATE_PIPELINEDESC_CANARY); + _SG_VALIDATE(desc->_end_canary == 0, VALIDATE_PIPELINEDESC_CANARY); + _SG_VALIDATE(desc->shader.id != SG_INVALID_ID, VALIDATE_PIPELINEDESC_SHADER); + for (int buf_index = 0; buf_index < SG_MAX_SHADERSTAGE_BUFFERS; buf_index++) { + const sg_buffer_layout_desc* l_desc = &desc->layout.buffers[buf_index]; + if (l_desc->stride == 0) { + continue; + } + _SG_VALIDATE((l_desc->stride & 3) == 0, VALIDATE_PIPELINEDESC_LAYOUT_STRIDE4); + } + _SG_VALIDATE(desc->layout.attrs[0].format != SG_VERTEXFORMAT_INVALID, VALIDATE_PIPELINEDESC_NO_ATTRS); + const _sg_shader_t* shd = _sg_lookup_shader(&_sg.pools, desc->shader.id); + _SG_VALIDATE(0 != shd, VALIDATE_PIPELINEDESC_SHADER); + if (shd) { + _SG_VALIDATE(shd->slot.state == SG_RESOURCESTATE_VALID, VALIDATE_PIPELINEDESC_SHADER); + bool attrs_cont = true; + for (int attr_index = 0; attr_index < SG_MAX_VERTEX_ATTRIBUTES; attr_index++) { + const sg_vertex_attr_desc* a_desc = &desc->layout.attrs[attr_index]; + if (a_desc->format == SG_VERTEXFORMAT_INVALID) { + attrs_cont = false; + continue; + } + _SG_VALIDATE(attrs_cont, VALIDATE_PIPELINEDESC_NO_ATTRS); + SOKOL_ASSERT(a_desc->buffer_index < SG_MAX_SHADERSTAGE_BUFFERS); + #if defined(SOKOL_D3D11) + /* on D3D11, semantic names (and semantic indices) must be provided */ + _SG_VALIDATE(!_sg_strempty(&shd->d3d11.attrs[attr_index].sem_name), VALIDATE_PIPELINEDESC_ATTR_SEMANTICS); + #endif + } + } + return _sg_validate_end(); + #endif +} + +_SOKOL_PRIVATE bool _sg_validate_pass_desc(const sg_pass_desc* desc) { + #if !defined(SOKOL_DEBUG) + _SOKOL_UNUSED(desc); + return true; + #else + if (_sg.desc.disable_validation) { + return true; + } + SOKOL_ASSERT(desc); + _sg_validate_begin(); + _SG_VALIDATE(desc->_start_canary == 0, VALIDATE_PASSDESC_CANARY); + _SG_VALIDATE(desc->_end_canary == 0, VALIDATE_PASSDESC_CANARY); + bool atts_cont = true; + int width = -1, height = -1, sample_count = -1; + for (int att_index = 0; att_index < SG_MAX_COLOR_ATTACHMENTS; att_index++) { + const sg_pass_attachment_desc* att = &desc->color_attachments[att_index]; + if (att->image.id == SG_INVALID_ID) { + _SG_VALIDATE(att_index > 0, VALIDATE_PASSDESC_NO_COLOR_ATTS); + atts_cont = false; + continue; + } + _SG_VALIDATE(atts_cont, VALIDATE_PASSDESC_NO_CONT_COLOR_ATTS); + const _sg_image_t* img = _sg_lookup_image(&_sg.pools, att->image.id); + SOKOL_ASSERT(img); + _SG_VALIDATE(img->slot.state == SG_RESOURCESTATE_VALID, VALIDATE_PASSDESC_IMAGE); + _SG_VALIDATE(att->mip_level < img->cmn.num_mipmaps, VALIDATE_PASSDESC_MIPLEVEL); + if (img->cmn.type == SG_IMAGETYPE_CUBE) { + _SG_VALIDATE(att->slice < 6, VALIDATE_PASSDESC_FACE); + } + else if (img->cmn.type == SG_IMAGETYPE_ARRAY) { + _SG_VALIDATE(att->slice < img->cmn.num_slices, VALIDATE_PASSDESC_LAYER); + } + else if (img->cmn.type == SG_IMAGETYPE_3D) { + _SG_VALIDATE(att->slice < img->cmn.num_slices, VALIDATE_PASSDESC_SLICE); + } + _SG_VALIDATE(img->cmn.render_target, VALIDATE_PASSDESC_IMAGE_NO_RT); + if (att_index == 0) { + width = img->cmn.width >> att->mip_level; + height = img->cmn.height >> att->mip_level; + sample_count = img->cmn.sample_count; + } + else { + _SG_VALIDATE(width == img->cmn.width >> att->mip_level, VALIDATE_PASSDESC_IMAGE_SIZES); + _SG_VALIDATE(height == img->cmn.height >> att->mip_level, VALIDATE_PASSDESC_IMAGE_SIZES); + _SG_VALIDATE(sample_count == img->cmn.sample_count, VALIDATE_PASSDESC_IMAGE_SAMPLE_COUNTS); + } + _SG_VALIDATE(_sg_is_valid_rendertarget_color_format(img->cmn.pixel_format), VALIDATE_PASSDESC_COLOR_INV_PIXELFORMAT); + } + if (desc->depth_stencil_attachment.image.id != SG_INVALID_ID) { + const sg_pass_attachment_desc* att = &desc->depth_stencil_attachment; + const _sg_image_t* img = _sg_lookup_image(&_sg.pools, att->image.id); + SOKOL_ASSERT(img); + _SG_VALIDATE(img->slot.state == SG_RESOURCESTATE_VALID, VALIDATE_PASSDESC_IMAGE); + _SG_VALIDATE(att->mip_level < img->cmn.num_mipmaps, VALIDATE_PASSDESC_MIPLEVEL); + if (img->cmn.type == SG_IMAGETYPE_CUBE) { + _SG_VALIDATE(att->slice < 6, VALIDATE_PASSDESC_FACE); + } + else if (img->cmn.type == SG_IMAGETYPE_ARRAY) { + _SG_VALIDATE(att->slice < img->cmn.num_slices, VALIDATE_PASSDESC_LAYER); + } + else if (img->cmn.type == SG_IMAGETYPE_3D) { + _SG_VALIDATE(att->slice < img->cmn.num_slices, VALIDATE_PASSDESC_SLICE); + } + _SG_VALIDATE(img->cmn.render_target, VALIDATE_PASSDESC_IMAGE_NO_RT); + _SG_VALIDATE(width == img->cmn.width >> att->mip_level, VALIDATE_PASSDESC_IMAGE_SIZES); + _SG_VALIDATE(height == img->cmn.height >> att->mip_level, VALIDATE_PASSDESC_IMAGE_SIZES); + _SG_VALIDATE(sample_count == img->cmn.sample_count, VALIDATE_PASSDESC_IMAGE_SAMPLE_COUNTS); + _SG_VALIDATE(_sg_is_valid_rendertarget_depth_format(img->cmn.pixel_format), VALIDATE_PASSDESC_DEPTH_INV_PIXELFORMAT); + } + return _sg_validate_end(); + #endif +} + +_SOKOL_PRIVATE bool _sg_validate_begin_pass(_sg_pass_t* pass) { + #if !defined(SOKOL_DEBUG) + _SOKOL_UNUSED(pass); + return true; + #else + if (_sg.desc.disable_validation) { + return true; + } + _sg_validate_begin(); + _SG_VALIDATE(pass->slot.state == SG_RESOURCESTATE_VALID, VALIDATE_BEGINPASS_PASS); + + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + const _sg_pass_attachment_t* att = &pass->cmn.color_atts[i]; + const _sg_image_t* img = _sg_pass_color_image(pass, i); + if (img) { + _SG_VALIDATE(img->slot.state == SG_RESOURCESTATE_VALID, VALIDATE_BEGINPASS_IMAGE); + _SG_VALIDATE(img->slot.id == att->image_id.id, VALIDATE_BEGINPASS_IMAGE); + } + } + const _sg_image_t* ds_img = _sg_pass_ds_image(pass); + if (ds_img) { + const _sg_pass_attachment_t* att = &pass->cmn.ds_att; + _SG_VALIDATE(ds_img->slot.state == SG_RESOURCESTATE_VALID, VALIDATE_BEGINPASS_IMAGE); + _SG_VALIDATE(ds_img->slot.id == att->image_id.id, VALIDATE_BEGINPASS_IMAGE); + } + return _sg_validate_end(); + #endif +} + +_SOKOL_PRIVATE bool _sg_validate_apply_pipeline(sg_pipeline pip_id) { + #if !defined(SOKOL_DEBUG) + _SOKOL_UNUSED(pip_id); + return true; + #else + if (_sg.desc.disable_validation) { + return true; + } + _sg_validate_begin(); + /* the pipeline object must be alive and valid */ + _SG_VALIDATE(pip_id.id != SG_INVALID_ID, VALIDATE_APIP_PIPELINE_VALID_ID); + const _sg_pipeline_t* pip = _sg_lookup_pipeline(&_sg.pools, pip_id.id); + _SG_VALIDATE(pip != 0, VALIDATE_APIP_PIPELINE_EXISTS); + if (!pip) { + return _sg_validate_end(); + } + _SG_VALIDATE(pip->slot.state == SG_RESOURCESTATE_VALID, VALIDATE_APIP_PIPELINE_VALID); + /* the pipeline's shader must be alive and valid */ + SOKOL_ASSERT(pip->shader); + _SG_VALIDATE(pip->shader->slot.id == pip->cmn.shader_id.id, VALIDATE_APIP_SHADER_EXISTS); + _SG_VALIDATE(pip->shader->slot.state == SG_RESOURCESTATE_VALID, VALIDATE_APIP_SHADER_VALID); + /* check that pipeline attributes match current pass attributes */ + const _sg_pass_t* pass = _sg_lookup_pass(&_sg.pools, _sg.cur_pass.id); + if (pass) { + /* an offscreen pass */ + _SG_VALIDATE(pip->cmn.color_count == pass->cmn.num_color_atts, VALIDATE_APIP_ATT_COUNT); + for (int i = 0; i < pip->cmn.color_count; i++) { + const _sg_image_t* att_img = _sg_pass_color_image(pass, i); + _SG_VALIDATE(pip->cmn.colors[i].pixel_format == att_img->cmn.pixel_format, VALIDATE_APIP_COLOR_FORMAT); + _SG_VALIDATE(pip->cmn.sample_count == att_img->cmn.sample_count, VALIDATE_APIP_SAMPLE_COUNT); + } + const _sg_image_t* att_dsimg = _sg_pass_ds_image(pass); + if (att_dsimg) { + _SG_VALIDATE(pip->cmn.depth.pixel_format == att_dsimg->cmn.pixel_format, VALIDATE_APIP_DEPTH_FORMAT); + } + else { + _SG_VALIDATE(pip->cmn.depth.pixel_format == SG_PIXELFORMAT_NONE, VALIDATE_APIP_DEPTH_FORMAT); + } + } + else { + /* default pass */ + _SG_VALIDATE(pip->cmn.color_count == 1, VALIDATE_APIP_ATT_COUNT); + _SG_VALIDATE(pip->cmn.colors[0].pixel_format == _sg.desc.context.color_format, VALIDATE_APIP_COLOR_FORMAT); + _SG_VALIDATE(pip->cmn.depth.pixel_format == _sg.desc.context.depth_format, VALIDATE_APIP_DEPTH_FORMAT); + _SG_VALIDATE(pip->cmn.sample_count == _sg.desc.context.sample_count, VALIDATE_APIP_SAMPLE_COUNT); + } + return _sg_validate_end(); + #endif +} + +_SOKOL_PRIVATE bool _sg_validate_apply_bindings(const sg_bindings* bindings) { + #if !defined(SOKOL_DEBUG) + _SOKOL_UNUSED(bindings); + return true; + #else + if (_sg.desc.disable_validation) { + return true; + } + _sg_validate_begin(); + + /* a pipeline object must have been applied */ + _SG_VALIDATE(_sg.cur_pipeline.id != SG_INVALID_ID, VALIDATE_ABND_PIPELINE); + const _sg_pipeline_t* pip = _sg_lookup_pipeline(&_sg.pools, _sg.cur_pipeline.id); + _SG_VALIDATE(pip != 0, VALIDATE_ABND_PIPELINE_EXISTS); + if (!pip) { + return _sg_validate_end(); + } + _SG_VALIDATE(pip->slot.state == SG_RESOURCESTATE_VALID, VALIDATE_ABND_PIPELINE_VALID); + SOKOL_ASSERT(pip->shader && (pip->cmn.shader_id.id == pip->shader->slot.id)); + + /* has expected vertex buffers, and vertex buffers still exist */ + for (int i = 0; i < SG_MAX_SHADERSTAGE_BUFFERS; i++) { + if (bindings->vertex_buffers[i].id != SG_INVALID_ID) { + _SG_VALIDATE(pip->cmn.vertex_layout_valid[i], VALIDATE_ABND_VBS); + /* buffers in vertex-buffer-slots must be of type SG_BUFFERTYPE_VERTEXBUFFER */ + const _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, bindings->vertex_buffers[i].id); + _SG_VALIDATE(buf != 0, VALIDATE_ABND_VB_EXISTS); + if (buf && buf->slot.state == SG_RESOURCESTATE_VALID) { + _SG_VALIDATE(SG_BUFFERTYPE_VERTEXBUFFER == buf->cmn.type, VALIDATE_ABND_VB_TYPE); + _SG_VALIDATE(!buf->cmn.append_overflow, VALIDATE_ABND_VB_OVERFLOW); + } + } + else { + /* vertex buffer provided in a slot which has no vertex layout in pipeline */ + _SG_VALIDATE(!pip->cmn.vertex_layout_valid[i], VALIDATE_ABND_VBS); + } + } + + /* index buffer expected or not, and index buffer still exists */ + if (pip->cmn.index_type == SG_INDEXTYPE_NONE) { + /* pipeline defines non-indexed rendering, but index buffer provided */ + _SG_VALIDATE(bindings->index_buffer.id == SG_INVALID_ID, VALIDATE_ABND_IB); + } + else { + /* pipeline defines indexed rendering, but no index buffer provided */ + _SG_VALIDATE(bindings->index_buffer.id != SG_INVALID_ID, VALIDATE_ABND_NO_IB); + } + if (bindings->index_buffer.id != SG_INVALID_ID) { + /* buffer in index-buffer-slot must be of type SG_BUFFERTYPE_INDEXBUFFER */ + const _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, bindings->index_buffer.id); + _SG_VALIDATE(buf != 0, VALIDATE_ABND_IB_EXISTS); + if (buf && buf->slot.state == SG_RESOURCESTATE_VALID) { + _SG_VALIDATE(SG_BUFFERTYPE_INDEXBUFFER == buf->cmn.type, VALIDATE_ABND_IB_TYPE); + _SG_VALIDATE(!buf->cmn.append_overflow, VALIDATE_ABND_IB_OVERFLOW); + } + } + + /* has expected vertex shader images */ + for (int i = 0; i < SG_MAX_SHADERSTAGE_IMAGES; i++) { + _sg_shader_stage_t* stage = &pip->shader->cmn.stage[SG_SHADERSTAGE_VS]; + if (bindings->vs_images[i].id != SG_INVALID_ID) { + _SG_VALIDATE(i < stage->num_images, VALIDATE_ABND_VS_IMGS); + const _sg_image_t* img = _sg_lookup_image(&_sg.pools, bindings->vs_images[i].id); + _SG_VALIDATE(img != 0, VALIDATE_ABND_VS_IMG_EXISTS); + if (img && img->slot.state == SG_RESOURCESTATE_VALID) { + _SG_VALIDATE(img->cmn.type == stage->images[i].image_type, VALIDATE_ABND_VS_IMG_TYPES); + } + } + else { + _SG_VALIDATE(i >= stage->num_images, VALIDATE_ABND_VS_IMGS); + } + } + + /* has expected fragment shader images */ + for (int i = 0; i < SG_MAX_SHADERSTAGE_IMAGES; i++) { + _sg_shader_stage_t* stage = &pip->shader->cmn.stage[SG_SHADERSTAGE_FS]; + if (bindings->fs_images[i].id != SG_INVALID_ID) { + _SG_VALIDATE(i < stage->num_images, VALIDATE_ABND_FS_IMGS); + const _sg_image_t* img = _sg_lookup_image(&_sg.pools, bindings->fs_images[i].id); + _SG_VALIDATE(img != 0, VALIDATE_ABND_FS_IMG_EXISTS); + if (img && img->slot.state == SG_RESOURCESTATE_VALID) { + _SG_VALIDATE(img->cmn.type == stage->images[i].image_type, VALIDATE_ABND_FS_IMG_TYPES); + } + } + else { + _SG_VALIDATE(i >= stage->num_images, VALIDATE_ABND_FS_IMGS); + } + } + return _sg_validate_end(); + #endif +} + +_SOKOL_PRIVATE bool _sg_validate_apply_uniforms(sg_shader_stage stage_index, int ub_index, const sg_range* data) { + #if !defined(SOKOL_DEBUG) + _SOKOL_UNUSED(stage_index); + _SOKOL_UNUSED(ub_index); + _SOKOL_UNUSED(data); + return true; + #else + if (_sg.desc.disable_validation) { + return true; + } + SOKOL_ASSERT((stage_index == SG_SHADERSTAGE_VS) || (stage_index == SG_SHADERSTAGE_FS)); + SOKOL_ASSERT((ub_index >= 0) && (ub_index < SG_MAX_SHADERSTAGE_UBS)); + _sg_validate_begin(); + _SG_VALIDATE(_sg.cur_pipeline.id != SG_INVALID_ID, VALIDATE_AUB_NO_PIPELINE); + const _sg_pipeline_t* pip = _sg_lookup_pipeline(&_sg.pools, _sg.cur_pipeline.id); + SOKOL_ASSERT(pip && (pip->slot.id == _sg.cur_pipeline.id)); + SOKOL_ASSERT(pip->shader && (pip->shader->slot.id == pip->cmn.shader_id.id)); + + /* check that there is a uniform block at 'stage' and 'ub_index' */ + const _sg_shader_stage_t* stage = &pip->shader->cmn.stage[stage_index]; + _SG_VALIDATE(ub_index < stage->num_uniform_blocks, VALIDATE_AUB_NO_UB_AT_SLOT); + + /* check that the provided data size doesn't exceed the uniform block size */ + _SG_VALIDATE(data->size == stage->uniform_blocks[ub_index].size, VALIDATE_AUB_SIZE); + + return _sg_validate_end(); + #endif +} + +_SOKOL_PRIVATE bool _sg_validate_update_buffer(const _sg_buffer_t* buf, const sg_range* data) { + #if !defined(SOKOL_DEBUG) + _SOKOL_UNUSED(buf); + _SOKOL_UNUSED(data); + return true; + #else + if (_sg.desc.disable_validation) { + return true; + } + SOKOL_ASSERT(buf && data && data->ptr); + _sg_validate_begin(); + _SG_VALIDATE(buf->cmn.usage != SG_USAGE_IMMUTABLE, VALIDATE_UPDATEBUF_USAGE); + _SG_VALIDATE(buf->cmn.size >= (int)data->size, VALIDATE_UPDATEBUF_SIZE); + _SG_VALIDATE(buf->cmn.update_frame_index != _sg.frame_index, VALIDATE_UPDATEBUF_ONCE); + _SG_VALIDATE(buf->cmn.append_frame_index != _sg.frame_index, VALIDATE_UPDATEBUF_APPEND); + return _sg_validate_end(); + #endif +} + +_SOKOL_PRIVATE bool _sg_validate_append_buffer(const _sg_buffer_t* buf, const sg_range* data) { + #if !defined(SOKOL_DEBUG) + _SOKOL_UNUSED(buf); + _SOKOL_UNUSED(data); + return true; + #else + if (_sg.desc.disable_validation) { + return true; + } + SOKOL_ASSERT(buf && data && data->ptr); + _sg_validate_begin(); + _SG_VALIDATE(buf->cmn.usage != SG_USAGE_IMMUTABLE, VALIDATE_APPENDBUF_USAGE); + _SG_VALIDATE(buf->cmn.size >= (buf->cmn.append_pos + (int)data->size), VALIDATE_APPENDBUF_SIZE); + _SG_VALIDATE(buf->cmn.update_frame_index != _sg.frame_index, VALIDATE_APPENDBUF_UPDATE); + return _sg_validate_end(); + #endif +} + +_SOKOL_PRIVATE bool _sg_validate_update_image(const _sg_image_t* img, const sg_image_data* data) { + #if !defined(SOKOL_DEBUG) + _SOKOL_UNUSED(img); + _SOKOL_UNUSED(data); + return true; + #else + if (_sg.desc.disable_validation) { + return true; + } + SOKOL_ASSERT(img && data); + _sg_validate_begin(); + _SG_VALIDATE(img->cmn.usage != SG_USAGE_IMMUTABLE, VALIDATE_UPDIMG_USAGE); + _SG_VALIDATE(img->cmn.upd_frame_index != _sg.frame_index, VALIDATE_UPDIMG_ONCE); + _sg_validate_image_data(data, + img->cmn.pixel_format, + img->cmn.width, + img->cmn.height, + (img->cmn.type == SG_IMAGETYPE_CUBE) ? 6 : 1, + img->cmn.num_mipmaps, + img->cmn.num_slices); + return _sg_validate_end(); + #endif +} + +// ██████ ███████ ███████ ██████ ██ ██ ██████ ██████ ███████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ █████ ███████ ██ ██ ██ ██ ██████ ██ █████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ███████ ██████ ██████ ██ ██ ██████ ███████ ███████ +// +// >>resources +_SOKOL_PRIVATE sg_buffer_desc _sg_buffer_desc_defaults(const sg_buffer_desc* desc) { + sg_buffer_desc def = *desc; + def.type = _sg_def(def.type, SG_BUFFERTYPE_VERTEXBUFFER); + def.usage = _sg_def(def.usage, SG_USAGE_IMMUTABLE); + if (def.size == 0) { + def.size = def.data.size; + } + else if (def.data.size == 0) { + def.data.size = def.size; + } + return def; +} + +_SOKOL_PRIVATE sg_image_desc _sg_image_desc_defaults(const sg_image_desc* desc) { + sg_image_desc def = *desc; + def.type = _sg_def(def.type, SG_IMAGETYPE_2D); + def.num_slices = _sg_def(def.num_slices, 1); + def.num_mipmaps = _sg_def(def.num_mipmaps, 1); + def.usage = _sg_def(def.usage, SG_USAGE_IMMUTABLE); + if (desc->render_target) { + def.pixel_format = _sg_def(def.pixel_format, _sg.desc.context.color_format); + def.sample_count = _sg_def(def.sample_count, _sg.desc.context.sample_count); + } + else { + def.pixel_format = _sg_def(def.pixel_format, SG_PIXELFORMAT_RGBA8); + def.sample_count = _sg_def(def.sample_count, 1); + } + def.min_filter = _sg_def(def.min_filter, SG_FILTER_NEAREST); + def.mag_filter = _sg_def(def.mag_filter, SG_FILTER_NEAREST); + def.wrap_u = _sg_def(def.wrap_u, SG_WRAP_REPEAT); + def.wrap_v = _sg_def(def.wrap_v, SG_WRAP_REPEAT); + def.wrap_w = _sg_def(def.wrap_w, SG_WRAP_REPEAT); + def.border_color = _sg_def(def.border_color, SG_BORDERCOLOR_OPAQUE_BLACK); + def.max_anisotropy = _sg_def(def.max_anisotropy, 1); + def.max_lod = _sg_def_flt(def.max_lod, FLT_MAX); + return def; +} + +_SOKOL_PRIVATE sg_shader_desc _sg_shader_desc_defaults(const sg_shader_desc* desc) { + sg_shader_desc def = *desc; + #if defined(SOKOL_METAL) + def.vs.entry = _sg_def(def.vs.entry, "_main"); + def.fs.entry = _sg_def(def.fs.entry, "_main"); + #else + def.vs.entry = _sg_def(def.vs.entry, "main"); + def.fs.entry = _sg_def(def.fs.entry, "main"); + #endif + #if defined(SOKOL_D3D11) + if (def.vs.source) { + def.vs.d3d11_target = _sg_def(def.vs.d3d11_target, "vs_4_0"); + } + if (def.fs.source) { + def.fs.d3d11_target = _sg_def(def.fs.d3d11_target, "ps_4_0"); + } + #endif + for (int stage_index = 0; stage_index < SG_NUM_SHADER_STAGES; stage_index++) { + sg_shader_stage_desc* stage_desc = (stage_index == SG_SHADERSTAGE_VS)? &def.vs : &def.fs; + for (int ub_index = 0; ub_index < SG_MAX_SHADERSTAGE_UBS; ub_index++) { + sg_shader_uniform_block_desc* ub_desc = &stage_desc->uniform_blocks[ub_index]; + if (0 == ub_desc->size) { + break; + } + ub_desc->layout = _sg_def(ub_desc->layout, SG_UNIFORMLAYOUT_NATIVE); + for (int u_index = 0; u_index < SG_MAX_UB_MEMBERS; u_index++) { + sg_shader_uniform_desc* u_desc = &ub_desc->uniforms[u_index]; + if (u_desc->type == SG_UNIFORMTYPE_INVALID) { + break; + } + u_desc->array_count = _sg_def(u_desc->array_count, 1); + } + } + for (int img_index = 0; img_index < SG_MAX_SHADERSTAGE_IMAGES; img_index++) { + sg_shader_image_desc* img_desc = &stage_desc->images[img_index]; + if (img_desc->image_type == _SG_IMAGETYPE_DEFAULT) { + break; + } + img_desc->sampler_type = _sg_def(img_desc->sampler_type, SG_SAMPLERTYPE_FLOAT); + } + } + return def; +} + +_SOKOL_PRIVATE sg_pipeline_desc _sg_pipeline_desc_defaults(const sg_pipeline_desc* desc) { + sg_pipeline_desc def = *desc; + + def.primitive_type = _sg_def(def.primitive_type, SG_PRIMITIVETYPE_TRIANGLES); + def.index_type = _sg_def(def.index_type, SG_INDEXTYPE_NONE); + def.cull_mode = _sg_def(def.cull_mode, SG_CULLMODE_NONE); + def.face_winding = _sg_def(def.face_winding, SG_FACEWINDING_CW); + def.sample_count = _sg_def(def.sample_count, _sg.desc.context.sample_count); + + def.stencil.front.compare = _sg_def(def.stencil.front.compare, SG_COMPAREFUNC_ALWAYS); + def.stencil.front.fail_op = _sg_def(def.stencil.front.fail_op, SG_STENCILOP_KEEP); + def.stencil.front.depth_fail_op = _sg_def(def.stencil.front.depth_fail_op, SG_STENCILOP_KEEP); + def.stencil.front.pass_op = _sg_def(def.stencil.front.pass_op, SG_STENCILOP_KEEP); + def.stencil.back.compare = _sg_def(def.stencil.back.compare, SG_COMPAREFUNC_ALWAYS); + def.stencil.back.fail_op = _sg_def(def.stencil.back.fail_op, SG_STENCILOP_KEEP); + def.stencil.back.depth_fail_op = _sg_def(def.stencil.back.depth_fail_op, SG_STENCILOP_KEEP); + def.stencil.back.pass_op = _sg_def(def.stencil.back.pass_op, SG_STENCILOP_KEEP); + + def.depth.compare = _sg_def(def.depth.compare, SG_COMPAREFUNC_ALWAYS); + def.depth.pixel_format = _sg_def(def.depth.pixel_format, _sg.desc.context.depth_format); + def.color_count = _sg_def(def.color_count, 1); + if (def.color_count > SG_MAX_COLOR_ATTACHMENTS) { + def.color_count = SG_MAX_COLOR_ATTACHMENTS; + } + for (int i = 0; i < def.color_count; i++) { + sg_color_state* cs = &def.colors[i]; + cs->pixel_format = _sg_def(cs->pixel_format, _sg.desc.context.color_format); + cs->write_mask = _sg_def(cs->write_mask, SG_COLORMASK_RGBA); + sg_blend_state* bs = &def.colors[i].blend; + bs->src_factor_rgb = _sg_def(bs->src_factor_rgb, SG_BLENDFACTOR_ONE); + bs->dst_factor_rgb = _sg_def(bs->dst_factor_rgb, SG_BLENDFACTOR_ZERO); + bs->op_rgb = _sg_def(bs->op_rgb, SG_BLENDOP_ADD); + bs->src_factor_alpha = _sg_def(bs->src_factor_alpha, SG_BLENDFACTOR_ONE); + bs->dst_factor_alpha = _sg_def(bs->dst_factor_alpha, SG_BLENDFACTOR_ZERO); + bs->op_alpha = _sg_def(bs->op_alpha, SG_BLENDOP_ADD); + } + + for (int attr_index = 0; attr_index < SG_MAX_VERTEX_ATTRIBUTES; attr_index++) { + sg_vertex_attr_desc* a_desc = &def.layout.attrs[attr_index]; + if (a_desc->format == SG_VERTEXFORMAT_INVALID) { + break; + } + SOKOL_ASSERT(a_desc->buffer_index < SG_MAX_SHADERSTAGE_BUFFERS); + sg_buffer_layout_desc* b_desc = &def.layout.buffers[a_desc->buffer_index]; + b_desc->step_func = _sg_def(b_desc->step_func, SG_VERTEXSTEP_PER_VERTEX); + b_desc->step_rate = _sg_def(b_desc->step_rate, 1); + } + + /* resolve vertex layout strides and offsets */ + int auto_offset[SG_MAX_SHADERSTAGE_BUFFERS]; + _sg_clear(auto_offset, sizeof(auto_offset)); + bool use_auto_offset = true; + for (int attr_index = 0; attr_index < SG_MAX_VERTEX_ATTRIBUTES; attr_index++) { + /* to use computed offsets, *all* attr offsets must be 0 */ + if (def.layout.attrs[attr_index].offset != 0) { + use_auto_offset = false; + } + } + for (int attr_index = 0; attr_index < SG_MAX_VERTEX_ATTRIBUTES; attr_index++) { + sg_vertex_attr_desc* a_desc = &def.layout.attrs[attr_index]; + if (a_desc->format == SG_VERTEXFORMAT_INVALID) { + break; + } + SOKOL_ASSERT(a_desc->buffer_index < SG_MAX_SHADERSTAGE_BUFFERS); + if (use_auto_offset) { + a_desc->offset = auto_offset[a_desc->buffer_index]; + } + auto_offset[a_desc->buffer_index] += _sg_vertexformat_bytesize(a_desc->format); + } + /* compute vertex strides if needed */ + for (int buf_index = 0; buf_index < SG_MAX_SHADERSTAGE_BUFFERS; buf_index++) { + sg_buffer_layout_desc* l_desc = &def.layout.buffers[buf_index]; + if (l_desc->stride == 0) { + l_desc->stride = auto_offset[buf_index]; + } + } + + return def; +} + +_SOKOL_PRIVATE sg_pass_desc _sg_pass_desc_defaults(const sg_pass_desc* desc) { + /* FIXME: no values to replace in sg_pass_desc? */ + sg_pass_desc def = *desc; + return def; +} + +_SOKOL_PRIVATE sg_buffer _sg_alloc_buffer(void) { + sg_buffer res; + int slot_index = _sg_pool_alloc_index(&_sg.pools.buffer_pool); + if (_SG_INVALID_SLOT_INDEX != slot_index) { + res.id = _sg_slot_alloc(&_sg.pools.buffer_pool, &_sg.pools.buffers[slot_index].slot, slot_index); + } + else { + res.id = SG_INVALID_ID; + _SG_ERROR(BUFFER_POOL_EXHAUSTED); + _SG_TRACE_NOARGS(err_buffer_pool_exhausted); + } + return res; +} + +_SOKOL_PRIVATE sg_image _sg_alloc_image(void) { + sg_image res; + int slot_index = _sg_pool_alloc_index(&_sg.pools.image_pool); + if (_SG_INVALID_SLOT_INDEX != slot_index) { + res.id = _sg_slot_alloc(&_sg.pools.image_pool, &_sg.pools.images[slot_index].slot, slot_index); + } + else { + res.id = SG_INVALID_ID; + _SG_ERROR(IMAGE_POOL_EXHAUSTED); + _SG_TRACE_NOARGS(err_image_pool_exhausted); + } + return res; +} + +_SOKOL_PRIVATE sg_shader _sg_alloc_shader(void) { + sg_shader res; + int slot_index = _sg_pool_alloc_index(&_sg.pools.shader_pool); + if (_SG_INVALID_SLOT_INDEX != slot_index) { + res.id = _sg_slot_alloc(&_sg.pools.shader_pool, &_sg.pools.shaders[slot_index].slot, slot_index); + } + else { + res.id = SG_INVALID_ID; + _SG_ERROR(SHADER_POOL_EXHAUSTED); + _SG_TRACE_NOARGS(err_shader_pool_exhausted); + } + return res; +} + +_SOKOL_PRIVATE sg_pipeline _sg_alloc_pipeline(void) { + sg_pipeline res; + int slot_index = _sg_pool_alloc_index(&_sg.pools.pipeline_pool); + if (_SG_INVALID_SLOT_INDEX != slot_index) { + res.id =_sg_slot_alloc(&_sg.pools.pipeline_pool, &_sg.pools.pipelines[slot_index].slot, slot_index); + } + else { + res.id = SG_INVALID_ID; + _SG_ERROR(PIPELINE_POOL_EXHAUSTED); + _SG_TRACE_NOARGS(err_pipeline_pool_exhausted); + } + return res; +} + +_SOKOL_PRIVATE sg_pass _sg_alloc_pass(void) { + sg_pass res; + int slot_index = _sg_pool_alloc_index(&_sg.pools.pass_pool); + if (_SG_INVALID_SLOT_INDEX != slot_index) { + res.id = _sg_slot_alloc(&_sg.pools.pass_pool, &_sg.pools.passes[slot_index].slot, slot_index); + } + else { + res.id = SG_INVALID_ID; + _SG_ERROR(PASS_POOL_EXHAUSTED); + _SG_TRACE_NOARGS(err_pass_pool_exhausted); + } + return res; +} + +_SOKOL_PRIVATE void _sg_dealloc_buffer(_sg_buffer_t* buf) { + SOKOL_ASSERT(buf && (buf->slot.state == SG_RESOURCESTATE_ALLOC) && (buf->slot.id != SG_INVALID_ID)); + _sg_pool_free_index(&_sg.pools.buffer_pool, _sg_slot_index(buf->slot.id)); + _sg_reset_slot(&buf->slot); +} + +_SOKOL_PRIVATE void _sg_dealloc_image(_sg_image_t* img) { + SOKOL_ASSERT(img && (img->slot.state == SG_RESOURCESTATE_ALLOC) && (img->slot.id != SG_INVALID_ID)); + _sg_pool_free_index(&_sg.pools.image_pool, _sg_slot_index(img->slot.id)); + _sg_reset_slot(&img->slot); +} + +_SOKOL_PRIVATE void _sg_dealloc_shader(_sg_shader_t* shd) { + SOKOL_ASSERT(shd && (shd->slot.state == SG_RESOURCESTATE_ALLOC) && (shd->slot.id != SG_INVALID_ID)); + _sg_pool_free_index(&_sg.pools.shader_pool, _sg_slot_index(shd->slot.id)); + _sg_reset_slot(&shd->slot); +} + +_SOKOL_PRIVATE void _sg_dealloc_pipeline(_sg_pipeline_t* pip) { + SOKOL_ASSERT(pip && (pip->slot.state == SG_RESOURCESTATE_ALLOC) && (pip->slot.id != SG_INVALID_ID)); + _sg_pool_free_index(&_sg.pools.pipeline_pool, _sg_slot_index(pip->slot.id)); + _sg_reset_slot(&pip->slot); +} + +_SOKOL_PRIVATE void _sg_dealloc_pass(_sg_pass_t* pass) { + SOKOL_ASSERT(pass && (pass->slot.state == SG_RESOURCESTATE_ALLOC) && (pass->slot.id != SG_INVALID_ID)); + _sg_pool_free_index(&_sg.pools.pass_pool, _sg_slot_index(pass->slot.id)); + _sg_reset_slot(&pass->slot); +} + +_SOKOL_PRIVATE void _sg_init_buffer(_sg_buffer_t* buf, const sg_buffer_desc* desc) { + SOKOL_ASSERT(buf && (buf->slot.state == SG_RESOURCESTATE_ALLOC)); + SOKOL_ASSERT(desc); + buf->slot.ctx_id = _sg.active_context.id; + if (_sg_validate_buffer_desc(desc)) { + buf->slot.state = _sg_create_buffer(buf, desc); + } + else { + buf->slot.state = SG_RESOURCESTATE_FAILED; + } + SOKOL_ASSERT((buf->slot.state == SG_RESOURCESTATE_VALID)||(buf->slot.state == SG_RESOURCESTATE_FAILED)); +} + +_SOKOL_PRIVATE void _sg_init_image(_sg_image_t* img, const sg_image_desc* desc) { + SOKOL_ASSERT(img && (img->slot.state == SG_RESOURCESTATE_ALLOC)); + SOKOL_ASSERT(desc); + img->slot.ctx_id = _sg.active_context.id; + if (_sg_validate_image_desc(desc)) { + img->slot.state = _sg_create_image(img, desc); + } + else { + img->slot.state = SG_RESOURCESTATE_FAILED; + } + SOKOL_ASSERT((img->slot.state == SG_RESOURCESTATE_VALID)||(img->slot.state == SG_RESOURCESTATE_FAILED)); +} + +_SOKOL_PRIVATE void _sg_init_shader(_sg_shader_t* shd, const sg_shader_desc* desc) { + SOKOL_ASSERT(shd && (shd->slot.state == SG_RESOURCESTATE_ALLOC)); + SOKOL_ASSERT(desc); + shd->slot.ctx_id = _sg.active_context.id; + if (_sg_validate_shader_desc(desc)) { + shd->slot.state = _sg_create_shader(shd, desc); + } + else { + shd->slot.state = SG_RESOURCESTATE_FAILED; + } + SOKOL_ASSERT((shd->slot.state == SG_RESOURCESTATE_VALID)||(shd->slot.state == SG_RESOURCESTATE_FAILED)); +} + +_SOKOL_PRIVATE void _sg_init_pipeline(_sg_pipeline_t* pip, const sg_pipeline_desc* desc) { + SOKOL_ASSERT(pip && (pip->slot.state == SG_RESOURCESTATE_ALLOC)); + SOKOL_ASSERT(desc); + pip->slot.ctx_id = _sg.active_context.id; + if (_sg_validate_pipeline_desc(desc)) { + _sg_shader_t* shd = _sg_lookup_shader(&_sg.pools, desc->shader.id); + if (shd && (shd->slot.state == SG_RESOURCESTATE_VALID)) { + pip->slot.state = _sg_create_pipeline(pip, shd, desc); + } + else { + pip->slot.state = SG_RESOURCESTATE_FAILED; + } + } + else { + pip->slot.state = SG_RESOURCESTATE_FAILED; + } + SOKOL_ASSERT((pip->slot.state == SG_RESOURCESTATE_VALID)||(pip->slot.state == SG_RESOURCESTATE_FAILED)); +} + +_SOKOL_PRIVATE void _sg_init_pass(_sg_pass_t* pass, const sg_pass_desc* desc) { + SOKOL_ASSERT(pass && pass->slot.state == SG_RESOURCESTATE_ALLOC); + SOKOL_ASSERT(desc); + pass->slot.ctx_id = _sg.active_context.id; + if (_sg_validate_pass_desc(desc)) { + /* lookup pass attachment image pointers */ + _sg_image_t* att_imgs[SG_MAX_COLOR_ATTACHMENTS + 1]; + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + if (desc->color_attachments[i].image.id) { + att_imgs[i] = _sg_lookup_image(&_sg.pools, desc->color_attachments[i].image.id); + if (!(att_imgs[i] && att_imgs[i]->slot.state == SG_RESOURCESTATE_VALID)) { + pass->slot.state = SG_RESOURCESTATE_FAILED; + return; + } + } + else { + att_imgs[i] = 0; + } + } + const int ds_att_index = SG_MAX_COLOR_ATTACHMENTS; + if (desc->depth_stencil_attachment.image.id) { + att_imgs[ds_att_index] = _sg_lookup_image(&_sg.pools, desc->depth_stencil_attachment.image.id); + if (!(att_imgs[ds_att_index] && att_imgs[ds_att_index]->slot.state == SG_RESOURCESTATE_VALID)) { + pass->slot.state = SG_RESOURCESTATE_FAILED; + return; + } + } + else { + att_imgs[ds_att_index] = 0; + } + pass->slot.state = _sg_create_pass(pass, att_imgs, desc); + } + else { + pass->slot.state = SG_RESOURCESTATE_FAILED; + } + SOKOL_ASSERT((pass->slot.state == SG_RESOURCESTATE_VALID)||(pass->slot.state == SG_RESOURCESTATE_FAILED)); +} + +_SOKOL_PRIVATE void _sg_uninit_buffer(_sg_buffer_t* buf) { + SOKOL_ASSERT(buf && ((buf->slot.state == SG_RESOURCESTATE_VALID) || (buf->slot.state == SG_RESOURCESTATE_FAILED))); + if (buf->slot.ctx_id == _sg.active_context.id) { + _sg_discard_buffer(buf); + _sg_reset_buffer_to_alloc_state(buf); + } + else { + _SG_WARN(UNINIT_BUFFER_ACTIVE_CONTEXT_MISMATCH); + _SG_TRACE_NOARGS(err_context_mismatch); + } +} + +_SOKOL_PRIVATE void _sg_uninit_image(_sg_image_t* img) { + SOKOL_ASSERT(img && ((img->slot.state == SG_RESOURCESTATE_VALID) || (img->slot.state == SG_RESOURCESTATE_FAILED))); + if (img->slot.ctx_id == _sg.active_context.id) { + _sg_discard_image(img); + _sg_reset_image_to_alloc_state(img); + } + else { + _SG_WARN(UNINIT_IMAGE_ACTIVE_CONTEXT_MISMATCH); + _SG_TRACE_NOARGS(err_context_mismatch); + } +} + +_SOKOL_PRIVATE void _sg_uninit_shader(_sg_shader_t* shd) { + SOKOL_ASSERT(shd && ((shd->slot.state == SG_RESOURCESTATE_VALID) || (shd->slot.state == SG_RESOURCESTATE_FAILED))); + if (shd->slot.ctx_id == _sg.active_context.id) { + _sg_discard_shader(shd); + _sg_reset_shader_to_alloc_state(shd); + } + else { + _SG_WARN(UNINIT_SHADER_ACTIVE_CONTEXT_MISMATCH); + _SG_TRACE_NOARGS(err_context_mismatch); + } +} + +_SOKOL_PRIVATE void _sg_uninit_pipeline(_sg_pipeline_t* pip) { + SOKOL_ASSERT(pip && ((pip->slot.state == SG_RESOURCESTATE_VALID) || (pip->slot.state == SG_RESOURCESTATE_FAILED))); + if (pip->slot.ctx_id == _sg.active_context.id) { + _sg_discard_pipeline(pip); + _sg_reset_pipeline_to_alloc_state(pip); + } + else { + _SG_WARN(UNINIT_PIPELINE_ACTIVE_CONTEXT_MISMATCH); + _SG_TRACE_NOARGS(err_context_mismatch); + } +} + +_SOKOL_PRIVATE void _sg_uninit_pass(_sg_pass_t* pass) { + SOKOL_ASSERT(pass && ((pass->slot.state == SG_RESOURCESTATE_VALID) || (pass->slot.state == SG_RESOURCESTATE_FAILED))); + if (pass->slot.ctx_id == _sg.active_context.id) { + _sg_discard_pass(pass); + _sg_reset_pass_to_alloc_state(pass); + } + else { + _SG_WARN(UNINIT_PASS_ACTIVE_CONTEXT_MISMATCH); + _SG_TRACE_NOARGS(err_context_mismatch); + } +} + +_SOKOL_PRIVATE void _sg_setup_commit_listeners(const sg_desc* desc) { + SOKOL_ASSERT(desc->max_commit_listeners > 0); + SOKOL_ASSERT(0 == _sg.commit_listeners.items); + SOKOL_ASSERT(0 == _sg.commit_listeners.num); + SOKOL_ASSERT(0 == _sg.commit_listeners.upper); + _sg.commit_listeners.num = desc->max_commit_listeners; + const size_t size = (size_t)_sg.commit_listeners.num * sizeof(sg_commit_listener); + _sg.commit_listeners.items = (sg_commit_listener*)_sg_malloc_clear(size); +} + +_SOKOL_PRIVATE void _sg_discard_commit_listeners(void) { + SOKOL_ASSERT(0 != _sg.commit_listeners.items); + _sg_free(_sg.commit_listeners.items); + _sg.commit_listeners.items = 0; +} + +_SOKOL_PRIVATE void _sg_notify_commit_listeners(void) { + SOKOL_ASSERT(_sg.commit_listeners.items); + for (int i = 0; i < _sg.commit_listeners.upper; i++) { + const sg_commit_listener* listener = &_sg.commit_listeners.items[i]; + if (listener->func) { + listener->func(listener->user_data); + } + } +} + +_SOKOL_PRIVATE bool _sg_add_commit_listener(const sg_commit_listener* new_listener) { + SOKOL_ASSERT(new_listener && new_listener->func); + SOKOL_ASSERT(_sg.commit_listeners.items); + // first check if the listener hadn't been added already + for (int i = 0; i < _sg.commit_listeners.upper; i++) { + const sg_commit_listener* slot = &_sg.commit_listeners.items[i]; + if ((slot->func == new_listener->func) && (slot->user_data == new_listener->user_data)) { + _SG_ERROR(IDENTICAL_COMMIT_LISTENER); + return false; + } + } + // first try to plug a hole + sg_commit_listener* slot = 0; + for (int i = 0; i < _sg.commit_listeners.upper; i++) { + if (_sg.commit_listeners.items[i].func == 0) { + slot = &_sg.commit_listeners.items[i]; + break; + } + } + if (!slot) { + // append to end + if (_sg.commit_listeners.upper < _sg.commit_listeners.num) { + slot = &_sg.commit_listeners.items[_sg.commit_listeners.upper++]; + } + } + if (!slot) { + _SG_ERROR(COMMIT_LISTENER_ARRAY_FULL); + return false; + } + *slot = *new_listener; + return true; +} + +_SOKOL_PRIVATE bool _sg_remove_commit_listener(const sg_commit_listener* listener) { + SOKOL_ASSERT(listener && listener->func); + SOKOL_ASSERT(_sg.commit_listeners.items); + for (int i = 0; i < _sg.commit_listeners.upper; i++) { + sg_commit_listener* slot = &_sg.commit_listeners.items[i]; + // both the function pointer and user data must match! + if ((slot->func == listener->func) && (slot->user_data == listener->user_data)) { + slot->func = 0; + slot->user_data = 0; + // NOTE: since _sg_add_commit_listener() already catches duplicates, + // we don't need to worry about them here + return true; + } + } + return false; +} + +_SOKOL_PRIVATE sg_desc _sg_desc_defaults(const sg_desc* desc) { + /* + NOTE: on WebGPU, the default color pixel format MUST be provided, + cannot be a default compile-time constant. + */ + sg_desc res = *desc; + #if defined(SOKOL_WGPU) + SOKOL_ASSERT(SG_PIXELFORMAT_NONE != res.context.color_format); + #elif defined(SOKOL_METAL) || defined(SOKOL_D3D11) + res.context.color_format = _sg_def(res.context.color_format, SG_PIXELFORMAT_BGRA8); + #else + res.context.color_format = _sg_def(res.context.color_format, SG_PIXELFORMAT_RGBA8); + #endif + res.context.depth_format = _sg_def(res.context.depth_format, SG_PIXELFORMAT_DEPTH_STENCIL); + res.context.sample_count = _sg_def(res.context.sample_count, 1); + res.buffer_pool_size = _sg_def(res.buffer_pool_size, _SG_DEFAULT_BUFFER_POOL_SIZE); + res.image_pool_size = _sg_def(res.image_pool_size, _SG_DEFAULT_IMAGE_POOL_SIZE); + res.shader_pool_size = _sg_def(res.shader_pool_size, _SG_DEFAULT_SHADER_POOL_SIZE); + res.pipeline_pool_size = _sg_def(res.pipeline_pool_size, _SG_DEFAULT_PIPELINE_POOL_SIZE); + res.pass_pool_size = _sg_def(res.pass_pool_size, _SG_DEFAULT_PASS_POOL_SIZE); + res.context_pool_size = _sg_def(res.context_pool_size, _SG_DEFAULT_CONTEXT_POOL_SIZE); + res.uniform_buffer_size = _sg_def(res.uniform_buffer_size, _SG_DEFAULT_UB_SIZE); + res.staging_buffer_size = _sg_def(res.staging_buffer_size, _SG_DEFAULT_STAGING_SIZE); + res.sampler_cache_size = _sg_def(res.sampler_cache_size, _SG_DEFAULT_SAMPLER_CACHE_CAPACITY); + res.max_commit_listeners = _sg_def(res.max_commit_listeners, _SG_DEFAULT_MAX_COMMIT_LISTENERS); + return res; +} + +// ██████ ██ ██ ██████ ██ ██ ██████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ██ ██████ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██████ ██████ ███████ ██ ██████ +// +// >>public +SOKOL_API_IMPL void sg_setup(const sg_desc* desc) { + SOKOL_ASSERT(desc); + SOKOL_ASSERT((desc->_start_canary == 0) && (desc->_end_canary == 0)); + SOKOL_ASSERT((desc->allocator.alloc && desc->allocator.free) || (!desc->allocator.alloc && !desc->allocator.free)); + _SG_CLEAR_ARC_STRUCT(_sg_state_t, _sg); + _sg.desc = _sg_desc_defaults(desc); + _sg_setup_pools(&_sg.pools, &_sg.desc); + _sg_setup_commit_listeners(&_sg.desc); + _sg.frame_index = 1; + _sg_setup_backend(&_sg.desc); + _sg.valid = true; + sg_setup_context(); +} + +SOKOL_API_IMPL void sg_shutdown(void) { + /* can only delete resources for the currently set context here, if multiple + contexts are used, the app code must take care of properly releasing them + (since only the app code can switch between 3D-API contexts) + */ + if (_sg.active_context.id != SG_INVALID_ID) { + _sg_context_t* ctx = _sg_lookup_context(&_sg.pools, _sg.active_context.id); + if (ctx) { + _sg_discard_all_resources(&_sg.pools, _sg.active_context.id); + _sg_discard_context(ctx); + } + } + _sg_discard_backend(); + _sg_discard_commit_listeners(); + _sg_discard_pools(&_sg.pools); + _SG_CLEAR_ARC_STRUCT(_sg_state_t, _sg); +} + +SOKOL_API_IMPL bool sg_isvalid(void) { + return _sg.valid; +} + +SOKOL_API_IMPL sg_desc sg_query_desc(void) { + SOKOL_ASSERT(_sg.valid); + return _sg.desc; +} + +SOKOL_API_IMPL sg_backend sg_query_backend(void) { + SOKOL_ASSERT(_sg.valid); + return _sg.backend; +} + +SOKOL_API_IMPL sg_features sg_query_features(void) { + SOKOL_ASSERT(_sg.valid); + return _sg.features; +} + +SOKOL_API_IMPL sg_limits sg_query_limits(void) { + SOKOL_ASSERT(_sg.valid); + return _sg.limits; +} + +SOKOL_API_IMPL sg_pixelformat_info sg_query_pixelformat(sg_pixel_format fmt) { + SOKOL_ASSERT(_sg.valid); + int fmt_index = (int) fmt; + SOKOL_ASSERT((fmt_index > SG_PIXELFORMAT_NONE) && (fmt_index < _SG_PIXELFORMAT_NUM)); + return _sg.formats[fmt_index]; +} + +SOKOL_API_IMPL sg_context sg_setup_context(void) { + SOKOL_ASSERT(_sg.valid); + sg_context res; + int slot_index = _sg_pool_alloc_index(&_sg.pools.context_pool); + if (_SG_INVALID_SLOT_INDEX != slot_index) { + res.id = _sg_slot_alloc(&_sg.pools.context_pool, &_sg.pools.contexts[slot_index].slot, slot_index); + _sg_context_t* ctx = _sg_context_at(&_sg.pools, res.id); + ctx->slot.state = _sg_create_context(ctx); + SOKOL_ASSERT(ctx->slot.state == SG_RESOURCESTATE_VALID); + _sg_activate_context(ctx); + } + else { + /* pool is exhausted */ + res.id = SG_INVALID_ID; + } + _sg.active_context = res; + return res; +} + +SOKOL_API_IMPL void sg_discard_context(sg_context ctx_id) { + SOKOL_ASSERT(_sg.valid); + _sg_discard_all_resources(&_sg.pools, ctx_id.id); + _sg_context_t* ctx = _sg_lookup_context(&_sg.pools, ctx_id.id); + if (ctx) { + _sg_discard_context(ctx); + _sg_reset_context_to_alloc_state(ctx); + _sg_reset_slot(&ctx->slot); + _sg_pool_free_index(&_sg.pools.context_pool, _sg_slot_index(ctx_id.id)); + } + _sg.active_context.id = SG_INVALID_ID; + _sg_activate_context(0); +} + +SOKOL_API_IMPL void sg_activate_context(sg_context ctx_id) { + SOKOL_ASSERT(_sg.valid); + _sg.active_context = ctx_id; + _sg_context_t* ctx = _sg_lookup_context(&_sg.pools, ctx_id.id); + /* NOTE: ctx can be 0 here if the context is no longer valid */ + _sg_activate_context(ctx); +} + +SOKOL_API_IMPL sg_trace_hooks sg_install_trace_hooks(const sg_trace_hooks* trace_hooks) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT(trace_hooks); + _SOKOL_UNUSED(trace_hooks); + #if defined(SOKOL_TRACE_HOOKS) + sg_trace_hooks old_hooks = _sg.hooks; + _sg.hooks = *trace_hooks; + #else + static sg_trace_hooks old_hooks; + _SG_WARN(TRACE_HOOKS_NOT_ENABLED); + #endif + return old_hooks; +} + +SOKOL_API_IMPL sg_buffer sg_alloc_buffer(void) { + SOKOL_ASSERT(_sg.valid); + sg_buffer res = _sg_alloc_buffer(); + _SG_TRACE_ARGS(alloc_buffer, res); + return res; +} + +SOKOL_API_IMPL sg_image sg_alloc_image(void) { + SOKOL_ASSERT(_sg.valid); + sg_image res = _sg_alloc_image(); + _SG_TRACE_ARGS(alloc_image, res); + return res; +} + +SOKOL_API_IMPL sg_shader sg_alloc_shader(void) { + SOKOL_ASSERT(_sg.valid); + sg_shader res = _sg_alloc_shader(); + _SG_TRACE_ARGS(alloc_shader, res); + return res; +} + +SOKOL_API_IMPL sg_pipeline sg_alloc_pipeline(void) { + SOKOL_ASSERT(_sg.valid); + sg_pipeline res = _sg_alloc_pipeline(); + _SG_TRACE_ARGS(alloc_pipeline, res); + return res; +} + +SOKOL_API_IMPL sg_pass sg_alloc_pass(void) { + SOKOL_ASSERT(_sg.valid); + sg_pass res = _sg_alloc_pass(); + _SG_TRACE_ARGS(alloc_pass, res); + return res; +} + +SOKOL_API_IMPL void sg_dealloc_buffer(sg_buffer buf_id) { + SOKOL_ASSERT(_sg.valid); + _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, buf_id.id); + if (buf) { + if (buf->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_dealloc_buffer(buf); + } + else { + _SG_ERROR(DEALLOC_BUFFER_INVALID_STATE); + } + } + _SG_TRACE_ARGS(dealloc_buffer, buf_id); +} + +SOKOL_API_IMPL void sg_dealloc_image(sg_image img_id) { + SOKOL_ASSERT(_sg.valid); + _sg_image_t* img = _sg_lookup_image(&_sg.pools, img_id.id); + if (img) { + if (img->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_dealloc_image(img); + } + else { + _SG_ERROR(DEALLOC_IMAGE_INVALID_STATE); + } + } + _SG_TRACE_ARGS(dealloc_image, img_id); +} + +SOKOL_API_IMPL void sg_dealloc_shader(sg_shader shd_id) { + SOKOL_ASSERT(_sg.valid); + _sg_shader_t* shd = _sg_lookup_shader(&_sg.pools, shd_id.id); + if (shd) { + if (shd->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_dealloc_shader(shd); + } + else { + _SG_ERROR(DEALLOC_SHADER_INVALID_STATE); + } + } + _SG_TRACE_ARGS(dealloc_shader, shd_id); +} + +SOKOL_API_IMPL void sg_dealloc_pipeline(sg_pipeline pip_id) { + SOKOL_ASSERT(_sg.valid); + _sg_pipeline_t* pip = _sg_lookup_pipeline(&_sg.pools, pip_id.id); + if (pip) { + if (pip->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_dealloc_pipeline(pip); + } + else { + _SG_ERROR(DEALLOC_PIPELINE_INVALID_STATE); + } + } + _SG_TRACE_ARGS(dealloc_pipeline, pip_id); +} + +SOKOL_API_IMPL void sg_dealloc_pass(sg_pass pass_id) { + SOKOL_ASSERT(_sg.valid); + _sg_pass_t* pass = _sg_lookup_pass(&_sg.pools, pass_id.id); + if (pass) { + if (pass->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_dealloc_pass(pass); + } + else { + _SG_ERROR(DEALLOC_PASS_INVALID_STATE); + } + } + _SG_TRACE_ARGS(dealloc_pass, pass_id); +} + +SOKOL_API_IMPL void sg_init_buffer(sg_buffer buf_id, const sg_buffer_desc* desc) { + SOKOL_ASSERT(_sg.valid); + sg_buffer_desc desc_def = _sg_buffer_desc_defaults(desc); + _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, buf_id.id); + if (buf) { + if (buf->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_init_buffer(buf, &desc_def); + SOKOL_ASSERT((buf->slot.state == SG_RESOURCESTATE_VALID) || (buf->slot.state == SG_RESOURCESTATE_FAILED)); + } + else { + _SG_ERROR(INIT_BUFFER_INVALID_STATE); + } + } + _SG_TRACE_ARGS(init_buffer, buf_id, &desc_def); +} + +SOKOL_API_IMPL void sg_init_image(sg_image img_id, const sg_image_desc* desc) { + SOKOL_ASSERT(_sg.valid); + sg_image_desc desc_def = _sg_image_desc_defaults(desc); + _sg_image_t* img = _sg_lookup_image(&_sg.pools, img_id.id); + if (img) { + if (img->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_init_image(img, &desc_def); + SOKOL_ASSERT((img->slot.state == SG_RESOURCESTATE_VALID) || (img->slot.state == SG_RESOURCESTATE_FAILED)); + } + else { + _SG_ERROR(INIT_IMAGE_INVALID_STATE); + } + } + _SG_TRACE_ARGS(init_image, img_id, &desc_def); +} + +SOKOL_API_IMPL void sg_init_shader(sg_shader shd_id, const sg_shader_desc* desc) { + SOKOL_ASSERT(_sg.valid); + sg_shader_desc desc_def = _sg_shader_desc_defaults(desc); + _sg_shader_t* shd = _sg_lookup_shader(&_sg.pools, shd_id.id); + if (shd) { + if (shd->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_init_shader(shd, &desc_def); + SOKOL_ASSERT((shd->slot.state == SG_RESOURCESTATE_VALID) || (shd->slot.state == SG_RESOURCESTATE_FAILED)); + } + else { + _SG_ERROR(INIT_SHADER_INVALID_STATE); + } + } + _SG_TRACE_ARGS(init_shader, shd_id, &desc_def); +} + +SOKOL_API_IMPL void sg_init_pipeline(sg_pipeline pip_id, const sg_pipeline_desc* desc) { + SOKOL_ASSERT(_sg.valid); + sg_pipeline_desc desc_def = _sg_pipeline_desc_defaults(desc); + _sg_pipeline_t* pip = _sg_lookup_pipeline(&_sg.pools, pip_id.id); + if (pip) { + if (pip->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_init_pipeline(pip, &desc_def); + SOKOL_ASSERT((pip->slot.state == SG_RESOURCESTATE_VALID) || (pip->slot.state == SG_RESOURCESTATE_FAILED)); + } + else { + _SG_ERROR(INIT_PIPELINE_INVALID_STATE); + } + } + _SG_TRACE_ARGS(init_pipeline, pip_id, &desc_def); +} + +SOKOL_API_IMPL void sg_init_pass(sg_pass pass_id, const sg_pass_desc* desc) { + SOKOL_ASSERT(_sg.valid); + sg_pass_desc desc_def = _sg_pass_desc_defaults(desc); + _sg_pass_t* pass = _sg_lookup_pass(&_sg.pools, pass_id.id); + if (pass) { + if (pass->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_init_pass(pass, &desc_def); + SOKOL_ASSERT((pass->slot.state == SG_RESOURCESTATE_VALID) || (pass->slot.state == SG_RESOURCESTATE_FAILED)); + } + else { + _SG_ERROR(INIT_PASS_INVALID_STATE); + } + } + _SG_TRACE_ARGS(init_pass, pass_id, &desc_def); +} + +SOKOL_API_IMPL void sg_uninit_buffer(sg_buffer buf_id) { + SOKOL_ASSERT(_sg.valid); + _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, buf_id.id); + if (buf) { + if ((buf->slot.state == SG_RESOURCESTATE_VALID) || (buf->slot.state == SG_RESOURCESTATE_FAILED)) { + _sg_uninit_buffer(buf); + SOKOL_ASSERT(buf->slot.state == SG_RESOURCESTATE_ALLOC); + } + else { + _SG_ERROR(UNINIT_BUFFER_INVALID_STATE); + } + } + _SG_TRACE_ARGS(uninit_buffer, buf_id); +} + +SOKOL_API_IMPL void sg_uninit_image(sg_image img_id) { + SOKOL_ASSERT(_sg.valid); + _sg_image_t* img = _sg_lookup_image(&_sg.pools, img_id.id); + if (img) { + if ((img->slot.state == SG_RESOURCESTATE_VALID) || (img->slot.state == SG_RESOURCESTATE_FAILED)) { + _sg_uninit_image(img); + SOKOL_ASSERT(img->slot.state == SG_RESOURCESTATE_ALLOC); + } + else { + _SG_ERROR(UNINIT_IMAGE_INVALID_STATE); + } + } + _SG_TRACE_ARGS(uninit_image, img_id); +} + +SOKOL_API_IMPL void sg_uninit_shader(sg_shader shd_id) { + SOKOL_ASSERT(_sg.valid); + _sg_shader_t* shd = _sg_lookup_shader(&_sg.pools, shd_id.id); + if (shd) { + if ((shd->slot.state == SG_RESOURCESTATE_VALID) || (shd->slot.state == SG_RESOURCESTATE_FAILED)) { + _sg_uninit_shader(shd); + SOKOL_ASSERT(shd->slot.state == SG_RESOURCESTATE_ALLOC); + } + else { + _SG_ERROR(UNINIT_SHADER_INVALID_STATE); + } + } + _SG_TRACE_ARGS(uninit_shader, shd_id); +} + +SOKOL_API_IMPL void sg_uninit_pipeline(sg_pipeline pip_id) { + SOKOL_ASSERT(_sg.valid); + _sg_pipeline_t* pip = _sg_lookup_pipeline(&_sg.pools, pip_id.id); + if (pip) { + if ((pip->slot.state == SG_RESOURCESTATE_VALID) || (pip->slot.state == SG_RESOURCESTATE_FAILED)) { + _sg_uninit_pipeline(pip); + SOKOL_ASSERT(pip->slot.state == SG_RESOURCESTATE_ALLOC); + } + else { + _SG_ERROR(UNINIT_PIPELINE_INVALID_STATE); + } + } + _SG_TRACE_ARGS(uninit_pipeline, pip_id); +} + +SOKOL_API_IMPL void sg_uninit_pass(sg_pass pass_id) { + SOKOL_ASSERT(_sg.valid); + _sg_pass_t* pass = _sg_lookup_pass(&_sg.pools, pass_id.id); + if (pass) { + if ((pass->slot.state == SG_RESOURCESTATE_VALID) || (pass->slot.state == SG_RESOURCESTATE_FAILED)) { + _sg_uninit_pass(pass); + SOKOL_ASSERT(pass->slot.state == SG_RESOURCESTATE_ALLOC); + } + else { + _SG_ERROR(UNINIT_PASS_INVALID_STATE); + } + } + _SG_TRACE_ARGS(uninit_pass, pass_id); +} + +/*-- set allocated resource to failed state ----------------------------------*/ +SOKOL_API_IMPL void sg_fail_buffer(sg_buffer buf_id) { + SOKOL_ASSERT(_sg.valid); + _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, buf_id.id); + if (buf) { + if (buf->slot.state == SG_RESOURCESTATE_ALLOC) { + buf->slot.ctx_id = _sg.active_context.id; + buf->slot.state = SG_RESOURCESTATE_FAILED; + } + else { + _SG_ERROR(FAIL_BUFFER_INVALID_STATE); + } + } + _SG_TRACE_ARGS(fail_buffer, buf_id); +} + +SOKOL_API_IMPL void sg_fail_image(sg_image img_id) { + SOKOL_ASSERT(_sg.valid); + _sg_image_t* img = _sg_lookup_image(&_sg.pools, img_id.id); + if (img) { + if (img->slot.state == SG_RESOURCESTATE_ALLOC) { + img->slot.ctx_id = _sg.active_context.id; + img->slot.state = SG_RESOURCESTATE_FAILED; + } + else { + _SG_ERROR(FAIL_IMAGE_INVALID_STATE); + } + } + _SG_TRACE_ARGS(fail_image, img_id); +} + +SOKOL_API_IMPL void sg_fail_shader(sg_shader shd_id) { + SOKOL_ASSERT(_sg.valid); + _sg_shader_t* shd = _sg_lookup_shader(&_sg.pools, shd_id.id); + if (shd) { + if (shd->slot.state == SG_RESOURCESTATE_ALLOC) { + shd->slot.ctx_id = _sg.active_context.id; + shd->slot.state = SG_RESOURCESTATE_FAILED; + } + else { + _SG_ERROR(FAIL_SHADER_INVALID_STATE); + } + } + _SG_TRACE_ARGS(fail_shader, shd_id); +} + +SOKOL_API_IMPL void sg_fail_pipeline(sg_pipeline pip_id) { + SOKOL_ASSERT(_sg.valid); + _sg_pipeline_t* pip = _sg_lookup_pipeline(&_sg.pools, pip_id.id); + if (pip) { + if (pip->slot.state == SG_RESOURCESTATE_ALLOC) { + pip->slot.ctx_id = _sg.active_context.id; + pip->slot.state = SG_RESOURCESTATE_FAILED; + } + else { + _SG_ERROR(FAIL_PIPELINE_INVALID_STATE); + } + } + _SG_TRACE_ARGS(fail_pipeline, pip_id); +} + +SOKOL_API_IMPL void sg_fail_pass(sg_pass pass_id) { + SOKOL_ASSERT(_sg.valid); + _sg_pass_t* pass = _sg_lookup_pass(&_sg.pools, pass_id.id); + if (pass) { + if (pass->slot.state == SG_RESOURCESTATE_ALLOC) { + pass->slot.ctx_id = _sg.active_context.id; + pass->slot.state = SG_RESOURCESTATE_FAILED; + } + else { + _SG_ERROR(FAIL_PASS_INVALID_STATE); + } + } + _SG_TRACE_ARGS(fail_pass, pass_id); +} + +/*-- get resource state */ +SOKOL_API_IMPL sg_resource_state sg_query_buffer_state(sg_buffer buf_id) { + SOKOL_ASSERT(_sg.valid); + _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, buf_id.id); + sg_resource_state res = buf ? buf->slot.state : SG_RESOURCESTATE_INVALID; + return res; +} + +SOKOL_API_IMPL sg_resource_state sg_query_image_state(sg_image img_id) { + SOKOL_ASSERT(_sg.valid); + _sg_image_t* img = _sg_lookup_image(&_sg.pools, img_id.id); + sg_resource_state res = img ? img->slot.state : SG_RESOURCESTATE_INVALID; + return res; +} + +SOKOL_API_IMPL sg_resource_state sg_query_shader_state(sg_shader shd_id) { + SOKOL_ASSERT(_sg.valid); + _sg_shader_t* shd = _sg_lookup_shader(&_sg.pools, shd_id.id); + sg_resource_state res = shd ? shd->slot.state : SG_RESOURCESTATE_INVALID; + return res; +} + +SOKOL_API_IMPL sg_resource_state sg_query_pipeline_state(sg_pipeline pip_id) { + SOKOL_ASSERT(_sg.valid); + _sg_pipeline_t* pip = _sg_lookup_pipeline(&_sg.pools, pip_id.id); + sg_resource_state res = pip ? pip->slot.state : SG_RESOURCESTATE_INVALID; + return res; +} + +SOKOL_API_IMPL sg_resource_state sg_query_pass_state(sg_pass pass_id) { + SOKOL_ASSERT(_sg.valid); + _sg_pass_t* pass = _sg_lookup_pass(&_sg.pools, pass_id.id); + sg_resource_state res = pass ? pass->slot.state : SG_RESOURCESTATE_INVALID; + return res; +} + +/*-- allocate and initialize resource ----------------------------------------*/ +SOKOL_API_IMPL sg_buffer sg_make_buffer(const sg_buffer_desc* desc) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT(desc); + sg_buffer_desc desc_def = _sg_buffer_desc_defaults(desc); + sg_buffer buf_id = _sg_alloc_buffer(); + if (buf_id.id != SG_INVALID_ID) { + _sg_buffer_t* buf = _sg_buffer_at(&_sg.pools, buf_id.id); + SOKOL_ASSERT(buf && (buf->slot.state == SG_RESOURCESTATE_ALLOC)); + _sg_init_buffer(buf, &desc_def); + SOKOL_ASSERT((buf->slot.state == SG_RESOURCESTATE_VALID) || (buf->slot.state == SG_RESOURCESTATE_FAILED)); + } + _SG_TRACE_ARGS(make_buffer, &desc_def, buf_id); + return buf_id; +} + +SOKOL_API_IMPL sg_image sg_make_image(const sg_image_desc* desc) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT(desc); + sg_image_desc desc_def = _sg_image_desc_defaults(desc); + sg_image img_id = _sg_alloc_image(); + if (img_id.id != SG_INVALID_ID) { + _sg_image_t* img = _sg_image_at(&_sg.pools, img_id.id); + SOKOL_ASSERT(img && (img->slot.state == SG_RESOURCESTATE_ALLOC)); + _sg_init_image(img, &desc_def); + SOKOL_ASSERT((img->slot.state == SG_RESOURCESTATE_VALID) || (img->slot.state == SG_RESOURCESTATE_FAILED)); + } + _SG_TRACE_ARGS(make_image, &desc_def, img_id); + return img_id; +} + +SOKOL_API_IMPL sg_shader sg_make_shader(const sg_shader_desc* desc) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT(desc); + sg_shader_desc desc_def = _sg_shader_desc_defaults(desc); + sg_shader shd_id = _sg_alloc_shader(); + if (shd_id.id != SG_INVALID_ID) { + _sg_shader_t* shd = _sg_shader_at(&_sg.pools, shd_id.id); + SOKOL_ASSERT(shd && (shd->slot.state == SG_RESOURCESTATE_ALLOC)); + _sg_init_shader(shd, &desc_def); + SOKOL_ASSERT((shd->slot.state == SG_RESOURCESTATE_VALID) || (shd->slot.state == SG_RESOURCESTATE_FAILED)); + } + _SG_TRACE_ARGS(make_shader, &desc_def, shd_id); + return shd_id; +} + +SOKOL_API_IMPL sg_pipeline sg_make_pipeline(const sg_pipeline_desc* desc) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT(desc); + sg_pipeline_desc desc_def = _sg_pipeline_desc_defaults(desc); + sg_pipeline pip_id = _sg_alloc_pipeline(); + if (pip_id.id != SG_INVALID_ID) { + _sg_pipeline_t* pip = _sg_pipeline_at(&_sg.pools, pip_id.id); + SOKOL_ASSERT(pip && (pip->slot.state == SG_RESOURCESTATE_ALLOC)); + _sg_init_pipeline(pip, &desc_def); + SOKOL_ASSERT((pip->slot.state == SG_RESOURCESTATE_VALID) || (pip->slot.state == SG_RESOURCESTATE_FAILED)); + } + _SG_TRACE_ARGS(make_pipeline, &desc_def, pip_id); + return pip_id; +} + +SOKOL_API_IMPL sg_pass sg_make_pass(const sg_pass_desc* desc) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT(desc); + sg_pass_desc desc_def = _sg_pass_desc_defaults(desc); + sg_pass pass_id = _sg_alloc_pass(); + if (pass_id.id != SG_INVALID_ID) { + _sg_pass_t* pass = _sg_pass_at(&_sg.pools, pass_id.id); + SOKOL_ASSERT(pass && (pass->slot.state == SG_RESOURCESTATE_ALLOC)); + _sg_init_pass(pass, &desc_def); + SOKOL_ASSERT((pass->slot.state == SG_RESOURCESTATE_VALID) || (pass->slot.state == SG_RESOURCESTATE_FAILED)); + } + _SG_TRACE_ARGS(make_pass, &desc_def, pass_id); + return pass_id; +} + +/*-- destroy resource --------------------------------------------------------*/ +SOKOL_API_IMPL void sg_destroy_buffer(sg_buffer buf_id) { + SOKOL_ASSERT(_sg.valid); + _SG_TRACE_ARGS(destroy_buffer, buf_id); + _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, buf_id.id); + if (buf) { + if ((buf->slot.state == SG_RESOURCESTATE_VALID) || (buf->slot.state == SG_RESOURCESTATE_FAILED)) { + _sg_uninit_buffer(buf); + SOKOL_ASSERT(buf->slot.state == SG_RESOURCESTATE_ALLOC); + } + if (buf->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_dealloc_buffer(buf); + SOKOL_ASSERT(buf->slot.state == SG_RESOURCESTATE_INITIAL); + } + } +} + +SOKOL_API_IMPL void sg_destroy_image(sg_image img_id) { + SOKOL_ASSERT(_sg.valid); + _SG_TRACE_ARGS(destroy_image, img_id); + _sg_image_t* img = _sg_lookup_image(&_sg.pools, img_id.id); + if (img) { + if ((img->slot.state == SG_RESOURCESTATE_VALID) || (img->slot.state == SG_RESOURCESTATE_FAILED)) { + _sg_uninit_image(img); + SOKOL_ASSERT(img->slot.state == SG_RESOURCESTATE_ALLOC); + } + if (img->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_dealloc_image(img); + SOKOL_ASSERT(img->slot.state == SG_RESOURCESTATE_INITIAL); + } + } +} + +SOKOL_API_IMPL void sg_destroy_shader(sg_shader shd_id) { + SOKOL_ASSERT(_sg.valid); + _SG_TRACE_ARGS(destroy_shader, shd_id); + _sg_shader_t* shd = _sg_lookup_shader(&_sg.pools, shd_id.id); + if (shd) { + if ((shd->slot.state == SG_RESOURCESTATE_VALID) || (shd->slot.state == SG_RESOURCESTATE_FAILED)) { + _sg_uninit_shader(shd); + SOKOL_ASSERT(shd->slot.state == SG_RESOURCESTATE_ALLOC); + } + if (shd->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_dealloc_shader(shd); + SOKOL_ASSERT(shd->slot.state == SG_RESOURCESTATE_INITIAL); + } + } +} + +SOKOL_API_IMPL void sg_destroy_pipeline(sg_pipeline pip_id) { + SOKOL_ASSERT(_sg.valid); + _SG_TRACE_ARGS(destroy_pipeline, pip_id); + _sg_pipeline_t* pip = _sg_lookup_pipeline(&_sg.pools, pip_id.id); + if (pip) { + if ((pip->slot.state == SG_RESOURCESTATE_VALID) || (pip->slot.state == SG_RESOURCESTATE_FAILED)) { + _sg_uninit_pipeline(pip); + SOKOL_ASSERT(pip->slot.state == SG_RESOURCESTATE_ALLOC); + } + if (pip->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_dealloc_pipeline(pip); + SOKOL_ASSERT(pip->slot.state == SG_RESOURCESTATE_INITIAL); + } + } +} + +SOKOL_API_IMPL void sg_destroy_pass(sg_pass pass_id) { + SOKOL_ASSERT(_sg.valid); + _SG_TRACE_ARGS(destroy_pass, pass_id); + _sg_pass_t* pass = _sg_lookup_pass(&_sg.pools, pass_id.id); + if (pass) { + if ((pass->slot.state == SG_RESOURCESTATE_VALID) || (pass->slot.state == SG_RESOURCESTATE_FAILED)) { + _sg_uninit_pass(pass); + SOKOL_ASSERT(pass->slot.state == SG_RESOURCESTATE_ALLOC); + } + if (pass->slot.state == SG_RESOURCESTATE_ALLOC) { + _sg_dealloc_pass(pass); + SOKOL_ASSERT(pass->slot.state == SG_RESOURCESTATE_INITIAL); + } + } +} + +SOKOL_API_IMPL void sg_begin_default_pass(const sg_pass_action* pass_action, int width, int height) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT(pass_action); + SOKOL_ASSERT((pass_action->_start_canary == 0) && (pass_action->_end_canary == 0)); + sg_pass_action pa; + _sg_resolve_default_pass_action(pass_action, &pa); + _sg.cur_pass.id = SG_INVALID_ID; + _sg.pass_valid = true; + _sg_begin_pass(0, &pa, width, height); + _SG_TRACE_ARGS(begin_default_pass, pass_action, width, height); +} + +SOKOL_API_IMPL void sg_begin_default_passf(const sg_pass_action* pass_action, float width, float height) { + sg_begin_default_pass(pass_action, (int)width, (int)height); +} + +SOKOL_API_IMPL void sg_begin_pass(sg_pass pass_id, const sg_pass_action* pass_action) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT(pass_action); + SOKOL_ASSERT((pass_action->_start_canary == 0) && (pass_action->_end_canary == 0)); + _sg.cur_pass = pass_id; + _sg_pass_t* pass = _sg_lookup_pass(&_sg.pools, pass_id.id); + if (pass && _sg_validate_begin_pass(pass)) { + _sg.pass_valid = true; + sg_pass_action pa; + _sg_resolve_default_pass_action(pass_action, &pa); + const _sg_image_t* img = _sg_pass_color_image(pass, 0); + SOKOL_ASSERT(img); + const int w = img->cmn.width; + const int h = img->cmn.height; + _sg_begin_pass(pass, &pa, w, h); + _SG_TRACE_ARGS(begin_pass, pass_id, pass_action); + } + else { + _sg.pass_valid = false; + _SG_TRACE_NOARGS(err_pass_invalid); + } +} + +SOKOL_API_IMPL void sg_apply_viewport(int x, int y, int width, int height, bool origin_top_left) { + SOKOL_ASSERT(_sg.valid); + if (!_sg.pass_valid) { + _SG_TRACE_NOARGS(err_pass_invalid); + return; + } + _sg_apply_viewport(x, y, width, height, origin_top_left); + _SG_TRACE_ARGS(apply_viewport, x, y, width, height, origin_top_left); +} + +SOKOL_API_IMPL void sg_apply_viewportf(float x, float y, float width, float height, bool origin_top_left) { + sg_apply_viewport((int)x, (int)y, (int)width, (int)height, origin_top_left); +} + +SOKOL_API_IMPL void sg_apply_scissor_rect(int x, int y, int width, int height, bool origin_top_left) { + SOKOL_ASSERT(_sg.valid); + if (!_sg.pass_valid) { + _SG_TRACE_NOARGS(err_pass_invalid); + return; + } + _sg_apply_scissor_rect(x, y, width, height, origin_top_left); + _SG_TRACE_ARGS(apply_scissor_rect, x, y, width, height, origin_top_left); +} + +SOKOL_API_IMPL void sg_apply_scissor_rectf(float x, float y, float width, float height, bool origin_top_left) { + sg_apply_scissor_rect((int)x, (int)y, (int)width, (int)height, origin_top_left); +} + +SOKOL_API_IMPL void sg_apply_pipeline(sg_pipeline pip_id) { + SOKOL_ASSERT(_sg.valid); + _sg.bindings_valid = false; + if (!_sg_validate_apply_pipeline(pip_id)) { + _sg.next_draw_valid = false; + _SG_TRACE_NOARGS(err_draw_invalid); + return; + } + if (!_sg.pass_valid) { + _SG_TRACE_NOARGS(err_pass_invalid); + return; + } + _sg.cur_pipeline = pip_id; + _sg_pipeline_t* pip = _sg_lookup_pipeline(&_sg.pools, pip_id.id); + SOKOL_ASSERT(pip); + _sg.next_draw_valid = (SG_RESOURCESTATE_VALID == pip->slot.state); + SOKOL_ASSERT(pip->shader && (pip->shader->slot.id == pip->cmn.shader_id.id)); + _sg_apply_pipeline(pip); + _SG_TRACE_ARGS(apply_pipeline, pip_id); +} + +SOKOL_API_IMPL void sg_apply_bindings(const sg_bindings* bindings) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT(bindings); + SOKOL_ASSERT((bindings->_start_canary == 0) && (bindings->_end_canary==0)); + if (!_sg_validate_apply_bindings(bindings)) { + _sg.next_draw_valid = false; + _SG_TRACE_NOARGS(err_draw_invalid); + return; + } + _sg.bindings_valid = true; + + _sg_pipeline_t* pip = _sg_lookup_pipeline(&_sg.pools, _sg.cur_pipeline.id); + SOKOL_ASSERT(pip); + + _sg_buffer_t* vbs[SG_MAX_SHADERSTAGE_BUFFERS] = { 0 }; + int num_vbs = 0; + for (int i = 0; i < SG_MAX_SHADERSTAGE_BUFFERS; i++, num_vbs++) { + if (bindings->vertex_buffers[i].id) { + vbs[i] = _sg_lookup_buffer(&_sg.pools, bindings->vertex_buffers[i].id); + SOKOL_ASSERT(vbs[i]); + _sg.next_draw_valid &= (SG_RESOURCESTATE_VALID == vbs[i]->slot.state); + _sg.next_draw_valid &= !vbs[i]->cmn.append_overflow; + } + else { + break; + } + } + + _sg_buffer_t* ib = 0; + if (bindings->index_buffer.id) { + ib = _sg_lookup_buffer(&_sg.pools, bindings->index_buffer.id); + SOKOL_ASSERT(ib); + _sg.next_draw_valid &= (SG_RESOURCESTATE_VALID == ib->slot.state); + _sg.next_draw_valid &= !ib->cmn.append_overflow; + } + + _sg_image_t* vs_imgs[SG_MAX_SHADERSTAGE_IMAGES] = { 0 }; + int num_vs_imgs = 0; + for (int i = 0; i < SG_MAX_SHADERSTAGE_IMAGES; i++, num_vs_imgs++) { + if (bindings->vs_images[i].id) { + vs_imgs[i] = _sg_lookup_image(&_sg.pools, bindings->vs_images[i].id); + SOKOL_ASSERT(vs_imgs[i]); + _sg.next_draw_valid &= (SG_RESOURCESTATE_VALID == vs_imgs[i]->slot.state); + } + else { + break; + } + } + + _sg_image_t* fs_imgs[SG_MAX_SHADERSTAGE_IMAGES] = { 0 }; + int num_fs_imgs = 0; + for (int i = 0; i < SG_MAX_SHADERSTAGE_IMAGES; i++, num_fs_imgs++) { + if (bindings->fs_images[i].id) { + fs_imgs[i] = _sg_lookup_image(&_sg.pools, bindings->fs_images[i].id); + SOKOL_ASSERT(fs_imgs[i]); + _sg.next_draw_valid &= (SG_RESOURCESTATE_VALID == fs_imgs[i]->slot.state); + } + else { + break; + } + } + if (_sg.next_draw_valid) { + const int* vb_offsets = bindings->vertex_buffer_offsets; + int ib_offset = bindings->index_buffer_offset; + _sg_apply_bindings(pip, vbs, vb_offsets, num_vbs, ib, ib_offset, vs_imgs, num_vs_imgs, fs_imgs, num_fs_imgs); + _SG_TRACE_ARGS(apply_bindings, bindings); + } + else { + _SG_TRACE_NOARGS(err_draw_invalid); + } +} + +SOKOL_API_IMPL void sg_apply_uniforms(sg_shader_stage stage, int ub_index, const sg_range* data) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT((stage == SG_SHADERSTAGE_VS) || (stage == SG_SHADERSTAGE_FS)); + SOKOL_ASSERT((ub_index >= 0) && (ub_index < SG_MAX_SHADERSTAGE_UBS)); + SOKOL_ASSERT(data && data->ptr && (data->size > 0)); + if (!_sg_validate_apply_uniforms(stage, ub_index, data)) { + _sg.next_draw_valid = false; + _SG_TRACE_NOARGS(err_draw_invalid); + return; + } + if (!_sg.pass_valid) { + _SG_TRACE_NOARGS(err_pass_invalid); + return; + } + if (!_sg.next_draw_valid) { + _SG_TRACE_NOARGS(err_draw_invalid); + return; + } + _sg_apply_uniforms(stage, ub_index, data); + _SG_TRACE_ARGS(apply_uniforms, stage, ub_index, data); +} + +SOKOL_API_IMPL void sg_draw(int base_element, int num_elements, int num_instances) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT(base_element >= 0); + SOKOL_ASSERT(num_elements >= 0); + SOKOL_ASSERT(num_instances >= 0); + #if defined(SOKOL_DEBUG) + if (!_sg.bindings_valid) { + _SG_WARN(DRAW_WITHOUT_BINDINGS); + } + #endif + if (!_sg.pass_valid) { + _SG_TRACE_NOARGS(err_pass_invalid); + return; + } + if (!_sg.next_draw_valid) { + _SG_TRACE_NOARGS(err_draw_invalid); + return; + } + if (!_sg.bindings_valid) { + _SG_TRACE_NOARGS(err_bindings_invalid); + return; + } + /* attempting to draw with zero elements or instances is not technically an + error, but might be handled as an error in the backend API (e.g. on Metal) + */ + if ((0 == num_elements) || (0 == num_instances)) { + _SG_TRACE_NOARGS(err_draw_invalid); + return; + } + _sg_draw(base_element, num_elements, num_instances); + _SG_TRACE_ARGS(draw, base_element, num_elements, num_instances); +} + +SOKOL_API_IMPL void sg_end_pass(void) { + SOKOL_ASSERT(_sg.valid); + if (!_sg.pass_valid) { + _SG_TRACE_NOARGS(err_pass_invalid); + return; + } + _sg_end_pass(); + _sg.cur_pass.id = SG_INVALID_ID; + _sg.cur_pipeline.id = SG_INVALID_ID; + _sg.pass_valid = false; + _SG_TRACE_NOARGS(end_pass); +} + +SOKOL_API_IMPL void sg_commit(void) { + SOKOL_ASSERT(_sg.valid); + _sg_commit(); + _sg_notify_commit_listeners(); + _SG_TRACE_NOARGS(commit); + _sg.frame_index++; +} + +SOKOL_API_IMPL void sg_reset_state_cache(void) { + SOKOL_ASSERT(_sg.valid); + _sg_reset_state_cache(); + _SG_TRACE_NOARGS(reset_state_cache); +} + +SOKOL_API_IMPL void sg_update_buffer(sg_buffer buf_id, const sg_range* data) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT(data && data->ptr && (data->size > 0)); + _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, buf_id.id); + if ((data->size > 0) && buf && (buf->slot.state == SG_RESOURCESTATE_VALID)) { + if (_sg_validate_update_buffer(buf, data)) { + SOKOL_ASSERT(data->size <= (size_t)buf->cmn.size); + /* only one update allowed per buffer and frame */ + SOKOL_ASSERT(buf->cmn.update_frame_index != _sg.frame_index); + /* update and append on same buffer in same frame not allowed */ + SOKOL_ASSERT(buf->cmn.append_frame_index != _sg.frame_index); + _sg_update_buffer(buf, data); + buf->cmn.update_frame_index = _sg.frame_index; + } + } + _SG_TRACE_ARGS(update_buffer, buf_id, data); +} + +SOKOL_API_IMPL int sg_append_buffer(sg_buffer buf_id, const sg_range* data) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT(data && data->ptr); + _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, buf_id.id); + int result; + if (buf) { + /* rewind append cursor in a new frame */ + if (buf->cmn.append_frame_index != _sg.frame_index) { + buf->cmn.append_pos = 0; + buf->cmn.append_overflow = false; + } + if ((buf->cmn.append_pos + _sg_roundup((int)data->size, 4)) > buf->cmn.size) { + buf->cmn.append_overflow = true; + } + const int start_pos = buf->cmn.append_pos; + if (buf->slot.state == SG_RESOURCESTATE_VALID) { + if (_sg_validate_append_buffer(buf, data)) { + if (!buf->cmn.append_overflow && (data->size > 0)) { + /* update and append on same buffer in same frame not allowed */ + SOKOL_ASSERT(buf->cmn.update_frame_index != _sg.frame_index); + int copied_num_bytes = _sg_append_buffer(buf, data, buf->cmn.append_frame_index != _sg.frame_index); + buf->cmn.append_pos += copied_num_bytes; + buf->cmn.append_frame_index = _sg.frame_index; + } + } + } + result = start_pos; + } + else { + /* FIXME: should we return -1 here? */ + result = 0; + } + _SG_TRACE_ARGS(append_buffer, buf_id, data, result); + return result; +} + +SOKOL_API_IMPL bool sg_query_buffer_overflow(sg_buffer buf_id) { + SOKOL_ASSERT(_sg.valid); + _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, buf_id.id); + bool result = buf ? buf->cmn.append_overflow : false; + return result; +} + +SOKOL_API_IMPL bool sg_query_buffer_will_overflow(sg_buffer buf_id, size_t size) { + SOKOL_ASSERT(_sg.valid); + _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, buf_id.id); + bool result = false; + if (buf) { + int append_pos = buf->cmn.append_pos; + /* rewind append cursor in a new frame */ + if (buf->cmn.append_frame_index != _sg.frame_index) { + append_pos = 0; + } + if ((append_pos + _sg_roundup((int)size, 4)) > buf->cmn.size) { + result = true; + } + } + return result; +} + +SOKOL_API_IMPL void sg_update_image(sg_image img_id, const sg_image_data* data) { + SOKOL_ASSERT(_sg.valid); + _sg_image_t* img = _sg_lookup_image(&_sg.pools, img_id.id); + if (img && img->slot.state == SG_RESOURCESTATE_VALID) { + if (_sg_validate_update_image(img, data)) { + SOKOL_ASSERT(img->cmn.upd_frame_index != _sg.frame_index); + _sg_update_image(img, data); + img->cmn.upd_frame_index = _sg.frame_index; + } + } + _SG_TRACE_ARGS(update_image, img_id, data); +} + +SOKOL_API_IMPL void sg_push_debug_group(const char* name) { + SOKOL_ASSERT(_sg.valid); + SOKOL_ASSERT(name); + _SOKOL_UNUSED(name); + _SG_TRACE_ARGS(push_debug_group, name); +} + +SOKOL_API_IMPL void sg_pop_debug_group(void) { + SOKOL_ASSERT(_sg.valid); + _SG_TRACE_NOARGS(pop_debug_group); +} + +SOKOL_API_IMPL bool sg_add_commit_listener(sg_commit_listener listener) { + SOKOL_ASSERT(_sg.valid); + return _sg_add_commit_listener(&listener); +} + +SOKOL_API_IMPL bool sg_remove_commit_listener(sg_commit_listener listener) { + SOKOL_ASSERT(_sg.valid); + return _sg_remove_commit_listener(&listener); +} + +SOKOL_API_IMPL sg_buffer_info sg_query_buffer_info(sg_buffer buf_id) { + SOKOL_ASSERT(_sg.valid); + sg_buffer_info info; + _sg_clear(&info, sizeof(info)); + const _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, buf_id.id); + if (buf) { + info.slot.state = buf->slot.state; + info.slot.res_id = buf->slot.id; + info.slot.ctx_id = buf->slot.ctx_id; + info.update_frame_index = buf->cmn.update_frame_index; + info.append_frame_index = buf->cmn.append_frame_index; + info.append_pos = buf->cmn.append_pos; + info.append_overflow = buf->cmn.append_overflow; + #if defined(SOKOL_D3D11) + info.num_slots = 1; + info.active_slot = 0; + #else + info.num_slots = buf->cmn.num_slots; + info.active_slot = buf->cmn.active_slot; + #endif + } + return info; +} + +SOKOL_API_IMPL sg_image_info sg_query_image_info(sg_image img_id) { + SOKOL_ASSERT(_sg.valid); + sg_image_info info; + _sg_clear(&info, sizeof(info)); + const _sg_image_t* img = _sg_lookup_image(&_sg.pools, img_id.id); + if (img) { + info.slot.state = img->slot.state; + info.slot.res_id = img->slot.id; + info.slot.ctx_id = img->slot.ctx_id; + info.upd_frame_index = img->cmn.upd_frame_index; + #if defined(SOKOL_D3D11) + info.num_slots = 1; + info.active_slot = 0; + #else + info.num_slots = img->cmn.num_slots; + info.active_slot = img->cmn.active_slot; + #endif + } + return info; +} + +SOKOL_API_IMPL sg_shader_info sg_query_shader_info(sg_shader shd_id) { + SOKOL_ASSERT(_sg.valid); + sg_shader_info info; + _sg_clear(&info, sizeof(info)); + const _sg_shader_t* shd = _sg_lookup_shader(&_sg.pools, shd_id.id); + if (shd) { + info.slot.state = shd->slot.state; + info.slot.res_id = shd->slot.id; + info.slot.ctx_id = shd->slot.ctx_id; + } + return info; +} + +SOKOL_API_IMPL sg_pipeline_info sg_query_pipeline_info(sg_pipeline pip_id) { + SOKOL_ASSERT(_sg.valid); + sg_pipeline_info info; + _sg_clear(&info, sizeof(info)); + const _sg_pipeline_t* pip = _sg_lookup_pipeline(&_sg.pools, pip_id.id); + if (pip) { + info.slot.state = pip->slot.state; + info.slot.res_id = pip->slot.id; + info.slot.ctx_id = pip->slot.ctx_id; + } + return info; +} + +SOKOL_API_IMPL sg_pass_info sg_query_pass_info(sg_pass pass_id) { + SOKOL_ASSERT(_sg.valid); + sg_pass_info info; + _sg_clear(&info, sizeof(info)); + const _sg_pass_t* pass = _sg_lookup_pass(&_sg.pools, pass_id.id); + if (pass) { + info.slot.state = pass->slot.state; + info.slot.res_id = pass->slot.id; + info.slot.ctx_id = pass->slot.ctx_id; + } + return info; +} + +SOKOL_API_IMPL sg_buffer_desc sg_query_buffer_desc(sg_buffer buf_id) { + SOKOL_ASSERT(_sg.valid); + sg_buffer_desc desc; + _sg_clear(&desc, sizeof(desc)); + const _sg_buffer_t* buf = _sg_lookup_buffer(&_sg.pools, buf_id.id); + if (buf) { + desc.size = (size_t)buf->cmn.size; + desc.type = buf->cmn.type; + desc.usage = buf->cmn.usage; + } + return desc; +} + +SOKOL_API_IMPL sg_image_desc sg_query_image_desc(sg_image img_id) { + SOKOL_ASSERT(_sg.valid); + sg_image_desc desc; + _sg_clear(&desc, sizeof(desc)); + const _sg_image_t* img = _sg_lookup_image(&_sg.pools, img_id.id); + if (img) { + desc.type = img->cmn.type; + desc.render_target = img->cmn.render_target; + desc.width = img->cmn.width; + desc.height = img->cmn.height; + desc.num_slices = img->cmn.num_slices; + desc.num_mipmaps = img->cmn.num_mipmaps; + desc.usage = img->cmn.usage; + desc.pixel_format = img->cmn.pixel_format; + desc.sample_count = img->cmn.sample_count; + desc.min_filter = img->cmn.min_filter; + desc.mag_filter = img->cmn.mag_filter; + desc.wrap_u = img->cmn.wrap_u; + desc.wrap_v = img->cmn.wrap_v; + desc.wrap_w = img->cmn.wrap_w; + desc.border_color = img->cmn.border_color; + desc.max_anisotropy = img->cmn.max_anisotropy; + desc.min_lod = img->cmn.min_lod; + desc.max_lod = img->cmn.max_lod; + } + return desc; +} + +SOKOL_API_IMPL sg_shader_desc sg_query_shader_desc(sg_shader shd_id) { + SOKOL_ASSERT(_sg.valid); + sg_shader_desc desc; + _sg_clear(&desc, sizeof(desc)); + const _sg_shader_t* shd = _sg_lookup_shader(&_sg.pools, shd_id.id); + if (shd) { + for (int stage_idx = 0; stage_idx < SG_NUM_SHADER_STAGES; stage_idx++) { + sg_shader_stage_desc* stage_desc = (stage_idx == 0) ? &desc.vs : &desc.fs; + const _sg_shader_stage_t* stage = &shd->cmn.stage[stage_idx]; + for (int ub_idx = 0; ub_idx < stage->num_uniform_blocks; ub_idx++) { + sg_shader_uniform_block_desc* ub_desc = &stage_desc->uniform_blocks[ub_idx]; + const _sg_shader_uniform_block_t* ub = &stage->uniform_blocks[ub_idx]; + ub_desc->size = ub->size; + } + for (int img_idx = 0; img_idx < stage->num_images; img_idx++) { + sg_shader_image_desc* img_desc = &stage_desc->images[img_idx]; + const _sg_shader_image_t* img = &stage->images[img_idx]; + img_desc->image_type = img->image_type; + img_desc->sampler_type = img->sampler_type; + } + } + } + return desc; +} + +SOKOL_API_IMPL sg_pipeline_desc sg_query_pipeline_desc(sg_pipeline pip_id) { + SOKOL_ASSERT(_sg.valid); + sg_pipeline_desc desc; + _sg_clear(&desc, sizeof(desc)); + const _sg_pipeline_t* pip = _sg_lookup_pipeline(&_sg.pools, pip_id.id); + if (pip) { + desc.shader = pip->cmn.shader_id; + desc.layout = pip->cmn.layout; + desc.depth = pip->cmn.depth; + desc.stencil = pip->cmn.stencil; + desc.color_count = pip->cmn.color_count; + for (int i = 0; i < pip->cmn.color_count; i++) { + desc.colors[i] = pip->cmn.colors[i]; + } + desc.primitive_type = pip->cmn.primitive_type; + desc.index_type = pip->cmn.index_type; + desc.cull_mode = pip->cmn.cull_mode; + desc.face_winding = pip->cmn.face_winding; + desc.sample_count = pip->cmn.sample_count; + desc.blend_color = pip->cmn.blend_color; + desc.alpha_to_coverage_enabled = pip->cmn.alpha_to_coverage_enabled; + } + return desc; +} + +SOKOL_API_IMPL sg_pass_desc sg_query_pass_desc(sg_pass pass_id) { + SOKOL_ASSERT(_sg.valid); + sg_pass_desc desc; + _sg_clear(&desc, sizeof(desc)); + const _sg_pass_t* pass = _sg_lookup_pass(&_sg.pools, pass_id.id); + if (pass) { + for (int i = 0; i < pass->cmn.num_color_atts; i++) { + desc.color_attachments[i].image = pass->cmn.color_atts[i].image_id; + desc.color_attachments[i].mip_level = pass->cmn.color_atts[i].mip_level; + desc.color_attachments[i].slice = pass->cmn.color_atts[i].slice; + } + desc.depth_stencil_attachment.image = pass->cmn.ds_att.image_id; + desc.depth_stencil_attachment.mip_level = pass->cmn.ds_att.mip_level; + desc.depth_stencil_attachment.slice = pass->cmn.ds_att.slice; + } + return desc; +} + +SOKOL_API_IMPL sg_buffer_desc sg_query_buffer_defaults(const sg_buffer_desc* desc) { + SOKOL_ASSERT(_sg.valid && desc); + return _sg_buffer_desc_defaults(desc); +} + +SOKOL_API_IMPL sg_image_desc sg_query_image_defaults(const sg_image_desc* desc) { + SOKOL_ASSERT(_sg.valid && desc); + return _sg_image_desc_defaults(desc); +} + +SOKOL_API_IMPL sg_shader_desc sg_query_shader_defaults(const sg_shader_desc* desc) { + SOKOL_ASSERT(_sg.valid && desc); + return _sg_shader_desc_defaults(desc); +} + +SOKOL_API_IMPL sg_pipeline_desc sg_query_pipeline_defaults(const sg_pipeline_desc* desc) { + SOKOL_ASSERT(_sg.valid && desc); + return _sg_pipeline_desc_defaults(desc); +} + +SOKOL_API_IMPL sg_pass_desc sg_query_pass_defaults(const sg_pass_desc* desc) { + SOKOL_ASSERT(_sg.valid && desc); + return _sg_pass_desc_defaults(desc); +} + +SOKOL_API_IMPL const void* sg_d3d11_device(void) { +#if defined(SOKOL_D3D11) + return (const void*) _sg.d3d11.dev; +#else + return 0; +#endif +} + +SOKOL_API_IMPL const void* sg_mtl_device(void) { +#if defined(SOKOL_METAL) + if (nil != _sg.mtl.device) { + return (__bridge const void*) _sg.mtl.device; + } + else { + return 0; + } +#else + return 0; +#endif +} + +SOKOL_API_IMPL const void* sg_mtl_render_command_encoder(void) { + #if defined(SOKOL_METAL) + if (nil != _sg.mtl.cmd_encoder) { + return (__bridge const void*) _sg.mtl.cmd_encoder; + } + else { + return 0; + } + #else + return 0; + #endif +} + +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +#endif /* SOKOL_GFX_IMPL */ diff --git a/source/engine/thirdparty/sokol/sokol_gfx_imgui.h b/source/engine/thirdparty/sokol/sokol_gfx_imgui.h new file mode 100644 index 0000000..4e7cbe1 --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_gfx_imgui.h @@ -0,0 +1,4226 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_GFX_IMGUI_IMPL) +#define SOKOL_GFX_IMGUI_IMPL +#endif +#ifndef SOKOL_GFX_IMGUI_INCLUDED +/* + sokol_gfx_imgui.h -- debug-inspection UI for sokol_gfx.h using Dear ImGui + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_GFX_IMGUI_IMPL + + before you include this file in *one* C or C++ file to create the + implementation. + + NOTE that the implementation can be compiled either as C++ or as C. + When compiled as C++, sokol_gfx_imgui.h will directly call into the + Dear ImGui C++ API. When compiled as C, sokol_gfx_imgui.h will call + cimgui.h functions instead. + + Include the following file(s) before including sokol_gfx_imgui.h: + + sokol_gfx.h + + Additionally, include the following headers before including the + implementation: + + If the implementation is compiled as C++: + imgui.h + + If the implementation is compiled as C: + cimgui.h + + The sokol_gfx.h implementation must be compiled with debug trace hooks + enabled by defining: + + SOKOL_TRACE_HOOKS + + ...before including the sokol_gfx.h implementation. + + Before including the sokol_gfx_imgui.h implementation, optionally + override the following macros: + + SOKOL_ASSERT(c) -- your own assert macro, default: assert(c) + SOKOL_UNREACHABLE -- your own macro to annotate unreachable code, + default: SOKOL_ASSERT(false) + SOKOL_GFX_IMGUI_API_DECL - public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_GFX_IMGUI_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + + If sokol_gfx_imgui.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_GFX_IMGUI_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + STEP BY STEP: + ============= + --- create an sg_imgui_t struct (which must be preserved between frames) + and initialize it with: + + sg_imgui_init(&sg_imgui, &(sg_imgui_desc_t){ 0 }); + + Note that from C++ you can't inline the desc structure initialization: + + const sg_imgui_desc_t desc = { }; + sg_imgui_init(&sg_imgui, &desc); + + Provide optional memory allocator override functions (compatible with malloc/free) like this: + + sg_imgui_init(&sg_imgui, &(sg_imgui_desc_t){ + .allocator = { + .alloc = my_malloc, + .free = my_free, + } + }); + + --- somewhere in the per-frame code call: + + sg_imgui_draw(&sg_imgui) + + this won't draw anything yet, since no windows are open. + + --- open and close windows directly by setting the following public + booleans in the sg_imgui_t struct: + + sg_imgui.buffers.open = true; + sg_imgui.images.open = true; + sg_imgui.shaders.open = true; + sg_imgui.pipelines.open = true; + sg_imgui.passes.open = true; + sg_imgui.capture.open = true; + + ...for instance, to control the window visibility through + menu items, the following code can be used: + + if (ImGui::BeginMainMenuBar()) { + if (ImGui::BeginMenu("sokol-gfx")) { + ImGui::MenuItem("Buffers", 0, &sg_imgui.buffers.open); + ImGui::MenuItem("Images", 0, &sg_imgui.images.open); + ImGui::MenuItem("Shaders", 0, &sg_imgui.shaders.open); + ImGui::MenuItem("Pipelines", 0, &sg_imgui.pipelines.open); + ImGui::MenuItem("Passes", 0, &sg_imgui.passes.open); + ImGui::MenuItem("Calls", 0, &sg_imgui.capture.open); + ImGui::EndMenu(); + } + ImGui::EndMainMenuBar(); + } + + --- before application shutdown, call: + + sg_imgui_discard(&sg_imgui); + + ...this is not strictly necessary because the application exits + anyway, but not doing this may trigger memory leak detection tools. + + --- finally, your application needs an ImGui renderer, you can either + provide your own, or drop in the sokol_imgui.h utility header + + ALTERNATIVE DRAWING FUNCTIONS: + ============================== + Instead of the convenient, but all-in-one sg_imgui_draw() function, + you can also use the following granular functions which might allow + better integration with your existing UI: + + The following functions only render the window *content* (so you + can integrate the UI into you own windows): + + void sg_imgui_draw_buffers_content(sg_imgui_t* ctx); + void sg_imgui_draw_images_content(sg_imgui_t* ctx); + void sg_imgui_draw_shaders_content(sg_imgui_t* ctx); + void sg_imgui_draw_pipelines_content(sg_imgui_t* ctx); + void sg_imgui_draw_passes_content(sg_imgui_t* ctx); + void sg_imgui_draw_capture_content(sg_imgui_t* ctx); + + And these are the 'full window' drawing functions: + + void sg_imgui_draw_buffers_window(sg_imgui_t* ctx); + void sg_imgui_draw_images_window(sg_imgui_t* ctx); + void sg_imgui_draw_shaders_window(sg_imgui_t* ctx); + void sg_imgui_draw_pipelines_window(sg_imgui_t* ctx); + void sg_imgui_draw_passes_window(sg_imgui_t* ctx); + void sg_imgui_draw_capture_window(sg_imgui_t* ctx); + + Finer-grained drawing functions may be moved to the public API + in the future as needed. + + MEMORY ALLOCATION OVERRIDE + ========================== + You can override the memory allocation functions at initialization time + like this: + + void* my_alloc(size_t size, void* user_data) { + return malloc(size); + } + + void my_free(void* ptr, void* user_data) { + free(ptr); + } + + ... + sg_imgui_init(&(&ctx, &(sg_imgui_desc_t){ + // ... + .allocator = { + .alloc = my_alloc, + .free = my_free, + .user_data = ...; + } + }); + ... + + This only affects memory allocation calls done by sokol_gfx_imgui.h + itself though, not any allocations in OS libraries. + + + LICENSE + ======= + zlib/libpng license + + Copyright (c) 2018 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_GFX_IMGUI_INCLUDED (1) +#include +#include +#include // size_t + +#if !defined(SOKOL_GFX_INCLUDED) +#error "Please include sokol_gfx.h before sokol_gfx_imgui.h" +#endif + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_GFX_IMGUI_API_DECL) +#define SOKOL_GFX_IMGUI_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_GFX_IMGUI_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_GFX_IMGUI_IMPL) +#define SOKOL_GFX_IMGUI_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_GFX_IMGUI_API_DECL __declspec(dllimport) +#else +#define SOKOL_GFX_IMGUI_API_DECL extern +#endif +#endif + +#if defined(__cplusplus) +extern "C" { +#endif + +#define SG_IMGUI_STRBUF_LEN (96) +/* max number of captured calls per frame */ +#define SG_IMGUI_MAX_FRAMECAPTURE_ITEMS (4096) + +typedef struct sg_imgui_str_t { + char buf[SG_IMGUI_STRBUF_LEN]; +} sg_imgui_str_t; + +typedef struct sg_imgui_buffer_t { + sg_buffer res_id; + sg_imgui_str_t label; + sg_buffer_desc desc; +} sg_imgui_buffer_t; + +typedef struct sg_imgui_image_t { + sg_image res_id; + float ui_scale; + sg_imgui_str_t label; + sg_image_desc desc; +} sg_imgui_image_t; + +typedef struct sg_imgui_shader_t { + sg_shader res_id; + sg_imgui_str_t label; + sg_imgui_str_t vs_entry; + sg_imgui_str_t vs_d3d11_target; + sg_imgui_str_t vs_image_name[SG_MAX_SHADERSTAGE_IMAGES]; + sg_imgui_str_t vs_uniform_name[SG_MAX_SHADERSTAGE_UBS][SG_MAX_UB_MEMBERS]; + sg_imgui_str_t fs_entry; + sg_imgui_str_t fs_d3d11_target; + sg_imgui_str_t fs_image_name[SG_MAX_SHADERSTAGE_IMAGES]; + sg_imgui_str_t fs_uniform_name[SG_MAX_SHADERSTAGE_UBS][SG_MAX_UB_MEMBERS]; + sg_imgui_str_t attr_name[SG_MAX_VERTEX_ATTRIBUTES]; + sg_imgui_str_t attr_sem_name[SG_MAX_VERTEX_ATTRIBUTES]; + sg_shader_desc desc; +} sg_imgui_shader_t; + +typedef struct sg_imgui_pipeline_t { + sg_pipeline res_id; + sg_imgui_str_t label; + sg_pipeline_desc desc; +} sg_imgui_pipeline_t; + +typedef struct sg_imgui_pass_t { + sg_pass res_id; + sg_imgui_str_t label; + float color_image_scale[SG_MAX_COLOR_ATTACHMENTS]; + float ds_image_scale; + sg_pass_desc desc; +} sg_imgui_pass_t; + +typedef struct sg_imgui_buffers_t { + bool open; + int num_slots; + sg_buffer sel_buf; + sg_imgui_buffer_t* slots; +} sg_imgui_buffers_t; + +typedef struct sg_imgui_images_t { + bool open; + int num_slots; + sg_image sel_img; + sg_imgui_image_t* slots; +} sg_imgui_images_t; + +typedef struct sg_imgui_shaders_t { + bool open; + int num_slots; + sg_shader sel_shd; + sg_imgui_shader_t* slots; +} sg_imgui_shaders_t; + +typedef struct sg_imgui_pipelines_t { + bool open; + int num_slots; + sg_pipeline sel_pip; + sg_imgui_pipeline_t* slots; +} sg_imgui_pipelines_t; + +typedef struct sg_imgui_passes_t { + bool open; + int num_slots; + sg_pass sel_pass; + sg_imgui_pass_t* slots; +} sg_imgui_passes_t; + +typedef enum sg_imgui_cmd_t { + SG_IMGUI_CMD_INVALID, + SG_IMGUI_CMD_RESET_STATE_CACHE, + SG_IMGUI_CMD_MAKE_BUFFER, + SG_IMGUI_CMD_MAKE_IMAGE, + SG_IMGUI_CMD_MAKE_SHADER, + SG_IMGUI_CMD_MAKE_PIPELINE, + SG_IMGUI_CMD_MAKE_PASS, + SG_IMGUI_CMD_DESTROY_BUFFER, + SG_IMGUI_CMD_DESTROY_IMAGE, + SG_IMGUI_CMD_DESTROY_SHADER, + SG_IMGUI_CMD_DESTROY_PIPELINE, + SG_IMGUI_CMD_DESTROY_PASS, + SG_IMGUI_CMD_UPDATE_BUFFER, + SG_IMGUI_CMD_UPDATE_IMAGE, + SG_IMGUI_CMD_APPEND_BUFFER, + SG_IMGUI_CMD_BEGIN_DEFAULT_PASS, + SG_IMGUI_CMD_BEGIN_PASS, + SG_IMGUI_CMD_APPLY_VIEWPORT, + SG_IMGUI_CMD_APPLY_SCISSOR_RECT, + SG_IMGUI_CMD_APPLY_PIPELINE, + SG_IMGUI_CMD_APPLY_BINDINGS, + SG_IMGUI_CMD_APPLY_UNIFORMS, + SG_IMGUI_CMD_DRAW, + SG_IMGUI_CMD_END_PASS, + SG_IMGUI_CMD_COMMIT, + SG_IMGUI_CMD_ALLOC_BUFFER, + SG_IMGUI_CMD_ALLOC_IMAGE, + SG_IMGUI_CMD_ALLOC_SHADER, + SG_IMGUI_CMD_ALLOC_PIPELINE, + SG_IMGUI_CMD_ALLOC_PASS, + SG_IMGUI_CMD_DEALLOC_BUFFER, + SG_IMGUI_CMD_DEALLOC_IMAGE, + SG_IMGUI_CMD_DEALLOC_SHADER, + SG_IMGUI_CMD_DEALLOC_PIPELINE, + SG_IMGUI_CMD_DEALLOC_PASS, + SG_IMGUI_CMD_INIT_BUFFER, + SG_IMGUI_CMD_INIT_IMAGE, + SG_IMGUI_CMD_INIT_SHADER, + SG_IMGUI_CMD_INIT_PIPELINE, + SG_IMGUI_CMD_INIT_PASS, + SG_IMGUI_CMD_UNINIT_BUFFER, + SG_IMGUI_CMD_UNINIT_IMAGE, + SG_IMGUI_CMD_UNINIT_SHADER, + SG_IMGUI_CMD_UNINIT_PIPELINE, + SG_IMGUI_CMD_UNINIT_PASS, + SG_IMGUI_CMD_FAIL_BUFFER, + SG_IMGUI_CMD_FAIL_IMAGE, + SG_IMGUI_CMD_FAIL_SHADER, + SG_IMGUI_CMD_FAIL_PIPELINE, + SG_IMGUI_CMD_FAIL_PASS, + SG_IMGUI_CMD_PUSH_DEBUG_GROUP, + SG_IMGUI_CMD_POP_DEBUG_GROUP, + SG_IMGUI_CMD_ERR_BUFFER_POOL_EXHAUSTED, + SG_IMGUI_CMD_ERR_IMAGE_POOL_EXHAUSTED, + SG_IMGUI_CMD_ERR_SHADER_POOL_EXHAUSTED, + SG_IMGUI_CMD_ERR_PIPELINE_POOL_EXHAUSTED, + SG_IMGUI_CMD_ERR_PASS_POOL_EXHAUSTED, + SG_IMGUI_CMD_ERR_CONTEXT_MISMATCH, + SG_IMGUI_CMD_ERR_PASS_INVALID, + SG_IMGUI_CMD_ERR_DRAW_INVALID, + SG_IMGUI_CMD_ERR_BINDINGS_INVALID, +} sg_imgui_cmd_t; + +typedef struct sg_imgui_args_make_buffer_t { + sg_buffer result; +} sg_imgui_args_make_buffer_t; + +typedef struct sg_imgui_args_make_image_t { + sg_image result; +} sg_imgui_args_make_image_t; + +typedef struct sg_imgui_args_make_shader_t { + sg_shader result; +} sg_imgui_args_make_shader_t; + +typedef struct sg_imgui_args_make_pipeline_t { + sg_pipeline result; +} sg_imgui_args_make_pipeline_t; + +typedef struct sg_imgui_args_make_pass_t { + sg_pass result; +} sg_imgui_args_make_pass_t; + +typedef struct sg_imgui_args_destroy_buffer_t { + sg_buffer buffer; +} sg_imgui_args_destroy_buffer_t; + +typedef struct sg_imgui_args_destroy_image_t { + sg_image image; +} sg_imgui_args_destroy_image_t; + +typedef struct sg_imgui_args_destroy_shader_t { + sg_shader shader; +} sg_imgui_args_destroy_shader_t; + +typedef struct sg_imgui_args_destroy_pipeline_t { + sg_pipeline pipeline; +} sg_imgui_args_destroy_pipeline_t; + +typedef struct sg_imgui_args_destroy_pass_t { + sg_pass pass; +} sg_imgui_args_destroy_pass_t; + +typedef struct sg_imgui_args_update_buffer_t { + sg_buffer buffer; + size_t data_size; +} sg_imgui_args_update_buffer_t; + +typedef struct sg_imgui_args_update_image_t { + sg_image image; +} sg_imgui_args_update_image_t; + +typedef struct sg_imgui_args_append_buffer_t { + sg_buffer buffer; + size_t data_size; + int result; +} sg_imgui_args_append_buffer_t; + +typedef struct sg_imgui_args_begin_default_pass_t { + sg_pass_action action; + int width; + int height; +} sg_imgui_args_begin_default_pass_t; + +typedef struct sg_imgui_args_begin_pass_t { + sg_pass pass; + sg_pass_action action; +} sg_imgui_args_begin_pass_t; + +typedef struct sg_imgui_args_apply_viewport_t { + int x, y, width, height; + bool origin_top_left; +} sg_imgui_args_apply_viewport_t; + +typedef struct sg_imgui_args_apply_scissor_rect_t { + int x, y, width, height; + bool origin_top_left; +} sg_imgui_args_apply_scissor_rect_t; + +typedef struct sg_imgui_args_apply_pipeline_t { + sg_pipeline pipeline; +} sg_imgui_args_apply_pipeline_t; + +typedef struct sg_imgui_args_apply_bindings_t { + sg_bindings bindings; +} sg_imgui_args_apply_bindings_t; + +typedef struct sg_imgui_args_apply_uniforms_t { + sg_shader_stage stage; + int ub_index; + size_t data_size; + sg_pipeline pipeline; /* the pipeline which was active at this call */ + size_t ubuf_pos; /* start of copied data in capture buffer */ +} sg_imgui_args_apply_uniforms_t; + +typedef struct sg_imgui_args_draw_t { + int base_element; + int num_elements; + int num_instances; +} sg_imgui_args_draw_t; + +typedef struct sg_imgui_args_alloc_buffer_t { + sg_buffer result; +} sg_imgui_args_alloc_buffer_t; + +typedef struct sg_imgui_args_alloc_image_t { + sg_image result; +} sg_imgui_args_alloc_image_t; + +typedef struct sg_imgui_args_alloc_shader_t { + sg_shader result; +} sg_imgui_args_alloc_shader_t; + +typedef struct sg_imgui_args_alloc_pipeline_t { + sg_pipeline result; +} sg_imgui_args_alloc_pipeline_t; + +typedef struct sg_imgui_args_alloc_pass_t { + sg_pass result; +} sg_imgui_args_alloc_pass_t; + +typedef struct sg_imgui_args_dealloc_buffer_t { + sg_buffer buffer; +} sg_imgui_args_dealloc_buffer_t; + +typedef struct sg_imgui_args_dealloc_image_t { + sg_image image; +} sg_imgui_args_dealloc_image_t; + +typedef struct sg_imgui_args_dealloc_shader_t { + sg_shader shader; +} sg_imgui_args_dealloc_shader_t; + +typedef struct sg_imgui_args_dealloc_pipeline_t { + sg_pipeline pipeline; +} sg_imgui_args_dealloc_pipeline_t; + +typedef struct sg_imgui_args_dealloc_pass_t { + sg_pass pass; +} sg_imgui_args_dealloc_pass_t; + +typedef struct sg_imgui_args_init_buffer_t { + sg_buffer buffer; +} sg_imgui_args_init_buffer_t; + +typedef struct sg_imgui_args_init_image_t { + sg_image image; +} sg_imgui_args_init_image_t; + +typedef struct sg_imgui_args_init_shader_t { + sg_shader shader; +} sg_imgui_args_init_shader_t; + +typedef struct sg_imgui_args_init_pipeline_t { + sg_pipeline pipeline; +} sg_imgui_args_init_pipeline_t; + +typedef struct sg_imgui_args_init_pass_t { + sg_pass pass; +} sg_imgui_args_init_pass_t; + +typedef struct sg_imgui_args_uninit_buffer_t { + sg_buffer buffer; +} sg_imgui_args_uninit_buffer_t; + +typedef struct sg_imgui_args_uninit_image_t { + sg_image image; +} sg_imgui_args_uninit_image_t; + +typedef struct sg_imgui_args_uninit_shader_t { + sg_shader shader; +} sg_imgui_args_uninit_shader_t; + +typedef struct sg_imgui_args_uninit_pipeline_t { + sg_pipeline pipeline; +} sg_imgui_args_uninit_pipeline_t; + +typedef struct sg_imgui_args_uninit_pass_t { + sg_pass pass; +} sg_imgui_args_uninit_pass_t; + +typedef struct sg_imgui_args_fail_buffer_t { + sg_buffer buffer; +} sg_imgui_args_fail_buffer_t; + +typedef struct sg_imgui_args_fail_image_t { + sg_image image; +} sg_imgui_args_fail_image_t; + +typedef struct sg_imgui_args_fail_shader_t { + sg_shader shader; +} sg_imgui_args_fail_shader_t; + +typedef struct sg_imgui_args_fail_pipeline_t { + sg_pipeline pipeline; +} sg_imgui_args_fail_pipeline_t; + +typedef struct sg_imgui_args_fail_pass_t { + sg_pass pass; +} sg_imgui_args_fail_pass_t; + +typedef struct sg_imgui_args_push_debug_group_t { + sg_imgui_str_t name; +} sg_imgui_args_push_debug_group_t; + +typedef union sg_imgui_args_t { + sg_imgui_args_make_buffer_t make_buffer; + sg_imgui_args_make_image_t make_image; + sg_imgui_args_make_shader_t make_shader; + sg_imgui_args_make_pipeline_t make_pipeline; + sg_imgui_args_make_pass_t make_pass; + sg_imgui_args_destroy_buffer_t destroy_buffer; + sg_imgui_args_destroy_image_t destroy_image; + sg_imgui_args_destroy_shader_t destroy_shader; + sg_imgui_args_destroy_pipeline_t destroy_pipeline; + sg_imgui_args_destroy_pass_t destroy_pass; + sg_imgui_args_update_buffer_t update_buffer; + sg_imgui_args_update_image_t update_image; + sg_imgui_args_append_buffer_t append_buffer; + sg_imgui_args_begin_default_pass_t begin_default_pass; + sg_imgui_args_begin_pass_t begin_pass; + sg_imgui_args_apply_viewport_t apply_viewport; + sg_imgui_args_apply_scissor_rect_t apply_scissor_rect; + sg_imgui_args_apply_pipeline_t apply_pipeline; + sg_imgui_args_apply_bindings_t apply_bindings; + sg_imgui_args_apply_uniforms_t apply_uniforms; + sg_imgui_args_draw_t draw; + sg_imgui_args_alloc_buffer_t alloc_buffer; + sg_imgui_args_alloc_image_t alloc_image; + sg_imgui_args_alloc_shader_t alloc_shader; + sg_imgui_args_alloc_pipeline_t alloc_pipeline; + sg_imgui_args_alloc_pass_t alloc_pass; + sg_imgui_args_dealloc_buffer_t dealloc_buffer; + sg_imgui_args_dealloc_image_t dealloc_image; + sg_imgui_args_dealloc_shader_t dealloc_shader; + sg_imgui_args_dealloc_pipeline_t dealloc_pipeline; + sg_imgui_args_dealloc_pass_t dealloc_pass; + sg_imgui_args_init_buffer_t init_buffer; + sg_imgui_args_init_image_t init_image; + sg_imgui_args_init_shader_t init_shader; + sg_imgui_args_init_pipeline_t init_pipeline; + sg_imgui_args_init_pass_t init_pass; + sg_imgui_args_uninit_buffer_t uninit_buffer; + sg_imgui_args_uninit_image_t uninit_image; + sg_imgui_args_uninit_shader_t uninit_shader; + sg_imgui_args_uninit_pipeline_t uninit_pipeline; + sg_imgui_args_uninit_pass_t uninit_pass; + sg_imgui_args_fail_buffer_t fail_buffer; + sg_imgui_args_fail_image_t fail_image; + sg_imgui_args_fail_shader_t fail_shader; + sg_imgui_args_fail_pipeline_t fail_pipeline; + sg_imgui_args_fail_pass_t fail_pass; + sg_imgui_args_push_debug_group_t push_debug_group; +} sg_imgui_args_t; + +typedef struct sg_imgui_capture_item_t { + sg_imgui_cmd_t cmd; + uint32_t color; + sg_imgui_args_t args; +} sg_imgui_capture_item_t; + +typedef struct sg_imgui_capture_bucket_t { + size_t ubuf_size; /* size of uniform capture buffer in bytes */ + size_t ubuf_pos; /* current uniform buffer pos */ + uint8_t* ubuf; /* buffer for capturing uniform updates */ + int num_items; + sg_imgui_capture_item_t items[SG_IMGUI_MAX_FRAMECAPTURE_ITEMS]; +} sg_imgui_capture_bucket_t; + +/* double-buffered call-capture buckets, one bucket is currently recorded, + the previous bucket is displayed +*/ +typedef struct sg_imgui_capture_t { + bool open; + int bucket_index; /* which bucket to record to, 0 or 1 */ + int sel_item; /* currently selected capture item by index */ + sg_imgui_capture_bucket_t bucket[2]; +} sg_imgui_capture_t; + +typedef struct sg_imgui_caps_t { + bool open; +} sg_imgui_caps_t; + +/* + sg_imgui_allocator_t + + Used in sg_imgui_desc_t to provide custom memory-alloc and -free functions + to sokol_gfx_imgui.h. If memory management should be overridden, both the + alloc and free function must be provided (e.g. it's not valid to + override one function but not the other). +*/ +typedef struct sg_imgui_allocator_t { + void* (*alloc)(size_t size, void* user_data); + void (*free)(void* ptr, void* user_data); + void* user_data; +} sg_imgui_allocator_t; + +/* + sg_imgui_desc_t + + Initialization options for sg_imgui_init(). +*/ +typedef struct sg_imgui_desc_t { + sg_imgui_allocator_t allocator; // optional memory allocation overrides (default: malloc/free) +} sg_imgui_desc_t; + +typedef struct sg_imgui_t { + uint32_t init_tag; + sg_imgui_desc_t desc; + sg_imgui_buffers_t buffers; + sg_imgui_images_t images; + sg_imgui_shaders_t shaders; + sg_imgui_pipelines_t pipelines; + sg_imgui_passes_t passes; + sg_imgui_capture_t capture; + sg_imgui_caps_t caps; + sg_pipeline cur_pipeline; + sg_trace_hooks hooks; +} sg_imgui_t; + +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_init(sg_imgui_t* ctx, const sg_imgui_desc_t* desc); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_discard(sg_imgui_t* ctx); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw(sg_imgui_t* ctx); + +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_buffers_content(sg_imgui_t* ctx); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_images_content(sg_imgui_t* ctx); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_shaders_content(sg_imgui_t* ctx); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_pipelines_content(sg_imgui_t* ctx); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_passes_content(sg_imgui_t* ctx); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_capture_content(sg_imgui_t* ctx); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_capabilities_content(sg_imgui_t* ctx); + +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_buffers_window(sg_imgui_t* ctx); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_images_window(sg_imgui_t* ctx); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_shaders_window(sg_imgui_t* ctx); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_pipelines_window(sg_imgui_t* ctx); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_passes_window(sg_imgui_t* ctx); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_capture_window(sg_imgui_t* ctx); +SOKOL_GFX_IMGUI_API_DECL void sg_imgui_draw_capabilities_window(sg_imgui_t* ctx); + +#if defined(__cplusplus) +} /* extern "C" */ +#endif +#endif /* SOKOL_GFX_IMGUI_INCLUDED */ + +/*=== IMPLEMENTATION =========================================================*/ +#ifdef SOKOL_GFX_IMGUI_IMPL +#define SOKOL_GFX_IMGUI_IMPL_INCLUDED (1) + +#if defined(SOKOL_MALLOC) || defined(SOKOL_CALLOC) || defined(SOKOL_FREE) +#error "SOKOL_MALLOC/CALLOC/FREE macros are no longer supported, please use sg_imgui_desc_t.allocator to override memory allocation functions" +#endif + +#if defined(__cplusplus) + #if !defined(IMGUI_VERSION) + #error "Please include imgui.h before the sokol_imgui.h implementation" + #endif +#else + #if !defined(CIMGUI_INCLUDED) + #error "Please include cimgui.h before the sokol_imgui.h implementation" + #endif +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif +#ifndef SOKOL_UNREACHABLE + #define SOKOL_UNREACHABLE SOKOL_ASSERT(false) +#endif +#ifndef _SOKOL_PRIVATE + #if defined(__GNUC__) || defined(__clang__) + #define _SOKOL_PRIVATE __attribute__((unused)) static + #else + #define _SOKOL_PRIVATE static + #endif +#endif +#ifndef _SOKOL_UNUSED +#define _SOKOL_UNUSED(x) (void)(x) +#endif +#ifndef SOKOL_API_IMPL +#define SOKOL_API_IMPL +#endif + +#include +#include // snprintf +#include // malloc, free + +#define _SG_IMGUI_SLOT_MASK (0xFFFF) +#define _SG_IMGUI_LIST_WIDTH (192) +#define _SG_IMGUI_COLOR_OTHER 0xFFCCCCCC +#define _SG_IMGUI_COLOR_RSRC 0xFF00FFFF +#define _SG_IMGUI_COLOR_DRAW 0xFF00FF00 +#define _SG_IMGUI_COLOR_ERR 0xFF8888FF + +/*--- C => C++ layer ---------------------------------------------------------*/ +#if defined(__cplusplus) +#define IMVEC2(x,y) ImVec2(x,y) +#define IMVEC4(x,y,z,w) ImVec4(x,y,z,w) +_SOKOL_PRIVATE void igText(const char* fmt,...) { + va_list args; + va_start(args, fmt); + ImGui::TextV(fmt, args); + va_end(args); +} +_SOKOL_PRIVATE void igSeparator() { + return ImGui::Separator(); +} +_SOKOL_PRIVATE void igSameLine(float offset_from_start_x, float spacing) { + return ImGui::SameLine(offset_from_start_x,spacing); +} +_SOKOL_PRIVATE void igPushID_Int(int int_id) { + return ImGui::PushID(int_id); +} +_SOKOL_PRIVATE void igPopID() { + return ImGui::PopID(); +} +_SOKOL_PRIVATE bool igSelectable_Bool(const char* label,bool selected,ImGuiSelectableFlags flags,const ImVec2 size) { + return ImGui::Selectable(label,selected,flags,size); +} +_SOKOL_PRIVATE bool igSmallButton(const char* label) { + return ImGui::SmallButton(label); +} +_SOKOL_PRIVATE bool igBeginChild_Str(const char* str_id,const ImVec2 size,bool border,ImGuiWindowFlags flags) { + return ImGui::BeginChild(str_id,size,border,flags); +} +_SOKOL_PRIVATE void igEndChild() { + return ImGui::EndChild(); +} +_SOKOL_PRIVATE void igPushStyleColor_U32(ImGuiCol idx, ImU32 col) { + return ImGui::PushStyleColor(idx,col); +} +_SOKOL_PRIVATE void igPopStyleColor(int count) { + return ImGui::PopStyleColor(count); +} +_SOKOL_PRIVATE bool igTreeNode_StrStr(const char* str_id,const char* fmt,...) { + va_list args; + va_start(args, fmt); + bool ret = ImGui::TreeNodeV(str_id,fmt,args); + va_end(args); + return ret; +} +_SOKOL_PRIVATE bool igTreeNode_Str(const char* label) { + return ImGui::TreeNode(label); +} +_SOKOL_PRIVATE void igTreePop() { + return ImGui::TreePop(); +} +_SOKOL_PRIVATE bool igIsItemHovered(ImGuiHoveredFlags flags) { + return ImGui::IsItemHovered(flags); +} +_SOKOL_PRIVATE void igSetTooltip(const char* fmt,...) { + va_list args; + va_start(args, fmt); + ImGui::SetTooltipV(fmt,args); + va_end(args); +} +_SOKOL_PRIVATE bool igSliderFloat(const char* label,float* v,float v_min,float v_max,const char* format,ImGuiSliderFlags flags) { + return ImGui::SliderFloat(label,v,v_min,v_max,format,flags); +} +_SOKOL_PRIVATE void igImage(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,const ImVec4 tint_col,const ImVec4 border_col) { + return ImGui::Image(user_texture_id,size,uv0,uv1,tint_col,border_col); +} +_SOKOL_PRIVATE void igSetNextWindowSize(const ImVec2 size,ImGuiCond cond) { + return ImGui::SetNextWindowSize(size,cond); +} +_SOKOL_PRIVATE bool igBegin(const char* name,bool* p_open,ImGuiWindowFlags flags) { + return ImGui::Begin(name,p_open,flags); +} +_SOKOL_PRIVATE void igEnd() { + return ImGui::End(); +} +#else +#define IMVEC2(x,y) (ImVec2){x,y} +#define IMVEC4(x,y,z,w) (ImVec4){x,y,z,w} +#endif + +/*--- UTILS ------------------------------------------------------------------*/ +_SOKOL_PRIVATE void _sg_imgui_clear(void* ptr, size_t size) { + SOKOL_ASSERT(ptr && (size > 0)); + memset(ptr, 0, size); +} + +_SOKOL_PRIVATE void* _sg_imgui_malloc(const sg_imgui_allocator_t* allocator, size_t size) { + SOKOL_ASSERT(allocator && (size > 0)); + void* ptr; + if (allocator->alloc) { + ptr = allocator->alloc(size, allocator->user_data); + } + else { + ptr = malloc(size); + } + SOKOL_ASSERT(ptr); + return ptr; +} + +_SOKOL_PRIVATE void* _sg_imgui_malloc_clear(const sg_imgui_allocator_t* allocator, size_t size) { + void* ptr = _sg_imgui_malloc(allocator, size); + _sg_imgui_clear(ptr, size); + return ptr; +} + +_SOKOL_PRIVATE void _sg_imgui_free(const sg_imgui_allocator_t* allocator, void* ptr) { + SOKOL_ASSERT(allocator); + if (allocator->free) { + allocator->free(ptr, allocator->user_data); + } + else { + free(ptr); + } +} + + _SOKOL_PRIVATE void* _sg_imgui_realloc(const sg_imgui_allocator_t* allocator, void* old_ptr, size_t old_size, size_t new_size) { + SOKOL_ASSERT(allocator && (new_size > 0) && (new_size > old_size)); + void* new_ptr = _sg_imgui_malloc(allocator, new_size); + if (old_ptr) { + if (old_size > 0) { + memcpy(new_ptr, old_ptr, old_size); + } + _sg_imgui_free(allocator, old_ptr); + } + return new_ptr; +} + +_SOKOL_PRIVATE int _sg_imgui_slot_index(uint32_t id) { + int slot_index = (int) (id & _SG_IMGUI_SLOT_MASK); + SOKOL_ASSERT(0 != slot_index); + return slot_index; +} + +_SOKOL_PRIVATE uint32_t _sg_imgui_align_u32(uint32_t val, uint32_t align) { + SOKOL_ASSERT((align > 0) && ((align & (align - 1)) == 0)); + return (val + (align - 1)) & ~(align - 1); +} + +_SOKOL_PRIVATE uint32_t _sg_imgui_std140_uniform_alignment(sg_uniform_type type, int array_count) { + SOKOL_ASSERT(array_count > 0); + if (array_count == 1) { + switch (type) { + case SG_UNIFORMTYPE_FLOAT: + case SG_UNIFORMTYPE_INT: + return 4; + case SG_UNIFORMTYPE_FLOAT2: + case SG_UNIFORMTYPE_INT2: + return 8; + case SG_UNIFORMTYPE_FLOAT3: + case SG_UNIFORMTYPE_FLOAT4: + case SG_UNIFORMTYPE_INT3: + case SG_UNIFORMTYPE_INT4: + return 16; + case SG_UNIFORMTYPE_MAT4: + return 16; + default: + SOKOL_UNREACHABLE; + return 1; + } + } + else { + return 16; + } +} + +_SOKOL_PRIVATE uint32_t _sg_imgui_std140_uniform_size(sg_uniform_type type, int array_count) { + SOKOL_ASSERT(array_count > 0); + if (array_count == 1) { + switch (type) { + case SG_UNIFORMTYPE_FLOAT: + case SG_UNIFORMTYPE_INT: + return 4; + case SG_UNIFORMTYPE_FLOAT2: + case SG_UNIFORMTYPE_INT2: + return 8; + case SG_UNIFORMTYPE_FLOAT3: + case SG_UNIFORMTYPE_INT3: + return 12; + case SG_UNIFORMTYPE_FLOAT4: + case SG_UNIFORMTYPE_INT4: + return 16; + case SG_UNIFORMTYPE_MAT4: + return 64; + default: + SOKOL_UNREACHABLE; + return 0; + } + } + else { + switch (type) { + case SG_UNIFORMTYPE_FLOAT: + case SG_UNIFORMTYPE_FLOAT2: + case SG_UNIFORMTYPE_FLOAT3: + case SG_UNIFORMTYPE_FLOAT4: + case SG_UNIFORMTYPE_INT: + case SG_UNIFORMTYPE_INT2: + case SG_UNIFORMTYPE_INT3: + case SG_UNIFORMTYPE_INT4: + return 16 * (uint32_t)array_count; + case SG_UNIFORMTYPE_MAT4: + return 64 * (uint32_t)array_count; + default: + SOKOL_UNREACHABLE; + return 0; + } + } +} + +_SOKOL_PRIVATE void _sg_imgui_strcpy(sg_imgui_str_t* dst, const char* src) { + SOKOL_ASSERT(dst); + if (src) { + #if defined(_MSC_VER) + strncpy_s(dst->buf, SG_IMGUI_STRBUF_LEN, src, (SG_IMGUI_STRBUF_LEN-1)); + #else + strncpy(dst->buf, src, SG_IMGUI_STRBUF_LEN); + #endif + dst->buf[SG_IMGUI_STRBUF_LEN-1] = 0; + } + else { + _sg_imgui_clear(dst->buf, SG_IMGUI_STRBUF_LEN); + } +} + +_SOKOL_PRIVATE sg_imgui_str_t _sg_imgui_make_str(const char* str) { + sg_imgui_str_t res; + _sg_imgui_strcpy(&res, str); + return res; +} + +_SOKOL_PRIVATE const char* _sg_imgui_str_dup(const sg_imgui_allocator_t* allocator, const char* src) { + SOKOL_ASSERT(allocator && src); + size_t len = strlen(src) + 1; + char* dst = (char*) _sg_imgui_malloc(allocator, len); + memcpy(dst, src, len); + return (const char*) dst; +} + +_SOKOL_PRIVATE const void* _sg_imgui_bin_dup(const sg_imgui_allocator_t* allocator, const void* src, size_t num_bytes) { + SOKOL_ASSERT(allocator && src && (num_bytes > 0)); + void* dst = _sg_imgui_malloc(allocator, num_bytes); + memcpy(dst, src, num_bytes); + return (const void*) dst; +} + +_SOKOL_PRIVATE void _sg_imgui_snprintf(sg_imgui_str_t* dst, const char* fmt, ...) { + SOKOL_ASSERT(dst); + va_list args; + va_start(args, fmt); + vsnprintf(dst->buf, sizeof(dst->buf), fmt, args); + dst->buf[sizeof(dst->buf)-1] = 0; + va_end(args); +} + +/*--- STRING CONVERSION ------------------------------------------------------*/ +_SOKOL_PRIVATE const char* _sg_imgui_resourcestate_string(sg_resource_state s) { + switch (s) { + case SG_RESOURCESTATE_INITIAL: return "SG_RESOURCESTATE_INITIAL"; + case SG_RESOURCESTATE_ALLOC: return "SG_RESOURCESTATE_ALLOC"; + case SG_RESOURCESTATE_VALID: return "SG_RESOURCESTATE_VALID"; + case SG_RESOURCESTATE_FAILED: return "SG_RESOURCESTATE_FAILED"; + default: return "SG_RESOURCESTATE_INVALID"; + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw_resource_slot(const sg_slot_info* slot) { + igText("ResId: %08X", slot->res_id); + igText("CtxId: %08X", slot->ctx_id); + igText("State: %s", _sg_imgui_resourcestate_string(slot->state)); +} + +_SOKOL_PRIVATE const char* _sg_imgui_backend_string(sg_backend b) { + switch (b) { + case SG_BACKEND_GLCORE33: return "SG_BACKEND_GLCORE33"; + case SG_BACKEND_GLES3: return "SG_BACKEND_GLES3"; + case SG_BACKEND_D3D11: return "SG_BACKEND_D3D11"; + case SG_BACKEND_METAL_IOS: return "SG_BACKEND_METAL_IOS"; + case SG_BACKEND_METAL_MACOS: return "SG_BACKEND_METAL_MACOS"; + case SG_BACKEND_METAL_SIMULATOR: return "SG_BACKEND_METAL_SIMULATOR"; + case SG_BACKEND_DUMMY: return "SG_BACKEND_DUMMY"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_buffertype_string(sg_buffer_type t) { + switch (t) { + case SG_BUFFERTYPE_VERTEXBUFFER: return "SG_BUFFERTYPE_VERTEXBUFFER"; + case SG_BUFFERTYPE_INDEXBUFFER: return "SG_BUFFERTYPE_INDEXBUFFER"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_usage_string(sg_usage u) { + switch (u) { + case SG_USAGE_IMMUTABLE: return "SG_USAGE_IMMUTABLE"; + case SG_USAGE_DYNAMIC: return "SG_USAGE_DYNAMIC"; + case SG_USAGE_STREAM: return "SG_USAGE_STREAM"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_imagetype_string(sg_image_type t) { + switch (t) { + case SG_IMAGETYPE_2D: return "SG_IMAGETYPE_2D"; + case SG_IMAGETYPE_CUBE: return "SG_IMAGETYPE_CUBE"; + case SG_IMAGETYPE_3D: return "SG_IMAGETYPE_3D"; + case SG_IMAGETYPE_ARRAY: return "SG_IMAGETYPE_ARRAY"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_samplertype_string(sg_sampler_type t) { + switch (t) { + case SG_SAMPLERTYPE_FLOAT: return "SG_SAMPLERTYPE_FLOAT"; + case SG_SAMPLERTYPE_SINT: return "SG_SAMPLERTYPE_SINT"; + case SG_SAMPLERTYPE_UINT: return "SG_SAMPLERTYPE_UINT"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_pixelformat_string(sg_pixel_format fmt) { + switch (fmt) { + case SG_PIXELFORMAT_NONE: return "SG_PIXELFORMAT_NONE"; + case SG_PIXELFORMAT_R8: return "SG_PIXELFORMAT_R8"; + case SG_PIXELFORMAT_R8SN: return "SG_PIXELFORMAT_R8SN"; + case SG_PIXELFORMAT_R8UI: return "SG_PIXELFORMAT_R8UI"; + case SG_PIXELFORMAT_R8SI: return "SG_PIXELFORMAT_R8SI"; + case SG_PIXELFORMAT_R16: return "SG_PIXELFORMAT_R16"; + case SG_PIXELFORMAT_R16SN: return "SG_PIXELFORMAT_R16SN"; + case SG_PIXELFORMAT_R16UI: return "SG_PIXELFORMAT_R16UI"; + case SG_PIXELFORMAT_R16SI: return "SG_PIXELFORMAT_R16SI"; + case SG_PIXELFORMAT_R16F: return "SG_PIXELFORMAT_R16F"; + case SG_PIXELFORMAT_RG8: return "SG_PIXELFORMAT_RG8"; + case SG_PIXELFORMAT_RG8SN: return "SG_PIXELFORMAT_RG8SN"; + case SG_PIXELFORMAT_RG8UI: return "SG_PIXELFORMAT_RG8UI"; + case SG_PIXELFORMAT_RG8SI: return "SG_PIXELFORMAT_RG8SI"; + case SG_PIXELFORMAT_R32UI: return "SG_PIXELFORMAT_R32UI"; + case SG_PIXELFORMAT_R32SI: return "SG_PIXELFORMAT_R32SI"; + case SG_PIXELFORMAT_R32F: return "SG_PIXELFORMAT_R32F"; + case SG_PIXELFORMAT_RG16: return "SG_PIXELFORMAT_RG16"; + case SG_PIXELFORMAT_RG16SN: return "SG_PIXELFORMAT_RG16SN"; + case SG_PIXELFORMAT_RG16UI: return "SG_PIXELFORMAT_RG16UI"; + case SG_PIXELFORMAT_RG16SI: return "SG_PIXELFORMAT_RG16SI"; + case SG_PIXELFORMAT_RG16F: return "SG_PIXELFORMAT_RG16F"; + case SG_PIXELFORMAT_RGBA8: return "SG_PIXELFORMAT_RGBA8"; + case SG_PIXELFORMAT_SRGB8A8: return "SG_PIXELFORMAT_SRGB8A8"; + case SG_PIXELFORMAT_RGBA8SN: return "SG_PIXELFORMAT_RGBA8SN"; + case SG_PIXELFORMAT_RGBA8UI: return "SG_PIXELFORMAT_RGBA8UI"; + case SG_PIXELFORMAT_RGBA8SI: return "SG_PIXELFORMAT_RGBA8SI"; + case SG_PIXELFORMAT_BGRA8: return "SG_PIXELFORMAT_BGRA8"; + case SG_PIXELFORMAT_RGB10A2: return "SG_PIXELFORMAT_RGB10A2"; + case SG_PIXELFORMAT_RG11B10F: return "SG_PIXELFORMAT_RG11B10F"; + case SG_PIXELFORMAT_RG32UI: return "SG_PIXELFORMAT_RG32UI"; + case SG_PIXELFORMAT_RG32SI: return "SG_PIXELFORMAT_RG32SI"; + case SG_PIXELFORMAT_RG32F: return "SG_PIXELFORMAT_RG32F"; + case SG_PIXELFORMAT_RGBA16: return "SG_PIXELFORMAT_RGBA16"; + case SG_PIXELFORMAT_RGBA16SN: return "SG_PIXELFORMAT_RGBA16SN"; + case SG_PIXELFORMAT_RGBA16UI: return "SG_PIXELFORMAT_RGBA16UI"; + case SG_PIXELFORMAT_RGBA16SI: return "SG_PIXELFORMAT_RGBA16SI"; + case SG_PIXELFORMAT_RGBA16F: return "SG_PIXELFORMAT_RGBA16F"; + case SG_PIXELFORMAT_RGBA32UI: return "SG_PIXELFORMAT_RGBA32UI"; + case SG_PIXELFORMAT_RGBA32SI: return "SG_PIXELFORMAT_RGBA32SI"; + case SG_PIXELFORMAT_RGBA32F: return "SG_PIXELFORMAT_RGBA32F"; + case SG_PIXELFORMAT_DEPTH: return "SG_PIXELFORMAT_DEPTH"; + case SG_PIXELFORMAT_DEPTH_STENCIL: return "SG_PIXELFORMAT_DEPTH_STENCIL"; + case SG_PIXELFORMAT_BC1_RGBA: return "SG_PIXELFORMAT_BC1_RGBA"; + case SG_PIXELFORMAT_BC2_RGBA: return "SG_PIXELFORMAT_BC2_RGBA"; + case SG_PIXELFORMAT_BC3_RGBA: return "SG_PIXELFORMAT_BC3_RGBA"; + case SG_PIXELFORMAT_BC4_R: return "SG_PIXELFORMAT_BC4_R"; + case SG_PIXELFORMAT_BC4_RSN: return "SG_PIXELFORMAT_BC4_RSN"; + case SG_PIXELFORMAT_BC5_RG: return "SG_PIXELFORMAT_BC5_RG"; + case SG_PIXELFORMAT_BC5_RGSN: return "SG_PIXELFORMAT_BC5_RGSN"; + case SG_PIXELFORMAT_BC6H_RGBF: return "SG_PIXELFORMAT_BC6H_RGBF"; + case SG_PIXELFORMAT_BC6H_RGBUF: return "SG_PIXELFORMAT_BC6H_RGBUF"; + case SG_PIXELFORMAT_BC7_RGBA: return "SG_PIXELFORMAT_BC7_RGBA"; + case SG_PIXELFORMAT_PVRTC_RGB_2BPP: return "SG_PIXELFORMAT_PVRTC_RGB_2BPP"; + case SG_PIXELFORMAT_PVRTC_RGB_4BPP: return "SG_PIXELFORMAT_PVRTC_RGB_4BPP"; + case SG_PIXELFORMAT_PVRTC_RGBA_2BPP: return "SG_PIXELFORMAT_PVRTC_RGBA_2BPP"; + case SG_PIXELFORMAT_PVRTC_RGBA_4BPP: return "SG_PIXELFORMAT_PVRTC_RGBA_4BPP"; + case SG_PIXELFORMAT_ETC2_RGB8: return "SG_PIXELFORMAT_ETC2_RGB8"; + case SG_PIXELFORMAT_ETC2_RGB8A1: return "SG_PIXELFORMAT_ETC2_RGB8A1"; + case SG_PIXELFORMAT_ETC2_RGBA8: return "SG_PIXELFORMAT_ETC2_RGBA8"; + case SG_PIXELFORMAT_ETC2_RG11: return "SG_PIXELFORMAT_ETC2_RG11"; + case SG_PIXELFORMAT_ETC2_RG11SN: return "SG_PIXELFORMAT_ETC2_RG11SN"; + case SG_PIXELFORMAT_RGB9E5: return "SG_PIXELFORMAT_RGB9E5"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_filter_string(sg_filter f) { + switch (f) { + case SG_FILTER_NEAREST: return "SG_FILTER_NEAREST"; + case SG_FILTER_LINEAR: return "SG_FILTER_LINEAR"; + case SG_FILTER_NEAREST_MIPMAP_NEAREST: return "SG_FILTER_NEAREST_MIPMAP_NEAREST"; + case SG_FILTER_NEAREST_MIPMAP_LINEAR: return "SG_FILTER_NEAREST_MIPMAP_LINEAR"; + case SG_FILTER_LINEAR_MIPMAP_NEAREST: return "SG_FILTER_LINEAR_MIPMAP_NEAREST"; + case SG_FILTER_LINEAR_MIPMAP_LINEAR: return "SG_FILTER_LINEAR_MIPMAP_LINEAR"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_wrap_string(sg_wrap w) { + switch (w) { + case SG_WRAP_REPEAT: return "SG_WRAP_REPEAT"; + case SG_WRAP_CLAMP_TO_EDGE: return "SG_WRAP_CLAMP_TO_EDGE"; + case SG_WRAP_CLAMP_TO_BORDER: return "SG_WRAP_CLAMP_TO_BORDER"; + case SG_WRAP_MIRRORED_REPEAT: return "SG_WRAP_MIRRORED_REPEAT"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_bordercolor_string(sg_border_color bc) { + switch (bc) { + case SG_BORDERCOLOR_TRANSPARENT_BLACK: return "SG_BORDERCOLOR_TRANSPARENT_BLACK"; + case SG_BORDERCOLOR_OPAQUE_BLACK: return "SG_BORDERCOLOR_OPAQUE_BLACK"; + case SG_BORDERCOLOR_OPAQUE_WHITE: return "SG_BORDERCOLOR_OPAQUE_WHITE"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_uniformtype_string(sg_uniform_type t) { + switch (t) { + case SG_UNIFORMTYPE_FLOAT: return "SG_UNIFORMTYPE_FLOAT"; + case SG_UNIFORMTYPE_FLOAT2: return "SG_UNIFORMTYPE_FLOAT2"; + case SG_UNIFORMTYPE_FLOAT3: return "SG_UNIFORMTYPE_FLOAT3"; + case SG_UNIFORMTYPE_FLOAT4: return "SG_UNIFORMTYPE_FLOAT4"; + case SG_UNIFORMTYPE_INT: return "SG_UNIFORMTYPE_INT"; + case SG_UNIFORMTYPE_INT2: return "SG_UNIFORMTYPE_INT2"; + case SG_UNIFORMTYPE_INT3: return "SG_UNIFORMTYPE_INT3"; + case SG_UNIFORMTYPE_INT4: return "SG_UNIFORMTYPE_INT4"; + case SG_UNIFORMTYPE_MAT4: return "SG_UNIFORMTYPE_MAT4"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_vertexstep_string(sg_vertex_step s) { + switch (s) { + case SG_VERTEXSTEP_PER_VERTEX: return "SG_VERTEXSTEP_PER_VERTEX"; + case SG_VERTEXSTEP_PER_INSTANCE: return "SG_VERTEXSTEP_PER_INSTANCE"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_vertexformat_string(sg_vertex_format f) { + switch (f) { + case SG_VERTEXFORMAT_FLOAT: return "SG_VERTEXFORMAT_FLOAT"; + case SG_VERTEXFORMAT_FLOAT2: return "SG_VERTEXFORMAT_FLOAT2"; + case SG_VERTEXFORMAT_FLOAT3: return "SG_VERTEXFORMAT_FLOAT3"; + case SG_VERTEXFORMAT_FLOAT4: return "SG_VERTEXFORMAT_FLOAT4"; + case SG_VERTEXFORMAT_BYTE4: return "SG_VERTEXFORMAT_BYTE4"; + case SG_VERTEXFORMAT_BYTE4N: return "SG_VERTEXFORMAT_BYTE4N"; + case SG_VERTEXFORMAT_UBYTE4: return "SG_VERTEXFORMAT_UBYTE4"; + case SG_VERTEXFORMAT_UBYTE4N: return "SG_VERTEXFORMAT_UBYTE4N"; + case SG_VERTEXFORMAT_SHORT2: return "SG_VERTEXFORMAT_SHORT2"; + case SG_VERTEXFORMAT_SHORT2N: return "SG_VERTEXFORMAT_SHORT2N"; + case SG_VERTEXFORMAT_USHORT2N: return "SG_VERTEXFORMAT_USHORT2N"; + case SG_VERTEXFORMAT_SHORT4: return "SG_VERTEXFORMAT_SHORT4"; + case SG_VERTEXFORMAT_SHORT4N: return "SG_VERTEXFORMAT_SHORT4N"; + case SG_VERTEXFORMAT_USHORT4N: return "SG_VERTEXFORMAT_USHORT4N"; + case SG_VERTEXFORMAT_UINT10_N2: return "SG_VERTEXFORMAT_UINT10_N2"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_primitivetype_string(sg_primitive_type t) { + switch (t) { + case SG_PRIMITIVETYPE_POINTS: return "SG_PRIMITIVETYPE_POINTS"; + case SG_PRIMITIVETYPE_LINES: return "SG_PRIMITIVETYPE_LINES"; + case SG_PRIMITIVETYPE_LINE_STRIP: return "SG_PRIMITIVETYPE_LINE_STRIP"; + case SG_PRIMITIVETYPE_TRIANGLES: return "SG_PRIMITIVETYPE_TRIANGLES"; + case SG_PRIMITIVETYPE_TRIANGLE_STRIP: return "SG_PRIMITIVETYPE_TRIANGLE_STRIP"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_indextype_string(sg_index_type t) { + switch (t) { + case SG_INDEXTYPE_NONE: return "SG_INDEXTYPE_NONE"; + case SG_INDEXTYPE_UINT16: return "SG_INDEXTYPE_UINT16"; + case SG_INDEXTYPE_UINT32: return "SG_INDEXTYPE_UINT32"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_stencilop_string(sg_stencil_op op) { + switch (op) { + case SG_STENCILOP_KEEP: return "SG_STENCILOP_KEEP"; + case SG_STENCILOP_ZERO: return "SG_STENCILOP_ZERO"; + case SG_STENCILOP_REPLACE: return "SG_STENCILOP_REPLACE"; + case SG_STENCILOP_INCR_CLAMP: return "SG_STENCILOP_INCR_CLAMP"; + case SG_STENCILOP_DECR_CLAMP: return "SG_STENCILOP_DECR_CLAMP"; + case SG_STENCILOP_INVERT: return "SG_STENCILOP_INVERT"; + case SG_STENCILOP_INCR_WRAP: return "SG_STENCILOP_INCR_WRAP"; + case SG_STENCILOP_DECR_WRAP: return "SG_STENCILOP_DECR_WRAP"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_comparefunc_string(sg_compare_func f) { + switch (f) { + case SG_COMPAREFUNC_NEVER: return "SG_COMPAREFUNC_NEVER"; + case SG_COMPAREFUNC_LESS: return "SG_COMPAREFUNC_LESS"; + case SG_COMPAREFUNC_EQUAL: return "SG_COMPAREFUNC_EQUAL"; + case SG_COMPAREFUNC_LESS_EQUAL: return "SG_COMPAREFUNC_LESS_EQUAL"; + case SG_COMPAREFUNC_GREATER: return "SG_COMPAREFUNC_GREATER"; + case SG_COMPAREFUNC_NOT_EQUAL: return "SG_COMPAREFUNC_NOT_EQUAL"; + case SG_COMPAREFUNC_GREATER_EQUAL: return "SG_COMPAREFUNC_GREATER_EQUAL"; + case SG_COMPAREFUNC_ALWAYS: return "SG_COMPAREFUNC_ALWAYS"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_blendfactor_string(sg_blend_factor f) { + switch (f) { + case SG_BLENDFACTOR_ZERO: return "SG_BLENDFACTOR_ZERO"; + case SG_BLENDFACTOR_ONE: return "SG_BLENDFACTOR_ONE"; + case SG_BLENDFACTOR_SRC_COLOR: return "SG_BLENDFACTOR_SRC_COLOR"; + case SG_BLENDFACTOR_ONE_MINUS_SRC_COLOR: return "SG_BLENDFACTOR_ONE_MINUS_SRC_COLOR"; + case SG_BLENDFACTOR_SRC_ALPHA: return "SG_BLENDFACTOR_SRC_ALPHA"; + case SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA: return "SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA"; + case SG_BLENDFACTOR_DST_COLOR: return "SG_BLENDFACTOR_DST_COLOR"; + case SG_BLENDFACTOR_ONE_MINUS_DST_COLOR: return "SG_BLENDFACTOR_ONE_MINUS_DST_COLOR"; + case SG_BLENDFACTOR_DST_ALPHA: return "SG_BLENDFACTOR_DST_ALPHA"; + case SG_BLENDFACTOR_ONE_MINUS_DST_ALPHA: return "SG_BLENDFACTOR_ONE_MINUS_DST_ALPHA"; + case SG_BLENDFACTOR_SRC_ALPHA_SATURATED: return "SG_BLENDFACTOR_SRC_ALPHA_SATURATED"; + case SG_BLENDFACTOR_BLEND_COLOR: return "SG_BLENDFACTOR_BLEND_COLOR"; + case SG_BLENDFACTOR_ONE_MINUS_BLEND_COLOR: return "SG_BLENDFACTOR_ONE_MINUS_BLEND_COLOR"; + case SG_BLENDFACTOR_BLEND_ALPHA: return "SG_BLENDFACTOR_BLEND_ALPHA"; + case SG_BLENDFACTOR_ONE_MINUS_BLEND_ALPHA: return "SG_BLENDFACTOR_ONE_MINUS_BLEND_ALPHA"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_blendop_string(sg_blend_op op) { + switch (op) { + case SG_BLENDOP_ADD: return "SG_BLENDOP_ADD"; + case SG_BLENDOP_SUBTRACT: return "SG_BLENDOP_SUBTRACT"; + case SG_BLENDOP_REVERSE_SUBTRACT: return "SG_BLENDOP_REVERSE_SUBTRACT"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_colormask_string(sg_color_mask m) { + static const char* str[] = { + "NONE", + "R", + "G", + "RG", + "B", + "RB", + "GB", + "RGB", + "A", + "RA", + "GA", + "RGA", + "BA", + "RBA", + "GBA", + "RGBA", + }; + return str[m & 0xF]; +} + +_SOKOL_PRIVATE const char* _sg_imgui_cullmode_string(sg_cull_mode cm) { + switch (cm) { + case SG_CULLMODE_NONE: return "SG_CULLMODE_NONE"; + case SG_CULLMODE_FRONT: return "SG_CULLMODE_FRONT"; + case SG_CULLMODE_BACK: return "SG_CULLMODE_BACK"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_facewinding_string(sg_face_winding fw) { + switch (fw) { + case SG_FACEWINDING_CCW: return "SG_FACEWINDING_CCW"; + case SG_FACEWINDING_CW: return "SG_FACEWINDING_CW"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_shaderstage_string(sg_shader_stage stage) { + switch (stage) { + case SG_SHADERSTAGE_VS: return "SG_SHADERSTAGE_VS"; + case SG_SHADERSTAGE_FS: return "SG_SHADERSTAGE_FS"; + default: return "???"; + } +} + +_SOKOL_PRIVATE const char* _sg_imgui_bool_string(bool b) { + return b ? "true" : "false"; +} + +_SOKOL_PRIVATE const char* _sg_imgui_color_string(sg_imgui_str_t* dst_str, sg_color color) { + _sg_imgui_snprintf(dst_str, "%.3f %.3f %.3f %.3f", color.r, color.g, color.b, color.a); + return dst_str->buf; +} + +_SOKOL_PRIVATE sg_imgui_str_t _sg_imgui_res_id_string(uint32_t res_id, const char* label) { + SOKOL_ASSERT(label); + sg_imgui_str_t res; + if (label[0]) { + _sg_imgui_snprintf(&res, "'%s'", label); + } + else { + _sg_imgui_snprintf(&res, "0x%08X", res_id); + } + return res; +} + +_SOKOL_PRIVATE sg_imgui_str_t _sg_imgui_buffer_id_string(sg_imgui_t* ctx, sg_buffer buf_id) { + if (buf_id.id != SG_INVALID_ID) { + const sg_imgui_buffer_t* buf_ui = &ctx->buffers.slots[_sg_imgui_slot_index(buf_id.id)]; + return _sg_imgui_res_id_string(buf_id.id, buf_ui->label.buf); + } + else { + return _sg_imgui_make_str(""); + } +} + +_SOKOL_PRIVATE sg_imgui_str_t _sg_imgui_image_id_string(sg_imgui_t* ctx, sg_image img_id) { + if (img_id.id != SG_INVALID_ID) { + const sg_imgui_image_t* img_ui = &ctx->images.slots[_sg_imgui_slot_index(img_id.id)]; + return _sg_imgui_res_id_string(img_id.id, img_ui->label.buf); + } + else { + return _sg_imgui_make_str(""); + } +} + +_SOKOL_PRIVATE sg_imgui_str_t _sg_imgui_shader_id_string(sg_imgui_t* ctx, sg_shader shd_id) { + if (shd_id.id != SG_INVALID_ID) { + const sg_imgui_shader_t* shd_ui = &ctx->shaders.slots[_sg_imgui_slot_index(shd_id.id)]; + return _sg_imgui_res_id_string(shd_id.id, shd_ui->label.buf); + } + else { + return _sg_imgui_make_str(""); + } +} + +_SOKOL_PRIVATE sg_imgui_str_t _sg_imgui_pipeline_id_string(sg_imgui_t* ctx, sg_pipeline pip_id) { + if (pip_id.id != SG_INVALID_ID) { + const sg_imgui_pipeline_t* pip_ui = &ctx->pipelines.slots[_sg_imgui_slot_index(pip_id.id)]; + return _sg_imgui_res_id_string(pip_id.id, pip_ui->label.buf); + } + else { + return _sg_imgui_make_str(""); + } +} + +_SOKOL_PRIVATE sg_imgui_str_t _sg_imgui_pass_id_string(sg_imgui_t* ctx, sg_pass pass_id) { + if (pass_id.id != SG_INVALID_ID) { + const sg_imgui_pass_t* pass_ui = &ctx->passes.slots[_sg_imgui_slot_index(pass_id.id)]; + return _sg_imgui_res_id_string(pass_id.id, pass_ui->label.buf); + } + else { + return _sg_imgui_make_str(""); + } +} + +/*--- RESOURCE HELPERS -------------------------------------------------------*/ +_SOKOL_PRIVATE void _sg_imgui_buffer_created(sg_imgui_t* ctx, sg_buffer res_id, int slot_index, const sg_buffer_desc* desc) { + SOKOL_ASSERT((slot_index > 0) && (slot_index < ctx->buffers.num_slots)); + sg_imgui_buffer_t* buf = &ctx->buffers.slots[slot_index]; + buf->res_id = res_id; + buf->desc = *desc; + buf->label = _sg_imgui_make_str(desc->label); +} + +_SOKOL_PRIVATE void _sg_imgui_buffer_destroyed(sg_imgui_t* ctx, int slot_index) { + SOKOL_ASSERT((slot_index > 0) && (slot_index < ctx->buffers.num_slots)); + sg_imgui_buffer_t* buf = &ctx->buffers.slots[slot_index]; + buf->res_id.id = SG_INVALID_ID; +} + +_SOKOL_PRIVATE void _sg_imgui_image_created(sg_imgui_t* ctx, sg_image res_id, int slot_index, const sg_image_desc* desc) { + SOKOL_ASSERT((slot_index > 0) && (slot_index < ctx->images.num_slots)); + sg_imgui_image_t* img = &ctx->images.slots[slot_index]; + img->res_id = res_id; + img->desc = *desc; + img->ui_scale = 1.0f; + img->label = _sg_imgui_make_str(desc->label); +} + +_SOKOL_PRIVATE void _sg_imgui_image_destroyed(sg_imgui_t* ctx, int slot_index) { + SOKOL_ASSERT((slot_index > 0) && (slot_index < ctx->images.num_slots)); + sg_imgui_image_t* img = &ctx->images.slots[slot_index]; + img->res_id.id = SG_INVALID_ID; +} + +_SOKOL_PRIVATE void _sg_imgui_shader_created(sg_imgui_t* ctx, sg_shader res_id, int slot_index, const sg_shader_desc* desc) { + SOKOL_ASSERT((slot_index > 0) && (slot_index < ctx->shaders.num_slots)); + sg_imgui_shader_t* shd = &ctx->shaders.slots[slot_index]; + shd->res_id = res_id; + shd->desc = *desc; + shd->label = _sg_imgui_make_str(desc->label); + if (shd->desc.vs.entry) { + shd->vs_entry = _sg_imgui_make_str(shd->desc.vs.entry); + shd->desc.vs.entry = shd->vs_entry.buf; + } + if (shd->desc.fs.entry) { + shd->fs_entry = _sg_imgui_make_str(shd->desc.fs.entry); + shd->desc.fs.entry = shd->fs_entry.buf; + } + if (shd->desc.vs.d3d11_target) { + shd->vs_d3d11_target = _sg_imgui_make_str(shd->desc.vs.d3d11_target); + shd->desc.fs.d3d11_target = shd->vs_d3d11_target.buf; + } + if (shd->desc.fs.d3d11_target) { + shd->fs_d3d11_target = _sg_imgui_make_str(shd->desc.fs.d3d11_target); + shd->desc.fs.d3d11_target = shd->fs_d3d11_target.buf; + } + for (int i = 0; i < SG_MAX_SHADERSTAGE_UBS; i++) { + for (int j = 0; j < SG_MAX_UB_MEMBERS; j++) { + sg_shader_uniform_desc* ud = &shd->desc.vs.uniform_blocks[i].uniforms[j]; + if (ud->name) { + shd->vs_uniform_name[i][j] = _sg_imgui_make_str(ud->name); + ud->name = shd->vs_uniform_name[i][j].buf; + } + } + } + for (int i = 0; i < SG_MAX_SHADERSTAGE_UBS; i++) { + for (int j = 0; j < SG_MAX_UB_MEMBERS; j++) { + sg_shader_uniform_desc* ud = &shd->desc.fs.uniform_blocks[i].uniforms[j]; + if (ud->name) { + shd->fs_uniform_name[i][j] = _sg_imgui_make_str(ud->name); + ud->name = shd->fs_uniform_name[i][j].buf; + } + } + } + for (int i = 0; i < SG_MAX_SHADERSTAGE_IMAGES; i++) { + if (shd->desc.vs.images[i].name) { + shd->vs_image_name[i] = _sg_imgui_make_str(shd->desc.vs.images[i].name); + shd->desc.vs.images[i].name = shd->vs_image_name[i].buf; + } + } + for (int i = 0; i < SG_MAX_SHADERSTAGE_IMAGES; i++) { + if (shd->desc.fs.images[i].name) { + shd->fs_image_name[i] = _sg_imgui_make_str(shd->desc.fs.images[i].name); + shd->desc.fs.images[i].name = shd->fs_image_name[i].buf; + } + } + if (shd->desc.vs.source) { + shd->desc.vs.source = _sg_imgui_str_dup(&ctx->desc.allocator, shd->desc.vs.source); + } + if (shd->desc.vs.bytecode.ptr) { + shd->desc.vs.bytecode.ptr = _sg_imgui_bin_dup(&ctx->desc.allocator, shd->desc.vs.bytecode.ptr, shd->desc.vs.bytecode.size); + } + if (shd->desc.fs.source) { + shd->desc.fs.source = _sg_imgui_str_dup(&ctx->desc.allocator, shd->desc.fs.source); + } + if (shd->desc.fs.bytecode.ptr) { + shd->desc.fs.bytecode.ptr = _sg_imgui_bin_dup(&ctx->desc.allocator, shd->desc.fs.bytecode.ptr, shd->desc.fs.bytecode.size); + } + for (int i = 0; i < SG_MAX_VERTEX_ATTRIBUTES; i++) { + sg_shader_attr_desc* ad = &shd->desc.attrs[i]; + if (ad->name) { + shd->attr_name[i] = _sg_imgui_make_str(ad->name); + ad->name = shd->attr_name[i].buf; + } + if (ad->sem_name) { + shd->attr_sem_name[i] = _sg_imgui_make_str(ad->sem_name); + ad->sem_name = shd->attr_sem_name[i].buf; + } + } +} + +_SOKOL_PRIVATE void _sg_imgui_shader_destroyed(sg_imgui_t* ctx, int slot_index) { + SOKOL_ASSERT((slot_index > 0) && (slot_index < ctx->shaders.num_slots)); + sg_imgui_shader_t* shd = &ctx->shaders.slots[slot_index]; + shd->res_id.id = SG_INVALID_ID; + if (shd->desc.vs.source) { + _sg_imgui_free(&ctx->desc.allocator, (void*)shd->desc.vs.source); + shd->desc.vs.source = 0; + } + if (shd->desc.vs.bytecode.ptr) { + _sg_imgui_free(&ctx->desc.allocator, (void*)shd->desc.vs.bytecode.ptr); + shd->desc.vs.bytecode.ptr = 0; + } + if (shd->desc.fs.source) { + _sg_imgui_free(&ctx->desc.allocator, (void*)shd->desc.fs.source); + shd->desc.fs.source = 0; + } + if (shd->desc.fs.bytecode.ptr) { + _sg_imgui_free(&ctx->desc.allocator, (void*)shd->desc.fs.bytecode.ptr); + shd->desc.fs.bytecode.ptr = 0; + } +} + +_SOKOL_PRIVATE void _sg_imgui_pipeline_created(sg_imgui_t* ctx, sg_pipeline res_id, int slot_index, const sg_pipeline_desc* desc) { + SOKOL_ASSERT((slot_index > 0) && (slot_index < ctx->pipelines.num_slots)); + sg_imgui_pipeline_t* pip = &ctx->pipelines.slots[slot_index]; + pip->res_id = res_id; + pip->label = _sg_imgui_make_str(desc->label); + pip->desc = *desc; + +} + +_SOKOL_PRIVATE void _sg_imgui_pipeline_destroyed(sg_imgui_t* ctx, int slot_index) { + SOKOL_ASSERT((slot_index > 0) && (slot_index < ctx->pipelines.num_slots)); + sg_imgui_pipeline_t* pip = &ctx->pipelines.slots[slot_index]; + pip->res_id.id = SG_INVALID_ID; +} + +_SOKOL_PRIVATE void _sg_imgui_pass_created(sg_imgui_t* ctx, sg_pass res_id, int slot_index, const sg_pass_desc* desc) { + SOKOL_ASSERT((slot_index > 0) && (slot_index < ctx->passes.num_slots)); + sg_imgui_pass_t* pass = &ctx->passes.slots[slot_index]; + pass->res_id = res_id; + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + pass->color_image_scale[i] = 0.25f; + } + pass->ds_image_scale = 0.25f; + pass->label = _sg_imgui_make_str(desc->label); + pass->desc = *desc; +} + +_SOKOL_PRIVATE void _sg_imgui_pass_destroyed(sg_imgui_t* ctx, int slot_index) { + SOKOL_ASSERT((slot_index > 0) && (slot_index < ctx->passes.num_slots)); + sg_imgui_pass_t* pass = &ctx->passes.slots[slot_index]; + pass->res_id.id = SG_INVALID_ID; +} + +/*--- COMMAND CAPTURING ------------------------------------------------------*/ +_SOKOL_PRIVATE void _sg_imgui_capture_init(sg_imgui_t* ctx) { + const size_t ubuf_initial_size = 256 * 1024; + for (int i = 0; i < 2; i++) { + sg_imgui_capture_bucket_t* bucket = &ctx->capture.bucket[i]; + bucket->ubuf_size = ubuf_initial_size; + bucket->ubuf = (uint8_t*) _sg_imgui_malloc(&ctx->desc.allocator, bucket->ubuf_size); + } +} + +_SOKOL_PRIVATE void _sg_imgui_capture_discard(sg_imgui_t* ctx) { + for (int i = 0; i < 2; i++) { + sg_imgui_capture_bucket_t* bucket = &ctx->capture.bucket[i]; + SOKOL_ASSERT(bucket->ubuf); + _sg_imgui_free(&ctx->desc.allocator, bucket->ubuf); + bucket->ubuf = 0; + } +} + +_SOKOL_PRIVATE sg_imgui_capture_bucket_t* _sg_imgui_capture_get_write_bucket(sg_imgui_t* ctx) { + return &ctx->capture.bucket[ctx->capture.bucket_index & 1]; +} + +_SOKOL_PRIVATE sg_imgui_capture_bucket_t* _sg_imgui_capture_get_read_bucket(sg_imgui_t* ctx) { + return &ctx->capture.bucket[(ctx->capture.bucket_index + 1) & 1]; +} + +_SOKOL_PRIVATE void _sg_imgui_capture_next_frame(sg_imgui_t* ctx) { + ctx->capture.bucket_index = (ctx->capture.bucket_index + 1) & 1; + sg_imgui_capture_bucket_t* bucket = &ctx->capture.bucket[ctx->capture.bucket_index]; + bucket->num_items = 0; + bucket->ubuf_pos = 0; +} + +_SOKOL_PRIVATE void _sg_imgui_capture_grow_ubuf(sg_imgui_t* ctx, size_t required_size) { + sg_imgui_capture_bucket_t* bucket = _sg_imgui_capture_get_write_bucket(ctx); + SOKOL_ASSERT(required_size > bucket->ubuf_size); + size_t old_size = bucket->ubuf_size; + size_t new_size = required_size + (required_size>>1); /* allocate a bit ahead */ + bucket->ubuf_size = new_size; + bucket->ubuf = (uint8_t*) _sg_imgui_realloc(&ctx->desc.allocator, bucket->ubuf, old_size, new_size); +} + +_SOKOL_PRIVATE sg_imgui_capture_item_t* _sg_imgui_capture_next_write_item(sg_imgui_t* ctx) { + sg_imgui_capture_bucket_t* bucket = _sg_imgui_capture_get_write_bucket(ctx); + if (bucket->num_items < SG_IMGUI_MAX_FRAMECAPTURE_ITEMS) { + sg_imgui_capture_item_t* item = &bucket->items[bucket->num_items++]; + return item; + } + else { + return 0; + } +} + +_SOKOL_PRIVATE int _sg_imgui_capture_num_read_items(sg_imgui_t* ctx) { + sg_imgui_capture_bucket_t* bucket = _sg_imgui_capture_get_read_bucket(ctx); + return bucket->num_items; +} + +_SOKOL_PRIVATE sg_imgui_capture_item_t* _sg_imgui_capture_read_item_at(sg_imgui_t* ctx, int index) { + sg_imgui_capture_bucket_t* bucket = _sg_imgui_capture_get_read_bucket(ctx); + SOKOL_ASSERT(index < bucket->num_items); + return &bucket->items[index]; +} + +_SOKOL_PRIVATE size_t _sg_imgui_capture_uniforms(sg_imgui_t* ctx, const sg_range* data) { + sg_imgui_capture_bucket_t* bucket = _sg_imgui_capture_get_write_bucket(ctx); + const size_t required_size = bucket->ubuf_pos + data->size; + if (required_size > bucket->ubuf_size) { + _sg_imgui_capture_grow_ubuf(ctx, required_size); + } + SOKOL_ASSERT(required_size <= bucket->ubuf_size); + memcpy(bucket->ubuf + bucket->ubuf_pos, data->ptr, data->size); + const size_t pos = bucket->ubuf_pos; + bucket->ubuf_pos += data->size; + SOKOL_ASSERT(bucket->ubuf_pos <= bucket->ubuf_size); + return pos; +} + +_SOKOL_PRIVATE sg_imgui_str_t _sg_imgui_capture_item_string(sg_imgui_t* ctx, int index, const sg_imgui_capture_item_t* item) { + sg_imgui_str_t str = _sg_imgui_make_str(0); + switch (item->cmd) { + case SG_IMGUI_CMD_RESET_STATE_CACHE: + _sg_imgui_snprintf(&str, "%d: sg_reset_state_cache()", index); + break; + + case SG_IMGUI_CMD_MAKE_BUFFER: + { + sg_imgui_str_t res_id = _sg_imgui_buffer_id_string(ctx, item->args.make_buffer.result); + _sg_imgui_snprintf(&str, "%d: sg_make_buffer(desc=..) => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_MAKE_IMAGE: + { + sg_imgui_str_t res_id = _sg_imgui_image_id_string(ctx, item->args.make_image.result); + _sg_imgui_snprintf(&str, "%d: sg_make_image(desc=..) => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_MAKE_SHADER: + { + sg_imgui_str_t res_id = _sg_imgui_shader_id_string(ctx, item->args.make_shader.result); + _sg_imgui_snprintf(&str, "%d: sg_make_shader(desc=..) => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_MAKE_PIPELINE: + { + sg_imgui_str_t res_id = _sg_imgui_pipeline_id_string(ctx, item->args.make_pipeline.result); + _sg_imgui_snprintf(&str, "%d: sg_make_pipeline(desc=..) => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_MAKE_PASS: + { + sg_imgui_str_t res_id = _sg_imgui_pass_id_string(ctx, item->args.make_pass.result); + _sg_imgui_snprintf(&str, "%d: sg_make_pass(desc=..) => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_DESTROY_BUFFER: + { + sg_imgui_str_t res_id = _sg_imgui_buffer_id_string(ctx, item->args.destroy_buffer.buffer); + _sg_imgui_snprintf(&str, "%d: sg_destroy_buffer(buf=%s)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_DESTROY_IMAGE: + { + sg_imgui_str_t res_id = _sg_imgui_image_id_string(ctx, item->args.destroy_image.image); + _sg_imgui_snprintf(&str, "%d: sg_destroy_image(img=%s)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_DESTROY_SHADER: + { + sg_imgui_str_t res_id = _sg_imgui_shader_id_string(ctx, item->args.destroy_shader.shader); + _sg_imgui_snprintf(&str, "%d: sg_destroy_shader(shd=%s)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_DESTROY_PIPELINE: + { + sg_imgui_str_t res_id = _sg_imgui_pipeline_id_string(ctx, item->args.destroy_pipeline.pipeline); + _sg_imgui_snprintf(&str, "%d: sg_destroy_pipeline(pip=%s)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_DESTROY_PASS: + { + sg_imgui_str_t res_id = _sg_imgui_pass_id_string(ctx, item->args.destroy_pass.pass); + _sg_imgui_snprintf(&str, "%d: sg_destroy_pass(pass=%s)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_UPDATE_BUFFER: + { + sg_imgui_str_t res_id = _sg_imgui_buffer_id_string(ctx, item->args.update_buffer.buffer); + _sg_imgui_snprintf(&str, "%d: sg_update_buffer(buf=%s, data.size=%d)", + index, res_id.buf, + item->args.update_buffer.data_size); + } + break; + + case SG_IMGUI_CMD_UPDATE_IMAGE: + { + sg_imgui_str_t res_id = _sg_imgui_image_id_string(ctx, item->args.update_image.image); + _sg_imgui_snprintf(&str, "%d: sg_update_image(img=%s, data=..)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_APPEND_BUFFER: + { + sg_imgui_str_t res_id = _sg_imgui_buffer_id_string(ctx, item->args.append_buffer.buffer); + _sg_imgui_snprintf(&str, "%d: sg_append_buffer(buf=%s, data.size=%d) => %d", + index, res_id.buf, + item->args.append_buffer.data_size, + item->args.append_buffer.result); + } + break; + + case SG_IMGUI_CMD_BEGIN_DEFAULT_PASS: + _sg_imgui_snprintf(&str, "%d: sg_begin_default_pass(pass_action=.., width=%d, height=%d)", + index, + item->args.begin_default_pass.width, + item->args.begin_default_pass.height); + break; + + case SG_IMGUI_CMD_BEGIN_PASS: + { + sg_imgui_str_t res_id = _sg_imgui_pass_id_string(ctx, item->args.begin_pass.pass); + _sg_imgui_snprintf(&str, "%d: sg_begin_pass(pass=%s, pass_action=..)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_APPLY_VIEWPORT: + _sg_imgui_snprintf(&str, "%d: sg_apply_viewport(x=%d, y=%d, width=%d, height=%d, origin_top_left=%s)", + index, + item->args.apply_viewport.x, + item->args.apply_viewport.y, + item->args.apply_viewport.width, + item->args.apply_viewport.height, + _sg_imgui_bool_string(item->args.apply_viewport.origin_top_left)); + break; + + case SG_IMGUI_CMD_APPLY_SCISSOR_RECT: + _sg_imgui_snprintf(&str, "%d: sg_apply_scissor_rect(x=%d, y=%d, width=%d, height=%d, origin_top_left=%s)", + index, + item->args.apply_scissor_rect.x, + item->args.apply_scissor_rect.y, + item->args.apply_scissor_rect.width, + item->args.apply_scissor_rect.height, + _sg_imgui_bool_string(item->args.apply_scissor_rect.origin_top_left)); + break; + + case SG_IMGUI_CMD_APPLY_PIPELINE: + { + sg_imgui_str_t res_id = _sg_imgui_pipeline_id_string(ctx, item->args.apply_pipeline.pipeline); + _sg_imgui_snprintf(&str, "%d: sg_apply_pipeline(pip=%s)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_APPLY_BINDINGS: + _sg_imgui_snprintf(&str, "%d: sg_apply_bindings(bindings=..)", index); + break; + + case SG_IMGUI_CMD_APPLY_UNIFORMS: + _sg_imgui_snprintf(&str, "%d: sg_apply_uniforms(stage=%s, ub_index=%d, data.size=%d)", + index, + _sg_imgui_shaderstage_string(item->args.apply_uniforms.stage), + item->args.apply_uniforms.ub_index, + item->args.apply_uniforms.data_size); + break; + + case SG_IMGUI_CMD_DRAW: + _sg_imgui_snprintf(&str, "%d: sg_draw(base_element=%d, num_elements=%d, num_instances=%d)", + index, + item->args.draw.base_element, + item->args.draw.num_elements, + item->args.draw.num_instances); + break; + + case SG_IMGUI_CMD_END_PASS: + _sg_imgui_snprintf(&str, "%d: sg_end_pass()", index); + break; + + case SG_IMGUI_CMD_COMMIT: + _sg_imgui_snprintf(&str, "%d: sg_commit()", index); + break; + + case SG_IMGUI_CMD_ALLOC_BUFFER: + { + sg_imgui_str_t res_id = _sg_imgui_buffer_id_string(ctx, item->args.alloc_buffer.result); + _sg_imgui_snprintf(&str, "%d: sg_alloc_buffer() => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_ALLOC_IMAGE: + { + sg_imgui_str_t res_id = _sg_imgui_image_id_string(ctx, item->args.alloc_image.result); + _sg_imgui_snprintf(&str, "%d: sg_alloc_image() => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_ALLOC_SHADER: + { + sg_imgui_str_t res_id = _sg_imgui_shader_id_string(ctx, item->args.alloc_shader.result); + _sg_imgui_snprintf(&str, "%d: sg_alloc_shader() => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_ALLOC_PIPELINE: + { + sg_imgui_str_t res_id = _sg_imgui_pipeline_id_string(ctx, item->args.alloc_pipeline.result); + _sg_imgui_snprintf(&str, "%d: sg_alloc_pipeline() => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_ALLOC_PASS: + { + sg_imgui_str_t res_id = _sg_imgui_pass_id_string(ctx, item->args.alloc_pass.result); + _sg_imgui_snprintf(&str, "%d: sg_alloc_pass() => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_DEALLOC_BUFFER: + { + sg_imgui_str_t res_id = _sg_imgui_buffer_id_string(ctx, item->args.dealloc_buffer.buffer); + _sg_imgui_snprintf(&str, "%d: sg_dealloc_buffer() => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_DEALLOC_IMAGE: + { + sg_imgui_str_t res_id = _sg_imgui_image_id_string(ctx, item->args.dealloc_image.image); + _sg_imgui_snprintf(&str, "%d: sg_dealloc_image() => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_DEALLOC_SHADER: + { + sg_imgui_str_t res_id = _sg_imgui_shader_id_string(ctx, item->args.dealloc_shader.shader); + _sg_imgui_snprintf(&str, "%d: sg_dealloc_shader() => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_DEALLOC_PIPELINE: + { + sg_imgui_str_t res_id = _sg_imgui_pipeline_id_string(ctx, item->args.dealloc_pipeline.pipeline); + _sg_imgui_snprintf(&str, "%d: sg_dealloc_pipeline() => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_DEALLOC_PASS: + { + sg_imgui_str_t res_id = _sg_imgui_pass_id_string(ctx, item->args.dealloc_pass.pass); + _sg_imgui_snprintf(&str, "%d: sg_dealloc_pass() => %s", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_INIT_BUFFER: + { + sg_imgui_str_t res_id = _sg_imgui_buffer_id_string(ctx, item->args.init_buffer.buffer); + _sg_imgui_snprintf(&str, "%d: sg_init_buffer(buf=%s, desc=..)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_INIT_IMAGE: + { + sg_imgui_str_t res_id = _sg_imgui_image_id_string(ctx, item->args.init_image.image); + _sg_imgui_snprintf(&str, "%d: sg_init_image(img=%s, desc=..)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_INIT_SHADER: + { + sg_imgui_str_t res_id = _sg_imgui_shader_id_string(ctx, item->args.init_shader.shader); + _sg_imgui_snprintf(&str, "%d: sg_init_shader(shd=%s, desc=..)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_INIT_PIPELINE: + { + sg_imgui_str_t res_id = _sg_imgui_pipeline_id_string(ctx, item->args.init_pipeline.pipeline); + _sg_imgui_snprintf(&str, "%d: sg_init_pipeline(pip=%s, desc=..)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_INIT_PASS: + { + sg_imgui_str_t res_id = _sg_imgui_pass_id_string(ctx, item->args.init_pass.pass); + _sg_imgui_snprintf(&str, "%d: sg_init_pass(pass=%s, desc=..)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_UNINIT_BUFFER: + { + sg_imgui_str_t res_id = _sg_imgui_buffer_id_string(ctx, item->args.uninit_buffer.buffer); + _sg_imgui_snprintf(&str, "%d: sg_uninit_buffer(buf=%s, desc=..)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_UNINIT_IMAGE: + { + sg_imgui_str_t res_id = _sg_imgui_image_id_string(ctx, item->args.uninit_image.image); + _sg_imgui_snprintf(&str, "%d: sg_uninit_image(img=%s, desc=..)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_UNINIT_SHADER: + { + sg_imgui_str_t res_id = _sg_imgui_shader_id_string(ctx, item->args.uninit_shader.shader); + _sg_imgui_snprintf(&str, "%d: sg_uninit_shader(shd=%s, desc=..)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_UNINIT_PIPELINE: + { + sg_imgui_str_t res_id = _sg_imgui_pipeline_id_string(ctx, item->args.uninit_pipeline.pipeline); + _sg_imgui_snprintf(&str, "%d: sg_uninit_pipeline(pip=%s, desc=..)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_UNINIT_PASS: + { + sg_imgui_str_t res_id = _sg_imgui_pass_id_string(ctx, item->args.uninit_pass.pass); + _sg_imgui_snprintf(&str, "%d: sg_uninit_pass(pass=%s, desc=..)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_FAIL_BUFFER: + { + sg_imgui_str_t res_id = _sg_imgui_buffer_id_string(ctx, item->args.fail_buffer.buffer); + _sg_imgui_snprintf(&str, "%d: sg_fail_buffer(buf=%s)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_FAIL_IMAGE: + { + sg_imgui_str_t res_id = _sg_imgui_image_id_string(ctx, item->args.fail_image.image); + _sg_imgui_snprintf(&str, "%d: sg_fail_image(img=%s)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_FAIL_SHADER: + { + sg_imgui_str_t res_id = _sg_imgui_shader_id_string(ctx, item->args.fail_shader.shader); + _sg_imgui_snprintf(&str, "%d: sg_fail_shader(shd=%s)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_FAIL_PIPELINE: + { + sg_imgui_str_t res_id = _sg_imgui_pipeline_id_string(ctx, item->args.fail_pipeline.pipeline); + _sg_imgui_snprintf(&str, "%d: sg_fail_pipeline(shd=%s)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_FAIL_PASS: + { + sg_imgui_str_t res_id = _sg_imgui_pass_id_string(ctx, item->args.fail_pass.pass); + _sg_imgui_snprintf(&str, "%d: sg_fail_pass(pass=%s)", index, res_id.buf); + } + break; + + case SG_IMGUI_CMD_PUSH_DEBUG_GROUP: + _sg_imgui_snprintf(&str, "%d: sg_push_debug_group(name=%s)", index, + item->args.push_debug_group.name.buf); + break; + + case SG_IMGUI_CMD_POP_DEBUG_GROUP: + _sg_imgui_snprintf(&str, "%d: sg_pop_debug_group()", index); + break; + + case SG_IMGUI_CMD_ERR_BUFFER_POOL_EXHAUSTED: + _sg_imgui_snprintf(&str, "%d: sg_err_buffer_pool_exhausted()", index); + break; + + case SG_IMGUI_CMD_ERR_IMAGE_POOL_EXHAUSTED: + _sg_imgui_snprintf(&str, "%d: sg_err_image_pool_exhausted()", index); + break; + + case SG_IMGUI_CMD_ERR_SHADER_POOL_EXHAUSTED: + _sg_imgui_snprintf(&str, "%d: sg_err_shader_pool_exhausted()", index); + break; + + case SG_IMGUI_CMD_ERR_PIPELINE_POOL_EXHAUSTED: + _sg_imgui_snprintf(&str, "%d: sg_err_pipeline_pool_exhausted()", index); + break; + + case SG_IMGUI_CMD_ERR_PASS_POOL_EXHAUSTED: + _sg_imgui_snprintf(&str, "%d: sg_err_pass_pool_exhausted()", index); + break; + + case SG_IMGUI_CMD_ERR_CONTEXT_MISMATCH: + _sg_imgui_snprintf(&str, "%d: sg_err_context_mismatch()", index); + break; + + case SG_IMGUI_CMD_ERR_PASS_INVALID: + _sg_imgui_snprintf(&str, "%d: sg_err_pass_invalid()", index); + break; + + case SG_IMGUI_CMD_ERR_DRAW_INVALID: + _sg_imgui_snprintf(&str, "%d: sg_err_draw_invalid()", index); + break; + + case SG_IMGUI_CMD_ERR_BINDINGS_INVALID: + _sg_imgui_snprintf(&str, "%d: sg_err_bindings_invalid()", index); + break; + + default: + _sg_imgui_snprintf(&str, "%d: ???", index); + break; + } + return str; +} + +/*--- CAPTURE CALLBACKS ------------------------------------------------------*/ +_SOKOL_PRIVATE void _sg_imgui_reset_state_cache(void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_RESET_STATE_CACHE; + item->color = _SG_IMGUI_COLOR_OTHER; + } + if (ctx->hooks.reset_state_cache) { + ctx->hooks.reset_state_cache(ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_make_buffer(const sg_buffer_desc* desc, sg_buffer buf_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_MAKE_BUFFER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.make_buffer.result = buf_id; + } + if (ctx->hooks.make_buffer) { + ctx->hooks.make_buffer(desc, buf_id, ctx->hooks.user_data); + } + if (buf_id.id != SG_INVALID_ID) { + _sg_imgui_buffer_created(ctx, buf_id, _sg_imgui_slot_index(buf_id.id), desc); + } +} + +_SOKOL_PRIVATE void _sg_imgui_make_image(const sg_image_desc* desc, sg_image img_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_MAKE_IMAGE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.make_image.result = img_id; + } + if (ctx->hooks.make_image) { + ctx->hooks.make_image(desc, img_id, ctx->hooks.user_data); + } + if (img_id.id != SG_INVALID_ID) { + _sg_imgui_image_created(ctx, img_id, _sg_imgui_slot_index(img_id.id), desc); + } +} + +_SOKOL_PRIVATE void _sg_imgui_make_shader(const sg_shader_desc* desc, sg_shader shd_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_MAKE_SHADER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.make_shader.result = shd_id; + } + if (ctx->hooks.make_shader) { + ctx->hooks.make_shader(desc, shd_id, ctx->hooks.user_data); + } + if (shd_id.id != SG_INVALID_ID) { + _sg_imgui_shader_created(ctx, shd_id, _sg_imgui_slot_index(shd_id.id), desc); + } +} + +_SOKOL_PRIVATE void _sg_imgui_make_pipeline(const sg_pipeline_desc* desc, sg_pipeline pip_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_MAKE_PIPELINE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.make_pipeline.result = pip_id; + } + if (ctx->hooks.make_pipeline) { + ctx->hooks.make_pipeline(desc, pip_id, ctx->hooks.user_data); + } + if (pip_id.id != SG_INVALID_ID) { + _sg_imgui_pipeline_created(ctx, pip_id, _sg_imgui_slot_index(pip_id.id), desc); + } +} + +_SOKOL_PRIVATE void _sg_imgui_make_pass(const sg_pass_desc* desc, sg_pass pass_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_MAKE_PASS; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.make_pass.result = pass_id; + } + if (ctx->hooks.make_pass) { + ctx->hooks.make_pass(desc, pass_id, ctx->hooks.user_data); + } + if (pass_id.id != SG_INVALID_ID) { + _sg_imgui_pass_created(ctx, pass_id, _sg_imgui_slot_index(pass_id.id), desc); + } +} + +_SOKOL_PRIVATE void _sg_imgui_destroy_buffer(sg_buffer buf, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_DESTROY_BUFFER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.destroy_buffer.buffer = buf; + } + if (ctx->hooks.destroy_buffer) { + ctx->hooks.destroy_buffer(buf, ctx->hooks.user_data); + } + if (buf.id != SG_INVALID_ID) { + _sg_imgui_buffer_destroyed(ctx, _sg_imgui_slot_index(buf.id)); + } +} + +_SOKOL_PRIVATE void _sg_imgui_destroy_image(sg_image img, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_DESTROY_IMAGE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.destroy_image.image = img; + } + if (ctx->hooks.destroy_image) { + ctx->hooks.destroy_image(img, ctx->hooks.user_data); + } + if (img.id != SG_INVALID_ID) { + _sg_imgui_image_destroyed(ctx, _sg_imgui_slot_index(img.id)); + } +} + +_SOKOL_PRIVATE void _sg_imgui_destroy_shader(sg_shader shd, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_DESTROY_SHADER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.destroy_shader.shader = shd; + } + if (ctx->hooks.destroy_shader) { + ctx->hooks.destroy_shader(shd, ctx->hooks.user_data); + } + if (shd.id != SG_INVALID_ID) { + _sg_imgui_shader_destroyed(ctx, _sg_imgui_slot_index(shd.id)); + } +} + +_SOKOL_PRIVATE void _sg_imgui_destroy_pipeline(sg_pipeline pip, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_DESTROY_PIPELINE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.destroy_pipeline.pipeline = pip; + } + if (ctx->hooks.destroy_pipeline) { + ctx->hooks.destroy_pipeline(pip, ctx->hooks.user_data); + } + if (pip.id != SG_INVALID_ID) { + _sg_imgui_pipeline_destroyed(ctx, _sg_imgui_slot_index(pip.id)); + } +} + +_SOKOL_PRIVATE void _sg_imgui_destroy_pass(sg_pass pass, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_DESTROY_PASS; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.destroy_pass.pass = pass; + } + if (ctx->hooks.destroy_pass) { + ctx->hooks.destroy_pass(pass, ctx->hooks.user_data); + } + if (pass.id != SG_INVALID_ID) { + _sg_imgui_pass_destroyed(ctx, _sg_imgui_slot_index(pass.id)); + } +} + +_SOKOL_PRIVATE void _sg_imgui_update_buffer(sg_buffer buf, const sg_range* data, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_UPDATE_BUFFER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.update_buffer.buffer = buf; + item->args.update_buffer.data_size = data->size; + } + if (ctx->hooks.update_buffer) { + ctx->hooks.update_buffer(buf, data, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_update_image(sg_image img, const sg_image_data* data, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_UPDATE_IMAGE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.update_image.image = img; + } + if (ctx->hooks.update_image) { + ctx->hooks.update_image(img, data, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_append_buffer(sg_buffer buf, const sg_range* data, int result, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_APPEND_BUFFER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.append_buffer.buffer = buf; + item->args.append_buffer.data_size = data->size; + item->args.append_buffer.result = result; + } + if (ctx->hooks.append_buffer) { + ctx->hooks.append_buffer(buf, data, result, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_begin_default_pass(const sg_pass_action* pass_action, int width, int height, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + SOKOL_ASSERT(pass_action); + item->cmd = SG_IMGUI_CMD_BEGIN_DEFAULT_PASS; + item->color = _SG_IMGUI_COLOR_DRAW; + item->args.begin_default_pass.action = *pass_action; + item->args.begin_default_pass.width = width; + item->args.begin_default_pass.height = height; + } + if (ctx->hooks.begin_default_pass) { + ctx->hooks.begin_default_pass(pass_action, width, height, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_begin_pass(sg_pass pass, const sg_pass_action* pass_action, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + SOKOL_ASSERT(pass_action); + item->cmd = SG_IMGUI_CMD_BEGIN_PASS; + item->color = _SG_IMGUI_COLOR_DRAW; + item->args.begin_pass.pass = pass; + item->args.begin_pass.action = *pass_action; + } + if (ctx->hooks.begin_pass) { + ctx->hooks.begin_pass(pass, pass_action, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_apply_viewport(int x, int y, int width, int height, bool origin_top_left, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_APPLY_VIEWPORT; + item->color = _SG_IMGUI_COLOR_DRAW; + item->args.apply_viewport.x = x; + item->args.apply_viewport.y = y; + item->args.apply_viewport.width = width; + item->args.apply_viewport.height = height; + item->args.apply_viewport.origin_top_left = origin_top_left; + } + if (ctx->hooks.apply_viewport) { + ctx->hooks.apply_viewport(x, y, width, height, origin_top_left, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_apply_scissor_rect(int x, int y, int width, int height, bool origin_top_left, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_APPLY_SCISSOR_RECT; + item->color = _SG_IMGUI_COLOR_DRAW; + item->args.apply_scissor_rect.x = x; + item->args.apply_scissor_rect.y = y; + item->args.apply_scissor_rect.width = width; + item->args.apply_scissor_rect.height = height; + item->args.apply_scissor_rect.origin_top_left = origin_top_left; + } + if (ctx->hooks.apply_scissor_rect) { + ctx->hooks.apply_scissor_rect(x, y, width, height, origin_top_left, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_apply_pipeline(sg_pipeline pip, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + ctx->cur_pipeline = pip; /* stored for _sg_imgui_apply_uniforms */ + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_APPLY_PIPELINE; + item->color = _SG_IMGUI_COLOR_DRAW; + item->args.apply_pipeline.pipeline = pip; + } + if (ctx->hooks.apply_pipeline) { + ctx->hooks.apply_pipeline(pip, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_apply_bindings(const sg_bindings* bindings, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + SOKOL_ASSERT(bindings); + item->cmd = SG_IMGUI_CMD_APPLY_BINDINGS; + item->color = _SG_IMGUI_COLOR_DRAW; + item->args.apply_bindings.bindings = *bindings; + } + if (ctx->hooks.apply_bindings) { + ctx->hooks.apply_bindings(bindings, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_apply_uniforms(sg_shader_stage stage, int ub_index, const sg_range* data, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + SOKOL_ASSERT(data); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_APPLY_UNIFORMS; + item->color = _SG_IMGUI_COLOR_DRAW; + sg_imgui_args_apply_uniforms_t* args = &item->args.apply_uniforms; + args->stage = stage; + args->ub_index = ub_index; + args->data_size = data->size; + args->pipeline = ctx->cur_pipeline; + args->ubuf_pos = _sg_imgui_capture_uniforms(ctx, data); + } + if (ctx->hooks.apply_uniforms) { + ctx->hooks.apply_uniforms(stage, ub_index, data, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw(int base_element, int num_elements, int num_instances, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_DRAW; + item->color = _SG_IMGUI_COLOR_DRAW; + item->args.draw.base_element = base_element; + item->args.draw.num_elements = num_elements; + item->args.draw.num_instances = num_instances; + } + if (ctx->hooks.draw) { + ctx->hooks.draw(base_element, num_elements, num_instances, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_end_pass(void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + ctx->cur_pipeline.id = SG_INVALID_ID; + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_END_PASS; + item->color = _SG_IMGUI_COLOR_DRAW; + } + if (ctx->hooks.end_pass) { + ctx->hooks.end_pass(ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_commit(void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_COMMIT; + item->color = _SG_IMGUI_COLOR_DRAW; + } + _sg_imgui_capture_next_frame(ctx); + if (ctx->hooks.commit) { + ctx->hooks.commit(ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_alloc_buffer(sg_buffer result, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ALLOC_BUFFER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.alloc_buffer.result = result; + } + if (ctx->hooks.alloc_buffer) { + ctx->hooks.alloc_buffer(result, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_alloc_image(sg_image result, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ALLOC_IMAGE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.alloc_image.result = result; + } + if (ctx->hooks.alloc_image) { + ctx->hooks.alloc_image(result, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_alloc_shader(sg_shader result, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ALLOC_SHADER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.alloc_shader.result = result; + } + if (ctx->hooks.alloc_shader) { + ctx->hooks.alloc_shader(result, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_alloc_pipeline(sg_pipeline result, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ALLOC_PIPELINE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.alloc_pipeline.result = result; + } + if (ctx->hooks.alloc_pipeline) { + ctx->hooks.alloc_pipeline(result, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_alloc_pass(sg_pass result, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ALLOC_PASS; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.alloc_pass.result = result; + } + if (ctx->hooks.alloc_pass) { + ctx->hooks.alloc_pass(result, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_dealloc_buffer(sg_buffer buf_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_DEALLOC_BUFFER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.dealloc_buffer.buffer = buf_id; + } + if (ctx->hooks.dealloc_buffer) { + ctx->hooks.dealloc_buffer(buf_id, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_dealloc_image(sg_image img_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_DEALLOC_IMAGE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.dealloc_image.image = img_id; + } + if (ctx->hooks.dealloc_image) { + ctx->hooks.dealloc_image(img_id, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_dealloc_shader(sg_shader shd_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_DEALLOC_SHADER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.dealloc_shader.shader = shd_id; + } + if (ctx->hooks.dealloc_shader) { + ctx->hooks.dealloc_shader(shd_id, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_dealloc_pipeline(sg_pipeline pip_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_DEALLOC_PIPELINE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.dealloc_pipeline.pipeline = pip_id; + } + if (ctx->hooks.dealloc_pipeline) { + ctx->hooks.dealloc_pipeline(pip_id, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_dealloc_pass(sg_pass pass_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_DEALLOC_PASS; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.dealloc_pass.pass = pass_id; + } + if (ctx->hooks.dealloc_pass) { + ctx->hooks.dealloc_pass(pass_id, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_init_buffer(sg_buffer buf_id, const sg_buffer_desc* desc, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_INIT_BUFFER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.init_buffer.buffer = buf_id; + } + if (ctx->hooks.init_buffer) { + ctx->hooks.init_buffer(buf_id, desc, ctx->hooks.user_data); + } + if (buf_id.id != SG_INVALID_ID) { + _sg_imgui_buffer_created(ctx, buf_id, _sg_imgui_slot_index(buf_id.id), desc); + } +} + +_SOKOL_PRIVATE void _sg_imgui_init_image(sg_image img_id, const sg_image_desc* desc, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_INIT_IMAGE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.init_image.image = img_id; + } + if (ctx->hooks.init_image) { + ctx->hooks.init_image(img_id, desc, ctx->hooks.user_data); + } + if (img_id.id != SG_INVALID_ID) { + _sg_imgui_image_created(ctx, img_id, _sg_imgui_slot_index(img_id.id), desc); + } +} + +_SOKOL_PRIVATE void _sg_imgui_init_shader(sg_shader shd_id, const sg_shader_desc* desc, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_INIT_SHADER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.init_shader.shader = shd_id; + } + if (ctx->hooks.init_shader) { + ctx->hooks.init_shader(shd_id, desc, ctx->hooks.user_data); + } + if (shd_id.id != SG_INVALID_ID) { + _sg_imgui_shader_created(ctx, shd_id, _sg_imgui_slot_index(shd_id.id), desc); + } +} + +_SOKOL_PRIVATE void _sg_imgui_init_pipeline(sg_pipeline pip_id, const sg_pipeline_desc* desc, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_INIT_PIPELINE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.init_pipeline.pipeline = pip_id; + } + if (ctx->hooks.init_pipeline) { + ctx->hooks.init_pipeline(pip_id, desc, ctx->hooks.user_data); + } + if (pip_id.id != SG_INVALID_ID) { + _sg_imgui_pipeline_created(ctx, pip_id, _sg_imgui_slot_index(pip_id.id), desc); + } +} + +_SOKOL_PRIVATE void _sg_imgui_init_pass(sg_pass pass_id, const sg_pass_desc* desc, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_INIT_PASS; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.init_pass.pass = pass_id; + } + if (ctx->hooks.init_pass) { + ctx->hooks.init_pass(pass_id, desc, ctx->hooks.user_data); + } + if (pass_id.id != SG_INVALID_ID) { + _sg_imgui_pass_created(ctx, pass_id, _sg_imgui_slot_index(pass_id.id), desc); + } +} + +_SOKOL_PRIVATE void _sg_imgui_uninit_buffer(sg_buffer buf, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_UNINIT_BUFFER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.uninit_buffer.buffer = buf; + } + if (ctx->hooks.uninit_buffer) { + ctx->hooks.uninit_buffer(buf, ctx->hooks.user_data); + } + if (buf.id != SG_INVALID_ID) { + _sg_imgui_buffer_destroyed(ctx, _sg_imgui_slot_index(buf.id)); + } +} + +_SOKOL_PRIVATE void _sg_imgui_uninit_image(sg_image img, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_UNINIT_IMAGE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.uninit_image.image = img; + } + if (ctx->hooks.uninit_image) { + ctx->hooks.uninit_image(img, ctx->hooks.user_data); + } + if (img.id != SG_INVALID_ID) { + _sg_imgui_image_destroyed(ctx, _sg_imgui_slot_index(img.id)); + } +} + +_SOKOL_PRIVATE void _sg_imgui_uninit_shader(sg_shader shd, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_UNINIT_SHADER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.uninit_shader.shader = shd; + } + if (ctx->hooks.uninit_shader) { + ctx->hooks.uninit_shader(shd, ctx->hooks.user_data); + } + if (shd.id != SG_INVALID_ID) { + _sg_imgui_shader_destroyed(ctx, _sg_imgui_slot_index(shd.id)); + } +} + +_SOKOL_PRIVATE void _sg_imgui_uninit_pipeline(sg_pipeline pip, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_UNINIT_PIPELINE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.uninit_pipeline.pipeline = pip; + } + if (ctx->hooks.uninit_pipeline) { + ctx->hooks.uninit_pipeline(pip, ctx->hooks.user_data); + } + if (pip.id != SG_INVALID_ID) { + _sg_imgui_pipeline_destroyed(ctx, _sg_imgui_slot_index(pip.id)); + } +} + +_SOKOL_PRIVATE void _sg_imgui_uninit_pass(sg_pass pass, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_UNINIT_PIPELINE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.uninit_pass.pass = pass; + } + if (ctx->hooks.uninit_pass) { + ctx->hooks.uninit_pass(pass, ctx->hooks.user_data); + } + if (pass.id != SG_INVALID_ID) { + _sg_imgui_pass_destroyed(ctx, _sg_imgui_slot_index(pass.id)); + } +} + +_SOKOL_PRIVATE void _sg_imgui_fail_buffer(sg_buffer buf_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_FAIL_BUFFER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.fail_buffer.buffer = buf_id; + } + if (ctx->hooks.fail_buffer) { + ctx->hooks.fail_buffer(buf_id, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_fail_image(sg_image img_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_FAIL_IMAGE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.fail_image.image = img_id; + } + if (ctx->hooks.fail_image) { + ctx->hooks.fail_image(img_id, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_fail_shader(sg_shader shd_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_FAIL_SHADER; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.fail_shader.shader = shd_id; + } + if (ctx->hooks.fail_shader) { + ctx->hooks.fail_shader(shd_id, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_fail_pipeline(sg_pipeline pip_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_FAIL_PIPELINE; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.fail_pipeline.pipeline = pip_id; + } + if (ctx->hooks.fail_pipeline) { + ctx->hooks.fail_pipeline(pip_id, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_fail_pass(sg_pass pass_id, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_FAIL_PASS; + item->color = _SG_IMGUI_COLOR_RSRC; + item->args.fail_pass.pass = pass_id; + } + if (ctx->hooks.fail_pass) { + ctx->hooks.fail_pass(pass_id, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_push_debug_group(const char* name, void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_PUSH_DEBUG_GROUP; + item->color = _SG_IMGUI_COLOR_OTHER; + item->args.push_debug_group.name = _sg_imgui_make_str(name); + } + if (ctx->hooks.push_debug_group) { + ctx->hooks.push_debug_group(name, ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_pop_debug_group(void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_POP_DEBUG_GROUP; + item->color = _SG_IMGUI_COLOR_OTHER; + } + if (ctx->hooks.pop_debug_group) { + ctx->hooks.pop_debug_group(ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_err_buffer_pool_exhausted(void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ERR_BUFFER_POOL_EXHAUSTED; + item->color = _SG_IMGUI_COLOR_ERR; + } + if (ctx->hooks.err_buffer_pool_exhausted) { + ctx->hooks.err_buffer_pool_exhausted(ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_err_image_pool_exhausted(void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ERR_IMAGE_POOL_EXHAUSTED; + item->color = _SG_IMGUI_COLOR_ERR; + } + if (ctx->hooks.err_image_pool_exhausted) { + ctx->hooks.err_image_pool_exhausted(ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_err_shader_pool_exhausted(void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ERR_SHADER_POOL_EXHAUSTED; + item->color = _SG_IMGUI_COLOR_ERR; + } + if (ctx->hooks.err_shader_pool_exhausted) { + ctx->hooks.err_shader_pool_exhausted(ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_err_pipeline_pool_exhausted(void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ERR_PIPELINE_POOL_EXHAUSTED; + item->color = _SG_IMGUI_COLOR_ERR; + } + if (ctx->hooks.err_pipeline_pool_exhausted) { + ctx->hooks.err_pipeline_pool_exhausted(ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_err_pass_pool_exhausted(void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ERR_PASS_POOL_EXHAUSTED; + item->color = _SG_IMGUI_COLOR_ERR; + } + if (ctx->hooks.err_pass_pool_exhausted) { + ctx->hooks.err_pass_pool_exhausted(ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_err_context_mismatch(void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ERR_CONTEXT_MISMATCH; + item->color = _SG_IMGUI_COLOR_ERR; + } + if (ctx->hooks.err_context_mismatch) { + ctx->hooks.err_context_mismatch(ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_err_pass_invalid(void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ERR_PASS_INVALID; + item->color = _SG_IMGUI_COLOR_ERR; + } + if (ctx->hooks.err_pass_invalid) { + ctx->hooks.err_pass_invalid(ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_err_draw_invalid(void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ERR_DRAW_INVALID; + item->color = _SG_IMGUI_COLOR_ERR; + } + if (ctx->hooks.err_draw_invalid) { + ctx->hooks.err_draw_invalid(ctx->hooks.user_data); + } +} + +_SOKOL_PRIVATE void _sg_imgui_err_bindings_invalid(void* user_data) { + sg_imgui_t* ctx = (sg_imgui_t*) user_data; + SOKOL_ASSERT(ctx); + sg_imgui_capture_item_t* item = _sg_imgui_capture_next_write_item(ctx); + if (item) { + item->cmd = SG_IMGUI_CMD_ERR_BINDINGS_INVALID; + item->color = _SG_IMGUI_COLOR_ERR; + } + if (ctx->hooks.err_bindings_invalid) { + ctx->hooks.err_bindings_invalid(ctx->hooks.user_data); + } +} + +/*--- IMGUI HELPERS ----------------------------------------------------------*/ +_SOKOL_PRIVATE bool _sg_imgui_draw_resid_list_item(uint32_t res_id, const char* label, bool selected) { + igPushID_Int((int)res_id); + bool res; + if (label[0]) { + res = igSelectable_Bool(label, selected, 0, IMVEC2(0,0)); + } + else { + sg_imgui_str_t str; + _sg_imgui_snprintf(&str, "0x%08X", res_id); + res = igSelectable_Bool(str.buf, selected, 0, IMVEC2(0,0)); + } + igPopID(); + return res; +} + +_SOKOL_PRIVATE bool _sg_imgui_draw_resid_link(uint32_t res_type, uint32_t res_id, const char* label) { + SOKOL_ASSERT(label); + sg_imgui_str_t str_buf; + const char* str; + if (label[0]) { + str = label; + } + else { + _sg_imgui_snprintf(&str_buf, "0x%08X", res_id); + str = str_buf.buf; + } + igPushID_Int((int)((res_type<<24)|res_id)); + bool res = igSmallButton(str); + igPopID(); + return res; +} + +_SOKOL_PRIVATE bool _sg_imgui_draw_buffer_link(sg_imgui_t* ctx, sg_buffer buf) { + bool retval = false; + if (buf.id != SG_INVALID_ID) { + const sg_imgui_buffer_t* buf_ui = &ctx->buffers.slots[_sg_imgui_slot_index(buf.id)]; + retval = _sg_imgui_draw_resid_link(1, buf.id, buf_ui->label.buf); + } + return retval; +} + +_SOKOL_PRIVATE bool _sg_imgui_draw_image_link(sg_imgui_t* ctx, sg_image img) { + bool retval = false; + if (img.id != SG_INVALID_ID) { + const sg_imgui_image_t* img_ui = &ctx->images.slots[_sg_imgui_slot_index(img.id)]; + retval = _sg_imgui_draw_resid_link(2, img.id, img_ui->label.buf); + } + return retval; +} + +_SOKOL_PRIVATE bool _sg_imgui_draw_shader_link(sg_imgui_t* ctx, sg_shader shd) { + bool retval = false; + if (shd.id != SG_INVALID_ID) { + const sg_imgui_shader_t* shd_ui = &ctx->shaders.slots[_sg_imgui_slot_index(shd.id)]; + retval = _sg_imgui_draw_resid_link(3, shd.id, shd_ui->label.buf); + } + return retval; +} + +_SOKOL_PRIVATE void _sg_imgui_show_buffer(sg_imgui_t* ctx, sg_buffer buf) { + ctx->buffers.open = true; + ctx->buffers.sel_buf = buf; +} + +_SOKOL_PRIVATE void _sg_imgui_show_image(sg_imgui_t* ctx, sg_image img) { + ctx->images.open = true; + ctx->images.sel_img = img; +} + +_SOKOL_PRIVATE void _sg_imgui_show_shader(sg_imgui_t* ctx, sg_shader shd) { + ctx->shaders.open = true; + ctx->shaders.sel_shd = shd; +} + +_SOKOL_PRIVATE void _sg_imgui_draw_buffer_list(sg_imgui_t* ctx) { + igBeginChild_Str("buffer_list", IMVEC2(_SG_IMGUI_LIST_WIDTH,0), true, 0); + for (int i = 0; i < ctx->buffers.num_slots; i++) { + sg_buffer buf = ctx->buffers.slots[i].res_id; + sg_resource_state state = sg_query_buffer_state(buf); + if ((state != SG_RESOURCESTATE_INVALID) && (state != SG_RESOURCESTATE_INITIAL)) { + bool selected = ctx->buffers.sel_buf.id == buf.id; + if (_sg_imgui_draw_resid_list_item(buf.id, ctx->buffers.slots[i].label.buf, selected)) { + ctx->buffers.sel_buf.id = buf.id; + } + } + } + igEndChild(); +} + +_SOKOL_PRIVATE void _sg_imgui_draw_image_list(sg_imgui_t* ctx) { + igBeginChild_Str("image_list", IMVEC2(_SG_IMGUI_LIST_WIDTH,0), true, 0); + for (int i = 0; i < ctx->images.num_slots; i++) { + sg_image img = ctx->images.slots[i].res_id; + sg_resource_state state = sg_query_image_state(img); + if ((state != SG_RESOURCESTATE_INVALID) && (state != SG_RESOURCESTATE_INITIAL)) { + bool selected = ctx->images.sel_img.id == img.id; + if (_sg_imgui_draw_resid_list_item(img.id, ctx->images.slots[i].label.buf, selected)) { + ctx->images.sel_img.id = img.id; + } + } + } + igEndChild(); +} + +_SOKOL_PRIVATE void _sg_imgui_draw_shader_list(sg_imgui_t* ctx) { + igBeginChild_Str("shader_list", IMVEC2(_SG_IMGUI_LIST_WIDTH,0), true, 0); + for (int i = 0; i < ctx->shaders.num_slots; i++) { + sg_shader shd = ctx->shaders.slots[i].res_id; + sg_resource_state state = sg_query_shader_state(shd); + if ((state != SG_RESOURCESTATE_INVALID) && (state != SG_RESOURCESTATE_INITIAL)) { + bool selected = ctx->shaders.sel_shd.id == shd.id; + if (_sg_imgui_draw_resid_list_item(shd.id, ctx->shaders.slots[i].label.buf, selected)) { + ctx->shaders.sel_shd.id = shd.id; + } + } + } + igEndChild(); +} + +_SOKOL_PRIVATE void _sg_imgui_draw_pipeline_list(sg_imgui_t* ctx) { + igBeginChild_Str("pipeline_list", IMVEC2(_SG_IMGUI_LIST_WIDTH,0), true, 0); + for (int i = 1; i < ctx->pipelines.num_slots; i++) { + sg_pipeline pip = ctx->pipelines.slots[i].res_id; + sg_resource_state state = sg_query_pipeline_state(pip); + if ((state != SG_RESOURCESTATE_INVALID) && (state != SG_RESOURCESTATE_INITIAL)) { + bool selected = ctx->pipelines.sel_pip.id == pip.id; + if (_sg_imgui_draw_resid_list_item(pip.id, ctx->pipelines.slots[i].label.buf, selected)) { + ctx->pipelines.sel_pip.id = pip.id; + } + } + } + igEndChild(); +} + +_SOKOL_PRIVATE void _sg_imgui_draw_pass_list(sg_imgui_t* ctx) { + igBeginChild_Str("pass_list", IMVEC2(_SG_IMGUI_LIST_WIDTH,0), true, 0); + for (int i = 1; i < ctx->passes.num_slots; i++) { + sg_pass pass = ctx->passes.slots[i].res_id; + sg_resource_state state = sg_query_pass_state(pass); + if ((state != SG_RESOURCESTATE_INVALID) && (state != SG_RESOURCESTATE_INITIAL)) { + bool selected = ctx->passes.sel_pass.id == pass.id; + if (_sg_imgui_draw_resid_list_item(pass.id, ctx->passes.slots[i].label.buf, selected)) { + ctx->passes.sel_pass.id = pass.id; + } + } + } + igEndChild(); +} + +_SOKOL_PRIVATE void _sg_imgui_draw_capture_list(sg_imgui_t* ctx) { + igBeginChild_Str("capture_list", IMVEC2(_SG_IMGUI_LIST_WIDTH,0), true, 0); + const int num_items = _sg_imgui_capture_num_read_items(ctx); + uint64_t group_stack = 1; /* bit set: group unfolded, cleared: folded */ + for (int i = 0; i < num_items; i++) { + const sg_imgui_capture_item_t* item = _sg_imgui_capture_read_item_at(ctx, i); + sg_imgui_str_t item_string = _sg_imgui_capture_item_string(ctx, i, item); + igPushStyleColor_U32(ImGuiCol_Text, item->color); + igPushID_Int(i); + if (item->cmd == SG_IMGUI_CMD_PUSH_DEBUG_GROUP) { + if (group_stack & 1) { + group_stack <<= 1; + const char* group_name = item->args.push_debug_group.name.buf; + if (igTreeNode_StrStr(group_name, "Group: %s", group_name)) { + group_stack |= 1; + } + } + else { + group_stack <<= 1; + } + } + else if (item->cmd == SG_IMGUI_CMD_POP_DEBUG_GROUP) { + if (group_stack & 1) { + igTreePop(); + } + group_stack >>= 1; + } + else if (group_stack & 1) { + if (igSelectable_Bool(item_string.buf, ctx->capture.sel_item == i, 0, IMVEC2(0,0))) { + ctx->capture.sel_item = i; + } + if (igIsItemHovered(0)) { + igSetTooltip("%s", item_string.buf); + } + } + igPopID(); + igPopStyleColor(1); + } + igEndChild(); +} + +_SOKOL_PRIVATE void _sg_imgui_draw_buffer_panel(sg_imgui_t* ctx, sg_buffer buf) { + if (buf.id != SG_INVALID_ID) { + igBeginChild_Str("buffer", IMVEC2(0,0), false, 0); + sg_buffer_info info = sg_query_buffer_info(buf); + if (info.slot.state == SG_RESOURCESTATE_VALID) { + const sg_imgui_buffer_t* buf_ui = &ctx->buffers.slots[_sg_imgui_slot_index(buf.id)]; + igText("Label: %s", buf_ui->label.buf[0] ? buf_ui->label.buf : "---"); + _sg_imgui_draw_resource_slot(&info.slot); + igSeparator(); + igText("Type: %s", _sg_imgui_buffertype_string(buf_ui->desc.type)); + igText("Usage: %s", _sg_imgui_usage_string(buf_ui->desc.usage)); + igText("Size: %d", buf_ui->desc.size); + if (buf_ui->desc.usage != SG_USAGE_IMMUTABLE) { + igSeparator(); + igText("Num Slots: %d", info.num_slots); + igText("Active Slot: %d", info.active_slot); + igText("Update Frame Index: %d", info.update_frame_index); + igText("Append Frame Index: %d", info.append_frame_index); + igText("Append Pos: %d", info.append_pos); + igText("Append Overflow: %s", _sg_imgui_bool_string(info.append_overflow)); + } + } + else { + igText("Buffer 0x%08X not valid.", buf.id); + } + igEndChild(); + } +} + +_SOKOL_PRIVATE bool _sg_imgui_image_renderable(sg_image_type type, sg_pixel_format fmt) { + return (type == SG_IMAGETYPE_2D) && sg_query_pixelformat(fmt).sample && !sg_query_pixelformat(fmt).depth; +} + +_SOKOL_PRIVATE void _sg_imgui_draw_embedded_image(sg_imgui_t* ctx, sg_image img, float* scale) { + if (sg_query_image_state(img) == SG_RESOURCESTATE_VALID) { + sg_imgui_image_t* img_ui = &ctx->images.slots[_sg_imgui_slot_index(img.id)]; + if (_sg_imgui_image_renderable(img_ui->desc.type, img_ui->desc.pixel_format)) { + igPushID_Int((int)img.id); + igSliderFloat("Scale", scale, 0.125f, 8.0f, "%.3f", ImGuiSliderFlags_Logarithmic); + float w = (float)img_ui->desc.width * (*scale); + float h = (float)img_ui->desc.height * (*scale); + igImage((ImTextureID)(intptr_t)img.id, IMVEC2(w, h), IMVEC2(0,0), IMVEC2(1,1), IMVEC4(1,1,1,1), IMVEC4(0,0,0,0)); + igPopID(); + } + else { + igText("Image not renderable."); + } + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw_image_panel(sg_imgui_t* ctx, sg_image img) { + if (img.id != SG_INVALID_ID) { + igBeginChild_Str("image", IMVEC2(0,0), false, 0); + sg_image_info info = sg_query_image_info(img); + if (info.slot.state == SG_RESOURCESTATE_VALID) { + sg_imgui_image_t* img_ui = &ctx->images.slots[_sg_imgui_slot_index(img.id)]; + const sg_image_desc* desc = &img_ui->desc; + igText("Label: %s", img_ui->label.buf[0] ? img_ui->label.buf : "---"); + _sg_imgui_draw_resource_slot(&info.slot); + igSeparator(); + _sg_imgui_draw_embedded_image(ctx, img, &img_ui->ui_scale); + igSeparator(); + igText("Type: %s", _sg_imgui_imagetype_string(desc->type)); + igText("Usage: %s", _sg_imgui_usage_string(desc->usage)); + igText("Render Target: %s", _sg_imgui_bool_string(desc->render_target)); + igText("Width: %d", desc->width); + igText("Height: %d", desc->height); + igText("Num Slices: %d", desc->num_slices); + igText("Num Mipmaps: %d", desc->num_mipmaps); + igText("Pixel Format: %s", _sg_imgui_pixelformat_string(desc->pixel_format)); + igText("Sample Count: %d", desc->sample_count); + igText("Min Filter: %s", _sg_imgui_filter_string(desc->min_filter)); + igText("Mag Filter: %s", _sg_imgui_filter_string(desc->mag_filter)); + igText("Wrap U: %s", _sg_imgui_wrap_string(desc->wrap_u)); + igText("Wrap V: %s", _sg_imgui_wrap_string(desc->wrap_v)); + igText("Wrap W: %s", _sg_imgui_wrap_string(desc->wrap_w)); + igText("Border Color: %s", _sg_imgui_bordercolor_string(desc->border_color)); + igText("Max Anisotropy: %d", desc->max_anisotropy); + igText("Min LOD: %.3f", desc->min_lod); + igText("Max LOD: %.3f", desc->max_lod); + if (desc->usage != SG_USAGE_IMMUTABLE) { + igSeparator(); + igText("Num Slots: %d", info.num_slots); + igText("Active Slot: %d", info.active_slot); + igText("Update Frame Index: %d", info.upd_frame_index); + } + } + else { + igText("Image 0x%08X not valid.", img.id); + } + igEndChild(); + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw_shader_stage(const sg_shader_stage_desc* stage) { + int num_valid_ubs = 0; + for (int i = 0; i < SG_MAX_SHADERSTAGE_UBS; i++) { + const sg_shader_uniform_block_desc* ub = &stage->uniform_blocks[i]; + for (int j = 0; j < SG_MAX_UB_MEMBERS; j++) { + const sg_shader_uniform_desc* u = &ub->uniforms[j]; + if (SG_UNIFORMTYPE_INVALID != u->type) { + num_valid_ubs++; + break; + } + } + } + int num_valid_images = 0; + for (int i = 0; i < SG_MAX_SHADERSTAGE_IMAGES; i++) { + if (_SG_IMAGETYPE_DEFAULT != stage->images[i].image_type) { + num_valid_images++; + } + else { + break; + } + } + if (num_valid_ubs > 0) { + if (igTreeNode_Str("Uniform Blocks")) { + for (int i = 0; i < num_valid_ubs; i++) { + igText("#%d:", i); + const sg_shader_uniform_block_desc* ub = &stage->uniform_blocks[i]; + for (int j = 0; j < SG_MAX_UB_MEMBERS; j++) { + const sg_shader_uniform_desc* u = &ub->uniforms[j]; + if (SG_UNIFORMTYPE_INVALID != u->type) { + if (u->array_count <= 1) { + igText(" %s %s", _sg_imgui_uniformtype_string(u->type), u->name ? u->name : ""); + } + else { + igText(" %s[%d] %s", _sg_imgui_uniformtype_string(u->type), u->array_count, u->name ? u->name : ""); + } + } + } + } + igTreePop(); + } + } + if (num_valid_images > 0) { + if (igTreeNode_Str("Images")) { + for (int i = 0; i < SG_MAX_SHADERSTAGE_IMAGES; i++) { + const sg_shader_image_desc* sid = &stage->images[i]; + if (sid->image_type != _SG_IMAGETYPE_DEFAULT) { + igText("slot: %d\n name: %s\n image_type: %s\n sampler_type: %s", + i, sid->name ? sid->name : "NONE", + _sg_imgui_imagetype_string(sid->image_type), + _sg_imgui_samplertype_string(sid->sampler_type)); + } + else { + break; + } + } + igTreePop(); + } + } + if (stage->entry) { + igText("Entry: %s", stage->entry); + } + if (stage->d3d11_target) { + igText("D3D11 Target: %s", stage->d3d11_target); + } + if (stage->source) { + if (igTreeNode_Str("Source")) { + igText("%s", stage->source); + igTreePop(); + } + } + else if (stage->bytecode.ptr) { + if (igTreeNode_Str("Byte Code")) { + igText("Byte-code display currently not supported."); + igTreePop(); + } + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw_shader_panel(sg_imgui_t* ctx, sg_shader shd) { + if (shd.id != SG_INVALID_ID) { + igBeginChild_Str("shader", IMVEC2(0,0), false, ImGuiWindowFlags_HorizontalScrollbar); + sg_shader_info info = sg_query_shader_info(shd); + if (info.slot.state == SG_RESOURCESTATE_VALID) { + const sg_imgui_shader_t* shd_ui = &ctx->shaders.slots[_sg_imgui_slot_index(shd.id)]; + igText("Label: %s", shd_ui->label.buf[0] ? shd_ui->label.buf : "---"); + _sg_imgui_draw_resource_slot(&info.slot); + igSeparator(); + if (igTreeNode_Str("Attrs")) { + for (int i = 0; i < SG_MAX_VERTEX_ATTRIBUTES; i++) { + const sg_shader_attr_desc* a_desc = &shd_ui->desc.attrs[i]; + if (a_desc->name || a_desc->sem_index) { + igText("#%d:", i); + igText(" Name: %s", a_desc->name ? a_desc->name : "---"); + igText(" Sem Name: %s", a_desc->sem_name ? a_desc->sem_name : "---"); + igText(" Sem Index: %d", a_desc->sem_index); + } + } + igTreePop(); + } + if (igTreeNode_Str("Vertex Shader Stage")) { + _sg_imgui_draw_shader_stage(&shd_ui->desc.vs); + igTreePop(); + } + if (igTreeNode_Str("Fragment Shader Stage")) { + _sg_imgui_draw_shader_stage(&shd_ui->desc.fs); + igTreePop(); + } + } + else { + igText("Shader 0x%08X not valid!", shd.id); + } + igEndChild(); + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw_vertex_layout(const sg_layout_desc* layout) { + if (igTreeNode_Str("Buffers")) { + for (int i = 0; i < SG_MAX_SHADERSTAGE_BUFFERS; i++) { + const sg_buffer_layout_desc* l_desc = &layout->buffers[i]; + if (l_desc->stride > 0) { + igText("#%d:", i); + igText(" Stride: %d", l_desc->stride); + igText(" Step Func: %s", _sg_imgui_vertexstep_string(l_desc->step_func)); + igText(" Step Rate: %d", l_desc->step_rate); + } + } + igTreePop(); + } + if (igTreeNode_Str("Attrs")) { + for (int i = 0; i < SG_MAX_VERTEX_ATTRIBUTES; i++) { + const sg_vertex_attr_desc* a_desc = &layout->attrs[i]; + if (a_desc->format != SG_VERTEXFORMAT_INVALID) { + igText("#%d:", i); + igText(" Format: %s", _sg_imgui_vertexformat_string(a_desc->format)); + igText(" Offset: %d", a_desc->offset); + igText(" Buffer Index: %d", a_desc->buffer_index); + } + } + igTreePop(); + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw_stencil_face_state(const sg_stencil_face_state* sfs) { + igText("Fail Op: %s", _sg_imgui_stencilop_string(sfs->fail_op)); + igText("Depth Fail Op: %s", _sg_imgui_stencilop_string(sfs->depth_fail_op)); + igText("Pass Op: %s", _sg_imgui_stencilop_string(sfs->pass_op)); + igText("Compare: %s", _sg_imgui_comparefunc_string(sfs->compare)); +} + +_SOKOL_PRIVATE void _sg_imgui_draw_stencil_state(const sg_stencil_state* ss) { + igText("Enabled: %s", _sg_imgui_bool_string(ss->enabled)); + igText("Read Mask: 0x%02X", ss->read_mask); + igText("Write Mask: 0x%02X", ss->write_mask); + igText("Ref: 0x%02X", ss->ref); + if (igTreeNode_Str("Front")) { + _sg_imgui_draw_stencil_face_state(&ss->front); + igTreePop(); + } + if (igTreeNode_Str("Back")) { + _sg_imgui_draw_stencil_face_state(&ss->back); + igTreePop(); + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw_depth_state(const sg_depth_state* ds) { + igText("Pixel Format: %s", _sg_imgui_pixelformat_string(ds->pixel_format)); + igText("Compare: %s", _sg_imgui_comparefunc_string(ds->compare)); + igText("Write Enabled: %s", _sg_imgui_bool_string(ds->write_enabled)); + igText("Bias: %f", ds->bias); + igText("Bias Slope: %f", ds->bias_slope_scale); + igText("Bias Clamp: %f", ds->bias_clamp); +} + +_SOKOL_PRIVATE void _sg_imgui_draw_blend_state(const sg_blend_state* bs) { + igText("Blend Enabled: %s", _sg_imgui_bool_string(bs->enabled)); + igText("Src Factor RGB: %s", _sg_imgui_blendfactor_string(bs->src_factor_rgb)); + igText("Dst Factor RGB: %s", _sg_imgui_blendfactor_string(bs->dst_factor_rgb)); + igText("Op RGB: %s", _sg_imgui_blendop_string(bs->op_rgb)); + igText("Src Factor Alpha: %s", _sg_imgui_blendfactor_string(bs->src_factor_alpha)); + igText("Dst Factor Alpha: %s", _sg_imgui_blendfactor_string(bs->dst_factor_alpha)); + igText("Op Alpha: %s", _sg_imgui_blendop_string(bs->op_alpha)); +} + +_SOKOL_PRIVATE void _sg_imgui_draw_color_state(const sg_color_state* cs) { + igText("Pixel Format: %s", _sg_imgui_pixelformat_string(cs->pixel_format)); + igText("Write Mask: %s", _sg_imgui_colormask_string(cs->write_mask)); + if (igTreeNode_Str("Blend State:")) { + _sg_imgui_draw_blend_state(&cs->blend); + igTreePop(); + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw_pipeline_panel(sg_imgui_t* ctx, sg_pipeline pip) { + if (pip.id != SG_INVALID_ID) { + igBeginChild_Str("pipeline", IMVEC2(0,0), false, 0); + sg_pipeline_info info = sg_query_pipeline_info(pip); + if (info.slot.state == SG_RESOURCESTATE_VALID) { + const sg_imgui_pipeline_t* pip_ui = &ctx->pipelines.slots[_sg_imgui_slot_index(pip.id)]; + igText("Label: %s", pip_ui->label.buf[0] ? pip_ui->label.buf : "---"); + _sg_imgui_draw_resource_slot(&info.slot); + igSeparator(); + igText("Shader: "); igSameLine(0,-1); + if (_sg_imgui_draw_shader_link(ctx, pip_ui->desc.shader)) { + _sg_imgui_show_shader(ctx, pip_ui->desc.shader); + } + if (igTreeNode_Str("Vertex Layout")) { + _sg_imgui_draw_vertex_layout(&pip_ui->desc.layout); + igTreePop(); + } + if (igTreeNode_Str("Depth State")) { + _sg_imgui_draw_depth_state(&pip_ui->desc.depth); + igTreePop(); + } + if (igTreeNode_Str("Stencil State")) { + _sg_imgui_draw_stencil_state(&pip_ui->desc.stencil); + igTreePop(); + } + igText("Color Count: %d", pip_ui->desc.color_count); + for (int i = 0; i < pip_ui->desc.color_count; i++) { + sg_imgui_str_t str; + _sg_imgui_snprintf(&str, "Color %d", i); + if (igTreeNode_Str(str.buf)) { + _sg_imgui_draw_color_state(&pip_ui->desc.colors[i]); + igTreePop(); + } + } + igText("Prim Type: %s", _sg_imgui_primitivetype_string(pip_ui->desc.primitive_type)); + igText("Index Type: %s", _sg_imgui_indextype_string(pip_ui->desc.index_type)); + igText("Cull Mode: %s", _sg_imgui_cullmode_string(pip_ui->desc.cull_mode)); + igText("Face Winding: %s", _sg_imgui_facewinding_string(pip_ui->desc.face_winding)); + igText("Sample Count: %d", pip_ui->desc.sample_count); + sg_imgui_str_t blend_color_str; + igText("Blend Color: %.3f %.3f %.3f %.3f", _sg_imgui_color_string(&blend_color_str, pip_ui->desc.blend_color)); + igText("Alpha To Coverage: %s", _sg_imgui_bool_string(pip_ui->desc.alpha_to_coverage_enabled)); + } + else { + igText("Pipeline 0x%08X not valid.", pip.id); + } + igEndChild(); + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw_pass_attachment(sg_imgui_t* ctx, const sg_pass_attachment_desc* att, float* img_scale) { + igText(" Image: "); igSameLine(0,-1); + if (_sg_imgui_draw_image_link(ctx, att->image)) { + _sg_imgui_show_image(ctx, att->image); + } + igText(" Mip Level: %d", att->mip_level); + igText(" Slice: %d", att->slice); + _sg_imgui_draw_embedded_image(ctx, att->image, img_scale); +} + +_SOKOL_PRIVATE void _sg_imgui_draw_pass_panel(sg_imgui_t* ctx, sg_pass pass) { + if (pass.id != SG_INVALID_ID) { + igBeginChild_Str("pass", IMVEC2(0,0), false, 0); + sg_pass_info info = sg_query_pass_info(pass); + if (info.slot.state == SG_RESOURCESTATE_VALID) { + sg_imgui_pass_t* pass_ui = &ctx->passes.slots[_sg_imgui_slot_index(pass.id)]; + igText("Label: %s", pass_ui->label.buf[0] ? pass_ui->label.buf : "---"); + _sg_imgui_draw_resource_slot(&info.slot); + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + if (pass_ui->desc.color_attachments[i].image.id == SG_INVALID_ID) { + break; + } + igSeparator(); + igText("Color Attachment #%d:", i); + _sg_imgui_draw_pass_attachment(ctx, &pass_ui->desc.color_attachments[i], &pass_ui->color_image_scale[i]); + } + if (pass_ui->desc.depth_stencil_attachment.image.id != SG_INVALID_ID) { + igSeparator(); + igText("Depth-Stencil Attachemnt:"); + _sg_imgui_draw_pass_attachment(ctx, &pass_ui->desc.depth_stencil_attachment, &pass_ui->ds_image_scale); + } + } + else { + igText("Pass 0x%08X not valid.", pass.id); + } + igEndChild(); + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw_bindings_panel(sg_imgui_t* ctx, const sg_bindings* bnd) { + for (int i = 0; i < SG_MAX_SHADERSTAGE_BUFFERS; i++) { + sg_buffer buf = bnd->vertex_buffers[i]; + if (buf.id != SG_INVALID_ID) { + igSeparator(); + igText("Vertex Buffer Slot #%d:", i); + igText(" Buffer: "); igSameLine(0,-1); + if (_sg_imgui_draw_buffer_link(ctx, buf)) { + _sg_imgui_show_buffer(ctx, buf); + } + igText(" Offset: %d", bnd->vertex_buffer_offsets[i]); + } + else { + break; + } + } + if (bnd->index_buffer.id != SG_INVALID_ID) { + sg_buffer buf = bnd->index_buffer; + if (buf.id != SG_INVALID_ID) { + igSeparator(); + igText("Index Buffer Slot:"); + igText(" Buffer: "); igSameLine(0,-1); + if (_sg_imgui_draw_buffer_link(ctx, buf)) { + _sg_imgui_show_buffer(ctx, buf); + } + igText(" Offset: %d", bnd->index_buffer_offset); + } + } + for (int i = 0; i < SG_MAX_SHADERSTAGE_IMAGES; i++) { + sg_image img = bnd->vs_images[i]; + if (img.id != SG_INVALID_ID) { + igSeparator(); + igText("Vertex Stage Image Slot #%d:", i); + igText(" Image: "); igSameLine(0,-1); + if (_sg_imgui_draw_image_link(ctx, img)) { + _sg_imgui_show_image(ctx, img); + } + } + else { + break; + } + } + for (int i = 0; i < SG_MAX_SHADERSTAGE_IMAGES; i++) { + sg_image img = bnd->fs_images[i]; + if (img.id != SG_INVALID_ID) { + igSeparator(); + igText("Fragment Stage Image Slot #%d:", i); + igText(" Image: "); igSameLine(0,-1); + if (_sg_imgui_draw_image_link(ctx, img)) { + _sg_imgui_show_image(ctx, img); + } + } + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw_uniforms_panel(sg_imgui_t* ctx, const sg_imgui_args_apply_uniforms_t* args) { + SOKOL_ASSERT(args->ub_index < SG_MAX_SHADERSTAGE_BUFFERS); + + /* check if all the required information for drawing the structured uniform block content + is available, otherwise just render a generic hexdump + */ + if (sg_query_pipeline_state(args->pipeline) != SG_RESOURCESTATE_VALID) { + igText("Pipeline object not valid!"); + return; + } + sg_imgui_pipeline_t* pip_ui = &ctx->pipelines.slots[_sg_imgui_slot_index(args->pipeline.id)]; + if (sg_query_shader_state(pip_ui->desc.shader) != SG_RESOURCESTATE_VALID) { + igText("Shader object not valid!"); + return; + } + sg_imgui_shader_t* shd_ui = &ctx->shaders.slots[_sg_imgui_slot_index(pip_ui->desc.shader.id)]; + SOKOL_ASSERT(shd_ui->res_id.id == pip_ui->desc.shader.id); + const sg_shader_uniform_block_desc* ub_desc = (args->stage == SG_SHADERSTAGE_VS) ? + &shd_ui->desc.vs.uniform_blocks[args->ub_index] : + &shd_ui->desc.fs.uniform_blocks[args->ub_index]; + SOKOL_ASSERT(args->data_size <= ub_desc->size); + bool draw_dump = false; + if (ub_desc->uniforms[0].type == SG_UNIFORMTYPE_INVALID) { + draw_dump = true; + } + + sg_imgui_capture_bucket_t* bucket = _sg_imgui_capture_get_read_bucket(ctx); + SOKOL_ASSERT((args->ubuf_pos + args->data_size) <= bucket->ubuf_size); + const float* uptrf = (const float*) (bucket->ubuf + args->ubuf_pos); + const int32_t* uptri32 = (const int32_t*) uptrf; + if (!draw_dump) { + uint32_t u_off = 0; + for (int i = 0; i < SG_MAX_UB_MEMBERS; i++) { + const sg_shader_uniform_desc* ud = &ub_desc->uniforms[i]; + if (ud->type == SG_UNIFORMTYPE_INVALID) { + break; + } + int num_items = (ud->array_count > 1) ? ud->array_count : 1; + if (num_items > 1) { + igText("%d: %s %s[%d] =", i, _sg_imgui_uniformtype_string(ud->type), ud->name?ud->name:"", ud->array_count); + } + else { + igText("%d: %s %s =", i, _sg_imgui_uniformtype_string(ud->type), ud->name?ud->name:""); + } + for (int item_index = 0; item_index < num_items; item_index++) { + const uint32_t u_size = _sg_imgui_std140_uniform_size(ud->type, ud->array_count) / 4; + const uint32_t u_align = _sg_imgui_std140_uniform_alignment(ud->type, ud->array_count) / 4; + u_off = _sg_imgui_align_u32(u_off, u_align); + switch (ud->type) { + case SG_UNIFORMTYPE_FLOAT: + igText(" %.3f", uptrf[u_off]); + break; + case SG_UNIFORMTYPE_INT: + igText(" %d", uptri32[u_off]); + break; + case SG_UNIFORMTYPE_FLOAT2: + igText(" %.3f, %.3f", uptrf[u_off], uptrf[u_off+1]); + break; + case SG_UNIFORMTYPE_INT2: + igText(" %d, %d", uptri32[u_off], uptri32[u_off+1]); + break; + case SG_UNIFORMTYPE_FLOAT3: + igText(" %.3f, %.3f, %.3f", uptrf[u_off], uptrf[u_off+1], uptrf[u_off+2]); + break; + case SG_UNIFORMTYPE_INT3: + igText(" %d, %d, %d", uptri32[u_off], uptri32[u_off+1], uptri32[u_off+2]); + break; + case SG_UNIFORMTYPE_FLOAT4: + igText(" %.3f, %.3f, %.3f, %.3f", uptrf[u_off], uptrf[u_off+1], uptrf[u_off+2], uptrf[u_off+3]); + break; + case SG_UNIFORMTYPE_INT4: + igText(" %d, %d, %d, %d", uptri32[u_off], uptri32[u_off+1], uptri32[u_off+2], uptri32[u_off+3]); + break; + case SG_UNIFORMTYPE_MAT4: + igText(" %.3f, %.3f, %.3f, %.3f\n" + " %.3f, %.3f, %.3f, %.3f\n" + " %.3f, %.3f, %.3f, %.3f\n" + " %.3f, %.3f, %.3f, %.3f", + uptrf[u_off+0], uptrf[u_off+1], uptrf[u_off+2], uptrf[u_off+3], + uptrf[u_off+4], uptrf[u_off+5], uptrf[u_off+6], uptrf[u_off+7], + uptrf[u_off+8], uptrf[u_off+9], uptrf[u_off+10], uptrf[u_off+11], + uptrf[u_off+12], uptrf[u_off+13], uptrf[u_off+14], uptrf[u_off+15]); + break; + default: + igText("???"); + break; + } + u_off += u_size; + } + } + } + else { + // FIXME: float vs int + const size_t num_floats = ub_desc->size / sizeof(float); + for (uint32_t i = 0; i < num_floats; i++) { + igText("%.3f, ", uptrf[i]); + if (((i + 1) % 4) != 0) { + igSameLine(0,-1); + } + } + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw_passaction_panel(sg_imgui_t* ctx, sg_pass pass, const sg_pass_action* action) { + /* determine number of valid color attachments in the pass */ + int num_color_atts = 0; + if (SG_INVALID_ID == pass.id) { + /* default pass: one color attachment */ + num_color_atts = 1; + } + else { + const sg_imgui_pass_t* pass_ui = &ctx->passes.slots[_sg_imgui_slot_index(pass.id)]; + for (int i = 0; i < SG_MAX_COLOR_ATTACHMENTS; i++) { + if (pass_ui->desc.color_attachments[i].image.id != SG_INVALID_ID) { + num_color_atts++; + } + } + } + + igText("Pass Action: "); + for (int i = 0; i < num_color_atts; i++) { + const sg_color_attachment_action* c_att = &action->colors[i]; + igText(" Color Attachment %d:", i); + sg_imgui_str_t color_str; + switch (c_att->action) { + case SG_ACTION_LOAD: igText(" SG_ACTION_LOAD"); break; + case SG_ACTION_DONTCARE: igText(" SG_ACTION_DONTCARE"); break; + default: + igText(" SG_ACTION_CLEAR: %s", _sg_imgui_color_string(&color_str, c_att->value)); + break; + } + } + const sg_depth_attachment_action* d_att = &action->depth; + igText(" Depth Attachment:"); + switch (d_att->action) { + case SG_ACTION_LOAD: igText(" SG_ACTION_LOAD"); break; + case SG_ACTION_DONTCARE: igText(" SG_ACTION_DONTCARE"); break; + default: igText(" SG_ACTION_CLEAR: %.3f", d_att->value); break; + } + const sg_stencil_attachment_action* s_att = &action->stencil; + igText(" Stencil Attachment"); + switch (s_att->action) { + case SG_ACTION_LOAD: igText(" SG_ACTION_LOAD"); break; + case SG_ACTION_DONTCARE: igText(" SG_ACTION_DONTCARE"); break; + default: igText(" SG_ACTION_CLEAR: 0x%02X", s_att->value); break; + } +} + +_SOKOL_PRIVATE void _sg_imgui_draw_capture_panel(sg_imgui_t* ctx) { + int sel_item_index = ctx->capture.sel_item; + if (sel_item_index >= _sg_imgui_capture_num_read_items(ctx)) { + return; + } + sg_imgui_capture_item_t* item = _sg_imgui_capture_read_item_at(ctx, sel_item_index); + igBeginChild_Str("capture_item", IMVEC2(0, 0), false, 0); + igPushStyleColor_U32(ImGuiCol_Text, item->color); + igText("%s", _sg_imgui_capture_item_string(ctx, sel_item_index, item).buf); + igPopStyleColor(1); + igSeparator(); + switch (item->cmd) { + case SG_IMGUI_CMD_RESET_STATE_CACHE: + break; + case SG_IMGUI_CMD_MAKE_BUFFER: + _sg_imgui_draw_buffer_panel(ctx, item->args.make_buffer.result); + break; + case SG_IMGUI_CMD_MAKE_IMAGE: + _sg_imgui_draw_image_panel(ctx, item->args.make_image.result); + break; + case SG_IMGUI_CMD_MAKE_SHADER: + _sg_imgui_draw_shader_panel(ctx, item->args.make_shader.result); + break; + case SG_IMGUI_CMD_MAKE_PIPELINE: + _sg_imgui_draw_pipeline_panel(ctx, item->args.make_pipeline.result); + break; + case SG_IMGUI_CMD_MAKE_PASS: + _sg_imgui_draw_pass_panel(ctx, item->args.make_pass.result); + break; + case SG_IMGUI_CMD_DESTROY_BUFFER: + _sg_imgui_draw_buffer_panel(ctx, item->args.destroy_buffer.buffer); + break; + case SG_IMGUI_CMD_DESTROY_IMAGE: + _sg_imgui_draw_image_panel(ctx, item->args.destroy_image.image); + break; + case SG_IMGUI_CMD_DESTROY_SHADER: + _sg_imgui_draw_shader_panel(ctx, item->args.destroy_shader.shader); + break; + case SG_IMGUI_CMD_DESTROY_PIPELINE: + _sg_imgui_draw_pipeline_panel(ctx, item->args.destroy_pipeline.pipeline); + break; + case SG_IMGUI_CMD_DESTROY_PASS: + _sg_imgui_draw_pass_panel(ctx, item->args.destroy_pass.pass); + break; + case SG_IMGUI_CMD_UPDATE_BUFFER: + _sg_imgui_draw_buffer_panel(ctx, item->args.update_buffer.buffer); + break; + case SG_IMGUI_CMD_UPDATE_IMAGE: + _sg_imgui_draw_image_panel(ctx, item->args.update_image.image); + break; + case SG_IMGUI_CMD_APPEND_BUFFER: + _sg_imgui_draw_buffer_panel(ctx, item->args.update_buffer.buffer); + break; + case SG_IMGUI_CMD_BEGIN_DEFAULT_PASS: + { + sg_pass inv_pass = { SG_INVALID_ID }; + _sg_imgui_draw_passaction_panel(ctx, inv_pass, &item->args.begin_default_pass.action); + } + break; + case SG_IMGUI_CMD_BEGIN_PASS: + _sg_imgui_draw_passaction_panel(ctx, item->args.begin_pass.pass, &item->args.begin_pass.action); + igSeparator(); + _sg_imgui_draw_pass_panel(ctx, item->args.begin_pass.pass); + break; + case SG_IMGUI_CMD_APPLY_VIEWPORT: + case SG_IMGUI_CMD_APPLY_SCISSOR_RECT: + break; + case SG_IMGUI_CMD_APPLY_PIPELINE: + _sg_imgui_draw_pipeline_panel(ctx, item->args.apply_pipeline.pipeline); + break; + case SG_IMGUI_CMD_APPLY_BINDINGS: + _sg_imgui_draw_bindings_panel(ctx, &item->args.apply_bindings.bindings); + break; + case SG_IMGUI_CMD_APPLY_UNIFORMS: + _sg_imgui_draw_uniforms_panel(ctx, &item->args.apply_uniforms); + break; + case SG_IMGUI_CMD_DRAW: + case SG_IMGUI_CMD_END_PASS: + case SG_IMGUI_CMD_COMMIT: + break; + case SG_IMGUI_CMD_ALLOC_BUFFER: + _sg_imgui_draw_buffer_panel(ctx, item->args.alloc_buffer.result); + break; + case SG_IMGUI_CMD_ALLOC_IMAGE: + _sg_imgui_draw_image_panel(ctx, item->args.alloc_image.result); + break; + case SG_IMGUI_CMD_ALLOC_SHADER: + _sg_imgui_draw_shader_panel(ctx, item->args.alloc_shader.result); + break; + case SG_IMGUI_CMD_ALLOC_PIPELINE: + _sg_imgui_draw_pipeline_panel(ctx, item->args.alloc_pipeline.result); + break; + case SG_IMGUI_CMD_ALLOC_PASS: + _sg_imgui_draw_pass_panel(ctx, item->args.alloc_pass.result); + break; + case SG_IMGUI_CMD_INIT_BUFFER: + _sg_imgui_draw_buffer_panel(ctx, item->args.init_buffer.buffer); + break; + case SG_IMGUI_CMD_INIT_IMAGE: + _sg_imgui_draw_image_panel(ctx, item->args.init_image.image); + break; + case SG_IMGUI_CMD_INIT_SHADER: + _sg_imgui_draw_shader_panel(ctx, item->args.init_shader.shader); + break; + case SG_IMGUI_CMD_INIT_PIPELINE: + _sg_imgui_draw_pipeline_panel(ctx, item->args.init_pipeline.pipeline); + break; + case SG_IMGUI_CMD_INIT_PASS: + _sg_imgui_draw_pass_panel(ctx, item->args.init_pass.pass); + break; + case SG_IMGUI_CMD_FAIL_BUFFER: + _sg_imgui_draw_buffer_panel(ctx, item->args.fail_buffer.buffer); + break; + case SG_IMGUI_CMD_FAIL_IMAGE: + _sg_imgui_draw_image_panel(ctx, item->args.fail_image.image); + break; + case SG_IMGUI_CMD_FAIL_SHADER: + _sg_imgui_draw_shader_panel(ctx, item->args.fail_shader.shader); + break; + case SG_IMGUI_CMD_FAIL_PIPELINE: + _sg_imgui_draw_pipeline_panel(ctx, item->args.fail_pipeline.pipeline); + break; + case SG_IMGUI_CMD_FAIL_PASS: + _sg_imgui_draw_pass_panel(ctx, item->args.fail_pass.pass); + break; + default: + break; + } + igEndChild(); +} + +_SOKOL_PRIVATE void _sg_imgui_draw_caps_panel(void) { + igText("Backend: %s\n\n", _sg_imgui_backend_string(sg_query_backend())); + sg_features f = sg_query_features(); + igText("Features:"); + igText(" origin_top_left: %s", _sg_imgui_bool_string(f.origin_top_left)); + igText(" image_clamp_to_border: %s", _sg_imgui_bool_string(f.image_clamp_to_border)); + igText(" mrt_independent_blend_state: %s", _sg_imgui_bool_string(f.mrt_independent_blend_state)); + igText(" mrt_independent_write_mask: %s", _sg_imgui_bool_string(f.mrt_independent_write_mask)); + sg_limits l = sg_query_limits(); + igText("\nLimits:\n"); + igText(" max_image_size_2d: %d", l.max_image_size_2d); + igText(" max_image_size_cube: %d", l.max_image_size_cube); + igText(" max_image_size_3d: %d", l.max_image_size_3d); + igText(" max_image_size_array: %d", l.max_image_size_array); + igText(" max_image_array_layers: %d", l.max_image_array_layers); + igText(" max_vertex_attrs: %d", l.max_vertex_attrs); + igText(" gl_max_vertex_uniform_vectors: %d", l.gl_max_vertex_uniform_vectors); + igText(" gl_max_combined_texture_image_units: %d", l.gl_max_combined_texture_image_units); + igText("\nUsable Pixelformats:"); + for (int i = (int)(SG_PIXELFORMAT_NONE+1); i < (int)_SG_PIXELFORMAT_NUM; i++) { + sg_pixel_format fmt = (sg_pixel_format)i; + sg_pixelformat_info info = sg_query_pixelformat(fmt); + if (info.sample) { + igText(" %s: %s%s%s%s%s%s", + _sg_imgui_pixelformat_string(fmt), + info.sample ? "SAMPLE ":"", + info.filter ? "FILTER ":"", + info.blend ? "BLEND ":"", + info.render ? "RENDER ":"", + info.msaa ? "MSAA ":"", + info.depth ? "DEPTH ":""); + } + } +} + +#define _sg_imgui_def(val, def) (((val) == 0) ? (def) : (val)) + +_SOKOL_PRIVATE sg_imgui_desc_t _sg_imgui_desc_defaults(const sg_imgui_desc_t* desc) { + SOKOL_ASSERT((desc->allocator.alloc && desc->allocator.free) || (!desc->allocator.alloc && !desc->allocator.free)); + sg_imgui_desc_t res = *desc; + // FIXME: any additional default overrides would go here + return res; +} + +/*--- PUBLIC FUNCTIONS -------------------------------------------------------*/ +SOKOL_API_IMPL void sg_imgui_init(sg_imgui_t* ctx, const sg_imgui_desc_t* desc) { + SOKOL_ASSERT(ctx && desc); + _sg_imgui_clear(ctx, sizeof(sg_imgui_t)); + ctx->init_tag = 0xABCDABCD; + ctx->desc = _sg_imgui_desc_defaults(desc); + _sg_imgui_capture_init(ctx); + + /* hook into sokol_gfx functions */ + sg_trace_hooks hooks; + _sg_imgui_clear(&hooks, sizeof(hooks)); + hooks.user_data = (void*) ctx; + hooks.reset_state_cache = _sg_imgui_reset_state_cache; + hooks.make_buffer = _sg_imgui_make_buffer; + hooks.make_image = _sg_imgui_make_image; + hooks.make_shader = _sg_imgui_make_shader; + hooks.make_pipeline = _sg_imgui_make_pipeline; + hooks.make_pass = _sg_imgui_make_pass; + hooks.destroy_buffer = _sg_imgui_destroy_buffer; + hooks.destroy_image = _sg_imgui_destroy_image; + hooks.destroy_shader = _sg_imgui_destroy_shader; + hooks.destroy_pipeline = _sg_imgui_destroy_pipeline; + hooks.destroy_pass = _sg_imgui_destroy_pass; + hooks.update_buffer = _sg_imgui_update_buffer; + hooks.update_image = _sg_imgui_update_image; + hooks.append_buffer = _sg_imgui_append_buffer; + hooks.begin_default_pass = _sg_imgui_begin_default_pass; + hooks.begin_pass = _sg_imgui_begin_pass; + hooks.apply_viewport = _sg_imgui_apply_viewport; + hooks.apply_scissor_rect = _sg_imgui_apply_scissor_rect; + hooks.apply_pipeline = _sg_imgui_apply_pipeline; + hooks.apply_bindings = _sg_imgui_apply_bindings; + hooks.apply_uniforms = _sg_imgui_apply_uniforms; + hooks.draw = _sg_imgui_draw; + hooks.end_pass = _sg_imgui_end_pass; + hooks.commit = _sg_imgui_commit; + hooks.alloc_buffer = _sg_imgui_alloc_buffer; + hooks.alloc_image = _sg_imgui_alloc_image; + hooks.alloc_shader = _sg_imgui_alloc_shader; + hooks.alloc_pipeline = _sg_imgui_alloc_pipeline; + hooks.alloc_pass = _sg_imgui_alloc_pass; + hooks.dealloc_buffer = _sg_imgui_dealloc_buffer; + hooks.dealloc_image = _sg_imgui_dealloc_image; + hooks.dealloc_shader = _sg_imgui_dealloc_shader; + hooks.dealloc_pipeline = _sg_imgui_dealloc_pipeline; + hooks.dealloc_pass = _sg_imgui_dealloc_pass; + hooks.init_buffer = _sg_imgui_init_buffer; + hooks.init_image = _sg_imgui_init_image; + hooks.init_shader = _sg_imgui_init_shader; + hooks.init_pipeline = _sg_imgui_init_pipeline; + hooks.init_pass = _sg_imgui_init_pass; + hooks.uninit_buffer = _sg_imgui_uninit_buffer; + hooks.uninit_image = _sg_imgui_uninit_image; + hooks.uninit_shader = _sg_imgui_uninit_shader; + hooks.uninit_pipeline = _sg_imgui_uninit_pipeline; + hooks.uninit_pass = _sg_imgui_uninit_pass; + hooks.fail_buffer = _sg_imgui_fail_buffer; + hooks.fail_image = _sg_imgui_fail_image; + hooks.fail_shader = _sg_imgui_fail_shader; + hooks.fail_pipeline = _sg_imgui_fail_pipeline; + hooks.fail_pass = _sg_imgui_fail_pass; + hooks.push_debug_group = _sg_imgui_push_debug_group; + hooks.pop_debug_group = _sg_imgui_pop_debug_group; + hooks.err_buffer_pool_exhausted = _sg_imgui_err_buffer_pool_exhausted; + hooks.err_image_pool_exhausted = _sg_imgui_err_image_pool_exhausted; + hooks.err_shader_pool_exhausted = _sg_imgui_err_shader_pool_exhausted; + hooks.err_pipeline_pool_exhausted = _sg_imgui_err_pipeline_pool_exhausted; + hooks.err_pass_pool_exhausted = _sg_imgui_err_pass_pool_exhausted; + hooks.err_context_mismatch = _sg_imgui_err_context_mismatch; + hooks.err_pass_invalid = _sg_imgui_err_pass_invalid; + hooks.err_draw_invalid = _sg_imgui_err_draw_invalid; + hooks.err_bindings_invalid = _sg_imgui_err_bindings_invalid; + ctx->hooks = sg_install_trace_hooks(&hooks); + + /* allocate resource debug-info slots */ + const sg_desc sgdesc = sg_query_desc(); + ctx->buffers.num_slots = sgdesc.buffer_pool_size; + ctx->images.num_slots = sgdesc.image_pool_size; + ctx->shaders.num_slots = sgdesc.shader_pool_size; + ctx->pipelines.num_slots = sgdesc.pipeline_pool_size; + ctx->passes.num_slots = sgdesc.pass_pool_size; + + const size_t buffer_pool_size = (size_t)ctx->buffers.num_slots * sizeof(sg_imgui_buffer_t); + ctx->buffers.slots = (sg_imgui_buffer_t*) _sg_imgui_malloc_clear(&ctx->desc.allocator, buffer_pool_size); + + const size_t image_pool_size = (size_t)ctx->images.num_slots * sizeof(sg_imgui_image_t); + ctx->images.slots = (sg_imgui_image_t*) _sg_imgui_malloc_clear(&ctx->desc.allocator, image_pool_size); + + const size_t shader_pool_size = (size_t)ctx->shaders.num_slots * sizeof(sg_imgui_shader_t); + ctx->shaders.slots = (sg_imgui_shader_t*) _sg_imgui_malloc_clear(&ctx->desc.allocator, shader_pool_size); + + const size_t pipeline_pool_size = (size_t)ctx->pipelines.num_slots * sizeof(sg_imgui_pipeline_t); + ctx->pipelines.slots = (sg_imgui_pipeline_t*) _sg_imgui_malloc_clear(&ctx->desc.allocator, pipeline_pool_size); + + const size_t pass_pool_size = (size_t)ctx->passes.num_slots * sizeof(sg_imgui_pass_t); + ctx->passes.slots = (sg_imgui_pass_t*) _sg_imgui_malloc_clear(&ctx->desc.allocator, pass_pool_size); +} + +SOKOL_API_IMPL void sg_imgui_discard(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + /* restore original trace hooks */ + sg_install_trace_hooks(&ctx->hooks); + ctx->init_tag = 0; + _sg_imgui_capture_discard(ctx); + if (ctx->buffers.slots) { + for (int i = 0; i < ctx->buffers.num_slots; i++) { + if (ctx->buffers.slots[i].res_id.id != SG_INVALID_ID) { + _sg_imgui_buffer_destroyed(ctx, i); + } + } + _sg_imgui_free(&ctx->desc.allocator, (void*)ctx->buffers.slots); + ctx->buffers.slots = 0; + } + if (ctx->images.slots) { + for (int i = 0; i < ctx->images.num_slots; i++) { + if (ctx->images.slots[i].res_id.id != SG_INVALID_ID) { + _sg_imgui_image_destroyed(ctx, i); + } + } + _sg_imgui_free(&ctx->desc.allocator, (void*)ctx->images.slots); + ctx->images.slots = 0; + } + if (ctx->shaders.slots) { + for (int i = 0; i < ctx->shaders.num_slots; i++) { + if (ctx->shaders.slots[i].res_id.id != SG_INVALID_ID) { + _sg_imgui_shader_destroyed(ctx, i); + } + } + _sg_imgui_free(&ctx->desc.allocator, (void*)ctx->shaders.slots); + ctx->shaders.slots = 0; + } + if (ctx->pipelines.slots) { + for (int i = 0; i < ctx->pipelines.num_slots; i++) { + if (ctx->pipelines.slots[i].res_id.id != SG_INVALID_ID) { + _sg_imgui_pipeline_destroyed(ctx, i); + } + } + _sg_imgui_free(&ctx->desc.allocator, (void*)ctx->pipelines.slots); + ctx->pipelines.slots = 0; + } + if (ctx->passes.slots) { + for (int i = 0; i < ctx->passes.num_slots; i++) { + if (ctx->passes.slots[i].res_id.id != SG_INVALID_ID) { + _sg_imgui_pass_destroyed(ctx, i); + } + } + _sg_imgui_free(&ctx->desc.allocator, (void*)ctx->passes.slots); + ctx->passes.slots = 0; + } +} + +SOKOL_API_IMPL void sg_imgui_draw(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + sg_imgui_draw_buffers_window(ctx); + sg_imgui_draw_images_window(ctx); + sg_imgui_draw_shaders_window(ctx); + sg_imgui_draw_pipelines_window(ctx); + sg_imgui_draw_passes_window(ctx); + sg_imgui_draw_capture_window(ctx); + sg_imgui_draw_capabilities_window(ctx); +} + +SOKOL_API_IMPL void sg_imgui_draw_buffers_window(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + if (!ctx->buffers.open) { + return; + } + igSetNextWindowSize(IMVEC2(440, 280), ImGuiCond_Once); + if (igBegin("Buffers", &ctx->buffers.open, 0)) { + sg_imgui_draw_buffers_content(ctx); + } + igEnd(); +} + +SOKOL_API_IMPL void sg_imgui_draw_images_window(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + if (!ctx->images.open) { + return; + } + igSetNextWindowSize(IMVEC2(440, 400), ImGuiCond_Once); + if (igBegin("Images", &ctx->images.open, 0)) { + sg_imgui_draw_images_content(ctx); + } + igEnd(); +} + +SOKOL_API_IMPL void sg_imgui_draw_shaders_window(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + if (!ctx->shaders.open) { + return; + } + igSetNextWindowSize(IMVEC2(440, 400), ImGuiCond_Once); + if (igBegin("Shaders", &ctx->shaders.open, 0)) { + sg_imgui_draw_shaders_content(ctx); + } + igEnd(); +} + +SOKOL_API_IMPL void sg_imgui_draw_pipelines_window(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + if (!ctx->pipelines.open) { + return; + } + igSetNextWindowSize(IMVEC2(540, 400), ImGuiCond_Once); + if (igBegin("Pipelines", &ctx->pipelines.open, 0)) { + sg_imgui_draw_pipelines_content(ctx); + } + igEnd(); +} + +SOKOL_API_IMPL void sg_imgui_draw_passes_window(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + if (!ctx->passes.open) { + return; + } + igSetNextWindowSize(IMVEC2(440, 400), ImGuiCond_Once); + if (igBegin("Passes", &ctx->passes.open, 0)) { + sg_imgui_draw_passes_content(ctx); + } + igEnd(); +} + +SOKOL_API_IMPL void sg_imgui_draw_capture_window(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + if (!ctx->capture.open) { + return; + } + igSetNextWindowSize(IMVEC2(640, 400), ImGuiCond_Once); + if (igBegin("Frame Capture", &ctx->capture.open, 0)) { + sg_imgui_draw_capture_content(ctx); + } + igEnd(); +} + +SOKOL_API_IMPL void sg_imgui_draw_capabilities_window(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + if (!ctx->caps.open) { + return; + } + igSetNextWindowSize(IMVEC2(440, 400), ImGuiCond_Once); + if (igBegin("Capabilities", &ctx->caps.open, 0)) { + sg_imgui_draw_capabilities_content(ctx); + } + igEnd(); +} + +SOKOL_API_IMPL void sg_imgui_draw_buffers_content(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + _sg_imgui_draw_buffer_list(ctx); + igSameLine(0,-1); + _sg_imgui_draw_buffer_panel(ctx, ctx->buffers.sel_buf); +} + +SOKOL_API_IMPL void sg_imgui_draw_images_content(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + _sg_imgui_draw_image_list(ctx); + igSameLine(0,-1); + _sg_imgui_draw_image_panel(ctx, ctx->images.sel_img); +} + +SOKOL_API_IMPL void sg_imgui_draw_shaders_content(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + _sg_imgui_draw_shader_list(ctx); + igSameLine(0,-1); + _sg_imgui_draw_shader_panel(ctx, ctx->shaders.sel_shd); +} + +SOKOL_API_IMPL void sg_imgui_draw_pipelines_content(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + _sg_imgui_draw_pipeline_list(ctx); + igSameLine(0,-1); + _sg_imgui_draw_pipeline_panel(ctx, ctx->pipelines.sel_pip); +} + +SOKOL_API_IMPL void sg_imgui_draw_passes_content(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + _sg_imgui_draw_pass_list(ctx); + igSameLine(0,-1); + _sg_imgui_draw_pass_panel(ctx, ctx->passes.sel_pass); +} + +SOKOL_API_IMPL void sg_imgui_draw_capture_content(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + _sg_imgui_draw_capture_list(ctx); + igSameLine(0,-1); + _sg_imgui_draw_capture_panel(ctx); +} + +SOKOL_API_IMPL void sg_imgui_draw_capabilities_content(sg_imgui_t* ctx) { + SOKOL_ASSERT(ctx && (ctx->init_tag == 0xABCDABCD)); + _SOKOL_UNUSED(ctx); + _sg_imgui_draw_caps_panel(); +} + +#endif /* SOKOL_GFX_IMGUI_IMPL */ diff --git a/source/engine/thirdparty/sokol/sokol_gl.h b/source/engine/thirdparty/sokol/sokol_gl.h new file mode 100644 index 0000000..090df21 --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_gl.h @@ -0,0 +1,4318 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_GL_IMPL) +#define SOKOL_GL_IMPL +#endif +#ifndef SOKOL_GL_INCLUDED +/* + sokol_gl.h -- OpenGL 1.x style rendering on top of sokol_gfx.h + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_GL_IMPL + before you include this file in *one* C or C++ file to create the + implementation. + + The following defines are used by the implementation to select the + platform-specific embedded shader code (these are the same defines as + used by sokol_gfx.h and sokol_app.h): + + SOKOL_GLCORE33 + SOKOL_GLES3 + SOKOL_D3D11 + SOKOL_METAL + SOKOL_WGPU + + ...optionally provide the following macros to override defaults: + + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_GL_API_DECL - public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_GL_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + SOKOL_UNREACHABLE() - a guard macro for unreachable code (default: assert(false)) + + If sokol_gl.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_GL_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + Include the following headers before including sokol_gl.h: + + sokol_gfx.h + + Matrix functions have been taken from MESA and Regal. + + FEATURE OVERVIEW: + ================= + sokol_gl.h implements a subset of the OpenGLES 1.x feature set useful for + when you just want to quickly render a bunch of colored triangles or + lines without having to mess with buffers and shaders. + + The current feature set is mostly useful for debug visualizations + and simple UI-style 2D rendering: + + What's implemented: + - vertex components: + - position (x, y, z) + - 2D texture coords (u, v) + - color (r, g, b, a) + - primitive types: + - triangle list and strip + - line list and strip + - quad list (TODO: quad strips) + - point list + - one texture layer (no multi-texturing) + - viewport and scissor-rect with selectable origin (top-left or bottom-left) + - all GL 1.x matrix stack functions, and additionally equivalent + functions for gluPerspective and gluLookat + + Notable GLES 1.x features that are *NOT* implemented: + - vertex lighting (this is the most likely GL feature that might be added later) + - vertex arrays (although providing whole chunks of vertex data at once + might be a useful feature for a later version) + - texture coordinate generation + - line width + - all pixel store functions + - no ALPHA_TEST + - no clear functions (clearing is handled by the sokol-gfx render pass) + - fog + + Notable differences to GL: + - No "enum soup" for render states etc, instead there's a + 'pipeline stack', this is similar to GL's matrix stack, + but for pipeline-state-objects. The pipeline object at + the top of the pipeline stack defines the active set of render states + - All angles are in radians, not degrees (note the sgl_rad() and + sgl_deg() conversion functions) + - No enable/disable state for scissor test, this is always enabled + + STEP BY STEP: + ============= + --- To initialize sokol-gl, call: + + sgl_setup(const sgl_desc_t* desc) + + NOTE that sgl_setup() must be called *after* initializing sokol-gfx + (via sg_setup). This is because sgl_setup() needs to create + sokol-gfx resource objects. + + If you're intending to render to the default pass, and also don't + want to tweak memory usage, and don't want any logging output you can + just keep sgl_desc_t zero-initialized: + + sgl_setup(&(sgl_desc_t*){ 0 }); + + In this case, sokol-gl will create internal sg_pipeline objects that + are compatible with the sokol-app default framebuffer. + + I would recommend to at least install a logging callback so that + you'll see any warnings and errors. The easiest way is through + sokol_log.h: + + #include "sokol_log.h" + + sgl_setup(&(sgl_desc_t){ + .logger.func = slog_func. + }); + + If you want to render into a framebuffer with different pixel-format + and MSAA attributes you need to provide the matching attributes in the + sgl_setup() call: + + sgl_setup(&(sgl_desc_t*){ + .color_format = SG_PIXELFORMAT_..., + .depth_format = SG_PIXELFORMAT_..., + .sample_count = ..., + }); + + To reduce memory usage, or if you need to create more then the default number of + contexts, pipelines, vertices or draw commands, set the following sgl_desc_t + members: + + .context_pool_size (default: 4) + .pipeline_pool_size (default: 64) + .max_vertices (default: 64k) + .max_commands (default: 16k) + + Finally you can change the face winding for front-facing triangles + and quads: + + .face_winding - default is SG_FACEWINDING_CCW + + The default winding for front faces is counter-clock-wise. This is + the same as OpenGL's default, but different from sokol-gfx. + + --- Optionally create additional context objects if you want to render into + multiple sokol-gfx render passes (or generally if you want to + use multiple independent sokol-gl "state buckets") + + sgl_context ctx = sgl_make_context(const sgl_context_desc_t* desc) + + For details on rendering with sokol-gl contexts, search below for + WORKING WITH CONTEXTS. + + --- Optionally create pipeline-state-objects if you need render state + that differs from sokol-gl's default state: + + sgl_pipeline pip = sgl_make_pipeline(const sg_pipeline_desc* desc) + + ...this creates a pipeline object that's compatible with the currently + active context, alternatively call: + + sgl_pipeline_pip = sgl_context_make_pipeline(sgl_context ctx, const sg_pipeline_desc* desc) + + ...to create a pipeline object that's compatible with an explicitly + provided context. + + The similarity with sokol_gfx.h's sg_pipeline type and sg_make_pipeline() + function is intended. sgl_make_pipeline() also takes a standard + sokol-gfx sg_pipeline_desc object to describe the render state, but + without: + - shader + - vertex layout + - color- and depth-pixel-formats + - primitive type (lines, triangles, ...) + - MSAA sample count + Those will be filled in by sgl_make_pipeline(). Note that each + call to sgl_make_pipeline() needs to create several sokol-gfx + pipeline objects (one for each primitive type). + + 'depth.write_enabled' will be forced to 'false' if the context this + pipeline object is intended for has its depth pixel format set to + SG_PIXELFORMAT_NONE (which means the framebuffer this context is used + with doesn't have a depth-stencil surface). + + --- if you need to destroy sgl_pipeline objects before sgl_shutdown(): + + sgl_destroy_pipeline(sgl_pipeline pip) + + --- After sgl_setup() you can call any of the sokol-gl functions anywhere + in a frame, *except* sgl_draw(). The 'vanilla' functions + will only change internal sokol-gl state, and not call any sokol-gfx + functions. + + --- Unlike OpenGL, sokol-gl has a function to reset internal state to + a known default. This is useful at the start of a sequence of + rendering operations: + + void sgl_defaults(void) + + This will set the following default state: + + - current texture coordinate to u=0.0f, v=0.0f + - current color to white (rgba all 1.0f) + - current point size to 1.0f + - unbind the current texture and texturing will be disabled + - *all* matrices will be set to identity (also the projection matrix) + - the default render state will be set by loading the 'default pipeline' + into the top of the pipeline stack + + The current matrix- and pipeline-stack-depths will not be changed by + sgl_defaults(). + + --- change the currently active renderstate through the + pipeline-stack functions, this works similar to the + traditional GL matrix stack: + + ...load the default pipeline state on the top of the pipeline stack: + + sgl_load_default_pipeline() + + ...load a specific pipeline on the top of the pipeline stack: + + sgl_load_pipeline(sgl_pipeline pip) + + ...push and pop the pipeline stack: + sgl_push_pipeline() + sgl_pop_pipeline() + + --- control texturing with: + + sgl_enable_texture() + sgl_disable_texture() + sgl_texture(sg_image img) + + --- set the current viewport and scissor rect with: + + sgl_viewport(int x, int y, int w, int h, bool origin_top_left) + sgl_scissor_rect(int x, int y, int w, int h, bool origin_top_left) + + ...or call these alternatives which take float arguments (this might allow + to avoid casting between float and integer in more strongly typed languages + when floating point pixel coordinates are used): + + sgl_viewportf(float x, float y, float w, float h, bool origin_top_left) + sgl_scissor_rectf(float x, float y, float w, float h, bool origin_top_left) + + ...these calls add a new command to the internal command queue, so + that the viewport or scissor rect are set at the right time relative + to other sokol-gl calls. + + --- adjust the transform matrices, matrix manipulation works just like + the OpenGL matrix stack: + + ...set the current matrix mode: + + sgl_matrix_mode_modelview() + sgl_matrix_mode_projection() + sgl_matrix_mode_texture() + + ...load the identity matrix into the current matrix: + + sgl_load_identity() + + ...translate, rotate and scale the current matrix: + + sgl_translate(float x, float y, float z) + sgl_rotate(float angle_rad, float x, float y, float z) + sgl_scale(float x, float y, float z) + + NOTE that all angles in sokol-gl are in radians, not in degree. + Convert between radians and degree with the helper functions: + + float sgl_rad(float deg) - degrees to radians + float sgl_deg(float rad) - radians to degrees + + ...directly load the current matrix from a float[16] array: + + sgl_load_matrix(const float m[16]) + sgl_load_transpose_matrix(const float m[16]) + + ...directly multiply the current matrix from a float[16] array: + + sgl_mult_matrix(const float m[16]) + sgl_mult_transpose_matrix(const float m[16]) + + The memory layout of those float[16] arrays is the same as in OpenGL. + + ...more matrix functions: + + sgl_frustum(float left, float right, float bottom, float top, float near, float far) + sgl_ortho(float left, float right, float bottom, float top, float near, float far) + sgl_perspective(float fov_y, float aspect, float near, float far) + sgl_lookat(float eye_x, float eye_y, float eye_z, float center_x, float center_y, float center_z, float up_x, float up_y, float up_z) + + These functions work the same as glFrustum(), glOrtho(), gluPerspective() + and gluLookAt(). + + ...and finally to push / pop the current matrix stack: + + sgl_push_matrix(void) + sgl_pop_matrix(void) + + Again, these work the same as glPushMatrix() and glPopMatrix(). + + --- perform primitive rendering: + + ...set the current texture coordinate and color 'registers' with or + point size with: + + sgl_t2f(float u, float v) - set current texture coordinate + sgl_c*(...) - set current color + sgl_point_size(float size) - set current point size + + There are several functions for setting the color (as float values, + unsigned byte values, packed as unsigned 32-bit integer, with + and without alpha). + + NOTE that these are the only functions that can be called both inside + sgl_begin_*() / sgl_end() and outside. + + Also NOTE that point size is currently hardwired to 1.0f if the D3D11 + backend is used. + + ...start a primitive vertex sequence with: + + sgl_begin_points() + sgl_begin_lines() + sgl_begin_line_strip() + sgl_begin_triangles() + sgl_begin_triangle_strip() + sgl_begin_quads() + + ...after sgl_begin_*() specify vertices: + + sgl_v*(...) + sgl_v*_t*(...) + sgl_v*_c*(...) + sgl_v*_t*_c*(...) + + These functions write a new vertex to sokol-gl's internal vertex buffer, + optionally with texture-coords and color. If the texture coordinate + and/or color is missing, it will be taken from the current texture-coord + and color 'register'. + + ...finally, after specifying vertices, call: + + sgl_end() + + This will record a new draw command in sokol-gl's internal command + list, or it will extend the previous draw command if no relevant + state has changed since the last sgl_begin/end pair. + + --- inside a sokol-gfx rendering pass, call the sgl_draw() function + to render the currently active context: + + sgl_draw() + + ...or alternatively call: + + sgl_context_draw(ctx) + + ...to render an explicitly provided context. + + This will render everything that has been recorded in the context since + the last call to sgl_draw() through sokol-gfx, and will 'rewind' the internal + vertex-, uniform- and command-buffers. + + --- each sokol-gl context tracks an internal error code, to query the + current error code for the currently active context call: + + sgl_error_t sgl_error() + + ...alternatively with an explicit context argument: + + sgl_error_t sgl_context_error(ctx); + + ...which can return the following error codes: + + SGL_NO_ERROR - all OK, no error occurred since last sgl_draw() + SGL_ERROR_VERTICES_FULL - internal vertex buffer is full (checked in sgl_end()) + SGL_ERROR_UNIFORMS_FULL - the internal uniforms buffer is full (checked in sgl_end()) + SGL_ERROR_COMMANDS_FULL - the internal command buffer is full (checked in sgl_end()) + SGL_ERROR_STACK_OVERFLOW - matrix- or pipeline-stack overflow + SGL_ERROR_STACK_UNDERFLOW - matrix- or pipeline-stack underflow + SGL_ERROR_NO_CONTEXT - the active context no longer exists + + ...if sokol-gl is in an error-state, sgl_draw() will skip any rendering, + and reset the error code to SGL_NO_ERROR. + + RENDER LAYERS + ============= + Render layers allow to split sokol-gl rendering into separate draw-command + groups which can then be rendered separately in a sokol-gfx draw pass. This + allows to mix/interleave sokol-gl rendering with other render operations. + + Layered rendering is controlled through two functions: + + sgl_layer(int layer_id) + sgl_draw_layer(int layer_id) + + (and the context-variant sgl_draw_layer(): sgl_context_draw_layer() + + The sgl_layer() function sets the 'current layer', any sokol-gl calls + which internally record draw commands will also store the current layer + in the draw command, and later in a sokol-gfx render pass, a call + to sgl_draw_layer() will only render the draw commands that have + a matching layer. + + The default layer is '0', this is active after sokol-gl setup, and + is also restored at the start of a new frame (but *not* by calling + sgl_defaults()). + + NOTE that calling sgl_draw() is equivalent with sgl_draw_layer(0) + (in general you should either use either use sgl_draw() or + sgl_draw_layer() in an application, but not both). + + WORKING WITH CONTEXTS: + ====================== + If you want to render to more than one sokol-gfx render pass you need to + work with additional sokol-gl context objects (one context object for + each offscreen rendering pass, in addition to the implicitly created + 'default context'. + + All sokol-gl state is tracked per context, and there is always a "current + context" (with the notable exception that the currently set context is + destroyed, more on that later). + + Using multiple contexts can also be useful if you only render in + a single pass, but want to maintain multiple independent "state buckets". + + To create new context object, call: + + sgl_context ctx = sgl_make_context(&(sgl_context_desc){ + .max_vertices = ..., // default: 64k + .max_commands = ..., // default: 16k + .color_format = ..., + .depth_format = ..., + .sample_count = ..., + }); + + The color_format, depth_format and sample_count items must be compatible + with the render pass the sgl_draw() or sgL_context_draw() function + will be called in. + + Creating a context does *not* make the context current. To do this, call: + + sgl_set_context(ctx); + + The currently active context will implicitely be used by most sokol-gl functions + which don't take an explicit context handle as argument. + + To switch back to the default context, pass the global constant SGL_DEFAULT_CONTEXT: + + sgl_set_context(SGL_DEFAULT_CONTEXT); + + ...or alternatively use the function sgl_default_context() instead of the + global constant: + + sgl_set_context(sgl_default_context()); + + To get the currently active context, call: + + sgl_context cur_ctx = sgl_get_context(); + + The following functions exist in two variants, one which use the currently + active context (set with sgl_set_context()), and another version which + takes an explicit context handle instead: + + sgl_make_pipeline() vs sgl_context_make_pipeline() + sgl_error() vs sgl_context_error(); + sgl_draw() vs sgl_context_draw(); + + Except for using the currently active context versus a provided context + handle, the two variants are exactlyidentical, e.g. the following + code sequences do the same thing: + + sgl_set_context(ctx); + sgl_pipeline pip = sgl_make_pipeline(...); + sgl_error_t err = sgl_error(); + sgl_draw(); + + vs + + sgl_pipeline pip = sgl_context_make_pipeline(ctx, ...); + sgl_error_t err = sgl_context_error(ctx); + sgl_context_draw(ctx); + + Destroying the currently active context is a 'soft error'. All following + calls which require a currently active context will silently fail, + and sgl_error() will return SGL_ERROR_NO_CONTEXT. + + UNDER THE HOOD: + =============== + sokol_gl.h works by recording vertex data and rendering commands into + memory buffers, and then drawing the recorded commands via sokol_gfx.h + + The only functions which call into sokol_gfx.h are: + - sgl_setup() + - sgl_shutdown() + - sgl_draw() (and variants) + + sgl_setup() must be called after initializing sokol-gfx. + sgl_shutdown() must be called before shutting down sokol-gfx. + sgl_draw() must be called once per frame inside a sokol-gfx render pass. + + All other sokol-gl function can be called anywhere in a frame, since + they just record data into memory buffers owned by sokol-gl. + + What happens in: + + sgl_setup(): + Unique resources shared by all contexts are created: + - a shader object (using embedded shader source or byte code) + - an 8x8 white default texture + The default context is created, which involves: + - 3 memory buffers are created, one for vertex data, + one for uniform data, and one for commands + - a dynamic vertex buffer is created + - the default sgl_pipeline object is created, which involves + creating 5 sg_pipeline objects + + One vertex is 24 bytes: + - float3 position + - float2 texture coords + - uint32_t color + + One uniform block is 128 bytes: + - mat4 model-view-projection matrix + - mat4 texture matrix + + One draw command is ca. 24 bytes for the actual + command code plus command arguments. + + Each sgl_end() consumes one command, and one uniform block + (only when the matrices have changed). + The required size for one sgl_begin/end pair is (at most): + + (152 + 24 * num_verts) bytes + + sgl_shutdown(): + - all sokol-gfx resources (buffer, shader, default-texture and + all pipeline objects) are destroyed + - the 3 memory buffers are freed + + sgl_draw() (and variants) + - copy all recorded vertex data into the dynamic sokol-gfx buffer + via a call to sg_update_buffer() + - for each recorded command: + - if the layer number stored in the command doesn't match + the layer that's to be rendered, skip to the next + command + - if it's a viewport command, call sg_apply_viewport() + - if it's a scissor-rect command, call sg_apply_scissor_rect() + - if it's a draw command: + - depending on what has changed since the last draw command, + call sg_apply_pipeline(), sg_apply_bindings() and + sg_apply_uniforms() + - finally call sg_draw() + + All other functions only modify the internally tracked state, add + data to the vertex, uniform and command buffers, or manipulate + the matrix stack. + + ON DRAW COMMAND MERGING + ======================= + Not every call to sgl_end() will automatically record a new draw command. + If possible, the previous draw command will simply be extended, + resulting in fewer actual draw calls later in sgl_draw(). + + A draw command will be merged with the previous command if "no relevant + state has changed" since the last sgl_end(), meaning: + + - no calls to sgl_viewport() and sgl_scissor_rect() + - the primitive type hasn't changed + - the primitive type isn't a 'strip type' (no line or triangle strip) + - the pipeline state object hasn't changed + - the current layer hasn't changed + - none of the matrices has changed + - none of the texture state has changed + + Merging a draw command simply means that the number of vertices + to render in the previous draw command will be incremented by the + number of vertices in the new draw command. + + MEMORY ALLOCATION OVERRIDE + ========================== + You can override the memory allocation functions at initialization time + like this: + + void* my_alloc(size_t size, void* user_data) { + return malloc(size); + } + + void my_free(void* ptr, void* user_data) { + free(ptr); + } + + ... + sgl_setup(&(sgl_desc_t){ + // ... + .allocator = { + .alloc = my_alloc, + .free = my_free, + .user_data = ...; + } + }); + ... + + If no overrides are provided, malloc and free will be used. + + + ERROR REPORTING AND LOGGING + =========================== + To get any logging information at all you need to provide a logging callback in the setup call, + the easiest way is to use sokol_log.h: + + #include "sokol_log.h" + + sgl_setup(&(sgl_desc_t){ + // ... + .logger.func = slog_func + }); + + To override logging with your own callback, first write a logging function like this: + + void my_log(const char* tag, // e.g. 'sgl' + uint32_t log_level, // 0=panic, 1=error, 2=warn, 3=info + uint32_t log_item_id, // SGL_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_gl.h + const char* filename_or_null, // source filename, may be nullptr in release mode + void* user_data) + { + ... + } + + ...and then setup sokol-gl like this: + + sgl_setup(&(sgl_desc_t){ + .logger = { + .func = my_log, + .user_data = my_user_data, + } + }); + + The provided logging function must be reentrant (e.g. be callable from + different threads). + + If you don't want to provide your own custom logger it is highly recommended to use + the standard logger in sokol_log.h instead, otherwise you won't see any warnings or + errors. + + + LICENSE + ======= + zlib/libpng license + + Copyright (c) 2018 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_GL_INCLUDED (1) +#include +#include +#include // size_t, offsetof + +#if !defined(SOKOL_GFX_INCLUDED) +#error "Please include sokol_gfx.h before sokol_gl.h" +#endif + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_GL_API_DECL) +#define SOKOL_GL_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_GL_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_GL_IMPL) +#define SOKOL_GL_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_GL_API_DECL __declspec(dllimport) +#else +#define SOKOL_GL_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + sgl_log_item_t + + Log items are defined via X-Macros, and expanded to an + enum 'sgl_log_item' - and in debug mode only - corresponding strings. + + Used as parameter in the logging callback. +*/ +#define _SGL_LOG_ITEMS \ + _SGL_LOGITEM_XMACRO(OK, "Ok") \ + _SGL_LOGITEM_XMACRO(MALLOC_FAILED, "memory allocation failed") \ + _SGL_LOGITEM_XMACRO(MAKE_PIPELINE_FAILED, "sg_make_pipeline() failed") \ + _SGL_LOGITEM_XMACRO(PIPELINE_POOL_EXHAUSTED, "pipeline pool exhausted (use sgl_desc_t.pipeline_pool_size to adjust)") \ + _SGL_LOGITEM_XMACRO(ADD_COMMIT_LISTENER_FAILED, "sg_add_commit_listener() failed") \ + _SGL_LOGITEM_XMACRO(CONTEXT_POOL_EXHAUSTED, "context pool exhausted (use sgl_desc_t.context_pool_size to adjust)") \ + _SGL_LOGITEM_XMACRO(CANNOT_DESTROY_DEFAULT_CONTEXT, "cannot destroy default context") \ + +#define _SGL_LOGITEM_XMACRO(item,msg) SGL_LOGITEM_##item, +typedef enum sgl_log_item_t { + _SGL_LOG_ITEMS +} sgl_log_item_t; +#undef _SGL_LOGITEM_XMACRO + +/* + sgl_logger_t + + Used in sgl_desc_t to provide a custom logging and error reporting + callback to sokol-gl. +*/ +typedef struct sgl_logger_t { + void (*func)( + const char* tag, // always "sgl" + uint32_t log_level, // 0=panic, 1=error, 2=warning, 3=info + uint32_t log_item_id, // SGL_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_gl.h + const char* filename_or_null, // source filename, may be nullptr in release mode + void* user_data); + void* user_data; +} sgl_logger_t; + +/* sokol_gl pipeline handle (created with sgl_make_pipeline()) */ +typedef struct sgl_pipeline { uint32_t id; } sgl_pipeline; + +/* a context handle (created with sgl_make_context()) */ +typedef struct sgl_context { uint32_t id; } sgl_context; + +/* + sgl_error_t + + Errors are reset each frame after calling sgl_draw(), + get the last error code with sgl_error() +*/ +typedef enum sgl_error_t { + SGL_NO_ERROR = 0, + SGL_ERROR_VERTICES_FULL, + SGL_ERROR_UNIFORMS_FULL, + SGL_ERROR_COMMANDS_FULL, + SGL_ERROR_STACK_OVERFLOW, + SGL_ERROR_STACK_UNDERFLOW, + SGL_ERROR_NO_CONTEXT, +} sgl_error_t; + +/* + sgl_context_desc_t + + Describes the initialization parameters of a rendering context. + Creating additional contexts is useful if you want to render + in separate sokol-gfx passes. +*/ +typedef struct sgl_context_desc_t { + int max_vertices; // default: 64k + int max_commands; // default: 16k + sg_pixel_format color_format; + sg_pixel_format depth_format; + int sample_count; +} sgl_context_desc_t; + +/* + sgl_allocator_t + + Used in sgl_desc_t to provide custom memory-alloc and -free functions + to sokol_gl.h. If memory management should be overridden, both the + alloc and free function must be provided (e.g. it's not valid to + override one function but not the other). +*/ +typedef struct sgl_allocator_t { + void* (*alloc)(size_t size, void* user_data); + void (*free)(void* ptr, void* user_data); + void* user_data; +} sgl_allocator_t; + +typedef struct sgl_desc_t { + int max_vertices; // default: 64k + int max_commands; // default: 16k + int context_pool_size; // max number of contexts (including default context), default: 4 + int pipeline_pool_size; // size of internal pipeline pool, default: 64 + sg_pixel_format color_format; + sg_pixel_format depth_format; + int sample_count; + sg_face_winding face_winding; // default: SG_FACEWINDING_CCW + sgl_allocator_t allocator; // optional memory allocation overrides (default: malloc/free) + sgl_logger_t logger; // optional log function override (default: NO LOGGING) +} sgl_desc_t; + +/* the default context handle */ +static const sgl_context SGL_DEFAULT_CONTEXT = { 0x00010001 }; + +/* setup/shutdown/misc */ +SOKOL_GL_API_DECL void sgl_setup(const sgl_desc_t* desc); +SOKOL_GL_API_DECL void sgl_shutdown(void); +SOKOL_GL_API_DECL float sgl_rad(float deg); +SOKOL_GL_API_DECL float sgl_deg(float rad); +SOKOL_GL_API_DECL sgl_error_t sgl_error(void); +SOKOL_GL_API_DECL sgl_error_t sgl_context_error(sgl_context ctx); + +/* context functions */ +SOKOL_GL_API_DECL sgl_context sgl_make_context(const sgl_context_desc_t* desc); +SOKOL_GL_API_DECL void sgl_destroy_context(sgl_context ctx); +SOKOL_GL_API_DECL void sgl_set_context(sgl_context ctx); +SOKOL_GL_API_DECL sgl_context sgl_get_context(void); +SOKOL_GL_API_DECL sgl_context sgl_default_context(void); + +/* draw recorded commands (call inside a sokol-gfx render pass) */ +SOKOL_GL_API_DECL void sgl_draw(); +SOKOL_GL_API_DECL void sgl_context_draw(sgl_context ctx); +SOKOL_GL_API_DECL void sgl_draw_layer(int layer_id); +SOKOL_GL_API_DECL void sgl_context_draw_layer(sgl_context ctx, int layer_id); + +/* create and destroy pipeline objects */ +SOKOL_GL_API_DECL sgl_pipeline sgl_make_pipeline(const sg_pipeline_desc* desc); +SOKOL_GL_API_DECL sgl_pipeline sgl_context_make_pipeline(sgl_context ctx, const sg_pipeline_desc* desc); +SOKOL_GL_API_DECL void sgl_destroy_pipeline(sgl_pipeline pip); + +/* render state functions */ +SOKOL_GL_API_DECL void sgl_defaults(void); +SOKOL_GL_API_DECL void sgl_viewport(int x, int y, int w, int h, bool origin_top_left); +SOKOL_GL_API_DECL void sgl_viewportf(float x, float y, float w, float h, bool origin_top_left); +SOKOL_GL_API_DECL void sgl_scissor_rect(int x, int y, int w, int h, bool origin_top_left); +SOKOL_GL_API_DECL void sgl_scissor_rectf(float x, float y, float w, float h, bool origin_top_left); +SOKOL_GL_API_DECL void sgl_enable_texture(void); +SOKOL_GL_API_DECL void sgl_disable_texture(void); +SOKOL_GL_API_DECL void sgl_texture(sg_image img); +SOKOL_GL_API_DECL void sgl_layer(int layer_id); + +/* pipeline stack functions */ +SOKOL_GL_API_DECL void sgl_load_default_pipeline(void); +SOKOL_GL_API_DECL void sgl_load_pipeline(sgl_pipeline pip); +SOKOL_GL_API_DECL void sgl_push_pipeline(void); +SOKOL_GL_API_DECL void sgl_pop_pipeline(void); + +/* matrix stack functions */ +SOKOL_GL_API_DECL void sgl_matrix_mode_modelview(void); +SOKOL_GL_API_DECL void sgl_matrix_mode_projection(void); +SOKOL_GL_API_DECL void sgl_matrix_mode_texture(void); +SOKOL_GL_API_DECL void sgl_load_identity(void); +SOKOL_GL_API_DECL void sgl_load_matrix(const float m[16]); +SOKOL_GL_API_DECL void sgl_load_transpose_matrix(const float m[16]); +SOKOL_GL_API_DECL void sgl_mult_matrix(const float m[16]); +SOKOL_GL_API_DECL void sgl_mult_transpose_matrix(const float m[16]); +SOKOL_GL_API_DECL void sgl_rotate(float angle_rad, float x, float y, float z); +SOKOL_GL_API_DECL void sgl_scale(float x, float y, float z); +SOKOL_GL_API_DECL void sgl_translate(float x, float y, float z); +SOKOL_GL_API_DECL void sgl_frustum(float l, float r, float b, float t, float n, float f); +SOKOL_GL_API_DECL void sgl_ortho(float l, float r, float b, float t, float n, float f); +SOKOL_GL_API_DECL void sgl_perspective(float fov_y, float aspect, float z_near, float z_far); +SOKOL_GL_API_DECL void sgl_lookat(float eye_x, float eye_y, float eye_z, float center_x, float center_y, float center_z, float up_x, float up_y, float up_z); +SOKOL_GL_API_DECL void sgl_push_matrix(void); +SOKOL_GL_API_DECL void sgl_pop_matrix(void); + +/* these functions only set the internal 'current texcoord / color / point size' (valid inside or outside begin/end) */ +SOKOL_GL_API_DECL void sgl_t2f(float u, float v); +SOKOL_GL_API_DECL void sgl_c3f(float r, float g, float b); +SOKOL_GL_API_DECL void sgl_c4f(float r, float g, float b, float a); +SOKOL_GL_API_DECL void sgl_c3b(uint8_t r, uint8_t g, uint8_t b); +SOKOL_GL_API_DECL void sgl_c4b(uint8_t r, uint8_t g, uint8_t b, uint8_t a); +SOKOL_GL_API_DECL void sgl_c1i(uint32_t rgba); +SOKOL_GL_API_DECL void sgl_point_size(float s); + +/* define primitives, each begin/end is one draw command */ +SOKOL_GL_API_DECL void sgl_begin_points(void); +SOKOL_GL_API_DECL void sgl_begin_lines(void); +SOKOL_GL_API_DECL void sgl_begin_line_strip(void); +SOKOL_GL_API_DECL void sgl_begin_triangles(void); +SOKOL_GL_API_DECL void sgl_begin_triangle_strip(void); +SOKOL_GL_API_DECL void sgl_begin_quads(void); +SOKOL_GL_API_DECL void sgl_v2f(float x, float y); +SOKOL_GL_API_DECL void sgl_v3f(float x, float y, float z); +SOKOL_GL_API_DECL void sgl_v2f_t2f(float x, float y, float u, float v); +SOKOL_GL_API_DECL void sgl_v3f_t2f(float x, float y, float z, float u, float v); +SOKOL_GL_API_DECL void sgl_v2f_c3f(float x, float y, float r, float g, float b); +SOKOL_GL_API_DECL void sgl_v2f_c3b(float x, float y, uint8_t r, uint8_t g, uint8_t b); +SOKOL_GL_API_DECL void sgl_v2f_c4f(float x, float y, float r, float g, float b, float a); +SOKOL_GL_API_DECL void sgl_v2f_c4b(float x, float y, uint8_t r, uint8_t g, uint8_t b, uint8_t a); +SOKOL_GL_API_DECL void sgl_v2f_c1i(float x, float y, uint32_t rgba); +SOKOL_GL_API_DECL void sgl_v3f_c3f(float x, float y, float z, float r, float g, float b); +SOKOL_GL_API_DECL void sgl_v3f_c3b(float x, float y, float z, uint8_t r, uint8_t g, uint8_t b); +SOKOL_GL_API_DECL void sgl_v3f_c4f(float x, float y, float z, float r, float g, float b, float a); +SOKOL_GL_API_DECL void sgl_v3f_c4b(float x, float y, float z, uint8_t r, uint8_t g, uint8_t b, uint8_t a); +SOKOL_GL_API_DECL void sgl_v3f_c1i(float x, float y, float z, uint32_t rgba); +SOKOL_GL_API_DECL void sgl_v2f_t2f_c3f(float x, float y, float u, float v, float r, float g, float b); +SOKOL_GL_API_DECL void sgl_v2f_t2f_c3b(float x, float y, float u, float v, uint8_t r, uint8_t g, uint8_t b); +SOKOL_GL_API_DECL void sgl_v2f_t2f_c4f(float x, float y, float u, float v, float r, float g, float b, float a); +SOKOL_GL_API_DECL void sgl_v2f_t2f_c4b(float x, float y, float u, float v, uint8_t r, uint8_t g, uint8_t b, uint8_t a); +SOKOL_GL_API_DECL void sgl_v2f_t2f_c1i(float x, float y, float u, float v, uint32_t rgba); +SOKOL_GL_API_DECL void sgl_v3f_t2f_c3f(float x, float y, float z, float u, float v, float r, float g, float b); +SOKOL_GL_API_DECL void sgl_v3f_t2f_c3b(float x, float y, float z, float u, float v, uint8_t r, uint8_t g, uint8_t b); +SOKOL_GL_API_DECL void sgl_v3f_t2f_c4f(float x, float y, float z, float u, float v, float r, float g, float b, float a); +SOKOL_GL_API_DECL void sgl_v3f_t2f_c4b(float x, float y, float z, float u, float v, uint8_t r, uint8_t g, uint8_t b, uint8_t a); +SOKOL_GL_API_DECL void sgl_v3f_t2f_c1i(float x, float y, float z, float u, float v, uint32_t rgba); +SOKOL_GL_API_DECL void sgl_end(void); + +#ifdef __cplusplus +} /* extern "C" */ + +/* reference-based equivalents for C++ */ +inline void sgl_setup(const sgl_desc_t& desc) { return sgl_setup(&desc); } +inline sgl_context sgl_make_context(const sgl_context_desc_t& desc) { return sgl_make_context(&desc); } +inline sgl_pipeline sgl_make_pipeline(const sg_pipeline_desc& desc) { return sgl_make_pipeline(&desc); } +inline sgl_pipeline sgl_context_make_pipeline(sgl_context ctx, const sg_pipeline_desc& desc) { return sgl_context_make_pipeline(ctx, &desc); } +#endif +#endif /* SOKOL_GL_INCLUDED */ + +// ██ ███ ███ ██████ ██ ███████ ███ ███ ███████ ███ ██ ████████ █████ ████████ ██ ██████ ███ ██ +// ██ ████ ████ ██ ██ ██ ██ ████ ████ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ +// ██ ██ ████ ██ ██████ ██ █████ ██ ████ ██ █████ ██ ██ ██ ██ ███████ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ███████ ███████ ██ ██ ███████ ██ ████ ██ ██ ██ ██ ██ ██████ ██ ████ +// +// >>implementation +#ifdef SOKOL_GL_IMPL +#define SOKOL_GL_IMPL_INCLUDED (1) + +#if defined(SOKOL_MALLOC) || defined(SOKOL_CALLOC) || defined(SOKOL_FREE) +#error "SOKOL_MALLOC/CALLOC/FREE macros are no longer supported, please use sgl_desc_t.allocator to override memory allocation functions" +#endif + +#include // malloc/free +#include // memset +#include // M_PI, sqrtf, sinf, cosf + +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327 +#endif + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_DEBUG + #ifndef NDEBUG + #define SOKOL_DEBUG + #endif +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif + +#define _sgl_def(val, def) (((val) == 0) ? (def) : (val)) +#define _SGL_INIT_COOKIE (0xABCDABCD) + +/* + Embedded source code compiled with: + + sokol-shdc -i sgl.glsl -o sgl.h -l glsl330:glsl300es:hlsl4:metal_macos:metal_ios:metal_sim:wgpu -b + + (not that for Metal and D3D11 byte code, sokol-shdc must be run + on macOS and Windows) + + @vs vs + uniform vs_params { + mat4 mvp; + mat4 tm; + }; + in vec4 position; + in vec2 texcoord0; + in vec4 color0; + in float psize; + out vec4 uv; + out vec4 color; + void main() { + gl_Position = mvp * position; + gl_PointSize = psize; + uv = tm * vec4(texcoord0, 0.0, 1.0); + color = color0; + } + @end + + @fs fs + uniform sampler2D tex; + in vec4 uv; + in vec4 color; + out vec4 frag_color; + void main() { + frag_color = texture(tex, uv.xy) * color; + } + @end + + @program sgl vs fs +*/ + +#if defined(SOKOL_GLCORE33) +static const char _sgl_vs_source_glsl330[478] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e, + 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61, + 0x72,0x61,0x6d,0x73,0x5b,0x38,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, + 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e, + 0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a, + 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, + 0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x73, + 0x69,0x7a,0x65,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x75,0x76, + 0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, + 0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74, + 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65, + 0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, + 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69, + 0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x0a, + 0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20, + 0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, + 0x6d,0x61,0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30, + 0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c, + 0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x76, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x70, + 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f, + 0x50,0x6f,0x69,0x6e,0x74,0x53,0x69,0x7a,0x65,0x20,0x3d,0x20,0x70,0x73,0x69,0x7a, + 0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34, + 0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x2c,0x20,0x76, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d,0x2c,0x20,0x76,0x73,0x5f, + 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61, + 0x72,0x61,0x6d,0x73,0x5b,0x37,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28, + 0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, + 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20, + 0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +static const char _sgl_fs_source_glsl330[172] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e, + 0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20, + 0x74,0x65,0x78,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, + 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76, + 0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a, + 0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x75,0x76,0x3b,0x0a,0x69,0x6e,0x20,0x76, + 0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64, + 0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, + 0x72,0x65,0x28,0x74,0x65,0x78,0x2c,0x20,0x75,0x76,0x2e,0x78,0x79,0x29,0x20,0x2a, + 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_GLES3) +static const char _sgl_vs_source_glsl300es[481] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, + 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73, + 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x38,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f, + 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29, + 0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, + 0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x70,0x73,0x69,0x7a,0x65,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34, + 0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, + 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63, + 0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74, + 0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79, + 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32, + 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30, + 0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, + 0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, + 0x73,0x5b,0x30,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b, + 0x31,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d, + 0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20, + 0x2a,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x67,0x6c,0x5f,0x50,0x6f,0x69,0x6e,0x74,0x53,0x69,0x7a,0x65,0x20,0x3d,0x20,0x70, + 0x73,0x69,0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x6d, + 0x61,0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d, + 0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x35,0x5d,0x2c,0x20, + 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x36,0x5d,0x2c,0x20,0x76,0x73, + 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x37,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65, + 0x63,0x34,0x28,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x2c,0x20,0x30,0x2e, + 0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c, + 0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x7d,0x0a,0x0a, + 0x00, +}; +static const char _sgl_fs_source_glsl300es[245] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, + 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, + 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, + 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, + 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d, + 0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x3b,0x0a,0x0a,0x6c,0x61,0x79, + 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, + 0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34, + 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20, + 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x75,0x76,0x3b,0x0a,0x69, + 0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c, + 0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29, + 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, + 0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x2c, + 0x20,0x75,0x76,0x2e,0x78,0x79,0x29,0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b, + 0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_METAL) +static const uint8_t _sgl_vs_bytecode_metal_macos[3321] = { + 0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x06,0x00,0x00,0x81,0x0a,0x00,0x0b,0x00, + 0xf9,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0x80,0x27,0x7a,0x67,0xc7,0xfc,0xfd, + 0xe3,0x47,0x44,0x1b,0xf3,0x40,0x18,0x72,0x5a,0xd3,0x6e,0xad,0xec,0x58,0x70,0xc5, + 0x20,0xfe,0x98,0x5e,0x82,0x7f,0xed,0xf9,0x89,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x40,0x00,0x00, + 0x00,0x56,0x41,0x54,0x54,0x2a,0x00,0x04,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x00,0x00,0x80,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x02,0x80,0x70,0x73,0x69,0x7a,0x65,0x00,0x03, + 0x80,0x56,0x41,0x54,0x59,0x06,0x00,0x04,0x00,0x06,0x04,0x06,0x03,0x45,0x4e,0x44, + 0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17,0x0b,0x00,0x00,0x00, + 0x00,0x14,0x00,0x00,0x00,0xc0,0x0b,0x00,0x00,0xff,0xff,0xff,0xff,0x42,0x43,0xc0, + 0xde,0x21,0x0c,0x00,0x00,0xed,0x02,0x00,0x00,0x0b,0x82,0x20,0x00,0x02,0x00,0x00, + 0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04,0x49,0x06,0x10,0x32, + 0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b,0x62,0x80,0x14,0x45, + 0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18,0x49,0x0a,0x32,0x44, + 0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21,0x72,0x24,0x07,0xc8, + 0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00,0x00,0x51,0x18,0x00, + 0x00,0x81,0x00,0x00,0x00,0x1b,0xc8,0x25,0xf8,0xff,0xff,0xff,0xff,0x01,0x90,0x80, + 0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87,0x71,0xa0,0x07,0x76,0xc8,0x87,0x36, + 0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72,0x20,0x87,0x36,0x20,0x87,0x74,0xb0, + 0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88,0x07,0x79,0xa0,0x87,0x36,0x30,0x07, + 0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1, + 0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xda,0x80,0x1e, + 0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c,0xd8,0x81,0x1d,0xe6,0x01,0x30,0x87, + 0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87,0x72,0x98,0x87,0x79,0x68,0x03,0x78, + 0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72,0x68,0x03,0x73,0x80,0x87,0x76,0x08, + 0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda, + 0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda,0x00,0x1e,0xde,0x21,0x1d,0xdc,0x81, + 0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21,0x1d,0xda,0x01,0xa0,0x07,0x79,0xa8, + 0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30,0x07,0x79,0x08,0x87,0x76,0x28,0x87, + 0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87,0x72,0x90,0x87,0x36,0x28,0x07,0x76, + 0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77,0x68,0x03,0x76,0x28,0x87,0x70,0x30, + 0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70,0x07,0x73,0x98,0x87,0x36,0x30,0x07, + 0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01, + 0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1,0x1d,0xe0,0xa1,0x0d,0xe8,0x21,0x1c, + 0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08, + 0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36, + 0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d, + 0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d,0xca,0x81,0x1c,0xda,0x40,0x1f,0xca, + 0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0,0xa1,0x0d,0xda,0x21,0x1c,0xe8,0x01, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x7a,0x90, + 0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38,0x87,0x36,0x68,0x87,0x70,0xa0,0x07, + 0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0x62,0x1e,0xe8,0x21,0x1c,0xc6,0x61, + 0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1,0x1c,0xc6,0x81,0x1e,0xde,0x41,0x1e, + 0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x0d,0xe6,0x21,0x1d,0xf4, + 0xa1,0x1c,0x00,0x3c,0x00,0x88,0x7a,0x70,0x87,0x79,0x08,0x07,0x73,0x28,0x87,0x36, + 0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e, + 0xca,0x01,0x20,0xea,0x61,0x1e,0xca,0xa1,0x0d,0xe6,0xe1,0x1d,0xcc,0x81,0x1e,0xda, + 0xc0,0x1c,0xd8,0xe1,0x1d,0xc2,0x81,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72, + 0x00,0x36,0x18,0x42,0x01,0x2c,0x40,0x05,0x00,0x49,0x18,0x00,0x00,0x01,0x00,0x00, + 0x00,0x13,0x84,0x40,0x00,0x89,0x20,0x00,0x00,0x20,0x00,0x00,0x00,0x32,0x22,0x48, + 0x09,0x20,0x64,0x85,0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90, + 0x14,0x12,0x4c,0x8a,0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x44,0x33,0x00,0xc3,0x08,0x04, + 0x60,0x89,0x10,0x02,0x18,0x46,0x10,0x80,0x24,0x08,0x33,0x51,0xf3,0x40,0x0f,0xf2, + 0x50,0x0f,0xe3,0x40,0x0f,0x6e,0xd0,0x0e,0xe5,0x40,0x0f,0xe1,0xc0,0x0e,0x7a,0xa0, + 0x07,0xed,0x10,0x0e,0xf4,0x20,0x0f,0xe9,0x80,0x0f,0x28,0x20,0x07,0x49,0x53,0x44, + 0x09,0x93,0x5f,0x49,0xff,0x03,0x44,0x00,0x23,0x21,0xa1,0x94,0x41,0x04,0x43,0x28, + 0x86,0x08,0x23,0x80,0x43,0x68,0x20,0x60,0x8e,0x00,0x0c,0x52,0x60,0xcd,0x11,0x80, + 0xc2,0x20,0x42,0x20,0x0c,0x23,0x10,0xcb,0x08,0x00,0x00,0x00,0x00,0x13,0xb2,0x70, + 0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68, + 0x83,0x76,0x08,0x87,0x71,0x78,0x87,0x79,0xc0,0x87,0x38,0x80,0x03,0x37,0x88,0x83, + 0x38,0x70,0x03,0x38,0xd8,0x70,0x1b,0xe5,0xd0,0x06,0xf0,0xa0,0x07,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x90,0x0e,0x71,0xa0,0x07,0x78, + 0xa0,0x07,0x78,0xd0,0x06,0xe9,0x80,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90, + 0x0e,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x90,0x0e, + 0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x90,0x0e,0x76, + 0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0e,0x73,0x20, + 0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0e,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x71,0x60,0x07,0x7a, + 0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x60,0x0f,0x72,0x40,0x07,0x7a,0x30, + 0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x73,0x20,0x07,0x7a,0x30,0x07, + 0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x74,0x80,0x07,0x7a,0x60,0x07,0x74, + 0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0, + 0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x79,0x60,0x07,0x7a,0x10,0x07,0x72,0x80,0x07, + 0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x20,0x07,0x78,0xa0,0x07,0x71, + 0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x79,0x20, + 0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f, + 0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76, + 0xd0,0x06,0xf6,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07,0x7a,0x50, + 0x07,0x71,0x20,0x07,0x6d,0x60,0x0f,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07, + 0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x6d,0xe0,0x0e,0x78, + 0xa0,0x07,0x71,0x60,0x07,0x7a,0x30,0x07,0x72,0x30,0x84,0x49,0x00,0x00,0x08,0x00, + 0x00,0x00,0x00,0x00,0xc8,0x02,0x01,0x00,0x00,0x0b,0x00,0x00,0x00,0x32,0x1e,0x98, + 0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0x5a,0x25,0x30,0x02, + 0x50,0x04,0x05,0x18,0x50,0x08,0x65,0x50,0x80,0x02,0x05,0x51,0x20,0xd4,0x46,0x00, + 0x88,0x8d,0x25,0x30,0x00,0x00,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0x01,0x01,0x00, + 0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37, + 0xb7,0x21,0xc6,0x32,0x28,0x00,0xb3,0x50,0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b, + 0xd3,0x2b,0x1b,0x62,0x2c,0x81,0x22,0x2c,0x05,0xe3,0x20,0x08,0x0e,0x8e,0xad,0x0c, + 0xa4,0xad,0x8c,0x2e,0x8c,0x0d,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x64,0x26, + 0x06,0x06,0x26,0xc6,0x65,0x66,0x46,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac, + 0xac,0x65,0x26,0x06,0x06,0x26,0xc6,0x65,0x66,0x46,0x26,0x65,0x88,0xa0,0x10,0x43, + 0x8c,0x25,0x58,0x90,0x45,0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x51,0x8e,0x25, + 0x58,0x82,0x45,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6, + 0x42,0x56,0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36, + 0x44,0x50,0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e, + 0x66,0x61,0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65, + 0x43,0x04,0x65,0x61,0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95, + 0xb9,0x98,0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1, + 0x8d,0xa1,0x7d,0x91,0xa5,0xcd,0x85,0x89,0xb1,0x95,0x0d,0x11,0x94,0x86,0x51,0x58, + 0x9a,0x9c,0x8b,0x5d,0x99,0x1c,0x5d,0x19,0xde,0xd7,0x5b,0x1d,0x1d,0x5c,0x1d,0x1d, + 0x97,0xba,0xb9,0x32,0x39,0x14,0xb6,0xb7,0x31,0x37,0x98,0x14,0x46,0x61,0x69,0x72, + 0x2e,0x61,0x72,0x67,0x5f,0x74,0x79,0x70,0x65,0x5f,0x6e,0x61,0x6d,0x65,0x34,0xcc, + 0xd8,0xde,0xc2,0xe8,0x68,0xc8,0x84,0xa5,0xc9,0xb9,0x84,0xc9,0x9d,0x7d,0xb9,0x85, + 0xb5,0x95,0x51,0xa8,0xb3,0x1b,0xc2,0x28,0x8f,0x02,0x29,0x91,0x22,0x29,0x93,0x42, + 0x71,0xa9,0x9b,0x2b,0x93,0x43,0x61,0x7b,0x1b,0x73,0x8b,0x49,0x61,0x31,0xf6,0xc6, + 0xf6,0x26,0x37,0x84,0x51,0x1e,0xc5,0x52,0x22,0x45,0x52,0x26,0xe5,0x22,0x13,0x96, + 0x26,0xe7,0x02,0xf7,0x36,0x97,0x46,0x97,0xf6,0xe6,0xc6,0xe5,0x8c,0xed,0x0b,0xea, + 0x6d,0x2e,0x8d,0x2e,0xed,0xcd,0x6d,0x88,0xa2,0x64,0x4a,0xa4,0x48,0xca,0xa4,0x68, + 0x74,0xc2,0xd2,0xe4,0x5c,0xe0,0xde,0xd2,0xdc,0xe8,0xbe,0xe6,0xd2,0xf4,0xca,0x58, + 0x98,0xb1,0xbd,0x85,0xd1,0x91,0x39,0x63,0xfb,0x82,0x7a,0x4b,0x73,0xa3,0x9b,0x4a, + 0xd3,0x2b,0x1b,0xa2,0x28,0x9c,0x12,0x29,0x9d,0x32,0x29,0xde,0x10,0x44,0xa9,0x14, + 0x4c,0xd9,0x94,0x8f,0x50,0x58,0x9a,0x9c,0x8b,0x5d,0x99,0x1c,0x5d,0x19,0xde,0x57, + 0x9a,0x1b,0x5c,0x1d,0x1d,0xa5,0xb0,0x34,0x39,0x17,0xb6,0xb7,0xb1,0x30,0xba,0xb4, + 0x37,0xb7,0xaf,0x34,0x37,0xb2,0x32,0x3c,0x7a,0x67,0x65,0x6e,0x65,0x72,0x61,0x74, + 0x65,0x64,0x28,0x5f,0x5f,0x61,0x69,0x72,0x5f,0x70,0x6c,0x61,0x63,0x65,0x68,0x6f, + 0x6c,0x64,0x65,0x72,0x5f,0x5f,0x29,0x44,0xe0,0xde,0xe6,0xd2,0xe8,0xd2,0xde,0xdc, + 0x86,0x50,0x8b,0xa0,0x84,0x81,0x22,0x06,0x8b,0xb0,0x04,0xca,0x18,0x28,0x91,0x22, + 0x29,0x93,0x42,0x06,0x34,0xcc,0xd8,0xde,0xc2,0xe8,0x64,0x98,0xd0,0x95,0xe1,0x8d, + 0xbd,0xbd,0xc9,0x91,0xc1,0x0c,0xa1,0x96,0x40,0x09,0x03,0x45,0x0c,0x96,0x60,0x09, + 0x94,0x31,0x50,0x22,0xc5,0x0c,0x94,0x49,0x39,0x03,0x1a,0x63,0x6f,0x6c,0x6f,0x72, + 0x30,0x43,0xa8,0x65,0x50,0xc2,0x40,0x11,0x83,0x65,0x58,0x02,0x65,0x0c,0x94,0x48, + 0x91,0x94,0x49,0x49,0x03,0x16,0x70,0x73,0x69,0x7a,0x65,0x43,0xa8,0xc5,0x50,0xc2, + 0x40,0x11,0x83,0xc5,0x58,0x02,0x65,0x0c,0x94,0x48,0xe9,0x94,0x49,0x59,0x03,0x2a, + 0x61,0x69,0x72,0x2e,0x62,0x75,0x66,0x66,0x65,0x72,0x7c,0xc2,0xd2,0xe4,0x5c,0xc4, + 0xea,0xcc,0xcc,0xca,0xe4,0xbe,0xe6,0xd2,0xf4,0xca,0x88,0x84,0xa5,0xc9,0xb9,0xc8, + 0x95,0x85,0x91,0x91,0x0a,0x4b,0x93,0x73,0x99,0xa3,0x93,0xab,0x1b,0xa3,0xfb,0xa2, + 0xcb,0x83,0x2b,0xfb,0x4a,0x73,0x33,0x7b,0x23,0x62,0xc6,0xf6,0x16,0x46,0x47,0x83, + 0x47,0xc3,0xa1,0xcd,0x0e,0x8e,0x02,0x5d,0xdb,0x10,0x6a,0x11,0x16,0x62,0x11,0x94, + 0x38,0x50,0xe4,0x60,0x21,0x16,0x62,0x11,0x94,0x38,0x50,0xe6,0x80,0x51,0x58,0x9a, + 0x9c,0x4b,0x98,0xdc,0xd9,0x17,0x5d,0x1e,0x5c,0xd9,0xd7,0x5c,0x9a,0x5e,0x19,0xaf, + 0xb0,0x34,0x39,0x97,0x30,0xb9,0xb3,0x2f,0xba,0x3c,0xb8,0xb2,0xaf,0x30,0xb6,0xb4, + 0x33,0xb7,0xaf,0xb9,0x34,0xbd,0x32,0x26,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, + 0x73,0x1c,0xbe,0x64,0x62,0x86,0x90,0xc1,0x52,0x28,0x6d,0xa0,0xb8,0xc1,0x72,0x28, + 0x62,0xb0,0x08,0x4b,0xa0,0xbc,0x81,0x02,0x07,0x0a,0x1d,0x28,0x75,0xb0,0x1c,0x8a, + 0x1d,0x2c,0x89,0x12,0x29,0x77,0xa0,0x4c,0x0a,0x1e,0x0c,0x51,0x94,0x32,0x50,0xd0, + 0x40,0x51,0x03,0x85,0x0d,0x94,0x3c,0x18,0x62,0x24,0x80,0x02,0x06,0x8a,0x1e,0xf0, + 0x79,0x6b,0x73,0x4b,0x83,0x7b,0xa3,0x2b,0x73,0xa3,0x03,0x19,0x43,0x0b,0x93,0xe3, + 0x33,0x95,0xd6,0x06,0xc7,0x56,0x06,0x32,0xb4,0xb2,0x02,0x42,0x25,0x14,0x14,0x34, + 0x44,0x50,0xfa,0x60,0x88,0xa1,0xf0,0x81,0xe2,0x07,0x8d,0x32,0xc4,0x50,0xfe,0x40, + 0xf9,0x83,0x46,0x19,0x11,0xb1,0x03,0x3b,0xd8,0x43,0x3b,0xb8,0x41,0x3b,0xbc,0x03, + 0x39,0xd4,0x03,0x3b,0x94,0x83,0x1b,0x98,0x03,0x3b,0x84,0xc3,0x39,0xcc,0xc3,0x14, + 0x21,0x18,0x46,0x28,0xec,0xc0,0x0e,0xf6,0xd0,0x0e,0x6e,0x90,0x0e,0xe4,0x50,0x0e, + 0xee,0x40,0x0f,0x53,0x82,0x62,0xc4,0x12,0x0e,0xe9,0x20,0x0f,0x6e,0x60,0x0f,0xe5, + 0x20,0x0f,0xf3,0x90,0x0e,0xef,0xe0,0x0e,0x53,0x02,0x63,0x04,0x15,0x0e,0xe9,0x20, + 0x0f,0x6e,0xc0,0x0e,0xe1,0xe0,0x0e,0xe7,0x50,0x0f,0xe1,0x70,0x0e,0xe5,0xf0,0x0b, + 0xf6,0x50,0x0e,0xf2,0x30,0x0f,0xe9,0xf0,0x0e,0xee,0x30,0x25,0x40,0x46,0x4c,0xe1, + 0x90,0x0e,0xf2,0xe0,0x06,0xe3,0xf0,0x0e,0xed,0x00,0x0f,0xe9,0xc0,0x0e,0xe5,0xf0, + 0x0b,0xef,0x00,0x0f,0xf4,0x90,0x0e,0xef,0xe0,0x0e,0xf3,0x30,0x65,0x50,0x18,0x67, + 0x84,0x12,0x0e,0xe9,0x20,0x0f,0x6e,0x60,0x0f,0xe5,0x20,0x0f,0xf4,0x50,0x0e,0xf8, + 0x30,0x25,0xd8,0x03,0x00,0x79,0x18,0x00,0x00,0x7b,0x00,0x00,0x00,0x33,0x08,0x80, + 0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80, + 0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80, + 0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88, + 0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78, + 0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03, + 0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f, + 0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c, + 0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39, + 0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b, + 0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60, + 0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87, + 0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e, + 0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c, + 0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6, + 0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94, + 0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03, + 0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07, + 0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f, + 0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33, + 0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc, + 0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c, + 0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78, + 0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca, + 0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21, + 0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43, + 0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87, + 0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x98,0x81,0x5c, + 0xe3,0x10,0x0e,0xec,0xc0,0x0e,0xe5,0x50,0x0e,0xf3,0x30,0x23,0xc1,0xd2,0x41,0x1e, + 0xe4,0xe1,0x17,0xd8,0xe1,0x1d,0xde,0x01,0x1e,0x66,0x50,0x59,0x38,0xa4,0x83,0x3c, + 0xb8,0x81,0x39,0xd4,0x83,0x3b,0x8c,0x03,0x3d,0xa4,0xc3,0x3b,0xb8,0xc3,0x2f,0x9c, + 0x83,0x3c,0xbc,0x43,0x3d,0xc0,0xc3,0x3c,0x00,0x71,0x20,0x00,0x00,0x02,0x00,0x00, + 0x00,0x06,0x50,0x30,0x00,0xd2,0xd0,0x00,0x00,0x61,0x20,0x00,0x00,0x3e,0x00,0x00, + 0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0xf4,0xc6,0x22, + 0x86,0x61,0x18,0xc6,0x22,0x04,0x41,0x10,0xc6,0x22,0x82,0x20,0x08,0xa8,0x95,0x40, + 0x19,0x14,0x01,0xbd,0x11,0x00,0x1a,0x33,0x00,0x24,0x66,0x00,0x28,0xcc,0x00,0x00, + 0x00,0xe3,0x15,0x4b,0x94,0x65,0x11,0x05,0x65,0x90,0x21,0x1a,0x0c,0x13,0x02,0xf9, + 0x8c,0x57,0x3c,0x55,0xd7,0x2d,0x14,0x94,0x41,0x86,0xea,0x70,0x4c,0x08,0xe4,0x63, + 0x41,0x01,0x9f,0xf1,0x0a,0x4a,0x13,0x03,0x31,0x70,0x28,0x28,0x83,0x0c,0x1a,0x43, + 0x99,0x10,0xc8,0xc7,0x8a,0x00,0x3e,0xe3,0x15,0xd9,0x77,0x06,0x67,0x40,0x51,0x50, + 0x06,0x19,0xbe,0x48,0x33,0x21,0x90,0x8f,0x15,0x01,0x7c,0xc6,0x2b,0x3c,0x32,0x68, + 0x03,0x36,0x20,0x03,0x0a,0xca,0x20,0xc3,0x18,0x60,0x99,0x09,0x81,0x7c,0xc6,0x2b, + 0xc4,0x00,0x0d,0xe2,0x00,0x0e,0x3c,0x0a,0xca,0x20,0xc3,0x19,0x70,0x61,0x60,0x42, + 0x20,0x1f,0x0b,0x0a,0xf8,0x8c,0x57,0x9c,0x41,0x1b,0xd8,0x41,0x1d,0x88,0x01,0x05, + 0xc5,0x86,0x00,0x3e,0xb3,0x0d,0x61,0x10,0x00,0xb3,0x0d,0x41,0x1b,0x04,0xb3,0x0d, + 0xc1,0x23,0xcc,0x36,0x04,0x6e,0x30,0x64,0x10,0x10,0x03,0x00,0x00,0x09,0x00,0x00, + 0x00,0x5b,0x86,0x20,0x00,0x85,0x2d,0x43,0x11,0x80,0xc2,0x96,0x41,0x09,0x40,0x61, + 0xcb,0xf0,0x04,0xa0,0xb0,0x65,0xa0,0x02,0x50,0xd8,0x32,0x60,0x01,0x28,0x6c,0x19, + 0xba,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _sgl_fs_bytecode_metal_macos[2829] = { + 0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x06,0x00,0x00,0x81,0x0a,0x00,0x0b,0x00, + 0x0d,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd5,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x30,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0xeb,0xd5,0xe5,0x1e,0x0a,0x10,0x1a, + 0x32,0xd3,0xbd,0xd9,0xe3,0x31,0x39,0x1e,0x13,0x0d,0xe0,0xb8,0x26,0xfa,0x4f,0x40, + 0xeb,0xf7,0x82,0x75,0x70,0x8a,0xc9,0x08,0x0c,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x04,0x00,0x00, + 0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17, + 0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x14,0x0a,0x00,0x00,0xff,0xff,0xff, + 0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0x82,0x02,0x00,0x00,0x0b,0x82,0x20, + 0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04, + 0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b, + 0x62,0x80,0x14,0x45,0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18, + 0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21, + 0x72,0x24,0x07,0xc8,0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00, + 0x00,0x51,0x18,0x00,0x00,0x89,0x00,0x00,0x00,0x1b,0xcc,0x25,0xf8,0xff,0xff,0xff, + 0xff,0x01,0x60,0x00,0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07, + 0x7a,0x60,0x87,0x7c,0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72, + 0x68,0x03,0x72,0x48,0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90, + 0x07,0x7a,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc, + 0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81, + 0x1d,0xca,0xa1,0x0d,0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d, + 0xd8,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87, + 0x79,0x98,0x87,0x36,0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36, + 0x30,0x07,0x78,0x68,0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c, + 0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0, + 0xe1,0x1d,0xd2,0xc1,0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90, + 0x87,0x70,0x68,0x87,0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07, + 0x79,0x68,0x83,0x72,0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36, + 0x60,0x87,0x72,0x08,0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30, + 0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8, + 0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01, + 0x1e,0xda,0x80,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60, + 0x87,0x79,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1, + 0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c, + 0xc8,0xa1,0x0d,0xf4,0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda, + 0xa0,0x1d,0xc2,0x81,0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77, + 0x78,0x87,0x36,0xa0,0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68, + 0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6, + 0x81,0x1e,0xc2,0x61,0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61, + 0x1c,0xe8,0xe1,0x1d,0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e, + 0xda,0x60,0x1e,0xd2,0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa8,0x07,0x77,0x98,0x87, + 0x70,0x30,0x87,0x72,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74, + 0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0xa2,0x1e,0xe6,0xa1,0x1c,0xda,0x60,0x1e, + 0xde,0xc1,0x1c,0xe8,0xa1,0x0d,0xcc,0x81,0x1d,0xde,0x21,0x1c,0xe8,0x01,0x30,0x87, + 0x70,0x60,0x87,0x79,0x28,0x07,0x60,0x83,0x21,0x0c,0xc0,0x02,0x54,0x1b,0x8c,0x81, + 0x00,0x16,0xa0,0xda,0x80,0x10,0xff,0xff,0xff,0xff,0x3f,0x00,0x0c,0x20,0x01,0xd5, + 0x06,0xa3,0x08,0x80,0x05,0xa8,0x36,0x18,0x86,0x00,0x2c,0x40,0x05,0x49,0x18,0x00, + 0x00,0x03,0x00,0x00,0x00,0x13,0x86,0x40,0x18,0x26,0x0c,0x44,0x61,0x00,0x00,0x00, + 0x00,0x89,0x20,0x00,0x00,0x1d,0x00,0x00,0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85, + 0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a, + 0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x48,0x33,0x00,0xc3,0x08,0x04,0x60,0x83,0x70,0x94, + 0x34,0x45,0x94,0x30,0xf9,0xff,0x44,0x5c,0x13,0x15,0x11,0xbf,0x3d,0xfc,0xd3,0x18, + 0x01,0x30,0x88,0x30,0x04,0x17,0x49,0x53,0x44,0x09,0x93,0xff,0x4b,0x00,0xf3,0x2c, + 0x44,0xf4,0x4f,0x63,0x04,0xc0,0x20,0x42,0x21,0x94,0x42,0x84,0x40,0x0c,0x9d,0x61, + 0x04,0x01,0x98,0x23,0x08,0xe6,0x08,0xc0,0x60,0x18,0x41,0x58,0x0a,0x12,0x88,0x49, + 0x8a,0x29,0x40,0x6d,0x20,0x20,0x05,0xd6,0x08,0x00,0x00,0x00,0x00,0x13,0xb2,0x70, + 0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68, + 0x83,0x76,0x08,0x87,0x71,0x78,0x87,0x79,0xc0,0x87,0x38,0x80,0x03,0x37,0x88,0x83, + 0x38,0x70,0x03,0x38,0xd8,0x70,0x1b,0xe5,0xd0,0x06,0xf0,0xa0,0x07,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x90,0x0e,0x71,0xa0,0x07,0x78, + 0xa0,0x07,0x78,0xd0,0x06,0xe9,0x80,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90, + 0x0e,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x90,0x0e, + 0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x90,0x0e,0x76, + 0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0e,0x73,0x20, + 0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0e,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x71,0x60,0x07,0x7a, + 0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x60,0x0f,0x72,0x40,0x07,0x7a,0x30, + 0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x73,0x20,0x07,0x7a,0x30,0x07, + 0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x74,0x80,0x07,0x7a,0x60,0x07,0x74, + 0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0, + 0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x79,0x60,0x07,0x7a,0x10,0x07,0x72,0x80,0x07, + 0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x20,0x07,0x78,0xa0,0x07,0x71, + 0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x79,0x20, + 0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f, + 0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76, + 0xd0,0x06,0xf6,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07,0x7a,0x50, + 0x07,0x71,0x20,0x07,0x6d,0x60,0x0f,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07, + 0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x6d,0xe0,0x0e,0x78, + 0xa0,0x07,0x71,0x60,0x07,0x7a,0x30,0x07,0x72,0x30,0x84,0x41,0x00,0x00,0x08,0x00, + 0x00,0x00,0x00,0x00,0x18,0xc2,0x38,0x40,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x64, + 0x81,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c, + 0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0x5a,0x25,0x30,0x02,0x50,0x04,0x85,0x50, + 0x10,0x65,0x40,0x70,0x2c,0x81,0x01,0x00,0x00,0x79,0x18,0x00,0x00,0xb8,0x00,0x00, + 0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37, + 0xb7,0x21,0xc6,0x42,0x3c,0x00,0x84,0x50,0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b, + 0xd3,0x2b,0x1b,0x62,0x2c,0xc2,0x23,0x2c,0x05,0xe3,0x20,0x08,0x0e,0x8e,0xad,0x0c, + 0xa4,0xad,0x8c,0x2e,0x8c,0x0d,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x64,0x26, + 0x06,0x06,0x26,0xc6,0x65,0x66,0x46,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac, + 0xac,0x65,0x26,0x06,0x06,0x26,0xc6,0x65,0x66,0x46,0x26,0x65,0x88,0xf0,0x10,0x43, + 0x8c,0x45,0x58,0x8c,0x65,0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x79,0x8e,0x45, + 0x58,0x84,0x65,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6, + 0x42,0x56,0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36, + 0x44,0x78,0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e, + 0x66,0x61,0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65, + 0x43,0x84,0x67,0x61,0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95, + 0xb9,0x98,0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1, + 0x8d,0xa1,0x7d,0x91,0xa5,0xcd,0x85,0x89,0xb1,0x95,0x0d,0x11,0x9e,0x86,0x51,0x58, + 0x9a,0x9c,0x8b,0x5c,0x99,0x1b,0x59,0x99,0xdc,0x17,0x5d,0x98,0xdc,0x59,0x19,0x1d, + 0xa3,0xb0,0x34,0x39,0x97,0x30,0xb9,0xb3,0x2f,0xba,0x3c,0xb8,0xb2,0x2f,0xb7,0xb0, + 0xb6,0x32,0x1a,0x66,0x6c,0x6f,0x61,0x74,0x34,0x64,0xc2,0xd2,0xe4,0x5c,0xc2,0xe4, + 0xce,0xbe,0xdc,0xc2,0xda,0xca,0xa8,0x98,0xc9,0x85,0x9d,0x7d,0x8d,0xbd,0xb1,0xbd, + 0xc9,0x0d,0x61,0x9e,0x67,0x19,0x1e,0xe8,0x89,0x1e,0xe9,0x99,0x86,0x08,0x0f,0x45, + 0x29,0x2c,0x4d,0xce,0xc5,0x4c,0x2e,0xec,0xac,0xad,0xcc,0x8d,0xee,0x2b,0xcd,0x0d, + 0xae,0x8e,0x8e,0x4b,0xdd,0x5c,0x99,0x1c,0x0a,0xdb,0xdb,0x98,0x1b,0x4c,0x0a,0x95, + 0xb0,0x34,0x39,0x97,0xb1,0x32,0x37,0xba,0x32,0x39,0x3e,0x61,0x69,0x72,0x2e,0x70, + 0x65,0x72,0x73,0x70,0x65,0x63,0x74,0x69,0x76,0x65,0x14,0xea,0xec,0x86,0x48,0xcb, + 0xf0,0x58,0xcf,0xf5,0x60,0x4f,0xf6,0x40,0x4f,0xf4,0x48,0x8f,0xc6,0xa5,0x6e,0xae, + 0x4c,0x0e,0x85,0xed,0x6d,0xcc,0x2d,0x26,0x85,0xc5,0xd8,0x1b,0xdb,0x9b,0xdc,0x10, + 0x69,0x11,0x1e,0xeb,0xe1,0x1e,0xec,0xc9,0x1e,0xe8,0x89,0x1e,0xe9,0xe9,0xb8,0x84, + 0xa5,0xc9,0xb9,0xd0,0x95,0xe1,0xd1,0xd5,0xc9,0x95,0x51,0x0a,0x4b,0x93,0x73,0x61, + 0x7b,0x1b,0x0b,0xa3,0x4b,0x7b,0x73,0xfb,0x4a,0x73,0x23,0x2b,0xc3,0xa3,0x12,0x96, + 0x26,0xe7,0x32,0x17,0xd6,0x06,0xc7,0x56,0x46,0x8c,0xae,0x0c,0x8f,0xae,0x4e,0xae, + 0x4c,0x86,0x8c,0xc7,0x8c,0xed,0x2d,0x8c,0x8e,0x05,0x64,0x2e,0xac,0x0d,0x8e,0xad, + 0xcc,0x87,0x03,0x5d,0x19,0xde,0x10,0x6a,0x21,0x9e,0xef,0x01,0x83,0x65,0x58,0x84, + 0x27,0x0c,0x1e,0xe8,0x11,0x83,0x47,0x7a,0xc6,0x80,0x4b,0x58,0x9a,0x9c,0xcb,0x5c, + 0x58,0x1b,0x1c,0x5b,0x99,0x1c,0x8f,0xb9,0xb0,0x36,0x38,0xb6,0x32,0x39,0x22,0x74, + 0x65,0x78,0x53,0x6d,0x70,0x6c,0x72,0x43,0xa4,0xe5,0x78,0xca,0xe0,0x01,0x83,0x65, + 0x58,0x84,0x07,0x7a,0xcc,0xe0,0x91,0x9e,0x33,0x18,0x82,0x3c,0xdb,0xe3,0x3d,0x64, + 0xf0,0xa0,0xc1,0x10,0x03,0x01,0x9e,0xea,0x49,0x83,0x11,0x11,0x3b,0xb0,0x83,0x3d, + 0xb4,0x83,0x1b,0xb4,0xc3,0x3b,0x90,0x43,0x3d,0xb0,0x43,0x39,0xb8,0x81,0x39,0xb0, + 0x43,0x38,0x9c,0xc3,0x3c,0x4c,0x11,0x82,0x61,0x84,0xc2,0x0e,0xec,0x60,0x0f,0xed, + 0xe0,0x06,0xe9,0x40,0x0e,0xe5,0xe0,0x0e,0xf4,0x30,0x25,0x28,0x46,0x2c,0xe1,0x90, + 0x0e,0xf2,0xe0,0x06,0xf6,0x50,0x0e,0xf2,0x30,0x0f,0xe9,0xf0,0x0e,0xee,0x30,0x25, + 0x30,0x46,0x50,0xe1,0x90,0x0e,0xf2,0xe0,0x06,0xec,0x10,0x0e,0xee,0x70,0x0e,0xf5, + 0x10,0x0e,0xe7,0x50,0x0e,0xbf,0x60,0x0f,0xe5,0x20,0x0f,0xf3,0x90,0x0e,0xef,0xe0, + 0x0e,0x53,0x02,0x64,0xc4,0x14,0x0e,0xe9,0x20,0x0f,0x6e,0x30,0x0e,0xef,0xd0,0x0e, + 0xf0,0x90,0x0e,0xec,0x50,0x0e,0xbf,0xf0,0x0e,0xf0,0x40,0x0f,0xe9,0xf0,0x0e,0xee, + 0x30,0x0f,0x53,0x06,0x85,0x71,0x46,0x30,0xe1,0x90,0x0e,0xf2,0xe0,0x06,0xe6,0x20, + 0x0f,0xe1,0x70,0x0e,0xed,0x50,0x0e,0xee,0x40,0x0f,0x53,0x02,0x35,0x00,0x00,0x00, + 0x00,0x79,0x18,0x00,0x00,0x7b,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c, + 0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07, + 0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42, + 0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83, + 0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07, + 0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70, + 0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3, + 0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2, + 0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc, + 0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68, + 0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07, + 0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72, + 0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec, + 0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc, + 0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8, + 0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03, + 0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c, + 0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74, + 0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4, + 0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc, + 0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1, + 0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50, + 0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51, + 0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21, + 0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06, + 0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c, + 0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77, + 0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x98,0x81,0x5c,0xe3,0x10,0x0e,0xec, + 0xc0,0x0e,0xe5,0x50,0x0e,0xf3,0x30,0x23,0xc1,0xd2,0x41,0x1e,0xe4,0xe1,0x17,0xd8, + 0xe1,0x1d,0xde,0x01,0x1e,0x66,0x50,0x59,0x38,0xa4,0x83,0x3c,0xb8,0x81,0x39,0xd4, + 0x83,0x3b,0x8c,0x03,0x3d,0xa4,0xc3,0x3b,0xb8,0xc3,0x2f,0x9c,0x83,0x3c,0xbc,0x43, + 0x3d,0xc0,0xc3,0x3c,0x00,0x71,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x16,0xb0,0x01, + 0x48,0xe4,0x4b,0x00,0xf3,0x2c,0xc4,0x3f,0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0x7e, + 0x85,0x17,0xb7,0x6d,0x00,0x05,0x03,0x20,0x0d,0x0d,0x00,0x00,0x00,0x61,0x20,0x00, + 0x00,0x0f,0x00,0x00,0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x06,0x00,0x00, + 0x00,0xc4,0x46,0x00,0xc6,0x12,0x80,0x80,0xd4,0x08,0x40,0x0d,0x90,0x98,0x01,0xa0, + 0x30,0x03,0x40,0x60,0x04,0x00,0x00,0x00,0x00,0x83,0x0c,0x8b,0x60,0x8c,0x18,0x28, + 0x42,0x40,0x29,0x49,0x50,0x20,0x86,0x60,0x01,0x23,0x9f,0xd9,0x06,0x23,0x00,0x32, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _sgl_vs_bytecode_metal_ios[3305] = { + 0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x06,0x00,0x00,0x82,0x09,0x00,0x00,0x00, + 0xe9,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0xd0,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0x77,0x3d,0x05,0xbd,0x9f,0x26,0xc1, + 0xae,0x87,0x1d,0xc4,0x7e,0x6d,0x86,0xc6,0x23,0xd4,0x40,0x35,0xfc,0x64,0x3f,0x25, + 0xe4,0xe3,0x19,0x09,0x7d,0xba,0xe3,0x12,0x70,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x40,0x00,0x00, + 0x00,0x56,0x41,0x54,0x54,0x2a,0x00,0x04,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x00,0x00,0x80,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x02,0x80,0x70,0x73,0x69,0x7a,0x65,0x00,0x03, + 0x80,0x56,0x41,0x54,0x59,0x06,0x00,0x04,0x00,0x06,0x04,0x06,0x03,0x45,0x4e,0x44, + 0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17,0x0b,0x00,0x00,0x00, + 0x00,0x14,0x00,0x00,0x00,0xbc,0x0b,0x00,0x00,0xff,0xff,0xff,0xff,0x42,0x43,0xc0, + 0xde,0x21,0x0c,0x00,0x00,0xec,0x02,0x00,0x00,0x0b,0x82,0x20,0x00,0x02,0x00,0x00, + 0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04,0x49,0x06,0x10,0x32, + 0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b,0x62,0x80,0x14,0x45, + 0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18,0x49,0x0a,0x32,0x44, + 0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21,0x72,0x24,0x07,0xc8, + 0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00,0x00,0x51,0x18,0x00, + 0x00,0x82,0x00,0x00,0x00,0x1b,0xc8,0x25,0xf8,0xff,0xff,0xff,0xff,0x01,0x90,0x80, + 0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87,0x71,0xa0,0x07,0x76,0xc8,0x87,0x36, + 0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72,0x20,0x87,0x36,0x20,0x87,0x74,0xb0, + 0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88,0x07,0x79,0xa0,0x87,0x36,0x30,0x07, + 0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1, + 0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xda,0x80,0x1e, + 0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c,0xd8,0x81,0x1d,0xe6,0x01,0x30,0x87, + 0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87,0x72,0x98,0x87,0x79,0x68,0x03,0x78, + 0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72,0x68,0x03,0x73,0x80,0x87,0x76,0x08, + 0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda, + 0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda,0x00,0x1e,0xde,0x21,0x1d,0xdc,0x81, + 0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21,0x1d,0xda,0x01,0xa0,0x07,0x79,0xa8, + 0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30,0x07,0x79,0x08,0x87,0x76,0x28,0x87, + 0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87,0x72,0x90,0x87,0x36,0x28,0x07,0x76, + 0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77,0x68,0x03,0x76,0x28,0x87,0x70,0x30, + 0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70,0x07,0x73,0x98,0x87,0x36,0x30,0x07, + 0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01, + 0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1,0x1d,0xe0,0xa1,0x0d,0xe8,0x21,0x1c, + 0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08, + 0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36, + 0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d, + 0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d,0xca,0x81,0x1c,0xda,0x40,0x1f,0xca, + 0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0,0xa1,0x0d,0xda,0x21,0x1c,0xe8,0x01, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x7a,0x90, + 0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38,0x87,0x36,0x68,0x87,0x70,0xa0,0x07, + 0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0x62,0x1e,0xe8,0x21,0x1c,0xc6,0x61, + 0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1,0x1c,0xc6,0x81,0x1e,0xde,0x41,0x1e, + 0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x0d,0xe6,0x21,0x1d,0xf4, + 0xa1,0x1c,0x00,0x3c,0x00,0x88,0x7a,0x70,0x87,0x79,0x08,0x07,0x73,0x28,0x87,0x36, + 0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e, + 0xca,0x01,0x20,0xea,0x61,0x1e,0xca,0xa1,0x0d,0xe6,0xe1,0x1d,0xcc,0x81,0x1e,0xda, + 0xc0,0x1c,0xd8,0xe1,0x1d,0xc2,0x81,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72, + 0x00,0x36,0x20,0x42,0x01,0x24,0xc0,0x02,0x54,0x00,0x00,0x00,0x00,0x49,0x18,0x00, + 0x00,0x01,0x00,0x00,0x00,0x13,0x84,0x40,0x00,0x89,0x20,0x00,0x00,0x20,0x00,0x00, + 0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85,0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22, + 0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a,0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x44,0x33, + 0x00,0xc3,0x08,0x04,0x60,0x89,0x10,0x02,0x18,0x46,0x10,0x80,0x24,0x08,0x33,0x51, + 0xf3,0x40,0x0f,0xf2,0x50,0x0f,0xe3,0x40,0x0f,0x6e,0xd0,0x0e,0xe5,0x40,0x0f,0xe1, + 0xc0,0x0e,0x7a,0xa0,0x07,0xed,0x10,0x0e,0xf4,0x20,0x0f,0xe9,0x80,0x0f,0x28,0x20, + 0x07,0x49,0x53,0x44,0x09,0x93,0x5f,0x49,0xff,0x03,0x44,0x00,0x23,0x21,0xa1,0x94, + 0x41,0x04,0x43,0x28,0x86,0x08,0x23,0x80,0x43,0x68,0x20,0x60,0x8e,0x00,0x0c,0x52, + 0x60,0xcd,0x11,0x80,0xc2,0x20,0x42,0x20,0x0c,0x23,0x10,0xcb,0x08,0x00,0x00,0x00, + 0x00,0x13,0xa8,0x70,0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78, + 0x60,0x87,0x72,0x68,0x83,0x74,0x78,0x87,0x79,0xc8,0x03,0x37,0x80,0x03,0x37,0x80, + 0x83,0x0d,0xb7,0x51,0x0e,0x6d,0x00,0x0f,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40, + 0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe9,0x10,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07, + 0x6d,0x90,0x0e,0x78,0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9,0x10,0x07,0x76, + 0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xe9,0x30,0x07,0x72,0xa0, + 0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe9,0x60,0x07,0x74,0xa0,0x07, + 0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe6,0x30,0x07,0x72,0xa0,0x07,0x73, + 0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40, + 0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07, + 0x7a,0x10,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x74,0xa0,0x07,0x73,0x20,0x07,0x7a, + 0x30,0x07,0x72,0xd0,0x06,0xf6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30, + 0x07,0x72,0xd0,0x06,0xf6,0x40,0x07,0x78,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07, + 0x74,0xd0,0x06,0xf6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74, + 0xd0,0x06,0xf6,0x90,0x07,0x76,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20, + 0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07, + 0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x90,0x07,0x72,0xa0,0x07,0x72, + 0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x75,0x60, + 0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f, + 0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72, + 0xd0,0x06,0xf6,0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40, + 0x07,0x7a,0x10,0x07,0x70,0x20,0x07,0x74,0xd0,0x06,0xee,0x80,0x07,0x7a,0x10,0x07, + 0x76,0xa0,0x07,0x73,0x20,0x07,0x43,0x98,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x2c,0x10,0x00,0x00,0x0b,0x00,0x00,0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c, + 0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0x5a,0x25,0x30,0x02,0x50,0x04,0x05,0x18, + 0x50,0x08,0x65,0x50,0x80,0x02,0x05,0x51,0x20,0xd4,0x46,0x00,0x88,0x8d,0x25,0x3c, + 0x00,0x00,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0x01,0x01,0x00,0x00,0x1a,0x03,0x4c, + 0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x32, + 0x28,0x00,0xb3,0x50,0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62, + 0x2c,0x81,0x22,0x2c,0x05,0xe3,0x20,0x08,0x0e,0x8e,0xad,0x0c,0xa4,0xad,0x8c,0x2e, + 0x8c,0x0d,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x64,0x26,0x06,0x06,0x26,0xc6, + 0x65,0x46,0xa6,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac,0x65,0x26,0x06, + 0x06,0x26,0xc6,0x65,0x46,0xa6,0x26,0x65,0x88,0xa0,0x10,0x43,0x8c,0x25,0x58,0x90, + 0x45,0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x51,0x8e,0x25,0x58,0x84,0x45,0xe0, + 0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56,0xe6,0xf6, + 0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x50,0x12,0x72, + 0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61,0x73,0x74, + 0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x04,0x65,0x21, + 0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98,0xc9,0x85, + 0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1,0x7d,0x95, + 0xb9,0x85,0x89,0xb1,0x95,0x0d,0x11,0x94,0x86,0x51,0x58,0x9a,0x9c,0x8b,0x5d,0x99, + 0x1c,0x5d,0x19,0xde,0xd7,0x5b,0x1d,0x1d,0x5c,0x1d,0x1d,0x97,0xba,0xb9,0x32,0x39, + 0x14,0xb6,0xb7,0x31,0x37,0x98,0x14,0x46,0x61,0x69,0x72,0x2e,0x61,0x72,0x67,0x5f, + 0x74,0x79,0x70,0x65,0x5f,0x6e,0x61,0x6d,0x65,0x34,0xcc,0xd8,0xde,0xc2,0xe8,0x68, + 0xc8,0x84,0xa5,0xc9,0xb9,0x84,0xc9,0x9d,0x7d,0xb9,0x85,0xb5,0x95,0x51,0xa8,0xb3, + 0x1b,0xc2,0x28,0x8f,0x02,0x29,0x91,0x22,0x29,0x93,0x42,0x71,0xa9,0x9b,0x2b,0x93, + 0x43,0x61,0x7b,0x1b,0x73,0x8b,0x49,0x61,0x31,0xf6,0xc6,0xf6,0x26,0x37,0x84,0x51, + 0x1e,0xc5,0x52,0x22,0x45,0x52,0x26,0xe5,0x22,0x13,0x96,0x26,0xe7,0x02,0xf7,0x36, + 0x97,0x46,0x97,0xf6,0xe6,0xc6,0xe5,0x8c,0xed,0x0b,0xea,0x6d,0x2e,0x8d,0x2e,0xed, + 0xcd,0x6d,0x88,0xa2,0x64,0x4a,0xa4,0x48,0xca,0xa4,0x68,0x74,0xc2,0xd2,0xe4,0x5c, + 0xe0,0xde,0xd2,0xdc,0xe8,0xbe,0xe6,0xd2,0xf4,0xca,0x58,0x98,0xb1,0xbd,0x85,0xd1, + 0x91,0x39,0x63,0xfb,0x82,0x7a,0x4b,0x73,0xa3,0x9b,0x4a,0xd3,0x2b,0x1b,0xa2,0x28, + 0x9c,0x12,0x29,0x9d,0x32,0x29,0xde,0x10,0x44,0xa9,0x14,0x4c,0xd9,0x94,0x8f,0x50, + 0x58,0x9a,0x9c,0x8b,0x5d,0x99,0x1c,0x5d,0x19,0xde,0x57,0x9a,0x1b,0x5c,0x1d,0x1d, + 0xa5,0xb0,0x34,0x39,0x17,0xb6,0xb7,0xb1,0x30,0xba,0xb4,0x37,0xb7,0xaf,0x34,0x37, + 0xb2,0x32,0x3c,0x7a,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x64,0x28,0x5f,0x5f, + 0x61,0x69,0x72,0x5f,0x70,0x6c,0x61,0x63,0x65,0x68,0x6f,0x6c,0x64,0x65,0x72,0x5f, + 0x5f,0x29,0x44,0xe0,0xde,0xe6,0xd2,0xe8,0xd2,0xde,0xdc,0x86,0x50,0x8b,0xa0,0x84, + 0x81,0x22,0x06,0x8b,0xb0,0x04,0xca,0x18,0x28,0x91,0x22,0x29,0x93,0x42,0x06,0x34, + 0xcc,0xd8,0xde,0xc2,0xe8,0x64,0x98,0xd0,0x95,0xe1,0x8d,0xbd,0xbd,0xc9,0x91,0xc1, + 0x0c,0xa1,0x96,0x40,0x09,0x03,0x45,0x0c,0x96,0x60,0x09,0x94,0x31,0x50,0x22,0xc5, + 0x0c,0x94,0x49,0x39,0x03,0x1a,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x43,0xa8,0x65,0x50, + 0xc2,0x40,0x11,0x83,0x65,0x58,0x02,0x65,0x0c,0x94,0x48,0x91,0x94,0x49,0x49,0x03, + 0x16,0x70,0x73,0x69,0x7a,0x65,0x43,0xa8,0xc5,0x50,0xc2,0x40,0x11,0x83,0xc5,0x58, + 0x02,0x65,0x0c,0x94,0x48,0xe9,0x94,0x49,0x59,0x03,0x2a,0x61,0x69,0x72,0x2e,0x62, + 0x75,0x66,0x66,0x65,0x72,0x7c,0xc2,0xd2,0xe4,0x5c,0xc4,0xea,0xcc,0xcc,0xca,0xe4, + 0xbe,0xe6,0xd2,0xf4,0xca,0x88,0x84,0xa5,0xc9,0xb9,0xc8,0x95,0x85,0x91,0x91,0x0a, + 0x4b,0x93,0x73,0x99,0xa3,0x93,0xab,0x1b,0xa3,0xfb,0xa2,0xcb,0x83,0x2b,0xfb,0x4a, + 0x73,0x33,0x7b,0x23,0x62,0xc6,0xf6,0x16,0x46,0x47,0x83,0x47,0xc3,0xa1,0xcd,0x0e, + 0x8e,0x02,0x5d,0xdb,0x10,0x6a,0x11,0x16,0x62,0x11,0x94,0x38,0x50,0xe4,0x60,0x21, + 0x16,0x62,0x11,0x94,0x38,0x50,0xe6,0x80,0x51,0x58,0x9a,0x9c,0x4b,0x98,0xdc,0xd9, + 0x17,0x5d,0x1e,0x5c,0xd9,0xd7,0x5c,0x9a,0x5e,0x19,0xaf,0xb0,0x34,0x39,0x97,0x30, + 0xb9,0xb3,0x2f,0xba,0x3c,0xb8,0xb2,0xaf,0x30,0xb6,0xb4,0x33,0xb7,0xaf,0xb9,0x34, + 0xbd,0x32,0x26,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x1c,0xbe,0x64,0x62, + 0x86,0x90,0xc1,0x52,0x28,0x6d,0xa0,0xb8,0xc1,0x72,0x28,0x62,0xb0,0x08,0x4b,0xa0, + 0xbc,0x81,0x02,0x07,0x0a,0x1d,0x28,0x75,0xb0,0x1c,0x8a,0x1d,0x2c,0x89,0x12,0x29, + 0x77,0xa0,0x4c,0x0a,0x1e,0x0c,0x51,0x94,0x32,0x50,0xd0,0x40,0x51,0x03,0x85,0x0d, + 0x94,0x3c,0x18,0x62,0x24,0x80,0x02,0x06,0x8a,0x1e,0xf0,0x79,0x6b,0x73,0x4b,0x83, + 0x7b,0xa3,0x2b,0x73,0xa3,0x03,0x19,0x43,0x0b,0x93,0xe3,0x33,0x95,0xd6,0x06,0xc7, + 0x56,0x06,0x32,0xb4,0xb2,0x02,0x42,0x25,0x14,0x14,0x34,0x44,0x50,0xfa,0x60,0x88, + 0xa1,0xf0,0x81,0xe2,0x07,0x8d,0x32,0xc4,0x50,0xfe,0x40,0xf9,0x83,0x46,0x19,0x11, + 0xb1,0x03,0x3b,0xd8,0x43,0x3b,0xb8,0x41,0x3b,0xbc,0x03,0x39,0xd4,0x03,0x3b,0x94, + 0x83,0x1b,0x98,0x03,0x3b,0x84,0xc3,0x39,0xcc,0xc3,0x14,0x21,0x18,0x46,0x28,0xec, + 0xc0,0x0e,0xf6,0xd0,0x0e,0x6e,0x90,0x0e,0xe4,0x50,0x0e,0xee,0x40,0x0f,0x53,0x82, + 0x62,0xc4,0x12,0x0e,0xe9,0x20,0x0f,0x6e,0x60,0x0f,0xe5,0x20,0x0f,0xf3,0x90,0x0e, + 0xef,0xe0,0x0e,0x53,0x02,0x63,0x04,0x15,0x0e,0xe9,0x20,0x0f,0x6e,0xc0,0x0e,0xe1, + 0xe0,0x0e,0xe7,0x50,0x0f,0xe1,0x70,0x0e,0xe5,0xf0,0x0b,0xf6,0x50,0x0e,0xf2,0x30, + 0x0f,0xe9,0xf0,0x0e,0xee,0x30,0x25,0x40,0x46,0x4c,0xe1,0x90,0x0e,0xf2,0xe0,0x06, + 0xe3,0xf0,0x0e,0xed,0x00,0x0f,0xe9,0xc0,0x0e,0xe5,0xf0,0x0b,0xef,0x00,0x0f,0xf4, + 0x90,0x0e,0xef,0xe0,0x0e,0xf3,0x30,0x65,0x50,0x18,0x67,0x84,0x12,0x0e,0xe9,0x20, + 0x0f,0x6e,0x60,0x0f,0xe5,0x20,0x0f,0xf4,0x50,0x0e,0xf8,0x30,0x25,0xd8,0x03,0x00, + 0x00,0x79,0x18,0x00,0x00,0x7b,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c, + 0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07, + 0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42, + 0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83, + 0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07, + 0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70, + 0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3, + 0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2, + 0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc, + 0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68, + 0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07, + 0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72, + 0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec, + 0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc, + 0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8, + 0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03, + 0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c, + 0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74, + 0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4, + 0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc, + 0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1, + 0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50, + 0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51, + 0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21, + 0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06, + 0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c, + 0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77, + 0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x98,0x81,0x5c,0xe3,0x10,0x0e,0xec, + 0xc0,0x0e,0xe5,0x50,0x0e,0xf3,0x30,0x23,0xc1,0xd2,0x41,0x1e,0xe4,0xe1,0x17,0xd8, + 0xe1,0x1d,0xde,0x01,0x1e,0x66,0x50,0x59,0x38,0xa4,0x83,0x3c,0xb8,0x81,0x39,0xd4, + 0x83,0x3b,0x8c,0x03,0x3d,0xa4,0xc3,0x3b,0xb8,0xc3,0x2f,0x9c,0x83,0x3c,0xbc,0x43, + 0x3d,0xc0,0xc3,0x3c,0x00,0x71,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x06,0x50,0x30, + 0x00,0xd2,0xd0,0x00,0x00,0x61,0x20,0x00,0x00,0x3e,0x00,0x00,0x00,0x13,0x04,0x41, + 0x2c,0x10,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0xf4,0xc6,0x22,0x86,0x61,0x18,0xc6, + 0x22,0x04,0x41,0x10,0xc6,0x22,0x82,0x20,0x08,0xa8,0x95,0x40,0x19,0x14,0x01,0xbd, + 0x11,0x00,0x1a,0x33,0x00,0x24,0x66,0x00,0x28,0xcc,0x00,0x00,0x00,0xe3,0x15,0x4b, + 0x94,0x65,0x11,0x05,0x65,0x90,0x21,0x1a,0x0c,0x13,0x02,0xf9,0x8c,0x57,0x3c,0x55, + 0xd7,0x2d,0x14,0x94,0x41,0x86,0xea,0x70,0x4c,0x08,0xe4,0x63,0x41,0x01,0x9f,0xf1, + 0x0a,0x4a,0x13,0x03,0x31,0x70,0x28,0x28,0x83,0x0c,0x1a,0x43,0x99,0x10,0xc8,0xc7, + 0x8a,0x00,0x3e,0xe3,0x15,0xd9,0x77,0x06,0x67,0x40,0x51,0x50,0x06,0x19,0xbe,0x48, + 0x33,0x21,0x90,0x8f,0x15,0x01,0x7c,0xc6,0x2b,0x3c,0x32,0x68,0x03,0x36,0x20,0x03, + 0x0a,0xca,0x20,0xc3,0x18,0x60,0x99,0x09,0x81,0x7c,0xc6,0x2b,0xc4,0x00,0x0d,0xe2, + 0x00,0x0e,0x3c,0x0a,0xca,0x20,0xc3,0x19,0x70,0x61,0x60,0x42,0x20,0x1f,0x0b,0x0a, + 0xf8,0x8c,0x57,0x9c,0x41,0x1b,0xd8,0x41,0x1d,0x88,0x01,0x05,0xc5,0x86,0x00,0x3e, + 0xb3,0x0d,0x61,0x10,0x00,0xb3,0x0d,0x41,0x1b,0x04,0xb3,0x0d,0xc1,0x23,0xcc,0x36, + 0x04,0x6e,0x30,0x64,0x10,0x10,0x03,0x00,0x00,0x09,0x00,0x00,0x00,0x5b,0x86,0x20, + 0x00,0x85,0x2d,0x43,0x11,0x80,0xc2,0x96,0x41,0x09,0x40,0x61,0xcb,0xf0,0x04,0xa0, + 0xb0,0x65,0xa0,0x02,0x50,0xd8,0x32,0x60,0x01,0x28,0x6c,0x19,0xba,0x00,0x14,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _sgl_fs_bytecode_metal_ios[2813] = { + 0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x06,0x00,0x00,0x82,0x09,0x00,0x00,0x00, + 0xfd,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd5,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x20,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0xa2,0xfb,0x9e,0x58,0x9a,0x22,0x99, + 0x8e,0xdc,0x41,0x5a,0x15,0xf4,0x1f,0xbc,0xfa,0xdd,0xa2,0x32,0xf3,0xff,0x3e,0xe2, + 0x2c,0x7f,0x20,0x9e,0x14,0xb3,0xef,0x8e,0x56,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x04,0x00,0x00, + 0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17, + 0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x08,0x0a,0x00,0x00,0xff,0xff,0xff, + 0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0x7f,0x02,0x00,0x00,0x0b,0x82,0x20, + 0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04, + 0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b, + 0x62,0x80,0x14,0x45,0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18, + 0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21, + 0x72,0x24,0x07,0xc8,0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00, + 0x00,0x51,0x18,0x00,0x00,0x89,0x00,0x00,0x00,0x1b,0xcc,0x25,0xf8,0xff,0xff,0xff, + 0xff,0x01,0x60,0x00,0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07, + 0x7a,0x60,0x87,0x7c,0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72, + 0x68,0x03,0x72,0x48,0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90, + 0x07,0x7a,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc, + 0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81, + 0x1d,0xca,0xa1,0x0d,0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d, + 0xd8,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87, + 0x79,0x98,0x87,0x36,0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36, + 0x30,0x07,0x78,0x68,0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c, + 0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0, + 0xe1,0x1d,0xd2,0xc1,0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90, + 0x87,0x70,0x68,0x87,0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07, + 0x79,0x68,0x83,0x72,0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36, + 0x60,0x87,0x72,0x08,0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30, + 0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8, + 0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01, + 0x1e,0xda,0x80,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60, + 0x87,0x79,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1, + 0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c, + 0xc8,0xa1,0x0d,0xf4,0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda, + 0xa0,0x1d,0xc2,0x81,0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77, + 0x78,0x87,0x36,0xa0,0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68, + 0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6, + 0x81,0x1e,0xc2,0x61,0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61, + 0x1c,0xe8,0xe1,0x1d,0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e, + 0xda,0x60,0x1e,0xd2,0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa8,0x07,0x77,0x98,0x87, + 0x70,0x30,0x87,0x72,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74, + 0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0xa2,0x1e,0xe6,0xa1,0x1c,0xda,0x60,0x1e, + 0xde,0xc1,0x1c,0xe8,0xa1,0x0d,0xcc,0x81,0x1d,0xde,0x21,0x1c,0xe8,0x01,0x30,0x87, + 0x70,0x60,0x87,0x79,0x28,0x07,0x60,0x83,0x21,0x0c,0xc0,0x02,0x54,0x1b,0x8c,0x81, + 0x00,0x16,0xa0,0xda,0x80,0x10,0xff,0xff,0xff,0xff,0x3f,0x00,0x0c,0x20,0x01,0xd5, + 0x06,0xa3,0x08,0x80,0x05,0xa8,0x36,0x18,0x86,0x00,0x2c,0x40,0x05,0x49,0x18,0x00, + 0x00,0x03,0x00,0x00,0x00,0x13,0x86,0x40,0x18,0x26,0x0c,0x44,0x61,0x00,0x00,0x00, + 0x00,0x89,0x20,0x00,0x00,0x1d,0x00,0x00,0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85, + 0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a, + 0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x48,0x33,0x00,0xc3,0x08,0x04,0x60,0x83,0x70,0x94, + 0x34,0x45,0x94,0x30,0xf9,0xff,0x44,0x5c,0x13,0x15,0x11,0xbf,0x3d,0xfc,0xd3,0x18, + 0x01,0x30,0x88,0x30,0x04,0x17,0x49,0x53,0x44,0x09,0x93,0xff,0x4b,0x00,0xf3,0x2c, + 0x44,0xf4,0x4f,0x63,0x04,0xc0,0x20,0x42,0x21,0x94,0x42,0x84,0x40,0x0c,0x9d,0x61, + 0x04,0x01,0x98,0x23,0x08,0xe6,0x08,0xc0,0x60,0x18,0x41,0x58,0x0a,0x12,0x88,0x49, + 0x8a,0x29,0x40,0x6d,0x20,0x20,0x05,0xd6,0x08,0x00,0x00,0x00,0x00,0x13,0xa8,0x70, + 0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68, + 0x83,0x74,0x78,0x87,0x79,0xc8,0x03,0x37,0x80,0x03,0x37,0x80,0x83,0x0d,0xb7,0x51, + 0x0e,0x6d,0x00,0x0f,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07, + 0x74,0xd0,0x06,0xe9,0x10,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e,0x78, + 0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9,0x10,0x07,0x76,0xa0,0x07,0x71,0x60, + 0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xe9,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07, + 0x7a,0x30,0x07,0x72,0xd0,0x06,0xe9,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a, + 0x60,0x07,0x74,0xd0,0x06,0xe6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30, + 0x07,0x72,0xd0,0x06,0xe6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07, + 0x74,0xd0,0x06,0xf6,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76, + 0xd0,0x06,0xf6,0x20,0x07,0x74,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0, + 0x06,0xf6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06, + 0xf6,0x40,0x07,0x78,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6, + 0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x90, + 0x07,0x76,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06, + 0xf6,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72, + 0x80,0x07,0x6d,0x60,0x0f,0x71,0x90,0x07,0x72,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0, + 0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07, + 0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x75,0x10,0x07,0x72, + 0xa0,0x07,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xd0,0x06,0xf6,0x10, + 0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07, + 0x70,0x20,0x07,0x74,0xd0,0x06,0xee,0x80,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x73, + 0x20,0x07,0x43,0x18,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x21,0x8c,0x03, + 0x04,0x80,0x00,0x00,0x00,0x00,0x00,0x40,0x16,0x08,0x00,0x00,0x00,0x08,0x00,0x00, + 0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43, + 0x5a,0x23,0x00,0x25,0x50,0x04,0x85,0x50,0x10,0x65,0x40,0x70,0x2c,0xe1,0x01,0x00, + 0x00,0x79,0x18,0x00,0x00,0xb7,0x00,0x00,0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2, + 0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x42,0x3c,0x00,0x84,0x50, + 0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62,0x2c,0xc3,0x23,0x2c, + 0x05,0xe3,0x20,0x08,0x0e,0x8e,0xad,0x0c,0xa4,0xad,0x8c,0x2e,0x8c,0x0d,0xc4,0xae, + 0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x64,0x26,0x06,0x06,0x26,0xc6,0x65,0x46,0xa6,0x06, + 0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac,0x65,0x26,0x06,0x06,0x26,0xc6,0x65, + 0x46,0xa6,0x26,0x65,0x88,0xf0,0x10,0x43,0x8c,0x65,0x58,0x8c,0x45,0x60,0xd1,0x54, + 0x46,0x17,0xc6,0x36,0x04,0x79,0x8e,0x65,0x58,0x84,0x45,0xe0,0x16,0x96,0x26,0xe7, + 0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26,0xd7,0x36,0xf7, + 0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x78,0x12,0x72,0x61,0x69,0x72,0x2e, + 0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61,0x73,0x74,0x5f,0x6d,0x61,0x74, + 0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x84,0x67,0x21,0x19,0x84,0xa5,0xc9, + 0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5,0x95,0x89,0xd5, + 0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1,0x7d,0x95,0xb9,0x85,0x89,0xb1, + 0x95,0x0d,0x11,0x9e,0x86,0x51,0x58,0x9a,0x9c,0x8b,0x5c,0x99,0x1b,0x59,0x99,0xdc, + 0x17,0x5d,0x98,0xdc,0x59,0x19,0x1d,0xa3,0xb0,0x34,0x39,0x97,0x30,0xb9,0xb3,0x2f, + 0xba,0x3c,0xb8,0xb2,0x2f,0xb7,0xb0,0xb6,0x32,0x1a,0x66,0x6c,0x6f,0x61,0x74,0x34, + 0x64,0xc2,0xd2,0xe4,0x5c,0xc2,0xe4,0xce,0xbe,0xdc,0xc2,0xda,0xca,0xa8,0x98,0xc9, + 0x85,0x9d,0x7d,0x8d,0xbd,0xb1,0xbd,0xc9,0x0d,0x61,0x9e,0x67,0x11,0x1e,0xe8,0x89, + 0x1e,0xe9,0x99,0x86,0x08,0x0f,0x45,0x29,0x2c,0x4d,0xce,0xc5,0x4c,0x2e,0xec,0xac, + 0xad,0xcc,0x8d,0xee,0x2b,0xcd,0x0d,0xae,0x8e,0x8e,0x4b,0xdd,0x5c,0x99,0x1c,0x0a, + 0xdb,0xdb,0x98,0x1b,0x4c,0x0a,0x95,0xb0,0x34,0x39,0x97,0xb1,0x32,0x37,0xba,0x32, + 0x39,0x3e,0x61,0x69,0x72,0x2e,0x70,0x65,0x72,0x73,0x70,0x65,0x63,0x74,0x69,0x76, + 0x65,0x14,0xea,0xec,0x86,0x48,0x8b,0xf0,0x58,0xcf,0xf5,0x60,0x4f,0xf6,0x40,0x4f, + 0xf4,0x48,0x8f,0xc6,0xa5,0x6e,0xae,0x4c,0x0e,0x85,0xed,0x6d,0xcc,0x2d,0x26,0x85, + 0xc5,0xd8,0x1b,0xdb,0x9b,0xdc,0x10,0x69,0x19,0x1e,0xeb,0xe1,0x1e,0xec,0xc9,0x1e, + 0xe8,0x89,0x1e,0xe9,0xe9,0xb8,0x84,0xa5,0xc9,0xb9,0xd0,0x95,0xe1,0xd1,0xd5,0xc9, + 0x95,0x51,0x0a,0x4b,0x93,0x73,0x61,0x7b,0x1b,0x0b,0xa3,0x4b,0x7b,0x73,0xfb,0x4a, + 0x73,0x23,0x2b,0xc3,0xa3,0x12,0x96,0x26,0xe7,0x32,0x17,0xd6,0x06,0xc7,0x56,0x46, + 0x8c,0xae,0x0c,0x8f,0xae,0x4e,0xae,0x4c,0x86,0x8c,0xc7,0x8c,0xed,0x2d,0x8c,0x8e, + 0x05,0x64,0x2e,0xac,0x0d,0x8e,0xad,0xcc,0x87,0x03,0x5d,0x19,0xde,0x10,0x6a,0x21, + 0x9e,0xef,0x01,0x83,0x45,0x58,0x86,0x27,0x0c,0x1e,0xe8,0x11,0x83,0x47,0x7a,0xc6, + 0x80,0x4b,0x58,0x9a,0x9c,0xcb,0x5c,0x58,0x1b,0x1c,0x5b,0x99,0x1c,0x8f,0xb9,0xb0, + 0x36,0x38,0xb6,0x32,0x39,0x22,0x74,0x65,0x78,0x53,0x6d,0x70,0x6c,0x72,0x43,0xa4, + 0xe5,0x78,0xca,0xe0,0x01,0x83,0x45,0x58,0x86,0x07,0x7a,0xcc,0xe0,0x91,0x9e,0x33, + 0x18,0x82,0x3c,0xdb,0xe3,0x3d,0x64,0xf0,0xa0,0xc1,0x10,0x03,0x01,0x9e,0xea,0x49, + 0x83,0x11,0x11,0x3b,0xb0,0x83,0x3d,0xb4,0x83,0x1b,0xb4,0xc3,0x3b,0x90,0x43,0x3d, + 0xb0,0x43,0x39,0xb8,0x81,0x39,0xb0,0x43,0x38,0x9c,0xc3,0x3c,0x4c,0x11,0x82,0x61, + 0x84,0xc2,0x0e,0xec,0x60,0x0f,0xed,0xe0,0x06,0xe9,0x40,0x0e,0xe5,0xe0,0x0e,0xf4, + 0x30,0x25,0x28,0x46,0x2c,0xe1,0x90,0x0e,0xf2,0xe0,0x06,0xf6,0x50,0x0e,0xf2,0x30, + 0x0f,0xe9,0xf0,0x0e,0xee,0x30,0x25,0x30,0x46,0x50,0xe1,0x90,0x0e,0xf2,0xe0,0x06, + 0xec,0x10,0x0e,0xee,0x70,0x0e,0xf5,0x10,0x0e,0xe7,0x50,0x0e,0xbf,0x60,0x0f,0xe5, + 0x20,0x0f,0xf3,0x90,0x0e,0xef,0xe0,0x0e,0x53,0x02,0x64,0xc4,0x14,0x0e,0xe9,0x20, + 0x0f,0x6e,0x30,0x0e,0xef,0xd0,0x0e,0xf0,0x90,0x0e,0xec,0x50,0x0e,0xbf,0xf0,0x0e, + 0xf0,0x40,0x0f,0xe9,0xf0,0x0e,0xee,0x30,0x0f,0x53,0x06,0x85,0x71,0x46,0x30,0xe1, + 0x90,0x0e,0xf2,0xe0,0x06,0xe6,0x20,0x0f,0xe1,0x70,0x0e,0xed,0x50,0x0e,0xee,0x40, + 0x0f,0x53,0x02,0x35,0x00,0x79,0x18,0x00,0x00,0x7b,0x00,0x00,0x00,0x33,0x08,0x80, + 0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80, + 0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80, + 0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88, + 0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78, + 0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03, + 0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f, + 0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c, + 0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39, + 0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b, + 0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60, + 0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87, + 0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e, + 0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c, + 0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6, + 0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94, + 0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03, + 0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07, + 0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f, + 0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33, + 0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc, + 0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c, + 0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78, + 0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca, + 0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21, + 0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43, + 0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87, + 0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x98,0x81,0x5c, + 0xe3,0x10,0x0e,0xec,0xc0,0x0e,0xe5,0x50,0x0e,0xf3,0x30,0x23,0xc1,0xd2,0x41,0x1e, + 0xe4,0xe1,0x17,0xd8,0xe1,0x1d,0xde,0x01,0x1e,0x66,0x50,0x59,0x38,0xa4,0x83,0x3c, + 0xb8,0x81,0x39,0xd4,0x83,0x3b,0x8c,0x03,0x3d,0xa4,0xc3,0x3b,0xb8,0xc3,0x2f,0x9c, + 0x83,0x3c,0xbc,0x43,0x3d,0xc0,0xc3,0x3c,0x00,0x71,0x20,0x00,0x00,0x08,0x00,0x00, + 0x00,0x16,0xb0,0x01,0x48,0xe4,0x4b,0x00,0xf3,0x2c,0xc4,0x3f,0x11,0xd7,0x44,0x45, + 0xc4,0x6f,0x0f,0x7e,0x85,0x17,0xb7,0x6d,0x00,0x05,0x03,0x20,0x0d,0x0d,0x00,0x00, + 0x00,0x61,0x20,0x00,0x00,0x0f,0x00,0x00,0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00, + 0x00,0x06,0x00,0x00,0x00,0xc4,0x46,0x00,0xc6,0x12,0x80,0x80,0xd4,0x08,0x40,0x0d, + 0x90,0x98,0x01,0xa0,0x30,0x03,0x40,0x60,0x04,0x00,0x00,0x00,0x00,0x83,0x0c,0x8b, + 0x60,0x8c,0x18,0x28,0x42,0x40,0x29,0x49,0x50,0x20,0x86,0x60,0x01,0x23,0x9f,0xd9, + 0x06,0x23,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const char _sgl_vs_source_metal_sim[856] = { + 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, + 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, + 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, + 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, + 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x76, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x74,0x6d,0x3b,0x0a,0x7d,0x3b, + 0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f, + 0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, + 0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29, + 0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63, + 0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, + 0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, + 0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70, + 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x69,0x6e,0x74,0x53,0x69,0x7a, + 0x65,0x20,0x5b,0x5b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x73,0x69,0x7a,0x65,0x5d,0x5d, + 0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69, + 0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74, + 0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72, + 0x64,0x30,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31, + 0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75, + 0x74,0x65,0x28,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x70,0x73,0x69,0x7a,0x65,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69, + 0x62,0x75,0x74,0x65,0x28,0x33,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x23, + 0x6c,0x69,0x6e,0x65,0x20,0x31,0x37,0x20,0x22,0x73,0x67,0x6c,0x2e,0x67,0x6c,0x73, + 0x6c,0x22,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, + 0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f, + 0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e, + 0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x76,0x73,0x5f, + 0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x32,0x31,0x20,0x5b,0x5b,0x62,0x75, + 0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d, + 0x20,0x7b,0x7d,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x37,0x20,0x22,0x73, + 0x67,0x6c,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74, + 0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f, + 0x32,0x31,0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69, + 0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x38,0x20,0x22, + 0x73,0x67,0x6c,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75, + 0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x69,0x6e,0x74,0x53,0x69,0x7a,0x65,0x20,0x3d, + 0x20,0x69,0x6e,0x2e,0x70,0x73,0x69,0x7a,0x65,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65, + 0x20,0x31,0x39,0x20,0x22,0x73,0x67,0x6c,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20, + 0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x75,0x76,0x20,0x3d,0x20,0x5f,0x32,0x31,0x2e, + 0x74,0x6d,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e,0x74, + 0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31, + 0x2e,0x30,0x29,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x32,0x30,0x20,0x22,0x73, + 0x67,0x6c,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74, + 0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f, + 0x72,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f, + 0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +static const char _sgl_fs_source_metal_sim[489] = { + 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, + 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, + 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, + 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, + 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d, + 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, + 0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, + 0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29, + 0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63, + 0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, + 0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20, + 0x31,0x31,0x20,0x22,0x73,0x67,0x6c,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x66,0x72, + 0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74, + 0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20, + 0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c, + 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74, + 0x3e,0x20,0x74,0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, + 0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x74,0x65, + 0x78,0x53,0x6d,0x70,0x6c,0x72,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72, + 0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69, + 0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b, + 0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x31,0x20,0x22,0x73,0x67,0x6c,0x2e,0x67, + 0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61, + 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x2e,0x73,0x61, + 0x6d,0x70,0x6c,0x65,0x28,0x74,0x65,0x78,0x53,0x6d,0x70,0x6c,0x72,0x2c,0x20,0x69, + 0x6e,0x2e,0x75,0x76,0x2e,0x78,0x79,0x29,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x63,0x6f, + 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_D3D11) +static const uint8_t _sgl_vs_bytecode_hlsl4[1032] = { + 0x44,0x58,0x42,0x43,0x09,0x96,0xbb,0xbb,0xfc,0x44,0x44,0xa8,0xa4,0x1c,0x9e,0x45, + 0x50,0x97,0xf1,0xde,0x01,0x00,0x00,0x00,0x08,0x04,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x14,0x01,0x00,0x00,0x90,0x01,0x00,0x00,0x00,0x02,0x00,0x00, + 0x8c,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0xd8,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff, + 0x10,0x81,0x00,0x00,0xaf,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, + 0x73,0x00,0xab,0xab,0x3c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x98,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xa8,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x32,0x31,0x5f, + 0x6d,0x76,0x70,0x00,0x02,0x00,0x03,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x5f,0x32,0x31,0x5f,0x74,0x6d,0x00,0x4d,0x69,0x63,0x72,0x6f, + 0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68, + 0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30, + 0x2e,0x31,0x00,0xab,0x49,0x53,0x47,0x4e,0x74,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x68,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x03,0x03,0x00,0x00,0x68,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x68,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab, + 0x4f,0x53,0x47,0x4e,0x68,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00, + 0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44, + 0x00,0x53,0x56,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0xab,0xab,0xab, + 0x53,0x48,0x44,0x52,0x84,0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x61,0x00,0x00,0x00, + 0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03, + 0x32,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00, + 0x02,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x67,0x00,0x00,0x04, + 0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02, + 0x01,0x00,0x00,0x00,0x38,0x00,0x00,0x08,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x56,0x15,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x06,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, + 0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x36,0x00,0x00,0x05, + 0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x02,0x00,0x00,0x00, + 0x38,0x00,0x00,0x08,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x56,0x15,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x10,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00, + 0x00,0x00,0x00,0x00,0xa6,0x1a,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00, + 0x32,0x00,0x00,0x0a,0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0xf6,0x1f,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54, + 0x74,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x06,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 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,0x00, +}; +static const uint8_t _sgl_fs_bytecode_hlsl4[620] = { + 0x44,0x58,0x42,0x43,0x4f,0x7a,0xe1,0xcf,0x0c,0x89,0xc0,0x09,0x50,0x5a,0xca,0xe9, + 0x75,0x77,0xd1,0x26,0x01,0x00,0x00,0x00,0x6c,0x02,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0xd4,0x00,0x00,0x00,0x20,0x01,0x00,0x00,0x54,0x01,0x00,0x00, + 0xf0,0x01,0x00,0x00,0x52,0x44,0x45,0x46,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff, + 0x10,0x81,0x00,0x00,0x6d,0x00,0x00,0x00,0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x69,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x5f,0x74,0x65,0x78,0x5f,0x73,0x61,0x6d, + 0x70,0x6c,0x65,0x72,0x00,0x74,0x65,0x78,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f, + 0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64, + 0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x31, + 0x00,0xab,0xab,0xab,0x49,0x53,0x47,0x4e,0x44,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x03,0x00,0x00,0x38,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab, + 0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x61,0x72,0x67,0x65, + 0x74,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x94,0x00,0x00,0x00,0x40,0x00,0x00,0x00, + 0x25,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00, + 0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00, + 0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03, + 0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00, + 0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x45,0x00,0x00,0x09, + 0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00, + 0x38,0x00,0x00,0x07,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01, + 0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,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, + 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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +#elif defined(SOKOL_WGPU) +static const uint8_t _sgl_vs_bytecode_wgpu[1968] = { + 0x03,0x02,0x23,0x07,0x00,0x00,0x01,0x00,0x08,0x00,0x08,0x00,0x35,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x11,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x0b,0x00,0x06,0x00, + 0x02,0x00,0x00,0x00,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30, + 0x00,0x00,0x00,0x00,0x0e,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, + 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x21,0x00,0x00,0x00, + 0x25,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x33,0x00,0x00,0x00, + 0x07,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x05,0x00, + 0x07,0x00,0x00,0x00,0x73,0x67,0x6c,0x2e,0x67,0x6c,0x73,0x6c,0x00,0x00,0x00,0x00, + 0x03,0x00,0x37,0x00,0x02,0x00,0x00,0x00,0xc2,0x01,0x00,0x00,0x01,0x00,0x00,0x00, + 0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65, + 0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x76,0x75,0x6c,0x6b, + 0x61,0x6e,0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c, + 0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e, + 0x74,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c,0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f, + 0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64, + 0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x2d,0x65,0x6e,0x76,0x20,0x76,0x75,0x6c,0x6b, + 0x61,0x6e,0x31,0x2e,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c, + 0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x74,0x61,0x72,0x67,0x65, + 0x74,0x2d,0x65,0x6e,0x76,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c,0x0a,0x2f,0x2f,0x20, + 0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65, + 0x64,0x20,0x65,0x6e,0x74,0x72,0x79,0x2d,0x70,0x6f,0x69,0x6e,0x74,0x20,0x6d,0x61, + 0x69,0x6e,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x0a,0x00,0x05,0x00,0x04,0x00, + 0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x00,0x05,0x00,0x06,0x00, + 0x0d,0x00,0x00,0x00,0x67,0x6c,0x5f,0x50,0x65,0x72,0x56,0x65,0x72,0x74,0x65,0x78, + 0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x06,0x00,0x07,0x00, + 0x0d,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x67,0x6c,0x5f,0x50,0x6f,0x69,0x6e,0x74, + 0x53,0x69,0x7a,0x65,0x00,0x00,0x00,0x00,0x06,0x00,0x07,0x00,0x0d,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x67,0x6c,0x5f,0x43,0x6c,0x69,0x70,0x44,0x69,0x73,0x74,0x61, + 0x6e,0x63,0x65,0x00,0x06,0x00,0x07,0x00,0x0d,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x67,0x6c,0x5f,0x43,0x75,0x6c,0x6c,0x44,0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x00, + 0x05,0x00,0x03,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x05,0x00, + 0x13,0x00,0x00,0x00,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x00,0x00,0x00, + 0x06,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6d,0x76,0x70,0x00, + 0x06,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x74,0x6d,0x00,0x00, + 0x05,0x00,0x03,0x00,0x15,0x00,0x00,0x00,0x5f,0x32,0x31,0x00,0x05,0x00,0x05,0x00, + 0x1a,0x00,0x00,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x00,0x00,0x00, + 0x05,0x00,0x04,0x00,0x21,0x00,0x00,0x00,0x70,0x73,0x69,0x7a,0x65,0x00,0x00,0x00, + 0x05,0x00,0x03,0x00,0x25,0x00,0x00,0x00,0x75,0x76,0x00,0x00,0x05,0x00,0x05,0x00, + 0x2a,0x00,0x00,0x00,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x00,0x00, + 0x05,0x00,0x04,0x00,0x32,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x00, + 0x05,0x00,0x04,0x00,0x33,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x00, + 0x48,0x00,0x05,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x0d,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0b,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x0d,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x48,0x00,0x05,0x00, + 0x0d,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x47,0x00,0x03,0x00,0x0d,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x48,0x00,0x04,0x00, + 0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x48,0x00,0x05,0x00, + 0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x48,0x00,0x05,0x00,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x48,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x13,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x23,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x13,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x47,0x00,0x03,0x00, + 0x13,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x15,0x00,0x00,0x00, + 0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x15,0x00,0x00,0x00, + 0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x1a,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x21,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x25,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x2a,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x32,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x33,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x13,0x00,0x02,0x00,0x03,0x00,0x00,0x00, + 0x21,0x00,0x03,0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x16,0x00,0x03,0x00, + 0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x17,0x00,0x04,0x00,0x09,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x15,0x00,0x04,0x00,0x0a,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x0a,0x00,0x00,0x00, + 0x0b,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x04,0x00,0x0c,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x0d,0x00,0x00,0x00, + 0x09,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0d,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x15,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x2b,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x18,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x1e,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x12,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x14,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x13,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x14,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x16,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x19,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x09,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x19,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x1d,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x09,0x00,0x00,0x00, + 0x2b,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x20,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x23,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x17,0x00,0x04,0x00,0x28,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x29,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x28,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x29,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x2b,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x2b,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x00,0x00,0x80,0x3f, + 0x3b,0x00,0x04,0x00,0x1d,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x19,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x36,0x00,0x05,0x00,0x03,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0xf8,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x08,0x00,0x04,0x00, + 0x07,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x05,0x00, + 0x16,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x11,0x00,0x00,0x00, + 0x3d,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x17,0x00,0x00,0x00, + 0x3d,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1a,0x00,0x00,0x00, + 0x91,0x00,0x05,0x00,0x09,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x18,0x00,0x00,0x00, + 0x1b,0x00,0x00,0x00,0x41,0x00,0x05,0x00,0x1d,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, + 0x0f,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x3e,0x00,0x03,0x00,0x1e,0x00,0x00,0x00, + 0x1c,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x13,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x22,0x00,0x00,0x00, + 0x21,0x00,0x00,0x00,0x41,0x00,0x05,0x00,0x23,0x00,0x00,0x00,0x24,0x00,0x00,0x00, + 0x0f,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x3e,0x00,0x03,0x00,0x24,0x00,0x00,0x00, + 0x22,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x14,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x41,0x00,0x05,0x00,0x16,0x00,0x00,0x00,0x26,0x00,0x00,0x00, + 0x15,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x3d,0x00,0x04,0x00,0x12,0x00,0x00,0x00, + 0x27,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x3d,0x00,0x04,0x00,0x28,0x00,0x00,0x00, + 0x2b,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x51,0x00,0x05,0x00,0x08,0x00,0x00,0x00, + 0x2e,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x51,0x00,0x05,0x00, + 0x08,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x50,0x00,0x07,0x00,0x09,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x2e,0x00,0x00,0x00, + 0x2f,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x91,0x00,0x05,0x00, + 0x09,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x30,0x00,0x00,0x00, + 0x3e,0x00,0x03,0x00,0x25,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x08,0x00,0x04,0x00, + 0x07,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00, + 0x09,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x3e,0x00,0x03,0x00, + 0x32,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0xfd,0x00,0x01,0x00,0x38,0x00,0x01,0x00, +}; +static const uint8_t _sgl_fs_bytecode_wgpu[936] = { + 0x03,0x02,0x23,0x07,0x00,0x00,0x01,0x00,0x08,0x00,0x08,0x00,0x1a,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x11,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x0b,0x00,0x06,0x00, + 0x02,0x00,0x00,0x00,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30, + 0x00,0x00,0x00,0x00,0x0e,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x00,0x08,0x00,0x04,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, + 0x00,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x17,0x00,0x00,0x00, + 0x10,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x03,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x05,0x00,0x07,0x00,0x00,0x00, + 0x73,0x67,0x6c,0x2e,0x67,0x6c,0x73,0x6c,0x00,0x00,0x00,0x00,0x03,0x00,0x37,0x00, + 0x02,0x00,0x00,0x00,0xc2,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x2f,0x2f,0x20,0x4f, + 0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64, + 0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x76,0x75,0x6c,0x6b,0x61,0x6e,0x31,0x30, + 0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f, + 0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x6f,0x70, + 0x65,0x6e,0x67,0x6c,0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64, + 0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x74,0x61,0x72, + 0x67,0x65,0x74,0x2d,0x65,0x6e,0x76,0x20,0x76,0x75,0x6c,0x6b,0x61,0x6e,0x31,0x2e, + 0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f, + 0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x2d,0x65,0x6e, + 0x76,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f, + 0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x65,0x6e, + 0x74,0x72,0x79,0x2d,0x70,0x6f,0x69,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x0a,0x23, + 0x6c,0x69,0x6e,0x65,0x20,0x31,0x0a,0x00,0x05,0x00,0x04,0x00,0x05,0x00,0x00,0x00, + 0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x00,0x05,0x00,0x05,0x00,0x0b,0x00,0x00,0x00, + 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x05,0x00,0x03,0x00, + 0x0f,0x00,0x00,0x00,0x74,0x65,0x78,0x00,0x05,0x00,0x03,0x00,0x12,0x00,0x00,0x00, + 0x75,0x76,0x00,0x00,0x05,0x00,0x04,0x00,0x17,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f, + 0x72,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x0b,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x0f,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x0f,0x00,0x00,0x00,0x22,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x0f,0x00,0x00,0x00,0x21,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x47,0x00,0x04,0x00,0x17,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x13,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x21,0x00,0x03,0x00, + 0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x16,0x00,0x03,0x00,0x08,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x17,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x0a,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x09,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x0a,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x19,0x00,0x09,0x00,0x0c,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1b,0x00,0x03,0x00,0x0d,0x00,0x00,0x00, + 0x0c,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0d,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x0f,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x11,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x09,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x11,0x00,0x00,0x00,0x12,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x17,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x11,0x00,0x00,0x00,0x17,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x36,0x00,0x05,0x00,0x03,0x00,0x00,0x00,0x05,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xf8,0x00,0x02,0x00,0x06,0x00,0x00,0x00, + 0x08,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3d,0x00,0x04,0x00,0x0d,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x0f,0x00,0x00,0x00, + 0x3d,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x12,0x00,0x00,0x00, + 0x4f,0x00,0x07,0x00,0x13,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x14,0x00,0x00,0x00, + 0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x57,0x00,0x05,0x00, + 0x09,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x15,0x00,0x00,0x00, + 0x3d,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x17,0x00,0x00,0x00, + 0x85,0x00,0x05,0x00,0x09,0x00,0x00,0x00,0x19,0x00,0x00,0x00,0x16,0x00,0x00,0x00, + 0x18,0x00,0x00,0x00,0x3e,0x00,0x03,0x00,0x0b,0x00,0x00,0x00,0x19,0x00,0x00,0x00, + 0xfd,0x00,0x01,0x00,0x38,0x00,0x01,0x00, +}; +#elif defined(SOKOL_DUMMY_BACKEND) +static const char* _sgl_vs_source_dummy = ""; +static const char* _sgl_fs_source_dummy = ""; +#else +#error "Please define one of SOKOL_GLCORE33, SOKOL_GLES3, SOKOL_D3D11, SOKOL_METAL, SOKOL_WGPU or SOKOL_DUMMY_BACKEND!" +#endif + +// ████████ ██ ██ ██████ ███████ ███████ +// ██ ██ ██ ██ ██ ██ ██ +// ██ ████ ██████ █████ ███████ +// ██ ██ ██ ██ ██ +// ██ ██ ██ ███████ ███████ +// +// >>types +typedef enum { + SGL_PRIMITIVETYPE_POINTS = 0, + SGL_PRIMITIVETYPE_LINES, + SGL_PRIMITIVETYPE_LINE_STRIP, + SGL_PRIMITIVETYPE_TRIANGLES, + SGL_PRIMITIVETYPE_TRIANGLE_STRIP, + SGL_PRIMITIVETYPE_QUADS, + SGL_NUM_PRIMITIVE_TYPES, +} _sgl_primitive_type_t; + +typedef struct { + uint32_t id; + sg_resource_state state; +} _sgl_slot_t; + +typedef struct { + int size; + int queue_top; + uint32_t* gen_ctrs; + int* free_queue; +} _sgl_pool_t; + +typedef struct { + _sgl_slot_t slot; + sg_pipeline pip[SGL_NUM_PRIMITIVE_TYPES]; +} _sgl_pipeline_t; + +typedef struct { + _sgl_pool_t pool; + _sgl_pipeline_t* pips; +} _sgl_pipeline_pool_t; + +typedef enum { + SGL_MATRIXMODE_MODELVIEW, + SGL_MATRIXMODE_PROJECTION, + SGL_MATRIXMODE_TEXTURE, + SGL_NUM_MATRIXMODES +} _sgl_matrix_mode_t; + +typedef struct { + float pos[3]; + float uv[2]; + uint32_t rgba; + float psize; +} _sgl_vertex_t; + +typedef struct { + float v[4][4]; +} _sgl_matrix_t; + +typedef struct { + _sgl_matrix_t mvp; /* model-view-projection matrix */ + _sgl_matrix_t tm; /* texture matrix */ +} _sgl_uniform_t; + +typedef enum { + SGL_COMMAND_DRAW, + SGL_COMMAND_VIEWPORT, + SGL_COMMAND_SCISSOR_RECT, +} _sgl_command_type_t; + +typedef struct { + sg_pipeline pip; + sg_image img; + int base_vertex; + int num_vertices; + int uniform_index; +} _sgl_draw_args_t; + +typedef struct { + int x, y, w, h; + bool origin_top_left; +} _sgl_viewport_args_t; + +typedef struct { + int x, y, w, h; + bool origin_top_left; +} _sgl_scissor_rect_args_t; + +typedef union { + _sgl_draw_args_t draw; + _sgl_viewport_args_t viewport; + _sgl_scissor_rect_args_t scissor_rect; +} _sgl_args_t; + +typedef struct { + _sgl_command_type_t cmd; + int layer_id; + _sgl_args_t args; +} _sgl_command_t; + +#define _SGL_INVALID_SLOT_INDEX (0) +#define _SGL_MAX_STACK_DEPTH (64) +#define _SGL_DEFAULT_CONTEXT_POOL_SIZE (4) +#define _SGL_DEFAULT_PIPELINE_POOL_SIZE (64) +#define _SGL_DEFAULT_MAX_VERTICES (1<<16) +#define _SGL_DEFAULT_MAX_COMMANDS (1<<14) +#define _SGL_SLOT_SHIFT (16) +#define _SGL_MAX_POOL_SIZE (1<<_SGL_SLOT_SHIFT) +#define _SGL_SLOT_MASK (_SGL_MAX_POOL_SIZE-1) + +typedef struct { + _sgl_slot_t slot; + sgl_context_desc_t desc; + uint32_t frame_id; + uint32_t update_frame_id; + struct { + int cap; + int next; + _sgl_vertex_t* ptr; + } vertices; + struct { + int cap; + int next; + _sgl_uniform_t* ptr; + } uniforms; + struct { + int cap; + int next; + _sgl_command_t* ptr; + } commands; + + /* state tracking */ + int base_vertex; + int vtx_count; /* number of times vtx function has been called, used for non-triangle primitives */ + sgl_error_t error; + bool in_begin; + int layer_id; + float u, v; + uint32_t rgba; + float point_size; + _sgl_primitive_type_t cur_prim_type; + sg_image cur_img; + bool texturing_enabled; + bool matrix_dirty; /* reset in sgl_end(), set in any of the matrix stack functions */ + + /* sokol-gfx resources */ + sg_buffer vbuf; + sgl_pipeline def_pip; + sg_bindings bind; + + /* pipeline stack */ + int pip_tos; + sgl_pipeline pip_stack[_SGL_MAX_STACK_DEPTH]; + + /* matrix stacks */ + _sgl_matrix_mode_t cur_matrix_mode; + int matrix_tos[SGL_NUM_MATRIXMODES]; + _sgl_matrix_t matrix_stack[SGL_NUM_MATRIXMODES][_SGL_MAX_STACK_DEPTH]; +} _sgl_context_t; + +typedef struct { + _sgl_pool_t pool; + _sgl_context_t* contexts; +} _sgl_context_pool_t; + +typedef struct { + uint32_t init_cookie; + sgl_desc_t desc; + sg_image def_img; // a default white texture + sg_shader shd; // same shader for all contexts + sgl_context def_ctx_id; + sgl_context cur_ctx_id; + _sgl_context_t* cur_ctx; // may be 0! + _sgl_pipeline_pool_t pip_pool; + _sgl_context_pool_t context_pool; +} _sgl_t; +static _sgl_t _sgl; + +// ██ ██████ ██████ ██████ ██ ███ ██ ██████ +// ██ ██ ██ ██ ██ ██ ████ ██ ██ +// ██ ██ ██ ██ ███ ██ ███ ██ ██ ██ ██ ██ ███ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██████ ██████ ██████ ██ ██ ████ ██████ +// +// >>logging +#if defined(SOKOL_DEBUG) +#define _SGL_LOGITEM_XMACRO(item,msg) #item ": " msg, +static const char* _sgl_log_messages[] = { + _SGL_LOG_ITEMS +}; +#undef _SGL_LOGITEM_XMACRO +#endif // SOKOL_DEBUG + +#define _SGL_PANIC(code) _sgl_log(SGL_LOGITEM_ ##code, 0, __LINE__) +#define _SGL_ERROR(code) _sgl_log(SGL_LOGITEM_ ##code, 1, __LINE__) +#define _SGL_WARN(code) _sgl_log(SGL_LOGITEM_ ##code, 2, __LINE__) +#define _SGL_INFO(code) _sgl_log(SGL_LOGITEM_ ##code, 3, __LINE__) + +static void _sgl_log(sgl_log_item_t log_item, uint32_t log_level, uint32_t line_nr) { + if (_sgl.desc.logger.func) { + #if defined(SOKOL_DEBUG) + const char* filename = __FILE__; + const char* message = _sgl_log_messages[log_item]; + #else + const char* filename = 0; + const char* message = 0; + #endif + _sgl.desc.logger.func("sgl", log_level, log_item, message, line_nr, filename, _sgl.desc.logger.user_data); + } + else { + // for log level PANIC it would be 'undefined behaviour' to continue + if (log_level == 0) { + abort(); + } + } +} + +// ███ ███ ███████ ███ ███ ██████ ██████ ██ ██ +// ████ ████ ██ ████ ████ ██ ██ ██ ██ ██ ██ +// ██ ████ ██ █████ ██ ████ ██ ██ ██ ██████ ████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ██ ██ ██████ ██ ██ ██ +// +// >>memory +static void _sgl_clear(void* ptr, size_t size) { + SOKOL_ASSERT(ptr && (size > 0)); + memset(ptr, 0, size); +} + +static void* _sgl_malloc(size_t size) { + SOKOL_ASSERT(size > 0); + void* ptr; + if (_sgl.desc.allocator.alloc) { + ptr = _sgl.desc.allocator.alloc(size, _sgl.desc.allocator.user_data); + } + else { + ptr = malloc(size); + } + if (0 == ptr) { + _SGL_PANIC(MALLOC_FAILED); + } + return ptr; +} + +static void* _sgl_malloc_clear(size_t size) { + void* ptr = _sgl_malloc(size); + _sgl_clear(ptr, size); + return ptr; +} + +static void _sgl_free(void* ptr) { + if (_sgl.desc.allocator.free) { + _sgl.desc.allocator.free(ptr, _sgl.desc.allocator.user_data); + } + else { + free(ptr); + } +} + +// ██████ ██████ ██████ ██ +// ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ +// ██ ██████ ██████ ███████ +// +// >>pool +static void _sgl_init_pool(_sgl_pool_t* pool, int num) { + SOKOL_ASSERT(pool && (num >= 1)); + /* slot 0 is reserved for the 'invalid id', so bump the pool size by 1 */ + pool->size = num + 1; + pool->queue_top = 0; + /* generation counters indexable by pool slot index, slot 0 is reserved */ + size_t gen_ctrs_size = sizeof(uint32_t) * (size_t)pool->size; + pool->gen_ctrs = (uint32_t*) _sgl_malloc_clear(gen_ctrs_size); + /* it's not a bug to only reserve 'num' here */ + pool->free_queue = (int*) _sgl_malloc_clear(sizeof(int) * (size_t)num); + /* never allocate the zero-th pool item since the invalid id is 0 */ + for (int i = pool->size-1; i >= 1; i--) { + pool->free_queue[pool->queue_top++] = i; + } +} + +static void _sgl_discard_pool(_sgl_pool_t* pool) { + SOKOL_ASSERT(pool); + SOKOL_ASSERT(pool->free_queue); + _sgl_free(pool->free_queue); + pool->free_queue = 0; + SOKOL_ASSERT(pool->gen_ctrs); + _sgl_free(pool->gen_ctrs); + pool->gen_ctrs = 0; + pool->size = 0; + pool->queue_top = 0; +} + +static int _sgl_pool_alloc_index(_sgl_pool_t* pool) { + SOKOL_ASSERT(pool); + SOKOL_ASSERT(pool->free_queue); + if (pool->queue_top > 0) { + int slot_index = pool->free_queue[--pool->queue_top]; + SOKOL_ASSERT((slot_index > 0) && (slot_index < pool->size)); + return slot_index; + } + else { + /* pool exhausted */ + return _SGL_INVALID_SLOT_INDEX; + } +} + +static void _sgl_pool_free_index(_sgl_pool_t* pool, int slot_index) { + SOKOL_ASSERT((slot_index > _SGL_INVALID_SLOT_INDEX) && (slot_index < pool->size)); + SOKOL_ASSERT(pool); + SOKOL_ASSERT(pool->free_queue); + SOKOL_ASSERT(pool->queue_top < pool->size); + #ifdef SOKOL_DEBUG + /* debug check against double-free */ + for (int i = 0; i < pool->queue_top; i++) { + SOKOL_ASSERT(pool->free_queue[i] != slot_index); + } + #endif + pool->free_queue[pool->queue_top++] = slot_index; + SOKOL_ASSERT(pool->queue_top <= (pool->size-1)); +} + +/* allocate the slot at slot_index: + - bump the slot's generation counter + - create a resource id from the generation counter and slot index + - set the slot's id to this id + - set the slot's state to ALLOC + - return the resource id +*/ +static uint32_t _sgl_slot_alloc(_sgl_pool_t* pool, _sgl_slot_t* slot, int slot_index) { + /* FIXME: add handling for an overflowing generation counter, + for now, just overflow (another option is to disable + the slot) + */ + SOKOL_ASSERT(pool && pool->gen_ctrs); + SOKOL_ASSERT((slot_index > _SGL_INVALID_SLOT_INDEX) && (slot_index < pool->size)); + SOKOL_ASSERT((slot->state == SG_RESOURCESTATE_INITIAL) && (slot->id == SG_INVALID_ID)); + uint32_t ctr = ++pool->gen_ctrs[slot_index]; + slot->id = (ctr<<_SGL_SLOT_SHIFT)|(slot_index & _SGL_SLOT_MASK); + slot->state = SG_RESOURCESTATE_ALLOC; + return slot->id; +} + +/* extract slot index from id */ +static int _sgl_slot_index(uint32_t id) { + int slot_index = (int) (id & _SGL_SLOT_MASK); + SOKOL_ASSERT(_SGL_INVALID_SLOT_INDEX != slot_index); + return slot_index; +} + +// ██████ ██ ██████ ███████ ██ ██ ███ ██ ███████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ +// ██████ ██ ██████ █████ ██ ██ ██ ██ ██ █████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ███████ ███████ ██ ██ ████ ███████ ███████ +// +// >>pipelines +static void _sgl_reset_pipeline(_sgl_pipeline_t* pip) { + SOKOL_ASSERT(pip); + _sgl_clear(pip, sizeof(_sgl_pipeline_t)); +} + +static void _sgl_setup_pipeline_pool(int pool_size) { + /* note: the pools here will have an additional item, since slot 0 is reserved */ + SOKOL_ASSERT((pool_size > 0) && (pool_size < _SGL_MAX_POOL_SIZE)); + _sgl_init_pool(&_sgl.pip_pool.pool, pool_size); + size_t pool_byte_size = sizeof(_sgl_pipeline_t) * (size_t)_sgl.pip_pool.pool.size; + _sgl.pip_pool.pips = (_sgl_pipeline_t*) _sgl_malloc_clear(pool_byte_size); +} + +static void _sgl_discard_pipeline_pool(void) { + SOKOL_ASSERT(0 != _sgl.pip_pool.pips); + _sgl_free(_sgl.pip_pool.pips); _sgl.pip_pool.pips = 0; + _sgl_discard_pool(&_sgl.pip_pool.pool); +} + +/* get pipeline pointer without id-check */ +static _sgl_pipeline_t* _sgl_pipeline_at(uint32_t pip_id) { + SOKOL_ASSERT(SG_INVALID_ID != pip_id); + int slot_index = _sgl_slot_index(pip_id); + SOKOL_ASSERT((slot_index > _SGL_INVALID_SLOT_INDEX) && (slot_index < _sgl.pip_pool.pool.size)); + return &_sgl.pip_pool.pips[slot_index]; +} + +/* get pipeline pointer with id-check, returns 0 if no match */ +static _sgl_pipeline_t* _sgl_lookup_pipeline(uint32_t pip_id) { + if (SG_INVALID_ID != pip_id) { + _sgl_pipeline_t* pip = _sgl_pipeline_at(pip_id); + if (pip->slot.id == pip_id) { + return pip; + } + } + return 0; +} + +/* make pipeline id from uint32_t id */ +static sgl_pipeline _sgl_make_pip_id(uint32_t pip_id) { + sgl_pipeline pip = { pip_id }; + return pip; +} + +static sgl_pipeline _sgl_alloc_pipeline(void) { + sgl_pipeline res; + int slot_index = _sgl_pool_alloc_index(&_sgl.pip_pool.pool); + if (_SGL_INVALID_SLOT_INDEX != slot_index) { + res = _sgl_make_pip_id(_sgl_slot_alloc(&_sgl.pip_pool.pool, &_sgl.pip_pool.pips[slot_index].slot, slot_index)); + } + else { + /* pool is exhausted */ + res = _sgl_make_pip_id(SG_INVALID_ID); + } + return res; +} + +static void _sgl_init_pipeline(sgl_pipeline pip_id, const sg_pipeline_desc* in_desc, const sgl_context_desc_t* ctx_desc) { + SOKOL_ASSERT((pip_id.id != SG_INVALID_ID) && in_desc && ctx_desc); + + /* create a new desc with 'patched' shader and pixel format state */ + sg_pipeline_desc desc = *in_desc; + desc.layout.buffers[0].stride = sizeof(_sgl_vertex_t); + { + sg_vertex_attr_desc* pos = &desc.layout.attrs[0]; + pos->offset = offsetof(_sgl_vertex_t, pos); + pos->format = SG_VERTEXFORMAT_FLOAT3; + } + { + sg_vertex_attr_desc* uv = &desc.layout.attrs[1]; + uv->offset = offsetof(_sgl_vertex_t, uv); + uv->format = SG_VERTEXFORMAT_FLOAT2; + } + { + sg_vertex_attr_desc* rgba = &desc.layout.attrs[2]; + rgba->offset = offsetof(_sgl_vertex_t, rgba); + rgba->format = SG_VERTEXFORMAT_UBYTE4N; + } + { + sg_vertex_attr_desc* psize = &desc.layout.attrs[3]; + psize->offset = offsetof(_sgl_vertex_t, psize); + psize->format = SG_VERTEXFORMAT_FLOAT; + } + if (in_desc->shader.id == SG_INVALID_ID) { + desc.shader = _sgl.shd; + } + desc.index_type = SG_INDEXTYPE_NONE; + desc.sample_count = ctx_desc->sample_count; + if (desc.face_winding == _SG_FACEWINDING_DEFAULT) { + desc.face_winding = _sgl.desc.face_winding; + } + desc.depth.pixel_format = ctx_desc->depth_format; + if (ctx_desc->depth_format == SG_PIXELFORMAT_NONE) { + desc.depth.write_enabled = false; + } + desc.colors[0].pixel_format = ctx_desc->color_format; + if (desc.colors[0].write_mask == _SG_COLORMASK_DEFAULT) { + desc.colors[0].write_mask = SG_COLORMASK_RGB; + } + + _sgl_pipeline_t* pip = _sgl_lookup_pipeline(pip_id.id); + SOKOL_ASSERT(pip && (pip->slot.state == SG_RESOURCESTATE_ALLOC)); + pip->slot.state = SG_RESOURCESTATE_VALID; + for (int i = 0; i < SGL_NUM_PRIMITIVE_TYPES; i++) { + switch (i) { + case SGL_PRIMITIVETYPE_POINTS: + desc.primitive_type = SG_PRIMITIVETYPE_POINTS; + break; + case SGL_PRIMITIVETYPE_LINES: + desc.primitive_type = SG_PRIMITIVETYPE_LINES; + break; + case SGL_PRIMITIVETYPE_LINE_STRIP: + desc.primitive_type = SG_PRIMITIVETYPE_LINE_STRIP; + break; + case SGL_PRIMITIVETYPE_TRIANGLES: + desc.primitive_type = SG_PRIMITIVETYPE_TRIANGLES; + break; + case SGL_PRIMITIVETYPE_TRIANGLE_STRIP: + case SGL_PRIMITIVETYPE_QUADS: + desc.primitive_type = SG_PRIMITIVETYPE_TRIANGLE_STRIP; + break; + } + if (SGL_PRIMITIVETYPE_QUADS == i) { + /* quads are emulated via triangles, use the same pipeline object */ + pip->pip[i] = pip->pip[SGL_PRIMITIVETYPE_TRIANGLES]; + } + else { + pip->pip[i] = sg_make_pipeline(&desc); + if (pip->pip[i].id == SG_INVALID_ID) { + _SGL_ERROR(MAKE_PIPELINE_FAILED); + pip->slot.state = SG_RESOURCESTATE_FAILED; + } + } + } +} + +static sgl_pipeline _sgl_make_pipeline(const sg_pipeline_desc* desc, const sgl_context_desc_t* ctx_desc) { + SOKOL_ASSERT(desc && ctx_desc); + sgl_pipeline pip_id = _sgl_alloc_pipeline(); + if (pip_id.id != SG_INVALID_ID) { + _sgl_init_pipeline(pip_id, desc, ctx_desc); + } + else { + _SGL_ERROR(PIPELINE_POOL_EXHAUSTED); + } + return pip_id; +} + +static void _sgl_destroy_pipeline(sgl_pipeline pip_id) { + _sgl_pipeline_t* pip = _sgl_lookup_pipeline(pip_id.id); + if (pip) { + sg_push_debug_group("sokol-gl"); + for (int i = 0; i < SGL_NUM_PRIMITIVE_TYPES; i++) { + if (i != SGL_PRIMITIVETYPE_QUADS) { + sg_destroy_pipeline(pip->pip[i]); + } + } + sg_pop_debug_group(); + _sgl_reset_pipeline(pip); + _sgl_pool_free_index(&_sgl.pip_pool.pool, _sgl_slot_index(pip_id.id)); + } +} + +static sg_pipeline _sgl_get_pipeline(sgl_pipeline pip_id, _sgl_primitive_type_t prim_type) { + _sgl_pipeline_t* pip = _sgl_lookup_pipeline(pip_id.id); + if (pip) { + return pip->pip[prim_type]; + } + else { + sg_pipeline dummy_id = { SG_INVALID_ID }; + return dummy_id; + } +} + +// ██████ ██████ ███ ██ ████████ ███████ ██ ██ ████████ ███████ +// ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ █████ ███ ██ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██████ ██ ████ ██ ███████ ██ ██ ██ ███████ +// +// >>contexts +static void _sgl_reset_context(_sgl_context_t* ctx) { + SOKOL_ASSERT(ctx); + SOKOL_ASSERT(0 == ctx->vertices.ptr); + SOKOL_ASSERT(0 == ctx->uniforms.ptr); + SOKOL_ASSERT(0 == ctx->commands.ptr); + _sgl_clear(ctx, sizeof(_sgl_context_t)); +} + +static void _sgl_setup_context_pool(int pool_size) { + /* note: the pools here will have an additional item, since slot 0 is reserved */ + SOKOL_ASSERT((pool_size > 0) && (pool_size < _SGL_MAX_POOL_SIZE)); + _sgl_init_pool(&_sgl.context_pool.pool, pool_size); + size_t pool_byte_size = sizeof(_sgl_context_t) * (size_t)_sgl.context_pool.pool.size; + _sgl.context_pool.contexts = (_sgl_context_t*) _sgl_malloc_clear(pool_byte_size); +} + +static void _sgl_discard_context_pool(void) { + SOKOL_ASSERT(0 != _sgl.context_pool.contexts); + _sgl_free(_sgl.context_pool.contexts); _sgl.context_pool.contexts = 0; + _sgl_discard_pool(&_sgl.context_pool.pool); +} + +// get context pointer without id-check +static _sgl_context_t* _sgl_context_at(uint32_t ctx_id) { + SOKOL_ASSERT(SG_INVALID_ID != ctx_id); + int slot_index = _sgl_slot_index(ctx_id); + SOKOL_ASSERT((slot_index > _SGL_INVALID_SLOT_INDEX) && (slot_index < _sgl.context_pool.pool.size)); + return &_sgl.context_pool.contexts[slot_index]; +} + +// get context pointer with id-check, returns 0 if no match +static _sgl_context_t* _sgl_lookup_context(uint32_t ctx_id) { + if (SG_INVALID_ID != ctx_id) { + _sgl_context_t* ctx = _sgl_context_at(ctx_id); + if (ctx->slot.id == ctx_id) { + return ctx; + } + } + return 0; +} + +// make context id from uint32_t id +static sgl_context _sgl_make_ctx_id(uint32_t ctx_id) { + sgl_context ctx = { ctx_id }; + return ctx; +} + +static sgl_context _sgl_alloc_context(void) { + sgl_context res; + int slot_index = _sgl_pool_alloc_index(&_sgl.context_pool.pool); + if (_SGL_INVALID_SLOT_INDEX != slot_index) { + res = _sgl_make_ctx_id(_sgl_slot_alloc(&_sgl.context_pool.pool, &_sgl.context_pool.contexts[slot_index].slot, slot_index)); + } + else { + // pool is exhausted + res = _sgl_make_ctx_id(SG_INVALID_ID); + } + return res; +} + +// return sgl_context_desc_t with patched defaults +static sgl_context_desc_t _sgl_context_desc_defaults(const sgl_context_desc_t* desc) { + sgl_context_desc_t res = *desc; + res.max_vertices = _sgl_def(desc->max_vertices, _SGL_DEFAULT_MAX_VERTICES); + res.max_commands = _sgl_def(desc->max_commands, _SGL_DEFAULT_MAX_COMMANDS); + return res; +} + +static void _sgl_identity(_sgl_matrix_t*); +static sg_commit_listener _sgl_make_commit_listener(_sgl_context_t* ctx); +static void _sgl_init_context(sgl_context ctx_id, const sgl_context_desc_t* in_desc) { + SOKOL_ASSERT((ctx_id.id != SG_INVALID_ID) && in_desc); + _sgl_context_t* ctx = _sgl_lookup_context(ctx_id.id); + SOKOL_ASSERT(ctx); + ctx->desc = _sgl_context_desc_defaults(in_desc); + // NOTE: frame_id must be non-zero, so that updates trigger in first frame + ctx->frame_id = 1; + ctx->cur_img = _sgl.def_img; + + // allocate buffers and pools + ctx->vertices.cap = ctx->desc.max_vertices; + ctx->commands.cap = ctx->uniforms.cap = ctx->desc.max_commands; + ctx->vertices.ptr = (_sgl_vertex_t*) _sgl_malloc((size_t)ctx->vertices.cap * sizeof(_sgl_vertex_t)); + ctx->uniforms.ptr = (_sgl_uniform_t*) _sgl_malloc((size_t)ctx->uniforms.cap * sizeof(_sgl_uniform_t)); + ctx->commands.ptr = (_sgl_command_t*) _sgl_malloc((size_t)ctx->commands.cap * sizeof(_sgl_command_t)); + + // create sokol-gfx resource objects + sg_push_debug_group("sokol-gl"); + + sg_buffer_desc vbuf_desc; + _sgl_clear(&vbuf_desc, sizeof(vbuf_desc)); + vbuf_desc.size = (size_t)ctx->vertices.cap * sizeof(_sgl_vertex_t); + vbuf_desc.type = SG_BUFFERTYPE_VERTEXBUFFER; + vbuf_desc.usage = SG_USAGE_STREAM; + vbuf_desc.label = "sgl-vertex-buffer"; + ctx->vbuf = sg_make_buffer(&vbuf_desc); + SOKOL_ASSERT(SG_INVALID_ID != ctx->vbuf.id); + ctx->bind.vertex_buffers[0] = ctx->vbuf; + + sg_pipeline_desc def_pip_desc; + _sgl_clear(&def_pip_desc, sizeof(def_pip_desc)); + def_pip_desc.depth.write_enabled = true; + ctx->def_pip = _sgl_make_pipeline(&def_pip_desc, &ctx->desc); + if (!sg_add_commit_listener(_sgl_make_commit_listener(ctx))) { + _SGL_ERROR(ADD_COMMIT_LISTENER_FAILED); + } + sg_pop_debug_group(); + + // default state + ctx->rgba = 0xFFFFFFFF; + ctx->point_size = 1.0f; + for (int i = 0; i < SGL_NUM_MATRIXMODES; i++) { + _sgl_identity(&ctx->matrix_stack[i][0]); + } + ctx->pip_stack[0] = ctx->def_pip; + ctx->matrix_dirty = true; +} + +static sgl_context _sgl_make_context(const sgl_context_desc_t* desc) { + SOKOL_ASSERT(desc); + sgl_context ctx_id = _sgl_alloc_context(); + if (ctx_id.id != SG_INVALID_ID) { + _sgl_init_context(ctx_id, desc); + } + else { + _SGL_ERROR(CONTEXT_POOL_EXHAUSTED); + } + return ctx_id; +} + +static void _sgl_destroy_context(sgl_context ctx_id) { + _sgl_context_t* ctx = _sgl_lookup_context(ctx_id.id); + if (ctx) { + SOKOL_ASSERT(ctx->vertices.ptr); + SOKOL_ASSERT(ctx->uniforms.ptr); + SOKOL_ASSERT(ctx->commands.ptr); + + _sgl_free(ctx->vertices.ptr); + _sgl_free(ctx->uniforms.ptr); + _sgl_free(ctx->commands.ptr); + ctx->vertices.ptr = 0; + ctx->uniforms.ptr = 0; + ctx->commands.ptr = 0; + + sg_push_debug_group("sokol-gl"); + sg_destroy_buffer(ctx->vbuf); + _sgl_destroy_pipeline(ctx->def_pip); + sg_remove_commit_listener(_sgl_make_commit_listener(ctx)); + sg_pop_debug_group(); + + _sgl_reset_context(ctx); + _sgl_pool_free_index(&_sgl.context_pool.pool, _sgl_slot_index(ctx_id.id)); + } +} + +// ███ ███ ██ ███████ ██████ +// ████ ████ ██ ██ ██ +// ██ ████ ██ ██ ███████ ██ +// ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ███████ ██████ +// +// >>misc +static void _sgl_begin(_sgl_context_t* ctx, _sgl_primitive_type_t mode) { + ctx->in_begin = true; + ctx->base_vertex = ctx->vertices.next; + ctx->vtx_count = 0; + ctx->cur_prim_type = mode; +} + +static void _sgl_rewind(_sgl_context_t* ctx) { + ctx->frame_id++; + ctx->vertices.next = 0; + ctx->uniforms.next = 0; + ctx->commands.next = 0; + ctx->base_vertex = 0; + ctx->error = SGL_NO_ERROR; + ctx->layer_id = 0; + ctx->matrix_dirty = true; +} + +// called from inside sokol-gfx sg_commit() +static void _sgl_commit_listener(void* userdata) { + _sgl_context_t* ctx = _sgl_lookup_context((uint32_t)(uintptr_t)userdata); + if (ctx) { + _sgl_rewind(ctx); + } +} + +static sg_commit_listener _sgl_make_commit_listener(_sgl_context_t* ctx) { + sg_commit_listener listener = { _sgl_commit_listener, (void*)(uintptr_t)(ctx->slot.id) }; + return listener; +} + +static _sgl_vertex_t* _sgl_next_vertex(_sgl_context_t* ctx) { + if (ctx->vertices.next < ctx->vertices.cap) { + return &ctx->vertices.ptr[ctx->vertices.next++]; + } + else { + ctx->error = SGL_ERROR_VERTICES_FULL; + return 0; + } +} + +static _sgl_uniform_t* _sgl_next_uniform(_sgl_context_t* ctx) { + if (ctx->uniforms.next < ctx->uniforms.cap) { + return &ctx->uniforms.ptr[ctx->uniforms.next++]; + } + else { + ctx->error = SGL_ERROR_UNIFORMS_FULL; + return 0; + } +} + +static _sgl_command_t* _sgl_cur_command(_sgl_context_t* ctx) { + if (ctx->commands.next > 0) { + return &ctx->commands.ptr[ctx->commands.next - 1]; + } + else { + return 0; + } +} + +static _sgl_command_t* _sgl_next_command(_sgl_context_t* ctx) { + if (ctx->commands.next < ctx->commands.cap) { + return &ctx->commands.ptr[ctx->commands.next++]; + } + else { + ctx->error = SGL_ERROR_COMMANDS_FULL; + return 0; + } +} + +static uint32_t _sgl_pack_rgbab(uint8_t r, uint8_t g, uint8_t b, uint8_t a) { + return (uint32_t)(((uint32_t)a<<24)|((uint32_t)b<<16)|((uint32_t)g<<8)|r); +} + +static float _sgl_clamp(float v, float lo, float hi) { + if (v < lo) return lo; + else if (v > hi) return hi; + else return v; +} + +static uint32_t _sgl_pack_rgbaf(float r, float g, float b, float a) { + uint8_t r_u8 = (uint8_t) (_sgl_clamp(r, 0.0f, 1.0f) * 255.0f); + uint8_t g_u8 = (uint8_t) (_sgl_clamp(g, 0.0f, 1.0f) * 255.0f); + uint8_t b_u8 = (uint8_t) (_sgl_clamp(b, 0.0f, 1.0f) * 255.0f); + uint8_t a_u8 = (uint8_t) (_sgl_clamp(a, 0.0f, 1.0f) * 255.0f); + return _sgl_pack_rgbab(r_u8, g_u8, b_u8, a_u8); +} + +static void _sgl_vtx(_sgl_context_t* ctx, float x, float y, float z, float u, float v, uint32_t rgba) { + SOKOL_ASSERT(ctx->in_begin); + _sgl_vertex_t* vtx; + /* handle non-native primitive types */ + if ((ctx->cur_prim_type == SGL_PRIMITIVETYPE_QUADS) && ((ctx->vtx_count & 3) == 3)) { + /* for quads, before writing the last quad vertex, reuse + the first and third vertex to start the second triangle in the quad + */ + vtx = _sgl_next_vertex(ctx); + if (vtx) { *vtx = *(vtx - 3); } + vtx = _sgl_next_vertex(ctx); + if (vtx) { *vtx = *(vtx - 2); } + } + vtx = _sgl_next_vertex(ctx); + if (vtx) { + vtx->pos[0] = x; vtx->pos[1] = y; vtx->pos[2] = z; + vtx->uv[0] = u; vtx->uv[1] = v; + vtx->rgba = rgba; + vtx->psize = ctx->point_size; + } + ctx->vtx_count++; +} + +static void _sgl_identity(_sgl_matrix_t* m) { + for (int c = 0; c < 4; c++) { + for (int r = 0; r < 4; r++) { + m->v[c][r] = (r == c) ? 1.0f : 0.0f; + } + } +} + +static void _sgl_transpose(_sgl_matrix_t* dst, const _sgl_matrix_t* m) { + SOKOL_ASSERT(dst != m); + for (int c = 0; c < 4; c++) { + for (int r = 0; r < 4; r++) { + dst->v[r][c] = m->v[c][r]; + } + } +} + +/* _sgl_rotate, _sgl_frustum, _sgl_ortho from MESA m_matric.c */ +static void _sgl_matmul4(_sgl_matrix_t* p, const _sgl_matrix_t* a, const _sgl_matrix_t* b) { + for (int r = 0; r < 4; r++) { + float ai0=a->v[0][r], ai1=a->v[1][r], ai2=a->v[2][r], ai3=a->v[3][r]; + p->v[0][r] = ai0*b->v[0][0] + ai1*b->v[0][1] + ai2*b->v[0][2] + ai3*b->v[0][3]; + p->v[1][r] = ai0*b->v[1][0] + ai1*b->v[1][1] + ai2*b->v[1][2] + ai3*b->v[1][3]; + p->v[2][r] = ai0*b->v[2][0] + ai1*b->v[2][1] + ai2*b->v[2][2] + ai3*b->v[2][3]; + p->v[3][r] = ai0*b->v[3][0] + ai1*b->v[3][1] + ai2*b->v[3][2] + ai3*b->v[3][3]; + } +} + +static void _sgl_mul(_sgl_matrix_t* dst, const _sgl_matrix_t* m) { + _sgl_matmul4(dst, dst, m); +} + +static void _sgl_rotate(_sgl_matrix_t* dst, float a, float x, float y, float z) { + + float s = sinf(a); + float c = cosf(a); + + float mag = sqrtf(x*x + y*y + z*z); + if (mag < 1.0e-4F) { + return; + } + x /= mag; + y /= mag; + z /= mag; + float xx = x * x; + float yy = y * y; + float zz = z * z; + float xy = x * y; + float yz = y * z; + float zx = z * x; + float xs = x * s; + float ys = y * s; + float zs = z * s; + float one_c = 1.0f - c; + + _sgl_matrix_t m; + m.v[0][0] = (one_c * xx) + c; + m.v[1][0] = (one_c * xy) - zs; + m.v[2][0] = (one_c * zx) + ys; + m.v[3][0] = 0.0f; + m.v[0][1] = (one_c * xy) + zs; + m.v[1][1] = (one_c * yy) + c; + m.v[2][1] = (one_c * yz) - xs; + m.v[3][1] = 0.0f; + m.v[0][2] = (one_c * zx) - ys; + m.v[1][2] = (one_c * yz) + xs; + m.v[2][2] = (one_c * zz) + c; + m.v[3][2] = 0.0f; + m.v[0][3] = 0.0f; + m.v[1][3] = 0.0f; + m.v[2][3] = 0.0f; + m.v[3][3] = 1.0f; + _sgl_mul(dst, &m); +} + +static void _sgl_scale(_sgl_matrix_t* dst, float x, float y, float z) { + for (int r = 0; r < 4; r++) { + dst->v[0][r] *= x; + dst->v[1][r] *= y; + dst->v[2][r] *= z; + } +} + +static void _sgl_translate(_sgl_matrix_t* dst, float x, float y, float z) { + for (int r = 0; r < 4; r++) { + dst->v[3][r] = dst->v[0][r]*x + dst->v[1][r]*y + dst->v[2][r]*z + dst->v[3][r]; + } +} + +static void _sgl_frustum(_sgl_matrix_t* dst, float left, float right, float bottom, float top, float znear, float zfar) { + float x = (2.0f * znear) / (right - left); + float y = (2.0f * znear) / (top - bottom); + float a = (right + left) / (right - left); + float b = (top + bottom) / (top - bottom); + float c = -(zfar + znear) / (zfar - znear); + float d = -(2.0f * zfar * znear) / (zfar - znear); + _sgl_matrix_t m; + m.v[0][0] = x; m.v[0][1] = 0.0f; m.v[0][2] = 0.0f; m.v[0][3] = 0.0f; + m.v[1][0] = 0.0f; m.v[1][1] = y; m.v[1][2] = 0.0f; m.v[1][3] = 0.0f; + m.v[2][0] = a; m.v[2][1] = b; m.v[2][2] = c; m.v[2][3] = -1.0f; + m.v[3][0] = 0.0f; m.v[3][1] = 0.0f; m.v[3][2] = d; m.v[3][3] = 0.0f; + _sgl_mul(dst, &m); +} + +static void _sgl_ortho(_sgl_matrix_t* dst, float left, float right, float bottom, float top, float znear, float zfar) { + _sgl_matrix_t m; + m.v[0][0] = 2.0f / (right - left); + m.v[1][0] = 0.0f; + m.v[2][0] = 0.0f; + m.v[3][0] = -(right + left) / (right - left); + m.v[0][1] = 0.0f; + m.v[1][1] = 2.0f / (top - bottom); + m.v[2][1] = 0.0f; + m.v[3][1] = -(top + bottom) / (top - bottom); + m.v[0][2] = 0.0f; + m.v[1][2] = 0.0f; + m.v[2][2] = -2.0f / (zfar - znear); + m.v[3][2] = -(zfar + znear) / (zfar - znear); + m.v[0][3] = 0.0f; + m.v[1][3] = 0.0f; + m.v[2][3] = 0.0f; + m.v[3][3] = 1.0f; + + _sgl_mul(dst, &m); +} + +/* _sgl_perspective, _sgl_lookat from Regal project.c */ +static void _sgl_perspective(_sgl_matrix_t* dst, float fovy, float aspect, float znear, float zfar) { + float sine = sinf(fovy / 2.0f); + float delta_z = zfar - znear; + if ((delta_z == 0.0f) || (sine == 0.0f) || (aspect == 0.0f)) { + return; + } + float cotan = cosf(fovy / 2.0f) / sine; + _sgl_matrix_t m; + _sgl_identity(&m); + m.v[0][0] = cotan / aspect; + m.v[1][1] = cotan; + m.v[2][2] = -(zfar + znear) / delta_z; + m.v[2][3] = -1.0f; + m.v[3][2] = -2.0f * znear * zfar / delta_z; + m.v[3][3] = 0.0f; + _sgl_mul(dst, &m); +} + +static void _sgl_normalize(float v[3]) { + float r = sqrtf(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); + if (r == 0.0f) { + return; + } + v[0] /= r; + v[1] /= r; + v[2] /= r; +} + +static void _sgl_cross(float v1[3], float v2[3], float res[3]) { + res[0] = v1[1]*v2[2] - v1[2]*v2[1]; + res[1] = v1[2]*v2[0] - v1[0]*v2[2]; + res[2] = v1[0]*v2[1] - v1[1]*v2[0]; +} + +static void _sgl_lookat(_sgl_matrix_t* dst, + float eye_x, float eye_y, float eye_z, + float center_x, float center_y, float center_z, + float up_x, float up_y, float up_z) +{ + float fwd[3], side[3], up[3]; + + fwd[0] = center_x - eye_x; fwd[1] = center_y - eye_y; fwd[2] = center_z - eye_z; + up[0] = up_x; up[1] = up_y; up[2] = up_z; + _sgl_normalize(fwd); + _sgl_cross(fwd, up, side); + _sgl_normalize(side); + _sgl_cross(side, fwd, up); + + _sgl_matrix_t m; + _sgl_identity(&m); + m.v[0][0] = side[0]; + m.v[1][0] = side[1]; + m.v[2][0] = side[2]; + m.v[0][1] = up[0]; + m.v[1][1] = up[1]; + m.v[2][1] = up[2]; + m.v[0][2] = -fwd[0]; + m.v[1][2] = -fwd[1]; + m.v[2][2] = -fwd[2]; + _sgl_mul(dst, &m); + _sgl_translate(dst, -eye_x, -eye_y, -eye_z); +} + +/* current top-of-stack projection matrix */ +static _sgl_matrix_t* _sgl_matrix_projection(_sgl_context_t* ctx) { + return &ctx->matrix_stack[SGL_MATRIXMODE_PROJECTION][ctx->matrix_tos[SGL_MATRIXMODE_PROJECTION]]; +} + +/* get top-of-stack modelview matrix */ +static _sgl_matrix_t* _sgl_matrix_modelview(_sgl_context_t* ctx) { + return &ctx->matrix_stack[SGL_MATRIXMODE_MODELVIEW][ctx->matrix_tos[SGL_MATRIXMODE_MODELVIEW]]; +} + +/* get top-of-stack texture matrix */ +static _sgl_matrix_t* _sgl_matrix_texture(_sgl_context_t* ctx) { + return &ctx->matrix_stack[SGL_MATRIXMODE_TEXTURE][ctx->matrix_tos[SGL_MATRIXMODE_TEXTURE]]; +} + +/* get pointer to current top-of-stack of current matrix mode */ +static _sgl_matrix_t* _sgl_matrix(_sgl_context_t* ctx) { + return &ctx->matrix_stack[ctx->cur_matrix_mode][ctx->matrix_tos[ctx->cur_matrix_mode]]; +} + +// return sg_context_desc_t with patched defaults +static sgl_desc_t _sgl_desc_defaults(const sgl_desc_t* desc) { + SOKOL_ASSERT((desc->allocator.alloc && desc->allocator.free) || (!desc->allocator.alloc && !desc->allocator.free)); + sgl_desc_t res = *desc; + res.max_vertices = _sgl_def(desc->max_vertices, _SGL_DEFAULT_MAX_VERTICES); + res.max_commands = _sgl_def(desc->max_commands, _SGL_DEFAULT_MAX_COMMANDS); + res.context_pool_size = _sgl_def(desc->context_pool_size, _SGL_DEFAULT_CONTEXT_POOL_SIZE); + res.pipeline_pool_size = _sgl_def(desc->pipeline_pool_size, _SGL_DEFAULT_PIPELINE_POOL_SIZE); + res.face_winding = _sgl_def(desc->face_winding, SG_FACEWINDING_CCW); + return res; +} + +// create resources which are shared between all contexts +static void _sgl_setup_common(void) { + sg_push_debug_group("sokol-gl"); + + uint32_t pixels[64]; + for (int i = 0; i < 64; i++) { + pixels[i] = 0xFFFFFFFF; + } + sg_image_desc img_desc; + _sgl_clear(&img_desc, sizeof(img_desc)); + img_desc.type = SG_IMAGETYPE_2D; + img_desc.width = 8; + img_desc.height = 8; + img_desc.num_mipmaps = 1; + img_desc.pixel_format = SG_PIXELFORMAT_RGBA8; + img_desc.min_filter = SG_FILTER_NEAREST; + img_desc.mag_filter = SG_FILTER_NEAREST; + img_desc.data.subimage[0][0] = SG_RANGE(pixels); + img_desc.label = "sgl-default-texture"; + _sgl.def_img = sg_make_image(&img_desc); + SOKOL_ASSERT(SG_INVALID_ID != _sgl.def_img.id); + + // one shader for all contexts + sg_shader_desc shd_desc; + _sgl_clear(&shd_desc, sizeof(shd_desc)); + shd_desc.attrs[0].name = "position"; + shd_desc.attrs[1].name = "texcoord0"; + shd_desc.attrs[2].name = "color0"; + shd_desc.attrs[3].name = "psize"; + shd_desc.attrs[0].sem_name = "TEXCOORD"; + shd_desc.attrs[0].sem_index = 0; + shd_desc.attrs[1].sem_name = "TEXCOORD"; + shd_desc.attrs[1].sem_index = 1; + shd_desc.attrs[2].sem_name = "TEXCOORD"; + shd_desc.attrs[2].sem_index = 2; + shd_desc.attrs[3].sem_name = "TEXCOORD"; + shd_desc.attrs[3].sem_index = 3; + sg_shader_uniform_block_desc* ub = &shd_desc.vs.uniform_blocks[0]; + ub->size = sizeof(_sgl_uniform_t); + ub->uniforms[0].name = "vs_params"; + ub->uniforms[0].type = SG_UNIFORMTYPE_FLOAT4; + ub->uniforms[0].array_count = 8; + shd_desc.fs.images[0].name = "tex"; + shd_desc.fs.images[0].image_type = SG_IMAGETYPE_2D; + shd_desc.fs.images[0].sampler_type = SG_SAMPLERTYPE_FLOAT; + shd_desc.label = "sgl-shader"; + #if defined(SOKOL_GLCORE33) + shd_desc.vs.source = _sgl_vs_source_glsl330; + shd_desc.fs.source = _sgl_fs_source_glsl330; + #elif defined(SOKOL_GLES3) + shd_desc.vs.source = _sgl_vs_source_glsl300es; + shd_desc.fs.source = _sgl_fs_source_glsl300es; + #elif defined(SOKOL_METAL) + shd_desc.vs.entry = "main0"; + shd_desc.fs.entry = "main0"; + switch (sg_query_backend()) { + case SG_BACKEND_METAL_MACOS: + shd_desc.vs.bytecode = SG_RANGE(_sgl_vs_bytecode_metal_macos); + shd_desc.fs.bytecode = SG_RANGE(_sgl_fs_bytecode_metal_macos); + break; + case SG_BACKEND_METAL_IOS: + shd_desc.vs.bytecode = SG_RANGE(_sgl_vs_bytecode_metal_ios); + shd_desc.fs.bytecode = SG_RANGE(_sgl_fs_bytecode_metal_ios); + break; + default: + shd_desc.vs.source = _sgl_vs_source_metal_sim; + shd_desc.fs.source = _sgl_fs_source_metal_sim; + break; + } + #elif defined(SOKOL_D3D11) + shd_desc.vs.bytecode = SG_RANGE(_sgl_vs_bytecode_hlsl4); + shd_desc.fs.bytecode = SG_RANGE(_sgl_fs_bytecode_hlsl4); + #elif defined(SOKOL_WGPU) + shd_desc.vs.bytecode = SG_RANGE(_sgl_vs_bytecode_wgpu); + shd_desc.fs.bytecode = SG_RANGE(_sgl_fs_bytecode_wgpu); + #else + shd_desc.vs.source = _sgl_vs_source_dummy; + shd_desc.fs.source = _sgl_fs_source_dummy; + #endif + _sgl.shd = sg_make_shader(&shd_desc); + SOKOL_ASSERT(SG_INVALID_ID != _sgl.shd.id); + sg_pop_debug_group(); +} + +// discard resources which are shared between all contexts +static void _sgl_discard_common(void) { + sg_push_debug_group("sokol-gl"); + sg_destroy_image(_sgl.def_img); + sg_destroy_shader(_sgl.shd); + sg_pop_debug_group(); +} + +static bool _sgl_is_default_context(sgl_context ctx_id) { + return ctx_id.id == SGL_DEFAULT_CONTEXT.id; +} + +static void _sgl_draw(_sgl_context_t* ctx, int layer_id) { + SOKOL_ASSERT(ctx); + if ((ctx->error == SGL_NO_ERROR) && (ctx->vertices.next > 0) && (ctx->commands.next > 0)) { + sg_push_debug_group("sokol-gl"); + + uint32_t cur_pip_id = SG_INVALID_ID; + uint32_t cur_img_id = SG_INVALID_ID; + int cur_uniform_index = -1; + + if (ctx->update_frame_id != ctx->frame_id) { + ctx->update_frame_id = ctx->frame_id; + const sg_range range = { ctx->vertices.ptr, (size_t)ctx->vertices.next * sizeof(_sgl_vertex_t) }; + sg_update_buffer(ctx->vbuf, &range); + } + + for (int i = 0; i < ctx->commands.next; i++) { + const _sgl_command_t* cmd = &ctx->commands.ptr[i]; + if (cmd->layer_id != layer_id) { + continue; + } + switch (cmd->cmd) { + case SGL_COMMAND_VIEWPORT: + { + const _sgl_viewport_args_t* args = &cmd->args.viewport; + sg_apply_viewport(args->x, args->y, args->w, args->h, args->origin_top_left); + } + break; + case SGL_COMMAND_SCISSOR_RECT: + { + const _sgl_scissor_rect_args_t* args = &cmd->args.scissor_rect; + sg_apply_scissor_rect(args->x, args->y, args->w, args->h, args->origin_top_left); + } + break; + case SGL_COMMAND_DRAW: + { + const _sgl_draw_args_t* args = &cmd->args.draw; + if (args->pip.id != cur_pip_id) { + sg_apply_pipeline(args->pip); + cur_pip_id = args->pip.id; + /* when pipeline changes, also need to re-apply uniforms and bindings */ + cur_img_id = SG_INVALID_ID; + cur_uniform_index = -1; + } + if (cur_img_id != args->img.id) { + ctx->bind.fs_images[0] = args->img; + sg_apply_bindings(&ctx->bind); + cur_img_id = args->img.id; + } + if (cur_uniform_index != args->uniform_index) { + const sg_range ub_range = { &ctx->uniforms.ptr[args->uniform_index], sizeof(_sgl_uniform_t) }; + sg_apply_uniforms(SG_SHADERSTAGE_VS, 0, &ub_range); + cur_uniform_index = args->uniform_index; + } + /* FIXME: what if number of vertices doesn't match the primitive type? */ + if (args->num_vertices > 0) { + sg_draw(args->base_vertex, args->num_vertices, 1); + } + } + break; + } + } + sg_pop_debug_group(); + } +} + +static sgl_context_desc_t _sgl_as_context_desc(const sgl_desc_t* desc) { + sgl_context_desc_t ctx_desc; + _sgl_clear(&ctx_desc, sizeof(ctx_desc)); + ctx_desc.max_vertices = desc->max_vertices; + ctx_desc.max_commands = desc->max_commands; + ctx_desc.color_format = desc->color_format; + ctx_desc.depth_format = desc->depth_format; + ctx_desc.sample_count = desc->sample_count; + return ctx_desc; +} + +// ██████ ██ ██ ██████ ██ ██ ██████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ██ ██████ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██████ ██████ ███████ ██ ██████ +// +// >>public +SOKOL_API_IMPL void sgl_setup(const sgl_desc_t* desc) { + SOKOL_ASSERT(desc); + _sgl_clear(&_sgl, sizeof(_sgl)); + _sgl.init_cookie = _SGL_INIT_COOKIE; + _sgl.desc = _sgl_desc_defaults(desc); + _sgl_setup_pipeline_pool(_sgl.desc.pipeline_pool_size); + _sgl_setup_context_pool(_sgl.desc.context_pool_size); + _sgl_setup_common(); + const sgl_context_desc_t ctx_desc = _sgl_as_context_desc(&_sgl.desc); + _sgl.def_ctx_id = sgl_make_context(&ctx_desc); + SOKOL_ASSERT(SGL_DEFAULT_CONTEXT.id == _sgl.def_ctx_id.id); + sgl_set_context(_sgl.def_ctx_id); +} + +SOKOL_API_IMPL void sgl_shutdown(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + // contexts own a pipeline, so destroy contexts before pipelines + for (int i = 0; i < _sgl.context_pool.pool.size; i++) { + _sgl_context_t* ctx = &_sgl.context_pool.contexts[i]; + _sgl_destroy_context(_sgl_make_ctx_id(ctx->slot.id)); + } + for (int i = 0; i < _sgl.pip_pool.pool.size; i++) { + _sgl_pipeline_t* pip = &_sgl.pip_pool.pips[i]; + _sgl_destroy_pipeline(_sgl_make_pip_id(pip->slot.id)); + } + _sgl_discard_context_pool(); + _sgl_discard_pipeline_pool(); + _sgl_discard_common(); + _sgl.init_cookie = 0; +} + +SOKOL_API_IMPL sgl_error_t sgl_error(void) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + return ctx->error; + } + else { + return SGL_ERROR_NO_CONTEXT; + } +} + +SOKOL_API_IMPL sgl_error_t sgl_context_error(sgl_context ctx_id) { + const _sgl_context_t* ctx = _sgl_lookup_context(ctx_id.id); + if (ctx) { + return ctx->error; + } + else { + return SGL_ERROR_NO_CONTEXT; + } +} + +SOKOL_API_IMPL float sgl_rad(float deg) { + return (deg * (float)M_PI) / 180.0f; +} + +SOKOL_API_IMPL float sgl_deg(float rad) { + return (rad * 180.0f) / (float)M_PI; +} + +SOKOL_API_IMPL sgl_context sgl_make_context(const sgl_context_desc_t* desc) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + return _sgl_make_context(desc); +} + +SOKOL_API_IMPL void sgl_destroy_context(sgl_context ctx_id) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + if (_sgl_is_default_context(ctx_id)) { + _SGL_WARN(CANNOT_DESTROY_DEFAULT_CONTEXT); + return; + } + _sgl_destroy_context(ctx_id); + // re-validate the current context pointer (this will return a nullptr + // if we just destroyed the current context) + _sgl.cur_ctx = _sgl_lookup_context(_sgl.cur_ctx_id.id); +} + +SOKOL_API_IMPL void sgl_set_context(sgl_context ctx_id) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + if (_sgl_is_default_context(ctx_id)) { + _sgl.cur_ctx_id = _sgl.def_ctx_id; + } + else { + _sgl.cur_ctx_id = ctx_id; + } + // this will return null if the handle isn't valid + _sgl.cur_ctx = _sgl_lookup_context(_sgl.cur_ctx_id.id); +} + +SOKOL_API_IMPL sgl_context sgl_get_context(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + return _sgl.cur_ctx_id; +} + +SOKOL_API_IMPL sgl_context sgl_default_context(void) { + return SGL_DEFAULT_CONTEXT; +} + +SOKOL_API_IMPL sgl_pipeline sgl_make_pipeline(const sg_pipeline_desc* desc) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + return _sgl_make_pipeline(desc, &ctx->desc); + } + else { + return _sgl_make_pip_id(SG_INVALID_ID); + } +} + +SOKOL_API_IMPL sgl_pipeline sgl_context_make_pipeline(sgl_context ctx_id, const sg_pipeline_desc* desc) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + const _sgl_context_t* ctx = _sgl_lookup_context(ctx_id.id); + if (ctx) { + return _sgl_make_pipeline(desc, &ctx->desc); + } + else { + return _sgl_make_pip_id(SG_INVALID_ID); + } +} + +SOKOL_API_IMPL void sgl_destroy_pipeline(sgl_pipeline pip_id) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_destroy_pipeline(pip_id); +} + +SOKOL_API_IMPL void sgl_load_pipeline(sgl_pipeline pip_id) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT((ctx->pip_tos >= 0) && (ctx->pip_tos < _SGL_MAX_STACK_DEPTH)); + ctx->pip_stack[ctx->pip_tos] = pip_id; +} + +SOKOL_API_IMPL void sgl_load_default_pipeline(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT((ctx->pip_tos >= 0) && (ctx->pip_tos < _SGL_MAX_STACK_DEPTH)); + ctx->pip_stack[ctx->pip_tos] = ctx->def_pip; +} + +SOKOL_API_IMPL void sgl_push_pipeline(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + if (ctx->pip_tos < (_SGL_MAX_STACK_DEPTH - 1)) { + ctx->pip_tos++; + ctx->pip_stack[ctx->pip_tos] = ctx->pip_stack[ctx->pip_tos-1]; + } + else { + ctx->error = SGL_ERROR_STACK_OVERFLOW; + } +} + +SOKOL_API_IMPL void sgl_pop_pipeline(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + if (ctx->pip_tos > 0) { + ctx->pip_tos--; + } + else { + ctx->error = SGL_ERROR_STACK_UNDERFLOW; + } +} + +SOKOL_API_IMPL void sgl_defaults(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(!ctx->in_begin); + ctx->u = 0.0f; ctx->v = 0.0f; + ctx->rgba = 0xFFFFFFFF; + ctx->point_size = 1.0f; + ctx->texturing_enabled = false; + ctx->cur_img = _sgl.def_img; + sgl_load_default_pipeline(); + _sgl_identity(_sgl_matrix_texture(ctx)); + _sgl_identity(_sgl_matrix_modelview(ctx)); + _sgl_identity(_sgl_matrix_projection(ctx)); + ctx->cur_matrix_mode = SGL_MATRIXMODE_MODELVIEW; + ctx->matrix_dirty = true; +} + +SOKOL_API_IMPL void sgl_layer(int layer_id) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(!ctx->in_begin); + ctx->layer_id = layer_id; +} + +SOKOL_API_IMPL void sgl_viewport(int x, int y, int w, int h, bool origin_top_left) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(!ctx->in_begin); + _sgl_command_t* cmd = _sgl_next_command(ctx); + if (cmd) { + cmd->cmd = SGL_COMMAND_VIEWPORT; + cmd->layer_id = ctx->layer_id; + cmd->args.viewport.x = x; + cmd->args.viewport.y = y; + cmd->args.viewport.w = w; + cmd->args.viewport.h = h; + cmd->args.viewport.origin_top_left = origin_top_left; + } +} + +SOKOL_API_IMPL void sgl_viewportf(float x, float y, float w, float h, bool origin_top_left) { + sgl_viewport((int)x, (int)y, (int)w, (int)h, origin_top_left); +} + +SOKOL_API_IMPL void sgl_scissor_rect(int x, int y, int w, int h, bool origin_top_left) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(!ctx->in_begin); + _sgl_command_t* cmd = _sgl_next_command(ctx); + if (cmd) { + cmd->cmd = SGL_COMMAND_SCISSOR_RECT; + cmd->layer_id = ctx->layer_id; + cmd->args.scissor_rect.x = x; + cmd->args.scissor_rect.y = y; + cmd->args.scissor_rect.w = w; + cmd->args.scissor_rect.h = h; + cmd->args.scissor_rect.origin_top_left = origin_top_left; + } +} + +SOKOL_API_IMPL void sgl_scissor_rectf(float x, float y, float w, float h, bool origin_top_left) { + sgl_scissor_rect((int)x, (int)y, (int)w, (int)h, origin_top_left); +} + +SOKOL_API_IMPL void sgl_enable_texture(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(!ctx->in_begin); + ctx->texturing_enabled = true; +} + +SOKOL_API_IMPL void sgl_disable_texture(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(!ctx->in_begin); + ctx->texturing_enabled = false; +} + +SOKOL_API_IMPL void sgl_texture(sg_image img) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(!ctx->in_begin); + if (SG_INVALID_ID != img.id) { + ctx->cur_img = img; + } + else { + ctx->cur_img = _sgl.def_img; + } +} + +SOKOL_API_IMPL void sgl_begin_points(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(!ctx->in_begin); + _sgl_begin(ctx, SGL_PRIMITIVETYPE_POINTS); +} + +SOKOL_API_IMPL void sgl_begin_lines(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(!ctx->in_begin); + _sgl_begin(ctx, SGL_PRIMITIVETYPE_LINES); +} + +SOKOL_API_IMPL void sgl_begin_line_strip(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(!ctx->in_begin); + _sgl_begin(ctx, SGL_PRIMITIVETYPE_LINE_STRIP); +} + +SOKOL_API_IMPL void sgl_begin_triangles(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(!ctx->in_begin); + _sgl_begin(ctx, SGL_PRIMITIVETYPE_TRIANGLES); +} + +SOKOL_API_IMPL void sgl_begin_triangle_strip(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(!ctx->in_begin); + _sgl_begin(ctx, SGL_PRIMITIVETYPE_TRIANGLE_STRIP); +} + +SOKOL_API_IMPL void sgl_begin_quads(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(!ctx->in_begin); + _sgl_begin(ctx, SGL_PRIMITIVETYPE_QUADS); +} + +SOKOL_API_IMPL void sgl_end(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT(ctx->in_begin); + SOKOL_ASSERT(ctx->vertices.next >= ctx->base_vertex); + ctx->in_begin = false; + bool matrix_dirty = ctx->matrix_dirty; + if (matrix_dirty) { + ctx->matrix_dirty = false; + _sgl_uniform_t* uni = _sgl_next_uniform(ctx); + if (uni) { + _sgl_matmul4(&uni->mvp, _sgl_matrix_projection(ctx), _sgl_matrix_modelview(ctx)); + uni->tm = *_sgl_matrix_texture(ctx); + } + } + /* check if command can be merged with current command */ + sg_pipeline pip = _sgl_get_pipeline(ctx->pip_stack[ctx->pip_tos], ctx->cur_prim_type); + sg_image img = ctx->texturing_enabled ? ctx->cur_img : _sgl.def_img; + _sgl_command_t* cur_cmd = _sgl_cur_command(ctx); + bool merge_cmd = false; + if (cur_cmd) { + if ((cur_cmd->cmd == SGL_COMMAND_DRAW) && + (cur_cmd->layer_id == ctx->layer_id) && + (ctx->cur_prim_type != SGL_PRIMITIVETYPE_LINE_STRIP) && + (ctx->cur_prim_type != SGL_PRIMITIVETYPE_TRIANGLE_STRIP) && + !matrix_dirty && + (cur_cmd->args.draw.img.id == img.id) && + (cur_cmd->args.draw.pip.id == pip.id)) + { + merge_cmd = true; + } + } + if (merge_cmd) { + /* draw command can be merged with the previous command */ + cur_cmd->args.draw.num_vertices += ctx->vertices.next - ctx->base_vertex; + } + else { + /* append a new draw command */ + _sgl_command_t* cmd = _sgl_next_command(ctx); + if (cmd) { + SOKOL_ASSERT(ctx->uniforms.next > 0); + cmd->cmd = SGL_COMMAND_DRAW; + cmd->layer_id = ctx->layer_id; + cmd->args.draw.img = img; + cmd->args.draw.pip = _sgl_get_pipeline(ctx->pip_stack[ctx->pip_tos], ctx->cur_prim_type); + cmd->args.draw.base_vertex = ctx->base_vertex; + cmd->args.draw.num_vertices = ctx->vertices.next - ctx->base_vertex; + cmd->args.draw.uniform_index = ctx->uniforms.next - 1; + } + } +} + +SOKOL_API_IMPL void sgl_point_size(float s) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + ctx->point_size = s; + } +} + +SOKOL_API_IMPL void sgl_t2f(float u, float v) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + ctx->u = u; + ctx->v = v; + } +} + +SOKOL_API_IMPL void sgl_c3f(float r, float g, float b) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + ctx->rgba = _sgl_pack_rgbaf(r, g, b, 1.0f); + } +} + +SOKOL_API_IMPL void sgl_c4f(float r, float g, float b, float a) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + ctx->rgba = _sgl_pack_rgbaf(r, g, b, a); + } +} + +SOKOL_API_IMPL void sgl_c3b(uint8_t r, uint8_t g, uint8_t b) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + ctx->rgba = _sgl_pack_rgbab(r, g, b, 255); + } +} + +SOKOL_API_IMPL void sgl_c4b(uint8_t r, uint8_t g, uint8_t b, uint8_t a) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + ctx->rgba = _sgl_pack_rgbab(r, g, b, a); + } +} + +SOKOL_API_IMPL void sgl_c1i(uint32_t rgba) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + ctx->rgba = rgba; + } +} + +SOKOL_API_IMPL void sgl_v2f(float x, float y) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, 0.0f, ctx->u, ctx->v, ctx->rgba); + } +} + +SOKOL_API_IMPL void sgl_v3f(float x, float y, float z) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, z, ctx->u, ctx->v, ctx->rgba); + } +} + +SOKOL_API_IMPL void sgl_v2f_t2f(float x, float y, float u, float v) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, 0.0f, u, v, ctx->rgba); + } +} + +SOKOL_API_IMPL void sgl_v3f_t2f(float x, float y, float z, float u, float v) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, z, u, v, ctx->rgba); + } +} + +SOKOL_API_IMPL void sgl_v2f_c3f(float x, float y, float r, float g, float b) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, 0.0f, ctx->u, ctx->v, _sgl_pack_rgbaf(r, g, b, 1.0f)); + } +} + +SOKOL_API_IMPL void sgl_v2f_c3b(float x, float y, uint8_t r, uint8_t g, uint8_t b) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, 0.0f, ctx->u, ctx->v, _sgl_pack_rgbab(r, g, b, 255)); + } +} + +SOKOL_API_IMPL void sgl_v2f_c4f(float x, float y, float r, float g, float b, float a) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, 0.0f, ctx->u, ctx->v, _sgl_pack_rgbaf(r, g, b, a)); + } +} + +SOKOL_API_IMPL void sgl_v2f_c4b(float x, float y, uint8_t r, uint8_t g, uint8_t b, uint8_t a) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, 0.0f, ctx->u, ctx->v, _sgl_pack_rgbab(r, g, b, a)); + } +} + +SOKOL_API_IMPL void sgl_v2f_c1i(float x, float y, uint32_t rgba) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, 0.0f, ctx->u, ctx->v, rgba); + } +} + +SOKOL_API_IMPL void sgl_v3f_c3f(float x, float y, float z, float r, float g, float b) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, z, ctx->u, ctx->v, _sgl_pack_rgbaf(r, g, b, 1.0f)); + } +} + +SOKOL_API_IMPL void sgl_v3f_c3b(float x, float y, float z, uint8_t r, uint8_t g, uint8_t b) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, z, ctx->u, ctx->v, _sgl_pack_rgbab(r, g, b, 255)); + } +} + +SOKOL_API_IMPL void sgl_v3f_c4f(float x, float y, float z, float r, float g, float b, float a) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, z, ctx->u, ctx->v, _sgl_pack_rgbaf(r, g, b, a)); + } +} + +SOKOL_API_IMPL void sgl_v3f_c4b(float x, float y, float z, uint8_t r, uint8_t g, uint8_t b, uint8_t a) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, z, ctx->u, ctx->v, _sgl_pack_rgbab(r, g, b, a)); + } +} + +SOKOL_API_IMPL void sgl_v3f_c1i(float x, float y, float z, uint32_t rgba) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, z, ctx->u, ctx->v, rgba); + } +} + +SOKOL_API_IMPL void sgl_v2f_t2f_c3f(float x, float y, float u, float v, float r, float g, float b) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, 0.0f, u, v, _sgl_pack_rgbaf(r, g, b, 1.0f)); + } +} + +SOKOL_API_IMPL void sgl_v2f_t2f_c3b(float x, float y, float u, float v, uint8_t r, uint8_t g, uint8_t b) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, 0.0f, u, v, _sgl_pack_rgbab(r, g, b, 255)); + } +} + +SOKOL_API_IMPL void sgl_v2f_t2f_c4f(float x, float y, float u, float v, float r, float g, float b, float a) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, 0.0f, u, v, _sgl_pack_rgbaf(r, g, b, a)); + } +} + +SOKOL_API_IMPL void sgl_v2f_t2f_c4b(float x, float y, float u, float v, uint8_t r, uint8_t g, uint8_t b, uint8_t a) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, 0.0f, u, v, _sgl_pack_rgbab(r, g, b, a)); + } +} + +SOKOL_API_IMPL void sgl_v2f_t2f_c1i(float x, float y, float u, float v, uint32_t rgba) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, 0.0f, u, v, rgba); + } +} + +SOKOL_API_IMPL void sgl_v3f_t2f_c3f(float x, float y, float z, float u, float v, float r, float g, float b) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, z, u, v, _sgl_pack_rgbaf(r, g, b, 1.0f)); + } +} + +SOKOL_API_IMPL void sgl_v3f_t2f_c3b(float x, float y, float z, float u, float v, uint8_t r, uint8_t g, uint8_t b) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, z, u, v, _sgl_pack_rgbab(r, g, b, 255)); + } +} + +SOKOL_API_IMPL void sgl_v3f_t2f_c4f(float x, float y, float z, float u, float v, float r, float g, float b, float a) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, z, u, v, _sgl_pack_rgbaf(r, g, b, a)); + } +} + +SOKOL_API_IMPL void sgl_v3f_t2f_c4b(float x, float y, float z, float u, float v, uint8_t r, uint8_t g, uint8_t b, uint8_t a) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx, x, y, z, u, v, _sgl_pack_rgbab(r, g, b, a)); + } +} + +SOKOL_API_IMPL void sgl_v3f_t2f_c1i(float x, float y, float z, float u, float v, uint32_t rgba) { + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_vtx(ctx,x, y, z, u, v, rgba); + } +} + +SOKOL_API_IMPL void sgl_matrix_mode_modelview(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + ctx->cur_matrix_mode = SGL_MATRIXMODE_MODELVIEW; + } +} + +SOKOL_API_IMPL void sgl_matrix_mode_projection(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + ctx->cur_matrix_mode = SGL_MATRIXMODE_PROJECTION; + } +} + +SOKOL_API_IMPL void sgl_matrix_mode_texture(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + ctx->cur_matrix_mode = SGL_MATRIXMODE_TEXTURE; + } +} + +SOKOL_API_IMPL void sgl_load_identity(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + ctx->matrix_dirty = true; + _sgl_identity(_sgl_matrix(ctx)); +} + +SOKOL_API_IMPL void sgl_load_matrix(const float m[16]) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + ctx->matrix_dirty = true; + memcpy(&_sgl_matrix(ctx)->v[0][0], &m[0], 64); +} + +SOKOL_API_IMPL void sgl_load_transpose_matrix(const float m[16]) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + ctx->matrix_dirty = true; + _sgl_transpose(_sgl_matrix(ctx), (const _sgl_matrix_t*) &m[0]); +} + +SOKOL_API_IMPL void sgl_mult_matrix(const float m[16]) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + ctx->matrix_dirty = true; + const _sgl_matrix_t* m0 = (const _sgl_matrix_t*) &m[0]; + _sgl_mul(_sgl_matrix(ctx), m0); +} + +SOKOL_API_IMPL void sgl_mult_transpose_matrix(const float m[16]) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + ctx->matrix_dirty = true; + _sgl_matrix_t m0; + _sgl_transpose(&m0, (const _sgl_matrix_t*) &m[0]); + _sgl_mul(_sgl_matrix(ctx), &m0); +} + +SOKOL_API_IMPL void sgl_rotate(float angle_rad, float x, float y, float z) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + ctx->matrix_dirty = true; + _sgl_rotate(_sgl_matrix(ctx), angle_rad, x, y, z); +} + +SOKOL_API_IMPL void sgl_scale(float x, float y, float z) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + ctx->matrix_dirty = true; + _sgl_scale(_sgl_matrix(ctx), x, y, z); +} + +SOKOL_API_IMPL void sgl_translate(float x, float y, float z) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + ctx->matrix_dirty = true; + _sgl_translate(_sgl_matrix(ctx), x, y, z); +} + +SOKOL_API_IMPL void sgl_frustum(float l, float r, float b, float t, float n, float f) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + ctx->matrix_dirty = true; + _sgl_frustum(_sgl_matrix(ctx), l, r, b, t, n, f); +} + +SOKOL_API_IMPL void sgl_ortho(float l, float r, float b, float t, float n, float f) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + ctx->matrix_dirty = true; + _sgl_ortho(_sgl_matrix(ctx), l, r, b, t, n, f); +} + +SOKOL_API_IMPL void sgl_perspective(float fov_y, float aspect, float z_near, float z_far) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + ctx->matrix_dirty = true; + _sgl_perspective(_sgl_matrix(ctx), fov_y, aspect, z_near, z_far); +} + +SOKOL_API_IMPL void sgl_lookat(float eye_x, float eye_y, float eye_z, float center_x, float center_y, float center_z, float up_x, float up_y, float up_z) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + ctx->matrix_dirty = true; + _sgl_lookat(_sgl_matrix(ctx), eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z); +} + +SOKOL_GL_API_DECL void sgl_push_matrix(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT((ctx->cur_matrix_mode >= 0) && (ctx->cur_matrix_mode < SGL_NUM_MATRIXMODES)); + ctx->matrix_dirty = true; + if (ctx->matrix_tos[ctx->cur_matrix_mode] < (_SGL_MAX_STACK_DEPTH - 1)) { + const _sgl_matrix_t* src = _sgl_matrix(ctx); + ctx->matrix_tos[ctx->cur_matrix_mode]++; + _sgl_matrix_t* dst = _sgl_matrix(ctx); + *dst = *src; + } + else { + ctx->error = SGL_ERROR_STACK_OVERFLOW; + } +} + +SOKOL_GL_API_DECL void sgl_pop_matrix(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (!ctx) { + return; + } + SOKOL_ASSERT((ctx->cur_matrix_mode >= 0) && (ctx->cur_matrix_mode < SGL_NUM_MATRIXMODES)); + ctx->matrix_dirty = true; + if (ctx->matrix_tos[ctx->cur_matrix_mode] > 0) { + ctx->matrix_tos[ctx->cur_matrix_mode]--; + } + else { + ctx->error = SGL_ERROR_STACK_UNDERFLOW; + } +} + +SOKOL_API_IMPL void sgl_draw(void) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_draw(ctx, 0); + } +} + +SOKOL_API_IMPL void sgl_draw_layer(int layer_id) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl.cur_ctx; + if (ctx) { + _sgl_draw(ctx, layer_id); + } +} + +SOKOL_API_IMPL void sgl_context_draw(sgl_context ctx_id) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl_lookup_context(ctx_id.id); + if (ctx) { + _sgl_draw(ctx, 0); + } +} + +SOKOL_API_IMPL void sgl_context_draw_layer(sgl_context ctx_id, int layer_id) { + SOKOL_ASSERT(_SGL_INIT_COOKIE == _sgl.init_cookie); + _sgl_context_t* ctx = _sgl_lookup_context(ctx_id.id); + if (ctx) { + _sgl_draw(ctx, layer_id); + } +} + +#endif /* SOKOL_GL_IMPL */ diff --git a/source/engine/thirdparty/sokol/sokol_glue.h b/source/engine/thirdparty/sokol/sokol_glue.h new file mode 100644 index 0000000..7216f6a --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_glue.h @@ -0,0 +1,136 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_GLUE_IMPL) +#define SOKOL_GLUE_IMPL +#endif +#ifndef SOKOL_GLUE_INCLUDED +/* + sokol_glue.h -- glue helper functions for sokol headers + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_GLUE_IMPL + before you include this file in *one* C or C++ file to create the + implementation. + + ...optionally provide the following macros to override defaults: + + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_GLUE_API_DECL - public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_GLUE_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + + If sokol_glue.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_GLUE_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + OVERVIEW + ======== + The sokol core headers should not depend on each other, but sometimes + it's useful to have a set of helper functions as "glue" between + two or more sokol headers. + + This is what sokol_glue.h is for. Simply include the header after other + sokol headers (both for the implementation and declaration), and + depending on what headers have been included before, sokol_glue.h + will make available "glue functions". + + PROVIDED FUNCTIONS + ================== + + - if sokol_app.h and sokol_gfx.h is included: + + sg_context_desc sapp_sgcontext(void): + + Returns an initialized sg_context_desc function initialized + by calling sokol_app.h functions. + + LICENSE + ======= + zlib/libpng license + + Copyright (c) 2018 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_GLUE_INCLUDED + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_GLUE_API_DECL) +#define SOKOL_GLUE_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_GLUE_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_GLUE_IMPL) +#define SOKOL_GLUE_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_GLUE_API_DECL __declspec(dllimport) +#else +#define SOKOL_GLUE_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(SOKOL_GFX_INCLUDED) && defined(SOKOL_APP_INCLUDED) +SOKOL_GLUE_API_DECL sg_context_desc sapp_sgcontext(void); +#endif + +#ifdef __cplusplus +} /* extern "C" */ +#endif +#endif /* SOKOL_GLUE_INCLUDED */ + +/*-- IMPLEMENTATION ----------------------------------------------------------*/ +#ifdef SOKOL_GLUE_IMPL +#define SOKOL_GLUE_IMPL_INCLUDED (1) +#include /* memset */ + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif + +#if defined(SOKOL_GFX_INCLUDED) && defined(SOKOL_APP_INCLUDED) +SOKOL_API_IMPL sg_context_desc sapp_sgcontext(void) { + sg_context_desc desc; + memset(&desc, 0, sizeof(desc)); + desc.color_format = (sg_pixel_format) sapp_color_format(); + desc.depth_format = (sg_pixel_format) sapp_depth_format(); + desc.sample_count = sapp_sample_count(); + desc.metal.device = sapp_metal_get_device(); + desc.metal.renderpass_descriptor_cb = sapp_metal_get_renderpass_descriptor; + desc.metal.drawable_cb = sapp_metal_get_drawable; + desc.d3d11.device = sapp_d3d11_get_device(); + desc.d3d11.device_context = sapp_d3d11_get_device_context(); + desc.d3d11.render_target_view_cb = sapp_d3d11_get_render_target_view; + desc.d3d11.depth_stencil_view_cb = sapp_d3d11_get_depth_stencil_view; + desc.wgpu.device = sapp_wgpu_get_device(); + desc.wgpu.render_view_cb = sapp_wgpu_get_render_view; + desc.wgpu.resolve_view_cb = sapp_wgpu_get_resolve_view; + desc.wgpu.depth_stencil_view_cb = sapp_wgpu_get_depth_stencil_view; + return desc; +} +#endif + +#endif /* SOKOL_GLUE_IMPL */ diff --git a/source/engine/thirdparty/sokol/sokol_imgui.h b/source/engine/thirdparty/sokol/sokol_imgui.h new file mode 100644 index 0000000..48e36f5 --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_imgui.h @@ -0,0 +1,2457 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_IMGUI_IMPL) +#define SOKOL_IMGUI_IMPL +#endif +#ifndef SOKOL_IMGUI_INCLUDED +/* + sokol_imgui.h -- drop-in Dear ImGui renderer/event-handler for sokol_gfx.h + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_IMGUI_IMPL + + before you include this file in *one* C or C++ file to create the + implementation. + + NOTE that the implementation can be compiled either as C++ or as C. + When compiled as C++, sokol_imgui.h will directly call into the + Dear ImGui C++ API. When compiled as C, sokol_imgui.h will call + cimgui.h functions instead. + + NOTE that the formerly separate header sokol_cimgui.h has been + merged into sokol_imgui.h + + The following defines are used by the implementation to select the + platform-specific embedded shader code (these are the same defines as + used by sokol_gfx.h and sokol_app.h): + + SOKOL_GLCORE33 + SOKOL_GLES3 + SOKOL_D3D11 + SOKOL_METAL + SOKOL_WGPU + + Optionally provide the following configuration defines before including the + implementation: + + SOKOL_IMGUI_NO_SOKOL_APP - don't depend on sokol_app.h (see below for details) + + Optionally provide the following macros before including the implementation + to override defaults: + + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_IMGUI_API_DECL- public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_IMGUI_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + + If sokol_imgui.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_IMGUI_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + Include the following headers before sokol_imgui.h (both before including + the declaration and implementation): + + sokol_gfx.h + sokol_app.h (except SOKOL_IMGUI_NO_SOKOL_APP) + + Additionally, include the following headers before including the + implementation: + + If the implementation is compiled as C++: + imgui.h + + If the implementation is compiled as C: + cimgui.h + + + FEATURE OVERVIEW: + ================= + sokol_imgui.h implements the initialization, rendering and event-handling + code for Dear ImGui (https://github.com/ocornut/imgui) on top of + sokol_gfx.h and (optionally) sokol_app.h. + + The sokol_app.h dependency is optional and used for input event handling. + If you only use sokol_gfx.h but not sokol_app.h in your application, + define SOKOL_IMGUI_NO_SOKOL_APP before including the implementation + of sokol_imgui.h, this will remove any dependency to sokol_app.h, but + you must feed input events into Dear ImGui yourself. + + sokol_imgui.h is not thread-safe, all calls must be made from the + same thread where sokol_gfx.h is running. + + HOWTO: + ====== + + --- To initialize sokol-imgui, call: + + simgui_setup(const simgui_desc_t* desc) + + This will initialize Dear ImGui and create sokol-gfx resources + (two buffers for vertices and indices, a font texture and a pipeline- + state-object). + + Use the following simgui_desc_t members to configure behaviour: + + int max_vertices + The maximum number of vertices used for UI rendering, default is 65536. + sokol-imgui will use this to compute the size of the vertex- + and index-buffers allocated via sokol_gfx.h + + sg_pixel_format color_format + The color pixel format of the render pass where the UI + will be rendered. The default (0) matches sokoL_gfx.h's + default pass. + + sg_pixel_format depth_format + The depth-buffer pixel format of the render pass where + the UI will be rendered. The default (0) matches + sokol_gfx.h's default pass depth format. + + int sample_count + The MSAA sample-count of the render pass where the UI + will be rendered. The default (0) matches sokol_gfx.h's + default pass sample count. + + const char* ini_filename + Sets this path as ImGui::GetIO().IniFilename where ImGui will store + and load UI persistency data. By default this is 0, so that Dear ImGui + will not preserve state between sessions (and also won't do + any filesystem calls). Also see the ImGui functions: + - LoadIniSettingsFromMemory() + - SaveIniSettingsFromMemory() + These functions give you explicit control over loading and saving + UI state while using your own filesystem wrapper functions (in this + case keep simgui_desc.ini_filename zero) + + bool no_default_font + Set this to true if you don't want to use ImGui's default + font. In this case you need to initialize the font + yourself after simgui_setup() is called. + + bool disable_paste_override + If set to true, sokol_imgui.h will not 'emulate' a Dear Imgui + clipboard paste action on SAPP_EVENTTYPE_CLIPBOARD_PASTED event. + This is mainly a hack/workaround to allow external workarounds + for making copy/paste work on the web platform. In general, + copy/paste support isn't properly fleshed out in sokol_imgui.h yet. + + bool disable_set_mouse_cursor + If true, sokol_imgui.h will not control the mouse cursor type + by calling sapp_set_mouse_cursor(). + + bool disable_windows_resize_from_edges + If true, windows can only be resized from the bottom right corner. + The default is false, meaning windows can be resized from edges. + + bool write_alpha_channel + Set this to true if you want alpha values written to the + framebuffer. By default this behavior is disabled to prevent + undesired behavior on platforms like the web where the canvas is + always alpha-blended with the background. + + simgui_allocator_t allocator + Used to override memory allocation functions. See further below + for details. + + --- At the start of a frame, call: + + simgui_new_frame(&(simgui_frame_desc_t){.width = ..., .height = ..., .delta_time = ..., .dpi_scale = ...}); + + 'width' and 'height' are the dimensions of the rendering surface, + passed to ImGui::GetIO().DisplaySize. + + 'delta_time' is the frame duration passed to ImGui::GetIO().DeltaTime. + + 'dpi_scale' is the current DPI scale factor, if this is left zero-initialized, + 1.0f will be used instead. Typical values for dpi_scale are >= 1.0f. + + For example, if you're using sokol_app.h and render to the default framebuffer: + + simgui_new_frame(&(simgui_frame_desc_t){ + .width = sapp_width(), + .height = sapp_height(), + .delta_time = sapp_frame_duration(), + .dpi_scale = sapp_dpi_scale() + }); + + --- at the end of the frame, before the sg_end_pass() where you + want to render the UI, call: + + simgui_render() + + This will first call ImGui::Render(), and then render ImGui's draw list + through sokol_gfx.h + + --- if you're using sokol_app.h, from inside the sokol_app.h event callback, + call: + + bool simgui_handle_event(const sapp_event* ev); + + The return value is the value of ImGui::GetIO().WantCaptureKeyboard, + if this is true, you might want to skip keyboard input handling + in your own event handler. + + If you want to use the ImGui functions for checking if a key is pressed + (e.g. ImGui::IsKeyPressed()) the following helper function to map + an sapp_keycode to an ImGuiKey value may be useful: + + int simgui_map_keycode(sapp_keycode c); + + Note that simgui_map_keycode() can be called outside simgui_setup()/simgui_shutdown(). + + --- finally, on application shutdown, call + + simgui_shutdown() + + + MEMORY ALLOCATION OVERRIDE + ========================== + You can override the memory allocation functions at initialization time + like this: + + void* my_alloc(size_t size, void* user_data) { + return malloc(size); + } + + void my_free(void* ptr, void* user_data) { + free(ptr); + } + + ... + simgui_setup(&(simgui_desc_t){ + // ... + .allocator = { + .alloc = my_alloc, + .free = my_free, + .user_data = ...; + } + }); + ... + + If no overrides are provided, malloc and free will be used. + + This only affects memory allocation calls done by sokol_imgui.h + itself though, not any allocations in Dear ImGui. + + + LICENSE + ======= + + zlib/libpng license + + Copyright (c) 2018 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_IMGUI_INCLUDED (1) +#include +#include +#include // size_t + +#if !defined(SOKOL_GFX_INCLUDED) +#error "Please include sokol_gfx.h before sokol_imgui.h" +#endif +#if !defined(SOKOL_IMGUI_NO_SOKOL_APP) && !defined(SOKOL_APP_INCLUDED) +#error "Please include sokol_app.h before sokol_imgui.h" +#endif + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_IMGUI_API_DECL) +#define SOKOL_IMGUI_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_IMGUI_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_IMGUI_IMPL) +#define SOKOL_IMGUI_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_IMGUI_API_DECL __declspec(dllimport) +#else +#define SOKOL_IMGUI_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + simgui_allocator_t + + Used in simgui_desc_t to provide custom memory-alloc and -free functions + to sokol_imgui.h. If memory management should be overridden, both the + alloc and free function must be provided (e.g. it's not valid to + override one function but not the other). +*/ +typedef struct simgui_allocator_t { + void* (*alloc)(size_t size, void* user_data); + void (*free)(void* ptr, void* user_data); + void* user_data; +} simgui_allocator_t; + +typedef struct simgui_desc_t { + int max_vertices; + sg_pixel_format color_format; + sg_pixel_format depth_format; + int sample_count; + const char* ini_filename; + bool no_default_font; + bool disable_paste_override; // if true, don't send Ctrl-V on EVENTTYPE_CLIPBOARD_PASTED + bool disable_set_mouse_cursor; // if true, don't control the mouse cursor type via sapp_set_mouse_cursor() + bool disable_windows_resize_from_edges; // if true, only resize edges from the bottom right corner + bool write_alpha_channel; // if true, alpha values get written into the framebuffer + simgui_allocator_t allocator; // optional memory allocation overrides (default: malloc/free) +} simgui_desc_t; + +typedef struct simgui_frame_desc_t { + int width; + int height; + double delta_time; + float dpi_scale; +} simgui_frame_desc_t; + +SOKOL_IMGUI_API_DECL void simgui_setup(const simgui_desc_t* desc); +SOKOL_IMGUI_API_DECL void simgui_new_frame(const simgui_frame_desc_t* desc); +SOKOL_IMGUI_API_DECL void simgui_render(void); +#if !defined(SOKOL_IMGUI_NO_SOKOL_APP) +SOKOL_IMGUI_API_DECL bool simgui_handle_event(const sapp_event* ev); +SOKOL_IMGUI_API_DECL int simgui_map_keycode(sapp_keycode keycode); // returns ImGuiKey_* +#endif +SOKOL_IMGUI_API_DECL void simgui_shutdown(void); + +#ifdef __cplusplus +} /* extern "C" */ + +/* reference-based equivalents for C++ */ +inline void simgui_setup(const simgui_desc_t& desc) { return simgui_setup(&desc); } +inline void simgui_new_frame(const simgui_frame_desc_t& desc) { return simgui_new_frame(&desc); } + +#endif +#endif /* SOKOL_IMGUI_INCLUDED */ + +/*-- IMPLEMENTATION ----------------------------------------------------------*/ +#ifdef SOKOL_IMGUI_IMPL +#define SOKOL_IMGUI_IMPL_INCLUDED (1) + +#if defined(SOKOL_MALLOC) || defined(SOKOL_CALLOC) || defined(SOKOL_FREE) +#error "SOKOL_MALLOC/CALLOC/FREE macros are no longer supported, please use simgui_desc_t.allocator to override memory allocation functions" +#endif + +#if defined(__cplusplus) + #if !defined(IMGUI_VERSION) + #error "Please include imgui.h before the sokol_imgui.h implementation" + #endif +#else + #if !defined(CIMGUI_INCLUDED) + #error "Please include cimgui.h before the sokol_imgui.h implementation" + #endif +#endif + +#include // memset +#include // malloc/free + +#if defined(__EMSCRIPTEN__) && !defined(SOKOL_DUMMY_BACKEND) +#include +#endif + +#ifndef SOKOL_API_IMPL +#define SOKOL_API_IMPL +#endif +#ifndef SOKOL_DEBUG + #ifndef NDEBUG + #define SOKOL_DEBUG + #endif +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif +#ifndef _SOKOL_PRIVATE + #if defined(__GNUC__) || defined(__clang__) + #define _SOKOL_PRIVATE __attribute__((unused)) static + #else + #define _SOKOL_PRIVATE static + #endif +#endif + +/* helper macros and constants */ +#define _simgui_def(val, def) (((val) == 0) ? (def) : (val)) + +typedef struct { + ImVec2 disp_size; + uint8_t _pad_8[8]; +} _simgui_vs_params_t; + +typedef struct { + simgui_desc_t desc; + float cur_dpi_scale; + sg_buffer vbuf; + sg_buffer ibuf; + sg_image img; + sg_shader shd; + sg_pipeline pip; + sg_range vertices; + sg_range indices; + bool is_osx; // return true if running on OSX (or HTML5 OSX), needed for copy/paste +} _simgui_state_t; +static _simgui_state_t _simgui; + +/* + Embedded source code compiled with: + + sokol-shdc -i simgui.glsl -o simgui.h -l glsl330:glsl300es:hlsl4:metal_macos:metal_ios:metal_sim:wgpu -b + + (not that for Metal and D3D11 byte code, sokol-shdc must be run + on macOS and Windows) + + @vs vs + uniform vs_params { + vec2 disp_size; + }; + in vec2 position; + in vec2 texcoord0; + in vec4 color0; + out vec2 uv; + out vec4 color; + void main() { + gl_Position = vec4(((position/disp_size)-0.5)*vec2(2.0,-2.0), 0.5, 1.0); + uv = texcoord0; + color = color0; + } + @end + + @fs fs + uniform sampler2D tex; + in vec2 uv; + in vec4 color; + out vec4 frag_color; + void main() { + frag_color = texture(tex, uv) * color; + } + @end + + @program simgui vs fs +*/ +#if defined(SOKOL_GLCORE33) +static const char _simgui_vs_source_glsl330[341] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e, + 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61, + 0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, + 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e, + 0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a, + 0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79, + 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31, + 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f, + 0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f, + 0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, + 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63, + 0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20, + 0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f, + 0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, + 0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x2f,0x20,0x76,0x73,0x5f, + 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x79,0x29,0x20,0x2d,0x20, + 0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63, + 0x32,0x28,0x32,0x2e,0x30,0x2c,0x20,0x2d,0x32,0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e, + 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x20, + 0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b, + 0x0a,0x7d,0x0a,0x0a,0x00, +}; +static const char _simgui_fs_source_glsl330[169] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e, + 0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20, + 0x74,0x65,0x78,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, + 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76, + 0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a, + 0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x69,0x6e,0x20,0x76, + 0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64, + 0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, + 0x72,0x65,0x28,0x74,0x65,0x78,0x2c,0x20,0x75,0x76,0x29,0x20,0x2a,0x20,0x63,0x6f, + 0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_GLES3) +static const char _simgui_vs_source_glsl300es[344] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, + 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73, + 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f, + 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29, + 0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a, + 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, + 0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78, + 0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34, + 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, + 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20, + 0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x0a,0x76,0x6f, + 0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, + 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65, + 0x63,0x34,0x28,0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x2f,0x20, + 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x79,0x29, + 0x20,0x2d,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2a,0x20, + 0x76,0x65,0x63,0x32,0x28,0x32,0x2e,0x30,0x2c,0x20,0x2d,0x32,0x2e,0x30,0x29,0x2c, + 0x20,0x30,0x2e,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x75,0x76,0x20,0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +static const char _simgui_fs_source_glsl300es[242] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, + 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, + 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, + 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, + 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d, + 0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x3b,0x0a,0x0a,0x6c,0x61,0x79, + 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, + 0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34, + 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20, + 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x69, + 0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c, + 0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29, + 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, + 0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x2c, + 0x20,0x75,0x76,0x29,0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x0a, + 0x0a,0x00, +}; +#elif defined(SOKOL_METAL) +static const uint8_t _simgui_vs_bytecode_metal_macos[3216] = { + 0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x90,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0xef,0xd7,0x24,0x0b,0xf0,0x26,0xba, + 0xcd,0xc3,0x6f,0x48,0x91,0x7a,0x7c,0x38,0xca,0xb8,0xf1,0xb1,0xe3,0xc7,0x99,0x8d, + 0xac,0x39,0x8e,0x2f,0xf8,0xa3,0x19,0x68,0x22,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x37,0x00,0x00, + 0x00,0x56,0x41,0x54,0x54,0x22,0x00,0x03,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x00,0x00,0x80,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x02,0x80,0x56,0x41,0x54,0x59,0x05,0x00,0x03, + 0x00,0x04,0x04,0x06,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54, + 0xde,0xc0,0x17,0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x60,0x0b,0x00,0x00, + 0xff,0xff,0xff,0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0xd5,0x02,0x00,0x00, + 0x0b,0x82,0x20,0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91, + 0x41,0xc8,0x04,0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19, + 0x1e,0x04,0x8b,0x62,0x80,0x10,0x45,0x02,0x42,0x92,0x0b,0x42,0x84,0x10,0x32,0x14, + 0x38,0x08,0x18,0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80, + 0x0c,0x19,0x21,0x72,0x24,0x07,0xc8,0x08,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0, + 0x01,0x00,0x00,0x00,0x51,0x18,0x00,0x00,0x81,0x00,0x00,0x00,0x1b,0xc8,0x25,0xf8, + 0xff,0xff,0xff,0xff,0x01,0x90,0x80,0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87, + 0x71,0xa0,0x07,0x76,0xc8,0x87,0x36,0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72, + 0x20,0x87,0x36,0x20,0x87,0x74,0xb0,0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88, + 0x07,0x79,0xa0,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07, + 0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41, + 0x1c,0xd8,0xa1,0x1c,0xda,0x80,0x1e,0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c, + 0xd8,0x81,0x1d,0xe6,0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87, + 0x72,0x98,0x87,0x79,0x68,0x03,0x78,0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72, + 0x68,0x03,0x73,0x80,0x87,0x76,0x08,0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e, + 0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda, + 0x00,0x1e,0xde,0x21,0x1d,0xdc,0x81,0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21, + 0x1d,0xda,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30, + 0x07,0x79,0x08,0x87,0x76,0x28,0x87,0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87, + 0x72,0x90,0x87,0x36,0x28,0x07,0x76,0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77, + 0x68,0x03,0x76,0x28,0x87,0x70,0x30,0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70, + 0x07,0x73,0x98,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07, + 0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1, + 0x1d,0xe0,0xa1,0x0d,0xe8,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08, + 0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87, + 0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41, + 0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d, + 0xca,0x81,0x1c,0xda,0x40,0x1f,0xca,0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0, + 0xa1,0x0d,0xda,0x21,0x1c,0xe8,0x01,0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80, + 0x70,0x87,0x77,0x68,0x03,0x7a,0x90,0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38, + 0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00, + 0x62,0x1e,0xe8,0x21,0x1c,0xc6,0x61,0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1, + 0x1c,0xc6,0x81,0x1e,0xde,0x41,0x1e,0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c, + 0xe4,0xa1,0x0d,0xe6,0x21,0x1d,0xf4,0xa1,0x1c,0x00,0x3c,0x00,0x88,0x7a,0x70,0x87, + 0x79,0x08,0x07,0x73,0x28,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a, + 0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xea,0x61,0x1e,0xca,0xa1,0x0d, + 0xe6,0xe1,0x1d,0xcc,0x81,0x1e,0xda,0xc0,0x1c,0xd8,0xe1,0x1d,0xc2,0x81,0x1e,0x00, + 0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x36,0x18,0x02,0x01,0x2c,0x40,0x05,0x00, + 0x49,0x18,0x00,0x00,0x01,0x00,0x00,0x00,0x13,0x84,0x40,0x00,0x89,0x20,0x00,0x00, + 0x1b,0x00,0x00,0x00,0x32,0x22,0x08,0x09,0x20,0x64,0x85,0x04,0x13,0x22,0xa4,0x84, + 0x04,0x13,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x88,0x8c,0x0b,0x84,0x84,0x4c, + 0x10,0x3c,0x33,0x00,0xc3,0x08,0x02,0x30,0x8c,0x40,0x00,0x77,0x49,0x53,0x44,0x09, + 0x93,0xcf,0x00,0x48,0x43,0xff,0x0e,0x35,0xf9,0x0f,0x20,0x28,0xc4,0x80,0x87,0x10, + 0x39,0x48,0x9a,0x22,0x4a,0x98,0xfc,0x4a,0xfa,0x1f,0x20,0x02,0x18,0x09,0x05,0x31, + 0x88,0x40,0x08,0xa5,0x98,0x08,0x29,0xb2,0x81,0x80,0x39,0x02,0x30,0xc8,0x81,0x9c, + 0x23,0x00,0x85,0x41,0x84,0x40,0x18,0x46,0x20,0x92,0x11,0x00,0x00,0x00,0x00,0x00, + 0x13,0xb2,0x70,0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60, + 0x87,0x72,0x68,0x83,0x76,0x08,0x87,0x71,0x78,0x87,0x79,0xc0,0x87,0x38,0x80,0x03, + 0x37,0x88,0x83,0x38,0x70,0x03,0x38,0xd8,0x70,0x1b,0xe5,0xd0,0x06,0xf0,0xa0,0x07, + 0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x90,0x0e,0x71, + 0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9,0x80,0x07,0x7a,0x80,0x07,0x7a,0x80, + 0x07,0x6d,0x90,0x0e,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07, + 0x6d,0x90,0x0e,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d, + 0x90,0x0e,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60, + 0x0e,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0e, + 0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x71, + 0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x60,0x0f,0x72,0x40, + 0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x73,0x20,0x07, + 0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x74,0x80,0x07,0x7a, + 0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x76,0x40,0x07,0x7a,0x60, + 0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x79,0x60,0x07,0x7a,0x10,0x07, + 0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x20,0x07,0x78, + 0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10, + 0x07,0x79,0x20,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07, + 0x6d,0x60,0x0f,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72, + 0x50,0x07,0x76,0xd0,0x06,0xf6,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20, + 0x07,0x7a,0x50,0x07,0x71,0x20,0x07,0x6d,0x60,0x0f,0x71,0x00,0x07,0x72,0x40,0x07, + 0x7a,0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x6d, + 0xe0,0x0e,0x78,0xa0,0x07,0x71,0x60,0x07,0x7a,0x30,0x07,0x72,0x30,0x84,0x39,0x00, + 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0xc8,0x02,0x01,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x32,0x1e,0x98,0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0xda, + 0x11,0x00,0xca,0x12,0x18,0x01,0x28,0x88,0x22,0x28,0x84,0x32,0x20,0x1d,0x6b,0x50, + 0x1e,0x82,0x60,0x8c,0x00,0x04,0x41,0x50,0x04,0x03,0x00,0x00,0x79,0x18,0x00,0x00, + 0x16,0x01,0x00,0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9, + 0xb9,0xb4,0x37,0xb7,0x21,0x46,0x52,0x20,0x80,0x82,0x50,0xb9,0x1b,0x43,0x0b,0x93, + 0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62,0x24,0x02,0x22,0x24,0x06,0xd9,0x20,0x08,0x0e, + 0x8e,0xad,0x0c,0x84,0x89,0xc9,0xaa,0x09,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d, + 0x24,0x07,0x46,0xc6,0x25,0x86,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac, + 0x25,0x07,0x46,0xc6,0x25,0x86,0xc6,0x25,0x27,0x65,0x88,0x80,0x10,0x43,0x8c,0x44, + 0x48,0x88,0x64,0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x41,0x8e,0x44,0x48,0x84, + 0x64,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56, + 0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x40, + 0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61, + 0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x04, + 0x64,0x61,0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98, + 0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1, + 0x7d,0x91,0xa5,0xcd,0x85,0x89,0xb1,0x95,0x0d,0x11,0x90,0x86,0x61,0x10,0x96,0x26, + 0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0xe2,0x16,0x46,0x97,0x66,0x57,0xf6, + 0x45,0xf6,0x56,0x27,0xc6,0x56,0xf6,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44, + 0x40,0x1e,0x92,0x41,0x58,0x9a,0x9c,0xcb,0xd8,0x5b,0x1b,0x5c,0x1a,0x5b,0x99,0x8b, + 0x5b,0x18,0x5d,0x9a,0x5d,0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0xdb,0x9b,0xdb,0xd9, + 0x17,0x59,0xda,0x5c,0x98,0x18,0x5b,0xd9,0x10,0x01,0x89,0x78,0x06,0x61,0x69,0x72, + 0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x5f, + 0x77,0x69,0x64,0x65,0x5f,0x76,0x65,0x63,0x74,0x6f,0x72,0x73,0x5f,0x64,0x69,0x73, + 0x61,0x62,0x6c,0x65,0x43,0x04,0x64,0x62,0x14,0x96,0x26,0xe7,0x62,0x57,0x26,0x47, + 0x57,0x86,0xf7,0xf5,0x56,0x47,0x07,0x57,0x47,0xc7,0xa5,0x6e,0xae,0x4c,0x0e,0x85, + 0xed,0x6d,0xcc,0x0d,0x26,0x85,0x51,0x58,0x9a,0x9c,0x4b,0x98,0xdc,0xd9,0x17,0x5d, + 0x1e,0x5c,0xd9,0x97,0x5b,0x58,0x5b,0x19,0x0d,0x33,0xb6,0xb7,0x30,0x3a,0x19,0x32, + 0x61,0x69,0x72,0x2e,0x61,0x72,0x67,0x5f,0x6e,0x61,0x6d,0x65,0x14,0xea,0xec,0x86, + 0x30,0x48,0x85,0x58,0xc8,0x85,0x60,0x48,0x86,0x68,0x5c,0xea,0xe6,0xca,0xe4,0x50, + 0xd8,0xde,0xc6,0xdc,0x62,0x52,0x68,0x98,0xb1,0xbd,0x85,0xd1,0xd1,0xb0,0x18,0x7b, + 0x63,0x7b,0x93,0x1b,0xc2,0x20,0x15,0xc2,0x21,0x17,0xd2,0x21,0x19,0xe2,0x91,0x09, + 0x4b,0x93,0x73,0x81,0x7b,0x9b,0x4b,0xa3,0x4b,0x7b,0x73,0xe3,0x72,0xc6,0xf6,0x05, + 0xf5,0x36,0x97,0x46,0x97,0xf6,0xe6,0x36,0x44,0x41,0xc0,0x00,0xb9,0x90,0x0e,0xc9, + 0x90,0x30,0x18,0x62,0x20,0x1b,0xf2,0x21,0x62,0x40,0x28,0x2c,0x4d,0xce,0xc5,0xae, + 0x4c,0x8e,0xae,0x0c,0xef,0x2b,0xcd,0x0d,0xae,0x8e,0x8e,0x52,0x58,0x9a,0x9c,0x0b, + 0xdb,0xdb,0x58,0x18,0x5d,0xda,0x9b,0xdb,0x57,0x9a,0x1b,0x59,0x19,0x1e,0xb3,0xb3, + 0x32,0xb7,0x32,0xb9,0x30,0xba,0x32,0x32,0x14,0x1c,0xb8,0xb7,0xb9,0x34,0xba,0xb4, + 0x37,0x37,0x22,0x3b,0x99,0x2f,0xb3,0x14,0x22,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x43,0xa8,0x64,0x40,0xc8,0x00,0x29,0x83,0x64,0x48,0x04,0xc4,0x0c,0x90,0x0b, + 0xc1,0x90,0x0c,0x39,0x03,0x6a,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x64,0x28, + 0x39,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x44,0x76,0x32,0x5f,0x66,0x29, + 0x4c,0xe8,0xca,0xf0,0xc6,0xde,0xde,0xe4,0xc8,0x60,0x86,0x50,0x89,0x80,0x90,0x01, + 0x52,0x06,0x89,0x90,0x08,0x48,0x1a,0x20,0x17,0x82,0x21,0x19,0xa2,0x06,0xbc,0xce, + 0xca,0xdc,0xca,0xe4,0xc2,0xe8,0xca,0xc8,0x50,0x6c,0xc6,0xde,0xd8,0xde,0xe4,0x60, + 0x88,0xec,0x68,0xbe,0xcc,0x52,0x68,0x8c,0xbd,0xb1,0xbd,0xc9,0xc1,0x0c,0xa1,0x92, + 0x02,0x21,0x03,0xa4,0x0c,0x92,0x22,0x11,0x10,0x36,0x40,0x2e,0xa4,0x43,0x32,0xa4, + 0x0d,0xa8,0x84,0xa5,0xc9,0xb9,0x88,0xd5,0x99,0x99,0x95,0xc9,0xf1,0x09,0x4b,0x93, + 0x73,0x11,0xab,0x33,0x33,0x2b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x23,0x12,0x96,0x26, + 0xe7,0x22,0x57,0x16,0x46,0x46,0x2a,0x2c,0x4d,0xce,0x65,0x8e,0x4e,0xae,0x6e,0x8c, + 0xee,0x8b,0x2e,0x0f,0xae,0xec,0x2b,0xcd,0xcd,0xec,0x8d,0x09,0x59,0xda,0x1c,0xdc, + 0xd7,0x5c,0x9a,0x5e,0xd9,0x10,0x25,0x19,0x12,0x22,0x19,0x10,0x0c,0x99,0x03,0x46, + 0x61,0x69,0x72,0x2e,0x61,0x72,0x67,0x5f,0x74,0x79,0x70,0x65,0x5f,0x73,0x69,0x7a, + 0x65,0xbc,0xc2,0xd2,0xe4,0x5c,0xc2,0xe4,0xce,0xbe,0xe8,0xf2,0xe0,0xca,0xbe,0xc2, + 0xd8,0xd2,0xce,0xdc,0xbe,0xe6,0xd2,0xf4,0xca,0x98,0xd8,0xcd,0x7d,0xc1,0x85,0xc9, + 0x85,0xb5,0xcd,0x71,0xf8,0x92,0x99,0x19,0x42,0x06,0xc9,0x81,0xbc,0x01,0x02,0x07, + 0x09,0x81,0x94,0x41,0x32,0x24,0x02,0x12,0x07,0x88,0x1c,0x20,0x74,0x80,0xd4,0x41, + 0x42,0x20,0x76,0x90,0x10,0xc8,0x85,0xdc,0x01,0x92,0x21,0x78,0x30,0x04,0x41,0xd0, + 0x00,0x59,0x03,0xc4,0x0d,0x90,0x3c,0x18,0x62,0x1c,0x00,0x32,0x06,0x88,0x1e,0xf0, + 0x79,0x6b,0x73,0x4b,0x83,0x7b,0xa3,0x2b,0x73,0xa3,0x03,0x19,0x43,0x0b,0x93,0xe3, + 0x33,0x95,0xd6,0x06,0xc7,0x56,0x06,0x32,0xb4,0xb2,0x02,0x42,0x25,0x14,0x14,0x34, + 0x44,0x40,0xfa,0x60,0x88,0x81,0xf0,0x01,0xe2,0x07,0x4b,0x30,0xc4,0x40,0xfe,0x00, + 0xf9,0x83,0x25,0x18,0x22,0x00,0xc9,0x88,0x88,0x1d,0xd8,0xc1,0x1e,0xda,0xc1,0x0d, + 0xda,0xe1,0x1d,0xc8,0xa1,0x1e,0xd8,0xa1,0x1c,0xdc,0xc0,0x1c,0xd8,0x21,0x1c,0xce, + 0x61,0x1e,0xa6,0x08,0xc1,0x30,0x42,0x61,0x07,0x76,0xb0,0x87,0x76,0x70,0x83,0x74, + 0x20,0x87,0x72,0x70,0x07,0x7a,0x98,0x12,0x14,0x23,0x96,0x70,0x48,0x07,0x79,0x70, + 0x03,0x7b,0x28,0x07,0x79,0x98,0x87,0x74,0x78,0x07,0x77,0x98,0x12,0x18,0x23,0xa8, + 0x70,0x48,0x07,0x79,0x70,0x03,0x76,0x08,0x07,0x77,0x38,0x87,0x7a,0x08,0x87,0x73, + 0x28,0x87,0x5f,0xb0,0x87,0x72,0x90,0x87,0x79,0x48,0x87,0x77,0x70,0x87,0x29,0x01, + 0x32,0x62,0x0a,0x87,0x74,0x90,0x07,0x37,0x18,0x87,0x77,0x68,0x07,0x78,0x48,0x07, + 0x76,0x28,0x87,0x5f,0x78,0x07,0x78,0xa0,0x87,0x74,0x78,0x07,0x77,0x98,0x87,0x29, + 0x86,0xc2,0x38,0x90,0x44,0x8d,0x50,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xec,0xa1,0x1c, + 0xe4,0x81,0x1e,0xca,0x01,0x1f,0xa6,0x04,0x7b,0x00,0x00,0x00,0x79,0x18,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88, + 0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6, + 0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce, + 0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8, + 0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48, + 0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11, + 0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e, + 0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89, + 0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b, + 0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37, + 0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78, + 0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81, + 0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1, + 0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c, + 0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39, + 0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc, + 0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58, + 0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87, + 0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f, + 0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e, + 0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66, + 0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b, + 0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0, + 0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e, + 0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc, + 0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3, + 0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07, + 0x7a,0x28,0x07,0x72,0x00,0x00,0x00,0x00,0x71,0x20,0x00,0x00,0x02,0x00,0x00,0x00, + 0x06,0x50,0x30,0x00,0xd2,0xd0,0x00,0x00,0x61,0x20,0x00,0x00,0x24,0x00,0x00,0x00, + 0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0xd4,0x63,0x11,0x40, + 0x60,0x1c,0x73,0x10,0x83,0x00,0x41,0x94,0x33,0x00,0x14,0x63,0x09,0x20,0x08,0x82, + 0xf0,0x2f,0x80,0x20,0x08,0xc2,0xbf,0x30,0x96,0x00,0x82,0x20,0x08,0x82,0x01,0x08, + 0x82,0x20,0x08,0x0e,0x33,0x00,0x24,0x73,0x10,0x18,0x76,0x59,0x34,0x33,0x00,0x04, + 0x63,0x04,0x20,0x08,0x82,0xf8,0x37,0x46,0x00,0x82,0x20,0x08,0x7f,0x33,0x00,0x00, + 0xe3,0x0d,0x0c,0x66,0x51,0x40,0x2c,0x0a,0xe8,0x63,0xc1,0x02,0x1f,0x0b,0x16,0xf9, + 0x0c,0x32,0x04,0xcb,0x33,0xc8,0x10,0x2c,0xd1,0x6c,0xc3,0x52,0x01,0xb3,0x0d,0x41, + 0x15,0xcc,0x36,0x04,0x83,0x90,0x41,0x40,0x0c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x5b,0x86,0x20,0x00,0x85,0x2d,0x83,0x30,0x84,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _simgui_fs_bytecode_metal_macos[2909] = { + 0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x5d,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd5,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0x17,0xe5,0xa2,0xb3,0x7d,0x00,0xfc, + 0xde,0x00,0x5f,0xbd,0x79,0x5e,0xd5,0x95,0xff,0xb6,0xf4,0xce,0x41,0x07,0xfb,0x8f, + 0x49,0x6b,0x95,0x79,0x7a,0xd1,0xcf,0x19,0xde,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x04,0x00,0x00, + 0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17, + 0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x60,0x0a,0x00,0x00,0xff,0xff,0xff, + 0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0x95,0x02,0x00,0x00,0x0b,0x82,0x20, + 0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04, + 0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b, + 0x62,0x80,0x14,0x45,0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18, + 0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21, + 0x72,0x24,0x07,0xc8,0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00, + 0x00,0x51,0x18,0x00,0x00,0x89,0x00,0x00,0x00,0x1b,0xcc,0x25,0xf8,0xff,0xff,0xff, + 0xff,0x01,0x60,0x00,0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07, + 0x7a,0x60,0x87,0x7c,0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72, + 0x68,0x03,0x72,0x48,0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90, + 0x07,0x7a,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc, + 0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81, + 0x1d,0xca,0xa1,0x0d,0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d, + 0xd8,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87, + 0x79,0x98,0x87,0x36,0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36, + 0x30,0x07,0x78,0x68,0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c, + 0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0, + 0xe1,0x1d,0xd2,0xc1,0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90, + 0x87,0x70,0x68,0x87,0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07, + 0x79,0x68,0x83,0x72,0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36, + 0x60,0x87,0x72,0x08,0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30, + 0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8, + 0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01, + 0x1e,0xda,0x80,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60, + 0x87,0x79,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1, + 0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c, + 0xc8,0xa1,0x0d,0xf4,0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda, + 0xa0,0x1d,0xc2,0x81,0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77, + 0x78,0x87,0x36,0xa0,0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68, + 0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6, + 0x81,0x1e,0xc2,0x61,0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61, + 0x1c,0xe8,0xe1,0x1d,0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e, + 0xda,0x60,0x1e,0xd2,0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa8,0x07,0x77,0x98,0x87, + 0x70,0x30,0x87,0x72,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74, + 0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0xa2,0x1e,0xe6,0xa1,0x1c,0xda,0x60,0x1e, + 0xde,0xc1,0x1c,0xe8,0xa1,0x0d,0xcc,0x81,0x1d,0xde,0x21,0x1c,0xe8,0x01,0x30,0x87, + 0x70,0x60,0x87,0x79,0x28,0x07,0x60,0x83,0x21,0x0c,0xc0,0x02,0x54,0x1b,0x8c,0x81, + 0x00,0x16,0xa0,0xda,0x80,0x10,0xff,0xff,0xff,0xff,0x3f,0x00,0x0c,0x20,0x01,0xd5, + 0x06,0xa3,0x08,0x80,0x05,0xa8,0x36,0x18,0x86,0x00,0x2c,0x40,0x05,0x49,0x18,0x00, + 0x00,0x03,0x00,0x00,0x00,0x13,0x86,0x40,0x18,0x26,0x0c,0x44,0x61,0x00,0x00,0x00, + 0x00,0x89,0x20,0x00,0x00,0x20,0x00,0x00,0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85, + 0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a, + 0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x48,0x33,0x00,0xc3,0x08,0x04,0x70,0x90,0x34,0x45, + 0x94,0x30,0xf9,0x0c,0x80,0x34,0xf4,0xef,0x50,0x13,0x0a,0xc2,0x30,0x82,0x00,0x1c, + 0x25,0x4d,0x11,0x25,0x4c,0xfe,0x3f,0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0xff,0x34, + 0x46,0x00,0x0c,0x22,0x10,0xc1,0x45,0xd2,0x14,0x51,0xc2,0xe4,0xff,0x12,0xc0,0x3c, + 0x0b,0x11,0xfd,0xd3,0x18,0x01,0x30,0x88,0x60,0x08,0xa5,0x10,0x23,0x94,0x43,0x68, + 0x8e,0x20,0x98,0x23,0x00,0x83,0x61,0x04,0x61,0x29,0x48,0x28,0x67,0x28,0xa6,0x00, + 0xb5,0x81,0x80,0x1c,0x58,0x23,0x00,0x00,0x00,0x13,0xb2,0x70,0x48,0x07,0x79,0xb0, + 0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68,0x83,0x76,0x08,0x87, + 0x71,0x78,0x87,0x79,0xc0,0x87,0x38,0x80,0x03,0x37,0x88,0x83,0x38,0x70,0x03,0x38, + 0xd8,0x70,0x1b,0xe5,0xd0,0x06,0xf0,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74, + 0xa0,0x07,0x76,0x40,0x07,0x6d,0x90,0x0e,0x71,0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0, + 0x06,0xe9,0x80,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e,0x71,0x60,0x07, + 0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x90,0x0e,0x73,0x20,0x07,0x7a, + 0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x90,0x0e,0x76,0x40,0x07,0x7a,0x60, + 0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0e,0x73,0x20,0x07,0x7a,0x30,0x07, + 0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0e,0x76,0x40,0x07,0x7a,0x60,0x07,0x74, + 0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0, + 0x07,0x71,0x60,0x07,0x6d,0x60,0x0f,0x72,0x40,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07, + 0x73,0x20,0x07,0x6d,0x60,0x0f,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73, + 0x20,0x07,0x6d,0x60,0x0f,0x74,0x80,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40, + 0x07,0x6d,0x60,0x0f,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07, + 0x6d,0x60,0x0f,0x79,0x60,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72, + 0x80,0x07,0x6d,0x60,0x0f,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0, + 0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x79,0x20,0x07,0x7a,0x20,0x07, + 0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x72,0x50,0x07,0x76, + 0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x50, + 0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07, + 0x6d,0x60,0x0f,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07,0x70,0x20,0x07,0x74, + 0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x6d,0xe0,0x0e,0x78,0xa0,0x07,0x71,0x60, + 0x07,0x7a,0x30,0x07,0x72,0x30,0x84,0x49,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00, + 0x18,0xc2,0x38,0x40,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x64,0x81,0x00,0x00,0x00, + 0x00,0x08,0x00,0x00,0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26, + 0x47,0xc6,0x04,0x43,0x5a,0x25,0x30,0x02,0x50,0x04,0x85,0x50,0x10,0x65,0x40,0x70, + 0xac,0x41,0x79,0x08,0x00,0x79,0x18,0x00,0x00,0xd9,0x00,0x00,0x00,0x1a,0x03,0x4c, + 0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x42, + 0x3c,0x00,0x84,0x50,0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62, + 0x2c,0xc2,0x23,0x2c,0x05,0xd9,0x20,0x08,0x0e,0x8e,0xad,0x0c,0x84,0x89,0xc9,0xaa, + 0x09,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x24,0x07,0x46,0xc6,0x25,0x86,0x06, + 0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac,0x25,0x07,0x46,0xc6,0x25,0x86,0xc6, + 0x25,0x27,0x65,0x88,0xf0,0x10,0x43,0x8c,0x45,0x58,0x8c,0x65,0x60,0xd1,0x54,0x46, + 0x17,0xc6,0x36,0x04,0x79,0x8e,0x45,0x58,0x84,0x65,0xe0,0x16,0x96,0x26,0xe7,0x32, + 0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45, + 0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x78,0x12,0x72,0x61,0x69,0x72,0x2e,0x63, + 0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61,0x73,0x74,0x5f,0x6d,0x61,0x74,0x68, + 0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x84,0x67,0x61,0x19,0x84,0xa5,0xc9,0xb9, + 0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99, + 0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1,0x7d,0x91,0xa5,0xcd,0x85,0x89,0xb1, + 0x95,0x0d,0x11,0x9e,0x86,0x61,0x10,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6, + 0x56,0xe6,0xe2,0x16,0x46,0x97,0x66,0x57,0xf6,0x45,0xf6,0x56,0x27,0xc6,0x56,0xf6, + 0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x78,0x1e,0x92,0x41,0x58,0x9a,0x9c, + 0xcb,0xd8,0x5b,0x1b,0x5c,0x1a,0x5b,0x99,0x8b,0x5b,0x18,0x5d,0x9a,0x5d,0xd9,0x17, + 0xdb,0x9b,0xdb,0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0x59,0xda,0x5c,0x98,0x18,0x5b, + 0xd9,0x10,0xe1,0x89,0x78,0x06,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c, + 0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x5f,0x77,0x69,0x64,0x65,0x5f,0x76,0x65, + 0x63,0x74,0x6f,0x72,0x73,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x43,0x84,0x67, + 0x62,0x14,0x96,0x26,0xe7,0x22,0x57,0xe6,0x46,0x56,0x26,0xf7,0x45,0x17,0x26,0x77, + 0x56,0x46,0xc7,0x28,0x2c,0x4d,0xce,0x25,0x4c,0xee,0xec,0x8b,0x2e,0x0f,0xae,0xec, + 0xcb,0x2d,0xac,0xad,0x8c,0x86,0x19,0xdb,0x5b,0x18,0x1d,0x0d,0x99,0xb0,0x34,0x39, + 0x97,0x30,0xb9,0xb3,0x2f,0xb7,0xb0,0xb6,0x32,0x2a,0x66,0x72,0x61,0x67,0x5f,0x63, + 0x6f,0x6c,0x6f,0x72,0x43,0x98,0xa7,0x5a,0x86,0xc7,0x7a,0xae,0x07,0x7b,0xb2,0x21, + 0xc2,0xa3,0x51,0x0a,0x4b,0x93,0x73,0x31,0x93,0x0b,0x3b,0x6b,0x2b,0x73,0xa3,0xfb, + 0x4a,0x73,0x83,0xab,0xa3,0xe3,0x52,0x37,0x57,0x26,0x87,0xc2,0xf6,0x36,0xe6,0x06, + 0x93,0x42,0x25,0x2c,0x4d,0xce,0x65,0xac,0xcc,0x8d,0xae,0x4c,0x8e,0x4f,0x58,0x9a, + 0x9c,0x0b,0x5c,0x99,0xdc,0x1c,0x5c,0xd9,0x18,0x5d,0x9a,0x5d,0x19,0x0d,0x33,0xb6, + 0xb7,0x30,0x3a,0x19,0x0a,0x75,0x76,0x43,0xa4,0x65,0x78,0xb8,0xa7,0x7b,0xbc,0xe7, + 0x7b,0xac,0x07,0x0c,0x1e,0xec,0x09,0x03,0x2e,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f, + 0x63,0x6e,0x31,0x29,0x2c,0xc6,0xde,0xd8,0xde,0xe4,0x86,0x48,0x8b,0xf0,0x70,0xcf, + 0x18,0x3c,0xde,0xf3,0x3d,0xd6,0x73,0x3d,0xd8,0x43,0x06,0x5c,0xc2,0xd2,0xe4,0x5c, + 0xe8,0xca,0xf0,0xe8,0xea,0xe4,0xca,0x28,0x85,0xa5,0xc9,0xb9,0xb0,0xbd,0x8d,0x85, + 0xd1,0xa5,0xbd,0xb9,0x7d,0xa5,0xb9,0x91,0x95,0xe1,0x51,0x09,0x4b,0x93,0x73,0x99, + 0x0b,0x6b,0x83,0x63,0x2b,0x23,0x46,0x57,0x86,0x47,0x57,0x27,0x57,0x26,0x43,0xc6, + 0x63,0xc6,0xf6,0x16,0x46,0xc7,0x02,0x32,0x17,0xd6,0x06,0xc7,0x56,0xe6,0xc3,0x81, + 0xae,0x0c,0x6f,0x08,0xb5,0x10,0x8f,0x19,0x3c,0x67,0xb0,0x0c,0x8b,0xf0,0xa0,0xc1, + 0x63,0x3d,0x69,0xf0,0x60,0x8f,0x1a,0x70,0x09,0x4b,0x93,0x73,0x99,0x0b,0x6b,0x83, + 0x63,0x2b,0x93,0xe3,0x31,0x17,0xd6,0x06,0xc7,0x56,0x26,0x47,0x84,0xae,0x0c,0x6f, + 0xaa,0x0d,0x8e,0x4d,0x6e,0x88,0xb4,0x1c,0x0f,0x1b,0x3c,0x67,0xb0,0x0c,0x8b,0xf0, + 0x58,0x4f,0x1b,0x3c,0xd8,0xe3,0x06,0x43,0x90,0x47,0x0c,0x9e,0x32,0x78,0xd6,0xe0, + 0x79,0x83,0x21,0x46,0x02,0x3c,0xdb,0x03,0x07,0x23,0x22,0x76,0x60,0x07,0x7b,0x68, + 0x07,0x37,0x68,0x87,0x77,0x20,0x87,0x7a,0x60,0x87,0x72,0x70,0x03,0x73,0x60,0x87, + 0x70,0x38,0x87,0x79,0x98,0x22,0x04,0xc3,0x08,0x85,0x1d,0xd8,0xc1,0x1e,0xda,0xc1, + 0x0d,0xd2,0x81,0x1c,0xca,0xc1,0x1d,0xe8,0x61,0x4a,0x50,0x8c,0x58,0xc2,0x21,0x1d, + 0xe4,0xc1,0x0d,0xec,0xa1,0x1c,0xe4,0x61,0x1e,0xd2,0xe1,0x1d,0xdc,0x61,0x4a,0x60, + 0x8c,0xa0,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xd8,0x21,0x1c,0xdc,0xe1,0x1c,0xea,0x21, + 0x1c,0xce,0xa1,0x1c,0x7e,0xc1,0x1e,0xca,0x41,0x1e,0xe6,0x21,0x1d,0xde,0xc1,0x1d, + 0xa6,0x04,0xc8,0x88,0x29,0x1c,0xd2,0x41,0x1e,0xdc,0x60,0x1c,0xde,0xa1,0x1d,0xe0, + 0x21,0x1d,0xd8,0xa1,0x1c,0x7e,0xe1,0x1d,0xe0,0x81,0x1e,0xd2,0xe1,0x1d,0xdc,0x61, + 0x1e,0xa6,0x18,0x0a,0xe3,0x40,0x12,0x35,0x82,0x09,0x87,0x74,0x90,0x07,0x37,0x30, + 0x07,0x79,0x08,0x87,0x73,0x68,0x87,0x72,0x70,0x07,0x7a,0x98,0x12,0xc4,0x01,0x00, + 0x00,0x79,0x18,0x00,0x00,0x6d,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c, + 0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07, + 0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42, + 0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83, + 0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07, + 0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70, + 0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3, + 0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2, + 0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc, + 0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68, + 0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07, + 0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72, + 0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec, + 0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc, + 0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8, + 0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03, + 0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c, + 0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74, + 0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4, + 0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc, + 0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1, + 0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50, + 0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51, + 0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21, + 0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06, + 0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c, + 0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77, + 0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x00,0x00,0x00,0x00,0x71,0x20,0x00, + 0x00,0x08,0x00,0x00,0x00,0x16,0xb0,0x01,0x48,0xe4,0x4b,0x00,0xf3,0x2c,0xc4,0x3f, + 0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0x7e,0x85,0x17,0xb7,0x6d,0x00,0x05,0x03,0x20, + 0x0d,0x0d,0x00,0x00,0x00,0x61,0x20,0x00,0x00,0x0c,0x00,0x00,0x00,0x13,0x04,0x41, + 0x2c,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xc4,0x46,0x00,0x48,0x8d,0x00,0xd4, + 0x00,0x89,0x19,0x00,0x02,0x23,0x00,0x00,0x00,0x23,0x06,0x8a,0x10,0x44,0x87,0x91, + 0x0c,0x05,0x11,0x58,0x90,0xc8,0x67,0xb6,0x81,0x08,0x80,0x0c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _simgui_vs_bytecode_metal_ios[3200] = { + 0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x70,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0xcb,0xdd,0xe3,0x08,0x7a,0x87,0xef, + 0xdd,0xe0,0x68,0xe7,0xe8,0x6b,0xe6,0xea,0x8b,0x6d,0x4a,0xe0,0x3d,0x6a,0xfe,0xe4, + 0xfe,0x32,0x1d,0xbe,0xb6,0x10,0x11,0xee,0x75,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x37,0x00,0x00, + 0x00,0x56,0x41,0x54,0x54,0x22,0x00,0x03,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x00,0x00,0x80,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x02,0x80,0x56,0x41,0x54,0x59,0x05,0x00,0x03, + 0x00,0x04,0x04,0x06,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54, + 0xde,0xc0,0x17,0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x5c,0x0b,0x00,0x00, + 0xff,0xff,0xff,0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0xd4,0x02,0x00,0x00, + 0x0b,0x82,0x20,0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91, + 0x41,0xc8,0x04,0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19, + 0x1e,0x04,0x8b,0x62,0x80,0x10,0x45,0x02,0x42,0x92,0x0b,0x42,0x84,0x10,0x32,0x14, + 0x38,0x08,0x18,0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80, + 0x0c,0x19,0x21,0x72,0x24,0x07,0xc8,0x08,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0, + 0x01,0x00,0x00,0x00,0x51,0x18,0x00,0x00,0x82,0x00,0x00,0x00,0x1b,0xc8,0x25,0xf8, + 0xff,0xff,0xff,0xff,0x01,0x90,0x80,0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87, + 0x71,0xa0,0x07,0x76,0xc8,0x87,0x36,0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72, + 0x20,0x87,0x36,0x20,0x87,0x74,0xb0,0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88, + 0x07,0x79,0xa0,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07, + 0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41, + 0x1c,0xd8,0xa1,0x1c,0xda,0x80,0x1e,0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c, + 0xd8,0x81,0x1d,0xe6,0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87, + 0x72,0x98,0x87,0x79,0x68,0x03,0x78,0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72, + 0x68,0x03,0x73,0x80,0x87,0x76,0x08,0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e, + 0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda, + 0x00,0x1e,0xde,0x21,0x1d,0xdc,0x81,0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21, + 0x1d,0xda,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30, + 0x07,0x79,0x08,0x87,0x76,0x28,0x87,0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87, + 0x72,0x90,0x87,0x36,0x28,0x07,0x76,0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77, + 0x68,0x03,0x76,0x28,0x87,0x70,0x30,0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70, + 0x07,0x73,0x98,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07, + 0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1, + 0x1d,0xe0,0xa1,0x0d,0xe8,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08, + 0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87, + 0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41, + 0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d, + 0xca,0x81,0x1c,0xda,0x40,0x1f,0xca,0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0, + 0xa1,0x0d,0xda,0x21,0x1c,0xe8,0x01,0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80, + 0x70,0x87,0x77,0x68,0x03,0x7a,0x90,0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38, + 0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00, + 0x62,0x1e,0xe8,0x21,0x1c,0xc6,0x61,0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1, + 0x1c,0xc6,0x81,0x1e,0xde,0x41,0x1e,0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c, + 0xe4,0xa1,0x0d,0xe6,0x21,0x1d,0xf4,0xa1,0x1c,0x00,0x3c,0x00,0x88,0x7a,0x70,0x87, + 0x79,0x08,0x07,0x73,0x28,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a, + 0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xea,0x61,0x1e,0xca,0xa1,0x0d, + 0xe6,0xe1,0x1d,0xcc,0x81,0x1e,0xda,0xc0,0x1c,0xd8,0xe1,0x1d,0xc2,0x81,0x1e,0x00, + 0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x36,0x20,0x02,0x01,0x24,0xc0,0x02,0x54, + 0x00,0x00,0x00,0x00,0x49,0x18,0x00,0x00,0x01,0x00,0x00,0x00,0x13,0x84,0x40,0x00, + 0x89,0x20,0x00,0x00,0x1b,0x00,0x00,0x00,0x32,0x22,0x08,0x09,0x20,0x64,0x85,0x04, + 0x13,0x22,0xa4,0x84,0x04,0x13,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x88,0x8c, + 0x0b,0x84,0x84,0x4c,0x10,0x3c,0x33,0x00,0xc3,0x08,0x02,0x30,0x8c,0x40,0x00,0x77, + 0x49,0x53,0x44,0x09,0x93,0xcf,0x00,0x48,0x43,0xff,0x0e,0x35,0xf9,0x0f,0x20,0x28, + 0xc4,0x80,0x87,0x10,0x39,0x48,0x9a,0x22,0x4a,0x98,0xfc,0x4a,0xfa,0x1f,0x20,0x02, + 0x18,0x09,0x05,0x31,0x88,0x40,0x08,0xa5,0x98,0x08,0x29,0xb2,0x81,0x80,0x39,0x02, + 0x30,0x48,0x81,0x9c,0x23,0x00,0x85,0x41,0x84,0x40,0x18,0x46,0x20,0x92,0x11,0x00, + 0x00,0x00,0x00,0x00,0x13,0xa8,0x70,0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70, + 0x80,0x07,0x78,0x60,0x87,0x72,0x68,0x83,0x74,0x78,0x87,0x79,0xc8,0x03,0x37,0x80, + 0x03,0x37,0x80,0x83,0x0d,0xb7,0x51,0x0e,0x6d,0x00,0x0f,0x7a,0x60,0x07,0x74,0xa0, + 0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe9,0x10,0x07,0x7a,0x80,0x07, + 0x7a,0x80,0x07,0x6d,0x90,0x0e,0x78,0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9, + 0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xe9,0x30, + 0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe9,0x60,0x07, + 0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe6,0x30,0x07,0x72, + 0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe6,0x60,0x07,0x74,0xa0, + 0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x10,0x07,0x76,0xa0,0x07, + 0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x74,0xa0,0x07,0x73, + 0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20, + 0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x40,0x07,0x78,0xa0,0x07,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a, + 0x60,0x07,0x74,0xd0,0x06,0xf6,0x90,0x07,0x76,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0, + 0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07, + 0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x90,0x07,0x72, + 0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x20, + 0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07, + 0x6d,0x60,0x0f,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xa0,0x07,0x75, + 0x10,0x07,0x72,0xd0,0x06,0xf6,0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00, + 0x07,0x72,0x40,0x07,0x7a,0x10,0x07,0x70,0x20,0x07,0x74,0xd0,0x06,0xee,0x80,0x07, + 0x7a,0x10,0x07,0x76,0xa0,0x07,0x73,0x20,0x07,0x43,0x98,0x03,0x00,0x80,0x00,0x00, + 0x00,0x00,0x00,0x80,0x2c,0x10,0x00,0x00,0x0b,0x00,0x00,0x00,0x32,0x1e,0x98,0x10, + 0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0xda,0x11,0x00,0xca,0x12, + 0x18,0x01,0x28,0x88,0x22,0x28,0x84,0x32,0x20,0x1d,0x4b,0x68,0x0a,0x82,0x31,0x02, + 0x10,0x04,0x41,0x11,0x0c,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0x16,0x01,0x00,0x00, + 0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7, + 0x21,0x46,0x52,0x20,0x80,0x82,0x50,0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3, + 0x2b,0x1b,0x62,0x24,0x02,0x22,0x24,0x06,0xd9,0x20,0x08,0x0e,0x8e,0xad,0x0c,0x84, + 0x89,0xc9,0xaa,0x09,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x64,0x26,0x07,0x46, + 0xc6,0xc5,0xe6,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac,0x65,0x26,0x07, + 0x46,0xc6,0xc5,0xe6,0x26,0x65,0x88,0x80,0x10,0x43,0x8c,0x44,0x48,0x88,0x64,0x60, + 0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x41,0x8e,0x44,0x48,0x86,0x64,0xe0,0x16,0x96, + 0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26,0xd7, + 0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x40,0x12,0x72,0x61,0x69, + 0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61,0x73,0x74,0x5f,0x6d, + 0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x04,0x64,0x21,0x19,0x84, + 0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5,0x95, + 0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1,0x7d,0x95,0xb9,0x85, + 0x89,0xb1,0x95,0x0d,0x11,0x90,0x86,0x61,0x10,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06, + 0x97,0xc6,0x56,0xe6,0xe2,0x16,0x46,0x97,0x66,0x57,0xf6,0x45,0xf6,0x56,0x27,0xc6, + 0x56,0xf6,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x40,0x1e,0x92,0x41,0x58, + 0x9a,0x9c,0xcb,0xd8,0x5b,0x1b,0x5c,0x1a,0x5b,0x99,0x8b,0x5b,0x18,0x5d,0x9a,0x5d, + 0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0x59,0xda,0x5c,0x98, + 0x18,0x5b,0xd9,0x10,0x01,0x89,0x78,0x06,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70, + 0x69,0x6c,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x5f,0x77,0x69,0x64,0x65,0x5f, + 0x76,0x65,0x63,0x74,0x6f,0x72,0x73,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x43, + 0x04,0x64,0x62,0x14,0x96,0x26,0xe7,0x62,0x57,0x26,0x47,0x57,0x86,0xf7,0xf5,0x56, + 0x47,0x07,0x57,0x47,0xc7,0xa5,0x6e,0xae,0x4c,0x0e,0x85,0xed,0x6d,0xcc,0x0d,0x26, + 0x85,0x51,0x58,0x9a,0x9c,0x4b,0x98,0xdc,0xd9,0x17,0x5d,0x1e,0x5c,0xd9,0x97,0x5b, + 0x58,0x5b,0x19,0x0d,0x33,0xb6,0xb7,0x30,0x3a,0x19,0x32,0x61,0x69,0x72,0x2e,0x61, + 0x72,0x67,0x5f,0x6e,0x61,0x6d,0x65,0x14,0xea,0xec,0x86,0x30,0x48,0x85,0x58,0xc8, + 0x85,0x60,0x48,0x86,0x68,0x5c,0xea,0xe6,0xca,0xe4,0x50,0xd8,0xde,0xc6,0xdc,0x62, + 0x52,0x68,0x98,0xb1,0xbd,0x85,0xd1,0xd1,0xb0,0x18,0x7b,0x63,0x7b,0x93,0x1b,0xc2, + 0x20,0x15,0xc2,0x21,0x17,0xd2,0x21,0x19,0xe2,0x91,0x09,0x4b,0x93,0x73,0x81,0x7b, + 0x9b,0x4b,0xa3,0x4b,0x7b,0x73,0xe3,0x72,0xc6,0xf6,0x05,0xf5,0x36,0x97,0x46,0x97, + 0xf6,0xe6,0x36,0x44,0x41,0xc0,0x00,0xb9,0x90,0x0e,0xc9,0x90,0x30,0x18,0x62,0x20, + 0x1b,0xf2,0x21,0x62,0x40,0x28,0x2c,0x4d,0xce,0xc5,0xae,0x4c,0x8e,0xae,0x0c,0xef, + 0x2b,0xcd,0x0d,0xae,0x8e,0x8e,0x52,0x58,0x9a,0x9c,0x0b,0xdb,0xdb,0x58,0x18,0x5d, + 0xda,0x9b,0xdb,0x57,0x9a,0x1b,0x59,0x19,0x1e,0xb3,0xb3,0x32,0xb7,0x32,0xb9,0x30, + 0xba,0x32,0x32,0x14,0x1c,0xb8,0xb7,0xb9,0x34,0xba,0xb4,0x37,0x37,0x22,0x3b,0x99, + 0x2f,0xb3,0x14,0x22,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x43,0xa8,0x64,0x40, + 0xc8,0x00,0x29,0x83,0x64,0x48,0x04,0xc4,0x0c,0x90,0x0b,0xc1,0x90,0x0c,0x39,0x03, + 0x6a,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x64,0x28,0x39,0x74,0x65,0x78,0x63, + 0x6f,0x6f,0x72,0x64,0x30,0x44,0x76,0x32,0x5f,0x66,0x29,0x4c,0xe8,0xca,0xf0,0xc6, + 0xde,0xde,0xe4,0xc8,0x60,0x86,0x50,0x89,0x80,0x90,0x01,0x52,0x06,0x89,0x90,0x08, + 0x48,0x1a,0x20,0x17,0x82,0x21,0x19,0xa2,0x06,0xbc,0xce,0xca,0xdc,0xca,0xe4,0xc2, + 0xe8,0xca,0xc8,0x50,0x6c,0xc6,0xde,0xd8,0xde,0xe4,0x60,0x88,0xec,0x68,0xbe,0xcc, + 0x52,0x68,0x8c,0xbd,0xb1,0xbd,0xc9,0xc1,0x0c,0xa1,0x92,0x02,0x21,0x03,0xa4,0x0c, + 0x92,0x22,0x11,0x10,0x36,0x40,0x2e,0xa4,0x43,0x32,0xa4,0x0d,0xa8,0x84,0xa5,0xc9, + 0xb9,0x88,0xd5,0x99,0x99,0x95,0xc9,0xf1,0x09,0x4b,0x93,0x73,0x11,0xab,0x33,0x33, + 0x2b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x23,0x12,0x96,0x26,0xe7,0x22,0x57,0x16,0x46, + 0x46,0x2a,0x2c,0x4d,0xce,0x65,0x8e,0x4e,0xae,0x6e,0x8c,0xee,0x8b,0x2e,0x0f,0xae, + 0xec,0x2b,0xcd,0xcd,0xec,0x8d,0x09,0x59,0xda,0x1c,0xdc,0xd7,0x5c,0x9a,0x5e,0xd9, + 0x10,0x25,0x19,0x12,0x22,0x19,0x10,0x0c,0x99,0x03,0x46,0x61,0x69,0x72,0x2e,0x61, + 0x72,0x67,0x5f,0x74,0x79,0x70,0x65,0x5f,0x73,0x69,0x7a,0x65,0xbc,0xc2,0xd2,0xe4, + 0x5c,0xc2,0xe4,0xce,0xbe,0xe8,0xf2,0xe0,0xca,0xbe,0xc2,0xd8,0xd2,0xce,0xdc,0xbe, + 0xe6,0xd2,0xf4,0xca,0x98,0xd8,0xcd,0x7d,0xc1,0x85,0xc9,0x85,0xb5,0xcd,0x71,0xf8, + 0x92,0x99,0x19,0x42,0x06,0xc9,0x81,0xbc,0x01,0x02,0x07,0x09,0x81,0x94,0x41,0x32, + 0x24,0x02,0x12,0x07,0x88,0x1c,0x20,0x74,0x80,0xd4,0x41,0x42,0x20,0x76,0x90,0x10, + 0xc8,0x85,0xdc,0x01,0x92,0x21,0x78,0x30,0x04,0x41,0xd0,0x00,0x59,0x03,0xc4,0x0d, + 0x90,0x3c,0x18,0x62,0x1c,0x00,0x32,0x06,0x88,0x1e,0xf0,0x79,0x6b,0x73,0x4b,0x83, + 0x7b,0xa3,0x2b,0x73,0xa3,0x03,0x19,0x43,0x0b,0x93,0xe3,0x33,0x95,0xd6,0x06,0xc7, + 0x56,0x06,0x32,0xb4,0xb2,0x02,0x42,0x25,0x14,0x14,0x34,0x44,0x40,0xfa,0x60,0x88, + 0x81,0xf0,0x01,0xe2,0x07,0x4b,0x30,0xc4,0x40,0xfe,0x00,0xf9,0x83,0x25,0x18,0x22, + 0x00,0xc9,0x88,0x88,0x1d,0xd8,0xc1,0x1e,0xda,0xc1,0x0d,0xda,0xe1,0x1d,0xc8,0xa1, + 0x1e,0xd8,0xa1,0x1c,0xdc,0xc0,0x1c,0xd8,0x21,0x1c,0xce,0x61,0x1e,0xa6,0x08,0xc1, + 0x30,0x42,0x61,0x07,0x76,0xb0,0x87,0x76,0x70,0x83,0x74,0x20,0x87,0x72,0x70,0x07, + 0x7a,0x98,0x12,0x14,0x23,0x96,0x70,0x48,0x07,0x79,0x70,0x03,0x7b,0x28,0x07,0x79, + 0x98,0x87,0x74,0x78,0x07,0x77,0x98,0x12,0x18,0x23,0xa8,0x70,0x48,0x07,0x79,0x70, + 0x03,0x76,0x08,0x07,0x77,0x38,0x87,0x7a,0x08,0x87,0x73,0x28,0x87,0x5f,0xb0,0x87, + 0x72,0x90,0x87,0x79,0x48,0x87,0x77,0x70,0x87,0x29,0x01,0x32,0x62,0x0a,0x87,0x74, + 0x90,0x07,0x37,0x18,0x87,0x77,0x68,0x07,0x78,0x48,0x07,0x76,0x28,0x87,0x5f,0x78, + 0x07,0x78,0xa0,0x87,0x74,0x78,0x07,0x77,0x98,0x87,0x29,0x86,0xc2,0x38,0x90,0x44, + 0x8d,0x50,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xec,0xa1,0x1c,0xe4,0x81,0x1e,0xca,0x01, + 0x1f,0xa6,0x04,0x7b,0x00,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3, + 0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10, + 0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30, + 0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03, + 0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07, + 0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e, + 0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d, + 0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b, + 0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76, + 0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90, + 0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87, + 0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e, + 0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c, + 0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca, + 0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8, + 0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82, + 0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83, + 0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f, + 0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec, + 0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc, + 0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0, + 0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60, + 0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e, + 0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1, + 0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43, + 0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c, + 0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72, + 0x00,0x00,0x00,0x00,0x71,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x06,0x50,0x30,0x00, + 0xd2,0xd0,0x00,0x00,0x61,0x20,0x00,0x00,0x24,0x00,0x00,0x00,0x13,0x04,0x41,0x2c, + 0x10,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0xd4,0x63,0x11,0x40,0x60,0x1c,0x73,0x10, + 0x83,0x00,0x41,0x94,0x33,0x00,0x14,0x63,0x09,0x20,0x08,0x82,0xf0,0x2f,0x80,0x20, + 0x08,0xc2,0xbf,0x30,0x96,0x00,0x82,0x20,0x08,0x82,0x01,0x08,0x82,0x20,0x08,0x0e, + 0x33,0x00,0x24,0x73,0x10,0x18,0x76,0x59,0x34,0x33,0x00,0x04,0x63,0x04,0x20,0x08, + 0x82,0xf8,0x37,0x46,0x00,0x82,0x20,0x08,0x7f,0x33,0x00,0x00,0xe3,0x0d,0x0c,0x66, + 0x51,0x40,0x2c,0x0a,0xe8,0x63,0xc1,0x02,0x1f,0x0b,0x16,0xf9,0x0c,0x32,0x04,0xcb, + 0x33,0xc8,0x10,0x2c,0xd1,0x6c,0xc3,0x52,0x01,0xb3,0x0d,0x41,0x15,0xcc,0x36,0x04, + 0x83,0x90,0x41,0x40,0x0c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x5b,0x86,0x20,0x00, + 0x85,0x2d,0x83,0x30,0x84,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _simgui_fs_bytecode_metal_ios[2893] = { + 0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x4d,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd5,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x70,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0xe9,0x4a,0xc6,0xd1,0xba,0x33,0x39, + 0x67,0xdf,0xcd,0xe3,0x58,0xde,0xd4,0xb8,0x81,0x4c,0x26,0x44,0xbc,0x9d,0x14,0xdc, + 0xa9,0x02,0x93,0x08,0x5a,0xcd,0x66,0x1c,0x30,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x04,0x00,0x00, + 0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17, + 0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x58,0x0a,0x00,0x00,0xff,0xff,0xff, + 0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0x93,0x02,0x00,0x00,0x0b,0x82,0x20, + 0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04, + 0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b, + 0x62,0x80,0x14,0x45,0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18, + 0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21, + 0x72,0x24,0x07,0xc8,0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00, + 0x00,0x51,0x18,0x00,0x00,0x89,0x00,0x00,0x00,0x1b,0xcc,0x25,0xf8,0xff,0xff,0xff, + 0xff,0x01,0x60,0x00,0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07, + 0x7a,0x60,0x87,0x7c,0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72, + 0x68,0x03,0x72,0x48,0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90, + 0x07,0x7a,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc, + 0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81, + 0x1d,0xca,0xa1,0x0d,0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d, + 0xd8,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87, + 0x79,0x98,0x87,0x36,0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36, + 0x30,0x07,0x78,0x68,0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c, + 0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0, + 0xe1,0x1d,0xd2,0xc1,0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90, + 0x87,0x70,0x68,0x87,0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07, + 0x79,0x68,0x83,0x72,0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36, + 0x60,0x87,0x72,0x08,0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30, + 0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8, + 0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01, + 0x1e,0xda,0x80,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60, + 0x87,0x79,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1, + 0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c, + 0xc8,0xa1,0x0d,0xf4,0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda, + 0xa0,0x1d,0xc2,0x81,0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77, + 0x78,0x87,0x36,0xa0,0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68, + 0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6, + 0x81,0x1e,0xc2,0x61,0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61, + 0x1c,0xe8,0xe1,0x1d,0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e, + 0xda,0x60,0x1e,0xd2,0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa8,0x07,0x77,0x98,0x87, + 0x70,0x30,0x87,0x72,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74, + 0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0xa2,0x1e,0xe6,0xa1,0x1c,0xda,0x60,0x1e, + 0xde,0xc1,0x1c,0xe8,0xa1,0x0d,0xcc,0x81,0x1d,0xde,0x21,0x1c,0xe8,0x01,0x30,0x87, + 0x70,0x60,0x87,0x79,0x28,0x07,0x60,0x83,0x21,0x0c,0xc0,0x02,0x54,0x1b,0x8c,0x81, + 0x00,0x16,0xa0,0xda,0x80,0x10,0xff,0xff,0xff,0xff,0x3f,0x00,0x0c,0x20,0x01,0xd5, + 0x06,0xa3,0x08,0x80,0x05,0xa8,0x36,0x18,0x86,0x00,0x2c,0x40,0x05,0x49,0x18,0x00, + 0x00,0x03,0x00,0x00,0x00,0x13,0x86,0x40,0x18,0x26,0x0c,0x44,0x61,0x00,0x00,0x00, + 0x00,0x89,0x20,0x00,0x00,0x20,0x00,0x00,0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85, + 0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a, + 0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x48,0x33,0x00,0xc3,0x08,0x04,0x70,0x90,0x34,0x45, + 0x94,0x30,0xf9,0x0c,0x80,0x34,0xf4,0xef,0x50,0x13,0x0a,0xc2,0x30,0x82,0x00,0x1c, + 0x25,0x4d,0x11,0x25,0x4c,0xfe,0x3f,0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0xff,0x34, + 0x46,0x00,0x0c,0x22,0x10,0xc1,0x45,0xd2,0x14,0x51,0xc2,0xe4,0xff,0x12,0xc0,0x3c, + 0x0b,0x11,0xfd,0xd3,0x18,0x01,0x30,0x88,0x60,0x08,0xa5,0x10,0x23,0x94,0x43,0x68, + 0x8e,0x20,0x98,0x23,0x00,0x83,0x61,0x04,0x61,0x29,0x48,0x28,0x67,0x28,0xa6,0x00, + 0xb5,0x81,0x80,0x14,0x58,0x23,0x00,0x00,0x00,0x13,0xa8,0x70,0x48,0x07,0x79,0xb0, + 0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68,0x83,0x74,0x78,0x87, + 0x79,0xc8,0x03,0x37,0x80,0x03,0x37,0x80,0x83,0x0d,0xb7,0x51,0x0e,0x6d,0x00,0x0f, + 0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe9, + 0x10,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e,0x78,0xa0,0x07,0x78,0xa0, + 0x07,0x78,0xd0,0x06,0xe9,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07, + 0x76,0xd0,0x06,0xe9,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72, + 0xd0,0x06,0xe9,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0, + 0x06,0xe6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06, + 0xe6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6, + 0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xf6,0x20, + 0x07,0x74,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x30,0x07, + 0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x40,0x07,0x78, + 0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x60,0x07,0x74,0xa0, + 0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x90,0x07,0x76,0xa0,0x07, + 0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x72, + 0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60, + 0x0f,0x71,0x90,0x07,0x72,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07, + 0x76,0xd0,0x06,0xf6,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a, + 0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10, + 0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xd0,0x06,0xf6,0x10,0x07,0x70,0x20,0x07, + 0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07,0x70,0x20,0x07,0x74, + 0xd0,0x06,0xee,0x80,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x73,0x20,0x07,0x43,0x98, + 0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x21,0x8c,0x03,0x04,0x80,0x00,0x00, + 0x00,0x00,0x00,0x40,0x16,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x32,0x1e,0x98, + 0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0x5a,0x23,0x00,0x25, + 0x50,0x04,0x85,0x50,0x10,0x65,0x40,0x70,0x2c,0xa1,0x29,0x00,0x00,0x79,0x18,0x00, + 0x00,0xd9,0x00,0x00,0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32, + 0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x42,0x3c,0x00,0x84,0x50,0xb9,0x1b,0x43,0x0b, + 0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62,0x2c,0xc3,0x23,0x2c,0x05,0xd9,0x20,0x08, + 0x0e,0x8e,0xad,0x0c,0x84,0x89,0xc9,0xaa,0x09,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd, + 0x0d,0x64,0x26,0x07,0x46,0xc6,0xc5,0xe6,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd, + 0xac,0xac,0x65,0x26,0x07,0x46,0xc6,0xc5,0xe6,0x26,0x65,0x88,0xf0,0x10,0x43,0x8c, + 0x65,0x58,0x8c,0x45,0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x79,0x8e,0x65,0x58, + 0x84,0x45,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42, + 0x56,0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44, + 0x78,0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66, + 0x61,0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43, + 0x84,0x67,0x21,0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9, + 0x98,0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d, + 0xa1,0x7d,0x95,0xb9,0x85,0x89,0xb1,0x95,0x0d,0x11,0x9e,0x86,0x61,0x10,0x96,0x26, + 0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0xe2,0x16,0x46,0x97,0x66,0x57,0xf6, + 0x45,0xf6,0x56,0x27,0xc6,0x56,0xf6,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44, + 0x78,0x1e,0x92,0x41,0x58,0x9a,0x9c,0xcb,0xd8,0x5b,0x1b,0x5c,0x1a,0x5b,0x99,0x8b, + 0x5b,0x18,0x5d,0x9a,0x5d,0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0xdb,0x9b,0xdb,0xd9, + 0x17,0x59,0xda,0x5c,0x98,0x18,0x5b,0xd9,0x10,0xe1,0x89,0x78,0x06,0x61,0x69,0x72, + 0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x5f, + 0x77,0x69,0x64,0x65,0x5f,0x76,0x65,0x63,0x74,0x6f,0x72,0x73,0x5f,0x64,0x69,0x73, + 0x61,0x62,0x6c,0x65,0x43,0x84,0x67,0x62,0x14,0x96,0x26,0xe7,0x22,0x57,0xe6,0x46, + 0x56,0x26,0xf7,0x45,0x17,0x26,0x77,0x56,0x46,0xc7,0x28,0x2c,0x4d,0xce,0x25,0x4c, + 0xee,0xec,0x8b,0x2e,0x0f,0xae,0xec,0xcb,0x2d,0xac,0xad,0x8c,0x86,0x19,0xdb,0x5b, + 0x18,0x1d,0x0d,0x99,0xb0,0x34,0x39,0x97,0x30,0xb9,0xb3,0x2f,0xb7,0xb0,0xb6,0x32, + 0x2a,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x43,0x98,0xa7,0x5a,0x84, + 0xc7,0x7a,0xae,0x07,0x7b,0xb2,0x21,0xc2,0xa3,0x51,0x0a,0x4b,0x93,0x73,0x31,0x93, + 0x0b,0x3b,0x6b,0x2b,0x73,0xa3,0xfb,0x4a,0x73,0x83,0xab,0xa3,0xe3,0x52,0x37,0x57, + 0x26,0x87,0xc2,0xf6,0x36,0xe6,0x06,0x93,0x42,0x25,0x2c,0x4d,0xce,0x65,0xac,0xcc, + 0x8d,0xae,0x4c,0x8e,0x4f,0x58,0x9a,0x9c,0x0b,0x5c,0x99,0xdc,0x1c,0x5c,0xd9,0x18, + 0x5d,0x9a,0x5d,0x19,0x0d,0x33,0xb6,0xb7,0x30,0x3a,0x19,0x0a,0x75,0x76,0x43,0xa4, + 0x45,0x78,0xb8,0xa7,0x7b,0xbc,0xe7,0x7b,0xac,0x07,0x0c,0x1e,0xec,0x09,0x03,0x2e, + 0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x2c,0xc6,0xde,0xd8,0xde, + 0xe4,0x86,0x48,0xcb,0xf0,0x70,0xcf,0x18,0x3c,0xde,0xf3,0x3d,0xd6,0x73,0x3d,0xd8, + 0x43,0x06,0x5c,0xc2,0xd2,0xe4,0x5c,0xe8,0xca,0xf0,0xe8,0xea,0xe4,0xca,0x28,0x85, + 0xa5,0xc9,0xb9,0xb0,0xbd,0x8d,0x85,0xd1,0xa5,0xbd,0xb9,0x7d,0xa5,0xb9,0x91,0x95, + 0xe1,0x51,0x09,0x4b,0x93,0x73,0x99,0x0b,0x6b,0x83,0x63,0x2b,0x23,0x46,0x57,0x86, + 0x47,0x57,0x27,0x57,0x26,0x43,0xc6,0x63,0xc6,0xf6,0x16,0x46,0xc7,0x02,0x32,0x17, + 0xd6,0x06,0xc7,0x56,0xe6,0xc3,0x81,0xae,0x0c,0x6f,0x08,0xb5,0x10,0x8f,0x19,0x3c, + 0x67,0xb0,0x08,0xcb,0xf0,0xa0,0xc1,0x63,0x3d,0x69,0xf0,0x60,0x8f,0x1a,0x70,0x09, + 0x4b,0x93,0x73,0x99,0x0b,0x6b,0x83,0x63,0x2b,0x93,0xe3,0x31,0x17,0xd6,0x06,0xc7, + 0x56,0x26,0x47,0x84,0xae,0x0c,0x6f,0xaa,0x0d,0x8e,0x4d,0x6e,0x88,0xb4,0x1c,0x0f, + 0x1b,0x3c,0x67,0xb0,0x08,0xcb,0xf0,0x58,0x4f,0x1b,0x3c,0xd8,0xe3,0x06,0x43,0x90, + 0x47,0x0c,0x9e,0x32,0x78,0xd6,0xe0,0x79,0x83,0x21,0x46,0x02,0x3c,0xdb,0x03,0x07, + 0x23,0x22,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x77,0x20,0x87,0x7a,0x60, + 0x87,0x72,0x70,0x03,0x73,0x60,0x87,0x70,0x38,0x87,0x79,0x98,0x22,0x04,0xc3,0x08, + 0x85,0x1d,0xd8,0xc1,0x1e,0xda,0xc1,0x0d,0xd2,0x81,0x1c,0xca,0xc1,0x1d,0xe8,0x61, + 0x4a,0x50,0x8c,0x58,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xec,0xa1,0x1c,0xe4,0x61,0x1e, + 0xd2,0xe1,0x1d,0xdc,0x61,0x4a,0x60,0x8c,0xa0,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xd8, + 0x21,0x1c,0xdc,0xe1,0x1c,0xea,0x21,0x1c,0xce,0xa1,0x1c,0x7e,0xc1,0x1e,0xca,0x41, + 0x1e,0xe6,0x21,0x1d,0xde,0xc1,0x1d,0xa6,0x04,0xc8,0x88,0x29,0x1c,0xd2,0x41,0x1e, + 0xdc,0x60,0x1c,0xde,0xa1,0x1d,0xe0,0x21,0x1d,0xd8,0xa1,0x1c,0x7e,0xe1,0x1d,0xe0, + 0x81,0x1e,0xd2,0xe1,0x1d,0xdc,0x61,0x1e,0xa6,0x18,0x0a,0xe3,0x40,0x12,0x35,0x82, + 0x09,0x87,0x74,0x90,0x07,0x37,0x30,0x07,0x79,0x08,0x87,0x73,0x68,0x87,0x72,0x70, + 0x07,0x7a,0x98,0x12,0xc4,0x01,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0x6d,0x00,0x00, + 0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84, + 0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed, + 0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66, + 0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c, + 0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70, + 0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90, + 0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4, + 0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83, + 0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14, + 0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70, + 0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80, + 0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0, + 0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1, + 0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d, + 0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39, + 0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc, + 0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70, + 0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53, + 0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e, + 0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c, + 0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38, + 0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37, + 0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33, + 0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4, + 0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0, + 0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3, + 0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07, + 0x72,0x00,0x00,0x00,0x00,0x71,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x16,0xb0,0x01, + 0x48,0xe4,0x4b,0x00,0xf3,0x2c,0xc4,0x3f,0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0x7e, + 0x85,0x17,0xb7,0x6d,0x00,0x05,0x03,0x20,0x0d,0x0d,0x00,0x00,0x00,0x61,0x20,0x00, + 0x00,0x0c,0x00,0x00,0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x04,0x00,0x00, + 0x00,0xc4,0x46,0x00,0x48,0x8d,0x00,0xd4,0x00,0x89,0x19,0x00,0x02,0x23,0x00,0x00, + 0x00,0x23,0x06,0x8a,0x10,0x44,0x87,0x91,0x0c,0x05,0x11,0x58,0x90,0xc8,0x67,0xb6, + 0x81,0x08,0x80,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const char _simgui_vs_source_metal_sim[720] = { + 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, + 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, + 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, + 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, + 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x76, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x32,0x20,0x64,0x69,0x73,0x70,0x5f,0x73,0x69,0x7a,0x65,0x3b, + 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e, + 0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x32,0x20,0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63, + 0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c, + 0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20, + 0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b, + 0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69, + 0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70, + 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62, + 0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x20,0x5b, + 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x30,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x32, + 0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31, + 0x35,0x20,0x22,0x22,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e, + 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e, + 0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f, + 0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x76, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x32,0x33,0x20,0x5b,0x5b, + 0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74, + 0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x35,0x20, + 0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f, + 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28, + 0x28,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x2f,0x20, + 0x5f,0x32,0x33,0x2e,0x64,0x69,0x73,0x70,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2d, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2a,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x32,0x2e,0x30,0x2c,0x20,0x2d,0x32,0x2e,0x30, + 0x29,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x23,0x6c, + 0x69,0x6e,0x65,0x20,0x31,0x36,0x20,0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75, + 0x74,0x2e,0x75,0x76,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f, + 0x72,0x64,0x30,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x37,0x20,0x22,0x22, + 0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, + 0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +static const char _simgui_fs_source_metal_sim[470] = { + 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, + 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, + 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, + 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, + 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d, + 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, + 0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20, + 0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29, + 0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63, + 0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, + 0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20, + 0x31,0x31,0x20,0x22,0x22,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61, + 0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, + 0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x74,0x65,0x78,0x20,0x5b,0x5b, + 0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61, + 0x6d,0x70,0x6c,0x65,0x72,0x20,0x74,0x65,0x78,0x53,0x6d,0x70,0x6c,0x72,0x20,0x5b, + 0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f, + 0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31, + 0x31,0x20,0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61, + 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x2e,0x73,0x61, + 0x6d,0x70,0x6c,0x65,0x28,0x74,0x65,0x78,0x53,0x6d,0x70,0x6c,0x72,0x2c,0x20,0x69, + 0x6e,0x2e,0x75,0x76,0x29,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74, + 0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_D3D11) +static const uint8_t _simgui_vs_bytecode_hlsl4[892] = { + 0x44,0x58,0x42,0x43,0x05,0xf8,0x0b,0x1e,0x7a,0x13,0x49,0x07,0x83,0x60,0x2e,0x88, + 0x06,0xfa,0x10,0x2e,0x01,0x00,0x00,0x00,0x7c,0x03,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x60,0x01,0x00,0x00,0xd0,0x01,0x00,0x00, + 0x00,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff, + 0x10,0x81,0x00,0x00,0x98,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, + 0x73,0x00,0xab,0xab,0x3c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x88,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x5f,0x32,0x33,0x5f,0x64,0x69,0x73,0x70,0x5f,0x73,0x69,0x7a, + 0x65,0x00,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52, + 0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f, + 0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x31,0x00,0x49,0x53,0x47,0x4e, + 0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x03,0x00,0x00,0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x50,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab, + 0x4f,0x53,0x47,0x4e,0x68,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00, + 0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44, + 0x00,0x53,0x56,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0xab,0xab,0xab, + 0x53,0x48,0x44,0x52,0x28,0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x4a,0x00,0x00,0x00, + 0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x5f,0x00,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03, + 0x32,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00, + 0x02,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x67,0x00,0x00,0x04, + 0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02, + 0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00, + 0x01,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x08, + 0x32,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a, + 0x32,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x02,0x40,0x00,0x00,0x00,0x00,0x00,0xbf,0x00,0x00,0x00,0xbf,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x0a,0x32,0x20,0x10,0x00,0x02,0x00,0x00,0x00, + 0x46,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x00,0x00,0x00,0x00,0x00,0x40, + 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x08, + 0xc2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x02,0x40,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x80,0x3f,0x3e,0x00,0x00,0x01, + 0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,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,0x00, +}; +static const uint8_t _simgui_fs_bytecode_hlsl4[620] = { + 0x44,0x58,0x42,0x43,0xd1,0x93,0x1f,0x1b,0x9d,0x70,0x90,0xeb,0xc2,0x7c,0x26,0x07, + 0xdf,0x52,0xda,0x49,0x01,0x00,0x00,0x00,0x6c,0x02,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0xd4,0x00,0x00,0x00,0x20,0x01,0x00,0x00,0x54,0x01,0x00,0x00, + 0xf0,0x01,0x00,0x00,0x52,0x44,0x45,0x46,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff, + 0x10,0x81,0x00,0x00,0x6d,0x00,0x00,0x00,0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x69,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x5f,0x74,0x65,0x78,0x5f,0x73,0x61,0x6d, + 0x70,0x6c,0x65,0x72,0x00,0x74,0x65,0x78,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f, + 0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64, + 0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x31, + 0x00,0xab,0xab,0xab,0x49,0x53,0x47,0x4e,0x44,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x38,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab, + 0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x61,0x72,0x67,0x65, + 0x74,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x94,0x00,0x00,0x00,0x40,0x00,0x00,0x00, + 0x25,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00, + 0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00, + 0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03, + 0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00, + 0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x45,0x00,0x00,0x09, + 0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00, + 0x38,0x00,0x00,0x07,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01, + 0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,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, + 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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +#elif defined(SOKOL_WGPU) +static const uint8_t _simgui_vs_bytecode_wgpu[1868] = { + 0x03,0x02,0x23,0x07,0x00,0x00,0x01,0x00,0x08,0x00,0x08,0x00,0x34,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x11,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x0b,0x00,0x06,0x00, + 0x02,0x00,0x00,0x00,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30, + 0x00,0x00,0x00,0x00,0x0e,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, + 0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x2a,0x00,0x00,0x00, + 0x2b,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x32,0x00,0x00,0x00, + 0x33,0x00,0x00,0x00,0x07,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x37,0x00,0x02,0x00,0x00,0x00,0xc2,0x01,0x00,0x00,0x01,0x00,0x00,0x00, + 0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65, + 0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x76,0x75,0x6c,0x6b, + 0x61,0x6e,0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c, + 0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e, + 0x74,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c,0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f, + 0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64, + 0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x2d,0x65,0x6e,0x76,0x20,0x76,0x75,0x6c,0x6b, + 0x61,0x6e,0x31,0x2e,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c, + 0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x74,0x61,0x72,0x67,0x65, + 0x74,0x2d,0x65,0x6e,0x76,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c,0x0a,0x2f,0x2f,0x20, + 0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65, + 0x64,0x20,0x65,0x6e,0x74,0x72,0x79,0x2d,0x70,0x6f,0x69,0x6e,0x74,0x20,0x6d,0x61, + 0x69,0x6e,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x0a,0x00,0x05,0x00,0x04,0x00, + 0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x00,0x05,0x00,0x06,0x00, + 0x0c,0x00,0x00,0x00,0x67,0x6c,0x5f,0x50,0x65,0x72,0x56,0x65,0x72,0x74,0x65,0x78, + 0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x06,0x00,0x07,0x00, + 0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x67,0x6c,0x5f,0x50,0x6f,0x69,0x6e,0x74, + 0x53,0x69,0x7a,0x65,0x00,0x00,0x00,0x00,0x06,0x00,0x07,0x00,0x0c,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x67,0x6c,0x5f,0x43,0x6c,0x69,0x70,0x44,0x69,0x73,0x74,0x61, + 0x6e,0x63,0x65,0x00,0x06,0x00,0x07,0x00,0x0c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x67,0x6c,0x5f,0x43,0x75,0x6c,0x6c,0x44,0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x00, + 0x05,0x00,0x03,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x05,0x00, + 0x13,0x00,0x00,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x00,0x00,0x00, + 0x05,0x00,0x05,0x00,0x15,0x00,0x00,0x00,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, + 0x73,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x64,0x69,0x73,0x70,0x5f,0x73,0x69,0x7a,0x65,0x00,0x00,0x00,0x05,0x00,0x03,0x00, + 0x17,0x00,0x00,0x00,0x5f,0x32,0x33,0x00,0x05,0x00,0x03,0x00,0x2a,0x00,0x00,0x00, + 0x75,0x76,0x00,0x00,0x05,0x00,0x05,0x00,0x2b,0x00,0x00,0x00,0x74,0x65,0x78,0x63, + 0x6f,0x6f,0x72,0x64,0x30,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x2d,0x00,0x00,0x00, + 0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x2f,0x00,0x00,0x00, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x00,0x05,0x00,0x05,0x00,0x32,0x00,0x00,0x00, + 0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x44,0x00,0x05,0x00,0x06,0x00, + 0x33,0x00,0x00,0x00,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49, + 0x44,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x0c,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48,0x00,0x05,0x00, + 0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x48,0x00,0x05,0x00,0x0c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x47,0x00,0x03,0x00,0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x48,0x00,0x05,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x47,0x00,0x03,0x00,0x15,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x17,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x17,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x2a,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x2b,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x2d,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x2f,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x32,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x05,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x33,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x06,0x00,0x00,0x00, + 0x13,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x21,0x00,0x03,0x00,0x04,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x16,0x00,0x03,0x00,0x07,0x00,0x00,0x00,0x20,0x00,0x00,0x00, + 0x17,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x15,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x2b,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x1c,0x00,0x04,0x00,0x0b,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0a,0x00,0x00,0x00, + 0x1e,0x00,0x06,0x00,0x0c,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x07,0x00,0x00,0x00, + 0x0b,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x0d,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x0d,0x00,0x00,0x00, + 0x0e,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x15,0x00,0x04,0x00,0x0f,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x0f,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0x00,0x04,0x00,0x11,0x00,0x00,0x00, + 0x07,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x12,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x12,0x00,0x00,0x00, + 0x13,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1e,0x00,0x03,0x00,0x15,0x00,0x00,0x00, + 0x11,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x16,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x15,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x16,0x00,0x00,0x00,0x17,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x11,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x1c,0x00,0x00,0x00, + 0x00,0x00,0x00,0x3f,0x2c,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x1d,0x00,0x00,0x00, + 0x1c,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x07,0x00,0x00,0x00, + 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x2b,0x00,0x04,0x00,0x07,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x2c,0x00,0x05,0x00,0x11,0x00,0x00,0x00, + 0x21,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x2b,0x00,0x04,0x00, + 0x07,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x80,0x3f,0x20,0x00,0x04,0x00, + 0x27,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x04,0x00, + 0x29,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, + 0x29,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, + 0x12,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, + 0x27,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x04,0x00, + 0x2e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, + 0x2e,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x20,0x00,0x04,0x00, + 0x31,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, + 0x31,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, + 0x31,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x36,0x00,0x05,0x00, + 0x03,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0xf8,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x01,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00,0x11,0x00,0x00,0x00, + 0x14,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x41,0x00,0x05,0x00,0x18,0x00,0x00,0x00, + 0x19,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x3d,0x00,0x04,0x00, + 0x11,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x19,0x00,0x00,0x00,0x88,0x00,0x05,0x00, + 0x11,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x1a,0x00,0x00,0x00, + 0x83,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1b,0x00,0x00,0x00, + 0x1d,0x00,0x00,0x00,0x85,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x22,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x51,0x00,0x05,0x00,0x07,0x00,0x00,0x00, + 0x24,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x51,0x00,0x05,0x00, + 0x07,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x50,0x00,0x07,0x00,0x08,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x24,0x00,0x00,0x00, + 0x25,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x41,0x00,0x05,0x00, + 0x27,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x3e,0x00,0x03,0x00,0x28,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x08,0x00,0x04,0x00, + 0x01,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00, + 0x11,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x3e,0x00,0x03,0x00, + 0x2a,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x01,0x00,0x00,0x00, + 0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00,0x08,0x00,0x00,0x00, + 0x30,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x3e,0x00,0x03,0x00,0x2d,0x00,0x00,0x00, + 0x30,0x00,0x00,0x00,0xfd,0x00,0x01,0x00,0x38,0x00,0x01,0x00, +}; +static const uint8_t _simgui_fs_bytecode_wgpu[904] = { + 0x03,0x02,0x23,0x07,0x00,0x00,0x01,0x00,0x08,0x00,0x08,0x00,0x19,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x11,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x0b,0x00,0x06,0x00, + 0x02,0x00,0x00,0x00,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30, + 0x00,0x00,0x00,0x00,0x0e,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x00,0x08,0x00,0x04,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, + 0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x16,0x00,0x00,0x00, + 0x10,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x03,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x37,0x00,0x02,0x00,0x00,0x00, + 0xc2,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64, + 0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69, + 0x65,0x6e,0x74,0x20,0x76,0x75,0x6c,0x6b,0x61,0x6e,0x31,0x30,0x30,0x0a,0x2f,0x2f, + 0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73, + 0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c, + 0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50, + 0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x2d, + 0x65,0x6e,0x76,0x20,0x76,0x75,0x6c,0x6b,0x61,0x6e,0x31,0x2e,0x30,0x0a,0x2f,0x2f, + 0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73, + 0x65,0x64,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x2d,0x65,0x6e,0x76,0x20,0x6f,0x70, + 0x65,0x6e,0x67,0x6c,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65, + 0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x65,0x6e,0x74,0x72,0x79,0x2d, + 0x70,0x6f,0x69,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x0a,0x23,0x6c,0x69,0x6e,0x65, + 0x20,0x31,0x0a,0x00,0x05,0x00,0x04,0x00,0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, + 0x00,0x00,0x00,0x00,0x05,0x00,0x05,0x00,0x0a,0x00,0x00,0x00,0x66,0x72,0x61,0x67, + 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x05,0x00,0x03,0x00,0x0e,0x00,0x00,0x00, + 0x74,0x65,0x78,0x00,0x05,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x75,0x76,0x00,0x00, + 0x05,0x00,0x04,0x00,0x16,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x0a,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x16,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x13,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x21,0x00,0x03,0x00,0x04,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x16,0x00,0x03,0x00,0x07,0x00,0x00,0x00,0x20,0x00,0x00,0x00, + 0x17,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x19,0x00,0x09,0x00,0x0b,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x1b,0x00,0x03,0x00,0x0c,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x0d,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x17,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x11,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x11,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x15,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x15,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x36,0x00,0x05,0x00,0x03,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0xf8,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x08,0x00,0x04,0x00, + 0x01,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00, + 0x0c,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x3d,0x00,0x04,0x00, + 0x10,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x57,0x00,0x05,0x00, + 0x08,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x13,0x00,0x00,0x00, + 0x3d,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x16,0x00,0x00,0x00, + 0x85,0x00,0x05,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x14,0x00,0x00,0x00, + 0x17,0x00,0x00,0x00,0x3e,0x00,0x03,0x00,0x0a,0x00,0x00,0x00,0x18,0x00,0x00,0x00, + 0xfd,0x00,0x01,0x00,0x38,0x00,0x01,0x00, +}; +#elif defined(SOKOL_DUMMY_BACKEND) +static const char* _simgui_vs_source_dummy = ""; +static const char* _simgui_fs_source_dummy = ""; +#else +#error "Please define one of SOKOL_GLCORE33, SOKOL_GLES3, SOKOL_D3D11, SOKOL_METAL, SOKOL_WGPU or SOKOL_DUMMY_BACKEND!" +#endif + +#if !defined(SOKOL_IMGUI_NO_SOKOL_APP) +static void _simgui_set_clipboard(void* user_data, const char* text) { + (void)user_data; + sapp_set_clipboard_string(text); +} + +static const char* _simgui_get_clipboard(void* user_data) { + (void)user_data; + return sapp_get_clipboard_string(); +} +#endif + +#if defined(__EMSCRIPTEN__) && !defined(SOKOL_DUMMY_BACKEND) +EM_JS(int, simgui_js_is_osx, (void), { + if (navigator.userAgent.includes('Macintosh')) { + return 1; + } + else { + return 0; + } +}); +#endif + +static void _simgui_clear(void* ptr, size_t size) { + SOKOL_ASSERT(ptr && (size > 0)); + memset(ptr, 0, size); +} + +static void* _simgui_malloc(size_t size) { + SOKOL_ASSERT(size > 0); + void* ptr; + if (_simgui.desc.allocator.alloc) { + ptr = _simgui.desc.allocator.alloc(size, _simgui.desc.allocator.user_data); + } + else { + ptr = malloc(size); + } + SOKOL_ASSERT(ptr); + return ptr; +} + +static void _simgui_free(void* ptr) { + if (_simgui.desc.allocator.free) { + _simgui.desc.allocator.free(ptr, _simgui.desc.allocator.user_data); + } + else { + free(ptr); + } +} + +static bool _simgui_is_osx(void) { + #if defined(SOKOL_DUMMY_BACKEND) + return false; + #elif defined(__EMSCRIPTEN__) + return simgui_js_is_osx(); + #elif defined(__APPLE__) + return true; + #else + return false; + #endif +} + +static simgui_desc_t _simgui_desc_defaults(const simgui_desc_t* desc) { + SOKOL_ASSERT((desc->allocator.alloc && desc->allocator.free) || (!desc->allocator.alloc && !desc->allocator.free)); + simgui_desc_t res = *desc; + res.max_vertices = _simgui_def(res.max_vertices, 65536); + return res; +} + +SOKOL_API_IMPL void simgui_setup(const simgui_desc_t* desc) { + SOKOL_ASSERT(desc); + _simgui_clear(&_simgui, sizeof(_simgui)); + _simgui.desc = _simgui_desc_defaults(desc); + _simgui.cur_dpi_scale = 1.0f; + #if !defined(SOKOL_IMGUI_NO_SOKOL_APP) + _simgui.is_osx = _simgui_is_osx(); + #endif + /* can keep color_format, depth_format and sample_count as is, + since sokol_gfx.h will do its own default-value handling + */ + + /* allocate an intermediate vertex- and index-buffer */ + SOKOL_ASSERT(_simgui.desc.max_vertices > 0); + _simgui.vertices.size = (size_t)_simgui.desc.max_vertices * sizeof(ImDrawVert); + _simgui.vertices.ptr = _simgui_malloc(_simgui.vertices.size); + _simgui.indices.size = (size_t)_simgui.desc.max_vertices * 3 * sizeof(ImDrawIdx); + _simgui.indices.ptr = _simgui_malloc(_simgui.indices.size); + + /* initialize Dear ImGui */ + #if defined(__cplusplus) + ImGui::CreateContext(); + ImGui::StyleColorsDark(); + ImGuiIO* io = &ImGui::GetIO(); + if (!_simgui.desc.no_default_font) { + io->Fonts->AddFontDefault(); + } + #else + igCreateContext(NULL); + igStyleColorsDark(igGetStyle()); + ImGuiIO* io = igGetIO(); + if (!_simgui.desc.no_default_font) { + ImFontAtlas_AddFontDefault(io->Fonts, NULL); + } + #endif + io->IniFilename = _simgui.desc.ini_filename; + io->ConfigMacOSXBehaviors = _simgui_is_osx(); + io->BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset; + #if !defined(SOKOL_IMGUI_NO_SOKOL_APP) + if (!_simgui.desc.disable_set_mouse_cursor) { + io->BackendFlags |= ImGuiBackendFlags_HasMouseCursors; + } + io->SetClipboardTextFn = _simgui_set_clipboard; + io->GetClipboardTextFn = _simgui_get_clipboard; + #endif + io->ConfigWindowsResizeFromEdges = !_simgui.desc.disable_windows_resize_from_edges; + + /* create sokol-gfx resources */ + sg_push_debug_group("sokol-imgui"); + + /* NOTE: since we're in C++ mode here we can't use C99 designated init */ + sg_buffer_desc vb_desc; + _simgui_clear(&vb_desc, sizeof(vb_desc)); + vb_desc.usage = SG_USAGE_STREAM; + vb_desc.size = _simgui.vertices.size; + vb_desc.label = "sokol-imgui-vertices"; + _simgui.vbuf = sg_make_buffer(&vb_desc); + + sg_buffer_desc ib_desc; + _simgui_clear(&ib_desc, sizeof(ib_desc)); + ib_desc.type = SG_BUFFERTYPE_INDEXBUFFER; + ib_desc.usage = SG_USAGE_STREAM; + ib_desc.size = _simgui.indices.size; + ib_desc.label = "sokol-imgui-indices"; + _simgui.ibuf = sg_make_buffer(&ib_desc); + + /* default font texture */ + if (!_simgui.desc.no_default_font) { + unsigned char* font_pixels; + int font_width, font_height; + #if defined(__cplusplus) + io->Fonts->GetTexDataAsRGBA32(&font_pixels, &font_width, &font_height); + #else + int bytes_per_pixel; + ImFontAtlas_GetTexDataAsRGBA32(io->Fonts, &font_pixels, &font_width, &font_height, &bytes_per_pixel); + #endif + sg_image_desc img_desc; + _simgui_clear(&img_desc, sizeof(img_desc)); + img_desc.width = font_width; + img_desc.height = font_height; + img_desc.pixel_format = SG_PIXELFORMAT_RGBA8; + img_desc.wrap_u = SG_WRAP_CLAMP_TO_EDGE; + img_desc.wrap_v = SG_WRAP_CLAMP_TO_EDGE; + img_desc.min_filter = SG_FILTER_LINEAR; + img_desc.mag_filter = SG_FILTER_LINEAR; + img_desc.data.subimage[0][0].ptr = font_pixels; + img_desc.data.subimage[0][0].size = (size_t)(font_width * font_height) * sizeof(uint32_t); + img_desc.label = "sokol-imgui-font"; + _simgui.img = sg_make_image(&img_desc); + io->Fonts->TexID = (ImTextureID)(uintptr_t) _simgui.img.id; + } + + /* shader object for using the embedded shader source (or bytecode) */ + sg_shader_desc shd_desc; + _simgui_clear(&shd_desc, sizeof(shd_desc)); + shd_desc.attrs[0].name = "position"; + shd_desc.attrs[1].name = "texcoord0"; + shd_desc.attrs[2].name = "color0"; + shd_desc.attrs[0].sem_name = "TEXCOORD"; + shd_desc.attrs[0].sem_index = 0; + shd_desc.attrs[1].sem_name = "TEXCOORD"; + shd_desc.attrs[1].sem_index = 1; + shd_desc.attrs[2].sem_name = "TEXCOORD"; + shd_desc.attrs[2].sem_index = 2; + sg_shader_uniform_block_desc* ub = &shd_desc.vs.uniform_blocks[0]; + ub->size = sizeof(_simgui_vs_params_t); + ub->uniforms[0].name = "vs_params"; + ub->uniforms[0].type = SG_UNIFORMTYPE_FLOAT4; + ub->uniforms[0].array_count = 1; + shd_desc.fs.images[0].name = "tex"; + shd_desc.fs.images[0].image_type = SG_IMAGETYPE_2D; + shd_desc.fs.images[0].sampler_type = SG_SAMPLERTYPE_FLOAT; + shd_desc.label = "sokol-imgui-shader"; + #if defined(SOKOL_GLCORE33) + shd_desc.vs.source = _simgui_vs_source_glsl330; + shd_desc.fs.source = _simgui_fs_source_glsl330; + #elif defined(SOKOL_GLES3) + shd_desc.vs.source = _simgui_vs_source_glsl300es; + shd_desc.fs.source = _simgui_fs_source_glsl300es; + #elif defined(SOKOL_METAL) + shd_desc.vs.entry = "main0"; + shd_desc.fs.entry = "main0"; + switch (sg_query_backend()) { + case SG_BACKEND_METAL_MACOS: + shd_desc.vs.bytecode = SG_RANGE(_simgui_vs_bytecode_metal_macos); + shd_desc.fs.bytecode = SG_RANGE(_simgui_fs_bytecode_metal_macos); + break; + case SG_BACKEND_METAL_IOS: + shd_desc.vs.bytecode = SG_RANGE(_simgui_vs_bytecode_metal_ios); + shd_desc.fs.bytecode = SG_RANGE(_simgui_fs_bytecode_metal_ios); + break; + default: + shd_desc.vs.source = _simgui_vs_source_metal_sim; + shd_desc.fs.source = _simgui_fs_source_metal_sim; + break; + } + #elif defined(SOKOL_D3D11) + shd_desc.vs.bytecode = SG_RANGE(_simgui_vs_bytecode_hlsl4); + shd_desc.fs.bytecode = SG_RANGE(_simgui_fs_bytecode_hlsl4); + #elif defined(SOKOL_WGPU) + shd_desc.vs.bytecode = SG_RANGE(_simgui_vs_bytecode_wgpu); + shd_desc.fs.bytecode = SG_RANGE(_simgui_fs_bytecode_wgpu); + #else + shd_desc.vs.source = _simgui_vs_source_dummy; + shd_desc.fs.source = _simgui_fs_source_dummy; + #endif + _simgui.shd = sg_make_shader(&shd_desc); + + /* pipeline object for imgui rendering */ + sg_pipeline_desc pip_desc; + _simgui_clear(&pip_desc, sizeof(pip_desc)); + pip_desc.layout.buffers[0].stride = sizeof(ImDrawVert); + { + sg_vertex_attr_desc* attr = &pip_desc.layout.attrs[0]; + attr->offset = offsetof(ImDrawVert, pos); + attr->format = SG_VERTEXFORMAT_FLOAT2; + } + { + sg_vertex_attr_desc* attr = &pip_desc.layout.attrs[1]; + attr->offset = offsetof(ImDrawVert, uv); + attr->format = SG_VERTEXFORMAT_FLOAT2; + } + { + sg_vertex_attr_desc* attr = &pip_desc.layout.attrs[2]; + attr->offset = offsetof(ImDrawVert, col); + attr->format = SG_VERTEXFORMAT_UBYTE4N; + } + pip_desc.shader = _simgui.shd; + pip_desc.index_type = SG_INDEXTYPE_UINT16; + pip_desc.sample_count = _simgui.desc.sample_count; + pip_desc.depth.pixel_format = _simgui.desc.depth_format; + pip_desc.colors[0].pixel_format = _simgui.desc.color_format; + pip_desc.colors[0].write_mask = _simgui.desc.write_alpha_channel ? SG_COLORMASK_RGBA : SG_COLORMASK_RGB; + pip_desc.colors[0].blend.enabled = true; + pip_desc.colors[0].blend.src_factor_rgb = SG_BLENDFACTOR_SRC_ALPHA; + pip_desc.colors[0].blend.dst_factor_rgb = SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA; + if (_simgui.desc.write_alpha_channel) { + pip_desc.colors[0].blend.src_factor_alpha = SG_BLENDFACTOR_ONE; + pip_desc.colors[0].blend.dst_factor_alpha = SG_BLENDFACTOR_ONE; + } + pip_desc.label = "sokol-imgui-pipeline"; + _simgui.pip = sg_make_pipeline(&pip_desc); + + sg_pop_debug_group(); +} + +SOKOL_API_IMPL void simgui_shutdown(void) { + #if defined(__cplusplus) + ImGui::DestroyContext(); + #else + igDestroyContext(0); + #endif + /* NOTE: it's valid to call the destroy funcs with SG_INVALID_ID */ + sg_push_debug_group("sokol-imgui"); + sg_destroy_pipeline(_simgui.pip); + sg_destroy_shader(_simgui.shd); + sg_destroy_image(_simgui.img); + sg_destroy_buffer(_simgui.ibuf); + sg_destroy_buffer(_simgui.vbuf); + sg_pop_debug_group(); + SOKOL_ASSERT(_simgui.vertices.ptr); + _simgui_free((void*)_simgui.vertices.ptr); + SOKOL_ASSERT(_simgui.indices.ptr); + _simgui_free((void*)_simgui.indices.ptr); +} + +SOKOL_API_IMPL void simgui_new_frame(const simgui_frame_desc_t* desc) { + SOKOL_ASSERT(desc); + SOKOL_ASSERT(desc->width > 0); + SOKOL_ASSERT(desc->height > 0); + _simgui.cur_dpi_scale = _simgui_def(desc->dpi_scale, 1.0f); + #if defined(__cplusplus) + ImGuiIO* io = &ImGui::GetIO(); + #else + ImGuiIO* io = igGetIO(); + #endif + io->DisplaySize.x = ((float)desc->width) / _simgui.cur_dpi_scale; + io->DisplaySize.y = ((float)desc->height) / _simgui.cur_dpi_scale; + io->DeltaTime = (float)desc->delta_time; + #if !defined(SOKOL_IMGUI_NO_SOKOL_APP) + if (io->WantTextInput && !sapp_keyboard_shown()) { + sapp_show_keyboard(true); + } + if (!io->WantTextInput && sapp_keyboard_shown()) { + sapp_show_keyboard(false); + } + if (!_simgui.desc.disable_set_mouse_cursor) { + #if defined(__cplusplus) + ImGuiMouseCursor imgui_cursor = ImGui::GetMouseCursor(); + #else + ImGuiMouseCursor imgui_cursor = igGetMouseCursor(); + #endif + sapp_mouse_cursor cursor = sapp_get_mouse_cursor(); + switch (imgui_cursor) { + case ImGuiMouseCursor_Arrow: cursor = SAPP_MOUSECURSOR_ARROW; break; + case ImGuiMouseCursor_TextInput: cursor = SAPP_MOUSECURSOR_IBEAM; break; + case ImGuiMouseCursor_ResizeAll: cursor = SAPP_MOUSECURSOR_RESIZE_ALL; break; + case ImGuiMouseCursor_ResizeNS: cursor = SAPP_MOUSECURSOR_RESIZE_NS; break; + case ImGuiMouseCursor_ResizeEW: cursor = SAPP_MOUSECURSOR_RESIZE_EW; break; + case ImGuiMouseCursor_ResizeNESW: cursor = SAPP_MOUSECURSOR_RESIZE_NESW; break; + case ImGuiMouseCursor_ResizeNWSE: cursor = SAPP_MOUSECURSOR_RESIZE_NWSE; break; + case ImGuiMouseCursor_Hand: cursor = SAPP_MOUSECURSOR_POINTING_HAND; break; + case ImGuiMouseCursor_NotAllowed: cursor = SAPP_MOUSECURSOR_NOT_ALLOWED; break; + default: break; + } + sapp_set_mouse_cursor(cursor); + } + #endif + #if defined(__cplusplus) + ImGui::NewFrame(); + #else + igNewFrame(); + #endif +} + +SOKOL_API_IMPL void simgui_render(void) { + #if defined(__cplusplus) + ImGui::Render(); + ImDrawData* draw_data = ImGui::GetDrawData(); + ImGuiIO* io = &ImGui::GetIO(); + #else + igRender(); + ImDrawData* draw_data = igGetDrawData(); + ImGuiIO* io = igGetIO(); + #endif + if (0 == draw_data) { + return; + } + if (draw_data->CmdListsCount == 0) { + return; + } + /* copy vertices and indices into an intermediate buffer so that + they can be updated with a single sg_update_buffer() call each + (sg_append_buffer() has performance problems on some GL platforms), + also keep track of valid number of command lists in case of a + buffer overflow + */ + size_t all_vtx_size = 0; + size_t all_idx_size = 0; + int cmd_list_count = 0; + for (int cl_index = 0; cl_index < draw_data->CmdListsCount; cl_index++, cmd_list_count++) { + ImDrawList* cl = draw_data->CmdLists[cl_index]; + const size_t vtx_size = (size_t)cl->VtxBuffer.Size * sizeof(ImDrawVert); + const size_t idx_size = (size_t)cl->IdxBuffer.Size * sizeof(ImDrawIdx); + + /* check for buffer overflow */ + if (((all_vtx_size + vtx_size) > _simgui.vertices.size) || + ((all_idx_size + idx_size) > _simgui.indices.size)) + { + break; + } + + /* copy vertices and indices into common buffers */ + if (vtx_size > 0) { + const ImDrawVert* src_vtx_ptr = cl->VtxBuffer.Data; + void* dst_vtx_ptr = (void*) (((uint8_t*)_simgui.vertices.ptr) + all_vtx_size); + memcpy(dst_vtx_ptr, src_vtx_ptr, vtx_size); + } + if (idx_size > 0) { + const ImDrawIdx* src_idx_ptr = cl->IdxBuffer.Data; + void* dst_idx_ptr = (void*) (((uint8_t*)_simgui.indices.ptr) + all_idx_size); + memcpy(dst_idx_ptr, src_idx_ptr, idx_size); + } + all_vtx_size += vtx_size; + all_idx_size += idx_size; + } + if (0 == cmd_list_count) { + return; + } + + /* update the sokol-gfx vertex- and index-buffer */ + sg_push_debug_group("sokol-imgui"); + if (all_vtx_size > 0) { + sg_range vtx_data = _simgui.vertices; + vtx_data.size = all_vtx_size; + sg_update_buffer(_simgui.vbuf, &vtx_data); + } + if (all_idx_size > 0) { + sg_range idx_data = _simgui.indices; + idx_data.size = all_idx_size; + sg_update_buffer(_simgui.ibuf, &idx_data); + } + + /* render the ImGui command list */ + const float dpi_scale = _simgui.cur_dpi_scale; + const int fb_width = (int) (io->DisplaySize.x * dpi_scale); + const int fb_height = (int) (io->DisplaySize.y * dpi_scale); + sg_apply_viewport(0, 0, fb_width, fb_height, true); + sg_apply_scissor_rect(0, 0, fb_width, fb_height, true); + + sg_apply_pipeline(_simgui.pip); + _simgui_vs_params_t vs_params; + _simgui_clear((void*)&vs_params, sizeof(vs_params)); + vs_params.disp_size.x = io->DisplaySize.x; + vs_params.disp_size.y = io->DisplaySize.y; + sg_apply_uniforms(SG_SHADERSTAGE_VS, 0, SG_RANGE_REF(vs_params)); + sg_bindings bind; + _simgui_clear((void*)&bind, sizeof(bind)); + bind.vertex_buffers[0] = _simgui.vbuf; + bind.index_buffer = _simgui.ibuf; + ImTextureID tex_id = io->Fonts->TexID; + bind.fs_images[0].id = (uint32_t)(uintptr_t)tex_id; + int vb_offset = 0; + int ib_offset = 0; + for (int cl_index = 0; cl_index < cmd_list_count; cl_index++) { + const ImDrawList* cl = draw_data->CmdLists[cl_index]; + + bind.vertex_buffer_offsets[0] = vb_offset; + bind.index_buffer_offset = ib_offset; + sg_apply_bindings(&bind); + + #if defined(__cplusplus) + const int num_cmds = cl->CmdBuffer.size(); + #else + const int num_cmds = cl->CmdBuffer.Size; + #endif + uint32_t vtx_offset = 0; + for (int cmd_index = 0; cmd_index < num_cmds; cmd_index++) { + ImDrawCmd* pcmd = &cl->CmdBuffer.Data[cmd_index]; + if (pcmd->UserCallback) { + pcmd->UserCallback(cl, pcmd); + // need to re-apply all state after calling a user callback + sg_apply_viewport(0, 0, fb_width, fb_height, true); + sg_apply_pipeline(_simgui.pip); + sg_apply_uniforms(SG_SHADERSTAGE_VS, 0, SG_RANGE_REF(vs_params)); + sg_apply_bindings(&bind); + } + else { + if ((tex_id != pcmd->TextureId) || (vtx_offset != pcmd->VtxOffset)) { + tex_id = pcmd->TextureId; + vtx_offset = pcmd->VtxOffset; + bind.fs_images[0].id = (uint32_t)(uintptr_t)tex_id; + bind.vertex_buffer_offsets[0] = vb_offset + (int)(pcmd->VtxOffset * sizeof(ImDrawVert)); + sg_apply_bindings(&bind); + } + const int scissor_x = (int) (pcmd->ClipRect.x * dpi_scale); + const int scissor_y = (int) (pcmd->ClipRect.y * dpi_scale); + const int scissor_w = (int) ((pcmd->ClipRect.z - pcmd->ClipRect.x) * dpi_scale); + const int scissor_h = (int) ((pcmd->ClipRect.w - pcmd->ClipRect.y) * dpi_scale); + sg_apply_scissor_rect(scissor_x, scissor_y, scissor_w, scissor_h, true); + sg_draw((int)pcmd->IdxOffset, (int)pcmd->ElemCount, 1); + } + } + #if defined(__cplusplus) + const size_t vtx_size = (size_t)cl->VtxBuffer.size() * sizeof(ImDrawVert); + const size_t idx_size = (size_t)cl->IdxBuffer.size() * sizeof(ImDrawIdx); + #else + const size_t vtx_size = (size_t)cl->VtxBuffer.Size * sizeof(ImDrawVert); + const size_t idx_size = (size_t)cl->IdxBuffer.Size * sizeof(ImDrawIdx); + #endif + vb_offset += (int)vtx_size; + ib_offset += (int)idx_size; + } + sg_apply_viewport(0, 0, fb_width, fb_height, true); + sg_apply_scissor_rect(0, 0, fb_width, fb_height, true); + sg_pop_debug_group(); +} + +#if !defined(SOKOL_IMGUI_NO_SOKOL_APP) +_SOKOL_PRIVATE bool _simgui_is_ctrl(uint32_t modifiers) { + if (_simgui.is_osx) { + return 0 != (modifiers & SAPP_MODIFIER_SUPER); + } + else { + return 0 != (modifiers & SAPP_MODIFIER_CTRL); + } +} + +_SOKOL_PRIVATE ImGuiKey _simgui_map_keycode(sapp_keycode key) { + switch (key) { + case SAPP_KEYCODE_SPACE: return ImGuiKey_Space; + case SAPP_KEYCODE_APOSTROPHE: return ImGuiKey_Apostrophe; + case SAPP_KEYCODE_COMMA: return ImGuiKey_Comma; + case SAPP_KEYCODE_MINUS: return ImGuiKey_Minus; + case SAPP_KEYCODE_PERIOD: return ImGuiKey_Apostrophe; + case SAPP_KEYCODE_SLASH: return ImGuiKey_Slash; + case SAPP_KEYCODE_0: return ImGuiKey_0; + case SAPP_KEYCODE_1: return ImGuiKey_1; + case SAPP_KEYCODE_2: return ImGuiKey_2; + case SAPP_KEYCODE_3: return ImGuiKey_3; + case SAPP_KEYCODE_4: return ImGuiKey_4; + case SAPP_KEYCODE_5: return ImGuiKey_5; + case SAPP_KEYCODE_6: return ImGuiKey_6; + case SAPP_KEYCODE_7: return ImGuiKey_7; + case SAPP_KEYCODE_8: return ImGuiKey_8; + case SAPP_KEYCODE_9: return ImGuiKey_9; + case SAPP_KEYCODE_SEMICOLON: return ImGuiKey_Semicolon; + case SAPP_KEYCODE_EQUAL: return ImGuiKey_Equal; + case SAPP_KEYCODE_A: return ImGuiKey_A; + case SAPP_KEYCODE_B: return ImGuiKey_B; + case SAPP_KEYCODE_C: return ImGuiKey_C; + case SAPP_KEYCODE_D: return ImGuiKey_D; + case SAPP_KEYCODE_E: return ImGuiKey_E; + case SAPP_KEYCODE_F: return ImGuiKey_F; + case SAPP_KEYCODE_G: return ImGuiKey_G; + case SAPP_KEYCODE_H: return ImGuiKey_H; + case SAPP_KEYCODE_I: return ImGuiKey_I; + case SAPP_KEYCODE_J: return ImGuiKey_J; + case SAPP_KEYCODE_K: return ImGuiKey_K; + case SAPP_KEYCODE_L: return ImGuiKey_L; + case SAPP_KEYCODE_M: return ImGuiKey_M; + case SAPP_KEYCODE_N: return ImGuiKey_N; + case SAPP_KEYCODE_O: return ImGuiKey_O; + case SAPP_KEYCODE_P: return ImGuiKey_P; + case SAPP_KEYCODE_Q: return ImGuiKey_Q; + case SAPP_KEYCODE_R: return ImGuiKey_R; + case SAPP_KEYCODE_S: return ImGuiKey_S; + case SAPP_KEYCODE_T: return ImGuiKey_T; + case SAPP_KEYCODE_U: return ImGuiKey_U; + case SAPP_KEYCODE_V: return ImGuiKey_V; + case SAPP_KEYCODE_W: return ImGuiKey_W; + case SAPP_KEYCODE_X: return ImGuiKey_X; + case SAPP_KEYCODE_Y: return ImGuiKey_Y; + case SAPP_KEYCODE_Z: return ImGuiKey_Z; + case SAPP_KEYCODE_LEFT_BRACKET: return ImGuiKey_LeftBracket; + case SAPP_KEYCODE_BACKSLASH: return ImGuiKey_Backslash; + case SAPP_KEYCODE_RIGHT_BRACKET:return ImGuiKey_RightBracket; + case SAPP_KEYCODE_GRAVE_ACCENT: return ImGuiKey_GraveAccent; + case SAPP_KEYCODE_ESCAPE: return ImGuiKey_Escape; + case SAPP_KEYCODE_ENTER: return ImGuiKey_Enter; + case SAPP_KEYCODE_TAB: return ImGuiKey_Tab; + case SAPP_KEYCODE_BACKSPACE: return ImGuiKey_Backspace; + case SAPP_KEYCODE_INSERT: return ImGuiKey_Insert; + case SAPP_KEYCODE_DELETE: return ImGuiKey_Delete; + case SAPP_KEYCODE_RIGHT: return ImGuiKey_RightArrow; + case SAPP_KEYCODE_LEFT: return ImGuiKey_LeftArrow; + case SAPP_KEYCODE_DOWN: return ImGuiKey_DownArrow; + case SAPP_KEYCODE_UP: return ImGuiKey_UpArrow; + case SAPP_KEYCODE_PAGE_UP: return ImGuiKey_PageUp; + case SAPP_KEYCODE_PAGE_DOWN: return ImGuiKey_PageDown; + case SAPP_KEYCODE_HOME: return ImGuiKey_Home; + case SAPP_KEYCODE_END: return ImGuiKey_End; + case SAPP_KEYCODE_CAPS_LOCK: return ImGuiKey_CapsLock; + case SAPP_KEYCODE_SCROLL_LOCK: return ImGuiKey_ScrollLock; + case SAPP_KEYCODE_NUM_LOCK: return ImGuiKey_NumLock; + case SAPP_KEYCODE_PRINT_SCREEN: return ImGuiKey_PrintScreen; + case SAPP_KEYCODE_PAUSE: return ImGuiKey_Pause; + case SAPP_KEYCODE_F1: return ImGuiKey_F1; + case SAPP_KEYCODE_F2: return ImGuiKey_F2; + case SAPP_KEYCODE_F3: return ImGuiKey_F3; + case SAPP_KEYCODE_F4: return ImGuiKey_F4; + case SAPP_KEYCODE_F5: return ImGuiKey_F5; + case SAPP_KEYCODE_F6: return ImGuiKey_F6; + case SAPP_KEYCODE_F7: return ImGuiKey_F7; + case SAPP_KEYCODE_F8: return ImGuiKey_F8; + case SAPP_KEYCODE_F9: return ImGuiKey_F9; + case SAPP_KEYCODE_F10: return ImGuiKey_F10; + case SAPP_KEYCODE_F11: return ImGuiKey_F11; + case SAPP_KEYCODE_F12: return ImGuiKey_F12; + case SAPP_KEYCODE_KP_0: return ImGuiKey_Keypad0; + case SAPP_KEYCODE_KP_1: return ImGuiKey_Keypad1; + case SAPP_KEYCODE_KP_2: return ImGuiKey_Keypad2; + case SAPP_KEYCODE_KP_3: return ImGuiKey_Keypad3; + case SAPP_KEYCODE_KP_4: return ImGuiKey_Keypad4; + case SAPP_KEYCODE_KP_5: return ImGuiKey_Keypad5; + case SAPP_KEYCODE_KP_6: return ImGuiKey_Keypad6; + case SAPP_KEYCODE_KP_7: return ImGuiKey_Keypad7; + case SAPP_KEYCODE_KP_8: return ImGuiKey_Keypad8; + case SAPP_KEYCODE_KP_9: return ImGuiKey_Keypad9; + case SAPP_KEYCODE_KP_DECIMAL: return ImGuiKey_KeypadDecimal; + case SAPP_KEYCODE_KP_DIVIDE: return ImGuiKey_KeypadDivide; + case SAPP_KEYCODE_KP_MULTIPLY: return ImGuiKey_KeypadMultiply; + case SAPP_KEYCODE_KP_SUBTRACT: return ImGuiKey_KeypadSubtract; + case SAPP_KEYCODE_KP_ADD: return ImGuiKey_KeypadAdd; + case SAPP_KEYCODE_KP_ENTER: return ImGuiKey_KeypadEnter; + case SAPP_KEYCODE_KP_EQUAL: return ImGuiKey_KeypadEqual; + case SAPP_KEYCODE_LEFT_SHIFT: return ImGuiKey_LeftShift; + case SAPP_KEYCODE_LEFT_CONTROL: return ImGuiKey_LeftCtrl; + case SAPP_KEYCODE_LEFT_ALT: return ImGuiKey_LeftAlt; + case SAPP_KEYCODE_LEFT_SUPER: return ImGuiKey_LeftSuper; + case SAPP_KEYCODE_RIGHT_SHIFT: return ImGuiKey_RightShift; + case SAPP_KEYCODE_RIGHT_CONTROL:return ImGuiKey_RightCtrl; + case SAPP_KEYCODE_RIGHT_ALT: return ImGuiKey_RightAlt; + case SAPP_KEYCODE_RIGHT_SUPER: return ImGuiKey_RightSuper; + case SAPP_KEYCODE_MENU: return ImGuiKey_Menu; + default: return ImGuiKey_None; + } +} + +_SOKOL_PRIVATE void _simgui_add_focus_event(ImGuiIO* io, bool focus) { + #if defined(__cplusplus) + io->AddFocusEvent(focus); + #else + ImGuiIO_AddFocusEvent(io, focus); + #endif +} + +_SOKOL_PRIVATE void _simgui_add_mouse_pos_event(ImGuiIO* io, float x, float y) { + #if defined(__cplusplus) + io->AddMousePosEvent(x, y); + #else + ImGuiIO_AddMousePosEvent(io, x, y); + #endif +} + +_SOKOL_PRIVATE void _simgui_add_mouse_button_event(ImGuiIO* io, int mouse_button, bool down) { + #if defined(__cplusplus) + io->AddMouseButtonEvent(mouse_button, down); + #else + ImGuiIO_AddMouseButtonEvent(io, mouse_button, down); + #endif +} + +_SOKOL_PRIVATE void _simgui_add_mouse_wheel_event(ImGuiIO* io, float wheel_x, float wheel_y) { + #if defined(__cplusplus) + io->AddMouseWheelEvent(wheel_x, wheel_y); + #else + ImGuiIO_AddMouseWheelEvent(io, wheel_x, wheel_y); + #endif +} + +_SOKOL_PRIVATE void _simgui_add_sapp_key_event(ImGuiIO* io, sapp_keycode sapp_key, bool down) { + const ImGuiKey imgui_key = _simgui_map_keycode(sapp_key); + #if defined(__cplusplus) + io->AddKeyEvent(imgui_key, down); + io->SetKeyEventNativeData(imgui_key, (int)sapp_key, 0, -1); + #else + ImGuiIO_AddKeyEvent(io, imgui_key, down); + ImGuiIO_SetKeyEventNativeData(io, imgui_key, (int)sapp_key, 0, -1); + #endif +} + +_SOKOL_PRIVATE void _simgui_add_imgui_key_event(ImGuiIO* io, ImGuiKey imgui_key, bool down) { + #if defined(__cplusplus) + io->AddKeyEvent(imgui_key, down); + #else + ImGuiIO_AddKeyEvent(io, imgui_key, down); + #endif +} + +_SOKOL_PRIVATE void _simgui_add_input_character(ImGuiIO* io, uint32_t c) { + #if defined(__cplusplus) + io->AddInputCharacter(c); + #else + ImGuiIO_AddInputCharacter(io, c); + #endif +} + +_SOKOL_PRIVATE void _simgui_update_modifiers(ImGuiIO* io, uint32_t mods) { + _simgui_add_imgui_key_event(io, ImGuiMod_Ctrl, (mods & SAPP_MODIFIER_CTRL) != 0); + _simgui_add_imgui_key_event(io, ImGuiMod_Shift, (mods & SAPP_MODIFIER_SHIFT) != 0); + _simgui_add_imgui_key_event(io, ImGuiMod_Alt, (mods & SAPP_MODIFIER_ALT) != 0); + _simgui_add_imgui_key_event(io, ImGuiMod_Super, (mods & SAPP_MODIFIER_SUPER) != 0); +} + +// returns Ctrl or Super, depending on platform +_SOKOL_PRIVATE ImGuiKey _simgui_copypaste_modifier(void) { + return _simgui.is_osx ? ImGuiMod_Super : ImGuiMod_Ctrl; +} + +SOKOL_API_IMPL int simgui_map_keycode(sapp_keycode keycode) { + return (int)_simgui_map_keycode(keycode); +} + +SOKOL_API_IMPL bool simgui_handle_event(const sapp_event* ev) { + const float dpi_scale = _simgui.cur_dpi_scale; + #if defined(__cplusplus) + ImGuiIO* io = &ImGui::GetIO(); + #else + ImGuiIO* io = igGetIO(); + #endif + switch (ev->type) { + case SAPP_EVENTTYPE_FOCUSED: + _simgui_add_focus_event(io, true); + break; + case SAPP_EVENTTYPE_UNFOCUSED: + _simgui_add_focus_event(io, false); + break; + case SAPP_EVENTTYPE_MOUSE_DOWN: + _simgui_add_mouse_pos_event(io, ev->mouse_x / dpi_scale, ev->mouse_y / dpi_scale); + _simgui_add_mouse_button_event(io, (int)ev->mouse_button, true); + _simgui_update_modifiers(io, ev->modifiers); + break; + case SAPP_EVENTTYPE_MOUSE_UP: + _simgui_add_mouse_pos_event(io, ev->mouse_x / dpi_scale, ev->mouse_y / dpi_scale); + _simgui_add_mouse_button_event(io, (int)ev->mouse_button, false); + _simgui_update_modifiers(io, ev->modifiers); + break; + case SAPP_EVENTTYPE_MOUSE_MOVE: + _simgui_add_mouse_pos_event(io, ev->mouse_x / dpi_scale, ev->mouse_y / dpi_scale); + break; + case SAPP_EVENTTYPE_MOUSE_ENTER: + case SAPP_EVENTTYPE_MOUSE_LEAVE: + // FIXME: since the sokol_app.h emscripten backend doesn't support + // mouse capture, mouse buttons must be released when the mouse leaves the + // browser window, so that they don't "stick" when released outside the window. + // A cleaner solution would be a new sokol_app.h function to query + // "platform behaviour flags". + #if defined(__EMSCRIPTEN__) + for (int i = 0; i < SAPP_MAX_MOUSEBUTTONS; i++) { + _simgui_add_mouse_button_event(io, i, false); + } + #endif + break; + case SAPP_EVENTTYPE_MOUSE_SCROLL: + _simgui_add_mouse_wheel_event(io, ev->scroll_x, ev->scroll_y); + break; + case SAPP_EVENTTYPE_TOUCHES_BEGAN: + _simgui_add_mouse_pos_event(io, ev->touches[0].pos_x / dpi_scale, ev->touches[0].pos_y / dpi_scale); + _simgui_add_mouse_button_event(io, 0, true); + break; + case SAPP_EVENTTYPE_TOUCHES_MOVED: + _simgui_add_mouse_pos_event(io, ev->touches[0].pos_x / dpi_scale, ev->touches[0].pos_y / dpi_scale); + break; + case SAPP_EVENTTYPE_TOUCHES_ENDED: + _simgui_add_mouse_pos_event(io, ev->touches[0].pos_x / dpi_scale, ev->touches[0].pos_y / dpi_scale); + _simgui_add_mouse_button_event(io, 0, false); + break; + case SAPP_EVENTTYPE_TOUCHES_CANCELLED: + _simgui_add_mouse_button_event(io, 0, false); + break; + case SAPP_EVENTTYPE_KEY_DOWN: + _simgui_update_modifiers(io, ev->modifiers); + /* intercept Ctrl-V, this is handled via EVENTTYPE_CLIPBOARD_PASTED */ + if (!_simgui.desc.disable_paste_override) { + if (_simgui_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_V)) { + break; + } + } + /* on web platform, don't forward Ctrl-X, Ctrl-V to the browser */ + if (_simgui_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_X)) { + sapp_consume_event(); + } + if (_simgui_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_C)) { + sapp_consume_event(); + } + // it's ok to add ImGuiKey_None key events + _simgui_add_sapp_key_event(io, ev->key_code, true); + break; + case SAPP_EVENTTYPE_KEY_UP: + _simgui_update_modifiers(io, ev->modifiers); + /* intercept Ctrl-V, this is handled via EVENTTYPE_CLIPBOARD_PASTED */ + if (_simgui_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_V)) { + break; + } + /* on web platform, don't forward Ctrl-X, Ctrl-V to the browser */ + if (_simgui_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_X)) { + sapp_consume_event(); + } + if (_simgui_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_C)) { + sapp_consume_event(); + } + // it's ok to add ImGuiKey_None key events + _simgui_add_sapp_key_event(io, ev->key_code, false); + break; + case SAPP_EVENTTYPE_CHAR: + /* on some platforms, special keys may be reported as + characters, which may confuse some ImGui widgets, + drop those, also don't forward characters if some + modifiers have been pressed + */ + _simgui_update_modifiers(io, ev->modifiers); + if ((ev->char_code >= 32) && + (ev->char_code != 127) && + (0 == (ev->modifiers & (SAPP_MODIFIER_ALT|SAPP_MODIFIER_CTRL|SAPP_MODIFIER_SUPER)))) + { + _simgui_add_input_character(io, ev->char_code); + } + break; + case SAPP_EVENTTYPE_CLIPBOARD_PASTED: + /* simulate a Ctrl-V key down/up */ + if (!_simgui.desc.disable_paste_override) { + _simgui_add_imgui_key_event(io, _simgui_copypaste_modifier(), true); + _simgui_add_imgui_key_event(io, ImGuiKey_V, true); + _simgui_add_imgui_key_event(io, ImGuiKey_V, false); + _simgui_add_imgui_key_event(io, _simgui_copypaste_modifier(), false); + } + break; + default: + break; + } + return io->WantCaptureKeyboard || io->WantCaptureMouse; +} +#endif // SOKOL_IMGUI_NO_SOKOL_APP + +#endif // SOKOL_IMPL diff --git a/source/engine/thirdparty/sokol/sokol_log.h b/source/engine/thirdparty/sokol/sokol_log.h new file mode 100644 index 0000000..87f78d7 --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_log.h @@ -0,0 +1,343 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_LOG_IMPL) +#define SOKOL_LOG_IMPL +#endif +#ifndef SOKOL_LOG_INCLUDED +/* + sokol_log.h -- common logging callback for sokol headers + + Project URL: https://github.com/floooh/sokol + + Example code: https://github.com/floooh/sokol-samples + + Do this: + #define SOKOL_IMPL or + #define SOKOL_LOG_IMPL + before you include this file in *one* C or C++ file to create the + implementation. + + Optionally provide the following defines when building the implementation: + + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_UNREACHABLE() - a guard macro for unreachable code (default: assert(false)) + SOKOL_LOG_API_DECL - public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_GFX_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + + Optionally define the following for verbose output: + + SOKOL_DEBUG - by default this is defined if _DEBUG is defined + + + OVERVIEW + ======== + sokol_log.h provides a default logging callback for other sokol headers. + + To use the default log callback, just include sokol_log.h and provide + a function pointer to the 'slog_func' function when setting up the + sokol library: + + For instance with sokol_audio.h: + + #include "sokol_log.h" + ... + saudio_setup(&(saudio_desc){ .logger.func = slog_func }); + + Logging output goes to stderr and/or a platform specific logging subsystem + (which means that in some scenarios you might see logging messages duplicated): + + - Windows: stderr + OutputDebugStringA() + - macOS/iOS/Linux: stderr + syslog() + - Emscripten: console.info()/warn()/error() + - Android: __android_log_write() + + On Windows with sokol_app.h also note the runtime config items to make + stdout/stderr output visible on the console for WinMain() applications + via sapp_desc.win32_console_attach or sapp_desc.win32_console_create, + however when running in a debugger on Windows, the logging output should + show up on the debug output UI panel. + + In debug mode, a log message might look like this: + + [sspine][error][id:12] /Users/floh/projects/sokol/util/sokol_spine.h:3472:0: + SKELETON_DESC_NO_ATLAS: no atlas object provided in sspine_skeleton_desc.atlas + + The source path and line number is formatted like compiler errors, in some IDEs (like VSCode) + such error messages are clickable. + + In release mode, logging is less verbose as to not bloat the executable with string data, but you still get + enough information to identify the type and location of an error: + + [sspine][error][id:12][line:3472] + + RULES FOR WRITING YOUR OWN LOGGING FUNCTION + =========================================== + - must be re-entrant because it might be called from different threads + - must treat **all** provided string pointers as optional (can be null) + - don't store the string pointers, copy the string data instead + - must not return for log level panic + + LICENSE + ======= + zlib/libpng license + + Copyright (c) 2023 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_LOG_INCLUDED (1) +#include + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_LOG_API_DECL) +#define SOKOL_LOG_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_LOG_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_LOG_IMPL) +#define SOKOL_LOG_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_LOG_API_DECL __declspec(dllimport) +#else +#define SOKOL_LOG_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + Plug this function into the 'logger.func' struct item when initializating any of the sokol + headers. For instance for sokol_audio.h it would loom like this: + + saudio_setup(&(saudio_desc){ + .logger = { + .func = slog_func + } + }); +*/ +SOKOL_LOG_API_DECL void slog_func(const char* tag, uint32_t log_level, uint32_t log_item, const char* message, uint32_t line_nr, const char* filename, void* user_data); + +#ifdef __cplusplus +} // extern "C" +#endif +#endif // SOKOL_LOG_INCLUDED + +// ██ ███ ███ ██████ ██ ███████ ███ ███ ███████ ███ ██ ████████ █████ ████████ ██ ██████ ███ ██ +// ██ ████ ████ ██ ██ ██ ██ ████ ████ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ +// ██ ██ ████ ██ ██████ ██ █████ ██ ████ ██ █████ ██ ██ ██ ██ ███████ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ███████ ███████ ██ ██ ███████ ██ ████ ██ ██ ██ ██ ██ ██████ ██ ████ +// +// >>implementation +#ifdef SOKOL_LOG_IMPL +#define SOKOL_LOG_IMPL_INCLUDED (1) + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_DEBUG + #ifndef NDEBUG + #define SOKOL_DEBUG + #endif +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif + +#ifndef _SOKOL_PRIVATE + #if defined(__GNUC__) || defined(__clang__) + #define _SOKOL_PRIVATE __attribute__((unused)) static + #else + #define _SOKOL_PRIVATE static + #endif +#endif + +#ifndef _SOKOL_UNUSED + #define _SOKOL_UNUSED(x) (void)(x) +#endif + +// platform detection +#if defined(__APPLE__) + #define _SLOG_APPLE (1) +#elif defined(__EMSCRIPTEN__) + #define _SLOG_EMSCRIPTEN (1) +#elif defined(_WIN32) + #define _SLOG_WINDOWS (1) +#elif defined(__ANDROID__) + #define _SLOG_ANDROID (1) +#elif defined(__linux__) || defined(__unix__) + #define _SLOG_LINUX (1) +#else +#error "sokol_log.h: unknown platform" +#endif + +#include // abort +#include // fputs +#include // size_t + +#if defined(_SLOG_EMSCRIPTEN) +#include +#elif defined(_SLOG_WINDOWS) +#ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN +#endif +#ifndef NOMINMAX + #define NOMINMAX +#endif +#include +#elif defined(_SLOG_ANDROID) +#include +#elif defined(_SLOG_LINUX) || defined(_SLOG_APPLE) +#include +#endif + +// size of line buffer (on stack!) in bytes including terminating zero +#define _SLOG_LINE_LENGTH (512) + +_SOKOL_PRIVATE char* _slog_append(const char* str, char* dst, char* end) { + if (str) { + char c; + while (((c = *str++) != 0) && (dst < (end - 1))) { + *dst++ = c; + } + } + *dst = 0; + return dst; +} + +_SOKOL_PRIVATE char* _slog_itoa(uint32_t x, char* buf, size_t buf_size) { + const size_t max_digits_and_null = 11; + if (buf_size < max_digits_and_null) { + return 0; + } + char* p = buf + max_digits_and_null; + *--p = 0; + do { + *--p = '0' + (x % 10); + x /= 10; + } while (x != 0); + return p; +} + +#if defined(_SLOG_EMSCRIPTEN) +EM_JS(void, slog_js_log, (uint32_t level, const char* c_str), { + const str = UTF8ToString(c_str); + switch (level) { + case 0: console.error(str); break; + case 1: console.error(str); break; + case 2: console.warn(str); break; + default: console.info(str); break; + } +}); +#endif + +SOKOL_API_IMPL void slog_func(const char* tag, uint32_t log_level, uint32_t log_item, const char* message, uint32_t line_nr, const char* filename, void* user_data) { + _SOKOL_UNUSED(user_data); + + const char* log_level_str; + switch (log_level) { + case 0: log_level_str = "panic"; break; + case 1: log_level_str = "error"; break; + case 2: log_level_str = "warning"; break; + default: log_level_str = "info"; break; + } + + // build log output line + char line_buf[_SLOG_LINE_LENGTH]; + char* str = line_buf; + char* end = line_buf + sizeof(line_buf); + char num_buf[32]; + if (tag) { + str = _slog_append("[", str, end); + str = _slog_append(tag, str, end); + str = _slog_append("]", str, end); + } + str = _slog_append("[", str, end); + str = _slog_append(log_level_str, str, end); + str = _slog_append("]", str, end); + str = _slog_append("[id:", str, end); + str = _slog_append(_slog_itoa(log_item, num_buf, sizeof(num_buf)), str, end); + str = _slog_append("]", str, end); + // if a filename is provided, build a clickable log message that's compatible with compiler error messages + if (filename) { + str = _slog_append(" ", str, end); + #if defined(_MSC_VER) + // MSVC compiler error format + str = _slog_append(filename, str, end); + str = _slog_append("(", str, end); + str = _slog_append(_slog_itoa(line_nr, num_buf, sizeof(num_buf)), str, end); + str = _slog_append("): ", str, end); + #else + // gcc/clang compiler error format + str = _slog_append(filename, str, end); + str = _slog_append(":", str, end); + str = _slog_append(_slog_itoa(line_nr, num_buf, sizeof(num_buf)), str, end); + str = _slog_append(":0: ", str, end); + #endif + } + else { + str = _slog_append("[line:", str, end); + str = _slog_append(_slog_itoa(line_nr, num_buf, sizeof(num_buf)), str, end); + str = _slog_append("] ", str, end); + } + if (message) { + str = _slog_append("\n\t", str, end); + str = _slog_append(message, str, end); + } + str = _slog_append("\n\n", str, end); + if (0 == log_level) { + str = _slog_append("ABORTING because of [panic]\n", str, end); + (void)str; + } + + // print to stderr? + #if defined(_SLOG_LINUX) || defined(_SLOG_WINDOWS) || defined(_SLOG_APPLE) + fputs(line_buf, stderr); + #endif + + // platform specific logging calls + #if defined(_SLOG_WINDOWS) + OutputDebugStringA(line_buf); + #elif defined(_SLOG_ANDROID) + int prio; + switch (log_level) { + case 0: prio = ANDROID_LOG_FATAL; break; + case 1: prio = ANDROID_LOG_ERROR; break; + case 2: prio = ANDROID_LOG_WARN; break; + default: prio = ANDROID_LOG_INFO; break; + } + __android_log_write(prio, "SOKOL", line_buf); + #elif defined(_SLOG_EMSCRIPTEN) + slog_js_log(log_level, line_buf); + #elif defined(_SLOG_LINUX) || defined(_SLOG_APPLE) + int prio; + switch (log_level) { + case 0: prio = LOG_CRIT; break; + case 1: prio = LOG_ERR; break; + case 2: prio = LOG_WARNING; break; + default: prio = LOG_INFO; break; + } + syslog(prio, "%s", line_buf); + #endif + if (0 == log_level) { + abort(); + } +} +#endif // SOKOL_LOG_IMPL diff --git a/source/engine/thirdparty/sokol/sokol_memtrack.h b/source/engine/thirdparty/sokol/sokol_memtrack.h new file mode 100644 index 0000000..dc0b469 --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_memtrack.h @@ -0,0 +1,167 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_MEMTRACK_IMPL) +#define SOKOL_MEMTRACK_IMPL +#endif +#ifndef SOKOL_MEMTRACK_INCLUDED +/* + sokol_memtrack.h -- memory allocation wrapper to track memory usage + of sokol libraries + + Project URL: https://github.com/floooh/sokol + + Optionally provide the following defines with your own implementations: + + SOKOL_MEMTRACK_API_DECL - public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_MEMTRACK_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + + If sokol_memtrack.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + USAGE + ===== + Just plug the malloc/free wrapper functions into the desc.allocator + struct provided by most sokol header setup functions: + + sg_setup(&(sg_desc){ + //... + .allocator = { + .alloc = smemtrack_alloc, + .free = smemtrack_free, + } + }); + + Then call smemtrack_info() to get information about current number + of allocations and overall allocation size: + + const smemtrack_info_t info = smemtrack_info(); + const int num_allocs = info.num_allocs; + const int num_bytes = info.num_bytes; + + Note the sokol_memtrack.h can only track allocations issued by + the sokol headers, not allocations that happen under the hood + in system libraries. + + LICENSE + ======= + + zlib/libpng license + + Copyright (c) 2018 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_MEMTRACK_INCLUDED (1) +#include +#include // size_t + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_MEMTRACK_API_DECL) +#define SOKOL_MEMTRACK_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_MEMTRACK_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_MEMTRACK_IMPL) +#define SOKOL_MEMTRACK_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_MEMTRACK_API_DECL __declspec(dllimport) +#else +#define SOKOL_MEMTRACK_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct smemtrack_info_t { + int num_allocs; + int num_bytes; +} smemtrack_info_t; + +SOKOL_MEMTRACK_API_DECL smemtrack_info_t smemtrack_info(void); +SOKOL_MEMTRACK_API_DECL void* smemtrack_alloc(size_t size, void* user_data); +SOKOL_MEMTRACK_API_DECL void smemtrack_free(void* ptr, void* user_data); + +#ifdef __cplusplus +} /* extern "C" */ +#endif +#endif /* SOKOL_MEMTRACK_INCLUDED */ + +/*=== IMPLEMENTATION =========================================================*/ +#ifdef SOKOL_MEMTRACK_IMPL +#define SOKOL_MEMTRACK_IMPL_INCLUDED (1) +#include // malloc, free +#include // memset + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_DEBUG + #ifndef NDEBUG + #define SOKOL_DEBUG + #endif +#endif +#ifndef _SOKOL_PRIVATE + #if defined(__GNUC__) || defined(__clang__) + #define _SOKOL_PRIVATE __attribute__((unused)) static + #else + #define _SOKOL_PRIVATE static + #endif +#endif + +// per-allocation header used to keep track of the allocation size +#define _SMEMTRACK_HEADER_SIZE (16) + +static struct { + smemtrack_info_t state; +} _smemtrack; + +SOKOL_API_IMPL void* smemtrack_alloc(size_t size, void* user_data) { + (void)user_data; + uint8_t* ptr = (uint8_t*) malloc(size + _SMEMTRACK_HEADER_SIZE); + if (ptr) { + // store allocation size (for allocation size tracking) + *(size_t*)ptr = size; + _smemtrack.state.num_allocs++; + _smemtrack.state.num_bytes += (int) size; + return ptr + _SMEMTRACK_HEADER_SIZE; + } + else { + // allocation failed, return null pointer + return ptr; + } +} + +SOKOL_API_IMPL void smemtrack_free(void* ptr, void* user_data) { + (void)user_data; + if (ptr) { + uint8_t* alloc_ptr = ((uint8_t*)ptr) - _SMEMTRACK_HEADER_SIZE; + size_t size = *(size_t*)alloc_ptr; + _smemtrack.state.num_allocs--; + _smemtrack.state.num_bytes -= (int) size; + free(alloc_ptr); + } +} + +SOKOL_API_IMPL smemtrack_info_t smemtrack_info(void) { + return _smemtrack.state; +} + +#endif /* SOKOL_MEMTRACK_IMPL */ diff --git a/source/engine/thirdparty/sokol/sokol_nuklear.h b/source/engine/thirdparty/sokol/sokol_nuklear.h new file mode 100644 index 0000000..a380bc8 --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_nuklear.h @@ -0,0 +1,2180 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_NUKLEAR_IMPL) +#define SOKOL_NUKLEAR_IMPL +#endif +#ifndef SOKOL_NUKLEAR_INCLUDED +/* + sokol_nuklear.h -- drop-in Nuklear renderer/event-handler for sokol_gfx.h + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_NUKLEAR_IMPL + + before you include this file in *one* C or C++ file to create the + implementation. + + The following defines are used by the implementation to select the + platform-specific embedded shader code (these are the same defines as + used by sokol_gfx.h and sokol_app.h): + + SOKOL_GLCORE33 + SOKOL_GLES3 + SOKOL_D3D11 + SOKOL_METAL + SOKOL_WGPU + + Optionally provide the following configuration defines before including the + implementation: + + SOKOL_NUKLEAR_NO_SOKOL_APP - don't depend on sokol_app.h (see below for details) + + Optionally provide the following macros before including the implementation + to override defaults: + + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_NUKLEAR_API_DECL- public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_NUKLEAR_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + + If sokol_nuklear.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_NUKLEAR_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + Include the following headers before sokol_nuklear.h (both before including + the declaration and implementation): + + sokol_gfx.h + sokol_app.h (except SOKOL_NUKLEAR_NO_SOKOL_APP) + + Additionally, include the following headers before including the + implementation: + + nuklear.h + + NOTE: Unlike most other sokol-headers, the implementation must be compiled + as C, compiling as C++ isn't supported. The interface is callable + from C++ of course. + + + FEATURE OVERVIEW: + ================= + sokol_nuklear.h implements the initialization, rendering and event-handling + code for Nuklear (https://github.com/Immediate-Mode-UI/Nuklear) on top of + sokol_gfx.h and (optionally) sokol_app.h. + + The sokol_app.h dependency is optional and used for input event handling. + If you only use sokol_gfx.h but not sokol_app.h in your application, + define SOKOL_NUKLEAR_NO_SOKOL_APP before including the implementation + of sokol_nuklear.h, this will remove any dependency to sokol_app.h, but + you must feed input events into Nuklear yourself. + + sokol_nuklear.h is not thread-safe, all calls must be made from the + same thread where sokol_gfx.h is running. + + HOWTO: + ====== + + --- To initialize sokol-nuklear, call: + + snk_setup(const snk_desc_t* desc) + + This will initialize Nuklear and create sokol-gfx resources + (two buffers for vertices and indices, a font texture and a pipeline- + state-object). + + Use the following snk_desc_t members to configure behaviour: + + int max_vertices + The maximum number of vertices used for UI rendering, default is 65536. + sokol-nuklear will use this to compute the size of the vertex- + and index-buffers allocated via sokol_gfx.h + + sg_pixel_format color_format + The color pixel format of the render pass where the UI + will be rendered. The default is SG_PIXELFORMAT_RGBA8 + + sg_pixel_format depth_format + The depth-buffer pixel format of the render pass where + the UI will be rendered. The default is SG_PIXELFORMAT_DEPTHSTENCIL. + + int sample_count + The MSAA sample-count of the render pass where the UI + will be rendered. The default is 1. + + float dpi_scale + DPI scaling factor. Set this to the result of sapp_dpi_scale(). + To render in high resolution on a Retina Mac this would + typically be 2.0. The default value is 1.0 + + bool no_default_font + Set this to true if you don't want to use Nuklear's default + font. In this case you need to initialize the font + yourself after snk_setup() is called. + + --- At the start of a frame, call: + + struct nk_context *snk_new_frame() + + This updates Nuklear's event handling state and then returns + a Nuklear context pointer which you use to build the UI. For + example: + + struct nk_context *ctx = snk_new_frame(); + if (nk_begin(ctx, "Demo", nk_rect(50, 50, 200, 200), ... + + + --- at the end of the frame, before the sg_end_pass() where you + want to render the UI, call: + + snk_render(int width, int height) + + where 'width' and 'height' are the dimensions of the rendering surface. + For example, if you're using sokol_app.h and render to the default + framebuffer: + + snk_render(sapp_width(), sapp_height()); + + This will convert Nuklear's command list into a vertex and index buffer, + and then render that through sokol_gfx.h + + --- if you're using sokol_app.h, from inside the sokol_app.h event callback, + call: + + void snk_handle_event(const sapp_event* ev); + + --- finally, on application shutdown, call + + snk_shutdown() + + --- Note that for touch-based systems, like iOS, there is a wrapper around + nk_edit_string(...), called snk_edit_string(...) which will show + and hide the onscreen keyboard as required. + + LICENSE + ======= + + zlib/libpng license + + Copyright (c) 2020 Warren Merrifield + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_NUKLEAR_INCLUDED (1) +#include +#include + +#if !defined(SOKOL_GFX_INCLUDED) +#error "Please include sokol_gfx.h before sokol_nuklear.h" +#endif +#if !defined(SOKOL_NUKLEAR_NO_SOKOL_APP) && !defined(SOKOL_APP_INCLUDED) +#error "Please include sokol_app.h before sokol_nuklear.h" +#endif + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_NUKLEAR_API_DECL) +#define SOKOL_NUKLEAR_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_NUKLEAR_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_NUKLEAR_IMPL) +#define SOKOL_NUKLEAR_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_NUKLEAR_API_DECL __declspec(dllimport) +#else +#define SOKOL_NUKLEAR_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct snk_desc_t { + int max_vertices; + sg_pixel_format color_format; + sg_pixel_format depth_format; + int sample_count; + float dpi_scale; + bool no_default_font; +} snk_desc_t; + +SOKOL_NUKLEAR_API_DECL void snk_setup(const snk_desc_t* desc); +SOKOL_NUKLEAR_API_DECL struct nk_context* snk_new_frame(void); +SOKOL_NUKLEAR_API_DECL void snk_render(int width, int height); +#if !defined(SOKOL_NUKLEAR_NO_SOKOL_APP) +SOKOL_NUKLEAR_API_DECL void snk_handle_event(const sapp_event* ev); +SOKOL_NUKLEAR_API_DECL nk_flags snk_edit_string(struct nk_context *ctx, nk_flags flags, + char *memory, int *len, int max, nk_plugin_filter filter); +#endif +SOKOL_NUKLEAR_API_DECL void snk_shutdown(void); + +#ifdef __cplusplus +} /* extern "C" */ + +/* reference-based equivalents for C++ */ +inline void snk_setup(const snk_desc_t& desc) { return snk_setup(&desc); } + +#endif +#endif /* SOKOL_NUKLEAR_INCLUDED */ + +/*-- IMPLEMENTATION ----------------------------------------------------------*/ + +#ifdef SOKOL_NUKLEAR_IMPL +#define SOKOL_NUKLEAR_IMPL_INCLUDED (1) + +#if !defined(NK_UNDEFINED) +#error "Please include nuklear.h before the sokol_nuklear.h implementation" +#endif + +#if !defined(NK_INCLUDE_VERTEX_BUFFER_OUTPUT) +#error "Please ensure that NK_INCLUDE_VERTEX_BUFFER_OUTPUT is #defined before including nuklear.h" +#endif + +#ifdef __cplusplus +#error "The sokol_nuklear.h implementation must be compiled as C." +#endif + + +#include /* offsetof */ +#include /* memset */ + +#if defined(__EMSCRIPTEN__) && !defined(SOKOL_NUKLEAR_NO_SOKOL_APP) && !defined(SOKOL_DUMMY_BACKEND) +#include +#endif + +#ifndef SOKOL_API_IMPL +#define SOKOL_API_IMPL +#endif +#ifndef SOKOL_DEBUG + #ifndef NDEBUG + #define SOKOL_DEBUG + #endif +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif +#ifndef _SOKOL_PRIVATE + #if defined(__GNUC__) || defined(__clang__) + #define _SOKOL_PRIVATE __attribute__((unused)) static + #else + #define _SOKOL_PRIVATE static + #endif +#endif + +/* helper macros */ +#define _snk_def(val, def) (((val) == 0) ? (def) : (val)) + +typedef struct _snk_vertex_t { + float pos[2]; + float uv[2]; + uint8_t col[4]; +} _snk_vertex_t; + +typedef struct _snk_vs_params_t { + float disp_size[2]; + uint8_t _pad_8[8]; +} _snk_vs_params_t; + +typedef struct { + snk_desc_t desc; + struct nk_context ctx; + struct nk_font_atlas atlas; + _snk_vs_params_t vs_params; + size_t vertex_buffer_size; + size_t index_buffer_size; + sg_buffer vbuf; + sg_buffer ibuf; + sg_image img; + sg_shader shd; + sg_pipeline pip; + bool is_osx; /* return true if running on OSX (or HTML5 OSX), needed for copy/paste */ + #if !defined(SOKOL_NUKLEAR_NO_SOKOL_APP) + int mouse_pos[2]; + float mouse_scroll[2]; + bool mouse_did_move; + bool mouse_did_scroll; + bool btn_down[NK_BUTTON_MAX]; + bool btn_up[NK_BUTTON_MAX]; + char char_buffer[NK_INPUT_MAX]; + bool keys_down[NK_KEY_MAX]; + bool keys_up[NK_KEY_MAX]; + #endif +} _snk_state_t; +static _snk_state_t _snuklear; + +/* + Embedded source code compiled with: + + sokol-shdc -i snuk.glsl -o snuk.h -l glsl330:glsl300es:hlsl4:metal_macos:metal_ios:metal_sim:wgpu -b + + (not that for Metal and D3D11 byte code, sokol-shdc must be run + on macOS and Windows) + + @vs vs + uniform vs_params { + vec2 disp_size; + }; + in vec2 position; + in vec2 texcoord0; + in vec4 color0; + out vec2 uv; + out vec4 color; + void main() { + gl_Position = vec4(((position/disp_size)-0.5)*vec2(2.0,-2.0), 0.5, 1.0); + uv = texcoord0; + color = color0; + } + @end + + @fs fs + uniform sampler2D tex; + in vec2 uv; + in vec4 color; + out vec4 frag_color; + void main() { + frag_color = texture(tex, uv) * color; + } + @end + + @program snuk vs fs +*/ +#if defined(SOKOL_GLCORE33) +static const char _snk_vs_source_glsl330[341] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e, + 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61, + 0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, + 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e, + 0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a, + 0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79, + 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31, + 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f, + 0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f, + 0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, + 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63, + 0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20, + 0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f, + 0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, + 0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x2f,0x20,0x76,0x73,0x5f, + 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x79,0x29,0x20,0x2d,0x20, + 0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63, + 0x32,0x28,0x32,0x2e,0x30,0x2c,0x20,0x2d,0x32,0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e, + 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x20, + 0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b, + 0x0a,0x7d,0x0a,0x0a,0x00, +}; +static const char _snk_fs_source_glsl330[169] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e, + 0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20, + 0x74,0x65,0x78,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, + 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76, + 0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a, + 0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x69,0x6e,0x20,0x76, + 0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64, + 0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, + 0x72,0x65,0x28,0x74,0x65,0x78,0x2c,0x20,0x75,0x76,0x29,0x20,0x2a,0x20,0x63,0x6f, + 0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_GLES3) +static const char _snk_vs_source_glsl300es[344] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, + 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73, + 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f, + 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29, + 0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a, + 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, + 0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78, + 0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34, + 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, + 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20, + 0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x0a,0x76,0x6f, + 0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, + 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65, + 0x63,0x34,0x28,0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x2f,0x20, + 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x79,0x29, + 0x20,0x2d,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2a,0x20, + 0x76,0x65,0x63,0x32,0x28,0x32,0x2e,0x30,0x2c,0x20,0x2d,0x32,0x2e,0x30,0x29,0x2c, + 0x20,0x30,0x2e,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x75,0x76,0x20,0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +static const char _snk_fs_source_glsl300es[242] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, + 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, + 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, + 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, + 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d, + 0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x3b,0x0a,0x0a,0x6c,0x61,0x79, + 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, + 0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34, + 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20, + 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x69, + 0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c, + 0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29, + 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, + 0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x2c, + 0x20,0x75,0x76,0x29,0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x0a, + 0x0a,0x00, +}; +#elif defined(SOKOL_METAL) +static const uint8_t _snk_vs_bytecode_metal_macos[3216] = { + 0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x90,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0xef,0xd7,0x24,0x0b,0xf0,0x26,0xba, + 0xcd,0xc3,0x6f,0x48,0x91,0x7a,0x7c,0x38,0xca,0xb8,0xf1,0xb1,0xe3,0xc7,0x99,0x8d, + 0xac,0x39,0x8e,0x2f,0xf8,0xa3,0x19,0x68,0x22,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x37,0x00,0x00, + 0x00,0x56,0x41,0x54,0x54,0x22,0x00,0x03,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x00,0x00,0x80,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x02,0x80,0x56,0x41,0x54,0x59,0x05,0x00,0x03, + 0x00,0x04,0x04,0x06,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54, + 0xde,0xc0,0x17,0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x60,0x0b,0x00,0x00, + 0xff,0xff,0xff,0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0xd5,0x02,0x00,0x00, + 0x0b,0x82,0x20,0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91, + 0x41,0xc8,0x04,0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19, + 0x1e,0x04,0x8b,0x62,0x80,0x10,0x45,0x02,0x42,0x92,0x0b,0x42,0x84,0x10,0x32,0x14, + 0x38,0x08,0x18,0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80, + 0x0c,0x19,0x21,0x72,0x24,0x07,0xc8,0x08,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0, + 0x01,0x00,0x00,0x00,0x51,0x18,0x00,0x00,0x81,0x00,0x00,0x00,0x1b,0xc8,0x25,0xf8, + 0xff,0xff,0xff,0xff,0x01,0x90,0x80,0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87, + 0x71,0xa0,0x07,0x76,0xc8,0x87,0x36,0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72, + 0x20,0x87,0x36,0x20,0x87,0x74,0xb0,0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88, + 0x07,0x79,0xa0,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07, + 0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41, + 0x1c,0xd8,0xa1,0x1c,0xda,0x80,0x1e,0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c, + 0xd8,0x81,0x1d,0xe6,0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87, + 0x72,0x98,0x87,0x79,0x68,0x03,0x78,0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72, + 0x68,0x03,0x73,0x80,0x87,0x76,0x08,0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e, + 0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda, + 0x00,0x1e,0xde,0x21,0x1d,0xdc,0x81,0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21, + 0x1d,0xda,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30, + 0x07,0x79,0x08,0x87,0x76,0x28,0x87,0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87, + 0x72,0x90,0x87,0x36,0x28,0x07,0x76,0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77, + 0x68,0x03,0x76,0x28,0x87,0x70,0x30,0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70, + 0x07,0x73,0x98,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07, + 0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1, + 0x1d,0xe0,0xa1,0x0d,0xe8,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08, + 0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87, + 0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41, + 0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d, + 0xca,0x81,0x1c,0xda,0x40,0x1f,0xca,0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0, + 0xa1,0x0d,0xda,0x21,0x1c,0xe8,0x01,0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80, + 0x70,0x87,0x77,0x68,0x03,0x7a,0x90,0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38, + 0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00, + 0x62,0x1e,0xe8,0x21,0x1c,0xc6,0x61,0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1, + 0x1c,0xc6,0x81,0x1e,0xde,0x41,0x1e,0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c, + 0xe4,0xa1,0x0d,0xe6,0x21,0x1d,0xf4,0xa1,0x1c,0x00,0x3c,0x00,0x88,0x7a,0x70,0x87, + 0x79,0x08,0x07,0x73,0x28,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a, + 0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xea,0x61,0x1e,0xca,0xa1,0x0d, + 0xe6,0xe1,0x1d,0xcc,0x81,0x1e,0xda,0xc0,0x1c,0xd8,0xe1,0x1d,0xc2,0x81,0x1e,0x00, + 0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x36,0x18,0x02,0x01,0x2c,0x40,0x05,0x00, + 0x49,0x18,0x00,0x00,0x01,0x00,0x00,0x00,0x13,0x84,0x40,0x00,0x89,0x20,0x00,0x00, + 0x1b,0x00,0x00,0x00,0x32,0x22,0x08,0x09,0x20,0x64,0x85,0x04,0x13,0x22,0xa4,0x84, + 0x04,0x13,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x88,0x8c,0x0b,0x84,0x84,0x4c, + 0x10,0x3c,0x33,0x00,0xc3,0x08,0x02,0x30,0x8c,0x40,0x00,0x77,0x49,0x53,0x44,0x09, + 0x93,0xcf,0x00,0x48,0x43,0xff,0x0e,0x35,0xf9,0x0f,0x20,0x28,0xc4,0x80,0x87,0x10, + 0x39,0x48,0x9a,0x22,0x4a,0x98,0xfc,0x4a,0xfa,0x1f,0x20,0x02,0x18,0x09,0x05,0x31, + 0x88,0x40,0x08,0xa5,0x98,0x08,0x29,0xb2,0x81,0x80,0x39,0x02,0x30,0xc8,0x81,0x9c, + 0x23,0x00,0x85,0x41,0x84,0x40,0x18,0x46,0x20,0x92,0x11,0x00,0x00,0x00,0x00,0x00, + 0x13,0xb2,0x70,0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60, + 0x87,0x72,0x68,0x83,0x76,0x08,0x87,0x71,0x78,0x87,0x79,0xc0,0x87,0x38,0x80,0x03, + 0x37,0x88,0x83,0x38,0x70,0x03,0x38,0xd8,0x70,0x1b,0xe5,0xd0,0x06,0xf0,0xa0,0x07, + 0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x90,0x0e,0x71, + 0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9,0x80,0x07,0x7a,0x80,0x07,0x7a,0x80, + 0x07,0x6d,0x90,0x0e,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07, + 0x6d,0x90,0x0e,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d, + 0x90,0x0e,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60, + 0x0e,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0e, + 0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x71, + 0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x60,0x0f,0x72,0x40, + 0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x73,0x20,0x07, + 0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x74,0x80,0x07,0x7a, + 0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x76,0x40,0x07,0x7a,0x60, + 0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x79,0x60,0x07,0x7a,0x10,0x07, + 0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x20,0x07,0x78, + 0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10, + 0x07,0x79,0x20,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07, + 0x6d,0x60,0x0f,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72, + 0x50,0x07,0x76,0xd0,0x06,0xf6,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20, + 0x07,0x7a,0x50,0x07,0x71,0x20,0x07,0x6d,0x60,0x0f,0x71,0x00,0x07,0x72,0x40,0x07, + 0x7a,0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x6d, + 0xe0,0x0e,0x78,0xa0,0x07,0x71,0x60,0x07,0x7a,0x30,0x07,0x72,0x30,0x84,0x39,0x00, + 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0xc8,0x02,0x01,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x32,0x1e,0x98,0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0xda, + 0x11,0x00,0xca,0x12,0x18,0x01,0x28,0x88,0x22,0x28,0x84,0x32,0x20,0x1d,0x6b,0x50, + 0x1e,0x82,0x60,0x8c,0x00,0x04,0x41,0x50,0x04,0x03,0x00,0x00,0x79,0x18,0x00,0x00, + 0x16,0x01,0x00,0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9, + 0xb9,0xb4,0x37,0xb7,0x21,0x46,0x52,0x20,0x80,0x82,0x50,0xb9,0x1b,0x43,0x0b,0x93, + 0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62,0x24,0x02,0x22,0x24,0x06,0xd9,0x20,0x08,0x0e, + 0x8e,0xad,0x0c,0x84,0x89,0xc9,0xaa,0x09,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d, + 0x24,0x07,0x46,0xc6,0x25,0x86,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac, + 0x25,0x07,0x46,0xc6,0x25,0x86,0xc6,0x25,0x27,0x65,0x88,0x80,0x10,0x43,0x8c,0x44, + 0x48,0x88,0x64,0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x41,0x8e,0x44,0x48,0x84, + 0x64,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56, + 0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x40, + 0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61, + 0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x04, + 0x64,0x61,0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98, + 0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1, + 0x7d,0x91,0xa5,0xcd,0x85,0x89,0xb1,0x95,0x0d,0x11,0x90,0x86,0x61,0x10,0x96,0x26, + 0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0xe2,0x16,0x46,0x97,0x66,0x57,0xf6, + 0x45,0xf6,0x56,0x27,0xc6,0x56,0xf6,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44, + 0x40,0x1e,0x92,0x41,0x58,0x9a,0x9c,0xcb,0xd8,0x5b,0x1b,0x5c,0x1a,0x5b,0x99,0x8b, + 0x5b,0x18,0x5d,0x9a,0x5d,0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0xdb,0x9b,0xdb,0xd9, + 0x17,0x59,0xda,0x5c,0x98,0x18,0x5b,0xd9,0x10,0x01,0x89,0x78,0x06,0x61,0x69,0x72, + 0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x5f, + 0x77,0x69,0x64,0x65,0x5f,0x76,0x65,0x63,0x74,0x6f,0x72,0x73,0x5f,0x64,0x69,0x73, + 0x61,0x62,0x6c,0x65,0x43,0x04,0x64,0x62,0x14,0x96,0x26,0xe7,0x62,0x57,0x26,0x47, + 0x57,0x86,0xf7,0xf5,0x56,0x47,0x07,0x57,0x47,0xc7,0xa5,0x6e,0xae,0x4c,0x0e,0x85, + 0xed,0x6d,0xcc,0x0d,0x26,0x85,0x51,0x58,0x9a,0x9c,0x4b,0x98,0xdc,0xd9,0x17,0x5d, + 0x1e,0x5c,0xd9,0x97,0x5b,0x58,0x5b,0x19,0x0d,0x33,0xb6,0xb7,0x30,0x3a,0x19,0x32, + 0x61,0x69,0x72,0x2e,0x61,0x72,0x67,0x5f,0x6e,0x61,0x6d,0x65,0x14,0xea,0xec,0x86, + 0x30,0x48,0x85,0x58,0xc8,0x85,0x60,0x48,0x86,0x68,0x5c,0xea,0xe6,0xca,0xe4,0x50, + 0xd8,0xde,0xc6,0xdc,0x62,0x52,0x68,0x98,0xb1,0xbd,0x85,0xd1,0xd1,0xb0,0x18,0x7b, + 0x63,0x7b,0x93,0x1b,0xc2,0x20,0x15,0xc2,0x21,0x17,0xd2,0x21,0x19,0xe2,0x91,0x09, + 0x4b,0x93,0x73,0x81,0x7b,0x9b,0x4b,0xa3,0x4b,0x7b,0x73,0xe3,0x72,0xc6,0xf6,0x05, + 0xf5,0x36,0x97,0x46,0x97,0xf6,0xe6,0x36,0x44,0x41,0xc0,0x00,0xb9,0x90,0x0e,0xc9, + 0x90,0x30,0x18,0x62,0x20,0x1b,0xf2,0x21,0x62,0x40,0x28,0x2c,0x4d,0xce,0xc5,0xae, + 0x4c,0x8e,0xae,0x0c,0xef,0x2b,0xcd,0x0d,0xae,0x8e,0x8e,0x52,0x58,0x9a,0x9c,0x0b, + 0xdb,0xdb,0x58,0x18,0x5d,0xda,0x9b,0xdb,0x57,0x9a,0x1b,0x59,0x19,0x1e,0xb3,0xb3, + 0x32,0xb7,0x32,0xb9,0x30,0xba,0x32,0x32,0x14,0x1c,0xb8,0xb7,0xb9,0x34,0xba,0xb4, + 0x37,0x37,0x22,0x3b,0x99,0x2f,0xb3,0x14,0x22,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x43,0xa8,0x64,0x40,0xc8,0x00,0x29,0x83,0x64,0x48,0x04,0xc4,0x0c,0x90,0x0b, + 0xc1,0x90,0x0c,0x39,0x03,0x6a,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x64,0x28, + 0x39,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x44,0x76,0x32,0x5f,0x66,0x29, + 0x4c,0xe8,0xca,0xf0,0xc6,0xde,0xde,0xe4,0xc8,0x60,0x86,0x50,0x89,0x80,0x90,0x01, + 0x52,0x06,0x89,0x90,0x08,0x48,0x1a,0x20,0x17,0x82,0x21,0x19,0xa2,0x06,0xbc,0xce, + 0xca,0xdc,0xca,0xe4,0xc2,0xe8,0xca,0xc8,0x50,0x6c,0xc6,0xde,0xd8,0xde,0xe4,0x60, + 0x88,0xec,0x68,0xbe,0xcc,0x52,0x68,0x8c,0xbd,0xb1,0xbd,0xc9,0xc1,0x0c,0xa1,0x92, + 0x02,0x21,0x03,0xa4,0x0c,0x92,0x22,0x11,0x10,0x36,0x40,0x2e,0xa4,0x43,0x32,0xa4, + 0x0d,0xa8,0x84,0xa5,0xc9,0xb9,0x88,0xd5,0x99,0x99,0x95,0xc9,0xf1,0x09,0x4b,0x93, + 0x73,0x11,0xab,0x33,0x33,0x2b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x23,0x12,0x96,0x26, + 0xe7,0x22,0x57,0x16,0x46,0x46,0x2a,0x2c,0x4d,0xce,0x65,0x8e,0x4e,0xae,0x6e,0x8c, + 0xee,0x8b,0x2e,0x0f,0xae,0xec,0x2b,0xcd,0xcd,0xec,0x8d,0x09,0x59,0xda,0x1c,0xdc, + 0xd7,0x5c,0x9a,0x5e,0xd9,0x10,0x25,0x19,0x12,0x22,0x19,0x10,0x0c,0x99,0x03,0x46, + 0x61,0x69,0x72,0x2e,0x61,0x72,0x67,0x5f,0x74,0x79,0x70,0x65,0x5f,0x73,0x69,0x7a, + 0x65,0xbc,0xc2,0xd2,0xe4,0x5c,0xc2,0xe4,0xce,0xbe,0xe8,0xf2,0xe0,0xca,0xbe,0xc2, + 0xd8,0xd2,0xce,0xdc,0xbe,0xe6,0xd2,0xf4,0xca,0x98,0xd8,0xcd,0x7d,0xc1,0x85,0xc9, + 0x85,0xb5,0xcd,0x71,0xf8,0x92,0x99,0x19,0x42,0x06,0xc9,0x81,0xbc,0x01,0x02,0x07, + 0x09,0x81,0x94,0x41,0x32,0x24,0x02,0x12,0x07,0x88,0x1c,0x20,0x74,0x80,0xd4,0x41, + 0x42,0x20,0x76,0x90,0x10,0xc8,0x85,0xdc,0x01,0x92,0x21,0x78,0x30,0x04,0x41,0xd0, + 0x00,0x59,0x03,0xc4,0x0d,0x90,0x3c,0x18,0x62,0x1c,0x00,0x32,0x06,0x88,0x1e,0xf0, + 0x79,0x6b,0x73,0x4b,0x83,0x7b,0xa3,0x2b,0x73,0xa3,0x03,0x19,0x43,0x0b,0x93,0xe3, + 0x33,0x95,0xd6,0x06,0xc7,0x56,0x06,0x32,0xb4,0xb2,0x02,0x42,0x25,0x14,0x14,0x34, + 0x44,0x40,0xfa,0x60,0x88,0x81,0xf0,0x01,0xe2,0x07,0x4b,0x30,0xc4,0x40,0xfe,0x00, + 0xf9,0x83,0x25,0x18,0x22,0x00,0xc9,0x88,0x88,0x1d,0xd8,0xc1,0x1e,0xda,0xc1,0x0d, + 0xda,0xe1,0x1d,0xc8,0xa1,0x1e,0xd8,0xa1,0x1c,0xdc,0xc0,0x1c,0xd8,0x21,0x1c,0xce, + 0x61,0x1e,0xa6,0x08,0xc1,0x30,0x42,0x61,0x07,0x76,0xb0,0x87,0x76,0x70,0x83,0x74, + 0x20,0x87,0x72,0x70,0x07,0x7a,0x98,0x12,0x14,0x23,0x96,0x70,0x48,0x07,0x79,0x70, + 0x03,0x7b,0x28,0x07,0x79,0x98,0x87,0x74,0x78,0x07,0x77,0x98,0x12,0x18,0x23,0xa8, + 0x70,0x48,0x07,0x79,0x70,0x03,0x76,0x08,0x07,0x77,0x38,0x87,0x7a,0x08,0x87,0x73, + 0x28,0x87,0x5f,0xb0,0x87,0x72,0x90,0x87,0x79,0x48,0x87,0x77,0x70,0x87,0x29,0x01, + 0x32,0x62,0x0a,0x87,0x74,0x90,0x07,0x37,0x18,0x87,0x77,0x68,0x07,0x78,0x48,0x07, + 0x76,0x28,0x87,0x5f,0x78,0x07,0x78,0xa0,0x87,0x74,0x78,0x07,0x77,0x98,0x87,0x29, + 0x86,0xc2,0x38,0x90,0x44,0x8d,0x50,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xec,0xa1,0x1c, + 0xe4,0x81,0x1e,0xca,0x01,0x1f,0xa6,0x04,0x7b,0x00,0x00,0x00,0x79,0x18,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88, + 0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6, + 0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce, + 0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8, + 0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48, + 0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11, + 0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e, + 0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89, + 0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b, + 0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37, + 0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78, + 0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81, + 0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1, + 0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c, + 0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39, + 0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc, + 0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58, + 0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87, + 0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f, + 0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e, + 0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66, + 0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b, + 0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0, + 0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e, + 0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc, + 0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3, + 0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07, + 0x7a,0x28,0x07,0x72,0x00,0x00,0x00,0x00,0x71,0x20,0x00,0x00,0x02,0x00,0x00,0x00, + 0x06,0x50,0x30,0x00,0xd2,0xd0,0x00,0x00,0x61,0x20,0x00,0x00,0x24,0x00,0x00,0x00, + 0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0xd4,0x63,0x11,0x40, + 0x60,0x1c,0x73,0x10,0x83,0x00,0x41,0x94,0x33,0x00,0x14,0x63,0x09,0x20,0x08,0x82, + 0xf0,0x2f,0x80,0x20,0x08,0xc2,0xbf,0x30,0x96,0x00,0x82,0x20,0x08,0x82,0x01,0x08, + 0x82,0x20,0x08,0x0e,0x33,0x00,0x24,0x73,0x10,0x18,0x76,0x59,0x34,0x33,0x00,0x04, + 0x63,0x04,0x20,0x08,0x82,0xf8,0x37,0x46,0x00,0x82,0x20,0x08,0x7f,0x33,0x00,0x00, + 0xe3,0x0d,0x0c,0x66,0x51,0x40,0x2c,0x0a,0xe8,0x63,0xc1,0x02,0x1f,0x0b,0x16,0xf9, + 0x0c,0x32,0x04,0xcb,0x33,0xc8,0x10,0x2c,0xd1,0x6c,0xc3,0x52,0x01,0xb3,0x0d,0x41, + 0x15,0xcc,0x36,0x04,0x83,0x90,0x41,0x40,0x0c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x5b,0x86,0x20,0x00,0x85,0x2d,0x83,0x30,0x84,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _snk_fs_bytecode_metal_macos[2909] = { + 0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x5d,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd5,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0x17,0xe5,0xa2,0xb3,0x7d,0x00,0xfc, + 0xde,0x00,0x5f,0xbd,0x79,0x5e,0xd5,0x95,0xff,0xb6,0xf4,0xce,0x41,0x07,0xfb,0x8f, + 0x49,0x6b,0x95,0x79,0x7a,0xd1,0xcf,0x19,0xde,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x04,0x00,0x00, + 0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17, + 0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x60,0x0a,0x00,0x00,0xff,0xff,0xff, + 0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0x95,0x02,0x00,0x00,0x0b,0x82,0x20, + 0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04, + 0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b, + 0x62,0x80,0x14,0x45,0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18, + 0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21, + 0x72,0x24,0x07,0xc8,0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00, + 0x00,0x51,0x18,0x00,0x00,0x89,0x00,0x00,0x00,0x1b,0xcc,0x25,0xf8,0xff,0xff,0xff, + 0xff,0x01,0x60,0x00,0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07, + 0x7a,0x60,0x87,0x7c,0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72, + 0x68,0x03,0x72,0x48,0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90, + 0x07,0x7a,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc, + 0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81, + 0x1d,0xca,0xa1,0x0d,0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d, + 0xd8,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87, + 0x79,0x98,0x87,0x36,0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36, + 0x30,0x07,0x78,0x68,0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c, + 0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0, + 0xe1,0x1d,0xd2,0xc1,0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90, + 0x87,0x70,0x68,0x87,0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07, + 0x79,0x68,0x83,0x72,0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36, + 0x60,0x87,0x72,0x08,0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30, + 0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8, + 0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01, + 0x1e,0xda,0x80,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60, + 0x87,0x79,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1, + 0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c, + 0xc8,0xa1,0x0d,0xf4,0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda, + 0xa0,0x1d,0xc2,0x81,0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77, + 0x78,0x87,0x36,0xa0,0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68, + 0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6, + 0x81,0x1e,0xc2,0x61,0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61, + 0x1c,0xe8,0xe1,0x1d,0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e, + 0xda,0x60,0x1e,0xd2,0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa8,0x07,0x77,0x98,0x87, + 0x70,0x30,0x87,0x72,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74, + 0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0xa2,0x1e,0xe6,0xa1,0x1c,0xda,0x60,0x1e, + 0xde,0xc1,0x1c,0xe8,0xa1,0x0d,0xcc,0x81,0x1d,0xde,0x21,0x1c,0xe8,0x01,0x30,0x87, + 0x70,0x60,0x87,0x79,0x28,0x07,0x60,0x83,0x21,0x0c,0xc0,0x02,0x54,0x1b,0x8c,0x81, + 0x00,0x16,0xa0,0xda,0x80,0x10,0xff,0xff,0xff,0xff,0x3f,0x00,0x0c,0x20,0x01,0xd5, + 0x06,0xa3,0x08,0x80,0x05,0xa8,0x36,0x18,0x86,0x00,0x2c,0x40,0x05,0x49,0x18,0x00, + 0x00,0x03,0x00,0x00,0x00,0x13,0x86,0x40,0x18,0x26,0x0c,0x44,0x61,0x00,0x00,0x00, + 0x00,0x89,0x20,0x00,0x00,0x20,0x00,0x00,0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85, + 0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a, + 0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x48,0x33,0x00,0xc3,0x08,0x04,0x70,0x90,0x34,0x45, + 0x94,0x30,0xf9,0x0c,0x80,0x34,0xf4,0xef,0x50,0x13,0x0a,0xc2,0x30,0x82,0x00,0x1c, + 0x25,0x4d,0x11,0x25,0x4c,0xfe,0x3f,0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0xff,0x34, + 0x46,0x00,0x0c,0x22,0x10,0xc1,0x45,0xd2,0x14,0x51,0xc2,0xe4,0xff,0x12,0xc0,0x3c, + 0x0b,0x11,0xfd,0xd3,0x18,0x01,0x30,0x88,0x60,0x08,0xa5,0x10,0x23,0x94,0x43,0x68, + 0x8e,0x20,0x98,0x23,0x00,0x83,0x61,0x04,0x61,0x29,0x48,0x28,0x67,0x28,0xa6,0x00, + 0xb5,0x81,0x80,0x1c,0x58,0x23,0x00,0x00,0x00,0x13,0xb2,0x70,0x48,0x07,0x79,0xb0, + 0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68,0x83,0x76,0x08,0x87, + 0x71,0x78,0x87,0x79,0xc0,0x87,0x38,0x80,0x03,0x37,0x88,0x83,0x38,0x70,0x03,0x38, + 0xd8,0x70,0x1b,0xe5,0xd0,0x06,0xf0,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74, + 0xa0,0x07,0x76,0x40,0x07,0x6d,0x90,0x0e,0x71,0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0, + 0x06,0xe9,0x80,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e,0x71,0x60,0x07, + 0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x90,0x0e,0x73,0x20,0x07,0x7a, + 0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x90,0x0e,0x76,0x40,0x07,0x7a,0x60, + 0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0e,0x73,0x20,0x07,0x7a,0x30,0x07, + 0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0e,0x76,0x40,0x07,0x7a,0x60,0x07,0x74, + 0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0, + 0x07,0x71,0x60,0x07,0x6d,0x60,0x0f,0x72,0x40,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07, + 0x73,0x20,0x07,0x6d,0x60,0x0f,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73, + 0x20,0x07,0x6d,0x60,0x0f,0x74,0x80,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40, + 0x07,0x6d,0x60,0x0f,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07, + 0x6d,0x60,0x0f,0x79,0x60,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72, + 0x80,0x07,0x6d,0x60,0x0f,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0, + 0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x79,0x20,0x07,0x7a,0x20,0x07, + 0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x72,0x50,0x07,0x76, + 0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x50, + 0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07, + 0x6d,0x60,0x0f,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07,0x70,0x20,0x07,0x74, + 0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x6d,0xe0,0x0e,0x78,0xa0,0x07,0x71,0x60, + 0x07,0x7a,0x30,0x07,0x72,0x30,0x84,0x49,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00, + 0x18,0xc2,0x38,0x40,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x64,0x81,0x00,0x00,0x00, + 0x00,0x08,0x00,0x00,0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26, + 0x47,0xc6,0x04,0x43,0x5a,0x25,0x30,0x02,0x50,0x04,0x85,0x50,0x10,0x65,0x40,0x70, + 0xac,0x41,0x79,0x08,0x00,0x79,0x18,0x00,0x00,0xd9,0x00,0x00,0x00,0x1a,0x03,0x4c, + 0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x42, + 0x3c,0x00,0x84,0x50,0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62, + 0x2c,0xc2,0x23,0x2c,0x05,0xd9,0x20,0x08,0x0e,0x8e,0xad,0x0c,0x84,0x89,0xc9,0xaa, + 0x09,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x24,0x07,0x46,0xc6,0x25,0x86,0x06, + 0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac,0x25,0x07,0x46,0xc6,0x25,0x86,0xc6, + 0x25,0x27,0x65,0x88,0xf0,0x10,0x43,0x8c,0x45,0x58,0x8c,0x65,0x60,0xd1,0x54,0x46, + 0x17,0xc6,0x36,0x04,0x79,0x8e,0x45,0x58,0x84,0x65,0xe0,0x16,0x96,0x26,0xe7,0x32, + 0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45, + 0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x78,0x12,0x72,0x61,0x69,0x72,0x2e,0x63, + 0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61,0x73,0x74,0x5f,0x6d,0x61,0x74,0x68, + 0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x84,0x67,0x61,0x19,0x84,0xa5,0xc9,0xb9, + 0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99, + 0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1,0x7d,0x91,0xa5,0xcd,0x85,0x89,0xb1, + 0x95,0x0d,0x11,0x9e,0x86,0x61,0x10,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6, + 0x56,0xe6,0xe2,0x16,0x46,0x97,0x66,0x57,0xf6,0x45,0xf6,0x56,0x27,0xc6,0x56,0xf6, + 0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x78,0x1e,0x92,0x41,0x58,0x9a,0x9c, + 0xcb,0xd8,0x5b,0x1b,0x5c,0x1a,0x5b,0x99,0x8b,0x5b,0x18,0x5d,0x9a,0x5d,0xd9,0x17, + 0xdb,0x9b,0xdb,0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0x59,0xda,0x5c,0x98,0x18,0x5b, + 0xd9,0x10,0xe1,0x89,0x78,0x06,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c, + 0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x5f,0x77,0x69,0x64,0x65,0x5f,0x76,0x65, + 0x63,0x74,0x6f,0x72,0x73,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x43,0x84,0x67, + 0x62,0x14,0x96,0x26,0xe7,0x22,0x57,0xe6,0x46,0x56,0x26,0xf7,0x45,0x17,0x26,0x77, + 0x56,0x46,0xc7,0x28,0x2c,0x4d,0xce,0x25,0x4c,0xee,0xec,0x8b,0x2e,0x0f,0xae,0xec, + 0xcb,0x2d,0xac,0xad,0x8c,0x86,0x19,0xdb,0x5b,0x18,0x1d,0x0d,0x99,0xb0,0x34,0x39, + 0x97,0x30,0xb9,0xb3,0x2f,0xb7,0xb0,0xb6,0x32,0x2a,0x66,0x72,0x61,0x67,0x5f,0x63, + 0x6f,0x6c,0x6f,0x72,0x43,0x98,0xa7,0x5a,0x86,0xc7,0x7a,0xae,0x07,0x7b,0xb2,0x21, + 0xc2,0xa3,0x51,0x0a,0x4b,0x93,0x73,0x31,0x93,0x0b,0x3b,0x6b,0x2b,0x73,0xa3,0xfb, + 0x4a,0x73,0x83,0xab,0xa3,0xe3,0x52,0x37,0x57,0x26,0x87,0xc2,0xf6,0x36,0xe6,0x06, + 0x93,0x42,0x25,0x2c,0x4d,0xce,0x65,0xac,0xcc,0x8d,0xae,0x4c,0x8e,0x4f,0x58,0x9a, + 0x9c,0x0b,0x5c,0x99,0xdc,0x1c,0x5c,0xd9,0x18,0x5d,0x9a,0x5d,0x19,0x0d,0x33,0xb6, + 0xb7,0x30,0x3a,0x19,0x0a,0x75,0x76,0x43,0xa4,0x65,0x78,0xb8,0xa7,0x7b,0xbc,0xe7, + 0x7b,0xac,0x07,0x0c,0x1e,0xec,0x09,0x03,0x2e,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f, + 0x63,0x6e,0x31,0x29,0x2c,0xc6,0xde,0xd8,0xde,0xe4,0x86,0x48,0x8b,0xf0,0x70,0xcf, + 0x18,0x3c,0xde,0xf3,0x3d,0xd6,0x73,0x3d,0xd8,0x43,0x06,0x5c,0xc2,0xd2,0xe4,0x5c, + 0xe8,0xca,0xf0,0xe8,0xea,0xe4,0xca,0x28,0x85,0xa5,0xc9,0xb9,0xb0,0xbd,0x8d,0x85, + 0xd1,0xa5,0xbd,0xb9,0x7d,0xa5,0xb9,0x91,0x95,0xe1,0x51,0x09,0x4b,0x93,0x73,0x99, + 0x0b,0x6b,0x83,0x63,0x2b,0x23,0x46,0x57,0x86,0x47,0x57,0x27,0x57,0x26,0x43,0xc6, + 0x63,0xc6,0xf6,0x16,0x46,0xc7,0x02,0x32,0x17,0xd6,0x06,0xc7,0x56,0xe6,0xc3,0x81, + 0xae,0x0c,0x6f,0x08,0xb5,0x10,0x8f,0x19,0x3c,0x67,0xb0,0x0c,0x8b,0xf0,0xa0,0xc1, + 0x63,0x3d,0x69,0xf0,0x60,0x8f,0x1a,0x70,0x09,0x4b,0x93,0x73,0x99,0x0b,0x6b,0x83, + 0x63,0x2b,0x93,0xe3,0x31,0x17,0xd6,0x06,0xc7,0x56,0x26,0x47,0x84,0xae,0x0c,0x6f, + 0xaa,0x0d,0x8e,0x4d,0x6e,0x88,0xb4,0x1c,0x0f,0x1b,0x3c,0x67,0xb0,0x0c,0x8b,0xf0, + 0x58,0x4f,0x1b,0x3c,0xd8,0xe3,0x06,0x43,0x90,0x47,0x0c,0x9e,0x32,0x78,0xd6,0xe0, + 0x79,0x83,0x21,0x46,0x02,0x3c,0xdb,0x03,0x07,0x23,0x22,0x76,0x60,0x07,0x7b,0x68, + 0x07,0x37,0x68,0x87,0x77,0x20,0x87,0x7a,0x60,0x87,0x72,0x70,0x03,0x73,0x60,0x87, + 0x70,0x38,0x87,0x79,0x98,0x22,0x04,0xc3,0x08,0x85,0x1d,0xd8,0xc1,0x1e,0xda,0xc1, + 0x0d,0xd2,0x81,0x1c,0xca,0xc1,0x1d,0xe8,0x61,0x4a,0x50,0x8c,0x58,0xc2,0x21,0x1d, + 0xe4,0xc1,0x0d,0xec,0xa1,0x1c,0xe4,0x61,0x1e,0xd2,0xe1,0x1d,0xdc,0x61,0x4a,0x60, + 0x8c,0xa0,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xd8,0x21,0x1c,0xdc,0xe1,0x1c,0xea,0x21, + 0x1c,0xce,0xa1,0x1c,0x7e,0xc1,0x1e,0xca,0x41,0x1e,0xe6,0x21,0x1d,0xde,0xc1,0x1d, + 0xa6,0x04,0xc8,0x88,0x29,0x1c,0xd2,0x41,0x1e,0xdc,0x60,0x1c,0xde,0xa1,0x1d,0xe0, + 0x21,0x1d,0xd8,0xa1,0x1c,0x7e,0xe1,0x1d,0xe0,0x81,0x1e,0xd2,0xe1,0x1d,0xdc,0x61, + 0x1e,0xa6,0x18,0x0a,0xe3,0x40,0x12,0x35,0x82,0x09,0x87,0x74,0x90,0x07,0x37,0x30, + 0x07,0x79,0x08,0x87,0x73,0x68,0x87,0x72,0x70,0x07,0x7a,0x98,0x12,0xc4,0x01,0x00, + 0x00,0x79,0x18,0x00,0x00,0x6d,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c, + 0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07, + 0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42, + 0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83, + 0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07, + 0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70, + 0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3, + 0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2, + 0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc, + 0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68, + 0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07, + 0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72, + 0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec, + 0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc, + 0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8, + 0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03, + 0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c, + 0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74, + 0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4, + 0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc, + 0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1, + 0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50, + 0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51, + 0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21, + 0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06, + 0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c, + 0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77, + 0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x00,0x00,0x00,0x00,0x71,0x20,0x00, + 0x00,0x08,0x00,0x00,0x00,0x16,0xb0,0x01,0x48,0xe4,0x4b,0x00,0xf3,0x2c,0xc4,0x3f, + 0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0x7e,0x85,0x17,0xb7,0x6d,0x00,0x05,0x03,0x20, + 0x0d,0x0d,0x00,0x00,0x00,0x61,0x20,0x00,0x00,0x0c,0x00,0x00,0x00,0x13,0x04,0x41, + 0x2c,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xc4,0x46,0x00,0x48,0x8d,0x00,0xd4, + 0x00,0x89,0x19,0x00,0x02,0x23,0x00,0x00,0x00,0x23,0x06,0x8a,0x10,0x44,0x87,0x91, + 0x0c,0x05,0x11,0x58,0x90,0xc8,0x67,0xb6,0x81,0x08,0x80,0x0c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _snk_vs_bytecode_metal_ios[3200] = { + 0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x70,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0xcb,0xdd,0xe3,0x08,0x7a,0x87,0xef, + 0xdd,0xe0,0x68,0xe7,0xe8,0x6b,0xe6,0xea,0x8b,0x6d,0x4a,0xe0,0x3d,0x6a,0xfe,0xe4, + 0xfe,0x32,0x1d,0xbe,0xb6,0x10,0x11,0xee,0x75,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x37,0x00,0x00, + 0x00,0x56,0x41,0x54,0x54,0x22,0x00,0x03,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x00,0x00,0x80,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x02,0x80,0x56,0x41,0x54,0x59,0x05,0x00,0x03, + 0x00,0x04,0x04,0x06,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54, + 0xde,0xc0,0x17,0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x5c,0x0b,0x00,0x00, + 0xff,0xff,0xff,0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0xd4,0x02,0x00,0x00, + 0x0b,0x82,0x20,0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91, + 0x41,0xc8,0x04,0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19, + 0x1e,0x04,0x8b,0x62,0x80,0x10,0x45,0x02,0x42,0x92,0x0b,0x42,0x84,0x10,0x32,0x14, + 0x38,0x08,0x18,0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80, + 0x0c,0x19,0x21,0x72,0x24,0x07,0xc8,0x08,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0, + 0x01,0x00,0x00,0x00,0x51,0x18,0x00,0x00,0x82,0x00,0x00,0x00,0x1b,0xc8,0x25,0xf8, + 0xff,0xff,0xff,0xff,0x01,0x90,0x80,0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87, + 0x71,0xa0,0x07,0x76,0xc8,0x87,0x36,0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72, + 0x20,0x87,0x36,0x20,0x87,0x74,0xb0,0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88, + 0x07,0x79,0xa0,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07, + 0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41, + 0x1c,0xd8,0xa1,0x1c,0xda,0x80,0x1e,0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c, + 0xd8,0x81,0x1d,0xe6,0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87, + 0x72,0x98,0x87,0x79,0x68,0x03,0x78,0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72, + 0x68,0x03,0x73,0x80,0x87,0x76,0x08,0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e, + 0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda, + 0x00,0x1e,0xde,0x21,0x1d,0xdc,0x81,0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21, + 0x1d,0xda,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30, + 0x07,0x79,0x08,0x87,0x76,0x28,0x87,0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87, + 0x72,0x90,0x87,0x36,0x28,0x07,0x76,0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77, + 0x68,0x03,0x76,0x28,0x87,0x70,0x30,0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70, + 0x07,0x73,0x98,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07, + 0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1, + 0x1d,0xe0,0xa1,0x0d,0xe8,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08, + 0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87, + 0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41, + 0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d, + 0xca,0x81,0x1c,0xda,0x40,0x1f,0xca,0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0, + 0xa1,0x0d,0xda,0x21,0x1c,0xe8,0x01,0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80, + 0x70,0x87,0x77,0x68,0x03,0x7a,0x90,0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38, + 0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00, + 0x62,0x1e,0xe8,0x21,0x1c,0xc6,0x61,0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1, + 0x1c,0xc6,0x81,0x1e,0xde,0x41,0x1e,0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c, + 0xe4,0xa1,0x0d,0xe6,0x21,0x1d,0xf4,0xa1,0x1c,0x00,0x3c,0x00,0x88,0x7a,0x70,0x87, + 0x79,0x08,0x07,0x73,0x28,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a, + 0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xea,0x61,0x1e,0xca,0xa1,0x0d, + 0xe6,0xe1,0x1d,0xcc,0x81,0x1e,0xda,0xc0,0x1c,0xd8,0xe1,0x1d,0xc2,0x81,0x1e,0x00, + 0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x36,0x20,0x02,0x01,0x24,0xc0,0x02,0x54, + 0x00,0x00,0x00,0x00,0x49,0x18,0x00,0x00,0x01,0x00,0x00,0x00,0x13,0x84,0x40,0x00, + 0x89,0x20,0x00,0x00,0x1b,0x00,0x00,0x00,0x32,0x22,0x08,0x09,0x20,0x64,0x85,0x04, + 0x13,0x22,0xa4,0x84,0x04,0x13,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x88,0x8c, + 0x0b,0x84,0x84,0x4c,0x10,0x3c,0x33,0x00,0xc3,0x08,0x02,0x30,0x8c,0x40,0x00,0x77, + 0x49,0x53,0x44,0x09,0x93,0xcf,0x00,0x48,0x43,0xff,0x0e,0x35,0xf9,0x0f,0x20,0x28, + 0xc4,0x80,0x87,0x10,0x39,0x48,0x9a,0x22,0x4a,0x98,0xfc,0x4a,0xfa,0x1f,0x20,0x02, + 0x18,0x09,0x05,0x31,0x88,0x40,0x08,0xa5,0x98,0x08,0x29,0xb2,0x81,0x80,0x39,0x02, + 0x30,0x48,0x81,0x9c,0x23,0x00,0x85,0x41,0x84,0x40,0x18,0x46,0x20,0x92,0x11,0x00, + 0x00,0x00,0x00,0x00,0x13,0xa8,0x70,0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70, + 0x80,0x07,0x78,0x60,0x87,0x72,0x68,0x83,0x74,0x78,0x87,0x79,0xc8,0x03,0x37,0x80, + 0x03,0x37,0x80,0x83,0x0d,0xb7,0x51,0x0e,0x6d,0x00,0x0f,0x7a,0x60,0x07,0x74,0xa0, + 0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe9,0x10,0x07,0x7a,0x80,0x07, + 0x7a,0x80,0x07,0x6d,0x90,0x0e,0x78,0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9, + 0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xe9,0x30, + 0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe9,0x60,0x07, + 0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe6,0x30,0x07,0x72, + 0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe6,0x60,0x07,0x74,0xa0, + 0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x10,0x07,0x76,0xa0,0x07, + 0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x74,0xa0,0x07,0x73, + 0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20, + 0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x40,0x07,0x78,0xa0,0x07,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a, + 0x60,0x07,0x74,0xd0,0x06,0xf6,0x90,0x07,0x76,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0, + 0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07, + 0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x90,0x07,0x72, + 0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x20, + 0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07, + 0x6d,0x60,0x0f,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xa0,0x07,0x75, + 0x10,0x07,0x72,0xd0,0x06,0xf6,0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00, + 0x07,0x72,0x40,0x07,0x7a,0x10,0x07,0x70,0x20,0x07,0x74,0xd0,0x06,0xee,0x80,0x07, + 0x7a,0x10,0x07,0x76,0xa0,0x07,0x73,0x20,0x07,0x43,0x98,0x03,0x00,0x80,0x00,0x00, + 0x00,0x00,0x00,0x80,0x2c,0x10,0x00,0x00,0x0b,0x00,0x00,0x00,0x32,0x1e,0x98,0x10, + 0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0xda,0x11,0x00,0xca,0x12, + 0x18,0x01,0x28,0x88,0x22,0x28,0x84,0x32,0x20,0x1d,0x4b,0x68,0x0a,0x82,0x31,0x02, + 0x10,0x04,0x41,0x11,0x0c,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0x16,0x01,0x00,0x00, + 0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7, + 0x21,0x46,0x52,0x20,0x80,0x82,0x50,0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3, + 0x2b,0x1b,0x62,0x24,0x02,0x22,0x24,0x06,0xd9,0x20,0x08,0x0e,0x8e,0xad,0x0c,0x84, + 0x89,0xc9,0xaa,0x09,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x64,0x26,0x07,0x46, + 0xc6,0xc5,0xe6,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac,0x65,0x26,0x07, + 0x46,0xc6,0xc5,0xe6,0x26,0x65,0x88,0x80,0x10,0x43,0x8c,0x44,0x48,0x88,0x64,0x60, + 0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x41,0x8e,0x44,0x48,0x86,0x64,0xe0,0x16,0x96, + 0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26,0xd7, + 0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x40,0x12,0x72,0x61,0x69, + 0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61,0x73,0x74,0x5f,0x6d, + 0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x04,0x64,0x21,0x19,0x84, + 0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5,0x95, + 0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1,0x7d,0x95,0xb9,0x85, + 0x89,0xb1,0x95,0x0d,0x11,0x90,0x86,0x61,0x10,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06, + 0x97,0xc6,0x56,0xe6,0xe2,0x16,0x46,0x97,0x66,0x57,0xf6,0x45,0xf6,0x56,0x27,0xc6, + 0x56,0xf6,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x40,0x1e,0x92,0x41,0x58, + 0x9a,0x9c,0xcb,0xd8,0x5b,0x1b,0x5c,0x1a,0x5b,0x99,0x8b,0x5b,0x18,0x5d,0x9a,0x5d, + 0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0x59,0xda,0x5c,0x98, + 0x18,0x5b,0xd9,0x10,0x01,0x89,0x78,0x06,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70, + 0x69,0x6c,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x5f,0x77,0x69,0x64,0x65,0x5f, + 0x76,0x65,0x63,0x74,0x6f,0x72,0x73,0x5f,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x43, + 0x04,0x64,0x62,0x14,0x96,0x26,0xe7,0x62,0x57,0x26,0x47,0x57,0x86,0xf7,0xf5,0x56, + 0x47,0x07,0x57,0x47,0xc7,0xa5,0x6e,0xae,0x4c,0x0e,0x85,0xed,0x6d,0xcc,0x0d,0x26, + 0x85,0x51,0x58,0x9a,0x9c,0x4b,0x98,0xdc,0xd9,0x17,0x5d,0x1e,0x5c,0xd9,0x97,0x5b, + 0x58,0x5b,0x19,0x0d,0x33,0xb6,0xb7,0x30,0x3a,0x19,0x32,0x61,0x69,0x72,0x2e,0x61, + 0x72,0x67,0x5f,0x6e,0x61,0x6d,0x65,0x14,0xea,0xec,0x86,0x30,0x48,0x85,0x58,0xc8, + 0x85,0x60,0x48,0x86,0x68,0x5c,0xea,0xe6,0xca,0xe4,0x50,0xd8,0xde,0xc6,0xdc,0x62, + 0x52,0x68,0x98,0xb1,0xbd,0x85,0xd1,0xd1,0xb0,0x18,0x7b,0x63,0x7b,0x93,0x1b,0xc2, + 0x20,0x15,0xc2,0x21,0x17,0xd2,0x21,0x19,0xe2,0x91,0x09,0x4b,0x93,0x73,0x81,0x7b, + 0x9b,0x4b,0xa3,0x4b,0x7b,0x73,0xe3,0x72,0xc6,0xf6,0x05,0xf5,0x36,0x97,0x46,0x97, + 0xf6,0xe6,0x36,0x44,0x41,0xc0,0x00,0xb9,0x90,0x0e,0xc9,0x90,0x30,0x18,0x62,0x20, + 0x1b,0xf2,0x21,0x62,0x40,0x28,0x2c,0x4d,0xce,0xc5,0xae,0x4c,0x8e,0xae,0x0c,0xef, + 0x2b,0xcd,0x0d,0xae,0x8e,0x8e,0x52,0x58,0x9a,0x9c,0x0b,0xdb,0xdb,0x58,0x18,0x5d, + 0xda,0x9b,0xdb,0x57,0x9a,0x1b,0x59,0x19,0x1e,0xb3,0xb3,0x32,0xb7,0x32,0xb9,0x30, + 0xba,0x32,0x32,0x14,0x1c,0xb8,0xb7,0xb9,0x34,0xba,0xb4,0x37,0x37,0x22,0x3b,0x99, + 0x2f,0xb3,0x14,0x22,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x43,0xa8,0x64,0x40, + 0xc8,0x00,0x29,0x83,0x64,0x48,0x04,0xc4,0x0c,0x90,0x0b,0xc1,0x90,0x0c,0x39,0x03, + 0x6a,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x64,0x28,0x39,0x74,0x65,0x78,0x63, + 0x6f,0x6f,0x72,0x64,0x30,0x44,0x76,0x32,0x5f,0x66,0x29,0x4c,0xe8,0xca,0xf0,0xc6, + 0xde,0xde,0xe4,0xc8,0x60,0x86,0x50,0x89,0x80,0x90,0x01,0x52,0x06,0x89,0x90,0x08, + 0x48,0x1a,0x20,0x17,0x82,0x21,0x19,0xa2,0x06,0xbc,0xce,0xca,0xdc,0xca,0xe4,0xc2, + 0xe8,0xca,0xc8,0x50,0x6c,0xc6,0xde,0xd8,0xde,0xe4,0x60,0x88,0xec,0x68,0xbe,0xcc, + 0x52,0x68,0x8c,0xbd,0xb1,0xbd,0xc9,0xc1,0x0c,0xa1,0x92,0x02,0x21,0x03,0xa4,0x0c, + 0x92,0x22,0x11,0x10,0x36,0x40,0x2e,0xa4,0x43,0x32,0xa4,0x0d,0xa8,0x84,0xa5,0xc9, + 0xb9,0x88,0xd5,0x99,0x99,0x95,0xc9,0xf1,0x09,0x4b,0x93,0x73,0x11,0xab,0x33,0x33, + 0x2b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x23,0x12,0x96,0x26,0xe7,0x22,0x57,0x16,0x46, + 0x46,0x2a,0x2c,0x4d,0xce,0x65,0x8e,0x4e,0xae,0x6e,0x8c,0xee,0x8b,0x2e,0x0f,0xae, + 0xec,0x2b,0xcd,0xcd,0xec,0x8d,0x09,0x59,0xda,0x1c,0xdc,0xd7,0x5c,0x9a,0x5e,0xd9, + 0x10,0x25,0x19,0x12,0x22,0x19,0x10,0x0c,0x99,0x03,0x46,0x61,0x69,0x72,0x2e,0x61, + 0x72,0x67,0x5f,0x74,0x79,0x70,0x65,0x5f,0x73,0x69,0x7a,0x65,0xbc,0xc2,0xd2,0xe4, + 0x5c,0xc2,0xe4,0xce,0xbe,0xe8,0xf2,0xe0,0xca,0xbe,0xc2,0xd8,0xd2,0xce,0xdc,0xbe, + 0xe6,0xd2,0xf4,0xca,0x98,0xd8,0xcd,0x7d,0xc1,0x85,0xc9,0x85,0xb5,0xcd,0x71,0xf8, + 0x92,0x99,0x19,0x42,0x06,0xc9,0x81,0xbc,0x01,0x02,0x07,0x09,0x81,0x94,0x41,0x32, + 0x24,0x02,0x12,0x07,0x88,0x1c,0x20,0x74,0x80,0xd4,0x41,0x42,0x20,0x76,0x90,0x10, + 0xc8,0x85,0xdc,0x01,0x92,0x21,0x78,0x30,0x04,0x41,0xd0,0x00,0x59,0x03,0xc4,0x0d, + 0x90,0x3c,0x18,0x62,0x1c,0x00,0x32,0x06,0x88,0x1e,0xf0,0x79,0x6b,0x73,0x4b,0x83, + 0x7b,0xa3,0x2b,0x73,0xa3,0x03,0x19,0x43,0x0b,0x93,0xe3,0x33,0x95,0xd6,0x06,0xc7, + 0x56,0x06,0x32,0xb4,0xb2,0x02,0x42,0x25,0x14,0x14,0x34,0x44,0x40,0xfa,0x60,0x88, + 0x81,0xf0,0x01,0xe2,0x07,0x4b,0x30,0xc4,0x40,0xfe,0x00,0xf9,0x83,0x25,0x18,0x22, + 0x00,0xc9,0x88,0x88,0x1d,0xd8,0xc1,0x1e,0xda,0xc1,0x0d,0xda,0xe1,0x1d,0xc8,0xa1, + 0x1e,0xd8,0xa1,0x1c,0xdc,0xc0,0x1c,0xd8,0x21,0x1c,0xce,0x61,0x1e,0xa6,0x08,0xc1, + 0x30,0x42,0x61,0x07,0x76,0xb0,0x87,0x76,0x70,0x83,0x74,0x20,0x87,0x72,0x70,0x07, + 0x7a,0x98,0x12,0x14,0x23,0x96,0x70,0x48,0x07,0x79,0x70,0x03,0x7b,0x28,0x07,0x79, + 0x98,0x87,0x74,0x78,0x07,0x77,0x98,0x12,0x18,0x23,0xa8,0x70,0x48,0x07,0x79,0x70, + 0x03,0x76,0x08,0x07,0x77,0x38,0x87,0x7a,0x08,0x87,0x73,0x28,0x87,0x5f,0xb0,0x87, + 0x72,0x90,0x87,0x79,0x48,0x87,0x77,0x70,0x87,0x29,0x01,0x32,0x62,0x0a,0x87,0x74, + 0x90,0x07,0x37,0x18,0x87,0x77,0x68,0x07,0x78,0x48,0x07,0x76,0x28,0x87,0x5f,0x78, + 0x07,0x78,0xa0,0x87,0x74,0x78,0x07,0x77,0x98,0x87,0x29,0x86,0xc2,0x38,0x90,0x44, + 0x8d,0x50,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xec,0xa1,0x1c,0xe4,0x81,0x1e,0xca,0x01, + 0x1f,0xa6,0x04,0x7b,0x00,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3, + 0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10, + 0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30, + 0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03, + 0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07, + 0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e, + 0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d, + 0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b, + 0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76, + 0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90, + 0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87, + 0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e, + 0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c, + 0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca, + 0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8, + 0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82, + 0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83, + 0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f, + 0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec, + 0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc, + 0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0, + 0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60, + 0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e, + 0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1, + 0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43, + 0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c, + 0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72, + 0x00,0x00,0x00,0x00,0x71,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x06,0x50,0x30,0x00, + 0xd2,0xd0,0x00,0x00,0x61,0x20,0x00,0x00,0x24,0x00,0x00,0x00,0x13,0x04,0x41,0x2c, + 0x10,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0xd4,0x63,0x11,0x40,0x60,0x1c,0x73,0x10, + 0x83,0x00,0x41,0x94,0x33,0x00,0x14,0x63,0x09,0x20,0x08,0x82,0xf0,0x2f,0x80,0x20, + 0x08,0xc2,0xbf,0x30,0x96,0x00,0x82,0x20,0x08,0x82,0x01,0x08,0x82,0x20,0x08,0x0e, + 0x33,0x00,0x24,0x73,0x10,0x18,0x76,0x59,0x34,0x33,0x00,0x04,0x63,0x04,0x20,0x08, + 0x82,0xf8,0x37,0x46,0x00,0x82,0x20,0x08,0x7f,0x33,0x00,0x00,0xe3,0x0d,0x0c,0x66, + 0x51,0x40,0x2c,0x0a,0xe8,0x63,0xc1,0x02,0x1f,0x0b,0x16,0xf9,0x0c,0x32,0x04,0xcb, + 0x33,0xc8,0x10,0x2c,0xd1,0x6c,0xc3,0x52,0x01,0xb3,0x0d,0x41,0x15,0xcc,0x36,0x04, + 0x83,0x90,0x41,0x40,0x0c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x5b,0x86,0x20,0x00, + 0x85,0x2d,0x83,0x30,0x84,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _snk_fs_bytecode_metal_ios[2893] = { + 0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x4d,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd5,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdd,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x70,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0xe9,0x4a,0xc6,0xd1,0xba,0x33,0x39, + 0x67,0xdf,0xcd,0xe3,0x58,0xde,0xd4,0xb8,0x81,0x4c,0x26,0x44,0xbc,0x9d,0x14,0xdc, + 0xa9,0x02,0x93,0x08,0x5a,0xcd,0x66,0x1c,0x30,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0x45,0x4e,0x44,0x54,0x04,0x00,0x00, + 0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17, + 0x0b,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x58,0x0a,0x00,0x00,0xff,0xff,0xff, + 0xff,0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0x93,0x02,0x00,0x00,0x0b,0x82,0x20, + 0x00,0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04, + 0x49,0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b, + 0x62,0x80,0x14,0x45,0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18, + 0x49,0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21, + 0x72,0x24,0x07,0xc8,0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00, + 0x00,0x51,0x18,0x00,0x00,0x89,0x00,0x00,0x00,0x1b,0xcc,0x25,0xf8,0xff,0xff,0xff, + 0xff,0x01,0x60,0x00,0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07, + 0x7a,0x60,0x87,0x7c,0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72, + 0x68,0x03,0x72,0x48,0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90, + 0x07,0x7a,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc, + 0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81, + 0x1d,0xca,0xa1,0x0d,0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d, + 0xd8,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87, + 0x79,0x98,0x87,0x36,0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36, + 0x30,0x07,0x78,0x68,0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c, + 0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0, + 0xe1,0x1d,0xd2,0xc1,0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1, + 0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90, + 0x87,0x70,0x68,0x87,0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07, + 0x79,0x68,0x83,0x72,0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36, + 0x60,0x87,0x72,0x08,0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30, + 0x87,0x79,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8, + 0x41,0x1e,0xea,0xa1,0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01, + 0x1e,0xda,0x80,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60, + 0x87,0x79,0x28,0x07,0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1, + 0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c, + 0xc8,0xa1,0x0d,0xf4,0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda, + 0xa0,0x1d,0xc2,0x81,0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77, + 0x78,0x87,0x36,0xa0,0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68, + 0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6, + 0x81,0x1e,0xc2,0x61,0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61, + 0x1c,0xe8,0xe1,0x1d,0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e, + 0xda,0x60,0x1e,0xd2,0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa8,0x07,0x77,0x98,0x87, + 0x70,0x30,0x87,0x72,0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74, + 0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0xa2,0x1e,0xe6,0xa1,0x1c,0xda,0x60,0x1e, + 0xde,0xc1,0x1c,0xe8,0xa1,0x0d,0xcc,0x81,0x1d,0xde,0x21,0x1c,0xe8,0x01,0x30,0x87, + 0x70,0x60,0x87,0x79,0x28,0x07,0x60,0x83,0x21,0x0c,0xc0,0x02,0x54,0x1b,0x8c,0x81, + 0x00,0x16,0xa0,0xda,0x80,0x10,0xff,0xff,0xff,0xff,0x3f,0x00,0x0c,0x20,0x01,0xd5, + 0x06,0xa3,0x08,0x80,0x05,0xa8,0x36,0x18,0x86,0x00,0x2c,0x40,0x05,0x49,0x18,0x00, + 0x00,0x03,0x00,0x00,0x00,0x13,0x86,0x40,0x18,0x26,0x0c,0x44,0x61,0x00,0x00,0x00, + 0x00,0x89,0x20,0x00,0x00,0x20,0x00,0x00,0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85, + 0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a, + 0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x48,0x33,0x00,0xc3,0x08,0x04,0x70,0x90,0x34,0x45, + 0x94,0x30,0xf9,0x0c,0x80,0x34,0xf4,0xef,0x50,0x13,0x0a,0xc2,0x30,0x82,0x00,0x1c, + 0x25,0x4d,0x11,0x25,0x4c,0xfe,0x3f,0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0xff,0x34, + 0x46,0x00,0x0c,0x22,0x10,0xc1,0x45,0xd2,0x14,0x51,0xc2,0xe4,0xff,0x12,0xc0,0x3c, + 0x0b,0x11,0xfd,0xd3,0x18,0x01,0x30,0x88,0x60,0x08,0xa5,0x10,0x23,0x94,0x43,0x68, + 0x8e,0x20,0x98,0x23,0x00,0x83,0x61,0x04,0x61,0x29,0x48,0x28,0x67,0x28,0xa6,0x00, + 0xb5,0x81,0x80,0x14,0x58,0x23,0x00,0x00,0x00,0x13,0xa8,0x70,0x48,0x07,0x79,0xb0, + 0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68,0x83,0x74,0x78,0x87, + 0x79,0xc8,0x03,0x37,0x80,0x03,0x37,0x80,0x83,0x0d,0xb7,0x51,0x0e,0x6d,0x00,0x0f, + 0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe9, + 0x10,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e,0x78,0xa0,0x07,0x78,0xa0, + 0x07,0x78,0xd0,0x06,0xe9,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07, + 0x76,0xd0,0x06,0xe9,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72, + 0xd0,0x06,0xe9,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0, + 0x06,0xe6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06, + 0xe6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6, + 0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xf6,0x20, + 0x07,0x74,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x30,0x07, + 0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x40,0x07,0x78, + 0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x60,0x07,0x74,0xa0, + 0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x90,0x07,0x76,0xa0,0x07, + 0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x72, + 0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60, + 0x0f,0x71,0x90,0x07,0x72,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07, + 0x76,0xd0,0x06,0xf6,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a, + 0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10, + 0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xd0,0x06,0xf6,0x10,0x07,0x70,0x20,0x07, + 0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07,0x70,0x20,0x07,0x74, + 0xd0,0x06,0xee,0x80,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x73,0x20,0x07,0x43,0x98, + 0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x21,0x8c,0x03,0x04,0x80,0x00,0x00, + 0x00,0x00,0x00,0x40,0x16,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x32,0x1e,0x98, + 0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0x5a,0x23,0x00,0x25, + 0x50,0x04,0x85,0x50,0x10,0x65,0x40,0x70,0x2c,0xa1,0x29,0x00,0x00,0x79,0x18,0x00, + 0x00,0xd9,0x00,0x00,0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32, + 0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x42,0x3c,0x00,0x84,0x50,0xb9,0x1b,0x43,0x0b, + 0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62,0x2c,0xc3,0x23,0x2c,0x05,0xd9,0x20,0x08, + 0x0e,0x8e,0xad,0x0c,0x84,0x89,0xc9,0xaa,0x09,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd, + 0x0d,0x64,0x26,0x07,0x46,0xc6,0xc5,0xe6,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd, + 0xac,0xac,0x65,0x26,0x07,0x46,0xc6,0xc5,0xe6,0x26,0x65,0x88,0xf0,0x10,0x43,0x8c, + 0x65,0x58,0x8c,0x45,0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x79,0x8e,0x65,0x58, + 0x84,0x45,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42, + 0x56,0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44, + 0x78,0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66, + 0x61,0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43, + 0x84,0x67,0x21,0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9, + 0x98,0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d, + 0xa1,0x7d,0x95,0xb9,0x85,0x89,0xb1,0x95,0x0d,0x11,0x9e,0x86,0x61,0x10,0x96,0x26, + 0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0xe2,0x16,0x46,0x97,0x66,0x57,0xf6, + 0x45,0xf6,0x56,0x27,0xc6,0x56,0xf6,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44, + 0x78,0x1e,0x92,0x41,0x58,0x9a,0x9c,0xcb,0xd8,0x5b,0x1b,0x5c,0x1a,0x5b,0x99,0x8b, + 0x5b,0x18,0x5d,0x9a,0x5d,0xd9,0x17,0xdb,0x9b,0xdb,0xd9,0x17,0xdb,0x9b,0xdb,0xd9, + 0x17,0x59,0xda,0x5c,0x98,0x18,0x5b,0xd9,0x10,0xe1,0x89,0x78,0x06,0x61,0x69,0x72, + 0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x6e,0x61,0x74,0x69,0x76,0x65,0x5f, + 0x77,0x69,0x64,0x65,0x5f,0x76,0x65,0x63,0x74,0x6f,0x72,0x73,0x5f,0x64,0x69,0x73, + 0x61,0x62,0x6c,0x65,0x43,0x84,0x67,0x62,0x14,0x96,0x26,0xe7,0x22,0x57,0xe6,0x46, + 0x56,0x26,0xf7,0x45,0x17,0x26,0x77,0x56,0x46,0xc7,0x28,0x2c,0x4d,0xce,0x25,0x4c, + 0xee,0xec,0x8b,0x2e,0x0f,0xae,0xec,0xcb,0x2d,0xac,0xad,0x8c,0x86,0x19,0xdb,0x5b, + 0x18,0x1d,0x0d,0x99,0xb0,0x34,0x39,0x97,0x30,0xb9,0xb3,0x2f,0xb7,0xb0,0xb6,0x32, + 0x2a,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x43,0x98,0xa7,0x5a,0x84, + 0xc7,0x7a,0xae,0x07,0x7b,0xb2,0x21,0xc2,0xa3,0x51,0x0a,0x4b,0x93,0x73,0x31,0x93, + 0x0b,0x3b,0x6b,0x2b,0x73,0xa3,0xfb,0x4a,0x73,0x83,0xab,0xa3,0xe3,0x52,0x37,0x57, + 0x26,0x87,0xc2,0xf6,0x36,0xe6,0x06,0x93,0x42,0x25,0x2c,0x4d,0xce,0x65,0xac,0xcc, + 0x8d,0xae,0x4c,0x8e,0x4f,0x58,0x9a,0x9c,0x0b,0x5c,0x99,0xdc,0x1c,0x5c,0xd9,0x18, + 0x5d,0x9a,0x5d,0x19,0x0d,0x33,0xb6,0xb7,0x30,0x3a,0x19,0x0a,0x75,0x76,0x43,0xa4, + 0x45,0x78,0xb8,0xa7,0x7b,0xbc,0xe7,0x7b,0xac,0x07,0x0c,0x1e,0xec,0x09,0x03,0x2e, + 0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x2c,0xc6,0xde,0xd8,0xde, + 0xe4,0x86,0x48,0xcb,0xf0,0x70,0xcf,0x18,0x3c,0xde,0xf3,0x3d,0xd6,0x73,0x3d,0xd8, + 0x43,0x06,0x5c,0xc2,0xd2,0xe4,0x5c,0xe8,0xca,0xf0,0xe8,0xea,0xe4,0xca,0x28,0x85, + 0xa5,0xc9,0xb9,0xb0,0xbd,0x8d,0x85,0xd1,0xa5,0xbd,0xb9,0x7d,0xa5,0xb9,0x91,0x95, + 0xe1,0x51,0x09,0x4b,0x93,0x73,0x99,0x0b,0x6b,0x83,0x63,0x2b,0x23,0x46,0x57,0x86, + 0x47,0x57,0x27,0x57,0x26,0x43,0xc6,0x63,0xc6,0xf6,0x16,0x46,0xc7,0x02,0x32,0x17, + 0xd6,0x06,0xc7,0x56,0xe6,0xc3,0x81,0xae,0x0c,0x6f,0x08,0xb5,0x10,0x8f,0x19,0x3c, + 0x67,0xb0,0x08,0xcb,0xf0,0xa0,0xc1,0x63,0x3d,0x69,0xf0,0x60,0x8f,0x1a,0x70,0x09, + 0x4b,0x93,0x73,0x99,0x0b,0x6b,0x83,0x63,0x2b,0x93,0xe3,0x31,0x17,0xd6,0x06,0xc7, + 0x56,0x26,0x47,0x84,0xae,0x0c,0x6f,0xaa,0x0d,0x8e,0x4d,0x6e,0x88,0xb4,0x1c,0x0f, + 0x1b,0x3c,0x67,0xb0,0x08,0xcb,0xf0,0x58,0x4f,0x1b,0x3c,0xd8,0xe3,0x06,0x43,0x90, + 0x47,0x0c,0x9e,0x32,0x78,0xd6,0xe0,0x79,0x83,0x21,0x46,0x02,0x3c,0xdb,0x03,0x07, + 0x23,0x22,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x77,0x20,0x87,0x7a,0x60, + 0x87,0x72,0x70,0x03,0x73,0x60,0x87,0x70,0x38,0x87,0x79,0x98,0x22,0x04,0xc3,0x08, + 0x85,0x1d,0xd8,0xc1,0x1e,0xda,0xc1,0x0d,0xd2,0x81,0x1c,0xca,0xc1,0x1d,0xe8,0x61, + 0x4a,0x50,0x8c,0x58,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xec,0xa1,0x1c,0xe4,0x61,0x1e, + 0xd2,0xe1,0x1d,0xdc,0x61,0x4a,0x60,0x8c,0xa0,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xd8, + 0x21,0x1c,0xdc,0xe1,0x1c,0xea,0x21,0x1c,0xce,0xa1,0x1c,0x7e,0xc1,0x1e,0xca,0x41, + 0x1e,0xe6,0x21,0x1d,0xde,0xc1,0x1d,0xa6,0x04,0xc8,0x88,0x29,0x1c,0xd2,0x41,0x1e, + 0xdc,0x60,0x1c,0xde,0xa1,0x1d,0xe0,0x21,0x1d,0xd8,0xa1,0x1c,0x7e,0xe1,0x1d,0xe0, + 0x81,0x1e,0xd2,0xe1,0x1d,0xdc,0x61,0x1e,0xa6,0x18,0x0a,0xe3,0x40,0x12,0x35,0x82, + 0x09,0x87,0x74,0x90,0x07,0x37,0x30,0x07,0x79,0x08,0x87,0x73,0x68,0x87,0x72,0x70, + 0x07,0x7a,0x98,0x12,0xc4,0x01,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0x6d,0x00,0x00, + 0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84, + 0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed, + 0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66, + 0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c, + 0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70, + 0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90, + 0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4, + 0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83, + 0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14, + 0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70, + 0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80, + 0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0, + 0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1, + 0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d, + 0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39, + 0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc, + 0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70, + 0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53, + 0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e, + 0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c, + 0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38, + 0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37, + 0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33, + 0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4, + 0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0, + 0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3, + 0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07, + 0x72,0x00,0x00,0x00,0x00,0x71,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x16,0xb0,0x01, + 0x48,0xe4,0x4b,0x00,0xf3,0x2c,0xc4,0x3f,0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0x7e, + 0x85,0x17,0xb7,0x6d,0x00,0x05,0x03,0x20,0x0d,0x0d,0x00,0x00,0x00,0x61,0x20,0x00, + 0x00,0x0c,0x00,0x00,0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x04,0x00,0x00, + 0x00,0xc4,0x46,0x00,0x48,0x8d,0x00,0xd4,0x00,0x89,0x19,0x00,0x02,0x23,0x00,0x00, + 0x00,0x23,0x06,0x8a,0x10,0x44,0x87,0x91,0x0c,0x05,0x11,0x58,0x90,0xc8,0x67,0xb6, + 0x81,0x08,0x80,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const char _snk_vs_source_metal_sim[720] = { + 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, + 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, + 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, + 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, + 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x76, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x32,0x20,0x64,0x69,0x73,0x70,0x5f,0x73,0x69,0x7a,0x65,0x3b, + 0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e, + 0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x32,0x20,0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63, + 0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c, + 0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20, + 0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b, + 0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69, + 0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70, + 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62, + 0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x20,0x5b, + 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x30,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x32, + 0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31, + 0x35,0x20,0x22,0x22,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e, + 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e, + 0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f, + 0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x76, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x32,0x33,0x20,0x5b,0x5b, + 0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74, + 0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x35,0x20, + 0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f, + 0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28, + 0x28,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x2f,0x20, + 0x5f,0x32,0x33,0x2e,0x64,0x69,0x73,0x70,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2d, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2a,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x32,0x2e,0x30,0x2c,0x20,0x2d,0x32,0x2e,0x30, + 0x29,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x23,0x6c, + 0x69,0x6e,0x65,0x20,0x31,0x36,0x20,0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75, + 0x74,0x2e,0x75,0x76,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f, + 0x72,0x64,0x30,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x37,0x20,0x22,0x22, + 0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, + 0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +static const char _snk_fs_source_metal_sim[470] = { + 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, + 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, + 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, + 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, + 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d, + 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, + 0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20, + 0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29, + 0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63, + 0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e, + 0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20, + 0x31,0x31,0x20,0x22,0x22,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d, + 0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61, + 0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, + 0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x74,0x65,0x78,0x20,0x5b,0x5b, + 0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61, + 0x6d,0x70,0x6c,0x65,0x72,0x20,0x74,0x65,0x78,0x53,0x6d,0x70,0x6c,0x72,0x20,0x5b, + 0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f, + 0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31, + 0x31,0x20,0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61, + 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x2e,0x73,0x61, + 0x6d,0x70,0x6c,0x65,0x28,0x74,0x65,0x78,0x53,0x6d,0x70,0x6c,0x72,0x2c,0x20,0x69, + 0x6e,0x2e,0x75,0x76,0x29,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74, + 0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_D3D11) +static const uint8_t _snk_vs_bytecode_hlsl4[892] = { + 0x44,0x58,0x42,0x43,0x05,0xf8,0x0b,0x1e,0x7a,0x13,0x49,0x07,0x83,0x60,0x2e,0x88, + 0x06,0xfa,0x10,0x2e,0x01,0x00,0x00,0x00,0x7c,0x03,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x60,0x01,0x00,0x00,0xd0,0x01,0x00,0x00, + 0x00,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff, + 0x10,0x81,0x00,0x00,0x98,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, + 0x73,0x00,0xab,0xab,0x3c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x88,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x5f,0x32,0x33,0x5f,0x64,0x69,0x73,0x70,0x5f,0x73,0x69,0x7a, + 0x65,0x00,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52, + 0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f, + 0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x31,0x00,0x49,0x53,0x47,0x4e, + 0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x03,0x00,0x00,0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x50,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab, + 0x4f,0x53,0x47,0x4e,0x68,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00, + 0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44, + 0x00,0x53,0x56,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0xab,0xab,0xab, + 0x53,0x48,0x44,0x52,0x28,0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x4a,0x00,0x00,0x00, + 0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x5f,0x00,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03, + 0x32,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00, + 0x02,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x67,0x00,0x00,0x04, + 0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02, + 0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00, + 0x01,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x08, + 0x32,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a, + 0x32,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x02,0x40,0x00,0x00,0x00,0x00,0x00,0xbf,0x00,0x00,0x00,0xbf,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x0a,0x32,0x20,0x10,0x00,0x02,0x00,0x00,0x00, + 0x46,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x00,0x00,0x00,0x00,0x00,0x40, + 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x08, + 0xc2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x02,0x40,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x80,0x3f,0x3e,0x00,0x00,0x01, + 0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,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,0x00, +}; +static const uint8_t _snk_fs_bytecode_hlsl4[620] = { + 0x44,0x58,0x42,0x43,0xd1,0x93,0x1f,0x1b,0x9d,0x70,0x90,0xeb,0xc2,0x7c,0x26,0x07, + 0xdf,0x52,0xda,0x49,0x01,0x00,0x00,0x00,0x6c,0x02,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0xd4,0x00,0x00,0x00,0x20,0x01,0x00,0x00,0x54,0x01,0x00,0x00, + 0xf0,0x01,0x00,0x00,0x52,0x44,0x45,0x46,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff, + 0x10,0x81,0x00,0x00,0x6d,0x00,0x00,0x00,0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x69,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x5f,0x74,0x65,0x78,0x5f,0x73,0x61,0x6d, + 0x70,0x6c,0x65,0x72,0x00,0x74,0x65,0x78,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f, + 0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64, + 0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x31, + 0x00,0xab,0xab,0xab,0x49,0x53,0x47,0x4e,0x44,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x38,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab, + 0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x61,0x72,0x67,0x65, + 0x74,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x94,0x00,0x00,0x00,0x40,0x00,0x00,0x00, + 0x25,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00, + 0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00, + 0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03, + 0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00, + 0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x45,0x00,0x00,0x09, + 0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00, + 0x38,0x00,0x00,0x07,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01, + 0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,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, + 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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const char _snk_fs_source_hlsl4[641] = { + 0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x44,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x34, + 0x3e,0x20,0x74,0x65,0x78,0x20,0x3a,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72, + 0x28,0x74,0x30,0x29,0x3b,0x0a,0x53,0x61,0x6d,0x70,0x6c,0x65,0x72,0x53,0x74,0x61, + 0x74,0x65,0x20,0x5f,0x74,0x65,0x78,0x5f,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20, + 0x3a,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x28,0x73,0x30,0x29,0x3b,0x0a, + 0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66, + 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69, + 0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x3b,0x0a,0x73,0x74,0x61, + 0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72, + 0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x53,0x50,0x49,0x52,0x56,0x5f, + 0x43,0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e,0x70,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x3a,0x20,0x54,0x45, + 0x58,0x43,0x4f,0x4f,0x52,0x44,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3a,0x20,0x54,0x45,0x58,0x43, + 0x4f,0x4f,0x52,0x44,0x31,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63, + 0x74,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75, + 0x74,0x70,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3a,0x20,0x53, + 0x56,0x5f,0x54,0x61,0x72,0x67,0x65,0x74,0x30,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x23, + 0x6c,0x69,0x6e,0x65,0x20,0x31,0x31,0x20,0x22,0x22,0x0a,0x76,0x6f,0x69,0x64,0x20, + 0x66,0x72,0x61,0x67,0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x23,0x6c, + 0x69,0x6e,0x65,0x20,0x31,0x31,0x20,0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x2e,0x53, + 0x61,0x6d,0x70,0x6c,0x65,0x28,0x5f,0x74,0x65,0x78,0x5f,0x73,0x61,0x6d,0x70,0x6c, + 0x65,0x72,0x2c,0x20,0x75,0x76,0x29,0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b, + 0x0a,0x7d,0x0a,0x0a,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f, + 0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x28,0x53,0x50,0x49,0x52, + 0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e,0x70,0x75,0x74,0x20,0x73,0x74, + 0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x75,0x76,0x20,0x3d,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75, + 0x74,0x2e,0x75,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20, + 0x3d,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x2e,0x63,0x6f, + 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x6d,0x61, + 0x69,0x6e,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x53,0x50,0x49,0x52,0x56,0x5f, + 0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x73,0x74,0x61, + 0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73, + 0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x66,0x72,0x61,0x67, + 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, + 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a,0x7d,0x0a, + 0x00, +}; +#elif defined(SOKOL_WGPU) +static const uint8_t _snk_vs_bytecode_wgpu[1520] = { + 0x03,0x02,0x23,0x07,0x00,0x00,0x01,0x00,0x08,0x00,0x08,0x00,0x27,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x11,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x0b,0x00,0x06,0x00, + 0x02,0x00,0x00,0x00,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30, + 0x00,0x00,0x00,0x00,0x0e,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, + 0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x2a,0x00,0x00,0x00, + 0x2b,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x32,0x00,0x00,0x00, + 0x33,0x00,0x00,0x00,0x07,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x37,0x00,0x02,0x00,0x00,0x00,0xc2,0x01,0x00,0x00,0x01,0x00,0x00,0x00, + 0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65, + 0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x76,0x75,0x6c,0x6b, + 0x61,0x6e,0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c, + 0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e, + 0x74,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c,0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f, + 0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64, + 0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x2d,0x65,0x6e,0x76,0x20,0x76,0x75,0x6c,0x6b, + 0x61,0x6e,0x31,0x2e,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c, + 0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x74,0x61,0x72,0x67,0x65, + 0x74,0x2d,0x65,0x6e,0x76,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c,0x0a,0x2f,0x2f,0x20, + 0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65, + 0x64,0x20,0x65,0x6e,0x74,0x72,0x79,0x2d,0x70,0x6f,0x69,0x6e,0x74,0x20,0x6d,0x61, + 0x69,0x6e,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x0a,0x00,0x05,0x00,0x04,0x00, + 0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x00,0x05,0x00,0x06,0x00, + 0x0c,0x00,0x00,0x00,0x67,0x6c,0x5f,0x50,0x65,0x72,0x56,0x65,0x72,0x74,0x65,0x78, + 0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x06,0x00,0x07,0x00, + 0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x67,0x6c,0x5f,0x50,0x6f,0x69,0x6e,0x74, + 0x53,0x69,0x7a,0x65,0x00,0x00,0x00,0x00,0x06,0x00,0x07,0x00,0x0c,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x67,0x6c,0x5f,0x43,0x6c,0x69,0x70,0x44,0x69,0x73,0x74,0x61, + 0x6e,0x63,0x65,0x00,0x06,0x00,0x07,0x00,0x0c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x67,0x6c,0x5f,0x43,0x75,0x6c,0x6c,0x44,0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x00, + 0x05,0x00,0x03,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x05,0x00, + 0x13,0x00,0x00,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x00,0x00,0x00, + 0x05,0x00,0x05,0x00,0x15,0x00,0x00,0x00,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, + 0x73,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x64,0x69,0x73,0x70,0x5f,0x73,0x69,0x7a,0x65,0x00,0x00,0x00,0x05,0x00,0x03,0x00, + 0x17,0x00,0x00,0x00,0x5f,0x32,0x33,0x00,0x05,0x00,0x03,0x00,0x2a,0x00,0x00,0x00, + 0x75,0x76,0x00,0x00,0x05,0x00,0x05,0x00,0x2b,0x00,0x00,0x00,0x74,0x65,0x78,0x63, + 0x6f,0x6f,0x72,0x64,0x30,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x2d,0x00,0x00,0x00, + 0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x2f,0x00,0x00,0x00, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x00,0x00,0x05,0x00,0x05,0x00,0x32,0x00,0x00,0x00, + 0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x44,0x00,0x05,0x00,0x06,0x00, + 0x33,0x00,0x00,0x00,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49, + 0x44,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x05,0x00,0x0c,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48,0x00,0x05,0x00, + 0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x48,0x00,0x05,0x00,0x0c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x47,0x00,0x03,0x00,0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x13,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x48,0x00,0x05,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x47,0x00,0x03,0x00,0x15,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x17,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x17,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x2a,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x2b,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x2d,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x2f,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x32,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x05,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x33,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x06,0x00,0x00,0x00, + 0x13,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x21,0x00,0x03,0x00,0x04,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x16,0x00,0x03,0x00,0x07,0x00,0x00,0x00,0x20,0x00,0x00,0x00, + 0x17,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x15,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x2b,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x1c,0x00,0x04,0x00,0x0b,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0a,0x00,0x00,0x00, + 0x1e,0x00,0x06,0x00,0x0c,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x07,0x00,0x00,0x00, + 0x0b,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x0d,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x0d,0x00,0x00,0x00, + 0x0e,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x15,0x00,0x04,0x00,0x0f,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x0f,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0x00,0x04,0x00,0x11,0x00,0x00,0x00, + 0x07,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x12,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x12,0x00,0x00,0x00, + 0x13,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1e,0x00,0x03,0x00,0x15,0x00,0x00,0x00, + 0x11,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x16,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x15,0x00,0x00,0x00,0x3b,0x00,0x04,0x00,0x16,0x00,0x00,0x00,0x17,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x11,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x1c,0x00,0x00,0x00, + 0x00,0x00,0x00,0x3f,0x2c,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x1d,0x00,0x00,0x00, + 0x1c,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x2b,0x00,0x04,0x00,0x07,0x00,0x00,0x00, + 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x2b,0x00,0x04,0x00,0x07,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x2c,0x00,0x05,0x00,0x11,0x00,0x00,0x00, + 0x21,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x2b,0x00,0x04,0x00, + 0x07,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x80,0x3f,0x20,0x00,0x04,0x00, + 0x27,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x04,0x00, + 0x29,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, + 0x29,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, + 0x12,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, + 0x27,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x04,0x00, + 0x2e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, + 0x2e,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x20,0x00,0x04,0x00, + 0x31,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, + 0x31,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3b,0x00,0x04,0x00, + 0x31,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x36,0x00,0x05,0x00, + 0x03,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0xf8,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x01,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00,0x11,0x00,0x00,0x00, + 0x14,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x41,0x00,0x05,0x00,0x18,0x00,0x00,0x00, + 0x19,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x3d,0x00,0x04,0x00, + 0x11,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x19,0x00,0x00,0x00,0x88,0x00,0x05,0x00, + 0x11,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x1a,0x00,0x00,0x00, + 0x83,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1b,0x00,0x00,0x00, + 0x1d,0x00,0x00,0x00,0x85,0x00,0x05,0x00,0x11,0x00,0x00,0x00,0x22,0x00,0x00,0x00, + 0x1e,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x51,0x00,0x05,0x00,0x07,0x00,0x00,0x00, + 0x24,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x51,0x00,0x05,0x00, + 0x07,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x50,0x00,0x07,0x00,0x08,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x24,0x00,0x00,0x00, + 0x25,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x41,0x00,0x05,0x00, + 0x27,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x3e,0x00,0x03,0x00,0x28,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x08,0x00,0x04,0x00, + 0x01,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00, + 0x11,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x3e,0x00,0x03,0x00, + 0x2a,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x01,0x00,0x00,0x00, + 0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00,0x08,0x00,0x00,0x00, + 0x30,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x3e,0x00,0x03,0x00,0x2d,0x00,0x00,0x00, + 0x30,0x00,0x00,0x00,0xfd,0x00,0x01,0x00,0x38,0x00,0x01,0x00, +}; +static const uint8_t _snk_fs_bytecode_wgpu[904] = { + 0x03,0x02,0x23,0x07,0x00,0x00,0x01,0x00,0x08,0x00,0x08,0x00,0x19,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x11,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x0b,0x00,0x06,0x00, + 0x02,0x00,0x00,0x00,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30, + 0x00,0x00,0x00,0x00,0x0e,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x00,0x08,0x00,0x04,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, + 0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x16,0x00,0x00,0x00, + 0x10,0x00,0x03,0x00,0x05,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x03,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x37,0x00,0x02,0x00,0x00,0x00, + 0xc2,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64, + 0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x63,0x6c,0x69, + 0x65,0x6e,0x74,0x20,0x76,0x75,0x6c,0x6b,0x61,0x6e,0x31,0x30,0x30,0x0a,0x2f,0x2f, + 0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73, + 0x65,0x64,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x6f,0x70,0x65,0x6e,0x67,0x6c, + 0x31,0x30,0x30,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50, + 0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x2d, + 0x65,0x6e,0x76,0x20,0x76,0x75,0x6c,0x6b,0x61,0x6e,0x31,0x2e,0x30,0x0a,0x2f,0x2f, + 0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x50,0x72,0x6f,0x63,0x65,0x73,0x73, + 0x65,0x64,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x2d,0x65,0x6e,0x76,0x20,0x6f,0x70, + 0x65,0x6e,0x67,0x6c,0x0a,0x2f,0x2f,0x20,0x4f,0x70,0x4d,0x6f,0x64,0x75,0x6c,0x65, + 0x50,0x72,0x6f,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x65,0x6e,0x74,0x72,0x79,0x2d, + 0x70,0x6f,0x69,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x0a,0x23,0x6c,0x69,0x6e,0x65, + 0x20,0x31,0x0a,0x00,0x05,0x00,0x04,0x00,0x05,0x00,0x00,0x00,0x6d,0x61,0x69,0x6e, + 0x00,0x00,0x00,0x00,0x05,0x00,0x05,0x00,0x0a,0x00,0x00,0x00,0x66,0x72,0x61,0x67, + 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x05,0x00,0x03,0x00,0x0e,0x00,0x00,0x00, + 0x74,0x65,0x78,0x00,0x05,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x75,0x76,0x00,0x00, + 0x05,0x00,0x04,0x00,0x16,0x00,0x00,0x00,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x0a,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x0e,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x12,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x47,0x00,0x04,0x00,0x16,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x13,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x21,0x00,0x03,0x00,0x04,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x16,0x00,0x03,0x00,0x07,0x00,0x00,0x00,0x20,0x00,0x00,0x00, + 0x17,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x09,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x19,0x00,0x09,0x00,0x0b,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x1b,0x00,0x03,0x00,0x0c,0x00,0x00,0x00,0x0b,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x0d,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x17,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x11,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x11,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x20,0x00,0x04,0x00,0x15,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x3b,0x00,0x04,0x00,0x15,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x36,0x00,0x05,0x00,0x03,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0xf8,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x08,0x00,0x04,0x00, + 0x01,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x00,0x04,0x00, + 0x0c,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x3d,0x00,0x04,0x00, + 0x10,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x57,0x00,0x05,0x00, + 0x08,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x13,0x00,0x00,0x00, + 0x3d,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x16,0x00,0x00,0x00, + 0x85,0x00,0x05,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x14,0x00,0x00,0x00, + 0x17,0x00,0x00,0x00,0x3e,0x00,0x03,0x00,0x0a,0x00,0x00,0x00,0x18,0x00,0x00,0x00, + 0xfd,0x00,0x01,0x00,0x38,0x00,0x01,0x00, +}; +#elif defined(SOKOL_DUMMY_BACKEND) +static const char* _snk_vs_source_dummy = ""; +static const char* _snk_fs_source_dummy = ""; +#else +#error "Please define one of SOKOL_GLCORE33, SOKOL_GLES3, SOKOL_D3D11, SOKOL_METAL, SOKOL_WGPU or SOKOL_DUMMY_BACKEND!" +#endif + +#if !defined(SOKOL_NUKLEAR_NO_SOKOL_APP) +static void _snk_clipboard_copy(nk_handle usr, const char *text, int len) { + (void)usr; + if (len == 0) { + return; + } + sapp_set_clipboard_string(text); +} + +static void _snk_clipboard_paste(nk_handle usr, struct nk_text_edit *edit) { + const char *text = sapp_get_clipboard_string(); + if (text) { + nk_textedit_paste(edit, text, nk_strlen(text)); + } + (void)usr; +} + +#if defined(__EMSCRIPTEN__) && !defined(SOKOL_DUMMY_BACKEND) +EM_JS(int, snk_js_is_osx, (void), { + if (navigator.userAgent.includes('Macintosh')) { + return 1; + } + else { + return 0; + } +}); +#endif + +static bool _snk_is_osx(void) { + #if defined(SOKOL_DUMMY_BACKEND) + return false; + #elif defined(__EMSCRIPTEN__) + return snk_js_is_osx(); + #elif defined(__APPLE__) + return true; + #else + return false; + #endif +} +#endif // !SOKOL_NUKLEAR_NO_SOKOL_APP + +SOKOL_API_IMPL void snk_setup(const snk_desc_t* desc) { + SOKOL_ASSERT(desc); + memset(&_snuklear, 0, sizeof(_snuklear)); + _snuklear.desc = *desc; + _snuklear.desc.max_vertices = _snk_def(_snuklear.desc.max_vertices, 65536); + _snuklear.desc.dpi_scale = _snk_def(_snuklear.desc.dpi_scale, 1.0f); + #if !defined(SOKOL_NUKLEAR_NO_SOKOL_APP) + _snuklear.is_osx = _snk_is_osx(); + #endif + /* can keep color_format, depth_format and sample_count as is, + since sokol_gfx.h will do its own default-value handling + */ + + /* initialize Nuklear */ + nk_bool init_res = nk_init_default(&_snuklear.ctx, 0); + SOKOL_ASSERT(1 == init_res); (void)init_res; // silence unused warning in release mode +#if !defined(SOKOL_NUKLEAR_NO_SOKOL_APP) + _snuklear.ctx.clip.copy = _snk_clipboard_copy; + _snuklear.ctx.clip.paste = _snk_clipboard_paste; +#endif + + /* create sokol-gfx resources */ + sg_push_debug_group("sokol-nuklear"); + + /* Vertex Buffer */ + _snuklear.vertex_buffer_size = (size_t)_snuklear.desc.max_vertices * sizeof(_snk_vertex_t); + _snuklear.vbuf = sg_make_buffer(&(sg_buffer_desc){ + .usage = SG_USAGE_STREAM, + .size = _snuklear.vertex_buffer_size, + .label = "sokol-nuklear-vertices" + }); + + /* Index Buffer */ + _snuklear.index_buffer_size = (size_t)_snuklear.desc.max_vertices * 3 * sizeof(uint16_t); + _snuklear.ibuf = sg_make_buffer(&(sg_buffer_desc){ + .type = SG_BUFFERTYPE_INDEXBUFFER, + .usage = SG_USAGE_STREAM, + .size = _snuklear.index_buffer_size, + .label = "sokol-nuklear-indices" + }); + + /* Font Texture */ + if (!_snuklear.desc.no_default_font) { + nk_font_atlas_init_default(&_snuklear.atlas); + nk_font_atlas_begin(&_snuklear.atlas); + int font_width = 0, font_height = 0; + const void* pixels = nk_font_atlas_bake(&_snuklear.atlas, &font_width, &font_height, NK_FONT_ATLAS_RGBA32); + SOKOL_ASSERT((font_width > 0) && (font_height > 0)); + _snuklear.img = sg_make_image(&(sg_image_desc){ + .width = font_width, + .height = font_height, + .pixel_format = SG_PIXELFORMAT_RGBA8, + .wrap_u = SG_WRAP_CLAMP_TO_EDGE, + .wrap_v = SG_WRAP_CLAMP_TO_EDGE, + .min_filter = SG_FILTER_LINEAR, + .mag_filter = SG_FILTER_LINEAR, + .data.subimage[0][0] = { + .ptr = pixels, + .size = (size_t)(font_width * font_height) * sizeof(uint32_t) + }, + .label = "sokol-nuklear-font" + }); + nk_font_atlas_end(&_snuklear.atlas, nk_handle_id((int)_snuklear.img.id), 0); + nk_font_atlas_cleanup(&_snuklear.atlas); + if (_snuklear.atlas.default_font) { + nk_style_set_font(&_snuklear.ctx, &_snuklear.atlas.default_font->handle); + } + } + + /* Shader */ + #if defined SOKOL_METAL + const char* vs_entry = "main0"; + const char* fs_entry = "main0"; + #else + const char* vs_entry = "main"; + const char* fs_entry = "main"; + #endif + sg_range vs_bytecode = { .ptr = 0, .size = 0 }; + sg_range fs_bytecode = { .ptr = 0, .size = 0 }; + const char* vs_source = 0; + const char* fs_source = 0; + #if defined(SOKOL_GLCORE33) + vs_source = _snk_vs_source_glsl330; + fs_source = _snk_fs_source_glsl330; + #elif defined(SOKOL_GLES3) + vs_source = _snk_vs_source_glsl300es; + fs_source = _snk_fs_source_glsl300es; + #elif defined(SOKOL_METAL) + switch (sg_query_backend()) { + case SG_BACKEND_METAL_MACOS: + vs_bytecode = SG_RANGE(_snk_vs_bytecode_metal_macos); + fs_bytecode = SG_RANGE(_snk_fs_bytecode_metal_macos); + break; + case SG_BACKEND_METAL_IOS: + vs_bytecode = SG_RANGE(_snk_vs_bytecode_metal_ios); + fs_bytecode = SG_RANGE(_snk_fs_bytecode_metal_ios); + break; + default: + vs_source = _snk_vs_source_metal_sim; + fs_source = _snk_fs_source_metal_sim; + break; + } + #elif defined(SOKOL_D3D11) + vs_bytecode = SG_RANGE(_snk_vs_bytecode_hlsl4); + fs_bytecode = SG_RANGE(_snk_fs_bytecode_hlsl4); + #elif defined(SOKOL_WGPU) + vs_bytecode = SG_RANGE(_snk_vs_bytecode_wgpu); + fs_bytecode = SG_RANGE(_snk_fs_bytecode_wgpu); + #else + vs_source = _snk_vs_source_dummy; + fs_source = _snk_fs_source_dummy; + #endif + + /* Shader */ + _snuklear.shd = sg_make_shader(&(sg_shader_desc){ + .attrs = { + [0] = { .name = "position", .sem_name = "TEXCOORD", .sem_index = 0 }, + [1] = { .name = "texcoord0", .sem_name = "TEXCOORD", .sem_index = 1 }, + [2] = { .name = "color0", .sem_name = "TEXCOORD", .sem_index = 2 }, + }, + .vs = { + .source = vs_source, + .bytecode = vs_bytecode, + .entry = vs_entry, + .d3d11_target = "vs_4_0", + .uniform_blocks[0] = { + .size = sizeof(_snk_vs_params_t), + .uniforms[0] = { + .name = "vs_params", + .type = SG_UNIFORMTYPE_FLOAT4, + .array_count = 1, + } + }, + }, + .fs = { + .source = fs_source, + .bytecode = fs_bytecode, + .entry = fs_entry, + .d3d11_target = "ps_4_0", + .images[0] = { .name = "tex", .image_type = SG_IMAGETYPE_2D, .sampler_type = SG_SAMPLERTYPE_FLOAT }, + }, + .label = "sokol-nuklear-shader" + }); + + /* Pipeline */ + _snuklear.pip = sg_make_pipeline(&(sg_pipeline_desc){ + .layout = { + .attrs = { + [0] = { .offset = offsetof(_snk_vertex_t, pos), .format=SG_VERTEXFORMAT_FLOAT2 }, + [1] = { .offset = offsetof(_snk_vertex_t, uv), .format=SG_VERTEXFORMAT_FLOAT2 }, + [2] = { .offset = offsetof(_snk_vertex_t, col), .format=SG_VERTEXFORMAT_UBYTE4N } + } + }, + .shader = _snuklear.shd, + .index_type = SG_INDEXTYPE_UINT16, + .sample_count = _snuklear.desc.sample_count, + .depth.pixel_format = _snuklear.desc.depth_format, + .colors[0] = { + .pixel_format = _snuklear.desc.color_format, + .write_mask = SG_COLORMASK_RGB, + .blend = { + .enabled = true, + .src_factor_rgb = SG_BLENDFACTOR_SRC_ALPHA, + .dst_factor_rgb = SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA, + } + }, + .label = "sokol-nuklear-pipeline" + }); + + sg_pop_debug_group(); +} + +SOKOL_API_IMPL void snk_shutdown(void) { + nk_free(&_snuklear.ctx); + nk_font_atlas_clear(&_snuklear.atlas); + + /* NOTE: it's valid to call the destroy funcs with SG_INVALID_ID */ + sg_push_debug_group("sokol-nuklear"); + sg_destroy_pipeline(_snuklear.pip); + sg_destroy_shader(_snuklear.shd); + sg_destroy_image(_snuklear.img); + sg_destroy_buffer(_snuklear.ibuf); + sg_destroy_buffer(_snuklear.vbuf); + sg_pop_debug_group(); +} + +SOKOL_API_IMPL struct nk_context* snk_new_frame(void) { + #if !defined(SOKOL_NUKLEAR_NO_SOKOL_APP) + nk_input_begin(&_snuklear.ctx); + if (_snuklear.mouse_did_move) { + nk_input_motion(&_snuklear.ctx, _snuklear.mouse_pos[0], _snuklear.mouse_pos[1]); + _snuklear.mouse_did_move = false; + } + if (_snuklear.mouse_did_scroll) { + nk_input_scroll(&_snuklear.ctx, nk_vec2(_snuklear.mouse_scroll[0], _snuklear.mouse_scroll[1])); + _snuklear.mouse_did_scroll = false; + } + for (int i = 0; i < NK_BUTTON_MAX; i++) { + if (_snuklear.btn_down[i]) { + _snuklear.btn_down[i] = false; + nk_input_button(&_snuklear.ctx, (enum nk_buttons)i, _snuklear.mouse_pos[0], _snuklear.mouse_pos[1], 1); + } + else if (_snuklear.btn_up[i]) { + _snuklear.btn_up[i] = false; + nk_input_button(&_snuklear.ctx, (enum nk_buttons)i, _snuklear.mouse_pos[0], _snuklear.mouse_pos[1], 0); + } + } + const size_t char_buffer_len = strlen(_snuklear.char_buffer); + if (char_buffer_len > 0) { + for (size_t i = 0; i < char_buffer_len; i++) { + nk_input_char(&_snuklear.ctx, _snuklear.char_buffer[i]); + } + memset(_snuklear.char_buffer, 0, NK_INPUT_MAX); + } + for (int i = 0; i < NK_KEY_MAX; i++) { + if (_snuklear.keys_down[i]) { + nk_input_key(&_snuklear.ctx, (enum nk_keys)i, true); + _snuklear.keys_down[i] = 0; + } + if (_snuklear.keys_up[i]) { + nk_input_key(&_snuklear.ctx, (enum nk_keys)i, false); + _snuklear.keys_up[i] = 0; + } + } + nk_input_end(&_snuklear.ctx); + #endif + + nk_clear(&_snuklear.ctx); + return &_snuklear.ctx; +} + +SOKOL_API_IMPL void snk_render(int width, int height) { + static const struct nk_draw_vertex_layout_element vertex_layout[] = { + {NK_VERTEX_POSITION, NK_FORMAT_FLOAT, NK_OFFSETOF(struct _snk_vertex_t, pos)}, + {NK_VERTEX_TEXCOORD, NK_FORMAT_FLOAT, NK_OFFSETOF(struct _snk_vertex_t, uv)}, + {NK_VERTEX_COLOR, NK_FORMAT_R8G8B8A8, NK_OFFSETOF(struct _snk_vertex_t, col)}, + {NK_VERTEX_LAYOUT_END} + }; + struct nk_convert_config cfg = { + .shape_AA = NK_ANTI_ALIASING_ON, + .line_AA = NK_ANTI_ALIASING_ON, + .vertex_layout = vertex_layout, + .vertex_size = sizeof(_snk_vertex_t), + .vertex_alignment = 4, + .circle_segment_count = 22, + .curve_segment_count = 22, + .arc_segment_count = 22, + .global_alpha = 1.0f + }; + + _snuklear.vs_params.disp_size[0] = (float)width; + _snuklear.vs_params.disp_size[1] = (float)height; + + /* Setup vert/index buffers and convert */ + struct nk_buffer cmds, verts, idx; + nk_buffer_init_default(&cmds); + nk_buffer_init_default(&verts); + nk_buffer_init_default(&idx); + nk_convert(&_snuklear.ctx, &cmds, &verts, &idx, &cfg); + + /* Check for vertex- and index-buffer overflow, assert in debug-mode, + otherwise silently skip rendering + */ + const bool vertex_buffer_overflow = nk_buffer_total(&verts) > _snuklear.vertex_buffer_size; + const bool index_buffer_overflow = nk_buffer_total(&idx) > _snuklear.index_buffer_size; + SOKOL_ASSERT(!vertex_buffer_overflow && !index_buffer_overflow); + if (!vertex_buffer_overflow && !index_buffer_overflow) { + + /* Setup rendering */ + const float dpi_scale = _snuklear.desc.dpi_scale; + const int fb_width = (int)(_snuklear.vs_params.disp_size[0] * dpi_scale); + const int fb_height = (int)(_snuklear.vs_params.disp_size[1] * dpi_scale); + sg_apply_viewport(0, 0, fb_width, fb_height, true); + sg_apply_scissor_rect(0, 0, fb_width, fb_height, true); + sg_apply_pipeline(_snuklear.pip); + sg_apply_uniforms(SG_SHADERSTAGE_VS, 0, &SG_RANGE(_snuklear.vs_params)); + sg_update_buffer(_snuklear.vbuf, &(sg_range){ nk_buffer_memory_const(&verts), nk_buffer_total(&verts) }); + sg_update_buffer(_snuklear.ibuf, &(sg_range){ nk_buffer_memory_const(&idx), nk_buffer_total(&idx) }); + + /* Iterate through the command list, rendering each one */ + const struct nk_draw_command* cmd = NULL; + int idx_offset = 0; + nk_draw_foreach(cmd, &_snuklear.ctx, &cmds) { + if (cmd->elem_count > 0) { + sg_image img; + if (cmd->texture.id != 0) { + img = (sg_image){ .id = (uint32_t) cmd->texture.id }; + } + else { + img = _snuklear.img; + } + sg_apply_bindings(&(sg_bindings){ + .fs_images[0] = img, + .vertex_buffers[0] = _snuklear.vbuf, + .index_buffer = _snuklear.ibuf, + .vertex_buffer_offsets[0] = 0, + .index_buffer_offset = idx_offset + }); + sg_apply_scissor_rectf(cmd->clip_rect.x * dpi_scale, + cmd->clip_rect.y * dpi_scale, + cmd->clip_rect.w * dpi_scale, + cmd->clip_rect.h * dpi_scale, + true); + sg_draw(0, (int)cmd->elem_count, 1); + idx_offset += (int)cmd->elem_count * (int)sizeof(uint16_t); + } + } + sg_apply_scissor_rect(0, 0, fb_width, fb_height, true); + } + + /* Cleanup */ + nk_buffer_free(&cmds); + nk_buffer_free(&verts); + nk_buffer_free(&idx); +} + +#if !defined(SOKOL_NUKLEAR_NO_SOKOL_APP) +_SOKOL_PRIVATE bool _snk_is_ctrl(uint32_t modifiers) { + if (_snuklear.is_osx) { + return 0 != (modifiers & SAPP_MODIFIER_SUPER); + } + else { + return 0 != (modifiers & SAPP_MODIFIER_CTRL); + } +} + +_SOKOL_PRIVATE void _snk_append_char(uint32_t char_code) { + size_t idx = strlen(_snuklear.char_buffer); + if (idxkey_code) { + case SAPP_KEYCODE_C: + if (_snk_is_ctrl(ev->modifiers)) { + return NK_KEY_COPY; + } else { + return NK_KEY_NONE; + } + break; + case SAPP_KEYCODE_X: + if (_snk_is_ctrl(ev->modifiers)) { + return NK_KEY_CUT; + } else { + return NK_KEY_NONE; + } + break; + case SAPP_KEYCODE_A: + if (_snk_is_ctrl(ev->modifiers)) { + return NK_KEY_TEXT_SELECT_ALL; + } else { + return NK_KEY_NONE; + } + break; + case SAPP_KEYCODE_Z: + if (_snk_is_ctrl(ev->modifiers)) { + if (ev->modifiers & SAPP_MODIFIER_SHIFT) { + return NK_KEY_TEXT_REDO; + } else { + return NK_KEY_TEXT_UNDO; + } + } else { + return NK_KEY_NONE; + } + break; + case SAPP_KEYCODE_DELETE: return NK_KEY_DEL; + case SAPP_KEYCODE_ENTER: return NK_KEY_ENTER; + case SAPP_KEYCODE_TAB: return NK_KEY_TAB; + case SAPP_KEYCODE_BACKSPACE: return NK_KEY_BACKSPACE; + case SAPP_KEYCODE_UP: return NK_KEY_UP; + case SAPP_KEYCODE_DOWN: return NK_KEY_DOWN; + case SAPP_KEYCODE_LEFT: return NK_KEY_LEFT; + case SAPP_KEYCODE_RIGHT: return NK_KEY_RIGHT; + case SAPP_KEYCODE_LEFT_SHIFT: return NK_KEY_SHIFT; + case SAPP_KEYCODE_RIGHT_SHIFT: return NK_KEY_SHIFT; + case SAPP_KEYCODE_LEFT_CONTROL: return NK_KEY_CTRL; + case SAPP_KEYCODE_RIGHT_CONTROL: return NK_KEY_CTRL; + default: + return NK_KEY_NONE; + } +} + +SOKOL_API_IMPL void snk_handle_event(const sapp_event* ev) { + const float dpi_scale = _snuklear.desc.dpi_scale; + switch (ev->type) { + case SAPP_EVENTTYPE_MOUSE_DOWN: + _snuklear.mouse_pos[0] = (int) (ev->mouse_x / dpi_scale); + _snuklear.mouse_pos[1] = (int) (ev->mouse_y / dpi_scale); + switch (ev->mouse_button) { + case SAPP_MOUSEBUTTON_LEFT: + _snuklear.btn_down[NK_BUTTON_LEFT] = true; + break; + case SAPP_MOUSEBUTTON_RIGHT: + _snuklear.btn_down[NK_BUTTON_RIGHT] = true; + break; + case SAPP_MOUSEBUTTON_MIDDLE: + _snuklear.btn_down[NK_BUTTON_MIDDLE] = true; + break; + default: + break; + } + break; + case SAPP_EVENTTYPE_MOUSE_UP: + _snuklear.mouse_pos[0] = (int) (ev->mouse_x / dpi_scale); + _snuklear.mouse_pos[1] = (int) (ev->mouse_y / dpi_scale); + switch (ev->mouse_button) { + case SAPP_MOUSEBUTTON_LEFT: + _snuklear.btn_up[NK_BUTTON_LEFT] = true; + break; + case SAPP_MOUSEBUTTON_RIGHT: + _snuklear.btn_up[NK_BUTTON_RIGHT] = true; + break; + case SAPP_MOUSEBUTTON_MIDDLE: + _snuklear.btn_up[NK_BUTTON_MIDDLE] = true; + break; + default: + break; + } + break; + case SAPP_EVENTTYPE_MOUSE_MOVE: + _snuklear.mouse_pos[0] = (int) (ev->mouse_x / dpi_scale); + _snuklear.mouse_pos[1] = (int) (ev->mouse_y / dpi_scale); + _snuklear.mouse_did_move = true; + break; + case SAPP_EVENTTYPE_MOUSE_ENTER: + case SAPP_EVENTTYPE_MOUSE_LEAVE: + for (int i = 0; i < NK_BUTTON_MAX; i++) { + _snuklear.btn_down[i] = false; + _snuklear.btn_up[i] = false; + } + break; + case SAPP_EVENTTYPE_MOUSE_SCROLL: + _snuklear.mouse_scroll[0] = ev->scroll_x; + _snuklear.mouse_scroll[1] = ev->scroll_y; + _snuklear.mouse_did_scroll = true; + break; + case SAPP_EVENTTYPE_TOUCHES_BEGAN: + _snuklear.btn_down[NK_BUTTON_LEFT] = true; + _snuklear.mouse_pos[0] = (int) (ev->touches[0].pos_x / dpi_scale); + _snuklear.mouse_pos[1] = (int) (ev->touches[0].pos_y / dpi_scale); + _snuklear.mouse_did_move = true; + break; + case SAPP_EVENTTYPE_TOUCHES_MOVED: + _snuklear.mouse_pos[0] = (int) (ev->touches[0].pos_x / dpi_scale); + _snuklear.mouse_pos[1] = (int) (ev->touches[0].pos_y / dpi_scale); + _snuklear.mouse_did_move = true; + break; + case SAPP_EVENTTYPE_TOUCHES_ENDED: + _snuklear.btn_up[NK_BUTTON_LEFT] = true; + _snuklear.mouse_pos[0] = (int) (ev->touches[0].pos_x / dpi_scale); + _snuklear.mouse_pos[1] = (int) (ev->touches[0].pos_y / dpi_scale); + _snuklear.mouse_did_move = true; + break; + case SAPP_EVENTTYPE_TOUCHES_CANCELLED: + _snuklear.btn_up[NK_BUTTON_LEFT] = false; + _snuklear.btn_down[NK_BUTTON_LEFT] = false; + break; + case SAPP_EVENTTYPE_KEY_DOWN: + /* intercept Ctrl-V, this is handled via EVENTTYPE_CLIPBOARD_PASTED */ + if (_snk_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_V)) { + break; + } + /* on web platform, don't forward Ctrl-X, Ctrl-V to the browser */ + if (_snk_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_X)) { + sapp_consume_event(); + } + if (_snk_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_C)) { + sapp_consume_event(); + } + _snuklear.keys_down[_snk_event_to_nuklearkey(ev)] = true; + break; + case SAPP_EVENTTYPE_KEY_UP: + /* intercept Ctrl-V, this is handled via EVENTTYPE_CLIPBOARD_PASTED */ + if (_snk_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_V)) { + break; + } + /* on web platform, don't forward Ctrl-X, Ctrl-V to the browser */ + if (_snk_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_X)) { + sapp_consume_event(); + } + if (_snk_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_C)) { + sapp_consume_event(); + } + _snuklear.keys_up[_snk_event_to_nuklearkey(ev)] = true; + break; + case SAPP_EVENTTYPE_CHAR: + if ((ev->char_code >= 32) && + (ev->char_code != 127) && + (0 == (ev->modifiers & (SAPP_MODIFIER_ALT|SAPP_MODIFIER_CTRL|SAPP_MODIFIER_SUPER)))) + { + _snk_append_char(ev->char_code); + } + break; + case SAPP_EVENTTYPE_CLIPBOARD_PASTED: + _snuklear.keys_down[NK_KEY_PASTE] = _snuklear.keys_up[NK_KEY_PASTE] = true; + break; + default: + break; + } +} + +SOKOL_API_IMPL nk_flags snk_edit_string(struct nk_context *ctx, nk_flags flags, char *memory, int *len, int max, nk_plugin_filter filter) { + nk_flags event = nk_edit_string(ctx, flags, memory, len, max, filter); + if ((event & NK_EDIT_ACTIVATED) && !sapp_keyboard_shown()) { + sapp_show_keyboard(true); + } + if ((event & NK_EDIT_DEACTIVATED) && sapp_keyboard_shown()) { + sapp_show_keyboard(false); + } + return event; +} +#endif // SOKOL_NUKLEAR_NO_SOKOL_APP + +#endif // SOKOL_IMPL diff --git a/source/engine/thirdparty/sokol/sokol_shape.h b/source/engine/thirdparty/sokol/sokol_shape.h new file mode 100644 index 0000000..419181f --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_shape.h @@ -0,0 +1,1437 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_SHAPE_IMPL) +#define SOKOL_SHAPE_IMPL +#endif +#ifndef SOKOL_SHAPE_INCLUDED +/* + sokol_shape.h -- create simple primitive shapes for sokol_gfx.h + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_SHAPE_IMPL + before you include this file in *one* C or C++ file to create the + implementation. + + Include the following headers before including sokol_shape.h: + + sokol_gfx.h + + ...optionally provide the following macros to override defaults: + + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_SHAPE_API_DECL- public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_SHAPE_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + + If sokol_shape.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_SHAPE_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + FEATURE OVERVIEW + ================ + sokol_shape.h creates vertices and indices for simple shapes and + builds structs which can be plugged into sokol-gfx resource + creation functions: + + The following shape types are supported: + + - plane + - cube + - sphere (with poles, not geodesic) + - cylinder + - torus (donut) + + Generated vertices look like this: + + typedef struct sshape_vertex_t { + float x, y, z; + uint32_t normal; // packed normal as BYTE4N + uint16_t u, v; // packed uv coords as USHORT2N + uint32_t color; // packed color as UBYTE4N (r,g,b,a); + } sshape_vertex_t; + + Indices are generally 16-bits wide (SG_INDEXTYPE_UINT16) and the indices + are written as triangle-lists (SG_PRIMITIVETYPE_TRIANGLES). + + EXAMPLES: + ========= + + Create multiple shapes into the same vertex- and index-buffer and + render with separate draw calls: + + https://github.com/floooh/sokol-samples/blob/master/sapp/shapes-sapp.c + + Same as the above, but pre-transform shapes and merge them into a single + shape that's rendered with a single draw call. + + https://github.com/floooh/sokol-samples/blob/master/sapp/shapes-transform-sapp.c + + STEP-BY-STEP: + ============= + + Setup an sshape_buffer_t struct with pointers to memory buffers where + generated vertices and indices will be written to: + + ```c + sshape_vertex_t vertices[512]; + uint16_t indices[4096]; + + sshape_buffer_t buf = { + .vertices = { + .buffer = SSHAPE_RANGE(vertices), + }, + .indices = { + .buffer = SSHAPE_RANGE(indices), + } + }; + ``` + + To find out how big those memory buffers must be (in case you want + to allocate dynamically) call the following functions: + + ```c + sshape_sizes_t sshape_plane_sizes(uint32_t tiles); + sshape_sizes_t sshape_box_sizes(uint32_t tiles); + sshape_sizes_t sshape_sphere_sizes(uint32_t slices, uint32_t stacks); + sshape_sizes_t sshape_cylinder_sizes(uint32_t slices, uint32_t stacks); + sshape_sizes_t sshape_torus_sizes(uint32_t sides, uint32_t rings); + ``` + + The returned sshape_sizes_t struct contains vertex- and index-counts + as well as the equivalent buffer sizes in bytes. For instance: + + ```c + sshape_sizes_t sizes = sshape_sphere_sizes(36, 12); + uint32_t num_vertices = sizes.vertices.num; + uint32_t num_indices = sizes.indices.num; + uint32_t vertex_buffer_size = sizes.vertices.size; + uint32_t index_buffer_size = sizes.indices.size; + ``` + + With the sshape_buffer_t struct that was setup earlier, call any + of the shape-builder functions: + + ```c + sshape_buffer_t sshape_build_plane(const sshape_buffer_t* buf, const sshape_plane_t* params); + sshape_buffer_t sshape_build_box(const sshape_buffer_t* buf, const sshape_box_t* params); + sshape_buffer_t sshape_build_sphere(const sshape_buffer_t* buf, const sshape_sphere_t* params); + sshape_buffer_t sshape_build_cylinder(const sshape_buffer_t* buf, const sshape_cylinder_t* params); + sshape_buffer_t sshape_build_torus(const sshape_buffer_t* buf, const sshape_torus_t* params); + ``` + + Note how the sshape_buffer_t struct is both an input value and the + return value. This can be used to append multiple shapes into the + same vertex- and index-buffers (more on this later). + + The second argument is a struct which holds creation parameters. + + For instance to build a sphere with radius 2, 36 "cake slices" and 12 stacks: + + ```c + sshape_buffer_t buf = ...; + buf = sshape_build_sphere(&buf, &(sshape_sphere_t){ + .radius = 2.0f, + .slices = 36, + .stacks = 12, + }); + ``` + + If the provided buffers are big enough to hold all generated vertices and + indices, the "valid" field in the result will be true: + + ```c + assert(buf.valid); + ``` + + The shape creation parameters have "useful defaults", refer to the + actual C struct declarations below to look up those defaults. + + You can also provide additional creation parameters, like a common vertex + color, a debug-helper to randomize colors, tell the shape builder function + to merge the new shape with the previous shape into the same draw-element-range, + or a 4x4 transform matrix to move, rotate and scale the generated vertices: + + ```c + sshape_buffer_t buf = ...; + buf = sshape_build_sphere(&buf, &(sshape_sphere_t){ + .radius = 2.0f, + .slices = 36, + .stacks = 12, + // merge with previous shape into a single element-range + .merge = true, + // set vertex color to red+opaque + .color = sshape_color_4f(1.0f, 0.0f, 0.0f, 1.0f), + // set position to y = 2.0 + .transform = { + .m = { + { 1.0f, 0.0f, 0.0f, 0.0f }, + { 0.0f, 1.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 1.0f, 0.0f }, + { 0.0f, 2.0f, 0.0f, 1.0f }, + } + } + }); + assert(buf.valid); + ``` + + The following helper functions can be used to build a packed + color value or to convert from external matrix types: + + ```c + uint32_t sshape_color_4f(float r, float g, float b, float a); + uint32_t sshape_color_3f(float r, float g, float b); + uint32_t sshape_color_4b(uint8_t r, uint8_t g, uint8_t b, uint8_t a); + uint32_t sshape_color_3b(uint8_t r, uint8_t g, uint8_t b); + sshape_mat4_t sshape_mat4(const float m[16]); + sshape_mat4_t sshape_mat4_transpose(const float m[16]); + ``` + + After the shape builder function has been called, the following functions + are used to extract the build result for plugging into sokol_gfx.h: + + ```c + sshape_element_range_t sshape_element_range(const sshape_buffer_t* buf); + sg_buffer_desc sshape_vertex_buffer_desc(const sshape_buffer_t* buf); + sg_buffer_desc sshape_index_buffer_desc(const sshape_buffer_t* buf); + sg_buffer_layout_desc sshape_buffer_layout_desc(void); + sg_vertex_attr_desc sshape_position_attr_desc(void); + sg_vertex_attr_desc sshape_normal_attr_desc(void); + sg_vertex_attr_desc sshape_texcoord_attr_desc(void); + sg_vertex_attr_desc sshape_color_attr_desc(void); + ``` + + The sshape_element_range_t struct contains the base-index and number of + indices which can be plugged into the sg_draw() call: + + ```c + sshape_element_range_t elms = sshape_element_range(&buf); + ... + sg_draw(elms.base_element, elms.num_elements, 1); + ``` + + To create sokol-gfx vertex- and index-buffers from the generated + shape data: + + ```c + // create sokol-gfx vertex buffer + sg_buffer_desc vbuf_desc = sshape_vertex_buffer_desc(&buf); + sg_buffer vbuf = sg_make_buffer(&vbuf_desc); + + // create sokol-gfx index buffer + sg_buffer_desc ibuf_desc = sshape_index_buffer_desc(&buf); + sg_buffer ibuf = sg_make_buffer(&ibuf_desc); + ``` + + The remaining functions are used to populate the vertex-layout item + in sg_pipeline_desc, note that these functions don't depend on the + created geometry, they always return the same result: + + ```c + sg_pipeline pip = sg_make_pipeline(&(sg_pipeline_desc){ + .layout = { + .buffers[0] = sshape_buffer_layout_desc(), + .attrs = { + [0] = sshape_position_attr_desc(), + [1] = ssape_normal_attr_desc(), + [2] = sshape_texcoord_attr_desc(), + [3] = sshape_color_attr_desc() + } + }, + ... + }); + ``` + + Note that you don't have to use all generated vertex attributes in the + pipeline's vertex layout, the sg_buffer_layout_desc struct returned + by sshape_buffer_layout_desc() contains the correct vertex stride + to skip vertex components. + + WRITING MULTIPLE SHAPES INTO THE SAME BUFFER + ============================================ + You can merge multiple shapes into the same vertex- and + index-buffers and either render them as a single shape, or + in separate draw calls. + + To build a single shape made of two cubes which can be rendered + in a single draw-call: + + ``` + sshape_vertex_t vertices[128]; + uint16_t indices[16]; + + sshape_buffer_t buf = { + .vertices.buffer = SSHAPE_RANGE(vertices), + .indices.buffer = SSHAPE_RANGE(indices) + }; + + // first cube at pos x=-2.0 (with default size of 1x1x1) + buf = sshape_build_cube(&buf, &(sshape_box_t){ + .transform = { + .m = { + { 1.0f, 0.0f, 0.0f, 0.0f }, + { 0.0f, 1.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 1.0f, 0.0f }, + {-2.0f, 0.0f, 0.0f, 1.0f }, + } + } + }); + // ...and append another cube at pos pos=+1.0 + // NOTE the .merge = true, this tells the shape builder + // function to not advance the current shape start offset + buf = sshape_build_cube(&buf, &(sshape_box_t){ + .merge = true, + .transform = { + .m = { + { 1.0f, 0.0f, 0.0f, 0.0f }, + { 0.0f, 1.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 1.0f, 0.0f }, + {-2.0f, 0.0f, 0.0f, 1.0f }, + } + } + }); + assert(buf.valid); + + // skipping buffer- and pipeline-creation... + + sshape_element_range_t elms = sshape_element_range(&buf); + sg_draw(elms.base_element, elms.num_elements, 1); + ``` + + To render the two cubes in separate draw-calls, the element-ranges used + in the sg_draw() calls must be captured right after calling the + builder-functions: + + ```c + sshape_vertex_t vertices[128]; + uint16_t indices[16]; + sshape_buffer_t buf = { + .vertices.buffer = SSHAPE_RANGE(vertices), + .indices.buffer = SSHAPE_RANGE(indices) + }; + + // build a red cube... + buf = sshape_build_cube(&buf, &(sshape_box_t){ + .color = sshape_color_3b(255, 0, 0) + }); + sshape_element_range_t red_cube = sshape_element_range(&buf); + + // append a green cube to the same vertex-/index-buffer: + buf = sshape_build_cube(&bud, &sshape_box_t){ + .color = sshape_color_3b(0, 255, 0); + }); + sshape_element_range_t green_cube = sshape_element_range(&buf); + + // skipping buffer- and pipeline-creation... + + sg_draw(red_cube.base_element, red_cube.num_elements, 1); + sg_draw(green_cube.base_element, green_cube.num_elements, 1); + ``` + + ...that's about all :) + + LICENSE + ======= + zlib/libpng license + + Copyright (c) 2020 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_SHAPE_INCLUDED +#include // size_t, offsetof +#include +#include + +#if !defined(SOKOL_GFX_INCLUDED) +#error "Please include sokol_gfx.h before sokol_shape.h" +#endif + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_SHAPE_API_DECL) +#define SOKOL_SHAPE_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_SHAPE_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_SHAPE_IMPL) +#define SOKOL_SHAPE_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_SHAPE_API_DECL __declspec(dllimport) +#else +#define SOKOL_SHAPE_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + sshape_range is a pointer-size-pair struct used to pass memory + blobs into sokol-shape. When initialized from a value type + (array or struct), use the SSHAPE_RANGE() macro to build + an sshape_range struct. +*/ +typedef struct sshape_range { + const void* ptr; + size_t size; +} sshape_range; + +// disabling this for every includer isn't great, but the warning is also quite pointless +#if defined(_MSC_VER) +#pragma warning(disable:4221) /* /W4 only: nonstandard extension used: 'x': cannot be initialized using address of automatic variable 'y' */ +#endif +#if defined(__cplusplus) +#define SSHAPE_RANGE(x) sshape_range{ &x, sizeof(x) } +#else +#define SSHAPE_RANGE(x) (sshape_range){ &x, sizeof(x) } +#endif + +/* a 4x4 matrix wrapper struct */ +typedef struct sshape_mat4_t { float m[4][4]; } sshape_mat4_t; + +/* vertex layout of the generated geometry */ +typedef struct sshape_vertex_t { + float x, y, z; + uint32_t normal; // packed normal as BYTE4N + uint16_t u, v; // packed uv coords as USHORT2N + uint32_t color; // packed color as UBYTE4N (r,g,b,a); +} sshape_vertex_t; + +/* a range of draw-elements (sg_draw(int base_element, int num_element, ...)) */ +typedef struct sshape_element_range_t { + int base_element; + int num_elements; + #if defined(SOKOL_ZIG_BINDINGS) + uint32_t __pad[3]; + #endif +} sshape_element_range_t; + +/* number of elements and byte size of build actions */ +typedef struct sshape_sizes_item_t { + uint32_t num; // number of elements + uint32_t size; // the same as size in bytes + #if defined(SOKOL_ZIG_BINDINGS) + uint32_t __pad[3]; + #endif +} sshape_sizes_item_t; + +typedef struct sshape_sizes_t { + sshape_sizes_item_t vertices; + sshape_sizes_item_t indices; +} sshape_sizes_t; + +/* in/out struct to keep track of mesh-build state */ +typedef struct sshape_buffer_item_t { + sshape_range buffer; // pointer/size pair of output buffer + size_t data_size; // size in bytes of valid data in buffer + size_t shape_offset; // data offset of the most recent shape +} sshape_buffer_item_t; + +typedef struct sshape_buffer_t { + bool valid; + sshape_buffer_item_t vertices; + sshape_buffer_item_t indices; +} sshape_buffer_t; + +/* creation parameters for the different shape types */ +typedef struct sshape_plane_t { + float width, depth; // default: 1.0 + uint16_t tiles; // default: 1 + uint32_t color; // default: white + bool random_colors; // default: false + bool merge; // if true merge with previous shape (default: false) + sshape_mat4_t transform; // default: identity matrix +} sshape_plane_t; + +typedef struct sshape_box_t { + float width, height, depth; // default: 1.0 + uint16_t tiles; // default: 1 + uint32_t color; // default: white + bool random_colors; // default: false + bool merge; // if true merge with previous shape (default: false) + sshape_mat4_t transform; // default: identity matrix +} sshape_box_t; + +typedef struct sshape_sphere_t { + float radius; // default: 0.5 + uint16_t slices; // default: 5 + uint16_t stacks; // default: 4 + uint32_t color; // default: white + bool random_colors; // default: false + bool merge; // if true merge with previous shape (default: false) + sshape_mat4_t transform; // default: identity matrix +} sshape_sphere_t; + +typedef struct sshape_cylinder_t { + float radius; // default: 0.5 + float height; // default: 1.0 + uint16_t slices; // default: 5 + uint16_t stacks; // default: 1 + uint32_t color; // default: white + bool random_colors; // default: false + bool merge; // if true merge with previous shape (default: false) + sshape_mat4_t transform; // default: identity matrix +} sshape_cylinder_t; + +typedef struct sshape_torus_t { + float radius; // default: 0.5f + float ring_radius; // default: 0.2f + uint16_t sides; // default: 5 + uint16_t rings; // default: 5 + uint32_t color; // default: white + bool random_colors; // default: false + bool merge; // if true merge with previous shape (default: false) + sshape_mat4_t transform; // default: identity matrix +} sshape_torus_t; + +/* shape builder functions */ +SOKOL_SHAPE_API_DECL sshape_buffer_t sshape_build_plane(const sshape_buffer_t* buf, const sshape_plane_t* params); +SOKOL_SHAPE_API_DECL sshape_buffer_t sshape_build_box(const sshape_buffer_t* buf, const sshape_box_t* params); +SOKOL_SHAPE_API_DECL sshape_buffer_t sshape_build_sphere(const sshape_buffer_t* buf, const sshape_sphere_t* params); +SOKOL_SHAPE_API_DECL sshape_buffer_t sshape_build_cylinder(const sshape_buffer_t* buf, const sshape_cylinder_t* params); +SOKOL_SHAPE_API_DECL sshape_buffer_t sshape_build_torus(const sshape_buffer_t* buf, const sshape_torus_t* params); + +/* query required vertex- and index-buffer sizes in bytes */ +SOKOL_SHAPE_API_DECL sshape_sizes_t sshape_plane_sizes(uint32_t tiles); +SOKOL_SHAPE_API_DECL sshape_sizes_t sshape_box_sizes(uint32_t tiles); +SOKOL_SHAPE_API_DECL sshape_sizes_t sshape_sphere_sizes(uint32_t slices, uint32_t stacks); +SOKOL_SHAPE_API_DECL sshape_sizes_t sshape_cylinder_sizes(uint32_t slices, uint32_t stacks); +SOKOL_SHAPE_API_DECL sshape_sizes_t sshape_torus_sizes(uint32_t sides, uint32_t rings); + +/* extract sokol-gfx desc structs and primitive ranges from build state */ +SOKOL_SHAPE_API_DECL sshape_element_range_t sshape_element_range(const sshape_buffer_t* buf); +SOKOL_SHAPE_API_DECL sg_buffer_desc sshape_vertex_buffer_desc(const sshape_buffer_t* buf); +SOKOL_SHAPE_API_DECL sg_buffer_desc sshape_index_buffer_desc(const sshape_buffer_t* buf); +SOKOL_SHAPE_API_DECL sg_buffer_layout_desc sshape_buffer_layout_desc(void); +SOKOL_SHAPE_API_DECL sg_vertex_attr_desc sshape_position_attr_desc(void); +SOKOL_SHAPE_API_DECL sg_vertex_attr_desc sshape_normal_attr_desc(void); +SOKOL_SHAPE_API_DECL sg_vertex_attr_desc sshape_texcoord_attr_desc(void); +SOKOL_SHAPE_API_DECL sg_vertex_attr_desc sshape_color_attr_desc(void); + +/* helper functions to build packed color value from floats or bytes */ +SOKOL_SHAPE_API_DECL uint32_t sshape_color_4f(float r, float g, float b, float a); +SOKOL_SHAPE_API_DECL uint32_t sshape_color_3f(float r, float g, float b); +SOKOL_SHAPE_API_DECL uint32_t sshape_color_4b(uint8_t r, uint8_t g, uint8_t b, uint8_t a); +SOKOL_SHAPE_API_DECL uint32_t sshape_color_3b(uint8_t r, uint8_t g, uint8_t b); + +/* adapter function for filling matrix struct from generic float[16] array */ +SOKOL_SHAPE_API_DECL sshape_mat4_t sshape_mat4(const float m[16]); +SOKOL_SHAPE_API_DECL sshape_mat4_t sshape_mat4_transpose(const float m[16]); + +#ifdef __cplusplus +} // extern "C" + +// FIXME: C++ helper functions + +#endif +#endif // SOKOL_SHAPE_INCLUDED + +/*-- IMPLEMENTATION ----------------------------------------------------------*/ +#ifdef SOKOL_SHAPE_IMPL +#define SOKOL_SHAPE_IMPL_INCLUDED (1) + +#include // memcpy +#include // sinf, cosf + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmissing-field-initializers" +#endif + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif + +#define _sshape_def(val, def) (((val) == 0) ? (def) : (val)) +#define _sshape_def_flt(val, def) (((val) == 0.0f) ? (def) : (val)) +#define _sshape_white (0xFFFFFFFF) + +typedef struct { float x, y, z, w; } _sshape_vec4_t; +typedef struct { float x, y; } _sshape_vec2_t; + +static inline float _sshape_clamp(float v) { + if (v < 0.0f) return 0.0f; + else if (v > 1.0f) return 1.0f; + else return v; +} + +static inline uint32_t _sshape_pack_ub4_ubyte4n(uint8_t x, uint8_t y, uint8_t z, uint8_t w) { + return (uint32_t)(((uint32_t)w<<24)|((uint32_t)z<<16)|((uint32_t)y<<8)|x); +} + +static inline uint32_t _sshape_pack_f4_ubyte4n(float x, float y, float z, float w) { + uint8_t x8 = (uint8_t) (x * 255.0f); + uint8_t y8 = (uint8_t) (y * 255.0f); + uint8_t z8 = (uint8_t) (z * 255.0f); + uint8_t w8 = (uint8_t) (w * 255.0f); + return _sshape_pack_ub4_ubyte4n(x8, y8, z8, w8); +} + +static inline uint32_t _sshape_pack_f4_byte4n(float x, float y, float z, float w) { + int8_t x8 = (int8_t) (x * 127.0f); + int8_t y8 = (int8_t) (y * 127.0f); + int8_t z8 = (int8_t) (z * 127.0f); + int8_t w8 = (int8_t) (w * 127.0f); + return _sshape_pack_ub4_ubyte4n((uint8_t)x8, (uint8_t)y8, (uint8_t)z8, (uint8_t)w8); +} + +static inline uint16_t _sshape_pack_f_ushortn(float x) { + return (uint16_t) (x * 65535.0f); +} + +static inline _sshape_vec4_t _sshape_vec4(float x, float y, float z, float w) { + _sshape_vec4_t v = { x, y, z, w }; + return v; +} + +static inline _sshape_vec4_t _sshape_vec4_norm(_sshape_vec4_t v) { + float l = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z + v.w*v.w); + if (l != 0.0f) { + return _sshape_vec4(v.x/l, v.y/l, v.z/l, v.w/l); + } + else { + return _sshape_vec4(0.0f, 1.0f, 0.0f, 0.0f); + } +} + +static inline _sshape_vec2_t _sshape_vec2(float x, float y) { + _sshape_vec2_t v = { x, y }; + return v; +} + +static bool _sshape_mat4_isnull(const sshape_mat4_t* m) { + for (int y = 0; y < 4; y++) { + for (int x = 0; x < 4; x++) { + if (0.0f != m->m[y][x]) { + return false; + } + } + } + return true; +} + +static sshape_mat4_t _sshape_mat4_identity(void) { + sshape_mat4_t m = { + { + { 1.0f, 0.0f, 0.0f, 0.0f }, + { 0.0f, 1.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 1.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f, 1.0f } + } + }; + return m; +} + +static _sshape_vec4_t _sshape_mat4_mul(const sshape_mat4_t* m, _sshape_vec4_t v) { + _sshape_vec4_t res = { + m->m[0][0]*v.x + m->m[1][0]*v.y + m->m[2][0]*v.z + m->m[3][0]*v.w, + m->m[0][1]*v.x + m->m[1][1]*v.y + m->m[2][1]*v.z + m->m[3][1]*v.w, + m->m[0][2]*v.x + m->m[1][2]*v.y + m->m[2][2]*v.z + m->m[3][2]*v.w, + m->m[0][3]*v.x + m->m[1][3]*v.y + m->m[2][3]*v.z + m->m[3][3]*v.w + }; + return res; +} + +static uint32_t _sshape_plane_num_vertices(uint32_t tiles) { + return (tiles + 1) * (tiles + 1); +} + +static uint32_t _sshape_plane_num_indices(uint32_t tiles) { + return tiles * tiles * 2 * 3; +} + +static uint32_t _sshape_box_num_vertices(uint32_t tiles) { + return (tiles + 1) * (tiles + 1) * 6; +} + +static uint32_t _sshape_box_num_indices(uint32_t tiles) { + return tiles * tiles * 2 * 6 * 3; +} + +static uint32_t _sshape_sphere_num_vertices(uint32_t slices, uint32_t stacks) { + return (slices + 1) * (stacks + 1); +} + +static uint32_t _sshape_sphere_num_indices(uint32_t slices, uint32_t stacks) { + return ((2 * slices * stacks) - (2 * slices)) * 3; +} + +static uint32_t _sshape_cylinder_num_vertices(uint32_t slices, uint32_t stacks) { + return (slices + 1) * (stacks + 5); +} + +static uint32_t _sshape_cylinder_num_indices(uint32_t slices, uint32_t stacks) { + return ((2 * slices * stacks) + (2 * slices)) * 3; +} + +static uint32_t _sshape_torus_num_vertices(uint32_t sides, uint32_t rings) { + return (sides + 1) * (rings + 1); +} + +static uint32_t _sshape_torus_num_indices(uint32_t sides, uint32_t rings) { + return sides * rings * 2 * 3; +} + +static bool _sshape_validate_buffer_item(const sshape_buffer_item_t* item, uint32_t build_size) { + if (0 == item->buffer.ptr) { + return false; + } + if (0 == item->buffer.size) { + return false; + } + if ((item->data_size + build_size) > item->buffer.size) { + return false; + } + if (item->shape_offset > item->data_size) { + return false; + } + return true; +} + +static bool _sshape_validate_buffer(const sshape_buffer_t* buf, uint32_t num_vertices, uint32_t num_indices) { + if (!_sshape_validate_buffer_item(&buf->vertices, num_vertices * sizeof(sshape_vertex_t))) { + return false; + } + if (!_sshape_validate_buffer_item(&buf->indices, num_indices * sizeof(uint16_t))) { + return false; + } + return true; +} + +static void _sshape_advance_offset(sshape_buffer_item_t* item) { + item->shape_offset = item->data_size; +} + +static uint16_t _sshape_base_index(const sshape_buffer_t* buf) { + return (uint16_t) (buf->vertices.data_size / sizeof(sshape_vertex_t)); +} + +static sshape_plane_t _sshape_plane_defaults(const sshape_plane_t* params) { + sshape_plane_t res = *params; + res.width = _sshape_def_flt(res.width, 1.0f); + res.depth = _sshape_def_flt(res.depth, 1.0f); + res.tiles = _sshape_def(res.tiles, 1); + res.color = _sshape_def(res.color, _sshape_white); + res.transform = _sshape_mat4_isnull(&res.transform) ? _sshape_mat4_identity() : res.transform; + return res; +} + +static sshape_box_t _sshape_box_defaults(const sshape_box_t* params) { + sshape_box_t res = *params; + res.width = _sshape_def_flt(res.width, 1.0f); + res.height = _sshape_def_flt(res.height, 1.0f); + res.depth = _sshape_def_flt(res.depth, 1.0f); + res.tiles = _sshape_def(res.tiles, 1); + res.color = _sshape_def(res.color, _sshape_white); + res.transform = _sshape_mat4_isnull(&res.transform) ? _sshape_mat4_identity() : res.transform; + return res; +} + +static sshape_sphere_t _sshape_sphere_defaults(const sshape_sphere_t* params) { + sshape_sphere_t res = *params; + res.radius = _sshape_def_flt(res.radius, 0.5f); + res.slices = _sshape_def(res.slices, 5); + res.stacks = _sshape_def(res.stacks, 4); + res.color = _sshape_def(res.color, _sshape_white); + res.transform = _sshape_mat4_isnull(&res.transform) ? _sshape_mat4_identity() : res.transform; + return res; +} + +static sshape_cylinder_t _sshape_cylinder_defaults(const sshape_cylinder_t* params) { + sshape_cylinder_t res = *params; + res.radius = _sshape_def_flt(res.radius, 0.5f); + res.height = _sshape_def_flt(res.height, 1.0f); + res.slices = _sshape_def(res.slices, 5); + res.stacks = _sshape_def(res.stacks, 1); + res.color = _sshape_def(res.color, _sshape_white); + res.transform = _sshape_mat4_isnull(&res.transform) ? _sshape_mat4_identity() : res.transform; + return res; +} + +static sshape_torus_t _sshape_torus_defaults(const sshape_torus_t* params) { + sshape_torus_t res = *params; + res.radius = _sshape_def_flt(res.radius, 0.5f); + res.ring_radius = _sshape_def_flt(res.ring_radius, 0.2f); + res.sides = _sshape_def_flt(res.sides, 5); + res.rings = _sshape_def_flt(res.rings, 5); + res.color = _sshape_def(res.color, _sshape_white); + res.transform = _sshape_mat4_isnull(&res.transform) ? _sshape_mat4_identity() : res.transform; + return res; +} + +static void _sshape_add_vertex(sshape_buffer_t* buf, _sshape_vec4_t pos, _sshape_vec4_t norm, _sshape_vec2_t uv, uint32_t color) { + size_t offset = buf->vertices.data_size; + SOKOL_ASSERT((offset + sizeof(sshape_vertex_t)) <= buf->vertices.buffer.size); + buf->vertices.data_size += sizeof(sshape_vertex_t); + sshape_vertex_t* v_ptr = (sshape_vertex_t*) ((uint8_t*)buf->vertices.buffer.ptr + offset); + v_ptr->x = pos.x; + v_ptr->y = pos.y; + v_ptr->z = pos.z; + v_ptr->normal = _sshape_pack_f4_byte4n(norm.x, norm.y, norm.z, norm.w); + v_ptr->u = _sshape_pack_f_ushortn(uv.x); + v_ptr->v = _sshape_pack_f_ushortn(uv.y); + v_ptr->color = color; +} + +static void _sshape_add_triangle(sshape_buffer_t* buf, uint16_t i0, uint16_t i1, uint16_t i2) { + size_t offset = buf->indices.data_size; + SOKOL_ASSERT((offset + 3*sizeof(uint16_t)) <= buf->indices.buffer.size); + buf->indices.data_size += 3*sizeof(uint16_t); + uint16_t* i_ptr = (uint16_t*) ((uint8_t*)buf->indices.buffer.ptr + offset); + i_ptr[0] = i0; + i_ptr[1] = i1; + i_ptr[2] = i2; +} + +static uint32_t _sshape_rand_color(uint32_t* xorshift_state) { + // xorshift32 + uint32_t x = *xorshift_state; + x ^= x<<13; + x ^= x>>17; + x ^= x<<5; + *xorshift_state = x; + + // rand => bright color with alpha 1.0 + x |= 0xFF000000; + return x; + +} + +/*=== PUBLIC API FUNCTIONS ===================================================*/ +SOKOL_API_IMPL uint32_t sshape_color_4f(float r, float g, float b, float a) { + return _sshape_pack_f4_ubyte4n(_sshape_clamp(r), _sshape_clamp(g), _sshape_clamp(b), _sshape_clamp(a)); +} + +SOKOL_API_IMPL uint32_t sshape_color_3f(float r, float g, float b) { + return _sshape_pack_f4_ubyte4n(_sshape_clamp(r), _sshape_clamp(g), _sshape_clamp(b), 1.0f); +} + +SOKOL_API_IMPL uint32_t sshape_color_4b(uint8_t r, uint8_t g, uint8_t b, uint8_t a) { + return _sshape_pack_ub4_ubyte4n(r, g, b, a); +} + +SOKOL_API_IMPL uint32_t sshape_color_3b(uint8_t r, uint8_t g, uint8_t b) { + return _sshape_pack_ub4_ubyte4n(r, g, b, 255); +} + +SOKOL_API_IMPL sshape_mat4_t sshape_mat4(const float m[16]) { + sshape_mat4_t res; + memcpy(&res.m[0][0], &m[0], 64); + return res; +} + +SOKOL_API_IMPL sshape_mat4_t sshape_mat4_transpose(const float m[16]) { + sshape_mat4_t res; + for (int c = 0; c < 4; c++) { + for (int r = 0; r < 4; r++) { + res.m[r][c] = m[c*4 + r]; + } + } + return res; +} + +SOKOL_API_IMPL sshape_sizes_t sshape_plane_sizes(uint32_t tiles) { + SOKOL_ASSERT(tiles >= 1); + sshape_sizes_t res = { {0} }; + res.vertices.num = _sshape_plane_num_vertices(tiles); + res.indices.num = _sshape_plane_num_indices(tiles); + res.vertices.size = res.vertices.num * sizeof(sshape_vertex_t); + res.indices.size = res.indices.num * sizeof(uint16_t); + return res; +} + +SOKOL_API_IMPL sshape_sizes_t sshape_box_sizes(uint32_t tiles) { + SOKOL_ASSERT(tiles >= 1); + sshape_sizes_t res = { {0} }; + res.vertices.num = _sshape_box_num_vertices(tiles); + res.indices.num = _sshape_box_num_indices(tiles); + res.vertices.size = res.vertices.num * sizeof(sshape_vertex_t); + res.indices.size = res.indices.num * sizeof(uint16_t); + return res; +} + +SOKOL_API_IMPL sshape_sizes_t sshape_sphere_sizes(uint32_t slices, uint32_t stacks) { + SOKOL_ASSERT((slices >= 3) && (stacks >= 2)); + sshape_sizes_t res = { {0} }; + res.vertices.num = _sshape_sphere_num_vertices(slices, stacks); + res.indices.num = _sshape_sphere_num_indices(slices, stacks); + res.vertices.size = res.vertices.num * sizeof(sshape_vertex_t); + res.indices.size = res.indices.num * sizeof(uint16_t); + return res; +} + +SOKOL_API_IMPL sshape_sizes_t sshape_cylinder_sizes(uint32_t slices, uint32_t stacks) { + SOKOL_ASSERT((slices >= 3) && (stacks >= 1)); + sshape_sizes_t res = { {0} }; + res.vertices.num = _sshape_cylinder_num_vertices(slices, stacks); + res.indices.num = _sshape_cylinder_num_indices(slices, stacks); + res.vertices.size = res.vertices.num * sizeof(sshape_vertex_t); + res.indices.size = res.indices.num * sizeof(uint16_t); + return res; +} + +SOKOL_API_IMPL sshape_sizes_t sshape_torus_sizes(uint32_t sides, uint32_t rings) { + SOKOL_ASSERT((sides >= 3) && (rings >= 3)); + sshape_sizes_t res = { {0} }; + res.vertices.num = _sshape_torus_num_vertices(sides, rings); + res.indices.num = _sshape_torus_num_indices(sides, rings); + res.vertices.size = res.vertices.num * sizeof(sshape_vertex_t); + res.indices.size = res.indices.num * sizeof(uint16_t); + return res; +} + +/* + Geometry layout for plane (4 tiles): + +--+--+--+--+ + |\ |\ |\ |\ | + | \| \| \| \| + +--+--+--+--+ 25 vertices (tiles + 1) * (tiles + 1) + |\ |\ |\ |\ | 32 triangles (tiles + 1) * (tiles + 1) * 2 + | \| \| \| \| + +--+--+--+--+ + |\ |\ |\ |\ | + | \| \| \| \| + +--+--+--+--+ + |\ |\ |\ |\ | + | \| \| \| \| + +--+--+--+--+ +*/ +SOKOL_API_IMPL sshape_buffer_t sshape_build_plane(const sshape_buffer_t* in_buf, const sshape_plane_t* in_params) { + SOKOL_ASSERT(in_buf && in_params); + const sshape_plane_t params = _sshape_plane_defaults(in_params); + const uint32_t num_vertices = _sshape_plane_num_vertices(params.tiles); + const uint32_t num_indices = _sshape_plane_num_indices(params.tiles); + sshape_buffer_t buf = *in_buf; + if (!_sshape_validate_buffer(&buf, num_vertices, num_indices)) { + buf.valid = false; + return buf; + } + buf.valid = true; + const uint16_t start_index = _sshape_base_index(&buf); + if (!params.merge) { + _sshape_advance_offset(&buf.vertices); + _sshape_advance_offset(&buf.indices); + } + + // write vertices + uint32_t rand_seed = 0x12345678; + const float x0 = -params.width * 0.5f; + const float z0 = params.depth * 0.5f; + const float dx = params.width / params.tiles; + const float dz = -params.depth / params.tiles; + const float duv = 1.0f / params.tiles; + _sshape_vec4_t tnorm = _sshape_vec4_norm(_sshape_mat4_mul(¶ms.transform, _sshape_vec4(0.0f, 1.0f, 0.0f, 0.0f))); + for (uint32_t ix = 0; ix <= params.tiles; ix++) { + for (uint32_t iz = 0; iz <= params.tiles; iz++) { + const _sshape_vec4_t pos = _sshape_vec4(x0 + dx*ix, 0.0f, z0 + dz*iz, 1.0f); + const _sshape_vec4_t tpos = _sshape_mat4_mul(¶ms.transform, pos); + const _sshape_vec2_t uv = _sshape_vec2(duv*ix, duv*iz); + const uint32_t color = params.random_colors ? _sshape_rand_color(&rand_seed) : params.color; + _sshape_add_vertex(&buf, tpos, tnorm, uv, color); + } + } + + // write indices + for (uint16_t j = 0; j < params.tiles; j++) { + for (uint16_t i = 0; i < params.tiles; i++) { + const uint16_t i0 = start_index + (j * (params.tiles + 1)) + i; + const uint16_t i1 = i0 + 1; + const uint16_t i2 = i0 + params.tiles + 1; + const uint16_t i3 = i2 + 1; + _sshape_add_triangle(&buf, i0, i1, i3); + _sshape_add_triangle(&buf, i0, i3, i2); + } + } + return buf; +} + +SOKOL_API_IMPL sshape_buffer_t sshape_build_box(const sshape_buffer_t* in_buf, const sshape_box_t* in_params) { + SOKOL_ASSERT(in_buf && in_params); + const sshape_box_t params = _sshape_box_defaults(in_params); + const uint32_t num_vertices = _sshape_box_num_vertices(params.tiles); + const uint32_t num_indices = _sshape_box_num_indices(params.tiles); + sshape_buffer_t buf = *in_buf; + if (!_sshape_validate_buffer(&buf, num_vertices, num_indices)) { + buf.valid = false; + return buf; + } + buf.valid = true; + const uint16_t start_index = _sshape_base_index(&buf); + if (!params.merge) { + _sshape_advance_offset(&buf.vertices); + _sshape_advance_offset(&buf.indices); + } + + // build vertices + uint32_t rand_seed = 0x12345678; + const float x0 = -params.width * 0.5f; + const float x1 = params.width * 0.5f; + const float y0 = -params.height * 0.5f; + const float y1 = params.height * 0.5f; + const float z0 = -params.depth * 0.5f; + const float z1 = params.depth * 0.5f; + const float dx = params.width / params.tiles; + const float dy = params.height / params.tiles; + const float dz = params.depth / params.tiles; + const float duv = 1.0f / params.tiles; + + // bottom/top vertices + for (uint32_t top_bottom = 0; top_bottom < 2; top_bottom++) { + _sshape_vec4_t pos = _sshape_vec4(0.0f, (0==top_bottom) ? y0:y1, 0.0f, 1.0f); + const _sshape_vec4_t norm = _sshape_vec4(0.0f, (0==top_bottom) ? -1.0f:1.0f, 0.0f, 0.0f); + const _sshape_vec4_t tnorm = _sshape_vec4_norm(_sshape_mat4_mul(¶ms.transform, norm)); + for (uint32_t ix = 0; ix <= params.tiles; ix++) { + pos.x = (0==top_bottom) ? (x0 + dx * ix) : (x1 - dx * ix); + for (uint32_t iz = 0; iz <= params.tiles; iz++) { + pos.z = z0 + dz * iz; + const _sshape_vec4_t tpos = _sshape_mat4_mul(¶ms.transform, pos); + const _sshape_vec2_t uv = _sshape_vec2(ix * duv, iz * duv); + const uint32_t color = params.random_colors ? _sshape_rand_color(&rand_seed) : params.color; + _sshape_add_vertex(&buf, tpos, tnorm, uv, color); + } + } + } + + // left/right vertices + for (uint32_t left_right = 0; left_right < 2; left_right++) { + _sshape_vec4_t pos = _sshape_vec4((0==left_right) ? x0:x1, 0.0f, 0.0f, 1.0f); + const _sshape_vec4_t norm = _sshape_vec4((0==left_right) ? -1.0f:1.0f, 0.0f, 0.0f, 0.0f); + const _sshape_vec4_t tnorm = _sshape_vec4_norm(_sshape_mat4_mul(¶ms.transform, norm)); + for (uint32_t iy = 0; iy <= params.tiles; iy++) { + pos.y = (0==left_right) ? (y1 - dy * iy) : (y0 + dy * iy); + for (uint32_t iz = 0; iz <= params.tiles; iz++) { + pos.z = z0 + dz * iz; + const _sshape_vec4_t tpos = _sshape_mat4_mul(¶ms.transform, pos); + const _sshape_vec2_t uv = _sshape_vec2(iy * duv, iz * duv); + const uint32_t color = params.random_colors ? _sshape_rand_color(&rand_seed) : params.color; + _sshape_add_vertex(&buf, tpos, tnorm, uv, color); + } + } + } + + // front/back vertices + for (uint32_t front_back = 0; front_back < 2; front_back++) { + _sshape_vec4_t pos = _sshape_vec4(0.0f, 0.0f, (0==front_back) ? z0:z1, 1.0f); + const _sshape_vec4_t norm = _sshape_vec4(0.0f, 0.0f, (0==front_back) ? -1.0f:1.0f, 0.0f); + const _sshape_vec4_t tnorm = _sshape_vec4_norm(_sshape_mat4_mul(¶ms.transform, norm)); + for (uint32_t ix = 0; ix <= params.tiles; ix++) { + pos.x = (0==front_back) ? (x1 - dx * ix) : (x0 + dx * ix); + for (uint32_t iy = 0; iy <= params.tiles; iy++) { + pos.y = y0 + dy * iy; + const _sshape_vec4_t tpos = _sshape_mat4_mul(¶ms.transform, pos); + const _sshape_vec2_t uv = _sshape_vec2(ix * duv, iy * duv); + const uint32_t color = params.random_colors ? _sshape_rand_color(&rand_seed) : params.color; + _sshape_add_vertex(&buf, tpos, tnorm, uv, color); + } + } + } + + // build indices + const uint16_t verts_per_face = (params.tiles + 1) * (params.tiles + 1); + for (uint16_t face = 0; face < 6; face++) { + uint16_t face_start_index = start_index + face * verts_per_face; + for (uint16_t j = 0; j < params.tiles; j++) { + for (uint16_t i = 0; i < params.tiles; i++) { + const uint16_t i0 = face_start_index + (j * (params.tiles + 1)) + i; + const uint16_t i1 = i0 + 1; + const uint16_t i2 = i0 + params.tiles + 1; + const uint16_t i3 = i2 + 1; + _sshape_add_triangle(&buf, i0, i1, i3); + _sshape_add_triangle(&buf, i0, i3, i2); + } + } + } + return buf; +} + +/* + Geometry layout for spheres is as follows (for 5 slices, 4 stacks): + + + + + + + + north pole + |\ |\ |\ |\ |\ + | \| \| \| \| \ + +--+--+--+--+--+ 30 vertices (slices + 1) * (stacks + 1) + |\ |\ |\ |\ |\ | 30 triangles (2 * slices * stacks) - (2 * slices) + | \| \| \| \| \| 2 orphaned vertices + +--+--+--+--+--+ + |\ |\ |\ |\ |\ | + | \| \| \| \| \| + +--+--+--+--+--+ + \ |\ |\ |\ |\ | + \| \| \| \| \| + + + + + + + south pole +*/ +SOKOL_API_IMPL sshape_buffer_t sshape_build_sphere(const sshape_buffer_t* in_buf, const sshape_sphere_t* in_params) { + SOKOL_ASSERT(in_buf && in_params); + const sshape_sphere_t params = _sshape_sphere_defaults(in_params); + const uint32_t num_vertices = _sshape_sphere_num_vertices(params.slices, params.stacks); + const uint32_t num_indices = _sshape_sphere_num_indices(params.slices, params.stacks); + sshape_buffer_t buf = *in_buf; + if (!_sshape_validate_buffer(&buf, num_vertices, num_indices)) { + buf.valid = false; + return buf; + } + buf.valid = true; + const uint16_t start_index = _sshape_base_index(&buf); + if (!params.merge) { + _sshape_advance_offset(&buf.vertices); + _sshape_advance_offset(&buf.indices); + } + + uint32_t rand_seed = 0x12345678; + const float pi = 3.14159265358979323846f; + const float two_pi = 2.0f * pi; + const float du = 1.0f / params.slices; + const float dv = 1.0f / params.stacks; + + // generate vertices + for (uint32_t stack = 0; stack <= params.stacks; stack++) { + const float stack_angle = (pi * stack) / params.stacks; + const float sin_stack = sinf(stack_angle); + const float cos_stack = cosf(stack_angle); + for (uint32_t slice = 0; slice <= params.slices; slice++) { + const float slice_angle = (two_pi * slice) / params.slices; + const float sin_slice = sinf(slice_angle); + const float cos_slice = cosf(slice_angle); + const _sshape_vec4_t norm = _sshape_vec4(-sin_slice * sin_stack, cos_stack, cos_slice * sin_stack, 0.0f); + const _sshape_vec4_t pos = _sshape_vec4(norm.x * params.radius, norm.y * params.radius, norm.z * params.radius, 1.0f); + const _sshape_vec4_t tnorm = _sshape_vec4_norm(_sshape_mat4_mul(¶ms.transform, norm)); + const _sshape_vec4_t tpos = _sshape_mat4_mul(¶ms.transform, pos); + const _sshape_vec2_t uv = _sshape_vec2(1.0f - slice * du, 1.0f - stack * dv); + const uint32_t color = params.random_colors ? _sshape_rand_color(&rand_seed) : params.color; + _sshape_add_vertex(&buf, tpos, tnorm, uv, color); + } + } + + // generate indices + { + // north-pole triangles + const uint16_t row_a = start_index; + const uint16_t row_b = row_a + params.slices + 1; + for (uint16_t slice = 0; slice < params.slices; slice++) { + _sshape_add_triangle(&buf, row_a + slice, row_b + slice, row_b + slice + 1); + } + } + // stack triangles + for (uint16_t stack = 1; stack < params.stacks - 1; stack++) { + const uint16_t row_a = start_index + stack * (params.slices + 1); + const uint16_t row_b = row_a + params.slices + 1; + for (uint16_t slice = 0; slice < params.slices; slice++) { + _sshape_add_triangle(&buf, row_a + slice, row_b + slice + 1, row_a + slice + 1); + _sshape_add_triangle(&buf, row_a + slice, row_b + slice, row_b + slice + 1); + } + } + { + // south-pole triangles + const uint16_t row_a = start_index + (params.stacks - 1) * (params.slices + 1); + const uint16_t row_b = row_a + params.slices + 1; + for (uint16_t slice = 0; slice < params.slices; slice++) { + _sshape_add_triangle(&buf, row_a + slice, row_b + slice + 1, row_a + slice + 1); + } + } + return buf; +} + +/* + Geometry for cylinders is as follows (2 stacks, 5 slices): + + + + + + + + + |\ |\ |\ |\ |\ + | \| \| \| \| \ + +--+--+--+--+--+ + +--+--+--+--+--+ 42 vertices (2 wasted) (slices + 1) * (stacks + 5) + |\ |\ |\ |\ |\ | 30 triangles (2 * slices * stacks) + (2 * slices) + | \| \| \| \| \| + +--+--+--+--+--+ + |\ |\ |\ |\ |\ | + | \| \| \| \| \| + +--+--+--+--+--+ + +--+--+--+--+--+ + \ |\ |\ |\ |\ | + \| \| \| \| \| + + + + + + + +*/ +static void _sshape_build_cylinder_cap_pole(sshape_buffer_t* buf, const sshape_cylinder_t* params, float pos_y, float norm_y, float du, float v, uint32_t* rand_seed) { + const _sshape_vec4_t tnorm = _sshape_vec4_norm(_sshape_mat4_mul(¶ms->transform, _sshape_vec4(0.0f, norm_y, 0.0f, 0.0f))); + const _sshape_vec4_t tpos = _sshape_mat4_mul(¶ms->transform, _sshape_vec4(0.0f, pos_y, 0.0f, 1.0f)); + for (uint32_t slice = 0; slice <= params->slices; slice++) { + const _sshape_vec2_t uv = _sshape_vec2(slice * du, 1.0f - v); + const uint32_t color = params->random_colors ? _sshape_rand_color(rand_seed) : params->color; + _sshape_add_vertex(buf, tpos, tnorm, uv, color); + } +} + +static void _sshape_build_cylinder_cap_ring(sshape_buffer_t* buf, const sshape_cylinder_t* params, float pos_y, float norm_y, float du, float v, uint32_t* rand_seed) { + const float two_pi = 2.0f * 3.14159265358979323846f; + const _sshape_vec4_t tnorm = _sshape_vec4_norm(_sshape_mat4_mul(¶ms->transform, _sshape_vec4(0.0f, norm_y, 0.0f, 0.0f))); + for (uint32_t slice = 0; slice <= params->slices; slice++) { + const float slice_angle = (two_pi * slice) / params->slices; + const float sin_slice = sinf(slice_angle); + const float cos_slice = cosf(slice_angle); + const _sshape_vec4_t pos = _sshape_vec4(sin_slice * params->radius, pos_y, cos_slice * params->radius, 1.0f); + const _sshape_vec4_t tpos = _sshape_mat4_mul(¶ms->transform, pos); + const _sshape_vec2_t uv = _sshape_vec2(slice * du, 1.0f - v); + const uint32_t color = params->random_colors ? _sshape_rand_color(rand_seed) : params->color; + _sshape_add_vertex(buf, tpos, tnorm, uv, color); + } +} + +SOKOL_SHAPE_API_DECL sshape_buffer_t sshape_build_cylinder(const sshape_buffer_t* in_buf, const sshape_cylinder_t* in_params) { + SOKOL_ASSERT(in_buf && in_params); + const sshape_cylinder_t params = _sshape_cylinder_defaults(in_params); + const uint32_t num_vertices = _sshape_cylinder_num_vertices(params.slices, params.stacks); + const uint32_t num_indices = _sshape_cylinder_num_indices(params.slices, params.stacks); + sshape_buffer_t buf = *in_buf; + if (!_sshape_validate_buffer(&buf, num_vertices, num_indices)) { + buf.valid = false; + return buf; + } + buf.valid = true; + const uint16_t start_index = _sshape_base_index(&buf); + if (!params.merge) { + _sshape_advance_offset(&buf.vertices); + _sshape_advance_offset(&buf.indices); + } + + uint32_t rand_seed = 0x12345678; + const float two_pi = 2.0f * 3.14159265358979323846f; + const float du = 1.0f / params.slices; + const float dv = 1.0f / (params.stacks + 2); + const float y0 = params.height * 0.5f; + const float y1 = -params.height * 0.5f; + const float dy = params.height / params.stacks; + + // generate vertices + _sshape_build_cylinder_cap_pole(&buf, ¶ms, y0, 1.0f, du, 0.0f, &rand_seed); + _sshape_build_cylinder_cap_ring(&buf, ¶ms, y0, 1.0f, du, dv, &rand_seed); + for (uint32_t stack = 0; stack <= params.stacks; stack++) { + const float y = y0 - dy * stack; + const float v = dv * stack + dv; + for (uint32_t slice = 0; slice <= params.slices; slice++) { + const float slice_angle = (two_pi * slice) / params.slices; + const float sin_slice = sinf(slice_angle); + const float cos_slice = cosf(slice_angle); + const _sshape_vec4_t pos = _sshape_vec4(sin_slice * params.radius, y, cos_slice * params.radius, 1.0f); + const _sshape_vec4_t tpos = _sshape_mat4_mul(¶ms.transform, pos); + const _sshape_vec4_t norm = _sshape_vec4(sin_slice, 0.0f, cos_slice, 0.0f); + const _sshape_vec4_t tnorm = _sshape_vec4_norm(_sshape_mat4_mul(¶ms.transform, norm)); + const _sshape_vec2_t uv = _sshape_vec2(slice * du, 1.0f - v); + const uint32_t color = params.random_colors ? _sshape_rand_color(&rand_seed) : params.color; + _sshape_add_vertex(&buf, tpos, tnorm, uv, color); + } + } + _sshape_build_cylinder_cap_ring(&buf, ¶ms, y1, -1.0f, du, 1.0f - dv, &rand_seed); + _sshape_build_cylinder_cap_pole(&buf, ¶ms, y1, -1.0f, du, 1.0f, &rand_seed); + + // generate indices + { + // top-cap indices + const uint16_t row_a = start_index; + const uint16_t row_b = row_a + params.slices + 1; + for (uint16_t slice = 0; slice < params.slices; slice++) { + _sshape_add_triangle(&buf, row_a + slice, row_b + slice + 1, row_b + slice); + } + } + // shaft triangles + for (uint16_t stack = 0; stack < params.stacks; stack++) { + const uint16_t row_a = start_index + (stack + 2) * (params.slices + 1); + const uint16_t row_b = row_a + params.slices + 1; + for (uint16_t slice = 0; slice < params.slices; slice++) { + _sshape_add_triangle(&buf, row_a + slice, row_a + slice + 1, row_b + slice + 1); + _sshape_add_triangle(&buf, row_a + slice, row_b + slice + 1, row_b + slice); + } + } + { + // bottom-cap indices + const uint16_t row_a = start_index + (params.stacks + 3) * (params.slices + 1); + const uint16_t row_b = row_a + params.slices + 1; + for (uint16_t slice = 0; slice < params.slices; slice++) { + _sshape_add_triangle(&buf, row_a + slice, row_a + slice + 1, row_b + slice + 1); + } + } + return buf; +} + +/* + Geometry layout for torus (sides = 4, rings = 5): + + +--+--+--+--+--+ + |\ |\ |\ |\ |\ | + | \| \| \| \| \| + +--+--+--+--+--+ 30 vertices (sides + 1) * (rings + 1) + |\ |\ |\ |\ |\ | 40 triangles (2 * sides * rings) + | \| \| \| \| \| + +--+--+--+--+--+ + |\ |\ |\ |\ |\ | + | \| \| \| \| \| + +--+--+--+--+--+ + |\ |\ |\ |\ |\ | + | \| \| \| \| \| + +--+--+--+--+--+ +*/ +SOKOL_API_IMPL sshape_buffer_t sshape_build_torus(const sshape_buffer_t* in_buf, const sshape_torus_t* in_params) { + SOKOL_ASSERT(in_buf && in_params); + const sshape_torus_t params = _sshape_torus_defaults(in_params); + const uint32_t num_vertices = _sshape_torus_num_vertices(params.sides, params.rings); + const uint32_t num_indices = _sshape_torus_num_indices(params.sides, params.rings); + sshape_buffer_t buf = *in_buf; + if (!_sshape_validate_buffer(&buf, num_vertices, num_indices)) { + buf.valid = false; + return buf; + } + buf.valid = true; + const uint16_t start_index = _sshape_base_index(&buf); + if (!params.merge) { + _sshape_advance_offset(&buf.vertices); + _sshape_advance_offset(&buf.indices); + } + + uint32_t rand_seed = 0x12345678; + const float two_pi = 2.0f * 3.14159265358979323846f; + const float dv = 1.0f / params.sides; + const float du = 1.0f / params.rings; + + // generate vertices + for (uint32_t side = 0; side <= params.sides; side++) { + const float phi = (side * two_pi) / params.sides; + const float sin_phi = sinf(phi); + const float cos_phi = cosf(phi); + for (uint32_t ring = 0; ring <= params.rings; ring++) { + const float theta = (ring * two_pi) / params.rings; + const float sin_theta = sinf(theta); + const float cos_theta = cosf(theta); + + // torus surface position + const float spx = sin_theta * (params.radius - (params.ring_radius * cos_phi)); + const float spy = sin_phi * params.ring_radius; + const float spz = cos_theta * (params.radius - (params.ring_radius * cos_phi)); + + // torus position with ring-radius zero (for normal computation) + const float ipx = sin_theta * params.radius; + const float ipy = 0.0f; + const float ipz = cos_theta * params.radius; + + const _sshape_vec4_t pos = _sshape_vec4(spx, spy, spz, 1.0f); + const _sshape_vec4_t norm = _sshape_vec4(spx - ipx, spy - ipy, spz - ipz, 0.0f); + const _sshape_vec4_t tpos = _sshape_mat4_mul(¶ms.transform, pos); + const _sshape_vec4_t tnorm = _sshape_vec4_norm(_sshape_mat4_mul(¶ms.transform, norm)); + const _sshape_vec2_t uv = _sshape_vec2(ring * du, 1.0f - side * dv); + const uint32_t color = params.random_colors ? _sshape_rand_color(&rand_seed) : params.color; + _sshape_add_vertex(&buf, tpos, tnorm, uv, color); + } + } + + // generate indices + for (uint16_t side = 0; side < params.sides; side++) { + const uint16_t row_a = start_index + side * (params.rings + 1); + const uint16_t row_b = row_a + params.rings + 1; + for (uint16_t ring = 0; ring < params.rings; ring++) { + _sshape_add_triangle(&buf, row_a + ring, row_a + ring + 1, row_b + ring + 1); + _sshape_add_triangle(&buf, row_a + ring, row_b + ring + 1, row_b + ring); + } + } + return buf; +} + +SOKOL_API_IMPL sg_buffer_desc sshape_vertex_buffer_desc(const sshape_buffer_t* buf) { + SOKOL_ASSERT(buf && buf->valid); + sg_buffer_desc desc = { 0 }; + if (buf->valid) { + desc.type = SG_BUFFERTYPE_VERTEXBUFFER; + desc.usage = SG_USAGE_IMMUTABLE; + desc.data.ptr = buf->vertices.buffer.ptr; + desc.data.size = buf->vertices.data_size; + } + return desc; +} + +SOKOL_API_IMPL sg_buffer_desc sshape_index_buffer_desc(const sshape_buffer_t* buf) { + SOKOL_ASSERT(buf && buf->valid); + sg_buffer_desc desc = { 0 }; + if (buf->valid) { + desc.type = SG_BUFFERTYPE_INDEXBUFFER; + desc.usage = SG_USAGE_IMMUTABLE; + desc.data.ptr = buf->indices.buffer.ptr; + desc.data.size = buf->indices.data_size; + } + return desc; +} + +SOKOL_SHAPE_API_DECL sshape_element_range_t sshape_element_range(const sshape_buffer_t* buf) { + SOKOL_ASSERT(buf && buf->valid); + SOKOL_ASSERT(buf->indices.shape_offset < buf->indices.data_size); + SOKOL_ASSERT(0 == (buf->indices.shape_offset & (sizeof(uint16_t) - 1))); + SOKOL_ASSERT(0 == (buf->indices.data_size & (sizeof(uint16_t) - 1))); + sshape_element_range_t range = { 0 }; + range.base_element = (int) (buf->indices.shape_offset / sizeof(uint16_t)); + if (buf->valid) { + range.num_elements = (int) ((buf->indices.data_size - buf->indices.shape_offset) / sizeof(uint16_t)); + } + else { + range.num_elements = 0; + } + return range; +} + +SOKOL_API_IMPL sg_buffer_layout_desc sshape_buffer_layout_desc(void) { + sg_buffer_layout_desc desc = { 0 }; + desc.stride = sizeof(sshape_vertex_t); + return desc; +} + +SOKOL_API_IMPL sg_vertex_attr_desc sshape_position_attr_desc(void) { + sg_vertex_attr_desc desc = { 0 }; + desc.offset = offsetof(sshape_vertex_t, x); + desc.format = SG_VERTEXFORMAT_FLOAT3; + return desc; +} + +SOKOL_API_IMPL sg_vertex_attr_desc sshape_normal_attr_desc(void) { + sg_vertex_attr_desc desc = { 0 }; + desc.offset = offsetof(sshape_vertex_t, normal); + desc.format = SG_VERTEXFORMAT_BYTE4N; + return desc; +} + +SOKOL_API_IMPL sg_vertex_attr_desc sshape_texcoord_attr_desc(void) { + sg_vertex_attr_desc desc = { 0 }; + desc.offset = offsetof(sshape_vertex_t, u); + desc.format = SG_VERTEXFORMAT_USHORT2N; + return desc; +} + +SOKOL_API_IMPL sg_vertex_attr_desc sshape_color_attr_desc(void) { + sg_vertex_attr_desc desc = { 0 }; + desc.offset = offsetof(sshape_vertex_t, color); + desc.format = SG_VERTEXFORMAT_UBYTE4N; + return desc; +} + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif +#endif // SOKOL_SHAPE_IMPL diff --git a/source/engine/thirdparty/sokol/sokol_spine.h b/source/engine/thirdparty/sokol/sokol_spine.h new file mode 100644 index 0000000..2fd62c8 --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_spine.h @@ -0,0 +1,5759 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_SPINE_IMPL) +#define SOKOL_SPINE_IMPL +#endif +#ifndef SOKOL_SPINE_INCLUDED +/* + sokol_spine.h -- a sokol-gfx renderer for the spine-c runtime + (see https://github.com/EsotericSoftware/spine-runtimes/tree/4.1/spine-c) + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_SPINE_IMPL + + before you include this file in *one* C or C++ file to create the + implementation. + + The following defines are used by the implementation to select the + platform-specific embedded shader code (these are the same defines as + used by sokol_gfx.h and sokol_app.h): + + SOKOL_GLCORE33 + SOKOL_GLES3 + SOKOL_D3D11 + SOKOL_METAL + + ...optionally provide the following macros to override defaults: + + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_SPINE_API_DECL - public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_SPINE_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + SOKOL_UNREACHABLE() - a guard macro for unreachable code (default: assert(false)) + + If sokol_spine.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_SPINE_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + Include the following headers before including sokol_spine.h: + + sokol_gfx.h + + Include the following headers before include the sokol_spine.h *IMPLEMENTATION*: + + spine/spine.h + + You'll also need to compile and link with the spine-c runtime: + + https://github.com/EsotericSoftware/spine-runtimes/tree/4.1/spine-c/spine-c + + + FEATURE OVERVIEW + ================ + sokol_spine.h is a sokol-gfx renderer and 'handle wrapper' for Spine + (http://en.esotericsoftware.com/spine-in-depth) on top of the + spine-c runtime: http://en.esotericsoftware.com/spine-c (source code: + https://github.com/EsotericSoftware/spine-runtimes/tree/4.1/spine-c/spine-c). + + The sokol-gfx renderer allows to manage multiple contexts for rendering + Spine scenes into different sokol-gfx render passes (similar to sokol-gl and + sokol-debugtext), allows to split rendering into layers to mix Spine + rendering with other rendering operations, and it automatically batches + adjacent draw calls for Spine objects that use the same texture and in the + same layer. + + Sokol-spine wraps 'raw' spine-c objects with tagged index handles. This + eliminates the risk of memory corruption via dangling pointers. Any + API calls involving invalid objects either result in a no-op, or + in a proper error. + + The sokol-spine API exposes four 'base object types', and a number of + 'subobject types' which are owned by base objects. + + Base object types are: + + - sspine_atlas: A wrapper around a spine-c spAtlas object, each spAtlas + object owns at least one spAtlasPage object, and each spAtlasPage object + owns exactly one sokol-gfx image object. + + - sspine_skeleton: A skeleton object requires an atlas object for creation, + and is a wrapper around one spine-c spSkeletonData and one + spAnimationStateData object. both contain the shared static data for + individual spine instances + + - sspine_instance: Instance objects are created from skeleton objects. + Instances are the objects that are actually getting rendered. Each instance + tracks its own transformation and animation state, but otherwise just + references shared data of the skeleton object it was created from. An + sspine_instance object is a wrapper around one spine-c spSkeleton, + spAnimationState and spSkeletonClipping object each. + + - sspine_skinset: Skin-set objects are collections of skins which define + the look of an instance. Some Spine scenes consist of combinable skins + (for instance a human character could offer different skins for different + types of clothing, hats, scarfs, shirts, pants, and so on..., and a skin + set would represent a specific outfit). + + Subobject types allow to inspect and manipulate Spine objects in more detail: + + - sspine_anim: Each skeleton object usually offers animations which can + then be scheduled and mixed on an instance. + + - sspine_bone: Bone objects are the hierarchical transform nodes of + a skeleton. The sokol-spine API allows both to inspect the shared + static bone attributes of an sspine_skeleton object, as well as + inspecting and manipulating the per-instance bone attributes + on an sspine_instance object. + + - sspine_event: A running Spine animation may fire 'events' at certain + positions in time (for instance a 'footstep' event whenever a foot + hits the ground). Events can be used to play sound effects (or visual + effects) at the right time. + + - sspine_iktarget: Allows to set the target position for a group of + bones controlled by inverse kinematics. + + There's a couple of other subobject types which are mostly useful to + inspect the interior structure of skeletons. Those will be explained + in detail further down. + + MINIMAL API USAGE OVERVIEW + ========================== + During initialization: + + - call sspine_setup() after initializating sokol-gfx + - create an atlas object from a Spine atlas file with sspine_make_atlas() + - load and initialize the sokol-gfx image objects referenced by the atlas + - create a skeleton object from a Spine skeleton file with sspine_make_skeleton() + - create at least one instance object with sspine_make_instance() + + In the frame loop, outside of sokol-gfx render passes: + + - if needed, move instances around with sspine_set_position() + - if needed, schedule new animations with sspine_set_animation() and sspine_add_animation() + - each frame, advance the current instance animation state with sspine_update_instance() + - each frame, render instances with sspine_draw_instance_in_layer(), this just records + vertices, indices and draw commands into internal buffers, but does no actual + sokol-gfx rendering + + In the frame loop, inside a sokol-gfx render pass: + + - call sspine_draw_layer() to draw all previously recorded instances in a specific layer + + On shutdown: + + - call sspine_shutdown(), ideally before shutting down sokol-gfx + + QUICKSTART STEP BY STEP + ======================= + For a simple demo program using sokol_app.h, sokol_gfx.h and sokol_fetch.h, + see here: [TODO: add link to spine-simple-sapp wasm demo]. + + - sokol_spine.h must be included after sokol_gfx.h (this is true both + for the declaration and implementation): + + #include "sokol_gfx.h" + #include "sokol_spine.h" + + - ...and sokol_gfx.h must be initialized before sokol_spine.h: + + sg_setup(&(sg_desc){ ... }); + sspine_setup(&(sspine_desc){ ... }); + + - You should always provide a logging callback to sokol-spine, otherwise + no warning or errors will be logged. The easiest way is to use sokol_log.h + for this: + + #include "sokol_log.h" + + sspine_setup(&(sspine_desc){ + .logger = { + .func = slog_func + } + }); + + - You can tweak the memory usage of sokol-spine by limiting or expanding the + maximum number of vertices, draw commands and pool sizes: + + sspine_setup(&(sspine_desc){ + .max_vertices = 1024, // default: (1<<16) = 65536 + .max_commands = 128, // default: (1<<14) = 16384 + .context_pool_size = 1, // default: 4 + .atlas_pool_size = 1, // default: 64 + .skeleton_pool_size = 1, // default: 64 + .skinset_pool_size = 1, // default: 64 + .instance_pool_size = 16, // default: 1024 + .logger = { + .func = slog_func, + } + }); + + Sokol-spine uses 32-bit vertex-indices for rendering + (SG_INDEXTYPE_UINT32), so that the maximum number of Spine vertices + in a frame isn't limited to (1<<16). + + - You can override memory allocation and logging with your own + functions, this is explained in detail further down: + + sspine_setup(&(sspine_desc){ + .allocator = { + .alloc = my_alloc, + .free = my_free, + .user_data = ..., + }, + .logger = { + .log_func = my_log_func, + .user_data = ..., + } + }); + + - After initialization, the first thing you need is an sspine_atlas object. + Sokol-spine doesn't concern itself with file IO, it expects all external + data to be provided as pointer/size pairs: + + sspine_atlas atlas = sspine_make_atlas(&(sspine_atlas_desc){ + .data = { + .ptr = ..., // pointer to Spine atlas file data in memory + .size = ..., // atlas file data size in bytes + } + }); + assert(sspine_atlas_valid(atlas)); + + If you load the atlas data asynchronously, you can still run your + per-frame rendering code without waiting for the atlas data to be loaded + and the atlas to be created. This works because calling sokol-spine + functions with 'invalid' object handles is a valid no-op. + + - Optionally you can override some or all of the atlas texture creation parameters: + + sspine_atlas atlas = sspine_make_atlas(&(sspine_atlas_desc){ + .data = { ... }, + .overrides = { + .min_filter = SG_FILTER_NEAREST, + .mag_filter = SG_FILTER_NEAREST, + .wrap_u = SG_WRAP_MIRROR, + .wrap_v = SG_WRAP_MIRROR, + .premul_alpha_enabled = ..., + .premul_alpha_disabled = ..., + } + }); + + - The atlas file itself doesn't contain any texture data, it only contains + filenames of the required textures. Sokol-spine has already allocated + a sokol-gfx sg_image handle for each required texture, but the actual + texture loading and initialization must be performed by user code: + + // iterate over atlas textures and initialize sokol-gfx image objects + // with existing handles + const int num = sspine_num_images(atlas); + for (int i = 0; i < num; i++) { + const sspine_image img = sspine_image_by_index(atlas, i); + const sspine_image_info img_info = sspine_get_image_info(img); + assert(img_info.valid); + assert(!img_info.filename.truncated); + + // the filename is now in img_info.filename.cstr, 'somehow' + // load and decode the image data into memory, and then + // initialize the sokol-gfx image from the existing sg_image handle + // in img_info.sgimage: + sg_init_image(img_info.sgimage, &(sg_image_desc){ + .width = ..., + .height = ..., + .pixel_format = ..., + .min_filter = img_info.min_filter, + .mag_filter = img_info.mag_filter, + .wrap_u = img_info.wrap_u, + .wrap_v = img_info.wrap_v, + .data.subimage[0][0] = { + .ptr = ..., // pointer to decoded image pixel data + .size = ..., // size of decoded image pixel data in bytes + } + }); + } + + If you load the image data asynchronously, you can still simply start rendering + before the image data is loaded. This works because sokol-gfx will silently drop + any rendering operations that involve 'incomplete' objects. + + - Once an atlas object has been created (independently from loading any image data), + an sspine_skeleton object is needed next. This requires a valid atlas object + handle as input, and a pointer to the Spine skeleton file data loaded into memory. + + Spine skeleton files come in two flavours: binary or json, for binary data, + a ptr/size pair must be provided: + + sspine_skeleton skeleton = sspine_make_skeleton(&(sspine_skeleton_desc){ + .atlas = atlas, // atlas must be a valid sspine_atlas handle + .binary_data = { + .ptr = ..., // pointer to binary skeleton data in memory + .size = ..., // size of binary skeleton data in bytes + } + }); + assert(sspine_skeleton_valid(skeleton)); + + For JSON skeleton file data, the data must be provided as a zero-terminated C string: + + sspine_skeleton skeleton = sspine_make_skeleton(&(sspine_skeleton_desc){ + .atlas = atlas, + .json_data = ..., // JSON skeleton data as zero-terminated(!) C-string + }); + + Like with all sokol-spine objects, if you load the skeleton data asynchronously + and only then create a skeleton object, you can already start rendering before + the data is loaded and the Spine objects have been created. Any operations + involving 'incomplete' handles will be dropped. + + - You can pre-scale the Spine scene size, and you can provide a default cross-fade + duration for animation mixing: + + sspine_skeleton skeleton = sspine_make_skeleton(&(sspine_skeleton_desc){ + .atlas = atlas, + .binary_data = { ... }, + .prescale = 0.5f, // scale to half-size + .anim_default_mix = 0.2f, // default anim mixing cross-fade duration 0.2 seconds + }); + + - Once the skeleton object has been created, it's finally time to create one or many instance objects. + If you want to independently render and animate the 'same' Spine object many times in a frame, + you should only create one sspine_skeleton object, and then as many sspine_instance object + as needed from the shared skeleton object: + + sspine_instance instance = sspine_make_instance(&(sspine_instance_desc){ + .skeleton = skeleton, // must be a valid skeleton handle + }); + assert(sspine_instance_valid(instance)); + + After creation, the sspine_instance will have a 'default skin' set as its appearance. + + - To set the position of an instance: + + sspine_set_position(inst, (sspine_vec2){ .x=..., .y=... }); + + Sokol-spine doesn't define a specific unit (like pixels or meters), instead the + rendering coordinate system is defined later at 'render time'. + + - To schedule an initial looping animation by its name: + + // first lookup up the animation by name on the skeleton: + sspine_anim anim = sspine_anim_by_name(skeleton, "walk"); + assert(sspine_anim_valid(anim)); + + // then schedule the animation on the instance, on mixer track 0, as looping: + sspine_set_animation(instance, anim, 0, true); + + Scheduling and mixing animations will be explained in more detail further down. + + - To advance and mix instance animations: + + sspine_update_instance(instance, delta_time_in_seconds); + + Usually you'd call this each frame for each active instance with the + frame duration in seconds. + + - Now it's finally time to 'render' the instance at its current position and + animation state: + + sspine_draw_instance_in_layer(instance, 0); + + Instances are generally rendered into numbered virtual 'render layers' (in this + case, layer 0). Layers are useful for interleaving sokol-spine rendering + with other rendering commands (like background and foreground tile maps, + sprites or text). + + - It's important to note that no actual sokol-gfx rendering happens in + sspine_draw_instance_in_layer(), instead only vertices, indices and + draw commands are recorded into internal memory buffes. + + - The only sokol-spine function which *must* (and should) be called inside + a sokol-gfx rendering pass is sspine_draw_layer(). + + This renders all draw commands that have been recorded previously in a + specific layer via sspine_draw_instance_in_layer(). + + const sspine_layer_transform tform = { ... }; + + sg_begin_default_pass(...); + sspine_draw_layer(0, tform); + sg_end_pass(); + sg_commit(); + + IMPORTANT: DO *NOT* MIX any calls to sspine_draw_instance_in_layer() + with sspine_draw_layer(), as this will confuse the internal draw command + recording. Ideally, move all sokol-gfx pass rendering (including all + sspine_draw_layer() calls) towards the end of the frame, separate from + any other sokol-spine calls. + + The sspine_layer_transform struct defines the layer's screen space coordinate + system. For instance to map Spine coordinates to framebuffer pixels, with the + origin in the screen center, you'd setup the layer transform like this: + + const float width = sapp_widthf(); + const float height = sapp_heightf(); + const sspine_layer_transform tform = { + .size = { .x = width, .y = height }, + .origin = { .x = width * 0.5f, .y = height * 0.5f }, + }; + + With this pixel mapping, the Spine scene would *not* scale with window size, + which often is not very useful. Instead it might make more sense to render + to a fixed 'virtual' resolution, for instance 1024 * 768: + + const sspine_layer_transform tform = { + .size = { .x = 1024.0f, .y = 768.0f }, + .origin = { .x = 512.0f, .y = 384.0f }, + }; + + How to configure a virtual resolution with a fixed aspect ratio is + left as an exercise to the reader ;) + + - That's it for basic sokol-spine setup and rendering. Any existing objects + will automatically be cleaned up when calling sspine_shutdown(), this + should be called before shutting down sokol-gfx, but this is not required: + + sspine_shutdown(); + sg_shutdown(); + + - You can explicitely destroy the base object types if you don't need them + any longer. This will cause the underlying spine-c objects to be + freed and the memory to be returned to the operating system: + + sspine_destroy_instance(instance); + sspine_destroy_skinset(skinset); + sspine_destroy_skeleton(skeleton); + sspine_destroy_atlas(atlas); + + You can destroy these objects in any order without causing memory corruption + issues. Instead any dependent object handles will simply become invalid (e.g. + if you destroy an atlas object, all skeletons and instances created from + this atlas will 'technically' still exist, but their handles will resolve to + 'invalid' and all sokol-spine calls involving these handles will silently fail). + + For instance: + + // create an atlas, skeleton and instance + sspine_atlas atlas = sspine_make_atlas(&(sspine_atlas_desc){ ... }); + assert(sspine_atlas_valid(atlas)); + + sspine_skeleton skeleton = sspine_make_skeleton(&(sspine_skeleton_desc){ + .atlas = atlas, + ... + }); + assert(sspine_skeleton_valid(skeleton)); + + sspine_instance instance = sspine_make_instance(&(sspine_instance_desc){ + .skeleton = skeleton, + }); + assert(sspine_instance_valid(instance)); + + // destroy the atlas object: + sspine_destroy_atlas(atlas); + + // the skeleton and instance handle should now be invalid, but + // otherwise, nothing bad will happen: + if (!sspine_skeleton_valid(skeleton)) { + ... + } + if (!sspine_instance_valid(instance)) { + ... + } + + RENDERER DETAILS + ================ + Any rendering related work happens in the functions sspine_draw_instance_in_layer() and + sspine_draw_layer(). + + sspine_draw_instance_in_layer() will result in vertices, indices and internal + draw commands which will be recorded into internal memory buffers (e.g. + no sokol-gfx functions will be called here). + + If possible, batching will be performed by merging a new draw command with + the previously recorded draw command. For two draw commands to be merged, + the following conditions must be tru: + + - rendering needs to go into the same layer + - the same atlas texture must be used + - the blend mode must be compatible (the Spine blending modes + 'normal' and 'additive' can be merged, but not 'multiply') + - the same premultiplied alpha mode must be used + + To make the most out of batching: + + - use Spine objects which only have a single atlas texture + and blend mode across all slots + - group sspine_draw_instance_in_layer() calls by layer + + After all instances have been 'rendered' (or rather: recorded) into layers, + the actually rendering happens inside a sokol-gfx pass by calling the + function sspine_draw_layer() for each layer in 'z order' (e.g. the layer + index doesn't matter for z-ordering, only the order how sspine_draw_layer() is + called). + + Only the first call to sspine_draw_layer() in a frame will copy the recorded + vertices and indices into sokol-gfx buffers. + + Each call to sspine_draw_layer() will iterate over all recorded (and + hopefully well-batched) draw commands, skip any draw commands with a + non-matching layer index, and draw only those with a matching layer by + calling: + + - if the pipeline object has changed: + - sg_apply_pipeline() + - sg_apply_uniforms() for the vertex stage + - if the atlas texture has changed: + - sg_apply_bindings() + - if the premultiplied-alpha mode has changed: + - sg_apply_uniforms() for the fragment stage + - and finally sg_draw() + + The main purpose of render layers is to mix Spine rendering with other + render operations. In the not too distant future, the same render layer idea + will also be implemented at least for sokol-gl and sokol-debugtext. + + FIXME: does this section need more details about layer transforms? + + RENDERING WITH CONTEXTS + ======================= + At first glance, render contexts may look like more heavy-weight + render layers, but they serve a different purpose: they are useful + if Spine rendering needs to happen in different sokol-gfx render passes + with different pixel formats and MSAA sample counts. + + All Spine rendering happens within a context, even you don't call any + of the context API functions, in this case, an internal 'default context' + will be used. + + Each context has its own internal vertex-, index- and command buffer and + all context state is completely independent from any other contexts. + + To create a new context object, call: + + sspine_context ctx = sspine_make_context(&(sspine_context_desc){ + .max_vertices = ..., + .max_commands = ..., + .color_format = SG_PIXELFORMAT_..., + .depth_format = SG_PIXELFORMAT_..., + .sample_count = ..., + .color_write_mask = SG_COLORMASK_..., + }); + + The color_format, depth_format and sample_count items must be compatible + with the sokol-gfx render pass you're going to render into. + + If you omit the color_format, depth_format and sample_count designators, + the new context will be compatible with the sokol-gfx default pass + (which is most likely not what you want, unless your offscreen render passes + exactly match the default pass attributes). + + Once a context has been created, it can be made active with: + + sspine_set_context(ctx); + + To set the default context again: + + sspine_set_contxt(sspine_default_context()); + + ...and to get the currently active context: + + sspine_context cur_ctx = sspine_get_context(); + + The currently active context only matter for two functions: + + - sspine_draw_instance_in_layer() + - sspine_draw_layer() + + Alternatively you can bypass the currently set context with these + alternative functions: + + - sspine_context_draw_layer_in_instance(ctx, ...) + - sspine_context_draw_layer(ctx, ...) + + These explicitely take a context argument, completely ignore + and don't change the active context. + + You can query some information about the a context with the function: + + sspine_context_info info = ssgpine_get_context_info(ctx); + + This returns the current number of recorded vertices, indices + and draw commands. + + RESOURCE STATES: + ================ + Similar to sokol-gfx, you can query the current 'resource state' of Spine + objects: + + sspine_resource_state sspine_get_atlas_resource_state(sspine_atlas atlas); + sspine_resource_state sspine_get_skeleton_resource_state(sspine_atlas atlas); + sspine_resource_state sspine_get_instance_resource_state(sspine_atlas atlas); + sspine_resource_state sspine_get_skinset_resource_state(sspine_atlas atlas); + sspine_resource_state sspine_get_context_resource_state(sspine_atlas atlas); + + This returns one of + + - SSPINE_RESOURCE_VALID: the object is valid and ready to use + - SSPINE_RESOURCE_FAILED: the object creation has failed + - SSPINE_RESOURCE_INVALID: the object or one of its dependencies is + invalid, it either no longer exists, or the the handle hasn't been + initialized with a call to one of the object creation functions + + MISC HELPER FUNCTIONS: + ====================== + There's a couple of helper functions which don't fit into a big enough category + of their own: + + You can ask a skeleton for the atlas it has been created from: + + sspine_atlas atlas = sspine_get_skeleton_atlas(skeleton); + + ...and likewise, ask an instance for the skeleton it has been created from: + + sspine_skeleton skeleton = sspine_get_instance_skeleton(instance); + + ...and finally you can convert a layer transform struct into a 4x4 projection + matrix that's memory-layout compatible with sokol-gl: + + const sspine_layer_transform tform = { ... }; + const sspine_mat4 proj = sspine_layer_transform_to_mat4(&tform); + sgl_matrix_mode_projection(); + sgl_load_matrix(proj.m); + + ANIMATIONS + ========== + Animations have their own handle type sspine_anim. A valid sspine_anim + handle is either obtained by looking up an animation by name from a skeleton: + + sspine_anim anim = sspine_anim_by_name(skeleton, "walk"); + + ...or by index: + + sspine_anim anim = sspine_anim_by_index(skeleton, 0); + + The returned anim handle will be invalid if an animation of that name doesn't + exist, or the provided index is out-of-range: + + if (!sspine_anim_is_valid(anim)) { + // animation handle is not valid + } + + An animation handle will also become invalid when the skeleton object it was + created is destroyed, or otherwise becomes invalid. + + You can iterate over all animations in a skeleton: + + const int num_anims = sspine_num_anims(skeleton); + for (int anim_index = 0; anim_index < num_anims; anim_index++) { + sspine_anim anim = sspine_anim_by_index(skeleton, anim_index); + ... + } + + Since sspine_anim is a 'fat handle' (it houses a skeleton handle and an index), + there's a helper function which checks if two anim handles are equal: + + if (sspine_anim_equal(anim0, anim1)) { + ... + } + + To query information about an animation: + + const sspine_anim_info info = sspine_get_anim_info(anim); + if (info.valid) { + printf("index: %d, duration: %f, name: %s", info.index, info.duration, info.name.cstr); + } + + Scheduling and mixing animations is controlled through the following functions: + + void sspine_clear_animation_tracks(sspine_instance instance); + void sspine_clear_animation_track(sspine_instance instance, int track_index); + void sspine_set_animation(sspine_instance instance, sspine_anim anim, int track_index, bool loop); + void sspine_add_animation(sspine_instance instance, sspine_anim anim, int track_index, bool loop, float delay); + void sspine_set_empty_animation(sspine_instance instance, int track_index, float mix_duration); + void sspine_add_empty_animation(sspine_instance instance, int track_index, float mix_duration, float delay); + + Please refer to the spine-c documentation to get an idea what these functions do: + + http://en.esotericsoftware.com/spine-c#Applying-animations + + EVENTS + ====== + For a general idea of Spine events, see here: http://esotericsoftware.com/spine-events + + After calling sspine_update_instance() to advance the currently configured animations, + you can poll for triggered events like this: + + const int num_triggered_events = sspine_num_triggered_events(instance); + for (int i = 0; i < num_triggered_events; i++) { + const sspine_triggered_event_info info = sspine_get_triggered_event_info(instance, i); + if (info.valid) { + ... + } + } + + The returned sspine_triggered_event_info struct gives you the current runtime properties + of the event (in case the event has keyed properties). For the actual list of event + properties please see the actual sspine_triggered_event_info struct declaration. + + It's also possible to inspect the static event definition on a skeleton, this works + the same as iterating through animations. You can lookup an event by name, + get the number of events, lookup an event by its index, and get detailed + information about an event: + + int sspine_num_events(sspine_skeleton skeleton); + sspine_event sspine_event_by_name(sspine_skeleton skeleton, const char* name); + sspine_event sspine_event_by_index(sspine_skeleton skeleton, int index); + bool sspine_event_valid(sspine_event event); + bool sspine_event_equal(sspine_event first, sspine_event second); + sspine_event_info sspine_get_event_info(sspine_event event); + + (FIXME: shouldn't the event info struct contains an sspine_anim handle?) + + IK TARGETS + ========== + The IK target function group allows to iterate over the IK targets that have been + defined on a skeleton, find an IK target by name, get detailed information about + an IK target, and most importantly, set the world space position of an IK target + which updates the position of all bones influenced by the IK target: + + int sspine_num_iktargets(sspine_skeleton skeleton); + sspine_iktarget sspine_iktarget_by_name(sspine_skeleton skeleton, const char* name); + sspine_iktarget sspine_iktarget_by_index(sspine_skeleton skeleton, int index); + bool sspine_iktarget_valid(sspine_iktarget iktarget); + bool sspine_iktarget_equal(sspine_iktarget first, sspine_iktarget second); + sspine_iktarget_info sspine_get_iktarget_info(sspine_iktarget iktarget); + void sspine_set_iktarget_world_pos(sspine_instance instance, sspine_iktarget iktarget, sspine_vec2 world_pos); + + BONES + ===== + Skeleton bones are wrapped with an sspine_bone handle which can be created from + a skeleton handle, and either a bone name: + + sspine_bone bone = sspine_bone_by_name(skeleton, "root"); + assert(sspine_bone_valid(bone)); + + ...or a bone index: + + sspine_bone bone = sspine_bone_by_index(skeleton, 0); + assert(sspine_bone_valid(bone)); + + ...to iterate over all bones of a skeleton and query information about each + bone: + + const int num_bones = sspine_num_bones(skeleton); + for (int bone_index = 0; bone_index < num_bones; bone_index++) { + sspine_bone bone = sspine_bone_by_index(skeleton, bone_index); + const sspine_bone_info info = sspine_get_bone_info(skeleton, bone); + if (info.valid) { + ... + } + } + + The sspine_bone_info struct provides the shared, static bone state in the skeleton (like + the name, a parent bone handle, bone length, pose transform and a color attribute), + but doesn't contain any dynamic information of per-instance bones. + + To manipulate the per-instance bone attributes use the following setter functions: + + void sspine_set_bone_transform(sspine_instance instance, sspine_bone bone, const sspine_bone_transform* transform); + void sspine_set_bone_position(sspine_instance instance, sspine_bone bone, sspine_vec2 position); + void sspine_set_bone_rotation(sspine_instance instance, sspine_bone bone, float rotation); + void sspine_set_bone_scale(sspine_instance instance, sspine_bone bone, sspine_vec2 scale); + void sspine_set_bone_shear(sspine_instance instance, sspine_bone bone, sspine_vec2 shear); + + ...and to query the per-instance bone attributes, the following getters: + + sspine_bone_transform sspine_get_bone_transform(sspine_instance instance, sspine_bone bone); + sspine_vec2 sspine_get_bone_position(sspine_instance instance, sspine_bone bone); + float sspine_get_bone_rotation(sspine_instance instance, sspine_bone bone); + sspine_vec2 sspine_get_bone_scale(sspine_instance instance, sspine_bone bone); + sspine_vec2 sspine_get_bone_shear(sspine_instance instance, sspine_bone bone); + + These functions all work in the local bone coordinate system (relative to a bone's parent bone). + + To transform positions between bone-local and global space use the following helper functions: + + sspine_vec2 sspine_bone_local_to_world(sspine_instance instance, sspine_bone bone, sspine_vec2 local_pos); + sspine_vec2 sspine_bone_world_to_local(sspine_instance instance, sspine_bone bone, sspine_vec2 world_pos); + + ...and as a convenience, there's a helper function which obtains the bone position in global space + directly: + + sspine_vec2 sspine_get_bone_world_position(sspine_instance instance, sspine_bone bone); + + SKINS AND SKINSETS + ================== + Skins are named pieces of geometry which can be turned on and off, what makes Spine skins a bit + confusing is that they are hierarchical. A skin can itself be a collection of other skins. Setting + the 'root skin' will also make all 'child skins' visible. In sokol-spine collections of skins are + managed through dedicated 'skin set' objects. Under the hood they create a 'root skin' where the + skins of the skin set are attached to, but from the outside it just looks like a 'flat' collection + of skins without the tricky hierarchical management. + + Like other 'subobjects', skin handles can be obtained by the skin name from a skeleton handle: + + sspine_skin skin = sspine_skin_by_name(skeleton, "jacket"); + assert(sspine_skin_valid(skin)); + + ...or by a skin index: + + sspine_skin skin = sspine_skin_by_index(skeleton, 0); + assert(sspine_skin_valid(skin)); + + ...you can iterate over all skins of a skeleton and query some information about the skin: + + const int num_skins = sspine_num_skins(skeleton); + for (int skin_index = 0; skin_index < num_skins; skin_index++) { + sspine_skin skin = sspine_skin_by_index(skin_index); + sspine_skin_info info = sspine_get_skin_info(skin); + if (info.valid) { + ... + } + } + + Currently, the only useful query item is the skin name though. + + To make a skin visible on an instance, just call: + + sspine_set_skin(instance, skin); + + ...this will first deactivate the previous skin before setting a new skin. + + A more powerful way to configure the skin visibility is through 'skin sets'. Skin + sets are simply flat collections of skins which should be made visible at once. + A new skin set is created like this: + + sspine_skinset skinset = sspine_make_skinset(&(sspine_skinset_desc){ + .skeleton = skeleton, + .skins = { + sspine_skin_by_name(skeleton, "blue-jacket"), + sspine_skin_by_name(skeleton, "green-pants"), + sspine_skin_by_name(skeleton, "blonde-hair"), + ... + } + }); + assert(sspine_skinset_valid(skinset)) + + ...then simply set the skinset on an instance to reconfigure the appearance + of the instance: + + sspine_set_skinset(instance, skinset); + + The functions sspine_set_skinset() and sspine_set_skin() will cancel each other. + Calling sspine_set_skinset() deactivates the effect of sspine_set_skin() and + vice versa. + + + ERROR REPORTING AND LOGGING + =========================== + To get any logging information at all you need to provide a logging callback in the setup call, + the easiest way is to use sokol_log.h: + + #include "sokol_log.h" + + sspine_setup(&(sspine_desc){ .logger.func = slog_func }); + + To override logging with your own callback, first write a logging function like this: + + void my_log(const char* tag, // e.g. 'sspine' + uint32_t log_level, // 0=panic, 1=error, 2=warn, 3=info + uint32_t log_item_id, // SSPINE_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_spine.h + const char* filename_or_null, // source filename, may be nullptr in release mode + void* user_data) + { + ... + } + + ...and then setup sokol-spine like this: + + sspine_setup(&(sspine_desc){ + .logger = { + .func = my_log, + .user_data = my_user_data, + } + }); + + The provided logging function must be reentrant (e.g. be callable from + different threads). + + If you don't want to provide your own custom logger it is highly recommended to use + the standard logger in sokol_log.h instead, otherwise you won't see any warnings or + errors. + + + MEMORY ALLOCATION OVERRIDE + ========================== + You can override the memory allocation functions at initialization time + like this: + + void* my_alloc(size_t size, void* user_data) { + return malloc(size); + } + + void my_free(void* ptr, void* user_data) { + free(ptr); + } + + ... + sspine_setup(&(sspine_desc){ + // ... + .allocator = { + .alloc = my_alloc, + .free = my_free, + .user_data = ...; + } + }); + ... + + If no overrides are provided, malloc and free will be used. + + This only affects memory allocation calls done by sokol_gfx.h + itself though, not any allocations in OS libraries. + + + LICENSE + ======= + zlib/libpng license + + Copyright (c) 2022 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_SPINE_INCLUDED (1) +#include +#include +#include // size_t + +#if !defined(SOKOL_GFX_INCLUDED) +#error "Please include sokol_gfx.h before sokol_spine.h" +#endif + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_SPINE_API_DECL) +#define SOKOL_SPINE_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_SPINE_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_SPINE_IMPL) +#define SOKOL_SPINE_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_SPINE_API_DECL __declspec(dllimport) +#else +#define SOKOL_SPINE_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + SSPINE_INVALID_ID = 0, + SSPINE_MAX_SKINSET_SKINS = 32, + SSPINE_MAX_STRING_SIZE = 61, // see sspine_string struct +}; + +typedef struct sspine_context { uint32_t id; } sspine_context; +typedef struct sspine_atlas { uint32_t id; } sspine_atlas; +typedef struct sspine_skeleton { uint32_t id; } sspine_skeleton; +typedef struct sspine_instance { uint32_t id; } sspine_instance; +typedef struct sspine_skinset { uint32_t id; } sspine_skinset; + +typedef struct sspine_image { uint32_t atlas_id; int index; } sspine_image; +typedef struct sspine_atlas_page { uint32_t atlas_id; int index; } sspine_atlas_page; +typedef struct sspine_anim { uint32_t skeleton_id; int index; } sspine_anim; +typedef struct sspine_bone { uint32_t skeleton_id; int index; } sspine_bone; +typedef struct sspine_slot { uint32_t skeleton_id; int index; } sspine_slot; +typedef struct sspine_event { uint32_t skeleton_id; int index; } sspine_event; +typedef struct sspine_iktarget { uint32_t skeleton_id; int index; } sspine_iktarget; +typedef struct sspine_skin { uint32_t skeleton_id; int index; } sspine_skin; + +typedef struct sspine_range { const void* ptr; size_t size; } sspine_range; +typedef struct sspine_vec2 { float x, y; } sspine_vec2; +typedef struct sspine_mat4 { float m[16]; } sspine_mat4; +typedef sg_color sspine_color; + +typedef struct sspine_string { + bool valid; + bool truncated; + uint8_t len; + char cstr[SSPINE_MAX_STRING_SIZE]; +} sspine_string; + +typedef enum sspine_resource_state { + SSPINE_RESOURCESTATE_INITIAL, + SSPINE_RESOURCESTATE_ALLOC, + SSPINE_RESOURCESTATE_VALID, + SSPINE_RESOURCESTATE_FAILED, + SSPINE_RESOURCESTATE_INVALID, + _SSPINE_RESOURCESTATE_FORCE_U32 = 0x7FFFFFFF +} sspine_resource_state; + +// log item codes via x-macro magic +#define _SSPINE_LOG_ITEMS \ + _SSPINE_LOGITEM_XMACRO(OK, "Ok")\ + _SSPINE_LOGITEM_XMACRO(MALLOC_FAILED, "memory allocation failed")\ + _SSPINE_LOGITEM_XMACRO(CONTEXT_POOL_EXHAUSTED, "context pool exhausted (adjust via sspine_desc.context_pool_size)")\ + _SSPINE_LOGITEM_XMACRO(ATLAS_POOL_EXHAUSTED, "atlas pool exhausted (adjust via sspine_desc.atlas_pool_size)")\ + _SSPINE_LOGITEM_XMACRO(SKELETON_POOL_EXHAUSTED, "skeleton pool exhausted (adjust via sspine_desc.skeleton_pool_size)")\ + _SSPINE_LOGITEM_XMACRO(SKINSET_POOL_EXHAUSTED, "skinset pool exhausted (adjust via sspine_desc.skinset_pool_size)")\ + _SSPINE_LOGITEM_XMACRO(INSTANCE_POOL_EXHAUSTED, "instance pool exhausted (adjust via sspine_desc.instance_pool_size)")\ + _SSPINE_LOGITEM_XMACRO(CANNOT_DESTROY_DEFAULT_CONTEXT, "cannot destroy default context")\ + _SSPINE_LOGITEM_XMACRO(ATLAS_DESC_NO_DATA, "no data provided in sspine_atlas_desc.data")\ + _SSPINE_LOGITEM_XMACRO(SPINE_ATLAS_CREATION_FAILED, "spAtlas_create() failed")\ + _SSPINE_LOGITEM_XMACRO(SG_ALLOC_IMAGE_FAILED, "sg_alloc_image() failed")\ + _SSPINE_LOGITEM_XMACRO(SKELETON_DESC_NO_DATA, "no data provided in sspine_skeleton_desc.json_data or .binary_data")\ + _SSPINE_LOGITEM_XMACRO(SKELETON_DESC_NO_ATLAS, "no atlas object provided in sspine_skeleton_desc.atlas")\ + _SSPINE_LOGITEM_XMACRO(SKELETON_ATLAS_NOT_VALID, "sspine_skeleton_desc.atlas is not in valid state")\ + _SSPINE_LOGITEM_XMACRO(CREATE_SKELETON_DATA_FROM_JSON_FAILED, "spSkeletonJson_readSkeletonData() failed")\ + _SSPINE_LOGITEM_XMACRO(CREATE_SKELETON_DATA_FROM_BINARY_FAILED, "spSkeletonBinary_readSkeletonData() failed")\ + _SSPINE_LOGITEM_XMACRO(SKINSET_DESC_NO_SKELETON, "no skeleton object provided in sspine_skinset_desc.skeleton")\ + _SSPINE_LOGITEM_XMACRO(SKINSET_SKELETON_NOT_VALID, "sspine_skinset_desc.skeleton is not in valid state")\ + _SSPINE_LOGITEM_XMACRO(SKINSET_INVALID_SKIN_HANDLE, "invalid skin handle in sspine_skinset_desc.skins[]")\ + _SSPINE_LOGITEM_XMACRO(INSTANCE_DESC_NO_SKELETON, "no skeleton object provided in sspine_instance_desc.skeleton")\ + _SSPINE_LOGITEM_XMACRO(INSTANCE_SKELETON_NOT_VALID, "sspine_instance_desc.skeleton is not in valid state")\ + _SSPINE_LOGITEM_XMACRO(INSTANCE_ATLAS_NOT_VALID, "skeleton's atlas object no longer valid via sspine_instance_desc.skeleton")\ + _SSPINE_LOGITEM_XMACRO(SPINE_SKELETON_CREATION_FAILED, "spSkeleton_create() failed")\ + _SSPINE_LOGITEM_XMACRO(SPINE_ANIMATIONSTATE_CREATION_FAILED, "spAnimationState_create() failed")\ + _SSPINE_LOGITEM_XMACRO(SPINE_SKELETONCLIPPING_CREATION_FAILED, "spSkeletonClipping_create() failed")\ + _SSPINE_LOGITEM_XMACRO(COMMAND_BUFFER_FULL, "command buffer full (adjust via sspine_desc.max_commands)")\ + _SSPINE_LOGITEM_XMACRO(VERTEX_BUFFER_FULL, "vertex buffer (adjust via sspine_desc.max_vertices)")\ + _SSPINE_LOGITEM_XMACRO(INDEX_BUFFER_FULL, "index buffer full (adjust via sspine_desc.max_vertices)")\ + _SSPINE_LOGITEM_XMACRO(STRING_TRUNCATED, "a string has been truncated")\ + _SSPINE_LOGITEM_XMACRO(ADD_COMMIT_LISTENER_FAILED, "sg_add_commit_listener() failed")\ + +#define _SSPINE_LOGITEM_XMACRO(item,msg) SSPINE_LOGITEM_##item, +typedef enum sspine_log_item { + _SSPINE_LOG_ITEMS +} sspine_log_item; +#undef _SSPINE_LOGITEM_XMACRO + +typedef struct sspine_layer_transform { + sspine_vec2 size; + sspine_vec2 origin; +} sspine_layer_transform; + +typedef struct sspine_bone_transform { + sspine_vec2 position; + float rotation; // in degrees + sspine_vec2 scale; + sspine_vec2 shear; // in degrees +} sspine_bone_transform; + +typedef struct sspine_context_desc { + int max_vertices; + int max_commands; + sg_pixel_format color_format; + sg_pixel_format depth_format; + int sample_count; + sg_color_mask color_write_mask; +} sspine_context_desc; + +typedef struct sspine_context_info { + int num_vertices; // current number of vertices + int num_indices; // current number of indices + int num_commands; // current number of commands +} sspine_context_info; + +typedef struct sspine_image_info { + bool valid; + sg_image sgimage; + sg_filter min_filter; + sg_filter mag_filter; + sg_wrap wrap_u; + sg_wrap wrap_v; + int width; + int height; + bool premul_alpha; + sspine_string filename; +} sspine_image_info; + +typedef struct sspine_atlas_overrides { + sg_filter min_filter; + sg_filter mag_filter; + sg_wrap wrap_u; + sg_wrap wrap_v; + bool premul_alpha_enabled; + bool premul_alpha_disabled; +} sspine_atlas_overrides; + +typedef struct sspine_atlas_desc { + sspine_range data; + sspine_atlas_overrides override; +} sspine_atlas_desc; + +typedef struct sspine_atlas_page_info { + bool valid; + sspine_atlas atlas; + sspine_image_info image; + sspine_atlas_overrides overrides; +} sspine_atlas_page_info; + +typedef struct sspine_skeleton_desc { + sspine_atlas atlas; + float prescale; + float anim_default_mix; + const char* json_data; + sspine_range binary_data; +} sspine_skeleton_desc; + +typedef struct sspine_skinset_desc { + sspine_skeleton skeleton; + sspine_skin skins[SSPINE_MAX_SKINSET_SKINS]; +} sspine_skinset_desc; + +typedef struct sspine_anim_info { + bool valid; + int index; + float duration; + sspine_string name; +} sspine_anim_info; + +typedef struct sspine_bone_info { + bool valid; + int index; + sspine_bone parent_bone; + float length; + sspine_bone_transform pose; + sspine_color color; + sspine_string name; +} sspine_bone_info; + +typedef struct sspine_slot_info { + bool valid; + int index; + sspine_bone bone; + sspine_color color; + sspine_string attachment_name; + sspine_string name; +} sspine_slot_info; + +typedef struct sspine_iktarget_info { + bool valid; + int index; + sspine_bone target_bone; + sspine_string name; +} sspine_iktarget_info; + +typedef struct sspine_skin_info { + bool valid; + int index; + sspine_string name; +} sspine_skin_info; + +typedef struct sspine_event_info { + bool valid; + int index; + int int_value; + float float_value; + float volume; + float balance; + sspine_string name; + sspine_string string_value; + sspine_string audio_path; +} sspine_event_info; + +typedef struct sspine_triggered_event_info { + bool valid; + sspine_event event; + float time; + int int_value; + float float_value; + float volume; + float balance; + sspine_string string_value; +} sspine_triggered_event_info; + +typedef struct sspine_instance_desc { + sspine_skeleton skeleton; +} sspine_instance_desc; + +typedef struct sspine_allocator { + void* (*alloc)(size_t size, void* user_data); + void (*free)(void* ptr, void* user_data); + void* user_data; +} sspine_allocator; + +typedef struct sspine_logger { + void (*func)( + const char* tag, // always "sspine" + uint32_t log_level, // 0=panic, 1=error, 2=warning, 3=info + uint32_t log_item_id, // SSPINE_LOGITEM_* + const char* message_or_null, // a message string, may be nullptr in release mode + uint32_t line_nr, // line number in sokol_spine.h + const char* filename_or_null, // the source filename, may be nullptr in release mode + void* user_data); + void* user_data; +} sspine_logger; + +typedef struct sspine_desc { + int max_vertices; + int max_commands; + int context_pool_size; + int atlas_pool_size; + int skeleton_pool_size; + int skinset_pool_size; + int instance_pool_size; + sg_pixel_format color_format; + sg_pixel_format depth_format; + int sample_count; + sg_color_mask color_write_mask; + sspine_allocator allocator; // optional allocation override functions (default: malloc/free) + sspine_logger logger; // optional logging function (default: NO LOGGING!) +} sspine_desc; + +// setup/shutdown +SOKOL_SPINE_API_DECL void sspine_setup(const sspine_desc* desc); +SOKOL_SPINE_API_DECL void sspine_shutdown(void); + +// context functions +SOKOL_SPINE_API_DECL sspine_context sspine_make_context(const sspine_context_desc* desc); +SOKOL_SPINE_API_DECL void sspine_destroy_context(sspine_context ctx); +SOKOL_SPINE_API_DECL void sspine_set_context(sspine_context ctx); +SOKOL_SPINE_API_DECL sspine_context sspine_get_context(void); +SOKOL_SPINE_API_DECL sspine_context sspine_default_context(void); +SOKOL_SPINE_API_DECL sspine_context_info sspine_get_context_info(sspine_context ctx); + +// create and destroy spine objects +SOKOL_SPINE_API_DECL sspine_atlas sspine_make_atlas(const sspine_atlas_desc* desc); +SOKOL_SPINE_API_DECL sspine_skeleton sspine_make_skeleton(const sspine_skeleton_desc* desc); +SOKOL_SPINE_API_DECL sspine_skinset sspine_make_skinset(const sspine_skinset_desc* desc); +SOKOL_SPINE_API_DECL sspine_instance sspine_make_instance(const sspine_instance_desc* desc); +SOKOL_SPINE_API_DECL void sspine_destroy_atlas(sspine_atlas atlas); +SOKOL_SPINE_API_DECL void sspine_destroy_skeleton(sspine_skeleton skeleton); +SOKOL_SPINE_API_DECL void sspine_destroy_skinset(sspine_skinset skinset); +SOKOL_SPINE_API_DECL void sspine_destroy_instance(sspine_instance instance); + +// configure instance appearance via skinsets +SOKOL_SPINE_API_DECL void sspine_set_skinset(sspine_instance instance, sspine_skinset skinset); + +// update instance animations before drawing +SOKOL_SPINE_API_DECL void sspine_update_instance(sspine_instance instance, float delta_time); + +// iterate over triggered events after updating an instance +SOKOL_SPINE_API_DECL int sspine_num_triggered_events(sspine_instance instance); +SOKOL_SPINE_API_DECL sspine_triggered_event_info sspine_get_triggered_event_info(sspine_instance instance, int triggered_event_index); + +// draw instance into current or explicit context +SOKOL_SPINE_API_DECL void sspine_draw_instance_in_layer(sspine_instance instance, int layer); +SOKOL_SPINE_API_DECL void sspine_context_draw_instance_in_layer(sspine_context ctx, sspine_instance instance, int layer); + +// helper function to convert sspine_layer_transform into projection matrix +SOKOL_SPINE_API_DECL sspine_mat4 sspine_layer_transform_to_mat4(const sspine_layer_transform* tform); + +// draw a layer in current context or explicit context (call once per context and frame in sokol-gfx pass) +SOKOL_SPINE_API_DECL void sspine_draw_layer(int layer, const sspine_layer_transform* tform); +SOKOL_SPINE_API_DECL void sspine_context_draw_layer(sspine_context ctx, int layer, const sspine_layer_transform* tform); + +// get current resource state (INITIAL, ALLOC, VALID, FAILED, INVALID) +SOKOL_SPINE_API_DECL sspine_resource_state sspine_get_context_resource_state(sspine_context context); +SOKOL_SPINE_API_DECL sspine_resource_state sspine_get_atlas_resource_state(sspine_atlas atlas); +SOKOL_SPINE_API_DECL sspine_resource_state sspine_get_skeleton_resource_state(sspine_skeleton skeleton); +SOKOL_SPINE_API_DECL sspine_resource_state sspine_get_skinset_resource_state(sspine_skinset skinset); +SOKOL_SPINE_API_DECL sspine_resource_state sspine_get_instance_resource_state(sspine_instance instance); + +// shortcut for sspine_get_*_state() == SSPINE_RESOURCESTATE_VALID +SOKOL_SPINE_API_DECL bool sspine_context_valid(sspine_context context); +SOKOL_SPINE_API_DECL bool sspine_atlas_valid(sspine_atlas atlas); +SOKOL_SPINE_API_DECL bool sspine_skeleton_valid(sspine_skeleton skeleton); +SOKOL_SPINE_API_DECL bool sspine_instance_valid(sspine_instance instance); +SOKOL_SPINE_API_DECL bool sspine_skinset_valid(sspine_skinset skinset); + +// get dependency objects +SOKOL_SPINE_API_DECL sspine_atlas sspine_get_skeleton_atlas(sspine_skeleton skeleton); +SOKOL_SPINE_API_DECL sspine_skeleton sspine_get_instance_skeleton(sspine_instance instance); + +// atlas images +SOKOL_SPINE_API_DECL int sspine_num_images(sspine_atlas atlas); +SOKOL_SPINE_API_DECL sspine_image sspine_image_by_index(sspine_atlas atlas, int index); +SOKOL_SPINE_API_DECL bool sspine_image_valid(sspine_image image); +SOKOL_SPINE_API_DECL bool sspine_image_equal(sspine_image first, sspine_image second); +SOKOL_SPINE_API_DECL sspine_image_info sspine_get_image_info(sspine_image image); + +// atlas page functions +SOKOL_SPINE_API_DECL int sspine_num_atlas_pages(sspine_atlas atlas); +SOKOL_SPINE_API_DECL sspine_atlas_page sspine_atlas_page_by_index(sspine_atlas atlas, int index); +SOKOL_SPINE_API_DECL bool sspine_atlas_page_valid(sspine_atlas_page page); +SOKOL_SPINE_API_DECL bool sspine_atlas_page_equal(sspine_atlas_page first, sspine_atlas_page second); +SOKOL_SPINE_API_DECL sspine_atlas_page_info sspine_get_atlas_page_info(sspine_atlas_page page); + +// instance transform functions +SOKOL_SPINE_API_DECL void sspine_set_position(sspine_instance instance, sspine_vec2 position); +SOKOL_SPINE_API_DECL void sspine_set_scale(sspine_instance instance, sspine_vec2 scale); +SOKOL_SPINE_API_DECL void sspine_set_color(sspine_instance instance, sspine_color color); +SOKOL_SPINE_API_DECL sspine_vec2 sspine_get_position(sspine_instance instance); +SOKOL_SPINE_API_DECL sspine_vec2 sspine_get_scale(sspine_instance instance); +SOKOL_SPINE_API_DECL sspine_color sspine_get_color(sspine_instance instance); + +// instance animation functions +SOKOL_SPINE_API_DECL int sspine_num_anims(sspine_skeleton skeleton); +SOKOL_SPINE_API_DECL sspine_anim sspine_anim_by_name(sspine_skeleton skeleton, const char* name); +SOKOL_SPINE_API_DECL sspine_anim sspine_anim_by_index(sspine_skeleton skeleton, int index); +SOKOL_SPINE_API_DECL bool sspine_anim_valid(sspine_anim anim); +SOKOL_SPINE_API_DECL bool sspine_anim_equal(sspine_anim first, sspine_anim second); +SOKOL_SPINE_API_DECL sspine_anim_info sspine_get_anim_info(sspine_anim anim); +SOKOL_SPINE_API_DECL void sspine_clear_animation_tracks(sspine_instance instance); +SOKOL_SPINE_API_DECL void sspine_clear_animation_track(sspine_instance instance, int track_index); +SOKOL_SPINE_API_DECL void sspine_set_animation(sspine_instance instance, sspine_anim anim, int track_index, bool loop); +SOKOL_SPINE_API_DECL void sspine_add_animation(sspine_instance instance, sspine_anim anim, int track_index, bool loop, float delay); +SOKOL_SPINE_API_DECL void sspine_set_empty_animation(sspine_instance instance, int track_index, float mix_duration); +SOKOL_SPINE_API_DECL void sspine_add_empty_animation(sspine_instance instance, int track_index, float mix_duration, float delay); + +// bone functions +SOKOL_SPINE_API_DECL int sspine_num_bones(sspine_skeleton skeleton); +SOKOL_SPINE_API_DECL sspine_bone sspine_bone_by_name(sspine_skeleton skeleton, const char* name); +SOKOL_SPINE_API_DECL sspine_bone sspine_bone_by_index(sspine_skeleton skeleton, int index); +SOKOL_SPINE_API_DECL bool sspine_bone_valid(sspine_bone bone); +SOKOL_SPINE_API_DECL bool sspine_bone_equal(sspine_bone first, sspine_bone second); +SOKOL_SPINE_API_DECL sspine_bone_info sspine_get_bone_info(sspine_bone bone); +SOKOL_SPINE_API_DECL void sspine_set_bone_transform(sspine_instance instance, sspine_bone bone, const sspine_bone_transform* transform); +SOKOL_SPINE_API_DECL void sspine_set_bone_position(sspine_instance instance, sspine_bone bone, sspine_vec2 position); +SOKOL_SPINE_API_DECL void sspine_set_bone_rotation(sspine_instance instance, sspine_bone bone, float rotation); +SOKOL_SPINE_API_DECL void sspine_set_bone_scale(sspine_instance instance, sspine_bone bone, sspine_vec2 scale); +SOKOL_SPINE_API_DECL void sspine_set_bone_shear(sspine_instance instance, sspine_bone bone, sspine_vec2 shear); +SOKOL_SPINE_API_DECL sspine_bone_transform sspine_get_bone_transform(sspine_instance instance, sspine_bone bone); +SOKOL_SPINE_API_DECL sspine_vec2 sspine_get_bone_position(sspine_instance instance, sspine_bone bone); +SOKOL_SPINE_API_DECL float sspine_get_bone_rotation(sspine_instance instance, sspine_bone bone); +SOKOL_SPINE_API_DECL sspine_vec2 sspine_get_bone_scale(sspine_instance instance, sspine_bone bone); +SOKOL_SPINE_API_DECL sspine_vec2 sspine_get_bone_shear(sspine_instance instance, sspine_bone bone); +SOKOL_SPINE_API_DECL sspine_vec2 sspine_get_bone_world_position(sspine_instance instance, sspine_bone bone); +SOKOL_SPINE_API_DECL sspine_vec2 sspine_bone_local_to_world(sspine_instance instance, sspine_bone bone, sspine_vec2 local_pos); +SOKOL_SPINE_API_DECL sspine_vec2 sspine_bone_world_to_local(sspine_instance instance, sspine_bone bone, sspine_vec2 world_pos); + +// slot functions +SOKOL_SPINE_API_DECL int sspine_num_slots(sspine_skeleton skeleton); +SOKOL_SPINE_API_DECL sspine_slot sspine_slot_by_name(sspine_skeleton skeleton, const char* name); +SOKOL_SPINE_API_DECL sspine_slot sspine_slot_by_index(sspine_skeleton skeleton, int index); +SOKOL_SPINE_API_DECL bool sspine_slot_valid(sspine_slot slot); +SOKOL_SPINE_API_DECL bool sspine_slot_equal(sspine_slot first, sspine_slot second); +SOKOL_SPINE_API_DECL sspine_slot_info sspine_get_slot_info(sspine_slot slot); +SOKOL_SPINE_API_DECL void sspine_set_slot_color(sspine_instance instance, sspine_slot slot, sspine_color color); +SOKOL_SPINE_API_DECL sspine_color sspine_get_slot_color(sspine_instance instance, sspine_slot slot); + +// event functions +SOKOL_SPINE_API_DECL int sspine_num_events(sspine_skeleton skeleton); +SOKOL_SPINE_API_DECL sspine_event sspine_event_by_name(sspine_skeleton skeleton, const char* name); +SOKOL_SPINE_API_DECL sspine_event sspine_event_by_index(sspine_skeleton skeleton, int index); +SOKOL_SPINE_API_DECL bool sspine_event_valid(sspine_event event); +SOKOL_SPINE_API_DECL bool sspine_event_equal(sspine_event first, sspine_event second); +SOKOL_SPINE_API_DECL sspine_event_info sspine_get_event_info(sspine_event event); + +// ik target functions +SOKOL_SPINE_API_DECL int sspine_num_iktargets(sspine_skeleton skeleton); +SOKOL_SPINE_API_DECL sspine_iktarget sspine_iktarget_by_name(sspine_skeleton skeleton, const char* name); +SOKOL_SPINE_API_DECL sspine_iktarget sspine_iktarget_by_index(sspine_skeleton skeleton, int index); +SOKOL_SPINE_API_DECL bool sspine_iktarget_valid(sspine_iktarget iktarget); +SOKOL_SPINE_API_DECL bool sspine_iktarget_equal(sspine_iktarget first, sspine_iktarget second); +SOKOL_SPINE_API_DECL sspine_iktarget_info sspine_get_iktarget_info(sspine_iktarget iktarget); +SOKOL_SPINE_API_DECL void sspine_set_iktarget_world_pos(sspine_instance instance, sspine_iktarget iktarget, sspine_vec2 world_pos); + +// skin functions +SOKOL_SPINE_API_DECL int sspine_num_skins(sspine_skeleton skeleton); +SOKOL_SPINE_API_DECL sspine_skin sspine_skin_by_name(sspine_skeleton skeleton, const char* name); +SOKOL_SPINE_API_DECL sspine_skin sspine_skin_by_index(sspine_skeleton skeleton, int index); +SOKOL_SPINE_API_DECL bool sspine_skin_valid(sspine_skin skin); +SOKOL_SPINE_API_DECL bool sspine_skin_equal(sspine_skin first, sspine_skin second); +SOKOL_SPINE_API_DECL sspine_skin_info sspine_get_skin_info(sspine_skin skin); +SOKOL_SPINE_API_DECL void sspine_set_skin(sspine_instance instance, sspine_skin skin); + +#ifdef __cplusplus +} // extern "C" +#endif + +// ██ ███ ███ ██████ ██ ███████ ███ ███ ███████ ███ ██ ████████ █████ ████████ ██ ██████ ███ ██ +// ██ ████ ████ ██ ██ ██ ██ ████ ████ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ +// ██ ██ ████ ██ ██████ ██ █████ ██ ████ ██ █████ ██ ██ ██ ██ ███████ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ███████ ███████ ██ ██ ███████ ██ ████ ██ ██ ██ ██ ██ ██████ ██ ████ +// +// >>implementation +#ifdef SOKOL_SPINE_IMPL +#define SOKOL_SPINE_IMPL_INCLUDED (1) + +#if !defined(SPINE_SPINE_H_) +#error "Please include spine/spine.h before the sokol_spine.h implementation" +#endif + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_DEBUG + #ifndef NDEBUG + #define SOKOL_DEBUG (1) + #endif +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif +#ifndef SOKOL_UNREACHABLE + #define SOKOL_UNREACHABLE SOKOL_ASSERT(false) +#endif +#ifndef SOKOL_UNUSED + #define SOKOL_UNUSED(x) (void)(x) +#endif + +#include // malloc/free +#include // memset, strcmp + +// ███████╗██╗ ██╗ █████╗ ██████╗ ███████╗██████╗ ███████╗ +// ██╔════╝██║ ██║██╔══██╗██╔══██╗██╔════╝██╔══██╗██╔════╝ +// ███████╗███████║███████║██║ ██║█████╗ ██████╔╝███████╗ +// ╚════██║██╔══██║██╔══██║██║ ██║██╔══╝ ██╔══██╗╚════██║ +// ███████║██║ ██║██║ ██║██████╔╝███████╗██║ ██║███████║ +// ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚══════╝╚═╝ ╚═╝╚══════╝ +// +// >>shaders +/* + Embedded source compiled with: + + sokol-shdc -i sspine.glsl -o sspine.h -l glsl330:glsl300es:hlsl4:metal_macos:metal_ios:metal_sim:wgpu -b + + @vs vs + uniform vs_params { + mat4 mvp; + }; + in vec2 position; + in vec2 texcoord0; + in vec4 color0; + out vec2 uv; + out vec4 color; + void main() { + gl_Position = mvp * vec4(position, 0.0, 1.0); + uv = texcoord0; + color = color0; + } + @end + + @fs fs + uniform sampler2D tex; + uniform fs_params { + float pma; + }; + in vec2 uv; + in vec4 color; + out vec4 frag_color; + void main() { + vec4 c0 = texture(tex, uv) * color; + vec4 c1 = vec4(c0.rgb * c0.a, c0.a) * color; + frag_color = mix(c0, c1, pma); + } + @end + + @program sspine vs fs +*/ +#if defined(SOKOL_GLCORE33) +static const char _sspine_vs_source_glsl330[352] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e, + 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61, + 0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, + 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e, + 0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a, + 0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79, + 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31, + 0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f, + 0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f, + 0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, + 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63, + 0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20, + 0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f, + 0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28, + 0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x76,0x73, + 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70, + 0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72, + 0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x70, + 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, + 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x74,0x65,0x78, + 0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +static const char _sspine_fs_source_glsl330[300] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e, + 0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x73,0x5f,0x70,0x61, + 0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, + 0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x3b,0x0a, + 0x0a,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x69,0x6e,0x20, + 0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f, + 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29, + 0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, + 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e, + 0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x32, + 0x35,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x2c, + 0x20,0x75,0x76,0x29,0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x34,0x20,0x3d,0x20,0x5f,0x32, + 0x35,0x2e,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, + 0x6c,0x6f,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x32,0x35,0x2c,0x20,0x76, + 0x65,0x63,0x34,0x28,0x5f,0x32,0x35,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x33, + 0x34,0x2c,0x20,0x5f,0x33,0x34,0x29,0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2c, + 0x20,0x76,0x65,0x63,0x34,0x28,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b, + 0x30,0x5d,0x2e,0x78,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_GLES3) +static const char _sspine_vs_source_glsl300es[355] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, + 0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73, + 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f, + 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29, + 0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a, + 0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, + 0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78, + 0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34, + 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c, + 0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20, + 0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x0a,0x76,0x6f, + 0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20, + 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61, + 0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c, + 0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x76, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x76,0x73,0x5f, + 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63, + 0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x30,0x2c, + 0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x20,0x3d,0x20, + 0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63, + 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x7d, + 0x0a,0x0a,0x00, +}; +static const char _sspine_fs_source_glsl300es[391] = { + 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a, + 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, + 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69, + 0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75, + 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, + 0x34,0x20,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a, + 0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61, + 0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x3b,0x0a,0x0a,0x69,0x6e, + 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a, + 0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f, + 0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, + 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69, + 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, + 0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28, + 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, + 0x63,0x34,0x20,0x5f,0x32,0x35,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, + 0x28,0x74,0x65,0x78,0x2c,0x20,0x75,0x76,0x29,0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x5f,0x33,0x34,0x20,0x3d,0x20,0x5f,0x32,0x35,0x2e,0x77,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, + 0x20,0x6d,0x69,0x78,0x28,0x5f,0x32,0x35,0x2c,0x20,0x76,0x65,0x63,0x34,0x28,0x5f, + 0x32,0x35,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x5f,0x33,0x34,0x2c,0x20,0x5f,0x33, + 0x34,0x29,0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x76,0x65,0x63,0x34, + 0x28,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x29, + 0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +#elif defined(SOKOL_D3D11) +static const uint8_t _sspine_vs_bytecode_hlsl4[844] = { + 0x44,0x58,0x42,0x43,0xb2,0xdb,0x57,0x6f,0x29,0xa5,0x26,0x49,0xa3,0x0e,0xb4,0x9e, + 0x0f,0x0d,0x7f,0xcd,0x01,0x00,0x00,0x00,0x4c,0x03,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0xf4,0x00,0x00,0x00,0x58,0x01,0x00,0x00,0xc8,0x01,0x00,0x00, + 0xd0,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0xb8,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff, + 0x10,0x81,0x00,0x00,0x90,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d, + 0x73,0x00,0xab,0xab,0x3c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x00, + 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x80,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x5f,0x32,0x31,0x5f,0x6d,0x76,0x70,0x00,0x02,0x00,0x03,0x00, + 0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72, + 0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53, + 0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31, + 0x30,0x2e,0x31,0x00,0x49,0x53,0x47,0x4e,0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x50,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x03,0x03,0x00,0x00,0x50,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43, + 0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab,0x4f,0x53,0x47,0x4e,0x68,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00, + 0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00,0x00, + 0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0x53,0x56,0x5f,0x50,0x6f,0x73,0x69, + 0x74,0x69,0x6f,0x6e,0x00,0xab,0xab,0xab,0x53,0x48,0x44,0x52,0x00,0x01,0x00,0x00, + 0x40,0x00,0x01,0x00,0x40,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x32,0x10,0x10,0x00, + 0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x32,0x10,0x10,0x00,0x01,0x00,0x00,0x00, + 0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x65,0x00,0x00,0x03, + 0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00, + 0x01,0x00,0x00,0x00,0x67,0x00,0x00,0x04,0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05, + 0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x01,0x00,0x00,0x00, + 0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x1e,0x10,0x00, + 0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x08,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x56,0x15,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00, + 0x06,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, + 0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x3e,0x00,0x00,0x01, + 0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _sspine_fs_bytecode_hlsl4[876] = { + 0x44,0x58,0x42,0x43,0xd8,0xf3,0x35,0x5e,0xf6,0xd6,0x61,0x80,0x71,0x85,0x56,0x46, + 0x08,0x09,0x74,0xcd,0x01,0x00,0x00,0x00,0x6c,0x03,0x00,0x00,0x05,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x44,0x01,0x00,0x00,0x90,0x01,0x00,0x00,0xc4,0x01,0x00,0x00, + 0xf0,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0x08,0x01,0x00,0x00,0x01,0x00,0x00,0x00, + 0x98,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff, + 0x10,0x81,0x00,0x00,0xe0,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x89,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x5f,0x74,0x65,0x78,0x5f,0x73,0x61,0x6d, + 0x70,0x6c,0x65,0x72,0x00,0x74,0x65,0x78,0x00,0x66,0x73,0x5f,0x70,0x61,0x72,0x61, + 0x6d,0x73,0x00,0xab,0x8d,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xb0,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xd0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x5f,0x35,0x30,0x5f,0x70,0x6d,0x61,0x00,0x00,0x00,0x03,0x00, + 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72, + 0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53, + 0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31, + 0x30,0x2e,0x31,0x00,0x49,0x53,0x47,0x4e,0x44,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x38,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab, + 0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x61,0x72,0x67,0x65, + 0x74,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x24,0x01,0x00,0x00,0x40,0x00,0x00,0x00, + 0x49,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00, + 0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00, + 0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03, + 0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00, + 0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x45,0x00,0x00,0x09, + 0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00, + 0x38,0x00,0x00,0x07,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00, + 0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,0x38,0x00,0x00,0x07, + 0x72,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0xf6,0x0f,0x10,0x00,0x00,0x00,0x00,0x00, + 0x46,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x00,0x10,0x00, + 0x01,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a, + 0xf2,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x01,0x00,0x00,0x00, + 0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x0e,0x10,0x80,0x41,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00, + 0x06,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00, + 0x01,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01, + 0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,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, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,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,0x00, +}; +#elif defined(SOKOL_METAL) +static const uint8_t _sspine_vs_bytecode_metal_macos[3068] = { + 0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc9,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0xf0,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0x00,0x1c,0x82,0xf4,0xbb,0x79,0xa7, + 0x30,0x7f,0x4a,0xbc,0xb6,0x93,0x11,0x29,0xf6,0x24,0x44,0x87,0xfa,0x98,0x7e,0xd3, + 0x73,0xca,0x18,0xc6,0xe1,0x22,0x50,0x45,0x09,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x37,0x00,0x00,0x00,0x56,0x41,0x54, + 0x54,0x22,0x00,0x03,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x00,0x80, + 0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80,0x63,0x6f,0x6c,0x6f, + 0x72,0x30,0x00,0x02,0x80,0x56,0x41,0x54,0x59,0x05,0x00,0x03,0x00,0x04,0x04,0x06, + 0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17,0x0b, + 0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x0a,0x00,0x00,0xff,0xff,0xff,0xff, + 0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0xb4,0x02,0x00,0x00,0x0b,0x82,0x20,0x00, + 0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04,0x49, + 0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b,0x62, + 0x80,0x14,0x45,0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18,0x49, + 0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21,0x72, + 0x24,0x07,0xc8,0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00,0x00, + 0x51,0x18,0x00,0x00,0x81,0x00,0x00,0x00,0x1b,0xc8,0x25,0xf8,0xff,0xff,0xff,0xff, + 0x01,0x90,0x80,0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87,0x71,0xa0,0x07,0x76, + 0xc8,0x87,0x36,0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72,0x20,0x87,0x36,0x20, + 0x87,0x74,0xb0,0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88,0x07,0x79,0xa0,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0xc0,0x1c,0xc2,0x81, + 0x1d,0xe6,0xa1,0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c, + 0xda,0x80,0x1e,0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c,0xd8,0x81,0x1d,0xe6, + 0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87,0x72,0x98,0x87,0x79, + 0x68,0x03,0x78,0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72,0x68,0x03,0x73,0x80, + 0x87,0x76,0x08,0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xdc, + 0xe1,0x1d,0xda,0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda,0x00,0x1e,0xde,0x21, + 0x1d,0xdc,0x81,0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21,0x1d,0xda,0x01,0xa0, + 0x07,0x79,0xa8,0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30,0x07,0x79,0x08,0x87, + 0x76,0x28,0x87,0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87,0x72,0x90,0x87,0x36, + 0x28,0x07,0x76,0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77,0x68,0x03,0x76,0x28, + 0x87,0x70,0x30,0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70,0x07,0x73,0x98,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1, + 0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1,0x1d,0xe0,0xa1,0x0d, + 0xe8,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87, + 0x72,0x00,0x08,0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87,0x79,0x68,0x03,0x73, + 0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c, + 0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d,0xca,0x81,0x1c,0xda, + 0x40,0x1f,0xca,0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0,0xa1,0x0d,0xda,0x21, + 0x1c,0xe8,0x01,0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80,0x70,0x87,0x77,0x68, + 0x03,0x7a,0x90,0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38,0x87,0x36,0x68,0x87, + 0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0x62,0x1e,0xe8,0x21, + 0x1c,0xc6,0x61,0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1,0x1c,0xc6,0x81,0x1e, + 0xde,0x41,0x1e,0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x0d,0xe6, + 0x21,0x1d,0xf4,0xa1,0x1c,0x00,0x3c,0x00,0x88,0x7a,0x70,0x87,0x79,0x08,0x07,0x73, + 0x28,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e, + 0xe4,0xa1,0x1e,0xca,0x01,0x20,0xea,0x61,0x1e,0xca,0xa1,0x0d,0xe6,0xe1,0x1d,0xcc, + 0x81,0x1e,0xda,0xc0,0x1c,0xd8,0xe1,0x1d,0xc2,0x81,0x1e,0x00,0x73,0x08,0x07,0x76, + 0x98,0x87,0x72,0x00,0x36,0x18,0x02,0x01,0x2c,0x40,0x05,0x00,0x49,0x18,0x00,0x00, + 0x01,0x00,0x00,0x00,0x13,0x84,0x40,0x00,0x89,0x20,0x00,0x00,0x1f,0x00,0x00,0x00, + 0x32,0x22,0x48,0x09,0x20,0x64,0x85,0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3, + 0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a,0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x44,0x33,0x00, + 0xc3,0x08,0x02,0x30,0x8c,0x40,0x00,0x76,0x08,0x42,0x24,0x81,0x98,0x89,0x9a,0x07, + 0x7a,0x90,0x87,0x7a,0x18,0x07,0x7a,0x70,0x83,0x76,0x28,0x07,0x7a,0x08,0x07,0x76, + 0xd0,0x03,0x3d,0x68,0x87,0x70,0xa0,0x07,0x79,0x48,0x07,0x7c,0x40,0x01,0x39,0x48, + 0x9a,0x22,0x4a,0x98,0xfc,0x4a,0xfa,0x1f,0x20,0x02,0x18,0x09,0x05,0x65,0x10,0xc1, + 0x10,0x4a,0x31,0x42,0x10,0x87,0xd0,0x40,0xc0,0x1c,0x01,0x18,0xa4,0xc0,0x9a,0x23, + 0x00,0x85,0x41,0x04,0x41,0x18,0x46,0x20,0x96,0x11,0x00,0x00,0x13,0xb2,0x70,0x48, + 0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68,0x83, + 0x76,0x08,0x87,0x71,0x78,0x87,0x79,0xc0,0x87,0x38,0x80,0x03,0x37,0x88,0x83,0x38, + 0x70,0x03,0x38,0xd8,0x70,0x1b,0xe5,0xd0,0x06,0xf0,0xa0,0x07,0x76,0x40,0x07,0x7a, + 0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x90,0x0e,0x71,0xa0,0x07,0x78,0xa0, + 0x07,0x78,0xd0,0x06,0xe9,0x80,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e, + 0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x90,0x0e,0x73, + 0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x90,0x0e,0x76,0x40, + 0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0e,0x73,0x20,0x07, + 0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0e,0x76,0x40,0x07,0x7a, + 0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x71,0x60,0x07,0x7a,0x10, + 0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x60,0x0f,0x72,0x40,0x07,0x7a,0x30,0x07, + 0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x73,0x20,0x07,0x7a,0x30,0x07,0x72, + 0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0f,0x74,0x80,0x07,0x7a,0x60,0x07,0x74,0xa0, + 0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07, + 0x76,0x40,0x07,0x6d,0x60,0x0f,0x79,0x60,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a, + 0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20, + 0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x79,0x20,0x07, + 0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x72, + 0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0, + 0x06,0xf6,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07, + 0x71,0x20,0x07,0x6d,0x60,0x0f,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07,0x70, + 0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x6d,0xe0,0x0e,0x78,0xa0, + 0x07,0x71,0x60,0x07,0x7a,0x30,0x07,0x72,0x30,0x84,0x49,0x00,0x00,0x08,0x00,0x00, + 0x00,0x00,0x00,0xc8,0x02,0x01,0x00,0x00,0x0a,0x00,0x00,0x00,0x32,0x1e,0x98,0x10, + 0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0x5a,0x25,0x30,0x02,0x50, + 0x04,0x05,0x18,0x50,0x08,0x05,0x51,0x06,0x05,0x42,0x6d,0x04,0x80,0xd8,0x58,0x02, + 0x33,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0xea,0x00,0x00,0x00,0x1a,0x03,0x4c,0x10, + 0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x32,0x28, + 0x00,0xa3,0x50,0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62,0x2c, + 0x81,0x22,0x2c,0x05,0xe3,0x20,0x08,0x0e,0x8e,0xad,0x0c,0xa4,0xad,0x8c,0x2e,0x8c, + 0x0d,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x64,0x26,0x06,0x06,0x26,0xc6,0xa5, + 0x46,0x46,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac,0x65,0x26,0x06,0x06, + 0x26,0xc6,0xa5,0x46,0x46,0x26,0x65,0x88,0xa0,0x10,0x43,0x8c,0x25,0x58,0x8c,0x45, + 0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x51,0x8e,0x25,0x58,0x82,0x45,0xe0,0x16, + 0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26, + 0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x50,0x12,0x72,0x61, + 0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61,0x73,0x74,0x5f, + 0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x04,0x65,0x61,0x19, + 0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5, + 0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1,0x7d,0x91,0xa5, + 0xcd,0x85,0x89,0xb1,0x95,0x0d,0x11,0x94,0x86,0x51,0x58,0x9a,0x9c,0x8b,0x5d,0x99, + 0x1c,0x5d,0x19,0xde,0xd7,0x5b,0x1d,0x1d,0x5c,0x1d,0x1d,0x97,0xba,0xb9,0x32,0x39, + 0x14,0xb6,0xb7,0x31,0x37,0x98,0x14,0x46,0x61,0x69,0x72,0x2e,0x61,0x72,0x67,0x5f, + 0x74,0x79,0x70,0x65,0x5f,0x6e,0x61,0x6d,0x65,0x34,0xcc,0xd8,0xde,0xc2,0xe8,0x64, + 0xc8,0x84,0xa5,0xc9,0xb9,0x84,0xc9,0x9d,0x7d,0xb9,0x85,0xb5,0x95,0x51,0xa8,0xb3, + 0x1b,0xc2,0x28,0x8f,0x02,0x29,0x91,0x22,0x29,0x93,0x42,0x71,0xa9,0x9b,0x2b,0x93, + 0x43,0x61,0x7b,0x1b,0x73,0x8b,0x49,0xa1,0x61,0xc6,0xf6,0x16,0x46,0x47,0xc3,0x62, + 0xec,0x8d,0xed,0x4d,0x6e,0x08,0xa3,0x3c,0x8a,0xa5,0x44,0xca,0xa5,0x4c,0x0a,0x46, + 0x26,0x2c,0x4d,0xce,0x05,0xee,0x6d,0x2e,0x8d,0x2e,0xed,0xcd,0x8d,0xcb,0x19,0xdb, + 0x17,0xd4,0xdb,0x5c,0x1a,0x5d,0xda,0x9b,0xdb,0x10,0x45,0xd1,0x94,0x48,0xb9,0x94, + 0x49,0xd9,0x86,0x18,0x4a,0xa5,0x64,0x0a,0x47,0x28,0x2c,0x4d,0xce,0xc5,0xae,0x4c, + 0x8e,0xae,0x0c,0xef,0x2b,0xcd,0x0d,0xae,0x8e,0x8e,0x52,0x58,0x9a,0x9c,0x0b,0xdb, + 0xdb,0x58,0x18,0x5d,0xda,0x9b,0xdb,0x57,0x9a,0x1b,0x59,0x19,0x1e,0xbd,0xb3,0x32, + 0xb7,0x32,0xb9,0x30,0xba,0x32,0x32,0x94,0xaf,0xaf,0xb0,0x34,0xb9,0x2f,0x38,0xb6, + 0xb0,0xb1,0x32,0xb4,0x37,0x36,0xb2,0x32,0xb9,0xaf,0xaf,0x14,0x22,0x70,0x6f,0x73, + 0x69,0x74,0x69,0x6f,0x6e,0x43,0xa8,0x45,0x50,0x3c,0xe5,0x5b,0x84,0x25,0x50,0xc0, + 0x40,0x89,0x14,0x49,0x99,0x94,0x30,0x60,0x42,0x57,0x86,0x37,0xf6,0xf6,0x26,0x47, + 0x06,0x33,0x84,0x5a,0x02,0xc5,0x53,0xbe,0x25,0x58,0x02,0x05,0x0c,0x94,0x48,0x91, + 0x94,0x49,0x19,0x03,0x1a,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x43,0xa8,0x65,0x50,0x3c, + 0xe5,0x5b,0x86,0x25,0x50,0xc0,0x40,0x89,0x94,0x4b,0x99,0x94,0x32,0xa0,0x12,0x96, + 0x26,0xe7,0x22,0x56,0x67,0x66,0x56,0x26,0xc7,0x27,0x2c,0x4d,0xce,0x45,0xac,0xce, + 0xcc,0xac,0x4c,0xee,0x6b,0x2e,0x4d,0xaf,0x8c,0x48,0x58,0x9a,0x9c,0x8b,0x5c,0x59, + 0x18,0x19,0xa9,0xb0,0x34,0x39,0x97,0x39,0x3a,0xb9,0xba,0x31,0xba,0x2f,0xba,0x3c, + 0xb8,0xb2,0xaf,0x34,0x37,0xb3,0x37,0x22,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34, + 0x1c,0xda,0xec,0xe0,0x86,0x28,0x8b,0xb0,0x10,0x8b,0xa0,0xac,0x81,0xc2,0x06,0x8c, + 0xc2,0xd2,0xe4,0x5c,0xc2,0xe4,0xce,0xbe,0xe8,0xf2,0xe0,0xca,0xbe,0xe6,0xd2,0xf4, + 0xca,0x78,0x85,0xa5,0xc9,0xb9,0x84,0xc9,0x9d,0x7d,0xd1,0xe5,0xc1,0x95,0x7d,0x85, + 0xb1,0xa5,0x9d,0xb9,0x7d,0xcd,0xa5,0xe9,0x95,0x31,0xb1,0x9b,0xfb,0x82,0x0b,0x93, + 0x0b,0x6b,0x9b,0xe3,0xf0,0x25,0x13,0x33,0x84,0x0c,0x96,0x43,0x39,0x03,0x05,0x0d, + 0x16,0x42,0xf9,0x16,0x61,0x09,0x94,0x34,0x50,0xd4,0x40,0x69,0x03,0xc5,0x0d,0x16, + 0x42,0x79,0x83,0x05,0x51,0x22,0x05,0x0e,0x94,0x49,0x89,0x83,0x21,0x88,0x22,0x06, + 0x0a,0x19,0x28,0x66,0xa0,0xc8,0xc1,0x10,0x23,0x01,0x94,0x4e,0x99,0x03,0x3e,0x6f, + 0x6d,0x6e,0x69,0x70,0x6f,0x74,0x65,0x6e,0x74,0x20,0x63,0x68,0x61,0x72,0x7c,0xa6, + 0xd2,0xda,0xe0,0xd8,0xca,0x40,0x86,0x56,0x56,0x40,0xa8,0x84,0x82,0x82,0x86,0x08, + 0x8a,0x1d,0x0c,0x31,0x94,0x3a,0x50,0xee,0xa0,0x49,0x86,0x18,0x0a,0x1e,0x28,0x78, + 0xd0,0x24,0x23,0x22,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x77,0x20,0x87, + 0x7a,0x60,0x87,0x72,0x70,0x03,0x73,0x60,0x87,0x70,0x38,0x87,0x79,0x98,0x22,0x04, + 0xc3,0x08,0x85,0x1d,0xd8,0xc1,0x1e,0xda,0xc1,0x0d,0xd2,0x81,0x1c,0xca,0xc1,0x1d, + 0xe8,0x61,0x4a,0x50,0x8c,0x58,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xec,0xa1,0x1c,0xe4, + 0x61,0x1e,0xd2,0xe1,0x1d,0xdc,0x61,0x4a,0x60,0x8c,0xa0,0xc2,0x21,0x1d,0xe4,0xc1, + 0x0d,0xd8,0x21,0x1c,0xdc,0xe1,0x1c,0xea,0x21,0x1c,0xce,0xa1,0x1c,0x7e,0xc1,0x1e, + 0xca,0x41,0x1e,0xe6,0x21,0x1d,0xde,0xc1,0x1d,0xa6,0x04,0xc8,0x88,0x29,0x1c,0xd2, + 0x41,0x1e,0xdc,0x60,0x1c,0xde,0xa1,0x1d,0xe0,0x21,0x1d,0xd8,0xa1,0x1c,0x7e,0xe1, + 0x1d,0xe0,0x81,0x1e,0xd2,0xe1,0x1d,0xdc,0x61,0x1e,0xa6,0x0c,0x0a,0xe3,0x8c,0x50, + 0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xec,0xa1,0x1c,0xe4,0x81,0x1e,0xca,0x01,0x1f,0xa6, + 0x04,0x74,0x00,0x00,0x79,0x18,0x00,0x00,0x7b,0x00,0x00,0x00,0x33,0x08,0x80,0x1c, + 0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07, + 0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e, + 0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43, + 0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c, + 0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76, + 0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e, + 0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8, + 0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4, + 0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68, + 0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07, + 0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71, + 0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5, + 0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4, + 0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90, + 0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43, + 0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b, + 0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78, + 0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2, + 0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20, + 0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0, + 0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83, + 0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07, + 0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61, + 0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d, + 0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39, + 0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79, + 0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x98,0x81,0x5c,0xe3, + 0x10,0x0e,0xec,0xc0,0x0e,0xe5,0x50,0x0e,0xf3,0x30,0x23,0xc1,0xd2,0x41,0x1e,0xe4, + 0xe1,0x17,0xd8,0xe1,0x1d,0xde,0x01,0x1e,0x66,0x50,0x59,0x38,0xa4,0x83,0x3c,0xb8, + 0x81,0x39,0xd4,0x83,0x3b,0x8c,0x03,0x3d,0xa4,0xc3,0x3b,0xb8,0xc3,0x2f,0x9c,0x83, + 0x3c,0xbc,0x43,0x3d,0xc0,0xc3,0x3c,0x00,0x71,0x20,0x00,0x00,0x02,0x00,0x00,0x00, + 0x06,0x50,0x30,0x00,0xd2,0xd0,0x00,0x00,0x61,0x20,0x00,0x00,0x1e,0x00,0x00,0x00, + 0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0xf4,0xc6,0x22,0x82, + 0x20,0x08,0x46,0x00,0xa8,0x95,0x40,0x19,0xd0,0x98,0x01,0xa0,0x30,0x03,0x00,0x00, + 0xe3,0x15,0x07,0x33,0x4d,0x0c,0x05,0x65,0x90,0x81,0x19,0x0e,0x13,0x02,0xf9,0x8c, + 0x57,0x2c,0xd0,0x75,0x21,0x14,0x94,0x41,0x06,0xe8,0x60,0x4c,0x08,0xe4,0x63,0x41, + 0x01,0x9f,0xf1,0x0a,0xa8,0xe2,0x38,0x86,0x82,0x62,0x43,0x00,0x9f,0xd9,0x06,0xa7, + 0x02,0x66,0x1b,0x82,0x2a,0x98,0x6d,0x08,0x06,0x21,0x83,0x80,0x18,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x5b,0x86,0x20,0xc8,0x83,0x2d,0x43,0x11,0xe4,0xc1,0x96,0x41, + 0x09,0xf2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _sspine_fs_bytecode_metal_macos[3257] = { + 0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xb9,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc9,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd1,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd9,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0xeb,0x62,0x74,0xda,0xdc,0xfb,0x51, + 0x12,0x89,0xbd,0xc2,0xa1,0xdc,0x89,0x67,0x5f,0x96,0x17,0x50,0xd6,0x8b,0xbc,0x5d, + 0xa9,0xe9,0x5d,0xef,0xeb,0x59,0xe4,0x51,0x64,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44, + 0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17,0x0b,0x00,0x00,0x00, + 0x00,0x14,0x00,0x00,0x00,0xc8,0x0b,0x00,0x00,0xff,0xff,0xff,0xff,0x42,0x43,0xc0, + 0xde,0x21,0x0c,0x00,0x00,0xef,0x02,0x00,0x00,0x0b,0x82,0x20,0x00,0x02,0x00,0x00, + 0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04,0x49,0x06,0x10,0x32, + 0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b,0x62,0x80,0x14,0x45, + 0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18,0x49,0x0a,0x32,0x44, + 0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21,0x72,0x24,0x07,0xc8, + 0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00,0x00,0x51,0x18,0x00, + 0x00,0x8e,0x00,0x00,0x00,0x1b,0xcc,0x25,0xf8,0xff,0xff,0xff,0xff,0x01,0x60,0x00, + 0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07,0x7a,0x60,0x87,0x7c, + 0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72,0x68,0x03,0x72,0x48, + 0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90,0x07,0x7a,0x68,0x03, + 0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc,0x21,0x1c,0xd8,0x61, + 0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81,0x1d,0xca,0xa1,0x0d, + 0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d,0xd8,0x61,0x1e,0x00, + 0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87,0x79,0x98,0x87,0x36, + 0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36,0x30,0x07,0x78,0x68, + 0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c,0x00,0xc2,0x1d,0xde, + 0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0,0xe1,0x1d,0xd2,0xc1, + 0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1,0x1d,0x00,0x7a,0x90, + 0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90,0x87,0x70,0x68,0x87, + 0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07,0x79,0x68,0x83,0x72, + 0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36,0x60,0x87,0x72,0x08, + 0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30,0x87,0x79,0x68,0x03, + 0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1, + 0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01,0x1e,0xda,0x80,0x1e, + 0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07, + 0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87,0x36,0x30,0x07,0x78, + 0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20, + 0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c,0xc8,0xa1,0x0d,0xf4, + 0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda,0xa0,0x1d,0xc2,0x81, + 0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77,0x78,0x87,0x36,0xa0, + 0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68,0x83,0x76,0x08,0x07, + 0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6,0x81,0x1e,0xc2,0x61, + 0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61,0x1c,0xe8,0xe1,0x1d, + 0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e,0xda,0x60,0x1e,0xd2, + 0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa8,0x07,0x77,0x98,0x87,0x70,0x30,0x87,0x72, + 0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e, + 0xea,0xa1,0x1c,0x00,0xa2,0x1e,0xe6,0xa1,0x1c,0xda,0x60,0x1e,0xde,0xc1,0x1c,0xe8, + 0xa1,0x0d,0xcc,0x81,0x1d,0xde,0x21,0x1c,0xe8,0x01,0x30,0x87,0x70,0x60,0x87,0x79, + 0x28,0x07,0x60,0x83,0x21,0x0c,0xc0,0x02,0x54,0x1b,0x8c,0x81,0x00,0x16,0xa0,0xda, + 0x60,0x10,0x05,0xb0,0x00,0xd5,0x06,0xa3,0xf8,0xff,0xff,0xff,0xff,0x01,0x90,0x00, + 0x6a,0x03,0x62,0xfc,0xff,0xff,0xff,0xff,0x00,0x30,0x80,0x04,0x54,0x1b,0x8c,0x23, + 0x00,0x16,0xa0,0xda,0x60,0x20,0x02,0xb0,0x00,0x15,0x00,0x00,0x00,0x49,0x18,0x00, + 0x00,0x03,0x00,0x00,0x00,0x13,0x88,0x40,0x18,0x88,0x09,0x41,0x31,0x61,0x30,0x0e, + 0x04,0x89,0x20,0x00,0x00,0x27,0x00,0x00,0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85, + 0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a, + 0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x6c,0x33,0x00,0xc3,0x08,0x04,0x60,0x83,0x30,0x8c, + 0x20,0x00,0x07,0x49,0x53,0x44,0x09,0x93,0x5f,0x48,0xff,0x03,0x44,0x00,0x23,0xa1, + 0x00,0x0c,0x22,0x10,0xc2,0x51,0xd2,0x14,0x51,0xc2,0xe4,0xff,0x13,0x71,0x4d,0x54, + 0x44,0xfc,0xf6,0xf0,0x4f,0x63,0x04,0xc0,0x20,0x82,0x11,0x5c,0x24,0x4d,0x11,0x25, + 0x4c,0xfe,0x2f,0x01,0xcc,0xb3,0x10,0xd1,0x3f,0x8d,0x11,0x00,0x83,0x08,0x88,0x50, + 0x0c,0x31,0x42,0x39,0x89,0x54,0x21,0x42,0x08,0x81,0xd8,0x1c,0x41,0x30,0x47,0x00, + 0x06,0xc3,0x08,0xc2,0x53,0x90,0x70,0xd2,0x70,0xd0,0x01,0x8a,0x03,0x01,0x29,0xf0, + 0x86,0x11,0x86,0x67,0x18,0x61,0x00,0x86,0x11,0x88,0x67,0x8e,0x00,0x14,0x06,0x11, + 0x00,0x61,0x04,0x00,0x00,0x13,0xb2,0x70,0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83, + 0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68,0x83,0x76,0x08,0x87,0x71,0x78,0x87,0x79, + 0xc0,0x87,0x38,0x80,0x03,0x37,0x88,0x83,0x38,0x70,0x03,0x38,0xd8,0x70,0x1b,0xe5, + 0xd0,0x06,0xf0,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40, + 0x07,0x6d,0x90,0x0e,0x71,0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9,0x80,0x07, + 0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e,0x71,0x60,0x07,0x7a,0x10,0x07,0x76, + 0xa0,0x07,0x71,0x60,0x07,0x6d,0x90,0x0e,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0, + 0x07,0x73,0x20,0x07,0x6d,0x90,0x0e,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07, + 0x76,0x40,0x07,0x6d,0x60,0x0e,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73, + 0x20,0x07,0x6d,0x60,0x0e,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40, + 0x07,0x6d,0x60,0x0f,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07, + 0x6d,0x60,0x0f,0x72,0x40,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d, + 0x60,0x0f,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60, + 0x0f,0x74,0x80,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f, + 0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x79, + 0x60,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60, + 0x0f,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07, + 0x78,0xd0,0x06,0xf6,0x10,0x07,0x79,0x20,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a, + 0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50, + 0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x50,0x07,0x71,0x20,0x07, + 0x7a,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07,0x6d,0x60,0x0f,0x71, + 0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00, + 0x07,0x72,0x40,0x07,0x6d,0xe0,0x0e,0x78,0xa0,0x07,0x71,0x60,0x07,0x7a,0x30,0x07, + 0x72,0x30,0x84,0x59,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x18,0xc2,0x34,0x40, + 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x0c,0x61,0x24,0x20,0x00,0x06,0x00,0x00,0x00, + 0x00,0x00,0xb2,0x40,0x00,0x09,0x00,0x00,0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c, + 0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0x7a,0x23,0x00,0x25,0x50,0x08,0x45,0x50, + 0x10,0x65,0x40,0x78,0x04,0x80,0xe8,0x58,0x02,0x33,0x00,0x00,0x00,0x79,0x18,0x00, + 0x00,0xfa,0x00,0x00,0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32, + 0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x63,0x4c,0x00,0xa5,0x50,0xb9,0x1b,0x43,0x0b, + 0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62,0x3c,0xc4,0x24,0x3c,0x05,0xe3,0x20,0x08, + 0x0e,0x8e,0xad,0x0c,0xa4,0xad,0x8c,0x2e,0x8c,0x0d,0xc4,0xae,0x4c,0x6e,0x2e,0xed, + 0xcd,0x0d,0x64,0x26,0x06,0x06,0x26,0xc6,0xa5,0x46,0x46,0x06,0x04,0xa5,0xad,0x8c, + 0x2e,0x8c,0xcd,0xac,0xac,0x65,0x26,0x06,0x06,0x26,0xc6,0xa5,0x46,0x46,0x26,0x65, + 0x88,0x30,0x11,0x43,0x8c,0x87,0x78,0x8e,0x67,0x60,0xd1,0x54,0x46,0x17,0xc6,0x36, + 0x04,0x99,0x8e,0x87,0x78,0x88,0x67,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06, + 0x97,0xc6,0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,0x17, + 0x26,0xc6,0x56,0x36,0x44,0x98,0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70, + 0x69,0x6c,0x65,0x2e,0x66,0x61,0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e, + 0x61,0x62,0x6c,0x65,0x43,0x84,0x69,0x61,0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5, + 0xc1,0xa5,0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,0xc9, + 0x7d,0x99,0x95,0xd1,0x8d,0xa1,0x7d,0x91,0xa5,0xcd,0x85,0x89,0xb1,0x95,0x0d,0x11, + 0xa6,0x86,0x51,0x58,0x9a,0x9c,0x8b,0x5c,0x99,0x1b,0x59,0x99,0xdc,0x17,0x5d,0x98, + 0xdc,0x59,0x19,0x1d,0xa3,0xb0,0x34,0x39,0x97,0x30,0xb9,0xb3,0x2f,0xba,0x3c,0xb8, + 0xb2,0x2f,0xb7,0xb0,0xb6,0x32,0x1a,0x66,0x6c,0x6f,0x61,0x74,0x34,0x64,0xc2,0xd2, + 0xe4,0x5c,0xc2,0xe4,0xce,0xbe,0xdc,0xc2,0xda,0xca,0xa8,0x98,0xc9,0x85,0x9d,0x7d, + 0x8d,0xbd,0xb1,0xbd,0xc9,0x0d,0x61,0xa6,0xe7,0x19,0x26,0x68,0x8a,0x26,0x69,0x9a, + 0x86,0x08,0x13,0x45,0x29,0x2c,0x4d,0xce,0xc5,0x4c,0x2e,0xec,0xac,0xad,0xcc,0x8d, + 0xee,0x2b,0xcd,0x0d,0xae,0x8e,0x8e,0x4b,0xdd,0x5c,0x99,0x1c,0x0a,0xdb,0xdb,0x98, + 0x1b,0x4c,0x0a,0x95,0xb0,0x34,0x39,0x97,0xb1,0x32,0x37,0xba,0x32,0x39,0x3e,0x61, + 0x69,0x72,0x2e,0x70,0x65,0x72,0x73,0x70,0x65,0x63,0x74,0x69,0x76,0x65,0x34,0xcc, + 0xd8,0xde,0xc2,0xe8,0x64,0x28,0xd4,0xd9,0x0d,0x91,0x9e,0x61,0xb2,0xa6,0x6b,0xc2, + 0xa6,0x6c,0x82,0x26,0x6d,0x92,0xa6,0x8d,0x4b,0xdd,0x5c,0x99,0x1c,0x0a,0xdb,0xdb, + 0x98,0x5b,0x4c,0x0a,0x8b,0xb1,0x37,0xb6,0x37,0xb9,0x21,0xd2,0x43,0x4c,0xd6,0xd4, + 0x4d,0xd8,0x94,0x4d,0xd0,0x14,0x4d,0xd2,0xe4,0x51,0x09,0x4b,0x93,0x73,0x11,0xab, + 0x33,0x33,0x2b,0x93,0xe3,0x13,0x96,0x26,0xe7,0x22,0x56,0x67,0x66,0x56,0x26,0xf7, + 0x35,0x97,0xa6,0x57,0x46,0x29,0x2c,0x4d,0xce,0x85,0xed,0x6d,0x2c,0x8c,0x2e,0xed, + 0xcd,0xed,0x2b,0xcd,0x8d,0xac,0x0c,0x8f,0x48,0x58,0x9a,0x9c,0x8b,0x5c,0x59,0x18, + 0x19,0xa9,0xb0,0x34,0x39,0x97,0x39,0x3a,0xb9,0xba,0x31,0xba,0x2f,0xba,0x3c,0xb8, + 0xb2,0xaf,0x34,0x37,0xb3,0x37,0x16,0x66,0x6c,0x6f,0x61,0x74,0x1c,0xe0,0xda,0xc2, + 0x86,0x28,0xcf,0xf0,0x14,0xcf,0x30,0x95,0xc1,0x64,0x06,0x8c,0xc2,0xd2,0xe4,0x5c, + 0xc2,0xe4,0xce,0xbe,0xe8,0xf2,0xe0,0xca,0xbe,0xe6,0xd2,0xf4,0xca,0x78,0x85,0xa5, + 0xc9,0xb9,0x84,0xc9,0x9d,0x7d,0xd1,0xe5,0xc1,0x95,0x7d,0x85,0xb1,0xa5,0x9d,0xb9, + 0x7d,0xcd,0xa5,0xe9,0x95,0x31,0x31,0x9b,0xfb,0x82,0x0b,0x93,0x0b,0x6b,0x9b,0xe3, + 0xf0,0x55,0x03,0x33,0x84,0x0c,0x1e,0x63,0x02,0x83,0x29,0x0c,0x9e,0x62,0x12,0x83, + 0x67,0x78,0x88,0x69,0x0c,0x26,0x32,0x98,0xce,0x60,0x42,0x83,0xa7,0x98,0xd2,0xe0, + 0x29,0x26,0x68,0x52,0x83,0x49,0x9a,0xd6,0x80,0x4b,0x58,0x9a,0x9c,0x0b,0x5d,0x19, + 0x1e,0x5d,0x9d,0x5c,0x19,0x95,0xb0,0x34,0x39,0x97,0xb9,0xb0,0x36,0x38,0xb6,0x32, + 0x62,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74, + 0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x3e,0x1c,0xe8,0xca,0xf0,0x86,0x50,0x0f, + 0x32,0xb5,0xc1,0x24,0x06,0xcf,0xf0,0x10,0x93,0x1b,0x4c,0xd0,0xf4,0x06,0x93,0x34, + 0xc1,0x01,0x97,0xb0,0x34,0x39,0x97,0xb9,0xb0,0x36,0x38,0xb6,0x32,0x39,0x1e,0x73, + 0x61,0x6d,0x70,0x6c,0x65,0x72,0x44,0xe8,0xca,0xf0,0xa6,0xda,0xe0,0xd8,0xe4,0x86, + 0x48,0x4f,0x31,0xc9,0xc1,0x24,0x06,0xcf,0xf0,0x10,0x13,0x34,0xcd,0xc1,0x24,0x4d, + 0x74,0x30,0x44,0x99,0xb8,0xe9,0x9b,0xd8,0x60,0x8a,0x83,0xa9,0x0e,0x86,0x18,0x0b, + 0x30,0x55,0x93,0x1d,0xd0,0xf9,0xd2,0xa2,0x9a,0xca,0x31,0x9b,0xfb,0x82,0x0b,0x93, + 0x0b,0x6b,0x9b,0xe3,0xf3,0xd6,0xe6,0x96,0x06,0xf7,0x46,0x57,0xe6,0x46,0x07,0x32, + 0x86,0x16,0x26,0xc7,0x67,0x2a,0xad,0x0d,0x8e,0xad,0x0c,0x64,0x68,0x65,0x05,0x84, + 0x4a,0x28,0x28,0x68,0x88,0x30,0xe9,0xc1,0x10,0x63,0xca,0x83,0x69,0x0f,0xb0,0x64, + 0x88,0x31,0x95,0xc1,0xc4,0x07,0x58,0x32,0xc4,0x98,0xf0,0x60,0xea,0x03,0x2c,0x19, + 0x62,0x4c,0x7e,0x30,0xf5,0x01,0x96,0x8c,0x88,0xd8,0x81,0x1d,0xec,0xa1,0x1d,0xdc, + 0xa0,0x1d,0xde,0x81,0x1c,0xea,0x81,0x1d,0xca,0xc1,0x0d,0xcc,0x81,0x1d,0xc2,0xe1, + 0x1c,0xe6,0x61,0x8a,0x10,0x0c,0x23,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x48, + 0x07,0x72,0x28,0x07,0x77,0xa0,0x87,0x29,0x41,0x31,0x62,0x09,0x87,0x74,0x90,0x07, + 0x37,0xb0,0x87,0x72,0x90,0x87,0x79,0x48,0x87,0x77,0x70,0x87,0x29,0x81,0x31,0x82, + 0x0a,0x87,0x74,0x90,0x07,0x37,0x60,0x87,0x70,0x70,0x87,0x73,0xa8,0x87,0x70,0x38, + 0x87,0x72,0xf8,0x05,0x7b,0x28,0x07,0x79,0x98,0x87,0x74,0x78,0x07,0x77,0x98,0x12, + 0x20,0x23,0xa6,0x70,0x48,0x07,0x79,0x70,0x83,0x71,0x78,0x87,0x76,0x80,0x87,0x74, + 0x60,0x87,0x72,0xf8,0x85,0x77,0x80,0x07,0x7a,0x48,0x87,0x77,0x70,0x87,0x79,0x98, + 0x32,0x28,0x8c,0x33,0x82,0x09,0x87,0x74,0x90,0x07,0x37,0x30,0x07,0x79,0x08,0x87, + 0x73,0x68,0x87,0x72,0x70,0x07,0x7a,0x98,0x12,0xdc,0x01,0x00,0x00,0x79,0x18,0x00, + 0x00,0x7b,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d, + 0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c, + 0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d, + 0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d, + 0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79, + 0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc, + 0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50, + 0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30, + 0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03, + 0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07, + 0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76, + 0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98, + 0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8, + 0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21, + 0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43, + 0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f, + 0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70, + 0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0, + 0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40, + 0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41, + 0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e, + 0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07, + 0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f, + 0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d, + 0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38, + 0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88, + 0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08, + 0x07,0x7a,0x28,0x07,0x72,0x98,0x81,0x5c,0xe3,0x10,0x0e,0xec,0xc0,0x0e,0xe5,0x50, + 0x0e,0xf3,0x30,0x23,0xc1,0xd2,0x41,0x1e,0xe4,0xe1,0x17,0xd8,0xe1,0x1d,0xde,0x01, + 0x1e,0x66,0x50,0x59,0x38,0xa4,0x83,0x3c,0xb8,0x81,0x39,0xd4,0x83,0x3b,0x8c,0x03, + 0x3d,0xa4,0xc3,0x3b,0xb8,0xc3,0x2f,0x9c,0x83,0x3c,0xbc,0x43,0x3d,0xc0,0xc3,0x3c, + 0x00,0x71,0x20,0x00,0x00,0x0b,0x00,0x00,0x00,0x26,0xb0,0x01,0x48,0xe4,0x4b,0x00, + 0xf3,0x2c,0xc4,0x3f,0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0x7e,0x85,0x17,0xb7,0x6d, + 0x00,0x05,0x03,0x20,0x0d,0x6d,0x01,0x0d,0x80,0x44,0x3e,0x83,0x5c,0x7e,0x85,0x17, + 0xb7,0x0d,0x00,0x00,0x00,0x61,0x20,0x00,0x00,0x25,0x00,0x00,0x00,0x13,0x04,0x41, + 0x2c,0x10,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x74,0x47,0x00,0xc6,0x22,0x80,0x40, + 0x38,0xe6,0x20,0x06,0xc2,0xa8,0xc8,0xd5,0xc0,0x08,0x00,0xbd,0x19,0x00,0x82,0x23, + 0x00,0x54,0xc7,0x1a,0x80,0x40,0x18,0x6b,0x18,0x86,0x81,0xec,0x0c,0x00,0x89,0x19, + 0x00,0x0a,0x33,0x00,0x04,0x46,0x00,0x00,0x00,0x23,0x06,0xca,0x10,0x6c,0x8f,0x23, + 0x29,0x47,0x12,0x58,0x20,0xc9,0x67,0x90,0x21,0x20,0x90,0x41,0x06,0xa1,0x40,0x4c, + 0x08,0xe4,0x33,0xc8,0x10,0x24,0xd0,0x20,0x43,0x50,0x48,0x16,0x60,0xf2,0x19,0x6f, + 0xc0,0x38,0x31,0xa0,0x60,0xcc,0x31,0x30,0x01,0x19,0x0c,0x32,0x04,0x0d,0x36,0x62, + 0x60,0x08,0x01,0x1a,0x2c,0x45,0x30,0xdb,0x00,0x05,0x40,0x06,0x01,0x31,0x00,0x00, + 0x00,0x02,0x00,0x00,0x00,0x5b,0x86,0x24,0xf8,0x03,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _sspine_vs_bytecode_metal_ios[3068] = { + 0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc9,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0xf0,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0x0e,0xe2,0x38,0x0e,0x18,0xad,0x5b, + 0x54,0x49,0xaf,0x95,0xc9,0xab,0xf7,0xda,0x83,0x18,0xe7,0x3c,0xff,0xd0,0x8d,0x85, + 0x65,0x82,0x6c,0xdb,0x0b,0x02,0x06,0x0c,0x04,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0x37,0x00,0x00,0x00,0x56,0x41,0x54, + 0x54,0x22,0x00,0x03,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x00,0x80, + 0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80,0x63,0x6f,0x6c,0x6f, + 0x72,0x30,0x00,0x02,0x80,0x56,0x41,0x54,0x59,0x05,0x00,0x03,0x00,0x04,0x04,0x06, + 0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17,0x0b, + 0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xd8,0x0a,0x00,0x00,0xff,0xff,0xff,0xff, + 0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0xb3,0x02,0x00,0x00,0x0b,0x82,0x20,0x00, + 0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04,0x49, + 0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b,0x62, + 0x80,0x14,0x45,0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18,0x49, + 0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21,0x72, + 0x24,0x07,0xc8,0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00,0x00, + 0x51,0x18,0x00,0x00,0x82,0x00,0x00,0x00,0x1b,0xc8,0x25,0xf8,0xff,0xff,0xff,0xff, + 0x01,0x90,0x80,0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87,0x71,0xa0,0x07,0x76, + 0xc8,0x87,0x36,0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72,0x20,0x87,0x36,0x20, + 0x87,0x74,0xb0,0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88,0x07,0x79,0xa0,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0xc0,0x1c,0xc2,0x81, + 0x1d,0xe6,0xa1,0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c, + 0xda,0x80,0x1e,0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c,0xd8,0x81,0x1d,0xe6, + 0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87,0x72,0x98,0x87,0x79, + 0x68,0x03,0x78,0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72,0x68,0x03,0x73,0x80, + 0x87,0x76,0x08,0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xdc, + 0xe1,0x1d,0xda,0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda,0x00,0x1e,0xde,0x21, + 0x1d,0xdc,0x81,0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21,0x1d,0xda,0x01,0xa0, + 0x07,0x79,0xa8,0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30,0x07,0x79,0x08,0x87, + 0x76,0x28,0x87,0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87,0x72,0x90,0x87,0x36, + 0x28,0x07,0x76,0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77,0x68,0x03,0x76,0x28, + 0x87,0x70,0x30,0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70,0x07,0x73,0x98,0x87, + 0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1, + 0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1,0x1d,0xe0,0xa1,0x0d, + 0xe8,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87, + 0x72,0x00,0x08,0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87,0x79,0x68,0x03,0x73, + 0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c, + 0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d,0xca,0x81,0x1c,0xda, + 0x40,0x1f,0xca,0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0,0xa1,0x0d,0xda,0x21, + 0x1c,0xe8,0x01,0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80,0x70,0x87,0x77,0x68, + 0x03,0x7a,0x90,0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38,0x87,0x36,0x68,0x87, + 0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0x62,0x1e,0xe8,0x21, + 0x1c,0xc6,0x61,0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1,0x1c,0xc6,0x81,0x1e, + 0xde,0x41,0x1e,0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x0d,0xe6, + 0x21,0x1d,0xf4,0xa1,0x1c,0x00,0x3c,0x00,0x88,0x7a,0x70,0x87,0x79,0x08,0x07,0x73, + 0x28,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e, + 0xe4,0xa1,0x1e,0xca,0x01,0x20,0xea,0x61,0x1e,0xca,0xa1,0x0d,0xe6,0xe1,0x1d,0xcc, + 0x81,0x1e,0xda,0xc0,0x1c,0xd8,0xe1,0x1d,0xc2,0x81,0x1e,0x00,0x73,0x08,0x07,0x76, + 0x98,0x87,0x72,0x00,0x36,0x20,0x02,0x01,0x24,0xc0,0x02,0x54,0x00,0x00,0x00,0x00, + 0x49,0x18,0x00,0x00,0x01,0x00,0x00,0x00,0x13,0x84,0x40,0x00,0x89,0x20,0x00,0x00, + 0x1f,0x00,0x00,0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85,0x04,0x93,0x22,0xa4,0x84, + 0x04,0x93,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a,0x8c,0x0b,0x84,0xa4,0x4c, + 0x10,0x44,0x33,0x00,0xc3,0x08,0x02,0x30,0x8c,0x40,0x00,0x76,0x08,0x42,0x24,0x81, + 0x98,0x89,0x9a,0x07,0x7a,0x90,0x87,0x7a,0x18,0x07,0x7a,0x70,0x83,0x76,0x28,0x07, + 0x7a,0x08,0x07,0x76,0xd0,0x03,0x3d,0x68,0x87,0x70,0xa0,0x07,0x79,0x48,0x07,0x7c, + 0x40,0x01,0x39,0x48,0x9a,0x22,0x4a,0x98,0xfc,0x4a,0xfa,0x1f,0x20,0x02,0x18,0x09, + 0x05,0x65,0x10,0xc1,0x10,0x4a,0x31,0x42,0x10,0x87,0xd0,0x40,0xc0,0x1c,0x01,0x18, + 0xa4,0xc0,0x9a,0x23,0x00,0x85,0x41,0x04,0x41,0x18,0x46,0x20,0x96,0x11,0x00,0x00, + 0x13,0xa8,0x70,0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60, + 0x87,0x72,0x68,0x83,0x74,0x78,0x87,0x79,0xc8,0x03,0x37,0x80,0x03,0x37,0x80,0x83, + 0x0d,0xb7,0x51,0x0e,0x6d,0x00,0x0f,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xd0,0x06,0xe9,0x10,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d, + 0x90,0x0e,0x78,0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9,0x10,0x07,0x76,0xa0, + 0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xe9,0x30,0x07,0x72,0xa0,0x07, + 0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe9,0x60,0x07,0x74,0xa0,0x07,0x76, + 0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20, + 0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a, + 0x10,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x74,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30, + 0x07,0x72,0xd0,0x06,0xf6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07, + 0x72,0xd0,0x06,0xf6,0x40,0x07,0x78,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74, + 0xd0,0x06,0xf6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0, + 0x06,0xf6,0x90,0x07,0x76,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07, + 0x78,0xd0,0x06,0xf6,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a, + 0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x90,0x07,0x72,0xa0,0x07,0x72,0x50, + 0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x75,0x60,0x07, + 0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x75, + 0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xd0, + 0x06,0xf6,0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07, + 0x7a,0x10,0x07,0x70,0x20,0x07,0x74,0xd0,0x06,0xee,0x80,0x07,0x7a,0x10,0x07,0x76, + 0xa0,0x07,0x73,0x20,0x07,0x43,0x98,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80, + 0x2c,0x10,0x00,0x00,0x0a,0x00,0x00,0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c,0x90, + 0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0x5a,0x25,0x30,0x02,0x50,0x04,0x05,0x18,0x50, + 0x08,0x05,0x51,0x06,0x05,0x42,0x6d,0x04,0x80,0xd8,0x58,0x02,0x04,0x00,0x00,0x00, + 0x79,0x18,0x00,0x00,0xea,0x00,0x00,0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25, + 0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x32,0x28,0x00,0xa3,0x50,0xb9, + 0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62,0x2c,0x81,0x22,0x2c,0x05, + 0xe7,0x20,0x08,0x0e,0x8e,0xad,0x0c,0xa4,0xad,0x8c,0x2e,0x8c,0x0d,0xc4,0xae,0x4c, + 0x6e,0x2e,0xed,0xcd,0x0d,0x64,0x26,0x06,0x06,0x26,0xc6,0xc5,0x86,0x66,0x06,0x04, + 0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac,0x65,0x26,0x06,0x06,0x26,0xc6,0xc5,0x86, + 0x66,0xc6,0x85,0x26,0x65,0x88,0xa0,0x10,0x43,0x8c,0x25,0x58,0x8c,0x45,0x60,0xd1, + 0x54,0x46,0x17,0xc6,0x36,0x04,0x51,0x8e,0x25,0x58,0x84,0x45,0xe0,0x16,0x96,0x26, + 0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26,0xd7,0x36, + 0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x50,0x12,0x72,0x61,0x69,0x72, + 0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61,0x73,0x74,0x5f,0x6d,0x61, + 0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x04,0x65,0x21,0x19,0x84,0xa5, + 0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5,0x95,0x89, + 0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1,0x7d,0x95,0xb9,0x85,0x89, + 0xb1,0x95,0x0d,0x11,0x94,0x86,0x51,0x58,0x9a,0x9c,0x8b,0x5d,0x99,0x1c,0x5d,0x19, + 0xde,0xd7,0x5b,0x1d,0x1d,0x5c,0x1d,0x1d,0x97,0xba,0xb9,0x32,0x39,0x14,0xb6,0xb7, + 0x31,0x37,0x98,0x14,0x46,0x61,0x69,0x72,0x2e,0x61,0x72,0x67,0x5f,0x74,0x79,0x70, + 0x65,0x5f,0x6e,0x61,0x6d,0x65,0x34,0xcc,0xd8,0xde,0xc2,0xe8,0x64,0xc8,0x84,0xa5, + 0xc9,0xb9,0x84,0xc9,0x9d,0x7d,0xb9,0x85,0xb5,0x95,0x51,0xa8,0xb3,0x1b,0xc2,0x28, + 0x8f,0x02,0x29,0x91,0x22,0x29,0x93,0x42,0x71,0xa9,0x9b,0x2b,0x93,0x43,0x61,0x7b, + 0x1b,0x73,0x8b,0x49,0xa1,0x61,0xc6,0xf6,0x16,0x46,0x47,0xc3,0x62,0xec,0x8d,0xed, + 0x4d,0x6e,0x08,0xa3,0x3c,0x8a,0xa5,0x44,0xca,0xa5,0x4c,0x0a,0x46,0x26,0x2c,0x4d, + 0xce,0x05,0xee,0x6d,0x2e,0x8d,0x2e,0xed,0xcd,0x8d,0xcb,0x19,0xdb,0x17,0xd4,0xdb, + 0x5c,0x1a,0x5d,0xda,0x9b,0xdb,0x10,0x45,0xd1,0x94,0x48,0xb9,0x94,0x49,0xd9,0x86, + 0x18,0x4a,0xa5,0x64,0x0a,0x47,0x28,0x2c,0x4d,0xce,0xc5,0xae,0x4c,0x8e,0xae,0x0c, + 0xef,0x2b,0xcd,0x0d,0xae,0x8e,0x8e,0x52,0x58,0x9a,0x9c,0x0b,0xdb,0xdb,0x58,0x18, + 0x5d,0xda,0x9b,0xdb,0x57,0x9a,0x1b,0x59,0x19,0x1e,0xbd,0xb3,0x32,0xb7,0x32,0xb9, + 0x30,0xba,0x32,0x32,0x94,0xaf,0xaf,0xb0,0x34,0xb9,0x2f,0x38,0xb6,0xb0,0xb1,0x32, + 0xb4,0x37,0x36,0xb2,0x32,0xb9,0xaf,0xaf,0x14,0x22,0x70,0x6f,0x73,0x69,0x74,0x69, + 0x6f,0x6e,0x43,0xa8,0x45,0x50,0x3c,0xe5,0x5b,0x84,0x25,0x50,0xc0,0x40,0x89,0x14, + 0x49,0x99,0x94,0x30,0x60,0x42,0x57,0x86,0x37,0xf6,0xf6,0x26,0x47,0x06,0x33,0x84, + 0x5a,0x02,0xc5,0x53,0xbe,0x25,0x58,0x02,0x05,0x0c,0x94,0x48,0x91,0x94,0x49,0x19, + 0x03,0x1a,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x43,0xa8,0x65,0x50,0x3c,0xe5,0x5b,0x86, + 0x25,0x50,0xc0,0x40,0x89,0x94,0x4b,0x99,0x94,0x32,0xa0,0x12,0x96,0x26,0xe7,0x22, + 0x56,0x67,0x66,0x56,0x26,0xc7,0x27,0x2c,0x4d,0xce,0x45,0xac,0xce,0xcc,0xac,0x4c, + 0xee,0x6b,0x2e,0x4d,0xaf,0x8c,0x48,0x58,0x9a,0x9c,0x8b,0x5c,0x59,0x18,0x19,0xa9, + 0xb0,0x34,0x39,0x97,0x39,0x3a,0xb9,0xba,0x31,0xba,0x2f,0xba,0x3c,0xb8,0xb2,0xaf, + 0x34,0x37,0xb3,0x37,0x22,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x1c,0xda,0xec, + 0xe0,0x86,0x28,0x8b,0xb0,0x10,0x8b,0xa0,0xac,0x81,0xc2,0x06,0x8c,0xc2,0xd2,0xe4, + 0x5c,0xc2,0xe4,0xce,0xbe,0xe8,0xf2,0xe0,0xca,0xbe,0xe6,0xd2,0xf4,0xca,0x78,0x85, + 0xa5,0xc9,0xb9,0x84,0xc9,0x9d,0x7d,0xd1,0xe5,0xc1,0x95,0x7d,0x85,0xb1,0xa5,0x9d, + 0xb9,0x7d,0xcd,0xa5,0xe9,0x95,0x31,0xb1,0x9b,0xfb,0x82,0x0b,0x93,0x0b,0x6b,0x9b, + 0xe3,0xf0,0x25,0x13,0x33,0x84,0x0c,0x96,0x43,0x39,0x03,0x05,0x0d,0x16,0x42,0xf9, + 0x16,0x61,0x09,0x94,0x34,0x50,0xd4,0x40,0x69,0x03,0xc5,0x0d,0x16,0x42,0x79,0x83, + 0x05,0x51,0x22,0x05,0x0e,0x94,0x49,0x89,0x83,0x21,0x88,0x22,0x06,0x0a,0x19,0x28, + 0x66,0xa0,0xc8,0xc1,0x10,0x23,0x01,0x94,0x4e,0x99,0x03,0x3e,0x6f,0x6d,0x6e,0x69, + 0x70,0x6f,0x74,0x65,0x6e,0x74,0x20,0x63,0x68,0x61,0x72,0x7c,0xa6,0xd2,0xda,0xe0, + 0xd8,0xca,0x40,0x86,0x56,0x56,0x40,0xa8,0x84,0x82,0x82,0x86,0x08,0x8a,0x1d,0x0c, + 0x31,0x94,0x3a,0x50,0xee,0xa0,0x49,0x86,0x18,0x0a,0x1e,0x28,0x78,0xd0,0x24,0x23, + 0x22,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x77,0x20,0x87,0x7a,0x60,0x87, + 0x72,0x70,0x03,0x73,0x60,0x87,0x70,0x38,0x87,0x79,0x98,0x22,0x04,0xc3,0x08,0x85, + 0x1d,0xd8,0xc1,0x1e,0xda,0xc1,0x0d,0xd2,0x81,0x1c,0xca,0xc1,0x1d,0xe8,0x61,0x4a, + 0x50,0x8c,0x58,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xec,0xa1,0x1c,0xe4,0x61,0x1e,0xd2, + 0xe1,0x1d,0xdc,0x61,0x4a,0x60,0x8c,0xa0,0xc2,0x21,0x1d,0xe4,0xc1,0x0d,0xd8,0x21, + 0x1c,0xdc,0xe1,0x1c,0xea,0x21,0x1c,0xce,0xa1,0x1c,0x7e,0xc1,0x1e,0xca,0x41,0x1e, + 0xe6,0x21,0x1d,0xde,0xc1,0x1d,0xa6,0x04,0xc8,0x88,0x29,0x1c,0xd2,0x41,0x1e,0xdc, + 0x60,0x1c,0xde,0xa1,0x1d,0xe0,0x21,0x1d,0xd8,0xa1,0x1c,0x7e,0xe1,0x1d,0xe0,0x81, + 0x1e,0xd2,0xe1,0x1d,0xdc,0x61,0x1e,0xa6,0x0c,0x0a,0xe3,0x8c,0x50,0xc2,0x21,0x1d, + 0xe4,0xc1,0x0d,0xec,0xa1,0x1c,0xe4,0x81,0x1e,0xca,0x01,0x1f,0xa6,0x04,0x74,0x00, + 0x79,0x18,0x00,0x00,0x7b,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66, + 0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73, + 0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e, + 0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b, + 0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b, + 0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20, + 0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0, + 0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61, + 0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83, + 0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87, + 0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76, + 0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98, + 0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30, + 0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61, + 0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43, + 0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b, + 0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7, + 0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18, + 0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90, + 0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1, + 0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d, + 0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24, + 0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c, + 0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d, + 0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54, + 0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4, + 0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18, + 0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x98,0x81,0x5c,0xe3,0x10,0x0e,0xec,0xc0, + 0x0e,0xe5,0x50,0x0e,0xf3,0x30,0x23,0xc1,0xd2,0x41,0x1e,0xe4,0xe1,0x17,0xd8,0xe1, + 0x1d,0xde,0x01,0x1e,0x66,0x50,0x59,0x38,0xa4,0x83,0x3c,0xb8,0x81,0x39,0xd4,0x83, + 0x3b,0x8c,0x03,0x3d,0xa4,0xc3,0x3b,0xb8,0xc3,0x2f,0x9c,0x83,0x3c,0xbc,0x43,0x3d, + 0xc0,0xc3,0x3c,0x00,0x71,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x06,0x50,0x30,0x00, + 0xd2,0xd0,0x00,0x00,0x61,0x20,0x00,0x00,0x1e,0x00,0x00,0x00,0x13,0x04,0x41,0x2c, + 0x10,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0xf4,0xc6,0x22,0x82,0x20,0x08,0x46,0x00, + 0xa8,0x95,0x40,0x19,0xd0,0x98,0x01,0xa0,0x30,0x03,0x00,0x00,0xe3,0x15,0x07,0x33, + 0x4d,0x0c,0x05,0x65,0x90,0x81,0x19,0x0e,0x13,0x02,0xf9,0x8c,0x57,0x2c,0xd0,0x75, + 0x21,0x14,0x94,0x41,0x06,0xe8,0x60,0x4c,0x08,0xe4,0x63,0x41,0x01,0x9f,0xf1,0x0a, + 0xa8,0xe2,0x38,0x86,0x82,0x62,0x43,0x00,0x9f,0xd9,0x06,0xa7,0x02,0x66,0x1b,0x82, + 0x2a,0x98,0x6d,0x08,0x06,0x21,0x83,0x80,0x18,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x5b,0x86,0x20,0xc8,0x83,0x2d,0x43,0x11,0xe4,0xc1,0x96,0x41,0x09,0xf2,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; +static const uint8_t _sspine_fs_bytecode_metal_ios[3257] = { + 0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xb9,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc9,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd1,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd9,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00, + 0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45, + 0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0xf9,0x30,0x1b,0xe4,0xb2,0x62,0xda, + 0x23,0x88,0x1d,0xd4,0x13,0xb5,0x57,0x53,0xb9,0x44,0x7f,0x7f,0xe5,0xf3,0xc1,0xe4, + 0x19,0x37,0x0b,0xd8,0xef,0xc5,0x9b,0xf1,0x0b,0x4f,0x46,0x46,0x54,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08, + 0x00,0x01,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44, + 0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17,0x0b,0x00,0x00,0x00, + 0x00,0x14,0x00,0x00,0x00,0xc0,0x0b,0x00,0x00,0xff,0xff,0xff,0xff,0x42,0x43,0xc0, + 0xde,0x21,0x0c,0x00,0x00,0xed,0x02,0x00,0x00,0x0b,0x82,0x20,0x00,0x02,0x00,0x00, + 0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04,0x49,0x06,0x10,0x32, + 0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b,0x62,0x80,0x14,0x45, + 0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18,0x49,0x0a,0x32,0x44, + 0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21,0x72,0x24,0x07,0xc8, + 0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00,0x00,0x51,0x18,0x00, + 0x00,0x8e,0x00,0x00,0x00,0x1b,0xcc,0x25,0xf8,0xff,0xff,0xff,0xff,0x01,0x60,0x00, + 0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07,0x7a,0x60,0x87,0x7c, + 0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72,0x68,0x03,0x72,0x48, + 0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90,0x07,0x7a,0x68,0x03, + 0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc,0x21,0x1c,0xd8,0x61, + 0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81,0x1d,0xca,0xa1,0x0d, + 0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d,0xd8,0x61,0x1e,0x00, + 0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87,0x79,0x98,0x87,0x36, + 0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36,0x30,0x07,0x78,0x68, + 0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c,0x00,0xc2,0x1d,0xde, + 0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0,0xe1,0x1d,0xd2,0xc1, + 0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1,0x1d,0x00,0x7a,0x90, + 0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90,0x87,0x70,0x68,0x87, + 0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07,0x79,0x68,0x83,0x72, + 0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36,0x60,0x87,0x72,0x08, + 0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30,0x87,0x79,0x68,0x03, + 0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1, + 0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01,0x1e,0xda,0x80,0x1e, + 0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07, + 0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87,0x36,0x30,0x07,0x78, + 0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20, + 0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c,0xc8,0xa1,0x0d,0xf4, + 0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda,0xa0,0x1d,0xc2,0x81, + 0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77,0x78,0x87,0x36,0xa0, + 0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68,0x83,0x76,0x08,0x07, + 0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6,0x81,0x1e,0xc2,0x61, + 0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61,0x1c,0xe8,0xe1,0x1d, + 0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e,0xda,0x60,0x1e,0xd2, + 0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa8,0x07,0x77,0x98,0x87,0x70,0x30,0x87,0x72, + 0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e, + 0xea,0xa1,0x1c,0x00,0xa2,0x1e,0xe6,0xa1,0x1c,0xda,0x60,0x1e,0xde,0xc1,0x1c,0xe8, + 0xa1,0x0d,0xcc,0x81,0x1d,0xde,0x21,0x1c,0xe8,0x01,0x30,0x87,0x70,0x60,0x87,0x79, + 0x28,0x07,0x60,0x03,0x22,0x0c,0x40,0x02,0x2c,0x40,0xb5,0xc1,0x18,0x08,0x60,0x01, + 0xaa,0x0d,0x06,0x51,0x00,0x0b,0x50,0x6d,0x30,0x8a,0xff,0xff,0xff,0xff,0x1f,0x00, + 0x09,0xa0,0x36,0x20,0xc6,0xff,0xff,0xff,0xff,0x0f,0x00,0x03,0x48,0x40,0xb5,0xc1, + 0x38,0x02,0x60,0x01,0xaa,0x0d,0x06,0x22,0x00,0x0b,0x50,0x01,0x00,0x49,0x18,0x00, + 0x00,0x03,0x00,0x00,0x00,0x13,0x88,0x40,0x18,0x88,0x09,0x41,0x31,0x61,0x30,0x0e, + 0x04,0x89,0x20,0x00,0x00,0x27,0x00,0x00,0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85, + 0x04,0x93,0x22,0xa4,0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a, + 0x8c,0x0b,0x84,0xa4,0x4c,0x10,0x6c,0x33,0x00,0xc3,0x08,0x04,0x60,0x83,0x30,0x8c, + 0x20,0x00,0x07,0x49,0x53,0x44,0x09,0x93,0x5f,0x48,0xff,0x03,0x44,0x00,0x23,0xa1, + 0x00,0x0c,0x22,0x10,0xc2,0x51,0xd2,0x14,0x51,0xc2,0xe4,0xff,0x13,0x71,0x4d,0x54, + 0x44,0xfc,0xf6,0xf0,0x4f,0x63,0x04,0xc0,0x20,0x82,0x11,0x5c,0x24,0x4d,0x11,0x25, + 0x4c,0xfe,0x2f,0x01,0xcc,0xb3,0x10,0xd1,0x3f,0x8d,0x11,0x00,0x83,0x08,0x88,0x50, + 0x0c,0x31,0x42,0x39,0x89,0x54,0x21,0x42,0x08,0x81,0xd8,0x1c,0x41,0x30,0x47,0x00, + 0x06,0xc3,0x08,0xc2,0x53,0x90,0x70,0xd2,0x70,0xd0,0x01,0x8a,0x03,0x01,0x29,0xf0, + 0x86,0x11,0x86,0x67,0x18,0x61,0x00,0x86,0x11,0x88,0x67,0x8e,0x00,0x14,0x06,0x11, + 0x00,0x61,0x04,0x00,0x00,0x13,0xa8,0x70,0x48,0x07,0x79,0xb0,0x03,0x3a,0x68,0x83, + 0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68,0x83,0x74,0x78,0x87,0x79,0xc8,0x03,0x37, + 0x80,0x03,0x37,0x80,0x83,0x0d,0xb7,0x51,0x0e,0x6d,0x00,0x0f,0x7a,0x60,0x07,0x74, + 0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe9,0x10,0x07,0x7a,0x80, + 0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e,0x78,0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06, + 0xe9,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xe9, + 0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe9,0x60, + 0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe6,0x30,0x07, + 0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xe6,0x60,0x07,0x74, + 0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x10,0x07,0x76,0xa0, + 0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x74,0xa0,0x07, + 0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x30,0x07,0x72,0xa0,0x07,0x73, + 0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x40,0x07,0x78,0xa0,0x07,0x76,0x40, + 0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07, + 0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x90,0x07,0x76,0xa0,0x07,0x71,0x20,0x07,0x78, + 0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x72,0x80,0x07,0x7a,0x10, + 0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,0x0f,0x71,0x90,0x07, + 0x72,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6, + 0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60, + 0x07,0x6d,0x60,0x0f,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xa0,0x07, + 0x75,0x10,0x07,0x72,0xd0,0x06,0xf6,0x10,0x07,0x70,0x20,0x07,0x74,0xa0,0x07,0x71, + 0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07,0x70,0x20,0x07,0x74,0xd0,0x06,0xee,0x80, + 0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x73,0x20,0x07,0x43,0x98,0x05,0x00,0x80,0x00, + 0x00,0x00,0x00,0x00,0x80,0x21,0x4c,0x03,0x04,0x80,0x00,0x00,0x00,0x00,0x00,0xc0, + 0x10,0x46,0x02,0x02,0x60,0x00,0x00,0x00,0x00,0x00,0x20,0x0b,0x04,0x09,0x00,0x00, + 0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43, + 0x7a,0x23,0x00,0x25,0x50,0x08,0x45,0x50,0x10,0x65,0x40,0x78,0x04,0x80,0xe8,0x58, + 0x02,0x04,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0xfa,0x00,0x00,0x00,0x1a,0x03,0x4c, + 0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x63, + 0x4c,0x00,0xa5,0x50,0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62, + 0x3c,0xc4,0x24,0x3c,0x05,0xe7,0x20,0x08,0x0e,0x8e,0xad,0x0c,0xa4,0xad,0x8c,0x2e, + 0x8c,0x0d,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x64,0x26,0x06,0x06,0x26,0xc6, + 0xc5,0x86,0x66,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac,0x65,0x26,0x06, + 0x06,0x26,0xc6,0xc5,0x86,0x66,0xc6,0x85,0x26,0x65,0x88,0x30,0x11,0x43,0x8c,0x87, + 0x78,0x8e,0x67,0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x99,0x8e,0x87,0x78,0x86, + 0x67,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56, + 0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x98, + 0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61, + 0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x84, + 0x69,0x21,0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98, + 0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1, + 0x7d,0x95,0xb9,0x85,0x89,0xb1,0x95,0x0d,0x11,0xa6,0x86,0x51,0x58,0x9a,0x9c,0x8b, + 0x5c,0x99,0x1b,0x59,0x99,0xdc,0x17,0x5d,0x98,0xdc,0x59,0x19,0x1d,0xa3,0xb0,0x34, + 0x39,0x97,0x30,0xb9,0xb3,0x2f,0xba,0x3c,0xb8,0xb2,0x2f,0xb7,0xb0,0xb6,0x32,0x1a, + 0x66,0x6c,0x6f,0x61,0x74,0x34,0x64,0xc2,0xd2,0xe4,0x5c,0xc2,0xe4,0xce,0xbe,0xdc, + 0xc2,0xda,0xca,0xa8,0x98,0xc9,0x85,0x9d,0x7d,0x8d,0xbd,0xb1,0xbd,0xc9,0x0d,0x61, + 0xa6,0xe7,0x19,0x26,0x68,0x8a,0x26,0x69,0x9a,0x86,0x08,0x13,0x45,0x29,0x2c,0x4d, + 0xce,0xc5,0x4c,0x2e,0xec,0xac,0xad,0xcc,0x8d,0xee,0x2b,0xcd,0x0d,0xae,0x8e,0x8e, + 0x4b,0xdd,0x5c,0x99,0x1c,0x0a,0xdb,0xdb,0x98,0x1b,0x4c,0x0a,0x95,0xb0,0x34,0x39, + 0x97,0xb1,0x32,0x37,0xba,0x32,0x39,0x3e,0x61,0x69,0x72,0x2e,0x70,0x65,0x72,0x73, + 0x70,0x65,0x63,0x74,0x69,0x76,0x65,0x34,0xcc,0xd8,0xde,0xc2,0xe8,0x64,0x28,0xd4, + 0xd9,0x0d,0x91,0x9e,0x61,0xb2,0xa6,0x6b,0xc2,0xa6,0x6c,0x82,0x26,0x6d,0x92,0xa6, + 0x8d,0x4b,0xdd,0x5c,0x99,0x1c,0x0a,0xdb,0xdb,0x98,0x5b,0x4c,0x0a,0x8b,0xb1,0x37, + 0xb6,0x37,0xb9,0x21,0xd2,0x43,0x4c,0xd6,0xd4,0x4d,0xd8,0x94,0x4d,0xd0,0x14,0x4d, + 0xd2,0xe4,0x51,0x09,0x4b,0x93,0x73,0x11,0xab,0x33,0x33,0x2b,0x93,0xe3,0x13,0x96, + 0x26,0xe7,0x22,0x56,0x67,0x66,0x56,0x26,0xf7,0x35,0x97,0xa6,0x57,0x46,0x29,0x2c, + 0x4d,0xce,0x85,0xed,0x6d,0x2c,0x8c,0x2e,0xed,0xcd,0xed,0x2b,0xcd,0x8d,0xac,0x0c, + 0x8f,0x48,0x58,0x9a,0x9c,0x8b,0x5c,0x59,0x18,0x19,0xa9,0xb0,0x34,0x39,0x97,0x39, + 0x3a,0xb9,0xba,0x31,0xba,0x2f,0xba,0x3c,0xb8,0xb2,0xaf,0x34,0x37,0xb3,0x37,0x16, + 0x66,0x6c,0x6f,0x61,0x74,0x1c,0xe0,0xda,0xc2,0x86,0x28,0xcf,0xf0,0x14,0xcf,0x30, + 0x95,0xc1,0x64,0x06,0x8c,0xc2,0xd2,0xe4,0x5c,0xc2,0xe4,0xce,0xbe,0xe8,0xf2,0xe0, + 0xca,0xbe,0xe6,0xd2,0xf4,0xca,0x78,0x85,0xa5,0xc9,0xb9,0x84,0xc9,0x9d,0x7d,0xd1, + 0xe5,0xc1,0x95,0x7d,0x85,0xb1,0xa5,0x9d,0xb9,0x7d,0xcd,0xa5,0xe9,0x95,0x31,0x31, + 0x9b,0xfb,0x82,0x0b,0x93,0x0b,0x6b,0x9b,0xe3,0xf0,0x55,0x03,0x33,0x84,0x0c,0x1e, + 0x63,0x02,0x83,0x29,0x0c,0x9e,0x62,0x12,0x83,0x67,0x78,0x88,0x69,0x0c,0x26,0x32, + 0x98,0xce,0x60,0x42,0x83,0xa7,0x98,0xd2,0xe0,0x29,0x26,0x68,0x52,0x83,0x49,0x9a, + 0xd6,0x80,0x4b,0x58,0x9a,0x9c,0x0b,0x5d,0x19,0x1e,0x5d,0x9d,0x5c,0x19,0x95,0xb0, + 0x34,0x39,0x97,0xb9,0xb0,0x36,0x38,0xb6,0x32,0x62,0x74,0x65,0x78,0x74,0x75,0x72, + 0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c, + 0x65,0x3e,0x1c,0xe8,0xca,0xf0,0x86,0x50,0x0f,0x32,0xb5,0xc1,0x24,0x06,0xcf,0xf0, + 0x10,0x93,0x1b,0x4c,0xd0,0xf4,0x06,0x93,0x34,0xc1,0x01,0x97,0xb0,0x34,0x39,0x97, + 0xb9,0xb0,0x36,0x38,0xb6,0x32,0x39,0x1e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x44, + 0xe8,0xca,0xf0,0xa6,0xda,0xe0,0xd8,0xe4,0x86,0x48,0x4f,0x31,0xc9,0xc1,0x24,0x06, + 0xcf,0xf0,0x10,0x13,0x34,0xcd,0xc1,0x24,0x4d,0x74,0x30,0x44,0x99,0xb8,0xe9,0x9b, + 0xd8,0x60,0x8a,0x83,0xa9,0x0e,0x86,0x18,0x0b,0x30,0x55,0x93,0x1d,0xd0,0xf9,0xd2, + 0xa2,0x9a,0xca,0x31,0x9b,0xfb,0x82,0x0b,0x93,0x0b,0x6b,0x9b,0xe3,0xf3,0xd6,0xe6, + 0x96,0x06,0xf7,0x46,0x57,0xe6,0x46,0x07,0x32,0x86,0x16,0x26,0xc7,0x67,0x2a,0xad, + 0x0d,0x8e,0xad,0x0c,0x64,0x68,0x65,0x05,0x84,0x4a,0x28,0x28,0x68,0x88,0x30,0xe9, + 0xc1,0x10,0x63,0xca,0x83,0x69,0x0f,0xb0,0x64,0x88,0x31,0x95,0xc1,0xc4,0x07,0x58, + 0x32,0xc4,0x98,0xf0,0x60,0xea,0x03,0x2c,0x19,0x62,0x4c,0x7e,0x30,0xf5,0x01,0x96, + 0x8c,0x88,0xd8,0x81,0x1d,0xec,0xa1,0x1d,0xdc,0xa0,0x1d,0xde,0x81,0x1c,0xea,0x81, + 0x1d,0xca,0xc1,0x0d,0xcc,0x81,0x1d,0xc2,0xe1,0x1c,0xe6,0x61,0x8a,0x10,0x0c,0x23, + 0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x48,0x07,0x72,0x28,0x07,0x77,0xa0,0x87, + 0x29,0x41,0x31,0x62,0x09,0x87,0x74,0x90,0x07,0x37,0xb0,0x87,0x72,0x90,0x87,0x79, + 0x48,0x87,0x77,0x70,0x87,0x29,0x81,0x31,0x82,0x0a,0x87,0x74,0x90,0x07,0x37,0x60, + 0x87,0x70,0x70,0x87,0x73,0xa8,0x87,0x70,0x38,0x87,0x72,0xf8,0x05,0x7b,0x28,0x07, + 0x79,0x98,0x87,0x74,0x78,0x07,0x77,0x98,0x12,0x20,0x23,0xa6,0x70,0x48,0x07,0x79, + 0x70,0x83,0x71,0x78,0x87,0x76,0x80,0x87,0x74,0x60,0x87,0x72,0xf8,0x85,0x77,0x80, + 0x07,0x7a,0x48,0x87,0x77,0x70,0x87,0x79,0x98,0x32,0x28,0x8c,0x33,0x82,0x09,0x87, + 0x74,0x90,0x07,0x37,0x30,0x07,0x79,0x08,0x87,0x73,0x68,0x87,0x72,0x70,0x07,0x7a, + 0x98,0x12,0xdc,0x01,0x00,0x79,0x18,0x00,0x00,0x7b,0x00,0x00,0x00,0x33,0x08,0x80, + 0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80, + 0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80, + 0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88, + 0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78, + 0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03, + 0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f, + 0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c, + 0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39, + 0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b, + 0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60, + 0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87, + 0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e, + 0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c, + 0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6, + 0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94, + 0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03, + 0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07, + 0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f, + 0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33, + 0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc, + 0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c, + 0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78, + 0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca, + 0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21, + 0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43, + 0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87, + 0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x98,0x81,0x5c, + 0xe3,0x10,0x0e,0xec,0xc0,0x0e,0xe5,0x50,0x0e,0xf3,0x30,0x23,0xc1,0xd2,0x41,0x1e, + 0xe4,0xe1,0x17,0xd8,0xe1,0x1d,0xde,0x01,0x1e,0x66,0x50,0x59,0x38,0xa4,0x83,0x3c, + 0xb8,0x81,0x39,0xd4,0x83,0x3b,0x8c,0x03,0x3d,0xa4,0xc3,0x3b,0xb8,0xc3,0x2f,0x9c, + 0x83,0x3c,0xbc,0x43,0x3d,0xc0,0xc3,0x3c,0x00,0x71,0x20,0x00,0x00,0x0b,0x00,0x00, + 0x00,0x26,0xb0,0x01,0x48,0xe4,0x4b,0x00,0xf3,0x2c,0xc4,0x3f,0x11,0xd7,0x44,0x45, + 0xc4,0x6f,0x0f,0x7e,0x85,0x17,0xb7,0x6d,0x00,0x05,0x03,0x20,0x0d,0x6d,0x01,0x0d, + 0x80,0x44,0x3e,0x83,0x5c,0x7e,0x85,0x17,0xb7,0x0d,0x00,0x00,0x00,0x61,0x20,0x00, + 0x00,0x25,0x00,0x00,0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x0c,0x00,0x00, + 0x00,0x74,0x47,0x00,0xc6,0x22,0x80,0x40,0x38,0xe6,0x20,0x06,0xc2,0xa8,0xc8,0xd5, + 0xc0,0x08,0x00,0xbd,0x19,0x00,0x82,0x23,0x00,0x54,0xc7,0x1a,0x80,0x40,0x18,0x6b, + 0x18,0x86,0x81,0xec,0x0c,0x00,0x89,0x19,0x00,0x0a,0x33,0x00,0x04,0x46,0x00,0x00, + 0x00,0x23,0x06,0xca,0x10,0x6c,0x8f,0x23,0x29,0x47,0x12,0x58,0x20,0xc9,0x67,0x90, + 0x21,0x20,0x90,0x41,0x06,0xa1,0x40,0x4c,0x08,0xe4,0x33,0xc8,0x10,0x24,0xd0,0x20, + 0x43,0x50,0x48,0x16,0x60,0xf2,0x19,0x6f,0xc0,0x38,0x31,0xa0,0x60,0xcc,0x31,0x30, + 0x01,0x19,0x0c,0x32,0x04,0x0d,0x36,0x62,0x60,0x08,0x01,0x1a,0x2c,0x45,0x30,0xdb, + 0x00,0x05,0x40,0x06,0x01,0x31,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x5b,0x86,0x24, + 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, +}; +static const char _sspine_vs_source_metal_sim[716] = { + 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, + 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, + 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, + 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, + 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x76, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,0x76,0x70,0x3b,0x0a,0x7d,0x3b,0x0a, + 0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75, + 0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75, + 0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d, + 0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f, + 0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31, + 0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, + 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f, + 0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74, + 0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x69,0x74, + 0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28, + 0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, + 0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x20,0x5b,0x5b,0x61,0x74,0x74, + 0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x20,0x5b, + 0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x32,0x29,0x5d,0x5d,0x3b, + 0x0a,0x7d,0x3b,0x0a,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x35,0x20,0x22,0x73, + 0x73,0x70,0x69,0x6e,0x65,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x76,0x65,0x72,0x74, + 0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69, + 0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b, + 0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e, + 0x73,0x74,0x61,0x6e,0x74,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26, + 0x20,0x5f,0x32,0x31,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29, + 0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, + 0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x23,0x6c, + 0x69,0x6e,0x65,0x20,0x31,0x35,0x20,0x22,0x73,0x73,0x70,0x69,0x6e,0x65,0x2e,0x67, + 0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f, + 0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x32,0x31,0x2e,0x6d, + 0x76,0x70,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x2e,0x70, + 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, + 0x30,0x29,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x36,0x20,0x22,0x73,0x73, + 0x70,0x69,0x6e,0x65,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f, + 0x75,0x74,0x2e,0x75,0x76,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f, + 0x6f,0x72,0x64,0x30,0x3b,0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x37,0x20,0x22, + 0x73,0x73,0x70,0x69,0x6e,0x65,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20, + 0x20,0x6f,0x75,0x74,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x69,0x6e,0x2e, + 0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, +}; +static const char _sspine_fs_source_metal_sim[721] = { + 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, + 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, + 0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a, + 0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20, + 0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x66, + 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x20,0x70,0x6d,0x61,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74, + 0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67, + 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30, + 0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20, + 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28, + 0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65, + 0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a, + 0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x34,0x20,0x22,0x73,0x73,0x70,0x69,0x6e,0x65, + 0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20, + 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28, + 0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74, + 0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61, + 0x6e,0x74,0x20,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x35, + 0x30,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x2c, + 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74, + 0x3e,0x20,0x74,0x65,0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, + 0x30,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x74,0x65, + 0x78,0x53,0x6d,0x70,0x6c,0x72,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72, + 0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69, + 0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b, + 0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x34,0x20,0x22,0x73,0x73,0x70,0x69,0x6e, + 0x65,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x34,0x20,0x5f,0x32,0x35,0x20,0x3d,0x20,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d, + 0x70,0x6c,0x65,0x28,0x74,0x65,0x78,0x53,0x6d,0x70,0x6c,0x72,0x2c,0x20,0x69,0x6e, + 0x2e,0x75,0x76,0x29,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x3b, + 0x0a,0x23,0x6c,0x69,0x6e,0x65,0x20,0x31,0x35,0x20,0x22,0x73,0x73,0x70,0x69,0x6e, + 0x65,0x2e,0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x5f,0x33,0x34,0x20,0x3d,0x20,0x5f,0x32,0x35,0x2e,0x77,0x3b,0x0a,0x23, + 0x6c,0x69,0x6e,0x65,0x20,0x31,0x36,0x20,0x22,0x73,0x73,0x70,0x69,0x6e,0x65,0x2e, + 0x67,0x6c,0x73,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f, + 0x32,0x35,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x5f,0x32,0x35,0x2e,0x78, + 0x79,0x7a,0x20,0x2a,0x20,0x5f,0x33,0x34,0x2c,0x20,0x5f,0x33,0x34,0x29,0x20,0x2a, + 0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x34,0x28,0x5f,0x35,0x30,0x2e,0x70,0x6d,0x61,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a, + 0x00, +}; +#elif defined(SOKOL_WGPU) +#error "FIXME: wgpu shaders" +#elif defined(SOKOL_DUMMY_BACKEND) +static const char* _sspine_vs_source_dummy = ""; +static const char* _sspine_fs_source_dummy = ""; +#else +#error "Please define one of SOKOL_GLCORE33, SOKOL_GLES3, SOKOL_D3D11, SOKOL_METAL, SOKOL_WGPU or SOKOL_DUMMY_BACKEND!" +#endif + +// ███████ ████████ ██████ ██ ██ ██████ ████████ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██████ ██ ██ ██ ██ ███████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██ ██ ██████ ██████ ██ ███████ +// +// >>structs + +#define _sspine_def(val, def) (((val) == 0) ? (def) : (val)) +#define _SSPINE_INIT_COOKIE (0xABBAABBA) +#define _SSPINE_INVALID_SLOT_INDEX (0) +#define _SSPINE_DEFAULT_CONTEXT_POOL_SIZE (4) +#define _SSPINE_DEFAULT_ATLAS_POOL_SIZE (64) +#define _SSPINE_DEFAULT_SKELETON_POOL_SIZE (64) +#define _SSPINE_DEFAULT_SKINSET_POOL_SIZE (64) +#define _SSPINE_DEFAULT_INSTANCE_POOL_SIZE (1024) +#define _SSPINE_DEFAULT_MAX_VERTICES (1<<16) +#define _SSPINE_DEFAULT_MAX_COMMANDS (1<<14) +#define _SSPINE_MAX_TRIGGERED_EVENTS (16) +#define _SSPINE_SLOT_SHIFT (16) +#define _SSPINE_MAX_POOL_SIZE (1<<_SSPINE_SLOT_SHIFT) +#define _SSPINE_SLOT_MASK (_SSPINE_MAX_POOL_SIZE-1) + +typedef struct { + float mvp[16]; +} _sspine_vsparams_t; + +typedef struct { + float pma; + uint8_t _pad[12]; +} _sspine_fsparams_t; + +typedef struct { + uint32_t id; + sspine_resource_state state; +} _sspine_slot_t; + +typedef struct { + int size; + int queue_top; + uint32_t* gen_ctrs; + int* free_queue; +} _sspine_pool_t; + +typedef struct { + _sspine_slot_t slot; + sspine_atlas_overrides overrides; + spAtlas* sp_atlas; + int num_pages; +} _sspine_atlas_t; + +typedef struct { + _sspine_pool_t pool; + _sspine_atlas_t* items; +} _sspine_atlas_pool_t; + +typedef struct { + uint32_t id; + _sspine_atlas_t* ptr; +} _sspine_atlas_ref_t; + +typedef struct { + _sspine_slot_t slot; + _sspine_atlas_ref_t atlas; + spSkeletonData* sp_skel_data; + spAnimationStateData* sp_anim_data; + struct { + int cap; + sspine_vec2* ptr; + } tform_buf; +} _sspine_skeleton_t; + +typedef struct { + _sspine_pool_t pool; + _sspine_skeleton_t* items; +} _sspine_skeleton_pool_t; + +typedef struct { + uint32_t id; + _sspine_skeleton_t* ptr; +} _sspine_skeleton_ref_t; + +typedef struct { + _sspine_slot_t slot; + _sspine_skeleton_ref_t skel; + spSkin* sp_skin; +} _sspine_skinset_t; + +typedef struct { + _sspine_pool_t pool; + _sspine_skinset_t* items; +} _sspine_skinset_pool_t; + +typedef struct { + uint32_t id; + _sspine_skinset_t* ptr; +} _sspine_skinset_ref_t; + +typedef struct { + _sspine_slot_t slot; + _sspine_atlas_ref_t atlas; + _sspine_skeleton_ref_t skel; + _sspine_skinset_ref_t skinset; + spSkeleton* sp_skel; + spAnimationState* sp_anim_state; + spSkeletonClipping* sp_clip; + int cur_triggered_event_index; + sspine_triggered_event_info triggered_events[_SSPINE_MAX_TRIGGERED_EVENTS]; +} _sspine_instance_t; + +typedef struct { + _sspine_pool_t pool; + _sspine_instance_t* items; +} _sspine_instance_pool_t; + +typedef struct { + sspine_vec2 pos; + sspine_vec2 uv; + uint32_t color; +} _sspine_vertex_t; + +typedef struct { + _sspine_vertex_t* ptr; + int index; +} _sspine_alloc_vertices_result_t; + +typedef struct { + uint32_t* ptr; + int index; +} _sspine_alloc_indices_result_t; + +typedef struct { + int layer; + sg_pipeline pip; + sg_image img; + float pma; // pma = 0.0: use texture color as is, pma = 1.0: multiply texture rgb by texture alpha in fragment shader + int base_element; + int num_elements; +} _sspine_command_t; + +typedef struct { + _sspine_slot_t slot; + float transform[16]; + struct { + int cap; + int next; + uint32_t rewind_frame_id; + _sspine_vertex_t* ptr; + } vertices; + struct { + int cap; + int next; + uint32_t rewind_frame_id; + uint32_t* ptr; + } indices; + struct { + int cap; + int next; + uint32_t rewind_frame_id; + _sspine_command_t* ptr; + } commands; + uint32_t update_frame_id; + sg_buffer vbuf; + sg_buffer ibuf; + struct { + sg_pipeline normal_additive; + sg_pipeline multiply; + } pip; + sg_bindings bind; +} _sspine_context_t; + +typedef struct { + _sspine_pool_t pool; + _sspine_context_t* items; +} _sspine_context_pool_t; + +typedef struct { + uint32_t init_cookie; + uint32_t frame_id; + sspine_desc desc; + sspine_context def_ctx_id; + sspine_context cur_ctx_id; + _sspine_context_t* cur_ctx; // may be 0! + sg_shader shd; + _sspine_context_pool_t context_pool; + _sspine_atlas_pool_t atlas_pool; + _sspine_skeleton_pool_t skeleton_pool; + _sspine_skinset_pool_t skinset_pool; + _sspine_instance_pool_t instance_pool; +} _sspine_t; +static _sspine_t _sspine; + +// dummy spine-c platform implementation functions +#if defined(__cplusplus) +extern "C" { +#endif +void _spAtlasPage_createTexture(spAtlasPage* self, const char* path) { + // nothing to do here + (void)self; (void)path; +} + +void _spAtlasPage_disposeTexture(spAtlasPage* self) { + if (self->rendererObject != 0) { + const sg_image img = { (uint32_t)(uintptr_t)self->rendererObject }; + sg_destroy_image(img); + } +} + +char* _spUtil_readFile(const char* path, int* length) { + (void)path; + *length = 0; + return 0; +} +#if defined(__cplusplus) +} // extern "C" +#endif + +// ██ ██████ ██████ ██████ ██ ███ ██ ██████ +// ██ ██ ██ ██ ██ ██ ████ ██ ██ +// ██ ██ ██ ██ ███ ██ ███ ██ ██ ██ ██ ██ ███ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██████ ██████ ██████ ██ ██ ████ ██████ +// +// >>logging +#if defined(SOKOL_DEBUG) +#define _SSPINE_LOGITEM_XMACRO(item,msg) #item ": " msg, +static const char* _sspine_log_messages[] = { + _SSPINE_LOG_ITEMS +}; +#undef _SSPINE_LOGITEM_XMACRO +#endif // SOKOL_DEBUG + +#define _SSPINE_PANIC(code) _sspine_log(SSPINE_LOGITEM_ ##code, 0, __LINE__) +#define _SSPINE_ERROR(code) _sspine_log(SSPINE_LOGITEM_ ##code, 1, __LINE__) +#define _SSPINE_WARN(code) _sspine_log(SSPINE_LOGITEM_ ##code, 2, __LINE__) +#define _SSPINE_INFO(code) _sspine_log(SSPINE_LOGITEM_ ##code, 3, __LINE__) + +static void _sspine_log(sspine_log_item log_item, uint32_t log_level, uint32_t line_nr) { + if (_sspine.desc.logger.func) { + #if defined(SOKOL_DEBUG) + const char* filename = __FILE__; + const char* message = _sspine_log_messages[log_item]; + #else + const char* filename = 0; + const char* message = 0; + #endif + _sspine.desc.logger.func("sspine", log_level, log_item, message, line_nr, filename, _sspine.desc.logger.user_data); + } + else { + // for log level PANIC it would be 'undefined behaviour' to continue + if (log_level == 0) { + abort(); + } + } +} + +// ███ ███ ███████ ███ ███ ██████ ██████ ██ ██ +// ████ ████ ██ ████ ████ ██ ██ ██ ██ ██ ██ +// ██ ████ ██ █████ ██ ████ ██ ██ ██ ██████ ████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ███████ ██ ██ ██████ ██ ██ ██ +// +// >>memory +static void _sspine_clear(void* ptr, size_t size) { + SOKOL_ASSERT(ptr && (size > 0)); + memset(ptr, 0, size); +} + +/* Copy a string into a fixed size buffer with guaranteed zero- + termination. + + Return false if the string didn't fit into the buffer and had to be clamped. + + FIXME: Currently UTF-8 strings might become invalid if the string + is clamped, because the last zero-byte might be written into + the middle of a multi-byte sequence. +*/ +static bool _sspine_strcpy(const char* src, char* dst, int max_len) { + SOKOL_ASSERT(src && dst && (max_len > 0)); + char* const end = &(dst[max_len-1]); + char c = 0; + for (int i = 0; i < max_len; i++) { + c = *src; + if (c != 0) { + src++; + } + *dst++ = c; + } + // truncated? + if (c != 0) { + *end = 0; + return false; + } + else { + return true; + } +} + +static sspine_string _sspine_string(const char* cstr) { + sspine_string res; + _sspine_clear(&res, sizeof(res)); + if (cstr) { + res.valid = true; + res.truncated = !_sspine_strcpy(cstr, res.cstr, sizeof(res.cstr)); + res.len = (uint8_t)strlen(res.cstr); + } + return res; +} + +static void* _sspine_malloc(size_t size) { + SOKOL_ASSERT(size > 0); + void* ptr; + if (_sspine.desc.allocator.alloc) { + ptr = _sspine.desc.allocator.alloc(size, _sspine.desc.allocator.user_data); + } + else { + ptr = malloc(size); + } + if (0 == ptr) { + _SSPINE_PANIC(MALLOC_FAILED); + } + return ptr; +} + +static void* _sspine_malloc_clear(size_t size) { + void* ptr = _sspine_malloc(size); + _sspine_clear(ptr, size); + return ptr; +} + +static void _sspine_free(void* ptr) { + if (_sspine.desc.allocator.free) { + _sspine.desc.allocator.free(ptr, _sspine.desc.allocator.user_data); + } + else { + free(ptr); + } +} + +// ██████ ███████ ███████ ███████ +// ██ ██ ██ ██ ██ +// ██████ █████ █████ ███████ +// ██ ██ ██ ██ ██ +// ██ ██ ███████ ██ ███████ +// +// >>refs +static bool _sspine_atlas_ref_valid(const _sspine_atlas_ref_t* ref) { + return ref->ptr && (ref->ptr->slot.id == ref->id); +} + +static bool _sspine_skeleton_ref_valid(const _sspine_skeleton_ref_t* ref) { + return ref->ptr && (ref->ptr->slot.id == ref->id); +} + +static bool _sspine_skinset_ref_valid(const _sspine_skinset_ref_t* ref) { + return ref->ptr && (ref->ptr->slot.id == ref->id); +} + +static bool _sspine_skeleton_and_deps_valid(_sspine_skeleton_t* skeleton) { + return skeleton && _sspine_atlas_ref_valid(&skeleton->atlas); +} + +static bool _sspine_skinset_and_deps_valid(_sspine_skinset_t* skinset) { + return skinset && _sspine_skeleton_ref_valid(&skinset->skel); +} + +static bool _sspine_instance_and_deps_valid(_sspine_instance_t* instance) { + return instance && + _sspine_atlas_ref_valid(&instance->atlas) && + _sspine_skeleton_ref_valid(&instance->skel) && + ((instance->skinset.id == SSPINE_INVALID_ID) || _sspine_skinset_ref_valid(&instance->skinset)); +} + +static sspine_image _sspine_image(uint32_t atlas_id, int index) { + sspine_image img = { atlas_id, index }; + return img; +} + +static sspine_atlas_page _sspine_atlas_page(uint32_t atlas_id, int index) { + sspine_atlas_page page = { atlas_id, index }; + return page; +} + +static sspine_anim _sspine_anim(uint32_t skeleton_id, int index) { + sspine_anim anim = { skeleton_id, index }; + return anim; +} + +static sspine_bone _sspine_bone(uint32_t skeleton_id, int index) { + sspine_bone bone = { skeleton_id, index }; + return bone; +} + +static sspine_slot _sspine_slot(uint32_t skeleton_id, int index) { + sspine_slot slot = { skeleton_id, index }; + return slot; +} + +static sspine_event _sspine_event(uint32_t skeleton_id, int index) { + sspine_event event = { skeleton_id, index }; + return event; +} + +static sspine_iktarget _sspine_iktarget(uint32_t skeleton_id, int index) { + sspine_iktarget iktarget = { skeleton_id, index }; + return iktarget; +} + +static sspine_skin _sspine_skin(uint32_t skeleton_id, int index) { + sspine_skin skin = { skeleton_id, index }; + return skin; +} + +// ██████ ██████ ██████ ██ +// ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ +// ██ ██████ ██████ ███████ +// +// >>pool +static void _sspine_init_pool(_sspine_pool_t* pool, int num) { + SOKOL_ASSERT(pool && (num >= 1)); + // slot 0 is reserved for the 'invalid id', so bump the pool size by 1 + pool->size = num + 1; + pool->queue_top = 0; + // generation counters indexable by pool slot index, slot 0 is reserved + size_t gen_ctrs_size = sizeof(uint32_t) * (size_t)pool->size; + pool->gen_ctrs = (uint32_t*) _sspine_malloc_clear(gen_ctrs_size); + // it's not a bug to only reserve 'num' here + pool->free_queue = (int*) _sspine_malloc_clear(sizeof(int) * (size_t)num); + // never allocate the zero-th pool item since the invalid id is 0 + for (int i = pool->size-1; i >= 1; i--) { + pool->free_queue[pool->queue_top++] = i; + } +} + +static void _sspine_discard_pool(_sspine_pool_t* pool) { + SOKOL_ASSERT(pool); + SOKOL_ASSERT(pool->free_queue); + _sspine_free(pool->free_queue); + pool->free_queue = 0; + SOKOL_ASSERT(pool->gen_ctrs); + _sspine_free(pool->gen_ctrs); + pool->gen_ctrs = 0; + pool->size = 0; + pool->queue_top = 0; +} + +static int _sspine_pool_alloc_index(_sspine_pool_t* pool) { + SOKOL_ASSERT(pool); + SOKOL_ASSERT(pool->free_queue); + if (pool->queue_top > 0) { + int slot_index = pool->free_queue[--pool->queue_top]; + SOKOL_ASSERT((slot_index > 0) && (slot_index < pool->size)); + return slot_index; + } + else { + // pool exhausted + return _SSPINE_INVALID_SLOT_INDEX; + } +} + +static void _sspine_pool_free_index(_sspine_pool_t* pool, int slot_index) { + SOKOL_ASSERT((slot_index > _SSPINE_INVALID_SLOT_INDEX) && (slot_index < pool->size)); + SOKOL_ASSERT(pool); + SOKOL_ASSERT(pool->free_queue); + SOKOL_ASSERT(pool->queue_top < pool->size); + #ifdef SOKOL_DEBUG + // debug check against double-free + for (int i = 0; i < pool->queue_top; i++) { + SOKOL_ASSERT(pool->free_queue[i] != slot_index); + } + #endif + pool->free_queue[pool->queue_top++] = slot_index; + SOKOL_ASSERT(pool->queue_top <= (pool->size-1)); +} + +/* initiailize a pool slot: + - bump the slot's generation counter + - create a resource id from the generation counter and slot index + - set the slot's id to this id + - set the slot's state to ALLOC + - return the handle id +*/ +static uint32_t _sspine_slot_init(_sspine_pool_t* pool, _sspine_slot_t* slot, int slot_index) { + /* FIXME: add handling for an overflowing generation counter, + for now, just overflow (another option is to disable + the slot) + */ + SOKOL_ASSERT(pool && pool->gen_ctrs); + SOKOL_ASSERT((slot_index > _SSPINE_INVALID_SLOT_INDEX) && (slot_index < pool->size)); + SOKOL_ASSERT((slot->state == SSPINE_RESOURCESTATE_INITIAL) && (slot->id == SSPINE_INVALID_ID)); + uint32_t ctr = ++pool->gen_ctrs[slot_index]; + slot->id = (ctr<<_SSPINE_SLOT_SHIFT)|(slot_index & _SSPINE_SLOT_MASK); + slot->state = SSPINE_RESOURCESTATE_ALLOC; + return slot->id; +} + +// extract slot index from id +static int _sspine_slot_index(uint32_t id) { + int slot_index = (int) (id & _SSPINE_SLOT_MASK); + SOKOL_ASSERT(_SSPINE_INVALID_SLOT_INDEX != slot_index); + return slot_index; +} + +static void _sspine_init_item_pool(_sspine_pool_t* pool, int pool_size, void** items_ptr, size_t item_size_bytes) { + // NOTE: the pools will have an additional item, since slot 0 is reserved + SOKOL_ASSERT(pool && (pool->size == 0)); + SOKOL_ASSERT((pool_size > 0) && (pool_size < _SSPINE_MAX_POOL_SIZE)); + SOKOL_ASSERT(items_ptr && (*items_ptr == 0)); + SOKOL_ASSERT(item_size_bytes > 0); + _sspine_init_pool(pool, pool_size); + const size_t pool_size_bytes = item_size_bytes * (size_t)pool->size; + *items_ptr = _sspine_malloc_clear(pool_size_bytes); +} + +static void _sspine_discard_item_pool(_sspine_pool_t* pool, void** items_ptr) { + SOKOL_ASSERT(pool && (pool->size != 0)); + SOKOL_ASSERT(items_ptr && (*items_ptr != 0)); + _sspine_free(*items_ptr); *items_ptr = 0; + _sspine_discard_pool(pool); +} + +// ██████ ██████ ███ ██ ████████ ███████ ██ ██ ████████ +// ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ █████ ███ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██████ ██ ████ ██ ███████ ██ ██ ██ +// +// >>context +static void _sspine_setup_context_pool(int pool_size) { + _sspine_context_pool_t* p = &_sspine.context_pool; + _sspine_init_item_pool(&p->pool, pool_size, (void**)&p->items, sizeof(_sspine_context_t)); +} + +static void _sspine_discard_context_pool(void) { + _sspine_context_pool_t* p = &_sspine.context_pool; + _sspine_discard_item_pool(&p->pool, (void**)&p->items); +} + +static sspine_context _sspine_make_context_handle(uint32_t id) { + sspine_context handle = { id }; + return handle; +} + +static _sspine_context_t* _sspine_context_at(uint32_t id) { + SOKOL_ASSERT(SSPINE_INVALID_ID != id); + const _sspine_context_pool_t* p = &_sspine.context_pool; + int slot_index = _sspine_slot_index(id); + SOKOL_ASSERT((slot_index > _SSPINE_INVALID_SLOT_INDEX) && (slot_index < p->pool.size)); + return &p->items[slot_index]; +} + +static _sspine_context_t* _sspine_lookup_context(uint32_t id) { + if (SSPINE_INVALID_ID != id) { + _sspine_context_t* ctx = _sspine_context_at(id); + if (ctx->slot.id == id) { + return ctx; + } + } + return 0; +} + +static sspine_context _sspine_alloc_context(void) { + _sspine_context_pool_t* p = &_sspine.context_pool; + int slot_index = _sspine_pool_alloc_index(&p->pool); + if (_SSPINE_INVALID_SLOT_INDEX != slot_index) { + uint32_t id = _sspine_slot_init(&p->pool, &p->items[slot_index].slot, slot_index); + return _sspine_make_context_handle(id); + } + else { + // pool exhausted + return _sspine_make_context_handle(SSPINE_INVALID_ID); + } +} + +static sspine_resource_state _sspine_init_context(_sspine_context_t* ctx, const sspine_context_desc* desc) { + SOKOL_ASSERT(ctx && (ctx->slot.state == SSPINE_RESOURCESTATE_ALLOC)); + SOKOL_ASSERT(desc); + + // setup vertex, index and command storage + ctx->vertices.cap = desc->max_vertices; + ctx->indices.cap = ctx->vertices.cap * 3; + ctx->commands.cap = desc->max_commands; + + const size_t vbuf_size = (size_t)ctx->vertices.cap * sizeof(_sspine_vertex_t); + const size_t ibuf_size = (size_t)ctx->indices.cap * sizeof(uint32_t); + const size_t cbuf_size = (size_t)ctx->commands.cap * sizeof(_sspine_command_t); + + ctx->vertices.ptr = (_sspine_vertex_t*) _sspine_malloc(vbuf_size); + ctx->indices.ptr = (uint32_t*) _sspine_malloc(ibuf_size); + ctx->commands.ptr = (_sspine_command_t*) _sspine_malloc(cbuf_size); + + sg_buffer_desc vbuf_desc; + _sspine_clear(&vbuf_desc, sizeof(vbuf_desc)); + vbuf_desc.type = SG_BUFFERTYPE_VERTEXBUFFER; + vbuf_desc.usage = SG_USAGE_STREAM; + vbuf_desc.size = vbuf_size; + vbuf_desc.label = "sspine-vbuf"; + ctx->vbuf = sg_make_buffer(&vbuf_desc); + ctx->bind.vertex_buffers[0] = ctx->vbuf; + + sg_buffer_desc ibuf_desc; + _sspine_clear(&ibuf_desc, sizeof(ibuf_desc)); + ibuf_desc.type = SG_BUFFERTYPE_INDEXBUFFER; + ibuf_desc.usage = SG_USAGE_STREAM; + ibuf_desc.size = ibuf_size; + ibuf_desc.label = "sspine-ibuf"; + ctx->ibuf = sg_make_buffer(&ibuf_desc); + ctx->bind.index_buffer = ctx->ibuf; + + // for blend modes, see: https://wiki.libsdl.org/SDL_BlendMode + // + // NOTE: we're configuring the blend mode for premultiplied alpha, + // and then do the premultiplication in the fragment shader + // if needed + sg_pipeline_desc pip_desc; + _sspine_clear(&pip_desc, sizeof(pip_desc)); + pip_desc.shader = _sspine.shd; + pip_desc.layout.buffers[0].stride = sizeof(_sspine_vertex_t); + pip_desc.layout.attrs[0].format = SG_VERTEXFORMAT_FLOAT2; + pip_desc.layout.attrs[1].format = SG_VERTEXFORMAT_FLOAT2; + pip_desc.layout.attrs[2].format = SG_VERTEXFORMAT_UBYTE4N; + pip_desc.index_type = SG_INDEXTYPE_UINT32; + pip_desc.sample_count = desc->sample_count; + pip_desc.depth.pixel_format = desc->depth_format; + pip_desc.colors[0].pixel_format = desc->color_format; + pip_desc.colors[0].write_mask = desc->color_write_mask; + pip_desc.colors[0].blend.enabled = true; + pip_desc.colors[0].blend.src_factor_rgb = SG_BLENDFACTOR_ONE; + pip_desc.colors[0].blend.dst_factor_rgb = SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA; + pip_desc.colors[0].blend.src_factor_alpha = SG_BLENDFACTOR_ONE; + pip_desc.colors[0].blend.dst_factor_alpha = SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA; + pip_desc.label = "sspine-pip-normal/additive"; + ctx->pip.normal_additive = sg_make_pipeline(&pip_desc); + + pip_desc.colors[0].blend.src_factor_rgb = SG_BLENDFACTOR_ZERO; + pip_desc.colors[0].blend.dst_factor_rgb = SG_BLENDFACTOR_SRC_COLOR; + pip_desc.colors[0].blend.src_factor_alpha = SG_BLENDFACTOR_ZERO; + pip_desc.colors[0].blend.dst_factor_alpha = SG_BLENDFACTOR_ONE; + pip_desc.label = "sspine-pip-multiply"; + ctx->pip.multiply = sg_make_pipeline(&pip_desc); + + return SSPINE_RESOURCESTATE_VALID; +} + +static void _sspine_deinit_context(_sspine_context_t* ctx) { + // NOTE: it's ok to call sg_destroy functions with invalid handles + sg_destroy_pipeline(ctx->pip.normal_additive); + sg_destroy_pipeline(ctx->pip.multiply); + sg_destroy_buffer(ctx->ibuf); + sg_destroy_buffer(ctx->vbuf); + if (ctx->commands.ptr) { + _sspine_free(ctx->commands.ptr); + ctx->commands.ptr = 0; + } + if (ctx->indices.ptr) { + _sspine_free(ctx->indices.ptr); + ctx->indices.ptr = 0; + } + if (ctx->vertices.ptr) { + _sspine_free(ctx->vertices.ptr); + ctx->vertices.ptr = 0; + } +} + +static void _sspine_destroy_context(sspine_context ctx_id) { + _sspine_context_t* ctx = _sspine_lookup_context(ctx_id.id); + if (ctx) { + _sspine_deinit_context(ctx); + _sspine_context_pool_t* p = &_sspine.context_pool; + _sspine_clear(ctx, sizeof(_sspine_context_t)); + _sspine_pool_free_index(&p->pool, _sspine_slot_index(ctx_id.id)); + } +} + +static void _sspine_destroy_all_contexts(void) { + _sspine_context_pool_t* p = &_sspine.context_pool; + for (int i = 0; i < p->pool.size; i++) { + _sspine_context_t* ctx = &p->items[i]; + _sspine_destroy_context(_sspine_make_context_handle(ctx->slot.id)); + } +} + +static sspine_context_desc _sspine_context_desc_defaults(const sspine_context_desc* desc) { + sspine_context_desc res = *desc; + res.max_vertices = _sspine_def(desc->max_vertices, _SSPINE_DEFAULT_MAX_VERTICES); + res.max_commands = _sspine_def(desc->max_commands, _SSPINE_DEFAULT_MAX_COMMANDS); + return res; +} + +static bool _sspine_is_default_context(sspine_context ctx_id) { + return ctx_id.id == 0x00010001; +} + +// █████ ████████ ██ █████ ███████ +// ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██ ███████ ███████ +// ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ███████ ██ ██ ███████ +// +// >>atlas +static void _sspine_setup_atlas_pool(int pool_size) { + _sspine_atlas_pool_t* p = &_sspine.atlas_pool; + _sspine_init_item_pool(&p->pool, pool_size, (void**)&p->items, sizeof(_sspine_atlas_t)); +} + +static void _sspine_discard_atlas_pool(void) { + _sspine_atlas_pool_t* p = &_sspine.atlas_pool; + _sspine_discard_item_pool(&p->pool, (void**)&p->items); +} + +static sspine_atlas _sspine_make_atlas_handle(uint32_t id) { + sspine_atlas handle = { id }; + return handle; +} + +static _sspine_atlas_t* _sspine_atlas_at(uint32_t id) { + SOKOL_ASSERT(SSPINE_INVALID_ID != id); + const _sspine_atlas_pool_t* p = &_sspine.atlas_pool; + int slot_index = _sspine_slot_index(id); + SOKOL_ASSERT((slot_index > _SSPINE_INVALID_SLOT_INDEX) && (slot_index < p->pool.size)); + return &p->items[slot_index]; +} + +static _sspine_atlas_t* _sspine_lookup_atlas(uint32_t id) { + if (SSPINE_INVALID_ID != id) { + _sspine_atlas_t* atlas = _sspine_atlas_at(id); + if (atlas->slot.id == id) { + return atlas; + } + } + return 0; +} + +static sspine_atlas _sspine_alloc_atlas(void) { + _sspine_atlas_pool_t* p = &_sspine.atlas_pool; + int slot_index = _sspine_pool_alloc_index(&p->pool); + if (_SSPINE_INVALID_SLOT_INDEX != slot_index) { + uint32_t id = _sspine_slot_init(&p->pool, &p->items[slot_index].slot, slot_index); + return _sspine_make_atlas_handle(id); + } + else { + // pool exhausted + return _sspine_make_atlas_handle(SSPINE_INVALID_ID); + } +} + +static sspine_resource_state _sspine_init_atlas(_sspine_atlas_t* atlas, const sspine_atlas_desc* desc) { + SOKOL_ASSERT(atlas && (atlas->slot.state == SSPINE_RESOURCESTATE_ALLOC)); + SOKOL_ASSERT(desc); + SOKOL_ASSERT(atlas->sp_atlas == 0); + + if ((0 == desc->data.ptr) || (0 == desc->data.size)) { + _SSPINE_ERROR(ATLAS_DESC_NO_DATA); + return SSPINE_RESOURCESTATE_FAILED; + } + atlas->overrides = desc->override; + + // NOTE: Spine doesn't detect when invalid or corrupt data is passed here, + // not much we can do about this... + atlas->sp_atlas = spAtlas_create((const char*)desc->data.ptr, (int)desc->data.size, "", 0); + if (0 == atlas->sp_atlas) { + _SSPINE_ERROR(SPINE_ATLAS_CREATION_FAILED); + return SSPINE_RESOURCESTATE_FAILED; + } + + // allocate a sokol-gfx image handle for each page, but the actual image initialization + // needs to be delegated to the application + for (spAtlasPage* page = atlas->sp_atlas->pages; page != 0; page = page->next) { + atlas->num_pages++; + const sg_image img = sg_alloc_image(); + if (sg_query_image_state(img) != SG_RESOURCESTATE_ALLOC) { + _SSPINE_ERROR(SG_ALLOC_IMAGE_FAILED); + return SSPINE_RESOURCESTATE_FAILED; + } + page->rendererObject = (void*)(uintptr_t)img.id; + if (desc->override.premul_alpha_enabled) { + // NOTE: -1 is spine-c convention for 'true' + page->pma = -1; + } + else if (desc->override.premul_alpha_disabled) { + page->pma = 0; + } + } + return SSPINE_RESOURCESTATE_VALID; +} + +static void _sspine_deinit_atlas(_sspine_atlas_t* atlas) { + if (atlas->sp_atlas) { + spAtlas_dispose(atlas->sp_atlas); + atlas->sp_atlas = 0; + } +} + +static void _sspine_destroy_atlas(sspine_atlas atlas_id) { + _sspine_atlas_t* atlas = _sspine_lookup_atlas(atlas_id.id); + if (atlas) { + _sspine_deinit_atlas(atlas); + _sspine_atlas_pool_t* p = &_sspine.atlas_pool; + _sspine_clear(atlas, sizeof(_sspine_atlas_t)); + _sspine_pool_free_index(&p->pool, _sspine_slot_index(atlas_id.id)); + } +} + +static void _sspine_destroy_all_atlases(void) { + _sspine_atlas_pool_t* p = &_sspine.atlas_pool; + for (int i = 0; i < p->pool.size; i++) { + _sspine_atlas_t* atlas = &p->items[i]; + _sspine_destroy_atlas(_sspine_make_atlas_handle(atlas->slot.id)); + } +} + +static sspine_atlas_desc _sspine_atlas_desc_defaults(const sspine_atlas_desc* desc) { + sspine_atlas_desc res = *desc; + return res; +} + +static spAtlasPage* _sspine_lookup_atlas_page(uint32_t atlas_id, int page_index) { + _sspine_atlas_t* atlas = _sspine_lookup_atlas(atlas_id); + if (atlas) { + if ((page_index >= 0) && (page_index < atlas->num_pages)) { + int i = 0; + for (spAtlasPage* page = atlas->sp_atlas->pages; page != 0; page = page->next, i++) { + if (i == page_index) { + return page; + } + } + } + } + return 0; +} + +// ███████ ██ ██ ███████ ██ ███████ ████████ ██████ ███ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ +// ███████ █████ █████ ██ █████ ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██ ███████ ███████ ███████ ██ ██████ ██ ████ +// +// >>skeleton +static void _sspine_setup_skeleton_pool(int pool_size) { + _sspine_skeleton_pool_t* p = &_sspine.skeleton_pool; + _sspine_init_item_pool(&p->pool, pool_size, (void**)&p->items, sizeof(_sspine_skeleton_t)); +} + +static void _sspine_discard_skeleton_pool(void) { + _sspine_skeleton_pool_t* p = &_sspine.skeleton_pool; + _sspine_discard_item_pool(&p->pool, (void**)&p->items); +} + +static sspine_skeleton _sspine_make_skeleton_handle(uint32_t id) { + sspine_skeleton handle = { id }; + return handle; +} + +static _sspine_skeleton_t* _sspine_skeleton_at(uint32_t id) { + SOKOL_ASSERT(SSPINE_INVALID_ID != id); + const _sspine_skeleton_pool_t* p = &_sspine.skeleton_pool; + int slot_index = _sspine_slot_index(id); + SOKOL_ASSERT((slot_index > _SSPINE_INVALID_SLOT_INDEX) && (slot_index < p->pool.size)); + return &p->items[slot_index]; +} + +static _sspine_skeleton_t* _sspine_lookup_skeleton(uint32_t id) { + if (SSPINE_INVALID_ID != id) { + _sspine_skeleton_t* skeleton = _sspine_skeleton_at(id); + if (skeleton->slot.id == id) { + return skeleton; + } + } + return 0; +} + +static sspine_skeleton _sspine_alloc_skeleton(void) { + _sspine_skeleton_pool_t* p = &_sspine.skeleton_pool; + int slot_index = _sspine_pool_alloc_index(&p->pool); + if (_SSPINE_INVALID_SLOT_INDEX != slot_index) { + uint32_t id = _sspine_slot_init(&p->pool, &p->items[slot_index].slot, slot_index); + return _sspine_make_skeleton_handle(id); + } + else { + // pool exhausted + return _sspine_make_skeleton_handle(SSPINE_INVALID_ID); + } +} + +static sspine_resource_state _sspine_init_skeleton(_sspine_skeleton_t* skeleton, const sspine_skeleton_desc* desc) { + SOKOL_ASSERT(skeleton && (skeleton->slot.state == SSPINE_RESOURCESTATE_ALLOC)); + SOKOL_ASSERT(desc); + + if ((0 == desc->json_data) && ((0 == desc->binary_data.ptr) || (0 == desc->binary_data.size))) { + _SSPINE_ERROR(SKELETON_DESC_NO_DATA); + return SSPINE_RESOURCESTATE_FAILED; + } + if (desc->atlas.id == SSPINE_INVALID_ID) { + _SSPINE_ERROR(SKELETON_DESC_NO_ATLAS); + return SSPINE_RESOURCESTATE_FAILED; + } + + skeleton->atlas.id = desc->atlas.id; + skeleton->atlas.ptr = _sspine_lookup_atlas(skeleton->atlas.id); + if (!_sspine_atlas_ref_valid(&skeleton->atlas)) { + _SSPINE_ERROR(SKELETON_ATLAS_NOT_VALID); + return SSPINE_RESOURCESTATE_FAILED; + } + _sspine_atlas_t* atlas = skeleton->atlas.ptr; + if (SSPINE_RESOURCESTATE_VALID != atlas->slot.state) { + _SSPINE_ERROR(SKELETON_ATLAS_NOT_VALID); + return SSPINE_RESOURCESTATE_FAILED; + } + SOKOL_ASSERT(atlas->sp_atlas); + + if (desc->json_data) { + spSkeletonJson* skel_json = spSkeletonJson_create(atlas->sp_atlas); + SOKOL_ASSERT(skel_json); + skel_json->scale = desc->prescale; + skeleton->sp_skel_data = spSkeletonJson_readSkeletonData(skel_json, desc->json_data); + spSkeletonJson_dispose(skel_json); skel_json = 0; + if (0 == skeleton->sp_skel_data) { + _SSPINE_ERROR(CREATE_SKELETON_DATA_FROM_JSON_FAILED); + return SSPINE_RESOURCESTATE_FAILED; + } + } + else { + spSkeletonBinary* skel_bin = spSkeletonBinary_create(atlas->sp_atlas); + SOKOL_ASSERT(skel_bin); + skel_bin->scale = desc->prescale; + skeleton->sp_skel_data = spSkeletonBinary_readSkeletonData(skel_bin, (const unsigned char*)desc->binary_data.ptr, (int)desc->binary_data.size); + spSkeletonBinary_dispose(skel_bin); skel_bin = 0; + if (0 == skeleton->sp_skel_data) { + _SSPINE_ERROR(CREATE_SKELETON_DATA_FROM_BINARY_FAILED); + return SSPINE_RESOURCESTATE_FAILED; + } + } + SOKOL_ASSERT(skeleton->sp_skel_data); + + skeleton->sp_anim_data = spAnimationStateData_create(skeleton->sp_skel_data); + SOKOL_ASSERT(skeleton->sp_anim_data); + skeleton->sp_anim_data->defaultMix = desc->anim_default_mix; + + // get the max number of vertices in any mesh attachment + int max_vertex_count = 4; // number of vertices in a 'region attachment' (a 2-triangle quad) + const spSkeletonData* sp_skel_data = skeleton->sp_skel_data; + for (int skinIndex = 0; skinIndex < sp_skel_data->skinsCount; skinIndex++) { + const spSkin* sp_skin = sp_skel_data->skins[skinIndex]; + const spSkinEntry* skin_entry = spSkin_getAttachments(sp_skin); + if (skin_entry) do { + if (skin_entry->attachment) { + if (skin_entry->attachment->type == SP_ATTACHMENT_MESH) { + const spMeshAttachment* mesh_attachment = (spMeshAttachment*)skin_entry->attachment; + // worldVerticesLength is number of floats + SOKOL_ASSERT((mesh_attachment->super.worldVerticesLength & 1) == 0); + const int num_vertices = mesh_attachment->super.worldVerticesLength / 2; + if (num_vertices > max_vertex_count) { + max_vertex_count = num_vertices; + } + } + } + } while ((skin_entry = skin_entry->next) != 0); + } + + // allocate a shared vertex transform buffer (big enough to hold vertices for biggest mesh attachment) + skeleton->tform_buf.cap = max_vertex_count; + skeleton->tform_buf.ptr = (sspine_vec2*) _sspine_malloc((size_t)skeleton->tform_buf.cap * sizeof(sspine_vec2)); + + return SSPINE_RESOURCESTATE_VALID; +} + +static void _sspine_deinit_skeleton(_sspine_skeleton_t* skeleton) { + if (skeleton->tform_buf.ptr) { + _sspine_free(skeleton->tform_buf.ptr); + skeleton->tform_buf.ptr = 0; + } + if (skeleton->sp_anim_data) { + spAnimationStateData_dispose(skeleton->sp_anim_data); + skeleton->sp_anim_data = 0; + } + if (skeleton->sp_skel_data) { + spSkeletonData_dispose(skeleton->sp_skel_data); + skeleton->sp_skel_data = 0; + } +} + +static void _sspine_destroy_skeleton(sspine_skeleton skeleton_id) { + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (skeleton) { + _sspine_deinit_skeleton(skeleton); + _sspine_skeleton_pool_t* p = &_sspine.skeleton_pool; + _sspine_clear(skeleton, sizeof(_sspine_skeleton_t)); + _sspine_pool_free_index(&p->pool, _sspine_slot_index(skeleton_id.id)); + } +} + +static void _sspine_destroy_all_skeletons(void) { + _sspine_skeleton_pool_t* p = &_sspine.skeleton_pool; + for (int i = 0; i < p->pool.size; i++) { + _sspine_skeleton_t* skeleton = &p->items[i]; + _sspine_destroy_skeleton(_sspine_make_skeleton_handle(skeleton->slot.id)); + } +} + +static sspine_skeleton_desc _sspine_skeleton_desc_defaults(const sspine_skeleton_desc* desc) { + sspine_skeleton_desc res = *desc; + res.prescale = _sspine_def(desc->prescale, 1.0f); + res.anim_default_mix = _sspine_def(desc->anim_default_mix, 0.2f); + return res; +} + +static spBoneData* _sspine_lookup_bone_data(uint32_t skeleton_id, int bone_index) { + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data && skeleton->sp_skel_data->bones); + if ((bone_index >= 0) && (bone_index <= skeleton->sp_skel_data->bonesCount)) { + return skeleton->sp_skel_data->bones[bone_index]; + } + } + return 0; +} + +static spSlotData* _sspine_lookup_slot_data(uint32_t skeleton_id, int slot_index) { + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data && skeleton->sp_skel_data->slots); + if ((slot_index >= 0) && (slot_index <= skeleton->sp_skel_data->slotsCount)) { + return skeleton->sp_skel_data->slots[slot_index]; + } + } + return 0; +} + +static spEventData* _sspine_lookup_event_data(uint32_t skeleton_id, int event_index) { + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data && skeleton->sp_skel_data->events); + if ((event_index >= 0) && (event_index < skeleton->sp_skel_data->eventsCount)) { + return skeleton->sp_skel_data->events[event_index]; + } + } + return 0; +} + +static spIkConstraintData* _sspine_lookup_ikconstraint_data(uint32_t skeleton_id, int iktarget_index) { + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data && skeleton->sp_skel_data->ikConstraints); + if ((iktarget_index >= 0) && (iktarget_index < skeleton->sp_skel_data->ikConstraintsCount)) { + return skeleton->sp_skel_data->ikConstraints[iktarget_index]; + } + } + return 0; +} + +static spSkin* _sspine_lookup_skin(uint32_t skeleton_id, int skin_index) { + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data && skeleton->sp_skel_data->skins); + if ((skin_index >= 0) && (skin_index < skeleton->sp_skel_data->skinsCount)) { + return skeleton->sp_skel_data->skins[skin_index]; + } + } + return 0; +} + +// ███████ ██ ██ ██ ███ ██ ███████ ███████ ████████ +// ██ ██ ██ ██ ████ ██ ██ ██ ██ +// ███████ █████ ██ ██ ██ ██ ███████ █████ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ███████ ██ ██ ██ ██ ████ ███████ ███████ ██ +// +// >>skinset +static void _sspine_setup_skinset_pool(int pool_size) { + _sspine_skinset_pool_t* p = &_sspine.skinset_pool; + _sspine_init_item_pool(&p->pool, pool_size, (void**)&p->items, sizeof(_sspine_skinset_t)); +} + +static void _sspine_discard_skinset_pool(void) { + _sspine_skinset_pool_t* p = &_sspine.skinset_pool; + _sspine_discard_item_pool(&p->pool, (void**)&p->items); +} + +static sspine_skinset _sspine_make_skinset_handle(uint32_t id) { + sspine_skinset handle = { id }; + return handle; +} + +static _sspine_skinset_t* _sspine_skinset_at(uint32_t id) { + SOKOL_ASSERT(SSPINE_INVALID_ID != id); + const _sspine_skinset_pool_t* p = &_sspine.skinset_pool; + int slot_index = _sspine_slot_index(id); + SOKOL_ASSERT((slot_index > _SSPINE_INVALID_SLOT_INDEX) && (slot_index < p->pool.size)); + return &p->items[slot_index]; +} + +static _sspine_skinset_t* _sspine_lookup_skinset(uint32_t id) { + if (SSPINE_INVALID_ID != id) { + _sspine_skinset_t* skinset = _sspine_skinset_at(id); + if (skinset->slot.id == id) { + return skinset; + } + } + return 0; +} + +static sspine_skinset _sspine_alloc_skinset(void) { + _sspine_skinset_pool_t* p = &_sspine.skinset_pool; + int slot_index = _sspine_pool_alloc_index(&p->pool); + if (_SSPINE_INVALID_SLOT_INDEX != slot_index) { + uint32_t id = _sspine_slot_init(&p->pool, &p->items[slot_index].slot, slot_index); + return _sspine_make_skinset_handle(id); + } + else { + // pool exhausted + return _sspine_make_skinset_handle(SSPINE_INVALID_ID); + } +} + +static sspine_resource_state _sspine_init_skinset(_sspine_skinset_t* skinset, const sspine_skinset_desc* desc) { + SOKOL_ASSERT(skinset && (skinset->slot.state == SSPINE_RESOURCESTATE_ALLOC)); + SOKOL_ASSERT(desc); + + if (desc->skeleton.id == SSPINE_INVALID_ID) { + _SSPINE_ERROR(SKINSET_DESC_NO_SKELETON); + return SSPINE_RESOURCESTATE_FAILED; + } + skinset->skel.id = desc->skeleton.id; + skinset->skel.ptr = _sspine_lookup_skeleton(desc->skeleton.id); + if (!_sspine_skeleton_ref_valid(&skinset->skel)) { + _SSPINE_ERROR(SKINSET_SKELETON_NOT_VALID); + return SSPINE_RESOURCESTATE_FAILED; + } + _sspine_skeleton_t* skel = skinset->skel.ptr; + if (SSPINE_RESOURCESTATE_VALID != skel->slot.state) { + _SSPINE_ERROR(SKINSET_SKELETON_NOT_VALID); + return SSPINE_RESOURCESTATE_FAILED; + } + SOKOL_ASSERT(skel->sp_skel_data); + skinset->sp_skin = spSkin_create("skinset"); + for (int i = 0; i < SSPINE_MAX_SKINSET_SKINS; i++) { + if (desc->skins[i].skeleton_id != SSPINE_INVALID_ID) { + spSkin* skin = _sspine_lookup_skin(desc->skins[i].skeleton_id, desc->skins[i].index); + if (0 == skin) { + _SSPINE_ERROR(SKINSET_INVALID_SKIN_HANDLE); + return SSPINE_RESOURCESTATE_FAILED; + } + spSkin_addSkin(skinset->sp_skin, skin); + } + } + return SSPINE_RESOURCESTATE_VALID; +} + +static void _sspine_deinit_skinset(_sspine_skinset_t* skinset) { + if (skinset->sp_skin) { + spSkin_clear(skinset->sp_skin); + spSkin_dispose(skinset->sp_skin); + skinset->sp_skin = 0; + } +} + +static void _sspine_destroy_skinset(sspine_skinset skinset_id) { + _sspine_skinset_t* skinset = _sspine_lookup_skinset(skinset_id.id); + if (skinset) { + _sspine_deinit_skinset(skinset); + _sspine_skinset_pool_t* p = &_sspine.skinset_pool; + _sspine_clear(skinset, sizeof(_sspine_skinset_t)); + _sspine_pool_free_index(&p->pool, _sspine_slot_index(skinset_id.id)); + } +} + +static void _sspine_destroy_all_skinsets(void) { + _sspine_skinset_pool_t* p = &_sspine.skinset_pool; + for (int i = 0; i < p->pool.size; i++) { + _sspine_skinset_t* skinset = &p->items[i]; + _sspine_destroy_skinset(_sspine_make_skinset_handle(skinset->slot.id)); + } +} + +static sspine_skinset_desc _sspine_skinset_desc_defaults(const sspine_skinset_desc* desc) { + sspine_skinset_desc res = *desc; + return res; +} + +// ██ ███ ██ ███████ ████████ █████ ███ ██ ██████ ███████ +// ██ ████ ██ ██ ██ ██ ██ ████ ██ ██ ██ +// ██ ██ ██ ██ ███████ ██ ███████ ██ ██ ██ ██ █████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ████ ███████ ██ ██ ██ ██ ████ ██████ ███████ +// +// >>instance +static void _sspine_setup_instance_pool(int pool_size) { + _sspine_instance_pool_t* p = &_sspine.instance_pool; + _sspine_init_item_pool(&p->pool, pool_size, (void**)&p->items, sizeof(_sspine_instance_t)); +} + +static void _sspine_discard_instance_pool(void) { + _sspine_instance_pool_t* p = &_sspine.instance_pool; + _sspine_discard_item_pool(&p->pool, (void**)&p->items); +} + +static sspine_instance _sspine_make_instance_handle(uint32_t id) { + sspine_instance handle = { id }; + return handle; +} + +static _sspine_instance_t* _sspine_instance_at(uint32_t id) { + SOKOL_ASSERT(SSPINE_INVALID_ID != id); + const _sspine_instance_pool_t* p = &_sspine.instance_pool; + int slot_index = _sspine_slot_index(id); + SOKOL_ASSERT((slot_index > _SSPINE_INVALID_SLOT_INDEX) && (slot_index < p->pool.size)); + return &p->items[slot_index]; +} + +static _sspine_instance_t* _sspine_lookup_instance(uint32_t id) { + if (SSPINE_INVALID_ID != id) { + _sspine_instance_t* instance = _sspine_instance_at(id); + if (instance->slot.id == id) { + return instance; + } + } + return 0; +} + +static sspine_instance _sspine_alloc_instance(void) { + _sspine_instance_pool_t* p = &_sspine.instance_pool; + sspine_instance res; + int slot_index = _sspine_pool_alloc_index(&p->pool); + if (_SSPINE_INVALID_SLOT_INDEX != slot_index) { + uint32_t id = _sspine_slot_init(&p->pool, &p->items[slot_index].slot, slot_index); + res = _sspine_make_instance_handle(id); + } + else { + // pool exhausted + res = _sspine_make_instance_handle(SSPINE_INVALID_ID); + } + return res; +} + +static void _sspine_rewind_triggered_events(_sspine_instance_t* instance) { + instance->cur_triggered_event_index = 0; + _sspine_clear(instance->triggered_events, sizeof(instance->triggered_events)); +} + +static sspine_triggered_event_info* _sspine_next_triggered_event_info(_sspine_instance_t* instance) { + if (instance->cur_triggered_event_index < _SSPINE_MAX_TRIGGERED_EVENTS) { + return &instance->triggered_events[instance->cur_triggered_event_index++]; + } + else { + return 0; + } +} + +static void _sspine_event_listener(spAnimationState* sp_anim_state, spEventType sp_event_type, spTrackEntry* sp_track_entry, spEvent* sp_event) { + if (sp_event_type == SP_ANIMATION_EVENT) { + SOKOL_ASSERT(sp_anim_state && sp_track_entry && sp_event); (void)sp_track_entry; + SOKOL_ASSERT(sp_event->data && sp_event->data->name); + _sspine_instance_t* instance = _sspine_lookup_instance((uint32_t)(uintptr_t)sp_anim_state->userData); + if (_sspine_instance_and_deps_valid(instance)) { + sspine_triggered_event_info* info = _sspine_next_triggered_event_info(instance); + if (info) { + // FIXME: this sucks, but we really need the event index + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(instance->skel.id); + SOKOL_ASSERT(skeleton && skeleton->sp_skel_data->events); + const spEventData* sp_event_data = sp_event->data; + for (int i = 0; i < skeleton->sp_skel_data->eventsCount; i++) { + if (sp_event_data == skeleton->sp_skel_data->events[i]) { + info->event = _sspine_event(skeleton->slot.id, i); + break; + } + } + SOKOL_ASSERT(info->event.skeleton_id != SSPINE_INVALID_ID); + info->valid = true; + info->time = sp_event->time; + info->int_value = sp_event->intValue; + info->float_value = sp_event->floatValue; + info->volume = sp_event->volume; + info->balance = sp_event->balance; + info->string_value = _sspine_string(sp_event->stringValue); + if (info->string_value.truncated) { + _SSPINE_WARN(STRING_TRUNCATED); + } + } + } + } +} + +static sspine_resource_state _sspine_init_instance(_sspine_instance_t* instance, const sspine_instance_desc* desc) { + SOKOL_ASSERT(instance && (instance->slot.state == SSPINE_RESOURCESTATE_ALLOC)); + SOKOL_ASSERT(desc); + + if (desc->skeleton.id == SSPINE_INVALID_ID) { + _SSPINE_ERROR(INSTANCE_DESC_NO_SKELETON); + return SSPINE_RESOURCESTATE_FAILED; + } + instance->skel.id = desc->skeleton.id; + instance->skel.ptr = _sspine_lookup_skeleton(instance->skel.id); + if (!_sspine_skeleton_ref_valid(&instance->skel)) { + _SSPINE_ERROR(INSTANCE_SKELETON_NOT_VALID); + return SSPINE_RESOURCESTATE_FAILED; + } + _sspine_skeleton_t* skel = instance->skel.ptr; + if (SSPINE_RESOURCESTATE_VALID != skel->slot.state) { + _SSPINE_ERROR(INSTANCE_SKELETON_NOT_VALID); + return SSPINE_RESOURCESTATE_FAILED; + } + instance->atlas = skel->atlas; + if (!_sspine_atlas_ref_valid(&instance->atlas)) { + _SSPINE_ERROR(INSTANCE_ATLAS_NOT_VALID); + return SSPINE_RESOURCESTATE_FAILED; + } + if (SSPINE_RESOURCESTATE_VALID != instance->atlas.ptr->slot.state) { + _SSPINE_ERROR(INSTANCE_ATLAS_NOT_VALID); + return SSPINE_RESOURCESTATE_FAILED; + } + SOKOL_ASSERT(skel->sp_skel_data); + SOKOL_ASSERT(skel->sp_anim_data); + + instance->sp_skel = spSkeleton_create(skel->sp_skel_data); + if (0 == instance->sp_skel) { + _SSPINE_ERROR(SPINE_SKELETON_CREATION_FAILED); + return SSPINE_RESOURCESTATE_FAILED; + } + instance->sp_anim_state = spAnimationState_create(skel->sp_anim_data); + if (0 == instance->sp_anim_state) { + _SSPINE_ERROR(SPINE_ANIMATIONSTATE_CREATION_FAILED); + return SSPINE_RESOURCESTATE_FAILED; + } + instance->sp_clip = spSkeletonClipping_create(); + if (0 == instance->sp_clip) { + _SSPINE_ERROR(SPINE_SKELETONCLIPPING_CREATION_FAILED); + return SSPINE_RESOURCESTATE_FAILED; + } + + instance->sp_anim_state->userData = (void*)(uintptr_t)instance->slot.id; + instance->sp_anim_state->listener = _sspine_event_listener; + + spSkeleton_setToSetupPose(instance->sp_skel); + spAnimationState_update(instance->sp_anim_state, 0.0f); + spAnimationState_apply(instance->sp_anim_state, instance->sp_skel); + spSkeleton_updateWorldTransform(instance->sp_skel); + + return SSPINE_RESOURCESTATE_VALID; +} + +static void _sspine_deinit_instance(_sspine_instance_t* instance) { + if (instance->sp_clip) { + spSkeletonClipping_dispose(instance->sp_clip); + instance->sp_clip = 0; + } + if (instance->sp_anim_state) { + spAnimationState_dispose(instance->sp_anim_state); + instance->sp_anim_state = 0; + } + if (instance->sp_skel) { + spSkeleton_dispose(instance->sp_skel); + instance->sp_skel = 0; + } +} + +static void _sspine_destroy_instance(sspine_instance instance_id) { + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (instance) { + _sspine_deinit_instance(instance); + _sspine_instance_pool_t* p = &_sspine.instance_pool; + _sspine_clear(instance, sizeof(_sspine_instance_t)); + _sspine_pool_free_index(&p->pool, _sspine_slot_index(instance_id.id)); + } +} + +static void _sspine_destroy_all_instances(void) { + _sspine_instance_pool_t* p = &_sspine.instance_pool; + for (int i = 0; i < p->pool.size; i++) { + _sspine_instance_t* instance = &p->items[i]; + _sspine_destroy_instance(_sspine_make_instance_handle(instance->slot.id)); + } +} + +static spAnimation* _sspine_lookup_skeleton_anim(uint32_t skeleton_id, int anim_index) { + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + if ((anim_index >= 0) && (anim_index < skeleton->sp_skel_data->animationsCount)) { + return skeleton->sp_skel_data->animations[anim_index]; + } + } + return 0; +} + +static spAnimation* _sspine_lookup_instance_anim(uint32_t instance_id, uint32_t skeleton_id, int anim_index) { + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id); + if (_sspine_instance_and_deps_valid(instance) && (instance->skel.id == skeleton_id)) { + SOKOL_ASSERT(instance->sp_skel && instance->sp_skel->data); + if ((anim_index >= 0) && (anim_index < instance->sp_skel->data->animationsCount)) { + return instance->sp_skel->data->animations[anim_index]; + } + } + return 0; +} + +static spBone* _sspine_lookup_bone(uint32_t instance_id, uint32_t skeleton_id, int bone_index) { + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id); + if (_sspine_instance_and_deps_valid(instance) && (instance->skel.id == skeleton_id)) { + SOKOL_ASSERT(instance->sp_skel && instance->sp_skel->bones); + if ((bone_index >= 0) && (bone_index <= instance->sp_skel->bonesCount)) { + return instance->sp_skel->bones[bone_index]; + } + } + return 0; +} + +static spSlot* _sspine_lookup_slot(uint32_t instance_id, uint32_t skeleton_id, int slot_index) { + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id); + if (_sspine_instance_and_deps_valid(instance) && (instance->skel.id == skeleton_id)) { + SOKOL_ASSERT(instance->sp_skel && instance->sp_skel->slots); + if ((slot_index >= 0) && (slot_index <= instance->sp_skel->slotsCount)) { + return instance->sp_skel->slots[slot_index]; + } + } + return 0; +} + +static spIkConstraint* _sspine_lookup_ikconstraint(uint32_t instance_id, uint32_t skeleton_id, int iktarget_index) { + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id); + if (_sspine_instance_and_deps_valid(instance) && (instance->skel.id == skeleton_id)) { + SOKOL_ASSERT(instance->sp_skel && instance->sp_skel->ikConstraints); + if ((iktarget_index >= 0) && (iktarget_index < instance->sp_skel->ikConstraintsCount)) { + return instance->sp_skel->ikConstraints[iktarget_index]; + } + } + return 0; +} + +static sspine_instance_desc _sspine_instance_desc_defaults(const sspine_instance_desc* desc) { + sspine_instance_desc res = *desc; + return res; +} + +// ██████ ██████ █████ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██ ██████ ███████ ██ █ ██ +// ██ ██ ██ ██ ██ ██ ██ ███ ██ +// ██████ ██ ██ ██ ██ ███ ███ +// +// >>draw +static void _sspine_check_rewind_commands(_sspine_context_t* ctx) { + if (_sspine.frame_id != ctx->commands.rewind_frame_id) { + ctx->commands.next = 0; + ctx->commands.rewind_frame_id = _sspine.frame_id; + } +} + +static _sspine_command_t* _sspine_next_command(_sspine_context_t* ctx) { + _sspine_check_rewind_commands(ctx); + if (ctx->commands.next < ctx->commands.cap) { + return &(ctx->commands.ptr[ctx->commands.next++]); + } + else { + _SSPINE_ERROR(COMMAND_BUFFER_FULL); + return 0; + } +} + +static _sspine_command_t* _sspine_cur_command(_sspine_context_t* ctx) { + _sspine_check_rewind_commands(ctx); + if (ctx->commands.next > 0) { + return &ctx->commands.ptr[ctx->commands.next - 1]; + } + else { + return 0; + } +} + +static void _sspine_check_rewind_vertices(_sspine_context_t* ctx) { + if (_sspine.frame_id != ctx->vertices.rewind_frame_id) { + ctx->vertices.next = 0; + ctx->vertices.rewind_frame_id = _sspine.frame_id; + } +} + +static _sspine_alloc_vertices_result_t _sspine_alloc_vertices(_sspine_context_t* ctx, int num) { + _sspine_check_rewind_vertices(ctx); + _sspine_alloc_vertices_result_t res; + _sspine_clear(&res, sizeof(res)); + if ((ctx->vertices.next + num) <= ctx->vertices.cap) { + res.ptr = &(ctx->vertices.ptr[ctx->vertices.next]); + res.index = ctx->vertices.next; + ctx->vertices.next += num; + } + else { + _SSPINE_ERROR(VERTEX_BUFFER_FULL); + } + return res; +} + +static void _sspine_check_rewind_indices(_sspine_context_t* ctx) { + if (_sspine.frame_id != ctx->indices.rewind_frame_id) { + ctx->indices.next = 0; + ctx->indices.rewind_frame_id = _sspine.frame_id; + } +} + +static _sspine_alloc_indices_result_t _sspine_alloc_indices(_sspine_context_t* ctx, int num) { + _sspine_check_rewind_indices(ctx); + _sspine_alloc_indices_result_t res; + _sspine_clear(&res, sizeof(res)); + if ((ctx->indices.next + num) <= ctx->indices.cap) { + res.ptr = &(ctx->indices.ptr[ctx->indices.next]); + res.index = ctx->indices.next; + ctx->indices.next += num; + } + else { + _SSPINE_ERROR(INDEX_BUFFER_FULL); + } + return res; +} + +static void _sspine_draw_instance(_sspine_context_t* ctx, _sspine_instance_t* instance, int layer) { + SOKOL_ASSERT(_sspine_instance_and_deps_valid(instance)); + SOKOL_ASSERT(instance->sp_skel); + SOKOL_ASSERT(instance->sp_anim_state); + SOKOL_ASSERT(instance->sp_clip); + + // see: https://github.com/EsotericSoftware/spine-runtimes/blob/4.1/spine-sdl/src/spine-sdl-c.c + const spSkeleton* sp_skel = instance->sp_skel; + float* tform_buf = (float*)instance->skel.ptr->tform_buf.ptr; + const int max_tform_buf_verts = instance->skel.ptr->tform_buf.cap; + SOKOL_UNUSED(max_tform_buf_verts); // only used in asserts + const int tform_buf_stride = 2; // each element is 2 floats + spSkeletonClipping* sp_clip = instance->sp_clip; + for (int slot_index = 0; slot_index < sp_skel->slotsCount; slot_index++) { + spSlot* sp_slot = sp_skel->drawOrder[slot_index]; + if (!sp_slot->attachment) { + spSkeletonClipping_clipEnd(sp_clip, sp_slot); + continue; + } + + // early out if the slot alpha is 0 or the bone is not active + // FIXME: does alpha 0 actually mean 'invisible' for all blend modes? + if ((sp_slot->color.a == 0) || (!sp_slot->bone->active)) { + spSkeletonClipping_clipEnd(sp_clip, sp_slot); + continue; + } + + int num_vertices = 0; + float* uvs = 0; + float* vertices = 0; + int num_indices = 0; + const uint16_t* indices = 0; + const spColor* att_color = 0; + sg_image img = { SG_INVALID_ID }; + bool premul_alpha = false; + if (sp_slot->attachment->type == SP_ATTACHMENT_REGION) { + static const uint16_t quad_indices[] = { 0, 1, 2, 2, 3, 0 }; + spRegionAttachment* region = (spRegionAttachment*)sp_slot->attachment; + att_color = ®ion->color; + // FIXME(?) early out if the slot alpha is 0 + if (att_color->a == 0) { + spSkeletonClipping_clipEnd(sp_clip, sp_slot); + continue; + } + spRegionAttachment_computeWorldVertices(region, sp_slot, tform_buf, 0, tform_buf_stride); + vertices = tform_buf; + num_vertices = 4; + indices = &quad_indices[0]; + num_indices = 6; + uvs = region->uvs; + const spAtlasPage* sp_page = ((spAtlasRegion*)region->rendererObject)->page; + img.id = (uint32_t)(uintptr_t)sp_page->rendererObject; + premul_alpha = sp_page->pma != 0; + } + else if (sp_slot->attachment->type == SP_ATTACHMENT_MESH) { + spMeshAttachment* mesh = (spMeshAttachment*)sp_slot->attachment; + att_color = &mesh->color; + // FIXME(?) early out if the slot alpha is 0 + if (att_color->a == 0) { + spSkeletonClipping_clipEnd(sp_clip, sp_slot); + continue; + } + + const int num_floats = mesh->super.worldVerticesLength; + num_vertices = num_floats / 2; + SOKOL_ASSERT(num_vertices <= max_tform_buf_verts); + spVertexAttachment_computeWorldVertices(&mesh->super, sp_slot, 0, num_floats, tform_buf, 0, tform_buf_stride); + vertices = tform_buf; + indices = mesh->triangles; + num_indices = mesh->trianglesCount; // actually indicesCount??? + uvs = mesh->uvs; + const spAtlasPage* sp_page = ((spAtlasRegion*)mesh->rendererObject)->page; + img.id = (uint32_t)(uintptr_t)sp_page->rendererObject; + premul_alpha = sp_page->pma != 0; + } + else if (sp_slot->attachment->type == SP_ATTACHMENT_CLIPPING) { + spClippingAttachment* clip_attachment = (spClippingAttachment*) sp_slot->attachment; + spSkeletonClipping_clipStart(sp_clip, sp_slot, clip_attachment); + continue; + } + else { + spSkeletonClipping_clipEnd(sp_clip, sp_slot); + continue; + } + SOKOL_ASSERT(vertices && (num_vertices > 0)); + SOKOL_ASSERT(indices && (num_indices > 0)); + SOKOL_ASSERT(uvs); + SOKOL_ASSERT(img.id != SG_INVALID_ID); + + if (spSkeletonClipping_isClipping(sp_clip)) { + spSkeletonClipping_clipTriangles(sp_clip, tform_buf, num_vertices * 2, (uint16_t*)indices, num_indices, uvs, tform_buf_stride); + vertices = sp_clip->clippedVertices->items; + num_vertices = sp_clip->clippedVertices->size / 2; + uvs = sp_clip->clippedUVs->items; + indices = sp_clip->clippedTriangles->items; + num_indices = sp_clip->clippedTriangles->size; + } + SOKOL_ASSERT(vertices); + SOKOL_ASSERT(indices); + SOKOL_ASSERT(uvs); + SOKOL_ASSERT(img.id != SG_INVALID_ID); + + // there might be no geometry to render after clipping + if ((0 == num_vertices) || (0 == num_indices)) { + spSkeletonClipping_clipEnd(sp_clip, sp_slot); + continue; + } + + const _sspine_alloc_vertices_result_t dst_vertices = _sspine_alloc_vertices(ctx, num_vertices); + const _sspine_alloc_indices_result_t dst_indices = _sspine_alloc_indices(ctx, num_indices); + if ((0 == dst_vertices.ptr) || (0 == dst_indices.ptr)) { + spSkeletonClipping_clipEnd(sp_clip, sp_slot); + continue; + } + + // write transformed and potentially clipped vertices and indices + const uint8_t r = (uint8_t)(sp_skel->color.r * sp_slot->color.r * att_color->r * 255.0f); + const uint8_t g = (uint8_t)(sp_skel->color.g * sp_slot->color.g * att_color->g * 255.0f); + const uint8_t b = (uint8_t)(sp_skel->color.b * sp_slot->color.b * att_color->b * 255.0f); + const uint8_t a = (uint8_t)(sp_skel->color.a * sp_slot->color.a * att_color->a * 255.0f); + const uint32_t color = (((uint32_t)a<<24) | ((uint32_t)b<<16) | ((uint32_t)g<<8) | (uint32_t)r); + for (int vi = 0; vi < num_vertices; vi++) { + dst_vertices.ptr[vi].pos.x = vertices[vi*2]; + dst_vertices.ptr[vi].pos.y = vertices[vi*2 + 1]; + dst_vertices.ptr[vi].color = color; + dst_vertices.ptr[vi].uv.x = uvs[vi*2]; + dst_vertices.ptr[vi].uv.y = uvs[vi*2 + 1]; + } + for (int ii = 0; ii < num_indices; ii++) { + dst_indices.ptr[ii] = (uint32_t)indices[ii] + (uint32_t)dst_vertices.index; + } + + sg_pipeline pip = { SG_INVALID_ID }; + // NOTE: pma == 0.0: use color from texture as is + // pma == 1.0: multiply texture rgb by texture alpha in fragment shader + float pma = 0.0f; + switch (sp_slot->data->blendMode) { + case SP_BLEND_MODE_NORMAL: + case SP_BLEND_MODE_ADDITIVE: + case SP_BLEND_MODE_SCREEN: + pip = ctx->pip.normal_additive; + pma = premul_alpha ? 0.0f : 1.0f; // NOT A BUG + break; + case SP_BLEND_MODE_MULTIPLY: + pip = ctx->pip.multiply; + pma = 0.0f; // always use texture color as is + break; + } + + // write new draw command, or merge with current draw command + _sspine_command_t* cur_cmd = _sspine_cur_command(ctx); + if (cur_cmd && (cur_cmd->layer == layer) && (cur_cmd->pip.id == pip.id) && (cur_cmd->img.id == img.id) && (cur_cmd->pma == pma)) { + // merge with current command + cur_cmd->num_elements += num_indices; + } + else { + // record a new command + _sspine_command_t* cmd_ptr = _sspine_next_command(ctx); + if (cmd_ptr) { + cmd_ptr->layer = layer; + cmd_ptr->pip = pip; + cmd_ptr->img = img; + cmd_ptr->pma = pma; + cmd_ptr->base_element = dst_indices.index; + cmd_ptr->num_elements = num_indices; + } + } + spSkeletonClipping_clipEnd(sp_clip, sp_slot); + } + spSkeletonClipping_clipEnd2(sp_clip); +} + +// compute orthographic projection matrix +static void _sspine_layer_transform_to_proj(const sspine_layer_transform* tform, float* res) { + const float left = -tform->origin.x; + const float right = tform->size.x - tform->origin.x; + const float top = -tform->origin.y; + const float bottom = tform->size.y - tform->origin.y; + const float znear = -1.0f; + const float zfar = 1.0f; + res[0] = 2.0f / (right - left); + res[1] = 0.0f; + res[2] = 0.0f; + res[3] = 0.0f; + res[4] = 0.0f; + res[5] = 2.0f / (top - bottom); + res[6] = 0.0f; + res[7] = 0.0f; + res[8] = 0.0f; + res[9] = 0.0f; + res[10] = -2.0f / (zfar - znear); + res[11] = 0.0f; + res[12] = -(right + left) / (right - left); + res[13] = -(top + bottom) / (top - bottom); + res[14] = -(zfar + znear) / (zfar - znear); + res[15] = 1.0f; +} + +static _sspine_vsparams_t _sspine_compute_vsparams(const sspine_layer_transform* tform) { + _sspine_vsparams_t p; + _sspine_clear(&p, sizeof(p)); + _sspine_layer_transform_to_proj(tform, p.mvp); + return p; +} + +static void _sspine_draw_layer(_sspine_context_t* ctx, int layer, const sspine_layer_transform* tform) { + if ((ctx->vertices.next > 0) && (ctx->commands.next > 0)) { + sg_push_debug_group("sokol-spine"); + + if (ctx->update_frame_id != _sspine.frame_id) { + ctx->update_frame_id = _sspine.frame_id; + const sg_range vtx_range = { ctx->vertices.ptr, (size_t)ctx->vertices.next * sizeof(_sspine_vertex_t) }; + sg_update_buffer(ctx->vbuf, &vtx_range); + const sg_range idx_range = { ctx->indices.ptr, (size_t)ctx->indices.next * sizeof(uint32_t) }; + sg_update_buffer(ctx->ibuf, &idx_range); + } + + _sspine_vsparams_t vsparams = _sspine_compute_vsparams(tform); + const sg_range vsparams_range = { &vsparams, sizeof(vsparams) }; + _sspine_fsparams_t fsparams; + _sspine_clear(&fsparams, sizeof(fsparams)); + const sg_range fsparams_range = { &fsparams, sizeof(fsparams) }; + + uint32_t cur_pip_id = SG_INVALID_ID; + uint32_t cur_img_id = SG_INVALID_ID; + float cur_pma = -1.0f; + for (int i = 0; i < ctx->commands.next; i++) { + const _sspine_command_t* cmd = &ctx->commands.ptr[i]; + if ((layer == cmd->layer) && (sg_query_image_state(cmd->img) == SG_RESOURCESTATE_VALID)) { + if (cur_pip_id != cmd->pip.id) { + sg_apply_pipeline(cmd->pip); + cur_pip_id = cmd->pip.id; + sg_apply_uniforms(SG_SHADERSTAGE_VS, 0, &vsparams_range); + cur_img_id = SG_INVALID_ID; + } + if (cur_img_id != cmd->img.id) { + ctx->bind.fs_images[0] = cmd->img; + sg_apply_bindings(&ctx->bind); + cur_img_id = cmd->img.id; + } + if (cur_pma != cmd->pma) { + fsparams.pma = cmd->pma; + sg_apply_uniforms(SG_SHADERSTAGE_FS, 0, &fsparams_range); + cur_pma = cmd->pma; + } + if (cmd->num_elements > 0) { + sg_draw(cmd->base_element, cmd->num_elements, 1); + } + } + } + sg_pop_debug_group(); + } +} + +// ███ ███ ██ ███████ ██████ +// ████ ████ ██ ██ ██ +// ██ ████ ██ ██ ███████ ██ +// ██ ██ ██ ██ ██ ██ +// ██ ██ ██ ███████ ██████ +// +// >>misc + +// return sspine_desc with patched defaults +static sspine_desc _sspine_desc_defaults(const sspine_desc* desc) { + SOKOL_ASSERT((desc->allocator.alloc && desc->allocator.free) || (!desc->allocator.alloc && !desc->allocator.free)); + sspine_desc res = *desc; + res.max_vertices = _sspine_def(desc->max_vertices, _SSPINE_DEFAULT_MAX_VERTICES); + res.max_commands = _sspine_def(desc->max_commands, _SSPINE_DEFAULT_MAX_COMMANDS); + res.context_pool_size = _sspine_def(desc->context_pool_size, _SSPINE_DEFAULT_CONTEXT_POOL_SIZE); + res.atlas_pool_size = _sspine_def(desc->atlas_pool_size, _SSPINE_DEFAULT_ATLAS_POOL_SIZE); + res.skeleton_pool_size = _sspine_def(desc->skeleton_pool_size, _SSPINE_DEFAULT_SKELETON_POOL_SIZE); + res.skinset_pool_size = _sspine_def(desc->skinset_pool_size, _SSPINE_DEFAULT_SKINSET_POOL_SIZE); + res.instance_pool_size = _sspine_def(desc->instance_pool_size, _SSPINE_DEFAULT_INSTANCE_POOL_SIZE); + return res; +} + +static sspine_context_desc _sspine_as_context_desc(const sspine_desc* desc) { + sspine_context_desc ctx_desc; + _sspine_clear(&ctx_desc, sizeof(ctx_desc)); + ctx_desc.max_vertices = desc->max_vertices; + ctx_desc.max_commands = desc->max_commands; + ctx_desc.color_format = desc->color_format; + ctx_desc.depth_format = desc->depth_format; + ctx_desc.sample_count = desc->sample_count; + ctx_desc.color_write_mask = desc->color_write_mask; + return ctx_desc; +} + +static sg_filter _sspine_as_image_filter(spAtlasFilter filter) { + switch (filter) { + case SP_ATLAS_UNKNOWN_FILTER: return _SG_FILTER_DEFAULT; + case SP_ATLAS_NEAREST: return SG_FILTER_NEAREST; + case SP_ATLAS_LINEAR: return SG_FILTER_LINEAR; + case SP_ATLAS_MIPMAP: return SG_FILTER_LINEAR_MIPMAP_NEAREST; + case SP_ATLAS_MIPMAP_NEAREST_NEAREST: return SG_FILTER_NEAREST_MIPMAP_NEAREST; + case SP_ATLAS_MIPMAP_LINEAR_NEAREST: return SG_FILTER_LINEAR_MIPMAP_NEAREST; + case SP_ATLAS_MIPMAP_NEAREST_LINEAR: return SG_FILTER_NEAREST_MIPMAP_LINEAR; + case SP_ATLAS_MIPMAP_LINEAR_LINEAR: return SG_FILTER_LINEAR_MIPMAP_LINEAR; + default: return _SG_FILTER_DEFAULT; + } +} + +static sg_wrap _sspine_as_image_wrap(spAtlasWrap wrap) { + switch (wrap) { + case SP_ATLAS_MIRROREDREPEAT: return SG_WRAP_MIRRORED_REPEAT; + case SP_ATLAS_CLAMPTOEDGE: return SG_WRAP_CLAMP_TO_EDGE; + case SP_ATLAS_REPEAT: return SG_WRAP_REPEAT; + default: return _SG_WRAP_DEFAULT; + } +} + +static void _sspine_init_image_info(const _sspine_atlas_t* atlas, int index, sspine_image_info* info, bool with_overrides) { + spAtlasPage* page = _sspine_lookup_atlas_page(atlas->slot.id, index); + SOKOL_ASSERT(page); + SOKOL_ASSERT(page->name); + info->valid = true; + info->sgimage.id = (uint32_t)(uintptr_t)page->rendererObject; + if (with_overrides && (atlas->overrides.min_filter != _SG_FILTER_DEFAULT)) { + info->min_filter = atlas->overrides.min_filter; + } + else { + info->min_filter = _sspine_as_image_filter(page->minFilter); + } + if (with_overrides && (atlas->overrides.mag_filter != _SG_FILTER_DEFAULT)) { + info->mag_filter = atlas->overrides.mag_filter; + } + else { + info->mag_filter = _sspine_as_image_filter(page->magFilter); + } + if (with_overrides && (atlas->overrides.wrap_u != _SG_WRAP_DEFAULT)) { + info->wrap_u = atlas->overrides.wrap_u; + } + else { + info->wrap_u = _sspine_as_image_wrap(page->uWrap); + } + if (with_overrides && (atlas->overrides.wrap_v != _SG_WRAP_DEFAULT)) { + info->wrap_v = atlas->overrides.wrap_v; + } + else { + info->wrap_v = _sspine_as_image_wrap(page->vWrap); + } + info->width = page->width; + info->height = page->height; + // NOTE: override already happened in atlas init + info->premul_alpha = page->pma != 0; + info->filename = _sspine_string(page->name); + if (info->filename.truncated) { + _SSPINE_WARN(STRING_TRUNCATED); + } +} + +static void _sspine_init_shared(void) { + sg_shader_desc shd_desc; + _sspine_clear(&shd_desc, sizeof(shd_desc)); + shd_desc.attrs[0].name = "position"; + shd_desc.attrs[1].name = "texcoord0"; + shd_desc.attrs[2].name = "color0"; + shd_desc.attrs[0].sem_name = "TEXCOORD"; + shd_desc.attrs[0].sem_index = 0; + shd_desc.attrs[1].sem_name = "TEXCOORD"; + shd_desc.attrs[1].sem_index = 1; + shd_desc.attrs[2].sem_name = "TEXCOORD"; + shd_desc.attrs[2].sem_index = 2; + shd_desc.vs.uniform_blocks[0].size = sizeof(_sspine_vsparams_t); + shd_desc.vs.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140; + shd_desc.vs.uniform_blocks[0].uniforms[0].name = "vs_params"; + shd_desc.vs.uniform_blocks[0].uniforms[0].type = SG_UNIFORMTYPE_FLOAT4; + shd_desc.vs.uniform_blocks[0].uniforms[0].array_count = 4; + shd_desc.fs.uniform_blocks[0].size = 16; + shd_desc.fs.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140; + shd_desc.fs.uniform_blocks[0].uniforms[0].name = "fs_params"; + shd_desc.fs.uniform_blocks[0].uniforms[0].type = SG_UNIFORMTYPE_FLOAT4; + shd_desc.fs.uniform_blocks[0].uniforms[0].array_count = 1; + shd_desc.fs.images[0].name = "tex"; + shd_desc.fs.images[0].image_type = SG_IMAGETYPE_2D; + shd_desc.fs.images[0].sampler_type = SG_SAMPLERTYPE_FLOAT; + shd_desc.label = "sspine-shader"; + #if defined(SOKOL_GLCORE33) + shd_desc.vs.source = _sspine_vs_source_glsl330; + shd_desc.fs.source = _sspine_fs_source_glsl330; + #elif defined(SOKOL_GLES3) + shd_desc.vs.source = _sspine_vs_source_glsl300es; + shd_desc.fs.source = _sspine_fs_source_glsl300es; + #elif defined(SOKOL_METAL) + shd_desc.vs.entry = "main0"; + shd_desc.fs.entry = "main0"; + switch (sg_query_backend()) { + case SG_BACKEND_METAL_MACOS: + shd_desc.vs.bytecode = SG_RANGE(_sspine_vs_bytecode_metal_macos); + shd_desc.fs.bytecode = SG_RANGE(_sspine_fs_bytecode_metal_macos); + break; + case SG_BACKEND_METAL_IOS: + shd_desc.vs.bytecode = SG_RANGE(_sspine_vs_bytecode_metal_ios); + shd_desc.fs.bytecode = SG_RANGE(_sspine_fs_bytecode_metal_ios); + break; + default: + shd_desc.vs.source = _sspine_vs_source_metal_sim; + shd_desc.fs.source = _sspine_fs_source_metal_sim; + break; + } + #elif defined(SOKOL_D3D11) + shd_desc.vs.bytecode = SG_RANGE(_sspine_vs_bytecode_hlsl4); + shd_desc.fs.bytecode = SG_RANGE(_sspine_fs_bytecode_hlsl4); + #elif defined(SOKOL_WGPU) + shd_desc.vs.bytecode = SG_RANGE(_sspine_vs_bytecode_wgpu); + shd_desc.fs.bytecode = SG_RANGE(_sspine_fs_bytecode_wgpu); + #else + shd_desc.vs.source = _sspine_vs_source_dummy; + shd_desc.fs.source = _sspine_fs_source_dummy; + #endif + _sspine.shd = sg_make_shader(&shd_desc); +} + +static void _sspine_destroy_shared(void) { + sg_destroy_shader(_sspine.shd); +} + +// called from inside sokol-gfx sg_commit() +static void _sspine_commit_listener_func(void* userdata) { + (void)userdata; + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine.frame_id++; +} + +static sg_commit_listener _sspine_make_commit_listener(void) { + sg_commit_listener commit_listener = { _sspine_commit_listener_func, 0 }; + return commit_listener; +} + +// ██████ ██ ██ ██████ ██ ██ ██████ +// ██ ██ ██ ██ ██ ██ ██ ██ ██ +// ██████ ██ ██ ██████ ██ ██ ██ +// ██ ██ ██ ██ ██ ██ ██ ██ +// ██ ██████ ██████ ███████ ██ ██████ +// +// >>public +SOKOL_API_IMPL void sspine_setup(const sspine_desc* desc) { + SOKOL_ASSERT(desc); + spBone_setYDown(1); + _sspine_clear(&_sspine, sizeof(_sspine)); + _sspine.init_cookie = _SSPINE_INIT_COOKIE; + _sspine.desc = _sspine_desc_defaults(desc); + _sspine_init_shared(); + // important, need to setup the frame id with a non-zero value, + // otherwise updates won't trigger in the first frame + _sspine.frame_id = 1; + _sspine_setup_context_pool(_sspine.desc.context_pool_size); + _sspine_setup_atlas_pool(_sspine.desc.atlas_pool_size); + _sspine_setup_skeleton_pool(_sspine.desc.skeleton_pool_size); + _sspine_setup_skinset_pool(_sspine.desc.skinset_pool_size); + _sspine_setup_instance_pool(_sspine.desc.instance_pool_size); + const sspine_context_desc ctx_desc = _sspine_as_context_desc(&_sspine.desc); + _sspine.def_ctx_id = sspine_make_context(&ctx_desc); + SOKOL_ASSERT(_sspine_is_default_context(_sspine.def_ctx_id)); + sspine_set_context(_sspine.def_ctx_id); + if (!sg_add_commit_listener(_sspine_make_commit_listener())) { + _SSPINE_ERROR(ADD_COMMIT_LISTENER_FAILED); + } +} + +SOKOL_API_IMPL void sspine_shutdown(void) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sg_remove_commit_listener(_sspine_make_commit_listener()); + _sspine_destroy_all_instances(); + _sspine_destroy_all_skinsets(); + _sspine_destroy_all_skeletons(); + _sspine_destroy_all_atlases(); + _sspine_destroy_all_contexts(); + _sspine_discard_instance_pool(); + _sspine_discard_skinset_pool(); + _sspine_discard_skeleton_pool(); + _sspine_discard_atlas_pool(); + _sspine_discard_context_pool(); + _sspine_destroy_shared(); + _sspine.init_cookie = 0; +} + +SOKOL_API_IMPL sspine_context sspine_make_context(const sspine_context_desc* desc) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(desc); + const sspine_context_desc desc_def = _sspine_context_desc_defaults(desc); + sspine_context ctx_id = _sspine_alloc_context(); + _sspine_context_t* ctx = _sspine_lookup_context(ctx_id.id); + if (ctx) { + ctx->slot.state = _sspine_init_context(ctx, &desc_def); + SOKOL_ASSERT((ctx->slot.state == SSPINE_RESOURCESTATE_VALID) || (ctx->slot.state == SSPINE_RESOURCESTATE_FAILED)); + if (ctx->slot.state == SSPINE_RESOURCESTATE_FAILED) { + _sspine_deinit_context(ctx); + } + } + else { + ctx->slot.state = SSPINE_RESOURCESTATE_FAILED; + _SSPINE_ERROR(CONTEXT_POOL_EXHAUSTED); + } + return ctx_id; +} + +SOKOL_API_IMPL void sspine_destroy_context(sspine_context ctx_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + if (_sspine_is_default_context(ctx_id)) { + _SSPINE_ERROR(CANNOT_DESTROY_DEFAULT_CONTEXT); + return; + } + _sspine_destroy_context(ctx_id); + // re-validate the current context pointer (this will return a nullptr + // if we just destroyed the current context) + _sspine.cur_ctx = _sspine_lookup_context(_sspine.cur_ctx_id.id); +} + +SOKOL_API_IMPL void sspine_set_context(sspine_context ctx_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + if (_sspine_is_default_context(ctx_id)) { + _sspine.cur_ctx_id = _sspine.def_ctx_id; + } + else { + _sspine.cur_ctx_id = ctx_id; + } + // this will return null if the handle isn't valid + _sspine.cur_ctx = _sspine_lookup_context(_sspine.cur_ctx_id.id); +} + +SOKOL_API_IMPL sspine_context sspine_get_context(void) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + return _sspine.cur_ctx_id; +} + +SOKOL_API_IMPL sspine_context sspine_default_context(void) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + return _sspine_make_context_handle(0x00010001); +} + +SOKOL_API_IMPL sspine_context_info sspine_get_context_info(sspine_context ctx_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_context_info res; + _sspine_clear(&res, sizeof(res)); + const _sspine_context_t* ctx = _sspine_lookup_context(ctx_id.id); + if (ctx) { + res.num_vertices = ctx->vertices.next; + res.num_indices = ctx->indices.next; + res.num_commands = ctx->commands.next; + } + return res; +} + +SOKOL_API_IMPL void sspine_set_skinset(sspine_instance instance_id, sspine_skinset skinset_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + _sspine_skinset_t* skinset = _sspine_lookup_skinset(skinset_id.id); + if (_sspine_instance_and_deps_valid(instance) && _sspine_skinset_and_deps_valid(skinset) && (instance->skel.id == skinset->skel.id)) { + SOKOL_ASSERT(instance->sp_skel); + SOKOL_ASSERT(instance->sp_anim_state); + SOKOL_ASSERT(skinset->sp_skin); + spSkeleton_setSkin(instance->sp_skel, 0); + spSkeleton_setSkin(instance->sp_skel, skinset->sp_skin); + spSkeleton_setSlotsToSetupPose(instance->sp_skel); + spAnimationState_apply(instance->sp_anim_state, instance->sp_skel); + } +} + +SOKOL_API_IMPL void sspine_update_instance(sspine_instance instance_id, float delta_time) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (_sspine_instance_and_deps_valid(instance)) { + SOKOL_ASSERT(instance->sp_skel); + SOKOL_ASSERT(instance->sp_anim_state); + _sspine_rewind_triggered_events(instance); + spAnimationState_update(instance->sp_anim_state, delta_time); + spAnimationState_apply(instance->sp_anim_state, instance->sp_skel); + spSkeleton_updateWorldTransform(instance->sp_skel); + } +} + +SOKOL_API_IMPL int sspine_num_triggered_events(sspine_instance instance_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (_sspine_instance_and_deps_valid(instance)) { + SOKOL_ASSERT((instance->cur_triggered_event_index >= 0) && (instance->cur_triggered_event_index <= _SSPINE_MAX_TRIGGERED_EVENTS)); + return instance->cur_triggered_event_index; + } + return 0; +} + +SOKOL_API_IMPL sspine_triggered_event_info sspine_get_triggered_event_info(sspine_instance instance_id, int triggered_event_index) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + sspine_triggered_event_info res; + _sspine_clear(&res, sizeof(res)); + if (_sspine_instance_and_deps_valid(instance)) { + if ((triggered_event_index >= 0) && (triggered_event_index < instance->cur_triggered_event_index)) { + res = instance->triggered_events[triggered_event_index]; + } + } + return res; +} + +SOKOL_API_IMPL void sspine_draw_instance_in_layer(sspine_instance instance_id, int layer) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_context_t* ctx = _sspine.cur_ctx; + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (ctx && _sspine_instance_and_deps_valid(instance)) { + _sspine_draw_instance(ctx, instance, layer); + } +} + +SOKOL_API_IMPL sspine_mat4 sspine_layer_transform_to_mat4(const sspine_layer_transform* tform) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_mat4 res; + _sspine_layer_transform_to_proj(tform, res.m); + return res; +} + +SOKOL_API_IMPL void sspine_context_draw_instance_in_layer(sspine_context ctx_id, sspine_instance instance_id, int layer) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_context_t* ctx = _sspine_lookup_context(ctx_id.id); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (ctx && _sspine_instance_and_deps_valid(instance)) { + _sspine_draw_instance(ctx, instance, layer); + } +} + +SOKOL_API_IMPL void sspine_draw_layer(int layer, const sspine_layer_transform* tform) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(tform); + _sspine_context_t* ctx = _sspine.cur_ctx; + if (ctx) { + _sspine_draw_layer(ctx, layer, tform); + } +} + +SOKOL_API_IMPL void sspine_context_draw_layer(sspine_context ctx_id, int layer, const sspine_layer_transform* tform) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(tform); + _sspine_context_t* ctx = _sspine_lookup_context(ctx_id.id); + if (ctx) { + _sspine_draw_layer(ctx, layer, tform); + } +} + +SOKOL_API_IMPL sspine_atlas sspine_make_atlas(const sspine_atlas_desc* desc) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(desc); + const sspine_atlas_desc desc_def = _sspine_atlas_desc_defaults(desc); + sspine_atlas atlas_id = _sspine_alloc_atlas(); + _sspine_atlas_t* atlas = _sspine_lookup_atlas(atlas_id.id); + if (atlas) { + atlas->slot.state = _sspine_init_atlas(atlas, &desc_def); + SOKOL_ASSERT((atlas->slot.state == SSPINE_RESOURCESTATE_VALID) || (atlas->slot.state == SSPINE_RESOURCESTATE_FAILED)); + if (atlas->slot.state == SSPINE_RESOURCESTATE_FAILED) { + _sspine_deinit_atlas(atlas); + } + } + else { + _SSPINE_ERROR(ATLAS_POOL_EXHAUSTED); + } + return atlas_id; +} + +SOKOL_API_IMPL void sspine_destroy_atlas(sspine_atlas atlas_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_destroy_atlas(atlas_id); +} + +SOKOL_API_IMPL sspine_skeleton sspine_make_skeleton(const sspine_skeleton_desc* desc) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(desc); + const sspine_skeleton_desc desc_def = _sspine_skeleton_desc_defaults(desc); + sspine_skeleton skeleton_id = _sspine_alloc_skeleton(); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (skeleton) { + skeleton->slot.state = _sspine_init_skeleton(skeleton, &desc_def); + SOKOL_ASSERT((skeleton->slot.state == SSPINE_RESOURCESTATE_VALID) || (skeleton->slot.state == SSPINE_RESOURCESTATE_FAILED)); + if (skeleton->slot.state == SSPINE_RESOURCESTATE_FAILED) { + _sspine_deinit_skeleton(skeleton); + } + } + else { + _SSPINE_ERROR(SKELETON_POOL_EXHAUSTED); + } + return skeleton_id; +} + +SOKOL_API_IMPL void sspine_destroy_skeleton(sspine_skeleton skeleton_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_destroy_skeleton(skeleton_id); +} + +SOKOL_API_IMPL sspine_skinset sspine_make_skinset(const sspine_skinset_desc* desc) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(desc); + const sspine_skinset_desc desc_def = _sspine_skinset_desc_defaults(desc); + sspine_skinset skinset_id = _sspine_alloc_skinset(); + _sspine_skinset_t* skinset = _sspine_lookup_skinset(skinset_id.id); + if (skinset) { + skinset->slot.state = _sspine_init_skinset(skinset, &desc_def); + SOKOL_ASSERT((skinset->slot.state == SSPINE_RESOURCESTATE_VALID) || (skinset->slot.state == SSPINE_RESOURCESTATE_FAILED)); + if (skinset->slot.state == SSPINE_RESOURCESTATE_FAILED) { + _sspine_deinit_skinset(skinset); + } + } + else { + _SSPINE_ERROR(SKINSET_POOL_EXHAUSTED); + } + return skinset_id; +} + +SOKOL_API_IMPL void sspine_destroy_skinset(sspine_skinset skinset_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_destroy_skinset(skinset_id); +} + +SOKOL_API_IMPL sspine_instance sspine_make_instance(const sspine_instance_desc* desc) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(desc); + const sspine_instance_desc desc_def = _sspine_instance_desc_defaults(desc); + sspine_instance instance_id = _sspine_alloc_instance(); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (instance) { + instance->slot.state = _sspine_init_instance(instance, &desc_def); + SOKOL_ASSERT((instance->slot.state == SSPINE_RESOURCESTATE_VALID) || (instance->slot.state == SSPINE_RESOURCESTATE_FAILED)); + if (instance->slot.state == SSPINE_RESOURCESTATE_FAILED) { + _sspine_deinit_instance(instance); + } + } + else { + _SSPINE_ERROR(INSTANCE_POOL_EXHAUSTED); + } + return instance_id; +} + +SOKOL_API_IMPL void sspine_destroy_instance(sspine_instance instance_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_destroy_instance(instance_id); +} + +SOKOL_API_IMPL sspine_resource_state sspine_get_context_resource_state(sspine_context ctx_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + const _sspine_context_t* ctx = _sspine_lookup_context(ctx_id.id); + if (ctx) { + return ctx->slot.state; + } + else { + return SSPINE_RESOURCESTATE_INVALID; + } +} + +SOKOL_API_IMPL sspine_resource_state sspine_get_atlas_resource_state(sspine_atlas atlas_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + const _sspine_atlas_t* atlas = _sspine_lookup_atlas(atlas_id.id); + if (atlas) { + return atlas->slot.state; + } + else { + return SSPINE_RESOURCESTATE_INVALID; + } +} + +SOKOL_API_IMPL sspine_resource_state sspine_get_skeleton_resource_state(sspine_skeleton skeleton_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + const _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (skeleton) { + return skeleton->slot.state; + } + else { + return SSPINE_RESOURCESTATE_INVALID; + } +} + +SOKOL_API_IMPL sspine_resource_state sspine_get_skinset_resource_state(sspine_skinset skinset_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + const _sspine_skinset_t* skinset = _sspine_lookup_skinset(skinset_id.id); + if (skinset) { + return skinset->slot.state; + } + else { + return SSPINE_RESOURCESTATE_INVALID; + } +} + +SOKOL_API_IMPL sspine_resource_state sspine_get_instance_resource_state(sspine_instance instance_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + const _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (instance) { + return instance->slot.state; + } + else { + return SSPINE_RESOURCESTATE_INVALID; + } +} + +SOKOL_API_IMPL bool sspine_context_valid(sspine_context ctx_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + return sspine_get_context_resource_state(ctx_id) == SSPINE_RESOURCESTATE_VALID; +} + +SOKOL_API_IMPL bool sspine_atlas_valid(sspine_atlas atlas_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + return sspine_get_atlas_resource_state(atlas_id) == SSPINE_RESOURCESTATE_VALID; +} + +SOKOL_API_IMPL bool sspine_skeleton_valid(sspine_skeleton skeleton_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + return sspine_get_skeleton_resource_state(skeleton_id) == SSPINE_RESOURCESTATE_VALID; +} + +SOKOL_API_IMPL bool sspine_skinset_valid(sspine_skinset skinset_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + return sspine_get_skinset_resource_state(skinset_id) == SSPINE_RESOURCESTATE_VALID; +} + +SOKOL_API_IMPL bool sspine_instance_valid(sspine_instance instance_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + return sspine_get_instance_resource_state(instance_id) == SSPINE_RESOURCESTATE_VALID; +} + +SOKOL_API_IMPL sspine_atlas sspine_get_skeleton_atlas(sspine_skeleton skeleton_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + sspine_atlas res; + _sspine_clear(&res, sizeof(res)); + if (skeleton) { + res.id = skeleton->atlas.id; + } + return res; +} + +SOKOL_API_IMPL sspine_skeleton sspine_get_instance_skeleton(sspine_instance instance_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + sspine_skeleton res; + _sspine_clear(&res, sizeof(res)); + if (instance) { + res.id = instance->skel.id; + } + return res; +} + +SOKOL_API_IMPL int sspine_num_images(sspine_atlas atlas_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_atlas_t* atlas = _sspine_lookup_atlas(atlas_id.id); + if (atlas) { + return atlas->num_pages; + } + return 0; +} + +SOKOL_API_IMPL sspine_image sspine_image_by_index(sspine_atlas atlas_id, int index) { + return _sspine_image(atlas_id.id, index); +} + +SOKOL_API_IMPL bool sspine_image_valid(sspine_image image) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_atlas_t* atlas = _sspine_lookup_atlas(image.atlas_id); + return atlas && (image.index >= 0) && (image.index < atlas->num_pages); +} + +SOKOL_API_IMPL bool sspine_image_equal(sspine_image first, sspine_image second) { + return (first.atlas_id == second.atlas_id) && (first.index == second.index); +} + +SOKOL_API_IMPL sspine_image_info sspine_get_image_info(sspine_image image) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_atlas_t* atlas = _sspine_lookup_atlas(image.atlas_id); + sspine_image_info img_info; + _sspine_clear(&img_info, sizeof(img_info)); + if (atlas && (image.index >= 0) && (image.index < atlas->num_pages)) { + _sspine_init_image_info(atlas, image.index, &img_info, true); + } + return img_info; +} + +SOKOL_API_IMPL int sspine_num_atlas_pages(sspine_atlas atlas_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_atlas_t* atlas = _sspine_lookup_atlas(atlas_id.id); + if (atlas) { + return atlas->num_pages; + } + else { + return 0; + } +} + +SOKOL_API_IMPL sspine_atlas_page sspine_atlas_page_by_index(sspine_atlas atlas_id, int index) { + return _sspine_atlas_page(atlas_id.id, index); +} + +SOKOL_API_IMPL bool sspine_atlas_page_valid(sspine_atlas_page page) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_atlas_t* atlas = _sspine_lookup_atlas(page.atlas_id); + if (atlas) { + return (page.index >= 0) && (page.index < atlas->num_pages); + } + return false; +} + +SOKOL_API_IMPL bool sspine_atlas_page_equal(sspine_atlas_page first, sspine_atlas_page second) { + return (first.atlas_id == second.atlas_id) && (first.index == second.index); +} + +SOKOL_API_IMPL sspine_atlas_page_info sspine_get_atlas_page_info(sspine_atlas_page page) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_atlas_page_info res; + _sspine_clear(&res, sizeof(res)); + const spAtlasPage* sp_page = _sspine_lookup_atlas_page(page.atlas_id, page.index); + if (sp_page) { + // at this point, atlas is guaranteed to be valid + const _sspine_atlas_t* atlas = _sspine_lookup_atlas(page.atlas_id); + res.valid = true; + res.atlas.id = page.atlas_id; + // write image info without overrides + _sspine_init_image_info(atlas, page.index, &res.image, false); + // ...and provide the overrides separately + res.overrides = atlas->overrides; + } + return res; +} + +SOKOL_API_IMPL void sspine_set_position(sspine_instance instance_id, sspine_vec2 position) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (_sspine_instance_and_deps_valid(instance)) { + SOKOL_ASSERT(instance->sp_skel); + instance->sp_skel->x = position.x; + instance->sp_skel->y = position.y; + } +} + +SOKOL_API_IMPL void sspine_set_scale(sspine_instance instance_id, sspine_vec2 scale) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (instance) { + SOKOL_ASSERT(instance->sp_skel); + instance->sp_skel->scaleX = scale.x; + instance->sp_skel->scaleY = scale.y; + } +} + +SOKOL_API_IMPL void sspine_set_color(sspine_instance instance_id, sspine_color color) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (instance) { + SOKOL_ASSERT(instance->sp_skel); + instance->sp_skel->color.r = color.r; + instance->sp_skel->color.g = color.g; + instance->sp_skel->color.b = color.b; + instance->sp_skel->color.a = color.a; + } +} + +SOKOL_API_IMPL sspine_vec2 sspine_get_position(sspine_instance instance_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + sspine_vec2 v = { 0.0f, 0.0f }; + if (instance) { + SOKOL_ASSERT(instance->sp_skel); + v.x = instance->sp_skel->x; + v.y = instance->sp_skel->y; + } + return v; +} + +SOKOL_API_IMPL sspine_vec2 sspine_get_scale(sspine_instance instance_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + sspine_vec2 v = { 0.0f, 0.0f }; + if (instance) { + SOKOL_ASSERT(instance->sp_skel); + v.x = instance->sp_skel->scaleX; + v.y = instance->sp_skel->scaleY; + } + return v; +} + +SOKOL_API_IMPL sspine_color sspine_get_color(sspine_instance instance_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + sspine_color c = { 0.0f, 0.0f, 0.0f, 0.0f }; + if (instance) { + SOKOL_ASSERT(instance->sp_skel); + c.r = instance->sp_skel->color.r; + c.g = instance->sp_skel->color.g; + c.b = instance->sp_skel->color.b; + c.a = instance->sp_skel->color.a; + } + return c; +} + +SOKOL_API_IMPL int sspine_num_anims(sspine_skeleton skeleton_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + return skeleton->sp_skel_data->animationsCount; + } + return 0; +} + +SOKOL_API_IMPL sspine_anim sspine_anim_by_name(sspine_skeleton skeleton_id, const char* name) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(name); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + // NOTE: there's a spSkeletonData_findAnimation function, but that doesn't + // give us access to the index, so we'll need to do the loop ourselves + SOKOL_ASSERT(skeleton->sp_skel_data); + const spSkeletonData* sp_skel_data = skeleton->sp_skel_data; + const int num_anims = sp_skel_data->animationsCount; + SOKOL_ASSERT(sp_skel_data->animations); + for (int i = 0; i < num_anims; i++) { + SOKOL_ASSERT(sp_skel_data->animations[i]); + SOKOL_ASSERT(sp_skel_data->animations[i]->name); + if (0 == strcmp(sp_skel_data->animations[i]->name, name)) { + return _sspine_anim(skeleton_id.id, i); + } + } + } + return _sspine_anim(0, 0); +} + +SOKOL_API_IMPL sspine_anim sspine_anim_by_index(sspine_skeleton skeleton_id, int index) { + return _sspine_anim(skeleton_id.id, index); +} + +SOKOL_API_IMPL bool sspine_anim_valid(sspine_anim anim) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(anim.skeleton_id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + return (anim.index >= 0) && (anim.index < skeleton->sp_skel_data->animationsCount); + } + return false; +} + +SOKOL_API_IMPL bool sspine_anim_equal(sspine_anim first, sspine_anim second) { + return (first.skeleton_id == second.skeleton_id) && (first.index == second.index); +} + +SOKOL_API_IMPL sspine_anim_info sspine_get_anim_info(sspine_anim anim) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_anim_info res; + _sspine_clear(&res, sizeof(res)); + const spAnimation* sp_anim = _sspine_lookup_skeleton_anim(anim.skeleton_id, anim.index); + if (sp_anim) { + res.valid = true; + res.index = anim.index; + res.duration = sp_anim->duration; + res.name = _sspine_string(sp_anim->name); + if (res.name.truncated) { + _SSPINE_WARN(STRING_TRUNCATED); + } + } + return res; +} + +SOKOL_API_IMPL void sspine_clear_animation_tracks(sspine_instance instance_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (_sspine_instance_and_deps_valid(instance)) { + SOKOL_ASSERT(instance->sp_anim_state); + spAnimationState_clearTracks(instance->sp_anim_state); + } +} + +SOKOL_API_IMPL void sspine_clear_animation_track(sspine_instance instance_id, int track_index) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (_sspine_instance_and_deps_valid(instance)) { + SOKOL_ASSERT(instance->sp_anim_state); + spAnimationState_clearTrack(instance->sp_anim_state, track_index); + } +} + +SOKOL_API_IMPL void sspine_set_animation(sspine_instance instance_id, sspine_anim anim, int track_index, bool loop) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + spAnimation* sp_anim = _sspine_lookup_instance_anim(instance_id.id, anim.skeleton_id, anim.index); + if (sp_anim) { + // NOTE: at this point, instance is guaranteed to be valid + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + SOKOL_ASSERT(instance); + spAnimationState_setAnimation(instance->sp_anim_state, track_index, sp_anim, loop?1:0); + } +} + +SOKOL_API_IMPL void sspine_add_animation(sspine_instance instance_id, sspine_anim anim, int track_index, bool loop, float delay) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + spAnimation* sp_anim = _sspine_lookup_instance_anim(instance_id.id, anim.skeleton_id, anim.index); + if (sp_anim) { + // NOTE: at this point, instance is guaranteed to be valid + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + SOKOL_ASSERT(instance); + SOKOL_ASSERT(instance->sp_anim_state); + spAnimationState_addAnimation(instance->sp_anim_state, track_index, sp_anim, loop?1:0, delay); + } +} + +SOKOL_API_IMPL void sspine_set_empty_animation(sspine_instance instance_id, int track_index, float mix_duration) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (_sspine_instance_and_deps_valid(instance)) { + SOKOL_ASSERT(instance->sp_anim_state); + spAnimationState_setEmptyAnimation(instance->sp_anim_state, track_index, mix_duration); + } +} + +SOKOL_API_IMPL void sspine_add_empty_animation(sspine_instance instance_id, int track_index, float mix_duration, float delay) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (_sspine_instance_and_deps_valid(instance)) { + SOKOL_ASSERT(instance->sp_anim_state); + spAnimationState_addEmptyAnimation(instance->sp_anim_state, track_index, mix_duration, delay); + } +} + +SOKOL_API_IMPL int sspine_num_bones(sspine_skeleton skeleton_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + return skeleton->sp_skel_data->bonesCount; + } + return 0; +} + +SOKOL_API_IMPL sspine_bone sspine_bone_by_name(sspine_skeleton skeleton_id, const char* name) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(name); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + spBoneData* sp_bone_data = spSkeletonData_findBone(skeleton->sp_skel_data, name); + if (sp_bone_data) { + return _sspine_bone(skeleton_id.id, sp_bone_data->index); + } + } + return _sspine_bone(0, 0); +} + +SOKOL_API_IMPL sspine_bone sspine_bone_by_index(sspine_skeleton skeleton_id, int index) { + return _sspine_bone(skeleton_id.id, index); +} + +SOKOL_API_IMPL bool sspine_bone_valid(sspine_bone bone) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(bone.skeleton_id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + return (bone.index >= 0) && (bone.index < skeleton->sp_skel_data->bonesCount); + } + return false; +} + +SOKOL_API_IMPL bool sspine_bone_equal(sspine_bone first, sspine_bone second) { + return (first.skeleton_id == second.skeleton_id) && (first.index == second.index); +} + +SOKOL_API_IMPL sspine_bone_info sspine_get_bone_info(sspine_bone bone) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_bone_info res; + _sspine_clear(&res, sizeof(res)); + const spBoneData* sp_bone_data = _sspine_lookup_bone_data(bone.skeleton_id, bone.index); + if (sp_bone_data) { + SOKOL_ASSERT(sp_bone_data->index == bone.index); + SOKOL_ASSERT(sp_bone_data->name); + res.valid = true; + res.index = sp_bone_data->index; + if (sp_bone_data->parent) { + res.parent_bone = _sspine_bone(bone.skeleton_id, sp_bone_data->parent->index); + } + res.length = sp_bone_data->length; + res.pose.position.x = sp_bone_data->x; + res.pose.position.y = sp_bone_data->y; + res.pose.rotation = sp_bone_data->rotation; + res.pose.scale.x = sp_bone_data->scaleX; + res.pose.scale.y = sp_bone_data->scaleY; + res.pose.shear.x = sp_bone_data->shearX; + res.pose.shear.y = sp_bone_data->shearY; + res.color.r = sp_bone_data->color.r; + res.color.g = sp_bone_data->color.g; + res.color.b = sp_bone_data->color.b; + res.color.a = sp_bone_data->color.a; + res.name = _sspine_string(sp_bone_data->name); + if (res.name.truncated) { + _SSPINE_WARN(STRING_TRUNCATED); + } + } + return res; +} + +SOKOL_API_IMPL void sspine_set_bone_transform(sspine_instance instance_id, sspine_bone bone, const sspine_bone_transform* transform) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(transform); + spBone* sp_bone = _sspine_lookup_bone(instance_id.id, bone.skeleton_id, bone.index); + if (sp_bone) { + sp_bone->x = transform->position.x; + sp_bone->y = transform->position.y; + sp_bone->rotation = transform->rotation; + sp_bone->scaleX = transform->scale.x; + sp_bone->scaleY = transform->scale.y; + sp_bone->shearX = transform->shear.x; + sp_bone->shearY = transform->shear.y; + } +} + +SOKOL_API_IMPL void sspine_set_bone_position(sspine_instance instance_id, sspine_bone bone, sspine_vec2 position) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + spBone* sp_bone = _sspine_lookup_bone(instance_id.id, bone.skeleton_id, bone.index); + if (sp_bone) { + sp_bone->x = position.x; + sp_bone->y = position.y; + } +} + +SOKOL_API_IMPL void sspine_set_bone_rotation(sspine_instance instance_id, sspine_bone bone, float rotation) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + spBone* sp_bone = _sspine_lookup_bone(instance_id.id, bone.skeleton_id, bone.index); + if (sp_bone) { + sp_bone->rotation = rotation; + } +} + +SOKOL_API_IMPL void sspine_set_bone_scale(sspine_instance instance_id, sspine_bone bone, sspine_vec2 scale) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + spBone* sp_bone = _sspine_lookup_bone(instance_id.id, bone.skeleton_id, bone.index); + if (sp_bone) { + sp_bone->scaleX = scale.x; + sp_bone->scaleY = scale.y; + } +} + +SOKOL_API_IMPL void sspine_set_bone_shear(sspine_instance instance_id, sspine_bone bone, sspine_vec2 shear) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + spBone* sp_bone = _sspine_lookup_bone(instance_id.id, bone.skeleton_id, bone.index); + if (sp_bone) { + sp_bone->shearX = shear.x; + sp_bone->shearY = shear.y; + } +} + +SOKOL_API_IMPL sspine_bone_transform sspine_get_bone_transform(sspine_instance instance_id, sspine_bone bone) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_bone_transform res; + _sspine_clear(&res, sizeof(res)); + spBone* sp_bone = _sspine_lookup_bone(instance_id.id, bone.skeleton_id, bone.index); + if (sp_bone) { + res.position.x = sp_bone->x; + res.position.y = sp_bone->y; + res.rotation = sp_bone->rotation; + res.scale.x = sp_bone->scaleX; + res.scale.y = sp_bone->scaleY; + res.shear.x = sp_bone->shearX; + res.shear.y = sp_bone->shearY; + } + return res; +} + +SOKOL_API_IMPL sspine_vec2 sspine_get_bone_position(sspine_instance instance_id, sspine_bone bone) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_vec2 res; + _sspine_clear(&res, sizeof(res)); + spBone* sp_bone = _sspine_lookup_bone(instance_id.id, bone.skeleton_id, bone.index); + if (sp_bone) { + res.x = sp_bone->x; + res.y = sp_bone->y; + } + return res; +} + +SOKOL_API_IMPL float sspine_get_bone_rotation(sspine_instance instance_id, sspine_bone bone) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + spBone* sp_bone = _sspine_lookup_bone(instance_id.id, bone.skeleton_id, bone.index); + if (sp_bone) { + return sp_bone->rotation; + } + else { + return 0.0f; + } +} + +SOKOL_API_IMPL sspine_vec2 sspine_get_bone_scale(sspine_instance instance_id, sspine_bone bone) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_vec2 res; + _sspine_clear(&res, sizeof(res)); + spBone* sp_bone = _sspine_lookup_bone(instance_id.id, bone.skeleton_id, bone.index); + if (sp_bone) { + res.x = sp_bone->scaleX; + res.y = sp_bone->scaleY; + } + return res; +} + +SOKOL_API_IMPL sspine_vec2 sspine_get_bone_shear(sspine_instance instance_id, sspine_bone bone) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_vec2 res; + _sspine_clear(&res, sizeof(res)); + spBone* sp_bone = _sspine_lookup_bone(instance_id.id, bone.skeleton_id, bone.index); + if (sp_bone) { + res.x = sp_bone->shearX; + res.y = sp_bone->shearY; + } + return res; +} + +SOKOL_API_IMPL sspine_vec2 sspine_get_bone_world_position(sspine_instance instance_id, sspine_bone bone) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_vec2 res; + _sspine_clear(&res, sizeof(res)); + spBone* sp_bone = _sspine_lookup_bone(instance_id.id, bone.skeleton_id, bone.index); + if (sp_bone) { + res.x = sp_bone->worldX; + res.y = sp_bone->worldY; + } + return res; +} + +SOKOL_API_IMPL sspine_vec2 sspine_bone_local_to_world(sspine_instance instance_id, sspine_bone bone, sspine_vec2 local_pos) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_vec2 res; + _sspine_clear(&res, sizeof(res)); + spBone* sp_bone = _sspine_lookup_bone(instance_id.id, bone.skeleton_id, bone.index); + if (sp_bone) { + spBone_localToWorld(sp_bone, local_pos.x, local_pos.y, &res.x, &res.y); + } + return res; +} + +SOKOL_API_IMPL sspine_vec2 sspine_bone_world_to_local(sspine_instance instance_id, sspine_bone bone, sspine_vec2 world_pos) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_vec2 res; + _sspine_clear(&res, sizeof(res)); + spBone* sp_bone = _sspine_lookup_bone(instance_id.id, bone.skeleton_id, bone.index); + if (sp_bone) { + spBone_worldToLocal(sp_bone, world_pos.x, world_pos.y, &res.x, &res.y); + } + return res; +} + +SOKOL_API_IMPL int sspine_num_slots(sspine_skeleton skeleton_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + return skeleton->sp_skel_data->slotsCount; + } + return 0; +} + +SOKOL_API_IMPL sspine_slot sspine_slot_by_name(sspine_skeleton skeleton_id, const char* name) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(name); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + spSlotData* sp_slot_data = spSkeletonData_findSlot(skeleton->sp_skel_data, name); + if (sp_slot_data) { + return _sspine_slot(skeleton_id.id, sp_slot_data->index); + } + } + return _sspine_slot(0, 0); +} + +SOKOL_API_IMPL sspine_slot sspine_slot_by_index(sspine_skeleton skeleton_id, int index) { + return _sspine_slot(skeleton_id.id, index); +} + +SOKOL_API_IMPL bool sspine_slot_valid(sspine_slot slot) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(slot.skeleton_id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + return (slot.index >= 0) && (slot.index < skeleton->sp_skel_data->slotsCount); + } + return false; +} + +SOKOL_API_IMPL bool sspine_slot_equal(sspine_slot first, sspine_slot second) { + return (first.skeleton_id == second.skeleton_id) && (first.index == second.index); +} + +SOKOL_API_IMPL sspine_slot_info sspine_get_slot_info(sspine_slot slot) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_slot_info res; + _sspine_clear(&res, sizeof(res)); + const spSlotData* sp_slot_data = _sspine_lookup_slot_data(slot.skeleton_id, slot.index); + if (sp_slot_data) { + SOKOL_ASSERT(sp_slot_data->index == slot.index); + SOKOL_ASSERT(sp_slot_data->name); + SOKOL_ASSERT(sp_slot_data->boneData); + res.valid = true; + res.index = sp_slot_data->index; + res.bone = _sspine_bone(slot.skeleton_id, sp_slot_data->boneData->index); + res.color.r = sp_slot_data->color.r; + res.color.g = sp_slot_data->color.g; + res.color.b = sp_slot_data->color.b; + res.color.a = sp_slot_data->color.a; + res.attachment_name = _sspine_string(sp_slot_data->attachmentName); + if (res.attachment_name.truncated) { + _SSPINE_WARN(STRING_TRUNCATED); + } + res.name = _sspine_string(sp_slot_data->name); + if (res.name.truncated) { + _SSPINE_WARN(STRING_TRUNCATED); + } + } + return res; +} + +SOKOL_API_IMPL void sspine_set_slot_color(sspine_instance instance_id, sspine_slot slot, sspine_color color) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + spSlot* sp_slot = _sspine_lookup_slot(instance_id.id, slot.skeleton_id, slot.index); + if (sp_slot) { + sp_slot->color.r = color.r; + sp_slot->color.g = color.g; + sp_slot->color.b = color.b; + sp_slot->color.a = color.a; + } +} + +SOKOL_API_IMPL sspine_color sspine_get_slot_color(sspine_instance instance_id, sspine_slot slot) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_color color; + _sspine_clear(&color, sizeof(color)); + spSlot* sp_slot = _sspine_lookup_slot(instance_id.id, slot.skeleton_id, slot.index); + if (sp_slot) { + color.r = sp_slot->color.r; + color.g = sp_slot->color.g; + color.b = sp_slot->color.b; + color.a = sp_slot->color.a; + } + return color; +} + +SOKOL_API_IMPL int sspine_num_events(sspine_skeleton skeleton_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + return skeleton->sp_skel_data->eventsCount; + } + return 0; +} + +SOKOL_API_IMPL sspine_event sspine_event_by_name(sspine_skeleton skeleton_id, const char* name) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(name); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + SOKOL_ASSERT(skeleton->sp_skel_data->events); + // spEventData has no embedded index, so we need to loop over the events + for (int i = 0; i < skeleton->sp_skel_data->eventsCount; i++) { + SOKOL_ASSERT(skeleton->sp_skel_data->events[i]); + SOKOL_ASSERT(skeleton->sp_skel_data->events[i]->name); + if (0 == strcmp(skeleton->sp_skel_data->events[i]->name, name)) { + return _sspine_event(skeleton_id.id, i); + } + } + } + return _sspine_event(0, 0); +} + +SOKOL_API_IMPL sspine_event sspine_event_by_index(sspine_skeleton skeleton_id, int index) { + return _sspine_event(skeleton_id.id, index); +} + +SOKOL_API_IMPL bool sspine_event_valid(sspine_event event) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(event.skeleton_id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + return (event.index >= 0) && (event.index < skeleton->sp_skel_data->eventsCount); + } + return false; +} + +SOKOL_API_IMPL bool sspine_event_equal(sspine_event first, sspine_event second) { + return (first.skeleton_id == second.skeleton_id) && (first.index == second.index); +} + +SOKOL_API_IMPL sspine_event_info sspine_get_event_info(sspine_event event) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_event_info res; + _sspine_clear(&res, sizeof(res)); + const spEventData* sp_event_data = _sspine_lookup_event_data(event.skeleton_id, event.index); + if (sp_event_data) { + res.valid = true; + res.index = event.index; + res.int_value = sp_event_data->intValue; + res.float_value = sp_event_data->floatValue; + res.volume = sp_event_data->volume; + res.balance = sp_event_data->balance; + res.name = _sspine_string(sp_event_data->name); + if (res.name.truncated) { + _SSPINE_WARN(STRING_TRUNCATED); + } + res.string_value = _sspine_string(sp_event_data->stringValue); + if (res.string_value.truncated) { + _SSPINE_WARN(STRING_TRUNCATED); + } + res.audio_path = _sspine_string(sp_event_data->audioPath); + if (res.audio_path.truncated) { + _SSPINE_WARN(STRING_TRUNCATED); + } + } + return res; +} + +SOKOL_API_IMPL int sspine_num_iktargets(sspine_skeleton skeleton_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + return skeleton->sp_skel_data->ikConstraintsCount; + } + return 0; +} + +SOKOL_API_IMPL sspine_iktarget sspine_iktarget_by_name(sspine_skeleton skeleton_id, const char* name) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(name); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + SOKOL_ASSERT(skeleton->sp_skel_data->ikConstraints); + // spIkConstraintData has no embedded index, so we need to loop over the events + for (int i = 0; i < skeleton->sp_skel_data->ikConstraintsCount; i++) { + SOKOL_ASSERT(skeleton->sp_skel_data->ikConstraints[i]); + SOKOL_ASSERT(skeleton->sp_skel_data->ikConstraints[i]->name); + if (0 == strcmp(skeleton->sp_skel_data->ikConstraints[i]->name, name)) { + return _sspine_iktarget(skeleton_id.id, i); + } + } + } + return _sspine_iktarget(0, 0); +} + +SOKOL_API_IMPL sspine_iktarget sspine_iktarget_by_index(sspine_skeleton skeleton_id, int index) { + return _sspine_iktarget(skeleton_id.id, index); +} + +SOKOL_API_IMPL bool sspine_iktarget_valid(sspine_iktarget iktarget) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(iktarget.skeleton_id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + return (iktarget.index >= 0) && (iktarget.index < skeleton->sp_skel_data->ikConstraintsCount); + } + return false; +} + +SOKOL_API_IMPL bool sspine_iktarget_equal(sspine_iktarget first, sspine_iktarget second) { + return (first.skeleton_id == second.skeleton_id) && (first.index == second.index); +} + +SOKOL_API_IMPL sspine_iktarget_info sspine_get_iktarget_info(sspine_iktarget iktarget) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_iktarget_info res; + _sspine_clear(&res, sizeof(res)); + const spIkConstraintData* ik_data = _sspine_lookup_ikconstraint_data(iktarget.skeleton_id, iktarget.index); + if (ik_data) { + res.valid = true; + res.index = iktarget.index; + res.target_bone = _sspine_bone(iktarget.skeleton_id, ik_data->target->index); + res.name = _sspine_string(ik_data->name); + if (res.name.truncated) { + _SSPINE_WARN(STRING_TRUNCATED); + } + } + return res; +} + +SOKOL_API_IMPL void sspine_set_iktarget_world_pos(sspine_instance instance_id, sspine_iktarget iktarget, sspine_vec2 world_pos) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + spIkConstraint* ik_data = _sspine_lookup_ikconstraint(instance_id.id, iktarget.skeleton_id, iktarget.index); + if (ik_data) { + spBone* bone = ik_data->target; + spBone* parent_bone = bone->parent; + if (parent_bone) { + spBone_worldToLocal(parent_bone, world_pos.x, world_pos.y, &bone->x, &bone->y); + } + } +} + +SOKOL_API_IMPL int sspine_num_skins(sspine_skeleton skeleton_id) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + return skeleton->sp_skel_data->skinsCount; + } + return 0; +} + +SOKOL_API_IMPL sspine_skin sspine_skin_by_name(sspine_skeleton skeleton_id, const char* name) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + SOKOL_ASSERT(name); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skeleton_id.id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + SOKOL_ASSERT(skeleton->sp_skel_data->skins); + // spSkin has no embedded index, so we need to loop over the skins + for (int i = 0; i < skeleton->sp_skel_data->skinsCount; i++) { + SOKOL_ASSERT(skeleton->sp_skel_data->skins[i]); + SOKOL_ASSERT(skeleton->sp_skel_data->skins[i]->name); + if (0 == strcmp(skeleton->sp_skel_data->skins[i]->name, name)) { + return _sspine_skin(skeleton_id.id, i); + } + } + } + return _sspine_skin(0, 0); +} + +SOKOL_API_IMPL sspine_skin sspine_skin_by_index(sspine_skeleton skeleton_id, int index) { + return _sspine_skin(skeleton_id.id, index); +} + +SOKOL_API_IMPL bool sspine_skin_valid(sspine_skin skin) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_skeleton_t* skeleton = _sspine_lookup_skeleton(skin.skeleton_id); + if (_sspine_skeleton_and_deps_valid(skeleton)) { + SOKOL_ASSERT(skeleton->sp_skel_data); + return (skin.index >= 0) && (skin.index < skeleton->sp_skel_data->skinsCount); + } + return false; +} + +SOKOL_API_IMPL bool sspine_skin_equal(sspine_skin first, sspine_skin second) { + return (first.skeleton_id == second.skeleton_id) && (first.index == second.index); +} + +SOKOL_API_IMPL sspine_skin_info sspine_get_skin_info(sspine_skin skin) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + sspine_skin_info res; + _sspine_clear(&res, sizeof(res)); + const spSkin* sp_skin = _sspine_lookup_skin(skin.skeleton_id, skin.index); + if (sp_skin) { + res.valid = true; + res.index = skin.index; + res.name = _sspine_string(sp_skin->name); + if (res.name.truncated) { + _SSPINE_WARN(STRING_TRUNCATED); + } + } + return res; +} + +SOKOL_SPINE_API_DECL void sspine_set_skin(sspine_instance instance_id, sspine_skin skin) { + SOKOL_ASSERT(_SSPINE_INIT_COOKIE == _sspine.init_cookie); + _sspine_instance_t* instance = _sspine_lookup_instance(instance_id.id); + if (_sspine_instance_and_deps_valid(instance) && (instance->skel.id == skin.skeleton_id)) { + SOKOL_ASSERT(instance->sp_skel); + SOKOL_ASSERT(instance->sp_anim_state); + // clear any currently set skinset + instance->skinset.id = SSPINE_INVALID_ID; + instance->skinset.ptr = 0; + spSkin* sp_skin = _sspine_lookup_skin(skin.skeleton_id, skin.index); + if (sp_skin) { + spSkeleton_setSkin(instance->sp_skel, 0); + spSkeleton_setSkin(instance->sp_skel, sp_skin); + spSkeleton_setSlotsToSetupPose(instance->sp_skel); + spAnimationState_apply(instance->sp_anim_state, instance->sp_skel); + } + } +} + +#endif // SOKOL_SPINE_IMPL +#endif // SOKOL_SPINE_INCLUDED diff --git a/source/engine/thirdparty/sokol/sokol_time.h b/source/engine/thirdparty/sokol/sokol_time.h new file mode 100644 index 0000000..2d4d456 --- /dev/null +++ b/source/engine/thirdparty/sokol/sokol_time.h @@ -0,0 +1,319 @@ +#if defined(SOKOL_IMPL) && !defined(SOKOL_TIME_IMPL) +#define SOKOL_TIME_IMPL +#endif +#ifndef SOKOL_TIME_INCLUDED +/* + sokol_time.h -- simple cross-platform time measurement + + Project URL: https://github.com/floooh/sokol + + Do this: + #define SOKOL_IMPL or + #define SOKOL_TIME_IMPL + before you include this file in *one* C or C++ file to create the + implementation. + + Optionally provide the following defines with your own implementations: + SOKOL_ASSERT(c) - your own assert macro (default: assert(c)) + SOKOL_TIME_API_DECL - public function declaration prefix (default: extern) + SOKOL_API_DECL - same as SOKOL_TIME_API_DECL + SOKOL_API_IMPL - public function implementation prefix (default: -) + + If sokol_time.h is compiled as a DLL, define the following before + including the declaration or implementation: + + SOKOL_DLL + + On Windows, SOKOL_DLL will define SOKOL_TIME_API_DECL as __declspec(dllexport) + or __declspec(dllimport) as needed. + + void stm_setup(); + Call once before any other functions to initialize sokol_time + (this calls for instance QueryPerformanceFrequency on Windows) + + uint64_t stm_now(); + Get current point in time in unspecified 'ticks'. The value that + is returned has no relation to the 'wall-clock' time and is + not in a specific time unit, it is only useful to compute + time differences. + + uint64_t stm_diff(uint64_t new, uint64_t old); + Computes the time difference between new and old. This will always + return a positive, non-zero value. + + uint64_t stm_since(uint64_t start); + Takes the current time, and returns the elapsed time since start + (this is a shortcut for "stm_diff(stm_now(), start)") + + uint64_t stm_laptime(uint64_t* last_time); + This is useful for measuring frame time and other recurring + events. It takes the current time, returns the time difference + to the value in last_time, and stores the current time in + last_time for the next call. If the value in last_time is 0, + the return value will be zero (this usually happens on the + very first call). + + uint64_t stm_round_to_common_refresh_rate(uint64_t duration) + This oddly named function takes a measured frame time and + returns the closest "nearby" common display refresh rate frame duration + in ticks. If the input duration isn't close to any common display + refresh rate, the input duration will be returned unchanged as a fallback. + The main purpose of this function is to remove jitter/inaccuracies from + measured frame times, and instead use the display refresh rate as + frame duration. + NOTE: for more robust frame timing, consider using the + sokol_app.h function sapp_frame_duration() + + Use the following functions to convert a duration in ticks into + useful time units: + + double stm_sec(uint64_t ticks); + double stm_ms(uint64_t ticks); + double stm_us(uint64_t ticks); + double stm_ns(uint64_t ticks); + Converts a tick value into seconds, milliseconds, microseconds + or nanoseconds. Note that not all platforms will have nanosecond + or even microsecond precision. + + Uses the following time measurement functions under the hood: + + Windows: QueryPerformanceFrequency() / QueryPerformanceCounter() + MacOS/iOS: mach_absolute_time() + emscripten: emscripten_get_now() + Linux+others: clock_gettime(CLOCK_MONOTONIC) + + zlib/libpng license + + Copyright (c) 2018 Andre Weissflog + + This software is provided 'as-is', without any express or implied warranty. + In no event will the authors be held liable for any damages arising from the + use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ +#define SOKOL_TIME_INCLUDED (1) +#include + +#if defined(SOKOL_API_DECL) && !defined(SOKOL_TIME_API_DECL) +#define SOKOL_TIME_API_DECL SOKOL_API_DECL +#endif +#ifndef SOKOL_TIME_API_DECL +#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_TIME_IMPL) +#define SOKOL_TIME_API_DECL __declspec(dllexport) +#elif defined(_WIN32) && defined(SOKOL_DLL) +#define SOKOL_TIME_API_DECL __declspec(dllimport) +#else +#define SOKOL_TIME_API_DECL extern +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +SOKOL_TIME_API_DECL void stm_setup(void); +SOKOL_TIME_API_DECL uint64_t stm_now(void); +SOKOL_TIME_API_DECL uint64_t stm_diff(uint64_t new_ticks, uint64_t old_ticks); +SOKOL_TIME_API_DECL uint64_t stm_since(uint64_t start_ticks); +SOKOL_TIME_API_DECL uint64_t stm_laptime(uint64_t* last_time); +SOKOL_TIME_API_DECL uint64_t stm_round_to_common_refresh_rate(uint64_t frame_ticks); +SOKOL_TIME_API_DECL double stm_sec(uint64_t ticks); +SOKOL_TIME_API_DECL double stm_ms(uint64_t ticks); +SOKOL_TIME_API_DECL double stm_us(uint64_t ticks); +SOKOL_TIME_API_DECL double stm_ns(uint64_t ticks); + +#ifdef __cplusplus +} /* extern "C" */ +#endif +#endif // SOKOL_TIME_INCLUDED + +/*-- IMPLEMENTATION ----------------------------------------------------------*/ +#ifdef SOKOL_TIME_IMPL +#define SOKOL_TIME_IMPL_INCLUDED (1) +#include /* memset */ + +#ifndef SOKOL_API_IMPL + #define SOKOL_API_IMPL +#endif +#ifndef SOKOL_ASSERT + #include + #define SOKOL_ASSERT(c) assert(c) +#endif +#ifndef _SOKOL_PRIVATE + #if defined(__GNUC__) || defined(__clang__) + #define _SOKOL_PRIVATE __attribute__((unused)) static + #else + #define _SOKOL_PRIVATE static + #endif +#endif + +#if defined(_WIN32) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +typedef struct { + uint32_t initialized; + LARGE_INTEGER freq; + LARGE_INTEGER start; +} _stm_state_t; +#elif defined(__APPLE__) && defined(__MACH__) +#include +typedef struct { + uint32_t initialized; + mach_timebase_info_data_t timebase; + uint64_t start; +} _stm_state_t; +#elif defined(__EMSCRIPTEN__) +#include +typedef struct { + uint32_t initialized; + double start; +} _stm_state_t; +#else /* anything else, this will need more care for non-Linux platforms */ +#ifdef ESP8266 +// On the ESP8266, clock_gettime ignores the first argument and CLOCK_MONOTONIC isn't defined +#define CLOCK_MONOTONIC 0 +#endif +#include +typedef struct { + uint32_t initialized; + uint64_t start; +} _stm_state_t; +#endif +static _stm_state_t _stm; + +/* prevent 64-bit overflow when computing relative timestamp + see https://gist.github.com/jspohr/3dc4f00033d79ec5bdaf67bc46c813e3 +*/ +#if defined(_WIN32) || (defined(__APPLE__) && defined(__MACH__)) +_SOKOL_PRIVATE int64_t _stm_int64_muldiv(int64_t value, int64_t numer, int64_t denom) { + int64_t q = value / denom; + int64_t r = value % denom; + return q * numer + r * numer / denom; +} +#endif + +SOKOL_API_IMPL void stm_setup(void) { + memset(&_stm, 0, sizeof(_stm)); + _stm.initialized = 0xABCDABCD; + #if defined(_WIN32) + QueryPerformanceFrequency(&_stm.freq); + QueryPerformanceCounter(&_stm.start); + #elif defined(__APPLE__) && defined(__MACH__) + mach_timebase_info(&_stm.timebase); + _stm.start = mach_absolute_time(); + #elif defined(__EMSCRIPTEN__) + _stm.start = emscripten_get_now(); + #else + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + _stm.start = (uint64_t)ts.tv_sec*1000000000 + (uint64_t)ts.tv_nsec; + #endif +} + +SOKOL_API_IMPL uint64_t stm_now(void) { + SOKOL_ASSERT(_stm.initialized == 0xABCDABCD); + uint64_t now; + #if defined(_WIN32) + LARGE_INTEGER qpc_t; + QueryPerformanceCounter(&qpc_t); + now = (uint64_t) _stm_int64_muldiv(qpc_t.QuadPart - _stm.start.QuadPart, 1000000000, _stm.freq.QuadPart); + #elif defined(__APPLE__) && defined(__MACH__) + const uint64_t mach_now = mach_absolute_time() - _stm.start; + now = (uint64_t) _stm_int64_muldiv((int64_t)mach_now, (int64_t)_stm.timebase.numer, (int64_t)_stm.timebase.denom); + #elif defined(__EMSCRIPTEN__) + double js_now = emscripten_get_now() - _stm.start; + now = (uint64_t) (js_now * 1000000.0); + #else + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + now = ((uint64_t)ts.tv_sec*1000000000 + (uint64_t)ts.tv_nsec) - _stm.start; + #endif + return now; +} + +SOKOL_API_IMPL uint64_t stm_diff(uint64_t new_ticks, uint64_t old_ticks) { + if (new_ticks > old_ticks) { + return new_ticks - old_ticks; + } + else { + return 1; + } +} + +SOKOL_API_IMPL uint64_t stm_since(uint64_t start_ticks) { + return stm_diff(stm_now(), start_ticks); +} + +SOKOL_API_IMPL uint64_t stm_laptime(uint64_t* last_time) { + SOKOL_ASSERT(last_time); + uint64_t dt = 0; + uint64_t now = stm_now(); + if (0 != *last_time) { + dt = stm_diff(now, *last_time); + } + *last_time = now; + return dt; +} + +// first number is frame duration in ns, second number is tolerance in ns, +// the resulting min/max values must not overlap! +static const uint64_t _stm_refresh_rates[][2] = { + { 16666667, 1000000 }, // 60 Hz: 16.6667 +- 1ms + { 13888889, 250000 }, // 72 Hz: 13.8889 +- 0.25ms + { 13333333, 250000 }, // 75 Hz: 13.3333 +- 0.25ms + { 11764706, 250000 }, // 85 Hz: 11.7647 +- 0.25 + { 11111111, 250000 }, // 90 Hz: 11.1111 +- 0.25ms + { 10000000, 500000 }, // 100 Hz: 10.0000 +- 0.5ms + { 8333333, 500000 }, // 120 Hz: 8.3333 +- 0.5ms + { 6944445, 500000 }, // 144 Hz: 6.9445 +- 0.5ms + { 4166667, 1000000 }, // 240 Hz: 4.1666 +- 1ms + { 0, 0 }, // keep the last element always at zero +}; + +SOKOL_API_IMPL uint64_t stm_round_to_common_refresh_rate(uint64_t ticks) { + uint64_t ns; + int i = 0; + while (0 != (ns = _stm_refresh_rates[i][0])) { + uint64_t tol = _stm_refresh_rates[i][1]; + if ((ticks > (ns - tol)) && (ticks < (ns + tol))) { + return ns; + } + i++; + } + // fallthough: didn't fit into any buckets + return ticks; +} + +SOKOL_API_IMPL double stm_sec(uint64_t ticks) { + return (double)ticks / 1000000000.0; +} + +SOKOL_API_IMPL double stm_ms(uint64_t ticks) { + return (double)ticks / 1000000.0; +} + +SOKOL_API_IMPL double stm_us(uint64_t ticks) { + return (double)ticks / 1000.0; +} + +SOKOL_API_IMPL double stm_ns(uint64_t ticks) { + return (double)ticks; +} +#endif /* SOKOL_TIME_IMPL */ + diff --git a/source/engine/thirdparty/tinyphysicsengine.h b/source/engine/thirdparty/tinyphysicsengine.h new file mode 100644 index 0000000..ff0e8c1 --- /dev/null +++ b/source/engine/thirdparty/tinyphysicsengine.h @@ -0,0 +1,3303 @@ +#ifndef _TINYPHYSICSENGINE_H +#define _TINYPHYSICSENGINE_H + +/** + tinyphysicsengine (TPE) + + Simple/suckless header-only hybrid 3D physics engine with no floating point, + only 32 bit int arithmetic, similar to e.g. small3dlib. + + Conventions and formats are the same or similar to those of small3dlib so as + to make them easily integrate with each other. + + The library works with bodies made of spheres connected by elastic springs, + i.e. soft bodies which however behave as "stiff" bodies by default and can + be used to fake rigid body physics as well. Bodies are placed in environemnts + specified by a distance function that allows to implement any mathematical + shape. + + Orientations/rotations are in extrinsic Euler angles in the ZXY order (by Z, + then by X, then by Y), if not mentioned otherwise. Angles are in TPE_Units, + TPE_FRACTIONS_PER_UNIT is full angle (2 PI). Sometimes rotations can also be + specified in the "about axis" format: here the object is rotated CW by given + axis by an angle that's specified by the magnitude of the vector. + + Where it matters (e.g. rotations about axes) we consider a left-handed coord. + system (x right, y up, z forward). + + ------------------------------------------------------------------------------ + + by drummyfish, 2022 + + version 0.8d + + This work's goal is to never be encumbered by any exclusive intellectual + property rights. The work is therefore provided under CC0 1.0 + (https://creativecommons.org/publicdomain/zero/1.0/) + additional WAIVER OF + ALL INTELLECTUAL PROPERTY RIGHTS that waives the rest of intellectual property + rights not already waived by CC0 1.0. The WAIVER OF ALL INTELLECTUAL PROPERTY + RGHTS is as follows: + + Each contributor to this work agrees that they waive any exclusive rights, + including but not limited to copyright, patents, trademark, trade dress, + industrial design, plant varieties and trade secrets, to any and all ideas, + concepts, processes, discoveries, improvements and inventions conceived, + discovered, made, designed, researched or developed by the contributor either + solely or jointly with others, which relate to this work or result from this + work. Should any waiver of such right be judged legally invalid or + ineffective under applicable law, the contributor hereby grants to each + affected person a royalty-free, non transferable, non sublicensable, non + exclusive, irrevocable and unconditional license to this right. +*/ + +#include + +typedef int32_t TPE_Unit; ///< Basic fixed point unit type. +typedef int16_t TPE_UnitReduced; ///< Like TPE_Unit but saving space + +#define TPE_FRACTIONS_PER_UNIT 512 ///< one fixed point unit, don't change +#define TPE_F TPE_FRACTIONS_PER_UNIT ///< short for TPE_FRACTIONS_PER_UNIT +#define TPE_JOINT_SIZE_MULTIPLIER 32 ///< joint size is scaled (size saving) + +#define TPE_INFINITY 2147483647 + +#define TPE_JOINT_SIZE(joint) ((joint).sizeDivided * TPE_JOINT_SIZE_MULTIPLIER) + +#ifndef TPE_APPROXIMATE_LENGTH + #define TPE_APPROXIMATE_LENGTH 0 /**< whether or not use length/distance + approximation rather than exact + calculation (1 is faster but less + accurate), beware of possible lower + stability */ +#endif + +#if !TPE_APPROXIMATE_LENGTH + #define TPE_DISTANCE TPE_dist + #define TPE_LENGTH TPE_vec3Len +#else + #define TPE_DISTANCE TPE_distApprox + #define TPE_LENGTH TPE_vec3LenApprox +#endif + +#ifndef TPE_LOG + #define TPE_LOG(s) ; // redefine to some print function to show debug logs +#endif + +#ifndef TPE_LOW_SPEED +/** Speed, in TPE_Units per ticks, that is considered low (used e.g. for auto + deactivation of bodies). */ + #define TPE_LOW_SPEED 30 +#endif + +#ifndef TPE_RESHAPE_TENSION_LIMIT +/** Tension limit, in TPE_Units, after which a non-soft body will be reshaped. + Smaller number will keep more stable shapes but will cost more performance. */ + #define TPE_RESHAPE_TENSION_LIMIT 20 +#endif + +#ifndef TPE_RESHAPE_ITERATIONS +/** How many iterations of reshaping will be performed by the step function if + the body's shape needs to be reshaped. Greater number will keep shapes more + stable but will cost some performance. */ + #define TPE_RESHAPE_ITERATIONS 3 +#endif + +#ifndef TPE_DEACTIVATE_AFTER +/** After how many ticks of low speed should a body be disabled. This mustn't + be greater than 255. */ + #define TPE_DEACTIVATE_AFTER 128 +#endif + +#ifndef TPE_LIGHT_DEACTIVATION +/** When a body is activated by a collision, its deactivation counter will be + set to this value, i.e. after a collision the body will be prone to deactivate + sooner than normally. This is to handle situations with many bodies touching + each other that would normally keep activating each other, never coming to + rest. */ + #define TPE_LIGHT_DEACTIVATION \ + (TPE_DEACTIVATE_AFTER - TPE_DEACTIVATE_AFTER / 10) +#endif + +#ifndef TPE_TENSION_ACCELERATION_DIVIDER +/** Number by which the base acceleration (TPE_FRACTIONS_PER_UNIT per tick + squared) caused by the connection tension will be divided. This should be + power of 2. */ + #define TPE_TENSION_ACCELERATION_DIVIDER 32 +#endif + +#ifndef TPE_TENSION_ACCELERATION_THRESHOLD +/** Limit within which acceleration caused by connection tension won't be + applied. */ + #define TPE_TENSION_ACCELERATION_THRESHOLD 5 +#endif + +#ifndef TPE_TENSION_GREATER_ACCELERATION_THRESHOLD +/** Connection tension threshold after which twice as much acceleration will + be applied. This helps prevent diverting joints that are "impaled" by + environment.*/ + #define TPE_TENSION_GREATER_ACCELERATION_THRESHOLD \ + (TPE_TENSION_ACCELERATION_THRESHOLD * 3) +#endif + +#ifndef TPE_COLLISION_RESOLUTION_ITERATIONS +/** Maximum number of iterations to try to uncollide two colliding bodies. */ + #define TPE_COLLISION_RESOLUTION_ITERATIONS 16 +#endif + +#ifndef TPE_COLLISION_RESOLUTION_MARGIN +/** Margin, in TPE_Units, by which a body will be shifted back to get out of + collision. */ + #define TPE_COLLISION_RESOLUTION_MARGIN (TPE_F / 64) +#endif + +#ifndef TPE_NONROTATING_COLLISION_RESOLVE_ATTEMPTS +/** Number of times a collision of nonrotating bodies with environment will be + attempted to resolve. This probably won't have great performance implications + as complex collisions of this kind should be relatively rare. */ + #define TPE_NONROTATING_COLLISION_RESOLVE_ATTEMPTS 8 +#endif + +#ifndef TPE_APPROXIMATE_NET_SPEED +/** Whether to use a fast approximation for calculating net speed of bodies + which increases performance a bit. */ + #define TPE_APPROXIMATE_NET_SPEED 1 +#endif + +#define TPE_PRINTF_VEC3(v) printf("[%d %d %d]",(v).x,(v).y,(v).z); + +typedef struct +{ + TPE_Unit x; + TPE_Unit y; + TPE_Unit z; +} TPE_Vec3; + +/** Keeps given point within specified axis-aligned box. This can be used e.g. + to smooth rendered movement of jittering physics bodies. */ +TPE_Vec3 TPE_vec3KeepWithinBox(TPE_Vec3 point, TPE_Vec3 boxCenter, + TPE_Vec3 boxMaxVect); + +TPE_Vec3 TPE_vec3KeepWithinDistanceBand(TPE_Vec3 point, TPE_Vec3 center, + TPE_Unit minDistance, TPE_Unit maxDistance); + +TPE_Vec3 TPE_vec3(TPE_Unit x, TPE_Unit y, TPE_Unit z); +TPE_Vec3 TPE_vec3Minus(TPE_Vec3 v1, TPE_Vec3 v2); +TPE_Vec3 TPE_vec3Plus(TPE_Vec3 v1, TPE_Vec3 v2); +TPE_Vec3 TPE_vec3Cross(TPE_Vec3 v1, TPE_Vec3 v2); +TPE_Vec3 TPE_vec3Project(TPE_Vec3 v, TPE_Vec3 base); +TPE_Vec3 TPE_vec3ProjectNormalized(TPE_Vec3 v, TPE_Vec3 baseNormalized); +TPE_Vec3 TPE_vec3Times(TPE_Vec3 v, TPE_Unit units); +TPE_Vec3 TPE_vec3TimesPlain(TPE_Vec3 v, TPE_Unit q); +TPE_Vec3 TPE_vec3Normalized(TPE_Vec3 v); + +TPE_Unit TPE_vec3Dot(TPE_Vec3 v1, TPE_Vec3 v2); +TPE_Unit TPE_vec3Len(TPE_Vec3 v); +TPE_Unit TPE_vec3LenApprox(TPE_Vec3 v); + +/** Returns an angle in TPE_Units (see angle conventions) of a 2D vector with + the X axis, CCW. */ +TPE_Unit TPE_vec2Angle(TPE_Unit x, TPE_Unit y); + +/** Keeps given value within specified range. This can be used e.g. for movement + smoothing. */ +TPE_Unit TPE_keepInRange(TPE_Unit x, TPE_Unit xMin, TPE_Unit xMax); + +static inline TPE_Unit TPE_abs(TPE_Unit x); +static inline TPE_Unit TPE_max(TPE_Unit a, TPE_Unit b); +static inline TPE_Unit TPE_min(TPE_Unit a, TPE_Unit b); +static inline TPE_Unit TPE_nonZero(TPE_Unit x); +static inline TPE_Unit TPE_dist(TPE_Vec3 p1, TPE_Vec3 p2); +static inline TPE_Unit TPE_distApprox(TPE_Vec3 p1, TPE_Vec3 p2); +TPE_Unit TPE_sqrt(TPE_Unit x); + +/** Compute sine, TPE_FRACTIONS_PER_UNIT as argument corresponds to 2 * PI + radians. Returns a number from -TPE_FRACTIONS_PER_UNIT to + TPE_FRACTIONS_PER_UNIT. */ +TPE_Unit TPE_sin(TPE_Unit x); +TPE_Unit TPE_cos(TPE_Unit x); +TPE_Unit TPE_atan(TPE_Unit x); + +typedef struct +{ + TPE_Vec3 position; + TPE_UnitReduced velocity[3]; ///< not TPE_Vec3 to save size + uint8_t sizeDivided; /**< size (radius, ...), for saving space divided by + TPE_JOINT_SIZE_MULTIPLIER */ +} TPE_Joint; + +typedef struct +{ + uint8_t joint1; + uint8_t joint2; + uint16_t length; ///< connection's preferred length, uint16_t saves space +} TPE_Connection; + +#define TPE_BODY_FLAG_DEACTIVATED 1 /**< Not being updated due to low energy, + "sleeping", will be woken by + collisions etc. */ +#define TPE_BODY_FLAG_NONROTATING 2 /**< When set, the body won't rotate, + will only move linearly. Here the + velocity of the body's first joint + is the velocity of the whole + body. */ +#define TPE_BODY_FLAG_DISABLED 4 /**< Disabled, not taking part in + simulation. */ +#define TPE_BODY_FLAG_SOFT 8 /**< Soft connections, effort won't be + made to keep the body's shape. */ +#define TPE_BODY_FLAG_SIMPLE_CONN 16 /**< Simple connections, don't zero out + antagonist forces or apply + connection friction, can increase + performance. */ +#define TPE_BODY_FLAG_ALWAYS_ACTIVE 32 /**< Will never deactivate due to low + energy. */ + +/** Function used for defining static environment, working similarly to an SDF + (signed distance function). The parameters are: 3D point P, max distance D. + The function should behave like this: if P is inside the solid environment + volume, P will be returned; otherwise closest point (by Euclidean distance) to + the solid environment volume from P will be returned, except for a case when + this closest point would be further away than D, in which case any arbitrary + point further away than D may be returned (this allows for optimizations). */ +typedef TPE_Vec3 (*TPE_ClosestPointFunction)(TPE_Vec3, TPE_Unit); + +/** Function that can be used as a joint-joint or joint-environment collision + callback, parameters are following: body1 index, joint1 index, body2 index, + joint2 index, collision world position. If body1 index is the same as body1 + index, then collision type is body-environment, otherwise it is body-body + type. The function has to return either 1 if the collision is to be allowed + or 0 if it is to be discarded. This can besides others be used to disable + collisions between some bodies. */ +typedef uint8_t (*TPE_CollisionCallback)(uint16_t, uint16_t, uint16_t, uint16_t, + TPE_Vec3); + +/** Function used by the debug drawing functions to draw individual pixels to + the screen. The parameters are following: pixel x, pixel y, pixel color. */ +typedef void (*TPE_DebugDrawFunction)(uint16_t, uint16_t, uint8_t); + +/** Physics body made of spheres (each of same weight but possibly different + radia) connected by elastic springs. */ +typedef struct +{ + TPE_Joint *joints; + uint8_t jointCount; + TPE_Connection *connections; + uint8_t connectionCount; + TPE_UnitReduced jointMass; ///< mass of a single joint + TPE_UnitReduced friction; ///< friction of each joint + TPE_UnitReduced elasticity; ///< elasticity of each joint + uint8_t flags; + uint8_t deactivateCount; +} TPE_Body; + +typedef struct +{ + TPE_Body *bodies; + uint16_t bodyCount; + TPE_ClosestPointFunction environmentFunction; + TPE_CollisionCallback collisionCallback; +} TPE_World; + +/** Tests the mathematical validity of given closest point function (function + representing the physics environment), i.e. whether for example approaching + some closest point in a straight line keeps approximately the same closest + point. Note that this function may take a long time to complete, especially + with higher gridResolution values and more complex environment functions. You + should use this function to test your environment function, especially if you + create functions for your own shapes etc. The cornerFrom and cornerTo points + are corners of an axis-aligned box within which testing will take place, + gridResolution defines numbers of points (i.e. step length) along each + dimension to test (recommended e.g. 64), allowedError says error within which + points will be considered the same (recommended range approx. 10 to 200). If + testing is successful, 1 is returned, otherwise 0 is returned and the point + around which error was detected is returned in errorPoint (unless the pointer + is 0 in which case it is ignored). */ +uint8_t TPE_testClosestPointFunction(TPE_ClosestPointFunction f, + TPE_Vec3 cornerFrom, TPE_Vec3 cornerTo, uint8_t gridResolution, + TPE_UnitReduced allowedError, TPE_Vec3 *errorPoint); + +void TPE_bodyInit(TPE_Body *body, + TPE_Joint *joints, uint8_t jointCount, + TPE_Connection *connections, uint8_t connectionCount, + TPE_Unit mass); + +void TPE_worldInit(TPE_World *world, + TPE_Body *bodies, uint16_t bodyCount, + TPE_ClosestPointFunction environmentFunction); + +/** Gets orientation (rotation) of a body from a position of three of its + joints. The vector from joint1 to joint2 is considered the body's forward + direction, the vector from joint1 to joint3 its right direction. The returned + rotation is in Euler angles (see rotation conventions). */ +TPE_Vec3 TPE_bodyGetRotation(const TPE_Body *body, uint16_t joint1, + uint16_t joint2, uint16_t joint3); + +void TPE_vec3Normalize(TPE_Vec3 *v); + +/** Rotates a 3D point by given Euler angle rotation (see rotation + conventions). */ +TPE_Vec3 TPE_pointRotate(TPE_Vec3 point, TPE_Vec3 rotation); + +/** Returns an inverse rotation to given rotation, in Euler angles (see rotation + conventions). */ +TPE_Vec3 TPE_rotationInverse(TPE_Vec3 rotation); + +/** Returns a connection tension, i.e. a signed percentage difference against + desired length (TPE_FRACTIONS_PER_UNIT means 100%). */ +static inline TPE_Unit TPE_connectionTension(TPE_Unit length, + TPE_Unit desiredLength); + +/** Rotates a rotation specified in Euler angles by given axis + angle (see + rotation conventions). Returns a rotation in Eurler angles. */ +TPE_Vec3 TPE_rotationRotateByAxis(TPE_Vec3 rotation, TPE_Vec3 rotationByAxis); + +/** Computes the formula of a 1D collision of rigid bodies. */ +void TPE_getVelocitiesAfterCollision(TPE_Unit *v1, TPE_Unit *v2, TPE_Unit m1, + TPE_Unit m2, TPE_Unit elasticity); + +/** Computes orientation/rotation (see docs for orientation format) from two + vectors (which should be at least close to being perpendicular and do NOT + need to be normalized). This can be used to determine orientation of a body + from a relative position of its joints. */ +TPE_Vec3 TPE_rotationFromVecs(TPE_Vec3 forward, TPE_Vec3 right); + +TPE_Joint TPE_joint(TPE_Vec3 position, TPE_Unit size); + +/** Mostly for internal use, resolves a potential collision of two joints in a + way that keeps the joints outside provided environment (if the function + pointer is not 0). Returns 1 if joints collided or 0 otherwise. */ +uint8_t TPE_jointsResolveCollision(TPE_Joint *j1, TPE_Joint *j2, + TPE_Unit mass1, TPE_Unit mass2, TPE_Unit elasticity, TPE_Unit friction, + TPE_ClosestPointFunction env); + +/** Mostly for internal use, tests and potentially resolves a collision between + a joint and environment, returns 0 if no collision happened, 1 if it happened + and was resolved normally and 2 if it couldn't be resolved normally. */ +uint8_t TPE_jointEnvironmentResolveCollision(TPE_Joint *joint, TPE_Unit + elasticity, TPE_Unit friction, TPE_ClosestPointFunction env); + +/** Tests whether a body is currently colliding with the environment. */ +uint8_t TPE_bodyEnvironmentCollide(const TPE_Body *body, + TPE_ClosestPointFunction env); + +/** Mostly for internal use, tests and potentially resolves a collision of a + body with the environment, returns 1 if collision happened or 0 otherwise. */ +uint8_t TPE_bodyEnvironmentResolveCollision(TPE_Body *body, + TPE_ClosestPointFunction env); + +TPE_Vec3 TPE_bodyGetLinearVelocity(const TPE_Body *body); + +/** Computes the minimum bounding box of given body. */ +void TPE_bodyGetAABB(const TPE_Body *body, TPE_Vec3 *vMin, TPE_Vec3 *vMax); + +/** Computes a bounding sphere of a body which is not minimal but faster to + compute than the minimum bounding sphere. */ +void TPE_bodyGetFastBSphere(const TPE_Body *body, TPE_Vec3 *center, + TPE_Unit *radius); + +/** Computes the minimum bounding sphere of a body (there is another function + for a faster approximate bounding sphere). */ +void TPE_bodyGetBSphere(const TPE_Body *body, TPE_Vec3 *center, + TPE_Unit *radius); + +uint8_t TPE_checkOverlapAABB(TPE_Vec3 v1Min, TPE_Vec3 v1Max, TPE_Vec3 v2Min, + TPE_Vec3 v2Max); + +/** Mostly for internal use, checks and potentiall resolves collision of two + bodies so as to keep them outside given environment. Returns 1 if collision + happened or 0 otherwise. */ +uint8_t TPE_bodiesResolveCollision(TPE_Body *b1, TPE_Body *b2, + TPE_ClosestPointFunction env); + +/** Pins a joint of a body to specified location in space (sets its location + and zeros its velocity). */ +void TPE_jointPin(TPE_Joint *joint, TPE_Vec3 position); + +/** "Fakes" a rotation of a moving sphere by rotating it in the direction of + its movement; this can create the illusion of the sphere actually rotating + due to friction even if the physics sphere object (a body with a single joint) + isn't rotating at all. Returns a rotation in the "about axis" format (see + library conventions). */ +TPE_Vec3 TPE_fakeSphereRotation(TPE_Vec3 position1, TPE_Vec3 position2, + TPE_Unit radius); + +/** Casts a ray against environment and returns the closest hit of a surface. If + no surface was hit, a vector with all elements equal to TPE_INFINITY will be + returned. The function internally works differently for outside rays (rays + cast from the outside of the environment) and inside rays. Outside rays can + be traced with raymarching and will be processed very quickly and precisely; + in this case if any intersection is found, the function will try to return a + point outside (not guaranteed) the environment that's just in front of the hit + surface. Inside rays are difficult and slow to trace because environment + function won't provide distance, so the results aren't guaranteed to be + precise (the ray may miss some intersections); here rays will be traced by + given step (insideStepSize) and eventually iterated a bit towards the + intersection -- if any intersection is found, the function will try to return + a point inside (not guaranteed) the environment just before the hit + surface. */ +TPE_Vec3 TPE_castEnvironmentRay(TPE_Vec3 rayPos, TPE_Vec3 rayDir, + TPE_ClosestPointFunction environment, TPE_Unit insideStepSize, + TPE_Unit rayMarchMaxStep, uint32_t maxSteps); + +/** Casts a ray against bodies in a world (ignoring the environment), returns + the position of the closest hit as well as the hit body's index in bodyIndex + (unless the bodyIndex pointer is 0 in which case it is ignored). Similarly + with jointIndex. If no hit is found a vector with all elements equal to + TPE_INFINITY will be returned and bodyIndex will be -1. A specific body can be + excluded with excludeBody (negative value will just make this parameter + ignored). */ +TPE_Vec3 TPE_castBodyRay(TPE_Vec3 rayPos, TPE_Vec3 rayDir, int16_t excludeBody, + const TPE_World *world, int16_t *bodyIndex, int16_t *jointIndex); + +/** Performs one step (tick, frame, ...) of the physics world simulation + including updating positions and velocities of bodies, collision detection and + resolution, possible reshaping or deactivation of inactive bodies etc. The + time length of the step is relative to all other units but it's ideal if it is + 1/30th of a second. */ +void TPE_worldStep(TPE_World *world); + +void TPE_worldDeactivateAll(TPE_World *world); +void TPE_worldActivateAll(TPE_World *world); + +TPE_Unit TPE_worldGetNetSpeed(const TPE_World *world); +TPE_Unit TPE_bodyGetNetSpeed(const TPE_Body *body); +TPE_Unit TPE_bodyGetAverageSpeed(const TPE_Body *body); +void TPE_bodyMultiplyNetSpeed(TPE_Body *body, TPE_Unit factor); +void TPE_bodyLimitAverageSpeed(TPE_Body *body, TPE_Unit speedMin, + TPE_Unit speedMax); + +/** Deactivates a body (puts it to sleep until another collision or force wake + up). */ +void TPE_bodyDeactivate(TPE_Body *body); + +static inline uint8_t TPE_bodyIsActive(const TPE_Body *body); + +/** Attempts to shift the joints of a soft body so that the tension of all + springs becomes zero while keeping the joints near their current position. + This function performs one iteration of the equalizing algorithm and doesn't + guarantee a perfect solution, it may help to run multiple iterations (call + this function multiple times). */ +void TPE_bodyReshape(TPE_Body *body, TPE_ClosestPointFunction + environmentFunction); + +/** Mostly for internal use, performs some "magic" on body connections, mainly + cancelling out of velocities going against each other and also applying + connection friction in soft bodies. The strong parameter indicates if the + body is soft or not. */ +void TPE_bodyCancelOutVelocities(TPE_Body *body, uint8_t strong); + +/** Moves a body by certain offset. */ +void TPE_bodyMoveBy(TPE_Body *body, TPE_Vec3 offset); + +/** Moves a body (its center of mass) to given position. */ +void TPE_bodyMoveTo(TPE_Body *body, TPE_Vec3 position); + +/** Zeros velocities of all soft body joints. */ +void TPE_bodyStop(TPE_Body *body); + +void TPE_bodyActivate(TPE_Body *body); + +/** Adds velocity to a soft body. */ +void TPE_bodyAccelerate(TPE_Body *body, TPE_Vec3 velocity); + +void TPE_bodyApplyGravity(TPE_Body *body, TPE_Unit downwardsAccel); + +/** Adds angular velocity to a soft body. The rotation vector specifies the axis + of rotation by its direction and angular velocity by its magnitude (magnitude + of TPE_FRACTIONS_PER_UNIT will add linear velocity of TPE_FRACTIONS_PER_UNIT + per tick to a point in the distance of TPE_FRACTIONS_PER_UNIT from the + rotation axis). */ +void TPE_bodySpin(TPE_Body *body, TPE_Vec3 rotation); + +/** Same as TPE_bodySpin but additionally allows to specify the center of + the spin. */ +void TPE_bodySpinWithCenter(TPE_Body *body, TPE_Vec3 rotation, TPE_Vec3 center); + +/** Instantly rotates a body about an axis (see library conventions for + the rotation format). */ +void TPE_bodyRotateByAxis(TPE_Body *body, TPE_Vec3 rotation); + +/** Computes the center of mass of a body. This averages the position of all + joints; note that if you need, you may estimate the center of the body faster, + e.g. by taking a position of a single "center joint", or averaging just 2 + extreme points. */ +TPE_Vec3 TPE_bodyGetCenterOfMass(const TPE_Body *body); + +/** Draws a debug view of a 3D physics world using a provided pixel drawing + function. This can be used to overlay a simple visualization of the physics + objects to your main render, to spot exact borders of objects etc. The + function draws simple dotted lines and circles with different "colors" for + different types of objects (joints, connections, environemnt). camPos, camRot + and camView should match the camera settings of your main renderer. CamView.x + is horizontal resolution in pixels, camView.y is the vertical resolution, + CamView.z says the camera focal length (~FOV) in TPE_Units (0 means + orthographic projection). envGridRes is the resolution of an environment probe + grid (the function will probe points in space and draw borders of the physics + environemnt), envGridSize is the size (int TPE_Units) of the grid cell. Note + the function may be slow (reducing envGridRes can help, workable value can be + e.g. 16). */ +void TPE_worldDebugDraw(TPE_World *world, TPE_DebugDrawFunction drawFunc, + TPE_Vec3 camPos, TPE_Vec3 camRot, TPE_Vec3 camView, uint16_t envGridRes, + TPE_Unit envGridSize); + +#define TPE_DEBUG_COLOR_CONNECTION 0 +#define TPE_DEBUG_COLOR_JOINT 1 +#define TPE_DEBUG_COLOR_ENVIRONMENT 2 +#define TPE_DEBUG_COLOR_INACTIVE 3 + +uint32_t TPE_jointHash(const TPE_Joint *joint); +uint32_t TPE_connectionHash(const TPE_Connection *connection); +uint32_t TPE_bodyHash(const TPE_Body *body); + +/** Computes 32 bit hash of the world, useful for checking if two states of the + world differ. The function takes into account most of the relevant state but + possibly not all of it, for details check the code. */ +uint32_t TPE_worldHash(const TPE_World *world); + +// FUNCTIONS FOR GENERATING BODIES + +void TPE_makeBox(TPE_Joint joints[8], TPE_Connection connections[16], + TPE_Unit width, TPE_Unit depth, TPE_Unit height, TPE_Unit jointSize); +void TPE_makeCenterBox(TPE_Joint joints[9], TPE_Connection connections[18], + TPE_Unit width, TPE_Unit depth, TPE_Unit height, TPE_Unit jointSize); +void TPE_makeRect(TPE_Joint joints[4], TPE_Connection connections[6], + TPE_Unit width, TPE_Unit depth, TPE_Unit jointSize); +void TPE_makeTriangle(TPE_Joint joints[3], TPE_Connection connections[3], + TPE_Unit sideLength, TPE_Unit jointSize); +void TPE_makeCenterRect(TPE_Joint joints[5], TPE_Connection connections[8], + TPE_Unit width, TPE_Unit depth, TPE_Unit jointSize); +void TPE_makeCenterRectFull(TPE_Joint joints[5], TPE_Connection connections[10], + TPE_Unit width, TPE_Unit depth, TPE_Unit jointSize); +void TPE_make2Line(TPE_Joint joints[2], TPE_Connection connections[1], + TPE_Unit length, TPE_Unit jointSize); + +// FUNCTIONS FOR BUILDING ENVIRONMENT + +TPE_Vec3 TPE_envAABoxInside(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 size); +TPE_Vec3 TPE_envAABox(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 maxCornerVec); +TPE_Vec3 TPE_envBox(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 maxCornerVec, + TPE_Vec3 rotation); +TPE_Vec3 TPE_envSphere(TPE_Vec3 point, TPE_Vec3 center, TPE_Unit radius); +TPE_Vec3 TPE_envSphereInside(TPE_Vec3 point, TPE_Vec3 center, TPE_Unit radius); +TPE_Vec3 TPE_envHalfPlane(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 normal); +TPE_Vec3 TPE_envGround(TPE_Vec3 point, TPE_Unit height); +TPE_Vec3 TPE_envInfiniteCylinder(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 + direction, TPE_Unit radius); +TPE_Vec3 TPE_envCylinder(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 direction, + TPE_Unit radius); +TPE_Vec3 TPE_envCone(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 direction, + TPE_Unit radius); +TPE_Vec3 TPE_envLineSegment(TPE_Vec3 point, TPE_Vec3 a, TPE_Vec3 b); +TPE_Vec3 TPE_envHeightmap(TPE_Vec3 point, TPE_Vec3 center, TPE_Unit gridSize, + TPE_Unit (*heightFunction)(int32_t x, int32_t y), TPE_Unit maxDist); + +/** Environment function for triagnular prism, e.g. for ramps. The sides array + contains three 2D coordinates of points of the triangle in given plane with + respect to the center. WARNING: the points must be specified in counter + clowckwise direction! The direction var specified axis direction (0, 1 or + 2).*/ +TPE_Vec3 TPE_envAATriPrism(TPE_Vec3 point, TPE_Vec3 center, + const TPE_Unit sides[6], TPE_Unit depth, uint8_t direction); + +/* The following are helper macros for creating a union of shapes inside an + environment function and accelerating them with bounding volumes. */ + +#define TPE_ENV_START(test,point) TPE_Vec3 _pBest = test, _pTest; \ + TPE_Unit _dBest = TPE_DISTANCE(_pBest,point), _dTest; \ + (void)(_pBest); (void)(_dBest); (void)(_dTest); (void)(_pTest); // supress war + +#define TPE_ENV_NEXT(test,point) \ + { if (_pBest.x == point.x && _pBest.y == point.y && _pBest.z == point.z) \ + return _pBest; \ + _pTest = test; _dTest = TPE_DISTANCE(_pTest,point); \ + if (_dTest < _dBest) { _pBest = _pTest; _dBest = _dTest; } } + +#define TPE_ENV_END return _pBest; + +#define TPE_ENV_BCUBE_TEST(bodyBCubeC,bodyBCubeR,envBCubeC,envBCubeR) ( \ + (TPE_abs(envBCubeC.x - bodyBCubeC.x) <= ((bodyBCubeR) + (envBCubeR))) && \ + (TPE_abs(envBCubeC.y - bodyBCubeC.y) <= ((bodyBCubeR) + (envBCubeR))) && \ + (TPE_abs(envBCubeC.z - bodyBCubeC.z) <= ((bodyBCubeR) + (envBCubeR)))) + +#define TPE_ENV_BSPHERE_TEST(bodyBSphereC,bodyBSphereR,envBSphereC,envBSphereR)\ + (TPE_DISTANCE(bodyBSphereC,envBSphereC) <= ((bodyBSphereR) + (envBSphereR))) + +//------------------------------------------------------------------------------ +// privates: + +uint16_t _TPE_body1Index, _TPE_body2Index, _TPE_joint1Index, _TPE_joint2Index; +TPE_CollisionCallback _TPE_collisionCallback; + +static inline TPE_Unit TPE_nonZero(TPE_Unit x) +{ + return x != 0 ? x : 1; +} + +static inline TPE_Unit TPE_connectionTension(TPE_Unit length, + TPE_Unit desiredLength) +{ + return (length * TPE_F) / desiredLength + - TPE_F; +} + +TPE_Joint TPE_joint(TPE_Vec3 position, TPE_Unit size) +{ + TPE_Joint result; + + result.velocity[0] = 0; + result.velocity[1] = 0; + result.velocity[2] = 0; + + result.position = position; + + size /= TPE_JOINT_SIZE_MULTIPLIER; + + if (size > 0xff) + { + TPE_LOG("WARNING: joint size too big in TPE_joint"); + } + + result.sizeDivided = size; + + return result; +} + +TPE_Vec3 TPE_vec3(TPE_Unit x, TPE_Unit y, TPE_Unit z) +{ + TPE_Vec3 r; + + r.x = x; + r.y = y; + r.z = z; + + return r; +} + +TPE_Unit TPE_sqrt(TPE_Unit x) +{ + int8_t sign = 1; + + if (x < 0) + { + sign = -1; + x *= -1; + } + + uint32_t result = 0; + uint32_t a = x; + uint32_t b = 1u << 30; + + while (b > a) + b >>= 2; + + while (b != 0) + { + if (a >= result + b) + { + a -= result + b; + result = result + 2 * b; + } + + b >>= 2; + result >>= 1; + } + + return result * sign; +} + +TPE_Unit TPE_vec3Len(TPE_Vec3 v) +{ +#define ANTI_OVERFLOW 25000 + if (v.x < ANTI_OVERFLOW && v.x > -1 * ANTI_OVERFLOW && + v.y < ANTI_OVERFLOW && v.y > -1 * ANTI_OVERFLOW && + v.z < ANTI_OVERFLOW && v.z > -1 * ANTI_OVERFLOW) + { + return TPE_sqrt(v.x * v.x + v.y * v.y + v.z * v.z); + } + else + { + v.x /= 32; v.y /= 32; v.z /= 32; + return TPE_sqrt(v.x * v.x + v.y * v.y + v.z * v.z) * 32; + } +#undef ANTI_OVERFLOW +} + +TPE_Unit TPE_vec3LenApprox(TPE_Vec3 v) +{ + // 48 sided polyhedron approximation + + if (v.x < 0) v.x *= -1; + if (v.y < 0) v.y *= -1; + if (v.z < 0) v.z *= -1; + + if (v.x < v.y) // order the coordinates + { + if (v.x < v.z) + { + if (v.y < v.z) + { // v.x < v.y < v.z + int32_t t = v.x; v.x = v.z; v.z = t; + } + else + { // v.x < v.z < v.y + int32_t t = v.x; v.x = v.y; v.y = t; + t = v.z; v.z = v.y; v.y = t; + } + } + else + { // v.z < v.x < v.y + int32_t t = v.x; v.x = v.y; v.y = t; + } + } + else + { + if (v.y < v.z) + { + if (v.x < v.z) + { // v.y < v.x < v.z + int32_t t = v.y; v.y = v.z; v.z = t; + t = v.x; v.x = v.y; v.y = t; + } + else + { // v.y < v.z < v.x + int32_t t = v.y; v.y = v.z; v.z = t; + } + } + } + + return (893 * v.x + 446 * v.y + 223 * v.z) / 1024; +} + +TPE_Unit TPE_dist(TPE_Vec3 p1, TPE_Vec3 p2) +{ + p1 = TPE_vec3Minus(p1,p2); + return TPE_vec3Len(p1); +} + +TPE_Unit TPE_distApprox(TPE_Vec3 p1, TPE_Vec3 p2) +{ + p1 = TPE_vec3Minus(p1,p2); + return TPE_vec3LenApprox(p1); +} + +void TPE_bodyInit(TPE_Body *body, + TPE_Joint *joints, uint8_t jointCount, + TPE_Connection *connections, uint8_t connectionCount, + TPE_Unit mass) +{ + body->joints = joints; + body->jointCount = jointCount; + body->connections = connections; + body->connectionCount = connectionCount; + body->deactivateCount = 0; + body->friction = TPE_F / 2; + body->elasticity = TPE_F / 2; + body->flags = 0; + body->jointMass = TPE_nonZero(mass / jointCount); + + for (uint32_t i = 0; i < connectionCount; ++i) + { + TPE_Unit d = TPE_DISTANCE( + joints[connections[i].joint1].position, + joints[connections[i].joint2].position); + + if (d > 0xffff) + { + TPE_LOG("WARNING: joint distance too long in TPE_bodyInit"); + } + + connections[i].length = d != 0 ? d : 1; // prevent later division by zero + } +} + +void TPE_worldInit(TPE_World *world, TPE_Body *bodies, uint16_t bodyCount, + TPE_ClosestPointFunction environmentFunction) +{ + world->bodies = bodies; + world->bodyCount = bodyCount; + world->environmentFunction = environmentFunction; + world->collisionCallback = 0; +} + +#define C(n,a,b) connections[n].joint1 = a; connections[n].joint2 = b; + +void TPE_make2Line(TPE_Joint joints[2], TPE_Connection connections[1], + TPE_Unit length, TPE_Unit jointSize) +{ + joints[0] = TPE_joint(TPE_vec3(length / 2,0,0),jointSize); + joints[1] = TPE_joint(TPE_vec3(length / -2,0,0),jointSize); + C(0, 0,1) +} + +void TPE_makeRect(TPE_Joint joints[4], TPE_Connection connections[6], + TPE_Unit width, TPE_Unit depth, TPE_Unit jointSize) +{ + width /= 2; + depth /= 2; + + for (uint8_t i = 0; i < 4; ++i) + joints[i] = TPE_joint(TPE_vec3((i % 2) ? -1 * width : width, + 0,(i / 2) ? - 1 * depth : depth),jointSize); + + C(0, 0,1) C(1, 0,2) C (2, 3,1) C(3, 3,2) + C(4, 0,3) C(5, 1,2) +} + +void TPE_makeCenterRect(TPE_Joint joints[5], TPE_Connection connections[8], + TPE_Unit width, TPE_Unit depth, TPE_Unit jointSize) +{ + TPE_makeRect(joints,connections,width,depth,jointSize); + + joints[4] = TPE_joint(TPE_vec3(0,0,0),jointSize); + + C(6, 0,4) C(7, 3,4) +} + +void TPE_makeCenterRectFull(TPE_Joint joints[5], TPE_Connection connections[10], + TPE_Unit width, TPE_Unit depth, TPE_Unit jointSize) +{ + TPE_makeCenterRect(joints,connections,width,depth,jointSize); + C(8, 1,4) C(9, 2,4) +} + +void TPE_makeTriangle(TPE_Joint joints[3], TPE_Connection connections[3], + TPE_Unit sideLength, TPE_Unit jointSize) +{ + joints[0] = TPE_joint(TPE_vec3(sideLength / 2,0, + TPE_sqrt((sideLength * sideLength) / 2) / 2),jointSize); + + joints[1] = joints[0]; + joints[1].position.x *= -1; + joints[2] = TPE_joint(TPE_vec3(0,0,-1 * joints[0].position.z),jointSize); + + C(0, 0,1) C(1, 1,2) C(2, 2,0) +} + +void TPE_makeBox(TPE_Joint joints[8], TPE_Connection connections[16], + TPE_Unit width, TPE_Unit depth, TPE_Unit height, TPE_Unit jointSize) +{ + width /= 2; + depth /= 2; + height /= 2; + + for (uint8_t i = 0; i < 8; ++i) + joints[i] = TPE_joint( + TPE_vec3( + (i % 2) ? width : (-1 * width), + ((i >> 2) % 2) ? height : (-1 * height), + ((i >> 1) % 2) ? depth : (-1 * depth)), + jointSize); + + C(0, 0,1) C(1, 1,3) C(2, 3,2) C(3, 2,0) // top + C(4, 4,5) C(5, 5,7) C(6, 7,6) C(7, 6,4) // bottom + C(8, 0,4) C(9, 1,5) C(10,3,7) C(11,2,6) // middle + C(12,0,7) C(13,1,6) C(14,2,5) C(15,3,4) // diagonal +} + +void TPE_makeCenterBox(TPE_Joint joints[9], TPE_Connection connections[18], + TPE_Unit width, TPE_Unit depth, TPE_Unit height, TPE_Unit jointSize) +{ + TPE_makeBox(joints,connections,width,depth,height,jointSize); + + joints[8] = TPE_joint(TPE_vec3(0,0,0),jointSize); + + C(16, 0,8) C(17, 7,8) +} + +#undef C + +void TPE_bodyDeactivate(TPE_Body *body) +{ + body->flags |= TPE_BODY_FLAG_DEACTIVATED; +} + +void TPE_worldStep(TPE_World *world) +{ + _TPE_collisionCallback = world->collisionCallback; + + for (uint16_t i = 0; i < world->bodyCount; ++i) + { + TPE_Body *body = world->bodies + i; + + if (body->flags & (TPE_BODY_FLAG_DEACTIVATED | TPE_BODY_FLAG_DISABLED)) + continue; + + TPE_Joint *joint = body->joints, *joint2; + + TPE_Vec3 origPos = body->joints[0].position; + + for (uint16_t j = 0; j < body->jointCount; ++j) // apply velocities + { + // non-rotating bodies will copy the 1st joint's velocity + + if (body->flags & TPE_BODY_FLAG_NONROTATING) + for (uint8_t k = 0; k < 3; ++k) + joint->velocity[k] = body->joints[0].velocity[k]; + + joint->position.x += joint->velocity[0]; + joint->position.y += joint->velocity[1]; + joint->position.z += joint->velocity[2]; + + joint++; + } + + TPE_Connection *connection = body->connections; + + TPE_Vec3 aabbMin, aabbMax; + + TPE_bodyGetAABB(body,&aabbMin,&aabbMax); + + _TPE_body1Index = i; + + _TPE_body2Index = _TPE_body1Index; + + uint8_t collided = + TPE_bodyEnvironmentResolveCollision(body,world->environmentFunction); + + if (body->flags & TPE_BODY_FLAG_NONROTATING) + { + /* Non-rotating bodies may end up still colliding after environment coll + resolvement (unlike rotating bodies where each joint is ensured separately + to not collide). So if still in collision, we try a few more times. If not + successful, we simply undo any shifts we've done. This should absolutely + prevent any body escaping out of environment bounds. */ + + for (uint8_t i = 0; i < TPE_NONROTATING_COLLISION_RESOLVE_ATTEMPTS; ++i) + { + if (!collided) + break; + + collided = + TPE_bodyEnvironmentResolveCollision(body,world->environmentFunction); + } + + if (collided && + TPE_bodyEnvironmentCollide(body,world->environmentFunction)) + TPE_bodyMoveBy(body,TPE_vec3Minus(origPos,body->joints[0].position)); + } + else // normal, rotating bodies + { + TPE_Unit bodyTension = 0; + + for (uint16_t j = 0; j < body->connectionCount; ++j) // joint tension + { + joint = &(body->joints[connection->joint1]); + joint2 = &(body->joints[connection->joint2]); + + TPE_Vec3 dir = TPE_vec3Minus(joint2->position,joint->position); + + TPE_Unit tension = TPE_connectionTension(TPE_LENGTH(dir), + connection->length); + + bodyTension += tension > 0 ? tension : -tension; + + if (tension > TPE_TENSION_ACCELERATION_THRESHOLD || + tension < -1 * TPE_TENSION_ACCELERATION_THRESHOLD) + { + TPE_vec3Normalize(&dir); + + if (tension > TPE_TENSION_GREATER_ACCELERATION_THRESHOLD || + tension < -1 * TPE_TENSION_GREATER_ACCELERATION_THRESHOLD) + { + /* apply twice the acceleration after a second threshold, not so + elegant but seems to work :) */ + dir.x *= 2; + dir.y *= 2; + dir.z *= 2; + } + + dir.x /= TPE_TENSION_ACCELERATION_DIVIDER; + dir.y /= TPE_TENSION_ACCELERATION_DIVIDER; + dir.z /= TPE_TENSION_ACCELERATION_DIVIDER; + + if (tension < 0) + { + dir.x *= -1; + dir.y *= -1; + dir.z *= -1; + } + + joint->velocity[0] += dir.x; + joint->velocity[1] += dir.y; + joint->velocity[2] += dir.z; + + joint2->velocity[0] -= dir.x; + joint2->velocity[1] -= dir.y; + joint2->velocity[2] -= dir.z; + } + + connection++; + } + + if (body->connectionCount > 0) + { + uint8_t hard = !(body->flags & TPE_BODY_FLAG_SOFT); + + if (hard) + { + TPE_bodyReshape(body,world->environmentFunction); + + bodyTension /= body->connectionCount; + + if (bodyTension > TPE_RESHAPE_TENSION_LIMIT) + for (uint8_t k = 0; k < TPE_RESHAPE_ITERATIONS; ++k) + TPE_bodyReshape(body,world->environmentFunction); + } + + if (!(body->flags & TPE_BODY_FLAG_SIMPLE_CONN)) + TPE_bodyCancelOutVelocities(body,hard); + } + } + + for (uint16_t j = 0; j < world->bodyCount; ++j) + { + if (j > i || (world->bodies[j].flags & TPE_BODY_FLAG_DEACTIVATED)) + { + // firstly quick-check collision of body AA bounding boxes + + TPE_Vec3 aabbMin2, aabbMax2; + TPE_bodyGetAABB(&world->bodies[j],&aabbMin2,&aabbMax2); + + _TPE_body2Index = j; + + if (TPE_checkOverlapAABB(aabbMin,aabbMax,aabbMin2,aabbMax2) && + TPE_bodiesResolveCollision(body,world->bodies + j, + world->environmentFunction)) + { + TPE_bodyActivate(body); + body->deactivateCount = TPE_LIGHT_DEACTIVATION; + + TPE_bodyActivate(world->bodies + j); + world->bodies[j].deactivateCount = TPE_LIGHT_DEACTIVATION; + } + } + } + + if (!(body->flags & TPE_BODY_FLAG_ALWAYS_ACTIVE)) + { + if (body->deactivateCount >= TPE_DEACTIVATE_AFTER) + { + TPE_bodyStop(body); + body->deactivateCount = 0; + body->flags |= TPE_BODY_FLAG_DEACTIVATED; + } + else if (TPE_bodyGetAverageSpeed(body) <= TPE_LOW_SPEED) + body->deactivateCount++; + else + body->deactivateCount = 0; + } + } +} + +void TPE_bodyActivate(TPE_Body *body) +{ + // the if check has to be here, don't remove it + + if (body->flags & TPE_BODY_FLAG_DEACTIVATED) + { + TPE_bodyStop(body); + body->flags &= ~TPE_BODY_FLAG_DEACTIVATED; + body->deactivateCount = 0; + } +} + +TPE_Unit TPE_bodyGetNetSpeed(const TPE_Body *body) +{ +#if TPE_APPROXIMATE_NET_SPEED + TPE_Vec3 netV = TPE_vec3(0,0,0); + + const TPE_Joint *joint = body->joints; + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + netV.x += TPE_abs(joint->velocity[0]); + netV.y += TPE_abs(joint->velocity[1]); + netV.z += TPE_abs(joint->velocity[2]); + + joint++; + } + + return TPE_vec3LenApprox(netV); +#else + TPE_Unit velocity = 0; + + const TPE_Joint *joint = body->joints; + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + velocity += TPE_LENGTH( + TPE_vec3(joint->velocity[0],joint->velocity[1],joint->velocity[2])); + + joint++; + } + + return velocity; +#endif +} + +TPE_Unit TPE_bodyGetAverageSpeed(const TPE_Body *body) +{ + return TPE_bodyGetNetSpeed(body) / body->jointCount; +} + +void TPE_bodyMultiplyNetSpeed(TPE_Body *body, TPE_Unit factor) +{ + TPE_Joint *joint = body->joints; + + for (uint16_t j = 0; j < body->jointCount; ++j) + { + for (uint8_t k = 0; k < 3; ++k) + joint->velocity[k] = + (((TPE_Unit) joint->velocity[k]) * factor) / + TPE_F; + + joint++; + } +} + +void TPE_bodyLimitAverageSpeed(TPE_Body *body, TPE_Unit speedMin, + TPE_Unit speedMax) +{ + for (uint8_t i = 0; i < 16; ++i) + { + TPE_Unit speed = TPE_bodyGetAverageSpeed(body); + + if (speed >= speedMin && speed <= speedMax) + return; + + TPE_Unit fraction = + (((speedMax + speedMin) / 2) * TPE_F) / + TPE_nonZero(speed); + + TPE_bodyMultiplyNetSpeed(body,fraction); + } +} + +void TPE_bodyCancelOutVelocities(TPE_Body *body, uint8_t strong) +{ + for (uint16_t i = 0; i < body->connectionCount; ++i) + { + TPE_Connection *c = &body->connections[i]; + + TPE_Joint *j1 = &(body->joints[c->joint1]); + TPE_Joint *j2 = &(body->joints[c->joint2]); + + TPE_Vec3 dir = TPE_vec3Minus(j2->position,j1->position); + + TPE_Unit len = TPE_nonZero(TPE_LENGTH(dir)); + + uint8_t cancel = 1; + + if (strong) + { + TPE_Unit tension = TPE_connectionTension(len,c->length); + + cancel = tension <= TPE_TENSION_ACCELERATION_THRESHOLD && + tension >= -1 * TPE_TENSION_ACCELERATION_THRESHOLD; + } + + if (cancel) + { + TPE_Vec3 + v1 = TPE_vec3(j1->velocity[0],j1->velocity[1],j1->velocity[2]), + v2 = TPE_vec3(j2->velocity[0],j2->velocity[1],j2->velocity[2]); + + dir.x = (dir.x * TPE_F) / len; // normalize + dir.y = (dir.y * TPE_F) / len; + dir.z = (dir.z * TPE_F) / len; + + v1 = TPE_vec3ProjectNormalized(v1,dir); + v2 = TPE_vec3ProjectNormalized(v2,dir); + + TPE_Vec3 avg = TPE_vec3Plus(v1,v2); + + avg.x /= 2; + avg.y /= 2; + avg.z /= 2; + + if (strong) + { + j1->velocity[0] = j1->velocity[0] - v1.x + avg.x; + j1->velocity[1] = j1->velocity[1] - v1.y + avg.y; + j1->velocity[2] = j1->velocity[2] - v1.z + avg.z; + + j2->velocity[0] = j2->velocity[0] - v2.x + avg.x; + j2->velocity[1] = j2->velocity[1] - v2.y + avg.y; + j2->velocity[2] = j2->velocity[2] - v2.z + avg.z; + } + else + { + j1->velocity[0] = j1->velocity[0] - v1.x + (v1.x * 3 + avg.x) / 4; + j1->velocity[1] = j1->velocity[1] - v1.y + (v1.y * 3 + avg.y) / 4; + j1->velocity[2] = j1->velocity[2] - v1.z + (v1.z * 3 + avg.z) / 4; + + j2->velocity[0] = j2->velocity[0] - v2.x + (v2.x * 3 + avg.x) / 4; + j2->velocity[1] = j2->velocity[1] - v2.y + (v2.y * 3 + avg.y) / 4; + j2->velocity[2] = j2->velocity[2] - v2.z + (v2.z * 3 + avg.z) / 4; + } + } + } +} + +void TPE_bodyReshape(TPE_Body *body, + TPE_ClosestPointFunction environmentFunction) +{ + for (uint16_t i = 0; i < body->connectionCount; ++i) + { + TPE_Connection *c = &body->connections[i]; + + TPE_Joint *j1 = &(body->joints[c->joint1]); + TPE_Joint *j2 = &(body->joints[c->joint2]); + + TPE_Vec3 dir = TPE_vec3Minus(j2->position,j1->position); + + TPE_Vec3 middle = TPE_vec3Plus(j1->position,j2->position); + + middle.x /= 2; + middle.y /= 2; + middle.z /= 2; + + TPE_vec3Normalize(&dir); + + dir.x = (dir.x * c->length) / TPE_F; + dir.y = (dir.y * c->length) / TPE_F; + dir.z = (dir.z * c->length) / TPE_F; + + TPE_Vec3 positionBackup = j1->position; + + j1->position.x = middle.x - dir.x / 2; + j1->position.y = middle.y - dir.y / 2; + j1->position.z = middle.z - dir.z / 2; + + if (environmentFunction != 0 && TPE_LENGTH(TPE_vec3Minus(j1->position, + environmentFunction(j1->position,TPE_JOINT_SIZE(*j1)))) + < TPE_JOINT_SIZE(*j1)) + j1->position = positionBackup; + + positionBackup = j2->position; + + j2->position.x = j1->position.x + dir.x; + j2->position.y = j1->position.y + dir.y; + j2->position.z = j1->position.z + dir.z; + + if (environmentFunction != 0 && TPE_LENGTH(TPE_vec3Minus(j2->position, + environmentFunction(j2->position,TPE_JOINT_SIZE(*j2)))) + < TPE_JOINT_SIZE(*j2)) + j2->position = positionBackup; + } +} + +TPE_Vec3 TPE_vec3Plus(TPE_Vec3 v1, TPE_Vec3 v2) +{ + v1.x += v2.x; + v1.y += v2.y; + v1.z += v2.z; + + return v1; +} + +TPE_Vec3 TPE_vec3Minus(TPE_Vec3 v1, TPE_Vec3 v2) +{ + v1.x -= v2.x; + v1.y -= v2.y; + v1.z -= v2.z; + + return v1; +} + +void TPE_vec3Normalize(TPE_Vec3 *v) +{ + TPE_Unit l = TPE_LENGTH(*v); + + if (l == 0) + *v = TPE_vec3(TPE_F,0,0); + else + { + if (l < 16) // too short vec would cause inacurracte normalization + { + v->x *= 8; + v->y *= 8; + v->z *= 8; + l = TPE_LENGTH(*v); + } + + v->x = (v->x * TPE_F) / l; + v->y = (v->y * TPE_F) / l; + v->z = (v->z * TPE_F) / l; + } +} + +TPE_Vec3 TPE_bodyGetRotation(const TPE_Body *body, uint16_t joint1, + uint16_t joint2, uint16_t joint3) +{ + return TPE_rotationFromVecs( + TPE_vec3Minus( + body->joints[joint2].position, + body->joints[joint1].position), + TPE_vec3Minus( + body->joints[joint3].position, + body->joints[joint1].position)); +} + +TPE_Vec3 TPE_bodyGetCenterOfMass(const TPE_Body *body) +{ + // note that joint sizes don't play a role as all weight the same + + TPE_Vec3 result = TPE_vec3(0,0,0); + + const TPE_Joint *j = body->joints; + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + result = TPE_vec3Plus(result,j->position); + j++; + } + + result.x /= body->jointCount; + result.y /= body->jointCount; + result.z /= body->jointCount; + + return result; +} + +void TPE_bodySpinWithCenter(TPE_Body *body, TPE_Vec3 rotation, TPE_Vec3 center) +{ + for (uint16_t i = 0; i < body->jointCount; ++i) + { + TPE_Joint *j = body->joints + i; + + TPE_Vec3 toPoint = TPE_vec3Minus(j->position,center); + + toPoint = TPE_vec3Project(toPoint,rotation); + toPoint = TPE_vec3Plus(center,toPoint); + toPoint = TPE_vec3Minus(j->position,toPoint); + toPoint = TPE_vec3Cross(toPoint,rotation); + + j->velocity[0] += toPoint.x; + j->velocity[1] += toPoint.y; + j->velocity[2] += toPoint.z; + } +} + +void TPE_bodySpin(TPE_Body *body, TPE_Vec3 rotation) +{ + TPE_bodySpinWithCenter(body,rotation,TPE_bodyGetCenterOfMass(body)); +} + +TPE_Vec3 _TPE_rotateByAxis(TPE_Vec3 p, TPE_Vec3 axisNormalized, TPE_Unit angle) +{ + TPE_Vec3 projected = TPE_vec3ProjectNormalized(p,axisNormalized); + + TPE_Vec3 a = TPE_vec3Minus(p,projected); + + if (a.x == 0 && a.y == 0 && a.z == 0) + return p; + + TPE_Vec3 b = TPE_vec3Cross(a,axisNormalized); + + return TPE_vec3Plus(projected,TPE_vec3Plus( + TPE_vec3Times(a,TPE_cos(angle)), + TPE_vec3Times(b,TPE_sin(angle)))); +} + +void TPE_bodyRotateByAxis(TPE_Body *body, TPE_Vec3 rotation) +{ + TPE_Vec3 bodyCenter = TPE_bodyGetCenterOfMass(body); + TPE_Unit angle = TPE_LENGTH(rotation); + + TPE_vec3Normalize(&rotation); + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + TPE_Vec3 toPoint = TPE_vec3Minus(body->joints[i].position,bodyCenter); + body->joints[i].position = TPE_vec3Plus(bodyCenter, + _TPE_rotateByAxis(toPoint,rotation,angle)); + } +} + +TPE_Vec3 TPE_vec3Cross(TPE_Vec3 v1, TPE_Vec3 v2) +{ + TPE_Vec3 r; + + r.x = (v1.y * v2.z - v1.z * v2.y) / TPE_F; + r.y = (v1.z * v2.x - v1.x * v2.z) / TPE_F; + r.z = (v1.x * v2.y - v1.y * v2.x) / TPE_F; + + return r; +} + +TPE_Vec3 TPE_vec3ProjectNormalized(TPE_Vec3 v, TPE_Vec3 baseNormalized) +{ + TPE_Vec3 r; + + TPE_Unit p = TPE_vec3Dot(v,baseNormalized); + + r.x = (p * baseNormalized.x) / TPE_F; + r.y = (p * baseNormalized.y) / TPE_F; + r.z = (p * baseNormalized.z) / TPE_F; + + return r; +} + +TPE_Vec3 TPE_vec3Project(TPE_Vec3 v, TPE_Vec3 base) +{ + TPE_vec3Normalize(&base); + + return TPE_vec3ProjectNormalized(v,base); +} + +void TPE_bodyMoveBy(TPE_Body *body, TPE_Vec3 offset) +{ + for (uint16_t i = 0; i < body->jointCount; ++i) + body->joints[i].position = TPE_vec3Plus(body->joints[i].position, + offset); +} + +void TPE_bodyApplyGravity(TPE_Body *body, TPE_Unit downwardsAccel) +{ + if ((body->flags & TPE_BODY_FLAG_DEACTIVATED) || + (body->flags & TPE_BODY_FLAG_DISABLED)) + return; + + for (uint16_t i = 0; i < body->jointCount; ++i) + body->joints[i].velocity[1] -= downwardsAccel; +} + +void TPE_bodyAccelerate(TPE_Body *body, TPE_Vec3 velocity) +{ + TPE_bodyActivate(body); + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + body->joints[i].velocity[0] += velocity.x; + body->joints[i].velocity[1] += velocity.y; + body->joints[i].velocity[2] += velocity.z; + } +} + +void TPE_bodyStop(TPE_Body *body) +{ + for (uint16_t i = 0; i < body->jointCount; ++i) + { + body->joints[i].velocity[0] = 0; + body->joints[i].velocity[1] = 0; + body->joints[i].velocity[2] = 0; + } +} + +void _TPE_bodyNonrotatingJointCollided(TPE_Body *b, int16_t jointIndex, + TPE_Vec3 origPos, uint8_t success) +{ + origPos = TPE_vec3Minus(b->joints[jointIndex].position,origPos); + + for (uint16_t i = 0; i < b->jointCount; ++i) + if (i != jointIndex) + { + b->joints[i].position = TPE_vec3Plus(b->joints[i].position,origPos); + + if (success) + for (uint8_t j = 0; j < 3; ++j) + b->joints[i].velocity[j] = b->joints[jointIndex].velocity[j]; + } +} + +TPE_Unit TPE_vec3Dot(TPE_Vec3 v1, TPE_Vec3 v2) +{ + return (v1.x * v2.x + v1.y * v2.y + v1.z * v2.z) / TPE_F; +} + +TPE_Unit TPE_cos(TPE_Unit x) +{ + return TPE_sin(x + TPE_F / 4); +} + +TPE_Unit TPE_sin(TPE_Unit x) +{ + int8_t sign = 1; + + if (x < 0) // odd function + { + x *= -1; + sign = -1; + } + + x %= TPE_F; + + if (x > TPE_F / 2) + { + x -= TPE_F / 2; + sign *= -1; + } + + TPE_Unit tmp = TPE_F - 2 * x; + + #define _PI2 5053 // 9.8696044 * TPE_F + return sign * // Bhaskara's approximation + (((32 * x * _PI2) / TPE_F) * tmp) / + ((_PI2 * (5 * TPE_F - (8 * x * tmp) / + TPE_F)) / TPE_F); + #undef _PI2 +} + +uint8_t TPE_bodiesResolveCollision(TPE_Body *b1, TPE_Body *b2, + TPE_ClosestPointFunction env) +{ + uint8_t r = 0; + + for (uint16_t i = 0; i < b1->jointCount; ++i) + for (uint16_t j = 0; j < b2->jointCount; ++j) + { + TPE_Vec3 origPos2 = b2->joints[j].position; + TPE_Vec3 origPos1 = b1->joints[i].position; + + _TPE_joint1Index = i; + _TPE_joint2Index = j; + + if (TPE_jointsResolveCollision(&(b1->joints[i]),&(b2->joints[j]), + b1->jointMass,b2->jointMass,(b1->elasticity + b2->elasticity) / 2, + (b1->friction + b2->friction) / 2,env)) + { + r = 1; + + if (b1->flags & TPE_BODY_FLAG_NONROTATING) + _TPE_bodyNonrotatingJointCollided(b1,i,origPos1,1); + + if (b2->flags & TPE_BODY_FLAG_NONROTATING) + _TPE_bodyNonrotatingJointCollided(b2,j,origPos2,1); + } + } + + return r; +} + +uint8_t TPE_jointsResolveCollision(TPE_Joint *j1, TPE_Joint *j2, + TPE_Unit mass1, TPE_Unit mass2, TPE_Unit elasticity, TPE_Unit friction, + TPE_ClosestPointFunction env) +{ + TPE_Vec3 dir = TPE_vec3Minus(j2->position,j1->position); + + TPE_Unit d = TPE_LENGTH(dir) - TPE_JOINT_SIZE(*j1) - TPE_JOINT_SIZE(*j2); + + if (d < 0) // collision? + { + if (_TPE_collisionCallback != 0 && !_TPE_collisionCallback( + _TPE_body1Index,_TPE_joint1Index,_TPE_body2Index,_TPE_joint2Index, + TPE_vec3Plus(j1->position,dir))) + return 0; + + TPE_Vec3 + pos1Backup = j1->position, + pos2Backup = j2->position; + + // separate joints, the shift distance will depend on the weight ratio: + + d = -1 * d + TPE_COLLISION_RESOLUTION_MARGIN; + + TPE_vec3Normalize(&dir); + + TPE_Unit ratio = (mass2 * TPE_F) / + TPE_nonZero(mass1 + mass2); + + TPE_Unit shiftDistance = (ratio * d) / TPE_F; + + TPE_Vec3 shift = TPE_vec3Times(dir,shiftDistance); + + j1->position = TPE_vec3Minus(j1->position,shift); + + shiftDistance = d - shiftDistance; + + shift = TPE_vec3Times(dir,shiftDistance); + + j2->position = TPE_vec3Plus(j2->position,shift); + + // compute new velocities: + + TPE_Unit v1, v2; + + TPE_Vec3 vel = TPE_vec3(j1->velocity[0],j1->velocity[1],j1->velocity[2]); + + vel = TPE_vec3Project(vel,dir); + + j1->velocity[0] = j1->velocity[0] - vel.x; + j1->velocity[1] = j1->velocity[1] - vel.y; + j1->velocity[2] = j1->velocity[2] - vel.z; + + /* friction explanation: Not physically correct (doesn't depend on load), + friction basically means we weighted average the velocities of the bodies + in the direction perpendicular to the hit normal, in the ratio of their + masses, friction coefficient just says how much of this effect we apply + (it multiplies the friction vectors we are subtracting) */ + + TPE_Vec3 frictionVec = + TPE_vec3(j1->velocity[0],j1->velocity[1],j1->velocity[2]); + + v1 = TPE_vec3Dot(vel,dir); + vel = TPE_vec3(j2->velocity[0],j2->velocity[1],j2->velocity[2]); + vel = TPE_vec3Project(vel,dir); + + j2->velocity[0] = j2->velocity[0] - vel.x; + j2->velocity[1] = j2->velocity[1] - vel.y; + j2->velocity[2] = j2->velocity[2] - vel.z; + + frictionVec = TPE_vec3Minus( + TPE_vec3(j2->velocity[0],j2->velocity[1],j2->velocity[2]), + frictionVec); + + v2 = TPE_vec3Dot(vel,dir); + + TPE_getVelocitiesAfterCollision(&v1,&v2,mass1,mass2,elasticity); + + vel = TPE_vec3Times(dir,v1); + +#define assignVec(j,i,d,o) \ + j->velocity[i] = j->velocity[i] + vel.d o (((frictionVec.d * ratio) / \ + TPE_F) * friction) / TPE_F; + + assignVec(j1,0,x,+) + assignVec(j1,1,y,+) + assignVec(j1,2,z,+) + + vel = TPE_vec3Times(dir,v2); + + ratio = TPE_F - ratio; + + assignVec(j2,0,x,-) + assignVec(j2,1,y,-) + assignVec(j2,2,z,-) + +#undef assignVec + + if (env != 0) + { + // ensure the joints aren't colliding with environment + + if (TPE_jointEnvironmentResolveCollision(j1,elasticity,friction,env) == 2) + j1->position = pos1Backup; + + if (TPE_jointEnvironmentResolveCollision(j2,elasticity,friction,env) == 2) + j2->position = pos2Backup; + } + + return 1; + } + + return 0; +} + +TPE_Vec3 TPE_vec3Times(TPE_Vec3 v, TPE_Unit units) +{ + v.x = (v.x * units) / TPE_F; + v.y = (v.y * units) / TPE_F; + v.z = (v.z * units) / TPE_F; + + return v; +} + +TPE_Vec3 TPE_vec3TimesPlain(TPE_Vec3 v, TPE_Unit q) +{ + v.x *= q; + v.y *= q; + v.z *= q; + + return v; +} + +void TPE_getVelocitiesAfterCollision(TPE_Unit *v1, TPE_Unit *v2, + TPE_Unit m1, TPE_Unit m2, TPE_Unit elasticity) +{ + /* In the following a lot of TPE_F cancel out, feel free to + check if confused. */ + + TPE_Unit m1Pm2 = TPE_nonZero(m1 + m2); + TPE_Unit v2Mv1 = TPE_nonZero(*v2 - *v1); + + TPE_Unit m1v1Pm2v2 = ((m1 * *v1) + (m2 * *v2)); + + *v1 = (((elasticity * m2 / TPE_F) * v2Mv1) + + m1v1Pm2v2) / m1Pm2; + + *v2 = (((elasticity * m1 / TPE_F) * -1 * v2Mv1) + + m1v1Pm2v2) / m1Pm2; +} + +uint8_t TPE_jointEnvironmentResolveCollision(TPE_Joint *joint, + TPE_Unit elasticity, TPE_Unit friction, TPE_ClosestPointFunction env) +{ + TPE_Vec3 toJoint = + TPE_vec3Minus(joint->position,env(joint->position,TPE_JOINT_SIZE(*joint))); + + TPE_Unit len = TPE_LENGTH(toJoint); + + if (len <= TPE_JOINT_SIZE(*joint)) + { + if (_TPE_collisionCallback != 0) + if (!_TPE_collisionCallback(_TPE_body1Index, + _TPE_joint1Index,_TPE_body2Index,_TPE_joint2Index, + TPE_vec3Minus(joint->position,toJoint))) + return 0; + + // colliding + + TPE_Vec3 positionBackup = joint->position, shift; + uint8_t success = 0; + + if (len > 0) + { + /* Joint center is still outside the geometry so we can determine the + normal and use it to shift it outside. This can still leave the joint + colliding though, so try to repeat it a few times. */ + + for (int i = 0; i < TPE_COLLISION_RESOLUTION_ITERATIONS; ++i) + { + shift = toJoint; + + TPE_vec3Normalize(&shift); + + shift = TPE_vec3Times(shift,TPE_JOINT_SIZE(*joint) - len + + TPE_COLLISION_RESOLUTION_MARGIN); + + joint->position = TPE_vec3Plus(joint->position,shift); + + toJoint = TPE_vec3Minus(joint->position,env(joint->position, + TPE_JOINT_SIZE(*joint))); + + len = TPE_LENGTH(toJoint); // still colliding? + + if (len >= TPE_JOINT_SIZE(*joint)) + { + success = 1; + break; + } + } + } + + if (!success) + { + /* Shifting along normal was unsuccessfull, now try different approach: + shift back by joint velocity. */ + + shift = TPE_vec3(-1 * joint->velocity[0],-1 * joint->velocity[1], + -1 * joint->velocity[2]); + + for (int i = 0; i < TPE_COLLISION_RESOLUTION_ITERATIONS; ++i) + { + joint->position = TPE_vec3Plus(joint->position,shift); + + toJoint = TPE_vec3Minus(joint->position, + env(joint->position,TPE_JOINT_SIZE(*joint))); + + len = TPE_LENGTH(toJoint); // still colliding? + + if (len >= TPE_JOINT_SIZE(*joint)) + { + success = 1; + break; + } + + shift.x /= 2; // decrease the step a bit + shift.y /= 2; + shift.z /= 2; + } + } + + if (success) + { + TPE_Vec3 vel = TPE_vec3(joint->velocity[0],joint->velocity[1], + joint->velocity[2]); + + vel = TPE_vec3Project(vel,shift); // parallel part of velocity + + TPE_Vec3 vel2 = TPE_vec3Minus( // perpendicular part of velocity + TPE_vec3(joint->velocity[0],joint->velocity[1],joint->velocity[2]),vel); + + vel2 = TPE_vec3Times(vel2,friction); + + vel = TPE_vec3Times(vel,TPE_F + elasticity); + + joint->velocity[0] -= vel.x + vel2.x; + joint->velocity[1] -= vel.y + vel2.y; + joint->velocity[2] -= vel.z + vel2.z; + } + else + { + TPE_LOG("WARNING: joint-environment collision couldn't be resolved"); + + joint->position = positionBackup; + joint->velocity[0] = 0; + joint->velocity[1] = 0; + joint->velocity[2] = 0; + + return 2; + } + + return 1; + } + + return 0; +} + +uint8_t TPE_bodyEnvironmentCollide(const TPE_Body *body, + TPE_ClosestPointFunction env) +{ + for (uint16_t i = 0; i < body->jointCount; ++i) + { + const TPE_Joint *joint = body->joints + i; + + TPE_Unit size = TPE_JOINT_SIZE(*joint); + + if (TPE_DISTANCE(joint->position,env(joint->position,size)) <= size) + return 1; + } + + return 0; +} + +void TPE_bodyGetFastBSphere(const TPE_Body *body, TPE_Vec3 *center, + TPE_Unit *radius) +{ + TPE_Vec3 b; + + TPE_bodyGetAABB(body,center,&b); + + center->x = (center->x + b.x) / 2; + center->y = (center->y + b.y) / 2; + center->z = (center->z + b.z) / 2; + + *radius = TPE_DISTANCE(*center,b); +} + +void TPE_bodyGetBSphere(const TPE_Body *body, TPE_Vec3 *center, + TPE_Unit *radius) +{ + *radius = TPE_INFINITY; + *center = TPE_bodyGetCenterOfMass(body); + + const TPE_Joint *j = body->joints; + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + TPE_Vec3 diff; + + TPE_Unit js = TPE_JOINT_SIZE(*j); + + /* Sadly we have to have these conditions here which slow this down. If we + were only computing a BB sphere of a point cloud, we wouldn't have to + compute abs vals (as squaring would effectively compute them), but here + we need to add joint size which needs to know about the sign. */ + + diff.x = ((center->x > j->position.x) ? + (center->x - j->position.x) : (j->position.x - center->x)) + js; + + diff.y = ((center->y > j->position.y) ? + (center->y - j->position.y) : (j->position.y - center->y)) + js; + + diff.z = ((center->z > j->position.z) ? + (center->z - j->position.z) : (j->position.z - center->z)) + js; + + TPE_Unit distSquared = + diff.x * diff.x + diff.y * diff.y + diff.z * diff.z; + + if (distSquared < *radius) + *radius = distSquared; + + j++; + } + + *radius = TPE_sqrt(*radius); +} + +uint8_t TPE_bodyEnvironmentResolveCollision(TPE_Body *body, + TPE_ClosestPointFunction env) +{ + TPE_Vec3 c; + TPE_Unit d; + + TPE_bodyGetFastBSphere(body,&c,&d); + + if (TPE_DISTANCE(c,env(c,d)) > d) + return 0; + + // now test the full body collision: + + uint8_t collision = 0; + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + TPE_Vec3 previousPos = body->joints[i].position; + + _TPE_joint1Index = i; + + uint8_t r = TPE_jointEnvironmentResolveCollision( + body->joints + i,body->elasticity,body->friction,env); + + if (r) + { + collision = 1; + + if (body->flags & TPE_BODY_FLAG_NONROTATING) + _TPE_bodyNonrotatingJointCollided(body,i,previousPos,r == 1); + } + } + + return collision; +} + +TPE_Vec3 TPE_vec3Normalized(TPE_Vec3 v) +{ + TPE_vec3Normalize(&v); + return v; +} + +TPE_Unit TPE_atan(TPE_Unit x) +{ + /* atan approximation by polynomial + WARNING: this will break with different value of TPE_FRACTIONS_PER_UNIT */ + + TPE_Unit sign = 1, x2 = x * x; + + if (x < 0) + { + x *= -1; + sign = -1; + } + + if (x > 30000) // anti overflow + return sign * (TPE_F / 4); + + return sign * + (307 * x + x2) / ((267026 + 633 * x + x2) / 128); +} + +void _TPE_vec2Rotate(TPE_Unit *x, TPE_Unit *y, TPE_Unit angle) +{ + TPE_Unit tmp = *x; + + TPE_Unit s = TPE_sin(angle); + TPE_Unit c = TPE_cos(angle); + + *x = (c * *x - s * *y) / TPE_F; + *y = (s * tmp + c * *y) / TPE_F; +} + +TPE_Unit TPE_vec2Angle(TPE_Unit x, TPE_Unit y) +{ + TPE_Unit r = 0; + + if (x != 0) + { + r = TPE_atan((y * TPE_F) / x); + + if (x < 0) + r += TPE_F / 2; + else if (r < 0) + r += TPE_F; + } + else + { + if (y < 0) + r = (3 * TPE_F) / 4; + else if (y > 0) + r = TPE_F / 4; + // else (y == 0) r stays 0 + } + + return r; +} + +TPE_Vec3 TPE_rotationFromVecs(TPE_Vec3 forward, TPE_Vec3 right) +{ + TPE_Vec3 result; + + // get rotation around Y: + + result.y = TPE_vec2Angle(forward.z,-1 * forward.x); + + // now rotate back by this angle to align with x = 0 plane: + + _TPE_vec2Rotate(&forward.z,&forward.x,result.y); + _TPE_vec2Rotate(&right.z,&right.x,result.y); + + // now do the same for the second axis: + + result.x = + TPE_vec2Angle(forward.z,forward.y); + + _TPE_vec2Rotate(&right.z,&right.y,-1 * result.x); + + result.z = TPE_vec2Angle(right.x,-1 * right.y); + + return result; +} + +TPE_Vec3 _TPE_project3DPoint(TPE_Vec3 p, TPE_Vec3 camPos, TPE_Vec3 camRot, + TPE_Vec3 camView) +{ + // transform to camera space: + + p = TPE_vec3Minus(p,camPos); + + _TPE_vec2Rotate(&p.z,&p.x,camRot.y); + _TPE_vec2Rotate(&p.z,&p.y,-1 * camRot.x); + _TPE_vec2Rotate(&p.y,&p.x,-1 * camRot.z); + + if (p.z <= 0) + return p; + + if (camView.z != 0) + { + // perspective + + p.x = (p.x * camView.z) / p.z; + p.y = (p.y * camView.z) / p.z; + + p.x = camView.x / 2 + (p.x * camView.x) / (2 * TPE_F); + p.y = camView.y / 2 - (p.y * camView.x) / (2 * TPE_F); + // ^ x here intentional + } + else + { + // ortho + + p.x = camView.x / 2 + p.x; + p.y = camView.y / 2 - p.y; + } + + return p; +} + +void _TPE_drawDebugPixel( + TPE_Unit x, TPE_Unit y, TPE_Unit w, TPE_Unit h, uint8_t c, + TPE_DebugDrawFunction f) +{ + if (x >= 0 && x < w && y >= 0 && y < h) + f(x,y,c); +} + +void TPE_worldDebugDraw(TPE_World *world, TPE_DebugDrawFunction drawFunc, + TPE_Vec3 camPos, TPE_Vec3 camRot, TPE_Vec3 camView, uint16_t envGridRes, + TPE_Unit envGridSize) +{ +#define Z_LIMIT 250 + if (world->environmentFunction != 0) + { + // environment: + + TPE_Vec3 testPoint; + + TPE_Unit gridHalfSize = (envGridSize * envGridRes) / 2; + + TPE_Vec3 center; + + if (envGridRes != 0) + { + center = TPE_vec3(0,TPE_sin(camRot.x),TPE_cos(camRot.x)); + + _TPE_vec2Rotate(¢er.x,¢er.z,camRot.y); + + center = TPE_vec3Times(center,gridHalfSize); + center = TPE_vec3Plus(camPos,center); + + center.x = (center.x / envGridSize) * envGridSize; + center.y = (center.y / envGridSize) * envGridSize; + center.z = (center.z / envGridSize) * envGridSize; + } + + testPoint.y = center.y - gridHalfSize; + + for (uint8_t j = 0; j < envGridRes; ++j) + { + testPoint.x = center.x - gridHalfSize; + + for (uint8_t k = 0; k < envGridRes; ++k) + { + testPoint.z = center.z - gridHalfSize; + + for (uint8_t l = 0; l < envGridRes; ++l) + { + TPE_Vec3 r = world->environmentFunction(testPoint,envGridSize); + + if (r.x != testPoint.x || r.y != testPoint.y || r.z != testPoint.z) + { + r = _TPE_project3DPoint(r,camPos,camRot,camView); + + if (r.z > Z_LIMIT) + _TPE_drawDebugPixel(r.x,r.y,camView.x,camView.y, + TPE_DEBUG_COLOR_ENVIRONMENT,drawFunc); + } + + testPoint.z += envGridSize; + } + + testPoint.x += envGridSize; + } + + testPoint.y += envGridSize; + } + } + + for (uint16_t i = 0; i < world->bodyCount; ++i) + { + // connections: + for (uint16_t j = 0; j < world->bodies[i].connectionCount; ++j) + { + TPE_Vec3 + p1 = world->bodies[i].joints[ + world->bodies[i].connections[j].joint1].position, + p2 = world->bodies[i].joints[ + world->bodies[i].connections[j].joint2].position; + + p1 = _TPE_project3DPoint(p1,camPos,camRot,camView); + p2 = _TPE_project3DPoint(p2,camPos,camRot,camView); + + if (p1.z <= Z_LIMIT || p2.z <= Z_LIMIT) + continue; + + TPE_Vec3 diff = TPE_vec3Minus(p2,p1); + +#define SEGS 16 + + uint8_t c = (world->bodies[i].flags & TPE_BODY_FLAG_DEACTIVATED) ? + TPE_DEBUG_COLOR_INACTIVE : TPE_DEBUG_COLOR_CONNECTION; + + for (uint16_t k = 0; k < SEGS; ++k) + { + p2.x = p1.x + (diff.x * k) / SEGS; + p2.y = p1.y + (diff.y * k) / SEGS; + + _TPE_drawDebugPixel(p2.x,p2.y,camView.x,camView.y,c,drawFunc); + } +#undef SEGS + } + + // joints: + for (uint16_t j = 0; j < world->bodies[i].jointCount; ++j) + { + TPE_Vec3 p = _TPE_project3DPoint(world->bodies[i].joints[j].position, + camPos,camRot,camView); + + if (p.z > Z_LIMIT) + { + uint8_t color = (world->bodies[i].flags & TPE_BODY_FLAG_DEACTIVATED) ? + TPE_DEBUG_COLOR_INACTIVE : TPE_DEBUG_COLOR_JOINT; + + _TPE_drawDebugPixel(p.x,p.y,camView.x,camView.y,color,drawFunc); + + TPE_Unit size = TPE_JOINT_SIZE(world->bodies[i].joints[j]); + + if (camView.z != 0) // not ortho? + { + size /= 2; + size = (size * camView.x) / TPE_F; + size = (size * camView.z) / p.z; + } + +#define SEGS 4 + for (uint8_t k = 0; k < SEGS + 1; ++k) + { + TPE_Unit + dx = (TPE_sin(TPE_F * k / (8 * SEGS)) * size) + / TPE_F, + dy = (TPE_cos(TPE_F * k / (8 * SEGS)) * size) + / TPE_F; + +#define dp(a,b,c,d) \ + _TPE_drawDebugPixel(p.x a b,p.y c d,camView.x,camView.y,color,drawFunc); + dp(+,dx,+,dy) dp(+,dx,-,dy) dp(-,dx,+,dy) dp(-,dx,-,dy) + dp(+,dy,+,dx) dp(+,dy,-,dx) dp(-,dy,+,dx) dp(-,dy,-,dx) +#undef dp +#undef SEGS + } + } + } + } +#undef Z_LIMIT +} + +TPE_Vec3 TPE_envBox(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 maxCornerVec, + TPE_Vec3 rotation) +{ + point = TPE_pointRotate(TPE_vec3Minus(point,center), + TPE_rotationInverse(rotation)); + + return TPE_vec3Plus(center,TPE_pointRotate(TPE_envAABox(point,TPE_vec3(0,0,0), + maxCornerVec),rotation)); +} + +TPE_Vec3 TPE_envAABox(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 maxCornerVec) +{ + TPE_Vec3 shifted = TPE_vec3Minus(point,center); + int8_t sign[3] = {1, 1, 1}; + + if (shifted.x < 0) + { + shifted.x *= -1; + sign[0] = -1; + } + + if (shifted.y < 0) + { + shifted.y *= -1; + sign[1] = -1; + } + + if (shifted.z < 0) + { + shifted.z *= -1; + sign[2] = -1; + } + + uint8_t region = + (shifted.x > maxCornerVec.x) | + ((shifted.y > maxCornerVec.y) << 1) | + ((shifted.z > maxCornerVec.z) << 2); + + switch (region) + { +#define align(c,i) point.c = center.c + sign[i] * maxCornerVec.c + + case 0x01: align(x,0); break; + case 0x02: align(y,1); break; + case 0x04: align(z,2); break; + + case 0x03: align(x,0); align(y,1); break; + case 0x05: align(x,0); align(z,2); break; + case 0x06: align(y,1); align(z,2); break; + + case 0x07: align(x,0); align(y,1); align(z,2); break; + default: break; + +#undef align + } + + return point; +} + +TPE_Vec3 TPE_envAABoxInside(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 size) +{ + size.x /= 2; + size.y /= 2; + size.z /= 2; + + TPE_Vec3 shifted = TPE_vec3Minus(point,center); + + TPE_Vec3 a = TPE_vec3Minus(size,shifted), + b = TPE_vec3Plus(shifted,size); + + int8_t sx = 1, sy = 1, sz = 1; + + if (b.x < a.x) + { + a.x = b.x; + sx = -1; + } + + if (b.y < a.y) + { + a.y = b.y; + sy = -1; + } + + if (b.z < a.z) + { + a.z = b.z; + sz = -1; + } + + if (a.x < 0 || a.y < 0 || a.z < 0) + return point; + + if (a.x < a.y) + { + if (a.x < a.z) + point.x = center.x + sx * size.x; + else + point.z = center.z + sz * size.z; + } + else + { + if (a.y < a.z) + point.y = center.y + sy * size.y; + else + point.z = center.z + sz * size.z; + } + + return point; +} + +TPE_Vec3 TPE_envSphereInside(TPE_Vec3 point, TPE_Vec3 center, TPE_Unit radius) +{ + TPE_Vec3 shifted = TPE_vec3Minus(point,center); + + TPE_Unit l = TPE_LENGTH(shifted); + + if (l >= radius) + return point; + else if (l < 0) + return TPE_vec3(center.x + radius,center.y,center.z); + + TPE_vec3Normalize(&shifted); + + return TPE_vec3Plus(center,TPE_vec3Times(shifted,radius)); +} + +TPE_Vec3 TPE_envSphere(TPE_Vec3 point, TPE_Vec3 center, TPE_Unit radius) +{ + TPE_Vec3 dir = TPE_vec3Minus(point,center); + + TPE_Unit l = TPE_LENGTH(dir); + + if (l <= radius) + return point; + + dir.x = (dir.x * radius) / l; + dir.y = (dir.y * radius) / l; + dir.z = (dir.z * radius) / l; + + return TPE_vec3Plus(center,dir); +} + +TPE_Vec3 TPE_envHalfPlane(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 normal) +{ + TPE_Vec3 point2 = TPE_vec3Minus(point,center); + + TPE_Unit tmp = + point2.x * normal.x + point2.y * normal.y + point2.z * normal.z; + + if (tmp < 0) + return point; + + TPE_Unit l = TPE_LENGTH(normal); + + tmp /= l; + + normal.x = (normal.x * TPE_F) / l; + normal.y = (normal.y * TPE_F) / l; + normal.z = (normal.z * TPE_F) / l; + + return TPE_vec3Minus(point, + TPE_vec3Times(normal,tmp)); +} + +uint8_t TPE_checkOverlapAABB(TPE_Vec3 v1Min, TPE_Vec3 v1Max, TPE_Vec3 v2Min, + TPE_Vec3 v2Max) +{ + TPE_Unit dist; + +#define test(c) \ + dist = v1Min.c + v1Max.c - v2Max.c - v2Min.c; \ + if (dist < 0) dist *= -1; \ + if (dist > v1Max.c - v1Min.c + v2Max.c - v2Min.c) return 0; + + test(x) + test(y) + test(z) + +#undef test + + return 1; +} + +void TPE_bodyGetAABB(const TPE_Body *body, TPE_Vec3 *vMin, TPE_Vec3 *vMax) +{ + *vMin = body->joints[0].position; + *vMax = *vMin; + + TPE_Unit js = TPE_JOINT_SIZE(body->joints[0]); + + vMin->x -= js; + vMin->y -= js; + vMin->z -= js; + + vMax->x += js; + vMax->y += js; + vMax->z += js; + + for (uint16_t i = 1; i < body->jointCount; ++i) + { + TPE_Unit v; + + js = TPE_JOINT_SIZE(body->joints[i]); + +#define test(c) \ + v = body->joints[i].position.c - js; \ + if (v < vMin->c) \ + vMin->c = v; \ + v += 2 * js; \ + if (v > vMax->c) \ + vMax->c = v; + + test(x) + test(y) + test(z) + +#undef test + } +} + +void TPE_jointPin(TPE_Joint *joint, TPE_Vec3 position) +{ + joint->position = position; + joint->velocity[0] = 0; + joint->velocity[1] = 0; + joint->velocity[2] = 0; +} + +TPE_Vec3 TPE_pointRotate(TPE_Vec3 point, TPE_Vec3 rotation) +{ + _TPE_vec2Rotate(&point.y,&point.x,rotation.z); + _TPE_vec2Rotate(&point.z,&point.y,rotation.x); + _TPE_vec2Rotate(&point.x,&point.z,rotation.y); + + return point; +} + +TPE_Vec3 TPE_rotationInverse(TPE_Vec3 rotation) +{ + /* If r1 = (X,Y,Z) is rotation in convention ABC then r1^-1 = (-X,-Y,-Z) in + convention CBA is its inverse rotation. We exploit this, i.e. we rotate + forward/right vectors in opposite axis order and then turn the result + into normal rotation/orientation. */ + + TPE_Vec3 f = TPE_vec3(0,0,TPE_F); + TPE_Vec3 r = TPE_vec3(TPE_F,0,0); + + rotation.x *= -1; + rotation.y *= -1; + rotation.z *= -1; + + _TPE_vec2Rotate(&f.x,&f.z,rotation.y); + _TPE_vec2Rotate(&f.z,&f.y,rotation.x); + _TPE_vec2Rotate(&f.y,&f.x,rotation.z); + + _TPE_vec2Rotate(&r.x,&r.z,rotation.y); + _TPE_vec2Rotate(&r.z,&r.y,rotation.x); + _TPE_vec2Rotate(&r.y,&r.x,rotation.z); + + return TPE_rotationFromVecs(f,r); +} + +TPE_Vec3 TPE_rotationRotateByAxis(TPE_Vec3 rotation, TPE_Vec3 rotationByAxis) +{ + TPE_Vec3 f = TPE_pointRotate(TPE_vec3(0,0,TPE_F),rotation); + TPE_Vec3 r = TPE_pointRotate(TPE_vec3(TPE_F,0,0),rotation); + + TPE_Unit a = TPE_LENGTH(rotationByAxis); + TPE_vec3Normalize(&rotationByAxis); + + f = _TPE_rotateByAxis(f,rotationByAxis,a); + r = _TPE_rotateByAxis(r,rotationByAxis,a); + + return TPE_rotationFromVecs(f,r); +} + +TPE_Unit TPE_keepInRange(TPE_Unit x, TPE_Unit xMin, TPE_Unit xMax) +{ + return x > xMin ? (x < xMax ? x : xMax) : xMin; +} + +TPE_Vec3 TPE_vec3KeepWithinDistanceBand(TPE_Vec3 point, TPE_Vec3 center, + TPE_Unit minDistance, TPE_Unit maxDistance) +{ + TPE_Vec3 toPoint = TPE_vec3Minus(point,center); + + TPE_Unit l = TPE_LENGTH(toPoint); + + if (l <= maxDistance) + { + if (l >= minDistance) + return point; + + l = minDistance; + } + else + l = maxDistance; + + return TPE_vec3Plus(center, + TPE_vec3Times(TPE_vec3Normalized(toPoint),l)); +} + +TPE_Vec3 TPE_vec3KeepWithinBox(TPE_Vec3 point, TPE_Vec3 boxCenter, + TPE_Vec3 boxMaxVect) +{ + point.x = TPE_keepInRange(point.x, + boxCenter.x - boxMaxVect.x,boxCenter.x + boxMaxVect.x); + + point.y = TPE_keepInRange(point.y, + boxCenter.y - boxMaxVect.y,boxCenter.y + boxMaxVect.y); + + point.z = TPE_keepInRange(point.z, + boxCenter.z - boxMaxVect.z,boxCenter.z + boxMaxVect.z); + + return point; +} + +TPE_Vec3 TPE_envInfiniteCylinder(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 + direction, TPE_Unit radius) +{ + TPE_Vec3 d = TPE_vec3Minus(point,center); + d = TPE_vec3Minus(d,TPE_vec3Project(d,direction)); + + TPE_Unit l = TPE_LENGTH(d); + + if (l <= radius) + return point; + + radius = l - radius; + + d.x = (d.x * radius) / l; + d.y = (d.y * radius) / l; + d.z = (d.z * radius) / l; + + return TPE_vec3Minus(point,d); +} + +TPE_Vec3 TPE_envCylinder(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 direction, + TPE_Unit radius) +{ + point = TPE_vec3Minus(point,center); + + TPE_Vec3 projected = TPE_vec3Project(point,direction); + + point = TPE_envInfiniteCylinder(point,TPE_vec3(0,0,0),direction,radius); + + TPE_Unit lDir = TPE_nonZero(TPE_LENGTH(direction)); + + TPE_Unit lDiff = TPE_LENGTH(projected) - lDir; + + if (lDiff > 0) + { + direction.x = (direction.x * lDiff) / lDir; + direction.y = (direction.y * lDiff) / lDir; + direction.z = (direction.z * lDiff) / lDir; + + point = (TPE_vec3Dot(projected,direction)) >= 0 ? + TPE_vec3Minus(point,direction) : TPE_vec3Plus(point,direction); + } + + return TPE_vec3Plus(center,point); +} + +TPE_Vec3 TPE_fakeSphereRotation(TPE_Vec3 position1, TPE_Vec3 position2, + TPE_Unit radius) +{ + TPE_Vec3 m; + + m.x = position1.z - position2.z; + m.y = 0; + m.z = position2.x - position1.x; + + TPE_Unit l = TPE_sqrt(m.x * m.x + m.z * m.z); + + if (l == 0) + return TPE_vec3(0,0,0); + + TPE_Unit d = (TPE_DISTANCE(position1,position2) * + TPE_F) / (radius * 4); + + m.x = (m.x * d) / l; + m.z = (m.z * d) / l; + + return m; +} + +TPE_Vec3 TPE_castEnvironmentRay(TPE_Vec3 rayPos, TPE_Vec3 rayDir, + TPE_ClosestPointFunction environment, TPE_Unit insideStepSize, + TPE_Unit rayMarchMaxStep, uint32_t maxSteps) +{ + TPE_Vec3 p = rayPos; + TPE_Vec3 p2 = environment(rayPos,rayMarchMaxStep); + TPE_Unit totalD = 0; + + TPE_vec3Normalize(&rayDir); + + uint8_t found = 0; // 0 = nothing found, 1 = out/in found, 2 = in/out found + + if (p2.x != p.x || p2.y != p.y || p2.z != p.z) + { + // outside ray: ray march + + for (uint32_t i = 0; i < maxSteps; ++i) + { + TPE_Unit d = TPE_DISTANCE(p,p2); + + if (d > rayMarchMaxStep) + d = rayMarchMaxStep; + + totalD += d; + + p2 = TPE_vec3Plus(rayPos,TPE_vec3Times(rayDir,totalD)); + + if (d == 0 || + (p2.x == p.x && p2.y == p.y && p2.z == p.z)) + return p2; // point not inside env but dist == 0, ideal case + + TPE_Vec3 pTest = environment(p2,rayMarchMaxStep); + + if (pTest.x == p2.x && pTest.y == p2.y && pTest.z == p2.z) + { + // stepped into env, will have to iterate + found = 1; + break; + } + + p = p2; + p2 = pTest; + } + } + else if (insideStepSize != 0) + { + // inside ray: iterate by fixed steps + + for (uint32_t i = 0; i < maxSteps; ++i) + { + totalD += insideStepSize; + + p2 = TPE_vec3Plus(rayPos,TPE_vec3Times(rayDir,totalD)); + + TPE_Vec3 pTest = environment(p2,16); + + if (p2.x != pTest.x || p2.y != pTest.y || p2.z != pTest.z) + { + found = 2; + break; + } + + p = p2; + p2 = pTest; + } + } + + if (found) + { + /* Here we've found two points (p, p2), each one the other side of the + env surface. Now iterate (binary search) to find the exact surface + pos. */ + + for (uint8_t i = 0; i < 128; ++i) // upper limit just in case + { + TPE_Vec3 middle = TPE_vec3Plus(p,p2); + + middle.x /= 2; + middle.y /= 2; + middle.z /= 2; + + if ((middle.x == p.x && middle.y == p.y && middle.z == p.z) || + (middle.x == p2.x && middle.y == p2.y && middle.z == p2.z)) + break; // points basically next to each other, don't continue + + TPE_Vec3 pTest = environment(middle,16); // 16: just a small number + + if ((found == 1) == + (pTest.x == middle.x && pTest.y == middle.y && pTest.z == middle.z)) + p2 = middle; + else + p = middle; + } + + return (found == 1) ? p : p2; + } + + return TPE_vec3(TPE_INFINITY,TPE_INFINITY,TPE_INFINITY); +} + +TPE_Vec3 TPE_castBodyRay(TPE_Vec3 rayPos, TPE_Vec3 rayDir, int16_t excludeBody, + const TPE_World *world, int16_t *bodyIndex, int16_t *jointIndex) +{ + TPE_Vec3 bestP = TPE_vec3(TPE_INFINITY,TPE_INFINITY,TPE_INFINITY); + TPE_Unit bestD = TPE_INFINITY; + + if (bodyIndex != 0) + *bodyIndex = -1; + + if (jointIndex != 0) + *jointIndex = -1; + + TPE_vec3Normalize(&rayDir); + + for (uint16_t i = 0; i < world->bodyCount; ++i) + { + TPE_Vec3 c, p; + TPE_Unit r, d; + + TPE_bodyGetFastBSphere(&world->bodies[i],&c,&r); + + c = TPE_vec3Minus(c,rayPos); + p = TPE_vec3ProjectNormalized(c,rayDir); + + if (TPE_vec3Dot(p,rayDir) >= 0) // point is in ray's forward dir? + { + d = TPE_DISTANCE(p,c); + + if (d <= r) + { + // bounding sphere hit, now check all joints: + + const TPE_Joint *joint = world->bodies[i].joints; + + for (uint16_t j = 0; j < world->bodies[i].jointCount; ++j) + { + c = joint->position; + c = TPE_vec3Minus(c,rayPos); + p = TPE_vec3ProjectNormalized(c,rayDir); + + if (TPE_vec3Dot(p,rayDir) >= 0) + { + d = TPE_DISTANCE(p,c); + TPE_Unit js = TPE_JOINT_SIZE(*joint); + + if (d <= js) + { + // joint hit, compute exact coordinates: + + if (bodyIndex != 0) + *bodyIndex = i; + + if (jointIndex != 0) + *jointIndex = j; + + c = TPE_vec3Times(rayDir,TPE_sqrt(js * js - d * d)); + // ^ offset vector to two intersections + p = TPE_vec3Plus(p,rayPos); + + TPE_Vec3 + i1 = TPE_vec3Plus(p,c), // intersection points + i2 = TPE_vec3Minus(p,c); + + d = TPE_DISTANCE(rayPos,i1); + TPE_Unit d2 = TPE_DISTANCE(rayPos,i2); + + if (d2 < d) // take the closer one + { + d = d2; + i1 = i2; + } + + if (d < bestD) + { + bestD = d; + bestP = i1; + } + } + } + + joint++; + } + } + } + } + + return bestP; +} + +void TPE_worldDeactivateAll(TPE_World *world) +{ + for (uint16_t i = 0; i < world->bodyCount; ++i) + TPE_bodyDeactivate(&world->bodies[i]); +} + +void TPE_worldActivateAll(TPE_World *world) +{ + for (uint16_t i = 0; i < world->bodyCount; ++i) + TPE_bodyActivate(&world->bodies[i]); +} + +TPE_Unit TPE_worldGetNetSpeed(const TPE_World *world) +{ + TPE_Unit result = 0; + + for (uint16_t i = 0; i < world->bodyCount; ++i) + result += TPE_bodyGetNetSpeed(world->bodies + i); + + return result; +} + +TPE_Vec3 TPE_bodyGetLinearVelocity(const TPE_Body *body) +{ + TPE_Vec3 r = TPE_vec3(0,0,0); + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + TPE_UnitReduced *v = body->joints[i].velocity; + r = TPE_vec3Plus(r,TPE_vec3(v[0],v[1],v[2])); + } + + r.x /= body->jointCount; + r.y /= body->jointCount; + r.z /= body->jointCount; + + return r; +} + +TPE_Unit TPE_abs(TPE_Unit x) +{ + return x >= 0 ? x : (-1 * x); +} + +TPE_Unit TPE_max(TPE_Unit a, TPE_Unit b) +{ + return (a > b) ? a : b; +} + +TPE_Unit TPE_min(TPE_Unit a, TPE_Unit b) +{ + return (a < b) ? a : b; +} + +TPE_Vec3 TPE_envAATriPrism(TPE_Vec3 point, TPE_Vec3 center, + const TPE_Unit sides[6], TPE_Unit depth, uint8_t direction) +{ + point = TPE_vec3Minus(point,center); + + if (direction == 1) + { + TPE_Unit tmp = point.z; + point.z = point.y; + point.y = tmp; + } + else if (direction == 2) + { + TPE_Unit tmp = point.z; + point.z = point.x; + point.x = tmp; + } + + depth /= 2; + + if (point.z > depth) + point.z = depth; + else + { + depth *= -1; + + if (point.z < depth) + point.z = depth; + } + + for (uint8_t i = 0; i < 6; i += 2) + { + uint8_t i2 = i < 4 ? i + 2 : 0; + + TPE_Vec3 p = + TPE_envHalfPlane(point,TPE_vec3(sides[i],sides[i + 1],0), + TPE_vec3(sides[i2 + 1] - sides[i + 1],sides[i] - sides[i2],0)); + + if (p.x != point.x || p.y != point.y) + { + point = p; + + if ( // dot product to determine which side the point is on + (sides[i2] - sides[i]) * (point.x - sides[i]) + + (sides[i2 + 1] - sides[i + 1]) * (point.y - sides[i + 1]) < 0) + { + point.x = sides[i]; point.y = sides[i + 1]; + } + else if ( // same but for the other vertex + (sides[i] - sides[i2]) * (point.x - sides[i2]) + + (sides[i + 1] - sides[i2 + 1]) * (point.y - sides[i2 + 1]) < 0) + { + point.x = sides[i2]; point.y = sides[i2 + 1]; + } + + break; + } + } + + if (direction == 1) + { + TPE_Unit tmp = point.z; + point.z = point.y; + point.y = tmp; + } + else if (direction == 2) + { + TPE_Unit tmp = point.z; + point.z = point.x; + point.x = tmp; + } + + return TPE_vec3Plus(point,center); +} + +TPE_Vec3 TPE_envGround(TPE_Vec3 point, TPE_Unit height) +{ + if (point.y > height) + point.y = height; + + return point; +} + +uint32_t _TPE_hash(uint32_t n) +{ + // parameters found by hash-prospector project + n = 250009959 * (n ^ (n >> 17)); + n = 2626308659 * (n ^ (n >> 15)); + return n ^ (n >> 16); +} + +uint32_t TPE_jointHash(const TPE_Joint *joint) +{ + uint32_t + r = _TPE_hash(joint->position.x); + r = _TPE_hash(r ^ joint->position.y); + r = _TPE_hash(r ^ joint->position.z); + r = _TPE_hash(r ^ + (((uint32_t) joint->velocity[0]) | + (((uint32_t) joint->velocity[1]) << 16))); + r = _TPE_hash(r ^ + (((uint32_t) joint->velocity[2]) | + ((uint32_t) joint->sizeDivided))); + + return r; +} + +uint32_t TPE_connectionHash(const TPE_Connection *connection) +{ + return _TPE_hash( + ((uint32_t) connection->length) | + (((uint32_t) connection->joint1) << 16) | + (((uint32_t) connection->joint2) << 24)); +} + +uint32_t TPE_bodyHash(const TPE_Body *body) +{ + uint32_t r = _TPE_hash( + ((uint32_t) body->jointMass) | + (((uint32_t) body->flags) << 16) | + (((uint32_t) body->deactivateCount) << 24)) ^ + _TPE_hash( + ((uint32_t) body->friction) | + (((uint32_t) body->elasticity) << 16)); + + for (uint8_t i = 0; i < body->jointCount; ++i) + r = _TPE_hash(r ^ TPE_jointHash(&body->joints[i])); + + for (uint8_t i = 0; i < body->connectionCount; ++i) + r = _TPE_hash(r ^ TPE_connectionHash(&body->connections[i])); + + return r; +} + +uint32_t TPE_worldHash(const TPE_World *world) +{ + uint32_t r = 0; + + for (uint8_t i = 0; i < world->bodyCount; ++i) + r = _TPE_hash(r ^ TPE_bodyHash(&world->bodies[i])); + + return r; +} + +void TPE_bodyMoveTo(TPE_Body *body, TPE_Vec3 position) +{ + position = TPE_vec3Minus(position,TPE_bodyGetCenterOfMass(body)); + + for (uint8_t i = 0; i < body->jointCount; ++i) + body->joints[i].position = TPE_vec3Plus(body->joints[i].position,position); +} + +uint8_t TPE_testClosestPointFunction(TPE_ClosestPointFunction f, + TPE_Vec3 cornerFrom, TPE_Vec3 cornerTo, uint8_t gridResolution, + TPE_UnitReduced allowedError, TPE_Vec3 *errorPoint) +{ + TPE_Vec3 p; + + cornerTo = TPE_vec3Minus(cornerTo,cornerFrom); + + for (uint16_t z = 0; z < gridResolution; ++z) + { + p.z = cornerFrom.z + (z * cornerTo.z) / gridResolution; + + for (uint16_t y = 0; y < gridResolution; ++y) + { + p.y = cornerFrom.y + (y * cornerTo.y) / gridResolution; + + for (uint16_t x = 0; x < gridResolution; ++x) + { + p.x = cornerFrom.x + (x * cornerTo.x) / gridResolution; + + TPE_Vec3 p2 = f(p,TPE_INFINITY); + + if (p.x != p2.x || p.y != p2.y || p.z != p2.z) // only test outside + { + // 1st try to approach the closest point and see if it stays the same: + + TPE_Vec3 p3 = p; + + for (uint8_t i = 0; i < 3; ++i) + { + p3 = + TPE_vec3((p3.x + p2.x) / 2,(p3.y + p2.y) / 2,(p3.z + p2.z) / 2); + + TPE_Vec3 p4 = f(p3,TPE_INFINITY); + + if (TPE_abs(p4.x - p2.x) + TPE_abs(p4.y - p2.y) + + TPE_abs(p4.z - p2.z) > allowedError) // taxicab dist. for speed + { + if (errorPoint != 0) + *errorPoint = p; + + return 0; + } + } + + // now test 8 points inside the sphere of radius: + + TPE_Unit d = TPE_DISTANCE(p,p2); + + p3.z = p.z - d / 2; + + for (uint8_t zz = 0; zz < 2; ++zz) + { + p3.y = p.y - d / 2; + + for (uint8_t yy = 0; yy < 2; ++yy) + { + p3.x = p.x - d / 2; + + for (uint8_t zz = 0; zz < 2; ++zz) + { + if (TPE_DISTANCE(p,f(p3,TPE_INFINITY)) + allowedError < d) + { + /* In the sphere of distance radius to the original point's + closest point we've gotten a closer point which should + never happen. */ + + if (errorPoint != 0) + *errorPoint = p; + + return 0; + } + + p3.x += d; + } + + p3.y += d; + } + + p3.z += d; + } + } + } + } + } + + return 1; +} + +TPE_Vec3 TPE_envLineSegment(TPE_Vec3 point, TPE_Vec3 a, TPE_Vec3 b) +{ + point = TPE_vec3Minus(point,a); + + b = TPE_vec3Minus(b,a); + + point = TPE_vec3Project(point,b); + + if (TPE_vec3Dot(point,b) < 0) + point = TPE_vec3(0,0,0); + else if (TPE_abs(point.x) + TPE_abs(point.y) + TPE_abs(point.z) > + TPE_abs(b.x) + TPE_abs(b.y) + TPE_abs(b.z)) + point = b; + + point = TPE_vec3Plus(point,a); + + return point; +} + +TPE_Vec3 TPE_envHeightmap(TPE_Vec3 point, TPE_Vec3 center, TPE_Unit gridSize, + TPE_Unit (*heightFunction)(int32_t x, int32_t y), TPE_Unit maxDist) +{ + point = TPE_vec3Minus(point,center); + + TPE_Vec3 closestP = TPE_vec3(TPE_INFINITY,TPE_INFINITY,TPE_INFINITY); + TPE_Unit closestD = TPE_INFINITY; + + int16_t startSquareX = point.x / gridSize - (point.x < 0), + startSquareY = point.z / gridSize - (point.z < 0); + + int16_t squareX = startSquareX, + squareY = startSquareY; + + uint8_t spiralDir = 1; + uint16_t spiralStep = 1, spiralStepsLeft = 1; + + TPE_Vec3 // 4 corners of the current square + bl = TPE_vec3(squareX * gridSize,heightFunction(squareX,squareY), + squareY * gridSize), + br = TPE_vec3(bl.x + gridSize,heightFunction(squareX + 1,squareY),bl.z), + tl = TPE_vec3(bl.x,heightFunction(squareX,squareY + 1),bl.z + gridSize), + tr = TPE_vec3(br.x,heightFunction(squareX + 1,squareY + 1),tl.z); + + for (uint16_t i = 0; i < 1024; ++i) // while (1) should work in theory but... + { + if ((TPE_min(TPE_abs(squareX - startSquareX), + TPE_abs(squareY - startSquareY)) - 1) * gridSize + > TPE_min(maxDist,closestD)) + break; // here we can no longer find the dist we're looking for => end + + for (uint8_t j = 0; j < 2; ++j) // check the two triangles of the segment + { + TPE_Vec3 testP = TPE_envHalfPlane(point,j == 0 ? bl : tr, + TPE_vec3Normalized(j == 0 ? + TPE_vec3Cross(TPE_vec3Minus(tl,bl),TPE_vec3Minus(br,bl)) : + TPE_vec3Cross(TPE_vec3Minus(br,tr),TPE_vec3Minus(tl,tr)))); + + TPE_Unit testD = TPE_DISTANCE(testP,point); + + if (testD < closestD) + { + if (j == 0 ? // point is inside the triangle? + (testP.x >= bl.x && testP.z >= bl.z && + (testP.x - bl.x <= tl.z - testP.z)) : + (testP.x <= tr.x && testP.z <= tr.z && + (testP.x - bl.x >= tl.z - testP.z))) + { + closestP = testP; + closestD = testD; + } + else + { + // point outside the triangle, check individual boundary sides +#define testEdge(a,b) \ + testP = TPE_envLineSegment(point,a,b); testD = TPE_DISTANCE(testP,point); \ + if (testD < closestD) { closestP = testP; closestD = testD; } + + testEdge(j == 0 ? bl : tr,br) + testEdge(j == 0 ? bl : tr,tl) + testEdge(br,tl) + +#undef testEdge + } + } + } + + // now step to another square, in spiralling way: + + switch (spiralDir) + { + case 0: // moving up + squareY++; + + bl = tl; br = tr; + tl = TPE_vec3(bl.x,heightFunction(squareX,squareY + 1),bl.z + gridSize); + tr = TPE_vec3(br.x,heightFunction(squareX + 1,squareY + 1),bl.z + + gridSize); + + break; + + case 1: // moving right + squareX++; + + bl = br; tl = tr; + tr = TPE_vec3(tl.x + gridSize,heightFunction(squareX + 1,squareY + 1), + tl.z); + br = TPE_vec3(bl.x + gridSize,heightFunction(squareX + 1,squareY),bl.z); + + break; + + case 2: // moving down + squareY--; + + tl = bl; tr = br; + bl = TPE_vec3(tl.x,heightFunction(squareX,squareY),tl.z - gridSize); + br = TPE_vec3(tr.x,heightFunction(squareX + 1,squareY),tr.z - gridSize); + + break; + + case 3: // moving left + squareX--; + + br = bl; tr = tl; + tl = TPE_vec3(tr.x - gridSize,heightFunction(squareX,squareY + 1),tr.z); + bl = TPE_vec3(br.x - gridSize,heightFunction(squareX,squareY),br.z); + + break; + + default: break; + } + + spiralStepsLeft--; + + if (spiralStepsLeft == 0) + { + spiralDir = spiralDir != 0 ? spiralDir - 1 : 3; + + if (spiralDir == 3 || spiralDir == 1) + spiralStep++; + + spiralStepsLeft = spiralStep; + } + } + + return TPE_vec3Plus(closestP,center); +} + +TPE_Vec3 TPE_envCone(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 direction, + TPE_Unit radius) +{ + point = TPE_vec3Minus(point,center); + + if (TPE_vec3Dot(point,direction) <= 0) + { + // underneath the cone + + direction.x *= -1; + direction.y *= -1; + direction.z *= -1; + + point = TPE_envHalfPlane(point,TPE_vec3(0,0,0),direction); + + TPE_Unit dist = TPE_LENGTH(point); + + if (dist > radius) + { + point.x = (point.x * radius) / dist; + point.y = (point.y * radius) / dist; + point.z = (point.z * radius) / dist; + } + } + else + { + TPE_Unit height = TPE_LENGTH(direction); + + TPE_Vec3 helper = TPE_vec3Project(point,direction); + TPE_Unit y = TPE_LENGTH(helper); + + helper = TPE_vec3Minus(point,helper); + + TPE_Unit x = TPE_LENGTH(helper); + + if (x < 20) + { + // for such small distance big numeric errors occur in the other branch + if (y >= height) + point = direction; + } + else + { + TPE_Unit scaledRadius = radius - ((y * radius) / height); + + if (y > height || x > scaledRadius) // outside? + { + if (x <= 0) + { + TPE_LOG("WARNING: arithmetic error in envCone (library bug)"); + x = 1; // shouldn't happen but just in case, to prevent div by zero + } + + helper.x = (helper.x * radius) / x; + helper.y = (helper.y * radius) / x; + helper.z = (helper.z * radius) / x; + + point = TPE_envLineSegment(point,helper,direction); + } + } + } + + return TPE_vec3Plus(point,center); +} + +static inline uint8_t TPE_bodyIsActive(const TPE_Body *body) +{ + return !(body->flags & TPE_BODY_FLAG_DEACTIVATED); +} + +#endif // guard diff --git a/source/engine/timer.c b/source/engine/timer.c index a9a1253..5dac751 100644 --- a/source/engine/timer.c +++ b/source/engine/timer.c @@ -1,102 +1,87 @@ #include "timer.h" +#include "log.h" #include #include -static double time; - struct timer *timers; +static int first = -1; -void check_timer(struct timer *t) -{ - if (!t->on) - return; +void check_timer(struct timer *t, double dt) { + if (!t->on) + return; - if (time >= t->fire_time) { - t->cb(t->data); + t->remain_time -= dt; - if (t->repeat) { - t->fire_time = time + t->interval; - return; - } - - t->on = 0; - return; + if (t->remain_time <= 0) { + t->cb(t->data); + if (t->repeat) { + t->remain_time = t->interval; + return; } + + timer_pause(t); + return; + } } -void timer_update(double s) { - time = s; - - - for (int i = 0; i < arrlen(timers); i++) - check_timer(&timers[i]); - +void timer_update(double dt) { + for (int i = 0; i < arrlen(timers); i++) + check_timer(&timers[i], dt); } -struct timer *timer_make(double interval, void (*callback)(void *param), void *param) { - struct timer new; - new.remain_time = interval; - new.interval = interval; - new.cb = callback; - new.data = param; - new.repeat = 1; - new.timerid = arrlen(timers); +int timer_make(double interval, void (*callback)(void *param), void *param, int own) { + struct timer new; + new.remain_time = interval; + new.interval = interval; + new.cb = callback; + new.data = param; + new.repeat = 1; + new.owndata = own; + new.next = -1; + if (first < 0) { timer_start(&new); arrput(timers, new); - - return &arrlast(timers); + return arrlen(timers) - 1; + } else { + int retid = first; + first = id2timer(first)->next; + *id2timer(retid) = new; + timer_start(id2timer(retid)); + return retid; + } } void timer_pause(struct timer *t) { - if (!t->on) return; - - t->on = 0; - - t->remain_time = t->fire_time - time; + if (!t->on) return; + t->on = 0; } void timer_stop(struct timer *t) { - if (!t->on) return; - - t->on = 0; - t->remain_time = t->interval; + if (!t->on) return; + t->on = 0; + t->remain_time = t->interval; } void timer_start(struct timer *t) { - if (t->on) return; - - t->on = 1; - t->fire_time = time + t->remain_time; + if (t->on) return; + t->on = 1; } -void timer_remove(struct timer *t) { - int i = t->timerid; - arrdelswap(timers, i); - timers[i].timerid = i; +void timer_remove(int id) { + struct timer *t = id2timer(id); + if (t->owndata) free(t->data); + t->next = first; + t->on = 0; + first = id; } -void timer_settime(struct timer *t, double interval) { - //double elapsed = time - (t->fire_time - t->interval); - t->interval = interval; - t->remain_time = t->interval; - - // TODO: timer_settime reacts to elapsed time +void timerr_settime(struct timer *t, double interval) { + t->remain_time += (interval - t->interval); + t->interval = interval; } -void *arrfind(void *arr, int (*valid)(void *arr, void *cmp), void *cmp) -{ - for (int i = 0; i < arrlen(arr); i++) { - if (valid(&arr[i], cmp)) - return &arr[i]; - } - - return NULL; -} - -void arrwalk(void *arr, void (*fn)(void *data)) -{ - for (int i = 0; i < arrlen(arr); i++) - fn(&arr[i]); +struct timer *id2timer(int id) { + return &timers[id]; } diff --git a/source/engine/timer.h b/source/engine/timer.h index 72264a2..fd2edea 100644 --- a/source/engine/timer.h +++ b/source/engine/timer.h @@ -4,27 +4,22 @@ struct timer { int timerid; int on; - double fire_time; // Time the timer will fire - double interval; // Time of timer - double start_time; // Time the timer started this loop + double interval; // Time of timer int repeat; double remain_time; // How much time until the timer executes void (*cb)(void *data); void *data; + int owndata; + int next; }; -struct timer *timer_make(double interval, void (*callback)(void *param), void *param); -void timer_remove(struct timer *t); +int timer_make(double interval, void (*callback)(void *param), void *param, int own); +struct timer *id2timer(int id); +void timer_remove(int id); void timer_start(struct timer *t); void timer_pause(struct timer *t); void timer_stop(struct timer *t); -void timer_update(double s); -void timer_settime(struct timer *t, double interval); - - - - -void *arrfind(void *arr, int (*valid)(void *arr, void *cmp), void *cmp); -void arrwalk(void *arr, void (*fn)(void *data)); +void timer_update(double dt); +void timerr_settime(struct timer *t, double interval); #endif diff --git a/source/engine/tinyphysicsengine.h b/source/engine/tinyphysicsengine.h new file mode 100644 index 0000000..ff0e8c1 --- /dev/null +++ b/source/engine/tinyphysicsengine.h @@ -0,0 +1,3303 @@ +#ifndef _TINYPHYSICSENGINE_H +#define _TINYPHYSICSENGINE_H + +/** + tinyphysicsengine (TPE) + + Simple/suckless header-only hybrid 3D physics engine with no floating point, + only 32 bit int arithmetic, similar to e.g. small3dlib. + + Conventions and formats are the same or similar to those of small3dlib so as + to make them easily integrate with each other. + + The library works with bodies made of spheres connected by elastic springs, + i.e. soft bodies which however behave as "stiff" bodies by default and can + be used to fake rigid body physics as well. Bodies are placed in environemnts + specified by a distance function that allows to implement any mathematical + shape. + + Orientations/rotations are in extrinsic Euler angles in the ZXY order (by Z, + then by X, then by Y), if not mentioned otherwise. Angles are in TPE_Units, + TPE_FRACTIONS_PER_UNIT is full angle (2 PI). Sometimes rotations can also be + specified in the "about axis" format: here the object is rotated CW by given + axis by an angle that's specified by the magnitude of the vector. + + Where it matters (e.g. rotations about axes) we consider a left-handed coord. + system (x right, y up, z forward). + + ------------------------------------------------------------------------------ + + by drummyfish, 2022 + + version 0.8d + + This work's goal is to never be encumbered by any exclusive intellectual + property rights. The work is therefore provided under CC0 1.0 + (https://creativecommons.org/publicdomain/zero/1.0/) + additional WAIVER OF + ALL INTELLECTUAL PROPERTY RIGHTS that waives the rest of intellectual property + rights not already waived by CC0 1.0. The WAIVER OF ALL INTELLECTUAL PROPERTY + RGHTS is as follows: + + Each contributor to this work agrees that they waive any exclusive rights, + including but not limited to copyright, patents, trademark, trade dress, + industrial design, plant varieties and trade secrets, to any and all ideas, + concepts, processes, discoveries, improvements and inventions conceived, + discovered, made, designed, researched or developed by the contributor either + solely or jointly with others, which relate to this work or result from this + work. Should any waiver of such right be judged legally invalid or + ineffective under applicable law, the contributor hereby grants to each + affected person a royalty-free, non transferable, non sublicensable, non + exclusive, irrevocable and unconditional license to this right. +*/ + +#include + +typedef int32_t TPE_Unit; ///< Basic fixed point unit type. +typedef int16_t TPE_UnitReduced; ///< Like TPE_Unit but saving space + +#define TPE_FRACTIONS_PER_UNIT 512 ///< one fixed point unit, don't change +#define TPE_F TPE_FRACTIONS_PER_UNIT ///< short for TPE_FRACTIONS_PER_UNIT +#define TPE_JOINT_SIZE_MULTIPLIER 32 ///< joint size is scaled (size saving) + +#define TPE_INFINITY 2147483647 + +#define TPE_JOINT_SIZE(joint) ((joint).sizeDivided * TPE_JOINT_SIZE_MULTIPLIER) + +#ifndef TPE_APPROXIMATE_LENGTH + #define TPE_APPROXIMATE_LENGTH 0 /**< whether or not use length/distance + approximation rather than exact + calculation (1 is faster but less + accurate), beware of possible lower + stability */ +#endif + +#if !TPE_APPROXIMATE_LENGTH + #define TPE_DISTANCE TPE_dist + #define TPE_LENGTH TPE_vec3Len +#else + #define TPE_DISTANCE TPE_distApprox + #define TPE_LENGTH TPE_vec3LenApprox +#endif + +#ifndef TPE_LOG + #define TPE_LOG(s) ; // redefine to some print function to show debug logs +#endif + +#ifndef TPE_LOW_SPEED +/** Speed, in TPE_Units per ticks, that is considered low (used e.g. for auto + deactivation of bodies). */ + #define TPE_LOW_SPEED 30 +#endif + +#ifndef TPE_RESHAPE_TENSION_LIMIT +/** Tension limit, in TPE_Units, after which a non-soft body will be reshaped. + Smaller number will keep more stable shapes but will cost more performance. */ + #define TPE_RESHAPE_TENSION_LIMIT 20 +#endif + +#ifndef TPE_RESHAPE_ITERATIONS +/** How many iterations of reshaping will be performed by the step function if + the body's shape needs to be reshaped. Greater number will keep shapes more + stable but will cost some performance. */ + #define TPE_RESHAPE_ITERATIONS 3 +#endif + +#ifndef TPE_DEACTIVATE_AFTER +/** After how many ticks of low speed should a body be disabled. This mustn't + be greater than 255. */ + #define TPE_DEACTIVATE_AFTER 128 +#endif + +#ifndef TPE_LIGHT_DEACTIVATION +/** When a body is activated by a collision, its deactivation counter will be + set to this value, i.e. after a collision the body will be prone to deactivate + sooner than normally. This is to handle situations with many bodies touching + each other that would normally keep activating each other, never coming to + rest. */ + #define TPE_LIGHT_DEACTIVATION \ + (TPE_DEACTIVATE_AFTER - TPE_DEACTIVATE_AFTER / 10) +#endif + +#ifndef TPE_TENSION_ACCELERATION_DIVIDER +/** Number by which the base acceleration (TPE_FRACTIONS_PER_UNIT per tick + squared) caused by the connection tension will be divided. This should be + power of 2. */ + #define TPE_TENSION_ACCELERATION_DIVIDER 32 +#endif + +#ifndef TPE_TENSION_ACCELERATION_THRESHOLD +/** Limit within which acceleration caused by connection tension won't be + applied. */ + #define TPE_TENSION_ACCELERATION_THRESHOLD 5 +#endif + +#ifndef TPE_TENSION_GREATER_ACCELERATION_THRESHOLD +/** Connection tension threshold after which twice as much acceleration will + be applied. This helps prevent diverting joints that are "impaled" by + environment.*/ + #define TPE_TENSION_GREATER_ACCELERATION_THRESHOLD \ + (TPE_TENSION_ACCELERATION_THRESHOLD * 3) +#endif + +#ifndef TPE_COLLISION_RESOLUTION_ITERATIONS +/** Maximum number of iterations to try to uncollide two colliding bodies. */ + #define TPE_COLLISION_RESOLUTION_ITERATIONS 16 +#endif + +#ifndef TPE_COLLISION_RESOLUTION_MARGIN +/** Margin, in TPE_Units, by which a body will be shifted back to get out of + collision. */ + #define TPE_COLLISION_RESOLUTION_MARGIN (TPE_F / 64) +#endif + +#ifndef TPE_NONROTATING_COLLISION_RESOLVE_ATTEMPTS +/** Number of times a collision of nonrotating bodies with environment will be + attempted to resolve. This probably won't have great performance implications + as complex collisions of this kind should be relatively rare. */ + #define TPE_NONROTATING_COLLISION_RESOLVE_ATTEMPTS 8 +#endif + +#ifndef TPE_APPROXIMATE_NET_SPEED +/** Whether to use a fast approximation for calculating net speed of bodies + which increases performance a bit. */ + #define TPE_APPROXIMATE_NET_SPEED 1 +#endif + +#define TPE_PRINTF_VEC3(v) printf("[%d %d %d]",(v).x,(v).y,(v).z); + +typedef struct +{ + TPE_Unit x; + TPE_Unit y; + TPE_Unit z; +} TPE_Vec3; + +/** Keeps given point within specified axis-aligned box. This can be used e.g. + to smooth rendered movement of jittering physics bodies. */ +TPE_Vec3 TPE_vec3KeepWithinBox(TPE_Vec3 point, TPE_Vec3 boxCenter, + TPE_Vec3 boxMaxVect); + +TPE_Vec3 TPE_vec3KeepWithinDistanceBand(TPE_Vec3 point, TPE_Vec3 center, + TPE_Unit minDistance, TPE_Unit maxDistance); + +TPE_Vec3 TPE_vec3(TPE_Unit x, TPE_Unit y, TPE_Unit z); +TPE_Vec3 TPE_vec3Minus(TPE_Vec3 v1, TPE_Vec3 v2); +TPE_Vec3 TPE_vec3Plus(TPE_Vec3 v1, TPE_Vec3 v2); +TPE_Vec3 TPE_vec3Cross(TPE_Vec3 v1, TPE_Vec3 v2); +TPE_Vec3 TPE_vec3Project(TPE_Vec3 v, TPE_Vec3 base); +TPE_Vec3 TPE_vec3ProjectNormalized(TPE_Vec3 v, TPE_Vec3 baseNormalized); +TPE_Vec3 TPE_vec3Times(TPE_Vec3 v, TPE_Unit units); +TPE_Vec3 TPE_vec3TimesPlain(TPE_Vec3 v, TPE_Unit q); +TPE_Vec3 TPE_vec3Normalized(TPE_Vec3 v); + +TPE_Unit TPE_vec3Dot(TPE_Vec3 v1, TPE_Vec3 v2); +TPE_Unit TPE_vec3Len(TPE_Vec3 v); +TPE_Unit TPE_vec3LenApprox(TPE_Vec3 v); + +/** Returns an angle in TPE_Units (see angle conventions) of a 2D vector with + the X axis, CCW. */ +TPE_Unit TPE_vec2Angle(TPE_Unit x, TPE_Unit y); + +/** Keeps given value within specified range. This can be used e.g. for movement + smoothing. */ +TPE_Unit TPE_keepInRange(TPE_Unit x, TPE_Unit xMin, TPE_Unit xMax); + +static inline TPE_Unit TPE_abs(TPE_Unit x); +static inline TPE_Unit TPE_max(TPE_Unit a, TPE_Unit b); +static inline TPE_Unit TPE_min(TPE_Unit a, TPE_Unit b); +static inline TPE_Unit TPE_nonZero(TPE_Unit x); +static inline TPE_Unit TPE_dist(TPE_Vec3 p1, TPE_Vec3 p2); +static inline TPE_Unit TPE_distApprox(TPE_Vec3 p1, TPE_Vec3 p2); +TPE_Unit TPE_sqrt(TPE_Unit x); + +/** Compute sine, TPE_FRACTIONS_PER_UNIT as argument corresponds to 2 * PI + radians. Returns a number from -TPE_FRACTIONS_PER_UNIT to + TPE_FRACTIONS_PER_UNIT. */ +TPE_Unit TPE_sin(TPE_Unit x); +TPE_Unit TPE_cos(TPE_Unit x); +TPE_Unit TPE_atan(TPE_Unit x); + +typedef struct +{ + TPE_Vec3 position; + TPE_UnitReduced velocity[3]; ///< not TPE_Vec3 to save size + uint8_t sizeDivided; /**< size (radius, ...), for saving space divided by + TPE_JOINT_SIZE_MULTIPLIER */ +} TPE_Joint; + +typedef struct +{ + uint8_t joint1; + uint8_t joint2; + uint16_t length; ///< connection's preferred length, uint16_t saves space +} TPE_Connection; + +#define TPE_BODY_FLAG_DEACTIVATED 1 /**< Not being updated due to low energy, + "sleeping", will be woken by + collisions etc. */ +#define TPE_BODY_FLAG_NONROTATING 2 /**< When set, the body won't rotate, + will only move linearly. Here the + velocity of the body's first joint + is the velocity of the whole + body. */ +#define TPE_BODY_FLAG_DISABLED 4 /**< Disabled, not taking part in + simulation. */ +#define TPE_BODY_FLAG_SOFT 8 /**< Soft connections, effort won't be + made to keep the body's shape. */ +#define TPE_BODY_FLAG_SIMPLE_CONN 16 /**< Simple connections, don't zero out + antagonist forces or apply + connection friction, can increase + performance. */ +#define TPE_BODY_FLAG_ALWAYS_ACTIVE 32 /**< Will never deactivate due to low + energy. */ + +/** Function used for defining static environment, working similarly to an SDF + (signed distance function). The parameters are: 3D point P, max distance D. + The function should behave like this: if P is inside the solid environment + volume, P will be returned; otherwise closest point (by Euclidean distance) to + the solid environment volume from P will be returned, except for a case when + this closest point would be further away than D, in which case any arbitrary + point further away than D may be returned (this allows for optimizations). */ +typedef TPE_Vec3 (*TPE_ClosestPointFunction)(TPE_Vec3, TPE_Unit); + +/** Function that can be used as a joint-joint or joint-environment collision + callback, parameters are following: body1 index, joint1 index, body2 index, + joint2 index, collision world position. If body1 index is the same as body1 + index, then collision type is body-environment, otherwise it is body-body + type. The function has to return either 1 if the collision is to be allowed + or 0 if it is to be discarded. This can besides others be used to disable + collisions between some bodies. */ +typedef uint8_t (*TPE_CollisionCallback)(uint16_t, uint16_t, uint16_t, uint16_t, + TPE_Vec3); + +/** Function used by the debug drawing functions to draw individual pixels to + the screen. The parameters are following: pixel x, pixel y, pixel color. */ +typedef void (*TPE_DebugDrawFunction)(uint16_t, uint16_t, uint8_t); + +/** Physics body made of spheres (each of same weight but possibly different + radia) connected by elastic springs. */ +typedef struct +{ + TPE_Joint *joints; + uint8_t jointCount; + TPE_Connection *connections; + uint8_t connectionCount; + TPE_UnitReduced jointMass; ///< mass of a single joint + TPE_UnitReduced friction; ///< friction of each joint + TPE_UnitReduced elasticity; ///< elasticity of each joint + uint8_t flags; + uint8_t deactivateCount; +} TPE_Body; + +typedef struct +{ + TPE_Body *bodies; + uint16_t bodyCount; + TPE_ClosestPointFunction environmentFunction; + TPE_CollisionCallback collisionCallback; +} TPE_World; + +/** Tests the mathematical validity of given closest point function (function + representing the physics environment), i.e. whether for example approaching + some closest point in a straight line keeps approximately the same closest + point. Note that this function may take a long time to complete, especially + with higher gridResolution values and more complex environment functions. You + should use this function to test your environment function, especially if you + create functions for your own shapes etc. The cornerFrom and cornerTo points + are corners of an axis-aligned box within which testing will take place, + gridResolution defines numbers of points (i.e. step length) along each + dimension to test (recommended e.g. 64), allowedError says error within which + points will be considered the same (recommended range approx. 10 to 200). If + testing is successful, 1 is returned, otherwise 0 is returned and the point + around which error was detected is returned in errorPoint (unless the pointer + is 0 in which case it is ignored). */ +uint8_t TPE_testClosestPointFunction(TPE_ClosestPointFunction f, + TPE_Vec3 cornerFrom, TPE_Vec3 cornerTo, uint8_t gridResolution, + TPE_UnitReduced allowedError, TPE_Vec3 *errorPoint); + +void TPE_bodyInit(TPE_Body *body, + TPE_Joint *joints, uint8_t jointCount, + TPE_Connection *connections, uint8_t connectionCount, + TPE_Unit mass); + +void TPE_worldInit(TPE_World *world, + TPE_Body *bodies, uint16_t bodyCount, + TPE_ClosestPointFunction environmentFunction); + +/** Gets orientation (rotation) of a body from a position of three of its + joints. The vector from joint1 to joint2 is considered the body's forward + direction, the vector from joint1 to joint3 its right direction. The returned + rotation is in Euler angles (see rotation conventions). */ +TPE_Vec3 TPE_bodyGetRotation(const TPE_Body *body, uint16_t joint1, + uint16_t joint2, uint16_t joint3); + +void TPE_vec3Normalize(TPE_Vec3 *v); + +/** Rotates a 3D point by given Euler angle rotation (see rotation + conventions). */ +TPE_Vec3 TPE_pointRotate(TPE_Vec3 point, TPE_Vec3 rotation); + +/** Returns an inverse rotation to given rotation, in Euler angles (see rotation + conventions). */ +TPE_Vec3 TPE_rotationInverse(TPE_Vec3 rotation); + +/** Returns a connection tension, i.e. a signed percentage difference against + desired length (TPE_FRACTIONS_PER_UNIT means 100%). */ +static inline TPE_Unit TPE_connectionTension(TPE_Unit length, + TPE_Unit desiredLength); + +/** Rotates a rotation specified in Euler angles by given axis + angle (see + rotation conventions). Returns a rotation in Eurler angles. */ +TPE_Vec3 TPE_rotationRotateByAxis(TPE_Vec3 rotation, TPE_Vec3 rotationByAxis); + +/** Computes the formula of a 1D collision of rigid bodies. */ +void TPE_getVelocitiesAfterCollision(TPE_Unit *v1, TPE_Unit *v2, TPE_Unit m1, + TPE_Unit m2, TPE_Unit elasticity); + +/** Computes orientation/rotation (see docs for orientation format) from two + vectors (which should be at least close to being perpendicular and do NOT + need to be normalized). This can be used to determine orientation of a body + from a relative position of its joints. */ +TPE_Vec3 TPE_rotationFromVecs(TPE_Vec3 forward, TPE_Vec3 right); + +TPE_Joint TPE_joint(TPE_Vec3 position, TPE_Unit size); + +/** Mostly for internal use, resolves a potential collision of two joints in a + way that keeps the joints outside provided environment (if the function + pointer is not 0). Returns 1 if joints collided or 0 otherwise. */ +uint8_t TPE_jointsResolveCollision(TPE_Joint *j1, TPE_Joint *j2, + TPE_Unit mass1, TPE_Unit mass2, TPE_Unit elasticity, TPE_Unit friction, + TPE_ClosestPointFunction env); + +/** Mostly for internal use, tests and potentially resolves a collision between + a joint and environment, returns 0 if no collision happened, 1 if it happened + and was resolved normally and 2 if it couldn't be resolved normally. */ +uint8_t TPE_jointEnvironmentResolveCollision(TPE_Joint *joint, TPE_Unit + elasticity, TPE_Unit friction, TPE_ClosestPointFunction env); + +/** Tests whether a body is currently colliding with the environment. */ +uint8_t TPE_bodyEnvironmentCollide(const TPE_Body *body, + TPE_ClosestPointFunction env); + +/** Mostly for internal use, tests and potentially resolves a collision of a + body with the environment, returns 1 if collision happened or 0 otherwise. */ +uint8_t TPE_bodyEnvironmentResolveCollision(TPE_Body *body, + TPE_ClosestPointFunction env); + +TPE_Vec3 TPE_bodyGetLinearVelocity(const TPE_Body *body); + +/** Computes the minimum bounding box of given body. */ +void TPE_bodyGetAABB(const TPE_Body *body, TPE_Vec3 *vMin, TPE_Vec3 *vMax); + +/** Computes a bounding sphere of a body which is not minimal but faster to + compute than the minimum bounding sphere. */ +void TPE_bodyGetFastBSphere(const TPE_Body *body, TPE_Vec3 *center, + TPE_Unit *radius); + +/** Computes the minimum bounding sphere of a body (there is another function + for a faster approximate bounding sphere). */ +void TPE_bodyGetBSphere(const TPE_Body *body, TPE_Vec3 *center, + TPE_Unit *radius); + +uint8_t TPE_checkOverlapAABB(TPE_Vec3 v1Min, TPE_Vec3 v1Max, TPE_Vec3 v2Min, + TPE_Vec3 v2Max); + +/** Mostly for internal use, checks and potentiall resolves collision of two + bodies so as to keep them outside given environment. Returns 1 if collision + happened or 0 otherwise. */ +uint8_t TPE_bodiesResolveCollision(TPE_Body *b1, TPE_Body *b2, + TPE_ClosestPointFunction env); + +/** Pins a joint of a body to specified location in space (sets its location + and zeros its velocity). */ +void TPE_jointPin(TPE_Joint *joint, TPE_Vec3 position); + +/** "Fakes" a rotation of a moving sphere by rotating it in the direction of + its movement; this can create the illusion of the sphere actually rotating + due to friction even if the physics sphere object (a body with a single joint) + isn't rotating at all. Returns a rotation in the "about axis" format (see + library conventions). */ +TPE_Vec3 TPE_fakeSphereRotation(TPE_Vec3 position1, TPE_Vec3 position2, + TPE_Unit radius); + +/** Casts a ray against environment and returns the closest hit of a surface. If + no surface was hit, a vector with all elements equal to TPE_INFINITY will be + returned. The function internally works differently for outside rays (rays + cast from the outside of the environment) and inside rays. Outside rays can + be traced with raymarching and will be processed very quickly and precisely; + in this case if any intersection is found, the function will try to return a + point outside (not guaranteed) the environment that's just in front of the hit + surface. Inside rays are difficult and slow to trace because environment + function won't provide distance, so the results aren't guaranteed to be + precise (the ray may miss some intersections); here rays will be traced by + given step (insideStepSize) and eventually iterated a bit towards the + intersection -- if any intersection is found, the function will try to return + a point inside (not guaranteed) the environment just before the hit + surface. */ +TPE_Vec3 TPE_castEnvironmentRay(TPE_Vec3 rayPos, TPE_Vec3 rayDir, + TPE_ClosestPointFunction environment, TPE_Unit insideStepSize, + TPE_Unit rayMarchMaxStep, uint32_t maxSteps); + +/** Casts a ray against bodies in a world (ignoring the environment), returns + the position of the closest hit as well as the hit body's index in bodyIndex + (unless the bodyIndex pointer is 0 in which case it is ignored). Similarly + with jointIndex. If no hit is found a vector with all elements equal to + TPE_INFINITY will be returned and bodyIndex will be -1. A specific body can be + excluded with excludeBody (negative value will just make this parameter + ignored). */ +TPE_Vec3 TPE_castBodyRay(TPE_Vec3 rayPos, TPE_Vec3 rayDir, int16_t excludeBody, + const TPE_World *world, int16_t *bodyIndex, int16_t *jointIndex); + +/** Performs one step (tick, frame, ...) of the physics world simulation + including updating positions and velocities of bodies, collision detection and + resolution, possible reshaping or deactivation of inactive bodies etc. The + time length of the step is relative to all other units but it's ideal if it is + 1/30th of a second. */ +void TPE_worldStep(TPE_World *world); + +void TPE_worldDeactivateAll(TPE_World *world); +void TPE_worldActivateAll(TPE_World *world); + +TPE_Unit TPE_worldGetNetSpeed(const TPE_World *world); +TPE_Unit TPE_bodyGetNetSpeed(const TPE_Body *body); +TPE_Unit TPE_bodyGetAverageSpeed(const TPE_Body *body); +void TPE_bodyMultiplyNetSpeed(TPE_Body *body, TPE_Unit factor); +void TPE_bodyLimitAverageSpeed(TPE_Body *body, TPE_Unit speedMin, + TPE_Unit speedMax); + +/** Deactivates a body (puts it to sleep until another collision or force wake + up). */ +void TPE_bodyDeactivate(TPE_Body *body); + +static inline uint8_t TPE_bodyIsActive(const TPE_Body *body); + +/** Attempts to shift the joints of a soft body so that the tension of all + springs becomes zero while keeping the joints near their current position. + This function performs one iteration of the equalizing algorithm and doesn't + guarantee a perfect solution, it may help to run multiple iterations (call + this function multiple times). */ +void TPE_bodyReshape(TPE_Body *body, TPE_ClosestPointFunction + environmentFunction); + +/** Mostly for internal use, performs some "magic" on body connections, mainly + cancelling out of velocities going against each other and also applying + connection friction in soft bodies. The strong parameter indicates if the + body is soft or not. */ +void TPE_bodyCancelOutVelocities(TPE_Body *body, uint8_t strong); + +/** Moves a body by certain offset. */ +void TPE_bodyMoveBy(TPE_Body *body, TPE_Vec3 offset); + +/** Moves a body (its center of mass) to given position. */ +void TPE_bodyMoveTo(TPE_Body *body, TPE_Vec3 position); + +/** Zeros velocities of all soft body joints. */ +void TPE_bodyStop(TPE_Body *body); + +void TPE_bodyActivate(TPE_Body *body); + +/** Adds velocity to a soft body. */ +void TPE_bodyAccelerate(TPE_Body *body, TPE_Vec3 velocity); + +void TPE_bodyApplyGravity(TPE_Body *body, TPE_Unit downwardsAccel); + +/** Adds angular velocity to a soft body. The rotation vector specifies the axis + of rotation by its direction and angular velocity by its magnitude (magnitude + of TPE_FRACTIONS_PER_UNIT will add linear velocity of TPE_FRACTIONS_PER_UNIT + per tick to a point in the distance of TPE_FRACTIONS_PER_UNIT from the + rotation axis). */ +void TPE_bodySpin(TPE_Body *body, TPE_Vec3 rotation); + +/** Same as TPE_bodySpin but additionally allows to specify the center of + the spin. */ +void TPE_bodySpinWithCenter(TPE_Body *body, TPE_Vec3 rotation, TPE_Vec3 center); + +/** Instantly rotates a body about an axis (see library conventions for + the rotation format). */ +void TPE_bodyRotateByAxis(TPE_Body *body, TPE_Vec3 rotation); + +/** Computes the center of mass of a body. This averages the position of all + joints; note that if you need, you may estimate the center of the body faster, + e.g. by taking a position of a single "center joint", or averaging just 2 + extreme points. */ +TPE_Vec3 TPE_bodyGetCenterOfMass(const TPE_Body *body); + +/** Draws a debug view of a 3D physics world using a provided pixel drawing + function. This can be used to overlay a simple visualization of the physics + objects to your main render, to spot exact borders of objects etc. The + function draws simple dotted lines and circles with different "colors" for + different types of objects (joints, connections, environemnt). camPos, camRot + and camView should match the camera settings of your main renderer. CamView.x + is horizontal resolution in pixels, camView.y is the vertical resolution, + CamView.z says the camera focal length (~FOV) in TPE_Units (0 means + orthographic projection). envGridRes is the resolution of an environment probe + grid (the function will probe points in space and draw borders of the physics + environemnt), envGridSize is the size (int TPE_Units) of the grid cell. Note + the function may be slow (reducing envGridRes can help, workable value can be + e.g. 16). */ +void TPE_worldDebugDraw(TPE_World *world, TPE_DebugDrawFunction drawFunc, + TPE_Vec3 camPos, TPE_Vec3 camRot, TPE_Vec3 camView, uint16_t envGridRes, + TPE_Unit envGridSize); + +#define TPE_DEBUG_COLOR_CONNECTION 0 +#define TPE_DEBUG_COLOR_JOINT 1 +#define TPE_DEBUG_COLOR_ENVIRONMENT 2 +#define TPE_DEBUG_COLOR_INACTIVE 3 + +uint32_t TPE_jointHash(const TPE_Joint *joint); +uint32_t TPE_connectionHash(const TPE_Connection *connection); +uint32_t TPE_bodyHash(const TPE_Body *body); + +/** Computes 32 bit hash of the world, useful for checking if two states of the + world differ. The function takes into account most of the relevant state but + possibly not all of it, for details check the code. */ +uint32_t TPE_worldHash(const TPE_World *world); + +// FUNCTIONS FOR GENERATING BODIES + +void TPE_makeBox(TPE_Joint joints[8], TPE_Connection connections[16], + TPE_Unit width, TPE_Unit depth, TPE_Unit height, TPE_Unit jointSize); +void TPE_makeCenterBox(TPE_Joint joints[9], TPE_Connection connections[18], + TPE_Unit width, TPE_Unit depth, TPE_Unit height, TPE_Unit jointSize); +void TPE_makeRect(TPE_Joint joints[4], TPE_Connection connections[6], + TPE_Unit width, TPE_Unit depth, TPE_Unit jointSize); +void TPE_makeTriangle(TPE_Joint joints[3], TPE_Connection connections[3], + TPE_Unit sideLength, TPE_Unit jointSize); +void TPE_makeCenterRect(TPE_Joint joints[5], TPE_Connection connections[8], + TPE_Unit width, TPE_Unit depth, TPE_Unit jointSize); +void TPE_makeCenterRectFull(TPE_Joint joints[5], TPE_Connection connections[10], + TPE_Unit width, TPE_Unit depth, TPE_Unit jointSize); +void TPE_make2Line(TPE_Joint joints[2], TPE_Connection connections[1], + TPE_Unit length, TPE_Unit jointSize); + +// FUNCTIONS FOR BUILDING ENVIRONMENT + +TPE_Vec3 TPE_envAABoxInside(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 size); +TPE_Vec3 TPE_envAABox(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 maxCornerVec); +TPE_Vec3 TPE_envBox(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 maxCornerVec, + TPE_Vec3 rotation); +TPE_Vec3 TPE_envSphere(TPE_Vec3 point, TPE_Vec3 center, TPE_Unit radius); +TPE_Vec3 TPE_envSphereInside(TPE_Vec3 point, TPE_Vec3 center, TPE_Unit radius); +TPE_Vec3 TPE_envHalfPlane(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 normal); +TPE_Vec3 TPE_envGround(TPE_Vec3 point, TPE_Unit height); +TPE_Vec3 TPE_envInfiniteCylinder(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 + direction, TPE_Unit radius); +TPE_Vec3 TPE_envCylinder(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 direction, + TPE_Unit radius); +TPE_Vec3 TPE_envCone(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 direction, + TPE_Unit radius); +TPE_Vec3 TPE_envLineSegment(TPE_Vec3 point, TPE_Vec3 a, TPE_Vec3 b); +TPE_Vec3 TPE_envHeightmap(TPE_Vec3 point, TPE_Vec3 center, TPE_Unit gridSize, + TPE_Unit (*heightFunction)(int32_t x, int32_t y), TPE_Unit maxDist); + +/** Environment function for triagnular prism, e.g. for ramps. The sides array + contains three 2D coordinates of points of the triangle in given plane with + respect to the center. WARNING: the points must be specified in counter + clowckwise direction! The direction var specified axis direction (0, 1 or + 2).*/ +TPE_Vec3 TPE_envAATriPrism(TPE_Vec3 point, TPE_Vec3 center, + const TPE_Unit sides[6], TPE_Unit depth, uint8_t direction); + +/* The following are helper macros for creating a union of shapes inside an + environment function and accelerating them with bounding volumes. */ + +#define TPE_ENV_START(test,point) TPE_Vec3 _pBest = test, _pTest; \ + TPE_Unit _dBest = TPE_DISTANCE(_pBest,point), _dTest; \ + (void)(_pBest); (void)(_dBest); (void)(_dTest); (void)(_pTest); // supress war + +#define TPE_ENV_NEXT(test,point) \ + { if (_pBest.x == point.x && _pBest.y == point.y && _pBest.z == point.z) \ + return _pBest; \ + _pTest = test; _dTest = TPE_DISTANCE(_pTest,point); \ + if (_dTest < _dBest) { _pBest = _pTest; _dBest = _dTest; } } + +#define TPE_ENV_END return _pBest; + +#define TPE_ENV_BCUBE_TEST(bodyBCubeC,bodyBCubeR,envBCubeC,envBCubeR) ( \ + (TPE_abs(envBCubeC.x - bodyBCubeC.x) <= ((bodyBCubeR) + (envBCubeR))) && \ + (TPE_abs(envBCubeC.y - bodyBCubeC.y) <= ((bodyBCubeR) + (envBCubeR))) && \ + (TPE_abs(envBCubeC.z - bodyBCubeC.z) <= ((bodyBCubeR) + (envBCubeR)))) + +#define TPE_ENV_BSPHERE_TEST(bodyBSphereC,bodyBSphereR,envBSphereC,envBSphereR)\ + (TPE_DISTANCE(bodyBSphereC,envBSphereC) <= ((bodyBSphereR) + (envBSphereR))) + +//------------------------------------------------------------------------------ +// privates: + +uint16_t _TPE_body1Index, _TPE_body2Index, _TPE_joint1Index, _TPE_joint2Index; +TPE_CollisionCallback _TPE_collisionCallback; + +static inline TPE_Unit TPE_nonZero(TPE_Unit x) +{ + return x != 0 ? x : 1; +} + +static inline TPE_Unit TPE_connectionTension(TPE_Unit length, + TPE_Unit desiredLength) +{ + return (length * TPE_F) / desiredLength + - TPE_F; +} + +TPE_Joint TPE_joint(TPE_Vec3 position, TPE_Unit size) +{ + TPE_Joint result; + + result.velocity[0] = 0; + result.velocity[1] = 0; + result.velocity[2] = 0; + + result.position = position; + + size /= TPE_JOINT_SIZE_MULTIPLIER; + + if (size > 0xff) + { + TPE_LOG("WARNING: joint size too big in TPE_joint"); + } + + result.sizeDivided = size; + + return result; +} + +TPE_Vec3 TPE_vec3(TPE_Unit x, TPE_Unit y, TPE_Unit z) +{ + TPE_Vec3 r; + + r.x = x; + r.y = y; + r.z = z; + + return r; +} + +TPE_Unit TPE_sqrt(TPE_Unit x) +{ + int8_t sign = 1; + + if (x < 0) + { + sign = -1; + x *= -1; + } + + uint32_t result = 0; + uint32_t a = x; + uint32_t b = 1u << 30; + + while (b > a) + b >>= 2; + + while (b != 0) + { + if (a >= result + b) + { + a -= result + b; + result = result + 2 * b; + } + + b >>= 2; + result >>= 1; + } + + return result * sign; +} + +TPE_Unit TPE_vec3Len(TPE_Vec3 v) +{ +#define ANTI_OVERFLOW 25000 + if (v.x < ANTI_OVERFLOW && v.x > -1 * ANTI_OVERFLOW && + v.y < ANTI_OVERFLOW && v.y > -1 * ANTI_OVERFLOW && + v.z < ANTI_OVERFLOW && v.z > -1 * ANTI_OVERFLOW) + { + return TPE_sqrt(v.x * v.x + v.y * v.y + v.z * v.z); + } + else + { + v.x /= 32; v.y /= 32; v.z /= 32; + return TPE_sqrt(v.x * v.x + v.y * v.y + v.z * v.z) * 32; + } +#undef ANTI_OVERFLOW +} + +TPE_Unit TPE_vec3LenApprox(TPE_Vec3 v) +{ + // 48 sided polyhedron approximation + + if (v.x < 0) v.x *= -1; + if (v.y < 0) v.y *= -1; + if (v.z < 0) v.z *= -1; + + if (v.x < v.y) // order the coordinates + { + if (v.x < v.z) + { + if (v.y < v.z) + { // v.x < v.y < v.z + int32_t t = v.x; v.x = v.z; v.z = t; + } + else + { // v.x < v.z < v.y + int32_t t = v.x; v.x = v.y; v.y = t; + t = v.z; v.z = v.y; v.y = t; + } + } + else + { // v.z < v.x < v.y + int32_t t = v.x; v.x = v.y; v.y = t; + } + } + else + { + if (v.y < v.z) + { + if (v.x < v.z) + { // v.y < v.x < v.z + int32_t t = v.y; v.y = v.z; v.z = t; + t = v.x; v.x = v.y; v.y = t; + } + else + { // v.y < v.z < v.x + int32_t t = v.y; v.y = v.z; v.z = t; + } + } + } + + return (893 * v.x + 446 * v.y + 223 * v.z) / 1024; +} + +TPE_Unit TPE_dist(TPE_Vec3 p1, TPE_Vec3 p2) +{ + p1 = TPE_vec3Minus(p1,p2); + return TPE_vec3Len(p1); +} + +TPE_Unit TPE_distApprox(TPE_Vec3 p1, TPE_Vec3 p2) +{ + p1 = TPE_vec3Minus(p1,p2); + return TPE_vec3LenApprox(p1); +} + +void TPE_bodyInit(TPE_Body *body, + TPE_Joint *joints, uint8_t jointCount, + TPE_Connection *connections, uint8_t connectionCount, + TPE_Unit mass) +{ + body->joints = joints; + body->jointCount = jointCount; + body->connections = connections; + body->connectionCount = connectionCount; + body->deactivateCount = 0; + body->friction = TPE_F / 2; + body->elasticity = TPE_F / 2; + body->flags = 0; + body->jointMass = TPE_nonZero(mass / jointCount); + + for (uint32_t i = 0; i < connectionCount; ++i) + { + TPE_Unit d = TPE_DISTANCE( + joints[connections[i].joint1].position, + joints[connections[i].joint2].position); + + if (d > 0xffff) + { + TPE_LOG("WARNING: joint distance too long in TPE_bodyInit"); + } + + connections[i].length = d != 0 ? d : 1; // prevent later division by zero + } +} + +void TPE_worldInit(TPE_World *world, TPE_Body *bodies, uint16_t bodyCount, + TPE_ClosestPointFunction environmentFunction) +{ + world->bodies = bodies; + world->bodyCount = bodyCount; + world->environmentFunction = environmentFunction; + world->collisionCallback = 0; +} + +#define C(n,a,b) connections[n].joint1 = a; connections[n].joint2 = b; + +void TPE_make2Line(TPE_Joint joints[2], TPE_Connection connections[1], + TPE_Unit length, TPE_Unit jointSize) +{ + joints[0] = TPE_joint(TPE_vec3(length / 2,0,0),jointSize); + joints[1] = TPE_joint(TPE_vec3(length / -2,0,0),jointSize); + C(0, 0,1) +} + +void TPE_makeRect(TPE_Joint joints[4], TPE_Connection connections[6], + TPE_Unit width, TPE_Unit depth, TPE_Unit jointSize) +{ + width /= 2; + depth /= 2; + + for (uint8_t i = 0; i < 4; ++i) + joints[i] = TPE_joint(TPE_vec3((i % 2) ? -1 * width : width, + 0,(i / 2) ? - 1 * depth : depth),jointSize); + + C(0, 0,1) C(1, 0,2) C (2, 3,1) C(3, 3,2) + C(4, 0,3) C(5, 1,2) +} + +void TPE_makeCenterRect(TPE_Joint joints[5], TPE_Connection connections[8], + TPE_Unit width, TPE_Unit depth, TPE_Unit jointSize) +{ + TPE_makeRect(joints,connections,width,depth,jointSize); + + joints[4] = TPE_joint(TPE_vec3(0,0,0),jointSize); + + C(6, 0,4) C(7, 3,4) +} + +void TPE_makeCenterRectFull(TPE_Joint joints[5], TPE_Connection connections[10], + TPE_Unit width, TPE_Unit depth, TPE_Unit jointSize) +{ + TPE_makeCenterRect(joints,connections,width,depth,jointSize); + C(8, 1,4) C(9, 2,4) +} + +void TPE_makeTriangle(TPE_Joint joints[3], TPE_Connection connections[3], + TPE_Unit sideLength, TPE_Unit jointSize) +{ + joints[0] = TPE_joint(TPE_vec3(sideLength / 2,0, + TPE_sqrt((sideLength * sideLength) / 2) / 2),jointSize); + + joints[1] = joints[0]; + joints[1].position.x *= -1; + joints[2] = TPE_joint(TPE_vec3(0,0,-1 * joints[0].position.z),jointSize); + + C(0, 0,1) C(1, 1,2) C(2, 2,0) +} + +void TPE_makeBox(TPE_Joint joints[8], TPE_Connection connections[16], + TPE_Unit width, TPE_Unit depth, TPE_Unit height, TPE_Unit jointSize) +{ + width /= 2; + depth /= 2; + height /= 2; + + for (uint8_t i = 0; i < 8; ++i) + joints[i] = TPE_joint( + TPE_vec3( + (i % 2) ? width : (-1 * width), + ((i >> 2) % 2) ? height : (-1 * height), + ((i >> 1) % 2) ? depth : (-1 * depth)), + jointSize); + + C(0, 0,1) C(1, 1,3) C(2, 3,2) C(3, 2,0) // top + C(4, 4,5) C(5, 5,7) C(6, 7,6) C(7, 6,4) // bottom + C(8, 0,4) C(9, 1,5) C(10,3,7) C(11,2,6) // middle + C(12,0,7) C(13,1,6) C(14,2,5) C(15,3,4) // diagonal +} + +void TPE_makeCenterBox(TPE_Joint joints[9], TPE_Connection connections[18], + TPE_Unit width, TPE_Unit depth, TPE_Unit height, TPE_Unit jointSize) +{ + TPE_makeBox(joints,connections,width,depth,height,jointSize); + + joints[8] = TPE_joint(TPE_vec3(0,0,0),jointSize); + + C(16, 0,8) C(17, 7,8) +} + +#undef C + +void TPE_bodyDeactivate(TPE_Body *body) +{ + body->flags |= TPE_BODY_FLAG_DEACTIVATED; +} + +void TPE_worldStep(TPE_World *world) +{ + _TPE_collisionCallback = world->collisionCallback; + + for (uint16_t i = 0; i < world->bodyCount; ++i) + { + TPE_Body *body = world->bodies + i; + + if (body->flags & (TPE_BODY_FLAG_DEACTIVATED | TPE_BODY_FLAG_DISABLED)) + continue; + + TPE_Joint *joint = body->joints, *joint2; + + TPE_Vec3 origPos = body->joints[0].position; + + for (uint16_t j = 0; j < body->jointCount; ++j) // apply velocities + { + // non-rotating bodies will copy the 1st joint's velocity + + if (body->flags & TPE_BODY_FLAG_NONROTATING) + for (uint8_t k = 0; k < 3; ++k) + joint->velocity[k] = body->joints[0].velocity[k]; + + joint->position.x += joint->velocity[0]; + joint->position.y += joint->velocity[1]; + joint->position.z += joint->velocity[2]; + + joint++; + } + + TPE_Connection *connection = body->connections; + + TPE_Vec3 aabbMin, aabbMax; + + TPE_bodyGetAABB(body,&aabbMin,&aabbMax); + + _TPE_body1Index = i; + + _TPE_body2Index = _TPE_body1Index; + + uint8_t collided = + TPE_bodyEnvironmentResolveCollision(body,world->environmentFunction); + + if (body->flags & TPE_BODY_FLAG_NONROTATING) + { + /* Non-rotating bodies may end up still colliding after environment coll + resolvement (unlike rotating bodies where each joint is ensured separately + to not collide). So if still in collision, we try a few more times. If not + successful, we simply undo any shifts we've done. This should absolutely + prevent any body escaping out of environment bounds. */ + + for (uint8_t i = 0; i < TPE_NONROTATING_COLLISION_RESOLVE_ATTEMPTS; ++i) + { + if (!collided) + break; + + collided = + TPE_bodyEnvironmentResolveCollision(body,world->environmentFunction); + } + + if (collided && + TPE_bodyEnvironmentCollide(body,world->environmentFunction)) + TPE_bodyMoveBy(body,TPE_vec3Minus(origPos,body->joints[0].position)); + } + else // normal, rotating bodies + { + TPE_Unit bodyTension = 0; + + for (uint16_t j = 0; j < body->connectionCount; ++j) // joint tension + { + joint = &(body->joints[connection->joint1]); + joint2 = &(body->joints[connection->joint2]); + + TPE_Vec3 dir = TPE_vec3Minus(joint2->position,joint->position); + + TPE_Unit tension = TPE_connectionTension(TPE_LENGTH(dir), + connection->length); + + bodyTension += tension > 0 ? tension : -tension; + + if (tension > TPE_TENSION_ACCELERATION_THRESHOLD || + tension < -1 * TPE_TENSION_ACCELERATION_THRESHOLD) + { + TPE_vec3Normalize(&dir); + + if (tension > TPE_TENSION_GREATER_ACCELERATION_THRESHOLD || + tension < -1 * TPE_TENSION_GREATER_ACCELERATION_THRESHOLD) + { + /* apply twice the acceleration after a second threshold, not so + elegant but seems to work :) */ + dir.x *= 2; + dir.y *= 2; + dir.z *= 2; + } + + dir.x /= TPE_TENSION_ACCELERATION_DIVIDER; + dir.y /= TPE_TENSION_ACCELERATION_DIVIDER; + dir.z /= TPE_TENSION_ACCELERATION_DIVIDER; + + if (tension < 0) + { + dir.x *= -1; + dir.y *= -1; + dir.z *= -1; + } + + joint->velocity[0] += dir.x; + joint->velocity[1] += dir.y; + joint->velocity[2] += dir.z; + + joint2->velocity[0] -= dir.x; + joint2->velocity[1] -= dir.y; + joint2->velocity[2] -= dir.z; + } + + connection++; + } + + if (body->connectionCount > 0) + { + uint8_t hard = !(body->flags & TPE_BODY_FLAG_SOFT); + + if (hard) + { + TPE_bodyReshape(body,world->environmentFunction); + + bodyTension /= body->connectionCount; + + if (bodyTension > TPE_RESHAPE_TENSION_LIMIT) + for (uint8_t k = 0; k < TPE_RESHAPE_ITERATIONS; ++k) + TPE_bodyReshape(body,world->environmentFunction); + } + + if (!(body->flags & TPE_BODY_FLAG_SIMPLE_CONN)) + TPE_bodyCancelOutVelocities(body,hard); + } + } + + for (uint16_t j = 0; j < world->bodyCount; ++j) + { + if (j > i || (world->bodies[j].flags & TPE_BODY_FLAG_DEACTIVATED)) + { + // firstly quick-check collision of body AA bounding boxes + + TPE_Vec3 aabbMin2, aabbMax2; + TPE_bodyGetAABB(&world->bodies[j],&aabbMin2,&aabbMax2); + + _TPE_body2Index = j; + + if (TPE_checkOverlapAABB(aabbMin,aabbMax,aabbMin2,aabbMax2) && + TPE_bodiesResolveCollision(body,world->bodies + j, + world->environmentFunction)) + { + TPE_bodyActivate(body); + body->deactivateCount = TPE_LIGHT_DEACTIVATION; + + TPE_bodyActivate(world->bodies + j); + world->bodies[j].deactivateCount = TPE_LIGHT_DEACTIVATION; + } + } + } + + if (!(body->flags & TPE_BODY_FLAG_ALWAYS_ACTIVE)) + { + if (body->deactivateCount >= TPE_DEACTIVATE_AFTER) + { + TPE_bodyStop(body); + body->deactivateCount = 0; + body->flags |= TPE_BODY_FLAG_DEACTIVATED; + } + else if (TPE_bodyGetAverageSpeed(body) <= TPE_LOW_SPEED) + body->deactivateCount++; + else + body->deactivateCount = 0; + } + } +} + +void TPE_bodyActivate(TPE_Body *body) +{ + // the if check has to be here, don't remove it + + if (body->flags & TPE_BODY_FLAG_DEACTIVATED) + { + TPE_bodyStop(body); + body->flags &= ~TPE_BODY_FLAG_DEACTIVATED; + body->deactivateCount = 0; + } +} + +TPE_Unit TPE_bodyGetNetSpeed(const TPE_Body *body) +{ +#if TPE_APPROXIMATE_NET_SPEED + TPE_Vec3 netV = TPE_vec3(0,0,0); + + const TPE_Joint *joint = body->joints; + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + netV.x += TPE_abs(joint->velocity[0]); + netV.y += TPE_abs(joint->velocity[1]); + netV.z += TPE_abs(joint->velocity[2]); + + joint++; + } + + return TPE_vec3LenApprox(netV); +#else + TPE_Unit velocity = 0; + + const TPE_Joint *joint = body->joints; + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + velocity += TPE_LENGTH( + TPE_vec3(joint->velocity[0],joint->velocity[1],joint->velocity[2])); + + joint++; + } + + return velocity; +#endif +} + +TPE_Unit TPE_bodyGetAverageSpeed(const TPE_Body *body) +{ + return TPE_bodyGetNetSpeed(body) / body->jointCount; +} + +void TPE_bodyMultiplyNetSpeed(TPE_Body *body, TPE_Unit factor) +{ + TPE_Joint *joint = body->joints; + + for (uint16_t j = 0; j < body->jointCount; ++j) + { + for (uint8_t k = 0; k < 3; ++k) + joint->velocity[k] = + (((TPE_Unit) joint->velocity[k]) * factor) / + TPE_F; + + joint++; + } +} + +void TPE_bodyLimitAverageSpeed(TPE_Body *body, TPE_Unit speedMin, + TPE_Unit speedMax) +{ + for (uint8_t i = 0; i < 16; ++i) + { + TPE_Unit speed = TPE_bodyGetAverageSpeed(body); + + if (speed >= speedMin && speed <= speedMax) + return; + + TPE_Unit fraction = + (((speedMax + speedMin) / 2) * TPE_F) / + TPE_nonZero(speed); + + TPE_bodyMultiplyNetSpeed(body,fraction); + } +} + +void TPE_bodyCancelOutVelocities(TPE_Body *body, uint8_t strong) +{ + for (uint16_t i = 0; i < body->connectionCount; ++i) + { + TPE_Connection *c = &body->connections[i]; + + TPE_Joint *j1 = &(body->joints[c->joint1]); + TPE_Joint *j2 = &(body->joints[c->joint2]); + + TPE_Vec3 dir = TPE_vec3Minus(j2->position,j1->position); + + TPE_Unit len = TPE_nonZero(TPE_LENGTH(dir)); + + uint8_t cancel = 1; + + if (strong) + { + TPE_Unit tension = TPE_connectionTension(len,c->length); + + cancel = tension <= TPE_TENSION_ACCELERATION_THRESHOLD && + tension >= -1 * TPE_TENSION_ACCELERATION_THRESHOLD; + } + + if (cancel) + { + TPE_Vec3 + v1 = TPE_vec3(j1->velocity[0],j1->velocity[1],j1->velocity[2]), + v2 = TPE_vec3(j2->velocity[0],j2->velocity[1],j2->velocity[2]); + + dir.x = (dir.x * TPE_F) / len; // normalize + dir.y = (dir.y * TPE_F) / len; + dir.z = (dir.z * TPE_F) / len; + + v1 = TPE_vec3ProjectNormalized(v1,dir); + v2 = TPE_vec3ProjectNormalized(v2,dir); + + TPE_Vec3 avg = TPE_vec3Plus(v1,v2); + + avg.x /= 2; + avg.y /= 2; + avg.z /= 2; + + if (strong) + { + j1->velocity[0] = j1->velocity[0] - v1.x + avg.x; + j1->velocity[1] = j1->velocity[1] - v1.y + avg.y; + j1->velocity[2] = j1->velocity[2] - v1.z + avg.z; + + j2->velocity[0] = j2->velocity[0] - v2.x + avg.x; + j2->velocity[1] = j2->velocity[1] - v2.y + avg.y; + j2->velocity[2] = j2->velocity[2] - v2.z + avg.z; + } + else + { + j1->velocity[0] = j1->velocity[0] - v1.x + (v1.x * 3 + avg.x) / 4; + j1->velocity[1] = j1->velocity[1] - v1.y + (v1.y * 3 + avg.y) / 4; + j1->velocity[2] = j1->velocity[2] - v1.z + (v1.z * 3 + avg.z) / 4; + + j2->velocity[0] = j2->velocity[0] - v2.x + (v2.x * 3 + avg.x) / 4; + j2->velocity[1] = j2->velocity[1] - v2.y + (v2.y * 3 + avg.y) / 4; + j2->velocity[2] = j2->velocity[2] - v2.z + (v2.z * 3 + avg.z) / 4; + } + } + } +} + +void TPE_bodyReshape(TPE_Body *body, + TPE_ClosestPointFunction environmentFunction) +{ + for (uint16_t i = 0; i < body->connectionCount; ++i) + { + TPE_Connection *c = &body->connections[i]; + + TPE_Joint *j1 = &(body->joints[c->joint1]); + TPE_Joint *j2 = &(body->joints[c->joint2]); + + TPE_Vec3 dir = TPE_vec3Minus(j2->position,j1->position); + + TPE_Vec3 middle = TPE_vec3Plus(j1->position,j2->position); + + middle.x /= 2; + middle.y /= 2; + middle.z /= 2; + + TPE_vec3Normalize(&dir); + + dir.x = (dir.x * c->length) / TPE_F; + dir.y = (dir.y * c->length) / TPE_F; + dir.z = (dir.z * c->length) / TPE_F; + + TPE_Vec3 positionBackup = j1->position; + + j1->position.x = middle.x - dir.x / 2; + j1->position.y = middle.y - dir.y / 2; + j1->position.z = middle.z - dir.z / 2; + + if (environmentFunction != 0 && TPE_LENGTH(TPE_vec3Minus(j1->position, + environmentFunction(j1->position,TPE_JOINT_SIZE(*j1)))) + < TPE_JOINT_SIZE(*j1)) + j1->position = positionBackup; + + positionBackup = j2->position; + + j2->position.x = j1->position.x + dir.x; + j2->position.y = j1->position.y + dir.y; + j2->position.z = j1->position.z + dir.z; + + if (environmentFunction != 0 && TPE_LENGTH(TPE_vec3Minus(j2->position, + environmentFunction(j2->position,TPE_JOINT_SIZE(*j2)))) + < TPE_JOINT_SIZE(*j2)) + j2->position = positionBackup; + } +} + +TPE_Vec3 TPE_vec3Plus(TPE_Vec3 v1, TPE_Vec3 v2) +{ + v1.x += v2.x; + v1.y += v2.y; + v1.z += v2.z; + + return v1; +} + +TPE_Vec3 TPE_vec3Minus(TPE_Vec3 v1, TPE_Vec3 v2) +{ + v1.x -= v2.x; + v1.y -= v2.y; + v1.z -= v2.z; + + return v1; +} + +void TPE_vec3Normalize(TPE_Vec3 *v) +{ + TPE_Unit l = TPE_LENGTH(*v); + + if (l == 0) + *v = TPE_vec3(TPE_F,0,0); + else + { + if (l < 16) // too short vec would cause inacurracte normalization + { + v->x *= 8; + v->y *= 8; + v->z *= 8; + l = TPE_LENGTH(*v); + } + + v->x = (v->x * TPE_F) / l; + v->y = (v->y * TPE_F) / l; + v->z = (v->z * TPE_F) / l; + } +} + +TPE_Vec3 TPE_bodyGetRotation(const TPE_Body *body, uint16_t joint1, + uint16_t joint2, uint16_t joint3) +{ + return TPE_rotationFromVecs( + TPE_vec3Minus( + body->joints[joint2].position, + body->joints[joint1].position), + TPE_vec3Minus( + body->joints[joint3].position, + body->joints[joint1].position)); +} + +TPE_Vec3 TPE_bodyGetCenterOfMass(const TPE_Body *body) +{ + // note that joint sizes don't play a role as all weight the same + + TPE_Vec3 result = TPE_vec3(0,0,0); + + const TPE_Joint *j = body->joints; + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + result = TPE_vec3Plus(result,j->position); + j++; + } + + result.x /= body->jointCount; + result.y /= body->jointCount; + result.z /= body->jointCount; + + return result; +} + +void TPE_bodySpinWithCenter(TPE_Body *body, TPE_Vec3 rotation, TPE_Vec3 center) +{ + for (uint16_t i = 0; i < body->jointCount; ++i) + { + TPE_Joint *j = body->joints + i; + + TPE_Vec3 toPoint = TPE_vec3Minus(j->position,center); + + toPoint = TPE_vec3Project(toPoint,rotation); + toPoint = TPE_vec3Plus(center,toPoint); + toPoint = TPE_vec3Minus(j->position,toPoint); + toPoint = TPE_vec3Cross(toPoint,rotation); + + j->velocity[0] += toPoint.x; + j->velocity[1] += toPoint.y; + j->velocity[2] += toPoint.z; + } +} + +void TPE_bodySpin(TPE_Body *body, TPE_Vec3 rotation) +{ + TPE_bodySpinWithCenter(body,rotation,TPE_bodyGetCenterOfMass(body)); +} + +TPE_Vec3 _TPE_rotateByAxis(TPE_Vec3 p, TPE_Vec3 axisNormalized, TPE_Unit angle) +{ + TPE_Vec3 projected = TPE_vec3ProjectNormalized(p,axisNormalized); + + TPE_Vec3 a = TPE_vec3Minus(p,projected); + + if (a.x == 0 && a.y == 0 && a.z == 0) + return p; + + TPE_Vec3 b = TPE_vec3Cross(a,axisNormalized); + + return TPE_vec3Plus(projected,TPE_vec3Plus( + TPE_vec3Times(a,TPE_cos(angle)), + TPE_vec3Times(b,TPE_sin(angle)))); +} + +void TPE_bodyRotateByAxis(TPE_Body *body, TPE_Vec3 rotation) +{ + TPE_Vec3 bodyCenter = TPE_bodyGetCenterOfMass(body); + TPE_Unit angle = TPE_LENGTH(rotation); + + TPE_vec3Normalize(&rotation); + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + TPE_Vec3 toPoint = TPE_vec3Minus(body->joints[i].position,bodyCenter); + body->joints[i].position = TPE_vec3Plus(bodyCenter, + _TPE_rotateByAxis(toPoint,rotation,angle)); + } +} + +TPE_Vec3 TPE_vec3Cross(TPE_Vec3 v1, TPE_Vec3 v2) +{ + TPE_Vec3 r; + + r.x = (v1.y * v2.z - v1.z * v2.y) / TPE_F; + r.y = (v1.z * v2.x - v1.x * v2.z) / TPE_F; + r.z = (v1.x * v2.y - v1.y * v2.x) / TPE_F; + + return r; +} + +TPE_Vec3 TPE_vec3ProjectNormalized(TPE_Vec3 v, TPE_Vec3 baseNormalized) +{ + TPE_Vec3 r; + + TPE_Unit p = TPE_vec3Dot(v,baseNormalized); + + r.x = (p * baseNormalized.x) / TPE_F; + r.y = (p * baseNormalized.y) / TPE_F; + r.z = (p * baseNormalized.z) / TPE_F; + + return r; +} + +TPE_Vec3 TPE_vec3Project(TPE_Vec3 v, TPE_Vec3 base) +{ + TPE_vec3Normalize(&base); + + return TPE_vec3ProjectNormalized(v,base); +} + +void TPE_bodyMoveBy(TPE_Body *body, TPE_Vec3 offset) +{ + for (uint16_t i = 0; i < body->jointCount; ++i) + body->joints[i].position = TPE_vec3Plus(body->joints[i].position, + offset); +} + +void TPE_bodyApplyGravity(TPE_Body *body, TPE_Unit downwardsAccel) +{ + if ((body->flags & TPE_BODY_FLAG_DEACTIVATED) || + (body->flags & TPE_BODY_FLAG_DISABLED)) + return; + + for (uint16_t i = 0; i < body->jointCount; ++i) + body->joints[i].velocity[1] -= downwardsAccel; +} + +void TPE_bodyAccelerate(TPE_Body *body, TPE_Vec3 velocity) +{ + TPE_bodyActivate(body); + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + body->joints[i].velocity[0] += velocity.x; + body->joints[i].velocity[1] += velocity.y; + body->joints[i].velocity[2] += velocity.z; + } +} + +void TPE_bodyStop(TPE_Body *body) +{ + for (uint16_t i = 0; i < body->jointCount; ++i) + { + body->joints[i].velocity[0] = 0; + body->joints[i].velocity[1] = 0; + body->joints[i].velocity[2] = 0; + } +} + +void _TPE_bodyNonrotatingJointCollided(TPE_Body *b, int16_t jointIndex, + TPE_Vec3 origPos, uint8_t success) +{ + origPos = TPE_vec3Minus(b->joints[jointIndex].position,origPos); + + for (uint16_t i = 0; i < b->jointCount; ++i) + if (i != jointIndex) + { + b->joints[i].position = TPE_vec3Plus(b->joints[i].position,origPos); + + if (success) + for (uint8_t j = 0; j < 3; ++j) + b->joints[i].velocity[j] = b->joints[jointIndex].velocity[j]; + } +} + +TPE_Unit TPE_vec3Dot(TPE_Vec3 v1, TPE_Vec3 v2) +{ + return (v1.x * v2.x + v1.y * v2.y + v1.z * v2.z) / TPE_F; +} + +TPE_Unit TPE_cos(TPE_Unit x) +{ + return TPE_sin(x + TPE_F / 4); +} + +TPE_Unit TPE_sin(TPE_Unit x) +{ + int8_t sign = 1; + + if (x < 0) // odd function + { + x *= -1; + sign = -1; + } + + x %= TPE_F; + + if (x > TPE_F / 2) + { + x -= TPE_F / 2; + sign *= -1; + } + + TPE_Unit tmp = TPE_F - 2 * x; + + #define _PI2 5053 // 9.8696044 * TPE_F + return sign * // Bhaskara's approximation + (((32 * x * _PI2) / TPE_F) * tmp) / + ((_PI2 * (5 * TPE_F - (8 * x * tmp) / + TPE_F)) / TPE_F); + #undef _PI2 +} + +uint8_t TPE_bodiesResolveCollision(TPE_Body *b1, TPE_Body *b2, + TPE_ClosestPointFunction env) +{ + uint8_t r = 0; + + for (uint16_t i = 0; i < b1->jointCount; ++i) + for (uint16_t j = 0; j < b2->jointCount; ++j) + { + TPE_Vec3 origPos2 = b2->joints[j].position; + TPE_Vec3 origPos1 = b1->joints[i].position; + + _TPE_joint1Index = i; + _TPE_joint2Index = j; + + if (TPE_jointsResolveCollision(&(b1->joints[i]),&(b2->joints[j]), + b1->jointMass,b2->jointMass,(b1->elasticity + b2->elasticity) / 2, + (b1->friction + b2->friction) / 2,env)) + { + r = 1; + + if (b1->flags & TPE_BODY_FLAG_NONROTATING) + _TPE_bodyNonrotatingJointCollided(b1,i,origPos1,1); + + if (b2->flags & TPE_BODY_FLAG_NONROTATING) + _TPE_bodyNonrotatingJointCollided(b2,j,origPos2,1); + } + } + + return r; +} + +uint8_t TPE_jointsResolveCollision(TPE_Joint *j1, TPE_Joint *j2, + TPE_Unit mass1, TPE_Unit mass2, TPE_Unit elasticity, TPE_Unit friction, + TPE_ClosestPointFunction env) +{ + TPE_Vec3 dir = TPE_vec3Minus(j2->position,j1->position); + + TPE_Unit d = TPE_LENGTH(dir) - TPE_JOINT_SIZE(*j1) - TPE_JOINT_SIZE(*j2); + + if (d < 0) // collision? + { + if (_TPE_collisionCallback != 0 && !_TPE_collisionCallback( + _TPE_body1Index,_TPE_joint1Index,_TPE_body2Index,_TPE_joint2Index, + TPE_vec3Plus(j1->position,dir))) + return 0; + + TPE_Vec3 + pos1Backup = j1->position, + pos2Backup = j2->position; + + // separate joints, the shift distance will depend on the weight ratio: + + d = -1 * d + TPE_COLLISION_RESOLUTION_MARGIN; + + TPE_vec3Normalize(&dir); + + TPE_Unit ratio = (mass2 * TPE_F) / + TPE_nonZero(mass1 + mass2); + + TPE_Unit shiftDistance = (ratio * d) / TPE_F; + + TPE_Vec3 shift = TPE_vec3Times(dir,shiftDistance); + + j1->position = TPE_vec3Minus(j1->position,shift); + + shiftDistance = d - shiftDistance; + + shift = TPE_vec3Times(dir,shiftDistance); + + j2->position = TPE_vec3Plus(j2->position,shift); + + // compute new velocities: + + TPE_Unit v1, v2; + + TPE_Vec3 vel = TPE_vec3(j1->velocity[0],j1->velocity[1],j1->velocity[2]); + + vel = TPE_vec3Project(vel,dir); + + j1->velocity[0] = j1->velocity[0] - vel.x; + j1->velocity[1] = j1->velocity[1] - vel.y; + j1->velocity[2] = j1->velocity[2] - vel.z; + + /* friction explanation: Not physically correct (doesn't depend on load), + friction basically means we weighted average the velocities of the bodies + in the direction perpendicular to the hit normal, in the ratio of their + masses, friction coefficient just says how much of this effect we apply + (it multiplies the friction vectors we are subtracting) */ + + TPE_Vec3 frictionVec = + TPE_vec3(j1->velocity[0],j1->velocity[1],j1->velocity[2]); + + v1 = TPE_vec3Dot(vel,dir); + vel = TPE_vec3(j2->velocity[0],j2->velocity[1],j2->velocity[2]); + vel = TPE_vec3Project(vel,dir); + + j2->velocity[0] = j2->velocity[0] - vel.x; + j2->velocity[1] = j2->velocity[1] - vel.y; + j2->velocity[2] = j2->velocity[2] - vel.z; + + frictionVec = TPE_vec3Minus( + TPE_vec3(j2->velocity[0],j2->velocity[1],j2->velocity[2]), + frictionVec); + + v2 = TPE_vec3Dot(vel,dir); + + TPE_getVelocitiesAfterCollision(&v1,&v2,mass1,mass2,elasticity); + + vel = TPE_vec3Times(dir,v1); + +#define assignVec(j,i,d,o) \ + j->velocity[i] = j->velocity[i] + vel.d o (((frictionVec.d * ratio) / \ + TPE_F) * friction) / TPE_F; + + assignVec(j1,0,x,+) + assignVec(j1,1,y,+) + assignVec(j1,2,z,+) + + vel = TPE_vec3Times(dir,v2); + + ratio = TPE_F - ratio; + + assignVec(j2,0,x,-) + assignVec(j2,1,y,-) + assignVec(j2,2,z,-) + +#undef assignVec + + if (env != 0) + { + // ensure the joints aren't colliding with environment + + if (TPE_jointEnvironmentResolveCollision(j1,elasticity,friction,env) == 2) + j1->position = pos1Backup; + + if (TPE_jointEnvironmentResolveCollision(j2,elasticity,friction,env) == 2) + j2->position = pos2Backup; + } + + return 1; + } + + return 0; +} + +TPE_Vec3 TPE_vec3Times(TPE_Vec3 v, TPE_Unit units) +{ + v.x = (v.x * units) / TPE_F; + v.y = (v.y * units) / TPE_F; + v.z = (v.z * units) / TPE_F; + + return v; +} + +TPE_Vec3 TPE_vec3TimesPlain(TPE_Vec3 v, TPE_Unit q) +{ + v.x *= q; + v.y *= q; + v.z *= q; + + return v; +} + +void TPE_getVelocitiesAfterCollision(TPE_Unit *v1, TPE_Unit *v2, + TPE_Unit m1, TPE_Unit m2, TPE_Unit elasticity) +{ + /* In the following a lot of TPE_F cancel out, feel free to + check if confused. */ + + TPE_Unit m1Pm2 = TPE_nonZero(m1 + m2); + TPE_Unit v2Mv1 = TPE_nonZero(*v2 - *v1); + + TPE_Unit m1v1Pm2v2 = ((m1 * *v1) + (m2 * *v2)); + + *v1 = (((elasticity * m2 / TPE_F) * v2Mv1) + + m1v1Pm2v2) / m1Pm2; + + *v2 = (((elasticity * m1 / TPE_F) * -1 * v2Mv1) + + m1v1Pm2v2) / m1Pm2; +} + +uint8_t TPE_jointEnvironmentResolveCollision(TPE_Joint *joint, + TPE_Unit elasticity, TPE_Unit friction, TPE_ClosestPointFunction env) +{ + TPE_Vec3 toJoint = + TPE_vec3Minus(joint->position,env(joint->position,TPE_JOINT_SIZE(*joint))); + + TPE_Unit len = TPE_LENGTH(toJoint); + + if (len <= TPE_JOINT_SIZE(*joint)) + { + if (_TPE_collisionCallback != 0) + if (!_TPE_collisionCallback(_TPE_body1Index, + _TPE_joint1Index,_TPE_body2Index,_TPE_joint2Index, + TPE_vec3Minus(joint->position,toJoint))) + return 0; + + // colliding + + TPE_Vec3 positionBackup = joint->position, shift; + uint8_t success = 0; + + if (len > 0) + { + /* Joint center is still outside the geometry so we can determine the + normal and use it to shift it outside. This can still leave the joint + colliding though, so try to repeat it a few times. */ + + for (int i = 0; i < TPE_COLLISION_RESOLUTION_ITERATIONS; ++i) + { + shift = toJoint; + + TPE_vec3Normalize(&shift); + + shift = TPE_vec3Times(shift,TPE_JOINT_SIZE(*joint) - len + + TPE_COLLISION_RESOLUTION_MARGIN); + + joint->position = TPE_vec3Plus(joint->position,shift); + + toJoint = TPE_vec3Minus(joint->position,env(joint->position, + TPE_JOINT_SIZE(*joint))); + + len = TPE_LENGTH(toJoint); // still colliding? + + if (len >= TPE_JOINT_SIZE(*joint)) + { + success = 1; + break; + } + } + } + + if (!success) + { + /* Shifting along normal was unsuccessfull, now try different approach: + shift back by joint velocity. */ + + shift = TPE_vec3(-1 * joint->velocity[0],-1 * joint->velocity[1], + -1 * joint->velocity[2]); + + for (int i = 0; i < TPE_COLLISION_RESOLUTION_ITERATIONS; ++i) + { + joint->position = TPE_vec3Plus(joint->position,shift); + + toJoint = TPE_vec3Minus(joint->position, + env(joint->position,TPE_JOINT_SIZE(*joint))); + + len = TPE_LENGTH(toJoint); // still colliding? + + if (len >= TPE_JOINT_SIZE(*joint)) + { + success = 1; + break; + } + + shift.x /= 2; // decrease the step a bit + shift.y /= 2; + shift.z /= 2; + } + } + + if (success) + { + TPE_Vec3 vel = TPE_vec3(joint->velocity[0],joint->velocity[1], + joint->velocity[2]); + + vel = TPE_vec3Project(vel,shift); // parallel part of velocity + + TPE_Vec3 vel2 = TPE_vec3Minus( // perpendicular part of velocity + TPE_vec3(joint->velocity[0],joint->velocity[1],joint->velocity[2]),vel); + + vel2 = TPE_vec3Times(vel2,friction); + + vel = TPE_vec3Times(vel,TPE_F + elasticity); + + joint->velocity[0] -= vel.x + vel2.x; + joint->velocity[1] -= vel.y + vel2.y; + joint->velocity[2] -= vel.z + vel2.z; + } + else + { + TPE_LOG("WARNING: joint-environment collision couldn't be resolved"); + + joint->position = positionBackup; + joint->velocity[0] = 0; + joint->velocity[1] = 0; + joint->velocity[2] = 0; + + return 2; + } + + return 1; + } + + return 0; +} + +uint8_t TPE_bodyEnvironmentCollide(const TPE_Body *body, + TPE_ClosestPointFunction env) +{ + for (uint16_t i = 0; i < body->jointCount; ++i) + { + const TPE_Joint *joint = body->joints + i; + + TPE_Unit size = TPE_JOINT_SIZE(*joint); + + if (TPE_DISTANCE(joint->position,env(joint->position,size)) <= size) + return 1; + } + + return 0; +} + +void TPE_bodyGetFastBSphere(const TPE_Body *body, TPE_Vec3 *center, + TPE_Unit *radius) +{ + TPE_Vec3 b; + + TPE_bodyGetAABB(body,center,&b); + + center->x = (center->x + b.x) / 2; + center->y = (center->y + b.y) / 2; + center->z = (center->z + b.z) / 2; + + *radius = TPE_DISTANCE(*center,b); +} + +void TPE_bodyGetBSphere(const TPE_Body *body, TPE_Vec3 *center, + TPE_Unit *radius) +{ + *radius = TPE_INFINITY; + *center = TPE_bodyGetCenterOfMass(body); + + const TPE_Joint *j = body->joints; + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + TPE_Vec3 diff; + + TPE_Unit js = TPE_JOINT_SIZE(*j); + + /* Sadly we have to have these conditions here which slow this down. If we + were only computing a BB sphere of a point cloud, we wouldn't have to + compute abs vals (as squaring would effectively compute them), but here + we need to add joint size which needs to know about the sign. */ + + diff.x = ((center->x > j->position.x) ? + (center->x - j->position.x) : (j->position.x - center->x)) + js; + + diff.y = ((center->y > j->position.y) ? + (center->y - j->position.y) : (j->position.y - center->y)) + js; + + diff.z = ((center->z > j->position.z) ? + (center->z - j->position.z) : (j->position.z - center->z)) + js; + + TPE_Unit distSquared = + diff.x * diff.x + diff.y * diff.y + diff.z * diff.z; + + if (distSquared < *radius) + *radius = distSquared; + + j++; + } + + *radius = TPE_sqrt(*radius); +} + +uint8_t TPE_bodyEnvironmentResolveCollision(TPE_Body *body, + TPE_ClosestPointFunction env) +{ + TPE_Vec3 c; + TPE_Unit d; + + TPE_bodyGetFastBSphere(body,&c,&d); + + if (TPE_DISTANCE(c,env(c,d)) > d) + return 0; + + // now test the full body collision: + + uint8_t collision = 0; + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + TPE_Vec3 previousPos = body->joints[i].position; + + _TPE_joint1Index = i; + + uint8_t r = TPE_jointEnvironmentResolveCollision( + body->joints + i,body->elasticity,body->friction,env); + + if (r) + { + collision = 1; + + if (body->flags & TPE_BODY_FLAG_NONROTATING) + _TPE_bodyNonrotatingJointCollided(body,i,previousPos,r == 1); + } + } + + return collision; +} + +TPE_Vec3 TPE_vec3Normalized(TPE_Vec3 v) +{ + TPE_vec3Normalize(&v); + return v; +} + +TPE_Unit TPE_atan(TPE_Unit x) +{ + /* atan approximation by polynomial + WARNING: this will break with different value of TPE_FRACTIONS_PER_UNIT */ + + TPE_Unit sign = 1, x2 = x * x; + + if (x < 0) + { + x *= -1; + sign = -1; + } + + if (x > 30000) // anti overflow + return sign * (TPE_F / 4); + + return sign * + (307 * x + x2) / ((267026 + 633 * x + x2) / 128); +} + +void _TPE_vec2Rotate(TPE_Unit *x, TPE_Unit *y, TPE_Unit angle) +{ + TPE_Unit tmp = *x; + + TPE_Unit s = TPE_sin(angle); + TPE_Unit c = TPE_cos(angle); + + *x = (c * *x - s * *y) / TPE_F; + *y = (s * tmp + c * *y) / TPE_F; +} + +TPE_Unit TPE_vec2Angle(TPE_Unit x, TPE_Unit y) +{ + TPE_Unit r = 0; + + if (x != 0) + { + r = TPE_atan((y * TPE_F) / x); + + if (x < 0) + r += TPE_F / 2; + else if (r < 0) + r += TPE_F; + } + else + { + if (y < 0) + r = (3 * TPE_F) / 4; + else if (y > 0) + r = TPE_F / 4; + // else (y == 0) r stays 0 + } + + return r; +} + +TPE_Vec3 TPE_rotationFromVecs(TPE_Vec3 forward, TPE_Vec3 right) +{ + TPE_Vec3 result; + + // get rotation around Y: + + result.y = TPE_vec2Angle(forward.z,-1 * forward.x); + + // now rotate back by this angle to align with x = 0 plane: + + _TPE_vec2Rotate(&forward.z,&forward.x,result.y); + _TPE_vec2Rotate(&right.z,&right.x,result.y); + + // now do the same for the second axis: + + result.x = + TPE_vec2Angle(forward.z,forward.y); + + _TPE_vec2Rotate(&right.z,&right.y,-1 * result.x); + + result.z = TPE_vec2Angle(right.x,-1 * right.y); + + return result; +} + +TPE_Vec3 _TPE_project3DPoint(TPE_Vec3 p, TPE_Vec3 camPos, TPE_Vec3 camRot, + TPE_Vec3 camView) +{ + // transform to camera space: + + p = TPE_vec3Minus(p,camPos); + + _TPE_vec2Rotate(&p.z,&p.x,camRot.y); + _TPE_vec2Rotate(&p.z,&p.y,-1 * camRot.x); + _TPE_vec2Rotate(&p.y,&p.x,-1 * camRot.z); + + if (p.z <= 0) + return p; + + if (camView.z != 0) + { + // perspective + + p.x = (p.x * camView.z) / p.z; + p.y = (p.y * camView.z) / p.z; + + p.x = camView.x / 2 + (p.x * camView.x) / (2 * TPE_F); + p.y = camView.y / 2 - (p.y * camView.x) / (2 * TPE_F); + // ^ x here intentional + } + else + { + // ortho + + p.x = camView.x / 2 + p.x; + p.y = camView.y / 2 - p.y; + } + + return p; +} + +void _TPE_drawDebugPixel( + TPE_Unit x, TPE_Unit y, TPE_Unit w, TPE_Unit h, uint8_t c, + TPE_DebugDrawFunction f) +{ + if (x >= 0 && x < w && y >= 0 && y < h) + f(x,y,c); +} + +void TPE_worldDebugDraw(TPE_World *world, TPE_DebugDrawFunction drawFunc, + TPE_Vec3 camPos, TPE_Vec3 camRot, TPE_Vec3 camView, uint16_t envGridRes, + TPE_Unit envGridSize) +{ +#define Z_LIMIT 250 + if (world->environmentFunction != 0) + { + // environment: + + TPE_Vec3 testPoint; + + TPE_Unit gridHalfSize = (envGridSize * envGridRes) / 2; + + TPE_Vec3 center; + + if (envGridRes != 0) + { + center = TPE_vec3(0,TPE_sin(camRot.x),TPE_cos(camRot.x)); + + _TPE_vec2Rotate(¢er.x,¢er.z,camRot.y); + + center = TPE_vec3Times(center,gridHalfSize); + center = TPE_vec3Plus(camPos,center); + + center.x = (center.x / envGridSize) * envGridSize; + center.y = (center.y / envGridSize) * envGridSize; + center.z = (center.z / envGridSize) * envGridSize; + } + + testPoint.y = center.y - gridHalfSize; + + for (uint8_t j = 0; j < envGridRes; ++j) + { + testPoint.x = center.x - gridHalfSize; + + for (uint8_t k = 0; k < envGridRes; ++k) + { + testPoint.z = center.z - gridHalfSize; + + for (uint8_t l = 0; l < envGridRes; ++l) + { + TPE_Vec3 r = world->environmentFunction(testPoint,envGridSize); + + if (r.x != testPoint.x || r.y != testPoint.y || r.z != testPoint.z) + { + r = _TPE_project3DPoint(r,camPos,camRot,camView); + + if (r.z > Z_LIMIT) + _TPE_drawDebugPixel(r.x,r.y,camView.x,camView.y, + TPE_DEBUG_COLOR_ENVIRONMENT,drawFunc); + } + + testPoint.z += envGridSize; + } + + testPoint.x += envGridSize; + } + + testPoint.y += envGridSize; + } + } + + for (uint16_t i = 0; i < world->bodyCount; ++i) + { + // connections: + for (uint16_t j = 0; j < world->bodies[i].connectionCount; ++j) + { + TPE_Vec3 + p1 = world->bodies[i].joints[ + world->bodies[i].connections[j].joint1].position, + p2 = world->bodies[i].joints[ + world->bodies[i].connections[j].joint2].position; + + p1 = _TPE_project3DPoint(p1,camPos,camRot,camView); + p2 = _TPE_project3DPoint(p2,camPos,camRot,camView); + + if (p1.z <= Z_LIMIT || p2.z <= Z_LIMIT) + continue; + + TPE_Vec3 diff = TPE_vec3Minus(p2,p1); + +#define SEGS 16 + + uint8_t c = (world->bodies[i].flags & TPE_BODY_FLAG_DEACTIVATED) ? + TPE_DEBUG_COLOR_INACTIVE : TPE_DEBUG_COLOR_CONNECTION; + + for (uint16_t k = 0; k < SEGS; ++k) + { + p2.x = p1.x + (diff.x * k) / SEGS; + p2.y = p1.y + (diff.y * k) / SEGS; + + _TPE_drawDebugPixel(p2.x,p2.y,camView.x,camView.y,c,drawFunc); + } +#undef SEGS + } + + // joints: + for (uint16_t j = 0; j < world->bodies[i].jointCount; ++j) + { + TPE_Vec3 p = _TPE_project3DPoint(world->bodies[i].joints[j].position, + camPos,camRot,camView); + + if (p.z > Z_LIMIT) + { + uint8_t color = (world->bodies[i].flags & TPE_BODY_FLAG_DEACTIVATED) ? + TPE_DEBUG_COLOR_INACTIVE : TPE_DEBUG_COLOR_JOINT; + + _TPE_drawDebugPixel(p.x,p.y,camView.x,camView.y,color,drawFunc); + + TPE_Unit size = TPE_JOINT_SIZE(world->bodies[i].joints[j]); + + if (camView.z != 0) // not ortho? + { + size /= 2; + size = (size * camView.x) / TPE_F; + size = (size * camView.z) / p.z; + } + +#define SEGS 4 + for (uint8_t k = 0; k < SEGS + 1; ++k) + { + TPE_Unit + dx = (TPE_sin(TPE_F * k / (8 * SEGS)) * size) + / TPE_F, + dy = (TPE_cos(TPE_F * k / (8 * SEGS)) * size) + / TPE_F; + +#define dp(a,b,c,d) \ + _TPE_drawDebugPixel(p.x a b,p.y c d,camView.x,camView.y,color,drawFunc); + dp(+,dx,+,dy) dp(+,dx,-,dy) dp(-,dx,+,dy) dp(-,dx,-,dy) + dp(+,dy,+,dx) dp(+,dy,-,dx) dp(-,dy,+,dx) dp(-,dy,-,dx) +#undef dp +#undef SEGS + } + } + } + } +#undef Z_LIMIT +} + +TPE_Vec3 TPE_envBox(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 maxCornerVec, + TPE_Vec3 rotation) +{ + point = TPE_pointRotate(TPE_vec3Minus(point,center), + TPE_rotationInverse(rotation)); + + return TPE_vec3Plus(center,TPE_pointRotate(TPE_envAABox(point,TPE_vec3(0,0,0), + maxCornerVec),rotation)); +} + +TPE_Vec3 TPE_envAABox(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 maxCornerVec) +{ + TPE_Vec3 shifted = TPE_vec3Minus(point,center); + int8_t sign[3] = {1, 1, 1}; + + if (shifted.x < 0) + { + shifted.x *= -1; + sign[0] = -1; + } + + if (shifted.y < 0) + { + shifted.y *= -1; + sign[1] = -1; + } + + if (shifted.z < 0) + { + shifted.z *= -1; + sign[2] = -1; + } + + uint8_t region = + (shifted.x > maxCornerVec.x) | + ((shifted.y > maxCornerVec.y) << 1) | + ((shifted.z > maxCornerVec.z) << 2); + + switch (region) + { +#define align(c,i) point.c = center.c + sign[i] * maxCornerVec.c + + case 0x01: align(x,0); break; + case 0x02: align(y,1); break; + case 0x04: align(z,2); break; + + case 0x03: align(x,0); align(y,1); break; + case 0x05: align(x,0); align(z,2); break; + case 0x06: align(y,1); align(z,2); break; + + case 0x07: align(x,0); align(y,1); align(z,2); break; + default: break; + +#undef align + } + + return point; +} + +TPE_Vec3 TPE_envAABoxInside(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 size) +{ + size.x /= 2; + size.y /= 2; + size.z /= 2; + + TPE_Vec3 shifted = TPE_vec3Minus(point,center); + + TPE_Vec3 a = TPE_vec3Minus(size,shifted), + b = TPE_vec3Plus(shifted,size); + + int8_t sx = 1, sy = 1, sz = 1; + + if (b.x < a.x) + { + a.x = b.x; + sx = -1; + } + + if (b.y < a.y) + { + a.y = b.y; + sy = -1; + } + + if (b.z < a.z) + { + a.z = b.z; + sz = -1; + } + + if (a.x < 0 || a.y < 0 || a.z < 0) + return point; + + if (a.x < a.y) + { + if (a.x < a.z) + point.x = center.x + sx * size.x; + else + point.z = center.z + sz * size.z; + } + else + { + if (a.y < a.z) + point.y = center.y + sy * size.y; + else + point.z = center.z + sz * size.z; + } + + return point; +} + +TPE_Vec3 TPE_envSphereInside(TPE_Vec3 point, TPE_Vec3 center, TPE_Unit radius) +{ + TPE_Vec3 shifted = TPE_vec3Minus(point,center); + + TPE_Unit l = TPE_LENGTH(shifted); + + if (l >= radius) + return point; + else if (l < 0) + return TPE_vec3(center.x + radius,center.y,center.z); + + TPE_vec3Normalize(&shifted); + + return TPE_vec3Plus(center,TPE_vec3Times(shifted,radius)); +} + +TPE_Vec3 TPE_envSphere(TPE_Vec3 point, TPE_Vec3 center, TPE_Unit radius) +{ + TPE_Vec3 dir = TPE_vec3Minus(point,center); + + TPE_Unit l = TPE_LENGTH(dir); + + if (l <= radius) + return point; + + dir.x = (dir.x * radius) / l; + dir.y = (dir.y * radius) / l; + dir.z = (dir.z * radius) / l; + + return TPE_vec3Plus(center,dir); +} + +TPE_Vec3 TPE_envHalfPlane(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 normal) +{ + TPE_Vec3 point2 = TPE_vec3Minus(point,center); + + TPE_Unit tmp = + point2.x * normal.x + point2.y * normal.y + point2.z * normal.z; + + if (tmp < 0) + return point; + + TPE_Unit l = TPE_LENGTH(normal); + + tmp /= l; + + normal.x = (normal.x * TPE_F) / l; + normal.y = (normal.y * TPE_F) / l; + normal.z = (normal.z * TPE_F) / l; + + return TPE_vec3Minus(point, + TPE_vec3Times(normal,tmp)); +} + +uint8_t TPE_checkOverlapAABB(TPE_Vec3 v1Min, TPE_Vec3 v1Max, TPE_Vec3 v2Min, + TPE_Vec3 v2Max) +{ + TPE_Unit dist; + +#define test(c) \ + dist = v1Min.c + v1Max.c - v2Max.c - v2Min.c; \ + if (dist < 0) dist *= -1; \ + if (dist > v1Max.c - v1Min.c + v2Max.c - v2Min.c) return 0; + + test(x) + test(y) + test(z) + +#undef test + + return 1; +} + +void TPE_bodyGetAABB(const TPE_Body *body, TPE_Vec3 *vMin, TPE_Vec3 *vMax) +{ + *vMin = body->joints[0].position; + *vMax = *vMin; + + TPE_Unit js = TPE_JOINT_SIZE(body->joints[0]); + + vMin->x -= js; + vMin->y -= js; + vMin->z -= js; + + vMax->x += js; + vMax->y += js; + vMax->z += js; + + for (uint16_t i = 1; i < body->jointCount; ++i) + { + TPE_Unit v; + + js = TPE_JOINT_SIZE(body->joints[i]); + +#define test(c) \ + v = body->joints[i].position.c - js; \ + if (v < vMin->c) \ + vMin->c = v; \ + v += 2 * js; \ + if (v > vMax->c) \ + vMax->c = v; + + test(x) + test(y) + test(z) + +#undef test + } +} + +void TPE_jointPin(TPE_Joint *joint, TPE_Vec3 position) +{ + joint->position = position; + joint->velocity[0] = 0; + joint->velocity[1] = 0; + joint->velocity[2] = 0; +} + +TPE_Vec3 TPE_pointRotate(TPE_Vec3 point, TPE_Vec3 rotation) +{ + _TPE_vec2Rotate(&point.y,&point.x,rotation.z); + _TPE_vec2Rotate(&point.z,&point.y,rotation.x); + _TPE_vec2Rotate(&point.x,&point.z,rotation.y); + + return point; +} + +TPE_Vec3 TPE_rotationInverse(TPE_Vec3 rotation) +{ + /* If r1 = (X,Y,Z) is rotation in convention ABC then r1^-1 = (-X,-Y,-Z) in + convention CBA is its inverse rotation. We exploit this, i.e. we rotate + forward/right vectors in opposite axis order and then turn the result + into normal rotation/orientation. */ + + TPE_Vec3 f = TPE_vec3(0,0,TPE_F); + TPE_Vec3 r = TPE_vec3(TPE_F,0,0); + + rotation.x *= -1; + rotation.y *= -1; + rotation.z *= -1; + + _TPE_vec2Rotate(&f.x,&f.z,rotation.y); + _TPE_vec2Rotate(&f.z,&f.y,rotation.x); + _TPE_vec2Rotate(&f.y,&f.x,rotation.z); + + _TPE_vec2Rotate(&r.x,&r.z,rotation.y); + _TPE_vec2Rotate(&r.z,&r.y,rotation.x); + _TPE_vec2Rotate(&r.y,&r.x,rotation.z); + + return TPE_rotationFromVecs(f,r); +} + +TPE_Vec3 TPE_rotationRotateByAxis(TPE_Vec3 rotation, TPE_Vec3 rotationByAxis) +{ + TPE_Vec3 f = TPE_pointRotate(TPE_vec3(0,0,TPE_F),rotation); + TPE_Vec3 r = TPE_pointRotate(TPE_vec3(TPE_F,0,0),rotation); + + TPE_Unit a = TPE_LENGTH(rotationByAxis); + TPE_vec3Normalize(&rotationByAxis); + + f = _TPE_rotateByAxis(f,rotationByAxis,a); + r = _TPE_rotateByAxis(r,rotationByAxis,a); + + return TPE_rotationFromVecs(f,r); +} + +TPE_Unit TPE_keepInRange(TPE_Unit x, TPE_Unit xMin, TPE_Unit xMax) +{ + return x > xMin ? (x < xMax ? x : xMax) : xMin; +} + +TPE_Vec3 TPE_vec3KeepWithinDistanceBand(TPE_Vec3 point, TPE_Vec3 center, + TPE_Unit minDistance, TPE_Unit maxDistance) +{ + TPE_Vec3 toPoint = TPE_vec3Minus(point,center); + + TPE_Unit l = TPE_LENGTH(toPoint); + + if (l <= maxDistance) + { + if (l >= minDistance) + return point; + + l = minDistance; + } + else + l = maxDistance; + + return TPE_vec3Plus(center, + TPE_vec3Times(TPE_vec3Normalized(toPoint),l)); +} + +TPE_Vec3 TPE_vec3KeepWithinBox(TPE_Vec3 point, TPE_Vec3 boxCenter, + TPE_Vec3 boxMaxVect) +{ + point.x = TPE_keepInRange(point.x, + boxCenter.x - boxMaxVect.x,boxCenter.x + boxMaxVect.x); + + point.y = TPE_keepInRange(point.y, + boxCenter.y - boxMaxVect.y,boxCenter.y + boxMaxVect.y); + + point.z = TPE_keepInRange(point.z, + boxCenter.z - boxMaxVect.z,boxCenter.z + boxMaxVect.z); + + return point; +} + +TPE_Vec3 TPE_envInfiniteCylinder(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 + direction, TPE_Unit radius) +{ + TPE_Vec3 d = TPE_vec3Minus(point,center); + d = TPE_vec3Minus(d,TPE_vec3Project(d,direction)); + + TPE_Unit l = TPE_LENGTH(d); + + if (l <= radius) + return point; + + radius = l - radius; + + d.x = (d.x * radius) / l; + d.y = (d.y * radius) / l; + d.z = (d.z * radius) / l; + + return TPE_vec3Minus(point,d); +} + +TPE_Vec3 TPE_envCylinder(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 direction, + TPE_Unit radius) +{ + point = TPE_vec3Minus(point,center); + + TPE_Vec3 projected = TPE_vec3Project(point,direction); + + point = TPE_envInfiniteCylinder(point,TPE_vec3(0,0,0),direction,radius); + + TPE_Unit lDir = TPE_nonZero(TPE_LENGTH(direction)); + + TPE_Unit lDiff = TPE_LENGTH(projected) - lDir; + + if (lDiff > 0) + { + direction.x = (direction.x * lDiff) / lDir; + direction.y = (direction.y * lDiff) / lDir; + direction.z = (direction.z * lDiff) / lDir; + + point = (TPE_vec3Dot(projected,direction)) >= 0 ? + TPE_vec3Minus(point,direction) : TPE_vec3Plus(point,direction); + } + + return TPE_vec3Plus(center,point); +} + +TPE_Vec3 TPE_fakeSphereRotation(TPE_Vec3 position1, TPE_Vec3 position2, + TPE_Unit radius) +{ + TPE_Vec3 m; + + m.x = position1.z - position2.z; + m.y = 0; + m.z = position2.x - position1.x; + + TPE_Unit l = TPE_sqrt(m.x * m.x + m.z * m.z); + + if (l == 0) + return TPE_vec3(0,0,0); + + TPE_Unit d = (TPE_DISTANCE(position1,position2) * + TPE_F) / (radius * 4); + + m.x = (m.x * d) / l; + m.z = (m.z * d) / l; + + return m; +} + +TPE_Vec3 TPE_castEnvironmentRay(TPE_Vec3 rayPos, TPE_Vec3 rayDir, + TPE_ClosestPointFunction environment, TPE_Unit insideStepSize, + TPE_Unit rayMarchMaxStep, uint32_t maxSteps) +{ + TPE_Vec3 p = rayPos; + TPE_Vec3 p2 = environment(rayPos,rayMarchMaxStep); + TPE_Unit totalD = 0; + + TPE_vec3Normalize(&rayDir); + + uint8_t found = 0; // 0 = nothing found, 1 = out/in found, 2 = in/out found + + if (p2.x != p.x || p2.y != p.y || p2.z != p.z) + { + // outside ray: ray march + + for (uint32_t i = 0; i < maxSteps; ++i) + { + TPE_Unit d = TPE_DISTANCE(p,p2); + + if (d > rayMarchMaxStep) + d = rayMarchMaxStep; + + totalD += d; + + p2 = TPE_vec3Plus(rayPos,TPE_vec3Times(rayDir,totalD)); + + if (d == 0 || + (p2.x == p.x && p2.y == p.y && p2.z == p.z)) + return p2; // point not inside env but dist == 0, ideal case + + TPE_Vec3 pTest = environment(p2,rayMarchMaxStep); + + if (pTest.x == p2.x && pTest.y == p2.y && pTest.z == p2.z) + { + // stepped into env, will have to iterate + found = 1; + break; + } + + p = p2; + p2 = pTest; + } + } + else if (insideStepSize != 0) + { + // inside ray: iterate by fixed steps + + for (uint32_t i = 0; i < maxSteps; ++i) + { + totalD += insideStepSize; + + p2 = TPE_vec3Plus(rayPos,TPE_vec3Times(rayDir,totalD)); + + TPE_Vec3 pTest = environment(p2,16); + + if (p2.x != pTest.x || p2.y != pTest.y || p2.z != pTest.z) + { + found = 2; + break; + } + + p = p2; + p2 = pTest; + } + } + + if (found) + { + /* Here we've found two points (p, p2), each one the other side of the + env surface. Now iterate (binary search) to find the exact surface + pos. */ + + for (uint8_t i = 0; i < 128; ++i) // upper limit just in case + { + TPE_Vec3 middle = TPE_vec3Plus(p,p2); + + middle.x /= 2; + middle.y /= 2; + middle.z /= 2; + + if ((middle.x == p.x && middle.y == p.y && middle.z == p.z) || + (middle.x == p2.x && middle.y == p2.y && middle.z == p2.z)) + break; // points basically next to each other, don't continue + + TPE_Vec3 pTest = environment(middle,16); // 16: just a small number + + if ((found == 1) == + (pTest.x == middle.x && pTest.y == middle.y && pTest.z == middle.z)) + p2 = middle; + else + p = middle; + } + + return (found == 1) ? p : p2; + } + + return TPE_vec3(TPE_INFINITY,TPE_INFINITY,TPE_INFINITY); +} + +TPE_Vec3 TPE_castBodyRay(TPE_Vec3 rayPos, TPE_Vec3 rayDir, int16_t excludeBody, + const TPE_World *world, int16_t *bodyIndex, int16_t *jointIndex) +{ + TPE_Vec3 bestP = TPE_vec3(TPE_INFINITY,TPE_INFINITY,TPE_INFINITY); + TPE_Unit bestD = TPE_INFINITY; + + if (bodyIndex != 0) + *bodyIndex = -1; + + if (jointIndex != 0) + *jointIndex = -1; + + TPE_vec3Normalize(&rayDir); + + for (uint16_t i = 0; i < world->bodyCount; ++i) + { + TPE_Vec3 c, p; + TPE_Unit r, d; + + TPE_bodyGetFastBSphere(&world->bodies[i],&c,&r); + + c = TPE_vec3Minus(c,rayPos); + p = TPE_vec3ProjectNormalized(c,rayDir); + + if (TPE_vec3Dot(p,rayDir) >= 0) // point is in ray's forward dir? + { + d = TPE_DISTANCE(p,c); + + if (d <= r) + { + // bounding sphere hit, now check all joints: + + const TPE_Joint *joint = world->bodies[i].joints; + + for (uint16_t j = 0; j < world->bodies[i].jointCount; ++j) + { + c = joint->position; + c = TPE_vec3Minus(c,rayPos); + p = TPE_vec3ProjectNormalized(c,rayDir); + + if (TPE_vec3Dot(p,rayDir) >= 0) + { + d = TPE_DISTANCE(p,c); + TPE_Unit js = TPE_JOINT_SIZE(*joint); + + if (d <= js) + { + // joint hit, compute exact coordinates: + + if (bodyIndex != 0) + *bodyIndex = i; + + if (jointIndex != 0) + *jointIndex = j; + + c = TPE_vec3Times(rayDir,TPE_sqrt(js * js - d * d)); + // ^ offset vector to two intersections + p = TPE_vec3Plus(p,rayPos); + + TPE_Vec3 + i1 = TPE_vec3Plus(p,c), // intersection points + i2 = TPE_vec3Minus(p,c); + + d = TPE_DISTANCE(rayPos,i1); + TPE_Unit d2 = TPE_DISTANCE(rayPos,i2); + + if (d2 < d) // take the closer one + { + d = d2; + i1 = i2; + } + + if (d < bestD) + { + bestD = d; + bestP = i1; + } + } + } + + joint++; + } + } + } + } + + return bestP; +} + +void TPE_worldDeactivateAll(TPE_World *world) +{ + for (uint16_t i = 0; i < world->bodyCount; ++i) + TPE_bodyDeactivate(&world->bodies[i]); +} + +void TPE_worldActivateAll(TPE_World *world) +{ + for (uint16_t i = 0; i < world->bodyCount; ++i) + TPE_bodyActivate(&world->bodies[i]); +} + +TPE_Unit TPE_worldGetNetSpeed(const TPE_World *world) +{ + TPE_Unit result = 0; + + for (uint16_t i = 0; i < world->bodyCount; ++i) + result += TPE_bodyGetNetSpeed(world->bodies + i); + + return result; +} + +TPE_Vec3 TPE_bodyGetLinearVelocity(const TPE_Body *body) +{ + TPE_Vec3 r = TPE_vec3(0,0,0); + + for (uint16_t i = 0; i < body->jointCount; ++i) + { + TPE_UnitReduced *v = body->joints[i].velocity; + r = TPE_vec3Plus(r,TPE_vec3(v[0],v[1],v[2])); + } + + r.x /= body->jointCount; + r.y /= body->jointCount; + r.z /= body->jointCount; + + return r; +} + +TPE_Unit TPE_abs(TPE_Unit x) +{ + return x >= 0 ? x : (-1 * x); +} + +TPE_Unit TPE_max(TPE_Unit a, TPE_Unit b) +{ + return (a > b) ? a : b; +} + +TPE_Unit TPE_min(TPE_Unit a, TPE_Unit b) +{ + return (a < b) ? a : b; +} + +TPE_Vec3 TPE_envAATriPrism(TPE_Vec3 point, TPE_Vec3 center, + const TPE_Unit sides[6], TPE_Unit depth, uint8_t direction) +{ + point = TPE_vec3Minus(point,center); + + if (direction == 1) + { + TPE_Unit tmp = point.z; + point.z = point.y; + point.y = tmp; + } + else if (direction == 2) + { + TPE_Unit tmp = point.z; + point.z = point.x; + point.x = tmp; + } + + depth /= 2; + + if (point.z > depth) + point.z = depth; + else + { + depth *= -1; + + if (point.z < depth) + point.z = depth; + } + + for (uint8_t i = 0; i < 6; i += 2) + { + uint8_t i2 = i < 4 ? i + 2 : 0; + + TPE_Vec3 p = + TPE_envHalfPlane(point,TPE_vec3(sides[i],sides[i + 1],0), + TPE_vec3(sides[i2 + 1] - sides[i + 1],sides[i] - sides[i2],0)); + + if (p.x != point.x || p.y != point.y) + { + point = p; + + if ( // dot product to determine which side the point is on + (sides[i2] - sides[i]) * (point.x - sides[i]) + + (sides[i2 + 1] - sides[i + 1]) * (point.y - sides[i + 1]) < 0) + { + point.x = sides[i]; point.y = sides[i + 1]; + } + else if ( // same but for the other vertex + (sides[i] - sides[i2]) * (point.x - sides[i2]) + + (sides[i + 1] - sides[i2 + 1]) * (point.y - sides[i2 + 1]) < 0) + { + point.x = sides[i2]; point.y = sides[i2 + 1]; + } + + break; + } + } + + if (direction == 1) + { + TPE_Unit tmp = point.z; + point.z = point.y; + point.y = tmp; + } + else if (direction == 2) + { + TPE_Unit tmp = point.z; + point.z = point.x; + point.x = tmp; + } + + return TPE_vec3Plus(point,center); +} + +TPE_Vec3 TPE_envGround(TPE_Vec3 point, TPE_Unit height) +{ + if (point.y > height) + point.y = height; + + return point; +} + +uint32_t _TPE_hash(uint32_t n) +{ + // parameters found by hash-prospector project + n = 250009959 * (n ^ (n >> 17)); + n = 2626308659 * (n ^ (n >> 15)); + return n ^ (n >> 16); +} + +uint32_t TPE_jointHash(const TPE_Joint *joint) +{ + uint32_t + r = _TPE_hash(joint->position.x); + r = _TPE_hash(r ^ joint->position.y); + r = _TPE_hash(r ^ joint->position.z); + r = _TPE_hash(r ^ + (((uint32_t) joint->velocity[0]) | + (((uint32_t) joint->velocity[1]) << 16))); + r = _TPE_hash(r ^ + (((uint32_t) joint->velocity[2]) | + ((uint32_t) joint->sizeDivided))); + + return r; +} + +uint32_t TPE_connectionHash(const TPE_Connection *connection) +{ + return _TPE_hash( + ((uint32_t) connection->length) | + (((uint32_t) connection->joint1) << 16) | + (((uint32_t) connection->joint2) << 24)); +} + +uint32_t TPE_bodyHash(const TPE_Body *body) +{ + uint32_t r = _TPE_hash( + ((uint32_t) body->jointMass) | + (((uint32_t) body->flags) << 16) | + (((uint32_t) body->deactivateCount) << 24)) ^ + _TPE_hash( + ((uint32_t) body->friction) | + (((uint32_t) body->elasticity) << 16)); + + for (uint8_t i = 0; i < body->jointCount; ++i) + r = _TPE_hash(r ^ TPE_jointHash(&body->joints[i])); + + for (uint8_t i = 0; i < body->connectionCount; ++i) + r = _TPE_hash(r ^ TPE_connectionHash(&body->connections[i])); + + return r; +} + +uint32_t TPE_worldHash(const TPE_World *world) +{ + uint32_t r = 0; + + for (uint8_t i = 0; i < world->bodyCount; ++i) + r = _TPE_hash(r ^ TPE_bodyHash(&world->bodies[i])); + + return r; +} + +void TPE_bodyMoveTo(TPE_Body *body, TPE_Vec3 position) +{ + position = TPE_vec3Minus(position,TPE_bodyGetCenterOfMass(body)); + + for (uint8_t i = 0; i < body->jointCount; ++i) + body->joints[i].position = TPE_vec3Plus(body->joints[i].position,position); +} + +uint8_t TPE_testClosestPointFunction(TPE_ClosestPointFunction f, + TPE_Vec3 cornerFrom, TPE_Vec3 cornerTo, uint8_t gridResolution, + TPE_UnitReduced allowedError, TPE_Vec3 *errorPoint) +{ + TPE_Vec3 p; + + cornerTo = TPE_vec3Minus(cornerTo,cornerFrom); + + for (uint16_t z = 0; z < gridResolution; ++z) + { + p.z = cornerFrom.z + (z * cornerTo.z) / gridResolution; + + for (uint16_t y = 0; y < gridResolution; ++y) + { + p.y = cornerFrom.y + (y * cornerTo.y) / gridResolution; + + for (uint16_t x = 0; x < gridResolution; ++x) + { + p.x = cornerFrom.x + (x * cornerTo.x) / gridResolution; + + TPE_Vec3 p2 = f(p,TPE_INFINITY); + + if (p.x != p2.x || p.y != p2.y || p.z != p2.z) // only test outside + { + // 1st try to approach the closest point and see if it stays the same: + + TPE_Vec3 p3 = p; + + for (uint8_t i = 0; i < 3; ++i) + { + p3 = + TPE_vec3((p3.x + p2.x) / 2,(p3.y + p2.y) / 2,(p3.z + p2.z) / 2); + + TPE_Vec3 p4 = f(p3,TPE_INFINITY); + + if (TPE_abs(p4.x - p2.x) + TPE_abs(p4.y - p2.y) + + TPE_abs(p4.z - p2.z) > allowedError) // taxicab dist. for speed + { + if (errorPoint != 0) + *errorPoint = p; + + return 0; + } + } + + // now test 8 points inside the sphere of radius: + + TPE_Unit d = TPE_DISTANCE(p,p2); + + p3.z = p.z - d / 2; + + for (uint8_t zz = 0; zz < 2; ++zz) + { + p3.y = p.y - d / 2; + + for (uint8_t yy = 0; yy < 2; ++yy) + { + p3.x = p.x - d / 2; + + for (uint8_t zz = 0; zz < 2; ++zz) + { + if (TPE_DISTANCE(p,f(p3,TPE_INFINITY)) + allowedError < d) + { + /* In the sphere of distance radius to the original point's + closest point we've gotten a closer point which should + never happen. */ + + if (errorPoint != 0) + *errorPoint = p; + + return 0; + } + + p3.x += d; + } + + p3.y += d; + } + + p3.z += d; + } + } + } + } + } + + return 1; +} + +TPE_Vec3 TPE_envLineSegment(TPE_Vec3 point, TPE_Vec3 a, TPE_Vec3 b) +{ + point = TPE_vec3Minus(point,a); + + b = TPE_vec3Minus(b,a); + + point = TPE_vec3Project(point,b); + + if (TPE_vec3Dot(point,b) < 0) + point = TPE_vec3(0,0,0); + else if (TPE_abs(point.x) + TPE_abs(point.y) + TPE_abs(point.z) > + TPE_abs(b.x) + TPE_abs(b.y) + TPE_abs(b.z)) + point = b; + + point = TPE_vec3Plus(point,a); + + return point; +} + +TPE_Vec3 TPE_envHeightmap(TPE_Vec3 point, TPE_Vec3 center, TPE_Unit gridSize, + TPE_Unit (*heightFunction)(int32_t x, int32_t y), TPE_Unit maxDist) +{ + point = TPE_vec3Minus(point,center); + + TPE_Vec3 closestP = TPE_vec3(TPE_INFINITY,TPE_INFINITY,TPE_INFINITY); + TPE_Unit closestD = TPE_INFINITY; + + int16_t startSquareX = point.x / gridSize - (point.x < 0), + startSquareY = point.z / gridSize - (point.z < 0); + + int16_t squareX = startSquareX, + squareY = startSquareY; + + uint8_t spiralDir = 1; + uint16_t spiralStep = 1, spiralStepsLeft = 1; + + TPE_Vec3 // 4 corners of the current square + bl = TPE_vec3(squareX * gridSize,heightFunction(squareX,squareY), + squareY * gridSize), + br = TPE_vec3(bl.x + gridSize,heightFunction(squareX + 1,squareY),bl.z), + tl = TPE_vec3(bl.x,heightFunction(squareX,squareY + 1),bl.z + gridSize), + tr = TPE_vec3(br.x,heightFunction(squareX + 1,squareY + 1),tl.z); + + for (uint16_t i = 0; i < 1024; ++i) // while (1) should work in theory but... + { + if ((TPE_min(TPE_abs(squareX - startSquareX), + TPE_abs(squareY - startSquareY)) - 1) * gridSize + > TPE_min(maxDist,closestD)) + break; // here we can no longer find the dist we're looking for => end + + for (uint8_t j = 0; j < 2; ++j) // check the two triangles of the segment + { + TPE_Vec3 testP = TPE_envHalfPlane(point,j == 0 ? bl : tr, + TPE_vec3Normalized(j == 0 ? + TPE_vec3Cross(TPE_vec3Minus(tl,bl),TPE_vec3Minus(br,bl)) : + TPE_vec3Cross(TPE_vec3Minus(br,tr),TPE_vec3Minus(tl,tr)))); + + TPE_Unit testD = TPE_DISTANCE(testP,point); + + if (testD < closestD) + { + if (j == 0 ? // point is inside the triangle? + (testP.x >= bl.x && testP.z >= bl.z && + (testP.x - bl.x <= tl.z - testP.z)) : + (testP.x <= tr.x && testP.z <= tr.z && + (testP.x - bl.x >= tl.z - testP.z))) + { + closestP = testP; + closestD = testD; + } + else + { + // point outside the triangle, check individual boundary sides +#define testEdge(a,b) \ + testP = TPE_envLineSegment(point,a,b); testD = TPE_DISTANCE(testP,point); \ + if (testD < closestD) { closestP = testP; closestD = testD; } + + testEdge(j == 0 ? bl : tr,br) + testEdge(j == 0 ? bl : tr,tl) + testEdge(br,tl) + +#undef testEdge + } + } + } + + // now step to another square, in spiralling way: + + switch (spiralDir) + { + case 0: // moving up + squareY++; + + bl = tl; br = tr; + tl = TPE_vec3(bl.x,heightFunction(squareX,squareY + 1),bl.z + gridSize); + tr = TPE_vec3(br.x,heightFunction(squareX + 1,squareY + 1),bl.z + + gridSize); + + break; + + case 1: // moving right + squareX++; + + bl = br; tl = tr; + tr = TPE_vec3(tl.x + gridSize,heightFunction(squareX + 1,squareY + 1), + tl.z); + br = TPE_vec3(bl.x + gridSize,heightFunction(squareX + 1,squareY),bl.z); + + break; + + case 2: // moving down + squareY--; + + tl = bl; tr = br; + bl = TPE_vec3(tl.x,heightFunction(squareX,squareY),tl.z - gridSize); + br = TPE_vec3(tr.x,heightFunction(squareX + 1,squareY),tr.z - gridSize); + + break; + + case 3: // moving left + squareX--; + + br = bl; tr = tl; + tl = TPE_vec3(tr.x - gridSize,heightFunction(squareX,squareY + 1),tr.z); + bl = TPE_vec3(br.x - gridSize,heightFunction(squareX,squareY),br.z); + + break; + + default: break; + } + + spiralStepsLeft--; + + if (spiralStepsLeft == 0) + { + spiralDir = spiralDir != 0 ? spiralDir - 1 : 3; + + if (spiralDir == 3 || spiralDir == 1) + spiralStep++; + + spiralStepsLeft = spiralStep; + } + } + + return TPE_vec3Plus(closestP,center); +} + +TPE_Vec3 TPE_envCone(TPE_Vec3 point, TPE_Vec3 center, TPE_Vec3 direction, + TPE_Unit radius) +{ + point = TPE_vec3Minus(point,center); + + if (TPE_vec3Dot(point,direction) <= 0) + { + // underneath the cone + + direction.x *= -1; + direction.y *= -1; + direction.z *= -1; + + point = TPE_envHalfPlane(point,TPE_vec3(0,0,0),direction); + + TPE_Unit dist = TPE_LENGTH(point); + + if (dist > radius) + { + point.x = (point.x * radius) / dist; + point.y = (point.y * radius) / dist; + point.z = (point.z * radius) / dist; + } + } + else + { + TPE_Unit height = TPE_LENGTH(direction); + + TPE_Vec3 helper = TPE_vec3Project(point,direction); + TPE_Unit y = TPE_LENGTH(helper); + + helper = TPE_vec3Minus(point,helper); + + TPE_Unit x = TPE_LENGTH(helper); + + if (x < 20) + { + // for such small distance big numeric errors occur in the other branch + if (y >= height) + point = direction; + } + else + { + TPE_Unit scaledRadius = radius - ((y * radius) / height); + + if (y > height || x > scaledRadius) // outside? + { + if (x <= 0) + { + TPE_LOG("WARNING: arithmetic error in envCone (library bug)"); + x = 1; // shouldn't happen but just in case, to prevent div by zero + } + + helper.x = (helper.x * radius) / x; + helper.y = (helper.y * radius) / x; + helper.z = (helper.z * radius) / x; + + point = TPE_envLineSegment(point,helper,direction); + } + } + } + + return TPE_vec3Plus(point,center); +} + +static inline uint8_t TPE_bodyIsActive(const TPE_Body *body) +{ + return !(body->flags & TPE_BODY_FLAG_DEACTIVATED); +} + +#endif // guard diff --git a/source/engine/tinyspline.c b/source/engine/tinyspline.c index 53a5a3c..f19c6df 100644 --- a/source/engine/tinyspline.c +++ b/source/engine/tinyspline.c @@ -2,32 +2,30 @@ #include "tinyspline.h" #include "parson.h" /* serialization */ -#include /* malloc, free */ #include /* fabs, sqrt, acos */ -#include /* memcpy, memmove */ -#include /* FILE, fopen */ #include /* varargs */ +#include /* FILE, fopen */ +#include /* malloc, free */ +#include /* memcpy, memmove */ /* Suppress some useless MSVC warnings. */ #ifdef _MSC_VER #pragma warning(push) /* address of dllimport */ -#pragma warning(disable:4232) +#pragma warning(disable : 4232) /* function not inlined */ -#pragma warning(disable:4710) +#pragma warning(disable : 4710) /* byte padding */ -#pragma warning(disable:4820) +#pragma warning(disable : 4820) /* meaningless deprecation */ -#pragma warning(disable:4996) +#pragma warning(disable : 4996) /* Spectre mitigation */ -#pragma warning(disable:5045) +#pragma warning(disable : 5045) #endif -#define INIT_OUT_BSPLINE(in, out) \ - if ((in) != (out)) \ - ts_int_bspline_init(out); - - +#define INIT_OUT_BSPLINE(in, out) \ + if ((in) != (out)) \ + ts_int_bspline_init(out); /*! @name Internal Structs and Functions * @@ -38,302 +36,267 @@ /** * Stores the private data of ::tsBSpline. */ -struct tsBSplineImpl -{ - size_t deg; /**< Degree of B-Spline basis function. */ - size_t dim; /**< Dimensionality of the control points (2D => x, y). */ - size_t n_ctrlp; /**< Number of control points. */ - size_t n_knots; /**< Number of knots (n_ctrlp + deg + 1). */ +struct tsBSplineImpl { + size_t deg; /**< Degree of B-Spline basis function. */ + size_t dim; /**< Dimensionality of the control points (2D => x, y). */ + size_t n_ctrlp; /**< Number of control points. */ + size_t n_knots; /**< Number of knots (n_ctrlp + deg + 1). */ }; /** * Stores the private data of ::tsDeBoorNet. */ -struct tsDeBoorNetImpl -{ - tsReal u; /**< The evaluated knot. */ - size_t k; /**< The index [u_k, u_k+1) */ - size_t s; /**< Multiplicity of u_k. */ - size_t h; /**< Number of insertions required to obtain result. */ - size_t dim; /**< Dimensionality of the points (2D => x, y). */ - size_t n_points; /** Number of points in `points'. */ +struct tsDeBoorNetImpl { + tsReal u; /**< The evaluated knot. */ + size_t k; /**< The index [u_k, u_k+1) */ + size_t s; /**< Multiplicity of u_k. */ + size_t h; /**< Number of insertions required to obtain result. */ + size_t dim; /**< Dimensionality of the points (2D => x, y). */ + size_t n_points; /** Number of points in `points'. */ }; -void -ts_int_bspline_init(tsBSpline *spline) -{ - spline->pImpl = NULL; +void ts_int_bspline_init(tsBSpline *spline) { + spline->pImpl = NULL; } size_t -ts_int_bspline_sof_state(const tsBSpline *spline) -{ - return sizeof(struct tsBSplineImpl) + - ts_bspline_sof_control_points(spline) + - ts_bspline_sof_knots(spline); +ts_int_bspline_sof_state(const tsBSpline *spline) { + return sizeof(struct tsBSplineImpl) + + ts_bspline_sof_control_points(spline) + + ts_bspline_sof_knots(spline); } tsReal * -ts_int_bspline_access_ctrlp(const tsBSpline *spline) -{ - return (tsReal *) (& spline->pImpl[1]); +ts_int_bspline_access_ctrlp(const tsBSpline *spline) { + return (tsReal *)(&spline->pImpl[1]); } tsReal * -ts_int_bspline_access_knots(const tsBSpline *spline) -{ - return ts_int_bspline_access_ctrlp(spline) + - ts_bspline_len_control_points(spline); +ts_int_bspline_access_knots(const tsBSpline *spline) { + return ts_int_bspline_access_ctrlp(spline) + + ts_bspline_len_control_points(spline); } tsError ts_int_bspline_access_ctrlp_at(const tsBSpline *spline, size_t index, tsReal **ctrlp, - tsStatus *status) -{ - const size_t num = ts_bspline_num_control_points(spline); - if (index >= num) { - TS_RETURN_2(status, TS_INDEX_ERROR, - "index (%lu) >= num(control_points) (%lu)", - (unsigned long) index, - (unsigned long) num) - } - *ctrlp = ts_int_bspline_access_ctrlp(spline) + - index * ts_bspline_dimension(spline); - TS_RETURN_SUCCESS(status) + tsStatus *status) { + const size_t num = ts_bspline_num_control_points(spline); + if (index >= num) { + TS_RETURN_2(status, TS_INDEX_ERROR, + "index (%lu) >= num(control_points) (%lu)", + (unsigned long)index, + (unsigned long)num) + } + *ctrlp = ts_int_bspline_access_ctrlp(spline) + + index * ts_bspline_dimension(spline); + TS_RETURN_SUCCESS(status) } tsError ts_int_bspline_access_knot_at(const tsBSpline *spline, size_t index, tsReal *knot, - tsStatus *status) -{ - const size_t num = ts_bspline_num_knots(spline); - if (index >= num) { - TS_RETURN_2(status, TS_INDEX_ERROR, - "index (%lu) >= num(knots) (%lu)", - (unsigned long) index, - (unsigned long) num) - } - *knot = ts_int_bspline_access_knots(spline)[index]; - TS_RETURN_SUCCESS(status) + tsStatus *status) { + const size_t num = ts_bspline_num_knots(spline); + if (index >= num) { + TS_RETURN_2(status, TS_INDEX_ERROR, + "index (%lu) >= num(knots) (%lu)", + (unsigned long)index, + (unsigned long)num) + } + *knot = ts_int_bspline_access_knots(spline)[index]; + TS_RETURN_SUCCESS(status) } -void -ts_int_deboornet_init(tsDeBoorNet *net) -{ - net->pImpl = NULL; +void ts_int_deboornet_init(tsDeBoorNet *net) { + net->pImpl = NULL; } size_t -ts_int_deboornet_sof_state(const tsDeBoorNet *net) -{ - return sizeof(struct tsDeBoorNetImpl) + - ts_deboornet_sof_points(net) + - ts_deboornet_sof_result(net); +ts_int_deboornet_sof_state(const tsDeBoorNet *net) { + return sizeof(struct tsDeBoorNetImpl) + + ts_deboornet_sof_points(net) + + ts_deboornet_sof_result(net); } tsReal * -ts_int_deboornet_access_points(const tsDeBoorNet *net) -{ - return (tsReal *) (& net->pImpl[1]); +ts_int_deboornet_access_points(const tsDeBoorNet *net) { + return (tsReal *)(&net->pImpl[1]); } tsReal * -ts_int_deboornet_access_result(const tsDeBoorNet *net) -{ - if (ts_deboornet_num_result(net) == 2) { - return ts_int_deboornet_access_points(net); - } else { - return ts_int_deboornet_access_points(net) + - /* Last point in `points`. */ - (ts_deboornet_len_points(net) - - ts_deboornet_dimension(net)); - } +ts_int_deboornet_access_result(const tsDeBoorNet *net) { + if (ts_deboornet_num_result(net) == 2) { + return ts_int_deboornet_access_points(net); + } else { + return ts_int_deboornet_access_points(net) + + /* Last point in `points`. */ + (ts_deboornet_len_points(net) - + ts_deboornet_dimension(net)); + } } /*! @} */ - - /*! @name B-Spline Data * * @{ */ size_t -ts_bspline_degree(const tsBSpline *spline) -{ - return spline->pImpl->deg; +ts_bspline_degree(const tsBSpline *spline) { + return spline->pImpl->deg; } size_t -ts_bspline_order(const tsBSpline *spline) -{ - return ts_bspline_degree(spline) + 1; +ts_bspline_order(const tsBSpline *spline) { + return ts_bspline_degree(spline) + 1; } size_t -ts_bspline_dimension(const tsBSpline *spline) -{ - return spline->pImpl->dim; +ts_bspline_dimension(const tsBSpline *spline) { + return spline->pImpl->dim; } size_t -ts_bspline_len_control_points(const tsBSpline *spline) -{ - return ts_bspline_num_control_points(spline) * - ts_bspline_dimension(spline); +ts_bspline_len_control_points(const tsBSpline *spline) { + return ts_bspline_num_control_points(spline) * + ts_bspline_dimension(spline); } size_t -ts_bspline_num_control_points(const tsBSpline *spline) -{ - return spline->pImpl->n_ctrlp; +ts_bspline_num_control_points(const tsBSpline *spline) { + return spline->pImpl->n_ctrlp; } size_t -ts_bspline_sof_control_points(const tsBSpline *spline) -{ - return ts_bspline_len_control_points(spline) * sizeof(tsReal); +ts_bspline_sof_control_points(const tsBSpline *spline) { + return ts_bspline_len_control_points(spline) * sizeof(tsReal); } const tsReal * -ts_bspline_control_points_ptr(const tsBSpline *spline) -{ - return ts_int_bspline_access_ctrlp(spline); +ts_bspline_control_points_ptr(const tsBSpline *spline) { + return ts_int_bspline_access_ctrlp(spline); } tsError ts_bspline_control_points(const tsBSpline *spline, tsReal **ctrlp, - tsStatus *status) -{ - const size_t size = ts_bspline_sof_control_points(spline); - *ctrlp = (tsReal*) malloc(size); - if (!*ctrlp) - TS_RETURN_0(status, TS_MALLOC, "out of memory") - memcpy(*ctrlp, ts_int_bspline_access_ctrlp(spline), size); - TS_RETURN_SUCCESS(status) + tsStatus *status) { + const size_t size = ts_bspline_sof_control_points(spline); + *ctrlp = (tsReal *)malloc(size); + if (!*ctrlp) + TS_RETURN_0(status, TS_MALLOC, "out of memory") + memcpy(*ctrlp, ts_int_bspline_access_ctrlp(spline), size); + TS_RETURN_SUCCESS(status) } tsError ts_bspline_control_point_at_ptr(const tsBSpline *spline, size_t index, const tsReal **ctrlp, - tsStatus *status) -{ - tsReal *vals; - tsError err; - TS_TRY(try, err, status) - TS_CALL(try, err, ts_int_bspline_access_ctrlp_at( - spline, index, &vals, status)) - *ctrlp = vals; - TS_CATCH(err) - *ctrlp = NULL; - TS_END_TRY_RETURN(err) + tsStatus *status) { + tsReal *vals; + tsError err; + TS_TRY(try, err, status) + TS_CALL(try, err, ts_int_bspline_access_ctrlp_at(spline, index, &vals, status)) + *ctrlp = vals; + TS_CATCH(err) + *ctrlp = NULL; + TS_END_TRY_RETURN(err) } tsError ts_bspline_set_control_points(tsBSpline *spline, const tsReal *ctrlp, - tsStatus *status) -{ - const size_t size = ts_bspline_sof_control_points(spline); - memmove(ts_int_bspline_access_ctrlp(spline), ctrlp, size); - TS_RETURN_SUCCESS(status) + tsStatus *status) { + const size_t size = ts_bspline_sof_control_points(spline); + memmove(ts_int_bspline_access_ctrlp(spline), ctrlp, size); + TS_RETURN_SUCCESS(status) } tsError ts_bspline_set_control_point_at(tsBSpline *spline, size_t index, const tsReal *ctrlp, - tsStatus *status) -{ - tsReal *to; - size_t size; - tsError err; - TS_TRY(try, err, status) - TS_CALL(try, err, ts_int_bspline_access_ctrlp_at( - spline, index, &to, status)) - size = ts_bspline_dimension(spline) * sizeof(tsReal); - memcpy(to, ctrlp, size); - TS_END_TRY_RETURN(err) + tsStatus *status) { + tsReal *to; + size_t size; + tsError err; + TS_TRY(try, err, status) + TS_CALL(try, err, ts_int_bspline_access_ctrlp_at(spline, index, &to, status)) + size = ts_bspline_dimension(spline) * sizeof(tsReal); + memcpy(to, ctrlp, size); + TS_END_TRY_RETURN(err) } size_t -ts_bspline_num_knots(const tsBSpline *spline) -{ - return spline->pImpl->n_knots; +ts_bspline_num_knots(const tsBSpline *spline) { + return spline->pImpl->n_knots; } size_t -ts_bspline_sof_knots(const tsBSpline *spline) -{ - return ts_bspline_num_knots(spline) * sizeof(tsReal); +ts_bspline_sof_knots(const tsBSpline *spline) { + return ts_bspline_num_knots(spline) * sizeof(tsReal); } const tsReal * -ts_bspline_knots_ptr(const tsBSpline *spline) -{ - return ts_int_bspline_access_knots(spline); +ts_bspline_knots_ptr(const tsBSpline *spline) { + return ts_int_bspline_access_knots(spline); } tsError ts_bspline_knots(const tsBSpline *spline, tsReal **knots, - tsStatus *status) -{ - const size_t size = ts_bspline_sof_knots(spline); - *knots = (tsReal*) malloc(size); - if (!*knots) - TS_RETURN_0(status, TS_MALLOC, "out of memory") - memcpy(*knots, ts_int_bspline_access_knots(spline), size); - TS_RETURN_SUCCESS(status) + tsStatus *status) { + const size_t size = ts_bspline_sof_knots(spline); + *knots = (tsReal *)malloc(size); + if (!*knots) + TS_RETURN_0(status, TS_MALLOC, "out of memory") + memcpy(*knots, ts_int_bspline_access_knots(spline), size); + TS_RETURN_SUCCESS(status) } tsError ts_bspline_knot_at(const tsBSpline *spline, size_t index, tsReal *knot, - tsStatus *status) -{ - return ts_int_bspline_access_knot_at(spline, index, knot, status); + tsStatus *status) { + return ts_int_bspline_access_knot_at(spline, index, knot, status); } tsError ts_bspline_set_knots(tsBSpline *spline, const tsReal *knots, - tsStatus *status) -{ - const size_t size = ts_bspline_sof_knots(spline); - const size_t num_knots = ts_bspline_num_knots(spline); - const size_t order = ts_bspline_order(spline); - size_t idx, mult; - tsReal lst_knot, knot; - lst_knot = knots[0]; - mult = 1; - for (idx = 1; idx < num_knots; idx++) { - knot = knots[idx]; - if (ts_knots_equal(lst_knot, knot)) { - mult++; - } else if (lst_knot > knot) { - TS_RETURN_1(status, TS_KNOTS_DECR, - "decreasing knot vector at index: %lu", - (unsigned long) idx) - } else { - mult = 0; - } - if (mult > order) { - TS_RETURN_3(status, TS_MULTIPLICITY, - "mult(%f) (%lu) > order (%lu)", - knot, (unsigned long) mult, - (unsigned long) order) - } - lst_knot = knot; - } - memmove(ts_int_bspline_access_knots(spline), knots, size); - TS_RETURN_SUCCESS(status) + tsStatus *status) { + const size_t size = ts_bspline_sof_knots(spline); + const size_t num_knots = ts_bspline_num_knots(spline); + const size_t order = ts_bspline_order(spline); + size_t idx, mult; + tsReal lst_knot, knot; + lst_knot = knots[0]; + mult = 1; + for (idx = 1; idx < num_knots; idx++) { + knot = knots[idx]; + if (ts_knots_equal(lst_knot, knot)) { + mult++; + } else if (lst_knot > knot) { + TS_RETURN_1(status, TS_KNOTS_DECR, + "decreasing knot vector at index: %lu", + (unsigned long)idx) + } else { + mult = 0; + } + if (mult > order) { + TS_RETURN_3(status, TS_MULTIPLICITY, + "mult(%f) (%lu) > order (%lu)", + knot, (unsigned long)mult, + (unsigned long)order) + } + lst_knot = knot; + } + memmove(ts_int_bspline_access_knots(spline), knots, size); + TS_RETURN_SUCCESS(status) } tsError @@ -341,122 +304,109 @@ ts_bspline_set_knots_varargs(tsBSpline *spline, tsStatus *status, tsReal knot0, double knot1, - ...) -{ - tsReal *values = NULL; - va_list argp; - size_t idx; - tsError err; + ...) { + tsReal *values = NULL; + va_list argp; + size_t idx; + tsError err; - TS_TRY(try, err, status) - TS_CALL(try, err, ts_bspline_knots( - spline, &values, status)) + TS_TRY(try, err, status) + TS_CALL(try, err, ts_bspline_knots(spline, &values, status)) - values[0] = knot0; - values[1] = (tsReal) knot1; - va_start(argp, knot1); - for (idx = 2; idx < ts_bspline_num_knots(spline); idx++) - values[idx] = (tsReal) va_arg(argp, double); - va_end(argp); + values[0] = knot0; + values[1] = (tsReal)knot1; + va_start(argp, knot1); + for (idx = 2; idx < ts_bspline_num_knots(spline); idx++) + values[idx] = (tsReal)va_arg(argp, double); + va_end(argp); - TS_CALL(try, err, ts_bspline_set_knots( - spline, values, status)) - TS_FINALLY - if (values) - free(values); - TS_END_TRY_RETURN(err) + TS_CALL(try, err, ts_bspline_set_knots(spline, values, status)) + TS_FINALLY + if (values) + free(values); + TS_END_TRY_RETURN(err) } tsError ts_bspline_set_knot_at(tsBSpline *spline, size_t index, tsReal knot, - tsStatus *status) -{ - tsError err; - tsReal *knots = NULL; - /* This is only for initialization. */ - tsReal oldKnot = ts_int_bspline_access_knots(spline)[0]; - TS_TRY(try, err, status) - TS_CALL(try, err, ts_int_bspline_access_knot_at( - spline, index, &oldKnot, status)) - /* knots must be set after reading oldKnot because the catch - * block assumes that oldKnot contains the correct value if - * knots is not NULL. */ - knots = ts_int_bspline_access_knots(spline); - knots[index] = knot; - TS_CALL(try, err, ts_bspline_set_knots( - spline, knots, status)) - TS_CATCH(err) - /* If knots is not NULL, oldKnot contains the correct value. */ - if (knots) - knots[index] = oldKnot; - TS_END_TRY_RETURN(err) + tsStatus *status) { + tsError err; + tsReal *knots = NULL; + /* This is only for initialization. */ + tsReal oldKnot = ts_int_bspline_access_knots(spline)[0]; + TS_TRY(try, err, status) + TS_CALL(try, err, ts_int_bspline_access_knot_at(spline, index, &oldKnot, status)) + /* knots must be set after reading oldKnot because the catch + * block assumes that oldKnot contains the correct value if + * knots is not NULL. */ + knots = ts_int_bspline_access_knots(spline); + knots[index] = knot; + TS_CALL(try, err, ts_bspline_set_knots(spline, knots, status)) + TS_CATCH(err) + /* If knots is not NULL, oldKnot contains the correct value. */ + if (knots) + knots[index] = oldKnot; + TS_END_TRY_RETURN(err) } /*! @} */ - - /*! @name B-Spline Initialization * * @{ */ tsBSpline -ts_bspline_init(void) -{ - tsBSpline spline; - ts_int_bspline_init(&spline); - return spline; +ts_bspline_init(void) { + tsBSpline spline; + ts_int_bspline_init(&spline); + return spline; } tsError ts_int_bspline_generate_knots(const tsBSpline *spline, tsBSplineType type, - tsStatus *status) -{ - const size_t n_knots = ts_bspline_num_knots(spline); - const size_t deg = ts_bspline_degree(spline); - const size_t order = ts_bspline_order(spline); - tsReal fac; /**< Factor used to calculate the knot values. */ - size_t i; /**< Used in for loops. */ - tsReal *knots; /**< Pointer to the knots of \p _result_. */ + tsStatus *status) { + const size_t n_knots = ts_bspline_num_knots(spline); + const size_t deg = ts_bspline_degree(spline); + const size_t order = ts_bspline_order(spline); + tsReal fac; /**< Factor used to calculate the knot values. */ + size_t i; /**< Used in for loops. */ + tsReal *knots; /**< Pointer to the knots of \p _result_. */ - /* order >= 1 implies 2*order >= 2 implies n_knots >= 2 */ - if (type == TS_BEZIERS && n_knots % order != 0) { - TS_RETURN_2(status, TS_NUM_KNOTS, - "num(knots) (%lu) %% order (%lu) != 0", - (unsigned long) n_knots, (unsigned long) order) - } + /* order >= 1 implies 2*order >= 2 implies n_knots >= 2 */ + if (type == TS_BEZIERS && n_knots % order != 0) { + TS_RETURN_2(status, TS_NUM_KNOTS, + "num(knots) (%lu) %% order (%lu) != 0", + (unsigned long)n_knots, (unsigned long)order) + } - knots = ts_int_bspline_access_knots(spline); + knots = ts_int_bspline_access_knots(spline); - if (type == TS_OPENED) { - knots[0] = TS_DOMAIN_DEFAULT_MIN; /* n_knots >= 2 */ - fac = (TS_DOMAIN_DEFAULT_MAX - TS_DOMAIN_DEFAULT_MIN) - / (n_knots - 1); /* n_knots >= 2 */ - for (i = 1; i < n_knots-1; i++) - knots[i] = TS_DOMAIN_DEFAULT_MIN + i*fac; - knots[i] = TS_DOMAIN_DEFAULT_MAX; /* n_knots >= 2 */ - } else if (type == TS_CLAMPED) { - /* n_knots >= 2*order == 2*(deg+1) == 2*deg + 2 > 2*deg - 1 */ - fac = (TS_DOMAIN_DEFAULT_MAX - TS_DOMAIN_DEFAULT_MIN) - / (n_knots - 2*deg - 1); - ts_arr_fill(knots, order, TS_DOMAIN_DEFAULT_MIN); - for (i = order ;i < n_knots-order; i++) - knots[i] = TS_DOMAIN_DEFAULT_MIN + (i-deg)*fac; - ts_arr_fill(knots + i, order, TS_DOMAIN_DEFAULT_MAX); - } else if (type == TS_BEZIERS) { - /* n_knots >= 2*order implies n_knots/order >= 2 */ - fac = (TS_DOMAIN_DEFAULT_MAX - TS_DOMAIN_DEFAULT_MIN) - / (n_knots/order - 1); - ts_arr_fill(knots, order, TS_DOMAIN_DEFAULT_MIN); - for (i = order; i < n_knots-order; i += order) - ts_arr_fill(knots + i, - order, - TS_DOMAIN_DEFAULT_MIN + (i/order)*fac); - ts_arr_fill(knots + i, order, TS_DOMAIN_DEFAULT_MAX); - } - TS_RETURN_SUCCESS(status) + if (type == TS_OPENED) { + knots[0] = TS_DOMAIN_DEFAULT_MIN; /* n_knots >= 2 */ + fac = (TS_DOMAIN_DEFAULT_MAX - TS_DOMAIN_DEFAULT_MIN) / (n_knots - 1); /* n_knots >= 2 */ + for (i = 1; i < n_knots - 1; i++) + knots[i] = TS_DOMAIN_DEFAULT_MIN + i * fac; + knots[i] = TS_DOMAIN_DEFAULT_MAX; /* n_knots >= 2 */ + } else if (type == TS_CLAMPED) { + /* n_knots >= 2*order == 2*(deg+1) == 2*deg + 2 > 2*deg - 1 */ + fac = (TS_DOMAIN_DEFAULT_MAX - TS_DOMAIN_DEFAULT_MIN) / (n_knots - 2 * deg - 1); + ts_arr_fill(knots, order, TS_DOMAIN_DEFAULT_MIN); + for (i = order; i < n_knots - order; i++) + knots[i] = TS_DOMAIN_DEFAULT_MIN + (i - deg) * fac; + ts_arr_fill(knots + i, order, TS_DOMAIN_DEFAULT_MAX); + } else if (type == TS_BEZIERS) { + /* n_knots >= 2*order implies n_knots/order >= 2 */ + fac = (TS_DOMAIN_DEFAULT_MAX - TS_DOMAIN_DEFAULT_MIN) / (n_knots / order - 1); + ts_arr_fill(knots, order, TS_DOMAIN_DEFAULT_MIN); + for (i = order; i < n_knots - order; i += order) + ts_arr_fill(knots + i, + order, + TS_DOMAIN_DEFAULT_MIN + (i / order) * fac); + ts_arr_fill(knots + i, order, TS_DOMAIN_DEFAULT_MAX); + } + TS_RETURN_SUCCESS(status) } tsError @@ -465,51 +415,49 @@ ts_bspline_new(size_t num_control_points, size_t degree, tsBSplineType type, tsBSpline *spline, - tsStatus *status) -{ - const size_t order = degree + 1; - const size_t num_knots = num_control_points + order; - const size_t len_ctrlp = num_control_points * dimension; + tsStatus *status) { + const size_t order = degree + 1; + const size_t num_knots = num_control_points + order; + const size_t len_ctrlp = num_control_points * dimension; - const size_t sof_real = sizeof(tsReal); - const size_t sof_impl = sizeof(struct tsBSplineImpl); - const size_t sof_ctrlp_vec = len_ctrlp * sof_real; - const size_t sof_knots_vec = num_knots * sof_real; - const size_t sof_spline = sof_impl + sof_ctrlp_vec + sof_knots_vec; - tsError err; + const size_t sof_real = sizeof(tsReal); + const size_t sof_impl = sizeof(struct tsBSplineImpl); + const size_t sof_ctrlp_vec = len_ctrlp * sof_real; + const size_t sof_knots_vec = num_knots * sof_real; + const size_t sof_spline = sof_impl + sof_ctrlp_vec + sof_knots_vec; + tsError err; - ts_int_bspline_init(spline); + ts_int_bspline_init(spline); - if (dimension < 1) { - TS_RETURN_0(status, TS_DIM_ZERO, "unsupported dimension: 0") - } - if (num_knots > TS_MAX_NUM_KNOTS) { - TS_RETURN_2(status, TS_NUM_KNOTS, - "unsupported number of knots: %lu > %i", - (unsigned long) num_knots, TS_MAX_NUM_KNOTS) - } - if (degree >= num_control_points) { - TS_RETURN_2(status, TS_DEG_GE_NCTRLP, - "degree (%lu) >= num(control_points) (%lu)", - (unsigned long) degree, - (unsigned long) num_control_points) - } + if (dimension < 1) { + TS_RETURN_0(status, TS_DIM_ZERO, "unsupported dimension: 0") + } + if (num_knots > TS_MAX_NUM_KNOTS) { + TS_RETURN_2(status, TS_NUM_KNOTS, + "unsupported number of knots: %lu > %i", + (unsigned long)num_knots, TS_MAX_NUM_KNOTS) + } + if (degree >= num_control_points) { + TS_RETURN_2(status, TS_DEG_GE_NCTRLP, + "degree (%lu) >= num(control_points) (%lu)", + (unsigned long)degree, + (unsigned long)num_control_points) + } - spline->pImpl = (struct tsBSplineImpl *) malloc(sof_spline); - if (!spline->pImpl) - TS_RETURN_0(status, TS_MALLOC, "out of memory") + spline->pImpl = (struct tsBSplineImpl *)malloc(sof_spline); + if (!spline->pImpl) + TS_RETURN_0(status, TS_MALLOC, "out of memory") - spline->pImpl->deg = degree; - spline->pImpl->dim = dimension; - spline->pImpl->n_ctrlp = num_control_points; - spline->pImpl->n_knots = num_knots; + spline->pImpl->deg = degree; + spline->pImpl->dim = dimension; + spline->pImpl->n_ctrlp = num_control_points; + spline->pImpl->n_knots = num_knots; - TS_TRY(try, err, status) - TS_CALL(try, err, ts_int_bspline_generate_knots( - spline, type, status)) - TS_CATCH(err) - ts_bspline_free(spline); - TS_END_TRY_RETURN(err) + TS_TRY(try, err, status) + TS_CALL(try, err, ts_int_bspline_generate_knots(spline, type, status)) + TS_CATCH(err) + ts_bspline_free(spline); + TS_END_TRY_RETURN(err) } tsError @@ -520,262 +468,226 @@ ts_bspline_new_with_control_points(size_t num_control_points, tsBSpline *spline, tsStatus *status, double first, - ...) -{ - tsReal *ctrlp = NULL; - va_list argp; - size_t i; - tsError err; + ...) { + tsReal *ctrlp = NULL; + va_list argp; + size_t i; + tsError err; - TS_TRY(try, err, status) - TS_CALL(try, err, ts_bspline_new( - num_control_points, dimension, - degree, type, spline, status)) - TS_CATCH(err) - ts_bspline_free(spline); - TS_END_TRY_ROE(err) - ctrlp = ts_int_bspline_access_ctrlp(spline); + TS_TRY(try, err, status) + TS_CALL(try, err, ts_bspline_new(num_control_points, dimension, degree, type, spline, status)) + TS_CATCH(err) + ts_bspline_free(spline); + TS_END_TRY_ROE(err) + ctrlp = ts_int_bspline_access_ctrlp(spline); - ctrlp[0] = (tsReal) first; - va_start(argp, first); - for (i = 1; i < ts_bspline_len_control_points(spline); i++) - ctrlp[i] = (tsReal) va_arg(argp, double); - va_end(argp); + ctrlp[0] = (tsReal)first; + va_start(argp, first); + for (i = 1; i < ts_bspline_len_control_points(spline); i++) + ctrlp[i] = (tsReal)va_arg(argp, double); + va_end(argp); - TS_RETURN_SUCCESS(status) + TS_RETURN_SUCCESS(status) } tsError ts_bspline_copy(const tsBSpline *src, tsBSpline *dest, - tsStatus *status) -{ - size_t size; - if (src == dest) - TS_RETURN_SUCCESS(status) - ts_int_bspline_init(dest); - size = ts_int_bspline_sof_state(src); - dest->pImpl = (struct tsBSplineImpl *) malloc(size); - if (!dest->pImpl) - TS_RETURN_0(status, TS_MALLOC, "out of memory") - memcpy(dest->pImpl, src->pImpl, size); - TS_RETURN_SUCCESS(status) + tsStatus *status) { + size_t size; + if (src == dest) + TS_RETURN_SUCCESS(status) + ts_int_bspline_init(dest); + size = ts_int_bspline_sof_state(src); + dest->pImpl = (struct tsBSplineImpl *)malloc(size); + if (!dest->pImpl) + TS_RETURN_0(status, TS_MALLOC, "out of memory") + memcpy(dest->pImpl, src->pImpl, size); + TS_RETURN_SUCCESS(status) } -void -ts_bspline_move(tsBSpline *src, - tsBSpline *dest) -{ - if (src == dest) - return; - dest->pImpl = src->pImpl; - ts_int_bspline_init(src); +void ts_bspline_move(tsBSpline *src, + tsBSpline *dest) { + if (src == dest) + return; + dest->pImpl = src->pImpl; + ts_int_bspline_init(src); } -void -ts_bspline_free(tsBSpline *spline) -{ - if (spline->pImpl) - free(spline->pImpl); - ts_int_bspline_init(spline); +void ts_bspline_free(tsBSpline *spline) { + if (spline->pImpl) + free(spline->pImpl); + ts_int_bspline_init(spline); } /*! @} */ - - /*! @name De Boor Net Data * * @{ */ tsReal -ts_deboornet_knot(const tsDeBoorNet *net) -{ - return net->pImpl->u; +ts_deboornet_knot(const tsDeBoorNet *net) { + return net->pImpl->u; } size_t -ts_deboornet_index(const tsDeBoorNet *net) -{ - return net->pImpl->k; +ts_deboornet_index(const tsDeBoorNet *net) { + return net->pImpl->k; } size_t -ts_deboornet_multiplicity(const tsDeBoorNet *net) -{ - return net->pImpl->s; +ts_deboornet_multiplicity(const tsDeBoorNet *net) { + return net->pImpl->s; } size_t -ts_deboornet_num_insertions(const tsDeBoorNet *net) -{ - return net->pImpl->h; +ts_deboornet_num_insertions(const tsDeBoorNet *net) { + return net->pImpl->h; } size_t -ts_deboornet_dimension(const tsDeBoorNet *net) -{ - return net->pImpl->dim; +ts_deboornet_dimension(const tsDeBoorNet *net) { + return net->pImpl->dim; } size_t -ts_deboornet_len_points(const tsDeBoorNet *net) -{ - return ts_deboornet_num_points(net) * - ts_deboornet_dimension(net); +ts_deboornet_len_points(const tsDeBoorNet *net) { + return ts_deboornet_num_points(net) * + ts_deboornet_dimension(net); } size_t -ts_deboornet_num_points(const tsDeBoorNet *net) -{ - return net->pImpl->n_points; +ts_deboornet_num_points(const tsDeBoorNet *net) { + return net->pImpl->n_points; } size_t -ts_deboornet_sof_points(const tsDeBoorNet *net) -{ - return ts_deboornet_len_points(net) * sizeof(tsReal); +ts_deboornet_sof_points(const tsDeBoorNet *net) { + return ts_deboornet_len_points(net) * sizeof(tsReal); } const tsReal * -ts_deboornet_points_ptr(const tsDeBoorNet *net) -{ - return ts_int_deboornet_access_points(net); +ts_deboornet_points_ptr(const tsDeBoorNet *net) { + return ts_int_deboornet_access_points(net); } tsError ts_deboornet_points(const tsDeBoorNet *net, tsReal **points, - tsStatus *status) -{ - const size_t size = ts_deboornet_sof_points(net); - *points = (tsReal*) malloc(size); - if (!*points) - TS_RETURN_0(status, TS_MALLOC, "out of memory") - memcpy(*points, ts_int_deboornet_access_points(net), size); - TS_RETURN_SUCCESS(status) + tsStatus *status) { + const size_t size = ts_deboornet_sof_points(net); + *points = (tsReal *)malloc(size); + if (!*points) + TS_RETURN_0(status, TS_MALLOC, "out of memory") + memcpy(*points, ts_int_deboornet_access_points(net), size); + TS_RETURN_SUCCESS(status) } size_t -ts_deboornet_len_result(const tsDeBoorNet *net) -{ - return ts_deboornet_num_result(net) * - ts_deboornet_dimension(net); +ts_deboornet_len_result(const tsDeBoorNet *net) { + return ts_deboornet_num_result(net) * + ts_deboornet_dimension(net); } size_t -ts_deboornet_num_result(const tsDeBoorNet *net) -{ - return ts_deboornet_num_points(net) == 2 ? 2 : 1; +ts_deboornet_num_result(const tsDeBoorNet *net) { + return ts_deboornet_num_points(net) == 2 ? 2 : 1; } size_t -ts_deboornet_sof_result(const tsDeBoorNet *net) -{ - return ts_deboornet_len_result(net) * sizeof(tsReal); +ts_deboornet_sof_result(const tsDeBoorNet *net) { + return ts_deboornet_len_result(net) * sizeof(tsReal); } const tsReal * -ts_deboornet_result_ptr(const tsDeBoorNet *net) -{ - return ts_int_deboornet_access_result(net); +ts_deboornet_result_ptr(const tsDeBoorNet *net) { + return ts_int_deboornet_access_result(net); } tsError ts_deboornet_result(const tsDeBoorNet *net, tsReal **result, - tsStatus *status) -{ - const size_t size = ts_deboornet_sof_result(net); - *result = (tsReal*) malloc(size); - if (!*result) - TS_RETURN_0(status, TS_MALLOC, "out of memory") - memcpy(*result, ts_int_deboornet_access_result(net), size); - TS_RETURN_SUCCESS(status) + tsStatus *status) { + const size_t size = ts_deboornet_sof_result(net); + *result = (tsReal *)malloc(size); + if (!*result) + TS_RETURN_0(status, TS_MALLOC, "out of memory") + memcpy(*result, ts_int_deboornet_access_result(net), size); + TS_RETURN_SUCCESS(status) } /*! @} */ - - /*! @name De Boor Net Initialization * * @{ */ tsDeBoorNet -ts_deboornet_init(void) -{ - tsDeBoorNet net; - ts_int_deboornet_init(&net); - return net; +ts_deboornet_init(void) { + tsDeBoorNet net; + ts_int_deboornet_init(&net); + return net; } tsError ts_int_deboornet_new(const tsBSpline *spline, tsDeBoorNet *net, - tsStatus *status) -{ - const size_t dim = ts_bspline_dimension(spline); - const size_t deg = ts_bspline_degree(spline); - const size_t order = ts_bspline_order(spline); - const size_t num_points = (size_t)(order * (order+1) * 0.5f); - /* Handle `order == 1' which generates too few points. */ - const size_t fixed_num_points = num_points < 2 ? 2 : num_points; + tsStatus *status) { + const size_t dim = ts_bspline_dimension(spline); + const size_t deg = ts_bspline_degree(spline); + const size_t order = ts_bspline_order(spline); + const size_t num_points = (size_t)(order * (order + 1) * 0.5f); + /* Handle `order == 1' which generates too few points. */ + const size_t fixed_num_points = num_points < 2 ? 2 : num_points; - const size_t sof_real = sizeof(tsReal); - const size_t sof_impl = sizeof(struct tsDeBoorNetImpl); - const size_t sof_points_vec = fixed_num_points * dim * sof_real; - const size_t sof_net = sof_impl * sof_points_vec; + const size_t sof_real = sizeof(tsReal); + const size_t sof_impl = sizeof(struct tsDeBoorNetImpl); + const size_t sof_points_vec = fixed_num_points * dim * sof_real; + const size_t sof_net = sof_impl * sof_points_vec; - net->pImpl = (struct tsDeBoorNetImpl *) malloc(sof_net); - if (!net->pImpl) - TS_RETURN_0(status, TS_MALLOC, "out of memory") + net->pImpl = (struct tsDeBoorNetImpl *)malloc(sof_net); + if (!net->pImpl) + TS_RETURN_0(status, TS_MALLOC, "out of memory") - net->pImpl->u = 0.f; - net->pImpl->k = 0; - net->pImpl->s = 0; - net->pImpl->h = deg; - net->pImpl->dim = dim; - net->pImpl->n_points = fixed_num_points; - TS_RETURN_SUCCESS(status) + net->pImpl->u = 0.f; + net->pImpl->k = 0; + net->pImpl->s = 0; + net->pImpl->h = deg; + net->pImpl->dim = dim; + net->pImpl->n_points = fixed_num_points; + TS_RETURN_SUCCESS(status) } -void -ts_deboornet_free(tsDeBoorNet *net) -{ - if (net->pImpl) - free(net->pImpl); - ts_int_deboornet_init(net); +void ts_deboornet_free(tsDeBoorNet *net) { + if (net->pImpl) + free(net->pImpl); + ts_int_deboornet_init(net); } tsError ts_deboornet_copy(const tsDeBoorNet *src, tsDeBoorNet *dest, - tsStatus *status) -{ - size_t size; - if (src == dest) - TS_RETURN_SUCCESS(status) - ts_int_deboornet_init(dest); - size = ts_int_deboornet_sof_state(src); - dest->pImpl = (struct tsDeBoorNetImpl *) malloc(size); - if (!dest->pImpl) - TS_RETURN_0(status, TS_MALLOC, "out of memory") - memcpy(dest->pImpl, src->pImpl, size); - TS_RETURN_SUCCESS(status) + tsStatus *status) { + size_t size; + if (src == dest) + TS_RETURN_SUCCESS(status) + ts_int_deboornet_init(dest); + size = ts_int_deboornet_sof_state(src); + dest->pImpl = (struct tsDeBoorNetImpl *)malloc(size); + if (!dest->pImpl) + TS_RETURN_0(status, TS_MALLOC, "out of memory") + memcpy(dest->pImpl, src->pImpl, size); + TS_RETURN_SUCCESS(status) } -void -ts_deboornet_move(tsDeBoorNet *src, - tsDeBoorNet *dest) -{ - if (src == dest) - return; - dest->pImpl = src->pImpl; - ts_int_deboornet_init(src); +void ts_deboornet_move(tsDeBoorNet *src, + tsDeBoorNet *dest) { + if (src == dest) + return; + dest->pImpl = src->pImpl; + ts_int_deboornet_init(src); } /*! @} */ - - /*! @name Interpolation and Approximation Functions * * @{ @@ -784,22 +696,21 @@ tsError ts_int_cubic_point(const tsReal *point, size_t dim, tsBSpline *spline, - tsStatus *status) -{ - const size_t size = dim * sizeof(tsReal); - tsReal *ctrlp = NULL; - size_t i; - tsError err; - TS_CALL_ROE(err, ts_bspline_new( - 4, dim, 3, - TS_CLAMPED, spline, status)) - ctrlp = ts_int_bspline_access_ctrlp(spline); - for (i = 0; i < 4; i++) { - memcpy(ctrlp + i*dim, - point, - size); - } - TS_RETURN_SUCCESS(status) + tsStatus *status) { + const size_t size = dim * sizeof(tsReal); + tsReal *ctrlp = NULL; + size_t i; + tsError err; + TS_CALL_ROE(err, ts_bspline_new( + 4, dim, 3, + TS_CLAMPED, spline, status)) + ctrlp = ts_int_bspline_access_ctrlp(spline); + for (i = 0; i < 4; i++) { + memcpy(ctrlp + i * dim, + point, + size); + } + TS_RETURN_SUCCESS(status) } tsError @@ -809,72 +720,71 @@ ts_int_thomas_algorithm(const tsReal *a, size_t num, size_t dim, tsReal *d, - tsStatus *status) -{ - size_t i, j, k, l; - tsReal m, *cc = NULL; - tsError err; + tsStatus *status) { + size_t i, j, k, l; + tsReal m, *cc = NULL; + tsError err; - if (dim == 0) { - TS_RETURN_0(status, TS_DIM_ZERO, - "unsupported dimension: 0") - } - if (num <= 1) { - TS_RETURN_1(status, TS_NUM_POINTS, - "num(points) (%lu) <= 1", - (unsigned long) num) - } - cc = (tsReal *) malloc(num * sizeof(tsReal)); - if (!cc) TS_RETURN_0(status, TS_MALLOC, "out of memory") + if (dim == 0) { + TS_RETURN_0(status, TS_DIM_ZERO, + "unsupported dimension: 0") + } + if (num <= 1) { + TS_RETURN_1(status, TS_NUM_POINTS, + "num(points) (%lu) <= 1", + (unsigned long)num) + } + cc = (tsReal *)malloc(num * sizeof(tsReal)); + if (!cc) TS_RETURN_0(status, TS_MALLOC, "out of memory") - TS_TRY(try, err, status) - /* Forward sweep. */ - if (fabs(b[0]) <= fabs(c[0])) { - TS_THROW_2(try, err, status, TS_NO_RESULT, - "error: |%f| <= |%f|", b[0], c[0]) - } - /* |b[i]| > |c[i]| implies that |b[i]| > 0. Thus, the following - * statements cannot evaluate to division by zero.*/ - cc[0] = c[0] / b[0]; - for (i = 0; i < dim; i++) - d[i] = d[i] / b[0]; - for (i = 1; i < num; i++) { - if (fabs(b[i]) <= fabs(a[i]) + fabs(c[i])) { - TS_THROW_3(try, err, status, TS_NO_RESULT, - "error: |%f| <= |%f| + |%f|", - b[i], a[i], c[i]) - } - /* |a[i]| < |b[i]| and cc[i - 1] < 1. Therefore, the - * following statement cannot evaluate to division by - * zero. */ - m = 1.f / (b[i] - a[i] * cc[i - 1]); - /* |b[i]| > |a[i]| + |c[i]| implies that there must be - * an eps > 0 such that |b[i]| = |a[i]| + |c[i]| + eps. - * Even if |a[i]| is 0 (by which the result of the - * following statement becomes maximum), |c[i]| is less - * than |b[i]| by an amount of eps. By substituting the - * previous and the following statements (under the - * assumption that |a[i]| is 0), we obtain c[i] / b[i], - * which must be less than 1. */ - cc[i] = c[i] * m; - for (j = 0; j < dim; j++) { - k = i * dim + j; - l = (i-1) * dim + j; - d[k] = (d[k] - a[i] * d[l]) * m; - } - } + TS_TRY(try, err, status) + /* Forward sweep. */ + if (fabs(b[0]) <= fabs(c[0])) { + TS_THROW_2(try, err, status, TS_NO_RESULT, + "error: |%f| <= |%f|", b[0], c[0]) + } + /* |b[i]| > |c[i]| implies that |b[i]| > 0. Thus, the following + * statements cannot evaluate to division by zero.*/ + cc[0] = c[0] / b[0]; + for (i = 0; i < dim; i++) + d[i] = d[i] / b[0]; + for (i = 1; i < num; i++) { + if (fabs(b[i]) <= fabs(a[i]) + fabs(c[i])) { + TS_THROW_3(try, err, status, TS_NO_RESULT, + "error: |%f| <= |%f| + |%f|", + b[i], a[i], c[i]) + } + /* |a[i]| < |b[i]| and cc[i - 1] < 1. Therefore, the + * following statement cannot evaluate to division by + * zero. */ + m = 1.f / (b[i] - a[i] * cc[i - 1]); + /* |b[i]| > |a[i]| + |c[i]| implies that there must be + * an eps > 0 such that |b[i]| = |a[i]| + |c[i]| + eps. + * Even if |a[i]| is 0 (by which the result of the + * following statement becomes maximum), |c[i]| is less + * than |b[i]| by an amount of eps. By substituting the + * previous and the following statements (under the + * assumption that |a[i]| is 0), we obtain c[i] / b[i], + * which must be less than 1. */ + cc[i] = c[i] * m; + for (j = 0; j < dim; j++) { + k = i * dim + j; + l = (i - 1) * dim + j; + d[k] = (d[k] - a[i] * d[l]) * m; + } + } - /* Back substitution. */ - for (i = num-1; i > 0; i--) { - for (j = 0; j < dim; j++) { - k = (i-1) * dim + j; - l = i * dim + j; - d[k] -= cc[i-1] * d[l]; - } - } - TS_FINALLY - free(cc); - TS_END_TRY_RETURN(err) + /* Back substitution. */ + for (i = num - 1; i > 0; i--) { + for (j = 0; j < dim; j++) { + k = (i - 1) * dim + j; + l = i * dim + j; + d[k] -= cc[i - 1] * d[l]; + } + } + TS_FINALLY + free(cc); + TS_END_TRY_RETURN(err) } tsError @@ -882,80 +792,77 @@ ts_int_relaxed_uniform_cubic_bspline(const tsReal *points, size_t n, size_t dim, tsBSpline *spline, - tsStatus *status) -{ - const size_t order = 4; /**< Order of spline to interpolate. */ - const tsReal as = 1.f/6.f; /**< The value 'a sixth'. */ - const tsReal at = 1.f/3.f; /**< The value 'a third'. */ - const tsReal tt = 2.f/3.f; /**< The value 'two third'. */ - size_t sof_ctrlp; /**< Size of a single control point. */ - const tsReal* b = points; /**< Array of the b values. */ - tsReal* s; /**< Array of the s values. */ - size_t i, d; /**< Used in for loops */ - size_t j, k, l; /**< Used as temporary indices. */ - tsReal *ctrlp; /**< Pointer to the control points of \p _spline_. */ - tsError err; + tsStatus *status) { + const size_t order = 4; /**< Order of spline to interpolate. */ + const tsReal as = 1.f / 6.f; /**< The value 'a sixth'. */ + const tsReal at = 1.f / 3.f; /**< The value 'a third'. */ + const tsReal tt = 2.f / 3.f; /**< The value 'two third'. */ + size_t sof_ctrlp; /**< Size of a single control point. */ + const tsReal *b = points; /**< Array of the b values. */ + tsReal *s; /**< Array of the s values. */ + size_t i, d; /**< Used in for loops */ + size_t j, k, l; /**< Used as temporary indices. */ + tsReal *ctrlp; /**< Pointer to the control points of \p _spline_. */ + tsError err; - /* input validation */ - if (dim == 0) - TS_RETURN_0(status, TS_DIM_ZERO, "unsupported dimension: 0") - if (n <= 1) { - TS_RETURN_1(status, TS_NUM_POINTS, - "num(points) (%lu) <= 1", - (unsigned long) n) - } - /* in the following n >= 2 applies */ + /* input validation */ + if (dim == 0) + TS_RETURN_0(status, TS_DIM_ZERO, "unsupported dimension: 0") + if (n <= 1) { + TS_RETURN_1(status, TS_NUM_POINTS, + "num(points) (%lu) <= 1", + (unsigned long)n) + } + /* in the following n >= 2 applies */ - sof_ctrlp = dim * sizeof(tsReal); /* dim > 0 implies sof_ctrlp > 0 */ + sof_ctrlp = dim * sizeof(tsReal); /* dim > 0 implies sof_ctrlp > 0 */ - s = NULL; - TS_TRY(try, err, status) - /* n >= 2 implies n-1 >= 1 implies (n-1)*4 >= 4 */ - TS_CALL(try, err, ts_bspline_new( - (n-1) * 4, dim, order - 1, - TS_BEZIERS, spline, status)) - ctrlp = ts_int_bspline_access_ctrlp(spline); + s = NULL; + TS_TRY(try, err, status) + /* n >= 2 implies n-1 >= 1 implies (n-1)*4 >= 4 */ + TS_CALL(try, err, ts_bspline_new((n - 1) * 4, dim, order - 1, TS_BEZIERS, spline, status)) + ctrlp = ts_int_bspline_access_ctrlp(spline); - s = (tsReal*) malloc(n * sof_ctrlp); - if (!s) { - TS_THROW_0(try, err, status, TS_MALLOC, - "out of memory") - } + s = (tsReal *)malloc(n * sof_ctrlp); + if (!s) { + TS_THROW_0(try, err, status, TS_MALLOC, + "out of memory") + } - /* set s_0 to b_0 and s_n = b_n */ - memcpy(s, b, sof_ctrlp); - memcpy(s + (n-1)*dim, b + (n-1)*dim, sof_ctrlp); + /* set s_0 to b_0 and s_n = b_n */ + memcpy(s, b, sof_ctrlp); + memcpy(s + (n - 1) * dim, b + (n - 1) * dim, sof_ctrlp); - /* set s_i = 1/6*b_i + 2/3*b_{i-1} + 1/6*b_{i+1}*/ - for (i = 1; i < n-1; i++) { - for (d = 0; d < dim; d++) { - j = (i-1)*dim+d; - k = i*dim+d; - l = (i+1)*dim+d; - s[k] = as * b[j]; - s[k] += tt * b[k]; - s[k] += as * b[l]; - } - } + /* set s_i = 1/6*b_i + 2/3*b_{i-1} + 1/6*b_{i+1}*/ + for (i = 1; i < n - 1; i++) { + for (d = 0; d < dim; d++) { + j = (i - 1) * dim + d; + k = i * dim + d; + l = (i + 1) * dim + d; + s[k] = as * b[j]; + s[k] += tt * b[k]; + s[k] += as * b[l]; + } + } - /* create beziers from b and s */ - for (i = 0; i < n-1; i++) { - for (d = 0; d < dim; d++) { - j = i*dim+d; - k = i*4*dim+d; - l = (i+1)*dim+d; - ctrlp[k] = s[j]; - ctrlp[k+dim] = tt*b[j] + at*b[l]; - ctrlp[k+2*dim] = at*b[j] + tt*b[l]; - ctrlp[k+3*dim] = s[l]; - } - } - TS_CATCH(err) - ts_bspline_free(spline); - TS_FINALLY - if (s) - free(s); - TS_END_TRY_RETURN(err) + /* create beziers from b and s */ + for (i = 0; i < n - 1; i++) { + for (d = 0; d < dim; d++) { + j = i * dim + d; + k = i * 4 * dim + d; + l = (i + 1) * dim + d; + ctrlp[k] = s[j]; + ctrlp[k + dim] = tt * b[j] + at * b[l]; + ctrlp[k + 2 * dim] = at * b[j] + tt * b[l]; + ctrlp[k + 3 * dim] = s[l]; + } + } + TS_CATCH(err) + ts_bspline_free(spline); + TS_FINALLY + if (s) + free(s); + TS_END_TRY_RETURN(err) } tsError @@ -963,88 +870,84 @@ ts_bspline_interpolate_cubic_natural(const tsReal *points, size_t num_points, size_t dimension, tsBSpline *spline, - tsStatus *status) -{ - const size_t sof_ctrlp = dimension * sizeof(tsReal); - const size_t len_points = num_points * dimension; - const size_t num_int_points = num_points - 2; - const size_t len_int_points = num_int_points * dimension; - tsReal *thomas, *a, *b, *c, *d; - size_t i, j, k, l; - tsError err; + tsStatus *status) { + const size_t sof_ctrlp = dimension * sizeof(tsReal); + const size_t len_points = num_points * dimension; + const size_t num_int_points = num_points - 2; + const size_t len_int_points = num_int_points * dimension; + tsReal *thomas, *a, *b, *c, *d; + size_t i, j, k, l; + tsError err; - ts_int_bspline_init(spline); - if (num_points == 0) - TS_RETURN_0(status, TS_NUM_POINTS, "num(points) == 0") - if (num_points == 1) { - TS_CALL_ROE(err, ts_int_cubic_point( - points, dimension, spline, status)) - TS_RETURN_SUCCESS(status) - } - if (num_points == 2) { - return ts_int_relaxed_uniform_cubic_bspline( - points, num_points, dimension, spline, status); - } - /* `num_points` >= 3 */ - thomas = NULL; - TS_TRY(try, err, status) - thomas = (tsReal *) malloc( - /* `a', `b', `c' (note that `c' is equal to `a') */ - 2 * num_int_points * sizeof(tsReal) + - /* `d' and "result of the thomas algorithm" (which - contains `num_points' points) */ - num_points * dimension * sizeof(tsReal)); - if (!thomas) { - TS_THROW_0(try, err, status, TS_MALLOC, - "out of memory") - } - /* The system of linear equations is taken from: - * http://www.bakoma-tex.com/doc/generic/pst-bspline/ - * pst-bspline-doc.pdf */ - a = c = thomas; - ts_arr_fill(a, num_int_points, 1); - b = a + num_int_points; - ts_arr_fill(b, num_int_points, 4); - d = b + num_int_points; - /* 6 * S_{i+1} */ - for (i = 0; i < num_int_points; i++) { - for (j = 0; j < dimension; j++) { - k = i * dimension + j; - l = (i+1) * dimension + j; - d[k] = 6 * points[l]; - } - } - for (i = 0; i < dimension; i++) { - /* 6 * S_{1} - S_{0} */ - d[i] -= points[i]; - /* 6 * S_{n-1} - S_{n} */ - k = len_int_points - (i+1); - l = len_points - (i+1); - d[k] -= points[l]; - } - /* The Thomas algorithm requires at least two points. Hence, - * `num_int_points` == 1 must be handled separately (let's call - * it "Mini Thomas"). */ - if (num_int_points == 1) { - for (i = 0; i < dimension; i++) - d[i] *= (tsReal) 0.25f; - } else { - TS_CALL(try, err, ts_int_thomas_algorithm( - a, b, c, num_int_points, dimension, d, - status)) - } - memcpy(thomas, points, sof_ctrlp); - memmove(thomas + dimension, d, num_int_points * sof_ctrlp); - memcpy(thomas + (num_int_points+1) * dimension, - points + (num_points-1) * dimension, sof_ctrlp); - TS_CALL(try, err, ts_int_relaxed_uniform_cubic_bspline( - thomas, num_points, dimension, spline, status)) - TS_CATCH(err) - ts_bspline_free(spline); - TS_FINALLY - if (thomas) - free(thomas); - TS_END_TRY_RETURN(err) + ts_int_bspline_init(spline); + if (num_points == 0) + TS_RETURN_0(status, TS_NUM_POINTS, "num(points) == 0") + if (num_points == 1) { + TS_CALL_ROE(err, ts_int_cubic_point( + points, dimension, spline, status)) + TS_RETURN_SUCCESS(status) + } + if (num_points == 2) { + return ts_int_relaxed_uniform_cubic_bspline( + points, num_points, dimension, spline, status); + } + /* `num_points` >= 3 */ + thomas = NULL; + TS_TRY(try, err, status) + thomas = (tsReal *)malloc( + /* `a', `b', `c' (note that `c' is equal to `a') */ + 2 * num_int_points * sizeof(tsReal) + + /* `d' and "result of the thomas algorithm" (which + contains `num_points' points) */ + num_points * dimension * sizeof(tsReal)); + if (!thomas) { + TS_THROW_0(try, err, status, TS_MALLOC, + "out of memory") + } + /* The system of linear equations is taken from: + * http://www.bakoma-tex.com/doc/generic/pst-bspline/ + * pst-bspline-doc.pdf */ + a = c = thomas; + ts_arr_fill(a, num_int_points, 1); + b = a + num_int_points; + ts_arr_fill(b, num_int_points, 4); + d = b + num_int_points; + /* 6 * S_{i+1} */ + for (i = 0; i < num_int_points; i++) { + for (j = 0; j < dimension; j++) { + k = i * dimension + j; + l = (i + 1) * dimension + j; + d[k] = 6 * points[l]; + } + } + for (i = 0; i < dimension; i++) { + /* 6 * S_{1} - S_{0} */ + d[i] -= points[i]; + /* 6 * S_{n-1} - S_{n} */ + k = len_int_points - (i + 1); + l = len_points - (i + 1); + d[k] -= points[l]; + } + /* The Thomas algorithm requires at least two points. Hence, + * `num_int_points` == 1 must be handled separately (let's call + * it "Mini Thomas"). */ + if (num_int_points == 1) { + for (i = 0; i < dimension; i++) + d[i] *= (tsReal)0.25f; + } else { + TS_CALL(try, err, ts_int_thomas_algorithm(a, b, c, num_int_points, dimension, d, status)) + } + memcpy(thomas, points, sof_ctrlp); + memmove(thomas + dimension, d, num_int_points * sof_ctrlp); + memcpy(thomas + (num_int_points + 1) * dimension, + points + (num_points - 1) * dimension, sof_ctrlp); + TS_CALL(try, err, ts_int_relaxed_uniform_cubic_bspline(thomas, num_points, dimension, spline, status)) + TS_CATCH(err) + ts_bspline_free(spline); + TS_FINALLY + if (thomas) + free(thomas); + TS_END_TRY_RETURN(err) } tsError @@ -1056,129 +959,122 @@ ts_bspline_interpolate_catmull_rom(const tsReal *points, const tsReal *last, tsReal epsilon, tsBSpline *spline, - tsStatus *status) -{ - const size_t sof_real = sizeof(tsReal); - const size_t sof_ctrlp = dimension * sof_real; - const tsReal eps = (tsReal) fabs(epsilon); - tsReal *bs_ctrlp; /* Points to the control points of `spline`. */ - tsReal *cr_ctrlp; /**< The points to interpolate based on `points`. */ - size_t i, d; /**< Used in for loops. */ - tsError err; /**< Local error handling. */ - /* [https://en.wikipedia.org/wiki/ - * Centripetal_Catmull%E2%80%93Rom_spline] */ - tsReal t0, t1, t2, t3; /**< Catmull-Rom knots. */ - /* [https://stackoverflow.com/questions/30748316/ - * catmull-rom-interpolation-on-svg-paths/30826434#30826434] */ - tsReal c1, c2, d1, d2, m1, m2; /**< Used to calculate derivatives. */ - tsReal *p0, *p1, *p2, *p3; /**< Processed Catmull-Rom points. */ + tsStatus *status) { + const size_t sof_real = sizeof(tsReal); + const size_t sof_ctrlp = dimension * sof_real; + const tsReal eps = (tsReal)fabs(epsilon); + tsReal *bs_ctrlp; /* Points to the control points of `spline`. */ + tsReal *cr_ctrlp; /**< The points to interpolate based on `points`. */ + size_t i, d; /**< Used in for loops. */ + tsError err; /**< Local error handling. */ + /* [https://en.wikipedia.org/wiki/ + * Centripetal_Catmull%E2%80%93Rom_spline] */ + tsReal t0, t1, t2, t3; /**< Catmull-Rom knots. */ + /* [https://stackoverflow.com/questions/30748316/ + * catmull-rom-interpolation-on-svg-paths/30826434#30826434] */ + tsReal c1, c2, d1, d2, m1, m2; /**< Used to calculate derivatives. */ + tsReal *p0, *p1, *p2, *p3; /**< Processed Catmull-Rom points. */ - ts_int_bspline_init(spline); - if (dimension == 0) - TS_RETURN_0(status, TS_DIM_ZERO, "unsupported dimension: 0") - if (num_points == 0) - TS_RETURN_0(status, TS_NUM_POINTS, "num(points) == 0") - if (alpha < (tsReal) 0.0) alpha = (tsReal) 0.0; - if (alpha > (tsReal) 1.0) alpha = (tsReal) 1.0; + ts_int_bspline_init(spline); + if (dimension == 0) + TS_RETURN_0(status, TS_DIM_ZERO, "unsupported dimension: 0") + if (num_points == 0) + TS_RETURN_0(status, TS_NUM_POINTS, "num(points) == 0") + if (alpha < (tsReal)0.0) alpha = (tsReal)0.0; + if (alpha > (tsReal)1.0) alpha = (tsReal)1.0; - /* Copy `points` to `cr_ctrlp`. Add space for `first` and `last`. */ - cr_ctrlp = (tsReal *) malloc((num_points + 2) * sof_ctrlp); - if (!cr_ctrlp) - TS_RETURN_0(status, TS_MALLOC, "out of memory") - memcpy(cr_ctrlp + dimension, points, num_points * sof_ctrlp); + /* Copy `points` to `cr_ctrlp`. Add space for `first` and `last`. */ + cr_ctrlp = (tsReal *)malloc((num_points + 2) * sof_ctrlp); + if (!cr_ctrlp) + TS_RETURN_0(status, TS_MALLOC, "out of memory") + memcpy(cr_ctrlp + dimension, points, num_points * sof_ctrlp); - /* Remove redundant points from `cr_ctrlp`. Update `num_points`. */ - for (i = 1 /* 0 (`first`) is not assigned yet */; - i < num_points /* skip last point (inclusive end) */; - i++) { - p0 = cr_ctrlp + (i * dimension); - p1 = p0 + dimension; - if (ts_distance(p0, p1, dimension) <= eps) { - /* Are there any other points (after the one that is - * to be removed) that need to be shifted? */ - if (i < num_points - 1) { - memmove(p1, p1 + dimension, - (num_points - (i + 1)) * sof_ctrlp); - } - num_points--; - i--; - } - } + /* Remove redundant points from `cr_ctrlp`. Update `num_points`. */ + for (i = 1 /* 0 (`first`) is not assigned yet */; + i < num_points /* skip last point (inclusive end) */; + i++) { + p0 = cr_ctrlp + (i * dimension); + p1 = p0 + dimension; + if (ts_distance(p0, p1, dimension) <= eps) { + /* Are there any other points (after the one that is + * to be removed) that need to be shifted? */ + if (i < num_points - 1) { + memmove(p1, p1 + dimension, + (num_points - (i + 1)) * sof_ctrlp); + } + num_points--; + i--; + } + } - /* Check if there are still enough points for interpolation. */ - if (num_points == 1) { /* `num_points` can't be 0 */ - free(cr_ctrlp); /* The point is copied from `points`. */ - TS_CALL_ROE(err, ts_int_cubic_point( - points, dimension, spline, status)) - TS_RETURN_SUCCESS(status) - } + /* Check if there are still enough points for interpolation. */ + if (num_points == 1) { /* `num_points` can't be 0 */ + free(cr_ctrlp); /* The point is copied from `points`. */ + TS_CALL_ROE(err, ts_int_cubic_point( + points, dimension, spline, status)) + TS_RETURN_SUCCESS(status) + } - /* Add or generate `first` and `last`. Update `num_points`. */ - p0 = cr_ctrlp + dimension; - if (first && ts_distance(first, p0, dimension) > eps) { - memcpy(cr_ctrlp, first, sof_ctrlp); - } else { - p1 = p0 + dimension; - for (d = 0; d < dimension; d++) - cr_ctrlp[d] = p0[d] + (p0[d] - p1[d]); - } - p1 = cr_ctrlp + (num_points * dimension); - if (last && ts_distance(p1, last, dimension) > eps) { - memcpy(cr_ctrlp + ((num_points + 1) * dimension), - last, sof_ctrlp); - } else { - p0 = p1 - dimension; - for (d = 0; d < dimension; d++) { - cr_ctrlp[((num_points + 1) * dimension) + d] = - p1[d] + (p1[d] - p0[d]); - } - } - num_points = num_points + 2; + /* Add or generate `first` and `last`. Update `num_points`. */ + p0 = cr_ctrlp + dimension; + if (first && ts_distance(first, p0, dimension) > eps) { + memcpy(cr_ctrlp, first, sof_ctrlp); + } else { + p1 = p0 + dimension; + for (d = 0; d < dimension; d++) + cr_ctrlp[d] = p0[d] + (p0[d] - p1[d]); + } + p1 = cr_ctrlp + (num_points * dimension); + if (last && ts_distance(p1, last, dimension) > eps) { + memcpy(cr_ctrlp + ((num_points + 1) * dimension), + last, sof_ctrlp); + } else { + p0 = p1 - dimension; + for (d = 0; d < dimension; d++) { + cr_ctrlp[((num_points + 1) * dimension) + d] = + p1[d] + (p1[d] - p0[d]); + } + } + num_points = num_points + 2; - /* Transform the sequence of Catmull-Rom splines. */ - bs_ctrlp = NULL; - TS_TRY(try, err, status) - TS_CALL(try, err, ts_bspline_new( - (num_points - 3) * 4, dimension, 3, - TS_BEZIERS, spline, status)) - bs_ctrlp = ts_int_bspline_access_ctrlp(spline); - TS_CATCH(err) - free(cr_ctrlp); - TS_END_TRY_ROE(err) - for (i = 0; i < ts_bspline_num_control_points(spline) / 4; i++) { - p0 = cr_ctrlp + ((i+0) * dimension); - p1 = cr_ctrlp + ((i+1) * dimension); - p2 = cr_ctrlp + ((i+2) * dimension); - p3 = cr_ctrlp + ((i+3) * dimension); + /* Transform the sequence of Catmull-Rom splines. */ + bs_ctrlp = NULL; + TS_TRY(try, err, status) + TS_CALL(try, err, ts_bspline_new((num_points - 3) * 4, dimension, 3, TS_BEZIERS, spline, status)) + bs_ctrlp = ts_int_bspline_access_ctrlp(spline); + TS_CATCH(err) + free(cr_ctrlp); + TS_END_TRY_ROE(err) + for (i = 0; i < ts_bspline_num_control_points(spline) / 4; i++) { + p0 = cr_ctrlp + ((i + 0) * dimension); + p1 = cr_ctrlp + ((i + 1) * dimension); + p2 = cr_ctrlp + ((i + 2) * dimension); + p3 = cr_ctrlp + ((i + 3) * dimension); - t0 = (tsReal) 0.f; - t1 = t0 + (tsReal) pow(ts_distance(p0, p1, dimension), alpha); - t2 = t1 + (tsReal) pow(ts_distance(p1, p2, dimension), alpha); - t3 = t2 + (tsReal) pow(ts_distance(p2, p3, dimension), alpha); + t0 = (tsReal)0.f; + t1 = t0 + (tsReal)pow(ts_distance(p0, p1, dimension), alpha); + t2 = t1 + (tsReal)pow(ts_distance(p1, p2, dimension), alpha); + t3 = t2 + (tsReal)pow(ts_distance(p2, p3, dimension), alpha); - c1 = (t2-t1) / (t2-t0); - c2 = (t1-t0) / (t2-t0); - d1 = (t3-t2) / (t3-t1); - d2 = (t2-t1) / (t3-t1); + c1 = (t2 - t1) / (t2 - t0); + c2 = (t1 - t0) / (t2 - t0); + d1 = (t3 - t2) / (t3 - t1); + d2 = (t2 - t1) / (t3 - t1); - for (d = 0; d < dimension; d++) { - m1 = (t2-t1)*(c1*(p1[d]-p0[d])/(t1-t0) - + c2*(p2[d]-p1[d])/(t2-t1)); - m2 = (t2-t1)*(d1*(p2[d]-p1[d])/(t2-t1) - + d2*(p3[d]-p2[d])/(t3-t2)); - bs_ctrlp[((i*4 + 0) * dimension) + d] = p1[d]; - bs_ctrlp[((i*4 + 1) * dimension) + d] = p1[d] + m1/3; - bs_ctrlp[((i*4 + 2) * dimension) + d] = p2[d] - m2/3; - bs_ctrlp[((i*4 + 3) * dimension) + d] = p2[d]; - } - } - free(cr_ctrlp); - TS_RETURN_SUCCESS(status) + for (d = 0; d < dimension; d++) { + m1 = (t2 - t1) * (c1 * (p1[d] - p0[d]) / (t1 - t0) + c2 * (p2[d] - p1[d]) / (t2 - t1)); + m2 = (t2 - t1) * (d1 * (p2[d] - p1[d]) / (t2 - t1) + d2 * (p3[d] - p2[d]) / (t3 - t2)); + bs_ctrlp[((i * 4 + 0) * dimension) + d] = p1[d]; + bs_ctrlp[((i * 4 + 1) * dimension) + d] = p1[d] + m1 / 3; + bs_ctrlp[((i * 4 + 2) * dimension) + d] = p2[d] - m2 / 3; + bs_ctrlp[((i * 4 + 3) * dimension) + d] = p2[d]; + } + } + free(cr_ctrlp); + TS_RETURN_SUCCESS(status) } /*! @} */ - - /*! @name Query Functions * * @{ @@ -1188,180 +1084,175 @@ ts_int_bspline_find_knot(const tsBSpline *spline, tsReal knot, size_t *index, size_t *multiplicity, - tsStatus *status) -{ - const size_t deg = ts_bspline_degree(spline); - const size_t num_knots = ts_bspline_num_knots(spline); - const tsReal *knots = ts_int_bspline_access_knots(spline); - tsReal min, max; - size_t low, high; + tsStatus *status) { + const size_t deg = ts_bspline_degree(spline); + const size_t num_knots = ts_bspline_num_knots(spline); + const tsReal *knots = ts_int_bspline_access_knots(spline); + tsReal min, max; + size_t low, high; - ts_bspline_domain(spline, &min, &max); - if (knot < min && !ts_knots_equal(knot, min)) { - TS_RETURN_2(status, TS_U_UNDEFINED, - "knot (%f) < min(domain) (%f)", - knot, min) - } - if (knot > max && !ts_knots_equal(knot, max)) { - TS_RETURN_2(status, TS_U_UNDEFINED, - "knot (%f) > max(domain) (%f)", - knot, max) - } + ts_bspline_domain(spline, &min, &max); + if (knot < min && !ts_knots_equal(knot, min)) { + TS_RETURN_2(status, TS_U_UNDEFINED, + "knot (%f) < min(domain) (%f)", + knot, min) + } + if (knot > max && !ts_knots_equal(knot, max)) { + TS_RETURN_2(status, TS_U_UNDEFINED, + "knot (%f) > max(domain) (%f)", + knot, max) + } - /* Based on 'The NURBS Book' (Les Piegl and Wayne Tiller). */ - if (ts_knots_equal(knot, knots[num_knots - 1])) { - *index = num_knots - 1; - } else { - low = 0; - high = num_knots - 1; - *index = (low+high) / 2; - while (knot < knots[*index] || knot >= knots[*index + 1]) { - if (knot < knots[*index]) - high = *index; - else - low = *index; - *index = (low+high) / 2; - } - } + /* Based on 'The NURBS Book' (Les Piegl and Wayne Tiller). */ + if (ts_knots_equal(knot, knots[num_knots - 1])) { + *index = num_knots - 1; + } else { + low = 0; + high = num_knots - 1; + *index = (low + high) / 2; + while (knot < knots[*index] || knot >= knots[*index + 1]) { + if (knot < knots[*index]) + high = *index; + else + low = *index; + *index = (low + high) / 2; + } + } - /* Handle floating point errors. */ - while (*index < num_knots - 1 && /* there is a next knot */ - ts_knots_equal(knot, knots[*index + 1])) { - (*index)++; - } + /* Handle floating point errors. */ + while (*index < num_knots - 1 && /* there is a next knot */ + ts_knots_equal(knot, knots[*index + 1])) { + (*index)++; + } - /* Calculate knot's multiplicity. */ - for (*multiplicity = deg + 1; *multiplicity > 0 ; (*multiplicity)--) { - if (ts_knots_equal(knot, knots[*index - (*multiplicity-1)])) - break; - } + /* Calculate knot's multiplicity. */ + for (*multiplicity = deg + 1; *multiplicity > 0; (*multiplicity)--) { + if (ts_knots_equal(knot, knots[*index - (*multiplicity - 1)])) + break; + } - TS_RETURN_SUCCESS(status) + TS_RETURN_SUCCESS(status) } tsError ts_int_bspline_eval_woa(const tsBSpline *spline, tsReal u, tsDeBoorNet *net, - tsStatus *status) -{ - const size_t deg = ts_bspline_degree(spline); - const size_t order = ts_bspline_order(spline); - const size_t dim = ts_bspline_dimension(spline); - const size_t num_knots = ts_bspline_num_knots(spline); - const size_t sof_ctrlp = dim * sizeof(tsReal); + tsStatus *status) { + const size_t deg = ts_bspline_degree(spline); + const size_t order = ts_bspline_order(spline); + const size_t dim = ts_bspline_dimension(spline); + const size_t num_knots = ts_bspline_num_knots(spline); + const size_t sof_ctrlp = dim * sizeof(tsReal); - const tsReal *ctrlp = ts_int_bspline_access_ctrlp(spline); - const tsReal *knots = ts_int_bspline_access_knots(spline); - tsReal *points = NULL; /**< Pointer to the points of \p net. */ + const tsReal *ctrlp = ts_int_bspline_access_ctrlp(spline); + const tsReal *knots = ts_int_bspline_access_knots(spline); + tsReal *points = NULL; /**< Pointer to the points of \p net. */ - size_t k; /**< Index of \p u. */ - size_t s; /**< Multiplicity of \p u. */ + size_t k; /**< Index of \p u. */ + size_t s; /**< Multiplicity of \p u. */ - tsReal uk; /**< The actual used u. */ - size_t from; /**< Offset used to copy values. */ - size_t fst; /**< First affected control point, inclusive. */ - size_t lst; /**< Last affected control point, inclusive. */ - size_t N; /**< Number of affected control points. */ + tsReal uk; /**< The actual used u. */ + size_t from; /**< Offset used to copy values. */ + size_t fst; /**< First affected control point, inclusive. */ + size_t lst; /**< Last affected control point, inclusive. */ + size_t N; /**< Number of affected control points. */ - /* The following indices are used to create the DeBoor net. */ - size_t lidx; /**< Current left index. */ - size_t ridx; /**< Current right index. */ - size_t tidx; /**< Current to index. */ - size_t r, i, d; /**< Used in for loop. */ - tsReal ui; /**< Knot value at index i. */ - tsReal a, a_hat; /**< Weighting factors of control points. */ + /* The following indices are used to create the DeBoor net. */ + size_t lidx; /**< Current left index. */ + size_t ridx; /**< Current right index. */ + size_t tidx; /**< Current to index. */ + size_t r, i, d; /**< Used in for loop. */ + tsReal ui; /**< Knot value at index i. */ + tsReal a, a_hat; /**< Weighting factors of control points. */ - tsError err; + tsError err; - points = ts_int_deboornet_access_points(net); + points = ts_int_deboornet_access_points(net); - /* 1. Find index k such that u is in between [u_k, u_k+1). - * 2. Setup already known values. - * 3. Decide by multiplicity of u how to calculate point P(u). */ + /* 1. Find index k such that u is in between [u_k, u_k+1). + * 2. Setup already known values. + * 3. Decide by multiplicity of u how to calculate point P(u). */ - /* 1. */ - k = s = 0; - TS_CALL_ROE(err, ts_int_bspline_find_knot( - spline, u, &k, &s, status)) + /* 1. */ + k = s = 0; + TS_CALL_ROE(err, ts_int_bspline_find_knot( + spline, u, &k, &s, status)) - /* 2. */ - uk = knots[k]; /* Ensures that with any precision of */ - net->pImpl->u = /* tsReal the knot vector stays valid. */ - ts_knots_equal(u, uk) ? uk : u; - net->pImpl->k = k; - net->pImpl->s = s; - net->pImpl->h = deg < s ? 0 : deg-s; /* prevent underflow */ + /* 2. */ + uk = knots[k]; /* Ensures that with any precision of */ + net->pImpl->u = /* tsReal the knot vector stays valid. */ + ts_knots_equal(u, uk) ? uk : u; + net->pImpl->k = k; + net->pImpl->s = s; + net->pImpl->h = deg < s ? 0 : deg - s; /* prevent underflow */ - /* 3. (by 1. s <= order) - * - * 3a) Check for s = order. - * Take the two points k-s and k-s + 1. If one of - * them doesn't exist, take only the other. - * 3b) Use de boor algorithm to find point P(u). */ - if (s == order) { - /* only one of the two control points exists */ - if (k == deg || /* only the first */ - k == num_knots - 1) { /* only the last */ - from = k == deg ? 0 : (k-s) * dim; - net->pImpl->n_points = 1; - memcpy(points, ctrlp + from, sof_ctrlp); - } else { - from = (k-s) * dim; - net->pImpl->n_points = 2; - memcpy(points, ctrlp + from, 2 * sof_ctrlp); - } - } else { /* by 3a) s <= deg (order = deg+1) */ - fst = k-deg; /* by 1. k >= deg */ - lst = k-s; /* s <= deg <= k */ - N = lst-fst + 1; /* lst <= fst implies N >= 1 */ + /* 3. (by 1. s <= order) + * + * 3a) Check for s = order. + * Take the two points k-s and k-s + 1. If one of + * them doesn't exist, take only the other. + * 3b) Use de boor algorithm to find point P(u). */ + if (s == order) { + /* only one of the two control points exists */ + if (k == deg || /* only the first */ + k == num_knots - 1) { /* only the last */ + from = k == deg ? 0 : (k - s) * dim; + net->pImpl->n_points = 1; + memcpy(points, ctrlp + from, sof_ctrlp); + } else { + from = (k - s) * dim; + net->pImpl->n_points = 2; + memcpy(points, ctrlp + from, 2 * sof_ctrlp); + } + } else { /* by 3a) s <= deg (order = deg+1) */ + fst = k - deg; /* by 1. k >= deg */ + lst = k - s; /* s <= deg <= k */ + N = lst - fst + 1; /* lst <= fst implies N >= 1 */ - net->pImpl->n_points = (size_t)(N * (N+1) * 0.5f); + net->pImpl->n_points = (size_t)(N * (N + 1) * 0.5f); - /* copy initial values to output */ - memcpy(points, ctrlp + fst*dim, N * sof_ctrlp); + /* copy initial values to output */ + memcpy(points, ctrlp + fst * dim, N * sof_ctrlp); - lidx = 0; - ridx = dim; - tidx = N*dim; /* N >= 1 implies tidx > 0 */ - r = 1; - for (;r <= ts_deboornet_num_insertions(net); r++) { - i = fst + r; - for (; i <= lst; i++) { - ui = knots[i]; - a = (ts_deboornet_knot(net) - ui) / - (knots[i+deg-r+1] - ui); - a_hat = 1.f-a; + lidx = 0; + ridx = dim; + tidx = N * dim; /* N >= 1 implies tidx > 0 */ + r = 1; + for (; r <= ts_deboornet_num_insertions(net); r++) { + i = fst + r; + for (; i <= lst; i++) { + ui = knots[i]; + a = (ts_deboornet_knot(net) - ui) / + (knots[i + deg - r + 1] - ui); + a_hat = 1.f - a; - for (d = 0; d < dim; d++) { - points[tidx++] = - a_hat * points[lidx++] + - a * points[ridx++]; - } - } - lidx += dim; - ridx += dim; - } - } - TS_RETURN_SUCCESS(status) + for (d = 0; d < dim; d++) { + points[tidx++] = + a_hat * points[lidx++] + + a * points[ridx++]; + } + } + lidx += dim; + ridx += dim; + } + } + TS_RETURN_SUCCESS(status) } tsError ts_bspline_eval(const tsBSpline *spline, tsReal knot, tsDeBoorNet *net, - tsStatus *status) -{ - tsError err; - ts_int_deboornet_init(net); - TS_TRY(try, err, status) - TS_CALL(try, err, ts_int_deboornet_new( - spline, net, status)) - TS_CALL(try, err, ts_int_bspline_eval_woa( - spline, knot, net, status)) - TS_CATCH(err) - ts_deboornet_free(net); - TS_END_TRY_RETURN(err) + tsStatus *status) { + tsError err; + ts_int_deboornet_init(net); + TS_TRY(try, err, status) + TS_CALL(try, err, ts_int_deboornet_new(spline, net, status)) + TS_CALL(try, err, ts_int_bspline_eval_woa(spline, knot, net, status)) + TS_CATCH(err) + ts_deboornet_free(net); + TS_END_TRY_RETURN(err) } tsError @@ -1369,36 +1260,33 @@ ts_bspline_eval_all(const tsBSpline *spline, const tsReal *knots, size_t num, tsReal **points, - tsStatus *status) -{ - const size_t dim = ts_bspline_dimension(spline); - const size_t sof_point = dim * sizeof(tsReal); - const size_t sof_points = num * sof_point; - tsDeBoorNet net = ts_deboornet_init(); - tsReal *result; - size_t i; - tsError err; - TS_TRY(try, err, status) - *points = (tsReal *) malloc(sof_points); - if (!*points) { - TS_THROW_0(try, err, status, TS_MALLOC, - "out of memory") - } - TS_CALL(try, err, ts_int_deboornet_new( - spline,&net, status)) - for (i = 0; i < num; i++) { - TS_CALL(try, err, ts_int_bspline_eval_woa( - spline, knots[i], &net, status)) - result = ts_int_deboornet_access_result(&net); - memcpy((*points) + i * dim, result, sof_point); - } - TS_CATCH(err) - if (*points) - free(*points); - *points = NULL; - TS_FINALLY - ts_deboornet_free(&net); - TS_END_TRY_RETURN(err) + tsStatus *status) { + const size_t dim = ts_bspline_dimension(spline); + const size_t sof_point = dim * sizeof(tsReal); + const size_t sof_points = num * sof_point; + tsDeBoorNet net = ts_deboornet_init(); + tsReal *result; + size_t i; + tsError err; + TS_TRY(try, err, status) + *points = (tsReal *)malloc(sof_points); + if (!*points) { + TS_THROW_0(try, err, status, TS_MALLOC, + "out of memory") + } + TS_CALL(try, err, ts_int_deboornet_new(spline, &net, status)) + for (i = 0; i < num; i++) { + TS_CALL(try, err, ts_int_bspline_eval_woa(spline, knots[i], &net, status)) + result = ts_int_deboornet_access_result(&net); + memcpy((*points) + i * dim, result, sof_point); + } + TS_CATCH(err) + if (*points) + free(*points); + *points = NULL; + TS_FINALLY + ts_deboornet_free(&net); + TS_END_TRY_RETURN(err) } tsError @@ -1406,25 +1294,23 @@ ts_bspline_sample(const tsBSpline *spline, size_t num, tsReal **points, size_t *actual_num, - tsStatus *status) -{ - tsError err; - tsReal *knots; + tsStatus *status) { + tsError err; + tsReal *knots; - num = num == 0 ? 100 : num; - *actual_num = num; - knots = (tsReal *) malloc(num * sizeof(tsReal)); - if (!knots) { - *points = NULL; - TS_RETURN_0(status, TS_MALLOC, "out of memory") - } - ts_bspline_uniform_knot_seq(spline, num, knots); - TS_TRY(try, err, status) - TS_CALL(try, err, ts_bspline_eval_all( - spline, knots, num, points, status)) - TS_FINALLY - free(knots); - TS_END_TRY_RETURN(err) + num = num == 0 ? 100 : num; + *actual_num = num; + knots = (tsReal *)malloc(num * sizeof(tsReal)); + if (!knots) { + *points = NULL; + TS_RETURN_0(status, TS_MALLOC, "out of memory") + } + ts_bspline_uniform_knot_seq(spline, num, knots); + TS_TRY(try, err, status) + TS_CALL(try, err, ts_bspline_eval_all(spline, knots, num, points, status)) + TS_FINALLY + free(knots); + TS_END_TRY_RETURN(err) } tsError @@ -1436,113 +1322,107 @@ ts_bspline_bisect(const tsBSpline *spline, int ascending, size_t max_iter, tsDeBoorNet *net, - tsStatus *status) -{ - tsError err; - const size_t dim = ts_bspline_dimension(spline); - const tsReal eps = (tsReal) fabs(epsilon); - size_t i = 0; - tsReal dist = 0; - tsReal min, max, mid; - tsReal *P; + tsStatus *status) { + tsError err; + const size_t dim = ts_bspline_dimension(spline); + const tsReal eps = (tsReal)fabs(epsilon); + size_t i = 0; + tsReal dist = 0; + tsReal min, max, mid; + tsReal *P; - ts_int_deboornet_init(net); + ts_int_deboornet_init(net); - if (dim < index) { - TS_RETURN_2(status, TS_INDEX_ERROR, - "dimension (%lu) <= index (%lu)", - (unsigned long) dim, - (unsigned long) index) - } - if(max_iter == 0) - TS_RETURN_0(status, TS_NO_RESULT, "0 iterations") + if (dim < index) { + TS_RETURN_2(status, TS_INDEX_ERROR, + "dimension (%lu) <= index (%lu)", + (unsigned long)dim, + (unsigned long)index) + } + if (max_iter == 0) + TS_RETURN_0(status, TS_NO_RESULT, "0 iterations") - ts_bspline_domain(spline, &min, &max); - TS_TRY(try, err, status) - TS_CALL(try, err, ts_int_deboornet_new( - spline, net, status)) - do { - mid = (tsReal) ((min + max) / 2.0); - TS_CALL(try, err, ts_int_bspline_eval_woa( - spline, mid, net, status)) - P = ts_int_deboornet_access_result(net); - dist = ts_distance(&P[index], &value, 1); - if (dist <= eps) - TS_RETURN_SUCCESS(status) - if (ascending) { - if (P[index] < value) - min = mid; - else - max = mid; - } else { - if (P[index] < value) - max = mid; - else - min = mid; - } - } while (i++ < max_iter); - if (persnickety) { - TS_THROW_1(try, err, status, TS_NO_RESULT, - "maximum iterations (%lu) exceeded", - (unsigned long) max_iter) - } - TS_CATCH(err) - ts_deboornet_free(net); - TS_END_TRY_RETURN(err) + ts_bspline_domain(spline, &min, &max); + TS_TRY(try, err, status) + TS_CALL(try, err, ts_int_deboornet_new(spline, net, status)) + do { + mid = (tsReal)((min + max) / 2.0); + TS_CALL(try, err, ts_int_bspline_eval_woa(spline, mid, net, status)) + P = ts_int_deboornet_access_result(net); + dist = ts_distance(&P[index], &value, 1); + if (dist <= eps) + TS_RETURN_SUCCESS(status) + if (ascending) { + if (P[index] < value) + min = mid; + else + max = mid; + } else { + if (P[index] < value) + max = mid; + else + min = mid; + } + } while (i++ < max_iter); + if (persnickety) { + TS_THROW_1(try, err, status, TS_NO_RESULT, + "maximum iterations (%lu) exceeded", + (unsigned long)max_iter) + } + TS_CATCH(err) + ts_deboornet_free(net); + TS_END_TRY_RETURN(err) } void ts_bspline_domain(const tsBSpline *spline, tsReal *min, - tsReal *max) -{ - *min = ts_int_bspline_access_knots(spline) - [ts_bspline_degree(spline)]; - *max = ts_int_bspline_access_knots(spline) - [ts_bspline_num_knots(spline) - ts_bspline_order(spline)]; + tsReal *max) { + *min = ts_int_bspline_access_knots(spline) + [ts_bspline_degree(spline)]; + *max = ts_int_bspline_access_knots(spline) + [ts_bspline_num_knots(spline) - ts_bspline_order(spline)]; } tsError ts_bspline_is_closed(const tsBSpline *spline, tsReal epsilon, int *closed, - tsStatus *status) -{ - const size_t deg = ts_bspline_degree(spline); - const size_t dim = ts_bspline_dimension(spline); - tsBSpline derivative; - tsReal min, max; - tsDeBoorNet first, last; - size_t i; - tsError err; + tsStatus *status) { + const size_t deg = ts_bspline_degree(spline); + const size_t dim = ts_bspline_dimension(spline); + tsBSpline derivative; + tsReal min, max; + tsDeBoorNet first, last; + size_t i; + tsError err; - ts_int_bspline_init(&derivative); - ts_int_deboornet_init(&first); - ts_int_deboornet_init(&last); + ts_int_bspline_init(&derivative); + ts_int_deboornet_init(&first); + ts_int_deboornet_init(&last); - TS_TRY(try, err, status) - for (i = 0; i < deg; i++) { - TS_CALL(try, err, ts_bspline_derive( - spline, i, -1.f, &derivative, status)) - ts_bspline_domain(&derivative, &min, &max); - TS_CALL(try, err, ts_bspline_eval( - &derivative, min, &first, status)) - TS_CALL(try, err, ts_bspline_eval( - &derivative, max, &last, status)) - *closed = ts_distance( - ts_int_deboornet_access_result(&first), - ts_int_deboornet_access_result(&last), - dim) <= epsilon ? 1 : 0; - ts_bspline_free(&derivative); - ts_deboornet_free(&first); - ts_deboornet_free(&last); - if (!*closed) - TS_RETURN_SUCCESS(status) - } - TS_FINALLY - ts_bspline_free(&derivative); - ts_deboornet_free(&first); - ts_deboornet_free(&last); - TS_END_TRY_RETURN(err) + TS_TRY(try, err, status) + for (i = 0; i < deg; i++) { + TS_CALL(try, err, ts_bspline_derive(spline, i, -1.f, &derivative, status)) + ts_bspline_domain(&derivative, &min, &max); + TS_CALL(try, err, ts_bspline_eval(&derivative, min, &first, status)) + TS_CALL(try, err, ts_bspline_eval(&derivative, max, &last, status)) + *closed = ts_distance( + ts_int_deboornet_access_result(&first), + ts_int_deboornet_access_result(&last), + dim) <= epsilon + ? 1 + : 0; + ts_bspline_free(&derivative); + ts_deboornet_free(&first); + ts_deboornet_free(&last); + if (!*closed) + TS_RETURN_SUCCESS(status) + } + TS_FINALLY + ts_bspline_free(&derivative); + ts_deboornet_free(&first); + ts_deboornet_free(&last); + TS_END_TRY_RETURN(err) } tsError @@ -1551,169 +1431,156 @@ ts_bspline_compute_rmf(const tsBSpline *spline, size_t num, int has_first_normal, tsFrame *frames, - tsStatus *status) -{ - tsError err; - size_t i; - tsReal fx, fy, fz, fmin; - tsReal xc[3], xn[3], v1[3], c1, v2[3], c2, rL[3], tL[3]; - tsBSpline deriv = ts_bspline_init(); - tsDeBoorNet curr = ts_deboornet_init(); - tsDeBoorNet next = ts_deboornet_init(); + tsStatus *status) { + tsError err; + size_t i; + tsReal fx, fy, fz, fmin; + tsReal xc[3], xn[3], v1[3], c1, v2[3], c2, rL[3], tL[3]; + tsBSpline deriv = ts_bspline_init(); + tsDeBoorNet curr = ts_deboornet_init(); + tsDeBoorNet next = ts_deboornet_init(); - if (num < 1) - TS_RETURN_SUCCESS(status); + if (num < 1) + TS_RETURN_SUCCESS(status); - TS_TRY(try, err, status) - TS_CALL(try, err, ts_int_deboornet_new( - spline, &curr, status)) - TS_CALL(try, err, ts_int_deboornet_new( - spline, &next, status)) - TS_CALL(try, err, ts_bspline_derive( - spline, 1, (tsReal) -1.0, &deriv, status)) + TS_TRY(try, err, status) + TS_CALL(try, err, ts_int_deboornet_new(spline, &curr, status)) + TS_CALL(try, err, ts_int_deboornet_new(spline, &next, status)) + TS_CALL(try, err, ts_bspline_derive(spline, 1, (tsReal)-1.0, &deriv, status)) - /* Set position. */ - TS_CALL(try, err, ts_int_bspline_eval_woa( - spline, knots[0], &curr, status)) - ts_vec3_set(frames[0].position, - ts_int_deboornet_access_result(&curr), - ts_bspline_dimension(spline)); - /* Set tangent. */ - TS_CALL(try, err, ts_int_bspline_eval_woa( - &deriv, knots[0], &curr, status)) - ts_vec3_set(frames[0].tangent, - ts_int_deboornet_access_result(&curr), - ts_bspline_dimension(&deriv)); - ts_vec_norm(frames[0].tangent, 3, frames[0].tangent); - /* Set normal. */ - if (!has_first_normal) { - fx = (tsReal) fabs(frames[0].tangent[0]); - fy = (tsReal) fabs(frames[0].tangent[1]); - fz = (tsReal) fabs(frames[0].tangent[2]); - fmin = fx; /* x is min => 1, 0, 0 */ - ts_vec3_init(frames[0].normal, - (tsReal) 1.0, - (tsReal) 0.0, - (tsReal) 0.0); - if (fy < fmin) { /* y is min => 0, 1, 0 */ - fmin = fy; - ts_vec3_init(frames[0].normal, - (tsReal) 0.0, - (tsReal) 1.0, - (tsReal) 0.0); - } - if (fz < fmin) { /* z is min => 0, 0, 1 */ - ts_vec3_init(frames[0].normal, - (tsReal) 0.0, - (tsReal) 0.0, - (tsReal) 1.0); - } - ts_vec3_cross(frames[0].tangent, - frames[0].normal, - frames[0].normal); - ts_vec_norm(frames[0].normal, 3, frames[0].normal); - ts_vec3_cross(frames[0].tangent, - frames[0].normal, - frames[0].normal); - } else { - /* Never trust user input! */ - ts_vec_norm(frames[0].normal, 3, frames[0].normal); - } - /* Set binormal. */ - ts_vec3_cross(frames[0].tangent, - frames[0].normal, - frames[0].binormal); + /* Set position. */ + TS_CALL(try, err, ts_int_bspline_eval_woa(spline, knots[0], &curr, status)) + ts_vec3_set(frames[0].position, + ts_int_deboornet_access_result(&curr), + ts_bspline_dimension(spline)); + /* Set tangent. */ + TS_CALL(try, err, ts_int_bspline_eval_woa(&deriv, knots[0], &curr, status)) + ts_vec3_set(frames[0].tangent, + ts_int_deboornet_access_result(&curr), + ts_bspline_dimension(&deriv)); + ts_vec_norm(frames[0].tangent, 3, frames[0].tangent); + /* Set normal. */ + if (!has_first_normal) { + fx = (tsReal)fabs(frames[0].tangent[0]); + fy = (tsReal)fabs(frames[0].tangent[1]); + fz = (tsReal)fabs(frames[0].tangent[2]); + fmin = fx; /* x is min => 1, 0, 0 */ + ts_vec3_init(frames[0].normal, + (tsReal)1.0, + (tsReal)0.0, + (tsReal)0.0); + if (fy < fmin) { /* y is min => 0, 1, 0 */ + fmin = fy; + ts_vec3_init(frames[0].normal, + (tsReal)0.0, + (tsReal)1.0, + (tsReal)0.0); + } + if (fz < fmin) { /* z is min => 0, 0, 1 */ + ts_vec3_init(frames[0].normal, + (tsReal)0.0, + (tsReal)0.0, + (tsReal)1.0); + } + ts_vec3_cross(frames[0].tangent, + frames[0].normal, + frames[0].normal); + ts_vec_norm(frames[0].normal, 3, frames[0].normal); + ts_vec3_cross(frames[0].tangent, + frames[0].normal, + frames[0].normal); + } else { + /* Never trust user input! */ + ts_vec_norm(frames[0].normal, 3, frames[0].normal); + } + /* Set binormal. */ + ts_vec3_cross(frames[0].tangent, + frames[0].normal, + frames[0].binormal); - for (i = 0; i < num - 1; i++) { - /* Eval current and next point. */ - TS_CALL(try, err, ts_int_bspline_eval_woa( - spline, knots[i], &curr, status)) - TS_CALL(try, err, ts_int_bspline_eval_woa( - spline, knots[i+1], &next, status)) - ts_vec3_set(xc, /* xc is now the current point */ - ts_int_deboornet_access_result(&curr), - ts_bspline_dimension(spline)); - ts_vec3_set(xn, /* xn is now the next point */ - ts_int_deboornet_access_result(&next), - ts_bspline_dimension(spline)); + for (i = 0; i < num - 1; i++) { + /* Eval current and next point. */ + TS_CALL(try, err, ts_int_bspline_eval_woa(spline, knots[i], &curr, status)) + TS_CALL(try, err, ts_int_bspline_eval_woa(spline, knots[i + 1], &next, status)) + ts_vec3_set(xc, /* xc is now the current point */ + ts_int_deboornet_access_result(&curr), + ts_bspline_dimension(spline)); + ts_vec3_set(xn, /* xn is now the next point */ + ts_int_deboornet_access_result(&next), + ts_bspline_dimension(spline)); - /* Set position of U_{i+1}. */ - ts_vec3_set(frames[i+1].position, xn, 3); + /* Set position of U_{i+1}. */ + ts_vec3_set(frames[i + 1].position, xn, 3); - /* Compute reflection vector of R_{1}. */ - ts_vec_sub(xn, xc, 3, v1); - c1 = ts_vec_dot(v1, v1, 3); + /* Compute reflection vector of R_{1}. */ + ts_vec_sub(xn, xc, 3, v1); + c1 = ts_vec_dot(v1, v1, 3); - /* Compute r_{i}^{L} = R_{1} * r_{i}. */ - rL[0] = (tsReal) 2.0 / c1; - rL[1] = ts_vec_dot(v1, frames[i].normal, 3); - rL[2] = rL[0] * rL[1]; - ts_vec_mul(v1, 3, rL[2], rL); - ts_vec_sub(frames[i].normal, rL, 3, rL); + /* Compute r_{i}^{L} = R_{1} * r_{i}. */ + rL[0] = (tsReal)2.0 / c1; + rL[1] = ts_vec_dot(v1, frames[i].normal, 3); + rL[2] = rL[0] * rL[1]; + ts_vec_mul(v1, 3, rL[2], rL); + ts_vec_sub(frames[i].normal, rL, 3, rL); - /* Compute t_{i}^{L} = R_{1} * t_{i}. */ - tL[0] = (tsReal) 2.0 / c1; - tL[1] = ts_vec_dot(v1, frames[i].tangent, 3); - tL[2] = tL[0] * tL[1]; - ts_vec_mul(v1, 3, tL[2], tL); - ts_vec_sub(frames[i].tangent, tL, 3, tL); + /* Compute t_{i}^{L} = R_{1} * t_{i}. */ + tL[0] = (tsReal)2.0 / c1; + tL[1] = ts_vec_dot(v1, frames[i].tangent, 3); + tL[2] = tL[0] * tL[1]; + ts_vec_mul(v1, 3, tL[2], tL); + ts_vec_sub(frames[i].tangent, tL, 3, tL); - /* Compute reflection vector of R_{2}. */ - TS_CALL(try, err, ts_int_bspline_eval_woa( - &deriv, knots[i+1], &next, status)) - ts_vec3_set(xn, /* xn is now the next tangent */ - ts_int_deboornet_access_result(&next), - ts_bspline_dimension(&deriv)); - ts_vec_norm(xn, 3, xn); - ts_vec_sub(xn, tL, 3, v2); - c2 = ts_vec_dot(v2, v2, 3); + /* Compute reflection vector of R_{2}. */ + TS_CALL(try, err, ts_int_bspline_eval_woa(&deriv, knots[i + 1], &next, status)) + ts_vec3_set(xn, /* xn is now the next tangent */ + ts_int_deboornet_access_result(&next), + ts_bspline_dimension(&deriv)); + ts_vec_norm(xn, 3, xn); + ts_vec_sub(xn, tL, 3, v2); + c2 = ts_vec_dot(v2, v2, 3); - /* Compute r_{i+1} = R_{2} * r_{i}^{L}. */ - ts_vec3_set(xc, /* xc is now the next normal */ - frames[i+1].normal, 3); - xc[0] = (tsReal) 2.0 / c2; - xc[1] = ts_vec_dot(v2, rL, 3); - xc[2] = xc[0] * xc[1]; - ts_vec_mul(v2, 3, xc[2], xc); - ts_vec_sub(rL, xc, 3, xc); - ts_vec_norm(xc, 3, xc); + /* Compute r_{i+1} = R_{2} * r_{i}^{L}. */ + ts_vec3_set(xc, /* xc is now the next normal */ + frames[i + 1].normal, 3); + xc[0] = (tsReal)2.0 / c2; + xc[1] = ts_vec_dot(v2, rL, 3); + xc[2] = xc[0] * xc[1]; + ts_vec_mul(v2, 3, xc[2], xc); + ts_vec_sub(rL, xc, 3, xc); + ts_vec_norm(xc, 3, xc); - /* Compute vector s_{i+1} of U_{i+1}. */ - ts_vec3_cross(xn, xc, frames[i+1].binormal); + /* Compute vector s_{i+1} of U_{i+1}. */ + ts_vec3_cross(xn, xc, frames[i + 1].binormal); - /* Set vectors t_{i+1} and r_{i+1} of U_{i+1}. */ - ts_vec3_set(frames[i+1].tangent, xn, 3); - ts_vec3_set(frames[i+1].normal, xc, 3); - } - TS_FINALLY - ts_bspline_free(&deriv); - ts_deboornet_free(&curr); - ts_deboornet_free(&next); - TS_END_TRY_RETURN(err) + /* Set vectors t_{i+1} and r_{i+1} of U_{i+1}. */ + ts_vec3_set(frames[i + 1].tangent, xn, 3); + ts_vec3_set(frames[i + 1].normal, xc, 3); + } + TS_FINALLY + ts_bspline_free(&deriv); + ts_deboornet_free(&curr); + ts_deboornet_free(&next); + TS_END_TRY_RETURN(err) } -void -ts_bspline_uniform_knot_seq(const tsBSpline *spline, - size_t num, - tsReal *knots) -{ - size_t i; - tsReal min, max; - ts_bspline_domain(spline, &min, &max); - for (i = 0; i < num; i++) { - knots[i] = max - min; - knots[i] *= (tsReal) i / (num - 1); - knots[i] += min; - } - /* Set knots[0] after knots[num - 1] to ensure that - * knots[0] = min if num is 1. */ - knots[num - 1] = max; - knots[0] = min; +void ts_bspline_uniform_knot_seq(const tsBSpline *spline, + size_t num, + tsReal *knots) { + size_t i; + tsReal min, max; + ts_bspline_domain(spline, &min, &max); + for (i = 0; i < num; i++) { + knots[i] = max - min; + knots[i] *= (tsReal)i / (num - 1); + knots[i] += min; + } + /* Set knots[0] after knots[num - 1] to ensure that + * knots[0] = min if num is 1. */ + knots[num - 1] = max; + knots[0] = min; } /*! @} */ - - /*! @name Transformation Functions * * @{ @@ -1723,57 +1590,56 @@ ts_int_bspline_resize(const tsBSpline *spline, int n, int back, tsBSpline *resized, - tsStatus *status) -{ - const size_t deg = ts_bspline_degree(spline); - const size_t dim = ts_bspline_dimension(spline); - const size_t sof_real = sizeof(tsReal); + tsStatus *status) { + const size_t deg = ts_bspline_degree(spline); + const size_t dim = ts_bspline_dimension(spline); + const size_t sof_real = sizeof(tsReal); - const size_t num_ctrlp = ts_bspline_num_control_points(spline); - const size_t num_knots = ts_bspline_num_knots(spline); - const size_t nnum_ctrlp = num_ctrlp + n; /**< New length of ctrlp. */ - const size_t nnum_knots = num_knots + n; /**< New length of knots. */ - const size_t min_num_ctrlp_vec = n < 0 ? nnum_ctrlp : num_ctrlp; - const size_t min_num_knots_vec = n < 0 ? nnum_knots : num_knots; + const size_t num_ctrlp = ts_bspline_num_control_points(spline); + const size_t num_knots = ts_bspline_num_knots(spline); + const size_t nnum_ctrlp = num_ctrlp + n; /**< New length of ctrlp. */ + const size_t nnum_knots = num_knots + n; /**< New length of knots. */ + const size_t min_num_ctrlp_vec = n < 0 ? nnum_ctrlp : num_ctrlp; + const size_t min_num_knots_vec = n < 0 ? nnum_knots : num_knots; - const size_t sof_min_num_ctrlp = min_num_ctrlp_vec * dim * sof_real; - const size_t sof_min_num_knots = min_num_knots_vec * sof_real; + const size_t sof_min_num_ctrlp = min_num_ctrlp_vec * dim * sof_real; + const size_t sof_min_num_knots = min_num_knots_vec * sof_real; - tsBSpline tmp; /**< Temporarily stores the result. */ - const tsReal* from_ctrlp = ts_int_bspline_access_ctrlp(spline); - const tsReal* from_knots = ts_int_bspline_access_knots(spline); - tsReal* to_ctrlp = NULL; /**< Pointer to the control points of tmp. */ - tsReal* to_knots = NULL; /**< Pointer to the knots of tmp. */ + tsBSpline tmp; /**< Temporarily stores the result. */ + const tsReal *from_ctrlp = ts_int_bspline_access_ctrlp(spline); + const tsReal *from_knots = ts_int_bspline_access_knots(spline); + tsReal *to_ctrlp = NULL; /**< Pointer to the control points of tmp. */ + tsReal *to_knots = NULL; /**< Pointer to the knots of tmp. */ - tsError err; + tsError err; - if (n == 0) - return ts_bspline_copy(spline, resized, status); + if (n == 0) + return ts_bspline_copy(spline, resized, status); - INIT_OUT_BSPLINE(spline, resized) - TS_CALL_ROE(err, ts_bspline_new( - nnum_ctrlp, dim, deg, TS_OPENED, - &tmp, status)) - to_ctrlp = ts_int_bspline_access_ctrlp(&tmp); - to_knots = ts_int_bspline_access_knots(&tmp); + INIT_OUT_BSPLINE(spline, resized) + TS_CALL_ROE(err, ts_bspline_new( + nnum_ctrlp, dim, deg, TS_OPENED, + &tmp, status)) + to_ctrlp = ts_int_bspline_access_ctrlp(&tmp); + to_knots = ts_int_bspline_access_knots(&tmp); - /* Copy control points and knots. */ - if (!back && n < 0) { - memcpy(to_ctrlp, from_ctrlp - n*dim, sof_min_num_ctrlp); - memcpy(to_knots, from_knots - n , sof_min_num_knots); - } else if (!back && n > 0) { - memcpy(to_ctrlp + n*dim, from_ctrlp, sof_min_num_ctrlp); - memcpy(to_knots + n , from_knots, sof_min_num_knots); - } else { - /* n != 0 implies back == true */ - memcpy(to_ctrlp, from_ctrlp, sof_min_num_ctrlp); - memcpy(to_knots, from_knots, sof_min_num_knots); - } + /* Copy control points and knots. */ + if (!back && n < 0) { + memcpy(to_ctrlp, from_ctrlp - n * dim, sof_min_num_ctrlp); + memcpy(to_knots, from_knots - n, sof_min_num_knots); + } else if (!back && n > 0) { + memcpy(to_ctrlp + n * dim, from_ctrlp, sof_min_num_ctrlp); + memcpy(to_knots + n, from_knots, sof_min_num_knots); + } else { + /* n != 0 implies back == true */ + memcpy(to_ctrlp, from_ctrlp, sof_min_num_ctrlp); + memcpy(to_knots, from_knots, sof_min_num_knots); + } - if (spline == resized) - ts_bspline_free(resized); - ts_bspline_move(&tmp, resized); - TS_RETURN_SUCCESS(status) + if (spline == resized) + ts_bspline_free(resized); + ts_bspline_move(&tmp, resized); + TS_RETURN_SUCCESS(status) } tsError @@ -1781,102 +1647,99 @@ ts_bspline_derive(const tsBSpline *spline, size_t n, tsReal epsilon, tsBSpline *deriv, - tsStatus *status) -{ - const size_t sof_real = sizeof(tsReal); - const size_t dim = ts_bspline_dimension(spline); - const size_t sof_ctrlp = dim * sof_real; - size_t deg = ts_bspline_degree(spline); - size_t num_ctrlp = ts_bspline_num_control_points(spline); - size_t num_knots = ts_bspline_num_knots(spline); + tsStatus *status) { + const size_t sof_real = sizeof(tsReal); + const size_t dim = ts_bspline_dimension(spline); + const size_t sof_ctrlp = dim * sof_real; + size_t deg = ts_bspline_degree(spline); + size_t num_ctrlp = ts_bspline_num_control_points(spline); + size_t num_knots = ts_bspline_num_knots(spline); - tsBSpline worker; /**< Stores the intermediate result. */ - tsReal* ctrlp; /**< Pointer to the control points of worker. */ - tsReal* knots; /**< Pointer to the knots of worker. */ + tsBSpline worker; /**< Stores the intermediate result. */ + tsReal *ctrlp; /**< Pointer to the control points of worker. */ + tsReal *knots; /**< Pointer to the knots of worker. */ - size_t m, i, j, k, l; /**< Used in for loops. */ - tsReal *fst, *snd; /**< Pointer to first and second control point. */ - tsReal dist; /**< Distance between fst and snd. */ - tsReal kid1, ki1; /**< Knots at i+deg+1 and i+1. */ - tsReal span; /**< Distance between kid1 and ki1. */ + size_t m, i, j, k, l; /**< Used in for loops. */ + tsReal *fst, *snd; /**< Pointer to first and second control point. */ + tsReal dist; /**< Distance between fst and snd. */ + tsReal kid1, ki1; /**< Knots at i+deg+1 and i+1. */ + tsReal span; /**< Distance between kid1 and ki1. */ - tsBSpline swap; /**< Used to swap worker and derivative. */ - tsError err; + tsBSpline swap; /**< Used to swap worker and derivative. */ + tsError err; - INIT_OUT_BSPLINE(spline, deriv) - TS_CALL_ROE(err, ts_bspline_copy(spline, &worker, status)) - ctrlp = ts_int_bspline_access_ctrlp(&worker); - knots = ts_int_bspline_access_knots(&worker); + INIT_OUT_BSPLINE(spline, deriv) + TS_CALL_ROE(err, ts_bspline_copy(spline, &worker, status)) + ctrlp = ts_int_bspline_access_ctrlp(&worker); + knots = ts_int_bspline_access_knots(&worker); - TS_TRY(try, err, status) - for (m = 1; m <= n; m++) { /* from 1st to n'th derivative */ - if (deg == 0) { - ts_arr_fill(ctrlp, dim, 0.f); - ts_bspline_domain(spline, - &knots[0], - &knots[1]); - num_ctrlp = 1; - num_knots = 2; - break; - } - /* Check and, if possible, fix discontinuity. */ - for (i = 2*deg + 1; i < num_knots - (deg+1); i++) { - if (!ts_knots_equal(knots[i], knots[i-deg])) - continue; - fst = ctrlp + (i - (deg+1)) * dim; - snd = fst + dim; - dist = ts_distance(fst, snd, dim); - if (epsilon >= 0.f && dist > epsilon) { - TS_THROW_1(try, err, status, - TS_UNDERIVABLE, - "discontinuity at knot: %f", - knots[i]) - } - memmove(snd, - snd + dim, - (num_ctrlp - (i+1-deg)) * sof_ctrlp); - memmove(&knots[i], - &knots[i+1], - (num_knots - (i+1)) * sof_real); - num_ctrlp--; - num_knots--; - i += deg-1; - } - /* Derive continuous worker. */ - for (i = 0; i < num_ctrlp-1; i++) { - for (j = 0; j < dim; j++) { - k = i *dim + j; - l = (i+1)*dim + j; - ctrlp[k] = ctrlp[l] - ctrlp[k]; - kid1 = knots[i+deg+1]; - ki1 = knots[i+1]; - span = kid1 - ki1; - if (span < TS_KNOT_EPSILON) - span = TS_KNOT_EPSILON; - ctrlp[k] *= deg; - ctrlp[k] /= span; - } - } - deg -= 1; - num_ctrlp -= 1; - num_knots -= 2; - knots += 1; - } - TS_CALL(try, err, ts_bspline_new( - num_ctrlp, dim, deg, TS_OPENED, - &swap, status)) - memcpy(ts_int_bspline_access_ctrlp(&swap), - ctrlp, - num_ctrlp * sof_ctrlp); - memcpy(ts_int_bspline_access_knots(&swap), - knots, - num_knots * sof_real); - if (spline == deriv) - ts_bspline_free(deriv); - ts_bspline_move(&swap, deriv); - TS_FINALLY - ts_bspline_free(&worker); - TS_END_TRY_RETURN(err) + TS_TRY(try, err, status) + for (m = 1; m <= n; m++) { /* from 1st to n'th derivative */ + if (deg == 0) { + ts_arr_fill(ctrlp, dim, 0.f); + ts_bspline_domain(spline, + &knots[0], + &knots[1]); + num_ctrlp = 1; + num_knots = 2; + break; + } + /* Check and, if possible, fix discontinuity. */ + for (i = 2 * deg + 1; i < num_knots - (deg + 1); i++) { + if (!ts_knots_equal(knots[i], knots[i - deg])) + continue; + fst = ctrlp + (i - (deg + 1)) * dim; + snd = fst + dim; + dist = ts_distance(fst, snd, dim); + if (epsilon >= 0.f && dist > epsilon) { + TS_THROW_1(try, err, status, + TS_UNDERIVABLE, + "discontinuity at knot: %f", + knots[i]) + } + memmove(snd, + snd + dim, + (num_ctrlp - (i + 1 - deg)) * sof_ctrlp); + memmove(&knots[i], + &knots[i + 1], + (num_knots - (i + 1)) * sof_real); + num_ctrlp--; + num_knots--; + i += deg - 1; + } + /* Derive continuous worker. */ + for (i = 0; i < num_ctrlp - 1; i++) { + for (j = 0; j < dim; j++) { + k = i * dim + j; + l = (i + 1) * dim + j; + ctrlp[k] = ctrlp[l] - ctrlp[k]; + kid1 = knots[i + deg + 1]; + ki1 = knots[i + 1]; + span = kid1 - ki1; + if (span < TS_KNOT_EPSILON) + span = TS_KNOT_EPSILON; + ctrlp[k] *= deg; + ctrlp[k] /= span; + } + } + deg -= 1; + num_ctrlp -= 1; + num_knots -= 2; + knots += 1; + } + TS_CALL(try, err, ts_bspline_new(num_ctrlp, dim, deg, TS_OPENED, &swap, status)) + memcpy(ts_int_bspline_access_ctrlp(&swap), + ctrlp, + num_ctrlp * sof_ctrlp); + memcpy(ts_int_bspline_access_knots(&swap), + knots, + num_knots * sof_real); + if (spline == deriv) + ts_bspline_free(deriv); + ts_bspline_move(&swap, deriv); + TS_FINALLY + ts_bspline_free(&worker); + TS_END_TRY_RETURN(err) } tsError @@ -1884,119 +1747,118 @@ ts_int_bspline_insert_knot(const tsBSpline *spline, const tsDeBoorNet *net, size_t n, tsBSpline *result, - tsStatus *status) -{ - const size_t deg = ts_bspline_degree(spline); - const size_t order = ts_bspline_order(spline); - const size_t dim = ts_bspline_dimension(spline); - const tsReal knot = ts_deboornet_knot(net); - const size_t k = ts_deboornet_index(net); - const size_t mult = ts_deboornet_multiplicity(net); - const size_t sof_real = sizeof(tsReal); - const size_t sof_ctrlp = dim * sof_real; + tsStatus *status) { + const size_t deg = ts_bspline_degree(spline); + const size_t order = ts_bspline_order(spline); + const size_t dim = ts_bspline_dimension(spline); + const tsReal knot = ts_deboornet_knot(net); + const size_t k = ts_deboornet_index(net); + const size_t mult = ts_deboornet_multiplicity(net); + const size_t sof_real = sizeof(tsReal); + const size_t sof_ctrlp = dim * sof_real; - size_t N; /**< Number of affected control points. */ - tsReal* from; /**< Pointer to copy the values from. */ - tsReal* to; /**< Pointer to copy the values to. */ - int stride; /**< Stride of the next pointer to copy. */ - size_t i; /**< Used in for loops. */ + size_t N; /**< Number of affected control points. */ + tsReal *from; /**< Pointer to copy the values from. */ + tsReal *to; /**< Pointer to copy the values to. */ + int stride; /**< Stride of the next pointer to copy. */ + size_t i; /**< Used in for loops. */ - tsReal *ctrlp_spline, *ctrlp_result; - tsReal *knots_spline, *knots_result; - size_t num_ctrlp_result; - size_t num_knots_result; + tsReal *ctrlp_spline, *ctrlp_result; + tsReal *knots_spline, *knots_result; + size_t num_ctrlp_result; + size_t num_knots_result; - tsError err; + tsError err; - INIT_OUT_BSPLINE(spline, result) - if (n == 0) - return ts_bspline_copy(spline, result, status); - if (mult + n > order) { - TS_RETURN_4(status, TS_MULTIPLICITY, - "multiplicity(%f) (%lu) + %lu > order (%lu)", - knot, (unsigned long) mult, (unsigned long) n, - (unsigned long) order) - } + INIT_OUT_BSPLINE(spline, result) + if (n == 0) + return ts_bspline_copy(spline, result, status); + if (mult + n > order) { + TS_RETURN_4(status, TS_MULTIPLICITY, + "multiplicity(%f) (%lu) + %lu > order (%lu)", + knot, (unsigned long)mult, (unsigned long)n, + (unsigned long)order) + } - TS_CALL_ROE(err, ts_int_bspline_resize( - spline, (int)n, 1, result, status)) - ctrlp_spline = ts_int_bspline_access_ctrlp(spline); - knots_spline = ts_int_bspline_access_knots(spline); - ctrlp_result = ts_int_bspline_access_ctrlp(result); - knots_result = ts_int_bspline_access_knots(result); - num_ctrlp_result = ts_bspline_num_control_points(result); - num_knots_result = ts_bspline_num_knots(result); + TS_CALL_ROE(err, ts_int_bspline_resize( + spline, (int)n, 1, result, status)) + ctrlp_spline = ts_int_bspline_access_ctrlp(spline); + knots_spline = ts_int_bspline_access_knots(spline); + ctrlp_result = ts_int_bspline_access_ctrlp(result); + knots_result = ts_int_bspline_access_knots(result); + num_ctrlp_result = ts_bspline_num_control_points(result); + num_knots_result = ts_bspline_num_knots(result); - /* mult + n <= deg + 1 (order) with n >= 1 - * => mult <= deg - * => regular evaluation - * => N = h + 1 is valid */ - N = ts_deboornet_num_insertions(net) + 1; + /* mult + n <= deg + 1 (order) with n >= 1 + * => mult <= deg + * => regular evaluation + * => N = h + 1 is valid */ + N = ts_deboornet_num_insertions(net) + 1; - /* 1. Copy the relevant control points and knots from `spline'. - * 2. Copy the relevant control points and knots from `net'. */ + /* 1. Copy the relevant control points and knots from `spline'. + * 2. Copy the relevant control points and knots from `net'. */ - /* 1. - * - * a) Copy left hand side control points from `spline'. - * b) Copy right hand side control points from `spline'. - * c) Copy left hand side knots from `spline'. - * d) Copy right hand side knots form `spline'. */ - /*** Copy Control Points ***/ - memmove(ctrlp_result, ctrlp_spline, (k-deg) * sof_ctrlp); /* a) */ - from = (tsReal *) ctrlp_spline + dim*(k-deg+N); - /* n >= 0 implies to >= from */ - to = ctrlp_result + dim*(k-deg+N+n); - memmove(to, from, (num_ctrlp_result-n-(k-deg+N)) * sof_ctrlp); /* b) */ - /*** Copy Knots ***/ - memmove(knots_result, knots_spline, (k+1) * sof_real); /* c) */ - from = (tsReal *) knots_spline + k+1; - /* n >= 0 implies to >= from */ - to = knots_result + k+1+n; - memmove(to, from, (num_knots_result-n-(k+1)) * sof_real); /* d) */ + /* 1. + * + * a) Copy left hand side control points from `spline'. + * b) Copy right hand side control points from `spline'. + * c) Copy left hand side knots from `spline'. + * d) Copy right hand side knots form `spline'. */ + /*** Copy Control Points ***/ + memmove(ctrlp_result, ctrlp_spline, (k - deg) * sof_ctrlp); /* a) */ + from = (tsReal *)ctrlp_spline + dim * (k - deg + N); + /* n >= 0 implies to >= from */ + to = ctrlp_result + dim * (k - deg + N + n); + memmove(to, from, (num_ctrlp_result - n - (k - deg + N)) * sof_ctrlp); /* b) */ + /*** Copy Knots ***/ + memmove(knots_result, knots_spline, (k + 1) * sof_real); /* c) */ + from = (tsReal *)knots_spline + k + 1; + /* n >= 0 implies to >= from */ + to = knots_result + k + 1 + n; + memmove(to, from, (num_knots_result - n - (k + 1)) * sof_real); /* d) */ - /* 2. - * - * a) Copy left hand side control points from `net'. - * b) Copy middle part control points from `net'. - * c) Copy right hand side control points from `net'. - * d) Copy knot from `net' (`knot'). */ - from = ts_int_deboornet_access_points(net); - to = ctrlp_result + (k-deg)*dim; - stride = (int)(N*dim); + /* 2. + * + * a) Copy left hand side control points from `net'. + * b) Copy middle part control points from `net'. + * c) Copy right hand side control points from `net'. + * d) Copy knot from `net' (`knot'). */ + from = ts_int_deboornet_access_points(net); + to = ctrlp_result + (k - deg) * dim; + stride = (int)(N * dim); - /*** Copy Control Points ***/ - for (i = 0; i < n; i++) { /* a) */ - memcpy(to, from, sof_ctrlp); - from += stride; - to += dim; - stride -= (int)dim; - } - memcpy(to, from, (N-n) * sof_ctrlp); /* b) */ + /*** Copy Control Points ***/ + for (i = 0; i < n; i++) { /* a) */ + memcpy(to, from, sof_ctrlp); + from += stride; + to += dim; + stride -= (int)dim; + } + memcpy(to, from, (N - n) * sof_ctrlp); /* b) */ - from -= dim; - to += (N-n)*dim; - /* N = h+1 with h = deg-mult (ts_int_bspline_eval) - * => N = deg-mult+1 = order-mult. - * - * n <= order-mult - * => N-n+1 >= order-mult - order-mult + 1 = 1 - * => -(int)(N-n+1) <= -1. */ - stride = -(int)(N-n+1) * (int)dim; + from -= dim; + to += (N - n) * dim; + /* N = h+1 with h = deg-mult (ts_int_bspline_eval) + * => N = deg-mult+1 = order-mult. + * + * n <= order-mult + * => N-n+1 >= order-mult - order-mult + 1 = 1 + * => -(int)(N-n+1) <= -1. */ + stride = -(int)(N - n + 1) * (int)dim; - for (i = 0; i < n; i++) { /* c) */ - memcpy(to, from, sof_ctrlp); - from += stride; - stride -= (int)dim; - to += dim; - } - /*** Copy Knot ***/ - to = knots_result + k+1; - for (i = 0; i < n; i++) { /* d) */ - *to = knot; - to++; - } - TS_RETURN_SUCCESS(status) + for (i = 0; i < n; i++) { /* c) */ + memcpy(to, from, sof_ctrlp); + from += stride; + stride -= (int)dim; + to += dim; + } + /*** Copy Knot ***/ + to = knots_result + k + 1; + for (i = 0; i < n; i++) { /* d) */ + *to = knot; + to++; + } + TS_RETURN_SUCCESS(status) } tsError @@ -2004,165 +1866,147 @@ ts_bspline_insert_knot(const tsBSpline *spline, tsReal knot, size_t num, tsBSpline *result, - size_t* k, - tsStatus *status) -{ - tsDeBoorNet net; - tsError err; - INIT_OUT_BSPLINE(spline, result) - ts_int_deboornet_init(&net); - TS_TRY(try, err, status) - TS_CALL(try, err, ts_bspline_eval( - spline, knot, &net, status)) - TS_CALL(try, err, ts_int_bspline_insert_knot( - spline, &net, num, result, status)) - ts_deboornet_free(&net); - TS_CALL(try, err, ts_bspline_eval( - result, knot, &net, status)) - *k = ts_deboornet_index(&net); - TS_CATCH(err) - *k = 0; - TS_FINALLY - ts_deboornet_free(&net); - TS_END_TRY_RETURN(err) + size_t *k, + tsStatus *status) { + tsDeBoorNet net; + tsError err; + INIT_OUT_BSPLINE(spline, result) + ts_int_deboornet_init(&net); + TS_TRY(try, err, status) + TS_CALL(try, err, ts_bspline_eval(spline, knot, &net, status)) + TS_CALL(try, err, ts_int_bspline_insert_knot(spline, &net, num, result, status)) + ts_deboornet_free(&net); + TS_CALL(try, err, ts_bspline_eval(result, knot, &net, status)) + *k = ts_deboornet_index(&net); + TS_CATCH(err) + *k = 0; + TS_FINALLY + ts_deboornet_free(&net); + TS_END_TRY_RETURN(err) } tsError ts_bspline_split(const tsBSpline *spline, tsReal knot, tsBSpline *split, - size_t* k, - tsStatus *status) -{ - tsDeBoorNet net; - tsError err; - INIT_OUT_BSPLINE(spline, split) - ts_int_deboornet_init(&net); - TS_TRY(try, err, status) - TS_CALL(try, err, ts_bspline_eval( - spline, knot, &net, status)) - if (ts_deboornet_multiplicity(&net) - == ts_bspline_order(spline)) { - TS_CALL(try, err, ts_bspline_copy( - spline, split, status)) - *k = ts_deboornet_index(&net); - } else { - TS_CALL(try, err, ts_int_bspline_insert_knot( - spline, &net, - ts_deboornet_num_insertions(&net) + 1, - split, status)) - *k = ts_deboornet_index(&net) + - ts_deboornet_num_insertions(&net) + 1; - } - TS_CATCH(err) - *k = 0; - TS_FINALLY - ts_deboornet_free(&net); - TS_END_TRY_RETURN(err) + size_t *k, + tsStatus *status) { + tsDeBoorNet net; + tsError err; + INIT_OUT_BSPLINE(spline, split) + ts_int_deboornet_init(&net); + TS_TRY(try, err, status) + TS_CALL(try, err, ts_bspline_eval(spline, knot, &net, status)) + if (ts_deboornet_multiplicity(&net) == ts_bspline_order(spline)) { + TS_CALL(try, err, ts_bspline_copy(spline, split, status)) + *k = ts_deboornet_index(&net); + } else { + TS_CALL(try, err, ts_int_bspline_insert_knot(spline, &net, ts_deboornet_num_insertions(&net) + 1, split, status)) + *k = ts_deboornet_index(&net) + + ts_deboornet_num_insertions(&net) + 1; + } + TS_CATCH(err) + *k = 0; + TS_FINALLY + ts_deboornet_free(&net); + TS_END_TRY_RETURN(err) } tsError ts_bspline_tension(const tsBSpline *spline, tsReal beta, tsBSpline *out, - tsStatus *status) -{ - const size_t dim = ts_bspline_dimension(spline); - const size_t N = ts_bspline_num_control_points(spline); - const tsReal* p0 = ts_int_bspline_access_ctrlp(spline); - const tsReal* pn_1 = p0 + (N-1)*dim; + tsStatus *status) { + const size_t dim = ts_bspline_dimension(spline); + const size_t N = ts_bspline_num_control_points(spline); + const tsReal *p0 = ts_int_bspline_access_ctrlp(spline); + const tsReal *pn_1 = p0 + (N - 1) * dim; - tsReal s; /**< The straightening factor. */ - tsReal *ctrlp; /**< Pointer to the control points of `out'. */ - size_t i, d; /**< Used in for loops. */ - tsReal vec; /**< Straightening vector. */ - tsError err; + tsReal s; /**< The straightening factor. */ + tsReal *ctrlp; /**< Pointer to the control points of `out'. */ + size_t i, d; /**< Used in for loops. */ + tsReal vec; /**< Straightening vector. */ + tsError err; - TS_CALL_ROE(err, ts_bspline_copy(spline, out, status)) - ctrlp = ts_int_bspline_access_ctrlp(out); - if (beta < (tsReal) 0.0) beta = (tsReal) 0.0; - if (beta > (tsReal) 1.0) beta = (tsReal) 1.0; - s = 1.f - beta; + TS_CALL_ROE(err, ts_bspline_copy(spline, out, status)) + ctrlp = ts_int_bspline_access_ctrlp(out); + if (beta < (tsReal)0.0) beta = (tsReal)0.0; + if (beta > (tsReal)1.0) beta = (tsReal)1.0; + s = 1.f - beta; - for (i = 0; i < N; i++) { - for (d = 0; d < dim; d++) { - vec = ((tsReal)i / (N-1)) * (pn_1[d] - p0[d]); - ctrlp[i*dim + d] = beta * ctrlp[i*dim + d] + - s * (p0[d] + vec); - } - } - TS_RETURN_SUCCESS(status) + for (i = 0; i < N; i++) { + for (d = 0; d < dim; d++) { + vec = ((tsReal)i / (N - 1)) * (pn_1[d] - p0[d]); + ctrlp[i * dim + d] = beta * ctrlp[i * dim + d] + + s * (p0[d] + vec); + } + } + TS_RETURN_SUCCESS(status) } tsError ts_bspline_to_beziers(const tsBSpline *spline, tsBSpline *beziers, - tsStatus *status) -{ - const size_t deg = ts_bspline_degree(spline); - const size_t order = ts_bspline_order(spline); + tsStatus *status) { + const size_t deg = ts_bspline_degree(spline); + const size_t order = ts_bspline_order(spline); - int resize; /**< Number of control points to add/remove. */ - size_t k; /**< Index of the split knot value. */ - tsReal u_min; /**< Minimum of the knot values. */ - tsReal u_max; /**< Maximum of the knot values. */ + int resize; /**< Number of control points to add/remove. */ + size_t k; /**< Index of the split knot value. */ + tsReal u_min; /**< Minimum of the knot values. */ + tsReal u_max; /**< Maximum of the knot values. */ - tsBSpline tmp; /**< Temporarily stores the result. */ - tsReal *knots; /**< Pointer to the knots of tmp. */ - size_t num_knots; /**< Number of knots in tmp. */ + tsBSpline tmp; /**< Temporarily stores the result. */ + tsReal *knots; /**< Pointer to the knots of tmp. */ + size_t num_knots; /**< Number of knots in tmp. */ - tsError err; + tsError err; - INIT_OUT_BSPLINE(spline, beziers) - TS_CALL_ROE(err, ts_bspline_copy(spline, &tmp, status)) - knots = ts_int_bspline_access_knots(&tmp); - num_knots = ts_bspline_num_knots(&tmp); + INIT_OUT_BSPLINE(spline, beziers) + TS_CALL_ROE(err, ts_bspline_copy(spline, &tmp, status)) + knots = ts_int_bspline_access_knots(&tmp); + num_knots = ts_bspline_num_knots(&tmp); - TS_TRY(try, err, status) - /* DO NOT FORGET TO UPDATE knots AND num_knots AFTER EACH - * TRANSFORMATION OF tmp! */ + TS_TRY(try, err, status) + /* DO NOT FORGET TO UPDATE knots AND num_knots AFTER EACH + * TRANSFORMATION OF tmp! */ - /* Fix first control point if necessary. */ - u_min = knots[deg]; - if (!ts_knots_equal(knots[0], u_min)) { - TS_CALL(try, err, ts_bspline_split( - &tmp, u_min, &tmp, &k, status)) - resize = (int)(-1*deg + (deg*2 - k)); - TS_CALL(try, err, ts_int_bspline_resize( - &tmp, resize, 0, &tmp, status)) - knots = ts_int_bspline_access_knots(&tmp); - num_knots = ts_bspline_num_knots(&tmp); - } + /* Fix first control point if necessary. */ + u_min = knots[deg]; + if (!ts_knots_equal(knots[0], u_min)) { + TS_CALL(try, err, ts_bspline_split(&tmp, u_min, &tmp, &k, status)) + resize = (int)(-1 * deg + (deg * 2 - k)); + TS_CALL(try, err, ts_int_bspline_resize(&tmp, resize, 0, &tmp, status)) + knots = ts_int_bspline_access_knots(&tmp); + num_knots = ts_bspline_num_knots(&tmp); + } - /* Fix last control point if necessary. */ - u_max = knots[num_knots - order]; - if (!ts_knots_equal(knots[num_knots - 1], u_max)) { - TS_CALL(try, err, ts_bspline_split( - &tmp, u_max, &tmp, &k, status)) - num_knots = ts_bspline_num_knots(&tmp); - resize = (int)(-1*deg + (k - (num_knots - order))); - TS_CALL(try, err, ts_int_bspline_resize( - &tmp, resize, 1, &tmp, status)) - knots = ts_int_bspline_access_knots(&tmp); - num_knots = ts_bspline_num_knots(&tmp); - } + /* Fix last control point if necessary. */ + u_max = knots[num_knots - order]; + if (!ts_knots_equal(knots[num_knots - 1], u_max)) { + TS_CALL(try, err, ts_bspline_split(&tmp, u_max, &tmp, &k, status)) + num_knots = ts_bspline_num_knots(&tmp); + resize = (int)(-1 * deg + (k - (num_knots - order))); + TS_CALL(try, err, ts_int_bspline_resize(&tmp, resize, 1, &tmp, status)) + knots = ts_int_bspline_access_knots(&tmp); + num_knots = ts_bspline_num_knots(&tmp); + } - /* Split internal knots. */ - k = order; - while (k < num_knots - order) { - TS_CALL(try, err, ts_bspline_split( - &tmp, knots[k], &tmp, &k, status)) - knots = ts_int_bspline_access_knots(&tmp); - num_knots = ts_bspline_num_knots(&tmp); - k++; - } + /* Split internal knots. */ + k = order; + while (k < num_knots - order) { + TS_CALL(try, err, ts_bspline_split(&tmp, knots[k], &tmp, &k, status)) + knots = ts_int_bspline_access_knots(&tmp); + num_knots = ts_bspline_num_knots(&tmp); + k++; + } - if (spline == beziers) - ts_bspline_free(beziers); - ts_bspline_move(&tmp, beziers); - TS_FINALLY - ts_bspline_free(&tmp); - TS_END_TRY_RETURN(err) + if (spline == beziers) + ts_bspline_free(beziers); + ts_bspline_move(&tmp, beziers); + TS_FINALLY + ts_bspline_free(&tmp); + TS_END_TRY_RETURN(err) } tsError @@ -2170,252 +2014,246 @@ ts_bspline_elevate_degree(const tsBSpline *spline, size_t amount, tsReal epsilon, tsBSpline *elevated, - tsStatus * status) -{ - tsBSpline worker; - size_t dim, order; - tsReal *ctrlp, *knots; - size_t num_beziers, i, a, c, d, offset, idx; - tsReal f, f_hat, *first, *last; - tsError err; + tsStatus *status) { + tsBSpline worker; + size_t dim, order; + tsReal *ctrlp, *knots; + size_t num_beziers, i, a, c, d, offset, idx; + tsReal f, f_hat, *first, *last; + tsError err; - /* Trivial case. */ - if (amount == 0) - return ts_bspline_copy(spline, elevated, status); + /* Trivial case. */ + if (amount == 0) + return ts_bspline_copy(spline, elevated, status); - /* An overview of this algorithm can be found at: - * https://pages.mtu.edu/~shene/COURSES/cs3621/LAB/curve/elevation.html */ - INIT_OUT_BSPLINE(spline, elevated); - worker = ts_bspline_init(); - TS_TRY(try, err, status) - /* Decompose `spline' into a sequence of bezier curves and make - * space for the additional control points and knots that are - * to be inserted. Results are stored in `worker'. */ - TS_CALL(try, err, ts_bspline_to_beziers( - spline, &worker, status)); - num_beziers = ts_bspline_num_control_points(&worker) / - ts_bspline_order(&worker); - TS_CALL(try, err, ts_int_bspline_resize( - /* Resize by the number of knots to be inserted. Note - * that this creates too many control points (due to - * increasing the degree), which are removed at the end - * of this function. */ - &worker, (int) ((num_beziers+1) * amount), 1, &worker, - status)); - dim = ts_bspline_dimension(&worker); - order = ts_bspline_order(&worker); - ctrlp = ts_int_bspline_access_ctrlp(&worker); - knots = ts_int_bspline_access_knots(&worker); + /* An overview of this algorithm can be found at: + * https://pages.mtu.edu/~shene/COURSES/cs3621/LAB/curve/elevation.html */ + INIT_OUT_BSPLINE(spline, elevated); + worker = ts_bspline_init(); + TS_TRY(try, err, status) + /* Decompose `spline' into a sequence of bezier curves and make + * space for the additional control points and knots that are + * to be inserted. Results are stored in `worker'. */ + TS_CALL(try, err, ts_bspline_to_beziers(spline, &worker, status)); + num_beziers = ts_bspline_num_control_points(&worker) / + ts_bspline_order(&worker); + TS_CALL(try, err, ts_int_bspline_resize( + /* Resize by the number of knots to be inserted. Note + * that this creates too many control points (due to + * increasing the degree), which are removed at the end + * of this function. */ + &worker, (int)((num_beziers + 1) * amount), 1, &worker, status)); + dim = ts_bspline_dimension(&worker); + order = ts_bspline_order(&worker); + ctrlp = ts_int_bspline_access_ctrlp(&worker); + knots = ts_int_bspline_access_knots(&worker); - /* Move all but the first bezier curve to their new location in - * the control point array so that the additional control - * points can be inserted without overwriting the others. Note - * that iteration must run backwards. Otherwise, the moved - * values overwrite each other. */ - for (i = num_beziers - 1; i > 0; i--) { - /* `i' can be interpreted as the number of bezier - * curves before the current bezier curve. */ + /* Move all but the first bezier curve to their new location in + * the control point array so that the additional control + * points can be inserted without overwriting the others. Note + * that iteration must run backwards. Otherwise, the moved + * values overwrite each other. */ + for (i = num_beziers - 1; i > 0; i--) { + /* `i' can be interpreted as the number of bezier + * curves before the current bezier curve. */ - /* Location of current bezier curve. */ - offset = i * order * dim; - /* Each elevation inserts an additional control point - * into every bezier curve. `i * amount' is the total - * number of control points to be inserted before the - * current bezier curve. */ - memmove(ctrlp + offset + (i * amount * dim), - ctrlp + offset, - dim * order * sizeof(tsReal)); - } + /* Location of current bezier curve. */ + offset = i * order * dim; + /* Each elevation inserts an additional control point + * into every bezier curve. `i * amount' is the total + * number of control points to be inserted before the + * current bezier curve. */ + memmove(ctrlp + offset + (i * amount * dim), + ctrlp + offset, + dim * order * sizeof(tsReal)); + } - /* Move all but the first group of knots to their new location - * in the knot vector so that the additional knots can be - * inserted without overwriting the others. Note that iteration - * must run backwards. Otherwise, the moved values overwrite - * each other. */ - for (i = num_beziers; i > 0; i--) { - /* Note that the number of knot groups is one more than - * the number of bezier curves. `i' can be interpreted - * as the number of knot groups before the current - * group. */ + /* Move all but the first group of knots to their new location + * in the knot vector so that the additional knots can be + * inserted without overwriting the others. Note that iteration + * must run backwards. Otherwise, the moved values overwrite + * each other. */ + for (i = num_beziers; i > 0; i--) { + /* Note that the number of knot groups is one more than + * the number of bezier curves. `i' can be interpreted + * as the number of knot groups before the current + * group. */ - /* Location of current knot group. */ - offset = i * order; - /* Each elevation inserts an additional knot into every - * group of knots. `i * amount' is the total number of - * knots to be inserted before the current knot - * group. */ - memmove(knots + offset + (i * amount), - knots + offset, - order * sizeof(tsReal)); - } + /* Location of current knot group. */ + offset = i * order; + /* Each elevation inserts an additional knot into every + * group of knots. `i * amount' is the total number of + * knots to be inserted before the current knot + * group. */ + memmove(knots + offset + (i * amount), + knots + offset, + order * sizeof(tsReal)); + } - /* `worker' is now fully set up. - * The following formulas are based on: - * https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/Bezier/bezier-elev.html */ - for (a = 0; a < amount; a++) { - /* For each bezier curve... */ - for (i = 0; i < num_beziers; i++) { - /* ... 1) Insert and update control points. */ + /* `worker' is now fully set up. + * The following formulas are based on: + * https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/Bezier/bezier-elev.html */ + for (a = 0; a < amount; a++) { + /* For each bezier curve... */ + for (i = 0; i < num_beziers; i++) { + /* ... 1) Insert and update control points. */ - /* Location of current bezier curve. Each - * elevation (`a') inserts an additional - * control point into every bezier curve and - * increases the degree (`order') by one. The - * location is thus made up of two parts: - * - * i) `i * order', which is the location taking - * into account the increasing order but - * neglecting the control points that are to be - * inserted before the current bezier curve. It - * can be seen as some sort of base location: - * Where would the bezier curve be (with - * respect to the current value of `order') if - * no additional control points had to be - * inserted? - * - * ii) `i * (amount - a)', which is the total - * number of control points to be inserted - * before the current bezier curve - * (`i * amount') taking into account the - * increasing order (`order' and `a' are - * increased equally, thus, `a' compensates for - * the increasing value of `order'). This part - * adds the necessary offset to the base - * location (`i * order'). */ - offset = (i * order + i * (amount - a)) * dim; - /* Duplicate last control point to the new end - * position (next control point). */ - memmove(ctrlp + offset + ((order) * dim), - ctrlp + offset + ((order-1) * dim), - dim * sizeof(tsReal)); - /* All but the outer control points must be - * recalculated (domain: [1, order - 1]). By - * traversing backwards, control points can be - * modified in-place. */ - for (c = order - 1; c > 0; c--) { - /* Location of current control point - * within current bezier curve. */ - idx = offset + c * dim; - f = (tsReal) c / (tsReal) (order); - f_hat = 1 - f; - for (d = 0; d < dim; d++) { - /* For the sake of space, we - * increment idx by d and - * decrement it at the end of - * this loop. */ - idx += d; - ctrlp[idx] = - f * ctrlp[idx - dim] + - f_hat * ctrlp[idx]; - /* Reset idx. */ - idx -= d; - } - } + /* Location of current bezier curve. Each + * elevation (`a') inserts an additional + * control point into every bezier curve and + * increases the degree (`order') by one. The + * location is thus made up of two parts: + * + * i) `i * order', which is the location taking + * into account the increasing order but + * neglecting the control points that are to be + * inserted before the current bezier curve. It + * can be seen as some sort of base location: + * Where would the bezier curve be (with + * respect to the current value of `order') if + * no additional control points had to be + * inserted? + * + * ii) `i * (amount - a)', which is the total + * number of control points to be inserted + * before the current bezier curve + * (`i * amount') taking into account the + * increasing order (`order' and `a' are + * increased equally, thus, `a' compensates for + * the increasing value of `order'). This part + * adds the necessary offset to the base + * location (`i * order'). */ + offset = (i * order + i * (amount - a)) * dim; + /* Duplicate last control point to the new end + * position (next control point). */ + memmove(ctrlp + offset + ((order)*dim), + ctrlp + offset + ((order - 1) * dim), + dim * sizeof(tsReal)); + /* All but the outer control points must be + * recalculated (domain: [1, order - 1]). By + * traversing backwards, control points can be + * modified in-place. */ + for (c = order - 1; c > 0; c--) { + /* Location of current control point + * within current bezier curve. */ + idx = offset + c * dim; + f = (tsReal)c / (tsReal)(order); + f_hat = 1 - f; + for (d = 0; d < dim; d++) { + /* For the sake of space, we + * increment idx by d and + * decrement it at the end of + * this loop. */ + idx += d; + ctrlp[idx] = + f * ctrlp[idx - dim] + + f_hat * ctrlp[idx]; + /* Reset idx. */ + idx -= d; + } + } - /* ...2) Increase the multiplicity of the - * second knot group (maximum of the domain of - * the current bezier curve) by one. Note that - * this loop misses the last knot group (the - * group of the last bezier curve) as there is - * one more knot group than bezier curves to - * process. Thus, the last group must be - * increased separately after this loop. */ + /* ...2) Increase the multiplicity of the + * second knot group (maximum of the domain of + * the current bezier curve) by one. Note that + * this loop misses the last knot group (the + * group of the last bezier curve) as there is + * one more knot group than bezier curves to + * process. Thus, the last group must be + * increased separately after this loop. */ - /* Location of current knot group. Each - * elevation (`a') inserts an additional - * knot into the knot vector of every bezier - * curve and increases the degree (`order') by - * one. The location is thus made up of two - * parts: - * - * i) `i * order', which is the location taking - * into account the increasing order but - * neglecting the knots that are to be inserted - * before the current knot group. It can be - * seen as some sort of base location: Where - * would the knot group be (with respect to the - * current value of `order') if no additional - * knots had to be inserted? - * - * ii) `i * (amount - a)', which is the total - * number of knots to be inserted before the - * current knot group (`i * amount') taking - * into account the increasing order (`order' - * and `a' are increased equally, thus, `a' - * compensates for the increasing value of - * `order'). This part adds the necessary - * offset to the base location - * (`i * order'). */ - offset = i * order + i * (amount - a); - /* Duplicate knot. */ - knots[offset + order] = knots[offset]; - } + /* Location of current knot group. Each + * elevation (`a') inserts an additional + * knot into the knot vector of every bezier + * curve and increases the degree (`order') by + * one. The location is thus made up of two + * parts: + * + * i) `i * order', which is the location taking + * into account the increasing order but + * neglecting the knots that are to be inserted + * before the current knot group. It can be + * seen as some sort of base location: Where + * would the knot group be (with respect to the + * current value of `order') if no additional + * knots had to be inserted? + * + * ii) `i * (amount - a)', which is the total + * number of knots to be inserted before the + * current knot group (`i * amount') taking + * into account the increasing order (`order' + * and `a' are increased equally, thus, `a' + * compensates for the increasing value of + * `order'). This part adds the necessary + * offset to the base location + * (`i * order'). */ + offset = i * order + i * (amount - a); + /* Duplicate knot. */ + knots[offset + order] = knots[offset]; + } - /* Increase the multiplicity of the very last knot - * group (the second group of the last bezier curve) - * by one. For more details, see knot duplication in - * previous loop. */ - offset = num_beziers * order + - num_beziers * (amount - a); - knots[offset + order] = knots[offset]; + /* Increase the multiplicity of the very last knot + * group (the second group of the last bezier curve) + * by one. For more details, see knot duplication in + * previous loop. */ + offset = num_beziers * order + + num_beziers * (amount - a); + knots[offset + order] = knots[offset]; - /* Elevated by one. */ - order++; - } + /* Elevated by one. */ + order++; + } - /* Combine bezier curves. */ - d = 0; /* Number of removed knots/control points. */ - for (i = 0; i < num_beziers - 1; i++) { - /* Is the last control point of bezier curve `i' equal - * to the first control point of bezier curve `i+1'? */ - last = ctrlp + ( - i * order /* base location of `i' */ - - d /* minus the number of removed values */ - + (order - 1) /* jump to last control point */ - ) * dim; - first = last + dim; /* next control point */ - if (ts_distance(last, first, dim) <= epsilon) { - /* Move control points. */ - memmove(last, first, (num_beziers - 1 - i) * - order * dim * sizeof(tsReal)); + /* Combine bezier curves. */ + d = 0; /* Number of removed knots/control points. */ + for (i = 0; i < num_beziers - 1; i++) { + /* Is the last control point of bezier curve `i' equal + * to the first control point of bezier curve `i+1'? */ + last = ctrlp + (i * order /* base location of `i' */ + - d /* minus the number of removed values */ + + (order - 1) /* jump to last control point */ + ) * dim; + first = last + dim; /* next control point */ + if (ts_distance(last, first, dim) <= epsilon) { + /* Move control points. */ + memmove(last, first, (num_beziers - 1 - i) * order * dim * sizeof(tsReal)); - /* Move knots. `last' is the last knot of the - * second knot group of bezier curve `i'. - * `first' is the first knot of the first knot - * group of bezier curve `i+1'. The - * calculations are quite similar to those for - * the control points `last' and `first' (see - * above). */ - last = knots + i * order - d + (2 * order - 1); - first = last + 1; - memmove(last, first, (num_beziers - 1 - i) * - order * sizeof(tsReal)); + /* Move knots. `last' is the last knot of the + * second knot group of bezier curve `i'. + * `first' is the first knot of the first knot + * group of bezier curve `i+1'. The + * calculations are quite similar to those for + * the control points `last' and `first' (see + * above). */ + last = knots + i * order - d + (2 * order - 1); + first = last + 1; + memmove(last, first, (num_beziers - 1 - i) * order * sizeof(tsReal)); - /* Removed one knot/control point. */ - d++; - } - } + /* Removed one knot/control point. */ + d++; + } + } - /* Repair internal state. */ - worker.pImpl->deg = order - 1; - worker.pImpl->n_knots -= d; - worker.pImpl->n_ctrlp = ts_bspline_num_knots(&worker) - order; - memmove(ts_int_bspline_access_knots(&worker), - knots, ts_bspline_sof_knots(&worker)); - worker.pImpl = realloc(worker.pImpl, - ts_int_bspline_sof_state(&worker)); - if (worker.pImpl == NULL) { - TS_THROW_0(try, err, status, TS_MALLOC, - "out of memory") - } + /* Repair internal state. */ + worker.pImpl->deg = order - 1; + worker.pImpl->n_knots -= d; + worker.pImpl->n_ctrlp = ts_bspline_num_knots(&worker) - order; + memmove(ts_int_bspline_access_knots(&worker), + knots, ts_bspline_sof_knots(&worker)); + worker.pImpl = realloc(worker.pImpl, + ts_int_bspline_sof_state(&worker)); + if (worker.pImpl == NULL) { + TS_THROW_0(try, err, status, TS_MALLOC, + "out of memory") + } - /* Move `worker' to output parameter. */ - if (spline == elevated) - ts_bspline_free(elevated); - ts_bspline_move(&worker, elevated); - TS_FINALLY - ts_bspline_free(&worker); - TS_END_TRY_RETURN(err) + /* Move `worker' to output parameter. */ + if (spline == elevated) + ts_bspline_free(elevated); + ts_bspline_move(&worker, elevated); + TS_FINALLY + ts_bspline_free(&worker); + TS_END_TRY_RETURN(err) } tsError @@ -2424,98 +2262,85 @@ ts_bspline_align(const tsBSpline *s1, tsReal epsilon, tsBSpline *s1_out, tsBSpline *s2_out, - tsStatus *status) -{ - tsBSpline s1_worker, s2_worker, *smaller, *larger; - tsDeBoorNet net; /* the net of `smaller'. */ - size_t i, missing, remaining; - tsReal min, max, shift, nextKnot; - tsError err; + tsStatus *status) { + tsBSpline s1_worker, s2_worker, *smaller, *larger; + tsDeBoorNet net; /* the net of `smaller'. */ + size_t i, missing, remaining; + tsReal min, max, shift, nextKnot; + tsError err; - INIT_OUT_BSPLINE(s1, s1_out) - INIT_OUT_BSPLINE(s2, s2_out) - s1_worker = ts_bspline_init(); - s2_worker = ts_bspline_init(); - smaller = larger = NULL; - TS_TRY(try, err, status) - /* Set up `s1_worker' and `s2_worker'. After this - * if-elseif-else-block, `s1_worker' and `s2_worker' have same - * degree. */ - if (ts_bspline_degree(s1) < ts_bspline_degree(s2)) { - TS_CALL(try, err, ts_bspline_elevate_degree(s1, - ts_bspline_degree(s2) - ts_bspline_degree(s1), - epsilon, &s1_worker, status)) - TS_CALL(try, err, ts_bspline_copy( - s2, &s2_worker, status)) - } else if (ts_bspline_degree(s2) < ts_bspline_degree(s1)) { - TS_CALL(try, err, ts_bspline_elevate_degree(s2, - ts_bspline_degree(s1) - ts_bspline_degree(s2), - epsilon, &s2_worker, status)) - TS_CALL(try, err, ts_bspline_copy( - s1, &s1_worker, status)) - } else { - TS_CALL(try, err, ts_bspline_copy( - s1, &s1_worker, status)) - TS_CALL(try, err, ts_bspline_copy( - s2, &s2_worker, status)) - } + INIT_OUT_BSPLINE(s1, s1_out) + INIT_OUT_BSPLINE(s2, s2_out) + s1_worker = ts_bspline_init(); + s2_worker = ts_bspline_init(); + smaller = larger = NULL; + TS_TRY(try, err, status) + /* Set up `s1_worker' and `s2_worker'. After this + * if-elseif-else-block, `s1_worker' and `s2_worker' have same + * degree. */ + if (ts_bspline_degree(s1) < ts_bspline_degree(s2)) { + TS_CALL(try, err, ts_bspline_elevate_degree(s1, ts_bspline_degree(s2) - ts_bspline_degree(s1), epsilon, &s1_worker, status)) + TS_CALL(try, err, ts_bspline_copy(s2, &s2_worker, status)) + } else if (ts_bspline_degree(s2) < ts_bspline_degree(s1)) { + TS_CALL(try, err, ts_bspline_elevate_degree(s2, ts_bspline_degree(s1) - ts_bspline_degree(s2), epsilon, &s2_worker, status)) + TS_CALL(try, err, ts_bspline_copy(s1, &s1_worker, status)) + } else { + TS_CALL(try, err, ts_bspline_copy(s1, &s1_worker, status)) + TS_CALL(try, err, ts_bspline_copy(s2, &s2_worker, status)) + } - /* Set up `smaller', `larger', and `net'. */ - if (ts_bspline_num_knots(&s1_worker) < - ts_bspline_num_knots(&s2_worker)) { - smaller = &s1_worker; - larger = &s2_worker; - } else { - smaller = &s2_worker; - larger = &s1_worker; - } - TS_CALL(try, err, ts_int_deboornet_new( - smaller, &net, status)) + /* Set up `smaller', `larger', and `net'. */ + if (ts_bspline_num_knots(&s1_worker) < + ts_bspline_num_knots(&s2_worker)) { + smaller = &s1_worker; + larger = &s2_worker; + } else { + smaller = &s2_worker; + larger = &s1_worker; + } + TS_CALL(try, err, ts_int_deboornet_new(smaller, &net, status)) - /* Insert knots into `smaller' until it has the same number of - * knots (and therefore the same number of control points) as - * `larger'. */ - ts_bspline_domain(smaller, &min, &max); - missing = remaining = ts_bspline_num_knots(larger) - - ts_bspline_num_knots(smaller); - shift = (tsReal) 0.0; - if (missing > 0) - shift = ( (tsReal) 1.0 / missing ) * (tsReal) 0.5; - for (i = 0; remaining > 0; i++, remaining--) { - nextKnot = (max - min) * ((tsReal)i / missing) + min; - nextKnot += shift; - TS_CALL(try, err, ts_int_bspline_eval_woa( - smaller, nextKnot, &net, status)) - while (!ts_deboornet_num_insertions(&net)) { - /* Linear exploration for next knot. */ - nextKnot += 5 * TS_KNOT_EPSILON; - if (nextKnot > max) { - TS_THROW_0(try, err, status, - TS_NO_RESULT, - "no more knots for insertion") - } - TS_CALL(try, err, ts_int_bspline_eval_woa( - smaller, nextKnot, &net, status)) - } - TS_CALL(try, err, ts_int_bspline_insert_knot( - smaller, &net, 1, smaller, status)) - } + /* Insert knots into `smaller' until it has the same number of + * knots (and therefore the same number of control points) as + * `larger'. */ + ts_bspline_domain(smaller, &min, &max); + missing = remaining = ts_bspline_num_knots(larger) - + ts_bspline_num_knots(smaller); + shift = (tsReal)0.0; + if (missing > 0) + shift = ((tsReal)1.0 / missing) * (tsReal)0.5; + for (i = 0; remaining > 0; i++, remaining--) { + nextKnot = (max - min) * ((tsReal)i / missing) + min; + nextKnot += shift; + TS_CALL(try, err, ts_int_bspline_eval_woa(smaller, nextKnot, &net, status)) + while (!ts_deboornet_num_insertions(&net)) { + /* Linear exploration for next knot. */ + nextKnot += 5 * TS_KNOT_EPSILON; + if (nextKnot > max) { + TS_THROW_0(try, err, status, + TS_NO_RESULT, + "no more knots for insertion") + } + TS_CALL(try, err, ts_int_bspline_eval_woa(smaller, nextKnot, &net, status)) + } + TS_CALL(try, err, ts_int_bspline_insert_knot(smaller, &net, 1, smaller, status)) + } - if (s1 == s1_out) - ts_bspline_free(s1_out); - if (s2 == s2_out) - ts_bspline_free(s2_out); - ts_bspline_move(&s1_worker, s1_out); - /* if `s1_out' == `s2_out', `s2_worker' must not be moved - * because otherwise the memory of `s1_worker' is leaked - * (`s2_worker' overrides `s1_worker'). */ - if (s1_out != s2_out) - ts_bspline_move(&s2_worker, s2_out); - TS_FINALLY - ts_bspline_free(&s1_worker); - ts_bspline_free(&s2_worker); - ts_deboornet_free(&net); - TS_END_TRY_RETURN(err) + if (s1 == s1_out) + ts_bspline_free(s1_out); + if (s2 == s2_out) + ts_bspline_free(s2_out); + ts_bspline_move(&s1_worker, s1_out); + /* if `s1_out' == `s2_out', `s2_worker' must not be moved + * because otherwise the memory of `s1_worker' is leaked + * (`s2_worker' overrides `s1_worker'). */ + if (s1_out != s2_out) + ts_bspline_move(&s2_worker, s2_out); + TS_FINALLY + ts_bspline_free(&s1_worker); + ts_bspline_free(&s2_worker); + ts_deboornet_free(&net); + TS_END_TRY_RETURN(err) } tsError @@ -2524,93 +2349,86 @@ ts_bspline_morph(const tsBSpline *origin, tsReal t, tsReal epsilon, tsBSpline *out, - tsStatus *status) -{ - tsBSpline origin_al, target_al; /* aligned origin and target */ - tsReal *origin_al_c, *origin_al_k; /* control points and knots */ - tsReal *target_al_c, *target_al_k; /* control points and knots */ + tsStatus *status) { + tsBSpline origin_al, target_al; /* aligned origin and target */ + tsReal *origin_al_c, *origin_al_k; /* control points and knots */ + tsReal *target_al_c, *target_al_k; /* control points and knots */ - /* Properties of `out'. */ - size_t deg, dim, num_ctrlp, num_knots; - tsReal *ctrlp, *knots; - tsBSpline tmp; /* temporary buffer if `out' must be resized */ + /* Properties of `out'. */ + size_t deg, dim, num_ctrlp, num_knots; + tsReal *ctrlp, *knots; + tsBSpline tmp; /* temporary buffer if `out' must be resized */ - tsReal t_hat; - size_t i, offset, d; - tsError err; + tsReal t_hat; + size_t i, offset, d; + tsError err; - origin_al = ts_bspline_init(); - target_al = ts_bspline_init(); - TS_TRY(try, err, status) - /* Clamp `t' to domain [0, 1] and set up `t_hat'. */ - if (t < (tsReal) 0.0) t = (tsReal) 0.0; - if (t > (tsReal) 1.0) t = (tsReal) 1.0; - t_hat = (tsReal) 1.0 - t; + origin_al = ts_bspline_init(); + target_al = ts_bspline_init(); + TS_TRY(try, err, status) + /* Clamp `t' to domain [0, 1] and set up `t_hat'. */ + if (t < (tsReal)0.0) t = (tsReal)0.0; + if (t > (tsReal)1.0) t = (tsReal)1.0; + t_hat = (tsReal)1.0 - t; - /* Set up `origin_al' and `target_al'. */ - /* Degree must be elevated... */ - if (ts_bspline_degree(origin) != ts_bspline_degree(target) || - /* .. or knots (and thus control points) must be inserted. */ - ts_bspline_num_knots(origin) != ts_bspline_num_knots(target)) { - TS_CALL(try, err, ts_bspline_align( - origin, target, epsilon, &origin_al, &target_al, - status)); - } else { - /* Flat copy. */ - origin_al = *origin; - target_al = *target; - } - origin_al_c = ts_int_bspline_access_ctrlp(&origin_al); - origin_al_k = ts_int_bspline_access_knots(&origin_al); - target_al_c = ts_int_bspline_access_ctrlp(&target_al); - target_al_k = ts_int_bspline_access_knots(&target_al); + /* Set up `origin_al' and `target_al'. */ + /* Degree must be elevated... */ + if (ts_bspline_degree(origin) != ts_bspline_degree(target) || + /* .. or knots (and thus control points) must be inserted. */ + ts_bspline_num_knots(origin) != ts_bspline_num_knots(target)) { + TS_CALL(try, err, ts_bspline_align(origin, target, epsilon, &origin_al, &target_al, status)); + } else { + /* Flat copy. */ + origin_al = *origin; + target_al = *target; + } + origin_al_c = ts_int_bspline_access_ctrlp(&origin_al); + origin_al_k = ts_int_bspline_access_knots(&origin_al); + target_al_c = ts_int_bspline_access_ctrlp(&target_al); + target_al_k = ts_int_bspline_access_knots(&target_al); - /* Set up `out'. */ - deg = ts_bspline_degree(&origin_al); - num_ctrlp = ts_bspline_num_control_points(&origin_al); - dim = ts_bspline_dimension(&origin_al); - if (ts_bspline_dimension(&target_al) < dim) - dim = ts_bspline_dimension(&target_al); - if (out->pImpl == NULL) { - TS_CALL(try, err, ts_bspline_new(num_ctrlp, dim, deg, - TS_OPENED /* doesn't matter */, out, status)) - } else if (ts_bspline_degree(out) != deg || - ts_bspline_num_control_points(out) != num_ctrlp || - ts_bspline_dimension(out) != dim) { - TS_CALL(try, err, ts_bspline_new(num_ctrlp, dim, deg, - TS_OPENED /* doesn't matter */, &tmp, status)) - ts_bspline_free(out); - ts_bspline_move(&tmp, out); - } - num_knots = ts_bspline_num_knots(out); - ctrlp = ts_int_bspline_access_ctrlp(out); - knots = ts_int_bspline_access_knots(out); + /* Set up `out'. */ + deg = ts_bspline_degree(&origin_al); + num_ctrlp = ts_bspline_num_control_points(&origin_al); + dim = ts_bspline_dimension(&origin_al); + if (ts_bspline_dimension(&target_al) < dim) + dim = ts_bspline_dimension(&target_al); + if (out->pImpl == NULL) { + TS_CALL(try, err, ts_bspline_new(num_ctrlp, dim, deg, TS_OPENED /* doesn't matter */, out, status)) + } else if (ts_bspline_degree(out) != deg || + ts_bspline_num_control_points(out) != num_ctrlp || + ts_bspline_dimension(out) != dim) { + TS_CALL(try, err, ts_bspline_new(num_ctrlp, dim, deg, TS_OPENED /* doesn't matter */, &tmp, status)) + ts_bspline_free(out); + ts_bspline_move(&tmp, out); + } + num_knots = ts_bspline_num_knots(out); + ctrlp = ts_int_bspline_access_ctrlp(out); + knots = ts_int_bspline_access_knots(out); - /* Interpolate control points. */ - for (i = 0; i < num_ctrlp; i++) { - for (d = 0; d < dim; d++) { - offset = i * dim + d; - ctrlp[offset] = t * target_al_c[offset] + - t_hat * origin_al_c[offset]; - } - } + /* Interpolate control points. */ + for (i = 0; i < num_ctrlp; i++) { + for (d = 0; d < dim; d++) { + offset = i * dim + d; + ctrlp[offset] = t * target_al_c[offset] + + t_hat * origin_al_c[offset]; + } + } - /* Interpolate knots. */ - for (i = 0; i < num_knots; i++) { - knots[i] = t * target_al_k[i] + - t_hat * origin_al_k[i]; - } - TS_FINALLY - if (origin->pImpl != origin_al.pImpl) - ts_bspline_free(&origin_al); - if (target->pImpl != target_al.pImpl) - ts_bspline_free(&target_al); - TS_END_TRY_RETURN(err) + /* Interpolate knots. */ + for (i = 0; i < num_knots; i++) { + knots[i] = t * target_al_k[i] + + t_hat * origin_al_k[i]; + } + TS_FINALLY + if (origin->pImpl != origin_al.pImpl) + ts_bspline_free(&origin_al); + if (target->pImpl != target_al.pImpl) + ts_bspline_free(&target_al); + TS_END_TRY_RETURN(err) } /*! @} */ - - /*! @name Serialization and Persistence * * @{ @@ -2618,538 +2436,494 @@ ts_bspline_morph(const tsBSpline *origin, tsError ts_int_bspline_to_json(const tsBSpline *spline, JSON_Value **value, - tsStatus *status) -{ - const size_t deg = ts_bspline_degree(spline); - const size_t dim = ts_bspline_dimension(spline); - const size_t len_ctrlp = ts_bspline_len_control_points(spline); - const size_t len_knots = ts_bspline_num_knots(spline); - const tsReal *ctrlp = ts_int_bspline_access_ctrlp(spline); - const tsReal *knots = ts_int_bspline_access_knots(spline); + tsStatus *status) { + const size_t deg = ts_bspline_degree(spline); + const size_t dim = ts_bspline_dimension(spline); + const size_t len_ctrlp = ts_bspline_len_control_points(spline); + const size_t len_knots = ts_bspline_num_knots(spline); + const tsReal *ctrlp = ts_int_bspline_access_ctrlp(spline); + const tsReal *knots = ts_int_bspline_access_knots(spline); - size_t i; /**< Used in loops */ - tsError err; + size_t i; /**< Used in loops */ + tsError err; - JSON_Value *ctrlp_value; - JSON_Value *knots_value; - JSON_Object *spline_object; - JSON_Array *ctrlp_array; - JSON_Array *knots_array; + JSON_Value *ctrlp_value; + JSON_Value *knots_value; + JSON_Object *spline_object; + JSON_Array *ctrlp_array; + JSON_Array *knots_array; - *value = ctrlp_value = knots_value = NULL; - TS_TRY(values, err, status) - /* Init memory. */ - *value = json_value_init_object(); - if (!*value) { - TS_THROW_0(values, err, status, TS_MALLOC, - "out of memory") - } - ctrlp_value = json_value_init_array(); - if (!ctrlp_value) { - TS_THROW_0(values, err, status, TS_MALLOC, - "out of memory") - } - knots_value = json_value_init_array(); - if (!knots_value) { - TS_THROW_0(values, err, status, TS_MALLOC, - "out of memory") - } + *value = ctrlp_value = knots_value = NULL; + TS_TRY(values, err, status) + /* Init memory. */ + *value = json_value_init_object(); + if (!*value) { + TS_THROW_0(values, err, status, TS_MALLOC, + "out of memory") + } + ctrlp_value = json_value_init_array(); + if (!ctrlp_value) { + TS_THROW_0(values, err, status, TS_MALLOC, + "out of memory") + } + knots_value = json_value_init_array(); + if (!knots_value) { + TS_THROW_0(values, err, status, TS_MALLOC, + "out of memory") + } - /* Although the following functions cannot fail, that is, they - * won't return NULL or JSONFailure, we nevertheless handle - * unexpected return values. */ + /* Although the following functions cannot fail, that is, they + * won't return NULL or JSONFailure, we nevertheless handle + * unexpected return values. */ - /* Init output. */ - spline_object = json_value_get_object(*value); - if (!spline_object) { - TS_THROW_0(values, err, status, TS_MALLOC, - "out of memory") - } + /* Init output. */ + spline_object = json_value_get_object(*value); + if (!spline_object) { + TS_THROW_0(values, err, status, TS_MALLOC, + "out of memory") + } - /* Set degree and dimension. */ - if (JSONSuccess != json_object_set_number(spline_object, - "degree", - (double) deg)) { - TS_THROW_0(values, err, status, TS_MALLOC, - "out of memory") - } - if (JSONSuccess != json_object_set_number(spline_object, - "dimension", - (double) dim)) { - TS_THROW_0(values, err, status, TS_MALLOC, - "out of memory") - } + /* Set degree and dimension. */ + if (JSONSuccess != json_object_set_number(spline_object, + "degree", + (double)deg)) { + TS_THROW_0(values, err, status, TS_MALLOC, + "out of memory") + } + if (JSONSuccess != json_object_set_number(spline_object, + "dimension", + (double)dim)) { + TS_THROW_0(values, err, status, TS_MALLOC, + "out of memory") + } - /* Set control points. */ - if (JSONSuccess != json_object_set_value(spline_object, - "control_points", - ctrlp_value)) { - TS_THROW_0(values, err, status, TS_MALLOC, - "out of memory") - } - ctrlp_array = json_array(ctrlp_value); - if (!ctrlp_array) { - TS_THROW_0(values, err, status, TS_MALLOC, - "out of memory") - } - for (i = 0; i < len_ctrlp; i++) { - if (JSONSuccess != json_array_append_number( - ctrlp_array, (double) ctrlp[i])) { - TS_THROW_0(values, err, status, TS_MALLOC, - "out of memory") - } - } + /* Set control points. */ + if (JSONSuccess != json_object_set_value(spline_object, + "control_points", + ctrlp_value)) { + TS_THROW_0(values, err, status, TS_MALLOC, + "out of memory") + } + ctrlp_array = json_array(ctrlp_value); + if (!ctrlp_array) { + TS_THROW_0(values, err, status, TS_MALLOC, + "out of memory") + } + for (i = 0; i < len_ctrlp; i++) { + if (JSONSuccess != json_array_append_number( + ctrlp_array, (double)ctrlp[i])) { + TS_THROW_0(values, err, status, TS_MALLOC, + "out of memory") + } + } - /* Set knots. */ - if (JSONSuccess != json_object_set_value(spline_object, - "knots", - knots_value)) { - TS_THROW_0(values, err, status, TS_MALLOC, - "out of memory") - } - knots_array = json_array(knots_value); - if (!knots_array) { - TS_THROW_0(values, err, status, TS_MALLOC, - "out of memory") - } - for (i = 0; i < len_knots; i++) { - if (JSONSuccess != json_array_append_number( - knots_array, (double) knots[i])) { - TS_THROW_0(values, err, status, TS_MALLOC, - "out of memory") - } - } - TS_CATCH(err) - if (*value) - json_value_free(*value); - if (ctrlp_value && !json_value_get_parent(ctrlp_value)) - json_value_free(ctrlp_value); - if (knots_value && !json_value_get_parent(knots_value)) - json_value_free(knots_value); - *value = NULL; - TS_END_TRY_RETURN(err) + /* Set knots. */ + if (JSONSuccess != json_object_set_value(spline_object, + "knots", + knots_value)) { + TS_THROW_0(values, err, status, TS_MALLOC, + "out of memory") + } + knots_array = json_array(knots_value); + if (!knots_array) { + TS_THROW_0(values, err, status, TS_MALLOC, + "out of memory") + } + for (i = 0; i < len_knots; i++) { + if (JSONSuccess != json_array_append_number( + knots_array, (double)knots[i])) { + TS_THROW_0(values, err, status, TS_MALLOC, + "out of memory") + } + } + TS_CATCH(err) + if (*value) + json_value_free(*value); + if (ctrlp_value && !json_value_get_parent(ctrlp_value)) + json_value_free(ctrlp_value); + if (knots_value && !json_value_get_parent(knots_value)) + json_value_free(knots_value); + *value = NULL; + TS_END_TRY_RETURN(err) } tsError ts_int_bspline_parse_json(const JSON_Value *spline_value, tsBSpline *spline, - tsStatus *status) -{ - size_t deg, dim, len_ctrlp, num_knots; - tsReal *ctrlp, *knots; + tsStatus *status) { + size_t deg, dim, len_ctrlp, num_knots; + tsReal *ctrlp, *knots; - JSON_Object *spline_object; - JSON_Value *deg_value; - JSON_Value *dim_value; - JSON_Value *ctrlp_value; - JSON_Array *ctrlp_array; - JSON_Value *knots_value; - JSON_Array *knots_array; - JSON_Value *real_value; - size_t i; - tsError err; + JSON_Object *spline_object; + JSON_Value *deg_value; + JSON_Value *dim_value; + JSON_Value *ctrlp_value; + JSON_Array *ctrlp_array; + JSON_Value *knots_value; + JSON_Array *knots_array; + JSON_Value *real_value; + size_t i; + tsError err; - ts_int_bspline_init(spline); + ts_int_bspline_init(spline); - /* Read spline object. */ - if (json_value_get_type(spline_value) != JSONObject) - TS_RETURN_0(status, TS_PARSE_ERROR, "invalid json input") - spline_object = json_value_get_object(spline_value); - if (!spline_object) - TS_RETURN_0(status, TS_PARSE_ERROR, "invalid json input") + /* Read spline object. */ + if (json_value_get_type(spline_value) != JSONObject) + TS_RETURN_0(status, TS_PARSE_ERROR, "invalid json input") + spline_object = json_value_get_object(spline_value); + if (!spline_object) + TS_RETURN_0(status, TS_PARSE_ERROR, "invalid json input") - /* Read degree. */ - deg_value = json_object_get_value(spline_object, "degree"); - if (json_value_get_type(deg_value) != JSONNumber) - TS_RETURN_0(status, TS_PARSE_ERROR, "degree is not a number") - if (json_value_get_number(deg_value) < -0.01f) { - TS_RETURN_1(status, TS_PARSE_ERROR, - "degree (%f) < 0", - json_value_get_number(deg_value)) - } - deg = (size_t) json_value_get_number(deg_value); + /* Read degree. */ + deg_value = json_object_get_value(spline_object, "degree"); + if (json_value_get_type(deg_value) != JSONNumber) + TS_RETURN_0(status, TS_PARSE_ERROR, "degree is not a number") + if (json_value_get_number(deg_value) < -0.01f) { + TS_RETURN_1(status, TS_PARSE_ERROR, + "degree (%f) < 0", + json_value_get_number(deg_value)) + } + deg = (size_t)json_value_get_number(deg_value); - /* Read dimension. */ - dim_value = json_object_get_value(spline_object, "dimension"); - if (json_value_get_type(dim_value) != JSONNumber) { - TS_RETURN_0(status, TS_PARSE_ERROR, - "dimension is not a number") - } - if (json_value_get_number(dim_value) < 0.99f) { - TS_RETURN_1(status, TS_PARSE_ERROR, - "dimension (%f) < 1", - json_value_get_number(deg_value)) - } - dim = (size_t) json_value_get_number(dim_value); + /* Read dimension. */ + dim_value = json_object_get_value(spline_object, "dimension"); + if (json_value_get_type(dim_value) != JSONNumber) { + TS_RETURN_0(status, TS_PARSE_ERROR, + "dimension is not a number") + } + if (json_value_get_number(dim_value) < 0.99f) { + TS_RETURN_1(status, TS_PARSE_ERROR, + "dimension (%f) < 1", + json_value_get_number(deg_value)) + } + dim = (size_t)json_value_get_number(dim_value); - /* Read length of control point vector. */ - ctrlp_value = json_object_get_value(spline_object, "control_points"); - if (json_value_get_type(ctrlp_value) != JSONArray) { - TS_RETURN_0(status, TS_PARSE_ERROR, - "control_points is not an array") - } - ctrlp_array = json_value_get_array(ctrlp_value); - len_ctrlp = json_array_get_count(ctrlp_array); - if (len_ctrlp % dim != 0) { - TS_RETURN_2(status, TS_PARSE_ERROR, - "len(control_points) (%lu) %% dimension (%lu) != 0", - (unsigned long) len_ctrlp, (unsigned long) dim) - } + /* Read length of control point vector. */ + ctrlp_value = json_object_get_value(spline_object, "control_points"); + if (json_value_get_type(ctrlp_value) != JSONArray) { + TS_RETURN_0(status, TS_PARSE_ERROR, + "control_points is not an array") + } + ctrlp_array = json_value_get_array(ctrlp_value); + len_ctrlp = json_array_get_count(ctrlp_array); + if (len_ctrlp % dim != 0) { + TS_RETURN_2(status, TS_PARSE_ERROR, + "len(control_points) (%lu) %% dimension (%lu) != 0", + (unsigned long)len_ctrlp, (unsigned long)dim) + } - /* Read number of knots. */ - knots_value = json_object_get_value(spline_object, "knots"); - if (json_value_get_type(knots_value) != JSONArray) { - TS_RETURN_0(status, TS_PARSE_ERROR, - "knots is not an array") - } - knots_array = json_value_get_array(knots_value); - num_knots = json_array_get_count(knots_array); + /* Read number of knots. */ + knots_value = json_object_get_value(spline_object, "knots"); + if (json_value_get_type(knots_value) != JSONArray) { + TS_RETURN_0(status, TS_PARSE_ERROR, + "knots is not an array") + } + knots_array = json_value_get_array(knots_value); + num_knots = json_array_get_count(knots_array); - /* Create spline. */ - TS_TRY(try, err, status) - TS_CALL(try, err, ts_bspline_new( - len_ctrlp/dim, dim, deg, - TS_CLAMPED, spline, status)) - if (num_knots != ts_bspline_num_knots(spline)) - TS_THROW_2(try, err, status, TS_NUM_KNOTS, - "unexpected num(knots): (%lu) != (%lu)", - (unsigned long) num_knots, - (unsigned long) ts_bspline_num_knots(spline)) + /* Create spline. */ + TS_TRY(try, err, status) + TS_CALL(try, err, ts_bspline_new(len_ctrlp / dim, dim, deg, TS_CLAMPED, spline, status)) + if (num_knots != ts_bspline_num_knots(spline)) + TS_THROW_2(try, err, status, TS_NUM_KNOTS, + "unexpected num(knots): (%lu) != (%lu)", + (unsigned long)num_knots, + (unsigned long)ts_bspline_num_knots(spline)) - /* Set control points. */ - ctrlp = ts_int_bspline_access_ctrlp(spline); - for (i = 0; i < len_ctrlp; i++) { - real_value = json_array_get_value(ctrlp_array, i); - if (json_value_get_type(real_value) != JSONNumber) - TS_THROW_1(try, err, status, TS_PARSE_ERROR, - "control_points: value at index %lu is not a number", - (unsigned long) i) - ctrlp[i] = (tsReal) json_value_get_number(real_value); - } - TS_CALL(try, err, ts_bspline_set_control_points( - spline, ctrlp, status)) + /* Set control points. */ + ctrlp = ts_int_bspline_access_ctrlp(spline); + for (i = 0; i < len_ctrlp; i++) { + real_value = json_array_get_value(ctrlp_array, i); + if (json_value_get_type(real_value) != JSONNumber) + TS_THROW_1(try, err, status, TS_PARSE_ERROR, + "control_points: value at index %lu is not a number", + (unsigned long)i) + ctrlp[i] = (tsReal)json_value_get_number(real_value); + } + TS_CALL(try, err, ts_bspline_set_control_points(spline, ctrlp, status)) - /* Set knots. */ - knots = ts_int_bspline_access_knots(spline); - for (i = 0; i < num_knots; i++) { - real_value = json_array_get_value(knots_array, i); - if (json_value_get_type(real_value) != JSONNumber) - TS_THROW_1(try, err, status, TS_PARSE_ERROR, - "knots: value at index %lu is not a number", - (unsigned long) i) - knots[i] = (tsReal) json_value_get_number(real_value); - } - TS_CALL(try, err, ts_bspline_set_knots( - spline, knots, status)) - TS_CATCH(err) - ts_bspline_free(spline); - TS_END_TRY_RETURN(err) + /* Set knots. */ + knots = ts_int_bspline_access_knots(spline); + for (i = 0; i < num_knots; i++) { + real_value = json_array_get_value(knots_array, i); + if (json_value_get_type(real_value) != JSONNumber) + TS_THROW_1(try, err, status, TS_PARSE_ERROR, + "knots: value at index %lu is not a number", + (unsigned long)i) + knots[i] = (tsReal)json_value_get_number(real_value); + } + TS_CALL(try, err, ts_bspline_set_knots(spline, knots, status)) + TS_CATCH(err) + ts_bspline_free(spline); + TS_END_TRY_RETURN(err) } tsError ts_bspline_to_json(const tsBSpline *spline, char **json, - tsStatus *status) -{ - tsError err; - JSON_Value *value = NULL; - *json = NULL; - TS_CALL_ROE(err, ts_int_bspline_to_json(spline, &value, status)) - *json = json_serialize_to_string_pretty(value); - json_value_free(value); - if (!*json) - TS_RETURN_0(status, TS_MALLOC, "out of memory") - TS_RETURN_SUCCESS(status) + tsStatus *status) { + tsError err; + JSON_Value *value = NULL; + *json = NULL; + TS_CALL_ROE(err, ts_int_bspline_to_json(spline, &value, status)) + *json = json_serialize_to_string_pretty(value); + json_value_free(value); + if (!*json) + TS_RETURN_0(status, TS_MALLOC, "out of memory") + TS_RETURN_SUCCESS(status) } tsError ts_bspline_parse_json(const char *json, tsBSpline *spline, - tsStatus *status) -{ - tsError err; - JSON_Value *value = NULL; - ts_int_bspline_init(spline); - TS_TRY(try, err, status) - value = json_parse_string(json); - if (!value) { - TS_RETURN_0(status, TS_PARSE_ERROR, - "invalid json input") - } - TS_CALL(try, err, ts_int_bspline_parse_json( - value, spline, status)) - TS_FINALLY - if (value) - json_value_free(value); - TS_END_TRY_RETURN(err) + tsStatus *status) { + tsError err; + JSON_Value *value = NULL; + ts_int_bspline_init(spline); + TS_TRY(try, err, status) + value = json_parse_string(json); + if (!value) { + TS_RETURN_0(status, TS_PARSE_ERROR, + "invalid json input") + } + TS_CALL(try, err, ts_int_bspline_parse_json(value, spline, status)) + TS_FINALLY + if (value) + json_value_free(value); + TS_END_TRY_RETURN(err) } tsError ts_bspline_save(const tsBSpline *spline, const char *path, - tsStatus *status) -{ - tsError err; - JSON_Status json_status; - JSON_Value *value = NULL; - TS_CALL_ROE(err, ts_int_bspline_to_json(spline, &value, status)) - json_status = json_serialize_to_file_pretty(value, path); - json_value_free(value); - if (json_status != JSONSuccess) - TS_RETURN_0(status, TS_IO_ERROR, "unexpected io error") - TS_RETURN_SUCCESS(status) + tsStatus *status) { + tsError err; + JSON_Status json_status; + JSON_Value *value = NULL; + TS_CALL_ROE(err, ts_int_bspline_to_json(spline, &value, status)) + json_status = json_serialize_to_file_pretty(value, path); + json_value_free(value); + if (json_status != JSONSuccess) + TS_RETURN_0(status, TS_IO_ERROR, "unexpected io error") + TS_RETURN_SUCCESS(status) } tsError ts_bspline_load(const char *path, tsBSpline *spline, - tsStatus *status) -{ - tsError err; - FILE *file = NULL; - JSON_Value *value = NULL; - ts_int_bspline_init(spline); - TS_TRY(try, err, status) - file = fopen(path, "r"); - if (!file) { - TS_THROW_0(try, err, status, TS_IO_ERROR, - "unable to open file") - } - value = json_parse_file(path); - if (!value) { - TS_RETURN_0(status, TS_PARSE_ERROR, - "invalid json input") - } - TS_CALL(try, err, ts_int_bspline_parse_json( - value, spline, status)) - TS_FINALLY - if (file) - fclose(file); - if (value) - json_value_free(value); - TS_CATCH(err) - ts_bspline_free(spline); - TS_END_TRY_RETURN(err) + tsStatus *status) { + tsError err; + FILE *file = NULL; + JSON_Value *value = NULL; + ts_int_bspline_init(spline); + TS_TRY(try, err, status) + file = fopen(path, "r"); + if (!file) { + TS_THROW_0(try, err, status, TS_IO_ERROR, + "unable to open file") + } + value = json_parse_file(path); + if (!value) { + TS_RETURN_0(status, TS_PARSE_ERROR, + "invalid json input") + } + TS_CALL(try, err, ts_int_bspline_parse_json(value, spline, status)) + TS_FINALLY + if (file) + fclose(file); + if (value) + json_value_free(value); + TS_CATCH(err) + ts_bspline_free(spline); + TS_END_TRY_RETURN(err) } /*! @} */ - - /*! @name Vector Math * @{ */ -void -ts_vec2_init(tsReal *out, - tsReal x, - tsReal y) -{ - out[0] = x; - out[1] = y; +void ts_vec2_init(tsReal *out, + tsReal x, + tsReal y) { + out[0] = x; + out[1] = y; } -void -ts_vec3_init(tsReal *out, - tsReal x, - tsReal y, - tsReal z) -{ - out[0] = x; - out[1] = y; - out[2] = z; +void ts_vec3_init(tsReal *out, + tsReal x, + tsReal y, + tsReal z) { + out[0] = x; + out[1] = y; + out[2] = z; } -void -ts_vec4_init(tsReal *out, - tsReal x, - tsReal y, - tsReal z, - tsReal w) -{ - out[0] = x; - out[1] = y; - out[2] = z; - out[3] = w; +void ts_vec4_init(tsReal *out, + tsReal x, + tsReal y, + tsReal z, + tsReal w) { + out[0] = x; + out[1] = y; + out[2] = z; + out[3] = w; } -void -ts_vec2_set(tsReal *out, - const tsReal *x, - size_t dim) -{ - const size_t n = dim > 2 ? 2 : dim; - memmove(out, x, n * sizeof(tsReal)); - if (dim < 2) - ts_arr_fill(out + dim, 2 - dim, (tsReal) 0.0); +void ts_vec2_set(tsReal *out, + const tsReal *x, + size_t dim) { + const size_t n = dim > 2 ? 2 : dim; + memmove(out, x, n * sizeof(tsReal)); + if (dim < 2) + ts_arr_fill(out + dim, 2 - dim, (tsReal)0.0); } -void -ts_vec3_set(tsReal *out, - const tsReal *x, - size_t dim) -{ - const size_t n = dim > 3 ? 3 : dim; - memmove(out, x, n * sizeof(tsReal)); - if (dim < 3) - ts_arr_fill(out + dim, 3 - dim, (tsReal) 0.0); +void ts_vec3_set(tsReal *out, + const tsReal *x, + size_t dim) { + const size_t n = dim > 3 ? 3 : dim; + memmove(out, x, n * sizeof(tsReal)); + if (dim < 3) + ts_arr_fill(out + dim, 3 - dim, (tsReal)0.0); } -void -ts_vec4_set(tsReal *out, - const tsReal *x, - size_t dim) -{ - const size_t n = dim > 4 ? 4 : dim; - memmove(out, x, n * sizeof(tsReal)); - if (dim < 4) - ts_arr_fill(out + dim, 4 - dim, (tsReal) 0.0); +void ts_vec4_set(tsReal *out, + const tsReal *x, + size_t dim) { + const size_t n = dim > 4 ? 4 : dim; + memmove(out, x, n * sizeof(tsReal)); + if (dim < 4) + ts_arr_fill(out + dim, 4 - dim, (tsReal)0.0); } -void -ts_vec_add(const tsReal *x, - const tsReal *y, - size_t dim, - tsReal *out) -{ - size_t i; - for (i = 0; i < dim; i++) - out[i] = x[i] + y[i]; +void ts_vec_add(const tsReal *x, + const tsReal *y, + size_t dim, + tsReal *out) { + size_t i; + for (i = 0; i < dim; i++) + out[i] = x[i] + y[i]; } -void -ts_vec_sub(const tsReal *x, - const tsReal *y, - size_t dim, - tsReal *out) -{ - size_t i; - if (x == y) { - /* More stable version. */ - ts_arr_fill(out, dim, (tsReal) 0.0); - return; - } - for (i = 0; i < dim; i++) - out[i] = x[i] - y[i]; +void ts_vec_sub(const tsReal *x, + const tsReal *y, + size_t dim, + tsReal *out) { + size_t i; + if (x == y) { + /* More stable version. */ + ts_arr_fill(out, dim, (tsReal)0.0); + return; + } + for (i = 0; i < dim; i++) + out[i] = x[i] - y[i]; } tsReal ts_vec_dot(const tsReal *x, const tsReal *y, - size_t dim) -{ - size_t i; - tsReal dot = 0; - for (i = 0; i < dim; i++) - dot += x[i] * y[i]; - return dot; + size_t dim) { + size_t i; + tsReal dot = 0; + for (i = 0; i < dim; i++) + dot += x[i] * y[i]; + return dot; } tsReal ts_vec_angle(const tsReal *x, const tsReal *y, tsReal *buf, - size_t dim) -{ - const tsReal *x_norm, *y_norm; - if (buf) { - ts_vec_norm(x, dim, buf); - ts_vec_norm(y, dim, buf + dim); - x_norm = buf; - y_norm = buf + dim; - } else { - x_norm = x; - y_norm = y; - } - return (tsReal) ( - /* Use doubles as long as possible. */ - acos(ts_vec_dot(x_norm, - y_norm, - dim)) - * (180.0 / TS_PI) /* radiant to degree */ - ); + size_t dim) { + const tsReal *x_norm, *y_norm; + if (buf) { + ts_vec_norm(x, dim, buf); + ts_vec_norm(y, dim, buf + dim); + x_norm = buf; + y_norm = buf + dim; + } else { + x_norm = x; + y_norm = y; + } + return (tsReal)( + /* Use doubles as long as possible. */ + acos(ts_vec_dot(x_norm, + y_norm, + dim)) * + (180.0 / TS_PI) /* radiant to degree */ + ); } -void -ts_vec3_cross(const tsReal *x, - const tsReal *y, - tsReal *out) -{ - tsReal a, b, c; - a = x[1] * y[2] - x[2] * y[1]; - b = x[2] * y[0] - x[0] * y[2]; - c = x[0] * y[1] - x[1] * y[0]; - out[0] = a; - out[1] = b; - out[2] = c; +void ts_vec3_cross(const tsReal *x, + const tsReal *y, + tsReal *out) { + tsReal a, b, c; + a = x[1] * y[2] - x[2] * y[1]; + b = x[2] * y[0] - x[0] * y[2]; + c = x[0] * y[1] - x[1] * y[0]; + out[0] = a; + out[1] = b; + out[2] = c; } -void -ts_vec_norm(const tsReal *x, - size_t dim, - tsReal *out) -{ - size_t i; - const tsReal m = ts_vec_mag(x, dim); - if (m < TS_LENGTH_ZERO) { - ts_arr_fill(out, dim, (tsReal) 0.0); - return; - } - for (i = 0; i < dim; i++) - out[i] = x[i] / m; +void ts_vec_norm(const tsReal *x, + size_t dim, + tsReal *out) { + size_t i; + const tsReal m = ts_vec_mag(x, dim); + if (m < TS_LENGTH_ZERO) { + ts_arr_fill(out, dim, (tsReal)0.0); + return; + } + for (i = 0; i < dim; i++) + out[i] = x[i] / m; } tsReal ts_vec_mag(const tsReal *x, - size_t dim) -{ - size_t i; - tsReal sum = 0; - for (i = 0; i < dim; i++) - sum += (x[i] * x[i]); - return (tsReal) sqrt(sum); + size_t dim) { + size_t i; + tsReal sum = 0; + for (i = 0; i < dim; i++) + sum += (x[i] * x[i]); + return (tsReal)sqrt(sum); } -void -ts_vec_mul(const tsReal *x, - size_t dim, - tsReal val, - tsReal *out) -{ - size_t i; - for (i = 0; i < dim; i++) - out[i] = x[i] * val; +void ts_vec_mul(const tsReal *x, + size_t dim, + tsReal val, + tsReal *out) { + size_t i; + for (i = 0; i < dim; i++) + out[i] = x[i] * val; } /*! @} */ - - /*! @name Utility Functions * * @{ */ int ts_knots_equal(tsReal x, - tsReal y) -{ - return fabs(x-y) < TS_KNOT_EPSILON ? 1 : 0; + tsReal y) { + return fabs(x - y) < TS_KNOT_EPSILON ? 1 : 0; } void ts_arr_fill(tsReal *arr, size_t num, - tsReal val) -{ - size_t i; - for (i = 0; i < num; i++) - arr[i] = val; + tsReal val) { + size_t i; + for (i = 0; i < num; i++) + arr[i] = val; } tsReal ts_distance(const tsReal *x, const tsReal *y, - size_t dim) -{ - size_t i; - tsReal sum = 0; - for (i = 0; i < dim; i++) - sum += (x[i] - y[i]) * (x[i] - y[i]); - return (tsReal) sqrt(sum); + size_t dim) { + size_t i; + tsReal sum = 0; + for (i = 0; i < dim; i++) + sum += (x[i] - y[i]) * (x[i] - y[i]); + return (tsReal)sqrt(sum); } /*! @} */ diff --git a/source/engine/tinyspline.h b/source/engine/tinyspline.h index 4452b34..44c94ea 100644 --- a/source/engine/tinyspline.h +++ b/source/engine/tinyspline.h @@ -21,7 +21,7 @@ #elif defined(SWIG) #define TS_DEPRECATED #else -#warning "WARNING: TS_DEPRECATED is not supported by the compiler" +#warning "WARNING: TS_DEPRECATED is not supported by compiler" #define TS_DEPRECATED #endif /*! @} */ diff --git a/source/engine/transform.c b/source/engine/transform.c index e614083..b55f8f8 100644 --- a/source/engine/transform.c +++ b/source/engine/transform.c @@ -1,53 +1,50 @@ #include "transform.h" #include -struct mTransform MakeTransform(mfloat_t pos[3], mfloat_t rotation[4], - float scale) +struct mTransform MakeTransform(HMM_Vec3 pos, HMM_Quat rotation, float scale) { - struct mTransform newT; - memcpy(newT.position, pos, sizeof(*pos)); - memcpy(newT.rotation, rotation, sizeof(*rotation)); - newT.scale = scale; - return newT; + struct mTransform newT = { + .pos = pos, + .rotation = rotation, + .scale = scale + }; + return newT; } -mfloat_t *trans_forward(mfloat_t * res, - const struct mTransform *const trans) +HMM_Vec3 trans_forward(const struct mTransform *const trans) { - // YughLog(0, SDL_LOG_PRIORITY_WARN, "Rotation is %f", trans->rotation[0]); - return vec3_rotate_quat(res, FORWARD, trans->rotation); + return HMM_QVRot(vFWD, trans->rotation); } -mfloat_t *trans_back(mfloat_t * res, const struct mTransform *trans) +HMM_Vec3 trans_back(const struct mTransform *trans) { - return vec3_rotate_quat(res, BACK, trans->rotation); + return HMM_QVRot(vBKWD, trans->rotation); } -mfloat_t *trans_up(mfloat_t * res, const struct mTransform *trans) +HMM_Vec3 trans_up(const struct mTransform *trans) { - return vec3_rotate_quat(res, UP, trans->rotation); + return HMM_QVRot(vUP, trans->rotation); } -mfloat_t *trans_down(mfloat_t * res, const struct mTransform *trans) +HMM_Vec3 trans_down(const struct mTransform *trans) { - return vec3_rotate_quat(res, DOWN, trans->rotation); + return HMM_QVRot(vDOWN, trans->rotation); } -mfloat_t *trans_right(mfloat_t * res, const struct mTransform *trans) +HMM_Vec3 trans_right(const struct mTransform *trans) { - return vec3_rotate_quat(res, RIGHT, trans->rotation); + return HMM_QVRot(vRIGHT, trans->rotation); } -mfloat_t *trans_left(mfloat_t * res, const struct mTransform *trans) +HMM_Vec3 trans_left(const struct mTransform *trans) { - return vec3_rotate_quat(res, LEFT, trans->rotation); + return HMM_QVRot(vLEFT, trans->rotation); } #include "nuke.h" -void trans_drawgui(struct mTransform *T) -{ - nk_property_float3(ctx, "Position", -1000.f, T->position, 1000.f, 1.f, 1.f); - nk_property_float3(ctx, "Rotation", 0.f, T->rotation, 360.f, 1.f, 0.1f); - nk_property_float(ctx, "Scale", 0.f, &T->scale, 1000.f, 0.1f, 0.1f); +void trans_drawgui(struct mTransform *T) { + nuke_property_float3("Position", -1000.f, T->pos.Elements, 1000.f, 1.f, 1.f); + nuke_property_float3("Rotation", 0.f, T->rotation.Elements, 360.f, 1.f, 0.1f); + nuke_property_float("Scale", 0.f, &T->scale, 1000.f, 0.1f, 0.1f); } diff --git a/source/engine/transform.h b/source/engine/transform.h index 8845fea..0e4ff4a 100644 --- a/source/engine/transform.h +++ b/source/engine/transform.h @@ -1,25 +1,23 @@ #ifndef TRANSFORM_H #define TRANSFORM_H -#include "mathc.h" +#include "HandmadeMath.h" struct mTransform { - mfloat_t position[3]; - mfloat_t rotation[4]; + HMM_Vec3 pos; + HMM_Quat rotation; float scale; }; -struct mTransform MakeTransform(mfloat_t pos[3], mfloat_t rotation[3], - float scale); +struct mTransform MakeTransform(HMM_Vec3 pos, HMM_Quat rotation, float scale); -mfloat_t *trans_forward(mfloat_t * res, - const struct mTransform *const trans); -mfloat_t *trans_back(mfloat_t * res, const struct mTransform *trans); -mfloat_t *trans_up(mfloat_t * res, const struct mTransform *trans); -mfloat_t *trans_down(mfloat_t * res, const struct mTransform *trans); -mfloat_t *trans_right(mfloat_t * res, const struct mTransform *trans); -mfloat_t *trans_left(mfloat_t * res, const struct mTransform *trans); +HMM_Vec3 trans_forward(const struct mTransform *const trans); +HMM_Vec3 trans_back(const struct mTransform *trans); +HMM_Vec3 trans_up(const struct mTransform *trans); +HMM_Vec3 trans_down(const struct mTransform *trans); +HMM_Vec3 trans_right(const struct mTransform *trans); +HMM_Vec3 trans_left(const struct mTransform *trans); void trans_drawgui(struct mTransform *T); //extern Serialize *make_transform(); diff --git a/source/engine/window.c b/source/engine/window.c index bb6df15..26a4ed7 100644 --- a/source/engine/window.c +++ b/source/engine/window.c @@ -1,12 +1,15 @@ - #include "window.h" -#include -#include "texture.h" -#include "log.h" -#include -#include +#include "window.h" #include "input.h" -#include "script.h" +#include "log.h" #include "nuke.h" +#include "script.h" +#include "texture.h" +#include +#include +#include +#include "ffi.h" + +#include "openglrender.h" #include "stb_ds.h" @@ -16,284 +19,252 @@ static struct window *windows = NULL; struct Texture *icon = NULL; -int is_win(struct window *s, GLFWwindow *w) -{ - return s->window == w; +int is_win(struct window *s, GLFWwindow *w) { + return s->window == w; } -void window_size_callback(GLFWwindow *w) -{ - +void window_size_callback(GLFWwindow *w, int width, int height) { + render_winsize(); } -struct window *winfind(GLFWwindow *w) -{ - for (int i = 0; i < arrlen(windows); i++) { - if (windows[i].window == w) - return &windows[i]; - } +struct window *winfind(GLFWwindow *w) { + for (int i = 0; i < arrlen(windows); i++) { + if (windows[i].window == w) + return &windows[i]; + } + return NULL; +} + +void window_iconify_callback(GLFWwindow *w, int iconified) { + struct window *win = winfind(w); + win->iconified = iconified; +} + +void window_focus_callback(GLFWwindow *w, int focused) { + struct window *win = winfind(w); + win->mouseFocus = focused; +} + +void window_maximize_callback(GLFWwindow *w, int maximized) { + struct window *win = winfind(w); + win->minimized = !maximized; +} + +void window_framebuffer_size_cb(GLFWwindow *w, int width, int height) { + struct window *win = mainwin; + win->width = width; + win->height = height; + window_makecurrent(win); + win->render = 1; + + JSValue vals[2] = { int2js(width), int2js(height) }; + send_signal("window_resize", 2, vals); +} + +void window_close_callback(GLFWwindow *w) { + quit(); +} + +struct window *MakeSDLWindow(const char *name, int width, int height, uint32_t flags) { + if (arrcap(windows) == 0) + arrsetcap(windows, 5); + + if (mainwin != NULL) + return mainwin; + + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_SAMPLES,1); + + struct window w = { + .width = width, + .height = height, + .id = arrlen(windows), + .window = glfwCreateWindow(width, height, name, NULL, mainwin)}; + + if (!w.window) { + YughError("Couldn't make GLFW window\n", 1); return NULL; + } + + mainwin = malloc(sizeof(struct window)); + *mainwin = w; + + glfwMakeContextCurrent(w.window); + YughInfo("Loaded OpenGL %d.%d", 3, 3); + glfwSwapInterval(1); + + // Set callbacks + glfwSetWindowCloseCallback(w.window, window_close_callback); + glfwSetWindowSizeCallback(w.window, window_size_callback); + glfwSetFramebufferSizeCallback(w.window, window_framebuffer_size_cb); + glfwSetWindowFocusCallback(w.window, window_focus_callback); + glfwSetKeyCallback(w.window, win_key_callback); + + arrput(windows, w); + + if (arrlen(windows) == 1) + mainwin = &windows[0]; + + window_framebuffer_size_cb(mainwin, width, height); + + return &arrlast(windows); } -void window_iconify_callback(GLFWwindow *w, int iconified) -{ - struct window *win = winfind(w); - win->iconified = iconified; +void window_set_icon(const char *png) { + icon = texture_pullfromfile(png); + window_seticon(mainwin, icon); } -void window_focus_callback(GLFWwindow *w, int focused) -{ - struct window *win = winfind(w); - } - -void window_maximize_callback(GLFWwindow *w, int maximized) -{ - struct window *win = winfind(w); - win->minimized = !maximized; -} - -void window_framebuffer_size_cb(GLFWwindow *w, int width, int height) -{ - struct window *win = winfind(w); - win->width = width; - win->height = height; - window_makecurrent(win); - win->render = 1; -} - -void window_close_callback(GLFWwindow *w) -{ - quit = 1; -} - - - -struct window *MakeSDLWindow(const char *name, int width, int height, uint32_t flags) -{ - if (arrcap(windows) == 0) - arrsetcap(windows, 5); - - GLFWwindow *sharewin = mainwin == NULL ? NULL : mainwin->window; - - struct window w = { - .width = width, - .height = height, - .id = arrlen(windows), - .window = glfwCreateWindow(width, height, name, NULL, sharewin) }; - - - if (!w.window) { - YughError("Couldn't make GLFW window\n", 1); - return NULL; - } - - glfwMakeContextCurrent(w.window); - int version = gladLoadGL(glfwGetProcAddress); - if (!version) { - YughError("Failed to initialize OpenGL context."); - exit(1); - } - YughInfo("Loaded OpenGL %d.%d", GLAD_VERSION_MAJOR(version), GLAD_VERSION_MINOR(version)); - glfwSwapInterval(1); - - // Set callbacks - glfwSetWindowCloseCallback(w.window, window_close_callback); - glfwSetWindowSizeCallback(w.window, window_size_callback); - glfwSetFramebufferSizeCallback(w.window, window_framebuffer_size_cb); - glfwSetWindowFocusCallback(w.window, window_focus_callback); - glfwSetKeyCallback(w.window, win_key_callback); - - nuke_init(&w); - - arrput(windows, w); - - if (arrlen(windows) == 1) - mainwin = &windows[0]; - - return &arrlast(windows); -} - -void window_set_icon(const char *png) -{ - icon = texture_pullfromfile(png); -} - -void window_destroy(struct window *w) -{ - glfwDestroyWindow(w->window); - arrdelswap(windows, w->id); +void window_destroy(struct window *w) { + glfwDestroyWindow(w->window); + arrdelswap(windows, w->id); } struct window *window_i(int index) { - return &windows[index]; + return &windows[index]; } -void window_handle_event(struct window *w) -{ -/* - if (e->type == SDL_WINDOWEVENT && e->window.windowID == w->id) { // TODO: Check ptr direct? - switch (e->window.event) { - case SDL_WINDOWEVENT_SHOWN: - YughLog(0, SDL_LOG_PRIORITY_INFO, "Showed window %d.", w->id); - w->shown = true; - break; +void window_handle_event(struct window *w) { + /* + if (e->type == SDL_WINDOWEVENT && e->window.windowID == w->id) { // TODO: Check ptr direct? + switch (e->window.event) { + case SDL_WINDOWEVENT_SHOWN: + YughLog(0, SDL_LOG_PRIORITY_INFO, "Showed window %d.", w->id); + w->shown = true; + break; - case SDL_WINDOWEVENT_HIDDEN: - w->shown = false; - YughLog(0, SDL_LOG_PRIORITY_INFO, "Hid window %d.", w->id); - break; + case SDL_WINDOWEVENT_HIDDEN: + w->shown = false; + YughLog(0, SDL_LOG_PRIORITY_INFO, "Hid window %d.", w->id); + break; - case SDL_WINDOWEVENT_SIZE_CHANGED: + case SDL_WINDOWEVENT_SIZE_CHANGED: - w->width = e->window.data1; - w->height = e->window.data2; - YughLog(0, SDL_LOG_PRIORITY_INFO, - "Changed size of window %d: width %d, height %d.", - w->id, w->width, w->height); - window_makecurrent(w); - w.projection = - glm::ortho(0.f, (float) width, 0.f, (float) height, -1.f, - 1.f); - w->render = true; - break; + w->width = e->window.data1; + w->height = e->window.data2; + YughLog(0, SDL_LOG_PRIORITY_INFO, + "Changed size of window %d: width %d, height %d.", + w->id, w->width, w->height); + window_makecurrent(w); + w->render = true; + break; - case SDL_WINDOWEVENT_EXPOSED: - YughLog(0, SDL_LOG_PRIORITY_INFO, "Exposed window %d.", w->id); - w->render = true; - break; + case SDL_WINDOWEVENT_EXPOSED: + YughLog(0, SDL_LOG_PRIORITY_INFO, "Exposed window %d.", w->id); + w->render = true; + break; - case SDL_WINDOWEVENT_ENTER: - YughLog(0, SDL_LOG_PRIORITY_INFO, "Entered window %d.", w->id); - w->mouseFocus = true; - SDL_RaiseWindow(w->window); - break; + case SDL_WINDOWEVENT_ENTER: + YughLog(0, SDL_LOG_PRIORITY_INFO, "Entered window %d.", w->id); + w->mouseFocus = true; + SDL_RaiseWindow(w->window); + break; - case SDL_WINDOWEVENT_LEAVE: - YughLog(0, SDL_LOG_PRIORITY_INFO, "Left window %d.", w->id); - w->mouseFocus = false; - break; + case SDL_WINDOWEVENT_LEAVE: + YughLog(0, SDL_LOG_PRIORITY_INFO, "Left window %d.", w->id); + w->mouseFocus = false; + break; - case SDL_WINDOWEVENT_FOCUS_LOST: - YughLog(0, SDL_LOG_PRIORITY_INFO, - "Lost focus on window %d.", w->id); - w->keyboardFocus = false; - break; + case SDL_WINDOWEVENT_FOCUS_LOST: + YughLog(0, SDL_LOG_PRIORITY_INFO, + "Lost focus on window %d.", w->id); + w->keyboardFocus = false; + break; - case SDL_WINDOWEVENT_FOCUS_GAINED: - YughLog(0, SDL_LOG_PRIORITY_INFO, - "Gained focus on window %d.", w->id); - w->keyboardFocus = true; - break; + case SDL_WINDOWEVENT_FOCUS_GAINED: + YughLog(0, SDL_LOG_PRIORITY_INFO, + "Gained focus on window %d.", w->id); + w->keyboardFocus = true; + break; - case SDL_WINDOWEVENT_MINIMIZED: - YughLog(0, SDL_LOG_PRIORITY_INFO, - "Minimized window %d.", w->id); - w->minimized = true; - break; + case SDL_WINDOWEVENT_MINIMIZED: + YughLog(0, SDL_LOG_PRIORITY_INFO, + "Minimized window %d.", w->id); + w->minimized = true; + break; - case SDL_WINDOWEVENT_MAXIMIZED: - YughLog(0, SDL_LOG_PRIORITY_INFO, - "Maximized window %d.", w->id); - w->minimized = false; - break; + case SDL_WINDOWEVENT_MAXIMIZED: + YughLog(0, SDL_LOG_PRIORITY_INFO, + "Maximized window %d.", w->id); + w->minimized = false; + break; - case SDL_WINDOWEVENT_RESTORED: - YughLog(0, SDL_LOG_PRIORITY_INFO, - "Restored window %d.", w->id); - w->minimized = false; - break; + case SDL_WINDOWEVENT_RESTORED: + YughLog(0, SDL_LOG_PRIORITY_INFO, + "Restored window %d.", w->id); + w->minimized = false; + break; - case SDL_WINDOWEVENT_CLOSE: - YughLog(0, SDL_LOG_PRIORITY_INFO, "Closed window %d.", w->id); - break; - } - } -*/ + case SDL_WINDOWEVENT_CLOSE: + YughLog(0, SDL_LOG_PRIORITY_INFO, "Closed window %d.", w->id); + break; + } + } + */ } -void window_all_handle_events() -{ - arrwalk(windows, window_handle_event); +void window_all_handle_events() { + for (int i = 0; i < arrlen(windows); i++) + window_handle_event(&windows[i]); } -void window_makefullscreen(struct window *w) -{ - if (!w->fullscreen) - window_togglefullscreen(w); +void window_makefullscreen(struct window *w) { + if (!w->fullscreen) + window_togglefullscreen(w); } -void window_unfullscreen(struct window *w) -{ - if (w->fullscreen) - window_togglefullscreen(w); +void window_unfullscreen(struct window *w) { + if (w->fullscreen) + window_togglefullscreen(w); } -void window_togglefullscreen(struct window *w) -{ - w->fullscreen = !w->fullscreen; - - if (w->fullscreen) { - glfwMaximizeWindow(w->window); - } else { - glfwRestoreWindow(w->window); - } +void window_togglefullscreen(struct window *w) { + w->fullscreen = !w->fullscreen; + if (w->fullscreen) { + glfwMaximizeWindow(w->window); + } else { + glfwRestoreWindow(w->window); + } } -void window_makecurrent(struct window *w) -{ - - if (w->window != glfwGetCurrentContext()) - glfwMakeContextCurrent(w->window); - glViewport(0, 0, w->width, w->height); +void window_makecurrent(struct window *w) { + if (w->window != glfwGetCurrentContext()) + glfwMakeContextCurrent(w->window); + + glViewport(0, 0, w->width, w->height); } - - -void window_swap(struct window *w) -{ - glfwSwapBuffers(w->window); +void window_swap(struct window *w) { + glfwSwapBuffers(w->window); } -void window_seticon(struct window *w, struct Texture *icon) -{ - - static GLFWimage images[1]; - images[0].width = icon->width; - images[0].height = icon->height; - images[0].pixels = icon->data; - glfwSetWindowIcon(w->window, 1, images); +void window_seticon(struct window *w, struct Texture *icon) { + static GLFWimage images[1]; + images[0].width = icon->width; + images[0].height = icon->height; + images[0].pixels = icon->data; + glfwSetWindowIcon(w->window, 1, images); } -int window_hasfocus(struct window *w) -{ - return glfwGetWindowAttrib(w->window, GLFW_FOCUSED); +int window_hasfocus(struct window *w) { + return glfwGetWindowAttrib(w->window, GLFW_FOCUSED); } void window_render(struct window *w) { - window_makecurrent(w); - openglRender(w); - - if (script_has_sym(w->nuke_cb)) { - nuke_start(); - script_call_sym(w->nuke_cb); - nk_end(ctx); - nuke_end(); - } else if (w->nuke_gui != NULL) { - nuke_start(); - w->nuke_gui(); - nuke_end(); - } - - - window_swap(w); + window_makecurrent(w); + openglRender(w); + window_swap(w); } void window_renderall() { - //arrwalk(windows, window_render); - for (int i = 0; i < arrlen(windows); i++) - window_render(&windows[i]); + // arrwalk(windows, window_render); + for (int i = 0; i < arrlen(windows); i++) + window_render(&windows[i]); } diff --git a/source/engine/window.h b/source/engine/window.h index d453b94..b07859c 100644 --- a/source/engine/window.h +++ b/source/engine/window.h @@ -5,8 +5,6 @@ #include #include -#include "mruby.h" - struct window { GLFWwindow *window; int id; @@ -20,9 +18,6 @@ struct window { bool minimized; bool iconified; bool shown; - float projection[16]; - mrb_sym nuke_cb; - mrb_sym gui_cb; void (*nuke_gui)(); }; diff --git a/source/engine/yugine.c b/source/engine/yugine.c index 5c7617b..7a0cc0e 100644 --- a/source/engine/yugine.c +++ b/source/engine/yugine.c @@ -1,15 +1,29 @@ -#include "render.h" +#include "yugine.h" + #include "camera.h" -#include "window.h" #include "engine.h" +#include "font.h" +#include "gameobject.h" #include "input.h" #include "openglrender.h" +#include "window.h" + +#define MINIAUDIO_IMPLEMENTATION +#include "miniaudio.h" + +#include "timer.h" + +#include "quickjs/quickjs.h" + +#include "ffi.h" #include "script.h" -#include "editor.h" + #include "log.h" #include #include +#include "2dphysics.h" + #ifdef __linux__ #include #endif @@ -19,146 +33,278 @@ #include "string.h" +#define SOKOL_TRACE_HOOKS +#define SOKOL_GFX_IMPL +#define SOKOL_GLES3 +#include "sokol/sokol_gfx.h" + int physOn = 0; double renderlag = 0; double physlag = 0; double updatelag = 0; -double renderMS = 1/60.f; -double physMS = 1/120.f; -double updateMS = 1/60.f; +double renderMS = 1 / 165.f; +double physMS = 1 / 165.f; +double updateMS = 1 / 165.f; -static int ed = 1; +static int sim_play = 0; +double lastTick = 0.0; +static int phys_step = 0; + +static float timescale = 1.f; + +#define FPSBUF 10 +static double framems[FPSBUF]; +int framei = 0; +int fps; + +#define SIM_STOP 0 +#define SIM_PLAY 1 +#define SIM_PAUSE 2 +#define SIM_STEP 3 + +#ifdef __TINYC__ +int backtrace(void **buffer, int size) { + extern uint64_t *__libc_stack_end; + uint64_t **p, *bp, *frame; + asm ("mov %%rbp, %0;" : "=r" (bp)); + p = (uint64_t**) bp; + int i = 0; + while (i < size) { + frame = p[0]; + if (frame < bp || frame > __libc_stack_end) { + return i; + } + buffer[i++] = p[1]; + p = (uint64_t**) frame; + } + return i; +} +#endif + + +void print_stacktrace() { +#ifdef __linux__ + void *ents[512]; + size_t size = backtrace(ents, 512); + + YughCritical("====================BACKTRACE===================="); + char **stackstr = backtrace_symbols(ents, size); + + YughCritical("Stack size is %d.", size); + + for (int i = 0; i < size; i++) + YughCritical(stackstr[i]); + + js_stacktrace(); +#endif +} void seghandle(int sig) { - void *ents[512]; - size_t size; +#ifdef __linux__ + if (strsignal(sig)) + YughCritical("CRASH! Signal: %s.", strsignal(sig)); - size = backtrace(ents, 512); - if (strsignal(sig)) { - YughCritical("CRASH! Signal: %s.", strsignal(sig)); - } - else { - YughCritical("CRASH! Signal: %d.", sig); - } + print_stacktrace(); - YughCritical("====================BACKTRACE===================="); - char **stackstr = backtrace_symbols(ents, size); + exit(1); +#endif +} - for (int i = 0; i < size; i++) { - YughCritical(stackstr[i]); - } +const char *engine_info() +{ + char str[100]; + snprintf(str, 100, "Yugine version %s, %s build.\nCopyright 2022-2023 odplot productions LLC.\n", VER, INFO); + return str; +} - exit(1); +void sg_logging(const char *tag, uint32_t lvl, uint32_t id, const char *msg, uint32_t line, const char *file, void *data) { + mYughLog(0, 1, line, file, "tag: %s, msg: %s", tag, msg); } int main(int argc, char **args) { - for (int i = 1; i < argc; i++) { - if (args[i][0] == '-') { - switch(args[i][1]) { - case 'p': - if (strncmp(&args[i][2], "lay", 3)) - continue; + int logout = 1; - ed = 0; - break; + script_startup(); - case 'l': - if (i+1 < argc && args[i+1][0] != '-') { - log_setfile(args[i+1]); - i++; - continue; - } - else { - YughError("Expected a file for command line arg '-l'."); - exit(1); - } + logout = 0; - case 'v': - printf("Yugine version %s, %s build.\n", VER, INFO); - printf("Copyright 2022 odplot productions LLC.\n"); - exit(1); - break; - - } - } - } - - if (DBG) { - time_t now = time(NULL); - char fname[100]; - snprintf(fname, 100, "yugine-%d.log", now); - log_setfile(fname); - } - - YughInfo("Starting yugine version %s.", VER); - - signal(SIGSEGV, seghandle); - - FILE *sysinfo = NULL; - sysinfo = popen("uname -a", "r"); - if (!sysinfo) { - YughWarn("Failed to get sys info."); - } else { - log_cat(sysinfo); - pclose(sysinfo); - } - - FILE *gameinfo = NULL; - gameinfo = fopen("game.info", "w"); - fprintf(gameinfo, "Yugine v. %s, sys %s.", VER, INFO); - fclose(gameinfo); - - engine_init(); - - - - const GLFWvidmode *vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor()); - YughInfo("Refresh rate is %d", vidmode->refreshRate); - - renderMS = 1.0/vidmode->refreshRate; - - double framet = fmin(fmin(renderMS,physMS),updateMS); - - script_dofile("scripts/engine.rb"); - script_dofile("config.rb"); - - window_set_icon("icon.png"); - - if (ed) { - editor_init(MakeSDLWindow("Editor", 600, 600, 0)); - } else { - script_dofile("game.rb"); - } - - openglInit(); - - renderMS = 0.033; - - double lastTick; - - while (!quit) { - double elapsed; - elapsed = glfwGetTime() - lastTick; - lastTick = glfwGetTime(); - - //timer_update(lastTick); - - //renderlag += elapsed; - //physlag += elapsed; - - - if (renderlag >= renderMS) { - renderlag -= renderMS; + for (int i = 1; i < argc; i++) { + if (args[i][0] == '-') { + switch (args[i][1]) { + case 'l': + if (i + 1 < argc && args[i + 1][0] != '-') { + log_setfile(args[i + 1]); + i++; + continue; + } else { + YughError("Expected a file for command line arg '-l'."); + exit(1); } - window_renderall(); - input_poll(renderMS- elapsed < 0 ? 0 : renderMS - elapsed); - window_all_handle_events(); + case 'v': + printf(engine_info()); + exit(1); + break; + case 's': + compile_script(args[2]); + exit(0); + case 'm': + logLevel = atoi(args[2]); + break; + + case 'c': + logout = 0; + break; + } + } + } + +#if DBG + if (logout) { + time_t now = time(NULL); + char fname[100]; + snprintf(fname, 100, "yugine-%d.log", now); + log_setfile(fname); + } + + YughInfo("Starting yugine version %s.", VER); + + FILE *sysinfo = NULL; + /* sysinfo = popen("uname -a", "r"); + if (!sysinfo) { + YughWarn("Failed to get sys info."); + } else { + log_cat(sysinfo); + pclose(sysinfo); + }*/ + signal(SIGSEGV, seghandle); + signal(SIGABRT, seghandle); + signal(SIGFPE, seghandle); + signal(SIGBUS, seghandle); + +#endif + + engine_init(); + + const GLFWvidmode *vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor()); + YughInfo("Refresh rate is %d", vidmode->refreshRate); + + renderMS = 1.0 / vidmode->refreshRate; + + sg_setup(&(sg_desc){ + .logger = { + .func = sg_logging, + .user_data = NULL, + }, + + .buffer_pool_size = 1024, + .context.sample_count = 1, + }); + + input_init(); + openglInit(); + + int argsize = 0; + for (int i = 1; i < argc; i++) { + argsize += strlen(args[i]); + if (argc > i+1) argsize++; + } + + char cmdstr[argsize]; + cmdstr[0] = '\0'; + + YughWarn("num is %d", argc); + + for (int i = 0; i < argc; i++) { + strcat(cmdstr, args[i]); + if (argc > i+1) strcat(cmdstr, " "); + } + + script_evalf("cmd_args('%s');", cmdstr); + + while (!want_quit()) { + double elapsed = glfwGetTime() - lastTick; + deltaT = elapsed; + lastTick = glfwGetTime(); + //double wait = fmax(0, renderMS - elapsed); + nuke_input_begin(); + if (sim_playing()) + input_poll(fmax(0, renderMS-elapsed)); + else + input_poll(1000); + window_all_handle_events(); + nuke_input_end(); + framems[framei++] = elapsed; + + if (framei == FPSBUF) framei = 0; + + if (sim_play == SIM_PLAY || sim_play == SIM_STEP) { + timer_update(elapsed * timescale); + physlag += elapsed; + call_updates(elapsed * timescale); + // TODO: Physics is not independent ... +// while (physlag >= physMS) { + phys_step = 1; + physlag -= physMS; + phys2d_update(physMS * timescale); + call_physics(physMS * timescale); + if (sim_play == SIM_STEP) sim_pause(); + phys_step = 0; +// } } - return 0; + renderlag += elapsed; + + if (renderlag >= renderMS) { + renderlag -= renderMS; + window_renderall(); + } + + gameobjects_cleanup(); + } + + return 0; +} + +int frame_fps() { + double fpsms = 0; + for (int i = 0; i < FPSBUF; i++) { + fpsms += framems[i]; + } + + return FPSBUF / fpsms; +} + +int sim_playing() { return sim_play == SIM_PLAY; } +int sim_paused() { return sim_play == SIM_PAUSE; } +int sim_stopped() { return sim_play == SIM_STOP; } + +void sim_start() { + sim_play = SIM_PLAY; +} + +void sim_pause() { + sim_play = SIM_PAUSE; +} + +void sim_stop() { + /* Revert starting state of everything from sim_start */ + sim_play = SIM_STOP; +} + +int phys_stepping() { return phys_step; } + +void sim_step() { + if (sim_paused()) { + YughInfo("Step"); + sim_play = SIM_STEP; + } +} + +void set_timescale(float val) { + timescale = val; } diff --git a/source/engine/yugine.h b/source/engine/yugine.h new file mode 100644 index 0000000..e5af950 --- /dev/null +++ b/source/engine/yugine.h @@ -0,0 +1,21 @@ +#ifndef YUGINE_H +#define YUGINE_H + +int sim_playing(); +int sim_paused(); +void sim_start(); +void sim_pause(); +void sim_stop(); +void sim_step(); +int phys_stepping(); +void set_timescale(float val); +void print_stacktrace(); + +const char *engine_info(); + +int frame_fps(); + +extern double lastTick; + + +#endif diff --git a/source/portaudio/bindings/java/scripts/make_header.bat b/source/portaudio/bindings/java/scripts/make_header.bat deleted file mode 100644 index 14fa280..0000000 --- a/source/portaudio/bindings/java/scripts/make_header.bat +++ /dev/null @@ -1,4 +0,0 @@ -REM Generate the JNI header file from the Java code for JPortAudio -REM by Phil Burk - -javah -classpath ../jportaudio/bin -d ../c/src com.portaudio.PortAudio com.portaudio.BlockingStream diff --git a/source/portaudio/cmake_support/template_portaudio.def b/source/portaudio/cmake_support/template_portaudio.def deleted file mode 100644 index 768716d..0000000 --- a/source/portaudio/cmake_support/template_portaudio.def +++ /dev/null @@ -1,61 +0,0 @@ -; $Id: $ -; -; !!! @GENERATED_MESSAGE@ !!! -EXPORTS - -; -Pa_GetVersion @1 -Pa_GetVersionText @2 -Pa_GetErrorText @3 -Pa_Initialize @4 -Pa_Terminate @5 -Pa_GetHostApiCount @6 -Pa_GetDefaultHostApi @7 -Pa_GetHostApiInfo @8 -Pa_HostApiTypeIdToHostApiIndex @9 -Pa_HostApiDeviceIndexToDeviceIndex @10 -Pa_GetLastHostErrorInfo @11 -Pa_GetDeviceCount @12 -Pa_GetDefaultInputDevice @13 -Pa_GetDefaultOutputDevice @14 -Pa_GetDeviceInfo @15 -Pa_IsFormatSupported @16 -Pa_OpenStream @17 -Pa_OpenDefaultStream @18 -Pa_CloseStream @19 -Pa_SetStreamFinishedCallback @20 -Pa_StartStream @21 -Pa_StopStream @22 -Pa_AbortStream @23 -Pa_IsStreamStopped @24 -Pa_IsStreamActive @25 -Pa_GetStreamInfo @26 -Pa_GetStreamTime @27 -Pa_GetStreamCpuLoad @28 -Pa_ReadStream @29 -Pa_WriteStream @30 -Pa_GetStreamReadAvailable @31 -Pa_GetStreamWriteAvailable @32 -Pa_GetSampleSize @33 -Pa_Sleep @34 -@DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_GetAvailableBufferSizes @50 -@DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_ShowControlPanel @51 -@DEF_EXCLUDE_X86_PLAIN_CONVERTERS@PaUtil_InitializeX86PlainConverters @52 -@DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_GetInputChannelName @53 -@DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_GetOutputChannelName @54 -PaUtil_SetDebugPrintFunction @55 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetAudioClient @56 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_UpdateDeviceList @57 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetDeviceCurrentFormat @58 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetDeviceDefaultFormat @59 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetDeviceMixFormat @60 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetDeviceRole @61 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_ThreadPriorityBoost @62 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_ThreadPriorityRevert @63 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetFramesPerHostBuffer @64 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetJackCount @65 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetJackDescription @66 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_SetStreamStateHandler @68 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapiWinrt_SetDefaultDeviceId @67 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapiWinrt_PopulateDeviceList @69 -@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetIMMDevice @70 diff --git a/source/portaudio/pablio/pablio.def b/source/portaudio/pablio/pablio.def deleted file mode 100644 index 36af739..0000000 --- a/source/portaudio/pablio/pablio.def +++ /dev/null @@ -1,35 +0,0 @@ -LIBRARY PABLIO -DESCRIPTION 'PABLIO Portable Audio Blocking I/O' - -EXPORTS - ; Explicit exports can go here - Pa_Initialize @1 - Pa_Terminate @2 - Pa_GetHostError @3 - Pa_GetErrorText @4 - Pa_CountDevices @5 - Pa_GetDefaultInputDeviceID @6 - Pa_GetDefaultOutputDeviceID @7 - Pa_GetDeviceInfo @8 - Pa_OpenStream @9 - Pa_OpenDefaultStream @10 - Pa_CloseStream @11 - Pa_StartStream @12 - Pa_StopStream @13 - Pa_StreamActive @14 - Pa_StreamTime @15 - Pa_GetCPULoad @16 - Pa_GetMinNumBuffers @17 - Pa_Sleep @18 - - OpenAudioStream @19 - CloseAudioStream @20 - WriteAudioStream @21 - ReadAudioStream @22 - - Pa_GetSampleSize @23 - - ;123456789012345678901234567890123456 - ;000000000111111111122222222223333333 - - diff --git a/source/scripts/base.js b/source/scripts/base.js new file mode 100644 index 0000000..a54565d --- /dev/null +++ b/source/scripts/base.js @@ -0,0 +1,704 @@ +/* Prototypes out an object and extends with values */ +function clone(proto, binds) { + var c = Object.create(proto); + complete_assign(c, binds); + return c; +}; + +/* Prototypes out an object and assigns values */ +function copy(proto, binds) { + var c = Object.create(proto); + Object.assign(c, binds); + return c; +}; + +/* OBJECT DEFININTIONS */ +Object.defineProperty(Object.prototype, 'getOwnPropertyDescriptors', { + value: function() { + var obj = {}; + for (var key in this) { + obj[key] = Object.getOwnPropertyDescriptor(this, key); + } + + return obj; + } +}); + +Object.defineProperty(Object.prototype, 'obscure', { + value: function(name) { + Object.defineProperty(this, name, { enumerable: false }); + } +}); + +Object.defineProperty(Object.prototype, 'hasOwn', { + value: function(x) { return this.hasOwnProperty(x); } +}); + +Object.defineProperty(Object.prototype, 'array', { + value: function() { + var a = []; + for (var key in this) + a.push(this[key]); + + return a; + }, +}); + +Object.defineProperty(Object.prototype, 'defn', { + value: function(name, val) { + Object.defineProperty(this, name, { value:val, writable:true, configurable:true }); + } +}); + +Object.defineProperty(Object.prototype, 'nulldef', { + value: function(name, val) { + if (!this.hasOwnProperty(name)) this[name] = val; + } +}); + +/*Object.defineProperty(Object.prototype, 'writable', { + value: function(name) { + return Object.getPropertyDescriptor(this, name).writable; + } +}); +*/ + +Object.defineProperty(Object.prototype, 'prop_obj', { + value: function() { return JSON.parse(JSON.stringify(this)); } +}); + +/* defc 'define constant'. Defines a value that is not writable. */ +Object.defineProperty(Object.prototype, 'defc', { + value: function(name, val) { + Object.defineProperty(this,name, { + value: val, + writable:false, + enumerable:true, + configurable:false, + }); + } +}); + +Object.defineProperty(Object.prototype, 'stick', { + value: function(prop) { + Object.defineProperty(this, prop, {writable:false}); + } +}); + +Object.defineProperty(Object.prototype, 'harden', { + value: function(prop) { + Object.defineProperty(this, prop, {writable:false, configurable:false, enumerable: false}); + } +}); + +Object.defineProperty(Object.prototype, 'deflock', { + value: function(prop) { + Object.defineProperty(this,prop, {configurable:false}); + } +}); + +Object.defineProperty(Object.prototype, 'forEach', { + value: function(fn) { + for (var key in this) + fn(this[key]); + } +}); + + +Object.defineProperty(Object.prototype, 'empty', { + get: function() { + return Object.keys(this).empty; + }, +}); + +Object.defineProperty(Object.prototype, 'nth', { + value: function(x) { + if (this.empty || x >= Object.keys(this).length) return null; + + return this[Object.keys(this)[x]]; + }, +}); + +Object.defineProperty(Object.prototype, 'findIndex', { + value: function(x) { + var i = 0; + for (var key in this) { + if (this[key] === x) return i; + i++; + } + + return -1; + } +}); + + +/* STRING DEFS */ + +Object.defineProperty(String.prototype, 'next', { + value: function(char, from) { + if (!Array.isArray(char)) + char = [char]; + if (from > this.length-1) + return -1; + else if (!from) + from = 0; + + var find = this.slice(from).search(char[0]); + + if (find === -1) + return -1; + else + return from + find; + + var i = 0; + var c = this.charAt(from+i); + while (!char.includes(c)) { + i++; + if (from+i >this.length-1) return -1; + c = this.charAt(from+i); + } + + return from+i; + } +}); + +Object.defineProperty(String.prototype, 'prev', { + value: function(char, from, count) { + if (from > this.length-1) + return -1; + else if (!from) + from = this.length-1; + + if (!count) count = 0; + + var find = this.slice(0,from).lastIndexOf(char); + + while (count > 1) { + find = this.slice(0,find).lastIndexOf(char); + count--; + } + + if (find === -1) + return 0; + else + return find; + } +}); + +Object.defineProperty(String.prototype, 'shift', { + value: function(n) { + if (n === 0) return this.slice(); + + if (n > 0) + return this.slice(n); + + if (n < 0) + return this.slice(0, this.length+n); + } +}); + + +/* ARRAY DEFS */ + +Object.defineProperty(Array.prototype, 'copy', { + value: function() { + var c = []; + + this.forEach(function(x, i) { + c[i] = deep_copy(x); + }); + + return c; + } +}); + +Object.defineProperty(Array.prototype, 'rotate', { + value: function(a) { + return Vector.rotate(this, a); + } +}); + + +Object.defineProperty(Array.prototype, '$add', { +value: function(b) { + for (var i = 0; i < this.length; i++) { + this[i] += b[i]; + } +}}); + +function setelem(n) { + return { + get: function() { return this[n]; }, + set: function(x) { this[n] = x; } + } +}; + +function arrsetelem(str, n) +{ + Object.defineProperty(Array.prototype, str, setelem(n)); +} + +Object.defineProperty(Array.prototype, 'x', setelem(0)); +Object.defineProperty(Array.prototype, 'y', setelem(1)); +Object.defineProperty(Array.prototype, 'z', setelem(2)); +Object.defineProperty(Array.prototype, 'w', setelem(3)); +arrsetelem('r', 0); +arrsetelem('g', 1); +arrsetelem('b', 2); +arrsetelem('a', 3); + + +Object.defineProperty(Array.prototype, 'add', { +value: function(b) { + var c = []; + for (var i = 0; i < this.length; i++) { c[i] = this[i] + b[i]; } + return c; +}}); + +Object.defineProperty(Array.prototype, 'newfirst', { + value: function(i) { + var c = this.slice(); + if (i >= c.length) return c; + + do { + c.push(c.shift()); + i--; + } while (i > 0); + + return c; + } +}); + +Object.defineProperty(Array.prototype, 'doubleup', { + value: function(n) { + var c = []; + this.forEach(function(x) { + for (var i = 0; i < n; i++) + c.push(x); + }); + + return c; + } +}); + +Object.defineProperty(Array.prototype, 'sub', { +value: function(b) { + var c = []; + for (var i = 0; i < this.length; i++) { c[i] = this[i] - b[i]; } + return c; +}}); + +Object.defineProperty(Array.prototype, 'mult', { + value: function(arr) { + var c = []; + for (var i = 0; i < this.length; i++) { c[i] = this[i] * arr[i]; } + return c; +}}); + +Object.defineProperty(Array.prototype, 'apply', { + value: function(fn) { + this.forEach(function(x) { x[fn].apply(x); }); + } +}); + +Object.defineProperty(Array.prototype, 'scale', { + value: function(s) { + if (Array.isArray(s)) { + var c = this.slice(); + c.forEach(function(x,i) { c[i] = x * s[i]; }); + return c; + } + return this.map(function(x) { return x*s; }); +}}); + +Object.defineProperty(Array.prototype, 'equal', { +value: function(b) { + if (this.length !== b.length) return false; + if (b == null) return false; + if (this === b) return true; + + return JSON.stringify(this) === JSON.stringify(b); + + for (var i = 0; i < this.length; i++) { + if (!this[i] === b[i]) + return false; + } + + return true; +}}); + +function add(x,y) { return x+y; }; +function mult(x,y) { return x*y; }; + +Object.defineProperty(Array.prototype, 'mapc', { + value: function(fn, arr) { + return this.map(function(x, i) { + return fn(x, arr[i]); + }); + } +}); + +Object.defineProperty(Array.prototype, 'remove', { + value: function(b) { + var idx = this.indexOf(b); + + if (idx === -1) return false; + + this.splice(idx, 1); + + return true; +}}); + +Object.defineProperty(Array.prototype, 'set', { + value: function(b) { + if (this.length !== b.length) return; + + b.forEach(function(val, i) { this[i] = val; }, this); + } +}); + +Object.defineProperty(Array.prototype, 'flat', { + value: function() { + return [].concat.apply([],this); + } +}); + +Object.defineProperty(Array.prototype, 'any', { + value: function(fn) { + var ev = this.every(function(x) { + return !fn(x); + }); + return !ev; + } +}); + +/* Return true if array contains x */ +/*Object.defineProperty(Array.prototype, 'includes', { +value: function(x) { + return this.some(e => e === x); +}}); +*/ +Object.defineProperty(Array.prototype, 'empty', { + get: function() { return this.length === 0; }, +}); + +Object.defineProperty(Array.prototype, 'push_unique', { + value: function(x) { + if (!this.includes(x)) this.push(x); +}}); + +Object.defineProperty(Array.prototype, 'unique', { + value: function() { + var c = []; + this.forEach(function(x) { c.push_unique(x); }); + return c; + } +}); + + +Object.defineProperty(Array.prototype, 'findIndex', { + value: function(fn) { + var idx = -1; + this.every(function(x, i) { + if (fn(x)) { + idx = i; + return false; + } + + return true; + }); + + return idx; +}}); + +Object.defineProperty(Array.prototype, 'find', { + value: function(fn) { + var ret; + + this.every(function(x) { + if (fn(x)) { + ret = x; + return false; + } + + return true; + }); + + return ret; +}}); + +Object.defineProperty(Array.prototype, 'last', { + get: function() { return this[this.length-1]; }, +}); + +Object.defineProperty(Array.prototype, 'at', { +value: function(x) { + return x < 0 ? this[this.length+x] : this[x]; +}}); + +Object.defineProperty(Array.prototype, 'wrapped', { + value: function(x) { + var c = this.slice(0, this.length); + + for (var i = 0; i < x; i++) + c.push(this[i]); + + return c; +}}); + +Object.defineProperty(Array.prototype, 'wrap_idx', { + value: function(x) { + while (x >= this.length) { + x -= this.length; + } + + return x; + } +}); + +Object.defineProperty(Array.prototype, 'mirrored', { + value: function(x) { + var c = this.slice(0); + if (c.length <= 1) return c; + for (var i = c.length-2; i >= 0; i--) + c.push(c[i]); + + return c; + } +}); + +Object.defineProperty(Array.prototype, 'lerp', { + value: function(to, t) { + var c = []; + this.forEach(function(x,i) { + c[i] = (to[i] - x) * t + x; + }); + return c; + } +}); + +Object.defineProperty(Object.prototype, 'lerp', { + value: function(to, t) { + var self = this; + var obj = {}; + + Object.keys(self).forEach(function(key) { + obj[key] = self[key].lerp(to[key],t); + }); + + return obj; + } +}); + +/* MATH EXTENSIONS */ +Object.defineProperty(Number.prototype, 'lerp', { + value: function(to, t) { + var s = this; + return (to - this) * t + this; + } +}); + +Math.clamp = function (x, l, h) { return x > h ? h : x < l ? l : x; } + +Math.random_range = function(min,max) { return Math.random() * (max-min) + min; }; + +Math.snap = function(val, grid) { + if (!grid || grid === 1) return Math.round(val); + + var rem = val%grid; + var d = val - rem; + var i = Math.round(rem/grid)*grid; + return d+i; +} + +Math.angledist = function (a1, a2) { + var dist = a2 - a1; + var wrap = dist >= 0 ? dist+360 : dist-360; + wrap %= 360; + + if (Math.abs(dist) < Math.abs(wrap)) + return dist; + + return wrap; +}; + +Math.deg2rad = function(deg) { return deg * 0.0174533; }; +Math.rad2deg = function(rad) { return rad / 0.0174533; }; +Math.randomint = function(max) { return Math.clamp(Math.floor(Math.random() * max), 0, max-1); }; + +/* BOUNDINGBOXES */ +function cwh2bb(c, wh) { + return { + t: c.y+wh.y/2, + b: c.y-wh.y/2, + l: c.x-wh.x/2, + r: c.x+wh.x/2 + }; +}; + +function points2bb(points) { + var b= {t:0,b:0,l:0,r:0}; + + points.forEach(function(x) { + if (x.y > b.t) b.t = x.y; + if (x.y < b.b) b.b = x.y; + if (x.x > b.r) b.r = x.x; + if (x.x < b.l) b.l = x.x; + }); + + return b; +}; + +function bb2points(bb) +{ + return [ + [bb.l,bb.t], + [bb.r,bb.t], + [bb.r,bb.b], + [bb.l,bb.b] + ]; +} + +function bb2cwh(bb) { + if (!bb) return undefined; + var cwh = {}; + + var w = bb.r - bb.l; + var h = bb.t - bb.b; + cwh.wh = [w, h]; + cwh.c = [bb.l + w/2, bb.b + h/2]; + + return cwh; +}; + +function pointinbb(bb, p) +{ + if (bb.t < p.y || bb.b > p.y || bb.l > p.x || bb.r < p.x) + return false; + + return true; +} + +function movebb(bb, pos) { + var newbb = Object.assign({}, bb); + newbb.t += pos.y; + newbb.b += pos.y; + newbb.l += pos.x; + newbb.r += pos.x; + return newbb; +}; + +function bb_expand(oldbb, x) { + if (!oldbb || !x) return; + var bb = {}; + Object.assign(bb, oldbb); + + if (bb.t < x.t) bb.t = x.t; + if (bb.r < x.r) bb.r = x.r; + if (bb.b > x.b) bb.b = x.b; + if (bb.l > x.l) bb.l = x.l; + + return bb; +}; + +function bb_draw(bb, color) { + if (!bb) return; + var draw = bb2cwh(bb); + draw.wh[0] /= Yugine.camera.zoom; + draw.wh[1] /= Yugine.camera.zoom; + Debug.box(world2screen(draw.c), draw.wh, color); +}; + +function bb_from_objects(objs) { + var bb = objs[0].boundingbox; + objs.forEach(function(obj) { bb = bb_expand(bb, obj.boundingbox); }); + return bb; +}; + + +/* VECTORS */ +var Vector = { + x: 0, + y: 0, + length(v) { + var sum = v.reduce(function(acc, val) { return acc + val**2; }, 0); + return Math.sqrt(sum); + }, + norm(v) { + var len = Vector.length(v); + return [v.x/len, v.y/len]; + + }, + make(x, y) { + var vec = Object.create(this, {x:x, y:y}); + }, + + project(a, b) { + return cmd(85, a, b); + }, + + dot(a, b) { + + }, + + random() { + var vec = [Math.random()-0.5, Math.random()-0.5]; + return Vector.norm(vec); + }, + + angle(v) { + return Math.atan2(v.y, v.x); + }, + + rotate(v,angle) { + var r = Vector.length(v); + var p = Vector.angle(v) + angle; + return [r*Math.cos(p), r*Math.sin(p)]; + }, + + equal(v1, v2, tol) { + if (!tol) + return v1.equal(v2); + + var eql = true; + var c = v1.sub(v2); + + c.forEach(function(x) { + if (!eql) return; + if (Math.abs(x) > tol) + eql = false; + }); + + return eql; + }, + +}; + +/* POINT ASSISTANCE */ + +function points2cm(points) +{ + var x = 0; + var y = 0; + var n = points.length; + points.forEach(function(p) { + x = x + p[0]; + y = y + p[1]; + }); + + return [x/n,y/n]; +}; + +function sortpointsccw(points) +{ + var cm = points2cm(points); + var cmpoints = points.map(function(x) { return x.sub(cm); }); + var ccw = cmpoints.sort(function(a,b) { + aatan = Math.atan2(a.y, a.x); + batan = Math.atan2(b.y, b.x); + return aatan - batan; + }); + + return ccw.map(function(x) { return x.add(cm); }); +} + diff --git a/source/scripts/components.js b/source/scripts/components.js new file mode 100644 index 0000000..d6b59cd --- /dev/null +++ b/source/scripts/components.js @@ -0,0 +1,732 @@ +var component = { + toString() { + if ('gameobject' in this) + return this.name + " on " + this.gameobject; + else + return this.name; + }, + name: "component", + component: true, + enabled: true, + enable() { this.enabled = true; }, + disable() { this.enabled = false; }, + + make(go) { }, + kill() { Log.info("Kill not created for this component yet"); }, + gui() { }, + gizmo() { }, + + prepare_center() {}, + finish_center() {}, + clone(spec) { + return clone(this, spec); + }, +}; + +var sprite = clone(component, { + name: "sprite", + path: "", + layer: 0, + pos: [0,0], + get visible() { return this.enabled; }, + set visible(x) { this.enabled = x; }, + angle: 0, + rect: {s0:0, s1: 1, t0: 0, t1: 1}, + + get dimensions() { return cmd(64,this.path); }, + set dimensions(x) {}, + + make(go) { + var sprite = Object.create(this); + sprite.id = make_sprite(go,this.path,this.pos); + complete_assign(sprite, { + get enabled() { return cmd(114,this.id); }, + set enabled(x) { cmd(20,this.id,x); }, + set color(x) { cmd(96,this.id,x); }, + get pos() { return cmd(111, this.id); }, + set pos(x) { cmd(37,this.id,x); }, + set layer(x) { cmd(60, this.id, x); }, + get layer() { return this.gameobject.draw_layer; }, + + get boundingbox() { + var dim = this.dimensions; + dim = dim.scale(this.gameobject.scale); + var realpos = this.pos.copy(); + realpos.x = realpos.x * dim.x + (dim.x/2); + realpos.y = realpos.y * dim.y + (dim.y/2); + return cwh2bb(realpos,dim); + }, + + sync() { + if (this.path) + cmd(12,this.id,this.path,this.rect); + }, + + kill() { cmd(9,this.id); }, + }); + sprite = new Proxy(sprite, sync_proxy); + sprite.obscure('boundingbox'); + return sprite; + }, + + input_kp7_pressed() { this.pos = [-1,0]; }, + input_kp6_pressed() { this.pos = [0,-0.5]; }, + input_kp5_pressed() { this.pos = [-0.5,-0.5]; }, + input_kp4_pressed() { this.pos = [-1,-0.5]; }, + input_kp3_pressed() { this.pos = [0, -1]; }, + input_kp2_pressed() { this.pos = [-0.5,-1]; }, + input_kp1_pressed() { this.pos = [-1,-1]; }, +}); + +/* Container to play sprites and anim2ds */ +var char2d = clone(sprite, { + clone(anims) { + var char = clone(this); + char.anims = anims; + return char; + }, + + name: "char 2d", + + frame2rect(frames, frame) { + var rect = {s0:0,s1:1,t0:0,t1:1}; + + var frameslice = 1/frames; + rect.s0 = frameslice*frame; + rect.s1 = frameslice*(frame+1); + + return rect; + }, + + make(go) { + var char = clone(this, { + get enabled() { return cmd(114,this.id); }, + set enabled(x) { cmd(20,this.id,x); }, + set color(x) { cmd(96,this.id,x); }, + get pos() { return cmd(111, this.id); }, + set pos(x) { cmd(37,this.id,x); }, + set layer(x) { cmd(60, this.id, x); }, + get layer() { return this.gameobject.draw_layer; }, + + get boundingbox() { + var dim = cmd(64,this.path); + dim = dim.scale(this.gameobject.scale); + dim.x *= 1/6; + var realpos = [0,0]; +// var realpos = this.pos.slice(); + +// realpos.x = realpos.x * dim.x + (dim.x/2); +// realpos.y = realpos.y * dim.y + (dim.y/2); + return cwh2bb(realpos,dim); + }, + + sync() { + if (this.path) + cmd(12,this.id,this.path,this.rect); + }, + + kill() { cmd(9,this.id); }, + }); + + char.curplaying = char.anims.array()[0]; + char.obscure('curplaying'); + char.id = make_sprite(go, char.curplaying.path, this.pos); + + char.obscure('id'); + char.frame = 0; + char.timer = timer.make(char.advance.bind(char), 1/char.curplaying.fps); + char.timer.loop = true; + char.obscure('timer'); +// char.obscure('rect'); + char.rect = {}; + char.setsprite(); + return char; + }, + + frame: 0, + + play(name) { + if (!(name in this.anims)) { + Log.info("Can't find an animation named " + name); + return; + } + + if (this.curplaying === this.anims[name]) { + this.timer.start(); + return; + } + + this.curplaying = this.anims[name]; + this.timer.time = 1/this.curplaying.fps; + this.timer.start(); + this.frame = 0; + this.setsprite(); + }, + + setsprite() { + this.path = this.curplaying.path; + this.rect = this.frame2rect(this.curplaying.frames, this.frame); + cmd(12, this.id, this.path, this.rect); + }, + + advance() { + this.frame = (this.frame + 1) % this.curplaying.frames; + this.setsprite(); + + if (this.frame === 0 && !this.curplaying.loop) + this.timer.pause(); + }, + + devance() { + this.frame = (this.frame - 1); + if (this.frame === -1) this.frame = this.curplaying.frames-1; + this.setsprite(); + }, + + setframe(frame) { + this.frame = frame; + this.setsprite(); + }, + + pause() { + this.timer.pause(); + }, + + stop() { + this.setframe(0); + this.timer.stop(); + }, + + kill() { + this.timer.kill(); + cmd(9, this.id); + }, +}); + +/* Returns points specifying this geometry, with ccw */ +var Geometry = { + box(w, h) { + w /= 2; + h /= 2; + + var points = [ + [w,h], + [-w,h], + [-w,-h], + [w,-h] + ]; + + return points; + } +}; + +/* For all colliders, "shape" is a pointer to a phys2d_shape, "id" is a pointer to the shape data */ +var collider2d = clone(component, { + name: "collider 2d", + sensor: false, + + input_s_pressed() { + if (!Keys.alt()) return; + + this.sensor = !this.sensor; + }, + + input_t_pressed() { + if (!Keys.alt()) return; + + this.enabled = !this.enabled; + }, + + kill() {}, /* No killing is necessary - it is done through the gameobject's kill */ + + register_hit(fn, obj) { + register_collide(1, fn, obj, this.gameobject.body, this.shape); + }, + + make_fns: { + set sensor(x) { cmd(18,this.shape,x); }, + get sensor() { return cmd(21,this.shape); }, + set enabled(x) { cmd(22,this.shape,x); }, + get enabled() { + Log.warn("getting enabled"); + return cmd(23,this.shape); } + }, + +}); + +var sync_proxy = { + set(t,p,v) { + t[p] = v; + t.sync(); + return true; + } +}; + +var polygon2d = clone(collider2d, { + name: "polygon 2d", + points: [], + mirrorx: false, + mirrory: false, + + clone(spec) { + var obj = Object.create(this); + obj.points = this.points.copy(); + Object.assign(obj, spec); + return obj; + }, + + make(go) { + var poly = Object.create(this); + Object.assign(poly, make_poly2d(go, this.points)); + + complete_assign(poly, this.make_fns); + complete_assign(poly, { + get boundingbox() { + return points2bb(this.spoints); + }, + + sync() { cmd_poly2d(0, this.id, this.spoints); } + }); + + poly.obscure('boundingbox'); + + poly.defn('points', this.points.copy()); + + poly = new Proxy(poly, sync_proxy); + + Object.defineProperty(poly, 'id', {enumerable:false}); + Object.defineProperty(poly, 'shape', {enumerable:false}); + + poly.sync(); + + return poly; + }, + + /* EDITOR */ + help: "Ctrl-click Add a point\nShift-click Remove a point", + + input_f10_pressed() { + this.points = sortpointsccw(this.points); + }, + + input_b_pressed() { + if (!Keys.ctrl()) return; + + this.points = this.spoints; + this.mirrorx = false; + this.mirrory = false; + }, + + get spoints() { + var spoints = this.points.slice(); + + if (this.mirrorx) { + spoints.forEach(function(x) { + var newpoint = x.slice(); + newpoint.x = -newpoint.x; + spoints.push(newpoint); + }); + } + + if (this.mirrory) { + spoints.forEach(function(x) { + var newpoint = x.slice(); + newpoint.y = -newpoint.y; + spoints.push(newpoint); + }); + } + + return spoints; + }, + + gizmo() { + if (!this.hasOwn('points')) this.points = this.__proto__.points.copy(); + + this.spoints.forEach(function(x) { + Debug.point(world2screen(this.gameobject.this2world(x)), 3, Color.green); + }, this); + + this.points.forEach(function(x, i) { + Debug.numbered_point(this.gameobject.this2world(x), i); + }, this); + }, + + input_lmouse_pressed() { + if (Keys.ctrl()) { + this.points.push(this.gameobject.world2this(Mouse.worldpos)); + } else if (Keys.shift()) { + var idx = grab_from_points(screen2world(Mouse.pos), this.points.map(this.gameobject.this2world,this.gameobject), 25); + if (idx === -1) return; + this.points.splice(idx, 1); + } + }, + + pick(pos) { + return Gizmos.pick_gameobject_points(pos, this.gameobject, this.points); + }, + + query() { + return cmd(80, this.shape); + }, + + input_m_pressed() { + if (Keys.ctrl()) + this.mirrory = !this.mirrory; + else + this.mirrorx = !this.mirrorx; + }, +}); + +var bucket = clone(collider2d, { + name: "bucket", + clone(spec) { + var obj = Object.create(this); + obj.cpoints = this.cpoints.copy(); + dainty_assign(obj, spec); + return obj; + }, + + cpoints:[], + degrees:2, + dimensions:2, + /* open: 0 + clamped: 1 + beziers: 2 + looped: 3 + */ + type: 3, + typeid: { + open: 0, + clamped: 1, + beziers: 2, + looped: 3 + }, + + mirrorx: false, + mirrory: false, + + hollow: false, + hollowt: 0, + + get spoints() { + var spoints = this.cpoints.slice(); + + if (this.mirrorx) { + for (var i = spoints.length-1; i >= 0; i--) { + var newpoint = spoints[i].slice(); + newpoint.x = -newpoint.x; + spoints.push(newpoint); + } + } + + if (this.mirrory) { + for (var i = spoints.length-1; i >= 0; i--) { + var newpoint = spoints[i].slice(); + newpoint.y = -newpoint.y; + spoints.push(newpoint); + } + } + + return spoints; + + if (this.hollow) { + var hpoints = []; + var inflatep = inflate_cpv(spoints, spoints.length, this.hollowt); + inflatep[0].slice().reverse().forEach(function(x) { hpoints.push(x); }); + + inflatep[1].forEach(function(x) { hpoints.push(x); }); + return hpoints; + } + + return spoints; + }, + + sample(n) { + var spoints = this.spoints; + + this.degrees = Math.clamp(this.degrees, 1, spoints.length-1); + + if (spoints.length === 2) + return spoints; + if (spoints.length < 2) + return []; + if (this.degrees < 2) { + if (this.type === 3) + return spoints.wrapped(1); + + return spoints; + } + + /* + order = degrees+1 + knots = spoints.length + order + assert knots%order != 0 + */ + + if (this.type === bucket.typeid.looped) + return spline_cmd(0, this.degrees, this.dimensions, 0, spoints.wrapped(this.degrees), n); + + return spline_cmd(0, this.degrees, this.dimensions, this.type, spoints, n); + }, + + samples: 10, + points:[], + thickness:0, /* Number of pixels out the edge is */ + + make(go) { + var edge = Object.create(this); + Object.assign(edge, make_edge2d(go, this.points, this.thickness)); + edge = new Proxy(edge, sync_proxy); + complete_assign(edge, { + set thickness(x) { + cmd_edge2d(1,this.id,x); + }, + get thickness() { return cmd(112,this.id); }, + + get boundingbox() { + return points2bb(this.points.map(x => x.scale(this.gameobject.scale))); + }, + + sync() { + var sensor = this.sensor; + this.points = this.sample(this.samples); + cmd_edge2d(0,this.id,this.points); + this.sensor = sensor; + }, + }); + + edge.obscure('boundingbox'); + + complete_assign(edge, this.make_fns); + + Object.defineProperty(edge, 'id', {enumerable:false}); + Object.defineProperty(edge, 'shape', {enumerable:false}); + + edge.defn('points', []); + + return edge; + }, + + /* EDITOR */ + gizmo() { + if (!this.hasOwn('cpoints')) this.cpoints = this.__proto__.cpoints.copy(); + + this.spoints.forEach(function(x) { + Debug.point(world2screen(this.gameobject.this2world(x)), 3, Color.green); + }, this); + + this.cpoints.forEach(function(x, i) { + Debug.numbered_point(this.gameobject.this2world(x), i); + }, this); + }, + + help: "Ctrl-click Add a point\nShift-click Remove a point\n+,- Increase/decrease spline segs\nCtrl-+,- Inc/dec spline degrees\nCtrl-b,v Inc/dec spline thickness", + + input_h_pressed() { + this.hollow = !this.hollow; + }, + + input_m_pressed() { + if (Keys.ctrl()) { + this.mirrory = !this.mirrory; + } else { + this.mirrorx = !this.mirrorx; + } + }, + + input_g_pressed() { + if (!Keys.ctrl()) return; + this.hollowt--; + if (this.hollowt < 0) this.hollowt = 0; + }, + + input_f_pressed() { + if (!Keys.ctrl()) return; + this.hollowt++; + }, + + input_v_pressrep() { + if (!Keys.alt()) return; + this.thickness--; + }, + + input_b_pressrep() { + if (Keys.alt()) { + this.thickness++; + } else if (Keys.ctrl()) { + this.cpoints = this.spoints; + this.mirrorx = false; + this.mirrory = false; + } + }, + + finish_center(change) { + this.cpoints = this.cpoints.map(function(x) { return x.sub(change); }); + }, + + input_plus_pressrep() { + if (Keys.ctrl()) + this.degrees++; + else + this.samples += 1; + }, + + input_minus_pressrep() { + if (Keys.ctrl()) + this.degrees--; + else { + this.samples -= 1; + if (this.samples < 1) this.samples = 1; + } + }, + + input_r_pressed() { + if (!Keys.ctrl()) return; + + this.cpoints = this.cpoints.reverse(); + }, + + input_l_pressed() { + if (!Keys.ctrl()) return; + this.type = 3; + }, + + input_c_pressed() { + if (!Keys.ctrl()) return; + this.type = 1; + }, + + input_o_pressed() { + if (!Keys.ctrl()) return; + this.type = 0; + }, + + input_lmouse_pressed() { + if (Keys.ctrl()) { + if (Keys.alt()) { + var idx = grab_from_points(Mouse.worldpos, this.cpoints.map(this.gameobject.world2this,this.gameobject), 25); + if (idx === -1) return; + + this.cpoints = this.cpoints.newfirst(idx); + return; + } + var idx = 0; + + if (this.cpoints.length >= 2) { + idx = cmd(59, screen2world(Mouse.pos).sub(this.gameobject.pos), this.cpoints, 1000); + if (idx === -1) return; + } + + if (idx === this.cpoints.length) + this.cpoints.push(this.gameobject.world2this(screen2world(Mouse.pos))); + else + this.cpoints.splice(idx, 0, this.gameobject.world2this(screen2world(Mouse.pos))); + return; + } else if (Keys.shift()) { + var idx = grab_from_points(screen2world(Mouse.pos), this.cpoints.map(function(x) {return x.add(this.gameobject.pos); }, this), 25); + if (idx === -1) return; + + this.cpoints.splice(idx, 1); + } + }, + + pick(pos) { return Gizmos.pick_gameobject_points(pos, this.gameobject, this.cpoints); }, + + input_lbracket_pressrep() { + var np = []; + + this.cpoints.forEach(function(c) { + np.push(Vector.rotate(c, Math.deg2rad(-1))); + }); + + this.cpoints = np; + }, + + input_rbracket_pressrep() { + var np = []; + + this.cpoints.forEach(function(c) { + np.push(Vector.rotate(c, Math.deg2rad(1))); + }); + + this.cpoints = np; + }, +}); + +var circle2d = clone(collider2d, { + name: "circle 2d", + radius: 10, + offset: [0,0], + + get scale() { return this.radius; }, + set scale(x) { this.radius = x; }, + + get pos() { return this.offset; }, + set pos(x) { this.offset = x; }, + + make(go) { + var circle = clone(this); + var circ = make_circle2d(go, circle.radius, circle.offset); + Object.assign(circle, circ); + Object.defineProperty(circle, 'id', {enumerable:false}); + Object.defineProperty(circle, 'shape', {enumerable:false}); + + complete_assign(circle, { + set radius(x) { cmd_circle2d(0,this.id,x); }, + get radius() { return cmd_circle2d(2,this.id); }, + + set offset(x) { cmd_circle2d(1,this.id,this.offset); }, + get offset() { return cmd_circle2d(3,this.id); }, + + get boundingbox() { + var diameter = this.radius*2*this.gameobject.scale; + return cwh2bb(this.offset.scale(this.gameobject.scale), [this.radius,this.radius]); + }, + }); + + complete_assign(circle, this.make_fns); + + circle.obscure('boundingbox'); + + return circle; + }, + + gui() { + Nuke.newline(); + Nuke.label("circle2d"); + this.radius = Nuke.pprop("Radius", this.radius); + this.offset = Nuke.pprop("offset", this.offset); + }, +}); + + +/* ASSETS */ + +var Texture = { + mipmaps(path, x) { + cmd(94, path, x); + }, + + sprite(path, x) { + cmd(95, path, x); + }, +}; + +var Resources = { + load(path) { + if (path in this) + return this[path]; + + var src = {}; + this[path] = src; + src.path = path; + + if (!IO.exists(`${path}.asset`)) + return this[path]; + + var data = JSON.parse(IO.slurp(`${path}.asset`)); + Object.assign(src,data); + return this[path]; + + }, +}; diff --git a/source/scripts/debug.js b/source/scripts/debug.js new file mode 100644 index 0000000..fc0decc --- /dev/null +++ b/source/scripts/debug.js @@ -0,0 +1,281 @@ +var Gizmos = { + pick_gameobject_points(worldpos, gameobject, points) { + var idx = grab_from_points(worldpos, points.map(gameobject.this2world,gameobject), 25); + if (idx === -1) return null; + return points[idx]; + }, +}; + +var Shape = { + circle(pos, radius, color) { + cmd(115, pos, radius, color); + }, +}; + +var Debug = { + draw_grid(width, span, color) { + color = color ? color : Color.green; + cmd(47, width, span, color); + }, + + point(pos, size, color) { + color = color ? color : Color.blue; + cmd(51, pos, size,color); + }, + + arrow(start, end, color, capsize) { + color = color ? color : Color.red; + if (!capsize) + capsize = 4; + cmd(81, start, end, color, capsize); + }, + + poly(points, color) { + cmd_points(0,points,color); + }, + + boundingbox(bb, color) { + color ??= Color.white; + cmd_points(0, bb2points(bb), color); + }, + + box(pos, wh, color) { + color ??= Color.white; + cmd(53, pos, wh, color); + }, + + numbered_point(pos, n) { + Debug.point(world2screen(pos), 3); + gui_text(n, world2screen(pos).add([0,4]), 1); + }, + + phys_drawing: false, + draw_phys(on) { + this.phys_drawing = on; + cmd(4, this.phys_drawing); + }, + + draw_obj_phys(obj) { + cmd(82, obj.body); + }, + + register_call(fn, obj) { + register_debug(fn,obj); + }, + + line(points, color, type, thickness) { + thickness ??= 1; + if (!type) + type = 0; + + if (!color) + color = Color.white; + + switch (type) { + case 0: + cmd(83, points, color, thickness); + } + }, + + draw_bb: false, + draw_gizmos: false, + draw_names: false, + + draw() { + if (this.draw_bb) + Game.objects.forEach(function(x) { bb_draw(x.boundingbox); }); + + if (Game.paused()) gui_text("PAUSED", [0,0],1); + + if (this.draw_gizmos) + Game.objects.forEach(function(x) { + if (!x.icon) return; + gui_img(x.icon, world2screen(x.pos)); + }); + + if (this.draw_names) + Game.objects.forEach(function(x) { + GUI.text(x.fullpath(), world2screen(x.pos).add([0,32]), 1, [84,110,255]); + }); +/* + gui_text(sim_playing() ? "PLAYING" + : sim_paused() ? + "PAUSED" : + "STOPPED", [0, 0], 1); +*/ + }, +}; + +Debug.Options = { }; +Debug.Options.Color = { + set trigger(x) { cmd(17,x); }, + set debug(x) { cmd(16, x); }, +}; + +var Gizmos = { + pick_gameobject_points(worldpos, gameobject, points) { + var idx = grab_from_points(worldpos, points.map(gameobject.this2world,gameobject), 25); + if (idx === -1) return null; + return points[idx]; + }, +}; + +var Profile = { + cpu(fn, times) { + times ??= 1; + var start = Date.now(); + for (var i = 0; i < times; i++) + fn(); + + Log.warn(`Profiled in ${(Date.now()-start)/1000} seconds.`); + }, + + get fps() { return sys_cmd(8); }, +}; + +var Nuke = { + newline(cols) { nuke(3, cols ? cols : 1); }, + newrow(height) { nuke(13,height); }, + + wins: {}, + curwin:"", + + prop(str, v) { + var ret = nuke(2, str, v); + if (Number.isFinite(ret)) return ret; + return 0; + }, + + treeid: 0, + + tree(str) { var on = nuke(11, str, this.treeid); this.treeid++; return on; }, + tree_pop() { nuke(12);}, + + prop_num(str, num) { return nuke(2, str, num, -1e10, 1e10, 0.01); }, + prop_bool(str, val) { return nuke(4, str, val); }, + checkbox(val) { return nuke(4,"",val); }, + label(str) { nuke(5, str); }, + textbox(str) { return nuke(7, str); }, + scrolltext(str) { nuke(14,str); }, + + defaultrect: { x:10, y:10, w:400, h:600 }, + window(name) { + this.curwin = name; + var rect; + if (name in this.wins) + rect = this.wins[name]; + else + rect = { x:10, y:10, w:400, h:600 }; + + nuke(0, name, rect); + }, + button(name) { return nuke(6, name); }, + radio(name, val, cmp) { return nuke(9, name, val, cmp); }, + img(path) { nuke(8, path); }, + end() { + this.wins[this.curwin] = nuke(10); + this.treeid = 0; + nuke(1); + }, + + pprop(str, p, nonew) { + switch(typeof p) { + case 'number': + if (!nonew) Nuke.newline(); + return Nuke.prop_num(str, p); + break; + + case 'boolean': + if (!nonew) Nuke.newline(); + return Nuke.prop_bool(str, p); + + case 'object': + if (Array.isArray(p)) { + var arr = []; + Nuke.newline(p.length+1); + Nuke.label(str); + arr[0] = Nuke.pprop("#x", p[0], true); + arr[1] = Nuke.pprop("#y", p[1], true); + return arr; + + } else { + if (!nonew)Nuke.newline(2); + Nuke.label(str); + Nuke.label(p); + } + break; + + case 'string': + if (!nonew) Nuke.newline(); + Nuke.label(str); + return Nuke.textbox(p); + + default: + if (!nonew) Nuke.newline(2); + Nuke.label(str); + Nuke.label(p); + } + }, +}; + +Object.defineProperty(Nuke, "curwin", {enumerable:false}); +Object.defineProperty(Nuke, "defaultrect", {enumerable:false}); + +var DebugControls = { + input_f1_pressed() { + Debug.draw_phys(!Debug.phys_drawing); + }, + + input_f3_pressed() { + Debug.draw_bb = !Debug.draw_bb; + }, + + input_f5_pressed() { + if (Game.paused()) + Game.play(); + else + Game.pause(); + }, + + input_f6_pressed() { + if (Game.paused()) + Game.step(); + }, + + /* Toggle physics */ + input_f7_pressed() { + + }, + + input_1_pressed() { + if (!Keys.alt()) return; + Render.normal(); + }, + + input_2_pressed() { + if (!Keys.alt()) return; + Render.wireframe(); + }, + + input_f10_pressed() { Time.timescale = 0.1; }, + input_f10_released() { Time.timescale = 1.0; }, + input_f12_pressed() { + GUI.defaults.debug = !GUI.defaults.debug; + }, + + + input_f4_pressed() { + Debug.draw_names = !Debug.draw_names; + Debug.draw_gizmos = !Debug.draw_gizmos; + }, +}; + +var Time = { + set timescale(x) { cmd(3, x); }, + set updateMS(x) { cmd(6, x); }, + set physMS(x) { cmd(7, x); }, + set renderMS(x) { cmd(5, x); }, +}; + +set_pawn(DebugControls); +register_gui(Debug.draw, Debug); diff --git a/source/scripts/diff.js b/source/scripts/diff.js new file mode 100644 index 0000000..4f67bc8 --- /dev/null +++ b/source/scripts/diff.js @@ -0,0 +1,147 @@ +function deep_copy(from) { + if (typeof from !== 'object') + return from; + + if (Array.isArray(from)) { + var c = []; + from.forEach(function(x,i) { c[i] = deep_copy(x); }); + return c; + } + + var obj = {}; + for (var key in from) + obj[key] = deep_copy(from[key]); + + return obj; +}; + + +var walk_up_get_prop = function(obj, prop, endobj) { + var props = []; + var cur = obj; + while (cur !== Object.prototype) { + if (cur.hasOwn(prop)) + props.push(cur[prop]); + + cur = cur.__proto__; + } + + return props; +}; + + +function complete_assign(target, source) { + var descriptors = {}; + var assigns = {}; + if (typeof source === 'undefined') return target; + Object.keys(source).forEach(function (k) { + var desc = Object.getOwnPropertyDescriptor(source, k); + + if (desc.value) { + if (typeof desc.value === 'object' && desc.value.hasOwn('value')) + descriptors[k] = desc.value; + else + assigns[k] = desc.value; + } else + descriptors[k] = desc; + }); + + Object.defineProperties(target, descriptors); + Object.assign(target, assigns); + return target; +}; + +/* Assigns properties from source to target, only if they exist in target */ +function dainty_assign(target, source) +{ + for (var key in source) { + if (typeof source[key] === 'function') { + target[key] = source[key]; + continue; + } + if (!(key in target)) continue; + if (Array.isArray(target[key])) + target[key] = source[key]; + else if (typeof target[key] === 'object') + dainty_assign(target[key], source[key]); + else { + target[key] = source[key]; + } + } +}; + +/* Deeply remove source keys from target, not removing objects */ +function unmerge(target, source) { + for (var key in source) { + if (typeof source[key] === 'object' && !Array.isArray(source[key])) + unmerge(target[key], source[key]); + else + delete target[key]; + } +}; + +/* Deeply merge two objects, not clobbering objects on target with objects on source */ +function deep_merge(target, source) +{ + Log.warn("Doing a deep merge ..."); + for (var key in source) { + if (typeof source[key] === 'object' && !Array.isArray(source[key])) { + Log.warn(`Deeper merge on ${key}`); + deep_merge(target[key], source[key]); + } + else { + Log.warn(`Setting key ${key}`); + target[key] = source[key]; + } + } +}; + + +function equal(x,y) { + if (typeof x === 'object') + for (var key in x) + return equal(x[key],y[key]); + + return x === y; +}; + +function diffassign(target, from) { + if (from.empty) return; + + for (var e in from) { + if (typeof from[e] === 'object') { + if (!target.hasOwnProperty(e)) + target[e] = from[e]; + else + diffassign(target[e], from[e]); + } else { + if (from[e] === "DELETE") { + delete target[e]; + } else { + target[e] = from[e]; + } + } + } +}; + +function diff(from, to) { + var obj = {}; + + for (var e in to) { + if (typeof to[e] === 'object' && from.hasOwnProperty(e)) { + obj[e] = diff(from[e], to[e]); + if (obj[e].empty) + delete obj[e]; + } else { + if (from[e] !== to[e]) + obj[e] = to[e]; + } + } + + for (var e in from) { + if (!to.hasOwnProperty(e)) + obj[e] = "DELETE"; + } + + return obj; +}; diff --git a/source/scripts/editor.js b/source/scripts/editor.js new file mode 100644 index 0000000..0f244b4 --- /dev/null +++ b/source/scripts/editor.js @@ -0,0 +1,2542 @@ +/* + Editor-only variables on objects + selectable +*/ + +var required_files = ["proto.json"]; + +required_files.forEach(x => { + if (!IO.exists(x)) slurpwrite("", x); +}); + +var editor_level = Level.create(); +var editor_camera = editor_level.spawn(camera2d); +editor_camera.save = false; +set_cam(editor_camera.body); + +var editor_config = { + grid_size: 100, +}; + +var configs = { + toString() { return "configs"; }, + editor: editor_config, + physics: physics, + local: local_conf, + collision: Collision, +}; + +var editor = { + dbgdraw: false, + selected: null, + selectlist: [], + moveoffset: [0,0], + startrot: 0, + rotoffset: 0, + obj_panel: false, + camera: editor_camera, + edit_level: {}, /* The current level that is being edited */ + working_layer: -1, + cursor: null, + edit_mode: "basic", + + input_f1_pressed() { + if (Keys.ctrl()) { + this.edit_mode = "basic"; + return; + } + }, + + input_f2_pressed() { + if (Keys.ctrl()) { + this.edit_mode = "brush"; + return; + } + + objectexplorer.on_close = save_configs; + objectexplorer.obj = configs; + this.openpanel(objectexplorer); + }, + + input_j_pressed() { + if (Keys.alt()) { + var varmakes = this.selectlist.filter(function(x) { return x.hasOwn('varname'); }); + varmakes.forEach(function(x) { delete x.varname; }); + } else if (Keys.ctrl()) { + var varmakes = this.selectlist.filter(function(x) { return !x.hasOwn('varname'); }); + varmakes.forEach(function(x) { + var allvnames = []; + this.edit_level.objects.forEach(function(x) { + if (x.varname) + allvnames.push(x.varname); + }); + + var vname = x.from.replace(/ /g, '_').replace(/_object/g, '').replace(/\..*$/g, ''); + var tnum = 1; + var testname = vname + "_" + tnum; + while (allvnames.includes(testname)) { + tnum++; + testname = vname + "_" + tnum; + } + x.varname = testname; + },this); + } + }, + + input_i_pressed() { + if (!Keys.ctrl()) return; + + this.openpanel(levellistpanel, true); + }, + + input_y_pressed() { + if (Keys.ctrl()) { + if (this.selectlist.length !== 1) return; + objectexplorer.obj = this.selectlist[0]; + objectexplorer.on_close = this.save_prototypes; + this.openpanel(objectexplorer); + } else if (Keys.alt()) { + this.openpanel(protoexplorer); + } + }, + + try_select() { /* nullify true if it should set selected to null if it doesn't find an object */ + var go = physics.pos_query(screen2world(Mouse.pos)); + return this.do_select(go); + }, + + /* Tries to select id */ + do_select(go) { + var obj = go >= 0 ? Game.object(go) : null; + if (!obj || !obj.selectable) return null; + + if (this.working_layer > -1 && obj.draw_layer !== this.working_layer) return null; + + if (obj.level !== this.edit_level) { + var testlevel = obj.level; + while (testlevel && testlevel.level !== this.edit_level) { + testlevel = testlevel.level; + } + + return testlevel; + } + + return obj; + }, + + curpanel: null, + + input_o_pressed() { + if (this.sel_comp) return; + + if (Keys.ctrl() && Keys.alt()) { + if (this.selectlist.length === 1 && this.selectlist[0].file) { + if (this.edit_level.dirty) return; + this.load(this.selectlist[0].file); + } + + return; + } + + if (Keys.ctrl() && Keys.shift()) { + if (!this.edit_level.dirty) + this.load_prev(); + + return; + } + + if (Keys.ctrl()) { + if (this.check_level_nested()) { + Log.warn("Nested level ..."); + return; + } + + if (this.edit_level.dirty) { + this.openpanel(gen_notify("Level is changed. Are you sure you want to close it?", function() { + this.clear_level(); + this.openpanel(openlevelpanel); + }.bind(this))); + return; + } + + this.openpanel(openlevelpanel); + return; + } + + if (Keys.alt()) { + this.openpanel(addlevelpanel); + return; + } + + this.obj_panel = !this.obj_panel; + }, + + check_level_nested() { + if (this.edit_level.level) { + this.openpanel(gen_notify("Can't close a nested level. Save up to the root before continuing.")); + return true; + } + + return false; + }, + + levellist: false, + programmode: false, + + input_l_pressed() { + if (this.sel_comp) return; + if (Keys.ctrl()) { + texteditor.on_close = function() { editor.edit_level.script = texteditor.value;}; + texteditor.input_s_pressed = function() { + if (!Keys.ctrl()) return; + editor.edit_level.script = texteditor.value; + editor.save_current(); + texteditor.startbuffer = texteditor.value.slice(); + }; + + this.openpanel(texteditor); + if (!this.edit_level.script) + this.edit_level.script = ""; + texteditor.value = this.edit_level.script; + texteditor.start(); + } else if (Keys.alt()) { + this.programmode = !this.programmode; + } + }, + + delete_empty_reviver(key, val) { + if (typeof val === 'object' && val.empty) + return undefined; + + return val; + }, + + + input_minus_pressed() { + if (this.sel_comp) return; + + if (!this.selectlist.empty) { + this.selectlist.forEach(function(x) { x.draw_layer--; }); + return; + } + + if (this.working_layer > -1) + this.working_layer--; + }, + + input_plus_pressed() { + if (this.sel_comp) return; + + if (!this.selectlist.empty) { + this.selectlist.forEach(x => x.draw_layer++); + return; + } + + if (this.working_layer < 4) + this.working_layer++; + }, + + input_p_pressed() { + if (Keys.ctrl()) { + if (Keys.shift()) { + /* Save prototype as */ + if (this.selectlist.length !== 1) return; + this.openpanel(saveprototypeas); + return; + } + else { + this.save_proto(); + } + } else if (Keys.alt()) + this.openpanel(prefabpanel); + }, + + save_proto() { + if (this.selectlist.length !== 1) return; + Log.warn(`Saving prototype ${this.selectlist[0].toString()}`); + var protos = JSON.parse(IO.slurp("proto.json")); + + var tobj = this.selectlist[0].prop_obj(); + var pobj = this.selectlist[0].__proto__.prop_obj(); + + Log.warn("Going to deep merge."); + deep_merge(pobj, tobj); + Log.warn("Finished deep merge."); + + pobj.from = this.selectlist[0].__proto__.from; + + + protos[this.selectlist[0].__proto__.name] = pobj; + Log.warn(JSON.stringify(protos)); + slurpwrite(JSON.stringify(protos, null, 2), "proto.json"); + + /* Save object changes to parent */ + dainty_assign(this.selectlist[0].__proto__, tobj); + + /* Remove the local from this object */ + unmerge(this.selectlist[0], tobj); + + /* Now sync all objects */ + Game.objects.forEach(x => x.sync()); + + }, + + save_prototypes() { + save_gameobjects_as_prototypes(); + }, + + /* Save the selected object as a new prototype, extending the chain */ + save_proto_as(name) { + if (name in gameobjects) { + Log.info("Already an object with name '" + name + "'. Choose another one."); + return; + } + var newp = this.selectlist[0].__proto__.clone(name); + + for (var key in newp) + if (typeof newp[key] === 'object' && 'clone' in newp[key]) + newp[key] = newp[key].clone(); + + dainty_assign(newp, this.selectlist[0].prop_obj()); + this.selectlist[0].kill(); + var gopos = this.selectlist[0].pos; + this.unselect(); + var proto = this.edit_level.spawn(gameobjects[name]); + this.selectlist.push(proto); + this.save_proto(); + proto.pos = gopos; + }, + + /* Save selected object as a new prototype, replacing the current prototype */ + save_type_as(name) { + if (name in gameobjects) { + Log.info("Already an object with name '" + name + "'. Choose another one."); + return; + } + + var newp = this.selectlist[0].__proto__.__proto__.clone(name); + + for (var key in newp) + if (typeof newp[key] === 'object' && 'clone' in newp[key]) + newp[key] = newp[key].clone(); + + var tobj = this.selectlist[0].prop_obj(); + var pobj = this.selectlist[0].__proto__.prop_obj(); + deep_merge(pobj, tobj); + + + dainty_assign(newp, pobj); + this.selectlist[0].kill(); + this.unselect(); + var proto = this.edit_level.spawn(gameobjects[name]); + this.selectlist.push(proto); + this.save_proto(); + }, + + /* Makes it so only these objects are editable */ + focus_objects(objs) { + + }, + + dup_objects(x) { + var objs = x.slice(); + var duped = []; + + objs.forEach(function(x,i) { + if (x.file) { + var newlevel = this.edit_level.addfile(x.file); + newlevel.pos = x.pos; + newlevel.angle = x.angle; + duped.push(newlevel); + } else { + var newobj = this.edit_level.spawn(x.__proto__); + duped.push(newobj); + newobj.pos = x.pos; + newobj.angle = x.angle; + dainty_assign(newobj, x.prop_obj()); + } + },this); + + duped.forEach(function(x) { delete duped.varname; }); + + return duped.flat(); + }, + + input_d_pressed() { + if (!Keys.ctrl() || this.selectlist.length === 0) return; + var duped = this.dup_objects(this.selectlist); + this.unselect(); + this.selectlist = duped; + }, + + sel_start: [], + + input_lmouse_pressed() { + if (this.sel_comp) return; + + if (this.edit_mode === "brush") { + this.paste(); + return; + } + + if (this.selectlist.length === 1 && Keys.ctrl() && Keys.shift() && Keys.alt()) { + this.selectlist[0].set_center(screen2world(Mouse.pos)); + return; + } + + this.sel_start = screen2world(Mouse.pos); + }, + + points2cwh(start, end) { + var c = []; + c[0] = (end[0] - start[0]) / 2; + c[0] += start[0]; + c[1] = (end[1] - start[1]) / 2; + c[1] += start[1]; + var wh = []; + wh[0] = Math.abs(end[0] - start[0]); + wh[1] = Math.abs(end[1] - start[1]); + return {c: c, wh: wh}; + }, + + input_lmouse_released() { + Mouse.normal(); + if (!this.sel_start) return; + + if (this.sel_comp) { + this.sel_start = null; + return; + } + + var selects = []; + + /* TODO: selects somehow gets undefined objects in here */ + if (screen2world(Mouse.pos).equal(this.sel_start)) { + var sel = this.try_select(); + if (sel) selects.push(sel); + } else { + var box = this.points2cwh(this.sel_start, screen2world(Mouse.pos)); + + box.pos = box.c; + + var hits = physics.box_query(box); + + hits.forEach(function(x, i) { + var obj = this.do_select(x); + if (obj) + selects.push(obj); + },this); + + var levels = this.edit_level.objects.filter(function(x) { return x.file; }); + var lvlpos = []; + levels.forEach(function(x) { lvlpos.push(x.pos); }); + var lvlhits = physics.box_point_query(box, lvlpos); + + lvlhits.forEach(function(x) { selects.push(levels[x]); }); + } + + this.sel_start = null; + selects = selects.flat(); + selects = selects.unique(); + + if (selects.empty) return; + + if (Keys.shift()) { + selects.forEach(function(x) { + this.selectlist.push_unique(x); + }, this); + + return; + } + + if (Keys.ctrl()) { + selects.forEach(function(x) { + this.selectlist.remove(x); + }, this); + + return; + } + + this.selectlist = []; + selects.forEach(function(x) { + if (x !== null) + this.selectlist.push(x); + }, this); + }, + + mover(amt, snap) { + return function(go) { go.pos = go.pos.add(amt)}; + }, + + input_any_released() { + this.check_snapshot(); + this.edit_level.check_dirty(); + }, + + + step_amt() { return Keys.shift() ? 10 : 1; }, + + on_grid(pos) { + return pos.every(function(x) { return x % editor_config.grid_size === 0; }); + }, + + snapper(dir, grid) { + return function(go) { + go.pos = go.pos.add(dir.scale(grid/2)); + go.pos = go.pos.map(function(x) { return Math.snap(x, grid) }, this); + } + }, + + input_up_pressed() { + this.key_move([0,1]); + }, + + input_up_rep() { + this.input_up_pressed(); + }, + + input_left_pressed() { + this.key_move([-1,0]); + }, + + input_left_rep() { + this.input_left_pressed(); + }, + + key_move(dir) { + if (Keys.ctrl()) + this.selectlist.forEach(this.snapper(dir.scale(1.01), editor_config.grid_size)); + else + this.selectlist.forEach(this.mover(dir.scale(this.step_amt()))); + }, + + input_right_pressed() { + this.key_move([1,0]); + }, + + input_right_rep() { + this.input_right_pressed(); + }, + + input_down_pressed() { + this.key_move([0,-1]); + }, + + input_down_rep() { + this.input_down_pressed(); + }, + + /* Snapmode + 0 No snap + 1 Pixel snap + 2 Grid snap + */ + snapmode: 0, + + snapped_pos(pos) { + switch (this.snapmode) { + case 0: + return pos; + + case 1: + return pos.map(function(x) { return Math.round(x); }); + + case 2: + return pos.map + } + }, + + input_delete_pressed() { + this.selectlist.forEach(x => x.kill()); + this.unselect(); + }, + + unselect() { + this.selectlist = []; + this.grabselect = null; + this.sel_comp = null; + }, + + sel_comp: null, + + input_m_pressed() { + if (this.sel_comp) return; + if (Keys.ctrl()) { + this.selectlist.forEach(function(x) { + x.flipy = !x.flipy; + }); + } else + this.selectlist.forEach(function(x) { + x.flipx = !x.flipx; + }); + + }, + + input_u_pressed() { + if (Keys.ctrl()) { + this.selectlist.forEach(function(x) { + x.revert(); + }); + } + + if (Keys.alt()) { + this.selectlist.forEach(function(x) { + x.unique = true; + }); + } + }, + + comp_info: false, + + input_q_pressed() { + this.comp_info = !this.comp_info; + }, + + brush_obj: null, + + input_b_pressed() { + if (this.sel_comp) return; + if (this.brush_obj) { + this.brush_obj = null; + return; + } + + if (this.selectlist.length !== 1) return; + this.brush_obj = this.selectlist[0]; + this.unselect(); + }, + + camera_recalls: {}, + + input_num_pressed(num) { + if (Keys.ctrl()) { + this.camera_recalls[num] = { + pos:this.camera.pos, + zoom:this.camera.zoom + }; + return; + } + + if (Keys.alt()) { + switch(num) { + case 0: + Render.normal(); + break; + + case 2: + Render.wireframe(); + break; + } + + return; + } + + if (num === 0) { + this.camera.pos = [0,0]; + this.camera.zoom = 1; + return; + } + + if (num in this.camera_recalls) + Object.assign(this.camera, this.camera_recalls[num]); + }, + + zoom_to_bb(bb) { + var cwh = bb2cwh(bb); + + var xscale = cwh.wh.x / Window.width; + var yscale = cwh.wh.y / Window.height; + + var zoom = yscale > xscale ? yscale : xscale; + + this.camera.pos = cwh.c; + this.camera.zoom = zoom*1.3; + }, + + input_f_pressed() { + if (!Keys.ctrl()) { + if (this.selectlist.length === 0) return; + var bb = this.selectlist[0].boundingbox; + this.selectlist.forEach(function(obj) { bb = bb_expand(bb, obj.boundingbox); }); + this.zoom_to_bb(bb); + + return; + } + + if (Keys.shift()) { + if (!this.edit_level.level) return; + + this.edit_level = this.edit_level.level; + this.unselect(); + this.reset_undos(); + this.curlvl = this.edit_level.save(); + this.edit_level.filejson = this.edit_level.save(); + this.edit_level.check_dirty(); + } else { + if (this.selectlist.length === 1) { + if (!this.selectlist[0].file) return; + this.edit_level = this.selectlist[0]; + this.unselect(); + this.reset_undos(); + this.curlvl = this.edit_level.save(); + } + } + }, + + input_rmouse_down() { + if (Keys.ctrl() && Keys.alt()) + this.camera.zoom = this.z_start * (1 + (Mouse.pos[1] - this.mousejoy[1])/500); + }, + + z_start: 1, + + input_rmouse_released() { + Mouse.normal(); + }, + + input_rmouse_pressed() { + if (Keys.shift()) { + this.cursor = null; + return; + } + + if (Keys.ctrl() && Keys.alt()) { + this.mousejoy = Mouse.pos; + this.z_start = this.camera.zoom; + Mouse.disabled(); + return; + } + + if (this.brush_obj) + this.brush_obj = null; + + if (this.sel_comp) { + this.sel_comp = null; + return; + } + + this.unselect(); + }, + + grabselect: null, + mousejoy: [0,0], + joystart: [0,0], + + input_mmouse_pressed() { + if (Keys.ctrl() && Keys.alt()) { + this.mousejoy = Mouse.pos; + this.joystart = this.camera.pos; + return; + } + + if (Keys.shift() && Keys.ctrl()) { + this.cursor = find_com(this.selectlist); + return; + } + + if (this.brush_obj) { + this.selectlist = this.dup_objects([this.brush_obj]); + this.selectlist[0].pos = screen2world(Mouse.pos); + this.grabselect = this.selectlist[0]; + return; + } + + if (this.sel_comp && 'pick' in this.sel_comp) { + this.grabselect = this.sel_comp.pick(screen2world(Mouse.pos)); + if (!this.grabselect) return; + + this.moveoffset = this.sel_comp.gameobject.this2world(this.grabselect).sub(screen2world(Mouse.pos)); + return; + } + + var grabobj = this.try_select(); + if (Array.isArray(grabobj)) { + this.selectlist = grabobj; + return; + } + this.grabselect = null; + if (!grabobj) return; + + if (Keys.ctrl()) { + grabobj = this.dup_objects([grabobj])[0]; + } + + this.grabselect = grabobj; + + if (!this.selectlist.includes(grabobj)) { + this.selectlist = []; + this.selectlist.push(grabobj); + } + + this.moveoffset = this.grabselect.pos.sub(screen2world(Mouse.pos)); + }, + + input_mmouse_released() { + Mouse.normal(); + this.grabselect = null; + }, + + input_mmouse_down() { + if (Keys.shift() && !Keys.ctrl()) { + this.cursor = Mouse.worldpos; + return; + } + + if (Keys.alt() && Keys.ctrl()) { + this.camera.pos = this.joystart.add(Mouse.pos.sub(this.mousejoy).mapc(mult, [-1,1]).scale(editor_camera.zoom)); + return; + } + + if (!this.grabselect) return; + + if ('pos' in this.grabselect) + this.grabselect.pos = this.moveoffset.add(screen2world(Mouse.pos)); + else + this.grabselect.set(this.selectlist[0].world2this(this.moveoffset.add(screen2world(Mouse.pos)))); + }, + + + stash: "", + + start_play_ed() { + this.stash = this.edit_level.save(); + this.edit_level.kill(); + load_configs("game.config"); + game.start(); + unset_pawn(this); + set_pawn(limited_editor); + Register.unregister_obj(this); + }, + + input_f5_pressed() { + /* Start debug.lvl */ + if (!sim_playing()) { + this.start_play_ed(); + Level.loadlevel("debug_start.lvl"); + } + }, + + input_f6_pressed() { + /* Start game.lvl */ + if (!sim_playing()) { + this.start_play_ed(); +// Level.loadlevel( + /* Load level of what was being edited */ + } + }, + + input_f7_pressed() { + /* Start current level */ + if (!sim_playing()) { + this.start_play_ed(); + Level.loadlevel("game.lvl"); + } + }, + + input_escape_pressed() { + this.openpanel(quitpanel); + }, + + moveoffsets: [], + + input_g_pressed() { + if (Keys.ctrl() && Keys.shift()) { + Log.info("Saving as level..."); + this.openpanel(groupsaveaspanel); + return; + } + + if (Keys.alt() && this.cursor) { + var com = find_com(this.selectlist); + this.selectlist.forEach(function(x) { + x.pos = x.pos.sub(com).add(this.cursor); + },this); + } + + if (this.sel_comp) { + if ('pos' in this.sel_comp) + this.moveoffset = this.sel_comp.pos.sub(screen2world(Mouse.pos)); + + return; + } + + if (Keys.ctrl()) { + this.selectlist = this.dup_objects(this.selectlist); + } + + this.selectlist.forEach(function(x,i) { + this.moveoffsets[i] = x.pos.sub(screen2world(Mouse.pos)); + }, this); + }, + + input_g_down() { + if (Keys.alt()) return; + if (this.sel_comp) { + this.sel_comp.pos = this.moveoffset.add(screen2world(Mouse.pos)); + return; + } + + if (this.moveoffsets.length === 0) return; + + this.selectlist.forEach(function(x,i) { + x.pos = this.moveoffsets[i].add(screen2world(Mouse.pos)); + }, this); + }, + + input_g_released() { + this.moveoffsets = []; + }, + + scaleoffset: 0, + startscales: [], + selected_com: [0,0], + + openpanel(panel, dontsteal) { + if (this.curpanel) + this.curpanel.close(); + + this.curpanel = panel; + + var stolen = this; + if (dontsteal) + stolen = null; + + this.curpanel.open(stolen); + }, + + curpanels: [], + addpanel(panel) { + this.curpanels.push(panel); + panel.open(); + }, + + cleanpanels(panel) { + this.curpanels = this.curpanels.filter(function(x) { return x.on; }); + }, + + input_s_pressed() { + if (Keys.ctrl()) { + if (Keys.shift()) { + this.openpanel(saveaspanel); + return; + } + + if (this.edit_level.level) { + if (!this.edit_level.unique) + this.save_current(); + + this.selectlist = []; + this.selectlist.push(this.edit_level); + this.edit_level = this.edit_level.level; + + return; + } + + this.save_current(); + return; + } + + var offf = this.cursor ? this.cursor : this.selected_com; + this.scaleoffset = Vector.length(Mouse.worldpos.sub(offf)); + + if (this.sel_comp) { + if (!('scale' in this.sel_comp)) return; + this.startscales = []; + this.startscales.push(this.sel_comp.scale); + return; + } + + this.selectlist.forEach(function(x, i) { + this.startscales[i] = x.scale; + if (this.cursor) + this.startoffs[i] = x.pos.sub(this.cursor); + }, this); + }, + + input_s_down() { + if (!this.scaleoffset) return; + var offf = this.cursor ? this.cursor : this.selected_com; + var dist = Vector.length(screen2world(Mouse.pos).sub(offf)); + var scalediff = dist/this.scaleoffset; + + if (this.sel_comp) { + if (!('scale' in this.sel_comp)) return; + this.sel_comp.scale = this.startscales[0] * scalediff; + return; + } + + this.selectlist.forEach(function(x, i) { + x.scale = this.startscales[i] * scalediff; + if (this.cursor) + x.pos = this.cursor.add(this.startoffs[i].scale(scalediff)); + }, this); + }, + + input_s_released() { + this.scaleoffset = null; + }, + + startrots: [], + startpos: [], + startoffs: [], + + input_r_pressed() { + this.startrots = []; + + if (Keys.ctrl()) { + this.selectlist.forEach(function(x) { + x.angle = -x.angle; + }); + return; + } + + if (this.sel_comp && 'angle' in this.sel_comp) { + var relpos = screen2world(Mouse.pos).sub(this.sel_comp.gameobject.pos); + this.startoffset = Math.atan2(relpos.y, relpos.x); + this.startrot = this.sel_comp.angle; + + return; + } + + var offf = this.cursor ? this.cursor : this.selected_com; + var relpos = screen2world(Mouse.pos).sub(offf); + this.startoffset = Math.atan2(relpos[1], relpos[0]); + + this.selectlist.forEach(function(x, i) { + this.startrots[i] = x.angle; + this.startpos[i] = x.pos; + this.startoffs[i] = x.pos.sub(offf); + }, this); + }, + + input_r_down() { + if (this.sel_comp && 'angle' in this.sel_comp) { + if (!('angle' in this.sel_comp)) return; + var relpos = screen2world(Mouse.pos).sub(this.sel_comp.gameobject.pos); + var anglediff = Math.rad2deg(Math.atan2(relpos.y, relpos.x)) - this.startoffset; + this.sel_comp.angle = this.startrot + anglediff; + return; + } + if (this.startrots.empty) return; + + var offf = this.cursor ? this.cursor : this.selected_com; + var relpos = screen2world(Mouse.pos).sub(offf); + var anglediff = Math.rad2deg(Math.atan2(relpos[1], relpos[0]) - this.startoffset); + + if (this.cursor) { + this.selectlist.forEach(function(x, i) { + x.angle = this.startrots[i] + anglediff; + x.pos = offf.add(this.startoffs[i].rotate(Math.deg2rad(anglediff))); + }, this); + } else { + this.selectlist.forEach(function(x,i) { + x.angle = this.startrots[i]+anglediff; + }, this); + } + }, + + snapshots: [], + curlvl: {}, /* What the level currently looks like on file */ + + reset_undos() { + this.snapshots = []; + this.backshots = []; + }, + + check_snapshot() { + if (!this.selectlist.empty || this.grabselect) this.snapshot(); + }, + + snapshot() { + var cur = this.edit_level.save(); + var dif = diff(cur, this.curlvl); + + if (dif.empty) return; + + this.snapshots.push(this.curlvl); + this.backshots = []; + this.curlvl = cur; + return; + + this.snapshots.push(dif); + + this.backshots = []; + this.backshots.push(diff(this.curlvl, cur)); + this.curlvl = cur; + this.edit_level.check_dirty(); + }, + + backshots: [], /* Redo snapshots */ + + restore_lvl(lvl) { + this.unselect(); + this.edit_level.clear(); + this.edit_level.load(lvl); + this.edit_level.check_dirty(); + }, + + diff_lvl(d) { + this.unselect(); + for (var key in d) { + if (d[key] === "DELETE") + Game.objects[key].kill(); + } + diffassign(Game.objects, d); + Game.objects.forEach(function(x) { x.sync(); }); + this.curlvl = this.edit_level.save(); + }, + + redo() { + if (this.backshots.empty) { + Log.info("Nothing to redo."); + return; + } + + this.snapshots.push(this.edit_level.save()); + var dd = this.backshots.pop(); + this.edit_level.clear(); + this.edit_level.load(dd); + this.edit_level.check_dirty(); + this.curlvl = dd; + return; + + var dd = this.backshots.pop(); + this.snapshots.push(dd); + if (this.was_undoing) { + dd = this.backshots.pop(); + this.snapshots.push(dd); + this.was_undoing = false; + } + + this.diff_lvl(dd); + }, + + undo() { + if (this.snapshots.empty) { + Log.info("Nothing to undo."); + return; + } + this.unselect(); + this.backshots.push(this.edit_level.save()); + var dd = this.snapshots.pop(); + this.edit_level.clear(); + this.edit_level.load(dd); + this.edit_level.check_dirty(); + this.curlvl = dd; + return; + + this.backshots.push(dd); + + if (!this.was_undoing) { + dd = this.snapshots.pop(); + this.backshots.push(dd); + this.was_undoing = true; + } + + this.diff_lvl(dd); + }, + + restore_buffer() { + this.restore_level(this.filesnap); + }, + + input_z_pressed() { + if (Keys.ctrl()) { + if (Keys.shift()) + this.redo(); + else + this.undo(); + } + }, + + save_current() { + if (!this.edit_level.file) { + this.openpanel(saveaspanel); + return; + } + + var lvl = this.edit_level.save(); + + Log.info("Saving level of size " + lvl.length + " bytes."); + + slurpwrite(lvl, this.edit_level.file); + this.edit_level.filejson = lvl; + this.edit_level.check_dirty(); + + if (this.edit_level.script) { + var scriptfile = this.edit_level.file.replace('.lvl', '.js'); + slurpwrite(this.edit_level.script, scriptfile); + } + + Level.sync_file(this.edit_level.file); + }, + + input_t_pressed() { + if (Keys.ctrl()) { + if (Keys.shift()) { + if (this.selectlist.length !== 1) return; + this.openpanel(savetypeas); + return; + } + } + + this.selectlist.forEach(function(x) { x.selectable = false; }); + + if (Keys.alt()) + this.edit_level.objects.forEach(function(x) { x.selectable = true; }); + }, + + clear_level() { + Log.info("Closed level."); + + if (this.edit_level.level) { + this.openpanel(gen_notify("Can't close a nested level. Save up to the root before continuing.")); + return; + } + + this.unselect(); + this.edit_level.kill(); + this.edit_level = Level.create(); + }, + + input_n_pressed() { + if (!Keys.ctrl()) return; + + if (this.edit_level.dirty) { + Log.info("Level has changed; save before starting a new one."); + this.openpanel(gen_notify("Level is changed. Are you sure you want to close it?", _ => this.clear_level())); + return; + } + + this.clear_level(); + }, + + _sel_comp: null, + get sel_comp() { return this._sel_comp; }, + set sel_comp(x) { + if (this._sel_comp) + unset_pawn(this._sel_comp); + + this._sel_comp = x; + + if (this._sel_comp) { + Log.info("sel comp is now " + this._sel_comp); + set_pawn(this._sel_comp); + } + }, + + input_tab_pressed() { + if (!this.selectlist.length === 1) return; + if (!this.selectlist[0].components) return; + + var sel = this.selectlist[0].components; + + if (!this.sel_comp) + this.sel_comp = sel.nth(0); + else { + var idx = sel.findIndex(this.sel_comp) + 1; + if (idx >= Object.keys(sel).length) + this.sel_comp = null; + else + this.sel_comp = sel.nth(idx); + } + + }, + + time: 0, + + ed_gui() { + + this.time = Date.now(); + /* Clean out killed objects */ + this.selectlist = this.selectlist.filter(function(x) { return x.alive; }); + + GUI.text("WORKING LAYER: " + this.working_layer, [0,520], 1); + GUI.text("MODE: " + this.edit_mode, [0,500],1); + + Debug.point(world2screen(this.edit_level.pos), 5, Color.yellow); + if (this.cursor) { + Debug.point(world2screen(this.cursor), 5, Color.green); + + this.selectlist.forEach(function(x) { + var p = []; + p.push(world2screen(this.cursor)); + p.push(world2screen(x.pos)); + Debug.line(p, Color.green); + },this); + } + + if (this.programmode) { + this.edit_level.objects.forEach(function(x) { + if (x.hasOwn('varname')) GUI.text(x.varname, world2screen(x.pos).add([0,32]), 1, [84,110,255]); + }); + } + + if (this.comp_info && this.sel_comp && 'help' in this.sel_comp) { + GUI.text(this.sel_comp.help, [100,700],1); + } + + gui_text("0,0", world2screen([0,0]), 1); + + var clvl = this.edit_level; + var ypos = 200; + var lvlcolor = Color.white; + while (clvl) { + var lvlstr = clvl.file ? clvl.file : "NEW LEVEL"; + if (clvl.unique) + lvlstr += "#"; + else if (clvl.dirty) + lvlstr += "*"; + GUI.text(lvlstr, [0, ypos], 1, lvlcolor); + + lvlcolor = Color.gray; + + clvl = clvl.level; + if (clvl) { + GUI.text("^^^^^^", [0,ypos+5],1); + ypos += 5; + } + ypos += 15; + } + + this.edit_level.objects.forEach(function(x) { + if ('ed_gizmo' in x) + x.ed_gizmo(); + }); + + if (Debug.phys_drawing) + this.edit_level.objects.forEach(function(x) { + Debug.point(world2screen(x.pos), 2, Color.teal); + }); + + this.selectlist.forEach(function(x) { + var color = x.color ? x.color : [255,255,255]; + GUI.text(x.toString(), world2screen(x.pos).add([0, 16]), 1, color); + GUI.text(x.pos.map(function(x) { return Math.round(x); }), world2screen(x.pos), 1, color); + Debug.arrow(world2screen(x.pos), world2screen(x.pos.add(x.up.scale(40))), Color.yellow, 1); + if (x.hasOwn('varname')) GUI.text(x.varname, world2screen(x.pos).add([0,32]), 1, [84,110,255]); + if ('gizmo' in x && typeof x['gizmo'] === 'function' ) + x.gizmo(); + + if (x.hasOwn('file')) + x.objects.forEach(function(x) { + GUI.text(x.toString(), world2screen(x.pos).add([0,16]),1,Color.blue); + }); + }); + + + if (this.selectlist.length === 1) { + var i = 1; + for (var key in this.selectlist[0].components) { + var selected = this.sel_comp === this.selectlist[0].components[key]; + var str = (selected ? ">" : " ") + key + " [" + this.selectlist[0].components[key].name + "]"; + gui_text(str, world2screen(this.selectlist[0].pos).add([0,-16*(i++)]), 1); + } + + if (this.sel_comp) { + if ('gizmo' in this.sel_comp) this.sel_comp.gizmo(); + } + } + + Game.objects.forEach(function(obj) { + if (!obj.selectable) + gui_img("icons/icons8-lock-16.png", world2screen(obj.pos)); + }); + + Debug.draw_grid(1, editor_config.grid_size/editor_camera.zoom); + var startgrid = screen2world([-20,Window.height]).map(function(x) { return Math.snap(x, editor_config.grid_size); }, this); + var endgrid = screen2world([Window.width, 0]); + + while(startgrid[0] <= endgrid[0]) { + gui_text(startgrid[0], [world2screen([startgrid[0], 0])[0], 1], 1); + startgrid[0] += editor_config.grid_size; + } + + while(startgrid[1] <= endgrid[1]) { + gui_text(startgrid[1], [0, world2screen([0, startgrid[1]])[1]], 1); + startgrid[1] += editor_config.grid_size; + } + + Debug.point(world2screen(this.selected_com), 3); + this.selected_com = find_com(this.selectlist); + + /* Draw selection box */ + if (this.sel_start) { + var endpos = screen2world(Mouse.pos); + var c = []; + c[0] = (endpos[0] - this.sel_start[0]) / 2; + c[0] += this.sel_start[0]; + c[1] = (endpos[1] - this.sel_start[1]) / 2; + c[1] += this.sel_start[1]; + var wh = []; + wh[0] = Math.abs(endpos[0] - this.sel_start[0]); + wh[1] = Math.abs(endpos[1] - this.sel_start[1]); + wh[0] /= editor.camera.zoom; + wh[1] /= editor.camera.zoom; + var bb = cwh2bb(world2screen(c),wh); + Debug.boundingbox(bb, [255,255,255,10]); + Debug.line(bb2points(bb).wrapped(1), Color.white); + } + + if (this.curpanel && this.curpanel.on) + this.curpanel.gui(); + + this.curpanels.forEach(function(x) { + if (x.on) x.gui(); + }); + + if (this.repl) { + Nuke.window("repl"); + Nuke.newrow(500); + var log = cmd(84); + var f = log.prev('\n', 0, 10); + Nuke.scrolltext(log.slice(f)); + + Nuke.end(); + } + + }, + + input_lbracket_pressed() { + if (!Keys.ctrl()) return; + editor_config.grid_size -= Keys.shift() ? 10 : 1; + if (editor_config.grid_size <= 0) editor_config.grid_size = 1; + }, + input_lbracket_rep() { this.input_lbracket_pressed(); }, + + input_rbracket_pressed() { + if (!Keys.ctrl()) return; + editor_config.grid_size += Keys.shift() ? 10 : 1; + }, + + input_rbracket_rep() { this.input_rbracket_pressed(); }, + + grid_size: 100, + + ed_debug() { + if (!Debug.phys_drawing) + this.selectlist.forEach(function(x) { Debug.draw_obj_phys(x); }); + }, + + viewasset(path) { + Log.info(path); + var fn = function(x) { return path.endsWith(x); }; + if (images.any(fn)) { + var newtex = copy(texgui, { path: path }); + this.addpanel(newtex); + } + else if (sounds.any(fn)) + Log.info("selected a sound"); + }, + + killring: [], + killcom: [], + + input_c_pressed() { + if (this.sel_comp) return; + if (!Keys.ctrl()) return; + this.killring = []; + this.killcom = []; + + this.selectlist.forEach(function(x) { + this.killring.push(x); + },this); + + this.killcom = find_com(this.killring); + }, + + input_x_pressed() { + if (!Keys.ctrl()) return; + + this.input_c_pressed(); + this.killring.forEach(function(x) { x.kill(); }); + }, + + paste() { + this.selectlist = this.dup_objects(this.killring); + + var setpos = this.cursor ? this.cursor : Mouse.worldpos; + this.selectlist.forEach(function(x) { + x.pos = x.pos.sub(this.killcom).add(setpos); + },this); + }, + + input_v_pressed() { + if (!Keys.ctrl()) return; + this.paste(); + }, + + input_e_pressed() { + if (Keys.ctrl()) { + this.openpanel(assetexplorer); + return; + } + }, + + lvl_history: [], + + load(file) { + if (this.edit_level) this.lvl_history.push(this.edit_level.file); + this.edit_level.clear(); + this.edit_level = Level.loadfile(file); + this.curlvl = this.edit_level.save(); + this.unselect(); + }, + + load_prev() { + if (this.lvl_history.length === 0) return; + + var file = this.lvl_history.pop(); + this.edit_level = Level.loadfile(file); + this.unselect(); + }, + + addlevel(file, pos) { + Log.info("adding file " + file + " at pos " + pos); + var newlvl = this.edit_level.addfile(file); + newlvl.pos = pos; + this.selectlist = []; + this.selectlist.push(newlvl); + return; + }, + + load_json(json) { + this.edit_level.load(json); + this.curlvl = this.edit_level.save(); + this.unselect(); + }, + + groupsaveas(group, file) { + if (!file) return; + + file = file+".lvl"; + if (IO.exists(file)) { + this.openpanel(gen_notify("Level already exists with that name. Overwrite?", dosave.bind(this,file))); + return; + } else + dosave(file); + + function dosave(file) { + var com = find_com(group); + Level.saveas(group, file); + editor.addlevel(file, com); + + group.forEach(function(x) { x.kill(); }); + } + }, + + saveas_check(file) { + if (!file) return; + + if (!file.endsWith(".lvl")) + file = file + ".lvl"; + + if (IO.exists(file)) { + notifypanel.action = editor.saveas; + this.openpanel(gen_notify("Level already exists with that name. Overwrite?", this.saveas.bind(this, file))); + } else + this.saveas(file); + }, + + saveas(file) { + if (!file) return; + + Log.info("made it"); + + this.edit_level.file = file; + this.save_current(); + }, + + input_h_pressed() { + if (this.sel_comp) return; + if (Keys.ctrl()) { + Game.objects.forEach(function(x) { x.visible = true; }); + } else { + var visible = true; + this.selectlist.forEach(function(x) { if (x.visible) visible = false; }); + this.selectlist.forEach(function(x) { x.visible = visible; }); + } + }, + + input_a_pressed() { + if (Keys.alt()) { + this.openpanel(prefabpanel); + return; + } + if (!Keys.ctrl()) return; + if (!this.selectlist.empty) { + this.unselect(); + return; + } + this.unselect(); + + this.selectlist = this.edit_level.objects.slice(); + }, + + repl: false, + input_backtick_pressed() { this.repl = !this.repl; }, +} + +var inputpanel = { + title: "untitled", + value: "", + on: false, + stolen: {}, + + gui() { + Nuke.window(this.title); + Nuke.newline(); + this.guibody(); + + if (Nuke.button("close")) + this.close(); + + Nuke.end(); + return false; + }, + + guibody() { + this.value = Nuke.textbox(this.value); + + Nuke.newline(2); + if (Nuke.button("submit")) { + this.submit(); + return true; + } + }, + + open(steal) { + this.on = true; + this.value = ""; + if (steal) { + this.stolen = steal; + unset_pawn(this.stolen); + set_pawn(this); + } + this.start(); + this.keycb(); + }, + + start() {}, + + + close() { + unset_pawn(this); + if (this.stolen) { + set_pawn(this.stolen); + this.stolen = null; + } + + this.on = false; + if ('on_close' in this) + this.on_close(); + }, + + action() { + + }, + + closeonsubmit: true, + submit() { + if (!this.submit_check()) return; + this.action(); + if (this.closeonsubmit) + this.close(); + }, + + submit_check() { return true; }, + + input_enter_pressed() { + this.submit(); + }, + + input_text(char) { + this.value += char; + this.keycb(); + }, + + keycb() {}, + + input_backspace_pressrep() { + this.value = this.value.slice(0,-1); + this.keycb(); + }, + + input_escape_pressed() { + this.close(); + }, +}; + +function proto_count_lvls(name) +{ + if (!this.occs) this.occs = {}; + if (name in this.occs) return this.occs[name]; + var lvls = IO.extensions("lvl"); + var occs = {}; + var total = 0; + lvls.forEach(function(lvl) { + var json = JSON.parse(IO.slurp(lvl)); + var count = 0; + json.forEach(function(x) { if (x.from === name) count++; }); + occs[lvl] = count; + total += count; + }); + + this.occs[name] = occs; + this.occs[name].total = total; + + return this.occs[name]; +} +proto_count_lvls = proto_count_lvls.bind(proto_count_lvls); + +function proto_used(name) { + var occs = proto_count_lvls(name); + var used = false; + occs.forEach(function(x) { if (x > 0) used = true; }); + + Log.info(used); +} + +function proto_total_use(name) { + return proto_count_lvls(name).total; +} + +function proto_children(name) { + var children = []; + + for (var key in gameobjects) + if (gameobjects[key].from === name) children.push(gameobjects[key]); + + return children; +} + +var texteditor = clone(inputpanel, { + title: "text editor", + _cursor:0, /* Text cursor: [char,line] */ + get cursor() { return this._cursor; }, + set cursor(x) { + if (x > this.value.length) + x = this.value.length; + if (x < 0) + x = 0; + + this._cursor = x; + this.line = this.get_line(); + }, + + submit() {}, + + line: 0, + killring: [], + undos: [], + startbuffer: "", + + savestate() { + this.undos.push(this.value.slice()); + }, + + popstate() { + if (this.undos.length === 0) return; + this.value = this.undos.pop(); + this.cursor = this.cursor; + }, + + input_s_pressed() { + if (!Keys.ctrl()) return; + Log.info("SAVING"); + editor.save_current(); + }, + + input_u_pressrep() { + if (!Keys.ctrl()) return; + this.popstate(); + }, + + copy(start, end) { + return this.value.slice(start,end); + }, + + input_q_pressed() { + if (!Keys.ctrl()) return; + + var ws = this.prev_word(this.cursor); + var we = this.end_of_word(this.cursor)+1; + var find = this.copy(ws, we); + var obj = editor.edit_level.varname2obj(find); + + if (obj) { + editor.unselect(); + editor.selectlist.push(obj); + } + }, + + delete_line(p) { + var ls = this.line_start(p); + var le = this.line_end(p)+1; + this.cut_span(ls,le); + this.to_line_start(); + }, + + line_blank(p) { + var ls = this.line_start(p); + var le = this.line_end(p); + var line = this.value.slice(ls, le); + if (line.search(/[^\s]/g) === -1) + return true; + else + return false; + }, + + input_o_pressed() { + if (Keys.alt()) { + /* Delete all surrounding blank lines */ + while (this.line_blank(this.next_line(this.cursor))) + this.delete_line(this.next_line(this.cursor)); + + while (this.line_blank(this.prev_line(this.cursor))) + this.delete_line(this.prev_line(this.cursor)); + } else if (Keys.ctrl()) { + this.insert_char('\n'); + this.cursor--; + } + }, + + get_line() { + var line = 0; + for (var i = 0; i < this.cursor; i++) + if (this.value[i] === "\n") + line++; + + return line; + }, + + start() { + this.cursor = 0; + this.startbuffer = this.value.slice(); + }, + + get dirty() { + return this.startbuffer !== this.value; + }, + + gui() { + GUI.text_cursor(this.value, [100,700],1,this.cursor+1); + GUI.text("C" + this.cursor + ":::L" + this.line + ":::" + (this.dirty ? "DIRTY" : "CLEAN"), [100,100], 1); + }, + + insert_char(char) { + this.value = this.value.slice(0,this.cursor) + char + this.value.slice(this.cursor); + this.cursor++; + }, + + input_enter_pressrep() { + var white = this.line_starting_whitespace(this.cursor); + this.insert_char('\n'); + + for (var i = 0; i < white; i++) + this.insert_char(" "); + + }, + + input_text(char) { + if (Keys.ctrl() || Keys.alt()) return; + this.insert_char(char); + this.keycb(); + }, + + input_d_pressrep() { + if (Keys.ctrl()) + this.value = this.value.slice(0,this.cursor) + this.value.slice(this.cursor+1); + else if (Keys.alt()) + this.cut_span(this.cursor, this.end_of_word(this.cursor)+1); + }, + + input_backspace_pressrep() { + this.value = this.value.slice(0,this.cursor-1) + this.value.slice(this.cursor); + this.cursor--; + }, + + input_a_pressed() { + if (Keys.ctrl()) { + this.to_line_start(); + this.desired_inset = this.inset; + } + }, + + input_y_pressed() { + if (!Keys.ctrl()) return; + if (this.killring.length === 0) return; + this.insert_char(this.killring.pop()); + }, + + line_starting_whitespace(p) { + var white = 0; + var l = this.line_start(p); + + while (this.value[l] === " ") { + white++; + l++; + } + + return white; + }, + + input_e_pressed() { + if (Keys.ctrl()) { + this.to_line_end(); + this.desired_inset = this.inset; + } + }, + + input_k_pressrep() { + if (Keys.ctrl()) { + if (this.cursor === this.value.length-1) return; + var killamt = this.value.next('\n', this.cursor) - this.cursor; + var killed = this.cut_span(this.cursor-1, this.cursor+killamt); + this.killring.push(killed); + } else if (Keys.alt()) { + var prevn = this.value.prev('\n', this.cursor); + var killamt = this.cursor - prevn; + var killed = this.cut_span(prevn+1, prevn+killamt); + this.killring.push(killed); + this.to_line_start(); + } + }, + + input_b_pressrep() { + if (Keys.ctrl()) { + this.cursor--; + } else if (Keys.alt()) { + this.cursor = this.prev_word(this.cursor-2); + } + + this.desired_inset = this.inset; + }, + + input_f_pressrep() { + if (Keys.ctrl()) { + this.cursor++; + } else if (Keys.alt()) { + this.cursor = this.next_word(this.cursor); + } + + this.desired_inset = this.inset; + }, + + cut_span(start, end) { + if (end < start) return; + this.savestate(); + var ret = this.value.slice(start,end); + this.value = this.value.slice(0,start) + this.value.slice(end); + if (start > this.cursor) + return ret; + + this.cursor -= ret.length; + return ret; + }, + + next_word(pos) { + var v = this.value.slice(pos+1).search(/[^\w]\w/g); + if (v === -1) return pos; + return pos + v + 2; + }, + + prev_word(pos) { + while (this.value.slice(pos,pos+2).search(/[^\w]\w/g) === -1 && pos > 0) + pos--; + + return pos+1; + }, + + end_of_word(pos) { + var l = this.value.slice(pos).search(/\w[^\w]/g); + return l+pos; + }, + + get inset() { + return this.cursor - this.value.prev('\n', this.cursor) - 1; + }, + + line_start(p) { + return this.value.prev('\n', p)+1; + }, + + line_end(p) { + return this.value.next('\n', p); + }, + + next_line(p) { + return this.value.next('\n',p)+1; + }, + + prev_line(p) { + return this.line_start(this.value.prev('\n', p)); + }, + + to_line_start() { + this.cursor = this.value.prev('\n', this.cursor)+1; + }, + + to_line_end() { + var p = this.value.next('\n', this.cursor); + if (p === -1) + this.to_file_end(); + else + this.cursor = p; + }, + + line_width(pos) { + var start = this.line_start(pos); + var end = this.line_end(pos); + if (end === -1) + end = this.value.length; + + return end-start; + }, + + to_file_end() { this.cursor = this.value.length; }, + + to_file_start() { this.cursor = 0; }, + + desired_inset: 0, + + input_p_pressrep() { + if (Keys.ctrl()) { + if (this.cursor === 0) return; + this.desired_inset = Math.max(this.desired_inset, this.inset); + this.cursor = this.prev_line(this.cursor); + var newlinew = this.line_width(this.cursor); + this.cursor += Math.min(this.desired_inset, newlinew); + } else if (Keys.alt()) { + while (this.line_blank(this.cursor)) + this.cursor = this.prev_line(this.cursor); + + while (!this.line_blank(this.cursor)) + this.cursor = this.prev_line(this.cursor); + } + }, + + input_n_pressrep() { + if (Keys.ctrl()) { + if (this.cursor === this.value.length-1) return; + if (this.value.next('\n', this.cursor) === -1) { + this.to_file_end(); + return; + } + + this.desired_inset = Math.max(this.desired_inset, this.inset); + this.cursor = this.next_line(this.cursor); + var newlinew = this.line_width(this.cursor); + this.cursor += Math.min(this.desired_inset, newlinew); + } else if (Keys.alt()) { + while (this.line_blank(this.cursor)) + this.cursor = this.next_line(this.cursor); + + while (!this.line_blank(this.cursor)) + this.cursor = this.next_line(this.cursor); + } + }, + +}); + +var protoexplorer = copy(inputpanel, { + title: "prototype explorer", + waitclose:false, + + guibody() { + var treeleaf = function(name) { + for (var key in gameobjects) { + if (gameobjects[key].from === name) { + var goname = gameobjects[key].name; + if (Nuke.tree(goname)) { + var lvluses = proto_total_use(goname); + var childcount = proto_children(goname).length; + if (lvluses === 0 && childcount === 0 && gameobjects[key].from !== 'gameobject') { + if (Nuke.button("delete")) { + Log.info("Deleting the prototype " + goname); + delete gameobjects[goname]; + editor.save_prototypes(); + } + } else { + if (Nuke.tree("Occurs " + lvluses + " times in levels.")) { + var occs = proto_count_lvls(goname); + for (var lvl in occs) { + if (occs[lvl] === 0) continue; + Nuke.label(lvl + ": " + occs[lvl]); + } + + Nuke.tree_pop(); + } + Nuke.label("Has " + proto_children(goname).length + " descendents."); + + if (Nuke.button("spawn")) { + var proto = gameobjects[goname]; + var obj = this.edit_level.spawn(proto); + obj.pos = Mouse.worldpos; + editor.unselect(); + editor.selectlist.push(obj); + this.waitclose = true; + } + + if (Nuke.button("view")) { + objectexplorer.obj = gameobjects[goname]; + editor.openpanel(objectexplorer); + } + } + + treeleaf(goname); + Nuke.tree_pop(); + } + } + } + } + + treeleaf = treeleaf.bind(this); + + if (Nuke.tree("gameobject")) { + treeleaf("gameobject"); + Nuke.tree_pop(); + } + + if (this.waitclose) { + this.waitclose = false; + this.close(); + } + }, +}); + +var objectexplorer = copy(inputpanel, { + title: "object explorer", + obj: null, + previous: [], + start() { + this.previous = []; + Input.setnuke(); + }, + + on_close() { Input.setgame(); }, + + input_enter_pressed() {}, + + goto_obj(obj) { + if (obj === this.obj) return; + this.previous.push(this.obj); + this.obj = obj; + }, + + input_lmouse_pressed() { + Mouse.disabled(); + }, + + input_lmouse_released() { + Mouse.normal(); + }, + + guibody() { + Nuke.label("Examining " + this.obj); + + var n = 0; + var curobj = this.obj; + while (curobj) { + n++; + curobj = curobj.__proto__; + } + + n--; + Nuke.newline(n); + curobj = this.obj.__proto__; + while (curobj) { + if (Nuke.button(curobj.toString())) + this.goto_obj(curobj); + + curobj = curobj.__proto__; + } + + Nuke.newline(2); + + if (this.previous.empty) + Nuke.label(""); + else { + if (Nuke.button("prev: " + this.previous.last)) + this.obj = this.previous.pop(); + } + + Object.getOwnPropertyNames(this.obj).forEach(key => { + var descriptor = Object.getOwnPropertyDescriptor(this.obj, key); + if (!descriptor) return; + var hidden = !descriptor.enumerable; + var writable = descriptor.writable; + var configurable = descriptor.configurable; + + if (!descriptor.configurable) return; + if (hidden) return; + + var name = (hidden ? "[hidden] " : "") + key; + var val = this.obj[key]; + + var nuke_str = key + "_nuke"; + if (nuke_str in this.obj) { + this.obj[nuke_str](); + if (key in this.obj.__proto__) { + if (Nuke.button("delete " + key)) { + if (("_" + key) in this.obj) + delete this.obj["_"+key]; + else + delete this.obj[key]; + } + } + } else + switch (typeof val) { + case 'object': + if (val) { + if (Array.isArray(val)) { + this.obj[key] = Nuke.pprop(key,val); + break; + } + + Nuke.newline(2); + Nuke.label(name); + if (Nuke.button(val.toString())) this.goto_obj(val); + } else { + this.obj[key] = Nuke.pprop(key,val); + } + break; + + case 'function': + Nuke.newline(2); + Nuke.label(name); + Nuke.label("function"); + break; + + default: + if (!hidden) {// && Object.getOwnPropertyDescriptor(this.obj, key).writable) { + if (key.startsWith('_')) key = key.slice(1); + + this.obj[key] = Nuke.pprop(key, this.obj[key]); + + if (key in this.obj.__proto__) { + if (Nuke.button("delete " + key)) { + if ("_"+key in this.obj) + delete this.obj["_"+key]; + else + delete this.obj[key]; + } + } + } + else { + Nuke.newline(2); + Nuke.label(name); + Nuke.label(val.toString()); + } + break; + } + }); + + Nuke.newline(); + Nuke.label("Properties that can be pulled in ..."); + Nuke.newline(3); + var pullprops = []; + for (var key in this.obj.__proto__) { + if (key.startsWith('_')) key = key.slice(1); + if (!this.obj.hasOwn(key)) { + if (typeof this.obj[key] === 'object' || typeof this.obj[key] === 'function') continue; + pullprops.push(key); + } + } + + pullprops = pullprops.sort(); + + pullprops.forEach(function(key) { + if (Nuke.button(key)) + this.obj[key] = this.obj[key]; + }, this); + + Game.objects.forEach(function(x) { x.sync(); }); + + Nuke.newline(); + }, + + +}); + +var helppanel = copy(inputpanel, { + title: "help", + + start() { + this.helptext = slurp("editor.adoc"); + }, + + guibody() { + Nuke.label(this.helptext); + }, +}); + +var openlevelpanel = copy(inputpanel, { + title: "open level", + action() { + editor.load(this.value); + }, + + assets: [], + allassets: [], + extensions: ["lvl"], + + submit_check() { + if (this.assets.length === 1) { + this.value = this.assets[0]; + return true; + } else { + return this.assets.includes(this.value); + } + }, + + start() { + this.allassets = []; + + if (this.allassets.empty) { + this.extensions.forEach(function(x) { + this.allassets.push(cmd(66, "." + x)); + }, this); + } + this.allassets = this.allassets.flat().sort(); + this.assets = this.allassets.slice(); + }, + + keycb() { + this.assets = this.allassets.filter(x => x.search(this.value) !== -1); + }, + + input_tab_pressed() { + this.value = tab_complete(this.value, this.assets); + }, + + guibody() { + this.value = Nuke.textbox(this.value); + + this.assets.forEach(function(x) { + if (Nuke.button(x)) { + this.value = x; + this.submit(); + } + }, this); + + Nuke.newline(2); + + if (Nuke.button("submit")) { + this.submit(); + } + }, +}); + +var addlevelpanel = copy(openlevelpanel, { + title: "add level", + action() { editor.addlevel(this.value, Mouse.worldpos); }, +}); + +var saveaspanel = copy(inputpanel, { + title: "save level as", + action() { + editor.saveas_check(this.value); + }, +}); + +var groupsaveaspanel = copy(inputpanel, { + title: "group save as", + action() { editor.groupsaveas(editor.selectlist, this.value); } +}); + +var saveprototypeas = copy(inputpanel, { + title: "save prototype as", + action() { + editor.save_proto_as(this.value); + }, +}); + +var savetypeas = copy(inputpanel, { + title: "save type as", + action() { + editor.save_type_as(this.value); + }, +}); + +var quitpanel = copy(inputpanel, { + title: "really quit?", + action() { + quit(); + }, + + guibody () { + Nuke.label("Really quit?"); + Nuke.newline(2); + if (Nuke.button("yes")) + this.submit(); + }, +}); + +var notifypanel = copy(inputpanel, { + title: "notification", + msg: "Refusing to save. File already exists.", + action() { + this.close(); + }, + + guibody() { + Nuke.label(this.msg); + Nuke.newline(2); + if (Nuke.button("OK")) { + if ('yes' in this) + this.yes(); + this.close(); + } + }, + + input_n_pressed() { + this.close(); + }, +}); + +var gen_notify = function(val, fn) { + var panel = Object.create(notifypanel); + panel.msg = val; + panel.yes = fn; + panel.input_y_pressed = function() { panel.yes(); panel.close(); }; + panel.input_enter_pressed = function() { panel.close(); }; + return panel; +}; + +var scripts = ["js"]; +var images = ["png", "jpg", "jpeg"]; +var sounds = ["wav", "mp3"]; +var allfiles = []; +allfiles.push(scripts, images, sounds); +allfiles = allfiles.flat(); + +var assetexplorer = copy(openlevelpanel, { + title: "asset explorer", + extensions: allfiles, + closeonsubmit: false, + allassets:[], + action() { + if (editor.sel_comp && 'asset' in editor.sel_comp) + editor.sel_comp.asset = this.value; + else + editor.viewasset(this.value); + }, +}); + +function tab_complete(val, list) { + var check = list.filter(function(x) { return x.startsWith(val); }, this); + if (check.length === 1) { + list = check; + return check[0]; + } + + var ret = null; + var i = val.length; + while (!ret && !check.empty) { + + var char = check[0][i]; + if (!check.every(function(x) { return x[i] === char; })) + ret = check[0].slice(0, i); + else { + i++; + check = check.filter(function(x) { return x.length-1 > i; }); + } + } + + if (!ret) return val; + + list = check; + return ret; +} + +var texgui = clone(inputpanel, { + get path() { return this._path; }, + set path(x) { + this._path = x; + this.title = "texture " + x; + }, + + guibody() { + Nuke.label("texture"); + Nuke.img(this.path); + }, +}); + +var levellistpanel = copy(inputpanel, { + title: "Level list", + level: {}, + start() { + this.level = editor.edit_level; + }, + + guibody() { + Nuke.newline(4); + Nuke.label("Object"); + Nuke.label("Visible"); + Nuke.label("Selectable"); + Nuke.label("Selected?"); + this.level.objects.forEach(function(x) { + if (Nuke.button(x.toString())) { + editor.selectlist = []; + editor.selectlist.push(x); + } + + x.visible = Nuke.checkbox(x.visible); + x.selectable = Nuke.checkbox(x.selectable); + + if (editor.selectlist.includes(x)) Nuke.label("T"); else Nuke.label("F"); + }); + }, +}); + +var prefabpanel = copy(openlevelpanel, { + title: "prefabs", + allassets: Object.keys(gameobjects), + start() { + this.allassets = Object.keys(gameobjects).sort(); + this.assets = this.allassets.slice(); + }, + action() { + var obj = editor.edit_level.spawn(gameobjects[this.value]); + obj.pos = Mouse.worldpos; + editor.unselect(); + editor.selectlist.push(obj); + }, +}); + +var limited_editor = { + input_f1_pressed() { editor.input_f1_pressed(); }, + + input_f5_pressed() { + /* Pause, and resume editor */ + }, + input_f7_pressed() { + if (sim_playing()) { + sim_stop(); + game.stop(); + Sound.killall(); + unset_pawn(limited_editor); + set_pawn(editor); + register_gui(editor.ed_gui, editor); + Debug.register_call(editor.ed_debug, editor); + Level.kill(); + Level.clear_all(); + editor.load_json(editor.stash); + set_cam(editor_camera.body); + } + }, + input_f8_pressed() { sim_step(); }, + input_f10_pressed() { editor.input_f10_pressed(); }, + input_f10_released() { editor.input_f10_released(); }, +}; + +set_pawn(editor); +register_gui(editor.ed_gui, editor); +Debug.register_call(editor.ed_debug, editor); + +if (IO.exists("editor.config")) + load_configs("editor.config"); +editor.edit_level = Level.create(); + +Log.warn('bottom of editor'); diff --git a/source/scripts/engine.js b/source/scripts/engine.js new file mode 100644 index 0000000..6644d46 --- /dev/null +++ b/source/scripts/engine.js @@ -0,0 +1,2378 @@ +var files = {}; +function load(file) { + var modtime = cmd(0, file); + + if (modtime === 0) { + Log.stack(); + return false; + } + files[file] = modtime; +} + +var Cmdline = {}; + +Cmdline.cmds = []; +Cmdline.register_cmd = function(flag, fn, desc) { + Cmdline.cmds.push({ + flag: flag, + fn: fn, + desc: desc + }); +}; + +function cmd_args(cmdargs) +{ + var play = false; + var cmds = cmdargs.split(" "); + + Cmdline.play = false; + + for (var i = 0; i < cmds.length; i++) { + if (cmds[i][0] !== '-') + continue; + + var c = Cmdline.cmds.find(function(cmd) { return cmd.flag === cmds[i].slice(1); }); + if (c && c.fn) + c.fn(); + } + + if (Cmdline.play) + run("scripts/play.js"); + else + run("scripts/editor.js"); +} + +Cmdline.register_cmd("p", function() { Cmdline.play = true; }, "Launch engine in play mode."); +Cmdline.register_cmd("v", function() { Log.warn(cmd(120)); }, "Display engine info."); +Cmdline.register_cmd("c", null, "Redirect logging to console."); +Cmdline.register_cmd("l", null, "Set logging file name."); +Cmdline.register_cmd("h", function() { Log.warn("Helping."); exit();}, "Help."); + +function run(file) +{ +// var text = IO.slurp(file); +// eval?.(`"use strict";${text}`); +// return; + var modtime = cmd(119, file); + if (modtime === 0) { + Log.stack(); + return false; + } + + files[file] = modtime; + return cmd(117, file); +} + + +load("scripts/base.js"); + +var Log = { + set level(x) { cmd(92,x); }, + get level() { return cmd(93); }, + print(msg, lvl) { + var lg; + if (typeof msg === 'object') { + lg = JSON.stringify(msg, null, 2); + } else { + lg = msg; + } + + var stack = (new Error()).stack; + var n = stack.next('\n',0)+1; + n = stack.next('\n', n)+1; + var nnn = stack.slice(n); + var fmatch = nnn.match(/\(.*\:/); + var file = fmatch ? fmatch[0].shift(1).shift(-1) : "nofile"; + var lmatch = nnn.match(/\:\d*\)/); + var line = lmatch ? lmatch[0].shift(1).shift(-1) : "0"; + + yughlog(lvl, lg, file, line); + }, + + info(msg) { + this.print(msg, 0); + }, + + warn(msg) { + this.print(msg, 1); + }, + + error(msg) { + this.print(msg, 2); + this.stack(1); + }, + + critical(msg) { + this.print(msg,3); + this.stack(1); + }, + + write(msg) { + cmd(91,msg); + }, + + stack(skip = 0) { + var stack = (new Error()).stack; + var n = stack.next('\n',0)+1; + for (var i = 0; i < skip; i++) + n = stack.next('\n', n)+1; + + this.write(stack.slice(n)); + }, +}; + +load("scripts/diff.js"); + +var Physics = { + dynamic: 0, + kinematic: 1, + static: 2, +}; + +Physics.stop = function() +{ + +} + +function win_icon(str) { + cmd(90, str); +}; + +function sim_start() { + Log.warn("Call Game.play() now."); + Game.play(); +/* + Game.objects.forEach(function(x) { + if (x.start) x.start(); }); + + Level.levels.forEach(function(lvl) { + lvl.run(); + }); +*/ +} + +function sim_stop() { Log.warn("Call through Game.stop()"); Game.stop();} +function sim_pause() { Log.warn("Call Game.pause()"); Game.pause(); } +function sim_step() { Log.warn("Call Game.step()"); Game.step(); } +function sim_playing() { Log.warn("Call Game.playing"); return Game.playing(); } +function sim_paused() { Log.warn("Call Game.paused"); return Game.paused(); } +function phys_stepping() { Log.warn("Call Game.stepping"); return Game.stepping(); } + +function quit() { + Log.warn("Call through Game.quit() now."); + Game.quit(); +}; + +function set_cam(id) { + cmd(61, id); +}; + + +var Color = { + white: [255,255,255,255], + blue: [84,110,255,255], + green: [120,255,10,255], + yellow: [251,255,43,255], + red: [255,36,20,255], + teal: [96, 252, 237,255], + gray: [181, 181,181,255], + cyan: [0,255,255], +}; + +function bb2wh(bb) { + return [bb.r-bb.l, bb.t-bb.b]; +}; + +var GUI = { + text(str, pos, size, color, wrap) { + size = size ? size : 1; + color = color ? color : [255,255,255,255]; + wrap = wrap ? wrap : -1; + + var bb = cmd(118, str, size, wrap); + var opos = [bb.r, bb.t]; + + var h = ui_text(str, pos.sub(opos), size, color, wrap); + + return bb; + }, + + text_cursor(str, pos, size, cursor) { + cursor_text(str,pos,size,[255,255,255],cursor); + }, + + image(path,pos) { + let wh = cmd(64,path); + gui_img(path,pos.slice().sub(wh), 1.0, 0.0); + return cwh2bb([0,0], wh); + }, + + image_fn(defn) { + var def = Object.create(this.defaults); + Object.assign(def,defn); + if (!def.path) { + Log.warn("GUI image needs a path."); + def.draw = function(){}; + return def; + } + + var tex_wh = cmd(64,def.path); + var wh = tex_wh.slice(); + + if (def.width !== 0) + wh.x = def.width; + + if (def.height !== 0) + wh.y = def.height; + + wh = wh.scale(def.scale); + + var sendscale = []; + sendscale.x = wh.x / tex_wh.x; + sendscale.y = wh.y / tex_wh.y; + + def.draw = function(pos) { + def.calc_bb(pos); + gui_img(def.path, pos.sub(def.anchor.scale(wh)), sendscale, def.angle, def.image_repeat, def.image_repeat_offset, def.color); + }; + + def.calc_bb = function(cursor) { + def.bb = cwh2bb(wh.scale([0.5,0.5]), wh); + def.bb = movebb(def.bb, cursor.sub(wh.scale(def.anchor))); + }; + + return def; + }, + + defaults: { + padding:[2,2], /* Each element inset with this padding on all sides */ + font: "fonts/LessPerfectDOSVGA.ttf", + font_size: 1, + text_align: "left", + scale: 1, + angle: 0, + anchor: [0,0], + text_shadow: { + pos: [0,0], + color: [255,255,255,255] + }, + text_outline: 1, /* outline in pixels */ + color: [255,255,255,255], + margin: [5,5], /* Distance between elements for things like columns */ + width: 0, + height: 0, + image_repeat: false, + image_repeat_offset: [0,0], + debug: false, /* set to true to draw debug boxes */ + }, + + text_fn(str, defn) + { + var def = Object.create(this.defaults); + Object.assign(def,defn); + + def.draw = function(cursor) { + def.calc_bb(cursor); + + if (def.debug) + Debug.boundingbox(def.bb, def.debug_colors.bounds); + + var old = def; + def = Object.create(def); + +/* if (pointinbb(def.bb, Mouse.screenpos)) { + Object.assign(def, def.hovered); + def.calc_bb(cursor); + GUI.selected = def; + def.selected = true; + } +*/ + if (def.selected) { + Object.assign(def, def.hovered); + def.calc_bb(cursor); + } + + var pos = cursor.sub(bb2wh(def.bb).scale(def.anchor)); + + ui_text(str, pos, def.font_size, def.color, def.width); + + def = old; + }; + + def.calc_bb = function(cursor) { + var bb = cmd(118, str, def.font_size, def.width); + var wh = bb2wh(bb); + var pos = cursor.sub(wh.scale(def.anchor)); + def.bb = movebb(bb,pos); + }; + + return def; + }, + + column(defn) { + var def = Object.create(this.defaults); + Object.assign(def,defn); + + if (!def.items) { + Log.warn("Columns needs items."); + def.draw = function(){}; + return def; + }; + + def.items.forEach(function(item,idx) { + Object.setPrototypeOf(def.items[idx], def); + + if (def.items[idx-1]) + def.up = def.items[idx-1]; + + if (def.items[idx+1]) + def.down = def.items[idx+1]; + }); + + def.draw = function(pos) { + def.items.forEach(function(item) { + item.draw.call(this,pos); + var wh = bb2wh(item.bb); + pos.y -= wh.y; + pos.y -= def.padding.x*2; + }); + }; + + return def; + }, + + input_lmouse_pressed() { + if (GUI.selected) + GUI.selected.action(); + }, + + input_s_pressed() { + if (GUI.selected?.down) { + GUI.selected.selected = false; + GUI.selected = GUI.selected.down; + GUI.selected.selected = true; + } + }, + + input_w_pressed() { + if (GUI.selected?.up) { + GUI.selected.selected = false; + GUI.selected = GUI.selected.up; + GUI.selected.selected = true; + } + }, + + input_enter_pressed() { + if (GUI.selected) { + GUI.selected.action(); + } + } +}; + + + +GUI.defaults.debug_colors = { + bounds: Color.red.slice(), + margin: Color.blue.slice(), + padding: Color.green.slice() +}; + +Object.values(GUI.defaults.debug_colors).forEach(function(v) { v.a = 100; }); + +var Yugine = { + get dt() { + return cmd(63); + }, + + wait_fns: [], + + wait_exec(fn) { + if (!phys_stepping()) + fn(); + else + this.wait_fns.push(fn); + }, + + exec() { + this.wait_fns.forEach(function(x) { x(); }); + + this.wait_fns = []; + }, +}; + +var timer = { + guardfn(fn) { + if (typeof fn === 'function') + fn(); + else { + Log.warn("TIMER TRYING TO EXECUTE WIHTOUT!!!"); + Log.warn(this); + this.kill(); + } + }, + + make(fn, secs,obj,loop) { + if (secs === 0) { + fn.call(obj); + return; + } + + var t = clone(this); + t.callback = fn; + var guardfn = function() { + if (typeof t.callback === 'function') + t.callback(); + else + Log.warn("Timer trying to execute without a function."); + }; + t.id = make_timer(guardfn, secs, obj); + + return t; + }, + + oneshot(fn, secs,obj) { + var t = this.make(() => { + fn.call(); + t.kill(); + },secs); + t.loop = 0; + t.start(); + }, + + get remain() { return cmd(32, this.id); }, + get on() { return cmd(33, this.id); }, + get loop() { return cmd(34, this.id); }, + set loop(x) { cmd(35, this.id, x); }, + + start() { cmd(26, this.id); }, + stop() { cmd(25, this.id); }, + pause() { cmd(24, this.id); }, + kill() { cmd(27, this.id); }, + set time(x) { cmd(28, this.id, x); }, + get time() { return cmd(29, this.id); }, + get pct() { return this.remain / this.time; }, +}; + +/* Take numbers from 0 to 1 and remap them to easing functions */ +var Ease = { + linear(t) { return t; }, + + in(t) { return t*t; }, + + out(t) { + var d = 1-t; + return 1 - d*d + }, + + inout(t) { + var d = -2*t + 2; + return t < 0.5 ? 2 * t * t : 1 - (d * d) / 2; + }, +}; + +function make_easing_fns(num) { + var obj = {}; + + obj.in = function(t) { + return Math.pow(t,num); + }; + + obj.out = function(t) { + return 1 - Math.pow(1 - t, num); + }; + + var mult = Math.pow(2, num-1); + + obj.inout = function(t) { + return t < 0.5 ? mult * Math.pow(t, num) : 1 - Math.pow(-2 * t + 2, num) / 2; + }; + + return obj; +}; + +Ease.quad = make_easing_fns(2); +Ease.cubic = make_easing_fns(3); +Ease.quart = make_easing_fns(4); +Ease.quint = make_easing_fns(5); + +Ease.expo = { + in(t) { + return t === 0 ? 0 : Math.pow(2, 10 * t - 10); + }, + + out(t) { + return t === 1 ? 1 : 1 - Math.pow(2, -10 * t); + }, + + inout(t) { + return t === 0 ? 0 : t === 1 ? 1 : t < 0.5 ? Math.pow(2, 20 * t - 10) / 2 : (2 - Math.pow(2, -20 * t + 10)) / 2; + } +}; + +Ease.bounce = { + in(t) { + return 1 - this.out(t - 1); + }, + + out(t) { + var n1 = 7.5625; + var d1 = 2.75; + + if (t < 1 / d1) { return n1 * t * t; } + else if (t < 2 / d1) { return n1 * (t -= 1.5 / d1) * t + 0.75; } + else if (t < 2.5 / d1) { return n1 * (t -= 2.25 / d1) * t + 0.9375; } + else + return n1 * (t -= 2.625 / d1) * t + 0.984375; + }, + + inout(t) { + return t < 0.5 ? (1 - this.out(1 - 2 * t)) / 2 : (1 + this.out(2 * t - 1)) / 2; + } +}; + +Ease.sine = { + in(t) { return 1 - Math.cos((t * Math.PI)/2); }, + + out(t) { return Math.sin((t*Math.PI)/2); }, + + inout(t) { return -(Math.cos(Math.PI*t) - 1) / 2; } +}; + +Ease.elastic = { + in(t) { + return t === 0 ? 0 : t === 1 ? 1 : -Math.pow(2, 10*t-10) * Math.sin((t * 10 - 10.75) * this.c4); + }, + + out(t) { + return t === 0 ? 0 : t === 1 ? 1 : Math.pow(2, -10*t) * Math.sin((t * 10 - 0.75) * this.c4) + 1; + }, + + inout(t) { + t === 0 ? 0 : t === 1 ? 1 : t < 0.5 ? + -(Math.pow(2, 20 * t - 10) * Math.sin((20 * t - 11.125) * this.c5)) / 2 + : (Math.pow(2, -20 * t + 10) * Math.sin((20 * t - 11.125) * this.c5)) / 2 + 1; + }, +}; + +Ease.elastic.c4 = 2*Math.PI/3; +Ease.elastic.c5 = 2*Math.PI / 4.5; + +var Tween = { + default: { + loop: "restart", /* none, restart, yoyo, circle */ + time: 1, /* seconds to do */ + ease: Ease.linear, + whole: true, + }, + + start(obj, target, tvals, options) + { + var defn = Object.create(this.default); + Object.assign(defn, options); + + if (defn.loop === 'circle') + tvals.push(tvals[0]); + else if (defn.loop === 'yoyo') { + for (var i = tvals.length-2; i >= 0; i--) + tvals.push(tvals[i]); + } + + defn.accum = 0; + + var slices = tvals.length - 1; + var slicelen = 1 / slices; + + defn.fn = function(dt) { + defn.accum += dt; + defn.pct = (defn.accum % defn.time) / defn.time; + + var t = defn.whole ? defn.ease(defn.pct) : defn.pct; + + var nval = t / slicelen; + var i = Math.trunc(nval); + nval -= i; + + if (!defn.whole) + nval = defn.ease(nval); + + obj[target] = tvals[i].lerp(tvals[i+1], nval); + }; + + defn.restart = function() { defn.accum = 0; }; + defn.stop = function() { defn.pause(); defn.restart(); }; + defn.pause = function() { unregister_update(defn.fn); }; + + register_update(defn.fn, defn); + + return defn; + }, + + embed(obj, target, tvals, options) { + var defn = Object.create(this.default); + Object.assign(defn, options); + + defn.update_vals = function(vals) { + defn.vals = vals; + + if (defn.loop === 'circle') + defn.vals.push(defn.vals[0]); + else if (defn.loop === 'yoyo') { + for (var i = defn.vals.length-2; i >= 0; i--) + defn.vals.push(defn.vals[i]); + } + + defn.slices = defn.vals.length - 1; + defn.slicelen = 1 / defn.slices; + }; + + defn.update_vals(tvals); + + defn.time_s = Date.now(); + + Object.defineProperty(obj, target, { + get() { + defn.accum = (Date.now() - defn.time_s)/1000; + defn.pct = (defn.accum % defn.time) / defn.time; + var t = defn.whole ? defn.ease(defn.pct) : defn.pct; + + var nval = t / defn.slicelen; + var i = Math.trunc(nval); + nval -= i; + + if (!defn.whole) + nval = defn.ease(nval); + + return defn.vals[i].lerp(defn.vals[i+1],nval); + }, + }); + + return defn; + }, +}; + + +var animation = { + time: 0, + loop: false, + playtime: 0, + playing: false, + keyframes: [], + + create() { + var anim = Object.create(animation); + register_update(anim.update, anim); + return anim; + }, + + start() { + this.playing = true; + this.time = this.keyframes.last[1]; + this.playtime = 0; + }, + + interval(a, b, t) { + return (t - a) / (b - a); + }, + + near_val(t) { + for (var i = 0; i < this.keyframes.length-1; i++) { + if (t > this.keyframes[i+1][1]) continue; + + return this.interval(this.keyframes[i][1], this.keyframes[i+1][1], t) >= 0.5 ? this.keyframes[i+1][0] : this.keyframes[i][0]; + } + + return this.keyframes.last[0]; + }, + + lerp_val(t) { + for (var i = 0; i < this.keyframes.length-1; i++) { + if (t > this.keyframes[i+1][1]) continue; + + var intv = this.interval(this.keyframes[i][1], this.keyframes[i+1][1], t); + return ((1 - intv) * this.keyframes[i][0]) + (intv * this.keyframes[i+1][0]); + } + + return this.keyframes.last[0]; + }, + + cubic_val(t) { + + }, + + mirror() { + if (this.keyframes.length <= 1) return; + for (var i = this.keyframes.length-1; i >= 1; i--) { + this.keyframes.push(this.keyframes[i-1]); + this.keyframes.last[1] = this.keyframes[i][1] + (this.keyframes[i][1] - this.keyframes[i-1][1]); + } + }, + + update(dt) { + if (!this.playing) return; + + this.playtime += dt; + if (this.playtime >= this.time) { + if (this.loop) + this.playtime = 0; + else { + this.playing = false; + return; + } + } + + this.fn(this.lerp_val(this.playtime)); + }, +}; + +var sound = { + play() { + this.id = cmd(14,this.path); + }, + + stop() { + + }, +}; + +var Music = { + play(path) { + Log.info("Playing " + path); + cmd(87,path); + }, + + stop() { + cmd(89); + }, + + pause() { + cmd(88); + }, + + set volume(x) { + }, +}; + +var Sound = { + play(file) { + var s = Object.create(sound); + s.path = file; + s.play(); + return s; + }, + + music(midi, sf) { + cmd(13, midi, sf); + }, + + musicstop() { + cmd(15); + }, + + /* Between 0 and 100 */ + set volume(x) { cmd(19, x); }, + + killall() { + Music.stop(); + this.musicstop(); + /* TODO: Kill all sound effects that may still be running */ + }, +}; + +var Render = { + normal() { + cmd(67); + }, + + wireframe() { + cmd(68); + }, +}; + +var Mouse = { + get pos() { + return cmd(45); + }, + + get screenpos() { + var p = this.pos; + p.y = Window.dimensions.y - p.y; + return p; + }, + + get worldpos() { + return screen2world(cmd(45)); + }, + + disabled() { + cmd(46, 212995); + }, + + hidden() { + cmd(46, 212994); + }, + + normal() { + cmd(46, 212993); + }, +}; + +var Keys = { + shift() { + return cmd(50, 340) || cmd(50, 344); + }, + + ctrl() { + return cmd(50, 341) || cmd(50, 344); + }, + + alt() { + return cmd(50, 342) || cmd(50, 346); + }, +}; + +var Input = { + setgame() { cmd(77); }, + setnuke() { cmd(78); }, +}; + +function screen2world(screenpos) { return Yugine.camera.view2world(screenpos); } +function world2screen(worldpos) { return Yugine.camera.world2view(worldpos); } + +var physics = { + set gravity(x) { cmd(8, x); }, + get gravity() { return cmd(72); }, + set damping(x) { cmd(73,Math.clamp(x,0,1)); }, + get damping() { return cmd(74); }, + pos_query(pos) { + return cmd(44, pos); + }, + + /* Returns a list of body ids that a box collides with */ + box_query(box) { + var pts = cmd(52,box.pos,box.wh); + return cmd(52, box.pos, box.wh); + }, + + box_point_query(box, points) { + if (!box || !points) + return []; + + return cmd(86, box.pos, box.wh, points, points.length); + }, +}; + +var Action = { + add_new(name) { + var action = Object.create(Action); + action.name = name; + action.inputs = []; + this.actions.push(action); + + return action; + }, + actions: [], +}; + +/* May be a human player; may be an AI player */ +var Player = { + players: [], + input(fn, ...args) { + this.pawns.forEach(x => x[fn]?.(...args)); + }, + + control(pawn) { + this.pawns.push_unique(pawn); + }, + + uncontrol(pawn) { + this.pawns = this.pawns.filter(x => x !== pawn); + }, +}; + +for (var i = 0; i < 4; i++) { + var player1 = Object.create(Player); + player1.pawns = []; + player1.gamepads = []; + Player.players.push(player1); +} + +function state2str(state) { + if (typeof state === 'string') return state; + switch (state) { + case 0: + return "down"; + case 1: + return "pressed"; + case 2: + return "released"; + } +} + +var Register = { + inloop: false, + loopcbs: [], + finloop() { + this.loopcbs.forEach(x => x()); + this.loopcbs = []; + }, + + wraploop(loop) { + this.inloop = true; + loop(); + this.inloop = false; + this.finloop(); + }, + + updates: [], + update(dt) { + this.wraploop(() => this.updates.forEach(x => x[0].call(x[1], dt))); + }, + + physupdates: [], + physupdate(dt) { + this.wraploop(() => this.physupdates.forEach(x => x[0].call(x[1], dt))); + }, + + guis: [], + gui() { + this.guis.forEach(x => x[0].call(x[1])); + }, + + nk_guis: [], + nk_gui() { + + this.nk_guis.forEach(x => x[0].call(x[1])); + }, + + kbm_input(src, btn, state, ...args) { + var input = `${src}_${btn}_${state}`; + Player.players[0].input(input, ...args); + }, + + gamepad_playermap: [], + gamepad_input(pad, btn, state, ...args) { + var player = this.gamepad_playermap[pad]; + if (!player) return; + + var statestr = state2str(state); + + var rawfn = `gamepad_${btn}_${statestr}`; + player.input(rawfn, ...args); + + Action.actions.forEach(x => { + if (x.inputs.includes(btn)) + player.input(`action_${x.name}_${statestr}`, ...args); + }); + }, + + debugs: [], + debug() { + this.debugs.forEach(x => x[0].call(x[1])); + }, + + unregister_obj(obj) { + Log.warn(`Unregister ${JSON.stringify(obj.body)}`); + this.updates = this.updates.filter(x => x[1] !== obj); + this.guis = this.guis.filter(x => x[1] !== obj); + this.nk_guis = this.nk_guis.filter(x => x[1] !== obj); + this.debugs = this.debugs.filter(x => x[1] !== obj); + this.physupdates = this.physupdates.filter(x => x[1] !== obj); + this.draws = this.draws.filter(x => x[1] !== obj); + Player.players.forEach(x => x.uncontrol(obj)); + }, + + draws: [], + draw() { + this.draws.forEach(x => x[0].call(x[1])); + }, + + endofloop(fn) { + if (!this.inloop) + fn(); + else { + this.loopcbs.push(fn); + } + }, +}; + +register(0, Register.update, Register); +register(1, Register.physupdate, Register); +register(2, Register.gui, Register); +register(3, Register.nk_gui, Register); +register(6, Register.debug, Register); +register(7, Register.kbm_input, Register); +register(8, Register.gamepad_input, Register); +register(9, Log.stack, this); +register(10, Register.draw, Register); + +Register.gamepad_playermap[0] = Player.players[0]; + +function register_update(fn, obj) { + Register.updates.push([fn, obj ? obj : null]); +}; + +function unregister_update(fn) { + Register.updates = Register.updates.filter(function(updatefn) { + return fn === updatefn; + }); +}; + +function register_physupdate(fn, obj) { + Register.physupdates.push([fn, obj ? obj : null]); +}; + +function register_gui(fn, obj) { + Register.guis.push([fn, obj ? obj : this]); +}; + +function register_debug(fn, obj) { + Register.debugs.push([fn, obj ? obj : this]); +}; + +function unregister_gui(fn, obj) { + Register.guis = Register.guis.filter(x => x[0] !== fn || x[1] !== obj); +}; + +function register_nk_gui(fn, obj) { + Register.nk_guis.push([fn, obj ? obj : this]); +}; + +function unregister_nk_gui(fn, obj) { + Register.nk_guis = Register.nk_guis.filter(x => x[0] !== fn && x[1] !== obj); +}; + +function register_draw(fn,obj) { + Register.draws.push([fn, obj ? obj : this]); +} + +register_update(Yugine.exec, Yugine); + +/* These functions are the "defaults", and give control to player0 */ +function set_pawn(obj, player = Player.players[0]) { + player.control(obj); +} + +function unset_pawn(obj, player = Player.players[0]) { + player.uncontrol(obj); +} + +Player.players[0].control(GUI); + +var Signal = { + signals: [], + obj_begin(fn, obj, go) { + this.signals.push([fn, obj]); + register_collide(0, fn, obj, go.body); + }, + + obj_separate(fn, obj, go) { + this.signals.push([fn,obj]); + register_collide(3,fn,obj,go.body); + }, + + clera_obj(obj) { + this.signals.filter(function(x) { return x[1] !== obj; }); + }, + + c:{}, + register(name, fn) { + if (!this.c[name]) + this.c[name] = []; + + this.c[name].push(fn); + }, + + call(name, ...args) { + if (this.c[name]) + this.c[name].forEach(function(fn) { fn.call(this, ...args); }); + }, +}; + +var Window = { + width: 0, + height: 0, + dimensions:[0,0], +}; + +Signal.register("window_resize", function(w, h) { + Window.width = w; + Window.height = h; + Window.dimensions = [w, h]; +}); + +var IO = { + exists(file) { return cmd(65, file);}, + slurp(file) { + if (!this.exists(file)) { + Log.warn(`File ${file} does not exist; can't slurp.`); + return ""; + } + return cmd(38,file); + }, + slurpwrite(str, file) { return cmd(39, str, file); }, + extensions(ext) { return cmd(66, "." + ext); }, +}; + +function slurp(file) { return IO.slurp(file);} +function slurpwrite(str, file) { return IO.slurpwrite(str, file); } + +function reloadfiles() { + Object.keys(files).forEach(function (x) { load(x); }); +} + +load("scripts/debug.js"); + +/* +function Color(from) { + var color = Object.create(Array); + Object.defineProperty(color, 'r', setelem(0)); + Object.defineProperty(color, 'g', setelem(1)); + Object.defineProperty(color, 'b', setelem(2)); + Object.defineProperty(color, 'a', setelem(3)); + + color.a = color.g = color.b = color.a = 1; + Object.assign(color, from); + + return color; +}; +*/ + +load("scripts/components.js"); + +function replacer_empty_nil(key, val) { + if (typeof val === 'object' && JSON.stringify(val) === '{}') + return undefined; + +// if (typeof val === 'number') +// return parseFloat(val.toFixed(4)); + + return val; +}; + +function clean_object(obj) { + Object.keys(obj).forEach(function(x) { + if (!(x in obj.__proto__)) return; + + switch(typeof obj[x]) { + case 'object': + if (Array.isArray(obj[x])) { + if (obj[x].equal(obj.__proto__[x])) { + delete obj[x]; + } + } else + clean_object(obj[x]); + + break; + + case 'function': + return; + + default: + if (obj[x] === obj.__proto__[x]) + delete obj[x]; + break; + } + }); +}; + +function find_com(objects) +{ + if (!objects || objects.length === 0) + return [0,0]; + var com = [0,0]; + com[0] = objects.reduce(function(acc, val) { + return acc + val.pos[0]; + }, 0); + com[0] /= objects.length; + + com[1] = objects.reduce(function(acc, val) { + return acc + val.pos[1]; + }, 0); + com[1] /= objects.length; + + return com; +}; + +var Game = { + objects: [], + resolution: [1200,720], + name: "Untitled", + register_obj(obj) { + this.objects[obj.body] = obj; + }, + + /* Returns an object given an id */ + object(id) { + return this.objects[id]; + }, + + /* Returns a list of objects by name */ + find(name) { + + }, + + /* Return a list of objects derived from a specific prototype */ + find_proto(proto) { + + }, + + /* List of all objects spawned that have a specific tag */ + find_tag(tag) { + + }, + + groupify(objects, spec) { + var newgroup = { + locked: true, + breakable: true, + objs: objects, +// get pos() { return find_com(objects); }, +// set pos(x) { this.objs.forEach(function(obj) { obj.pos = x; }) }, + }; + + Object.assign(newgroup, spec); + objects.forEach(function(x) { + x.defn('group', newgroup); + }); + + var bb = bb_from_objects(newgroup.objs); + newgroup.startbb = bb2cwh(bb); + newgroup.bboffset = newgroup.startbb.c.sub(newgroup.objs[0].pos); + + newgroup.boundingbox = function() { + newgroup.startbb.c = newgroup.objs[0].pos.add(newgroup.bboffset); + return cwh2bb(newgroup.startbb.c, newgroup.startbb.wh); + }; + + if (newgroup.file) + newgroup.color = [120,255,10]; + + return newgroup; + }, + + quit() + { + sys_cmd(0); + }, + + pause() + { + sys_cmd(3); + }, + + stop() + { + sys_cmd(2); + }, + + step() + { + sys_cmd(4); + }, + + playing() { return sys_cmd(5); }, + paused() { return sys_cmd(6); }, + stepping() { return cmd(79); }, + + play() + { + sys_cmd(1); + } +}; + + +var Level = { + levels: [], + objects: [], + alive: true, + selectable: true, + toString() { + if (this.file) + return this.file; + + return "Loose level"; + }, + + fullpath() { + return `${this.level.fullpath()}.${this.name}`; + }, + + get boundingbox() { + return bb_from_objects(this.objects); + }, + + varname2obj(varname) { + for (var i = 0; i < this.objects.length; i++) + if (this.objects[i].varname === varname) + return this.objects[i]; + + return null; + }, + + run() { + var objs = this.objects.slice(); + var scene = {}; + var self = this; + + // TODO: If an object does not have a varname, give it one based on its parent + objs.forEach(function(x) { + if (x.hasOwn('varname')) { + scene[x.varname] = x; + this[x.varname] = x; + } + },this); + + //eval_filename(this.script, this.scriptfile); + eval(this.script); + + if (typeof extern === 'object') + Object.assign(this, extern); + + if (typeof update === 'function') + register_update(update, this); + + if (typeof gui === 'function') + register_gui(gui, this); + + if (typeof nk_gui === 'function') + register_nk_gui(nk_gui, this); + }, + + revert() { + delete this.unique; + this.load(this.filelvl); + }, + + /* Returns how many objects this level created are still alive */ + object_count() { + return objects.length(); + }, + + /* Save a list of objects into file, with pos acting as the relative placement */ + saveas(objects, file, pos) { + if (!pos) pos = find_com(objects); + + objects.forEach(function(obj) { + obj.pos = obj.pos.sub(pos); + }); + + var newlvl = Level.create(); + + objects.forEach(function(x) { newlvl.register(x); }); + + var save = newlvl.save(); + slurpwrite(save, file); + }, + + clean() { + for (var key in this.objects) + clean_object(this.objects[key]); + + for (var key in gameobjects) + clean_object(gameobjects[key]); + }, + + sync_file(file) { + var openlvls = this.levels.filter(function(x) { return x.file === file && x !== editor.edit_level; }); + + openlvls.forEach(function(x) { + x.clear(); + x.load(IO.slurp(x.file)); + x.flipdirty = true; + x.sync(); + x.flipdirty = false; + x.check_dirty(); + }); + }, + + save() { + this.clean(); + var pos = this.pos; + var angle = this.angle; + + this.pos = [0,0]; + this.angle = 0; + if (this.flipx) { + this.objects.forEach(function(obj) { + this.mirror_x_obj(obj); + }, this); + } + + if (this.flipy) { + this.objects.forEach(function(obj) { + this.mirror_y_obj(obj); + }, this); + } + + var savereturn = JSON.stringify(this.objects, replacer_empty_nil, 1); + + Log.warn(JSON.stringify(this)); + + if (this.flipx) { + this.objects.forEach(function(obj) { + this.mirror_x_obj(obj); + }, this); + } + + if (this.flipy) { + this.objects.forEach(function(obj) { + this.mirror_y_obj(obj); + }, this); + } + + this.pos = pos; + this.angle = angle; + return savereturn; + }, + + mirror_x_obj(obj) { + obj.flipx = !obj.flipx; + var rp = obj.relpos; + obj.pos = [-rp.x, rp.y].add(this.pos); + obj.angle = -obj.angle; + }, + + mirror_y_obj(obj) { + var rp = obj.relpos; + obj.pos = [rp.x, -rp.y].add(this.pos); + obj.angle = -obj.angle; + }, + + /* TODO: Remove this; make it work without */ + toJSON() { + var obj = {}; + obj.file = this.file; + obj.pos = this._pos; + obj.angle = this._angle; + obj.from = "group"; + obj.flipx = this.flipx; + obj.flipy = this.flipy; + obj.scale = this.scale; + + if (this.varname) + obj.varname = this.varname; + + if (!this.unique) + return obj; + + obj.objects = {}; + + this.objects.forEach(function(x,i) { + obj.objects[i] = {}; + var adiff = Math.abs(x.relangle - this.filelvl[i]._angle) > 1e-5; + if (adiff) + obj.objects[i].angle = x.relangle; + + var pdiff = Vector.equal(x.relpos, this.filelvl[i]._pos, 1e-5); + if (!pdiff) + obj.objects[i].pos = x._pos.sub(this.pos); + + if (obj.objects[i].empty) + delete obj.objects[i]; + }, this); + + return obj; + }, + + register(obj) { + if (obj.level) + obj.level.unregister(obj); + + this.objects.push(obj); + }, + + make() { + return Level.loadfile(this.file, this.pos); + }, + + spawn(prefab) { + if (typeof prefab === 'string') { + var newobj = this.addfile(prefab); + return newobj; + } + + var newobj = prefab.make(); + newobj.defn('level', this); + this.objects.push(newobj); + Game.register_obj(newobj); + newobj.setup?.(); + newobj.start?.(); + return newobj; + }, + + dup(level) { + level ??= this.level; + var n = level.spawn(this.from); + /* TODO: Assign this's properties to the dup */ + return ;n + }, + + create() { + var newlevel = Object.create(this); + newlevel.objects = []; + newlevel._pos = [0,0]; + newlevel._angle = 0; + newlevel.color = Color.green; + newlevel.toString = function() { + return (newlevel.unique ? "#" : "") + newlevel.file; + }; + newlevel.filejson = newlevel.save(); + return newlevel; + }, + + addfile(file) { + /* TODO: Register this as a prefab for caching */ + var lvl = this.loadfile(file); + this.objects.push(lvl); + lvl.level = this; + return lvl; + }, + + check_dirty() { + this.dirty = this.save() !== this.filejson; + }, + + start() { + this.objects.forEach(function(x) { if ('start' in x) x.start(); }); + }, + + loadlevel(file) { + var lvl = Level.loadfile(file); + if (lvl && sim_playing()) + lvl.start(); + + return lvl; + }, + + loadfile(file) { + if (!file.endsWith(".lvl")) file = file + ".lvl"; + var newlevel = Level.create(); + + Log.warn(`MAKING LEVEL ${file}`); + + if (IO.exists(file)) { + newlevel.filejson = IO.slurp(file); + + try { + newlevel.filelvl = JSON.parse(newlevel.filejson); + newlevel.load(newlevel.filelvl); + } catch (e) { + newlevel.ed_gizmo = function() { GUI.text("Invalid level file: " + newlevel.file, world2screen(newlevel.pos), 1, Color.red); }; + newlevel.selectable = false; + throw e; + } + newlevel.file = file; + newlevel.dirty = false; + } + + var scriptfile = file.replace('.lvl', '.js'); + if (IO.exists(scriptfile)) { + newlevel.script = IO.slurp(scriptfile); + newlevel.scriptfile = scriptfile; + } + + newlevel.from = scriptfile.replace('.js',''); + + newlevel.run(); + + return newlevel; + }, + + /* Spawns all objects specified in the lvl json object */ + load(lvl) { + this.clear(); + this.levels.push_unique(this); + + if (!lvl) { + Log.warn("Level is " + lvl + ". Need a better formed one."); + + return; + } + + var opos = this.pos; + var oangle = this.angle; + this.pos = [0,0]; + this.angle = 0; + + var objs; + var created = []; + + if (typeof lvl === 'string') + objs = JSON.parse(lvl); + else + objs = lvl; + + if (typeof objs === 'object') + objs = objs.array(); + + objs.forEach(x => { + if (x.from === 'group') { + var loadedlevel = Level.loadfile(x.file); + if (!loadedlevel) { + Log.error("Error loading level: file " + x.file + " not found."); + return; + } + if (!IO.exists(x.file)) { + loadedlevel.ed_gizmo = function() { GUI.text("MISSING LEVEL " + x.file, world2screen(loadedlevel.pos) ,1, Color.red) }; + } + var objs = x.objects; + delete x.objects; + Object.assign(loadedlevel, x); + + if (objs) { + objs.array().forEach(function(x, i) { + if (x.pos) + loadedlevel.objects[i].pos = x.pos.add(loadedlevel.pos); + + if (x.angle) + loadedlevel.objects[i].angle = x.angle + loadedlevel.angle; + }); + + loadedlevel.unique = true; + } + loadedlevel.level = this; + loadedlevel.sync(); + created.push(loadedlevel); + this.objects.push(loadedlevel); + return; + } + var prototype = gameobjects[x.from]; + if (!prototype) { + Log.error(`Prototype for ${x.from} does not exist.`); + return; + } + + var newobj = this.spawn(gameobjects[x.from]); + + delete x.from; + + dainty_assign(newobj, x); + + if (x._pos) + newobj.pos = x._pos; + + + if (x._angle) + newobj.angle = x._angle; + for (var key in newobj.components) + if ('sync' in newobj.components[key]) newobj.components[key].sync(); + + newobj.sync(); + + created.push(newobj); + }); + + created.forEach(function(x) { + if (x.varname) + this[x.varname] = x; + },this); + + this.pos = opos; + this.angle = oangle; + + return created; + }, + + clear() { + for (var i = this.objects.length-1; i >= 0; i--) + if (this.objects[i].alive) + this.objects[i].kill(); + + this.levels.remove(this); + }, + + clear_all() { + this.levels.forEach(function(x) { x.kill(); }); + }, + + kill() { + if (this.level) + this.level.unregister(this); + + Register.unregister_obj(this); + + this.clear(); + }, + + unregister(obj) { + var removed = this.objects.remove(obj); + + if (removed && obj.varname) + delete this[obj.varname]; + }, + + get pos() { return this._pos; }, + set pos(x) { + var diff = x.sub(this._pos); + this.objects.forEach(function(x) { x.pos = x.pos.add(diff); }); + this._pos = x; + }, + + get angle() { return this._angle; }, + set angle(x) { + var diff = x - this._angle; + this.objects.forEach(function(x) { + x.angle = x.angle + diff; + var pos = x.pos.sub(this.pos); + var r = Vector.length(pos); + var p = Math.rad2deg(Math.atan2(pos.y, pos.x)); + p += diff; + p = Math.deg2rad(p); + x.pos = this.pos.add([r*Math.cos(p), r*Math.sin(p)]); + },this); + this._angle = x; + }, + + flipdirty: false, + + sync() { + this.flipx = this.flipx; + this.flipy = this.flipy; + }, + + _flipx: false, + get flipx() { return this._flipx; }, + set flipx(x) { + if (this._flipx === x && (!x || !this.flipdirty)) return; + this._flipx = x; + + this.objects.forEach(function(obj) { + obj.flipx = !obj.flipx; + var rp = obj.relpos; + obj.pos = [-rp.x, rp.y].add(this.pos); + obj.angle = -obj.angle; + },this); + }, + + _flipy: false, + get flipy() { return this._flipy; }, + set flipy(x) { + if (this._flipy === x && (!x || !this.flipdirty)) return; + this._flipy = x; + + this.objects.forEach(function(obj) { + var rp = obj.relpos; + obj.pos = [rp.x, -rp.y].add(this.pos); + obj.angle = -obj.angle; + },this); + }, + + _scale: 1.0, + get scale() { return this._scale; }, + set scale(x) { + var diff = (x - this._scale) + 1; + this._scale = x; + + this.objects.forEach(function(obj) { + obj.scale *= diff; + obj.relpos = obj.relpos.scale(diff); + }, this); + }, + + get up() { + return [0,1].rotate(Math.deg2rad(this.angle)); + }, + + get down() { + return [0,-1].rotate(Math.deg2rad(this.angle)); + }, + + get right() { + return [1,0].rotate(Math.deg2rad(this.angle)); + }, + + get left() { + return [-1,0].rotate(Math.deg2rad(this.angle)); + }, +}; + +var World = Level.create(); +World.name = "World"; +World.fullpath = function() { return World.name; }; + +var gameobjects = {}; +var Prefabs = gameobjects; + +/* Returns the index of the smallest element in array, defined by a function that returns a number */ +Object.defineProperty(Array.prototype, 'min', { + value: function(fn) { + + }, +}); + +function grab_from_points(pos, points, slop) { + var shortest = slop; + var idx = -1; + points.forEach(function(x,i) { + if (Vector.length(pos.sub(x)) < shortest) { + shortest = Vector.length(pos.sub(x)); + idx = i; + } + }); + return idx; +}; + +var gameobject = { + scale: 1.0, + + save: true, + + selectable: true, + + layer: 0, /* Collision layer; should probably have been called "mask" */ + layer_nuke() { + Nuke.label("Collision layer"); + Nuke.newline(Collision.num); + for (var i = 0; i < Collision.num; i++) + this.layer = Nuke.radio(i, this.layer, i); + }, + + draw_layer: 1, + draw_layer_nuke() { + Nuke.label("Draw layer"); + Nuke.newline(5); + for (var i = 0; i < 5; i++) + this.draw_layer = Nuke.radio(i, this.draw_layer, i); + }, + + in_air() { + return q_body(7, this.body); + }, + + on_ground() { return !this.in_air(); }, + + name: "gameobject", + + toString() { return this.name; }, + + clone(name, ext) { + var obj = Object.create(this); + complete_assign(obj, ext); + gameobjects[name] = obj; + obj.defc('name', name); + obj.from = this.name; + obj.defn('instances', []); + obj.obscure('from'); + + return obj; + }, + + instandup() { + var dup = World.spawn(gameobjects[this.from]); + dup.pos = this.pos; + dup.velocity = this.velocity; + }, + + ed_locked: false, + + _visible: true, + get visible(){ return this._visible; }, + set visible(x) { + this._visible = x; + for (var key in this.components) { + if ('visible' in this.components[key]) { + this.components[key].visible = x; + } + } + }, + + mass: 1, + bodytype: { + dynamic: 0, + kinematic: 1, + static: 2 + }, + + get moi() { return q_body(6, this.body); }, + set moi(x) { set_body(13, this.body, x); }, + + phys: 2, + phys_nuke() { + Nuke.newline(1); + Nuke.label("phys"); + Nuke.newline(3); + this.phys = Nuke.radio("dynamic", this.phys, 0); + this.phys = Nuke.radio("kinematic", this.phys, 1); + this.phys = Nuke.radio("static", this.phys, 2); + }, + friction: 0, + elasticity: 0, + flipx: false, + flipy: false, + + body: -1, + controlled: false, + + set_center(pos) { + var change = pos.sub(this.pos); + this.pos = pos; + + for (var key in this.components) { + this.components[key].finish_center(change); + } + }, + + varname: "", + + pos: [0,0], + + set relpos(x) { + if (!this.level) { + this.pos = x; + return; + } + + this.pos = Vector.rotate(x, Math.deg2rad(this.level.angle)).add(this.level.pos); + }, + + get relpos() { + if (!this.level) return this.pos; + + var offset = this.pos.sub(this.level.pos); + return Vector.rotate(offset, -Math.deg2rad(this.level.angle)); + }, + + angle: 0, + + get relangle() { + if (!this.level) return this.angle; + + return this.angle - this.level.angle; + }, + + get velocity() { return q_body(3, this.body); }, + set velocity(x) { set_body(9, this.body, x); }, + get angularvelocity() { return Math.rad2deg(q_body(4, this.body)); }, + set angularvelocity(x) { if (this.alive) set_body(8, this.body, Math.deg2rad(x)); }, + + get alive() { return this.body >= 0; }, + + disable() { + this.components.forEach(function(x) { x.disable(); }); + + }, + + enable() { + this.components.forEach(function(x) { x.enable(); }); + }, + + sync() { + if (this.body === -1) return; + cmd(55, this.body, this.flipx); + cmd(56, this.body, this.flipy); + set_body(2, this.body, this.pos); + set_body(0, this.body, Math.deg2rad(this.angle)); + cmd(36, this.body, this.scale); + set_body(10,this.body,this.elasticity); + set_body(11,this.body,this.friction); + set_body(1, this.body, this.phys); + cmd(75,this.body,this.layer); + cmd(54, this.body); + }, + + syncall() { + this.instances.forEach(function(x) { x.sync(); }); + }, + + pulse(vec) { /* apply impulse */ + set_body(4, this.body, vec); + }, + + push(vec) { /* apply force */ + set_body(12,this.body,vec); + }, + + gizmo: "", /* Path to an image to draw for this gameobject */ + + set_pawn() { + this.controlled = true; + set_pawn(this); + }, + + uncontrol() { + if (!this.controlled) return; + unset_pawn(this); + }, + + /* Bounding box of the object in world dimensions */ + get boundingbox() { + var boxes = []; + boxes.push({t:0, r:0,b:0,l:0}); + + for (var key in this.components) { + if ('boundingbox' in this.components[key]) + boxes.push(this.components[key].boundingbox); + } + + if (boxes.empty) return cwh2bb([0,0], [0,0]); + + var bb = boxes[0]; + + boxes.forEach(function(x) { + bb = bb_expand(bb, x); + }); + + var cwh = bb2cwh(bb); + + if (!bb) return; + + if (this.flipx) cwh.c.x *= -1; + if (this.flipy) cwh.c.y *= -1; + + cwh.c = cwh.c.add(this.pos); + bb = cwh2bb(cwh.c, cwh.wh); + + return bb ? bb : cwh2bb([0,0], [0,0]); + }, + + set width(x) {}, + get width() { + var bb = this.boundingbox; + return bb.r - bb.l; + }, + set height(x) {}, + get height() { + var bb = this.boundingbox; + return bb.t-bb.b; + }, + + stop() {}, + + kill() { + if (this.body === -1) { + Log.warn(`Object is already dead!`); + return; + } + Register.endofloop(() => { + cmd(2, this.body); + delete Game.objects[this.body]; + + if (this.level) + this.level.unregister(this); + + this.uncontrol(); + this.instances.remove(this); + Register.unregister_obj(this); +// Signal.clear_obj(this); + + this.body = -1; + for (var key in this.components) { + Register.unregister_obj(this.components[key]); + this.components[key].kill(); + } + + this.stop(); + }); + }, + + get up() { + return [0,1].rotate(Math.deg2rad(this.angle)); + }, + + get down() { + return [0,-1].rotate(Math.deg2rad(this.angle)); + }, + + get right() { + return [1,0].rotate(Math.deg2rad(this.angle)); + }, + + get left() { + return [-1,0].rotate(Math.deg2rad(this.angle)); + }, + + /* Make a unique object the same as its prototype */ + revert() { + unmerge(this, this.prop_obj()); + this.sync(); + }, + + gui() { + var go_guis = walk_up_get_prop(this, 'go_gui'); + Nuke.newline(); + + go_guis.forEach(function(x) { x.call(this); }, this); + + for (var key in this) { + if (typeof this[key] === 'object' && 'gui' in this[key]) this[key].gui(); + } + }, + + world2this(pos) { return cmd(70, this.body, pos); }, + this2world(pos) { return cmd(71, this.body,pos); }, + + check_registers(obj) { + Register.unregister_obj(this); + + if (typeof obj.update === 'function') + register_update(obj.update, obj); + + if (typeof obj.physupdate === 'function') + register_physupdate(obj.physupdate, obj); + + if (typeof obj.collide === 'function') + obj.register_hit(obj.collide, obj); + + if (typeof obj.separate === 'function') + obj.register_separate(obj.separate, obj); + + if (typeof obj.draw === 'function') + register_draw(obj.draw,obj); + + if (typeof obj.debug === 'function') + register_debug(obj.debug, obj); + + obj.components.forEach(function(x) { + if (typeof x.collide === 'function') + register_collide(1, x.collide, x, obj.body, x.shape); + }); + }, + + make(props, level) { + level ??= World; + var obj = Object.create(this); + this.instances.push(obj); + obj.toString = function() { + var props = obj.prop_obj(); + for (var key in props) + if (typeof props[key] === 'object' && !props[key] === null && props[key].empty) + delete props[key]; + + var edited = !props.empty; + return (edited ? "#" : "") + obj.name + " object " + obj.body + ", layer " + obj.draw_layer + ", phys " + obj.layer; + }; + + obj.fullpath = function() { + return `${obj.level.fullpath()}.${obj.name}`; + }; + obj.deflock('toString'); + obj.defc('from', this.name); + obj.defn('body', make_gameobject(this.scale, + this.phys, + this.mass, + this.friction, + this.elasticity) ); + complete_assign(obj, props); + obj.sync(); + obj.defn('components', {}); + + Log.warn(`Made an object with ID ${obj.body}`); + + cmd(113, obj.body, obj); + + complete_assign(obj, { + set scale(x) { + Log.warn(obj.body); cmd(36, obj.body, x); }, + get scale() { return cmd(103, obj.body); }, + get flipx() { return cmd(104,obj.body); }, + set flipx(x) { cmd(55, obj.body, x); }, + get flipy() { return cmd(105,obj.body); }, + set flipy(x) { cmd(56, obj.body, x); }, + + get angle() { return Math.rad2deg(q_body(2,obj.body))%360; }, + set angle(x) { set_body(0,obj.body, Math.deg2rad(x)); }, + + set pos(x) { set_body(2,obj.body,x); }, + get pos() { return q_body(1,obj.body); }, + + get elasticity() { return cmd(107,obj.body); }, + set elasticity(x) { cmd(106,obj.body,x); }, + + get friction() { return cmd(109,obj.body); }, + set friction(x) { cmd(108,obj.body,x); }, + + set mass(x) { set_body(7,obj.body,x); }, + get mass() { return q_body(5, obj.body); }, + + set phys(x) { set_body(1, obj.body, x); }, + get phys() { return q_body(0,obj.body); }, + }); + + for (var prop in obj) { + if (typeof obj[prop] === 'object' && 'make' in obj[prop]) { + if (prop === 'flipper') return; + obj[prop] = obj[prop].make(obj.body); + obj[prop].defn('gameobject', obj); + obj.components[prop] = obj[prop]; + } + }; + + obj.check_registers(obj); + + if ('begin' in obj) obj.begin(); + + return obj; + }, + + register_hit(fn, obj) { + if (!obj) + obj = this; + + Signal.obj_begin(fn, obj, this); + }, + + register_separate(fn, obj) { + if (!obj) + obj = this; + + Signal.obj_separate(fn,obj,this); + }, +} + + +var locks = ['height', 'width', 'visible', 'body', 'controlled', 'selectable', 'save', 'velocity', 'angularvelocity', 'alive', 'boundingbox', 'name', 'scale', 'angle', 'properties', 'moi', 'relpos', 'relangle', 'up', 'down', 'right', 'left', 'bodytype', 'gizmo', 'pos']; +locks.forEach(x => gameobject.obscure(x)); +/* Load configs */ +function load_configs(file) { + var configs = JSON.parse(IO.slurp(file)); + for (var key in configs) { + Object.assign(globalThis[key], configs[key]); + } + + Collision.sync(); + Game.objects.forEach(function(x) { x.sync(); }); + + if (!local_conf.mouse) { + Log.info("disabling mouse features"); + Mouse.disabled = function() {}; + Mouse.hidden = function() {}; + }; +}; + +var local_conf = { + mouse: true, +}; + +/* Save configs */ +function save_configs() { + Log.info("saving configs"); + var configs = {}; + configs.editor_config = editor_config; + configs.Nuke = Nuke; + configs.local_conf = local_conf; + IO.slurpwrite(JSON.stringify(configs, null, 1), "editor.config"); + + save_game_configs(); +}; + +function save_game_configs() { + var configs = {}; + configs.physics = physics; + configs.Collision = Collision; + Log.info(configs); + IO.slurpwrite(JSON.stringify(configs,null,1), "game.config"); + + Collision.sync(); + Game.objects.forEach(function(x) { x.sync(); }); +}; + +var Collision = { + types: {}, + num: 10, + set_collide(a, b, x) { + this.types[a][b] = x; + this.types[b][a] = x; + }, + sync() { + for (var i = 0; i < this.num; i++) + cmd(76,i,this.types[i]); + }, + types_nuke() { + Nuke.newline(this.num+1); + Nuke.label(""); + for (var i = 0; i < this.num; i++) Nuke.label(i); + + for (var i = 0; i < this.num; i++) { + Nuke.label(i); + for (var j = 0; j < this.num; j++) { + if (j < i) + Nuke.label(""); + else { + this.types[i][j] = Nuke.checkbox(this.types[i][j]); + this.types[j][i] = this.types[i][j]; + } + } + } + }, +}; + +for (var i = 0; i < Collision.num; i++) { + Collision.types[i] = []; + for (var j = 0; j < Collision.num; j++) + Collision.types[i][j] = false; +}; + +if (IO.exists("game.config")) + load_configs("game.config"); + +var camera2d = gameobject.clone("camera2d", { + phys: gameobject.bodytype.kinematic, + speed: 300, + + get zoom() { return this._zoom; }, + set zoom(x) { + if (x <= 0) return; + this._zoom = x; + cmd(62, this._zoom); + }, + _zoom: 1.0, + speedmult: 1.0, + + selectable: false, + + view2world(pos) { + return pos.mapc(mult, [1,-1]).add([-Window.width,Window.height].scale(0.5)).scale(this.zoom).add(this.pos); + }, + + world2view(pos) { + return pos.sub(this.pos).scale(1/this.zoom).add(Window.dimensions.scale(0.5)); + }, +}); + +Yugine.camera = World.spawn(camera2d); +cmd(61, Yugine.camera.id); + +win_make(Game.title, Game.resolution[0], Game.resolution[1]); +//win_icon("icon.png"); + +/* Default objects */ +gameobject.clone("polygon2d", { + polygon2d: polygon2d.clone(), +}); + +gameobject.clone("edge2d", { + edge2d: bucket.clone(), +}); + +gameobject.clone("sprite", { + sprite: sprite.clone(), +}); + + +if (IO.exists("config.js")) + load("config.js"); + +var prototypes = {}; +if (IO.exists("proto.json")) + prototypes = JSON.parse(slurp("proto.json")); + +for (var key in prototypes) { + if (key in gameobjects) + dainty_assign(gameobjects[key], prototypes[key]); + else { + /* Create this gameobject fresh */ + Log.info("Making new prototype: " + key + " from " + prototypes[key].from); + var newproto = gameobjects[prototypes[key].from].clone(key); + gameobjects[key] = newproto; + + for (var pkey in newproto) + if (typeof newproto[pkey] === 'object' && newproto[pkey] && 'clone' in newproto[pkey]) + newproto[pkey] = newproto[pkey].clone(); + + dainty_assign(gameobjects[key], prototypes[key]); + } +} + +function save_gameobjects_as_prototypes() { slurpwrite(JSON.stringify(gameobjects,null,2), "proto.json"); }; + +var Gamestate = {}; diff --git a/source/scripts/engine.rb b/source/scripts/engine.rb deleted file mode 100644 index e88bf55..0000000 --- a/source/scripts/engine.rb +++ /dev/null @@ -1,62 +0,0 @@ -class Method - def source(n=5) - loc = source_location - puts `sed -n "#{loc[1]},#{loc[1]+n}p;#{loc[1]+6}q" #{loc[0]}` - end -end - -class Music - - def initialize(mpath = "") - load(mpath); - end - - - def load(mpath) - #@music = load(path); - end - - def play - - end -end - -class Sound - def initialize(path = "") - load(path); - end - - def load(path) - #@sound = - end - - def play - - end -end - -def checknewer - $maketimes ||= {} - file = caller[0].split(":")[0] - if $maketimes[file].nil? - $maketimes[file] = `stat --printf '%Y' #{file}` - return - end - - newtime = `stat --printf '%Y' #{file}` - if newtime > $maketimes[file] - load(file) - end -end - -def set_renderms(val) - settings_cmd(0, val); -end - -def set_updatems(val) - settings_cmd(1, val); -end - -def set_physms(val) - settings_cmd(2, val); -end \ No newline at end of file diff --git a/source/scripts/nogame.js b/source/scripts/nogame.js new file mode 100644 index 0000000..2c7cd21 --- /dev/null +++ b/source/scripts/nogame.js @@ -0,0 +1,14 @@ +function nogamegui() +{ + GUI.column({ + items: [ + GUI.text_fn("NO GAME LOADED", {font_size: 6}), + GUI.text_fn("No game.js available.") + ], + anchor: [0.5,0.5], + + }).draw(Window.dimensions.scale(0.5)); +} + +register_gui(nogamegui); + diff --git a/source/scripts/play.js b/source/scripts/play.js new file mode 100644 index 0000000..79db02d --- /dev/null +++ b/source/scripts/play.js @@ -0,0 +1,7 @@ +sim_start(); + + +if (!IO.exists("game.js")) + load("scripts/nogame.js"); +else + load("game.js"); diff --git a/source/shaders/3d/shadowfrag.glsl b/source/shaders/3d/shadowfrag.glsl deleted file mode 100644 index 46b038f..0000000 --- a/source/shaders/3d/shadowfrag.glsl +++ /dev/null @@ -1,6 +0,0 @@ -#version 330 core - -void main() -{ - // gl_FragDepth = gl_FragCoord.z; -} \ No newline at end of file diff --git a/source/shaders/animspritefrag.glsl b/source/shaders/animspritefrag.glsl index d985be1..4727ab8 100644 --- a/source/shaders/animspritefrag.glsl +++ b/source/shaders/animspritefrag.glsl @@ -1,4 +1,4 @@ -#version 330 core +#version 330 in vec2 TexCoords; out vec4 color; @@ -7,7 +7,7 @@ uniform float frame; uniform vec3 spriteColor; void main() -{ +{ color = vec4(spriteColor, 1.f) * texture(image, vec3(TexCoords,frame)); if (color.a < 0.1) discard; diff --git a/source/shaders/circlefrag.glsl b/source/shaders/circlefrag.glsl index 39d38bb..5eb2dad 100644 --- a/source/shaders/circlefrag.glsl +++ b/source/shaders/circlefrag.glsl @@ -3,22 +3,36 @@ in vec2 coords; out vec4 color; -uniform float radius; -uniform int thickness; + +in float radius; +in vec4 fcolor; +in vec2 pos; + +in float segsize; +in float fill; + +#define PI 3.14 void main() { - // int tt = thickness + 1; - float R1 = 1.f; - float R2 = 1.f - (thickness / radius); - float dist = sqrt(dot(coords, coords)); - if (dist <= R2 || dist >= R1) - discard; -/* - float smoother = 0.01f - (radius * 0.00003f); - float sm = smoothstep(R1, R1-smoother, dist); - float sm2 = smoothstep(R2, R2+smoother, dist); - float alpha = sm*sm2; -*/ - color = vec4(0.4f, 0.5f, 0.6f, 1.f); -} \ No newline at end of file + float px = 1/radius; + float R1 = 1.f; + float R2 = 1.0 - fill; + float dist = sqrt(pow(coords.x,2) + pow(coords.y,2)); + color = fcolor; + +// if (dist < R2 || dist > R1) +// discard; + + float sm = 1 - smoothstep(R1-px,R1,dist); + float sm2 = smoothstep(R2-px,R2,dist); + float a = sm*sm2; + color = mix(vec4(0,0,0,0), fcolor, a); + if (segsize<0) + return; + + float f = atan(coords.y, coords.x) + PI; + + if (mod(f, segsize) < segsize/2) + discard; +} diff --git a/source/shaders/circlevert.glsl b/source/shaders/circlevert.glsl index ffba2ab..32cb4a2 100644 --- a/source/shaders/circlevert.glsl +++ b/source/shaders/circlevert.glsl @@ -1,15 +1,27 @@ #version 330 core -layout (location = 0) in vec4 vertex; +layout (location = 0) in vec2 vertex; +layout (location = 1) in vec2 apos; +layout (location = 2) in float aradius; +layout (location = 3) in vec4 acolor; +layout (location = 4) in float asegsize; +layout (location = 5) in float afill; + out vec2 coords; -layout (std140) uniform Projection -{ - mat4 projection; -}; +out vec4 fcolor; + +out float segsize; +out float fill; +out float radius; + +uniform mat4 proj; void main() { - coords = vertex.zw; - - gl_Position = projection * vec4(vertex.xy, 0.0, 1.0); -} \ No newline at end of file + gl_Position = proj * vec4((vertex * aradius) + apos, 0.0, 1.0); + coords = vertex; + fcolor = acolor; + segsize = asegsize; + fill = afill; + radius = aradius; +} diff --git a/source/shaders/crtfrag.glsl b/source/shaders/crtfrag.glsl new file mode 100644 index 0000000..9d2a032 --- /dev/null +++ b/source/shaders/crtfrag.glsl @@ -0,0 +1,29 @@ +#version 330 core +in vec2 TexCoords; + +out vec4 frag_color; + +uniform sampler2D diffuse_texture; + +void main() +{ + frag_color = texture(diffuse_texture, TexCoords); + return; + vec2 screensize = textureSize(diffuse_texture,0); + + vec4 color = texture(diffuse_texture, TexCoords); + float avg = 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b; + frag_color = vec4(avg,avg,avg,1.0); + float lc = screensize.y/2.0; + float line = TexCoords.y * lc; + float line_intensity = mod(float(line),2); + + float off = line_intensity * 0.0005; + vec4 shift = vec4(off,0,0,0); + vec4 color_shift = vec4(0.001,0,0,0); + float r = color.r + color_shift.r + shift.r; + float g = color.g - color_shift.g + shift.g; + float b = color.b; + + frag_color = vec4(r, g*0.99, b, 1.0) * clamp(line_intensity, 0.85, 1.0); +} diff --git a/source/shaders/diffuse_f.glsl b/source/shaders/diffuse_f.glsl new file mode 100644 index 0000000..016a296 --- /dev/null +++ b/source/shaders/diffuse_f.glsl @@ -0,0 +1,104 @@ +#version 330 core +in vec2 tex_coords; +in vec3 normal; +in vec3 frag_pos; +in vec4 frag_pos_light; + +out vec4 frag_color; + +uniform sampler2D diffuse; +uniform sampler2D normmap; +uniform sampler2D shadow_map; + +uniform vec3 point_pos; +uniform vec3 dir_dir; +uniform vec3 view_pos; +uniform vec3 spot_pos; +uniform vec3 spot_dir; + +/* Ambient light */ +float amb_str = 0.3; + +vec3 amb_color = vec3(1,1,1); + +float spec_str = 0.5; + +/* point */ +float constant = 1; +float linear = 0.09; +float quad = 0.032; + +/* spotlight */ +float cutoff = 12.5; /* cutoff in radians */ +float outer_cutoff = 17.5; + +vec3 norm = vec3(0,0,0); +vec3 view = vec3(0,0,0); + +float light_str(vec3 dir) +{ + float d = max(dot(norm, dir), 0.0); + vec3 refl = reflect(-dir, norm); + float s = pow(max(dot(view,refl), 0.0), 32); + + return s+d; +} + +float shadow_calc(vec4 fg) +{ + vec3 pc = fg.xyz / fg.w; + pc = pc * 0.5 + 0.5; + + if (pc.z > 1.0) + return 0.0; + + float closest_depth = texture(shadow_map, pc.xy).r; + float cur_depth = pc.z; + + vec3 light_dir = normalize(vec3(4,100,20) - frag_pos); /* light pos */ + float bias = max(0.05 * (1 - dot(norm, light_dir)), 0.005); + + return cur_depth - bias > closest_depth ? 1.0 : 0.0; + + float s; + vec2 texel_size = 1 / textureSize(shadow_map, 0); + + for (int x = -1; x <= 1; ++x) { + for (int y = -1; y <= 1; ++y) { + float pcf_depth = texture(shadow_map, pc.xy + vec2(x,y) * texel_size).r; + s += cur_depth - bias > pcf_depth ? 1.0 : 0.0; + } + } + + s /= 9.0; + + return s; +} + +void main() { + norm = normalize(normal); + view = normalize(view_pos - frag_pos); + + float point_amt = light_str(normalize(point_pos-frag_pos)); + float dist = length(point_pos - frag_pos); + float atten = 1.0 / (constant + linear * dist + quad * (dist*dist)); + point_amt *= atten; + + float dir_amt = light_str(normalize(-dir_dir)); + + vec3 spot_dir = normalize(spot_pos - frag_pos); + float theta = dot(spot_dir, normalize(-spot_dir)); + float spot_amt = 0; + + float epsilon = cutoff - outer_cutoff; + + if (theta > cutoff) { + float intensity = clamp((theta - outer_cutoff)/epsilon,0.0,1.0); + spot_amt = light_str(spot_dir) * intensity; + } + + vec4 mm = texture(diffuse,tex_coords); + float shadow = shadow_calc(frag_pos_light); + vec3 res = mm.rgb * (amb_str + (point_amt + dir_amt) * (1 - shadow)); + frag_color = vec4(res, mm.a); +} diff --git a/source/shaders/diffuse_v.glsl b/source/shaders/diffuse_v.glsl new file mode 100644 index 0000000..2252897 --- /dev/null +++ b/source/shaders/diffuse_v.glsl @@ -0,0 +1,23 @@ +#version 330 core +layout (location=0) in vec3 a_pos; +layout (location=1) in vec2 a_tex_coords; +layout (location=2) in vec3 a_norm; + +out vec2 tex_coords; +out vec3 normal; +out vec3 frag_pos; +out vec4 frag_pos_light; + + +uniform mat4 vp; +uniform mat4 model; +uniform mat4 proj; +uniform mat4 lsm; + +void main() { + frag_pos = vec3(model * vec4(a_pos, 1.0)); + gl_Position = proj * vp * vec4(frag_pos, 1.0); + tex_coords = a_tex_coords; + normal = mat3(transpose(inverse(model))) * a_norm; + frag_pos_light = lsm * vec4(frag_pos, 1.0); +} diff --git a/source/shaders/gridfrag.glsl b/source/shaders/gridfrag.glsl index c5a4ae3..339d788 100644 --- a/source/shaders/gridfrag.glsl +++ b/source/shaders/gridfrag.glsl @@ -1,19 +1,28 @@ #version 330 -out vec4 color; +out vec4 frag_color; in vec2 apos; -vec2 bpos; -uniform int thickness; -uniform int span; + +uniform float thickness; /* thickness in pixels */ +uniform float span; +uniform vec4 color; void main(void) { - float t = thickness / 2.f; - bpos.x = mod(apos.x, span); - bpos.y = mod(apos.y, span); + float t = thickness / span; + t /= 2.0; + vec2 bpos; + bpos.x = mod(apos.x, span) / span; + bpos.y = mod(apos.y, span) / span; + bpos.x -= t; + bpos.y -= t; - if (!(bpos.x <= t || bpos.x >= (span - t) || bpos.y <= t || bpos.y >= (span - t))) - discard; + float comp = min(bpos.x, bpos.y); - color = vec4(0.4f, 0.7f, 0.2f, 0.3f); -} \ No newline at end of file + if (comp > t) + discard; + + comp += t; + + frag_color = color; +} diff --git a/source/shaders/gridvert.glsl b/source/shaders/gridvert.glsl index 92ec666..7b16a03 100644 --- a/source/shaders/gridvert.glsl +++ b/source/shaders/gridvert.glsl @@ -1,16 +1,20 @@ #version 330 layout (location = 0) in vec2 pos; + out vec2 apos; layout (std140) uniform Projection { mat4 projection; }; +uniform vec2 offset; + void main() { - mat4 iproj = inverse(projection); - vec4 ipos = iproj * vec4(pos, 0.f, 1.f); - apos = ipos.xy; +// vec4 ipos = inverse(projection) * vec4(pos, 0.f, 1.f); + apos = pos * vec2(600, 360); +// apos = pos + offset; + gl_Position = vec4(pos, 0.f, 1.f); -} \ No newline at end of file +} diff --git a/source/shaders/linefrag.glsl b/source/shaders/linefrag.glsl index db2d545..e65ede7 100644 --- a/source/shaders/linefrag.glsl +++ b/source/shaders/linefrag.glsl @@ -1,7 +1,36 @@ #version 330 out vec4 color; +in float dist; +in vec4 fcolor; +in float seg_speed; + +in float seg_len; +float pat = 0.5; + +int pp = 0x0C24; + +uniform float time; + void main() { - color = vec4(0.2f, 0.1f, 0.8f, 1.f); -} \ No newline at end of file + color = fcolor; + if (seg_len == 0) return; + + if (mod(dist+(time*seg_speed)*seg_len,seg_len)/seg_len < 0.5) + discard; +/* + int d = int(dist); + + if (pp * mod((d / 20), 16) == 0) + discard; + +*/ +/* + + float patrn = 16 * mod(dist,seg_len)/seg_len; + + if (patrn < 8) + discard; + */ +} diff --git a/source/shaders/linevert.glsl b/source/shaders/linevert.glsl index 3053b40..bd41c50 100644 --- a/source/shaders/linevert.glsl +++ b/source/shaders/linevert.glsl @@ -1,11 +1,22 @@ #version 330 -layout (location = 0) in vec2 pos; +layout (location = 0) in vec2 apos; +layout (location = 1) in float adist; +layout (location = 2) in vec4 acolor; +layout (location = 3) in float aseglen; +layout (location = 4) in float asegspeed; -layout (std140) uniform Projection { - mat4 projection; -}; +out float dist; +out vec4 fcolor; +out float seg_len; +out float seg_speed; + +uniform mat4 proj; void main() { - gl_Position = projection * vec4(pos, 0.f, 1.f); -} \ No newline at end of file + gl_Position = proj * vec4(apos, 0.f, 1.f); + fcolor = acolor; + dist = adist; + seg_len = aseglen; + seg_speed = asegspeed; +} diff --git a/source/shaders/point_f.glsl b/source/shaders/point_f.glsl new file mode 100644 index 0000000..5c6cfb7 --- /dev/null +++ b/source/shaders/point_f.glsl @@ -0,0 +1,13 @@ +#version 330 core +in vec4 fcolor; + +out vec4 color; + +void main() +{ + float d = length(gl_PointCoord - vec2(0.5,0.5)); + if (d >= 0.47) + discard; + + color = fcolor; +} diff --git a/source/shaders/point_v.glsl b/source/shaders/point_v.glsl new file mode 100644 index 0000000..9cbf9fe --- /dev/null +++ b/source/shaders/point_v.glsl @@ -0,0 +1,16 @@ +#version 330 core + +layout (location = 0) in vec2 apos; +layout (location = 1) in vec4 acolor; +layout (location = 2) in float radius; + +uniform mat4 proj; + +out vec4 fcolor; + +void main() +{ + gl_Position = proj * vec4(apos, 0.0, 1.0); + fcolor = acolor; + gl_PointSize = radius; +} diff --git a/source/shaders/poly_f.glsl b/source/shaders/poly_f.glsl new file mode 100644 index 0000000..78f486d --- /dev/null +++ b/source/shaders/poly_f.glsl @@ -0,0 +1,10 @@ +#version 330 core + +out vec4 fcolor; +in vec4 color; +in vec2 uv; + +void main() +{ + fcolor = color; +} diff --git a/source/shaders/poly_v.glsl b/source/shaders/poly_v.glsl new file mode 100644 index 0000000..6ae212f --- /dev/null +++ b/source/shaders/poly_v.glsl @@ -0,0 +1,16 @@ +#version 330 core +in vec2 apos; +in vec2 auv; +in vec4 acolor; + +out vec4 color; +out vec2 uv; + +uniform mat4 proj; + +void main() +{ + gl_Position = proj * vec4(apos, 0.0, 1.0); + color = acolor; + uv = auv; +} diff --git a/source/shaders/shadowfrag.glsl b/source/shaders/shadowfrag.glsl new file mode 100644 index 0000000..b0d8218 --- /dev/null +++ b/source/shaders/shadowfrag.glsl @@ -0,0 +1,8 @@ +#version 330 core +out float frag_color; + +void main() +{ +// frag_color = encode_depth(gl_FragCoord.z); + frag_color = gl_FragCoord.z; +} diff --git a/source/shaders/3d/shadowvert.glsl b/source/shaders/shadowvert.glsl similarity index 100% rename from source/shaders/3d/shadowvert.glsl rename to source/shaders/shadowvert.glsl diff --git a/source/shaders/slice9_f.glsl b/source/shaders/slice9_f.glsl new file mode 100644 index 0000000..d95da96 --- /dev/null +++ b/source/shaders/slice9_f.glsl @@ -0,0 +1,37 @@ +#version 330 + +in vec2 uv; /* image uv */ +in vec4 border; /* uv length of border, normalized to image dimensions; left, bottom, right, top */ +in vec2 scale; /* polygon dimensions ~ texture dimensions */ +in vec4 fcolor; + +out vec4 color; + +uniform sampler2D image; + +float map(float value, float min1, float max1, float min2, float max2) +{ + return min2 + (value - min1) * (max2 - min2) / (max1 - min1); +} + +float processAxis(float coord, float texBorder, float winBorder) +{ + if (coord < winBorder) + return map(coord, 0, winBorder, 0, texBorder); + if (coord < 1 - winBorder) + return map(coord, winBorder, 1 - winBorder, texBorder, 1 - texBorder); + + return map(coord, 1 - winBorder, 1, 1 - texBorder, 1); +} + +vec2 uv9slice(vec2 uv, vec2 s, vec4 b) +{ + vec2 t = clamp((s * uv - b.xy) / (s - b.xy - b.zw), 0.0, 1.0); + return mix(uv * s, 1.0 - s * (1.0 - uv), t); +} + +void main() +{ + vec2 nuv = uv9slice(uv, scale, border); + color = fcolor * texture(image, uv); +} diff --git a/source/shaders/slice9_v.glsl b/source/shaders/slice9_v.glsl new file mode 100644 index 0000000..6215586 --- /dev/null +++ b/source/shaders/slice9_v.glsl @@ -0,0 +1,26 @@ +#version 330 core + + + +layout (location = 0) in vec2 vert; +layout (location = 1) in vec2 vuv; +layout (location = 2) in vec4 vborder; +layout (location = 3) in vec2 vscale; +layout (location = 4) in vec4 vcolor; + +out vec2 uv; +out vec4 border; +out vec2 scale; +out vec4 fcolor; + +uniform mat4 projection; + +void main() +{ + gl_Position = projection * vec4(vert, 0.0, 1.0); + + uv = vuv; + border = vborder; + scale = vscale; + fcolor = vcolor; +} diff --git a/source/shaders/spritefrag.glsl b/source/shaders/spritefrag.glsl index 8215e64..0889d8e 100644 --- a/source/shaders/spritefrag.glsl +++ b/source/shaders/spritefrag.glsl @@ -1,14 +1,15 @@ #version 330 core in vec2 texcoords; +in vec4 fcolor; + out vec4 color; uniform sampler2D image; -uniform vec3 spriteColor; void main() { - color = vec4(spriteColor, 1.f) * texture(image, texcoords); + color = fcolor * texture(image, texcoords); if (color.a <= 0.1f) discard; -} \ No newline at end of file +} diff --git a/source/shaders/spritevert.glsl b/source/shaders/spritevert.glsl index ad9714b..9c26de9 100644 --- a/source/shaders/spritevert.glsl +++ b/source/shaders/spritevert.glsl @@ -1,16 +1,16 @@ #version 330 core layout (location = 0) in vec2 vertex; +layout (location = 1) in vec2 uv; +layout (location = 2) in vec4 vColor; + out vec2 texcoords; +out vec4 fcolor; -layout (std140) uniform Projection -{ - mat4 projection; -}; - -uniform mat4 model; +uniform mat4 proj; void main() { - texcoords = vertex.xy; - gl_Position = projection * model * vec4(vertex.xy, 0.0, 1.0); -} \ No newline at end of file + fcolor = vColor; + texcoords = uv; + gl_Position = proj * vec4(vertex, 0.0, 1.0); +} diff --git a/source/shaders/spritewireframefrag.glsl b/source/shaders/spritewireframefrag.glsl new file mode 100644 index 0000000..39998ba --- /dev/null +++ b/source/shaders/spritewireframefrag.glsl @@ -0,0 +1,12 @@ +#version 330 core +in vec2 texcoords; +out vec4 color; + +uniform sampler2D image; +uniform vec3 spriteColor; + +void main() +{ + color = vec4(spriteColor, 1.f) * texture(image, texcoords); + color.a = 1.f; +} diff --git a/source/shaders/textfrag.glsl b/source/shaders/textfrag.glsl index bbd0c17..ea3771e 100644 --- a/source/shaders/textfrag.glsl +++ b/source/shaders/textfrag.glsl @@ -1,12 +1,47 @@ #version 330 core in vec2 TexCoords; +in vec4 fColor; +in vec2 fst; + out vec4 color; uniform sampler2D text; -uniform vec3 textColor; + +float osize = 1.0; void main() -{ - vec4 sampled = vec4(1.0, 1.0, 1.0, texture(text, TexCoords).r); - color = vec4(textColor, 1.0) * sampled; -} \ No newline at end of file +{ + float lettera = texture(text,TexCoords).r; + + if (lettera <= 0.1f) +{ + vec2 uvpos = TexCoords - fst; + for (int x = 0; x < 3; x++) { + for (int y = 0; y < 3; y++) { + float pa = texture(text, uvpos + (fst*vec2(x,y))).r; + if (pa > 0.1) { + color = vec4(0.0,0.0,0.0, fColor.a); + return; + } + } + } + + discard; + } + +// vec2 lsize = fst / textureSize(text,0).xy; +/* vec2 uvpos = TexCoords - fst; + for (int x = 0; x < 3; x++) { + for (int y = 0; 0 < 3; y++) { + float pa = texture(text, uvpos + (fst * vec2(x,y))).r; + + if (pa <= 0.1) { + color = vec4(0.0,0.0,0.0,fColor.a); + return; + } + } + } +*/ + + color = vec4(fColor.xyz, fColor.a); +} diff --git a/source/shaders/textvert.glsl b/source/shaders/textvert.glsl index 9bf445a..558fbea 100644 --- a/source/shaders/textvert.glsl +++ b/source/shaders/textvert.glsl @@ -1,11 +1,23 @@ #version 330 core -layout (location = 0) in vec4 vertex; // +layout (location = 0) in vec2 vert; +layout (location = 1) in vec2 pos; +layout (location = 2) in vec2 wh; +layout (location = 3) in vec2 uv; +layout (location = 4) in vec2 st; +layout (location = 5) in vec4 vColor; + out vec2 TexCoords; +out vec4 fColor; +out vec2 fst; uniform mat4 projection; void main() { - gl_Position = projection * vec4(vertex.xy, 0.0, 1.0); - TexCoords = vec2(vertex.z, 1.0 - vertex.w); -} \ No newline at end of file + gl_Position = projection * vec4(pos + (vert * wh), 0.0, 1.0); + + TexCoords = uv + vec2(vert.x*st.x, st.y - vert.y*st.y); + fst = st / wh; + + fColor = vColor; +}